summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--db/LICENSE25
-rw-r--r--db/README8
-rw-r--r--db/btree/bt_compact.c173
-rw-r--r--db/btree/bt_compare.c5
-rw-r--r--db/btree/bt_conv.c5
-rw-r--r--db/btree/bt_curadj.c11
-rw-r--r--db/btree/bt_cursor.c273
-rw-r--r--db/btree/bt_delete.c37
-rw-r--r--db/btree/bt_method.c5
-rw-r--r--db/btree/bt_open.c35
-rw-r--r--db/btree/bt_put.c21
-rw-r--r--db/btree/bt_rec.c187
-rw-r--r--db/btree/bt_reclaim.c7
-rw-r--r--db/btree/bt_recno.c53
-rw-r--r--db/btree/bt_rsearch.c20
-rw-r--r--db/btree/bt_search.c47
-rw-r--r--db/btree/bt_split.c245
-rw-r--r--db/btree/bt_stat.c32
-rw-r--r--db/btree/bt_upgrade.c5
-rw-r--r--db/btree/bt_verify.c14
-rw-r--r--db/btree/btree.src9
-rw-r--r--db/btree/btree_auto.c96
-rw-r--r--db/btree/btree_autop.c2
-rw-r--r--db/build_brew/bdb_brew.dsp625
-rw-r--r--db/build_brew/bdb_brew.dsw29
-rw-r--r--db/build_brew/bdbread.mak587
-rw-r--r--db/build_brew/brew_db.h150
-rw-r--r--db/build_brew/clib_port.h203
-rw-r--r--db/build_brew/db.h2663
-rw-r--r--db/build_brew/db_config.h549
-rw-r--r--db/build_brew/db_int.h775
-rw-r--r--db/build_brew/errno.h188
-rw-r--r--db/build_s60/bdb_s60.mmp183
-rw-r--r--db/build_s60/clib_port.h203
-rw-r--r--db/build_s60/db.h2646
-rw-r--r--db/build_s60/db_config.h548
-rw-r--r--db/build_s60/db_int.h774
-rw-r--r--db/build_vxworks/BerkeleyDB/Makefile.component2060
-rwxr-xr-xdb/build_vxworks/BerkeleyDB20.wpj183
-rwxr-xr-xdb/build_vxworks/BerkeleyDB20small.wpj145
-rwxr-xr-xdb/build_vxworks/BerkeleyDB22.wpj183
-rwxr-xr-xdb/build_vxworks/BerkeleyDB22small.wpj145
-rw-r--r--db/build_vxworks/clib_port.h108
-rw-r--r--db/build_vxworks/db.h557
-rw-r--r--db/build_vxworks/db_archive/db_archive.c9
-rw-r--r--db/build_vxworks/db_archive/db_archive/Makefile.component433
-rw-r--r--db/build_vxworks/db_checkpoint/db_checkpoint.c9
-rw-r--r--db/build_vxworks/db_checkpoint/db_checkpoint/Makefile.component433
-rw-r--r--db/build_vxworks/db_config.h115
-rw-r--r--db/build_vxworks/db_config_small.h115
-rw-r--r--db/build_vxworks/db_deadlock/db_deadlock.c16
-rw-r--r--db/build_vxworks/db_deadlock/db_deadlock/Makefile.component433
-rw-r--r--db/build_vxworks/db_dump/db_dump.c77
-rw-r--r--db/build_vxworks/db_dump/db_dump/Makefile.component433
-rw-r--r--db/build_vxworks/db_hotbackup/db_hotbackup.c337
-rw-r--r--db/build_vxworks/db_int.h108
-rw-r--r--db/build_vxworks/db_load/db_load.c42
-rw-r--r--db/build_vxworks/db_load/db_load/Makefile.component433
-rw-r--r--db/build_vxworks/db_printlog/db_printlog.c17
-rw-r--r--db/build_vxworks/db_printlog/db_printlog/Makefile.component433
-rw-r--r--db/build_vxworks/db_recover/db_recover.c47
-rw-r--r--db/build_vxworks/db_recover/db_recover/Makefile.component433
-rw-r--r--db/build_vxworks/db_stat/db_stat.c22
-rw-r--r--db/build_vxworks/db_stat/db_stat/Makefile.component433
-rw-r--r--db/build_vxworks/db_upgrade/db_upgrade.c9
-rw-r--r--db/build_vxworks/db_upgrade/db_upgrade/Makefile.component433
-rw-r--r--db/build_vxworks/db_verify/db_verify.c9
-rw-r--r--db/build_vxworks/db_verify/db_verify/Makefile.component433
-rw-r--r--db/build_vxworks/dbdemo/dbdemo.c11
-rwxr-xr-xdb/build_vxworks/demo/DBdemo.wpj162
-rw-r--r--db/build_vxworks/demo/README30
-rw-r--r--db/build_vxworks/demo/dbdemo.c130
-rw-r--r--db/build_vxworks/demo/demo/Makefile.component433
-rw-r--r--db/build_vxworks/demo/demo/Makefile.custom51
-rw-r--r--db/build_vxworks/demo/demo/component.cdf30
-rw-r--r--db/build_vxworks/demo/demo/component.wpj607
-rw-r--r--db/build_vxworks/ex_access/ex_access.wpj244
-rw-r--r--db/build_vxworks/ex_btrec/ex_btrec.wpj250
-rw-r--r--db/build_vxworks/ex_dbclient/ex_dbclient.wpj266
-rw-r--r--db/build_vxworks/ex_env/ex_env.wpj248
-rw-r--r--db/build_vxworks/ex_mpool/ex_mpool.wpj248
-rw-r--r--db/build_vxworks/ex_tpcb/ex_tpcb.wpj261
-rw-r--r--db/build_win32/Berkeley_DB.dsw539
-rw-r--r--db/build_win32/app_dsp.src145
-rw-r--r--db/build_win32/build_all.dsp96
-rw-r--r--db/build_win32/db.h2242
-rw-r--r--db/build_win32/db_archive.dsp148
-rw-r--r--db/build_win32/db_buildall.dsp128
-rw-r--r--db/build_win32/db_checkpoint.dsp148
-rw-r--r--db/build_win32/db_config.h443
-rw-r--r--db/build_win32/db_cxx.h1089
-rw-r--r--db/build_win32/db_deadlock.dsp148
-rw-r--r--db/build_win32/db_dll.dsp880
-rw-r--r--db/build_win32/db_dump.dsp148
-rw-r--r--db/build_win32/db_int.h592
-rw-r--r--db/build_win32/db_java.dsp132
-rw-r--r--db/build_win32/db_java_xa.dsp85
-rw-r--r--db/build_win32/db_java_xaj.mak21
-rw-r--r--db/build_win32/db_lib.dsp92
-rw-r--r--db/build_win32/db_load.dsp148
-rw-r--r--db/build_win32/db_perf.dsp224
-rw-r--r--db/build_win32/db_printlog.dsp184
-rw-r--r--db/build_win32/db_recover.dsp148
-rw-r--r--db/build_win32/db_small.dsp720
-rw-r--r--db/build_win32/db_stat.dsp148
-rw-r--r--db/build_win32/db_static.dsp864
-rw-r--r--db/build_win32/db_tcl.dsp148
-rw-r--r--db/build_win32/db_test.dsp100
-rw-r--r--db/build_win32/db_test.src97
-rw-r--r--db/build_win32/db_upgrade.dsp148
-rw-r--r--db/build_win32/db_verify.dsp148
-rw-r--r--db/build_win32/dbkill.cpp131
-rw-r--r--db/build_win32/dynamic_dsp.src93
-rw-r--r--db/build_win32/ex_access.dsp148
-rw-r--r--db/build_win32/ex_btrec.dsp148
-rw-r--r--db/build_win32/ex_env.dsp148
-rw-r--r--db/build_win32/ex_lock.dsp148
-rw-r--r--db/build_win32/ex_mpool.dsp148
-rw-r--r--db/build_win32/ex_repquote.dsp164
-rw-r--r--db/build_win32/ex_repquote.src145
-rw-r--r--db/build_win32/ex_tpcb.dsp148
-rw-r--r--db/build_win32/excxx_access.dsp148
-rw-r--r--db/build_win32/excxx_btrec.dsp148
-rw-r--r--db/build_win32/excxx_env.dsp148
-rw-r--r--db/build_win32/excxx_lock.dsp148
-rw-r--r--db/build_win32/excxx_mpool.dsp148
-rw-r--r--db/build_win32/excxx_tpcb.dsp148
-rw-r--r--db/build_win32/include.tcl20
-rw-r--r--db/build_win32/java_dsp.src129
-rw-r--r--db/build_win32/libdb.def171
-rw-r--r--db/build_win32/libdb.rc33
-rw-r--r--db/build_win32/libdb_tcl.def7
-rw-r--r--db/build_win32/libdbrc.src33
-rw-r--r--db/build_win32/small_dsp.src85
-rw-r--r--db/build_win32/static_dsp.src85
-rw-r--r--db/build_win32/tcl_dsp.src93
-rw-r--r--db/build_win32/win_db.h94
-rw-r--r--db/build_win64/Berkeley_DB.dsw539
-rw-r--r--db/build_win64/app_dsp.src145
-rw-r--r--db/build_win64/build_all.dsp96
-rw-r--r--db/build_win64/db.h2242
-rw-r--r--db/build_win64/db_archive.dsp148
-rw-r--r--db/build_win64/db_checkpoint.dsp148
-rw-r--r--db/build_win64/db_config.h443
-rw-r--r--db/build_win64/db_cxx.h1089
-rw-r--r--db/build_win64/db_deadlock.dsp148
-rw-r--r--db/build_win64/db_dll.dsp880
-rw-r--r--db/build_win64/db_dump.dsp148
-rw-r--r--db/build_win64/db_int.h592
-rw-r--r--db/build_win64/db_java.dsp132
-rw-r--r--db/build_win64/db_lib.dsp92
-rw-r--r--db/build_win64/db_load.dsp148
-rw-r--r--db/build_win64/db_perf.dsp224
-rw-r--r--db/build_win64/db_printlog.dsp184
-rw-r--r--db/build_win64/db_recover.dsp148
-rw-r--r--db/build_win64/db_small.dsp720
-rw-r--r--db/build_win64/db_stat.dsp148
-rw-r--r--db/build_win64/db_static.dsp864
-rw-r--r--db/build_win64/db_tcl.dsp148
-rw-r--r--db/build_win64/db_test.dsp100
-rw-r--r--db/build_win64/db_test.src97
-rw-r--r--db/build_win64/db_upgrade.dsp148
-rw-r--r--db/build_win64/db_verify.dsp148
-rw-r--r--db/build_win64/dynamic_dsp.src93
-rw-r--r--db/build_win64/ex_access.dsp148
-rw-r--r--db/build_win64/ex_btrec.dsp148
-rw-r--r--db/build_win64/ex_env.dsp148
-rw-r--r--db/build_win64/ex_lock.dsp148
-rw-r--r--db/build_win64/ex_mpool.dsp148
-rw-r--r--db/build_win64/ex_repquote.dsp164
-rw-r--r--db/build_win64/ex_repquote.src145
-rw-r--r--db/build_win64/ex_tpcb.dsp148
-rw-r--r--db/build_win64/excxx_access.dsp148
-rw-r--r--db/build_win64/excxx_btrec.dsp148
-rw-r--r--db/build_win64/excxx_env.dsp148
-rw-r--r--db/build_win64/excxx_lock.dsp148
-rw-r--r--db/build_win64/excxx_mpool.dsp148
-rw-r--r--db/build_win64/excxx_tpcb.dsp148
-rw-r--r--db/build_win64/java_dsp.src129
-rw-r--r--db/build_win64/libdbrc.src33
-rw-r--r--db/build_win64/small_dsp.src85
-rw-r--r--db/build_win64/srcfile_dsp.src4
-rw-r--r--db/build_win64/static_dsp.src85
-rw-r--r--db/build_win64/tcl_dsp.src93
-rw-r--r--db/build_win64/win_db.h94
-rw-r--r--db/build_wince/Berkeley_DB.sln61
-rw-r--r--db/build_wince/Berkeley_DB.vcw56
-rw-r--r--db/build_wince/app_vcp.src181
-rw-r--r--db/build_wince/app_vcproj.src433
-rw-r--r--db/build_wince/clib_port.h205
-rw-r--r--db/build_wince/db.h2698
-rw-r--r--db/build_wince/db_config.h561
-rw-r--r--db/build_wince/db_int.h774
-rw-r--r--db/build_wince/db_small.vcp858
-rw-r--r--db/build_wince/db_small.vcproj7442
-rw-r--r--db/build_wince/db_static.vcp970
-rw-r--r--db/build_wince/db_static.vcproj8562
-rw-r--r--db/build_wince/errno.h188
-rw-r--r--db/build_wince/rsrcfile_vcproj.src40
-rw-r--r--db/build_wince/srcfile_vcp.src (renamed from db/build_win32/srcfile_dsp.src)0
-rw-r--r--db/build_wince/srcfile_vcproj.src40
-rw-r--r--db/build_wince/static_vcp.src151
-rw-r--r--db/build_wince/static_vcproj.src363
-rw-r--r--db/build_wince/wce_tpcb.vcp192
-rw-r--r--db/build_wince/wce_tpcb.vcproj552
-rw-r--r--db/build_windows/Berkeley_DB.dsw15
-rw-r--r--db/build_windows/app_dsp.src140
-rw-r--r--db/build_windows/build_all.dsp117
-rw-r--r--db/build_windows/clib_port.h108
-rw-r--r--db/build_windows/db.h577
-rw-r--r--db/build_windows/db_archive.dsp164
-rw-r--r--db/build_windows/db_checkpoint.dsp164
-rw-r--r--db/build_windows/db_codegen.dsp372
-rw-r--r--db/build_windows/db_config.h124
-rw-r--r--db/build_windows/db_cxx.h114
-rw-r--r--db/build_windows/db_deadlock.dsp164
-rw-r--r--db/build_windows/db_dll.dsp219
-rw-r--r--db/build_windows/db_dump.dsp164
-rw-r--r--db/build_windows/db_hotbackup.dsp164
-rw-r--r--db/build_windows/db_int.h105
-rw-r--r--db/build_windows/db_java.dsp247
-rw-r--r--db/build_windows/db_load.dsp164
-rw-r--r--db/build_windows/db_perf.dsp164
-rw-r--r--db/build_windows/db_printlog.dsp164
-rw-r--r--db/build_windows/db_recover.dsp164
-rw-r--r--db/build_windows/db_reptest.dsp164
-rw-r--r--db/build_windows/db_small.dsp200
-rw-r--r--db/build_windows/db_stat.dsp164
-rw-r--r--db/build_windows/db_static.dsp204
-rw-r--r--db/build_windows/db_tcl.dsp183
-rw-r--r--db/build_windows/db_test.dsp184
-rw-r--r--db/build_windows/db_upgrade.dsp164
-rw-r--r--db/build_windows/db_verify.dsp164
-rw-r--r--db/build_windows/dbkill.cpp5
-rw-r--r--db/build_windows/dynamic_dsp.src151
-rw-r--r--db/build_windows/ex_access.dsp164
-rw-r--r--db/build_windows/ex_btrec.dsp164
-rw-r--r--db/build_windows/ex_csvcode.dsp184
-rw-r--r--db/build_windows/ex_csvload.dsp164
-rw-r--r--db/build_windows/ex_csvquery.dsp164
-rw-r--r--db/build_windows/ex_env.dsp164
-rw-r--r--db/build_windows/ex_lock.dsp164
-rw-r--r--db/build_windows/ex_mpool.dsp164
-rw-r--r--db/build_windows/ex_rep_base.dsp164
-rw-r--r--db/build_windows/ex_rep_mgr.dsp164
-rw-r--r--db/build_windows/ex_sequence.dsp164
-rw-r--r--db/build_windows/ex_tpcb.dsp164
-rw-r--r--db/build_windows/ex_txnguide.dsp164
-rw-r--r--db/build_windows/ex_txnguide_inmem.dsp164
-rw-r--r--db/build_windows/example_database_load.dsp164
-rw-r--r--db/build_windows/example_database_read.dsp164
-rw-r--r--db/build_windows/excxx_access.dsp164
-rw-r--r--db/build_windows/excxx_btrec.dsp164
-rw-r--r--db/build_windows/excxx_env.dsp164
-rw-r--r--db/build_windows/excxx_example_database_load.dsp164
-rw-r--r--db/build_windows/excxx_example_database_read.dsp164
-rw-r--r--db/build_windows/excxx_lock.dsp164
-rw-r--r--db/build_windows/excxx_mpool.dsp164
-rw-r--r--db/build_windows/excxx_repquote.dsp164
-rw-r--r--db/build_windows/excxx_sequence.dsp164
-rw-r--r--db/build_windows/excxx_tpcb.dsp164
-rw-r--r--db/build_windows/excxx_txnguide.dsp164
-rw-r--r--db/build_windows/excxx_txnguide_inmem.dsp164
-rw-r--r--db/build_windows/include.tcl2
-rw-r--r--db/build_windows/libdb.def261
-rw-r--r--db/build_windows/libdb.rc20
-rw-r--r--db/build_windows/libdbrc.src6
-rw-r--r--db/build_windows/static_dsp.src128
-rw-r--r--db/build_windows/test_mutex.dsp364
-rw-r--r--db/build_windows/tm.dsp256
-rw-r--r--db/build_windows/win_db.h143
-rw-r--r--db/clib/abort.c29
-rw-r--r--db/clib/ctime.c5
-rw-r--r--db/clib/getaddrinfo.c21
-rw-r--r--db/clib/getcwd.c9
-rw-r--r--db/clib/getopt.c5
-rw-r--r--db/clib/isalpha.c5
-rw-r--r--db/clib/isdigit.c5
-rw-r--r--db/clib/isprint.c5
-rw-r--r--db/clib/isspace.c5
-rw-r--r--db/clib/memcmp.c5
-rw-r--r--db/clib/memmove.c5
-rw-r--r--db/clib/printf.c5
-rw-r--r--db/clib/qsort.c181
-rw-r--r--db/clib/raise.c5
-rw-r--r--db/clib/rand.c8
-rw-r--r--db/clib/snprintf.c7
-rw-r--r--db/clib/strcasecmp.c83
-rw-r--r--db/clib/strerror.c252
-rw-r--r--db/common/crypto_stub.c5
-rw-r--r--db/common/db_byteorder.c5
-rw-r--r--db/common/db_clock.c31
-rw-r--r--db/common/db_err.c155
-rw-r--r--db/common/db_getlong.c5
-rw-r--r--db/common/db_idspace.c5
-rw-r--r--db/common/db_log2.c5
-rw-r--r--db/common/db_shash.c104
-rw-r--r--db/common/mkpath.c5
-rw-r--r--db/common/util_arg.c5
-rw-r--r--db/common/util_cache.c5
-rw-r--r--db/common/util_log.c5
-rw-r--r--db/common/util_sig.c5
-rw-r--r--db/crypto/aes_method.c5
-rw-r--r--db/crypto/crypto.c66
-rw-r--r--db/crypto/crypto.html2
-rw-r--r--db/crypto/mersenne/mt19937db.c13
-rw-r--r--db/cxx/cxx_app.cpp671
-rw-r--r--db/cxx/cxx_db.cpp24
-rw-r--r--db/cxx/cxx_dbc.cpp16
-rw-r--r--db/cxx/cxx_dbt.cpp5
-rw-r--r--db/cxx/cxx_env.cpp27
-rw-r--r--db/cxx/cxx_except.cpp5
-rw-r--r--db/cxx/cxx_lock.cpp5
-rw-r--r--db/cxx/cxx_log.cpp125
-rw-r--r--db/cxx/cxx_logc.cpp24
-rw-r--r--db/cxx/cxx_mpool.cpp14
-rw-r--r--db/cxx/cxx_multi.cpp5
-rw-r--r--db/cxx/cxx_seq.cpp7
-rw-r--r--db/cxx/cxx_table.cpp808
-rw-r--r--db/cxx/cxx_txn.cpp5
-rw-r--r--db/cxx/namemap.txt21
-rw-r--r--db/db/Design.fileop452
-rw-r--r--db/db/crdel.src5
-rw-r--r--db/db/crdel_auto.c32
-rw-r--r--db/db/crdel_rec.c30
-rw-r--r--db/db/db.c480
-rw-r--r--db/db/db.src13
-rw-r--r--db/db/db_am.c166
-rw-r--r--db/db/db_auto.c104
-rw-r--r--db/db/db_cam.c770
-rw-r--r--db/db/db_cds.c16
-rw-r--r--db/db/db_conv.c159
-rw-r--r--db/db/db_dispatch.c87
-rw-r--r--db/db/db_dup.c5
-rw-r--r--db/db/db_iface.c278
-rw-r--r--db/db/db_join.c68
-rw-r--r--db/db/db_meta.c137
-rw-r--r--db/db/db_method.c139
-rw-r--r--db/db/db_open.c38
-rw-r--r--db/db/db_overflow.c173
-rw-r--r--db/db/db_ovfl_vrfy.c10
-rw-r--r--db/db/db_pr.c36
-rw-r--r--db/db/db_rec.c239
-rw-r--r--db/db/db_reclaim.c16
-rw-r--r--db/db/db_remove.c71
-rw-r--r--db/db/db_rename.c56
-rw-r--r--db/db/db_ret.c6
-rw-r--r--db/db/db_setid.c53
-rw-r--r--db/db/db_setlsn.c13
-rw-r--r--db/db/db_stati.c27
-rw-r--r--db/db/db_truncate.c11
-rw-r--r--db/db/db_upg.c159
-rw-r--r--db/db/db_upg_opd.c5
-rw-r--r--db/db/db_vrfy.c162
-rw-r--r--db/db/db_vrfy_stub.c5
-rw-r--r--db/db/db_vrfyutil.c27
-rw-r--r--db/db185/db185.c30
-rw-r--r--db/db185/db185_int.h129
-rw-r--r--db/db185/db185_int.in5
-rw-r--r--db/db_archive/db_archive.c9
-rw-r--r--db/db_checkpoint/db_checkpoint.c9
-rw-r--r--db/db_codegen/code_capi.c626
-rw-r--r--db/db_codegen/code_parse.c338
-rw-r--r--db/db_codegen/db_codegen.c116
-rw-r--r--db/db_codegen/db_codegen.h59
-rw-r--r--db/db_codegen/example116
-rw-r--r--db/db_codegen/example227
-rw-r--r--db/db_codegen/example325
-rw-r--r--db/db_codegen/example426
-rw-r--r--db/db_deadlock/db_deadlock.c16
-rw-r--r--db/db_dump/db_dump.c77
-rw-r--r--db/db_dump185/db_dump185.c9
-rw-r--r--db/db_hotbackup/db_hotbackup.c337
-rw-r--r--db/db_load/db_load.c42
-rw-r--r--db/db_printlog/db_printlog.c17
-rw-r--r--db/db_recover/db_recover.c47
-rw-r--r--db/db_stat/db_stat.c22
-rw-r--r--db/db_upgrade/db_upgrade.c9
-rw-r--r--db/db_verify/db_verify.c9
-rw-r--r--db/dbinc/btree.h5
-rw-r--r--db/dbinc/clock.h108
-rw-r--r--db/dbinc/crypto.h5
-rw-r--r--db/dbinc/cxx_int.h5
-rw-r--r--db/dbinc/db.in561
-rw-r--r--db/dbinc/db_185.in5
-rw-r--r--db/dbinc/db_am.h44
-rw-r--r--db/dbinc/db_cxx.in114
-rw-r--r--db/dbinc/db_dispatch.h6
-rw-r--r--db/dbinc/db_int.in105
-rw-r--r--db/dbinc/db_join.h5
-rw-r--r--db/dbinc/db_page.h16
-rw-r--r--db/dbinc/db_server_int.h5
-rw-r--r--db/dbinc/db_shash.h81
-rw-r--r--db/dbinc/db_swap.h5
-rw-r--r--db/dbinc/db_upgrade.h5
-rw-r--r--db/dbinc/db_verify.h5
-rw-r--r--db/dbinc/debug.h114
-rw-r--r--db/dbinc/fop.h5
-rw-r--r--db/dbinc/globals.h29
-rw-r--r--db/dbinc/hash.h21
-rw-r--r--db/dbinc/hmac.h5
-rw-r--r--db/dbinc/lock.h118
-rw-r--r--db/dbinc/log.h28
-rw-r--r--db/dbinc/mp.h218
-rw-r--r--db/dbinc/mutex.h91
-rw-r--r--db/dbinc/mutex_int.h102
-rw-r--r--db/dbinc/os.h23
-rw-r--r--db/dbinc/qam.h18
-rw-r--r--db/dbinc/region.h42
-rw-r--r--db/dbinc/rep.h317
-rw-r--r--db/dbinc/repmgr.h14
-rw-r--r--db/dbinc/shqueue.h9
-rw-r--r--db/dbinc/tcl_db.h7
-rw-r--r--db/dbinc/txn.h11
-rw-r--r--db/dbinc/win_db.h151
-rw-r--r--db/dbinc/xa.h5
-rw-r--r--db/dbinc_auto/btree_ext.h18
-rw-r--r--db/dbinc_auto/clib_ext.h6
-rw-r--r--db/dbinc_auto/common_ext.h9
-rw-r--r--db/dbinc_auto/crypto_ext.h4
-rw-r--r--db/dbinc_auto/db_ext.h62
-rw-r--r--db/dbinc_auto/dbreg_ext.h11
-rw-r--r--db/dbinc_auto/env_ext.h64
-rw-r--r--db/dbinc_auto/fileops_auto.h1
-rw-r--r--db/dbinc_auto/fileops_ext.h9
-rw-r--r--db/dbinc_auto/hash_ext.h19
-rw-r--r--db/dbinc_auto/int_def.in385
-rw-r--r--db/dbinc_auto/lock_ext.h39
-rw-r--r--db/dbinc_auto/log_ext.h18
-rw-r--r--db/dbinc_auto/mp_ext.h36
-rw-r--r--db/dbinc_auto/mutex_ext.h7
-rw-r--r--db/dbinc_auto/os_ext.h42
-rw-r--r--db/dbinc_auto/qam_ext.h8
-rw-r--r--db/dbinc_auto/rep_ext.h41
-rw-r--r--db/dbinc_auto/repmgr_ext.h44
-rw-r--r--db/dbinc_auto/rpc_client_ext.h30
-rw-r--r--db/dbinc_auto/rpc_server_ext.h18
-rw-r--r--db/dbinc_auto/tcl_ext.h3
-rw-r--r--db/dbinc_auto/txn_auto.h2
-rw-r--r--db/dbinc_auto/txn_ext.h17
-rw-r--r--db/dbm/dbm.c11
-rw-r--r--db/dbreg/dbreg.c232
-rw-r--r--db/dbreg/dbreg.src5
-rw-r--r--db/dbreg/dbreg_auto.c8
-rw-r--r--db/dbreg/dbreg_rec.c39
-rw-r--r--db/dbreg/dbreg_stat.c6
-rw-r--r--db/dbreg/dbreg_util.c116
-rw-r--r--db/dist/Makefile.in146
-rw-r--r--db/dist/RELEASE6
-rw-r--r--db/dist/acconfig.h108
-rw-r--r--db/dist/aclocal/config.ac22
-rw-r--r--db/dist/aclocal/config.m422
-rw-r--r--db/dist/aclocal/cxx.m4 (renamed from db/dist/aclocal/cxx.ac)0
-rw-r--r--db/dist/aclocal/gcc.m4 (renamed from db/dist/aclocal/gcc.ac)0
-rw-r--r--db/dist/aclocal/libtool.m4 (renamed from db/dist/aclocal/libtool.ac)0
-rw-r--r--db/dist/aclocal/mutex.ac746
-rw-r--r--db/dist/aclocal/mutex.m4921
-rw-r--r--db/dist/aclocal/options.ac291
-rw-r--r--db/dist/aclocal/options.m4273
-rw-r--r--db/dist/aclocal/programs.ac52
-rw-r--r--db/dist/aclocal/programs.m476
-rw-r--r--db/dist/aclocal/rpc.ac77
-rw-r--r--db/dist/aclocal/rpc.m477
-rw-r--r--db/dist/aclocal/sequence.ac91
-rw-r--r--db/dist/aclocal/sequence.m491
-rw-r--r--db/dist/aclocal/socklen.m455
-rw-r--r--db/dist/aclocal/sosuffix.ac76
-rw-r--r--db/dist/aclocal/sosuffix.m476
-rw-r--r--db/dist/aclocal/tcl.ac135
-rw-r--r--db/dist/aclocal/tcl.m4145
-rw-r--r--db/dist/aclocal/types.ac167
-rw-r--r--db/dist/aclocal/types.m4310
-rw-r--r--db/dist/aclocal_java/ac_check_class.ac107
-rw-r--r--db/dist/aclocal_java/ac_check_class.m4107
-rw-r--r--db/dist/aclocal_java/ac_check_classpath.ac23
-rw-r--r--db/dist/aclocal_java/ac_check_classpath.m423
-rw-r--r--db/dist/aclocal_java/ac_check_junit.ac54
-rw-r--r--db/dist/aclocal_java/ac_check_junit.m454
-rw-r--r--db/dist/aclocal_java/ac_check_rqrd_class.ac26
-rw-r--r--db/dist/aclocal_java/ac_check_rqrd_class.m426
-rw-r--r--db/dist/aclocal_java/ac_java_options.ac32
-rw-r--r--db/dist/aclocal_java/ac_java_options.m432
-rw-r--r--db/dist/aclocal_java/ac_jni_include_dirs.ac114
-rw-r--r--db/dist/aclocal_java/ac_jni_include_dirs.m4114
-rw-r--r--db/dist/aclocal_java/ac_prog_jar.ac36
-rw-r--r--db/dist/aclocal_java/ac_prog_jar.m436
-rw-r--r--db/dist/aclocal_java/ac_prog_java.ac79
-rw-r--r--db/dist/aclocal_java/ac_prog_java.m479
-rw-r--r--db/dist/aclocal_java/ac_prog_java_works.ac97
-rw-r--r--db/dist/aclocal_java/ac_prog_java_works.m497
-rw-r--r--db/dist/aclocal_java/ac_prog_javac.ac43
-rw-r--r--db/dist/aclocal_java/ac_prog_javac.m443
-rw-r--r--db/dist/aclocal_java/ac_prog_javac_works.ac35
-rw-r--r--db/dist/aclocal_java/ac_prog_javac_works.m435
-rw-r--r--db/dist/aclocal_java/ac_prog_javadoc.ac37
-rw-r--r--db/dist/aclocal_java/ac_prog_javadoc.m437
-rw-r--r--db/dist/aclocal_java/ac_prog_javah.ac26
-rw-r--r--db/dist/aclocal_java/ac_prog_javah.m426
-rw-r--r--db/dist/aclocal_java/ac_try_compile_java.ac39
-rw-r--r--db/dist/aclocal_java/ac_try_compile_java.m439
-rw-r--r--db/dist/aclocal_java/ac_try_run_javac.ac40
-rw-r--r--db/dist/aclocal_java/ac_try_run_javac.m440
-rw-r--r--db/dist/brew/bdb_brew.dsp115
-rw-r--r--db/dist/brew/bdbread.mak418
-rw-r--r--db/dist/brew/brew_config.in548
-rw-r--r--db/dist/brew/brew_db.in150
-rw-r--r--db/dist/brew/brew_make.in25
-rw-r--r--db/dist/brew/brew_posix.h103
-rw-r--r--db/dist/build/chk.code35
-rwxr-xr-xdb/dist/build/chk.def50
-rwxr-xr-xdb/dist/build/chk.define55
-rwxr-xr-xdb/dist/build/chk.offt19
-rwxr-xr-xdb/dist/build/chk.proto30
-rwxr-xr-xdb/dist/build/chk.srcfiles29
-rw-r--r--db/dist/build/chk.str22
-rwxr-xr-xdb/dist/build/chk.tags39
-rw-r--r--db/dist/build/script94
-rw-r--r--db/dist/buildrel41
-rw-r--r--db/dist/clib_port.h97
-rw-r--r--db/dist/clib_port.in205
-rwxr-xr-xdb/dist/config.guess34
-rw-r--r--db/dist/config.hin76
-rwxr-xr-xdb/dist/config.sub24
-rwxr-xr-xdb/dist/configure9392
-rw-r--r--db/dist/configure.ac134
-rw-r--r--db/dist/configure.in501
-rw-r--r--db/dist/errno.h8
-rw-r--r--db/dist/gen_rec.awk283
-rw-r--r--db/dist/gen_rpc.awk51
-rw-r--r--db/dist/ltconfig3136
-rw-r--r--db/dist/pubdef.in46
-rw-r--r--db/dist/rec_ctemp62
-rw-r--r--db/dist/s60/s60.mmp.17
-rw-r--r--db/dist/s60/s60.mmp.27
-rw-r--r--db/dist/s60/s60_config.in547
-rw-r--r--db/dist/s60/s60_make.in25
-rwxr-xr-xdb/dist/s_all17
-rw-r--r--db/dist/s_brew142
-rw-r--r--db/dist/s_brew_dsp65
-rw-r--r--db/dist/s_brew_posix107
-rwxr-xr-xdb/dist/s_config4
-rwxr-xr-xdb/dist/s_crypto6
-rw-r--r--db/dist/s_cscope17
-rwxr-xr-xdb/dist/s_include7
-rwxr-xr-xdb/dist/s_java_stat12
-rw-r--r--db/dist/s_je2db4
-rwxr-xr-xdb/dist/s_readme8
-rw-r--r--db/dist/s_s60117
-rw-r--r--db/dist/s_s60_mmp36
-rw-r--r--db/dist/s_s60_posix65
-rwxr-xr-xdb/dist/s_symlink5
-rwxr-xr-xdb/dist/s_tags3
-rwxr-xr-xdb/dist/s_tcl53
-rwxr-xr-xdb/dist/s_vxworks57
-rwxr-xr-xdb/dist/s_win32153
-rw-r--r--db/dist/s_win32_dsp118
-rwxr-xr-xdb/dist/s_windows76
-rwxr-xr-xdb/dist/s_windows_dsp174
-rw-r--r--db/dist/srcfiles.in883
-rw-r--r--db/dist/tags4514
-rw-r--r--db/dist/template/db_server_proc148
-rw-r--r--db/dist/template/gen_client_ret46
-rw-r--r--db/dist/template/rec_ctemp6
-rw-r--r--db/dist/template/rec_fileops6
-rw-r--r--db/dist/template/rec_log137
-rw-r--r--db/dist/vx_config.in109
-rw-r--r--db/dist/vx_setup/LICENSE.TXT3
-rw-r--r--db/dist/vx_setup/README.in6
-rw-r--r--db/dist/vx_setup/vx_setup.in6
-rw-r--r--db/dist/win_config.in118
-rw-r--r--db/dist/win_db.in143
-rw-r--r--db/dist/win_exports.in11
-rw-r--r--db/dist/wince_config.in560
-rw-r--r--db/dist/winmsi/files.in3
-rw-r--r--db/docs/.cvsignore9
-rw-r--r--db/docs/api_c/api_core.html29
-rw-r--r--db/docs/api_c/c_pindex.html115
-rw-r--r--db/docs/api_c/db_associate.html69
-rw-r--r--db/docs/api_c/db_class.html5
-rw-r--r--db/docs/api_c/db_close.html5
-rw-r--r--db/docs/api_c/db_compact.html5
-rw-r--r--db/docs/api_c/db_cursor.html23
-rw-r--r--db/docs/api_c/db_del.html18
-rw-r--r--db/docs/api_c/db_err.html5
-rw-r--r--db/docs/api_c/db_exists.html81
-rw-r--r--db/docs/api_c/db_fd.html5
-rw-r--r--db/docs/api_c/db_get.html41
-rw-r--r--db/docs/api_c/db_get_byteswapped.html5
-rw-r--r--db/docs/api_c/db_get_mpf.html5
-rw-r--r--db/docs/api_c/db_get_type.html5
-rw-r--r--db/docs/api_c/db_getenv.html5
-rw-r--r--db/docs/api_c/db_join.html31
-rw-r--r--db/docs/api_c/db_key_range.html19
-rw-r--r--db/docs/api_c/db_list.html10
-rw-r--r--db/docs/api_c/db_lsn.html36
-rw-r--r--db/docs/api_c/db_open.html52
-rw-r--r--db/docs/api_c/db_put.html18
-rw-r--r--db/docs/api_c/db_remove.html5
-rw-r--r--db/docs/api_c/db_rename.html5
-rw-r--r--db/docs/api_c/db_set_alloc.html5
-rw-r--r--db/docs/api_c/db_set_append_recno.html5
-rw-r--r--db/docs/api_c/db_set_bt_compare.html7
-rw-r--r--db/docs/api_c/db_set_bt_minkey.html5
-rw-r--r--db/docs/api_c/db_set_bt_prefix.html5
-rw-r--r--db/docs/api_c/db_set_cachesize.html16
-rw-r--r--db/docs/api_c/db_set_dup_compare.html5
-rw-r--r--db/docs/api_c/db_set_encrypt.html5
-rw-r--r--db/docs/api_c/db_set_errcall.html5
-rw-r--r--db/docs/api_c/db_set_errfile.html26
-rw-r--r--db/docs/api_c/db_set_errpfx.html5
-rw-r--r--db/docs/api_c/db_set_feedback.html5
-rw-r--r--db/docs/api_c/db_set_flags.html9
-rw-r--r--db/docs/api_c/db_set_h_compare.html86
-rw-r--r--db/docs/api_c/db_set_h_ffactor.html5
-rw-r--r--db/docs/api_c/db_set_h_hash.html5
-rw-r--r--db/docs/api_c/db_set_h_nelem.html5
-rw-r--r--db/docs/api_c/db_set_lorder.html5
-rw-r--r--db/docs/api_c/db_set_malloc.html98
-rw-r--r--db/docs/api_c/db_set_msgcall.html5
-rw-r--r--db/docs/api_c/db_set_msgfile.html5
-rw-r--r--db/docs/api_c/db_set_pagesize.html5
-rw-r--r--db/docs/api_c/db_set_paniccall.html73
-rw-r--r--db/docs/api_c/db_set_priority.html88
-rw-r--r--db/docs/api_c/db_set_q_extentsize.html5
-rw-r--r--db/docs/api_c/db_set_re_delim.html5
-rw-r--r--db/docs/api_c/db_set_re_len.html5
-rw-r--r--db/docs/api_c/db_set_re_pad.html5
-rw-r--r--db/docs/api_c/db_set_re_source.html5
-rw-r--r--db/docs/api_c/db_set_realloc.html99
-rw-r--r--db/docs/api_c/db_stat.html50
-rw-r--r--db/docs/api_c/db_sync.html5
-rw-r--r--db/docs/api_c/db_truncate.html18
-rw-r--r--db/docs/api_c/db_upgrade.html5
-rw-r--r--db/docs/api_c/db_verify.html5
-rw-r--r--db/docs/api_c/dbc_class.html7
-rw-r--r--db/docs/api_c/dbc_close.html25
-rw-r--r--db/docs/api_c/dbc_count.html21
-rw-r--r--db/docs/api_c/dbc_del.html23
-rw-r--r--db/docs/api_c/dbc_dup.html21
-rw-r--r--db/docs/api_c/dbc_get.html105
-rw-r--r--db/docs/api_c/dbc_list.html20
-rw-r--r--db/docs/api_c/dbc_put.html51
-rw-r--r--db/docs/api_c/dbc_set_priority.html87
-rw-r--r--db/docs/api_c/dbm.html5
-rw-r--r--db/docs/api_c/dbt.html158
-rw-r--r--db/docs/api_c/dbt_bulk.html19
-rw-r--r--db/docs/api_c/dbt_class.html25
-rw-r--r--db/docs/api_c/dbt_package.html5
-rw-r--r--db/docs/api_c/env_cdsgroup_begin.html5
-rw-r--r--db/docs/api_c/env_class.html5
-rw-r--r--db/docs/api_c/env_close.html5
-rw-r--r--db/docs/api_c/env_dbremove.html18
-rw-r--r--db/docs/api_c/env_dbrename.html18
-rw-r--r--db/docs/api_c/env_err.html5
-rw-r--r--db/docs/api_c/env_event_notify.html32
-rw-r--r--db/docs/api_c/env_failchk.html9
-rw-r--r--db/docs/api_c/env_fileid_reset.html5
-rw-r--r--db/docs/api_c/env_list.html5
-rw-r--r--db/docs/api_c/env_lsn_reset.html5
-rw-r--r--db/docs/api_c/env_open.html5
-rw-r--r--db/docs/api_c/env_remove.html12
-rw-r--r--db/docs/api_c/env_set_alloc.html5
-rw-r--r--db/docs/api_c/env_set_app_dispatch.html5
-rw-r--r--db/docs/api_c/env_set_cache_max.html91
-rw-r--r--db/docs/api_c/env_set_cachesize.html40
-rw-r--r--db/docs/api_c/env_set_data_dir.html5
-rw-r--r--db/docs/api_c/env_set_encrypt.html5
-rw-r--r--db/docs/api_c/env_set_errcall.html5
-rw-r--r--db/docs/api_c/env_set_errfile.html26
-rw-r--r--db/docs/api_c/env_set_errpfx.html5
-rw-r--r--db/docs/api_c/env_set_feedback.html5
-rw-r--r--db/docs/api_c/env_set_flags.html60
-rw-r--r--db/docs/api_c/env_set_isalive.html5
-rw-r--r--db/docs/api_c/env_set_lg_bsize.html5
-rw-r--r--db/docs/api_c/env_set_lg_dir.html5
-rw-r--r--db/docs/api_c/env_set_lg_max.html5
-rw-r--r--db/docs/api_c/env_set_lg_mode.html5
-rw-r--r--db/docs/api_c/env_set_lg_regionmax.html5
-rw-r--r--db/docs/api_c/env_set_lk_conflicts.html5
-rw-r--r--db/docs/api_c/env_set_lk_detect.html5
-rw-r--r--db/docs/api_c/env_set_lk_max.html72
-rw-r--r--db/docs/api_c/env_set_lk_max_lockers.html5
-rw-r--r--db/docs/api_c/env_set_lk_max_locks.html5
-rw-r--r--db/docs/api_c/env_set_lk_max_objects.html5
-rw-r--r--db/docs/api_c/env_set_mp_mmapsize.html5
-rw-r--r--db/docs/api_c/env_set_msgcall.html5
-rw-r--r--db/docs/api_c/env_set_msgfile.html5
-rw-r--r--db/docs/api_c/env_set_mutexlocks.html59
-rw-r--r--db/docs/api_c/env_set_pageyield.html68
-rw-r--r--db/docs/api_c/env_set_paniccall.html69
-rw-r--r--db/docs/api_c/env_set_panicstate.html64
-rw-r--r--db/docs/api_c/env_set_rec_init.html71
-rw-r--r--db/docs/api_c/env_set_region_init.html77
-rw-r--r--db/docs/api_c/env_set_rpc_server.html5
-rw-r--r--db/docs/api_c/env_set_server.html77
-rw-r--r--db/docs/api_c/env_set_shm_key.html5
-rw-r--r--db/docs/api_c/env_set_tas_spins.html89
-rw-r--r--db/docs/api_c/env_set_thread_count.html19
-rw-r--r--db/docs/api_c/env_set_thread_id.html5
-rw-r--r--db/docs/api_c/env_set_thread_id_string.html5
-rw-r--r--db/docs/api_c/env_set_timeout.html5
-rw-r--r--db/docs/api_c/env_set_tmp_dir.html5
-rw-r--r--db/docs/api_c/env_set_tx_max.html5
-rw-r--r--db/docs/api_c/env_set_tx_recover.html75
-rw-r--r--db/docs/api_c/env_set_tx_timestamp.html5
-rw-r--r--db/docs/api_c/env_set_verbose.html17
-rw-r--r--db/docs/api_c/env_stat.html5
-rw-r--r--db/docs/api_c/env_strerror.html5
-rw-r--r--db/docs/api_c/env_version.html5
-rw-r--r--db/docs/api_c/frame.html8
-rw-r--r--db/docs/api_c/hsearch.html5
-rw-r--r--db/docs/api_c/lock_class.html5
-rw-r--r--db/docs/api_c/lock_detect.html11
-rw-r--r--db/docs/api_c/lock_get.html5
-rw-r--r--db/docs/api_c/lock_id.html5
-rw-r--r--db/docs/api_c/lock_id_free.html5
-rw-r--r--db/docs/api_c/lock_list.html5
-rw-r--r--db/docs/api_c/lock_put.html5
-rw-r--r--db/docs/api_c/lock_stat.html35
-rw-r--r--db/docs/api_c/lock_vec.html5
-rw-r--r--db/docs/api_c/log_archive.html5
-rw-r--r--db/docs/api_c/log_compare.html5
-rw-r--r--db/docs/api_c/log_cursor.html5
-rw-r--r--db/docs/api_c/log_file.html5
-rw-r--r--db/docs/api_c/log_flush.html5
-rw-r--r--db/docs/api_c/log_get.html114
-rw-r--r--db/docs/api_c/log_list.html5
-rw-r--r--db/docs/api_c/log_printf.html5
-rw-r--r--db/docs/api_c/log_put.html5
-rw-r--r--db/docs/api_c/log_register.html64
-rw-r--r--db/docs/api_c/log_stat.html9
-rw-r--r--db/docs/api_c/log_unregister.html59
-rw-r--r--db/docs/api_c/logc_class.html5
-rw-r--r--db/docs/api_c/logc_close.html5
-rw-r--r--db/docs/api_c/logc_get.html5
-rw-r--r--db/docs/api_c/lsn_class.html5
-rw-r--r--db/docs/api_c/memp_fclose.html5
-rw-r--r--db/docs/api_c/memp_fcreate.html5
-rw-r--r--db/docs/api_c/memp_fget.html5
-rw-r--r--db/docs/api_c/memp_fopen.html5
-rw-r--r--db/docs/api_c/memp_fput.html35
-rw-r--r--db/docs/api_c/memp_fset.html65
-rw-r--r--db/docs/api_c/memp_fsync.html14
-rw-r--r--db/docs/api_c/memp_list.html9
-rw-r--r--db/docs/api_c/memp_maxwrite.html15
-rw-r--r--db/docs/api_c/memp_openfd.html5
-rw-r--r--db/docs/api_c/memp_register.html5
-rw-r--r--db/docs/api_c/memp_set_clear_len.html5
-rw-r--r--db/docs/api_c/memp_set_fileid.html5
-rw-r--r--db/docs/api_c/memp_set_flags.html14
-rw-r--r--db/docs/api_c/memp_set_ftype.html5
-rw-r--r--db/docs/api_c/memp_set_lsn_offset.html5
-rw-r--r--db/docs/api_c/memp_set_maxsize.html5
-rw-r--r--db/docs/api_c/memp_set_pgcookie.html5
-rw-r--r--db/docs/api_c/memp_set_priority.html36
-rw-r--r--db/docs/api_c/memp_stat.html31
-rw-r--r--db/docs/api_c/memp_sync.html12
-rw-r--r--db/docs/api_c/memp_trickle.html5
-rw-r--r--db/docs/api_c/mempfile_class.html5
-rw-r--r--db/docs/api_c/mutex_alloc.html5
-rw-r--r--db/docs/api_c/mutex_free.html5
-rw-r--r--db/docs/api_c/mutex_list.html5
-rw-r--r--db/docs/api_c/mutex_lock.html5
-rw-r--r--db/docs/api_c/mutex_set_align.html5
-rw-r--r--db/docs/api_c/mutex_set_max.html5
-rw-r--r--db/docs/api_c/mutex_set_tas_spins.html5
-rw-r--r--db/docs/api_c/mutex_stat.html9
-rw-r--r--db/docs/api_c/mutex_unlock.html5
-rw-r--r--db/docs/api_c/object.html2
-rw-r--r--db/docs/api_c/pindex.src275
-rw-r--r--db/docs/api_c/rep_config.html9
-rw-r--r--db/docs/api_c/rep_elect.html28
-rw-r--r--db/docs/api_c/rep_limit.html11
-rw-r--r--db/docs/api_c/rep_list.html9
-rw-r--r--db/docs/api_c/rep_message.html16
-rw-r--r--db/docs/api_c/rep_nsites.html5
-rw-r--r--db/docs/api_c/rep_priority.html5
-rw-r--r--db/docs/api_c/rep_request.html93
-rw-r--r--db/docs/api_c/rep_start.html5
-rw-r--r--db/docs/api_c/rep_stat.html14
-rw-r--r--db/docs/api_c/rep_sync.html12
-rw-r--r--db/docs/api_c/rep_timeout.html23
-rw-r--r--db/docs/api_c/rep_transport.html5
-rw-r--r--db/docs/api_c/repmgr_ack_policy.html5
-rw-r--r--db/docs/api_c/repmgr_local_site.html5
-rw-r--r--db/docs/api_c/repmgr_remote_site.html5
-rw-r--r--db/docs/api_c/repmgr_site_list.html5
-rw-r--r--db/docs/api_c/repmgr_start.html12
-rw-r--r--db/docs/api_c/repmgr_stat.html116
-rw-r--r--db/docs/api_c/seq_class.html5
-rw-r--r--db/docs/api_c/seq_close.html5
-rw-r--r--db/docs/api_c/seq_get.html19
-rw-r--r--db/docs/api_c/seq_init_value.html60
-rw-r--r--db/docs/api_c/seq_initial_value.html5
-rw-r--r--db/docs/api_c/seq_list.html5
-rw-r--r--db/docs/api_c/seq_open.html19
-rw-r--r--db/docs/api_c/seq_remove.html18
-rw-r--r--db/docs/api_c/seq_set_cachesize.html5
-rw-r--r--db/docs/api_c/seq_set_flags.html5
-rw-r--r--db/docs/api_c/seq_set_range.html5
-rw-r--r--db/docs/api_c/seq_stat.html11
-rw-r--r--db/docs/api_c/set_func_close.html5
-rw-r--r--db/docs/api_c/set_func_dirfree.html5
-rw-r--r--db/docs/api_c/set_func_dirlist.html5
-rw-r--r--db/docs/api_c/set_func_exists.html5
-rw-r--r--db/docs/api_c/set_func_free.html5
-rw-r--r--db/docs/api_c/set_func_fsync.html5
-rw-r--r--db/docs/api_c/set_func_ftruncate.html5
-rw-r--r--db/docs/api_c/set_func_ioinfo.html5
-rw-r--r--db/docs/api_c/set_func_malloc.html5
-rw-r--r--db/docs/api_c/set_func_map.html5
-rw-r--r--db/docs/api_c/set_func_open.html5
-rw-r--r--db/docs/api_c/set_func_pread.html5
-rw-r--r--db/docs/api_c/set_func_pwrite.html5
-rw-r--r--db/docs/api_c/set_func_read.html5
-rw-r--r--db/docs/api_c/set_func_realloc.html5
-rw-r--r--db/docs/api_c/set_func_rename.html5
-rw-r--r--db/docs/api_c/set_func_seek.html5
-rw-r--r--db/docs/api_c/set_func_sleep.html11
-rw-r--r--db/docs/api_c/set_func_unlink.html5
-rw-r--r--db/docs/api_c/set_func_unmap.html5
-rw-r--r--db/docs/api_c/set_func_write.html5
-rw-r--r--db/docs/api_c/set_func_yield.html5
-rw-r--r--db/docs/api_c/txn_abort.html5
-rw-r--r--db/docs/api_c/txn_begin.html44
-rw-r--r--db/docs/api_c/txn_checkpoint.html5
-rw-r--r--db/docs/api_c/txn_class.html5
-rw-r--r--db/docs/api_c/txn_commit.html5
-rw-r--r--db/docs/api_c/txn_discard.html5
-rw-r--r--db/docs/api_c/txn_id.html5
-rw-r--r--db/docs/api_c/txn_list.html5
-rw-r--r--db/docs/api_c/txn_prepare.html5
-rw-r--r--db/docs/api_c/txn_recover.html35
-rw-r--r--db/docs/api_c/txn_set_name.html5
-rw-r--r--db/docs/api_c/txn_set_timeout.html11
-rw-r--r--db/docs/api_c/txn_stat.html9
-rw-r--r--db/docs/api_cxx/api_core.html17
-rw-r--r--db/docs/api_cxx/cxx_index.html148
-rw-r--r--db/docs/api_cxx/cxx_pindex.html65
-rw-r--r--db/docs/api_cxx/db_associate.html69
-rw-r--r--db/docs/api_cxx/db_class.html5
-rw-r--r--db/docs/api_cxx/db_close.html5
-rw-r--r--db/docs/api_cxx/db_compact.html5
-rw-r--r--db/docs/api_cxx/db_cursor.html23
-rw-r--r--db/docs/api_cxx/db_del.html18
-rw-r--r--db/docs/api_cxx/db_err.html5
-rw-r--r--db/docs/api_cxx/db_exists.html82
-rw-r--r--db/docs/api_cxx/db_fd.html5
-rw-r--r--db/docs/api_cxx/db_get.html39
-rw-r--r--db/docs/api_cxx/db_get_byteswapped.html5
-rw-r--r--db/docs/api_cxx/db_get_mpf.html5
-rw-r--r--db/docs/api_cxx/db_get_type.html5
-rw-r--r--db/docs/api_cxx/db_getenv.html5
-rw-r--r--db/docs/api_cxx/db_join.html21
-rw-r--r--db/docs/api_cxx/db_key_range.html19
-rw-r--r--db/docs/api_cxx/db_list.html10
-rw-r--r--db/docs/api_cxx/db_open.html52
-rw-r--r--db/docs/api_cxx/db_put.html18
-rw-r--r--db/docs/api_cxx/db_remove.html5
-rw-r--r--db/docs/api_cxx/db_rename.html5
-rw-r--r--db/docs/api_cxx/db_set_alloc.html5
-rw-r--r--db/docs/api_cxx/db_set_append_recno.html5
-rw-r--r--db/docs/api_cxx/db_set_bt_compare.html7
-rw-r--r--db/docs/api_cxx/db_set_bt_minkey.html5
-rw-r--r--db/docs/api_cxx/db_set_bt_prefix.html5
-rw-r--r--db/docs/api_cxx/db_set_cachesize.html16
-rw-r--r--db/docs/api_cxx/db_set_dup_compare.html5
-rw-r--r--db/docs/api_cxx/db_set_encrypt.html5
-rw-r--r--db/docs/api_cxx/db_set_errcall.html5
-rw-r--r--db/docs/api_cxx/db_set_errfile.html26
-rw-r--r--db/docs/api_cxx/db_set_error_stream.html5
-rw-r--r--db/docs/api_cxx/db_set_errpfx.html5
-rw-r--r--db/docs/api_cxx/db_set_feedback.html5
-rw-r--r--db/docs/api_cxx/db_set_flags.html5
-rw-r--r--db/docs/api_cxx/db_set_h_compare.html92
-rw-r--r--db/docs/api_cxx/db_set_h_ffactor.html5
-rw-r--r--db/docs/api_cxx/db_set_h_hash.html5
-rw-r--r--db/docs/api_cxx/db_set_h_nelem.html5
-rw-r--r--db/docs/api_cxx/db_set_lorder.html5
-rw-r--r--db/docs/api_cxx/db_set_malloc.html103
-rw-r--r--db/docs/api_cxx/db_set_msg_stream.html5
-rw-r--r--db/docs/api_cxx/db_set_msgcall.html5
-rw-r--r--db/docs/api_cxx/db_set_msgfile.html5
-rw-r--r--db/docs/api_cxx/db_set_pagesize.html5
-rw-r--r--db/docs/api_cxx/db_set_paniccall.html75
-rw-r--r--db/docs/api_cxx/db_set_priority.html71
-rw-r--r--db/docs/api_cxx/db_set_q_extentsize.html5
-rw-r--r--db/docs/api_cxx/db_set_re_delim.html5
-rw-r--r--db/docs/api_cxx/db_set_re_len.html5
-rw-r--r--db/docs/api_cxx/db_set_re_pad.html5
-rw-r--r--db/docs/api_cxx/db_set_re_source.html5
-rw-r--r--db/docs/api_cxx/db_set_realloc.html103
-rw-r--r--db/docs/api_cxx/db_stat.html50
-rw-r--r--db/docs/api_cxx/db_sync.html5
-rw-r--r--db/docs/api_cxx/db_truncate.html18
-rw-r--r--db/docs/api_cxx/db_upgrade.html5
-rw-r--r--db/docs/api_cxx/db_verify.html5
-rw-r--r--db/docs/api_cxx/dbc_class.html5
-rw-r--r--db/docs/api_cxx/dbc_close.html7
-rw-r--r--db/docs/api_cxx/dbc_count.html7
-rw-r--r--db/docs/api_cxx/dbc_del.html7
-rw-r--r--db/docs/api_cxx/dbc_dup.html7
-rw-r--r--db/docs/api_cxx/dbc_get.html35
-rw-r--r--db/docs/api_cxx/dbc_list.html8
-rw-r--r--db/docs/api_cxx/dbc_put.html27
-rw-r--r--db/docs/api_cxx/dbc_set_priority.html70
-rw-r--r--db/docs/api_cxx/dbenv_class.html76
-rw-r--r--db/docs/api_cxx/dbt_bulk_class.html5
-rw-r--r--db/docs/api_cxx/dbt_class.html27
-rw-r--r--db/docs/api_cxx/dbt_package.html5
-rw-r--r--db/docs/api_cxx/deadlock_class.html5
-rw-r--r--db/docs/api_cxx/env_cdsgroup_begin.html5
-rw-r--r--db/docs/api_cxx/env_class.html5
-rw-r--r--db/docs/api_cxx/env_close.html5
-rw-r--r--db/docs/api_cxx/env_dbremove.html18
-rw-r--r--db/docs/api_cxx/env_dbrename.html18
-rw-r--r--db/docs/api_cxx/env_err.html5
-rw-r--r--db/docs/api_cxx/env_event_notify.html32
-rw-r--r--db/docs/api_cxx/env_failchk.html9
-rw-r--r--db/docs/api_cxx/env_fileid_reset.html5
-rw-r--r--db/docs/api_cxx/env_list.html5
-rw-r--r--db/docs/api_cxx/env_lsn_reset.html5
-rw-r--r--db/docs/api_cxx/env_open.html5
-rw-r--r--db/docs/api_cxx/env_remove.html12
-rw-r--r--db/docs/api_cxx/env_set_alloc.html5
-rw-r--r--db/docs/api_cxx/env_set_app_dispatch.html5
-rw-r--r--db/docs/api_cxx/env_set_cache_max.html96
-rw-r--r--db/docs/api_cxx/env_set_cachesize.html40
-rw-r--r--db/docs/api_cxx/env_set_data_dir.html5
-rw-r--r--db/docs/api_cxx/env_set_encrypt.html5
-rw-r--r--db/docs/api_cxx/env_set_errcall.html5
-rw-r--r--db/docs/api_cxx/env_set_errfile.html26
-rw-r--r--db/docs/api_cxx/env_set_error_stream.html5
-rw-r--r--db/docs/api_cxx/env_set_errpfx.html5
-rw-r--r--db/docs/api_cxx/env_set_feedback.html5
-rw-r--r--db/docs/api_cxx/env_set_flags.html62
-rw-r--r--db/docs/api_cxx/env_set_isalive.html5
-rw-r--r--db/docs/api_cxx/env_set_lg_bsize.html5
-rw-r--r--db/docs/api_cxx/env_set_lg_dir.html5
-rw-r--r--db/docs/api_cxx/env_set_lg_max.html5
-rw-r--r--db/docs/api_cxx/env_set_lg_mode.html5
-rw-r--r--db/docs/api_cxx/env_set_lg_regionmax.html5
-rw-r--r--db/docs/api_cxx/env_set_lk_conflicts.html5
-rw-r--r--db/docs/api_cxx/env_set_lk_detect.html5
-rw-r--r--db/docs/api_cxx/env_set_lk_max.html75
-rw-r--r--db/docs/api_cxx/env_set_lk_max_lockers.html5
-rw-r--r--db/docs/api_cxx/env_set_lk_max_locks.html5
-rw-r--r--db/docs/api_cxx/env_set_lk_max_objects.html5
-rw-r--r--db/docs/api_cxx/env_set_mp_mmapsize.html5
-rw-r--r--db/docs/api_cxx/env_set_msg_stream.html5
-rw-r--r--db/docs/api_cxx/env_set_msgcall.html5
-rw-r--r--db/docs/api_cxx/env_set_msgfile.html5
-rw-r--r--db/docs/api_cxx/env_set_mutexlocks.html62
-rw-r--r--db/docs/api_cxx/env_set_pageyield.html71
-rw-r--r--db/docs/api_cxx/env_set_paniccall.html71
-rw-r--r--db/docs/api_cxx/env_set_panicstate.html67
-rw-r--r--db/docs/api_cxx/env_set_rec_init.html73
-rw-r--r--db/docs/api_cxx/env_set_region_init.html80
-rw-r--r--db/docs/api_cxx/env_set_rpc_server.html5
-rw-r--r--db/docs/api_cxx/env_set_server.html80
-rw-r--r--db/docs/api_cxx/env_set_shm_key.html5
-rw-r--r--db/docs/api_cxx/env_set_tas_spins.html94
-rw-r--r--db/docs/api_cxx/env_set_thread_count.html19
-rw-r--r--db/docs/api_cxx/env_set_thread_id.html5
-rw-r--r--db/docs/api_cxx/env_set_thread_id_string.html5
-rw-r--r--db/docs/api_cxx/env_set_timeout.html5
-rw-r--r--db/docs/api_cxx/env_set_tmp_dir.html5
-rw-r--r--db/docs/api_cxx/env_set_tx_max.html5
-rw-r--r--db/docs/api_cxx/env_set_tx_recover.html77
-rw-r--r--db/docs/api_cxx/env_set_tx_timestamp.html5
-rw-r--r--db/docs/api_cxx/env_set_verbose.html17
-rw-r--r--db/docs/api_cxx/env_stat.html5
-rw-r--r--db/docs/api_cxx/env_strerror.html5
-rw-r--r--db/docs/api_cxx/env_version.html5
-rw-r--r--db/docs/api_cxx/exc_package.html5
-rw-r--r--db/docs/api_cxx/except_class.html5
-rw-r--r--db/docs/api_cxx/frame.html8
-rw-r--r--db/docs/api_cxx/get_dbt.html43
-rw-r--r--db/docs/api_cxx/get_errno.html43
-rw-r--r--db/docs/api_cxx/lock_class.html5
-rw-r--r--db/docs/api_cxx/lock_detect.html11
-rw-r--r--db/docs/api_cxx/lock_get.html5
-rw-r--r--db/docs/api_cxx/lock_id.html5
-rw-r--r--db/docs/api_cxx/lock_id_free.html5
-rw-r--r--db/docs/api_cxx/lock_list.html5
-rw-r--r--db/docs/api_cxx/lock_put.html5
-rw-r--r--db/docs/api_cxx/lock_stat.html35
-rw-r--r--db/docs/api_cxx/lock_vec.html5
-rw-r--r--db/docs/api_cxx/lockng_class.html5
-rw-r--r--db/docs/api_cxx/log_archive.html5
-rw-r--r--db/docs/api_cxx/log_compare.html5
-rw-r--r--db/docs/api_cxx/log_cursor.html5
-rw-r--r--db/docs/api_cxx/log_file.html5
-rw-r--r--db/docs/api_cxx/log_flush.html5
-rw-r--r--db/docs/api_cxx/log_get.html118
-rw-r--r--db/docs/api_cxx/log_list.html5
-rw-r--r--db/docs/api_cxx/log_printf.html5
-rw-r--r--db/docs/api_cxx/log_put.html5
-rw-r--r--db/docs/api_cxx/log_register.html68
-rw-r--r--db/docs/api_cxx/log_stat.html9
-rw-r--r--db/docs/api_cxx/log_unregister.html63
-rw-r--r--db/docs/api_cxx/logc_class.html5
-rw-r--r--db/docs/api_cxx/logc_close.html5
-rw-r--r--db/docs/api_cxx/logc_get.html5
-rw-r--r--db/docs/api_cxx/lsn_class.html5
-rw-r--r--db/docs/api_cxx/mem_class.html54
-rw-r--r--db/docs/api_cxx/memp_class.html9
-rw-r--r--db/docs/api_cxx/memp_fclose.html5
-rw-r--r--db/docs/api_cxx/memp_fcreate.html5
-rw-r--r--db/docs/api_cxx/memp_fget.html5
-rw-r--r--db/docs/api_cxx/memp_fopen.html5
-rw-r--r--db/docs/api_cxx/memp_fput.html34
-rw-r--r--db/docs/api_cxx/memp_fset.html69
-rw-r--r--db/docs/api_cxx/memp_fsync.html14
-rw-r--r--db/docs/api_cxx/memp_list.html9
-rw-r--r--db/docs/api_cxx/memp_maxwrite.html15
-rw-r--r--db/docs/api_cxx/memp_openfd.html5
-rw-r--r--db/docs/api_cxx/memp_register.html5
-rw-r--r--db/docs/api_cxx/memp_set_clear_len.html5
-rw-r--r--db/docs/api_cxx/memp_set_fileid.html5
-rw-r--r--db/docs/api_cxx/memp_set_flags.html14
-rw-r--r--db/docs/api_cxx/memp_set_ftype.html5
-rw-r--r--db/docs/api_cxx/memp_set_lsn_offset.html5
-rw-r--r--db/docs/api_cxx/memp_set_maxsize.html5
-rw-r--r--db/docs/api_cxx/memp_set_pgcookie.html5
-rw-r--r--db/docs/api_cxx/memp_set_priority.html40
-rw-r--r--db/docs/api_cxx/memp_stat.html31
-rw-r--r--db/docs/api_cxx/memp_sync.html12
-rw-r--r--db/docs/api_cxx/memp_trickle.html5
-rw-r--r--db/docs/api_cxx/mempfile_class.html5
-rw-r--r--db/docs/api_cxx/mutex_alloc.html5
-rw-r--r--db/docs/api_cxx/mutex_free.html5
-rw-r--r--db/docs/api_cxx/mutex_list.html5
-rw-r--r--db/docs/api_cxx/mutex_lock.html5
-rw-r--r--db/docs/api_cxx/mutex_set_align.html5
-rw-r--r--db/docs/api_cxx/mutex_set_max.html5
-rw-r--r--db/docs/api_cxx/mutex_set_tas_spins.html5
-rw-r--r--db/docs/api_cxx/mutex_stat.html9
-rw-r--r--db/docs/api_cxx/mutex_unlock.html5
-rw-r--r--db/docs/api_cxx/object.html2
-rw-r--r--db/docs/api_cxx/pindex.src53
-rw-r--r--db/docs/api_cxx/rep_config.html9
-rw-r--r--db/docs/api_cxx/rep_elect.html28
-rw-r--r--db/docs/api_cxx/rep_limit.html11
-rw-r--r--db/docs/api_cxx/rep_list.html9
-rw-r--r--db/docs/api_cxx/rep_message.html16
-rw-r--r--db/docs/api_cxx/rep_nsites.html5
-rw-r--r--db/docs/api_cxx/rep_priority.html5
-rw-r--r--db/docs/api_cxx/rep_request.html98
-rw-r--r--db/docs/api_cxx/rep_start.html5
-rw-r--r--db/docs/api_cxx/rep_stat.html14
-rw-r--r--db/docs/api_cxx/rep_sync.html12
-rw-r--r--db/docs/api_cxx/rep_timeout.html23
-rw-r--r--db/docs/api_cxx/rep_transport.html5
-rw-r--r--db/docs/api_cxx/repmgr_ack_policy.html5
-rw-r--r--db/docs/api_cxx/repmgr_local_site.html5
-rw-r--r--db/docs/api_cxx/repmgr_remote_site.html5
-rw-r--r--db/docs/api_cxx/repmgr_site_list.html5
-rw-r--r--db/docs/api_cxx/repmgr_start.html12
-rw-r--r--db/docs/api_cxx/repmgr_stat.html121
-rw-r--r--db/docs/api_cxx/runrec_class.html5
-rw-r--r--db/docs/api_cxx/seq_class.html5
-rw-r--r--db/docs/api_cxx/seq_close.html5
-rw-r--r--db/docs/api_cxx/seq_get.html19
-rw-r--r--db/docs/api_cxx/seq_init_value.html64
-rw-r--r--db/docs/api_cxx/seq_initial_value.html5
-rw-r--r--db/docs/api_cxx/seq_list.html5
-rw-r--r--db/docs/api_cxx/seq_open.html19
-rw-r--r--db/docs/api_cxx/seq_remove.html18
-rw-r--r--db/docs/api_cxx/seq_set_cachesize.html5
-rw-r--r--db/docs/api_cxx/seq_set_flags.html5
-rw-r--r--db/docs/api_cxx/seq_set_range.html5
-rw-r--r--db/docs/api_cxx/seq_stat.html11
-rw-r--r--db/docs/api_cxx/txn_abort.html5
-rw-r--r--db/docs/api_cxx/txn_begin.html46
-rw-r--r--db/docs/api_cxx/txn_checkpoint.html5
-rw-r--r--db/docs/api_cxx/txn_class.html5
-rw-r--r--db/docs/api_cxx/txn_commit.html5
-rw-r--r--db/docs/api_cxx/txn_discard.html5
-rw-r--r--db/docs/api_cxx/txn_id.html5
-rw-r--r--db/docs/api_cxx/txn_list.html5
-rw-r--r--db/docs/api_cxx/txn_prepare.html5
-rw-r--r--db/docs/api_cxx/txn_recover.html35
-rw-r--r--db/docs/api_cxx/txn_set_name.html5
-rw-r--r--db/docs/api_cxx/txn_set_timeout.html11
-rw-r--r--db/docs/api_cxx/txn_stat.html9
-rw-r--r--db/docs/api_cxx/what.html43
-rw-r--r--db/docs/api_cxx/xml_close.html86
-rw-r--r--db/docs/api_cxx/xml_declare.html121
-rw-r--r--db/docs/api_cxx/xml_del.html81
-rw-r--r--db/docs/api_cxx/xml_get.html90
-rw-r--r--db/docs/api_cxx/xml_getname.html73
-rw-r--r--db/docs/api_cxx/xml_index.html56
-rw-r--r--db/docs/api_cxx/xml_open.html145
-rw-r--r--db/docs/api_cxx/xml_put.html90
-rw-r--r--db/docs/api_cxx/xml_xparse.html77
-rw-r--r--db/docs/api_cxx/xml_xpath.html102
-rw-r--r--db/docs/api_cxx/xmlcontainer_class.html85
-rw-r--r--db/docs/api_cxx/xmldoc_getattr.html72
-rw-r--r--db/docs/api_cxx/xmldoc_getcont.html70
-rw-r--r--db/docs/api_cxx/xmldoc_getcontlen.html71
-rw-r--r--db/docs/api_cxx/xmldoc_getdom.html78
-rw-r--r--db/docs/api_cxx/xmldoc_getenc.html86
-rw-r--r--db/docs/api_cxx/xmldoc_getid.html73
-rw-r--r--db/docs/api_cxx/xmldoc_getname.html73
-rw-r--r--db/docs/api_cxx/xmldoc_gettype.html72
-rw-r--r--db/docs/api_cxx/xmldoc_setattr.html75
-rw-r--r--db/docs/api_cxx/xmldoc_setcont.html70
-rw-r--r--db/docs/api_cxx/xmldoc_setname.html69
-rw-r--r--db/docs/api_cxx/xmldoc_settype.html71
-rw-r--r--db/docs/api_cxx/xmldocument_class.html75
-rw-r--r--db/docs/api_cxx/xmlq_clearname.html66
-rw-r--r--db/docs/api_cxx/xmlq_getname.html75
-rw-r--r--db/docs/api_cxx/xmlq_getvar.html72
-rw-r--r--db/docs/api_cxx/xmlq_remname.html67
-rw-r--r--db/docs/api_cxx/xmlq_seteval.html80
-rw-r--r--db/docs/api_cxx/xmlq_setname.html67
-rw-r--r--db/docs/api_cxx/xmlq_setret.html86
-rw-r--r--db/docs/api_cxx/xmlq_setvar.html65
-rw-r--r--db/docs/api_cxx/xmlquery_class.html74
-rw-r--r--db/docs/api_cxx/xmlr_next.html71
-rw-r--r--db/docs/api_cxx/xmlr_reset.html72
-rw-r--r--db/docs/api_cxx/xmlresults_class.html79
-rw-r--r--db/docs/api_cxx/xmlvalue_class.html97
-rw-r--r--db/docs/api_cxx/xmlxpathexp_class.html67
-rw-r--r--db/docs/api_cxx/xmlxpe_get.html65
-rw-r--r--db/docs/api_java/dbenv_class.html65
-rw-r--r--db/docs/api_java/env_set_lk_max.html74
-rw-r--r--db/docs/api_java/env_set_mutexlocks.html59
-rw-r--r--db/docs/api_java/env_set_pageyield.html69
-rw-r--r--db/docs/api_java/env_set_panicstate.html65
-rw-r--r--db/docs/api_java/env_set_rec_init.html78
-rw-r--r--db/docs/api_java/env_set_region_init.html78
-rw-r--r--db/docs/api_java/env_set_server.html77
-rw-r--r--db/docs/api_java/env_set_tx_recover.html84
-rw-r--r--db/docs/api_java/get_dbt.html43
-rw-r--r--db/docs/api_java/get_errno.html46
-rw-r--r--db/docs/api_java/java_index.html131
-rw-r--r--db/docs/api_java/log_get.html117
-rw-r--r--db/docs/api_java/log_register.html67
-rw-r--r--db/docs/api_java/log_unregister.html62
-rw-r--r--db/docs/api_java/mem_class.html48
-rw-r--r--db/docs/api_java/memp_fget.html33
-rw-r--r--db/docs/api_java/memp_fput.html33
-rw-r--r--db/docs/api_java/memp_fset.html33
-rw-r--r--db/docs/api_java/xml_close.html86
-rw-r--r--db/docs/api_java/xml_declare.html121
-rw-r--r--db/docs/api_java/xml_del.html81
-rw-r--r--db/docs/api_java/xml_get.html90
-rw-r--r--db/docs/api_java/xml_getname.html73
-rw-r--r--db/docs/api_java/xml_index.html56
-rw-r--r--db/docs/api_java/xml_open.html148
-rw-r--r--db/docs/api_java/xml_put.html90
-rw-r--r--db/docs/api_java/xml_xparse.html77
-rw-r--r--db/docs/api_java/xml_xpath.html102
-rw-r--r--db/docs/api_java/xmlcontainer_class.html85
-rw-r--r--db/docs/api_java/xmldoc_getattr.html72
-rw-r--r--db/docs/api_java/xmldoc_getcont.html70
-rw-r--r--db/docs/api_java/xmldoc_getcontlen.html71
-rw-r--r--db/docs/api_java/xmldoc_getdom.html78
-rw-r--r--db/docs/api_java/xmldoc_getenc.html86
-rw-r--r--db/docs/api_java/xmldoc_getid.html73
-rw-r--r--db/docs/api_java/xmldoc_getname.html73
-rw-r--r--db/docs/api_java/xmldoc_gettype.html72
-rw-r--r--db/docs/api_java/xmldoc_setattr.html74
-rw-r--r--db/docs/api_java/xmldoc_setcont.html70
-rw-r--r--db/docs/api_java/xmldoc_setname.html69
-rw-r--r--db/docs/api_java/xmldoc_settype.html71
-rw-r--r--db/docs/api_java/xmldocument_class.html73
-rw-r--r--db/docs/api_java/xmlq_clearname.html66
-rw-r--r--db/docs/api_java/xmlq_getname.html75
-rw-r--r--db/docs/api_java/xmlq_getvar.html72
-rw-r--r--db/docs/api_java/xmlq_remname.html67
-rw-r--r--db/docs/api_java/xmlq_seteval.html80
-rw-r--r--db/docs/api_java/xmlq_setname.html66
-rw-r--r--db/docs/api_java/xmlq_setret.html86
-rw-r--r--db/docs/api_java/xmlq_setvar.html64
-rw-r--r--db/docs/api_java/xmlquery_class.html72
-rw-r--r--db/docs/api_java/xmlr_next.html71
-rw-r--r--db/docs/api_java/xmlr_reset.html72
-rw-r--r--db/docs/api_java/xmlresults_class.html73
-rw-r--r--db/docs/api_java/xmlvalue_class.html88
-rw-r--r--db/docs/api_java/xmlxpathexp_class.html65
-rw-r--r--db/docs/api_java/xmlxpe_get.html65
-rw-r--r--db/docs/api_tcl/api_tcl.html5
-rw-r--r--db/docs/api_tcl/db_close.html5
-rw-r--r--db/docs/api_tcl/db_count.html5
-rw-r--r--db/docs/api_tcl/db_cursor.html5
-rw-r--r--db/docs/api_tcl/db_del.html5
-rw-r--r--db/docs/api_tcl/db_get.html5
-rw-r--r--db/docs/api_tcl/db_get_join.html5
-rw-r--r--db/docs/api_tcl/db_get_type.html5
-rw-r--r--db/docs/api_tcl/db_is_byteswapped.html5
-rw-r--r--db/docs/api_tcl/db_join.html5
-rw-r--r--db/docs/api_tcl/db_open.html5
-rw-r--r--db/docs/api_tcl/db_put.html5
-rw-r--r--db/docs/api_tcl/db_remove.html5
-rw-r--r--db/docs/api_tcl/db_rename.html5
-rw-r--r--db/docs/api_tcl/db_stat.html5
-rw-r--r--db/docs/api_tcl/db_sync.html5
-rw-r--r--db/docs/api_tcl/db_truncate.html5
-rw-r--r--db/docs/api_tcl/dbc_close.html5
-rw-r--r--db/docs/api_tcl/dbc_del.html5
-rw-r--r--db/docs/api_tcl/dbc_dup.html5
-rw-r--r--db/docs/api_tcl/dbc_get.html5
-rw-r--r--db/docs/api_tcl/dbc_put.html5
-rw-r--r--db/docs/api_tcl/env_close.html5
-rw-r--r--db/docs/api_tcl/env_dbremove.html5
-rw-r--r--db/docs/api_tcl/env_dbrename.html5
-rw-r--r--db/docs/api_tcl/env_open.html5
-rw-r--r--db/docs/api_tcl/env_remove.html5
-rw-r--r--db/docs/api_tcl/txn.html5
-rw-r--r--db/docs/api_tcl/txn_abort.html5
-rw-r--r--db/docs/api_tcl/txn_checkpoint.html5
-rw-r--r--db/docs/api_tcl/txn_commit.html5
-rw-r--r--db/docs/api_tcl/version.html5
-rw-r--r--db/docs/articles/inmemory/C/InMemoryDBApplication.pdfbin0 -> 183024 bytes
-rw-r--r--db/docs/articles/inmemory/C/gettingStarted.css41
-rw-r--r--db/docs/articles/inmemory/C/index.html1165
-rw-r--r--db/docs/collections/tutorial/BasicProgram.html58
-rw-r--r--db/docs/collections/tutorial/BerkeleyDB-Java-Collections.pdfbin448647 -> 447906 bytes
-rw-r--r--db/docs/collections/tutorial/Entity.html56
-rw-r--r--db/docs/collections/tutorial/SerializableEntity.html48
-rw-r--r--db/docs/collections/tutorial/SerializedObjectStorage.html20
-rw-r--r--db/docs/collections/tutorial/Summary.html32
-rw-r--r--db/docs/collections/tutorial/Tuple.html32
-rw-r--r--db/docs/collections/tutorial/UsingCollectionsAPI.html46
-rw-r--r--db/docs/collections/tutorial/UsingSecondaries.html28
-rw-r--r--db/docs/collections/tutorial/UsingStoredCollections.html196
-rw-r--r--db/docs/collections/tutorial/addingdatabaseitems.html118
-rw-r--r--db/docs/collections/tutorial/collectionOverview.html40
-rw-r--r--db/docs/collections/tutorial/collectionswithentities.html28
-rw-r--r--db/docs/collections/tutorial/createbindingscollections.html36
-rw-r--r--db/docs/collections/tutorial/creatingentitybindings.html24
-rw-r--r--db/docs/collections/tutorial/developing.html38
-rw-r--r--db/docs/collections/tutorial/entitieswithcollections.html119
-rw-r--r--db/docs/collections/tutorial/handlingexceptions.html26
-rw-r--r--db/docs/collections/tutorial/implementingmain.html34
-rw-r--r--db/docs/collections/tutorial/index.html36
-rw-r--r--db/docs/collections/tutorial/indexedcollections.html32
-rw-r--r--db/docs/collections/tutorial/intro.html46
-rw-r--r--db/docs/collections/tutorial/moreinfo.html18
-rw-r--r--db/docs/collections/tutorial/openclasscatalog.html28
-rw-r--r--db/docs/collections/tutorial/opendatabases.html26
-rw-r--r--db/docs/collections/tutorial/opendbenvironment.html30
-rw-r--r--db/docs/collections/tutorial/openingforeignkeys.html28
-rw-r--r--db/docs/collections/tutorial/preface.html28
-rw-r--r--db/docs/collections/tutorial/removingredundantvalueclasses.html22
-rw-r--r--db/docs/collections/tutorial/retrievingbyindexkey.html78
-rw-r--r--db/docs/collections/tutorial/retrievingdatabaseitems.html84
-rw-r--r--db/docs/collections/tutorial/sortedcollections.html26
-rw-r--r--db/docs/collections/tutorial/transientfieldsinbinding.html24
-rw-r--r--db/docs/collections/tutorial/tuple-serialentitybindings.html20
-rw-r--r--db/docs/collections/tutorial/tuplekeybindings.html24
-rw-r--r--db/docs/collections/tutorial/tupleswithkeycreators.html26
-rw-r--r--db/docs/collections/tutorial/tutorialintroduction.html30
-rw-r--r--db/docs/collections/tutorial/usingtransactions.html30
-rw-r--r--db/docs/gsg/C/BerkeleyDB-Core-C-GSG.pdfbin456016 -> 461205 bytes
-rw-r--r--db/docs/gsg/C/CoreCursorUsage.html60
-rw-r--r--db/docs/gsg/C/CoreDBAdmin.html30
-rw-r--r--db/docs/gsg/C/CoreDbUsage.html40
-rw-r--r--db/docs/gsg/C/CoreEnvUsage.html28
-rw-r--r--db/docs/gsg/C/Cursors.html28
-rw-r--r--db/docs/gsg/C/DB.html26
-rw-r--r--db/docs/gsg/C/DBEntry.html30
-rw-r--r--db/docs/gsg/C/DBOpenFlags.html22
-rw-r--r--db/docs/gsg/C/DbUsage.html52
-rw-r--r--db/docs/gsg/C/DeleteEntryWCursor.html42
-rw-r--r--db/docs/gsg/C/Positioning.html64
-rw-r--r--db/docs/gsg/C/PutEntryWCursor.html52
-rw-r--r--db/docs/gsg/C/ReplacingEntryWCursor.html34
-rw-r--r--db/docs/gsg/C/accessmethods.html20
-rw-r--r--db/docs/gsg/C/btree.html40
-rw-r--r--db/docs/gsg/C/cachesize.html38
-rw-r--r--db/docs/gsg/C/concepts.html22
-rw-r--r--db/docs/gsg/C/coredbclose.html22
-rw-r--r--db/docs/gsg/C/coreindexusage.html63
-rw-r--r--db/docs/gsg/C/cstructs.html32
-rw-r--r--db/docs/gsg/C/databaseLimits.html22
-rw-r--r--db/docs/gsg/C/dbErrorReporting.html28
-rw-r--r--db/docs/gsg/C/dbconfig.html24
-rw-r--r--db/docs/gsg/C/environments.html22
-rw-r--r--db/docs/gsg/C/gettingit.html22
-rw-r--r--db/docs/gsg/C/index.html41
-rw-r--r--db/docs/gsg/C/indexes.html39
-rw-r--r--db/docs/gsg/C/introduction.html24
-rw-r--r--db/docs/gsg/C/joins.html38
-rw-r--r--db/docs/gsg/C/keyCreator.html129
-rw-r--r--db/docs/gsg/C/preface.html49
-rw-r--r--db/docs/gsg/C/readSecondary.html22
-rw-r--r--db/docs/gsg/C/returns.html20
-rw-r--r--db/docs/gsg/C/secondaryCursor.html32
-rw-r--r--db/docs/gsg/C/secondaryDelete.html26
-rw-r--r--db/docs/gsg/C/usingDbt.html36
-rw-r--r--db/docs/gsg/CXX/BerkeleyDB-Core-Cxx-GSG.pdfbin429750 -> 434577 bytes
-rw-r--r--db/docs/gsg/CXX/CoreCursorUsage.html54
-rw-r--r--db/docs/gsg/CXX/CoreDBAdmin.html30
-rw-r--r--db/docs/gsg/CXX/CoreDbCXXUsage.html36
-rw-r--r--db/docs/gsg/CXX/CoreEnvUsage.html50
-rw-r--r--db/docs/gsg/CXX/Cursors.html24
-rw-r--r--db/docs/gsg/CXX/DB.html26
-rw-r--r--db/docs/gsg/CXX/DBEntry.html30
-rw-r--r--db/docs/gsg/CXX/DBOpenFlags.html22
-rw-r--r--db/docs/gsg/CXX/DbCXXUsage.html66
-rw-r--r--db/docs/gsg/CXX/DeleteEntryWCursor.html26
-rw-r--r--db/docs/gsg/CXX/Positioning.html52
-rw-r--r--db/docs/gsg/CXX/PutEntryWCursor.html48
-rw-r--r--db/docs/gsg/CXX/ReplacingEntryWCursor.html28
-rw-r--r--db/docs/gsg/CXX/accessmethods.html20
-rw-r--r--db/docs/gsg/CXX/btree.html30
-rw-r--r--db/docs/gsg/CXX/cachesize.html38
-rw-r--r--db/docs/gsg/CXX/concepts.html22
-rw-r--r--db/docs/gsg/CXX/coreExceptions.html20
-rw-r--r--db/docs/gsg/CXX/coredbclose.html22
-rw-r--r--db/docs/gsg/CXX/coreindexusage.html76
-rw-r--r--db/docs/gsg/CXX/databaseLimits.html22
-rw-r--r--db/docs/gsg/CXX/dbErrorReporting.html28
-rw-r--r--db/docs/gsg/CXX/dbconfig.html24
-rw-r--r--db/docs/gsg/CXX/environments.html22
-rw-r--r--db/docs/gsg/CXX/gettingit.html22
-rw-r--r--db/docs/gsg/CXX/index.html41
-rw-r--r--db/docs/gsg/CXX/indexes.html39
-rw-r--r--db/docs/gsg/CXX/introduction.html24
-rw-r--r--db/docs/gsg/CXX/joins.html30
-rw-r--r--db/docs/gsg/CXX/keyCreator.html123
-rw-r--r--db/docs/gsg/CXX/preface.html51
-rw-r--r--db/docs/gsg/CXX/readSecondary.html22
-rw-r--r--db/docs/gsg/CXX/returns.html20
-rw-r--r--db/docs/gsg/CXX/secondaryCursor.html28
-rw-r--r--db/docs/gsg/CXX/secondaryDelete.html26
-rw-r--r--db/docs/gsg/CXX/usingDbt.html32
-rw-r--r--db/docs/gsg/JAVA/BerkeleyDB-Core-JAVA-GSG.pdfbin491548 -> 496895 bytes
-rw-r--r--db/docs/gsg/JAVA/CoreEnvUsage.html26
-rw-r--r--db/docs/gsg/JAVA/CoreJavaUsage.html36
-rw-r--r--db/docs/gsg/JAVA/Cursors.html28
-rw-r--r--db/docs/gsg/JAVA/DB.html26
-rw-r--r--db/docs/gsg/JAVA/DBAdmin.html28
-rw-r--r--db/docs/gsg/JAVA/DBEntry.html40
-rw-r--r--db/docs/gsg/JAVA/DeleteEntryWCursor.html30
-rw-r--r--db/docs/gsg/JAVA/Positioning.html74
-rw-r--r--db/docs/gsg/JAVA/PutEntryWCursor.html40
-rw-r--r--db/docs/gsg/JAVA/ReplacingEntryWCursor.html26
-rw-r--r--db/docs/gsg/JAVA/accessmethods.html20
-rw-r--r--db/docs/gsg/JAVA/bindAPI.html60
-rw-r--r--db/docs/gsg/JAVA/btree.html30
-rw-r--r--db/docs/gsg/JAVA/cachesize.html38
-rw-r--r--db/docs/gsg/JAVA/concepts.html22
-rw-r--r--db/docs/gsg/JAVA/coreExceptions.html20
-rw-r--r--db/docs/gsg/JAVA/coredbclose.html22
-rw-r--r--db/docs/gsg/JAVA/cursorJavaUsage.html68
-rw-r--r--db/docs/gsg/JAVA/databaseLimits.html22
-rw-r--r--db/docs/gsg/JAVA/dbErrorReporting.html20
-rw-r--r--db/docs/gsg/JAVA/dbconfig.html24
-rw-r--r--db/docs/gsg/JAVA/dbtJavaUsage.html64
-rw-r--r--db/docs/gsg/JAVA/environments.html22
-rw-r--r--db/docs/gsg/JAVA/gettingit.html22
-rw-r--r--db/docs/gsg/JAVA/index.html43
-rw-r--r--db/docs/gsg/JAVA/indexes.html39
-rw-r--r--db/docs/gsg/JAVA/introduction.html24
-rw-r--r--db/docs/gsg/JAVA/javaindexusage.html56
-rw-r--r--db/docs/gsg/JAVA/joins.html34
-rw-r--r--db/docs/gsg/JAVA/keyCreator.html113
-rw-r--r--db/docs/gsg/JAVA/preface.html53
-rw-r--r--db/docs/gsg/JAVA/readSecondary.html24
-rw-r--r--db/docs/gsg/JAVA/returns.html20
-rw-r--r--db/docs/gsg/JAVA/secondaryCursor.html24
-rw-r--r--db/docs/gsg/JAVA/secondaryDelete.html26
-rw-r--r--db/docs/gsg/JAVA/secondaryProps.html20
-rw-r--r--db/docs/gsg/JAVA/usingDbt.html46
-rw-r--r--db/docs/gsg_db_rep/C/Replication-C-GSG.pdfbin357663 -> 357213 bytes
-rw-r--r--db/docs/gsg_db_rep/C/addfeatures.html24
-rw-r--r--db/docs/gsg_db_rep/C/apioverview.html20
-rw-r--r--db/docs/gsg_db_rep/C/bulk.html20
-rw-r--r--db/docs/gsg_db_rep/C/c2ctransfer.html20
-rw-r--r--db/docs/gsg_db_rep/C/elections.html20
-rw-r--r--db/docs/gsg_db_rep/C/electiontimes.html20
-rw-r--r--db/docs/gsg_db_rep/C/exampledoloop.html82
-rw-r--r--db/docs/gsg_db_rep/C/fmwrkconnectretry.html22
-rw-r--r--db/docs/gsg_db_rep/C/fwrkmasterreplica.html28
-rw-r--r--db/docs/gsg_db_rep/C/fwrkpermmessage.html26
-rw-r--r--db/docs/gsg_db_rep/C/index.html32
-rw-r--r--db/docs/gsg_db_rep/C/introduction.html28
-rw-r--r--db/docs/gsg_db_rep/C/manageblock.html22
-rw-r--r--db/docs/gsg_db_rep/C/noautoinit.html20
-rw-r--r--db/docs/gsg_db_rep/C/permmessages.html26
-rw-r--r--db/docs/gsg_db_rep/C/preface.html28
-rw-r--r--db/docs/gsg_db_rep/C/processingloop.html22
-rw-r--r--db/docs/gsg_db_rep/C/repadvantage.html24
-rw-r--r--db/docs/gsg_db_rep/C/repapp.html56
-rw-r--r--db/docs/gsg_db_rep/C/repmgr_init_example_c.html76
-rw-r--r--db/docs/gsg_db_rep/C/simpleprogramlisting.html76
-rw-r--r--db/docs/gsg_db_rep/C/txnapp.html24
-rw-r--r--db/docs/gsg_db_rep/CXX/Replication-CXX-GSG.pdfbin362032 -> 361655 bytes
-rw-r--r--db/docs/gsg_db_rep/CXX/addfeatures.html24
-rw-r--r--db/docs/gsg_db_rep/CXX/apioverview.html20
-rw-r--r--db/docs/gsg_db_rep/CXX/bulk.html20
-rw-r--r--db/docs/gsg_db_rep/CXX/c2ctransfer.html20
-rw-r--r--db/docs/gsg_db_rep/CXX/elections.html20
-rw-r--r--db/docs/gsg_db_rep/CXX/electiontimes.html20
-rw-r--r--db/docs/gsg_db_rep/CXX/exampledoloop.html60
-rw-r--r--db/docs/gsg_db_rep/CXX/fmwrkconnectretry.html22
-rw-r--r--db/docs/gsg_db_rep/CXX/fwrkmasterreplica.html26
-rw-r--r--db/docs/gsg_db_rep/CXX/fwrkpermmessage.html34
-rw-r--r--db/docs/gsg_db_rep/CXX/index.html32
-rw-r--r--db/docs/gsg_db_rep/CXX/introduction.html28
-rw-r--r--db/docs/gsg_db_rep/CXX/manageblock.html22
-rw-r--r--db/docs/gsg_db_rep/CXX/noautoinit.html20
-rw-r--r--db/docs/gsg_db_rep/CXX/permmessages.html26
-rw-r--r--db/docs/gsg_db_rep/CXX/preface.html28
-rw-r--r--db/docs/gsg_db_rep/CXX/processingloop.html30
-rw-r--r--db/docs/gsg_db_rep/CXX/repadvantage.html24
-rw-r--r--db/docs/gsg_db_rep/CXX/repapp.html48
-rw-r--r--db/docs/gsg_db_rep/CXX/repmgr_init_example_c.html100
-rw-r--r--db/docs/gsg_db_rep/CXX/simpleprogramlisting.html82
-rw-r--r--db/docs/gsg_db_rep/CXX/txnapp.html24
-rw-r--r--db/docs/gsg_db_rep/JAVA/Replication-JAVA-GSG.pdfbin361196 -> 361551 bytes
-rw-r--r--db/docs/gsg_db_rep/JAVA/addfeatures.html24
-rw-r--r--db/docs/gsg_db_rep/JAVA/apioverview.html20
-rw-r--r--db/docs/gsg_db_rep/JAVA/bulk.html20
-rw-r--r--db/docs/gsg_db_rep/JAVA/c2ctransfer.html20
-rw-r--r--db/docs/gsg_db_rep/JAVA/elections.html20
-rw-r--r--db/docs/gsg_db_rep/JAVA/electiontimes.html20
-rw-r--r--db/docs/gsg_db_rep/JAVA/exampledoloop.html52
-rw-r--r--db/docs/gsg_db_rep/JAVA/fmwrkconnectretry.html22
-rw-r--r--db/docs/gsg_db_rep/JAVA/fwrkmasterreplica.html28
-rw-r--r--db/docs/gsg_db_rep/JAVA/fwrkpermmessage.html26
-rw-r--r--db/docs/gsg_db_rep/JAVA/index.html36
-rw-r--r--db/docs/gsg_db_rep/JAVA/introduction.html28
-rw-r--r--db/docs/gsg_db_rep/JAVA/manageblock.html22
-rw-r--r--db/docs/gsg_db_rep/JAVA/noautoinit.html20
-rw-r--r--db/docs/gsg_db_rep/JAVA/permmessages.html26
-rw-r--r--db/docs/gsg_db_rep/JAVA/preface.html30
-rw-r--r--db/docs/gsg_db_rep/JAVA/processingloop.html22
-rw-r--r--db/docs/gsg_db_rep/JAVA/repadvantage.html24
-rw-r--r--db/docs/gsg_db_rep/JAVA/repapp.html44
-rw-r--r--db/docs/gsg_db_rep/JAVA/repmgr_init_example_c.html110
-rw-r--r--db/docs/gsg_db_rep/JAVA/simpleprogramlisting.html76
-rw-r--r--db/docs/gsg_db_rep/JAVA/txnapp.html24
-rw-r--r--db/docs/gsg_txn/C/BerkeleyDB-Core-C-Txn.pdfbin651712 -> 613657 bytes
-rw-r--r--db/docs/gsg_txn/C/abortresults.html22
-rw-r--r--db/docs/gsg_txn/C/architectrecovery.html24
-rw-r--r--db/docs/gsg_txn/C/autocommit.html44
-rw-r--r--db/docs/gsg_txn/C/backuprestore.html22
-rw-r--r--db/docs/gsg_txn/C/blocking_deadlocks.html24
-rw-r--r--db/docs/gsg_txn/C/enabletxn.html30
-rw-r--r--db/docs/gsg_txn/C/envopen.html52
-rw-r--r--db/docs/gsg_txn/C/filemanagement.html36
-rw-r--r--db/docs/gsg_txn/C/hotfailover.html20
-rw-r--r--db/docs/gsg_txn/C/index.html32
-rw-r--r--db/docs/gsg_txn/C/inmem_txnexample_c.html84
-rw-r--r--db/docs/gsg_txn/C/introduction.html46
-rw-r--r--db/docs/gsg_txn/C/isolation.html264
-rw-r--r--db/docs/gsg_txn/C/lockingsubsystem.html60
-rw-r--r--db/docs/gsg_txn/C/logconfig.html36
-rw-r--r--db/docs/gsg_txn/C/logfileremoval.html20
-rw-r--r--db/docs/gsg_txn/C/maxtxns.html36
-rw-r--r--db/docs/gsg_txn/C/nestedtxn.html20
-rw-r--r--db/docs/gsg_txn/C/perftune-intro.html22
-rw-r--r--db/docs/gsg_txn/C/preface.html28
-rw-r--r--db/docs/gsg_txn/C/readmodifywrite.html22
-rw-r--r--db/docs/gsg_txn/C/recovery-intro.html22
-rw-r--r--db/docs/gsg_txn/C/recovery.html38
-rw-r--r--db/docs/gsg_txn/C/reversesplit.html42
-rw-r--r--db/docs/gsg_txn/C/txn_ccursor.html36
-rw-r--r--db/docs/gsg_txn/C/txnconcurrency.html26
-rw-r--r--db/docs/gsg_txn/C/txncursor.html42
-rw-r--r--db/docs/gsg_txn/C/txnexample_c.html90
-rw-r--r--db/docs/gsg_txn/C/txnindices.html22
-rw-r--r--db/docs/gsg_txn/C/txnnowait.html22
-rw-r--r--db/docs/gsg_txn/C/usingtxns.html54
-rw-r--r--db/docs/gsg_txn/C/wrapup.html24
-rw-r--r--db/docs/gsg_txn/CXX/BerkeleyDB-Core-Cxx-Txn.pdfbin621636 -> 589605 bytes
-rw-r--r--db/docs/gsg_txn/CXX/abortresults.html22
-rw-r--r--db/docs/gsg_txn/CXX/architectrecovery.html24
-rw-r--r--db/docs/gsg_txn/CXX/autocommit.html38
-rw-r--r--db/docs/gsg_txn/CXX/backuprestore.html22
-rw-r--r--db/docs/gsg_txn/CXX/blocking_deadlocks.html24
-rw-r--r--db/docs/gsg_txn/CXX/enabletxn.html30
-rw-r--r--db/docs/gsg_txn/CXX/envopen.html46
-rw-r--r--db/docs/gsg_txn/CXX/filemanagement.html32
-rw-r--r--db/docs/gsg_txn/CXX/hotfailover.html20
-rw-r--r--db/docs/gsg_txn/CXX/index.html32
-rw-r--r--db/docs/gsg_txn/CXX/inmem_txnexample_c.html70
-rw-r--r--db/docs/gsg_txn/CXX/introduction.html46
-rw-r--r--db/docs/gsg_txn/CXX/isolation.html204
-rw-r--r--db/docs/gsg_txn/CXX/lockingsubsystem.html40
-rw-r--r--db/docs/gsg_txn/CXX/logconfig.html32
-rw-r--r--db/docs/gsg_txn/CXX/logfileremoval.html20
-rw-r--r--db/docs/gsg_txn/CXX/maxtxns.html26
-rw-r--r--db/docs/gsg_txn/CXX/nestedtxn.html20
-rw-r--r--db/docs/gsg_txn/CXX/perftune-intro.html22
-rw-r--r--db/docs/gsg_txn/CXX/preface.html28
-rw-r--r--db/docs/gsg_txn/CXX/readmodifywrite.html20
-rw-r--r--db/docs/gsg_txn/CXX/recovery-intro.html22
-rw-r--r--db/docs/gsg_txn/CXX/recovery.html30
-rw-r--r--db/docs/gsg_txn/CXX/reversesplit.html36
-rw-r--r--db/docs/gsg_txn/CXX/txn_ccursor.html26
-rw-r--r--db/docs/gsg_txn/CXX/txnconcurrency.html26
-rw-r--r--db/docs/gsg_txn/CXX/txncursor.html30
-rw-r--r--db/docs/gsg_txn/CXX/txnexample_c.html80
-rw-r--r--db/docs/gsg_txn/CXX/txnindices.html22
-rw-r--r--db/docs/gsg_txn/CXX/txnnowait.html20
-rw-r--r--db/docs/gsg_txn/CXX/usingtxns.html46
-rw-r--r--db/docs/gsg_txn/CXX/wrapup.html24
-rw-r--r--db/docs/gsg_txn/JAVA/BerkeleyDB-Core-JAVA-Txn.pdfbin627919 -> 597330 bytes
-rw-r--r--db/docs/gsg_txn/JAVA/abortresults.html22
-rw-r--r--db/docs/gsg_txn/JAVA/architectrecovery.html24
-rw-r--r--db/docs/gsg_txn/JAVA/autocommit.html32
-rw-r--r--db/docs/gsg_txn/JAVA/backuprestore.html22
-rw-r--r--db/docs/gsg_txn/JAVA/blocking_deadlocks.html24
-rw-r--r--db/docs/gsg_txn/JAVA/enabletxn.html30
-rw-r--r--db/docs/gsg_txn/JAVA/envopen.html30
-rw-r--r--db/docs/gsg_txn/JAVA/filemanagement.html46
-rw-r--r--db/docs/gsg_txn/JAVA/hotfailover.html20
-rw-r--r--db/docs/gsg_txn/JAVA/index.html34
-rw-r--r--db/docs/gsg_txn/JAVA/inmem_txnexample_java.html70
-rw-r--r--db/docs/gsg_txn/JAVA/introduction.html46
-rw-r--r--db/docs/gsg_txn/JAVA/isolation.html200
-rw-r--r--db/docs/gsg_txn/JAVA/lockingsubsystem.html30
-rw-r--r--db/docs/gsg_txn/JAVA/logconfig.html26
-rw-r--r--db/docs/gsg_txn/JAVA/logfileremoval.html20
-rw-r--r--db/docs/gsg_txn/JAVA/maxtxns.html24
-rw-r--r--db/docs/gsg_txn/JAVA/nestedtxn.html20
-rw-r--r--db/docs/gsg_txn/JAVA/perftune-intro.html22
-rw-r--r--db/docs/gsg_txn/JAVA/preface.html30
-rw-r--r--db/docs/gsg_txn/JAVA/readmodifywrite.html20
-rw-r--r--db/docs/gsg_txn/JAVA/recovery-intro.html22
-rw-r--r--db/docs/gsg_txn/JAVA/recovery.html26
-rw-r--r--db/docs/gsg_txn/JAVA/reversesplit.html28
-rw-r--r--db/docs/gsg_txn/JAVA/txn_ccursor.html24
-rw-r--r--db/docs/gsg_txn/JAVA/txnconcurrency.html26
-rw-r--r--db/docs/gsg_txn/JAVA/txncursor.html24
-rw-r--r--db/docs/gsg_txn/JAVA/txnexample_java.html78
-rw-r--r--db/docs/gsg_txn/JAVA/txnindices.html24
-rw-r--r--db/docs/gsg_txn/JAVA/txnnowait.html20
-rw-r--r--db/docs/gsg_txn/JAVA/usingtxns.html38
-rw-r--r--db/docs/gsg_txn/JAVA/wrapup.html24
-rw-r--r--db/docs/images/Oracle_BerkeleyDB_clr.bmpbin523208 -> 0 bytes
-rw-r--r--db/docs/images/sleepycat.gifbin5422 -> 0 bytes
-rw-r--r--db/docs/index.html249
-rw-r--r--db/docs/java/allclasses-frame.html22
-rw-r--r--db/docs/java/allclasses-noframe.html22
-rw-r--r--db/docs/java/com/sleepycat/bind/ByteArrayBinding.html28
-rw-r--r--db/docs/java/com/sleepycat/bind/EntityBinding.html24
-rw-r--r--db/docs/java/com/sleepycat/bind/EntryBinding.html22
-rw-r--r--db/docs/java/com/sleepycat/bind/RecordNumberBinding.html28
-rw-r--r--db/docs/java/com/sleepycat/bind/class-use/ByteArrayBinding.html12
-rw-r--r--db/docs/java/com/sleepycat/bind/class-use/EntityBinding.html12
-rw-r--r--db/docs/java/com/sleepycat/bind/class-use/EntryBinding.html24
-rw-r--r--db/docs/java/com/sleepycat/bind/class-use/RecordNumberBinding.html12
-rw-r--r--db/docs/java/com/sleepycat/bind/package-frame.html4
-rw-r--r--db/docs/java/com/sleepycat/bind/package-summary.html12
-rw-r--r--db/docs/java/com/sleepycat/bind/package-tree.html14
-rw-r--r--db/docs/java/com/sleepycat/bind/package-use.html12
-rw-r--r--db/docs/java/com/sleepycat/bind/serial/ClassCatalog.html28
-rw-r--r--db/docs/java/com/sleepycat/bind/serial/SerialBase.html24
-rw-r--r--db/docs/java/com/sleepycat/bind/serial/SerialBinding.html40
-rw-r--r--db/docs/java/com/sleepycat/bind/serial/SerialInput.html100
-rw-r--r--db/docs/java/com/sleepycat/bind/serial/SerialOutput.html60
-rw-r--r--db/docs/java/com/sleepycat/bind/serial/SerialSerialBinding.html62
-rw-r--r--db/docs/java/com/sleepycat/bind/serial/SerialSerialKeyCreator.html48
-rw-r--r--db/docs/java/com/sleepycat/bind/serial/StoredClassCatalog.html40
-rw-r--r--db/docs/java/com/sleepycat/bind/serial/TupleSerialBinding.html52
-rw-r--r--db/docs/java/com/sleepycat/bind/serial/TupleSerialKeyCreator.html32
-rw-r--r--db/docs/java/com/sleepycat/bind/serial/TupleSerialMarshalledBinding.html42
-rw-r--r--db/docs/java/com/sleepycat/bind/serial/TupleSerialMarshalledKeyCreator.html32
-rw-r--r--db/docs/java/com/sleepycat/bind/serial/class-use/ClassCatalog.html38
-rw-r--r--db/docs/java/com/sleepycat/bind/serial/class-use/SerialBase.html12
-rw-r--r--db/docs/java/com/sleepycat/bind/serial/class-use/SerialBinding.html12
-rw-r--r--db/docs/java/com/sleepycat/bind/serial/class-use/SerialInput.html12
-rw-r--r--db/docs/java/com/sleepycat/bind/serial/class-use/SerialOutput.html12
-rw-r--r--db/docs/java/com/sleepycat/bind/serial/class-use/SerialSerialBinding.html12
-rw-r--r--db/docs/java/com/sleepycat/bind/serial/class-use/SerialSerialKeyCreator.html12
-rw-r--r--db/docs/java/com/sleepycat/bind/serial/class-use/StoredClassCatalog.html12
-rw-r--r--db/docs/java/com/sleepycat/bind/serial/class-use/TupleSerialBinding.html12
-rw-r--r--db/docs/java/com/sleepycat/bind/serial/class-use/TupleSerialKeyCreator.html12
-rw-r--r--db/docs/java/com/sleepycat/bind/serial/class-use/TupleSerialMarshalledBinding.html14
-rw-r--r--db/docs/java/com/sleepycat/bind/serial/class-use/TupleSerialMarshalledKeyCreator.html16
-rw-r--r--db/docs/java/com/sleepycat/bind/serial/package-frame.html4
-rw-r--r--db/docs/java/com/sleepycat/bind/serial/package-summary.html12
-rw-r--r--db/docs/java/com/sleepycat/bind/serial/package-tree.html22
-rw-r--r--db/docs/java/com/sleepycat/bind/serial/package-use.html12
-rw-r--r--db/docs/java/com/sleepycat/bind/tuple/BigIntegerBinding.html394
-rw-r--r--db/docs/java/com/sleepycat/bind/tuple/BooleanBinding.html34
-rw-r--r--db/docs/java/com/sleepycat/bind/tuple/ByteBinding.html30
-rw-r--r--db/docs/java/com/sleepycat/bind/tuple/CharacterBinding.html30
-rw-r--r--db/docs/java/com/sleepycat/bind/tuple/DoubleBinding.html30
-rw-r--r--db/docs/java/com/sleepycat/bind/tuple/FloatBinding.html30
-rw-r--r--db/docs/java/com/sleepycat/bind/tuple/IntegerBinding.html30
-rw-r--r--db/docs/java/com/sleepycat/bind/tuple/LongBinding.html30
-rw-r--r--db/docs/java/com/sleepycat/bind/tuple/MarshalledTupleEntry.html12
-rw-r--r--db/docs/java/com/sleepycat/bind/tuple/MarshalledTupleKeyEntity.html20
-rw-r--r--db/docs/java/com/sleepycat/bind/tuple/ShortBinding.html30
-rw-r--r--db/docs/java/com/sleepycat/bind/tuple/SortedDoubleBinding.html30
-rw-r--r--db/docs/java/com/sleepycat/bind/tuple/SortedFloatBinding.html30
-rw-r--r--db/docs/java/com/sleepycat/bind/tuple/StringBinding.html38
-rw-r--r--db/docs/java/com/sleepycat/bind/tuple/TupleBase.html24
-rw-r--r--db/docs/java/com/sleepycat/bind/tuple/TupleBinding.html40
-rw-r--r--db/docs/java/com/sleepycat/bind/tuple/TupleInput.html238
-rw-r--r--db/docs/java/com/sleepycat/bind/tuple/TupleInputBinding.html28
-rw-r--r--db/docs/java/com/sleepycat/bind/tuple/TupleMarshalledBinding.html34
-rw-r--r--db/docs/java/com/sleepycat/bind/tuple/TupleOutput.html140
-rw-r--r--db/docs/java/com/sleepycat/bind/tuple/TupleTupleBinding.html42
-rw-r--r--db/docs/java/com/sleepycat/bind/tuple/TupleTupleKeyCreator.html18
-rw-r--r--db/docs/java/com/sleepycat/bind/tuple/TupleTupleMarshalledBinding.html38
-rw-r--r--db/docs/java/com/sleepycat/bind/tuple/TupleTupleMarshalledKeyCreator.html22
-rw-r--r--db/docs/java/com/sleepycat/bind/tuple/class-use/BigIntegerBinding.html140
-rw-r--r--db/docs/java/com/sleepycat/bind/tuple/class-use/BooleanBinding.html12
-rw-r--r--db/docs/java/com/sleepycat/bind/tuple/class-use/ByteBinding.html12
-rw-r--r--db/docs/java/com/sleepycat/bind/tuple/class-use/CharacterBinding.html12
-rw-r--r--db/docs/java/com/sleepycat/bind/tuple/class-use/DoubleBinding.html12
-rw-r--r--db/docs/java/com/sleepycat/bind/tuple/class-use/FloatBinding.html12
-rw-r--r--db/docs/java/com/sleepycat/bind/tuple/class-use/IntegerBinding.html12
-rw-r--r--db/docs/java/com/sleepycat/bind/tuple/class-use/LongBinding.html12
-rw-r--r--db/docs/java/com/sleepycat/bind/tuple/class-use/MarshalledTupleEntry.html12
-rw-r--r--db/docs/java/com/sleepycat/bind/tuple/class-use/MarshalledTupleKeyEntity.html12
-rw-r--r--db/docs/java/com/sleepycat/bind/tuple/class-use/ShortBinding.html12
-rw-r--r--db/docs/java/com/sleepycat/bind/tuple/class-use/SortedDoubleBinding.html12
-rw-r--r--db/docs/java/com/sleepycat/bind/tuple/class-use/SortedFloatBinding.html12
-rw-r--r--db/docs/java/com/sleepycat/bind/tuple/class-use/StringBinding.html12
-rw-r--r--db/docs/java/com/sleepycat/bind/tuple/class-use/TupleBase.html20
-rw-r--r--db/docs/java/com/sleepycat/bind/tuple/class-use/TupleBinding.html22
-rw-r--r--db/docs/java/com/sleepycat/bind/tuple/class-use/TupleInput.html62
-rw-r--r--db/docs/java/com/sleepycat/bind/tuple/class-use/TupleInputBinding.html12
-rw-r--r--db/docs/java/com/sleepycat/bind/tuple/class-use/TupleMarshalledBinding.html12
-rw-r--r--db/docs/java/com/sleepycat/bind/tuple/class-use/TupleOutput.html111
-rw-r--r--db/docs/java/com/sleepycat/bind/tuple/class-use/TupleTupleBinding.html12
-rw-r--r--db/docs/java/com/sleepycat/bind/tuple/class-use/TupleTupleKeyCreator.html12
-rw-r--r--db/docs/java/com/sleepycat/bind/tuple/class-use/TupleTupleMarshalledBinding.html14
-rw-r--r--db/docs/java/com/sleepycat/bind/tuple/class-use/TupleTupleMarshalledKeyCreator.html12
-rw-r--r--db/docs/java/com/sleepycat/bind/tuple/package-frame.html6
-rw-r--r--db/docs/java/com/sleepycat/bind/tuple/package-summary.html16
-rw-r--r--db/docs/java/com/sleepycat/bind/tuple/package-tree.html20
-rw-r--r--db/docs/java/com/sleepycat/bind/tuple/package-use.html12
-rw-r--r--db/docs/java/com/sleepycat/collections/CurrentTransaction.html30
-rw-r--r--db/docs/java/com/sleepycat/collections/MapEntryParameter.html72
-rw-r--r--db/docs/java/com/sleepycat/collections/PrimaryKeyAssigner.html12
-rw-r--r--db/docs/java/com/sleepycat/collections/StoredCollection.html164
-rw-r--r--db/docs/java/com/sleepycat/collections/StoredCollections.html112
-rw-r--r--db/docs/java/com/sleepycat/collections/StoredContainer.html86
-rw-r--r--db/docs/java/com/sleepycat/collections/StoredEntrySet.html74
-rw-r--r--db/docs/java/com/sleepycat/collections/StoredIterator.html106
-rw-r--r--db/docs/java/com/sleepycat/collections/StoredKeySet.html56
-rw-r--r--db/docs/java/com/sleepycat/collections/StoredList.html178
-rw-r--r--db/docs/java/com/sleepycat/collections/StoredMap.html196
-rw-r--r--db/docs/java/com/sleepycat/collections/StoredSortedEntrySet.html118
-rw-r--r--db/docs/java/com/sleepycat/collections/StoredSortedKeySet.html116
-rw-r--r--db/docs/java/com/sleepycat/collections/StoredSortedMap.html126
-rw-r--r--db/docs/java/com/sleepycat/collections/StoredSortedValueSet.html116
-rw-r--r--db/docs/java/com/sleepycat/collections/StoredValueSet.html58
-rw-r--r--db/docs/java/com/sleepycat/collections/TransactionRunner.html28
-rw-r--r--db/docs/java/com/sleepycat/collections/TransactionWorker.html16
-rw-r--r--db/docs/java/com/sleepycat/collections/TupleSerialFactory.html44
-rw-r--r--db/docs/java/com/sleepycat/collections/class-use/CurrentTransaction.html12
-rw-r--r--db/docs/java/com/sleepycat/collections/class-use/MapEntryParameter.html12
-rw-r--r--db/docs/java/com/sleepycat/collections/class-use/PrimaryKeyAssigner.html12
-rw-r--r--db/docs/java/com/sleepycat/collections/class-use/StoredCollection.html12
-rw-r--r--db/docs/java/com/sleepycat/collections/class-use/StoredCollections.html12
-rw-r--r--db/docs/java/com/sleepycat/collections/class-use/StoredContainer.html14
-rw-r--r--db/docs/java/com/sleepycat/collections/class-use/StoredEntrySet.html12
-rw-r--r--db/docs/java/com/sleepycat/collections/class-use/StoredIterator.html14
-rw-r--r--db/docs/java/com/sleepycat/collections/class-use/StoredKeySet.html12
-rw-r--r--db/docs/java/com/sleepycat/collections/class-use/StoredList.html12
-rw-r--r--db/docs/java/com/sleepycat/collections/class-use/StoredMap.html16
-rw-r--r--db/docs/java/com/sleepycat/collections/class-use/StoredSortedEntrySet.html12
-rw-r--r--db/docs/java/com/sleepycat/collections/class-use/StoredSortedKeySet.html12
-rw-r--r--db/docs/java/com/sleepycat/collections/class-use/StoredSortedMap.html16
-rw-r--r--db/docs/java/com/sleepycat/collections/class-use/StoredSortedValueSet.html12
-rw-r--r--db/docs/java/com/sleepycat/collections/class-use/StoredValueSet.html12
-rw-r--r--db/docs/java/com/sleepycat/collections/class-use/TransactionRunner.html12
-rw-r--r--db/docs/java/com/sleepycat/collections/class-use/TransactionWorker.html12
-rw-r--r--db/docs/java/com/sleepycat/collections/class-use/TupleSerialFactory.html12
-rw-r--r--db/docs/java/com/sleepycat/collections/package-frame.html4
-rw-r--r--db/docs/java/com/sleepycat/collections/package-summary.html12
-rw-r--r--db/docs/java/com/sleepycat/collections/package-tree.html40
-rw-r--r--db/docs/java/com/sleepycat/collections/package-use.html12
-rw-r--r--db/docs/java/com/sleepycat/db/BtreePrefixCalculator.html12
-rw-r--r--db/docs/java/com/sleepycat/db/BtreeStats.html47
-rw-r--r--db/docs/java/com/sleepycat/db/CacheFile.html20
-rw-r--r--db/docs/java/com/sleepycat/db/CacheFilePriority.html26
-rw-r--r--db/docs/java/com/sleepycat/db/CacheFileStats.html30
-rw-r--r--db/docs/java/com/sleepycat/db/CacheStats.html74
-rw-r--r--db/docs/java/com/sleepycat/db/CheckpointConfig.html20
-rw-r--r--db/docs/java/com/sleepycat/db/CompactConfig.html45
-rw-r--r--db/docs/java/com/sleepycat/db/CompactStats.html26
-rw-r--r--db/docs/java/com/sleepycat/db/Cursor.html186
-rw-r--r--db/docs/java/com/sleepycat/db/CursorConfig.html22
-rw-r--r--db/docs/java/com/sleepycat/db/Database.html207
-rw-r--r--db/docs/java/com/sleepycat/db/DatabaseConfig.html199
-rw-r--r--db/docs/java/com/sleepycat/db/DatabaseEntry.html44
-rw-r--r--db/docs/java/com/sleepycat/db/DatabaseException.html50
-rw-r--r--db/docs/java/com/sleepycat/db/DatabaseStats.html20
-rw-r--r--db/docs/java/com/sleepycat/db/DatabaseType.html26
-rw-r--r--db/docs/java/com/sleepycat/db/DeadlockException.html28
-rw-r--r--db/docs/java/com/sleepycat/db/Environment.html293
-rw-r--r--db/docs/java/com/sleepycat/db/EnvironmentConfig.html421
-rw-r--r--db/docs/java/com/sleepycat/db/ErrorHandler.html20
-rw-r--r--db/docs/java/com/sleepycat/db/EventHandler.html263
-rw-r--r--db/docs/java/com/sleepycat/db/EventHandlerAdapter.html449
-rw-r--r--db/docs/java/com/sleepycat/db/EventType.html367
-rw-r--r--db/docs/java/com/sleepycat/db/FeedbackHandler.html16
-rw-r--r--db/docs/java/com/sleepycat/db/HashStats.html47
-rw-r--r--db/docs/java/com/sleepycat/db/Hasher.html12
-rw-r--r--db/docs/java/com/sleepycat/db/JoinConfig.html22
-rw-r--r--db/docs/java/com/sleepycat/db/JoinCursor.html32
-rw-r--r--db/docs/java/com/sleepycat/db/KeyRange.html20
-rw-r--r--db/docs/java/com/sleepycat/db/Lock.html20
-rw-r--r--db/docs/java/com/sleepycat/db/LockDetectMode.html26
-rw-r--r--db/docs/java/com/sleepycat/db/LockMode.html26
-rw-r--r--db/docs/java/com/sleepycat/db/LockNotGrantedException.html28
-rw-r--r--db/docs/java/com/sleepycat/db/LockOperation.html26
-rw-r--r--db/docs/java/com/sleepycat/db/LockRequest.html20
-rw-r--r--db/docs/java/com/sleepycat/db/LockRequestMode.html30
-rw-r--r--db/docs/java/com/sleepycat/db/LockStats.html205
-rw-r--r--db/docs/java/com/sleepycat/db/LogCursor.html48
-rw-r--r--db/docs/java/com/sleepycat/db/LogRecordHandler.html12
-rw-r--r--db/docs/java/com/sleepycat/db/LogSequenceNumber.html20
-rw-r--r--db/docs/java/com/sleepycat/db/LogStats.html26
-rw-r--r--db/docs/java/com/sleepycat/db/MemoryException.html34
-rw-r--r--db/docs/java/com/sleepycat/db/MessageHandler.html16
-rw-r--r--db/docs/java/com/sleepycat/db/MultipleDataEntry.html18
-rw-r--r--db/docs/java/com/sleepycat/db/MultipleEntry.html18
-rw-r--r--db/docs/java/com/sleepycat/db/MultipleKeyDataEntry.html18
-rw-r--r--db/docs/java/com/sleepycat/db/MultipleKeyNIODataEntry.html22
-rw-r--r--db/docs/java/com/sleepycat/db/MultipleNIODataEntry.html22
-rw-r--r--db/docs/java/com/sleepycat/db/MultipleRecnoDataEntry.html18
-rw-r--r--db/docs/java/com/sleepycat/db/MultipleRecnoNIODataEntry.html22
-rw-r--r--db/docs/java/com/sleepycat/db/MutexStats.html26
-rw-r--r--db/docs/java/com/sleepycat/db/OperationStatus.html26
-rw-r--r--db/docs/java/com/sleepycat/db/PanicHandler.html12
-rw-r--r--db/docs/java/com/sleepycat/db/PreparedTransaction.html20
-rw-r--r--db/docs/java/com/sleepycat/db/QueueStats.html24
-rw-r--r--db/docs/java/com/sleepycat/db/RecordNumberAppender.html12
-rw-r--r--db/docs/java/com/sleepycat/db/RecoveryOperation.html26
-rw-r--r--db/docs/java/com/sleepycat/db/ReplicationConfig.html28
-rw-r--r--db/docs/java/com/sleepycat/db/ReplicationDuplicateMasterException.html28
-rw-r--r--db/docs/java/com/sleepycat/db/ReplicationHandleDeadException.html28
-rw-r--r--db/docs/java/com/sleepycat/db/ReplicationHoldElectionException.html28
-rw-r--r--db/docs/java/com/sleepycat/db/ReplicationHostAddress.html116
-rw-r--r--db/docs/java/com/sleepycat/db/ReplicationJoinFailureException.html32
-rw-r--r--db/docs/java/com/sleepycat/db/ReplicationLeaseExpiredException.html218
-rw-r--r--db/docs/java/com/sleepycat/db/ReplicationLeaseTimeoutException.html218
-rw-r--r--db/docs/java/com/sleepycat/db/ReplicationLockoutException.html32
-rw-r--r--db/docs/java/com/sleepycat/db/ReplicationManagerAckPolicy.html26
-rw-r--r--db/docs/java/com/sleepycat/db/ReplicationManagerStartPolicy.html55
-rw-r--r--db/docs/java/com/sleepycat/db/ReplicationManagerStats.html338
-rw-r--r--db/docs/java/com/sleepycat/db/ReplicationSiteUnavailableException.html32
-rw-r--r--db/docs/java/com/sleepycat/db/ReplicationStats.html51
-rw-r--r--db/docs/java/com/sleepycat/db/ReplicationStatus.html50
-rw-r--r--db/docs/java/com/sleepycat/db/ReplicationTimeoutType.html76
-rw-r--r--db/docs/java/com/sleepycat/db/ReplicationTransport.html12
-rw-r--r--db/docs/java/com/sleepycat/db/RunRecoveryException.html28
-rw-r--r--db/docs/java/com/sleepycat/db/SecondaryConfig.html86
-rw-r--r--db/docs/java/com/sleepycat/db/SecondaryCursor.html108
-rw-r--r--db/docs/java/com/sleepycat/db/SecondaryDatabase.html46
-rw-r--r--db/docs/java/com/sleepycat/db/SecondaryKeyCreator.html16
-rw-r--r--db/docs/java/com/sleepycat/db/SecondaryMultiKeyCreator.html306
-rw-r--r--db/docs/java/com/sleepycat/db/Sequence.html24
-rw-r--r--db/docs/java/com/sleepycat/db/SequenceConfig.html22
-rw-r--r--db/docs/java/com/sleepycat/db/SequenceStats.html26
-rw-r--r--db/docs/java/com/sleepycat/db/StatsConfig.html20
-rw-r--r--db/docs/java/com/sleepycat/db/Transaction.html84
-rw-r--r--db/docs/java/com/sleepycat/db/TransactionConfig.html154
-rw-r--r--db/docs/java/com/sleepycat/db/TransactionStats.Active.html61
-rw-r--r--db/docs/java/com/sleepycat/db/TransactionStats.html31
-rw-r--r--db/docs/java/com/sleepycat/db/UpdateConflictException.html219
-rw-r--r--db/docs/java/com/sleepycat/db/VerboseConfig.html387
-rw-r--r--db/docs/java/com/sleepycat/db/VerifyConfig.html24
-rw-r--r--db/docs/java/com/sleepycat/db/VersionMismatchException.html28
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/BtreePrefixCalculator.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/BtreeStats.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/CacheFile.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/CacheFilePriority.html44
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/CacheFileStats.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/CacheStats.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/CheckpointConfig.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/CompactConfig.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/CompactStats.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/Cursor.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/CursorConfig.html36
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/Database.html32
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/DatabaseConfig.html38
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/DatabaseEntry.html101
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/DatabaseException.html194
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/DatabaseStats.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/DatabaseType.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/DeadlockException.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/Environment.html20
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/EnvironmentConfig.html16
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/ErrorHandler.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/EventHandler.html30
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/EventHandlerAdapter.html140
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/EventType.html237
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/FeedbackHandler.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/HashStats.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/Hasher.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/JoinConfig.html14
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/JoinCursor.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/KeyRange.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/Lock.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/LockDetectMode.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/LockMode.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/LockNotGrantedException.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/LockOperation.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/LockRequest.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/LockRequestMode.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/LockStats.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/LogCursor.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/LogRecordHandler.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/LogSequenceNumber.html14
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/LogStats.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/MemoryException.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/MessageHandler.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/MultipleDataEntry.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/MultipleEntry.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/MultipleKeyDataEntry.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/MultipleKeyNIODataEntry.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/MultipleNIODataEntry.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/MultipleRecnoDataEntry.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/MultipleRecnoNIODataEntry.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/MutexStats.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/OperationStatus.html21
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/PanicHandler.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/PreparedTransaction.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/QueueStats.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/RecordNumberAppender.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/RecoveryOperation.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/ReplicationConfig.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/ReplicationDuplicateMasterException.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/ReplicationHandleDeadException.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/ReplicationHoldElectionException.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/ReplicationHostAddress.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/ReplicationJoinFailureException.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/ReplicationLeaseExpiredException.html140
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/ReplicationLeaseTimeoutException.html140
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/ReplicationLockoutException.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/ReplicationManagerAckPolicy.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/ReplicationManagerStartPolicy.html20
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/ReplicationManagerStats.html177
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/ReplicationSiteUnavailableException.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/ReplicationStats.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/ReplicationStatus.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/ReplicationTimeoutType.html30
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/ReplicationTransport.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/RunRecoveryException.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/SecondaryConfig.html20
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/SecondaryCursor.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/SecondaryDatabase.html27
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/SecondaryKeyCreator.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/SecondaryMultiKeyCreator.html195
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/Sequence.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/SequenceConfig.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/SequenceStats.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/StatsConfig.html20
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/Transaction.html50
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/TransactionConfig.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/TransactionStats.Active.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/TransactionStats.html12
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/UpdateConflictException.html140
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/VerboseConfig.html253
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/VerifyConfig.html18
-rw-r--r--db/docs/java/com/sleepycat/db/class-use/VersionMismatchException.html12
-rw-r--r--db/docs/java/com/sleepycat/db/package-frame.html20
-rw-r--r--db/docs/java/com/sleepycat/db/package-summary.html48
-rw-r--r--db/docs/java/com/sleepycat/db/package-tree.html43
-rw-r--r--db/docs/java/com/sleepycat/db/package-use.html41
-rw-r--r--db/docs/java/com/sleepycat/util/ExceptionUnwrapper.html36
-rw-r--r--db/docs/java/com/sleepycat/util/ExceptionWrapper.html20
-rw-r--r--db/docs/java/com/sleepycat/util/FastInputStream.html58
-rw-r--r--db/docs/java/com/sleepycat/util/FastOutputStream.html72
-rw-r--r--db/docs/java/com/sleepycat/util/IOExceptionWrapper.html46
-rw-r--r--db/docs/java/com/sleepycat/util/PackedInteger.html165
-rw-r--r--db/docs/java/com/sleepycat/util/RuntimeExceptionWrapper.html46
-rw-r--r--db/docs/java/com/sleepycat/util/UtfOps.html64
-rw-r--r--db/docs/java/com/sleepycat/util/class-use/ExceptionUnwrapper.html12
-rw-r--r--db/docs/java/com/sleepycat/util/class-use/ExceptionWrapper.html12
-rw-r--r--db/docs/java/com/sleepycat/util/class-use/FastInputStream.html12
-rw-r--r--db/docs/java/com/sleepycat/util/class-use/FastOutputStream.html14
-rw-r--r--db/docs/java/com/sleepycat/util/class-use/IOExceptionWrapper.html12
-rw-r--r--db/docs/java/com/sleepycat/util/class-use/PackedInteger.html12
-rw-r--r--db/docs/java/com/sleepycat/util/class-use/RuntimeExceptionWrapper.html12
-rw-r--r--db/docs/java/com/sleepycat/util/class-use/UtfOps.html12
-rw-r--r--db/docs/java/com/sleepycat/util/package-frame.html4
-rw-r--r--db/docs/java/com/sleepycat/util/package-summary.html12
-rw-r--r--db/docs/java/com/sleepycat/util/package-tree.html26
-rw-r--r--db/docs/java/com/sleepycat/util/package-use.html12
-rw-r--r--db/docs/java/constant-values.html48
-rw-r--r--db/docs/java/deprecated-list.html82
-rw-r--r--db/docs/java/help-doc.html12
-rw-r--r--db/docs/java/index-all.html455
-rw-r--r--db/docs/java/index.html4
-rw-r--r--db/docs/java/overview-frame.html6
-rw-r--r--db/docs/java/overview-summary.html12
-rw-r--r--db/docs/java/overview-tree.html83
-rw-r--r--db/docs/java/packages.html37
-rw-r--r--db/docs/java/serialized-form.html49
-rw-r--r--db/docs/license/license_db.html111
-rw-r--r--db/docs/license/license_xml.html184
-rw-r--r--db/docs/ref/am/close.html5
-rw-r--r--db/docs/ref/am/count.html7
-rw-r--r--db/docs/ref/am/curclose.html7
-rw-r--r--db/docs/ref/am/curdel.html9
-rw-r--r--db/docs/ref/am/curdup.html9
-rw-r--r--db/docs/ref/am/curget.html13
-rw-r--r--db/docs/ref/am/curput.html11
-rw-r--r--db/docs/ref/am/cursor.html30
-rw-r--r--db/docs/ref/am/delete.html5
-rw-r--r--db/docs/ref/am/error.html61
-rw-r--r--db/docs/ref/am/get.html5
-rw-r--r--db/docs/ref/am/join.html5
-rw-r--r--db/docs/ref/am/open.html5
-rw-r--r--db/docs/ref/am/opensub.html64
-rw-r--r--db/docs/ref/am/ops.html10
-rw-r--r--db/docs/ref/am/partial.html134
-rw-r--r--db/docs/ref/am/put.html5
-rw-r--r--db/docs/ref/am/second.html17
-rw-r--r--db/docs/ref/am/second.javas5
-rw-r--r--db/docs/ref/am/stability.html49
-rw-r--r--db/docs/ref/am/stat.html5
-rw-r--r--db/docs/ref/am/sync.html5
-rw-r--r--db/docs/ref/am/truncate.html5
-rw-r--r--db/docs/ref/am/upgrade.html5
-rw-r--r--db/docs/ref/am/verify.html5
-rw-r--r--db/docs/ref/am_conf/bt_compare.html9
-rw-r--r--db/docs/ref/am_conf/bt_minkey.html5
-rw-r--r--db/docs/ref/am_conf/bt_prefix.html5
-rw-r--r--db/docs/ref/am_conf/bt_recnum.html9
-rw-r--r--db/docs/ref/am_conf/byteorder.html5
-rw-r--r--db/docs/ref/am_conf/cachesize.html5
-rw-r--r--db/docs/ref/am_conf/dup.html11
-rw-r--r--db/docs/ref/am_conf/extentsize.html5
-rw-r--r--db/docs/ref/am_conf/h_ffactor.html5
-rw-r--r--db/docs/ref/am_conf/h_hash.html5
-rw-r--r--db/docs/ref/am_conf/h_nelem.html5
-rw-r--r--db/docs/ref/am_conf/intro.html5
-rw-r--r--db/docs/ref/am_conf/logrec.html7
-rw-r--r--db/docs/ref/am_conf/malloc.html5
-rw-r--r--db/docs/ref/am_conf/pagesize.html5
-rw-r--r--db/docs/ref/am_conf/re_source.html5
-rw-r--r--db/docs/ref/am_conf/recno.html5
-rw-r--r--db/docs/ref/am_conf/renumber.html7
-rw-r--r--db/docs/ref/am_conf/select.html5
-rw-r--r--db/docs/ref/am_misc/align.html5
-rw-r--r--db/docs/ref/am_misc/dbsizes.html5
-rw-r--r--db/docs/ref/am_misc/diskspace.html5
-rw-r--r--db/docs/ref/am_misc/error.html5
-rw-r--r--db/docs/ref/am_misc/faq.html5
-rw-r--r--db/docs/ref/am_misc/get_bulk.html17
-rw-r--r--db/docs/ref/am_misc/partial.html5
-rw-r--r--db/docs/ref/am_misc/perm.html7
-rw-r--r--db/docs/ref/am_misc/stability.html5
-rw-r--r--db/docs/ref/am_misc/struct.html5
-rw-r--r--db/docs/ref/am_misc/tune.html5
-rw-r--r--db/docs/ref/apprec/auto.html5
-rw-r--r--db/docs/ref/apprec/config.html5
-rw-r--r--db/docs/ref/apprec/def.html36
-rw-r--r--db/docs/ref/apprec/intro.html11
-rw-r--r--db/docs/ref/arch/apis.html5
-rw-r--r--db/docs/ref/arch/bigpic.html5
-rw-r--r--db/docs/ref/arch/progmodel.html5
-rw-r--r--db/docs/ref/arch/script.html5
-rw-r--r--db/docs/ref/arch/utilities.html5
-rw-r--r--db/docs/ref/build_brew/intro.html108
-rw-r--r--db/docs/ref/build_s60/intro.html68
-rw-r--r--db/docs/ref/build_unix/aix.html5
-rw-r--r--db/docs/ref/build_unix/conf.html37
-rw-r--r--db/docs/ref/build_unix/flags.html7
-rw-r--r--db/docs/ref/build_unix/freebsd.html5
-rw-r--r--db/docs/ref/build_unix/hpux.html5
-rw-r--r--db/docs/ref/build_unix/install.html7
-rw-r--r--db/docs/ref/build_unix/intro.html11
-rw-r--r--db/docs/ref/build_unix/irix.html5
-rw-r--r--db/docs/ref/build_unix/linux.html5
-rw-r--r--db/docs/ref/build_unix/macosx.html5
-rw-r--r--db/docs/ref/build_unix/notes.html5
-rw-r--r--db/docs/ref/build_unix/osf1.html5
-rw-r--r--db/docs/ref/build_unix/qnx.html5
-rw-r--r--db/docs/ref/build_unix/sco.html5
-rw-r--r--db/docs/ref/build_unix/shlib.html7
-rw-r--r--db/docs/ref/build_unix/small.html21
-rw-r--r--db/docs/ref/build_unix/solaris.html12
-rw-r--r--db/docs/ref/build_unix/sunos.html5
-rw-r--r--db/docs/ref/build_unix/test.html5
-rw-r--r--db/docs/ref/build_unix/ultrix.html5
-rw-r--r--db/docs/ref/build_vxworks/faq.html5
-rw-r--r--db/docs/ref/build_vxworks/intro.html15
-rw-r--r--db/docs/ref/build_vxworks/introae.html5
-rw-r--r--db/docs/ref/build_vxworks/notes.html5
-rw-r--r--db/docs/ref/build_win/faq.html17
-rw-r--r--db/docs/ref/build_win/intro.html21
-rw-r--r--db/docs/ref/build_win/notes.html5
-rw-r--r--db/docs/ref/build_win/small.html9
-rw-r--r--db/docs/ref/build_win/test.html5
-rw-r--r--db/docs/ref/build_win/unicode.html40
-rw-r--r--db/docs/ref/build_wince/faq.html28
-rw-r--r--db/docs/ref/build_wince/intro.html84
-rw-r--r--db/docs/ref/build_wince/notes.html34
-rw-r--r--db/docs/ref/cam/app.html5
-rw-r--r--db/docs/ref/cam/fail.html5
-rw-r--r--db/docs/ref/cam/intro.html11
-rw-r--r--db/docs/ref/changelog/2.1.html84
-rw-r--r--db/docs/ref/changelog/2.2.html348
-rw-r--r--db/docs/ref/changelog/2.3.10.html27
-rw-r--r--db/docs/ref/changelog/2.3.11.html22
-rw-r--r--db/docs/ref/changelog/2.3.12.html66
-rw-r--r--db/docs/ref/changelog/2.3.14.html67
-rw-r--r--db/docs/ref/changelog/2.3.16.html165
-rw-r--r--db/docs/ref/changelog/2.3.5.html36
-rw-r--r--db/docs/ref/changelog/2.3.html184
-rw-r--r--db/docs/ref/changelog/2.4.10.html473
-rw-r--r--db/docs/ref/changelog/2.4.14.html198
-rw-r--r--db/docs/ref/changelog/2.5.9.html644
-rw-r--r--db/docs/ref/changelog/2.6.4.html201
-rw-r--r--db/docs/ref/changelog/2.6.5.html17
-rw-r--r--db/docs/ref/changelog/2.6.6.html80
-rw-r--r--db/docs/ref/changelog/2.6.7.html55
-rw-r--r--db/docs/ref/changelog/2.7.1.html40
-rw-r--r--db/docs/ref/changelog/2.7.3.html59
-rw-r--r--db/docs/ref/changelog/2.7.4.html102
-rw-r--r--db/docs/ref/changelog/2.7.5.html38
-rw-r--r--db/docs/ref/changelog/2.7.7.html51
-rw-r--r--db/docs/ref/changelog/3.0.55.html945
-rw-r--r--db/docs/ref/changelog/3.1.14.html300
-rw-r--r--db/docs/ref/changelog/3.1.17.html213
-rw-r--r--db/docs/ref/changelog/3.2.9.html324
-rw-r--r--db/docs/ref/changelog/3.3.11.html295
-rw-r--r--db/docs/ref/changelog/4.0.14.html246
-rw-r--r--db/docs/ref/changelog/4.1.24.html409
-rw-r--r--db/docs/ref/changelog/4.1.25.html16
-rw-r--r--db/docs/ref/changelog/4.2.52.html811
-rw-r--r--db/docs/ref/changelog/4.3.29.html524
-rw-r--r--db/docs/ref/changelog/4.4.16.html444
-rw-r--r--db/docs/ref/changelog/4.4.20.html51
-rw-r--r--db/docs/ref/changelog/4.5.20.html322
-rw-r--r--db/docs/ref/changelog/4.6.html366
-rw-r--r--db/docs/ref/changelog/toc.html58
-rw-r--r--db/docs/ref/debug/common.html148
-rw-r--r--db/docs/ref/debug/compile.html5
-rw-r--r--db/docs/ref/debug/intro.html11
-rw-r--r--db/docs/ref/debug/printlog.html11
-rw-r--r--db/docs/ref/debug/runtime.html19
-rw-r--r--db/docs/ref/distrib/layout.html14
-rw-r--r--db/docs/ref/distrib/port.html5
-rw-r--r--db/docs/ref/dumpload/format.html5
-rw-r--r--db/docs/ref/dumpload/text.html5
-rw-r--r--db/docs/ref/dumpload/utility.html5
-rw-r--r--db/docs/ref/env/create.html5
-rw-r--r--db/docs/ref/env/db_config.html5
-rw-r--r--db/docs/ref/env/encrypt.html11
-rw-r--r--db/docs/ref/env/error.html5
-rw-r--r--db/docs/ref/env/faq.html5
-rw-r--r--db/docs/ref/env/intro.html5
-rw-r--r--db/docs/ref/env/naming.html5
-rw-r--r--db/docs/ref/env/open.html5
-rw-r--r--db/docs/ref/env/region.html5
-rw-r--r--db/docs/ref/env/remote.html5
-rw-r--r--db/docs/ref/env/security.html5
-rw-r--r--db/docs/ref/ext/mod.html18
-rw-r--r--db/docs/ref/ext/perl.html13
-rw-r--r--db/docs/ref/ext/php.html5
-rw-r--r--db/docs/ref/install/file.html5
-rw-r--r--db/docs/ref/install/multiple.html5
-rw-r--r--db/docs/ref/intro/data.html5
-rw-r--r--db/docs/ref/intro/dbis.html5
-rw-r--r--db/docs/ref/intro/dbisnot.html5
-rw-r--r--db/docs/ref/intro/distrib.html5
-rw-r--r--db/docs/ref/intro/need.html5
-rw-r--r--db/docs/ref/intro/products.html31
-rw-r--r--db/docs/ref/intro/terrain.html5
-rw-r--r--db/docs/ref/intro/what.html5
-rw-r--r--db/docs/ref/intro/where.html5
-rw-r--r--db/docs/ref/java/compat.html22
-rw-r--r--db/docs/ref/java/conf.html5
-rw-r--r--db/docs/ref/java/faq.html11
-rw-r--r--db/docs/ref/java/program.html9
-rw-r--r--db/docs/ref/lock/am_conv.html11
-rw-r--r--db/docs/ref/lock/cam_conv.html5
-rw-r--r--db/docs/ref/lock/config.html5
-rw-r--r--db/docs/ref/lock/dead.html5
-rw-r--r--db/docs/ref/lock/deaddbg.html5
-rw-r--r--db/docs/ref/lock/intro.html11
-rw-r--r--db/docs/ref/lock/max.html5
-rw-r--r--db/docs/ref/lock/nondb.html5
-rw-r--r--db/docs/ref/lock/notxn.html5
-rw-r--r--db/docs/ref/lock/page.html5
-rw-r--r--db/docs/ref/lock/stdmode.html5
-rw-r--r--db/docs/ref/lock/timeout.html5
-rw-r--r--db/docs/ref/lock/twopl.html5
-rw-r--r--db/docs/ref/log/config.html5
-rw-r--r--db/docs/ref/log/intro.html11
-rw-r--r--db/docs/ref/log/limits.html5
-rw-r--r--db/docs/ref/mp/config.html5
-rw-r--r--db/docs/ref/mp/intro.html24
-rw-r--r--db/docs/ref/pindex.src1
-rw-r--r--db/docs/ref/program/appsignals.html5
-rw-r--r--db/docs/ref/program/byteorder.html31
-rw-r--r--db/docs/ref/program/cache.html5
-rw-r--r--db/docs/ref/program/compatible.html5
-rw-r--r--db/docs/ref/program/copy.html5
-rw-r--r--db/docs/ref/program/dbsizes.html45
-rw-r--r--db/docs/ref/program/diskspace.html145
-rw-r--r--db/docs/ref/program/environ.html5
-rw-r--r--db/docs/ref/program/errorret.html5
-rw-r--r--db/docs/ref/program/extending.html242
-rw-r--r--db/docs/ref/program/faq.html5
-rw-r--r--db/docs/ref/program/mt.html5
-rw-r--r--db/docs/ref/program/namespace.html5
-rw-r--r--db/docs/ref/program/ram.html5
-rw-r--r--db/docs/ref/program/recimp.html49
-rw-r--r--db/docs/ref/program/runtime.html5
-rw-r--r--db/docs/ref/program/scope.html15
-rw-r--r--db/docs/ref/program/version.html45
-rw-r--r--db/docs/ref/refs/bdb_usenix.html1120
-rw-r--r--db/docs/ref/refs/refs.html13
-rw-r--r--db/docs/ref/refs/witold.html5
-rw-r--r--db/docs/ref/rep/app.html14
-rw-r--r--db/docs/ref/rep/base_meth.html13
-rw-r--r--db/docs/ref/rep/bulk.html5
-rw-r--r--db/docs/ref/rep/comm.html15
-rw-r--r--db/docs/ref/rep/elect.html51
-rw-r--r--db/docs/ref/rep/ex.html7
-rw-r--r--db/docs/ref/rep/ex_comm.html5
-rw-r--r--db/docs/ref/rep/ex_rq.html5
-rw-r--r--db/docs/ref/rep/faq.html5
-rw-r--r--db/docs/ref/rep/id.html5
-rw-r--r--db/docs/ref/rep/init.html5
-rw-r--r--db/docs/ref/rep/intro.html15
-rw-r--r--db/docs/ref/rep/mastersync.html15
-rw-r--r--db/docs/ref/rep/mgr_meth.html5
-rw-r--r--db/docs/ref/rep/newsite.html5
-rw-r--r--db/docs/ref/rep/partition.html5
-rw-r--r--db/docs/ref/rep/pri.html5
-rw-r--r--db/docs/ref/rep/trans.html5
-rw-r--r--db/docs/ref/rpc/client.html5
-rw-r--r--db/docs/ref/rpc/faq.html5
-rw-r--r--db/docs/ref/rpc/intro.html11
-rw-r--r--db/docs/ref/rpc/server.html5
-rw-r--r--db/docs/ref/sequence/intro.html11
-rw-r--r--db/docs/ref/simple_tut/example.txt73
-rw-r--r--db/docs/ref/tcl/error.html5
-rw-r--r--db/docs/ref/tcl/faq.html5
-rw-r--r--db/docs/ref/tcl/intro.html13
-rw-r--r--db/docs/ref/tcl/program.html5
-rw-r--r--db/docs/ref/tcl/using.html5
-rw-r--r--db/docs/ref/test/faq.html5
-rw-r--r--db/docs/ref/test/run.html11
-rw-r--r--db/docs/ref/toc.html85
-rw-r--r--db/docs/ref/transapp/admin.html5
-rw-r--r--db/docs/ref/transapp/app.html5
-rw-r--r--db/docs/ref/transapp/archival.html5
-rw-r--r--db/docs/ref/transapp/atomicity.html5
-rw-r--r--db/docs/ref/transapp/checkpoint.html7
-rw-r--r--db/docs/ref/transapp/cursor.html7
-rw-r--r--db/docs/ref/transapp/data_open.html5
-rw-r--r--db/docs/ref/transapp/deadlock.html5
-rw-r--r--db/docs/ref/transapp/env_open.html5
-rw-r--r--db/docs/ref/transapp/fail.html5
-rw-r--r--db/docs/ref/transapp/faq.html5
-rw-r--r--db/docs/ref/transapp/filesys.html5
-rw-r--r--db/docs/ref/transapp/hotfail.html5
-rw-r--r--db/docs/ref/transapp/inc.html5
-rw-r--r--db/docs/ref/transapp/intro.html11
-rw-r--r--db/docs/ref/transapp/logfile.html5
-rw-r--r--db/docs/ref/transapp/nested.html5
-rw-r--r--db/docs/ref/transapp/put.html5
-rw-r--r--db/docs/ref/transapp/read.html5
-rw-r--r--db/docs/ref/transapp/reclimit.html5
-rw-r--r--db/docs/ref/transapp/recovery.html5
-rw-r--r--db/docs/ref/transapp/term.html5
-rw-r--r--db/docs/ref/transapp/throughput.html5
-rw-r--r--db/docs/ref/transapp/transapp.cs2
-rw-r--r--db/docs/ref/transapp/transapp.txt492
-rw-r--r--db/docs/ref/transapp/tune.html5
-rw-r--r--db/docs/ref/transapp/why.html5
-rw-r--r--db/docs/ref/transapp/writetest.txt100
-rw-r--r--db/docs/ref/txn/config.html5
-rw-r--r--db/docs/ref/txn/intro.html11
-rw-r--r--db/docs/ref/txn/limits.html5
-rw-r--r--db/docs/ref/txn/nested.html66
-rw-r--r--db/docs/ref/txn/other.html67
-rw-r--r--db/docs/ref/upgrade.2.0/convert.html7
-rw-r--r--db/docs/ref/upgrade.2.0/disk.html5
-rw-r--r--db/docs/ref/upgrade.2.0/intro.html11
-rw-r--r--db/docs/ref/upgrade.2.0/system.html5
-rw-r--r--db/docs/ref/upgrade.2.0/toc.html11
-rw-r--r--db/docs/ref/upgrade.3.0/close.html5
-rw-r--r--db/docs/ref/upgrade.3.0/cxx.html5
-rw-r--r--db/docs/ref/upgrade.3.0/db.html5
-rw-r--r--db/docs/ref/upgrade.3.0/db_cxx.html5
-rw-r--r--db/docs/ref/upgrade.3.0/dbenv.html5
-rw-r--r--db/docs/ref/upgrade.3.0/dbenv_cxx.html5
-rw-r--r--db/docs/ref/upgrade.3.0/dbinfo.html5
-rw-r--r--db/docs/ref/upgrade.3.0/disk.html5
-rw-r--r--db/docs/ref/upgrade.3.0/eacces.html5
-rw-r--r--db/docs/ref/upgrade.3.0/eagain.html5
-rw-r--r--db/docs/ref/upgrade.3.0/envopen.html5
-rw-r--r--db/docs/ref/upgrade.3.0/func.html5
-rw-r--r--db/docs/ref/upgrade.3.0/intro.html5
-rw-r--r--db/docs/ref/upgrade.3.0/java.html5
-rw-r--r--db/docs/ref/upgrade.3.0/join.html5
-rw-r--r--db/docs/ref/upgrade.3.0/jump_set.html5
-rw-r--r--db/docs/ref/upgrade.3.0/lock_detect.html5
-rw-r--r--db/docs/ref/upgrade.3.0/lock_notheld.html5
-rw-r--r--db/docs/ref/upgrade.3.0/lock_put.html5
-rw-r--r--db/docs/ref/upgrade.3.0/lock_stat.html5
-rw-r--r--db/docs/ref/upgrade.3.0/log_register.html5
-rw-r--r--db/docs/ref/upgrade.3.0/log_stat.html5
-rw-r--r--db/docs/ref/upgrade.3.0/memp_stat.html5
-rw-r--r--db/docs/ref/upgrade.3.0/open.html5
-rw-r--r--db/docs/ref/upgrade.3.0/rmw.html5
-rw-r--r--db/docs/ref/upgrade.3.0/stat.html5
-rw-r--r--db/docs/ref/upgrade.3.0/toc.html11
-rw-r--r--db/docs/ref/upgrade.3.0/txn_begin.html5
-rw-r--r--db/docs/ref/upgrade.3.0/txn_commit.html5
-rw-r--r--db/docs/ref/upgrade.3.0/txn_stat.html5
-rw-r--r--db/docs/ref/upgrade.3.0/value_set.html5
-rw-r--r--db/docs/ref/upgrade.3.0/xa.html5
-rw-r--r--db/docs/ref/upgrade.3.1/btstat.html5
-rw-r--r--db/docs/ref/upgrade.3.1/config.html5
-rw-r--r--db/docs/ref/upgrade.3.1/disk.html5
-rw-r--r--db/docs/ref/upgrade.3.1/dup.html5
-rw-r--r--db/docs/ref/upgrade.3.1/env.html5
-rw-r--r--db/docs/ref/upgrade.3.1/intro.html5
-rw-r--r--db/docs/ref/upgrade.3.1/log_register.html5
-rw-r--r--db/docs/ref/upgrade.3.1/logalloc.html5
-rw-r--r--db/docs/ref/upgrade.3.1/memp_register.html5
-rw-r--r--db/docs/ref/upgrade.3.1/put.html5
-rw-r--r--db/docs/ref/upgrade.3.1/set_feedback.html5
-rw-r--r--db/docs/ref/upgrade.3.1/set_paniccall.html5
-rw-r--r--db/docs/ref/upgrade.3.1/set_tx_recover.html5
-rw-r--r--db/docs/ref/upgrade.3.1/sysmem.html5
-rw-r--r--db/docs/ref/upgrade.3.1/tcl.html5
-rw-r--r--db/docs/ref/upgrade.3.1/tmp.html5
-rw-r--r--db/docs/ref/upgrade.3.1/toc.html11
-rw-r--r--db/docs/ref/upgrade.3.1/txn_check.html5
-rw-r--r--db/docs/ref/upgrade.3.2/callback.html5
-rw-r--r--db/docs/ref/upgrade.3.2/db_dump.html5
-rw-r--r--db/docs/ref/upgrade.3.2/disk.html5
-rw-r--r--db/docs/ref/upgrade.3.2/handle.html5
-rw-r--r--db/docs/ref/upgrade.3.2/incomplete.html5
-rw-r--r--db/docs/ref/upgrade.3.2/intro.html5
-rw-r--r--db/docs/ref/upgrade.3.2/mutexlock.html5
-rw-r--r--db/docs/ref/upgrade.3.2/notfound.html5
-rw-r--r--db/docs/ref/upgrade.3.2/renumber.html5
-rw-r--r--db/docs/ref/upgrade.3.2/set_flags.html5
-rw-r--r--db/docs/ref/upgrade.3.2/toc.html11
-rw-r--r--db/docs/ref/upgrade.3.2/tx_recover.html5
-rw-r--r--db/docs/ref/upgrade.3.3/alloc.html5
-rw-r--r--db/docs/ref/upgrade.3.3/bigfile.html5
-rw-r--r--db/docs/ref/upgrade.3.3/conflict.html5
-rw-r--r--db/docs/ref/upgrade.3.3/disk.html5
-rw-r--r--db/docs/ref/upgrade.3.3/getswap.html5
-rw-r--r--db/docs/ref/upgrade.3.3/gettype.html5
-rw-r--r--db/docs/ref/upgrade.3.3/intro.html5
-rw-r--r--db/docs/ref/upgrade.3.3/memp_fget.html5
-rw-r--r--db/docs/ref/upgrade.3.3/rpc.html5
-rw-r--r--db/docs/ref/upgrade.3.3/shared.html5
-rw-r--r--db/docs/ref/upgrade.3.3/toc.html11
-rw-r--r--db/docs/ref/upgrade.3.3/txn_prepare.html5
-rw-r--r--db/docs/ref/upgrade.4.0/asr.html5
-rw-r--r--db/docs/ref/upgrade.4.0/cxx.html5
-rw-r--r--db/docs/ref/upgrade.4.0/deadlock.html5
-rw-r--r--db/docs/ref/upgrade.4.0/disk.html5
-rw-r--r--db/docs/ref/upgrade.4.0/env.html5
-rw-r--r--db/docs/ref/upgrade.4.0/intro.html5
-rw-r--r--db/docs/ref/upgrade.4.0/java.html7
-rw-r--r--db/docs/ref/upgrade.4.0/lock.html5
-rw-r--r--db/docs/ref/upgrade.4.0/lock_id_free.html5
-rw-r--r--db/docs/ref/upgrade.4.0/log.html5
-rw-r--r--db/docs/ref/upgrade.4.0/mp.html9
-rw-r--r--db/docs/ref/upgrade.4.0/rpc.html5
-rw-r--r--db/docs/ref/upgrade.4.0/set_lk_max.html5
-rw-r--r--db/docs/ref/upgrade.4.0/toc.html11
-rw-r--r--db/docs/ref/upgrade.4.0/txn.html5
-rw-r--r--db/docs/ref/upgrade.4.1/app_dispatch.html5
-rw-r--r--db/docs/ref/upgrade.4.1/checkpoint.html5
-rw-r--r--db/docs/ref/upgrade.4.1/cxx.html5
-rw-r--r--db/docs/ref/upgrade.4.1/disk.html13
-rw-r--r--db/docs/ref/upgrade.4.1/excl.html5
-rw-r--r--db/docs/ref/upgrade.4.1/fop.html5
-rw-r--r--db/docs/ref/upgrade.4.1/hash_nelem.html5
-rw-r--r--db/docs/ref/upgrade.4.1/incomplete.html5
-rw-r--r--db/docs/ref/upgrade.4.1/intro.html5
-rw-r--r--db/docs/ref/upgrade.4.1/java.html5
-rw-r--r--db/docs/ref/upgrade.4.1/log_register.html5
-rw-r--r--db/docs/ref/upgrade.4.1/log_stat.html5
-rw-r--r--db/docs/ref/upgrade.4.1/memp_sync.html5
-rw-r--r--db/docs/ref/upgrade.4.1/toc.html11
-rw-r--r--db/docs/ref/upgrade.4.2/cksum.html5
-rw-r--r--db/docs/ref/upgrade.4.2/client.html5
-rw-r--r--db/docs/ref/upgrade.4.2/del.html5
-rw-r--r--db/docs/ref/upgrade.4.2/disk.html5
-rw-r--r--db/docs/ref/upgrade.4.2/intro.html5
-rw-r--r--db/docs/ref/upgrade.4.2/java.html5
-rw-r--r--db/docs/ref/upgrade.4.2/lockng.html5
-rw-r--r--db/docs/ref/upgrade.4.2/nosync.html5
-rw-r--r--db/docs/ref/upgrade.4.2/priority.html5
-rw-r--r--db/docs/ref/upgrade.4.2/queue.html5
-rw-r--r--db/docs/ref/upgrade.4.2/repinit.html5
-rw-r--r--db/docs/ref/upgrade.4.2/tcl.html5
-rw-r--r--db/docs/ref/upgrade.4.2/toc.html13
-rw-r--r--db/docs/ref/upgrade.4.2/verify.html5
-rw-r--r--db/docs/ref/upgrade.4.3/cput.html7
-rw-r--r--db/docs/ref/upgrade.4.3/disk.html5
-rw-r--r--db/docs/ref/upgrade.4.3/enomem.html7
-rw-r--r--db/docs/ref/upgrade.4.3/err.html5
-rw-r--r--db/docs/ref/upgrade.4.3/fileopen.html5
-rw-r--r--db/docs/ref/upgrade.4.3/intro.html5
-rw-r--r--db/docs/ref/upgrade.4.3/java.html5
-rw-r--r--db/docs/ref/upgrade.4.3/log.html5
-rw-r--r--db/docs/ref/upgrade.4.3/repl.html5
-rw-r--r--db/docs/ref/upgrade.4.3/rtc.html5
-rw-r--r--db/docs/ref/upgrade.4.3/stat.html5
-rw-r--r--db/docs/ref/upgrade.4.3/toc.html15
-rw-r--r--db/docs/ref/upgrade.4.3/verb.html5
-rw-r--r--db/docs/ref/upgrade.4.4/autocommit.html5
-rw-r--r--db/docs/ref/upgrade.4.4/clear.html5
-rw-r--r--db/docs/ref/upgrade.4.4/disk.html5
-rw-r--r--db/docs/ref/upgrade.4.4/intro.html5
-rw-r--r--db/docs/ref/upgrade.4.4/isolation.html5
-rw-r--r--db/docs/ref/upgrade.4.4/joinenv.html5
-rw-r--r--db/docs/ref/upgrade.4.4/lockstat.html5
-rw-r--r--db/docs/ref/upgrade.4.4/mutex.html5
-rw-r--r--db/docs/ref/upgrade.4.4/toc.html11
-rw-r--r--db/docs/ref/upgrade.4.5/alive.html5
-rw-r--r--db/docs/ref/upgrade.4.5/applog.html5
-rw-r--r--db/docs/ref/upgrade.4.5/collect.html5
-rw-r--r--db/docs/ref/upgrade.4.5/config.html5
-rw-r--r--db/docs/ref/upgrade.4.5/deprecate.html5
-rw-r--r--db/docs/ref/upgrade.4.5/disk.html11
-rw-r--r--db/docs/ref/upgrade.4.5/elect.html5
-rw-r--r--db/docs/ref/upgrade.4.5/intro.html5
-rw-r--r--db/docs/ref/upgrade.4.5/memp.html16
-rw-r--r--db/docs/ref/upgrade.4.5/pagesize.html5
-rw-r--r--db/docs/ref/upgrade.4.5/paniccall.html5
-rw-r--r--db/docs/ref/upgrade.4.5/rep_event.html5
-rw-r--r--db/docs/ref/upgrade.4.5/rep_set.html5
-rw-r--r--db/docs/ref/upgrade.4.5/source.html11
-rw-r--r--db/docs/ref/upgrade.4.5/toc.html11
-rw-r--r--db/docs/ref/upgrade.4.6/cursor.html35
-rw-r--r--db/docs/ref/upgrade.4.6/disk.html30
-rw-r--r--db/docs/ref/upgrade.4.6/event.html50
-rw-r--r--db/docs/ref/upgrade.4.6/full_election.html29
-rw-r--r--db/docs/ref/upgrade.4.6/intro.html25
-rw-r--r--db/docs/ref/upgrade.4.6/memp_fput.html28
-rw-r--r--db/docs/ref/upgrade.4.6/memp_fset.html25
-rw-r--r--db/docs/ref/upgrade.4.6/toc.html34
-rw-r--r--db/docs/ref/upgrade.4.6/verb.html26
-rw-r--r--db/docs/ref/upgrade.4.6/verbose.html47
-rw-r--r--db/docs/ref/upgrade.4.6/win.html24
-rw-r--r--db/docs/ref/upgrade/process.html11
-rw-r--r--db/docs/ref/upgrade/version.html5
-rw-r--r--db/docs/ref/xa/build.html5
-rw-r--r--db/docs/ref/xa/config.html79
-rw-r--r--db/docs/ref/xa/faq.html11
-rw-r--r--db/docs/ref/xa/intro.html11
-rw-r--r--db/docs/ref/xa/xa_config.html5
-rw-r--r--db/docs/ref/xa/xa_intro.html5
-rw-r--r--db/docs/sleepycat/legal.html63
-rw-r--r--db/docs/sleepycat/license.html114
-rw-r--r--db/docs/utility/berkeley_db_svc.html7
-rw-r--r--db/docs/utility/db_archive.html7
-rw-r--r--db/docs/utility/db_checkpoint.html7
-rw-r--r--db/docs/utility/db_codegen.html189
-rw-r--r--db/docs/utility/db_deadlock.html7
-rw-r--r--db/docs/utility/db_dump.html7
-rw-r--r--db/docs/utility/db_hotbackup.html69
-rw-r--r--db/docs/utility/db_load.html7
-rw-r--r--db/docs/utility/db_printlog.html7
-rw-r--r--db/docs/utility/db_recover.html11
-rw-r--r--db/docs/utility/db_stat.html7
-rw-r--r--db/docs/utility/db_upgrade.html7
-rw-r--r--db/docs/utility/db_verify.html7
-rw-r--r--db/docs/utility/index.html8
-rw-r--r--db/docs_src/api/frame.so20
-rw-r--r--db/docs_src/api/object.so38
-rw-r--r--db/docs_src/build194
-rw-r--r--db/docs_src/db/db_associate.so185
-rw-r--r--db/docs_src/db/db_class.so158
-rw-r--r--db/docs_src/db/db_close.so76
-rw-r--r--db/docs_src/db/db_compact.so123
-rw-r--r--db/docs_src/db/db_cursor.so76
-rw-r--r--db/docs_src/db/db_del.so42
-rw-r--r--db/docs_src/db/db_err.so4
-rw-r--r--db/docs_src/db/db_exists.so55
-rw-r--r--db/docs_src/db/db_fd.so37
-rw-r--r--db/docs_src/db/db_get.so172
-rw-r--r--db/docs_src/db/db_get_byteswapped.so41
-rw-r--r--db/docs_src/db/db_get_mpf.so20
-rw-r--r--db/docs_src/db/db_get_type.so35
-rw-r--r--db/docs_src/db/db_getenv.so20
-rw-r--r--db/docs_src/db/db_join.so116
-rw-r--r--db/docs_src/db/db_key_range.so71
-rw-r--r--db/docs_src/db/db_list.so7
-rw-r--r--db/docs_src/db/db_open.so245
-rw-r--r--db/docs_src/db/db_put.so84
-rw-r--r--db/docs_src/db/db_remove.so4
-rw-r--r--db/docs_src/db/db_rename.so4
-rw-r--r--db/docs_src/db/db_set_alloc.so4
-rw-r--r--db/docs_src/db/db_set_append_recno.so72
-rw-r--r--db/docs_src/db/db_set_bt_compare.so70
-rw-r--r--db/docs_src/db/db_set_bt_minkey.so54
-rw-r--r--db/docs_src/db/db_set_bt_prefix.so87
-rw-r--r--db/docs_src/db/db_set_cachesize.so4
-rw-r--r--db/docs_src/db/db_set_dup_compare.so83
-rw-r--r--db/docs_src/db/db_set_encrypt.so4
-rw-r--r--db/docs_src/db/db_set_errcall.so4
-rw-r--r--db/docs_src/db/db_set_errfile.so4
-rw-r--r--db/docs_src/db/db_set_error_stream.so4
-rw-r--r--db/docs_src/db/db_set_errpfx.so4
-rw-r--r--db/docs_src/db/db_set_feedback.so4
-rw-r--r--db/docs_src/db/db_set_flags.so266
-rw-r--r--db/docs_src/db/db_set_h_compare.so66
-rw-r--r--db/docs_src/db/db_set_h_ffactor.so51
-rw-r--r--db/docs_src/db/db_set_h_hash.so49
-rw-r--r--db/docs_src/db/db_set_h_nelem.so51
-rw-r--r--db/docs_src/db/db_set_lorder.so57
-rw-r--r--db/docs_src/db/db_set_msg_stream.so4
-rw-r--r--db/docs_src/db/db_set_msgcall.so4
-rw-r--r--db/docs_src/db/db_set_msgfile.so4
-rw-r--r--db/docs_src/db/db_set_pagesize.so54
-rw-r--r--db/docs_src/db/db_set_priority.so24
-rw-r--r--db/docs_src/db/db_set_q_extentsize.so50
-rw-r--r--db/docs_src/db/db_set_re_delim.so50
-rw-r--r--db/docs_src/db/db_set_re_len.so61
-rw-r--r--db/docs_src/db/db_set_re_pad.so48
-rw-r--r--db/docs_src/db/db_set_re_source.so102
-rw-r--r--db/docs_src/db/db_stat.so259
-rw-r--r--db/docs_src/db/db_sync.so44
-rw-r--r--db/docs_src/db/db_truncate.so46
-rw-r--r--db/docs_src/db/db_upgrade.so82
-rw-r--r--db/docs_src/db/db_verify.so142
-rw-r--r--db/docs_src/db/dbt_bulk.so83
-rw-r--r--db/docs_src/db/dbt_bulk_class.so165
-rw-r--r--db/docs_src/db/dbt_c.so176
-rw-r--r--db/docs_src/db/dbt_class.so3
-rw-r--r--db/docs_src/db/dbt_cxx.so341
-rw-r--r--db/docs_src/db/m4.methods64
-rw-r--r--db/docs_src/db_except/except_class.so53
-rw-r--r--db/docs_src/db_except/runrec_class.so27
-rw-r--r--db/docs_src/dbc/dbc_class.so26
-rw-r--r--db/docs_src/dbc/dbc_close.so35
-rw-r--r--db/docs_src/dbc/dbc_count.so30
-rw-r--r--db/docs_src/dbc/dbc_del.so42
-rw-r--r--db/docs_src/dbc/dbc_dup.so42
-rw-r--r--db/docs_src/dbc/dbc_get.so336
-rw-r--r--db/docs_src/dbc/dbc_list.so7
-rw-r--r--db/docs_src/dbc/dbc_put.so140
-rw-r--r--db/docs_src/dbc/dbc_set_priority.so64
-rw-r--r--db/docs_src/dbc/m4.methods15
-rw-r--r--db/docs_src/dbt/dbt_package.so19
-rw-r--r--db/docs_src/env/api_core.so210
-rw-r--r--db/docs_src/env/env_class.so123
-rw-r--r--db/docs_src/env/env_close.so72
-rw-r--r--db/docs_src/env/env_dbremove.so90
-rw-r--r--db/docs_src/env/env_dbrename.so98
-rw-r--r--db/docs_src/env/env_err.so106
-rw-r--r--db/docs_src/env/env_event_notify.so113
-rw-r--r--db/docs_src/env/env_failchk.so72
-rw-r--r--db/docs_src/env/env_fileid_reset.so49
-rw-r--r--db/docs_src/env/env_list.so7
-rw-r--r--db/docs_src/env/env_lsn_reset.so57
-rw-r--r--db/docs_src/env/env_open.so271
-rw-r--r--db/docs_src/env/env_remove.so95
-rw-r--r--db/docs_src/env/env_set_alloc.so123
-rw-r--r--db/docs_src/env/env_set_app_dispatch.so105
-rw-r--r--db/docs_src/env/env_set_cachesize.so131
-rw-r--r--db/docs_src/env/env_set_data_dir.so59
-rw-r--r--db/docs_src/env/env_set_encrypt.so84
-rw-r--r--db/docs_src/env/env_set_errcall.so121
-rw-r--r--db/docs_src/env/env_set_errfile.so116
-rw-r--r--db/docs_src/env/env_set_error_stream.so70
-rw-r--r--db/docs_src/env/env_set_errpfx.so67
-rw-r--r--db/docs_src/env/env_set_feedback.so87
-rw-r--r--db/docs_src/env/env_set_flags.so304
-rw-r--r--db/docs_src/env/env_set_isalive.so62
-rw-r--r--db/docs_src/env/env_set_msg_stream.so56
-rw-r--r--db/docs_src/env/env_set_msgcall.so95
-rw-r--r--db/docs_src/env/env_set_msgfile.so101
-rw-r--r--db/docs_src/env/env_set_rpc_server.so68
-rw-r--r--db/docs_src/env/env_set_shm_key.so70
-rw-r--r--db/docs_src/env/env_set_thread_count.so65
-rw-r--r--db/docs_src/env/env_set_thread_id.so108
-rw-r--r--db/docs_src/env/env_set_thread_id_string.so65
-rw-r--r--db/docs_src/env/env_set_timeout.so99
-rw-r--r--db/docs_src/env/env_set_tmp_dir.so79
-rw-r--r--db/docs_src/env/env_set_verbose.so99
-rw-r--r--db/docs_src/env/env_stat.so19
-rw-r--r--db/docs_src/env/env_strerror.so37
-rw-r--r--db/docs_src/env/env_version.so35
-rw-r--r--db/docs_src/env/m4.methods46
-rw-r--r--db/docs_src/exc/exc_package.so15
-rw-r--r--db/docs_src/historic/dbm.so239
-rw-r--r--db/docs_src/historic/hsearch.so106
-rw-r--r--db/docs_src/images/api.gifbin0 -> 121 bytes
-rw-r--r--db/docs_src/images/next.gifbin0 -> 225 bytes
-rw-r--r--db/docs_src/images/prev.gifbin0 -> 234 bytes
-rw-r--r--db/docs_src/images/ps.gifbin0 -> 244 bytes
-rw-r--r--db/docs_src/images/ref.gifbin0 -> 119 bytes
-rw-r--r--db/docs_src/index_db.html227
-rw-r--r--db/docs_src/license/license_db.so15
-rw-r--r--db/docs_src/lock/deadlock_class.so27
-rw-r--r--db/docs_src/lock/env_cdsgroup_begin.so35
-rw-r--r--db/docs_src/lock/env_set_lk_conflicts.so69
-rw-r--r--db/docs_src/lock/env_set_lk_detect.so53
-rw-r--r--db/docs_src/lock/env_set_lk_max_lockers.so51
-rw-r--r--db/docs_src/lock/env_set_lk_max_locks.so51
-rw-r--r--db/docs_src/lock/env_set_lk_max_objects.so52
-rw-r--r--db/docs_src/lock/lock_class.so26
-rw-r--r--db/docs_src/lock/lock_detect.so44
-rw-r--r--db/docs_src/lock/lock_get.so78
-rw-r--r--db/docs_src/lock/lock_id.so32
-rw-r--r--db/docs_src/lock/lock_id_free.so31
-rw-r--r--db/docs_src/lock/lock_list.so7
-rw-r--r--db/docs_src/lock/lock_put.so29
-rw-r--r--db/docs_src/lock/lock_stat.so162
-rw-r--r--db/docs_src/lock/lock_vec.so173
-rw-r--r--db/docs_src/lock/lockng_class.so72
-rw-r--r--db/docs_src/lock/m4.methods26
-rw-r--r--db/docs_src/log/env_set_lg_bsize.so68
-rw-r--r--db/docs_src/log/env_set_lg_dir.so57
-rw-r--r--db/docs_src/log/env_set_lg_max.so75
-rw-r--r--db/docs_src/log/env_set_lg_mode.so55
-rw-r--r--db/docs_src/log/env_set_lg_regionmax.so52
-rw-r--r--db/docs_src/log/log_archive.so101
-rw-r--r--db/docs_src/log/log_compare.so34
-rw-r--r--db/docs_src/log/log_cursor.so29
-rw-r--r--db/docs_src/log/log_file.so51
-rw-r--r--db/docs_src/log/log_flush.so31
-rw-r--r--db/docs_src/log/log_list.so7
-rw-r--r--db/docs_src/log/log_printf.so45
-rw-r--r--db/docs_src/log/log_put.so53
-rw-r--r--db/docs_src/log/log_stat.so125
-rw-r--r--db/docs_src/log/logc_class.so22
-rw-r--r--db/docs_src/log/logc_close.so30
-rw-r--r--db/docs_src/log/logc_get.so101
-rw-r--r--db/docs_src/log/lsn_class.so21
-rw-r--r--db/docs_src/log/m4.methods28
-rw-r--r--db/docs_src/m4/m4.db514
-rw-r--r--db/docs_src/m4/m4.err238
-rw-r--r--db/docs_src/m4/m4.flags138
-rw-r--r--db/docs_src/m4/m4.html389
-rw-r--r--db/docs_src/m4/m4.init49
-rw-r--r--db/docs_src/m4/m4.links802
-rw-r--r--db/docs_src/m4/m4.ret68
-rw-r--r--db/docs_src/m4/m4.seealso52
-rw-r--r--db/docs_src/m4/m4.utility66
-rw-r--r--db/docs_src/memp/env_set_cache_max.so62
-rw-r--r--db/docs_src/memp/env_set_mp_mmapsize.so58
-rw-r--r--db/docs_src/memp/m4.methods39
-rw-r--r--db/docs_src/memp/memp_class.so40
-rw-r--r--db/docs_src/memp/memp_fclose.so37
-rw-r--r--db/docs_src/memp/memp_fcreate.so29
-rw-r--r--db/docs_src/memp/memp_fget.so119
-rw-r--r--db/docs_src/memp/memp_fopen.so84
-rw-r--r--db/docs_src/memp/memp_fput.so51
-rw-r--r--db/docs_src/memp/memp_fsync.so25
-rw-r--r--db/docs_src/memp/memp_list.so7
-rw-r--r--db/docs_src/memp/memp_maxwrite.so58
-rw-r--r--db/docs_src/memp/memp_openfd.so41
-rw-r--r--db/docs_src/memp/memp_register.so91
-rw-r--r--db/docs_src/memp/memp_set_clear_len.so45
-rw-r--r--db/docs_src/memp/memp_set_fileid.so76
-rw-r--r--db/docs_src/memp/memp_set_flags.so67
-rw-r--r--db/docs_src/memp/memp_set_ftype.so44
-rw-r--r--db/docs_src/memp/memp_set_lsn_offset.so44
-rw-r--r--db/docs_src/memp/memp_set_maxsize.so62
-rw-r--r--db/docs_src/memp/memp_set_pgcookie.so45
-rw-r--r--db/docs_src/memp/memp_set_priority.so24
-rw-r--r--db/docs_src/memp/memp_stat.so219
-rw-r--r--db/docs_src/memp/memp_sync.so40
-rw-r--r--db/docs_src/memp/memp_trickle.so39
-rw-r--r--db/docs_src/memp/mempfile_class.so58
-rw-r--r--db/docs_src/mutex/m4.methods18
-rw-r--r--db/docs_src/mutex/mutex_alloc.so48
-rw-r--r--db/docs_src/mutex/mutex_free.so32
-rw-r--r--db/docs_src/mutex/mutex_list.so7
-rw-r--r--db/docs_src/mutex/mutex_lock.so34
-rw-r--r--db/docs_src/mutex/mutex_set_align.so51
-rw-r--r--db/docs_src/mutex/mutex_set_max.so105
-rw-r--r--db/docs_src/mutex/mutex_set_tas_spins.so48
-rw-r--r--db/docs_src/mutex/mutex_stat.so80
-rw-r--r--db/docs_src/mutex/mutex_unlock.so33
-rw-r--r--db/docs_src/ref/am/close.so36
-rw-r--r--db/docs_src/ref/am/count.so14
-rw-r--r--db/docs_src/ref/am/curclose.so14
-rw-r--r--db/docs_src/ref/am/curdel.so13
-rw-r--r--db/docs_src/ref/am/curdup.so22
-rw-r--r--db/docs_src/ref/am/curget.cs78
-rw-r--r--db/docs_src/ref/am/curget.so109
-rw-r--r--db/docs_src/ref/am/curput.cs87
-rw-r--r--db/docs_src/ref/am/curput.so48
-rw-r--r--db/docs_src/ref/am/cursor.so32
-rw-r--r--db/docs_src/ref/am/delete.so16
-rw-r--r--db/docs_src/ref/am/get.so36
-rw-r--r--db/docs_src/ref/am/join.cs82
-rw-r--r--db/docs_src/ref/am/join.so166
-rw-r--r--db/docs_src/ref/am/open.so52
-rw-r--r--db/docs_src/ref/am/opensub.so90
-rw-r--r--db/docs_src/ref/am/ops.so28
-rw-r--r--db/docs_src/ref/am/put.so31
-rw-r--r--db/docs_src/ref/am/second.javas155
-rw-r--r--db/docs_src/ref/am/second.so158
-rw-r--r--db/docs_src/ref/am/second1.cs84
-rw-r--r--db/docs_src/ref/am/second2.cs51
-rw-r--r--db/docs_src/ref/am/second3.cs38
-rw-r--r--db/docs_src/ref/am/second4.cs38
-rw-r--r--db/docs_src/ref/am/second5.cs43
-rw-r--r--db/docs_src/ref/am/stat.so22
-rw-r--r--db/docs_src/ref/am/sync.so29
-rw-r--r--db/docs_src/ref/am/truncate.so10
-rw-r--r--db/docs_src/ref/am/upgrade.so40
-rw-r--r--db/docs_src/ref/am/verify.so42
-rw-r--r--db/docs_src/ref/am_conf/bt_compare.so57
-rw-r--r--db/docs_src/ref/am_conf/bt_compare1.cs35
-rw-r--r--db/docs_src/ref/am_conf/bt_compare2.cs36
-rw-r--r--db/docs_src/ref/am_conf/bt_minkey.so51
-rw-r--r--db/docs_src/ref/am_conf/bt_prefix.cs43
-rw-r--r--db/docs_src/ref/am_conf/bt_prefix.so44
-rw-r--r--db/docs_src/ref/am_conf/bt_recnum.so36
-rw-r--r--db/docs_src/ref/am_conf/bt_recnum1.cs202
-rw-r--r--db/docs_src/ref/am_conf/bt_recnum2.cs197
-rw-r--r--db/docs_src/ref/am_conf/byteorder.so29
-rw-r--r--db/docs_src/ref/am_conf/cachesize.so89
-rw-r--r--db/docs_src/ref/am_conf/dup.so76
-rw-r--r--db/docs_src/ref/am_conf/extentsize.so35
-rw-r--r--db/docs_src/ref/am_conf/h_ffactor.so22
-rw-r--r--db/docs_src/ref/am_conf/h_hash.so31
-rw-r--r--db/docs_src/ref/am_conf/h_nelem.so20
-rw-r--r--db/docs_src/ref/am_conf/intro.so40
-rw-r--r--db/docs_src/ref/am_conf/logrec.cs103
-rw-r--r--db/docs_src/ref/am_conf/logrec.so62
-rw-r--r--db/docs_src/ref/am_conf/malloc.so21
-rw-r--r--db/docs_src/ref/am_conf/pagesize.so79
-rw-r--r--db/docs_src/ref/am_conf/re_source.so59
-rw-r--r--db/docs_src/ref/am_conf/recno.so70
-rw-r--r--db/docs_src/ref/am_conf/renumber.so76
-rw-r--r--db/docs_src/ref/am_conf/select.so129
-rw-r--r--db/docs_src/ref/am_misc/align.so14
-rw-r--r--db/docs_src/ref/am_misc/dbsizes.so38
-rw-r--r--db/docs_src/ref/am_misc/diskspace.so190
-rw-r--r--db/docs_src/ref/am_misc/error.so47
-rw-r--r--db/docs_src/ref/am_misc/error1.cs29
-rw-r--r--db/docs_src/ref/am_misc/error2.cs41
-rw-r--r--db/docs_src/ref/am_misc/faq.so158
-rw-r--r--db/docs_src/ref/am_misc/get_bulk.cs155
-rw-r--r--db/docs_src/ref/am_misc/get_bulk.so74
-rw-r--r--db/docs_src/ref/am_misc/partial.so148
-rw-r--r--db/docs_src/ref/am_misc/perm.so26
-rw-r--r--db/docs_src/ref/am_misc/stability.so48
-rw-r--r--db/docs_src/ref/am_misc/struct.so103
-rw-r--r--db/docs_src/ref/am_misc/tune.so132
-rw-r--r--db/docs_src/ref/apprec/auto.so199
-rw-r--r--db/docs_src/ref/apprec/config.so155
-rw-r--r--db/docs_src/ref/apprec/def.so159
-rw-r--r--db/docs_src/ref/apprec/intro.so84
-rw-r--r--db/docs_src/ref/arch/apis.so82
-rw-r--r--db/docs_src/ref/arch/bigpic.fig70
-rw-r--r--db/docs_src/ref/arch/bigpic.gifbin0 -> 2589 bytes
-rw-r--r--db/docs_src/ref/arch/bigpic.pic31
-rw-r--r--db/docs_src/ref/arch/bigpic.so110
-rw-r--r--db/docs_src/ref/arch/bigpic1.cs25
-rw-r--r--db/docs_src/ref/arch/bigpic2.cs55
-rw-r--r--db/docs_src/ref/arch/progmodel.so33
-rw-r--r--db/docs_src/ref/arch/script.so29
-rw-r--r--db/docs_src/ref/arch/smallpic.fig35
-rw-r--r--db/docs_src/ref/arch/smallpic.gifbin0 -> 1613 bytes
-rw-r--r--db/docs_src/ref/arch/smallpic.pic16
-rw-r--r--db/docs_src/ref/arch/utilities.so75
-rw-r--r--db/docs_src/ref/build_brew/intro.so135
-rw-r--r--db/docs_src/ref/build_s60/intro.so86
-rw-r--r--db/docs_src/ref/build_unix/aix.so104
-rw-r--r--db/docs_src/ref/build_unix/conf.so245
-rw-r--r--db/docs_src/ref/build_unix/flags.so83
-rw-r--r--db/docs_src/ref/build_unix/freebsd.so68
-rw-r--r--db/docs_src/ref/build_unix/hpux.so122
-rw-r--r--db/docs_src/ref/build_unix/install.so77
-rw-r--r--db/docs_src/ref/build_unix/intro.so72
-rw-r--r--db/docs_src/ref/build_unix/irix.so23
-rw-r--r--db/docs_src/ref/build_unix/linux.so42
-rw-r--r--db/docs_src/ref/build_unix/macosx.so64
-rw-r--r--db/docs_src/ref/build_unix/notes.so223
-rw-r--r--db/docs_src/ref/build_unix/osf1.so23
-rw-r--r--db/docs_src/ref/build_unix/qnx.so107
-rw-r--r--db/docs_src/ref/build_unix/sco.so20
-rw-r--r--db/docs_src/ref/build_unix/shlib.so126
-rw-r--r--db/docs_src/ref/build_unix/small.so84
-rw-r--r--db/docs_src/ref/build_unix/solaris.so150
-rw-r--r--db/docs_src/ref/build_unix/sunos.so20
-rw-r--r--db/docs_src/ref/build_unix/test.so64
-rw-r--r--db/docs_src/ref/build_unix/ultrix.so17
-rw-r--r--db/docs_src/ref/build_vxworks/faq.so198
-rw-r--r--db/docs_src/ref/build_vxworks/intro.so112
-rw-r--r--db/docs_src/ref/build_vxworks/introae.so153
-rw-r--r--db/docs_src/ref/build_vxworks/notes.so67
-rw-r--r--db/docs_src/ref/build_win/faq.so80
-rw-r--r--db/docs_src/ref/build_win/intro.so430
-rw-r--r--db/docs_src/ref/build_win/notes.so79
-rw-r--r--db/docs_src/ref/build_win/small.so42
-rw-r--r--db/docs_src/ref/build_win/test.so113
-rw-r--r--db/docs_src/ref/build_wince/faq.so21
-rw-r--r--db/docs_src/ref/build_wince/intro.so113
-rw-r--r--db/docs_src/ref/build_wince/notes.so29
-rw-r--r--db/docs_src/ref/cam/app.so250
-rw-r--r--db/docs_src/ref/cam/fail.so87
-rw-r--r--db/docs_src/ref/cam/intro.so136
-rw-r--r--db/docs_src/ref/changelog/2.1.html84
-rw-r--r--db/docs_src/ref/changelog/2.2.html348
-rw-r--r--db/docs_src/ref/changelog/2.3.10.html27
-rw-r--r--db/docs_src/ref/changelog/2.3.11.html22
-rw-r--r--db/docs_src/ref/changelog/2.3.12.html66
-rw-r--r--db/docs_src/ref/changelog/2.3.14.html67
-rw-r--r--db/docs_src/ref/changelog/2.3.16.html165
-rw-r--r--db/docs_src/ref/changelog/2.3.5.html36
-rw-r--r--db/docs_src/ref/changelog/2.3.html184
-rw-r--r--db/docs_src/ref/changelog/2.4.10.html473
-rw-r--r--db/docs_src/ref/changelog/2.4.14.html198
-rw-r--r--db/docs_src/ref/changelog/2.5.9.html644
-rw-r--r--db/docs_src/ref/changelog/2.6.4.html201
-rw-r--r--db/docs_src/ref/changelog/2.6.5.html17
-rw-r--r--db/docs_src/ref/changelog/2.6.6.html80
-rw-r--r--db/docs_src/ref/changelog/2.6.7.html55
-rw-r--r--db/docs_src/ref/changelog/2.7.1.html40
-rw-r--r--db/docs_src/ref/changelog/2.7.3.html59
-rw-r--r--db/docs_src/ref/changelog/2.7.4.html102
-rw-r--r--db/docs_src/ref/changelog/2.7.5.html38
-rw-r--r--db/docs_src/ref/changelog/2.7.7.html51
-rw-r--r--db/docs_src/ref/changelog/3.0.55.html945
-rw-r--r--db/docs_src/ref/changelog/3.1.14.html300
-rw-r--r--db/docs_src/ref/changelog/3.1.17.html213
-rw-r--r--db/docs_src/ref/changelog/3.2.9.html324
-rw-r--r--db/docs_src/ref/changelog/3.3.11.html295
-rw-r--r--db/docs_src/ref/changelog/4.0.14.html246
-rw-r--r--db/docs_src/ref/changelog/4.1.24.html409
-rw-r--r--db/docs_src/ref/changelog/4.1.25.html16
-rw-r--r--db/docs_src/ref/changelog/4.2.52.html811
-rw-r--r--db/docs_src/ref/changelog/4.3.29.html524
-rw-r--r--db/docs_src/ref/changelog/4.4.16.html444
-rw-r--r--db/docs_src/ref/changelog/4.4.20.html51
-rw-r--r--db/docs_src/ref/changelog/4.5.20.html322
-rw-r--r--db/docs_src/ref/changelog/4.6.html366
-rw-r--r--db/docs_src/ref/changelog/spell.ok613
-rw-r--r--db/docs_src/ref/changelog/toc.so80
-rw-r--r--db/docs_src/ref/debug/compile.so42
-rw-r--r--db/docs_src/ref/debug/intro.so57
-rw-r--r--db/docs_src/ref/debug/printlog.so207
-rw-r--r--db/docs_src/ref/debug/runtime.so40
-rw-r--r--db/docs_src/ref/distrib/layout.so80
-rw-r--r--db/docs_src/ref/distrib/port.so108
-rw-r--r--db/docs_src/ref/dumpload/format.so78
-rw-r--r--db/docs_src/ref/dumpload/text.so24
-rw-r--r--db/docs_src/ref/dumpload/utility.so43
-rw-r--r--db/docs_src/ref/env/create.cs66
-rw-r--r--db/docs_src/ref/env/create.so95
-rw-r--r--db/docs_src/ref/env/db_config.so37
-rw-r--r--db/docs_src/ref/env/encrypt.so97
-rw-r--r--db/docs_src/ref/env/error.so45
-rw-r--r--db/docs_src/ref/env/error1.cs19
-rw-r--r--db/docs_src/ref/env/error2.cs27
-rw-r--r--db/docs_src/ref/env/faq.so46
-rw-r--r--db/docs_src/ref/env/intro.so44
-rw-r--r--db/docs_src/ref/env/naming.so159
-rw-r--r--db/docs_src/ref/env/naming1.cs17
-rw-r--r--db/docs_src/ref/env/naming2.cs18
-rw-r--r--db/docs_src/ref/env/naming3.cs19
-rw-r--r--db/docs_src/ref/env/naming4.cs19
-rw-r--r--db/docs_src/ref/env/open.cs82
-rw-r--r--db/docs_src/ref/env/open.so25
-rw-r--r--db/docs_src/ref/env/region.so83
-rw-r--r--db/docs_src/ref/env/remote.so61
-rw-r--r--db/docs_src/ref/env/security.so50
-rw-r--r--db/docs_src/ref/ext/mod.so100
-rw-r--r--db/docs_src/ref/ext/perl.so33
-rw-r--r--db/docs_src/ref/ext/php.so118
-rw-r--r--db/docs_src/ref/install/ARCHIVE/README8
-rw-r--r--db/docs_src/ref/install/ARCHIVE/__B.BE.185bin0 -> 16384 bytes
-rw-r--r--db/docs_src/ref/install/ARCHIVE/__B.BE.186bin0 -> 16384 bytes
-rw-r--r--db/docs_src/ref/install/ARCHIVE/__B.BE.2bin0 -> 16384 bytes
-rw-r--r--db/docs_src/ref/install/ARCHIVE/__B.LE.185bin0 -> 16384 bytes
-rw-r--r--db/docs_src/ref/install/ARCHIVE/__B.LE.186bin0 -> 16384 bytes
-rw-r--r--db/docs_src/ref/install/ARCHIVE/__B.LE.2bin0 -> 16384 bytes
-rw-r--r--db/docs_src/ref/install/ARCHIVE/__H.BE.185bin0 -> 32768 bytes
-rw-r--r--db/docs_src/ref/install/ARCHIVE/__H.BE.186bin0 -> 32768 bytes
-rw-r--r--db/docs_src/ref/install/ARCHIVE/__H.BE.2bin0 -> 16384 bytes
-rw-r--r--db/docs_src/ref/install/ARCHIVE/__H.LE.185bin0 -> 32768 bytes
-rw-r--r--db/docs_src/ref/install/ARCHIVE/__H.LE.186bin0 -> 32768 bytes
-rw-r--r--db/docs_src/ref/install/ARCHIVE/__H.LE.2bin0 -> 16384 bytes
-rw-r--r--db/docs_src/ref/install/file.so28
-rw-r--r--db/docs_src/ref/install/magic.s5.be.txt123
-rw-r--r--db/docs_src/ref/install/magic.s5.le.txt123
-rw-r--r--db/docs_src/ref/install/magic.txt63
-rw-r--r--db/docs_src/ref/install/multiple.so51
-rw-r--r--db/docs_src/ref/intro/data.so48
-rw-r--r--db/docs_src/ref/intro/dbis.so188
-rw-r--r--db/docs_src/ref/intro/dbisnot.so167
-rw-r--r--db/docs_src/ref/intro/distrib.so14
-rw-r--r--db/docs_src/ref/intro/need.so56
-rw-r--r--db/docs_src/ref/intro/products.so69
-rw-r--r--db/docs_src/ref/intro/terrain.so307
-rw-r--r--db/docs_src/ref/intro/what.so52
-rw-r--r--db/docs_src/ref/intro/where.so39
-rw-r--r--db/docs_src/ref/java/compat.so11
-rw-r--r--db/docs_src/ref/java/conf.so120
-rw-r--r--db/docs_src/ref/java/faq.so120
-rw-r--r--db/docs_src/ref/java/program.so86
-rw-r--r--db/docs_src/ref/lock/am_conv.so131
-rw-r--r--db/docs_src/ref/lock/cam_conv.so48
-rw-r--r--db/docs_src/ref/lock/config.so35
-rw-r--r--db/docs_src/ref/lock/dead.so77
-rw-r--r--db/docs_src/ref/lock/deaddbg.so173
-rw-r--r--db/docs_src/ref/lock/intro.so96
-rw-r--r--db/docs_src/ref/lock/max.so114
-rw-r--r--db/docs_src/ref/lock/nondb.so43
-rw-r--r--db/docs_src/ref/lock/notxn.so35
-rw-r--r--db/docs_src/ref/lock/page.so91
-rw-r--r--db/docs_src/ref/lock/stdmode.so55
-rw-r--r--db/docs_src/ref/lock/timeout.so66
-rw-r--r--db/docs_src/ref/lock/twopl.so45
-rw-r--r--db/docs_src/ref/log/config.so36
-rw-r--r--db/docs_src/ref/log/intro.so61
-rw-r--r--db/docs_src/ref/log/limits.so50
-rw-r--r--db/docs_src/ref/mp/config.so45
-rw-r--r--db/docs_src/ref/mp/intro.so93
-rw-r--r--db/docs_src/ref/program/appsignals.so28
-rw-r--r--db/docs_src/ref/program/cache.so23
-rw-r--r--db/docs_src/ref/program/compatible.so21
-rw-r--r--db/docs_src/ref/program/copy.so90
-rw-r--r--db/docs_src/ref/program/environ.so29
-rw-r--r--db/docs_src/ref/program/errorret.so132
-rw-r--r--db/docs_src/ref/program/faq.so39
-rw-r--r--db/docs_src/ref/program/mt.so92
-rw-r--r--db/docs_src/ref/program/namespace.so51
-rw-r--r--db/docs_src/ref/program/ram.so139
-rw-r--r--db/docs_src/ref/program/runtime.so51
-rw-r--r--db/docs_src/ref/program/scope.so80
-rw-r--r--db/docs_src/ref/program/solaris.txt213
-rw-r--r--db/docs_src/ref/refs/bdb_usenix.ps1441
-rw-r--r--db/docs_src/ref/refs/embedded.html672
-rw-r--r--db/docs_src/ref/refs/hash_usenix.ps12209
-rw-r--r--db/docs_src/ref/refs/libtp_usenix.ps12340
-rw-r--r--db/docs_src/ref/refs/refs.so102
-rw-r--r--db/docs_src/ref/refs/witold.so9
-rw-r--r--db/docs_src/ref/rep/app.so121
-rw-r--r--db/docs_src/ref/rep/base_meth.so69
-rw-r--r--db/docs_src/ref/rep/bulk.so35
-rw-r--r--db/docs_src/ref/rep/comm.so104
-rw-r--r--db/docs_src/ref/rep/elect.so164
-rw-r--r--db/docs_src/ref/rep/ex.so85
-rw-r--r--db/docs_src/ref/rep/ex_comm.so88
-rw-r--r--db/docs_src/ref/rep/ex_rq.so58
-rw-r--r--db/docs_src/ref/rep/faq.so122
-rw-r--r--db/docs_src/ref/rep/id.so45
-rw-r--r--db/docs_src/ref/rep/init.so62
-rw-r--r--db/docs_src/ref/rep/intro.so95
-rw-r--r--db/docs_src/ref/rep/mastersync.so132
-rw-r--r--db/docs_src/ref/rep/mgr_meth.so79
-rw-r--r--db/docs_src/ref/rep/newsite.so44
-rw-r--r--db/docs_src/ref/rep/partition.so110
-rw-r--r--db/docs_src/ref/rep/pri.so31
-rw-r--r--db/docs_src/ref/rep/trans.so303
-rw-r--r--db/docs_src/ref/rpc/client.so87
-rw-r--r--db/docs_src/ref/rpc/faq.so20
-rw-r--r--db/docs_src/ref/rpc/intro.so92
-rw-r--r--db/docs_src/ref/rpc/server.so48
-rw-r--r--db/docs_src/ref/sequence/intro.so40
-rw-r--r--db/docs_src/ref/spell.ok1453
-rw-r--r--db/docs_src/ref/tcl/error.so72
-rw-r--r--db/docs_src/ref/tcl/faq.so60
-rw-r--r--db/docs_src/ref/tcl/intro.so81
-rw-r--r--db/docs_src/ref/tcl/program.so24
-rw-r--r--db/docs_src/ref/tcl/using.so51
-rw-r--r--db/docs_src/ref/test/faq.so20
-rw-r--r--db/docs_src/ref/test/run.so63
-rw-r--r--db/docs_src/ref/toc.html391
-rw-r--r--db/docs_src/ref/transapp/admin.so38
-rw-r--r--db/docs_src/ref/transapp/app.so249
-rw-r--r--db/docs_src/ref/transapp/archival.cs53
-rw-r--r--db/docs_src/ref/transapp/archival.so153
-rw-r--r--db/docs_src/ref/transapp/atomicity.so55
-rw-r--r--db/docs_src/ref/transapp/checkpoint.cs113
-rw-r--r--db/docs_src/ref/transapp/checkpoint.so46
-rw-r--r--db/docs_src/ref/transapp/cursor.cs169
-rw-r--r--db/docs_src/ref/transapp/cursor.so24
-rw-r--r--db/docs_src/ref/transapp/data_open.cs94
-rw-r--r--db/docs_src/ref/transapp/data_open.so68
-rw-r--r--db/docs_src/ref/transapp/deadlock.cs66
-rw-r--r--db/docs_src/ref/transapp/deadlock.so65
-rw-r--r--db/docs_src/ref/transapp/env_open.cs99
-rw-r--r--db/docs_src/ref/transapp/env_open.so78
-rw-r--r--db/docs_src/ref/transapp/fail.so74
-rw-r--r--db/docs_src/ref/transapp/faq.so129
-rw-r--r--db/docs_src/ref/transapp/filesys.so64
-rw-r--r--db/docs_src/ref/transapp/hotfail.so92
-rw-r--r--db/docs_src/ref/transapp/inc.cs144
-rw-r--r--db/docs_src/ref/transapp/inc.so54
-rw-r--r--db/docs_src/ref/transapp/intro.so30
-rw-r--r--db/docs_src/ref/transapp/logfile.cs68
-rw-r--r--db/docs_src/ref/transapp/logfile.so59
-rw-r--r--db/docs_src/ref/transapp/nested.so61
-rw-r--r--db/docs_src/ref/transapp/put.cs107
-rw-r--r--db/docs_src/ref/transapp/put.so129
-rw-r--r--db/docs_src/ref/transapp/put2.cs80
-rw-r--r--db/docs_src/ref/transapp/read.so138
-rw-r--r--db/docs_src/ref/transapp/reclimit.so166
-rw-r--r--db/docs_src/ref/transapp/recovery.so112
-rw-r--r--db/docs_src/ref/transapp/term.so67
-rw-r--r--db/docs_src/ref/transapp/throughput.so148
-rw-r--r--db/docs_src/ref/transapp/transapp.cs490
-rw-r--r--db/docs_src/ref/transapp/tune.so165
-rw-r--r--db/docs_src/ref/transapp/why.so34
-rw-r--r--db/docs_src/ref/transapp/writetest.cs118
-rw-r--r--db/docs_src/ref/txn/config.so30
-rw-r--r--db/docs_src/ref/txn/intro.so88
-rw-r--r--db/docs_src/ref/txn/limits.so48
-rw-r--r--db/docs_src/ref/upgrade.2.0/convert.so81
-rw-r--r--db/docs_src/ref/upgrade.2.0/disk.so15
-rw-r--r--db/docs_src/ref/upgrade.2.0/intro.so21
-rw-r--r--db/docs_src/ref/upgrade.2.0/system.so93
-rw-r--r--db/docs_src/ref/upgrade.2.0/toc.so14
-rw-r--r--db/docs_src/ref/upgrade.3.0/close.so24
-rw-r--r--db/docs_src/ref/upgrade.3.0/cxx.so24
-rw-r--r--db/docs_src/ref/upgrade.3.0/db.so44
-rw-r--r--db/docs_src/ref/upgrade.3.0/db_cxx.so53
-rw-r--r--db/docs_src/ref/upgrade.3.0/dbenv.so75
-rw-r--r--db/docs_src/ref/upgrade.3.0/dbenv_cxx.so78
-rw-r--r--db/docs_src/ref/upgrade.3.0/dbinfo.so78
-rw-r--r--db/docs_src/ref/upgrade.3.0/disk.so19
-rw-r--r--db/docs_src/ref/upgrade.3.0/eacces.so15
-rw-r--r--db/docs_src/ref/upgrade.3.0/eagain.so25
-rw-r--r--db/docs_src/ref/upgrade.3.0/envopen.so191
-rw-r--r--db/docs_src/ref/upgrade.3.0/func.so80
-rw-r--r--db/docs_src/ref/upgrade.3.0/intro.so13
-rw-r--r--db/docs_src/ref/upgrade.3.0/java.so37
-rw-r--r--db/docs_src/ref/upgrade.3.0/join.so17
-rw-r--r--db/docs_src/ref/upgrade.3.0/jump_set.so39
-rw-r--r--db/docs_src/ref/upgrade.3.0/lock_detect.so14
-rw-r--r--db/docs_src/ref/upgrade.3.0/lock_notheld.so14
-rw-r--r--db/docs_src/ref/upgrade.3.0/lock_put.so14
-rw-r--r--db/docs_src/ref/upgrade.3.0/lock_stat.so12
-rw-r--r--db/docs_src/ref/upgrade.3.0/log_register.so13
-rw-r--r--db/docs_src/ref/upgrade.3.0/log_stat.so11
-rw-r--r--db/docs_src/ref/upgrade.3.0/memp_stat.so16
-rw-r--r--db/docs_src/ref/upgrade.3.0/open.so70
-rw-r--r--db/docs_src/ref/upgrade.3.0/rmw.so22
-rw-r--r--db/docs_src/ref/upgrade.3.0/stat.so12
-rw-r--r--db/docs_src/ref/upgrade.3.0/toc.so41
-rw-r--r--db/docs_src/ref/upgrade.3.0/txn_begin.so15
-rw-r--r--db/docs_src/ref/upgrade.3.0/txn_commit.so15
-rw-r--r--db/docs_src/ref/upgrade.3.0/txn_stat.so11
-rw-r--r--db/docs_src/ref/upgrade.3.0/value_set.so31
-rw-r--r--db/docs_src/ref/upgrade.3.0/xa.so24
-rw-r--r--db/docs_src/ref/upgrade.3.1/btstat.so42
-rw-r--r--db/docs_src/ref/upgrade.3.1/config.so24
-rw-r--r--db/docs_src/ref/upgrade.3.1/disk.so26
-rw-r--r--db/docs_src/ref/upgrade.3.1/dup.so21
-rw-r--r--db/docs_src/ref/upgrade.3.1/env.so42
-rw-r--r--db/docs_src/ref/upgrade.3.1/intro.so13
-rw-r--r--db/docs_src/ref/upgrade.3.1/log_register.so16
-rw-r--r--db/docs_src/ref/upgrade.3.1/logalloc.so15
-rw-r--r--db/docs_src/ref/upgrade.3.1/memp_register.so18
-rw-r--r--db/docs_src/ref/upgrade.3.1/put.so65
-rw-r--r--db/docs_src/ref/upgrade.3.1/set_feedback.so17
-rw-r--r--db/docs_src/ref/upgrade.3.1/set_paniccall.so17
-rw-r--r--db/docs_src/ref/upgrade.3.1/set_tx_recover.so27
-rw-r--r--db/docs_src/ref/upgrade.3.1/sysmem.so13
-rw-r--r--db/docs_src/ref/upgrade.3.1/tcl.so20
-rw-r--r--db/docs_src/ref/upgrade.3.1/tmp.so25
-rw-r--r--db/docs_src/ref/upgrade.3.1/toc.so27
-rw-r--r--db/docs_src/ref/upgrade.3.1/txn_check.so15
-rw-r--r--db/docs_src/ref/upgrade.3.2/callback.so31
-rw-r--r--db/docs_src/ref/upgrade.3.2/db_dump.so17
-rw-r--r--db/docs_src/ref/upgrade.3.2/disk.so18
-rw-r--r--db/docs_src/ref/upgrade.3.2/handle.so17
-rw-r--r--db/docs_src/ref/upgrade.3.2/incomplete.so34
-rw-r--r--db/docs_src/ref/upgrade.3.2/intro.so13
-rw-r--r--db/docs_src/ref/upgrade.3.2/mutexlock.so16
-rw-r--r--db/docs_src/ref/upgrade.3.2/notfound.so15
-rw-r--r--db/docs_src/ref/upgrade.3.2/renumber.so29
-rw-r--r--db/docs_src/ref/upgrade.3.2/set_flags.so25
-rw-r--r--db/docs_src/ref/upgrade.3.2/toc.so21
-rw-r--r--db/docs_src/ref/upgrade.3.2/tx_recover.so24
-rw-r--r--db/docs_src/ref/upgrade.3.3/alloc.so66
-rw-r--r--db/docs_src/ref/upgrade.3.3/bigfile.so16
-rw-r--r--db/docs_src/ref/upgrade.3.3/conflict.so12
-rw-r--r--db/docs_src/ref/upgrade.3.3/disk.so14
-rw-r--r--db/docs_src/ref/upgrade.3.3/getswap.so16
-rw-r--r--db/docs_src/ref/upgrade.3.3/gettype.so15
-rw-r--r--db/docs_src/ref/upgrade.3.3/intro.so13
-rw-r--r--db/docs_src/ref/upgrade.3.3/memp_fget.so26
-rw-r--r--db/docs_src/ref/upgrade.3.3/rpc.so16
-rw-r--r--db/docs_src/ref/upgrade.3.3/shared.so18
-rw-r--r--db/docs_src/ref/upgrade.3.3/toc.so21
-rw-r--r--db/docs_src/ref/upgrade.3.3/txn_prepare.so14
-rw-r--r--db/docs_src/ref/upgrade.4.0/asr.so34
-rw-r--r--db/docs_src/ref/upgrade.4.0/cxx.so46
-rw-r--r--db/docs_src/ref/upgrade.4.0/deadlock.so13
-rw-r--r--db/docs_src/ref/upgrade.4.0/disk.so15
-rw-r--r--db/docs_src/ref/upgrade.4.0/env.so77
-rw-r--r--db/docs_src/ref/upgrade.4.0/intro.so13
-rw-r--r--db/docs_src/ref/upgrade.4.0/java.so28
-rw-r--r--db/docs_src/ref/upgrade.4.0/lock.so40
-rw-r--r--db/docs_src/ref/upgrade.4.0/lock_id_free.so13
-rw-r--r--db/docs_src/ref/upgrade.4.0/log.so50
-rw-r--r--db/docs_src/ref/upgrade.4.0/mp.so62
-rw-r--r--db/docs_src/ref/upgrade.4.0/rpc.so14
-rw-r--r--db/docs_src/ref/upgrade.4.0/set_lk_max.so14
-rw-r--r--db/docs_src/ref/upgrade.4.0/toc.so24
-rw-r--r--db/docs_src/ref/upgrade.4.0/txn.so41
-rw-r--r--db/docs_src/ref/upgrade.4.1/app_dispatch.so19
-rw-r--r--db/docs_src/ref/upgrade.4.1/checkpoint.so18
-rw-r--r--db/docs_src/ref/upgrade.4.1/cxx.so41
-rw-r--r--db/docs_src/ref/upgrade.4.1/disk.so22
-rw-r--r--db/docs_src/ref/upgrade.4.1/excl.so13
-rw-r--r--db/docs_src/ref/upgrade.4.1/fop.so149
-rw-r--r--db/docs_src/ref/upgrade.4.1/hash_nelem.so12
-rw-r--r--db/docs_src/ref/upgrade.4.1/incomplete.so21
-rw-r--r--db/docs_src/ref/upgrade.4.1/intro.so13
-rw-r--r--db/docs_src/ref/upgrade.4.1/java.so17
-rw-r--r--db/docs_src/ref/upgrade.4.1/log_register.so13
-rw-r--r--db/docs_src/ref/upgrade.4.1/log_stat.so13
-rw-r--r--db/docs_src/ref/upgrade.4.1/memp_sync.so22
-rw-r--r--db/docs_src/ref/upgrade.4.1/toc.so23
-rw-r--r--db/docs_src/ref/upgrade.4.2/cksum.so16
-rw-r--r--db/docs_src/ref/upgrade.4.2/client.so14
-rw-r--r--db/docs_src/ref/upgrade.4.2/del.so22
-rw-r--r--db/docs_src/ref/upgrade.4.2/disk.so15
-rw-r--r--db/docs_src/ref/upgrade.4.2/intro.so13
-rw-r--r--db/docs_src/ref/upgrade.4.2/java.so118
-rw-r--r--db/docs_src/ref/upgrade.4.2/lockng.so45
-rw-r--r--db/docs_src/ref/upgrade.4.2/nosync.so23
-rw-r--r--db/docs_src/ref/upgrade.4.2/priority.so17
-rw-r--r--db/docs_src/ref/upgrade.4.2/queue.so28
-rw-r--r--db/docs_src/ref/upgrade.4.2/repinit.so37
-rw-r--r--db/docs_src/ref/upgrade.4.2/tcl.so11
-rw-r--r--db/docs_src/ref/upgrade.4.2/toc.so23
-rw-r--r--db/docs_src/ref/upgrade.4.2/verify.so22
-rw-r--r--db/docs_src/ref/upgrade.4.3/cput.so13
-rw-r--r--db/docs_src/ref/upgrade.4.3/disk.so15
-rw-r--r--db/docs_src/ref/upgrade.4.3/enomem.so38
-rw-r--r--db/docs_src/ref/upgrade.4.3/err.so28
-rw-r--r--db/docs_src/ref/upgrade.4.3/fileopen.so11
-rw-r--r--db/docs_src/ref/upgrade.4.3/intro.so13
-rw-r--r--db/docs_src/ref/upgrade.4.3/java.so72
-rw-r--r--db/docs_src/ref/upgrade.4.3/log.so24
-rw-r--r--db/docs_src/ref/upgrade.4.3/repl.so29
-rw-r--r--db/docs_src/ref/upgrade.4.3/rtc.so12
-rw-r--r--db/docs_src/ref/upgrade.4.3/stat.so15
-rw-r--r--db/docs_src/ref/upgrade.4.3/toc.so23
-rw-r--r--db/docs_src/ref/upgrade.4.3/verb.so22
-rw-r--r--db/docs_src/ref/upgrade.4.4/autocommit.so34
-rw-r--r--db/docs_src/ref/upgrade.4.4/clear.so21
-rw-r--r--db/docs_src/ref/upgrade.4.4/disk.so15
-rw-r--r--db/docs_src/ref/upgrade.4.4/intro.so13
-rw-r--r--db/docs_src/ref/upgrade.4.4/isolation.so15
-rw-r--r--db/docs_src/ref/upgrade.4.4/joinenv.so59
-rw-r--r--db/docs_src/ref/upgrade.4.4/lockstat.so15
-rw-r--r--db/docs_src/ref/upgrade.4.4/mutex.so23
-rw-r--r--db/docs_src/ref/upgrade.4.4/toc.so18
-rw-r--r--db/docs_src/ref/upgrade.4.5/alive.so19
-rw-r--r--db/docs_src/ref/upgrade.4.5/applog.so25
-rw-r--r--db/docs_src/ref/upgrade.4.5/collect.so18
-rw-r--r--db/docs_src/ref/upgrade.4.5/config.so19
-rw-r--r--db/docs_src/ref/upgrade.4.5/deprecate.so27
-rw-r--r--db/docs_src/ref/upgrade.4.5/disk.so15
-rw-r--r--db/docs_src/ref/upgrade.4.5/elect.so30
-rw-r--r--db/docs_src/ref/upgrade.4.5/intro.so13
-rw-r--r--db/docs_src/ref/upgrade.4.5/memp.so21
-rw-r--r--db/docs_src/ref/upgrade.4.5/pagesize.so14
-rw-r--r--db/docs_src/ref/upgrade.4.5/paniccall.so23
-rw-r--r--db/docs_src/ref/upgrade.4.5/rep_event.so18
-rw-r--r--db/docs_src/ref/upgrade.4.5/rep_set.so19
-rw-r--r--db/docs_src/ref/upgrade.4.5/source.so28
-rw-r--r--db/docs_src/ref/upgrade.4.5/toc.so24
-rw-r--r--db/docs_src/ref/upgrade.4.6/cursor.so26
-rw-r--r--db/docs_src/ref/upgrade.4.6/disk.so22
-rw-r--r--db/docs_src/ref/upgrade.4.6/event.so46
-rw-r--r--db/docs_src/ref/upgrade.4.6/full_election.so19
-rw-r--r--db/docs_src/ref/upgrade.4.6/intro.so13
-rw-r--r--db/docs_src/ref/upgrade.4.6/memp_fput.so18
-rw-r--r--db/docs_src/ref/upgrade.4.6/memp_fset.so13
-rw-r--r--db/docs_src/ref/upgrade.4.6/toc.so20
-rw-r--r--db/docs_src/ref/upgrade.4.6/verb.so15
-rw-r--r--db/docs_src/ref/upgrade.4.6/verbose.so41
-rw-r--r--db/docs_src/ref/upgrade.4.6/win.so12
-rw-r--r--db/docs_src/ref/upgrade/process.so186
-rw-r--r--db/docs_src/ref/upgrade/version.so43
-rw-r--r--db/docs_src/ref/xa/build.so210
-rw-r--r--db/docs_src/ref/xa/faq.so73
-rw-r--r--db/docs_src/ref/xa/intro.so44
-rw-r--r--db/docs_src/ref/xa/xa_config.so107
-rw-r--r--db/docs_src/ref/xa/xa_intro.so70
-rw-r--r--db/docs_src/rep/m4.methods31
-rw-r--r--db/docs_src/rep/rep_config.so87
-rw-r--r--db/docs_src/rep/rep_elect.so117
-rw-r--r--db/docs_src/rep/rep_limit.so60
-rw-r--r--db/docs_src/rep/rep_list.so7
-rw-r--r--db/docs_src/rep/rep_message.so114
-rw-r--r--db/docs_src/rep/rep_nsites.so47
-rw-r--r--db/docs_src/rep/rep_priority.so41
-rw-r--r--db/docs_src/rep/rep_request.so69
-rw-r--r--db/docs_src/rep/rep_start.so61
-rw-r--r--db/docs_src/rep/rep_stat.so236
-rw-r--r--db/docs_src/rep/rep_sync.so38
-rw-r--r--db/docs_src/rep/rep_timeout.so94
-rw-r--r--db/docs_src/rep/rep_transport.so113
-rw-r--r--db/docs_src/rep/repmgr_ack_policy.so86
-rw-r--r--db/docs_src/rep/repmgr_local_site.so33
-rw-r--r--db/docs_src/rep/repmgr_remote_site.so48
-rw-r--r--db/docs_src/rep/repmgr_site_list.so59
-rw-r--r--db/docs_src/rep/repmgr_start.so93
-rw-r--r--db/docs_src/rep/repmgr_stat.so76
-rw-r--r--db/docs_src/rtc/set_func_close.so23
-rw-r--r--db/docs_src/rtc/set_func_dirfree.so34
-rw-r--r--db/docs_src/rtc/set_func_dirlist.so39
-rw-r--r--db/docs_src/rtc/set_func_exists.so36
-rw-r--r--db/docs_src/rtc/set_func_free.so23
-rw-r--r--db/docs_src/rtc/set_func_fsync.so23
-rw-r--r--db/docs_src/rtc/set_func_ftruncate.so34
-rw-r--r--db/docs_src/rtc/set_func_ioinfo.so45
-rw-r--r--db/docs_src/rtc/set_func_malloc.so23
-rw-r--r--db/docs_src/rtc/set_func_map.so50
-rw-r--r--db/docs_src/rtc/set_func_open.so23
-rw-r--r--db/docs_src/rtc/set_func_pread.so23
-rw-r--r--db/docs_src/rtc/set_func_pwrite.so23
-rw-r--r--db/docs_src/rtc/set_func_read.so23
-rw-r--r--db/docs_src/rtc/set_func_realloc.so23
-rw-r--r--db/docs_src/rtc/set_func_rename.so23
-rw-r--r--db/docs_src/rtc/set_func_seek.so40
-rw-r--r--db/docs_src/rtc/set_func_sleep.so38
-rw-r--r--db/docs_src/rtc/set_func_unlink.so23
-rw-r--r--db/docs_src/rtc/set_func_unmap.so36
-rw-r--r--db/docs_src/rtc/set_func_write.so24
-rw-r--r--db/docs_src/rtc/set_func_yield.so47
-rw-r--r--db/docs_src/seq/m4.methods21
-rw-r--r--db/docs_src/seq/seq_class.so71
-rw-r--r--db/docs_src/seq/seq_close.so31
-rw-r--r--db/docs_src/seq/seq_get.so75
-rw-r--r--db/docs_src/seq/seq_initial_value.so34
-rw-r--r--db/docs_src/seq/seq_list.so7
-rw-r--r--db/docs_src/seq/seq_open.so87
-rw-r--r--db/docs_src/seq/seq_remove.so41
-rw-r--r--db/docs_src/seq/seq_set_cachesize.so41
-rw-r--r--db/docs_src/seq/seq_set_flags.so63
-rw-r--r--db/docs_src/seq/seq_set_range.so57
-rw-r--r--db/docs_src/seq/seq_stat.so95
-rw-r--r--db/docs_src/spell.ok1240
-rw-r--r--db/docs_src/support/Xindex53
-rw-r--r--db/docs_src/support/check797
-rw-r--r--db/docs_src/support/copy8
-rw-r--r--db/docs_src/support/html.sed9
-rw-r--r--db/docs_src/support/static.src3
-rw-r--r--db/docs_src/support/suffix25
-rw-r--r--db/docs_src/tcl/api_tcl.so51
-rw-r--r--db/docs_src/tcl/db_close.so50
-rw-r--r--db/docs_src/tcl/db_count.so18
-rw-r--r--db/docs_src/tcl/db_cursor.so29
-rw-r--r--db/docs_src/tcl/db_del.so37
-rw-r--r--db/docs_src/tcl/db_get.so105
-rw-r--r--db/docs_src/tcl/db_get_join.so31
-rw-r--r--db/docs_src/tcl/db_get_type.so16
-rw-r--r--db/docs_src/tcl/db_is_byteswapped.so20
-rw-r--r--db/docs_src/tcl/db_join.so36
-rw-r--r--db/docs_src/tcl/db_open.so359
-rw-r--r--db/docs_src/tcl/db_put.so55
-rw-r--r--db/docs_src/tcl/db_remove.so56
-rw-r--r--db/docs_src/tcl/db_rename.so57
-rw-r--r--db/docs_src/tcl/db_stat.so28
-rw-r--r--db/docs_src/tcl/db_sync.so19
-rw-r--r--db/docs_src/tcl/db_truncate.so29
-rw-r--r--db/docs_src/tcl/dbc_close.so19
-rw-r--r--db/docs_src/tcl/dbc_del.so21
-rw-r--r--db/docs_src/tcl/dbc_dup.so33
-rw-r--r--db/docs_src/tcl/dbc_get.so212
-rw-r--r--db/docs_src/tcl/dbc_put.so130
-rw-r--r--db/docs_src/tcl/env_close.so29
-rw-r--r--db/docs_src/tcl/env_dbremove.so33
-rw-r--r--db/docs_src/tcl/env_dbrename.so34
-rw-r--r--db/docs_src/tcl/env_open.so147
-rw-r--r--db/docs_src/tcl/env_remove.so54
-rw-r--r--db/docs_src/tcl/m4.tcl178
-rw-r--r--db/docs_src/tcl/txn.so61
-rw-r--r--db/docs_src/tcl/txn_abort.so32
-rw-r--r--db/docs_src/tcl/txn_checkpoint.so36
-rw-r--r--db/docs_src/tcl/txn_commit.so68
-rw-r--r--db/docs_src/tcl/version.so27
-rw-r--r--db/docs_src/txn/env_set_tx_max.so61
-rw-r--r--db/docs_src/txn/env_set_tx_timestamp.so55
-rw-r--r--db/docs_src/txn/m4.methods26
-rw-r--r--db/docs_src/txn/txn_abort.so38
-rw-r--r--db/docs_src/txn/txn_begin.so150
-rw-r--r--db/docs_src/txn/txn_checkpoint.so50
-rw-r--r--db/docs_src/txn/txn_class.so61
-rw-r--r--db/docs_src/txn/txn_commit.so72
-rw-r--r--db/docs_src/txn/txn_discard.so41
-rw-r--r--db/docs_src/txn/txn_id.so23
-rw-r--r--db/docs_src/txn/txn_list.so7
-rw-r--r--db/docs_src/txn/txn_prepare.so47
-rw-r--r--db/docs_src/txn/txn_recover.so86
-rw-r--r--db/docs_src/txn/txn_set_name.so48
-rw-r--r--db/docs_src/txn/txn_set_timeout.so60
-rw-r--r--db/docs_src/txn/txn_stat.so152
-rw-r--r--db/docs_src/utility/berkeley_db_svc.so60
-rw-r--r--db/docs_src/utility/db_archive.so84
-rw-r--r--db/docs_src/utility/db_checkpoint.so70
-rw-r--r--db/docs_src/utility/db_codegen.so279
-rw-r--r--db/docs_src/utility/db_deadlock.so79
-rw-r--r--db/docs_src/utility/db_dump.so133
-rw-r--r--db/docs_src/utility/db_hotbackup.so148
-rw-r--r--db/docs_src/utility/db_load.so186
-rw-r--r--db/docs_src/utility/db_printlog.so45
-rw-r--r--db/docs_src/utility/db_recover.so89
-rw-r--r--db/docs_src/utility/db_stat.so110
-rw-r--r--db/docs_src/utility/db_upgrade.so72
-rw-r--r--db/docs_src/utility/db_verify.so59
-rw-r--r--db/docs_src/utility/index.so30
-rw-r--r--db/env/db_salloc.c356
-rw-r--r--db/env/db_shash.c114
-rw-r--r--db/env/env_alloc.c455
-rw-r--r--db/env/env_config.c25
-rw-r--r--db/env/env_failchk.c79
-rw-r--r--db/env/env_file.c7
-rw-r--r--db/env/env_globals.c18
-rw-r--r--db/env/env_method.c231
-rw-r--r--db/env/env_name.c262
-rw-r--r--db/env/env_open.c530
-rw-r--r--db/env/env_recover.c142
-rw-r--r--db/env/env_region.c529
-rw-r--r--db/env/env_register.c12
-rw-r--r--db/env/env_stat.c66
-rw-r--r--db/examples_c/bench_001.c9
-rw-r--r--db/examples_c/csv/DbRecord.c5
-rw-r--r--db/examples_c/csv/README5
-rw-r--r--db/examples_c/csv/code.c5
-rw-r--r--db/examples_c/csv/csv.h13
-rw-r--r--db/examples_c/csv/csv_extern.h5
-rw-r--r--db/examples_c/csv/db.c5
-rw-r--r--db/examples_c/csv/load.c5
-rw-r--r--db/examples_c/csv/load_main.c5
-rw-r--r--db/examples_c/csv/query.c5
-rw-r--r--db/examples_c/csv/query_main.c5
-rw-r--r--db/examples_c/csv/util.c5
-rw-r--r--db/examples_c/ex_access.c11
-rw-r--r--db/examples_c/ex_apprec/ex_apprec.c5
-rw-r--r--db/examples_c/ex_apprec/ex_apprec.h5
-rw-r--r--db/examples_c/ex_apprec/ex_apprec.src5
-rw-r--r--db/examples_c/ex_apprec/ex_apprec_rec.c5
-rw-r--r--db/examples_c/ex_btrec.c17
-rw-r--r--db/examples_c/ex_dbclient.c5
-rw-r--r--db/examples_c/ex_env.c5
-rw-r--r--db/examples_c/ex_lock.c5
-rw-r--r--db/examples_c/ex_mpool.c7
-rw-r--r--db/examples_c/ex_rep/base/rep_base.c76
-rw-r--r--db/examples_c/ex_rep/base/rep_base.h20
-rw-r--r--db/examples_c/ex_rep/base/rep_msg.c69
-rw-r--r--db/examples_c/ex_rep/base/rep_net.c15
-rw-r--r--db/examples_c/ex_rep/common/rep_common.c133
-rw-r--r--db/examples_c/ex_rep/common/rep_common.h11
-rw-r--r--db/examples_c/ex_rep/mgr/rep_mgr.c74
-rw-r--r--db/examples_c/ex_repquote/ex_repquote.h128
-rw-r--r--db/examples_c/ex_repquote/ex_rq_client.c274
-rw-r--r--db/examples_c/ex_repquote/ex_rq_main.c322
-rw-r--r--db/examples_c/ex_repquote/ex_rq_master.c169
-rw-r--r--db/examples_c/ex_repquote/ex_rq_net.c749
-rw-r--r--db/examples_c/ex_repquote/ex_rq_util.c438
-rw-r--r--db/examples_c/ex_sequence.c5
-rw-r--r--db/examples_c/ex_thread.c9
-rw-r--r--db/examples_c/ex_tpcb.c27
-rw-r--r--db/examples_c/ex_tpcb.h39
-rw-r--r--db/examples_c/getting_started/example_database_load.c3
-rw-r--r--db/examples_c/getting_started/example_database_read.c13
-rw-r--r--db/examples_c/getting_started/gettingstarted_common.c3
-rw-r--r--db/examples_c/getting_started/gettingstarted_common.h3
-rw-r--r--db/examples_c/txn_guide/txn_guide.c4
-rw-r--r--db/examples_c/txn_guide/txn_guide_inmemory.c4
-rw-r--r--db/examples_cxx/AccessExample.cpp5
-rw-r--r--db/examples_cxx/BtRecExample.cpp5
-rw-r--r--db/examples_cxx/EnvExample.cpp5
-rw-r--r--db/examples_cxx/LockExample.cpp5
-rw-r--r--db/examples_cxx/MpoolExample.cpp7
-rw-r--r--db/examples_cxx/SequenceExample.cpp5
-rw-r--r--db/examples_cxx/TpcbExample.cpp5
-rw-r--r--db/examples_cxx/excxx_repquote/RepConfigInfo.cpp5
-rw-r--r--db/examples_cxx/excxx_repquote/RepConfigInfo.h6
-rw-r--r--db/examples_cxx/excxx_repquote/RepQuoteExample.cpp11
-rw-r--r--db/examples_cxx/wce_tpcb/Readme.txt6
-rw-r--r--db/examples_cxx/wce_tpcb/TpcbExample.cpp546
-rw-r--r--db/examples_cxx/wce_tpcb/TpcbExample.h63
-rw-r--r--db/examples_cxx/wce_tpcb/TpcbUI.cpp478
-rw-r--r--db/examples_cxx/wce_tpcb/newres.h38
-rw-r--r--db/examples_cxx/wce_tpcb/oracle_bdb.bmpbin0 -> 6278 bytes
-rw-r--r--db/examples_cxx/wce_tpcb/resource.h57
-rw-r--r--db/examples_cxx/wce_tpcb/wce_tpcb.icobin0 -> 1078 bytes
-rw-r--r--db/examples_cxx/wce_tpcb/wce_tpcb.rc176
-rw-r--r--db/examples_java/src/collections/access/AccessExample.java5
-rw-r--r--db/examples_java/src/collections/hello/HelloDatabaseWorld.java5
-rw-r--r--db/examples_java/src/collections/ship/basic/PartData.java5
-rw-r--r--db/examples_java/src/collections/ship/basic/PartKey.java5
-rw-r--r--db/examples_java/src/collections/ship/basic/Sample.java5
-rw-r--r--db/examples_java/src/collections/ship/basic/SampleDatabase.java5
-rw-r--r--db/examples_java/src/collections/ship/basic/SampleViews.java5
-rw-r--r--db/examples_java/src/collections/ship/basic/ShipmentData.java5
-rw-r--r--db/examples_java/src/collections/ship/basic/ShipmentKey.java5
-rw-r--r--db/examples_java/src/collections/ship/basic/SupplierData.java5
-rw-r--r--db/examples_java/src/collections/ship/basic/SupplierKey.java5
-rw-r--r--db/examples_java/src/collections/ship/basic/Weight.java5
-rw-r--r--db/examples_java/src/collections/ship/entity/Part.java5
-rw-r--r--db/examples_java/src/collections/ship/entity/PartData.java5
-rw-r--r--db/examples_java/src/collections/ship/entity/PartKey.java5
-rw-r--r--db/examples_java/src/collections/ship/entity/Sample.java5
-rw-r--r--db/examples_java/src/collections/ship/entity/SampleDatabase.java5
-rw-r--r--db/examples_java/src/collections/ship/entity/SampleViews.java5
-rw-r--r--db/examples_java/src/collections/ship/entity/Shipment.java5
-rw-r--r--db/examples_java/src/collections/ship/entity/ShipmentData.java5
-rw-r--r--db/examples_java/src/collections/ship/entity/ShipmentKey.java5
-rw-r--r--db/examples_java/src/collections/ship/entity/Supplier.java5
-rw-r--r--db/examples_java/src/collections/ship/entity/SupplierData.java5
-rw-r--r--db/examples_java/src/collections/ship/entity/SupplierKey.java5
-rw-r--r--db/examples_java/src/collections/ship/entity/Weight.java5
-rw-r--r--db/examples_java/src/collections/ship/factory/Part.java5
-rw-r--r--db/examples_java/src/collections/ship/factory/PartKey.java5
-rw-r--r--db/examples_java/src/collections/ship/factory/Sample.java5
-rw-r--r--db/examples_java/src/collections/ship/factory/SampleDatabase.java5
-rw-r--r--db/examples_java/src/collections/ship/factory/SampleViews.java5
-rw-r--r--db/examples_java/src/collections/ship/factory/Shipment.java5
-rw-r--r--db/examples_java/src/collections/ship/factory/ShipmentKey.java5
-rw-r--r--db/examples_java/src/collections/ship/factory/Supplier.java5
-rw-r--r--db/examples_java/src/collections/ship/factory/SupplierKey.java5
-rw-r--r--db/examples_java/src/collections/ship/factory/Weight.java5
-rw-r--r--db/examples_java/src/collections/ship/index/PartData.java5
-rw-r--r--db/examples_java/src/collections/ship/index/PartKey.java5
-rw-r--r--db/examples_java/src/collections/ship/index/Sample.java5
-rw-r--r--db/examples_java/src/collections/ship/index/SampleDatabase.java5
-rw-r--r--db/examples_java/src/collections/ship/index/SampleViews.java5
-rw-r--r--db/examples_java/src/collections/ship/index/ShipmentData.java5
-rw-r--r--db/examples_java/src/collections/ship/index/ShipmentKey.java5
-rw-r--r--db/examples_java/src/collections/ship/index/SupplierData.java5
-rw-r--r--db/examples_java/src/collections/ship/index/SupplierKey.java5
-rw-r--r--db/examples_java/src/collections/ship/index/Weight.java5
-rw-r--r--db/examples_java/src/collections/ship/marshal/MarshalledEnt.java5
-rw-r--r--db/examples_java/src/collections/ship/marshal/MarshalledKey.java5
-rw-r--r--db/examples_java/src/collections/ship/marshal/Part.java5
-rw-r--r--db/examples_java/src/collections/ship/marshal/PartKey.java5
-rw-r--r--db/examples_java/src/collections/ship/marshal/Sample.java5
-rw-r--r--db/examples_java/src/collections/ship/marshal/SampleDatabase.java5
-rw-r--r--db/examples_java/src/collections/ship/marshal/SampleViews.java5
-rw-r--r--db/examples_java/src/collections/ship/marshal/Shipment.java5
-rw-r--r--db/examples_java/src/collections/ship/marshal/ShipmentKey.java5
-rw-r--r--db/examples_java/src/collections/ship/marshal/Supplier.java5
-rw-r--r--db/examples_java/src/collections/ship/marshal/SupplierKey.java5
-rw-r--r--db/examples_java/src/collections/ship/marshal/Weight.java5
-rw-r--r--db/examples_java/src/collections/ship/sentity/Part.java5
-rw-r--r--db/examples_java/src/collections/ship/sentity/PartKey.java5
-rw-r--r--db/examples_java/src/collections/ship/sentity/Sample.java5
-rw-r--r--db/examples_java/src/collections/ship/sentity/SampleDatabase.java5
-rw-r--r--db/examples_java/src/collections/ship/sentity/SampleViews.java5
-rw-r--r--db/examples_java/src/collections/ship/sentity/Shipment.java5
-rw-r--r--db/examples_java/src/collections/ship/sentity/ShipmentKey.java5
-rw-r--r--db/examples_java/src/collections/ship/sentity/Supplier.java5
-rw-r--r--db/examples_java/src/collections/ship/sentity/SupplierKey.java5
-rw-r--r--db/examples_java/src/collections/ship/sentity/Weight.java5
-rw-r--r--db/examples_java/src/collections/ship/tuple/Part.java5
-rw-r--r--db/examples_java/src/collections/ship/tuple/PartData.java5
-rw-r--r--db/examples_java/src/collections/ship/tuple/PartKey.java5
-rw-r--r--db/examples_java/src/collections/ship/tuple/Sample.java5
-rw-r--r--db/examples_java/src/collections/ship/tuple/SampleDatabase.java5
-rw-r--r--db/examples_java/src/collections/ship/tuple/SampleViews.java5
-rw-r--r--db/examples_java/src/collections/ship/tuple/Shipment.java5
-rw-r--r--db/examples_java/src/collections/ship/tuple/ShipmentData.java5
-rw-r--r--db/examples_java/src/collections/ship/tuple/ShipmentKey.java5
-rw-r--r--db/examples_java/src/collections/ship/tuple/Supplier.java5
-rw-r--r--db/examples_java/src/collections/ship/tuple/SupplierData.java5
-rw-r--r--db/examples_java/src/collections/ship/tuple/SupplierKey.java5
-rw-r--r--db/examples_java/src/collections/ship/tuple/Weight.java5
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/access/AccessExample.java286
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/hello/HelloDatabaseWorld.java163
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/basic/PartData.java65
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/basic/PartKey.java41
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/basic/Sample.java267
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/basic/SampleDatabase.java135
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/basic/SampleViews.java123
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/basic/ShipmentData.java42
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/basic/ShipmentKey.java49
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/basic/SupplierData.java58
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/basic/SupplierKey.java41
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/basic/Weight.java50
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/entity/Part.java73
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/entity/PartData.java66
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/entity/PartKey.java41
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/entity/Sample.java250
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/entity/SampleDatabase.java330
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/entity/SampleViews.java307
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/entity/Shipment.java56
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/entity/ShipmentData.java43
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/entity/ShipmentKey.java49
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/entity/Supplier.java64
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/entity/SupplierData.java59
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/entity/SupplierKey.java41
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/entity/Weight.java50
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/factory/Part.java107
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/factory/PartKey.java61
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/factory/Sample.java248
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/factory/SampleDatabase.java225
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/factory/SampleViews.java143
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/factory/Shipment.java103
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/factory/ShipmentKey.java71
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/factory/Supplier.java109
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/factory/SupplierKey.java61
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/factory/Weight.java50
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/index/PartData.java65
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/index/PartKey.java41
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/index/Sample.java303
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/index/SampleDatabase.java330
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/index/SampleViews.java162
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/index/ShipmentData.java42
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/index/ShipmentKey.java49
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/index/SupplierData.java58
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/index/SupplierKey.java41
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/index/Weight.java50
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/marshal/MarshalledEnt.java43
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/marshal/MarshalledKey.java37
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/marshal/Part.java117
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/marshal/PartKey.java60
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/marshal/Sample.java250
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/marshal/SampleDatabase.java259
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/marshal/SampleViews.java277
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/marshal/Shipment.java114
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/marshal/ShipmentKey.java70
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/marshal/Supplier.java119
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/marshal/SupplierKey.java60
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/marshal/Weight.java50
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/sentity/Part.java91
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/sentity/PartKey.java39
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/sentity/Sample.java250
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/sentity/SampleDatabase.java322
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/sentity/SampleViews.java420
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/sentity/Shipment.java76
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/sentity/ShipmentKey.java47
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/sentity/Supplier.java83
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/sentity/SupplierKey.java39
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/sentity/Weight.java50
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/tuple/Part.java73
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/tuple/PartData.java66
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/tuple/PartKey.java39
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/tuple/Sample.java249
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/tuple/SampleDatabase.java322
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/tuple/SampleViews.java397
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/tuple/Shipment.java56
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/tuple/ShipmentData.java43
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/tuple/ShipmentKey.java47
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/tuple/Supplier.java64
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/tuple/SupplierData.java59
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/tuple/SupplierKey.java39
-rw-r--r--db/examples_java/src/com/sleepycat/examples/collections/ship/tuple/Weight.java50
-rw-r--r--db/examples_java/src/com/sleepycat/examples/db/AccessExample.java183
-rw-r--r--db/examples_java/src/com/sleepycat/examples/db/BtRecExample.java289
-rw-r--r--db/examples_java/src/com/sleepycat/examples/db/BulkAccessExample.java162
-rw-r--r--db/examples_java/src/com/sleepycat/examples/db/EnvExample.java116
-rw-r--r--db/examples_java/src/com/sleepycat/examples/db/GettingStarted/ExampleDatabaseLoad.java228
-rw-r--r--db/examples_java/src/com/sleepycat/examples/db/GettingStarted/ExampleDatabaseRead.java202
-rw-r--r--db/examples_java/src/com/sleepycat/examples/db/GettingStarted/Inventory.java62
-rw-r--r--db/examples_java/src/com/sleepycat/examples/db/GettingStarted/InventoryBinding.java46
-rw-r--r--db/examples_java/src/com/sleepycat/examples/db/GettingStarted/ItemNameKeyCreator.java37
-rw-r--r--db/examples_java/src/com/sleepycat/examples/db/GettingStarted/MyDbs.java157
-rw-r--r--db/examples_java/src/com/sleepycat/examples/db/GettingStarted/Vendor.java82
-rw-r--r--db/examples_java/src/com/sleepycat/examples/db/GettingStarted/inventory.txt800
-rw-r--r--db/examples_java/src/com/sleepycat/examples/db/GettingStarted/vendors.txt6
-rw-r--r--db/examples_java/src/com/sleepycat/examples/db/LockExample.java212
-rw-r--r--db/examples_java/src/com/sleepycat/examples/db/RPCExample.java107
-rw-r--r--db/examples_java/src/com/sleepycat/examples/db/SequenceExample.java93
-rw-r--r--db/examples_java/src/com/sleepycat/examples/db/TpcbExample.java811
-rw-r--r--db/examples_java/src/db/AccessExample.java5
-rw-r--r--db/examples_java/src/db/BtRecExample.java5
-rw-r--r--db/examples_java/src/db/BulkAccessExample.java5
-rw-r--r--db/examples_java/src/db/BulkAccessNIOExample.java5
-rw-r--r--db/examples_java/src/db/EnvExample.java5
-rw-r--r--db/examples_java/src/db/LockExample.java5
-rw-r--r--db/examples_java/src/db/RPCExample.java5
-rw-r--r--db/examples_java/src/db/SequenceExample.java5
-rw-r--r--db/examples_java/src/db/TpcbExample.java5
-rw-r--r--db/examples_java/src/db/repquote/RepConfig.java5
-rw-r--r--db/examples_java/src/db/repquote/RepQuoteEnvironment.java5
-rw-r--r--db/examples_java/src/db/repquote/RepQuoteExample.java46
-rw-r--r--db/fileops/fileops.src14
-rw-r--r--db/fileops/fileops_auto.c88
-rw-r--r--db/fileops/fileops_autop.c3
-rw-r--r--db/fileops/fop_basic.c55
-rw-r--r--db/fileops/fop_rec.c56
-rw-r--r--db/fileops/fop_util.c217
-rw-r--r--db/hash/hash.c468
-rw-r--r--db/hash/hash.src5
-rw-r--r--db/hash/hash_auto.c72
-rw-r--r--db/hash/hash_conv.c5
-rw-r--r--db/hash/hash_dup.c83
-rw-r--r--db/hash/hash_func.c5
-rw-r--r--db/hash/hash_meta.c10
-rw-r--r--db/hash/hash_method.c31
-rw-r--r--db/hash/hash_open.c49
-rw-r--r--db/hash/hash_page.c991
-rw-r--r--db/hash/hash_rec.c273
-rw-r--r--db/hash/hash_reclaim.c9
-rw-r--r--db/hash/hash_stat.c25
-rw-r--r--db/hash/hash_stub.c45
-rw-r--r--db/hash/hash_upgrade.c62
-rw-r--r--db/hash/hash_verify.c52
-rw-r--r--db/hmac/hmac.c5
-rw-r--r--db/hmac/sha1.c75
-rw-r--r--db/hsearch/hsearch.c5
-rw-r--r--db/include/btree.h317
-rw-r--r--db/include/btree_auto.h267
-rw-r--r--db/include/btree_ext.h122
-rw-r--r--db/include/clib_ext.h38
-rw-r--r--db/include/common_ext.h44
-rw-r--r--db/include/crdel_auto.h88
-rw-r--r--db/include/cxx_common.h45
-rw-r--r--db/include/cxx_except.h78
-rw-r--r--db/include/cxx_int.h96
-rw-r--r--db/include/db.in1388
-rw-r--r--db/include/db.src1375
-rw-r--r--db/include/db_185.h175
-rw-r--r--db/include/db_185.in165
-rw-r--r--db/include/db_am.h131
-rw-r--r--db/include/db_auto.h140
-rw-r--r--db/include/db_cxx.h652
-rw-r--r--db/include/db_dispatch.h95
-rw-r--r--db/include/db_ext.h208
-rw-r--r--db/include/db_int.in442
-rw-r--r--db/include/db_int.src397
-rw-r--r--db/include/db_join.h30
-rw-r--r--db/include/db_page.h576
-rw-r--r--db/include/db_server.h762
-rw-r--r--db/include/db_server_int.h85
-rw-r--r--db/include/db_shash.h77
-rw-r--r--db/include/db_swap.h115
-rw-r--r--db/include/db_upgrade.h174
-rw-r--r--db/include/db_verify.h191
-rw-r--r--db/include/debug.h104
-rw-r--r--db/include/env_ext.h35
-rw-r--r--db/include/gen_client_ext.h121
-rw-r--r--db/include/gen_server_ext.h106
-rw-r--r--db/include/hash.h140
-rw-r--r--db/include/hash_auto.h248
-rw-r--r--db/include/hash_ext.h106
-rw-r--r--db/include/lock.h190
-rw-r--r--db/include/lock_ext.h39
-rw-r--r--db/include/log_auto.h39
-rw-r--r--db/include/log_ext.h33
-rw-r--r--db/include/mp.h244
-rw-r--r--db/include/mp_ext.h33
-rw-r--r--db/include/mutex.h744
-rw-r--r--db/include/mutex_ext.h31
-rw-r--r--db/include/os.h46
-rw-r--r--db/include/os_ext.h62
-rw-r--r--db/include/os_jump.h34
-rw-r--r--db/include/qam.h150
-rw-r--r--db/include/qam_auto.h129
-rw-r--r--db/include/qam_ext.h56
-rw-r--r--db/include/queue.h319
-rw-r--r--db/include/region.h292
-rw-r--r--db/include/rpc_client_ext.h19
-rw-r--r--db/include/rpc_server_ext.h21
-rw-r--r--db/include/shqueue.h337
-rw-r--r--db/include/tcl_db.h219
-rw-r--r--db/include/tcl_ext.h89
-rw-r--r--db/include/txn.h150
-rw-r--r--db/include/txn_auto.h114
-rw-r--r--db/include/txn_ext.h24
-rw-r--r--db/include/xa.h179
-rw-r--r--db/include/xa_ext.h17
-rw-r--r--db/include_auto/btree_auto.h209
-rw-r--r--db/include_auto/btree_ext.h133
-rw-r--r--db/include_auto/btree_ext.in256
-rw-r--r--db/include_auto/clib_ext.h39
-rw-r--r--db/include_auto/clib_ext.in48
-rw-r--r--db/include_auto/common_ext.h40
-rw-r--r--db/include_auto/common_ext.in64
-rw-r--r--db/include_auto/crdel_auto.h63
-rw-r--r--db/include_auto/db185_ext.in11
-rw-r--r--db/include_auto/db185_uext.in12
-rw-r--r--db/include_auto/db_auto.h108
-rw-r--r--db/include_auto/db_ext.h205
-rw-r--r--db/include_auto/db_ext.in400
-rw-r--r--db/include_auto/db_server.h904
-rw-r--r--db/include_auto/db_server.in994
-rw-r--r--db/include_auto/env_ext.h34
-rw-r--r--db/include_auto/env_ext.in58
-rw-r--r--db/include_auto/global_ext.in124
-rw-r--r--db/include_auto/global_uext.in213
-rw-r--r--db/include_auto/hash_auto.h195
-rw-r--r--db/include_auto/hash_ext.h121
-rw-r--r--db/include_auto/hash_ext.in232
-rw-r--r--db/include_auto/lock_ext.h34
-rw-r--r--db/include_auto/lock_ext.in58
-rw-r--r--db/include_auto/log_auto.h30
-rw-r--r--db/include_auto/log_ext.h37
-rw-r--r--db/include_auto/log_ext.in64
-rw-r--r--db/include_auto/mp_ext.h32
-rw-r--r--db/include_auto/mp_ext.in54
-rw-r--r--db/include_auto/mutex_ext.h28
-rw-r--r--db/include_auto/mutex_ext.in46
-rw-r--r--db/include_auto/os_ext.h61
-rw-r--r--db/include_auto/os_ext.in110
-rw-r--r--db/include_auto/qam_auto.h95
-rw-r--r--db/include_auto/qam_ext.h70
-rw-r--r--db/include_auto/qam_ext.in130
-rw-r--r--db/include_auto/rpc_client_ext.h153
-rw-r--r--db/include_auto/rpc_client_ext.in296
-rw-r--r--db/include_auto/rpc_defs.in4
-rw-r--r--db/include_auto/rpc_server_ext.h110
-rw-r--r--db/include_auto/rpc_server_ext.in165
-rw-r--r--db/include_auto/tcl_ext.h66
-rw-r--r--db/include_auto/tcl_ext.in118
-rw-r--r--db/include_auto/txn_auto.h84
-rw-r--r--db/include_auto/txn_ext.h47
-rw-r--r--db/include_auto/txn_ext.in84
-rw-r--r--db/include_auto/xa_ext.h17
-rw-r--r--db/include_auto/xa_ext.in24
-rw-r--r--db/java/src/com/sleepycat/bind/ByteArrayBinding.java5
-rw-r--r--db/java/src/com/sleepycat/bind/EntityBinding.java5
-rw-r--r--db/java/src/com/sleepycat/bind/EntryBinding.java5
-rw-r--r--db/java/src/com/sleepycat/bind/RecordNumberBinding.java5
-rw-r--r--db/java/src/com/sleepycat/bind/serial/ClassCatalog.java5
-rw-r--r--db/java/src/com/sleepycat/bind/serial/SerialBase.java5
-rw-r--r--db/java/src/com/sleepycat/bind/serial/SerialBinding.java7
-rw-r--r--db/java/src/com/sleepycat/bind/serial/SerialInput.java5
-rw-r--r--db/java/src/com/sleepycat/bind/serial/SerialOutput.java7
-rw-r--r--db/java/src/com/sleepycat/bind/serial/SerialSerialBinding.java5
-rw-r--r--db/java/src/com/sleepycat/bind/serial/SerialSerialKeyCreator.java5
-rw-r--r--db/java/src/com/sleepycat/bind/serial/StoredClassCatalog.java5
-rw-r--r--db/java/src/com/sleepycat/bind/serial/TupleSerialBinding.java5
-rw-r--r--db/java/src/com/sleepycat/bind/serial/TupleSerialKeyCreator.java5
-rw-r--r--db/java/src/com/sleepycat/bind/serial/TupleSerialMarshalledBinding.java7
-rw-r--r--db/java/src/com/sleepycat/bind/serial/TupleSerialMarshalledKeyCreator.java5
-rw-r--r--db/java/src/com/sleepycat/bind/tuple/BigIntegerBinding.java71
-rw-r--r--db/java/src/com/sleepycat/bind/tuple/BooleanBinding.java5
-rw-r--r--db/java/src/com/sleepycat/bind/tuple/ByteBinding.java5
-rw-r--r--db/java/src/com/sleepycat/bind/tuple/CharacterBinding.java5
-rw-r--r--db/java/src/com/sleepycat/bind/tuple/DoubleBinding.java5
-rw-r--r--db/java/src/com/sleepycat/bind/tuple/FloatBinding.java5
-rw-r--r--db/java/src/com/sleepycat/bind/tuple/IntegerBinding.java5
-rw-r--r--db/java/src/com/sleepycat/bind/tuple/LongBinding.java5
-rw-r--r--db/java/src/com/sleepycat/bind/tuple/MarshalledTupleEntry.java5
-rw-r--r--db/java/src/com/sleepycat/bind/tuple/MarshalledTupleKeyEntity.java5
-rw-r--r--db/java/src/com/sleepycat/bind/tuple/ShortBinding.java5
-rw-r--r--db/java/src/com/sleepycat/bind/tuple/SortedDoubleBinding.java5
-rw-r--r--db/java/src/com/sleepycat/bind/tuple/SortedFloatBinding.java5
-rw-r--r--db/java/src/com/sleepycat/bind/tuple/StringBinding.java5
-rw-r--r--db/java/src/com/sleepycat/bind/tuple/TupleBase.java5
-rw-r--r--db/java/src/com/sleepycat/bind/tuple/TupleBinding.java5
-rw-r--r--db/java/src/com/sleepycat/bind/tuple/TupleInput.java69
-rw-r--r--db/java/src/com/sleepycat/bind/tuple/TupleInputBinding.java5
-rw-r--r--db/java/src/com/sleepycat/bind/tuple/TupleMarshalledBinding.java7
-rw-r--r--db/java/src/com/sleepycat/bind/tuple/TupleOutput.java76
-rw-r--r--db/java/src/com/sleepycat/bind/tuple/TupleTupleBinding.java5
-rw-r--r--db/java/src/com/sleepycat/bind/tuple/TupleTupleKeyCreator.java5
-rw-r--r--db/java/src/com/sleepycat/bind/tuple/TupleTupleMarshalledBinding.java7
-rw-r--r--db/java/src/com/sleepycat/bind/tuple/TupleTupleMarshalledKeyCreator.java5
-rw-r--r--db/java/src/com/sleepycat/collections/BaseIterator.java5
-rw-r--r--db/java/src/com/sleepycat/collections/BlockIterator.java44
-rw-r--r--db/java/src/com/sleepycat/collections/CurrentTransaction.java20
-rw-r--r--db/java/src/com/sleepycat/collections/DataCursor.java33
-rw-r--r--db/java/src/com/sleepycat/collections/DataView.java5
-rw-r--r--db/java/src/com/sleepycat/collections/KeyRange.java299
-rw-r--r--db/java/src/com/sleepycat/collections/KeyRangeException.java26
-rw-r--r--db/java/src/com/sleepycat/collections/MapEntryParameter.java5
-rw-r--r--db/java/src/com/sleepycat/collections/MyRangeCursor.java5
-rw-r--r--db/java/src/com/sleepycat/collections/PrimaryKeyAssigner.java5
-rw-r--r--db/java/src/com/sleepycat/collections/RangeCursor.java874
-rw-r--r--db/java/src/com/sleepycat/collections/StoredCollection.java62
-rw-r--r--db/java/src/com/sleepycat/collections/StoredCollections.java5
-rw-r--r--db/java/src/com/sleepycat/collections/StoredContainer.java18
-rw-r--r--db/java/src/com/sleepycat/collections/StoredEntrySet.java5
-rw-r--r--db/java/src/com/sleepycat/collections/StoredIterator.java15
-rw-r--r--db/java/src/com/sleepycat/collections/StoredKeySet.java5
-rw-r--r--db/java/src/com/sleepycat/collections/StoredList.java9
-rw-r--r--db/java/src/com/sleepycat/collections/StoredMap.java13
-rw-r--r--db/java/src/com/sleepycat/collections/StoredMapEntry.java5
-rw-r--r--db/java/src/com/sleepycat/collections/StoredSortedEntrySet.java5
-rw-r--r--db/java/src/com/sleepycat/collections/StoredSortedKeySet.java5
-rw-r--r--db/java/src/com/sleepycat/collections/StoredSortedMap.java7
-rw-r--r--db/java/src/com/sleepycat/collections/StoredSortedValueSet.java5
-rw-r--r--db/java/src/com/sleepycat/collections/StoredValueSet.java5
-rw-r--r--db/java/src/com/sleepycat/collections/TransactionRunner.java18
-rw-r--r--db/java/src/com/sleepycat/collections/TransactionWorker.java5
-rw-r--r--db/java/src/com/sleepycat/collections/TupleSerialFactory.java5
-rw-r--r--db/java/src/com/sleepycat/collections/package.html7
-rw-r--r--db/java/src/com/sleepycat/compat/DbCompat.java13
-rw-r--r--db/java/src/com/sleepycat/db/BtreePrefixCalculator.java5
-rw-r--r--db/java/src/com/sleepycat/db/BtreeStats.java9
-rw-r--r--db/java/src/com/sleepycat/db/CacheFile.java5
-rw-r--r--db/java/src/com/sleepycat/db/CacheFilePriority.java6
-rw-r--r--db/java/src/com/sleepycat/db/CacheFileStats.java3
-rw-r--r--db/java/src/com/sleepycat/db/CacheStats.java29
-rw-r--r--db/java/src/com/sleepycat/db/CheckpointConfig.java5
-rw-r--r--db/java/src/com/sleepycat/db/CompactConfig.java5
-rw-r--r--db/java/src/com/sleepycat/db/CompactStats.java3
-rw-r--r--db/java/src/com/sleepycat/db/Cursor.java55
-rw-r--r--db/java/src/com/sleepycat/db/CursorConfig.java5
-rw-r--r--db/java/src/com/sleepycat/db/Database.java14
-rw-r--r--db/java/src/com/sleepycat/db/DatabaseConfig.java29
-rw-r--r--db/java/src/com/sleepycat/db/DatabaseEntry.java5
-rw-r--r--db/java/src/com/sleepycat/db/DatabaseException.java5
-rw-r--r--db/java/src/com/sleepycat/db/DatabaseStats.java9
-rw-r--r--db/java/src/com/sleepycat/db/DatabaseType.java5
-rw-r--r--db/java/src/com/sleepycat/db/DbRecoveryInit.java23
-rw-r--r--db/java/src/com/sleepycat/db/DbTxnRecover.java22
-rw-r--r--db/java/src/com/sleepycat/db/DeadlockException.java5
-rw-r--r--db/java/src/com/sleepycat/db/Environment.java28
-rw-r--r--db/java/src/com/sleepycat/db/EnvironmentConfig.java140
-rw-r--r--db/java/src/com/sleepycat/db/ErrorHandler.java5
-rw-r--r--db/java/src/com/sleepycat/db/EventHandler.java23
-rw-r--r--db/java/src/com/sleepycat/db/EventHandlerAdapter.java26
-rw-r--r--db/java/src/com/sleepycat/db/EventType.java68
-rw-r--r--db/java/src/com/sleepycat/db/FeedbackHandler.java5
-rw-r--r--db/java/src/com/sleepycat/db/HashStats.java9
-rw-r--r--db/java/src/com/sleepycat/db/Hasher.java5
-rw-r--r--db/java/src/com/sleepycat/db/JoinConfig.java5
-rw-r--r--db/java/src/com/sleepycat/db/JoinCursor.java5
-rw-r--r--db/java/src/com/sleepycat/db/KeyRange.java5
-rw-r--r--db/java/src/com/sleepycat/db/Lock.java5
-rw-r--r--db/java/src/com/sleepycat/db/LockDetectMode.java5
-rw-r--r--db/java/src/com/sleepycat/db/LockMode.java5
-rw-r--r--db/java/src/com/sleepycat/db/LockNotGrantedException.java5
-rw-r--r--db/java/src/com/sleepycat/db/LockOperation.java5
-rw-r--r--db/java/src/com/sleepycat/db/LockRequest.java5
-rw-r--r--db/java/src/com/sleepycat/db/LockRequestMode.java5
-rw-r--r--db/java/src/com/sleepycat/db/LockStats.java57
-rw-r--r--db/java/src/com/sleepycat/db/LogCursor.java11
-rw-r--r--db/java/src/com/sleepycat/db/LogRecordHandler.java5
-rw-r--r--db/java/src/com/sleepycat/db/LogSequenceNumber.java5
-rw-r--r--db/java/src/com/sleepycat/db/LogStats.java39
-rw-r--r--db/java/src/com/sleepycat/db/MemoryException.java5
-rw-r--r--db/java/src/com/sleepycat/db/MessageHandler.java5
-rw-r--r--db/java/src/com/sleepycat/db/MultipleDataEntry.java5
-rw-r--r--db/java/src/com/sleepycat/db/MultipleEntry.java5
-rw-r--r--db/java/src/com/sleepycat/db/MultipleKeyDataEntry.java5
-rw-r--r--db/java/src/com/sleepycat/db/MultipleKeyNIODataEntry.java5
-rw-r--r--db/java/src/com/sleepycat/db/MultipleNIODataEntry.java5
-rw-r--r--db/java/src/com/sleepycat/db/MultipleRecnoDataEntry.java5
-rw-r--r--db/java/src/com/sleepycat/db/MultipleRecnoNIODataEntry.java5
-rw-r--r--db/java/src/com/sleepycat/db/MutexStats.java3
-rw-r--r--db/java/src/com/sleepycat/db/OperationStatus.java5
-rw-r--r--db/java/src/com/sleepycat/db/PanicHandler.java5
-rw-r--r--db/java/src/com/sleepycat/db/PreparedTransaction.java5
-rw-r--r--db/java/src/com/sleepycat/db/QueueStats.java3
-rw-r--r--db/java/src/com/sleepycat/db/RecordNumberAppender.java5
-rw-r--r--db/java/src/com/sleepycat/db/RecoveryOperation.java5
-rw-r--r--db/java/src/com/sleepycat/db/ReplicationConfig.java5
-rw-r--r--db/java/src/com/sleepycat/db/ReplicationDuplicateMasterException.java5
-rw-r--r--db/java/src/com/sleepycat/db/ReplicationHandleDeadException.java5
-rw-r--r--db/java/src/com/sleepycat/db/ReplicationHoldElectionException.java5
-rw-r--r--db/java/src/com/sleepycat/db/ReplicationHostAddress.java13
-rw-r--r--db/java/src/com/sleepycat/db/ReplicationJoinFailureException.java5
-rw-r--r--db/java/src/com/sleepycat/db/ReplicationLeaseExpiredException.java18
-rw-r--r--db/java/src/com/sleepycat/db/ReplicationLeaseTimeoutException.java18
-rw-r--r--db/java/src/com/sleepycat/db/ReplicationLockoutException.java5
-rw-r--r--db/java/src/com/sleepycat/db/ReplicationManagerAckPolicy.java5
-rw-r--r--db/java/src/com/sleepycat/db/ReplicationManagerStartPolicy.java11
-rw-r--r--db/java/src/com/sleepycat/db/ReplicationManagerStats.java49
-rw-r--r--db/java/src/com/sleepycat/db/ReplicationSiteUnavailableException.java5
-rw-r--r--db/java/src/com/sleepycat/db/ReplicationStats.java33
-rw-r--r--db/java/src/com/sleepycat/db/ReplicationStatus.java11
-rw-r--r--db/java/src/com/sleepycat/db/ReplicationTimeoutType.java15
-rw-r--r--db/java/src/com/sleepycat/db/ReplicationTransport.java5
-rw-r--r--db/java/src/com/sleepycat/db/RunRecoveryException.java5
-rw-r--r--db/java/src/com/sleepycat/db/SecondaryConfig.java36
-rw-r--r--db/java/src/com/sleepycat/db/SecondaryCursor.java5
-rw-r--r--db/java/src/com/sleepycat/db/SecondaryDatabase.java5
-rw-r--r--db/java/src/com/sleepycat/db/SecondaryKeyCreator.java5
-rw-r--r--db/java/src/com/sleepycat/db/SecondaryMultiKeyCreator.java27
-rw-r--r--db/java/src/com/sleepycat/db/Sequence.java5
-rw-r--r--db/java/src/com/sleepycat/db/SequenceConfig.java5
-rw-r--r--db/java/src/com/sleepycat/db/SequenceStats.java3
-rw-r--r--db/java/src/com/sleepycat/db/StatsConfig.java5
-rw-r--r--db/java/src/com/sleepycat/db/Transaction.java11
-rw-r--r--db/java/src/com/sleepycat/db/TransactionConfig.java25
-rw-r--r--db/java/src/com/sleepycat/db/TransactionStats.java15
-rw-r--r--db/java/src/com/sleepycat/db/VerboseConfig.java47
-rw-r--r--db/java/src/com/sleepycat/db/VerifyConfig.java5
-rw-r--r--db/java/src/com/sleepycat/db/VersionMismatchException.java5
-rw-r--r--db/java/src/com/sleepycat/db/internal/Db.java79
-rw-r--r--db/java/src/com/sleepycat/db/internal/DbClient.java17
-rw-r--r--db/java/src/com/sleepycat/db/internal/DbConstants.java87
-rw-r--r--db/java/src/com/sleepycat/db/internal/DbEnv.java109
-rw-r--r--db/java/src/com/sleepycat/db/internal/DbLogc.java2
-rw-r--r--db/java/src/com/sleepycat/db/internal/DbUtil.java5
-rw-r--r--db/java/src/com/sleepycat/db/internal/Dbc.java6
-rw-r--r--db/java/src/com/sleepycat/db/internal/db_javaJNI.java75
-rw-r--r--db/java/src/com/sleepycat/db/package.html5
-rw-r--r--db/java/src/com/sleepycat/util/ExceptionUnwrapper.java5
-rw-r--r--db/java/src/com/sleepycat/util/ExceptionWrapper.java13
-rw-r--r--db/java/src/com/sleepycat/util/FastInputStream.java5
-rw-r--r--db/java/src/com/sleepycat/util/FastOutputStream.java5
-rw-r--r--db/java/src/com/sleepycat/util/IOExceptionWrapper.java5
-rw-r--r--db/java/src/com/sleepycat/util/PackedInteger.java223
-rw-r--r--db/java/src/com/sleepycat/util/RuntimeExceptionWrapper.java5
-rw-r--r--db/java/src/com/sleepycat/util/UtfOps.java5
-rw-r--r--db/java/src/com/sleepycat/util/keyrange/KeyRange.java16
-rw-r--r--db/java/src/com/sleepycat/util/keyrange/KeyRangeException.java5
-rw-r--r--db/java/src/com/sleepycat/util/keyrange/RangeCursor.java5
-rw-r--r--db/libdb_java/db.i122
-rw-r--r--db/libdb_java/db_java.i121
-rw-r--r--db/libdb_java/db_java_wrap.c801
-rw-r--r--db/libdb_java/java_callbacks.i154
-rw-r--r--db/libdb_java/java_except.i16
-rw-r--r--db/libdb_java/java_stat.i1
-rw-r--r--db/libdb_java/java_stat_auto.c41
-rw-r--r--db/libdb_java/java_typemaps.i10
-rw-r--r--db/libdb_java/java_util.i163
-rw-r--r--db/lock/lock.c451
-rw-r--r--db/lock/lock_conflict.c34
-rw-r--r--db/lock/lock_deadlock.c231
-rw-r--r--db/lock/lock_failchk.c14
-rw-r--r--db/lock/lock_id.c170
-rw-r--r--db/lock/lock_list.c10
-rw-r--r--db/lock/lock_method.c33
-rw-r--r--db/lock/lock_region.c140
-rw-r--r--db/lock/lock_stat.c158
-rw-r--r--db/lock/lock_stub.c491
-rw-r--r--db/lock/lock_timer.c144
-rw-r--r--db/lock/lock_util.c5
-rw-r--r--db/log/log.c145
-rw-r--r--db/log/log.src46
-rw-r--r--db/log/log_archive.c24
-rw-r--r--db/log/log_auto.c326
-rw-r--r--db/log/log_compare.c37
-rw-r--r--db/log/log_debug.c5
-rw-r--r--db/log/log_findckp.c135
-rw-r--r--db/log/log_get.c208
-rw-r--r--db/log/log_method.c17
-rw-r--r--db/log/log_put.c82
-rw-r--r--db/log/log_register.c433
-rw-r--r--db/log/log_stat.c11
-rw-r--r--db/mod_db4/Makefile.in3
-rw-r--r--db/mod_db4/configure.in3
-rw-r--r--db/mod_db4/mm_hash.c3
-rw-r--r--db/mod_db4/mm_hash.h3
-rw-r--r--db/mod_db4/mod_db4.c3
-rw-r--r--db/mod_db4/mod_db4_export.h3
-rw-r--r--db/mod_db4/sem_utils.c3
-rw-r--r--db/mod_db4/sem_utils.h3
-rw-r--r--db/mod_db4/utils.c27
-rw-r--r--db/mod_db4/utils.h3
-rw-r--r--db/mp/Design52
-rw-r--r--db/mp/mp_alloc.c118
-rw-r--r--db/mp/mp_bh.c47
-rw-r--r--db/mp/mp_fget.c84
-rw-r--r--db/mp/mp_fmethod.c22
-rw-r--r--db/mp/mp_fopen.c291
-rw-r--r--db/mp/mp_fput.c120
-rw-r--r--db/mp/mp_fset.c105
-rw-r--r--db/mp/mp_method.c243
-rw-r--r--db/mp/mp_mvcc.c63
-rw-r--r--db/mp/mp_region.c308
-rw-r--r--db/mp/mp_register.c5
-rw-r--r--db/mp/mp_resize.c559
-rw-r--r--db/mp/mp_stat.c35
-rw-r--r--db/mp/mp_sync.c327
-rw-r--r--db/mp/mp_trickle.c19
-rw-r--r--db/mutex/mut_alloc.c6
-rw-r--r--db/mutex/mut_failchk.c5
-rw-r--r--db/mutex/mut_fcntl.c7
-rw-r--r--db/mutex/mut_method.c5
-rw-r--r--db/mutex/mut_pthread.c29
-rw-r--r--db/mutex/mut_region.c99
-rw-r--r--db/mutex/mut_stat.c99
-rw-r--r--db/mutex/mut_stub.c234
-rw-r--r--db/mutex/mut_tas.c45
-rw-r--r--db/mutex/mut_win32.c24
-rw-r--r--db/mutex/mutex.c392
-rw-r--r--db/mutex/test_mutex.c1041
-rw-r--r--db/mutex/tm.c1010
-rw-r--r--db/mutex/uts4_cc.s5
-rw-r--r--db/os/os_abort.c30
-rw-r--r--db/os/os_abs.c5
-rw-r--r--db/os/os_alloc.c45
-rw-r--r--db/os/os_clock.c48
-rw-r--r--db/os/os_config.c5
-rw-r--r--db/os/os_dir.c27
-rw-r--r--db/os/os_errno.c5
-rw-r--r--db/os/os_fid.c39
-rw-r--r--db/os/os_finit.c111
-rw-r--r--db/os/os_flock.c10
-rw-r--r--db/os/os_fsync.c18
-rw-r--r--db/os/os_fzero.c8
-rw-r--r--db/os/os_getenv.c5
-rw-r--r--db/os/os_handle.c105
-rw-r--r--db/os/os_id.c89
-rw-r--r--db/os/os_map.c20
-rw-r--r--db/os/os_method.c5
-rw-r--r--db/os/os_mkdir.c17
-rw-r--r--db/os/os_oflags.c33
-rw-r--r--db/os/os_open.c176
-rw-r--r--db/os/os_pid.c9
-rw-r--r--db/os/os_region.c5
-rw-r--r--db/os/os_rename.c20
-rw-r--r--db/os/os_root.c5
-rw-r--r--db/os/os_rpath.c5
-rw-r--r--db/os/os_rw.c25
-rw-r--r--db/os/os_seek.c10
-rw-r--r--db/os/os_sleep.c14
-rw-r--r--db/os/os_spin.c7
-rw-r--r--db/os/os_stat.c10
-rw-r--r--db/os/os_tmpdir.c57
-rw-r--r--db/os/os_truncate.c10
-rw-r--r--db/os/os_uid.c18
-rw-r--r--db/os/os_unlink.c16
-rw-r--r--db/os/os_yield.c7
-rw-r--r--db/os_brew/ctime.c81
-rw-r--r--db/os_brew/fclose.c32
-rw-r--r--db/os_brew/fgetc.c31
-rw-r--r--db/os_brew/fgets.c42
-rw-r--r--db/os_brew/fopen.c89
-rw-r--r--db/os_brew/fwrite.c31
-rw-r--r--db/os_brew/getcwd.c61
-rw-r--r--db/os_brew/globals.c53
-rw-r--r--db/os_brew/localtime.c78
-rw-r--r--db/os_brew/os_abort.c25
-rw-r--r--db/os_brew/os_abs.c22
-rw-r--r--db/os_brew/os_config.c59
-rw-r--r--db/os_brew/os_dir.c84
-rw-r--r--db/os_brew/os_errno.c196
-rw-r--r--db/os_brew/os_handle.c102
-rw-r--r--db/os_brew/os_mkdir.c40
-rw-r--r--db/os_brew/os_oflags.c27
-rw-r--r--db/os_brew/os_open.c47
-rw-r--r--db/os_brew/os_pid.c33
-rw-r--r--db/os_brew/os_rename.c41
-rw-r--r--db/os_brew/os_rw.c138
-rw-r--r--db/os_brew/os_seek.c49
-rw-r--r--db/os_brew/os_sleep.c30
-rw-r--r--db/os_brew/os_stat.c89
-rw-r--r--db/os_brew/os_truncate.c46
-rw-r--r--db/os_brew/os_unlink.c35
-rw-r--r--db/os_brew/time.c39
-rw-r--r--db/os_qnx/os_qnx_open.c132
-rw-r--r--db/os_s60/os_config.c55
-rw-r--r--db/os_vxworks/os_abs.c45
-rw-r--r--db/os_vxworks/os_finit.c57
-rw-r--r--db/os_vxworks/os_map.c440
-rw-r--r--db/os_vxworks/os_vx_abs.c5
-rw-r--r--db/os_vxworks/os_vx_config.c5
-rw-r--r--db/os_vxworks/os_vx_map.c7
-rw-r--r--db/os_vxworks/os_vx_rpath.c5
-rw-r--r--db/os_win32/os_abs.c31
-rw-r--r--db/os_win32/os_clock.c34
-rw-r--r--db/os_win32/os_config.c88
-rw-r--r--db/os_win32/os_dir.c102
-rw-r--r--db/os_win32/os_errno.c138
-rw-r--r--db/os_win32/os_fid.c141
-rw-r--r--db/os_win32/os_finit.c60
-rw-r--r--db/os_win32/os_fsync.c48
-rw-r--r--db/os_win32/os_handle.c131
-rw-r--r--db/os_win32/os_map.c315
-rw-r--r--db/os_win32/os_open.c228
-rw-r--r--db/os_win32/os_rename.c72
-rw-r--r--db/os_win32/os_rw.c291
-rw-r--r--db/os_win32/os_seek.c92
-rw-r--r--db/os_win32/os_sleep.c39
-rw-r--r--db/os_win32/os_spin.c56
-rw-r--r--db/os_win32/os_stat.c96
-rw-r--r--db/os_win32/os_truncate.c99
-rw-r--r--db/os_win32/os_unlink.c73
-rw-r--r--db/os_windows/ce_ctime.c87
-rw-r--r--db/os_windows/ce_time.c53
-rw-r--r--db/os_windows/os_abs.c5
-rw-r--r--db/os_windows/os_clock.c28
-rw-r--r--db/os_windows/os_config.c21
-rw-r--r--db/os_windows/os_dir.c5
-rw-r--r--db/os_windows/os_errno.c28
-rw-r--r--db/os_windows/os_fid.c80
-rw-r--r--db/os_windows/os_flock.c22
-rw-r--r--db/os_windows/os_fsync.c8
-rw-r--r--db/os_windows/os_getenv.c11
-rw-r--r--db/os_windows/os_handle.c84
-rw-r--r--db/os_windows/os_map.c74
-rw-r--r--db/os_windows/os_mkdir.c42
-rw-r--r--db/os_windows/os_open.c96
-rw-r--r--db/os_windows/os_rename.c16
-rw-r--r--db/os_windows/os_rw.c26
-rw-r--r--db/os_windows/os_seek.c9
-rw-r--r--db/os_windows/os_sleep.c18
-rw-r--r--db/os_windows/os_spin.c5
-rw-r--r--db/os_windows/os_stat.c9
-rw-r--r--db/os_windows/os_truncate.c10
-rw-r--r--db/os_windows/os_unlink.c13
-rw-r--r--db/os_windows/os_yield.c5
-rw-r--r--db/perl.BerkeleyDB/BerkeleyDB.pm1227
-rw-r--r--db/perl.BerkeleyDB/BerkeleyDB.pod1751
-rw-r--r--db/perl.BerkeleyDB/BerkeleyDB.pod.P1518
-rw-r--r--db/perl.BerkeleyDB/BerkeleyDB.xs3927
-rw-r--r--db/perl.BerkeleyDB/BerkeleyDB/Btree.pm8
-rw-r--r--db/perl.BerkeleyDB/BerkeleyDB/Hash.pm8
-rw-r--r--db/perl.BerkeleyDB/Changes112
-rw-r--r--db/perl.BerkeleyDB/MANIFEST49
-rw-r--r--db/perl.BerkeleyDB/Makefile.PL112
-rw-r--r--db/perl.BerkeleyDB/README464
-rw-r--r--db/perl.BerkeleyDB/Todo57
-rw-r--r--db/perl.BerkeleyDB/config.in51
-rwxr-xr-xdb/perl.BerkeleyDB/dbinfo109
-rw-r--r--db/perl.BerkeleyDB/hints/irix_6_5.pl1
-rw-r--r--db/perl.BerkeleyDB/hints/solaris.pl1
-rw-r--r--db/perl.BerkeleyDB/mkconsts211
-rwxr-xr-xdb/perl.BerkeleyDB/mkpod146
-rw-r--r--db/perl.BerkeleyDB/patches/5.00444
-rw-r--r--db/perl.BerkeleyDB/patches/5.004_01217
-rw-r--r--db/perl.BerkeleyDB/patches/5.004_02217
-rw-r--r--db/perl.BerkeleyDB/patches/5.004_03223
-rw-r--r--db/perl.BerkeleyDB/patches/5.004_04209
-rw-r--r--db/perl.BerkeleyDB/patches/5.004_05209
-rw-r--r--db/perl.BerkeleyDB/patches/5.005209
-rw-r--r--db/perl.BerkeleyDB/patches/5.005_01209
-rw-r--r--db/perl.BerkeleyDB/patches/5.005_02264
-rw-r--r--db/perl.BerkeleyDB/patches/5.005_03250
-rw-r--r--db/perl.BerkeleyDB/patches/5.6.0294
-rw-r--r--db/perl.BerkeleyDB/t/btree.t976
-rw-r--r--db/perl.BerkeleyDB/t/db-3.0.t128
-rw-r--r--db/perl.BerkeleyDB/t/db-3.1.t172
-rw-r--r--db/perl.BerkeleyDB/t/db-3.2.t90
-rw-r--r--db/perl.BerkeleyDB/t/destroy.t141
-rw-r--r--db/perl.BerkeleyDB/t/env.t279
-rw-r--r--db/perl.BerkeleyDB/t/examples.t482
-rw-r--r--db/perl.BerkeleyDB/t/examples.t.T496
-rw-r--r--db/perl.BerkeleyDB/t/examples3.t213
-rw-r--r--db/perl.BerkeleyDB/t/examples3.t.T217
-rw-r--r--db/perl.BerkeleyDB/t/filter.t244
-rw-r--r--db/perl.BerkeleyDB/t/hash.t777
-rw-r--r--db/perl.BerkeleyDB/t/join.t270
-rw-r--r--db/perl.BerkeleyDB/t/mldbm.t166
-rw-r--r--db/perl.BerkeleyDB/t/queue.t837
-rw-r--r--db/perl.BerkeleyDB/t/recno.t967
-rw-r--r--db/perl.BerkeleyDB/t/strict.t220
-rw-r--r--db/perl.BerkeleyDB/t/subdb.t296
-rw-r--r--db/perl.BerkeleyDB/t/txn.t354
-rw-r--r--db/perl.BerkeleyDB/t/unknown.t212
-rw-r--r--db/perl.BerkeleyDB/typemap275
-rw-r--r--db/perl.DB_File/Changes343
-rw-r--r--db/perl.DB_File/DB_File.pm2072
-rw-r--r--db/perl.DB_File/DB_File.xs2072
-rw-r--r--db/perl.DB_File/DB_File_BS6
-rw-r--r--db/perl.DB_File/MANIFEST27
-rw-r--r--db/perl.DB_File/Makefile.PL187
-rw-r--r--db/perl.DB_File/README396
-rw-r--r--db/perl.DB_File/config.in99
-rw-r--r--db/perl.DB_File/dbinfo109
-rw-r--r--db/perl.DB_File/hints/dynixptx.pl3
-rw-r--r--db/perl.DB_File/hints/sco.pl2
-rw-r--r--db/perl.DB_File/patches/5.00444
-rw-r--r--db/perl.DB_File/patches/5.004_01217
-rw-r--r--db/perl.DB_File/patches/5.004_02217
-rw-r--r--db/perl.DB_File/patches/5.004_03223
-rw-r--r--db/perl.DB_File/patches/5.004_04209
-rw-r--r--db/perl.DB_File/patches/5.004_05209
-rw-r--r--db/perl.DB_File/patches/5.005209
-rw-r--r--db/perl.DB_File/patches/5.005_01209
-rw-r--r--db/perl.DB_File/patches/5.005_02264
-rw-r--r--db/perl.DB_File/patches/5.005_03250
-rw-r--r--db/perl.DB_File/patches/5.6.0294
-rw-r--r--db/perl.DB_File/t/db-btree.t1306
-rw-r--r--db/perl.DB_File/t/db-hash.t753
-rw-r--r--db/perl.DB_File/t/db-recno.t899
-rw-r--r--db/perl.DB_File/typemap44
-rw-r--r--db/perl.DB_File/version.c81
-rw-r--r--db/perl/BerkeleyDB/BerkeleyDB.pm70
-rw-r--r--db/perl/BerkeleyDB/BerkeleyDB.pod12
-rw-r--r--db/perl/BerkeleyDB/BerkeleyDB.pod.P12
-rw-r--r--db/perl/BerkeleyDB/BerkeleyDB.xs300
-rw-r--r--db/perl/BerkeleyDB/Changes11
-rw-r--r--db/perl/BerkeleyDB/MANIFEST1
-rw-r--r--db/perl/BerkeleyDB/META.yml23
-rw-r--r--db/perl/BerkeleyDB/Makefile.PL5
-rw-r--r--db/perl/BerkeleyDB/README6
-rw-r--r--db/perl/BerkeleyDB/constants.h1753
-rw-r--r--db/perl/BerkeleyDB/mkconsts100
-rw-r--r--db/perl/BerkeleyDB/t/btree.t2
-rw-r--r--db/perl/BerkeleyDB/t/db-4.x.t56
-rw-r--r--db/perl/BerkeleyDB/t/examples3.t16
-rw-r--r--db/perl/BerkeleyDB/t/examples3.t.T16
-rw-r--r--db/perl/BerkeleyDB/t/util.pm14
-rw-r--r--db/perl/BerkeleyDB/typemap4
-rw-r--r--db/perl/DB_File/Changes8
-rw-r--r--db/perl/DB_File/DB_File.pm12
-rw-r--r--db/perl/DB_File/DB_File.xs15
-rw-r--r--db/perl/DB_File/MANIFEST1
-rw-r--r--db/perl/DB_File/META.yml23
-rw-r--r--db/perl/DB_File/Makefile.PL12
-rw-r--r--db/perl/DB_File/README6
-rw-r--r--db/perl/DB_File/t/pod.t18
-rw-r--r--db/php_db4/config.m45
-rw-r--r--db/php_db4/db4.cpp150
-rw-r--r--db/php_db4/php_db4.h3
-rw-r--r--db/qam/qam.c224
-rw-r--r--db/qam/qam.src5
-rw-r--r--db/qam/qam_auto.c40
-rw-r--r--db/qam/qam_conv.c5
-rw-r--r--db/qam/qam_files.c61
-rw-r--r--db/qam/qam_method.c29
-rw-r--r--db/qam/qam_open.c92
-rw-r--r--db/qam/qam_rec.c111
-rw-r--r--db/qam/qam_stat.c11
-rw-r--r--db/qam/qam_stub.c9
-rw-r--r--db/qam/qam_upgrade.c5
-rw-r--r--db/qam/qam_verify.c11
-rw-r--r--db/rep/mlease.html1219
-rw-r--r--db/rep/rep.src5
-rw-r--r--db/rep/rep_backup.c1097
-rw-r--r--db/rep/rep_elect.c650
-rw-r--r--db/rep/rep_lease.c485
-rw-r--r--db/rep/rep_log.c207
-rw-r--r--db/rep/rep_method.c604
-rw-r--r--db/rep/rep_record.c800
-rw-r--r--db/rep/rep_region.c203
-rw-r--r--db/rep/rep_stat.c33
-rw-r--r--db/rep/rep_stub.c68
-rw-r--r--db/rep/rep_util.c947
-rw-r--r--db/rep/rep_verify.c205
-rw-r--r--db/repmgr/repmgr_elect.c205
-rw-r--r--db/repmgr/repmgr_method.c45
-rw-r--r--db/repmgr/repmgr_msg.c180
-rw-r--r--db/repmgr/repmgr_net.c112
-rw-r--r--db/repmgr/repmgr_posix.c129
-rw-r--r--db/repmgr/repmgr_queue.c7
-rw-r--r--db/repmgr/repmgr_sel.c180
-rw-r--r--db/repmgr/repmgr_stat.c250
-rw-r--r--db/repmgr/repmgr_stub.c198
-rw-r--r--db/repmgr/repmgr_util.c95
-rw-r--r--db/repmgr/repmgr_windows.c101
-rw-r--r--db/rpc_client/client.c11
-rw-r--r--db/rpc_client/gen_client.c579
-rw-r--r--db/rpc_client/gen_client_ret.c55
-rw-r--r--db/rpc_server/c/db_server_proc.c155
-rw-r--r--db/rpc_server/c/db_server_util.c9
-rw-r--r--db/rpc_server/c/gen_db_server.c282
-rw-r--r--db/rpc_server/cxx/db_server_cxxproc.cpp104
-rw-r--r--db/rpc_server/cxx/db_server_cxxutil.cpp5
-rw-r--r--db/rpc_server/db_server.sed5
-rw-r--r--db/rpc_server/db_server.x146
-rw-r--r--db/rpc_server/db_server_proc.c1546
-rw-r--r--db/rpc_server/db_server_proc.sed418
-rw-r--r--db/rpc_server/db_server_svc.c359
-rw-r--r--db/rpc_server/db_server_svc.sed5
-rw-r--r--db/rpc_server/db_server_util.c612
-rw-r--r--db/rpc_server/db_server_xdr.c1149
-rw-r--r--db/rpc_server/gen_db_server.c703
-rw-r--r--db/rpc_server/java/AssociateCallbacks.java178
-rw-r--r--db/rpc_server/java/Dispatcher.java721
-rw-r--r--db/rpc_server/java/FreeList.java101
-rw-r--r--db/rpc_server/java/JoinCursorAdapter.java170
-rw-r--r--db/rpc_server/java/LocalIterator.java23
-rw-r--r--db/rpc_server/java/README27
-rw-r--r--db/rpc_server/java/RpcDb.java780
-rw-r--r--db/rpc_server/java/RpcDbEnv.java369
-rw-r--r--db/rpc_server/java/RpcDbTxn.java132
-rw-r--r--db/rpc_server/java/RpcDbc.java317
-rw-r--r--db/rpc_server/java/Server.java328
-rw-r--r--db/rpc_server/java/Timer.java21
-rw-r--r--db/rpc_server/java/Util.java172
-rw-r--r--db/rpc_server/java/gen/ServerStubs.java657
-rw-r--r--db/rpc_server/java/gen/__db_associate_msg.java41
-rw-r--r--db/rpc_server/java/gen/__db_associate_reply.java32
-rw-r--r--db/rpc_server/java/gen/__db_bt_maxkey_msg.java35
-rw-r--r--db/rpc_server/java/gen/__db_bt_maxkey_reply.java32
-rw-r--r--db/rpc_server/java/gen/__db_bt_minkey_msg.java35
-rw-r--r--db/rpc_server/java/gen/__db_bt_minkey_reply.java32
-rw-r--r--db/rpc_server/java/gen/__db_close_msg.java35
-rw-r--r--db/rpc_server/java/gen/__db_close_reply.java32
-rw-r--r--db/rpc_server/java/gen/__db_create_msg.java35
-rw-r--r--db/rpc_server/java/gen/__db_create_reply.java35
-rw-r--r--db/rpc_server/java/gen/__db_cursor_msg.java38
-rw-r--r--db/rpc_server/java/gen/__db_cursor_reply.java35
-rw-r--r--db/rpc_server/java/gen/__db_del_msg.java53
-rw-r--r--db/rpc_server/java/gen/__db_del_reply.java32
-rw-r--r--db/rpc_server/java/gen/__db_encrypt_msg.java38
-rw-r--r--db/rpc_server/java/gen/__db_encrypt_reply.java32
-rw-r--r--db/rpc_server/java/gen/__db_extentsize_msg.java35
-rw-r--r--db/rpc_server/java/gen/__db_extentsize_reply.java32
-rw-r--r--db/rpc_server/java/gen/__db_flags_msg.java35
-rw-r--r--db/rpc_server/java/gen/__db_flags_reply.java32
-rw-r--r--db/rpc_server/java/gen/__db_get_bt_minkey_msg.java32
-rw-r--r--db/rpc_server/java/gen/__db_get_bt_minkey_reply.java35
-rw-r--r--db/rpc_server/java/gen/__db_get_encrypt_flags_msg.java32
-rw-r--r--db/rpc_server/java/gen/__db_get_encrypt_flags_reply.java35
-rw-r--r--db/rpc_server/java/gen/__db_get_extentsize_msg.java32
-rw-r--r--db/rpc_server/java/gen/__db_get_extentsize_reply.java35
-rw-r--r--db/rpc_server/java/gen/__db_get_flags_msg.java32
-rw-r--r--db/rpc_server/java/gen/__db_get_flags_reply.java35
-rw-r--r--db/rpc_server/java/gen/__db_get_h_ffactor_msg.java32
-rw-r--r--db/rpc_server/java/gen/__db_get_h_ffactor_reply.java35
-rw-r--r--db/rpc_server/java/gen/__db_get_h_nelem_msg.java32
-rw-r--r--db/rpc_server/java/gen/__db_get_h_nelem_reply.java35
-rw-r--r--db/rpc_server/java/gen/__db_get_lorder_msg.java32
-rw-r--r--db/rpc_server/java/gen/__db_get_lorder_reply.java35
-rw-r--r--db/rpc_server/java/gen/__db_get_msg.java68
-rw-r--r--db/rpc_server/java/gen/__db_get_name_msg.java32
-rw-r--r--db/rpc_server/java/gen/__db_get_name_reply.java38
-rw-r--r--db/rpc_server/java/gen/__db_get_open_flags_msg.java32
-rw-r--r--db/rpc_server/java/gen/__db_get_open_flags_reply.java35
-rw-r--r--db/rpc_server/java/gen/__db_get_pagesize_msg.java32
-rw-r--r--db/rpc_server/java/gen/__db_get_pagesize_reply.java35
-rw-r--r--db/rpc_server/java/gen/__db_get_re_delim_msg.java32
-rw-r--r--db/rpc_server/java/gen/__db_get_re_delim_reply.java35
-rw-r--r--db/rpc_server/java/gen/__db_get_re_len_msg.java32
-rw-r--r--db/rpc_server/java/gen/__db_get_re_len_reply.java35
-rw-r--r--db/rpc_server/java/gen/__db_get_re_pad_msg.java32
-rw-r--r--db/rpc_server/java/gen/__db_get_re_pad_reply.java35
-rw-r--r--db/rpc_server/java/gen/__db_get_reply.java38
-rw-r--r--db/rpc_server/java/gen/__db_h_ffactor_msg.java35
-rw-r--r--db/rpc_server/java/gen/__db_h_ffactor_reply.java32
-rw-r--r--db/rpc_server/java/gen/__db_h_nelem_msg.java35
-rw-r--r--db/rpc_server/java/gen/__db_h_nelem_reply.java32
-rw-r--r--db/rpc_server/java/gen/__db_join_msg.java38
-rw-r--r--db/rpc_server/java/gen/__db_join_reply.java35
-rw-r--r--db/rpc_server/java/gen/__db_key_range_msg.java53
-rw-r--r--db/rpc_server/java/gen/__db_key_range_reply.java41
-rw-r--r--db/rpc_server/java/gen/__db_lorder_msg.java35
-rw-r--r--db/rpc_server/java/gen/__db_lorder_reply.java32
-rw-r--r--db/rpc_server/java/gen/__db_open_msg.java50
-rw-r--r--db/rpc_server/java/gen/__db_open_reply.java41
-rw-r--r--db/rpc_server/java/gen/__db_pagesize_msg.java35
-rw-r--r--db/rpc_server/java/gen/__db_pagesize_reply.java32
-rw-r--r--db/rpc_server/java/gen/__db_pget_msg.java83
-rw-r--r--db/rpc_server/java/gen/__db_pget_reply.java41
-rw-r--r--db/rpc_server/java/gen/__db_put_msg.java68
-rw-r--r--db/rpc_server/java/gen/__db_put_reply.java35
-rw-r--r--db/rpc_server/java/gen/__db_re_delim_msg.java35
-rw-r--r--db/rpc_server/java/gen/__db_re_delim_reply.java32
-rw-r--r--db/rpc_server/java/gen/__db_re_len_msg.java35
-rw-r--r--db/rpc_server/java/gen/__db_re_len_reply.java32
-rw-r--r--db/rpc_server/java/gen/__db_re_pad_msg.java35
-rw-r--r--db/rpc_server/java/gen/__db_re_pad_reply.java32
-rw-r--r--db/rpc_server/java/gen/__db_remove_msg.java41
-rw-r--r--db/rpc_server/java/gen/__db_remove_reply.java32
-rw-r--r--db/rpc_server/java/gen/__db_rename_msg.java44
-rw-r--r--db/rpc_server/java/gen/__db_rename_reply.java32
-rw-r--r--db/rpc_server/java/gen/__db_stat_msg.java38
-rw-r--r--db/rpc_server/java/gen/__db_stat_reply.java35
-rw-r--r--db/rpc_server/java/gen/__db_sync_msg.java35
-rw-r--r--db/rpc_server/java/gen/__db_sync_reply.java32
-rw-r--r--db/rpc_server/java/gen/__db_truncate_msg.java38
-rw-r--r--db/rpc_server/java/gen/__db_truncate_reply.java35
-rw-r--r--db/rpc_server/java/gen/__dbc_close_msg.java32
-rw-r--r--db/rpc_server/java/gen/__dbc_close_reply.java32
-rw-r--r--db/rpc_server/java/gen/__dbc_count_msg.java35
-rw-r--r--db/rpc_server/java/gen/__dbc_count_reply.java35
-rw-r--r--db/rpc_server/java/gen/__dbc_del_msg.java35
-rw-r--r--db/rpc_server/java/gen/__dbc_del_reply.java32
-rw-r--r--db/rpc_server/java/gen/__dbc_dup_msg.java35
-rw-r--r--db/rpc_server/java/gen/__dbc_dup_reply.java35
-rw-r--r--db/rpc_server/java/gen/__dbc_get_msg.java65
-rw-r--r--db/rpc_server/java/gen/__dbc_get_reply.java38
-rw-r--r--db/rpc_server/java/gen/__dbc_pget_msg.java80
-rw-r--r--db/rpc_server/java/gen/__dbc_pget_reply.java41
-rw-r--r--db/rpc_server/java/gen/__dbc_put_msg.java65
-rw-r--r--db/rpc_server/java/gen/__dbc_put_reply.java35
-rw-r--r--db/rpc_server/java/gen/__env_cachesize_msg.java41
-rw-r--r--db/rpc_server/java/gen/__env_cachesize_reply.java32
-rw-r--r--db/rpc_server/java/gen/__env_close_msg.java35
-rw-r--r--db/rpc_server/java/gen/__env_close_reply.java32
-rw-r--r--db/rpc_server/java/gen/__env_create_msg.java32
-rw-r--r--db/rpc_server/java/gen/__env_create_reply.java35
-rw-r--r--db/rpc_server/java/gen/__env_dbremove_msg.java44
-rw-r--r--db/rpc_server/java/gen/__env_dbremove_reply.java32
-rw-r--r--db/rpc_server/java/gen/__env_dbrename_msg.java47
-rw-r--r--db/rpc_server/java/gen/__env_dbrename_reply.java32
-rw-r--r--db/rpc_server/java/gen/__env_encrypt_msg.java38
-rw-r--r--db/rpc_server/java/gen/__env_encrypt_reply.java32
-rw-r--r--db/rpc_server/java/gen/__env_flags_msg.java38
-rw-r--r--db/rpc_server/java/gen/__env_flags_reply.java32
-rw-r--r--db/rpc_server/java/gen/__env_get_cachesize_msg.java32
-rw-r--r--db/rpc_server/java/gen/__env_get_cachesize_reply.java41
-rw-r--r--db/rpc_server/java/gen/__env_get_encrypt_flags_msg.java32
-rw-r--r--db/rpc_server/java/gen/__env_get_encrypt_flags_reply.java35
-rw-r--r--db/rpc_server/java/gen/__env_get_flags_msg.java32
-rw-r--r--db/rpc_server/java/gen/__env_get_flags_reply.java35
-rw-r--r--db/rpc_server/java/gen/__env_get_home_msg.java32
-rw-r--r--db/rpc_server/java/gen/__env_get_home_reply.java35
-rw-r--r--db/rpc_server/java/gen/__env_get_open_flags_msg.java32
-rw-r--r--db/rpc_server/java/gen/__env_get_open_flags_reply.java35
-rw-r--r--db/rpc_server/java/gen/__env_open_msg.java41
-rw-r--r--db/rpc_server/java/gen/__env_open_reply.java35
-rw-r--r--db/rpc_server/java/gen/__env_remove_msg.java38
-rw-r--r--db/rpc_server/java/gen/__env_remove_reply.java32
-rw-r--r--db/rpc_server/java/gen/__txn_abort_msg.java32
-rw-r--r--db/rpc_server/java/gen/__txn_abort_reply.java32
-rw-r--r--db/rpc_server/java/gen/__txn_begin_msg.java38
-rw-r--r--db/rpc_server/java/gen/__txn_begin_reply.java35
-rw-r--r--db/rpc_server/java/gen/__txn_commit_msg.java35
-rw-r--r--db/rpc_server/java/gen/__txn_commit_reply.java32
-rw-r--r--db/rpc_server/java/gen/__txn_discard_msg.java35
-rw-r--r--db/rpc_server/java/gen/__txn_discard_reply.java32
-rw-r--r--db/rpc_server/java/gen/__txn_prepare_msg.java35
-rw-r--r--db/rpc_server/java/gen/__txn_prepare_reply.java32
-rw-r--r--db/rpc_server/java/gen/__txn_recover_msg.java38
-rw-r--r--db/rpc_server/java/gen/__txn_recover_reply.java41
-rw-r--r--db/rpc_server/java/gen/db_server.java85
-rw-r--r--db/rpc_server/java/jrpcgen.jarbin57125 -> 0 bytes
-rw-r--r--db/rpc_server/java/oncrpc.jarbin84122 -> 0 bytes
-rw-r--r--db/rpc_server/java/s_jrpcgen3
-rw-r--r--db/rpc_server/rpc.src52
-rw-r--r--db/sequence/seq_stat.c5
-rw-r--r--db/sequence/sequence.c50
-rw-r--r--db/tcl/docs/db.html3
-rw-r--r--db/tcl/docs/env.html3
-rw-r--r--db/tcl/docs/historic.html3
-rw-r--r--db/tcl/docs/index.html3
-rw-r--r--db/tcl/docs/library.html3
-rw-r--r--db/tcl/docs/lock.html3
-rw-r--r--db/tcl/docs/log.html3
-rw-r--r--db/tcl/docs/mpool.html3
-rw-r--r--db/tcl/docs/rep.html3
-rw-r--r--db/tcl/docs/sequence.html1
-rw-r--r--db/tcl/docs/test.html3
-rw-r--r--db/tcl/docs/txn.html3
-rw-r--r--db/tcl/tcl_compat.c7
-rw-r--r--db/tcl/tcl_db.c118
-rw-r--r--db/tcl/tcl_db_pkg.c193
-rw-r--r--db/tcl/tcl_dbcursor.c33
-rw-r--r--db/tcl/tcl_env.c150
-rw-r--r--db/tcl/tcl_internal.c33
-rw-r--r--db/tcl/tcl_lock.c20
-rw-r--r--db/tcl/tcl_log.c9
-rw-r--r--db/tcl/tcl_mp.c34
-rw-r--r--db/tcl/tcl_rep.c197
-rw-r--r--db/tcl/tcl_seq.c7
-rw-r--r--db/tcl/tcl_txn.c14
-rw-r--r--db/tcl/tcl_util.c7
-rw-r--r--db/test/README5
-rw-r--r--db/test/TESTS238
-rw-r--r--db/test/archive.tcl5
-rw-r--r--db/test/backup.tcl225
-rw-r--r--db/test/bigfile.tcl84
-rw-r--r--db/test/bigfile001.tcl5
-rw-r--r--db/test/bigfile002.tcl5
-rw-r--r--db/test/byteorder.tcl5
-rw-r--r--db/test/conscript.tcl5
-rw-r--r--db/test/dbm.tcl5
-rw-r--r--db/test/dbscript.tcl5
-rw-r--r--db/test/ddoyscript.tcl5
-rw-r--r--db/test/ddscript.tcl5
-rw-r--r--db/test/dead001.tcl5
-rw-r--r--db/test/dead002.tcl5
-rw-r--r--db/test/dead003.tcl5
-rw-r--r--db/test/dead004.tcl5
-rw-r--r--db/test/dead005.tcl5
-rw-r--r--db/test/dead006.tcl5
-rw-r--r--db/test/dead007.tcl5
-rw-r--r--db/test/env001.tcl5
-rw-r--r--db/test/env002.tcl5
-rw-r--r--db/test/env003.tcl5
-rw-r--r--db/test/env004.tcl5
-rw-r--r--db/test/env005.tcl5
-rw-r--r--db/test/env006.tcl5
-rw-r--r--db/test/env007.tcl7
-rw-r--r--db/test/env008.tcl5
-rw-r--r--db/test/env009.tcl5
-rw-r--r--db/test/env010.tcl5
-rw-r--r--db/test/env011.tcl5
-rw-r--r--db/test/env012.tcl31
-rw-r--r--db/test/env013.tcl5
-rw-r--r--db/test/env014.tcl5
-rw-r--r--db/test/env015.tcl19
-rw-r--r--db/test/envscript.tcl5
-rw-r--r--db/test/fop001.tcl175
-rw-r--r--db/test/fop002.tcl5
-rw-r--r--db/test/fop003.tcl5
-rw-r--r--db/test/fop004.tcl5
-rw-r--r--db/test/fop005.tcl5
-rw-r--r--db/test/fop006.tcl11
-rw-r--r--db/test/fop007.tcl5
-rw-r--r--db/test/fop008.tcl5
-rw-r--r--db/test/fopscript.tcl5
-rw-r--r--db/test/foputils.tcl5
-rw-r--r--db/test/hsearch.tcl5
-rw-r--r--db/test/join.tcl5
-rw-r--r--db/test/lock001.tcl5
-rw-r--r--db/test/lock002.tcl5
-rw-r--r--db/test/lock003.tcl5
-rw-r--r--db/test/lock004.tcl5
-rw-r--r--db/test/lock005.tcl5
-rw-r--r--db/test/lock006.tcl5
-rw-r--r--db/test/lockscript.tcl5
-rw-r--r--db/test/log.tcl337
-rw-r--r--db/test/log001.tcl5
-rw-r--r--db/test/log002.tcl5
-rw-r--r--db/test/log003.tcl5
-rw-r--r--db/test/log004.tcl5
-rw-r--r--db/test/log005.tcl5
-rw-r--r--db/test/log006.tcl5
-rw-r--r--db/test/log007.tcl5
-rw-r--r--db/test/log008.tcl6
-rw-r--r--db/test/log008script.tcl5
-rw-r--r--db/test/log009.tcl5
-rw-r--r--db/test/logtrack.tcl5
-rw-r--r--db/test/mdbscript.tcl5
-rw-r--r--db/test/memp001.tcl5
-rw-r--r--db/test/memp002.tcl5
-rw-r--r--db/test/memp003.tcl5
-rw-r--r--db/test/memp004.tcl5
-rw-r--r--db/test/mpool.tcl420
-rw-r--r--db/test/mpoolscript.tcl5
-rw-r--r--db/test/mutex.tcl225
-rw-r--r--db/test/mutex001.tcl51
-rw-r--r--db/test/mutex002.tcl94
-rw-r--r--db/test/mutex003.tcl52
-rw-r--r--db/test/mutexscript.tcl91
-rw-r--r--db/test/ndbm.tcl5
-rw-r--r--db/test/parallel.tcl4
-rw-r--r--db/test/plat001.tcl5
-rw-r--r--db/test/recd001.tcl5
-rw-r--r--db/test/recd002.tcl5
-rw-r--r--db/test/recd003.tcl5
-rw-r--r--db/test/recd004.tcl5
-rw-r--r--db/test/recd005.tcl5
-rw-r--r--db/test/recd006.tcl5
-rw-r--r--db/test/recd007.tcl5
-rw-r--r--db/test/recd008.tcl5
-rw-r--r--db/test/recd009.tcl5
-rw-r--r--db/test/recd010.tcl5
-rw-r--r--db/test/recd011.tcl5
-rw-r--r--db/test/recd012.tcl5
-rw-r--r--db/test/recd013.tcl5
-rw-r--r--db/test/recd014.tcl5
-rw-r--r--db/test/recd015.tcl14
-rw-r--r--db/test/recd016.tcl7
-rw-r--r--db/test/recd017.tcl5
-rw-r--r--db/test/recd018.tcl5
-rw-r--r--db/test/recd019.tcl5
-rw-r--r--db/test/recd020.tcl5
-rw-r--r--db/test/recd021.tcl5
-rw-r--r--db/test/recd022.tcl7
-rw-r--r--db/test/recd023.tcl5
-rw-r--r--db/test/recd15scr.tcl5
-rw-r--r--db/test/recd15script.tcl66
-rw-r--r--db/test/recdscript.tcl5
-rw-r--r--db/test/rep001.tcl48
-rw-r--r--db/test/rep002.tcl43
-rw-r--r--db/test/rep003.tcl27
-rw-r--r--db/test/rep005.tcl59
-rw-r--r--db/test/rep006.tcl31
-rw-r--r--db/test/rep007.tcl90
-rw-r--r--db/test/rep008.tcl32
-rw-r--r--db/test/rep009.tcl50
-rw-r--r--db/test/rep010.tcl37
-rw-r--r--db/test/rep011.tcl37
-rw-r--r--db/test/rep012.tcl32
-rw-r--r--db/test/rep013.tcl35
-rw-r--r--db/test/rep014.tcl29
-rw-r--r--db/test/rep015.tcl28
-rw-r--r--db/test/rep016.tcl46
-rw-r--r--db/test/rep017.tcl48
-rw-r--r--db/test/rep017script.tcl11
-rw-r--r--db/test/rep018.tcl27
-rw-r--r--db/test/rep018script.tcl10
-rw-r--r--db/test/rep019.tcl28
-rw-r--r--db/test/rep020.tcl44
-rw-r--r--db/test/rep021.tcl50
-rw-r--r--db/test/rep022.tcl46
-rw-r--r--db/test/rep023.tcl31
-rw-r--r--db/test/rep024.tcl50
-rw-r--r--db/test/rep025.tcl37
-rw-r--r--db/test/rep026.tcl73
-rw-r--r--db/test/rep027.tcl26
-rw-r--r--db/test/rep028.tcl29
-rw-r--r--db/test/rep029.tcl50
-rw-r--r--db/test/rep030.tcl68
-rw-r--r--db/test/rep031.tcl36
-rw-r--r--db/test/rep032.tcl36
-rw-r--r--db/test/rep033.tcl55
-rw-r--r--db/test/rep034.tcl398
-rw-r--r--db/test/rep035.tcl63
-rw-r--r--db/test/rep035script.tcl12
-rw-r--r--db/test/rep036.tcl38
-rw-r--r--db/test/rep036script.tcl15
-rw-r--r--db/test/rep037.tcl51
-rw-r--r--db/test/rep038.tcl39
-rw-r--r--db/test/rep039.tcl303
-rw-r--r--db/test/rep040.tcl24
-rw-r--r--db/test/rep040script.tcl11
-rw-r--r--db/test/rep041.tcl40
-rw-r--r--db/test/rep042.tcl30
-rw-r--r--db/test/rep042script.tcl11
-rw-r--r--db/test/rep043.tcl49
-rw-r--r--db/test/rep043script.tcl31
-rw-r--r--db/test/rep044.tcl34
-rw-r--r--db/test/rep045.tcl39
-rw-r--r--db/test/rep045script.tcl10
-rw-r--r--db/test/rep046.tcl82
-rw-r--r--db/test/rep047.tcl48
-rw-r--r--db/test/rep048.tcl56
-rw-r--r--db/test/rep048script.tcl11
-rw-r--r--db/test/rep049.tcl45
-rw-r--r--db/test/rep050.tcl59
-rw-r--r--db/test/rep051.tcl52
-rw-r--r--db/test/rep052.tcl54
-rw-r--r--db/test/rep053.tcl69
-rw-r--r--db/test/rep054.tcl43
-rw-r--r--db/test/rep055.tcl38
-rw-r--r--db/test/rep056.tcl5
-rw-r--r--db/test/rep057.tcl5
-rw-r--r--db/test/rep058.tcl26
-rw-r--r--db/test/rep059.tcl36
-rw-r--r--db/test/rep060.tcl74
-rw-r--r--db/test/rep061.tcl72
-rw-r--r--db/test/rep062.tcl55
-rw-r--r--db/test/rep063.tcl64
-rw-r--r--db/test/rep064.tcl23
-rw-r--r--db/test/rep065.tcl48
-rw-r--r--db/test/rep065script.tcl51
-rw-r--r--db/test/rep066.tcl45
-rw-r--r--db/test/rep067.tcl361
-rw-r--r--db/test/rep068.tcl187
-rw-r--r--db/test/rep069.tcl260
-rw-r--r--db/test/rep070.tcl160
-rw-r--r--db/test/rep071.tcl136
-rw-r--r--db/test/rep072.tcl185
-rw-r--r--db/test/rep073.tcl146
-rw-r--r--db/test/rep074.tcl163
-rw-r--r--db/test/rep075.tcl500
-rw-r--r--db/test/rep076.tcl170
-rw-r--r--db/test/rep077.tcl132
-rw-r--r--db/test/rep078.tcl217
-rw-r--r--db/test/repmgr001.tcl130
-rw-r--r--db/test/reputils.tcl1075
-rw-r--r--db/test/reputilsnoenv.tcl486
-rw-r--r--db/test/rpc001.tcl5
-rw-r--r--db/test/rpc002.tcl7
-rw-r--r--db/test/rpc003.tcl5
-rw-r--r--db/test/rpc004.tcl5
-rw-r--r--db/test/rpc005.tcl5
-rw-r--r--db/test/rpc006.tcl5
-rw-r--r--db/test/rsrc001.tcl5
-rw-r--r--db/test/rsrc002.tcl5
-rw-r--r--db/test/rsrc003.tcl5
-rw-r--r--db/test/rsrc004.tcl5
-rw-r--r--db/test/scr001/chk.code4
-rw-r--r--db/test/scr003/chk.define5
-rw-r--r--db/test/scr006/chk.offt9
-rw-r--r--db/test/scr008/chk.pubdef2
-rw-r--r--db/test/scr010/chk.str6
-rw-r--r--db/test/scr010/spell.ok258
-rw-r--r--db/test/scr011/chk.tags5
-rw-r--r--db/test/scr013/chk.stats4
-rw-r--r--db/test/scr015/TestConstruct01.cpp5
-rw-r--r--db/test/scr015/TestGetSetMethods.cpp5
-rw-r--r--db/test/scr015/TestKeyRange.cpp5
-rw-r--r--db/test/scr015/TestLogc.cpp5
-rw-r--r--db/test/scr015/TestSimpleAccess.cpp5
-rw-r--r--db/test/scr015/TestTruncate.cpp5
-rw-r--r--db/test/scr016/CallbackTest.java83
-rw-r--r--db/test/scr016/CallbackTest.testout54
-rw-r--r--db/test/scr016/README37
-rw-r--r--db/test/scr016/TestAppendRecno.java258
-rw-r--r--db/test/scr016/TestAppendRecno.testout82
-rw-r--r--db/test/scr016/TestAssociate.java333
-rw-r--r--db/test/scr016/TestAssociate.testout30
-rw-r--r--db/test/scr016/TestCallback.java147
-rw-r--r--db/test/scr016/TestCallback.testout12
-rw-r--r--db/test/scr016/TestClosedDb.java62
-rw-r--r--db/test/scr016/TestClosedDb.testout2
-rw-r--r--db/test/scr016/TestConstruct01.java477
-rw-r--r--db/test/scr016/TestConstruct01.testerr0
-rw-r--r--db/test/scr016/TestConstruct01.testout3
-rw-r--r--db/test/scr016/TestConstruct02.java326
-rw-r--r--db/test/scr016/TestConstruct02.testout3
-rw-r--r--db/test/scr016/TestDbtFlags.java241
-rw-r--r--db/test/scr016/TestDbtFlags.testerr54
-rw-r--r--db/test/scr016/TestDbtFlags.testout78
-rw-r--r--db/test/scr016/TestGetSetMethods.java99
-rw-r--r--db/test/scr016/TestKeyRange.java205
-rw-r--r--db/test/scr016/TestKeyRange.testout27
-rw-r--r--db/test/scr016/TestLockVec.java249
-rw-r--r--db/test/scr016/TestLockVec.testout8
-rw-r--r--db/test/scr016/TestLogc.java100
-rw-r--r--db/test/scr016/TestLogc.testout1
-rw-r--r--db/test/scr016/TestOpenEmpty.java199
-rw-r--r--db/test/scr016/TestOpenEmpty.testerr2
-rw-r--r--db/test/scr016/TestReplication.java289
-rw-r--r--db/test/scr016/TestRpcServer.java193
-rw-r--r--db/test/scr016/TestSameDbt.java56
-rw-r--r--db/test/scr016/TestSameDbt.testout2
-rw-r--r--db/test/scr016/TestSimpleAccess.java37
-rw-r--r--db/test/scr016/TestSimpleAccess.testout3
-rw-r--r--db/test/scr016/TestStat.java94
-rw-r--r--db/test/scr016/TestStat.testout18
-rw-r--r--db/test/scr016/TestTruncate.java87
-rw-r--r--db/test/scr016/TestTruncate.testout6
-rw-r--r--db/test/scr016/TestUtil.java57
-rw-r--r--db/test/scr016/TestXAServlet.java313
-rw-r--r--db/test/scr016/chk.bdb76
-rw-r--r--db/test/scr016/chk.javatests79
-rw-r--r--db/test/scr016/ignore25
-rw-r--r--db/test/scr016/makenewtest.sh117
-rw-r--r--db/test/scr016/src/com/sleepycat/db/test/AppendRecnoTest.java209
-rw-r--r--db/test/scr016/src/com/sleepycat/db/test/AssociateTest.java252
-rw-r--r--db/test/scr016/src/com/sleepycat/db/test/CallbackTest.java159
-rw-r--r--db/test/scr016/src/com/sleepycat/db/test/ClosedDbTest.java80
-rw-r--r--db/test/scr016/src/com/sleepycat/db/test/DatabaseTest.java377
-rw-r--r--db/test/scr016/src/com/sleepycat/db/test/EncryptTest.java132
-rw-r--r--db/test/scr016/src/com/sleepycat/db/test/HashCompareTest.java125
-rw-r--r--db/test/scr016/src/com/sleepycat/db/test/PartialGetTest.java264
-rw-r--r--db/test/scr016/src/com/sleepycat/db/test/RepmgrConfigTest.java325
-rw-r--r--db/test/scr016/src/com/sleepycat/db/test/RepmgrElectionTest.java199
-rw-r--r--db/test/scr016/src/com/sleepycat/db/test/RepmgrStartupTest.java210
-rw-r--r--db/test/scr016/src/com/sleepycat/db/test/TestUtils.java227
-rw-r--r--db/test/scr016/src/com/sleepycat/db/test/VerboseConfigTest.java91
-rw-r--r--db/test/scr016/testall32
-rw-r--r--db/test/scr016/testone126
-rw-r--r--db/test/scr017/t.c2
-rw-r--r--db/test/scr018/t.c2
-rw-r--r--db/test/scr019/chk.include6
-rw-r--r--db/test/scr021/chk.flags5
-rw-r--r--db/test/scr021/t.c2
-rw-r--r--db/test/scr023/q.c4
-rw-r--r--db/test/scr024/src/com/sleepycat/bind/serial/test/MarshalledObject.java5
-rw-r--r--db/test/scr024/src/com/sleepycat/bind/serial/test/NullClassCatalog.java7
-rw-r--r--db/test/scr024/src/com/sleepycat/bind/serial/test/SerialBindingTest.java5
-rw-r--r--db/test/scr024/src/com/sleepycat/bind/serial/test/TestClassCatalog.java5
-rw-r--r--db/test/scr024/src/com/sleepycat/bind/test/BindingSpeedTest.java15
-rw-r--r--db/test/scr024/src/com/sleepycat/bind/tuple/test/MarshalledObject.java5
-rw-r--r--db/test/scr024/src/com/sleepycat/bind/tuple/test/TupleBindingTest.java5
-rw-r--r--db/test/scr024/src/com/sleepycat/bind/tuple/test/TupleFormatTest.java63
-rw-r--r--db/test/scr024/src/com/sleepycat/bind/tuple/test/TupleOrderingTest.java9
-rw-r--r--db/test/scr024/src/com/sleepycat/collections/KeyRangeTest.java7
-rw-r--r--db/test/scr024/src/com/sleepycat/collections/test/CollectionTest.java13
-rw-r--r--db/test/scr024/src/com/sleepycat/collections/test/DbTestUtil.java5
-rw-r--r--db/test/scr024/src/com/sleepycat/collections/test/IterDeadlockTest.java5
-rw-r--r--db/test/scr024/src/com/sleepycat/collections/test/JoinTest.java5
-rw-r--r--db/test/scr024/src/com/sleepycat/collections/test/NullTransactionRunner.java5
-rw-r--r--db/test/scr024/src/com/sleepycat/collections/test/SecondaryDeadlockTest.java5
-rw-r--r--db/test/scr024/src/com/sleepycat/collections/test/TestDataBinding.java5
-rw-r--r--db/test/scr024/src/com/sleepycat/collections/test/TestEntity.java5
-rw-r--r--db/test/scr024/src/com/sleepycat/collections/test/TestEntityBinding.java5
-rw-r--r--db/test/scr024/src/com/sleepycat/collections/test/TestEnv.java5
-rw-r--r--db/test/scr024/src/com/sleepycat/collections/test/TestKeyAssigner.java5
-rw-r--r--db/test/scr024/src/com/sleepycat/collections/test/TestKeyCreator.java5
-rw-r--r--db/test/scr024/src/com/sleepycat/collections/test/TestStore.java9
-rw-r--r--db/test/scr024/src/com/sleepycat/collections/test/TransactionTest.java13
-rw-r--r--db/test/scr024/src/com/sleepycat/collections/test/serial/CatalogCornerCaseTest.java5
-rw-r--r--db/test/scr024/src/com/sleepycat/collections/test/serial/StoredClassCatalogTest.java5
-rw-r--r--db/test/scr024/src/com/sleepycat/collections/test/serial/StoredClassCatalogTestInit.java5
-rw-r--r--db/test/scr024/src/com/sleepycat/collections/test/serial/TestSerial.java6
-rw-r--r--db/test/scr024/src/com/sleepycat/collections/test/serial/TestSerial.java.original9
-rw-r--r--db/test/scr024/src/com/sleepycat/util/test/ExceptionWrapperTest.java5
-rw-r--r--db/test/scr024/src/com/sleepycat/util/test/FastOutputStreamTest.java5
-rw-r--r--db/test/scr024/src/com/sleepycat/util/test/PackedIntegerTest.java131
-rw-r--r--db/test/scr024/src/com/sleepycat/util/test/UtfTest.java5
-rw-r--r--db/test/scr026/chk.method19
-rw-r--r--db/test/scr030/chk.build32
-rw-r--r--db/test/scr031/chk.xa13
-rw-r--r--db/test/scr031/src/client.c2
-rw-r--r--db/test/scr031/src/hcommonxa.h8
-rw-r--r--db/test/scr031/src/hdbrec.h2
-rw-r--r--db/test/scr031/src/htimestampxa.h2
-rw-r--r--db/test/scr031/src/server.c2
-rw-r--r--db/test/scr033/chk.codegen43
-rw-r--r--db/test/sdb001.tcl5
-rw-r--r--db/test/sdb002.tcl5
-rw-r--r--db/test/sdb003.tcl12
-rw-r--r--db/test/sdb004.tcl5
-rw-r--r--db/test/sdb005.tcl5
-rw-r--r--db/test/sdb006.tcl5
-rw-r--r--db/test/sdb007.tcl5
-rw-r--r--db/test/sdb008.tcl5
-rw-r--r--db/test/sdb009.tcl5
-rw-r--r--db/test/sdb010.tcl5
-rw-r--r--db/test/sdb011.tcl5
-rw-r--r--db/test/sdb012.tcl5
-rw-r--r--db/test/sdb013.tcl5
-rw-r--r--db/test/sdb014.tcl5
-rw-r--r--db/test/sdb015.tcl5
-rw-r--r--db/test/sdb016.tcl5
-rw-r--r--db/test/sdb017.tcl5
-rw-r--r--db/test/sdb018.tcl5
-rw-r--r--db/test/sdb019.tcl5
-rw-r--r--db/test/sdb020.tcl5
-rw-r--r--db/test/sdbscript.tcl5
-rw-r--r--db/test/sdbtest001.tcl5
-rw-r--r--db/test/sdbtest002.tcl5
-rw-r--r--db/test/sdbutils.tcl5
-rw-r--r--db/test/sec001.tcl5
-rw-r--r--db/test/sec002.tcl5
-rw-r--r--db/test/shelltest.tcl7
-rw-r--r--db/test/si001.tcl5
-rw-r--r--db/test/si002.tcl14
-rw-r--r--db/test/si003.tcl5
-rw-r--r--db/test/si004.tcl14
-rw-r--r--db/test/si005.tcl5
-rw-r--r--db/test/si006.tcl5
-rw-r--r--db/test/si007.tcl5
-rw-r--r--db/test/si008.tcl5
-rw-r--r--db/test/sijointest.tcl5
-rw-r--r--db/test/siutils.tcl136
-rw-r--r--db/test/sysscript.tcl5
-rw-r--r--db/test/t106script.tcl5
-rw-r--r--db/test/test.tcl41
-rw-r--r--db/test/test001.tcl5
-rw-r--r--db/test/test002.tcl5
-rw-r--r--db/test/test003.tcl5
-rw-r--r--db/test/test004.tcl5
-rw-r--r--db/test/test005.tcl5
-rw-r--r--db/test/test006.tcl5
-rw-r--r--db/test/test007.tcl5
-rw-r--r--db/test/test008.tcl5
-rw-r--r--db/test/test009.tcl5
-rw-r--r--db/test/test010.tcl5
-rw-r--r--db/test/test011.tcl5
-rw-r--r--db/test/test012.tcl5
-rw-r--r--db/test/test013.tcl5
-rw-r--r--db/test/test014.tcl5
-rw-r--r--db/test/test015.tcl5
-rw-r--r--db/test/test016.tcl5
-rw-r--r--db/test/test017.tcl5
-rw-r--r--db/test/test018.tcl5
-rw-r--r--db/test/test019.tcl5
-rw-r--r--db/test/test020.tcl5
-rw-r--r--db/test/test021.tcl5
-rw-r--r--db/test/test022.tcl5
-rw-r--r--db/test/test023.tcl5
-rw-r--r--db/test/test024.tcl5
-rw-r--r--db/test/test025.tcl5
-rw-r--r--db/test/test026.tcl5
-rw-r--r--db/test/test027.tcl5
-rw-r--r--db/test/test028.tcl5
-rw-r--r--db/test/test029.tcl5
-rw-r--r--db/test/test030.tcl31
-rw-r--r--db/test/test031.tcl5
-rw-r--r--db/test/test032.tcl5
-rw-r--r--db/test/test033.tcl5
-rw-r--r--db/test/test034.tcl5
-rw-r--r--db/test/test035.tcl5
-rw-r--r--db/test/test036.tcl5
-rw-r--r--db/test/test037.tcl5
-rw-r--r--db/test/test038.tcl5
-rw-r--r--db/test/test039.tcl5
-rw-r--r--db/test/test040.tcl5
-rw-r--r--db/test/test041.tcl5
-rw-r--r--db/test/test042.tcl5
-rw-r--r--db/test/test043.tcl5
-rw-r--r--db/test/test044.tcl5
-rw-r--r--db/test/test045.tcl5
-rw-r--r--db/test/test046.tcl5
-rw-r--r--db/test/test047.tcl5
-rw-r--r--db/test/test048.tcl5
-rw-r--r--db/test/test049.tcl5
-rw-r--r--db/test/test050.tcl5
-rw-r--r--db/test/test051.tcl5
-rw-r--r--db/test/test052.tcl5
-rw-r--r--db/test/test053.tcl5
-rw-r--r--db/test/test054.tcl5
-rw-r--r--db/test/test055.tcl5
-rw-r--r--db/test/test056.tcl5
-rw-r--r--db/test/test057.tcl5
-rw-r--r--db/test/test058.tcl5
-rw-r--r--db/test/test059.tcl5
-rw-r--r--db/test/test060.tcl5
-rw-r--r--db/test/test061.tcl5
-rw-r--r--db/test/test062.tcl5
-rw-r--r--db/test/test063.tcl5
-rw-r--r--db/test/test064.tcl5
-rw-r--r--db/test/test065.tcl5
-rw-r--r--db/test/test066.tcl5
-rw-r--r--db/test/test067.tcl5
-rw-r--r--db/test/test068.tcl5
-rw-r--r--db/test/test069.tcl5
-rw-r--r--db/test/test070.tcl5
-rw-r--r--db/test/test071.tcl5
-rw-r--r--db/test/test072.tcl5
-rw-r--r--db/test/test073.tcl5
-rw-r--r--db/test/test074.tcl5
-rw-r--r--db/test/test076.tcl5
-rw-r--r--db/test/test077.tcl5
-rw-r--r--db/test/test078.tcl5
-rw-r--r--db/test/test079.tcl5
-rw-r--r--db/test/test081.tcl5
-rw-r--r--db/test/test082.tcl5
-rw-r--r--db/test/test083.tcl5
-rw-r--r--db/test/test084.tcl5
-rw-r--r--db/test/test085.tcl5
-rw-r--r--db/test/test086.tcl5
-rw-r--r--db/test/test087.tcl5
-rw-r--r--db/test/test088.tcl5
-rw-r--r--db/test/test089.tcl5
-rw-r--r--db/test/test090.tcl5
-rw-r--r--db/test/test091.tcl5
-rw-r--r--db/test/test092.tcl5
-rw-r--r--db/test/test093.tcl109
-rw-r--r--db/test/test094.tcl5
-rw-r--r--db/test/test095.tcl5
-rw-r--r--db/test/test096.tcl5
-rw-r--r--db/test/test097.tcl7
-rw-r--r--db/test/test098.tcl5
-rw-r--r--db/test/test099.tcl5
-rw-r--r--db/test/test100.tcl5
-rw-r--r--db/test/test101.tcl5
-rw-r--r--db/test/test102.tcl5
-rw-r--r--db/test/test103.tcl5
-rw-r--r--db/test/test106.tcl6
-rw-r--r--db/test/test107.tcl5
-rw-r--r--db/test/test109.tcl5
-rw-r--r--db/test/test110.tcl5
-rw-r--r--db/test/test111.tcl5
-rw-r--r--db/test/test112.tcl5
-rw-r--r--db/test/test113.tcl5
-rw-r--r--db/test/test114.tcl5
-rw-r--r--db/test/test115.tcl13
-rw-r--r--db/test/test116.tcl15
-rw-r--r--db/test/test117.tcl5
-rw-r--r--db/test/test119.tcl5
-rw-r--r--db/test/test120.tcl7
-rw-r--r--db/test/test121.tcl7
-rw-r--r--db/test/test122.tcl7
-rw-r--r--db/test/testparams.tcl38
-rw-r--r--db/test/testutils.tcl70
-rw-r--r--db/test/txn.tcl181
-rw-r--r--db/test/txn001.tcl5
-rw-r--r--db/test/txn002.tcl5
-rw-r--r--db/test/txn003.tcl16
-rw-r--r--db/test/txn004.tcl5
-rw-r--r--db/test/txn005.tcl5
-rw-r--r--db/test/txn006.tcl5
-rw-r--r--db/test/txn007.tcl5
-rw-r--r--db/test/txn008.tcl5
-rw-r--r--db/test/txn009.tcl5
-rw-r--r--db/test/txn010.tcl5
-rw-r--r--db/test/txn011.tcl5
-rw-r--r--db/test/txn012.tcl5
-rw-r--r--db/test/txn012script.tcl5
-rw-r--r--db/test/txn013.tcl5
-rw-r--r--db/test/txn014.tcl151
-rw-r--r--db/test/txnscript.tcl5
-rw-r--r--db/test/update.tcl5
-rw-r--r--db/test/upgrade.tcl14
-rw-r--r--db/test/upgrade/README85
-rw-r--r--db/test/upgrade/generate-2.X/pack-2.6.6.pl114
-rw-r--r--db/test/upgrade/generate-2.X/test-2.6.patch379
-rw-r--r--db/test/wrap.tcl7
-rw-r--r--db/test_micro/README92
-rw-r--r--db/test_micro/SOURCE/LIST26
-rw-r--r--db/test_micro/SOURCE/b_curalloc.c63
-rw-r--r--db/test_micro/SOURCE/b_curwalk.c182
-rw-r--r--db/test_micro/SOURCE/b_del.c149
-rw-r--r--db/test_micro/SOURCE/b_get.c118
-rw-r--r--db/test_micro/SOURCE/b_load.c147
-rw-r--r--db/test_micro/SOURCE/b_open.c138
-rw-r--r--db/test_micro/SOURCE/b_put.c195
-rw-r--r--db/test_micro/SOURCE/b_recover.c134
-rw-r--r--db/test_micro/SOURCE/b_txn.c89
-rw-r--r--db/test_micro/SOURCE/b_txn_write.c154
-rw-r--r--db/test_micro/SOURCE/b_workload.c622
-rw-r--r--db/test_micro/SOURCE/b_workload.h159
-rw-r--r--db/test_micro/SOURCE/bench.h148
-rw-r--r--db/test_micro/SOURCE/inmem.c390
-rw-r--r--db/test_micro/SOURCE/uname.c15
-rw-r--r--db/test_micro/test_micro479
-rw-r--r--db/txn/txn.c240
-rw-r--r--db/txn/txn.src28
-rw-r--r--db/txn/txn_auto.c48
-rw-r--r--db/txn/txn_autop.c20
-rw-r--r--db/txn/txn_chkpt.c93
-rw-r--r--db/txn/txn_failchk.c11
-rw-r--r--db/txn/txn_method.c17
-rw-r--r--db/txn/txn_rec.c71
-rw-r--r--db/txn/txn_recover.c72
-rw-r--r--db/txn/txn_region.c82
-rw-r--r--db/txn/txn_stat.c14
-rw-r--r--db/txn/txn_util.c132
-rw-r--r--db/xa/xa.c17
-rw-r--r--db/xa/xa_db.c5
-rw-r--r--db/xa/xa_map.c5
-rw-r--r--db/xa/xa_stub.c38
-rw-r--r--rpmdb/Makefile.am2
4870 files changed, 227944 insertions, 197405 deletions
diff --git a/db/LICENSE b/db/LICENSE
index ffe7f3e33..8bdd5c9d1 100644
--- a/db/LICENSE
+++ b/db/LICENSE
@@ -1,16 +1,15 @@
/*-
- * $Id: LICENSE,v 12.4 2006/08/25 18:42:22 bostic Exp $
+ * $Id: LICENSE,v 12.7 2007/05/17 15:14:46 bostic Exp $
*/
The following is the license that applies to this copy of the Berkeley DB
software. For a license to use the Berkeley DB software under conditions
other than those described here, or to purchase support for this software,
-please contact Oracle Corporation at berkeleydb-info_us@oracle.com.
+please contact Oracle at berkeleydb-info_us@oracle.com.
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
/*
- * Copyright (c) 1990-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1990,2007 Oracle. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -31,17 +30,17 @@ please contact Oracle Corporation at berkeleydb-info_us@oracle.com.
* files that typically accompany the major components of the operating
* system on which the executable file runs.
*
- * THIS SOFTWARE IS PROVIDED BY ORACLE CORPORATION ``AS IS'' AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * THIS SOFTWARE IS PROVIDED BY ORACLE ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR
- * NON-INFRINGEMENT, ARE DISCLAIMED. IN NO EVENT SHALL ORACLE CORPORATION
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * NON-INFRINGEMENT, ARE DISCLAIMED. IN NO EVENT SHALL ORACLE BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+ * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+ * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/*
* Copyright (c) 1990, 1993, 1994, 1995
diff --git a/db/README b/db/README
index 0b084ff5b..42402df8a 100644
--- a/db/README
+++ b/db/README
@@ -1,5 +1,5 @@
-Berkeley DB 4.5.20: (September 20, 2006)
+Berkeley DB 4.6.18: (July 17, 2007)
-This is version 4.5.20 of Berkeley DB from Oracle Corporation. To view
-the release and installation documentation, load the distribution file
-docs/index.html into your web browser.
+This is version 4.6.18 of Berkeley DB from Oracle. To view release and
+installation documentation, load the distribution file docs/index.html
+into your web browser.
diff --git a/db/btree/bt_compact.c b/db/btree/bt_compact.c
index c5fa483b1..aa45bc350 100644
--- a/db/btree/bt_compact.c
+++ b/db/btree/bt_compact.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1999-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1999,2007 Oracle. All rights reserved.
*
- * $Id: bt_compact.c,v 12.53 2006/08/24 14:44:43 bostic Exp $
+ * $Id: bt_compact.c,v 12.62 2007/05/17 15:14:46 bostic Exp $
*/
#include "db_config.h"
@@ -45,7 +44,7 @@ static int __bam_truncate_internal __P((DB *, DB_TXN *, DB_COMPACT *));
do { \
save_data = *c_data; \
ret = __db_retcopy(dbenv, \
- &save_start, end->data, end->size, \
+ &save_start, current.data, current.size, \
&save_start.data, &save_start.ulen); \
} while (0)
@@ -60,9 +59,9 @@ static int __bam_truncate_internal __P((DB *, DB_TXN *, DB_COMPACT *));
save_data.compact_pages_free; \
c_data->compact_levels = save_data.compact_levels; \
c_data->compact_truncate = save_data.compact_truncate; \
- ret = __db_retcopy(dbenv, end, \
+ ret = __db_retcopy(dbenv, &current, \
save_start.data, save_start.size, \
- &end->data, &end->ulen); \
+ &current.data, &current.ulen); \
} while (0)
/*
* __bam_compact -- compact a btree.
@@ -83,38 +82,39 @@ __bam_compact(dbp, txn, start, stop, c_data, flags, end)
DBC *dbc;
DB_COMPACT save_data;
DB_ENV *dbenv;
- db_pgno_t last_pgno;
- struct pglist *list;
- u_int32_t factor, nelems, truncated;
+ u_int32_t factor;
int deadlock, done, ret, span, t_ret, txn_local;
+#ifdef HAVE_FTRUNCATE
+ struct pglist *list;
+ db_pgno_t last_pgno;
+ u_int32_t nelems, truncated;
+#endif
+
dbenv = dbp->dbenv;
memset(&current, 0, sizeof(current));
memset(&save_start, 0, sizeof(save_start));
dbc = NULL;
- deadlock = 0;
- done = 0;
factor = 0;
- ret = 0;
- span = 0;
- truncated = 0;
+ deadlock = done = ret = span = 0;
+
+#ifdef HAVE_FTRUNCATE
+ list = NULL;
last_pgno = 0;
+ nelems = truncated = 0;
+#endif
/*
- * We pass "end" to the internal routine, indicating where
- * that routine should begin its work and expecting that it
- * will return to us the last key that it processed.
+ * We pass "current" to the internal routine, indicating where that
+ * routine should begin its work and expecting that it will return to
+ * us the last key that it processed.
*/
- if (end == NULL)
- end = &current;
if (start != NULL && (ret = __db_retcopy(dbenv,
- end, start->data, start->size, &end->data, &end->ulen)) != 0)
+ &current, start->data, start->size,
+ &current.data, &current.ulen)) != 0)
return (ret);
- list = NULL;
- nelems = 0;
-
if (IS_DB_AUTO_COMMIT(dbp, txn))
txn_local = 1;
else
@@ -201,7 +201,7 @@ no_free:
if ((ret = __db_cursor(dbp, txn, &dbc, 0)) != 0)
goto err;
- if ((ret = __bam_compact_int(dbc, end, stop, factor,
+ if ((ret = __bam_compact_int(dbc, &current, stop, factor,
&span, c_data, &done)) == DB_LOCK_DEADLOCK && txn_local) {
/*
* We retry on deadlock. Cancel the statistics
@@ -213,7 +213,7 @@ no_free:
RESTORE_START;
}
- if ((t_ret = __db_c_close(dbc)) != 0 && ret == 0)
+ if ((t_ret = __dbc_close(dbc)) != 0 && ret == 0)
ret = t_ret;
err: if (txn_local && txn != NULL) {
@@ -225,6 +225,9 @@ err: if (txn_local && txn != NULL) {
}
} while (ret == 0 && !done);
+ if (ret == 0 && end != NULL)
+ ret = __db_retcopy(dbenv, end, current.data, current.size,
+ &end->data, &end->ulen);
if (current.data != NULL)
__os_free(dbenv, current.data);
if (save_start.data != NULL)
@@ -246,7 +249,7 @@ done: if (LF_ISSET(DB_FREE_SPACE)) {
if (ret == 0 && !LF_ISSET(DB_FREELIST_ONLY) && (t_ret =
__memp_fget(dbp->mpf, &pgno, txn, 0, &meta)) == 0) {
done = meta->free == PGNO_INVALID;
- ret = __memp_fput(dbp->mpf, meta, 0);
+ ret = __memp_fput(dbp->mpf, meta, dbc->priority);
}
if (!done)
@@ -260,8 +263,8 @@ done: if (LF_ISSET(DB_FREE_SPACE)) {
__memp_fget(dbp->mpf, &pgno, txn, 0, &meta)) == 0) {
c_data->compact_pages_truncated =
truncated + last_pgno - meta->last_pgno;
- if ((t_ret =
- __memp_fput(dbp->mpf, meta, 0)) != 0 && ret == 0)
+ if ((t_ret = __memp_fput(
+ dbp->mpf, meta, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
} else if (ret == 0)
ret = t_ret;
@@ -496,7 +499,7 @@ next: /*
dbc, &pg, factor, 0, c_data, &pgs_done)) != 0)
goto err;
npgno = NEXT_PGNO(pg);
- if ((ret = __memp_fput(dbmp, pg, 0)) != 0)
+ if ((ret = __memp_fput(dbmp, pg, dbc->priority)) != 0)
goto err;
pg = NULL;
/*
@@ -549,7 +552,7 @@ next: /*
/* Release the page so we don't deadlock getting its parent. */
if ((ret = __LPUT(dbc, cp->csp->lock)) != 0)
goto err;
- if ((ret = __memp_fput(dbmp, pg, 0)) != 0)
+ if ((ret = __memp_fput(dbmp, pg, dbc->priority)) != 0)
goto err;
BT_STK_CLR(cp);
pg = NULL;
@@ -607,7 +610,7 @@ next: /*
/* case 3 -- different parents. */
if (*spanp) {
CTRACE(dbc, "Span", "", start, 0);
- if (ndbc == NULL && (ret = __db_c_dup(dbc, &ndbc, 0)) != 0)
+ if (ndbc == NULL && (ret = __dbc_dup(dbc, &ndbc, 0)) != 0)
goto err;
ncp = (BTREE_CURSOR *)ndbc->internal;
ncp->recno = next_recno;
@@ -633,8 +636,8 @@ next: /*
}
}
- if ((ret =
- __memp_dirty(dbp->mpf, &ncp->csp->page, dbc->txn, 0)) != 0)
+ if ((ret = __memp_dirty(dbp->mpf,
+ &ncp->csp->page, dbc->txn, dbc->priority, 0)) != 0)
goto err;
PTRACE(dbc, "SDups", PGNO(ncp->csp->page), start, 0);
if (check_dups && (ret = __bam_compact_dups(ndbc,
@@ -671,8 +674,8 @@ next: /*
goto err1;
}
- if ((ret =
- __memp_dirty(dbp->mpf, &cp->csp->page, dbc->txn, 0)) != 0)
+ if ((ret = __memp_dirty(dbp->mpf,
+ &cp->csp->page, dbc->txn, dbc->priority, 0)) != 0)
goto err1;
pg = cp->csp->page;
npgno = NEXT_PGNO(pg);
@@ -749,7 +752,7 @@ next: /*
goto next_page;
if ((ret = __memp_dirty(dbp->mpf, &cp->csp->page,
- dbc->txn, 0)) != 0)
+ dbc->txn, dbc->priority, 0)) != 0)
goto err;
pg = cp->csp->page;
@@ -780,9 +783,9 @@ next: /*
goto next_page;
/* If they have the same parent, just dup the cursor */
- if (ndbc != NULL && (ret = __db_c_close(ndbc)) != 0)
+ if (ndbc != NULL && (ret = __dbc_close(ndbc)) != 0)
goto err1;
- if ((ret = __db_c_dup(dbc, &ndbc, DB_POSITION)) != 0)
+ if ((ret = __dbc_dup(dbc, &ndbc, DB_POSITION)) != 0)
goto err1;
ncp = (BTREE_CURSOR *)ndbc->internal;
@@ -888,7 +891,7 @@ next_no_release:
*/
if (pgs_done != 0 && *spanp) {
deleted: if (((ret = __bam_stkrel(ndbc, 0)) != 0 ||
- (ret = __db_c_close(ndbc)) != 0))
+ (ret = __dbc_close(ndbc)) != 0))
goto err;
*donep = 0;
return (0);
@@ -916,13 +919,15 @@ err: if (dbc != NULL &&
if (ndbc != NULL) {
if ((t_ret = __bam_stkrel(ndbc, STK_CLRDBC)) != 0 && ret == 0)
ret = t_ret;
- else if ((t_ret = __db_c_close(ndbc)) != 0 && ret == 0)
+ else if ((t_ret = __dbc_close(ndbc)) != 0 && ret == 0)
ret = t_ret;
}
- if (pg != NULL && (t_ret = __memp_fput(dbmp, pg, 0) != 0) && ret == 0)
+ if (pg != NULL && (t_ret =
+ __memp_fput(dbmp, pg, dbc->priority) != 0) && ret == 0)
ret = t_ret;
- if (npg != NULL && (t_ret = __memp_fput(dbmp, npg, 0) != 0) && ret == 0)
+ if (npg != NULL && (t_ret =
+ __memp_fput(dbmp, npg, dbc->priority) != 0) && ret == 0)
ret = t_ret;
*donep = done;
@@ -1213,8 +1218,10 @@ noprefix:
/* Loop through the records and move them from npg to pg. */
no_check: is_dup = first_dup = next_dup = 0;
- if ((ret = __memp_dirty(dbp->mpf, &cp->csp->page, dbc->txn, 0)) != 0 ||
- (ret = __memp_dirty(dbp->mpf, &ncp->csp->page, dbc->txn, 0)) != 0)
+ if ((ret = __memp_dirty(dbp->mpf,
+ &cp->csp->page, dbc->txn, dbc->priority, 0)) != 0 ||
+ (ret = __memp_dirty(dbp->mpf,
+ &ncp->csp->page, dbc->txn, dbc->priority, 0)) != 0)
goto err;
pg = cp->csp->page;
npg = ncp->csp->page;
@@ -1338,8 +1345,10 @@ __bam_merge_pages(dbc, ndbc, c_data)
if (nent == 0)
goto free;
- if ((ret = __memp_dirty(dbp->mpf, &cp->csp->page, dbc->txn, 0)) != 0 ||
- (ret = __memp_dirty(dbp->mpf, &ncp->csp->page, dbc->txn, 0)) != 0)
+ if ((ret = __memp_dirty(dbp->mpf,
+ &cp->csp->page, dbc->txn, dbc->priority, 0)) != 0 ||
+ (ret = __memp_dirty(dbp->mpf,
+ &ncp->csp->page, dbc->txn, dbc->priority, 0)) != 0)
goto err;
pg = cp->csp->page;
npg = ncp->csp->page;
@@ -1415,7 +1424,7 @@ free: /*
goto err;
if (level == LEVEL(npg))
level = 0;
- if ((ret = __memp_fput(dbmp, npg, 0)) != 0)
+ if ((ret = __memp_fput(dbmp, npg, dbc->priority)) != 0)
goto err;
npg = NULL;
if (level != 0) {
@@ -1495,8 +1504,10 @@ __bam_merge_internal(dbc, ndbc, level, c_data, merged)
if (npg == pg)
goto done;
- if ((ret = __memp_dirty(dbmp, &cp->csp->page, dbc->txn, 0)) != 0 ||
- (ret = __memp_dirty(dbmp, &ncp->csp->page, dbc->txn, 0)) != 0)
+ if ((ret = __memp_dirty(dbmp,
+ &cp->csp->page, dbc->txn, dbc->priority, 0)) != 0 ||
+ (ret = __memp_dirty(dbmp,
+ &ncp->csp->page, dbc->txn, dbc->priority, 0)) != 0)
goto err;
pg = cp->csp->page;
npg = ncp->csp->page;
@@ -1672,7 +1683,8 @@ fits: memset(&bi, 0, sizeof(bi));
* anything to them.
*/
do {
- if ((ret = __memp_fput(dbmp, nsave_csp->page, 0)) != 0)
+ if ((ret =
+ __memp_fput(dbmp, nsave_csp->page, dbc->priority)) != 0)
goto err;
if ((ret = __LPUT(dbc, nsave_csp->lock)) != 0)
goto err;
@@ -1706,7 +1718,8 @@ fits: memset(&bi, 0, sizeof(bi));
goto err;
if (level == LEVEL(npg))
level = 0;
- if ((ret = __memp_fput(dbmp, npg, 0)) != 0)
+ if ((ret =
+ __memp_fput(dbmp, npg, dbc->priority)) != 0)
goto err;
npg = NULL;
if (level != 0) {
@@ -1776,7 +1789,7 @@ __bam_compact_dups(dbc, ppg, factor, have_lock, c_data, donep)
goto err;
have_lock = 1;
if ((ret = __memp_dirty(dbp->mpf, ppg,
- dbc->txn, 0)) != 0)
+ dbc->txn, dbc->priority, 0)) != 0)
goto err;
pg = *ppg;
}
@@ -1803,11 +1816,11 @@ __bam_compact_dups(dbc, ppg, factor, have_lock, c_data, donep)
goto err;
level = dpg->level;
- if ((ret = __memp_fput(dbmp, dpg, 0)) != 0)
+ if ((ret = __memp_fput(dbmp, dpg, dbc->priority)) != 0)
goto err;
if (level == LEAFLEVEL)
continue;
- if ((ret = __db_c_newopd(dbc, bo->pgno, NULL, &opd)) != 0)
+ if ((ret = __dbc_newopd(dbc, bo->pgno, NULL, &opd)) != 0)
return (ret);
if (!have_lock) {
if ((ret = __db_lget(dbc, 0,
@@ -1815,7 +1828,7 @@ __bam_compact_dups(dbc, ppg, factor, have_lock, c_data, donep)
goto err;
have_lock = 1;
if ((ret = __memp_dirty(dbp->mpf, ppg,
- dbc->txn, 0)) != 0)
+ dbc->txn, dbc->priority, 0)) != 0)
goto err;
pg = *ppg;
}
@@ -1833,13 +1846,13 @@ __bam_compact_dups(dbc, ppg, factor, have_lock, c_data, donep)
if (ret != 0)
goto err;
- ret = __db_c_close(opd);
+ ret = __dbc_close(opd);
opd = NULL;
if (ret != 0)
goto err;
}
-err: if (opd != NULL && (t_ret = __db_c_close(opd)) != 0 && ret == 0)
+err: if (opd != NULL && (t_ret = __dbc_close(opd)) != 0 && ret == 0)
ret = t_ret;
return (ret);
}
@@ -1896,7 +1909,8 @@ __bam_truncate_page(dbc, pgp, update_parent)
return (__db_free(dbc, newpage));
}
- if ((ret = __memp_dirty(dbp->mpf, &newpage, dbc->txn, 0)) != 0)
+ if ((ret = __memp_dirty(dbp->mpf,
+ &newpage, dbc->txn, dbc->priority, 0)) != 0)
goto err;
/* Log if necessary. */
@@ -1927,7 +1941,8 @@ __bam_truncate_page(dbc, pgp, update_parent)
LSN(newpage) = lsn;
/* Empty the old page. */
- if ((ret = __memp_dirty(dbp->mpf, pgp, dbc->txn, 0)) != 0)
+ if ((ret = __memp_dirty(dbp->mpf,
+ pgp, dbc->txn, dbc->priority, 0)) != 0)
goto err;
if (TYPE(*pgp) == P_OVERFLOW)
OV_LEN(*pgp) = 0;
@@ -1970,7 +1985,8 @@ __bam_truncate_page(dbc, pgp, update_parent)
/* Update the parent. */
epg = &cp->csp[-1];
- if ((ret = __memp_dirty(dbp->mpf, &epg->page, dbc->txn, 0)) != 0)
+ if ((ret = __memp_dirty(dbp->mpf,
+ &epg->page, dbc->txn, dbc->priority, 0)) != 0)
return (ret);
switch (TYPE(epg->page)) {
@@ -1997,7 +2013,7 @@ __bam_truncate_page(dbc, pgp, update_parent)
done: return (0);
-err: (void)__memp_fput(dbp->mpf, newpage, 0);
+err: (void)__memp_fput(dbp->mpf, newpage, dbc->priority);
return (ret);
}
@@ -2028,7 +2044,7 @@ __bam_truncate_overflow(dbc, pgno, pg_lock, c_data)
return (ret);
while ((pgno = NEXT_PGNO(page)) != PGNO_INVALID) {
- if ((ret = __memp_fput(dbp->mpf, page, 0)) != 0)
+ if ((ret = __memp_fput(dbp->mpf, page, dbc->priority)) != 0)
return (ret);
if ((ret = __memp_fget(dbp->mpf, &pgno, dbc->txn,
0, &page)) != 0)
@@ -2046,7 +2062,8 @@ __bam_truncate_overflow(dbc, pgno, pg_lock, c_data)
}
if (page != NULL &&
- (t_ret = __memp_fput(dbp->mpf, page, 0)) != 0 && ret == 0)
+ (t_ret = __memp_fput(
+ dbp->mpf, page, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
if ((t_ret = __LPUT(dbc, lock)) != 0 && ret == 0)
ret = t_ret;
@@ -2132,7 +2149,7 @@ __bam_truncate_root_page(dbc, pg, indx, c_data)
*pgnop = newpgno;
err: if (page != NULL && (t_ret =
- __memp_fput(dbp->mpf, page, 0)) != 0 && ret == 0)
+ __memp_fput(dbp->mpf, page, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
return (ret);
}
@@ -2312,7 +2329,7 @@ new_txn:
break;
} while (pgno != cp->root);
- if ((ret = __db_c_close(dbc)) != 0)
+ if ((ret = __dbc_close(dbc)) != 0)
goto err;
dbc = NULL;
if (local_txn) {
@@ -2325,7 +2342,7 @@ new_txn:
err: if (dbc != NULL && (t_ret = __bam_stkrel(dbc, 0)) != 0 && ret == 0)
ret = t_ret;
- if (dbc != NULL && (t_ret = __db_c_close(dbc)) != 0 && ret == 0)
+ if (dbc != NULL && (t_ret = __dbc_close(dbc)) != 0 && ret == 0)
ret = t_ret;
if (local_txn &&
txn != NULL && (t_ret = __txn_abort(txn)) != 0 && ret == 0)
@@ -2363,10 +2380,10 @@ __bam_free_freelist(dbp, txn)
{
DBC *dbc;
DB_LOCK lock;
- int ret, t_ret;
+ int auto_commit, ret, t_ret;
LOCK_INIT(lock);
- ret = 0;
+ auto_commit = ret = 0;
/*
* If we are not in a transaction then we need to get
@@ -2376,8 +2393,21 @@ __bam_free_freelist(dbp, txn)
dbc = NULL;
if (IS_DB_AUTO_COMMIT(dbp, txn)) {
+ /*
+ * We must not timeout the lock or we will not free the list.
+ * We ignore errors from txn_begin as there is little that
+ * the application can do with the error and we want to
+ * get the lock and free the list if at all possible.
+ */
+ if (__txn_begin(dbp->dbenv, NULL, &txn, 0) == 0) {
+ (void)__lock_set_timeout(dbp->dbenv,
+ txn->locker, 0, DB_SET_TXN_TIMEOUT);
+ (void)__lock_set_timeout(dbp->dbenv,
+ txn->locker, 0, DB_SET_LOCK_TIMEOUT);
+ auto_commit = 1;
+ }
/* Get a cursor so we can call __db_lget. */
- if ((ret = __db_cursor(dbp, NULL, &dbc, 0)) != 0)
+ if ((ret = __db_cursor(dbp, txn, &dbc, 0)) != 0)
return (ret);
if ((ret = __db_lget(dbc,
@@ -2390,7 +2420,10 @@ __bam_free_freelist(dbp, txn)
err: if ((t_ret = __LPUT(dbc, lock)) != 0 && ret == 0)
ret = t_ret;
- if (dbc != NULL && (t_ret = __db_c_close(dbc)) != 0 && ret == 0)
+ if (dbc != NULL && (t_ret = __dbc_close(dbc)) != 0 && ret == 0)
+ ret = t_ret;
+
+ if (auto_commit && __txn_abort(txn) != 0 && ret == 0)
ret = t_ret;
return (ret);
diff --git a/db/btree/bt_compare.c b/db/btree/bt_compare.c
index 17950a664..3b35a37e3 100644
--- a/db/btree/bt_compare.c
+++ b/db/btree/bt_compare.c
@@ -1,8 +1,7 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*/
/*
* Copyright (c) 1990, 1993, 1994, 1995, 1996
@@ -39,7 +38,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: bt_compare.c,v 12.7 2006/08/24 14:44:44 bostic Exp $
+ * $Id: bt_compare.c,v 12.9 2007/05/17 15:14:46 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/btree/bt_conv.c b/db/btree/bt_conv.c
index 04de0688c..3ba6fd116 100644
--- a/db/btree/bt_conv.c
+++ b/db/btree/bt_conv.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: bt_conv.c,v 12.5 2006/08/24 14:44:44 bostic Exp $
+ * $Id: bt_conv.c,v 12.7 2007/05/17 15:14:46 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/btree/bt_curadj.c b/db/btree/bt_curadj.c
index 950d2bfac..40f037e5e 100644
--- a/db/btree/bt_curadj.c
+++ b/db/btree/bt_curadj.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: bt_curadj.c,v 12.11 2006/08/24 14:44:44 bostic Exp $
+ * $Id: bt_curadj.c,v 12.14 2007/05/17 15:14:46 bostic Exp $
*/
#include "db_config.h"
@@ -229,11 +228,11 @@ __bam_opd_cursor(dbp, dbc, first, tpgno, ti)
* If duplicates aren't sorted, we've just created a Recno tree.
*
* Note that in order to get here at all, there shouldn't be
- * an old off-page dup cursor--to augment the checking db_c_newopd
+ * an old off-page dup cursor--to augment the checking dbc_newopd
* will do, assert this.
*/
DB_ASSERT(dbp->dbenv, orig_cp->opd == NULL);
- if ((ret = __db_c_newopd(dbc, tpgno, orig_cp->opd, &dbc_nopd)) != 0)
+ if ((ret = __dbc_newopd(dbc, tpgno, orig_cp->opd, &dbc_nopd)) != 0)
return (ret);
cp = (BTREE_CURSOR *)dbc_nopd->internal;
@@ -391,7 +390,7 @@ loop: MUTEX_LOCK(dbenv, dbp->mutex);
MVCC_SKIP_CURADJ(dbc, fpgno))
continue;
MUTEX_UNLOCK(dbenv, dbp->mutex);
- if ((ret = __db_c_close(orig_cp->opd)) != 0)
+ if ((ret = __dbc_close(orig_cp->opd)) != 0)
goto err;
orig_cp->opd = NULL;
orig_cp->indx = fi;
diff --git a/db/btree/bt_cursor.c b/db/btree/bt_cursor.c
index dbcda5a40..7239145d8 100644
--- a/db/btree/bt_cursor.c
+++ b/db/btree/bt_cursor.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: bt_cursor.c,v 12.23 2006/09/14 23:55:24 bostic Exp $
+ * $Id: bt_cursor.c,v 12.29 2007/05/17 15:14:46 bostic Exp $
*/
#include "db_config.h"
@@ -16,18 +15,18 @@
#include "dbinc/mp.h"
static int __bam_bulk __P((DBC *, DBT *, u_int32_t));
-static int __bam_c_close __P((DBC *, db_pgno_t, int *));
-static int __bam_c_del __P((DBC *));
-static int __bam_c_destroy __P((DBC *));
-static int __bam_c_get __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *));
-static int __bam_c_getstack __P((DBC *));
-static int __bam_c_next __P((DBC *, int, int));
-static int __bam_c_physdel __P((DBC *));
-static int __bam_c_prev __P((DBC *));
-static int __bam_c_put __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *));
-static int __bam_c_search __P((DBC *,
+static int __bamc_close __P((DBC *, db_pgno_t, int *));
+static int __bamc_del __P((DBC *));
+static int __bamc_destroy __P((DBC *));
+static int __bamc_get __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *));
+static int __bamc_getstack __P((DBC *));
+static int __bamc_next __P((DBC *, int, int));
+static int __bamc_physdel __P((DBC *));
+static int __bamc_prev __P((DBC *));
+static int __bamc_put __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *));
+static int __bamc_search __P((DBC *,
db_pgno_t, const DBT *, u_int32_t, int *));
-static int __bam_c_writelock __P((DBC *));
+static int __bamc_writelock __P((DBC *));
static int __bam_getboth_finddatum __P((DBC *, DBT *, u_int32_t));
static int __bam_getbothc __P((DBC *, DBT *));
static int __bam_get_prev __P((DBC *));
@@ -49,7 +48,7 @@ static int __bam_isopd __P((DBC *, db_pgno_t *));
#define ACQUIRE(dbc, mode, lpgno, lock, fpgno, pagep, flags, ret) do { \
DB_MPOOLFILE *__mpf = (dbc)->dbp->mpf; \
if ((pagep) != NULL) { \
- ret = __memp_fput(__mpf, pagep, 0); \
+ ret = __memp_fput(__mpf, pagep, dbc->priority); \
pagep = NULL; \
} else \
ret = 0; \
@@ -99,7 +98,7 @@ static int __bam_isopd __P((DBC *, db_pgno_t *));
DB_MPOOLFILE *__mpf = (dbc)->dbp->mpf; \
int __t_ret; \
if ((__cp->page) != NULL) { \
- __t_ret = __memp_fput(__mpf, __cp->page, 0); \
+ __t_ret = __memp_fput(__mpf, __cp->page, dbc->priority);\
__cp->page = NULL; \
} else \
__t_ret = 0; \
@@ -140,13 +139,13 @@ static int __bam_isopd __P((DBC *, db_pgno_t *));
IS_DUPLICATE(dbc, (dbc)->internal->indx, orig_indx)))
/*
- * __bam_c_init --
+ * __bamc_init --
* Initialize the access private portion of a cursor
*
- * PUBLIC: int __bam_c_init __P((DBC *, DBTYPE));
+ * PUBLIC: int __bamc_init __P((DBC *, DBTYPE));
*/
int
-__bam_c_init(dbc, dbtype)
+__bamc_init(dbc, dbtype)
DBC *dbc;
DBTYPE dbtype;
{
@@ -161,42 +160,42 @@ __bam_c_init(dbc, dbtype)
return (ret);
/* Initialize methods. */
- dbc->c_close = __db_c_close_pp;
- dbc->c_count = __db_c_count_pp;
- dbc->c_del = __db_c_del_pp;
- dbc->c_dup = __db_c_dup_pp;
- dbc->c_get = __db_c_get_pp;
- dbc->c_pget = __db_c_pget_pp;
- dbc->c_put = __db_c_put_pp;
+ dbc->close = dbc->c_close = __dbc_close_pp;
+ dbc->count = dbc->c_count = __dbc_count_pp;
+ dbc->del = dbc->c_del = __dbc_del_pp;
+ dbc->dup = dbc->c_dup = __dbc_dup_pp;
+ dbc->get = dbc->c_get = __dbc_get_pp;
+ dbc->pget = dbc->c_pget = __dbc_pget_pp;
+ dbc->put = dbc->c_put = __dbc_put_pp;
if (dbtype == DB_BTREE) {
- dbc->c_am_bulk = __bam_bulk;
- dbc->c_am_close = __bam_c_close;
- dbc->c_am_del = __bam_c_del;
- dbc->c_am_destroy = __bam_c_destroy;
- dbc->c_am_get = __bam_c_get;
- dbc->c_am_put = __bam_c_put;
- dbc->c_am_writelock = __bam_c_writelock;
+ dbc->am_bulk = __bam_bulk;
+ dbc->am_close = __bamc_close;
+ dbc->am_del = __bamc_del;
+ dbc->am_destroy = __bamc_destroy;
+ dbc->am_get = __bamc_get;
+ dbc->am_put = __bamc_put;
+ dbc->am_writelock = __bamc_writelock;
} else {
- dbc->c_am_bulk = __bam_bulk;
- dbc->c_am_close = __bam_c_close;
- dbc->c_am_del = __ram_c_del;
- dbc->c_am_destroy = __bam_c_destroy;
- dbc->c_am_get = __ram_c_get;
- dbc->c_am_put = __ram_c_put;
- dbc->c_am_writelock = __bam_c_writelock;
+ dbc->am_bulk = __bam_bulk;
+ dbc->am_close = __bamc_close;
+ dbc->am_del = __ramc_del;
+ dbc->am_destroy = __bamc_destroy;
+ dbc->am_get = __ramc_get;
+ dbc->am_put = __ramc_put;
+ dbc->am_writelock = __bamc_writelock;
}
return (0);
}
/*
- * __bam_c_refresh
+ * __bamc_refresh
* Set things up properly for cursor re-use.
*
- * PUBLIC: int __bam_c_refresh __P((DBC *));
+ * PUBLIC: int __bamc_refresh __P((DBC *));
*/
int
-__bam_c_refresh(dbc)
+__bamc_refresh(dbc)
DBC *dbc;
{
BTREE *t;
@@ -258,11 +257,11 @@ __bam_c_refresh(dbc)
}
/*
- * __bam_c_close --
+ * __bamc_close --
* Close down the cursor.
*/
static int
-__bam_c_close(dbc, root_pgno, rmroot)
+__bamc_close(dbc, root_pgno, rmroot)
DBC *dbc;
db_pgno_t root_pgno;
int *rmroot;
@@ -362,7 +361,7 @@ __bam_c_close(dbc, root_pgno, rmroot)
case DB_UNKNOWN:
default:
ret = __db_unknown_type(dbp->dbenv,
- "__bam_c_close", dbc->dbtype);
+ "__bamc_close", dbc->dbtype);
goto err;
}
}
@@ -378,7 +377,7 @@ __bam_c_close(dbc, root_pgno, rmroot)
if ((ret = __memp_fget(mpf, &cp->pgno, dbc->txn, 0, &h)) != 0)
goto err;
root_pgno = GET_BOVERFLOW(dbp, h, cp->indx + O_INDX)->pgno;
- if ((ret = __memp_fput(mpf, h, 0)) != 0)
+ if ((ret = __memp_fput(mpf, h, dbc->priority)) != 0)
goto err;
dbc_c = dbc_opd;
@@ -402,7 +401,7 @@ __bam_c_close(dbc, root_pgno, rmroot)
case DB_UNKNOWN:
default:
ret = __db_unknown_type(
- dbp->dbenv, "__bam_c_close", dbc->dbtype);
+ dbp->dbenv, "__bamc_close", dbc->dbtype);
goto err;
}
}
@@ -487,7 +486,7 @@ delete: /*
if ((ret = __memp_fget(mpf, &cp_c->pgno, dbc->txn,
DB_MPOOL_DIRTY, &cp_c->page)) != 0)
goto err;
- if ((ret = __bam_c_physdel(dbc_c)) != 0)
+ if ((ret = __bamc_physdel(dbc_c)) != 0)
goto err;
}
@@ -516,7 +515,7 @@ delete: /*
if ((ret = __db_free(dbc, h)) != 0)
goto err;
} else {
- if ((ret = __memp_fput(mpf, h, 0)) != 0)
+ if ((ret = __memp_fput(mpf, h, dbc->priority)) != 0)
goto err;
goto done;
}
@@ -537,7 +536,7 @@ delete: /*
if ((ret = __memp_fget(mpf, &cp->pgno, dbc->txn,
DB_MPOOL_DIRTY, &cp->page)) != 0)
goto err;
- if ((ret = __bam_c_physdel(dbc)) != 0)
+ if ((ret = __bamc_physdel(dbc)) != 0)
goto err;
} else
*rmroot = 1;
@@ -559,11 +558,11 @@ done: /*
}
/*
- * __bam_c_destroy --
+ * __bamc_destroy --
* Close a single cursor -- internal version.
*/
static int
-__bam_c_destroy(dbc)
+__bamc_destroy(dbc)
DBC *dbc;
{
BTREE_CURSOR *cp;
@@ -579,13 +578,13 @@ __bam_c_destroy(dbc)
}
/*
- * __bam_c_count --
+ * __bamc_count --
* Return a count of on and off-page duplicates.
*
- * PUBLIC: int __bam_c_count __P((DBC *, db_recno_t *));
+ * PUBLIC: int __bamc_count __P((DBC *, db_recno_t *));
*/
int
-__bam_c_count(dbc, recnop)
+__bamc_count(dbc, recnop)
DBC *dbc;
db_recno_t *recnop;
{
@@ -661,18 +660,18 @@ __bam_c_count(dbc, recnop)
*recnop = recno;
- ret = __memp_fput(mpf, cp->page, 0);
+ ret = __memp_fput(mpf, cp->page, dbc->priority);
cp->page = NULL;
return (ret);
}
/*
- * __bam_c_del --
+ * __bamc_del --
* Delete using a cursor.
*/
static int
-__bam_c_del(dbc)
+__bamc_del(dbc)
DBC *dbc;
{
BTREE_CURSOR *cp;
@@ -704,7 +703,7 @@ __bam_c_del(dbc)
* we lock the single page.
*/
if (F_ISSET(cp, C_RECNUM)) {
- if ((ret = __bam_c_getstack(dbc)) != 0)
+ if ((ret = __bamc_getstack(dbc)) != 0)
goto err;
cp->page = cp->csp->page;
} else {
@@ -714,7 +713,8 @@ __bam_c_del(dbc)
}
/* Mark the page dirty. */
- if ((ret = __memp_dirty(mpf, &cp->page, dbc->txn, 0)) != 0)
+ if ((ret = __memp_dirty(mpf,
+ &cp->page, dbc->txn, dbc->priority, 0)) != 0)
goto err;
/* Log the change. */
@@ -742,7 +742,8 @@ err: /*
(void)__bam_stkrel(dbc, 0);
} else
if (cp->page != NULL &&
- (t_ret = __memp_fput(mpf, cp->page, 0)) != 0 && ret == 0)
+ (t_ret = __memp_fput(mpf,
+ cp->page, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
cp->page = NULL;
@@ -758,14 +759,14 @@ err: /*
}
/*
- * __bam_c_dup --
+ * __bamc_dup --
* Duplicate a btree cursor, such that the new one holds appropriate
* locks for the position of the original.
*
- * PUBLIC: int __bam_c_dup __P((DBC *, DBC *));
+ * PUBLIC: int __bamc_dup __P((DBC *, DBC *));
*/
int
-__bam_c_dup(orig_dbc, new_dbc)
+__bamc_dup(orig_dbc, new_dbc)
DBC *orig_dbc, *new_dbc;
{
BTREE_CURSOR *orig, *new;
@@ -781,11 +782,11 @@ __bam_c_dup(orig_dbc, new_dbc)
}
/*
- * __bam_c_get --
+ * __bamc_get --
* Get using a cursor (btree).
*/
static int
-__bam_c_get(dbc, key, data, flags, pgnop)
+__bamc_get(dbc, key, data, flags, pgnop)
DBC *dbc;
DBT *key, *data;
u_int32_t flags;
@@ -825,14 +826,14 @@ __bam_c_get(dbc, key, data, flags, pgnop)
break;
case DB_FIRST:
newopd = 1;
- if ((ret = __bam_c_search(dbc,
+ if ((ret = __bamc_search(dbc,
PGNO_INVALID, NULL, flags, &exact)) != 0)
goto err;
break;
case DB_GET_BOTH:
case DB_GET_BOTH_RANGE:
/*
- * There are two ways to get here based on DBcursor->c_get
+ * There are two ways to get here based on DBcursor->get
* with the DB_GET_BOTH/DB_GET_BOTH_RANGE flags set:
*
* 1. Searching a sorted off-page duplicate tree: do a tree
@@ -845,7 +846,7 @@ __bam_c_get(dbc, key, data, flags, pgnop)
* with an on-page search.
*/
if (F_ISSET(dbc, DBC_OPD)) {
- if ((ret = __bam_c_search(
+ if ((ret = __bamc_search(
dbc, PGNO_INVALID, data, flags, &exact)) != 0)
goto err;
if (flags == DB_GET_BOTH) {
@@ -864,10 +865,10 @@ __bam_c_get(dbc, key, data, flags, pgnop)
*/
if ((cp->indx == NUM_ENT(cp->page) ||
IS_CUR_DELETED(dbc)) &&
- (ret = __bam_c_next(dbc, 1, 0)) != 0)
+ (ret = __bamc_next(dbc, 1, 0)) != 0)
goto err;
} else {
- if ((ret = __bam_c_search(
+ if ((ret = __bamc_search(
dbc, PGNO_INVALID, key, flags, &exact)) != 0)
return (ret);
if (!exact) {
@@ -890,22 +891,22 @@ __bam_c_get(dbc, key, data, flags, pgnop)
break;
case DB_LAST:
newopd = 1;
- if ((ret = __bam_c_search(dbc,
+ if ((ret = __bamc_search(dbc,
PGNO_INVALID, NULL, flags, &exact)) != 0)
goto err;
break;
case DB_NEXT:
newopd = 1;
if (cp->pgno == PGNO_INVALID) {
- if ((ret = __bam_c_search(dbc,
+ if ((ret = __bamc_search(dbc,
PGNO_INVALID, NULL, DB_FIRST, &exact)) != 0)
goto err;
} else
- if ((ret = __bam_c_next(dbc, 1, 0)) != 0)
+ if ((ret = __bamc_next(dbc, 1, 0)) != 0)
goto err;
break;
case DB_NEXT_DUP:
- if ((ret = __bam_c_next(dbc, 1, 0)) != 0)
+ if ((ret = __bamc_next(dbc, 1, 0)) != 0)
goto err;
if (!IS_CUR_DUPLICATE(dbc, orig_pgno, orig_indx)) {
ret = DB_NOTFOUND;
@@ -915,47 +916,55 @@ __bam_c_get(dbc, key, data, flags, pgnop)
case DB_NEXT_NODUP:
newopd = 1;
if (cp->pgno == PGNO_INVALID) {
- if ((ret = __bam_c_search(dbc,
+ if ((ret = __bamc_search(dbc,
PGNO_INVALID, NULL, DB_FIRST, &exact)) != 0)
goto err;
} else
do {
- if ((ret = __bam_c_next(dbc, 1, 0)) != 0)
+ if ((ret = __bamc_next(dbc, 1, 0)) != 0)
goto err;
} while (IS_CUR_DUPLICATE(dbc, orig_pgno, orig_indx));
break;
case DB_PREV:
newopd = 1;
if (cp->pgno == PGNO_INVALID) {
- if ((ret = __bam_c_search(dbc,
+ if ((ret = __bamc_search(dbc,
PGNO_INVALID, NULL, DB_LAST, &exact)) != 0)
goto err;
} else
- if ((ret = __bam_c_prev(dbc)) != 0)
+ if ((ret = __bamc_prev(dbc)) != 0)
goto err;
break;
+ case DB_PREV_DUP:
+ if ((ret = __bamc_prev(dbc)) != 0)
+ goto err;
+ if (!IS_CUR_DUPLICATE(dbc, orig_pgno, orig_indx)) {
+ ret = DB_NOTFOUND;
+ goto err;
+ }
+ break;
case DB_PREV_NODUP:
newopd = 1;
if (cp->pgno == PGNO_INVALID) {
- if ((ret = __bam_c_search(dbc,
+ if ((ret = __bamc_search(dbc,
PGNO_INVALID, NULL, DB_LAST, &exact)) != 0)
goto err;
} else
do {
- if ((ret = __bam_c_prev(dbc)) != 0)
+ if ((ret = __bamc_prev(dbc)) != 0)
goto err;
} while (IS_CUR_DUPLICATE(dbc, orig_pgno, orig_indx));
break;
case DB_SET:
case DB_SET_RECNO:
newopd = 1;
- if ((ret = __bam_c_search(dbc,
+ if ((ret = __bamc_search(dbc,
PGNO_INVALID, key, flags, &exact)) != 0)
goto err;
break;
case DB_SET_RANGE:
newopd = 1;
- if ((ret = __bam_c_search(dbc,
+ if ((ret = __bamc_search(dbc,
PGNO_INVALID, key, flags, &exact)) != 0)
goto err;
@@ -966,11 +975,11 @@ __bam_c_get(dbc, key, data, flags, pgnop)
* the next entry.
*/
if (cp->indx == NUM_ENT(cp->page) || IS_CUR_DELETED(dbc))
- if ((ret = __bam_c_next(dbc, 0, 0)) != 0)
+ if ((ret = __bamc_next(dbc, 0, 0)) != 0)
goto err;
break;
default:
- ret = __db_unknown_flag(dbp->dbenv, "__bam_c_get", flags);
+ ret = __db_unknown_flag(dbp->dbenv, "__bamc_get", flags);
goto err;
}
@@ -983,8 +992,8 @@ __bam_c_get(dbc, key, data, flags, pgnop)
err: /*
* Regardless of whether we were successful or not, if the cursor
- * moved, clear the delete flag, DBcursor->c_get never references
- * a deleted key, if it moved at all.
+ * moved, clear the delete flag, DBcursor->get never references a
+ * deleted key, if it moved at all.
*/
if (F_ISSET(cp, C_DELETED) &&
(cp->pgno != orig_pgno || cp->indx != orig_indx))
@@ -1002,14 +1011,14 @@ __bam_get_prev(dbc)
db_pgno_t pgno;
int ret;
- if ((ret = __bam_c_prev(dbc)) != 0)
+ if ((ret = __bamc_prev(dbc)) != 0)
return (ret);
if (__bam_isopd(dbc, &pgno)) {
cp = (BTREE_CURSOR *)dbc->internal;
- if ((ret = __db_c_newopd(dbc, pgno, cp->opd, &cp->opd)) != 0)
+ if ((ret = __dbc_newopd(dbc, pgno, cp->opd, &cp->opd)) != 0)
return (ret);
- if ((ret = cp->opd->c_am_get(cp->opd,
+ if ((ret = cp->opd->am_get(cp->opd,
&key, &data, DB_LAST, NULL)) != 0)
return (ret);
}
@@ -1329,7 +1338,7 @@ get_space:
/* If we are off the page then try to the next page. */
if (ret == 0 && next_key && indx >= NUM_ENT(pg)) {
cp->indx = indx;
- ret = __bam_c_next(dbc, 0, 1);
+ ret = __bamc_next(dbc, 0, 1);
if (ret == 0)
goto next_pg;
if (ret != DB_NOTFOUND)
@@ -1428,10 +1437,10 @@ __bam_bulk_duplicates(dbc, pgno, dbuf, keyoff, offpp, dpp, spacep, no_dup)
opd = cp->opd;
if (opd == NULL) {
- if ((ret = __db_c_newopd(dbc, pgno, NULL, &opd)) != 0)
+ if ((ret = __dbc_newopd(dbc, pgno, NULL, &opd)) != 0)
return (ret);
cp->opd = opd;
- if ((ret = opd->c_am_get(opd,
+ if ((ret = opd->am_get(opd,
&key, &data, DB_FIRST, NULL)) != 0)
goto close_opd;
}
@@ -1452,7 +1461,7 @@ __bam_bulk_duplicates(dbc, pgno, dbuf, keyoff, offpp, dpp, spacep, no_dup)
do {
/* Fetch the current record. No initial move. */
- if ((ret = __bam_c_next(opd, 0, 0)) != 0)
+ if ((ret = __bamc_next(opd, 0, 0)) != 0)
break;
pg = cp->page;
indx = cp->indx;
@@ -1554,7 +1563,7 @@ contin:
} else if (indx != 0)
cp->indx--;
else {
- t_ret = __bam_c_prev(opd);
+ t_ret = __bamc_prev(opd);
if (t_ret == DB_NOTFOUND)
goto close_opd;
if (t_ret != 0)
@@ -1568,7 +1577,7 @@ contin:
close_opd:
if (ret == DB_NOTFOUND)
ret = 0;
- if ((t_ret = __db_c_close(opd)) != 0 && ret == 0)
+ if ((t_ret = __dbc_close(opd)) != 0 && ret == 0)
ret = t_ret;
((BTREE_CURSOR *)dbc->internal)->opd = NULL;
}
@@ -1625,16 +1634,16 @@ __bam_getbothc(dbc, data)
return (DB_NOTFOUND);
/* Discard the current page, we're going to do a full search. */
- if ((ret = __memp_fput(mpf, cp->page, 0)) != 0)
+ if ((ret = __memp_fput(mpf, cp->page, dbc->priority)) != 0)
return (ret);
cp->page = NULL;
- return (__bam_c_search(dbc,
+ return (__bamc_search(dbc,
PGNO_INVALID, data, DB_GET_BOTH, &exact));
}
/*
- * We're doing a DBC->c_get(DB_GET_BOTHC) and we're already searching
+ * We're doing a DBC->get(DB_GET_BOTHC) and we're already searching
* a set of on-page duplicates (either sorted or unsorted). Continue
* a linear search from after the current position.
*
@@ -1753,11 +1762,11 @@ __bam_getboth_finddatum(dbc, data, flags)
}
/*
- * __bam_c_put --
+ * __bamc_put --
* Put using a cursor.
*/
static int
-__bam_c_put(dbc, key, data, flags, pgnop)
+__bamc_put(dbc, key, data, flags, pgnop)
DBC *dbc;
DBT *key, *data;
u_int32_t flags;
@@ -1805,13 +1814,13 @@ split: ret = stack = 0;
own = 0;
/*
* Searching off-page, sorted duplicate tree: do a tree search
- * for the correct item; __bam_c_search returns the smallest
+ * for the correct item; __bamc_search returns the smallest
* slot greater than the key, use it.
*
* See comment below regarding where we can start the search.
*/
if (F_ISSET(dbc, DBC_OPD)) {
- if ((ret = __bam_c_search(dbc,
+ if ((ret = __bamc_search(dbc,
F_ISSET(cp, C_RECNUM) ? cp->root : root_pgno,
data, flags, &exact)) != 0)
goto err;
@@ -1839,7 +1848,7 @@ split: ret = stack = 0;
* numbering. In that case, we'll need the true root page
* in order to adjust the record count.
*/
- if ((ret = __bam_c_search(dbc,
+ if ((ret = __bamc_search(dbc,
F_ISSET(cp, C_RECNUM) ? cp->root : root_pgno, key,
flags == DB_KEYFIRST || dbp->dup_compare != NULL ?
DB_KEYFIRST : DB_KEYLAST, &exact)) != 0)
@@ -1847,7 +1856,7 @@ split: ret = stack = 0;
stack = 1;
/*
- * If we don't have an exact match, __bam_c_search returned
+ * If we don't have an exact match, __bamc_search returned
* the smallest slot greater than the key, use it.
*/
if (!exact) {
@@ -1931,7 +1940,7 @@ split: ret = stack = 0;
}
break;
default:
- ret = __db_unknown_flag(dbp->dbenv, "__bam_c_put", flags);
+ ret = __db_unknown_flag(dbp->dbenv, "__bamc_put", flags);
goto err;
}
@@ -2046,13 +2055,13 @@ done: /*
}
/*
- * __bam_c_rget --
+ * __bamc_rget --
* Return the record number for a cursor.
*
- * PUBLIC: int __bam_c_rget __P((DBC *, DBT *));
+ * PUBLIC: int __bamc_rget __P((DBC *, DBT *));
*/
int
-__bam_c_rget(dbc, data)
+__bamc_rget(dbc, data)
DBC *dbc;
DBT *data;
{
@@ -2078,7 +2087,7 @@ __bam_c_rget(dbc, data)
if ((ret = __db_ret(dbp, dbc->txn, cp->page,
cp->indx, &dbt, &dbc->my_rkey.data, &dbc->my_rkey.ulen)) != 0)
goto err;
- ret = __memp_fput(mpf, cp->page, 0);
+ ret = __memp_fput(mpf, cp->page, dbc->priority);
cp->page = NULL;
if (ret != 0)
return (ret);
@@ -2099,11 +2108,11 @@ err: if ((t_ret = __bam_stkrel(dbc, 0)) != 0 && ret == 0)
}
/*
- * __bam_c_writelock --
+ * __bamc_writelock --
* Upgrade the cursor to a write lock.
*/
static int
-__bam_c_writelock(dbc)
+__bamc_writelock(dbc)
DBC *dbc;
{
BTREE_CURSOR *cp;
@@ -2125,11 +2134,11 @@ __bam_c_writelock(dbc)
}
/*
- * __bam_c_next --
+ * __bamc_next --
* Move to the next record.
*/
static int
-__bam_c_next(dbc, initial_move, deleted_okay)
+__bamc_next(dbc, initial_move, deleted_okay)
DBC *dbc;
int initial_move, deleted_okay;
{
@@ -2175,8 +2184,7 @@ __bam_c_next(dbc, initial_move, deleted_okay)
* NUM_ENT, we may have incremented indx before the test.
*/
if (cp->indx >= NUM_ENT(cp->page)) {
- if ((pgno
- = NEXT_PGNO(cp->page)) == PGNO_INVALID)
+ if ((pgno = NEXT_PGNO(cp->page)) == PGNO_INVALID)
return (DB_NOTFOUND);
ACQUIRE_CUR(dbc, lock_mode, pgno, 0, ret);
@@ -2195,11 +2203,11 @@ __bam_c_next(dbc, initial_move, deleted_okay)
}
/*
- * __bam_c_prev --
+ * __bamc_prev --
* Move to the previous record.
*/
static int
-__bam_c_prev(dbc)
+__bamc_prev(dbc)
DBC *dbc;
{
BTREE_CURSOR *cp;
@@ -2258,11 +2266,11 @@ __bam_c_prev(dbc)
}
/*
- * __bam_c_search --
+ * __bamc_search --
* Move to a specified record.
*/
static int
-__bam_c_search(dbc, root_pgno, key, flags, exactp)
+__bamc_search(dbc, root_pgno, key, flags, exactp)
DBC *dbc;
db_pgno_t root_pgno;
const DBT *key;
@@ -2480,7 +2488,7 @@ search: if ((ret = __bam_search(dbc, root_pgno,
return (ret);
break;
default:
- return (__db_unknown_flag(dbp->dbenv, "__bam_c_search", flags));
+ return (__db_unknown_flag(dbp->dbenv, "__bamc_search", flags));
}
/* Initialize the cursor from the stack. */
cp->page = cp->csp->page;
@@ -2492,22 +2500,22 @@ search: if ((ret = __bam_search(dbc, root_pgno,
/* If on an empty page or a deleted record, move to the next one. */
if (flags == DB_FIRST &&
(NUM_ENT(cp->page) == 0 || IS_CUR_DELETED(dbc)))
- if ((ret = __bam_c_next(dbc, 0, 0)) != 0)
+ if ((ret = __bamc_next(dbc, 0, 0)) != 0)
return (ret);
if (flags == DB_LAST &&
(NUM_ENT(cp->page) == 0 || IS_CUR_DELETED(dbc)))
- if ((ret = __bam_c_prev(dbc)) != 0)
+ if ((ret = __bamc_prev(dbc)) != 0)
return (ret);
return (0);
}
/*
- * __bam_c_physdel --
+ * __bamc_physdel --
* Physically remove an item from the page.
*/
static int
-__bam_c_physdel(dbc)
+__bamc_physdel(dbc)
DBC *dbc;
{
BTREE_CURSOR *cp;
@@ -2547,7 +2555,7 @@ __bam_c_physdel(dbc)
* the last key the page held.
*
* !!!
- * Note that because __bam_c_physdel is always called from a cursor
+ * Note that because __bamc_physdel is always called from a cursor
* close, it should be safe to use the cursor's own "my_rkey" memory
* to temporarily hold this key. We shouldn't own any returned-data
* memory of interest--if we do, we're in trouble anyway.
@@ -2573,7 +2581,8 @@ __bam_c_physdel(dbc)
* Delete the key item first, otherwise the on-page duplicate checks
* in __bam_ditem() won't work!
*/
- if ((ret = __memp_dirty(dbp->mpf, &cp->page, dbc->txn, 0)) != 0)
+ if ((ret = __memp_dirty(dbp->mpf,
+ &cp->page, dbc->txn, dbc->priority, 0)) != 0)
return (ret);
if (TYPE(cp->page) == P_LBTREE) {
if ((ret = __bam_ditem(dbc, cp->page, cp->indx)) != 0)
@@ -2622,11 +2631,11 @@ __bam_c_physdel(dbc)
}
/*
- * __bam_c_getstack --
+ * __bamc_getstack --
* Acquire a full stack for a cursor.
*/
static int
-__bam_c_getstack(dbc)
+__bamc_getstack(dbc)
DBC *dbc;
{
BTREE_CURSOR *cp;
@@ -2660,7 +2669,7 @@ __bam_c_getstack(dbc)
&dbt, SR_KEYFIRST, 1, NULL, &exact);
err: /* Discard the key and the page. */
- if ((t_ret = __memp_fput(mpf, h, 0)) != 0 && ret == 0)
+ if ((t_ret = __memp_fput(mpf, h, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
return (ret);
@@ -2716,7 +2725,7 @@ __bam_opd_exists(dbc, pgno)
else
ret = DB_KEYEXIST;
- (void)__memp_fput(dbc->dbp->mpf, h, 0);
+ (void)__memp_fput(dbc->dbp->mpf, h, dbc->priority);
return (ret);
}
diff --git a/db/btree/bt_delete.c b/db/btree/bt_delete.c
index 04efaafa2..3eadb461c 100644
--- a/db/btree/bt_delete.c
+++ b/db/btree/bt_delete.c
@@ -1,8 +1,7 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*/
/*
* Copyright (c) 1990, 1993, 1994, 1995, 1996
@@ -39,7 +38,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: bt_delete.c,v 12.21 2006/08/24 14:44:44 bostic Exp $
+ * $Id: bt_delete.c,v 12.25 2007/05/17 15:14:46 bostic Exp $
*/
#include "db_config.h"
@@ -274,7 +273,8 @@ __bam_dpages(dbc, use_top, update)
* transactions, this lets the rest of the tree get back to business
* immediately.
*/
- if ((ret = __memp_dirty(mpf, &epg->page, dbc->txn, 0)) != 0)
+ if ((ret = __memp_dirty(mpf,
+ &epg->page, dbc->txn, dbc->priority, 0)) != 0)
goto discard;
if ((ret = __bam_ditem(dbc, epg->page, epg->indx)) != 0)
goto discard;
@@ -293,7 +293,7 @@ __bam_dpages(dbc, use_top, update)
pgno = PGNO(epg->page);
nitems = NUM_ENT(epg->page);
- ret = __memp_fput(mpf, epg->page, 0);
+ ret = __memp_fput(mpf, epg->page, dbc->priority);
if ((t_ret = __TLPUT(dbc, epg->lock)) != 0 && ret == 0)
ret = t_ret;
if (ret != 0)
@@ -301,7 +301,8 @@ __bam_dpages(dbc, use_top, update)
/* Then, discard any pages that we don't care about. */
discard: for (epg = cp->sp; epg < stack_epg; ++epg) {
- if ((t_ret = __memp_fput(mpf, epg->page, 0)) != 0 && ret == 0)
+ if ((t_ret = __memp_fput(mpf,
+ epg->page, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
epg->page = NULL;
if ((t_ret = __TLPUT(dbc, epg->lock)) != 0 && ret == 0)
@@ -312,7 +313,8 @@ discard: for (epg = cp->sp; epg < stack_epg; ++epg) {
/* Free the rest of the pages in the stack. */
while (++epg <= cp->csp) {
- if ((ret = __memp_dirty(mpf, &epg->page, dbc->txn, 0)) != 0)
+ if ((ret = __memp_dirty(mpf,
+ &epg->page, dbc->txn, dbc->priority, 0)) != 0)
goto err;
/*
* Delete page entries so they will be restored as part of
@@ -350,7 +352,8 @@ discard: for (epg = cp->sp; epg < stack_epg; ++epg) {
err_inc: ++epg;
err: for (; epg <= cp->csp; ++epg) {
if (epg->page != NULL)
- (void)__memp_fput(mpf, epg->page, 0);
+ (void)__memp_fput(mpf,
+ epg->page, dbc->priority);
(void)__TLPUT(dbc, epg->lock);
}
BT_STK_CLR(cp);
@@ -470,12 +473,14 @@ stop: done = 1;
if ((t_ret = __TLPUT(dbc, p_lock)) != 0 && ret == 0)
ret = t_ret;
if (parent != NULL &&
- (t_ret = __memp_fput(mpf, parent, 0)) != 0 && ret == 0)
+ (t_ret = __memp_fput(mpf,
+ parent, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
if ((t_ret = __TLPUT(dbc, c_lock)) != 0 && ret == 0)
ret = t_ret;
if (child != NULL &&
- (t_ret = __memp_fput(mpf, child, 0)) != 0 && ret == 0)
+ (t_ret = __memp_fput(mpf,
+ child, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
}
@@ -558,7 +563,7 @@ __bam_relink(dbc, pagep, new_pgno)
np->prev_pgno = pagep->prev_pgno;
else
np->prev_pgno = new_pgno;
- ret = __memp_fput(mpf, np, 0);
+ ret = __memp_fput(mpf, np, dbc->priority);
if ((t_ret = __TLPUT(dbc, npl)) != 0 && ret == 0)
ret = t_ret;
if (ret != 0)
@@ -570,7 +575,7 @@ __bam_relink(dbc, pagep, new_pgno)
pp->next_pgno = pagep->next_pgno;
else
pp->next_pgno = new_pgno;
- ret = __memp_fput(mpf, pp, 0);
+ ret = __memp_fput(mpf, pp, dbc->priority);
if ((t_ret = __TLPUT(dbc, ppl)) != 0 && ret == 0)
ret = t_ret;
if (ret != 0)
@@ -579,10 +584,10 @@ __bam_relink(dbc, pagep, new_pgno)
return (0);
err: if (np != NULL)
- (void)__memp_fput(mpf, np, 0);
+ (void)__memp_fput(mpf, np, dbc->priority);
(void)__TLPUT(dbc, npl);
if (pp != NULL)
- (void)__memp_fput(mpf, pp, 0);
+ (void)__memp_fput(mpf, pp, dbc->priority);
(void)__TLPUT(dbc, ppl);
return (ret);
}
@@ -615,12 +620,12 @@ __bam_pupdate(dbc, lpg)
*/
for (epg = &cp->csp[-1]; epg >= cp->sp; epg--) {
if ((ret = __memp_dirty(dbc->dbp->mpf,
- &epg->page, dbc->txn, 0)) != 0)
+ &epg->page, dbc->txn, dbc->priority, 0)) != 0)
return (ret);
if ((ret = __bam_ditem(dbc, epg->page, epg->indx)) != 0)
return (ret);
epg->indx--;
- if ((ret = __bam_pinsert(dbc, epg,
+ if ((ret = __bam_pinsert(dbc, epg, 0,
lpg, epg[1].page, BPI_NORECNUM)) != 0) {
if (ret == DB_NEEDSPLIT) {
/* This should not happen. */
diff --git a/db/btree/bt_method.c b/db/btree/bt_method.c
index ba71116e0..8cc4e516d 100644
--- a/db/btree/bt_method.c
+++ b/db/btree/bt_method.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1999-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1999,2007 Oracle. All rights reserved.
*
- * $Id: bt_method.c,v 12.6 2006/08/24 14:44:44 bostic Exp $
+ * $Id: bt_method.c,v 12.8 2007/05/17 15:14:46 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/btree/bt_open.c b/db/btree/bt_open.c
index 916223258..e3df123a0 100644
--- a/db/btree/bt_open.c
+++ b/db/btree/bt_open.c
@@ -1,8 +1,7 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*/
/*
* Copyright (c) 1990, 1993, 1994, 1995, 1996
@@ -39,7 +38,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: bt_open.c,v 12.12 2006/08/24 14:44:44 bostic Exp $
+ * $Id: bt_open.c,v 12.18 2007/05/17 15:14:46 bostic Exp $
*/
#include "db_config.h"
@@ -329,12 +328,12 @@ __bam_read_root(dbp, txn, base_pgno, flags)
err: /* Put the metadata page back. */
if (meta != NULL &&
- (t_ret = __memp_fput(mpf, meta, 0)) != 0 && ret == 0)
+ (t_ret = __memp_fput(mpf, meta, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
if ((t_ret = __LPUT(dbc, metalock)) != 0 && ret == 0)
ret = t_ret;
- if ((t_ret = __db_c_close(dbc)) != 0 && ret == 0)
+ if ((t_ret = __dbc_close(dbc)) != 0 && ret == 0)
ret = t_ret;
return (ret);
}
@@ -445,7 +444,7 @@ __bam_new_file(dbp, txn, fhp, name)
if ((ret =
__db_log_page(dbp, txn, &lsn, pgno, (PAGE *)meta)) != 0)
goto err;
- ret = __memp_fput(mpf, meta, 0);
+ ret = __memp_fput(mpf, meta, dbp->priority);
meta = NULL;
if (ret != 0)
goto err;
@@ -461,7 +460,7 @@ __bam_new_file(dbp, txn, fhp, name)
if ((ret =
__db_log_page(dbp, txn, &root->lsn, pgno, root)) != 0)
goto err;
- ret = __memp_fput(mpf, root, 0);
+ ret = __memp_fput(mpf, root, dbp->priority);
root = NULL;
if (ret != 0)
goto err;
@@ -511,10 +510,12 @@ err: if (buf != NULL)
__os_free(dbenv, buf);
else {
if (meta != NULL &&
- (t_ret = __memp_fput(mpf, meta, 0)) != 0 && ret == 0)
+ (t_ret = __memp_fput(mpf,
+ meta, dbp->priority)) != 0 && ret == 0)
ret = t_ret;
if (root != NULL &&
- (t_ret = __memp_fput(mpf, root, 0)) != 0 && ret == 0)
+ (t_ret = __memp_fput(mpf,
+ root, dbp->priority)) != 0 && ret == 0)
ret = t_ret;
}
return (ret);
@@ -572,6 +573,10 @@ __bam_new_subdb(mdbp, dbp, txn)
root->level = LEAFLEVEL;
if (DBENV_LOGGING(dbenv) &&
+#if !defined(DEBUG_WOP)
+ txn != NULL &&
+#endif
+
(ret = __bam_root_log(mdbp, txn, &meta->dbmeta.lsn, 0,
meta->dbmeta.pgno, root->pgno, &meta->dbmeta.lsn)) != 0)
goto err;
@@ -582,23 +587,25 @@ __bam_new_subdb(mdbp, dbp, txn)
goto err;
/* Release the metadata and root pages. */
- if ((ret = __memp_fput(mpf, meta, 0)) != 0)
+ if ((ret = __memp_fput(mpf, meta, dbc->priority)) != 0)
goto err;
meta = NULL;
- if ((ret = __memp_fput(mpf, root, 0)) != 0)
+ if ((ret = __memp_fput(mpf, root, dbc->priority)) != 0)
goto err;
root = NULL;
err:
if (meta != NULL)
- if ((t_ret = __memp_fput(mpf, meta, 0)) != 0 && ret == 0)
+ if ((t_ret = __memp_fput(mpf,
+ meta, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
if (root != NULL)
- if ((t_ret = __memp_fput(mpf, root, 0)) != 0 && ret == 0)
+ if ((t_ret = __memp_fput(mpf,
+ root, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
if ((t_ret = __LPUT(dbc, metalock)) != 0 && ret == 0)
ret = t_ret;
if (dbc != NULL)
- if ((t_ret = __db_c_close(dbc)) != 0 && ret == 0)
+ if ((t_ret = __dbc_close(dbc)) != 0 && ret == 0)
ret = t_ret;
return (ret);
}
diff --git a/db/btree/bt_put.c b/db/btree/bt_put.c
index 6665341e2..7e543ef67 100644
--- a/db/btree/bt_put.c
+++ b/db/btree/bt_put.c
@@ -1,8 +1,7 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*/
/*
* Copyright (c) 1990, 1993, 1994, 1995, 1996
@@ -39,7 +38,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: bt_put.c,v 12.21 2006/09/06 20:37:00 ubell Exp $
+ * $Id: bt_put.c,v 12.25 2007/05/25 15:37:48 bostic Exp $
*/
#include "db_config.h"
@@ -84,7 +83,6 @@ __bam_iitem(dbc, key, data, op, flags)
int cmp, bigkey, bigdata, del, dupadjust;
int padrec, replace, ret, t_ret, was_deleted;
- COMPQUIET(bk, NULL);
COMPQUIET(cnt, 0);
dbp = dbc->dbp;
@@ -247,20 +245,13 @@ __bam_iitem(dbc, key, data, op, flags)
return (__db_space_err(dbp));
}
- if ((ret = __memp_dirty(mpf, &h, dbc->txn, 0)) != 0)
+ if ((ret = __memp_dirty(mpf, &h, dbc->txn, dbc->priority, 0)) != 0)
return (ret);
if (cp->csp->page == cp->page)
cp->csp->page = h;
cp->page = h;
/*
- * Recalculate this pointer -- the page pointer (h) may have
- * changed during the update.
- */
- bk = GET_BKEYDATA(dbp, h,
- indx + (TYPE(h) == P_LBTREE ? O_INDX : 0));
-
- /*
* The code breaks it up into five cases:
*
* 1. Insert a new key/data pair.
@@ -324,9 +315,9 @@ __bam_iitem(dbc, key, data, op, flags)
if ((ret = __bam_ca_delete(dbp, PGNO(h), indx, 0, NULL)) != 0)
return (ret);
- if (TYPE(h) == P_LBTREE) {
+ if (TYPE(h) == P_LBTREE)
++indx;
- }
+ bk = GET_BKEYDATA(dbp, h, indx);
/*
* In a Btree deleted records aren't counted (deleted records
@@ -874,7 +865,7 @@ __bam_dup_convert(dbc, h, indx, cnt)
ret = __bam_ca_di(dbc,
PGNO(h), first + P_INDX, (int)(first + P_INDX - indx));
-err: if ((t_ret = __memp_fput(mpf, dp, 0)) != 0 && ret == 0)
+err: if ((t_ret = __memp_fput(mpf, dp, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
return (ret);
diff --git a/db/btree/bt_rec.c b/db/btree/bt_rec.c
index 45df8d7c1..2937824bc 100644
--- a/db/btree/bt_rec.c
+++ b/db/btree/bt_rec.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: bt_rec.c,v 12.21 2006/08/24 14:44:44 bostic Exp $
+ * $Id: bt_rec.c,v 12.28 2007/05/17 17:17:40 bostic Exp $
*/
#include "db_config.h"
@@ -44,7 +43,6 @@ __bam_split_recover(dbenv, dbtp, lsnp, op, info)
u_int32_t ptype;
int cmp, l_update, p_update, r_update, rc, ret, rootsplit, t_ret;
- COMPQUIET(info, NULL);
REC_PRINT(__bam_split_print);
mpf = NULL;
@@ -141,19 +139,21 @@ do_left: if (lp != NULL) {
goto out;
if (l_update) {
- REC_DIRTY(mpf, &lp);
+ REC_DIRTY(mpf, file_dbp->priority, &lp);
memcpy(lp, _lp, file_dbp->pgsize);
lp->lsn = *lsnp;
- if ((ret = __memp_fput(mpf, lp, 0)) != 0)
+ if ((ret =
+ __memp_fput(mpf, lp, file_dbp->priority)) != 0)
goto out;
lp = NULL;
}
if (r_update) {
- REC_DIRTY(mpf, &rp);
+ REC_DIRTY(mpf, file_dbp->priority, &rp);
memcpy(rp, _rp, file_dbp->pgsize);
rp->lsn = *lsnp;
- if ((ret = __memp_fput(mpf, rp, 0)) != 0)
+ if ((ret =
+ __memp_fput(mpf, rp, file_dbp->priority)) != 0)
goto out;
rp = NULL;
}
@@ -173,14 +173,15 @@ do_left: if (lp != NULL) {
rc = 1;
}
- REC_DIRTY(mpf, &pp);
+ REC_DIRTY(mpf, file_dbp->priority, &pp);
P_INIT(pp, file_dbp->pgsize, root_pgno,
PGNO_INVALID, PGNO_INVALID, _lp->level + 1, ptype);
RE_NREC_SET(pp, rc ? __bam_total(file_dbp, _lp) +
__bam_total(file_dbp, _rp) : 0);
pp->lsn = *lsnp;
- if ((ret = __memp_fput(mpf, pp, 0)) != 0)
+ if ((ret =
+ __memp_fput(mpf, pp, file_dbp->priority)) != 0)
goto out;
pp = NULL;
}
@@ -209,11 +210,11 @@ check_next: /*
cmp = LOG_COMPARE(&LSN(np), &argp->nlsn);
CHECK_LSN(dbenv, op, cmp, &LSN(np), &argp->nlsn);
if (cmp == 0) {
- REC_DIRTY(mpf, &np);
+ REC_DIRTY(mpf, file_dbp->priority, &np);
PREV_PGNO(np) = argp->right;
np->lsn = *lsnp;
- if ((ret =
- __memp_fput(mpf, np, 0)) != 0)
+ if ((ret = __memp_fput(mpf,
+ np, file_dbp->priority)) != 0)
goto out;
np = NULL;
}
@@ -232,9 +233,10 @@ check_next: /*
goto lrundo;
}
if (LOG_COMPARE(lsnp, &LSN(pp)) == 0) {
- REC_DIRTY(mpf, &pp);
+ REC_DIRTY(mpf, file_dbp->priority, &pp);
memcpy(pp, argp->pg.data, argp->pg.size);
- if ((ret = __memp_fput(mpf, pp, 0)) != 0)
+ if ((ret =
+ __memp_fput(mpf, pp, file_dbp->priority)) != 0)
goto out;
pp = NULL;
}
@@ -250,19 +252,19 @@ check_next: /*
lrundo: if ((rootsplit && lp != NULL) || rp != NULL) {
if (rootsplit && lp != NULL &&
LOG_COMPARE(lsnp, &LSN(lp)) == 0) {
- REC_DIRTY(mpf, &lp);
+ REC_DIRTY(mpf, file_dbp->priority, &lp);
lp->lsn = argp->llsn;
- if ((ret =
- __memp_fput(mpf, lp, 0)) != 0)
+ if ((ret = __memp_fput(mpf,
+ lp, file_dbp->priority)) != 0)
goto out;
lp = NULL;
}
if (rp != NULL &&
LOG_COMPARE(lsnp, &LSN(rp)) == 0) {
- REC_DIRTY(mpf, &rp);
+ REC_DIRTY(mpf, file_dbp->priority, &rp);
rp->lsn = argp->rlsn;
- if ((ret =
- __memp_fput(mpf, rp, 0)) != 0)
+ if ((ret = __memp_fput(mpf,
+ rp, file_dbp->priority)) != 0)
goto out;
rp = NULL;
}
@@ -283,10 +285,10 @@ lrundo: if ((rootsplit && lp != NULL) || rp != NULL) {
goto done;
}
if (LOG_COMPARE(lsnp, &LSN(np)) == 0) {
- REC_DIRTY(mpf, &np);
+ REC_DIRTY(mpf, file_dbp->priority, &np);
PREV_PGNO(np) = argp->left;
np->lsn = argp->nlsn;
- if (__memp_fput(mpf, np, 0))
+ if (__memp_fput(mpf, np, file_dbp->priority))
goto out;
np = NULL;
}
@@ -297,13 +299,17 @@ done: *lsnp = argp->prev_lsn;
ret = 0;
out: /* Free any pages that weren't dirtied. */
- if (pp != NULL && (t_ret = __memp_fput(mpf, pp, 0)) != 0 && ret == 0)
+ if (pp != NULL &&
+ (t_ret = __memp_fput(mpf, pp, file_dbp->priority)) != 0 && ret == 0)
ret = t_ret;
- if (lp != NULL && (t_ret = __memp_fput(mpf, lp, 0)) != 0 && ret == 0)
+ if (lp != NULL &&
+ (t_ret = __memp_fput(mpf, lp, file_dbp->priority)) != 0 && ret == 0)
ret = t_ret;
- if (np != NULL && (t_ret = __memp_fput(mpf, np, 0)) != 0 && ret == 0)
+ if (np != NULL &&
+ (t_ret = __memp_fput(mpf, np, file_dbp->priority)) != 0 && ret == 0)
ret = t_ret;
- if (rp != NULL && (t_ret = __memp_fput(mpf, rp, 0)) != 0 && ret == 0)
+ if (rp != NULL &&
+ (t_ret = __memp_fput(mpf, rp, file_dbp->priority)) != 0 && ret == 0)
ret = t_ret;
/* Free any allocated space. */
@@ -343,7 +349,6 @@ __bam_rsplit_recover(dbenv, dbtp, lsnp, op, info)
int cmp_n, cmp_p, ret;
pagep = NULL;
- COMPQUIET(info, NULL);
REC_PRINT(__bam_rsplit_print);
REC_INTRO(__bam_rsplit_read, 1, 1);
@@ -373,7 +378,7 @@ __bam_rsplit_recover(dbenv, dbtp, lsnp, op, info)
* that's not really necessary since the field is not used
* otherwise.
*/
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, dbc->priority, &pagep);
rcnt = RE_NREC(pagep);
memcpy(pagep, argp->pgdbt.data, argp->pgdbt.size);
if (LEVEL(pagep) > LEAFLEVEL)
@@ -382,7 +387,7 @@ __bam_rsplit_recover(dbenv, dbtp, lsnp, op, info)
pagep->lsn = *lsnp;
} else if (cmp_n == 0 && DB_UNDO(op)) {
/* Need to undo update described. */
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, dbc->priority, &pagep);
P_INIT(pagep, file_dbp->pgsize, root_pgno,
argp->nrec, PGNO_INVALID, pagep->level + 1,
IS_BTREE_PAGE(pagep) ? P_IBTREE : P_IRECNO);
@@ -391,7 +396,7 @@ __bam_rsplit_recover(dbenv, dbtp, lsnp, op, info)
goto out;
pagep->lsn = argp->rootlsn;
}
- if ((ret = __memp_fput(mpf, pagep, 0)) != 0)
+ if ((ret = __memp_fput(mpf, pagep, dbc->priority)) != 0)
goto out;
do_page:
@@ -418,14 +423,14 @@ do_page:
CHECK_LSN(dbenv, op, cmp_p, &LSN(pagep), &copy_lsn);
if (cmp_p == 0 && DB_REDO(op)) {
/* Need to redo update described. */
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, dbc->priority, &pagep);
pagep->lsn = *lsnp;
} else if (cmp_n == 0 && DB_UNDO(op)) {
/* Need to undo update described. */
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, dbc->priority, &pagep);
memcpy(pagep, argp->pgdbt.data, argp->pgdbt.size);
}
- if ((ret = __memp_fput(mpf, pagep, 0)) != 0)
+ if ((ret = __memp_fput(mpf, pagep, dbc->priority)) != 0)
goto out;
pagep = NULL;
@@ -433,7 +438,7 @@ done: *lsnp = argp->prev_lsn;
ret = 0;
out: if (pagep != NULL)
- (void)__memp_fput(mpf, pagep, 0);
+ (void)__memp_fput(mpf, pagep, dbc->priority);
REC_CLOSE;
}
@@ -460,7 +465,6 @@ __bam_adj_recover(dbenv, dbtp, lsnp, op, info)
int cmp_n, cmp_p, ret;
pagep = NULL;
- COMPQUIET(info, NULL);
REC_PRINT(__bam_adj_print);
REC_INTRO(__bam_adj_read, 1, 1);
@@ -483,7 +487,7 @@ __bam_adj_recover(dbenv, dbtp, lsnp, op, info)
CHECK_LSN(dbenv, op, cmp_p, &LSN(pagep), &argp->lsn);
if (cmp_p == 0 && DB_REDO(op)) {
/* Need to redo update described. */
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, dbc->priority, &pagep);
if ((ret = __bam_adjindx(dbc,
pagep, argp->indx, argp->indx_copy, argp->is_insert)) != 0)
goto out;
@@ -491,14 +495,14 @@ __bam_adj_recover(dbenv, dbtp, lsnp, op, info)
LSN(pagep) = *lsnp;
} else if (cmp_n == 0 && DB_UNDO(op)) {
/* Need to undo update described. */
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, dbc->priority, &pagep);
if ((ret = __bam_adjindx(dbc,
pagep, argp->indx, argp->indx_copy, !argp->is_insert)) != 0)
goto out;
LSN(pagep) = argp->lsn;
}
- if ((ret = __memp_fput(mpf, pagep, 0)) != 0)
+ if ((ret = __memp_fput(mpf, pagep, dbc->priority)) != 0)
goto out;
pagep = NULL;
@@ -506,7 +510,7 @@ done: *lsnp = argp->prev_lsn;
ret = 0;
out: if (pagep != NULL)
- (void)__memp_fput(mpf, pagep, 0);
+ (void)__memp_fput(mpf, pagep, dbc->priority);
REC_CLOSE;
}
@@ -534,7 +538,6 @@ __bam_cadjust_recover(dbenv, dbtp, lsnp, op, info)
int cmp_n, cmp_p, ret;
pagep = NULL;
- COMPQUIET(info, NULL);
REC_PRINT(__bam_cadjust_print);
REC_INTRO(__bam_cadjust_read, 1, 0);
@@ -557,7 +560,7 @@ __bam_cadjust_recover(dbenv, dbtp, lsnp, op, info)
CHECK_LSN(dbenv, op, cmp_p, &LSN(pagep), &argp->lsn);
if (cmp_p == 0 && DB_REDO(op)) {
/* Need to redo update described. */
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
if (IS_BTREE_PAGE(pagep)) {
GET_BINTERNAL(file_dbp, pagep, argp->indx)->nrecs +=
argp->adjust;
@@ -573,7 +576,7 @@ __bam_cadjust_recover(dbenv, dbtp, lsnp, op, info)
LSN(pagep) = *lsnp;
} else if (cmp_n == 0 && DB_UNDO(op)) {
/* Need to undo update described. */
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
if (IS_BTREE_PAGE(pagep)) {
GET_BINTERNAL(file_dbp, pagep, argp->indx)->nrecs -=
argp->adjust;
@@ -587,7 +590,7 @@ __bam_cadjust_recover(dbenv, dbtp, lsnp, op, info)
}
LSN(pagep) = argp->lsn;
}
- if ((ret = __memp_fput(mpf, pagep, 0)) != 0)
+ if ((ret = __memp_fput(mpf, pagep, file_dbp->priority)) != 0)
goto out;
pagep = NULL;
@@ -595,7 +598,7 @@ done: *lsnp = argp->prev_lsn;
ret = 0;
out: if (pagep != NULL)
- (void)__memp_fput(mpf, pagep, 0);
+ (void)__memp_fput(mpf, pagep, file_dbp->priority);
REC_CLOSE;
}
@@ -623,7 +626,6 @@ __bam_cdel_recover(dbenv, dbtp, lsnp, op, info)
int cmp_n, cmp_p, ret;
pagep = NULL;
- COMPQUIET(info, NULL);
REC_PRINT(__bam_cdel_print);
REC_INTRO(__bam_cdel_read, 1, 0);
@@ -646,14 +648,14 @@ __bam_cdel_recover(dbenv, dbtp, lsnp, op, info)
CHECK_LSN(dbenv, op, cmp_p, &LSN(pagep), &argp->lsn);
if (cmp_p == 0 && DB_REDO(op)) {
/* Need to redo update described. */
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
indx = argp->indx + (TYPE(pagep) == P_LBTREE ? O_INDX : 0);
B_DSET(GET_BKEYDATA(file_dbp, pagep, indx)->type);
LSN(pagep) = *lsnp;
} else if (cmp_n == 0 && DB_UNDO(op)) {
/* Need to undo update described. */
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
indx = argp->indx + (TYPE(pagep) == P_LBTREE ? O_INDX : 0);
B_DCLR(GET_BKEYDATA(file_dbp, pagep, indx)->type);
@@ -663,7 +665,7 @@ __bam_cdel_recover(dbenv, dbtp, lsnp, op, info)
LSN(pagep) = argp->lsn;
}
- if ((ret = __memp_fput(mpf, pagep, 0)) != 0)
+ if ((ret = __memp_fput(mpf, pagep, file_dbp->priority)) != 0)
goto out;
pagep = NULL;
@@ -671,7 +673,7 @@ done: *lsnp = argp->prev_lsn;
ret = 0;
out: if (pagep != NULL)
- (void)__memp_fput(mpf, pagep, 0);
+ (void)__memp_fput(mpf, pagep, file_dbp->priority);
REC_CLOSE;
}
@@ -701,7 +703,6 @@ __bam_repl_recover(dbenv, dbtp, lsnp, op, info)
u_int8_t *p;
pagep = NULL;
- COMPQUIET(info, NULL);
REC_PRINT(__bam_repl_print);
REC_INTRO(__bam_repl_read, 1, 1);
@@ -729,7 +730,7 @@ __bam_repl_recover(dbenv, dbtp, lsnp, op, info)
*
* Re-build the replacement item.
*/
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, dbc->priority, &pagep);
memset(&dbt, 0, sizeof(dbt));
dbt.size = argp->prefix + argp->suffix + argp->repl.size;
if ((ret = __os_malloc(dbenv, dbt.size, &dbt.data)) != 0)
@@ -753,7 +754,7 @@ __bam_repl_recover(dbenv, dbtp, lsnp, op, info)
*
* Re-build the original item.
*/
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, dbc->priority, &pagep);
memset(&dbt, 0, sizeof(dbt));
dbt.size = argp->prefix + argp->suffix + argp->orig.size;
if ((ret = __os_malloc(dbenv, dbt.size, &dbt.data)) != 0)
@@ -776,7 +777,7 @@ __bam_repl_recover(dbenv, dbtp, lsnp, op, info)
LSN(pagep) = argp->lsn;
}
- if ((ret = __memp_fput(mpf, pagep, 0)) != 0)
+ if ((ret = __memp_fput(mpf, pagep, dbc->priority)) != 0)
goto out;
pagep = NULL;
@@ -784,7 +785,7 @@ done: *lsnp = argp->prev_lsn;
ret = 0;
out: if (pagep != NULL)
- (void)__memp_fput(mpf, pagep, 0);
+ (void)__memp_fput(mpf, pagep, dbc->priority);
REC_CLOSE;
}
@@ -811,7 +812,6 @@ __bam_root_recover(dbenv, dbtp, lsnp, op, info)
int cmp_n, cmp_p, ret;
meta = NULL;
- COMPQUIET(info, NULL);
REC_PRINT(__bam_root_print);
REC_INTRO(__bam_root_read, 0, 0);
@@ -833,16 +833,16 @@ __bam_root_recover(dbenv, dbtp, lsnp, op, info)
CHECK_LSN(dbenv, op, cmp_p, &LSN(meta), &argp->meta_lsn);
if (cmp_p == 0 && DB_REDO(op)) {
/* Need to redo update described. */
- REC_DIRTY(mpf, &meta);
+ REC_DIRTY(mpf, file_dbp->priority, &meta);
meta->root = argp->root_pgno;
meta->dbmeta.lsn = *lsnp;
((BTREE *)file_dbp->bt_internal)->bt_root = meta->root;
} else if (cmp_n == 0 && DB_UNDO(op)) {
/* Nothing to undo except lsn. */
- REC_DIRTY(mpf, &meta);
+ REC_DIRTY(mpf, file_dbp->priority, &meta);
meta->dbmeta.lsn = argp->meta_lsn;
}
- if ((ret = __memp_fput(mpf, meta, 0)) != 0)
+ if ((ret = __memp_fput(mpf, meta, file_dbp->priority)) != 0)
goto out;
meta = NULL;
@@ -850,7 +850,7 @@ done: *lsnp = argp->prev_lsn;
ret = 0;
out: if (meta != NULL)
- (void)__memp_fput(mpf, meta, 0);
+ (void)__memp_fput(mpf, meta, file_dbp->priority);
REC_CLOSE;
}
@@ -876,7 +876,6 @@ __bam_curadj_recover(dbenv, dbtp, lsnp, op, info)
DB_MPOOLFILE *mpf;
int ret;
- COMPQUIET(info, NULL);
COMPQUIET(mpf, NULL);
REC_PRINT(__bam_curadj_print);
@@ -938,7 +937,6 @@ __bam_rcuradj_recover(dbenv, dbtp, lsnp, op, info)
DB_MPOOLFILE *mpf;
int ret, t_ret;
- COMPQUIET(info, NULL);
COMPQUIET(mpf, NULL);
rdbc = NULL;
@@ -995,7 +993,7 @@ __bam_rcuradj_recover(dbenv, dbtp, lsnp, op, info)
}
done: *lsnp = argp->prev_lsn;
-out: if (rdbc != NULL && (t_ret = __db_c_close(rdbc)) != 0 && ret == 0)
+out: if (rdbc != NULL && (t_ret = __dbc_close(rdbc)) != 0 && ret == 0)
ret = t_ret;
REC_CLOSE;
}
@@ -1023,7 +1021,6 @@ __bam_relink_recover(dbenv, dbtp, lsnp, op, info)
int cmp_n, cmp_p, ret;
pagep = NULL;
- COMPQUIET(info, NULL);
REC_PRINT(__bam_relink_print);
REC_INTRO(__bam_relink_read, 1, 0);
@@ -1051,7 +1048,7 @@ __bam_relink_recover(dbenv, dbtp, lsnp, op, info)
CHECK_LSN(dbenv, op, cmp_p, &LSN(pagep), &argp->lsn_next);
if (cmp_p == 0 && DB_REDO(op)) {
/* Redo the remove or replace. */
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
if (argp->new_pgno == PGNO_INVALID)
pagep->prev_pgno = argp->prev;
else
@@ -1060,13 +1057,13 @@ __bam_relink_recover(dbenv, dbtp, lsnp, op, info)
pagep->lsn = *lsnp;
} else if (cmp_n == 0 && DB_UNDO(op)) {
/* Undo the remove or replace. */
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
pagep->prev_pgno = argp->pgno;
pagep->lsn = argp->lsn_next;
}
- if ((ret = __memp_fput(mpf, pagep, 0)) != 0)
+ if ((ret = __memp_fput(mpf, pagep, file_dbp->priority)) != 0)
goto out;
pagep = NULL;
@@ -1087,7 +1084,7 @@ prev: if ((ret = __memp_fget(mpf, &argp->prev, NULL,
CHECK_LSN(dbenv, op, cmp_p, &LSN(pagep), &argp->lsn_prev);
if (cmp_p == 0 && DB_REDO(op)) {
/* Redo the relink. */
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
if (argp->new_pgno == PGNO_INVALID)
pagep->next_pgno = argp->next;
else
@@ -1096,12 +1093,12 @@ prev: if ((ret = __memp_fget(mpf, &argp->prev, NULL,
pagep->lsn = *lsnp;
} else if (LOG_COMPARE(lsnp, &LSN(pagep)) == 0 && DB_UNDO(op)) {
/* Undo the relink. */
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
pagep->next_pgno = argp->pgno;
pagep->lsn = argp->lsn_prev;
}
- if ((ret = __memp_fput(mpf, pagep, 0)) != 0)
+ if ((ret = __memp_fput(mpf, pagep, file_dbp->priority)) != 0)
goto out;
pagep = NULL;
@@ -1109,7 +1106,7 @@ done: *lsnp = argp->prev_lsn;
ret = 0;
out: if (pagep != NULL)
- (void)__memp_fput(mpf, pagep, 0);
+ (void)__memp_fput(mpf, pagep, file_dbp->priority);
REC_CLOSE;
}
@@ -1139,8 +1136,6 @@ __bam_merge_recover(dbenv, dbtp, lsnp, op, info)
u_int8_t *bp;
int cmp_n, cmp_p, i, ret;
- COMPQUIET(info, NULL);
-
REC_PRINT(__bam_merge_print);
REC_INTRO(__bam_merge_read, 1, 1);
@@ -1167,7 +1162,7 @@ __bam_merge_recover(dbenv, dbtp, lsnp, op, info)
* needed data.
*/
DB_ASSERT(dbenv, argp->hdr.size == 0 || NUM_ENT(pagep) == 0);
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, dbc->priority, &pagep);
if (argp->hdr.size != 0) {
P_INIT(pagep, file_dbp->pgsize, pagep->pgno,
PREV_PGNO(argp->hdr.data),
@@ -1203,7 +1198,7 @@ __bam_merge_recover(dbenv, dbtp, lsnp, op, info)
* the proper number of items from the logical end
* of the page.
*/
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, dbc->priority, &pagep);
for (i = 0; i < (int)(argp->ind.size / sizeof(*ninp)); i++) {
indx = NUM_ENT(pagep) - 1;
if (P_INP(file_dbp, pagep)[indx] ==
@@ -1240,7 +1235,7 @@ __bam_merge_recover(dbenv, dbtp, lsnp, op, info)
pagep->lsn = argp->lsn;
}
- if ((ret = __memp_fput(mpf, pagep, 0)) != 0)
+ if ((ret = __memp_fput(mpf, pagep, dbc->priority)) != 0)
goto out;
next: if ((ret = __memp_fget(mpf, &argp->npgno, NULL,
@@ -1262,13 +1257,13 @@ next: if ((ret = __memp_fget(mpf, &argp->npgno, NULL,
if (cmp_p == 0 && DB_REDO(op)) {
/* Need to truncate the page. */
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, dbc->priority, &pagep);
HOFFSET(pagep) = file_dbp->pgsize;
NUM_ENT(pagep) = 0;
pagep->lsn = *lsnp;
} else if (cmp_n == 0 && !DB_REDO(op)) {
/* Need to put the data back on the page. */
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, dbc->priority, &pagep);
if (TYPE(pagep) == P_OVERFLOW) {
OV_REF(pagep) = OV_REF(argp->hdr.data);
OV_LEN(pagep) = OV_LEN(argp->hdr.data);
@@ -1291,7 +1286,7 @@ next: if ((ret = __memp_fget(mpf, &argp->npgno, NULL,
pagep->lsn = argp->nlsn;
}
- if ((ret = __memp_fput(mpf, pagep, 0)) != 0)
+ if ((ret = __memp_fput(mpf, pagep, dbc->priority)) != 0)
goto out;
done:
*lsnp = argp->prev_lsn;
@@ -1324,8 +1319,6 @@ __bam_pgno_recover(dbenv, dbtp, lsnp, op, info)
db_pgno_t *pgnop;
int cmp_n, cmp_p, ret;
- COMPQUIET(info, NULL);
-
REC_PRINT(__bam_pgno_print);
REC_INTRO(__bam_pgno_read, 1, 0);
@@ -1352,7 +1345,8 @@ __bam_pgno_recover(dbenv, dbtp, lsnp, op, info)
&((BOVERFLOW *)(bi->data))->pgno;
else
pgnop = &bi->pgno;
- if ((ret = __memp_fput(mpf, npagep, 0)) != 0)
+ if ((ret = __memp_fput(mpf,
+ npagep, file_dbp->priority)) != 0)
goto out;
break;
}
@@ -1370,17 +1364,17 @@ __bam_pgno_recover(dbenv, dbtp, lsnp, op, info)
if (DB_REDO(op)) {
/* Need to redo update described. */
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
*pgnop = argp->npgno;
pagep->lsn = *lsnp;
} else {
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
*pgnop = argp->opgno;
pagep->lsn = argp->lsn;
}
}
- if ((ret = __memp_fput(mpf, pagep, 0)) != 0)
+ if ((ret = __memp_fput(mpf, pagep, file_dbp->priority)) != 0)
goto out;
done:
@@ -1413,7 +1407,6 @@ __bam_relink_43_recover(dbenv, dbtp, lsnp, op, info)
int cmp_n, cmp_p, modified, ret;
pagep = NULL;
- COMPQUIET(info, NULL);
REC_PRINT(__bam_relink_43_print);
REC_INTRO(__bam_relink_43_read, 1, 0);
@@ -1434,23 +1427,21 @@ __bam_relink_43_recover(dbenv, dbtp, lsnp, op, info)
} else
goto next2;
}
- modified = 0;
cmp_p = LOG_COMPARE(&LSN(pagep), &argp->lsn);
CHECK_LSN(dbenv, op, cmp_p, &LSN(pagep), &argp->lsn);
if (cmp_p == 0 && DB_REDO(op)) {
/* Redo the relink. */
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
pagep->lsn = *lsnp;
- modified = 1;
} else if (LOG_COMPARE(lsnp, &LSN(pagep)) == 0 && DB_UNDO(op)) {
/* Undo the relink. */
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
pagep->next_pgno = argp->next;
pagep->prev_pgno = argp->prev;
-
pagep->lsn = argp->lsn;
- modified = 1;
}
- if ((ret = __memp_fput(mpf, pagep, modified ? DB_MPOOL_DIRTY : 0)) != 0)
+ if ((ret = __memp_fput(mpf, pagep, file_dbp->priority)) != 0)
goto out;
pagep = NULL;
@@ -1472,12 +1463,12 @@ next2: if ((ret = __memp_fget(mpf, &argp->next, NULL, 0, &pagep)) != 0) {
CHECK_LSN(dbenv, op, cmp_p, &LSN(pagep), &argp->lsn_next);
if (cmp_p == 0 && DB_REDO(op)) {
/* Redo the remove or undo the add. */
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
pagep->prev_pgno = argp->prev;
modified = 1;
} else if (cmp_n == 0 && DB_UNDO(op)) {
/* Undo the remove or redo the add. */
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
pagep->prev_pgno = argp->pgno;
modified = 1;
}
@@ -1487,7 +1478,7 @@ next2: if ((ret = __memp_fget(mpf, &argp->next, NULL, 0, &pagep)) != 0) {
else
pagep->lsn = *lsnp;
}
- if ((ret = __memp_fput(mpf, pagep, 0)) != 0)
+ if ((ret = __memp_fput(mpf, pagep, file_dbp->priority)) != 0)
goto out;
pagep = NULL;
@@ -1508,12 +1499,12 @@ prev: if ((ret = __memp_fget(mpf, &argp->prev, NULL, 0, &pagep)) != 0) {
CHECK_LSN(dbenv, op, cmp_p, &LSN(pagep), &argp->lsn_prev);
if (cmp_p == 0 && DB_REDO(op)) {
/* Redo the relink. */
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
pagep->next_pgno = argp->next;
modified = 1;
} else if (LOG_COMPARE(lsnp, &LSN(pagep)) == 0 && DB_UNDO(op)) {
/* Undo the relink. */
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
pagep->next_pgno = argp->pgno;
modified = 1;
}
@@ -1523,7 +1514,7 @@ prev: if ((ret = __memp_fget(mpf, &argp->prev, NULL, 0, &pagep)) != 0) {
else
pagep->lsn = *lsnp;
}
- if ((ret = __memp_fput(mpf, pagep, 0)) != 0)
+ if ((ret = __memp_fput(mpf, pagep, file_dbp->priority)) != 0)
goto out;
pagep = NULL;
@@ -1531,6 +1522,6 @@ done: *lsnp = argp->prev_lsn;
ret = 0;
out: if (pagep != NULL)
- (void)__memp_fput(mpf, pagep, 0);
+ (void)__memp_fput(mpf, pagep, file_dbp->priority);
REC_CLOSE;
}
diff --git a/db/btree/bt_reclaim.c b/db/btree/bt_reclaim.c
index d48c9dfcf..98d206a52 100644
--- a/db/btree/bt_reclaim.c
+++ b/db/btree/bt_reclaim.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1998-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1998,2007 Oracle. All rights reserved.
*
- * $Id: bt_reclaim.c,v 12.6 2006/08/24 14:44:44 bostic Exp $
+ * $Id: bt_reclaim.c,v 12.9 2007/05/17 15:14:46 bostic Exp $
*/
#include "db_config.h"
@@ -47,7 +46,7 @@ __bam_reclaim(dbp, txn)
__TLPUT(dbc, meta_lock);
/* Discard the cursor. */
-err: if ((t_ret = __db_c_close(dbc)) != 0 && ret == 0)
+err: if ((t_ret = __dbc_close(dbc)) != 0 && ret == 0)
ret = t_ret;
return (ret);
diff --git a/db/btree/bt_recno.c b/db/btree/bt_recno.c
index e0a8b393b..5402c531d 100644
--- a/db/btree/bt_recno.c
+++ b/db/btree/bt_recno.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: bt_recno.c,v 12.28 2006/08/24 14:44:44 bostic Exp $
+ * $Id: bt_recno.c,v 12.35 2007/05/17 15:14:46 bostic Exp $
*/
#include "db_config.h"
@@ -141,7 +140,7 @@ __ram_open(dbp, txn, name, base_pgno, flags)
ret = 0;
/* Discard the cursor. */
- if ((t_ret = __db_c_close(dbc)) != 0 && ret == 0)
+ if ((t_ret = __dbc_close(dbc)) != 0 && ret == 0)
ret = t_ret;
}
@@ -174,7 +173,7 @@ __ram_append(dbc, key, data)
ret = __ram_add(dbc, &cp->recno, data, DB_APPEND, 0);
/* Return the record number. */
- if (ret == 0)
+ if (ret == 0 && key != NULL)
ret = __db_retcopy(dbc->dbp->dbenv, key, &cp->recno,
sizeof(cp->recno), &dbc->rkey->data, &dbc->rkey->ulen);
@@ -182,13 +181,13 @@ __ram_append(dbc, key, data)
}
/*
- * __ram_c_del --
- * Recno cursor->c_del function.
+ * __ramc_del --
+ * Recno DBC->del function.
*
- * PUBLIC: int __ram_c_del __P((DBC *));
+ * PUBLIC: int __ramc_del __P((DBC *));
*/
int
-__ram_c_del(dbc)
+__ramc_del(dbc)
DBC *dbc;
{
BKEYDATA bk;
@@ -228,7 +227,8 @@ __ram_c_del(dbc)
stack = 1;
/* Copy the page into the cursor. */
- if ((ret = __memp_dirty(dbp->mpf, &cp->csp->page, dbc->txn, 0)) != 0)
+ if ((ret = __memp_dirty(dbp->mpf,
+ &cp->csp->page, dbc->txn, dbc->priority, 0)) != 0)
goto err;
STACK_TO_CURSOR(cp, ret);
if (ret != 0)
@@ -313,14 +313,14 @@ err: if (stack && (t_ret = __bam_stkrel(dbc, STK_CLRDBC)) != 0 && ret == 0)
}
/*
- * __ram_c_get --
- * Recno cursor->c_get function.
+ * __ramc_get --
+ * Recno DBC->get function.
*
- * PUBLIC: int __ram_c_get
+ * PUBLIC: int __ramc_get
* PUBLIC: __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *));
*/
int
-__ram_c_get(dbc, key, data, flags, pgnop)
+__ramc_get(dbc, key, data, flags, pgnop)
DBC *dbc;
DBT *key, *data;
u_int32_t flags;
@@ -386,6 +386,16 @@ retry: switch (flags) {
flags = DB_NEXT;
cp->recno = 1;
break;
+ case DB_PREV_DUP:
+ /*
+ * If we're not in an off-page dup set, we know there's no
+ * previous duplicate since recnos don't have them. If we
+ * are in an off-page dup set, the previous item assuredly
+ * is a dup, so we set flags to DB_PREV and keep going.
+ */
+ if (!F_ISSET(dbc, DBC_OPD))
+ return (DB_NOTFOUND);
+ /* FALLTHROUGH */
case DB_PREV_NODUP:
/*
* Recno databases don't have duplicates, set flags to DB_PREV
@@ -451,7 +461,7 @@ retry: switch (flags) {
goto err;
break;
default:
- ret = __db_unknown_flag(dbp->dbenv, "__ram_c_get", flags);
+ ret = __db_unknown_flag(dbp->dbenv, "__ramc_get", flags);
goto err;
}
@@ -550,13 +560,13 @@ err: CD_CLR(cp);
}
/*
- * __ram_c_put --
- * Recno cursor->c_put function.
+ * __ramc_put --
+ * Recno DBC->put function.
*
- * PUBLIC: int __ram_c_put __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *));
+ * PUBLIC: int __ramc_put __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *));
*/
int
-__ram_c_put(dbc, key, data, flags, pgnop)
+__ramc_put(dbc, key, data, flags, pgnop)
DBC *dbc;
DBT *key, *data;
u_int32_t flags;
@@ -707,7 +717,8 @@ split: if ((ret = __bam_rsearch(dbc, &cp->recno, SR_INSERT, 1, &exact)) != 0)
}
/* Return the key if we've created a new record. */
- if (!F_ISSET(dbc, DBC_OPD) && (flags == DB_AFTER || flags == DB_BEFORE))
+ if (!F_ISSET(dbc, DBC_OPD) &&
+ (flags == DB_AFTER || flags == DB_BEFORE) && key != NULL)
ret = __db_retcopy(dbenv, key, &cp->recno,
sizeof(cp->recno), &dbc->rkey->data, &dbc->rkey->ulen);
@@ -1132,7 +1143,7 @@ done: /* Close the file descriptor. */
}
/* Discard the cursor. */
- if ((t_ret = __db_c_close(dbc)) != 0 && ret == 0)
+ if ((t_ret = __dbc_close(dbc)) != 0 && ret == 0)
ret = t_ret;
/* Discard memory allocated to hold the data items. */
diff --git a/db/btree/bt_rsearch.c b/db/btree/bt_rsearch.c
index 8a916c117..fc08714c4 100644
--- a/db/btree/bt_rsearch.c
+++ b/db/btree/bt_rsearch.c
@@ -1,8 +1,7 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*/
/*
* Copyright (c) 1990, 1993, 1994, 1995, 1996
@@ -36,7 +35,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: bt_rsearch.c,v 12.11 2006/08/24 14:44:44 bostic Exp $
+ * $Id: bt_rsearch.c,v 12.14 2007/05/17 15:14:46 bostic Exp $
*/
#include "db_config.h"
@@ -134,7 +133,7 @@ __bam_rsearch(dbc, recnop, flags, stop, exactp)
* eliminate any concurrency. A possible fix
* would be to lock the last leaf page instead.
*/
- ret = __memp_fput(mpf, h, 0);
+ ret = __memp_fput(mpf, h, dbc->priority);
if ((t_ret =
__TLPUT(dbc, lock)) != 0 && ret == 0)
ret = t_ret;
@@ -170,7 +169,8 @@ __bam_rsearch(dbc, recnop, flags, stop, exactp)
*exactp = 0;
if (!LF_ISSET(SR_PAST_EOF) ||
recno > t_recno + 1) {
- ret = __memp_fput(mpf, h, 0);
+ ret = __memp_fput(mpf,
+ h, dbc->priority);
h = NULL;
if ((t_ret = __TLPUT(dbc,
lock)) != 0 && ret == 0)
@@ -255,7 +255,7 @@ __bam_rsearch(dbc, recnop, flags, stop, exactp)
(LEVEL(h) - 1) == LEAFLEVEL)
stack = 1;
- if ((ret = __memp_fput(mpf, h, 0)) != 0)
+ if ((ret = __memp_fput(mpf, h, dbc->priority)) != 0)
goto err;
h = NULL;
@@ -278,7 +278,8 @@ __bam_rsearch(dbc, recnop, flags, stop, exactp)
}
/* NOTREACHED */
-err: if (h != NULL && (t_ret = __memp_fput(mpf, h, 0)) != 0 && ret == 0)
+err: if (h != NULL &&
+ (t_ret = __memp_fput(mpf, h, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
BT_STK_POP(cp);
@@ -315,7 +316,8 @@ __bam_adjust(dbc, adjust)
for (epg = cp->sp; epg <= cp->csp; ++epg) {
h = epg->page;
if (TYPE(h) == P_IBTREE || TYPE(h) == P_IRECNO) {
- if ((ret = __memp_dirty(mpf, &h, dbc->txn, 0)) != 0)
+ if ((ret = __memp_dirty(mpf,
+ &h, dbc->txn, dbc->priority, 0)) != 0)
return (ret);
epg->page = h;
if (DBC_LOGGING(dbc)) {
@@ -371,7 +373,7 @@ __bam_nrecs(dbc, rep)
*rep = RE_NREC(h);
- ret = __memp_fput(mpf, h, 0);
+ ret = __memp_fput(mpf, h, dbc->priority);
if ((t_ret = __TLPUT(dbc, lock)) != 0 && ret == 0)
ret = t_ret;
diff --git a/db/btree/bt_search.c b/db/btree/bt_search.c
index e125b9f9b..2135d8041 100644
--- a/db/btree/bt_search.c
+++ b/db/btree/bt_search.c
@@ -1,8 +1,7 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*/
/*
* Copyright (c) 1990, 1993, 1994, 1995, 1996
@@ -39,7 +38,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: bt_search.c,v 12.24 2006/08/24 14:44:45 bostic Exp $
+ * $Id: bt_search.c,v 12.30 2007/05/17 17:17:40 bostic Exp $
*/
#include "db_config.h"
@@ -114,7 +113,7 @@ try_again:
(LF_ISSET(SR_START) && slevel == LEVEL(h)))) {
if (!STD_LOCKING(dbc))
goto no_relock;
- ret = __memp_fput(mpf, h, 0);
+ ret = __memp_fput(mpf, h, dbc->priority);
if ((t_ret = __LPUT(dbc, lock)) != 0 && ret == 0)
ret = t_ret;
if (ret != 0)
@@ -132,7 +131,7 @@ try_again:
(LF_ISSET(SR_WRITE) && LEVEL(h) == LEAFLEVEL) ||
(LF_ISSET(SR_START) && slevel == LEVEL(h)))) {
/* Someone else split the root, start over. */
- ret = __memp_fput(mpf, h, 0);
+ ret = __memp_fput(mpf, h, dbc->priority);
if ((t_ret = __LPUT(dbc, lock)) != 0 && ret == 0)
ret = t_ret;
if (ret != 0)
@@ -236,9 +235,8 @@ __bam_search(dbc, root_pgno, key, flags, slevel, recnop, exactp)
* page, they're an index per page item. If we find an exact
* match on a leaf page, we're done.
*/
- for (base = 0,
- lim = NUM_ENT(h) / (db_indx_t)adjust; lim != 0; lim >>= 1) {
- indx = base + ((lim >> 1) * adjust);
+ DB_BINARY_SEARCH_FOR(base, lim, h, adjust) {
+ DB_BINARY_SEARCH_INCR(indx, base, lim, adjust);
if ((ret = __bam_cmp(dbp, dbc->txn, key,
h, indx, func, &cmp)) != 0)
goto err;
@@ -252,10 +250,9 @@ __bam_search(dbc, root_pgno, key, flags, slevel, recnop, exactp)
}
goto next;
}
- if (cmp > 0) {
- base = indx + adjust;
- --lim;
- }
+ if (cmp > 0)
+ DB_BINARY_SEARCH_SHIFT_BASE(indx, base,
+ lim, adjust);
}
/*
@@ -280,8 +277,8 @@ __bam_search(dbc, root_pgno, key, flags, slevel, recnop, exactp)
if ((t_ret =
__LPUT(dbc, lock)) != 0 && ret == 0)
ret = t_ret;
- if ((t_ret =
- __memp_fput(mpf, h, 0)) != 0 && ret == 0)
+ if ((t_ret = __memp_fput(mpf,
+ h, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
return (ret);
}
@@ -302,7 +299,8 @@ get_next: /*
*/
if ((ret = __LPUT(dbc, lock)) != 0)
goto err;
- if ((ret = __memp_fput(mpf, h, 0)) != 0)
+ if ((ret =
+ __memp_fput(mpf, h, dbc->priority)) != 0)
goto err;
h = NULL;
LF_SET(SR_MIN);
@@ -367,13 +365,13 @@ next: if (recnop != NULL)
if ((t_ret =
__LPUT(dbc, lock)) != 0 && ret == 0)
ret = t_ret;
- if ((t_ret =
- __memp_fput(mpf, h, 0)) != 0 && ret == 0)
+ if ((t_ret = __memp_fput(mpf,
+ h, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
return (ret);
}
BT_STK_NUMPUSH(dbenv, cp, h, indx, ret);
- (void)__memp_fput(mpf, h, 0);
+ (void)__memp_fput(mpf, h, dbc->priority);
h = NULL;
if ((ret = __db_lget(dbc,
LCK_COUPLE_ALWAYS, pg, lock_mode, 0, &lock)) != 0) {
@@ -439,7 +437,8 @@ next: if (recnop != NULL)
* edge, then drop the subtree.
*/
if (!LF_ISSET(SR_DEL | SR_NEXT)) {
- if ((ret = __memp_fput(mpf, h, 0)) != 0)
+ if ((ret =
+ __memp_fput(mpf, h, dbc->priority)) != 0)
goto err;
goto lock_next;
}
@@ -579,7 +578,8 @@ found: *exactp = 1;
BT_STK_NUM(dbenv, cp, h, indx, ret);
if ((t_ret = __LPUT(dbc, lock)) != 0 && ret == 0)
ret = t_ret;
- if ((t_ret = __memp_fput(mpf, h, 0)) != 0 && ret == 0)
+ if ((t_ret =
+ __memp_fput(mpf, h, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
} else {
if (LF_ISSET(SR_DEL) && cp->csp == cp->sp)
@@ -591,7 +591,8 @@ found: *exactp = 1;
return (0);
-err: if (h != NULL && (t_ret = __memp_fput(mpf, h, 0)) != 0 && ret == 0)
+err: if (h != NULL && (t_ret =
+ __memp_fput(mpf, h, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
/* Keep any not-found page locked for serializability. */
@@ -637,8 +638,8 @@ __bam_stkrel(dbc, flags)
cp->page = NULL;
LOCK_INIT(cp->lock);
}
- if ((t_ret =
- __memp_fput(mpf, epg->page, 0)) != 0 && ret == 0)
+ if ((t_ret = __memp_fput(mpf,
+ epg->page, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
/*
* XXX
diff --git a/db/btree/bt_split.c b/db/btree/bt_split.c
index 9c2a12f9f..dd9541f21 100644
--- a/db/btree/bt_split.c
+++ b/db/btree/bt_split.c
@@ -1,8 +1,7 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*/
/*
* Copyright (c) 1990, 1993, 1994, 1995, 1996
@@ -36,7 +35,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: bt_split.c,v 12.16 2006/09/08 18:41:05 bostic Exp $
+ * $Id: bt_split.c,v 12.24 2007/05/17 15:14:46 bostic Exp $
*/
#include "db_config.h"
@@ -47,7 +46,7 @@
#include "dbinc/mp.h"
#include "dbinc/btree.h"
-static int __bam_broot __P((DBC *, PAGE *, PAGE *, PAGE *));
+static int __bam_broot __P((DBC *, PAGE *, u_int32_t, PAGE *, PAGE *));
static int __bam_page __P((DBC *, EPG *, EPG *));
static int __bam_psplit __P((DBC *, EPG *, PAGE *, PAGE *, db_indx_t *));
static int __bam_root __P((DBC *, EPG *));
@@ -190,7 +189,8 @@ __bam_root(dbc, cp)
goto err;
}
- if ((ret = __memp_dirty(mpf, &cp->page, dbc->txn, 0)) != 0)
+ if ((ret = __memp_dirty(mpf,
+ &cp->page, dbc->txn, dbc->priority, 0)) != 0)
goto err;
/* Create new left and right pages for the split. */
@@ -229,20 +229,23 @@ __bam_root(dbc, cp)
/* Clean up the new root page. */
if ((ret = (dbc->dbtype == DB_RECNO ?
__ram_root(dbc, cp->page, lp, rp) :
- __bam_broot(dbc, cp->page, lp, rp))) != 0)
+ __bam_broot(dbc, cp->page, split, lp, rp))) != 0)
goto err;
/* Adjust any cursors. */
ret = __bam_ca_split(dbc, cp->page->pgno, lp->pgno, rp->pgno, split, 1);
/* Success or error: release pages and locks. */
-err: if ((t_ret = __memp_fput(mpf, cp->page, 0)) != 0 && ret == 0)
+err: if ((t_ret =
+ __memp_fput(mpf, cp->page, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
if ((t_ret = __TLPUT(dbc, cp->lock)) != 0 && ret == 0)
ret = t_ret;
- if (lp != NULL && (t_ret = __memp_fput(mpf, lp, 0)) != 0 && ret == 0)
+ if (lp != NULL &&
+ (t_ret = __memp_fput(mpf, lp, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
- if (rp != NULL && (t_ret = __memp_fput(mpf, rp, 0)) != 0 && ret == 0)
+ if (rp != NULL &&
+ (t_ret = __memp_fput(mpf, rp, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
return (ret);
@@ -277,6 +280,9 @@ __bam_page(dbc, pp, cp)
ret = -1;
/*
+ * Create new left page for the split, and fill in everything
+ * except its LSN and next-page page number.
+ *
* Create a new right page for the split, and fill in everything
* except its LSN and page number.
*
@@ -293,24 +299,19 @@ __bam_page(dbc, pp, cp)
* up the tree badly, because we've violated the rule of always locking
* down the tree, and never up.
*/
- if ((ret = __os_malloc(dbp->dbenv, dbp->pgsize, &rp)) != 0)
- goto err;
- P_INIT(rp, dbp->pgsize, 0,
- ISINTERNAL(cp->page) ? PGNO_INVALID : PGNO(cp->page),
- ISINTERNAL(cp->page) ? PGNO_INVALID : NEXT_PGNO(cp->page),
- cp->page->level, TYPE(cp->page));
-
- /*
- * Create new left page for the split, and fill in everything
- * except its LSN and next-page page number.
- */
- if ((ret = __os_malloc(dbp->dbenv, dbp->pgsize, &lp)) != 0)
+ if ((ret = __os_malloc(dbp->dbenv, dbp->pgsize * 2, &lp)) != 0)
goto err;
P_INIT(lp, dbp->pgsize, PGNO(cp->page),
ISINTERNAL(cp->page) ? PGNO_INVALID : PREV_PGNO(cp->page),
ISINTERNAL(cp->page) ? PGNO_INVALID : 0,
cp->page->level, TYPE(cp->page));
+ rp = (PAGE *)((u_int8_t *)lp + dbp->pgsize);
+ P_INIT(rp, dbp->pgsize, 0,
+ ISINTERNAL(cp->page) ? PGNO_INVALID : PGNO(cp->page),
+ ISINTERNAL(cp->page) ? PGNO_INVALID : NEXT_PGNO(cp->page),
+ cp->page->level, TYPE(cp->page));
+
/*
* Split right.
*
@@ -330,7 +331,7 @@ __bam_page(dbc, pp, cp)
* page can't hold the new keys, and has to be split in turn, in which
* case we want to release all the locks we can.
*/
- if ((ret = __bam_pinsert(dbc, pp, lp, rp, BPI_SPACEONLY)) != 0)
+ if ((ret = __bam_pinsert(dbc, pp, split, lp, rp, BPI_SPACEONLY)) != 0)
goto err;
/*
@@ -380,12 +381,14 @@ __bam_page(dbc, pp, cp)
*/
PGNO(rp) = NEXT_PGNO(lp) = PGNO(alloc_rp);
- if ((ret = __memp_dirty(mpf, &cp->page, dbc->txn, 0)) != 0)
+ if ((ret = __memp_dirty(mpf,
+ &cp->page, dbc->txn, dbc->priority, 0)) != 0)
goto err;
/* Actually update the parent page. */
- if ((ret = __memp_dirty(mpf, &pp->page, dbc->txn, 0)) != 0 ||
- (ret = __bam_pinsert(dbc, pp, lp, rp, 0)) != 0)
+ if ((ret = __memp_dirty(mpf,
+ &pp->page, dbc->txn, dbc->priority, 0)) != 0 ||
+ (ret = __bam_pinsert(dbc, pp, split, lp, rp, 0)) != 0)
goto err;
bc = (BTREE_CURSOR *)dbc->internal;
@@ -447,7 +450,6 @@ __bam_page(dbc, pp, cp)
goto err;
__os_free(dbp->dbenv, lp);
- __os_free(dbp->dbenv, rp);
/*
* Success -- write the real pages back to the store. As we never
@@ -455,20 +457,24 @@ __bam_page(dbc, pp, cp)
* releasing locks on the pages that reference it. We're finished
* modifying the page so it's not really necessary, but it's neater.
*/
- if ((t_ret = __memp_fput(mpf, alloc_rp, 0)) != 0 && ret == 0)
+ if ((t_ret =
+ __memp_fput(mpf, alloc_rp, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
if ((t_ret = __TLPUT(dbc, rplock)) != 0 && ret == 0)
ret = t_ret;
- if ((t_ret = __memp_fput(mpf, pp->page, 0)) != 0 && ret == 0)
+ if ((t_ret =
+ __memp_fput(mpf, pp->page, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
if ((t_ret = __TLPUT(dbc, pp->lock)) != 0 && ret == 0)
ret = t_ret;
- if ((t_ret = __memp_fput(mpf, cp->page, 0)) != 0 && ret == 0)
+ if ((t_ret =
+ __memp_fput(mpf, cp->page, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
if ((t_ret = __TLPUT(dbc, cp->lock)) != 0 && ret == 0)
ret = t_ret;
if (tp != NULL) {
- if ((t_ret = __memp_fput(mpf, tp, 0)) != 0 && ret == 0)
+ if ((t_ret =
+ __memp_fput(mpf, tp, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
if ((t_ret = __TLPUT(dbc, tplock)) != 0 && ret == 0)
ret = t_ret;
@@ -477,24 +483,22 @@ __bam_page(dbc, pp, cp)
err: if (lp != NULL)
__os_free(dbp->dbenv, lp);
- if (rp != NULL)
- __os_free(dbp->dbenv, rp);
if (alloc_rp != NULL)
- (void)__memp_fput(mpf, alloc_rp, 0);
+ (void)__memp_fput(mpf, alloc_rp, dbc->priority);
if (tp != NULL)
- (void)__memp_fput(mpf, tp, 0);
+ (void)__memp_fput(mpf, tp, dbc->priority);
/* We never updated the new or next pages, we can release them. */
(void)__LPUT(dbc, rplock);
(void)__LPUT(dbc, tplock);
- (void)__memp_fput(mpf, pp->page, 0);
+ (void)__memp_fput(mpf, pp->page, dbc->priority);
if (ret == DB_NEEDSPLIT)
(void)__LPUT(dbc, pp->lock);
else
(void)__TLPUT(dbc, pp->lock);
- (void)__memp_fput(mpf, cp->page, 0);
+ (void)__memp_fput(mpf, cp->page, dbc->priority);
if (ret == DB_NEEDSPLIT)
(void)__LPUT(dbc, cp->lock);
else
@@ -508,71 +512,54 @@ err: if (lp != NULL)
* Fix up the btree root page after it has been split.
*/
static int
-__bam_broot(dbc, rootp, lp, rp)
+__bam_broot(dbc, rootp, split, lp, rp)
DBC *dbc;
+ u_int32_t split;
PAGE *rootp, *lp, *rp;
{
- BINTERNAL bi, *child_bi;
+ BINTERNAL bi, bi0, *child_bi;
BKEYDATA *child_bk;
BOVERFLOW bo, *child_bo;
BTREE_CURSOR *cp;
DB *dbp;
- DBT hdr, data;
+ DBT hdr, hdr0, data;
db_pgno_t root_pgno;
int ret;
dbp = dbc->dbp;
cp = (BTREE_CURSOR *)dbc->internal;
+ child_bo = NULL;
+ data.data = NULL;
- /*
- * If the root page was a leaf page, change it into an internal page.
- * We copy the key we split on (but not the key's data, in the case of
- * a leaf page) to the new root page.
- */
- root_pgno = cp->root;
- P_INIT(rootp, dbp->pgsize,
- root_pgno, PGNO_INVALID, PGNO_INVALID, lp->level + 1, P_IBTREE);
-
- /*
- * The btree comparison code guarantees that the left-most key on any
- * internal btree page is never used, so it doesn't need to be filled
- * in. Set the record count if necessary.
- */
- memset(&bi, 0, sizeof(bi));
- bi.len = 0;
- B_TSET(bi.type, B_KEYDATA);
- bi.pgno = lp->pgno;
- if (F_ISSET(cp, C_RECNUM)) {
- bi.nrecs = __bam_total(dbp, lp);
- RE_NREC_SET(rootp, bi.nrecs);
- }
- DB_SET_DBT(hdr, &bi, SSZA(BINTERNAL, data));
- if ((ret =
- __db_pitem(dbc, rootp, 0, BINTERNAL_SIZE(0), &hdr, NULL)) != 0)
- return (ret);
-
- switch (TYPE(rp)) {
+ switch (TYPE(rootp)) {
case P_IBTREE:
/* Copy the first key of the child page onto the root page. */
- child_bi = GET_BINTERNAL(dbp, rp, 0);
+ child_bi = GET_BINTERNAL(dbp, rootp, split);
switch (B_TYPE(child_bi->type)) {
case B_KEYDATA:
bi.len = child_bi->len;
B_TSET(bi.type, B_KEYDATA);
bi.pgno = rp->pgno;
- if (F_ISSET(cp, C_RECNUM)) {
- bi.nrecs = __bam_total(dbp, rp);
- RE_NREC_ADJ(rootp, bi.nrecs);
- }
DB_SET_DBT(hdr, &bi, SSZA(BINTERNAL, data));
- DB_SET_DBT(data, child_bi->data, child_bi->len);
- if ((ret = __db_pitem(dbc, rootp, 1,
- BINTERNAL_SIZE(child_bi->len), &hdr, &data)) != 0)
+ if ((ret = __os_malloc(dbp->dbenv,
+ child_bi->len, &data.data)) != 0)
return (ret);
+ memcpy(data.data, child_bi->data, child_bi->len);
+ data.size = child_bi->len;
break;
case B_OVERFLOW:
+ /* Reuse the overflow key. */
child_bo = (BOVERFLOW *)child_bi->data;
- goto do_overflow;
+ memset(&bo, 0, sizeof(bo));
+ bo.type = B_OVERFLOW;
+ bo.tlen = child_bo->tlen;
+ bo.pgno = child_bo->pgno;
+ bi.len = BOVERFLOW_SIZE;
+ B_TSET(bi.type, B_OVERFLOW);
+ bi.pgno = rp->pgno;
+ DB_SET_DBT(hdr, &bi, SSZA(BINTERNAL, data));
+ DB_SET_DBT(data, &bo, BOVERFLOW_SIZE);
+ break;
case B_DUPLICATE:
default:
goto pgfmt;
@@ -581,26 +568,23 @@ __bam_broot(dbc, rootp, lp, rp)
case P_LDUP:
case P_LBTREE:
/* Copy the first key of the child page onto the root page. */
- child_bk = GET_BKEYDATA(dbp, rp, 0);
+ child_bk = GET_BKEYDATA(dbp, rootp, split);
switch (B_TYPE(child_bk->type)) {
case B_KEYDATA:
bi.len = child_bk->len;
B_TSET(bi.type, B_KEYDATA);
bi.pgno = rp->pgno;
- if (F_ISSET(cp, C_RECNUM)) {
- bi.nrecs = __bam_total(dbp, rp);
- RE_NREC_ADJ(rootp, bi.nrecs);
- }
DB_SET_DBT(hdr, &bi, SSZA(BINTERNAL, data));
- DB_SET_DBT(data, child_bk->data, child_bk->len);
- if ((ret = __db_pitem(dbc, rootp, 1,
- BINTERNAL_SIZE(child_bk->len), &hdr, &data)) != 0)
+ if ((ret = __os_malloc(dbp->dbenv,
+ child_bk->len, &data.data)) != 0)
return (ret);
+ memcpy(data.data, child_bk->data, child_bk->len);
+ data.size = child_bk->len;
break;
case B_OVERFLOW:
/* Copy the overflow key. */
child_bo = (BOVERFLOW *)child_bk;
-do_overflow: memset(&bo, 0, sizeof(bo));
+ memset(&bo, 0, sizeof(bo));
bo.type = B_OVERFLOW;
bo.tlen = child_bo->tlen;
memset(&hdr, 0, sizeof(hdr));
@@ -617,15 +601,8 @@ do_overflow: memset(&bo, 0, sizeof(bo));
bi.len = BOVERFLOW_SIZE;
B_TSET(bi.type, B_OVERFLOW);
bi.pgno = rp->pgno;
- if (F_ISSET(cp, C_RECNUM)) {
- bi.nrecs = __bam_total(dbp, rp);
- RE_NREC_ADJ(rootp, bi.nrecs);
- }
DB_SET_DBT(hdr, &bi, SSZA(BINTERNAL, data));
DB_SET_DBT(data, &bo, BOVERFLOW_SIZE);
- if ((ret = __db_pitem(dbc, rootp, 1,
- BINTERNAL_SIZE(BOVERFLOW_SIZE), &hdr, &data)) != 0)
- return (ret);
break;
case B_DUPLICATE:
default:
@@ -635,7 +612,39 @@ do_overflow: memset(&bo, 0, sizeof(bo));
default:
pgfmt: return (__db_pgfmt(dbp->dbenv, rp->pgno));
}
- return (0);
+ /*
+ * If the root page was a leaf page, change it into an internal page.
+ * We copy the key we split on (but not the key's data, in the case of
+ * a leaf page) to the new root page.
+ */
+ root_pgno = cp->root;
+ P_INIT(rootp, dbp->pgsize,
+ root_pgno, PGNO_INVALID, PGNO_INVALID, lp->level + 1, P_IBTREE);
+
+ /*
+ * The btree comparison code guarantees that the left-most key on any
+ * internal btree page is never used, so it doesn't need to be filled
+ * in. Set the record count if necessary.
+ */
+ memset(&bi0, 0, sizeof(bi0));
+ bi0.len = 0;
+ B_TSET(bi0.type, B_KEYDATA);
+ bi0.pgno = lp->pgno;
+ if (F_ISSET(cp, C_RECNUM)) {
+ bi0.nrecs = __bam_total(dbp, lp);
+ RE_NREC_SET(rootp, bi0.nrecs);
+ bi.nrecs = __bam_total(dbp, rp);
+ RE_NREC_ADJ(rootp, bi.nrecs);
+ }
+ DB_SET_DBT(hdr0, &bi0, SSZA(BINTERNAL, data));
+ if ((ret = __db_pitem(dbc,
+ rootp, 0, BINTERNAL_SIZE(0), &hdr0, NULL)) != 0)
+ goto err;
+ ret = __db_pitem(dbc, rootp, 1, BINTERNAL_SIZE(data.size), &hdr, &data);
+
+err: if (data.data != NULL && child_bo == NULL)
+ __os_free(dbp->dbenv, data.data);
+ return (ret);
}
/*
@@ -681,12 +690,14 @@ __ram_root(dbc, rootp, lp, rp)
* __bam_pinsert --
* Insert a new key into a parent page, completing the split.
*
- * PUBLIC: int __bam_pinsert __P((DBC *, EPG *, PAGE *, PAGE *, int));
+ * PUBLIC: int __bam_pinsert
+ * PUBLIC: __P((DBC *, EPG *, u_int32_t, PAGE *, PAGE *, int));
*/
int
-__bam_pinsert(dbc, parent, lchild, rchild, flags)
+__bam_pinsert(dbc, parent, split, lchild, rchild, flags)
DBC *dbc;
EPG *parent;
+ u_int32_t split;
PAGE *lchild, *rchild;
int flags;
{
@@ -697,6 +708,7 @@ __bam_pinsert(dbc, parent, lchild, rchild, flags)
BTREE_CURSOR *cp;
DB *dbp;
DBT a, b, hdr, data;
+ EPG *child;
PAGE *ppage;
RINTERNAL ri;
db_indx_t off;
@@ -709,6 +721,7 @@ __bam_pinsert(dbc, parent, lchild, rchild, flags)
cp = (BTREE_CURSOR *)dbc->internal;
t = dbp->bt_internal;
ppage = parent->page;
+ child = parent + 1;
/* If handling record numbers, count records split to the right page. */
nrecs = F_ISSET(cp, C_RECNUM) &&
@@ -741,9 +754,9 @@ __bam_pinsert(dbc, parent, lchild, rchild, flags)
* pages that have leaf pages as children. Further reduction of the
* key between pairs of internal pages loses too much information.
*/
- switch (TYPE(rchild)) {
+ switch (TYPE(child->page)) {
case P_IBTREE:
- child_bi = GET_BINTERNAL(dbp, rchild, 0);
+ child_bi = GET_BINTERNAL(dbp, child->page, split);
nbytes = BINTERNAL_PSIZE(child_bi->len);
if (P_FREESPACE(dbp, ppage) < nbytes)
@@ -766,8 +779,22 @@ __bam_pinsert(dbc, parent, lchild, rchild, flags)
return (ret);
break;
case B_OVERFLOW:
+ /* Reuse the overflow key. */
child_bo = (BOVERFLOW *)child_bi->data;
- goto do_overflow;
+ memset(&bo, 0, sizeof(bo));
+ bo.type = B_OVERFLOW;
+ bo.tlen = child_bo->tlen;
+ bo.pgno = child_bo->pgno;
+ bi.len = BOVERFLOW_SIZE;
+ B_TSET(bi.type, B_OVERFLOW);
+ bi.pgno = rchild->pgno;
+ bi.nrecs = nrecs;
+ DB_SET_DBT(hdr, &bi, SSZA(BINTERNAL, data));
+ DB_SET_DBT(data, &bo, BOVERFLOW_SIZE);
+ if ((ret = __db_pitem(dbc, ppage, off,
+ BINTERNAL_SIZE(BOVERFLOW_SIZE), &hdr, &data)) != 0)
+ return (ret);
+ break;
case B_DUPLICATE:
default:
goto pgfmt;
@@ -775,7 +802,7 @@ __bam_pinsert(dbc, parent, lchild, rchild, flags)
break;
case P_LDUP:
case P_LBTREE:
- child_bk = GET_BKEYDATA(dbp, rchild, 0);
+ child_bk = GET_BKEYDATA(dbp, child->page, split);
switch (B_TYPE(child_bk->type)) {
case B_KEYDATA:
nbytes = BINTERNAL_PSIZE(child_bk->len);
@@ -850,7 +877,7 @@ noprefix: if (P_FREESPACE(dbp, ppage) < nbytes)
/* Copy the overflow key. */
child_bo = (BOVERFLOW *)child_bk;
-do_overflow: memset(&bo, 0, sizeof(bo));
+ memset(&bo, 0, sizeof(bo));
bo.type = B_OVERFLOW;
bo.tlen = child_bo->tlen;
memset(&hdr, 0, sizeof(hdr));
@@ -899,7 +926,7 @@ do_overflow: memset(&bo, 0, sizeof(bo));
return (ret);
break;
default:
-pgfmt: return (__db_pgfmt(dbp->dbenv, rchild->pgno));
+pgfmt: return (__db_pgfmt(dbp->dbenv, PGNO(child->page)));
}
/*
@@ -1138,6 +1165,7 @@ __bam_copy(dbp, pp, cp, nxt, stop)
PAGE *pp, *cp;
u_int32_t nxt, stop;
{
+ BINTERNAL internal;
db_indx_t *cinp, nbytes, off, *pinp;
cinp = P_INP(dbp, cp);
@@ -1148,7 +1176,9 @@ __bam_copy(dbp, pp, cp, nxt, stop)
for (off = 0; nxt < stop; ++nxt, ++NUM_ENT(cp), ++off) {
switch (TYPE(pp)) {
case P_IBTREE:
- if (B_TYPE(
+ if (off == 0 && nxt != 0)
+ nbytes = BINTERNAL_SIZE(0);
+ else if (B_TYPE(
GET_BINTERNAL(dbp, pp, nxt)->type) == B_KEYDATA)
nbytes = BINTERNAL_SIZE(
GET_BINTERNAL(dbp, pp, nxt)->len);
@@ -1182,7 +1212,16 @@ __bam_copy(dbp, pp, cp, nxt, stop)
return (__db_pgfmt(dbp->dbenv, pp->pgno));
}
cinp[off] = HOFFSET(cp) -= nbytes;
- memcpy(P_ENTRY(dbp, cp, off), P_ENTRY(dbp, pp, nxt), nbytes);
+ if (off == 0 && nxt != 0 && TYPE(pp) == P_IBTREE) {
+ internal.len = 0;
+ internal.type = B_KEYDATA;
+ internal.pgno = GET_BINTERNAL(dbp, pp, nxt)->pgno;
+ internal.nrecs = GET_BINTERNAL(dbp, pp, nxt)->nrecs;
+ memcpy(P_ENTRY(dbp, cp, off), &internal, nbytes);
+ }
+ else
+ memcpy(P_ENTRY(dbp, cp, off),
+ P_ENTRY(dbp, pp, nxt), nbytes);
}
return (0);
}
diff --git a/db/btree/bt_stat.c b/db/btree/bt_stat.c
index 05415eedd..1e23d3cd2 100644
--- a/db/btree/bt_stat.c
+++ b/db/btree/bt_stat.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: bt_stat.c,v 12.12 2006/08/24 14:44:45 bostic Exp $
+ * $Id: bt_stat.c,v 12.17 2007/06/01 16:30:27 bostic Exp $
*/
#include "db_config.h"
@@ -77,7 +76,7 @@ __bam_stat(dbc, spp, flags)
goto err;
pgno = h->next_pgno;
- if ((ret = __memp_fput(mpf, h, 0)) != 0)
+ if ((ret = __memp_fput(mpf, h, dbc->priority)) != 0)
goto err;
h = NULL;
}
@@ -93,7 +92,7 @@ __bam_stat(dbc, spp, flags)
sp->bt_levels = h->level;
/* Discard the root page. */
- ret = __memp_fput(mpf, h, 0);
+ ret = __memp_fput(mpf, h, dbc->priority);
h = NULL;
if ((t_ret = __LPUT(dbc, lock)) != 0 && ret == 0)
ret = t_ret;
@@ -113,7 +112,7 @@ __bam_stat(dbc, spp, flags)
(!MULTIVERSION(dbp) || dbc->txn != NULL);
meta_only:
if (t->bt_meta != PGNO_BASE_MD || write_meta) {
- ret = __memp_fput(mpf, meta, 0);
+ ret = __memp_fput(mpf, meta, dbc->priority);
meta = NULL;
if ((t_ret = __LPUT(dbc, metalock)) != 0 && ret == 0)
ret = t_ret;
@@ -151,6 +150,16 @@ meta_only:
sp->bt_minkey = meta->minkey;
sp->bt_re_len = meta->re_len;
sp->bt_re_pad = meta->re_pad;
+ /*
+ * Don't take the page number from the meta-data page -- that value is
+ * only maintained in the primary database, we may have been called on
+ * a subdatabase. (Yes, I read the primary database meta-data page
+ * earlier in this function, but I'm asking the underlying cache so the
+ * code for the Hash and Btree methods is the same.)
+ */
+ if ((ret = __memp_get_last_pgno(dbp->mpf, &pgno)) != 0)
+ goto err;
+ sp->bt_pagecnt = pgno + 1;
sp->bt_pagesize = meta->dbmeta.pagesize;
sp->bt_magic = meta->dbmeta.magic;
sp->bt_version = meta->dbmeta.version;
@@ -165,14 +174,15 @@ meta_only:
err: /* Discard the second page. */
if ((t_ret = __LPUT(dbc, lock)) != 0 && ret == 0)
ret = t_ret;
- if (h != NULL && (t_ret = __memp_fput(mpf, h, 0)) != 0 && ret == 0)
+ if (h != NULL &&
+ (t_ret = __memp_fput(mpf, h, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
/* Discard the metadata page. */
if ((t_ret = __LPUT(dbc, metalock)) != 0 && ret == 0)
ret = t_ret;
if (meta != NULL &&
- (t_ret = __memp_fput(mpf, meta, 0)) != 0 && ret == 0)
+ (t_ret = __memp_fput(mpf, meta, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
if (ret != 0 && sp != NULL) {
@@ -454,6 +464,7 @@ __bam_stat_print(dbc, flags)
}
#endif
+#ifndef HAVE_BREW
/*
* __bam_key_range --
* Return proportion of keys relative to given key. The numbers are
@@ -483,6 +494,7 @@ __bam_key_range(dbc, dbt, kp, flags)
kp->less = kp->greater = 0.0;
factor = 1.0;
+
/* Correct the leaf page. */
cp->csp->entries /= 2;
cp->csp->indx /= 2;
@@ -524,6 +536,7 @@ __bam_key_range(dbc, dbt, kp, flags)
return (0);
}
+#endif
/*
* __bam_traverse --
@@ -625,7 +638,8 @@ __bam_traverse(dbc, mode, root_pgno, callback, cookie)
ret = callback(dbp, h, cookie, &already_put);
-err: if (!already_put && (t_ret = __memp_fput(mpf, h, 0)) != 0 && ret == 0)
+err: if (!already_put &&
+ (t_ret = __memp_fput(mpf, h, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
if ((t_ret = __TLPUT(dbc, lock)) != 0 && ret == 0)
ret = t_ret;
diff --git a/db/btree/bt_upgrade.c b/db/btree/bt_upgrade.c
index 5c6dcdf33..9c316c1b0 100644
--- a/db/btree/bt_upgrade.c
+++ b/db/btree/bt_upgrade.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: bt_upgrade.c,v 12.4 2006/08/24 14:44:45 bostic Exp $
+ * $Id: bt_upgrade.c,v 12.6 2007/05/17 15:14:46 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/btree/bt_verify.c b/db/btree/bt_verify.c
index 3312dd880..59ea4e593 100644
--- a/db/btree/bt_verify.c
+++ b/db/btree/bt_verify.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1999-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1999,2007 Oracle. All rights reserved.
*
- * $Id: bt_verify.c,v 12.27 2006/09/07 20:05:25 bostic Exp $
+ * $Id: bt_verify.c,v 12.30 2007/05/17 15:14:46 bostic Exp $
*/
#include "db_config.h"
@@ -1866,7 +1865,8 @@ err: if (toplevel) {
vdp->leaf_type = leaf_type;
}
- if (h != NULL && (t_ret = __memp_fput(mpf, h, 0)) != 0 && ret == 0)
+ if (h != NULL && (t_ret =
+ __memp_fput(mpf, h, DB_PRIORITY_UNCHANGED)) != 0 && ret == 0)
ret = t_ret;
if ((t_ret = __db_vrfy_putpageinfo(dbenv, vdp, pip)) != 0 && ret == 0)
ret = t_ret;
@@ -2366,7 +2366,7 @@ __bam_meta2pgset(dbp, vdp, btmeta, flags, pgset)
goto err;
}
- if ((ret = __memp_fput(mpf, h, 0)) != 0)
+ if ((ret = __memp_fput(mpf, h, DB_PRIORITY_UNCHANGED)) != 0)
err_ret = ret;
h = NULL;
}
@@ -2398,13 +2398,13 @@ traverse:
goto err;
current = NEXT_PGNO(h);
- if ((ret = __memp_fput(mpf, h, 0)) != 0)
+ if ((ret = __memp_fput(mpf, h, DB_PRIORITY_UNCHANGED)) != 0)
err_ret = ret;
h = NULL;
}
err: if (h != NULL)
- (void)__memp_fput(mpf, h, 0);
+ (void)__memp_fput(mpf, h, DB_PRIORITY_UNCHANGED);
return (ret == 0 ? err_ret : ret);
}
diff --git a/db/btree/btree.src b/db/btree/btree.src
index 9a35d5adc..04490a4f1 100644
--- a/db/btree/btree.src
+++ b/db/btree/btree.src
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: btree.src,v 12.7 2006/08/24 14:44:46 bostic Exp $
+ * $Id: btree.src,v 12.11 2007/06/01 17:35:16 sue Exp $
*/
PREFIX __bam
@@ -193,7 +192,7 @@ ARG root db_pgno_t ld
/* Recno of the adjustment. */
ARG recno db_recno_t ld
/* Order number of the adjustment. */
-ARG order u_int32_t ld
+ARG order u_int32_t lu
END
/*
@@ -250,7 +249,7 @@ END
/*
* BTREE-pgno -- Handles replacing a page number in the record
- * refernece on pgno by indx.
+ * reference on pgno by indx.
*/
BEGIN pgno 44 149
DB fileid int32_t ld
diff --git a/db/btree/btree_auto.c b/db/btree/btree_auto.c
index 3d5b9ed97..138b83989 100644
--- a/db/btree/btree_auto.c
+++ b/db/btree/btree_auto.c
@@ -219,6 +219,7 @@ __bam_split_log(dbp, txnp, ret_lsnp, flags, left, llsn, right, rlsn, indx,
*ret_lsnp = *rlsnp;
}
} else {
+ ret = 0;
#ifdef DIAGNOSTIC
/*
* Set the debug bit if we are going to log non-durable
@@ -228,10 +229,9 @@ __bam_split_log(dbp, txnp, ret_lsnp, flags, left, llsn, right, rlsn, indx,
rectype |= DB_debug_FLAG;
memcpy(logrec.data, &rectype, sizeof(rectype));
- ret = __log_put(dbenv,
- rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
-#else
- ret = 0;
+ if (!IS_REP_CLIENT(dbenv))
+ ret = __log_put(dbenv,
+ rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
#endif
STAILQ_INSERT_HEAD(&txnp->logs, lr, links);
F_SET((TXN_DETAIL *)txnp->td, TXN_DTL_INMEMORY);
@@ -505,6 +505,7 @@ __bam_rsplit_log(dbp, txnp, ret_lsnp, flags, pgno, pgdbt, root_pgno, nrec, roote
*ret_lsnp = *rlsnp;
}
} else {
+ ret = 0;
#ifdef DIAGNOSTIC
/*
* Set the debug bit if we are going to log non-durable
@@ -514,10 +515,9 @@ __bam_rsplit_log(dbp, txnp, ret_lsnp, flags, pgno, pgdbt, root_pgno, nrec, roote
rectype |= DB_debug_FLAG;
memcpy(logrec.data, &rectype, sizeof(rectype));
- ret = __log_put(dbenv,
- rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
-#else
- ret = 0;
+ if (!IS_REP_CLIENT(dbenv))
+ ret = __log_put(dbenv,
+ rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
#endif
STAILQ_INSERT_HEAD(&txnp->logs, lr, links);
F_SET((TXN_DETAIL *)txnp->td, TXN_DTL_INMEMORY);
@@ -758,6 +758,7 @@ __bam_adj_log(dbp, txnp, ret_lsnp, flags, pgno, lsn, indx, indx_copy, is_insert)
*ret_lsnp = *rlsnp;
}
} else {
+ ret = 0;
#ifdef DIAGNOSTIC
/*
* Set the debug bit if we are going to log non-durable
@@ -767,10 +768,9 @@ __bam_adj_log(dbp, txnp, ret_lsnp, flags, pgno, lsn, indx, indx_copy, is_insert)
rectype |= DB_debug_FLAG;
memcpy(logrec.data, &rectype, sizeof(rectype));
- ret = __log_put(dbenv,
- rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
-#else
- ret = 0;
+ if (!IS_REP_CLIENT(dbenv))
+ ret = __log_put(dbenv,
+ rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
#endif
STAILQ_INSERT_HEAD(&txnp->logs, lr, links);
F_SET((TXN_DETAIL *)txnp->td, TXN_DTL_INMEMORY);
@@ -1002,6 +1002,7 @@ __bam_cadjust_log(dbp, txnp, ret_lsnp, flags, pgno, lsn, indx, adjust, opflags)
*ret_lsnp = *rlsnp;
}
} else {
+ ret = 0;
#ifdef DIAGNOSTIC
/*
* Set the debug bit if we are going to log non-durable
@@ -1011,10 +1012,9 @@ __bam_cadjust_log(dbp, txnp, ret_lsnp, flags, pgno, lsn, indx, adjust, opflags)
rectype |= DB_debug_FLAG;
memcpy(logrec.data, &rectype, sizeof(rectype));
- ret = __log_put(dbenv,
- rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
-#else
- ret = 0;
+ if (!IS_REP_CLIENT(dbenv))
+ ret = __log_put(dbenv,
+ rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
#endif
STAILQ_INSERT_HEAD(&txnp->logs, lr, links);
F_SET((TXN_DETAIL *)txnp->td, TXN_DTL_INMEMORY);
@@ -1235,6 +1235,7 @@ __bam_cdel_log(dbp, txnp, ret_lsnp, flags, pgno, lsn, indx)
*ret_lsnp = *rlsnp;
}
} else {
+ ret = 0;
#ifdef DIAGNOSTIC
/*
* Set the debug bit if we are going to log non-durable
@@ -1244,10 +1245,9 @@ __bam_cdel_log(dbp, txnp, ret_lsnp, flags, pgno, lsn, indx)
rectype |= DB_debug_FLAG;
memcpy(logrec.data, &rectype, sizeof(rectype));
- ret = __log_put(dbenv,
- rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
-#else
- ret = 0;
+ if (!IS_REP_CLIENT(dbenv))
+ ret = __log_put(dbenv,
+ rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
#endif
STAILQ_INSERT_HEAD(&txnp->logs, lr, links);
F_SET((TXN_DETAIL *)txnp->td, TXN_DTL_INMEMORY);
@@ -1505,6 +1505,7 @@ __bam_repl_log(dbp, txnp, ret_lsnp, flags, pgno, lsn, indx, isdeleted, orig,
*ret_lsnp = *rlsnp;
}
} else {
+ ret = 0;
#ifdef DIAGNOSTIC
/*
* Set the debug bit if we are going to log non-durable
@@ -1514,10 +1515,9 @@ __bam_repl_log(dbp, txnp, ret_lsnp, flags, pgno, lsn, indx, isdeleted, orig,
rectype |= DB_debug_FLAG;
memcpy(logrec.data, &rectype, sizeof(rectype));
- ret = __log_put(dbenv,
- rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
-#else
- ret = 0;
+ if (!IS_REP_CLIENT(dbenv))
+ ret = __log_put(dbenv,
+ rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
#endif
STAILQ_INSERT_HEAD(&txnp->logs, lr, links);
F_SET((TXN_DETAIL *)txnp->td, TXN_DTL_INMEMORY);
@@ -1753,6 +1753,7 @@ __bam_root_log(dbp, txnp, ret_lsnp, flags, meta_pgno, root_pgno, meta_lsn)
*ret_lsnp = *rlsnp;
}
} else {
+ ret = 0;
#ifdef DIAGNOSTIC
/*
* Set the debug bit if we are going to log non-durable
@@ -1762,10 +1763,9 @@ __bam_root_log(dbp, txnp, ret_lsnp, flags, meta_pgno, root_pgno, meta_lsn)
rectype |= DB_debug_FLAG;
memcpy(logrec.data, &rectype, sizeof(rectype));
- ret = __log_put(dbenv,
- rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
-#else
- ret = 0;
+ if (!IS_REP_CLIENT(dbenv))
+ ret = __log_put(dbenv,
+ rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
#endif
STAILQ_INSERT_HEAD(&txnp->logs, lr, links);
F_SET((TXN_DETAIL *)txnp->td, TXN_DTL_INMEMORY);
@@ -1995,6 +1995,7 @@ __bam_curadj_log(dbp, txnp, ret_lsnp, flags, mode, from_pgno, to_pgno, left_pgno
*ret_lsnp = *rlsnp;
}
} else {
+ ret = 0;
#ifdef DIAGNOSTIC
/*
* Set the debug bit if we are going to log non-durable
@@ -2004,10 +2005,9 @@ __bam_curadj_log(dbp, txnp, ret_lsnp, flags, mode, from_pgno, to_pgno, left_pgno
rectype |= DB_debug_FLAG;
memcpy(logrec.data, &rectype, sizeof(rectype));
- ret = __log_put(dbenv,
- rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
-#else
- ret = 0;
+ if (!IS_REP_CLIENT(dbenv))
+ ret = __log_put(dbenv,
+ rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
#endif
STAILQ_INSERT_HEAD(&txnp->logs, lr, links);
F_SET((TXN_DETAIL *)txnp->td, TXN_DTL_INMEMORY);
@@ -2234,6 +2234,7 @@ __bam_rcuradj_log(dbp, txnp, ret_lsnp, flags, mode, root, recno, order)
*ret_lsnp = *rlsnp;
}
} else {
+ ret = 0;
#ifdef DIAGNOSTIC
/*
* Set the debug bit if we are going to log non-durable
@@ -2243,10 +2244,9 @@ __bam_rcuradj_log(dbp, txnp, ret_lsnp, flags, mode, root, recno, order)
rectype |= DB_debug_FLAG;
memcpy(logrec.data, &rectype, sizeof(rectype));
- ret = __log_put(dbenv,
- rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
-#else
- ret = 0;
+ if (!IS_REP_CLIENT(dbenv))
+ ret = __log_put(dbenv,
+ rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
#endif
STAILQ_INSERT_HEAD(&txnp->logs, lr, links);
F_SET((TXN_DETAIL *)txnp->td, TXN_DTL_INMEMORY);
@@ -2552,6 +2552,7 @@ __bam_relink_log(dbp, txnp, ret_lsnp, flags, pgno, new_pgno, prev, lsn_prev, nex
*ret_lsnp = *rlsnp;
}
} else {
+ ret = 0;
#ifdef DIAGNOSTIC
/*
* Set the debug bit if we are going to log non-durable
@@ -2561,10 +2562,9 @@ __bam_relink_log(dbp, txnp, ret_lsnp, flags, pgno, new_pgno, prev, lsn_prev, nex
rectype |= DB_debug_FLAG;
memcpy(logrec.data, &rectype, sizeof(rectype));
- ret = __log_put(dbenv,
- rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
-#else
- ret = 0;
+ if (!IS_REP_CLIENT(dbenv))
+ ret = __log_put(dbenv,
+ rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
#endif
STAILQ_INSERT_HEAD(&txnp->logs, lr, links);
F_SET((TXN_DETAIL *)txnp->td, TXN_DTL_INMEMORY);
@@ -2842,6 +2842,7 @@ __bam_merge_log(dbp, txnp, ret_lsnp, flags, pgno, lsn, npgno, nlsn, hdr,
*ret_lsnp = *rlsnp;
}
} else {
+ ret = 0;
#ifdef DIAGNOSTIC
/*
* Set the debug bit if we are going to log non-durable
@@ -2851,10 +2852,9 @@ __bam_merge_log(dbp, txnp, ret_lsnp, flags, pgno, lsn, npgno, nlsn, hdr,
rectype |= DB_debug_FLAG;
memcpy(logrec.data, &rectype, sizeof(rectype));
- ret = __log_put(dbenv,
- rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
-#else
- ret = 0;
+ if (!IS_REP_CLIENT(dbenv))
+ ret = __log_put(dbenv,
+ rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
#endif
STAILQ_INSERT_HEAD(&txnp->logs, lr, links);
F_SET((TXN_DETAIL *)txnp->td, TXN_DTL_INMEMORY);
@@ -3100,6 +3100,7 @@ __bam_pgno_log(dbp, txnp, ret_lsnp, flags, pgno, lsn, indx, opgno, npgno)
*ret_lsnp = *rlsnp;
}
} else {
+ ret = 0;
#ifdef DIAGNOSTIC
/*
* Set the debug bit if we are going to log non-durable
@@ -3109,10 +3110,9 @@ __bam_pgno_log(dbp, txnp, ret_lsnp, flags, pgno, lsn, indx, opgno, npgno)
rectype |= DB_debug_FLAG;
memcpy(logrec.data, &rectype, sizeof(rectype));
- ret = __log_put(dbenv,
- rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
-#else
- ret = 0;
+ if (!IS_REP_CLIENT(dbenv))
+ ret = __log_put(dbenv,
+ rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
#endif
STAILQ_INSERT_HEAD(&txnp->logs, lr, links);
F_SET((TXN_DETAIL *)txnp->td, TXN_DTL_INMEMORY);
diff --git a/db/btree/btree_autop.c b/db/btree/btree_autop.c
index 88da2d7e5..645c9c5fc 100644
--- a/db/btree/btree_autop.c
+++ b/db/btree/btree_autop.c
@@ -393,7 +393,7 @@ __bam_rcuradj_print(dbenv, dbtp, lsnp, notused2, notused3)
(void)printf("\tmode: %ld\n", (long)argp->mode);
(void)printf("\troot: %ld\n", (long)argp->root);
(void)printf("\trecno: %ld\n", (long)argp->recno);
- (void)printf("\torder: %ld\n", (long)argp->order);
+ (void)printf("\torder: %lu\n", (u_long)argp->order);
(void)printf("\n");
__os_free(dbenv, argp);
return (0);
diff --git a/db/build_brew/bdb_brew.dsp b/db/build_brew/bdb_brew.dsp
new file mode 100644
index 000000000..dece44cf1
--- /dev/null
+++ b/db/build_brew/bdb_brew.dsp
@@ -0,0 +1,625 @@
+# Microsoft Developer Studio Project File - Name="bdb_brew" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=bdb_brew - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "bdb_brew.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "bdb_brew.mak" CFG="bdb_brew - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "bdb_brew - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "bdb_brew - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "bdb_brew - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release/bdb_brew"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release/bdb_brew"
+# PROP Target_Dir ""
+LINK32=link.exe
+# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "UNICODE" /D "_UNICODE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /I "$(BREWDIR)\inc" /D "UNICODE" /D "_UNICODE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /FD /c
+# ADD BASE RSC /l 0xc09
+# ADD RSC /l 0xc09
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "bdb_brew - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug/bdb_brew"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug/bdb_brew"
+# PROP Target_Dir ""
+LINK32=link.exe
+# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "DIAGNOSTIC" /D "UNICODE" /D "_UNICODE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FD /c
+# ADD CPP /nologo /MDd /W3 /GX /ZI /Od /X /I "." /I ".." /I "$(BREWDIR)\inc" /D "DIAGNOSTIC" /D "UNICODE" /D "_UNICODE" /D "_DEBUG" /D "AEE_SIMULATOR" /D "__NO_SYSTEM_INCLUDES" /FR /FD /c
+# ADD BASE RSC /l 0xc09
+# ADD RSC /l 0xc09
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ENDIF
+
+# Begin Target
+
+# Name "bdb_brew - Win32 Release"
+# Name "bdb_brew - Win32 Debug"
+# Begin Group "header_files"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\brew_db.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\clib_port.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\db.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\db_config.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\db_int.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\errno.h
+# End Source File
+# End Group
+# Begin Group "source_files"
+
+# PROP Default_Filter ""
+# Begin Source File
+SOURCE=..\btree\bt_compact.c
+# End Source File
+# Begin Source File
+SOURCE=..\btree\bt_compare.c
+# End Source File
+# Begin Source File
+SOURCE=..\btree\bt_conv.c
+# End Source File
+# Begin Source File
+SOURCE=..\btree\bt_curadj.c
+# End Source File
+# Begin Source File
+SOURCE=..\btree\bt_cursor.c
+# End Source File
+# Begin Source File
+SOURCE=..\btree\bt_delete.c
+# End Source File
+# Begin Source File
+SOURCE=..\btree\bt_method.c
+# End Source File
+# Begin Source File
+SOURCE=..\btree\bt_open.c
+# End Source File
+# Begin Source File
+SOURCE=..\btree\bt_put.c
+# End Source File
+# Begin Source File
+SOURCE=..\btree\bt_rec.c
+# End Source File
+# Begin Source File
+SOURCE=..\btree\bt_reclaim.c
+# End Source File
+# Begin Source File
+SOURCE=..\btree\bt_recno.c
+# End Source File
+# Begin Source File
+SOURCE=..\btree\bt_rsearch.c
+# End Source File
+# Begin Source File
+SOURCE=..\btree\bt_search.c
+# End Source File
+# Begin Source File
+SOURCE=..\btree\bt_split.c
+# End Source File
+# Begin Source File
+SOURCE=..\btree\bt_stat.c
+# End Source File
+# Begin Source File
+SOURCE=..\btree\btree_auto.c
+# End Source File
+# Begin Source File
+SOURCE=..\clib\atol.c
+# End Source File
+# Begin Source File
+SOURCE=..\clib\isalpha.c
+# End Source File
+# Begin Source File
+SOURCE=..\clib\isdigit.c
+# End Source File
+# Begin Source File
+SOURCE=..\clib\isprint.c
+# End Source File
+# Begin Source File
+SOURCE=..\clib\isspace.c
+# End Source File
+# Begin Source File
+SOURCE=..\clib\printf.c
+# End Source File
+# Begin Source File
+SOURCE=..\clib\qsort.c
+# End Source File
+# Begin Source File
+SOURCE=..\clib\rand.c
+# End Source File
+# Begin Source File
+SOURCE=..\clib\strcasecmp.c
+# End Source File
+# Begin Source File
+SOURCE=..\clib\strerror.c
+# End Source File
+# Begin Source File
+SOURCE=..\clib\strncat.c
+# End Source File
+# Begin Source File
+SOURCE=..\clib\strsep.c
+# End Source File
+# Begin Source File
+SOURCE=..\clib\strtol.c
+# End Source File
+# Begin Source File
+SOURCE=..\common\crypto_stub.c
+# End Source File
+# Begin Source File
+SOURCE=..\common\db_byteorder.c
+# End Source File
+# Begin Source File
+SOURCE=..\common\db_err.c
+# End Source File
+# Begin Source File
+SOURCE=..\common\db_getlong.c
+# End Source File
+# Begin Source File
+SOURCE=..\common\db_idspace.c
+# End Source File
+# Begin Source File
+SOURCE=..\common\db_log2.c
+# End Source File
+# Begin Source File
+SOURCE=..\common\db_shash.c
+# End Source File
+# Begin Source File
+SOURCE=..\common\mkpath.c
+# End Source File
+# Begin Source File
+SOURCE=..\db\crdel_auto.c
+# End Source File
+# Begin Source File
+SOURCE=..\db\crdel_rec.c
+# End Source File
+# Begin Source File
+SOURCE=..\db\db.c
+# End Source File
+# Begin Source File
+SOURCE=..\db\db_am.c
+# End Source File
+# Begin Source File
+SOURCE=..\db\db_auto.c
+# End Source File
+# Begin Source File
+SOURCE=..\db\db_cam.c
+# End Source File
+# Begin Source File
+SOURCE=..\db\db_cds.c
+# End Source File
+# Begin Source File
+SOURCE=..\db\db_conv.c
+# End Source File
+# Begin Source File
+SOURCE=..\db\db_dispatch.c
+# End Source File
+# Begin Source File
+SOURCE=..\db\db_dup.c
+# End Source File
+# Begin Source File
+SOURCE=..\db\db_iface.c
+# End Source File
+# Begin Source File
+SOURCE=..\db\db_join.c
+# End Source File
+# Begin Source File
+SOURCE=..\db\db_meta.c
+# End Source File
+# Begin Source File
+SOURCE=..\db\db_method.c
+# End Source File
+# Begin Source File
+SOURCE=..\db\db_open.c
+# End Source File
+# Begin Source File
+SOURCE=..\db\db_overflow.c
+# End Source File
+# Begin Source File
+SOURCE=..\db\db_pr.c
+# End Source File
+# Begin Source File
+SOURCE=..\db\db_rec.c
+# End Source File
+# Begin Source File
+SOURCE=..\db\db_reclaim.c
+# End Source File
+# Begin Source File
+SOURCE=..\db\db_remove.c
+# End Source File
+# Begin Source File
+SOURCE=..\db\db_rename.c
+# End Source File
+# Begin Source File
+SOURCE=..\db\db_ret.c
+# End Source File
+# Begin Source File
+SOURCE=..\db\db_setid.c
+# End Source File
+# Begin Source File
+SOURCE=..\db\db_setlsn.c
+# End Source File
+# Begin Source File
+SOURCE=..\db\db_stati.c
+# End Source File
+# Begin Source File
+SOURCE=..\db\db_truncate.c
+# End Source File
+# Begin Source File
+SOURCE=..\db\db_upg.c
+# End Source File
+# Begin Source File
+SOURCE=..\db\db_vrfy_stub.c
+# End Source File
+# Begin Source File
+SOURCE=..\dbreg\dbreg.c
+# End Source File
+# Begin Source File
+SOURCE=..\dbreg\dbreg_auto.c
+# End Source File
+# Begin Source File
+SOURCE=..\dbreg\dbreg_rec.c
+# End Source File
+# Begin Source File
+SOURCE=..\dbreg\dbreg_stat.c
+# End Source File
+# Begin Source File
+SOURCE=..\dbreg\dbreg_util.c
+# End Source File
+# Begin Source File
+SOURCE=..\env\env_alloc.c
+# End Source File
+# Begin Source File
+SOURCE=..\env\env_config.c
+# End Source File
+# Begin Source File
+SOURCE=..\env\env_failchk.c
+# End Source File
+# Begin Source File
+SOURCE=..\env\env_file.c
+# End Source File
+# Begin Source File
+SOURCE=..\env\env_method.c
+# End Source File
+# Begin Source File
+SOURCE=..\env\env_name.c
+# End Source File
+# Begin Source File
+SOURCE=..\env\env_open.c
+# End Source File
+# Begin Source File
+SOURCE=..\env\env_recover.c
+# End Source File
+# Begin Source File
+SOURCE=..\env\env_region.c
+# End Source File
+# Begin Source File
+SOURCE=..\env\env_register.c
+# End Source File
+# Begin Source File
+SOURCE=..\env\env_stat.c
+# End Source File
+# Begin Source File
+SOURCE=..\fileops\fileops_auto.c
+# End Source File
+# Begin Source File
+SOURCE=..\fileops\fop_basic.c
+# End Source File
+# Begin Source File
+SOURCE=..\fileops\fop_rec.c
+# End Source File
+# Begin Source File
+SOURCE=..\fileops\fop_util.c
+# End Source File
+# Begin Source File
+SOURCE=..\hash\hash_func.c
+# End Source File
+# Begin Source File
+SOURCE=..\hash\hash_stub.c
+# End Source File
+# Begin Source File
+SOURCE=..\hmac\hmac.c
+# End Source File
+# Begin Source File
+SOURCE=..\hmac\sha1.c
+# End Source File
+# Begin Source File
+SOURCE=..\lock\lock_stub.c
+# End Source File
+# Begin Source File
+SOURCE=..\log\log.c
+# End Source File
+# Begin Source File
+SOURCE=..\log\log_archive.c
+# End Source File
+# Begin Source File
+SOURCE=..\log\log_compare.c
+# End Source File
+# Begin Source File
+SOURCE=..\log\log_debug.c
+# End Source File
+# Begin Source File
+SOURCE=..\log\log_get.c
+# End Source File
+# Begin Source File
+SOURCE=..\log\log_method.c
+# End Source File
+# Begin Source File
+SOURCE=..\log\log_put.c
+# End Source File
+# Begin Source File
+SOURCE=..\log\log_stat.c
+# End Source File
+# Begin Source File
+SOURCE=..\mp\mp_alloc.c
+# End Source File
+# Begin Source File
+SOURCE=..\mp\mp_bh.c
+# End Source File
+# Begin Source File
+SOURCE=..\mp\mp_fget.c
+# End Source File
+# Begin Source File
+SOURCE=..\mp\mp_fmethod.c
+# End Source File
+# Begin Source File
+SOURCE=..\mp\mp_fopen.c
+# End Source File
+# Begin Source File
+SOURCE=..\mp\mp_fput.c
+# End Source File
+# Begin Source File
+SOURCE=..\mp\mp_fset.c
+# End Source File
+# Begin Source File
+SOURCE=..\mp\mp_method.c
+# End Source File
+# Begin Source File
+SOURCE=..\mp\mp_mvcc.c
+# End Source File
+# Begin Source File
+SOURCE=..\mp\mp_region.c
+# End Source File
+# Begin Source File
+SOURCE=..\mp\mp_register.c
+# End Source File
+# Begin Source File
+SOURCE=..\mp\mp_resize.c
+# End Source File
+# Begin Source File
+SOURCE=..\mp\mp_stat.c
+# End Source File
+# Begin Source File
+SOURCE=..\mp\mp_sync.c
+# End Source File
+# Begin Source File
+SOURCE=..\mp\mp_trickle.c
+# End Source File
+# Begin Source File
+SOURCE=..\mutex\mut_stub.c
+# End Source File
+# Begin Source File
+SOURCE=..\os\os_alloc.c
+# End Source File
+# Begin Source File
+SOURCE=..\os\os_clock.c
+# End Source File
+# Begin Source File
+SOURCE=..\os\os_fid.c
+# End Source File
+# Begin Source File
+SOURCE=..\os\os_flock.c
+# End Source File
+# Begin Source File
+SOURCE=..\os\os_fzero.c
+# End Source File
+# Begin Source File
+SOURCE=..\os\os_getenv.c
+# End Source File
+# Begin Source File
+SOURCE=..\os\os_map.c
+# End Source File
+# Begin Source File
+SOURCE=..\os\os_region.c
+# End Source File
+# Begin Source File
+SOURCE=..\os\os_root.c
+# End Source File
+# Begin Source File
+SOURCE=..\os\os_rpath.c
+# End Source File
+# Begin Source File
+SOURCE=..\os\os_tmpdir.c
+# End Source File
+# Begin Source File
+SOURCE=..\os\os_uid.c
+# End Source File
+# Begin Source File
+SOURCE=..\os\os_yield.c
+# End Source File
+# Begin Source File
+SOURCE=..\os_brew\ctime.c
+# End Source File
+# Begin Source File
+SOURCE=..\os_brew\fclose.c
+# End Source File
+# Begin Source File
+SOURCE=..\os_brew\fgetc.c
+# End Source File
+# Begin Source File
+SOURCE=..\os_brew\fgets.c
+# End Source File
+# Begin Source File
+SOURCE=..\os_brew\fopen.c
+# End Source File
+# Begin Source File
+SOURCE=..\os_brew\fwrite.c
+# End Source File
+# Begin Source File
+SOURCE=..\os_brew\getcwd.c
+# End Source File
+# Begin Source File
+SOURCE=..\os_brew\globals.c
+# End Source File
+# Begin Source File
+SOURCE=..\os_brew\localtime.c
+# End Source File
+# Begin Source File
+SOURCE=..\os_brew\os_abort.c
+# End Source File
+# Begin Source File
+SOURCE=..\os_brew\os_abs.c
+# End Source File
+# Begin Source File
+SOURCE=..\os_brew\os_config.c
+# End Source File
+# Begin Source File
+SOURCE=..\os_brew\os_dir.c
+# End Source File
+# Begin Source File
+SOURCE=..\os_brew\os_errno.c
+# End Source File
+# Begin Source File
+SOURCE=..\os_brew\os_handle.c
+# End Source File
+# Begin Source File
+SOURCE=..\os_brew\os_mkdir.c
+# End Source File
+# Begin Source File
+SOURCE=..\os_brew\os_oflags.c
+# End Source File
+# Begin Source File
+SOURCE=..\os_brew\os_open.c
+# End Source File
+# Begin Source File
+SOURCE=..\os_brew\os_pid.c
+# End Source File
+# Begin Source File
+SOURCE=..\os_brew\os_rename.c
+# End Source File
+# Begin Source File
+SOURCE=..\os_brew\os_rw.c
+# End Source File
+# Begin Source File
+SOURCE=..\os_brew\os_seek.c
+# End Source File
+# Begin Source File
+SOURCE=..\os_brew\os_sleep.c
+# End Source File
+# Begin Source File
+SOURCE=..\os_brew\os_stat.c
+# End Source File
+# Begin Source File
+SOURCE=..\os_brew\os_truncate.c
+# End Source File
+# Begin Source File
+SOURCE=..\os_brew\os_unlink.c
+# End Source File
+# Begin Source File
+SOURCE=..\os_brew\time.c
+# End Source File
+# Begin Source File
+SOURCE=..\qam\qam_stub.c
+# End Source File
+# Begin Source File
+SOURCE=..\rep\rep_stub.c
+# End Source File
+# Begin Source File
+SOURCE=..\repmgr\repmgr_stub.c
+# End Source File
+# Begin Source File
+SOURCE=..\txn\txn.c
+# End Source File
+# Begin Source File
+SOURCE=..\txn\txn_auto.c
+# End Source File
+# Begin Source File
+SOURCE=..\txn\txn_chkpt.c
+# End Source File
+# Begin Source File
+SOURCE=..\txn\txn_failchk.c
+# End Source File
+# Begin Source File
+SOURCE=..\txn\txn_method.c
+# End Source File
+# Begin Source File
+SOURCE=..\txn\txn_rec.c
+# End Source File
+# Begin Source File
+SOURCE=..\txn\txn_recover.c
+# End Source File
+# Begin Source File
+SOURCE=..\txn\txn_region.c
+# End Source File
+# Begin Source File
+SOURCE=..\txn\txn_stat.c
+# End Source File
+# Begin Source File
+SOURCE=..\txn\txn_util.c
+# End Source File
+# Begin Source File
+SOURCE=..\xa\xa_stub.c
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/db/build_brew/bdb_brew.dsw b/db/build_brew/bdb_brew.dsw
new file mode 100644
index 000000000..a0fdf302a
--- /dev/null
+++ b/db/build_brew/bdb_brew.dsw
@@ -0,0 +1,29 @@
+Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+
+###############################################################################
+
+Project: "bdb_brew"=.\bdb_brew.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
diff --git a/db/build_brew/bdbread.mak b/db/build_brew/bdbread.mak
new file mode 100644
index 000000000..bdcae5254
--- /dev/null
+++ b/db/build_brew/bdbread.mak
@@ -0,0 +1,587 @@
+#============================================================================
+# Name:
+# $(TARGET).MAK
+#
+# Description:
+# Makefile to build the $(TARGET) downloadable module.
+#
+# The following nmake targets are available in this makefile:
+#
+# all - make .elf and .mod image files (default)
+# clean - delete object directory and image files
+# filename.o - make object file
+#
+# The above targets can be made with the following command:
+#
+# nmake /f $(TARGET).mak [target]
+#
+# Assumptions:
+# 1. The environment variable ADSHOME is set to the root directory of the
+# arm tools.
+# 2. The version of ADS is 1.2 or above.
+#
+# Notes:
+# None.
+#
+#
+# Copyright © 2000-2003 QUALCOMM Incorporated.
+# All Rights Reserved.
+# QUALCOMM Proprietary/GTDR
+#
+#----------------------------------------------------------------------------
+#============================================================================
+BREW_HOME =$(BREWDIR)
+ARM_HOME =$(ARMHOME)
+TARGET =D:\DB7588~1.BRE\BUILD_~1\bdb_brew
+OBJS =bdbread.o AEEModGen.o AEEAppGen.o bt_compact.o bt_compare.o bt_conv.o bt_curadj.o bt_cursor.o bt_delete.o bt_method.o bt_open.o bt_put.o bt_rec.o bt_reclaim.o bt_recno.o bt_rsearch.o bt_search.o bt_split.o bt_stat.o btree_auto.o atol.o isalpha.o isdigit.o isprint.o isspace.o printf.o qsort.o rand.o strcasecmp.o strerror.o strncat.o strsep.o strtol.o crypto_stub.o db_byteorder.o db_err.o db_getlong.o db_idspace.o db_log2.o db_shash.o mkpath.o crdel_auto.o crdel_rec.o db.o db_am.o db_auto.o db_cam.o db_cds.o db_conv.o db_dispatch.o db_dup.o db_iface.o db_join.o db_meta.o db_method.o db_open.o db_overflow.o db_pr.o db_rec.o db_reclaim.o db_remove.o db_rename.o db_ret.o db_setid.o db_setlsn.o db_stati.o db_truncate.o db_upg.o db_vrfy_stub.o dbreg.o dbreg_auto.o dbreg_rec.o dbreg_stat.o dbreg_util.o env_alloc.o env_config.o env_failchk.o env_file.o env_method.o env_name.o env_open.o env_recover.o env_region.o env_register.o env_stat.o fileops_auto.o fop_basic.o fop_rec.o fop_util.o hash_func.o hash_stub.o hmac.o sha1.o lock_stub.o log.o log_archive.o log_compare.o log_debug.o log_get.o log_method.o log_put.o log_stat.o mp_alloc.o mp_bh.o mp_fget.o mp_fmethod.o mp_fopen.o mp_fput.o mp_fset.o mp_method.o mp_mvcc.o mp_region.o mp_register.o mp_resize.o mp_stat.o mp_sync.o mp_trickle.o mut_stub.o os_alloc.o os_clock.o os_fid.o os_flock.o os_fzero.o os_getenv.o os_map.o os_region.o os_root.o os_rpath.o os_tmpdir.o os_uid.o os_yield.o ctime.o fclose.o fgetc.o fgets.o fopen.o fwrite.o getcwd.o globals.o localtime.o os_abort.o os_abs.o os_config.o os_dir.o os_errno.o os_handle.o os_mkdir.o os_oflags.o os_open.o os_pid.o os_rename.o os_rw.o os_seek.o os_sleep.o os_stat.o os_truncate.o os_unlink.o time.o qam_stub.o rep_stub.o repmgr_stub.o txn.o txn_auto.o txn_chkpt.o txn_failchk.o txn_method.o txn_rec.o txn_recover.o txn_region.o txn_stat.o txn_util.o xa_stub.o
+APP_INCLUDES = -I ..\build_brew -I ..
+
+#-------------------------------------------------------------------------------
+# Target file name and type definitions
+#-------------------------------------------------------------------------------
+
+EXETYPE = elf # Target image file format
+MODULE = mod # Downloadable module extension
+
+#-------------------------------------------------------------------------------
+# Target compile time symbol definitions
+#
+# Tells the SDK source stuffs that we're building a dynamic app.
+#-------------------------------------------------------------------------------
+
+DYNAPP = -DDYNAMIC_APP
+
+
+#-------------------------------------------------------------------------------
+# Software tool and environment definitions
+#-------------------------------------------------------------------------------
+
+AEESRCPATH = $(BREW_HOME)\src
+AEEINCPATH = $(BREW_HOME)\inc
+
+ARMBIN = $(ARM_HOME)\bin # ARM ADS application directory
+ARMINC = $(ARM_HOME)\include # ARM ADS include file directory
+ARMLIB = $(ARM_HOME)\lib # ARM ADS library directory
+
+ARMCC = $(ARMBIN)\armcc # ARM ADS ARM 32-bit inst. set ANSI C compiler
+LD = $(ARMBIN)\armlink # ARM ADS linker
+HEXTOOL = $(ARMBIN)\fromelf # ARM ADS utility to create hex file from image
+
+OBJ_CMD = -o # Command line option to specify output filename
+
+#-------------------------------------------------------------------------------
+# Processor architecture options
+#-------------------------------------------------------------------------------
+
+CPU = -cpu ARM7TDMI # ARM7TDMI target processor
+
+#-------------------------------------------------------------------------------
+# ARM Procedure Call Standard (APCS) options
+#-------------------------------------------------------------------------------
+
+ROPI = ropi # Read-Only(code) Position independence
+INTERWRK = interwork # Allow ARM-Thumb interworking
+
+APCS = -apcs /$(ROPI)/$(INTERWRK)/norwpi
+
+#-------------------------------------------------------------------------------
+# Additional compile time error checking options
+#-------------------------------------------------------------------------------
+
+CHK = -fa # Check for data flow anomolies
+
+#-------------------------------------------------------------------------------
+# Compiler output options
+#-------------------------------------------------------------------------------
+
+OUT = -c # Object file output only
+
+#-------------------------------------------------------------------------------
+# Compiler/assembler debug options
+#-------------------------------------------------------------------------------
+
+DBG = -g # Enable debug
+
+#-------------------------------------------------------------------------------
+# Compiler optimization options
+#-------------------------------------------------------------------------------
+
+OPT = -Ospace -O2 # Full compiler optimization for space
+
+#-------------------------------------------------------------------------------
+# Compiler code generation options
+#-------------------------------------------------------------------------------
+
+END = -littleend # Compile for little endian memory architecture
+ZA = -zo # LDR may only access 32-bit aligned addresses
+
+CODE = $(END) $(ZA)
+
+
+#-------------------------------------------------------------------------------
+# Include file search path options
+#-------------------------------------------------------------------------------
+
+INC = -I. -I$(AEEINCPATH) $(APP_INCLUDES)
+
+
+#-------------------------------------------------------------------------------
+# Compiler pragma emulation options
+#-------------------------------------------------------------------------------
+
+
+#-------------------------------------------------------------------------------
+# Linker options
+#-------------------------------------------------------------------------------
+
+LINK_CMD = -o #Command line option to specify output file
+ #on linking
+
+ROPILINK = -ropi #Link image as Read-Only Position Independent
+
+LINK_ORDER = -first AEEMod_Load
+
+#-------------------------------------------------------------------------------
+# HEXTOOL options
+#-------------------------------------------------------------------------------
+
+BINFORMAT = -bin
+
+
+#-------------------------------------------------------------------------------
+# Compiler flag definitions
+#-------------------------------------------------------------------------------
+NO_WARNING= -W
+
+CFLAGS0 = $(OUT) $(DYNAPP) $(CPU) $(APCS) $(CODE) $(CHK) $(DBG)
+CFLAGS = $(NO_WARNING) $(CFLAGS0) $(OPT)
+
+#-------------------------------------------------------------------------------
+# Linker flag definitions
+#-------------------------------------------------------------------------------
+
+# the -entry flag is not really needed, but it keeps the linker from reporting
+# warning L6305W (no entry point). The address
+LFLAGS = $(ROPILINK) -rwpi -entry 0x8000#
+
+#----------------------------------------------------------------------------
+# Default target
+#----------------------------------------------------------------------------
+
+all : $(TARGET).$(MODULE)
+
+#----------------------------------------------------------------------------
+# Clean target
+#----------------------------------------------------------------------------
+
+# The object subdirectory, target image file, and target hex file are deleted.
+
+clean :
+ @echo ---------------------------------------------------------------
+ @echo CLEAN
+ -del /f $(OBJS)
+ -del /f $(TARGET).$(EXETYPE)
+ -del /f $(TARGET).$(MODULE)
+ @echo ---------------------------------------------------------------
+
+#============================================================================
+# DEFAULT SUFFIX RULES
+#============================================================================
+
+# The following are the default suffix rules used to compile all objects that
+# are not specifically included in one of the module specific rules defined
+# in the next section.
+
+# The following macros are used to specify the output object file, MSG_FILE
+# symbol definition and input source file on the compile line in the rules
+# defined below.
+
+SRC_FILE = $(@F:.o=.c) # Input source file specification
+OBJ_FILE = $(OBJ_CMD) $(@F) # Output object file specification
+
+.SUFFIXES :
+.SUFFIXES : .o .dep .c
+
+#--------------------------------------------------------------------------
+# C code inference rules
+#----------------------------------------------------------------------------
+
+.c.o:
+ @echo ---------------------------------------------------------------
+ @echo OBJECT $(@F)
+ $(ARMCC) $(CFLAGS) $(INC) $(OBJ_FILE) $(SRC_FILE)
+ @echo ---------------------------------------------------------------
+
+.c.mix:
+ @echo ---------------------------------------------------------------
+ @echo OBJECT $(@F)
+ $(ARMCC) -S -fs $(CFLAGS) $(INC) $(OBJ_FILE) $<
+ @echo ---------------------------------------------------------------
+
+
+{$(AEESRCPATH)}.c.o:
+ @echo ---------------------------------------------------------------
+ @echo OBJECT $(@F)
+ $(ARMCC) $(CFLAGS) $(INC) $(OBJ_FILE) $(AEESRCPATH)\$(SRC_FILE)
+ @echo ---------------------------------------------------------------
+
+
+#===============================================================================
+# MODULE SPECIFIC RULES
+#===============================================================================
+
+APP_OBJS = $(OBJS)
+
+
+#----------------------------------------------------------------------------
+# Lib file targets
+#----------------------------------------------------------------------------
+
+$(TARGET).$(MODULE) : $(TARGET).$(EXETYPE)
+ @echo ---------------------------------------------------------------
+ @echo TARGET $@
+ $(HEXTOOL) $(TARGET).$(EXETYPE) $(BINFORMAT) $(TARGET).$(MODULE)
+
+$(TARGET).$(EXETYPE) : $(APP_OBJS)
+ @echo ---------------------------------------------------------------
+ @echo TARGET $@
+ $(LD) $(LINK_CMD) $(TARGET).$(EXETYPE) $(LFLAGS) $(APP_OBJS) $(LINK_ORDER)
+
+#----------------------------------------------------------------------------
+# Applet Specific Rules
+#----------------------------------------------------------------------------
+
+
+RULE1 = ..\clib
+{$(RULE1)}.c.o:
+ @echo ---------------------------------------------------------------
+ @echo OBJECT $(@F)
+ $(ARMCC) $(CFLAGS) $(INC) $(OBJ_FILE) $(RULE1)\$(SRC_FILE)
+ @echo ---------------------------------------------------------------
+
+
+RULE2 = ..\btree
+{$(RULE2)}.c.o:
+ @echo ---------------------------------------------------------------
+ @echo OBJECT $(@F)
+ $(ARMCC) $(CFLAGS) $(INC) $(OBJ_FILE) $(RULE2)\$(SRC_FILE)
+ @echo ---------------------------------------------------------------
+
+
+RULE3 = ..\db
+{$(RULE3)}.c.o:
+ @echo ---------------------------------------------------------------
+ @echo OBJECT $(@F)
+ $(ARMCC) $(CFLAGS) $(INC) $(OBJ_FILE) $(RULE3)\$(SRC_FILE)
+ @echo ---------------------------------------------------------------
+
+
+RULE4 = ..\common
+{$(RULE4)}.c.o:
+ @echo ---------------------------------------------------------------
+ @echo OBJECT $(@F)
+ $(ARMCC) $(CFLAGS) $(INC) $(OBJ_FILE) $(RULE4)\$(SRC_FILE)
+ @echo ---------------------------------------------------------------
+
+
+RULE5 = ..\os_brew
+{$(RULE5)}.c.o:
+ @echo ---------------------------------------------------------------
+ @echo OBJECT $(@F)
+ $(ARMCC) $(CFLAGS) $(INC) $(OBJ_FILE) $(RULE5)\$(SRC_FILE)
+ @echo ---------------------------------------------------------------
+
+
+RULE6 = ..\env
+{$(RULE6)}.c.o:
+ @echo ---------------------------------------------------------------
+ @echo OBJECT $(@F)
+ $(ARMCC) $(CFLAGS) $(INC) $(OBJ_FILE) $(RULE6)\$(SRC_FILE)
+ @echo ---------------------------------------------------------------
+
+
+RULE7 = ..\dbreg
+{$(RULE7)}.c.o:
+ @echo ---------------------------------------------------------------
+ @echo OBJECT $(@F)
+ $(ARMCC) $(CFLAGS) $(INC) $(OBJ_FILE) $(RULE7)\$(SRC_FILE)
+ @echo ---------------------------------------------------------------
+
+
+RULE8 = ..\fileops
+{$(RULE8)}.c.o:
+ @echo ---------------------------------------------------------------
+ @echo OBJECT $(@F)
+ $(ARMCC) $(CFLAGS) $(INC) $(OBJ_FILE) $(RULE8)\$(SRC_FILE)
+ @echo ---------------------------------------------------------------
+
+
+RULE9 = ..\hash
+{$(RULE9)}.c.o:
+ @echo ---------------------------------------------------------------
+ @echo OBJECT $(@F)
+ $(ARMCC) $(CFLAGS) $(INC) $(OBJ_FILE) $(RULE9)\$(SRC_FILE)
+ @echo ---------------------------------------------------------------
+
+
+RULE10 = ..\hmac
+{$(RULE10)}.c.o:
+ @echo ---------------------------------------------------------------
+ @echo OBJECT $(@F)
+ $(ARMCC) $(CFLAGS) $(INC) $(OBJ_FILE) $(RULE10)\$(SRC_FILE)
+ @echo ---------------------------------------------------------------
+
+
+RULE11 = ..\lock
+{$(RULE11)}.c.o:
+ @echo ---------------------------------------------------------------
+ @echo OBJECT $(@F)
+ $(ARMCC) $(CFLAGS) $(INC) $(OBJ_FILE) $(RULE11)\$(SRC_FILE)
+ @echo ---------------------------------------------------------------
+
+
+RULE12 = ..\log
+{$(RULE12)}.c.o:
+ @echo ---------------------------------------------------------------
+ @echo OBJECT $(@F)
+ $(ARMCC) $(CFLAGS) $(INC) $(OBJ_FILE) $(RULE12)\$(SRC_FILE)
+ @echo ---------------------------------------------------------------
+
+
+RULE13 = ..\mp
+{$(RULE13)}.c.o:
+ @echo ---------------------------------------------------------------
+ @echo OBJECT $(@F)
+ $(ARMCC) $(CFLAGS) $(INC) $(OBJ_FILE) $(RULE13)\$(SRC_FILE)
+ @echo ---------------------------------------------------------------
+
+
+RULE14 = ..\mutex
+{$(RULE14)}.c.o:
+ @echo ---------------------------------------------------------------
+ @echo OBJECT $(@F)
+ $(ARMCC) $(CFLAGS) $(INC) $(OBJ_FILE) $(RULE14)\$(SRC_FILE)
+ @echo ---------------------------------------------------------------
+
+
+RULE15 = ..\os
+{$(RULE15)}.c.o:
+ @echo ---------------------------------------------------------------
+ @echo OBJECT $(@F)
+ $(ARMCC) $(CFLAGS) $(INC) $(OBJ_FILE) $(RULE15)\$(SRC_FILE)
+ @echo ---------------------------------------------------------------
+
+
+RULE16 = ..\qam
+{$(RULE16)}.c.o:
+ @echo ---------------------------------------------------------------
+ @echo OBJECT $(@F)
+ $(ARMCC) $(CFLAGS) $(INC) $(OBJ_FILE) $(RULE16)\$(SRC_FILE)
+ @echo ---------------------------------------------------------------
+
+
+RULE17 = ..\rep
+{$(RULE17)}.c.o:
+ @echo ---------------------------------------------------------------
+ @echo OBJECT $(@F)
+ $(ARMCC) $(CFLAGS) $(INC) $(OBJ_FILE) $(RULE17)\$(SRC_FILE)
+ @echo ---------------------------------------------------------------
+
+
+RULE18 = ..\txn
+{$(RULE18)}.c.o:
+ @echo ---------------------------------------------------------------
+ @echo OBJECT $(@F)
+ $(ARMCC) $(CFLAGS) $(INC) $(OBJ_FILE) $(RULE18)\$(SRC_FILE)
+ @echo ---------------------------------------------------------------
+
+
+RULE19 = ..\xa
+{$(RULE19)}.c.o:
+ @echo ---------------------------------------------------------------
+ @echo OBJECT $(@F)
+ $(ARMCC) $(CFLAGS) $(INC) $(OBJ_FILE) $(RULE19)\$(SRC_FILE)
+ @echo ---------------------------------------------------------------
+RULE20 = ..\bdbread
+{$(RULE20)}.c.o:
+ @echo ---------------------------------------------------------------
+ @echo OBJECT $(@F)
+ $(ARMCC) $(CFLAGS) $(INC) $(OBJ_FILE) $(RULE20)\$(SRC_FILE)
+ @echo ---------------------------------------------------------------
+
+# --------------------------------------------
+# DEPENDENCY LIST, DO NOT EDIT BELOW THIS LINE
+# --------------------------------------------
+
+bdbread.o : ..\bdbread\bdbread.c
+AEEModGen.o : ..\bdbread\AEEModGen.c
+AEEAppGen.o : ..\bdbread\AEEAppGen.c
+bt_compact.o: ..\btree\bt_compact.c
+bt_compare.o: ..\btree\bt_compare.c
+bt_conv.o: ..\btree\bt_conv.c
+bt_curadj.o: ..\btree\bt_curadj.c
+bt_cursor.o: ..\btree\bt_cursor.c
+bt_delete.o: ..\btree\bt_delete.c
+bt_method.o: ..\btree\bt_method.c
+bt_open.o: ..\btree\bt_open.c
+bt_put.o: ..\btree\bt_put.c
+bt_rec.o: ..\btree\bt_rec.c
+bt_reclaim.o: ..\btree\bt_reclaim.c
+bt_recno.o: ..\btree\bt_recno.c
+bt_rsearch.o: ..\btree\bt_rsearch.c
+bt_search.o: ..\btree\bt_search.c
+bt_split.o: ..\btree\bt_split.c
+bt_stat.o: ..\btree\bt_stat.c
+btree_auto.o: ..\btree\btree_auto.c
+atol.o: ..\clib\atol.c
+isalpha.o: ..\clib\isalpha.c
+isdigit.o: ..\clib\isdigit.c
+isprint.o: ..\clib\isprint.c
+isspace.o: ..\clib\isspace.c
+printf.o: ..\clib\printf.c
+qsort.o: ..\clib\qsort.c
+rand.o: ..\clib\rand.c
+strcasecmp.o: ..\clib\strcasecmp.c
+strerror.o: ..\clib\strerror.c
+strncat.o: ..\clib\strncat.c
+strsep.o: ..\clib\strsep.c
+strtol.o: ..\clib\strtol.c
+crypto_stub.o: ..\common\crypto_stub.c
+db_byteorder.o: ..\common\db_byteorder.c
+db_err.o: ..\common\db_err.c
+db_getlong.o: ..\common\db_getlong.c
+db_idspace.o: ..\common\db_idspace.c
+db_log2.o: ..\common\db_log2.c
+db_shash.o: ..\common\db_shash.c
+mkpath.o: ..\common\mkpath.c
+crdel_auto.o: ..\db\crdel_auto.c
+crdel_rec.o: ..\db\crdel_rec.c
+db.o: ..\db\db.c
+db_am.o: ..\db\db_am.c
+db_auto.o: ..\db\db_auto.c
+db_cam.o: ..\db\db_cam.c
+db_cds.o: ..\db\db_cds.c
+db_conv.o: ..\db\db_conv.c
+db_dispatch.o: ..\db\db_dispatch.c
+db_dup.o: ..\db\db_dup.c
+db_iface.o: ..\db\db_iface.c
+db_join.o: ..\db\db_join.c
+db_meta.o: ..\db\db_meta.c
+db_method.o: ..\db\db_method.c
+db_open.o: ..\db\db_open.c
+db_overflow.o: ..\db\db_overflow.c
+db_pr.o: ..\db\db_pr.c
+db_rec.o: ..\db\db_rec.c
+db_reclaim.o: ..\db\db_reclaim.c
+db_remove.o: ..\db\db_remove.c
+db_rename.o: ..\db\db_rename.c
+db_ret.o: ..\db\db_ret.c
+db_setid.o: ..\db\db_setid.c
+db_setlsn.o: ..\db\db_setlsn.c
+db_stati.o: ..\db\db_stati.c
+db_truncate.o: ..\db\db_truncate.c
+db_upg.o: ..\db\db_upg.c
+db_vrfy_stub.o: ..\db\db_vrfy_stub.c
+dbreg.o: ..\dbreg\dbreg.c
+dbreg_auto.o: ..\dbreg\dbreg_auto.c
+dbreg_rec.o: ..\dbreg\dbreg_rec.c
+dbreg_stat.o: ..\dbreg\dbreg_stat.c
+dbreg_util.o: ..\dbreg\dbreg_util.c
+env_alloc.o: ..\env\env_alloc.c
+env_config.o: ..\env\env_config.c
+env_failchk.o: ..\env\env_failchk.c
+env_file.o: ..\env\env_file.c
+env_method.o: ..\env\env_method.c
+env_name.o: ..\env\env_name.c
+env_open.o: ..\env\env_open.c
+env_recover.o: ..\env\env_recover.c
+env_region.o: ..\env\env_region.c
+env_register.o: ..\env\env_register.c
+env_stat.o: ..\env\env_stat.c
+fileops_auto.o: ..\fileops\fileops_auto.c
+fop_basic.o: ..\fileops\fop_basic.c
+fop_rec.o: ..\fileops\fop_rec.c
+fop_util.o: ..\fileops\fop_util.c
+hash_func.o: ..\hash\hash_func.c
+hash_stub.o: ..\hash\hash_stub.c
+hmac.o: ..\hmac\hmac.c
+sha1.o: ..\hmac\sha1.c
+lock_stub.o: ..\lock\lock_stub.c
+log.o: ..\log\log.c
+log_archive.o: ..\log\log_archive.c
+log_compare.o: ..\log\log_compare.c
+log_debug.o: ..\log\log_debug.c
+log_get.o: ..\log\log_get.c
+log_method.o: ..\log\log_method.c
+log_put.o: ..\log\log_put.c
+log_stat.o: ..\log\log_stat.c
+mp_alloc.o: ..\mp\mp_alloc.c
+mp_bh.o: ..\mp\mp_bh.c
+mp_fget.o: ..\mp\mp_fget.c
+mp_fmethod.o: ..\mp\mp_fmethod.c
+mp_fopen.o: ..\mp\mp_fopen.c
+mp_fput.o: ..\mp\mp_fput.c
+mp_fset.o: ..\mp\mp_fset.c
+mp_method.o: ..\mp\mp_method.c
+mp_mvcc.o: ..\mp\mp_mvcc.c
+mp_region.o: ..\mp\mp_region.c
+mp_register.o: ..\mp\mp_register.c
+mp_resize.o: ..\mp\mp_resize.c
+mp_stat.o: ..\mp\mp_stat.c
+mp_sync.o: ..\mp\mp_sync.c
+mp_trickle.o: ..\mp\mp_trickle.c
+mut_stub.o: ..\mutex\mut_stub.c
+os_alloc.o: ..\os\os_alloc.c
+os_clock.o: ..\os\os_clock.c
+os_fid.o: ..\os\os_fid.c
+os_flock.o: ..\os\os_flock.c
+os_fzero.o: ..\os\os_fzero.c
+os_getenv.o: ..\os\os_getenv.c
+os_map.o: ..\os\os_map.c
+os_region.o: ..\os\os_region.c
+os_root.o: ..\os\os_root.c
+os_rpath.o: ..\os\os_rpath.c
+os_tmpdir.o: ..\os\os_tmpdir.c
+os_uid.o: ..\os\os_uid.c
+os_yield.o: ..\os\os_yield.c
+ctime.o: ..\os_brew\ctime.c
+fclose.o: ..\os_brew\fclose.c
+fgetc.o: ..\os_brew\fgetc.c
+fgets.o: ..\os_brew\fgets.c
+fopen.o: ..\os_brew\fopen.c
+fwrite.o: ..\os_brew\fwrite.c
+getcwd.o: ..\os_brew\getcwd.c
+globals.o: ..\os_brew\globals.c
+localtime.o: ..\os_brew\localtime.c
+os_abort.o: ..\os_brew\os_abort.c
+os_abs.o: ..\os_brew\os_abs.c
+os_config.o: ..\os_brew\os_config.c
+os_dir.o: ..\os_brew\os_dir.c
+os_errno.o: ..\os_brew\os_errno.c
+os_handle.o: ..\os_brew\os_handle.c
+os_mkdir.o: ..\os_brew\os_mkdir.c
+os_oflags.o: ..\os_brew\os_oflags.c
+os_open.o: ..\os_brew\os_open.c
+os_pid.o: ..\os_brew\os_pid.c
+os_rename.o: ..\os_brew\os_rename.c
+os_rw.o: ..\os_brew\os_rw.c
+os_seek.o: ..\os_brew\os_seek.c
+os_sleep.o: ..\os_brew\os_sleep.c
+os_stat.o: ..\os_brew\os_stat.c
+os_truncate.o: ..\os_brew\os_truncate.c
+os_unlink.o: ..\os_brew\os_unlink.c
+time.o: ..\os_brew\time.c
+qam_stub.o: ..\qam\qam_stub.c
+rep_stub.o: ..\rep\rep_stub.c
+repmgr_stub.o: ..\repmgr\repmgr_stub.c
+txn.o: ..\txn\txn.c
+txn_auto.o: ..\txn\txn_auto.c
+txn_chkpt.o: ..\txn\txn_chkpt.c
+txn_failchk.o: ..\txn\txn_failchk.c
+txn_method.o: ..\txn\txn_method.c
+txn_rec.o: ..\txn\txn_rec.c
+txn_recover.o: ..\txn\txn_recover.c
+txn_region.o: ..\txn\txn_region.c
+txn_stat.o: ..\txn\txn_stat.c
+txn_util.o: ..\txn\txn_util.c
+xa_stub.o: ..\xa\xa_stub.c
diff --git a/db/build_brew/brew_db.h b/db/build_brew/brew_db.h
new file mode 100644
index 000000000..d9e156867
--- /dev/null
+++ b/db/build_brew/brew_db.h
@@ -0,0 +1,150 @@
+/*-
+ * $Id: brew_db.in,v 1.5 2006/11/15 13:36:48 bostic Exp $
+ *
+ * The following provides the information necessary to build Berkeley DB
+ * on BREW.
+ */
+
+#include <AEEAppGen.h>
+#include <AEEShell.h>
+#include <AEEFile.h>
+#include <AEEStdLib.h>
+
+#include "errno.h"
+#include "db.h"
+#include "clib_port.h"
+
+/*
+ * BREW doesn't have stdio.
+ */
+#define EOF (-1) /* Declare stdio's EOF. */
+#define stderr ((IFile *)1) /* Flag to call DBGPRINTF. */
+#define stdout ((IFile *)1)
+
+/*
+ * POSIX time structure/function compatibility.
+ *
+ * !!!
+ * This is likely wrong, we should probably move all Berkeley DB time-specific
+ * functionality into os/.
+ */
+struct tm {
+ int tm_sec; /* seconds after the minute - [0,59] */
+ int tm_min; /* minutes after the hour - [0,59] */
+ int tm_hour; /* hours since midnight - [0,23] */
+ int tm_mday; /* day of the month - [1,31] */
+ int tm_mon; /* months since January - [0,11] */
+ int tm_year; /* years since 1900 */
+ int tm_wday; /* days since Sunday - [0,6] */
+ int tm_yday; /* days since January 1 - [0,365] */
+ int tm_isdst; /* daylight savings time flag */
+ /*
+ * We don't provide tm_zone or tm_gmtoff because BREW doesn't
+ * provide them.
+ */
+};
+
+/*
+* The ctime() function converts the time pointed to by clock, representing
+* time in seconds since the Epoch to local time in the form of a string.
+*
+* Berkeley DB uses POSIX time values internally.
+*
+* The POSIX time function returns seconds since the Epoch, which was
+* 1970/01/01 00:00:00 UTC.
+*
+* BREW's GETUTCSECONDS() returns the number of seconds since
+* 1980/01/06 00:00:00 UTC.
+*
+* To convert from BREW to POSIX, add the seconds between 1970 and 1980 plus
+* 6 more days.
+*/
+#define BREW_EPOCH_OFFSET (315964800L)
+
+/*
+ * Map ANSI C library functions to BREW specific APIs.
+ */
+#define atoi(a) ATOI(a)
+#define free(a) FREE(a)
+#define malloc(a) MALLOC(a)
+#define memcmp(a, b, c) MEMCMP(a, b, c)
+#define memmove(a, b, c) MEMMOVE(a, b, c)
+#define memset(a, b, c) MEMSET(a, b, c)
+#define realloc(a, b) REALLOC(a, b)
+#define snprintf SNPRINTF
+#define sprintf SPRINTF
+#define strcat(a, b) STRCAT(a, b)
+#define strchr(a, b) STRCHR(a, b)
+#define strcmp(a, b) STRCMP(a, b)
+#define strcpy(a, b) STRCPY(a, b)
+#define strdup(a) STRDUP(a)
+#define strlen(a) STRLEN(a)
+#define strncmp(a, b, c) STRNCMP(a, b, c)
+#define strncpy(a, b, c) STRNCPY(a, b, c)
+#define strrchr(a, b) STRRCHR(a, b)
+#define strtoul(a, b, c) STRTOUL(a, b, c)
+#define vsnprintf(a, b, c, d) VSNPRINTF(a, b, c, d)
+
+/*
+ * !!!
+ * Don't #define memcpy to MEMCPY, even though it exists, because that results
+ * in a C pre-processor loop and compile failure.
+ *
+ * Don't #define memcpy to MEMMOVE directly, that results in failure as well.
+ */
+#define memcpy memmove
+
+/*
+ * BREW does not have concept of 'sync'.
+ *
+ * It depends on the implementation of the BREW on various platforms, but
+ * Mobilus confirms the version of BREW that ships to North America in 3G
+ * models has sync features guaranteeing safe physical writes whenever a
+ * write is performed using BREW API. Therefore, the issue is not on the
+ * applications running top of BREW, but the implementation of BREW itself
+ * that has to be checked in order to provide durability.
+ */
+#define __os_fsync(a, b) (0)
+#define fflush(a) (0)
+
+/*
+ * The ANSI C library functions for which we wrote local versions.
+ */
+int fclose(FILE *);
+int fgetc(FILE *);
+char *fgets(char *, int, FILE *);
+FILE *fopen(const char *, const char *);
+size_t fwrite(const void *, size_t, size_t, FILE *);
+char *getcwd(char *, size_t);
+struct tm *localtime(const time_t *);
+time_t time(time_t *);
+
+/*
+ * FILE_MANAGER_CREATE --
+ * Instantiate file manager instance.
+ */
+#define FILE_MANAGER_CREATE(dbenv, mgr, ret) do { \
+ AEEApplet *__app = (AEEApplet *)GETAPPINSTANCE(); \
+ int __ret; \
+ if ((__ret = ISHELL_CreateInstance(__app->m_pIShell, \
+ AEECLSID_FILEMGR, (void **)&(mgr))) == SUCCESS) \
+ ret = 0; \
+ else { \
+ __db_syserr(dbenv, __ret, "ISHELL_CreateInstance"); \
+ ret = __os_posix_err(__ret); \
+ } \
+} while (0)
+
+/*
+ * FILE_MANAGER_ERR --
+ * Handle file manager method error.
+ */
+#define FILE_MANAGER_ERR(dbenv, mgr, name, op, ret) do { \
+ int __ret; \
+ __ret = IFILEMGR_GetLastError(mgr); \
+ if ((name) == NULL) \
+ __db_syserr(dbenv, __ret, "%s", op); \
+ else \
+ __db_syserr(dbenv, __ret, "%s: %s", name, op); \
+ (ret) = __os_posix_err(__ret); \
+} while (0)
diff --git a/db/build_brew/clib_port.h b/db/build_brew/clib_port.h
new file mode 100644
index 000000000..ad622d9b7
--- /dev/null
+++ b/db/build_brew/clib_port.h
@@ -0,0 +1,203 @@
+/* DO NOT EDIT: automatically built from dist/clib_port.in. */
+/*
+ * Minimum/maximum values for various types.
+ */
+#ifndef UINT16_MAX /* Maximum 16-bit unsigned. */
+#define UINT16_MAX 65535
+#endif
+#ifndef UINT32_MAX /* Maximum 32-bit unsigned. */
+#define UINT32_MAX 4294967295U
+#endif
+
+#ifndef INT_MAX
+#if SIZEOF_INT == 4
+#define INT_MAX 2147483647
+#elif SIZEOF_INT == 8
+#define INT_MAX 9223372036854775807
+#endif
+#endif
+
+#ifndef INT_MIN /* minimum (signed) int value */
+#define INT_MIN (-INT_MAX-1)
+#endif
+
+#ifndef UINT_MAX /* maximum (signed) int value */
+#if SIZEOF_INT == 4
+#define UINT_MAX 4294967295U
+#elif SIZEOF_INT == 8
+#define UINT_MAX 18446744073709551615U
+#endif
+#endif
+
+#ifndef LONG_MAX /* maximum (signed) long value */
+#if SIZEOF_LONG == 4
+#define LONG_MAX 2147483647
+#elif SIZEOF_LONG == 8
+#define LONG_MAX 9223372036854775807L
+#endif
+#endif
+
+#ifndef LONG_MIN /* minimum (signed) long value */
+#define LONG_MIN (-LONG_MAX-1)
+#endif
+
+#ifndef ULONG_MAX /* maximum (unsigned) long value */
+#if SIZEOF_LONG == 4
+#define ULONG_MAX 4294967295U
+#elif SIZEOF_LONG == 8
+#define ULONG_MAX 18446744073709551615UL
+#endif
+#endif
+
+#if defined(HAVE_64BIT_TYPES)
+/*
+ * Override the system's 64-bit min/max constants. AIX's 32-bit compiler can
+ * handle 64-bit values, but the system's constants don't include the LL/ULL
+ * suffix, and so can't be compiled using the 32-bit compiler.
+ */
+#undef INT64_MAX
+#undef INT64_MIN
+#undef UINT64_MAX
+
+#ifdef DB_WIN32
+#define INT64_MAX _I64_MAX
+#define INT64_MIN _I64_MIN
+#define UINT64_MAX _UI64_MAX
+#else
+#define INT64_MAX 9223372036854775807LL
+#define INT64_MIN (-INT64_MAX-1)
+#define UINT64_MAX 18446744073709551615ULL
+#endif /* DB_WIN32 */
+
+#endif /* HAVE_64BIT_TYPES */
+
+/*
+ * Exit success/failure macros.
+ */
+#ifndef HAVE_EXIT_SUCCESS
+#define EXIT_FAILURE 1
+#define EXIT_SUCCESS 0
+#endif
+
+/*
+ * Don't step on the namespace. Other libraries may have their own
+ * implementations of these functions, we don't want to use their
+ * implementations or force them to use ours based on the load order.
+ */
+#ifndef HAVE_ATOI
+#define atoi __db_Catoi
+#endif
+#ifndef HAVE_ATOL
+#define atol __db_Catol
+#endif
+#ifndef HAVE_FCLOSE
+#define fclose __db_Cfclose
+#endif
+#ifndef HAVE_FGETC
+#define fgetc __db_Cfgetc
+#endif
+#ifndef HAVE_FGETS
+#define fgets __db_Cfgets
+#endif
+#ifndef HAVE_FOPEN
+#define fopen __db_Cfopen
+#endif
+#ifndef HAVE_FWRITE
+#define fwrite __db_Cfwrite
+#endif
+#ifndef HAVE_GETADDRINFO
+#define freeaddrinfo(a) __db_Cfreeaddrinfo(a)
+#define getaddrinfo(a, b, c, d) __db_Cgetaddrinfo(a, b, c, d)
+#endif
+#ifndef HAVE_GETCWD
+#define getcwd __db_Cgetcwd
+#endif
+#ifndef HAVE_GETOPT
+#define getopt __db_Cgetopt
+#define optarg __db_Coptarg
+#define opterr __db_Copterr
+#define optind __db_Coptind
+#define optopt __db_Coptopt
+#define optreset __db_Coptreset
+#endif
+#ifndef HAVE_ISALPHA
+#define isalpha __db_Cisalpha
+#endif
+#ifndef HAVE_ISDIGIT
+#define isdigit __db_Cisdigit
+#endif
+#ifndef HAVE_ISPRINT
+#define isprint __db_Cisprint
+#endif
+#ifndef HAVE_ISSPACE
+#define isspace __db_Cisspace
+#endif
+#ifndef HAVE_LOCALTIME
+#define localtime __db_Clocaltime
+#endif
+#ifndef HAVE_MEMCMP
+#define memcmp __db_Cmemcmp
+#endif
+#ifndef HAVE_MEMCPY
+#define memcpy __db_Cmemcpy
+#endif
+#ifndef HAVE_MEMMOVE
+#define memmove __db_Cmemmove
+#endif
+#ifndef HAVE_PRINTF
+#define printf __db_Cprintf
+#define fprintf __db_Cfprintf
+#endif
+#ifndef HAVE_QSORT
+#define qsort __db_Cqsort
+#endif
+#ifndef HAVE_RAISE
+#define raise __db_Craise
+#endif
+#ifndef HAVE_RAND
+#define rand __db_Crand
+#define srand __db_Csrand
+#endif
+#ifndef HAVE_SNPRINTF
+#define snprintf __db_Csnprintf
+#endif
+#ifndef HAVE_STRCASECMP
+#define strcasecmp __db_Cstrcasecmp
+#define strncasecmp __db_Cstrncasecmp
+#endif
+#ifndef HAVE_STRCAT
+#define strcat __db_Cstrcat
+#endif
+#ifndef HAVE_STRCHR
+#define strchr __db_Cstrchr
+#endif
+#ifndef HAVE_STRDUP
+#define strdup __db_Cstrdup
+#endif
+#ifndef HAVE_STRERROR
+#define strerror __db_Cstrerror
+#endif
+#ifndef HAVE_STRNCAT
+#define strncat __db_Cstrncat
+#endif
+#ifndef HAVE_STRNCMP
+#define strncmp __db_Cstrncmp
+#endif
+#ifndef HAVE_STRRCHR
+#define strrchr __db_Cstrrchr
+#endif
+#ifndef HAVE_STRSEP
+#define strsep __db_Cstrsep
+#endif
+#ifndef HAVE_STRTOL
+#define strtol __db_Cstrtol
+#endif
+#ifndef HAVE_STRTOUL
+#define strtoul __db_Cstrtoul
+#endif
+#ifndef HAVE_TIME
+#define time __db_Ctime
+#endif
+#ifndef HAVE_VSNPRINTF
+#define vsnprintf __db_Cvsnprintf
+#endif
diff --git a/db/build_brew/db.h b/db/build_brew/db.h
new file mode 100644
index 000000000..ae8b49363
--- /dev/null
+++ b/db/build_brew/db.h
@@ -0,0 +1,2663 @@
+/* DO NOT EDIT: automatically built by dist/s_brew. */
+/*
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
+ *
+ * $Id: db.h,v 1.79 2007/07/17 14:50:17 bostic Exp $
+ *
+ * db.h include file layout:
+ * General.
+ * Database Environment.
+ * Locking subsystem.
+ * Logging subsystem.
+ * Shared buffer cache (mpool) subsystem.
+ * Transaction subsystem.
+ * Access methods.
+ * Access method cursors.
+ * Dbm/Ndbm, Hsearch historic interfaces.
+ */
+
+#ifndef _DB_H_
+#define _DB_H_
+
+#include <AEEFile.h>
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+
+#undef __P
+#define __P(protos) protos
+
+/*
+ * Berkeley DB version information.
+ */
+#define DB_VERSION_MAJOR 4
+#define DB_VERSION_MINOR 6
+#define DB_VERSION_PATCH 18
+#define DB_VERSION_STRING "Berkeley DB 4.6.18: (July 17, 2007)"
+
+/*
+ * !!!
+ * Berkeley DB uses specifically sized types. If they're not provided by
+ * the system, typedef them here.
+ *
+ * We protect them against multiple inclusion using __BIT_TYPES_DEFINED__,
+ * as does BIND and Kerberos, since we don't know for sure what #include
+ * files the user is using.
+ *
+ * !!!
+ * We also provide the standard u_int, u_long etc., if they're not provided
+ * by the system.
+ */
+#ifndef __BIT_TYPES_DEFINED__
+#define __BIT_TYPES_DEFINED__
+typedef unsigned char u_int8_t;
+typedef short int16_t;
+typedef unsigned short u_int16_t;
+typedef int int32_t;
+typedef unsigned int u_int32_t;
+#endif
+
+typedef unsigned char u_char;
+typedef unsigned int u_int;
+typedef unsigned long u_long;
+typedef unsigned short u_short;
+
+/*
+ * Missing ANSI types.
+ *
+ * uintmax_t --
+ * Largest unsigned type, used to align structures in memory. We don't store
+ * floating point types in structures, so integral types should be sufficient
+ * (and we don't have to worry about systems that store floats in other than
+ * power-of-2 numbers of bytes). Additionally this fixes compilers that rewrite
+ * structure assignments and ANSI C memcpy calls to be in-line instructions
+ * that happen to require alignment.
+ *
+ * uintptr_t --
+ * Unsigned type that's the same size as a pointer. There are places where
+ * DB modifies pointers by discarding the bottom bits to guarantee alignment.
+ * We can't use uintmax_t, it may be larger than the pointer, and compilers
+ * get upset about that. So far we haven't run on any machine where there's
+ * no unsigned type the same size as a pointer -- here's hoping.
+ */
+typedef unsigned long uintmax_t;
+typedef unsigned long uintptr_t;
+
+typedef IFile FILE;
+typedef u_int32_t off_t;
+typedef int pid_t;
+typedef unsigned int size_t;
+typedef int ssize_t;
+typedef long time_t;
+
+/*
+ * Sequences are only available on machines with 64-bit integral types.
+ */
+typedef int32_t db_seq_t;
+
+/* Thread and process identification. */
+typedef uintmax_t db_threadid_t;
+
+/* Basic types that are exported or quasi-exported. */
+typedef u_int32_t db_pgno_t; /* Page number type. */
+typedef u_int16_t db_indx_t; /* Page offset type. */
+#define DB_MAX_PAGES 0xffffffff /* >= # of pages in a file */
+
+typedef u_int32_t db_recno_t; /* Record number type. */
+#define DB_MAX_RECORDS 0xffffffff /* >= # of records in a tree */
+
+typedef u_int32_t db_timeout_t; /* Type of a timeout. */
+
+/*
+ * Region offsets are the difference between a pointer in a region and the
+ * region's base address. With private environments, both addresses are the
+ * result of calling malloc, and we can't assume anything about what malloc
+ * will return, so region offsets have to be able to hold differences between
+ * arbitrary pointers.
+ */
+typedef uintptr_t roff_t;
+
+/*
+ * Forward structure declarations, so we can declare pointers and
+ * applications can get type checking.
+ */
+struct __db; typedef struct __db DB;
+struct __db_bt_stat; typedef struct __db_bt_stat DB_BTREE_STAT;
+struct __db_cipher; typedef struct __db_cipher DB_CIPHER;
+struct __db_compact; typedef struct __db_compact DB_COMPACT;
+struct __db_dbt; typedef struct __db_dbt DBT;
+struct __db_env; typedef struct __db_env DB_ENV;
+struct __db_h_stat; typedef struct __db_h_stat DB_HASH_STAT;
+struct __db_ilock; typedef struct __db_ilock DB_LOCK_ILOCK;
+struct __db_lock_stat; typedef struct __db_lock_stat DB_LOCK_STAT;
+struct __db_lock_hstat; typedef struct __db_lock_hstat DB_LOCK_HSTAT;
+struct __db_lock_u; typedef struct __db_lock_u DB_LOCK;
+struct __db_locker; typedef struct __db_locker DB_LOCKER;
+struct __db_lockreq; typedef struct __db_lockreq DB_LOCKREQ;
+struct __db_locktab; typedef struct __db_locktab DB_LOCKTAB;
+struct __db_log; typedef struct __db_log DB_LOG;
+struct __db_log_cursor; typedef struct __db_log_cursor DB_LOGC;
+struct __db_log_stat; typedef struct __db_log_stat DB_LOG_STAT;
+struct __db_lsn; typedef struct __db_lsn DB_LSN;
+struct __db_mpool; typedef struct __db_mpool DB_MPOOL;
+struct __db_mpool_fstat;typedef struct __db_mpool_fstat DB_MPOOL_FSTAT;
+struct __db_mpool_stat; typedef struct __db_mpool_stat DB_MPOOL_STAT;
+struct __db_mpoolfile; typedef struct __db_mpoolfile DB_MPOOLFILE;
+struct __db_mutex_stat; typedef struct __db_mutex_stat DB_MUTEX_STAT;
+struct __db_mutex_t; typedef struct __db_mutex_t DB_MUTEX;
+struct __db_mutexmgr; typedef struct __db_mutexmgr DB_MUTEXMGR;
+struct __db_preplist; typedef struct __db_preplist DB_PREPLIST;
+struct __db_qam_stat; typedef struct __db_qam_stat DB_QUEUE_STAT;
+struct __db_rep; typedef struct __db_rep DB_REP;
+struct __db_rep_stat; typedef struct __db_rep_stat DB_REP_STAT;
+struct __db_repmgr_site; \
+ typedef struct __db_repmgr_site DB_REPMGR_SITE;
+struct __db_repmgr_stat; \
+ typedef struct __db_repmgr_stat DB_REPMGR_STAT;
+struct __db_seq_record; typedef struct __db_seq_record DB_SEQ_RECORD;
+struct __db_seq_stat; typedef struct __db_seq_stat DB_SEQUENCE_STAT;
+struct __db_sequence; typedef struct __db_sequence DB_SEQUENCE;
+struct __db_txn; typedef struct __db_txn DB_TXN;
+struct __db_txn_active; typedef struct __db_txn_active DB_TXN_ACTIVE;
+struct __db_txn_stat; typedef struct __db_txn_stat DB_TXN_STAT;
+struct __db_txnmgr; typedef struct __db_txnmgr DB_TXNMGR;
+struct __dbc; typedef struct __dbc DBC;
+struct __dbc_internal; typedef struct __dbc_internal DBC_INTERNAL;
+struct __fh_t; typedef struct __fh_t DB_FH;
+struct __fname; typedef struct __fname FNAME;
+struct __key_range; typedef struct __key_range DB_KEY_RANGE;
+struct __mpoolfile; typedef struct __mpoolfile MPOOLFILE;
+
+/* Key/data structure -- a Data-Base Thang. */
+struct __db_dbt {
+ void *data; /* Key/data */
+ u_int32_t size; /* key/data length */
+
+ u_int32_t ulen; /* RO: length of user buffer. */
+ u_int32_t dlen; /* RO: get/put record length. */
+ u_int32_t doff; /* RO: get/put record offset. */
+
+ void *app_data;
+
+#define DB_DBT_APPMALLOC 0x001 /* Callback allocated memory. */
+#define DB_DBT_DUPOK 0x002 /* Insert if duplicate. */
+#define DB_DBT_ISSET 0x004 /* Lower level calls set value. */
+#define DB_DBT_MALLOC 0x008 /* Return in malloc'd memory. */
+#define DB_DBT_MULTIPLE 0x010 /* References multiple records. */
+#define DB_DBT_PARTIAL 0x020 /* Partial put/get. */
+#define DB_DBT_REALLOC 0x040 /* Return in realloc'd memory. */
+#define DB_DBT_USERCOPY 0x080 /* Use the user-supplied callback. */
+#define DB_DBT_USERMEM 0x100 /* Return in user's memory. */
+ u_int32_t flags;
+};
+
+/*
+ * Common flags --
+ * Interfaces which use any of these common flags should never have
+ * interface specific flags in this range.
+ */
+#define DB_CREATE 0x0000001 /* Create file as necessary. */
+#define DB_DURABLE_UNKNOWN 0x0000002 /* Durability on open (internal). */
+#define DB_FORCE 0x0000004 /* Force (anything). */
+#define DB_MULTIVERSION 0x0000008 /* Multiversion concurrency control. */
+#define DB_NOMMAP 0x0000010 /* Don't mmap underlying file. */
+#define DB_RDONLY 0x0000020 /* Read-only (O_RDONLY). */
+#define DB_RECOVER 0x0000040 /* Run normal recovery. */
+#define DB_THREAD 0x0000080 /* Applications are threaded. */
+#define DB_TRUNCATE 0x0000100 /* Discard existing DB (O_TRUNC). */
+#define DB_TXN_NOSYNC 0x0000200 /* Do not sync log on commit. */
+#define DB_TXN_NOWAIT 0x0000400 /* Do not wait for locks. */
+#define DB_TXN_NOT_DURABLE 0x0000800 /* Do not log changes. */
+#define DB_TXN_WRITE_NOSYNC 0x0001000 /* Write the log but don't sync. */
+#define DB_SPARE_FLAG 0x0002000 /* Spare. */
+
+/*
+ * Common flags --
+ * Interfaces which use any of these common flags should never have
+ * interface specific flags in this range.
+ *
+ * DB_AUTO_COMMIT:
+ * DB_ENV->set_flags, DB->open
+ * (Note: until the 4.3 release, legal to DB->associate, DB->del,
+ * DB->put, DB->remove, DB->rename and DB->truncate, and others.)
+ * DB_READ_COMMITTED:
+ * DB->cursor, DB->get, DB->join, DBcursor->get, DB_ENV->txn_begin
+ * DB_READ_UNCOMMITTED:
+ * DB->cursor, DB->get, DB->join, DB->open, DBcursor->get,
+ * DB_ENV->txn_begin
+ * DB_TXN_SNAPSHOT:
+ * DB_ENV->set_flags, DB_ENV->txn_begin, DB->cursor
+ *
+ * !!!
+ * The DB_READ_COMMITTED and DB_READ_UNCOMMITTED bit masks can't be changed
+ * without also changing the masks for the flags that can be OR'd into DB
+ * access method and cursor operation values.
+ */
+#define DB_IGNORE_LEASE 0x01000000/* Ignore leases. */
+#define DB_AUTO_COMMIT 0x02000000/* Implied transaction. */
+
+#define DB_READ_COMMITTED 0x04000000/* Degree 2 isolation. */
+#define DB_DEGREE_2 0x04000000/* Historic name. */
+
+#define DB_READ_UNCOMMITTED 0x08000000/* Degree 1 isolation. */
+#define DB_DIRTY_READ 0x08000000/* Historic name. */
+
+#define DB_TXN_SNAPSHOT 0x10000000/* Snapshot isolation. */
+
+/*
+ * Flags common to db_env_create and db_create.
+ */
+#define DB_CXX_NO_EXCEPTIONS 0x0000001 /* C++: return error values. */
+
+/*
+ * Flags private to db_env_create.
+ * Shared flags up to 0x0000001 */
+#define DB_RPCCLIENT 0x0000002 /* An RPC client environment. */
+
+/*
+ * Flags private to db_create.
+ * Shared flags up to 0x0000001 */
+#define DB_XA_CREATE 0x0000002 /* Open in an XA environment. */
+
+/*
+ * Flags shared by DB_ENV->remove and DB_ENV->open.
+ * Shared flags up to 0x0002000 */
+#define DB_USE_ENVIRON 0x0004000 /* Use the environment. */
+#define DB_USE_ENVIRON_ROOT 0x0008000 /* Use the environment if root. */
+/*
+ * Flags private to DB_ENV->open.
+ */
+#define DB_INIT_CDB 0x0010000 /* Concurrent Access Methods. */
+#define DB_INIT_LOCK 0x0020000 /* Initialize locking. */
+#define DB_INIT_LOG 0x0040000 /* Initialize logging. */
+#define DB_INIT_MPOOL 0x0080000 /* Initialize mpool. */
+#define DB_INIT_REP 0x0100000 /* Initialize replication. */
+#define DB_INIT_TXN 0x0200000 /* Initialize transactions. */
+#define DB_LOCKDOWN 0x0400000 /* Lock memory into physical core. */
+#define DB_PRIVATE 0x0800000 /* DB_ENV is process local. */
+#define DB_RECOVER_FATAL 0x1000000 /* Run catastrophic recovery. */
+#define DB_REGISTER 0x2000000 /* Multi-process registry. */
+#define DB_SYSTEM_MEM 0x4000000 /* Use system-backed memory. */
+
+#define DB_JOINENV 0x0 /* Compatibility. */
+
+/*
+ * Flags private to DB->open.
+ * Shared flags up to 0x0002000 */
+#define DB_EXCL 0x0004000 /* Exclusive open (O_EXCL). */
+#define DB_FCNTL_LOCKING 0x0008000 /* UNDOC: fcntl(2) locking. */
+#define DB_NO_AUTO_COMMIT 0x0010000 /* Override env-wide AUTOCOMMIT. */
+#define DB_RDWRMASTER 0x0020000 /* UNDOC: allow subdb master open R/W */
+#define DB_WRITEOPEN 0x0040000 /* UNDOC: open with write lock. */
+
+/*
+ * Flags private to DB->associate.
+ * Shared flags up to 0x0002000 */
+#define DB_IMMUTABLE_KEY 0x0004000 /* Secondary key is immutable. */
+/* Shared flags at 0x1000000 */
+
+/*
+ * Flags private to DB_ENV->txn_begin.
+ * Shared flags up to 0x0002000 */
+#define DB_TXN_SYNC 0x0004000 /* Always sync log on commit. */
+#define DB_TXN_WAIT 0x0008000 /* Always wait for locks in this TXN. */
+
+/*
+ * Flags private to DB_ENV->txn_checkpoint.
+ * Shared flags up to 0x0002000 */
+#define DB_CKP_INTERNAL 0x0004000 /* Internally generated checkpoint. */
+
+/*
+ * Flags private to DB_ENV->set_encrypt.
+ */
+#define DB_ENCRYPT_AES 0x0000001 /* AES, assumes SHA1 checksum */
+
+/*
+ * Flags private to DB_ENV->set_flags.
+ * Shared flags up to 0x00002000 */
+#define DB_CDB_ALLDB 0x00004000/* Set CDB locking per environment. */
+#define DB_DIRECT_DB 0x00008000/* Don't buffer databases in the OS. */
+#define DB_DIRECT_LOG 0x00010000/* Don't buffer log files in the OS. */
+#define DB_DSYNC_DB 0x00020000/* Set O_DSYNC on the databases. */
+#define DB_DSYNC_LOG 0x00040000/* Set O_DSYNC on the log. */
+#define DB_LOG_AUTOREMOVE 0x00080000/* Automatically remove log files. */
+#define DB_LOG_INMEMORY 0x00100000/* Store logs in buffers in memory. */
+#define DB_NOLOCKING 0x00200000/* Set locking/mutex behavior. */
+#define DB_NOPANIC 0x00400000/* Set panic state per DB_ENV. */
+#define DB_OVERWRITE 0x00800000/* Overwrite unlinked region files. */
+#define DB_PANIC_ENVIRONMENT 0x01000000/* Set panic state per environment. */
+/* Shared flags at 0x02000000 */
+/* Shared flags at 0x04000000 */
+/* Shared flags at 0x08000000 */
+/* Shared flags at 0x10000000 */
+#define DB_REGION_INIT 0x20000000/* Page-fault regions on open. */
+#define DB_TIME_NOTGRANTED 0x40000000/* Return NOTGRANTED on timeout. */
+#define DB_YIELDCPU 0x80000000/* Yield the CPU (a lot). */
+
+/*
+ * Flags private to DB->set_feedback's callback.
+ */
+#define DB_UPGRADE 0x0000001 /* Upgrading. */
+#define DB_VERIFY 0x0000002 /* Verifying. */
+
+/*
+ * Flags private to DB->compact.
+ * Shared flags up to 0x00002000
+ */
+#define DB_FREELIST_ONLY 0x00004000 /* Just sort and truncate. */
+#define DB_FREE_SPACE 0x00008000 /* Free space . */
+#define DB_COMPACT_FLAGS \
+ (DB_FREELIST_ONLY | DB_FREE_SPACE)
+
+/*
+ * Flags private to DB_MPOOLFILE->open.
+ * Shared flags up to 0x0002000 */
+#define DB_DIRECT 0x0004000 /* Don't buffer the file in the OS. */
+#define DB_EXTENT 0x0008000 /* internal: dealing with an extent. */
+#define DB_ODDFILESIZE 0x0010000 /* Truncate file to N * pgsize. */
+
+/*
+ * Flags private to DB->set_flags.
+ * Shared flags up to 0x00002000 */
+#define DB_CHKSUM 0x00004000 /* Do checksumming */
+#define DB_DUP 0x00008000 /* Btree, Hash: duplicate keys. */
+#define DB_DUPSORT 0x00010000 /* Btree, Hash: duplicate keys. */
+#define DB_ENCRYPT 0x00020000 /* Btree, Hash: duplicate keys. */
+#define DB_INORDER 0x00040000 /* Queue: strict ordering on consume */
+#define DB_RECNUM 0x00080000 /* Btree: record numbers. */
+#define DB_RENUMBER 0x00100000 /* Recno: renumber on insert/delete. */
+#define DB_REVSPLITOFF 0x00200000 /* Btree: turn off reverse splits. */
+#define DB_SNAPSHOT 0x00400000 /* Recno: snapshot the input. */
+
+/*
+ * Flags private to the DB_ENV->stat_print, DB->stat and DB->stat_print methods.
+ */
+#define DB_FAST_STAT 0x0000001 /* Don't traverse the database. */
+#define DB_STAT_ALL 0x0000002 /* Print: Everything. */
+#define DB_STAT_CLEAR 0x0000004 /* Clear stat after returning values. */
+#define DB_STAT_LOCK_CONF 0x0000008 /* Print: Lock conflict matrix. */
+#define DB_STAT_LOCK_LOCKERS 0x0000010 /* Print: Lockers. */
+#define DB_STAT_LOCK_OBJECTS 0x0000020 /* Print: Lock objects. */
+#define DB_STAT_LOCK_PARAMS 0x0000040 /* Print: Lock parameters. */
+#define DB_STAT_MEMP_HASH 0x0000080 /* Print: Mpool hash buckets. */
+#define DB_STAT_NOERROR 0x0000100 /* Internal: continue on error. */
+#define DB_STAT_SUBSYSTEM 0x0000200 /* Print: Subsystems too. */
+
+/*
+ * Flags private to DB->join.
+ */
+#define DB_JOIN_NOSORT 0x0000001 /* Don't try to optimize join. */
+
+/*
+ * Flags private to DB->verify.
+ */
+#define DB_AGGRESSIVE 0x0000001 /* Salvage whatever could be data.*/
+#define DB_NOORDERCHK 0x0000002 /* Skip sort order/hashing check. */
+#define DB_ORDERCHKONLY 0x0000004 /* Only perform the order check. */
+#define DB_PR_PAGE 0x0000008 /* Show page contents (-da). */
+#define DB_PR_RECOVERYTEST 0x0000010 /* Recovery test (-dr). */
+#define DB_PRINTABLE 0x0000020 /* Use printable format for salvage. */
+#define DB_SALVAGE 0x0000040 /* Salvage what looks like data. */
+#define DB_UNREF 0x0000080 /* Report unreferenced pages. */
+/*
+ * !!!
+ * These must not go over 0x8000, or they will collide with the flags
+ * used by __bam_vrfy_subtree.
+ */
+
+/*
+ * Flags private to DB->rep_set_transport's send callback.
+ */
+#define DB_REP_ANYWHERE 0x0000001 /* Message can be serviced anywhere. */
+#define DB_REP_NOBUFFER 0x0000002 /* Do not buffer this message. */
+#define DB_REP_PERMANENT 0x0000004 /* Important--app. may want to flush. */
+#define DB_REP_REREQUEST 0x0000008 /* This msg already been requested. */
+
+/*******************************************************
+ * Mutexes.
+ *******************************************************/
+typedef u_int32_t db_mutex_t;
+
+/*
+ * Flag arguments for DbEnv.mutex_alloc, DbEnv.is_alive and for the
+ * DB_MUTEX structure.
+ */
+#define DB_MUTEX_ALLOCATED 0x01 /* Mutex currently allocated. */
+#define DB_MUTEX_LOCKED 0x02 /* Mutex currently locked. */
+#define DB_MUTEX_LOGICAL_LOCK 0x04 /* Mutex backs a database lock. */
+#define DB_MUTEX_PROCESS_ONLY 0x08 /* Mutex private to a process. */
+#define DB_MUTEX_SELF_BLOCK 0x10 /* Must be able to block self. */
+
+struct __db_mutex_stat {
+ /* The following fields are maintained in the region's copy. */
+ u_int32_t st_mutex_align; /* Mutex alignment */
+ u_int32_t st_mutex_tas_spins; /* Mutex test-and-set spins */
+ u_int32_t st_mutex_cnt; /* Mutex count */
+ u_int32_t st_mutex_free; /* Available mutexes */
+ u_int32_t st_mutex_inuse; /* Mutexes in use */
+ u_int32_t st_mutex_inuse_max; /* Maximum mutexes ever in use */
+
+ /* The following fields are filled-in from other places. */
+#ifndef __TEST_DB_NO_STATISTICS
+ u_int32_t st_region_wait; /* Region lock granted after wait. */
+ u_int32_t st_region_nowait; /* Region lock granted without wait. */
+ roff_t st_regsize; /* Region size. */
+#endif
+};
+
+/* This is the length of the buffer passed to DB_ENV->thread_id_string() */
+#define DB_THREADID_STRLEN 128
+
+/*******************************************************
+ * Locking.
+ *******************************************************/
+#define DB_LOCKVERSION 1
+
+#define DB_FILE_ID_LEN 20 /* Unique file ID length. */
+
+/*
+ * Deadlock detector modes; used in the DB_ENV structure to configure the
+ * locking subsystem.
+ */
+#define DB_LOCK_NORUN 0
+#define DB_LOCK_DEFAULT 1 /* Default policy. */
+#define DB_LOCK_EXPIRE 2 /* Only expire locks, no detection. */
+#define DB_LOCK_MAXLOCKS 3 /* Select locker with max locks. */
+#define DB_LOCK_MAXWRITE 4 /* Select locker with max writelocks. */
+#define DB_LOCK_MINLOCKS 5 /* Select locker with min locks. */
+#define DB_LOCK_MINWRITE 6 /* Select locker with min writelocks. */
+#define DB_LOCK_OLDEST 7 /* Select oldest locker. */
+#define DB_LOCK_RANDOM 8 /* Select random locker. */
+#define DB_LOCK_YOUNGEST 9 /* Select youngest locker. */
+
+/* Flag values for lock_vec(), lock_get(). */
+#define DB_LOCK_ABORT 0x001 /* Internal: Lock during abort. */
+#define DB_LOCK_NOWAIT 0x002 /* Don't wait on unavailable lock. */
+#define DB_LOCK_RECORD 0x004 /* Internal: record lock. */
+#define DB_LOCK_SET_TIMEOUT 0x008 /* Internal: set lock timeout. */
+#define DB_LOCK_SWITCH 0x010 /* Internal: switch existing lock. */
+#define DB_LOCK_UPGRADE 0x020 /* Internal: upgrade existing lock. */
+
+/* Flag values for DbEnv.set_timeout. */
+#define DB_SET_LOCK_TIMEOUT 1 /* Set lock timeout */
+#define DB_SET_TXN_NOW 2 /* Timeout lock now (internal) */
+#define DB_SET_TXN_TIMEOUT 3 /* Set transaction timeout */
+
+/*
+ * Simple R/W lock modes and for multi-granularity intention locking.
+ *
+ * !!!
+ * These values are NOT random, as they are used as an index into the lock
+ * conflicts arrays, i.e., DB_LOCK_IWRITE must be == 3, and DB_LOCK_IREAD
+ * must be == 4.
+ */
+typedef enum {
+ DB_LOCK_NG=0, /* Not granted. */
+ DB_LOCK_READ=1, /* Shared/read. */
+ DB_LOCK_WRITE=2, /* Exclusive/write. */
+ DB_LOCK_WAIT=3, /* Wait for event */
+ DB_LOCK_IWRITE=4, /* Intent exclusive/write. */
+ DB_LOCK_IREAD=5, /* Intent to share/read. */
+ DB_LOCK_IWR=6, /* Intent to read and write. */
+ DB_LOCK_READ_UNCOMMITTED=7, /* Degree 1 isolation. */
+ DB_LOCK_WWRITE=8 /* Was Written. */
+} db_lockmode_t;
+
+/*
+ * Request types.
+ */
+typedef enum {
+ DB_LOCK_DUMP=0, /* Display held locks. */
+ DB_LOCK_GET=1, /* Get the lock. */
+ DB_LOCK_GET_TIMEOUT=2, /* Get lock with a timeout. */
+ DB_LOCK_INHERIT=3, /* Pass locks to parent. */
+ DB_LOCK_PUT=4, /* Release the lock. */
+ DB_LOCK_PUT_ALL=5, /* Release locker's locks. */
+ DB_LOCK_PUT_OBJ=6, /* Release locker's locks on obj. */
+ DB_LOCK_PUT_READ=7, /* Release locker's read locks. */
+ DB_LOCK_TIMEOUT=8, /* Force a txn to timeout. */
+ DB_LOCK_TRADE=9, /* Trade locker ids on a lock. */
+ DB_LOCK_UPGRADE_WRITE=10 /* Upgrade writes for dirty reads. */
+} db_lockop_t;
+
+/*
+ * Status of a lock.
+ */
+typedef enum {
+ DB_LSTAT_ABORTED=1, /* Lock belongs to an aborted txn. */
+ DB_LSTAT_EXPIRED=2, /* Lock has expired. */
+ DB_LSTAT_FREE=3, /* Lock is unallocated. */
+ DB_LSTAT_HELD=4, /* Lock is currently held. */
+ DB_LSTAT_PENDING=5, /* Lock was waiting and has been
+ * promoted; waiting for the owner
+ * to run and upgrade it to held. */
+ DB_LSTAT_WAITING=6 /* Lock is on the wait queue. */
+}db_status_t;
+
+/* Lock statistics structure. */
+struct __db_lock_stat {
+ u_int32_t st_id; /* Last allocated locker ID. */
+ u_int32_t st_cur_maxid; /* Current maximum unused ID. */
+ u_int32_t st_maxlocks; /* Maximum number of locks in table. */
+ u_int32_t st_maxlockers; /* Maximum num of lockers in table. */
+ u_int32_t st_maxobjects; /* Maximum num of objects in table. */
+ int st_nmodes; /* Number of lock modes. */
+ u_int32_t st_nlockers; /* Current number of lockers. */
+#ifndef __TEST_DB_NO_STATISTICS
+ u_int32_t st_nlocks; /* Current number of locks. */
+ u_int32_t st_maxnlocks; /* Maximum number of locks so far. */
+ u_int32_t st_maxnlockers; /* Maximum number of lockers so far. */
+ u_int32_t st_nobjects; /* Current number of objects. */
+ u_int32_t st_maxnobjects; /* Maximum number of objects so far. */
+ u_int32_t st_nrequests; /* Number of lock gets. */
+ u_int32_t st_nreleases; /* Number of lock puts. */
+ u_int32_t st_nupgrade; /* Number of lock upgrades. */
+ u_int32_t st_ndowngrade; /* Number of lock downgrades. */
+ u_int32_t st_lock_wait; /* Lock conflicts w/ subsequent wait */
+ u_int32_t st_lock_nowait; /* Lock conflicts w/o subsequent wait */
+ u_int32_t st_ndeadlocks; /* Number of lock deadlocks. */
+ db_timeout_t st_locktimeout; /* Lock timeout. */
+ u_int32_t st_nlocktimeouts; /* Number of lock timeouts. */
+ db_timeout_t st_txntimeout; /* Transaction timeout. */
+ u_int32_t st_ntxntimeouts; /* Number of transaction timeouts. */
+ u_int32_t st_objs_wait; /* Object lock granted after wait. */
+ u_int32_t st_objs_nowait; /* Object lock granted without wait. */
+ u_int32_t st_lockers_wait; /* Locker lock granted after wait. */
+ u_int32_t st_lockers_nowait; /* Locker lock granted without wait. */
+ u_int32_t st_locks_wait; /* Lock lock granted after wait. */
+ u_int32_t st_locks_nowait; /* Lock lock granted without wait. */
+ u_int32_t st_region_wait; /* Region lock granted after wait. */
+ u_int32_t st_region_nowait; /* Region lock granted without wait. */
+ u_int32_t st_hash_len; /* Max length of bucket. */
+ roff_t st_regsize; /* Region size. */
+#endif
+};
+
+struct __db_lock_hstat {
+ u_int32_t st_nrequests; /* Number of lock gets. */
+ u_int32_t st_nreleases; /* Number of lock puts. */
+ u_int32_t st_nupgrade; /* Number of lock upgrades. */
+ u_int32_t st_ndowngrade; /* Number of lock downgrades. */
+ u_int32_t st_lock_wait; /* Lock conflicts w/ subsequent wait */
+ u_int32_t st_lock_nowait; /* Lock conflicts w/o subsequent wait */
+ u_int32_t st_nlocktimeouts; /* Number of lock timeouts. */
+ u_int32_t st_ntxntimeouts; /* Number of transaction timeouts. */
+ u_int32_t st_hash_len; /* Max length of bucket. */
+};
+
+/*
+ * DB_LOCK_ILOCK --
+ * Internal DB access method lock.
+ */
+struct __db_ilock {
+ db_pgno_t pgno; /* Page being locked. */
+ u_int8_t fileid[DB_FILE_ID_LEN];/* File id. */
+#define DB_HANDLE_LOCK 1
+#define DB_RECORD_LOCK 2
+#define DB_PAGE_LOCK 3
+ u_int32_t type; /* Type of lock. */
+};
+
+/*
+ * DB_LOCK --
+ * The structure is allocated by the caller and filled in during a
+ * lock_get request (or a lock_vec/DB_LOCK_GET).
+ */
+struct __db_lock_u {
+ roff_t off; /* Offset of the lock in the region */
+ u_int32_t ndx; /* Index of the object referenced by
+ * this lock; used for locking. */
+ u_int32_t gen; /* Generation number of this lock. */
+ db_lockmode_t mode; /* mode of this lock. */
+};
+
+/* Lock request structure. */
+struct __db_lockreq {
+ db_lockop_t op; /* Operation. */
+ db_lockmode_t mode; /* Requested mode. */
+ db_timeout_t timeout; /* Time to expire lock. */
+ DBT *obj; /* Object being locked. */
+ DB_LOCK lock; /* Lock returned. */
+};
+
+/*******************************************************
+ * Logging.
+ *******************************************************/
+#define DB_LOGVERSION 13 /* Current log version. */
+#define DB_LOGOLDVER 8 /* Oldest log version supported. */
+#define DB_LOGMAGIC 0x040988
+
+/* Flag values for DB_ENV->log_archive(). */
+#define DB_ARCH_ABS 0x001 /* Absolute pathnames. */
+#define DB_ARCH_DATA 0x002 /* Data files. */
+#define DB_ARCH_LOG 0x004 /* Log files. */
+#define DB_ARCH_REMOVE 0x008 /* Remove log files. */
+
+/* Flag values for DB_ENV->log_put(). */
+#define DB_FLUSH 0x001 /* Flush data to disk (public). */
+#define DB_LOG_CHKPNT 0x002 /* Flush supports a checkpoint */
+#define DB_LOG_COMMIT 0x004 /* Flush supports a commit */
+#define DB_LOG_NOCOPY 0x008 /* Don't copy data */
+#define DB_LOG_NOT_DURABLE 0x010 /* Do not log; keep in memory */
+#define DB_LOG_WRNOSYNC 0x020 /* Write, don't sync log_put */
+
+/*
+ * A DB_LSN has two parts, a fileid which identifies a specific file, and an
+ * offset within that file. The fileid is an unsigned 4-byte quantity that
+ * uniquely identifies a file within the log directory -- currently a simple
+ * counter inside the log. The offset is also an unsigned 4-byte value. The
+ * log manager guarantees the offset is never more than 4 bytes by switching
+ * to a new log file before the maximum length imposed by an unsigned 4-byte
+ * offset is reached.
+ */
+struct __db_lsn {
+ u_int32_t file; /* File ID. */
+ u_int32_t offset; /* File offset. */
+};
+
+/*
+ * Application-specified log record types start at DB_user_BEGIN, and must not
+ * equal or exceed DB_debug_FLAG.
+ *
+ * DB_debug_FLAG is the high-bit of the u_int32_t that specifies a log record
+ * type. If the flag is set, it's a log record that was logged for debugging
+ * purposes only, even if it reflects a database change -- the change was part
+ * of a non-durable transaction.
+ */
+#define DB_user_BEGIN 10000
+#define DB_debug_FLAG 0x80000000
+
+/*
+ * DB_LOGC --
+ * Log cursor.
+ */
+struct __db_log_cursor {
+ DB_ENV *dbenv; /* Enclosing dbenv. */
+
+ DB_FH *fhp; /* File handle. */
+ DB_LSN lsn; /* Cursor: LSN */
+ u_int32_t len; /* Cursor: record length */
+ u_int32_t prev; /* Cursor: previous record's offset */
+
+ DBT dbt; /* Return DBT. */
+ DB_LSN p_lsn; /* Persist LSN. */
+ u_int32_t p_version; /* Persist version. */
+
+ u_int8_t *bp; /* Allocated read buffer. */
+ u_int32_t bp_size; /* Read buffer length in bytes. */
+ u_int32_t bp_rlen; /* Read buffer valid data length. */
+ DB_LSN bp_lsn; /* Read buffer first byte LSN. */
+
+ u_int32_t bp_maxrec; /* Max record length in the log file. */
+
+ /* DB_LOGC PUBLIC HANDLE LIST BEGIN */
+ int (*close) __P((DB_LOGC *, u_int32_t));
+ int (*get) __P((DB_LOGC *, DB_LSN *, DBT *, u_int32_t));
+ int (*version) __P((DB_LOGC *, u_int32_t *, u_int32_t));
+ /* DB_LOGC PUBLIC HANDLE LIST END */
+
+#define DB_LOG_DISK 0x01 /* Log record came from disk. */
+#define DB_LOG_LOCKED 0x02 /* Log region already locked */
+#define DB_LOG_SILENT_ERR 0x04 /* Turn-off error messages. */
+ u_int32_t flags;
+};
+
+/* Log statistics structure. */
+struct __db_log_stat {
+ u_int32_t st_magic; /* Log file magic number. */
+ u_int32_t st_version; /* Log file version number. */
+ int st_mode; /* Log file permissions mode. */
+ u_int32_t st_lg_bsize; /* Log buffer size. */
+ u_int32_t st_lg_size; /* Log file size. */
+ u_int32_t st_wc_bytes; /* Bytes to log since checkpoint. */
+ u_int32_t st_wc_mbytes; /* Megabytes to log since checkpoint. */
+#ifndef __TEST_DB_NO_STATISTICS
+ u_int32_t st_record; /* Records entered into the log. */
+ u_int32_t st_w_bytes; /* Bytes to log. */
+ u_int32_t st_w_mbytes; /* Megabytes to log. */
+ u_int32_t st_wcount; /* Total I/O writes to the log. */
+ u_int32_t st_wcount_fill; /* Overflow writes to the log. */
+ u_int32_t st_rcount; /* Total I/O reads from the log. */
+ u_int32_t st_scount; /* Total syncs to the log. */
+ u_int32_t st_region_wait; /* Region lock granted after wait. */
+ u_int32_t st_region_nowait; /* Region lock granted without wait. */
+ u_int32_t st_cur_file; /* Current log file number. */
+ u_int32_t st_cur_offset; /* Current log file offset. */
+ u_int32_t st_disk_file; /* Known on disk log file number. */
+ u_int32_t st_disk_offset; /* Known on disk log file offset. */
+ u_int32_t st_maxcommitperflush; /* Max number of commits in a flush. */
+ u_int32_t st_mincommitperflush; /* Min number of commits in a flush. */
+ roff_t st_regsize; /* Region size. */
+#endif
+};
+
+/*
+ * We need to record the first log record of a transaction. For user
+ * defined logging this macro returns the place to put that information,
+ * if it is need in rlsnp, otherwise it leaves it unchanged. We also
+ * need to track the last record of the transaction, this returns the
+ * place to put that info.
+ */
+#define DB_SET_TXN_LSNP(txn, blsnp, llsnp) \
+ ((txn)->set_txn_lsnp(txn, blsnp, llsnp))
+
+/*******************************************************
+ * Shared buffer cache (mpool).
+ *******************************************************/
+/* Flag values for DB_MPOOLFILE->get. */
+#define DB_MPOOL_CREATE 0x001 /* Create a page. */
+#define DB_MPOOL_DIRTY 0x002 /* Get page for an update. */
+#define DB_MPOOL_EDIT 0x004 /* Modify without copying. */
+#define DB_MPOOL_FREE 0x008 /* Free page if present. */
+#define DB_MPOOL_LAST 0x010 /* Return the last page. */
+#define DB_MPOOL_NEW 0x020 /* Create a new page. */
+
+/* Undocumented flag value for DB_MPOOLFILE->close. */
+#define DB_MPOOL_DISCARD 0x001 /* Discard file. */
+
+/* Flags values for DB_MPOOLFILE->set_flags. */
+#define DB_MPOOL_NOFILE 0x001 /* Never open a backing file. */
+#define DB_MPOOL_UNLINK 0x002 /* Unlink the file on last close. */
+
+/* Priority values for DB_MPOOLFILE->{put,set_priority}. */
+typedef enum {
+ DB_PRIORITY_UNCHANGED=0,
+ DB_PRIORITY_VERY_LOW=1,
+ DB_PRIORITY_LOW=2,
+ DB_PRIORITY_DEFAULT=3,
+ DB_PRIORITY_HIGH=4,
+ DB_PRIORITY_VERY_HIGH=5
+} DB_CACHE_PRIORITY;
+
+/* Per-process DB_MPOOLFILE information. */
+struct __db_mpoolfile {
+ DB_FH *fhp; /* Underlying file handle. */
+
+ /*
+ * !!!
+ * The ref, pinref and q fields are protected by the region lock.
+ */
+ u_int32_t ref; /* Reference count. */
+
+ u_int32_t pinref; /* Pinned block reference count. */
+
+ /*
+ * !!!
+ * Explicit representations of structures from queue.h.
+ * TAILQ_ENTRY(__db_mpoolfile) q;
+ */
+ struct {
+ struct __db_mpoolfile *tqe_next;
+ struct __db_mpoolfile **tqe_prev;
+ } q; /* Linked list of DB_MPOOLFILE's. */
+
+ /*
+ * !!!
+ * The rest of the fields (with the exception of the MP_FLUSH flag)
+ * are not thread-protected, even when they may be modified at any
+ * time by the application. The reason is the DB_MPOOLFILE handle
+ * is single-threaded from the viewpoint of the application, and so
+ * the only fields needing to be thread-protected are those accessed
+ * by checkpoint or sync threads when using DB_MPOOLFILE structures
+ * to flush buffers from the cache.
+ */
+ DB_ENV *dbenv; /* Overlying DB_ENV. */
+ MPOOLFILE *mfp; /* Underlying MPOOLFILE. */
+
+ u_int32_t clear_len; /* Cleared length on created pages. */
+ u_int8_t /* Unique file ID. */
+ fileid[DB_FILE_ID_LEN];
+ int ftype; /* File type. */
+ int32_t lsn_offset; /* LSN offset in page. */
+ u_int32_t gbytes, bytes; /* Maximum file size. */
+ DBT *pgcookie; /* Byte-string passed to pgin/pgout. */
+ int32_t priority; /* Cache priority. */
+
+ void *addr; /* Address of mmap'd region. */
+ size_t len; /* Length of mmap'd region. */
+
+ u_int32_t config_flags; /* Flags to DB_MPOOLFILE->set_flags. */
+
+ /* DB_MPOOLFILE PUBLIC HANDLE LIST BEGIN */
+ int (*close) __P((DB_MPOOLFILE *, u_int32_t));
+ int (*get)
+ __P((DB_MPOOLFILE *, db_pgno_t *, DB_TXN *, u_int32_t, void *));
+ int (*get_clear_len) __P((DB_MPOOLFILE *, u_int32_t *));
+ int (*get_fileid) __P((DB_MPOOLFILE *, u_int8_t *));
+ int (*get_flags) __P((DB_MPOOLFILE *, u_int32_t *));
+ int (*get_ftype) __P((DB_MPOOLFILE *, int *));
+ int (*get_last_pgno) __P((DB_MPOOLFILE *, db_pgno_t *));
+ int (*get_lsn_offset) __P((DB_MPOOLFILE *, int32_t *));
+ int (*get_maxsize) __P((DB_MPOOLFILE *, u_int32_t *, u_int32_t *));
+ int (*get_pgcookie) __P((DB_MPOOLFILE *, DBT *));
+ int (*get_priority) __P((DB_MPOOLFILE *, DB_CACHE_PRIORITY *));
+ int (*open) __P((DB_MPOOLFILE *, const char *, u_int32_t, int, size_t));
+ int (*put) __P((DB_MPOOLFILE *, void *, DB_CACHE_PRIORITY, u_int32_t));
+ int (*set_clear_len) __P((DB_MPOOLFILE *, u_int32_t));
+ int (*set_fileid) __P((DB_MPOOLFILE *, u_int8_t *));
+ int (*set_flags) __P((DB_MPOOLFILE *, u_int32_t, int));
+ int (*set_ftype) __P((DB_MPOOLFILE *, int));
+ int (*set_lsn_offset) __P((DB_MPOOLFILE *, int32_t));
+ int (*set_maxsize) __P((DB_MPOOLFILE *, u_int32_t, u_int32_t));
+ int (*set_pgcookie) __P((DB_MPOOLFILE *, DBT *));
+ int (*set_priority) __P((DB_MPOOLFILE *, DB_CACHE_PRIORITY));
+ int (*sync) __P((DB_MPOOLFILE *));
+ /* DB_MPOOLFILE PUBLIC HANDLE LIST END */
+
+ /*
+ * MP_FILEID_SET, MP_OPEN_CALLED and MP_READONLY do not need to be
+ * thread protected because they are initialized before the file is
+ * linked onto the per-process lists, and never modified.
+ *
+ * MP_FLUSH is thread protected because it is potentially read/set by
+ * multiple threads of control.
+ */
+#define MP_FILEID_SET 0x001 /* Application supplied a file ID. */
+#define MP_FLUSH 0x002 /* Was opened to flush a buffer. */
+#define MP_MULTIVERSION 0x004 /* Opened for multiversion access. */
+#define MP_OPEN_CALLED 0x008 /* File opened. */
+#define MP_READONLY 0x010 /* File is readonly. */
+ u_int32_t flags;
+};
+
+/* Mpool statistics structure. */
+struct __db_mpool_stat {
+ u_int32_t st_gbytes; /* Total cache size: GB. */
+ u_int32_t st_bytes; /* Total cache size: B. */
+ u_int32_t st_ncache; /* Number of cache regions. */
+ u_int32_t st_max_ncache; /* Maximum number of regions. */
+ size_t st_mmapsize; /* Maximum file size for mmap. */
+ int st_maxopenfd; /* Maximum number of open fd's. */
+ int st_maxwrite; /* Maximum buffers to write. */
+ db_timeout_t st_maxwrite_sleep; /* Sleep after writing max buffers. */
+ u_int32_t st_pages; /* Total number of pages. */
+#ifndef __TEST_DB_NO_STATISTICS
+ u_int32_t st_map; /* Pages from mapped files. */
+ u_int32_t st_cache_hit; /* Pages found in the cache. */
+ u_int32_t st_cache_miss; /* Pages not found in the cache. */
+ u_int32_t st_page_create; /* Pages created in the cache. */
+ u_int32_t st_page_in; /* Pages read in. */
+ u_int32_t st_page_out; /* Pages written out. */
+ u_int32_t st_ro_evict; /* Clean pages forced from the cache. */
+ u_int32_t st_rw_evict; /* Dirty pages forced from the cache. */
+ u_int32_t st_page_trickle; /* Pages written by memp_trickle. */
+ u_int32_t st_page_clean; /* Clean pages. */
+ u_int32_t st_page_dirty; /* Dirty pages. */
+ u_int32_t st_hash_buckets; /* Number of hash buckets. */
+ u_int32_t st_hash_searches; /* Total hash chain searches. */
+ u_int32_t st_hash_longest; /* Longest hash chain searched. */
+ u_int32_t st_hash_examined; /* Total hash entries searched. */
+ u_int32_t st_hash_nowait; /* Hash lock granted with nowait. */
+ u_int32_t st_hash_wait; /* Hash lock granted after wait. */
+ u_int32_t st_hash_max_nowait; /* Max hash lock granted with nowait. */
+ u_int32_t st_hash_max_wait; /* Max hash lock granted after wait. */
+ u_int32_t st_region_nowait; /* Region lock granted with nowait. */
+ u_int32_t st_region_wait; /* Region lock granted after wait. */
+ u_int32_t st_mvcc_frozen; /* Buffers frozen. */
+ u_int32_t st_mvcc_thawed; /* Buffers thawed. */
+ u_int32_t st_mvcc_freed; /* Frozen buffers freed. */
+ u_int32_t st_alloc; /* Number of page allocations. */
+ u_int32_t st_alloc_buckets; /* Buckets checked during allocation. */
+ u_int32_t st_alloc_max_buckets; /* Max checked during allocation. */
+ u_int32_t st_alloc_pages; /* Pages checked during allocation. */
+ u_int32_t st_alloc_max_pages; /* Max checked during allocation. */
+ u_int32_t st_io_wait; /* Thread waited on buffer I/O. */
+ roff_t st_regsize; /* Region size. */
+#endif
+};
+
+/* Mpool file statistics structure. */
+struct __db_mpool_fstat {
+ char *file_name; /* File name. */
+ u_int32_t st_pagesize; /* Page size. */
+#ifndef __TEST_DB_NO_STATISTICS
+ u_int32_t st_map; /* Pages from mapped files. */
+ u_int32_t st_cache_hit; /* Pages found in the cache. */
+ u_int32_t st_cache_miss; /* Pages not found in the cache. */
+ u_int32_t st_page_create; /* Pages created in the cache. */
+ u_int32_t st_page_in; /* Pages read in. */
+ u_int32_t st_page_out; /* Pages written out. */
+#endif
+};
+
+/*******************************************************
+ * Transactions and recovery.
+ *******************************************************/
+#define DB_TXNVERSION 1
+
+typedef enum {
+ DB_TXN_ABORT=0, /* Public. */
+ DB_TXN_APPLY=1, /* Public. */
+ DB_TXN_BACKWARD_ALLOC=2, /* Internal. */
+ DB_TXN_BACKWARD_ROLL=3, /* Public. */
+ DB_TXN_FORWARD_ROLL=4, /* Public. */
+ DB_TXN_OPENFILES=5, /* Internal. */
+ DB_TXN_POPENFILES=6, /* Internal. */
+ DB_TXN_PRINT=7 /* Public. */
+} db_recops;
+
+/*
+ * BACKWARD_ALLOC is used during the forward pass to pick up any aborted
+ * allocations for files that were created during the forward pass.
+ * The main difference between _ALLOC and _ROLL is that the entry for
+ * the file not exist during the rollforward pass.
+ */
+#define DB_UNDO(op) ((op) == DB_TXN_ABORT || \
+ (op) == DB_TXN_BACKWARD_ROLL || (op) == DB_TXN_BACKWARD_ALLOC)
+#define DB_REDO(op) ((op) == DB_TXN_FORWARD_ROLL || (op) == DB_TXN_APPLY)
+
+struct __db_txn {
+ DB_TXNMGR *mgrp; /* Pointer to transaction manager. */
+ DB_TXN *parent; /* Pointer to transaction's parent. */
+
+ u_int32_t txnid; /* Unique transaction id. */
+ char *name; /* Transaction name. */
+ DB_LOCKER *locker; /* Locker for this txn. */
+
+ db_threadid_t tid; /* Thread id for use in MT XA. */
+ void *td; /* Detail structure within region. */
+ db_timeout_t lock_timeout; /* Timeout for locks for this txn. */
+ db_timeout_t expire; /* Time transaction expires. */
+ void *txn_list; /* Undo information for parent. */
+
+ /*
+ * !!!
+ * Explicit representations of structures from queue.h.
+ * TAILQ_ENTRY(__db_txn) links;
+ * TAILQ_ENTRY(__db_txn) xalinks;
+ */
+ struct {
+ struct __db_txn *tqe_next;
+ struct __db_txn **tqe_prev;
+ } links; /* Links transactions off manager. */
+ struct {
+ struct __db_txn *tqe_next;
+ struct __db_txn **tqe_prev;
+ } xalinks; /* Links active XA transactions. */
+
+ /*
+ * !!!
+ * Explicit representations of structures from queue.h.
+ * TAILQ_HEAD(__kids, __db_txn) kids;
+ */
+ struct __kids {
+ struct __db_txn *tqh_first;
+ struct __db_txn **tqh_last;
+ } kids;
+
+ /*
+ * !!!
+ * Explicit representations of structures from queue.h.
+ * TAILQ_HEAD(__events, __txn_event) events;
+ */
+ struct {
+ struct __txn_event *tqh_first;
+ struct __txn_event **tqh_last;
+ } events; /* Links deferred events. */
+
+ /*
+ * !!!
+ * Explicit representations of structures from queue.h.
+ * STAILQ_HEAD(__logrec, __txn_logrec) logs;
+ */
+ struct {
+ struct __txn_logrec *stqh_first;
+ struct __txn_logrec **stqh_last;
+ } logs; /* Links in memory log records. */
+
+ /*
+ * !!!
+ * Explicit representations of structures from queue.h.
+ * TAILQ_ENTRY(__db_txn) klinks;
+ */
+ struct {
+ struct __db_txn *tqe_next;
+ struct __db_txn **tqe_prev;
+ } klinks;
+
+ void *api_internal; /* C++ API private. */
+ void *xml_internal; /* XML API private. */
+
+ u_int32_t cursors; /* Number of cursors open for txn */
+
+ /* DB_TXN PUBLIC HANDLE LIST BEGIN */
+ int (*abort) __P((DB_TXN *));
+ int (*commit) __P((DB_TXN *, u_int32_t));
+ int (*discard) __P((DB_TXN *, u_int32_t));
+ int (*get_name) __P((DB_TXN *, const char **));
+ u_int32_t (*id) __P((DB_TXN *));
+ int (*prepare) __P((DB_TXN *, u_int8_t *));
+ int (*set_name) __P((DB_TXN *, const char *));
+ int (*set_timeout) __P((DB_TXN *, db_timeout_t, u_int32_t));
+ /* DB_TXN PUBLIC HANDLE LIST END */
+
+ /* DB_TXN PRIVATE HANDLE LIST BEGIN */
+ void (*set_txn_lsnp) __P((DB_TXN *txn, DB_LSN **, DB_LSN **));
+ /* DB_TXN PRIVATE HANDLE LIST END */
+
+#define TXN_CHILDCOMMIT 0x0001 /* Txn has committed. */
+#define TXN_CDSGROUP 0x0002 /* CDS group handle. */
+#define TXN_COMPENSATE 0x0004 /* Compensating transaction. */
+#define TXN_DEADLOCK 0x0008 /* Txn has deadlocked. */
+#define TXN_LOCKTIMEOUT 0x0010 /* Txn has a lock timeout. */
+#define TXN_MALLOC 0x0020 /* Structure allocated by TXN system. */
+#define TXN_NOSYNC 0x0040 /* Do not sync on prepare and commit. */
+#define TXN_NOWAIT 0x0080 /* Do not wait on locks. */
+#define TXN_PRIVATE 0x0100 /* Txn owned by cursor.. */
+#define TXN_READ_COMMITTED 0x0200 /* Txn has degree 2 isolation. */
+#define TXN_READ_UNCOMMITTED 0x0400 /* Txn has degree 1 isolation. */
+#define TXN_RESTORED 0x0800 /* Txn has been restored. */
+#define TXN_SNAPSHOT 0x1000 /* Snapshot Isolation. */
+#define TXN_SYNC 0x2000 /* Write and sync on prepare/commit. */
+#define TXN_WRITE_NOSYNC 0x4000 /* Write only on prepare/commit. */
+ u_int32_t flags;
+};
+
+#define TXN_SYNC_FLAGS (TXN_SYNC | TXN_NOSYNC | TXN_WRITE_NOSYNC)
+
+/*
+ * Structure used for two phase commit interface. Berkeley DB support for two
+ * phase commit is compatible with the X/Open XA interface.
+ *
+ * The XA #define XIDDATASIZE defines the size of a global transaction ID. We
+ * have our own version here (for name space reasons) which must have the same
+ * value.
+ */
+#define DB_XIDDATASIZE 128
+struct __db_preplist {
+ DB_TXN *txn;
+ u_int8_t gid[DB_XIDDATASIZE];
+};
+
+/* Transaction statistics structure. */
+struct __db_txn_active {
+ u_int32_t txnid; /* Transaction ID */
+ u_int32_t parentid; /* Transaction ID of parent */
+ pid_t pid; /* Process owning txn ID */
+ db_threadid_t tid; /* Thread owning txn ID */
+
+ DB_LSN lsn; /* LSN when transaction began */
+
+ DB_LSN read_lsn; /* Read LSN for MVCC */
+ u_int32_t mvcc_ref; /* MVCC reference count */
+
+#define TXN_ABORTED 1
+#define TXN_COMMITTED 2
+#define TXN_PREPARED 3
+#define TXN_RUNNING 4
+ u_int32_t status; /* Status of the transaction */
+
+#define TXN_XA_ABORTED 1
+#define TXN_XA_DEADLOCKED 2
+#define TXN_XA_ENDED 3
+#define TXN_XA_PREPARED 4
+#define TXN_XA_STARTED 5
+#define TXN_XA_SUSPENDED 6
+ u_int32_t xa_status; /* XA status */
+
+ u_int8_t xid[DB_XIDDATASIZE]; /* Global transaction ID */
+ char name[51]; /* 50 bytes of name, nul termination */
+};
+
+struct __db_txn_stat {
+ u_int32_t st_nrestores; /* number of restored transactions
+ after recovery. */
+#ifndef __TEST_DB_NO_STATISTICS
+ DB_LSN st_last_ckp; /* lsn of the last checkpoint */
+ time_t st_time_ckp; /* time of last checkpoint */
+ u_int32_t st_last_txnid; /* last transaction id given out */
+ u_int32_t st_maxtxns; /* maximum txns possible */
+ u_int32_t st_naborts; /* number of aborted transactions */
+ u_int32_t st_nbegins; /* number of begun transactions */
+ u_int32_t st_ncommits; /* number of committed transactions */
+ u_int32_t st_nactive; /* number of active transactions */
+ u_int32_t st_nsnapshot; /* number of snapshot transactions */
+ u_int32_t st_maxnactive; /* maximum active transactions */
+ u_int32_t st_maxnsnapshot; /* maximum snapshot transactions */
+ DB_TXN_ACTIVE *st_txnarray; /* array of active transactions */
+ u_int32_t st_region_wait; /* Region lock granted after wait. */
+ u_int32_t st_region_nowait; /* Region lock granted without wait. */
+ roff_t st_regsize; /* Region size. */
+#endif
+};
+
+/*******************************************************
+ * Replication.
+ *******************************************************/
+/* Special, out-of-band environment IDs. */
+#define DB_EID_BROADCAST -1
+#define DB_EID_INVALID -2
+
+/* rep_config flag values. */
+#define DB_REP_CONF_BULK 0x0001 /* Bulk transfer. */
+#define DB_REP_CONF_DELAYCLIENT 0x0002 /* Delay client synchronization. */
+#define DB_REP_CONF_NOAUTOINIT 0x0004 /* No automatic client init. */
+#define DB_REP_CONF_NOWAIT 0x0008 /* Don't wait, return error. */
+
+/*
+ * Operation code values for rep_start and/or repmgr_start. Just one of the
+ * following values should be passed in the flags parameter. (If we ever need
+ * additional, independent bit flags for these methods, we can start allocating
+ * them from the high-order byte of the flags word, as we currently do elsewhere
+ * for DB_AFTER through DB_WRITELOCK and DB_AUTO_COMMIT, etc.)
+ */
+#define DB_REP_CLIENT 1
+#define DB_REP_ELECTION 2
+#define DB_REP_MASTER 3
+
+#define DB_REPFLAGS_MASK 0x000000ff /* Mask for rep modes. */
+
+#define DB_REP_DEFAULT_PRIORITY 100
+
+/* Acknowledgement policies. */
+#define DB_REPMGR_ACKS_ALL 1
+#define DB_REPMGR_ACKS_ALL_PEERS 2
+#define DB_REPMGR_ACKS_NONE 3
+#define DB_REPMGR_ACKS_ONE 4
+#define DB_REPMGR_ACKS_ONE_PEER 5
+#define DB_REPMGR_ACKS_QUORUM 6
+
+/* Replication timeout configuration values. */
+#define DB_REP_ACK_TIMEOUT 1 /* RepMgr acknowledgements. */
+#define DB_REP_CHECKPOINT_DELAY 2 /* RepMgr acknowledgements. */
+#define DB_REP_CONNECTION_RETRY 3 /* RepMgr connections. */
+#define DB_REP_ELECTION_RETRY 4 /* RepMgr elect retries. */
+#define DB_REP_ELECTION_TIMEOUT 5 /* Rep normal elections. */
+#define DB_REP_FULL_ELECTION_TIMEOUT 6 /* Rep full elections. */
+#define DB_REP_LEASE_TIMEOUT 7 /* Master leases. */
+
+/* Event notification types. */
+#define DB_EVENT_NO_SUCH_EVENT 0 /* out-of-band sentinel value */
+#define DB_EVENT_PANIC 1
+#define DB_EVENT_REP_CLIENT 2
+#define DB_EVENT_REP_ELECTED 3
+#define DB_EVENT_REP_MASTER 4
+#define DB_EVENT_REP_NEWMASTER 5
+#define DB_EVENT_REP_PERM_FAILED 6
+#define DB_EVENT_REP_STARTUPDONE 7
+#define DB_EVENT_WRITE_FAILED 8
+
+/* Flag value for repmgr_add_remote_site. */
+#define DB_REPMGR_PEER 0x01
+
+/* Replication Manager site status. */
+struct __db_repmgr_site {
+ int eid;
+ char *host;
+ u_int port;
+
+#define DB_REPMGR_CONNECTED 0x01
+#define DB_REPMGR_DISCONNECTED 0x02
+ u_int32_t status;
+};
+
+/* Replication statistics. */
+struct __db_rep_stat {
+ /* !!!
+ * Many replication statistics fields cannot be protected by a mutex
+ * without an unacceptable performance penalty, since most message
+ * processing is done without the need to hold a region-wide lock.
+ * Fields whose comments end with a '+' may be updated without holding
+ * the replication or log mutexes (as appropriate), and thus may be
+ * off somewhat (or, on unreasonable architectures under unlucky
+ * circumstances, garbaged).
+ */
+ u_int32_t st_log_queued; /* Log records currently queued.+ */
+ u_int32_t st_startup_complete; /* Site completed client sync-up. */
+#ifndef __TEST_DB_NO_STATISTICS
+ u_int32_t st_status; /* Current replication status. */
+ DB_LSN st_next_lsn; /* Next LSN to use or expect. */
+ DB_LSN st_waiting_lsn; /* LSN we're awaiting, if any. */
+ db_pgno_t st_next_pg; /* Next pg we expect. */
+ db_pgno_t st_waiting_pg; /* pg we're awaiting, if any. */
+
+ u_int32_t st_dupmasters; /* # of times a duplicate master
+ condition was detected.+ */
+ int st_env_id; /* Current environment ID. */
+ int st_env_priority; /* Current environment priority. */
+ u_int32_t st_bulk_fills; /* Bulk buffer fills. */
+ u_int32_t st_bulk_overflows; /* Bulk buffer overflows. */
+ u_int32_t st_bulk_records; /* Bulk records stored. */
+ u_int32_t st_bulk_transfers; /* Transfers of bulk buffers. */
+ u_int32_t st_client_rerequests; /* Number of forced rerequests. */
+ u_int32_t st_client_svc_req; /* Number of client service requests
+ received by this client. */
+ u_int32_t st_client_svc_miss; /* Number of client service requests
+ missing on this client. */
+ u_int32_t st_gen; /* Current generation number. */
+ u_int32_t st_egen; /* Current election gen number. */
+ u_int32_t st_log_duplicated; /* Log records received multiply.+ */
+ u_int32_t st_log_queued_max; /* Max. log records queued at once.+ */
+ u_int32_t st_log_queued_total; /* Total # of log recs. ever queued.+ */
+ u_int32_t st_log_records; /* Log records received and put.+ */
+ u_int32_t st_log_requested; /* Log recs. missed and requested.+ */
+ int st_master; /* Env. ID of the current master. */
+ u_int32_t st_master_changes; /* # of times we've switched masters. */
+ u_int32_t st_msgs_badgen; /* Messages with a bad generation #.+ */
+ u_int32_t st_msgs_processed; /* Messages received and processed.+ */
+ u_int32_t st_msgs_recover; /* Messages ignored because this site
+ was a client in recovery.+ */
+ u_int32_t st_msgs_send_failures;/* # of failed message sends.+ */
+ u_int32_t st_msgs_sent; /* # of successful message sends.+ */
+ u_int32_t st_newsites; /* # of NEWSITE msgs. received.+ */
+ int st_nsites; /* Current number of sites we will
+ assume during elections. */
+ u_int32_t st_nthrottles; /* # of times we were throttled. */
+ u_int32_t st_outdated; /* # of times we detected and returned
+ an OUTDATED condition.+ */
+ u_int32_t st_pg_duplicated; /* Pages received multiply.+ */
+ u_int32_t st_pg_records; /* Pages received and stored.+ */
+ u_int32_t st_pg_requested; /* Pages missed and requested.+ */
+ u_int32_t st_txns_applied; /* # of transactions applied.+ */
+ u_int32_t st_startsync_delayed; /* # of STARTSYNC msgs delayed.+ */
+
+ /* Elections generally. */
+ u_int32_t st_elections; /* # of elections held.+ */
+ u_int32_t st_elections_won; /* # of elections won by this site.+ */
+
+ /* Statistics about an in-progress election. */
+ int st_election_cur_winner; /* Current front-runner. */
+ u_int32_t st_election_gen; /* Election generation number. */
+ DB_LSN st_election_lsn; /* Max. LSN of current winner. */
+ int st_election_nsites; /* # of "registered voters". */
+ int st_election_nvotes; /* # of "registered voters" needed. */
+ int st_election_priority; /* Current election priority. */
+ int st_election_status; /* Current election status. */
+ u_int32_t st_election_tiebreaker;/* Election tiebreaker value. */
+ int st_election_votes; /* Votes received in this round. */
+ u_int32_t st_election_sec; /* Last election time seconds. */
+ u_int32_t st_election_usec; /* Last election time useconds. */
+#endif
+};
+
+/* Replication Manager statistics. */
+struct __db_repmgr_stat {
+ u_int32_t st_perm_failed; /* # of insufficiently ack'ed msgs. */
+ u_int32_t st_msgs_queued; /* # msgs queued for network delay. */
+ u_int32_t st_msgs_dropped; /* # msgs discarded due to excessive
+ queue length. */
+ u_int32_t st_connection_drop; /* Existing connections dropped. */
+ u_int32_t st_connect_fail; /* Failed new connection attempts. */
+};
+
+/*******************************************************
+ * Sequences.
+ *******************************************************/
+/*
+ * The storage record for a sequence.
+ */
+struct __db_seq_record {
+ u_int32_t seq_version; /* Version size/number. */
+#define DB_SEQ_DEC 0x00000001 /* Decrement sequence. */
+#define DB_SEQ_INC 0x00000002 /* Increment sequence. */
+#define DB_SEQ_RANGE_SET 0x00000004 /* Range set (internal). */
+#define DB_SEQ_WRAP 0x00000008 /* Wrap sequence at min/max. */
+#define DB_SEQ_WRAPPED 0x00000010 /* Just wrapped (internal). */
+ u_int32_t flags; /* Flags. */
+ db_seq_t seq_value; /* Current value. */
+ db_seq_t seq_max; /* Max permitted. */
+ db_seq_t seq_min; /* Min permitted. */
+};
+
+/*
+ * Handle for a sequence object.
+ */
+struct __db_sequence {
+ DB *seq_dbp; /* DB handle for this sequence. */
+ db_mutex_t mtx_seq; /* Mutex if sequence is threaded. */
+ DB_SEQ_RECORD *seq_rp; /* Pointer to current data. */
+ DB_SEQ_RECORD seq_record; /* Data from DB_SEQUENCE. */
+ int32_t seq_cache_size; /* Number of values cached. */
+ db_seq_t seq_last_value; /* Last value cached. */
+ DBT seq_key; /* DBT pointing to sequence key. */
+ DBT seq_data; /* DBT pointing to seq_record. */
+
+ /* API-private structure: used by C++ and Java. */
+ void *api_internal;
+
+ /* DB_SEQUENCE PUBLIC HANDLE LIST BEGIN */
+ int (*close) __P((DB_SEQUENCE *, u_int32_t));
+ int (*get) __P((DB_SEQUENCE *,
+ DB_TXN *, int32_t, db_seq_t *, u_int32_t));
+ int (*get_cachesize) __P((DB_SEQUENCE *, int32_t *));
+ int (*get_db) __P((DB_SEQUENCE *, DB **));
+ int (*get_flags) __P((DB_SEQUENCE *, u_int32_t *));
+ int (*get_key) __P((DB_SEQUENCE *, DBT *));
+ int (*get_range) __P((DB_SEQUENCE *,
+ db_seq_t *, db_seq_t *));
+ int (*initial_value) __P((DB_SEQUENCE *, db_seq_t));
+ int (*open) __P((DB_SEQUENCE *,
+ DB_TXN *, DBT *, u_int32_t));
+ int (*remove) __P((DB_SEQUENCE *, DB_TXN *, u_int32_t));
+ int (*set_cachesize) __P((DB_SEQUENCE *, int32_t));
+ int (*set_flags) __P((DB_SEQUENCE *, u_int32_t));
+ int (*set_range) __P((DB_SEQUENCE *, db_seq_t, db_seq_t));
+ int (*stat) __P((DB_SEQUENCE *,
+ DB_SEQUENCE_STAT **, u_int32_t));
+ int (*stat_print) __P((DB_SEQUENCE *, u_int32_t));
+ /* DB_SEQUENCE PUBLIC HANDLE LIST END */
+};
+
+struct __db_seq_stat {
+ u_int32_t st_wait; /* Sequence lock granted w/o wait. */
+ u_int32_t st_nowait; /* Sequence lock granted after wait. */
+ db_seq_t st_current; /* Current value in db. */
+ db_seq_t st_value; /* Current cached value. */
+ db_seq_t st_last_value; /* Last cached value. */
+ db_seq_t st_min; /* Minimum value. */
+ db_seq_t st_max; /* Maximum value. */
+ int32_t st_cache_size; /* Cache size. */
+ u_int32_t st_flags; /* Flag value. */
+};
+
+/*******************************************************
+ * Access methods.
+ *******************************************************/
+typedef enum {
+ DB_BTREE=1,
+ DB_HASH=2,
+ DB_RECNO=3,
+ DB_QUEUE=4,
+ DB_UNKNOWN=5 /* Figure it out on open. */
+} DBTYPE;
+
+#define DB_RENAMEMAGIC 0x030800 /* File has been renamed. */
+
+#define DB_BTREEVERSION 9 /* Current btree version. */
+#define DB_BTREEOLDVER 8 /* Oldest btree version supported. */
+#define DB_BTREEMAGIC 0x053162
+
+#define DB_HASHVERSION 9 /* Current hash version. */
+#define DB_HASHOLDVER 7 /* Oldest hash version supported. */
+#define DB_HASHMAGIC 0x061561
+
+#define DB_QAMVERSION 4 /* Current queue version. */
+#define DB_QAMOLDVER 3 /* Oldest queue version supported. */
+#define DB_QAMMAGIC 0x042253
+
+#define DB_SEQUENCE_VERSION 2 /* Current sequence version. */
+#define DB_SEQUENCE_OLDVER 1 /* Oldest sequence version supported. */
+
+/*
+ * DB access method and cursor operation values. Each value is an operation
+ * code to which additional bit flags are added.
+ */
+#define DB_AFTER 1 /* Dbc.put */
+#define DB_APPEND 2 /* Db.put */
+#define DB_BEFORE 3 /* Dbc.put */
+#define DB_CONSUME 4 /* Db.get */
+#define DB_CONSUME_WAIT 5 /* Db.get */
+#define DB_CURRENT 6 /* Dbc.get, Dbc.put, DbLogc.get */
+#define DB_FIRST 7 /* Dbc.get, DbLogc->get */
+#define DB_GET_BOTH 8 /* Db.get, Dbc.get */
+#define DB_GET_BOTHC 9 /* Dbc.get (internal) */
+#define DB_GET_BOTH_RANGE 10 /* Db.get, Dbc.get */
+#define DB_GET_RECNO 11 /* Dbc.get */
+#define DB_JOIN_ITEM 12 /* Dbc.get; don't do primary lookup */
+#define DB_KEYFIRST 13 /* Dbc.put */
+#define DB_KEYLAST 14 /* Dbc.put */
+#define DB_LAST 15 /* Dbc.get, DbLogc->get */
+#define DB_NEXT 16 /* Dbc.get, DbLogc->get */
+#define DB_NEXT_DUP 17 /* Dbc.get */
+#define DB_NEXT_NODUP 18 /* Dbc.get */
+#define DB_NODUPDATA 19 /* Db.put, Dbc.put */
+#define DB_NOOVERWRITE 20 /* Db.put */
+#define DB_NOSYNC 21 /* Db.close */
+#define DB_POSITION 22 /* Dbc.dup */
+#define DB_PREV 23 /* Dbc.get, DbLogc->get */
+#define DB_PREV_DUP 24 /* Dbc.get */
+#define DB_PREV_NODUP 25 /* Dbc.get */
+#define DB_SET 26 /* Dbc.get, DbLogc->get */
+#define DB_SET_RANGE 27 /* Dbc.get */
+#define DB_SET_RECNO 28 /* Db.get, Dbc.get */
+#define DB_UPDATE_SECONDARY 29 /* Dbc.get, Dbc.del (internal) */
+#define DB_WRITECURSOR 30 /* Db.cursor */
+#define DB_WRITELOCK 31 /* Db.cursor (internal) */
+
+/* This has to change when the max opcode hits 255. */
+#define DB_OPFLAGS_MASK 0x000000ff /* Mask for operations flags. */
+
+/*
+ * Masks for flags that can be OR'd into DB access method and cursor
+ * operation values. Three top bits have already been taken:
+ *
+ * DB_AUTO_COMMIT 0x02000000
+ * DB_READ_COMMITTED 0x04000000
+ * DB_READ_UNCOMMITTED 0x08000000
+ */
+#define DB_MULTIPLE 0x10000000 /* Return multiple data values. */
+#define DB_MULTIPLE_KEY 0x20000000 /* Return multiple data/key pairs. */
+#define DB_RMW 0x40000000 /* Acquire write lock immediately. */
+
+/*
+ * DB (user visible) error return codes.
+ *
+ * !!!
+ * We don't want our error returns to conflict with other packages where
+ * possible, so pick a base error value that's hopefully not common. We
+ * document that we own the error name space from -30,800 to -30,999.
+ */
+/* DB (public) error return codes. */
+#define DB_BUFFER_SMALL (-30999)/* User memory too small for return. */
+#define DB_DONOTINDEX (-30998)/* "Null" return from 2ndary callbk. */
+#define DB_KEYEMPTY (-30997)/* Key/data deleted or never created. */
+#define DB_KEYEXIST (-30996)/* The key/data pair already exists. */
+#define DB_LOCK_DEADLOCK (-30995)/* Deadlock. */
+#define DB_LOCK_NOTGRANTED (-30994)/* Lock unavailable. */
+#define DB_LOG_BUFFER_FULL (-30993)/* In-memory log buffer full. */
+#define DB_NOSERVER (-30992)/* Server panic return. */
+#define DB_NOSERVER_HOME (-30991)/* Bad home sent to server. */
+#define DB_NOSERVER_ID (-30990)/* Bad ID sent to server. */
+#define DB_NOTFOUND (-30989)/* Key/data pair not found (EOF). */
+#define DB_OLD_VERSION (-30988)/* Out-of-date version. */
+#define DB_PAGE_NOTFOUND (-30987)/* Requested page not found. */
+#define DB_REP_DUPMASTER (-30986)/* There are two masters. */
+#define DB_REP_HANDLE_DEAD (-30985)/* Rolled back a commit. */
+#define DB_REP_HOLDELECTION (-30984)/* Time to hold an election. */
+#define DB_REP_IGNORE (-30983)/* This msg should be ignored.*/
+#define DB_REP_ISPERM (-30982)/* Cached not written perm written.*/
+#define DB_REP_JOIN_FAILURE (-30981)/* Unable to join replication group. */
+#define DB_REP_LEASE_EXPIRED (-30980)/* Master lease has expired. */
+#define DB_REP_LOCKOUT (-30979)/* API/Replication lockout now. */
+#define DB_REP_NEWSITE (-30978)/* New site entered system. */
+#define DB_REP_NOTPERM (-30977)/* Permanent log record not written. */
+#define DB_REP_UNAVAIL (-30976)/* Site cannot currently be reached. */
+#define DB_RUNRECOVERY (-30975)/* Panic return. */
+#define DB_SECONDARY_BAD (-30974)/* Secondary index corrupt. */
+#define DB_VERIFY_BAD (-30973)/* Verify failed; bad format. */
+#define DB_VERSION_MISMATCH (-30972)/* Environment version mismatch. */
+
+/* DB (private) error return codes. */
+#define DB_ALREADY_ABORTED (-30899)
+#define DB_DELETED (-30898)/* Recovery file marked deleted. */
+#define DB_EVENT_NOT_HANDLED (-30897)/* Forward event to application. */
+#define DB_NEEDSPLIT (-30896)/* Page needs to be split. */
+#define DB_REP_BULKOVF (-30895)/* Rep bulk buffer overflow. */
+#define DB_REP_EGENCHG (-30894)/* Egen changed while in election. */
+#define DB_REP_LOGREADY (-30893)/* Rep log ready for recovery. */
+#define DB_REP_NEWMASTER (-30892)/* We have learned of a new master. */
+#define DB_REP_PAGEDONE (-30891)/* This page was already done. */
+#define DB_SURPRISE_KID (-30890)/* Child commit where parent
+ didn't know it was a parent. */
+#define DB_SWAPBYTES (-30889)/* Database needs byte swapping. */
+#define DB_TIMEOUT (-30888)/* Timed out waiting for election. */
+#define DB_TXN_CKP (-30887)/* Encountered ckp record in log. */
+#define DB_VERIFY_FATAL (-30886)/* DB->verify cannot proceed. */
+
+/* Database handle. */
+struct __db {
+ /*******************************************************
+ * Public: owned by the application.
+ *******************************************************/
+ u_int32_t pgsize; /* Database logical page size. */
+ DB_CACHE_PRIORITY priority; /* Database priority in cache. */
+
+ /* Callbacks. */
+ int (*db_append_recno) __P((DB *, DBT *, db_recno_t));
+ void (*db_feedback) __P((DB *, int, int));
+ int (*dup_compare) __P((DB *, const DBT *, const DBT *));
+
+ void *app_private; /* Application-private handle. */
+
+ /*******************************************************
+ * Private: owned by DB.
+ *******************************************************/
+ DB_ENV *dbenv; /* Backing environment. */
+
+ DBTYPE type; /* DB access method type. */
+
+ DB_MPOOLFILE *mpf; /* Backing buffer pool. */
+
+ db_mutex_t mutex; /* Synchronization for free threading */
+
+ char *fname, *dname; /* File/database passed to DB->open. */
+ u_int32_t open_flags; /* Flags passed to DB->open. */
+
+ u_int8_t fileid[DB_FILE_ID_LEN];/* File's unique ID for locking. */
+
+ u_int32_t adj_fileid; /* File's unique ID for curs. adj. */
+
+#define DB_LOGFILEID_INVALID -1
+ FNAME *log_filename; /* File's naming info for logging. */
+
+ db_pgno_t meta_pgno; /* Meta page number */
+ DB_LOCKER *locker; /* Locker for handle locking. */
+ DB_LOCKER *cur_locker; /* Current handle lock holder. */
+ DB_TXN *cur_txn; /* Opening transaction. */
+ DB_LOCKER *associate_locker; /* Locker for DB->associate call. */
+ DB_LOCK handle_lock; /* Lock held on this handle. */
+
+ u_int cl_id; /* RPC: remote client id. */
+
+ time_t timestamp; /* Handle timestamp for replication. */
+ u_int32_t fid_gen; /* Rep generation number for fids. */
+
+ /*
+ * Returned data memory for DB->get() and friends.
+ */
+ DBT my_rskey; /* Secondary key. */
+ DBT my_rkey; /* [Primary] key. */
+ DBT my_rdata; /* Data. */
+
+ /*
+ * !!!
+ * Some applications use DB but implement their own locking outside of
+ * DB. If they're using fcntl(2) locking on the underlying database
+ * file, and we open and close a file descriptor for that file, we will
+ * discard their locks. The DB_FCNTL_LOCKING flag to DB->open is an
+ * undocumented interface to support this usage which leaves any file
+ * descriptors we open until DB->close. This will only work with the
+ * DB->open interface and simple caches, e.g., creating a transaction
+ * thread may open/close file descriptors this flag doesn't protect.
+ * Locking with fcntl(2) on a file that you don't own is a very, very
+ * unsafe thing to do. 'Nuff said.
+ */
+ DB_FH *saved_open_fhp; /* Saved file handle. */
+
+ /*
+ * Linked list of DBP's, linked from the DB_ENV, used to keep track
+ * of all open db handles for cursor adjustment.
+ *
+ * !!!
+ * Explicit representations of structures from queue.h.
+ * TAILQ_ENTRY(__db) dblistlinks;
+ */
+ struct {
+ struct __db *tqe_next;
+ struct __db **tqe_prev;
+ } dblistlinks;
+
+ /*
+ * Cursor queues.
+ *
+ * !!!
+ * Explicit representations of structures from queue.h.
+ * TAILQ_HEAD(__cq_fq, __dbc) free_queue;
+ * TAILQ_HEAD(__cq_aq, __dbc) active_queue;
+ * TAILQ_HEAD(__cq_jq, __dbc) join_queue;
+ */
+ struct __cq_fq {
+ struct __dbc *tqh_first;
+ struct __dbc **tqh_last;
+ } free_queue;
+ struct __cq_aq {
+ struct __dbc *tqh_first;
+ struct __dbc **tqh_last;
+ } active_queue;
+ struct __cq_jq {
+ struct __dbc *tqh_first;
+ struct __dbc **tqh_last;
+ } join_queue;
+
+ /*
+ * Secondary index support.
+ *
+ * Linked list of secondary indices -- set in the primary.
+ *
+ * !!!
+ * Explicit representations of structures from queue.h.
+ * LIST_HEAD(s_secondaries, __db);
+ */
+ struct {
+ struct __db *lh_first;
+ } s_secondaries;
+
+ /*
+ * List entries for secondaries, and reference count of how many
+ * threads are updating this secondary (see Dbc.put).
+ *
+ * !!!
+ * Note that these are synchronized by the primary's mutex, but
+ * filled in in the secondaries.
+ *
+ * !!!
+ * Explicit representations of structures from queue.h.
+ * LIST_ENTRY(__db) s_links;
+ */
+ struct {
+ struct __db *le_next;
+ struct __db **le_prev;
+ } s_links;
+ u_int32_t s_refcnt;
+
+ /* Secondary callback and free functions -- set in the secondary. */
+ int (*s_callback) __P((DB *, const DBT *, const DBT *, DBT *));
+
+ /* Reference to primary -- set in the secondary. */
+ DB *s_primary;
+
+#define DB_ASSOC_IMMUTABLE_KEY 0x00000001 /* Secondary key is immutable. */
+
+ /* Flags passed to associate -- set in the secondary. */
+ u_int32_t s_assoc_flags;
+
+ /* API-private structure: used by DB 1.85, C++, Java, Perl and Tcl */
+ void *api_internal;
+
+ /* Subsystem-private structure. */
+ void *bt_internal; /* Btree/Recno access method. */
+ void *h_internal; /* Hash access method. */
+ void *q_internal; /* Queue access method. */
+ void *xa_internal; /* XA. */
+
+ /* DB PUBLIC HANDLE LIST BEGIN */
+ int (*associate) __P((DB *, DB_TXN *, DB *,
+ int (*)(DB *, const DBT *, const DBT *, DBT *), u_int32_t));
+ int (*close) __P((DB *, u_int32_t));
+ int (*compact) __P((DB *,
+ DB_TXN *, DBT *, DBT *, DB_COMPACT *, u_int32_t, DBT *));
+ int (*cursor) __P((DB *, DB_TXN *, DBC **, u_int32_t));
+ int (*del) __P((DB *, DB_TXN *, DBT *, u_int32_t));
+ void (*err) __P((DB *, int, const char *, ...));
+ void (*errx) __P((DB *, const char *, ...));
+ int (*exists) __P((DB *, DB_TXN *, DBT *, u_int32_t));
+ int (*fd) __P((DB *, int *));
+ int (*get) __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t));
+ int (*get_bt_minkey) __P((DB *, u_int32_t *));
+ int (*get_byteswapped) __P((DB *, int *));
+ int (*get_cachesize) __P((DB *, u_int32_t *, u_int32_t *, int *));
+ int (*get_dbname) __P((DB *, const char **, const char **));
+ int (*get_encrypt_flags) __P((DB *, u_int32_t *));
+ DB_ENV *(*get_env) __P((DB *));
+ void (*get_errfile) __P((DB *, FILE **));
+ void (*get_errpfx) __P((DB *, const char **));
+ int (*get_flags) __P((DB *, u_int32_t *));
+ int (*get_h_ffactor) __P((DB *, u_int32_t *));
+ int (*get_h_nelem) __P((DB *, u_int32_t *));
+ int (*get_lorder) __P((DB *, int *));
+ DB_MPOOLFILE *(*get_mpf) __P((DB *));
+ void (*get_msgfile) __P((DB *, FILE **));
+ int (*get_multiple) __P((DB *));
+ int (*get_open_flags) __P((DB *, u_int32_t *));
+ int (*get_pagesize) __P((DB *, u_int32_t *));
+ int (*get_priority) __P((DB *, DB_CACHE_PRIORITY *));
+ int (*get_q_extentsize) __P((DB *, u_int32_t *));
+ int (*get_re_delim) __P((DB *, int *));
+ int (*get_re_len) __P((DB *, u_int32_t *));
+ int (*get_re_pad) __P((DB *, int *));
+ int (*get_re_source) __P((DB *, const char **));
+ int (*get_transactional) __P((DB *));
+ int (*get_type) __P((DB *, DBTYPE *));
+ int (*join) __P((DB *, DBC **, DBC **, u_int32_t));
+ int (*key_range)
+ __P((DB *, DB_TXN *, DBT *, DB_KEY_RANGE *, u_int32_t));
+ int (*open) __P((DB *,
+ DB_TXN *, const char *, const char *, DBTYPE, u_int32_t, int));
+ int (*pget) __P((DB *, DB_TXN *, DBT *, DBT *, DBT *, u_int32_t));
+ int (*put) __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t));
+ int (*remove) __P((DB *, const char *, const char *, u_int32_t));
+ int (*rename) __P((DB *,
+ const char *, const char *, const char *, u_int32_t));
+ int (*set_alloc) __P((DB *, void *(*)(size_t),
+ void *(*)(void *, size_t), void (*)(void *)));
+ int (*set_append_recno) __P((DB *, int (*)(DB *, DBT *, db_recno_t)));
+ int (*set_bt_compare)
+ __P((DB *, int (*)(DB *, const DBT *, const DBT *)));
+ int (*set_bt_minkey) __P((DB *, u_int32_t));
+ int (*set_bt_prefix)
+ __P((DB *, size_t (*)(DB *, const DBT *, const DBT *)));
+ int (*set_cachesize) __P((DB *, u_int32_t, u_int32_t, int));
+ int (*set_dup_compare)
+ __P((DB *, int (*)(DB *, const DBT *, const DBT *)));
+ int (*set_encrypt) __P((DB *, const char *, u_int32_t));
+ void (*set_errcall) __P((DB *,
+ void (*)(const DB_ENV *, const char *, const char *)));
+ void (*set_errfile) __P((DB *, FILE *));
+ void (*set_errpfx) __P((DB *, const char *));
+ int (*set_feedback) __P((DB *, void (*)(DB *, int, int)));
+ int (*set_flags) __P((DB *, u_int32_t));
+ int (*set_h_compare)
+ __P((DB *, int (*)(DB *, const DBT *, const DBT *)));
+ int (*set_h_ffactor) __P((DB *, u_int32_t));
+ int (*set_h_hash)
+ __P((DB *, u_int32_t (*)(DB *, const void *, u_int32_t)));
+ int (*set_h_nelem) __P((DB *, u_int32_t));
+ int (*set_lorder) __P((DB *, int));
+ void (*set_msgcall) __P((DB *, void (*)(const DB_ENV *, const char *)));
+ void (*set_msgfile) __P((DB *, FILE *));
+ int (*set_pagesize) __P((DB *, u_int32_t));
+ int (*set_paniccall) __P((DB *, void (*)(DB_ENV *, int)));
+ int (*set_priority) __P((DB *, DB_CACHE_PRIORITY));
+ int (*set_q_extentsize) __P((DB *, u_int32_t));
+ int (*set_re_delim) __P((DB *, int));
+ int (*set_re_len) __P((DB *, u_int32_t));
+ int (*set_re_pad) __P((DB *, int));
+ int (*set_re_source) __P((DB *, const char *));
+ int (*stat) __P((DB *, DB_TXN *, void *, u_int32_t));
+ int (*stat_print) __P((DB *, u_int32_t));
+ int (*sync) __P((DB *, u_int32_t));
+ int (*truncate) __P((DB *, DB_TXN *, u_int32_t *, u_int32_t));
+ int (*upgrade) __P((DB *, const char *, u_int32_t));
+ int (*verify)
+ __P((DB *, const char *, const char *, FILE *, u_int32_t));
+ /* DB PUBLIC HANDLE LIST END */
+
+ /* DB PRIVATE HANDLE LIST BEGIN */
+ int (*dump) __P((DB *, const char *,
+ int (*)(void *, const void *), void *, int, int));
+ int (*db_am_remove) __P((DB *, DB_TXN *, const char *, const char *));
+ int (*db_am_rename) __P((DB *, DB_TXN *,
+ const char *, const char *, const char *));
+ /* DB PRIVATE HANDLE LIST END */
+
+ /*
+ * Never called; these are a place to save function pointers
+ * so that we can undo an associate.
+ */
+ int (*stored_get) __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t));
+ int (*stored_close) __P((DB *, u_int32_t));
+
+#define DB_OK_BTREE 0x01
+#define DB_OK_HASH 0x02
+#define DB_OK_QUEUE 0x04
+#define DB_OK_RECNO 0x08
+ u_int32_t am_ok; /* Legal AM choices. */
+
+ /*
+ * This field really ought to be an AM_FLAG, but we have
+ * have run out of bits. If/when we decide to split up
+ * the flags, we can incorporate it.
+ */
+ int preserve_fid; /* Do not free fileid on close. */
+
+#define DB_AM_CHKSUM 0x00000001 /* Checksumming */
+#define DB_AM_COMPENSATE 0x00000002 /* Created by compensating txn */
+#define DB_AM_CREATED 0x00000004 /* Database was created upon open */
+#define DB_AM_CREATED_MSTR 0x00000008 /* Encompassing file was created */
+#define DB_AM_DBM_ERROR 0x00000010 /* Error in DBM/NDBM database */
+#define DB_AM_DELIMITER 0x00000020 /* Variable length delimiter set */
+#define DB_AM_DISCARD 0x00000040 /* Discard any cached pages */
+#define DB_AM_DUP 0x00000080 /* DB_DUP */
+#define DB_AM_DUPSORT 0x00000100 /* DB_DUPSORT */
+#define DB_AM_ENCRYPT 0x00000200 /* Encryption */
+#define DB_AM_FIXEDLEN 0x00000400 /* Fixed-length records */
+#define DB_AM_INMEM 0x00000800 /* In-memory; no sync on close */
+#define DB_AM_INORDER 0x00001000 /* DB_INORDER */
+#define DB_AM_IN_RENAME 0x00002000 /* File is being renamed */
+#define DB_AM_NOT_DURABLE 0x00004000 /* Do not log changes */
+#define DB_AM_OPEN_CALLED 0x00008000 /* DB->open called */
+#define DB_AM_PAD 0x00010000 /* Fixed-length record pad */
+#define DB_AM_PGDEF 0x00020000 /* Page size was defaulted */
+#define DB_AM_RDONLY 0x00040000 /* Database is readonly */
+#define DB_AM_READ_UNCOMMITTED 0x00080000 /* Support degree 1 isolation */
+#define DB_AM_RECNUM 0x00100000 /* DB_RECNUM */
+#define DB_AM_RECOVER 0x00200000 /* DB opened by recovery routine */
+#define DB_AM_RENUMBER 0x00400000 /* DB_RENUMBER */
+#define DB_AM_REVSPLITOFF 0x00800000 /* DB_REVSPLITOFF */
+#define DB_AM_SECONDARY 0x01000000 /* Database is a secondary index */
+#define DB_AM_SNAPSHOT 0x02000000 /* DB_SNAPSHOT */
+#define DB_AM_SUBDB 0x04000000 /* Subdatabases supported */
+#define DB_AM_SWAP 0x08000000 /* Pages need to be byte-swapped */
+#define DB_AM_TXN 0x10000000 /* Opened in a transaction */
+#define DB_AM_VERIFYING 0x20000000 /* DB handle is in the verifier */
+ u_int32_t orig_flags; /* Flags at open, for refresh */
+ u_int32_t flags;
+};
+
+/*
+ * Macros for bulk get. These are only intended for the C API.
+ * For C++, use DbMultiple*Iterator.
+ */
+#define DB_MULTIPLE_INIT(pointer, dbt) \
+ (pointer = (u_int8_t *)(dbt)->data + \
+ (dbt)->ulen - sizeof(u_int32_t))
+#define DB_MULTIPLE_NEXT(pointer, dbt, retdata, retdlen) \
+ do { \
+ if (*((u_int32_t *)(pointer)) == (u_int32_t)-1) { \
+ retdata = NULL; \
+ pointer = NULL; \
+ break; \
+ } \
+ retdata = (u_int8_t *) \
+ (dbt)->data + *(u_int32_t *)(pointer); \
+ (pointer) = (u_int32_t *)(pointer) - 1; \
+ retdlen = *(u_int32_t *)(pointer); \
+ (pointer) = (u_int32_t *)(pointer) - 1; \
+ if (retdlen == 0 && \
+ retdata == (u_int8_t *)(dbt)->data) \
+ retdata = NULL; \
+ } while (0)
+#define DB_MULTIPLE_KEY_NEXT(pointer, dbt, retkey, retklen, retdata, retdlen) \
+ do { \
+ if (*((u_int32_t *)(pointer)) == (u_int32_t)-1) { \
+ retdata = NULL; \
+ retkey = NULL; \
+ pointer = NULL; \
+ break; \
+ } \
+ retkey = (u_int8_t *) \
+ (dbt)->data + *(u_int32_t *)(pointer); \
+ (pointer) = (u_int32_t *)(pointer) - 1; \
+ retklen = *(u_int32_t *)(pointer); \
+ (pointer) = (u_int32_t *)(pointer) - 1; \
+ retdata = (u_int8_t *) \
+ (dbt)->data + *(u_int32_t *)(pointer); \
+ (pointer) = (u_int32_t *)(pointer) - 1; \
+ retdlen = *(u_int32_t *)(pointer); \
+ (pointer) = (u_int32_t *)(pointer) - 1; \
+ } while (0)
+
+#define DB_MULTIPLE_RECNO_NEXT(pointer, dbt, recno, retdata, retdlen) \
+ do { \
+ if (*((u_int32_t *)(pointer)) == (u_int32_t)0) { \
+ recno = 0; \
+ retdata = NULL; \
+ pointer = NULL; \
+ break; \
+ } \
+ recno = *(u_int32_t *)(pointer); \
+ (pointer) = (u_int32_t *)(pointer) - 1; \
+ retdata = (u_int8_t *) \
+ (dbt)->data + *(u_int32_t *)(pointer); \
+ (pointer) = (u_int32_t *)(pointer) - 1; \
+ retdlen = *(u_int32_t *)(pointer); \
+ (pointer) = (u_int32_t *)(pointer) - 1; \
+ } while (0)
+
+/*******************************************************
+ * Access method cursors.
+ *******************************************************/
+struct __dbc {
+ DB *dbp; /* Related DB access method. */
+ DB_TXN *txn; /* Associated transaction. */
+ DB_CACHE_PRIORITY priority; /* Priority in cache. */
+
+ /*
+ * Active/free cursor queues.
+ *
+ * !!!
+ * Explicit representations of structures from queue.h.
+ * TAILQ_ENTRY(__dbc) links;
+ */
+ struct {
+ DBC *tqe_next;
+ DBC **tqe_prev;
+ } links;
+
+ /*
+ * The DBT *'s below are used by the cursor routines to return
+ * data to the user when DBT flags indicate that DB should manage
+ * the returned memory. They point at a DBT containing the buffer
+ * and length that will be used, and "belonging" to the handle that
+ * should "own" this memory. This may be a "my_*" field of this
+ * cursor--the default--or it may be the corresponding field of
+ * another cursor, a DB handle, a join cursor, etc. In general, it
+ * will be whatever handle the user originally used for the current
+ * DB interface call.
+ */
+ DBT *rskey; /* Returned secondary key. */
+ DBT *rkey; /* Returned [primary] key. */
+ DBT *rdata; /* Returned data. */
+
+ DBT my_rskey; /* Space for returned secondary key. */
+ DBT my_rkey; /* Space for returned [primary] key. */
+ DBT my_rdata; /* Space for returned data. */
+
+ void *lref; /* Reference to default locker. */
+ DB_LOCKER *locker; /* Locker for this operation. */
+ DBT lock_dbt; /* DBT referencing lock. */
+ DB_LOCK_ILOCK lock; /* Object to be locked. */
+ DB_LOCK mylock; /* CDB lock held on this cursor. */
+
+ u_int cl_id; /* Remote client id. */
+
+ DBTYPE dbtype; /* Cursor type. */
+
+ DBC_INTERNAL *internal; /* Access method private. */
+
+ /* DBC PUBLIC HANDLE LIST BEGIN */
+ int (*close) __P((DBC *));
+ int (*count) __P((DBC *, db_recno_t *, u_int32_t));
+ int (*del) __P((DBC *, u_int32_t));
+ int (*dup) __P((DBC *, DBC **, u_int32_t));
+ int (*get) __P((DBC *, DBT *, DBT *, u_int32_t));
+ int (*get_priority) __P((DBC *, DB_CACHE_PRIORITY *));
+ int (*pget) __P((DBC *, DBT *, DBT *, DBT *, u_int32_t));
+ int (*put) __P((DBC *, DBT *, DBT *, u_int32_t));
+ int (*set_priority) __P((DBC *, DB_CACHE_PRIORITY));
+ /* DBC PUBLIC HANDLE LIST END */
+
+ /* The following are the method names deprecated in the 4.6 release. */
+ int (*c_close) __P((DBC *));
+ int (*c_count) __P((DBC *, db_recno_t *, u_int32_t));
+ int (*c_del) __P((DBC *, u_int32_t));
+ int (*c_dup) __P((DBC *, DBC **, u_int32_t));
+ int (*c_get) __P((DBC *, DBT *, DBT *, u_int32_t));
+ int (*c_pget) __P((DBC *, DBT *, DBT *, DBT *, u_int32_t));
+ int (*c_put) __P((DBC *, DBT *, DBT *, u_int32_t));
+
+ /* DBC PRIVATE HANDLE LIST BEGIN */
+ int (*am_bulk) __P((DBC *, DBT *, u_int32_t));
+ int (*am_close) __P((DBC *, db_pgno_t, int *));
+ int (*am_del) __P((DBC *));
+ int (*am_destroy) __P((DBC *));
+ int (*am_get) __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *));
+ int (*am_put) __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *));
+ int (*am_writelock) __P((DBC *));
+ /* DBC PRIVATE HANDLE LIST END */
+
+/*
+ * DBC_DONTLOCK and DBC_RECOVER are used during recovery and transaction
+ * abort. If a transaction is being aborted or recovered then DBC_RECOVER
+ * will be set and locking and logging will be disabled on this cursor. If
+ * we are performing a compensating transaction (e.g. free page processing)
+ * then DB_DONTLOCK will be set to inhibit locking, but logging will still
+ * be required. DB_DONTLOCK is also used if the whole database is locked.
+ */
+#define DBC_ACTIVE 0x0001 /* Cursor in use. */
+#define DBC_DONTLOCK 0x0002 /* Don't lock on this cursor. */
+#define DBC_MULTIPLE 0x0004 /* Return Multiple data. */
+#define DBC_MULTIPLE_KEY 0x0008 /* Return Multiple keys and data. */
+#define DBC_OPD 0x0010 /* Cursor references off-page dups. */
+#define DBC_OWN_LID 0x0020 /* Free lock id on destroy. */
+#define DBC_READ_COMMITTED 0x0040 /* Cursor has degree 2 isolation. */
+#define DBC_READ_UNCOMMITTED 0x0080 /* Cursor has degree 1 isolation. */
+#define DBC_RECOVER 0x0100 /* Recovery cursor; don't log/lock. */
+#define DBC_RMW 0x0200 /* Acquire write flag in read op. */
+#define DBC_TRANSIENT 0x0400 /* Cursor is transient. */
+#define DBC_WRITECURSOR 0x0800 /* Cursor may be used to write (CDB). */
+#define DBC_WRITER 0x1000 /* Cursor immediately writing (CDB). */
+ u_int32_t flags;
+};
+
+/* Key range statistics structure */
+struct __key_range {
+ double less;
+ double equal;
+ double greater;
+};
+
+/* Btree/Recno statistics structure. */
+struct __db_bt_stat {
+ u_int32_t bt_magic; /* Magic number. */
+ u_int32_t bt_version; /* Version number. */
+ u_int32_t bt_metaflags; /* Metadata flags. */
+ u_int32_t bt_nkeys; /* Number of unique keys. */
+ u_int32_t bt_ndata; /* Number of data items. */
+ u_int32_t bt_pagecnt; /* Page count. */
+ u_int32_t bt_pagesize; /* Page size. */
+ u_int32_t bt_minkey; /* Minkey value. */
+ u_int32_t bt_re_len; /* Fixed-length record length. */
+ u_int32_t bt_re_pad; /* Fixed-length record pad. */
+ u_int32_t bt_levels; /* Tree levels. */
+ u_int32_t bt_int_pg; /* Internal pages. */
+ u_int32_t bt_leaf_pg; /* Leaf pages. */
+ u_int32_t bt_dup_pg; /* Duplicate pages. */
+ u_int32_t bt_over_pg; /* Overflow pages. */
+ u_int32_t bt_empty_pg; /* Empty pages. */
+ u_int32_t bt_free; /* Pages on the free list. */
+ u_int32_t bt_int_pgfree; /* Bytes free in internal pages. */
+ u_int32_t bt_leaf_pgfree; /* Bytes free in leaf pages. */
+ u_int32_t bt_dup_pgfree; /* Bytes free in duplicate pages. */
+ u_int32_t bt_over_pgfree; /* Bytes free in overflow pages. */
+};
+
+struct __db_compact {
+ /* Input Parameters. */
+ u_int32_t compact_fillpercent; /* Desired fillfactor: 1-100 */
+ db_timeout_t compact_timeout; /* Lock timeout. */
+ u_int32_t compact_pages; /* Max pages to process. */
+ /* Output Stats. */
+ u_int32_t compact_pages_free; /* Number of pages freed. */
+ u_int32_t compact_pages_examine; /* Number of pages examine. */
+ u_int32_t compact_levels; /* Number of levels removed. */
+ u_int32_t compact_deadlock; /* Number of deadlocks. */
+ db_pgno_t compact_pages_truncated; /* Pages truncated to OS. */
+ /* Internal. */
+ db_pgno_t compact_truncate; /* Page number for truncation */
+};
+
+/* Hash statistics structure. */
+struct __db_h_stat {
+ u_int32_t hash_magic; /* Magic number. */
+ u_int32_t hash_version; /* Version number. */
+ u_int32_t hash_metaflags; /* Metadata flags. */
+ u_int32_t hash_nkeys; /* Number of unique keys. */
+ u_int32_t hash_ndata; /* Number of data items. */
+ u_int32_t hash_pagecnt; /* Page count. */
+ u_int32_t hash_pagesize; /* Page size. */
+ u_int32_t hash_ffactor; /* Fill factor specified at create. */
+ u_int32_t hash_buckets; /* Number of hash buckets. */
+ u_int32_t hash_free; /* Pages on the free list. */
+ u_int32_t hash_bfree; /* Bytes free on bucket pages. */
+ u_int32_t hash_bigpages; /* Number of big key/data pages. */
+ u_int32_t hash_big_bfree; /* Bytes free on big item pages. */
+ u_int32_t hash_overflows; /* Number of overflow pages. */
+ u_int32_t hash_ovfl_free; /* Bytes free on ovfl pages. */
+ u_int32_t hash_dup; /* Number of dup pages. */
+ u_int32_t hash_dup_free; /* Bytes free on duplicate pages. */
+};
+
+/* Queue statistics structure. */
+struct __db_qam_stat {
+ u_int32_t qs_magic; /* Magic number. */
+ u_int32_t qs_version; /* Version number. */
+ u_int32_t qs_metaflags; /* Metadata flags. */
+ u_int32_t qs_nkeys; /* Number of unique keys. */
+ u_int32_t qs_ndata; /* Number of data items. */
+ u_int32_t qs_pagesize; /* Page size. */
+ u_int32_t qs_extentsize; /* Pages per extent. */
+ u_int32_t qs_pages; /* Data pages. */
+ u_int32_t qs_re_len; /* Fixed-length record length. */
+ u_int32_t qs_re_pad; /* Fixed-length record pad. */
+ u_int32_t qs_pgfree; /* Bytes free in data pages. */
+ u_int32_t qs_first_recno; /* First not deleted record. */
+ u_int32_t qs_cur_recno; /* Next available record number. */
+};
+
+/*******************************************************
+ * Environment.
+ *******************************************************/
+#define DB_REGION_MAGIC 0x120897 /* Environment magic number. */
+
+/* Database Environment handle. */
+struct __db_env {
+ /*******************************************************
+ * Public: owned by the application.
+ *******************************************************/
+ /* Error message callback. */
+ void (*db_errcall) __P((const DB_ENV *, const char *, const char *));
+ FILE *db_errfile; /* Error message file stream. */
+ const char *db_errpfx; /* Error message prefix. */
+
+ FILE *db_msgfile; /* Statistics message file stream. */
+ /* Statistics message callback. */
+ void (*db_msgcall) __P((const DB_ENV *, const char *));
+
+ /* Other Callbacks. */
+ void (*db_feedback) __P((DB_ENV *, int, int));
+ void (*db_paniccall) __P((DB_ENV *, int));
+ void (*db_event_func) __P((DB_ENV *, u_int32_t, void *));
+
+ /* App-specified alloc functions. */
+ void *(*db_malloc) __P((size_t));
+ void *(*db_realloc) __P((void *, size_t));
+ void (*db_free) __P((void *));
+
+ /* Application callback to copy data to/from a custom data source. */
+#define DB_USERCOPY_GETDATA 0x0001
+#define DB_USERCOPY_SETDATA 0x0002
+ int (*dbt_usercopy)
+ __P((DBT *, u_int32_t, void *, u_int32_t, u_int32_t));
+
+ /*
+ * Currently, the verbose list is a bit field with room for 32
+ * entries. There's no reason that it needs to be limited, if
+ * there are ever more than 32 entries, convert to a bit array.
+ */
+#define DB_VERB_DEADLOCK 0x0001 /* Deadlock detection information. */
+#define DB_VERB_FILEOPS 0x0002 /* Major file operations. */
+#define DB_VERB_FILEOPS_ALL 0x0004 /* All file operations. */
+#define DB_VERB_RECOVERY 0x0008 /* Recovery information. */
+#define DB_VERB_REGISTER 0x0010 /* Dump waits-for table. */
+#define DB_VERB_REPLICATION 0x0020 /* Replication information. */
+#define DB_VERB_WAITSFOR 0x0040 /* Dump waits-for table. */
+ u_int32_t verbose; /* Verbose output. */
+
+ void *app_private; /* Application-private handle. */
+
+ int (*app_dispatch) /* User-specified recovery dispatch. */
+ __P((DB_ENV *, DBT *, DB_LSN *, db_recops));
+
+ /* Mutexes. */
+ u_int32_t mutex_align; /* Mutex alignment */
+ u_int32_t mutex_cnt; /* Number of mutexes to configure */
+ u_int32_t mutex_inc; /* Number of mutexes to add */
+ u_int32_t mutex_tas_spins;/* Test-and-set spin count */
+
+ struct {
+ int alloc_id; /* Allocation ID argument */
+ u_int32_t flags; /* Flags argument */
+ } *mutex_iq; /* Initial mutexes queue */
+ u_int mutex_iq_next; /* Count of initial mutexes */
+ u_int mutex_iq_max; /* Maximum initial mutexes */
+
+ /* Locking. */
+ u_int8_t *lk_conflicts; /* Two dimensional conflict matrix. */
+ int lk_modes; /* Number of lock modes in table. */
+ u_int32_t lk_max; /* Maximum number of locks. */
+ u_int32_t lk_max_lockers;/* Maximum number of lockers. */
+ u_int32_t lk_max_objects;/* Maximum number of locked objects. */
+ u_int32_t lk_detect; /* Deadlock detect on all conflicts. */
+ db_timeout_t lk_timeout; /* Lock timeout period. */
+
+ /* Logging. */
+ u_int32_t lg_bsize; /* Buffer size. */
+ u_int32_t lg_size; /* Log file size. */
+ u_int32_t lg_regionmax; /* Region size. */
+ int lg_filemode; /* Log file permission mode. */
+
+ /* Memory pool. */
+ u_int mp_ncache; /* Initial number of cache regions. */
+ u_int32_t mp_gbytes; /* Cache size: GB. */
+ u_int32_t mp_bytes; /* Cache size: bytes. */
+ u_int32_t mp_max_gbytes; /* Maximum cache size: GB. */
+ u_int32_t mp_max_bytes; /* Maximum cache size: bytes. */
+ size_t mp_mmapsize; /* Maximum file size for mmap. */
+ int mp_maxopenfd; /* Maximum open file descriptors. */
+ int mp_maxwrite; /* Maximum buffers to write. */
+ db_timeout_t mp_maxwrite_sleep; /* Sleep after writing max buffers. */
+
+ /* Transactions. */
+ u_int32_t tx_max; /* Maximum number of transactions. */
+ time_t tx_timestamp; /* Recover to specific timestamp. */
+ db_timeout_t tx_timeout; /* Timeout for transactions. */
+
+ /* Thread tracking. */
+ u_int32_t thr_nbucket; /* Number of hash buckets. */
+ u_int32_t thr_max; /* Max before garbage collection. */
+ void *thr_hashtab; /* Hash table of DB_THREAD_INFO. */
+
+ /*******************************************************
+ * Private: owned by DB.
+ *******************************************************/
+ db_mutex_t mtx_env; /* General DbEnv structure mutex. */
+
+ pid_t pid_cache; /* Cached process ID. */
+
+ /* User files, paths. */
+ char *db_home; /* Database home. */
+ char *db_log_dir; /* Database log file directory. */
+ char *db_tmp_dir; /* Database tmp file directory. */
+
+ char **db_data_dir; /* Database data file directories. */
+ int data_cnt; /* Database data file slots. */
+ int data_next; /* Next Database data file slot. */
+
+ int db_mode; /* Default open permissions. */
+ int dir_mode; /* Intermediate directory perms. */
+ void *env_lref; /* Locker in non-threaded handles. */
+ u_int32_t open_flags; /* Flags passed to DB_ENV->open. */
+
+ void *reginfo; /* REGINFO structure reference. */
+ DB_FH *lockfhp; /* fcntl(2) locking file handle. */
+
+ DB_FH *registry; /* DB_REGISTER file handle. */
+ u_int32_t registry_off; /*
+ * Offset of our slot. We can't use
+ * off_t because its size depends on
+ * build settings.
+ */
+
+ /* Return IDs. */
+ void (*thread_id) __P((DB_ENV *, pid_t *, db_threadid_t *));
+ /* Return if IDs alive. */
+ int (*is_alive)
+ __P((DB_ENV *, pid_t, db_threadid_t, u_int32_t));
+ /* Format IDs into a string. */
+ char *(*thread_id_string)
+ __P((DB_ENV *, pid_t, db_threadid_t, char *));
+
+ int (**recover_dtab) /* Dispatch table for recover funcs. */
+ __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+ size_t recover_dtab_size;
+ /* Slots in the dispatch table. */
+
+ void *cl_handle; /* RPC: remote client handle. */
+ u_int cl_id; /* RPC: remote client env id. */
+
+ int db_ref; /* DB reference count. */
+
+ long shm_key; /* shmget(2) key. */
+
+ /*
+ * List of open file handles for this DB_ENV. Must be protected
+ * for multi-threaded support.
+ *
+ * !!!
+ * Explicit representation of structure in queue.h.
+ * TAILQ_HEAD(__fdlist, __fh_t);
+ */
+ struct __fdlist {
+ struct __fh_t *tqh_first;
+ struct __fh_t **tqh_last;
+ } fdlist;
+
+ /*
+ * List of open DB handles for this DB_ENV, used for cursor
+ * adjustment. Must be protected for multi-threaded support.
+ *
+ * !!!
+ * Explicit representation of structure in queue.h.
+ * TAILQ_HEAD(__dblist, __db);
+ */
+ db_mutex_t mtx_dblist; /* Mutex. */
+ struct __dblist {
+ struct __db *tqh_first;
+ struct __db **tqh_last;
+ } dblist;
+
+ /*
+ * XA support.
+ *
+ * !!!
+ * Explicit representations of structures from queue.h.
+ * TAILQ_ENTRY(__db_env) links;
+ * TAILQ_HEAD(xa_txn, __db_txn);
+ */
+ struct {
+ struct __db_env *tqe_next;
+ struct __db_env **tqe_prev;
+ } links;
+ struct __xa_txn { /* XA Active Transactions. */
+ struct __db_txn *tqh_first;
+ struct __db_txn **tqh_last;
+ } xa_txn;
+ int xa_rmid; /* XA Resource Manager ID. */
+
+ char *passwd; /* Cryptography support. */
+ size_t passwd_len;
+ void *crypto_handle; /* Primary handle. */
+ db_mutex_t mtx_mt; /* Mersenne Twister mutex. */
+ int mti; /* Mersenne Twister index. */
+ u_long *mt; /* Mersenne Twister state vector. */
+
+ /* API-private structure. */
+ void *api1_internal; /* C++, Perl API private */
+ void *api2_internal; /* Java API private */
+
+ DB_LOCKTAB *lk_handle; /* Lock handle. */
+ DB_LOG *lg_handle; /* Log handle. */
+ DB_MPOOL *mp_handle; /* Mpool handle. */
+ DB_MUTEXMGR *mutex_handle; /* Mutex handle. */
+ DB_REP *rep_handle; /* Replication handle. */
+ DB_TXNMGR *tx_handle; /* Txn handle. */
+
+ /* DB_ENV PUBLIC HANDLE LIST BEGIN */
+ int (*cdsgroup_begin) __P((DB_ENV *, DB_TXN **));
+ int (*close) __P((DB_ENV *, u_int32_t));
+ int (*dbremove) __P((DB_ENV *,
+ DB_TXN *, const char *, const char *, u_int32_t));
+ int (*dbrename) __P((DB_ENV *,
+ DB_TXN *, const char *, const char *, const char *, u_int32_t));
+ void (*err) __P((const DB_ENV *, int, const char *, ...));
+ void (*errx) __P((const DB_ENV *, const char *, ...));
+ int (*failchk) __P((DB_ENV *, u_int32_t));
+ int (*fileid_reset) __P((DB_ENV *, const char *, u_int32_t));
+ int (*get_cachesize) __P((DB_ENV *, u_int32_t *, u_int32_t *, int *));
+ int (*get_cache_max) __P((DB_ENV *, u_int32_t *, u_int32_t *));
+ int (*get_data_dirs) __P((DB_ENV *, const char ***));
+ int (*get_encrypt_flags) __P((DB_ENV *, u_int32_t *));
+ void (*get_errfile) __P((DB_ENV *, FILE **));
+ void (*get_errpfx) __P((DB_ENV *, const char **));
+ int (*get_flags) __P((DB_ENV *, u_int32_t *));
+ int (*get_home) __P((DB_ENV *, const char **));
+ int (*get_lg_bsize) __P((DB_ENV *, u_int32_t *));
+ int (*get_lg_dir) __P((DB_ENV *, const char **));
+ int (*get_lg_filemode) __P((DB_ENV *, int *));
+ int (*get_lg_max) __P((DB_ENV *, u_int32_t *));
+ int (*get_lg_regionmax) __P((DB_ENV *, u_int32_t *));
+ int (*get_lk_conflicts) __P((DB_ENV *, const u_int8_t **, int *));
+ int (*get_lk_detect) __P((DB_ENV *, u_int32_t *));
+ int (*get_lk_max_lockers) __P((DB_ENV *, u_int32_t *));
+ int (*get_lk_max_locks) __P((DB_ENV *, u_int32_t *));
+ int (*get_lk_max_objects) __P((DB_ENV *, u_int32_t *));
+ int (*get_mp_max_openfd) __P((DB_ENV *, int *));
+ int (*get_mp_max_write) __P((DB_ENV *, int *, db_timeout_t *));
+ int (*get_mp_mmapsize) __P((DB_ENV *, size_t *));
+ void (*get_msgfile) __P((DB_ENV *, FILE **));
+ int (*get_open_flags) __P((DB_ENV *, u_int32_t *));
+ int (*get_shm_key) __P((DB_ENV *, long *));
+ int (*get_thread_count) __P((DB_ENV *, u_int32_t *));
+ int (*get_timeout) __P((DB_ENV *, db_timeout_t *, u_int32_t));
+ int (*get_tmp_dir) __P((DB_ENV *, const char **));
+ int (*get_tx_max) __P((DB_ENV *, u_int32_t *));
+ int (*get_tx_timestamp) __P((DB_ENV *, time_t *));
+ int (*get_verbose) __P((DB_ENV *, u_int32_t, int *));
+ int (*is_bigendian) __P((void));
+ int (*lock_detect) __P((DB_ENV *, u_int32_t, u_int32_t, int *));
+ int (*lock_get) __P((DB_ENV *,
+ u_int32_t, u_int32_t, const DBT *, db_lockmode_t, DB_LOCK *));
+ int (*lock_id) __P((DB_ENV *, u_int32_t *));
+ int (*lock_id_free) __P((DB_ENV *, u_int32_t));
+ int (*lock_put) __P((DB_ENV *, DB_LOCK *));
+ int (*lock_stat) __P((DB_ENV *, DB_LOCK_STAT **, u_int32_t));
+ int (*lock_stat_print) __P((DB_ENV *, u_int32_t));
+ int (*lock_vec) __P((DB_ENV *,
+ u_int32_t, u_int32_t, DB_LOCKREQ *, int, DB_LOCKREQ **));
+ int (*log_archive) __P((DB_ENV *, char **[], u_int32_t));
+ int (*log_cursor) __P((DB_ENV *, DB_LOGC **, u_int32_t));
+ int (*log_file) __P((DB_ENV *, const DB_LSN *, char *, size_t));
+ int (*log_flush) __P((DB_ENV *, const DB_LSN *));
+ int (*log_printf) __P((DB_ENV *, DB_TXN *, const char *, ...));
+ int (*log_put) __P((DB_ENV *, DB_LSN *, const DBT *, u_int32_t));
+ int (*log_stat) __P((DB_ENV *, DB_LOG_STAT **, u_int32_t));
+ int (*log_stat_print) __P((DB_ENV *, u_int32_t));
+ int (*lsn_reset) __P((DB_ENV *, const char *, u_int32_t));
+ int (*memp_fcreate) __P((DB_ENV *, DB_MPOOLFILE **, u_int32_t));
+ int (*memp_register) __P((DB_ENV *, int, int (*)(DB_ENV *,
+ db_pgno_t, void *, DBT *), int (*)(DB_ENV *,
+ db_pgno_t, void *, DBT *)));
+ int (*memp_stat) __P((DB_ENV *,
+ DB_MPOOL_STAT **, DB_MPOOL_FSTAT ***, u_int32_t));
+ int (*memp_stat_print) __P((DB_ENV *, u_int32_t));
+ int (*memp_sync) __P((DB_ENV *, DB_LSN *));
+ int (*memp_trickle) __P((DB_ENV *, int, int *));
+ int (*mutex_alloc) __P((DB_ENV *, u_int32_t, db_mutex_t *));
+ int (*mutex_free) __P((DB_ENV *, db_mutex_t));
+ int (*mutex_get_align) __P((DB_ENV *, u_int32_t *));
+ int (*mutex_get_increment) __P((DB_ENV *, u_int32_t *));
+ int (*mutex_get_max) __P((DB_ENV *, u_int32_t *));
+ int (*mutex_get_tas_spins) __P((DB_ENV *, u_int32_t *));
+ int (*mutex_lock) __P((DB_ENV *, db_mutex_t));
+ int (*mutex_set_align) __P((DB_ENV *, u_int32_t));
+ int (*mutex_set_increment) __P((DB_ENV *, u_int32_t));
+ int (*mutex_set_max) __P((DB_ENV *, u_int32_t));
+ int (*mutex_set_tas_spins) __P((DB_ENV *, u_int32_t));
+ int (*mutex_stat) __P((DB_ENV *, DB_MUTEX_STAT **, u_int32_t));
+ int (*mutex_stat_print) __P((DB_ENV *, u_int32_t));
+ int (*mutex_unlock) __P((DB_ENV *, db_mutex_t));
+ int (*open) __P((DB_ENV *, const char *, u_int32_t, int));
+ int (*remove) __P((DB_ENV *, const char *, u_int32_t));
+ int (*rep_elect) __P((DB_ENV *, int, int, u_int32_t));
+ int (*rep_flush) __P((DB_ENV *));
+ int (*rep_get_config) __P((DB_ENV *, u_int32_t, int *));
+ int (*rep_get_limit) __P((DB_ENV *, u_int32_t *, u_int32_t *));
+ int (*rep_get_nsites) __P((DB_ENV *, int *));
+ int (*rep_get_priority) __P((DB_ENV *, int *));
+ int (*rep_get_timeout) __P((DB_ENV *, int, u_int32_t *));
+ int (*rep_process_message)
+ __P((DB_ENV *, DBT *, DBT *, int, DB_LSN *));
+ int (*rep_set_config) __P((DB_ENV *, u_int32_t, int));
+ int (*rep_set_lease) __P((DB_ENV *, u_int32_t, u_int32_t));
+ int (*rep_set_limit) __P((DB_ENV *, u_int32_t, u_int32_t));
+ int (*rep_set_nsites) __P((DB_ENV *, int));
+ int (*rep_set_priority) __P((DB_ENV *, int));
+ int (*rep_set_timeout) __P((DB_ENV *, int, db_timeout_t));
+ int (*rep_set_transport) __P((DB_ENV *, int, int (*)(DB_ENV *,
+ const DBT *, const DBT *, const DB_LSN *, int, u_int32_t)));
+ int (*rep_start) __P((DB_ENV *, DBT *, u_int32_t));
+ int (*rep_stat) __P((DB_ENV *, DB_REP_STAT **, u_int32_t));
+ int (*rep_stat_print) __P((DB_ENV *, u_int32_t));
+ int (*rep_sync) __P((DB_ENV *, u_int32_t));
+ int (*repmgr_add_remote_site) __P((DB_ENV *, const char *, u_int,
+ int *, u_int32_t));
+ int (*repmgr_get_ack_policy) __P((DB_ENV *, int *));
+ int (*repmgr_set_ack_policy) __P((DB_ENV *, int));
+ int (*repmgr_set_local_site) __P((DB_ENV *, const char *, u_int,
+ u_int32_t));
+ int (*repmgr_site_list) __P((DB_ENV *, u_int *,
+ DB_REPMGR_SITE **));
+ int (*repmgr_start) __P((DB_ENV *, int, u_int32_t));
+ int (*repmgr_stat) __P((DB_ENV *, DB_REPMGR_STAT **, u_int32_t));
+ int (*repmgr_stat_print) __P((DB_ENV *, u_int32_t));
+ int (*set_alloc) __P((DB_ENV *, void *(*)(size_t),
+ void *(*)(void *, size_t), void (*)(void *)));
+ int (*set_app_dispatch)
+ __P((DB_ENV *, int (*)(DB_ENV *, DBT *, DB_LSN *, db_recops)));
+ int (*set_cachesize) __P((DB_ENV *, u_int32_t, u_int32_t, int));
+ int (*set_cache_max) __P((DB_ENV *, u_int32_t, u_int32_t));
+ int (*set_data_dir) __P((DB_ENV *, const char *));
+ int (*set_encrypt) __P((DB_ENV *, const char *, u_int32_t));
+ void (*set_errcall) __P((DB_ENV *,
+ void (*)(const DB_ENV *, const char *, const char *)));
+ void (*set_errfile) __P((DB_ENV *, FILE *));
+ void (*set_errpfx) __P((DB_ENV *, const char *));
+ int (*set_event_notify)
+ __P((DB_ENV *, void (*)(DB_ENV *, u_int32_t, void *)));
+ int (*set_feedback) __P((DB_ENV *, void (*)(DB_ENV *, int, int)));
+ int (*set_flags) __P((DB_ENV *, u_int32_t, int));
+ int (*set_intermediate_dir) __P((DB_ENV *, int, u_int32_t));
+ int (*set_isalive) __P((DB_ENV *,
+ int (*)(DB_ENV *, pid_t, db_threadid_t, u_int32_t)));
+ int (*set_lg_bsize) __P((DB_ENV *, u_int32_t));
+ int (*set_lg_dir) __P((DB_ENV *, const char *));
+ int (*set_lg_filemode) __P((DB_ENV *, int));
+ int (*set_lg_max) __P((DB_ENV *, u_int32_t));
+ int (*set_lg_regionmax) __P((DB_ENV *, u_int32_t));
+ int (*set_lk_conflicts) __P((DB_ENV *, u_int8_t *, int));
+ int (*set_lk_detect) __P((DB_ENV *, u_int32_t));
+ int (*set_lk_max_lockers) __P((DB_ENV *, u_int32_t));
+ int (*set_lk_max_locks) __P((DB_ENV *, u_int32_t));
+ int (*set_lk_max_objects) __P((DB_ENV *, u_int32_t));
+ int (*set_mp_max_openfd) __P((DB_ENV *, int));
+ int (*set_mp_max_write) __P((DB_ENV *, int, db_timeout_t));
+ int (*set_mp_mmapsize) __P((DB_ENV *, size_t));
+ void (*set_msgcall)
+ __P((DB_ENV *, void (*)(const DB_ENV *, const char *)));
+ void (*set_msgfile) __P((DB_ENV *, FILE *));
+ int (*set_paniccall) __P((DB_ENV *, void (*)(DB_ENV *, int)));
+ int (*set_rep_request) __P((DB_ENV *, u_int32_t, u_int32_t));
+ int (*set_rpc_server)
+ __P((DB_ENV *, void *, const char *, long, long, u_int32_t));
+ int (*set_shm_key) __P((DB_ENV *, long));
+ int (*set_thread_count) __P((DB_ENV *, u_int32_t));
+ int (*set_thread_id) __P((DB_ENV *,
+ void (*)(DB_ENV *, pid_t *, db_threadid_t *)));
+ int (*set_thread_id_string) __P((DB_ENV *,
+ char *(*)(DB_ENV *, pid_t, db_threadid_t, char *)));
+ int (*set_timeout) __P((DB_ENV *, db_timeout_t, u_int32_t));
+ int (*set_tmp_dir) __P((DB_ENV *, const char *));
+ int (*set_tx_max) __P((DB_ENV *, u_int32_t));
+ int (*set_tx_timestamp) __P((DB_ENV *, time_t *));
+ int (*set_verbose) __P((DB_ENV *, u_int32_t, int));
+ int (*stat_print) __P((DB_ENV *, u_int32_t));
+ int (*txn_begin) __P((DB_ENV *, DB_TXN *, DB_TXN **, u_int32_t));
+ int (*txn_checkpoint) __P((DB_ENV *, u_int32_t, u_int32_t, u_int32_t));
+ int (*txn_recover)
+ __P((DB_ENV *, DB_PREPLIST *, long, long *, u_int32_t));
+ int (*txn_stat) __P((DB_ENV *, DB_TXN_STAT **, u_int32_t));
+ int (*txn_stat_print) __P((DB_ENV *, u_int32_t));
+ /* DB_ENV PUBLIC HANDLE LIST END */
+
+ /* DB_ENV PRIVATE HANDLE LIST BEGIN */
+ int (*prdbt) __P((DBT *,
+ int, const char *, void *, int (*)(void *, const void *), int));
+ /* DB_ENV PRIVATE HANDLE LIST END */
+
+#define DB_TEST_ELECTINIT 1 /* after __rep_elect_init */
+#define DB_TEST_ELECTVOTE1 2 /* after sending VOTE1 */
+#define DB_TEST_POSTDESTROY 3 /* after destroy op */
+#define DB_TEST_POSTLOG 4 /* after logging all pages */
+#define DB_TEST_POSTLOGMETA 5 /* after logging meta in btree */
+#define DB_TEST_POSTOPEN 6 /* after __os_open */
+#define DB_TEST_POSTSYNC 7 /* after syncing the log */
+#define DB_TEST_PREDESTROY 8 /* before destroy op */
+#define DB_TEST_PREOPEN 9 /* before __os_open */
+#define DB_TEST_RECYCLE 10 /* test rep and txn_recycle */
+#define DB_TEST_SUBDB_LOCKS 11 /* subdb locking tests */
+ int test_abort; /* Abort value for testing. */
+ int test_check; /* Checkpoint value for testing. */
+ int test_copy; /* Copy value for testing. */
+
+#define DB_ENV_AUTO_COMMIT 0x00000001 /* DB_AUTO_COMMIT. */
+#define DB_ENV_CDB 0x00000002 /* DB_INIT_CDB. */
+#define DB_ENV_CDB_ALLDB 0x00000004 /* CDB environment wide locking. */
+#define DB_ENV_DBLOCAL 0x00000008 /* Environment for a private DB. */
+#define DB_ENV_DIRECT_DB 0x00000010 /* DB_DIRECT_DB set. */
+#define DB_ENV_DIRECT_LOG 0x00000020 /* DB_DIRECT_LOG set. */
+#define DB_ENV_DSYNC_DB 0x00000040 /* DB_DSYNC_DB set. */
+#define DB_ENV_DSYNC_LOG 0x00000080 /* DB_DSYNC_LOG set. */
+#define DB_ENV_LOCKDOWN 0x00000100 /* DB_LOCKDOWN set. */
+#define DB_ENV_LOG_AUTOREMOVE 0x00000200 /* DB_LOG_AUTOREMOVE set. */
+#define DB_ENV_LOG_INMEMORY 0x00000400 /* DB_LOG_INMEMORY set. */
+#define DB_ENV_MULTIVERSION 0x00000800 /* DB_MULTIVERSION set. */
+#define DB_ENV_NOLOCKING 0x00001000 /* DB_NOLOCKING set. */
+#define DB_ENV_NOMMAP 0x00002000 /* DB_NOMMAP set. */
+#define DB_ENV_NOPANIC 0x00004000 /* Okay if panic set. */
+#define DB_ENV_NO_OUTPUT_SET 0x00008000 /* No output channel set. */
+#define DB_ENV_OPEN_CALLED 0x00010000 /* DB_ENV->open called. */
+#define DB_ENV_OVERWRITE 0x00020000 /* DB_OVERWRITE set. */
+#define DB_ENV_PRIVATE 0x00040000 /* DB_PRIVATE set. */
+#define DB_ENV_RECOVER_FATAL 0x00080000 /* Doing fatal recovery in env. */
+#define DB_ENV_REF_COUNTED 0x00100000 /* Region references this handle. */
+#define DB_ENV_REGION_INIT 0x00200000 /* DB_REGION_INIT set. */
+#define DB_ENV_RPCCLIENT 0x00400000 /* DB_RPCCLIENT set. */
+#define DB_ENV_RPCCLIENT_GIVEN 0x00800000 /* User-supplied RPC client struct */
+#define DB_ENV_SYSTEM_MEM 0x01000000 /* DB_SYSTEM_MEM set. */
+#define DB_ENV_THREAD 0x02000000 /* DB_THREAD set. */
+#define DB_ENV_TIME_NOTGRANTED 0x04000000 /* DB_TIME_NOTGRANTED set. */
+#define DB_ENV_TXN_NOSYNC 0x08000000 /* DB_TXN_NOSYNC set. */
+#define DB_ENV_TXN_NOWAIT 0x10000000 /* DB_TXN_NOWAIT set. */
+#define DB_ENV_TXN_SNAPSHOT 0x20000000 /* DB_TXN_SNAPSHOT set. */
+#define DB_ENV_TXN_WRITE_NOSYNC 0x40000000 /* DB_TXN_WRITE_NOSYNC set. */
+#define DB_ENV_YIELDCPU 0x80000000 /* DB_YIELDCPU set. */
+ u_int32_t flags;
+};
+
+#ifndef DB_DBM_HSEARCH
+#define DB_DBM_HSEARCH 0 /* No historic interfaces by default. */
+#endif
+#if DB_DBM_HSEARCH != 0
+/*******************************************************
+ * Dbm/Ndbm historic interfaces.
+ *******************************************************/
+typedef struct __db DBM;
+
+#define DBM_INSERT 0 /* Flags to dbm_store(). */
+#define DBM_REPLACE 1
+
+/*
+ * The DB support for ndbm(3) always appends this suffix to the
+ * file name to avoid overwriting the user's original database.
+ */
+#define DBM_SUFFIX ".db"
+
+#if defined(_XPG4_2)
+typedef struct {
+ char *dptr;
+ size_t dsize;
+} datum;
+#else
+typedef struct {
+ char *dptr;
+ int dsize;
+} datum;
+#endif
+
+/*
+ * Translate NDBM calls into DB calls so that DB doesn't step on the
+ * application's name space.
+ */
+#define dbm_clearerr(a) __db_ndbm_clearerr(a)
+#define dbm_close(a) __db_ndbm_close(a)
+#define dbm_delete(a, b) __db_ndbm_delete(a, b)
+#define dbm_dirfno(a) __db_ndbm_dirfno(a)
+#define dbm_error(a) __db_ndbm_error(a)
+#define dbm_fetch(a, b) __db_ndbm_fetch(a, b)
+#define dbm_firstkey(a) __db_ndbm_firstkey(a)
+#define dbm_nextkey(a) __db_ndbm_nextkey(a)
+#define dbm_open(a, b, c) __db_ndbm_open(a, b, c)
+#define dbm_pagfno(a) __db_ndbm_pagfno(a)
+#define dbm_rdonly(a) __db_ndbm_rdonly(a)
+#define dbm_store(a, b, c, d) \
+ __db_ndbm_store(a, b, c, d)
+
+/*
+ * Translate DBM calls into DB calls so that DB doesn't step on the
+ * application's name space.
+ *
+ * The global variables dbrdonly, dirf and pagf were not retained when 4BSD
+ * replaced the dbm interface with ndbm, and are not supported here.
+ */
+#define dbminit(a) __db_dbm_init(a)
+#define dbmclose __db_dbm_close
+#if !defined(__cplusplus)
+#define delete(a) __db_dbm_delete(a)
+#endif
+#define fetch(a) __db_dbm_fetch(a)
+#define firstkey __db_dbm_firstkey
+#define nextkey(a) __db_dbm_nextkey(a)
+#define store(a, b) __db_dbm_store(a, b)
+
+/*******************************************************
+ * Hsearch historic interface.
+ *******************************************************/
+typedef enum {
+ FIND, ENTER
+} ACTION;
+
+typedef struct entry {
+ char *key;
+ char *data;
+} ENTRY;
+
+#define hcreate(a) __db_hcreate(a)
+#define hdestroy __db_hdestroy
+#define hsearch(a, b) __db_hsearch(a, b)
+
+#endif /* DB_DBM_HSEARCH */
+
+#if defined(__cplusplus)
+}
+#endif
+
+typedef struct {
+ AEEApplet a; /* AEEApplet must be listed first. */
+ void *db_global_values;
+} BDBApp;
+int brew_bdb_begin __P((void));
+void brew_bdb_end __P((void));
+#endif /* !_DB_H_ */
+
+/* DO NOT EDIT: automatically built by dist/s_include. */
+#ifndef _DB_EXT_PROT_IN_
+#define _DB_EXT_PROT_IN_
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+int db_create __P((DB **, DB_ENV *, u_int32_t));
+char *db_strerror __P((int));
+int db_env_create __P((DB_ENV **, u_int32_t));
+char *db_version __P((int *, int *, int *));
+int log_compare __P((const DB_LSN *, const DB_LSN *));
+int db_env_set_func_close __P((int (*)(int)));
+int db_env_set_func_dirfree __P((void (*)(char **, int)));
+int db_env_set_func_dirlist __P((int (*)(const char *, char ***, int *)));
+int db_env_set_func_exists __P((int (*)(const char *, int *)));
+int db_env_set_func_free __P((void (*)(void *)));
+int db_env_set_func_fsync __P((int (*)(int)));
+int db_env_set_func_ftruncate __P((int (*)(int, off_t)));
+int db_env_set_func_ioinfo __P((int (*)(const char *, int, u_int32_t *, u_int32_t *, u_int32_t *)));
+int db_env_set_func_malloc __P((void *(*)(size_t)));
+int db_env_set_func_map __P((int (*)(char *, size_t, int, int, void **)));
+int db_env_set_func_pread __P((ssize_t (*)(int, void *, size_t, off_t)));
+int db_env_set_func_pwrite __P((ssize_t (*)(int, const void *, size_t, off_t)));
+int db_env_set_func_open __P((int (*)(const char *, int, ...)));
+int db_env_set_func_read __P((ssize_t (*)(int, void *, size_t)));
+int db_env_set_func_realloc __P((void *(*)(void *, size_t)));
+int db_env_set_func_rename __P((int (*)(const char *, const char *)));
+int db_env_set_func_seek __P((int (*)(int, off_t, int)));
+int db_env_set_func_sleep __P((int (*)(u_long, u_long)));
+int db_env_set_func_unlink __P((int (*)(const char *)));
+int db_env_set_func_unmap __P((int (*)(void *, size_t)));
+int db_env_set_func_write __P((ssize_t (*)(int, const void *, size_t)));
+int db_env_set_func_yield __P((int (*)(void)));
+int db_sequence_create __P((DB_SEQUENCE **, DB *, u_int32_t));
+#if DB_DBM_HSEARCH != 0
+int __db_ndbm_clearerr __P((DBM *));
+void __db_ndbm_close __P((DBM *));
+int __db_ndbm_delete __P((DBM *, datum));
+int __db_ndbm_dirfno __P((DBM *));
+int __db_ndbm_error __P((DBM *));
+datum __db_ndbm_fetch __P((DBM *, datum));
+datum __db_ndbm_firstkey __P((DBM *));
+datum __db_ndbm_nextkey __P((DBM *));
+DBM *__db_ndbm_open __P((const char *, int, int));
+int __db_ndbm_pagfno __P((DBM *));
+int __db_ndbm_rdonly __P((DBM *));
+int __db_ndbm_store __P((DBM *, datum, datum, int));
+int __db_dbm_close __P((void));
+int __db_dbm_delete __P((datum));
+datum __db_dbm_fetch __P((datum));
+datum __db_dbm_firstkey __P((void));
+int __db_dbm_init __P((char *));
+datum __db_dbm_nextkey __P((datum));
+int __db_dbm_store __P((datum, datum));
+#endif
+#if DB_DBM_HSEARCH != 0
+int __db_hcreate __P((size_t));
+ENTRY *__db_hsearch __P((ENTRY, ACTION));
+void __db_hdestroy __P((void));
+#endif
+
+#if defined(__cplusplus)
+}
+#endif
+#endif /* !_DB_EXT_PROT_IN_ */
diff --git a/db/build_brew/db_config.h b/db/build_brew/db_config.h
new file mode 100644
index 000000000..28d8fdc58
--- /dev/null
+++ b/db/build_brew/db_config.h
@@ -0,0 +1,549 @@
+/* DO NOT EDIT: automatically built by dist/s_brew. */
+/* Define to 1 if you want to build a version for running the test suite. */
+/* #undef CONFIG_TEST */
+
+/* We use DB_WIN32 much as one would use _WIN32 -- to specify that we're using
+ an operating system environment that supports Win32 calls and semantics. We
+ don't use _WIN32 because Cygwin/GCC also defines _WIN32, even though
+ Cygwin/GCC closely emulates the Unix environment. */
+/* #undef DB_WIN32 */
+
+/* Define to 1 if you want a debugging version. */
+#if defined(_DEBUG)
+#if !defined(DEBUG)
+#define DEBUG 1
+#endif
+#endif
+
+/* Define to 1 if you want a version that logs read operations. */
+/* #undef DEBUG_ROP */
+
+/* Define to 1 if you want a version that logs write operations. */
+/* #undef DEBUG_WOP */
+
+/* Define to 1 if you want a version with run-time diagnostic checking. */
+/* #undef DIAGNOSTIC */
+
+/* Define to 1 if 64-bit types are available. */
+/* #undef HAVE_64BIT_TYPES */
+
+/* Define to 1 if you have the `abort' function. */
+/* #undef HAVE_ABORT */
+
+/* Define to 1 if you have the `atoi' function. */
+#define HAVE_ATOI 1
+
+/* Define to 1 if you have the `atol' function. */
+/* #undef HAVE_ATOL */
+
+/* Define to 1 if building BREW. */
+#define HAVE_BREW 1
+
+/* Define to 1 if building on BREW (SDK2). */
+#define HAVE_BREW_SDK2 1
+
+/* Define to 1 if you have the `clock_gettime' function. */
+/* #undef HAVE_CLOCK_GETTIME */
+
+/* Define to 1 if Berkeley DB release includes strong cryptography. */
+/* #undef HAVE_CRYPTO */
+
+/* Define to 1 if you have the `ctime_r' function. */
+/* #undef HAVE_CTIME_R */
+
+/* Define to 1 if ctime_r takes a buffer length as a third argument. */
+/* #undef HAVE_CTIME_R_3ARG */
+
+/* Define to 1 if you have the `directio' function. */
+/* #undef HAVE_DIRECTIO */
+
+/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
+ */
+/* #undef HAVE_DIRENT_H */
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+/* #undef HAVE_DLFCN_H */
+
+/* Define to 1 if you have EXIT_SUCCESS/EXIT_FAILURE #defines. */
+#define HAVE_EXIT_SUCCESS 1
+
+/* Define to 1 if you have the `fchmod' function. */
+/* #undef HAVE_FCHMOD */
+
+/* Define to 1 if you have the `fclose' function. */
+/* #undef HAVE_FCLOSE */
+
+/* Define to 1 if you have the `fcntl' function. */
+/* #undef HAVE_FCNTL */
+
+/* Define to 1 if fcntl/F_SETFD denies child access to file descriptors. */
+/* #undef HAVE_FCNTL_F_SETFD */
+
+/* Define to 1 if you have the `fdatasync' function. */
+/* #undef HAVE_FDATASYNC */
+
+/* Define to 1 if you have the `fgetc' function. */
+/* #undef HAVE_FGETC */
+
+/* Define to 1 if you have the `fgets' function. */
+/* #undef HAVE_FGETS */
+
+/* Define to 1 if allocated filesystem blocks are not zeroed. */
+#define HAVE_FILESYSTEM_NOTZERO 1
+
+/* Define to 1 to build Berkeley DB with a fine-grained lock manager. */
+/* #undef HAVE_FINE_GRAINED_LOCK_MANAGER */
+
+/* Define to 1 if you have the `fopen' function. */
+/* #undef HAVE_FOPEN */
+
+/* Define to 1 if you have the `ftruncate' function. */
+#define HAVE_FTRUNCATE 1
+
+/* Define to 1 if you have the `fwrite' function. */
+/* #undef HAVE_FWRITE */
+
+/* Define to 1 if you have the `getaddrinfo' function. */
+/* #undef HAVE_GETADDRINFO */
+
+/* Define to 1 if you have the `getcwd' function. */
+/* #undef HAVE_GETCWD */
+
+/* Define to 1 if you have the `getenv' function. */
+/* #undef HAVE_GETENV */
+
+/* Define to 1 if you have the `getopt' function. */
+/* #undef HAVE_GETOPT */
+
+/* Define to 1 if you have the `getrusage' function. */
+/* #undef HAVE_GETRUSAGE */
+
+/* Define to 1 if you have the `gettimeofday' function. */
+/* #undef HAVE_GETTIMEOFDAY */
+
+/* Define to 1 if you have the `getuid' function. */
+/* #undef HAVE_GETUID */
+
+/* Define to 1 if building Hash access method. */
+/* #undef HAVE_HASH */
+
+/* Define to 1 if you have the `hstrerror' function. */
+/* #undef HAVE_HSTRERROR */
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+/* #undef HAVE_INTTYPES_H */
+
+/* Define to 1 if you have the `isspace' function. */
+/* #undef HAVE_ISALPHA */
+
+/* Define to 1 if you have the `isspace' function. */
+/* #undef HAVE_ISDIGIT */
+
+/* Define to 1 if you have the `isspace' function. */
+/* #undef HAVE_ISPRINT */
+
+/* Define to 1 if you have the `isspace' function. */
+/* #undef HAVE_ISSPACE */
+
+/* Define to 1 if you have the `localtime' function. */
+/* #undef HAVE_LOCALTIME */
+
+/* Define to 1 if you have the `memcmp' function. */
+#define HAVE_MEMCMP 1
+
+/* Define to 1 if you have the `memcpy' function. */
+#define HAVE_MEMCPY 1
+
+/* Define to 1 if you have the `memmove' function. */
+#define HAVE_MEMMOVE 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+/* #undef HAVE_MEMORY_H */
+
+/* Define to 1 if you have the `mlock' function. */
+/* #undef HAVE_MLOCK */
+
+/* Define to 1 if you have the `mmap' function. */
+/* #undef HAVE_MMAP */
+
+/* Define to 1 if you have the `mprotect' function. */
+/* #undef HAVE_MPROTECT */
+
+/* Define to 1 if you have the `munlock' function. */
+/* #undef HAVE_MUNLOCK */
+
+/* Define to 1 if you have the `munmap' function. */
+/* #undef HAVE_MUNMAP */
+
+/* Define to 1 to use the GCC compiler and 68K assembly language mutexes. */
+/* #undef HAVE_MUTEX_68K_GCC_ASSEMBLY */
+
+/* Define to 1 to use the AIX _check_lock mutexes. */
+/* #undef HAVE_MUTEX_AIX_CHECK_LOCK */
+
+/* Define to 1 to use the GCC compiler and Alpha assembly language mutexes. */
+/* #undef HAVE_MUTEX_ALPHA_GCC_ASSEMBLY */
+
+/* Define to 1 to use the GCC compiler and ARM assembly language mutexes. */
+/* #undef HAVE_MUTEX_ARM_GCC_ASSEMBLY */
+
+/* Define to 1 to use the Apple/Darwin _spin_lock_try mutexes. */
+/* #undef HAVE_MUTEX_DARWIN_SPIN_LOCK_TRY */
+
+/* Define to 1 to use the UNIX fcntl system call mutexes. */
+/* #undef HAVE_MUTEX_FCNTL */
+
+/* Define to 1 to use the GCC compiler and PaRisc assembly language mutexes.
+ */
+/* #undef HAVE_MUTEX_HPPA_GCC_ASSEMBLY */
+
+/* Define to 1 to use the msem_XXX mutexes on HP-UX. */
+/* #undef HAVE_MUTEX_HPPA_MSEM_INIT */
+
+/* Define to 1 to use test-and-set mutexes with blocking mutexes. */
+/* #undef HAVE_MUTEX_HYBRID */
+
+/* Define to 1 to use the GCC compiler and IA64 assembly language mutexes. */
+/* #undef HAVE_MUTEX_IA64_GCC_ASSEMBLY */
+
+/* Define to 1 to use the GCC compiler and MIPS assembly language mutexes. */
+/* #undef HAVE_MUTEX_MIPS_GCC_ASSEMBLY */
+
+/* Define to 1 to use the msem_XXX mutexes on systems other than HP-UX. */
+/* #undef HAVE_MUTEX_MSEM_INIT */
+
+/* Define to 1 to use the GCC compiler and PowerPC assembly language mutexes.
+ */
+/* #undef HAVE_MUTEX_PPC_GCC_ASSEMBLY */
+
+/* Define to 1 to use POSIX 1003.1 pthread_XXX mutexes. */
+/* #undef HAVE_MUTEX_PTHREADS */
+
+/* Define to 1 to use Reliant UNIX initspin mutexes. */
+/* #undef HAVE_MUTEX_RELIANTUNIX_INITSPIN */
+
+/* Define to 1 to use the IBM C compiler and S/390 assembly language mutexes.
+ */
+/* #undef HAVE_MUTEX_S390_CC_ASSEMBLY */
+
+/* Define to 1 to use the GCC compiler and S/390 assembly language mutexes. */
+/* #undef HAVE_MUTEX_S390_GCC_ASSEMBLY */
+
+/* Define to 1 to use the SCO compiler and x86 assembly language mutexes. */
+/* #undef HAVE_MUTEX_SCO_X86_CC_ASSEMBLY */
+
+/* Define to 1 to use the obsolete POSIX 1003.1 sema_XXX mutexes. */
+/* #undef HAVE_MUTEX_SEMA_INIT */
+
+/* Define to 1 to use the SGI XXX_lock mutexes. */
+/* #undef HAVE_MUTEX_SGI_INIT_LOCK */
+
+/* Define to 1 to use the Solaris _lock_XXX mutexes. */
+/* #undef HAVE_MUTEX_SOLARIS_LOCK_TRY */
+
+/* Define to 1 to use the Solaris lwp threads mutexes. */
+/* #undef HAVE_MUTEX_SOLARIS_LWP */
+
+/* Define to 1 to use the GCC compiler and Sparc assembly language mutexes. */
+/* #undef HAVE_MUTEX_SPARC_GCC_ASSEMBLY */
+
+/* Define to 1 if the Berkeley DB library should support mutexes. */
+/* #undef HAVE_MUTEX_SUPPORT */
+
+/* Define to 1 if mutexes hold system resources. */
+/* #undef HAVE_MUTEX_SYSTEM_RESOURCES */
+
+/* Define to 1 to configure mutexes intra-process only. */
+/* #undef HAVE_MUTEX_THREAD_ONLY */
+
+/* Define to 1 to use the CC compiler and Tru64 assembly language mutexes. */
+/* #undef HAVE_MUTEX_TRU64_CC_ASSEMBLY */
+
+/* Define to 1 to use the UNIX International mutexes. */
+/* #undef HAVE_MUTEX_UI_THREADS */
+
+/* Define to 1 to use the UTS compiler and assembly language mutexes. */
+/* #undef HAVE_MUTEX_UTS_CC_ASSEMBLY */
+
+/* Define to 1 to use VMS mutexes. */
+/* #undef HAVE_MUTEX_VMS */
+
+/* Define to 1 to use VxWorks mutexes. */
+/* #undef HAVE_MUTEX_VXWORKS */
+
+/* Define to 1 to use the MSVC compiler and Windows mutexes. */
+/* #undef HAVE_MUTEX_WIN32 */
+
+/* Define to 1 to use the GCC compiler and Windows mutexes. */
+/* #undef HAVE_MUTEX_WIN32_GCC */
+
+/* Define to 1 to use the GCC compiler and 64-bit x86 assembly language
+ mutexes. */
+/* #undef HAVE_MUTEX_X86_64_GCC_ASSEMBLY */
+
+/* Define to 1 to use the GCC compiler and 32-bit x86 assembly language
+ mutexes. */
+/* #undef HAVE_MUTEX_X86_GCC_ASSEMBLY */
+
+/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
+/* #undef HAVE_NDIR_H */
+
+/* Define to 1 if you have the O_DIRECT flag. */
+/* #undef HAVE_O_DIRECT */
+
+/* Define to 1 if you have the `pread' function. */
+/* #undef HAVE_PREAD */
+
+/* Define to 1 if you have the `printf' function. */
+/* #undef HAVE_PRINTF */
+
+/* Define to 1 if you have the `pstat_getdynamic' function. */
+/* #undef HAVE_PSTAT_GETDYNAMIC */
+
+/* Define to 1 to configure Berkeley DB for POSIX pthread API. */
+/* #undef HAVE_PTHREAD_API */
+
+/* Define to 1 if you have the `pthread_yield' function. */
+/* #undef HAVE_PTHREAD_YIELD */
+
+/* Define to 1 if you have the `pwrite' function. */
+/* #undef HAVE_PWRITE */
+
+/* Define to 1 if building on QNX. */
+/* #undef HAVE_QNX */
+
+/* Define to 1 if you have the `qsort' function. */
+/* #undef HAVE_QSORT */
+
+/* Define to 1 if building Queue access method. */
+/* #undef HAVE_QUEUE */
+
+/* Define to 1 if you have the `raise' function. */
+/* #undef HAVE_RAISE */
+
+/* Define to 1 if you have the `rand' function. */
+/* #undef HAVE_RAND */
+
+/* Define to 1 if building replication support. */
+/* #undef HAVE_REPLICATION */
+
+/* Define to 1 if building the Berkeley DB replication framework. */
+/* #undef HAVE_REPLICATION_THREADS */
+
+/* Define to 1 if building RPC client/server. */
+/* #undef HAVE_RPC */
+
+/* Define to 1 if building on S60. */
+/* #undef HAVE_S60 */
+
+/* Define to 1 if you have the `sched_yield' function. */
+/* #undef HAVE_SCHED_YIELD */
+
+/* Define to 1 if you have the `select' function. */
+/* #undef HAVE_SELECT */
+
+/* Define to 1 if you have the `shmget' function. */
+/* #undef HAVE_SHMGET */
+
+/* Define to 1 if you have the `sigaction' function. */
+/* #undef HAVE_SIGACTION */
+
+/* Define to 1 if thread identifier type db_threadid_t is integral. */
+/* #undef HAVE_SIMPLE_THREAD_TYPE */
+
+/* Define to 1 if you have the `snprintf' function. */
+#define HAVE_SNPRINTF 1
+
+/* Define to 1 if you have the `stat' function. */
+/* #undef HAVE_STAT */
+
+/* Define to 1 if building statistics support. */
+/* #undef HAVE_STATISTICS */
+
+/* Define to 1 if you have the <stdint.h> header file. */
+/* #undef HAVE_STDINT_H */
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+/* #undef HAVE_STDLIB_H */
+
+/* Define to 1 if you have the `strcasecmp' function. */
+/* #undef HAVE_STRCASECMP */
+
+/* Define to 1 if you have the `strcat' function. */
+#define HAVE_STRCAT 1
+
+/* Define to 1 if you have the `strchr' function. */
+#define HAVE_STRCHR 1
+
+/* Define to 1 if you have the `strdup' function. */
+#define HAVE_STRDUP 1
+
+/* Define to 1 if you have the `strerror' function. */
+/* #undef HAVE_STRERROR */
+
+/* Define to 1 if you have the `strftime' function. */
+/* #undef HAVE_STRFTIME */
+
+/* Define to 1 if you have the <strings.h> header file. */
+/* #undef HAVE_STRINGS_H */
+
+/* Define to 1 if you have the <string.h> header file. */
+/* #undef HAVE_STRING_H */
+
+/* Define to 1 if you have the `strncat' function. */
+/* #undef HAVE_STRNCAT */
+
+/* Define to 1 if you have the `strncmp' function. */
+#define HAVE_STRNCMP 1
+
+/* Define to 1 if you have the `strrchr' function. */
+#define HAVE_STRRCHR 1
+
+/* Define to 1 if you have the `strsep' function. */
+/* #undef HAVE_STRSEP */
+
+/* Define to 1 if you have the `strtol' function. */
+/* #undef HAVE_STRTOL */
+
+/* Define to 1 if you have the `strtoul' function. */
+#define HAVE_STRTOUL 1
+
+/* Define to 1 if `st_blksize' is member of `struct stat'. */
+/* #undef HAVE_STRUCT_STAT_ST_BLKSIZE */
+
+/* Define to 1 if you have the `sysconf' function. */
+/* #undef HAVE_SYSCONF */
+
+/* Define to 1 if port includes files in the Berkeley DB source code. */
+/* #undef HAVE_SYSTEM_INCLUDE_FILES */
+
+/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
+ */
+/* #undef HAVE_SYS_DIR_H */
+
+/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
+ */
+/* #undef HAVE_SYS_NDIR_H */
+
+/* Define to 1 if you have the <sys/select.h> header file. */
+/* #undef HAVE_SYS_SELECT_H */
+
+/* Define to 1 if you have the <sys/socket.h> header file. */
+/* #undef HAVE_SYS_SOCKET_H */
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+/* #undef HAVE_SYS_STAT_H */
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+/* #undef HAVE_SYS_TIME_H */
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+/* #undef HAVE_SYS_TYPES_H 1*/
+
+/* Define to 1 if you have the `time' function. */
+/* #undef HAVE_TIME */
+
+/* Define to 1 if you have the <unistd.h> header file. */
+/* #undef HAVE_UNISTD_H */
+
+/* Define to 1 if unlink of file with open file descriptors will fail. */
+/* #undef HAVE_UNLINK_WITH_OPEN_FAILURE */
+
+/* Define to 1 if port includes historic database upgrade support. */
+/* #undef HAVE_UPGRADE_SUPPORT */
+
+/* Define to 1 if building access method verification support. */
+/* #undef HAVE_VERIFY */
+
+/* Define to 1 if you have the `vsnprintf' function. */
+#define HAVE_VSNPRINTF 1
+
+/* Define to 1 if building VxWorks. */
+/* #undef HAVE_VXWORKS */
+
+/* Define to 1 if you have the `yield' function. */
+/* #undef HAVE_YIELD */
+
+/* Define to 1 if you have the `_fstati64' function. */
+/* #undef HAVE__FSTATI64 1*/
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "support@sleepycat.com"
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "Berkeley DB"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "Berkeley DB 4.6.18"
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME "db-4.6.18"
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "4.6.18"
+
+/* The size of a `char', as computed by sizeof. */
+#define SIZEOF_CHAR 1
+
+/* The size of a `char *', as computed by sizeof. */
+#define SIZEOF_CHAR_P 4
+
+/* The size of a `int', as computed by sizeof. */
+#define SIZEOF_INT 4
+
+/* The size of a `long', as computed by sizeof. */
+#define SIZEOF_LONG 4
+
+/* The size of a `long long', as computed by sizeof. */
+/* #undef SIZEOF_LONG_LONG */
+
+/* The size of a `short', as computed by sizeof. */
+#define SIZEOF_SHORT 2
+
+/* The size of a `size_t', as computed by sizeof. */
+#define SIZEOF_SIZE_T 4
+
+/* The size of a `unsigned char', as computed by sizeof. */
+#define SIZEOF_UNSIGNED_CHAR 1
+
+/* The size of a `unsigned int', as computed by sizeof. */
+#define SIZEOF_UNSIGNED_INT 4
+
+/* The size of a `unsigned long', as computed by sizeof. */
+#define SIZEOF_UNSIGNED_LONG 4
+
+/* The size of a `unsigned long long', as computed by sizeof. */
+/* #undef SIZEOF_UNSIGNED_LONG_LONG */
+
+/* The size of a `unsigned short', as computed by sizeof. */
+#define SIZEOF_UNSIGNED_SHORT 2
+
+/* Define to 1 if the `S_IS*' macros in <sys/stat.h> do not work properly. */
+/* #undef STAT_MACROS_BROKEN */
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
+/* #undef TIME_WITH_SYS_TIME */
+
+/* Define to 1 to mask harmless uninitialized memory read/writes. */
+/* #undef UMRW */
+
+/* Number of bits in a file offset, on hosts where this is settable. */
+/* #undef _FILE_OFFSET_BITS */
+
+/* Define for large files, on AIX-style hosts. */
+/* #undef _LARGE_FILES */
+
+/* Define to empty if `const' does not conform to ANSI C. */
+/* #undef const */
+
+/* Define to `__inline__' or `__inline' if that's what the C compiler
+ calls it, or to nothing if 'inline' is not supported under any name. */
+#ifndef __cplusplus
+#define inline
+#endif
+
+/* type to use in place of socklen_t if not defined */
+/* #undef socklen_t */
diff --git a/db/build_brew/db_int.h b/db/build_brew/db_int.h
new file mode 100644
index 000000000..bfb66cde9
--- /dev/null
+++ b/db/build_brew/db_int.h
@@ -0,0 +1,775 @@
+/* DO NOT EDIT: automatically built by dist/s_brew. */
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
+ *
+ * $Id: db_int.in,v 12.58 2007/05/30 14:06:39 bostic Exp $
+ */
+
+#ifndef _DB_INT_H_
+#define _DB_INT_H_
+
+/*******************************************************
+ * Berkeley DB ANSI/POSIX include files.
+ *******************************************************/
+#ifdef HAVE_SYSTEM_INCLUDE_FILES
+#include <sys/types.h>
+#ifdef DIAG_MVCC
+#include <sys/mman.h>
+#endif
+#include <sys/stat.h>
+
+#if defined(__INCLUDE_SELECT_H)
+#ifdef HAVE_SYS_SELECT_H
+#include <sys/select.h>
+#endif
+#ifdef HAVE_VXWORKS
+#include <selectLib.h>
+#endif
+#endif
+
+#if TIME_WITH_SYS_TIME
+#include <sys/time.h>
+#include <time.h>
+#else
+#if HAVE_SYS_TIME_H
+#include <sys/time.h>
+#else
+#include <time.h>
+#endif
+#endif
+
+#ifdef HAVE_VXWORKS
+#include <net/uio.h>
+#else
+#include <sys/uio.h>
+#endif
+
+#if defined(__INCLUDE_NETWORKING)
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#include <netinet/in.h>
+#include <netdb.h>
+#include <arpa/inet.h>
+#endif
+
+#if defined(STDC_HEADERS) || defined(__cplusplus)
+#include <stdarg.h>
+#else
+#include <varargs.h>
+#endif
+
+#include <ctype.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <limits.h>
+#include <signal.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#if defined(__INCLUDE_DIRECTORY)
+#if HAVE_DIRENT_H
+# include <dirent.h>
+# define NAMLEN(dirent) strlen((dirent)->d_name)
+#else
+# define dirent direct
+# define NAMLEN(dirent) (dirent)->d_namlen
+# if HAVE_SYS_NDIR_H
+# include <sys/ndir.h>
+# endif
+# if HAVE_SYS_DIR_H
+# include <sys/dir.h>
+# endif
+# if HAVE_NDIR_H
+# include <ndir.h>
+# endif
+#endif
+#endif /* __INCLUDE_DIRECTORY_READ */
+
+#endif /* !HAVE_SYSTEM_INCLUDE_FILES */
+#include "brew_db.h"
+
+#ifdef DB_WIN32
+#include "dbinc/win_db.h"
+#endif
+
+#include "db.h"
+#include "clib_port.h"
+
+#include "dbinc/queue.h"
+#include "dbinc/shqueue.h"
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+/*******************************************************
+ * General purpose constants and macros.
+ *******************************************************/
+#undef FALSE
+#define FALSE 0
+#undef TRUE
+#define TRUE (!FALSE)
+
+#define MEGABYTE 1048576
+#define GIGABYTE 1073741824
+
+#define NS_PER_MS 1000000 /* Nanoseconds in a millisecond */
+#define NS_PER_US 1000 /* Nanoseconds in a microsecond */
+#define NS_PER_SEC 1000000000 /* Nanoseconds in a second */
+#define US_PER_MS 1000 /* Microseconds in a millisecond */
+#define US_PER_SEC 1000000 /* Microseconds in a second */
+#define MS_PER_NS 1000000 /* Milliseconds in a nanosecond */
+#define MS_PER_SEC 1000 /* Milliseconds in a second */
+
+#define RECNO_OOB 0 /* Illegal record number. */
+
+/* Test for a power-of-two (tests true for zero, which doesn't matter here). */
+#define POWER_OF_TWO(x) (((x) & ((x) - 1)) == 0)
+
+/* Test for valid page sizes. */
+#define DB_MIN_PGSIZE 0x000200 /* Minimum page size (512). */
+#define DB_MAX_PGSIZE 0x010000 /* Maximum page size (65536). */
+#define IS_VALID_PAGESIZE(x) \
+ (POWER_OF_TWO(x) && (x) >= DB_MIN_PGSIZE && ((x) <= DB_MAX_PGSIZE))
+
+/* Minimum number of pages cached, by default. */
+#define DB_MINPAGECACHE 16
+
+/*
+ * If we are unable to determine the underlying filesystem block size, use
+ * 8K on the grounds that most OS's use less than 8K for a VM page size.
+ */
+#define DB_DEF_IOSIZE (8 * 1024)
+
+/* Align an integer to a specific boundary. */
+#undef DB_ALIGN
+#define DB_ALIGN(v, bound) \
+ (((v) + (bound) - 1) & ~(((uintmax_t)(bound)) - 1))
+
+/* Increment a pointer to a specific boundary. */
+#undef ALIGNP_INC
+#define ALIGNP_INC(p, bound) \
+ (void *)(((uintptr_t)(p) + (bound) - 1) & ~(((uintptr_t)(bound)) - 1))
+
+/*
+ * Print an address as a u_long (a u_long is the largest type we can print
+ * portably). Most 64-bit systems have made longs 64-bits, so this should
+ * work.
+ */
+#define P_TO_ULONG(p) ((u_long)(uintptr_t)(p))
+
+/*
+ * Convert a pointer to a small integral value.
+ *
+ * The (u_int16_t)(uintptr_t) cast avoids warnings: the (uintptr_t) cast
+ * converts the value to an integral type, and the (u_int16_t) cast converts
+ * it to a small integral type so we don't get complaints when we assign the
+ * final result to an integral type smaller than uintptr_t.
+ */
+#define P_TO_UINT32(p) ((u_int32_t)(uintptr_t)(p))
+#define P_TO_UINT16(p) ((u_int16_t)(uintptr_t)(p))
+
+/*
+ * There are several on-page structures that are declared to have a number of
+ * fields followed by a variable length array of items. The structure size
+ * without including the variable length array or the address of the first of
+ * those elements can be found using SSZ.
+ *
+ * This macro can also be used to find the offset of a structure element in a
+ * structure. This is used in various places to copy structure elements from
+ * unaligned memory references, e.g., pointers into a packed page.
+ *
+ * There are two versions because compilers object if you take the address of
+ * an array.
+ */
+#undef SSZ
+#define SSZ(name, field) P_TO_UINT16(&(((name *)0)->field))
+
+#undef SSZA
+#define SSZA(name, field) P_TO_UINT16(&(((name *)0)->field[0]))
+
+/* Structure used to print flag values. */
+typedef struct __fn {
+ u_int32_t mask; /* Flag value. */
+ const char *name; /* Flag name. */
+} FN;
+
+/* Set, clear and test flags. */
+#define FLD_CLR(fld, f) (fld) &= ~(f)
+#define FLD_ISSET(fld, f) ((fld) & (f))
+#define FLD_SET(fld, f) (fld) |= (f)
+#define F_CLR(p, f) (p)->flags &= ~(f)
+#define F_ISSET(p, f) ((p)->flags & (f))
+#define F_SET(p, f) (p)->flags |= (f)
+#define LF_CLR(f) ((flags) &= ~(f))
+#define LF_ISSET(f) ((flags) & (f))
+#define LF_SET(f) ((flags) |= (f))
+
+/*
+ * Calculate a percentage. The values can overflow 32-bit integer arithmetic
+ * so we use floating point.
+ *
+ * When calculating a bytes-vs-page size percentage, we're getting the inverse
+ * of the percentage in all cases, that is, we want 100 minus the percentage we
+ * calculate.
+ */
+#define DB_PCT(v, total) \
+ ((int)((total) == 0 ? 0 : ((double)(v) * 100) / (total)))
+#define DB_PCT_PG(v, total, pgsize) \
+ ((int)((total) == 0 ? 0 : \
+ 100 - ((double)(v) * 100) / (((double)total) * (pgsize))))
+
+/*
+ * Statistics update shared memory and so are expensive -- don't update the
+ * values unless we're going to display the results.
+ */
+#undef STAT
+#ifdef HAVE_STATISTICS
+#define STAT(x) x
+#else
+#define STAT(x)
+#endif
+
+/*
+ * Structure used for callback message aggregation.
+ *
+ * Display values in XXX_stat_print calls.
+ */
+typedef struct __db_msgbuf {
+ char *buf; /* Heap allocated buffer. */
+ char *cur; /* Current end of message. */
+ size_t len; /* Allocated length of buffer. */
+} DB_MSGBUF;
+#define DB_MSGBUF_INIT(a) do { \
+ (a)->buf = (a)->cur = NULL; \
+ (a)->len = 0; \
+} while (0)
+#define DB_MSGBUF_FLUSH(dbenv, a) do { \
+ if ((a)->buf != NULL) { \
+ if ((a)->cur != (a)->buf) \
+ __db_msg(dbenv, "%s", (a)->buf); \
+ __os_free(dbenv, (a)->buf); \
+ DB_MSGBUF_INIT(a); \
+ } \
+} while (0)
+#define STAT_FMT(msg, fmt, type, v) do { \
+ DB_MSGBUF __mb; \
+ DB_MSGBUF_INIT(&__mb); \
+ __db_msgadd(dbenv, &__mb, fmt, (type)(v)); \
+ __db_msgadd(dbenv, &__mb, "\t%s", msg); \
+ DB_MSGBUF_FLUSH(dbenv, &__mb); \
+} while (0)
+#define STAT_HEX(msg, v) \
+ __db_msg(dbenv, "%#lx\t%s", (u_long)(v), msg)
+#define STAT_ISSET(msg, p) \
+ __db_msg(dbenv, "%sSet\t%s", (p) == NULL ? "!" : " ", msg)
+#define STAT_LONG(msg, v) \
+ __db_msg(dbenv, "%ld\t%s", (long)(v), msg)
+#define STAT_LSN(msg, lsnp) \
+ __db_msg(dbenv, "%lu/%lu\t%s", \
+ (u_long)(lsnp)->file, (u_long)(lsnp)->offset, msg)
+#define STAT_POINTER(msg, v) \
+ __db_msg(dbenv, "%#lx\t%s", P_TO_ULONG(v), msg)
+#define STAT_STRING(msg, p) do { \
+ const char *__p = p; /* p may be a function call. */ \
+ __db_msg(dbenv, "%s\t%s", __p == NULL ? "!Set" : __p, msg); \
+} while (0)
+#define STAT_ULONG(msg, v) \
+ __db_msg(dbenv, "%lu\t%s", (u_long)(v), msg)
+
+/*
+ * There are quite a few places in Berkeley DB where we want to initialize
+ * a DBT from a string or other random pointer type, using a length typed
+ * to size_t in most cases. This macro avoids a lot of casting. The macro
+ * comes in two flavors because we often want to clear the DBT first.
+ */
+#define DB_SET_DBT(dbt, d, s) do { \
+ (dbt).data = (void *)(d); \
+ (dbt).size = (u_int32_t)(s); \
+} while (0)
+#define DB_INIT_DBT(dbt, d, s) do { \
+ memset(&(dbt), 0, sizeof(dbt)); \
+ DB_SET_DBT(dbt, d, s); \
+} while (0)
+
+/*******************************************************
+ * API return values
+ *******************************************************/
+/*
+ * Return values that are OK for each different call. Most calls have a
+ * standard 'return of 0 is only OK value', but some, like db->get have
+ * DB_NOTFOUND as a return value, but it really isn't an error.
+ */
+#define DB_RETOK_STD(ret) ((ret) == 0)
+#define DB_RETOK_DBCDEL(ret) ((ret) == 0 || (ret) == DB_KEYEMPTY || \
+ (ret) == DB_NOTFOUND)
+#define DB_RETOK_DBCGET(ret) ((ret) == 0 || (ret) == DB_KEYEMPTY || \
+ (ret) == DB_NOTFOUND)
+#define DB_RETOK_DBCPUT(ret) ((ret) == 0 || (ret) == DB_KEYEXIST || \
+ (ret) == DB_NOTFOUND)
+#define DB_RETOK_DBDEL(ret) DB_RETOK_DBCDEL(ret)
+#define DB_RETOK_DBGET(ret) DB_RETOK_DBCGET(ret)
+#define DB_RETOK_DBPUT(ret) ((ret) == 0 || (ret) == DB_KEYEXIST)
+#define DB_RETOK_EXISTS(ret) DB_RETOK_DBCGET(ret)
+#define DB_RETOK_LGGET(ret) ((ret) == 0 || (ret) == DB_NOTFOUND)
+#define DB_RETOK_MPGET(ret) ((ret) == 0 || (ret) == DB_PAGE_NOTFOUND)
+#define DB_RETOK_REPPMSG(ret) ((ret) == 0 || \
+ (ret) == DB_REP_IGNORE || \
+ (ret) == DB_REP_ISPERM || \
+ (ret) == DB_REP_NEWMASTER || \
+ (ret) == DB_REP_NEWSITE || \
+ (ret) == DB_REP_NOTPERM)
+
+/* Find a reasonable operation-not-supported error. */
+#ifdef EOPNOTSUPP
+#define DB_OPNOTSUP EOPNOTSUPP
+#else
+#ifdef ENOTSUP
+#define DB_OPNOTSUP ENOTSUP
+#else
+#define DB_OPNOTSUP EINVAL
+#endif
+#endif
+
+/*******************************************************
+ * Files.
+ *******************************************************/
+/*
+ * We use 1024 as the maximum path length. It's too hard to figure out what
+ * the real path length is, as it was traditionally stored in <sys/param.h>,
+ * and that file isn't always available.
+ */
+#define DB_MAXPATHLEN 1024
+
+#define PATH_DOT "." /* Current working directory. */
+ /* Path separator character(s). */
+#define PATH_SEPARATOR "\\/:"
+
+/*******************************************************
+ * Environment.
+ *******************************************************/
+/* Type passed to __db_appname(). */
+typedef enum {
+ DB_APP_NONE=0, /* No type (region). */
+ DB_APP_DATA, /* Data file. */
+ DB_APP_LOG, /* Log file. */
+ DB_APP_TMP /* Temporary file. */
+} APPNAME;
+
+/*
+ * A set of macros to check if various functionality has been configured.
+ *
+ * ALIVE_ON The is_alive function is configured.
+ * CDB_LOCKING CDB product locking.
+ * CRYPTO_ON Security has been configured.
+ * LOCKING_ON Locking has been configured.
+ * LOGGING_ON Logging has been configured.
+ * MUTEX_ON Mutexes have been configured.
+ * MPOOL_ON Memory pool has been configured.
+ * REP_ON Replication has been configured.
+ * RPC_ON RPC has been configured.
+ * TXN_ON Transactions have been configured.
+ *
+ * REP_ON is more complex than most: if the BDB library was compiled without
+ * replication support, dbenv->rep_handle will be NULL; if the BDB library
+ * has replication support, but it was not configured, the region reference
+ * will be NULL.
+ */
+#define ALIVE_ON(dbenv) ((dbenv)->is_alive != NULL)
+#define CDB_LOCKING(dbenv) F_ISSET(dbenv, DB_ENV_CDB)
+#define CRYPTO_ON(dbenv) ((dbenv)->crypto_handle != NULL)
+#define LOCKING_ON(dbenv) ((dbenv)->lk_handle != NULL)
+#define LOGGING_ON(dbenv) ((dbenv)->lg_handle != NULL)
+#define MPOOL_ON(dbenv) ((dbenv)->mp_handle != NULL)
+#define MUTEX_ON(dbenv) ((dbenv)->mutex_handle != NULL)
+#define REP_ON(dbenv) \
+ ((dbenv)->rep_handle != NULL && (dbenv)->rep_handle->region != NULL)
+#define RPC_ON(dbenv) ((dbenv)->cl_handle != NULL)
+#define TXN_ON(dbenv) ((dbenv)->tx_handle != NULL)
+
+/*
+ * STD_LOCKING Standard locking, that is, locking was configured and CDB
+ * was not. We do not do locking in off-page duplicate trees,
+ * so we check for that in the cursor first.
+ */
+#define STD_LOCKING(dbc) \
+ (!F_ISSET(dbc, DBC_OPD) && \
+ !CDB_LOCKING((dbc)->dbp->dbenv) && LOCKING_ON((dbc)->dbp->dbenv))
+
+/*
+ * IS_RECOVERING: The system is running recovery.
+ */
+#define IS_RECOVERING(dbenv) \
+ (LOGGING_ON(dbenv) && F_ISSET((dbenv)->lg_handle, DBLOG_RECOVER))
+
+/* Initialization methods are often illegal before/after open is called. */
+#define ENV_ILLEGAL_AFTER_OPEN(dbenv, name) \
+ if (F_ISSET((dbenv), DB_ENV_OPEN_CALLED)) \
+ return (__db_mi_open(dbenv, name, 1));
+#define ENV_ILLEGAL_BEFORE_OPEN(dbenv, name) \
+ if (!F_ISSET((dbenv), DB_ENV_OPEN_CALLED)) \
+ return (__db_mi_open(dbenv, name, 0));
+
+/* We're not actually user hostile, honest. */
+#define ENV_REQUIRES_CONFIG(dbenv, handle, i, flags) \
+ if (handle == NULL) \
+ return (__db_env_config(dbenv, i, flags));
+#define ENV_REQUIRES_CONFIG_XX(dbenv, handle, i, flags) \
+ if ((dbenv)->handle->region == NULL) \
+ return (__db_env_config(dbenv, i, flags));
+#define ENV_NOT_CONFIGURED(dbenv, handle, i, flags) \
+ if (F_ISSET((dbenv), DB_ENV_OPEN_CALLED)) \
+ ENV_REQUIRES_CONFIG(dbenv, handle, i, flags)
+
+#define ENV_ENTER(dbenv, ip) do { \
+ int __ret; \
+ if ((dbenv)->thr_hashtab == NULL) \
+ ip = NULL; \
+ else { \
+ if ((__ret = \
+ __env_set_state(dbenv, &(ip), THREAD_ACTIVE)) != 0) \
+ return (__ret); \
+ } \
+} while (0)
+
+#ifdef DIAGNOSTIC
+#define ENV_LEAVE(dbenv, ip) do { \
+ if ((ip) != NULL) { \
+ DB_ASSERT(dbenv, (ip)->dbth_state == THREAD_ACTIVE); \
+ (ip)->dbth_state = THREAD_OUT; \
+ } \
+} while (0)
+#else
+#define ENV_LEAVE(dbenv, ip) do { \
+ if ((ip) != NULL) \
+ (ip)->dbth_state = THREAD_OUT; \
+} while (0)
+#endif
+#ifdef DIAGNOSTIC
+#define CHECK_THREAD(dbenv) do { \
+ DB_THREAD_INFO *__ip; \
+ if ((dbenv)->thr_hashtab != NULL) { \
+ (void)__env_set_state(dbenv, &__ip, THREAD_DIAGNOSTIC); \
+ DB_ASSERT(dbenv, \
+ __ip != NULL && __ip->dbth_state != THREAD_OUT); \
+ } \
+} while (0)
+#ifdef HAVE_STATISTICS
+#define CHECK_MTX_THREAD(dbenv, mtx) do { \
+ if (mtx->alloc_id != MTX_MUTEX_REGION && \
+ mtx->alloc_id != MTX_ENV_REGION && \
+ mtx->alloc_id != MTX_APPLICATION) \
+ CHECK_THREAD(dbenv); \
+} while (0)
+#else
+#define CHECK_MTX_THREAD(dbenv, mtx)
+#endif
+#else
+#define CHECK_THREAD(dbenv)
+#define CHECK_MTX_THREAD(dbenv, mtx)
+#endif
+
+typedef enum {
+ THREAD_SLOT_NOT_IN_USE=0,
+ THREAD_OUT,
+ THREAD_ACTIVE,
+ THREAD_BLOCKED
+#ifdef DIAGNOSTIC
+ , THREAD_DIAGNOSTIC
+#endif
+} DB_THREAD_STATE;
+
+typedef struct __db_thread_info {
+ pid_t dbth_pid;
+ db_threadid_t dbth_tid;
+ DB_THREAD_STATE dbth_state;
+ SH_TAILQ_ENTRY dbth_links;
+} DB_THREAD_INFO;
+
+typedef struct __env_thread_info {
+ u_int32_t thr_count;
+ u_int32_t thr_max;
+ u_int32_t thr_nbucket;
+ roff_t thr_hashoff;
+} THREAD_INFO;
+
+#define DB_EVENT(dbenv, e, einfo) do { \
+ if ((dbenv)->db_event_func != NULL) \
+ (dbenv)->db_event_func(dbenv, e, einfo); \
+} while (0)
+
+/*******************************************************
+ * Database Access Methods.
+ *******************************************************/
+/*
+ * DB_IS_THREADED --
+ * The database handle is free-threaded (was opened with DB_THREAD).
+ */
+#define DB_IS_THREADED(dbp) \
+ ((dbp)->mutex != MUTEX_INVALID)
+
+/* Initialization methods are often illegal before/after open is called. */
+#define DB_ILLEGAL_AFTER_OPEN(dbp, name) \
+ if (F_ISSET((dbp), DB_AM_OPEN_CALLED)) \
+ return (__db_mi_open((dbp)->dbenv, name, 1));
+#define DB_ILLEGAL_BEFORE_OPEN(dbp, name) \
+ if (!F_ISSET((dbp), DB_AM_OPEN_CALLED)) \
+ return (__db_mi_open((dbp)->dbenv, name, 0));
+/* Some initialization methods are illegal if environment isn't local. */
+#define DB_ILLEGAL_IN_ENV(dbp, name) \
+ if (!F_ISSET((dbp)->dbenv, DB_ENV_DBLOCAL)) \
+ return (__db_mi_env((dbp)->dbenv, name));
+#define DB_ILLEGAL_METHOD(dbp, flags) { \
+ int __ret; \
+ if ((__ret = __dbh_am_chk(dbp, flags)) != 0) \
+ return (__ret); \
+}
+
+/*
+ * Common DBC->internal fields. Each access method adds additional fields
+ * to this list, but the initial fields are common.
+ */
+#define __DBC_INTERNAL \
+ DBC *opd; /* Off-page duplicate cursor. */\
+ \
+ void *page; /* Referenced page. */ \
+ db_pgno_t root; /* Tree root. */ \
+ db_pgno_t pgno; /* Referenced page number. */ \
+ db_indx_t indx; /* Referenced key item index. */\
+ \
+ DB_LOCK lock; /* Cursor lock. */ \
+ db_lockmode_t lock_mode; /* Lock mode. */
+
+struct __dbc_internal {
+ __DBC_INTERNAL
+};
+
+/* Actions that __db_master_update can take. */
+typedef enum { MU_REMOVE, MU_RENAME, MU_OPEN } mu_action;
+
+/*
+ * Access-method-common macro for determining whether a cursor
+ * has been initialized.
+ */
+#define IS_INITIALIZED(dbc) ((dbc)->internal->pgno != PGNO_INVALID)
+
+/* Free the callback-allocated buffer, if necessary, hanging off of a DBT. */
+#define FREE_IF_NEEDED(dbenv, dbt) \
+ if (F_ISSET((dbt), DB_DBT_APPMALLOC)) { \
+ __os_ufree((dbenv), (dbt)->data); \
+ F_CLR((dbt), DB_DBT_APPMALLOC); \
+ }
+
+/*
+ * Use memory belonging to object "owner" to return the results of
+ * any no-DBT-flag get ops on cursor "dbc".
+ */
+#define SET_RET_MEM(dbc, owner) \
+ do { \
+ (dbc)->rskey = &(owner)->my_rskey; \
+ (dbc)->rkey = &(owner)->my_rkey; \
+ (dbc)->rdata = &(owner)->my_rdata; \
+ } while (0)
+
+/* Use the return-data memory src is currently set to use in dest as well. */
+#define COPY_RET_MEM(src, dest) \
+ do { \
+ (dest)->rskey = (src)->rskey; \
+ (dest)->rkey = (src)->rkey; \
+ (dest)->rdata = (src)->rdata; \
+ } while (0)
+
+/* Reset the returned-memory pointers to their defaults. */
+#define RESET_RET_MEM(dbc) \
+ do { \
+ (dbc)->rskey = &(dbc)->my_rskey; \
+ (dbc)->rkey = &(dbc)->my_rkey; \
+ (dbc)->rdata = &(dbc)->my_rdata; \
+ } while (0)
+
+/*******************************************************
+ * Mpool.
+ *******************************************************/
+/*
+ * File types for DB access methods. Negative numbers are reserved to DB.
+ */
+#define DB_FTYPE_SET -1 /* Call pgin/pgout functions. */
+#define DB_FTYPE_NOTSET 0 /* Don't call... */
+#define DB_LSN_OFF_NOTSET -1 /* Not yet set. */
+#define DB_CLEARLEN_NOTSET UINT32_MAX /* Not yet set. */
+
+/* Structure used as the DB pgin/pgout pgcookie. */
+typedef struct __dbpginfo {
+ size_t db_pagesize; /* Underlying page size. */
+ u_int32_t flags; /* Some DB_AM flags needed. */
+ DBTYPE type; /* DB type */
+} DB_PGINFO;
+
+/*******************************************************
+ * Log.
+ *******************************************************/
+/* Initialize an LSN to 'zero'. */
+#define ZERO_LSN(LSN) do { \
+ (LSN).file = 0; \
+ (LSN).offset = 0; \
+} while (0)
+#define IS_ZERO_LSN(LSN) ((LSN).file == 0 && (LSN).offset == 0)
+
+#define IS_INIT_LSN(LSN) ((LSN).file == 1 && (LSN).offset == 0)
+#define INIT_LSN(LSN) do { \
+ (LSN).file = 1; \
+ (LSN).offset = 0; \
+} while (0)
+
+#define MAX_LSN(LSN) do { \
+ (LSN).file = UINT32_MAX; \
+ (LSN).offset = UINT32_MAX; \
+} while (0)
+#define IS_MAX_LSN(LSN) \
+ ((LSN).file == UINT32_MAX && (LSN).offset == UINT32_MAX)
+
+/* If logging is turned off, smash the lsn. */
+#define LSN_NOT_LOGGED(LSN) do { \
+ (LSN).file = 0; \
+ (LSN).offset = 1; \
+} while (0)
+#define IS_NOT_LOGGED_LSN(LSN) \
+ ((LSN).file == 0 && (LSN).offset == 1)
+
+/*
+ * LOG_COMPARE -- compare two LSNs.
+ */
+
+#define LOG_COMPARE(lsn0, lsn1) \
+ ((lsn0)->file != (lsn1)->file ? \
+ ((lsn0)->file < (lsn1)->file ? -1 : 1) : \
+ ((lsn0)->offset != (lsn1)->offset ? \
+ ((lsn0)->offset < (lsn1)->offset ? -1 : 1) : 0))
+
+/*******************************************************
+ * Txn.
+ *******************************************************/
+#define DB_NONBLOCK(C) ((C)->txn != NULL && F_ISSET((C)->txn, TXN_NOWAIT))
+#define NOWAIT_FLAG(txn) \
+ ((txn) != NULL && F_ISSET((txn), TXN_NOWAIT) ? DB_LOCK_NOWAIT : 0)
+#define IS_REAL_TXN(txn) \
+ ((txn) != NULL && !F_ISSET(txn, TXN_CDSGROUP))
+#define IS_SUBTRANSACTION(txn) \
+ ((txn) != NULL && (txn)->parent != NULL)
+
+/*******************************************************
+ * Crypto.
+ *******************************************************/
+#define DB_IV_BYTES 16 /* Bytes per IV */
+#define DB_MAC_KEY 20 /* Bytes per MAC checksum */
+
+/*******************************************************
+ * Secondaries over RPC.
+ *******************************************************/
+#ifdef CONFIG_TEST
+/*
+ * These are flags passed to DB->associate calls by the Tcl API if running
+ * over RPC. The RPC server will mask out these flags before making the real
+ * DB->associate call.
+ *
+ * These flags must coexist with the valid flags to DB->associate (currently
+ * DB_AUTO_COMMIT and DB_CREATE). DB_AUTO_COMMIT is in the group of
+ * high-order shared flags (0xff000000), and DB_CREATE is in the low-order
+ * group (0x00000fff), so we pick a range in between.
+ */
+#define DB_RPC2ND_MASK 0x00f00000 /* Reserved bits. */
+
+#define DB_RPC2ND_REVERSEDATA 0x00100000 /* callback_n(0) _s_reversedata. */
+#define DB_RPC2ND_NOOP 0x00200000 /* callback_n(1) _s_noop */
+#define DB_RPC2ND_CONCATKEYDATA 0x00300000 /* callback_n(2) _s_concatkeydata */
+#define DB_RPC2ND_CONCATDATAKEY 0x00400000 /* callback_n(3) _s_concatdatakey */
+#define DB_RPC2ND_REVERSECONCAT 0x00500000 /* callback_n(4) _s_reverseconcat */
+#define DB_RPC2ND_TRUNCDATA 0x00600000 /* callback_n(5) _s_truncdata */
+#define DB_RPC2ND_CONSTANT 0x00700000 /* callback_n(6) _s_constant */
+#define DB_RPC2ND_GETZIP 0x00800000 /* sj_getzip */
+#define DB_RPC2ND_GETNAME 0x00900000 /* sj_getname */
+#endif
+
+/*******************************************************
+ * Forward structure declarations.
+ *******************************************************/
+struct __db_reginfo_t; typedef struct __db_reginfo_t REGINFO;
+struct __db_txnhead; typedef struct __db_txnhead DB_TXNHEAD;
+struct __db_txnlist; typedef struct __db_txnlist DB_TXNLIST;
+struct __vrfy_childinfo;typedef struct __vrfy_childinfo VRFY_CHILDINFO;
+struct __vrfy_dbinfo; typedef struct __vrfy_dbinfo VRFY_DBINFO;
+struct __vrfy_pageinfo; typedef struct __vrfy_pageinfo VRFY_PAGEINFO;
+
+typedef SH_TAILQ_HEAD(__hash_head) DB_HASHTAB;
+
+#if defined(__cplusplus)
+}
+#endif
+
+/*******************************************************
+ * Remaining general DB includes.
+ *******************************************************/
+
+
+#include "dbinc/globals.h"
+#include "dbinc/clock.h"
+#include "dbinc/debug.h"
+#include "dbinc/region.h"
+#include "dbinc_auto/env_ext.h"
+#include "dbinc/mutex.h"
+#include "dbinc/os.h"
+#ifdef HAVE_REPLICATION_THREADS
+#include "dbinc/repmgr.h"
+#endif
+#include "dbinc/rep.h"
+#include "dbinc_auto/clib_ext.h"
+#include "dbinc_auto/common_ext.h"
+
+/*******************************************************
+ * Remaining Log.
+ * These need to be defined after the general includes
+ * because they need rep.h from above.
+ *******************************************************/
+/*
+ * Test if the environment is currently logging changes. If we're in recovery
+ * or we're a replication client, we don't need to log changes because they're
+ * already in the log, even though we have a fully functional log system.
+ */
+#define DBENV_LOGGING(dbenv) \
+ (LOGGING_ON(dbenv) && !IS_REP_CLIENT(dbenv) && \
+ (!IS_RECOVERING(dbenv)))
+
+/*
+ * Test if we need to log a change. By default, we don't log operations without
+ * associated transactions, unless DIAGNOSTIC, DEBUG_ROP or DEBUG_WOP are on.
+ * This is because we want to get log records for read/write operations, and, if
+ * we are trying to debug something, more information is always better.
+ *
+ * The DBC_RECOVER flag is set when we're in abort, as well as during recovery;
+ * thus DBC_LOGGING may be false for a particular dbc even when DBENV_LOGGING
+ * is true.
+ *
+ * We explicitly use LOGGING_ON/IS_REP_CLIENT here because we don't want to pull
+ * in the log headers, which IS_RECOVERING (and thus DBENV_LOGGING) rely on, and
+ * because DBC_RECOVER should be set anytime IS_RECOVERING would be true.
+ *
+ * If we're not in recovery (master - doing an abort or a client applying
+ * a txn), then a client's only path through here is on an internal
+ * operation, and a master's only path through here is a transactional
+ * operation. Detect if either is not the case.
+ */
+#if defined(DIAGNOSTIC) || defined(DEBUG_ROP) || defined(DEBUG_WOP)
+#define DBC_LOGGING(dbc) __dbc_logging(dbc)
+#else
+#define DBC_LOGGING(dbc) \
+ ((dbc)->txn != NULL && LOGGING_ON((dbc)->dbp->dbenv) && \
+ !F_ISSET((dbc), DBC_RECOVER) && !IS_REP_CLIENT((dbc)->dbp->dbenv))
+#endif
+
+#endif /* !_DB_INT_H_ */
diff --git a/db/build_brew/errno.h b/db/build_brew/errno.h
new file mode 100644
index 000000000..935efcce2
--- /dev/null
+++ b/db/build_brew/errno.h
@@ -0,0 +1,188 @@
+/*-
+ * Copyright (c) 1982, 1986, 1989, 1993
+ * The Regents of the University of California. All rights reserved.
+ * (c) UNIX System Laboratories, Inc.
+ * All or some portions of this file are derived from material licensed
+ * to the University of California by American Telephone and Telegraph
+ * Co. or Unix System Laboratories, Inc. and are reproduced herein with
+ * the permission of UNIX System Laboratories, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * @(#)errno.h 8.5 (Berkeley) 1/21/94
+ * FreeBSD: /repoman/r/ncvs/src/sys/sys/errno.h,v 1.28 2005/04/02 12:33:28 das Exp $
+ *
+ * $Id: errno.h,v 1.4 2006/11/09 14:23:11 bostic Exp $
+ */
+
+#ifndef _SYS_ERRNO_H_
+#define _SYS_ERRNO_H_
+
+#undef errno
+#define errno DB_GLOBAL(db_errno)
+
+#define EPERM 1 /* Operation not permitted */
+#define ENOENT 2 /* No such file or directory */
+#define ESRCH 3 /* No such process */
+#define EINTR 4 /* Interrupted system call */
+#define EIO 5 /* Input/output error */
+#define ENXIO 6 /* Device not configured */
+#define E2BIG 7 /* Argument list too long */
+#define ENOEXEC 8 /* Exec format error */
+#define EBADF 9 /* Bad file descriptor */
+#define ECHILD 10 /* No child processes */
+#define EDEADLK 11 /* Resource deadlock avoided */
+ /* 11 was EAGAIN */
+#define ENOMEM 12 /* Cannot allocate memory */
+#define EACCES 13 /* Permission denied */
+#define EFAULT 14 /* Bad address */
+#ifndef _POSIX_SOURCE
+#define ENOTBLK 15 /* Block device required */
+#endif
+#define EBUSY 16 /* Device busy */
+#define EEXIST 17 /* File exists */
+#define EXDEV 18 /* Cross-device link */
+#define ENODEV 19 /* Operation not supported by device */
+#define ENOTDIR 20 /* Not a directory */
+#define EISDIR 21 /* Is a directory */
+#define EINVAL 22 /* Invalid argument */
+#define ENFILE 23 /* Too many open files in system */
+#define EMFILE 24 /* Too many open files */
+#define ENOTTY 25 /* Inappropriate ioctl for device */
+#ifndef _POSIX_SOURCE
+#define ETXTBSY 26 /* Text file busy */
+#endif
+#define EFBIG 27 /* File too large */
+#define ENOSPC 28 /* No space left on device */
+#define ESPIPE 29 /* Illegal seek */
+#define EROFS 30 /* Read-only filesystem */
+#define EMLINK 31 /* Too many links */
+#define EPIPE 32 /* Broken pipe */
+
+/* math software */
+#define EDOM 33 /* Numerical argument out of domain */
+#define ERANGE 34 /* Result too large */
+
+/* non-blocking and interrupt i/o */
+#define EAGAIN 35 /* Resource temporarily unavailable */
+#ifndef _POSIX_SOURCE
+#define EWOULDBLOCK EAGAIN /* Operation would block */
+#define EINPROGRESS 36 /* Operation now in progress */
+
+#ifndef EALREADY /* BREW already has an EALREADY. */
+#define EALREADY 37 /* Operation already in progress */
+#endif
+
+/* ipc/network software -- argument errors */
+#define ENOTSOCK 38 /* Socket operation on non-socket */
+#define EDESTADDRREQ 39 /* Destination address required */
+#define EMSGSIZE 40 /* Message too long */
+#define EPROTOTYPE 41 /* Protocol wrong type for socket */
+#define ENOPROTOOPT 42 /* Protocol not available */
+#define EPROTONOSUPPORT 43 /* Protocol not supported */
+#define ESOCKTNOSUPPORT 44 /* Socket type not supported */
+#define EOPNOTSUPP 45 /* Operation not supported */
+#define ENOTSUP EOPNOTSUPP /* Operation not supported */
+#define EPFNOSUPPORT 46 /* Protocol family not supported */
+#define EAFNOSUPPORT 47 /* Address family not supported by protocol family */
+#define EADDRINUSE 48 /* Address already in use */
+#define EADDRNOTAVAIL 49 /* Can't assign requested address */
+
+/* ipc/network software -- operational errors */
+#define ENETDOWN 50 /* Network is down */
+#define ENETUNREACH 51 /* Network is unreachable */
+#define ENETRESET 52 /* Network dropped connection on reset */
+#define ECONNABORTED 53 /* Software caused connection abort */
+#define ECONNRESET 54 /* Connection reset by peer */
+#define ENOBUFS 55 /* No buffer space available */
+#define EISCONN 56 /* Socket is already connected */
+#define ENOTCONN 57 /* Socket is not connected */
+#define ESHUTDOWN 58 /* Can't send after socket shutdown */
+#define ETOOMANYREFS 59 /* Too many references: can't splice */
+#define ETIMEDOUT 60 /* Operation timed out */
+#define ECONNREFUSED 61 /* Connection refused */
+
+#define ELOOP 62 /* Too many levels of symbolic links */
+#endif /* _POSIX_SOURCE */
+#define ENAMETOOLONG 63 /* File name too long */
+
+/* should be rearranged */
+#ifndef _POSIX_SOURCE
+#define EHOSTDOWN 64 /* Host is down */
+#define EHOSTUNREACH 65 /* No route to host */
+#endif /* _POSIX_SOURCE */
+#define ENOTEMPTY 66 /* Directory not empty */
+
+/* quotas & mush */
+#ifndef _POSIX_SOURCE
+#define EPROCLIM 67 /* Too many processes */
+#define EUSERS 68 /* Too many users */
+#define EDQUOT 69 /* Disc quota exceeded */
+
+/* Network File System */
+#define ESTALE 70 /* Stale NFS file handle */
+#define EREMOTE 71 /* Too many levels of remote in path */
+#define EBADRPC 72 /* RPC struct is bad */
+#define ERPCMISMATCH 73 /* RPC version wrong */
+#define EPROGUNAVAIL 74 /* RPC prog. not avail */
+#define EPROGMISMATCH 75 /* Program version wrong */
+#define EPROCUNAVAIL 76 /* Bad procedure for program */
+#endif /* _POSIX_SOURCE */
+
+#define ENOLCK 77 /* No locks available */
+#define ENOSYS 78 /* Function not implemented */
+
+#ifndef _POSIX_SOURCE
+#define EFTYPE 79 /* Inappropriate file type or format */
+#define EAUTH 80 /* Authentication error */
+#define ENEEDAUTH 81 /* Need authenticator */
+#define EIDRM 82 /* Identifier removed */
+#define ENOMSG 83 /* No message of desired type */
+#define EOVERFLOW 84 /* Value too large to be stored in data type */
+#define ECANCELED 85 /* Operation canceled */
+#define EILSEQ 86 /* Illegal byte sequence */
+#define ENOATTR 87 /* Attribute not found */
+
+#define EDOOFUS 88 /* Programming error */
+#endif /* _POSIX_SOURCE */
+
+#define EBADMSG 89 /* Bad message */
+#define EMULTIHOP 90 /* Multihop attempted */
+#define ENOLINK 91 /* Link has been severed */
+#define EPROTO 92 /* Protocol error */
+
+#ifndef _POSIX_SOURCE
+#define ELAST 92 /* Must be equal largest errno */
+#endif /* _POSIX_SOURCE */
+
+#ifdef _KERNEL
+/* pseudo-errors returned inside kernel to modify return to process */
+#define ERESTART (-1) /* restart syscall */
+#define EJUSTRETURN (-2) /* don't modify regs, just return */
+#define ENOIOCTL (-3) /* ioctl not handled by this layer */
+#define EDIRIOCTL (-4) /* do direct ioctl in GEOM */
+#endif
+
+#endif
diff --git a/db/build_s60/bdb_s60.mmp b/db/build_s60/bdb_s60.mmp
new file mode 100644
index 000000000..b84c96137
--- /dev/null
+++ b/db/build_s60/bdb_s60.mmp
@@ -0,0 +1,183 @@
+// bdb_s60.mmp
+// DO NOT EDIT: automatically built by dist/s_s60_mmp
+
+TARGET bdb_s60.lib
+TARGETTYPE lib
+UID 0x10004262 0xE8000016
+VENDORID 0x70000002
+
+SOURCE ..\btree\bt_compact.c
+SOURCE ..\btree\bt_compare.c
+SOURCE ..\btree\bt_conv.c
+SOURCE ..\btree\bt_curadj.c
+SOURCE ..\btree\bt_cursor.c
+SOURCE ..\btree\bt_delete.c
+SOURCE ..\btree\bt_method.c
+SOURCE ..\btree\bt_open.c
+SOURCE ..\btree\bt_put.c
+SOURCE ..\btree\bt_rec.c
+SOURCE ..\btree\bt_reclaim.c
+SOURCE ..\btree\bt_recno.c
+SOURCE ..\btree\bt_rsearch.c
+SOURCE ..\btree\bt_search.c
+SOURCE ..\btree\bt_split.c
+SOURCE ..\btree\bt_stat.c
+SOURCE ..\btree\btree_auto.c
+SOURCE ..\clib\ctime.c
+SOURCE ..\clib\snprintf.c
+SOURCE ..\clib\strcasecmp.c
+SOURCE ..\clib\strsep.c
+SOURCE ..\common\crypto_stub.c
+SOURCE ..\common\db_byteorder.c
+SOURCE ..\common\db_err.c
+SOURCE ..\common\db_getlong.c
+SOURCE ..\common\db_idspace.c
+SOURCE ..\common\db_log2.c
+SOURCE ..\common\db_shash.c
+SOURCE ..\common\mkpath.c
+SOURCE ..\db\crdel_auto.c
+SOURCE ..\db\crdel_rec.c
+SOURCE ..\db\db.c
+SOURCE ..\db\db_am.c
+SOURCE ..\db\db_auto.c
+SOURCE ..\db\db_cam.c
+SOURCE ..\db\db_cds.c
+SOURCE ..\db\db_conv.c
+SOURCE ..\db\db_dispatch.c
+SOURCE ..\db\db_dup.c
+SOURCE ..\db\db_iface.c
+SOURCE ..\db\db_join.c
+SOURCE ..\db\db_meta.c
+SOURCE ..\db\db_method.c
+SOURCE ..\db\db_open.c
+SOURCE ..\db\db_overflow.c
+SOURCE ..\db\db_pr.c
+SOURCE ..\db\db_rec.c
+SOURCE ..\db\db_reclaim.c
+SOURCE ..\db\db_remove.c
+SOURCE ..\db\db_rename.c
+SOURCE ..\db\db_ret.c
+SOURCE ..\db\db_setid.c
+SOURCE ..\db\db_setlsn.c
+SOURCE ..\db\db_stati.c
+SOURCE ..\db\db_truncate.c
+SOURCE ..\db\db_upg.c
+SOURCE ..\db\db_vrfy_stub.c
+SOURCE ..\dbreg\dbreg.c
+SOURCE ..\dbreg\dbreg_auto.c
+SOURCE ..\dbreg\dbreg_rec.c
+SOURCE ..\dbreg\dbreg_stat.c
+SOURCE ..\dbreg\dbreg_util.c
+SOURCE ..\env\env_alloc.c
+SOURCE ..\env\env_config.c
+SOURCE ..\env\env_failchk.c
+SOURCE ..\env\env_file.c
+SOURCE ..\env\env_globals.c
+SOURCE ..\env\env_method.c
+SOURCE ..\env\env_name.c
+SOURCE ..\env\env_open.c
+SOURCE ..\env\env_recover.c
+SOURCE ..\env\env_region.c
+SOURCE ..\env\env_register.c
+SOURCE ..\env\env_stat.c
+SOURCE ..\fileops\fileops_auto.c
+SOURCE ..\fileops\fop_basic.c
+SOURCE ..\fileops\fop_rec.c
+SOURCE ..\fileops\fop_util.c
+SOURCE ..\hash\hash_func.c
+SOURCE ..\hash\hash_stub.c
+SOURCE ..\hmac\hmac.c
+SOURCE ..\hmac\sha1.c
+SOURCE ..\lock\lock.c
+SOURCE ..\lock\lock_deadlock.c
+SOURCE ..\lock\lock_failchk.c
+SOURCE ..\lock\lock_id.c
+SOURCE ..\lock\lock_list.c
+SOURCE ..\lock\lock_method.c
+SOURCE ..\lock\lock_region.c
+SOURCE ..\lock\lock_stat.c
+SOURCE ..\lock\lock_timer.c
+SOURCE ..\lock\lock_util.c
+SOURCE ..\log\log.c
+SOURCE ..\log\log_archive.c
+SOURCE ..\log\log_compare.c
+SOURCE ..\log\log_debug.c
+SOURCE ..\log\log_get.c
+SOURCE ..\log\log_method.c
+SOURCE ..\log\log_put.c
+SOURCE ..\log\log_stat.c
+SOURCE ..\mp\mp_alloc.c
+SOURCE ..\mp\mp_bh.c
+SOURCE ..\mp\mp_fget.c
+SOURCE ..\mp\mp_fmethod.c
+SOURCE ..\mp\mp_fopen.c
+SOURCE ..\mp\mp_fput.c
+SOURCE ..\mp\mp_fset.c
+SOURCE ..\mp\mp_method.c
+SOURCE ..\mp\mp_mvcc.c
+SOURCE ..\mp\mp_region.c
+SOURCE ..\mp\mp_register.c
+SOURCE ..\mp\mp_resize.c
+SOURCE ..\mp\mp_stat.c
+SOURCE ..\mp\mp_sync.c
+SOURCE ..\mp\mp_trickle.c
+SOURCE ..\mutex\mut_alloc.c
+SOURCE ..\mutex\mut_failchk.c
+SOURCE ..\mutex\mut_method.c
+SOURCE ..\mutex\mut_pthread.c
+SOURCE ..\mutex\mut_region.c
+SOURCE ..\mutex\mut_stat.c
+SOURCE ..\os\os_abort.c
+SOURCE ..\os\os_abs.c
+SOURCE ..\os\os_alloc.c
+SOURCE ..\os\os_clock.c
+SOURCE ..\os\os_dir.c
+SOURCE ..\os\os_errno.c
+SOURCE ..\os\os_fid.c
+SOURCE ..\os\os_flock.c
+SOURCE ..\os\os_fsync.c
+SOURCE ..\os\os_fzero.c
+SOURCE ..\os\os_getenv.c
+SOURCE ..\os\os_handle.c
+SOURCE ..\os\os_map.c
+SOURCE ..\os\os_mkdir.c
+SOURCE ..\os\os_oflags.c
+SOURCE ..\os\os_open.c
+SOURCE ..\os\os_pid.c
+SOURCE ..\os\os_region.c
+SOURCE ..\os\os_rename.c
+SOURCE ..\os\os_root.c
+SOURCE ..\os\os_rpath.c
+SOURCE ..\os\os_rw.c
+SOURCE ..\os\os_seek.c
+SOURCE ..\os\os_sleep.c
+SOURCE ..\os\os_spin.c
+SOURCE ..\os\os_stat.c
+SOURCE ..\os\os_tmpdir.c
+SOURCE ..\os\os_truncate.c
+SOURCE ..\os\os_uid.c
+SOURCE ..\os\os_unlink.c
+SOURCE ..\os\os_yield.c
+SOURCE ..\os_s60\os_config.c
+SOURCE ..\qam\qam_stub.c
+SOURCE ..\rep\rep_stub.c
+SOURCE ..\repmgr\repmgr_stub.c
+SOURCE ..\txn\txn.c
+SOURCE ..\txn\txn_auto.c
+SOURCE ..\txn\txn_chkpt.c
+SOURCE ..\txn\txn_failchk.c
+SOURCE ..\txn\txn_method.c
+SOURCE ..\txn\txn_rec.c
+SOURCE ..\txn\txn_recover.c
+SOURCE ..\txn\txn_region.c
+SOURCE ..\txn\txn_stat.c
+SOURCE ..\txn\txn_util.c
+SOURCE ..\xa\xa_stub.c
+
+SYSTEMINCLUDE \epoc32\include\stdapis \epoc32\include
+USERINCLUDE .
+USERINCLUDE ..
+
+LIBRARY libc.lib libpthread.lib euser.lib libcrt0.lib
+
+nostrictdef
diff --git a/db/build_s60/clib_port.h b/db/build_s60/clib_port.h
new file mode 100644
index 000000000..ad622d9b7
--- /dev/null
+++ b/db/build_s60/clib_port.h
@@ -0,0 +1,203 @@
+/* DO NOT EDIT: automatically built from dist/clib_port.in. */
+/*
+ * Minimum/maximum values for various types.
+ */
+#ifndef UINT16_MAX /* Maximum 16-bit unsigned. */
+#define UINT16_MAX 65535
+#endif
+#ifndef UINT32_MAX /* Maximum 32-bit unsigned. */
+#define UINT32_MAX 4294967295U
+#endif
+
+#ifndef INT_MAX
+#if SIZEOF_INT == 4
+#define INT_MAX 2147483647
+#elif SIZEOF_INT == 8
+#define INT_MAX 9223372036854775807
+#endif
+#endif
+
+#ifndef INT_MIN /* minimum (signed) int value */
+#define INT_MIN (-INT_MAX-1)
+#endif
+
+#ifndef UINT_MAX /* maximum (signed) int value */
+#if SIZEOF_INT == 4
+#define UINT_MAX 4294967295U
+#elif SIZEOF_INT == 8
+#define UINT_MAX 18446744073709551615U
+#endif
+#endif
+
+#ifndef LONG_MAX /* maximum (signed) long value */
+#if SIZEOF_LONG == 4
+#define LONG_MAX 2147483647
+#elif SIZEOF_LONG == 8
+#define LONG_MAX 9223372036854775807L
+#endif
+#endif
+
+#ifndef LONG_MIN /* minimum (signed) long value */
+#define LONG_MIN (-LONG_MAX-1)
+#endif
+
+#ifndef ULONG_MAX /* maximum (unsigned) long value */
+#if SIZEOF_LONG == 4
+#define ULONG_MAX 4294967295U
+#elif SIZEOF_LONG == 8
+#define ULONG_MAX 18446744073709551615UL
+#endif
+#endif
+
+#if defined(HAVE_64BIT_TYPES)
+/*
+ * Override the system's 64-bit min/max constants. AIX's 32-bit compiler can
+ * handle 64-bit values, but the system's constants don't include the LL/ULL
+ * suffix, and so can't be compiled using the 32-bit compiler.
+ */
+#undef INT64_MAX
+#undef INT64_MIN
+#undef UINT64_MAX
+
+#ifdef DB_WIN32
+#define INT64_MAX _I64_MAX
+#define INT64_MIN _I64_MIN
+#define UINT64_MAX _UI64_MAX
+#else
+#define INT64_MAX 9223372036854775807LL
+#define INT64_MIN (-INT64_MAX-1)
+#define UINT64_MAX 18446744073709551615ULL
+#endif /* DB_WIN32 */
+
+#endif /* HAVE_64BIT_TYPES */
+
+/*
+ * Exit success/failure macros.
+ */
+#ifndef HAVE_EXIT_SUCCESS
+#define EXIT_FAILURE 1
+#define EXIT_SUCCESS 0
+#endif
+
+/*
+ * Don't step on the namespace. Other libraries may have their own
+ * implementations of these functions, we don't want to use their
+ * implementations or force them to use ours based on the load order.
+ */
+#ifndef HAVE_ATOI
+#define atoi __db_Catoi
+#endif
+#ifndef HAVE_ATOL
+#define atol __db_Catol
+#endif
+#ifndef HAVE_FCLOSE
+#define fclose __db_Cfclose
+#endif
+#ifndef HAVE_FGETC
+#define fgetc __db_Cfgetc
+#endif
+#ifndef HAVE_FGETS
+#define fgets __db_Cfgets
+#endif
+#ifndef HAVE_FOPEN
+#define fopen __db_Cfopen
+#endif
+#ifndef HAVE_FWRITE
+#define fwrite __db_Cfwrite
+#endif
+#ifndef HAVE_GETADDRINFO
+#define freeaddrinfo(a) __db_Cfreeaddrinfo(a)
+#define getaddrinfo(a, b, c, d) __db_Cgetaddrinfo(a, b, c, d)
+#endif
+#ifndef HAVE_GETCWD
+#define getcwd __db_Cgetcwd
+#endif
+#ifndef HAVE_GETOPT
+#define getopt __db_Cgetopt
+#define optarg __db_Coptarg
+#define opterr __db_Copterr
+#define optind __db_Coptind
+#define optopt __db_Coptopt
+#define optreset __db_Coptreset
+#endif
+#ifndef HAVE_ISALPHA
+#define isalpha __db_Cisalpha
+#endif
+#ifndef HAVE_ISDIGIT
+#define isdigit __db_Cisdigit
+#endif
+#ifndef HAVE_ISPRINT
+#define isprint __db_Cisprint
+#endif
+#ifndef HAVE_ISSPACE
+#define isspace __db_Cisspace
+#endif
+#ifndef HAVE_LOCALTIME
+#define localtime __db_Clocaltime
+#endif
+#ifndef HAVE_MEMCMP
+#define memcmp __db_Cmemcmp
+#endif
+#ifndef HAVE_MEMCPY
+#define memcpy __db_Cmemcpy
+#endif
+#ifndef HAVE_MEMMOVE
+#define memmove __db_Cmemmove
+#endif
+#ifndef HAVE_PRINTF
+#define printf __db_Cprintf
+#define fprintf __db_Cfprintf
+#endif
+#ifndef HAVE_QSORT
+#define qsort __db_Cqsort
+#endif
+#ifndef HAVE_RAISE
+#define raise __db_Craise
+#endif
+#ifndef HAVE_RAND
+#define rand __db_Crand
+#define srand __db_Csrand
+#endif
+#ifndef HAVE_SNPRINTF
+#define snprintf __db_Csnprintf
+#endif
+#ifndef HAVE_STRCASECMP
+#define strcasecmp __db_Cstrcasecmp
+#define strncasecmp __db_Cstrncasecmp
+#endif
+#ifndef HAVE_STRCAT
+#define strcat __db_Cstrcat
+#endif
+#ifndef HAVE_STRCHR
+#define strchr __db_Cstrchr
+#endif
+#ifndef HAVE_STRDUP
+#define strdup __db_Cstrdup
+#endif
+#ifndef HAVE_STRERROR
+#define strerror __db_Cstrerror
+#endif
+#ifndef HAVE_STRNCAT
+#define strncat __db_Cstrncat
+#endif
+#ifndef HAVE_STRNCMP
+#define strncmp __db_Cstrncmp
+#endif
+#ifndef HAVE_STRRCHR
+#define strrchr __db_Cstrrchr
+#endif
+#ifndef HAVE_STRSEP
+#define strsep __db_Cstrsep
+#endif
+#ifndef HAVE_STRTOL
+#define strtol __db_Cstrtol
+#endif
+#ifndef HAVE_STRTOUL
+#define strtoul __db_Cstrtoul
+#endif
+#ifndef HAVE_TIME
+#define time __db_Ctime
+#endif
+#ifndef HAVE_VSNPRINTF
+#define vsnprintf __db_Cvsnprintf
+#endif
diff --git a/db/build_s60/db.h b/db/build_s60/db.h
new file mode 100644
index 000000000..f6a04242a
--- /dev/null
+++ b/db/build_s60/db.h
@@ -0,0 +1,2646 @@
+/* DO NOT EDIT: automatically built by dist/s_s60. */
+/*
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
+ *
+ * $Id: db.h,v 1.35 2007/07/17 14:50:17 bostic Exp $
+ *
+ * db.h include file layout:
+ * General.
+ * Database Environment.
+ * Locking subsystem.
+ * Logging subsystem.
+ * Shared buffer cache (mpool) subsystem.
+ * Transaction subsystem.
+ * Access methods.
+ * Access method cursors.
+ * Dbm/Ndbm, Hsearch historic interfaces.
+ */
+
+#ifndef _DB_H_
+#define _DB_H_
+
+#ifndef __NO_SYSTEM_INCLUDES
+#include <sys/types.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <pthread.h>
+#endif
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+
+#undef __P
+#define __P(protos) protos
+
+/*
+ * Berkeley DB version information.
+ */
+#define DB_VERSION_MAJOR 4
+#define DB_VERSION_MINOR 6
+#define DB_VERSION_PATCH 18
+#define DB_VERSION_STRING "Berkeley DB 4.6.18: (July 17, 2007)"
+
+/*
+ * !!!
+ * Berkeley DB uses specifically sized types. If they're not provided by
+ * the system, typedef them here.
+ *
+ * We protect them against multiple inclusion using __BIT_TYPES_DEFINED__,
+ * as does BIND and Kerberos, since we don't know for sure what #include
+ * files the user is using.
+ *
+ * !!!
+ * We also provide the standard u_int, u_long etc., if they're not provided
+ * by the system.
+ */
+#ifndef __BIT_TYPES_DEFINED__
+#define __BIT_TYPES_DEFINED__
+#endif
+
+
+/*
+ * Missing ANSI types.
+ *
+ * uintmax_t --
+ * Largest unsigned type, used to align structures in memory. We don't store
+ * floating point types in structures, so integral types should be sufficient
+ * (and we don't have to worry about systems that store floats in other than
+ * power-of-2 numbers of bytes). Additionally this fixes compilers that rewrite
+ * structure assignments and ANSI C memcpy calls to be in-line instructions
+ * that happen to require alignment.
+ *
+ * uintptr_t --
+ * Unsigned type that's the same size as a pointer. There are places where
+ * DB modifies pointers by discarding the bottom bits to guarantee alignment.
+ * We can't use uintmax_t, it may be larger than the pointer, and compilers
+ * get upset about that. So far we haven't run on any machine where there's
+ * no unsigned type the same size as a pointer -- here's hoping.
+ */
+typedef unsigned long uintmax_t;
+
+
+/*
+ * Sequences are only available on machines with 64-bit integral types.
+ */
+typedef int32_t db_seq_t;
+
+/* Thread and process identification. */
+typedef pthread_t db_threadid_t;
+
+/* Basic types that are exported or quasi-exported. */
+typedef u_int32_t db_pgno_t; /* Page number type. */
+typedef u_int16_t db_indx_t; /* Page offset type. */
+#define DB_MAX_PAGES 0xffffffff /* >= # of pages in a file */
+
+typedef u_int32_t db_recno_t; /* Record number type. */
+#define DB_MAX_RECORDS 0xffffffff /* >= # of records in a tree */
+
+typedef u_int32_t db_timeout_t; /* Type of a timeout. */
+
+/*
+ * Region offsets are the difference between a pointer in a region and the
+ * region's base address. With private environments, both addresses are the
+ * result of calling malloc, and we can't assume anything about what malloc
+ * will return, so region offsets have to be able to hold differences between
+ * arbitrary pointers.
+ */
+typedef uintptr_t roff_t;
+
+/*
+ * Forward structure declarations, so we can declare pointers and
+ * applications can get type checking.
+ */
+struct __db; typedef struct __db DB;
+struct __db_bt_stat; typedef struct __db_bt_stat DB_BTREE_STAT;
+struct __db_cipher; typedef struct __db_cipher DB_CIPHER;
+struct __db_compact; typedef struct __db_compact DB_COMPACT;
+struct __db_dbt; typedef struct __db_dbt DBT;
+struct __db_env; typedef struct __db_env DB_ENV;
+struct __db_h_stat; typedef struct __db_h_stat DB_HASH_STAT;
+struct __db_ilock; typedef struct __db_ilock DB_LOCK_ILOCK;
+struct __db_lock_stat; typedef struct __db_lock_stat DB_LOCK_STAT;
+struct __db_lock_hstat; typedef struct __db_lock_hstat DB_LOCK_HSTAT;
+struct __db_lock_u; typedef struct __db_lock_u DB_LOCK;
+struct __db_locker; typedef struct __db_locker DB_LOCKER;
+struct __db_lockreq; typedef struct __db_lockreq DB_LOCKREQ;
+struct __db_locktab; typedef struct __db_locktab DB_LOCKTAB;
+struct __db_log; typedef struct __db_log DB_LOG;
+struct __db_log_cursor; typedef struct __db_log_cursor DB_LOGC;
+struct __db_log_stat; typedef struct __db_log_stat DB_LOG_STAT;
+struct __db_lsn; typedef struct __db_lsn DB_LSN;
+struct __db_mpool; typedef struct __db_mpool DB_MPOOL;
+struct __db_mpool_fstat;typedef struct __db_mpool_fstat DB_MPOOL_FSTAT;
+struct __db_mpool_stat; typedef struct __db_mpool_stat DB_MPOOL_STAT;
+struct __db_mpoolfile; typedef struct __db_mpoolfile DB_MPOOLFILE;
+struct __db_mutex_stat; typedef struct __db_mutex_stat DB_MUTEX_STAT;
+struct __db_mutex_t; typedef struct __db_mutex_t DB_MUTEX;
+struct __db_mutexmgr; typedef struct __db_mutexmgr DB_MUTEXMGR;
+struct __db_preplist; typedef struct __db_preplist DB_PREPLIST;
+struct __db_qam_stat; typedef struct __db_qam_stat DB_QUEUE_STAT;
+struct __db_rep; typedef struct __db_rep DB_REP;
+struct __db_rep_stat; typedef struct __db_rep_stat DB_REP_STAT;
+struct __db_repmgr_site; \
+ typedef struct __db_repmgr_site DB_REPMGR_SITE;
+struct __db_repmgr_stat; \
+ typedef struct __db_repmgr_stat DB_REPMGR_STAT;
+struct __db_seq_record; typedef struct __db_seq_record DB_SEQ_RECORD;
+struct __db_seq_stat; typedef struct __db_seq_stat DB_SEQUENCE_STAT;
+struct __db_sequence; typedef struct __db_sequence DB_SEQUENCE;
+struct __db_txn; typedef struct __db_txn DB_TXN;
+struct __db_txn_active; typedef struct __db_txn_active DB_TXN_ACTIVE;
+struct __db_txn_stat; typedef struct __db_txn_stat DB_TXN_STAT;
+struct __db_txnmgr; typedef struct __db_txnmgr DB_TXNMGR;
+struct __dbc; typedef struct __dbc DBC;
+struct __dbc_internal; typedef struct __dbc_internal DBC_INTERNAL;
+struct __fh_t; typedef struct __fh_t DB_FH;
+struct __fname; typedef struct __fname FNAME;
+struct __key_range; typedef struct __key_range DB_KEY_RANGE;
+struct __mpoolfile; typedef struct __mpoolfile MPOOLFILE;
+
+/* Key/data structure -- a Data-Base Thang. */
+struct __db_dbt {
+ void *data; /* Key/data */
+ u_int32_t size; /* key/data length */
+
+ u_int32_t ulen; /* RO: length of user buffer. */
+ u_int32_t dlen; /* RO: get/put record length. */
+ u_int32_t doff; /* RO: get/put record offset. */
+
+ void *app_data;
+
+#define DB_DBT_APPMALLOC 0x001 /* Callback allocated memory. */
+#define DB_DBT_DUPOK 0x002 /* Insert if duplicate. */
+#define DB_DBT_ISSET 0x004 /* Lower level calls set value. */
+#define DB_DBT_MALLOC 0x008 /* Return in malloc'd memory. */
+#define DB_DBT_MULTIPLE 0x010 /* References multiple records. */
+#define DB_DBT_PARTIAL 0x020 /* Partial put/get. */
+#define DB_DBT_REALLOC 0x040 /* Return in realloc'd memory. */
+#define DB_DBT_USERCOPY 0x080 /* Use the user-supplied callback. */
+#define DB_DBT_USERMEM 0x100 /* Return in user's memory. */
+ u_int32_t flags;
+};
+
+/*
+ * Common flags --
+ * Interfaces which use any of these common flags should never have
+ * interface specific flags in this range.
+ */
+#define DB_CREATE 0x0000001 /* Create file as necessary. */
+#define DB_DURABLE_UNKNOWN 0x0000002 /* Durability on open (internal). */
+#define DB_FORCE 0x0000004 /* Force (anything). */
+#define DB_MULTIVERSION 0x0000008 /* Multiversion concurrency control. */
+#define DB_NOMMAP 0x0000010 /* Don't mmap underlying file. */
+#define DB_RDONLY 0x0000020 /* Read-only (O_RDONLY). */
+#define DB_RECOVER 0x0000040 /* Run normal recovery. */
+#define DB_THREAD 0x0000080 /* Applications are threaded. */
+#define DB_TRUNCATE 0x0000100 /* Discard existing DB (O_TRUNC). */
+#define DB_TXN_NOSYNC 0x0000200 /* Do not sync log on commit. */
+#define DB_TXN_NOWAIT 0x0000400 /* Do not wait for locks. */
+#define DB_TXN_NOT_DURABLE 0x0000800 /* Do not log changes. */
+#define DB_TXN_WRITE_NOSYNC 0x0001000 /* Write the log but don't sync. */
+#define DB_SPARE_FLAG 0x0002000 /* Spare. */
+
+/*
+ * Common flags --
+ * Interfaces which use any of these common flags should never have
+ * interface specific flags in this range.
+ *
+ * DB_AUTO_COMMIT:
+ * DB_ENV->set_flags, DB->open
+ * (Note: until the 4.3 release, legal to DB->associate, DB->del,
+ * DB->put, DB->remove, DB->rename and DB->truncate, and others.)
+ * DB_READ_COMMITTED:
+ * DB->cursor, DB->get, DB->join, DBcursor->get, DB_ENV->txn_begin
+ * DB_READ_UNCOMMITTED:
+ * DB->cursor, DB->get, DB->join, DB->open, DBcursor->get,
+ * DB_ENV->txn_begin
+ * DB_TXN_SNAPSHOT:
+ * DB_ENV->set_flags, DB_ENV->txn_begin, DB->cursor
+ *
+ * !!!
+ * The DB_READ_COMMITTED and DB_READ_UNCOMMITTED bit masks can't be changed
+ * without also changing the masks for the flags that can be OR'd into DB
+ * access method and cursor operation values.
+ */
+#define DB_IGNORE_LEASE 0x01000000/* Ignore leases. */
+#define DB_AUTO_COMMIT 0x02000000/* Implied transaction. */
+
+#define DB_READ_COMMITTED 0x04000000/* Degree 2 isolation. */
+#define DB_DEGREE_2 0x04000000/* Historic name. */
+
+#define DB_READ_UNCOMMITTED 0x08000000/* Degree 1 isolation. */
+#define DB_DIRTY_READ 0x08000000/* Historic name. */
+
+#define DB_TXN_SNAPSHOT 0x10000000/* Snapshot isolation. */
+
+/*
+ * Flags common to db_env_create and db_create.
+ */
+#define DB_CXX_NO_EXCEPTIONS 0x0000001 /* C++: return error values. */
+
+/*
+ * Flags private to db_env_create.
+ * Shared flags up to 0x0000001 */
+#define DB_RPCCLIENT 0x0000002 /* An RPC client environment. */
+
+/*
+ * Flags private to db_create.
+ * Shared flags up to 0x0000001 */
+#define DB_XA_CREATE 0x0000002 /* Open in an XA environment. */
+
+/*
+ * Flags shared by DB_ENV->remove and DB_ENV->open.
+ * Shared flags up to 0x0002000 */
+#define DB_USE_ENVIRON 0x0004000 /* Use the environment. */
+#define DB_USE_ENVIRON_ROOT 0x0008000 /* Use the environment if root. */
+/*
+ * Flags private to DB_ENV->open.
+ */
+#define DB_INIT_CDB 0x0010000 /* Concurrent Access Methods. */
+#define DB_INIT_LOCK 0x0020000 /* Initialize locking. */
+#define DB_INIT_LOG 0x0040000 /* Initialize logging. */
+#define DB_INIT_MPOOL 0x0080000 /* Initialize mpool. */
+#define DB_INIT_REP 0x0100000 /* Initialize replication. */
+#define DB_INIT_TXN 0x0200000 /* Initialize transactions. */
+#define DB_LOCKDOWN 0x0400000 /* Lock memory into physical core. */
+#define DB_PRIVATE 0x0800000 /* DB_ENV is process local. */
+#define DB_RECOVER_FATAL 0x1000000 /* Run catastrophic recovery. */
+#define DB_REGISTER 0x2000000 /* Multi-process registry. */
+#define DB_SYSTEM_MEM 0x4000000 /* Use system-backed memory. */
+
+#define DB_JOINENV 0x0 /* Compatibility. */
+
+/*
+ * Flags private to DB->open.
+ * Shared flags up to 0x0002000 */
+#define DB_EXCL 0x0004000 /* Exclusive open (O_EXCL). */
+#define DB_FCNTL_LOCKING 0x0008000 /* UNDOC: fcntl(2) locking. */
+#define DB_NO_AUTO_COMMIT 0x0010000 /* Override env-wide AUTOCOMMIT. */
+#define DB_RDWRMASTER 0x0020000 /* UNDOC: allow subdb master open R/W */
+#define DB_WRITEOPEN 0x0040000 /* UNDOC: open with write lock. */
+
+/*
+ * Flags private to DB->associate.
+ * Shared flags up to 0x0002000 */
+#define DB_IMMUTABLE_KEY 0x0004000 /* Secondary key is immutable. */
+/* Shared flags at 0x1000000 */
+
+/*
+ * Flags private to DB_ENV->txn_begin.
+ * Shared flags up to 0x0002000 */
+#define DB_TXN_SYNC 0x0004000 /* Always sync log on commit. */
+#define DB_TXN_WAIT 0x0008000 /* Always wait for locks in this TXN. */
+
+/*
+ * Flags private to DB_ENV->txn_checkpoint.
+ * Shared flags up to 0x0002000 */
+#define DB_CKP_INTERNAL 0x0004000 /* Internally generated checkpoint. */
+
+/*
+ * Flags private to DB_ENV->set_encrypt.
+ */
+#define DB_ENCRYPT_AES 0x0000001 /* AES, assumes SHA1 checksum */
+
+/*
+ * Flags private to DB_ENV->set_flags.
+ * Shared flags up to 0x00002000 */
+#define DB_CDB_ALLDB 0x00004000/* Set CDB locking per environment. */
+#define DB_DIRECT_DB 0x00008000/* Don't buffer databases in the OS. */
+#define DB_DIRECT_LOG 0x00010000/* Don't buffer log files in the OS. */
+#define DB_DSYNC_DB 0x00020000/* Set O_DSYNC on the databases. */
+#define DB_DSYNC_LOG 0x00040000/* Set O_DSYNC on the log. */
+#define DB_LOG_AUTOREMOVE 0x00080000/* Automatically remove log files. */
+#define DB_LOG_INMEMORY 0x00100000/* Store logs in buffers in memory. */
+#define DB_NOLOCKING 0x00200000/* Set locking/mutex behavior. */
+#define DB_NOPANIC 0x00400000/* Set panic state per DB_ENV. */
+#define DB_OVERWRITE 0x00800000/* Overwrite unlinked region files. */
+#define DB_PANIC_ENVIRONMENT 0x01000000/* Set panic state per environment. */
+/* Shared flags at 0x02000000 */
+/* Shared flags at 0x04000000 */
+/* Shared flags at 0x08000000 */
+/* Shared flags at 0x10000000 */
+#define DB_REGION_INIT 0x20000000/* Page-fault regions on open. */
+#define DB_TIME_NOTGRANTED 0x40000000/* Return NOTGRANTED on timeout. */
+#define DB_YIELDCPU 0x80000000/* Yield the CPU (a lot). */
+
+/*
+ * Flags private to DB->set_feedback's callback.
+ */
+#define DB_UPGRADE 0x0000001 /* Upgrading. */
+#define DB_VERIFY 0x0000002 /* Verifying. */
+
+/*
+ * Flags private to DB->compact.
+ * Shared flags up to 0x00002000
+ */
+#define DB_FREELIST_ONLY 0x00004000 /* Just sort and truncate. */
+#define DB_FREE_SPACE 0x00008000 /* Free space . */
+#define DB_COMPACT_FLAGS \
+ (DB_FREELIST_ONLY | DB_FREE_SPACE)
+
+/*
+ * Flags private to DB_MPOOLFILE->open.
+ * Shared flags up to 0x0002000 */
+#define DB_DIRECT 0x0004000 /* Don't buffer the file in the OS. */
+#define DB_EXTENT 0x0008000 /* internal: dealing with an extent. */
+#define DB_ODDFILESIZE 0x0010000 /* Truncate file to N * pgsize. */
+
+/*
+ * Flags private to DB->set_flags.
+ * Shared flags up to 0x00002000 */
+#define DB_CHKSUM 0x00004000 /* Do checksumming */
+#define DB_DUP 0x00008000 /* Btree, Hash: duplicate keys. */
+#define DB_DUPSORT 0x00010000 /* Btree, Hash: duplicate keys. */
+#define DB_ENCRYPT 0x00020000 /* Btree, Hash: duplicate keys. */
+#define DB_INORDER 0x00040000 /* Queue: strict ordering on consume */
+#define DB_RECNUM 0x00080000 /* Btree: record numbers. */
+#define DB_RENUMBER 0x00100000 /* Recno: renumber on insert/delete. */
+#define DB_REVSPLITOFF 0x00200000 /* Btree: turn off reverse splits. */
+#define DB_SNAPSHOT 0x00400000 /* Recno: snapshot the input. */
+
+/*
+ * Flags private to the DB_ENV->stat_print, DB->stat and DB->stat_print methods.
+ */
+#define DB_FAST_STAT 0x0000001 /* Don't traverse the database. */
+#define DB_STAT_ALL 0x0000002 /* Print: Everything. */
+#define DB_STAT_CLEAR 0x0000004 /* Clear stat after returning values. */
+#define DB_STAT_LOCK_CONF 0x0000008 /* Print: Lock conflict matrix. */
+#define DB_STAT_LOCK_LOCKERS 0x0000010 /* Print: Lockers. */
+#define DB_STAT_LOCK_OBJECTS 0x0000020 /* Print: Lock objects. */
+#define DB_STAT_LOCK_PARAMS 0x0000040 /* Print: Lock parameters. */
+#define DB_STAT_MEMP_HASH 0x0000080 /* Print: Mpool hash buckets. */
+#define DB_STAT_NOERROR 0x0000100 /* Internal: continue on error. */
+#define DB_STAT_SUBSYSTEM 0x0000200 /* Print: Subsystems too. */
+
+/*
+ * Flags private to DB->join.
+ */
+#define DB_JOIN_NOSORT 0x0000001 /* Don't try to optimize join. */
+
+/*
+ * Flags private to DB->verify.
+ */
+#define DB_AGGRESSIVE 0x0000001 /* Salvage whatever could be data.*/
+#define DB_NOORDERCHK 0x0000002 /* Skip sort order/hashing check. */
+#define DB_ORDERCHKONLY 0x0000004 /* Only perform the order check. */
+#define DB_PR_PAGE 0x0000008 /* Show page contents (-da). */
+#define DB_PR_RECOVERYTEST 0x0000010 /* Recovery test (-dr). */
+#define DB_PRINTABLE 0x0000020 /* Use printable format for salvage. */
+#define DB_SALVAGE 0x0000040 /* Salvage what looks like data. */
+#define DB_UNREF 0x0000080 /* Report unreferenced pages. */
+/*
+ * !!!
+ * These must not go over 0x8000, or they will collide with the flags
+ * used by __bam_vrfy_subtree.
+ */
+
+/*
+ * Flags private to DB->rep_set_transport's send callback.
+ */
+#define DB_REP_ANYWHERE 0x0000001 /* Message can be serviced anywhere. */
+#define DB_REP_NOBUFFER 0x0000002 /* Do not buffer this message. */
+#define DB_REP_PERMANENT 0x0000004 /* Important--app. may want to flush. */
+#define DB_REP_REREQUEST 0x0000008 /* This msg already been requested. */
+
+/*******************************************************
+ * Mutexes.
+ *******************************************************/
+typedef u_int32_t db_mutex_t;
+
+/*
+ * Flag arguments for DbEnv.mutex_alloc, DbEnv.is_alive and for the
+ * DB_MUTEX structure.
+ */
+#define DB_MUTEX_ALLOCATED 0x01 /* Mutex currently allocated. */
+#define DB_MUTEX_LOCKED 0x02 /* Mutex currently locked. */
+#define DB_MUTEX_LOGICAL_LOCK 0x04 /* Mutex backs a database lock. */
+#define DB_MUTEX_PROCESS_ONLY 0x08 /* Mutex private to a process. */
+#define DB_MUTEX_SELF_BLOCK 0x10 /* Must be able to block self. */
+
+struct __db_mutex_stat {
+ /* The following fields are maintained in the region's copy. */
+ u_int32_t st_mutex_align; /* Mutex alignment */
+ u_int32_t st_mutex_tas_spins; /* Mutex test-and-set spins */
+ u_int32_t st_mutex_cnt; /* Mutex count */
+ u_int32_t st_mutex_free; /* Available mutexes */
+ u_int32_t st_mutex_inuse; /* Mutexes in use */
+ u_int32_t st_mutex_inuse_max; /* Maximum mutexes ever in use */
+
+ /* The following fields are filled-in from other places. */
+#ifndef __TEST_DB_NO_STATISTICS
+ u_int32_t st_region_wait; /* Region lock granted after wait. */
+ u_int32_t st_region_nowait; /* Region lock granted without wait. */
+ roff_t st_regsize; /* Region size. */
+#endif
+};
+
+/* This is the length of the buffer passed to DB_ENV->thread_id_string() */
+#define DB_THREADID_STRLEN 128
+
+/*******************************************************
+ * Locking.
+ *******************************************************/
+#define DB_LOCKVERSION 1
+
+#define DB_FILE_ID_LEN 20 /* Unique file ID length. */
+
+/*
+ * Deadlock detector modes; used in the DB_ENV structure to configure the
+ * locking subsystem.
+ */
+#define DB_LOCK_NORUN 0
+#define DB_LOCK_DEFAULT 1 /* Default policy. */
+#define DB_LOCK_EXPIRE 2 /* Only expire locks, no detection. */
+#define DB_LOCK_MAXLOCKS 3 /* Select locker with max locks. */
+#define DB_LOCK_MAXWRITE 4 /* Select locker with max writelocks. */
+#define DB_LOCK_MINLOCKS 5 /* Select locker with min locks. */
+#define DB_LOCK_MINWRITE 6 /* Select locker with min writelocks. */
+#define DB_LOCK_OLDEST 7 /* Select oldest locker. */
+#define DB_LOCK_RANDOM 8 /* Select random locker. */
+#define DB_LOCK_YOUNGEST 9 /* Select youngest locker. */
+
+/* Flag values for lock_vec(), lock_get(). */
+#define DB_LOCK_ABORT 0x001 /* Internal: Lock during abort. */
+#define DB_LOCK_NOWAIT 0x002 /* Don't wait on unavailable lock. */
+#define DB_LOCK_RECORD 0x004 /* Internal: record lock. */
+#define DB_LOCK_SET_TIMEOUT 0x008 /* Internal: set lock timeout. */
+#define DB_LOCK_SWITCH 0x010 /* Internal: switch existing lock. */
+#define DB_LOCK_UPGRADE 0x020 /* Internal: upgrade existing lock. */
+
+/* Flag values for DbEnv.set_timeout. */
+#define DB_SET_LOCK_TIMEOUT 1 /* Set lock timeout */
+#define DB_SET_TXN_NOW 2 /* Timeout lock now (internal) */
+#define DB_SET_TXN_TIMEOUT 3 /* Set transaction timeout */
+
+/*
+ * Simple R/W lock modes and for multi-granularity intention locking.
+ *
+ * !!!
+ * These values are NOT random, as they are used as an index into the lock
+ * conflicts arrays, i.e., DB_LOCK_IWRITE must be == 3, and DB_LOCK_IREAD
+ * must be == 4.
+ */
+typedef enum {
+ DB_LOCK_NG=0, /* Not granted. */
+ DB_LOCK_READ=1, /* Shared/read. */
+ DB_LOCK_WRITE=2, /* Exclusive/write. */
+ DB_LOCK_WAIT=3, /* Wait for event */
+ DB_LOCK_IWRITE=4, /* Intent exclusive/write. */
+ DB_LOCK_IREAD=5, /* Intent to share/read. */
+ DB_LOCK_IWR=6, /* Intent to read and write. */
+ DB_LOCK_READ_UNCOMMITTED=7, /* Degree 1 isolation. */
+ DB_LOCK_WWRITE=8 /* Was Written. */
+} db_lockmode_t;
+
+/*
+ * Request types.
+ */
+typedef enum {
+ DB_LOCK_DUMP=0, /* Display held locks. */
+ DB_LOCK_GET=1, /* Get the lock. */
+ DB_LOCK_GET_TIMEOUT=2, /* Get lock with a timeout. */
+ DB_LOCK_INHERIT=3, /* Pass locks to parent. */
+ DB_LOCK_PUT=4, /* Release the lock. */
+ DB_LOCK_PUT_ALL=5, /* Release locker's locks. */
+ DB_LOCK_PUT_OBJ=6, /* Release locker's locks on obj. */
+ DB_LOCK_PUT_READ=7, /* Release locker's read locks. */
+ DB_LOCK_TIMEOUT=8, /* Force a txn to timeout. */
+ DB_LOCK_TRADE=9, /* Trade locker ids on a lock. */
+ DB_LOCK_UPGRADE_WRITE=10 /* Upgrade writes for dirty reads. */
+} db_lockop_t;
+
+/*
+ * Status of a lock.
+ */
+typedef enum {
+ DB_LSTAT_ABORTED=1, /* Lock belongs to an aborted txn. */
+ DB_LSTAT_EXPIRED=2, /* Lock has expired. */
+ DB_LSTAT_FREE=3, /* Lock is unallocated. */
+ DB_LSTAT_HELD=4, /* Lock is currently held. */
+ DB_LSTAT_PENDING=5, /* Lock was waiting and has been
+ * promoted; waiting for the owner
+ * to run and upgrade it to held. */
+ DB_LSTAT_WAITING=6 /* Lock is on the wait queue. */
+}db_status_t;
+
+/* Lock statistics structure. */
+struct __db_lock_stat {
+ u_int32_t st_id; /* Last allocated locker ID. */
+ u_int32_t st_cur_maxid; /* Current maximum unused ID. */
+ u_int32_t st_maxlocks; /* Maximum number of locks in table. */
+ u_int32_t st_maxlockers; /* Maximum num of lockers in table. */
+ u_int32_t st_maxobjects; /* Maximum num of objects in table. */
+ int st_nmodes; /* Number of lock modes. */
+ u_int32_t st_nlockers; /* Current number of lockers. */
+#ifndef __TEST_DB_NO_STATISTICS
+ u_int32_t st_nlocks; /* Current number of locks. */
+ u_int32_t st_maxnlocks; /* Maximum number of locks so far. */
+ u_int32_t st_maxnlockers; /* Maximum number of lockers so far. */
+ u_int32_t st_nobjects; /* Current number of objects. */
+ u_int32_t st_maxnobjects; /* Maximum number of objects so far. */
+ u_int32_t st_nrequests; /* Number of lock gets. */
+ u_int32_t st_nreleases; /* Number of lock puts. */
+ u_int32_t st_nupgrade; /* Number of lock upgrades. */
+ u_int32_t st_ndowngrade; /* Number of lock downgrades. */
+ u_int32_t st_lock_wait; /* Lock conflicts w/ subsequent wait */
+ u_int32_t st_lock_nowait; /* Lock conflicts w/o subsequent wait */
+ u_int32_t st_ndeadlocks; /* Number of lock deadlocks. */
+ db_timeout_t st_locktimeout; /* Lock timeout. */
+ u_int32_t st_nlocktimeouts; /* Number of lock timeouts. */
+ db_timeout_t st_txntimeout; /* Transaction timeout. */
+ u_int32_t st_ntxntimeouts; /* Number of transaction timeouts. */
+ u_int32_t st_objs_wait; /* Object lock granted after wait. */
+ u_int32_t st_objs_nowait; /* Object lock granted without wait. */
+ u_int32_t st_lockers_wait; /* Locker lock granted after wait. */
+ u_int32_t st_lockers_nowait; /* Locker lock granted without wait. */
+ u_int32_t st_locks_wait; /* Lock lock granted after wait. */
+ u_int32_t st_locks_nowait; /* Lock lock granted without wait. */
+ u_int32_t st_region_wait; /* Region lock granted after wait. */
+ u_int32_t st_region_nowait; /* Region lock granted without wait. */
+ u_int32_t st_hash_len; /* Max length of bucket. */
+ roff_t st_regsize; /* Region size. */
+#endif
+};
+
+struct __db_lock_hstat {
+ u_int32_t st_nrequests; /* Number of lock gets. */
+ u_int32_t st_nreleases; /* Number of lock puts. */
+ u_int32_t st_nupgrade; /* Number of lock upgrades. */
+ u_int32_t st_ndowngrade; /* Number of lock downgrades. */
+ u_int32_t st_lock_wait; /* Lock conflicts w/ subsequent wait */
+ u_int32_t st_lock_nowait; /* Lock conflicts w/o subsequent wait */
+ u_int32_t st_nlocktimeouts; /* Number of lock timeouts. */
+ u_int32_t st_ntxntimeouts; /* Number of transaction timeouts. */
+ u_int32_t st_hash_len; /* Max length of bucket. */
+};
+
+/*
+ * DB_LOCK_ILOCK --
+ * Internal DB access method lock.
+ */
+struct __db_ilock {
+ db_pgno_t pgno; /* Page being locked. */
+ u_int8_t fileid[DB_FILE_ID_LEN];/* File id. */
+#define DB_HANDLE_LOCK 1
+#define DB_RECORD_LOCK 2
+#define DB_PAGE_LOCK 3
+ u_int32_t type; /* Type of lock. */
+};
+
+/*
+ * DB_LOCK --
+ * The structure is allocated by the caller and filled in during a
+ * lock_get request (or a lock_vec/DB_LOCK_GET).
+ */
+struct __db_lock_u {
+ roff_t off; /* Offset of the lock in the region */
+ u_int32_t ndx; /* Index of the object referenced by
+ * this lock; used for locking. */
+ u_int32_t gen; /* Generation number of this lock. */
+ db_lockmode_t mode; /* mode of this lock. */
+};
+
+/* Lock request structure. */
+struct __db_lockreq {
+ db_lockop_t op; /* Operation. */
+ db_lockmode_t mode; /* Requested mode. */
+ db_timeout_t timeout; /* Time to expire lock. */
+ DBT *obj; /* Object being locked. */
+ DB_LOCK lock; /* Lock returned. */
+};
+
+/*******************************************************
+ * Logging.
+ *******************************************************/
+#define DB_LOGVERSION 13 /* Current log version. */
+#define DB_LOGOLDVER 8 /* Oldest log version supported. */
+#define DB_LOGMAGIC 0x040988
+
+/* Flag values for DB_ENV->log_archive(). */
+#define DB_ARCH_ABS 0x001 /* Absolute pathnames. */
+#define DB_ARCH_DATA 0x002 /* Data files. */
+#define DB_ARCH_LOG 0x004 /* Log files. */
+#define DB_ARCH_REMOVE 0x008 /* Remove log files. */
+
+/* Flag values for DB_ENV->log_put(). */
+#define DB_FLUSH 0x001 /* Flush data to disk (public). */
+#define DB_LOG_CHKPNT 0x002 /* Flush supports a checkpoint */
+#define DB_LOG_COMMIT 0x004 /* Flush supports a commit */
+#define DB_LOG_NOCOPY 0x008 /* Don't copy data */
+#define DB_LOG_NOT_DURABLE 0x010 /* Do not log; keep in memory */
+#define DB_LOG_WRNOSYNC 0x020 /* Write, don't sync log_put */
+
+/*
+ * A DB_LSN has two parts, a fileid which identifies a specific file, and an
+ * offset within that file. The fileid is an unsigned 4-byte quantity that
+ * uniquely identifies a file within the log directory -- currently a simple
+ * counter inside the log. The offset is also an unsigned 4-byte value. The
+ * log manager guarantees the offset is never more than 4 bytes by switching
+ * to a new log file before the maximum length imposed by an unsigned 4-byte
+ * offset is reached.
+ */
+struct __db_lsn {
+ u_int32_t file; /* File ID. */
+ u_int32_t offset; /* File offset. */
+};
+
+/*
+ * Application-specified log record types start at DB_user_BEGIN, and must not
+ * equal or exceed DB_debug_FLAG.
+ *
+ * DB_debug_FLAG is the high-bit of the u_int32_t that specifies a log record
+ * type. If the flag is set, it's a log record that was logged for debugging
+ * purposes only, even if it reflects a database change -- the change was part
+ * of a non-durable transaction.
+ */
+#define DB_user_BEGIN 10000
+#define DB_debug_FLAG 0x80000000
+
+/*
+ * DB_LOGC --
+ * Log cursor.
+ */
+struct __db_log_cursor {
+ DB_ENV *dbenv; /* Enclosing dbenv. */
+
+ DB_FH *fhp; /* File handle. */
+ DB_LSN lsn; /* Cursor: LSN */
+ u_int32_t len; /* Cursor: record length */
+ u_int32_t prev; /* Cursor: previous record's offset */
+
+ DBT dbt; /* Return DBT. */
+ DB_LSN p_lsn; /* Persist LSN. */
+ u_int32_t p_version; /* Persist version. */
+
+ u_int8_t *bp; /* Allocated read buffer. */
+ u_int32_t bp_size; /* Read buffer length in bytes. */
+ u_int32_t bp_rlen; /* Read buffer valid data length. */
+ DB_LSN bp_lsn; /* Read buffer first byte LSN. */
+
+ u_int32_t bp_maxrec; /* Max record length in the log file. */
+
+ /* DB_LOGC PUBLIC HANDLE LIST BEGIN */
+ int (*close) __P((DB_LOGC *, u_int32_t));
+ int (*get) __P((DB_LOGC *, DB_LSN *, DBT *, u_int32_t));
+ int (*version) __P((DB_LOGC *, u_int32_t *, u_int32_t));
+ /* DB_LOGC PUBLIC HANDLE LIST END */
+
+#define DB_LOG_DISK 0x01 /* Log record came from disk. */
+#define DB_LOG_LOCKED 0x02 /* Log region already locked */
+#define DB_LOG_SILENT_ERR 0x04 /* Turn-off error messages. */
+ u_int32_t flags;
+};
+
+/* Log statistics structure. */
+struct __db_log_stat {
+ u_int32_t st_magic; /* Log file magic number. */
+ u_int32_t st_version; /* Log file version number. */
+ int st_mode; /* Log file permissions mode. */
+ u_int32_t st_lg_bsize; /* Log buffer size. */
+ u_int32_t st_lg_size; /* Log file size. */
+ u_int32_t st_wc_bytes; /* Bytes to log since checkpoint. */
+ u_int32_t st_wc_mbytes; /* Megabytes to log since checkpoint. */
+#ifndef __TEST_DB_NO_STATISTICS
+ u_int32_t st_record; /* Records entered into the log. */
+ u_int32_t st_w_bytes; /* Bytes to log. */
+ u_int32_t st_w_mbytes; /* Megabytes to log. */
+ u_int32_t st_wcount; /* Total I/O writes to the log. */
+ u_int32_t st_wcount_fill; /* Overflow writes to the log. */
+ u_int32_t st_rcount; /* Total I/O reads from the log. */
+ u_int32_t st_scount; /* Total syncs to the log. */
+ u_int32_t st_region_wait; /* Region lock granted after wait. */
+ u_int32_t st_region_nowait; /* Region lock granted without wait. */
+ u_int32_t st_cur_file; /* Current log file number. */
+ u_int32_t st_cur_offset; /* Current log file offset. */
+ u_int32_t st_disk_file; /* Known on disk log file number. */
+ u_int32_t st_disk_offset; /* Known on disk log file offset. */
+ u_int32_t st_maxcommitperflush; /* Max number of commits in a flush. */
+ u_int32_t st_mincommitperflush; /* Min number of commits in a flush. */
+ roff_t st_regsize; /* Region size. */
+#endif
+};
+
+/*
+ * We need to record the first log record of a transaction. For user
+ * defined logging this macro returns the place to put that information,
+ * if it is need in rlsnp, otherwise it leaves it unchanged. We also
+ * need to track the last record of the transaction, this returns the
+ * place to put that info.
+ */
+#define DB_SET_TXN_LSNP(txn, blsnp, llsnp) \
+ ((txn)->set_txn_lsnp(txn, blsnp, llsnp))
+
+/*******************************************************
+ * Shared buffer cache (mpool).
+ *******************************************************/
+/* Flag values for DB_MPOOLFILE->get. */
+#define DB_MPOOL_CREATE 0x001 /* Create a page. */
+#define DB_MPOOL_DIRTY 0x002 /* Get page for an update. */
+#define DB_MPOOL_EDIT 0x004 /* Modify without copying. */
+#define DB_MPOOL_FREE 0x008 /* Free page if present. */
+#define DB_MPOOL_LAST 0x010 /* Return the last page. */
+#define DB_MPOOL_NEW 0x020 /* Create a new page. */
+
+/* Undocumented flag value for DB_MPOOLFILE->close. */
+#define DB_MPOOL_DISCARD 0x001 /* Discard file. */
+
+/* Flags values for DB_MPOOLFILE->set_flags. */
+#define DB_MPOOL_NOFILE 0x001 /* Never open a backing file. */
+#define DB_MPOOL_UNLINK 0x002 /* Unlink the file on last close. */
+
+/* Priority values for DB_MPOOLFILE->{put,set_priority}. */
+typedef enum {
+ DB_PRIORITY_UNCHANGED=0,
+ DB_PRIORITY_VERY_LOW=1,
+ DB_PRIORITY_LOW=2,
+ DB_PRIORITY_DEFAULT=3,
+ DB_PRIORITY_HIGH=4,
+ DB_PRIORITY_VERY_HIGH=5
+} DB_CACHE_PRIORITY;
+
+/* Per-process DB_MPOOLFILE information. */
+struct __db_mpoolfile {
+ DB_FH *fhp; /* Underlying file handle. */
+
+ /*
+ * !!!
+ * The ref, pinref and q fields are protected by the region lock.
+ */
+ u_int32_t ref; /* Reference count. */
+
+ u_int32_t pinref; /* Pinned block reference count. */
+
+ /*
+ * !!!
+ * Explicit representations of structures from queue.h.
+ * TAILQ_ENTRY(__db_mpoolfile) q;
+ */
+ struct {
+ struct __db_mpoolfile *tqe_next;
+ struct __db_mpoolfile **tqe_prev;
+ } q; /* Linked list of DB_MPOOLFILE's. */
+
+ /*
+ * !!!
+ * The rest of the fields (with the exception of the MP_FLUSH flag)
+ * are not thread-protected, even when they may be modified at any
+ * time by the application. The reason is the DB_MPOOLFILE handle
+ * is single-threaded from the viewpoint of the application, and so
+ * the only fields needing to be thread-protected are those accessed
+ * by checkpoint or sync threads when using DB_MPOOLFILE structures
+ * to flush buffers from the cache.
+ */
+ DB_ENV *dbenv; /* Overlying DB_ENV. */
+ MPOOLFILE *mfp; /* Underlying MPOOLFILE. */
+
+ u_int32_t clear_len; /* Cleared length on created pages. */
+ u_int8_t /* Unique file ID. */
+ fileid[DB_FILE_ID_LEN];
+ int ftype; /* File type. */
+ int32_t lsn_offset; /* LSN offset in page. */
+ u_int32_t gbytes, bytes; /* Maximum file size. */
+ DBT *pgcookie; /* Byte-string passed to pgin/pgout. */
+ int32_t priority; /* Cache priority. */
+
+ void *addr; /* Address of mmap'd region. */
+ size_t len; /* Length of mmap'd region. */
+
+ u_int32_t config_flags; /* Flags to DB_MPOOLFILE->set_flags. */
+
+ /* DB_MPOOLFILE PUBLIC HANDLE LIST BEGIN */
+ int (*close) __P((DB_MPOOLFILE *, u_int32_t));
+ int (*get)
+ __P((DB_MPOOLFILE *, db_pgno_t *, DB_TXN *, u_int32_t, void *));
+ int (*get_clear_len) __P((DB_MPOOLFILE *, u_int32_t *));
+ int (*get_fileid) __P((DB_MPOOLFILE *, u_int8_t *));
+ int (*get_flags) __P((DB_MPOOLFILE *, u_int32_t *));
+ int (*get_ftype) __P((DB_MPOOLFILE *, int *));
+ int (*get_last_pgno) __P((DB_MPOOLFILE *, db_pgno_t *));
+ int (*get_lsn_offset) __P((DB_MPOOLFILE *, int32_t *));
+ int (*get_maxsize) __P((DB_MPOOLFILE *, u_int32_t *, u_int32_t *));
+ int (*get_pgcookie) __P((DB_MPOOLFILE *, DBT *));
+ int (*get_priority) __P((DB_MPOOLFILE *, DB_CACHE_PRIORITY *));
+ int (*open) __P((DB_MPOOLFILE *, const char *, u_int32_t, int, size_t));
+ int (*put) __P((DB_MPOOLFILE *, void *, DB_CACHE_PRIORITY, u_int32_t));
+ int (*set_clear_len) __P((DB_MPOOLFILE *, u_int32_t));
+ int (*set_fileid) __P((DB_MPOOLFILE *, u_int8_t *));
+ int (*set_flags) __P((DB_MPOOLFILE *, u_int32_t, int));
+ int (*set_ftype) __P((DB_MPOOLFILE *, int));
+ int (*set_lsn_offset) __P((DB_MPOOLFILE *, int32_t));
+ int (*set_maxsize) __P((DB_MPOOLFILE *, u_int32_t, u_int32_t));
+ int (*set_pgcookie) __P((DB_MPOOLFILE *, DBT *));
+ int (*set_priority) __P((DB_MPOOLFILE *, DB_CACHE_PRIORITY));
+ int (*sync) __P((DB_MPOOLFILE *));
+ /* DB_MPOOLFILE PUBLIC HANDLE LIST END */
+
+ /*
+ * MP_FILEID_SET, MP_OPEN_CALLED and MP_READONLY do not need to be
+ * thread protected because they are initialized before the file is
+ * linked onto the per-process lists, and never modified.
+ *
+ * MP_FLUSH is thread protected because it is potentially read/set by
+ * multiple threads of control.
+ */
+#define MP_FILEID_SET 0x001 /* Application supplied a file ID. */
+#define MP_FLUSH 0x002 /* Was opened to flush a buffer. */
+#define MP_MULTIVERSION 0x004 /* Opened for multiversion access. */
+#define MP_OPEN_CALLED 0x008 /* File opened. */
+#define MP_READONLY 0x010 /* File is readonly. */
+ u_int32_t flags;
+};
+
+/* Mpool statistics structure. */
+struct __db_mpool_stat {
+ u_int32_t st_gbytes; /* Total cache size: GB. */
+ u_int32_t st_bytes; /* Total cache size: B. */
+ u_int32_t st_ncache; /* Number of cache regions. */
+ u_int32_t st_max_ncache; /* Maximum number of regions. */
+ size_t st_mmapsize; /* Maximum file size for mmap. */
+ int st_maxopenfd; /* Maximum number of open fd's. */
+ int st_maxwrite; /* Maximum buffers to write. */
+ db_timeout_t st_maxwrite_sleep; /* Sleep after writing max buffers. */
+ u_int32_t st_pages; /* Total number of pages. */
+#ifndef __TEST_DB_NO_STATISTICS
+ u_int32_t st_map; /* Pages from mapped files. */
+ u_int32_t st_cache_hit; /* Pages found in the cache. */
+ u_int32_t st_cache_miss; /* Pages not found in the cache. */
+ u_int32_t st_page_create; /* Pages created in the cache. */
+ u_int32_t st_page_in; /* Pages read in. */
+ u_int32_t st_page_out; /* Pages written out. */
+ u_int32_t st_ro_evict; /* Clean pages forced from the cache. */
+ u_int32_t st_rw_evict; /* Dirty pages forced from the cache. */
+ u_int32_t st_page_trickle; /* Pages written by memp_trickle. */
+ u_int32_t st_page_clean; /* Clean pages. */
+ u_int32_t st_page_dirty; /* Dirty pages. */
+ u_int32_t st_hash_buckets; /* Number of hash buckets. */
+ u_int32_t st_hash_searches; /* Total hash chain searches. */
+ u_int32_t st_hash_longest; /* Longest hash chain searched. */
+ u_int32_t st_hash_examined; /* Total hash entries searched. */
+ u_int32_t st_hash_nowait; /* Hash lock granted with nowait. */
+ u_int32_t st_hash_wait; /* Hash lock granted after wait. */
+ u_int32_t st_hash_max_nowait; /* Max hash lock granted with nowait. */
+ u_int32_t st_hash_max_wait; /* Max hash lock granted after wait. */
+ u_int32_t st_region_nowait; /* Region lock granted with nowait. */
+ u_int32_t st_region_wait; /* Region lock granted after wait. */
+ u_int32_t st_mvcc_frozen; /* Buffers frozen. */
+ u_int32_t st_mvcc_thawed; /* Buffers thawed. */
+ u_int32_t st_mvcc_freed; /* Frozen buffers freed. */
+ u_int32_t st_alloc; /* Number of page allocations. */
+ u_int32_t st_alloc_buckets; /* Buckets checked during allocation. */
+ u_int32_t st_alloc_max_buckets; /* Max checked during allocation. */
+ u_int32_t st_alloc_pages; /* Pages checked during allocation. */
+ u_int32_t st_alloc_max_pages; /* Max checked during allocation. */
+ u_int32_t st_io_wait; /* Thread waited on buffer I/O. */
+ roff_t st_regsize; /* Region size. */
+#endif
+};
+
+/* Mpool file statistics structure. */
+struct __db_mpool_fstat {
+ char *file_name; /* File name. */
+ u_int32_t st_pagesize; /* Page size. */
+#ifndef __TEST_DB_NO_STATISTICS
+ u_int32_t st_map; /* Pages from mapped files. */
+ u_int32_t st_cache_hit; /* Pages found in the cache. */
+ u_int32_t st_cache_miss; /* Pages not found in the cache. */
+ u_int32_t st_page_create; /* Pages created in the cache. */
+ u_int32_t st_page_in; /* Pages read in. */
+ u_int32_t st_page_out; /* Pages written out. */
+#endif
+};
+
+/*******************************************************
+ * Transactions and recovery.
+ *******************************************************/
+#define DB_TXNVERSION 1
+
+typedef enum {
+ DB_TXN_ABORT=0, /* Public. */
+ DB_TXN_APPLY=1, /* Public. */
+ DB_TXN_BACKWARD_ALLOC=2, /* Internal. */
+ DB_TXN_BACKWARD_ROLL=3, /* Public. */
+ DB_TXN_FORWARD_ROLL=4, /* Public. */
+ DB_TXN_OPENFILES=5, /* Internal. */
+ DB_TXN_POPENFILES=6, /* Internal. */
+ DB_TXN_PRINT=7 /* Public. */
+} db_recops;
+
+/*
+ * BACKWARD_ALLOC is used during the forward pass to pick up any aborted
+ * allocations for files that were created during the forward pass.
+ * The main difference between _ALLOC and _ROLL is that the entry for
+ * the file not exist during the rollforward pass.
+ */
+#define DB_UNDO(op) ((op) == DB_TXN_ABORT || \
+ (op) == DB_TXN_BACKWARD_ROLL || (op) == DB_TXN_BACKWARD_ALLOC)
+#define DB_REDO(op) ((op) == DB_TXN_FORWARD_ROLL || (op) == DB_TXN_APPLY)
+
+struct __db_txn {
+ DB_TXNMGR *mgrp; /* Pointer to transaction manager. */
+ DB_TXN *parent; /* Pointer to transaction's parent. */
+
+ u_int32_t txnid; /* Unique transaction id. */
+ char *name; /* Transaction name. */
+ DB_LOCKER *locker; /* Locker for this txn. */
+
+ db_threadid_t tid; /* Thread id for use in MT XA. */
+ void *td; /* Detail structure within region. */
+ db_timeout_t lock_timeout; /* Timeout for locks for this txn. */
+ db_timeout_t expire; /* Time transaction expires. */
+ void *txn_list; /* Undo information for parent. */
+
+ /*
+ * !!!
+ * Explicit representations of structures from queue.h.
+ * TAILQ_ENTRY(__db_txn) links;
+ * TAILQ_ENTRY(__db_txn) xalinks;
+ */
+ struct {
+ struct __db_txn *tqe_next;
+ struct __db_txn **tqe_prev;
+ } links; /* Links transactions off manager. */
+ struct {
+ struct __db_txn *tqe_next;
+ struct __db_txn **tqe_prev;
+ } xalinks; /* Links active XA transactions. */
+
+ /*
+ * !!!
+ * Explicit representations of structures from queue.h.
+ * TAILQ_HEAD(__kids, __db_txn) kids;
+ */
+ struct __kids {
+ struct __db_txn *tqh_first;
+ struct __db_txn **tqh_last;
+ } kids;
+
+ /*
+ * !!!
+ * Explicit representations of structures from queue.h.
+ * TAILQ_HEAD(__events, __txn_event) events;
+ */
+ struct {
+ struct __txn_event *tqh_first;
+ struct __txn_event **tqh_last;
+ } events; /* Links deferred events. */
+
+ /*
+ * !!!
+ * Explicit representations of structures from queue.h.
+ * STAILQ_HEAD(__logrec, __txn_logrec) logs;
+ */
+ struct {
+ struct __txn_logrec *stqh_first;
+ struct __txn_logrec **stqh_last;
+ } logs; /* Links in memory log records. */
+
+ /*
+ * !!!
+ * Explicit representations of structures from queue.h.
+ * TAILQ_ENTRY(__db_txn) klinks;
+ */
+ struct {
+ struct __db_txn *tqe_next;
+ struct __db_txn **tqe_prev;
+ } klinks;
+
+ void *api_internal; /* C++ API private. */
+ void *xml_internal; /* XML API private. */
+
+ u_int32_t cursors; /* Number of cursors open for txn */
+
+ /* DB_TXN PUBLIC HANDLE LIST BEGIN */
+ int (*abort) __P((DB_TXN *));
+ int (*commit) __P((DB_TXN *, u_int32_t));
+ int (*discard) __P((DB_TXN *, u_int32_t));
+ int (*get_name) __P((DB_TXN *, const char **));
+ u_int32_t (*id) __P((DB_TXN *));
+ int (*prepare) __P((DB_TXN *, u_int8_t *));
+ int (*set_name) __P((DB_TXN *, const char *));
+ int (*set_timeout) __P((DB_TXN *, db_timeout_t, u_int32_t));
+ /* DB_TXN PUBLIC HANDLE LIST END */
+
+ /* DB_TXN PRIVATE HANDLE LIST BEGIN */
+ void (*set_txn_lsnp) __P((DB_TXN *txn, DB_LSN **, DB_LSN **));
+ /* DB_TXN PRIVATE HANDLE LIST END */
+
+#define TXN_CHILDCOMMIT 0x0001 /* Txn has committed. */
+#define TXN_CDSGROUP 0x0002 /* CDS group handle. */
+#define TXN_COMPENSATE 0x0004 /* Compensating transaction. */
+#define TXN_DEADLOCK 0x0008 /* Txn has deadlocked. */
+#define TXN_LOCKTIMEOUT 0x0010 /* Txn has a lock timeout. */
+#define TXN_MALLOC 0x0020 /* Structure allocated by TXN system. */
+#define TXN_NOSYNC 0x0040 /* Do not sync on prepare and commit. */
+#define TXN_NOWAIT 0x0080 /* Do not wait on locks. */
+#define TXN_PRIVATE 0x0100 /* Txn owned by cursor.. */
+#define TXN_READ_COMMITTED 0x0200 /* Txn has degree 2 isolation. */
+#define TXN_READ_UNCOMMITTED 0x0400 /* Txn has degree 1 isolation. */
+#define TXN_RESTORED 0x0800 /* Txn has been restored. */
+#define TXN_SNAPSHOT 0x1000 /* Snapshot Isolation. */
+#define TXN_SYNC 0x2000 /* Write and sync on prepare/commit. */
+#define TXN_WRITE_NOSYNC 0x4000 /* Write only on prepare/commit. */
+ u_int32_t flags;
+};
+
+#define TXN_SYNC_FLAGS (TXN_SYNC | TXN_NOSYNC | TXN_WRITE_NOSYNC)
+
+/*
+ * Structure used for two phase commit interface. Berkeley DB support for two
+ * phase commit is compatible with the X/Open XA interface.
+ *
+ * The XA #define XIDDATASIZE defines the size of a global transaction ID. We
+ * have our own version here (for name space reasons) which must have the same
+ * value.
+ */
+#define DB_XIDDATASIZE 128
+struct __db_preplist {
+ DB_TXN *txn;
+ u_int8_t gid[DB_XIDDATASIZE];
+};
+
+/* Transaction statistics structure. */
+struct __db_txn_active {
+ u_int32_t txnid; /* Transaction ID */
+ u_int32_t parentid; /* Transaction ID of parent */
+ pid_t pid; /* Process owning txn ID */
+ db_threadid_t tid; /* Thread owning txn ID */
+
+ DB_LSN lsn; /* LSN when transaction began */
+
+ DB_LSN read_lsn; /* Read LSN for MVCC */
+ u_int32_t mvcc_ref; /* MVCC reference count */
+
+#define TXN_ABORTED 1
+#define TXN_COMMITTED 2
+#define TXN_PREPARED 3
+#define TXN_RUNNING 4
+ u_int32_t status; /* Status of the transaction */
+
+#define TXN_XA_ABORTED 1
+#define TXN_XA_DEADLOCKED 2
+#define TXN_XA_ENDED 3
+#define TXN_XA_PREPARED 4
+#define TXN_XA_STARTED 5
+#define TXN_XA_SUSPENDED 6
+ u_int32_t xa_status; /* XA status */
+
+ u_int8_t xid[DB_XIDDATASIZE]; /* Global transaction ID */
+ char name[51]; /* 50 bytes of name, nul termination */
+};
+
+struct __db_txn_stat {
+ u_int32_t st_nrestores; /* number of restored transactions
+ after recovery. */
+#ifndef __TEST_DB_NO_STATISTICS
+ DB_LSN st_last_ckp; /* lsn of the last checkpoint */
+ time_t st_time_ckp; /* time of last checkpoint */
+ u_int32_t st_last_txnid; /* last transaction id given out */
+ u_int32_t st_maxtxns; /* maximum txns possible */
+ u_int32_t st_naborts; /* number of aborted transactions */
+ u_int32_t st_nbegins; /* number of begun transactions */
+ u_int32_t st_ncommits; /* number of committed transactions */
+ u_int32_t st_nactive; /* number of active transactions */
+ u_int32_t st_nsnapshot; /* number of snapshot transactions */
+ u_int32_t st_maxnactive; /* maximum active transactions */
+ u_int32_t st_maxnsnapshot; /* maximum snapshot transactions */
+ DB_TXN_ACTIVE *st_txnarray; /* array of active transactions */
+ u_int32_t st_region_wait; /* Region lock granted after wait. */
+ u_int32_t st_region_nowait; /* Region lock granted without wait. */
+ roff_t st_regsize; /* Region size. */
+#endif
+};
+
+/*******************************************************
+ * Replication.
+ *******************************************************/
+/* Special, out-of-band environment IDs. */
+#define DB_EID_BROADCAST -1
+#define DB_EID_INVALID -2
+
+/* rep_config flag values. */
+#define DB_REP_CONF_BULK 0x0001 /* Bulk transfer. */
+#define DB_REP_CONF_DELAYCLIENT 0x0002 /* Delay client synchronization. */
+#define DB_REP_CONF_NOAUTOINIT 0x0004 /* No automatic client init. */
+#define DB_REP_CONF_NOWAIT 0x0008 /* Don't wait, return error. */
+
+/*
+ * Operation code values for rep_start and/or repmgr_start. Just one of the
+ * following values should be passed in the flags parameter. (If we ever need
+ * additional, independent bit flags for these methods, we can start allocating
+ * them from the high-order byte of the flags word, as we currently do elsewhere
+ * for DB_AFTER through DB_WRITELOCK and DB_AUTO_COMMIT, etc.)
+ */
+#define DB_REP_CLIENT 1
+#define DB_REP_ELECTION 2
+#define DB_REP_MASTER 3
+
+#define DB_REPFLAGS_MASK 0x000000ff /* Mask for rep modes. */
+
+#define DB_REP_DEFAULT_PRIORITY 100
+
+/* Acknowledgement policies. */
+#define DB_REPMGR_ACKS_ALL 1
+#define DB_REPMGR_ACKS_ALL_PEERS 2
+#define DB_REPMGR_ACKS_NONE 3
+#define DB_REPMGR_ACKS_ONE 4
+#define DB_REPMGR_ACKS_ONE_PEER 5
+#define DB_REPMGR_ACKS_QUORUM 6
+
+/* Replication timeout configuration values. */
+#define DB_REP_ACK_TIMEOUT 1 /* RepMgr acknowledgements. */
+#define DB_REP_CHECKPOINT_DELAY 2 /* RepMgr acknowledgements. */
+#define DB_REP_CONNECTION_RETRY 3 /* RepMgr connections. */
+#define DB_REP_ELECTION_RETRY 4 /* RepMgr elect retries. */
+#define DB_REP_ELECTION_TIMEOUT 5 /* Rep normal elections. */
+#define DB_REP_FULL_ELECTION_TIMEOUT 6 /* Rep full elections. */
+#define DB_REP_LEASE_TIMEOUT 7 /* Master leases. */
+
+/* Event notification types. */
+#define DB_EVENT_NO_SUCH_EVENT 0 /* out-of-band sentinel value */
+#define DB_EVENT_PANIC 1
+#define DB_EVENT_REP_CLIENT 2
+#define DB_EVENT_REP_ELECTED 3
+#define DB_EVENT_REP_MASTER 4
+#define DB_EVENT_REP_NEWMASTER 5
+#define DB_EVENT_REP_PERM_FAILED 6
+#define DB_EVENT_REP_STARTUPDONE 7
+#define DB_EVENT_WRITE_FAILED 8
+
+/* Flag value for repmgr_add_remote_site. */
+#define DB_REPMGR_PEER 0x01
+
+/* Replication Manager site status. */
+struct __db_repmgr_site {
+ int eid;
+ char *host;
+ u_int port;
+
+#define DB_REPMGR_CONNECTED 0x01
+#define DB_REPMGR_DISCONNECTED 0x02
+ u_int32_t status;
+};
+
+/* Replication statistics. */
+struct __db_rep_stat {
+ /* !!!
+ * Many replication statistics fields cannot be protected by a mutex
+ * without an unacceptable performance penalty, since most message
+ * processing is done without the need to hold a region-wide lock.
+ * Fields whose comments end with a '+' may be updated without holding
+ * the replication or log mutexes (as appropriate), and thus may be
+ * off somewhat (or, on unreasonable architectures under unlucky
+ * circumstances, garbaged).
+ */
+ u_int32_t st_log_queued; /* Log records currently queued.+ */
+ u_int32_t st_startup_complete; /* Site completed client sync-up. */
+#ifndef __TEST_DB_NO_STATISTICS
+ u_int32_t st_status; /* Current replication status. */
+ DB_LSN st_next_lsn; /* Next LSN to use or expect. */
+ DB_LSN st_waiting_lsn; /* LSN we're awaiting, if any. */
+ db_pgno_t st_next_pg; /* Next pg we expect. */
+ db_pgno_t st_waiting_pg; /* pg we're awaiting, if any. */
+
+ u_int32_t st_dupmasters; /* # of times a duplicate master
+ condition was detected.+ */
+ int st_env_id; /* Current environment ID. */
+ int st_env_priority; /* Current environment priority. */
+ u_int32_t st_bulk_fills; /* Bulk buffer fills. */
+ u_int32_t st_bulk_overflows; /* Bulk buffer overflows. */
+ u_int32_t st_bulk_records; /* Bulk records stored. */
+ u_int32_t st_bulk_transfers; /* Transfers of bulk buffers. */
+ u_int32_t st_client_rerequests; /* Number of forced rerequests. */
+ u_int32_t st_client_svc_req; /* Number of client service requests
+ received by this client. */
+ u_int32_t st_client_svc_miss; /* Number of client service requests
+ missing on this client. */
+ u_int32_t st_gen; /* Current generation number. */
+ u_int32_t st_egen; /* Current election gen number. */
+ u_int32_t st_log_duplicated; /* Log records received multiply.+ */
+ u_int32_t st_log_queued_max; /* Max. log records queued at once.+ */
+ u_int32_t st_log_queued_total; /* Total # of log recs. ever queued.+ */
+ u_int32_t st_log_records; /* Log records received and put.+ */
+ u_int32_t st_log_requested; /* Log recs. missed and requested.+ */
+ int st_master; /* Env. ID of the current master. */
+ u_int32_t st_master_changes; /* # of times we've switched masters. */
+ u_int32_t st_msgs_badgen; /* Messages with a bad generation #.+ */
+ u_int32_t st_msgs_processed; /* Messages received and processed.+ */
+ u_int32_t st_msgs_recover; /* Messages ignored because this site
+ was a client in recovery.+ */
+ u_int32_t st_msgs_send_failures;/* # of failed message sends.+ */
+ u_int32_t st_msgs_sent; /* # of successful message sends.+ */
+ u_int32_t st_newsites; /* # of NEWSITE msgs. received.+ */
+ int st_nsites; /* Current number of sites we will
+ assume during elections. */
+ u_int32_t st_nthrottles; /* # of times we were throttled. */
+ u_int32_t st_outdated; /* # of times we detected and returned
+ an OUTDATED condition.+ */
+ u_int32_t st_pg_duplicated; /* Pages received multiply.+ */
+ u_int32_t st_pg_records; /* Pages received and stored.+ */
+ u_int32_t st_pg_requested; /* Pages missed and requested.+ */
+ u_int32_t st_txns_applied; /* # of transactions applied.+ */
+ u_int32_t st_startsync_delayed; /* # of STARTSYNC msgs delayed.+ */
+
+ /* Elections generally. */
+ u_int32_t st_elections; /* # of elections held.+ */
+ u_int32_t st_elections_won; /* # of elections won by this site.+ */
+
+ /* Statistics about an in-progress election. */
+ int st_election_cur_winner; /* Current front-runner. */
+ u_int32_t st_election_gen; /* Election generation number. */
+ DB_LSN st_election_lsn; /* Max. LSN of current winner. */
+ int st_election_nsites; /* # of "registered voters". */
+ int st_election_nvotes; /* # of "registered voters" needed. */
+ int st_election_priority; /* Current election priority. */
+ int st_election_status; /* Current election status. */
+ u_int32_t st_election_tiebreaker;/* Election tiebreaker value. */
+ int st_election_votes; /* Votes received in this round. */
+ u_int32_t st_election_sec; /* Last election time seconds. */
+ u_int32_t st_election_usec; /* Last election time useconds. */
+#endif
+};
+
+/* Replication Manager statistics. */
+struct __db_repmgr_stat {
+ u_int32_t st_perm_failed; /* # of insufficiently ack'ed msgs. */
+ u_int32_t st_msgs_queued; /* # msgs queued for network delay. */
+ u_int32_t st_msgs_dropped; /* # msgs discarded due to excessive
+ queue length. */
+ u_int32_t st_connection_drop; /* Existing connections dropped. */
+ u_int32_t st_connect_fail; /* Failed new connection attempts. */
+};
+
+/*******************************************************
+ * Sequences.
+ *******************************************************/
+/*
+ * The storage record for a sequence.
+ */
+struct __db_seq_record {
+ u_int32_t seq_version; /* Version size/number. */
+#define DB_SEQ_DEC 0x00000001 /* Decrement sequence. */
+#define DB_SEQ_INC 0x00000002 /* Increment sequence. */
+#define DB_SEQ_RANGE_SET 0x00000004 /* Range set (internal). */
+#define DB_SEQ_WRAP 0x00000008 /* Wrap sequence at min/max. */
+#define DB_SEQ_WRAPPED 0x00000010 /* Just wrapped (internal). */
+ u_int32_t flags; /* Flags. */
+ db_seq_t seq_value; /* Current value. */
+ db_seq_t seq_max; /* Max permitted. */
+ db_seq_t seq_min; /* Min permitted. */
+};
+
+/*
+ * Handle for a sequence object.
+ */
+struct __db_sequence {
+ DB *seq_dbp; /* DB handle for this sequence. */
+ db_mutex_t mtx_seq; /* Mutex if sequence is threaded. */
+ DB_SEQ_RECORD *seq_rp; /* Pointer to current data. */
+ DB_SEQ_RECORD seq_record; /* Data from DB_SEQUENCE. */
+ int32_t seq_cache_size; /* Number of values cached. */
+ db_seq_t seq_last_value; /* Last value cached. */
+ DBT seq_key; /* DBT pointing to sequence key. */
+ DBT seq_data; /* DBT pointing to seq_record. */
+
+ /* API-private structure: used by C++ and Java. */
+ void *api_internal;
+
+ /* DB_SEQUENCE PUBLIC HANDLE LIST BEGIN */
+ int (*close) __P((DB_SEQUENCE *, u_int32_t));
+ int (*get) __P((DB_SEQUENCE *,
+ DB_TXN *, int32_t, db_seq_t *, u_int32_t));
+ int (*get_cachesize) __P((DB_SEQUENCE *, int32_t *));
+ int (*get_db) __P((DB_SEQUENCE *, DB **));
+ int (*get_flags) __P((DB_SEQUENCE *, u_int32_t *));
+ int (*get_key) __P((DB_SEQUENCE *, DBT *));
+ int (*get_range) __P((DB_SEQUENCE *,
+ db_seq_t *, db_seq_t *));
+ int (*initial_value) __P((DB_SEQUENCE *, db_seq_t));
+ int (*open) __P((DB_SEQUENCE *,
+ DB_TXN *, DBT *, u_int32_t));
+ int (*remove) __P((DB_SEQUENCE *, DB_TXN *, u_int32_t));
+ int (*set_cachesize) __P((DB_SEQUENCE *, int32_t));
+ int (*set_flags) __P((DB_SEQUENCE *, u_int32_t));
+ int (*set_range) __P((DB_SEQUENCE *, db_seq_t, db_seq_t));
+ int (*stat) __P((DB_SEQUENCE *,
+ DB_SEQUENCE_STAT **, u_int32_t));
+ int (*stat_print) __P((DB_SEQUENCE *, u_int32_t));
+ /* DB_SEQUENCE PUBLIC HANDLE LIST END */
+};
+
+struct __db_seq_stat {
+ u_int32_t st_wait; /* Sequence lock granted w/o wait. */
+ u_int32_t st_nowait; /* Sequence lock granted after wait. */
+ db_seq_t st_current; /* Current value in db. */
+ db_seq_t st_value; /* Current cached value. */
+ db_seq_t st_last_value; /* Last cached value. */
+ db_seq_t st_min; /* Minimum value. */
+ db_seq_t st_max; /* Maximum value. */
+ int32_t st_cache_size; /* Cache size. */
+ u_int32_t st_flags; /* Flag value. */
+};
+
+/*******************************************************
+ * Access methods.
+ *******************************************************/
+typedef enum {
+ DB_BTREE=1,
+ DB_HASH=2,
+ DB_RECNO=3,
+ DB_QUEUE=4,
+ DB_UNKNOWN=5 /* Figure it out on open. */
+} DBTYPE;
+
+#define DB_RENAMEMAGIC 0x030800 /* File has been renamed. */
+
+#define DB_BTREEVERSION 9 /* Current btree version. */
+#define DB_BTREEOLDVER 8 /* Oldest btree version supported. */
+#define DB_BTREEMAGIC 0x053162
+
+#define DB_HASHVERSION 9 /* Current hash version. */
+#define DB_HASHOLDVER 7 /* Oldest hash version supported. */
+#define DB_HASHMAGIC 0x061561
+
+#define DB_QAMVERSION 4 /* Current queue version. */
+#define DB_QAMOLDVER 3 /* Oldest queue version supported. */
+#define DB_QAMMAGIC 0x042253
+
+#define DB_SEQUENCE_VERSION 2 /* Current sequence version. */
+#define DB_SEQUENCE_OLDVER 1 /* Oldest sequence version supported. */
+
+/*
+ * DB access method and cursor operation values. Each value is an operation
+ * code to which additional bit flags are added.
+ */
+#define DB_AFTER 1 /* Dbc.put */
+#define DB_APPEND 2 /* Db.put */
+#define DB_BEFORE 3 /* Dbc.put */
+#define DB_CONSUME 4 /* Db.get */
+#define DB_CONSUME_WAIT 5 /* Db.get */
+#define DB_CURRENT 6 /* Dbc.get, Dbc.put, DbLogc.get */
+#define DB_FIRST 7 /* Dbc.get, DbLogc->get */
+#define DB_GET_BOTH 8 /* Db.get, Dbc.get */
+#define DB_GET_BOTHC 9 /* Dbc.get (internal) */
+#define DB_GET_BOTH_RANGE 10 /* Db.get, Dbc.get */
+#define DB_GET_RECNO 11 /* Dbc.get */
+#define DB_JOIN_ITEM 12 /* Dbc.get; don't do primary lookup */
+#define DB_KEYFIRST 13 /* Dbc.put */
+#define DB_KEYLAST 14 /* Dbc.put */
+#define DB_LAST 15 /* Dbc.get, DbLogc->get */
+#define DB_NEXT 16 /* Dbc.get, DbLogc->get */
+#define DB_NEXT_DUP 17 /* Dbc.get */
+#define DB_NEXT_NODUP 18 /* Dbc.get */
+#define DB_NODUPDATA 19 /* Db.put, Dbc.put */
+#define DB_NOOVERWRITE 20 /* Db.put */
+#define DB_NOSYNC 21 /* Db.close */
+#define DB_POSITION 22 /* Dbc.dup */
+#define DB_PREV 23 /* Dbc.get, DbLogc->get */
+#define DB_PREV_DUP 24 /* Dbc.get */
+#define DB_PREV_NODUP 25 /* Dbc.get */
+#define DB_SET 26 /* Dbc.get, DbLogc->get */
+#define DB_SET_RANGE 27 /* Dbc.get */
+#define DB_SET_RECNO 28 /* Db.get, Dbc.get */
+#define DB_UPDATE_SECONDARY 29 /* Dbc.get, Dbc.del (internal) */
+#define DB_WRITECURSOR 30 /* Db.cursor */
+#define DB_WRITELOCK 31 /* Db.cursor (internal) */
+
+/* This has to change when the max opcode hits 255. */
+#define DB_OPFLAGS_MASK 0x000000ff /* Mask for operations flags. */
+
+/*
+ * Masks for flags that can be OR'd into DB access method and cursor
+ * operation values. Three top bits have already been taken:
+ *
+ * DB_AUTO_COMMIT 0x02000000
+ * DB_READ_COMMITTED 0x04000000
+ * DB_READ_UNCOMMITTED 0x08000000
+ */
+#define DB_MULTIPLE 0x10000000 /* Return multiple data values. */
+#define DB_MULTIPLE_KEY 0x20000000 /* Return multiple data/key pairs. */
+#define DB_RMW 0x40000000 /* Acquire write lock immediately. */
+
+/*
+ * DB (user visible) error return codes.
+ *
+ * !!!
+ * We don't want our error returns to conflict with other packages where
+ * possible, so pick a base error value that's hopefully not common. We
+ * document that we own the error name space from -30,800 to -30,999.
+ */
+/* DB (public) error return codes. */
+#define DB_BUFFER_SMALL (-30999)/* User memory too small for return. */
+#define DB_DONOTINDEX (-30998)/* "Null" return from 2ndary callbk. */
+#define DB_KEYEMPTY (-30997)/* Key/data deleted or never created. */
+#define DB_KEYEXIST (-30996)/* The key/data pair already exists. */
+#define DB_LOCK_DEADLOCK (-30995)/* Deadlock. */
+#define DB_LOCK_NOTGRANTED (-30994)/* Lock unavailable. */
+#define DB_LOG_BUFFER_FULL (-30993)/* In-memory log buffer full. */
+#define DB_NOSERVER (-30992)/* Server panic return. */
+#define DB_NOSERVER_HOME (-30991)/* Bad home sent to server. */
+#define DB_NOSERVER_ID (-30990)/* Bad ID sent to server. */
+#define DB_NOTFOUND (-30989)/* Key/data pair not found (EOF). */
+#define DB_OLD_VERSION (-30988)/* Out-of-date version. */
+#define DB_PAGE_NOTFOUND (-30987)/* Requested page not found. */
+#define DB_REP_DUPMASTER (-30986)/* There are two masters. */
+#define DB_REP_HANDLE_DEAD (-30985)/* Rolled back a commit. */
+#define DB_REP_HOLDELECTION (-30984)/* Time to hold an election. */
+#define DB_REP_IGNORE (-30983)/* This msg should be ignored.*/
+#define DB_REP_ISPERM (-30982)/* Cached not written perm written.*/
+#define DB_REP_JOIN_FAILURE (-30981)/* Unable to join replication group. */
+#define DB_REP_LEASE_EXPIRED (-30980)/* Master lease has expired. */
+#define DB_REP_LOCKOUT (-30979)/* API/Replication lockout now. */
+#define DB_REP_NEWSITE (-30978)/* New site entered system. */
+#define DB_REP_NOTPERM (-30977)/* Permanent log record not written. */
+#define DB_REP_UNAVAIL (-30976)/* Site cannot currently be reached. */
+#define DB_RUNRECOVERY (-30975)/* Panic return. */
+#define DB_SECONDARY_BAD (-30974)/* Secondary index corrupt. */
+#define DB_VERIFY_BAD (-30973)/* Verify failed; bad format. */
+#define DB_VERSION_MISMATCH (-30972)/* Environment version mismatch. */
+
+/* DB (private) error return codes. */
+#define DB_ALREADY_ABORTED (-30899)
+#define DB_DELETED (-30898)/* Recovery file marked deleted. */
+#define DB_EVENT_NOT_HANDLED (-30897)/* Forward event to application. */
+#define DB_NEEDSPLIT (-30896)/* Page needs to be split. */
+#define DB_REP_BULKOVF (-30895)/* Rep bulk buffer overflow. */
+#define DB_REP_EGENCHG (-30894)/* Egen changed while in election. */
+#define DB_REP_LOGREADY (-30893)/* Rep log ready for recovery. */
+#define DB_REP_NEWMASTER (-30892)/* We have learned of a new master. */
+#define DB_REP_PAGEDONE (-30891)/* This page was already done. */
+#define DB_SURPRISE_KID (-30890)/* Child commit where parent
+ didn't know it was a parent. */
+#define DB_SWAPBYTES (-30889)/* Database needs byte swapping. */
+#define DB_TIMEOUT (-30888)/* Timed out waiting for election. */
+#define DB_TXN_CKP (-30887)/* Encountered ckp record in log. */
+#define DB_VERIFY_FATAL (-30886)/* DB->verify cannot proceed. */
+
+/* Database handle. */
+struct __db {
+ /*******************************************************
+ * Public: owned by the application.
+ *******************************************************/
+ u_int32_t pgsize; /* Database logical page size. */
+ DB_CACHE_PRIORITY priority; /* Database priority in cache. */
+
+ /* Callbacks. */
+ int (*db_append_recno) __P((DB *, DBT *, db_recno_t));
+ void (*db_feedback) __P((DB *, int, int));
+ int (*dup_compare) __P((DB *, const DBT *, const DBT *));
+
+ void *app_private; /* Application-private handle. */
+
+ /*******************************************************
+ * Private: owned by DB.
+ *******************************************************/
+ DB_ENV *dbenv; /* Backing environment. */
+
+ DBTYPE type; /* DB access method type. */
+
+ DB_MPOOLFILE *mpf; /* Backing buffer pool. */
+
+ db_mutex_t mutex; /* Synchronization for free threading */
+
+ char *fname, *dname; /* File/database passed to DB->open. */
+ u_int32_t open_flags; /* Flags passed to DB->open. */
+
+ u_int8_t fileid[DB_FILE_ID_LEN];/* File's unique ID for locking. */
+
+ u_int32_t adj_fileid; /* File's unique ID for curs. adj. */
+
+#define DB_LOGFILEID_INVALID -1
+ FNAME *log_filename; /* File's naming info for logging. */
+
+ db_pgno_t meta_pgno; /* Meta page number */
+ DB_LOCKER *locker; /* Locker for handle locking. */
+ DB_LOCKER *cur_locker; /* Current handle lock holder. */
+ DB_TXN *cur_txn; /* Opening transaction. */
+ DB_LOCKER *associate_locker; /* Locker for DB->associate call. */
+ DB_LOCK handle_lock; /* Lock held on this handle. */
+
+ u_int cl_id; /* RPC: remote client id. */
+
+ time_t timestamp; /* Handle timestamp for replication. */
+ u_int32_t fid_gen; /* Rep generation number for fids. */
+
+ /*
+ * Returned data memory for DB->get() and friends.
+ */
+ DBT my_rskey; /* Secondary key. */
+ DBT my_rkey; /* [Primary] key. */
+ DBT my_rdata; /* Data. */
+
+ /*
+ * !!!
+ * Some applications use DB but implement their own locking outside of
+ * DB. If they're using fcntl(2) locking on the underlying database
+ * file, and we open and close a file descriptor for that file, we will
+ * discard their locks. The DB_FCNTL_LOCKING flag to DB->open is an
+ * undocumented interface to support this usage which leaves any file
+ * descriptors we open until DB->close. This will only work with the
+ * DB->open interface and simple caches, e.g., creating a transaction
+ * thread may open/close file descriptors this flag doesn't protect.
+ * Locking with fcntl(2) on a file that you don't own is a very, very
+ * unsafe thing to do. 'Nuff said.
+ */
+ DB_FH *saved_open_fhp; /* Saved file handle. */
+
+ /*
+ * Linked list of DBP's, linked from the DB_ENV, used to keep track
+ * of all open db handles for cursor adjustment.
+ *
+ * !!!
+ * Explicit representations of structures from queue.h.
+ * TAILQ_ENTRY(__db) dblistlinks;
+ */
+ struct {
+ struct __db *tqe_next;
+ struct __db **tqe_prev;
+ } dblistlinks;
+
+ /*
+ * Cursor queues.
+ *
+ * !!!
+ * Explicit representations of structures from queue.h.
+ * TAILQ_HEAD(__cq_fq, __dbc) free_queue;
+ * TAILQ_HEAD(__cq_aq, __dbc) active_queue;
+ * TAILQ_HEAD(__cq_jq, __dbc) join_queue;
+ */
+ struct __cq_fq {
+ struct __dbc *tqh_first;
+ struct __dbc **tqh_last;
+ } free_queue;
+ struct __cq_aq {
+ struct __dbc *tqh_first;
+ struct __dbc **tqh_last;
+ } active_queue;
+ struct __cq_jq {
+ struct __dbc *tqh_first;
+ struct __dbc **tqh_last;
+ } join_queue;
+
+ /*
+ * Secondary index support.
+ *
+ * Linked list of secondary indices -- set in the primary.
+ *
+ * !!!
+ * Explicit representations of structures from queue.h.
+ * LIST_HEAD(s_secondaries, __db);
+ */
+ struct {
+ struct __db *lh_first;
+ } s_secondaries;
+
+ /*
+ * List entries for secondaries, and reference count of how many
+ * threads are updating this secondary (see Dbc.put).
+ *
+ * !!!
+ * Note that these are synchronized by the primary's mutex, but
+ * filled in in the secondaries.
+ *
+ * !!!
+ * Explicit representations of structures from queue.h.
+ * LIST_ENTRY(__db) s_links;
+ */
+ struct {
+ struct __db *le_next;
+ struct __db **le_prev;
+ } s_links;
+ u_int32_t s_refcnt;
+
+ /* Secondary callback and free functions -- set in the secondary. */
+ int (*s_callback) __P((DB *, const DBT *, const DBT *, DBT *));
+
+ /* Reference to primary -- set in the secondary. */
+ DB *s_primary;
+
+#define DB_ASSOC_IMMUTABLE_KEY 0x00000001 /* Secondary key is immutable. */
+
+ /* Flags passed to associate -- set in the secondary. */
+ u_int32_t s_assoc_flags;
+
+ /* API-private structure: used by DB 1.85, C++, Java, Perl and Tcl */
+ void *api_internal;
+
+ /* Subsystem-private structure. */
+ void *bt_internal; /* Btree/Recno access method. */
+ void *h_internal; /* Hash access method. */
+ void *q_internal; /* Queue access method. */
+ void *xa_internal; /* XA. */
+
+ /* DB PUBLIC HANDLE LIST BEGIN */
+ int (*associate) __P((DB *, DB_TXN *, DB *,
+ int (*)(DB *, const DBT *, const DBT *, DBT *), u_int32_t));
+ int (*close) __P((DB *, u_int32_t));
+ int (*compact) __P((DB *,
+ DB_TXN *, DBT *, DBT *, DB_COMPACT *, u_int32_t, DBT *));
+ int (*cursor) __P((DB *, DB_TXN *, DBC **, u_int32_t));
+ int (*del) __P((DB *, DB_TXN *, DBT *, u_int32_t));
+ void (*err) __P((DB *, int, const char *, ...));
+ void (*errx) __P((DB *, const char *, ...));
+ int (*exists) __P((DB *, DB_TXN *, DBT *, u_int32_t));
+ int (*fd) __P((DB *, int *));
+ int (*get) __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t));
+ int (*get_bt_minkey) __P((DB *, u_int32_t *));
+ int (*get_byteswapped) __P((DB *, int *));
+ int (*get_cachesize) __P((DB *, u_int32_t *, u_int32_t *, int *));
+ int (*get_dbname) __P((DB *, const char **, const char **));
+ int (*get_encrypt_flags) __P((DB *, u_int32_t *));
+ DB_ENV *(*get_env) __P((DB *));
+ void (*get_errfile) __P((DB *, FILE **));
+ void (*get_errpfx) __P((DB *, const char **));
+ int (*get_flags) __P((DB *, u_int32_t *));
+ int (*get_h_ffactor) __P((DB *, u_int32_t *));
+ int (*get_h_nelem) __P((DB *, u_int32_t *));
+ int (*get_lorder) __P((DB *, int *));
+ DB_MPOOLFILE *(*get_mpf) __P((DB *));
+ void (*get_msgfile) __P((DB *, FILE **));
+ int (*get_multiple) __P((DB *));
+ int (*get_open_flags) __P((DB *, u_int32_t *));
+ int (*get_pagesize) __P((DB *, u_int32_t *));
+ int (*get_priority) __P((DB *, DB_CACHE_PRIORITY *));
+ int (*get_q_extentsize) __P((DB *, u_int32_t *));
+ int (*get_re_delim) __P((DB *, int *));
+ int (*get_re_len) __P((DB *, u_int32_t *));
+ int (*get_re_pad) __P((DB *, int *));
+ int (*get_re_source) __P((DB *, const char **));
+ int (*get_transactional) __P((DB *));
+ int (*get_type) __P((DB *, DBTYPE *));
+ int (*join) __P((DB *, DBC **, DBC **, u_int32_t));
+ int (*key_range)
+ __P((DB *, DB_TXN *, DBT *, DB_KEY_RANGE *, u_int32_t));
+ int (*open) __P((DB *,
+ DB_TXN *, const char *, const char *, DBTYPE, u_int32_t, int));
+ int (*pget) __P((DB *, DB_TXN *, DBT *, DBT *, DBT *, u_int32_t));
+ int (*put) __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t));
+ int (*remove) __P((DB *, const char *, const char *, u_int32_t));
+ int (*rename) __P((DB *,
+ const char *, const char *, const char *, u_int32_t));
+ int (*set_alloc) __P((DB *, void *(*)(size_t),
+ void *(*)(void *, size_t), void (*)(void *)));
+ int (*set_append_recno) __P((DB *, int (*)(DB *, DBT *, db_recno_t)));
+ int (*set_bt_compare)
+ __P((DB *, int (*)(DB *, const DBT *, const DBT *)));
+ int (*set_bt_minkey) __P((DB *, u_int32_t));
+ int (*set_bt_prefix)
+ __P((DB *, size_t (*)(DB *, const DBT *, const DBT *)));
+ int (*set_cachesize) __P((DB *, u_int32_t, u_int32_t, int));
+ int (*set_dup_compare)
+ __P((DB *, int (*)(DB *, const DBT *, const DBT *)));
+ int (*set_encrypt) __P((DB *, const char *, u_int32_t));
+ void (*set_errcall) __P((DB *,
+ void (*)(const DB_ENV *, const char *, const char *)));
+ void (*set_errfile) __P((DB *, FILE *));
+ void (*set_errpfx) __P((DB *, const char *));
+ int (*set_feedback) __P((DB *, void (*)(DB *, int, int)));
+ int (*set_flags) __P((DB *, u_int32_t));
+ int (*set_h_compare)
+ __P((DB *, int (*)(DB *, const DBT *, const DBT *)));
+ int (*set_h_ffactor) __P((DB *, u_int32_t));
+ int (*set_h_hash)
+ __P((DB *, u_int32_t (*)(DB *, const void *, u_int32_t)));
+ int (*set_h_nelem) __P((DB *, u_int32_t));
+ int (*set_lorder) __P((DB *, int));
+ void (*set_msgcall) __P((DB *, void (*)(const DB_ENV *, const char *)));
+ void (*set_msgfile) __P((DB *, FILE *));
+ int (*set_pagesize) __P((DB *, u_int32_t));
+ int (*set_paniccall) __P((DB *, void (*)(DB_ENV *, int)));
+ int (*set_priority) __P((DB *, DB_CACHE_PRIORITY));
+ int (*set_q_extentsize) __P((DB *, u_int32_t));
+ int (*set_re_delim) __P((DB *, int));
+ int (*set_re_len) __P((DB *, u_int32_t));
+ int (*set_re_pad) __P((DB *, int));
+ int (*set_re_source) __P((DB *, const char *));
+ int (*stat) __P((DB *, DB_TXN *, void *, u_int32_t));
+ int (*stat_print) __P((DB *, u_int32_t));
+ int (*sync) __P((DB *, u_int32_t));
+ int (*truncate) __P((DB *, DB_TXN *, u_int32_t *, u_int32_t));
+ int (*upgrade) __P((DB *, const char *, u_int32_t));
+ int (*verify)
+ __P((DB *, const char *, const char *, FILE *, u_int32_t));
+ /* DB PUBLIC HANDLE LIST END */
+
+ /* DB PRIVATE HANDLE LIST BEGIN */
+ int (*dump) __P((DB *, const char *,
+ int (*)(void *, const void *), void *, int, int));
+ int (*db_am_remove) __P((DB *, DB_TXN *, const char *, const char *));
+ int (*db_am_rename) __P((DB *, DB_TXN *,
+ const char *, const char *, const char *));
+ /* DB PRIVATE HANDLE LIST END */
+
+ /*
+ * Never called; these are a place to save function pointers
+ * so that we can undo an associate.
+ */
+ int (*stored_get) __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t));
+ int (*stored_close) __P((DB *, u_int32_t));
+
+#define DB_OK_BTREE 0x01
+#define DB_OK_HASH 0x02
+#define DB_OK_QUEUE 0x04
+#define DB_OK_RECNO 0x08
+ u_int32_t am_ok; /* Legal AM choices. */
+
+ /*
+ * This field really ought to be an AM_FLAG, but we have
+ * have run out of bits. If/when we decide to split up
+ * the flags, we can incorporate it.
+ */
+ int preserve_fid; /* Do not free fileid on close. */
+
+#define DB_AM_CHKSUM 0x00000001 /* Checksumming */
+#define DB_AM_COMPENSATE 0x00000002 /* Created by compensating txn */
+#define DB_AM_CREATED 0x00000004 /* Database was created upon open */
+#define DB_AM_CREATED_MSTR 0x00000008 /* Encompassing file was created */
+#define DB_AM_DBM_ERROR 0x00000010 /* Error in DBM/NDBM database */
+#define DB_AM_DELIMITER 0x00000020 /* Variable length delimiter set */
+#define DB_AM_DISCARD 0x00000040 /* Discard any cached pages */
+#define DB_AM_DUP 0x00000080 /* DB_DUP */
+#define DB_AM_DUPSORT 0x00000100 /* DB_DUPSORT */
+#define DB_AM_ENCRYPT 0x00000200 /* Encryption */
+#define DB_AM_FIXEDLEN 0x00000400 /* Fixed-length records */
+#define DB_AM_INMEM 0x00000800 /* In-memory; no sync on close */
+#define DB_AM_INORDER 0x00001000 /* DB_INORDER */
+#define DB_AM_IN_RENAME 0x00002000 /* File is being renamed */
+#define DB_AM_NOT_DURABLE 0x00004000 /* Do not log changes */
+#define DB_AM_OPEN_CALLED 0x00008000 /* DB->open called */
+#define DB_AM_PAD 0x00010000 /* Fixed-length record pad */
+#define DB_AM_PGDEF 0x00020000 /* Page size was defaulted */
+#define DB_AM_RDONLY 0x00040000 /* Database is readonly */
+#define DB_AM_READ_UNCOMMITTED 0x00080000 /* Support degree 1 isolation */
+#define DB_AM_RECNUM 0x00100000 /* DB_RECNUM */
+#define DB_AM_RECOVER 0x00200000 /* DB opened by recovery routine */
+#define DB_AM_RENUMBER 0x00400000 /* DB_RENUMBER */
+#define DB_AM_REVSPLITOFF 0x00800000 /* DB_REVSPLITOFF */
+#define DB_AM_SECONDARY 0x01000000 /* Database is a secondary index */
+#define DB_AM_SNAPSHOT 0x02000000 /* DB_SNAPSHOT */
+#define DB_AM_SUBDB 0x04000000 /* Subdatabases supported */
+#define DB_AM_SWAP 0x08000000 /* Pages need to be byte-swapped */
+#define DB_AM_TXN 0x10000000 /* Opened in a transaction */
+#define DB_AM_VERIFYING 0x20000000 /* DB handle is in the verifier */
+ u_int32_t orig_flags; /* Flags at open, for refresh */
+ u_int32_t flags;
+};
+
+/*
+ * Macros for bulk get. These are only intended for the C API.
+ * For C++, use DbMultiple*Iterator.
+ */
+#define DB_MULTIPLE_INIT(pointer, dbt) \
+ (pointer = (u_int8_t *)(dbt)->data + \
+ (dbt)->ulen - sizeof(u_int32_t))
+#define DB_MULTIPLE_NEXT(pointer, dbt, retdata, retdlen) \
+ do { \
+ if (*((u_int32_t *)(pointer)) == (u_int32_t)-1) { \
+ retdata = NULL; \
+ pointer = NULL; \
+ break; \
+ } \
+ retdata = (u_int8_t *) \
+ (dbt)->data + *(u_int32_t *)(pointer); \
+ (pointer) = (u_int32_t *)(pointer) - 1; \
+ retdlen = *(u_int32_t *)(pointer); \
+ (pointer) = (u_int32_t *)(pointer) - 1; \
+ if (retdlen == 0 && \
+ retdata == (u_int8_t *)(dbt)->data) \
+ retdata = NULL; \
+ } while (0)
+#define DB_MULTIPLE_KEY_NEXT(pointer, dbt, retkey, retklen, retdata, retdlen) \
+ do { \
+ if (*((u_int32_t *)(pointer)) == (u_int32_t)-1) { \
+ retdata = NULL; \
+ retkey = NULL; \
+ pointer = NULL; \
+ break; \
+ } \
+ retkey = (u_int8_t *) \
+ (dbt)->data + *(u_int32_t *)(pointer); \
+ (pointer) = (u_int32_t *)(pointer) - 1; \
+ retklen = *(u_int32_t *)(pointer); \
+ (pointer) = (u_int32_t *)(pointer) - 1; \
+ retdata = (u_int8_t *) \
+ (dbt)->data + *(u_int32_t *)(pointer); \
+ (pointer) = (u_int32_t *)(pointer) - 1; \
+ retdlen = *(u_int32_t *)(pointer); \
+ (pointer) = (u_int32_t *)(pointer) - 1; \
+ } while (0)
+
+#define DB_MULTIPLE_RECNO_NEXT(pointer, dbt, recno, retdata, retdlen) \
+ do { \
+ if (*((u_int32_t *)(pointer)) == (u_int32_t)0) { \
+ recno = 0; \
+ retdata = NULL; \
+ pointer = NULL; \
+ break; \
+ } \
+ recno = *(u_int32_t *)(pointer); \
+ (pointer) = (u_int32_t *)(pointer) - 1; \
+ retdata = (u_int8_t *) \
+ (dbt)->data + *(u_int32_t *)(pointer); \
+ (pointer) = (u_int32_t *)(pointer) - 1; \
+ retdlen = *(u_int32_t *)(pointer); \
+ (pointer) = (u_int32_t *)(pointer) - 1; \
+ } while (0)
+
+/*******************************************************
+ * Access method cursors.
+ *******************************************************/
+struct __dbc {
+ DB *dbp; /* Related DB access method. */
+ DB_TXN *txn; /* Associated transaction. */
+ DB_CACHE_PRIORITY priority; /* Priority in cache. */
+
+ /*
+ * Active/free cursor queues.
+ *
+ * !!!
+ * Explicit representations of structures from queue.h.
+ * TAILQ_ENTRY(__dbc) links;
+ */
+ struct {
+ DBC *tqe_next;
+ DBC **tqe_prev;
+ } links;
+
+ /*
+ * The DBT *'s below are used by the cursor routines to return
+ * data to the user when DBT flags indicate that DB should manage
+ * the returned memory. They point at a DBT containing the buffer
+ * and length that will be used, and "belonging" to the handle that
+ * should "own" this memory. This may be a "my_*" field of this
+ * cursor--the default--or it may be the corresponding field of
+ * another cursor, a DB handle, a join cursor, etc. In general, it
+ * will be whatever handle the user originally used for the current
+ * DB interface call.
+ */
+ DBT *rskey; /* Returned secondary key. */
+ DBT *rkey; /* Returned [primary] key. */
+ DBT *rdata; /* Returned data. */
+
+ DBT my_rskey; /* Space for returned secondary key. */
+ DBT my_rkey; /* Space for returned [primary] key. */
+ DBT my_rdata; /* Space for returned data. */
+
+ void *lref; /* Reference to default locker. */
+ DB_LOCKER *locker; /* Locker for this operation. */
+ DBT lock_dbt; /* DBT referencing lock. */
+ DB_LOCK_ILOCK lock; /* Object to be locked. */
+ DB_LOCK mylock; /* CDB lock held on this cursor. */
+
+ u_int cl_id; /* Remote client id. */
+
+ DBTYPE dbtype; /* Cursor type. */
+
+ DBC_INTERNAL *internal; /* Access method private. */
+
+ /* DBC PUBLIC HANDLE LIST BEGIN */
+ int (*close) __P((DBC *));
+ int (*count) __P((DBC *, db_recno_t *, u_int32_t));
+ int (*del) __P((DBC *, u_int32_t));
+ int (*dup) __P((DBC *, DBC **, u_int32_t));
+ int (*get) __P((DBC *, DBT *, DBT *, u_int32_t));
+ int (*get_priority) __P((DBC *, DB_CACHE_PRIORITY *));
+ int (*pget) __P((DBC *, DBT *, DBT *, DBT *, u_int32_t));
+ int (*put) __P((DBC *, DBT *, DBT *, u_int32_t));
+ int (*set_priority) __P((DBC *, DB_CACHE_PRIORITY));
+ /* DBC PUBLIC HANDLE LIST END */
+
+ /* The following are the method names deprecated in the 4.6 release. */
+ int (*c_close) __P((DBC *));
+ int (*c_count) __P((DBC *, db_recno_t *, u_int32_t));
+ int (*c_del) __P((DBC *, u_int32_t));
+ int (*c_dup) __P((DBC *, DBC **, u_int32_t));
+ int (*c_get) __P((DBC *, DBT *, DBT *, u_int32_t));
+ int (*c_pget) __P((DBC *, DBT *, DBT *, DBT *, u_int32_t));
+ int (*c_put) __P((DBC *, DBT *, DBT *, u_int32_t));
+
+ /* DBC PRIVATE HANDLE LIST BEGIN */
+ int (*am_bulk) __P((DBC *, DBT *, u_int32_t));
+ int (*am_close) __P((DBC *, db_pgno_t, int *));
+ int (*am_del) __P((DBC *));
+ int (*am_destroy) __P((DBC *));
+ int (*am_get) __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *));
+ int (*am_put) __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *));
+ int (*am_writelock) __P((DBC *));
+ /* DBC PRIVATE HANDLE LIST END */
+
+/*
+ * DBC_DONTLOCK and DBC_RECOVER are used during recovery and transaction
+ * abort. If a transaction is being aborted or recovered then DBC_RECOVER
+ * will be set and locking and logging will be disabled on this cursor. If
+ * we are performing a compensating transaction (e.g. free page processing)
+ * then DB_DONTLOCK will be set to inhibit locking, but logging will still
+ * be required. DB_DONTLOCK is also used if the whole database is locked.
+ */
+#define DBC_ACTIVE 0x0001 /* Cursor in use. */
+#define DBC_DONTLOCK 0x0002 /* Don't lock on this cursor. */
+#define DBC_MULTIPLE 0x0004 /* Return Multiple data. */
+#define DBC_MULTIPLE_KEY 0x0008 /* Return Multiple keys and data. */
+#define DBC_OPD 0x0010 /* Cursor references off-page dups. */
+#define DBC_OWN_LID 0x0020 /* Free lock id on destroy. */
+#define DBC_READ_COMMITTED 0x0040 /* Cursor has degree 2 isolation. */
+#define DBC_READ_UNCOMMITTED 0x0080 /* Cursor has degree 1 isolation. */
+#define DBC_RECOVER 0x0100 /* Recovery cursor; don't log/lock. */
+#define DBC_RMW 0x0200 /* Acquire write flag in read op. */
+#define DBC_TRANSIENT 0x0400 /* Cursor is transient. */
+#define DBC_WRITECURSOR 0x0800 /* Cursor may be used to write (CDB). */
+#define DBC_WRITER 0x1000 /* Cursor immediately writing (CDB). */
+ u_int32_t flags;
+};
+
+/* Key range statistics structure */
+struct __key_range {
+ double less;
+ double equal;
+ double greater;
+};
+
+/* Btree/Recno statistics structure. */
+struct __db_bt_stat {
+ u_int32_t bt_magic; /* Magic number. */
+ u_int32_t bt_version; /* Version number. */
+ u_int32_t bt_metaflags; /* Metadata flags. */
+ u_int32_t bt_nkeys; /* Number of unique keys. */
+ u_int32_t bt_ndata; /* Number of data items. */
+ u_int32_t bt_pagecnt; /* Page count. */
+ u_int32_t bt_pagesize; /* Page size. */
+ u_int32_t bt_minkey; /* Minkey value. */
+ u_int32_t bt_re_len; /* Fixed-length record length. */
+ u_int32_t bt_re_pad; /* Fixed-length record pad. */
+ u_int32_t bt_levels; /* Tree levels. */
+ u_int32_t bt_int_pg; /* Internal pages. */
+ u_int32_t bt_leaf_pg; /* Leaf pages. */
+ u_int32_t bt_dup_pg; /* Duplicate pages. */
+ u_int32_t bt_over_pg; /* Overflow pages. */
+ u_int32_t bt_empty_pg; /* Empty pages. */
+ u_int32_t bt_free; /* Pages on the free list. */
+ u_int32_t bt_int_pgfree; /* Bytes free in internal pages. */
+ u_int32_t bt_leaf_pgfree; /* Bytes free in leaf pages. */
+ u_int32_t bt_dup_pgfree; /* Bytes free in duplicate pages. */
+ u_int32_t bt_over_pgfree; /* Bytes free in overflow pages. */
+};
+
+struct __db_compact {
+ /* Input Parameters. */
+ u_int32_t compact_fillpercent; /* Desired fillfactor: 1-100 */
+ db_timeout_t compact_timeout; /* Lock timeout. */
+ u_int32_t compact_pages; /* Max pages to process. */
+ /* Output Stats. */
+ u_int32_t compact_pages_free; /* Number of pages freed. */
+ u_int32_t compact_pages_examine; /* Number of pages examine. */
+ u_int32_t compact_levels; /* Number of levels removed. */
+ u_int32_t compact_deadlock; /* Number of deadlocks. */
+ db_pgno_t compact_pages_truncated; /* Pages truncated to OS. */
+ /* Internal. */
+ db_pgno_t compact_truncate; /* Page number for truncation */
+};
+
+/* Hash statistics structure. */
+struct __db_h_stat {
+ u_int32_t hash_magic; /* Magic number. */
+ u_int32_t hash_version; /* Version number. */
+ u_int32_t hash_metaflags; /* Metadata flags. */
+ u_int32_t hash_nkeys; /* Number of unique keys. */
+ u_int32_t hash_ndata; /* Number of data items. */
+ u_int32_t hash_pagecnt; /* Page count. */
+ u_int32_t hash_pagesize; /* Page size. */
+ u_int32_t hash_ffactor; /* Fill factor specified at create. */
+ u_int32_t hash_buckets; /* Number of hash buckets. */
+ u_int32_t hash_free; /* Pages on the free list. */
+ u_int32_t hash_bfree; /* Bytes free on bucket pages. */
+ u_int32_t hash_bigpages; /* Number of big key/data pages. */
+ u_int32_t hash_big_bfree; /* Bytes free on big item pages. */
+ u_int32_t hash_overflows; /* Number of overflow pages. */
+ u_int32_t hash_ovfl_free; /* Bytes free on ovfl pages. */
+ u_int32_t hash_dup; /* Number of dup pages. */
+ u_int32_t hash_dup_free; /* Bytes free on duplicate pages. */
+};
+
+/* Queue statistics structure. */
+struct __db_qam_stat {
+ u_int32_t qs_magic; /* Magic number. */
+ u_int32_t qs_version; /* Version number. */
+ u_int32_t qs_metaflags; /* Metadata flags. */
+ u_int32_t qs_nkeys; /* Number of unique keys. */
+ u_int32_t qs_ndata; /* Number of data items. */
+ u_int32_t qs_pagesize; /* Page size. */
+ u_int32_t qs_extentsize; /* Pages per extent. */
+ u_int32_t qs_pages; /* Data pages. */
+ u_int32_t qs_re_len; /* Fixed-length record length. */
+ u_int32_t qs_re_pad; /* Fixed-length record pad. */
+ u_int32_t qs_pgfree; /* Bytes free in data pages. */
+ u_int32_t qs_first_recno; /* First not deleted record. */
+ u_int32_t qs_cur_recno; /* Next available record number. */
+};
+
+/*******************************************************
+ * Environment.
+ *******************************************************/
+#define DB_REGION_MAGIC 0x120897 /* Environment magic number. */
+
+/* Database Environment handle. */
+struct __db_env {
+ /*******************************************************
+ * Public: owned by the application.
+ *******************************************************/
+ /* Error message callback. */
+ void (*db_errcall) __P((const DB_ENV *, const char *, const char *));
+ FILE *db_errfile; /* Error message file stream. */
+ const char *db_errpfx; /* Error message prefix. */
+
+ FILE *db_msgfile; /* Statistics message file stream. */
+ /* Statistics message callback. */
+ void (*db_msgcall) __P((const DB_ENV *, const char *));
+
+ /* Other Callbacks. */
+ void (*db_feedback) __P((DB_ENV *, int, int));
+ void (*db_paniccall) __P((DB_ENV *, int));
+ void (*db_event_func) __P((DB_ENV *, u_int32_t, void *));
+
+ /* App-specified alloc functions. */
+ void *(*db_malloc) __P((size_t));
+ void *(*db_realloc) __P((void *, size_t));
+ void (*db_free) __P((void *));
+
+ /* Application callback to copy data to/from a custom data source. */
+#define DB_USERCOPY_GETDATA 0x0001
+#define DB_USERCOPY_SETDATA 0x0002
+ int (*dbt_usercopy)
+ __P((DBT *, u_int32_t, void *, u_int32_t, u_int32_t));
+
+ /*
+ * Currently, the verbose list is a bit field with room for 32
+ * entries. There's no reason that it needs to be limited, if
+ * there are ever more than 32 entries, convert to a bit array.
+ */
+#define DB_VERB_DEADLOCK 0x0001 /* Deadlock detection information. */
+#define DB_VERB_FILEOPS 0x0002 /* Major file operations. */
+#define DB_VERB_FILEOPS_ALL 0x0004 /* All file operations. */
+#define DB_VERB_RECOVERY 0x0008 /* Recovery information. */
+#define DB_VERB_REGISTER 0x0010 /* Dump waits-for table. */
+#define DB_VERB_REPLICATION 0x0020 /* Replication information. */
+#define DB_VERB_WAITSFOR 0x0040 /* Dump waits-for table. */
+ u_int32_t verbose; /* Verbose output. */
+
+ void *app_private; /* Application-private handle. */
+
+ int (*app_dispatch) /* User-specified recovery dispatch. */
+ __P((DB_ENV *, DBT *, DB_LSN *, db_recops));
+
+ /* Mutexes. */
+ u_int32_t mutex_align; /* Mutex alignment */
+ u_int32_t mutex_cnt; /* Number of mutexes to configure */
+ u_int32_t mutex_inc; /* Number of mutexes to add */
+ u_int32_t mutex_tas_spins;/* Test-and-set spin count */
+
+ struct {
+ int alloc_id; /* Allocation ID argument */
+ u_int32_t flags; /* Flags argument */
+ } *mutex_iq; /* Initial mutexes queue */
+ u_int mutex_iq_next; /* Count of initial mutexes */
+ u_int mutex_iq_max; /* Maximum initial mutexes */
+
+ /* Locking. */
+ u_int8_t *lk_conflicts; /* Two dimensional conflict matrix. */
+ int lk_modes; /* Number of lock modes in table. */
+ u_int32_t lk_max; /* Maximum number of locks. */
+ u_int32_t lk_max_lockers;/* Maximum number of lockers. */
+ u_int32_t lk_max_objects;/* Maximum number of locked objects. */
+ u_int32_t lk_detect; /* Deadlock detect on all conflicts. */
+ db_timeout_t lk_timeout; /* Lock timeout period. */
+
+ /* Logging. */
+ u_int32_t lg_bsize; /* Buffer size. */
+ u_int32_t lg_size; /* Log file size. */
+ u_int32_t lg_regionmax; /* Region size. */
+ int lg_filemode; /* Log file permission mode. */
+
+ /* Memory pool. */
+ u_int mp_ncache; /* Initial number of cache regions. */
+ u_int32_t mp_gbytes; /* Cache size: GB. */
+ u_int32_t mp_bytes; /* Cache size: bytes. */
+ u_int32_t mp_max_gbytes; /* Maximum cache size: GB. */
+ u_int32_t mp_max_bytes; /* Maximum cache size: bytes. */
+ size_t mp_mmapsize; /* Maximum file size for mmap. */
+ int mp_maxopenfd; /* Maximum open file descriptors. */
+ int mp_maxwrite; /* Maximum buffers to write. */
+ db_timeout_t mp_maxwrite_sleep; /* Sleep after writing max buffers. */
+
+ /* Transactions. */
+ u_int32_t tx_max; /* Maximum number of transactions. */
+ time_t tx_timestamp; /* Recover to specific timestamp. */
+ db_timeout_t tx_timeout; /* Timeout for transactions. */
+
+ /* Thread tracking. */
+ u_int32_t thr_nbucket; /* Number of hash buckets. */
+ u_int32_t thr_max; /* Max before garbage collection. */
+ void *thr_hashtab; /* Hash table of DB_THREAD_INFO. */
+
+ /*******************************************************
+ * Private: owned by DB.
+ *******************************************************/
+ db_mutex_t mtx_env; /* General DbEnv structure mutex. */
+
+ pid_t pid_cache; /* Cached process ID. */
+
+ /* User files, paths. */
+ char *db_home; /* Database home. */
+ char *db_log_dir; /* Database log file directory. */
+ char *db_tmp_dir; /* Database tmp file directory. */
+
+ char **db_data_dir; /* Database data file directories. */
+ int data_cnt; /* Database data file slots. */
+ int data_next; /* Next Database data file slot. */
+
+ int db_mode; /* Default open permissions. */
+ int dir_mode; /* Intermediate directory perms. */
+ void *env_lref; /* Locker in non-threaded handles. */
+ u_int32_t open_flags; /* Flags passed to DB_ENV->open. */
+
+ void *reginfo; /* REGINFO structure reference. */
+ DB_FH *lockfhp; /* fcntl(2) locking file handle. */
+
+ DB_FH *registry; /* DB_REGISTER file handle. */
+ u_int32_t registry_off; /*
+ * Offset of our slot. We can't use
+ * off_t because its size depends on
+ * build settings.
+ */
+
+ /* Return IDs. */
+ void (*thread_id) __P((DB_ENV *, pid_t *, db_threadid_t *));
+ /* Return if IDs alive. */
+ int (*is_alive)
+ __P((DB_ENV *, pid_t, db_threadid_t, u_int32_t));
+ /* Format IDs into a string. */
+ char *(*thread_id_string)
+ __P((DB_ENV *, pid_t, db_threadid_t, char *));
+
+ int (**recover_dtab) /* Dispatch table for recover funcs. */
+ __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+ size_t recover_dtab_size;
+ /* Slots in the dispatch table. */
+
+ void *cl_handle; /* RPC: remote client handle. */
+ u_int cl_id; /* RPC: remote client env id. */
+
+ int db_ref; /* DB reference count. */
+
+ long shm_key; /* shmget(2) key. */
+
+ /*
+ * List of open file handles for this DB_ENV. Must be protected
+ * for multi-threaded support.
+ *
+ * !!!
+ * Explicit representation of structure in queue.h.
+ * TAILQ_HEAD(__fdlist, __fh_t);
+ */
+ struct __fdlist {
+ struct __fh_t *tqh_first;
+ struct __fh_t **tqh_last;
+ } fdlist;
+
+ /*
+ * List of open DB handles for this DB_ENV, used for cursor
+ * adjustment. Must be protected for multi-threaded support.
+ *
+ * !!!
+ * Explicit representation of structure in queue.h.
+ * TAILQ_HEAD(__dblist, __db);
+ */
+ db_mutex_t mtx_dblist; /* Mutex. */
+ struct __dblist {
+ struct __db *tqh_first;
+ struct __db **tqh_last;
+ } dblist;
+
+ /*
+ * XA support.
+ *
+ * !!!
+ * Explicit representations of structures from queue.h.
+ * TAILQ_ENTRY(__db_env) links;
+ * TAILQ_HEAD(xa_txn, __db_txn);
+ */
+ struct {
+ struct __db_env *tqe_next;
+ struct __db_env **tqe_prev;
+ } links;
+ struct __xa_txn { /* XA Active Transactions. */
+ struct __db_txn *tqh_first;
+ struct __db_txn **tqh_last;
+ } xa_txn;
+ int xa_rmid; /* XA Resource Manager ID. */
+
+ char *passwd; /* Cryptography support. */
+ size_t passwd_len;
+ void *crypto_handle; /* Primary handle. */
+ db_mutex_t mtx_mt; /* Mersenne Twister mutex. */
+ int mti; /* Mersenne Twister index. */
+ u_long *mt; /* Mersenne Twister state vector. */
+
+ /* API-private structure. */
+ void *api1_internal; /* C++, Perl API private */
+ void *api2_internal; /* Java API private */
+
+ DB_LOCKTAB *lk_handle; /* Lock handle. */
+ DB_LOG *lg_handle; /* Log handle. */
+ DB_MPOOL *mp_handle; /* Mpool handle. */
+ DB_MUTEXMGR *mutex_handle; /* Mutex handle. */
+ DB_REP *rep_handle; /* Replication handle. */
+ DB_TXNMGR *tx_handle; /* Txn handle. */
+
+ /* DB_ENV PUBLIC HANDLE LIST BEGIN */
+ int (*cdsgroup_begin) __P((DB_ENV *, DB_TXN **));
+ int (*close) __P((DB_ENV *, u_int32_t));
+ int (*dbremove) __P((DB_ENV *,
+ DB_TXN *, const char *, const char *, u_int32_t));
+ int (*dbrename) __P((DB_ENV *,
+ DB_TXN *, const char *, const char *, const char *, u_int32_t));
+ void (*err) __P((const DB_ENV *, int, const char *, ...));
+ void (*errx) __P((const DB_ENV *, const char *, ...));
+ int (*failchk) __P((DB_ENV *, u_int32_t));
+ int (*fileid_reset) __P((DB_ENV *, const char *, u_int32_t));
+ int (*get_cachesize) __P((DB_ENV *, u_int32_t *, u_int32_t *, int *));
+ int (*get_cache_max) __P((DB_ENV *, u_int32_t *, u_int32_t *));
+ int (*get_data_dirs) __P((DB_ENV *, const char ***));
+ int (*get_encrypt_flags) __P((DB_ENV *, u_int32_t *));
+ void (*get_errfile) __P((DB_ENV *, FILE **));
+ void (*get_errpfx) __P((DB_ENV *, const char **));
+ int (*get_flags) __P((DB_ENV *, u_int32_t *));
+ int (*get_home) __P((DB_ENV *, const char **));
+ int (*get_lg_bsize) __P((DB_ENV *, u_int32_t *));
+ int (*get_lg_dir) __P((DB_ENV *, const char **));
+ int (*get_lg_filemode) __P((DB_ENV *, int *));
+ int (*get_lg_max) __P((DB_ENV *, u_int32_t *));
+ int (*get_lg_regionmax) __P((DB_ENV *, u_int32_t *));
+ int (*get_lk_conflicts) __P((DB_ENV *, const u_int8_t **, int *));
+ int (*get_lk_detect) __P((DB_ENV *, u_int32_t *));
+ int (*get_lk_max_lockers) __P((DB_ENV *, u_int32_t *));
+ int (*get_lk_max_locks) __P((DB_ENV *, u_int32_t *));
+ int (*get_lk_max_objects) __P((DB_ENV *, u_int32_t *));
+ int (*get_mp_max_openfd) __P((DB_ENV *, int *));
+ int (*get_mp_max_write) __P((DB_ENV *, int *, db_timeout_t *));
+ int (*get_mp_mmapsize) __P((DB_ENV *, size_t *));
+ void (*get_msgfile) __P((DB_ENV *, FILE **));
+ int (*get_open_flags) __P((DB_ENV *, u_int32_t *));
+ int (*get_shm_key) __P((DB_ENV *, long *));
+ int (*get_thread_count) __P((DB_ENV *, u_int32_t *));
+ int (*get_timeout) __P((DB_ENV *, db_timeout_t *, u_int32_t));
+ int (*get_tmp_dir) __P((DB_ENV *, const char **));
+ int (*get_tx_max) __P((DB_ENV *, u_int32_t *));
+ int (*get_tx_timestamp) __P((DB_ENV *, time_t *));
+ int (*get_verbose) __P((DB_ENV *, u_int32_t, int *));
+ int (*is_bigendian) __P((void));
+ int (*lock_detect) __P((DB_ENV *, u_int32_t, u_int32_t, int *));
+ int (*lock_get) __P((DB_ENV *,
+ u_int32_t, u_int32_t, const DBT *, db_lockmode_t, DB_LOCK *));
+ int (*lock_id) __P((DB_ENV *, u_int32_t *));
+ int (*lock_id_free) __P((DB_ENV *, u_int32_t));
+ int (*lock_put) __P((DB_ENV *, DB_LOCK *));
+ int (*lock_stat) __P((DB_ENV *, DB_LOCK_STAT **, u_int32_t));
+ int (*lock_stat_print) __P((DB_ENV *, u_int32_t));
+ int (*lock_vec) __P((DB_ENV *,
+ u_int32_t, u_int32_t, DB_LOCKREQ *, int, DB_LOCKREQ **));
+ int (*log_archive) __P((DB_ENV *, char **[], u_int32_t));
+ int (*log_cursor) __P((DB_ENV *, DB_LOGC **, u_int32_t));
+ int (*log_file) __P((DB_ENV *, const DB_LSN *, char *, size_t));
+ int (*log_flush) __P((DB_ENV *, const DB_LSN *));
+ int (*log_printf) __P((DB_ENV *, DB_TXN *, const char *, ...));
+ int (*log_put) __P((DB_ENV *, DB_LSN *, const DBT *, u_int32_t));
+ int (*log_stat) __P((DB_ENV *, DB_LOG_STAT **, u_int32_t));
+ int (*log_stat_print) __P((DB_ENV *, u_int32_t));
+ int (*lsn_reset) __P((DB_ENV *, const char *, u_int32_t));
+ int (*memp_fcreate) __P((DB_ENV *, DB_MPOOLFILE **, u_int32_t));
+ int (*memp_register) __P((DB_ENV *, int, int (*)(DB_ENV *,
+ db_pgno_t, void *, DBT *), int (*)(DB_ENV *,
+ db_pgno_t, void *, DBT *)));
+ int (*memp_stat) __P((DB_ENV *,
+ DB_MPOOL_STAT **, DB_MPOOL_FSTAT ***, u_int32_t));
+ int (*memp_stat_print) __P((DB_ENV *, u_int32_t));
+ int (*memp_sync) __P((DB_ENV *, DB_LSN *));
+ int (*memp_trickle) __P((DB_ENV *, int, int *));
+ int (*mutex_alloc) __P((DB_ENV *, u_int32_t, db_mutex_t *));
+ int (*mutex_free) __P((DB_ENV *, db_mutex_t));
+ int (*mutex_get_align) __P((DB_ENV *, u_int32_t *));
+ int (*mutex_get_increment) __P((DB_ENV *, u_int32_t *));
+ int (*mutex_get_max) __P((DB_ENV *, u_int32_t *));
+ int (*mutex_get_tas_spins) __P((DB_ENV *, u_int32_t *));
+ int (*mutex_lock) __P((DB_ENV *, db_mutex_t));
+ int (*mutex_set_align) __P((DB_ENV *, u_int32_t));
+ int (*mutex_set_increment) __P((DB_ENV *, u_int32_t));
+ int (*mutex_set_max) __P((DB_ENV *, u_int32_t));
+ int (*mutex_set_tas_spins) __P((DB_ENV *, u_int32_t));
+ int (*mutex_stat) __P((DB_ENV *, DB_MUTEX_STAT **, u_int32_t));
+ int (*mutex_stat_print) __P((DB_ENV *, u_int32_t));
+ int (*mutex_unlock) __P((DB_ENV *, db_mutex_t));
+ int (*open) __P((DB_ENV *, const char *, u_int32_t, int));
+ int (*remove) __P((DB_ENV *, const char *, u_int32_t));
+ int (*rep_elect) __P((DB_ENV *, int, int, u_int32_t));
+ int (*rep_flush) __P((DB_ENV *));
+ int (*rep_get_config) __P((DB_ENV *, u_int32_t, int *));
+ int (*rep_get_limit) __P((DB_ENV *, u_int32_t *, u_int32_t *));
+ int (*rep_get_nsites) __P((DB_ENV *, int *));
+ int (*rep_get_priority) __P((DB_ENV *, int *));
+ int (*rep_get_timeout) __P((DB_ENV *, int, u_int32_t *));
+ int (*rep_process_message)
+ __P((DB_ENV *, DBT *, DBT *, int, DB_LSN *));
+ int (*rep_set_config) __P((DB_ENV *, u_int32_t, int));
+ int (*rep_set_lease) __P((DB_ENV *, u_int32_t, u_int32_t));
+ int (*rep_set_limit) __P((DB_ENV *, u_int32_t, u_int32_t));
+ int (*rep_set_nsites) __P((DB_ENV *, int));
+ int (*rep_set_priority) __P((DB_ENV *, int));
+ int (*rep_set_timeout) __P((DB_ENV *, int, db_timeout_t));
+ int (*rep_set_transport) __P((DB_ENV *, int, int (*)(DB_ENV *,
+ const DBT *, const DBT *, const DB_LSN *, int, u_int32_t)));
+ int (*rep_start) __P((DB_ENV *, DBT *, u_int32_t));
+ int (*rep_stat) __P((DB_ENV *, DB_REP_STAT **, u_int32_t));
+ int (*rep_stat_print) __P((DB_ENV *, u_int32_t));
+ int (*rep_sync) __P((DB_ENV *, u_int32_t));
+ int (*repmgr_add_remote_site) __P((DB_ENV *, const char *, u_int,
+ int *, u_int32_t));
+ int (*repmgr_get_ack_policy) __P((DB_ENV *, int *));
+ int (*repmgr_set_ack_policy) __P((DB_ENV *, int));
+ int (*repmgr_set_local_site) __P((DB_ENV *, const char *, u_int,
+ u_int32_t));
+ int (*repmgr_site_list) __P((DB_ENV *, u_int *,
+ DB_REPMGR_SITE **));
+ int (*repmgr_start) __P((DB_ENV *, int, u_int32_t));
+ int (*repmgr_stat) __P((DB_ENV *, DB_REPMGR_STAT **, u_int32_t));
+ int (*repmgr_stat_print) __P((DB_ENV *, u_int32_t));
+ int (*set_alloc) __P((DB_ENV *, void *(*)(size_t),
+ void *(*)(void *, size_t), void (*)(void *)));
+ int (*set_app_dispatch)
+ __P((DB_ENV *, int (*)(DB_ENV *, DBT *, DB_LSN *, db_recops)));
+ int (*set_cachesize) __P((DB_ENV *, u_int32_t, u_int32_t, int));
+ int (*set_cache_max) __P((DB_ENV *, u_int32_t, u_int32_t));
+ int (*set_data_dir) __P((DB_ENV *, const char *));
+ int (*set_encrypt) __P((DB_ENV *, const char *, u_int32_t));
+ void (*set_errcall) __P((DB_ENV *,
+ void (*)(const DB_ENV *, const char *, const char *)));
+ void (*set_errfile) __P((DB_ENV *, FILE *));
+ void (*set_errpfx) __P((DB_ENV *, const char *));
+ int (*set_event_notify)
+ __P((DB_ENV *, void (*)(DB_ENV *, u_int32_t, void *)));
+ int (*set_feedback) __P((DB_ENV *, void (*)(DB_ENV *, int, int)));
+ int (*set_flags) __P((DB_ENV *, u_int32_t, int));
+ int (*set_intermediate_dir) __P((DB_ENV *, int, u_int32_t));
+ int (*set_isalive) __P((DB_ENV *,
+ int (*)(DB_ENV *, pid_t, db_threadid_t, u_int32_t)));
+ int (*set_lg_bsize) __P((DB_ENV *, u_int32_t));
+ int (*set_lg_dir) __P((DB_ENV *, const char *));
+ int (*set_lg_filemode) __P((DB_ENV *, int));
+ int (*set_lg_max) __P((DB_ENV *, u_int32_t));
+ int (*set_lg_regionmax) __P((DB_ENV *, u_int32_t));
+ int (*set_lk_conflicts) __P((DB_ENV *, u_int8_t *, int));
+ int (*set_lk_detect) __P((DB_ENV *, u_int32_t));
+ int (*set_lk_max_lockers) __P((DB_ENV *, u_int32_t));
+ int (*set_lk_max_locks) __P((DB_ENV *, u_int32_t));
+ int (*set_lk_max_objects) __P((DB_ENV *, u_int32_t));
+ int (*set_mp_max_openfd) __P((DB_ENV *, int));
+ int (*set_mp_max_write) __P((DB_ENV *, int, db_timeout_t));
+ int (*set_mp_mmapsize) __P((DB_ENV *, size_t));
+ void (*set_msgcall)
+ __P((DB_ENV *, void (*)(const DB_ENV *, const char *)));
+ void (*set_msgfile) __P((DB_ENV *, FILE *));
+ int (*set_paniccall) __P((DB_ENV *, void (*)(DB_ENV *, int)));
+ int (*set_rep_request) __P((DB_ENV *, u_int32_t, u_int32_t));
+ int (*set_rpc_server)
+ __P((DB_ENV *, void *, const char *, long, long, u_int32_t));
+ int (*set_shm_key) __P((DB_ENV *, long));
+ int (*set_thread_count) __P((DB_ENV *, u_int32_t));
+ int (*set_thread_id) __P((DB_ENV *,
+ void (*)(DB_ENV *, pid_t *, db_threadid_t *)));
+ int (*set_thread_id_string) __P((DB_ENV *,
+ char *(*)(DB_ENV *, pid_t, db_threadid_t, char *)));
+ int (*set_timeout) __P((DB_ENV *, db_timeout_t, u_int32_t));
+ int (*set_tmp_dir) __P((DB_ENV *, const char *));
+ int (*set_tx_max) __P((DB_ENV *, u_int32_t));
+ int (*set_tx_timestamp) __P((DB_ENV *, time_t *));
+ int (*set_verbose) __P((DB_ENV *, u_int32_t, int));
+ int (*stat_print) __P((DB_ENV *, u_int32_t));
+ int (*txn_begin) __P((DB_ENV *, DB_TXN *, DB_TXN **, u_int32_t));
+ int (*txn_checkpoint) __P((DB_ENV *, u_int32_t, u_int32_t, u_int32_t));
+ int (*txn_recover)
+ __P((DB_ENV *, DB_PREPLIST *, long, long *, u_int32_t));
+ int (*txn_stat) __P((DB_ENV *, DB_TXN_STAT **, u_int32_t));
+ int (*txn_stat_print) __P((DB_ENV *, u_int32_t));
+ /* DB_ENV PUBLIC HANDLE LIST END */
+
+ /* DB_ENV PRIVATE HANDLE LIST BEGIN */
+ int (*prdbt) __P((DBT *,
+ int, const char *, void *, int (*)(void *, const void *), int));
+ /* DB_ENV PRIVATE HANDLE LIST END */
+
+#define DB_TEST_ELECTINIT 1 /* after __rep_elect_init */
+#define DB_TEST_ELECTVOTE1 2 /* after sending VOTE1 */
+#define DB_TEST_POSTDESTROY 3 /* after destroy op */
+#define DB_TEST_POSTLOG 4 /* after logging all pages */
+#define DB_TEST_POSTLOGMETA 5 /* after logging meta in btree */
+#define DB_TEST_POSTOPEN 6 /* after __os_open */
+#define DB_TEST_POSTSYNC 7 /* after syncing the log */
+#define DB_TEST_PREDESTROY 8 /* before destroy op */
+#define DB_TEST_PREOPEN 9 /* before __os_open */
+#define DB_TEST_RECYCLE 10 /* test rep and txn_recycle */
+#define DB_TEST_SUBDB_LOCKS 11 /* subdb locking tests */
+ int test_abort; /* Abort value for testing. */
+ int test_check; /* Checkpoint value for testing. */
+ int test_copy; /* Copy value for testing. */
+
+#define DB_ENV_AUTO_COMMIT 0x00000001 /* DB_AUTO_COMMIT. */
+#define DB_ENV_CDB 0x00000002 /* DB_INIT_CDB. */
+#define DB_ENV_CDB_ALLDB 0x00000004 /* CDB environment wide locking. */
+#define DB_ENV_DBLOCAL 0x00000008 /* Environment for a private DB. */
+#define DB_ENV_DIRECT_DB 0x00000010 /* DB_DIRECT_DB set. */
+#define DB_ENV_DIRECT_LOG 0x00000020 /* DB_DIRECT_LOG set. */
+#define DB_ENV_DSYNC_DB 0x00000040 /* DB_DSYNC_DB set. */
+#define DB_ENV_DSYNC_LOG 0x00000080 /* DB_DSYNC_LOG set. */
+#define DB_ENV_LOCKDOWN 0x00000100 /* DB_LOCKDOWN set. */
+#define DB_ENV_LOG_AUTOREMOVE 0x00000200 /* DB_LOG_AUTOREMOVE set. */
+#define DB_ENV_LOG_INMEMORY 0x00000400 /* DB_LOG_INMEMORY set. */
+#define DB_ENV_MULTIVERSION 0x00000800 /* DB_MULTIVERSION set. */
+#define DB_ENV_NOLOCKING 0x00001000 /* DB_NOLOCKING set. */
+#define DB_ENV_NOMMAP 0x00002000 /* DB_NOMMAP set. */
+#define DB_ENV_NOPANIC 0x00004000 /* Okay if panic set. */
+#define DB_ENV_NO_OUTPUT_SET 0x00008000 /* No output channel set. */
+#define DB_ENV_OPEN_CALLED 0x00010000 /* DB_ENV->open called. */
+#define DB_ENV_OVERWRITE 0x00020000 /* DB_OVERWRITE set. */
+#define DB_ENV_PRIVATE 0x00040000 /* DB_PRIVATE set. */
+#define DB_ENV_RECOVER_FATAL 0x00080000 /* Doing fatal recovery in env. */
+#define DB_ENV_REF_COUNTED 0x00100000 /* Region references this handle. */
+#define DB_ENV_REGION_INIT 0x00200000 /* DB_REGION_INIT set. */
+#define DB_ENV_RPCCLIENT 0x00400000 /* DB_RPCCLIENT set. */
+#define DB_ENV_RPCCLIENT_GIVEN 0x00800000 /* User-supplied RPC client struct */
+#define DB_ENV_SYSTEM_MEM 0x01000000 /* DB_SYSTEM_MEM set. */
+#define DB_ENV_THREAD 0x02000000 /* DB_THREAD set. */
+#define DB_ENV_TIME_NOTGRANTED 0x04000000 /* DB_TIME_NOTGRANTED set. */
+#define DB_ENV_TXN_NOSYNC 0x08000000 /* DB_TXN_NOSYNC set. */
+#define DB_ENV_TXN_NOWAIT 0x10000000 /* DB_TXN_NOWAIT set. */
+#define DB_ENV_TXN_SNAPSHOT 0x20000000 /* DB_TXN_SNAPSHOT set. */
+#define DB_ENV_TXN_WRITE_NOSYNC 0x40000000 /* DB_TXN_WRITE_NOSYNC set. */
+#define DB_ENV_YIELDCPU 0x80000000 /* DB_YIELDCPU set. */
+ u_int32_t flags;
+};
+
+#ifndef DB_DBM_HSEARCH
+#define DB_DBM_HSEARCH 0 /* No historic interfaces by default. */
+#endif
+#if DB_DBM_HSEARCH != 0
+/*******************************************************
+ * Dbm/Ndbm historic interfaces.
+ *******************************************************/
+typedef struct __db DBM;
+
+#define DBM_INSERT 0 /* Flags to dbm_store(). */
+#define DBM_REPLACE 1
+
+/*
+ * The DB support for ndbm(3) always appends this suffix to the
+ * file name to avoid overwriting the user's original database.
+ */
+#define DBM_SUFFIX ".db"
+
+#if defined(_XPG4_2)
+typedef struct {
+ char *dptr;
+ size_t dsize;
+} datum;
+#else
+typedef struct {
+ char *dptr;
+ int dsize;
+} datum;
+#endif
+
+/*
+ * Translate NDBM calls into DB calls so that DB doesn't step on the
+ * application's name space.
+ */
+#define dbm_clearerr(a) __db_ndbm_clearerr(a)
+#define dbm_close(a) __db_ndbm_close(a)
+#define dbm_delete(a, b) __db_ndbm_delete(a, b)
+#define dbm_dirfno(a) __db_ndbm_dirfno(a)
+#define dbm_error(a) __db_ndbm_error(a)
+#define dbm_fetch(a, b) __db_ndbm_fetch(a, b)
+#define dbm_firstkey(a) __db_ndbm_firstkey(a)
+#define dbm_nextkey(a) __db_ndbm_nextkey(a)
+#define dbm_open(a, b, c) __db_ndbm_open(a, b, c)
+#define dbm_pagfno(a) __db_ndbm_pagfno(a)
+#define dbm_rdonly(a) __db_ndbm_rdonly(a)
+#define dbm_store(a, b, c, d) \
+ __db_ndbm_store(a, b, c, d)
+
+/*
+ * Translate DBM calls into DB calls so that DB doesn't step on the
+ * application's name space.
+ *
+ * The global variables dbrdonly, dirf and pagf were not retained when 4BSD
+ * replaced the dbm interface with ndbm, and are not supported here.
+ */
+#define dbminit(a) __db_dbm_init(a)
+#define dbmclose __db_dbm_close
+#if !defined(__cplusplus)
+#define delete(a) __db_dbm_delete(a)
+#endif
+#define fetch(a) __db_dbm_fetch(a)
+#define firstkey __db_dbm_firstkey
+#define nextkey(a) __db_dbm_nextkey(a)
+#define store(a, b) __db_dbm_store(a, b)
+
+/*******************************************************
+ * Hsearch historic interface.
+ *******************************************************/
+typedef enum {
+ FIND, ENTER
+} ACTION;
+
+typedef struct entry {
+ char *key;
+ char *data;
+} ENTRY;
+
+#define hcreate(a) __db_hcreate(a)
+#define hdestroy __db_hdestroy
+#define hsearch(a, b) __db_hsearch(a, b)
+
+#endif /* DB_DBM_HSEARCH */
+
+#if defined(__cplusplus)
+}
+#endif
+
+#endif /* !_DB_H_ */
+
+/* DO NOT EDIT: automatically built by dist/s_include. */
+#ifndef _DB_EXT_PROT_IN_
+#define _DB_EXT_PROT_IN_
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+int db_create __P((DB **, DB_ENV *, u_int32_t));
+char *db_strerror __P((int));
+int db_env_create __P((DB_ENV **, u_int32_t));
+char *db_version __P((int *, int *, int *));
+int log_compare __P((const DB_LSN *, const DB_LSN *));
+int db_env_set_func_close __P((int (*)(int)));
+int db_env_set_func_dirfree __P((void (*)(char **, int)));
+int db_env_set_func_dirlist __P((int (*)(const char *, char ***, int *)));
+int db_env_set_func_exists __P((int (*)(const char *, int *)));
+int db_env_set_func_free __P((void (*)(void *)));
+int db_env_set_func_fsync __P((int (*)(int)));
+int db_env_set_func_ftruncate __P((int (*)(int, off_t)));
+int db_env_set_func_ioinfo __P((int (*)(const char *, int, u_int32_t *, u_int32_t *, u_int32_t *)));
+int db_env_set_func_malloc __P((void *(*)(size_t)));
+int db_env_set_func_map __P((int (*)(char *, size_t, int, int, void **)));
+int db_env_set_func_pread __P((ssize_t (*)(int, void *, size_t, off_t)));
+int db_env_set_func_pwrite __P((ssize_t (*)(int, const void *, size_t, off_t)));
+int db_env_set_func_open __P((int (*)(const char *, int, ...)));
+int db_env_set_func_read __P((ssize_t (*)(int, void *, size_t)));
+int db_env_set_func_realloc __P((void *(*)(void *, size_t)));
+int db_env_set_func_rename __P((int (*)(const char *, const char *)));
+int db_env_set_func_seek __P((int (*)(int, off_t, int)));
+int db_env_set_func_sleep __P((int (*)(u_long, u_long)));
+int db_env_set_func_unlink __P((int (*)(const char *)));
+int db_env_set_func_unmap __P((int (*)(void *, size_t)));
+int db_env_set_func_write __P((ssize_t (*)(int, const void *, size_t)));
+int db_env_set_func_yield __P((int (*)(void)));
+int db_sequence_create __P((DB_SEQUENCE **, DB *, u_int32_t));
+#if DB_DBM_HSEARCH != 0
+int __db_ndbm_clearerr __P((DBM *));
+void __db_ndbm_close __P((DBM *));
+int __db_ndbm_delete __P((DBM *, datum));
+int __db_ndbm_dirfno __P((DBM *));
+int __db_ndbm_error __P((DBM *));
+datum __db_ndbm_fetch __P((DBM *, datum));
+datum __db_ndbm_firstkey __P((DBM *));
+datum __db_ndbm_nextkey __P((DBM *));
+DBM *__db_ndbm_open __P((const char *, int, int));
+int __db_ndbm_pagfno __P((DBM *));
+int __db_ndbm_rdonly __P((DBM *));
+int __db_ndbm_store __P((DBM *, datum, datum, int));
+int __db_dbm_close __P((void));
+int __db_dbm_delete __P((datum));
+datum __db_dbm_fetch __P((datum));
+datum __db_dbm_firstkey __P((void));
+int __db_dbm_init __P((char *));
+datum __db_dbm_nextkey __P((datum));
+int __db_dbm_store __P((datum, datum));
+#endif
+#if DB_DBM_HSEARCH != 0
+int __db_hcreate __P((size_t));
+ENTRY *__db_hsearch __P((ENTRY, ACTION));
+void __db_hdestroy __P((void));
+#endif
+
+#if defined(__cplusplus)
+}
+#endif
+#endif /* !_DB_EXT_PROT_IN_ */
diff --git a/db/build_s60/db_config.h b/db/build_s60/db_config.h
new file mode 100644
index 000000000..b86eb9789
--- /dev/null
+++ b/db/build_s60/db_config.h
@@ -0,0 +1,548 @@
+/* DO NOT EDIT: automatically built by dist/s_s60. */
+/* db_config.h. Generated from config.hin by configure. */
+/* config.hin. Generated from configure.ac by autoheader. */
+
+/* Define to 1 if you want to build a version for running the test suite. */
+/* #undef CONFIG_TEST */
+
+/* We use DB_WIN32 much as one would use _WIN32 -- to specify that we're using
+ an operating system environment that supports Win32 calls and semantics. We
+ don't use _WIN32 because Cygwin/GCC also defines _WIN32, even though
+ Cygwin/GCC closely emulates the Unix environment. */
+/* #undef DB_WIN32 */
+
+/* Define to 1 if you want a debugging version. */
+/* #undef DEBUG */
+
+/* Define to 1 if you want a version that logs read operations. */
+/* #undef DEBUG_ROP */
+
+/* Define to 1 if you want a version that logs write operations. */
+/* #undef DEBUG_WOP */
+
+/* Define to 1 if you want a version with run-time diagnostic checking. */
+/* #undef DIAGNOSTIC */
+
+/* Define to 1 if 64-bit types are available. */
+/* #undef HAVE_64BIT_TYPES */
+
+/* Define to 1 if you have the `abort' function. */
+#define HAVE_ABORT 1
+
+/* Define to 1 if you have the `atoi' function. */
+#define HAVE_ATOI 1
+
+/* Define to 1 if you have the `atol' function. */
+#define HAVE_ATOL 1
+
+/* Define to 1 if building on BREW. */
+/* #undef HAVE_BREW */
+
+/* Define to 1 if building on BREW (SDK2). */
+/* #undef HAVE_BREW_SDK2 */
+
+/* Define to 1 if you have the `clock_gettime' function. */
+/* #undef HAVE_CLOCK_GETTIME */
+
+/* Define to 1 if Berkeley DB release includes strong cryptography. */
+/* #undef HAVE_CRYPTO */
+
+/* Define to 1 if you have the `ctime_r' function. */
+#define HAVE_CTIME_R 1
+
+/* Define to 1 if ctime_r takes a buffer length as a third argument. */
+/* #undef HAVE_CTIME_R_3ARG */
+
+/* Define to 1 if you have the `directio' function. */
+/* #undef HAVE_DIRECTIO */
+
+/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
+ */
+#define HAVE_DIRENT_H 1
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+/* #undef HAVE_DLFCN_H */
+
+/* Define to 1 if you have EXIT_SUCCESS/EXIT_FAILURE #defines. */
+#define HAVE_EXIT_SUCCESS 1
+
+/* Define to 1 if you have the `fchmod' function. */
+/* #undef HAVE_FCHMOD */
+
+/* Define to 1 if you have the `fclose' function. */
+#define HAVE_FCLOSE 1
+
+/* Define to 1 if you have the `fcntl' function. */
+#define HAVE_FCNTL 1
+
+/* Define to 1 if fcntl/F_SETFD denies child access to file descriptors. */
+/* #undef HAVE_FCNTL_F_SETFD */
+
+/* Define to 1 if you have the `fdatasync' function. */
+/* #undef HAVE_FDATASYNC */
+
+/* Define to 1 if you have the `fgetc' function. */
+#define HAVE_FGETC 1
+
+/* Define to 1 if you have the `fgets' function. */
+#define HAVE_FGETS 1
+
+/* Define to 1 if allocated filesystem blocks are not zeroed. */
+#define HAVE_FILESYSTEM_NOTZERO 1
+
+/* Define to 1 to build Berkeley DB with a fine-grained lock manager. */
+/* #undef HAVE_FINE_GRAINED_LOCK_MANAGER */
+
+/* Define to 1 if you have the `fopen' function. */
+#define HAVE_FOPEN 1
+
+/* Define to 1 if you have the `ftruncate' function. */
+/* #undef HAVE_FTRUNCATE */
+
+/* Define to 1 if you have the `fwrite' function. */
+#define HAVE_FWRITE 1
+
+/* Define to 1 if you have the `getaddrinfo' function. */
+/* #undef HAVE_GETADDRINFO */
+
+/* Define to 1 if you have the `getcwd' function. */
+#define HAVE_GETCWD 1
+
+/* Define to 1 if you have the `getenv' function. */
+/* #undef HAVE_GETENV */
+
+/* Define to 1 if you have the `getopt' function. */
+#define HAVE_GETOPT 1
+
+/* Define to 1 if you have the `getrusage' function. */
+/* #undef HAVE_GETRUSAGE */
+
+/* Define to 1 if you have the `gettimeofday' function. */
+/* #undef HAVE_GETTIMEOFDAY */
+
+/* Define to 1 if you have the `getuid' function. */
+/* #undef HAVE_GETUID */
+
+/* Define to 1 if building Hash access method. */
+/* #undef HAVE_HASH */
+
+/* Define to 1 if you have the `hstrerror' function. */
+/* #undef HAVE_HSTRERROR */
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define to 1 if you have the `isalpha' function. */
+#define HAVE_ISALPHA 1
+
+/* Define to 1 if you have the `isdigit' function. */
+#define HAVE_ISDIGIT 1
+
+/* Define to 1 if you have the `isprint' function. */
+#define HAVE_ISPRINT 1
+
+/* Define to 1 if you have the `isspace' function. */
+#define HAVE_ISSPACE 1
+
+/* Define to 1 if you have the `localtime' function. */
+#define HAVE_LOCALTIME 1
+
+/* Define to 1 if you have the `memcmp' function. */
+#define HAVE_MEMCMP 1
+
+/* Define to 1 if you have the `memcpy' function. */
+#define HAVE_MEMCPY 1
+
+/* Define to 1 if you have the `memmove' function. */
+#define HAVE_MEMMOVE 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+/* #undef HAVE_MEMORY_H */
+
+/* Define to 1 if you have the `mlock' function. */
+/* #undef HAVE_MLOCK */
+
+/* Define to 1 if you have the `mmap' function. */
+/* #undef HAVE_MMAP */
+
+/* Define to 1 if you have the `mprotect' function. */
+/* #undef HAVE_MPROTECT */
+
+/* Define to 1 if you have the `munlock' function. */
+/* #undef HAVE_MUNLOCK */
+
+/* Define to 1 if you have the `munmap' function. */
+#define HAVE_MUNMAP 1
+
+/* Define to 1 to use the GCC compiler and 68K assembly language mutexes. */
+/* #undef HAVE_MUTEX_68K_GCC_ASSEMBLY */
+
+/* Define to 1 to use the AIX _check_lock mutexes. */
+/* #undef HAVE_MUTEX_AIX_CHECK_LOCK */
+
+/* Define to 1 to use the GCC compiler and Alpha assembly language mutexes. */
+/* #undef HAVE_MUTEX_ALPHA_GCC_ASSEMBLY */
+
+/* Define to 1 to use the GCC compiler and ARM assembly language mutexes. */
+/* #undef HAVE_MUTEX_ARM_GCC_ASSEMBLY */
+
+/* Define to 1 to use the Apple/Darwin _spin_lock_try mutexes. */
+/* #undef HAVE_MUTEX_DARWIN_SPIN_LOCK_TRY */
+
+/* Define to 1 to use the UNIX fcntl system call mutexes. */
+/* #undef HAVE_MUTEX_FCNTL */
+
+/* Define to 1 to use the GCC compiler and PaRisc assembly language mutexes.
+ */
+/* #undef HAVE_MUTEX_HPPA_GCC_ASSEMBLY */
+
+/* Define to 1 to use the msem_XXX mutexes on HP-UX. */
+/* #undef HAVE_MUTEX_HPPA_MSEM_INIT */
+
+/* Define to 1 to use test-and-set mutexes with blocking mutexes. */
+/* #undef HAVE_MUTEX_HYBRID */
+
+/* Define to 1 to use the GCC compiler and IA64 assembly language mutexes. */
+/* #undef HAVE_MUTEX_IA64_GCC_ASSEMBLY */
+
+/* Define to 1 to use the GCC compiler and MIPS assembly language mutexes. */
+/* #undef HAVE_MUTEX_MIPS_GCC_ASSEMBLY */
+
+/* Define to 1 to use the msem_XXX mutexes on systems other than HP-UX. */
+/* #undef HAVE_MUTEX_MSEM_INIT */
+
+/* Define to 1 to use the GCC compiler and PowerPC assembly language mutexes.
+ */
+/* #undef HAVE_MUTEX_PPC_GCC_ASSEMBLY */
+
+/* Define to 1 to use POSIX 1003.1 pthread_XXX mutexes. */
+#define HAVE_MUTEX_PTHREADS 1
+
+/* Define to 1 to use Reliant UNIX initspin mutexes. */
+/* #undef HAVE_MUTEX_RELIANTUNIX_INITSPIN */
+
+/* Define to 1 to use the IBM C compiler and S/390 assembly language mutexes.
+ */
+/* #undef HAVE_MUTEX_S390_CC_ASSEMBLY */
+
+/* Define to 1 to use the GCC compiler and S/390 assembly language mutexes. */
+/* #undef HAVE_MUTEX_S390_GCC_ASSEMBLY */
+
+/* Define to 1 to use the SCO compiler and x86 assembly language mutexes. */
+/* #undef HAVE_MUTEX_SCO_X86_CC_ASSEMBLY */
+
+/* Define to 1 to use the obsolete POSIX 1003.1 sema_XXX mutexes. */
+/* #undef HAVE_MUTEX_SEMA_INIT */
+
+/* Define to 1 to use the SGI XXX_lock mutexes. */
+/* #undef HAVE_MUTEX_SGI_INIT_LOCK */
+
+/* Define to 1 to use the Solaris _lock_XXX mutexes. */
+/* #undef HAVE_MUTEX_SOLARIS_LOCK_TRY */
+
+/* Define to 1 to use the Solaris lwp threads mutexes. */
+/* #undef HAVE_MUTEX_SOLARIS_LWP */
+
+/* Define to 1 to use the GCC compiler and Sparc assembly language mutexes. */
+/* #undef HAVE_MUTEX_SPARC_GCC_ASSEMBLY */
+
+/* Define to 1 if the Berkeley DB library should support mutexes. */
+#define HAVE_MUTEX_SUPPORT 1
+
+/* Define to 1 if mutexes hold system resources. */
+#define HAVE_MUTEX_SYSTEM_RESOURCES 1
+
+/* Define to 1 to configure mutexes intra-process only. */
+#define HAVE_MUTEX_THREAD_ONLY 1
+
+/* Define to 1 to use the CC compiler and Tru64 assembly language mutexes. */
+/* #undef HAVE_MUTEX_TRU64_CC_ASSEMBLY */
+
+/* Define to 1 to use the UNIX International mutexes. */
+/* #undef HAVE_MUTEX_UI_THREADS */
+
+/* Define to 1 to use the UTS compiler and assembly language mutexes. */
+/* #undef HAVE_MUTEX_UTS_CC_ASSEMBLY */
+
+/* Define to 1 to use VMS mutexes. */
+/* #undef HAVE_MUTEX_VMS */
+
+/* Define to 1 to use VxWorks mutexes. */
+/* #undef HAVE_MUTEX_VXWORKS */
+
+/* Define to 1 to use the MSVC compiler and Windows mutexes. */
+/* #undef HAVE_MUTEX_WIN32 */
+
+/* Define to 1 to use the GCC compiler and Windows mutexes. */
+/* #undef HAVE_MUTEX_WIN32_GCC */
+
+/* Define to 1 to use the GCC compiler and 64-bit x86 assembly language
+ mutexes. */
+/* #undef HAVE_MUTEX_X86_64_GCC_ASSEMBLY */
+
+/* Define to 1 to use the GCC compiler and 32-bit x86 assembly language
+ mutexes. */
+/* #undef HAVE_MUTEX_X86_GCC_ASSEMBLY */
+
+/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
+/* #undef HAVE_NDIR_H */
+
+/* Define to 1 if you have the O_DIRECT flag. */
+/* #undef HAVE_O_DIRECT */
+
+/* Define to 1 if you have the `pread' function. */
+/* #undef HAVE_PREAD */
+
+/* Define to 1 if you have the `printf' function. */
+#define HAVE_PRINTF 1
+
+/* Define to 1 if you have the `pstat_getdynamic' function. */
+/* #undef HAVE_PSTAT_GETDYNAMIC */
+
+/* Define to 1 to configure Berkeley DB for POSIX pthread API. */
+/* #undef HAVE_PTHREAD_API */
+
+/* Define to 1 if you have the `pthread_yield' function. */
+/* #undef HAVE_PTHREAD_YIELD */
+
+/* Define to 1 if you have the `pwrite' function. */
+/* #undef HAVE_PWRITE */
+
+/* Define to 1 if building on QNX. */
+/* #undef HAVE_QNX */
+
+/* Define to 1 if you have the `qsort' function. */
+#define HAVE_QSORT 1
+
+/* Define to 1 if building Queue access method. */
+/* #undef HAVE_QUEUE */
+
+/* Define to 1 if you have the `raise' function. */
+#define HAVE_RAISE 1
+
+/* Define to 1 if you have the `rand' function. */
+#define HAVE_RAND 1
+
+/* Define to 1 if building replication support. */
+/* #undef HAVE_REPLICATION */
+
+/* Define to 1 if building the Berkeley DB replication framework. */
+/* #undef HAVE_REPLICATION_THREADS */
+
+/* Define to 1 if building RPC client/server. */
+/* #undef HAVE_RPC */
+
+/* Define to 1 if building on S60. */
+#define HAVE_S60 1
+
+/* Define to 1 if you have the `sched_yield' function. */
+#define HAVE_SCHED_YIELD 1
+
+/* Define to 1 if you have the `select' function. */
+#define HAVE_SELECT 1
+
+/* Define to 1 if you have the `shmget' function. */
+#define HAVE_SHMGET 1
+
+/* Define to 1 if you have the `sigaction' function. */
+/* #undef HAVE_SIGACTION */
+
+/* Define to 1 if thread identifier type db_threadid_t is integral. */
+#define HAVE_SIMPLE_THREAD_TYPE 1
+
+/* Define to 1 if you have the `snprintf' function. */
+#define HAVE_SNPRINTF 1
+
+/* Define to 1 if you have the `stat' function. */
+#define HAVE_STAT 1
+
+/* Define to 1 if building statistics support. */
+#define HAVE_STATISTICS 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the `strcasecmp' function. */
+#define HAVE_STRCASECMP 1
+
+/* Define to 1 if you have the `strcat' function. */
+#define HAVE_STRCAT 1
+
+/* Define to 1 if you have the `strchr' function. */
+#define HAVE_STRCHR 1
+
+/* Define to 1 if you have the `strdup' function. */
+#define HAVE_STRDUP 1
+
+/* Define to 1 if you have the `strerror' function. */
+#define HAVE_STRERROR 1
+
+/* Define to 1 if you have the `strftime' function. */
+#define HAVE_STRFTIME 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the `strncat' function. */
+#define HAVE_STRNCAT 1
+
+/* Define to 1 if you have the `strncmp' function. */
+#define HAVE_STRNCMP 1
+
+/* Define to 1 if you have the `strrchr' function. */
+#define HAVE_STRRCHR 1
+
+/* Define to 1 if you have the `strsep' function. */
+#define HAVE_STRSEP 1
+
+/* Define to 1 if you have the `strtol' function. */
+#define HAVE_STRTOL 1
+
+/* Define to 1 if you have the `strtoul' function. */
+#define HAVE_STRTOUL 1
+
+/* Define to 1 if `st_blksize' is member of `struct stat'. */
+/* #undef HAVE_STRUCT_STAT_ST_BLKSIZE */
+
+/* Define to 1 if you have the `sysconf' function. */
+#define HAVE_SYSCONF 1
+
+/* Define to 1 if port includes files in the Berkeley DB source code. */
+#define HAVE_SYSTEM_INCLUDE_FILES 1
+
+/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
+ */
+/* #undef HAVE_SYS_DIR_H */
+
+/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
+ */
+/* #undef HAVE_SYS_NDIR_H */
+
+/* Define to 1 if you have the <sys/select.h> header file. */
+#define HAVE_SYS_SELECT_H 1
+
+/* Define to 1 if you have the <sys/socket.h> header file. */
+/* #undef HAVE_SYS_SOCKET_H */
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#define HAVE_SYS_TIME_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the `time' function. */
+#define HAVE_TIME 1
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define to 1 if unlink of file with open file descriptors will fail. */
+/* #undef HAVE_UNLINK_WITH_OPEN_FAILURE */
+
+/* Define to 1 if port includes historic database upgrade support. */
+/* #undef HAVE_UPGRADE_SUPPORT */
+
+/* Define to 1 if building access method verification support. */
+/* #undef HAVE_VERIFY */
+
+/* Define to 1 if you have the `vsnprintf' function. */
+#define HAVE_VSNPRINTF 1
+
+/* Define to 1 if building on VxWorks. */
+/* #undef HAVE_VXWORKS */
+
+/* Define to 1 if you have the `yield' function. */
+/* #undef HAVE_YIELD */
+
+/* Define to 1 if you have the `_fstati64' function. */
+/* #undef HAVE__FSTATI64 */
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "Oracle Technology Network Berkeley DB forum"
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "Berkeley DB"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "Berkeley DB 4.6.18"
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME "db-4.6.18"
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "4.6.18"
+
+/* The size of `char', as computed by sizeof. */
+#define SIZEOF_CHAR 1
+
+/* The size of `char *', as computed by sizeof. */
+#define SIZEOF_CHAR_P 4
+
+/* The size of `int', as computed by sizeof. */
+#define SIZEOF_INT 4
+
+/* The size of `long', as computed by sizeof. */
+#define SIZEOF_LONG 4
+
+/* The size of `long long', as computed by sizeof. */
+/* #undef SIZEOF_LONG_LONG */
+
+/* The size of `short', as computed by sizeof. */
+#define SIZEOF_SHORT 2
+
+/* The size of `size_t', as computed by sizeof. */
+#define SIZEOF_SIZE_T 4
+
+/* The size of `unsigned char', as computed by sizeof. */
+#define SIZEOF_UNSIGNED_CHAR 1
+
+/* The size of `unsigned int', as computed by sizeof. */
+#define SIZEOF_UNSIGNED_INT 4
+
+/* The size of `unsigned long', as computed by sizeof. */
+#define SIZEOF_UNSIGNED_LONG 4
+
+/* The size of `unsigned long long', as computed by sizeof. */
+/* #undef SIZEOF_UNSIGNED_LONG_LONG */
+
+/* The size of `unsigned short', as computed by sizeof. */
+#define SIZEOF_UNSIGNED_SHORT 2
+
+/* Define to 1 if the `S_IS*' macros in <sys/stat.h> do not work properly. */
+/* #undef STAT_MACROS_BROKEN */
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
+/* #undef TIME_WITH_SYS_TIME */
+
+/* Define to 1 to mask harmless uninitialized memory read/writes. */
+/* #undef UMRW */
+
+/* Number of bits in a file offset, on hosts where this is settable. */
+/* #undef _FILE_OFFSET_BITS */
+
+/* Define for large files, on AIX-style hosts. */
+/* #undef _LARGE_FILES */
+
+/* Define to empty if `const' does not conform to ANSI C. */
+/* #undef const */
+
+/* Define to `__inline__' or `__inline' if that's what the C compiler
+ calls it, or to nothing if 'inline' is not supported under any name. */
+#ifndef __cplusplus
+/* #undef inline */
+#endif
+
+/* type to use in place of socklen_t if not defined */
+/* #undef socklen_t */
diff --git a/db/build_s60/db_int.h b/db/build_s60/db_int.h
new file mode 100644
index 000000000..6a6a8470c
--- /dev/null
+++ b/db/build_s60/db_int.h
@@ -0,0 +1,774 @@
+/* DO NOT EDIT: automatically built by dist/s_s60. */
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
+ *
+ * $Id: db_int.h,v 1.35 2007/07/17 14:50:17 bostic Exp $
+ */
+
+#ifndef _DB_INT_H_
+#define _DB_INT_H_
+
+/*******************************************************
+ * Berkeley DB ANSI/POSIX include files.
+ *******************************************************/
+#ifdef HAVE_SYSTEM_INCLUDE_FILES
+#include <sys/types.h>
+#ifdef DIAG_MVCC
+#include <sys/mman.h>
+#endif
+#include <sys/stat.h>
+
+#if defined(__INCLUDE_SELECT_H)
+#ifdef HAVE_SYS_SELECT_H
+#include <sys/select.h>
+#endif
+#ifdef HAVE_VXWORKS
+#include <selectLib.h>
+#endif
+#endif
+
+#if TIME_WITH_SYS_TIME
+#include <sys/time.h>
+#include <time.h>
+#else
+#if HAVE_SYS_TIME_H
+#include <sys/time.h>
+#else
+#include <time.h>
+#endif
+#endif
+
+#ifdef HAVE_VXWORKS
+#include <net/uio.h>
+#else
+#include <sys/uio.h>
+#endif
+
+#if defined(__INCLUDE_NETWORKING)
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#include <netinet/in.h>
+#include <netdb.h>
+#include <arpa/inet.h>
+#endif
+
+#if defined(STDC_HEADERS) || defined(__cplusplus)
+#include <stdarg.h>
+#else
+#include <varargs.h>
+#endif
+
+#include <ctype.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <limits.h>
+#include <signal.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#if defined(__INCLUDE_DIRECTORY)
+#if HAVE_DIRENT_H
+# include <dirent.h>
+# define NAMLEN(dirent) strlen((dirent)->d_name)
+#else
+# define dirent direct
+# define NAMLEN(dirent) (dirent)->d_namlen
+# if HAVE_SYS_NDIR_H
+# include <sys/ndir.h>
+# endif
+# if HAVE_SYS_DIR_H
+# include <sys/dir.h>
+# endif
+# if HAVE_NDIR_H
+# include <ndir.h>
+# endif
+#endif
+#endif /* __INCLUDE_DIRECTORY_READ */
+
+#endif /* !HAVE_SYSTEM_INCLUDE_FILES */
+
+#ifdef DB_WIN32
+#include "dbinc/win_db.h"
+#endif
+
+#include "db.h"
+#include "clib_port.h"
+
+#include "dbinc/queue.h"
+#include "dbinc/shqueue.h"
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+/*******************************************************
+ * General purpose constants and macros.
+ *******************************************************/
+#undef FALSE
+#define FALSE 0
+#undef TRUE
+#define TRUE (!FALSE)
+
+#define MEGABYTE 1048576
+#define GIGABYTE 1073741824
+
+#define NS_PER_MS 1000000 /* Nanoseconds in a millisecond */
+#define NS_PER_US 1000 /* Nanoseconds in a microsecond */
+#define NS_PER_SEC 1000000000 /* Nanoseconds in a second */
+#define US_PER_MS 1000 /* Microseconds in a millisecond */
+#define US_PER_SEC 1000000 /* Microseconds in a second */
+#define MS_PER_NS 1000000 /* Milliseconds in a nanosecond */
+#define MS_PER_SEC 1000 /* Milliseconds in a second */
+
+#define RECNO_OOB 0 /* Illegal record number. */
+
+/* Test for a power-of-two (tests true for zero, which doesn't matter here). */
+#define POWER_OF_TWO(x) (((x) & ((x) - 1)) == 0)
+
+/* Test for valid page sizes. */
+#define DB_MIN_PGSIZE 0x000200 /* Minimum page size (512). */
+#define DB_MAX_PGSIZE 0x010000 /* Maximum page size (65536). */
+#define IS_VALID_PAGESIZE(x) \
+ (POWER_OF_TWO(x) && (x) >= DB_MIN_PGSIZE && ((x) <= DB_MAX_PGSIZE))
+
+/* Minimum number of pages cached, by default. */
+#define DB_MINPAGECACHE 16
+
+/*
+ * If we are unable to determine the underlying filesystem block size, use
+ * 8K on the grounds that most OS's use less than 8K for a VM page size.
+ */
+#define DB_DEF_IOSIZE (8 * 1024)
+
+/* Align an integer to a specific boundary. */
+#undef DB_ALIGN
+#define DB_ALIGN(v, bound) \
+ (((v) + (bound) - 1) & ~(((uintmax_t)(bound)) - 1))
+
+/* Increment a pointer to a specific boundary. */
+#undef ALIGNP_INC
+#define ALIGNP_INC(p, bound) \
+ (void *)(((uintptr_t)(p) + (bound) - 1) & ~(((uintptr_t)(bound)) - 1))
+
+/*
+ * Print an address as a u_long (a u_long is the largest type we can print
+ * portably). Most 64-bit systems have made longs 64-bits, so this should
+ * work.
+ */
+#define P_TO_ULONG(p) ((u_long)(uintptr_t)(p))
+
+/*
+ * Convert a pointer to a small integral value.
+ *
+ * The (u_int16_t)(uintptr_t) cast avoids warnings: the (uintptr_t) cast
+ * converts the value to an integral type, and the (u_int16_t) cast converts
+ * it to a small integral type so we don't get complaints when we assign the
+ * final result to an integral type smaller than uintptr_t.
+ */
+#define P_TO_UINT32(p) ((u_int32_t)(uintptr_t)(p))
+#define P_TO_UINT16(p) ((u_int16_t)(uintptr_t)(p))
+
+/*
+ * There are several on-page structures that are declared to have a number of
+ * fields followed by a variable length array of items. The structure size
+ * without including the variable length array or the address of the first of
+ * those elements can be found using SSZ.
+ *
+ * This macro can also be used to find the offset of a structure element in a
+ * structure. This is used in various places to copy structure elements from
+ * unaligned memory references, e.g., pointers into a packed page.
+ *
+ * There are two versions because compilers object if you take the address of
+ * an array.
+ */
+#undef SSZ
+#define SSZ(name, field) P_TO_UINT16(&(((name *)0)->field))
+
+#undef SSZA
+#define SSZA(name, field) P_TO_UINT16(&(((name *)0)->field[0]))
+
+/* Structure used to print flag values. */
+typedef struct __fn {
+ u_int32_t mask; /* Flag value. */
+ const char *name; /* Flag name. */
+} FN;
+
+/* Set, clear and test flags. */
+#define FLD_CLR(fld, f) (fld) &= ~(f)
+#define FLD_ISSET(fld, f) ((fld) & (f))
+#define FLD_SET(fld, f) (fld) |= (f)
+#define F_CLR(p, f) (p)->flags &= ~(f)
+#define F_ISSET(p, f) ((p)->flags & (f))
+#define F_SET(p, f) (p)->flags |= (f)
+#define LF_CLR(f) ((flags) &= ~(f))
+#define LF_ISSET(f) ((flags) & (f))
+#define LF_SET(f) ((flags) |= (f))
+
+/*
+ * Calculate a percentage. The values can overflow 32-bit integer arithmetic
+ * so we use floating point.
+ *
+ * When calculating a bytes-vs-page size percentage, we're getting the inverse
+ * of the percentage in all cases, that is, we want 100 minus the percentage we
+ * calculate.
+ */
+#define DB_PCT(v, total) \
+ ((int)((total) == 0 ? 0 : ((double)(v) * 100) / (total)))
+#define DB_PCT_PG(v, total, pgsize) \
+ ((int)((total) == 0 ? 0 : \
+ 100 - ((double)(v) * 100) / (((double)total) * (pgsize))))
+
+/*
+ * Statistics update shared memory and so are expensive -- don't update the
+ * values unless we're going to display the results.
+ */
+#undef STAT
+#ifdef HAVE_STATISTICS
+#define STAT(x) x
+#else
+#define STAT(x)
+#endif
+
+/*
+ * Structure used for callback message aggregation.
+ *
+ * Display values in XXX_stat_print calls.
+ */
+typedef struct __db_msgbuf {
+ char *buf; /* Heap allocated buffer. */
+ char *cur; /* Current end of message. */
+ size_t len; /* Allocated length of buffer. */
+} DB_MSGBUF;
+#define DB_MSGBUF_INIT(a) do { \
+ (a)->buf = (a)->cur = NULL; \
+ (a)->len = 0; \
+} while (0)
+#define DB_MSGBUF_FLUSH(dbenv, a) do { \
+ if ((a)->buf != NULL) { \
+ if ((a)->cur != (a)->buf) \
+ __db_msg(dbenv, "%s", (a)->buf); \
+ __os_free(dbenv, (a)->buf); \
+ DB_MSGBUF_INIT(a); \
+ } \
+} while (0)
+#define STAT_FMT(msg, fmt, type, v) do { \
+ DB_MSGBUF __mb; \
+ DB_MSGBUF_INIT(&__mb); \
+ __db_msgadd(dbenv, &__mb, fmt, (type)(v)); \
+ __db_msgadd(dbenv, &__mb, "\t%s", msg); \
+ DB_MSGBUF_FLUSH(dbenv, &__mb); \
+} while (0)
+#define STAT_HEX(msg, v) \
+ __db_msg(dbenv, "%#lx\t%s", (u_long)(v), msg)
+#define STAT_ISSET(msg, p) \
+ __db_msg(dbenv, "%sSet\t%s", (p) == NULL ? "!" : " ", msg)
+#define STAT_LONG(msg, v) \
+ __db_msg(dbenv, "%ld\t%s", (long)(v), msg)
+#define STAT_LSN(msg, lsnp) \
+ __db_msg(dbenv, "%lu/%lu\t%s", \
+ (u_long)(lsnp)->file, (u_long)(lsnp)->offset, msg)
+#define STAT_POINTER(msg, v) \
+ __db_msg(dbenv, "%#lx\t%s", P_TO_ULONG(v), msg)
+#define STAT_STRING(msg, p) do { \
+ const char *__p = p; /* p may be a function call. */ \
+ __db_msg(dbenv, "%s\t%s", __p == NULL ? "!Set" : __p, msg); \
+} while (0)
+#define STAT_ULONG(msg, v) \
+ __db_msg(dbenv, "%lu\t%s", (u_long)(v), msg)
+
+/*
+ * There are quite a few places in Berkeley DB where we want to initialize
+ * a DBT from a string or other random pointer type, using a length typed
+ * to size_t in most cases. This macro avoids a lot of casting. The macro
+ * comes in two flavors because we often want to clear the DBT first.
+ */
+#define DB_SET_DBT(dbt, d, s) do { \
+ (dbt).data = (void *)(d); \
+ (dbt).size = (u_int32_t)(s); \
+} while (0)
+#define DB_INIT_DBT(dbt, d, s) do { \
+ memset(&(dbt), 0, sizeof(dbt)); \
+ DB_SET_DBT(dbt, d, s); \
+} while (0)
+
+/*******************************************************
+ * API return values
+ *******************************************************/
+/*
+ * Return values that are OK for each different call. Most calls have a
+ * standard 'return of 0 is only OK value', but some, like db->get have
+ * DB_NOTFOUND as a return value, but it really isn't an error.
+ */
+#define DB_RETOK_STD(ret) ((ret) == 0)
+#define DB_RETOK_DBCDEL(ret) ((ret) == 0 || (ret) == DB_KEYEMPTY || \
+ (ret) == DB_NOTFOUND)
+#define DB_RETOK_DBCGET(ret) ((ret) == 0 || (ret) == DB_KEYEMPTY || \
+ (ret) == DB_NOTFOUND)
+#define DB_RETOK_DBCPUT(ret) ((ret) == 0 || (ret) == DB_KEYEXIST || \
+ (ret) == DB_NOTFOUND)
+#define DB_RETOK_DBDEL(ret) DB_RETOK_DBCDEL(ret)
+#define DB_RETOK_DBGET(ret) DB_RETOK_DBCGET(ret)
+#define DB_RETOK_DBPUT(ret) ((ret) == 0 || (ret) == DB_KEYEXIST)
+#define DB_RETOK_EXISTS(ret) DB_RETOK_DBCGET(ret)
+#define DB_RETOK_LGGET(ret) ((ret) == 0 || (ret) == DB_NOTFOUND)
+#define DB_RETOK_MPGET(ret) ((ret) == 0 || (ret) == DB_PAGE_NOTFOUND)
+#define DB_RETOK_REPPMSG(ret) ((ret) == 0 || \
+ (ret) == DB_REP_IGNORE || \
+ (ret) == DB_REP_ISPERM || \
+ (ret) == DB_REP_NEWMASTER || \
+ (ret) == DB_REP_NEWSITE || \
+ (ret) == DB_REP_NOTPERM)
+
+/* Find a reasonable operation-not-supported error. */
+#ifdef EOPNOTSUPP
+#define DB_OPNOTSUP EOPNOTSUPP
+#else
+#ifdef ENOTSUP
+#define DB_OPNOTSUP ENOTSUP
+#else
+#define DB_OPNOTSUP EINVAL
+#endif
+#endif
+
+/*******************************************************
+ * Files.
+ *******************************************************/
+/*
+ * We use 1024 as the maximum path length. It's too hard to figure out what
+ * the real path length is, as it was traditionally stored in <sys/param.h>,
+ * and that file isn't always available.
+ */
+#define DB_MAXPATHLEN 1024
+
+#define PATH_DOT "." /* Current working directory. */
+ /* Path separator character(s). */
+#define PATH_SEPARATOR "\\/:"
+
+/*******************************************************
+ * Environment.
+ *******************************************************/
+/* Type passed to __db_appname(). */
+typedef enum {
+ DB_APP_NONE=0, /* No type (region). */
+ DB_APP_DATA, /* Data file. */
+ DB_APP_LOG, /* Log file. */
+ DB_APP_TMP /* Temporary file. */
+} APPNAME;
+
+/*
+ * A set of macros to check if various functionality has been configured.
+ *
+ * ALIVE_ON The is_alive function is configured.
+ * CDB_LOCKING CDB product locking.
+ * CRYPTO_ON Security has been configured.
+ * LOCKING_ON Locking has been configured.
+ * LOGGING_ON Logging has been configured.
+ * MUTEX_ON Mutexes have been configured.
+ * MPOOL_ON Memory pool has been configured.
+ * REP_ON Replication has been configured.
+ * RPC_ON RPC has been configured.
+ * TXN_ON Transactions have been configured.
+ *
+ * REP_ON is more complex than most: if the BDB library was compiled without
+ * replication support, dbenv->rep_handle will be NULL; if the BDB library
+ * has replication support, but it was not configured, the region reference
+ * will be NULL.
+ */
+#define ALIVE_ON(dbenv) ((dbenv)->is_alive != NULL)
+#define CDB_LOCKING(dbenv) F_ISSET(dbenv, DB_ENV_CDB)
+#define CRYPTO_ON(dbenv) ((dbenv)->crypto_handle != NULL)
+#define LOCKING_ON(dbenv) ((dbenv)->lk_handle != NULL)
+#define LOGGING_ON(dbenv) ((dbenv)->lg_handle != NULL)
+#define MPOOL_ON(dbenv) ((dbenv)->mp_handle != NULL)
+#define MUTEX_ON(dbenv) ((dbenv)->mutex_handle != NULL)
+#define REP_ON(dbenv) \
+ ((dbenv)->rep_handle != NULL && (dbenv)->rep_handle->region != NULL)
+#define RPC_ON(dbenv) ((dbenv)->cl_handle != NULL)
+#define TXN_ON(dbenv) ((dbenv)->tx_handle != NULL)
+
+/*
+ * STD_LOCKING Standard locking, that is, locking was configured and CDB
+ * was not. We do not do locking in off-page duplicate trees,
+ * so we check for that in the cursor first.
+ */
+#define STD_LOCKING(dbc) \
+ (!F_ISSET(dbc, DBC_OPD) && \
+ !CDB_LOCKING((dbc)->dbp->dbenv) && LOCKING_ON((dbc)->dbp->dbenv))
+
+/*
+ * IS_RECOVERING: The system is running recovery.
+ */
+#define IS_RECOVERING(dbenv) \
+ (LOGGING_ON(dbenv) && F_ISSET((dbenv)->lg_handle, DBLOG_RECOVER))
+
+/* Initialization methods are often illegal before/after open is called. */
+#define ENV_ILLEGAL_AFTER_OPEN(dbenv, name) \
+ if (F_ISSET((dbenv), DB_ENV_OPEN_CALLED)) \
+ return (__db_mi_open(dbenv, name, 1));
+#define ENV_ILLEGAL_BEFORE_OPEN(dbenv, name) \
+ if (!F_ISSET((dbenv), DB_ENV_OPEN_CALLED)) \
+ return (__db_mi_open(dbenv, name, 0));
+
+/* We're not actually user hostile, honest. */
+#define ENV_REQUIRES_CONFIG(dbenv, handle, i, flags) \
+ if (handle == NULL) \
+ return (__db_env_config(dbenv, i, flags));
+#define ENV_REQUIRES_CONFIG_XX(dbenv, handle, i, flags) \
+ if ((dbenv)->handle->region == NULL) \
+ return (__db_env_config(dbenv, i, flags));
+#define ENV_NOT_CONFIGURED(dbenv, handle, i, flags) \
+ if (F_ISSET((dbenv), DB_ENV_OPEN_CALLED)) \
+ ENV_REQUIRES_CONFIG(dbenv, handle, i, flags)
+
+#define ENV_ENTER(dbenv, ip) do { \
+ int __ret; \
+ if ((dbenv)->thr_hashtab == NULL) \
+ ip = NULL; \
+ else { \
+ if ((__ret = \
+ __env_set_state(dbenv, &(ip), THREAD_ACTIVE)) != 0) \
+ return (__ret); \
+ } \
+} while (0)
+
+#ifdef DIAGNOSTIC
+#define ENV_LEAVE(dbenv, ip) do { \
+ if ((ip) != NULL) { \
+ DB_ASSERT(dbenv, (ip)->dbth_state == THREAD_ACTIVE); \
+ (ip)->dbth_state = THREAD_OUT; \
+ } \
+} while (0)
+#else
+#define ENV_LEAVE(dbenv, ip) do { \
+ if ((ip) != NULL) \
+ (ip)->dbth_state = THREAD_OUT; \
+} while (0)
+#endif
+#ifdef DIAGNOSTIC
+#define CHECK_THREAD(dbenv) do { \
+ DB_THREAD_INFO *__ip; \
+ if ((dbenv)->thr_hashtab != NULL) { \
+ (void)__env_set_state(dbenv, &__ip, THREAD_DIAGNOSTIC); \
+ DB_ASSERT(dbenv, \
+ __ip != NULL && __ip->dbth_state != THREAD_OUT); \
+ } \
+} while (0)
+#ifdef HAVE_STATISTICS
+#define CHECK_MTX_THREAD(dbenv, mtx) do { \
+ if (mtx->alloc_id != MTX_MUTEX_REGION && \
+ mtx->alloc_id != MTX_ENV_REGION && \
+ mtx->alloc_id != MTX_APPLICATION) \
+ CHECK_THREAD(dbenv); \
+} while (0)
+#else
+#define CHECK_MTX_THREAD(dbenv, mtx)
+#endif
+#else
+#define CHECK_THREAD(dbenv)
+#define CHECK_MTX_THREAD(dbenv, mtx)
+#endif
+
+typedef enum {
+ THREAD_SLOT_NOT_IN_USE=0,
+ THREAD_OUT,
+ THREAD_ACTIVE,
+ THREAD_BLOCKED
+#ifdef DIAGNOSTIC
+ , THREAD_DIAGNOSTIC
+#endif
+} DB_THREAD_STATE;
+
+typedef struct __db_thread_info {
+ pid_t dbth_pid;
+ db_threadid_t dbth_tid;
+ DB_THREAD_STATE dbth_state;
+ SH_TAILQ_ENTRY dbth_links;
+} DB_THREAD_INFO;
+
+typedef struct __env_thread_info {
+ u_int32_t thr_count;
+ u_int32_t thr_max;
+ u_int32_t thr_nbucket;
+ roff_t thr_hashoff;
+} THREAD_INFO;
+
+#define DB_EVENT(dbenv, e, einfo) do { \
+ if ((dbenv)->db_event_func != NULL) \
+ (dbenv)->db_event_func(dbenv, e, einfo); \
+} while (0)
+
+/*******************************************************
+ * Database Access Methods.
+ *******************************************************/
+/*
+ * DB_IS_THREADED --
+ * The database handle is free-threaded (was opened with DB_THREAD).
+ */
+#define DB_IS_THREADED(dbp) \
+ ((dbp)->mutex != MUTEX_INVALID)
+
+/* Initialization methods are often illegal before/after open is called. */
+#define DB_ILLEGAL_AFTER_OPEN(dbp, name) \
+ if (F_ISSET((dbp), DB_AM_OPEN_CALLED)) \
+ return (__db_mi_open((dbp)->dbenv, name, 1));
+#define DB_ILLEGAL_BEFORE_OPEN(dbp, name) \
+ if (!F_ISSET((dbp), DB_AM_OPEN_CALLED)) \
+ return (__db_mi_open((dbp)->dbenv, name, 0));
+/* Some initialization methods are illegal if environment isn't local. */
+#define DB_ILLEGAL_IN_ENV(dbp, name) \
+ if (!F_ISSET((dbp)->dbenv, DB_ENV_DBLOCAL)) \
+ return (__db_mi_env((dbp)->dbenv, name));
+#define DB_ILLEGAL_METHOD(dbp, flags) { \
+ int __ret; \
+ if ((__ret = __dbh_am_chk(dbp, flags)) != 0) \
+ return (__ret); \
+}
+
+/*
+ * Common DBC->internal fields. Each access method adds additional fields
+ * to this list, but the initial fields are common.
+ */
+#define __DBC_INTERNAL \
+ DBC *opd; /* Off-page duplicate cursor. */\
+ \
+ void *page; /* Referenced page. */ \
+ db_pgno_t root; /* Tree root. */ \
+ db_pgno_t pgno; /* Referenced page number. */ \
+ db_indx_t indx; /* Referenced key item index. */\
+ \
+ DB_LOCK lock; /* Cursor lock. */ \
+ db_lockmode_t lock_mode; /* Lock mode. */
+
+struct __dbc_internal {
+ __DBC_INTERNAL
+};
+
+/* Actions that __db_master_update can take. */
+typedef enum { MU_REMOVE, MU_RENAME, MU_OPEN } mu_action;
+
+/*
+ * Access-method-common macro for determining whether a cursor
+ * has been initialized.
+ */
+#define IS_INITIALIZED(dbc) ((dbc)->internal->pgno != PGNO_INVALID)
+
+/* Free the callback-allocated buffer, if necessary, hanging off of a DBT. */
+#define FREE_IF_NEEDED(dbenv, dbt) \
+ if (F_ISSET((dbt), DB_DBT_APPMALLOC)) { \
+ __os_ufree((dbenv), (dbt)->data); \
+ F_CLR((dbt), DB_DBT_APPMALLOC); \
+ }
+
+/*
+ * Use memory belonging to object "owner" to return the results of
+ * any no-DBT-flag get ops on cursor "dbc".
+ */
+#define SET_RET_MEM(dbc, owner) \
+ do { \
+ (dbc)->rskey = &(owner)->my_rskey; \
+ (dbc)->rkey = &(owner)->my_rkey; \
+ (dbc)->rdata = &(owner)->my_rdata; \
+ } while (0)
+
+/* Use the return-data memory src is currently set to use in dest as well. */
+#define COPY_RET_MEM(src, dest) \
+ do { \
+ (dest)->rskey = (src)->rskey; \
+ (dest)->rkey = (src)->rkey; \
+ (dest)->rdata = (src)->rdata; \
+ } while (0)
+
+/* Reset the returned-memory pointers to their defaults. */
+#define RESET_RET_MEM(dbc) \
+ do { \
+ (dbc)->rskey = &(dbc)->my_rskey; \
+ (dbc)->rkey = &(dbc)->my_rkey; \
+ (dbc)->rdata = &(dbc)->my_rdata; \
+ } while (0)
+
+/*******************************************************
+ * Mpool.
+ *******************************************************/
+/*
+ * File types for DB access methods. Negative numbers are reserved to DB.
+ */
+#define DB_FTYPE_SET -1 /* Call pgin/pgout functions. */
+#define DB_FTYPE_NOTSET 0 /* Don't call... */
+#define DB_LSN_OFF_NOTSET -1 /* Not yet set. */
+#define DB_CLEARLEN_NOTSET UINT32_MAX /* Not yet set. */
+
+/* Structure used as the DB pgin/pgout pgcookie. */
+typedef struct __dbpginfo {
+ size_t db_pagesize; /* Underlying page size. */
+ u_int32_t flags; /* Some DB_AM flags needed. */
+ DBTYPE type; /* DB type */
+} DB_PGINFO;
+
+/*******************************************************
+ * Log.
+ *******************************************************/
+/* Initialize an LSN to 'zero'. */
+#define ZERO_LSN(LSN) do { \
+ (LSN).file = 0; \
+ (LSN).offset = 0; \
+} while (0)
+#define IS_ZERO_LSN(LSN) ((LSN).file == 0 && (LSN).offset == 0)
+
+#define IS_INIT_LSN(LSN) ((LSN).file == 1 && (LSN).offset == 0)
+#define INIT_LSN(LSN) do { \
+ (LSN).file = 1; \
+ (LSN).offset = 0; \
+} while (0)
+
+#define MAX_LSN(LSN) do { \
+ (LSN).file = UINT32_MAX; \
+ (LSN).offset = UINT32_MAX; \
+} while (0)
+#define IS_MAX_LSN(LSN) \
+ ((LSN).file == UINT32_MAX && (LSN).offset == UINT32_MAX)
+
+/* If logging is turned off, smash the lsn. */
+#define LSN_NOT_LOGGED(LSN) do { \
+ (LSN).file = 0; \
+ (LSN).offset = 1; \
+} while (0)
+#define IS_NOT_LOGGED_LSN(LSN) \
+ ((LSN).file == 0 && (LSN).offset == 1)
+
+/*
+ * LOG_COMPARE -- compare two LSNs.
+ */
+
+#define LOG_COMPARE(lsn0, lsn1) \
+ ((lsn0)->file != (lsn1)->file ? \
+ ((lsn0)->file < (lsn1)->file ? -1 : 1) : \
+ ((lsn0)->offset != (lsn1)->offset ? \
+ ((lsn0)->offset < (lsn1)->offset ? -1 : 1) : 0))
+
+/*******************************************************
+ * Txn.
+ *******************************************************/
+#define DB_NONBLOCK(C) ((C)->txn != NULL && F_ISSET((C)->txn, TXN_NOWAIT))
+#define NOWAIT_FLAG(txn) \
+ ((txn) != NULL && F_ISSET((txn), TXN_NOWAIT) ? DB_LOCK_NOWAIT : 0)
+#define IS_REAL_TXN(txn) \
+ ((txn) != NULL && !F_ISSET(txn, TXN_CDSGROUP))
+#define IS_SUBTRANSACTION(txn) \
+ ((txn) != NULL && (txn)->parent != NULL)
+
+/*******************************************************
+ * Crypto.
+ *******************************************************/
+#define DB_IV_BYTES 16 /* Bytes per IV */
+#define DB_MAC_KEY 20 /* Bytes per MAC checksum */
+
+/*******************************************************
+ * Secondaries over RPC.
+ *******************************************************/
+#ifdef CONFIG_TEST
+/*
+ * These are flags passed to DB->associate calls by the Tcl API if running
+ * over RPC. The RPC server will mask out these flags before making the real
+ * DB->associate call.
+ *
+ * These flags must coexist with the valid flags to DB->associate (currently
+ * DB_AUTO_COMMIT and DB_CREATE). DB_AUTO_COMMIT is in the group of
+ * high-order shared flags (0xff000000), and DB_CREATE is in the low-order
+ * group (0x00000fff), so we pick a range in between.
+ */
+#define DB_RPC2ND_MASK 0x00f00000 /* Reserved bits. */
+
+#define DB_RPC2ND_REVERSEDATA 0x00100000 /* callback_n(0) _s_reversedata. */
+#define DB_RPC2ND_NOOP 0x00200000 /* callback_n(1) _s_noop */
+#define DB_RPC2ND_CONCATKEYDATA 0x00300000 /* callback_n(2) _s_concatkeydata */
+#define DB_RPC2ND_CONCATDATAKEY 0x00400000 /* callback_n(3) _s_concatdatakey */
+#define DB_RPC2ND_REVERSECONCAT 0x00500000 /* callback_n(4) _s_reverseconcat */
+#define DB_RPC2ND_TRUNCDATA 0x00600000 /* callback_n(5) _s_truncdata */
+#define DB_RPC2ND_CONSTANT 0x00700000 /* callback_n(6) _s_constant */
+#define DB_RPC2ND_GETZIP 0x00800000 /* sj_getzip */
+#define DB_RPC2ND_GETNAME 0x00900000 /* sj_getname */
+#endif
+
+/*******************************************************
+ * Forward structure declarations.
+ *******************************************************/
+struct __db_reginfo_t; typedef struct __db_reginfo_t REGINFO;
+struct __db_txnhead; typedef struct __db_txnhead DB_TXNHEAD;
+struct __db_txnlist; typedef struct __db_txnlist DB_TXNLIST;
+struct __vrfy_childinfo;typedef struct __vrfy_childinfo VRFY_CHILDINFO;
+struct __vrfy_dbinfo; typedef struct __vrfy_dbinfo VRFY_DBINFO;
+struct __vrfy_pageinfo; typedef struct __vrfy_pageinfo VRFY_PAGEINFO;
+
+typedef SH_TAILQ_HEAD(__hash_head) DB_HASHTAB;
+
+#if defined(__cplusplus)
+}
+#endif
+
+/*******************************************************
+ * Remaining general DB includes.
+ *******************************************************/
+
+
+#include "dbinc/globals.h"
+#include "dbinc/clock.h"
+#include "dbinc/debug.h"
+#include "dbinc/region.h"
+#include "dbinc_auto/env_ext.h"
+#include "dbinc/mutex.h"
+#include "dbinc/os.h"
+#ifdef HAVE_REPLICATION_THREADS
+#include "dbinc/repmgr.h"
+#endif
+#include "dbinc/rep.h"
+#include "dbinc_auto/clib_ext.h"
+#include "dbinc_auto/common_ext.h"
+
+/*******************************************************
+ * Remaining Log.
+ * These need to be defined after the general includes
+ * because they need rep.h from above.
+ *******************************************************/
+/*
+ * Test if the environment is currently logging changes. If we're in recovery
+ * or we're a replication client, we don't need to log changes because they're
+ * already in the log, even though we have a fully functional log system.
+ */
+#define DBENV_LOGGING(dbenv) \
+ (LOGGING_ON(dbenv) && !IS_REP_CLIENT(dbenv) && \
+ (!IS_RECOVERING(dbenv)))
+
+/*
+ * Test if we need to log a change. By default, we don't log operations without
+ * associated transactions, unless DIAGNOSTIC, DEBUG_ROP or DEBUG_WOP are on.
+ * This is because we want to get log records for read/write operations, and, if
+ * we are trying to debug something, more information is always better.
+ *
+ * The DBC_RECOVER flag is set when we're in abort, as well as during recovery;
+ * thus DBC_LOGGING may be false for a particular dbc even when DBENV_LOGGING
+ * is true.
+ *
+ * We explicitly use LOGGING_ON/IS_REP_CLIENT here because we don't want to pull
+ * in the log headers, which IS_RECOVERING (and thus DBENV_LOGGING) rely on, and
+ * because DBC_RECOVER should be set anytime IS_RECOVERING would be true.
+ *
+ * If we're not in recovery (master - doing an abort or a client applying
+ * a txn), then a client's only path through here is on an internal
+ * operation, and a master's only path through here is a transactional
+ * operation. Detect if either is not the case.
+ */
+#if defined(DIAGNOSTIC) || defined(DEBUG_ROP) || defined(DEBUG_WOP)
+#define DBC_LOGGING(dbc) __dbc_logging(dbc)
+#else
+#define DBC_LOGGING(dbc) \
+ ((dbc)->txn != NULL && LOGGING_ON((dbc)->dbp->dbenv) && \
+ !F_ISSET((dbc), DBC_RECOVER) && !IS_REP_CLIENT((dbc)->dbp->dbenv))
+#endif
+
+#endif /* !_DB_INT_H_ */
diff --git a/db/build_vxworks/BerkeleyDB/Makefile.component b/db/build_vxworks/BerkeleyDB/Makefile.component
deleted file mode 100644
index 5b2492388..000000000
--- a/db/build_vxworks/BerkeleyDB/Makefile.component
+++ /dev/null
@@ -1,2060 +0,0 @@
-# Component project makefile generated by the project manager
-#
-
-
-## core information
-
-
-CONFIGLETTE = compConfig.c
-TGT_DIR = $(WIND_BASE)/target
-EXTERNAL_BINARIES_DIR = $(PRJ_DIR)/extbin/$(BUILD_SPEC)
-COMPONENT_NAME = BerkeleyDB
-.PHONY: defaultTarget
-defaultTarget: $(COMPONENT_NAME).cm
-
-#
-# default definition for CPU and TOOL (needed by defs.project)
-#
-
-CPU = PENTIUM2
-TOOL = gnu
-
-
-## CPU and TOOL info for build specification 'PENTIUMgnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUMgnu.debug)
-CPU = PENTIUM
-TOOL = gnu
-SYS_OBJ_DIR = $(WIND_BASE)/target/lib/obj$(CPU)$(TOOL)vx
-USER_OBJ_DIR = $(WIND_BASE)/target/user/objs/obj$(CPU)$(TOOL)
-PRJ_OBJS = bt_compare.o \
- bt_conv.o \
- bt_curadj.o \
- bt_cursor.o \
- bt_delete.o \
- bt_method.o \
- bt_open.o \
- bt_put.o \
- bt_rec.o \
- bt_reclaim.o \
- bt_recno.o \
- bt_rsearch.o \
- bt_search.o \
- bt_split.o \
- bt_stat.o \
- bt_upgrade.o \
- bt_verify.o \
- btree_auto.o \
- getopt.o \
- snprintf.o \
- strcasecmp.o \
- vsnprintf.o \
- db_byteorder.o \
- db_err.o \
- db_getlong.o \
- db_log2.o \
- util_log.o \
- util_sig.o \
- crdel_auto.o \
- crdel_rec.o \
- db.o \
- db_am.o \
- db_auto.o \
- db_cam.o \
- db_conv.o \
- db_dispatch.o \
- db_dup.o \
- db_iface.o \
- db_join.o \
- db_meta.o \
- db_method.o \
- db_overflow.o \
- db_pr.o \
- db_rec.o \
- db_reclaim.o \
- db_ret.o \
- db_upg.o \
- db_upg_opd.o \
- db_vrfy.o \
- db_vrfyutil.o \
- db_salloc.o \
- db_shash.o \
- env_method.o \
- env_open.o \
- env_recover.o \
- env_region.o \
- hash.o \
- hash_auto.o \
- hash_conv.o \
- hash_dup.o \
- hash_func.o \
- hash_meta.o \
- hash_method.o \
- hash_page.o \
- hash_rec.o \
- hash_reclaim.o \
- hash_stat.o \
- hash_upgrade.o \
- hash_verify.o \
- hsearch.o \
- lock.o \
- lock_deadlock.o \
- lock_method.o \
- lock_region.o \
- lock_stat.o \
- lock_util.o \
- log.o \
- log_archive.o \
- log_auto.o \
- log_compare.o \
- log_findckp.o \
- log_get.o \
- log_method.o \
- log_put.o \
- log_rec.o \
- log_register.o \
- mp_alloc.o \
- mp_bh.o \
- mp_fget.o \
- mp_fopen.o \
- mp_fput.o \
- mp_fset.o \
- mp_method.o \
- mp_region.o \
- mp_register.o \
- mp_stat.o \
- mp_sync.o \
- mp_trickle.o \
- mut_tas.o \
- mutex.o \
- os_alloc.o \
- os_clock.o \
- os_dir.o \
- os_errno.o \
- os_fid.o \
- os_fsync.o \
- os_handle.o \
- os_method.o \
- os_oflags.o \
- os_open.o \
- os_region.o \
- os_rename.o \
- os_root.o \
- os_rpath.o \
- os_rw.o \
- os_seek.o \
- os_sleep.o \
- os_spin.o \
- os_stat.o \
- os_tmpdir.o \
- os_unlink.o \
- os_vx_abs.o \
- os_vx_finit.o \
- os_vx_map.o \
- qam.o \
- qam_auto.o \
- qam_conv.o \
- qam_files.o \
- qam_method.o \
- qam_open.o \
- qam_rec.o \
- qam_stat.o \
- qam_upgrade.o \
- qam_verify.o \
- rep_method.o \
- rep_record.o \
- rep_region.o \
- rep_util.o \
- client.o \
- db_server_clnt.o \
- gen_client.o \
- gen_client_ret.o \
- db_server_xdr.o \
- txn.o \
- txn_auto.o \
- txn_method.o \
- txn_rec.o \
- txn_recover.o \
- txn_region.o \
- txn_stat.o \
- xa.o \
- xa_db.o \
- xa_map.o \
- compConfig.o \
- util_arg.o
-COMPONENT_OBJS = bt_compare.o \
- bt_conv.o \
- bt_curadj.o \
- bt_cursor.o \
- bt_delete.o \
- bt_method.o \
- bt_open.o \
- bt_put.o \
- bt_rec.o \
- bt_reclaim.o \
- bt_recno.o \
- bt_rsearch.o \
- bt_search.o \
- bt_split.o \
- bt_stat.o \
- bt_upgrade.o \
- bt_verify.o \
- btree_auto.o \
- client.o \
- crdel_auto.o \
- crdel_rec.o \
- db.o \
- db_am.o \
- db_auto.o \
- db_byteorder.o \
- db_cam.o \
- db_conv.o \
- db_dispatch.o \
- db_dup.o \
- db_err.o \
- db_getlong.o \
- db_iface.o \
- db_join.o \
- db_log2.o \
- db_meta.o \
- db_method.o \
- db_overflow.o \
- db_pr.o \
- db_rec.o \
- db_reclaim.o \
- db_ret.o \
- db_salloc.o \
- db_server_clnt.o \
- db_server_xdr.o \
- db_shash.o \
- db_upg.o \
- db_upg_opd.o \
- db_vrfy.o \
- db_vrfyutil.o \
- env_method.o \
- env_open.o \
- env_recover.o \
- env_region.o \
- gen_client.o \
- gen_client_ret.o \
- getopt.o \
- hash.o \
- hash_auto.o \
- hash_conv.o \
- hash_dup.o \
- hash_func.o \
- hash_meta.o \
- hash_method.o \
- hash_page.o \
- hash_rec.o \
- hash_reclaim.o \
- hash_stat.o \
- hash_upgrade.o \
- hash_verify.o \
- hsearch.o \
- lock.o \
- lock_deadlock.o \
- lock_method.o \
- lock_region.o \
- lock_stat.o \
- lock_util.o \
- log.o \
- log_archive.o \
- log_auto.o \
- log_compare.o \
- log_findckp.o \
- log_get.o \
- log_method.o \
- log_put.o \
- log_rec.o \
- log_register.o \
- mp_alloc.o \
- mp_bh.o \
- mp_fget.o \
- mp_fopen.o \
- mp_fput.o \
- mp_fset.o \
- mp_method.o \
- mp_region.o \
- mp_register.o \
- mp_stat.o \
- mp_sync.o \
- mp_trickle.o \
- mut_tas.o \
- mutex.o \
- os_alloc.o \
- os_clock.o \
- os_dir.o \
- os_errno.o \
- os_fid.o \
- os_fsync.o \
- os_handle.o \
- os_method.o \
- os_oflags.o \
- os_open.o \
- os_region.o \
- os_rename.o \
- os_root.o \
- os_rpath.o \
- os_rw.o \
- os_seek.o \
- os_sleep.o \
- os_spin.o \
- os_stat.o \
- os_tmpdir.o \
- os_unlink.o \
- os_vx_abs.o \
- os_vx_finit.o \
- os_vx_map.o \
- qam.o \
- qam_auto.o \
- qam_conv.o \
- qam_files.o \
- qam_method.o \
- qam_open.o \
- qam_rec.o \
- qam_stat.o \
- qam_upgrade.o \
- qam_verify.o \
- rep_method.o \
- rep_record.o \
- rep_region.o \
- rep_util.o \
- snprintf.o \
- strcasecmp.o \
- txn.o \
- txn_auto.o \
- txn_method.o \
- txn_rec.o \
- txn_recover.o \
- txn_region.o \
- txn_stat.o \
- util_arg.o \
- util_log.o \
- util_sig.o \
- vsnprintf.o \
- xa.o \
- xa_db.o \
- xa_map.o
-DEPENDENCY_FILES = bt_compare.d \
- bt_conv.d \
- bt_curadj.d \
- bt_cursor.d \
- bt_delete.d \
- bt_method.d \
- bt_open.d \
- bt_put.d \
- bt_rec.d \
- bt_reclaim.d \
- bt_recno.d \
- bt_rsearch.d \
- bt_search.d \
- bt_split.d \
- bt_stat.d \
- bt_upgrade.d \
- bt_verify.d \
- btree_auto.d \
- getopt.d \
- snprintf.d \
- strcasecmp.d \
- vsnprintf.d \
- db_byteorder.d \
- db_err.d \
- db_getlong.d \
- db_log2.d \
- util_log.d \
- util_sig.d \
- crdel_auto.d \
- crdel_rec.d \
- db.d \
- db_am.d \
- db_auto.d \
- db_cam.d \
- db_conv.d \
- db_dispatch.d \
- db_dup.d \
- db_iface.d \
- db_join.d \
- db_meta.d \
- db_method.d \
- db_overflow.d \
- db_pr.d \
- db_rec.d \
- db_reclaim.d \
- db_ret.d \
- db_upg.d \
- db_upg_opd.d \
- db_vrfy.d \
- db_vrfyutil.d \
- db_salloc.d \
- db_shash.d \
- env_method.d \
- env_open.d \
- env_recover.d \
- env_region.d \
- hash.d \
- hash_auto.d \
- hash_conv.d \
- hash_dup.d \
- hash_func.d \
- hash_meta.d \
- hash_method.d \
- hash_page.d \
- hash_rec.d \
- hash_reclaim.d \
- hash_stat.d \
- hash_upgrade.d \
- hash_verify.d \
- hsearch.d \
- lock.d \
- lock_deadlock.d \
- lock_method.d \
- lock_region.d \
- lock_stat.d \
- lock_util.d \
- log.d \
- log_archive.d \
- log_auto.d \
- log_compare.d \
- log_findckp.d \
- log_get.d \
- log_method.d \
- log_put.d \
- log_rec.d \
- log_register.d \
- mp_alloc.d \
- mp_bh.d \
- mp_fget.d \
- mp_fopen.d \
- mp_fput.d \
- mp_fset.d \
- mp_method.d \
- mp_region.d \
- mp_register.d \
- mp_stat.d \
- mp_sync.d \
- mp_trickle.d \
- mut_tas.d \
- mutex.d \
- os_alloc.d \
- os_clock.d \
- os_dir.d \
- os_errno.d \
- os_fid.d \
- os_fsync.d \
- os_handle.d \
- os_method.d \
- os_oflags.d \
- os_open.d \
- os_region.d \
- os_rename.d \
- os_root.d \
- os_rpath.d \
- os_rw.d \
- os_seek.d \
- os_sleep.d \
- os_spin.d \
- os_stat.d \
- os_tmpdir.d \
- os_unlink.d \
- os_vx_abs.d \
- os_vx_finit.d \
- os_vx_map.d \
- qam.d \
- qam_auto.d \
- qam_conv.d \
- qam_files.d \
- qam_method.d \
- qam_open.d \
- qam_rec.d \
- qam_stat.d \
- qam_upgrade.d \
- qam_verify.d \
- rep_method.d \
- rep_record.d \
- rep_region.d \
- rep_util.d \
- client.d \
- db_server_clnt.d \
- gen_client.d \
- gen_client_ret.d \
- db_server_xdr.d \
- txn.d \
- txn_auto.d \
- txn_method.d \
- txn_rec.d \
- txn_recover.d \
- txn_region.d \
- txn_stat.d \
- xa.d \
- xa_db.d \
- xa_map.d \
- compConfig.d \
- util_arg.d
-NUMBER_OF_COMPONENT_OBJS = $(words $(COMPONENT_OBJS))
-endif
-
-
-## CPU and TOOL info for build specification 'PENTIUM2gnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.debug)
-CPU = PENTIUM2
-TOOL = gnu
-SYS_OBJ_DIR = $(WIND_BASE)/target/lib/obj$(CPU)$(TOOL)vx
-USER_OBJ_DIR = $(WIND_BASE)/target/user/objs/obj$(CPU)$(TOOL)
-PRJ_OBJS = bt_compare.o \
- bt_conv.o \
- bt_curadj.o \
- bt_cursor.o \
- bt_delete.o \
- bt_method.o \
- bt_open.o \
- bt_put.o \
- bt_rec.o \
- bt_reclaim.o \
- bt_recno.o \
- bt_rsearch.o \
- bt_search.o \
- bt_split.o \
- bt_stat.o \
- bt_upgrade.o \
- bt_verify.o \
- btree_auto.o \
- getopt.o \
- snprintf.o \
- strcasecmp.o \
- vsnprintf.o \
- db_byteorder.o \
- db_err.o \
- db_getlong.o \
- db_log2.o \
- util_log.o \
- util_sig.o \
- crdel_auto.o \
- crdel_rec.o \
- db.o \
- db_am.o \
- db_auto.o \
- db_cam.o \
- db_conv.o \
- db_dispatch.o \
- db_dup.o \
- db_iface.o \
- db_join.o \
- db_meta.o \
- db_method.o \
- db_overflow.o \
- db_pr.o \
- db_rec.o \
- db_reclaim.o \
- db_ret.o \
- db_upg.o \
- db_upg_opd.o \
- db_vrfy.o \
- db_vrfyutil.o \
- db_salloc.o \
- db_shash.o \
- env_method.o \
- env_open.o \
- env_recover.o \
- env_region.o \
- hash.o \
- hash_auto.o \
- hash_conv.o \
- hash_dup.o \
- hash_func.o \
- hash_meta.o \
- hash_method.o \
- hash_page.o \
- hash_rec.o \
- hash_reclaim.o \
- hash_stat.o \
- hash_upgrade.o \
- hash_verify.o \
- hsearch.o \
- lock.o \
- lock_deadlock.o \
- lock_method.o \
- lock_region.o \
- lock_stat.o \
- lock_util.o \
- log.o \
- log_archive.o \
- log_auto.o \
- log_compare.o \
- log_findckp.o \
- log_get.o \
- log_method.o \
- log_put.o \
- log_rec.o \
- log_register.o \
- mp_alloc.o \
- mp_bh.o \
- mp_fget.o \
- mp_fopen.o \
- mp_fput.o \
- mp_fset.o \
- mp_method.o \
- mp_region.o \
- mp_register.o \
- mp_stat.o \
- mp_sync.o \
- mp_trickle.o \
- mut_tas.o \
- mutex.o \
- os_alloc.o \
- os_clock.o \
- os_dir.o \
- os_errno.o \
- os_fid.o \
- os_fsync.o \
- os_handle.o \
- os_method.o \
- os_oflags.o \
- os_open.o \
- os_region.o \
- os_rename.o \
- os_root.o \
- os_rpath.o \
- os_rw.o \
- os_seek.o \
- os_sleep.o \
- os_spin.o \
- os_stat.o \
- os_tmpdir.o \
- os_unlink.o \
- os_vx_abs.o \
- os_vx_finit.o \
- os_vx_map.o \
- qam.o \
- qam_auto.o \
- qam_conv.o \
- qam_files.o \
- qam_method.o \
- qam_open.o \
- qam_rec.o \
- qam_stat.o \
- qam_upgrade.o \
- qam_verify.o \
- rep_method.o \
- rep_record.o \
- rep_region.o \
- rep_util.o \
- client.o \
- db_server_clnt.o \
- gen_client.o \
- gen_client_ret.o \
- db_server_xdr.o \
- txn.o \
- txn_auto.o \
- txn_method.o \
- txn_rec.o \
- txn_recover.o \
- txn_region.o \
- txn_stat.o \
- xa.o \
- xa_db.o \
- xa_map.o \
- compConfig.o \
- util_arg.o
-COMPONENT_OBJS = bt_compare.o \
- bt_conv.o \
- bt_curadj.o \
- bt_cursor.o \
- bt_delete.o \
- bt_method.o \
- bt_open.o \
- bt_put.o \
- bt_rec.o \
- bt_reclaim.o \
- bt_recno.o \
- bt_rsearch.o \
- bt_search.o \
- bt_split.o \
- bt_stat.o \
- bt_upgrade.o \
- bt_verify.o \
- btree_auto.o \
- client.o \
- crdel_auto.o \
- crdel_rec.o \
- db.o \
- db_am.o \
- db_auto.o \
- db_byteorder.o \
- db_cam.o \
- db_conv.o \
- db_dispatch.o \
- db_dup.o \
- db_err.o \
- db_getlong.o \
- db_iface.o \
- db_join.o \
- db_log2.o \
- db_meta.o \
- db_method.o \
- db_overflow.o \
- db_pr.o \
- db_rec.o \
- db_reclaim.o \
- db_ret.o \
- db_salloc.o \
- db_server_clnt.o \
- db_server_xdr.o \
- db_shash.o \
- db_upg.o \
- db_upg_opd.o \
- db_vrfy.o \
- db_vrfyutil.o \
- env_method.o \
- env_open.o \
- env_recover.o \
- env_region.o \
- gen_client.o \
- gen_client_ret.o \
- getopt.o \
- hash.o \
- hash_auto.o \
- hash_conv.o \
- hash_dup.o \
- hash_func.o \
- hash_meta.o \
- hash_method.o \
- hash_page.o \
- hash_rec.o \
- hash_reclaim.o \
- hash_stat.o \
- hash_upgrade.o \
- hash_verify.o \
- hsearch.o \
- lock.o \
- lock_deadlock.o \
- lock_method.o \
- lock_region.o \
- lock_stat.o \
- lock_util.o \
- log.o \
- log_archive.o \
- log_auto.o \
- log_compare.o \
- log_findckp.o \
- log_get.o \
- log_method.o \
- log_put.o \
- log_rec.o \
- log_register.o \
- mp_alloc.o \
- mp_bh.o \
- mp_fget.o \
- mp_fopen.o \
- mp_fput.o \
- mp_fset.o \
- mp_method.o \
- mp_region.o \
- mp_register.o \
- mp_stat.o \
- mp_sync.o \
- mp_trickle.o \
- mut_tas.o \
- mutex.o \
- os_alloc.o \
- os_clock.o \
- os_dir.o \
- os_errno.o \
- os_fid.o \
- os_fsync.o \
- os_handle.o \
- os_method.o \
- os_oflags.o \
- os_open.o \
- os_region.o \
- os_rename.o \
- os_root.o \
- os_rpath.o \
- os_rw.o \
- os_seek.o \
- os_sleep.o \
- os_spin.o \
- os_stat.o \
- os_tmpdir.o \
- os_unlink.o \
- os_vx_abs.o \
- os_vx_finit.o \
- os_vx_map.o \
- qam.o \
- qam_auto.o \
- qam_conv.o \
- qam_files.o \
- qam_method.o \
- qam_open.o \
- qam_rec.o \
- qam_stat.o \
- qam_upgrade.o \
- qam_verify.o \
- rep_method.o \
- rep_record.o \
- rep_region.o \
- rep_util.o \
- snprintf.o \
- strcasecmp.o \
- txn.o \
- txn_auto.o \
- txn_method.o \
- txn_rec.o \
- txn_recover.o \
- txn_region.o \
- txn_stat.o \
- util_arg.o \
- util_log.o \
- util_sig.o \
- vsnprintf.o \
- xa.o \
- xa_db.o \
- xa_map.o
-DEPENDENCY_FILES = bt_compare.d \
- bt_conv.d \
- bt_curadj.d \
- bt_cursor.d \
- bt_delete.d \
- bt_method.d \
- bt_open.d \
- bt_put.d \
- bt_rec.d \
- bt_reclaim.d \
- bt_recno.d \
- bt_rsearch.d \
- bt_search.d \
- bt_split.d \
- bt_stat.d \
- bt_upgrade.d \
- bt_verify.d \
- btree_auto.d \
- getopt.d \
- snprintf.d \
- strcasecmp.d \
- vsnprintf.d \
- db_byteorder.d \
- db_err.d \
- db_getlong.d \
- db_log2.d \
- util_log.d \
- util_sig.d \
- crdel_auto.d \
- crdel_rec.d \
- db.d \
- db_am.d \
- db_auto.d \
- db_cam.d \
- db_conv.d \
- db_dispatch.d \
- db_dup.d \
- db_iface.d \
- db_join.d \
- db_meta.d \
- db_method.d \
- db_overflow.d \
- db_pr.d \
- db_rec.d \
- db_reclaim.d \
- db_ret.d \
- db_upg.d \
- db_upg_opd.d \
- db_vrfy.d \
- db_vrfyutil.d \
- db_salloc.d \
- db_shash.d \
- env_method.d \
- env_open.d \
- env_recover.d \
- env_region.d \
- hash.d \
- hash_auto.d \
- hash_conv.d \
- hash_dup.d \
- hash_func.d \
- hash_meta.d \
- hash_method.d \
- hash_page.d \
- hash_rec.d \
- hash_reclaim.d \
- hash_stat.d \
- hash_upgrade.d \
- hash_verify.d \
- hsearch.d \
- lock.d \
- lock_deadlock.d \
- lock_method.d \
- lock_region.d \
- lock_stat.d \
- lock_util.d \
- log.d \
- log_archive.d \
- log_auto.d \
- log_compare.d \
- log_findckp.d \
- log_get.d \
- log_method.d \
- log_put.d \
- log_rec.d \
- log_register.d \
- mp_alloc.d \
- mp_bh.d \
- mp_fget.d \
- mp_fopen.d \
- mp_fput.d \
- mp_fset.d \
- mp_method.d \
- mp_region.d \
- mp_register.d \
- mp_stat.d \
- mp_sync.d \
- mp_trickle.d \
- mut_tas.d \
- mutex.d \
- os_alloc.d \
- os_clock.d \
- os_dir.d \
- os_errno.d \
- os_fid.d \
- os_fsync.d \
- os_handle.d \
- os_method.d \
- os_oflags.d \
- os_open.d \
- os_region.d \
- os_rename.d \
- os_root.d \
- os_rpath.d \
- os_rw.d \
- os_seek.d \
- os_sleep.d \
- os_spin.d \
- os_stat.d \
- os_tmpdir.d \
- os_unlink.d \
- os_vx_abs.d \
- os_vx_finit.d \
- os_vx_map.d \
- qam.d \
- qam_auto.d \
- qam_conv.d \
- qam_files.d \
- qam_method.d \
- qam_open.d \
- qam_rec.d \
- qam_stat.d \
- qam_upgrade.d \
- qam_verify.d \
- rep_method.d \
- rep_record.d \
- rep_region.d \
- rep_util.d \
- client.d \
- db_server_clnt.d \
- gen_client.d \
- gen_client_ret.d \
- db_server_xdr.d \
- txn.d \
- txn_auto.d \
- txn_method.d \
- txn_rec.d \
- txn_recover.d \
- txn_region.d \
- txn_stat.d \
- xa.d \
- xa_db.d \
- xa_map.d \
- compConfig.d \
- util_arg.d
-NUMBER_OF_COMPONENT_OBJS = $(words $(COMPONENT_OBJS))
-endif
-
-
-## CPU and TOOL info for build specification 'PENTIUM2gnu.release'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.release)
-CPU = PENTIUM2
-TOOL = gnu
-SYS_OBJ_DIR = $(WIND_BASE)/target/lib/obj$(CPU)$(TOOL)vx
-USER_OBJ_DIR = $(WIND_BASE)/target/user/objs/obj$(CPU)$(TOOL)
-PRJ_OBJS = bt_compare.o \
- bt_conv.o \
- bt_curadj.o \
- bt_cursor.o \
- bt_delete.o \
- bt_method.o \
- bt_open.o \
- bt_put.o \
- bt_rec.o \
- bt_reclaim.o \
- bt_recno.o \
- bt_rsearch.o \
- bt_search.o \
- bt_split.o \
- bt_stat.o \
- bt_upgrade.o \
- bt_verify.o \
- btree_auto.o \
- getopt.o \
- snprintf.o \
- strcasecmp.o \
- vsnprintf.o \
- db_byteorder.o \
- db_err.o \
- db_getlong.o \
- db_log2.o \
- util_log.o \
- util_sig.o \
- crdel_auto.o \
- crdel_rec.o \
- db.o \
- db_am.o \
- db_auto.o \
- db_cam.o \
- db_conv.o \
- db_dispatch.o \
- db_dup.o \
- db_iface.o \
- db_join.o \
- db_meta.o \
- db_method.o \
- db_overflow.o \
- db_pr.o \
- db_rec.o \
- db_reclaim.o \
- db_ret.o \
- db_upg.o \
- db_upg_opd.o \
- db_vrfy.o \
- db_vrfyutil.o \
- db_salloc.o \
- db_shash.o \
- env_method.o \
- env_open.o \
- env_recover.o \
- env_region.o \
- hash.o \
- hash_auto.o \
- hash_conv.o \
- hash_dup.o \
- hash_func.o \
- hash_meta.o \
- hash_method.o \
- hash_page.o \
- hash_rec.o \
- hash_reclaim.o \
- hash_stat.o \
- hash_upgrade.o \
- hash_verify.o \
- hsearch.o \
- lock.o \
- lock_deadlock.o \
- lock_method.o \
- lock_region.o \
- lock_stat.o \
- lock_util.o \
- log.o \
- log_archive.o \
- log_auto.o \
- log_compare.o \
- log_findckp.o \
- log_get.o \
- log_method.o \
- log_put.o \
- log_rec.o \
- log_register.o \
- mp_alloc.o \
- mp_bh.o \
- mp_fget.o \
- mp_fopen.o \
- mp_fput.o \
- mp_fset.o \
- mp_method.o \
- mp_region.o \
- mp_register.o \
- mp_stat.o \
- mp_sync.o \
- mp_trickle.o \
- mut_tas.o \
- mutex.o \
- os_alloc.o \
- os_clock.o \
- os_dir.o \
- os_errno.o \
- os_fid.o \
- os_fsync.o \
- os_handle.o \
- os_method.o \
- os_oflags.o \
- os_open.o \
- os_region.o \
- os_rename.o \
- os_root.o \
- os_rpath.o \
- os_rw.o \
- os_seek.o \
- os_sleep.o \
- os_spin.o \
- os_stat.o \
- os_tmpdir.o \
- os_unlink.o \
- os_vx_abs.o \
- os_vx_finit.o \
- os_vx_map.o \
- qam.o \
- qam_auto.o \
- qam_conv.o \
- qam_files.o \
- qam_method.o \
- qam_open.o \
- qam_rec.o \
- qam_stat.o \
- qam_upgrade.o \
- qam_verify.o \
- rep_method.o \
- rep_record.o \
- rep_region.o \
- rep_util.o \
- client.o \
- db_server_clnt.o \
- gen_client.o \
- gen_client_ret.o \
- db_server_xdr.o \
- txn.o \
- txn_auto.o \
- txn_method.o \
- txn_rec.o \
- txn_recover.o \
- txn_region.o \
- txn_stat.o \
- xa.o \
- xa_db.o \
- xa_map.o \
- compConfig.o \
- util_arg.o
-COMPONENT_OBJS = bt_compare.o \
- bt_conv.o \
- bt_curadj.o \
- bt_cursor.o \
- bt_delete.o \
- bt_method.o \
- bt_open.o \
- bt_put.o \
- bt_rec.o \
- bt_reclaim.o \
- bt_recno.o \
- bt_rsearch.o \
- bt_search.o \
- bt_split.o \
- bt_stat.o \
- bt_upgrade.o \
- bt_verify.o \
- btree_auto.o \
- client.o \
- crdel_auto.o \
- crdel_rec.o \
- db.o \
- db_am.o \
- db_auto.o \
- db_byteorder.o \
- db_cam.o \
- db_conv.o \
- db_dispatch.o \
- db_dup.o \
- db_err.o \
- db_getlong.o \
- db_iface.o \
- db_join.o \
- db_log2.o \
- db_meta.o \
- db_method.o \
- db_overflow.o \
- db_pr.o \
- db_rec.o \
- db_reclaim.o \
- db_ret.o \
- db_salloc.o \
- db_server_clnt.o \
- db_server_xdr.o \
- db_shash.o \
- db_upg.o \
- db_upg_opd.o \
- db_vrfy.o \
- db_vrfyutil.o \
- env_method.o \
- env_open.o \
- env_recover.o \
- env_region.o \
- gen_client.o \
- gen_client_ret.o \
- getopt.o \
- hash.o \
- hash_auto.o \
- hash_conv.o \
- hash_dup.o \
- hash_func.o \
- hash_meta.o \
- hash_method.o \
- hash_page.o \
- hash_rec.o \
- hash_reclaim.o \
- hash_stat.o \
- hash_upgrade.o \
- hash_verify.o \
- hsearch.o \
- lock.o \
- lock_deadlock.o \
- lock_method.o \
- lock_region.o \
- lock_stat.o \
- lock_util.o \
- log.o \
- log_archive.o \
- log_auto.o \
- log_compare.o \
- log_findckp.o \
- log_get.o \
- log_method.o \
- log_put.o \
- log_rec.o \
- log_register.o \
- mp_alloc.o \
- mp_bh.o \
- mp_fget.o \
- mp_fopen.o \
- mp_fput.o \
- mp_fset.o \
- mp_method.o \
- mp_region.o \
- mp_register.o \
- mp_stat.o \
- mp_sync.o \
- mp_trickle.o \
- mut_tas.o \
- mutex.o \
- os_alloc.o \
- os_clock.o \
- os_dir.o \
- os_errno.o \
- os_fid.o \
- os_fsync.o \
- os_handle.o \
- os_method.o \
- os_oflags.o \
- os_open.o \
- os_region.o \
- os_rename.o \
- os_root.o \
- os_rpath.o \
- os_rw.o \
- os_seek.o \
- os_sleep.o \
- os_spin.o \
- os_stat.o \
- os_tmpdir.o \
- os_unlink.o \
- os_vx_abs.o \
- os_vx_finit.o \
- os_vx_map.o \
- qam.o \
- qam_auto.o \
- qam_conv.o \
- qam_files.o \
- qam_method.o \
- qam_open.o \
- qam_rec.o \
- qam_stat.o \
- qam_upgrade.o \
- qam_verify.o \
- rep_method.o \
- rep_record.o \
- rep_region.o \
- rep_util.o \
- snprintf.o \
- strcasecmp.o \
- txn.o \
- txn_auto.o \
- txn_method.o \
- txn_rec.o \
- txn_recover.o \
- txn_region.o \
- txn_stat.o \
- util_arg.o \
- util_log.o \
- util_sig.o \
- vsnprintf.o \
- xa.o \
- xa_db.o \
- xa_map.o
-DEPENDENCY_FILES = bt_compare.d \
- bt_conv.d \
- bt_curadj.d \
- bt_cursor.d \
- bt_delete.d \
- bt_method.d \
- bt_open.d \
- bt_put.d \
- bt_rec.d \
- bt_reclaim.d \
- bt_recno.d \
- bt_rsearch.d \
- bt_search.d \
- bt_split.d \
- bt_stat.d \
- bt_upgrade.d \
- bt_verify.d \
- btree_auto.d \
- getopt.d \
- snprintf.d \
- strcasecmp.d \
- vsnprintf.d \
- db_byteorder.d \
- db_err.d \
- db_getlong.d \
- db_log2.d \
- util_log.d \
- util_sig.d \
- crdel_auto.d \
- crdel_rec.d \
- db.d \
- db_am.d \
- db_auto.d \
- db_cam.d \
- db_conv.d \
- db_dispatch.d \
- db_dup.d \
- db_iface.d \
- db_join.d \
- db_meta.d \
- db_method.d \
- db_overflow.d \
- db_pr.d \
- db_rec.d \
- db_reclaim.d \
- db_ret.d \
- db_upg.d \
- db_upg_opd.d \
- db_vrfy.d \
- db_vrfyutil.d \
- db_salloc.d \
- db_shash.d \
- env_method.d \
- env_open.d \
- env_recover.d \
- env_region.d \
- hash.d \
- hash_auto.d \
- hash_conv.d \
- hash_dup.d \
- hash_func.d \
- hash_meta.d \
- hash_method.d \
- hash_page.d \
- hash_rec.d \
- hash_reclaim.d \
- hash_stat.d \
- hash_upgrade.d \
- hash_verify.d \
- hsearch.d \
- lock.d \
- lock_deadlock.d \
- lock_method.d \
- lock_region.d \
- lock_stat.d \
- lock_util.d \
- log.d \
- log_archive.d \
- log_auto.d \
- log_compare.d \
- log_findckp.d \
- log_get.d \
- log_method.d \
- log_put.d \
- log_rec.d \
- log_register.d \
- mp_alloc.d \
- mp_bh.d \
- mp_fget.d \
- mp_fopen.d \
- mp_fput.d \
- mp_fset.d \
- mp_method.d \
- mp_region.d \
- mp_register.d \
- mp_stat.d \
- mp_sync.d \
- mp_trickle.d \
- mut_tas.d \
- mutex.d \
- os_alloc.d \
- os_clock.d \
- os_dir.d \
- os_errno.d \
- os_fid.d \
- os_fsync.d \
- os_handle.d \
- os_method.d \
- os_oflags.d \
- os_open.d \
- os_region.d \
- os_rename.d \
- os_root.d \
- os_rpath.d \
- os_rw.d \
- os_seek.d \
- os_sleep.d \
- os_spin.d \
- os_stat.d \
- os_tmpdir.d \
- os_unlink.d \
- os_vx_abs.d \
- os_vx_finit.d \
- os_vx_map.d \
- qam.d \
- qam_auto.d \
- qam_conv.d \
- qam_files.d \
- qam_method.d \
- qam_open.d \
- qam_rec.d \
- qam_stat.d \
- qam_upgrade.d \
- qam_verify.d \
- rep_method.d \
- rep_record.d \
- rep_region.d \
- rep_util.d \
- client.d \
- db_server_clnt.d \
- gen_client.d \
- gen_client_ret.d \
- db_server_xdr.d \
- txn.d \
- txn_auto.d \
- txn_method.d \
- txn_rec.d \
- txn_recover.d \
- txn_region.d \
- txn_stat.d \
- xa.d \
- xa_db.d \
- xa_map.d \
- compConfig.d \
- util_arg.d
-NUMBER_OF_COMPONENT_OBJS = $(words $(COMPONENT_OBJS))
-endif
-
-
-include $(TGT_DIR)/h/make/defs.project
-
-
-## build-configuration info for build specification 'PENTIUMgnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUMgnu.debug)
-
-## macros
-
-AR = arpentium
-AS = ccpentium
-CC = ccpentium
-CFLAGS = -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC
-CFLAGS_AS = -mcpu=pentium -march=pentium -ansi -g -nostdlib -fno-builtin -fno-defer-pop -P -x assembler-with-cpp -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM
-CPP = ccpentium -E -P
-CPPFILT = c++filtpentium --strip-underscores
-LD = ldpentium
-LDFLAGS = -X
-LDPARTIAL = ccpentium -B$(WIND_BASE)/host/$(WIND_HOST_TYPE)/lib/gcc-lib/ -nostdlib -r -Wl,-X
-LD_PARTIAL_FLAGS = -X -r
-NM = nmpentium -g
-OPTION_DEFINE_MACRO = -D
-OPTION_GENERATE_DEPENDENCY_FILE = -MD
-OPTION_INCLUDE_DIR = -I
-RELEASE = 0
-SIZE = sizepentium
-POST_BUILD_RULE =
-
-## end build-configuration info for build specification 'PENTIUMgnu.debug'
-
-endif
-
-
-## build-configuration info for build specification 'PENTIUM2gnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.debug)
-
-## macros
-
-AR = arpentium
-AS = ccpentium
-CC = ccpentium
-CFLAGS = -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC
-CFLAGS_AS = -mcpu=pentiumpro -march=pentiumpro -ansi -g -nostdlib -fno-builtin -fno-defer-pop -P -x assembler-with-cpp -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2
-CPP = ccpentium -E -P
-CPPFILT = c++filtpentium --strip-underscores
-LD = ldpentium
-LDFLAGS = -X
-LDPARTIAL = ccpentium -B$(WIND_BASE)/host/$(WIND_HOST_TYPE)/lib/gcc-lib/ -nostdlib -r -Wl,-X
-LD_PARTIAL_FLAGS = -X -r
-NM = nmpentium -g
-OPTION_DEFINE_MACRO = -D
-OPTION_GENERATE_DEPENDENCY_FILE = -MD
-OPTION_INCLUDE_DIR = -I
-RELEASE = 0
-SIZE = sizepentium
-POST_BUILD_RULE =
-
-## end build-configuration info for build specification 'PENTIUM2gnu.debug'
-
-endif
-
-
-## build-configuration info for build specification 'PENTIUM2gnu.release'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.release)
-
-## macros
-
-AR = arpentium
-AS = ccpentium
-CC = ccpentium
-CFLAGS = -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto
-CFLAGS_AS = -mcpu=pentiumpro -march=pentiumpro -ansi -O2 -nostdlib -fno-builtin -fno-defer-pop -P -x assembler-with-cpp -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2
-CPP = ccpentium -E -P
-CPPFILT = c++filtpentium --strip-underscores
-LD = ldpentium
-LDFLAGS = -X
-LDPARTIAL = ccpentium -B$(WIND_BASE)/host/$(WIND_HOST_TYPE)/lib/gcc-lib/ -nostdlib -r -Wl,-X
-LD_PARTIAL_FLAGS = -X -r
-NM = nmpentium -g
-OPTION_DEFINE_MACRO = -D
-OPTION_GENERATE_DEPENDENCY_FILE = -MD
-OPTION_INCLUDE_DIR = -I
-RELEASE = 1
-SIZE = sizepentium
-POST_BUILD_RULE =
-
-## end build-configuration info for build specification 'PENTIUM2gnu.release'
-
-endif
-
-# override make definitions only below this line
-
-
-# override make definitions only above this line
-
-include $(TGT_DIR)/h/make/rules.project
-
-
-#
-# Dummy target to force external make
-#
-
-FORCE_EXTERNAL_MAKE:
-
-
-
-#
-# Custom makefile
-#
-
-include $(PRJ_DIR)/Makefile.custom
-
-
-## build rules for build specification 'PENTIUMgnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUMgnu.debug)
-
-%.o : $(PRJ_DIR)/../../txn/%.c
- $(CC) -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC -c $<
-
-%.d : $(PRJ_DIR)/../../txn/%.c
- ccpentium -E -P -M -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC $< > $@
-
-%.o : $(PRJ_DIR)/../../log/%.c
- $(CC) -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC -c $<
-
-%.d : $(PRJ_DIR)/../../log/%.c
- ccpentium -E -P -M -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC $< > $@
-
-%.o : $(PRJ_DIR)/../../mp/%.c
- $(CC) -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC -c $<
-
-%.d : $(PRJ_DIR)/../../mp/%.c
- ccpentium -E -P -M -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC $< > $@
-
-%.o : $(PRJ_DIR)/../../btree/%.c
- $(CC) -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC -c $<
-
-%.d : $(PRJ_DIR)/../../btree/%.c
- ccpentium -E -P -M -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC $< > $@
-
-%.o : $(PRJ_DIR)/../../common/%.c
- $(CC) -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC -c $<
-
-%.d : $(PRJ_DIR)/../../common/%.c
- ccpentium -E -P -M -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC $< > $@
-
-%.o : $(PRJ_DIR)/../../os/%.c
- $(CC) -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC -c $<
-
-%.d : $(PRJ_DIR)/../../os/%.c
- ccpentium -E -P -M -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC $< > $@
-
-%.o : $(PRJ_DIR)/%.c
- $(CC) -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC -c $<
-
-%.d : $(PRJ_DIR)/%.c
- ccpentium -E -P -M -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC $< > $@
-
-%.o : $(PRJ_DIR)/../../mutex/%.c
- $(CC) -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC -c $<
-
-%.d : $(PRJ_DIR)/../../mutex/%.c
- ccpentium -E -P -M -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC $< > $@
-
-%.o : $(PRJ_DIR)/../../rpc_client/%.c
- $(CC) -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC -c $<
-
-%.d : $(PRJ_DIR)/../../rpc_client/%.c
- ccpentium -E -P -M -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC $< > $@
-
-%.o : $(PRJ_DIR)/../../rpc_server/%.c
- $(CC) -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC -c $<
-
-%.d : $(PRJ_DIR)/../../rpc_server/%.c
- ccpentium -E -P -M -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC $< > $@
-
-%.o : $(PRJ_DIR)/../../env/%.c
- $(CC) -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC -c $<
-
-%.d : $(PRJ_DIR)/../../env/%.c
- ccpentium -E -P -M -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC $< > $@
-
-%.o : $(PRJ_DIR)/../../hsearch/%.c
- $(CC) -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC -c $<
-
-%.d : $(PRJ_DIR)/../../hsearch/%.c
- ccpentium -E -P -M -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC $< > $@
-
-%.o : $(PRJ_DIR)/../../clib/%.c
- $(CC) -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC -c $<
-
-%.d : $(PRJ_DIR)/../../clib/%.c
- ccpentium -E -P -M -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC $< > $@
-
-%.o : $(PRJ_DIR)/../../rep/%.c
- $(CC) -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC -c $<
-
-%.d : $(PRJ_DIR)/../../rep/%.c
- ccpentium -E -P -M -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC $< > $@
-
-%.o : $(PRJ_DIR)/../../qam/%.c
- $(CC) -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC -c $<
-
-%.d : $(PRJ_DIR)/../../qam/%.c
- ccpentium -E -P -M -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC $< > $@
-
-%.o : $(PRJ_DIR)/../../db/%.c
- $(CC) -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC -c $<
-
-%.d : $(PRJ_DIR)/../../db/%.c
- ccpentium -E -P -M -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC $< > $@
-
-%.o : $(PRJ_DIR)/../../hash/%.c
- $(CC) -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC -c $<
-
-%.d : $(PRJ_DIR)/../../hash/%.c
- ccpentium -E -P -M -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC $< > $@
-
-%.o : $(PRJ_DIR)/../../os_vxworks/%.c
- $(CC) -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC -c $<
-
-%.d : $(PRJ_DIR)/../../os_vxworks/%.c
- ccpentium -E -P -M -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC $< > $@
-
-%.o : $(PRJ_DIR)/../../xa/%.c
- $(CC) -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC -c $<
-
-%.d : $(PRJ_DIR)/../../xa/%.c
- ccpentium -E -P -M -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC $< > $@
-
-%.o : $(PRJ_DIR)/../../lock/%.c
- $(CC) -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC -c $<
-
-%.d : $(PRJ_DIR)/../../lock/%.c
- ccpentium -E -P -M -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC $< > $@
-
-
-## end build rules for build specification 'PENTIUMgnu.debug'
-
-endif
-
-
-## build rules for build specification 'PENTIUM2gnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.debug)
-
-%.o : $(PRJ_DIR)/../../txn/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC -c $<
-
-%.d : $(PRJ_DIR)/../../txn/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC $< > $@
-
-%.o : $(PRJ_DIR)/../../log/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC -c $<
-
-%.d : $(PRJ_DIR)/../../log/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC $< > $@
-
-%.o : $(PRJ_DIR)/../../mp/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC -c $<
-
-%.d : $(PRJ_DIR)/../../mp/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC $< > $@
-
-%.o : $(PRJ_DIR)/../../btree/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC -c $<
-
-%.d : $(PRJ_DIR)/../../btree/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC $< > $@
-
-%.o : $(PRJ_DIR)/../../common/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC -c $<
-
-%.d : $(PRJ_DIR)/../../common/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC $< > $@
-
-%.o : $(PRJ_DIR)/../../os/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC -c $<
-
-%.d : $(PRJ_DIR)/../../os/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC $< > $@
-
-%.o : $(PRJ_DIR)/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC -c $<
-
-%.d : $(PRJ_DIR)/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC $< > $@
-
-%.o : $(PRJ_DIR)/../../mutex/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC -c $<
-
-%.d : $(PRJ_DIR)/../../mutex/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC $< > $@
-
-%.o : $(PRJ_DIR)/../../rpc_client/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC -c $<
-
-%.d : $(PRJ_DIR)/../../rpc_client/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC $< > $@
-
-%.o : $(PRJ_DIR)/../../rpc_server/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC -c $<
-
-%.d : $(PRJ_DIR)/../../rpc_server/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC $< > $@
-
-%.o : $(PRJ_DIR)/../../env/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC -c $<
-
-%.d : $(PRJ_DIR)/../../env/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC $< > $@
-
-%.o : $(PRJ_DIR)/../../hsearch/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC -c $<
-
-%.d : $(PRJ_DIR)/../../hsearch/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC $< > $@
-
-%.o : $(PRJ_DIR)/../../clib/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC -c $<
-
-%.d : $(PRJ_DIR)/../../clib/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC $< > $@
-
-%.o : $(PRJ_DIR)/../../rep/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC -c $<
-
-%.d : $(PRJ_DIR)/../../rep/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC $< > $@
-
-%.o : $(PRJ_DIR)/../../qam/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC -c $<
-
-%.d : $(PRJ_DIR)/../../qam/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC $< > $@
-
-%.o : $(PRJ_DIR)/../../db/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC -c $<
-
-%.d : $(PRJ_DIR)/../../db/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC $< > $@
-
-%.o : $(PRJ_DIR)/../../hash/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC -c $<
-
-%.d : $(PRJ_DIR)/../../hash/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC $< > $@
-
-%.o : $(PRJ_DIR)/../../os_vxworks/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC -c $<
-
-%.d : $(PRJ_DIR)/../../os_vxworks/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC $< > $@
-
-%.o : $(PRJ_DIR)/../../xa/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC -c $<
-
-%.d : $(PRJ_DIR)/../../xa/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC $< > $@
-
-%.o : $(PRJ_DIR)/../../lock/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC -c $<
-
-%.d : $(PRJ_DIR)/../../lock/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -DDEBUG -DDIAGNOSTIC $< > $@
-
-
-## end build rules for build specification 'PENTIUM2gnu.debug'
-
-endif
-
-
-## build rules for build specification 'PENTIUM2gnu.release'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.release)
-
-%.o : $(PRJ_DIR)/../../txn/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -c $<
-
-%.d : $(PRJ_DIR)/../../txn/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto $< > $@
-
-%.o : $(PRJ_DIR)/../../log/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -c $<
-
-%.d : $(PRJ_DIR)/../../log/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto $< > $@
-
-%.o : $(PRJ_DIR)/../../mp/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -c $<
-
-%.d : $(PRJ_DIR)/../../mp/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto $< > $@
-
-%.o : $(PRJ_DIR)/../../btree/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -c $<
-
-%.d : $(PRJ_DIR)/../../btree/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto $< > $@
-
-%.o : $(PRJ_DIR)/../../common/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -c $<
-
-%.d : $(PRJ_DIR)/../../common/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto $< > $@
-
-%.o : $(PRJ_DIR)/../../os/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -c $<
-
-%.d : $(PRJ_DIR)/../../os/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto $< > $@
-
-%.o : $(PRJ_DIR)/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -c $<
-
-%.d : $(PRJ_DIR)/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto $< > $@
-
-%.o : $(PRJ_DIR)/../../mutex/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -c $<
-
-%.d : $(PRJ_DIR)/../../mutex/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto $< > $@
-
-%.o : $(PRJ_DIR)/../../rpc_client/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -c $<
-
-%.d : $(PRJ_DIR)/../../rpc_client/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto $< > $@
-
-%.o : $(PRJ_DIR)/../../rpc_server/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -c $<
-
-%.d : $(PRJ_DIR)/../../rpc_server/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto $< > $@
-
-%.o : $(PRJ_DIR)/../../env/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -c $<
-
-%.d : $(PRJ_DIR)/../../env/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto $< > $@
-
-%.o : $(PRJ_DIR)/../../hsearch/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -c $<
-
-%.d : $(PRJ_DIR)/../../hsearch/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto $< > $@
-
-%.o : $(PRJ_DIR)/../../clib/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -c $<
-
-%.d : $(PRJ_DIR)/../../clib/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto $< > $@
-
-%.o : $(PRJ_DIR)/../../rep/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -c $<
-
-%.d : $(PRJ_DIR)/../../rep/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto $< > $@
-
-%.o : $(PRJ_DIR)/../../qam/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -c $<
-
-%.d : $(PRJ_DIR)/../../qam/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto $< > $@
-
-%.o : $(PRJ_DIR)/../../db/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -c $<
-
-%.d : $(PRJ_DIR)/../../db/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto $< > $@
-
-%.o : $(PRJ_DIR)/../../hash/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -c $<
-
-%.d : $(PRJ_DIR)/../../hash/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto $< > $@
-
-%.o : $(PRJ_DIR)/../../os_vxworks/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -c $<
-
-%.d : $(PRJ_DIR)/../../os_vxworks/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto $< > $@
-
-%.o : $(PRJ_DIR)/../../xa/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -c $<
-
-%.d : $(PRJ_DIR)/../../xa/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto $< > $@
-
-%.o : $(PRJ_DIR)/../../lock/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto -c $<
-
-%.d : $(PRJ_DIR)/../../lock/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2 -I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../../include -I$(PRJ_DIR)/../../include_auto $< > $@
-
-
-## end build rules for build specification 'PENTIUM2gnu.release'
-
-endif
-
-#
-# Rule for configurable, binary component
-#
-# Downloadable component module build rules
-#
-BerkeleyDB.cm: $(PRJ_OBJS) mxrDoc.nm depend
-#
-# Partially link all BerkeleyDB modules together
-# including the configlette modules
-#
- $(LD) -r -o $@ $(PRJ_OBJS) $(CC_LIB)
-#
-# Generate _vxMain and _vxExit by munching
-#
- $(NM) $@ | $(MUNCH) > BerkeleyDB_ctdt.c
- $(COMPILE_TRADITIONAL) BerkeleyDB_ctdt.c -o BerkeleyDB_ctdt.o
- $(LD) -r -o BerkeleyDB.tmp $@ BerkeleyDB_ctdt.o
- $(RM) $@
- $(MV) BerkeleyDB.tmp $@
-#
-# Adds entry point table section to BerkeleyDB component
-#
- $(PD_EPT_DDE_ADD) $@ $(PRJ_DIR)/$(PRJ_FILE) INDEX $(BUILD_SPEC)
-
-
-#
-# Partial link build rules
-# Partially link all BerkeleyDB modules together
-# If no source files, then generates dummy.c
-#
-
-ifeq ($(COMPONENT_OBJS),)
-dummy.c:
- $(CFG_GEN) $(PRJ_DIR)/$(PRJ_FILE) dummyCGen $(PRJ_TYPE)
-
-BerkeleyDB.pl: dummy.o mxrDoc.nm depend
- $(LD) -r -o $@ dummy.o
-else
-BerkeleyDB.pl: $(COMPONENT_OBJS) mxrDoc.nm depend
- $(LD) -r -o $@ $(COMPONENT_OBJS)
-endif
-
-#
-# nm file containing symbol information for all component objects
-#
-
-EXTERNAL_BINARIES_DIR_PATTERN_1 = $(subst \,\\,$(PRJ_DIR)/extbin/$(BUILD_SPEC)/)
-EXTERNAL_BINARIES_DIR_PATTERN = $(subst /,\/,$(EXTERNAL_BINARIES_DIR_PATTERN_1))
-
-mxrDoc.nm: mxrDoc.size $(COMPONENT_OBJS)
- $(RM) $@
-# if there are no object files, make a blank mxr doc
-ifeq ($(NUMBER_OF_COMPONENT_OBJS),0)
- @$(ECHO) "" >> $@
-else
- $(NM) bt_compare.o bt_conv.o bt_curadj.o bt_cursor.o bt_delete.o bt_method.o bt_open.o bt_put.o bt_rec.o bt_reclaim.o bt_recno.o bt_rsearch.o bt_search.o bt_split.o bt_stat.o bt_upgrade.o bt_verify.o btree_auto.o client.o crdel_auto.o crdel_rec.o db.o db_am.o db_auto.o db_byteorder.o db_cam.o db_conv.o db_dispatch.o db_dup.o db_err.o db_getlong.o db_iface.o db_join.o db_log2.o db_meta.o db_method.o db_overflow.o db_pr.o db_rec.o db_reclaim.o db_ret.o db_salloc.o db_server_clnt.o db_server_xdr.o db_shash.o db_upg.o db_upg_opd.o db_vrfy.o db_vrfyutil.o env_method.o env_open.o | sed -e "s|$(EXTERNAL_BINARIES_DIR_PATTERN)||g" >> $@
- $(NM) env_recover.o env_region.o gen_client.o gen_client_ret.o getopt.o hash.o hash_auto.o hash_conv.o hash_dup.o hash_func.o hash_meta.o hash_method.o hash_page.o hash_rec.o hash_reclaim.o hash_stat.o hash_upgrade.o hash_verify.o hsearch.o lock.o lock_deadlock.o lock_method.o lock_region.o lock_stat.o lock_util.o log.o log_archive.o log_auto.o log_compare.o log_findckp.o log_get.o log_method.o log_put.o log_rec.o log_register.o mp_alloc.o mp_bh.o mp_fget.o mp_fopen.o mp_fput.o mp_fset.o mp_method.o mp_region.o mp_register.o mp_stat.o mp_sync.o mp_trickle.o mut_tas.o mutex.o os_alloc.o | sed -e "s|$(EXTERNAL_BINARIES_DIR_PATTERN)||g" >> $@
- $(NM) os_clock.o os_dir.o os_errno.o os_fid.o os_fsync.o os_handle.o os_method.o os_oflags.o os_open.o os_region.o os_rename.o os_root.o os_rpath.o os_rw.o os_seek.o os_sleep.o os_spin.o os_stat.o os_tmpdir.o os_unlink.o os_vx_abs.o os_vx_finit.o os_vx_map.o qam.o qam_auto.o qam_conv.o qam_files.o qam_method.o qam_open.o qam_rec.o qam_stat.o qam_upgrade.o qam_verify.o rep_method.o rep_record.o rep_region.o rep_util.o snprintf.o strcasecmp.o txn.o txn_auto.o txn_method.o txn_rec.o txn_recover.o txn_region.o txn_stat.o util_arg.o util_log.o util_sig.o vsnprintf.o | sed -e "s|$(EXTERNAL_BINARIES_DIR_PATTERN)||g" >> $@
- $(NM) xa.o xa_db.o xa_map.o | sed -e "s|$(EXTERNAL_BINARIES_DIR_PATTERN)||g" >> $@
-endif
-
-#
-# size file containing size information for all component objects
-#
-mxrDoc.size: $(COMPONENT_OBJS) $(PRJ_DIR)/component.cdf
- $(RM) $@
-ifeq ($(NUMBER_OF_COMPONENT_OBJS),0)
- @$(ECHO) "" > $@
-else
- $(SIZE) bt_compare.o bt_conv.o bt_curadj.o bt_cursor.o bt_delete.o bt_method.o bt_open.o bt_put.o bt_rec.o bt_reclaim.o bt_recno.o bt_rsearch.o bt_search.o bt_split.o bt_stat.o bt_upgrade.o bt_verify.o btree_auto.o client.o crdel_auto.o crdel_rec.o db.o db_am.o db_auto.o db_byteorder.o db_cam.o db_conv.o db_dispatch.o db_dup.o db_err.o db_getlong.o db_iface.o db_join.o db_log2.o db_meta.o db_method.o db_overflow.o db_pr.o db_rec.o db_reclaim.o db_ret.o db_salloc.o db_server_clnt.o db_server_xdr.o db_shash.o db_upg.o db_upg_opd.o db_vrfy.o db_vrfyutil.o env_method.o env_open.o | sed -e "s|$(EXTERNAL_BINARIES_DIR_PATTERN)||g" >> $@
- $(SIZE) env_recover.o env_region.o gen_client.o gen_client_ret.o getopt.o hash.o hash_auto.o hash_conv.o hash_dup.o hash_func.o hash_meta.o hash_method.o hash_page.o hash_rec.o hash_reclaim.o hash_stat.o hash_upgrade.o hash_verify.o hsearch.o lock.o lock_deadlock.o lock_method.o lock_region.o lock_stat.o lock_util.o log.o log_archive.o log_auto.o log_compare.o log_findckp.o log_get.o log_method.o log_put.o log_rec.o log_register.o mp_alloc.o mp_bh.o mp_fget.o mp_fopen.o mp_fput.o mp_fset.o mp_method.o mp_region.o mp_register.o mp_stat.o mp_sync.o mp_trickle.o mut_tas.o mutex.o os_alloc.o | sed 1d | sed -e "s|$(EXTERNAL_BINARIES_DIR_PATTERN)||g" >> $@
- $(SIZE) os_clock.o os_dir.o os_errno.o os_fid.o os_fsync.o os_handle.o os_method.o os_oflags.o os_open.o os_region.o os_rename.o os_root.o os_rpath.o os_rw.o os_seek.o os_sleep.o os_spin.o os_stat.o os_tmpdir.o os_unlink.o os_vx_abs.o os_vx_finit.o os_vx_map.o qam.o qam_auto.o qam_conv.o qam_files.o qam_method.o qam_open.o qam_rec.o qam_stat.o qam_upgrade.o qam_verify.o rep_method.o rep_record.o rep_region.o rep_util.o snprintf.o strcasecmp.o txn.o txn_auto.o txn_method.o txn_rec.o txn_recover.o txn_region.o txn_stat.o util_arg.o util_log.o util_sig.o vsnprintf.o | sed 1d | sed -e "s|$(EXTERNAL_BINARIES_DIR_PATTERN)||g" >> $@
- $(SIZE) xa.o xa_db.o xa_map.o | sed 1d | sed -e "s|$(EXTERNAL_BINARIES_DIR_PATTERN)||g" >> $@
-endif
-
-
-## user-defined rules for build specification 'PENTIUMgnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUMgnu.debug)
-
-## end user-defined rules for build specification 'PENTIUMgnu.debug'
-
-endif
-
-
-## user-defined rules for build specification 'PENTIUM2gnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.debug)
-
-## end user-defined rules for build specification 'PENTIUM2gnu.debug'
-
-endif
-
-
-## user-defined rules for build specification 'PENTIUM2gnu.release'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.release)
-
-## end user-defined rules for build specification 'PENTIUM2gnu.release'
-
-endif
-
-
-#
-# Recursive clean
-#
-
-rclean : clean
-
diff --git a/db/build_vxworks/BerkeleyDB20.wpj b/db/build_vxworks/BerkeleyDB20.wpj
index 83e8aa33a..ec9b46144 100755
--- a/db/build_vxworks/BerkeleyDB20.wpj
+++ b/db/build_vxworks/BerkeleyDB20.wpj
@@ -717,24 +717,6 @@ db_byteorder.o
C/C++ compiler
<END>
-<BEGIN> FILE_$(PRJ_DIR)/../common/db_clock.c_dependDone
-TRUE
-<END>
-
-<BEGIN> FILE_$(PRJ_DIR)/../common/db_clock.c_dependencies
-$(PRJ_DIR)/db_config.h \
- $(PRJ_DIR)/db_int.h \
- $(PRJ_DIR)/db.h
-<END>
-
-<BEGIN> FILE_$(PRJ_DIR)/../common/db_clock.c_objects
-db_clock.o
-<END>
-
-<BEGIN> FILE_$(PRJ_DIR)/../common/db_clock.c_tool
-C/C++ compiler
-<END>
-
<BEGIN> FILE_$(PRJ_DIR)/../common/db_err.c_dependDone
TRUE
<END>
@@ -807,6 +789,24 @@ db_log2.o
C/C++ compiler
<END>
+<BEGIN> FILE_$(PRJ_DIR)/../common/db_shash.c_dependDone
+TRUE
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../common/db_shash.c_dependencies
+$(PRJ_DIR)/db_config.h \
+ $(PRJ_DIR)/db_int.h \
+ $(PRJ_DIR)/db.h
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../common/db_shash.c_objects
+db_shash.o
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../common/db_shash.c_tool
+C/C++ compiler
+<END>
+
<BEGIN> FILE_$(PRJ_DIR)/../common/mkpath.c_dependDone
TRUE
<END>
@@ -1635,39 +1635,21 @@ dbreg_util.o
C/C++ compiler
<END>
-<BEGIN> FILE_$(PRJ_DIR)/../env/db_salloc.c_dependDone
-TRUE
-<END>
-
-<BEGIN> FILE_$(PRJ_DIR)/../env/db_salloc.c_dependencies
-$(PRJ_DIR)/db_config.h \
- $(PRJ_DIR)/db_int.h \
- $(PRJ_DIR)/db.h
-<END>
-
-<BEGIN> FILE_$(PRJ_DIR)/../env/db_salloc.c_objects
-db_salloc.o
-<END>
-
-<BEGIN> FILE_$(PRJ_DIR)/../env/db_salloc.c_tool
-C/C++ compiler
-<END>
-
-<BEGIN> FILE_$(PRJ_DIR)/../env/db_shash.c_dependDone
+<BEGIN> FILE_$(PRJ_DIR)/../env/env_alloc.c_dependDone
TRUE
<END>
-<BEGIN> FILE_$(PRJ_DIR)/../env/db_shash.c_dependencies
+<BEGIN> FILE_$(PRJ_DIR)/../env/env_alloc.c_dependencies
$(PRJ_DIR)/db_config.h \
$(PRJ_DIR)/db_int.h \
$(PRJ_DIR)/db.h
<END>
-<BEGIN> FILE_$(PRJ_DIR)/../env/db_shash.c_objects
-db_shash.o
+<BEGIN> FILE_$(PRJ_DIR)/../env/env_alloc.c_objects
+env_alloc.o
<END>
-<BEGIN> FILE_$(PRJ_DIR)/../env/db_shash.c_tool
+<BEGIN> FILE_$(PRJ_DIR)/../env/env_alloc.c_tool
C/C++ compiler
<END>
@@ -1725,6 +1707,24 @@ env_file.o
C/C++ compiler
<END>
+<BEGIN> FILE_$(PRJ_DIR)/../env/env_globals.c_dependDone
+TRUE
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../env/env_globals.c_dependencies
+$(PRJ_DIR)/db_config.h \
+ $(PRJ_DIR)/db_int.h \
+ $(PRJ_DIR)/db.h
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../env/env_globals.c_objects
+env_globals.o
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../env/env_globals.c_tool
+C/C++ compiler
+<END>
+
<BEGIN> FILE_$(PRJ_DIR)/../env/env_method.c_dependDone
TRUE
<END>
@@ -1743,6 +1743,24 @@ env_method.o
C/C++ compiler
<END>
+<BEGIN> FILE_$(PRJ_DIR)/../env/env_name.c_dependDone
+TRUE
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../env/env_name.c_dependencies
+$(PRJ_DIR)/db_config.h \
+ $(PRJ_DIR)/db_int.h \
+ $(PRJ_DIR)/db.h
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../env/env_name.c_objects
+env_name.o
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../env/env_name.c_tool
+C/C++ compiler
+<END>
+
<BEGIN> FILE_$(PRJ_DIR)/../env/env_open.c_dependDone
TRUE
<END>
@@ -2733,6 +2751,24 @@ mp_register.o
C/C++ compiler
<END>
+<BEGIN> FILE_$(PRJ_DIR)/../mp/mp_resize.c_dependDone
+TRUE
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../mp/mp_resize.c_dependencies
+$(PRJ_DIR)/db_config.h \
+ $(PRJ_DIR)/db_int.h \
+ $(PRJ_DIR)/db.h
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../mp/mp_resize.c_objects
+mp_resize.o
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../mp/mp_resize.c_tool
+C/C++ compiler
+<END>
+
<BEGIN> FILE_$(PRJ_DIR)/../mp/mp_stat.c_dependDone
TRUE
<END>
@@ -2895,6 +2931,24 @@ mut_tas.o
C/C++ compiler
<END>
+<BEGIN> FILE_$(PRJ_DIR)/../os/os_abort.c_dependDone
+TRUE
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../os/os_abort.c_dependencies
+$(PRJ_DIR)/db_config.h \
+ $(PRJ_DIR)/db_int.h \
+ $(PRJ_DIR)/db.h
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../os/os_abort.c_objects
+os_abort.o
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../os/os_abort.c_tool
+C/C++ compiler
+<END>
+
<BEGIN> FILE_$(PRJ_DIR)/../os/os_alloc.c_dependDone
TRUE
<END>
@@ -3705,6 +3759,24 @@ rep_elect.o
C/C++ compiler
<END>
+<BEGIN> FILE_$(PRJ_DIR)/../rep/rep_lease.c_dependDone
+TRUE
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../rep/rep_lease.c_dependencies
+$(PRJ_DIR)/db_config.h \
+ $(PRJ_DIR)/db_int.h \
+ $(PRJ_DIR)/db.h
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../rep/rep_lease.c_objects
+rep_lease.o
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../rep/rep_lease.c_tool
+C/C++ compiler
+<END>
+
<BEGIN> FILE_$(PRJ_DIR)/../rep/rep_log.c_dependDone
TRUE
<END>
@@ -3831,6 +3903,24 @@ rep_verify.o
C/C++ compiler
<END>
+<BEGIN> FILE_$(PRJ_DIR)/../repmgr/repmgr_stub.c_dependDone
+TRUE
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../repmgr/repmgr_stub.c_dependencies
+$(PRJ_DIR)/db_config.h \
+ $(PRJ_DIR)/db_int.h \
+ $(PRJ_DIR)/db.h
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../repmgr/repmgr_stub.c_objects
+repmgr_stub.o
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../repmgr/repmgr_stub.c_tool
+C/C++ compiler
+<END>
+
<BEGIN> FILE_$(PRJ_DIR)/../txn/txn.c_dependDone
TRUE
<END>
@@ -4092,11 +4182,11 @@ $(PRJ_DIR)/../btree/bt_compact.c \
$(PRJ_DIR)/../clib/strdup.c \
$(PRJ_DIR)/../clib/strsep.c \
$(PRJ_DIR)/../common/db_byteorder.c \
- $(PRJ_DIR)/../common/db_clock.c \
$(PRJ_DIR)/../common/db_err.c \
$(PRJ_DIR)/../common/db_getlong.c \
$(PRJ_DIR)/../common/db_idspace.c \
$(PRJ_DIR)/../common/db_log2.c \
+ $(PRJ_DIR)/../common/db_shash.c \
$(PRJ_DIR)/../common/mkpath.c \
$(PRJ_DIR)/../common/util_arg.c \
$(PRJ_DIR)/../common/util_cache.c \
@@ -4143,12 +4233,13 @@ $(PRJ_DIR)/../btree/bt_compact.c \
$(PRJ_DIR)/../dbreg/dbreg_rec.c \
$(PRJ_DIR)/../dbreg/dbreg_stat.c \
$(PRJ_DIR)/../dbreg/dbreg_util.c \
- $(PRJ_DIR)/../env/db_salloc.c \
- $(PRJ_DIR)/../env/db_shash.c \
+ $(PRJ_DIR)/../env/env_alloc.c \
$(PRJ_DIR)/../env/env_config.c \
$(PRJ_DIR)/../env/env_failchk.c \
$(PRJ_DIR)/../env/env_file.c \
+ $(PRJ_DIR)/../env/env_globals.c \
$(PRJ_DIR)/../env/env_method.c \
+ $(PRJ_DIR)/../env/env_name.c \
$(PRJ_DIR)/../env/env_open.c \
$(PRJ_DIR)/../env/env_recover.c \
$(PRJ_DIR)/../env/env_region.c \
@@ -4204,6 +4295,7 @@ $(PRJ_DIR)/../btree/bt_compact.c \
$(PRJ_DIR)/../mp/mp_mvcc.c \
$(PRJ_DIR)/../mp/mp_region.c \
$(PRJ_DIR)/../mp/mp_register.c \
+ $(PRJ_DIR)/../mp/mp_resize.c \
$(PRJ_DIR)/../mp/mp_stat.c \
$(PRJ_DIR)/../mp/mp_sync.c \
$(PRJ_DIR)/../mp/mp_trickle.c \
@@ -4213,6 +4305,7 @@ $(PRJ_DIR)/../btree/bt_compact.c \
$(PRJ_DIR)/../mutex/mut_region.c \
$(PRJ_DIR)/../mutex/mut_stat.c \
$(PRJ_DIR)/../mutex/mut_tas.c \
+ $(PRJ_DIR)/../os/os_abort.c \
$(PRJ_DIR)/../os/os_alloc.c \
$(PRJ_DIR)/../os/os_clock.c \
$(PRJ_DIR)/../os/os_dir.c \
@@ -4258,6 +4351,7 @@ $(PRJ_DIR)/../btree/bt_compact.c \
$(PRJ_DIR)/../rep/rep_auto.c \
$(PRJ_DIR)/../rep/rep_backup.c \
$(PRJ_DIR)/../rep/rep_elect.c \
+ $(PRJ_DIR)/../rep/rep_lease.c \
$(PRJ_DIR)/../rep/rep_log.c \
$(PRJ_DIR)/../rep/rep_method.c \
$(PRJ_DIR)/../rep/rep_record.c \
@@ -4265,6 +4359,7 @@ $(PRJ_DIR)/../btree/bt_compact.c \
$(PRJ_DIR)/../rep/rep_stat.c \
$(PRJ_DIR)/../rep/rep_util.c \
$(PRJ_DIR)/../rep/rep_verify.c \
+ $(PRJ_DIR)/../repmgr/repmgr_stub.c \
$(PRJ_DIR)/../txn/txn.c \
$(PRJ_DIR)/../txn/txn_auto.c \
$(PRJ_DIR)/../txn/txn_chkpt.c \
diff --git a/db/build_vxworks/BerkeleyDB20small.wpj b/db/build_vxworks/BerkeleyDB20small.wpj
index 2e3b8b546..40c537822 100755
--- a/db/build_vxworks/BerkeleyDB20small.wpj
+++ b/db/build_vxworks/BerkeleyDB20small.wpj
@@ -789,6 +789,24 @@ db_log2.o
C/C++ compiler
<END>
+<BEGIN> FILE_$(PRJ_DIR)/../common/db_shash.c_dependDone
+TRUE
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../common/db_shash.c_dependencies
+$(PRJ_DIR)/db_config.h \
+ $(PRJ_DIR)/db_int.h \
+ $(PRJ_DIR)/db.h
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../common/db_shash.c_objects
+db_shash.o
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../common/db_shash.c_tool
+C/C++ compiler
+<END>
+
<BEGIN> FILE_$(PRJ_DIR)/../common/mkpath.c_dependDone
TRUE
<END>
@@ -1491,39 +1509,21 @@ dbreg_util.o
C/C++ compiler
<END>
-<BEGIN> FILE_$(PRJ_DIR)/../env/db_salloc.c_dependDone
+<BEGIN> FILE_$(PRJ_DIR)/../env/env_alloc.c_dependDone
TRUE
<END>
-<BEGIN> FILE_$(PRJ_DIR)/../env/db_salloc.c_dependencies
+<BEGIN> FILE_$(PRJ_DIR)/../env/env_alloc.c_dependencies
$(PRJ_DIR)/db_config.h \
$(PRJ_DIR)/db_int.h \
$(PRJ_DIR)/db.h
<END>
-<BEGIN> FILE_$(PRJ_DIR)/../env/db_salloc.c_objects
-db_salloc.o
+<BEGIN> FILE_$(PRJ_DIR)/../env/env_alloc.c_objects
+env_alloc.o
<END>
-<BEGIN> FILE_$(PRJ_DIR)/../env/db_salloc.c_tool
-C/C++ compiler
-<END>
-
-<BEGIN> FILE_$(PRJ_DIR)/../env/db_shash.c_dependDone
-TRUE
-<END>
-
-<BEGIN> FILE_$(PRJ_DIR)/../env/db_shash.c_dependencies
-$(PRJ_DIR)/db_config.h \
- $(PRJ_DIR)/db_int.h \
- $(PRJ_DIR)/db.h
-<END>
-
-<BEGIN> FILE_$(PRJ_DIR)/../env/db_shash.c_objects
-db_shash.o
-<END>
-
-<BEGIN> FILE_$(PRJ_DIR)/../env/db_shash.c_tool
+<BEGIN> FILE_$(PRJ_DIR)/../env/env_alloc.c_tool
C/C++ compiler
<END>
@@ -1581,6 +1581,24 @@ env_file.o
C/C++ compiler
<END>
+<BEGIN> FILE_$(PRJ_DIR)/../env/env_globals.c_dependDone
+TRUE
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../env/env_globals.c_dependencies
+$(PRJ_DIR)/db_config.h \
+ $(PRJ_DIR)/db_int.h \
+ $(PRJ_DIR)/db.h
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../env/env_globals.c_objects
+env_globals.o
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../env/env_globals.c_tool
+C/C++ compiler
+<END>
+
<BEGIN> FILE_$(PRJ_DIR)/../env/env_method.c_dependDone
TRUE
<END>
@@ -1599,6 +1617,24 @@ env_method.o
C/C++ compiler
<END>
+<BEGIN> FILE_$(PRJ_DIR)/../env/env_name.c_dependDone
+TRUE
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../env/env_name.c_dependencies
+$(PRJ_DIR)/db_config.h \
+ $(PRJ_DIR)/db_int.h \
+ $(PRJ_DIR)/db.h
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../env/env_name.c_objects
+env_name.o
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../env/env_name.c_tool
+C/C++ compiler
+<END>
+
<BEGIN> FILE_$(PRJ_DIR)/../env/env_open.c_dependDone
TRUE
<END>
@@ -2355,6 +2391,24 @@ mp_register.o
C/C++ compiler
<END>
+<BEGIN> FILE_$(PRJ_DIR)/../mp/mp_resize.c_dependDone
+TRUE
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../mp/mp_resize.c_dependencies
+$(PRJ_DIR)/db_config.h \
+ $(PRJ_DIR)/db_int.h \
+ $(PRJ_DIR)/db.h
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../mp/mp_resize.c_objects
+mp_resize.o
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../mp/mp_resize.c_tool
+C/C++ compiler
+<END>
+
<BEGIN> FILE_$(PRJ_DIR)/../mp/mp_stat.c_dependDone
TRUE
<END>
@@ -2517,6 +2571,24 @@ mut_tas.o
C/C++ compiler
<END>
+<BEGIN> FILE_$(PRJ_DIR)/../os/os_abort.c_dependDone
+TRUE
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../os/os_abort.c_dependencies
+$(PRJ_DIR)/db_config.h \
+ $(PRJ_DIR)/db_int.h \
+ $(PRJ_DIR)/db.h
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../os/os_abort.c_objects
+os_abort.o
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../os/os_abort.c_tool
+C/C++ compiler
+<END>
+
<BEGIN> FILE_$(PRJ_DIR)/../os/os_alloc.c_dependDone
TRUE
<END>
@@ -3129,6 +3201,24 @@ rep_stub.o
C/C++ compiler
<END>
+<BEGIN> FILE_$(PRJ_DIR)/../repmgr/repmgr_stub.c_dependDone
+TRUE
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../repmgr/repmgr_stub.c_dependencies
+$(PRJ_DIR)/db_config.h \
+ $(PRJ_DIR)/db_int.h \
+ $(PRJ_DIR)/db.h
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../repmgr/repmgr_stub.c_objects
+repmgr_stub.o
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../repmgr/repmgr_stub.c_tool
+C/C++ compiler
+<END>
+
<BEGIN> FILE_$(PRJ_DIR)/../txn/txn.c_dependDone
TRUE
<END>
@@ -3394,6 +3484,7 @@ $(PRJ_DIR)/../btree/bt_compact.c \
$(PRJ_DIR)/../common/db_getlong.c \
$(PRJ_DIR)/../common/db_idspace.c \
$(PRJ_DIR)/../common/db_log2.c \
+ $(PRJ_DIR)/../common/db_shash.c \
$(PRJ_DIR)/../common/mkpath.c \
$(PRJ_DIR)/../common/util_arg.c \
$(PRJ_DIR)/../common/util_cache.c \
@@ -3433,12 +3524,13 @@ $(PRJ_DIR)/../btree/bt_compact.c \
$(PRJ_DIR)/../dbreg/dbreg_rec.c \
$(PRJ_DIR)/../dbreg/dbreg_stat.c \
$(PRJ_DIR)/../dbreg/dbreg_util.c \
- $(PRJ_DIR)/../env/db_salloc.c \
- $(PRJ_DIR)/../env/db_shash.c \
+ $(PRJ_DIR)/../env/env_alloc.c \
$(PRJ_DIR)/../env/env_config.c \
$(PRJ_DIR)/../env/env_failchk.c \
$(PRJ_DIR)/../env/env_file.c \
+ $(PRJ_DIR)/../env/env_globals.c \
$(PRJ_DIR)/../env/env_method.c \
+ $(PRJ_DIR)/../env/env_name.c \
$(PRJ_DIR)/../env/env_open.c \
$(PRJ_DIR)/../env/env_recover.c \
$(PRJ_DIR)/../env/env_region.c \
@@ -3481,6 +3573,7 @@ $(PRJ_DIR)/../btree/bt_compact.c \
$(PRJ_DIR)/../mp/mp_mvcc.c \
$(PRJ_DIR)/../mp/mp_region.c \
$(PRJ_DIR)/../mp/mp_register.c \
+ $(PRJ_DIR)/../mp/mp_resize.c \
$(PRJ_DIR)/../mp/mp_stat.c \
$(PRJ_DIR)/../mp/mp_sync.c \
$(PRJ_DIR)/../mp/mp_trickle.c \
@@ -3490,6 +3583,7 @@ $(PRJ_DIR)/../btree/bt_compact.c \
$(PRJ_DIR)/../mutex/mut_region.c \
$(PRJ_DIR)/../mutex/mut_stat.c \
$(PRJ_DIR)/../mutex/mut_tas.c \
+ $(PRJ_DIR)/../os/os_abort.c \
$(PRJ_DIR)/../os/os_alloc.c \
$(PRJ_DIR)/../os/os_clock.c \
$(PRJ_DIR)/../os/os_dir.c \
@@ -3524,6 +3618,7 @@ $(PRJ_DIR)/../btree/bt_compact.c \
$(PRJ_DIR)/../os_vxworks/os_vx_rpath.c \
$(PRJ_DIR)/../qam/qam_stub.c \
$(PRJ_DIR)/../rep/rep_stub.c \
+ $(PRJ_DIR)/../repmgr/repmgr_stub.c \
$(PRJ_DIR)/../txn/txn.c \
$(PRJ_DIR)/../txn/txn_auto.c \
$(PRJ_DIR)/../txn/txn_chkpt.c \
diff --git a/db/build_vxworks/BerkeleyDB22.wpj b/db/build_vxworks/BerkeleyDB22.wpj
index a130b4833..a51efed24 100755
--- a/db/build_vxworks/BerkeleyDB22.wpj
+++ b/db/build_vxworks/BerkeleyDB22.wpj
@@ -776,24 +776,6 @@ db_byteorder.o
C/C++ compiler
<END>
-<BEGIN> FILE_$(PRJ_DIR)/../common/db_clock.c_dependDone
-TRUE
-<END>
-
-<BEGIN> FILE_$(PRJ_DIR)/../common/db_clock.c_dependencies
-$(PRJ_DIR)/db_config.h \
- $(PRJ_DIR)/db_int.h \
- $(PRJ_DIR)/db.h
-<END>
-
-<BEGIN> FILE_$(PRJ_DIR)/../common/db_clock.c_objects
-db_clock.o
-<END>
-
-<BEGIN> FILE_$(PRJ_DIR)/../common/db_clock.c_tool
-C/C++ compiler
-<END>
-
<BEGIN> FILE_$(PRJ_DIR)/../common/db_err.c_dependDone
TRUE
<END>
@@ -866,6 +848,24 @@ db_log2.o
C/C++ compiler
<END>
+<BEGIN> FILE_$(PRJ_DIR)/../common/db_shash.c_dependDone
+TRUE
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../common/db_shash.c_dependencies
+$(PRJ_DIR)/db_config.h \
+ $(PRJ_DIR)/db_int.h \
+ $(PRJ_DIR)/db.h
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../common/db_shash.c_objects
+db_shash.o
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../common/db_shash.c_tool
+C/C++ compiler
+<END>
+
<BEGIN> FILE_$(PRJ_DIR)/../common/mkpath.c_dependDone
TRUE
<END>
@@ -1694,39 +1694,21 @@ dbreg_util.o
C/C++ compiler
<END>
-<BEGIN> FILE_$(PRJ_DIR)/../env/db_salloc.c_dependDone
-TRUE
-<END>
-
-<BEGIN> FILE_$(PRJ_DIR)/../env/db_salloc.c_dependencies
-$(PRJ_DIR)/db_config.h \
- $(PRJ_DIR)/db_int.h \
- $(PRJ_DIR)/db.h
-<END>
-
-<BEGIN> FILE_$(PRJ_DIR)/../env/db_salloc.c_objects
-db_salloc.o
-<END>
-
-<BEGIN> FILE_$(PRJ_DIR)/../env/db_salloc.c_tool
-C/C++ compiler
-<END>
-
-<BEGIN> FILE_$(PRJ_DIR)/../env/db_shash.c_dependDone
+<BEGIN> FILE_$(PRJ_DIR)/../env/env_alloc.c_dependDone
TRUE
<END>
-<BEGIN> FILE_$(PRJ_DIR)/../env/db_shash.c_dependencies
+<BEGIN> FILE_$(PRJ_DIR)/../env/env_alloc.c_dependencies
$(PRJ_DIR)/db_config.h \
$(PRJ_DIR)/db_int.h \
$(PRJ_DIR)/db.h
<END>
-<BEGIN> FILE_$(PRJ_DIR)/../env/db_shash.c_objects
-db_shash.o
+<BEGIN> FILE_$(PRJ_DIR)/../env/env_alloc.c_objects
+env_alloc.o
<END>
-<BEGIN> FILE_$(PRJ_DIR)/../env/db_shash.c_tool
+<BEGIN> FILE_$(PRJ_DIR)/../env/env_alloc.c_tool
C/C++ compiler
<END>
@@ -1784,6 +1766,24 @@ env_file.o
C/C++ compiler
<END>
+<BEGIN> FILE_$(PRJ_DIR)/../env/env_globals.c_dependDone
+TRUE
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../env/env_globals.c_dependencies
+$(PRJ_DIR)/db_config.h \
+ $(PRJ_DIR)/db_int.h \
+ $(PRJ_DIR)/db.h
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../env/env_globals.c_objects
+env_globals.o
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../env/env_globals.c_tool
+C/C++ compiler
+<END>
+
<BEGIN> FILE_$(PRJ_DIR)/../env/env_method.c_dependDone
TRUE
<END>
@@ -1802,6 +1802,24 @@ env_method.o
C/C++ compiler
<END>
+<BEGIN> FILE_$(PRJ_DIR)/../env/env_name.c_dependDone
+TRUE
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../env/env_name.c_dependencies
+$(PRJ_DIR)/db_config.h \
+ $(PRJ_DIR)/db_int.h \
+ $(PRJ_DIR)/db.h
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../env/env_name.c_objects
+env_name.o
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../env/env_name.c_tool
+C/C++ compiler
+<END>
+
<BEGIN> FILE_$(PRJ_DIR)/../env/env_open.c_dependDone
TRUE
<END>
@@ -2792,6 +2810,24 @@ mp_register.o
C/C++ compiler
<END>
+<BEGIN> FILE_$(PRJ_DIR)/../mp/mp_resize.c_dependDone
+TRUE
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../mp/mp_resize.c_dependencies
+$(PRJ_DIR)/db_config.h \
+ $(PRJ_DIR)/db_int.h \
+ $(PRJ_DIR)/db.h
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../mp/mp_resize.c_objects
+mp_resize.o
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../mp/mp_resize.c_tool
+C/C++ compiler
+<END>
+
<BEGIN> FILE_$(PRJ_DIR)/../mp/mp_stat.c_dependDone
TRUE
<END>
@@ -2954,6 +2990,24 @@ mut_tas.o
C/C++ compiler
<END>
+<BEGIN> FILE_$(PRJ_DIR)/../os/os_abort.c_dependDone
+TRUE
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../os/os_abort.c_dependencies
+$(PRJ_DIR)/db_config.h \
+ $(PRJ_DIR)/db_int.h \
+ $(PRJ_DIR)/db.h
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../os/os_abort.c_objects
+os_abort.o
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../os/os_abort.c_tool
+C/C++ compiler
+<END>
+
<BEGIN> FILE_$(PRJ_DIR)/../os/os_alloc.c_dependDone
TRUE
<END>
@@ -3764,6 +3818,24 @@ rep_elect.o
C/C++ compiler
<END>
+<BEGIN> FILE_$(PRJ_DIR)/../rep/rep_lease.c_dependDone
+TRUE
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../rep/rep_lease.c_dependencies
+$(PRJ_DIR)/db_config.h \
+ $(PRJ_DIR)/db_int.h \
+ $(PRJ_DIR)/db.h
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../rep/rep_lease.c_objects
+rep_lease.o
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../rep/rep_lease.c_tool
+C/C++ compiler
+<END>
+
<BEGIN> FILE_$(PRJ_DIR)/../rep/rep_log.c_dependDone
TRUE
<END>
@@ -3890,6 +3962,24 @@ rep_verify.o
C/C++ compiler
<END>
+<BEGIN> FILE_$(PRJ_DIR)/../repmgr/repmgr_stub.c_dependDone
+TRUE
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../repmgr/repmgr_stub.c_dependencies
+$(PRJ_DIR)/db_config.h \
+ $(PRJ_DIR)/db_int.h \
+ $(PRJ_DIR)/db.h
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../repmgr/repmgr_stub.c_objects
+repmgr_stub.o
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../repmgr/repmgr_stub.c_tool
+C/C++ compiler
+<END>
+
<BEGIN> FILE_$(PRJ_DIR)/../txn/txn.c_dependDone
TRUE
<END>
@@ -4151,11 +4241,11 @@ $(PRJ_DIR)/../btree/bt_compact.c \
$(PRJ_DIR)/../clib/strdup.c \
$(PRJ_DIR)/../clib/strsep.c \
$(PRJ_DIR)/../common/db_byteorder.c \
- $(PRJ_DIR)/../common/db_clock.c \
$(PRJ_DIR)/../common/db_err.c \
$(PRJ_DIR)/../common/db_getlong.c \
$(PRJ_DIR)/../common/db_idspace.c \
$(PRJ_DIR)/../common/db_log2.c \
+ $(PRJ_DIR)/../common/db_shash.c \
$(PRJ_DIR)/../common/mkpath.c \
$(PRJ_DIR)/../common/util_arg.c \
$(PRJ_DIR)/../common/util_cache.c \
@@ -4202,12 +4292,13 @@ $(PRJ_DIR)/../btree/bt_compact.c \
$(PRJ_DIR)/../dbreg/dbreg_rec.c \
$(PRJ_DIR)/../dbreg/dbreg_stat.c \
$(PRJ_DIR)/../dbreg/dbreg_util.c \
- $(PRJ_DIR)/../env/db_salloc.c \
- $(PRJ_DIR)/../env/db_shash.c \
+ $(PRJ_DIR)/../env/env_alloc.c \
$(PRJ_DIR)/../env/env_config.c \
$(PRJ_DIR)/../env/env_failchk.c \
$(PRJ_DIR)/../env/env_file.c \
+ $(PRJ_DIR)/../env/env_globals.c \
$(PRJ_DIR)/../env/env_method.c \
+ $(PRJ_DIR)/../env/env_name.c \
$(PRJ_DIR)/../env/env_open.c \
$(PRJ_DIR)/../env/env_recover.c \
$(PRJ_DIR)/../env/env_region.c \
@@ -4263,6 +4354,7 @@ $(PRJ_DIR)/../btree/bt_compact.c \
$(PRJ_DIR)/../mp/mp_mvcc.c \
$(PRJ_DIR)/../mp/mp_region.c \
$(PRJ_DIR)/../mp/mp_register.c \
+ $(PRJ_DIR)/../mp/mp_resize.c \
$(PRJ_DIR)/../mp/mp_stat.c \
$(PRJ_DIR)/../mp/mp_sync.c \
$(PRJ_DIR)/../mp/mp_trickle.c \
@@ -4272,6 +4364,7 @@ $(PRJ_DIR)/../btree/bt_compact.c \
$(PRJ_DIR)/../mutex/mut_region.c \
$(PRJ_DIR)/../mutex/mut_stat.c \
$(PRJ_DIR)/../mutex/mut_tas.c \
+ $(PRJ_DIR)/../os/os_abort.c \
$(PRJ_DIR)/../os/os_alloc.c \
$(PRJ_DIR)/../os/os_clock.c \
$(PRJ_DIR)/../os/os_dir.c \
@@ -4317,6 +4410,7 @@ $(PRJ_DIR)/../btree/bt_compact.c \
$(PRJ_DIR)/../rep/rep_auto.c \
$(PRJ_DIR)/../rep/rep_backup.c \
$(PRJ_DIR)/../rep/rep_elect.c \
+ $(PRJ_DIR)/../rep/rep_lease.c \
$(PRJ_DIR)/../rep/rep_log.c \
$(PRJ_DIR)/../rep/rep_method.c \
$(PRJ_DIR)/../rep/rep_record.c \
@@ -4324,6 +4418,7 @@ $(PRJ_DIR)/../btree/bt_compact.c \
$(PRJ_DIR)/../rep/rep_stat.c \
$(PRJ_DIR)/../rep/rep_util.c \
$(PRJ_DIR)/../rep/rep_verify.c \
+ $(PRJ_DIR)/../repmgr/repmgr_stub.c \
$(PRJ_DIR)/../txn/txn.c \
$(PRJ_DIR)/../txn/txn_auto.c \
$(PRJ_DIR)/../txn/txn_chkpt.c \
diff --git a/db/build_vxworks/BerkeleyDB22small.wpj b/db/build_vxworks/BerkeleyDB22small.wpj
index 622bc9650..bbbccb64b 100755
--- a/db/build_vxworks/BerkeleyDB22small.wpj
+++ b/db/build_vxworks/BerkeleyDB22small.wpj
@@ -848,6 +848,24 @@ db_log2.o
C/C++ compiler
<END>
+<BEGIN> FILE_$(PRJ_DIR)/../common/db_shash.c_dependDone
+TRUE
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../common/db_shash.c_dependencies
+$(PRJ_DIR)/db_config.h \
+ $(PRJ_DIR)/db_int.h \
+ $(PRJ_DIR)/db.h
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../common/db_shash.c_objects
+db_shash.o
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../common/db_shash.c_tool
+C/C++ compiler
+<END>
+
<BEGIN> FILE_$(PRJ_DIR)/../common/mkpath.c_dependDone
TRUE
<END>
@@ -1550,39 +1568,21 @@ dbreg_util.o
C/C++ compiler
<END>
-<BEGIN> FILE_$(PRJ_DIR)/../env/db_salloc.c_dependDone
+<BEGIN> FILE_$(PRJ_DIR)/../env/env_alloc.c_dependDone
TRUE
<END>
-<BEGIN> FILE_$(PRJ_DIR)/../env/db_salloc.c_dependencies
+<BEGIN> FILE_$(PRJ_DIR)/../env/env_alloc.c_dependencies
$(PRJ_DIR)/db_config.h \
$(PRJ_DIR)/db_int.h \
$(PRJ_DIR)/db.h
<END>
-<BEGIN> FILE_$(PRJ_DIR)/../env/db_salloc.c_objects
-db_salloc.o
+<BEGIN> FILE_$(PRJ_DIR)/../env/env_alloc.c_objects
+env_alloc.o
<END>
-<BEGIN> FILE_$(PRJ_DIR)/../env/db_salloc.c_tool
-C/C++ compiler
-<END>
-
-<BEGIN> FILE_$(PRJ_DIR)/../env/db_shash.c_dependDone
-TRUE
-<END>
-
-<BEGIN> FILE_$(PRJ_DIR)/../env/db_shash.c_dependencies
-$(PRJ_DIR)/db_config.h \
- $(PRJ_DIR)/db_int.h \
- $(PRJ_DIR)/db.h
-<END>
-
-<BEGIN> FILE_$(PRJ_DIR)/../env/db_shash.c_objects
-db_shash.o
-<END>
-
-<BEGIN> FILE_$(PRJ_DIR)/../env/db_shash.c_tool
+<BEGIN> FILE_$(PRJ_DIR)/../env/env_alloc.c_tool
C/C++ compiler
<END>
@@ -1640,6 +1640,24 @@ env_file.o
C/C++ compiler
<END>
+<BEGIN> FILE_$(PRJ_DIR)/../env/env_globals.c_dependDone
+TRUE
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../env/env_globals.c_dependencies
+$(PRJ_DIR)/db_config.h \
+ $(PRJ_DIR)/db_int.h \
+ $(PRJ_DIR)/db.h
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../env/env_globals.c_objects
+env_globals.o
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../env/env_globals.c_tool
+C/C++ compiler
+<END>
+
<BEGIN> FILE_$(PRJ_DIR)/../env/env_method.c_dependDone
TRUE
<END>
@@ -1658,6 +1676,24 @@ env_method.o
C/C++ compiler
<END>
+<BEGIN> FILE_$(PRJ_DIR)/../env/env_name.c_dependDone
+TRUE
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../env/env_name.c_dependencies
+$(PRJ_DIR)/db_config.h \
+ $(PRJ_DIR)/db_int.h \
+ $(PRJ_DIR)/db.h
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../env/env_name.c_objects
+env_name.o
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../env/env_name.c_tool
+C/C++ compiler
+<END>
+
<BEGIN> FILE_$(PRJ_DIR)/../env/env_open.c_dependDone
TRUE
<END>
@@ -2414,6 +2450,24 @@ mp_register.o
C/C++ compiler
<END>
+<BEGIN> FILE_$(PRJ_DIR)/../mp/mp_resize.c_dependDone
+TRUE
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../mp/mp_resize.c_dependencies
+$(PRJ_DIR)/db_config.h \
+ $(PRJ_DIR)/db_int.h \
+ $(PRJ_DIR)/db.h
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../mp/mp_resize.c_objects
+mp_resize.o
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../mp/mp_resize.c_tool
+C/C++ compiler
+<END>
+
<BEGIN> FILE_$(PRJ_DIR)/../mp/mp_stat.c_dependDone
TRUE
<END>
@@ -2576,6 +2630,24 @@ mut_tas.o
C/C++ compiler
<END>
+<BEGIN> FILE_$(PRJ_DIR)/../os/os_abort.c_dependDone
+TRUE
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../os/os_abort.c_dependencies
+$(PRJ_DIR)/db_config.h \
+ $(PRJ_DIR)/db_int.h \
+ $(PRJ_DIR)/db.h
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../os/os_abort.c_objects
+os_abort.o
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../os/os_abort.c_tool
+C/C++ compiler
+<END>
+
<BEGIN> FILE_$(PRJ_DIR)/../os/os_alloc.c_dependDone
TRUE
<END>
@@ -3188,6 +3260,24 @@ rep_stub.o
C/C++ compiler
<END>
+<BEGIN> FILE_$(PRJ_DIR)/../repmgr/repmgr_stub.c_dependDone
+TRUE
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../repmgr/repmgr_stub.c_dependencies
+$(PRJ_DIR)/db_config.h \
+ $(PRJ_DIR)/db_int.h \
+ $(PRJ_DIR)/db.h
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../repmgr/repmgr_stub.c_objects
+repmgr_stub.o
+<END>
+
+<BEGIN> FILE_$(PRJ_DIR)/../repmgr/repmgr_stub.c_tool
+C/C++ compiler
+<END>
+
<BEGIN> FILE_$(PRJ_DIR)/../txn/txn.c_dependDone
TRUE
<END>
@@ -3453,6 +3543,7 @@ $(PRJ_DIR)/../btree/bt_compact.c \
$(PRJ_DIR)/../common/db_getlong.c \
$(PRJ_DIR)/../common/db_idspace.c \
$(PRJ_DIR)/../common/db_log2.c \
+ $(PRJ_DIR)/../common/db_shash.c \
$(PRJ_DIR)/../common/mkpath.c \
$(PRJ_DIR)/../common/util_arg.c \
$(PRJ_DIR)/../common/util_cache.c \
@@ -3492,12 +3583,13 @@ $(PRJ_DIR)/../btree/bt_compact.c \
$(PRJ_DIR)/../dbreg/dbreg_rec.c \
$(PRJ_DIR)/../dbreg/dbreg_stat.c \
$(PRJ_DIR)/../dbreg/dbreg_util.c \
- $(PRJ_DIR)/../env/db_salloc.c \
- $(PRJ_DIR)/../env/db_shash.c \
+ $(PRJ_DIR)/../env/env_alloc.c \
$(PRJ_DIR)/../env/env_config.c \
$(PRJ_DIR)/../env/env_failchk.c \
$(PRJ_DIR)/../env/env_file.c \
+ $(PRJ_DIR)/../env/env_globals.c \
$(PRJ_DIR)/../env/env_method.c \
+ $(PRJ_DIR)/../env/env_name.c \
$(PRJ_DIR)/../env/env_open.c \
$(PRJ_DIR)/../env/env_recover.c \
$(PRJ_DIR)/../env/env_region.c \
@@ -3540,6 +3632,7 @@ $(PRJ_DIR)/../btree/bt_compact.c \
$(PRJ_DIR)/../mp/mp_mvcc.c \
$(PRJ_DIR)/../mp/mp_region.c \
$(PRJ_DIR)/../mp/mp_register.c \
+ $(PRJ_DIR)/../mp/mp_resize.c \
$(PRJ_DIR)/../mp/mp_stat.c \
$(PRJ_DIR)/../mp/mp_sync.c \
$(PRJ_DIR)/../mp/mp_trickle.c \
@@ -3549,6 +3642,7 @@ $(PRJ_DIR)/../btree/bt_compact.c \
$(PRJ_DIR)/../mutex/mut_region.c \
$(PRJ_DIR)/../mutex/mut_stat.c \
$(PRJ_DIR)/../mutex/mut_tas.c \
+ $(PRJ_DIR)/../os/os_abort.c \
$(PRJ_DIR)/../os/os_alloc.c \
$(PRJ_DIR)/../os/os_clock.c \
$(PRJ_DIR)/../os/os_dir.c \
@@ -3583,6 +3677,7 @@ $(PRJ_DIR)/../btree/bt_compact.c \
$(PRJ_DIR)/../os_vxworks/os_vx_rpath.c \
$(PRJ_DIR)/../qam/qam_stub.c \
$(PRJ_DIR)/../rep/rep_stub.c \
+ $(PRJ_DIR)/../repmgr/repmgr_stub.c \
$(PRJ_DIR)/../txn/txn.c \
$(PRJ_DIR)/../txn/txn_auto.c \
$(PRJ_DIR)/../txn/txn_chkpt.c \
diff --git a/db/build_vxworks/clib_port.h b/db/build_vxworks/clib_port.h
index cfefbb37d..833a18497 100644
--- a/db/build_vxworks/clib_port.h
+++ b/db/build_vxworks/clib_port.h
@@ -1,3 +1,78 @@
+/* DO NOT EDIT: automatically built from dist/clib_port.in. */
+/*
+ * Minimum/maximum values for various types.
+ */
+#ifndef UINT16_MAX /* Maximum 16-bit unsigned. */
+#define UINT16_MAX 65535
+#endif
+#ifndef UINT32_MAX /* Maximum 32-bit unsigned. */
+#define UINT32_MAX 4294967295U
+#endif
+
+#ifndef INT_MAX
+#if SIZEOF_INT == 4
+#define INT_MAX 2147483647
+#elif SIZEOF_INT == 8
+#define INT_MAX 9223372036854775807
+#endif
+#endif
+
+#ifndef INT_MIN /* minimum (signed) int value */
+#define INT_MIN (-INT_MAX-1)
+#endif
+
+#ifndef UINT_MAX /* maximum (signed) int value */
+#if SIZEOF_INT == 4
+#define UINT_MAX 4294967295U
+#elif SIZEOF_INT == 8
+#define UINT_MAX 18446744073709551615U
+#endif
+#endif
+
+#ifndef LONG_MAX /* maximum (signed) long value */
+#if SIZEOF_LONG == 4
+#define LONG_MAX 2147483647
+#elif SIZEOF_LONG == 8
+#define LONG_MAX 9223372036854775807L
+#endif
+#endif
+
+#ifndef LONG_MIN /* minimum (signed) long value */
+#define LONG_MIN (-LONG_MAX-1)
+#endif
+
+#ifndef ULONG_MAX /* maximum (unsigned) long value */
+#if SIZEOF_LONG == 4
+#define ULONG_MAX 4294967295U
+#elif SIZEOF_LONG == 8
+#define ULONG_MAX 18446744073709551615UL
+#endif
+#endif
+
+#if defined(HAVE_64BIT_TYPES)
+/*
+ * Override the system's 64-bit min/max constants. AIX's 32-bit compiler can
+ * handle 64-bit values, but the system's constants don't include the LL/ULL
+ * suffix, and so can't be compiled using the 32-bit compiler.
+ */
+#undef INT64_MAX
+#undef INT64_MIN
+#undef UINT64_MAX
+
+#ifdef DB_WIN32
+#define INT64_MAX _I64_MAX
+#define INT64_MIN _I64_MIN
+#define UINT64_MAX _UI64_MAX
+#else
+#define INT64_MAX 9223372036854775807LL
+#define INT64_MIN (-INT64_MAX-1)
+#define UINT64_MAX 18446744073709551615ULL
+#endif /* DB_WIN32 */
+
+#define INT64_FMT "%lld"
+#define UINT64_FMT "%llu"
+#endif /* HAVE_64BIT_TYPES */
+
/*
* Exit success/failure macros.
*/
@@ -17,6 +92,21 @@
#ifndef HAVE_ATOL
#define atol __db_Catol
#endif
+#ifndef HAVE_FCLOSE
+#define fclose __db_Cfclose
+#endif
+#ifndef HAVE_FGETC
+#define fgetc __db_Cfgetc
+#endif
+#ifndef HAVE_FGETS
+#define fgets __db_Cfgets
+#endif
+#ifndef HAVE_FOPEN
+#define fopen __db_Cfopen
+#endif
+#ifndef HAVE_FWRITE
+#define fwrite __db_Cfwrite
+#endif
#ifndef HAVE_GETADDRINFO
#define freeaddrinfo(a) __db_Cfreeaddrinfo(a)
#define getaddrinfo(a, b, c, d) __db_Cgetaddrinfo(a, b, c, d)
@@ -32,9 +122,21 @@
#define optopt __db_Coptopt
#define optreset __db_Coptreset
#endif
+#ifndef HAVE_ISALPHA
+#define isalpha __db_Cisalpha
+#endif
+#ifndef HAVE_ISDIGIT
+#define isdigit __db_Cisdigit
+#endif
+#ifndef HAVE_ISPRINT
+#define isprint __db_Cisprint
+#endif
#ifndef HAVE_ISSPACE
#define isspace __db_Cisspace
#endif
+#ifndef HAVE_LOCALTIME
+#define localtime __db_Clocaltime
+#endif
#ifndef HAVE_MEMCMP
#define memcmp __db_Cmemcmp
#endif
@@ -48,6 +150,9 @@
#define printf __db_Cprintf
#define fprintf __db_Cfprintf
#endif
+#ifndef HAVE_QSORT
+#define qsort __db_Cqsort
+#endif
#ifndef HAVE_RAISE
#define raise __db_Craise
#endif
@@ -92,6 +197,9 @@
#ifndef HAVE_STRTOUL
#define strtoul __db_Cstrtoul
#endif
+#ifndef HAVE_TIME
+#define time __db_Ctime
+#endif
#ifndef HAVE_VSNPRINTF
#define vsnprintf __db_Cvsnprintf
#endif
diff --git a/db/build_vxworks/db.h b/db/build_vxworks/db.h
index e297af6d0..a241563ce 100644
--- a/db/build_vxworks/db.h
+++ b/db/build_vxworks/db.h
@@ -2,10 +2,9 @@
/*
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: db.in,v 12.108 2006/09/13 14:53:37 mjc Exp $
+ * $Id: db.in,v 12.158 2007/06/28 14:23:35 mjc Exp $
*
* db.h include file layout:
* General.
@@ -22,7 +21,7 @@
#ifndef _DB_H_
#define _DB_H_
-#ifndef __NO_SYSTEM_INCLUDES
+#ifndef __NO_SYSTEM_INCLUDES
#include <sys/types.h>
#include <stdio.h>
#endif
@@ -44,9 +43,9 @@ extern "C" {
* Berkeley DB version information.
*/
#define DB_VERSION_MAJOR 4
-#define DB_VERSION_MINOR 5
-#define DB_VERSION_PATCH 20
-#define DB_VERSION_STRING "Berkeley DB 4.5.20: (September 20, 2006)"
+#define DB_VERSION_MINOR 6
+#define DB_VERSION_PATCH 18
+#define DB_VERSION_STRING "Berkeley DB 4.6.18: (July 17, 2007)"
/*
* !!!
@@ -72,6 +71,8 @@ typedef unsigned long long u_int64_t;
/*
+ * Missing ANSI types.
+ *
* uintmax_t --
* Largest unsigned type, used to align structures in memory. We don't store
* floating point types in structures, so integral types should be sufficient
@@ -90,6 +91,7 @@ typedef unsigned long long u_int64_t;
typedef unsigned long uintmax_t;
typedef unsigned long uintptr_t;
+
/*
* Sequences are only available on machines with 64-bit integral types.
*/
@@ -130,7 +132,9 @@ struct __db_env; typedef struct __db_env DB_ENV;
struct __db_h_stat; typedef struct __db_h_stat DB_HASH_STAT;
struct __db_ilock; typedef struct __db_ilock DB_LOCK_ILOCK;
struct __db_lock_stat; typedef struct __db_lock_stat DB_LOCK_STAT;
+struct __db_lock_hstat; typedef struct __db_lock_hstat DB_LOCK_HSTAT;
struct __db_lock_u; typedef struct __db_lock_u DB_LOCK;
+struct __db_locker; typedef struct __db_locker DB_LOCKER;
struct __db_lockreq; typedef struct __db_lockreq DB_LOCKREQ;
struct __db_locktab; typedef struct __db_locktab DB_LOCKTAB;
struct __db_log; typedef struct __db_log DB_LOG;
@@ -150,6 +154,8 @@ struct __db_rep; typedef struct __db_rep DB_REP;
struct __db_rep_stat; typedef struct __db_rep_stat DB_REP_STAT;
struct __db_repmgr_site; \
typedef struct __db_repmgr_site DB_REPMGR_SITE;
+struct __db_repmgr_stat; \
+ typedef struct __db_repmgr_stat DB_REPMGR_STAT;
struct __db_seq_record; typedef struct __db_seq_record DB_SEQ_RECORD;
struct __db_seq_stat; typedef struct __db_seq_stat DB_SEQUENCE_STAT;
struct __db_sequence; typedef struct __db_sequence DB_SEQUENCE;
@@ -176,13 +182,14 @@ struct __db_dbt {
void *app_data;
#define DB_DBT_APPMALLOC 0x001 /* Callback allocated memory. */
-#define DB_DBT_ISSET 0x002 /* Lower level calls set value. */
-#define DB_DBT_MALLOC 0x004 /* Return in malloc'd memory. */
-#define DB_DBT_PARTIAL 0x008 /* Partial put/get. */
-#define DB_DBT_REALLOC 0x010 /* Return in realloc'd memory. */
-#define DB_DBT_USERCOPY 0x020 /* Use the user-supplied callback. */
-#define DB_DBT_USERMEM 0x040 /* Return in user's memory. */
-#define DB_DBT_DUPOK 0x080 /* Insert if duplicate. */
+#define DB_DBT_DUPOK 0x002 /* Insert if duplicate. */
+#define DB_DBT_ISSET 0x004 /* Lower level calls set value. */
+#define DB_DBT_MALLOC 0x008 /* Return in malloc'd memory. */
+#define DB_DBT_MULTIPLE 0x010 /* References multiple records. */
+#define DB_DBT_PARTIAL 0x020 /* Partial put/get. */
+#define DB_DBT_REALLOC 0x040 /* Return in realloc'd memory. */
+#define DB_DBT_USERCOPY 0x080 /* Use the user-supplied callback. */
+#define DB_DBT_USERMEM 0x100 /* Return in user's memory. */
u_int32_t flags;
};
@@ -201,10 +208,10 @@ struct __db_dbt {
#define DB_THREAD 0x0000080 /* Applications are threaded. */
#define DB_TRUNCATE 0x0000100 /* Discard existing DB (O_TRUNC). */
#define DB_TXN_NOSYNC 0x0000200 /* Do not sync log on commit. */
-#define DB_TXN_NOT_DURABLE 0x0000400 /* Do not log changes. */
-#define DB_TXN_WRITE_NOSYNC 0x0000800 /* Write the log but don't sync. */
-#define DB_USE_ENVIRON 0x0001000 /* Use the environment. */
-#define DB_USE_ENVIRON_ROOT 0x0002000 /* Use the environment if root. */
+#define DB_TXN_NOWAIT 0x0000400 /* Do not wait for locks. */
+#define DB_TXN_NOT_DURABLE 0x0000800 /* Do not log changes. */
+#define DB_TXN_WRITE_NOSYNC 0x0001000 /* Write the log but don't sync. */
+#define DB_SPARE_FLAG 0x0002000 /* Spare. */
/*
* Common flags --
@@ -216,9 +223,9 @@ struct __db_dbt {
* (Note: until the 4.3 release, legal to DB->associate, DB->del,
* DB->put, DB->remove, DB->rename and DB->truncate, and others.)
* DB_READ_COMMITTED:
- * DB->cursor, DB->get, DB->join, DBcursor->c_get, DB_ENV->txn_begin
+ * DB->cursor, DB->get, DB->join, DBcursor->get, DB_ENV->txn_begin
* DB_READ_UNCOMMITTED:
- * DB->cursor, DB->get, DB->join, DB->open, DBcursor->c_get,
+ * DB->cursor, DB->get, DB->join, DB->open, DBcursor->get,
* DB_ENV->txn_begin
* DB_TXN_SNAPSHOT:
* DB_ENV->set_flags, DB_ENV->txn_begin, DB->cursor
@@ -228,6 +235,7 @@ struct __db_dbt {
* without also changing the masks for the flags that can be OR'd into DB
* access method and cursor operation values.
*/
+#define DB_IGNORE_LEASE 0x01000000/* Ignore leases. */
#define DB_AUTO_COMMIT 0x02000000/* Implied transaction. */
#define DB_READ_COMMITTED 0x04000000/* Degree 2 isolation. */
@@ -254,19 +262,24 @@ struct __db_dbt {
#define DB_XA_CREATE 0x0000002 /* Open in an XA environment. */
/*
- * Flags private to DB_ENV->open.
+ * Flags shared by DB_ENV->remove and DB_ENV->open.
* Shared flags up to 0x0002000 */
-#define DB_INIT_CDB 0x0004000 /* Concurrent Access Methods. */
-#define DB_INIT_LOCK 0x0008000 /* Initialize locking. */
-#define DB_INIT_LOG 0x0010000 /* Initialize logging. */
-#define DB_INIT_MPOOL 0x0020000 /* Initialize mpool. */
-#define DB_INIT_REP 0x0040000 /* Initialize replication. */
-#define DB_INIT_TXN 0x0080000 /* Initialize transactions. */
-#define DB_LOCKDOWN 0x0100000 /* Lock memory into physical core. */
-#define DB_PRIVATE 0x0200000 /* DB_ENV is process local. */
-#define DB_RECOVER_FATAL 0x0400000 /* Run catastrophic recovery. */
-#define DB_REGISTER 0x0800000 /* Multi-process registry. */
-#define DB_SYSTEM_MEM 0x1000000 /* Use system-backed memory. */
+#define DB_USE_ENVIRON 0x0004000 /* Use the environment. */
+#define DB_USE_ENVIRON_ROOT 0x0008000 /* Use the environment if root. */
+/*
+ * Flags private to DB_ENV->open.
+ */
+#define DB_INIT_CDB 0x0010000 /* Concurrent Access Methods. */
+#define DB_INIT_LOCK 0x0020000 /* Initialize locking. */
+#define DB_INIT_LOG 0x0040000 /* Initialize logging. */
+#define DB_INIT_MPOOL 0x0080000 /* Initialize mpool. */
+#define DB_INIT_REP 0x0100000 /* Initialize replication. */
+#define DB_INIT_TXN 0x0200000 /* Initialize transactions. */
+#define DB_LOCKDOWN 0x0400000 /* Lock memory into physical core. */
+#define DB_PRIVATE 0x0800000 /* DB_ENV is process local. */
+#define DB_RECOVER_FATAL 0x1000000 /* Run catastrophic recovery. */
+#define DB_REGISTER 0x2000000 /* Multi-process registry. */
+#define DB_SYSTEM_MEM 0x4000000 /* Use system-backed memory. */
#define DB_JOINENV 0x0 /* Compatibility. */
@@ -288,8 +301,13 @@ struct __db_dbt {
/*
* Flags private to DB_ENV->txn_begin.
* Shared flags up to 0x0002000 */
-#define DB_TXN_NOWAIT 0x0004000 /* Do not wait for locks in this TXN. */
-#define DB_TXN_SYNC 0x0008000 /* Always sync log on commit. */
+#define DB_TXN_SYNC 0x0004000 /* Always sync log on commit. */
+#define DB_TXN_WAIT 0x0008000 /* Always wait for locks in this TXN. */
+
+/*
+ * Flags private to DB_ENV->txn_checkpoint.
+ * Shared flags up to 0x0002000 */
+#define DB_CKP_INTERNAL 0x0004000 /* Internally generated checkpoint. */
/*
* Flags private to DB_ENV->set_encrypt.
@@ -422,9 +440,11 @@ struct __db_mutex_stat {
u_int32_t st_mutex_inuse_max; /* Maximum mutexes ever in use */
/* The following fields are filled-in from other places. */
+#ifndef __TEST_DB_NO_STATISTICS
u_int32_t st_region_wait; /* Region lock granted after wait. */
u_int32_t st_region_nowait; /* Region lock granted without wait. */
roff_t st_regsize; /* Region size. */
+#endif
};
/* This is the length of the buffer passed to DB_ENV->thread_id_string() */
@@ -460,6 +480,11 @@ struct __db_mutex_stat {
#define DB_LOCK_SWITCH 0x010 /* Internal: switch existing lock. */
#define DB_LOCK_UPGRADE 0x020 /* Internal: upgrade existing lock. */
+/* Flag values for DbEnv.set_timeout. */
+#define DB_SET_LOCK_TIMEOUT 1 /* Set lock timeout */
+#define DB_SET_TXN_NOW 2 /* Timeout lock now (internal) */
+#define DB_SET_TXN_TIMEOUT 3 /* Set transaction timeout */
+
/*
* Simple R/W lock modes and for multi-granularity intention locking.
*
@@ -519,9 +544,10 @@ struct __db_lock_stat {
u_int32_t st_maxlockers; /* Maximum num of lockers in table. */
u_int32_t st_maxobjects; /* Maximum num of objects in table. */
int st_nmodes; /* Number of lock modes. */
+ u_int32_t st_nlockers; /* Current number of lockers. */
+#ifndef __TEST_DB_NO_STATISTICS
u_int32_t st_nlocks; /* Current number of locks. */
u_int32_t st_maxnlocks; /* Maximum number of locks so far. */
- u_int32_t st_nlockers; /* Current number of lockers. */
u_int32_t st_maxnlockers; /* Maximum number of lockers so far. */
u_int32_t st_nobjects; /* Current number of objects. */
u_int32_t st_maxnobjects; /* Maximum number of objects so far. */
@@ -536,9 +562,29 @@ struct __db_lock_stat {
u_int32_t st_nlocktimeouts; /* Number of lock timeouts. */
db_timeout_t st_txntimeout; /* Transaction timeout. */
u_int32_t st_ntxntimeouts; /* Number of transaction timeouts. */
+ u_int32_t st_objs_wait; /* Object lock granted after wait. */
+ u_int32_t st_objs_nowait; /* Object lock granted without wait. */
+ u_int32_t st_lockers_wait; /* Locker lock granted after wait. */
+ u_int32_t st_lockers_nowait; /* Locker lock granted without wait. */
+ u_int32_t st_locks_wait; /* Lock lock granted after wait. */
+ u_int32_t st_locks_nowait; /* Lock lock granted without wait. */
u_int32_t st_region_wait; /* Region lock granted after wait. */
u_int32_t st_region_nowait; /* Region lock granted without wait. */
+ u_int32_t st_hash_len; /* Max length of bucket. */
roff_t st_regsize; /* Region size. */
+#endif
+};
+
+struct __db_lock_hstat {
+ u_int32_t st_nrequests; /* Number of lock gets. */
+ u_int32_t st_nreleases; /* Number of lock puts. */
+ u_int32_t st_nupgrade; /* Number of lock upgrades. */
+ u_int32_t st_ndowngrade; /* Number of lock downgrades. */
+ u_int32_t st_lock_wait; /* Lock conflicts w/ subsequent wait */
+ u_int32_t st_lock_nowait; /* Lock conflicts w/o subsequent wait */
+ u_int32_t st_nlocktimeouts; /* Number of lock timeouts. */
+ u_int32_t st_ntxntimeouts; /* Number of transaction timeouts. */
+ u_int32_t st_hash_len; /* Max length of bucket. */
};
/*
@@ -579,7 +625,7 @@ struct __db_lockreq {
/*******************************************************
* Logging.
*******************************************************/
-#define DB_LOGVERSION 12 /* Current log version. */
+#define DB_LOGVERSION 13 /* Current log version. */
#define DB_LOGOLDVER 8 /* Oldest log version supported. */
#define DB_LOGMAGIC 0x040988
@@ -630,12 +676,12 @@ struct __db_lsn {
struct __db_log_cursor {
DB_ENV *dbenv; /* Enclosing dbenv. */
- DB_FH *c_fhp; /* File handle. */
- DB_LSN c_lsn; /* Cursor: LSN */
- u_int32_t c_len; /* Cursor: record length */
- u_int32_t c_prev; /* Cursor: previous record's offset */
+ DB_FH *fhp; /* File handle. */
+ DB_LSN lsn; /* Cursor: LSN */
+ u_int32_t len; /* Cursor: record length */
+ u_int32_t prev; /* Cursor: previous record's offset */
- DBT c_dbt; /* Return DBT. */
+ DBT dbt; /* Return DBT. */
DB_LSN p_lsn; /* Persist LSN. */
u_int32_t p_version; /* Persist version. */
@@ -665,11 +711,12 @@ struct __db_log_stat {
int st_mode; /* Log file permissions mode. */
u_int32_t st_lg_bsize; /* Log buffer size. */
u_int32_t st_lg_size; /* Log file size. */
+ u_int32_t st_wc_bytes; /* Bytes to log since checkpoint. */
+ u_int32_t st_wc_mbytes; /* Megabytes to log since checkpoint. */
+#ifndef __TEST_DB_NO_STATISTICS
u_int32_t st_record; /* Records entered into the log. */
u_int32_t st_w_bytes; /* Bytes to log. */
u_int32_t st_w_mbytes; /* Megabytes to log. */
- u_int32_t st_wc_bytes; /* Bytes to log since checkpoint. */
- u_int32_t st_wc_mbytes; /* Megabytes to log since checkpoint. */
u_int32_t st_wcount; /* Total I/O writes to the log. */
u_int32_t st_wcount_fill; /* Overflow writes to the log. */
u_int32_t st_rcount; /* Total I/O reads from the log. */
@@ -680,9 +727,10 @@ struct __db_log_stat {
u_int32_t st_cur_offset; /* Current log file offset. */
u_int32_t st_disk_file; /* Known on disk log file number. */
u_int32_t st_disk_offset; /* Known on disk log file offset. */
- roff_t st_regsize; /* Region size. */
u_int32_t st_maxcommitperflush; /* Max number of commits in a flush. */
u_int32_t st_mincommitperflush; /* Min number of commits in a flush. */
+ roff_t st_regsize; /* Region size. */
+#endif
};
/*
@@ -706,15 +754,16 @@ struct __db_log_stat {
#define DB_MPOOL_LAST 0x010 /* Return the last page. */
#define DB_MPOOL_NEW 0x020 /* Create a new page. */
-/* Flag values for DB_MPOOLFILE->put, DB_MPOOLFILE->set. */
-#define DB_MPOOL_DISCARD 0x001 /* Don't cache the page. */
+/* Undocumented flag value for DB_MPOOLFILE->close. */
+#define DB_MPOOL_DISCARD 0x001 /* Discard file. */
/* Flags values for DB_MPOOLFILE->set_flags. */
#define DB_MPOOL_NOFILE 0x001 /* Never open a backing file. */
#define DB_MPOOL_UNLINK 0x002 /* Unlink the file on last close. */
-/* Priority values for DB_MPOOLFILE->set_priority. */
+/* Priority values for DB_MPOOLFILE->{put,set_priority}. */
typedef enum {
+ DB_PRIORITY_UNCHANGED=0,
DB_PRIORITY_VERY_LOW=1,
DB_PRIORITY_LOW=2,
DB_PRIORITY_DEFAULT=3,
@@ -775,24 +824,24 @@ struct __db_mpoolfile {
int (*close) __P((DB_MPOOLFILE *, u_int32_t));
int (*get)
__P((DB_MPOOLFILE *, db_pgno_t *, DB_TXN *, u_int32_t, void *));
- int (*open) __P((DB_MPOOLFILE *, const char *, u_int32_t, int, size_t));
- int (*put) __P((DB_MPOOLFILE *, void *, u_int32_t));
- int (*set) __P((DB_MPOOLFILE *, void *, u_int32_t));
int (*get_clear_len) __P((DB_MPOOLFILE *, u_int32_t *));
- int (*set_clear_len) __P((DB_MPOOLFILE *, u_int32_t));
int (*get_fileid) __P((DB_MPOOLFILE *, u_int8_t *));
- int (*set_fileid) __P((DB_MPOOLFILE *, u_int8_t *));
int (*get_flags) __P((DB_MPOOLFILE *, u_int32_t *));
- int (*set_flags) __P((DB_MPOOLFILE *, u_int32_t, int));
int (*get_ftype) __P((DB_MPOOLFILE *, int *));
- int (*set_ftype) __P((DB_MPOOLFILE *, int));
+ int (*get_last_pgno) __P((DB_MPOOLFILE *, db_pgno_t *));
int (*get_lsn_offset) __P((DB_MPOOLFILE *, int32_t *));
- int (*set_lsn_offset) __P((DB_MPOOLFILE *, int32_t));
int (*get_maxsize) __P((DB_MPOOLFILE *, u_int32_t *, u_int32_t *));
- int (*set_maxsize) __P((DB_MPOOLFILE *, u_int32_t, u_int32_t));
int (*get_pgcookie) __P((DB_MPOOLFILE *, DBT *));
- int (*set_pgcookie) __P((DB_MPOOLFILE *, DBT *));
int (*get_priority) __P((DB_MPOOLFILE *, DB_CACHE_PRIORITY *));
+ int (*open) __P((DB_MPOOLFILE *, const char *, u_int32_t, int, size_t));
+ int (*put) __P((DB_MPOOLFILE *, void *, DB_CACHE_PRIORITY, u_int32_t));
+ int (*set_clear_len) __P((DB_MPOOLFILE *, u_int32_t));
+ int (*set_fileid) __P((DB_MPOOLFILE *, u_int8_t *));
+ int (*set_flags) __P((DB_MPOOLFILE *, u_int32_t, int));
+ int (*set_ftype) __P((DB_MPOOLFILE *, int));
+ int (*set_lsn_offset) __P((DB_MPOOLFILE *, int32_t));
+ int (*set_maxsize) __P((DB_MPOOLFILE *, u_int32_t, u_int32_t));
+ int (*set_pgcookie) __P((DB_MPOOLFILE *, DBT *));
int (*set_priority) __P((DB_MPOOLFILE *, DB_CACHE_PRIORITY));
int (*sync) __P((DB_MPOOLFILE *));
/* DB_MPOOLFILE PUBLIC HANDLE LIST END */
@@ -817,12 +866,14 @@ struct __db_mpoolfile {
struct __db_mpool_stat {
u_int32_t st_gbytes; /* Total cache size: GB. */
u_int32_t st_bytes; /* Total cache size: B. */
- u_int32_t st_ncache; /* Number of caches. */
- roff_t st_regsize; /* Region size. */
+ u_int32_t st_ncache; /* Number of cache regions. */
+ u_int32_t st_max_ncache; /* Maximum number of regions. */
size_t st_mmapsize; /* Maximum file size for mmap. */
int st_maxopenfd; /* Maximum number of open fd's. */
int st_maxwrite; /* Maximum buffers to write. */
- int st_maxwrite_sleep; /* Sleep after writing max buffers. */
+ db_timeout_t st_maxwrite_sleep; /* Sleep after writing max buffers. */
+ u_int32_t st_pages; /* Total number of pages. */
+#ifndef __TEST_DB_NO_STATISTICS
u_int32_t st_map; /* Pages from mapped files. */
u_int32_t st_cache_hit; /* Pages found in the cache. */
u_int32_t st_cache_miss; /* Pages not found in the cache. */
@@ -832,7 +883,6 @@ struct __db_mpool_stat {
u_int32_t st_ro_evict; /* Clean pages forced from the cache. */
u_int32_t st_rw_evict; /* Dirty pages forced from the cache. */
u_int32_t st_page_trickle; /* Pages written by memp_trickle. */
- u_int32_t st_pages; /* Total number of pages. */
u_int32_t st_page_clean; /* Clean pages. */
u_int32_t st_page_dirty; /* Dirty pages. */
u_int32_t st_hash_buckets; /* Number of hash buckets. */
@@ -854,18 +904,22 @@ struct __db_mpool_stat {
u_int32_t st_alloc_pages; /* Pages checked during allocation. */
u_int32_t st_alloc_max_pages; /* Max checked during allocation. */
u_int32_t st_io_wait; /* Thread waited on buffer I/O. */
+ roff_t st_regsize; /* Region size. */
+#endif
};
/* Mpool file statistics structure. */
struct __db_mpool_fstat {
char *file_name; /* File name. */
u_int32_t st_pagesize; /* Page size. */
+#ifndef __TEST_DB_NO_STATISTICS
u_int32_t st_map; /* Pages from mapped files. */
u_int32_t st_cache_hit; /* Pages found in the cache. */
u_int32_t st_cache_miss; /* Pages not found in the cache. */
u_int32_t st_page_create; /* Pages created in the cache. */
u_int32_t st_page_in; /* Pages read in. */
u_int32_t st_page_out; /* Pages written out. */
+#endif
};
/*******************************************************
@@ -899,7 +953,8 @@ struct __db_txn {
DB_TXN *parent; /* Pointer to transaction's parent. */
u_int32_t txnid; /* Unique transaction id. */
- char *name; /* Transaction name */
+ char *name; /* Transaction name. */
+ DB_LOCKER *locker; /* Locker for this txn. */
db_threadid_t tid; /* Thread id for use in MT XA. */
void *td; /* Detail structure within region. */
@@ -940,7 +995,7 @@ struct __db_txn {
struct {
struct __txn_event *tqh_first;
struct __txn_event **tqh_last;
- } events;
+ } events; /* Links deferred events. */
/*
* !!!
@@ -950,7 +1005,7 @@ struct __db_txn {
struct {
struct __txn_logrec *stqh_first;
struct __txn_logrec **stqh_last;
- } logs; /* Links deferred events. */
+ } logs; /* Links in memory log records. */
/*
* !!!
@@ -1047,6 +1102,9 @@ struct __db_txn_active {
};
struct __db_txn_stat {
+ u_int32_t st_nrestores; /* number of restored transactions
+ after recovery. */
+#ifndef __TEST_DB_NO_STATISTICS
DB_LSN st_last_ckp; /* lsn of the last checkpoint */
time_t st_time_ckp; /* time of last checkpoint */
u_int32_t st_last_txnid; /* last transaction id given out */
@@ -1056,14 +1114,13 @@ struct __db_txn_stat {
u_int32_t st_ncommits; /* number of committed transactions */
u_int32_t st_nactive; /* number of active transactions */
u_int32_t st_nsnapshot; /* number of snapshot transactions */
- u_int32_t st_nrestores; /* number of restored transactions
- after recovery. */
u_int32_t st_maxnactive; /* maximum active transactions */
u_int32_t st_maxnsnapshot; /* maximum snapshot transactions */
DB_TXN_ACTIVE *st_txnarray; /* array of active transactions */
u_int32_t st_region_wait; /* Region lock granted after wait. */
u_int32_t st_region_nowait; /* Region lock granted without wait. */
roff_t st_regsize; /* Region size. */
+#endif
};
/*******************************************************
@@ -1088,8 +1145,11 @@ struct __db_txn_stat {
*/
#define DB_REP_CLIENT 1
#define DB_REP_ELECTION 2
-#define DB_REP_FULL_ELECTION 3
-#define DB_REP_MASTER 4
+#define DB_REP_MASTER 3
+
+#define DB_REPFLAGS_MASK 0x000000ff /* Mask for rep modes. */
+
+#define DB_REP_DEFAULT_PRIORITY 100
/* Acknowledgement policies. */
#define DB_REPMGR_ACKS_ALL 1
@@ -1099,33 +1159,38 @@ struct __db_txn_stat {
#define DB_REPMGR_ACKS_ONE_PEER 5
#define DB_REPMGR_ACKS_QUORUM 6
-/* Replication Framework timeout configuration values. */
-#define DB_REP_ACK_TIMEOUT 1
-#define DB_REP_ELECTION_TIMEOUT 2
-#define DB_REP_ELECTION_RETRY 3
-#define DB_REP_CONNECTION_RETRY 4
+/* Replication timeout configuration values. */
+#define DB_REP_ACK_TIMEOUT 1 /* RepMgr acknowledgements. */
+#define DB_REP_CHECKPOINT_DELAY 2 /* RepMgr acknowledgements. */
+#define DB_REP_CONNECTION_RETRY 3 /* RepMgr connections. */
+#define DB_REP_ELECTION_RETRY 4 /* RepMgr elect retries. */
+#define DB_REP_ELECTION_TIMEOUT 5 /* Rep normal elections. */
+#define DB_REP_FULL_ELECTION_TIMEOUT 6 /* Rep full elections. */
+#define DB_REP_LEASE_TIMEOUT 7 /* Master leases. */
/* Event notification types. */
#define DB_EVENT_NO_SUCH_EVENT 0 /* out-of-band sentinel value */
#define DB_EVENT_PANIC 1
#define DB_EVENT_REP_CLIENT 2
-#define DB_EVENT_REP_MASTER 3
-#define DB_EVENT_REP_NEWMASTER 4
-#define DB_EVENT_REP_STARTUPDONE 5
-#define DB_EVENT_WRITE_FAILED 6
+#define DB_EVENT_REP_ELECTED 3
+#define DB_EVENT_REP_MASTER 4
+#define DB_EVENT_REP_NEWMASTER 5
+#define DB_EVENT_REP_PERM_FAILED 6
+#define DB_EVENT_REP_STARTUPDONE 7
+#define DB_EVENT_WRITE_FAILED 8
/* Flag value for repmgr_add_remote_site. */
#define DB_REPMGR_PEER 0x01
/* Replication Manager site status. */
struct __db_repmgr_site {
- int eid;
- char *host;
- u_int port;
+ int eid;
+ char *host;
+ u_int port;
#define DB_REPMGR_CONNECTED 0x01
#define DB_REPMGR_DISCONNECTED 0x02
- u_int32_t status;
+ u_int32_t status;
};
/* Replication statistics. */
@@ -1139,6 +1204,9 @@ struct __db_rep_stat {
* off somewhat (or, on unreasonable architectures under unlucky
* circumstances, garbaged).
*/
+ u_int32_t st_log_queued; /* Log records currently queued.+ */
+ u_int32_t st_startup_complete; /* Site completed client sync-up. */
+#ifndef __TEST_DB_NO_STATISTICS
u_int32_t st_status; /* Current replication status. */
DB_LSN st_next_lsn; /* Next LSN to use or expect. */
DB_LSN st_waiting_lsn; /* LSN we're awaiting, if any. */
@@ -1161,7 +1229,6 @@ struct __db_rep_stat {
u_int32_t st_gen; /* Current generation number. */
u_int32_t st_egen; /* Current election gen number. */
u_int32_t st_log_duplicated; /* Log records received multiply.+ */
- u_int32_t st_log_queued; /* Log records currently queued.+ */
u_int32_t st_log_queued_max; /* Max. log records queued at once.+ */
u_int32_t st_log_queued_total; /* Total # of log recs. ever queued.+ */
u_int32_t st_log_records; /* Log records received and put.+ */
@@ -1183,8 +1250,8 @@ struct __db_rep_stat {
u_int32_t st_pg_duplicated; /* Pages received multiply.+ */
u_int32_t st_pg_records; /* Pages received and stored.+ */
u_int32_t st_pg_requested; /* Pages missed and requested.+ */
- u_int32_t st_startup_complete; /* Site completed client sync-up. */
u_int32_t st_txns_applied; /* # of transactions applied.+ */
+ u_int32_t st_startsync_delayed; /* # of STARTSYNC msgs delayed.+ */
/* Elections generally. */
u_int32_t st_elections; /* # of elections held.+ */
@@ -1202,6 +1269,17 @@ struct __db_rep_stat {
int st_election_votes; /* Votes received in this round. */
u_int32_t st_election_sec; /* Last election time seconds. */
u_int32_t st_election_usec; /* Last election time useconds. */
+#endif
+};
+
+/* Replication Manager statistics. */
+struct __db_repmgr_stat {
+ u_int32_t st_perm_failed; /* # of insufficiently ack'ed msgs. */
+ u_int32_t st_msgs_queued; /* # msgs queued for network delay. */
+ u_int32_t st_msgs_dropped; /* # msgs discarded due to excessive
+ queue length. */
+ u_int32_t st_connection_drop; /* Existing connections dropped. */
+ u_int32_t st_connect_fail; /* Failed new connection attempts. */
};
/*******************************************************
@@ -1291,7 +1369,7 @@ typedef enum {
#define DB_BTREEOLDVER 8 /* Oldest btree version supported. */
#define DB_BTREEMAGIC 0x053162
-#define DB_HASHVERSION 8 /* Current hash version. */
+#define DB_HASHVERSION 9 /* Current hash version. */
#define DB_HASHOLDVER 7 /* Oldest hash version supported. */
#define DB_HASHMAGIC 0x061561
@@ -1306,39 +1384,37 @@ typedef enum {
* DB access method and cursor operation values. Each value is an operation
* code to which additional bit flags are added.
*/
-#define DB_AFTER 1 /* c_put() */
-#define DB_APPEND 2 /* put() */
-#define DB_BEFORE 3 /* c_put() */
-#define DB_CONSUME 4 /* get() */
-#define DB_CONSUME_WAIT 5 /* get() */
-#define DB_CURRENT 6 /* c_get(), c_put(), DB_LOGC->get() */
-#define DB_FIRST 7 /* c_get(), DB_LOGC->get() */
-#define DB_GET_BOTH 8 /* get(), c_get() */
-#define DB_GET_BOTHC 9 /* c_get() (internal) */
-#define DB_GET_BOTH_RANGE 10 /* get(), c_get() */
-#define DB_GET_RECNO 11 /* c_get() */
-#define DB_JOIN_ITEM 12 /* c_get(); do not do primary lookup */
-#define DB_KEYFIRST 13 /* c_put() */
-#define DB_KEYLAST 14 /* c_put() */
-#define DB_LAST 15 /* c_get(), DB_LOGC->get() */
-#define DB_NEXT 16 /* c_get(), DB_LOGC->get() */
-#define DB_NEXT_DUP 17 /* c_get() */
-#define DB_NEXT_NODUP 18 /* c_get() */
-#define DB_NODUPDATA 19 /* put(), c_put() */
-#define DB_NOOVERWRITE 20 /* put() */
-#define DB_NOSYNC 21 /* close() */
-#define DB_POSITION 22 /* c_dup() */
-#define DB_PREV 23 /* c_get(), DB_LOGC->get() */
-#define DB_PREV_NODUP 24 /* c_get(), DB_LOGC->get() */
-#define DB_SET 25 /* c_get(), DB_LOGC->get() */
-#define DB_SET_LOCK_TIMEOUT 26 /* set_timout() */
-#define DB_SET_RANGE 27 /* c_get() */
-#define DB_SET_RECNO 28 /* get(), c_get() */
-#define DB_SET_TXN_NOW 29 /* set_timout() (internal) */
-#define DB_SET_TXN_TIMEOUT 30 /* set_timout() */
-#define DB_UPDATE_SECONDARY 31 /* c_get(), c_del() (internal) */
-#define DB_WRITECURSOR 32 /* cursor() */
-#define DB_WRITELOCK 33 /* cursor() (internal) */
+#define DB_AFTER 1 /* Dbc.put */
+#define DB_APPEND 2 /* Db.put */
+#define DB_BEFORE 3 /* Dbc.put */
+#define DB_CONSUME 4 /* Db.get */
+#define DB_CONSUME_WAIT 5 /* Db.get */
+#define DB_CURRENT 6 /* Dbc.get, Dbc.put, DbLogc.get */
+#define DB_FIRST 7 /* Dbc.get, DbLogc->get */
+#define DB_GET_BOTH 8 /* Db.get, Dbc.get */
+#define DB_GET_BOTHC 9 /* Dbc.get (internal) */
+#define DB_GET_BOTH_RANGE 10 /* Db.get, Dbc.get */
+#define DB_GET_RECNO 11 /* Dbc.get */
+#define DB_JOIN_ITEM 12 /* Dbc.get; don't do primary lookup */
+#define DB_KEYFIRST 13 /* Dbc.put */
+#define DB_KEYLAST 14 /* Dbc.put */
+#define DB_LAST 15 /* Dbc.get, DbLogc->get */
+#define DB_NEXT 16 /* Dbc.get, DbLogc->get */
+#define DB_NEXT_DUP 17 /* Dbc.get */
+#define DB_NEXT_NODUP 18 /* Dbc.get */
+#define DB_NODUPDATA 19 /* Db.put, Dbc.put */
+#define DB_NOOVERWRITE 20 /* Db.put */
+#define DB_NOSYNC 21 /* Db.close */
+#define DB_POSITION 22 /* Dbc.dup */
+#define DB_PREV 23 /* Dbc.get, DbLogc->get */
+#define DB_PREV_DUP 24 /* Dbc.get */
+#define DB_PREV_NODUP 25 /* Dbc.get */
+#define DB_SET 26 /* Dbc.get, DbLogc->get */
+#define DB_SET_RANGE 27 /* Dbc.get */
+#define DB_SET_RECNO 28 /* Db.get, Dbc.get */
+#define DB_UPDATE_SECONDARY 29 /* Dbc.get, Dbc.del (internal) */
+#define DB_WRITECURSOR 30 /* Db.cursor */
+#define DB_WRITELOCK 31 /* Db.cursor (internal) */
/* This has to change when the max opcode hits 255. */
#define DB_OPFLAGS_MASK 0x000000ff /* Mask for operations flags. */
@@ -1383,8 +1459,8 @@ typedef enum {
#define DB_REP_IGNORE (-30983)/* This msg should be ignored.*/
#define DB_REP_ISPERM (-30982)/* Cached not written perm written.*/
#define DB_REP_JOIN_FAILURE (-30981)/* Unable to join replication group. */
-#define DB_REP_LOCKOUT (-30980)/* API/Replication lockout now. */
-#define DB_REP_NEWMASTER (-30979)/* We have learned of a new master. */
+#define DB_REP_LEASE_EXPIRED (-30980)/* Master lease has expired. */
+#define DB_REP_LOCKOUT (-30979)/* API/Replication lockout now. */
#define DB_REP_NEWSITE (-30978)/* New site entered system. */
#define DB_REP_NOTPERM (-30977)/* Permanent log record not written. */
#define DB_REP_UNAVAIL (-30976)/* Site cannot currently be reached. */
@@ -1396,17 +1472,19 @@ typedef enum {
/* DB (private) error return codes. */
#define DB_ALREADY_ABORTED (-30899)
#define DB_DELETED (-30898)/* Recovery file marked deleted. */
-#define DB_NEEDSPLIT (-30897)/* Page needs to be split. */
-#define DB_REP_BULKOVF (-30896)/* Rep bulk buffer overflow. */
-#define DB_REP_EGENCHG (-30895)/* Egen changed while in election. */
-#define DB_REP_LOGREADY (-30894)/* Rep log ready for recovery. */
-#define DB_REP_PAGEDONE (-30893)/* This page was already done. */
-#define DB_SURPRISE_KID (-30892)/* Child commit where parent
+#define DB_EVENT_NOT_HANDLED (-30897)/* Forward event to application. */
+#define DB_NEEDSPLIT (-30896)/* Page needs to be split. */
+#define DB_REP_BULKOVF (-30895)/* Rep bulk buffer overflow. */
+#define DB_REP_EGENCHG (-30894)/* Egen changed while in election. */
+#define DB_REP_LOGREADY (-30893)/* Rep log ready for recovery. */
+#define DB_REP_NEWMASTER (-30892)/* We have learned of a new master. */
+#define DB_REP_PAGEDONE (-30891)/* This page was already done. */
+#define DB_SURPRISE_KID (-30890)/* Child commit where parent
didn't know it was a parent. */
-#define DB_SWAPBYTES (-30891)/* Database needs byte swapping. */
-#define DB_TIMEOUT (-30890)/* Timed out waiting for election. */
-#define DB_TXN_CKP (-30889)/* Encountered ckp record in log. */
-#define DB_VERIFY_FATAL (-30888)/* DB->verify cannot proceed. */
+#define DB_SWAPBYTES (-30889)/* Database needs byte swapping. */
+#define DB_TIMEOUT (-30888)/* Timed out waiting for election. */
+#define DB_TXN_CKP (-30887)/* Encountered ckp record in log. */
+#define DB_VERIFY_FATAL (-30886)/* DB->verify cannot proceed. */
/* Database handle. */
struct __db {
@@ -1414,6 +1492,7 @@ struct __db {
* Public: owned by the application.
*******************************************************/
u_int32_t pgsize; /* Database logical page size. */
+ DB_CACHE_PRIORITY priority; /* Database priority in cache. */
/* Callbacks. */
int (*db_append_recno) __P((DB *, DBT *, db_recno_t));
@@ -1444,9 +1523,10 @@ struct __db {
FNAME *log_filename; /* File's naming info for logging. */
db_pgno_t meta_pgno; /* Meta page number */
- u_int32_t lid; /* Locker id for handle locking. */
- u_int32_t cur_lid; /* Current handle lock holder. */
- u_int32_t associate_lid; /* Locker id for DB->associate call. */
+ DB_LOCKER *locker; /* Locker for handle locking. */
+ DB_LOCKER *cur_locker; /* Current handle lock holder. */
+ DB_TXN *cur_txn; /* Opening transaction. */
+ DB_LOCKER *associate_locker; /* Locker for DB->associate call. */
DB_LOCK handle_lock; /* Lock held on this handle. */
u_int cl_id; /* RPC: remote client id. */
@@ -1525,8 +1605,8 @@ struct __db {
} s_secondaries;
/*
- * List entries for secondaries, and reference count of how
- * many threads are updating this secondary (see __db_c_put).
+ * List entries for secondaries, and reference count of how many
+ * threads are updating this secondary (see Dbc.put).
*
* !!!
* Note that these are synchronized by the primary's mutex, but
@@ -1572,6 +1652,7 @@ struct __db {
int (*del) __P((DB *, DB_TXN *, DBT *, u_int32_t));
void (*err) __P((DB *, int, const char *, ...));
void (*errx) __P((DB *, const char *, ...));
+ int (*exists) __P((DB *, DB_TXN *, DBT *, u_int32_t));
int (*fd) __P((DB *, int *));
int (*get) __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t));
int (*get_bt_minkey) __P((DB *, u_int32_t *));
@@ -1588,8 +1669,10 @@ struct __db {
int (*get_lorder) __P((DB *, int *));
DB_MPOOLFILE *(*get_mpf) __P((DB *));
void (*get_msgfile) __P((DB *, FILE **));
+ int (*get_multiple) __P((DB *));
int (*get_open_flags) __P((DB *, u_int32_t *));
int (*get_pagesize) __P((DB *, u_int32_t *));
+ int (*get_priority) __P((DB *, DB_CACHE_PRIORITY *));
int (*get_q_extentsize) __P((DB *, u_int32_t *));
int (*get_re_delim) __P((DB *, int *));
int (*get_re_len) __P((DB *, u_int32_t *));
@@ -1625,6 +1708,8 @@ struct __db {
void (*set_errpfx) __P((DB *, const char *));
int (*set_feedback) __P((DB *, void (*)(DB *, int, int)));
int (*set_flags) __P((DB *, u_int32_t));
+ int (*set_h_compare)
+ __P((DB *, int (*)(DB *, const DBT *, const DBT *)));
int (*set_h_ffactor) __P((DB *, u_int32_t));
int (*set_h_hash)
__P((DB *, u_int32_t (*)(DB *, const void *, u_int32_t)));
@@ -1634,6 +1719,7 @@ struct __db {
void (*set_msgfile) __P((DB *, FILE *));
int (*set_pagesize) __P((DB *, u_int32_t));
int (*set_paniccall) __P((DB *, void (*)(DB_ENV *, int)));
+ int (*set_priority) __P((DB *, DB_CACHE_PRIORITY));
int (*set_q_extentsize) __P((DB *, u_int32_t));
int (*set_re_delim) __P((DB *, int));
int (*set_re_len) __P((DB *, u_int32_t));
@@ -1677,36 +1763,35 @@ struct __db {
int preserve_fid; /* Do not free fileid on close. */
#define DB_AM_CHKSUM 0x00000001 /* Checksumming */
-#define DB_AM_CL_WRITER 0x00000002 /* Allow writes in client replica */
-#define DB_AM_COMPENSATE 0x00000004 /* Created by compensating txn */
-#define DB_AM_CREATED 0x00000008 /* Database was created upon open */
-#define DB_AM_CREATED_MSTR 0x00000010 /* Encompassing file was created */
-#define DB_AM_DBM_ERROR 0x00000020 /* Error in DBM/NDBM database */
-#define DB_AM_DELIMITER 0x00000040 /* Variable length delimiter set */
-#define DB_AM_DISCARD 0x00000080 /* Discard any cached pages */
-#define DB_AM_DUP 0x00000100 /* DB_DUP */
-#define DB_AM_DUPSORT 0x00000200 /* DB_DUPSORT */
-#define DB_AM_ENCRYPT 0x00000400 /* Encryption */
-#define DB_AM_FIXEDLEN 0x00000800 /* Fixed-length records */
-#define DB_AM_INMEM 0x00001000 /* In-memory; no sync on close */
-#define DB_AM_INORDER 0x00002000 /* DB_INORDER */
-#define DB_AM_IN_RENAME 0x00004000 /* File is being renamed */
-#define DB_AM_NOT_DURABLE 0x00008000 /* Do not log changes */
-#define DB_AM_OPEN_CALLED 0x00010000 /* DB->open called */
-#define DB_AM_PAD 0x00020000 /* Fixed-length record pad */
-#define DB_AM_PGDEF 0x00040000 /* Page size was defaulted */
-#define DB_AM_RDONLY 0x00080000 /* Database is readonly */
-#define DB_AM_READ_UNCOMMITTED 0x00100000 /* Support degree 1 isolation */
-#define DB_AM_RECNUM 0x00200000 /* DB_RECNUM */
-#define DB_AM_RECOVER 0x00400000 /* DB opened by recovery routine */
-#define DB_AM_RENUMBER 0x00800000 /* DB_RENUMBER */
-#define DB_AM_REVSPLITOFF 0x01000000 /* DB_REVSPLITOFF */
-#define DB_AM_SECONDARY 0x02000000 /* Database is a secondary index */
-#define DB_AM_SNAPSHOT 0x04000000 /* DB_SNAPSHOT */
-#define DB_AM_SUBDB 0x08000000 /* Subdatabases supported */
-#define DB_AM_SWAP 0x10000000 /* Pages need to be byte-swapped */
-#define DB_AM_TXN 0x20000000 /* Opened in a transaction */
-#define DB_AM_VERIFYING 0x40000000 /* DB handle is in the verifier */
+#define DB_AM_COMPENSATE 0x00000002 /* Created by compensating txn */
+#define DB_AM_CREATED 0x00000004 /* Database was created upon open */
+#define DB_AM_CREATED_MSTR 0x00000008 /* Encompassing file was created */
+#define DB_AM_DBM_ERROR 0x00000010 /* Error in DBM/NDBM database */
+#define DB_AM_DELIMITER 0x00000020 /* Variable length delimiter set */
+#define DB_AM_DISCARD 0x00000040 /* Discard any cached pages */
+#define DB_AM_DUP 0x00000080 /* DB_DUP */
+#define DB_AM_DUPSORT 0x00000100 /* DB_DUPSORT */
+#define DB_AM_ENCRYPT 0x00000200 /* Encryption */
+#define DB_AM_FIXEDLEN 0x00000400 /* Fixed-length records */
+#define DB_AM_INMEM 0x00000800 /* In-memory; no sync on close */
+#define DB_AM_INORDER 0x00001000 /* DB_INORDER */
+#define DB_AM_IN_RENAME 0x00002000 /* File is being renamed */
+#define DB_AM_NOT_DURABLE 0x00004000 /* Do not log changes */
+#define DB_AM_OPEN_CALLED 0x00008000 /* DB->open called */
+#define DB_AM_PAD 0x00010000 /* Fixed-length record pad */
+#define DB_AM_PGDEF 0x00020000 /* Page size was defaulted */
+#define DB_AM_RDONLY 0x00040000 /* Database is readonly */
+#define DB_AM_READ_UNCOMMITTED 0x00080000 /* Support degree 1 isolation */
+#define DB_AM_RECNUM 0x00100000 /* DB_RECNUM */
+#define DB_AM_RECOVER 0x00200000 /* DB opened by recovery routine */
+#define DB_AM_RENUMBER 0x00400000 /* DB_RENUMBER */
+#define DB_AM_REVSPLITOFF 0x00800000 /* DB_REVSPLITOFF */
+#define DB_AM_SECONDARY 0x01000000 /* Database is a secondary index */
+#define DB_AM_SNAPSHOT 0x02000000 /* DB_SNAPSHOT */
+#define DB_AM_SUBDB 0x04000000 /* Subdatabases supported */
+#define DB_AM_SWAP 0x08000000 /* Pages need to be byte-swapped */
+#define DB_AM_TXN 0x10000000 /* Opened in a transaction */
+#define DB_AM_VERIFYING 0x20000000 /* DB handle is in the verifier */
u_int32_t orig_flags; /* Flags at open, for refresh */
u_int32_t flags;
};
@@ -1777,6 +1862,7 @@ struct __db {
struct __dbc {
DB *dbp; /* Related DB access method. */
DB_TXN *txn; /* Associated transaction. */
+ DB_CACHE_PRIORITY priority; /* Priority in cache. */
/*
* Active/free cursor queues.
@@ -1810,7 +1896,7 @@ struct __dbc {
DBT my_rdata; /* Space for returned data. */
void *lref; /* Reference to default locker. */
- u_int32_t locker; /* Locker for this operation. */
+ DB_LOCKER *locker; /* Locker for this operation. */
DBT lock_dbt; /* DBT referencing lock. */
DB_LOCK_ILOCK lock; /* Object to be locked. */
DB_LOCK mylock; /* CDB lock held on this cursor. */
@@ -1822,6 +1908,18 @@ struct __dbc {
DBC_INTERNAL *internal; /* Access method private. */
/* DBC PUBLIC HANDLE LIST BEGIN */
+ int (*close) __P((DBC *));
+ int (*count) __P((DBC *, db_recno_t *, u_int32_t));
+ int (*del) __P((DBC *, u_int32_t));
+ int (*dup) __P((DBC *, DBC **, u_int32_t));
+ int (*get) __P((DBC *, DBT *, DBT *, u_int32_t));
+ int (*get_priority) __P((DBC *, DB_CACHE_PRIORITY *));
+ int (*pget) __P((DBC *, DBT *, DBT *, DBT *, u_int32_t));
+ int (*put) __P((DBC *, DBT *, DBT *, u_int32_t));
+ int (*set_priority) __P((DBC *, DB_CACHE_PRIORITY));
+ /* DBC PUBLIC HANDLE LIST END */
+
+ /* The following are the method names deprecated in the 4.6 release. */
int (*c_close) __P((DBC *));
int (*c_count) __P((DBC *, db_recno_t *, u_int32_t));
int (*c_del) __P((DBC *, u_int32_t));
@@ -1829,16 +1927,15 @@ struct __dbc {
int (*c_get) __P((DBC *, DBT *, DBT *, u_int32_t));
int (*c_pget) __P((DBC *, DBT *, DBT *, DBT *, u_int32_t));
int (*c_put) __P((DBC *, DBT *, DBT *, u_int32_t));
- /* DBC PUBLIC HANDLE LIST END */
/* DBC PRIVATE HANDLE LIST BEGIN */
- int (*c_am_bulk) __P((DBC *, DBT *, u_int32_t));
- int (*c_am_close) __P((DBC *, db_pgno_t, int *));
- int (*c_am_del) __P((DBC *));
- int (*c_am_destroy) __P((DBC *));
- int (*c_am_get) __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *));
- int (*c_am_put) __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *));
- int (*c_am_writelock) __P((DBC *));
+ int (*am_bulk) __P((DBC *, DBT *, u_int32_t));
+ int (*am_close) __P((DBC *, db_pgno_t, int *));
+ int (*am_del) __P((DBC *));
+ int (*am_destroy) __P((DBC *));
+ int (*am_get) __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *));
+ int (*am_put) __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *));
+ int (*am_writelock) __P((DBC *));
/* DBC PRIVATE HANDLE LIST END */
/*
@@ -1879,6 +1976,7 @@ struct __db_bt_stat {
u_int32_t bt_metaflags; /* Metadata flags. */
u_int32_t bt_nkeys; /* Number of unique keys. */
u_int32_t bt_ndata; /* Number of data items. */
+ u_int32_t bt_pagecnt; /* Page count. */
u_int32_t bt_pagesize; /* Page size. */
u_int32_t bt_minkey; /* Minkey value. */
u_int32_t bt_re_len; /* Fixed-length record length. */
@@ -1918,6 +2016,7 @@ struct __db_h_stat {
u_int32_t hash_metaflags; /* Metadata flags. */
u_int32_t hash_nkeys; /* Number of unique keys. */
u_int32_t hash_ndata; /* Number of data items. */
+ u_int32_t hash_pagecnt; /* Page count. */
u_int32_t hash_pagesize; /* Page size. */
u_int32_t hash_ffactor; /* Fill factor specified at create. */
u_int32_t hash_buckets; /* Number of hash buckets. */
@@ -1989,10 +2088,12 @@ struct __db_env {
* there are ever more than 32 entries, convert to a bit array.
*/
#define DB_VERB_DEADLOCK 0x0001 /* Deadlock detection information. */
-#define DB_VERB_RECOVERY 0x0002 /* Recovery information. */
-#define DB_VERB_REGISTER 0x0004 /* Dump waits-for table. */
-#define DB_VERB_REPLICATION 0x0008 /* Replication information. */
-#define DB_VERB_WAITSFOR 0x0010 /* Dump waits-for table. */
+#define DB_VERB_FILEOPS 0x0002 /* Major file operations. */
+#define DB_VERB_FILEOPS_ALL 0x0004 /* All file operations. */
+#define DB_VERB_RECOVERY 0x0008 /* Recovery information. */
+#define DB_VERB_REGISTER 0x0010 /* Dump waits-for table. */
+#define DB_VERB_REPLICATION 0x0020 /* Replication information. */
+#define DB_VERB_WAITSFOR 0x0040 /* Dump waits-for table. */
u_int32_t verbose; /* Verbose output. */
void *app_private; /* Application-private handle. */
@@ -2029,14 +2130,15 @@ struct __db_env {
int lg_filemode; /* Log file permission mode. */
/* Memory pool. */
- u_int32_t mp_gbytes; /* Cachesize: GB. */
- u_int32_t mp_bytes; /* Cachesize: Bytes. */
- u_int mp_ncache; /* Number of cache regions. */
+ u_int mp_ncache; /* Initial number of cache regions. */
+ u_int32_t mp_gbytes; /* Cache size: GB. */
+ u_int32_t mp_bytes; /* Cache size: bytes. */
+ u_int32_t mp_max_gbytes; /* Maximum cache size: GB. */
+ u_int32_t mp_max_bytes; /* Maximum cache size: bytes. */
size_t mp_mmapsize; /* Maximum file size for mmap. */
int mp_maxopenfd; /* Maximum open file descriptors. */
int mp_maxwrite; /* Maximum buffers to write. */
- int /* Sleep after writing max buffers. */
- mp_maxwrite_sleep;
+ db_timeout_t mp_maxwrite_sleep; /* Sleep after writing max buffers. */
/* Transactions. */
u_int32_t tx_max; /* Maximum number of transactions. */
@@ -2051,6 +2153,8 @@ struct __db_env {
/*******************************************************
* Private: owned by DB.
*******************************************************/
+ db_mutex_t mtx_env; /* General DbEnv structure mutex. */
+
pid_t pid_cache; /* Cached process ID. */
/* User files, paths. */
@@ -2099,13 +2203,21 @@ struct __db_env {
long shm_key; /* shmget(2) key. */
/*
- * List of open DB handles for this DB_ENV, used for cursor
- * adjustment. Must be protected for multi-threaded support.
+ * List of open file handles for this DB_ENV. Must be protected
+ * for multi-threaded support.
*
* !!!
- * As this structure is allocated in per-process memory, the
- * mutex may need to be stored elsewhere on architectures unable
- * to support mutexes in heap memory, e.g. HP/UX 9.
+ * Explicit representation of structure in queue.h.
+ * TAILQ_HEAD(__fdlist, __fh_t);
+ */
+ struct __fdlist {
+ struct __fh_t *tqh_first;
+ struct __fh_t **tqh_last;
+ } fdlist;
+
+ /*
+ * List of open DB handles for this DB_ENV, used for cursor
+ * adjustment. Must be protected for multi-threaded support.
*
* !!!
* Explicit representation of structure in queue.h.
@@ -2165,6 +2277,7 @@ struct __db_env {
int (*failchk) __P((DB_ENV *, u_int32_t));
int (*fileid_reset) __P((DB_ENV *, const char *, u_int32_t));
int (*get_cachesize) __P((DB_ENV *, u_int32_t *, u_int32_t *, int *));
+ int (*get_cache_max) __P((DB_ENV *, u_int32_t *, u_int32_t *));
int (*get_data_dirs) __P((DB_ENV *, const char ***));
int (*get_encrypt_flags) __P((DB_ENV *, u_int32_t *));
void (*get_errfile) __P((DB_ENV *, FILE **));
@@ -2182,11 +2295,12 @@ struct __db_env {
int (*get_lk_max_locks) __P((DB_ENV *, u_int32_t *));
int (*get_lk_max_objects) __P((DB_ENV *, u_int32_t *));
int (*get_mp_max_openfd) __P((DB_ENV *, int *));
- int (*get_mp_max_write) __P((DB_ENV *, int *, int *));
+ int (*get_mp_max_write) __P((DB_ENV *, int *, db_timeout_t *));
int (*get_mp_mmapsize) __P((DB_ENV *, size_t *));
void (*get_msgfile) __P((DB_ENV *, FILE **));
int (*get_open_flags) __P((DB_ENV *, u_int32_t *));
int (*get_shm_key) __P((DB_ENV *, long *));
+ int (*get_thread_count) __P((DB_ENV *, u_int32_t *));
int (*get_timeout) __P((DB_ENV *, db_timeout_t *, u_int32_t));
int (*get_tmp_dir) __P((DB_ENV *, const char **));
int (*get_tx_max) __P((DB_ENV *, u_int32_t *));
@@ -2237,8 +2351,7 @@ struct __db_env {
int (*mutex_unlock) __P((DB_ENV *, db_mutex_t));
int (*open) __P((DB_ENV *, const char *, u_int32_t, int));
int (*remove) __P((DB_ENV *, const char *, u_int32_t));
- int (*rep_elect)
- __P((DB_ENV *, int, int, int *, u_int32_t));
+ int (*rep_elect) __P((DB_ENV *, int, int, u_int32_t));
int (*rep_flush) __P((DB_ENV *));
int (*rep_get_config) __P((DB_ENV *, u_int32_t, int *));
int (*rep_get_limit) __P((DB_ENV *, u_int32_t *, u_int32_t *));
@@ -2246,8 +2359,9 @@ struct __db_env {
int (*rep_get_priority) __P((DB_ENV *, int *));
int (*rep_get_timeout) __P((DB_ENV *, int, u_int32_t *));
int (*rep_process_message)
- __P((DB_ENV *, DBT *, DBT *, int *, DB_LSN *));
+ __P((DB_ENV *, DBT *, DBT *, int, DB_LSN *));
int (*rep_set_config) __P((DB_ENV *, u_int32_t, int));
+ int (*rep_set_lease) __P((DB_ENV *, u_int32_t, u_int32_t));
int (*rep_set_limit) __P((DB_ENV *, u_int32_t, u_int32_t));
int (*rep_set_nsites) __P((DB_ENV *, int));
int (*rep_set_priority) __P((DB_ENV *, int));
@@ -2267,11 +2381,14 @@ struct __db_env {
int (*repmgr_site_list) __P((DB_ENV *, u_int *,
DB_REPMGR_SITE **));
int (*repmgr_start) __P((DB_ENV *, int, u_int32_t));
+ int (*repmgr_stat) __P((DB_ENV *, DB_REPMGR_STAT **, u_int32_t));
+ int (*repmgr_stat_print) __P((DB_ENV *, u_int32_t));
int (*set_alloc) __P((DB_ENV *, void *(*)(size_t),
void *(*)(void *, size_t), void (*)(void *)));
int (*set_app_dispatch)
__P((DB_ENV *, int (*)(DB_ENV *, DBT *, DB_LSN *, db_recops)));
int (*set_cachesize) __P((DB_ENV *, u_int32_t, u_int32_t, int));
+ int (*set_cache_max) __P((DB_ENV *, u_int32_t, u_int32_t));
int (*set_data_dir) __P((DB_ENV *, const char *));
int (*set_encrypt) __P((DB_ENV *, const char *, u_int32_t));
void (*set_errcall) __P((DB_ENV *,
@@ -2296,7 +2413,7 @@ struct __db_env {
int (*set_lk_max_locks) __P((DB_ENV *, u_int32_t));
int (*set_lk_max_objects) __P((DB_ENV *, u_int32_t));
int (*set_mp_max_openfd) __P((DB_ENV *, int));
- int (*set_mp_max_write) __P((DB_ENV *, int, int));
+ int (*set_mp_max_write) __P((DB_ENV *, int, db_timeout_t));
int (*set_mp_mmapsize) __P((DB_ENV *, size_t));
void (*set_msgcall)
__P((DB_ENV *, void (*)(const DB_ENV *, const char *)));
@@ -2348,33 +2465,35 @@ struct __db_env {
#define DB_ENV_AUTO_COMMIT 0x00000001 /* DB_AUTO_COMMIT. */
#define DB_ENV_CDB 0x00000002 /* DB_INIT_CDB. */
#define DB_ENV_CDB_ALLDB 0x00000004 /* CDB environment wide locking. */
-#define DB_ENV_CREATE 0x00000008 /* DB_CREATE set. */
-#define DB_ENV_DBLOCAL 0x00000010 /* Environment for a private DB. */
-#define DB_ENV_DIRECT_DB 0x00000020 /* DB_DIRECT_DB set. */
-#define DB_ENV_DIRECT_LOG 0x00000040 /* DB_DIRECT_LOG set. */
-#define DB_ENV_DSYNC_DB 0x00000080 /* DB_DSYNC_DB set. */
-#define DB_ENV_DSYNC_LOG 0x00000100 /* DB_DSYNC_LOG set. */
-#define DB_ENV_FATAL 0x00000200 /* Doing fatal recovery in env. */
-#define DB_ENV_LOCKDOWN 0x00000400 /* DB_LOCKDOWN set. */
-#define DB_ENV_LOG_AUTOREMOVE 0x00000800 /* DB_LOG_AUTOREMOVE set. */
-#define DB_ENV_LOG_INMEMORY 0x00001000 /* DB_LOG_INMEMORY set. */
-#define DB_ENV_MULTIVERSION 0x00002000 /* DB_MULTIVERSION set. */
-#define DB_ENV_NOLOCKING 0x00004000 /* DB_NOLOCKING set. */
-#define DB_ENV_NOMMAP 0x00008000 /* DB_NOMMAP set. */
-#define DB_ENV_NOPANIC 0x00010000 /* Okay if panic set. */
-#define DB_ENV_OPEN_CALLED 0x00020000 /* DB_ENV->open called. */
-#define DB_ENV_OVERWRITE 0x00040000 /* DB_OVERWRITE set. */
-#define DB_ENV_PRIVATE 0x00080000 /* DB_PRIVATE set. */
-#define DB_ENV_REGION_INIT 0x00100000 /* DB_REGION_INIT set. */
-#define DB_ENV_RPCCLIENT 0x00200000 /* DB_RPCCLIENT set. */
-#define DB_ENV_RPCCLIENT_GIVEN 0x00400000 /* User-supplied RPC client struct */
-#define DB_ENV_SYSTEM_MEM 0x00800000 /* DB_SYSTEM_MEM set. */
-#define DB_ENV_THREAD 0x01000000 /* DB_THREAD set. */
-#define DB_ENV_TIME_NOTGRANTED 0x02000000 /* DB_TIME_NOTGRANTED set. */
-#define DB_ENV_TXN_NOSYNC 0x04000000 /* DB_TXN_NOSYNC set. */
-#define DB_ENV_TXN_SNAPSHOT 0x08000000 /* DB_TXN_SNAPSHOT set. */
-#define DB_ENV_TXN_WRITE_NOSYNC 0x10000000 /* DB_TXN_WRITE_NOSYNC set. */
-#define DB_ENV_YIELDCPU 0x20000000 /* DB_YIELDCPU set. */
+#define DB_ENV_DBLOCAL 0x00000008 /* Environment for a private DB. */
+#define DB_ENV_DIRECT_DB 0x00000010 /* DB_DIRECT_DB set. */
+#define DB_ENV_DIRECT_LOG 0x00000020 /* DB_DIRECT_LOG set. */
+#define DB_ENV_DSYNC_DB 0x00000040 /* DB_DSYNC_DB set. */
+#define DB_ENV_DSYNC_LOG 0x00000080 /* DB_DSYNC_LOG set. */
+#define DB_ENV_LOCKDOWN 0x00000100 /* DB_LOCKDOWN set. */
+#define DB_ENV_LOG_AUTOREMOVE 0x00000200 /* DB_LOG_AUTOREMOVE set. */
+#define DB_ENV_LOG_INMEMORY 0x00000400 /* DB_LOG_INMEMORY set. */
+#define DB_ENV_MULTIVERSION 0x00000800 /* DB_MULTIVERSION set. */
+#define DB_ENV_NOLOCKING 0x00001000 /* DB_NOLOCKING set. */
+#define DB_ENV_NOMMAP 0x00002000 /* DB_NOMMAP set. */
+#define DB_ENV_NOPANIC 0x00004000 /* Okay if panic set. */
+#define DB_ENV_NO_OUTPUT_SET 0x00008000 /* No output channel set. */
+#define DB_ENV_OPEN_CALLED 0x00010000 /* DB_ENV->open called. */
+#define DB_ENV_OVERWRITE 0x00020000 /* DB_OVERWRITE set. */
+#define DB_ENV_PRIVATE 0x00040000 /* DB_PRIVATE set. */
+#define DB_ENV_RECOVER_FATAL 0x00080000 /* Doing fatal recovery in env. */
+#define DB_ENV_REF_COUNTED 0x00100000 /* Region references this handle. */
+#define DB_ENV_REGION_INIT 0x00200000 /* DB_REGION_INIT set. */
+#define DB_ENV_RPCCLIENT 0x00400000 /* DB_RPCCLIENT set. */
+#define DB_ENV_RPCCLIENT_GIVEN 0x00800000 /* User-supplied RPC client struct */
+#define DB_ENV_SYSTEM_MEM 0x01000000 /* DB_SYSTEM_MEM set. */
+#define DB_ENV_THREAD 0x02000000 /* DB_THREAD set. */
+#define DB_ENV_TIME_NOTGRANTED 0x04000000 /* DB_TIME_NOTGRANTED set. */
+#define DB_ENV_TXN_NOSYNC 0x08000000 /* DB_TXN_NOSYNC set. */
+#define DB_ENV_TXN_NOWAIT 0x10000000 /* DB_TXN_NOWAIT set. */
+#define DB_ENV_TXN_SNAPSHOT 0x20000000 /* DB_TXN_SNAPSHOT set. */
+#define DB_ENV_TXN_WRITE_NOSYNC 0x40000000 /* DB_TXN_WRITE_NOSYNC set. */
+#define DB_ENV_YIELDCPU 0x80000000 /* DB_YIELDCPU set. */
u_int32_t flags;
};
diff --git a/db/build_vxworks/db_archive/db_archive.c b/db/build_vxworks/db_archive/db_archive.c
index 89ee92275..f625f0a15 100644
--- a/db/build_vxworks/db_archive/db_archive.c
+++ b/db/build_vxworks/db_archive/db_archive.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: db_archive.c,v 12.9 2006/08/26 09:23:00 bostic Exp $
+ * $Id: db_archive.c,v 12.12 2007/05/17 15:14:58 bostic Exp $
*/
#include "db_config.h"
@@ -13,7 +12,7 @@
#ifndef lint
static const char copyright[] =
- "Copyright (c) 1996-2006\nOracle Corporation. All rights reserved.\n";
+ "Copyright (c) 1996,2007 Oracle. All rights reserved.\n";
#endif
int db_archive_main __P((int, char *[]));
@@ -48,7 +47,7 @@ db_archive_main(argc, argv)
int ch, exitval, ret, verbose;
char **file, *home, **list, *passwd;
- if ((progname = strrchr(argv[0], '/')) == NULL)
+ if ((progname = __db_rpath(argv[0])) == NULL)
progname = argv[0];
else
++progname;
diff --git a/db/build_vxworks/db_archive/db_archive/Makefile.component b/db/build_vxworks/db_archive/db_archive/Makefile.component
deleted file mode 100644
index d178ce455..000000000
--- a/db/build_vxworks/db_archive/db_archive/Makefile.component
+++ /dev/null
@@ -1,433 +0,0 @@
-# Component project makefile generated by the project manager
-#
-
-
-## core information
-
-
-CONFIGLETTE = compConfig.c
-TGT_DIR = $(WIND_BASE)/target
-EXTERNAL_BINARIES_DIR = $(PRJ_DIR)/extbin/$(BUILD_SPEC)
-COMPONENT_NAME = db_archive
-.PHONY: defaultTarget
-defaultTarget: $(COMPONENT_NAME).cm
-
-#
-# default definition for CPU and TOOL (needed by defs.project)
-#
-
-CPU = SIMSPARCSOLARIS
-TOOL = gnu
-
-
-## CPU and TOOL info for build specification 'PENTIUM2gnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.debug)
-CPU = PENTIUM2
-TOOL = gnu
-SYS_OBJ_DIR = $(WIND_BASE)/target/lib/obj$(CPU)$(TOOL)vx
-USER_OBJ_DIR = $(WIND_BASE)/target/user/objs/obj$(CPU)$(TOOL)
-PRJ_OBJS = db_archive.o \
- compConfig.o
-COMPONENT_OBJS = db_archive.o
-DEPENDENCY_FILES = db_archive.d \
- compConfig.d
-NUMBER_OF_COMPONENT_OBJS = $(words $(COMPONENT_OBJS))
-endif
-
-
-## CPU and TOOL info for build specification 'PENTIUM2gnu.release'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.release)
-CPU = PENTIUM2
-TOOL = gnu
-SYS_OBJ_DIR = $(WIND_BASE)/target/lib/obj$(CPU)$(TOOL)vx
-USER_OBJ_DIR = $(WIND_BASE)/target/user/objs/obj$(CPU)$(TOOL)
-PRJ_OBJS = db_archive.o \
- compConfig.o
-COMPONENT_OBJS = db_archive.o
-DEPENDENCY_FILES = db_archive.d \
- compConfig.d
-NUMBER_OF_COMPONENT_OBJS = $(words $(COMPONENT_OBJS))
-endif
-
-
-## CPU and TOOL info for build specification 'PENTIUMgnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUMgnu.debug)
-CPU = PENTIUM
-TOOL = gnu
-SYS_OBJ_DIR = $(WIND_BASE)/target/lib/obj$(CPU)$(TOOL)vx
-USER_OBJ_DIR = $(WIND_BASE)/target/user/objs/obj$(CPU)$(TOOL)
-PRJ_OBJS = db_archive.o \
- compConfig.o
-COMPONENT_OBJS = db_archive.o
-DEPENDENCY_FILES = db_archive.d \
- compConfig.d
-NUMBER_OF_COMPONENT_OBJS = $(words $(COMPONENT_OBJS))
-endif
-
-
-## CPU and TOOL info for build specification 'SIMSPARCSOLARISgnu.debug'
-
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu.debug)
-CPU = SIMSPARCSOLARIS
-TOOL = gnu
-SYS_OBJ_DIR = $(WIND_BASE)/target/lib/obj$(CPU)$(TOOL)vx
-USER_OBJ_DIR = $(WIND_BASE)/target/user/objs/obj$(CPU)$(TOOL)
-PRJ_OBJS = db_archive.o \
- compConfig.o
-COMPONENT_OBJS = db_archive.o
-DEPENDENCY_FILES = db_archive.d \
- compConfig.d
-NUMBER_OF_COMPONENT_OBJS = $(words $(COMPONENT_OBJS))
-endif
-
-
-include $(TGT_DIR)/h/make/defs.project
-
-
-## build-configuration info for build specification 'PENTIUM2gnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.debug)
-
-## macros
-
-AR = arpentium
-AS = ccpentium
-CC = ccpentium
-CFLAGS = -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2
-CFLAGS_AS = -mcpu=pentiumpro -march=pentiumpro -ansi -g -nostdlib -fno-builtin -fno-defer-pop -P -x assembler-with-cpp -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2
-CPP = ccpentium -E -P
-CPPFILT = c++filtpentium --strip-underscores
-LD = ldpentium
-LDFLAGS = -X
-LDPARTIAL = ccpentium -B$(WIND_BASE)/host/$(WIND_HOST_TYPE)/lib/gcc-lib/ -nostdlib -r -Wl,-X
-LD_PARTIAL_FLAGS = -X -r
-NM = nmpentium -g
-OPTION_DEFINE_MACRO = -D
-OPTION_GENERATE_DEPENDENCY_FILE = -MD
-OPTION_INCLUDE_DIR = -I
-RELEASE = 0
-SIZE = sizepentium
-POST_BUILD_RULE =
-
-## end build-configuration info for build specification 'PENTIUM2gnu.debug'
-
-endif
-
-
-## build-configuration info for build specification 'PENTIUM2gnu.release'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.release)
-
-## macros
-
-AR = arpentium
-AS = ccpentium
-CC = ccpentium
-CFLAGS = -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2
-CFLAGS_AS = -mcpu=pentiumpro -march=pentiumpro -ansi -O2 -nostdlib -fno-builtin -fno-defer-pop -P -x assembler-with-cpp -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2
-CPP = ccpentium -E -P
-CPPFILT = c++filtpentium --strip-underscores
-LD = ldpentium
-LDFLAGS = -X
-LDPARTIAL = ccpentium -B$(WIND_BASE)/host/$(WIND_HOST_TYPE)/lib/gcc-lib/ -nostdlib -r -Wl,-X
-LD_PARTIAL_FLAGS = -X -r
-NM = nmpentium -g
-OPTION_DEFINE_MACRO = -D
-OPTION_GENERATE_DEPENDENCY_FILE = -MD
-OPTION_INCLUDE_DIR = -I
-RELEASE = 1
-SIZE = sizepentium
-POST_BUILD_RULE =
-
-## end build-configuration info for build specification 'PENTIUM2gnu.release'
-
-endif
-
-
-## build-configuration info for build specification 'PENTIUMgnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUMgnu.debug)
-
-## macros
-
-AR = arpentium
-AS = ccpentium
-CC = ccpentium
-CFLAGS = -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM
-CFLAGS_AS = -mcpu=pentium -march=pentium -ansi -g -nostdlib -fno-builtin -fno-defer-pop -P -x assembler-with-cpp -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM
-CPP = ccpentium -E -P
-CPPFILT = c++filtpentium --strip-underscores
-LD = ldpentium
-LDFLAGS = -X
-LDPARTIAL = ccpentium -B$(WIND_BASE)/host/$(WIND_HOST_TYPE)/lib/gcc-lib/ -nostdlib -r -Wl,-X
-LD_PARTIAL_FLAGS = -X -r
-NM = nmpentium -g
-OPTION_DEFINE_MACRO = -D
-OPTION_GENERATE_DEPENDENCY_FILE = -MD
-OPTION_INCLUDE_DIR = -I
-RELEASE = 0
-SIZE = sizepentium
-POST_BUILD_RULE =
-
-## end build-configuration info for build specification 'PENTIUMgnu.debug'
-
-endif
-
-
-## build-configuration info for build specification 'SIMSPARCSOLARISgnu.debug'
-
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu.debug)
-
-## macros
-
-AR = arsparc
-AS = ccsparc
-CC = ccsparc
-CFLAGS = -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -fno-builtin -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=SIMSPARCSOLARIS
-CFLAGS_AS = -ansi -g -fno-builtin -P -x assembler-with-cpp -Wall -I. -I$(WIND_BASE)/target/h -DCPU=SIMSPARCSOLARIS
-CPP = ccsparc -E -P
-CPPFILT = c++filtsparc --strip-underscores
-LD = ldsparc
-LDFLAGS = -T $(WIND_BASE)/target/config/solaris/linker-script
-LDPARTIAL = ccsparc -B$(WIND_BASE)/host/$(WIND_HOST_TYPE)/lib/gcc-lib/ -nostdlib -r -Wl,-X
-LD_PARTIAL_FLAGS = -nostdlib -r
-NM = nmsparc
-OPTION_DEFINE_MACRO = -D
-OPTION_GENERATE_DEPENDENCY_FILE = -MD
-OPTION_INCLUDE_DIR = -I
-RELEASE = 0
-SIZE = sizesparc
-POST_BUILD_RULE =
-
-## end build-configuration info for build specification 'SIMSPARCSOLARISgnu.debug'
-
-endif
-
-# override make definitions only below this line
-
-
-# override make definitions only above this line
-
-include $(TGT_DIR)/h/make/rules.project
-
-
-#
-# Dummy target to force external make
-#
-
-FORCE_EXTERNAL_MAKE:
-
-
-
-#
-# Custom makefile
-#
-
-include $(PRJ_DIR)/Makefile.custom
-
-
-## build rules for build specification 'PENTIUM2gnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.debug)
-
-%.o : $(PRJ_DIR)/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 -c $<
-
-%.d : $(PRJ_DIR)/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 $< > $@
-
-%.o : $(PRJ_DIR)/../%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 -c $<
-
-%.d : $(PRJ_DIR)/../%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 $< > $@
-
-
-## end build rules for build specification 'PENTIUM2gnu.debug'
-
-endif
-
-
-## build rules for build specification 'PENTIUM2gnu.release'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.release)
-
-%.o : $(PRJ_DIR)/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 -c $<
-
-%.d : $(PRJ_DIR)/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 $< > $@
-
-%.o : $(PRJ_DIR)/../%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 -c $<
-
-%.d : $(PRJ_DIR)/../%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 $< > $@
-
-
-## end build rules for build specification 'PENTIUM2gnu.release'
-
-endif
-
-
-## build rules for build specification 'PENTIUMgnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUMgnu.debug)
-
-%.o : $(PRJ_DIR)/%.c
- $(CC) -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM -c $<
-
-%.d : $(PRJ_DIR)/%.c
- ccpentium -E -P -M -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM $< > $@
-
-%.o : $(PRJ_DIR)/../%.c
- $(CC) -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM -c $<
-
-%.d : $(PRJ_DIR)/../%.c
- ccpentium -E -P -M -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM $< > $@
-
-
-## end build rules for build specification 'PENTIUMgnu.debug'
-
-endif
-
-
-## build rules for build specification 'SIMSPARCSOLARISgnu.debug'
-
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu.debug)
-
-%.o : $(PRJ_DIR)/%.c
- $(CC) -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -fno-builtin -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=SIMSPARCSOLARIS -c $<
-
-%.d : $(PRJ_DIR)/%.c
- ccsparc -E -P -M -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -fno-builtin -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=SIMSPARCSOLARIS $< > $@
-
-%.o : $(PRJ_DIR)/../%.c
- $(CC) -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -fno-builtin -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=SIMSPARCSOLARIS -c $<
-
-%.d : $(PRJ_DIR)/../%.c
- ccsparc -E -P -M -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -fno-builtin -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=SIMSPARCSOLARIS $< > $@
-
-
-## end build rules for build specification 'SIMSPARCSOLARISgnu.debug'
-
-endif
-
-#
-# Rule for configurable, binary component
-#
-# Downloadable component module build rules
-#
-db_archive.cm: $(PRJ_OBJS) mxrDoc.nm depend
-#
-# Partially link all db_archive modules together
-# including the configlette modules
-#
- $(LD) -r -o $@ $(PRJ_OBJS) $(CC_LIB)
-#
-# Generate _vxMain and _vxExit by munching
-#
- $(NM) $@ | $(MUNCH) > db_archive.c
- $(COMPILE_TRADITIONAL) db_archive_ctdt.c -o db_archive_ctdt.o
- $(LD) -r -o db_archive.tmp $@ db_archive_ctdt.o
- $(RM) $@
- $(MV) db_archive.tmp $@
-#
-# Adds entry point table section to db_archive component
-#
- $(PD_EPT_DDE_ADD) $@ $(PRJ_DIR)/$(PRJ_FILE) INDEX $(BUILD_SPEC)
-
-
-#
-# Partial link build rules
-# Partially link all db_archive modules together
-# If no source files, then generates dummy.c
-#
-
-ifeq ($(COMPONENT_OBJS),)
-dummy.c:
- $(CFG_GEN) $(PRJ_DIR)/$(PRJ_FILE) dummyCGen $(PRJ_TYPE)
-
-db_archive.pl: dummy.o mxrDoc.nm depend
- $(LD) -r -o $@ dummy.o
-else
-db_archive.pl: $(COMPONENT_OBJS) mxrDoc.nm depend
- $(LD) -r -o $@ $(COMPONENT_OBJS)
-endif
-
-#
-# nm file containing symbol information for all component objects
-#
-
-EXTERNAL_BINARIES_DIR_PATTERN_1 = $(subst \,\\,$(PRJ_DIR)/extbin/$(BUILD_SPEC)/)
-EXTERNAL_BINARIES_DIR_PATTERN = $(subst /,\/,$(EXTERNAL_BINARIES_DIR_PATTERN_1))
-
-mxrDoc.nm: mxrDoc.size $(COMPONENT_OBJS)
- $(RM) $@
-# if there are no object files, make a blank mxr doc
-ifeq ($(NUMBER_OF_COMPONENT_OBJS),0)
- @$(ECHO) "" >> $@
-else
-# make sure object file name is in mxrDoc.nm even if there
-# is only one object file
- $(ECHO) db_archive.o: >> $@
- $(NM) db_archive.o | sed -e "s|$(EXTERNAL_BINARIES_DIR_PATTERN)||g" >> $@
-endif
-
-#
-# size file containing size information for all component objects
-#
-mxrDoc.size: $(COMPONENT_OBJS) $(PRJ_DIR)/component.cdf
- $(RM) $@
-ifeq ($(NUMBER_OF_COMPONENT_OBJS),0)
- @$(ECHO) "" > $@
-else
- $(SIZE) db_archive.o | sed -e "s|$(EXTERNAL_BINARIES_DIR_PATTERN)||g" >> $@
-endif
-
-
-## user-defined rules for build specification 'PENTIUM2gnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.debug)
-
-## end user-defined rules for build specification 'PENTIUM2gnu.debug'
-
-endif
-
-
-## user-defined rules for build specification 'PENTIUM2gnu.release'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.release)
-
-## end user-defined rules for build specification 'PENTIUM2gnu.release'
-
-endif
-
-
-## user-defined rules for build specification 'PENTIUMgnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUMgnu.debug)
-
-## end user-defined rules for build specification 'PENTIUMgnu.debug'
-
-endif
-
-
-## user-defined rules for build specification 'SIMSPARCSOLARISgnu.debug'
-
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu.debug)
-
-## end user-defined rules for build specification 'SIMSPARCSOLARISgnu.debug'
-
-endif
-
-
-#
-# Recursive clean
-#
-
-rclean : clean
-
diff --git a/db/build_vxworks/db_checkpoint/db_checkpoint.c b/db/build_vxworks/db_checkpoint/db_checkpoint.c
index 861d28adb..c28e9fbfa 100644
--- a/db/build_vxworks/db_checkpoint/db_checkpoint.c
+++ b/db/build_vxworks/db_checkpoint/db_checkpoint.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: db_checkpoint.c,v 12.15 2006/08/26 09:23:25 bostic Exp $
+ * $Id: db_checkpoint.c,v 12.18 2007/05/17 15:14:58 bostic Exp $
*/
#include "db_config.h"
@@ -13,7 +12,7 @@
#ifndef lint
static const char copyright[] =
- "Copyright (c) 1996-2006\nOracle Corporation. All rights reserved.\n";
+ "Copyright (c) 1996,2007 Oracle. All rights reserved.\n";
#endif
int db_checkpoint_main __P((int, char *[]));
@@ -50,7 +49,7 @@ db_checkpoint_main(argc, argv)
int ch, exitval, once, ret, verbose;
char *home, *logfile, *passwd, time_buf[CTIME_BUFLEN];
- if ((progname = strrchr(argv[0], '/')) == NULL)
+ if ((progname = __db_rpath(argv[0])) == NULL)
progname = argv[0];
else
++progname;
diff --git a/db/build_vxworks/db_checkpoint/db_checkpoint/Makefile.component b/db/build_vxworks/db_checkpoint/db_checkpoint/Makefile.component
deleted file mode 100644
index 6b04036f2..000000000
--- a/db/build_vxworks/db_checkpoint/db_checkpoint/Makefile.component
+++ /dev/null
@@ -1,433 +0,0 @@
-# Component project makefile generated by the project manager
-#
-
-
-## core information
-
-
-CONFIGLETTE = compConfig.c
-TGT_DIR = $(WIND_BASE)/target
-EXTERNAL_BINARIES_DIR = $(PRJ_DIR)/extbin/$(BUILD_SPEC)
-COMPONENT_NAME = db_checkpoint
-.PHONY: defaultTarget
-defaultTarget: $(COMPONENT_NAME).cm
-
-#
-# default definition for CPU and TOOL (needed by defs.project)
-#
-
-CPU = SIMSPARCSOLARIS
-TOOL = gnu
-
-
-## CPU and TOOL info for build specification 'PENTIUM2gnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.debug)
-CPU = PENTIUM2
-TOOL = gnu
-SYS_OBJ_DIR = $(WIND_BASE)/target/lib/obj$(CPU)$(TOOL)vx
-USER_OBJ_DIR = $(WIND_BASE)/target/user/objs/obj$(CPU)$(TOOL)
-PRJ_OBJS = db_checkpoint.o \
- compConfig.o
-COMPONENT_OBJS = db_checkpoint.o
-DEPENDENCY_FILES = db_checkpoint.d \
- compConfig.d
-NUMBER_OF_COMPONENT_OBJS = $(words $(COMPONENT_OBJS))
-endif
-
-
-## CPU and TOOL info for build specification 'PENTIUM2gnu.release'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.release)
-CPU = PENTIUM2
-TOOL = gnu
-SYS_OBJ_DIR = $(WIND_BASE)/target/lib/obj$(CPU)$(TOOL)vx
-USER_OBJ_DIR = $(WIND_BASE)/target/user/objs/obj$(CPU)$(TOOL)
-PRJ_OBJS = db_checkpoint.o \
- compConfig.o
-COMPONENT_OBJS = db_checkpoint.o
-DEPENDENCY_FILES = db_checkpoint.d \
- compConfig.d
-NUMBER_OF_COMPONENT_OBJS = $(words $(COMPONENT_OBJS))
-endif
-
-
-## CPU and TOOL info for build specification 'PENTIUMgnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUMgnu.debug)
-CPU = PENTIUM
-TOOL = gnu
-SYS_OBJ_DIR = $(WIND_BASE)/target/lib/obj$(CPU)$(TOOL)vx
-USER_OBJ_DIR = $(WIND_BASE)/target/user/objs/obj$(CPU)$(TOOL)
-PRJ_OBJS = db_checkpoint.o \
- compConfig.o
-COMPONENT_OBJS = db_checkpoint.o
-DEPENDENCY_FILES = db_checkpoint.d \
- compConfig.d
-NUMBER_OF_COMPONENT_OBJS = $(words $(COMPONENT_OBJS))
-endif
-
-
-## CPU and TOOL info for build specification 'SIMSPARCSOLARISgnu.debug'
-
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu.debug)
-CPU = SIMSPARCSOLARIS
-TOOL = gnu
-SYS_OBJ_DIR = $(WIND_BASE)/target/lib/obj$(CPU)$(TOOL)vx
-USER_OBJ_DIR = $(WIND_BASE)/target/user/objs/obj$(CPU)$(TOOL)
-PRJ_OBJS = db_checkpoint.o \
- compConfig.o
-COMPONENT_OBJS = db_checkpoint.o
-DEPENDENCY_FILES = db_checkpoint.d \
- compConfig.d
-NUMBER_OF_COMPONENT_OBJS = $(words $(COMPONENT_OBJS))
-endif
-
-
-include $(TGT_DIR)/h/make/defs.project
-
-
-## build-configuration info for build specification 'PENTIUM2gnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.debug)
-
-## macros
-
-AR = arpentium
-AS = ccpentium
-CC = ccpentium
-CFLAGS = -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2
-CFLAGS_AS = -mcpu=pentiumpro -march=pentiumpro -ansi -g -nostdlib -fno-builtin -fno-defer-pop -P -x assembler-with-cpp -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2
-CPP = ccpentium -E -P
-CPPFILT = c++filtpentium --strip-underscores
-LD = ldpentium
-LDFLAGS = -X
-LDPARTIAL = ccpentium -B$(WIND_BASE)/host/$(WIND_HOST_TYPE)/lib/gcc-lib/ -nostdlib -r -Wl,-X
-LD_PARTIAL_FLAGS = -X -r
-NM = nmpentium -g
-OPTION_DEFINE_MACRO = -D
-OPTION_GENERATE_DEPENDENCY_FILE = -MD
-OPTION_INCLUDE_DIR = -I
-RELEASE = 0
-SIZE = sizepentium
-POST_BUILD_RULE =
-
-## end build-configuration info for build specification 'PENTIUM2gnu.debug'
-
-endif
-
-
-## build-configuration info for build specification 'PENTIUM2gnu.release'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.release)
-
-## macros
-
-AR = arpentium
-AS = ccpentium
-CC = ccpentium
-CFLAGS = -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2
-CFLAGS_AS = -mcpu=pentiumpro -march=pentiumpro -ansi -O2 -nostdlib -fno-builtin -fno-defer-pop -P -x assembler-with-cpp -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2
-CPP = ccpentium -E -P
-CPPFILT = c++filtpentium --strip-underscores
-LD = ldpentium
-LDFLAGS = -X
-LDPARTIAL = ccpentium -B$(WIND_BASE)/host/$(WIND_HOST_TYPE)/lib/gcc-lib/ -nostdlib -r -Wl,-X
-LD_PARTIAL_FLAGS = -X -r
-NM = nmpentium -g
-OPTION_DEFINE_MACRO = -D
-OPTION_GENERATE_DEPENDENCY_FILE = -MD
-OPTION_INCLUDE_DIR = -I
-RELEASE = 1
-SIZE = sizepentium
-POST_BUILD_RULE =
-
-## end build-configuration info for build specification 'PENTIUM2gnu.release'
-
-endif
-
-
-## build-configuration info for build specification 'PENTIUMgnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUMgnu.debug)
-
-## macros
-
-AR = arpentium
-AS = ccpentium
-CC = ccpentium
-CFLAGS = -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM
-CFLAGS_AS = -mcpu=pentium -march=pentium -ansi -g -nostdlib -fno-builtin -fno-defer-pop -P -x assembler-with-cpp -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM
-CPP = ccpentium -E -P
-CPPFILT = c++filtpentium --strip-underscores
-LD = ldpentium
-LDFLAGS = -X
-LDPARTIAL = ccpentium -B$(WIND_BASE)/host/$(WIND_HOST_TYPE)/lib/gcc-lib/ -nostdlib -r -Wl,-X
-LD_PARTIAL_FLAGS = -X -r
-NM = nmpentium -g
-OPTION_DEFINE_MACRO = -D
-OPTION_GENERATE_DEPENDENCY_FILE = -MD
-OPTION_INCLUDE_DIR = -I
-RELEASE = 0
-SIZE = sizepentium
-POST_BUILD_RULE =
-
-## end build-configuration info for build specification 'PENTIUMgnu.debug'
-
-endif
-
-
-## build-configuration info for build specification 'SIMSPARCSOLARISgnu.debug'
-
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu.debug)
-
-## macros
-
-AR = arsparc
-AS = ccsparc
-CC = ccsparc
-CFLAGS = -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -fno-builtin -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=SIMSPARCSOLARIS
-CFLAGS_AS = -ansi -g -fno-builtin -P -x assembler-with-cpp -Wall -I. -I$(WIND_BASE)/target/h -DCPU=SIMSPARCSOLARIS
-CPP = ccsparc -E -P
-CPPFILT = c++filtsparc --strip-underscores
-LD = ldsparc
-LDFLAGS = -T $(WIND_BASE)/target/config/solaris/linker-script
-LDPARTIAL = ccsparc -B$(WIND_BASE)/host/$(WIND_HOST_TYPE)/lib/gcc-lib/ -nostdlib -r -Wl,-X
-LD_PARTIAL_FLAGS = -nostdlib -r
-NM = nmsparc
-OPTION_DEFINE_MACRO = -D
-OPTION_GENERATE_DEPENDENCY_FILE = -MD
-OPTION_INCLUDE_DIR = -I
-RELEASE = 0
-SIZE = sizesparc
-POST_BUILD_RULE =
-
-## end build-configuration info for build specification 'SIMSPARCSOLARISgnu.debug'
-
-endif
-
-# override make definitions only below this line
-
-
-# override make definitions only above this line
-
-include $(TGT_DIR)/h/make/rules.project
-
-
-#
-# Dummy target to force external make
-#
-
-FORCE_EXTERNAL_MAKE:
-
-
-
-#
-# Custom makefile
-#
-
-include $(PRJ_DIR)/Makefile.custom
-
-
-## build rules for build specification 'PENTIUM2gnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.debug)
-
-%.o : $(PRJ_DIR)/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 -c $<
-
-%.d : $(PRJ_DIR)/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 $< > $@
-
-%.o : $(PRJ_DIR)/../%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 -c $<
-
-%.d : $(PRJ_DIR)/../%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 $< > $@
-
-
-## end build rules for build specification 'PENTIUM2gnu.debug'
-
-endif
-
-
-## build rules for build specification 'PENTIUM2gnu.release'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.release)
-
-%.o : $(PRJ_DIR)/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 -c $<
-
-%.d : $(PRJ_DIR)/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 $< > $@
-
-%.o : $(PRJ_DIR)/../%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 -c $<
-
-%.d : $(PRJ_DIR)/../%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 $< > $@
-
-
-## end build rules for build specification 'PENTIUM2gnu.release'
-
-endif
-
-
-## build rules for build specification 'PENTIUMgnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUMgnu.debug)
-
-%.o : $(PRJ_DIR)/%.c
- $(CC) -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM -c $<
-
-%.d : $(PRJ_DIR)/%.c
- ccpentium -E -P -M -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM $< > $@
-
-%.o : $(PRJ_DIR)/../%.c
- $(CC) -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM -c $<
-
-%.d : $(PRJ_DIR)/../%.c
- ccpentium -E -P -M -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM $< > $@
-
-
-## end build rules for build specification 'PENTIUMgnu.debug'
-
-endif
-
-
-## build rules for build specification 'SIMSPARCSOLARISgnu.debug'
-
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu.debug)
-
-%.o : $(PRJ_DIR)/%.c
- $(CC) -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -fno-builtin -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=SIMSPARCSOLARIS -c $<
-
-%.d : $(PRJ_DIR)/%.c
- ccsparc -E -P -M -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -fno-builtin -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=SIMSPARCSOLARIS $< > $@
-
-%.o : $(PRJ_DIR)/../%.c
- $(CC) -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -fno-builtin -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=SIMSPARCSOLARIS -c $<
-
-%.d : $(PRJ_DIR)/../%.c
- ccsparc -E -P -M -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -fno-builtin -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=SIMSPARCSOLARIS $< > $@
-
-
-## end build rules for build specification 'SIMSPARCSOLARISgnu.debug'
-
-endif
-
-#
-# Rule for configurable, binary component
-#
-# Downloadable component module build rules
-#
-db_checkpoint.cm: $(PRJ_OBJS) mxrDoc.nm depend
-#
-# Partially link all db_checkpoint modules together
-# including the configlette modules
-#
- $(LD) -r -o $@ $(PRJ_OBJS) $(CC_LIB)
-#
-# Generate _vxMain and _vxExit by munching
-#
- $(NM) $@ | $(MUNCH) > db_checkpoint.c
- $(COMPILE_TRADITIONAL) db_checkpoint_ctdt.c -o db_checkpoint_ctdt.o
- $(LD) -r -o db_checkpoint.tmp $@ db_checkpoint_ctdt.o
- $(RM) $@
- $(MV) db_checkpoint.tmp $@
-#
-# Adds entry point table section to db_checkpoint component
-#
- $(PD_EPT_DDE_ADD) $@ $(PRJ_DIR)/$(PRJ_FILE) INDEX $(BUILD_SPEC)
-
-
-#
-# Partial link build rules
-# Partially link all db_checkpoint modules together
-# If no source files, then generates dummy.c
-#
-
-ifeq ($(COMPONENT_OBJS),)
-dummy.c:
- $(CFG_GEN) $(PRJ_DIR)/$(PRJ_FILE) dummyCGen $(PRJ_TYPE)
-
-db_checkpoint.pl: dummy.o mxrDoc.nm depend
- $(LD) -r -o $@ dummy.o
-else
-db_checkpoint.pl: $(COMPONENT_OBJS) mxrDoc.nm depend
- $(LD) -r -o $@ $(COMPONENT_OBJS)
-endif
-
-#
-# nm file containing symbol information for all component objects
-#
-
-EXTERNAL_BINARIES_DIR_PATTERN_1 = $(subst \,\\,$(PRJ_DIR)/extbin/$(BUILD_SPEC)/)
-EXTERNAL_BINARIES_DIR_PATTERN = $(subst /,\/,$(EXTERNAL_BINARIES_DIR_PATTERN_1))
-
-mxrDoc.nm: mxrDoc.size $(COMPONENT_OBJS)
- $(RM) $@
-# if there are no object files, make a blank mxr doc
-ifeq ($(NUMBER_OF_COMPONENT_OBJS),0)
- @$(ECHO) "" >> $@
-else
-# make sure object file name is in mxrDoc.nm even if there
-# is only one object file
- $(ECHO) db_checkpoint.o: >> $@
- $(NM) db_checkpoint.o | sed -e "s|$(EXTERNAL_BINARIES_DIR_PATTERN)||g" >> $@
-endif
-
-#
-# size file containing size information for all component objects
-#
-mxrDoc.size: $(COMPONENT_OBJS) $(PRJ_DIR)/component.cdf
- $(RM) $@
-ifeq ($(NUMBER_OF_COMPONENT_OBJS),0)
- @$(ECHO) "" > $@
-else
- $(SIZE) db_checkpoint.o | sed -e "s|$(EXTERNAL_BINARIES_DIR_PATTERN)||g" >> $@
-endif
-
-
-## user-defined rules for build specification 'PENTIUM2gnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.debug)
-
-## end user-defined rules for build specification 'PENTIUM2gnu.debug'
-
-endif
-
-
-## user-defined rules for build specification 'PENTIUM2gnu.release'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.release)
-
-## end user-defined rules for build specification 'PENTIUM2gnu.release'
-
-endif
-
-
-## user-defined rules for build specification 'PENTIUMgnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUMgnu.debug)
-
-## end user-defined rules for build specification 'PENTIUMgnu.debug'
-
-endif
-
-
-## user-defined rules for build specification 'SIMSPARCSOLARISgnu.debug'
-
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu.debug)
-
-## end user-defined rules for build specification 'SIMSPARCSOLARISgnu.debug'
-
-endif
-
-
-#
-# Recursive clean
-#
-
-rclean : clean
-
diff --git a/db/build_vxworks/db_config.h b/db/build_vxworks/db_config.h
index 66eb91283..2c24b9444 100644
--- a/db/build_vxworks/db_config.h
+++ b/db/build_vxworks/db_config.h
@@ -44,6 +44,12 @@
/* Define to 1 if you have the `atol' function. */
#define HAVE_ATOL 1
+/* Define to 1 if building BREW. */
+/* #undef HAVE_BREW */
+
+/* Define to 1 if building on BREW (SDK2). */
+/* #undef HAVE_BREW_SDK2 */
+
/* Define to 1 if you have the `clock_gettime' function. */
#define HAVE_CLOCK_GETTIME 1
@@ -72,6 +78,9 @@
/* Define to 1 if you have the `fchmod' function. */
/* #undef HAVE_FCHMOD */
+/* Define to 1 if you have the `fclose' function. */
+#define HAVE_FCLOSE 1
+
/* Define to 1 if you have the `fcntl' function. */
/* #undef HAVE_FCNTL */
@@ -81,12 +90,27 @@
/* Define to 1 if you have the `fdatasync' function. */
/* #undef HAVE_FDATASYNC */
+/* Define to 1 if you have the `fgetc' function. */
+#define HAVE_FGETC 1
+
+/* Define to 1 if you have the `fgets' function. */
+#define HAVE_FGETS 1
+
/* Define to 1 if allocated filesystem blocks are not zeroed. */
#define HAVE_FILESYSTEM_NOTZERO 1
+/* Define to 1 to build Berkeley DB with a fine-grained lock manager. */
+/* #undef HAVE_FINE_GRAINED_LOCK_MANAGER */
+
+/* Define to 1 if you have the `fopen' function. */
+#define HAVE_FOPEN 1
+
/* Define to 1 if you have the `ftruncate' function. */
#define HAVE_FTRUNCATE 1
+/* Define to 1 if you have the `fwrite' function. */
+#define HAVE_FWRITE 1
+
/* Define to 1 if you have the `getaddrinfo' function. */
/* #undef HAVE_GETADDRINFO */
@@ -111,6 +135,9 @@
/* Define to 1 if building Hash access method. */
#define HAVE_HASH 1
+/* Define to 1 if you have the `hstrerror' function. */
+/* #undef HAVE_HSTRERROR */
+
/* Define to 1 if you have the <inttypes.h> header file. */
/* #undef HAVE_INTTYPES_H */
@@ -126,6 +153,9 @@
/* Define to 1 if you have the `isspace' function. */
#define HAVE_ISSPACE 1
+/* Define to 1 if you have the `localtime' function. */
+#define HAVE_LOCALTIME 1
+
/* Define to 1 if you have the `memcmp' function. */
#define HAVE_MEMCMP 1
@@ -178,6 +208,9 @@
/* Define to 1 to use the msem_XXX mutexes on HP-UX. */
/* #undef HAVE_MUTEX_HPPA_MSEM_INIT */
+/* Define to 1 to use test-and-set mutexes with blocking mutexes. */
+/* #undef HAVE_MUTEX_HYBRID */
+
/* Define to 1 to use the GCC compiler and IA64 assembly language mutexes. */
/* #undef HAVE_MUTEX_IA64_GCC_ASSEMBLY */
@@ -222,6 +255,9 @@
/* Define to 1 to use the GCC compiler and Sparc assembly language mutexes. */
/* #undef HAVE_MUTEX_SPARC_GCC_ASSEMBLY */
+/* Define to 1 if the Berkeley DB library should support mutexes. */
+#define HAVE_MUTEX_SUPPORT 1
+
/* Define to 1 if mutexes hold system resources. */
#define HAVE_MUTEX_SYSTEM_RESOURCES 1
@@ -249,10 +285,12 @@
/* Define to 1 to use the GCC compiler and Windows mutexes. */
/* #undef HAVE_MUTEX_WIN32_GCC */
-/* Define to 1 to use the GCC compiler and amd64 assembly language mutexes. */
+/* Define to 1 to use the GCC compiler and 64-bit x86 assembly language
+ mutexes. */
/* #undef HAVE_MUTEX_X86_64_GCC_ASSEMBLY */
-/* Define to 1 to use the GCC compiler and x86 assembly language mutexes. */
+/* Define to 1 to use the GCC compiler and 32-bit x86 assembly language
+ mutexes. */
/* #undef HAVE_MUTEX_X86_GCC_ASSEMBLY */
/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
@@ -282,6 +320,9 @@
/* Define to 1 if building on QNX. */
/* #undef HAVE_QNX */
+/* Define to 1 if you have the `qsort' function. */
+#define HAVE_QSORT 1
+
/* Define to 1 if building Queue access method. */
#define HAVE_QUEUE 1
@@ -300,6 +341,9 @@
/* Define to 1 if building RPC client/server. */
/* #undef HAVE_RPC */
+/* Define to 1 if building on S60. */
+/* #undef HAVE_S60 */
+
/* Define to 1 if you have the `sched_yield' function. */
#define HAVE_SCHED_YIELD 1
@@ -378,13 +422,13 @@
/* Define to 1 if you have the `sysconf' function. */
/* #undef HAVE_SYSCONF */
+/* Define to 1 if port includes files in the Berkeley DB source code. */
+#define HAVE_SYSTEM_INCLUDE_FILES 1
+
/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
*/
/* #undef HAVE_SYS_DIR_H */
-/* Define to 1 if you have the <sys/fcntl.h> header file. */
-/* #undef HAVE_SYS_FCNTL_H */
-
/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
*/
/* #undef HAVE_SYS_NDIR_H */
@@ -392,6 +436,9 @@
/* Define to 1 if you have the <sys/select.h> header file. */
/* #undef HAVE_SYS_SELECT_H */
+/* Define to 1 if you have the <sys/socket.h> header file. */
+/* #undef HAVE_SYS_SOCKET_H */
+
/* Define to 1 if you have the <sys/stat.h> header file. */
/* #undef HAVE_SYS_STAT_H */
@@ -401,12 +448,18 @@
/* Define to 1 if you have the <sys/types.h> header file. */
/* #undef HAVE_SYS_TYPES_H */
+/* Define to 1 if you have the `time' function. */
+#define HAVE_TIME 1
+
/* Define to 1 if you have the <unistd.h> header file. */
#define HAVE_UNISTD_H 1
/* Define to 1 if unlink of file with open file descriptors will fail. */
#define HAVE_UNLINK_WITH_OPEN_FAILURE 1
+/* Define to 1 if port includes historic database upgrade support. */
+#define HAVE_UPGRADE_SUPPORT 1
+
/* Define to 1 if building access method verification support. */
#define HAVE_VERIFY 1
@@ -429,13 +482,49 @@
#define PACKAGE_NAME "Berkeley DB"
/* Define to the full name and version of this package. */
-#define PACKAGE_STRING "Berkeley DB 4.5.20"
+#define PACKAGE_STRING "Berkeley DB 4.6.18"
/* Define to the one symbol short name of this package. */
-#define PACKAGE_TARNAME "db-4.5.20"
+#define PACKAGE_TARNAME "db-4.6.18"
/* Define to the version of this package. */
-#define PACKAGE_VERSION "4.5.20"
+#define PACKAGE_VERSION "4.6.18"
+
+/* The size of a `char', as computed by sizeof. */
+/* #undef SIZEOF_CHAR */
+
+/* The size of a `char *', as computed by sizeof. */
+/* #undef SIZEOF_CHAR_P */
+
+/* The size of a `int', as computed by sizeof. */
+/* #undef SIZEOF_INT */
+
+/* The size of a `long', as computed by sizeof. */
+/* #undef SIZEOF_LONG */
+
+/* The size of a `long long', as computed by sizeof. */
+/* #undef SIZEOF_LONG_LONG */
+
+/* The size of a `short', as computed by sizeof. */
+/* #undef SIZEOF_SHORT */
+
+/* The size of a `size_t', as computed by sizeof. */
+/* #undef SIZEOF_SIZE_T */
+
+/* The size of a `unsigned char', as computed by sizeof. */
+/* #undef SIZEOF_UNSIGNED_CHAR */
+
+/* The size of a `unsigned int', as computed by sizeof. */
+/* #undef SIZEOF_UNSIGNED_INT */
+
+/* The size of a `unsigned long', as computed by sizeof. */
+/* #undef SIZEOF_UNSIGNED_LONG */
+
+/* The size of a `unsigned long long', as computed by sizeof. */
+/* #undef SIZEOF_UNSIGNED_LONG_LONG */
+
+/* The size of a `unsigned short', as computed by sizeof. */
+/* #undef SIZEOF_UNSIGNED_SHORT */
/* Define to 1 if the `S_IS*' macros in <sys/stat.h> do not work properly. */
/* #undef STAT_MACROS_BROKEN */
@@ -458,5 +547,11 @@
/* Define to empty if `const' does not conform to ANSI C. */
/* #undef const */
-#include "clib_port.h"
-#include "vxWorks.h"
+/* Define to `__inline__' or `__inline' if that's what the C compiler
+ calls it, or to nothing if 'inline' is not supported under any name. */
+#ifndef __cplusplus
+#define inline
+#endif
+
+/* type to use in place of socklen_t if not defined */
+/* #undef socklen_t */
diff --git a/db/build_vxworks/db_config_small.h b/db/build_vxworks/db_config_small.h
index 12caac11c..1e3439910 100644
--- a/db/build_vxworks/db_config_small.h
+++ b/db/build_vxworks/db_config_small.h
@@ -44,6 +44,12 @@
/* Define to 1 if you have the `atol' function. */
#define HAVE_ATOL 1
+/* Define to 1 if building BREW. */
+/* #undef HAVE_BREW */
+
+/* Define to 1 if building on BREW (SDK2). */
+/* #undef HAVE_BREW_SDK2 */
+
/* Define to 1 if you have the `clock_gettime' function. */
#define HAVE_CLOCK_GETTIME 1
@@ -72,6 +78,9 @@
/* Define to 1 if you have the `fchmod' function. */
/* #undef HAVE_FCHMOD */
+/* Define to 1 if you have the `fclose' function. */
+#define HAVE_FCLOSE 1
+
/* Define to 1 if you have the `fcntl' function. */
/* #undef HAVE_FCNTL */
@@ -81,12 +90,27 @@
/* Define to 1 if you have the `fdatasync' function. */
/* #undef HAVE_FDATASYNC */
+/* Define to 1 if you have the `fgetc' function. */
+#define HAVE_FGETC 1
+
+/* Define to 1 if you have the `fgets' function. */
+#define HAVE_FGETS 1
+
/* Define to 1 if allocated filesystem blocks are not zeroed. */
#define HAVE_FILESYSTEM_NOTZERO 1
+/* Define to 1 to build Berkeley DB with a fine-grained lock manager. */
+/* #undef HAVE_FINE_GRAINED_LOCK_MANAGER */
+
+/* Define to 1 if you have the `fopen' function. */
+#define HAVE_FOPEN 1
+
/* Define to 1 if you have the `ftruncate' function. */
#define HAVE_FTRUNCATE 1
+/* Define to 1 if you have the `fwrite' function. */
+#define HAVE_FWRITE 1
+
/* Define to 1 if you have the `getaddrinfo' function. */
/* #undef HAVE_GETADDRINFO */
@@ -111,6 +135,9 @@
/* Define to 1 if building Hash access method. */
/* #undef HAVE_HASH */
+/* Define to 1 if you have the `hstrerror' function. */
+/* #undef HAVE_HSTRERROR */
+
/* Define to 1 if you have the <inttypes.h> header file. */
/* #undef HAVE_INTTYPES_H */
@@ -126,6 +153,9 @@
/* Define to 1 if you have the `isspace' function. */
#define HAVE_ISSPACE 1
+/* Define to 1 if you have the `localtime' function. */
+#define HAVE_LOCALTIME 1
+
/* Define to 1 if you have the `memcmp' function. */
#define HAVE_MEMCMP 1
@@ -178,6 +208,9 @@
/* Define to 1 to use the msem_XXX mutexes on HP-UX. */
/* #undef HAVE_MUTEX_HPPA_MSEM_INIT */
+/* Define to 1 to use test-and-set mutexes with blocking mutexes. */
+/* #undef HAVE_MUTEX_HYBRID */
+
/* Define to 1 to use the GCC compiler and IA64 assembly language mutexes. */
/* #undef HAVE_MUTEX_IA64_GCC_ASSEMBLY */
@@ -222,6 +255,9 @@
/* Define to 1 to use the GCC compiler and Sparc assembly language mutexes. */
/* #undef HAVE_MUTEX_SPARC_GCC_ASSEMBLY */
+/* Define to 1 if the Berkeley DB library should support mutexes. */
+#define HAVE_MUTEX_SUPPORT 1
+
/* Define to 1 if mutexes hold system resources. */
#define HAVE_MUTEX_SYSTEM_RESOURCES 1
@@ -249,10 +285,12 @@
/* Define to 1 to use the GCC compiler and Windows mutexes. */
/* #undef HAVE_MUTEX_WIN32_GCC */
-/* Define to 1 to use the GCC compiler and amd64 assembly language mutexes. */
+/* Define to 1 to use the GCC compiler and 64-bit x86 assembly language
+ mutexes. */
/* #undef HAVE_MUTEX_X86_64_GCC_ASSEMBLY */
-/* Define to 1 to use the GCC compiler and x86 assembly language mutexes. */
+/* Define to 1 to use the GCC compiler and 32-bit x86 assembly language
+ mutexes. */
/* #undef HAVE_MUTEX_X86_GCC_ASSEMBLY */
/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
@@ -282,6 +320,9 @@
/* Define to 1 if building on QNX. */
/* #undef HAVE_QNX */
+/* Define to 1 if you have the `qsort' function. */
+#define HAVE_QSORT 1
+
/* Define to 1 if building Queue access method. */
/* #undef HAVE_QUEUE */
@@ -300,6 +341,9 @@
/* Define to 1 if building RPC client/server. */
/* #undef HAVE_RPC */
+/* Define to 1 if building on S60. */
+/* #undef HAVE_S60 */
+
/* Define to 1 if you have the `sched_yield' function. */
#define HAVE_SCHED_YIELD 1
@@ -378,13 +422,13 @@
/* Define to 1 if you have the `sysconf' function. */
/* #undef HAVE_SYSCONF */
+/* Define to 1 if port includes files in the Berkeley DB source code. */
+#define HAVE_SYSTEM_INCLUDE_FILES 1
+
/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
*/
/* #undef HAVE_SYS_DIR_H */
-/* Define to 1 if you have the <sys/fcntl.h> header file. */
-/* #undef HAVE_SYS_FCNTL_H */
-
/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
*/
/* #undef HAVE_SYS_NDIR_H */
@@ -392,6 +436,9 @@
/* Define to 1 if you have the <sys/select.h> header file. */
/* #undef HAVE_SYS_SELECT_H */
+/* Define to 1 if you have the <sys/socket.h> header file. */
+/* #undef HAVE_SYS_SOCKET_H */
+
/* Define to 1 if you have the <sys/stat.h> header file. */
/* #undef HAVE_SYS_STAT_H */
@@ -401,12 +448,18 @@
/* Define to 1 if you have the <sys/types.h> header file. */
/* #undef HAVE_SYS_TYPES_H */
+/* Define to 1 if you have the `time' function. */
+#define HAVE_TIME 1
+
/* Define to 1 if you have the <unistd.h> header file. */
#define HAVE_UNISTD_H 1
/* Define to 1 if unlink of file with open file descriptors will fail. */
#define HAVE_UNLINK_WITH_OPEN_FAILURE 1
+/* Define to 1 if port includes historic database upgrade support. */
+#define HAVE_UPGRADE_SUPPORT 1
+
/* Define to 1 if building access method verification support. */
/* #undef HAVE_VERIFY */
@@ -429,13 +482,49 @@
#define PACKAGE_NAME "Berkeley DB"
/* Define to the full name and version of this package. */
-#define PACKAGE_STRING "Berkeley DB 4.5.20"
+#define PACKAGE_STRING "Berkeley DB 4.6.18"
/* Define to the one symbol short name of this package. */
-#define PACKAGE_TARNAME "db-4.5.20"
+#define PACKAGE_TARNAME "db-4.6.18"
/* Define to the version of this package. */
-#define PACKAGE_VERSION "4.5.20"
+#define PACKAGE_VERSION "4.6.18"
+
+/* The size of a `char', as computed by sizeof. */
+/* #undef SIZEOF_CHAR */
+
+/* The size of a `char *', as computed by sizeof. */
+/* #undef SIZEOF_CHAR_P */
+
+/* The size of a `int', as computed by sizeof. */
+/* #undef SIZEOF_INT */
+
+/* The size of a `long', as computed by sizeof. */
+/* #undef SIZEOF_LONG */
+
+/* The size of a `long long', as computed by sizeof. */
+/* #undef SIZEOF_LONG_LONG */
+
+/* The size of a `short', as computed by sizeof. */
+/* #undef SIZEOF_SHORT */
+
+/* The size of a `size_t', as computed by sizeof. */
+/* #undef SIZEOF_SIZE_T */
+
+/* The size of a `unsigned char', as computed by sizeof. */
+/* #undef SIZEOF_UNSIGNED_CHAR */
+
+/* The size of a `unsigned int', as computed by sizeof. */
+/* #undef SIZEOF_UNSIGNED_INT */
+
+/* The size of a `unsigned long', as computed by sizeof. */
+/* #undef SIZEOF_UNSIGNED_LONG */
+
+/* The size of a `unsigned long long', as computed by sizeof. */
+/* #undef SIZEOF_UNSIGNED_LONG_LONG */
+
+/* The size of a `unsigned short', as computed by sizeof. */
+/* #undef SIZEOF_UNSIGNED_SHORT */
/* Define to 1 if the `S_IS*' macros in <sys/stat.h> do not work properly. */
/* #undef STAT_MACROS_BROKEN */
@@ -458,5 +547,11 @@
/* Define to empty if `const' does not conform to ANSI C. */
/* #undef const */
-#include "clib_port.h"
-#include "vxWorks.h"
+/* Define to `__inline__' or `__inline' if that's what the C compiler
+ calls it, or to nothing if 'inline' is not supported under any name. */
+#ifndef __cplusplus
+#define inline
+#endif
+
+/* type to use in place of socklen_t if not defined */
+/* #undef socklen_t */
diff --git a/db/build_vxworks/db_deadlock/db_deadlock.c b/db/build_vxworks/db_deadlock/db_deadlock.c
index 3b560d174..24e5cab72 100644
--- a/db/build_vxworks/db_deadlock/db_deadlock.c
+++ b/db/build_vxworks/db_deadlock/db_deadlock.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: db_deadlock.c,v 12.13 2006/08/26 09:23:00 bostic Exp $
+ * $Id: db_deadlock.c,v 12.18 2007/05/17 17:17:42 bostic Exp $
*/
#include "db_config.h"
@@ -13,7 +12,7 @@
#ifndef lint
static const char copyright[] =
- "Copyright (c) 1996-2006\nOracle Corporation. All rights reserved.\n";
+ "Copyright (c) 1996,2007 Oracle. All rights reserved.\n";
#endif
int db_deadlock_main __P((int, char *[]));
@@ -47,10 +46,10 @@ db_deadlock_main(argc, argv)
u_int32_t atype;
time_t now;
u_long secs, usecs;
- int ch, exitval, ret, verbose;
+ int rejected, ch, exitval, ret, verbose;
char *home, *logfile, *passwd, *str, time_buf[CTIME_BUFLEN];
- if ((progname = strrchr(argv[0], '/')) == NULL)
+ if ((progname = __db_rpath(argv[0])) == NULL)
progname = argv[0];
else
++progname;
@@ -185,10 +184,13 @@ db_deadlock_main(argc, argv)
"running at %.24s", __db_ctime(&now, time_buf));
}
- if ((ret = dbenv->lock_detect(dbenv, 0, atype, NULL)) != 0) {
+ if ((ret =
+ dbenv->lock_detect(dbenv, 0, atype, &rejected)) != 0) {
dbenv->err(dbenv, ret, "DB_ENV->lock_detect");
goto shutdown;
}
+ if (verbose)
+ dbenv->errx(dbenv, "rejected %d locks", rejected);
/* Make a pass every "secs" secs and "usecs" usecs. */
if (secs == 0 && usecs == 0)
diff --git a/db/build_vxworks/db_deadlock/db_deadlock/Makefile.component b/db/build_vxworks/db_deadlock/db_deadlock/Makefile.component
deleted file mode 100644
index 803a941b9..000000000
--- a/db/build_vxworks/db_deadlock/db_deadlock/Makefile.component
+++ /dev/null
@@ -1,433 +0,0 @@
-# Component project makefile generated by the project manager
-#
-
-
-## core information
-
-
-CONFIGLETTE = compConfig.c
-TGT_DIR = $(WIND_BASE)/target
-EXTERNAL_BINARIES_DIR = $(PRJ_DIR)/extbin/$(BUILD_SPEC)
-COMPONENT_NAME = db_deadlock
-.PHONY: defaultTarget
-defaultTarget: $(COMPONENT_NAME).cm
-
-#
-# default definition for CPU and TOOL (needed by defs.project)
-#
-
-CPU = SIMSPARCSOLARIS
-TOOL = gnu
-
-
-## CPU and TOOL info for build specification 'PENTIUM2gnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.debug)
-CPU = PENTIUM2
-TOOL = gnu
-SYS_OBJ_DIR = $(WIND_BASE)/target/lib/obj$(CPU)$(TOOL)vx
-USER_OBJ_DIR = $(WIND_BASE)/target/user/objs/obj$(CPU)$(TOOL)
-PRJ_OBJS = db_deadlock.o \
- compConfig.o
-COMPONENT_OBJS = db_deadlock.o
-DEPENDENCY_FILES = db_deadlock.d \
- compConfig.d
-NUMBER_OF_COMPONENT_OBJS = $(words $(COMPONENT_OBJS))
-endif
-
-
-## CPU and TOOL info for build specification 'PENTIUM2gnu.release'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.release)
-CPU = PENTIUM2
-TOOL = gnu
-SYS_OBJ_DIR = $(WIND_BASE)/target/lib/obj$(CPU)$(TOOL)vx
-USER_OBJ_DIR = $(WIND_BASE)/target/user/objs/obj$(CPU)$(TOOL)
-PRJ_OBJS = db_deadlock.o \
- compConfig.o
-COMPONENT_OBJS = db_deadlock.o
-DEPENDENCY_FILES = db_deadlock.d \
- compConfig.d
-NUMBER_OF_COMPONENT_OBJS = $(words $(COMPONENT_OBJS))
-endif
-
-
-## CPU and TOOL info for build specification 'PENTIUMgnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUMgnu.debug)
-CPU = PENTIUM
-TOOL = gnu
-SYS_OBJ_DIR = $(WIND_BASE)/target/lib/obj$(CPU)$(TOOL)vx
-USER_OBJ_DIR = $(WIND_BASE)/target/user/objs/obj$(CPU)$(TOOL)
-PRJ_OBJS = db_deadlock.o \
- compConfig.o
-COMPONENT_OBJS = db_deadlock.o
-DEPENDENCY_FILES = db_deadlock.d \
- compConfig.d
-NUMBER_OF_COMPONENT_OBJS = $(words $(COMPONENT_OBJS))
-endif
-
-
-## CPU and TOOL info for build specification 'SIMSPARCSOLARISgnu.debug'
-
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu.debug)
-CPU = SIMSPARCSOLARIS
-TOOL = gnu
-SYS_OBJ_DIR = $(WIND_BASE)/target/lib/obj$(CPU)$(TOOL)vx
-USER_OBJ_DIR = $(WIND_BASE)/target/user/objs/obj$(CPU)$(TOOL)
-PRJ_OBJS = db_deadlock.o \
- compConfig.o
-COMPONENT_OBJS = db_deadlock.o
-DEPENDENCY_FILES = db_deadlock.d \
- compConfig.d
-NUMBER_OF_COMPONENT_OBJS = $(words $(COMPONENT_OBJS))
-endif
-
-
-include $(TGT_DIR)/h/make/defs.project
-
-
-## build-configuration info for build specification 'PENTIUM2gnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.debug)
-
-## macros
-
-AR = arpentium
-AS = ccpentium
-CC = ccpentium
-CFLAGS = -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2
-CFLAGS_AS = -mcpu=pentiumpro -march=pentiumpro -ansi -g -nostdlib -fno-builtin -fno-defer-pop -P -x assembler-with-cpp -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2
-CPP = ccpentium -E -P
-CPPFILT = c++filtpentium --strip-underscores
-LD = ldpentium
-LDFLAGS = -X
-LDPARTIAL = ccpentium -B$(WIND_BASE)/host/$(WIND_HOST_TYPE)/lib/gcc-lib/ -nostdlib -r -Wl,-X
-LD_PARTIAL_FLAGS = -X -r
-NM = nmpentium -g
-OPTION_DEFINE_MACRO = -D
-OPTION_GENERATE_DEPENDENCY_FILE = -MD
-OPTION_INCLUDE_DIR = -I
-RELEASE = 0
-SIZE = sizepentium
-POST_BUILD_RULE =
-
-## end build-configuration info for build specification 'PENTIUM2gnu.debug'
-
-endif
-
-
-## build-configuration info for build specification 'PENTIUM2gnu.release'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.release)
-
-## macros
-
-AR = arpentium
-AS = ccpentium
-CC = ccpentium
-CFLAGS = -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2
-CFLAGS_AS = -mcpu=pentiumpro -march=pentiumpro -ansi -O2 -nostdlib -fno-builtin -fno-defer-pop -P -x assembler-with-cpp -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2
-CPP = ccpentium -E -P
-CPPFILT = c++filtpentium --strip-underscores
-LD = ldpentium
-LDFLAGS = -X
-LDPARTIAL = ccpentium -B$(WIND_BASE)/host/$(WIND_HOST_TYPE)/lib/gcc-lib/ -nostdlib -r -Wl,-X
-LD_PARTIAL_FLAGS = -X -r
-NM = nmpentium -g
-OPTION_DEFINE_MACRO = -D
-OPTION_GENERATE_DEPENDENCY_FILE = -MD
-OPTION_INCLUDE_DIR = -I
-RELEASE = 1
-SIZE = sizepentium
-POST_BUILD_RULE =
-
-## end build-configuration info for build specification 'PENTIUM2gnu.release'
-
-endif
-
-
-## build-configuration info for build specification 'PENTIUMgnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUMgnu.debug)
-
-## macros
-
-AR = arpentium
-AS = ccpentium
-CC = ccpentium
-CFLAGS = -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM
-CFLAGS_AS = -mcpu=pentium -march=pentium -ansi -g -nostdlib -fno-builtin -fno-defer-pop -P -x assembler-with-cpp -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM
-CPP = ccpentium -E -P
-CPPFILT = c++filtpentium --strip-underscores
-LD = ldpentium
-LDFLAGS = -X
-LDPARTIAL = ccpentium -B$(WIND_BASE)/host/$(WIND_HOST_TYPE)/lib/gcc-lib/ -nostdlib -r -Wl,-X
-LD_PARTIAL_FLAGS = -X -r
-NM = nmpentium -g
-OPTION_DEFINE_MACRO = -D
-OPTION_GENERATE_DEPENDENCY_FILE = -MD
-OPTION_INCLUDE_DIR = -I
-RELEASE = 0
-SIZE = sizepentium
-POST_BUILD_RULE =
-
-## end build-configuration info for build specification 'PENTIUMgnu.debug'
-
-endif
-
-
-## build-configuration info for build specification 'SIMSPARCSOLARISgnu.debug'
-
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu.debug)
-
-## macros
-
-AR = arsparc
-AS = ccsparc
-CC = ccsparc
-CFLAGS = -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -fno-builtin -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=SIMSPARCSOLARIS
-CFLAGS_AS = -ansi -g -fno-builtin -P -x assembler-with-cpp -Wall -I. -I$(WIND_BASE)/target/h -DCPU=SIMSPARCSOLARIS
-CPP = ccsparc -E -P
-CPPFILT = c++filtsparc --strip-underscores
-LD = ldsparc
-LDFLAGS = -T $(WIND_BASE)/target/config/solaris/linker-script
-LDPARTIAL = ccsparc -B$(WIND_BASE)/host/$(WIND_HOST_TYPE)/lib/gcc-lib/ -nostdlib -r -Wl,-X
-LD_PARTIAL_FLAGS = -nostdlib -r
-NM = nmsparc
-OPTION_DEFINE_MACRO = -D
-OPTION_GENERATE_DEPENDENCY_FILE = -MD
-OPTION_INCLUDE_DIR = -I
-RELEASE = 0
-SIZE = sizesparc
-POST_BUILD_RULE =
-
-## end build-configuration info for build specification 'SIMSPARCSOLARISgnu.debug'
-
-endif
-
-# override make definitions only below this line
-
-
-# override make definitions only above this line
-
-include $(TGT_DIR)/h/make/rules.project
-
-
-#
-# Dummy target to force external make
-#
-
-FORCE_EXTERNAL_MAKE:
-
-
-
-#
-# Custom makefile
-#
-
-include $(PRJ_DIR)/Makefile.custom
-
-
-## build rules for build specification 'PENTIUM2gnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.debug)
-
-%.o : $(PRJ_DIR)/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 -c $<
-
-%.d : $(PRJ_DIR)/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 $< > $@
-
-%.o : $(PRJ_DIR)/../%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 -c $<
-
-%.d : $(PRJ_DIR)/../%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 $< > $@
-
-
-## end build rules for build specification 'PENTIUM2gnu.debug'
-
-endif
-
-
-## build rules for build specification 'PENTIUM2gnu.release'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.release)
-
-%.o : $(PRJ_DIR)/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 -c $<
-
-%.d : $(PRJ_DIR)/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 $< > $@
-
-%.o : $(PRJ_DIR)/../%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 -c $<
-
-%.d : $(PRJ_DIR)/../%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 $< > $@
-
-
-## end build rules for build specification 'PENTIUM2gnu.release'
-
-endif
-
-
-## build rules for build specification 'PENTIUMgnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUMgnu.debug)
-
-%.o : $(PRJ_DIR)/%.c
- $(CC) -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM -c $<
-
-%.d : $(PRJ_DIR)/%.c
- ccpentium -E -P -M -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM $< > $@
-
-%.o : $(PRJ_DIR)/../%.c
- $(CC) -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM -c $<
-
-%.d : $(PRJ_DIR)/../%.c
- ccpentium -E -P -M -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM $< > $@
-
-
-## end build rules for build specification 'PENTIUMgnu.debug'
-
-endif
-
-
-## build rules for build specification 'SIMSPARCSOLARISgnu.debug'
-
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu.debug)
-
-%.o : $(PRJ_DIR)/%.c
- $(CC) -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -fno-builtin -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=SIMSPARCSOLARIS -c $<
-
-%.d : $(PRJ_DIR)/%.c
- ccsparc -E -P -M -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -fno-builtin -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=SIMSPARCSOLARIS $< > $@
-
-%.o : $(PRJ_DIR)/../%.c
- $(CC) -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -fno-builtin -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=SIMSPARCSOLARIS -c $<
-
-%.d : $(PRJ_DIR)/../%.c
- ccsparc -E -P -M -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -fno-builtin -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=SIMSPARCSOLARIS $< > $@
-
-
-## end build rules for build specification 'SIMSPARCSOLARISgnu.debug'
-
-endif
-
-#
-# Rule for configurable, binary component
-#
-# Downloadable component module build rules
-#
-db_deadlock.cm: $(PRJ_OBJS) mxrDoc.nm depend
-#
-# Partially link all db_deadlock modules together
-# including the configlette modules
-#
- $(LD) -r -o $@ $(PRJ_OBJS) $(CC_LIB)
-#
-# Generate _vxMain and _vxExit by munching
-#
- $(NM) $@ | $(MUNCH) > db_deadlock.c
- $(COMPILE_TRADITIONAL) db_deadlock_ctdt.c -o db_deadlock_ctdt.o
- $(LD) -r -o db_deadlock.tmp $@ db_deadlock_ctdt.o
- $(RM) $@
- $(MV) db_deadlock.tmp $@
-#
-# Adds entry point table section to db_deadlock component
-#
- $(PD_EPT_DDE_ADD) $@ $(PRJ_DIR)/$(PRJ_FILE) INDEX $(BUILD_SPEC)
-
-
-#
-# Partial link build rules
-# Partially link all db_deadlock modules together
-# If no source files, then generates dummy.c
-#
-
-ifeq ($(COMPONENT_OBJS),)
-dummy.c:
- $(CFG_GEN) $(PRJ_DIR)/$(PRJ_FILE) dummyCGen $(PRJ_TYPE)
-
-db_deadlock.pl: dummy.o mxrDoc.nm depend
- $(LD) -r -o $@ dummy.o
-else
-db_deadlock.pl: $(COMPONENT_OBJS) mxrDoc.nm depend
- $(LD) -r -o $@ $(COMPONENT_OBJS)
-endif
-
-#
-# nm file containing symbol information for all component objects
-#
-
-EXTERNAL_BINARIES_DIR_PATTERN_1 = $(subst \,\\,$(PRJ_DIR)/extbin/$(BUILD_SPEC)/)
-EXTERNAL_BINARIES_DIR_PATTERN = $(subst /,\/,$(EXTERNAL_BINARIES_DIR_PATTERN_1))
-
-mxrDoc.nm: mxrDoc.size $(COMPONENT_OBJS)
- $(RM) $@
-# if there are no object files, make a blank mxr doc
-ifeq ($(NUMBER_OF_COMPONENT_OBJS),0)
- @$(ECHO) "" >> $@
-else
-# make sure object file name is in mxrDoc.nm even if there
-# is only one object file
- $(ECHO) db_deadlock.o: >> $@
- $(NM) db_deadlock.o | sed -e "s|$(EXTERNAL_BINARIES_DIR_PATTERN)||g" >> $@
-endif
-
-#
-# size file containing size information for all component objects
-#
-mxrDoc.size: $(COMPONENT_OBJS) $(PRJ_DIR)/component.cdf
- $(RM) $@
-ifeq ($(NUMBER_OF_COMPONENT_OBJS),0)
- @$(ECHO) "" > $@
-else
- $(SIZE) db_deadlock.o | sed -e "s|$(EXTERNAL_BINARIES_DIR_PATTERN)||g" >> $@
-endif
-
-
-## user-defined rules for build specification 'PENTIUM2gnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.debug)
-
-## end user-defined rules for build specification 'PENTIUM2gnu.debug'
-
-endif
-
-
-## user-defined rules for build specification 'PENTIUM2gnu.release'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.release)
-
-## end user-defined rules for build specification 'PENTIUM2gnu.release'
-
-endif
-
-
-## user-defined rules for build specification 'PENTIUMgnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUMgnu.debug)
-
-## end user-defined rules for build specification 'PENTIUMgnu.debug'
-
-endif
-
-
-## user-defined rules for build specification 'SIMSPARCSOLARISgnu.debug'
-
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu.debug)
-
-## end user-defined rules for build specification 'SIMSPARCSOLARISgnu.debug'
-
-endif
-
-
-#
-# Recursive clean
-#
-
-rclean : clean
-
diff --git a/db/build_vxworks/db_dump/db_dump.c b/db/build_vxworks/db_dump/db_dump.c
index e8f0f33b5..4f04fa103 100644
--- a/db/build_vxworks/db_dump/db_dump.c
+++ b/db/build_vxworks/db_dump/db_dump.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: db_dump.c,v 12.9 2006/08/26 09:23:01 bostic Exp $
+ * $Id: db_dump.c,v 12.15 2007/05/17 15:14:59 bostic Exp $
*/
#include "db_config.h"
@@ -15,12 +14,11 @@
#ifndef lint
static const char copyright[] =
- "Copyright (c) 1996-2006\nOracle Corporation. All rights reserved.\n";
+ "Copyright (c) 1996,2007 Oracle. All rights reserved.\n";
#endif
int db_dump_db_init __P((DB_ENV *, char *, int, u_int32_t, int *));
int db_dump_dump_sub __P((DB_ENV *, DB *, char *, int, int));
-int db_dump_is_sub __P((DB *, int *));
int db_dump_main __P((int, char *[]));
int db_dump_show_subs __P((DB *));
int db_dump_usage __P((void));
@@ -54,10 +52,10 @@ db_dump_main(argc, argv)
u_int32_t cache;
int ch;
int exitval, keyflag, lflag, nflag, pflag, private;
- int ret, Rflag, rflag, resize, subs;
+ int ret, Rflag, rflag, resize;
char *dopt, *home, *passwd, *subname;
- if ((progname = strrchr(argv[0], '/')) == NULL)
+ if ((progname = __db_rpath(argv[0])) == NULL)
progname = argv[0];
else
++progname;
@@ -240,20 +238,16 @@ retry: if ((ret = db_env_create(&dbenv, 0)) != 0) {
goto err;
}
} else if (lflag) {
- if (db_dump_is_sub(dbp, &subs))
- goto err;
- if (subs == 0) {
+ if (dbp->get_multiple(dbp)) {
+ if (db_dump_show_subs(dbp))
+ goto err;
+ } else {
dbp->errx(dbp,
"%s: does not contain multiple databases", argv[0]);
goto err;
}
- if (db_dump_show_subs(dbp))
- goto err;
} else {
- subs = 0;
- if (subname == NULL && db_dump_is_sub(dbp, &subs))
- goto err;
- if (subs) {
+ if (subname == NULL && dbp->get_multiple(dbp)) {
if (db_dump_dump_sub(dbenv, dbp, argv[0], pflag, keyflag))
goto err;
} else
@@ -345,47 +339,6 @@ err: dbenv->err(dbenv, ret, "DB_ENV->open");
}
/*
- * is_sub --
- * Return if the database contains subdatabases.
- */
-int
-db_dump_is_sub(dbp, yesno)
- DB *dbp;
- int *yesno;
-{
- DB_BTREE_STAT *btsp;
- DB_HASH_STAT *hsp;
- int ret;
-
- switch (dbp->type) {
- case DB_BTREE:
- case DB_RECNO:
- if ((ret = dbp->stat(dbp, NULL, &btsp, DB_FAST_STAT)) != 0) {
- dbp->err(dbp, ret, "DB->stat");
- return (ret);
- }
- *yesno = btsp->bt_metaflags & BTM_SUBDB ? 1 : 0;
- free(btsp);
- break;
- case DB_HASH:
- if ((ret = dbp->stat(dbp, NULL, &hsp, DB_FAST_STAT)) != 0) {
- dbp->err(dbp, ret, "DB->stat");
- return (ret);
- }
- *yesno = hsp->hash_metaflags & DB_HASH_SUBDB ? 1 : 0;
- free(hsp);
- break;
- case DB_QUEUE:
- break;
- case DB_UNKNOWN:
- default:
- dbp->errx(dbp, "unknown database type");
- return (1);
- }
- return (0);
-}
-
-/*
* dump_sub --
* Dump out the records for a DB containing subdatabases.
*/
@@ -413,7 +366,8 @@ db_dump_dump_sub(dbenv, parent_dbp, parent_name, pflag, keyflag)
memset(&key, 0, sizeof(key));
memset(&data, 0, sizeof(data));
- while ((ret = dbcp->c_get(dbcp, &key, &data, DB_NEXT)) == 0) {
+ while ((ret = dbcp->get(dbcp, &key, &data,
+ DB_IGNORE_LEASE | DB_NEXT)) == 0) {
/* Nul terminate the subdatabase name. */
if ((subdb = malloc(key.size + 1)) == NULL) {
dbenv->err(dbenv, ENOMEM, NULL);
@@ -445,7 +399,7 @@ db_dump_dump_sub(dbenv, parent_dbp, parent_name, pflag, keyflag)
return (1);
}
- if ((ret = dbcp->c_close(dbcp)) != 0) {
+ if ((ret = dbcp->close(dbcp)) != 0) {
parent_dbp->err(parent_dbp, ret, "DBcursor->close");
return (1);
}
@@ -476,7 +430,8 @@ db_dump_show_subs(dbp)
memset(&key, 0, sizeof(key));
memset(&data, 0, sizeof(data));
- while ((ret = dbcp->c_get(dbcp, &key, &data, DB_NEXT)) == 0) {
+ while ((ret = dbcp->get(dbcp, &key, &data,
+ DB_IGNORE_LEASE | DB_NEXT)) == 0) {
if ((ret = dbp->dbenv->prdbt(
&key, 1, NULL, stdout, __db_pr_callback, 0)) != 0) {
dbp->errx(dbp, NULL);
@@ -488,7 +443,7 @@ db_dump_show_subs(dbp)
return (1);
}
- if ((ret = dbcp->c_close(dbcp)) != 0) {
+ if ((ret = dbcp->close(dbcp)) != 0) {
dbp->err(dbp, ret, "DBcursor->close");
return (1);
}
diff --git a/db/build_vxworks/db_dump/db_dump/Makefile.component b/db/build_vxworks/db_dump/db_dump/Makefile.component
deleted file mode 100644
index 7f537dcfc..000000000
--- a/db/build_vxworks/db_dump/db_dump/Makefile.component
+++ /dev/null
@@ -1,433 +0,0 @@
-# Component project makefile generated by the project manager
-#
-
-
-## core information
-
-
-CONFIGLETTE = compConfig.c
-TGT_DIR = $(WIND_BASE)/target
-EXTERNAL_BINARIES_DIR = $(PRJ_DIR)/extbin/$(BUILD_SPEC)
-COMPONENT_NAME = db_dump
-.PHONY: defaultTarget
-defaultTarget: $(COMPONENT_NAME).cm
-
-#
-# default definition for CPU and TOOL (needed by defs.project)
-#
-
-CPU = SIMSPARCSOLARIS
-TOOL = gnu
-
-
-## CPU and TOOL info for build specification 'PENTIUM2gnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.debug)
-CPU = PENTIUM2
-TOOL = gnu
-SYS_OBJ_DIR = $(WIND_BASE)/target/lib/obj$(CPU)$(TOOL)vx
-USER_OBJ_DIR = $(WIND_BASE)/target/user/objs/obj$(CPU)$(TOOL)
-PRJ_OBJS = db_dump.o \
- compConfig.o
-COMPONENT_OBJS = db_dump.o
-DEPENDENCY_FILES = db_dump.d \
- compConfig.d
-NUMBER_OF_COMPONENT_OBJS = $(words $(COMPONENT_OBJS))
-endif
-
-
-## CPU and TOOL info for build specification 'PENTIUM2gnu.release'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.release)
-CPU = PENTIUM2
-TOOL = gnu
-SYS_OBJ_DIR = $(WIND_BASE)/target/lib/obj$(CPU)$(TOOL)vx
-USER_OBJ_DIR = $(WIND_BASE)/target/user/objs/obj$(CPU)$(TOOL)
-PRJ_OBJS = db_dump.o \
- compConfig.o
-COMPONENT_OBJS = db_dump.o
-DEPENDENCY_FILES = db_dump.d \
- compConfig.d
-NUMBER_OF_COMPONENT_OBJS = $(words $(COMPONENT_OBJS))
-endif
-
-
-## CPU and TOOL info for build specification 'PENTIUMgnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUMgnu.debug)
-CPU = PENTIUM
-TOOL = gnu
-SYS_OBJ_DIR = $(WIND_BASE)/target/lib/obj$(CPU)$(TOOL)vx
-USER_OBJ_DIR = $(WIND_BASE)/target/user/objs/obj$(CPU)$(TOOL)
-PRJ_OBJS = db_dump.o \
- compConfig.o
-COMPONENT_OBJS = db_dump.o
-DEPENDENCY_FILES = db_dump.d \
- compConfig.d
-NUMBER_OF_COMPONENT_OBJS = $(words $(COMPONENT_OBJS))
-endif
-
-
-## CPU and TOOL info for build specification 'SIMSPARCSOLARISgnu.debug'
-
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu.debug)
-CPU = SIMSPARCSOLARIS
-TOOL = gnu
-SYS_OBJ_DIR = $(WIND_BASE)/target/lib/obj$(CPU)$(TOOL)vx
-USER_OBJ_DIR = $(WIND_BASE)/target/user/objs/obj$(CPU)$(TOOL)
-PRJ_OBJS = db_dump.o \
- compConfig.o
-COMPONENT_OBJS = db_dump.o
-DEPENDENCY_FILES = db_dump.d \
- compConfig.d
-NUMBER_OF_COMPONENT_OBJS = $(words $(COMPONENT_OBJS))
-endif
-
-
-include $(TGT_DIR)/h/make/defs.project
-
-
-## build-configuration info for build specification 'PENTIUM2gnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.debug)
-
-## macros
-
-AR = arpentium
-AS = ccpentium
-CC = ccpentium
-CFLAGS = -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2
-CFLAGS_AS = -mcpu=pentiumpro -march=pentiumpro -ansi -g -nostdlib -fno-builtin -fno-defer-pop -P -x assembler-with-cpp -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2
-CPP = ccpentium -E -P
-CPPFILT = c++filtpentium --strip-underscores
-LD = ldpentium
-LDFLAGS = -X
-LDPARTIAL = ccpentium -B$(WIND_BASE)/host/$(WIND_HOST_TYPE)/lib/gcc-lib/ -nostdlib -r -Wl,-X
-LD_PARTIAL_FLAGS = -X -r
-NM = nmpentium -g
-OPTION_DEFINE_MACRO = -D
-OPTION_GENERATE_DEPENDENCY_FILE = -MD
-OPTION_INCLUDE_DIR = -I
-RELEASE = 0
-SIZE = sizepentium
-POST_BUILD_RULE =
-
-## end build-configuration info for build specification 'PENTIUM2gnu.debug'
-
-endif
-
-
-## build-configuration info for build specification 'PENTIUM2gnu.release'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.release)
-
-## macros
-
-AR = arpentium
-AS = ccpentium
-CC = ccpentium
-CFLAGS = -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2
-CFLAGS_AS = -mcpu=pentiumpro -march=pentiumpro -ansi -O2 -nostdlib -fno-builtin -fno-defer-pop -P -x assembler-with-cpp -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2
-CPP = ccpentium -E -P
-CPPFILT = c++filtpentium --strip-underscores
-LD = ldpentium
-LDFLAGS = -X
-LDPARTIAL = ccpentium -B$(WIND_BASE)/host/$(WIND_HOST_TYPE)/lib/gcc-lib/ -nostdlib -r -Wl,-X
-LD_PARTIAL_FLAGS = -X -r
-NM = nmpentium -g
-OPTION_DEFINE_MACRO = -D
-OPTION_GENERATE_DEPENDENCY_FILE = -MD
-OPTION_INCLUDE_DIR = -I
-RELEASE = 1
-SIZE = sizepentium
-POST_BUILD_RULE =
-
-## end build-configuration info for build specification 'PENTIUM2gnu.release'
-
-endif
-
-
-## build-configuration info for build specification 'PENTIUMgnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUMgnu.debug)
-
-## macros
-
-AR = arpentium
-AS = ccpentium
-CC = ccpentium
-CFLAGS = -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM
-CFLAGS_AS = -mcpu=pentium -march=pentium -ansi -g -nostdlib -fno-builtin -fno-defer-pop -P -x assembler-with-cpp -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM
-CPP = ccpentium -E -P
-CPPFILT = c++filtpentium --strip-underscores
-LD = ldpentium
-LDFLAGS = -X
-LDPARTIAL = ccpentium -B$(WIND_BASE)/host/$(WIND_HOST_TYPE)/lib/gcc-lib/ -nostdlib -r -Wl,-X
-LD_PARTIAL_FLAGS = -X -r
-NM = nmpentium -g
-OPTION_DEFINE_MACRO = -D
-OPTION_GENERATE_DEPENDENCY_FILE = -MD
-OPTION_INCLUDE_DIR = -I
-RELEASE = 0
-SIZE = sizepentium
-POST_BUILD_RULE =
-
-## end build-configuration info for build specification 'PENTIUMgnu.debug'
-
-endif
-
-
-## build-configuration info for build specification 'SIMSPARCSOLARISgnu.debug'
-
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu.debug)
-
-## macros
-
-AR = arsparc
-AS = ccsparc
-CC = ccsparc
-CFLAGS = -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -fno-builtin -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=SIMSPARCSOLARIS
-CFLAGS_AS = -ansi -g -fno-builtin -P -x assembler-with-cpp -Wall -I. -I$(WIND_BASE)/target/h -DCPU=SIMSPARCSOLARIS
-CPP = ccsparc -E -P
-CPPFILT = c++filtsparc --strip-underscores
-LD = ldsparc
-LDFLAGS = -T $(WIND_BASE)/target/config/solaris/linker-script
-LDPARTIAL = ccsparc -B$(WIND_BASE)/host/$(WIND_HOST_TYPE)/lib/gcc-lib/ -nostdlib -r -Wl,-X
-LD_PARTIAL_FLAGS = -nostdlib -r
-NM = nmsparc
-OPTION_DEFINE_MACRO = -D
-OPTION_GENERATE_DEPENDENCY_FILE = -MD
-OPTION_INCLUDE_DIR = -I
-RELEASE = 0
-SIZE = sizesparc
-POST_BUILD_RULE =
-
-## end build-configuration info for build specification 'SIMSPARCSOLARISgnu.debug'
-
-endif
-
-# override make definitions only below this line
-
-
-# override make definitions only above this line
-
-include $(TGT_DIR)/h/make/rules.project
-
-
-#
-# Dummy target to force external make
-#
-
-FORCE_EXTERNAL_MAKE:
-
-
-
-#
-# Custom makefile
-#
-
-include $(PRJ_DIR)/Makefile.custom
-
-
-## build rules for build specification 'PENTIUM2gnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.debug)
-
-%.o : $(PRJ_DIR)/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 -c $<
-
-%.d : $(PRJ_DIR)/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 $< > $@
-
-%.o : $(PRJ_DIR)/../%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 -c $<
-
-%.d : $(PRJ_DIR)/../%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 $< > $@
-
-
-## end build rules for build specification 'PENTIUM2gnu.debug'
-
-endif
-
-
-## build rules for build specification 'PENTIUM2gnu.release'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.release)
-
-%.o : $(PRJ_DIR)/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 -c $<
-
-%.d : $(PRJ_DIR)/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 $< > $@
-
-%.o : $(PRJ_DIR)/../%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 -c $<
-
-%.d : $(PRJ_DIR)/../%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 $< > $@
-
-
-## end build rules for build specification 'PENTIUM2gnu.release'
-
-endif
-
-
-## build rules for build specification 'PENTIUMgnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUMgnu.debug)
-
-%.o : $(PRJ_DIR)/%.c
- $(CC) -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM -c $<
-
-%.d : $(PRJ_DIR)/%.c
- ccpentium -E -P -M -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM $< > $@
-
-%.o : $(PRJ_DIR)/../%.c
- $(CC) -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM -c $<
-
-%.d : $(PRJ_DIR)/../%.c
- ccpentium -E -P -M -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM $< > $@
-
-
-## end build rules for build specification 'PENTIUMgnu.debug'
-
-endif
-
-
-## build rules for build specification 'SIMSPARCSOLARISgnu.debug'
-
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu.debug)
-
-%.o : $(PRJ_DIR)/%.c
- $(CC) -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -fno-builtin -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=SIMSPARCSOLARIS -c $<
-
-%.d : $(PRJ_DIR)/%.c
- ccsparc -E -P -M -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -fno-builtin -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=SIMSPARCSOLARIS $< > $@
-
-%.o : $(PRJ_DIR)/../%.c
- $(CC) -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -fno-builtin -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=SIMSPARCSOLARIS -c $<
-
-%.d : $(PRJ_DIR)/../%.c
- ccsparc -E -P -M -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -fno-builtin -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=SIMSPARCSOLARIS $< > $@
-
-
-## end build rules for build specification 'SIMSPARCSOLARISgnu.debug'
-
-endif
-
-#
-# Rule for configurable, binary component
-#
-# Downloadable component module build rules
-#
-db_dump.cm: $(PRJ_OBJS) mxrDoc.nm depend
-#
-# Partially link all db_dump modules together
-# including the configlette modules
-#
- $(LD) -r -o $@ $(PRJ_OBJS) $(CC_LIB)
-#
-# Generate _vxMain and _vxExit by munching
-#
- $(NM) $@ | $(MUNCH) > db_dump.c
- $(COMPILE_TRADITIONAL) db_dump_ctdt.c -o db_dump_ctdt.o
- $(LD) -r -o db_dump.tmp $@ db_dump_ctdt.o
- $(RM) $@
- $(MV) db_dump.tmp $@
-#
-# Adds entry point table section to db_dump component
-#
- $(PD_EPT_DDE_ADD) $@ $(PRJ_DIR)/$(PRJ_FILE) INDEX $(BUILD_SPEC)
-
-
-#
-# Partial link build rules
-# Partially link all db_dump modules together
-# If no source files, then generates dummy.c
-#
-
-ifeq ($(COMPONENT_OBJS),)
-dummy.c:
- $(CFG_GEN) $(PRJ_DIR)/$(PRJ_FILE) dummyCGen $(PRJ_TYPE)
-
-db_dump.pl: dummy.o mxrDoc.nm depend
- $(LD) -r -o $@ dummy.o
-else
-db_dump.pl: $(COMPONENT_OBJS) mxrDoc.nm depend
- $(LD) -r -o $@ $(COMPONENT_OBJS)
-endif
-
-#
-# nm file containing symbol information for all component objects
-#
-
-EXTERNAL_BINARIES_DIR_PATTERN_1 = $(subst \,\\,$(PRJ_DIR)/extbin/$(BUILD_SPEC)/)
-EXTERNAL_BINARIES_DIR_PATTERN = $(subst /,\/,$(EXTERNAL_BINARIES_DIR_PATTERN_1))
-
-mxrDoc.nm: mxrDoc.size $(COMPONENT_OBJS)
- $(RM) $@
-# if there are no object files, make a blank mxr doc
-ifeq ($(NUMBER_OF_COMPONENT_OBJS),0)
- @$(ECHO) "" >> $@
-else
-# make sure object file name is in mxrDoc.nm even if there
-# is only one object file
- $(ECHO) db_dump.o: >> $@
- $(NM) db_dump.o | sed -e "s|$(EXTERNAL_BINARIES_DIR_PATTERN)||g" >> $@
-endif
-
-#
-# size file containing size information for all component objects
-#
-mxrDoc.size: $(COMPONENT_OBJS) $(PRJ_DIR)/component.cdf
- $(RM) $@
-ifeq ($(NUMBER_OF_COMPONENT_OBJS),0)
- @$(ECHO) "" > $@
-else
- $(SIZE) db_dump.o | sed -e "s|$(EXTERNAL_BINARIES_DIR_PATTERN)||g" >> $@
-endif
-
-
-## user-defined rules for build specification 'PENTIUM2gnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.debug)
-
-## end user-defined rules for build specification 'PENTIUM2gnu.debug'
-
-endif
-
-
-## user-defined rules for build specification 'PENTIUM2gnu.release'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.release)
-
-## end user-defined rules for build specification 'PENTIUM2gnu.release'
-
-endif
-
-
-## user-defined rules for build specification 'PENTIUMgnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUMgnu.debug)
-
-## end user-defined rules for build specification 'PENTIUMgnu.debug'
-
-endif
-
-
-## user-defined rules for build specification 'SIMSPARCSOLARISgnu.debug'
-
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu.debug)
-
-## end user-defined rules for build specification 'SIMSPARCSOLARISgnu.debug'
-
-endif
-
-
-#
-# Recursive clean
-#
-
-rclean : clean
-
diff --git a/db/build_vxworks/db_hotbackup/db_hotbackup.c b/db/build_vxworks/db_hotbackup/db_hotbackup.c
index 0958b2891..ee80933ae 100644
--- a/db/build_vxworks/db_hotbackup/db_hotbackup.c
+++ b/db/build_vxworks/db_hotbackup/db_hotbackup.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: db_hotbackup.c,v 1.30 2006/08/26 09:23:07 bostic Exp $
+ * $Id: db_hotbackup.c,v 1.51 2007/05/17 15:15:01 bostic Exp $
*/
#include "db_config.h"
@@ -16,18 +15,18 @@
#ifndef lint
static const char copyright[] =
- "Copyright (c) 1996-2006\nOracle Corporation. All rights reserved.\n";
+ "Copyright (c) 1996,2007 Oracle. All rights reserved.\n";
#endif
enum which_open { OPEN_ORIGINAL, OPEN_HOT_BACKUP };
-int db_hotbackup_backup_dir_clean __P((DB_ENV *, char *, int *, int, int));
-int db_hotbackup_data_copy __P((DB_ENV *, const char *, const char *, const char *, int));
+int db_hotbackup_backup_dir_clean __P((DB_ENV *, char *, char *, int *, int, int));
+int db_hotbackup_data_copy __P((DB_ENV *, char *, char *, char *, int));
int db_hotbackup_env_init __P((DB_ENV **,
- char *, const char **, const char ***, char *, enum which_open));
+ char *, char **, char ***, char *, enum which_open));
int db_hotbackup_main __P((int, char *[]));
-int db_hotbackup_read_data_dir __P((DB_ENV *, char *, char *, const char *, int, int));
-int db_hotbackup_read_log_dir __P((DB_ENV *, char *, char *, const char *, int *, int, int));
+int db_hotbackup_read_data_dir __P((DB_ENV *, char *, char *, char *, int, int));
+int db_hotbackup_read_log_dir __P((DB_ENV *, char *, char *, char *, int *, int, int));
int db_hotbackup_usage __P((void));
int db_hotbackup_version_check __P((void));
@@ -59,11 +58,22 @@ db_hotbackup_main(argc, argv)
u_int data_cnt, data_next;
int ch, checkpoint, copy_min, db_config, exitval;
int remove_max, ret, update, verbose;
- char *backup_dir, **data_dir, *home, *passwd;
- const char **ddir, **dir, *log_dir;
+ char *backup_dir, **data_dir, **dir, *home, *log_dir, *passwd;
char home_buf[DB_MAXPATHLEN], time_buf[CTIME_BUFLEN];
- if ((progname = strrchr(argv[0], '/')) == NULL)
+ /*
+ * Make sure all verbose message are output before any error messages
+ * in the case where the output is being logged into a file. This
+ * call has to be done before any operation is performed on the stream.
+ *
+ * Use unbuffered I/O because line-buffered I/O requires a buffer, and
+ * some operating systems have buffer alignment and size constraints we
+ * don't want to care about. There isn't enough output for the calls
+ * to matter.
+ */
+ setbuf(stdout, NULL);
+
+ if ((progname = __db_rpath(argv[0])) == NULL)
progname = argv[0];
else
++progname;
@@ -139,6 +149,20 @@ db_hotbackup_main(argc, argv)
if (argc != 0)
return (db_hotbackup_usage());
+ /* NULL-terminate any list of data directories. */
+ if (data_dir != NULL) {
+ data_dir[data_next] = NULL;
+ /*
+ * -d is relative to the current directory, to run a checkpoint
+ * we must have directories relative to the environment.
+ */
+ if (checkpoint == 1) {
+ fprintf(stderr,
+ "%s: cannot specify -d and -c\n", progname);
+ return (db_hotbackup_usage());
+ }
+ }
+
if (db_config && (data_dir != NULL || log_dir != NULL)) {
fprintf(stderr,
"%s: cannot specify -D and -d or -l\n", progname);
@@ -179,29 +203,19 @@ db_hotbackup_main(argc, argv)
return (db_hotbackup_usage());
}
- /* NULL-terminate any list of data directories. */
- if (data_dir != NULL)
- data_dir[data_next] = NULL;
-
if (verbose) {
(void)time(&now);
printf("%s: hot backup started at %s",
progname, __db_ctime(&now, time_buf));
}
- ddir = NULL;
/* Open the source environment. */
- if ((ret = db_hotbackup_env_init(&dbenv, home,
+ if (db_hotbackup_env_init(&dbenv, home,
(db_config || log_dir != NULL) ? &log_dir : NULL,
- db_config ? &ddir : NULL, passwd, OPEN_ORIGINAL)) != 0)
+ db_config ? &data_dir : NULL,
+ passwd, OPEN_ORIGINAL) != 0)
goto shutdown;
- if (!db_config)
- ddir = (const char **)data_dir;
-
- if (log_dir == NULL)
- log_dir = home;
-
if (db_config && __os_abspath(log_dir)) {
fprintf(stderr,
"%s: DB_CONFIG must not contain an absolute path for the log directory",
@@ -242,13 +256,20 @@ db_hotbackup_main(argc, argv)
(void)__os_mkdir(NULL, backup_dir, __db_omode("rwx------"));
/*
- * If the target directory for the backup does exist and the -u option
- * was specified, all log files in the target directory are removed;
- * if the -u option was not specified, all files in the target directory
- * are removed.
+ * If -u was specified, remove all log files; if -u was not specified,
+ * remove all files.
+ *
+ * Potentially there are two directories to clean, the log directory
+ * and the target directory. First, clean up the log directory if
+ * it's different from the target directory, then clean up the target
+ * directory.
*/
- if ((ret = db_hotbackup_backup_dir_clean(
- dbenv, backup_dir, &remove_max, update, verbose)) != 0)
+ if (db_config && log_dir != NULL &&
+ db_hotbackup_backup_dir_clean(
+ dbenv, backup_dir, log_dir, &remove_max, update, verbose) != 0)
+ goto shutdown;
+ if (db_hotbackup_backup_dir_clean(dbenv,
+ backup_dir, NULL, &remove_max, update, verbose) != 0)
goto shutdown;
/*
@@ -260,9 +281,14 @@ db_hotbackup_main(argc, argv)
if (db_hotbackup_read_data_dir(dbenv, home,
backup_dir, home, verbose, db_config) != 0)
goto shutdown;
- if (ddir != NULL)
- for (dir = &ddir[0]; *dir != NULL; ++dir) {
- if (__os_abspath(*dir)) {
+ if (data_dir != NULL)
+ for (dir = data_dir; *dir != NULL; ++dir) {
+ /*
+ * Don't allow absolute path names taken from
+ * the DB_CONFIG file -- running recovery with
+ * them would corrupt the source files.
+ */
+ if (db_config && __os_abspath(*dir)) {
fprintf(stderr,
"%s: data directory '%s' is absolute path, not permitted with -D option\n",
progname, *dir);
@@ -281,8 +307,8 @@ db_hotbackup_main(argc, argv)
*
* The log directory defaults to the home directory.
*/
- if (db_hotbackup_read_log_dir(dbenv, db_config ? home : NULL,
- backup_dir, log_dir, &copy_min, update, verbose) != 0)
+ if (db_hotbackup_read_log_dir(dbenv, db_config ? home : NULL, backup_dir,
+ log_dir == NULL ? home : log_dir, &copy_min, update, verbose) != 0)
goto shutdown;
/*
@@ -313,8 +339,8 @@ db_hotbackup_main(argc, argv)
if (verbose)
printf("%s: %s: run catastrophic recovery\n",
progname, backup_dir);
- if ((ret = db_hotbackup_env_init(
- &dbenv, backup_dir, NULL, NULL, passwd, OPEN_HOT_BACKUP)) != 0)
+ if (db_hotbackup_env_init(
+ &dbenv, backup_dir, NULL, NULL, passwd, OPEN_HOT_BACKUP) != 0)
goto shutdown;
/*
@@ -338,11 +364,6 @@ shutdown: exitval = 1;
"%s: dbenv->close: %s\n", progname, db_strerror(ret));
}
- if (data_dir != NULL)
- free(data_dir);
- if (passwd != NULL)
- free(passwd);
-
if (exitval == 0) {
if (verbose) {
(void)time(&now);
@@ -365,11 +386,9 @@ shutdown: exitval = 1;
* Open a database environment.
*/
int
-db_hotbackup_env_init(dbenvp, home, log_dir, data_dir, passwd, which)
+db_hotbackup_env_init(dbenvp, home, log_dirp, data_dirp, passwd, which)
DB_ENV **dbenvp;
- char *home;
- const char **log_dir, ***data_dir;
- char *passwd;
+ char *home, **log_dirp, ***data_dirp, *passwd;
enum which_open which;
{
DB_ENV *dbenv;
@@ -389,15 +408,14 @@ db_hotbackup_env_init(dbenvp, home, log_dir, data_dir, passwd, which)
dbenv->set_errfile(dbenv, stderr);
setbuf(stderr, NULL);
dbenv->set_errpfx(dbenv, progname);
- (void)setvbuf(stdout, NULL, _IOLBF, 0);
/*
* If a log directory has been specified, and it's not the same as the
* home directory, set it for the environment.
*/
- if (log_dir != NULL && *log_dir != NULL && *log_dir != home &&
- (ret = dbenv->set_lg_dir(dbenv, *log_dir)) != 0) {
- dbenv->err(dbenv, ret, "DB_ENV->set_lg_dir: %s", log_dir);
+ if (log_dirp != NULL && *log_dirp != NULL &&
+ (ret = dbenv->set_lg_dir(dbenv, *log_dirp)) != 0) {
+ dbenv->err(dbenv, ret, "DB_ENV->set_lg_dir: %s", *log_dirp);
return (1);
}
@@ -423,19 +441,25 @@ db_hotbackup_env_init(dbenvp, home, log_dir, data_dir, passwd, which)
dbenv->err(dbenv, ret, "DB_ENV->open: %s", home);
return (1);
}
- if (log_dir != NULL && *log_dir == NULL) {
- (void)dbenv->get_lg_dir(dbenv, log_dir);
- if (*log_dir == NULL)
- *log_dir = home;
- }
- if (data_dir != NULL && *data_dir == NULL)
- (void)dbenv->get_data_dirs(dbenv, data_dir);
+ if (log_dirp != NULL && *log_dirp == NULL)
+ (void)dbenv->get_lg_dir(dbenv, (const char **)log_dirp);
+ if (data_dirp != NULL && *data_dirp == NULL)
+ (void)dbenv->get_data_dirs(
+ dbenv, (const char ***)data_dirp);
break;
case OPEN_HOT_BACKUP:
/*
* Opening the backup copy of the database environment. We
* better be the only user, we're running recovery.
+ * Ensure that there at least minimal cache for worst
+ * case page size.
*/
+ if ((ret =
+ dbenv->set_cachesize(dbenv, 0, 64 * 1024 * 10, 0)) != 0) {
+ dbenv->err(dbenv,
+ ret, "DB_ENV->set_cachesize: %s", home);
+ return (1);
+ }
if ((ret = dbenv->open(dbenv, home, DB_CREATE |
DB_INIT_LOG | DB_INIT_MPOOL | DB_INIT_TXN | DB_PRIVATE |
DB_RECOVER_FATAL | DB_USE_ENVIRON, 0)) != 0) {
@@ -454,22 +478,36 @@ db_hotbackup_env_init(dbenvp, home, log_dir, data_dir, passwd, which)
* Clean out the backup directory.
*/
int
-db_hotbackup_backup_dir_clean(dbenv, backup_dir, remove_maxp, update, verbose)
+db_hotbackup_backup_dir_clean(dbenv, backup_dir, log_dir, remove_maxp, update, verbose)
DB_ENV *dbenv;
- char *backup_dir;
+ char *backup_dir, *log_dir;
int *remove_maxp, update, verbose;
{
int cnt, fcnt, ret, v;
- char **names, buf[DB_MAXPATHLEN];
+ char **names, *dir, buf[DB_MAXPATHLEN], path[DB_MAXPATHLEN];
+
+ /* We may be cleaning a log directory separate from the target. */
+ if (log_dir != NULL) {
+ if ((size_t)snprintf(buf, sizeof(buf), "%s%c%s",
+ backup_dir, PATH_SEPARATOR[0] ,log_dir) >= sizeof(buf)) {
+ dbenv->errx(dbenv, "%s%c%s: path too long",
+ backup_dir, PATH_SEPARATOR[0] ,log_dir);
+ return (1);
+ }
+ dir = buf;
+ } else
+ dir = backup_dir;
/* Get a list of file names. */
- if ((ret = __os_dirlist(dbenv, backup_dir, &names, &fcnt)) != 0) {
- dbenv->err(dbenv, ret, "%s: directory read", backup_dir);
+ if ((ret = __os_dirlist(dbenv, dir, &names, &fcnt)) != 0) {
+ if (log_dir != NULL && !update)
+ return (0);
+ dbenv->err(dbenv, ret, "%s: directory read", dir);
return (1);
}
for (cnt = fcnt; --cnt >= 0;) {
/*
- * Skip log files (if update wasn't specified).
+ * Skip non-log files (if update was specified).
*/
if (strncmp(names[cnt], LFPREFIX, sizeof(LFPREFIX) - 1)) {
if (update)
@@ -480,18 +518,16 @@ db_hotbackup_backup_dir_clean(dbenv, backup_dir, remove_maxp, update, verbose)
if (*remove_maxp < v)
*remove_maxp = v;
}
- if ((size_t)snprintf(buf, sizeof(buf),
- "%s/%s", backup_dir, names[cnt]) >= sizeof(buf)) {
- dbenv->err(dbenv, ret,
- "%s/%s: path too long", backup_dir, names[cnt]);
+ if ((size_t)snprintf(path, sizeof(path), "%s%c%s",
+ dir, PATH_SEPARATOR[0], names[cnt]) >= sizeof(path)) {
+ dbenv->errx(dbenv, "%s%c%s: path too long",
+ dir, PATH_SEPARATOR[0], names[cnt]);
return (1);
}
if (verbose)
- printf("%s: removing %s\n", progname, buf);
- if ((ret = remove(buf)) != 0) {
- dbenv->err(dbenv, ret, "%s: remove", buf);
+ printf("%s: removing %s\n", progname, path);
+ if (__os_unlink(dbenv, path) != 0)
return (1);
- }
}
__os_dirfree(dbenv, names, fcnt);
@@ -510,8 +546,7 @@ db_hotbackup_backup_dir_clean(dbenv, backup_dir, remove_maxp, update, verbose)
int
db_hotbackup_read_data_dir(dbenv, home, backup_dir, dir, verbose, db_config)
DB_ENV *dbenv;
- char *home, *backup_dir;
- const char *dir;
+ char *home, *backup_dir, *dir;
int verbose, db_config;
{
int cnt, fcnt, ret;
@@ -521,10 +556,11 @@ db_hotbackup_read_data_dir(dbenv, home, backup_dir, dir, verbose, db_config)
bd = backup_dir;
if (db_config && dir != home) {
/* Build a path name to the destination. */
- if ((size_t)(cnt = snprintf(bbuf, sizeof(bbuf),
- "%s/%s/", backup_dir, dir)) >= sizeof(buf)) {
- dbenv->errx(dbenv,
- "%s/%s: path too long", backup_dir, dir);
+ if ((size_t)(cnt = snprintf(bbuf, sizeof(bbuf), "%s%c%s%c",
+ backup_dir, PATH_SEPARATOR[0],
+ dir, PATH_SEPARATOR[0])) >= sizeof(buf)) {
+ dbenv->errx(dbenv, "%s%c%s: path too long",
+ backup_dir, PATH_SEPARATOR[0], dir);
return (1);
}
bd = bbuf;
@@ -537,13 +573,13 @@ db_hotbackup_read_data_dir(dbenv, home, backup_dir, dir, verbose, db_config)
return (1);
}
/* step on the trailing '/' */
- bd[cnt] = '\0';
+ bd[cnt - 1] = '\0';
/* Build a path name to the source. */
if ((size_t)snprintf(buf, sizeof(buf),
- "%s/%s", home, dir) >= sizeof(buf)) {
- dbenv->errx(dbenv,
- "%s/%s: path too long", home, dir);
+ "%s%c%s", home, PATH_SEPARATOR[0], dir) >= sizeof(buf)) {
+ dbenv->errx(dbenv, "%s%c%s: path too long",
+ home, PATH_SEPARATOR[0], dir);
return (1);
}
dir = buf;
@@ -574,8 +610,7 @@ db_hotbackup_read_data_dir(dbenv, home, backup_dir, dir, verbose, db_config)
continue;
/* Copy the file. */
- if ((ret = db_hotbackup_data_copy(
- dbenv, names[cnt], dir, bd, verbose)) != 0)
+ if (db_hotbackup_data_copy(dbenv, names[cnt], dir, bd, verbose) != 0)
return (1);
}
@@ -593,42 +628,43 @@ db_hotbackup_read_data_dir(dbenv, home, backup_dir, dir, verbose, db_config)
int
db_hotbackup_read_log_dir(dbenv, home, backup_dir, log_dir, copy_minp, update, verbose)
DB_ENV *dbenv;
- char *home, *backup_dir;
- const char *log_dir;
+ char *home, *backup_dir, *log_dir;
int *copy_minp, update, verbose;
{
u_int32_t aflag;
int cnt, ret, v;
- char **begin, **names, *backupd;
- const char *logd;
+ char **begin, **names, *backupd, *logd;
char from[DB_MAXPATHLEN], to[DB_MAXPATHLEN];
- logd = log_dir;
- backupd = backup_dir;
- if (home != NULL && log_dir != home) {
- if ((size_t)snprintf(from, sizeof(from),
- "%s/%s", home, log_dir) >= sizeof(from)) {
- dbenv->errx(dbenv,
- "%s/%s: path too long", home, log_dir);
+ if (home != NULL && log_dir != NULL) {
+ if ((size_t)snprintf(from, sizeof(from), "%s%c%s",
+ home, PATH_SEPARATOR[0], log_dir) >= sizeof(from)) {
+ dbenv->errx(dbenv, "%s%c%s: path too long",
+ home, PATH_SEPARATOR[0], log_dir);
return (1);
}
logd = strdup(from);
if ((size_t)(cnt = snprintf(to, sizeof(to),
- "%s/%s/", backup_dir, log_dir)) >= sizeof(to)) {
- dbenv->errx(dbenv,
- "%s/%s: path too long", backup_dir, log_dir);
+ "%s%c%s%c", backup_dir, PATH_SEPARATOR[0],
+ log_dir, PATH_SEPARATOR[0])) >= sizeof(to)) {
+ dbenv->errx(dbenv, "%s%c%s: path too long",
+ backup_dir, PATH_SEPARATOR[0], log_dir);
return (1);
}
backupd = strdup(to);
- /* Create the path. */
+
+ /* Create the backup log directory. */
if ((ret = dbenv->set_intermediate_dir(
dbenv, __db_omode("rwx------"), 0)) != 0 ||
(ret = __db_mkpath(dbenv, backupd)) != 0) {
dbenv->err(dbenv, ret, "%s: cannot create", backupd);
return (1);
}
- /* step on the trailing '/' */
- backupd[cnt] = '\0';
+ /* Step on the trailing '/'. */
+ backupd[cnt - 1] = '\0';
+ } else {
+ backupd = backup_dir;
+ logd = log_dir;
}
again: aflag = DB_ARCH_LOG;
@@ -641,7 +677,7 @@ again: aflag = DB_ARCH_LOG;
aflag = 0;
/* Get a list of file names to be copied. */
if ((ret = dbenv->log_archive(dbenv, &names, aflag)) != 0) {
- dbenv->err(dbenv, ret, "%s: log_archive", log_dir);
+ dbenv->err(dbenv, ret, "DB_ENV->log_archive");
return (1);
}
if (names == NULL)
@@ -653,10 +689,10 @@ again: aflag = DB_ARCH_LOG;
if (*copy_minp == 0 || *copy_minp > v)
*copy_minp = v;
- if ((size_t)snprintf(from, sizeof(from),
- "%s/%s", logd, *names) >= sizeof(from)) {
- dbenv->errx(dbenv,
- "%s/%s: path too long", log_dir, *names);
+ if ((size_t)snprintf(from, sizeof(from), "%s%c%s",
+ logd, PATH_SEPARATOR[0], *names) >= sizeof(from)) {
+ dbenv->errx(dbenv, "%s%c%s: path too long",
+ logd, PATH_SEPARATOR[0], *names);
return (1);
}
@@ -669,13 +705,13 @@ again: aflag = DB_ARCH_LOG;
* on open.
*/
if (update) {
- if ((size_t)snprintf(to, sizeof(to),
- "%s/%s", backupd, *names) >= sizeof(to)) {
- dbenv->errx(dbenv,
- "%s/%s: path too long", backupd, *names);
+ if ((size_t)snprintf(to, sizeof(to), "%s%c%s",
+ backupd, PATH_SEPARATOR[0], *names) >= sizeof(to)) {
+ dbenv->errx(dbenv, "%s%c%s: path too long",
+ backupd, PATH_SEPARATOR[0], *names);
return (1);
}
- if (rename(from, to) == 0) {
+ if (__os_rename(dbenv, from, to, 1) == 0) {
if (verbose)
printf("%s: moving %s to %s\n",
progname, from, to);
@@ -684,8 +720,7 @@ again: aflag = DB_ARCH_LOG;
}
/* Copy the file. */
- if ((ret = db_hotbackup_data_copy(dbenv,
- *names, logd, backupd, verbose)) != 0)
+ if (db_hotbackup_data_copy(dbenv, *names, logd, backupd, verbose) != 0)
return (1);
if (update) {
@@ -710,7 +745,7 @@ done: if (update) {
printf("%s: lowest numbered log file copied: %d\n",
progname, *copy_minp);
if (logd != log_dir)
- free((char *)logd);
+ free(logd);
if (backupd != backup_dir)
free(backupd);
@@ -724,20 +759,20 @@ done: if (update) {
int
db_hotbackup_data_copy(dbenv, file, from_dir, to_dir, verbose)
DB_ENV *dbenv;
- const char *file, *from_dir, *to_dir;
+ char *file, *from_dir, *to_dir;
int verbose;
{
- ssize_t nr, nw;
- size_t offset;
- int ret, rfd, wfd;
- char *buf, *taddr;
+ DB_FH *rfhp, *wfhp;
+ size_t nr, nw;
+ int ret;
+ char *buf;
ret = 0;
- rfd = wfd = -1;
+ rfhp = wfhp = NULL;
if (verbose)
- printf("%s: copying %s/%s to %s/%s\n",
- progname, from_dir, file, to_dir, file);
+ printf("%s: copying %s%c%s to %s%c%s\n", progname, from_dir,
+ PATH_SEPARATOR[0], file, to_dir, PATH_SEPARATOR[0], file);
/*
* We MUST copy multiples of the page size, atomically, to ensure a
@@ -756,44 +791,35 @@ db_hotbackup_data_copy(dbenv, file, from_dir, to_dir, verbose)
}
/* Open the input file. */
- if ((u_int32_t)snprintf(
- buf, MEGABYTE, "%s/%s", from_dir, file) >= MEGABYTE) {
- dbenv->errx(dbenv, "%s/%s: path too long", from_dir, file);
+ if (snprintf(buf, MEGABYTE, "%s%c%s",
+ from_dir, PATH_SEPARATOR[0], file) >= MEGABYTE) {
+ dbenv->errx(dbenv,
+ "%s%c%s: path too long", from_dir, PATH_SEPARATOR[0], file);
goto err;
}
- if ((rfd = open(buf, O_RDONLY, 0)) == -1) {
- dbenv->err(dbenv, errno, "%s", buf);
+ if ((ret = __os_open(dbenv, buf, 0, DB_OSO_RDONLY, 0, &rfhp)) != 0) {
+ dbenv->err(dbenv, ret, "%s", buf);
goto err;
}
/* Open the output file. */
- if ((u_int32_t)snprintf(
- buf, MEGABYTE, "%s/%s", to_dir, file) >= MEGABYTE) {
- dbenv->errx(dbenv, "%s/%s: path too long", to_dir, file);
+ if (snprintf(buf, MEGABYTE, "%s%c%s",
+ to_dir, PATH_SEPARATOR[0], file) >= MEGABYTE) {
+ dbenv->errx(dbenv,
+ "%s%c%s: path too long", to_dir, PATH_SEPARATOR[0], file);
goto err;
}
- if ((wfd = open(
- buf, O_CREAT | O_TRUNC | O_WRONLY, __db_omode(OWNER_RW))) == -1)
- goto err;
-
- /* Copy the data. */
- while ((nr = read(rfd, buf, MEGABYTE)) > 0)
- for (taddr = buf, offset = 0;
- offset < (size_t)nr; taddr += nw, offset += (size_t)nw) {
- RETRY_CHK(((nw = write(wfd,
- taddr, (u_int)(nr - offset))) < 0 ? 1 : 0), ret);
- if (ret != 0)
- break;
- }
- if (nr == -1) {
- dbenv->err(dbenv, errno, "%s/%s: read", from_dir, file);
+ if ((ret = __os_open(dbenv, buf, 0,
+ DB_OSO_CREATE | DB_OSO_TRUNC, __db_omode(OWNER_RW), &wfhp)) != 0) {
+ dbenv->err(dbenv, ret, "%s", buf);
goto err;
}
- if (ret != 0) {
- dbenv->err(dbenv, errno, "%s: write %s/%s", to_dir, file);
- goto err;
- }
+ /* Copy the data. */
+ while ((ret = __os_read(dbenv, rfhp, buf, MEGABYTE, &nr)) == 0 &&
+ nr > 0)
+ if ((ret = __os_write(dbenv, wfhp, buf, nr, &nw)) != 0)
+ break;
if (0) {
err: ret = 1;
@@ -801,14 +827,15 @@ err: ret = 1;
if (buf != NULL)
free(buf);
- if (rfd != -1)
- (void)close(rfd);
+ if (rfhp != NULL && __os_closehandle(dbenv, rfhp) != 0)
+ ret = 1;
/* We may be running on a remote filesystem; force the flush. */
- if (wfd != -1 && (fsync(wfd) != 0 || close(wfd) != 0)) {
- dbenv->err(dbenv,
- errno, "%s: fsync %s/%s", to_dir, file);
- ret = 1;
+ if (wfhp != NULL) {
+ if (__os_fsync(dbenv, wfhp) != 0)
+ ret = 1;
+ if (__os_closehandle(dbenv, wfhp) != 0)
+ ret = 1;
}
return (ret);
}
diff --git a/db/build_vxworks/db_int.h b/db/build_vxworks/db_int.h
index e76c596cd..9833345c1 100644
--- a/db/build_vxworks/db_int.h
+++ b/db/build_vxworks/db_int.h
@@ -2,19 +2,19 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: db_int.in,v 12.41 2006/09/19 15:06:59 bostic Exp $
+ * $Id: db_int.in,v 12.58 2007/05/30 14:06:39 bostic Exp $
*/
#ifndef _DB_INT_H_
#define _DB_INT_H_
/*******************************************************
- * Berkeley DB includes.
+ * Berkeley DB ANSI/POSIX include files.
*******************************************************/
-#ifndef NO_SYSTEM_INCLUDES
+#include "vxWorks.h"
+#ifdef HAVE_SYSTEM_INCLUDE_FILES
#include <sys/types.h>
#ifdef DIAG_MVCC
#include <sys/mman.h>
@@ -48,7 +48,9 @@
#endif
#if defined(__INCLUDE_NETWORKING)
+#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
+#endif
#include <netinet/in.h>
#include <netdb.h>
#include <arpa/inet.h>
@@ -70,9 +72,36 @@
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
+
+#if defined(__INCLUDE_DIRECTORY)
+#if HAVE_DIRENT_H
+# include <dirent.h>
+# define NAMLEN(dirent) strlen((dirent)->d_name)
+#else
+# define dirent direct
+# define NAMLEN(dirent) (dirent)->d_namlen
+# if HAVE_SYS_NDIR_H
+# include <sys/ndir.h>
+# endif
+# if HAVE_SYS_DIR_H
+# include <sys/dir.h>
+# endif
+# if HAVE_NDIR_H
+# include <ndir.h>
+# endif
+#endif
+#endif /* __INCLUDE_DIRECTORY_READ */
+
+#endif /* !HAVE_SYSTEM_INCLUDE_FILES */
+#include "clib_port.h"
+#include "db.h"
+
+#ifdef DB_WIN32
+#include "dbinc/win_db.h"
#endif
#include "db.h"
+#include "clib_port.h"
#include "dbinc/queue.h"
#include "dbinc/shqueue.h"
@@ -84,41 +113,6 @@ extern "C" {
/*******************************************************
* General purpose constants and macros.
*******************************************************/
-#ifndef UINT16_MAX
-#define UINT16_MAX 65535 /* Maximum 16-bit unsigned. */
-#endif
-#ifndef UINT32_MAX
-#ifdef __STDC__
-#define UINT32_MAX 4294967295U /* Maximum 32-bit unsigned. */
-#else
-#define UINT32_MAX 0xffffffff /* Maximum 32-bit unsigned. */
-#endif
-#endif
-
-#if defined(HAVE_64BIT_TYPES)
-#undef INT64_MAX
-#undef INT64_MIN
-#undef UINT64_MAX
-
-#ifdef DB_WIN32
-#define INT64_MAX _I64_MAX
-#define INT64_MIN _I64_MIN
-#define UINT64_MAX _UI64_MAX
-#else
-/*
- * Override the system's 64-bit min/max constants. AIX's 32-bit compiler can
- * handle 64-bit values, but the system's constants don't include the LL/ULL
- * suffix, and so can't be compiled using the 32-bit compiler.
- */
-#define INT64_MAX 9223372036854775807LL
-#define INT64_MIN (-INT64_MAX-1)
-#define UINT64_MAX 18446744073709551615ULL
-#endif /* DB_WIN32 */
-
-#define INT64_FMT "%lld"
-#define UINT64_FMT "%llu"
-#endif /* HAVE_64BIT_TYPES */
-
#undef FALSE
#define FALSE 0
#undef TRUE
@@ -127,8 +121,13 @@ extern "C" {
#define MEGABYTE 1048576
#define GIGABYTE 1073741824
-#define MS_PER_SEC 1000 /* Milliseconds in a second. */
-#define USEC_PER_MS 1000 /* Microseconds in a millisecond. */
+#define NS_PER_MS 1000000 /* Nanoseconds in a millisecond */
+#define NS_PER_US 1000 /* Nanoseconds in a microsecond */
+#define NS_PER_SEC 1000000000 /* Nanoseconds in a second */
+#define US_PER_MS 1000 /* Microseconds in a millisecond */
+#define US_PER_SEC 1000000 /* Microseconds in a second */
+#define MS_PER_NS 1000000 /* Milliseconds in a nanosecond */
+#define MS_PER_SEC 1000 /* Milliseconds in a second */
#define RECNO_OOB 0 /* Illegal record number. */
@@ -160,11 +159,6 @@ extern "C" {
#define ALIGNP_INC(p, bound) \
(void *)(((uintptr_t)(p) + (bound) - 1) & ~(((uintptr_t)(bound)) - 1))
-/* Decrement a pointer to a specific boundary. */
-#undef ALIGNP_DEC
-#define ALIGNP_DEC(p, bound) \
- (void *)((uintptr_t)(p) & ~(((uintptr_t)(bound)) - 1))
-
/*
* Print an address as a u_long (a u_long is the largest type we can print
* portably). Most 64-bit systems have made longs 64-bits, so this should
@@ -234,6 +228,17 @@ typedef struct __fn {
100 - ((double)(v) * 100) / (((double)total) * (pgsize))))
/*
+ * Statistics update shared memory and so are expensive -- don't update the
+ * values unless we're going to display the results.
+ */
+#undef STAT
+#ifdef HAVE_STATISTICS
+#define STAT(x) x
+#else
+#define STAT(x)
+#endif
+
+/*
* Structure used for callback message aggregation.
*
* Display values in XXX_stat_print calls.
@@ -313,6 +318,7 @@ typedef struct __db_msgbuf {
#define DB_RETOK_DBDEL(ret) DB_RETOK_DBCDEL(ret)
#define DB_RETOK_DBGET(ret) DB_RETOK_DBCGET(ret)
#define DB_RETOK_DBPUT(ret) ((ret) == 0 || (ret) == DB_KEYEXIST)
+#define DB_RETOK_EXISTS(ret) DB_RETOK_DBCGET(ret)
#define DB_RETOK_LGGET(ret) ((ret) == 0 || (ret) == DB_NOTFOUND)
#define DB_RETOK_MPGET(ret) ((ret) == 0 || (ret) == DB_PAGE_NOTFOUND)
#define DB_RETOK_REPPMSG(ret) ((ret) == 0 || \
@@ -437,7 +443,7 @@ typedef enum {
#ifdef DIAGNOSTIC
#define ENV_LEAVE(dbenv, ip) do { \
if ((ip) != NULL) { \
- DB_ASSERT(dbenv, ip->dbth_state == THREAD_ACTIVE); \
+ DB_ASSERT(dbenv, (ip)->dbth_state == THREAD_ACTIVE); \
(ip)->dbth_state = THREAD_OUT; \
} \
} while (0)
@@ -648,7 +654,6 @@ typedef struct __dbpginfo {
((lsn0)->offset != (lsn1)->offset ? \
((lsn0)->offset < (lsn1)->offset ? -1 : 1) : 0))
-
/*******************************************************
* Txn.
*******************************************************/
@@ -715,6 +720,7 @@ typedef SH_TAILQ_HEAD(__hash_head) DB_HASHTAB;
#include "dbinc/globals.h"
+#include "dbinc/clock.h"
#include "dbinc/debug.h"
#include "dbinc/region.h"
#include "dbinc_auto/env_ext.h"
@@ -745,7 +751,7 @@ typedef SH_TAILQ_HEAD(__hash_head) DB_HASHTAB;
* Test if we need to log a change. By default, we don't log operations without
* associated transactions, unless DIAGNOSTIC, DEBUG_ROP or DEBUG_WOP are on.
* This is because we want to get log records for read/write operations, and, if
- * we trying to debug something, more information is always better.
+ * we are trying to debug something, more information is always better.
*
* The DBC_RECOVER flag is set when we're in abort, as well as during recovery;
* thus DBC_LOGGING may be false for a particular dbc even when DBENV_LOGGING
@@ -755,7 +761,7 @@ typedef SH_TAILQ_HEAD(__hash_head) DB_HASHTAB;
* in the log headers, which IS_RECOVERING (and thus DBENV_LOGGING) rely on, and
* because DBC_RECOVER should be set anytime IS_RECOVERING would be true.
*
- * If we're not in recovery (master - doing an abort a client applying
+ * If we're not in recovery (master - doing an abort or a client applying
* a txn), then a client's only path through here is on an internal
* operation, and a master's only path through here is a transactional
* operation. Detect if either is not the case.
diff --git a/db/build_vxworks/db_load/db_load.c b/db/build_vxworks/db_load/db_load.c
index 715c4c711..a0cb46c0a 100644
--- a/db/build_vxworks/db_load/db_load.c
+++ b/db/build_vxworks/db_load/db_load.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: db_load.c,v 12.18 2006/08/26 09:23:08 bostic Exp $
+ * $Id: db_load.c,v 12.23 2007/05/17 17:17:42 bostic Exp $
*/
#include "db_config.h"
@@ -15,7 +14,7 @@
#ifndef lint
static const char copyright[] =
- "Copyright (c) 1996-2006\nOracle Corporation. All rights reserved.\n";
+ "Copyright (c) 1996,2007 Oracle. All rights reserved.\n";
#endif
typedef struct { /* XXX: Globals. */
@@ -86,7 +85,7 @@ db_load_main(argc, argv)
int ch, existed, exitval, ret;
char **clist, **clp;
- if ((progname = strrchr(argv[0], '/')) == NULL)
+ if ((progname = __db_rpath(argv[0])) == NULL)
progname = argv[0];
else
++progname;
@@ -858,7 +857,27 @@ db_load_rheader(dbenv, dbp, dbtypep, subdbp, checkprintp, keysp)
value = p--;
- if (name[0] == '\0' || value[0] == '\0')
+ if (name[0] == '\0')
+ goto badfmt;
+
+ /*
+ * The only values that may be zero-length are database names.
+ * In the original Berkeley DB code it was possible to create
+ * zero-length database names, and the db_load code was then
+ * changed to allow such databases to be be dumped and loaded.
+ * [#8204]
+ */
+ if (strcmp(name, "database") == 0 ||
+ strcmp(name, "subdatabase") == 0) {
+ if ((ret = db_load_convprintable(dbenv, value, subdbp)) != 0) {
+ dbp->err(dbp, ret, "error reading db name");
+ goto err;
+ }
+ continue;
+ }
+
+ /* No other values may be zero-length. */
+ if (value[0] == '\0')
goto badfmt;
if (strcmp(name, "HEADER") == 0)
@@ -909,14 +928,6 @@ db_load_rheader(dbenv, dbp, dbtypep, subdbp, checkprintp, keysp)
dbp->errx(dbp, "line %lu: unknown type", G(lineno));
goto err;
}
- if (strcmp(name, "database") == 0 ||
- strcmp(name, "subdatabase") == 0) {
- if ((ret = db_load_convprintable(dbenv, value, subdbp)) != 0) {
- dbp->err(dbp, ret, "error reading db name");
- goto err;
- }
- continue;
- }
if (strcmp(name, "keys") == 0) {
if (strcmp(value, "1") == 0)
*keysp = 1;
@@ -1024,6 +1035,9 @@ db_load_convprintable(dbenv, instr, outstrp)
/*
* Just malloc a string big enough for the whole input string;
* the output string will be smaller (or of equal length).
+ *
+ * Note that we may be passed a zero-length string and need to
+ * be able to duplicate it.
*/
if ((outstr = malloc(strlen(instr) + 1)) == NULL)
return (ENOMEM);
diff --git a/db/build_vxworks/db_load/db_load/Makefile.component b/db/build_vxworks/db_load/db_load/Makefile.component
deleted file mode 100644
index 34a0dec6c..000000000
--- a/db/build_vxworks/db_load/db_load/Makefile.component
+++ /dev/null
@@ -1,433 +0,0 @@
-# Component project makefile generated by the project manager
-#
-
-
-## core information
-
-
-CONFIGLETTE = compConfig.c
-TGT_DIR = $(WIND_BASE)/target
-EXTERNAL_BINARIES_DIR = $(PRJ_DIR)/extbin/$(BUILD_SPEC)
-COMPONENT_NAME = db_load
-.PHONY: defaultTarget
-defaultTarget: $(COMPONENT_NAME).cm
-
-#
-# default definition for CPU and TOOL (needed by defs.project)
-#
-
-CPU = SIMSPARCSOLARIS
-TOOL = gnu
-
-
-## CPU and TOOL info for build specification 'PENTIUM2gnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.debug)
-CPU = PENTIUM2
-TOOL = gnu
-SYS_OBJ_DIR = $(WIND_BASE)/target/lib/obj$(CPU)$(TOOL)vx
-USER_OBJ_DIR = $(WIND_BASE)/target/user/objs/obj$(CPU)$(TOOL)
-PRJ_OBJS = db_load.o \
- compConfig.o
-COMPONENT_OBJS = db_load.o
-DEPENDENCY_FILES = db_load.d \
- compConfig.d
-NUMBER_OF_COMPONENT_OBJS = $(words $(COMPONENT_OBJS))
-endif
-
-
-## CPU and TOOL info for build specification 'PENTIUM2gnu.release'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.release)
-CPU = PENTIUM2
-TOOL = gnu
-SYS_OBJ_DIR = $(WIND_BASE)/target/lib/obj$(CPU)$(TOOL)vx
-USER_OBJ_DIR = $(WIND_BASE)/target/user/objs/obj$(CPU)$(TOOL)
-PRJ_OBJS = db_load.o \
- compConfig.o
-COMPONENT_OBJS = db_load.o
-DEPENDENCY_FILES = db_load.d \
- compConfig.d
-NUMBER_OF_COMPONENT_OBJS = $(words $(COMPONENT_OBJS))
-endif
-
-
-## CPU and TOOL info for build specification 'PENTIUMgnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUMgnu.debug)
-CPU = PENTIUM
-TOOL = gnu
-SYS_OBJ_DIR = $(WIND_BASE)/target/lib/obj$(CPU)$(TOOL)vx
-USER_OBJ_DIR = $(WIND_BASE)/target/user/objs/obj$(CPU)$(TOOL)
-PRJ_OBJS = db_load.o \
- compConfig.o
-COMPONENT_OBJS = db_load.o
-DEPENDENCY_FILES = db_load.d \
- compConfig.d
-NUMBER_OF_COMPONENT_OBJS = $(words $(COMPONENT_OBJS))
-endif
-
-
-## CPU and TOOL info for build specification 'SIMSPARCSOLARISgnu.debug'
-
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu.debug)
-CPU = SIMSPARCSOLARIS
-TOOL = gnu
-SYS_OBJ_DIR = $(WIND_BASE)/target/lib/obj$(CPU)$(TOOL)vx
-USER_OBJ_DIR = $(WIND_BASE)/target/user/objs/obj$(CPU)$(TOOL)
-PRJ_OBJS = db_load.o \
- compConfig.o
-COMPONENT_OBJS = db_load.o
-DEPENDENCY_FILES = db_load.d \
- compConfig.d
-NUMBER_OF_COMPONENT_OBJS = $(words $(COMPONENT_OBJS))
-endif
-
-
-include $(TGT_DIR)/h/make/defs.project
-
-
-## build-configuration info for build specification 'PENTIUM2gnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.debug)
-
-## macros
-
-AR = arpentium
-AS = ccpentium
-CC = ccpentium
-CFLAGS = -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2
-CFLAGS_AS = -mcpu=pentiumpro -march=pentiumpro -ansi -g -nostdlib -fno-builtin -fno-defer-pop -P -x assembler-with-cpp -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2
-CPP = ccpentium -E -P
-CPPFILT = c++filtpentium --strip-underscores
-LD = ldpentium
-LDFLAGS = -X
-LDPARTIAL = ccpentium -B$(WIND_BASE)/host/$(WIND_HOST_TYPE)/lib/gcc-lib/ -nostdlib -r -Wl,-X
-LD_PARTIAL_FLAGS = -X -r
-NM = nmpentium -g
-OPTION_DEFINE_MACRO = -D
-OPTION_GENERATE_DEPENDENCY_FILE = -MD
-OPTION_INCLUDE_DIR = -I
-RELEASE = 0
-SIZE = sizepentium
-POST_BUILD_RULE =
-
-## end build-configuration info for build specification 'PENTIUM2gnu.debug'
-
-endif
-
-
-## build-configuration info for build specification 'PENTIUM2gnu.release'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.release)
-
-## macros
-
-AR = arpentium
-AS = ccpentium
-CC = ccpentium
-CFLAGS = -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2
-CFLAGS_AS = -mcpu=pentiumpro -march=pentiumpro -ansi -O2 -nostdlib -fno-builtin -fno-defer-pop -P -x assembler-with-cpp -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2
-CPP = ccpentium -E -P
-CPPFILT = c++filtpentium --strip-underscores
-LD = ldpentium
-LDFLAGS = -X
-LDPARTIAL = ccpentium -B$(WIND_BASE)/host/$(WIND_HOST_TYPE)/lib/gcc-lib/ -nostdlib -r -Wl,-X
-LD_PARTIAL_FLAGS = -X -r
-NM = nmpentium -g
-OPTION_DEFINE_MACRO = -D
-OPTION_GENERATE_DEPENDENCY_FILE = -MD
-OPTION_INCLUDE_DIR = -I
-RELEASE = 1
-SIZE = sizepentium
-POST_BUILD_RULE =
-
-## end build-configuration info for build specification 'PENTIUM2gnu.release'
-
-endif
-
-
-## build-configuration info for build specification 'PENTIUMgnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUMgnu.debug)
-
-## macros
-
-AR = arpentium
-AS = ccpentium
-CC = ccpentium
-CFLAGS = -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM
-CFLAGS_AS = -mcpu=pentium -march=pentium -ansi -g -nostdlib -fno-builtin -fno-defer-pop -P -x assembler-with-cpp -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM
-CPP = ccpentium -E -P
-CPPFILT = c++filtpentium --strip-underscores
-LD = ldpentium
-LDFLAGS = -X
-LDPARTIAL = ccpentium -B$(WIND_BASE)/host/$(WIND_HOST_TYPE)/lib/gcc-lib/ -nostdlib -r -Wl,-X
-LD_PARTIAL_FLAGS = -X -r
-NM = nmpentium -g
-OPTION_DEFINE_MACRO = -D
-OPTION_GENERATE_DEPENDENCY_FILE = -MD
-OPTION_INCLUDE_DIR = -I
-RELEASE = 0
-SIZE = sizepentium
-POST_BUILD_RULE =
-
-## end build-configuration info for build specification 'PENTIUMgnu.debug'
-
-endif
-
-
-## build-configuration info for build specification 'SIMSPARCSOLARISgnu.debug'
-
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu.debug)
-
-## macros
-
-AR = arsparc
-AS = ccsparc
-CC = ccsparc
-CFLAGS = -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -fno-builtin -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=SIMSPARCSOLARIS
-CFLAGS_AS = -ansi -g -fno-builtin -P -x assembler-with-cpp -Wall -I. -I$(WIND_BASE)/target/h -DCPU=SIMSPARCSOLARIS
-CPP = ccsparc -E -P
-CPPFILT = c++filtsparc --strip-underscores
-LD = ldsparc
-LDFLAGS = -T $(WIND_BASE)/target/config/solaris/linker-script
-LDPARTIAL = ccsparc -B$(WIND_BASE)/host/$(WIND_HOST_TYPE)/lib/gcc-lib/ -nostdlib -r -Wl,-X
-LD_PARTIAL_FLAGS = -nostdlib -r
-NM = nmsparc
-OPTION_DEFINE_MACRO = -D
-OPTION_GENERATE_DEPENDENCY_FILE = -MD
-OPTION_INCLUDE_DIR = -I
-RELEASE = 0
-SIZE = sizesparc
-POST_BUILD_RULE =
-
-## end build-configuration info for build specification 'SIMSPARCSOLARISgnu.debug'
-
-endif
-
-# override make definitions only below this line
-
-
-# override make definitions only above this line
-
-include $(TGT_DIR)/h/make/rules.project
-
-
-#
-# Dummy target to force external make
-#
-
-FORCE_EXTERNAL_MAKE:
-
-
-
-#
-# Custom makefile
-#
-
-include $(PRJ_DIR)/Makefile.custom
-
-
-## build rules for build specification 'PENTIUM2gnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.debug)
-
-%.o : $(PRJ_DIR)/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 -c $<
-
-%.d : $(PRJ_DIR)/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 $< > $@
-
-%.o : $(PRJ_DIR)/../%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 -c $<
-
-%.d : $(PRJ_DIR)/../%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 $< > $@
-
-
-## end build rules for build specification 'PENTIUM2gnu.debug'
-
-endif
-
-
-## build rules for build specification 'PENTIUM2gnu.release'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.release)
-
-%.o : $(PRJ_DIR)/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 -c $<
-
-%.d : $(PRJ_DIR)/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 $< > $@
-
-%.o : $(PRJ_DIR)/../%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 -c $<
-
-%.d : $(PRJ_DIR)/../%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 $< > $@
-
-
-## end build rules for build specification 'PENTIUM2gnu.release'
-
-endif
-
-
-## build rules for build specification 'PENTIUMgnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUMgnu.debug)
-
-%.o : $(PRJ_DIR)/%.c
- $(CC) -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM -c $<
-
-%.d : $(PRJ_DIR)/%.c
- ccpentium -E -P -M -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM $< > $@
-
-%.o : $(PRJ_DIR)/../%.c
- $(CC) -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM -c $<
-
-%.d : $(PRJ_DIR)/../%.c
- ccpentium -E -P -M -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM $< > $@
-
-
-## end build rules for build specification 'PENTIUMgnu.debug'
-
-endif
-
-
-## build rules for build specification 'SIMSPARCSOLARISgnu.debug'
-
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu.debug)
-
-%.o : $(PRJ_DIR)/%.c
- $(CC) -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -fno-builtin -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=SIMSPARCSOLARIS -c $<
-
-%.d : $(PRJ_DIR)/%.c
- ccsparc -E -P -M -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -fno-builtin -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=SIMSPARCSOLARIS $< > $@
-
-%.o : $(PRJ_DIR)/../%.c
- $(CC) -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -fno-builtin -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=SIMSPARCSOLARIS -c $<
-
-%.d : $(PRJ_DIR)/../%.c
- ccsparc -E -P -M -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -fno-builtin -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=SIMSPARCSOLARIS $< > $@
-
-
-## end build rules for build specification 'SIMSPARCSOLARISgnu.debug'
-
-endif
-
-#
-# Rule for configurable, binary component
-#
-# Downloadable component module build rules
-#
-db_load.cm: $(PRJ_OBJS) mxrDoc.nm depend
-#
-# Partially link all db_load modules together
-# including the configlette modules
-#
- $(LD) -r -o $@ $(PRJ_OBJS) $(CC_LIB)
-#
-# Generate _vxMain and _vxExit by munching
-#
- $(NM) $@ | $(MUNCH) > db_load.c
- $(COMPILE_TRADITIONAL) db_load_ctdt.c -o db_load_ctdt.o
- $(LD) -r -o db_load.tmp $@ db_load_ctdt.o
- $(RM) $@
- $(MV) db_load.tmp $@
-#
-# Adds entry point table section to db_load component
-#
- $(PD_EPT_DDE_ADD) $@ $(PRJ_DIR)/$(PRJ_FILE) INDEX $(BUILD_SPEC)
-
-
-#
-# Partial link build rules
-# Partially link all db_load modules together
-# If no source files, then generates dummy.c
-#
-
-ifeq ($(COMPONENT_OBJS),)
-dummy.c:
- $(CFG_GEN) $(PRJ_DIR)/$(PRJ_FILE) dummyCGen $(PRJ_TYPE)
-
-db_load.pl: dummy.o mxrDoc.nm depend
- $(LD) -r -o $@ dummy.o
-else
-db_load.pl: $(COMPONENT_OBJS) mxrDoc.nm depend
- $(LD) -r -o $@ $(COMPONENT_OBJS)
-endif
-
-#
-# nm file containing symbol information for all component objects
-#
-
-EXTERNAL_BINARIES_DIR_PATTERN_1 = $(subst \,\\,$(PRJ_DIR)/extbin/$(BUILD_SPEC)/)
-EXTERNAL_BINARIES_DIR_PATTERN = $(subst /,\/,$(EXTERNAL_BINARIES_DIR_PATTERN_1))
-
-mxrDoc.nm: mxrDoc.size $(COMPONENT_OBJS)
- $(RM) $@
-# if there are no object files, make a blank mxr doc
-ifeq ($(NUMBER_OF_COMPONENT_OBJS),0)
- @$(ECHO) "" >> $@
-else
-# make sure object file name is in mxrDoc.nm even if there
-# is only one object file
- $(ECHO) db_load.o: >> $@
- $(NM) db_load.o | sed -e "s|$(EXTERNAL_BINARIES_DIR_PATTERN)||g" >> $@
-endif
-
-#
-# size file containing size information for all component objects
-#
-mxrDoc.size: $(COMPONENT_OBJS) $(PRJ_DIR)/component.cdf
- $(RM) $@
-ifeq ($(NUMBER_OF_COMPONENT_OBJS),0)
- @$(ECHO) "" > $@
-else
- $(SIZE) db_load.o | sed -e "s|$(EXTERNAL_BINARIES_DIR_PATTERN)||g" >> $@
-endif
-
-
-## user-defined rules for build specification 'PENTIUM2gnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.debug)
-
-## end user-defined rules for build specification 'PENTIUM2gnu.debug'
-
-endif
-
-
-## user-defined rules for build specification 'PENTIUM2gnu.release'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.release)
-
-## end user-defined rules for build specification 'PENTIUM2gnu.release'
-
-endif
-
-
-## user-defined rules for build specification 'PENTIUMgnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUMgnu.debug)
-
-## end user-defined rules for build specification 'PENTIUMgnu.debug'
-
-endif
-
-
-## user-defined rules for build specification 'SIMSPARCSOLARISgnu.debug'
-
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu.debug)
-
-## end user-defined rules for build specification 'SIMSPARCSOLARISgnu.debug'
-
-endif
-
-
-#
-# Recursive clean
-#
-
-rclean : clean
-
diff --git a/db/build_vxworks/db_printlog/db_printlog.c b/db/build_vxworks/db_printlog/db_printlog.c
index eef054dac..bbb163210 100644
--- a/db/build_vxworks/db_printlog/db_printlog.c
+++ b/db/build_vxworks/db_printlog/db_printlog.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: db_printlog.c,v 12.20 2006/08/26 09:23:10 bostic Exp $
+ * $Id: db_printlog.c,v 12.25 2007/06/01 15:36:50 sue Exp $
*/
#include "db_config.h"
@@ -20,7 +19,7 @@
#ifndef lint
static const char copyright[] =
- "Copyright (c) 1996-2006\nOracle Corporation. All rights reserved.\n";
+ "Copyright (c) 1996,2007 Oracle. All rights reserved.\n";
#endif
int db_printlog_env_init_print __P((DB_ENV *, u_int32_t,
@@ -73,7 +72,7 @@ db_printlog_main(argc, argv)
int (**dtab) __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
char *home, *passwd;
- if ((progname = strrchr(argv[0], '/')) == NULL)
+ if ((progname = __db_rpath(argv[0])) == NULL)
progname = argv[0];
else
++progname;
@@ -244,7 +243,7 @@ db_printlog_main(argc, argv)
}
for (; !__db_util_interrupted(); logcflag = rflag ? DB_PREV : DB_NEXT) {
if (repflag) {
- ret = dbc->c_get(dbc, &keydbt, &data, logcflag);
+ ret = dbc->get(dbc, &keydbt, &data, logcflag);
if (ret == 0)
key = ((REP_CONTROL *)keydbt.data)->lsn;
} else
@@ -307,7 +306,7 @@ shutdown: exitval = 1;
if (logc != NULL && (ret = logc->close(logc, 0)) != 0)
exitval = 1;
- if (dbc != NULL && (ret = dbc->c_close(dbc)) != 0)
+ if (dbc != NULL && (ret = dbc->close(dbc)) != 0)
exitval = 1;
if (dbp != NULL && (ret = dbp->close(dbp, 0)) != 0)
@@ -359,7 +358,11 @@ db_printlog_env_init_print(dbenv, version, dtabp, dtabsizep)
/*
* There are no log record/recovery differences between
* 4.4 and 4.5. The log version changed due to checksum.
+ * There are no log recovery differences between
+ * 4.5 and 4.6. The name of the rep_gen in txn_checkpoint
+ * changed (to spare, since we don't use it anymore).
*/
+ case DB_LOGVERSION_46:
case DB_LOGVERSION_45:
case DB_LOGVERSION_44:
ret = 0;
diff --git a/db/build_vxworks/db_printlog/db_printlog/Makefile.component b/db/build_vxworks/db_printlog/db_printlog/Makefile.component
deleted file mode 100644
index 1a954a898..000000000
--- a/db/build_vxworks/db_printlog/db_printlog/Makefile.component
+++ /dev/null
@@ -1,433 +0,0 @@
-# Component project makefile generated by the project manager
-#
-
-
-## core information
-
-
-CONFIGLETTE = compConfig.c
-TGT_DIR = $(WIND_BASE)/target
-EXTERNAL_BINARIES_DIR = $(PRJ_DIR)/extbin/$(BUILD_SPEC)
-COMPONENT_NAME = db_printlog
-.PHONY: defaultTarget
-defaultTarget: $(COMPONENT_NAME).cm
-
-#
-# default definition for CPU and TOOL (needed by defs.project)
-#
-
-CPU = SIMSPARCSOLARIS
-TOOL = gnu
-
-
-## CPU and TOOL info for build specification 'PENTIUM2gnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.debug)
-CPU = PENTIUM2
-TOOL = gnu
-SYS_OBJ_DIR = $(WIND_BASE)/target/lib/obj$(CPU)$(TOOL)vx
-USER_OBJ_DIR = $(WIND_BASE)/target/user/objs/obj$(CPU)$(TOOL)
-PRJ_OBJS = db_printlog.o \
- compConfig.o
-COMPONENT_OBJS = db_printlog.o
-DEPENDENCY_FILES = db_printlog.d \
- compConfig.d
-NUMBER_OF_COMPONENT_OBJS = $(words $(COMPONENT_OBJS))
-endif
-
-
-## CPU and TOOL info for build specification 'PENTIUM2gnu.release'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.release)
-CPU = PENTIUM2
-TOOL = gnu
-SYS_OBJ_DIR = $(WIND_BASE)/target/lib/obj$(CPU)$(TOOL)vx
-USER_OBJ_DIR = $(WIND_BASE)/target/user/objs/obj$(CPU)$(TOOL)
-PRJ_OBJS = db_printlog.o \
- compConfig.o
-COMPONENT_OBJS = db_printlog.o
-DEPENDENCY_FILES = db_printlog.d \
- compConfig.d
-NUMBER_OF_COMPONENT_OBJS = $(words $(COMPONENT_OBJS))
-endif
-
-
-## CPU and TOOL info for build specification 'PENTIUMgnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUMgnu.debug)
-CPU = PENTIUM
-TOOL = gnu
-SYS_OBJ_DIR = $(WIND_BASE)/target/lib/obj$(CPU)$(TOOL)vx
-USER_OBJ_DIR = $(WIND_BASE)/target/user/objs/obj$(CPU)$(TOOL)
-PRJ_OBJS = db_printlog.o \
- compConfig.o
-COMPONENT_OBJS = db_printlog.o
-DEPENDENCY_FILES = db_printlog.d \
- compConfig.d
-NUMBER_OF_COMPONENT_OBJS = $(words $(COMPONENT_OBJS))
-endif
-
-
-## CPU and TOOL info for build specification 'SIMSPARCSOLARISgnu.debug'
-
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu.debug)
-CPU = SIMSPARCSOLARIS
-TOOL = gnu
-SYS_OBJ_DIR = $(WIND_BASE)/target/lib/obj$(CPU)$(TOOL)vx
-USER_OBJ_DIR = $(WIND_BASE)/target/user/objs/obj$(CPU)$(TOOL)
-PRJ_OBJS = db_printlog.o \
- compConfig.o
-COMPONENT_OBJS = db_printlog.o
-DEPENDENCY_FILES = db_printlog.d \
- compConfig.d
-NUMBER_OF_COMPONENT_OBJS = $(words $(COMPONENT_OBJS))
-endif
-
-
-include $(TGT_DIR)/h/make/defs.project
-
-
-## build-configuration info for build specification 'PENTIUM2gnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.debug)
-
-## macros
-
-AR = arpentium
-AS = ccpentium
-CC = ccpentium
-CFLAGS = -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2
-CFLAGS_AS = -mcpu=pentiumpro -march=pentiumpro -ansi -g -nostdlib -fno-builtin -fno-defer-pop -P -x assembler-with-cpp -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2
-CPP = ccpentium -E -P
-CPPFILT = c++filtpentium --strip-underscores
-LD = ldpentium
-LDFLAGS = -X
-LDPARTIAL = ccpentium -B$(WIND_BASE)/host/$(WIND_HOST_TYPE)/lib/gcc-lib/ -nostdlib -r -Wl,-X
-LD_PARTIAL_FLAGS = -X -r
-NM = nmpentium -g
-OPTION_DEFINE_MACRO = -D
-OPTION_GENERATE_DEPENDENCY_FILE = -MD
-OPTION_INCLUDE_DIR = -I
-RELEASE = 0
-SIZE = sizepentium
-POST_BUILD_RULE =
-
-## end build-configuration info for build specification 'PENTIUM2gnu.debug'
-
-endif
-
-
-## build-configuration info for build specification 'PENTIUM2gnu.release'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.release)
-
-## macros
-
-AR = arpentium
-AS = ccpentium
-CC = ccpentium
-CFLAGS = -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2
-CFLAGS_AS = -mcpu=pentiumpro -march=pentiumpro -ansi -O2 -nostdlib -fno-builtin -fno-defer-pop -P -x assembler-with-cpp -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2
-CPP = ccpentium -E -P
-CPPFILT = c++filtpentium --strip-underscores
-LD = ldpentium
-LDFLAGS = -X
-LDPARTIAL = ccpentium -B$(WIND_BASE)/host/$(WIND_HOST_TYPE)/lib/gcc-lib/ -nostdlib -r -Wl,-X
-LD_PARTIAL_FLAGS = -X -r
-NM = nmpentium -g
-OPTION_DEFINE_MACRO = -D
-OPTION_GENERATE_DEPENDENCY_FILE = -MD
-OPTION_INCLUDE_DIR = -I
-RELEASE = 1
-SIZE = sizepentium
-POST_BUILD_RULE =
-
-## end build-configuration info for build specification 'PENTIUM2gnu.release'
-
-endif
-
-
-## build-configuration info for build specification 'PENTIUMgnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUMgnu.debug)
-
-## macros
-
-AR = arpentium
-AS = ccpentium
-CC = ccpentium
-CFLAGS = -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM
-CFLAGS_AS = -mcpu=pentium -march=pentium -ansi -g -nostdlib -fno-builtin -fno-defer-pop -P -x assembler-with-cpp -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM
-CPP = ccpentium -E -P
-CPPFILT = c++filtpentium --strip-underscores
-LD = ldpentium
-LDFLAGS = -X
-LDPARTIAL = ccpentium -B$(WIND_BASE)/host/$(WIND_HOST_TYPE)/lib/gcc-lib/ -nostdlib -r -Wl,-X
-LD_PARTIAL_FLAGS = -X -r
-NM = nmpentium -g
-OPTION_DEFINE_MACRO = -D
-OPTION_GENERATE_DEPENDENCY_FILE = -MD
-OPTION_INCLUDE_DIR = -I
-RELEASE = 0
-SIZE = sizepentium
-POST_BUILD_RULE =
-
-## end build-configuration info for build specification 'PENTIUMgnu.debug'
-
-endif
-
-
-## build-configuration info for build specification 'SIMSPARCSOLARISgnu.debug'
-
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu.debug)
-
-## macros
-
-AR = arsparc
-AS = ccsparc
-CC = ccsparc
-CFLAGS = -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -fno-builtin -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=SIMSPARCSOLARIS
-CFLAGS_AS = -ansi -g -fno-builtin -P -x assembler-with-cpp -Wall -I. -I$(WIND_BASE)/target/h -DCPU=SIMSPARCSOLARIS
-CPP = ccsparc -E -P
-CPPFILT = c++filtsparc --strip-underscores
-LD = ldsparc
-LDFLAGS = -T $(WIND_BASE)/target/config/solaris/linker-script
-LDPARTIAL = ccsparc -B$(WIND_BASE)/host/$(WIND_HOST_TYPE)/lib/gcc-lib/ -nostdlib -r -Wl,-X
-LD_PARTIAL_FLAGS = -nostdlib -r
-NM = nmsparc
-OPTION_DEFINE_MACRO = -D
-OPTION_GENERATE_DEPENDENCY_FILE = -MD
-OPTION_INCLUDE_DIR = -I
-RELEASE = 0
-SIZE = sizesparc
-POST_BUILD_RULE =
-
-## end build-configuration info for build specification 'SIMSPARCSOLARISgnu.debug'
-
-endif
-
-# override make definitions only below this line
-
-
-# override make definitions only above this line
-
-include $(TGT_DIR)/h/make/rules.project
-
-
-#
-# Dummy target to force external make
-#
-
-FORCE_EXTERNAL_MAKE:
-
-
-
-#
-# Custom makefile
-#
-
-include $(PRJ_DIR)/Makefile.custom
-
-
-## build rules for build specification 'PENTIUM2gnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.debug)
-
-%.o : $(PRJ_DIR)/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 -c $<
-
-%.d : $(PRJ_DIR)/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 $< > $@
-
-%.o : $(PRJ_DIR)/../%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 -c $<
-
-%.d : $(PRJ_DIR)/../%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 $< > $@
-
-
-## end build rules for build specification 'PENTIUM2gnu.debug'
-
-endif
-
-
-## build rules for build specification 'PENTIUM2gnu.release'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.release)
-
-%.o : $(PRJ_DIR)/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 -c $<
-
-%.d : $(PRJ_DIR)/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 $< > $@
-
-%.o : $(PRJ_DIR)/../%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 -c $<
-
-%.d : $(PRJ_DIR)/../%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 $< > $@
-
-
-## end build rules for build specification 'PENTIUM2gnu.release'
-
-endif
-
-
-## build rules for build specification 'PENTIUMgnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUMgnu.debug)
-
-%.o : $(PRJ_DIR)/%.c
- $(CC) -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM -c $<
-
-%.d : $(PRJ_DIR)/%.c
- ccpentium -E -P -M -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM $< > $@
-
-%.o : $(PRJ_DIR)/../%.c
- $(CC) -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM -c $<
-
-%.d : $(PRJ_DIR)/../%.c
- ccpentium -E -P -M -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM $< > $@
-
-
-## end build rules for build specification 'PENTIUMgnu.debug'
-
-endif
-
-
-## build rules for build specification 'SIMSPARCSOLARISgnu.debug'
-
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu.debug)
-
-%.o : $(PRJ_DIR)/%.c
- $(CC) -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -fno-builtin -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=SIMSPARCSOLARIS -c $<
-
-%.d : $(PRJ_DIR)/%.c
- ccsparc -E -P -M -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -fno-builtin -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=SIMSPARCSOLARIS $< > $@
-
-%.o : $(PRJ_DIR)/../%.c
- $(CC) -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -fno-builtin -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=SIMSPARCSOLARIS -c $<
-
-%.d : $(PRJ_DIR)/../%.c
- ccsparc -E -P -M -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -fno-builtin -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=SIMSPARCSOLARIS $< > $@
-
-
-## end build rules for build specification 'SIMSPARCSOLARISgnu.debug'
-
-endif
-
-#
-# Rule for configurable, binary component
-#
-# Downloadable component module build rules
-#
-db_printlog.cm: $(PRJ_OBJS) mxrDoc.nm depend
-#
-# Partially link all db_printlog modules together
-# including the configlette modules
-#
- $(LD) -r -o $@ $(PRJ_OBJS) $(CC_LIB)
-#
-# Generate _vxMain and _vxExit by munching
-#
- $(NM) $@ | $(MUNCH) > db_printlog.c
- $(COMPILE_TRADITIONAL) db_printlog_ctdt.c -o db_printlog_ctdt.o
- $(LD) -r -o db_printlog.tmp $@ db_printlog_ctdt.o
- $(RM) $@
- $(MV) db_printlog.tmp $@
-#
-# Adds entry point table section to db_printlog component
-#
- $(PD_EPT_DDE_ADD) $@ $(PRJ_DIR)/$(PRJ_FILE) INDEX $(BUILD_SPEC)
-
-
-#
-# Partial link build rules
-# Partially link all db_printlog modules together
-# If no source files, then generates dummy.c
-#
-
-ifeq ($(COMPONENT_OBJS),)
-dummy.c:
- $(CFG_GEN) $(PRJ_DIR)/$(PRJ_FILE) dummyCGen $(PRJ_TYPE)
-
-db_printlog.pl: dummy.o mxrDoc.nm depend
- $(LD) -r -o $@ dummy.o
-else
-db_printlog.pl: $(COMPONENT_OBJS) mxrDoc.nm depend
- $(LD) -r -o $@ $(COMPONENT_OBJS)
-endif
-
-#
-# nm file containing symbol information for all component objects
-#
-
-EXTERNAL_BINARIES_DIR_PATTERN_1 = $(subst \,\\,$(PRJ_DIR)/extbin/$(BUILD_SPEC)/)
-EXTERNAL_BINARIES_DIR_PATTERN = $(subst /,\/,$(EXTERNAL_BINARIES_DIR_PATTERN_1))
-
-mxrDoc.nm: mxrDoc.size $(COMPONENT_OBJS)
- $(RM) $@
-# if there are no object files, make a blank mxr doc
-ifeq ($(NUMBER_OF_COMPONENT_OBJS),0)
- @$(ECHO) "" >> $@
-else
-# make sure object file name is in mxrDoc.nm even if there
-# is only one object file
- $(ECHO) db_printlog.o: >> $@
- $(NM) db_printlog.o | sed -e "s|$(EXTERNAL_BINARIES_DIR_PATTERN)||g" >> $@
-endif
-
-#
-# size file containing size information for all component objects
-#
-mxrDoc.size: $(COMPONENT_OBJS) $(PRJ_DIR)/component.cdf
- $(RM) $@
-ifeq ($(NUMBER_OF_COMPONENT_OBJS),0)
- @$(ECHO) "" > $@
-else
- $(SIZE) db_printlog.o | sed -e "s|$(EXTERNAL_BINARIES_DIR_PATTERN)||g" >> $@
-endif
-
-
-## user-defined rules for build specification 'PENTIUM2gnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.debug)
-
-## end user-defined rules for build specification 'PENTIUM2gnu.debug'
-
-endif
-
-
-## user-defined rules for build specification 'PENTIUM2gnu.release'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.release)
-
-## end user-defined rules for build specification 'PENTIUM2gnu.release'
-
-endif
-
-
-## user-defined rules for build specification 'PENTIUMgnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUMgnu.debug)
-
-## end user-defined rules for build specification 'PENTIUMgnu.debug'
-
-endif
-
-
-## user-defined rules for build specification 'SIMSPARCSOLARISgnu.debug'
-
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu.debug)
-
-## end user-defined rules for build specification 'SIMSPARCSOLARISgnu.debug'
-
-endif
-
-
-#
-# Recursive clean
-#
-
-rclean : clean
-
diff --git a/db/build_vxworks/db_recover/db_recover.c b/db/build_vxworks/db_recover/db_recover.c
index 874f31209..32e99fd89 100644
--- a/db/build_vxworks/db_recover/db_recover.c
+++ b/db/build_vxworks/db_recover/db_recover.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: db_recover.c,v 12.9 2006/08/26 09:23:13 bostic Exp $
+ * $Id: db_recover.c,v 12.14 2007/05/17 15:15:03 bostic Exp $
*/
#include "db_config.h"
@@ -13,15 +12,17 @@
#ifndef lint
static const char copyright[] =
- "Copyright (c) 1996-2006\nOracle Corporation. All rights reserved.\n";
+ "Copyright (c) 1996,2007 Oracle. All rights reserved.\n";
#endif
+void db_recover_feedback __P((DB_ENV *, int, int));
int db_recover_main __P((int, char *[]));
int db_recover_read_timestamp __P((char *, time_t *));
int db_recover_usage __P((void));
int db_recover_version_check __P((void));
const char *progname;
+int newline_needed;
int
db_recover(args)
@@ -47,10 +48,10 @@ db_recover_main(argc, argv)
DB_ENV *dbenv;
time_t timestamp;
u_int32_t flags;
- int ch, exitval, fatal_recover, ret, retain_env, verbose;
+ int ch, exitval, fatal_recover, ret, retain_env, set_feedback, verbose;
char *home, *passwd;
- if ((progname = strrchr(argv[0], '/')) == NULL)
+ if ((progname = __db_rpath(argv[0])) == NULL)
progname = argv[0];
else
++progname;
@@ -60,9 +61,9 @@ db_recover_main(argc, argv)
home = passwd = NULL;
timestamp = 0;
- exitval = fatal_recover = retain_env = verbose = 0;
+ exitval = fatal_recover = retain_env = set_feedback = verbose = 0;
__db_getopt_reset = 1;
- while ((ch = getopt(argc, argv, "ceh:P:t:Vv")) != EOF)
+ while ((ch = getopt(argc, argv, "cefh:P:t:Vv")) != EOF)
switch (ch) {
case 'c':
fatal_recover = 1;
@@ -70,6 +71,9 @@ db_recover_main(argc, argv)
case 'e':
retain_env = 1;
break;
+ case 'f':
+ set_feedback = 1;
+ break;
case 'h':
home = optarg;
break;
@@ -116,6 +120,8 @@ db_recover_main(argc, argv)
}
dbenv->set_errfile(dbenv, stderr);
dbenv->set_errpfx(dbenv, progname);
+ if (set_feedback)
+ (void)dbenv->set_feedback(dbenv, db_recover_feedback);
if (verbose)
(void)dbenv->set_verbose(dbenv, DB_VERB_RECOVERY, 1);
if (timestamp &&
@@ -156,6 +162,10 @@ db_recover_main(argc, argv)
shutdown: exitval = 1;
}
+ /* Flush to the next line of the output device. */
+ if (newline_needed)
+ printf("\n");
+
/* Clean up the environment. */
if ((ret = dbenv->close(dbenv, 0)) != 0) {
exitval = 1;
@@ -171,6 +181,25 @@ shutdown: exitval = 1;
return (exitval == 0 ? EXIT_SUCCESS : EXIT_FAILURE);
}
+/*
+ * feedback --
+ * provide feedback on recovery progress.
+ */
+void
+db_recover_feedback(dbenv, opcode, percent)
+ DB_ENV *dbenv;
+ int opcode;
+ int percent;
+{
+ COMPQUIET(dbenv, NULL);
+
+ if (opcode == DB_RECOVER) {
+ printf("\rrecovery %d%% complete", percent);
+ (void)fflush(stdout);
+ newline_needed = 1;
+ }
+}
+
#define ATOI2(ar) ((ar)[0] - '0') * 10 + ((ar)[1] - '0'); (ar) += 2;
/*
@@ -277,7 +306,7 @@ int
db_recover_usage()
{
(void)fprintf(stderr, "usage: %s %s\n", progname,
- "[-ceVv] [-h home] [-P password] [-t [[CC]YY]MMDDhhmm[.SS]]");
+ "[-cefVv] [-h home] [-P password] [-t [[CC]YY]MMDDhhmm[.SS]]");
return (EXIT_FAILURE);
}
diff --git a/db/build_vxworks/db_recover/db_recover/Makefile.component b/db/build_vxworks/db_recover/db_recover/Makefile.component
deleted file mode 100644
index 355683201..000000000
--- a/db/build_vxworks/db_recover/db_recover/Makefile.component
+++ /dev/null
@@ -1,433 +0,0 @@
-# Component project makefile generated by the project manager
-#
-
-
-## core information
-
-
-CONFIGLETTE = compConfig.c
-TGT_DIR = $(WIND_BASE)/target
-EXTERNAL_BINARIES_DIR = $(PRJ_DIR)/extbin/$(BUILD_SPEC)
-COMPONENT_NAME = db_recover
-.PHONY: defaultTarget
-defaultTarget: $(COMPONENT_NAME).cm
-
-#
-# default definition for CPU and TOOL (needed by defs.project)
-#
-
-CPU = SIMSPARCSOLARIS
-TOOL = gnu
-
-
-## CPU and TOOL info for build specification 'PENTIUM2gnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.debug)
-CPU = PENTIUM2
-TOOL = gnu
-SYS_OBJ_DIR = $(WIND_BASE)/target/lib/obj$(CPU)$(TOOL)vx
-USER_OBJ_DIR = $(WIND_BASE)/target/user/objs/obj$(CPU)$(TOOL)
-PRJ_OBJS = db_recover.o \
- compConfig.o
-COMPONENT_OBJS = db_recover.o
-DEPENDENCY_FILES = db_recover.d \
- compConfig.d
-NUMBER_OF_COMPONENT_OBJS = $(words $(COMPONENT_OBJS))
-endif
-
-
-## CPU and TOOL info for build specification 'PENTIUM2gnu.release'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.release)
-CPU = PENTIUM2
-TOOL = gnu
-SYS_OBJ_DIR = $(WIND_BASE)/target/lib/obj$(CPU)$(TOOL)vx
-USER_OBJ_DIR = $(WIND_BASE)/target/user/objs/obj$(CPU)$(TOOL)
-PRJ_OBJS = db_recover.o \
- compConfig.o
-COMPONENT_OBJS = db_recover.o
-DEPENDENCY_FILES = db_recover.d \
- compConfig.d
-NUMBER_OF_COMPONENT_OBJS = $(words $(COMPONENT_OBJS))
-endif
-
-
-## CPU and TOOL info for build specification 'PENTIUMgnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUMgnu.debug)
-CPU = PENTIUM
-TOOL = gnu
-SYS_OBJ_DIR = $(WIND_BASE)/target/lib/obj$(CPU)$(TOOL)vx
-USER_OBJ_DIR = $(WIND_BASE)/target/user/objs/obj$(CPU)$(TOOL)
-PRJ_OBJS = db_recover.o \
- compConfig.o
-COMPONENT_OBJS = db_recover.o
-DEPENDENCY_FILES = db_recover.d \
- compConfig.d
-NUMBER_OF_COMPONENT_OBJS = $(words $(COMPONENT_OBJS))
-endif
-
-
-## CPU and TOOL info for build specification 'SIMSPARCSOLARISgnu.debug'
-
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu.debug)
-CPU = SIMSPARCSOLARIS
-TOOL = gnu
-SYS_OBJ_DIR = $(WIND_BASE)/target/lib/obj$(CPU)$(TOOL)vx
-USER_OBJ_DIR = $(WIND_BASE)/target/user/objs/obj$(CPU)$(TOOL)
-PRJ_OBJS = db_recover.o \
- compConfig.o
-COMPONENT_OBJS = db_recover.o
-DEPENDENCY_FILES = db_recover.d \
- compConfig.d
-NUMBER_OF_COMPONENT_OBJS = $(words $(COMPONENT_OBJS))
-endif
-
-
-include $(TGT_DIR)/h/make/defs.project
-
-
-## build-configuration info for build specification 'PENTIUM2gnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.debug)
-
-## macros
-
-AR = arpentium
-AS = ccpentium
-CC = ccpentium
-CFLAGS = -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2
-CFLAGS_AS = -mcpu=pentiumpro -march=pentiumpro -ansi -g -nostdlib -fno-builtin -fno-defer-pop -P -x assembler-with-cpp -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2
-CPP = ccpentium -E -P
-CPPFILT = c++filtpentium --strip-underscores
-LD = ldpentium
-LDFLAGS = -X
-LDPARTIAL = ccpentium -B$(WIND_BASE)/host/$(WIND_HOST_TYPE)/lib/gcc-lib/ -nostdlib -r -Wl,-X
-LD_PARTIAL_FLAGS = -X -r
-NM = nmpentium -g
-OPTION_DEFINE_MACRO = -D
-OPTION_GENERATE_DEPENDENCY_FILE = -MD
-OPTION_INCLUDE_DIR = -I
-RELEASE = 0
-SIZE = sizepentium
-POST_BUILD_RULE =
-
-## end build-configuration info for build specification 'PENTIUM2gnu.debug'
-
-endif
-
-
-## build-configuration info for build specification 'PENTIUM2gnu.release'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.release)
-
-## macros
-
-AR = arpentium
-AS = ccpentium
-CC = ccpentium
-CFLAGS = -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2
-CFLAGS_AS = -mcpu=pentiumpro -march=pentiumpro -ansi -O2 -nostdlib -fno-builtin -fno-defer-pop -P -x assembler-with-cpp -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2
-CPP = ccpentium -E -P
-CPPFILT = c++filtpentium --strip-underscores
-LD = ldpentium
-LDFLAGS = -X
-LDPARTIAL = ccpentium -B$(WIND_BASE)/host/$(WIND_HOST_TYPE)/lib/gcc-lib/ -nostdlib -r -Wl,-X
-LD_PARTIAL_FLAGS = -X -r
-NM = nmpentium -g
-OPTION_DEFINE_MACRO = -D
-OPTION_GENERATE_DEPENDENCY_FILE = -MD
-OPTION_INCLUDE_DIR = -I
-RELEASE = 1
-SIZE = sizepentium
-POST_BUILD_RULE =
-
-## end build-configuration info for build specification 'PENTIUM2gnu.release'
-
-endif
-
-
-## build-configuration info for build specification 'PENTIUMgnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUMgnu.debug)
-
-## macros
-
-AR = arpentium
-AS = ccpentium
-CC = ccpentium
-CFLAGS = -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM
-CFLAGS_AS = -mcpu=pentium -march=pentium -ansi -g -nostdlib -fno-builtin -fno-defer-pop -P -x assembler-with-cpp -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM
-CPP = ccpentium -E -P
-CPPFILT = c++filtpentium --strip-underscores
-LD = ldpentium
-LDFLAGS = -X
-LDPARTIAL = ccpentium -B$(WIND_BASE)/host/$(WIND_HOST_TYPE)/lib/gcc-lib/ -nostdlib -r -Wl,-X
-LD_PARTIAL_FLAGS = -X -r
-NM = nmpentium -g
-OPTION_DEFINE_MACRO = -D
-OPTION_GENERATE_DEPENDENCY_FILE = -MD
-OPTION_INCLUDE_DIR = -I
-RELEASE = 0
-SIZE = sizepentium
-POST_BUILD_RULE =
-
-## end build-configuration info for build specification 'PENTIUMgnu.debug'
-
-endif
-
-
-## build-configuration info for build specification 'SIMSPARCSOLARISgnu.debug'
-
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu.debug)
-
-## macros
-
-AR = arsparc
-AS = ccsparc
-CC = ccsparc
-CFLAGS = -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -fno-builtin -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=SIMSPARCSOLARIS
-CFLAGS_AS = -ansi -g -fno-builtin -P -x assembler-with-cpp -Wall -I. -I$(WIND_BASE)/target/h -DCPU=SIMSPARCSOLARIS
-CPP = ccsparc -E -P
-CPPFILT = c++filtsparc --strip-underscores
-LD = ldsparc
-LDFLAGS = -T $(WIND_BASE)/target/config/solaris/linker-script
-LDPARTIAL = ccsparc -B$(WIND_BASE)/host/$(WIND_HOST_TYPE)/lib/gcc-lib/ -nostdlib -r -Wl,-X
-LD_PARTIAL_FLAGS = -nostdlib -r
-NM = nmsparc
-OPTION_DEFINE_MACRO = -D
-OPTION_GENERATE_DEPENDENCY_FILE = -MD
-OPTION_INCLUDE_DIR = -I
-RELEASE = 0
-SIZE = sizesparc
-POST_BUILD_RULE =
-
-## end build-configuration info for build specification 'SIMSPARCSOLARISgnu.debug'
-
-endif
-
-# override make definitions only below this line
-
-
-# override make definitions only above this line
-
-include $(TGT_DIR)/h/make/rules.project
-
-
-#
-# Dummy target to force external make
-#
-
-FORCE_EXTERNAL_MAKE:
-
-
-
-#
-# Custom makefile
-#
-
-include $(PRJ_DIR)/Makefile.custom
-
-
-## build rules for build specification 'PENTIUM2gnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.debug)
-
-%.o : $(PRJ_DIR)/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 -c $<
-
-%.d : $(PRJ_DIR)/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 $< > $@
-
-%.o : $(PRJ_DIR)/../%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 -c $<
-
-%.d : $(PRJ_DIR)/../%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 $< > $@
-
-
-## end build rules for build specification 'PENTIUM2gnu.debug'
-
-endif
-
-
-## build rules for build specification 'PENTIUM2gnu.release'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.release)
-
-%.o : $(PRJ_DIR)/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 -c $<
-
-%.d : $(PRJ_DIR)/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 $< > $@
-
-%.o : $(PRJ_DIR)/../%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 -c $<
-
-%.d : $(PRJ_DIR)/../%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 $< > $@
-
-
-## end build rules for build specification 'PENTIUM2gnu.release'
-
-endif
-
-
-## build rules for build specification 'PENTIUMgnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUMgnu.debug)
-
-%.o : $(PRJ_DIR)/%.c
- $(CC) -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM -c $<
-
-%.d : $(PRJ_DIR)/%.c
- ccpentium -E -P -M -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM $< > $@
-
-%.o : $(PRJ_DIR)/../%.c
- $(CC) -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM -c $<
-
-%.d : $(PRJ_DIR)/../%.c
- ccpentium -E -P -M -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM $< > $@
-
-
-## end build rules for build specification 'PENTIUMgnu.debug'
-
-endif
-
-
-## build rules for build specification 'SIMSPARCSOLARISgnu.debug'
-
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu.debug)
-
-%.o : $(PRJ_DIR)/%.c
- $(CC) -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -fno-builtin -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=SIMSPARCSOLARIS -c $<
-
-%.d : $(PRJ_DIR)/%.c
- ccsparc -E -P -M -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -fno-builtin -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=SIMSPARCSOLARIS $< > $@
-
-%.o : $(PRJ_DIR)/../%.c
- $(CC) -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -fno-builtin -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=SIMSPARCSOLARIS -c $<
-
-%.d : $(PRJ_DIR)/../%.c
- ccsparc -E -P -M -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -fno-builtin -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=SIMSPARCSOLARIS $< > $@
-
-
-## end build rules for build specification 'SIMSPARCSOLARISgnu.debug'
-
-endif
-
-#
-# Rule for configurable, binary component
-#
-# Downloadable component module build rules
-#
-db_recover.cm: $(PRJ_OBJS) mxrDoc.nm depend
-#
-# Partially link all db_recover modules together
-# including the configlette modules
-#
- $(LD) -r -o $@ $(PRJ_OBJS) $(CC_LIB)
-#
-# Generate _vxMain and _vxExit by munching
-#
- $(NM) $@ | $(MUNCH) > db_recover.c
- $(COMPILE_TRADITIONAL) db_recover_ctdt.c -o db_recover_ctdt.o
- $(LD) -r -o db_recover.tmp $@ db_recover_ctdt.o
- $(RM) $@
- $(MV) db_recover.tmp $@
-#
-# Adds entry point table section to db_recover component
-#
- $(PD_EPT_DDE_ADD) $@ $(PRJ_DIR)/$(PRJ_FILE) INDEX $(BUILD_SPEC)
-
-
-#
-# Partial link build rules
-# Partially link all db_recover modules together
-# If no source files, then generates dummy.c
-#
-
-ifeq ($(COMPONENT_OBJS),)
-dummy.c:
- $(CFG_GEN) $(PRJ_DIR)/$(PRJ_FILE) dummyCGen $(PRJ_TYPE)
-
-db_recover.pl: dummy.o mxrDoc.nm depend
- $(LD) -r -o $@ dummy.o
-else
-db_recover.pl: $(COMPONENT_OBJS) mxrDoc.nm depend
- $(LD) -r -o $@ $(COMPONENT_OBJS)
-endif
-
-#
-# nm file containing symbol information for all component objects
-#
-
-EXTERNAL_BINARIES_DIR_PATTERN_1 = $(subst \,\\,$(PRJ_DIR)/extbin/$(BUILD_SPEC)/)
-EXTERNAL_BINARIES_DIR_PATTERN = $(subst /,\/,$(EXTERNAL_BINARIES_DIR_PATTERN_1))
-
-mxrDoc.nm: mxrDoc.size $(COMPONENT_OBJS)
- $(RM) $@
-# if there are no object files, make a blank mxr doc
-ifeq ($(NUMBER_OF_COMPONENT_OBJS),0)
- @$(ECHO) "" >> $@
-else
-# make sure object file name is in mxrDoc.nm even if there
-# is only one object file
- $(ECHO) db_recover.o: >> $@
- $(NM) db_recover.o | sed -e "s|$(EXTERNAL_BINARIES_DIR_PATTERN)||g" >> $@
-endif
-
-#
-# size file containing size information for all component objects
-#
-mxrDoc.size: $(COMPONENT_OBJS) $(PRJ_DIR)/component.cdf
- $(RM) $@
-ifeq ($(NUMBER_OF_COMPONENT_OBJS),0)
- @$(ECHO) "" > $@
-else
- $(SIZE) db_recover.o | sed -e "s|$(EXTERNAL_BINARIES_DIR_PATTERN)||g" >> $@
-endif
-
-
-## user-defined rules for build specification 'PENTIUM2gnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.debug)
-
-## end user-defined rules for build specification 'PENTIUM2gnu.debug'
-
-endif
-
-
-## user-defined rules for build specification 'PENTIUM2gnu.release'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.release)
-
-## end user-defined rules for build specification 'PENTIUM2gnu.release'
-
-endif
-
-
-## user-defined rules for build specification 'PENTIUMgnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUMgnu.debug)
-
-## end user-defined rules for build specification 'PENTIUMgnu.debug'
-
-endif
-
-
-## user-defined rules for build specification 'SIMSPARCSOLARISgnu.debug'
-
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu.debug)
-
-## end user-defined rules for build specification 'SIMSPARCSOLARISgnu.debug'
-
-endif
-
-
-#
-# Recursive clean
-#
-
-rclean : clean
-
diff --git a/db/build_vxworks/db_stat/db_stat.c b/db/build_vxworks/db_stat/db_stat.c
index be6256d9c..138e5680e 100644
--- a/db/build_vxworks/db_stat/db_stat.c
+++ b/db/build_vxworks/db_stat/db_stat.c
@@ -1,24 +1,22 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: db_stat.c,v 12.14 2006/08/26 09:23:19 bostic Exp $
+ * $Id: db_stat.c,v 12.22 2007/07/06 15:43:57 alanb Exp $
*/
#include "db_config.h"
#include "db_int.h"
-#include "dbinc/db_page.h"
#ifndef lint
static const char copyright[] =
- "Copyright (c) 1996-2006\nOracle Corporation. All rights reserved.\n";
+ "Copyright (c) 1996,2007 Oracle. All rights reserved.\n";
#endif
-typedef enum { T_NOTSET,
- T_DB, T_ENV, T_LOCK, T_LOG, T_MPOOL, T_MUTEX, T_REP, T_TXN } test_t;
+typedef enum { T_NOTSET, T_DB,
+ T_ENV, T_LOCK, T_LOG, T_MPOOL, T_MUTEX, T_REP, T_TXN } test_t;
int db_stat_db_init __P((DB_ENV *, char *, test_t, u_int32_t, int *));
int db_stat_main __P((int, char *[]));
@@ -56,7 +54,7 @@ db_stat_main(argc, argv)
int nflag, private, resize, ret;
char *db, *home, *p, *passwd, *subdb;
- if ((progname = strrchr(argv[0], '/')) == NULL)
+ if ((progname = __db_rpath(argv[0])) == NULL)
progname = argv[0];
else
++progname;
@@ -73,7 +71,7 @@ db_stat_main(argc, argv)
__db_getopt_reset = 1;
while ((ch = getopt(argc,
- argv, "C:cd:Eefh:L:lM:mNP:R:rs:tVxX:Z")) != EOF)
+ argv, "C:cd:Eefgh:L:lM:mNP:R:rs:tVxX:Z")) != EOF)
switch (ch) {
case 'C': case 'c':
if (ttype != T_NOTSET && ttype != T_LOCK)
@@ -345,6 +343,10 @@ retry: if ((ret = db_env_create(&dbenv, 0)) != 0) {
goto err;
break;
case T_REP:
+#ifdef HAVE_REPLICATION_THREADS
+ if (dbenv->repmgr_stat_print(dbenv, flags))
+ goto err;
+#endif
if (dbenv->rep_stat_print(dbenv, flags))
goto err;
break;
@@ -435,8 +437,6 @@ db_stat_db_init(dbenv, home, ttype, cache, is_private)
oflags |= DB_INIT_MPOOL;
if (ttype == T_LOG)
oflags |= DB_INIT_LOG;
- if (ttype == T_REP)
- oflags |= DB_INIT_REP;
if ((ret = dbenv->open(dbenv, home, oflags, 0)) == 0)
return (0);
diff --git a/db/build_vxworks/db_stat/db_stat/Makefile.component b/db/build_vxworks/db_stat/db_stat/Makefile.component
deleted file mode 100644
index 7b1723781..000000000
--- a/db/build_vxworks/db_stat/db_stat/Makefile.component
+++ /dev/null
@@ -1,433 +0,0 @@
-# Component project makefile generated by the project manager
-#
-
-
-## core information
-
-
-CONFIGLETTE = compConfig.c
-TGT_DIR = $(WIND_BASE)/target
-EXTERNAL_BINARIES_DIR = $(PRJ_DIR)/extbin/$(BUILD_SPEC)
-COMPONENT_NAME = db_stat
-.PHONY: defaultTarget
-defaultTarget: $(COMPONENT_NAME).cm
-
-#
-# default definition for CPU and TOOL (needed by defs.project)
-#
-
-CPU = SIMSPARCSOLARIS
-TOOL = gnu
-
-
-## CPU and TOOL info for build specification 'PENTIUM2gnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.debug)
-CPU = PENTIUM2
-TOOL = gnu
-SYS_OBJ_DIR = $(WIND_BASE)/target/lib/obj$(CPU)$(TOOL)vx
-USER_OBJ_DIR = $(WIND_BASE)/target/user/objs/obj$(CPU)$(TOOL)
-PRJ_OBJS = db_stat.o \
- compConfig.o
-COMPONENT_OBJS = db_stat.o
-DEPENDENCY_FILES = db_stat.d \
- compConfig.d
-NUMBER_OF_COMPONENT_OBJS = $(words $(COMPONENT_OBJS))
-endif
-
-
-## CPU and TOOL info for build specification 'PENTIUM2gnu.release'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.release)
-CPU = PENTIUM2
-TOOL = gnu
-SYS_OBJ_DIR = $(WIND_BASE)/target/lib/obj$(CPU)$(TOOL)vx
-USER_OBJ_DIR = $(WIND_BASE)/target/user/objs/obj$(CPU)$(TOOL)
-PRJ_OBJS = db_stat.o \
- compConfig.o
-COMPONENT_OBJS = db_stat.o
-DEPENDENCY_FILES = db_stat.d \
- compConfig.d
-NUMBER_OF_COMPONENT_OBJS = $(words $(COMPONENT_OBJS))
-endif
-
-
-## CPU and TOOL info for build specification 'PENTIUMgnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUMgnu.debug)
-CPU = PENTIUM
-TOOL = gnu
-SYS_OBJ_DIR = $(WIND_BASE)/target/lib/obj$(CPU)$(TOOL)vx
-USER_OBJ_DIR = $(WIND_BASE)/target/user/objs/obj$(CPU)$(TOOL)
-PRJ_OBJS = db_stat.o \
- compConfig.o
-COMPONENT_OBJS = db_stat.o
-DEPENDENCY_FILES = db_stat.d \
- compConfig.d
-NUMBER_OF_COMPONENT_OBJS = $(words $(COMPONENT_OBJS))
-endif
-
-
-## CPU and TOOL info for build specification 'SIMSPARCSOLARISgnu.debug'
-
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu.debug)
-CPU = SIMSPARCSOLARIS
-TOOL = gnu
-SYS_OBJ_DIR = $(WIND_BASE)/target/lib/obj$(CPU)$(TOOL)vx
-USER_OBJ_DIR = $(WIND_BASE)/target/user/objs/obj$(CPU)$(TOOL)
-PRJ_OBJS = db_stat.o \
- compConfig.o
-COMPONENT_OBJS = db_stat.o
-DEPENDENCY_FILES = db_stat.d \
- compConfig.d
-NUMBER_OF_COMPONENT_OBJS = $(words $(COMPONENT_OBJS))
-endif
-
-
-include $(TGT_DIR)/h/make/defs.project
-
-
-## build-configuration info for build specification 'PENTIUM2gnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.debug)
-
-## macros
-
-AR = arpentium
-AS = ccpentium
-CC = ccpentium
-CFLAGS = -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2
-CFLAGS_AS = -mcpu=pentiumpro -march=pentiumpro -ansi -g -nostdlib -fno-builtin -fno-defer-pop -P -x assembler-with-cpp -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2
-CPP = ccpentium -E -P
-CPPFILT = c++filtpentium --strip-underscores
-LD = ldpentium
-LDFLAGS = -X
-LDPARTIAL = ccpentium -B$(WIND_BASE)/host/$(WIND_HOST_TYPE)/lib/gcc-lib/ -nostdlib -r -Wl,-X
-LD_PARTIAL_FLAGS = -X -r
-NM = nmpentium -g
-OPTION_DEFINE_MACRO = -D
-OPTION_GENERATE_DEPENDENCY_FILE = -MD
-OPTION_INCLUDE_DIR = -I
-RELEASE = 0
-SIZE = sizepentium
-POST_BUILD_RULE =
-
-## end build-configuration info for build specification 'PENTIUM2gnu.debug'
-
-endif
-
-
-## build-configuration info for build specification 'PENTIUM2gnu.release'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.release)
-
-## macros
-
-AR = arpentium
-AS = ccpentium
-CC = ccpentium
-CFLAGS = -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2
-CFLAGS_AS = -mcpu=pentiumpro -march=pentiumpro -ansi -O2 -nostdlib -fno-builtin -fno-defer-pop -P -x assembler-with-cpp -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2
-CPP = ccpentium -E -P
-CPPFILT = c++filtpentium --strip-underscores
-LD = ldpentium
-LDFLAGS = -X
-LDPARTIAL = ccpentium -B$(WIND_BASE)/host/$(WIND_HOST_TYPE)/lib/gcc-lib/ -nostdlib -r -Wl,-X
-LD_PARTIAL_FLAGS = -X -r
-NM = nmpentium -g
-OPTION_DEFINE_MACRO = -D
-OPTION_GENERATE_DEPENDENCY_FILE = -MD
-OPTION_INCLUDE_DIR = -I
-RELEASE = 1
-SIZE = sizepentium
-POST_BUILD_RULE =
-
-## end build-configuration info for build specification 'PENTIUM2gnu.release'
-
-endif
-
-
-## build-configuration info for build specification 'PENTIUMgnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUMgnu.debug)
-
-## macros
-
-AR = arpentium
-AS = ccpentium
-CC = ccpentium
-CFLAGS = -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM
-CFLAGS_AS = -mcpu=pentium -march=pentium -ansi -g -nostdlib -fno-builtin -fno-defer-pop -P -x assembler-with-cpp -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM
-CPP = ccpentium -E -P
-CPPFILT = c++filtpentium --strip-underscores
-LD = ldpentium
-LDFLAGS = -X
-LDPARTIAL = ccpentium -B$(WIND_BASE)/host/$(WIND_HOST_TYPE)/lib/gcc-lib/ -nostdlib -r -Wl,-X
-LD_PARTIAL_FLAGS = -X -r
-NM = nmpentium -g
-OPTION_DEFINE_MACRO = -D
-OPTION_GENERATE_DEPENDENCY_FILE = -MD
-OPTION_INCLUDE_DIR = -I
-RELEASE = 0
-SIZE = sizepentium
-POST_BUILD_RULE =
-
-## end build-configuration info for build specification 'PENTIUMgnu.debug'
-
-endif
-
-
-## build-configuration info for build specification 'SIMSPARCSOLARISgnu.debug'
-
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu.debug)
-
-## macros
-
-AR = arsparc
-AS = ccsparc
-CC = ccsparc
-CFLAGS = -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -fno-builtin -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=SIMSPARCSOLARIS
-CFLAGS_AS = -ansi -g -fno-builtin -P -x assembler-with-cpp -Wall -I. -I$(WIND_BASE)/target/h -DCPU=SIMSPARCSOLARIS
-CPP = ccsparc -E -P
-CPPFILT = c++filtsparc --strip-underscores
-LD = ldsparc
-LDFLAGS = -T $(WIND_BASE)/target/config/solaris/linker-script
-LDPARTIAL = ccsparc -B$(WIND_BASE)/host/$(WIND_HOST_TYPE)/lib/gcc-lib/ -nostdlib -r -Wl,-X
-LD_PARTIAL_FLAGS = -nostdlib -r
-NM = nmsparc
-OPTION_DEFINE_MACRO = -D
-OPTION_GENERATE_DEPENDENCY_FILE = -MD
-OPTION_INCLUDE_DIR = -I
-RELEASE = 0
-SIZE = sizesparc
-POST_BUILD_RULE =
-
-## end build-configuration info for build specification 'SIMSPARCSOLARISgnu.debug'
-
-endif
-
-# override make definitions only below this line
-
-
-# override make definitions only above this line
-
-include $(TGT_DIR)/h/make/rules.project
-
-
-#
-# Dummy target to force external make
-#
-
-FORCE_EXTERNAL_MAKE:
-
-
-
-#
-# Custom makefile
-#
-
-include $(PRJ_DIR)/Makefile.custom
-
-
-## build rules for build specification 'PENTIUM2gnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.debug)
-
-%.o : $(PRJ_DIR)/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 -c $<
-
-%.d : $(PRJ_DIR)/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 $< > $@
-
-%.o : $(PRJ_DIR)/../%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 -c $<
-
-%.d : $(PRJ_DIR)/../%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 $< > $@
-
-
-## end build rules for build specification 'PENTIUM2gnu.debug'
-
-endif
-
-
-## build rules for build specification 'PENTIUM2gnu.release'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.release)
-
-%.o : $(PRJ_DIR)/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 -c $<
-
-%.d : $(PRJ_DIR)/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 $< > $@
-
-%.o : $(PRJ_DIR)/../%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 -c $<
-
-%.d : $(PRJ_DIR)/../%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 $< > $@
-
-
-## end build rules for build specification 'PENTIUM2gnu.release'
-
-endif
-
-
-## build rules for build specification 'PENTIUMgnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUMgnu.debug)
-
-%.o : $(PRJ_DIR)/%.c
- $(CC) -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM -c $<
-
-%.d : $(PRJ_DIR)/%.c
- ccpentium -E -P -M -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM $< > $@
-
-%.o : $(PRJ_DIR)/../%.c
- $(CC) -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM -c $<
-
-%.d : $(PRJ_DIR)/../%.c
- ccpentium -E -P -M -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM $< > $@
-
-
-## end build rules for build specification 'PENTIUMgnu.debug'
-
-endif
-
-
-## build rules for build specification 'SIMSPARCSOLARISgnu.debug'
-
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu.debug)
-
-%.o : $(PRJ_DIR)/%.c
- $(CC) -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -fno-builtin -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=SIMSPARCSOLARIS -c $<
-
-%.d : $(PRJ_DIR)/%.c
- ccsparc -E -P -M -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -fno-builtin -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=SIMSPARCSOLARIS $< > $@
-
-%.o : $(PRJ_DIR)/../%.c
- $(CC) -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -fno-builtin -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=SIMSPARCSOLARIS -c $<
-
-%.d : $(PRJ_DIR)/../%.c
- ccsparc -E -P -M -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -fno-builtin -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=SIMSPARCSOLARIS $< > $@
-
-
-## end build rules for build specification 'SIMSPARCSOLARISgnu.debug'
-
-endif
-
-#
-# Rule for configurable, binary component
-#
-# Downloadable component module build rules
-#
-db_stat.cm: $(PRJ_OBJS) mxrDoc.nm depend
-#
-# Partially link all db_stat modules together
-# including the configlette modules
-#
- $(LD) -r -o $@ $(PRJ_OBJS) $(CC_LIB)
-#
-# Generate _vxMain and _vxExit by munching
-#
- $(NM) $@ | $(MUNCH) > db_stat.c
- $(COMPILE_TRADITIONAL) db_stat_ctdt.c -o db_stat_ctdt.o
- $(LD) -r -o db_stat.tmp $@ db_stat_ctdt.o
- $(RM) $@
- $(MV) db_stat.tmp $@
-#
-# Adds entry point table section to db_stat component
-#
- $(PD_EPT_DDE_ADD) $@ $(PRJ_DIR)/$(PRJ_FILE) INDEX $(BUILD_SPEC)
-
-
-#
-# Partial link build rules
-# Partially link all db_stat modules together
-# If no source files, then generates dummy.c
-#
-
-ifeq ($(COMPONENT_OBJS),)
-dummy.c:
- $(CFG_GEN) $(PRJ_DIR)/$(PRJ_FILE) dummyCGen $(PRJ_TYPE)
-
-db_stat.pl: dummy.o mxrDoc.nm depend
- $(LD) -r -o $@ dummy.o
-else
-db_stat.pl: $(COMPONENT_OBJS) mxrDoc.nm depend
- $(LD) -r -o $@ $(COMPONENT_OBJS)
-endif
-
-#
-# nm file containing symbol information for all component objects
-#
-
-EXTERNAL_BINARIES_DIR_PATTERN_1 = $(subst \,\\,$(PRJ_DIR)/extbin/$(BUILD_SPEC)/)
-EXTERNAL_BINARIES_DIR_PATTERN = $(subst /,\/,$(EXTERNAL_BINARIES_DIR_PATTERN_1))
-
-mxrDoc.nm: mxrDoc.size $(COMPONENT_OBJS)
- $(RM) $@
-# if there are no object files, make a blank mxr doc
-ifeq ($(NUMBER_OF_COMPONENT_OBJS),0)
- @$(ECHO) "" >> $@
-else
-# make sure object file name is in mxrDoc.nm even if there
-# is only one object file
- $(ECHO) db_stat.o: >> $@
- $(NM) db_stat.o | sed -e "s|$(EXTERNAL_BINARIES_DIR_PATTERN)||g" >> $@
-endif
-
-#
-# size file containing size information for all component objects
-#
-mxrDoc.size: $(COMPONENT_OBJS) $(PRJ_DIR)/component.cdf
- $(RM) $@
-ifeq ($(NUMBER_OF_COMPONENT_OBJS),0)
- @$(ECHO) "" > $@
-else
- $(SIZE) db_stat.o | sed -e "s|$(EXTERNAL_BINARIES_DIR_PATTERN)||g" >> $@
-endif
-
-
-## user-defined rules for build specification 'PENTIUM2gnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.debug)
-
-## end user-defined rules for build specification 'PENTIUM2gnu.debug'
-
-endif
-
-
-## user-defined rules for build specification 'PENTIUM2gnu.release'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.release)
-
-## end user-defined rules for build specification 'PENTIUM2gnu.release'
-
-endif
-
-
-## user-defined rules for build specification 'PENTIUMgnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUMgnu.debug)
-
-## end user-defined rules for build specification 'PENTIUMgnu.debug'
-
-endif
-
-
-## user-defined rules for build specification 'SIMSPARCSOLARISgnu.debug'
-
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu.debug)
-
-## end user-defined rules for build specification 'SIMSPARCSOLARISgnu.debug'
-
-endif
-
-
-#
-# Recursive clean
-#
-
-rclean : clean
-
diff --git a/db/build_vxworks/db_upgrade/db_upgrade.c b/db/build_vxworks/db_upgrade/db_upgrade.c
index e53d571c6..06a745a24 100644
--- a/db/build_vxworks/db_upgrade/db_upgrade.c
+++ b/db/build_vxworks/db_upgrade/db_upgrade.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: db_upgrade.c,v 12.9 2006/08/26 09:23:22 bostic Exp $
+ * $Id: db_upgrade.c,v 12.12 2007/05/17 15:15:04 bostic Exp $
*/
#include "db_config.h"
@@ -13,7 +12,7 @@
#ifndef lint
static const char copyright[] =
- "Copyright (c) 1996-2006\nOracle Corporation. All rights reserved.\n";
+ "Copyright (c) 1996,2007 Oracle. All rights reserved.\n";
#endif
int db_upgrade_main __P((int, char *[]));
@@ -49,7 +48,7 @@ db_upgrade_main(argc, argv)
int ch, exitval, nflag, ret, t_ret, verbose;
char *home, *passwd;
- if ((progname = strrchr(argv[0], '/')) == NULL)
+ if ((progname = __db_rpath(argv[0])) == NULL)
progname = argv[0];
else
++progname;
diff --git a/db/build_vxworks/db_upgrade/db_upgrade/Makefile.component b/db/build_vxworks/db_upgrade/db_upgrade/Makefile.component
deleted file mode 100644
index 71ae5e98e..000000000
--- a/db/build_vxworks/db_upgrade/db_upgrade/Makefile.component
+++ /dev/null
@@ -1,433 +0,0 @@
-# Component project makefile generated by the project manager
-#
-
-
-## core information
-
-
-CONFIGLETTE = compConfig.c
-TGT_DIR = $(WIND_BASE)/target
-EXTERNAL_BINARIES_DIR = $(PRJ_DIR)/extbin/$(BUILD_SPEC)
-COMPONENT_NAME = db_upgrade
-.PHONY: defaultTarget
-defaultTarget: $(COMPONENT_NAME).cm
-
-#
-# default definition for CPU and TOOL (needed by defs.project)
-#
-
-CPU = SIMSPARCSOLARIS
-TOOL = gnu
-
-
-## CPU and TOOL info for build specification 'PENTIUM2gnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.debug)
-CPU = PENTIUM2
-TOOL = gnu
-SYS_OBJ_DIR = $(WIND_BASE)/target/lib/obj$(CPU)$(TOOL)vx
-USER_OBJ_DIR = $(WIND_BASE)/target/user/objs/obj$(CPU)$(TOOL)
-PRJ_OBJS = db_upgrade.o \
- compConfig.o
-COMPONENT_OBJS = db_upgrade.o
-DEPENDENCY_FILES = db_upgrade.d \
- compConfig.d
-NUMBER_OF_COMPONENT_OBJS = $(words $(COMPONENT_OBJS))
-endif
-
-
-## CPU and TOOL info for build specification 'PENTIUM2gnu.release'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.release)
-CPU = PENTIUM2
-TOOL = gnu
-SYS_OBJ_DIR = $(WIND_BASE)/target/lib/obj$(CPU)$(TOOL)vx
-USER_OBJ_DIR = $(WIND_BASE)/target/user/objs/obj$(CPU)$(TOOL)
-PRJ_OBJS = db_upgrade.o \
- compConfig.o
-COMPONENT_OBJS = db_upgrade.o
-DEPENDENCY_FILES = db_upgrade.d \
- compConfig.d
-NUMBER_OF_COMPONENT_OBJS = $(words $(COMPONENT_OBJS))
-endif
-
-
-## CPU and TOOL info for build specification 'PENTIUMgnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUMgnu.debug)
-CPU = PENTIUM
-TOOL = gnu
-SYS_OBJ_DIR = $(WIND_BASE)/target/lib/obj$(CPU)$(TOOL)vx
-USER_OBJ_DIR = $(WIND_BASE)/target/user/objs/obj$(CPU)$(TOOL)
-PRJ_OBJS = db_upgrade.o \
- compConfig.o
-COMPONENT_OBJS = db_upgrade.o
-DEPENDENCY_FILES = db_upgrade.d \
- compConfig.d
-NUMBER_OF_COMPONENT_OBJS = $(words $(COMPONENT_OBJS))
-endif
-
-
-## CPU and TOOL info for build specification 'SIMSPARCSOLARISgnu.debug'
-
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu.debug)
-CPU = SIMSPARCSOLARIS
-TOOL = gnu
-SYS_OBJ_DIR = $(WIND_BASE)/target/lib/obj$(CPU)$(TOOL)vx
-USER_OBJ_DIR = $(WIND_BASE)/target/user/objs/obj$(CPU)$(TOOL)
-PRJ_OBJS = db_upgrade.o \
- compConfig.o
-COMPONENT_OBJS = db_upgrade.o
-DEPENDENCY_FILES = db_upgrade.d \
- compConfig.d
-NUMBER_OF_COMPONENT_OBJS = $(words $(COMPONENT_OBJS))
-endif
-
-
-include $(TGT_DIR)/h/make/defs.project
-
-
-## build-configuration info for build specification 'PENTIUM2gnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.debug)
-
-## macros
-
-AR = arpentium
-AS = ccpentium
-CC = ccpentium
-CFLAGS = -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2
-CFLAGS_AS = -mcpu=pentiumpro -march=pentiumpro -ansi -g -nostdlib -fno-builtin -fno-defer-pop -P -x assembler-with-cpp -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2
-CPP = ccpentium -E -P
-CPPFILT = c++filtpentium --strip-underscores
-LD = ldpentium
-LDFLAGS = -X
-LDPARTIAL = ccpentium -B$(WIND_BASE)/host/$(WIND_HOST_TYPE)/lib/gcc-lib/ -nostdlib -r -Wl,-X
-LD_PARTIAL_FLAGS = -X -r
-NM = nmpentium -g
-OPTION_DEFINE_MACRO = -D
-OPTION_GENERATE_DEPENDENCY_FILE = -MD
-OPTION_INCLUDE_DIR = -I
-RELEASE = 0
-SIZE = sizepentium
-POST_BUILD_RULE =
-
-## end build-configuration info for build specification 'PENTIUM2gnu.debug'
-
-endif
-
-
-## build-configuration info for build specification 'PENTIUM2gnu.release'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.release)
-
-## macros
-
-AR = arpentium
-AS = ccpentium
-CC = ccpentium
-CFLAGS = -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2
-CFLAGS_AS = -mcpu=pentiumpro -march=pentiumpro -ansi -O2 -nostdlib -fno-builtin -fno-defer-pop -P -x assembler-with-cpp -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2
-CPP = ccpentium -E -P
-CPPFILT = c++filtpentium --strip-underscores
-LD = ldpentium
-LDFLAGS = -X
-LDPARTIAL = ccpentium -B$(WIND_BASE)/host/$(WIND_HOST_TYPE)/lib/gcc-lib/ -nostdlib -r -Wl,-X
-LD_PARTIAL_FLAGS = -X -r
-NM = nmpentium -g
-OPTION_DEFINE_MACRO = -D
-OPTION_GENERATE_DEPENDENCY_FILE = -MD
-OPTION_INCLUDE_DIR = -I
-RELEASE = 1
-SIZE = sizepentium
-POST_BUILD_RULE =
-
-## end build-configuration info for build specification 'PENTIUM2gnu.release'
-
-endif
-
-
-## build-configuration info for build specification 'PENTIUMgnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUMgnu.debug)
-
-## macros
-
-AR = arpentium
-AS = ccpentium
-CC = ccpentium
-CFLAGS = -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM
-CFLAGS_AS = -mcpu=pentium -march=pentium -ansi -g -nostdlib -fno-builtin -fno-defer-pop -P -x assembler-with-cpp -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM
-CPP = ccpentium -E -P
-CPPFILT = c++filtpentium --strip-underscores
-LD = ldpentium
-LDFLAGS = -X
-LDPARTIAL = ccpentium -B$(WIND_BASE)/host/$(WIND_HOST_TYPE)/lib/gcc-lib/ -nostdlib -r -Wl,-X
-LD_PARTIAL_FLAGS = -X -r
-NM = nmpentium -g
-OPTION_DEFINE_MACRO = -D
-OPTION_GENERATE_DEPENDENCY_FILE = -MD
-OPTION_INCLUDE_DIR = -I
-RELEASE = 0
-SIZE = sizepentium
-POST_BUILD_RULE =
-
-## end build-configuration info for build specification 'PENTIUMgnu.debug'
-
-endif
-
-
-## build-configuration info for build specification 'SIMSPARCSOLARISgnu.debug'
-
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu.debug)
-
-## macros
-
-AR = arsparc
-AS = ccsparc
-CC = ccsparc
-CFLAGS = -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -fno-builtin -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=SIMSPARCSOLARIS
-CFLAGS_AS = -ansi -g -fno-builtin -P -x assembler-with-cpp -Wall -I. -I$(WIND_BASE)/target/h -DCPU=SIMSPARCSOLARIS
-CPP = ccsparc -E -P
-CPPFILT = c++filtsparc --strip-underscores
-LD = ldsparc
-LDFLAGS = -T $(WIND_BASE)/target/config/solaris/linker-script
-LDPARTIAL = ccsparc -B$(WIND_BASE)/host/$(WIND_HOST_TYPE)/lib/gcc-lib/ -nostdlib -r -Wl,-X
-LD_PARTIAL_FLAGS = -nostdlib -r
-NM = nmsparc
-OPTION_DEFINE_MACRO = -D
-OPTION_GENERATE_DEPENDENCY_FILE = -MD
-OPTION_INCLUDE_DIR = -I
-RELEASE = 0
-SIZE = sizesparc
-POST_BUILD_RULE =
-
-## end build-configuration info for build specification 'SIMSPARCSOLARISgnu.debug'
-
-endif
-
-# override make definitions only below this line
-
-
-# override make definitions only above this line
-
-include $(TGT_DIR)/h/make/rules.project
-
-
-#
-# Dummy target to force external make
-#
-
-FORCE_EXTERNAL_MAKE:
-
-
-
-#
-# Custom makefile
-#
-
-include $(PRJ_DIR)/Makefile.custom
-
-
-## build rules for build specification 'PENTIUM2gnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.debug)
-
-%.o : $(PRJ_DIR)/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 -c $<
-
-%.d : $(PRJ_DIR)/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 $< > $@
-
-%.o : $(PRJ_DIR)/../%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 -c $<
-
-%.d : $(PRJ_DIR)/../%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 $< > $@
-
-
-## end build rules for build specification 'PENTIUM2gnu.debug'
-
-endif
-
-
-## build rules for build specification 'PENTIUM2gnu.release'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.release)
-
-%.o : $(PRJ_DIR)/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 -c $<
-
-%.d : $(PRJ_DIR)/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 $< > $@
-
-%.o : $(PRJ_DIR)/../%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 -c $<
-
-%.d : $(PRJ_DIR)/../%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 $< > $@
-
-
-## end build rules for build specification 'PENTIUM2gnu.release'
-
-endif
-
-
-## build rules for build specification 'PENTIUMgnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUMgnu.debug)
-
-%.o : $(PRJ_DIR)/%.c
- $(CC) -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM -c $<
-
-%.d : $(PRJ_DIR)/%.c
- ccpentium -E -P -M -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM $< > $@
-
-%.o : $(PRJ_DIR)/../%.c
- $(CC) -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM -c $<
-
-%.d : $(PRJ_DIR)/../%.c
- ccpentium -E -P -M -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM $< > $@
-
-
-## end build rules for build specification 'PENTIUMgnu.debug'
-
-endif
-
-
-## build rules for build specification 'SIMSPARCSOLARISgnu.debug'
-
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu.debug)
-
-%.o : $(PRJ_DIR)/%.c
- $(CC) -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -fno-builtin -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=SIMSPARCSOLARIS -c $<
-
-%.d : $(PRJ_DIR)/%.c
- ccsparc -E -P -M -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -fno-builtin -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=SIMSPARCSOLARIS $< > $@
-
-%.o : $(PRJ_DIR)/../%.c
- $(CC) -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -fno-builtin -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=SIMSPARCSOLARIS -c $<
-
-%.d : $(PRJ_DIR)/../%.c
- ccsparc -E -P -M -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -fno-builtin -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=SIMSPARCSOLARIS $< > $@
-
-
-## end build rules for build specification 'SIMSPARCSOLARISgnu.debug'
-
-endif
-
-#
-# Rule for configurable, binary component
-#
-# Downloadable component module build rules
-#
-db_upgrade.cm: $(PRJ_OBJS) mxrDoc.nm depend
-#
-# Partially link all db_upgrade modules together
-# including the configlette modules
-#
- $(LD) -r -o $@ $(PRJ_OBJS) $(CC_LIB)
-#
-# Generate _vxMain and _vxExit by munching
-#
- $(NM) $@ | $(MUNCH) > db_upgrade.c
- $(COMPILE_TRADITIONAL) db_upgrade_ctdt.c -o db_upgrade_ctdt.o
- $(LD) -r -o db_upgrade.tmp $@ db_upgrade_ctdt.o
- $(RM) $@
- $(MV) db_upgrade.tmp $@
-#
-# Adds entry point table section to db_upgrade component
-#
- $(PD_EPT_DDE_ADD) $@ $(PRJ_DIR)/$(PRJ_FILE) INDEX $(BUILD_SPEC)
-
-
-#
-# Partial link build rules
-# Partially link all db_upgrade modules together
-# If no source files, then generates dummy.c
-#
-
-ifeq ($(COMPONENT_OBJS),)
-dummy.c:
- $(CFG_GEN) $(PRJ_DIR)/$(PRJ_FILE) dummyCGen $(PRJ_TYPE)
-
-db_upgrade.pl: dummy.o mxrDoc.nm depend
- $(LD) -r -o $@ dummy.o
-else
-db_upgrade.pl: $(COMPONENT_OBJS) mxrDoc.nm depend
- $(LD) -r -o $@ $(COMPONENT_OBJS)
-endif
-
-#
-# nm file containing symbol information for all component objects
-#
-
-EXTERNAL_BINARIES_DIR_PATTERN_1 = $(subst \,\\,$(PRJ_DIR)/extbin/$(BUILD_SPEC)/)
-EXTERNAL_BINARIES_DIR_PATTERN = $(subst /,\/,$(EXTERNAL_BINARIES_DIR_PATTERN_1))
-
-mxrDoc.nm: mxrDoc.size $(COMPONENT_OBJS)
- $(RM) $@
-# if there are no object files, make a blank mxr doc
-ifeq ($(NUMBER_OF_COMPONENT_OBJS),0)
- @$(ECHO) "" >> $@
-else
-# make sure object file name is in mxrDoc.nm even if there
-# is only one object file
- $(ECHO) db_upgrade.o: >> $@
- $(NM) db_upgrade.o | sed -e "s|$(EXTERNAL_BINARIES_DIR_PATTERN)||g" >> $@
-endif
-
-#
-# size file containing size information for all component objects
-#
-mxrDoc.size: $(COMPONENT_OBJS) $(PRJ_DIR)/component.cdf
- $(RM) $@
-ifeq ($(NUMBER_OF_COMPONENT_OBJS),0)
- @$(ECHO) "" > $@
-else
- $(SIZE) db_upgrade.o | sed -e "s|$(EXTERNAL_BINARIES_DIR_PATTERN)||g" >> $@
-endif
-
-
-## user-defined rules for build specification 'PENTIUM2gnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.debug)
-
-## end user-defined rules for build specification 'PENTIUM2gnu.debug'
-
-endif
-
-
-## user-defined rules for build specification 'PENTIUM2gnu.release'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.release)
-
-## end user-defined rules for build specification 'PENTIUM2gnu.release'
-
-endif
-
-
-## user-defined rules for build specification 'PENTIUMgnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUMgnu.debug)
-
-## end user-defined rules for build specification 'PENTIUMgnu.debug'
-
-endif
-
-
-## user-defined rules for build specification 'SIMSPARCSOLARISgnu.debug'
-
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu.debug)
-
-## end user-defined rules for build specification 'SIMSPARCSOLARISgnu.debug'
-
-endif
-
-
-#
-# Recursive clean
-#
-
-rclean : clean
-
diff --git a/db/build_vxworks/db_verify/db_verify.c b/db/build_vxworks/db_verify/db_verify.c
index 68751ac01..20114a712 100644
--- a/db/build_vxworks/db_verify/db_verify.c
+++ b/db/build_vxworks/db_verify/db_verify.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: db_verify.c,v 12.8 2006/08/26 09:23:23 bostic Exp $
+ * $Id: db_verify.c,v 12.11 2007/05/17 15:15:05 bostic Exp $
*/
#include "db_config.h"
@@ -13,7 +12,7 @@
#ifndef lint
static const char copyright[] =
- "Copyright (c) 1996-2006\nOracle Corporation. All rights reserved.\n";
+ "Copyright (c) 1996,2007 Oracle. All rights reserved.\n";
#endif
int db_verify_main __P((int, char *[]));
@@ -50,7 +49,7 @@ db_verify_main(argc, argv)
int quiet, resize, ret;
char *home, *passwd;
- if ((progname = strrchr(argv[0], '/')) == NULL)
+ if ((progname = __db_rpath(argv[0])) == NULL)
progname = argv[0];
else
++progname;
diff --git a/db/build_vxworks/db_verify/db_verify/Makefile.component b/db/build_vxworks/db_verify/db_verify/Makefile.component
deleted file mode 100644
index 2748647a6..000000000
--- a/db/build_vxworks/db_verify/db_verify/Makefile.component
+++ /dev/null
@@ -1,433 +0,0 @@
-# Component project makefile generated by the project manager
-#
-
-
-## core information
-
-
-CONFIGLETTE = compConfig.c
-TGT_DIR = $(WIND_BASE)/target
-EXTERNAL_BINARIES_DIR = $(PRJ_DIR)/extbin/$(BUILD_SPEC)
-COMPONENT_NAME = db_verify
-.PHONY: defaultTarget
-defaultTarget: $(COMPONENT_NAME).cm
-
-#
-# default definition for CPU and TOOL (needed by defs.project)
-#
-
-CPU = SIMSPARCSOLARIS
-TOOL = gnu
-
-
-## CPU and TOOL info for build specification 'PENTIUM2gnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.debug)
-CPU = PENTIUM2
-TOOL = gnu
-SYS_OBJ_DIR = $(WIND_BASE)/target/lib/obj$(CPU)$(TOOL)vx
-USER_OBJ_DIR = $(WIND_BASE)/target/user/objs/obj$(CPU)$(TOOL)
-PRJ_OBJS = db_verify.o \
- compConfig.o
-COMPONENT_OBJS = db_verify.o
-DEPENDENCY_FILES = db_verify.d \
- compConfig.d
-NUMBER_OF_COMPONENT_OBJS = $(words $(COMPONENT_OBJS))
-endif
-
-
-## CPU and TOOL info for build specification 'PENTIUM2gnu.release'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.release)
-CPU = PENTIUM2
-TOOL = gnu
-SYS_OBJ_DIR = $(WIND_BASE)/target/lib/obj$(CPU)$(TOOL)vx
-USER_OBJ_DIR = $(WIND_BASE)/target/user/objs/obj$(CPU)$(TOOL)
-PRJ_OBJS = db_verify.o \
- compConfig.o
-COMPONENT_OBJS = db_verify.o
-DEPENDENCY_FILES = db_verify.d \
- compConfig.d
-NUMBER_OF_COMPONENT_OBJS = $(words $(COMPONENT_OBJS))
-endif
-
-
-## CPU and TOOL info for build specification 'PENTIUMgnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUMgnu.debug)
-CPU = PENTIUM
-TOOL = gnu
-SYS_OBJ_DIR = $(WIND_BASE)/target/lib/obj$(CPU)$(TOOL)vx
-USER_OBJ_DIR = $(WIND_BASE)/target/user/objs/obj$(CPU)$(TOOL)
-PRJ_OBJS = db_verify.o \
- compConfig.o
-COMPONENT_OBJS = db_verify.o
-DEPENDENCY_FILES = db_verify.d \
- compConfig.d
-NUMBER_OF_COMPONENT_OBJS = $(words $(COMPONENT_OBJS))
-endif
-
-
-## CPU and TOOL info for build specification 'SIMSPARCSOLARISgnu.debug'
-
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu.debug)
-CPU = SIMSPARCSOLARIS
-TOOL = gnu
-SYS_OBJ_DIR = $(WIND_BASE)/target/lib/obj$(CPU)$(TOOL)vx
-USER_OBJ_DIR = $(WIND_BASE)/target/user/objs/obj$(CPU)$(TOOL)
-PRJ_OBJS = db_verify.o \
- compConfig.o
-COMPONENT_OBJS = db_verify.o
-DEPENDENCY_FILES = db_verify.d \
- compConfig.d
-NUMBER_OF_COMPONENT_OBJS = $(words $(COMPONENT_OBJS))
-endif
-
-
-include $(TGT_DIR)/h/make/defs.project
-
-
-## build-configuration info for build specification 'PENTIUM2gnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.debug)
-
-## macros
-
-AR = arpentium
-AS = ccpentium
-CC = ccpentium
-CFLAGS = -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2
-CFLAGS_AS = -mcpu=pentiumpro -march=pentiumpro -ansi -g -nostdlib -fno-builtin -fno-defer-pop -P -x assembler-with-cpp -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2
-CPP = ccpentium -E -P
-CPPFILT = c++filtpentium --strip-underscores
-LD = ldpentium
-LDFLAGS = -X
-LDPARTIAL = ccpentium -B$(WIND_BASE)/host/$(WIND_HOST_TYPE)/lib/gcc-lib/ -nostdlib -r -Wl,-X
-LD_PARTIAL_FLAGS = -X -r
-NM = nmpentium -g
-OPTION_DEFINE_MACRO = -D
-OPTION_GENERATE_DEPENDENCY_FILE = -MD
-OPTION_INCLUDE_DIR = -I
-RELEASE = 0
-SIZE = sizepentium
-POST_BUILD_RULE =
-
-## end build-configuration info for build specification 'PENTIUM2gnu.debug'
-
-endif
-
-
-## build-configuration info for build specification 'PENTIUM2gnu.release'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.release)
-
-## macros
-
-AR = arpentium
-AS = ccpentium
-CC = ccpentium
-CFLAGS = -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2
-CFLAGS_AS = -mcpu=pentiumpro -march=pentiumpro -ansi -O2 -nostdlib -fno-builtin -fno-defer-pop -P -x assembler-with-cpp -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2
-CPP = ccpentium -E -P
-CPPFILT = c++filtpentium --strip-underscores
-LD = ldpentium
-LDFLAGS = -X
-LDPARTIAL = ccpentium -B$(WIND_BASE)/host/$(WIND_HOST_TYPE)/lib/gcc-lib/ -nostdlib -r -Wl,-X
-LD_PARTIAL_FLAGS = -X -r
-NM = nmpentium -g
-OPTION_DEFINE_MACRO = -D
-OPTION_GENERATE_DEPENDENCY_FILE = -MD
-OPTION_INCLUDE_DIR = -I
-RELEASE = 1
-SIZE = sizepentium
-POST_BUILD_RULE =
-
-## end build-configuration info for build specification 'PENTIUM2gnu.release'
-
-endif
-
-
-## build-configuration info for build specification 'PENTIUMgnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUMgnu.debug)
-
-## macros
-
-AR = arpentium
-AS = ccpentium
-CC = ccpentium
-CFLAGS = -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM
-CFLAGS_AS = -mcpu=pentium -march=pentium -ansi -g -nostdlib -fno-builtin -fno-defer-pop -P -x assembler-with-cpp -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM
-CPP = ccpentium -E -P
-CPPFILT = c++filtpentium --strip-underscores
-LD = ldpentium
-LDFLAGS = -X
-LDPARTIAL = ccpentium -B$(WIND_BASE)/host/$(WIND_HOST_TYPE)/lib/gcc-lib/ -nostdlib -r -Wl,-X
-LD_PARTIAL_FLAGS = -X -r
-NM = nmpentium -g
-OPTION_DEFINE_MACRO = -D
-OPTION_GENERATE_DEPENDENCY_FILE = -MD
-OPTION_INCLUDE_DIR = -I
-RELEASE = 0
-SIZE = sizepentium
-POST_BUILD_RULE =
-
-## end build-configuration info for build specification 'PENTIUMgnu.debug'
-
-endif
-
-
-## build-configuration info for build specification 'SIMSPARCSOLARISgnu.debug'
-
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu.debug)
-
-## macros
-
-AR = arsparc
-AS = ccsparc
-CC = ccsparc
-CFLAGS = -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -fno-builtin -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=SIMSPARCSOLARIS
-CFLAGS_AS = -ansi -g -fno-builtin -P -x assembler-with-cpp -Wall -I. -I$(WIND_BASE)/target/h -DCPU=SIMSPARCSOLARIS
-CPP = ccsparc -E -P
-CPPFILT = c++filtsparc --strip-underscores
-LD = ldsparc
-LDFLAGS = -T $(WIND_BASE)/target/config/solaris/linker-script
-LDPARTIAL = ccsparc -B$(WIND_BASE)/host/$(WIND_HOST_TYPE)/lib/gcc-lib/ -nostdlib -r -Wl,-X
-LD_PARTIAL_FLAGS = -nostdlib -r
-NM = nmsparc
-OPTION_DEFINE_MACRO = -D
-OPTION_GENERATE_DEPENDENCY_FILE = -MD
-OPTION_INCLUDE_DIR = -I
-RELEASE = 0
-SIZE = sizesparc
-POST_BUILD_RULE =
-
-## end build-configuration info for build specification 'SIMSPARCSOLARISgnu.debug'
-
-endif
-
-# override make definitions only below this line
-
-
-# override make definitions only above this line
-
-include $(TGT_DIR)/h/make/rules.project
-
-
-#
-# Dummy target to force external make
-#
-
-FORCE_EXTERNAL_MAKE:
-
-
-
-#
-# Custom makefile
-#
-
-include $(PRJ_DIR)/Makefile.custom
-
-
-## build rules for build specification 'PENTIUM2gnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.debug)
-
-%.o : $(PRJ_DIR)/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 -c $<
-
-%.d : $(PRJ_DIR)/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 $< > $@
-
-%.o : $(PRJ_DIR)/../%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 -c $<
-
-%.d : $(PRJ_DIR)/../%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 $< > $@
-
-
-## end build rules for build specification 'PENTIUM2gnu.debug'
-
-endif
-
-
-## build rules for build specification 'PENTIUM2gnu.release'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.release)
-
-%.o : $(PRJ_DIR)/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 -c $<
-
-%.d : $(PRJ_DIR)/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 $< > $@
-
-%.o : $(PRJ_DIR)/../%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 -c $<
-
-%.d : $(PRJ_DIR)/../%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM2 $< > $@
-
-
-## end build rules for build specification 'PENTIUM2gnu.release'
-
-endif
-
-
-## build rules for build specification 'PENTIUMgnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUMgnu.debug)
-
-%.o : $(PRJ_DIR)/%.c
- $(CC) -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM -c $<
-
-%.d : $(PRJ_DIR)/%.c
- ccpentium -E -P -M -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM $< > $@
-
-%.o : $(PRJ_DIR)/../%.c
- $(CC) -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM -c $<
-
-%.d : $(PRJ_DIR)/../%.c
- ccpentium -E -P -M -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=PENTIUM $< > $@
-
-
-## end build rules for build specification 'PENTIUMgnu.debug'
-
-endif
-
-
-## build rules for build specification 'SIMSPARCSOLARISgnu.debug'
-
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu.debug)
-
-%.o : $(PRJ_DIR)/%.c
- $(CC) -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -fno-builtin -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=SIMSPARCSOLARIS -c $<
-
-%.d : $(PRJ_DIR)/%.c
- ccsparc -E -P -M -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -fno-builtin -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=SIMSPARCSOLARIS $< > $@
-
-%.o : $(PRJ_DIR)/../%.c
- $(CC) -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -fno-builtin -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=SIMSPARCSOLARIS -c $<
-
-%.d : $(PRJ_DIR)/../%.c
- ccsparc -E -P -M -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -fno-builtin -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -I$(PRJ_DIR)/../../../include -I$(PRJ_DIR)/../../../include_auto -DCPU=SIMSPARCSOLARIS $< > $@
-
-
-## end build rules for build specification 'SIMSPARCSOLARISgnu.debug'
-
-endif
-
-#
-# Rule for configurable, binary component
-#
-# Downloadable component module build rules
-#
-db_verify.cm: $(PRJ_OBJS) mxrDoc.nm depend
-#
-# Partially link all db_verify modules together
-# including the configlette modules
-#
- $(LD) -r -o $@ $(PRJ_OBJS) $(CC_LIB)
-#
-# Generate _vxMain and _vxExit by munching
-#
- $(NM) $@ | $(MUNCH) > db_verify.c
- $(COMPILE_TRADITIONAL) db_verify_ctdt.c -o db_verify_ctdt.o
- $(LD) -r -o db_verify.tmp $@ db_verify_ctdt.o
- $(RM) $@
- $(MV) db_verify.tmp $@
-#
-# Adds entry point table section to db_verify component
-#
- $(PD_EPT_DDE_ADD) $@ $(PRJ_DIR)/$(PRJ_FILE) INDEX $(BUILD_SPEC)
-
-
-#
-# Partial link build rules
-# Partially link all db_verify modules together
-# If no source files, then generates dummy.c
-#
-
-ifeq ($(COMPONENT_OBJS),)
-dummy.c:
- $(CFG_GEN) $(PRJ_DIR)/$(PRJ_FILE) dummyCGen $(PRJ_TYPE)
-
-db_verify.pl: dummy.o mxrDoc.nm depend
- $(LD) -r -o $@ dummy.o
-else
-db_verify.pl: $(COMPONENT_OBJS) mxrDoc.nm depend
- $(LD) -r -o $@ $(COMPONENT_OBJS)
-endif
-
-#
-# nm file containing symbol information for all component objects
-#
-
-EXTERNAL_BINARIES_DIR_PATTERN_1 = $(subst \,\\,$(PRJ_DIR)/extbin/$(BUILD_SPEC)/)
-EXTERNAL_BINARIES_DIR_PATTERN = $(subst /,\/,$(EXTERNAL_BINARIES_DIR_PATTERN_1))
-
-mxrDoc.nm: mxrDoc.size $(COMPONENT_OBJS)
- $(RM) $@
-# if there are no object files, make a blank mxr doc
-ifeq ($(NUMBER_OF_COMPONENT_OBJS),0)
- @$(ECHO) "" >> $@
-else
-# make sure object file name is in mxrDoc.nm even if there
-# is only one object file
- $(ECHO) db_verify.o: >> $@
- $(NM) db_verify.o | sed -e "s|$(EXTERNAL_BINARIES_DIR_PATTERN)||g" >> $@
-endif
-
-#
-# size file containing size information for all component objects
-#
-mxrDoc.size: $(COMPONENT_OBJS) $(PRJ_DIR)/component.cdf
- $(RM) $@
-ifeq ($(NUMBER_OF_COMPONENT_OBJS),0)
- @$(ECHO) "" > $@
-else
- $(SIZE) db_verify.o | sed -e "s|$(EXTERNAL_BINARIES_DIR_PATTERN)||g" >> $@
-endif
-
-
-## user-defined rules for build specification 'PENTIUM2gnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.debug)
-
-## end user-defined rules for build specification 'PENTIUM2gnu.debug'
-
-endif
-
-
-## user-defined rules for build specification 'PENTIUM2gnu.release'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.release)
-
-## end user-defined rules for build specification 'PENTIUM2gnu.release'
-
-endif
-
-
-## user-defined rules for build specification 'PENTIUMgnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUMgnu.debug)
-
-## end user-defined rules for build specification 'PENTIUMgnu.debug'
-
-endif
-
-
-## user-defined rules for build specification 'SIMSPARCSOLARISgnu.debug'
-
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu.debug)
-
-## end user-defined rules for build specification 'SIMSPARCSOLARISgnu.debug'
-
-endif
-
-
-#
-# Recursive clean
-#
-
-rclean : clean
-
diff --git a/db/build_vxworks/dbdemo/dbdemo.c b/db/build_vxworks/dbdemo/dbdemo.c
index 4424b24d6..c60cf41af 100644
--- a/db/build_vxworks/dbdemo/dbdemo.c
+++ b/db/build_vxworks/dbdemo/dbdemo.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: ex_access.c,v 12.3 2006/08/24 14:45:41 bostic Exp $
+ * $Id: ex_access.c,v 12.6 2007/05/17 15:15:12 bostic Exp $
*/
#include <sys/types.h>
@@ -144,7 +143,7 @@ dbdemo_main(argc, argv)
memset(&data, 0, sizeof(data));
/* Walk through the database and print out the key/data pairs. */
- while ((ret = dbcp->c_get(dbcp, &key, &data, DB_NEXT)) == 0)
+ while ((ret = dbcp->get(dbcp, &key, &data, DB_NEXT)) == 0)
printf("%.*s : %.*s\n",
(int)key.size, (char *)key.data,
(int)data.size, (char *)data.data);
@@ -154,7 +153,7 @@ dbdemo_main(argc, argv)
}
/* Close everything down. */
- if ((ret = dbcp->c_close(dbcp)) != 0) {
+ if ((ret = dbcp->close(dbcp)) != 0) {
dbp->err(dbp, ret, "DBcursor->close");
goto err1;
}
@@ -165,7 +164,7 @@ dbdemo_main(argc, argv)
}
return (EXIT_SUCCESS);
-err2: (void)dbcp->c_close(dbcp);
+err2: (void)dbcp->close(dbcp);
err1: (void)dbp->close(dbp, 0);
return (EXIT_FAILURE);
}
diff --git a/db/build_vxworks/demo/DBdemo.wpj b/db/build_vxworks/demo/DBdemo.wpj
deleted file mode 100755
index c78c0a7c6..000000000
--- a/db/build_vxworks/demo/DBdemo.wpj
+++ /dev/null
@@ -1,162 +0,0 @@
-Document file - DO NOT EDIT
-
-<BEGIN> BUILD_PENTIUMgnu_BUILDRULE
-DBdemo.out
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_AR
-ar386
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_ARCHIVE
-$(PRJ_DIR)/PENTIUMgnu/DBdemo.a
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_AS
-cc386
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_CC
-cc386
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_CFLAGS
--g \
- -mpentium \
- -ansi \
- -nostdinc \
- -DRW_MULTI_THREAD \
- -D_REENTRANT \
- -fvolatile \
- -nostdlib \
- -fno-builtin \
- -fno-defer-pop \
- -I. \
- -I$(PRJ_DIR)/.. \
- -I$(WIND_BASE)/target/h \
- -DCPU=PENTIUM
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_CFLAGS_AS
--g \
- -mpentium \
- -ansi \
- -nostdinc \
- -fvolatile \
- -nostdlib \
- -fno-builtin \
- -fno-defer-pop \
- -P \
- -x \
- assembler-with-cpp \
- -I. \
- -I$(WIND_BASE)/target/h \
- -DCPU=PENTIUM
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_CPP
-cc386 -E -P -xc
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_LD
-ld386
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_LDDEPS
-
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_LDFLAGS
--X -N
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_LD_PARTIAL_FLAGS
--X -r
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_NM
-nm386 -g
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_OPTION_DEFINE_MACRO
--D
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_OPTION_INCLUDE_DIR
--I
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_POST_BUILD_RULE
-
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_PRJ_LIBS
-
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_SIZE
-size386
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_RO_DEPEND_PATH
-{$(WIND_BASE)/target/h/} \
- {$(WIND_BASE)/target/src/} \
- {$(WIND_BASE)/target/config/}
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_TC
-::tc_PENTIUMgnu
-<END>
-
-<BEGIN> BUILD_RULE_DBdemo.out
-
-<END>
-
-<BEGIN> BUILD_RULE_archive
-
-<END>
-
-<BEGIN> BUILD_RULE_objects
-
-<END>
-
-<BEGIN> BUILD__CURRENT
-PENTIUMgnu
-<END>
-
-<BEGIN> BUILD__LIST
-PENTIUMgnu
-<END>
-
-<BEGIN> CORE_INFO_TYPE
-::prj_vxApp
-<END>
-
-<BEGIN> CORE_INFO_VERSION
-2.0
-<END>
-
-<BEGIN> FILE_$(PRJ_DIR)/dbdemo.c_dependDone
-TRUE
-<END>
-
-<BEGIN> FILE_$(PRJ_DIR)/dbdemo.c_dependencies
-$(PRJ_DIR)/../db.h
-<END>
-
-<BEGIN> FILE_$(PRJ_DIR)/dbdemo.c_objects
-dbdemo.o
-<END>
-
-<BEGIN> FILE_$(PRJ_DIR)/dbdemo.c_tool
-C/C++ compiler
-<END>
-
-<BEGIN> PROJECT_FILES
-$(PRJ_DIR)/dbdemo.c
-<END>
-
-<BEGIN> userComments
-DB Demo program
-<END>
-
diff --git a/db/build_vxworks/demo/README b/db/build_vxworks/demo/README
deleted file mode 100644
index 6ef111d35..000000000
--- a/db/build_vxworks/demo/README
+++ /dev/null
@@ -1,30 +0,0 @@
-
-This README describes the steps needed to run a demo example
-of BerkeleyDB.
-
-1. Read the pages in the Reference Guide that describe building
-BerkeleyDB on VxWorks:
- $(WIND_BASE)/target/src/BerkeleyDB/docs/ref/build_vxworks/intro.html
- $(WIND_BASE)/target/src/BerkeleyDB/docs/ref/build_vxworks/notes.html
- $(WIND_BASE)/target/src/BerkeleyDB/docs/ref/build_vxworks/faq.html
-
-2. Launch Tornado 2.0 and open up the BerkeleyDB project.
-3. Add the demo project to that workspace:
- $(WIND_BASE)/target/src/BerkeleyDB/build_vxworks/demo/DBdemo.wpj
-4. Build BerkeleyDB as described in the Reference Guide.
-5. Build the DBdemo project.
-6. Download BerkeleyDB onto the target.
-7. Download the Dbdemo project onto the target.
-8. Open a windsh to the target and run the demo:
- -> dbdemo "<pathname>/<dbname>"
-Where pathname is a pathname string pointing to a directory that
-the demo can create a database in. That directory should already
-exist. The dbname is the name for the database. For example:
--> dbdemo "/tmp/demo.db"
-
-9. The demo program will ask for input. You can type in any string.
-The program will add an entry to the database with that string as the
-key and the reverse of that string as the data item for that key.
-It will continue asking for input until you hit ^D or enter "quit".
-Upon doing so, the demo program will display all the keys you have
-entered as input and their data items.
diff --git a/db/build_vxworks/demo/dbdemo.c b/db/build_vxworks/demo/dbdemo.c
deleted file mode 100644
index e3da901c4..000000000
--- a/db/build_vxworks/demo/dbdemo.c
+++ /dev/null
@@ -1,130 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997-2001
- * Sleepycat Software. All rights reserved.
- *
- * Id: dbdemo.c,v 1.1 2001/09/11 15:51:16 sue Exp
- */
-
-#include <sys/types.h>
-
-#include <stdlib.h>
-#include <string.h>
-
-#include <db.h>
-
-#include "stdio.h"
-#define ERROR_RETURN ERROR
-
-int dbdemo __P((char *));
-
-int
-dbdemo(database)
- char *database;
-{
- DB *dbp;
- DBC *dbcp;
- DBT key, data;
- u_int32_t len;
- int ret;
- char *p, *t, buf[1024], rbuf[1024];
- const char *progname = "dbdemo"; /* Program name. */
-
- /* Remove the previous database. */
- (void)remove(database);
-
- /* Create and initialize database object, open the database. */
- if ((ret = db_create(&dbp, NULL, 0)) != 0) {
- fprintf(stderr,
- "%s: db_create: %s\n", progname, db_strerror(ret));
- return (ERROR_RETURN);
- }
- dbp->set_errfile(dbp, stderr);
- dbp->set_errpfx(dbp, progname);
- if ((ret = dbp->set_pagesize(dbp, 1024)) != 0) {
- dbp->err(dbp, ret, "set_pagesize");
- goto err1;
- }
- if ((ret = dbp->set_cachesize(dbp, 0, 32 * 1024, 0)) != 0) {
- dbp->err(dbp, ret, "set_cachesize");
- goto err1;
- }
- if ((ret =
- dbp->open(dbp, database, NULL, DB_BTREE, DB_CREATE, 0664)) != 0) {
- dbp->err(dbp, ret, "%s: open", database);
- goto err1;
- }
-
- /*
- * Insert records into the database, where the key is the user
- * input and the data is the user input in reverse order.
- */
- memset(&key, 0, sizeof(DBT));
- memset(&data, 0, sizeof(DBT));
- for (;;) {
- printf("input> ");
- fflush(stdout);
- if (fgets(buf, sizeof(buf), stdin) == NULL)
- break;
- if (strncmp(buf, "quit", 4) == 0)
- break;
- if ((len = strlen(buf)) <= 1)
- continue;
- for (t = rbuf, p = buf + (len - 2); p >= buf;)
- *t++ = *p--;
- *t++ = '\0';
-
- key.data = buf;
- data.data = rbuf;
- data.size = key.size = len - 1;
-
- switch (ret =
- dbp->put(dbp, NULL, &key, &data, DB_NOOVERWRITE)) {
- case 0:
- break;
- default:
- dbp->err(dbp, ret, "DB->put");
- if (ret != DB_KEYEXIST)
- goto err1;
- break;
- }
- }
- printf("\n");
-
- /* Acquire a cursor for the database. */
- if ((ret = dbp->cursor(dbp, NULL, &dbcp, 0)) != 0) {
- dbp->err(dbp, ret, "DB->cursor");
- goto err1;
- }
-
- /* Initialize the key/data pair so the flags aren't set. */
- memset(&key, 0, sizeof(key));
- memset(&data, 0, sizeof(data));
-
- /* Walk through the database and print out the key/data pairs. */
- while ((ret = dbcp->c_get(dbcp, &key, &data, DB_NEXT)) == 0)
- printf("%.*s : %.*s\n",
- (int)key.size, (char *)key.data,
- (int)data.size, (char *)data.data);
- if (ret != DB_NOTFOUND) {
- dbp->err(dbp, ret, "DBcursor->get");
- goto err2;
- }
-
- /* Close everything down. */
- if ((ret = dbcp->c_close(dbcp)) != 0) {
- dbp->err(dbp, ret, "DBcursor->close");
- goto err1;
- }
- if ((ret = dbp->close(dbp, 0)) != 0) {
- fprintf(stderr,
- "%s: DB->close: %s\n", progname, db_strerror(ret));
- return (ERROR_RETURN);
- }
- return (0);
-
-err2: (void)dbcp->c_close(dbcp);
-err1: (void)dbp->close(dbp, 0);
- return (ERROR_RETURN);
-}
diff --git a/db/build_vxworks/demo/demo/Makefile.component b/db/build_vxworks/demo/demo/Makefile.component
deleted file mode 100644
index ad7208a77..000000000
--- a/db/build_vxworks/demo/demo/Makefile.component
+++ /dev/null
@@ -1,433 +0,0 @@
-# Component project makefile generated by the project manager
-#
-
-
-## core information
-
-
-CONFIGLETTE = compConfig.c
-TGT_DIR = $(WIND_BASE)/target
-EXTERNAL_BINARIES_DIR = $(PRJ_DIR)/extbin/$(BUILD_SPEC)
-COMPONENT_NAME = demo
-.PHONY: defaultTarget
-defaultTarget: $(COMPONENT_NAME).cm
-
-#
-# default definition for CPU and TOOL (needed by defs.project)
-#
-
-CPU = SIMSPARCSOLARIS
-TOOL = gnu
-
-
-## CPU and TOOL info for build specification 'PENTIUM2gnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.debug)
-CPU = PENTIUM2
-TOOL = gnu
-SYS_OBJ_DIR = $(WIND_BASE)/target/lib/obj$(CPU)$(TOOL)vx
-USER_OBJ_DIR = $(WIND_BASE)/target/user/objs/obj$(CPU)$(TOOL)
-PRJ_OBJS = dbdemo.o \
- compConfig.o
-COMPONENT_OBJS = dbdemo.o
-DEPENDENCY_FILES = dbdemo.d \
- compConfig.d
-NUMBER_OF_COMPONENT_OBJS = $(words $(COMPONENT_OBJS))
-endif
-
-
-## CPU and TOOL info for build specification 'PENTIUM2gnu.release'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.release)
-CPU = PENTIUM2
-TOOL = gnu
-SYS_OBJ_DIR = $(WIND_BASE)/target/lib/obj$(CPU)$(TOOL)vx
-USER_OBJ_DIR = $(WIND_BASE)/target/user/objs/obj$(CPU)$(TOOL)
-PRJ_OBJS = dbdemo.o \
- compConfig.o
-COMPONENT_OBJS = dbdemo.o
-DEPENDENCY_FILES = dbdemo.d \
- compConfig.d
-NUMBER_OF_COMPONENT_OBJS = $(words $(COMPONENT_OBJS))
-endif
-
-
-## CPU and TOOL info for build specification 'PENTIUMgnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUMgnu.debug)
-CPU = PENTIUM
-TOOL = gnu
-SYS_OBJ_DIR = $(WIND_BASE)/target/lib/obj$(CPU)$(TOOL)vx
-USER_OBJ_DIR = $(WIND_BASE)/target/user/objs/obj$(CPU)$(TOOL)
-PRJ_OBJS = dbdemo.o \
- compConfig.o
-COMPONENT_OBJS = dbdemo.o
-DEPENDENCY_FILES = dbdemo.d \
- compConfig.d
-NUMBER_OF_COMPONENT_OBJS = $(words $(COMPONENT_OBJS))
-endif
-
-
-## CPU and TOOL info for build specification 'SIMSPARCSOLARISgnu.debug'
-
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu.debug)
-CPU = SIMSPARCSOLARIS
-TOOL = gnu
-SYS_OBJ_DIR = $(WIND_BASE)/target/lib/obj$(CPU)$(TOOL)vx
-USER_OBJ_DIR = $(WIND_BASE)/target/user/objs/obj$(CPU)$(TOOL)
-PRJ_OBJS = dbdemo.o \
- compConfig.o
-COMPONENT_OBJS = dbdemo.o
-DEPENDENCY_FILES = dbdemo.d \
- compConfig.d
-NUMBER_OF_COMPONENT_OBJS = $(words $(COMPONENT_OBJS))
-endif
-
-
-include $(TGT_DIR)/h/make/defs.project
-
-
-## build-configuration info for build specification 'PENTIUM2gnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.debug)
-
-## macros
-
-AR = arpentium
-AS = ccpentium
-CC = ccpentium
-CFLAGS = -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -DCPU=PENTIUM2
-CFLAGS_AS = -mcpu=pentiumpro -march=pentiumpro -ansi -g -nostdlib -fno-builtin -fno-defer-pop -P -x assembler-with-cpp -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2
-CPP = ccpentium -E -P
-CPPFILT = c++filtpentium --strip-underscores
-LD = ldpentium
-LDFLAGS = -X
-LDPARTIAL = ccpentium -B$(WIND_BASE)/host/$(WIND_HOST_TYPE)/lib/gcc-lib/ -nostdlib -r -Wl,-X
-LD_PARTIAL_FLAGS = -X -r
-NM = nmpentium -g
-OPTION_DEFINE_MACRO = -D
-OPTION_GENERATE_DEPENDENCY_FILE = -MD
-OPTION_INCLUDE_DIR = -I
-RELEASE = 0
-SIZE = sizepentium
-POST_BUILD_RULE =
-
-## end build-configuration info for build specification 'PENTIUM2gnu.debug'
-
-endif
-
-
-## build-configuration info for build specification 'PENTIUM2gnu.release'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.release)
-
-## macros
-
-AR = arpentium
-AS = ccpentium
-CC = ccpentium
-CFLAGS = -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -DCPU=PENTIUM2
-CFLAGS_AS = -mcpu=pentiumpro -march=pentiumpro -ansi -O2 -nostdlib -fno-builtin -fno-defer-pop -P -x assembler-with-cpp -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM2
-CPP = ccpentium -E -P
-CPPFILT = c++filtpentium --strip-underscores
-LD = ldpentium
-LDFLAGS = -X
-LDPARTIAL = ccpentium -B$(WIND_BASE)/host/$(WIND_HOST_TYPE)/lib/gcc-lib/ -nostdlib -r -Wl,-X
-LD_PARTIAL_FLAGS = -X -r
-NM = nmpentium -g
-OPTION_DEFINE_MACRO = -D
-OPTION_GENERATE_DEPENDENCY_FILE = -MD
-OPTION_INCLUDE_DIR = -I
-RELEASE = 1
-SIZE = sizepentium
-POST_BUILD_RULE =
-
-## end build-configuration info for build specification 'PENTIUM2gnu.release'
-
-endif
-
-
-## build-configuration info for build specification 'PENTIUMgnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUMgnu.debug)
-
-## macros
-
-AR = arpentium
-AS = ccpentium
-CC = ccpentium
-CFLAGS = -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -DCPU=PENTIUM
-CFLAGS_AS = -mcpu=pentium -march=pentium -ansi -g -nostdlib -fno-builtin -fno-defer-pop -P -x assembler-with-cpp -Wall -I. -I$(WIND_BASE)/target/h -DCPU=PENTIUM
-CPP = ccpentium -E -P
-CPPFILT = c++filtpentium --strip-underscores
-LD = ldpentium
-LDFLAGS = -X
-LDPARTIAL = ccpentium -B$(WIND_BASE)/host/$(WIND_HOST_TYPE)/lib/gcc-lib/ -nostdlib -r -Wl,-X
-LD_PARTIAL_FLAGS = -X -r
-NM = nmpentium -g
-OPTION_DEFINE_MACRO = -D
-OPTION_GENERATE_DEPENDENCY_FILE = -MD
-OPTION_INCLUDE_DIR = -I
-RELEASE = 0
-SIZE = sizepentium
-POST_BUILD_RULE =
-
-## end build-configuration info for build specification 'PENTIUMgnu.debug'
-
-endif
-
-
-## build-configuration info for build specification 'SIMSPARCSOLARISgnu.debug'
-
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu.debug)
-
-## macros
-
-AR = arsparc
-AS = ccsparc
-CC = ccsparc
-CFLAGS = -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -fno-builtin -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -DCPU=SIMSPARCSOLARIS
-CFLAGS_AS = -ansi -g -fno-builtin -P -x assembler-with-cpp -Wall -I. -I$(WIND_BASE)/target/h -DCPU=SIMSPARCSOLARIS
-CPP = ccsparc -E -P
-CPPFILT = c++filtsparc --strip-underscores
-LD = ldsparc
-LDFLAGS = -T $(WIND_BASE)/target/config/solaris/linker-script
-LDPARTIAL = ccsparc -B$(WIND_BASE)/host/$(WIND_HOST_TYPE)/lib/gcc-lib/ -nostdlib -r -Wl,-X
-LD_PARTIAL_FLAGS = -nostdlib -r
-NM = nmsparc
-OPTION_DEFINE_MACRO = -D
-OPTION_GENERATE_DEPENDENCY_FILE = -MD
-OPTION_INCLUDE_DIR = -I
-RELEASE = 0
-SIZE = sizesparc
-POST_BUILD_RULE =
-
-## end build-configuration info for build specification 'SIMSPARCSOLARISgnu.debug'
-
-endif
-
-# override make definitions only below this line
-
-
-# override make definitions only above this line
-
-include $(TGT_DIR)/h/make/rules.project
-
-
-#
-# Dummy target to force external make
-#
-
-FORCE_EXTERNAL_MAKE:
-
-
-
-#
-# Custom makefile
-#
-
-include $(PRJ_DIR)/Makefile.custom
-
-
-## build rules for build specification 'PENTIUM2gnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.debug)
-
-%.o : $(PRJ_DIR)/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -DCPU=PENTIUM2 -c $<
-
-%.d : $(PRJ_DIR)/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -DCPU=PENTIUM2 $< > $@
-
-%.o : $(PRJ_DIR)/../%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -DCPU=PENTIUM2 -c $<
-
-%.d : $(PRJ_DIR)/../%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -DCPU=PENTIUM2 $< > $@
-
-
-## end build rules for build specification 'PENTIUM2gnu.debug'
-
-endif
-
-
-## build rules for build specification 'PENTIUM2gnu.release'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.release)
-
-%.o : $(PRJ_DIR)/%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -DCPU=PENTIUM2 -c $<
-
-%.d : $(PRJ_DIR)/%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -DCPU=PENTIUM2 $< > $@
-
-%.o : $(PRJ_DIR)/../%.c
- $(CC) -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -DCPU=PENTIUM2 -c $<
-
-%.d : $(PRJ_DIR)/../%.c
- ccpentium -E -P -M -mcpu=pentiumpro -march=pentiumpro -ansi -DRW_MULTI_THREAD -D_REENTRANT -O2 -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -DCPU=PENTIUM2 $< > $@
-
-
-## end build rules for build specification 'PENTIUM2gnu.release'
-
-endif
-
-
-## build rules for build specification 'PENTIUMgnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUMgnu.debug)
-
-%.o : $(PRJ_DIR)/%.c
- $(CC) -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -DCPU=PENTIUM -c $<
-
-%.d : $(PRJ_DIR)/%.c
- ccpentium -E -P -M -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -DCPU=PENTIUM $< > $@
-
-%.o : $(PRJ_DIR)/../%.c
- $(CC) -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -DCPU=PENTIUM -c $<
-
-%.d : $(PRJ_DIR)/../%.c
- ccpentium -E -P -M -mcpu=pentium -march=pentium -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -nostdlib -fno-builtin -fno-defer-pop -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -DCPU=PENTIUM $< > $@
-
-
-## end build rules for build specification 'PENTIUMgnu.debug'
-
-endif
-
-
-## build rules for build specification 'SIMSPARCSOLARISgnu.debug'
-
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu.debug)
-
-%.o : $(PRJ_DIR)/%.c
- $(CC) -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -fno-builtin -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -DCPU=SIMSPARCSOLARIS -c $<
-
-%.d : $(PRJ_DIR)/%.c
- ccsparc -E -P -M -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -fno-builtin -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -DCPU=SIMSPARCSOLARIS $< > $@
-
-%.o : $(PRJ_DIR)/../%.c
- $(CC) -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -fno-builtin -MD -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -DCPU=SIMSPARCSOLARIS -c $<
-
-%.d : $(PRJ_DIR)/../%.c
- ccsparc -E -P -M -ansi -DRW_MULTI_THREAD -D_REENTRANT -g -fno-builtin -Wall -I. -I$(WIND_BASE)/target/h -I$(PRJ_DIR)/../.. -DCPU=SIMSPARCSOLARIS $< > $@
-
-
-## end build rules for build specification 'SIMSPARCSOLARISgnu.debug'
-
-endif
-
-#
-# Rule for configurable, binary component
-#
-# Downloadable component module build rules
-#
-demo.cm: $(PRJ_OBJS) mxrDoc.nm depend
-#
-# Partially link all demo modules together
-# including the configlette modules
-#
- $(LD) -r -o $@ $(PRJ_OBJS) $(CC_LIB)
-#
-# Generate _vxMain and _vxExit by munching
-#
- $(NM) $@ | $(MUNCH) > demo_ctdt.c
- $(COMPILE_TRADITIONAL) demo_ctdt.c -o demo_ctdt.o
- $(LD) -r -o demo.tmp $@ demo_ctdt.o
- $(RM) $@
- $(MV) demo.tmp $@
-#
-# Adds entry point table section to demo component
-#
- $(PD_EPT_DDE_ADD) $@ $(PRJ_DIR)/$(PRJ_FILE) INDEX $(BUILD_SPEC)
-
-
-#
-# Partial link build rules
-# Partially link all demo modules together
-# If no source files, then generates dummy.c
-#
-
-ifeq ($(COMPONENT_OBJS),)
-dummy.c:
- $(CFG_GEN) $(PRJ_DIR)/$(PRJ_FILE) dummyCGen $(PRJ_TYPE)
-
-demo.pl: dummy.o mxrDoc.nm depend
- $(LD) -r -o $@ dummy.o
-else
-demo.pl: $(COMPONENT_OBJS) mxrDoc.nm depend
- $(LD) -r -o $@ $(COMPONENT_OBJS)
-endif
-
-#
-# nm file containing symbol information for all component objects
-#
-
-EXTERNAL_BINARIES_DIR_PATTERN_1 = $(subst \,\\,$(PRJ_DIR)/extbin/$(BUILD_SPEC)/)
-EXTERNAL_BINARIES_DIR_PATTERN = $(subst /,\/,$(EXTERNAL_BINARIES_DIR_PATTERN_1))
-
-mxrDoc.nm: mxrDoc.size $(COMPONENT_OBJS)
- $(RM) $@
-# if there are no object files, make a blank mxr doc
-ifeq ($(NUMBER_OF_COMPONENT_OBJS),0)
- @$(ECHO) "" >> $@
-else
-# make sure object file name is in mxrDoc.nm even if there
-# is only one object file
- $(ECHO) dbdemo.o: >> $@
- $(NM) dbdemo.o | sed -e "s|$(EXTERNAL_BINARIES_DIR_PATTERN)||g" >> $@
-endif
-
-#
-# size file containing size information for all component objects
-#
-mxrDoc.size: $(COMPONENT_OBJS) $(PRJ_DIR)/component.cdf
- $(RM) $@
-ifeq ($(NUMBER_OF_COMPONENT_OBJS),0)
- @$(ECHO) "" > $@
-else
- $(SIZE) dbdemo.o | sed -e "s|$(EXTERNAL_BINARIES_DIR_PATTERN)||g" >> $@
-endif
-
-
-## user-defined rules for build specification 'PENTIUM2gnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.debug)
-
-## end user-defined rules for build specification 'PENTIUM2gnu.debug'
-
-endif
-
-
-## user-defined rules for build specification 'PENTIUM2gnu.release'
-
-ifeq ($(BUILD_SPEC),PENTIUM2gnu.release)
-
-## end user-defined rules for build specification 'PENTIUM2gnu.release'
-
-endif
-
-
-## user-defined rules for build specification 'PENTIUMgnu.debug'
-
-ifeq ($(BUILD_SPEC),PENTIUMgnu.debug)
-
-## end user-defined rules for build specification 'PENTIUMgnu.debug'
-
-endif
-
-
-## user-defined rules for build specification 'SIMSPARCSOLARISgnu.debug'
-
-ifeq ($(BUILD_SPEC),SIMSPARCSOLARISgnu.debug)
-
-## end user-defined rules for build specification 'SIMSPARCSOLARISgnu.debug'
-
-endif
-
-
-#
-# Recursive clean
-#
-
-rclean : clean
-
diff --git a/db/build_vxworks/demo/demo/Makefile.custom b/db/build_vxworks/demo/demo/Makefile.custom
deleted file mode 100644
index ca781f7b2..000000000
--- a/db/build_vxworks/demo/demo/Makefile.custom
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# Custom Makefile shell
-#
-# This file may be edited freely, since it will not be regenerated
-# by the project manager.
-#
-# Use this makefile to define rules to make external binaries
-# and deposit them in the $(EXTERNAL_BINARIES_DIR) directory.
-#
-# If you have specified external modules during your component
-# creation, you will find make rules already in place below.
-# You will likely have to edit these to suit your individual
-# build setup.
-#
-# You may wish to use the CPU, BUILD_SPEC or TOOL make variables in
-# your Makefile to support builds for different architectures. Use
-# the FORCE_EXTERNAL_MAKE phony target to ensure that your external
-# make always runs.
-#
-# The example below assumes that your custom makefile is in the
-# mySourceTree directory, and that the binary file it produces
-# is placed into the $(BUILD_SPEC) sub-directory.
-#
-# EXTERNAL_SOURCE_BASE = /folk/me/mySourceTree
-# EXTERNAL_MODULE = myLibrary.o
-# EXTERNAL_MAKE = make
-#
-# $(EXTERNAL_BINARIES_DIR)/$(EXTERNAL_MODULE) : FORCE_EXTERNAL_MAKE
-# $(EXTERNAL_MAKE) -C $(EXTERNAL_SOURCE_BASE) \
-# -f $(EXTERNAL_SOURCE_BASE)/Makefile \
-# CPU=$(CPU) BUILD_SPEC=$(BUILD_SPEC) $(@F)
-# $(CP) $(subst /,$(DIRCHAR),$(EXTERNAL_SOURCE_BASE)/$(BUILD_SPEC)/$(@F) $@)
-#
-# If you are not adding your external modules from the component wizard,
-# you will have to include them in your component yourself:
-#
-# From the GUI, you can do this with the Component's 'Add external module'
-# dialog.
-#
-# If you are using the command line, add the module(s) by editing the
-# MODULES line in component.cdf file, e.g.
-#
-# Component INCLUDE_MYCOMPONENT {
-#
-# MODULES foo.o goo.o \
-# myLibrary.o
-#
-
-
-# rules to build custom libraries
-
diff --git a/db/build_vxworks/demo/demo/component.cdf b/db/build_vxworks/demo/demo/component.cdf
deleted file mode 100644
index f927693ee..000000000
--- a/db/build_vxworks/demo/demo/component.cdf
+++ /dev/null
@@ -1,30 +0,0 @@
-/* component.cdf - dynamically updated configuration */
-
-/*
- * NOTE: you may edit this file to alter the configuration
- * But all non-configuration information, including comments,
- * will be lost upon rebuilding this project.
- */
-
-/* Component information */
-
-Component INCLUDE_DEMO {
- ENTRY_POINTS ALL_GLOBAL_SYMBOLS
- MODULES dbdemo.o
- NAME demo
- PREF_DOMAIN ANY
- _INIT_ORDER usrComponentsInit
-}
-
-/* EntryPoint information */
-
-/* Module information */
-
-Module dbdemo.o {
-
- NAME dbdemo.o
- SRC_PATH_NAME $PRJ_DIR/../dbdemo.c
-}
-
-/* Parameter information */
-
diff --git a/db/build_vxworks/demo/demo/component.wpj b/db/build_vxworks/demo/demo/component.wpj
deleted file mode 100644
index 01c459909..000000000
--- a/db/build_vxworks/demo/demo/component.wpj
+++ /dev/null
@@ -1,607 +0,0 @@
-Document file - DO NOT EDIT
-
-<BEGIN> CORE_INFO_TYPE
-::prj_component
-<END>
-
-<BEGIN> CORE_INFO_VERSION
-AE1.1
-<END>
-
-<BEGIN> BUILD__CURRENT
-SIMSPARCSOLARISgnu.debug
-<END>
-
-<BEGIN> BUILD_PENTIUM2gnu.debug_CURRENT_TARGET
-default
-<END>
-
-<BEGIN> BUILD_PENTIUM2gnu.debug_DEFAULTFORCPU
-1
-<END>
-
-<BEGIN> BUILD_PENTIUM2gnu.debug_FILE_$(PRJ_DIR)/../dbdemo.c_infoTags
-toolMacro objects
-<END>
-
-<BEGIN> BUILD_PENTIUM2gnu.debug_FILE_$(PRJ_DIR)/../dbdemo.c_objects
-dbdemo.o
-<END>
-
-<BEGIN> BUILD_PENTIUM2gnu.debug_FILE_$(PRJ_DIR)/../dbdemo.c_toolMacro
-CC
-<END>
-
-<BEGIN> BUILD_PENTIUM2gnu.debug_FILE_$(PRJ_DIR)/../dbdemo.c_objects
-dbdemo.o
-<END>
-
-<BEGIN> BUILD_PENTIUM2gnu.debug_FILE_$(PRJ_DIR)/../dbdemo.c_toolMacro
-CC
-<END>
-
-<BEGIN> BUILD_PENTIUM2gnu.debug_FILE_$(PRJ_DIR)/compConfig.c_infoTags
-toolMacro objects
-<END>
-
-<BEGIN> BUILD_PENTIUM2gnu.debug_FILE_$(PRJ_DIR)/compConfig.c_objects
-compConfig.o
-<END>
-
-<BEGIN> BUILD_PENTIUM2gnu.debug_FILE_$(PRJ_DIR)/compConfig.c_toolMacro
-CC
-<END>
-
-<BEGIN> BUILD_PENTIUM2gnu.debug_MACRO_AR
-arpentium
-<END>
-
-<BEGIN> BUILD_PENTIUM2gnu.debug_MACRO_AS
-ccpentium
-<END>
-
-<BEGIN> BUILD_PENTIUM2gnu.debug_MACRO_CC
-ccpentium
-<END>
-
-<BEGIN> BUILD_PENTIUM2gnu.debug_MACRO_CFLAGS
--mcpu=pentiumpro \
- -march=pentiumpro \
- -ansi \
- -DRW_MULTI_THREAD \
- -D_REENTRANT \
- -g \
- -nostdlib \
- -fno-builtin \
- -fno-defer-pop \
- -MD \
- -Wall \
- -I. \
- -I$(WIND_BASE)/target/h \
- -I$(PRJ_DIR)/../.. \
- -DCPU=PENTIUM2
-<END>
-
-<BEGIN> BUILD_PENTIUM2gnu.debug_MACRO_CFLAGS_AS
--mcpu=pentiumpro \
- -march=pentiumpro \
- -ansi \
- -g \
- -nostdlib \
- -fno-builtin \
- -fno-defer-pop \
- -P \
- -x \
- assembler-with-cpp \
- -Wall \
- -I. \
- -I$(WIND_BASE)/target/h \
- -DCPU=PENTIUM2
-<END>
-
-<BEGIN> BUILD_PENTIUM2gnu.debug_MACRO_CPP
-ccpentium -E -P
-<END>
-
-<BEGIN> BUILD_PENTIUM2gnu.debug_MACRO_CPPFILT
-c++filtpentium --strip-underscores
-<END>
-
-<BEGIN> BUILD_PENTIUM2gnu.debug_MACRO_LD
-ldpentium
-<END>
-
-<BEGIN> BUILD_PENTIUM2gnu.debug_MACRO_LDFLAGS
--X
-<END>
-
-<BEGIN> BUILD_PENTIUM2gnu.debug_MACRO_LDPARTIAL
-ccpentium \
- -B$(WIND_BASE)/host/$(WIND_HOST_TYPE)/lib/gcc-lib/ \
- -nostdlib \
- -r \
- -Wl,-X
-<END>
-
-<BEGIN> BUILD_PENTIUM2gnu.debug_MACRO_LD_PARTIAL_FLAGS
--X -r
-<END>
-
-<BEGIN> BUILD_PENTIUM2gnu.debug_MACRO_NM
-nmpentium -g
-<END>
-
-<BEGIN> BUILD_PENTIUM2gnu.debug_MACRO_OPTION_DEFINE_MACRO
--D
-<END>
-
-<BEGIN> BUILD_PENTIUM2gnu.debug_MACRO_OPTION_GENERATE_DEPENDENCY_FILE
--MD
-<END>
-
-<BEGIN> BUILD_PENTIUM2gnu.debug_MACRO_OPTION_INCLUDE_DIR
--I
-<END>
-
-<BEGIN> BUILD_PENTIUM2gnu.debug_MACRO_RELEASE
-0
-<END>
-
-<BEGIN> BUILD_PENTIUM2gnu.debug_MACRO_SIZE
-sizepentium
-<END>
-
-<BEGIN> BUILD_PENTIUM2gnu.debug_RELEASE
-0
-<END>
-
-<BEGIN> BUILD_PENTIUM2gnu.debug_RO_DEPEND_PATH
-$(WIND_BASE)/target/h/
-<END>
-
-<BEGIN> BUILD_PENTIUM2gnu.debug_TC
-::tc_PENTIUM2gnu.debug
-<END>
-
-<BEGIN> BUILD_PENTIUM2gnu.release_DEFAULTFORCPU
-0
-<END>
-
-<BEGIN> BUILD_PENTIUM2gnu.release_FILE_$(PRJ_DIR)/../dbdemo.c_infoTags
-toolMacro objects
-<END>
-
-<BEGIN> BUILD_PENTIUM2gnu.release_FILE_$(PRJ_DIR)/../dbdemo.c_objects
-dbdemo.o
-<END>
-
-<BEGIN> BUILD_PENTIUM2gnu.release_FILE_$(PRJ_DIR)/../dbdemo.c_toolMacro
-CC
-<END>
-
-<BEGIN> BUILD_PENTIUM2gnu.release_FILE_$(PRJ_DIR)/compConfig.c_infoTags
-toolMacro objects
-<END>
-
-<BEGIN> BUILD_PENTIUM2gnu.release_FILE_$(PRJ_DIR)/compConfig.c_objects
-compConfig.o
-<END>
-
-<BEGIN> BUILD_PENTIUM2gnu.release_FILE_$(PRJ_DIR)/compConfig.c_toolMacro
-CC
-<END>
-
-<BEGIN> BUILD_PENTIUM2gnu.release_MACRO_AR
-arpentium
-<END>
-
-<BEGIN> BUILD_PENTIUM2gnu.release_MACRO_AS
-ccpentium
-<END>
-
-<BEGIN> BUILD_PENTIUM2gnu.release_MACRO_CC
-ccpentium
-<END>
-
-<BEGIN> BUILD_PENTIUM2gnu.release_MACRO_CFLAGS
--mcpu=pentiumpro \
- -march=pentiumpro \
- -ansi \
- -DRW_MULTI_THREAD \
- -D_REENTRANT \
- -O2 \
- -nostdlib \
- -fno-builtin \
- -fno-defer-pop \
- -MD \
- -Wall \
- -I. \
- -I$(WIND_BASE)/target/h \
- -I$(PRJ_DIR)/../.. \
- -DCPU=PENTIUM2
-<END>
-
-<BEGIN> BUILD_PENTIUM2gnu.release_MACRO_CFLAGS_AS
--mcpu=pentiumpro \
- -march=pentiumpro \
- -ansi \
- -O2 \
- -nostdlib \
- -fno-builtin \
- -fno-defer-pop \
- -P \
- -x \
- assembler-with-cpp \
- -Wall \
- -I. \
- -I$(WIND_BASE)/target/h \
- -DCPU=PENTIUM2
-<END>
-
-<BEGIN> BUILD_PENTIUM2gnu.release_MACRO_CPP
-ccpentium -E -P
-<END>
-
-<BEGIN> BUILD_PENTIUM2gnu.release_MACRO_CPPFILT
-c++filtpentium --strip-underscores
-<END>
-
-<BEGIN> BUILD_PENTIUM2gnu.release_MACRO_LD
-ldpentium
-<END>
-
-<BEGIN> BUILD_PENTIUM2gnu.release_MACRO_LDFLAGS
--X
-<END>
-
-<BEGIN> BUILD_PENTIUM2gnu.release_MACRO_LDPARTIAL
-ccpentium \
- -B$(WIND_BASE)/host/$(WIND_HOST_TYPE)/lib/gcc-lib/ \
- -nostdlib \
- -r \
- -Wl,-X
-<END>
-
-<BEGIN> BUILD_PENTIUM2gnu.release_MACRO_LD_PARTIAL_FLAGS
--X -r
-<END>
-
-<BEGIN> BUILD_PENTIUM2gnu.release_MACRO_NM
-nmpentium -g
-<END>
-
-<BEGIN> BUILD_PENTIUM2gnu.release_MACRO_OPTION_DEFINE_MACRO
--D
-<END>
-
-<BEGIN> BUILD_PENTIUM2gnu.release_MACRO_OPTION_GENERATE_DEPENDENCY_FILE
--MD
-<END>
-
-<BEGIN> BUILD_PENTIUM2gnu.release_MACRO_OPTION_INCLUDE_DIR
--I
-<END>
-
-<BEGIN> BUILD_PENTIUM2gnu.release_MACRO_RELEASE
-1
-<END>
-
-<BEGIN> BUILD_PENTIUM2gnu.release_MACRO_SIZE
-sizepentium
-<END>
-
-<BEGIN> BUILD_PENTIUM2gnu.release_RELEASE
-1
-<END>
-
-<BEGIN> BUILD_PENTIUM2gnu.release_RO_DEPEND_PATH
-$(WIND_BASE)/target/h/
-<END>
-
-<BEGIN> BUILD_PENTIUM2gnu.release_TC
-::tc_PENTIUM2gnu.release
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu.debug_DEFAULTFORCPU
-1
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu.debug_FILE_$(PRJ_DIR)/../dbdemo.c_infoTags
-toolMacro objects
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu.debug_FILE_$(PRJ_DIR)/../dbdemo.c_objects
-dbdemo.o
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu.debug_FILE_$(PRJ_DIR)/../dbdemo.c_toolMacro
-CC
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu.debug_FILE_$(PRJ_DIR)/compConfig.c_infoTags
-toolMacro objects
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu.debug_FILE_$(PRJ_DIR)/compConfig.c_objects
-compConfig.o
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu.debug_FILE_$(PRJ_DIR)/compConfig.c_toolMacro
-CC
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu.debug_MACRO_AR
-arpentium
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu.debug_MACRO_AS
-ccpentium
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu.debug_MACRO_CC
-ccpentium
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu.debug_MACRO_CFLAGS
--mcpu=pentium \
- -march=pentium \
- -ansi \
- -DRW_MULTI_THREAD \
- -D_REENTRANT \
- -g \
- -nostdlib \
- -fno-builtin \
- -fno-defer-pop \
- -MD \
- -Wall \
- -I. \
- -I$(WIND_BASE)/target/h \
- -I$(PRJ_DIR)/../.. \
- -DCPU=PENTIUM
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu.debug_MACRO_CFLAGS_AS
--mcpu=pentium \
- -march=pentium \
- -ansi \
- -g \
- -nostdlib \
- -fno-builtin \
- -fno-defer-pop \
- -P \
- -x \
- assembler-with-cpp \
- -Wall \
- -I. \
- -I$(WIND_BASE)/target/h \
- -DCPU=PENTIUM
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu.debug_MACRO_CPP
-ccpentium -E -P
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu.debug_MACRO_CPPFILT
-c++filtpentium --strip-underscores
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu.debug_MACRO_LD
-ldpentium
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu.debug_MACRO_LDFLAGS
--X
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu.debug_MACRO_LDPARTIAL
-ccpentium \
- -B$(WIND_BASE)/host/$(WIND_HOST_TYPE)/lib/gcc-lib/ \
- -nostdlib \
- -r \
- -Wl,-X
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu.debug_MACRO_LD_PARTIAL_FLAGS
--X -r
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu.debug_MACRO_NM
-nmpentium -g
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu.debug_MACRO_OPTION_DEFINE_MACRO
--D
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu.debug_MACRO_OPTION_GENERATE_DEPENDENCY_FILE
--MD
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu.debug_MACRO_OPTION_INCLUDE_DIR
--I
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu.debug_MACRO_RELEASE
-0
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu.debug_MACRO_SIZE
-sizepentium
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu.debug_RELEASE
-0
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu.debug_RO_DEPEND_PATH
-$(WIND_BASE)/target/h/
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu.debug_TC
-::tc_PENTIUMgnu.debug
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu.debug_CURRENT_TARGET
-default
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu.debug_DEFAULTFORCPU
-1
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu.debug_FILE_$(PRJ_DIR)/../dbdemo.c_infoTags
-toolMacro objects
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu.debug_FILE_$(PRJ_DIR)/../dbdemo.c_objects
-dbdemo.o
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu.debug_FILE_$(PRJ_DIR)/../dbdemo.c_toolMacro
-CC
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu.debug_FILE_$(PRJ_DIR)/compConfig.c_infoTags
-toolMacro objects
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu.debug_FILE_$(PRJ_DIR)/compConfig.c_objects
-compConfig.o
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu.debug_FILE_$(PRJ_DIR)/compConfig.c_toolMacro
-CC
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu.debug_MACRO_AR
-arsparc
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu.debug_MACRO_AS
-ccsparc
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu.debug_MACRO_CC
-ccsparc
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu.debug_MACRO_CFLAGS
--ansi \
- -DRW_MULTI_THREAD \
- -D_REENTRANT \
- -g \
- -fno-builtin \
- -MD \
- -Wall \
- -I. \
- -I$(WIND_BASE)/target/h \
- -I$(PRJ_DIR)/../.. \
- -DCPU=SIMSPARCSOLARIS
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu.debug_MACRO_CFLAGS_AS
--ansi \
- -g \
- -fno-builtin \
- -P \
- -x \
- assembler-with-cpp \
- -Wall \
- -I. \
- -I$(WIND_BASE)/target/h \
- -DCPU=SIMSPARCSOLARIS
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu.debug_MACRO_CPP
-ccsparc -E -P
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu.debug_MACRO_CPPFILT
-c++filtsparc --strip-underscores
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu.debug_MACRO_LD
-ldsparc
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu.debug_MACRO_LDFLAGS
--T $(WIND_BASE)/target/config/solaris/linker-script
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu.debug_MACRO_LDPARTIAL
-ccsparc \
- -B$(WIND_BASE)/host/$(WIND_HOST_TYPE)/lib/gcc-lib/ \
- -nostdlib \
- -r \
- -Wl,-X
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu.debug_MACRO_LD_PARTIAL_FLAGS
--nostdlib -r
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu.debug_MACRO_NM
-nmsparc
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu.debug_MACRO_OPTION_DEFINE_MACRO
--D
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu.debug_MACRO_OPTION_GENERATE_DEPENDENCY_FILE
--MD
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu.debug_MACRO_OPTION_INCLUDE_DIR
--I
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu.debug_MACRO_RELEASE
-0
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu.debug_MACRO_SIZE
-sizesparc
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu.debug_RELEASE
-0
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu.debug_RO_DEPEND_PATH
-$(WIND_BASE)/target/h/
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu.debug_TC
-::tc_SIMSPARCSOLARISgnu.debug
-<END>
-
-<BEGIN> BUILD__LIST
-PENTIUM2gnu.debug PENTIUM2gnu.release PENTIUMgnu.debug SIMSPARCSOLARISgnu.debug
-<END>
-
-<BEGIN> PROJECT_FILES
-$(PRJ_DIR)/../dbdemo.c \
- $(PRJ_DIR)/compConfig.c
-<END>
-
-<BEGIN> WCC__CDF_PATH
-$(PRJ_DIR)
-<END>
-
-<BEGIN> WCC__CURRENT
-PENTIUM2gnu.debug
-<END>
-
-<BEGIN> WCC__LIST
-PENTIUM2gnu.debug
-<END>
-
-<BEGIN> WCC__MXR_LIBS
-lib$(CPU)$(TOOL)vx.a
-<END>
-
-<BEGIN> WCC__OBJS_PATH
-$(WIND_BASE)/target/lib/obj$CPU$TOOLvx
-<END>
-
diff --git a/db/build_vxworks/ex_access/ex_access.wpj b/db/build_vxworks/ex_access/ex_access.wpj
deleted file mode 100644
index bbbad47a2..000000000
--- a/db/build_vxworks/ex_access/ex_access.wpj
+++ /dev/null
@@ -1,244 +0,0 @@
-Document file - DO NOT EDIT
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_AR
-ar386
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_ARCHIVE
-$(PRJ_DIR)/PENTIUMgnu/ex_access.a
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_AS
-cc386
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_CC
-cc386
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_CFLAGS
--g \
- -mpentium \
- -ansi \
- -nostdinc \
- -DRW_MULTI_THREAD \
- -D_REENTRANT \
- -fvolatile \
- -nostdlib \
- -fno-builtin \
- -fno-defer-pop \
- -I. \
- -I$(WIND_BASE)/target/h \
- -DCPU=PENTIUM \
- -I/export/home/db/build_vxworks
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_CFLAGS_AS
--g \
- -mpentium \
- -ansi \
- -nostdinc \
- -fvolatile \
- -nostdlib \
- -fno-builtin \
- -fno-defer-pop \
- -P \
- -x \
- assembler-with-cpp \
- -I. \
- -I$(WIND_BASE)/target/h \
- -DCPU=PENTIUM
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_CPP
-cc386 -E -P -xc
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_LD
-ld386
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_LDFLAGS
--X -N
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_LD_PARTIAL_FLAGS
--X -r
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_NM
-nm386 -g
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_OPTION_DEFINE_MACRO
--D
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_OPTION_INCLUDE_DIR
--I
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_SIZE
-size386
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_RO_DEPEND_PATH
-{$(WIND_BASE)/target/h/} \
- {$(WIND_BASE)/target/src/} \
- {$(WIND_BASE)/target/config/}
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_TC
-::tc_PENTIUMgnu
-<END>
-
-<BEGIN> BUILD_RULE_archive
-
-<END>
-
-<BEGIN> BUILD_RULE_ex_access.out
-
-<END>
-
-<BEGIN> BUILD_RULE_objects
-
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_BUILDRULE
-ex_access.out
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_AR
-arsimso
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_ARCHIVE
-$(PRJ_DIR)/SIMSPARCSOLARISgnu/ex_access.a
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_AS
-ccsimso
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_CC
-ccsimso
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_CFLAGS
--g \
- -ansi \
- -nostdinc \
- -DRW_MULTI_THREAD \
- -D_REENTRANT \
- -fvolatile \
- -fno-builtin \
- -I/export/home/db/build_vxworks \
- -I. \
- -I$(WIND_BASE)/target/h \
- -DCPU=SIMSPARCSOLARIS
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_CFLAGS_AS
--g \
- -ansi \
- -nostdinc \
- -fvolatile \
- -fno-builtin \
- -P \
- -x \
- assembler-with-cpp \
- -I. \
- -I$(WIND_BASE)/target/h \
- -DCPU=SIMSPARCSOLARIS
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_CPP
-ccsimso -E -P -xc
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_LD
-ccsimso
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_LDFLAGS
--N
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_LD_PARTIAL_FLAGS
--nostdlib -r
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_NM
-nmsimso
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_OPTION_DEFINE_MACRO
--D
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_OPTION_INCLUDE_DIR
--I
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_POST_BUILD_RULE
-
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_PRJ_LIBS
-
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_SIZE
-sizesimso
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_RO_DEPEND_PATH
-{$(WIND_BASE)/target/h/} \
- {$(WIND_BASE)/target/src/} \
- {$(WIND_BASE)/target/config/}
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_TC
-::tc_SIMSPARCSOLARISgnu
-<END>
-
-<BEGIN> BUILD__CURRENT
-PENTIUMgnu
-<END>
-
-<BEGIN> BUILD__LIST
-SIMSPARCSOLARISgnu PENTIUMgnu
-<END>
-
-<BEGIN> CORE_INFO_TYPE
-::prj_vxApp
-<END>
-
-<BEGIN> CORE_INFO_VERSION
-2.0
-<END>
-
-<BEGIN> FILE_/export/home/db/examples_c/ex_access.c_dependDone
-TRUE
-<END>
-
-<BEGIN> FILE_/export/home/db/examples_c/ex_access.c_dependencies
-/export/home/db/build_vxworks/db_config.h /export/home/db/build_vxworks/db.h
-<END>
-
-<BEGIN> FILE_/export/home/db/examples_c/ex_access.c_objects
-ex_access.o
-<END>
-
-<BEGIN> FILE_/export/home/db/examples_c/ex_access.c_tool
-C/C++ compiler
-<END>
-
-<BEGIN> PROJECT_FILES
-/export/home/db/examples_c/ex_access.c
-<END>
-
-<BEGIN> userComments
-ex_access
-<END>
-
diff --git a/db/build_vxworks/ex_btrec/ex_btrec.wpj b/db/build_vxworks/ex_btrec/ex_btrec.wpj
deleted file mode 100644
index 801ca6808..000000000
--- a/db/build_vxworks/ex_btrec/ex_btrec.wpj
+++ /dev/null
@@ -1,250 +0,0 @@
-Document file - DO NOT EDIT
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_AR
-ar386
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_ARCHIVE
-$(PRJ_DIR)/PENTIUMgnu/ex_btrec.a
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_AS
-cc386
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_CC
-cc386
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_CFLAGS
--g \
- -mpentium \
- -ansi \
- -nostdinc \
- -DRW_MULTI_THREAD \
- -D_REENTRANT \
- -fvolatile \
- -nostdlib \
- -fno-builtin \
- -fno-defer-pop \
- -I. \
- -I$(WIND_BASE)/target/h \
- -DCPU=PENTIUM \
- -I/export/home/db/build_vxworks
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_CFLAGS_AS
--g \
- -mpentium \
- -ansi \
- -nostdinc \
- -fvolatile \
- -nostdlib \
- -fno-builtin \
- -fno-defer-pop \
- -P \
- -x \
- assembler-with-cpp \
- -I. \
- -I$(WIND_BASE)/target/h \
- -DCPU=PENTIUM
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_CPP
-cc386 -E -P -xc
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_LD
-ld386
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_LDFLAGS
--X -N
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_LD_PARTIAL_FLAGS
--X -r
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_NM
-nm386 -g
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_OPTION_DEFINE_MACRO
--D
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_OPTION_INCLUDE_DIR
--I
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_SIZE
-size386
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_RO_DEPEND_PATH
-{$(WIND_BASE)/target/h/} \
- {$(WIND_BASE)/target/src/} \
- {$(WIND_BASE)/target/config/}
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_TC
-::tc_PENTIUMgnu
-<END>
-
-<BEGIN> BUILD_RULE_archive
-
-<END>
-
-<BEGIN> BUILD_RULE_ex_btrec.out
-
-<END>
-
-<BEGIN> BUILD_RULE_objects
-
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_BUILDRULE
-ex_btrec.out
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_AR
-arsimso
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_ARCHIVE
-$(PRJ_DIR)/SIMSPARCSOLARISgnu/ex_btrec.a
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_AS
-ccsimso
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_CC
-ccsimso
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_CFLAGS
--g \
- -ansi \
- -nostdinc \
- -DRW_MULTI_THREAD \
- -D_REENTRANT \
- -fvolatile \
- -fno-builtin \
- -I/export/home/db/build_vxworks \
- -I/export/home/db/build_vxworks \
- -I/export/home/db/include \
- -I. \
- -I$(WIND_BASE)/target/h \
- -DCPU=SIMSPARCSOLARIS
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_CFLAGS_AS
--g \
- -ansi \
- -nostdinc \
- -fvolatile \
- -fno-builtin \
- -P \
- -x \
- assembler-with-cpp \
- -I. \
- -I$(WIND_BASE)/target/h \
- -DCPU=SIMSPARCSOLARIS
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_CPP
-ccsimso -E -P -xc
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_LD
-ccsimso
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_LDDEPS
-
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_LDFLAGS
--N
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_LD_PARTIAL_FLAGS
--nostdlib -r
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_NM
-nmsimso
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_OPTION_DEFINE_MACRO
--D
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_OPTION_INCLUDE_DIR
--I
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_POST_BUILD_RULE
-
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_PRJ_LIBS
-
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_SIZE
-sizesimso
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_RO_DEPEND_PATH
-{$(WIND_BASE)/target/h/} \
- {$(WIND_BASE)/target/src/} \
- {$(WIND_BASE)/target/config/}
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_TC
-::tc_SIMSPARCSOLARISgnu
-<END>
-
-<BEGIN> BUILD__CURRENT
-PENTIUMgnu
-<END>
-
-<BEGIN> BUILD__LIST
-SIMSPARCSOLARISgnu PENTIUMgnu
-<END>
-
-<BEGIN> CORE_INFO_TYPE
-::prj_vxApp
-<END>
-
-<BEGIN> CORE_INFO_VERSION
-2.0
-<END>
-
-<BEGIN> FILE_/export/home/db/examples_c/ex_btrec.c_dependDone
-TRUE
-<END>
-
-<BEGIN> FILE_/export/home/db/examples_c/ex_btrec.c_dependencies
-/export/home/db/build_vxworks/db_config.h /export/home/db/build_vxworks/db.h
-<END>
-
-<BEGIN> FILE_/export/home/db/examples_c/ex_btrec.c_objects
-ex_btrec.o
-<END>
-
-<BEGIN> FILE_/export/home/db/examples_c/ex_btrec.c_tool
-C/C++ compiler
-<END>
-
-<BEGIN> PROJECT_FILES
-/export/home/db/examples_c/ex_btrec.c
-<END>
-
-<BEGIN> userComments
-ex_btrec
-<END>
-
diff --git a/db/build_vxworks/ex_dbclient/ex_dbclient.wpj b/db/build_vxworks/ex_dbclient/ex_dbclient.wpj
deleted file mode 100644
index fdb721406..000000000
--- a/db/build_vxworks/ex_dbclient/ex_dbclient.wpj
+++ /dev/null
@@ -1,266 +0,0 @@
-Document file - DO NOT EDIT
-
-<BEGIN> BUILD_PENTIUMgnu_BUILDRULE
-ex_dbclient.out
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_AR
-ar386
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_ARCHIVE
-$(PRJ_DIR)/PENTIUMgnu/ex_dbclient.a
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_AS
-cc386
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_CC
-cc386
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_CFLAGS
--g \
- -mpentium \
- -ansi \
- -nostdinc \
- -DRW_MULTI_THREAD \
- -D_REENTRANT \
- -fvolatile \
- -nostdlib \
- -fno-builtin \
- -fno-defer-pop \
- -I/export/home/db/build_vxworks \
- -I/export/home/db/include \
- -I. \
- -I$(WIND_BASE)/target/h \
- -DCPU=PENTIUM
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_CFLAGS_AS
--g \
- -mpentium \
- -ansi \
- -nostdinc \
- -fvolatile \
- -nostdlib \
- -fno-builtin \
- -fno-defer-pop \
- -P \
- -x \
- assembler-with-cpp \
- -I. \
- -I$(WIND_BASE)/target/h \
- -DCPU=PENTIUM
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_CPP
-cc386 -E -P -xc
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_LD
-ld386
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_LDDEPS
-
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_LDFLAGS
--X -N
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_LD_PARTIAL_FLAGS
--X -r
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_NM
-nm386 -g
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_OPTION_DEFINE_MACRO
--D
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_OPTION_INCLUDE_DIR
--I
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_POST_BUILD_RULE
-
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_PRJ_LIBS
-
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_SIZE
-size386
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_RO_DEPEND_PATH
-{$(WIND_BASE)/target/h/} \
- {$(WIND_BASE)/target/src/} \
- {$(WIND_BASE)/target/config/}
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_TC
-::tc_PENTIUMgnu
-<END>
-
-<BEGIN> BUILD_RULE_archive
-
-<END>
-
-<BEGIN> BUILD_RULE_ex_dbclient.out
-
-<END>
-
-<BEGIN> BUILD_RULE_objects
-
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_BUILDRULE
-ex_dbclient.out
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_AR
-arsimso
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_ARCHIVE
-$(PRJ_DIR)/SIMSPARCSOLARISgnu/ex_dbclient.a
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_AS
-ccsimso
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_CC
-ccsimso
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_CFLAGS
--g \
- -ansi \
- -nostdinc \
- -DRW_MULTI_THREAD \
- -D_REENTRANT \
- -fvolatile \
- -fno-builtin \
- -I/export/home/db/build_vxworks \
- -I/export/home/db/include \
- -I. \
- -I$(WIND_BASE)/target/h \
- -DCPU=SIMSPARCSOLARIS
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_CFLAGS_AS
--g \
- -ansi \
- -nostdinc \
- -fvolatile \
- -fno-builtin \
- -P \
- -x \
- assembler-with-cpp \
- -I. \
- -I$(WIND_BASE)/target/h \
- -DCPU=SIMSPARCSOLARIS
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_CPP
-ccsimso -E -P -xc
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_LD
-ccsimso
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_LDDEPS
-
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_LDFLAGS
--N
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_LD_PARTIAL_FLAGS
--nostdlib -r
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_NM
-nmsimso
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_OPTION_DEFINE_MACRO
--D
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_OPTION_INCLUDE_DIR
--I
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_POST_BUILD_RULE
-
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_PRJ_LIBS
-
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_SIZE
-sizesimso
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_RO_DEPEND_PATH
-{$(WIND_BASE)/target/h/} \
- {$(WIND_BASE)/target/src/} \
- {$(WIND_BASE)/target/config/}
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_TC
-::tc_SIMSPARCSOLARISgnu
-<END>
-
-<BEGIN> BUILD__CURRENT
-PENTIUMgnu
-<END>
-
-<BEGIN> BUILD__LIST
-SIMSPARCSOLARISgnu PENTIUMgnu
-<END>
-
-<BEGIN> CORE_INFO_TYPE
-::prj_vxApp
-<END>
-
-<BEGIN> CORE_INFO_VERSION
-2.0
-<END>
-
-<BEGIN> FILE_/export/home/db/examples_c/ex_dbclient.c_dependDone
-TRUE
-<END>
-
-<BEGIN> FILE_/export/home/db/examples_c/ex_dbclient.c_dependencies
-/export/home/db/build_vxworks/db_config.h /export/home/db/build_vxworks/db.h
-<END>
-
-<BEGIN> FILE_/export/home/db/examples_c/ex_dbclient.c_objects
-ex_dbclient.o
-<END>
-
-<BEGIN> FILE_/export/home/db/examples_c/ex_dbclient.c_tool
-C/C++ compiler
-<END>
-
-<BEGIN> PROJECT_FILES
-/export/home/db/examples_c/ex_dbclient.c
-<END>
-
-<BEGIN> userComments
-RPC Client example
-<END>
-
diff --git a/db/build_vxworks/ex_env/ex_env.wpj b/db/build_vxworks/ex_env/ex_env.wpj
deleted file mode 100644
index 7229ffa13..000000000
--- a/db/build_vxworks/ex_env/ex_env.wpj
+++ /dev/null
@@ -1,248 +0,0 @@
-Document file - DO NOT EDIT
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_AR
-ar386
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_ARCHIVE
-$(PRJ_DIR)/PENTIUMgnu/ex_env.a
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_AS
-cc386
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_CC
-cc386
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_CFLAGS
--g \
- -mpentium \
- -ansi \
- -nostdinc \
- -DRW_MULTI_THREAD \
- -D_REENTRANT \
- -fvolatile \
- -nostdlib \
- -fno-builtin \
- -fno-defer-pop \
- -I. \
- -I$(WIND_BASE)/target/h \
- -DCPU=PENTIUM \
- -I/export/home/db/build_vxworks
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_CFLAGS_AS
--g \
- -mpentium \
- -ansi \
- -nostdinc \
- -fvolatile \
- -nostdlib \
- -fno-builtin \
- -fno-defer-pop \
- -P \
- -x \
- assembler-with-cpp \
- -I. \
- -I$(WIND_BASE)/target/h \
- -DCPU=PENTIUM
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_CPP
-cc386 -E -P -xc
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_LD
-ld386
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_LDFLAGS
--X -N
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_LD_PARTIAL_FLAGS
--X -r
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_NM
-nm386 -g
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_OPTION_DEFINE_MACRO
--D
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_OPTION_INCLUDE_DIR
--I
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_SIZE
-size386
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_RO_DEPEND_PATH
-{$(WIND_BASE)/target/h/} \
- {$(WIND_BASE)/target/src/} \
- {$(WIND_BASE)/target/config/}
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_TC
-::tc_PENTIUMgnu
-<END>
-
-<BEGIN> BUILD_RULE_archive
-
-<END>
-
-<BEGIN> BUILD_RULE_ex_env.out
-
-<END>
-
-<BEGIN> BUILD_RULE_objects
-
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_BUILDRULE
-ex_env.out
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_AR
-arsimso
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_ARCHIVE
-$(PRJ_DIR)/SIMSPARCSOLARISgnu/ex_env.a
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_AS
-ccsimso
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_CC
-ccsimso
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_CFLAGS
--g \
- -ansi \
- -nostdinc \
- -DRW_MULTI_THREAD \
- -D_REENTRANT \
- -fvolatile \
- -fno-builtin \
- -I/export/home/db/build_vxworks \
- -I. \
- -I$(WIND_BASE)/target/h \
- -DCPU=SIMSPARCSOLARIS
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_CFLAGS_AS
--g \
- -ansi \
- -nostdinc \
- -fvolatile \
- -fno-builtin \
- -P \
- -x \
- assembler-with-cpp \
- -I. \
- -I$(WIND_BASE)/target/h \
- -DCPU=SIMSPARCSOLARIS
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_CPP
-ccsimso -E -P -xc
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_LD
-ccsimso
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_LDDEPS
-
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_LDFLAGS
--N
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_LD_PARTIAL_FLAGS
--nostdlib -r
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_NM
-nmsimso
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_OPTION_DEFINE_MACRO
--D
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_OPTION_INCLUDE_DIR
--I
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_POST_BUILD_RULE
-
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_PRJ_LIBS
-
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_SIZE
-sizesimso
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_RO_DEPEND_PATH
-{$(WIND_BASE)/target/h/} \
- {$(WIND_BASE)/target/src/} \
- {$(WIND_BASE)/target/config/}
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_TC
-::tc_SIMSPARCSOLARISgnu
-<END>
-
-<BEGIN> BUILD__CURRENT
-PENTIUMgnu
-<END>
-
-<BEGIN> BUILD__LIST
-SIMSPARCSOLARISgnu PENTIUMgnu
-<END>
-
-<BEGIN> CORE_INFO_TYPE
-::prj_vxApp
-<END>
-
-<BEGIN> CORE_INFO_VERSION
-2.0
-<END>
-
-<BEGIN> FILE_/export/home/db/examples_c/ex_env.c_dependDone
-TRUE
-<END>
-
-<BEGIN> FILE_/export/home/db/examples_c/ex_env.c_dependencies
-/export/home/db/build_vxworks/db_config.h /export/home/db/build_vxworks/db.h
-<END>
-
-<BEGIN> FILE_/export/home/db/examples_c/ex_env.c_objects
-ex_env.o
-<END>
-
-<BEGIN> FILE_/export/home/db/examples_c/ex_env.c_tool
-C/C++ compiler
-<END>
-
-<BEGIN> PROJECT_FILES
-/export/home/db/examples_c/ex_env.c
-<END>
-
-<BEGIN> userComments
-ex_env
-<END>
-
diff --git a/db/build_vxworks/ex_mpool/ex_mpool.wpj b/db/build_vxworks/ex_mpool/ex_mpool.wpj
deleted file mode 100644
index 6dd9ed4db..000000000
--- a/db/build_vxworks/ex_mpool/ex_mpool.wpj
+++ /dev/null
@@ -1,248 +0,0 @@
-Document file - DO NOT EDIT
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_AR
-ar386
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_ARCHIVE
-$(PRJ_DIR)/PENTIUMgnu/ex_mpool.a
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_AS
-cc386
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_CC
-cc386
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_CFLAGS
--g \
- -mpentium \
- -ansi \
- -nostdinc \
- -DRW_MULTI_THREAD \
- -D_REENTRANT \
- -fvolatile \
- -nostdlib \
- -fno-builtin \
- -fno-defer-pop \
- -I. \
- -I$(WIND_BASE)/target/h \
- -DCPU=PENTIUM \
- -I/export/home/db/build_vxworks
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_CFLAGS_AS
--g \
- -mpentium \
- -ansi \
- -nostdinc \
- -fvolatile \
- -nostdlib \
- -fno-builtin \
- -fno-defer-pop \
- -P \
- -x \
- assembler-with-cpp \
- -I. \
- -I$(WIND_BASE)/target/h \
- -DCPU=PENTIUM
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_CPP
-cc386 -E -P -xc
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_LD
-ld386
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_LDFLAGS
--X -N
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_LD_PARTIAL_FLAGS
--X -r
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_NM
-nm386 -g
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_OPTION_DEFINE_MACRO
--D
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_OPTION_INCLUDE_DIR
--I
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_SIZE
-size386
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_RO_DEPEND_PATH
-{$(WIND_BASE)/target/h/} \
- {$(WIND_BASE)/target/src/} \
- {$(WIND_BASE)/target/config/}
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_TC
-::tc_PENTIUMgnu
-<END>
-
-<BEGIN> BUILD_RULE_archive
-
-<END>
-
-<BEGIN> BUILD_RULE_ex_mpool.out
-
-<END>
-
-<BEGIN> BUILD_RULE_objects
-
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_BUILDRULE
-ex_mpool.out
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_AR
-arsimso
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_ARCHIVE
-$(PRJ_DIR)/SIMSPARCSOLARISgnu/ex_mpool.a
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_AS
-ccsimso
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_CC
-ccsimso
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_CFLAGS
--g \
- -ansi \
- -nostdinc \
- -DRW_MULTI_THREAD \
- -D_REENTRANT \
- -fvolatile \
- -fno-builtin \
- -I/export/home/db/build_vxworks \
- -I. \
- -I$(WIND_BASE)/target/h \
- -DCPU=SIMSPARCSOLARIS
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_CFLAGS_AS
--g \
- -ansi \
- -nostdinc \
- -fvolatile \
- -fno-builtin \
- -P \
- -x \
- assembler-with-cpp \
- -I. \
- -I$(WIND_BASE)/target/h \
- -DCPU=SIMSPARCSOLARIS
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_CPP
-ccsimso -E -P -xc
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_LD
-ccsimso
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_LDDEPS
-
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_LDFLAGS
--N
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_LD_PARTIAL_FLAGS
--nostdlib -r
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_NM
-nmsimso
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_OPTION_DEFINE_MACRO
--D
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_OPTION_INCLUDE_DIR
--I
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_POST_BUILD_RULE
-
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_PRJ_LIBS
-
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_SIZE
-sizesimso
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_RO_DEPEND_PATH
-{$(WIND_BASE)/target/h/} \
- {$(WIND_BASE)/target/src/} \
- {$(WIND_BASE)/target/config/}
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_TC
-::tc_SIMSPARCSOLARISgnu
-<END>
-
-<BEGIN> BUILD__CURRENT
-PENTIUMgnu
-<END>
-
-<BEGIN> BUILD__LIST
-SIMSPARCSOLARISgnu PENTIUMgnu
-<END>
-
-<BEGIN> CORE_INFO_TYPE
-::prj_vxApp
-<END>
-
-<BEGIN> CORE_INFO_VERSION
-2.0
-<END>
-
-<BEGIN> FILE_/export/home/db/examples_c/ex_mpool.c_dependDone
-TRUE
-<END>
-
-<BEGIN> FILE_/export/home/db/examples_c/ex_mpool.c_dependencies
-/export/home/db/build_vxworks/db_config.h /export/home/db/build_vxworks/db.h
-<END>
-
-<BEGIN> FILE_/export/home/db/examples_c/ex_mpool.c_objects
-ex_mpool.o
-<END>
-
-<BEGIN> FILE_/export/home/db/examples_c/ex_mpool.c_tool
-C/C++ compiler
-<END>
-
-<BEGIN> PROJECT_FILES
-/export/home/db/examples_c/ex_mpool.c
-<END>
-
-<BEGIN> userComments
-ex_mpool
-<END>
-
diff --git a/db/build_vxworks/ex_tpcb/ex_tpcb.wpj b/db/build_vxworks/ex_tpcb/ex_tpcb.wpj
deleted file mode 100644
index 91de499dc..000000000
--- a/db/build_vxworks/ex_tpcb/ex_tpcb.wpj
+++ /dev/null
@@ -1,261 +0,0 @@
-Document file - DO NOT EDIT
-
-<BEGIN> BUILD_PENTIUMgnu_BUILDRULE
-ex_tpcb.out
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_AR
-ar386
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_ARCHIVE
-$(PRJ_DIR)/PENTIUMgnu/ex_tpcb.a
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_AS
-cc386
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_CC
-cc386
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_CFLAGS
--g \
- -mpentium \
- -ansi \
- -nostdinc \
- -DRW_MULTI_THREAD \
- -D_REENTRANT \
- -fvolatile \
- -nostdlib \
- -fno-builtin \
- -fno-defer-pop \
- -I. \
- -I$(WIND_BASE)/target/h \
- -DCPU=PENTIUM \
- -I/export/home/db/build_vxworks \
- -DVERY_TINY
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_CFLAGS_AS
--g \
- -mpentium \
- -ansi \
- -nostdinc \
- -fvolatile \
- -nostdlib \
- -fno-builtin \
- -fno-defer-pop \
- -P \
- -x \
- assembler-with-cpp \
- -I. \
- -I$(WIND_BASE)/target/h \
- -DCPU=PENTIUM
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_CPP
-cc386 -E -P -xc
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_LD
-ld386
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_LDFLAGS
--X -N
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_LD_PARTIAL_FLAGS
--X -r
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_NM
-nm386 -g
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_OPTION_DEFINE_MACRO
--D
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_OPTION_INCLUDE_DIR
--I
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_POST_BUILD_RULE
-
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_PRJ_LIBS
-
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_MACRO_SIZE
-size386
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_RO_DEPEND_PATH
-{$(WIND_BASE)/target/h/} \
- {$(WIND_BASE)/target/src/} \
- {$(WIND_BASE)/target/config/}
-<END>
-
-<BEGIN> BUILD_PENTIUMgnu_TC
-::tc_PENTIUMgnu
-<END>
-
-<BEGIN> BUILD_RULE_archive
-
-<END>
-
-<BEGIN> BUILD_RULE_ex_tpcb.out
-
-<END>
-
-<BEGIN> BUILD_RULE_objects
-
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_BUILDRULE
-ex_tpcb.out
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_AR
-arsimso
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_ARCHIVE
-$(PRJ_DIR)/SIMSPARCSOLARISgnu/ex_tpcb.a
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_AS
-ccsimso
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_CC
-ccsimso
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_CFLAGS
--g \
- -ansi \
- -nostdinc \
- -DRW_MULTI_THREAD \
- -D_REENTRANT \
- -fvolatile \
- -fno-builtin \
- -I/export/home/db/build_vxworks \
- -I. \
- -I$(WIND_BASE)/target/h \
- -DCPU=SIMSPARCSOLARIS
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_CFLAGS_AS
--g \
- -ansi \
- -nostdinc \
- -fvolatile \
- -fno-builtin \
- -P \
- -x \
- assembler-with-cpp \
- -I. \
- -I$(WIND_BASE)/target/h \
- -DCPU=SIMSPARCSOLARIS
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_CPP
-ccsimso -E -P -xc
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_LD
-ccsimso
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_LDDEPS
-
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_LDFLAGS
--N
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_LD_PARTIAL_FLAGS
--nostdlib -r
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_NM
-nmsimso
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_OPTION_DEFINE_MACRO
--D
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_OPTION_INCLUDE_DIR
--I
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_POST_BUILD_RULE
-
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_PRJ_LIBS
-
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_MACRO_SIZE
-sizesimso
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_RO_DEPEND_PATH
-{$(WIND_BASE)/target/h/} \
- {$(WIND_BASE)/target/src/} \
- {$(WIND_BASE)/target/config/}
-<END>
-
-<BEGIN> BUILD_SIMSPARCSOLARISgnu_TC
-::tc_SIMSPARCSOLARISgnu
-<END>
-
-<BEGIN> BUILD__CURRENT
-PENTIUMgnu
-<END>
-
-<BEGIN> BUILD__LIST
-SIMSPARCSOLARISgnu PENTIUMgnu
-<END>
-
-<BEGIN> CORE_INFO_TYPE
-::prj_vxApp
-<END>
-
-<BEGIN> CORE_INFO_VERSION
-2.0
-<END>
-
-<BEGIN> FILE_/export/home/db/examples_c/ex_tpcb.c_dependDone
-TRUE
-<END>
-
-<BEGIN> FILE_/export/home/db/examples_c/ex_tpcb.c_dependencies
-/export/home/db/build_vxworks/db_config.h /export/home/db/build_vxworks/db.h
-<END>
-
-<BEGIN> FILE_/export/home/db/examples_c/ex_tpcb.c_objects
-ex_tpcb.o
-<END>
-
-<BEGIN> FILE_/export/home/db/examples_c/ex_tpcb.c_tool
-C/C++ compiler
-<END>
-
-<BEGIN> PROJECT_FILES
-/export/home/db/examples_c/ex_tpcb.c
-<END>
-
-<BEGIN> userComments
-ex_tpcb
-<END>
-
diff --git a/db/build_win32/Berkeley_DB.dsw b/db/build_win32/Berkeley_DB.dsw
deleted file mode 100644
index bcce71e8a..000000000
--- a/db/build_win32/Berkeley_DB.dsw
+++ /dev/null
@@ -1,539 +0,0 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "build_all"=.\build_all.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name db_archive
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name db_checkpoint
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name db_deadlock
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name DB_DLL
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name db_dump
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name db_load
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name db_printlog
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name db_recover
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name db_stat
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name db_upgrade
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name db_verify
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name DB_Static
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name ex_access
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name ex_btrec
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name ex_env
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name ex_lock
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name ex_mpool
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name ex_tpcb
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name excxx_access
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name excxx_btrec
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name excxx_env
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name excxx_lock
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name excxx_mpool
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name excxx_tpcb
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name db_lib
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "db_archive"=.\db_archive.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name db_lib
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "db_checkpoint"=.\db_checkpoint.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name db_lib
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "db_deadlock"=.\db_deadlock.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name DB_DLL
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "db_dll"=.\db_dll.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "db_dump"=.\db_dump.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name db_lib
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "db_java"=.\db_java.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name DB_DLL
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "db_lib"=.\db_lib.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name db_dll
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name db_static
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "db_load"=.\db_load.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name db_lib
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "db_printlog"=.\db_printlog.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name db_lib
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "db_recover"=.\db_recover.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name db_lib
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "db_stat"=.\db_stat.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name db_lib
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "db_static"=.\db_static.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "db_tcl"=.\db_tcl.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name DB_DLL
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "db_test"=.\db_test.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name build_all
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name db_tcl
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "db_upgrade"=.\db_upgrade.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name db_lib
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "db_verify"=.\db_verify.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name db_lib
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "ex_access"=.\ex_access.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name db_lib
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "ex_btrec"=.\ex_btrec.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name db_lib
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "ex_env"=.\ex_env.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name db_lib
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "ex_lock"=.\ex_lock.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name db_lib
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "ex_mpool"=.\ex_mpool.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name db_lib
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "ex_repquote"=.\ex_repquote.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name db_lib
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "ex_tpcb"=.\ex_tpcb.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name db_lib
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "excxx_access"=.\excxx_access.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name db_lib
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "excxx_btrec"=.\excxx_btrec.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name db_lib
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "excxx_env"=.\excxx_env.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name db_lib
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "excxx_lock"=.\excxx_lock.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name db_lib
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "excxx_mpool"=.\excxx_mpool.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name db_lib
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "excxx_tpcb"=.\excxx_tpcb.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name db_lib
- End Project Dependency
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
diff --git a/db/build_win32/app_dsp.src b/db/build_win32/app_dsp.src
deleted file mode 100644
index e0d84eabe..000000000
--- a/db/build_win32/app_dsp.src
+++ /dev/null
@@ -1,145 +0,0 @@
-# Microsoft Developer Studio Project File - Name="@project_name@" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=@project_name@ - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "@project_name@.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "@project_name@.mak" CFG="@project_name@ - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "@project_name@ - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "@project_name@ - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "@project_name@ - Win32 Release Static" (based on "Win32 (x86) Console Application")
-!MESSAGE "@project_name@ - Win32 Debug Static" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "@project_name@ - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 Release/libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-
-!ELSEIF "$(CFG)" == "@project_name@ - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 Debug/libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@d.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-
-!ELSEIF "$(CFG)" == "@project_name@ - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Release_static/libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 Release_static/libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@s.lib /nologo /subsystem:console /machine:I386
-
-!ELSEIF "$(CFG)" == "@project_name@ - Win32 Debug Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Debug_static/libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no
-# ADD LINK32 Debug_static/libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "@project_name@ - Win32 Release"
-# Name "@project_name@ - Win32 Debug"
-# Name "@project_name@ - Win32 Release Static"
-# Name "@project_name@ - Win32 Debug Static"
-@SOURCE_FILES@
-# Begin Source File
-
-SOURCE=..\clib\getopt.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win32/build_all.dsp b/db/build_win32/build_all.dsp
deleted file mode 100644
index 7ae1f9bb0..000000000
--- a/db/build_win32/build_all.dsp
+++ /dev/null
@@ -1,96 +0,0 @@
-# Microsoft Developer Studio Project File - Name="build_all" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Generic Project" 0x010a
-
-CFG=build_all - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "build_all.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "build_all.mak" CFG="build_all - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "build_all - Win32 Release" (based on "Win32 (x86) External Target")
-!MESSAGE "build_all - Win32 Debug" (based on "Win32 (x86) External Target")
-!MESSAGE "build_all - Win32 Release Static" (based on "Win32 (x86) External Target")
-!MESSAGE "build_all - Win32 Debug Static" (based on "Win32 (x86) External Target")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-
-!IF "$(CFG)" == "build_all - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Cmd_Line "echo DB Release version built."
-# PROP Target_Dir ""
-
-!ELSEIF "$(CFG)" == "build_all - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Cmd_Line "echo DB Debug version built."
-# PROP Target_Dir ""
-
-!ELSEIF "$(CFG)" == "build_all - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release_static"
-# PROP BASE Intermediate_Dir "Release_static"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Cmd_Line "echo DB Release Static version built."
-# PROP Target_Dir ""
-
-!ELSEIF "$(CFG)" == "build_all - Win32 Debug Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug_static"
-# PROP BASE Intermediate_Dir "Debug_Static"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_Static"
-# PROP Cmd_Line "echo DB Debug Static version built."
-# PROP Target_Dir ""
-
-!ENDIF
-
-# Begin Target
-
-# Name "build_all - Win32 Release"
-# Name "build_all - Win32 Debug"
-# Name "build_all - Win32 Release Static"
-# Name "build_all - Win32 Debug Static"
-# End Target
-# End Project
diff --git a/db/build_win32/db.h b/db/build_win32/db.h
deleted file mode 100644
index 359dede88..000000000
--- a/db/build_win32/db.h
+++ /dev/null
@@ -1,2242 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_win32. */
-/*
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1996-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: db.in,v 11.463 2004/10/11 18:47:50 bostic Exp $
- *
- * db.h include file layout:
- * General.
- * Database Environment.
- * Locking subsystem.
- * Logging subsystem.
- * Shared buffer cache (mpool) subsystem.
- * Transaction subsystem.
- * Access methods.
- * Access method cursors.
- * Dbm/Ndbm, Hsearch historic interfaces.
- */
-
-#ifndef _DB_H_
-#define _DB_H_
-
-#ifndef __NO_SYSTEM_INCLUDES
-#include <sys/types.h>
-#include <stddef.h>
-#include <stdio.h>
-#endif
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-
-#undef __P
-#define __P(protos) protos
-
-/*
- * Berkeley DB version information.
- */
-#define DB_VERSION_MAJOR 4
-#define DB_VERSION_MINOR 3
-#define DB_VERSION_PATCH 27
-#define DB_VERSION_STRING "Sleepycat Software: Berkeley DB 4.3.27: (December 22, 2004)"
-
-/*
- * !!!
- * Berkeley DB uses specifically sized types. If they're not provided by
- * the system, typedef them here.
- *
- * We protect them against multiple inclusion using __BIT_TYPES_DEFINED__,
- * as does BIND and Kerberos, since we don't know for sure what #include
- * files the user is using.
- *
- * !!!
- * We also provide the standard u_int, u_long etc., if they're not provided
- * by the system.
- */
-#ifndef __BIT_TYPES_DEFINED__
-#define __BIT_TYPES_DEFINED__
-typedef unsigned char u_int8_t;
-typedef short int16_t;
-typedef unsigned short u_int16_t;
-typedef int int32_t;
-typedef unsigned int u_int32_t;
-typedef __int64 int64_t;
-typedef unsigned __int64 u_int64_t;
-#endif
-
-#ifndef _WINSOCKAPI_
-typedef unsigned char u_char;
-typedef unsigned short u_short;
-typedef unsigned int u_int;
-typedef unsigned long u_long;
-#endif
-#ifdef _WIN64
-typedef int64_t ssize_t;
-#else
-typedef int32_t ssize_t;
-#endif
-
-/*
- * uintmax_t --
- * Largest unsigned type, used to align structures in memory. We don't store
- * floating point types in structures, so integral types should be sufficient
- * (and we don't have to worry about systems that store floats in other than
- * power-of-2 numbers of bytes). Additionally this fixes compilers that rewrite
- * structure assignments and ANSI C memcpy calls to be in-line instructions
- * that happen to require alignment. Note: this alignment isn't sufficient for
- * mutexes, which depend on things like cache line alignment. Mutex alignment
- * is handled separately, in mutex.h.
- *
- * uintptr_t --
- * Unsigned type that's the same size as a pointer. There are places where
- * DB modifies pointers by discarding the bottom bits to guarantee alignment.
- * We can't use uintmax_t, it may be larger than the pointer, and compilers
- * get upset about that. So far we haven't run on any machine where there's
- * no unsigned type the same size as a pointer -- here's hoping.
- */
-typedef u_int64_t uintmax_t;
-#ifdef _WIN64
-typedef u_int64_t uintptr_t;
-#else
-typedef u_int32_t uintptr_t;
-#endif
-
-/*
- * Sequences are only available on machines with 64-bit integral types.
- */
-typedef int64_t db_seq_t;
-
-/* Basic types that are exported or quasi-exported. */
-typedef u_int32_t db_pgno_t; /* Page number type. */
-typedef u_int16_t db_indx_t; /* Page offset type. */
-#define DB_MAX_PAGES 0xffffffff /* >= # of pages in a file */
-
-typedef u_int32_t db_recno_t; /* Record number type. */
-#define DB_MAX_RECORDS 0xffffffff /* >= # of records in a tree */
-
-typedef u_int32_t db_timeout_t; /* Type of a timeout. */
-
-/*
- * Region offsets are the difference between a pointer in a region and the
- * region's base address. With private environments, both addresses are the
- * result of calling malloc, and we can't assume anything about what malloc
- * will return, so region offsets have to be able to hold differences between
- * arbitrary pointers.
- */
-typedef uintptr_t roff_t;
-
-/*
- * Forward structure declarations, so we can declare pointers and
- * applications can get type checking.
- */
-struct __db; typedef struct __db DB;
-struct __db_bt_stat; typedef struct __db_bt_stat DB_BTREE_STAT;
-struct __db_cipher; typedef struct __db_cipher DB_CIPHER;
-struct __db_dbt; typedef struct __db_dbt DBT;
-struct __db_env; typedef struct __db_env DB_ENV;
-struct __db_h_stat; typedef struct __db_h_stat DB_HASH_STAT;
-struct __db_ilock; typedef struct __db_ilock DB_LOCK_ILOCK;
-struct __db_lock_stat; typedef struct __db_lock_stat DB_LOCK_STAT;
-struct __db_lock_u; typedef struct __db_lock_u DB_LOCK;
-struct __db_lockreq; typedef struct __db_lockreq DB_LOCKREQ;
-struct __db_log_cursor; typedef struct __db_log_cursor DB_LOGC;
-struct __db_log_stat; typedef struct __db_log_stat DB_LOG_STAT;
-struct __db_lsn; typedef struct __db_lsn DB_LSN;
-struct __db_mpool; typedef struct __db_mpool DB_MPOOL;
-struct __db_mpool_fstat;typedef struct __db_mpool_fstat DB_MPOOL_FSTAT;
-struct __db_mpool_stat; typedef struct __db_mpool_stat DB_MPOOL_STAT;
-struct __db_mpoolfile; typedef struct __db_mpoolfile DB_MPOOLFILE;
-struct __db_preplist; typedef struct __db_preplist DB_PREPLIST;
-struct __db_qam_stat; typedef struct __db_qam_stat DB_QUEUE_STAT;
-struct __db_rep; typedef struct __db_rep DB_REP;
-struct __db_rep_stat; typedef struct __db_rep_stat DB_REP_STAT;
-struct __db_sequence; typedef struct __db_sequence DB_SEQUENCE;
-struct __db_seq_record; typedef struct __db_seq_record DB_SEQ_RECORD;
-struct __db_seq_stat; typedef struct __db_seq_stat DB_SEQUENCE_STAT;
-struct __db_txn; typedef struct __db_txn DB_TXN;
-struct __db_txn_active; typedef struct __db_txn_active DB_TXN_ACTIVE;
-struct __db_txn_stat; typedef struct __db_txn_stat DB_TXN_STAT;
-struct __db_txnmgr; typedef struct __db_txnmgr DB_TXNMGR;
-struct __dbc; typedef struct __dbc DBC;
-struct __dbc_internal; typedef struct __dbc_internal DBC_INTERNAL;
-struct __fh_t; typedef struct __fh_t DB_FH;
-struct __fname; typedef struct __fname FNAME;
-struct __key_range; typedef struct __key_range DB_KEY_RANGE;
-struct __mpoolfile; typedef struct __mpoolfile MPOOLFILE;
-struct __mutex_t; typedef struct __mutex_t DB_MUTEX;
-
-/* Key/data structure -- a Data-Base Thang. */
-struct __db_dbt {
- /*
- * data/size must be fields 1 and 2 for DB 1.85 compatibility.
- */
- void *data; /* Key/data */
- u_int32_t size; /* key/data length */
-
- u_int32_t ulen; /* RO: length of user buffer. */
- u_int32_t dlen; /* RO: get/put record length. */
- u_int32_t doff; /* RO: get/put record offset. */
-
-#define DB_DBT_APPMALLOC 0x001 /* Callback allocated memory. */
-#define DB_DBT_ISSET 0x002 /* Lower level calls set value. */
-#define DB_DBT_MALLOC 0x004 /* Return in malloc'd memory. */
-#define DB_DBT_PARTIAL 0x008 /* Partial put/get. */
-#define DB_DBT_REALLOC 0x010 /* Return in realloc'd memory. */
-#define DB_DBT_USERMEM 0x020 /* Return in user's memory. */
-#define DB_DBT_DUPOK 0x040 /* Insert if duplicate. */
- u_int32_t flags;
-};
-
-/*
- * Common flags --
- * Interfaces which use any of these common flags should never have
- * interface specific flags in this range.
- */
-#define DB_CREATE 0x0000001 /* Create file as necessary. */
-#define DB_CXX_NO_EXCEPTIONS 0x0000002 /* C++: return error values. */
-#define DB_FORCE 0x0000004 /* Force (anything). */
-#define DB_NOMMAP 0x0000008 /* Don't mmap underlying file. */
-#define DB_RDONLY 0x0000010 /* Read-only (O_RDONLY). */
-#define DB_RECOVER 0x0000020 /* Run normal recovery. */
-#define DB_THREAD 0x0000040 /* Applications are threaded. */
-#define DB_TRUNCATE 0x0000080 /* Discard existing DB (O_TRUNC). */
-#define DB_TXN_NOSYNC 0x0000100 /* Do not sync log on commit. */
-#define DB_TXN_NOT_DURABLE 0x0000200 /* Do not log changes. */
-#define DB_USE_ENVIRON 0x0000400 /* Use the environment. */
-#define DB_USE_ENVIRON_ROOT 0x0000800 /* Use the environment if root. */
-
-/*
- * Common flags --
- * Interfaces which use any of these common flags should never have
- * interface specific flags in this range.
- *
- * DB_AUTO_COMMIT:
- * DB_ENV->set_flags, DB->associate, DB->del, DB->put, DB->open,
- * DB->remove, DB->rename, DB->truncate
- * DB_DEGREE_2:
- * DB->cursor, DB->get, DB->join, DBcursor->c_get, DB_ENV->txn_begin
- * DB_DIRTY_READ:
- * DB->cursor, DB->get, DB->join, DB->open, DBcursor->c_get,
- * DB_ENV->txn_begin
- * DB_NOAUTO_COMMIT
- * DB->associate, DB->del, DB->put, DB->open,
- * DB->remove, DB->rename, DB->truncate
- *
- * !!!
- * The DB_DIRTY_READ and DB_DEGREE_2 bit masks can't be changed without
- * also changing the masks for the flags that can be OR'd into DB
- * access method and cursor operation values.
- */
-#define DB_AUTO_COMMIT 0x01000000/* Implied transaction. */
-#define DB_DEGREE_2 0x02000000/* Degree 2. */
-#define DB_DIRTY_READ 0x04000000/* Dirty Read. */
-#define DB_NO_AUTO_COMMIT 0x08000000/* Override env-wide AUTOCOMMIT. */
-
-/*
- * Flags private to db_env_create.
- */
-#define DB_RPCCLIENT 0x0000001 /* An RPC client environment. */
-
-/*
- * Flags private to db_create.
- */
-#define DB_REP_CREATE 0x0000001 /* Open of an internal rep database. */
-#define DB_XA_CREATE 0x0000002 /* Open in an XA environment. */
-
-/*
- * Flags private to DB_ENV->open.
- * Shared flags up to 0x0000800 */
-#define DB_INIT_CDB 0x0001000 /* Concurrent Access Methods. */
-#define DB_INIT_LOCK 0x0002000 /* Initialize locking. */
-#define DB_INIT_LOG 0x0004000 /* Initialize logging. */
-#define DB_INIT_MPOOL 0x0008000 /* Initialize mpool. */
-#define DB_INIT_REP 0x0010000 /* Initialize replication. */
-#define DB_INIT_TXN 0x0020000 /* Initialize transactions. */
-#define DB_JOINENV 0x0040000 /* Initialize all subsystems present. */
-#define DB_LOCKDOWN 0x0080000 /* Lock memory into physical core. */
-#define DB_PRIVATE 0x0100000 /* DB_ENV is process local. */
-#define DB_RECOVER_FATAL 0x0200000 /* Run catastrophic recovery. */
-#define DB_SYSTEM_MEM 0x0400000 /* Use system-backed memory. */
-
-/*
- * Flags private to DB->open.
- * Shared flags up to 0x0000800 */
-#define DB_EXCL 0x0001000 /* Exclusive open (O_EXCL). */
-#define DB_FCNTL_LOCKING 0x0002000 /* UNDOC: fcntl(2) locking. */
-#define DB_RDWRMASTER 0x0004000 /* UNDOC: allow subdb master open R/W */
-#define DB_WRITEOPEN 0x0008000 /* UNDOC: open with write lock. */
-
-/*
- * Flags private to DB_ENV->txn_begin.
- * Shared flags up to 0x0000800 */
-#define DB_TXN_NOWAIT 0x0001000 /* Do not wait for locks in this TXN. */
-#define DB_TXN_SYNC 0x0002000 /* Always sync log on commit. */
-
-/*
- * Flags private to DB_ENV->set_encrypt.
- */
-#define DB_ENCRYPT_AES 0x0000001 /* AES, assumes SHA1 checksum */
-
-/*
- * Flags private to DB_ENV->set_flags.
- * Shared flags up to 0x00000800 */
-#define DB_CDB_ALLDB 0x00001000/* Set CDB locking per environment. */
-#define DB_DIRECT_DB 0x00002000/* Don't buffer databases in the OS. */
-#define DB_DIRECT_LOG 0x00004000/* Don't buffer log files in the OS. */
-#define DB_DSYNC_LOG 0x00008000/* Set O_DSYNC on the log. */
-#define DB_LOG_AUTOREMOVE 0x00010000/* Automatically remove log files. */
-#define DB_LOG_INMEMORY 0x00020000/* Store logs in buffers in memory. */
-#define DB_NOLOCKING 0x00040000/* Set locking/mutex behavior. */
-#define DB_NOPANIC 0x00080000/* Set panic state per DB_ENV. */
-#define DB_OVERWRITE 0x00100000/* Overwrite unlinked region files. */
-#define DB_PANIC_ENVIRONMENT 0x00200000/* Set panic state per environment. */
-#define DB_REGION_INIT 0x00400000/* Page-fault regions on open. */
-#define DB_TIME_NOTGRANTED 0x00800000/* Return NOTGRANTED on timeout. */
-/* Shared flags at 0x01000000 */
-/* Shared flags at 0x02000000 */
-/* Shared flags at 0x04000000 */
-/* Shared flags at 0x08000000 */
-#define DB_TXN_WRITE_NOSYNC 0x10000000/* Write, don't sync, on txn commit. */
-#define DB_YIELDCPU 0x20000000/* Yield the CPU (a lot). */
-
-/*
- * Flags private to DB->set_feedback's callback.
- */
-#define DB_UPGRADE 0x0000001 /* Upgrading. */
-#define DB_VERIFY 0x0000002 /* Verifying. */
-
-/*
- * Flags private to DB_MPOOLFILE->open.
- * Shared flags up to 0x0000800 */
-#define DB_DIRECT 0x0001000 /* Don't buffer the file in the OS. */
-#define DB_DURABLE_UNKNOWN 0x0002000 /* internal: durability on open. */
-#define DB_EXTENT 0x0004000 /* internal: dealing with an extent. */
-#define DB_ODDFILESIZE 0x0008000 /* Truncate file to N * pgsize. */
-
-/*
- * Flags private to DB->set_flags.
- */
-#define DB_CHKSUM 0x0000001 /* Do checksumming */
-#define DB_DUP 0x0000002 /* Btree, Hash: duplicate keys. */
-#define DB_DUPSORT 0x0000004 /* Btree, Hash: duplicate keys. */
-#define DB_ENCRYPT 0x0000008 /* Btree, Hash: duplicate keys. */
-#define DB_INORDER 0x0000010 /* Queue: strict ordering on consume. */
-#define DB_RECNUM 0x0000020 /* Btree: record numbers. */
-#define DB_RENUMBER 0x0000040 /* Recno: renumber on insert/delete. */
-#define DB_REVSPLITOFF 0x0000080 /* Btree: turn off reverse splits. */
-#define DB_SNAPSHOT 0x0000100 /* Recno: snapshot the input. */
-
-/*
- * Flags private to the DB_ENV->stat_print, DB->stat and DB->stat_print methods.
- */
-#define DB_STAT_ALL 0x0000001 /* Print: Everything. */
-#define DB_STAT_CLEAR 0x0000002 /* Clear stat after returning values. */
-#define DB_STAT_LOCK_CONF 0x0000004 /* Print: Lock conflict matrix. */
-#define DB_STAT_LOCK_LOCKERS 0x0000008 /* Print: Lockers. */
-#define DB_STAT_LOCK_OBJECTS 0x0000010 /* Print: Lock objects. */
-#define DB_STAT_LOCK_PARAMS 0x0000020 /* Print: Lock parameters. */
-#define DB_STAT_MEMP_HASH 0x0000040 /* Print: Mpool hash buckets. */
-#define DB_STAT_SUBSYSTEM 0x0000080 /* Print: Subsystems too. */
-
-/*
- * Flags private to DB->join.
- */
-#define DB_JOIN_NOSORT 0x0000001 /* Don't try to optimize join. */
-
-/*
- * Flags private to DB->verify.
- */
-#define DB_AGGRESSIVE 0x0000001 /* Salvage whatever could be data.*/
-#define DB_NOORDERCHK 0x0000002 /* Skip sort order/hashing check. */
-#define DB_ORDERCHKONLY 0x0000004 /* Only perform the order check. */
-#define DB_PR_PAGE 0x0000008 /* Show page contents (-da). */
-#define DB_PR_RECOVERYTEST 0x0000010 /* Recovery test (-dr). */
-#define DB_PRINTABLE 0x0000020 /* Use printable format for salvage. */
-#define DB_SALVAGE 0x0000040 /* Salvage what looks like data. */
-#define DB_UNREF 0x0000080 /* Report unreferenced pages. */
-/*
- * !!!
- * These must not go over 0x8000, or they will collide with the flags
- * used by __bam_vrfy_subtree.
- */
-
-/*
- * Flags private to DB->set_rep_transport's send callback.
- */
-#define DB_REP_NOBUFFER 0x0000001 /* Do not buffer this message. */
-#define DB_REP_PERMANENT 0x0000002 /* Important--app. may want to flush. */
-
-/*******************************************************
- * Locking.
- *******************************************************/
-#define DB_LOCKVERSION 1
-
-#define DB_FILE_ID_LEN 20 /* Unique file ID length. */
-
-/*
- * Deadlock detector modes; used in the DB_ENV structure to configure the
- * locking subsystem.
- */
-#define DB_LOCK_NORUN 0
-#define DB_LOCK_DEFAULT 1 /* Default policy. */
-#define DB_LOCK_EXPIRE 2 /* Only expire locks, no detection. */
-#define DB_LOCK_MAXLOCKS 3 /* Select locker with max locks. */
-#define DB_LOCK_MAXWRITE 4 /* Select locker with max writelocks. */
-#define DB_LOCK_MINLOCKS 5 /* Select locker with min locks. */
-#define DB_LOCK_MINWRITE 6 /* Select locker with min writelocks. */
-#define DB_LOCK_OLDEST 7 /* Select oldest locker. */
-#define DB_LOCK_RANDOM 8 /* Select random locker. */
-#define DB_LOCK_YOUNGEST 9 /* Select youngest locker. */
-
-/* Flag values for lock_vec(), lock_get(). */
-#define DB_LOCK_ABORT 0x001 /* Internal: Lock during abort. */
-#define DB_LOCK_NOWAIT 0x002 /* Don't wait on unavailable lock. */
-#define DB_LOCK_RECORD 0x004 /* Internal: record lock. */
-#define DB_LOCK_REMOVE 0x008 /* Internal: flag object removed. */
-#define DB_LOCK_SET_TIMEOUT 0x010 /* Internal: set lock timeout. */
-#define DB_LOCK_SWITCH 0x020 /* Internal: switch existing lock. */
-#define DB_LOCK_UPGRADE 0x040 /* Internal: upgrade existing lock. */
-
-/*
- * Simple R/W lock modes and for multi-granularity intention locking.
- *
- * !!!
- * These values are NOT random, as they are used as an index into the lock
- * conflicts arrays, i.e., DB_LOCK_IWRITE must be == 3, and DB_LOCK_IREAD
- * must be == 4.
- */
-typedef enum {
- DB_LOCK_NG=0, /* Not granted. */
- DB_LOCK_READ=1, /* Shared/read. */
- DB_LOCK_WRITE=2, /* Exclusive/write. */
- DB_LOCK_WAIT=3, /* Wait for event */
- DB_LOCK_IWRITE=4, /* Intent exclusive/write. */
- DB_LOCK_IREAD=5, /* Intent to share/read. */
- DB_LOCK_IWR=6, /* Intent to read and write. */
- DB_LOCK_DIRTY=7, /* Dirty Read. */
- DB_LOCK_WWRITE=8 /* Was Written. */
-} db_lockmode_t;
-
-/*
- * Request types.
- */
-typedef enum {
- DB_LOCK_DUMP=0, /* Display held locks. */
- DB_LOCK_GET=1, /* Get the lock. */
- DB_LOCK_GET_TIMEOUT=2, /* Get lock with a timeout. */
- DB_LOCK_INHERIT=3, /* Pass locks to parent. */
- DB_LOCK_PUT=4, /* Release the lock. */
- DB_LOCK_PUT_ALL=5, /* Release locker's locks. */
- DB_LOCK_PUT_OBJ=6, /* Release locker's locks on obj. */
- DB_LOCK_PUT_READ=7, /* Release locker's read locks. */
- DB_LOCK_TIMEOUT=8, /* Force a txn to timeout. */
- DB_LOCK_TRADE=9, /* Trade locker ids on a lock. */
- DB_LOCK_UPGRADE_WRITE=10 /* Upgrade writes for dirty reads. */
-} db_lockop_t;
-
-/*
- * Status of a lock.
- */
-typedef enum {
- DB_LSTAT_ABORTED=1, /* Lock belongs to an aborted txn. */
- DB_LSTAT_EXPIRED=2, /* Lock has expired. */
- DB_LSTAT_FREE=3, /* Lock is unallocated. */
- DB_LSTAT_HELD=4, /* Lock is currently held. */
- DB_LSTAT_NOTEXIST=5, /* Object on which lock was waiting
- * was removed */
- DB_LSTAT_PENDING=6, /* Lock was waiting and has been
- * promoted; waiting for the owner
- * to run and upgrade it to held. */
- DB_LSTAT_WAITING=7 /* Lock is on the wait queue. */
-}db_status_t;
-
-/* Lock statistics structure. */
-struct __db_lock_stat {
- u_int32_t st_id; /* Last allocated locker ID. */
- u_int32_t st_cur_maxid; /* Current maximum unused ID. */
- u_int32_t st_maxlocks; /* Maximum number of locks in table. */
- u_int32_t st_maxlockers; /* Maximum num of lockers in table. */
- u_int32_t st_maxobjects; /* Maximum num of objects in table. */
- int st_nmodes; /* Number of lock modes. */
- u_int32_t st_nlocks; /* Current number of locks. */
- u_int32_t st_maxnlocks; /* Maximum number of locks so far. */
- u_int32_t st_nlockers; /* Current number of lockers. */
- u_int32_t st_maxnlockers; /* Maximum number of lockers so far. */
- u_int32_t st_nobjects; /* Current number of objects. */
- u_int32_t st_maxnobjects; /* Maximum number of objects so far. */
- u_int32_t st_nconflicts; /* Number of lock conflicts. */
- u_int32_t st_nrequests; /* Number of lock gets. */
- u_int32_t st_nreleases; /* Number of lock puts. */
- u_int32_t st_nnowaits; /* Number of requests that would have
- waited, but NOWAIT was set. */
- u_int32_t st_ndeadlocks; /* Number of lock deadlocks. */
- db_timeout_t st_locktimeout; /* Lock timeout. */
- u_int32_t st_nlocktimeouts; /* Number of lock timeouts. */
- db_timeout_t st_txntimeout; /* Transaction timeout. */
- u_int32_t st_ntxntimeouts; /* Number of transaction timeouts. */
- u_int32_t st_region_wait; /* Region lock granted after wait. */
- u_int32_t st_region_nowait; /* Region lock granted without wait. */
- roff_t st_regsize; /* Region size. */
-};
-
-/*
- * DB_LOCK_ILOCK --
- * Internal DB access method lock.
- */
-struct __db_ilock {
- db_pgno_t pgno; /* Page being locked. */
- u_int8_t fileid[DB_FILE_ID_LEN];/* File id. */
-#define DB_HANDLE_LOCK 1
-#define DB_RECORD_LOCK 2
-#define DB_PAGE_LOCK 3
- u_int32_t type; /* Type of lock. */
-};
-
-/*
- * DB_LOCK --
- * The structure is allocated by the caller and filled in during a
- * lock_get request (or a lock_vec/DB_LOCK_GET).
- */
-struct __db_lock_u {
- roff_t off; /* Offset of the lock in the region */
- u_int32_t ndx; /* Index of the object referenced by
- * this lock; used for locking. */
- u_int32_t gen; /* Generation number of this lock. */
- db_lockmode_t mode; /* mode of this lock. */
-};
-
-/* Lock request structure. */
-struct __db_lockreq {
- db_lockop_t op; /* Operation. */
- db_lockmode_t mode; /* Requested mode. */
- db_timeout_t timeout; /* Time to expire lock. */
- DBT *obj; /* Object being locked. */
- DB_LOCK lock; /* Lock returned. */
-};
-
-/*******************************************************
- * Logging.
- *******************************************************/
-#define DB_LOGVERSION 10 /* Current log version. */
-#define DB_LOGOLDVER 10 /* Oldest log version supported. */
-#define DB_LOGMAGIC 0x040988
-
-/* Flag values for DB_ENV->log_archive(). */
-#define DB_ARCH_ABS 0x001 /* Absolute pathnames. */
-#define DB_ARCH_DATA 0x002 /* Data files. */
-#define DB_ARCH_LOG 0x004 /* Log files. */
-#define DB_ARCH_REMOVE 0x008 /* Remove log files. */
-
-/* Flag values for DB_ENV->log_put(). */
-#define DB_FLUSH 0x001 /* Flush data to disk (public). */
-#define DB_LOG_CHKPNT 0x002 /* Flush supports a checkpoint */
-#define DB_LOG_COMMIT 0x004 /* Flush supports a commit */
-#define DB_LOG_NOCOPY 0x008 /* Don't copy data */
-#define DB_LOG_NOT_DURABLE 0x010 /* Do not log; keep in memory */
-#define DB_LOG_PERM 0x020 /* Flag record with REP_PERMANENT */
-#define DB_LOG_RESEND 0x040 /* Resent log record */
-#define DB_LOG_WRNOSYNC 0x080 /* Write, don't sync log_put */
-
-/*
- * A DB_LSN has two parts, a fileid which identifies a specific file, and an
- * offset within that file. The fileid is an unsigned 4-byte quantity that
- * uniquely identifies a file within the log directory -- currently a simple
- * counter inside the log. The offset is also an unsigned 4-byte value. The
- * log manager guarantees the offset is never more than 4 bytes by switching
- * to a new log file before the maximum length imposed by an unsigned 4-byte
- * offset is reached.
- */
-struct __db_lsn {
- u_int32_t file; /* File ID. */
- u_int32_t offset; /* File offset. */
-};
-
-/*
- * Application-specified log record types start at DB_user_BEGIN, and must not
- * equal or exceed DB_debug_FLAG.
- *
- * DB_debug_FLAG is the high-bit of the u_int32_t that specifies a log record
- * type. If the flag is set, it's a log record that was logged for debugging
- * purposes only, even if it reflects a database change -- the change was part
- * of a non-durable transaction.
- */
-#define DB_user_BEGIN 10000
-#define DB_debug_FLAG 0x80000000
-
-/*
- * DB_LOGC --
- * Log cursor.
- */
-struct __db_log_cursor {
- DB_ENV *dbenv; /* Enclosing dbenv. */
-
- DB_FH *c_fhp; /* File handle. */
- DB_LSN c_lsn; /* Cursor: LSN */
- u_int32_t c_len; /* Cursor: record length */
- u_int32_t c_prev; /* Cursor: previous record's offset */
-
- DBT c_dbt; /* Return DBT. */
-
-#define DB_LOGC_BUF_SIZE (32 * 1024)
- u_int8_t *bp; /* Allocated read buffer. */
- u_int32_t bp_size; /* Read buffer length in bytes. */
- u_int32_t bp_rlen; /* Read buffer valid data length. */
- DB_LSN bp_lsn; /* Read buffer first byte LSN. */
-
- u_int32_t bp_maxrec; /* Max record length in the log file. */
-
- /* Methods. */
- int (*close) __P((DB_LOGC *, u_int32_t));
- int (*get) __P((DB_LOGC *, DB_LSN *, DBT *, u_int32_t));
-
-#define DB_LOG_DISK 0x01 /* Log record came from disk. */
-#define DB_LOG_LOCKED 0x02 /* Log region already locked */
-#define DB_LOG_SILENT_ERR 0x04 /* Turn-off error messages. */
- u_int32_t flags;
-};
-
-/* Log statistics structure. */
-struct __db_log_stat {
- u_int32_t st_magic; /* Log file magic number. */
- u_int32_t st_version; /* Log file version number. */
- int st_mode; /* Log file mode. */
- u_int32_t st_lg_bsize; /* Log buffer size. */
- u_int32_t st_lg_size; /* Log file size. */
- u_int32_t st_w_bytes; /* Bytes to log. */
- u_int32_t st_w_mbytes; /* Megabytes to log. */
- u_int32_t st_wc_bytes; /* Bytes to log since checkpoint. */
- u_int32_t st_wc_mbytes; /* Megabytes to log since checkpoint. */
- u_int32_t st_wcount; /* Total writes to the log. */
- u_int32_t st_wcount_fill; /* Overflow writes to the log. */
- u_int32_t st_scount; /* Total syncs to the log. */
- u_int32_t st_region_wait; /* Region lock granted after wait. */
- u_int32_t st_region_nowait; /* Region lock granted without wait. */
- u_int32_t st_cur_file; /* Current log file number. */
- u_int32_t st_cur_offset; /* Current log file offset. */
- u_int32_t st_disk_file; /* Known on disk log file number. */
- u_int32_t st_disk_offset; /* Known on disk log file offset. */
- roff_t st_regsize; /* Region size. */
- u_int32_t st_maxcommitperflush; /* Max number of commits in a flush. */
- u_int32_t st_mincommitperflush; /* Min number of commits in a flush. */
-};
-
-/*
- * We need to record the first log record of a transaction.
- * For user defined logging this macro returns the place to
- * put that information, if it is need in rlsnp, otherwise it
- * leaves it unchanged.
- */
-#define DB_SET_BEGIN_LSNP(txn, rlsnp) ((txn)->set_begin_lsnp(txn, rlsnp))
-
-/*******************************************************
- * Shared buffer cache (mpool).
- *******************************************************/
-/* Flag values for DB_MPOOLFILE->get. */
-#define DB_MPOOL_CREATE 0x001 /* Create a page. */
-#define DB_MPOOL_LAST 0x002 /* Return the last page. */
-#define DB_MPOOL_NEW 0x004 /* Create a new page. */
-
-/* Flag values for DB_MPOOLFILE->put, DB_MPOOLFILE->set. */
-#define DB_MPOOL_CLEAN 0x001 /* Page is not modified. */
-#define DB_MPOOL_DIRTY 0x002 /* Page is modified. */
-#define DB_MPOOL_DISCARD 0x004 /* Don't cache the page. */
-#define DB_MPOOL_FREE 0x008 /* Free page if present. */
-
-/* Flags values for DB_MPOOLFILE->set_flags. */
-#define DB_MPOOL_NOFILE 0x001 /* Never open a backing file. */
-#define DB_MPOOL_UNLINK 0x002 /* Unlink the file on last close. */
-
-/* Priority values for DB_MPOOLFILE->set_priority. */
-typedef enum {
- DB_PRIORITY_VERY_LOW=1,
- DB_PRIORITY_LOW=2,
- DB_PRIORITY_DEFAULT=3,
- DB_PRIORITY_HIGH=4,
- DB_PRIORITY_VERY_HIGH=5
-} DB_CACHE_PRIORITY;
-
-/* Per-process DB_MPOOLFILE information. */
-struct __db_mpoolfile {
- DB_FH *fhp; /* Underlying file handle. */
-
- /*
- * !!!
- * The ref, pinref and q fields are protected by the region lock.
- */
- u_int32_t ref; /* Reference count. */
-
- u_int32_t pinref; /* Pinned block reference count. */
-
- /*
- * !!!
- * Explicit representations of structures from queue.h.
- * TAILQ_ENTRY(__db_mpoolfile) q;
- */
- struct {
- struct __db_mpoolfile *tqe_next;
- struct __db_mpoolfile **tqe_prev;
- } q; /* Linked list of DB_MPOOLFILE's. */
-
- /*
- * !!!
- * The rest of the fields (with the exception of the MP_FLUSH flag)
- * are not thread-protected, even when they may be modified at any
- * time by the application. The reason is the DB_MPOOLFILE handle
- * is single-threaded from the viewpoint of the application, and so
- * the only fields needing to be thread-protected are those accessed
- * by checkpoint or sync threads when using DB_MPOOLFILE structures
- * to flush buffers from the cache.
- */
- DB_ENV *dbenv; /* Overlying DB_ENV. */
- MPOOLFILE *mfp; /* Underlying MPOOLFILE. */
-
- u_int32_t clear_len; /* Cleared length on created pages. */
- u_int8_t /* Unique file ID. */
- fileid[DB_FILE_ID_LEN];
- int ftype; /* File type. */
- int32_t lsn_offset; /* LSN offset in page. */
- u_int32_t gbytes, bytes; /* Maximum file size. */
- DBT *pgcookie; /* Byte-string passed to pgin/pgout. */
- DB_CACHE_PRIORITY /* Cache priority. */
- priority;
-
- void *addr; /* Address of mmap'd region. */
- size_t len; /* Length of mmap'd region. */
-
- u_int32_t config_flags; /* Flags to DB_MPOOLFILE->set_flags. */
-
- /* Methods. */
- int (*close) __P((DB_MPOOLFILE *, u_int32_t));
- int (*get) __P((DB_MPOOLFILE *, db_pgno_t *, u_int32_t, void *));
- int (*open) __P((DB_MPOOLFILE *, const char *, u_int32_t, int, size_t));
- int (*put) __P((DB_MPOOLFILE *, void *, u_int32_t));
- int (*set) __P((DB_MPOOLFILE *, void *, u_int32_t));
- int (*get_clear_len) __P((DB_MPOOLFILE *, u_int32_t *));
- int (*set_clear_len) __P((DB_MPOOLFILE *, u_int32_t));
- int (*get_fileid) __P((DB_MPOOLFILE *, u_int8_t *));
- int (*set_fileid) __P((DB_MPOOLFILE *, u_int8_t *));
- int (*get_flags) __P((DB_MPOOLFILE *, u_int32_t *));
- int (*set_flags) __P((DB_MPOOLFILE *, u_int32_t, int));
- int (*get_ftype) __P((DB_MPOOLFILE *, int *));
- int (*set_ftype) __P((DB_MPOOLFILE *, int));
- int (*get_lsn_offset) __P((DB_MPOOLFILE *, int32_t *));
- int (*set_lsn_offset) __P((DB_MPOOLFILE *, int32_t));
- int (*get_maxsize) __P((DB_MPOOLFILE *, u_int32_t *, u_int32_t *));
- int (*set_maxsize) __P((DB_MPOOLFILE *, u_int32_t, u_int32_t));
- int (*get_pgcookie) __P((DB_MPOOLFILE *, DBT *));
- int (*set_pgcookie) __P((DB_MPOOLFILE *, DBT *));
- int (*get_priority) __P((DB_MPOOLFILE *, DB_CACHE_PRIORITY *));
- int (*set_priority) __P((DB_MPOOLFILE *, DB_CACHE_PRIORITY));
- int (*sync) __P((DB_MPOOLFILE *));
-
- /*
- * MP_FILEID_SET, MP_OPEN_CALLED and MP_READONLY do not need to be
- * thread protected because they are initialized before the file is
- * linked onto the per-process lists, and never modified.
- *
- * MP_FLUSH is thread protected because it is potentially read/set by
- * multiple threads of control.
- */
-#define MP_FILEID_SET 0x001 /* Application supplied a file ID. */
-#define MP_FLUSH 0x002 /* Was opened to flush a buffer. */
-#define MP_OPEN_CALLED 0x004 /* File opened. */
-#define MP_READONLY 0x008 /* File is readonly. */
- u_int32_t flags;
-};
-
-/* Mpool statistics structure. */
-struct __db_mpool_stat {
- u_int32_t st_gbytes; /* Total cache size: GB. */
- u_int32_t st_bytes; /* Total cache size: B. */
- u_int32_t st_ncache; /* Number of caches. */
- roff_t st_regsize; /* Region size. */
- size_t st_mmapsize; /* Maximum file size for mmap. */
- int st_maxopenfd; /* Maximum number of open fd's. */
- int st_maxwrite; /* Maximum buffers to write. */
- int st_maxwrite_sleep; /* Sleep after writing max buffers. */
- u_int32_t st_map; /* Pages from mapped files. */
- u_int32_t st_cache_hit; /* Pages found in the cache. */
- u_int32_t st_cache_miss; /* Pages not found in the cache. */
- u_int32_t st_page_create; /* Pages created in the cache. */
- u_int32_t st_page_in; /* Pages read in. */
- u_int32_t st_page_out; /* Pages written out. */
- u_int32_t st_ro_evict; /* Clean pages forced from the cache. */
- u_int32_t st_rw_evict; /* Dirty pages forced from the cache. */
- u_int32_t st_page_trickle; /* Pages written by memp_trickle. */
- u_int32_t st_pages; /* Total number of pages. */
- u_int32_t st_page_clean; /* Clean pages. */
- u_int32_t st_page_dirty; /* Dirty pages. */
- u_int32_t st_hash_buckets; /* Number of hash buckets. */
- u_int32_t st_hash_searches; /* Total hash chain searches. */
- u_int32_t st_hash_longest; /* Longest hash chain searched. */
- u_int32_t st_hash_examined; /* Total hash entries searched. */
- u_int32_t st_hash_nowait; /* Hash lock granted with nowait. */
- u_int32_t st_hash_wait; /* Hash lock granted after wait. */
- u_int32_t st_hash_max_wait; /* Max hash lock granted after wait. */
- u_int32_t st_region_nowait; /* Region lock granted with nowait. */
- u_int32_t st_region_wait; /* Region lock granted after wait. */
- u_int32_t st_alloc; /* Number of page allocations. */
- u_int32_t st_alloc_buckets; /* Buckets checked during allocation. */
- u_int32_t st_alloc_max_buckets; /* Max checked during allocation. */
- u_int32_t st_alloc_pages; /* Pages checked during allocation. */
- u_int32_t st_alloc_max_pages; /* Max checked during allocation. */
-};
-
-/* Mpool file statistics structure. */
-struct __db_mpool_fstat {
- char *file_name; /* File name. */
- u_int32_t st_pagesize; /* Page size. */
- u_int32_t st_map; /* Pages from mapped files. */
- u_int32_t st_cache_hit; /* Pages found in the cache. */
- u_int32_t st_cache_miss; /* Pages not found in the cache. */
- u_int32_t st_page_create; /* Pages created in the cache. */
- u_int32_t st_page_in; /* Pages read in. */
- u_int32_t st_page_out; /* Pages written out. */
-};
-
-/*******************************************************
- * Transactions and recovery.
- *******************************************************/
-#define DB_TXNVERSION 1
-
-typedef enum {
- DB_TXN_ABORT=0, /* Public. */
- DB_TXN_APPLY=1, /* Public. */
- DB_TXN_BACKWARD_ALLOC=2, /* Internal. */
- DB_TXN_BACKWARD_ROLL=3, /* Public. */
- DB_TXN_FORWARD_ROLL=4, /* Public. */
- DB_TXN_OPENFILES=5, /* Internal. */
- DB_TXN_POPENFILES=6, /* Internal. */
- DB_TXN_PRINT=7 /* Public. */
-} db_recops;
-
-/*
- * BACKWARD_ALLOC is used during the forward pass to pick up any aborted
- * allocations for files that were created during the forward pass.
- * The main difference between _ALLOC and _ROLL is that the entry for
- * the file not exist during the rollforward pass.
- */
-#define DB_UNDO(op) ((op) == DB_TXN_ABORT || \
- (op) == DB_TXN_BACKWARD_ROLL || (op) == DB_TXN_BACKWARD_ALLOC)
-#define DB_REDO(op) ((op) == DB_TXN_FORWARD_ROLL || (op) == DB_TXN_APPLY)
-
-struct __db_txn {
- DB_TXNMGR *mgrp; /* Pointer to transaction manager. */
- DB_TXN *parent; /* Pointer to transaction's parent. */
- DB_LSN last_lsn; /* Lsn of last log write. */
- u_int32_t txnid; /* Unique transaction id. */
- u_int32_t tid; /* Thread id for use in MT XA. */
- roff_t off; /* Detail structure within region. */
- db_timeout_t lock_timeout; /* Timeout for locks for this txn. */
- db_timeout_t expire; /* Time this txn expires. */
- void *txn_list; /* Undo information for parent. */
-
- /*
- * !!!
- * Explicit representations of structures from queue.h.
- * TAILQ_ENTRY(__db_txn) links;
- * TAILQ_ENTRY(__db_txn) xalinks;
- */
- struct {
- struct __db_txn *tqe_next;
- struct __db_txn **tqe_prev;
- } links; /* Links transactions off manager. */
- struct {
- struct __db_txn *tqe_next;
- struct __db_txn **tqe_prev;
- } xalinks; /* Links active XA transactions. */
-
- /*
- * !!!
- * Explicit representations of structures from queue.h.
- * TAILQ_HEAD(__events, __txn_event) events;
- */
- struct {
- struct __txn_event *tqh_first;
- struct __txn_event **tqh_last;
- } events;
-
- /*
- * !!!
- * Explicit representations of structures from queue.h.
- * STAILQ_HEAD(__logrec, __txn_logrec) logs;
- */
- struct {
- struct __txn_logrec *stqh_first;
- struct __txn_logrec **stqh_last;
- } logs; /* Links deferred events. */
-
- /*
- * !!!
- * Explicit representations of structures from queue.h.
- * TAILQ_HEAD(__kids, __db_txn) kids;
- */
- struct __kids {
- struct __db_txn *tqh_first;
- struct __db_txn **tqh_last;
- } kids;
-
- /*
- * !!!
- * Explicit representations of structures from queue.h.
- * TAILQ_ENTRY(__db_txn) klinks;
- */
- struct {
- struct __db_txn *tqe_next;
- struct __db_txn **tqe_prev;
- } klinks;
-
- void *api_internal; /* C++ API private. */
- void *xml_internal; /* XML API private. */
-
- u_int32_t cursors; /* Number of cursors open for txn */
-
- /* Methods. */
- int (*abort) __P((DB_TXN *));
- int (*commit) __P((DB_TXN *, u_int32_t));
- int (*discard) __P((DB_TXN *, u_int32_t));
- u_int32_t (*id) __P((DB_TXN *));
- int (*prepare) __P((DB_TXN *, u_int8_t *));
- void (*set_begin_lsnp) __P((DB_TXN *txn, DB_LSN **));
- int (*set_timeout) __P((DB_TXN *, db_timeout_t, u_int32_t));
-
-#define TXN_CHILDCOMMIT 0x001 /* Transaction that has committed. */
-#define TXN_COMPENSATE 0x002 /* Compensating transaction. */
-#define TXN_DEADLOCK 0x004 /* Transaction has deadlocked. */
-#define TXN_DEGREE_2 0x008 /* Has degree 2 isolation. */
-#define TXN_DIRTY_READ 0x010 /* Transaction does dirty reads. */
-#define TXN_LOCKTIMEOUT 0x020 /* Transaction has a lock timeout. */
-#define TXN_MALLOC 0x040 /* Structure allocated by TXN system. */
-#define TXN_NOSYNC 0x080 /* Do not sync on prepare and commit. */
-#define TXN_NOWAIT 0x100 /* Do not wait on locks. */
-#define TXN_RESTORED 0x200 /* Transaction has been restored. */
-#define TXN_SYNC 0x400 /* Sync on prepare and commit. */
- u_int32_t flags;
-};
-
-/*
- * Structure used for two phase commit interface. Berkeley DB support for two
- * phase commit is compatible with the X/open XA interface.
- *
- * The XA #define XIDDATASIZE defines the size of a global transaction ID. We
- * have our own version here (for name space reasons) which must have the same
- * value.
- */
-#define DB_XIDDATASIZE 128
-struct __db_preplist {
- DB_TXN *txn;
- u_int8_t gid[DB_XIDDATASIZE];
-};
-
-/* Transaction statistics structure. */
-struct __db_txn_active {
- u_int32_t txnid; /* Transaction ID */
- u_int32_t parentid; /* Transaction ID of parent */
- DB_LSN lsn; /* LSN when transaction began */
- u_int32_t xa_status; /* XA status */
- u_int8_t xid[DB_XIDDATASIZE]; /* XA global transaction ID */
-};
-
-struct __db_txn_stat {
- DB_LSN st_last_ckp; /* lsn of the last checkpoint */
- time_t st_time_ckp; /* time of last checkpoint */
- u_int32_t st_last_txnid; /* last transaction id given out */
- u_int32_t st_maxtxns; /* maximum txns possible */
- u_int32_t st_naborts; /* number of aborted transactions */
- u_int32_t st_nbegins; /* number of begun transactions */
- u_int32_t st_ncommits; /* number of committed transactions */
- u_int32_t st_nactive; /* number of active transactions */
- u_int32_t st_nrestores; /* number of restored transactions
- after recovery. */
- u_int32_t st_maxnactive; /* maximum active transactions */
- DB_TXN_ACTIVE *st_txnarray; /* array of active transactions */
- u_int32_t st_region_wait; /* Region lock granted after wait. */
- u_int32_t st_region_nowait; /* Region lock granted without wait. */
- roff_t st_regsize; /* Region size. */
-};
-
-/*******************************************************
- * Replication.
- *******************************************************/
-/* Special, out-of-band environment IDs. */
-#define DB_EID_BROADCAST -1
-#define DB_EID_INVALID -2
-
-/* rep_start flags values */
-#define DB_REP_CLIENT 0x001
-#define DB_REP_MASTER 0x002
-
-/* Replication statistics. */
-struct __db_rep_stat {
- /* !!!
- * Many replication statistics fields cannot be protected by a mutex
- * without an unacceptable performance penalty, since most message
- * processing is done without the need to hold a region-wide lock.
- * Fields whose comments end with a '+' may be updated without holding
- * the replication or log mutexes (as appropriate), and thus may be
- * off somewhat (or, on unreasonable architectures under unlucky
- * circumstances, garbaged).
- */
- u_int32_t st_status; /* Current replication status. */
- DB_LSN st_next_lsn; /* Next LSN to use or expect. */
- DB_LSN st_waiting_lsn; /* LSN we're awaiting, if any. */
- db_pgno_t st_next_pg; /* Next pg we expect. */
- db_pgno_t st_waiting_pg; /* pg we're awaiting, if any. */
-
- u_int32_t st_dupmasters; /* # of times a duplicate master
- condition was detected.+ */
- int st_env_id; /* Current environment ID. */
- int st_env_priority; /* Current environment priority. */
- u_int32_t st_gen; /* Current generation number. */
- u_int32_t st_egen; /* Current election gen number. */
- u_int32_t st_log_duplicated; /* Log records received multiply.+ */
- u_int32_t st_log_queued; /* Log records currently queued.+ */
- u_int32_t st_log_queued_max; /* Max. log records queued at once.+ */
- u_int32_t st_log_queued_total; /* Total # of log recs. ever queued.+ */
- u_int32_t st_log_records; /* Log records received and put.+ */
- u_int32_t st_log_requested; /* Log recs. missed and requested.+ */
- int st_master; /* Env. ID of the current master. */
- u_int32_t st_master_changes; /* # of times we've switched masters. */
- u_int32_t st_msgs_badgen; /* Messages with a bad generation #.+ */
- u_int32_t st_msgs_processed; /* Messages received and processed.+ */
- u_int32_t st_msgs_recover; /* Messages ignored because this site
- was a client in recovery.+ */
- u_int32_t st_msgs_send_failures;/* # of failed message sends.+ */
- u_int32_t st_msgs_sent; /* # of successful message sends.+ */
- u_int32_t st_newsites; /* # of NEWSITE msgs. received.+ */
- int st_nsites; /* Current number of sites we will
- assume during elections. */
- u_int32_t st_nthrottles; /* # of times we were throttled. */
- u_int32_t st_outdated; /* # of times we detected and returned
- an OUTDATED condition.+ */
- u_int32_t st_pg_duplicated; /* Pages received multiply.+ */
- u_int32_t st_pg_records; /* Pages received and stored.+ */
- u_int32_t st_pg_requested; /* Pages missed and requested.+ */
- u_int32_t st_startup_complete; /* Site completed client sync-up. */
- u_int32_t st_txns_applied; /* # of transactions applied.+ */
-
- /* Elections generally. */
- u_int32_t st_elections; /* # of elections held.+ */
- u_int32_t st_elections_won; /* # of elections won by this site.+ */
-
- /* Statistics about an in-progress election. */
- int st_election_cur_winner; /* Current front-runner. */
- u_int32_t st_election_gen; /* Election generation number. */
- DB_LSN st_election_lsn; /* Max. LSN of current winner. */
- int st_election_nsites; /* # of "registered voters". */
- int st_election_nvotes; /* # of "registered voters" needed. */
- int st_election_priority; /* Current election priority. */
- int st_election_status; /* Current election status. */
- u_int32_t st_election_tiebreaker;/* Election tiebreaker value. */
- int st_election_votes; /* Votes received in this round. */
-};
-/*
- * The storage record for a sequence.
- */
-struct __db_seq_record {
- u_int32_t seq_version; /* Version size/number. */
-#define DB_SEQ_DEC 0x00000001 /* Decrement sequence. */
-#define DB_SEQ_INC 0x00000002 /* Increment sequence. */
-#define DB_SEQ_RANGE_SET 0x00000004 /* Range set (internal). */
-#define DB_SEQ_WRAP 0x00000008 /* Wrap sequence at min/max. */
- u_int32_t flags; /* Flags. */
- db_seq_t seq_value; /* Current value. */
- db_seq_t seq_max; /* Max permitted. */
- db_seq_t seq_min; /* Min permitted. */
-};
-
-/*
- * Handle for a sequence object.
- */
-struct __db_sequence {
- DB *seq_dbp; /* DB handle for this sequence. */
- DB_MUTEX *seq_mutexp; /* Mutex if sequence is threaded. */
- DB_SEQ_RECORD *seq_rp; /* Pointer to current data. */
- DB_SEQ_RECORD seq_record; /* Data from DB_SEQUENCE. */
- int32_t seq_cache_size; /* Number of values cached. */
- db_seq_t seq_last_value; /* Last value cached. */
- DBT seq_key; /* DBT pointing to sequence key. */
- DBT seq_data; /* DBT pointing to seq_record. */
-
- /* API-private structure: used by C++ and Java. */
- void *api_internal;
-
- int (*close) __P((DB_SEQUENCE *, u_int32_t));
- int (*get) __P((DB_SEQUENCE *,
- DB_TXN *, int32_t, db_seq_t *, u_int32_t));
- int (*get_cachesize) __P((DB_SEQUENCE *, int32_t *));
- int (*get_db) __P((DB_SEQUENCE *, DB **));
- int (*get_flags) __P((DB_SEQUENCE *, u_int32_t *));
- int (*get_key) __P((DB_SEQUENCE *, DBT *));
- int (*get_range) __P((DB_SEQUENCE *,
- db_seq_t *, db_seq_t *));
- int (*initial_value) __P((DB_SEQUENCE *, db_seq_t));
- int (*open) __P((DB_SEQUENCE *,
- DB_TXN *, DBT *, u_int32_t));
- int (*remove) __P((DB_SEQUENCE *, DB_TXN *, u_int32_t));
- int (*set_cachesize) __P((DB_SEQUENCE *, int32_t));
- int (*set_flags) __P((DB_SEQUENCE *, u_int32_t));
- int (*set_range) __P((DB_SEQUENCE *, db_seq_t, db_seq_t));
- int (*stat) __P((DB_SEQUENCE *,
- DB_SEQUENCE_STAT **, u_int32_t));
- int (*stat_print) __P((DB_SEQUENCE *, u_int32_t));
-};
-
-struct __db_seq_stat {
- u_int32_t st_wait; /* Sequence lock granted without wait. */
- u_int32_t st_nowait; /* Sequence lock granted after wait. */
- db_seq_t st_current; /* Current value in db. */
- db_seq_t st_value; /* Current cached value. */
- db_seq_t st_last_value; /* Last cached value. */
- db_seq_t st_min; /* Minimum value. */
- db_seq_t st_max; /* Maximum value. */
- int32_t st_cache_size; /* Cache size. */
- u_int32_t st_flags; /* Flag value. */
-};
-
-/*******************************************************
- * Access methods.
- *******************************************************/
-typedef enum {
- DB_BTREE=1,
- DB_HASH=2,
- DB_RECNO=3,
- DB_QUEUE=4,
- DB_UNKNOWN=5 /* Figure it out on open. */
-} DBTYPE;
-
-#define DB_RENAMEMAGIC 0x030800 /* File has been renamed. */
-
-#define DB_BTREEVERSION 9 /* Current btree version. */
-#define DB_BTREEOLDVER 8 /* Oldest btree version supported. */
-#define DB_BTREEMAGIC 0x053162
-
-#define DB_HASHVERSION 8 /* Current hash version. */
-#define DB_HASHOLDVER 7 /* Oldest hash version supported. */
-#define DB_HASHMAGIC 0x061561
-
-#define DB_QAMVERSION 4 /* Current queue version. */
-#define DB_QAMOLDVER 3 /* Oldest queue version supported. */
-#define DB_QAMMAGIC 0x042253
-
-#define DB_SEQUENCE_VERSION 1 /* Current sequence version. */
-
-/*
- * DB access method and cursor operation values. Each value is an operation
- * code to which additional bit flags are added.
- */
-#define DB_AFTER 1 /* c_put() */
-#define DB_APPEND 2 /* put() */
-#define DB_BEFORE 3 /* c_put() */
-#define DB_CACHED_COUNTS 4 /* stat() */
-#define DB_CONSUME 5 /* get() */
-#define DB_CONSUME_WAIT 6 /* get() */
-#define DB_CURRENT 7 /* c_get(), c_put(), DB_LOGC->get() */
-#define DB_FAST_STAT 8 /* stat() */
-#define DB_FIRST 9 /* c_get(), DB_LOGC->get() */
-#define DB_GET_BOTH 10 /* get(), c_get() */
-#define DB_GET_BOTHC 11 /* c_get() (internal) */
-#define DB_GET_BOTH_RANGE 12 /* get(), c_get() */
-#define DB_GET_RECNO 13 /* c_get() */
-#define DB_JOIN_ITEM 14 /* c_get(); do not do primary lookup */
-#define DB_KEYFIRST 15 /* c_put() */
-#define DB_KEYLAST 16 /* c_put() */
-#define DB_LAST 17 /* c_get(), DB_LOGC->get() */
-#define DB_NEXT 18 /* c_get(), DB_LOGC->get() */
-#define DB_NEXT_DUP 19 /* c_get() */
-#define DB_NEXT_NODUP 20 /* c_get() */
-#define DB_NODUPDATA 21 /* put(), c_put() */
-#define DB_NOOVERWRITE 22 /* put() */
-#define DB_NOSYNC 23 /* close() */
-#define DB_POSITION 24 /* c_dup() */
-#define DB_PREV 25 /* c_get(), DB_LOGC->get() */
-#define DB_PREV_NODUP 26 /* c_get(), DB_LOGC->get() */
-#define DB_RECORDCOUNT 27 /* stat() */
-#define DB_SET 28 /* c_get(), DB_LOGC->get() */
-#define DB_SET_LOCK_TIMEOUT 29 /* set_timout() */
-#define DB_SET_RANGE 30 /* c_get() */
-#define DB_SET_RECNO 31 /* get(), c_get() */
-#define DB_SET_TXN_NOW 32 /* set_timout() (internal) */
-#define DB_SET_TXN_TIMEOUT 33 /* set_timout() */
-#define DB_UPDATE_SECONDARY 34 /* c_get(), c_del() (internal) */
-#define DB_WRITECURSOR 35 /* cursor() */
-#define DB_WRITELOCK 36 /* cursor() (internal) */
-
-/* This has to change when the max opcode hits 255. */
-#define DB_OPFLAGS_MASK 0x000000ff /* Mask for operations flags. */
-
-/*
- * Masks for flags that can be OR'd into DB access method and cursor
- * operation values.
- *
- * DB_DIRTY_READ 0x04000000 Dirty Read. */
-#define DB_MULTIPLE 0x08000000 /* Return multiple data values. */
-#define DB_MULTIPLE_KEY 0x10000000 /* Return multiple data/key pairs. */
-#define DB_RMW 0x20000000 /* Acquire write flag immediately. */
-
-/*
- * DB (user visible) error return codes.
- *
- * !!!
- * For source compatibility with DB 2.X deadlock return (EAGAIN), use the
- * following:
- * #include <errno.h>
- * #define DB_LOCK_DEADLOCK EAGAIN
- *
- * !!!
- * We don't want our error returns to conflict with other packages where
- * possible, so pick a base error value that's hopefully not common. We
- * document that we own the error name space from -30,800 to -30,999.
- */
-/* DB (public) error return codes. */
-#define DB_BUFFER_SMALL (-30999)/* User memory too small for return. */
-#define DB_DONOTINDEX (-30998)/* "Null" return from 2ndary callbk. */
-#define DB_KEYEMPTY (-30997)/* Key/data deleted or never created. */
-#define DB_KEYEXIST (-30996)/* The key/data pair already exists. */
-#define DB_LOCK_DEADLOCK (-30995)/* Deadlock. */
-#define DB_LOCK_NOTGRANTED (-30994)/* Lock unavailable. */
-#define DB_LOG_BUFFER_FULL (-30993)/* In-memory log buffer full. */
-#define DB_NOSERVER (-30992)/* Server panic return. */
-#define DB_NOSERVER_HOME (-30991)/* Bad home sent to server. */
-#define DB_NOSERVER_ID (-30990)/* Bad ID sent to server. */
-#define DB_NOTFOUND (-30989)/* Key/data pair not found (EOF). */
-#define DB_OLD_VERSION (-30988)/* Out-of-date version. */
-#define DB_PAGE_NOTFOUND (-30987)/* Requested page not found. */
-#define DB_REP_DUPMASTER (-30986)/* There are two masters. */
-#define DB_REP_HANDLE_DEAD (-30985)/* Rolled back a commit. */
-#define DB_REP_HOLDELECTION (-30984)/* Time to hold an election. */
-#define DB_REP_ISPERM (-30983)/* Cached not written perm written.*/
-#define DB_REP_NEWMASTER (-30982)/* We have learned of a new master. */
-#define DB_REP_NEWSITE (-30981)/* New site entered system. */
-#define DB_REP_NOTPERM (-30980)/* Permanent log record not written. */
-#define DB_REP_STARTUPDONE (-30979)/* Client startup complete. */
-#define DB_REP_UNAVAIL (-30978)/* Site cannot currently be reached. */
-#define DB_RUNRECOVERY (-30977)/* Panic return. */
-#define DB_SECONDARY_BAD (-30976)/* Secondary index corrupt. */
-#define DB_VERIFY_BAD (-30975)/* Verify failed; bad format. */
-#define DB_VERSION_MISMATCH (-30974)/* Environment version mismatch. */
-
-/* DB (private) error return codes. */
-#define DB_ALREADY_ABORTED (-30899)
-#define DB_DELETED (-30898)/* Recovery file marked deleted. */
-#define DB_LOCK_NOTEXIST (-30897)/* Object to lock is gone. */
-#define DB_NEEDSPLIT (-30896)/* Page needs to be split. */
-#define DB_REP_EGENCHG (-30895)/* Egen changed while in election. */
-#define DB_REP_LOGREADY (-30894)/* Rep log ready for recovery. */
-#define DB_REP_PAGEDONE (-30893)/* This page was already done. */
-#define DB_SURPRISE_KID (-30892)/* Child commit where parent
- didn't know it was a parent. */
-#define DB_SWAPBYTES (-30891)/* Database needs byte swapping. */
-#define DB_TIMEOUT (-30890)/* Timed out waiting for election. */
-#define DB_TXN_CKP (-30889)/* Encountered ckp record in log. */
-#define DB_VERIFY_FATAL (-30888)/* DB->verify cannot proceed. */
-
-/* Database handle. */
-struct __db {
- /*******************************************************
- * Public: owned by the application.
- *******************************************************/
- u_int32_t pgsize; /* Database logical page size. */
-
- /* Callbacks. */
- int (*db_append_recno) __P((DB *, DBT *, db_recno_t));
- void (*db_feedback) __P((DB *, int, int));
- int (*dup_compare) __P((DB *, const DBT *, const DBT *));
-
- void *app_private; /* Application-private handle. */
-
- /*******************************************************
- * Private: owned by DB.
- *******************************************************/
- DB_ENV *dbenv; /* Backing environment. */
-
- DBTYPE type; /* DB access method type. */
-
- DB_MPOOLFILE *mpf; /* Backing buffer pool. */
-
- DB_MUTEX *mutexp; /* Synchronization for free threading */
-
- char *fname, *dname; /* File/database passed to DB->open. */
- u_int32_t open_flags; /* Flags passed to DB->open. */
-
- u_int8_t fileid[DB_FILE_ID_LEN];/* File's unique ID for locking. */
-
- u_int32_t adj_fileid; /* File's unique ID for curs. adj. */
-
-#define DB_LOGFILEID_INVALID -1
- FNAME *log_filename; /* File's naming info for logging. */
-
- db_pgno_t meta_pgno; /* Meta page number */
- u_int32_t lid; /* Locker id for handle locking. */
- u_int32_t cur_lid; /* Current handle lock holder. */
- u_int32_t associate_lid; /* Locker id for DB->associate call. */
- DB_LOCK handle_lock; /* Lock held on this handle. */
-
- u_int cl_id; /* RPC: remote client id. */
-
- time_t timestamp; /* Handle timestamp for replication. */
-
- /*
- * Returned data memory for DB->get() and friends.
- */
- DBT my_rskey; /* Secondary key. */
- DBT my_rkey; /* [Primary] key. */
- DBT my_rdata; /* Data. */
-
- /*
- * !!!
- * Some applications use DB but implement their own locking outside of
- * DB. If they're using fcntl(2) locking on the underlying database
- * file, and we open and close a file descriptor for that file, we will
- * discard their locks. The DB_FCNTL_LOCKING flag to DB->open is an
- * undocumented interface to support this usage which leaves any file
- * descriptors we open until DB->close. This will only work with the
- * DB->open interface and simple caches, e.g., creating a transaction
- * thread may open/close file descriptors this flag doesn't protect.
- * Locking with fcntl(2) on a file that you don't own is a very, very
- * unsafe thing to do. 'Nuff said.
- */
- DB_FH *saved_open_fhp; /* Saved file handle. */
-
- /*
- * Linked list of DBP's, linked from the DB_ENV, used to keep track
- * of all open db handles for cursor adjustment.
- *
- * !!!
- * Explicit representations of structures from queue.h.
- * LIST_ENTRY(__db) dblistlinks;
- */
- struct {
- struct __db *le_next;
- struct __db **le_prev;
- } dblistlinks;
-
- /*
- * Cursor queues.
- *
- * !!!
- * Explicit representations of structures from queue.h.
- * TAILQ_HEAD(__cq_fq, __dbc) free_queue;
- * TAILQ_HEAD(__cq_aq, __dbc) active_queue;
- * TAILQ_HEAD(__cq_jq, __dbc) join_queue;
- */
- struct __cq_fq {
- struct __dbc *tqh_first;
- struct __dbc **tqh_last;
- } free_queue;
- struct __cq_aq {
- struct __dbc *tqh_first;
- struct __dbc **tqh_last;
- } active_queue;
- struct __cq_jq {
- struct __dbc *tqh_first;
- struct __dbc **tqh_last;
- } join_queue;
-
- /*
- * Secondary index support.
- *
- * Linked list of secondary indices -- set in the primary.
- *
- * !!!
- * Explicit representations of structures from queue.h.
- * LIST_HEAD(s_secondaries, __db);
- */
- struct {
- struct __db *lh_first;
- } s_secondaries;
-
- /*
- * List entries for secondaries, and reference count of how
- * many threads are updating this secondary (see __db_c_put).
- *
- * !!!
- * Note that these are synchronized by the primary's mutex, but
- * filled in in the secondaries.
- *
- * !!!
- * Explicit representations of structures from queue.h.
- * LIST_ENTRY(__db) s_links;
- */
- struct {
- struct __db *le_next;
- struct __db **le_prev;
- } s_links;
- u_int32_t s_refcnt;
-
- /* Secondary callback and free functions -- set in the secondary. */
- int (*s_callback) __P((DB *, const DBT *, const DBT *, DBT *));
-
- /* Reference to primary -- set in the secondary. */
- DB *s_primary;
-
- /* API-private structure: used by DB 1.85, C++, Java, Perl and Tcl */
- void *api_internal;
-
- /* Subsystem-private structure. */
- void *bt_internal; /* Btree/Recno access method. */
- void *h_internal; /* Hash access method. */
- void *q_internal; /* Queue access method. */
- void *xa_internal; /* XA. */
-
- /* Methods. */
- int (*associate) __P((DB *, DB_TXN *, DB *, int (*)(DB *, const DBT *,
- const DBT *, DBT *), u_int32_t));
- int (*close) __P((DB *, u_int32_t));
- int (*cursor) __P((DB *, DB_TXN *, DBC **, u_int32_t));
- int (*del) __P((DB *, DB_TXN *, DBT *, u_int32_t));
- int (*dump) __P((DB *,
- const char *, int (*)(void *, const void *), void *, int, int));
- void (*err) __P((DB *, int, const char *, ...));
- void (*errx) __P((DB *, const char *, ...));
- int (*fd) __P((DB *, int *));
- int (*get) __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t));
- int (*pget) __P((DB *, DB_TXN *, DBT *, DBT *, DBT *, u_int32_t));
- int (*get_byteswapped) __P((DB *, int *));
- int (*get_cachesize) __P((DB *, u_int32_t *, u_int32_t *, int *));
- int (*get_dbname) __P((DB *, const char **, const char **));
- int (*get_encrypt_flags) __P((DB *, u_int32_t *));
- DB_ENV *(*get_env) __P((DB *));
- void (*get_errfile) __P((DB *, FILE **));
- void (*get_errpfx) __P((DB *, const char **));
- int (*get_flags) __P((DB *, u_int32_t *));
- int (*get_lorder) __P((DB *, int *));
- int (*get_open_flags) __P((DB *, u_int32_t *));
- int (*get_pagesize) __P((DB *, u_int32_t *));
- int (*get_transactional) __P((DB *));
- int (*get_type) __P((DB *, DBTYPE *));
- int (*join) __P((DB *, DBC **, DBC **, u_int32_t));
- int (*key_range) __P((DB *,
- DB_TXN *, DBT *, DB_KEY_RANGE *, u_int32_t));
- int (*open) __P((DB *, DB_TXN *,
- const char *, const char *, DBTYPE, u_int32_t, int));
- int (*put) __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t));
- int (*remove) __P((DB *, const char *, const char *, u_int32_t));
- int (*rename) __P((DB *,
- const char *, const char *, const char *, u_int32_t));
- int (*truncate) __P((DB *, DB_TXN *, u_int32_t *, u_int32_t));
- int (*set_append_recno) __P((DB *, int (*)(DB *, DBT *, db_recno_t)));
- int (*set_alloc) __P((DB *, void *(*)(size_t),
- void *(*)(void *, size_t), void (*)(void *)));
- int (*set_cachesize) __P((DB *, u_int32_t, u_int32_t, int));
- int (*set_dup_compare) __P((DB *,
- int (*)(DB *, const DBT *, const DBT *)));
- int (*set_encrypt) __P((DB *, const char *, u_int32_t));
- void (*set_errcall) __P((DB *,
- void (*)(const DB_ENV *, const char *, const char *)));
- void (*set_errfile) __P((DB *, FILE *));
- void (*set_errpfx) __P((DB *, const char *));
- int (*set_feedback) __P((DB *, void (*)(DB *, int, int)));
- int (*set_flags) __P((DB *, u_int32_t));
- int (*set_lorder) __P((DB *, int));
- void (*set_msgcall) __P((DB *, void (*)(const DB_ENV *, const char *)));
- void (*get_msgfile) __P((DB *, FILE **));
- void (*set_msgfile) __P((DB *, FILE *));
- int (*set_pagesize) __P((DB *, u_int32_t));
- int (*set_paniccall) __P((DB *, void (*)(DB_ENV *, int)));
- int (*stat) __P((DB *, DB_TXN *, void *, u_int32_t));
- int (*stat_print) __P((DB *, u_int32_t));
- int (*sync) __P((DB *, u_int32_t));
- int (*upgrade) __P((DB *, const char *, u_int32_t));
- int (*verify) __P((DB *,
- const char *, const char *, FILE *, u_int32_t));
-
- int (*get_bt_minkey) __P((DB *, u_int32_t *));
- int (*set_bt_compare) __P((DB *,
- int (*)(DB *, const DBT *, const DBT *)));
- int (*set_bt_maxkey) __P((DB *, u_int32_t));
- int (*set_bt_minkey) __P((DB *, u_int32_t));
- int (*set_bt_prefix) __P((DB *,
- size_t (*)(DB *, const DBT *, const DBT *)));
-
- int (*get_h_ffactor) __P((DB *, u_int32_t *));
- int (*get_h_nelem) __P((DB *, u_int32_t *));
- int (*set_h_ffactor) __P((DB *, u_int32_t));
- int (*set_h_hash) __P((DB *,
- u_int32_t (*)(DB *, const void *, u_int32_t)));
- int (*set_h_nelem) __P((DB *, u_int32_t));
-
- int (*get_re_delim) __P((DB *, int *));
- int (*get_re_len) __P((DB *, u_int32_t *));
- int (*get_re_pad) __P((DB *, int *));
- int (*get_re_source) __P((DB *, const char **));
- int (*set_re_delim) __P((DB *, int));
- int (*set_re_len) __P((DB *, u_int32_t));
- int (*set_re_pad) __P((DB *, int));
- int (*set_re_source) __P((DB *, const char *));
-
- int (*get_q_extentsize) __P((DB *, u_int32_t *));
- int (*set_q_extentsize) __P((DB *, u_int32_t));
-
- int (*db_am_remove) __P((DB *, DB_TXN *, const char *, const char *));
- int (*db_am_rename) __P((DB *, DB_TXN *,
- const char *, const char *, const char *));
-
- /*
- * Never called; these are a place to save function pointers
- * so that we can undo an associate.
- */
- int (*stored_get) __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t));
- int (*stored_close) __P((DB *, u_int32_t));
-
-#define DB_OK_BTREE 0x01
-#define DB_OK_HASH 0x02
-#define DB_OK_QUEUE 0x04
-#define DB_OK_RECNO 0x08
- u_int32_t am_ok; /* Legal AM choices. */
-
-#define DB_AM_CHKSUM 0x00000001 /* Checksumming. */
-#define DB_AM_CL_WRITER 0x00000002 /* Allow writes in client replica. */
-#define DB_AM_COMPENSATE 0x00000004 /* Created by compensating txn. */
-#define DB_AM_CREATED 0x00000008 /* Database was created upon open. */
-#define DB_AM_CREATED_MSTR 0x00000010 /* Encompassing file was created. */
-#define DB_AM_DBM_ERROR 0x00000020 /* Error in DBM/NDBM database. */
-#define DB_AM_DELIMITER 0x00000040 /* Variable length delimiter set. */
-#define DB_AM_DIRTY 0x00000080 /* Support Dirty Reads. */
-#define DB_AM_DISCARD 0x00000100 /* Discard any cached pages. */
-#define DB_AM_DUP 0x00000200 /* DB_DUP. */
-#define DB_AM_DUPSORT 0x00000400 /* DB_DUPSORT. */
-#define DB_AM_ENCRYPT 0x00000800 /* Encryption. */
-#define DB_AM_FIXEDLEN 0x00001000 /* Fixed-length records. */
-#define DB_AM_INMEM 0x00002000 /* In-memory; no sync on close. */
-#define DB_AM_INORDER 0x00004000 /* DB_INORDER. */
-#define DB_AM_IN_RENAME 0x00008000 /* File is being renamed. */
-#define DB_AM_NOT_DURABLE 0x00010000 /* Do not log changes. */
-#define DB_AM_OPEN_CALLED 0x00020000 /* DB->open called. */
-#define DB_AM_PAD 0x00040000 /* Fixed-length record pad. */
-#define DB_AM_PGDEF 0x00080000 /* Page size was defaulted. */
-#define DB_AM_RDONLY 0x00100000 /* Database is readonly. */
-#define DB_AM_RECNUM 0x00200000 /* DB_RECNUM. */
-#define DB_AM_RECOVER 0x00400000 /* DB opened by recovery routine. */
-#define DB_AM_RENUMBER 0x00800000 /* DB_RENUMBER. */
-#define DB_AM_REPLICATION 0x01000000 /* An internal replication file. */
-#define DB_AM_REVSPLITOFF 0x02000000 /* DB_REVSPLITOFF. */
-#define DB_AM_SECONDARY 0x04000000 /* Database is a secondary index. */
-#define DB_AM_SNAPSHOT 0x08000000 /* DB_SNAPSHOT. */
-#define DB_AM_SUBDB 0x10000000 /* Subdatabases supported. */
-#define DB_AM_SWAP 0x20000000 /* Pages need to be byte-swapped. */
-#define DB_AM_TXN 0x40000000 /* Opened in a transaction. */
-#define DB_AM_VERIFYING 0x80000000 /* DB handle is in the verifier. */
- u_int32_t orig_flags; /* Flags at open, for refresh. */
- u_int32_t flags;
-};
-
-/*
- * Macros for bulk get. These are only intended for the C API.
- * For C++, use DbMultiple*Iterator.
- */
-#define DB_MULTIPLE_INIT(pointer, dbt) \
- (pointer = (u_int8_t *)(dbt)->data + \
- (dbt)->ulen - sizeof(u_int32_t))
-#define DB_MULTIPLE_NEXT(pointer, dbt, retdata, retdlen) \
- do { \
- if (*((u_int32_t *)(pointer)) == (u_int32_t)-1) { \
- retdata = NULL; \
- pointer = NULL; \
- break; \
- } \
- retdata = (u_int8_t *) \
- (dbt)->data + *(u_int32_t *)(pointer); \
- (pointer) = (u_int32_t *)(pointer) - 1; \
- retdlen = *(u_int32_t *)(pointer); \
- (pointer) = (u_int32_t *)(pointer) - 1; \
- if (retdlen == 0 && \
- retdata == (u_int8_t *)(dbt)->data) \
- retdata = NULL; \
- } while (0)
-#define DB_MULTIPLE_KEY_NEXT(pointer, dbt, retkey, retklen, retdata, retdlen) \
- do { \
- if (*((u_int32_t *)(pointer)) == (u_int32_t)-1) { \
- retdata = NULL; \
- retkey = NULL; \
- pointer = NULL; \
- break; \
- } \
- retkey = (u_int8_t *) \
- (dbt)->data + *(u_int32_t *)(pointer); \
- (pointer) = (u_int32_t *)(pointer) - 1; \
- retklen = *(u_int32_t *)(pointer); \
- (pointer) = (u_int32_t *)(pointer) - 1; \
- retdata = (u_int8_t *) \
- (dbt)->data + *(u_int32_t *)(pointer); \
- (pointer) = (u_int32_t *)(pointer) - 1; \
- retdlen = *(u_int32_t *)(pointer); \
- (pointer) = (u_int32_t *)(pointer) - 1; \
- } while (0)
-
-#define DB_MULTIPLE_RECNO_NEXT(pointer, dbt, recno, retdata, retdlen) \
- do { \
- if (*((u_int32_t *)(pointer)) == (u_int32_t)0) { \
- recno = 0; \
- retdata = NULL; \
- pointer = NULL; \
- break; \
- } \
- recno = *(u_int32_t *)(pointer); \
- (pointer) = (u_int32_t *)(pointer) - 1; \
- retdata = (u_int8_t *) \
- (dbt)->data + *(u_int32_t *)(pointer); \
- (pointer) = (u_int32_t *)(pointer) - 1; \
- retdlen = *(u_int32_t *)(pointer); \
- (pointer) = (u_int32_t *)(pointer) - 1; \
- } while (0)
-
-/*******************************************************
- * Access method cursors.
- *******************************************************/
-struct __dbc {
- DB *dbp; /* Related DB access method. */
- DB_TXN *txn; /* Associated transaction. */
-
- /*
- * Active/free cursor queues.
- *
- * !!!
- * Explicit representations of structures from queue.h.
- * TAILQ_ENTRY(__dbc) links;
- */
- struct {
- DBC *tqe_next;
- DBC **tqe_prev;
- } links;
-
- /*
- * The DBT *'s below are used by the cursor routines to return
- * data to the user when DBT flags indicate that DB should manage
- * the returned memory. They point at a DBT containing the buffer
- * and length that will be used, and "belonging" to the handle that
- * should "own" this memory. This may be a "my_*" field of this
- * cursor--the default--or it may be the corresponding field of
- * another cursor, a DB handle, a join cursor, etc. In general, it
- * will be whatever handle the user originally used for the current
- * DB interface call.
- */
- DBT *rskey; /* Returned secondary key. */
- DBT *rkey; /* Returned [primary] key. */
- DBT *rdata; /* Returned data. */
-
- DBT my_rskey; /* Space for returned secondary key. */
- DBT my_rkey; /* Space for returned [primary] key. */
- DBT my_rdata; /* Space for returned data. */
-
- u_int32_t lid; /* Default process' locker id. */
- u_int32_t locker; /* Locker for this operation. */
- DBT lock_dbt; /* DBT referencing lock. */
- DB_LOCK_ILOCK lock; /* Object to be locked. */
- DB_LOCK mylock; /* CDB lock held on this cursor. */
-
- u_int cl_id; /* Remote client id. */
-
- DBTYPE dbtype; /* Cursor type. */
-
- DBC_INTERNAL *internal; /* Access method private. */
-
- int (*c_close) __P((DBC *)); /* Methods: public. */
- int (*c_count) __P((DBC *, db_recno_t *, u_int32_t));
- int (*c_del) __P((DBC *, u_int32_t));
- int (*c_dup) __P((DBC *, DBC **, u_int32_t));
- int (*c_get) __P((DBC *, DBT *, DBT *, u_int32_t));
- int (*c_pget) __P((DBC *, DBT *, DBT *, DBT *, u_int32_t));
- int (*c_put) __P((DBC *, DBT *, DBT *, u_int32_t));
-
- /* Methods: private. */
- int (*c_am_bulk) __P((DBC *, DBT *, u_int32_t));
- int (*c_am_close) __P((DBC *, db_pgno_t, int *));
- int (*c_am_del) __P((DBC *));
- int (*c_am_destroy) __P((DBC *));
- int (*c_am_get) __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *));
- int (*c_am_put) __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *));
- int (*c_am_writelock) __P((DBC *));
-
-#define DBC_ACTIVE 0x0001 /* Cursor in use. */
-#define DBC_COMPENSATE 0x0002 /* Cursor compensating, don't lock. */
-#define DBC_DEGREE_2 0x0004 /* Cursor has degree 2 isolation. */
-#define DBC_DIRTY_READ 0x0008 /* Cursor supports dirty reads. */
-#define DBC_OPD 0x0010 /* Cursor references off-page dups. */
-#define DBC_RECOVER 0x0020 /* Recovery cursor; don't log/lock. */
-#define DBC_RMW 0x0040 /* Acquire write flag in read op. */
-#define DBC_TRANSIENT 0x0080 /* Cursor is transient. */
-#define DBC_WRITECURSOR 0x0100 /* Cursor may be used to write (CDB). */
-#define DBC_WRITER 0x0200 /* Cursor immediately writing (CDB). */
-#define DBC_MULTIPLE 0x0400 /* Return Multiple data. */
-#define DBC_MULTIPLE_KEY 0x0800 /* Return Multiple keys and data. */
-#define DBC_OWN_LID 0x1000 /* Free lock id on destroy. */
- u_int32_t flags;
-};
-
-/* Key range statistics structure */
-struct __key_range {
- double less;
- double equal;
- double greater;
-};
-
-/* Btree/Recno statistics structure. */
-struct __db_bt_stat {
- u_int32_t bt_magic; /* Magic number. */
- u_int32_t bt_version; /* Version number. */
- u_int32_t bt_metaflags; /* Metadata flags. */
- u_int32_t bt_nkeys; /* Number of unique keys. */
- u_int32_t bt_ndata; /* Number of data items. */
- u_int32_t bt_pagesize; /* Page size. */
- u_int32_t bt_maxkey; /* Maxkey value. */
- u_int32_t bt_minkey; /* Minkey value. */
- u_int32_t bt_re_len; /* Fixed-length record length. */
- u_int32_t bt_re_pad; /* Fixed-length record pad. */
- u_int32_t bt_levels; /* Tree levels. */
- u_int32_t bt_int_pg; /* Internal pages. */
- u_int32_t bt_leaf_pg; /* Leaf pages. */
- u_int32_t bt_dup_pg; /* Duplicate pages. */
- u_int32_t bt_over_pg; /* Overflow pages. */
- u_int32_t bt_empty_pg; /* Empty pages. */
- u_int32_t bt_free; /* Pages on the free list. */
- u_int32_t bt_int_pgfree; /* Bytes free in internal pages. */
- u_int32_t bt_leaf_pgfree; /* Bytes free in leaf pages. */
- u_int32_t bt_dup_pgfree; /* Bytes free in duplicate pages. */
- u_int32_t bt_over_pgfree; /* Bytes free in overflow pages. */
-};
-
-/* Hash statistics structure. */
-struct __db_h_stat {
- u_int32_t hash_magic; /* Magic number. */
- u_int32_t hash_version; /* Version number. */
- u_int32_t hash_metaflags; /* Metadata flags. */
- u_int32_t hash_nkeys; /* Number of unique keys. */
- u_int32_t hash_ndata; /* Number of data items. */
- u_int32_t hash_pagesize; /* Page size. */
- u_int32_t hash_ffactor; /* Fill factor specified at create. */
- u_int32_t hash_buckets; /* Number of hash buckets. */
- u_int32_t hash_free; /* Pages on the free list. */
- u_int32_t hash_bfree; /* Bytes free on bucket pages. */
- u_int32_t hash_bigpages; /* Number of big key/data pages. */
- u_int32_t hash_big_bfree; /* Bytes free on big item pages. */
- u_int32_t hash_overflows; /* Number of overflow pages. */
- u_int32_t hash_ovfl_free; /* Bytes free on ovfl pages. */
- u_int32_t hash_dup; /* Number of dup pages. */
- u_int32_t hash_dup_free; /* Bytes free on duplicate pages. */
-};
-
-/* Queue statistics structure. */
-struct __db_qam_stat {
- u_int32_t qs_magic; /* Magic number. */
- u_int32_t qs_version; /* Version number. */
- u_int32_t qs_metaflags; /* Metadata flags. */
- u_int32_t qs_nkeys; /* Number of unique keys. */
- u_int32_t qs_ndata; /* Number of data items. */
- u_int32_t qs_pagesize; /* Page size. */
- u_int32_t qs_extentsize; /* Pages per extent. */
- u_int32_t qs_pages; /* Data pages. */
- u_int32_t qs_re_len; /* Fixed-length record length. */
- u_int32_t qs_re_pad; /* Fixed-length record pad. */
- u_int32_t qs_pgfree; /* Bytes free in data pages. */
- u_int32_t qs_first_recno; /* First not deleted record. */
- u_int32_t qs_cur_recno; /* Next available record number. */
-};
-
-/*******************************************************
- * Environment.
- *******************************************************/
-#define DB_REGION_MAGIC 0x120897 /* Environment magic number. */
-
-/* Database Environment handle. */
-struct __db_env {
- /*******************************************************
- * Public: owned by the application.
- *******************************************************/
- /* Error message callback. */
- void (*db_errcall) __P((const DB_ENV *, const char *, const char *));
- FILE *db_errfile; /* Error message file stream. */
- const char *db_errpfx; /* Error message prefix. */
-
- FILE *db_msgfile; /* Statistics message file stream. */
- /* Statistics message callback. */
- void (*db_msgcall) __P((const DB_ENV *, const char *));
-
- /* Other Callbacks. */
- void (*db_feedback) __P((DB_ENV *, int, int));
- void (*db_paniccall) __P((DB_ENV *, int));
-
- /* App-specified alloc functions. */
- void *(*db_malloc) __P((size_t));
- void *(*db_realloc) __P((void *, size_t));
- void (*db_free) __P((void *));
-
- /*
- * Currently, the verbose list is a bit field with room for 32
- * entries. There's no reason that it needs to be limited, if
- * there are ever more than 32 entries, convert to a bit array.
- */
-#define DB_VERB_DEADLOCK 0x0001 /* Deadlock detection information. */
-#define DB_VERB_RECOVERY 0x0002 /* Recovery information. */
-#define DB_VERB_REPLICATION 0x0004 /* Replication information. */
-#define DB_VERB_WAITSFOR 0x0008 /* Dump waits-for table. */
- u_int32_t verbose; /* Verbose output. */
-
- void *app_private; /* Application-private handle. */
-
- int (*app_dispatch) /* User-specified recovery dispatch. */
- __P((DB_ENV *, DBT *, DB_LSN *, db_recops));
-
- /* Locking. */
- u_int8_t *lk_conflicts; /* Two dimensional conflict matrix. */
- int lk_modes; /* Number of lock modes in table. */
- u_int32_t lk_max; /* Maximum number of locks. */
- u_int32_t lk_max_lockers;/* Maximum number of lockers. */
- u_int32_t lk_max_objects;/* Maximum number of locked objects. */
- u_int32_t lk_detect; /* Deadlock detect on all conflicts. */
- db_timeout_t lk_timeout; /* Lock timeout period. */
-
- /* Logging. */
- u_int32_t lg_bsize; /* Buffer size. */
- u_int32_t lg_size; /* Log file size. */
- u_int32_t lg_regionmax; /* Region size. */
-
- /* Memory pool. */
- u_int32_t mp_gbytes; /* Cachesize: GB. */
- u_int32_t mp_bytes; /* Cachesize: Bytes. */
- u_int mp_ncache; /* Number of cache regions. */
- size_t mp_mmapsize; /* Maximum file size for mmap. */
- int mp_maxopenfd; /* Maximum open file descriptors. */
- int mp_maxwrite; /* Maximum buffers to write. */
- int /* Sleep after writing max buffers. */
- mp_maxwrite_sleep;
-
- /* Replication */
- int rep_eid; /* environment id. */
- int (*rep_send) /* Send function. */
- __P((DB_ENV *, const DBT *, const DBT *,
- const DB_LSN *, int, u_int32_t));
-
- /* Transactions. */
- u_int32_t tx_max; /* Maximum number of transactions. */
- time_t tx_timestamp; /* Recover to specific timestamp. */
- db_timeout_t tx_timeout; /* Timeout for transactions. */
-
- /*******************************************************
- * Private: owned by DB.
- *******************************************************/
- /* User files, paths. */
- char *db_home; /* Database home. */
- char *db_log_dir; /* Database log file directory. */
- char *db_tmp_dir; /* Database tmp file directory. */
-
- char **db_data_dir; /* Database data file directories. */
- int data_cnt; /* Database data file slots. */
- int data_next; /* Next Database data file slot. */
-
- int db_mode; /* Default open permissions. */
- int dir_mode; /* Intermediate directory perms. */
- u_int32_t env_lid; /* Locker ID in non-threaded handles. */
- u_int32_t open_flags; /* Flags passed to DB_ENV->open. */
-
- void *reginfo; /* REGINFO structure reference. */
- DB_FH *lockfhp; /* fcntl(2) locking file handle. */
-
- int (**recover_dtab) /* Dispatch table for recover funcs. */
- __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
- size_t recover_dtab_size;
- /* Slots in the dispatch table. */
-
- void *cl_handle; /* RPC: remote client handle. */
- u_int cl_id; /* RPC: remote client env id. */
-
- int db_ref; /* DB reference count. */
-
- long shm_key; /* shmget(2) key. */
- u_int32_t tas_spins; /* test-and-set spins. */
-
- /*
- * List of open DB handles for this DB_ENV, used for cursor
- * adjustment. Must be protected for multi-threaded support.
- *
- * !!!
- * As this structure is allocated in per-process memory, the
- * mutex may need to be stored elsewhere on architectures unable
- * to support mutexes in heap memory, e.g. HP/UX 9.
- *
- * !!!
- * Explicit representation of structure in queue.h.
- * LIST_HEAD(dblist, __db);
- */
- DB_MUTEX *dblist_mutexp; /* Mutex. */
- struct {
- struct __db *lh_first;
- } dblist;
-
- /*
- * XA support.
- *
- * !!!
- * Explicit representations of structures from queue.h.
- * TAILQ_ENTRY(__db_env) links;
- * TAILQ_HEAD(xa_txn, __db_txn);
- */
- struct {
- struct __db_env *tqe_next;
- struct __db_env **tqe_prev;
- } links;
- struct __xa_txn { /* XA Active Transactions. */
- struct __db_txn *tqh_first;
- struct __db_txn **tqh_last;
- } xa_txn;
- int xa_rmid; /* XA Resource Manager ID. */
-
- /* API-private structure. */
- void *api1_internal; /* C++, Perl API private */
- void *api2_internal; /* Java API private */
-
- char *passwd; /* Cryptography support. */
- size_t passwd_len;
- void *crypto_handle; /* Primary handle. */
- DB_MUTEX *mt_mutexp; /* Mersenne Twister mutex. */
- int mti; /* Mersenne Twister index. */
- u_long *mt; /* Mersenne Twister state vector. */
-
- /* DB_ENV Methods. */
- int (*close) __P((DB_ENV *, u_int32_t));
- int (*dbremove) __P((DB_ENV *,
- DB_TXN *, const char *, const char *, u_int32_t));
- int (*dbrename) __P((DB_ENV *, DB_TXN *,
- const char *, const char *, const char *, u_int32_t));
- void (*err) __P((const DB_ENV *, int, const char *, ...));
- void (*errx) __P((const DB_ENV *, const char *, ...));
- int (*open) __P((DB_ENV *, const char *, u_int32_t, int));
- int (*remove) __P((DB_ENV *, const char *, u_int32_t));
- int (*stat_print) __P((DB_ENV *, u_int32_t));
-
- /* House-keeping. */
- int (*fileid_reset) __P((DB_ENV *, char *, int));
- int (*is_bigendian) __P((void));
- int (*lsn_reset) __P((DB_ENV *, char *, int));
- int (*prdbt) __P((DBT *,
- int, const char *, void *, int (*)(void *, const void *), int));
-
- /* Setters/getters. */
- int (*set_alloc) __P((DB_ENV *, void *(*)(size_t),
- void *(*)(void *, size_t), void (*)(void *)));
- int (*set_app_dispatch) __P((DB_ENV *,
- int (*)(DB_ENV *, DBT *, DB_LSN *, db_recops)));
- int (*get_data_dirs) __P((DB_ENV *, const char ***));
- int (*set_data_dir) __P((DB_ENV *, const char *));
- int (*get_encrypt_flags) __P((DB_ENV *, u_int32_t *));
- int (*set_encrypt) __P((DB_ENV *, const char *, u_int32_t));
- void (*set_errcall) __P((DB_ENV *,
- void (*)(const DB_ENV *, const char *, const char *)));
- void (*get_errfile) __P((DB_ENV *, FILE **));
- void (*set_errfile) __P((DB_ENV *, FILE *));
- void (*get_errpfx) __P((DB_ENV *, const char **));
- void (*set_errpfx) __P((DB_ENV *, const char *));
- int (*set_feedback) __P((DB_ENV *, void (*)(DB_ENV *, int, int)));
- int (*get_flags) __P((DB_ENV *, u_int32_t *));
- int (*set_flags) __P((DB_ENV *, u_int32_t, int));
- int (*get_home) __P((DB_ENV *, const char **));
- int (*set_intermediate_dir) __P((DB_ENV *, int, u_int32_t));
- int (*get_open_flags) __P((DB_ENV *, u_int32_t *));
- int (*set_paniccall) __P((DB_ENV *, void (*)(DB_ENV *, int)));
- int (*set_rpc_server) __P((DB_ENV *,
- void *, const char *, long, long, u_int32_t));
- int (*get_shm_key) __P((DB_ENV *, long *));
- int (*set_shm_key) __P((DB_ENV *, long));
- void (*set_msgcall) __P((DB_ENV *,
- void (*)(const DB_ENV *, const char *)));
- void (*get_msgfile) __P((DB_ENV *, FILE **));
- void (*set_msgfile) __P((DB_ENV *, FILE *));
- int (*get_tas_spins) __P((DB_ENV *, u_int32_t *));
- int (*set_tas_spins) __P((DB_ENV *, u_int32_t));
- int (*get_tmp_dir) __P((DB_ENV *, const char **));
- int (*set_tmp_dir) __P((DB_ENV *, const char *));
- int (*get_verbose) __P((DB_ENV *, u_int32_t, int *));
- int (*set_verbose) __P((DB_ENV *, u_int32_t, int));
-
- void *lg_handle; /* Log handle and methods. */
- int (*get_lg_bsize) __P((DB_ENV *, u_int32_t *));
- int (*set_lg_bsize) __P((DB_ENV *, u_int32_t));
- int (*get_lg_dir) __P((DB_ENV *, const char **));
- int (*set_lg_dir) __P((DB_ENV *, const char *));
- int (*get_lg_max) __P((DB_ENV *, u_int32_t *));
- int (*set_lg_max) __P((DB_ENV *, u_int32_t));
- int (*get_lg_regionmax) __P((DB_ENV *, u_int32_t *));
- int (*set_lg_regionmax) __P((DB_ENV *, u_int32_t));
- int (*log_archive) __P((DB_ENV *, char **[], u_int32_t));
- int (*log_cursor) __P((DB_ENV *, DB_LOGC **, u_int32_t));
- int (*log_file) __P((DB_ENV *, const DB_LSN *, char *, size_t));
- int (*log_flush) __P((DB_ENV *, const DB_LSN *));
- int (*log_put) __P((DB_ENV *, DB_LSN *, const DBT *, u_int32_t));
- int (*log_stat) __P((DB_ENV *, DB_LOG_STAT **, u_int32_t));
- int (*log_stat_print) __P((DB_ENV *, u_int32_t));
-
- void *lk_handle; /* Lock handle and methods. */
- int (*get_lk_conflicts) __P((DB_ENV *, const u_int8_t **, int *));
- int (*set_lk_conflicts) __P((DB_ENV *, u_int8_t *, int));
- int (*get_lk_detect) __P((DB_ENV *, u_int32_t *));
- int (*set_lk_detect) __P((DB_ENV *, u_int32_t));
- int (*set_lk_max) __P((DB_ENV *, u_int32_t));
- int (*get_lk_max_locks) __P((DB_ENV *, u_int32_t *));
- int (*set_lk_max_locks) __P((DB_ENV *, u_int32_t));
- int (*get_lk_max_lockers) __P((DB_ENV *, u_int32_t *));
- int (*set_lk_max_lockers) __P((DB_ENV *, u_int32_t));
- int (*get_lk_max_objects) __P((DB_ENV *, u_int32_t *));
- int (*set_lk_max_objects) __P((DB_ENV *, u_int32_t));
- int (*lock_detect) __P((DB_ENV *, u_int32_t, u_int32_t, int *));
- int (*lock_get) __P((DB_ENV *,
- u_int32_t, u_int32_t, const DBT *, db_lockmode_t, DB_LOCK *));
- int (*lock_put) __P((DB_ENV *, DB_LOCK *));
- int (*lock_id) __P((DB_ENV *, u_int32_t *));
- int (*lock_id_free) __P((DB_ENV *, u_int32_t));
- int (*lock_stat) __P((DB_ENV *, DB_LOCK_STAT **, u_int32_t));
- int (*lock_stat_print) __P((DB_ENV *, u_int32_t));
- int (*lock_vec) __P((DB_ENV *,
- u_int32_t, u_int32_t, DB_LOCKREQ *, int, DB_LOCKREQ **));
-
- void *mp_handle; /* Mpool handle and methods. */
- int (*get_cachesize) __P((DB_ENV *, u_int32_t *, u_int32_t *, int *));
- int (*set_cachesize) __P((DB_ENV *, u_int32_t, u_int32_t, int));
- int (*get_mp_mmapsize) __P((DB_ENV *, size_t *));
- int (*set_mp_mmapsize) __P((DB_ENV *, size_t));
- int (*get_mp_max_openfd) __P((DB_ENV *, int *));
- int (*set_mp_max_openfd) __P((DB_ENV *, int));
- int (*get_mp_max_write) __P((DB_ENV *, int *, int *));
- int (*set_mp_max_write) __P((DB_ENV *, int, int));
- int (*memp_fcreate) __P((DB_ENV *, DB_MPOOLFILE **, u_int32_t));
- int (*memp_register) __P((DB_ENV *, int,
- int (*)(DB_ENV *, db_pgno_t, void *, DBT *),
- int (*)(DB_ENV *, db_pgno_t, void *, DBT *)));
- int (*memp_stat) __P((DB_ENV *,
- DB_MPOOL_STAT **, DB_MPOOL_FSTAT ***, u_int32_t));
- int (*memp_stat_print) __P((DB_ENV *, u_int32_t));
- int (*memp_sync) __P((DB_ENV *, DB_LSN *));
- int (*memp_trickle) __P((DB_ENV *, int, int *));
-
- void *rep_handle; /* Replication handle and methods. */
- int (*rep_elect) __P((DB_ENV *, int, int, int,
- u_int32_t, int *, u_int32_t));
- int (*rep_flush) __P((DB_ENV *));
- int (*rep_process_message) __P((DB_ENV *, DBT *, DBT *,
- int *, DB_LSN *));
- int (*rep_start) __P((DB_ENV *, DBT *, u_int32_t));
- int (*rep_stat) __P((DB_ENV *, DB_REP_STAT **, u_int32_t));
- int (*rep_stat_print) __P((DB_ENV *, u_int32_t));
- int (*get_rep_limit) __P((DB_ENV *, u_int32_t *, u_int32_t *));
- int (*set_rep_limit) __P((DB_ENV *, u_int32_t, u_int32_t));
- int (*set_rep_request) __P((DB_ENV *, u_int32_t, u_int32_t));
- int (*set_rep_transport) __P((DB_ENV *, int,
- int (*) (DB_ENV *, const DBT *, const DBT *, const DB_LSN *,
- int, u_int32_t)));
-
- void *tx_handle; /* Txn handle and methods. */
- int (*get_tx_max) __P((DB_ENV *, u_int32_t *));
- int (*set_tx_max) __P((DB_ENV *, u_int32_t));
- int (*get_tx_timestamp) __P((DB_ENV *, time_t *));
- int (*set_tx_timestamp) __P((DB_ENV *, time_t *));
- int (*txn_begin) __P((DB_ENV *, DB_TXN *, DB_TXN **, u_int32_t));
- int (*txn_checkpoint) __P((DB_ENV *, u_int32_t, u_int32_t, u_int32_t));
- int (*txn_recover) __P((DB_ENV *,
- DB_PREPLIST *, long, long *, u_int32_t));
- int (*txn_stat) __P((DB_ENV *, DB_TXN_STAT **, u_int32_t));
- int (*txn_stat_print) __P((DB_ENV *, u_int32_t));
- int (*get_timeout) __P((DB_ENV *, db_timeout_t *, u_int32_t));
- int (*set_timeout) __P((DB_ENV *, db_timeout_t, u_int32_t));
-
-#define DB_TEST_ELECTINIT 1 /* after __rep_elect_init */
-#define DB_TEST_ELECTVOTE1 2 /* after sending VOTE1 */
-#define DB_TEST_POSTDESTROY 3 /* after destroy op */
-#define DB_TEST_POSTLOG 4 /* after logging all pages */
-#define DB_TEST_POSTLOGMETA 5 /* after logging meta in btree */
-#define DB_TEST_POSTOPEN 6 /* after __os_open */
-#define DB_TEST_POSTSYNC 7 /* after syncing the log */
-#define DB_TEST_PREDESTROY 8 /* before destroy op */
-#define DB_TEST_PREOPEN 9 /* before __os_open */
-#define DB_TEST_SUBDB_LOCKS 10 /* subdb locking tests */
- int test_abort; /* Abort value for testing. */
- int test_check; /* Checkpoint value for testing. */
- int test_copy; /* Copy value for testing. */
-
-#define DB_ENV_AUTO_COMMIT 0x0000001 /* DB_AUTO_COMMIT. */
-#define DB_ENV_CDB 0x0000002 /* DB_INIT_CDB. */
-#define DB_ENV_CDB_ALLDB 0x0000004 /* CDB environment wide locking. */
-#define DB_ENV_CREATE 0x0000008 /* DB_CREATE set. */
-#define DB_ENV_DBLOCAL 0x0000010 /* DB_ENV allocated for private DB. */
-#define DB_ENV_DIRECT_DB 0x0000020 /* DB_DIRECT_DB set. */
-#define DB_ENV_DIRECT_LOG 0x0000040 /* DB_DIRECT_LOG set. */
-#define DB_ENV_DSYNC_LOG 0x0000080 /* DB_DSYNC_LOG set. */
-#define DB_ENV_FATAL 0x0000100 /* Doing fatal recovery in env. */
-#define DB_ENV_LOCKDOWN 0x0000200 /* DB_LOCKDOWN set. */
-#define DB_ENV_LOG_AUTOREMOVE 0x0000400 /* DB_LOG_AUTOREMOVE set. */
-#define DB_ENV_LOG_INMEMORY 0x0000800 /* DB_LOG_INMEMORY set. */
-#define DB_ENV_NOLOCKING 0x0001000 /* DB_NOLOCKING set. */
-#define DB_ENV_NOMMAP 0x0002000 /* DB_NOMMAP set. */
-#define DB_ENV_NOPANIC 0x0004000 /* Okay if panic set. */
-#define DB_ENV_OPEN_CALLED 0x0008000 /* DB_ENV->open called. */
-#define DB_ENV_OVERWRITE 0x0010000 /* DB_OVERWRITE set. */
-#define DB_ENV_PRIVATE 0x0020000 /* DB_PRIVATE set. */
-#define DB_ENV_REGION_INIT 0x0040000 /* DB_REGION_INIT set. */
-#define DB_ENV_RPCCLIENT 0x0080000 /* DB_RPCCLIENT set. */
-#define DB_ENV_RPCCLIENT_GIVEN 0x0100000 /* User-supplied RPC client struct */
-#define DB_ENV_SYSTEM_MEM 0x0200000 /* DB_SYSTEM_MEM set. */
-#define DB_ENV_THREAD 0x0400000 /* DB_THREAD set. */
-#define DB_ENV_TIME_NOTGRANTED 0x0800000 /* DB_TIME_NOTGRANTED set. */
-#define DB_ENV_TXN_NOSYNC 0x1000000 /* DB_TXN_NOSYNC set. */
-#define DB_ENV_TXN_WRITE_NOSYNC 0x2000000 /* DB_TXN_WRITE_NOSYNC set. */
-#define DB_ENV_YIELDCPU 0x4000000 /* DB_YIELDCPU set. */
- u_int32_t flags;
-};
-
-#ifndef DB_DBM_HSEARCH
-#define DB_DBM_HSEARCH 0 /* No historic interfaces by default. */
-#endif
-#if DB_DBM_HSEARCH != 0
-/*******************************************************
- * Dbm/Ndbm historic interfaces.
- *******************************************************/
-typedef struct __db DBM;
-
-#define DBM_INSERT 0 /* Flags to dbm_store(). */
-#define DBM_REPLACE 1
-
-/*
- * The DB support for ndbm(3) always appends this suffix to the
- * file name to avoid overwriting the user's original database.
- */
-#define DBM_SUFFIX ".db"
-
-#if defined(_XPG4_2)
-typedef struct {
- char *dptr;
- size_t dsize;
-} datum;
-#else
-typedef struct {
- char *dptr;
- int dsize;
-} datum;
-#endif
-
-/*
- * Translate NDBM calls into DB calls so that DB doesn't step on the
- * application's name space.
- */
-#define dbm_clearerr(a) __db_ndbm_clearerr(a)
-#define dbm_close(a) __db_ndbm_close(a)
-#define dbm_delete(a, b) __db_ndbm_delete(a, b)
-#define dbm_dirfno(a) __db_ndbm_dirfno(a)
-#define dbm_error(a) __db_ndbm_error(a)
-#define dbm_fetch(a, b) __db_ndbm_fetch(a, b)
-#define dbm_firstkey(a) __db_ndbm_firstkey(a)
-#define dbm_nextkey(a) __db_ndbm_nextkey(a)
-#define dbm_open(a, b, c) __db_ndbm_open(a, b, c)
-#define dbm_pagfno(a) __db_ndbm_pagfno(a)
-#define dbm_rdonly(a) __db_ndbm_rdonly(a)
-#define dbm_store(a, b, c, d) \
- __db_ndbm_store(a, b, c, d)
-
-/*
- * Translate DBM calls into DB calls so that DB doesn't step on the
- * application's name space.
- *
- * The global variables dbrdonly, dirf and pagf were not retained when 4BSD
- * replaced the dbm interface with ndbm, and are not supported here.
- */
-#define dbminit(a) __db_dbm_init(a)
-#define dbmclose __db_dbm_close
-#if !defined(__cplusplus)
-#define delete(a) __db_dbm_delete(a)
-#endif
-#define fetch(a) __db_dbm_fetch(a)
-#define firstkey __db_dbm_firstkey
-#define nextkey(a) __db_dbm_nextkey(a)
-#define store(a, b) __db_dbm_store(a, b)
-
-/*******************************************************
- * Hsearch historic interface.
- *******************************************************/
-typedef enum {
- FIND, ENTER
-} ACTION;
-
-typedef struct entry {
- char *key;
- char *data;
-} ENTRY;
-
-#define hcreate(a) __db_hcreate(a)
-#define hdestroy __db_hdestroy
-#define hsearch(a, b) __db_hsearch(a, b)
-
-#endif /* DB_DBM_HSEARCH */
-
-#if defined(__cplusplus)
-}
-#endif
-#endif /* !_DB_H_ */
-
-/* DO NOT EDIT: automatically built by dist/s_include. */
-#ifndef _DB_EXT_PROT_IN_
-#define _DB_EXT_PROT_IN_
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-int db_create __P((DB **, DB_ENV *, u_int32_t));
-char *db_strerror __P((int));
-int db_env_create __P((DB_ENV **, u_int32_t));
-char *db_version __P((int *, int *, int *));
-int log_compare __P((const DB_LSN *, const DB_LSN *));
-int db_env_set_func_close __P((int (*)(int)));
-int db_env_set_func_dirfree __P((void (*)(char **, int)));
-int db_env_set_func_dirlist __P((int (*)(const char *, char ***, int *)));
-int db_env_set_func_exists __P((int (*)(const char *, int *)));
-int db_env_set_func_free __P((void (*)(void *)));
-int db_env_set_func_fsync __P((int (*)(int)));
-int db_env_set_func_ftruncate __P((int (*)(int, off_t)));
-int db_env_set_func_ioinfo __P((int (*)(const char *, int, u_int32_t *, u_int32_t *, u_int32_t *)));
-int db_env_set_func_malloc __P((void *(*)(size_t)));
-int db_env_set_func_map __P((int (*)(char *, size_t, int, int, void **)));
-int db_env_set_func_pread __P((ssize_t (*)(int, void *, size_t, off_t)));
-int db_env_set_func_pwrite __P((ssize_t (*)(int, const void *, size_t, off_t)));
-int db_env_set_func_open __P((int (*)(const char *, int, ...)));
-int db_env_set_func_read __P((ssize_t (*)(int, void *, size_t)));
-int db_env_set_func_realloc __P((void *(*)(void *, size_t)));
-int db_env_set_func_rename __P((int (*)(const char *, const char *)));
-int db_env_set_func_seek __P((int (*)(int, off_t, int)));
-int db_env_set_func_sleep __P((int (*)(u_long, u_long)));
-int db_env_set_func_unlink __P((int (*)(const char *)));
-int db_env_set_func_unmap __P((int (*)(void *, size_t)));
-int db_env_set_func_write __P((ssize_t (*)(int, const void *, size_t)));
-int db_env_set_func_yield __P((int (*)(void)));
-int db_sequence_create __P((DB_SEQUENCE **, DB *, u_int32_t));
-#if DB_DBM_HSEARCH != 0
-int __db_ndbm_clearerr __P((DBM *));
-void __db_ndbm_close __P((DBM *));
-int __db_ndbm_delete __P((DBM *, datum));
-int __db_ndbm_dirfno __P((DBM *));
-int __db_ndbm_error __P((DBM *));
-datum __db_ndbm_fetch __P((DBM *, datum));
-datum __db_ndbm_firstkey __P((DBM *));
-datum __db_ndbm_nextkey __P((DBM *));
-DBM *__db_ndbm_open __P((const char *, int, int));
-int __db_ndbm_pagfno __P((DBM *));
-int __db_ndbm_rdonly __P((DBM *));
-int __db_ndbm_store __P((DBM *, datum, datum, int));
-int __db_dbm_close __P((void));
-int __db_dbm_delete __P((datum));
-datum __db_dbm_fetch __P((datum));
-datum __db_dbm_firstkey __P((void));
-int __db_dbm_init __P((char *));
-datum __db_dbm_nextkey __P((datum));
-int __db_dbm_store __P((datum, datum));
-#endif
-#if DB_DBM_HSEARCH != 0
-int __db_hcreate __P((size_t));
-ENTRY *__db_hsearch __P((ENTRY, ACTION));
-void __db_hdestroy __P((void));
-#endif
-
-#if defined(__cplusplus)
-}
-#endif
-#endif /* !_DB_EXT_PROT_IN_ */
diff --git a/db/build_win32/db_archive.dsp b/db/build_win32/db_archive.dsp
deleted file mode 100644
index 4c664182d..000000000
--- a/db/build_win32/db_archive.dsp
+++ /dev/null
@@ -1,148 +0,0 @@
-# Microsoft Developer Studio Project File - Name="db_archive" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=db_archive - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "db_archive.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "db_archive.mak" CFG="db_archive - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "db_archive - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_archive - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_archive - Win32 Release Static" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_archive - Win32 Debug Static" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "db_archive - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 Release/libdb43.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-
-!ELSEIF "$(CFG)" == "db_archive - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 Debug/libdb43d.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-
-!ELSEIF "$(CFG)" == "db_archive - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Release_static/libdb43.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 Release_static/libdb43s.lib /nologo /subsystem:console /machine:I386
-
-!ELSEIF "$(CFG)" == "db_archive - Win32 Debug Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Debug_static/libdb43d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no
-# ADD LINK32 Debug_static/libdb43sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "db_archive - Win32 Release"
-# Name "db_archive - Win32 Debug"
-# Name "db_archive - Win32 Release Static"
-# Name "db_archive - Win32 Debug Static"
-# Begin Source File
-
-SOURCE=..\db_archive\db_archive.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\clib\getopt.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win32/db_buildall.dsp b/db/build_win32/db_buildall.dsp
deleted file mode 100644
index 0f67cd945..000000000
--- a/db/build_win32/db_buildall.dsp
+++ /dev/null
@@ -1,128 +0,0 @@
-# Microsoft Developer Studio Project File - Name="db_buildall" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 5.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) External Target" 0x0106
-
-CFG=db_buildall - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "db_buildall.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "db_buildall.mak" CFG="db_buildall - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "db_buildall - Win32 Release" (based on "Win32 (x86) External Target")
-!MESSAGE "db_buildall - Win32 Debug" (based on "Win32 (x86) External Target")
-!MESSAGE "db_buildall - Win32 Release Static" (based on\
- "Win32 (x86) External Target")
-!MESSAGE "db_buildall - Win32 Debug Static" (based on\
- "Win32 (x86) External Target")
-!MESSAGE
-
-# Begin Project
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-
-!IF "$(CFG)" == "db_buildall - Win32 Release"
-
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Cmd_Line "NMAKE /f db_buildall.mak"
-# PROP BASE Rebuild_Opt "/a"
-# PROP BASE Target_File "db_buildall.exe"
-# PROP BASE Bsc_Name "db_buildall.bsc"
-# PROP BASE Target_Dir ""
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Cmd_Line "echo DB release version built."
-# PROP Rebuild_Opt ""
-# PROP Target_File "db_buildall.exe"
-# PROP Bsc_Name "db_buildall.bsc"
-# PROP Target_Dir ""
-
-!ELSEIF "$(CFG)" == "db_buildall - Win32 Debug"
-
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Cmd_Line "NMAKE /f db_buildall.mak"
-# PROP BASE Rebuild_Opt "/a"
-# PROP BASE Target_File "db_buildall.exe"
-# PROP BASE Bsc_Name "db_buildall.bsc"
-# PROP BASE Target_Dir ""
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Cmd_Line "echo DB debug version built."
-# PROP Rebuild_Opt ""
-# PROP Target_File "db_buildall.exe"
-# PROP Bsc_Name "db_buildall.bsc"
-# PROP Target_Dir ""
-
-!ELSEIF "$(CFG)" == "db_buildall - Win32 Release Static"
-
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release_static"
-# PROP BASE Intermediate_Dir "Release_static"
-# PROP BASE Cmd_Line "echo DB release version built."
-# PROP BASE Rebuild_Opt ""
-# PROP BASE Target_File "db_buildall.exe"
-# PROP BASE Bsc_Name "db_buildall.bsc"
-# PROP BASE Target_Dir ""
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Cmd_Line "echo DB release version built."
-# PROP Rebuild_Opt ""
-# PROP Target_File "db_buildall.exe"
-# PROP Bsc_Name "db_buildall.bsc"
-# PROP Target_Dir ""
-
-!ELSEIF "$(CFG)" == "db_buildall - Win32 Debug Static"
-
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug_static"
-# PROP BASE Intermediate_Dir "Debug_static"
-# PROP BASE Cmd_Line "echo DB debug version built."
-# PROP BASE Rebuild_Opt ""
-# PROP BASE Target_File "db_buildall.exe"
-# PROP BASE Bsc_Name "db_buildall.bsc"
-# PROP BASE Target_Dir ""
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_static"
-# PROP Cmd_Line "echo DB debug version built."
-# PROP Rebuild_Opt ""
-# PROP Target_File "db_buildall.exe"
-# PROP Bsc_Name "db_buildall.bsc"
-# PROP Target_Dir ""
-
-!ENDIF
-
-# Begin Target
-
-# Name "db_buildall - Win32 Release"
-# Name "db_buildall - Win32 Debug"
-# Name "db_buildall - Win32 Release Static"
-# Name "db_buildall - Win32 Debug Static"
-
-!IF "$(CFG)" == "db_buildall - Win32 Release"
-
-!ELSEIF "$(CFG)" == "db_buildall - Win32 Debug"
-
-!ELSEIF "$(CFG)" == "db_buildall - Win32 Release Static"
-
-!ELSEIF "$(CFG)" == "db_buildall - Win32 Debug Static"
-
-!ENDIF
-
-# End Target
-# End Project
diff --git a/db/build_win32/db_checkpoint.dsp b/db/build_win32/db_checkpoint.dsp
deleted file mode 100644
index 26a647d48..000000000
--- a/db/build_win32/db_checkpoint.dsp
+++ /dev/null
@@ -1,148 +0,0 @@
-# Microsoft Developer Studio Project File - Name="db_checkpoint" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=db_checkpoint - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "db_checkpoint.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "db_checkpoint.mak" CFG="db_checkpoint - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "db_checkpoint - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_checkpoint - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_checkpoint - Win32 Release Static" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_checkpoint - Win32 Debug Static" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "db_checkpoint - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 Release/libdb43.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-
-!ELSEIF "$(CFG)" == "db_checkpoint - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 Debug/libdb43d.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-
-!ELSEIF "$(CFG)" == "db_checkpoint - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Release_static/libdb43.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 Release_static/libdb43s.lib /nologo /subsystem:console /machine:I386
-
-!ELSEIF "$(CFG)" == "db_checkpoint - Win32 Debug Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Debug_static/libdb43d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no
-# ADD LINK32 Debug_static/libdb43sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "db_checkpoint - Win32 Release"
-# Name "db_checkpoint - Win32 Debug"
-# Name "db_checkpoint - Win32 Release Static"
-# Name "db_checkpoint - Win32 Debug Static"
-# Begin Source File
-
-SOURCE=..\db_checkpoint\db_checkpoint.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\clib\getopt.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win32/db_config.h b/db/build_win32/db_config.h
deleted file mode 100644
index 1e4ea1c8c..000000000
--- a/db/build_win32/db_config.h
+++ /dev/null
@@ -1,443 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_win32. */
-/* Define to 1 if you want to build a version for running the test suite. */
-/* #undef CONFIG_TEST */
-
-/* We use DB_WIN32 much as one would use _WIN32 -- to specify that we're using
- an operating system environment that supports Win32 calls and semantics. We
- don't use _WIN32 because Cygwin/GCC also defines _WIN32, even though
- Cygwin/GCC closely emulates the Unix environment. */
-#define DB_WIN32 1
-
-/* Define to 1 if you want a debugging version. */
-/* #undef DEBUG */
-#if defined(_DEBUG)
-#if !defined(DEBUG)
-#define DEBUG 1
-#endif
-#endif
-
-/* Define to 1 if you want a version that logs read operations. */
-/* #undef DEBUG_ROP */
-
-/* Define to 1 if you want a version that logs write operations. */
-/* #undef DEBUG_WOP */
-
-/* Define to 1 if you want a version with run-time diagnostic checking. */
-/* #undef DIAGNOSTIC */
-
-/* Define to 1 if you have the `clock_gettime' function. */
-/* #undef HAVE_CLOCK_GETTIME */
-
-/* Define to 1 if Berkeley DB release includes strong cryptography. */
-#ifndef HAVE_SMALLBUILD
-#define HAVE_CRYPTO 1
-#endif
-
-/* Define to 1 if you have the `directio' function. */
-/* #undef HAVE_DIRECTIO */
-
-/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
- */
-/* #undef HAVE_DIRENT_H */
-
-/* Define to 1 if you have the <dlfcn.h> header file. */
-/* #undef HAVE_DLFCN_H */
-
-/* Define to 1 if you have EXIT_SUCCESS/EXIT_FAILURE #defines. */
-#define HAVE_EXIT_SUCCESS 1
-
-/* Define to 1 if fcntl/F_SETFD denies child access to file descriptors. */
-/* #undef HAVE_FCNTL_F_SETFD */
-
-/* Define to 1 if you have the `fdatasync' function. */
-/* #undef HAVE_FDATASYNC */
-
-/* Define to 1 if allocated filesystem blocks are not zeroed. */
-#define HAVE_FILESYSTEM_NOTZERO 1
-
-/* Define to 1 if you have the `ftruncate' function. */
-#define HAVE_FTRUNCATE 1
-
-/* Define to 1 if you have the `getcwd' function. */
-#define HAVE_GETCWD 1
-
-/* Define to 1 if you have the `getopt' function. */
-/* #undef HAVE_GETOPT */
-
-/* Define to 1 if you have the `getrusage' function. */
-/* #undef HAVE_GETRUSAGE */
-
-/* Define to 1 if you have the `gettimeofday' function. */
-/* #undef HAVE_GETTIMEOFDAY */
-
-/* Define to 1 if you have the `getuid' function. */
-/* #undef HAVE_GETUID */
-
-/* Define to 1 if building Hash access method. */
-#ifndef HAVE_SMALLBUILD
-#define HAVE_HASH 1
-#endif
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-/* #undef HAVE_INTTYPES_H */
-
-/* Define to 1 if you have the `nsl' library (-lnsl). */
-/* #undef HAVE_LIBNSL */
-
-/* Define to 1 if the system has the type `long long'. */
-#define HAVE_LONG_LONG 1
-
-/* Define to 1 if you have the `memcmp' function. */
-#define HAVE_MEMCMP 1
-
-/* Define to 1 if you have the `memcpy' function. */
-#define HAVE_MEMCPY 1
-
-/* Define to 1 if you have the `memmove' function. */
-#define HAVE_MEMMOVE 1
-
-/* Define to 1 if you have the <memory.h> header file. */
-#define HAVE_MEMORY_H 1
-
-/* Define to 1 if you have the `mlock' function. */
-/* #undef HAVE_MLOCK */
-
-/* Define to 1 if you have the `mmap' function. */
-/* #undef HAVE_MMAP */
-
-/* Define to 1 if you have the `munlock' function. */
-/* #undef HAVE_MUNLOCK */
-
-/* Define to 1 if you have the `munmap' function. */
-/* #undef HAVE_MUNMAP */
-
-/* Define to 1 to use the GCC compiler and 68K assembly language mutexes. */
-/* #undef HAVE_MUTEX_68K_GCC_ASSEMBLY */
-
-/* Define to 1 to use the AIX _check_lock mutexes. */
-/* #undef HAVE_MUTEX_AIX_CHECK_LOCK */
-
-/* Define to 1 to use the GCC compiler and Alpha assembly language mutexes. */
-/* #undef HAVE_MUTEX_ALPHA_GCC_ASSEMBLY */
-
-/* Define to 1 to use the GCC compiler and ARM assembly language mutexes. */
-/* #undef HAVE_MUTEX_ARM_GCC_ASSEMBLY */
-
-/* Define to 1 to use the Apple/Darwin _spin_lock_try mutexes. */
-/* #undef HAVE_MUTEX_DARWIN_SPIN_LOCK_TRY */
-
-/* Define to 1 to use the UNIX fcntl system call mutexes. */
-/* #undef HAVE_MUTEX_FCNTL */
-
-/* Define to 1 to use the GCC compiler and PaRisc assembly language mutexes.
- */
-/* #undef HAVE_MUTEX_HPPA_GCC_ASSEMBLY */
-
-/* Define to 1 to use the msem_XXX mutexes on HP-UX. */
-/* #undef HAVE_MUTEX_HPPA_MSEM_INIT */
-
-/* Define to 1 to use the GCC compiler and IA64 assembly language mutexes. */
-/* #undef HAVE_MUTEX_IA64_GCC_ASSEMBLY */
-
-/* Define to 1 to use the msem_XXX mutexes on systems other than HP-UX. */
-/* #undef HAVE_MUTEX_MSEM_INIT */
-
-/* Define to 1 to use the GCC compiler and PowerPC assembly language mutexes.
- */
-/* #undef HAVE_MUTEX_PPC_GCC_ASSEMBLY */
-
-/* Define to 1 to use POSIX 1003.1 pthread_XXX mutexes. */
-/* #undef HAVE_MUTEX_PTHREADS */
-
-/* Define to 1 to use Reliant UNIX initspin mutexes. */
-/* #undef HAVE_MUTEX_RELIANTUNIX_INITSPIN */
-
-/* Define to 1 to use the IBM C compiler and S/390 assembly language mutexes.
- */
-/* #undef HAVE_MUTEX_S390_CC_ASSEMBLY */
-
-/* Define to 1 to use the GCC compiler and S/390 assembly language mutexes. */
-/* #undef HAVE_MUTEX_S390_GCC_ASSEMBLY */
-
-/* Define to 1 to use the SCO compiler and x86 assembly language mutexes. */
-/* #undef HAVE_MUTEX_SCO_X86_CC_ASSEMBLY */
-
-/* Define to 1 to use the obsolete POSIX 1003.1 sema_XXX mutexes. */
-/* #undef HAVE_MUTEX_SEMA_INIT */
-
-/* Define to 1 to use the SGI XXX_lock mutexes. */
-/* #undef HAVE_MUTEX_SGI_INIT_LOCK */
-
-/* Define to 1 to use the Solaris _lock_XXX mutexes. */
-/* #undef HAVE_MUTEX_SOLARIS_LOCK_TRY */
-
-/* Define to 1 to use the Solaris lwp threads mutexes. */
-/* #undef HAVE_MUTEX_SOLARIS_LWP */
-
-/* Define to 1 to use the GCC compiler and Sparc assembly language mutexes. */
-/* #undef HAVE_MUTEX_SPARC_GCC_ASSEMBLY */
-
-/* Define to 1 if mutexes hold system resources. */
-/* #undef HAVE_MUTEX_SYSTEM_RESOURCES */
-
-/* Define to 1 if fast mutexes are available. */
-#define HAVE_MUTEX_THREADS 1
-
-/* Define to 1 to configure mutexes intra-process only. */
-/* #undef HAVE_MUTEX_THREAD_ONLY */
-
-/* Define to 1 to use the CC compiler and Tru64 assembly language mutexes. */
-/* #undef HAVE_MUTEX_TRU64_CC_ASSEMBLY */
-
-/* Define to 1 to use the UNIX International mutexes. */
-/* #undef HAVE_MUTEX_UI_THREADS */
-
-/* Define to 1 to use the UTS compiler and assembly language mutexes. */
-/* #undef HAVE_MUTEX_UTS_CC_ASSEMBLY */
-
-/* Define to 1 to use VMS mutexes. */
-/* #undef HAVE_MUTEX_VMS */
-
-/* Define to 1 to use VxWorks mutexes. */
-/* #undef HAVE_MUTEX_VXWORKS */
-
-/* Define to 1 to use the MSVC compiler and Windows mutexes. */
-#define HAVE_MUTEX_WIN32 1
-
-/* Define to 1 to use the GCC compiler and Windows mutexes. */
-/* #undef HAVE_MUTEX_WIN32_GCC */
-
-/* Define to 1 to use the GCC compiler and x86 assembly language mutexes. */
-/* #undef HAVE_MUTEX_X86_GCC_ASSEMBLY */
-
-/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
-/* #undef HAVE_NDIR_H */
-
-/* Define to 1 if you have the O_DIRECT flag. */
-/* #undef HAVE_O_DIRECT */
-
-/* Define to 1 if you have the `pread' function. */
-/* #undef HAVE_PREAD */
-
-/* Define to 1 if you have the `pstat_getdynamic' function. */
-/* #undef HAVE_PSTAT_GETDYNAMIC */
-
-/* Define to 1 if you have the `pwrite' function. */
-/* #undef HAVE_PWRITE */
-
-/* Define to 1 if building on QNX. */
-/* #undef HAVE_QNX */
-
-/* Define to 1 if building Queue access method. */
-#ifndef HAVE_SMALLBUILD
-#define HAVE_QUEUE 1
-#endif
-
-/* Define to 1 if you have the `raise' function. */
-#define HAVE_RAISE 1
-
-/* Define to 1 if you have the `rand' function. */
-#define HAVE_RAND 1
-
-/* Define to 1 if building replication support. */
-#ifndef HAVE_SMALLBUILD
-#define HAVE_REPLICATION 1
-#endif
-
-/* Define to 1 if building RPC client/server. */
-/* #undef HAVE_RPC */
-
-/* Define to 1 if you have the `sched_yield' function. */
-/* #undef HAVE_SCHED_YIELD */
-
-/* Define to 1 if you have the `select' function. */
-/* #undef HAVE_SELECT */
-
-/* Define to 1 if building sequence support. */
-#define HAVE_SEQUENCE 1
-
-/* Define to 1 if you have the `shmget' function. */
-/* #undef HAVE_SHMGET */
-
-/* Define to 1 if you have the `snprintf' function. */
-#define HAVE_SNPRINTF 1
-
-/* Define to 1 if you have the `srand' function. */
-#define HAVE_SRAND 1
-
-/* Define to 1 if building statistics support. */
-#define HAVE_STATISTICS 1
-
-/* Define to 1 if you have the <stdint.h> header file. */
-/* #undef HAVE_STDINT_H */
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#define HAVE_STDLIB_H 1
-
-/* Define to 1 if you have the `strcasecmp' function. */
-/* #undef HAVE_STRCASECMP */
-
-/* Define to 1 if you have the `strdup' function. */
-#define HAVE_STRDUP 1
-
-/* Define to 1 if you have the `strerror' function. */
-#define HAVE_STRERROR 1
-
-/* Define to 1 if you have the <strings.h> header file. */
-#define HAVE_STRINGS_H 1
-
-/* Define to 1 if you have the <string.h> header file. */
-#define HAVE_STRING_H 1
-
-/* Define to 1 if you have the `strtol' function. */
-#define HAVE_STRTOL 1
-
-/* Define to 1 if you have the `strtoul' function. */
-#define HAVE_STRTOUL 1
-
-/* Define to 1 if `st_blksize' is member of `struct stat'. */
-/* #undef HAVE_STRUCT_STAT_ST_BLKSIZE */
-
-/* Define to 1 if you have the `sysconf' function. */
-/* #undef HAVE_SYSCONF */
-
-/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
- */
-/* #undef HAVE_SYS_DIR_H */
-
-/* Define to 1 if you have the <sys/fcntl.h> header file. */
-#define HAVE_SYS_FCNTL_H 1
-
-/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
- */
-/* #undef HAVE_SYS_NDIR_H */
-
-/* Define to 1 if you have the <sys/select.h> header file. */
-/* #undef HAVE_SYS_SELECT_H */
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#define HAVE_SYS_STAT_H 1
-
-/* Define to 1 if you have the <sys/time.h> header file. */
-/* #undef HAVE_SYS_TIME_H */
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#define HAVE_SYS_TYPES_H 1
-
-/* Define to 1 if you have the <unistd.h> header file. */
-/* #undef HAVE_UNISTD_H */
-
-/* Define to 1 if unlink of file with open file descriptors will fail. */
-/* #undef HAVE_UNLINK_WITH_OPEN_FAILURE */
-
-/* Define to 1 if the system has the type `unsigned long long'. */
-#define HAVE_UNSIGNED_LONG_LONG 1
-
-/* Define to 1 if building access method verification support. */
-#ifndef HAVE_SMALLBUILD
-#define HAVE_VERIFY 1
-#endif
-
-/* Define to 1 if you have the `vsnprintf' function. */
-#define HAVE_VSNPRINTF 1
-
-/* Define to 1 if building VxWorks. */
-/* #undef HAVE_VXWORKS */
-
-/* Define to 1 if you have the `yield' function. */
-/* #undef HAVE_YIELD */
-
-/* Define to 1 if you have the `_fstati64' function. */
-#define HAVE__FSTATI64 1
-
-/* Define to a value if using non-standard mutex alignment. */
-/* #undef MUTEX_ALIGN */
-
-/* Define to the address where bug reports for this package should be sent. */
-#define PACKAGE_BUGREPORT "support@sleepycat.com"
-
-/* Define to the full name of this package. */
-#define PACKAGE_NAME "Berkeley DB"
-
-/* Define to the full name and version of this package. */
-#define PACKAGE_STRING "Berkeley DB 4.3.27"
-
-/* Define to the one symbol short name of this package. */
-#define PACKAGE_TARNAME "db-4.3.27"
-
-/* Define to the version of this package. */
-#define PACKAGE_VERSION "4.3.27"
-
-/* Define to 1 if the `S_IS*' macros in <sys/stat.h> do not work properly. */
-/* #undef STAT_MACROS_BROKEN */
-
-/* Define to 1 if you have the ANSI C header files. */
-#define STDC_HEADERS 1
-
-/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
-/* #undef TIME_WITH_SYS_TIME */
-
-/* Define to 1 to mask harmless uninitialized memory read/writes. */
-/* #undef UMRW */
-
-/* Number of bits in a file offset, on hosts where this is settable. */
-/* #undef _FILE_OFFSET_BITS */
-
-/* Define for large files, on AIX-style hosts. */
-/* #undef _LARGE_FILES */
-
-/* Define to empty if `const' does not conform to ANSI C. */
-/* #undef const */
-
-/*
- * Exit success/failure macros.
- */
-#ifndef HAVE_EXIT_SUCCESS
-#define EXIT_FAILURE 1
-#define EXIT_SUCCESS 0
-#endif
-
-/*
- * Don't step on the namespace. Other libraries may have their own
- * implementations of these functions, we don't want to use their
- * implementations or force them to use ours based on the load order.
- */
-#ifndef HAVE_GETCWD
-#define getcwd __db_Cgetcwd
-#endif
-#ifndef HAVE_MEMCMP
-#define memcmp __db_Cmemcmp
-#endif
-#ifndef HAVE_MEMCPY
-#define memcpy __db_Cmemcpy
-#endif
-#ifndef HAVE_MEMMOVE
-#define memmove __db_Cmemmove
-#endif
-#ifndef HAVE_RAISE
-#define raise __db_Craise
-#endif
-#ifndef HAVE_SNPRINTF
-#define snprintf __db_Csnprintf
-#endif
-#ifndef HAVE_STRCASECMP
-#define strcasecmp __db_Cstrcasecmp
-#define strncasecmp __db_Cstrncasecmp
-#endif
-#ifndef HAVE_STRERROR
-#define strerror __db_Cstrerror
-#endif
-#ifndef HAVE_VSNPRINTF
-#define vsnprintf __db_Cvsnprintf
-#endif
-
-#include "win_db.h"
-
-/*
- * Microsoft's compiler _doesn't_ define __STDC__ unless you invoke it with
- * arguments turning OFF all vendor extensions. Even more unfortunately, if
- * we do that, it fails to parse windows.h!!!!! So, we define __STDC__ here,
- * after windows.h comes in. Note: the compiler knows we've defined it, and
- * starts enforcing strict ANSI compliance from this point on.
- */
-#define __STDC__ 1
diff --git a/db/build_win32/db_cxx.h b/db/build_win32/db_cxx.h
deleted file mode 100644
index abba7b635..000000000
--- a/db/build_win32/db_cxx.h
+++ /dev/null
@@ -1,1089 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_win32. */
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: db_cxx.in,v 11.147 2004/10/07 21:39:48 bostic Exp $
- */
-
-#ifndef _DB_CXX_H_
-#define _DB_CXX_H_
-//
-// C++ assumptions:
-//
-// To ensure portability to many platforms, both new and old, we make
-// few assumptions about the C++ compiler and library. For example,
-// we do not expect STL, templates or namespaces to be available. The
-// "newest" C++ feature used is exceptions, which are used liberally
-// to transmit error information. Even the use of exceptions can be
-// disabled at runtime, to do so, use the DB_CXX_NO_EXCEPTIONS flags
-// with the DbEnv or Db constructor.
-//
-// C++ naming conventions:
-//
-// - All top level class names start with Db.
-// - All class members start with lower case letter.
-// - All private data members are suffixed with underscore.
-// - Use underscores to divide names into multiple words.
-// - Simple data accessors are named with get_ or set_ prefix.
-// - All method names are taken from names of functions in the C
-// layer of db (usually by dropping a prefix like "db_").
-// These methods have the same argument types and order,
-// other than dropping the explicit arg that acts as "this".
-//
-// As a rule, each DbFoo object has exactly one underlying DB_FOO struct
-// (defined in db.h) associated with it. In some cases, we inherit directly
-// from the DB_FOO structure to make this relationship explicit. Often,
-// the underlying C layer allocates and deallocates these structures, so
-// there is no easy way to add any data to the DbFoo class. When you see
-// a comment about whether data is permitted to be added, this is what
-// is going on. Of course, if we need to add data to such C++ classes
-// in the future, we will arrange to have an indirect pointer to the
-// DB_FOO struct (as some of the classes already have).
-//
-
-////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////
-//
-// Forward declarations
-//
-
-#include <stdarg.h>
-
-#define HAVE_CXX_STDHEADERS 1
-#ifdef HAVE_CXX_STDHEADERS
-#include <iostream>
-#include <exception>
-#define __DB_STD(x) std::x
-#else
-#include <iostream.h>
-#include <exception.h>
-#define __DB_STD(x) x
-#endif
-
-#include "db.h"
-
-class Db; // forward
-class Dbc; // forward
-class DbEnv; // forward
-class DbInfo; // forward
-class DbLock; // forward
-class DbLogc; // forward
-class DbLsn; // forward
-class DbMpoolFile; // forward
-class DbPreplist; // forward
-class Dbt; // forward
-class DbTxn; // forward
-class DbLock; // forward
-class DbSequence; // forward
-class Dbt; // forward
-
-class DbMultipleIterator; // forward
-class DbMultipleKeyDataIterator; // forward
-class DbMultipleRecnoDataIterator; // forward
-class DbMultipleDataIterator; // forward
-
-class DbException; // forward
-class DbDeadlockException; // forward
-class DbLockNotGrantedException; // forward
-class DbMemoryException; // forward
-class DbRunRecoveryException; // forward
-
-////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////
-//
-// Turn off inappropriate compiler warnings
-//
-
-#ifdef _MSC_VER
-
-// These are level 4 warnings that are explicitly disabled.
-// With Visual C++, by default you do not see above level 3 unless
-// you use /W4. But we like to compile with the highest level
-// warnings to catch other errors.
-//
-// 4201: nameless struct/union
-// triggered by standard include file <winnt.h>
-//
-// 4514: unreferenced inline function has been removed
-// certain include files in MSVC define methods that are not called
-//
-#pragma warning(disable: 4201 4514)
-
-#endif
-
-////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////
-//
-// Mechanisms for declaring classes
-//
-
-//
-// Every class defined in this file has an _exported next to the class name.
-// This is needed for WinTel machines so that the class methods can
-// be exported or imported in a DLL as appropriate. Users of the DLL
-// use the define DB_USE_DLL. When the DLL is built, DB_CREATE_DLL
-// must be defined.
-//
-#if defined(_MSC_VER)
-
-# if defined(DB_CREATE_DLL)
-# define _exported __declspec(dllexport) // creator of dll
-# elif defined(DB_USE_DLL)
-# define _exported __declspec(dllimport) // user of dll
-# else
-# define _exported // static lib creator or user
-# endif
-
-#else /* _MSC_VER */
-
-# define _exported
-
-#endif /* _MSC_VER */
-
-// Some interfaces can be customized by allowing users to define
-// callback functions. For performance and logistical reasons, some
-// callback functions must be declared in extern "C" blocks. For others,
-// we allow you to declare the callbacks in C++ or C (or an extern "C"
-// block) as you wish. See the set methods for the callbacks for
-// the choices.
-//
-extern "C" {
- typedef void * (*db_malloc_fcn_type)
- (size_t);
- typedef void * (*db_realloc_fcn_type)
- (void *, size_t);
- typedef void (*db_free_fcn_type)
- (void *);
- typedef int (*bt_compare_fcn_type) /*C++ version available*/
- (DB *, const DBT *, const DBT *);
- typedef size_t (*bt_prefix_fcn_type) /*C++ version available*/
- (DB *, const DBT *, const DBT *);
- typedef int (*dup_compare_fcn_type) /*C++ version available*/
- (DB *, const DBT *, const DBT *);
- typedef u_int32_t (*h_hash_fcn_type) /*C++ version available*/
- (DB *, const void *, u_int32_t);
- typedef int (*pgin_fcn_type)
- (DB_ENV *dbenv, db_pgno_t pgno, void *pgaddr, DBT *pgcookie);
- typedef int (*pgout_fcn_type)
- (DB_ENV *dbenv, db_pgno_t pgno, void *pgaddr, DBT *pgcookie);
-}
-
-//
-// Represents a database table = a set of keys with associated values.
-//
-class _exported Db
-{
- friend class DbEnv;
-
-public:
- Db(DbEnv*, u_int32_t); // create a Db object, then call open()
- virtual ~Db(); // does *not* call close.
-
- // These methods exactly match those in the C interface.
- //
- virtual int associate(DbTxn *txn, Db *secondary,
- int (*callback)(Db *, const Dbt *, const Dbt *, Dbt *),
- u_int32_t flags);
- virtual int close(u_int32_t flags);
- virtual int cursor(DbTxn *txnid, Dbc **cursorp, u_int32_t flags);
- virtual int del(DbTxn *txnid, Dbt *key, u_int32_t flags);
- virtual void err(int, const char *, ...);
- virtual void errx(const char *, ...);
- virtual int fd(int *fdp);
- virtual int get(DbTxn *txnid, Dbt *key, Dbt *data, u_int32_t flags);
- virtual void *get_app_private() const;
- virtual int get_byteswapped(int *);
- virtual int get_dbname(const char **, const char **);
- virtual int get_open_flags(u_int32_t *);
- virtual int get_type(DBTYPE *);
- virtual int get_transactional();
- virtual int join(Dbc **curslist, Dbc **dbcp, u_int32_t flags);
- virtual int key_range(DbTxn *, Dbt *, DB_KEY_RANGE *, u_int32_t);
- virtual int open(DbTxn *txnid,
- const char *, const char *subname, DBTYPE, u_int32_t, int);
- virtual int pget(DbTxn *txnid, Dbt *key, Dbt *pkey, Dbt *data,
- u_int32_t flags);
- virtual int put(DbTxn *, Dbt *, Dbt *, u_int32_t);
- virtual int remove(const char *, const char *, u_int32_t);
- virtual int rename(const char *, const char *, const char *, u_int32_t);
- virtual int set_alloc(db_malloc_fcn_type, db_realloc_fcn_type,
- db_free_fcn_type);
- virtual void set_app_private(void *);
- virtual int set_append_recno(int (*)(Db *, Dbt *, db_recno_t));
- virtual int set_bt_compare(bt_compare_fcn_type); /*deprecated*/
- virtual int set_bt_compare(int (*)(Db *, const Dbt *, const Dbt *));
- virtual int set_bt_maxkey(u_int32_t);
- virtual int get_bt_minkey(u_int32_t *);
- virtual int set_bt_minkey(u_int32_t);
- virtual int set_bt_prefix(bt_prefix_fcn_type); /*deprecated*/
- virtual int set_bt_prefix(size_t (*)(Db *, const Dbt *, const Dbt *));
- virtual int get_cachesize(u_int32_t *, u_int32_t *, int *);
- virtual int set_cachesize(u_int32_t, u_int32_t, int);
- virtual int set_dup_compare(dup_compare_fcn_type); /*deprecated*/
- virtual int set_dup_compare(int (*)(Db *, const Dbt *, const Dbt *));
- virtual int get_encrypt_flags(u_int32_t *);
- virtual int set_encrypt(const char *, u_int32_t);
- virtual void set_errcall(
- void (*)(const DbEnv *, const char *, const char *));
- virtual void get_errfile(FILE **);
- virtual void set_errfile(FILE *);
- virtual void get_errpfx(const char **);
- virtual void set_errpfx(const char *);
- virtual int set_feedback(void (*)(Db *, int, int));
- virtual int get_flags(u_int32_t *);
- virtual int set_flags(u_int32_t);
- virtual int get_h_ffactor(u_int32_t *);
- virtual int set_h_ffactor(u_int32_t);
- virtual int set_h_hash(h_hash_fcn_type); /*deprecated*/
- virtual int set_h_hash(u_int32_t (*)(Db *, const void *, u_int32_t));
- virtual int get_h_nelem(u_int32_t *);
- virtual int set_h_nelem(u_int32_t);
- virtual int get_lorder(int *);
- virtual int set_lorder(int);
- virtual void set_msgcall(void (*)(const DbEnv *, const char *));
- virtual void get_msgfile(FILE **);
- virtual void set_msgfile(FILE *);
- virtual int get_pagesize(u_int32_t *);
- virtual int set_pagesize(u_int32_t);
- virtual int set_paniccall(void (*)(DbEnv *, int));
- virtual int get_re_delim(int *);
- virtual int set_re_delim(int);
- virtual int get_re_len(u_int32_t *);
- virtual int set_re_len(u_int32_t);
- virtual int get_re_pad(int *);
- virtual int set_re_pad(int);
- virtual int get_re_source(const char **);
- virtual int set_re_source(const char *);
- virtual int get_q_extentsize(u_int32_t *);
- virtual int set_q_extentsize(u_int32_t);
- virtual int stat(DbTxn *, void *sp, u_int32_t flags);
- virtual int stat_print(u_int32_t flags);
- virtual int sync(u_int32_t flags);
- virtual int truncate(DbTxn *, u_int32_t *, u_int32_t);
- virtual int upgrade(const char *name, u_int32_t flags);
- virtual int verify(const char *, const char *, __DB_STD(ostream) *,
- u_int32_t);
-
- // These additional methods are not in the C interface, and
- // are only available for C++.
- //
- virtual __DB_STD(ostream) *get_error_stream();
- virtual void set_error_stream(__DB_STD(ostream) *);
- virtual __DB_STD(ostream) *get_message_stream();
- virtual void set_message_stream(__DB_STD(ostream) *);
-
- virtual DbEnv *get_env();
- virtual DbMpoolFile *get_mpf();
-
- virtual DB *get_DB()
- {
- return imp_;
- }
-
- virtual const DB *get_const_DB() const
- {
- return imp_;
- }
-
- static Db* get_Db(DB *db)
- {
- return (Db *)db->api_internal;
- }
-
- static const Db* get_const_Db(const DB *db)
- {
- return (const Db *)db->api_internal;
- }
-
-private:
- // no copying
- Db(const Db &);
- Db &operator = (const Db &);
-
- void cleanup();
- int initialize();
- int error_policy();
-
- // instance data
- DB *imp_;
- DbEnv *env_;
- DbMpoolFile *mpf_;
- int construct_error_;
- u_int32_t flags_;
- u_int32_t construct_flags_;
-
-public:
- // These are public only because they need to be called
- // via C callback functions. They should never be used by
- // external users of this class.
- //
- int (*append_recno_callback_)(Db *, Dbt *, db_recno_t);
- int (*associate_callback_)(Db *, const Dbt *, const Dbt *, Dbt *);
- int (*bt_compare_callback_)(Db *, const Dbt *, const Dbt *);
- size_t (*bt_prefix_callback_)(Db *, const Dbt *, const Dbt *);
- int (*dup_compare_callback_)(Db *, const Dbt *, const Dbt *);
- void (*feedback_callback_)(Db *, int, int);
- u_int32_t (*h_hash_callback_)(Db *, const void *, u_int32_t);
-};
-
-//
-// Cursor
-//
-class _exported Dbc : protected DBC
-{
- friend class Db;
-
-public:
- int close();
- int count(db_recno_t *countp, u_int32_t flags);
- int del(u_int32_t flags);
- int dup(Dbc** cursorp, u_int32_t flags);
- int get(Dbt* key, Dbt *data, u_int32_t flags);
- int pget(Dbt* key, Dbt* pkey, Dbt *data, u_int32_t flags);
- int put(Dbt* key, Dbt *data, u_int32_t flags);
-
-private:
- // No data is permitted in this class (see comment at top)
-
- // Note: use Db::cursor() to get pointers to a Dbc,
- // and call Dbc::close() rather than delete to release them.
- //
- Dbc();
- ~Dbc();
-
- // no copying
- Dbc(const Dbc &);
- Dbc &operator = (const Dbc &);
-};
-
-//
-// Berkeley DB environment class. Provides functions for opening databases.
-// User of this library can use this class as a starting point for
-// developing a DB application - derive their application class from
-// this one, add application control logic.
-//
-// Note that if you use the default constructor, you must explicitly
-// call appinit() before any other db activity (e.g. opening files)
-//
-class _exported DbEnv
-{
- friend class Db;
- friend class DbLock;
- friend class DbMpoolFile;
-
-public:
- // After using this constructor, you can set any needed
- // parameters for the environment using the set_* methods.
- // Then call open() to finish initializing the environment
- // and attaching it to underlying files.
- //
- DbEnv(u_int32_t flags);
-
- virtual ~DbEnv();
-
- // These methods match those in the C interface.
- //
- virtual int close(u_int32_t);
- virtual int dbremove(DbTxn *txn, const char *name, const char *subdb,
- u_int32_t flags);
- virtual int dbrename(DbTxn *txn, const char *name, const char *subdb,
- const char *newname, u_int32_t flags);
- virtual void err(int, const char *, ...);
- virtual void errx(const char *, ...);
- virtual void *get_app_private() const;
- virtual int get_home(const char **);
- virtual int get_open_flags(u_int32_t *);
- virtual int open(const char *, u_int32_t, int);
- virtual int remove(const char *, u_int32_t);
- virtual int set_alloc(db_malloc_fcn_type, db_realloc_fcn_type,
- db_free_fcn_type);
- virtual void set_app_private(void *);
- virtual int get_cachesize(u_int32_t *, u_int32_t *, int *);
- virtual int set_cachesize(u_int32_t, u_int32_t, int);
- virtual int get_data_dirs(const char ***);
- virtual int set_data_dir(const char *);
- virtual int get_encrypt_flags(u_int32_t *);
- virtual int set_encrypt(const char *, u_int32_t);
- virtual void set_errcall(
- void (*)(const DbEnv *, const char *, const char *));
- virtual void get_errfile(FILE **);
- virtual void set_errfile(FILE *);
- virtual void get_errpfx(const char **);
- virtual void set_errpfx(const char *);
- virtual int get_flags(u_int32_t *);
- virtual int set_flags(u_int32_t, int);
- virtual int set_feedback(void (*)(DbEnv *, int, int));
- virtual int get_lg_bsize(u_int32_t *);
- virtual int set_lg_bsize(u_int32_t);
- virtual int get_lg_dir(const char **);
- virtual int set_lg_dir(const char *);
- virtual int get_lg_max(u_int32_t *);
- virtual int set_lg_max(u_int32_t);
- virtual int get_lg_regionmax(u_int32_t *);
- virtual int set_lg_regionmax(u_int32_t);
- virtual int get_lk_conflicts(const u_int8_t **, int *);
- virtual int set_lk_conflicts(u_int8_t *, int);
- virtual int get_lk_detect(u_int32_t *);
- virtual int set_lk_detect(u_int32_t);
- virtual int set_lk_max(u_int32_t);
- virtual int get_lk_max_lockers(u_int32_t *);
- virtual int set_lk_max_lockers(u_int32_t);
- virtual int get_lk_max_locks(u_int32_t *);
- virtual int set_lk_max_locks(u_int32_t);
- virtual int get_lk_max_objects(u_int32_t *);
- virtual int set_lk_max_objects(u_int32_t);
- virtual int get_mp_mmapsize(size_t *);
- virtual int set_mp_mmapsize(size_t);
- virtual void set_msgcall(void (*)(const DbEnv *, const char *));
- virtual void get_msgfile(FILE **);
- virtual void set_msgfile(FILE *);
- virtual int set_paniccall(void (*)(DbEnv *, int));
- virtual int set_rpc_server(void *, char *, long, long, u_int32_t);
- virtual int get_shm_key(long *);
- virtual int set_shm_key(long);
- virtual int get_timeout(db_timeout_t *, u_int32_t);
- virtual int set_timeout(db_timeout_t, u_int32_t);
- virtual int get_tmp_dir(const char **);
- virtual int set_tmp_dir(const char *);
- virtual int get_tas_spins(u_int32_t *);
- virtual int set_tas_spins(u_int32_t);
- virtual int get_tx_max(u_int32_t *);
- virtual int set_tx_max(u_int32_t);
- virtual int set_app_dispatch(int (*)(DbEnv *,
- Dbt *, DbLsn *, db_recops));
- virtual int get_tx_timestamp(time_t *);
- virtual int set_tx_timestamp(time_t *);
- virtual int get_verbose(u_int32_t which, int *);
- virtual int set_verbose(u_int32_t which, int);
-
- // Version information. A static method so it can be obtained anytime.
- //
- static char *version(int *major, int *minor, int *patch);
-
- // Convert DB errors to strings
- static char *strerror(int);
-
- // If an error is detected and the error call function
- // or stream is set, a message is dispatched or printed.
- // If a prefix is set, each message is prefixed.
- //
- // You can use set_errcall() or set_errfile() above to control
- // error functionality. Alternatively, you can call
- // set_error_stream() to force all errors to a C++ stream.
- // It is unwise to mix these approaches.
- //
- virtual __DB_STD(ostream) *get_error_stream();
- virtual void set_error_stream(__DB_STD(ostream) *);
- virtual __DB_STD(ostream) *get_message_stream();
- virtual void set_message_stream(__DB_STD(ostream) *);
-
- // used internally
- static void runtime_error(DbEnv *env, const char *caller, int err,
- int error_policy);
- static void runtime_error_dbt(DbEnv *env, const char *caller, Dbt *dbt,
- int error_policy);
- static void runtime_error_lock_get(DbEnv *env, const char *caller,
- int err, db_lockop_t op, db_lockmode_t mode,
- const Dbt *obj, DbLock lock, int index,
- int error_policy);
-
- // Lock functions
- //
- virtual int lock_detect(u_int32_t flags, u_int32_t atype, int *aborted);
- virtual int lock_get(u_int32_t locker, u_int32_t flags, const Dbt *obj,
- db_lockmode_t lock_mode, DbLock *lock);
- virtual int lock_id(u_int32_t *idp);
- virtual int lock_id_free(u_int32_t id);
- virtual int lock_put(DbLock *lock);
- virtual int lock_stat(DB_LOCK_STAT **statp, u_int32_t flags);
- virtual int lock_stat_print(u_int32_t flags);
- virtual int lock_vec(u_int32_t locker, u_int32_t flags,
- DB_LOCKREQ list[], int nlist, DB_LOCKREQ **elistp);
-
- // Log functions
- //
- virtual int log_archive(char **list[], u_int32_t flags);
- static int log_compare(const DbLsn *lsn0, const DbLsn *lsn1);
- virtual int log_cursor(DbLogc **cursorp, u_int32_t flags);
- virtual int log_file(DbLsn *lsn, char *namep, size_t len);
- virtual int log_flush(const DbLsn *lsn);
- virtual int log_put(DbLsn *lsn, const Dbt *data, u_int32_t flags);
-
- virtual int log_stat(DB_LOG_STAT **spp, u_int32_t flags);
- virtual int log_stat_print(u_int32_t flags);
-
- // Mpool functions
- //
- virtual int memp_fcreate(DbMpoolFile **dbmfp, u_int32_t flags);
- virtual int memp_register(int ftype,
- pgin_fcn_type pgin_fcn,
- pgout_fcn_type pgout_fcn);
- virtual int memp_stat(DB_MPOOL_STAT
- **gsp, DB_MPOOL_FSTAT ***fsp, u_int32_t flags);
- virtual int memp_stat_print(u_int32_t flags);
- virtual int memp_sync(DbLsn *lsn);
- virtual int memp_trickle(int pct, int *nwrotep);
-
- // Transaction functions
- //
- virtual int txn_begin(DbTxn *pid, DbTxn **tid, u_int32_t flags);
- virtual int txn_checkpoint(u_int32_t kbyte, u_int32_t min,
- u_int32_t flags);
- virtual int txn_recover(DbPreplist *preplist, long count,
- long *retp, u_int32_t flags);
- virtual int txn_stat(DB_TXN_STAT **statp, u_int32_t flags);
- virtual int txn_stat_print(u_int32_t flags);
-
- // Replication functions
- //
- virtual int rep_elect(int, int, int, u_int32_t, int *, u_int32_t);
- virtual int rep_process_message(Dbt *, Dbt *, int *, DbLsn *);
- virtual int rep_start(Dbt *, u_int32_t);
- virtual int rep_stat(DB_REP_STAT **statp, u_int32_t flags);
- virtual int rep_stat_print(u_int32_t flags);
- virtual int get_rep_limit(u_int32_t *, u_int32_t *);
- virtual int set_rep_limit(u_int32_t, u_int32_t);
- virtual int set_rep_transport(int, int (*)(DbEnv *,
- const Dbt *, const Dbt *, const DbLsn *, int, u_int32_t));
-
- // Conversion functions
- //
- virtual DB_ENV *get_DB_ENV()
- {
- return imp_;
- }
-
- virtual const DB_ENV *get_const_DB_ENV() const
- {
- return imp_;
- }
-
- static DbEnv* get_DbEnv(DB_ENV *dbenv)
- {
- return dbenv ? (DbEnv *)dbenv->api1_internal : 0;
- }
-
- static const DbEnv* get_const_DbEnv(const DB_ENV *dbenv)
- {
- return dbenv ? (const DbEnv *)dbenv->api1_internal : 0;
- }
-
- // For internal use only.
- static DbEnv* wrap_DB_ENV(DB_ENV *dbenv);
-
- // These are public only because they need to be called
- // via C functions. They should never be called by users
- // of this class.
- //
- static int _app_dispatch_intercept(DB_ENV *env, DBT *dbt, DB_LSN *lsn,
- db_recops op);
- static void _paniccall_intercept(DB_ENV *env, int errval);
- static void _feedback_intercept(DB_ENV *env, int opcode, int pct);
- static int _rep_send_intercept(DB_ENV *env,
- const DBT *cntrl, const DBT *data,
- const DB_LSN *lsn, int id,
- u_int32_t flags);
- static void _stream_error_function(const DB_ENV *env,
- const char *prefix,
- const char *message);
- static void _stream_message_function(const DB_ENV *env,
- const char *message);
-
-private:
- void cleanup();
- int initialize(DB_ENV *env);
- int error_policy();
-
- // For internal use only.
- DbEnv(DB_ENV *, u_int32_t flags);
-
- // no copying
- DbEnv(const DbEnv &);
- void operator = (const DbEnv &);
-
- // instance data
- DB_ENV *imp_;
- int construct_error_;
- u_int32_t construct_flags_;
- __DB_STD(ostream) *error_stream_;
- __DB_STD(ostream) *message_stream_;
-
- int (*app_dispatch_callback_)(DbEnv *, Dbt *, DbLsn *, db_recops);
- void (*error_callback_)(const DbEnv *, const char *, const char *);
- void (*feedback_callback_)(DbEnv *, int, int);
- void (*message_callback_)(const DbEnv *, const char *);
- void (*paniccall_callback_)(DbEnv *, int);
- int (*pgin_callback_)(DbEnv *dbenv, db_pgno_t pgno,
- void *pgaddr, Dbt *pgcookie);
- int (*pgout_callback_)(DbEnv *dbenv, db_pgno_t pgno,
- void *pgaddr, Dbt *pgcookie);
- int (*rep_send_callback_)(DbEnv *,
- const Dbt *, const Dbt *, const DbLsn *, int, u_int32_t);
-};
-
-//
-// Lock
-//
-class _exported DbLock
-{
- friend class DbEnv;
-
-public:
- DbLock();
- DbLock(const DbLock &);
- DbLock &operator = (const DbLock &);
-
-protected:
- // We can add data to this class if needed
- // since its contained class is not allocated by db.
- // (see comment at top)
-
- DbLock(DB_LOCK);
- DB_LOCK lock_;
-};
-
-//
-// Log cursor
-//
-class _exported DbLogc : protected DB_LOGC
-{
- friend class DbEnv;
-
-public:
- int close(u_int32_t _flags);
- int get(DbLsn *lsn, Dbt *data, u_int32_t _flags);
-
-private:
- // No data is permitted in this class (see comment at top)
-
- // Note: use Db::cursor() to get pointers to a Dbc,
- // and call Dbc::close() rather than delete to release them.
- //
- DbLogc();
- ~DbLogc();
-
- // no copying
- DbLogc(const Dbc &);
- DbLogc &operator = (const Dbc &);
-};
-
-//
-// Log sequence number
-//
-class _exported DbLsn : public DB_LSN
-{
- friend class DbEnv; // friendship needed to cast to base class
- friend class DbLogc; // friendship needed to cast to base class
-};
-
-//
-// Memory pool file
-//
-class _exported DbMpoolFile
-{
- friend class DbEnv;
- friend class Db;
-
-public:
- int close(u_int32_t flags);
- int get(db_pgno_t *pgnoaddr, u_int32_t flags, void *pagep);
- int open(const char *file, u_int32_t flags, int mode, size_t pagesize);
- int get_transactional(void);
- int put(void *pgaddr, u_int32_t flags);
- int set(void *pgaddr, u_int32_t flags);
- int get_clear_len(u_int32_t *len);
- int set_clear_len(u_int32_t len);
- int get_fileid(u_int8_t *fileid);
- int set_fileid(u_int8_t *fileid);
- int get_flags(u_int32_t *flagsp);
- int set_flags(u_int32_t flags, int onoff);
- int get_ftype(int *ftype);
- int set_ftype(int ftype);
- int get_lsn_offset(int32_t *offsetp);
- int set_lsn_offset(int32_t offset);
- int get_maxsize(u_int32_t *gbytes, u_int32_t *bytes);
- int set_maxsize(u_int32_t gbytes, u_int32_t bytes);
- int get_pgcookie(DBT *dbt);
- int set_pgcookie(DBT *dbt);
- int get_priority(DB_CACHE_PRIORITY *priorityp);
- int set_priority(DB_CACHE_PRIORITY priority);
- int sync();
-
- virtual DB_MPOOLFILE *get_DB_MPOOLFILE()
- {
- return imp_;
- }
-
- virtual const DB_MPOOLFILE *get_const_DB_MPOOLFILE() const
- {
- return imp_;
- }
-
-private:
- DB_MPOOLFILE *imp_;
-
- // We can add data to this class if needed
- // since it is implemented via a pointer.
- // (see comment at top)
-
- // Note: use DbEnv::memp_fcreate() to get pointers to a DbMpoolFile,
- // and call DbMpoolFile::close() rather than delete to release them.
- //
- DbMpoolFile();
-
- // Shut g++ up.
-protected:
- virtual ~DbMpoolFile();
-
-private:
- // no copying
- DbMpoolFile(const DbMpoolFile &);
- void operator = (const DbMpoolFile &);
-};
-
-//
-// This is filled in and returned by the DbEnv::txn_recover() method.
-//
-class _exported DbPreplist
-{
-public:
- DbTxn *txn;
- u_int8_t gid[DB_XIDDATASIZE];
-};
-
-//
-// A sequence record in a database
-//
-class _exported DbSequence
-{
-public:
- DbSequence(Db *db, u_int32_t flags);
- virtual ~DbSequence();
-
- int open(DbTxn *txnid, Dbt *key, u_int32_t flags);
- int initial_value(db_seq_t value);
- int close(u_int32_t flags);
- int remove(DbTxn *txnid, u_int32_t flags);
- int stat(DB_SEQUENCE_STAT **sp, u_int32_t flags);
- int stat_print(u_int32_t flags);
-
- int get(DbTxn *txnid, int32_t delta, db_seq_t *retp, u_int32_t flags);
- int get_cachesize(int32_t *sizep);
- int set_cachesize(int32_t size);
- int get_flags(u_int32_t *flagsp);
- int set_flags(u_int32_t flags);
- int get_range(db_seq_t *minp, db_seq_t *maxp);
- int set_range(db_seq_t min, db_seq_t max);
-
- Db *get_db();
- Dbt *get_key();
-
- virtual DB_SEQUENCE *get_DB_SEQUENCE()
- {
- return imp_;
- }
-
- virtual const DB_SEQUENCE *get_const_DB_SEQUENCE() const
- {
- return imp_;
- }
-
- static DbSequence* get_DbSequence(DB_SEQUENCE *seq)
- {
- return (DbSequence *)seq->api_internal;
- }
-
- static const DbSequence* get_const_DbSequence(const DB_SEQUENCE *seq)
- {
- return (const DbSequence *)seq->api_internal;
- }
-
- // For internal use only.
- static DbSequence* wrap_DB_SEQUENCE(DB_SEQUENCE *seq);
-
-private:
- DbSequence(DB_SEQUENCE *seq);
- // no copying
- DbSequence(const DbSequence &);
- DbSequence &operator = (const DbSequence &);
-
- DB_SEQUENCE *imp_;
- DBT key_;
-};
-
-//
-// Transaction
-//
-class _exported DbTxn
-{
- friend class DbEnv;
-
-public:
- int abort();
- int commit(u_int32_t flags);
- int discard(u_int32_t flags);
- u_int32_t id();
- int prepare(u_int8_t *gid);
- int set_timeout(db_timeout_t timeout, u_int32_t flags);
-
- virtual DB_TXN *get_DB_TXN()
- {
- return imp_;
- }
-
- virtual const DB_TXN *get_const_DB_TXN() const
- {
- return imp_;
- }
-
- static DbTxn* get_DbTxn(DB_TXN *txn)
- {
- return (DbTxn *)txn->api_internal;
- }
-
- static const DbTxn* get_const_DbTxn(const DB_TXN *txn)
- {
- return (const DbTxn *)txn->api_internal;
- }
-
- // For internal use only.
- static DbTxn* wrap_DB_TXN(DB_TXN *txn);
-
-private:
- DB_TXN *imp_;
-
- // We can add data to this class if needed
- // since it is implemented via a pointer.
- // (see comment at top)
-
- // Note: use DbEnv::txn_begin() to get pointers to a DbTxn,
- // and call DbTxn::abort() or DbTxn::commit rather than
- // delete to release them.
- //
- DbTxn();
- // For internal use only.
- DbTxn(DB_TXN *txn);
- virtual ~DbTxn();
-
- // no copying
- DbTxn(const DbTxn &);
- void operator = (const DbTxn &);
-};
-
-//
-// A chunk of data, maybe a key or value.
-//
-class _exported Dbt : private DBT
-{
- friend class Db;
- friend class Dbc;
- friend class DbEnv;
- friend class DbLogc;
- friend class DbSequence;
-
-public:
- // key/data
- void *get_data() const { return data; }
- void set_data(void *value) { data = value; }
-
- // key/data length
- u_int32_t get_size() const { return size; }
- void set_size(u_int32_t value) { size = value; }
-
- // RO: length of user buffer.
- u_int32_t get_ulen() const { return ulen; }
- void set_ulen(u_int32_t value) { ulen = value; }
-
- // RO: get/put record length.
- u_int32_t get_dlen() const { return dlen; }
- void set_dlen(u_int32_t value) { dlen = value; }
-
- // RO: get/put record offset.
- u_int32_t get_doff() const { return doff; }
- void set_doff(u_int32_t value) { doff = value; }
-
- // flags
- u_int32_t get_flags() const { return flags; }
- void set_flags(u_int32_t value) { flags = value; }
-
- // Conversion functions
- DBT *get_DBT() { return (DBT *)this; }
- const DBT *get_const_DBT() const { return (const DBT *)this; }
-
- static Dbt* get_Dbt(DBT *dbt) { return (Dbt *)dbt; }
- static const Dbt* get_const_Dbt(const DBT *dbt)
- { return (const Dbt *)dbt; }
-
- Dbt(void *data, u_int32_t size);
- Dbt();
- ~Dbt();
- Dbt(const Dbt &);
- Dbt &operator = (const Dbt &);
-
-private:
- // Note: no extra data appears in this class (other than
- // inherited from DBT) since we need DBT and Dbt objects
- // to have interchangable pointers.
- //
- // When subclassing this class, remember that callback
- // methods like bt_compare, bt_prefix, dup_compare may
- // internally manufacture DBT objects (which later are
- // cast to Dbt), so such callbacks might receive objects
- // not of your subclassed type.
-};
-
-////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////
-//
-// multiple key/data/reco iterator classes
-//
-
-// DbMultipleIterator is a shared private base class for the three types
-// of bulk-return Iterator; it should never be instantiated directly,
-// but it handles the functionality shared by its subclasses.
-class _exported DbMultipleIterator
-{
-public:
- DbMultipleIterator(const Dbt &dbt);
-protected:
- u_int8_t *data_;
- u_int32_t *p_;
-};
-
-class _exported DbMultipleKeyDataIterator : private DbMultipleIterator
-{
-public:
- DbMultipleKeyDataIterator(const Dbt &dbt) : DbMultipleIterator(dbt) {}
- bool next(Dbt &key, Dbt &data);
-};
-
-class _exported DbMultipleRecnoDataIterator : private DbMultipleIterator
-{
-public:
- DbMultipleRecnoDataIterator(const Dbt &dbt) : DbMultipleIterator(dbt) {}
- bool next(db_recno_t &recno, Dbt &data);
-};
-
-class _exported DbMultipleDataIterator : private DbMultipleIterator
-{
-public:
- DbMultipleDataIterator(const Dbt &dbt) : DbMultipleIterator(dbt) {}
- bool next(Dbt &data);
-};
-
-////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////
-//
-// Exception classes
-//
-
-// Almost any error in the DB library throws a DbException.
-// Every exception should be considered an abnormality
-// (e.g. bug, misuse of DB, file system error).
-//
-class _exported DbException : public __DB_STD(exception)
-{
-public:
- virtual ~DbException() throw();
- DbException(int err);
- DbException(const char *description);
- DbException(const char *description, int err);
- DbException(const char *prefix, const char *description, int err);
- int get_errno() const;
- virtual const char *what() const throw();
- DbEnv *get_env() const;
- void set_env(DbEnv *env);
-
- DbException(const DbException &);
- DbException &operator = (const DbException &);
-
-private:
- void describe(const char *prefix, const char *description);
-
- char *what_;
- int err_; // errno
- DbEnv *env_;
-};
-
-//
-// A specific sort of exception that occurs when
-// an operation is aborted to resolve a deadlock.
-//
-class _exported DbDeadlockException : public DbException
-{
-public:
- virtual ~DbDeadlockException() throw();
- DbDeadlockException(const char *description);
-
- DbDeadlockException(const DbDeadlockException &);
- DbDeadlockException &operator = (const DbDeadlockException &);
-};
-
-//
-// A specific sort of exception that occurs when
-// a lock is not granted, e.g. by lock_get or lock_vec.
-// Note that the Dbt is only live as long as the Dbt used
-// in the offending call.
-//
-class _exported DbLockNotGrantedException : public DbException
-{
-public:
- virtual ~DbLockNotGrantedException() throw();
- DbLockNotGrantedException(const char *prefix, db_lockop_t op,
- db_lockmode_t mode, const Dbt *obj, const DbLock lock, int index);
- DbLockNotGrantedException(const char *description);
-
- DbLockNotGrantedException(const DbLockNotGrantedException &);
- DbLockNotGrantedException &operator =
- (const DbLockNotGrantedException &);
-
- db_lockop_t get_op() const;
- db_lockmode_t get_mode() const;
- const Dbt* get_obj() const;
- DbLock *get_lock() const;
- int get_index() const;
-
-private:
- db_lockop_t op_;
- db_lockmode_t mode_;
- const Dbt *obj_;
- DbLock *lock_;
- int index_;
-};
-
-//
-// A specific sort of exception that occurs when
-// user declared memory is insufficient in a Dbt.
-//
-class _exported DbMemoryException : public DbException
-{
-public:
- virtual ~DbMemoryException() throw();
- DbMemoryException(Dbt *dbt);
- DbMemoryException(const char *prefix, Dbt *dbt);
-
- DbMemoryException(const DbMemoryException &);
- DbMemoryException &operator = (const DbMemoryException &);
-
- Dbt *get_dbt() const;
-private:
- Dbt *dbt_;
-};
-
-//
-// A specific sort of exception that occurs when
-// recovery is required before continuing DB activity.
-//
-class _exported DbRunRecoveryException : public DbException
-{
-public:
- virtual ~DbRunRecoveryException() throw();
- DbRunRecoveryException(const char *description);
-
- DbRunRecoveryException(const DbRunRecoveryException &);
- DbRunRecoveryException &operator = (const DbRunRecoveryException &);
-};
-#endif /* !_DB_CXX_H_ */
diff --git a/db/build_win32/db_deadlock.dsp b/db/build_win32/db_deadlock.dsp
deleted file mode 100644
index 9a8993833..000000000
--- a/db/build_win32/db_deadlock.dsp
+++ /dev/null
@@ -1,148 +0,0 @@
-# Microsoft Developer Studio Project File - Name="db_deadlock" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=db_deadlock - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "db_deadlock.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "db_deadlock.mak" CFG="db_deadlock - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "db_deadlock - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_deadlock - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_deadlock - Win32 Release Static" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_deadlock - Win32 Debug Static" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "db_deadlock - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 Release/libdb43.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-
-!ELSEIF "$(CFG)" == "db_deadlock - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 Debug/libdb43d.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-
-!ELSEIF "$(CFG)" == "db_deadlock - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Release_static/libdb43.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 Release_static/libdb43s.lib /nologo /subsystem:console /machine:I386
-
-!ELSEIF "$(CFG)" == "db_deadlock - Win32 Debug Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Debug_static/libdb43d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no
-# ADD LINK32 Debug_static/libdb43sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "db_deadlock - Win32 Release"
-# Name "db_deadlock - Win32 Debug"
-# Name "db_deadlock - Win32 Release Static"
-# Name "db_deadlock - Win32 Debug Static"
-# Begin Source File
-
-SOURCE=..\db_deadlock\db_deadlock.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\clib\getopt.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win32/db_dll.dsp b/db/build_win32/db_dll.dsp
deleted file mode 100644
index f09c22f6b..000000000
--- a/db/build_win32/db_dll.dsp
+++ /dev/null
@@ -1,880 +0,0 @@
-# Microsoft Developer Studio Project File - Name="db_dll" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-
-CFG=db_dll - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "db_dll.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "db_dll.mak" CFG="db_dll - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "db_dll - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "db_dll - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-MTL=midl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "db_dll - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /Ob2 /I "." /I ".." /D "DB_CREATE_DLL" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c
-# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
-# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
-# ADD LINK32 /nologo /base:"0x13000000" /subsystem:windows /dll /machine:I386 /out:"Release/libdb43.dll"
-
-!ELSEIF "$(CFG)" == "db_dll - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 2
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "DB_CREATE_DLL" /D "CONFIG_TEST" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX"config.h" /FD /c
-# SUBTRACT CPP /Fr
-# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /pdb:none /debug /machine:I386 /out:"Debug/libdb43d.dll" /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "db_dll - Win32 Release"
-# Name "db_dll - Win32 Debug"
-# Begin Source File
-
-SOURCE=..\btree\bt_compare.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_conv.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_curadj.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_cursor.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_delete.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_open.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_put.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_rec.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_reclaim.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_recno.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_rsearch.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_search.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_split.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_upgrade.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_verify.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\btree_auto.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\libdb.def
-# End Source File
-# Begin Source File
-
-SOURCE=.\libdb.rc
-# End Source File
-# Begin Source File
-
-SOURCE=..\clib\strcasecmp.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\db_byteorder.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\db_err.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\db_getlong.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\db_idspace.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\db_log2.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\util_cache.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\util_log.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\util_sig.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\crypto\aes_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\crypto\crypto.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\crypto\mersenne\mt19937db.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\crypto\rijndael\rijndael-alg-fst.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\crypto\rijndael\rijndael-api-fst.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_db.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_dbc.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_dbt.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_env.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_except.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_lock.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_logc.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_mpool.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_multi.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_seq.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_txn.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\crdel_auto.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\crdel_rec.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_am.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_auto.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_cam.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_conv.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_dispatch.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_dup.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_iface.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_join.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_meta.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_open.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_overflow.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_ovfl_vrfy.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_pr.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_rec.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_reclaim.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_remove.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_rename.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_ret.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_setid.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_setlsn.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_stati.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_truncate.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_upg.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_upg_opd.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_vrfy.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_vrfyutil.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\dbm\dbm.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\dbreg\dbreg.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\dbreg\dbreg_auto.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\dbreg\dbreg_rec.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\dbreg\dbreg_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\dbreg\dbreg_util.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\env\db_salloc.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\env\db_shash.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\env\env_file.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\env\env_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\env\env_open.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\env\env_recover.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\env\env_region.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\env\env_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\fileops\fileops_auto.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\fileops\fop_basic.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\fileops\fop_rec.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\fileops\fop_util.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash_auto.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash_conv.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash_dup.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash_func.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash_meta.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash_open.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash_page.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash_rec.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash_reclaim.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash_upgrade.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash_verify.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hmac\hmac.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hmac\sha1.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hsearch\hsearch.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lock\lock.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lock\lock_deadlock.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lock\lock_id.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lock\lock_list.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lock\lock_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lock\lock_region.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lock\lock_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lock\lock_timer.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lock\lock_util.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\log\log.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\log\log_archive.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\log\log_compare.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\log\log_get.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\log\log_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\log\log_put.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\log\log_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_alloc.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_bh.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_fget.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_fmethod.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_fopen.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_fput.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_fset.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_region.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_register.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_sync.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_trickle.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mutex\mut_win32.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mutex\mutex.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os\os_alloc.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os\os_id.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os\os_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os\os_oflags.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os\os_region.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os\os_root.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os\os_rpath.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os\os_tmpdir.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_abs.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_clock.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_config.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_dir.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_errno.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_fid.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_fsync.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_handle.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_map.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_open.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_rename.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_rw.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_seek.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_sleep.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_spin.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_truncate.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_unlink.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\qam\qam.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\qam\qam_auto.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\qam\qam_conv.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\qam\qam_files.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\qam\qam_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\qam\qam_open.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\qam\qam_rec.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\qam\qam_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\qam\qam_upgrade.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\qam\qam_verify.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\rep\rep_auto.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\rep\rep_backup.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\rep\rep_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\rep\rep_record.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\rep\rep_region.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\rep\rep_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\rep\rep_util.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\sequence\seq_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\sequence\sequence.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\txn\txn.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\txn\txn_auto.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\txn\txn_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\txn\txn_rec.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\txn\txn_recover.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\txn\txn_region.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\txn\txn_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\txn\txn_util.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\xa\xa.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\xa\xa_db.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\xa\xa_map.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win32/db_dump.dsp b/db/build_win32/db_dump.dsp
deleted file mode 100644
index 709ce2471..000000000
--- a/db/build_win32/db_dump.dsp
+++ /dev/null
@@ -1,148 +0,0 @@
-# Microsoft Developer Studio Project File - Name="db_dump" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=db_dump - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "db_dump.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "db_dump.mak" CFG="db_dump - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "db_dump - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_dump - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_dump - Win32 Release Static" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_dump - Win32 Debug Static" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "db_dump - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 Release/libdb43.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-
-!ELSEIF "$(CFG)" == "db_dump - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 Debug/libdb43d.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-
-!ELSEIF "$(CFG)" == "db_dump - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Release_static/libdb43.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 Release_static/libdb43s.lib /nologo /subsystem:console /machine:I386
-
-!ELSEIF "$(CFG)" == "db_dump - Win32 Debug Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Debug_static/libdb43d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no
-# ADD LINK32 Debug_static/libdb43sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "db_dump - Win32 Release"
-# Name "db_dump - Win32 Debug"
-# Name "db_dump - Win32 Release Static"
-# Name "db_dump - Win32 Debug Static"
-# Begin Source File
-
-SOURCE=..\db_dump\db_dump.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\clib\getopt.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win32/db_int.h b/db/build_win32/db_int.h
deleted file mode 100644
index 046e3de5a..000000000
--- a/db/build_win32/db_int.h
+++ /dev/null
@@ -1,592 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_win32. */
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1996-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: db_int.in,v 11.155 2004/10/28 16:07:38 ubell Exp $
- */
-
-#ifndef _DB_INTERNAL_H_
-#define _DB_INTERNAL_H_
-
-/*******************************************************
- * System includes, db.h, a few general DB includes. The DB includes are
- * here because it's OK if db_int.h includes queue structure declarations.
- *******************************************************/
-#ifndef NO_SYSTEM_INCLUDES
-#if defined(STDC_HEADERS) || defined(__cplusplus)
-#include <stdarg.h>
-#else
-#include <varargs.h>
-#endif
-#include <errno.h>
-#endif
-
-#include "db.h"
-
-#include "dbinc/queue.h"
-#include "dbinc/shqueue.h"
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-/*******************************************************
- * General purpose constants and macros.
- *******************************************************/
-#ifndef UINT16_MAX
-#define UINT16_MAX 65535 /* Maximum 16-bit unsigned. */
-#endif
-#ifndef UINT32_MAX
-#ifdef __STDC__
-#define UINT32_MAX 4294967295U /* Maximum 32-bit unsigned. */
-#else
-#define UINT32_MAX 0xffffffff /* Maximum 32-bit unsigned. */
-#endif
-#endif
-
-#if defined(HAVE_LONG_LONG) && defined(HAVE_UNSIGNED_LONG_LONG)
-#undef INT64_MAX
-#undef INT64_MIN
-#undef UINT64_MAX
-
-#ifdef DB_WIN32
-#define INT64_MAX _I64_MAX
-#define INT64_MIN _I64_MIN
-#define UINT64_MAX _UI64_MAX
-
-#define INT64_FMT "%l64d"
-#define UINT64_FMT "%l64u"
-#else
-/*
- * Override the system's 64-bit min/max constants. AIX's 32-bit compiler can
- * handle 64-bit values, but the system's constants don't include the LL/ULL
- * suffix, and so can't be compiled using the 32-bit compiler.
- */
-#define INT64_MAX 9223372036854775807LL
-#define INT64_MIN (-INT64_MAX-1)
-#define UINT64_MAX 18446744073709551615ULL
-
-#define INT64_FMT "%lld"
-#define UINT64_FMT "%llu"
-#endif /* DB_WIN32 */
-#endif /* HAVE_LONG_LONG && HAVE_UNSIGNED_LONG_LONG */
-
-#define MEGABYTE 1048576
-#define GIGABYTE 1073741824
-
-#define MS_PER_SEC 1000 /* Milliseconds in a second. */
-#define USEC_PER_MS 1000 /* Microseconds in a millisecond. */
-
-#define RECNO_OOB 0 /* Illegal record number. */
-
-/* Test for a power-of-two (tests true for zero, which doesn't matter here). */
-#define POWER_OF_TWO(x) (((x) & ((x) - 1)) == 0)
-
-/* Test for valid page sizes. */
-#define DB_MIN_PGSIZE 0x000200 /* Minimum page size (512). */
-#define DB_MAX_PGSIZE 0x010000 /* Maximum page size (65536). */
-#define IS_VALID_PAGESIZE(x) \
- (POWER_OF_TWO(x) && (x) >= DB_MIN_PGSIZE && ((x) <= DB_MAX_PGSIZE))
-
-/* Minimum number of pages cached, by default. */
-#define DB_MINPAGECACHE 16
-
-/*
- * If we are unable to determine the underlying filesystem block size, use
- * 8K on the grounds that most OS's use less than 8K for a VM page size.
- */
-#define DB_DEF_IOSIZE (8 * 1024)
-
-/* Align an integer to a specific boundary. */
-#undef DB_ALIGN
-#define DB_ALIGN(v, bound) \
- (((v) + (bound) - 1) & ~(((uintmax_t)bound) - 1))
-
-/* Increment a pointer to a specific boundary. */
-#undef ALIGNP_INC
-#define ALIGNP_INC(p, bound) \
- (void *)(((uintptr_t)(p) + (bound) - 1) & ~(((uintptr_t)bound) - 1))
-
-/* Decrement a pointer to a specific boundary. */
-#undef ALIGNP_DEC
-#define ALIGNP_DEC(p, bound) \
- (void *)((uintptr_t)(p) & ~(((uintptr_t)bound) - 1))
-
-/*
- * Print an address as a u_long (a u_long is the largest type we can print
- * portably). Most 64-bit systems have made longs 64-bits, so this should
- * work.
- */
-#define P_TO_ULONG(p) ((u_long)(uintptr_t)(p))
-
-/*
- * Convert a pointer to a small integral value.
- *
- * The (u_int16_t)(uintptr_t) cast avoids warnings: the (uintptr_t) cast
- * converts the value to an integral type, and the (u_int16_t) cast converts
- * it to a small integral type so we don't get complaints when we assign the
- * final result to an integral type smaller than uintptr_t.
- */
-#define P_TO_UINT32(p) ((u_int32_t)(uintptr_t)(p))
-#define P_TO_UINT16(p) ((u_int16_t)(uintptr_t)(p))
-
-/*
- * There are several on-page structures that are declared to have a number of
- * fields followed by a variable length array of items. The structure size
- * without including the variable length array or the address of the first of
- * those elements can be found using SSZ.
- *
- * This macro can also be used to find the offset of a structure element in a
- * structure. This is used in various places to copy structure elements from
- * unaligned memory references, e.g., pointers into a packed page.
- *
- * There are two versions because compilers object if you take the address of
- * an array.
- */
-#undef SSZ
-#define SSZ(name, field) P_TO_UINT16(&(((name *)0)->field))
-
-#undef SSZA
-#define SSZA(name, field) P_TO_UINT16(&(((name *)0)->field[0]))
-
-/* Structure used to print flag values. */
-typedef struct __fn {
- u_int32_t mask; /* Flag value. */
- const char *name; /* Flag name. */
-} FN;
-
-/* Set, clear and test flags. */
-#define FLD_CLR(fld, f) (fld) &= ~(f)
-#define FLD_ISSET(fld, f) ((fld) & (f))
-#define FLD_SET(fld, f) (fld) |= (f)
-#define F_CLR(p, f) (p)->flags &= ~(f)
-#define F_ISSET(p, f) ((p)->flags & (f))
-#define F_SET(p, f) (p)->flags |= (f)
-#define LF_CLR(f) ((flags) &= ~(f))
-#define LF_ISSET(f) ((flags) & (f))
-#define LF_SET(f) ((flags) |= (f))
-
-/*
- * Calculate a percentage. The values can overflow 32-bit integer arithmetic
- * so we use floating point.
- *
- * When calculating a bytes-vs-page size percentage, we're getting the inverse
- * of the percentage in all cases, that is, we want 100 minus the percentage we
- * calculate.
- */
-#define DB_PCT(v, total) \
- ((int)((total) == 0 ? 0 : ((double)(v) * 100) / (total)))
-#define DB_PCT_PG(v, total, pgsize) \
- ((int)((total) == 0 ? 0 : \
- 100 - ((double)(v) * 100) / ((total) * (pgsize))))
-
-/*
- * Structure used for callback message aggregation.
- *
- * Display values in XXX_stat_print calls.
- */
-typedef struct __db_msgbuf {
- char *buf; /* Heap allocated buffer. */
- char *cur; /* Current end of message. */
- size_t len; /* Allocated length of buffer. */
-} DB_MSGBUF;
-#define DB_MSGBUF_INIT(a) do { \
- (a)->buf = (a)->cur = NULL; \
- (a)->len = 0; \
-} while (0)
-#define DB_MSGBUF_FLUSH(dbenv, a) do { \
- if ((a)->buf != NULL) { \
- if ((a)->cur != (a)->buf) \
- __db_msg(dbenv, "%s", (a)->buf); \
- __os_free(dbenv, (a)->buf); \
- DB_MSGBUF_INIT(a); \
- } \
-} while (0)
-#define STAT_FMT(msg, fmt, type, v) do { \
- DB_MSGBUF __mb; \
- DB_MSGBUF_INIT(&__mb); \
- __db_msgadd(dbenv, &__mb, fmt, (type)(v)); \
- __db_msgadd(dbenv, &__mb, "\t%s", msg); \
- DB_MSGBUF_FLUSH(dbenv, &__mb); \
-} while (0)
-#define STAT_HEX(msg, v) \
- __db_msg(dbenv, "%#lx\t%s", (u_long)(v), msg)
-#define STAT_ISSET(msg, p) \
- __db_msg(dbenv, "%sSet\t%s", (p) == NULL ? "!" : " ", msg)
-#define STAT_LONG(msg, v) \
- __db_msg(dbenv, "%ld\t%s", (long)(v), msg)
-#define STAT_LSN(msg, lsnp) \
- __db_msg(dbenv, "%lu/%lu\t%s", \
- (u_long)(lsnp)->file, (u_long)(lsnp)->offset, msg)
-#define STAT_STRING(msg, p) do { \
- const char *__p = p; /* p may be a function call. */ \
- __db_msg(dbenv, "%s\t%s", __p == NULL ? "!Set" : __p, msg); \
-} while (0)
-#define STAT_ULONG(msg, v) \
- __db_msg(dbenv, "%lu\t%s", (u_long)(v), msg)
-
-/*******************************************************
- * API return values
- *******************************************************/
-/*
- * Return values that are OK for each different call. Most calls have a
- * standard 'return of 0 is only OK value', but some, like db->get have
- * DB_NOTFOUND as a return value, but it really isn't an error.
- */
-#define DB_RETOK_STD(ret) ((ret) == 0)
-#define DB_RETOK_DBCDEL(ret) ((ret) == 0 || (ret) == DB_KEYEMPTY || \
- (ret) == DB_NOTFOUND)
-#define DB_RETOK_DBCGET(ret) ((ret) == 0 || (ret) == DB_KEYEMPTY || \
- (ret) == DB_NOTFOUND)
-#define DB_RETOK_DBCPUT(ret) ((ret) == 0 || (ret) == DB_KEYEXIST || \
- (ret) == DB_NOTFOUND)
-#define DB_RETOK_DBDEL(ret) DB_RETOK_DBCDEL(ret)
-#define DB_RETOK_DBGET(ret) DB_RETOK_DBCGET(ret)
-#define DB_RETOK_DBPUT(ret) ((ret) == 0 || (ret) == DB_KEYEXIST)
-#define DB_RETOK_LGGET(ret) ((ret) == 0 || (ret) == DB_NOTFOUND)
-#define DB_RETOK_MPGET(ret) ((ret) == 0 || (ret) == DB_PAGE_NOTFOUND)
-#define DB_RETOK_REPPMSG(ret) ((ret) == 0 || \
- (ret) == DB_REP_ISPERM || \
- (ret) == DB_REP_NEWMASTER || \
- (ret) == DB_REP_NEWSITE || \
- (ret) == DB_REP_NOTPERM || \
- (ret) == DB_REP_STARTUPDONE)
-
-/* Find a reasonable operation-not-supported error. */
-#ifdef EOPNOTSUPP
-#define DB_OPNOTSUP EOPNOTSUPP
-#else
-#ifdef ENOTSUP
-#define DB_OPNOTSUP ENOTSUP
-#else
-#define DB_OPNOTSUP EINVAL
-#endif
-#endif
-
-/*******************************************************
- * Files.
- *******************************************************/
-/*
- * We use 1024 as the maximum path length. It's too hard to figure out what
- * the real path length is, as it was traditionally stored in <sys/param.h>,
- * and that file isn't always available.
- */
-#undef MAXPATHLEN
-#define MAXPATHLEN 1024
-
-#define PATH_DOT "." /* Current working directory. */
- /* Path separator character(s). */
-#define PATH_SEPARATOR "\\/:"
-
-/*******************************************************
- * Environment.
- *******************************************************/
-/* Type passed to __db_appname(). */
-typedef enum {
- DB_APP_NONE=0, /* No type (region). */
- DB_APP_DATA, /* Data file. */
- DB_APP_LOG, /* Log file. */
- DB_APP_TMP /* Temporary file. */
-} APPNAME;
-
-/*
- * CDB_LOCKING CDB product locking.
- * CRYPTO_ON Security has been configured.
- * LOCKING_ON Locking has been configured.
- * LOGGING_ON Logging has been configured.
- * MPOOL_ON Memory pool has been configured.
- * REP_ON Replication has been configured.
- * RPC_ON RPC has been configured.
- * TXN_ON Transactions have been configured.
- */
-#define CDB_LOCKING(dbenv) F_ISSET(dbenv, DB_ENV_CDB)
-#define CRYPTO_ON(dbenv) ((dbenv)->crypto_handle != NULL)
-#define LOCKING_ON(dbenv) ((dbenv)->lk_handle != NULL)
-#define LOGGING_ON(dbenv) ((dbenv)->lg_handle != NULL)
-#define MPOOL_ON(dbenv) ((dbenv)->mp_handle != NULL)
-#define REP_ON(dbenv) ((dbenv)->rep_handle != NULL)
-#define RPC_ON(dbenv) ((dbenv)->cl_handle != NULL)
-#define TXN_ON(dbenv) ((dbenv)->tx_handle != NULL)
-
-/*
- * STD_LOCKING Standard locking, that is, locking was configured and CDB
- * was not. We do not do locking in off-page duplicate trees,
- * so we check for that in the cursor first.
- */
-#define STD_LOCKING(dbc) \
- (!F_ISSET(dbc, DBC_OPD) && \
- !CDB_LOCKING((dbc)->dbp->dbenv) && LOCKING_ON((dbc)->dbp->dbenv))
-
-/*
- * IS_RECOVERING: The system is running recovery.
- */
-#define IS_RECOVERING(dbenv) \
- (LOGGING_ON(dbenv) && \
- F_ISSET((DB_LOG *)(dbenv)->lg_handle, DBLOG_RECOVER))
-
-/* Initialization methods are often illegal before/after open is called. */
-#define ENV_ILLEGAL_AFTER_OPEN(dbenv, name) \
- if (F_ISSET((dbenv), DB_ENV_OPEN_CALLED)) \
- return (__db_mi_open(dbenv, name, 1));
-#define ENV_ILLEGAL_BEFORE_OPEN(dbenv, name) \
- if (!F_ISSET((dbenv), DB_ENV_OPEN_CALLED)) \
- return (__db_mi_open(dbenv, name, 0));
-
-/* We're not actually user hostile, honest. */
-#define ENV_REQUIRES_CONFIG(dbenv, handle, i, flags) \
- if (handle == NULL) \
- return (__db_env_config(dbenv, i, flags));
-#define ENV_NOT_CONFIGURED(dbenv, handle, i, flags) \
- if (F_ISSET((dbenv), DB_ENV_OPEN_CALLED)) \
- ENV_REQUIRES_CONFIG(dbenv, handle, i, flags)
-
-/*******************************************************
- * Database Access Methods.
- *******************************************************/
-/*
- * DB_IS_THREADED --
- * The database handle is free-threaded (was opened with DB_THREAD).
- */
-#define DB_IS_THREADED(dbp) \
- ((dbp)->mutexp != NULL)
-
-/* Initialization methods are often illegal before/after open is called. */
-#define DB_ILLEGAL_AFTER_OPEN(dbp, name) \
- if (F_ISSET((dbp), DB_AM_OPEN_CALLED)) \
- return (__db_mi_open((dbp)->dbenv, name, 1));
-#define DB_ILLEGAL_BEFORE_OPEN(dbp, name) \
- if (!F_ISSET((dbp), DB_AM_OPEN_CALLED)) \
- return (__db_mi_open((dbp)->dbenv, name, 0));
-/* Some initialization methods are illegal if environment isn't local. */
-#define DB_ILLEGAL_IN_ENV(dbp, name) \
- if (!F_ISSET((dbp)->dbenv, DB_ENV_DBLOCAL)) \
- return (__db_mi_env((dbp)->dbenv, name));
-#define DB_ILLEGAL_METHOD(dbp, flags) { \
- int __ret; \
- if ((__ret = __dbh_am_chk(dbp, flags)) != 0) \
- return (__ret); \
-}
-
-/*
- * Common DBC->internal fields. Each access method adds additional fields
- * to this list, but the initial fields are common.
- */
-#define __DBC_INTERNAL \
- DBC *opd; /* Off-page duplicate cursor. */\
- \
- void *page; /* Referenced page. */ \
- db_pgno_t root; /* Tree root. */ \
- db_pgno_t pgno; /* Referenced page number. */ \
- db_indx_t indx; /* Referenced key item index. */\
- \
- DB_LOCK lock; /* Cursor lock. */ \
- db_lockmode_t lock_mode; /* Lock mode. */
-
-struct __dbc_internal {
- __DBC_INTERNAL
-};
-
-/* Actions that __db_master_update can take. */
-typedef enum { MU_REMOVE, MU_RENAME, MU_OPEN } mu_action;
-
-/*
- * Access-method-common macro for determining whether a cursor
- * has been initialized.
- */
-#define IS_INITIALIZED(dbc) ((dbc)->internal->pgno != PGNO_INVALID)
-
-/* Free the callback-allocated buffer, if necessary, hanging off of a DBT. */
-#define FREE_IF_NEEDED(sdbp, dbt) \
- if (F_ISSET((dbt), DB_DBT_APPMALLOC)) { \
- __os_ufree((sdbp)->dbenv, (dbt)->data); \
- F_CLR((dbt), DB_DBT_APPMALLOC); \
- }
-
-/*
- * Use memory belonging to object "owner" to return the results of
- * any no-DBT-flag get ops on cursor "dbc".
- */
-#define SET_RET_MEM(dbc, owner) \
- do { \
- (dbc)->rskey = &(owner)->my_rskey; \
- (dbc)->rkey = &(owner)->my_rkey; \
- (dbc)->rdata = &(owner)->my_rdata; \
- } while (0)
-
-/* Use the return-data memory src is currently set to use in dest as well. */
-#define COPY_RET_MEM(src, dest) \
- do { \
- (dest)->rskey = (src)->rskey; \
- (dest)->rkey = (src)->rkey; \
- (dest)->rdata = (src)->rdata; \
- } while (0)
-
-/* Reset the returned-memory pointers to their defaults. */
-#define RESET_RET_MEM(dbc) \
- do { \
- (dbc)->rskey = &(dbc)->my_rskey; \
- (dbc)->rkey = &(dbc)->my_rkey; \
- (dbc)->rdata = &(dbc)->my_rdata; \
- } while (0)
-
-/*******************************************************
- * Mpool.
- *******************************************************/
-/*
- * File types for DB access methods. Negative numbers are reserved to DB.
- */
-#define DB_FTYPE_SET -1 /* Call pgin/pgout functions. */
-#define DB_FTYPE_NOTSET 0 /* Don't call... */
-
-/* Structure used as the DB pgin/pgout pgcookie. */
-typedef struct __dbpginfo {
- size_t db_pagesize; /* Underlying page size. */
- u_int32_t flags; /* Some DB_AM flags needed. */
- DBTYPE type; /* DB type */
-} DB_PGINFO;
-
-/*******************************************************
- * Log.
- *******************************************************/
-/* Initialize an LSN to 'zero'. */
-#define ZERO_LSN(LSN) do { \
- (LSN).file = 0; \
- (LSN).offset = 0; \
-} while (0)
-#define IS_ZERO_LSN(LSN) ((LSN).file == 0 && (LSN).offset == 0)
-
-#define IS_INIT_LSN(LSN) ((LSN).file == 1 && (LSN).offset == 0)
-#define INIT_LSN(LSN) do { \
- (LSN).file = 1; \
- (LSN).offset = 0; \
-} while (0)
-
-#define MAX_LSN(LSN) do { \
- (LSN).file = UINT32_MAX; \
- (LSN).offset = UINT32_MAX; \
-} while (0)
-#define IS_MAX_LSN(LSN) \
- ((LSN).file == UINT32_MAX && (LSN).offset == UINT32_MAX)
-
-/* If logging is turned off, smash the lsn. */
-#define LSN_NOT_LOGGED(LSN) do { \
- (LSN).file = 0; \
- (LSN).offset = 1; \
-} while (0)
-#define IS_NOT_LOGGED_LSN(LSN) \
- ((LSN).file == 0 && (LSN).offset == 1)
-
-/*******************************************************
- * Txn.
- *******************************************************/
-#define DB_NONBLOCK(C) ((C)->txn != NULL && F_ISSET((C)->txn, TXN_NOWAIT))
-#define NOWAIT_FLAG(txn) \
- ((txn) != NULL && F_ISSET((txn), TXN_NOWAIT) ? DB_LOCK_NOWAIT : 0)
-#define IS_SUBTRANSACTION(txn) \
- ((txn) != NULL && (txn)->parent != NULL)
-
-/*******************************************************
- * Crypto.
- *******************************************************/
-#define DB_IV_BYTES 16 /* Bytes per IV */
-#define DB_MAC_KEY 20 /* Bytes per MAC checksum */
-
-/*******************************************************
- * Secondaries over RPC.
- *******************************************************/
-#ifdef CONFIG_TEST
-/*
- * These are flags passed to DB->associate calls by the Tcl API if running
- * over RPC. The RPC server will mask out these flags before making the real
- * DB->associate call.
- *
- * These flags must coexist with the valid flags to DB->associate (currently
- * DB_AUTO_COMMIT and DB_CREATE). DB_AUTO_COMMIT is in the group of
- * high-order shared flags (0xff000000), and DB_CREATE is in the low-order
- * group (0x00000fff), so we pick a range in between.
- */
-#define DB_RPC2ND_MASK 0x00f00000 /* Reserved bits. */
-
-#define DB_RPC2ND_REVERSEDATA 0x00100000 /* callback_n(0) _s_reversedata. */
-#define DB_RPC2ND_NOOP 0x00200000 /* callback_n(1) _s_noop */
-#define DB_RPC2ND_CONCATKEYDATA 0x00300000 /* callback_n(2) _s_concatkeydata */
-#define DB_RPC2ND_CONCATDATAKEY 0x00400000 /* callback_n(3) _s_concatdatakey */
-#define DB_RPC2ND_REVERSECONCAT 0x00500000 /* callback_n(4) _s_reverseconcat */
-#define DB_RPC2ND_TRUNCDATA 0x00600000 /* callback_n(5) _s_truncdata */
-#define DB_RPC2ND_CONSTANT 0x00700000 /* callback_n(6) _s_constant */
-#define DB_RPC2ND_GETZIP 0x00800000 /* sj_getzip */
-#define DB_RPC2ND_GETNAME 0x00900000 /* sj_getname */
-#endif
-
-/*******************************************************
- * Forward structure declarations.
- *******************************************************/
-struct __db_reginfo_t; typedef struct __db_reginfo_t REGINFO;
-struct __db_txnhead; typedef struct __db_txnhead DB_TXNHEAD;
-struct __db_txnlist; typedef struct __db_txnlist DB_TXNLIST;
-struct __vrfy_childinfo; typedef struct __vrfy_childinfo VRFY_CHILDINFO;
-struct __vrfy_dbinfo; typedef struct __vrfy_dbinfo VRFY_DBINFO;
-struct __vrfy_pageinfo; typedef struct __vrfy_pageinfo VRFY_PAGEINFO;
-
-#if defined(__cplusplus)
-}
-#endif
-
-/*******************************************************
- * Remaining general DB includes.
- *******************************************************/
-
-
-#include "dbinc/globals.h"
-#include "dbinc/debug.h"
-#include "dbinc/mutex.h"
-#include "dbinc/region.h"
-#include "dbinc_auto/mutex_ext.h" /* XXX: Include after region.h. */
-#include "dbinc_auto/env_ext.h"
-#include "dbinc/os.h"
-#include "dbinc/rep.h"
-#include "dbinc_auto/clib_ext.h"
-#include "dbinc_auto/common_ext.h"
-
-/*******************************************************
- * Remaining Log.
- * These need to be defined after the general includes
- * because they need rep.h from above.
- *******************************************************/
-/*
- * Test if the environment is currently logging changes. If we're in recovery
- * or we're a replication client, we don't need to log changes because they're
- * already in the log, even though we have a fully functional log system.
- */
-#define DBENV_LOGGING(dbenv) \
- (LOGGING_ON(dbenv) && !IS_REP_CLIENT(dbenv) && \
- (!IS_RECOVERING(dbenv)))
-
-/*
- * Test if we need to log a change. By default, we don't log operations without
- * associated transactions, unless DIAGNOSTIC, DEBUG_ROP or DEBUG_WOP are on.
- * This is because we want to get log records for read/write operations, and, if
- * we trying to debug something, more information is always better.
- *
- * The DBC_RECOVER flag is set when we're in abort, as well as during recovery;
- * thus DBC_LOGGING may be false for a particular dbc even when DBENV_LOGGING
- * is true.
- *
- * We explicitly use LOGGING_ON/IS_REP_CLIENT here because we don't want to pull
- * in the log headers, which IS_RECOVERING (and thus DBENV_LOGGING) rely on, and
- * because DBC_RECOVER should be set anytime IS_RECOVERING would be true.
- */
-#if defined(DIAGNOSTIC) || defined(DEBUG_ROP) || defined(DEBUG_WOP)
-#define DBC_LOGGING(dbc) \
- (LOGGING_ON((dbc)->dbp->dbenv) && \
- !F_ISSET((dbc), DBC_RECOVER) && !IS_REP_CLIENT((dbc)->dbp->dbenv))
-#else
-#define DBC_LOGGING(dbc) \
- ((dbc)->txn != NULL && LOGGING_ON((dbc)->dbp->dbenv) && \
- !F_ISSET((dbc), DBC_RECOVER) && !IS_REP_CLIENT((dbc)->dbp->dbenv))
-#endif
-
-#endif /* !_DB_INTERNAL_H_ */
diff --git a/db/build_win32/db_java.dsp b/db/build_win32/db_java.dsp
deleted file mode 100644
index 535774353..000000000
--- a/db/build_win32/db_java.dsp
+++ /dev/null
@@ -1,132 +0,0 @@
-# Microsoft Developer Studio Project File - Name="db_java" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-
-CFG=db_java - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "db_java.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "db_java.mak" CFG="db_java - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "db_java - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "db_java - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-MTL=midl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "db_java - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /Ob2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "DB_CREATE_DLL" /YX /FD /c
-# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
-# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
-# ADD LINK32 Release/libdb43.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:I386 /out:"Release/libdb_java43.dll"
-# Begin Custom Build - Compiling java files using javac
-ProjDir=.
-InputPath=.\Release\libdb_java43.dll
-SOURCE="$(InputPath)"
-
-"force_compilation.txt" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- echo compiling Berkeley DB classes
- mkdir "$(OUTDIR)\classes"
- javac -O -d "$(OUTDIR)\classes" -classpath "$(OUTDIR)/classes" ..\java\src\com\sleepycat\db\*.java ..\java\src\com\sleepycat\db\internal\*.java ..\java\src\com\sleepycat\bind\*.java ..\java\src\com\sleepycat\bind\serial\*.java ..\java\src\com\sleepycat\bind\tuple\*.java ..\java\src\com\sleepycat\collections\*.java ..\java\src\com\sleepycat\compat\*.java ..\java\src\com\sleepycat\util\*.java
- echo compiling examples
- mkdir "$(OUTDIR)\classes.ex"
- javac -O -d "$(OUTDIR)\classes.ex" -classpath "$(OUTDIR)\classes;$(OUTDIR)\classes.ex" ..\examples_java\src\com\sleepycat\examples\db\*.java ..\examples_java\src\com\sleepycat\examples\db\GettingStarted\*.java ..\examples_java\src\com\sleepycat\examples\collections\access\*.java ..\examples_java\src\com\sleepycat\examples\collections\hello\*.java ..\examples_java\src\com\sleepycat\examples\collections\ship\basic\*.java ..\examples_java\src\com\sleepycat\examples\collections\ship\entity\*.java ..\examples_java\src\com\sleepycat\examples\collections\ship\tuple\*.java ..\examples_java\src\com\sleepycat\examples\collections\ship\sentity\*.java ..\examples_java\src\com\sleepycat\examples\collections\ship\marshal\*.java ..\examples_java\src\com\sleepycat\examples\collections\ship\factory\*.java
- echo creating jar files
- jar cf "$(OUTDIR)\db.jar" -C "$(OUTDIR)\classes" .
- jar cf "$(OUTDIR)\dbexamples.jar" -C "$(OUTDIR)\classes.ex" .
- echo Java build finished
-
-# End Custom Build
-
-!ELSEIF "$(CFG)" == "db_java - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 2
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "DB_CREATE_DLL" /D "_WINDLL" /D "_AFXDLL" /YX"config.h" /FD /c
-# SUBTRACT CPP /Fr
-# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 Debug/libdb43d.lib /nologo /base:"0x13000000" /subsystem:windows /dll /pdb:none /debug /machine:I386 /out:"Debug/libdb_java43d.dll" /fixed:no
-# Begin Custom Build - Compiling java files using javac
-ProjDir=.
-InputPath=.\Debug\libdb_java43d.dll
-SOURCE="$(InputPath)"
-
-"force_compilation.txt" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- echo compiling Berkeley DB classes
- mkdir "$(OUTDIR)\classes"
- javac -g -d "$(OUTDIR)\classes" -classpath "$(OUTDIR)/classes" ..\java\src\com\sleepycat\db\*.java ..\java\src\com\sleepycat\db\internal\*.java ..\java\src\com\sleepycat\bind\*.java ..\java\src\com\sleepycat\bind\serial\*.java ..\java\src\com\sleepycat\bind\tuple\*.java ..\java\src\com\sleepycat\collections\*.java ..\java\src\com\sleepycat\compat\*.java ..\java\src\com\sleepycat\util\*.java
- echo compiling examples
- mkdir "$(OUTDIR)\classes.ex"
- javac -g -d "$(OUTDIR)\classes.ex" -classpath "$(OUTDIR)\classes;$(OUTDIR)\classes.ex" ..\examples_java\src\com\sleepycat\examples\db\*.java ..\examples_java\src\com\sleepycat\examples\db\GettingStarted\*.java ..\examples_java\src\com\sleepycat\examples\collections\access\*.java ..\examples_java\src\com\sleepycat\examples\collections\hello\*.java ..\examples_java\src\com\sleepycat\examples\collections\ship\basic\*.java ..\examples_java\src\com\sleepycat\examples\collections\ship\entity\*.java ..\examples_java\src\com\sleepycat\examples\collections\ship\tuple\*.java ..\examples_java\src\com\sleepycat\examples\collections\ship\sentity\*.java ..\examples_java\src\com\sleepycat\examples\collections\ship\marshal\*.java ..\examples_java\src\com\sleepycat\examples\collections\ship\factory\*.java
- echo creating jar files
- jar cf "$(OUTDIR)\db.jar" -C "$(OUTDIR)\classes" .
- jar cf "$(OUTDIR)\dbexamples.jar" -C "$(OUTDIR)\classes.ex" .
- echo Java build finished
-
-# End Custom Build
-
-!ENDIF
-
-# Begin Target
-
-# Name "db_java - Win32 Release"
-# Name "db_java - Win32 Debug"
-# Begin Source File
-
-SOURCE=..\libdb_java\db_java_wrap.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win32/db_java_xa.dsp b/db/build_win32/db_java_xa.dsp
deleted file mode 100644
index 9c700ffee..000000000
--- a/db/build_win32/db_java_xa.dsp
+++ /dev/null
@@ -1,85 +0,0 @@
-# Microsoft Developer Studio Project File - Name="db_java_xa" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) External Target" 0x0106
-
-CFG=db_java_xa - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "db_java_xa.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "db_java_xa.mak" CFG="db_java_xa - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "db_java_xa - Win32 Release" (based on "Win32 (x86) External Target")
-!MESSAGE "db_java_xa - Win32 Debug" (based on "Win32 (x86) External Target")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-
-!IF "$(CFG)" == "db_java_xa - Win32 Release"
-
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Cmd_Line "NMAKE /f db_java_xaj.mak"
-# PROP BASE Rebuild_Opt "/a"
-# PROP BASE Target_File "db_java_xaj.exe"
-# PROP BASE Bsc_Name "db_java_xaj.bsc"
-# PROP BASE Target_Dir ""
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Cmd_Line "NMAKE /f db_java_xaj.mak Release/dbxa.jar"
-# PROP Rebuild_Opt "/a"
-# PROP Target_File "Release/dbxa.jar"
-# PROP Bsc_Name ""
-# PROP Target_Dir ""
-
-!ELSEIF "$(CFG)" == "db_java_xa - Win32 Debug"
-
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Cmd_Line "NMAKE /f db_java_xaj.mak"
-# PROP BASE Rebuild_Opt "/a"
-# PROP BASE Target_File "db_java_xaj.exe"
-# PROP BASE Bsc_Name "db_java_xaj.bsc"
-# PROP BASE Target_Dir ""
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Cmd_Line "NMAKE /f db_java_xaj.mak Debug/dbxa.jar"
-# PROP Rebuild_Opt "/a"
-# PROP Target_File "Debug/dbxa.jar"
-# PROP Bsc_Name ""
-# PROP Target_Dir ""
-
-!ENDIF
-
-# Begin Target
-
-# Name "db_java_xa - Win32 Release"
-# Name "db_java_xa - Win32 Debug"
-
-!IF "$(CFG)" == "db_java_xa - Win32 Release"
-
-!ELSEIF "$(CFG)" == "db_java_xa - Win32 Debug"
-
-!ENDIF
-
-# Begin Source File
-
-SOURCE=.\db_java_xaj.mak
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win32/db_java_xaj.mak b/db/build_win32/db_java_xaj.mak
deleted file mode 100644
index c2dbc920d..000000000
--- a/db/build_win32/db_java_xaj.mak
+++ /dev/null
@@ -1,21 +0,0 @@
-JAVA_XADIR=../java/src/com/sleepycat/db/xa
-
-JAVA_XASRCS=\
- $(JAVA_XADIR)/DbXAResource.java \
- $(JAVA_XADIR)/DbXid.java
-
-Release/dbxa.jar : $(JAVA_XASRCS)
- @echo compiling Berkeley DB XA classes
- @javac -g -d ./Release/classes -classpath "$(CLASSPATH);./Release/classes" $(JAVA_XASRCS)
- @echo creating jar file
- @cd .\Release\classes
- @jar cf ../dbxa.jar com\sleepycat\db\xa\*.class
- @echo Java XA build finished
-
-Debug/dbxa.jar : $(JAVA_XASRCS)
- @echo compiling Berkeley DB XA classes
- @javac -g -d ./Debug/classes -classpath "$(CLASSPATH);./Debug/classes" $(JAVA_XASRCS)
- @echo creating jar file
- @cd .\Debug\classes
- @jar cf ../dbxa.jar com\sleepycat\db\xa\*.class
- @echo Java XA build finished
diff --git a/db/build_win32/db_lib.dsp b/db/build_win32/db_lib.dsp
deleted file mode 100644
index a7fb41579..000000000
--- a/db/build_win32/db_lib.dsp
+++ /dev/null
@@ -1,92 +0,0 @@
-# Microsoft Developer Studio Project File - Name="db_lib" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Generic Project" 0x010a
-
-CFG=db_lib - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "db_lib.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "db_lib.mak" CFG="db_lib - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "db_lib - Win32 Release" (based on "Win32 (x86) Generic Project")
-!MESSAGE "db_lib - Win32 Debug" (based on "Win32 (x86) Generic Project")
-!MESSAGE "db_lib - Win32 Release Static" (based on "Win32 (x86) Generic Project")
-!MESSAGE "db_lib - Win32 Debug Static" (based on "Win32 (x86) Generic Project")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-
-!IF "$(CFG)" == "db_lib - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Target_Dir ""
-
-!ELSEIF "$(CFG)" == "db_lib - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Target_Dir ""
-
-!ELSEIF "$(CFG)" == "db_lib - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release_static"
-# PROP BASE Intermediate_Dir "Release_static"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Target_Dir ""
-
-!ELSEIF "$(CFG)" == "db_lib - Win32 Debug Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug_static"
-# PROP BASE Intermediate_Dir "Debug_Static"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_Static"
-# PROP Target_Dir ""
-
-!ENDIF
-
-# Begin Target
-
-# Name "db_lib - Win32 Release"
-# Name "db_lib - Win32 Debug"
-# Name "db_lib - Win32 Release Static"
-# Name "db_lib - Win32 Debug Static"
-# End Target
-# End Project
diff --git a/db/build_win32/db_load.dsp b/db/build_win32/db_load.dsp
deleted file mode 100644
index 277b02b71..000000000
--- a/db/build_win32/db_load.dsp
+++ /dev/null
@@ -1,148 +0,0 @@
-# Microsoft Developer Studio Project File - Name="db_load" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=db_load - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "db_load.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "db_load.mak" CFG="db_load - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "db_load - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_load - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_load - Win32 Release Static" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_load - Win32 Debug Static" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "db_load - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 Release/libdb43.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-
-!ELSEIF "$(CFG)" == "db_load - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 Debug/libdb43d.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-
-!ELSEIF "$(CFG)" == "db_load - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Release_static/libdb43.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 Release_static/libdb43s.lib /nologo /subsystem:console /machine:I386
-
-!ELSEIF "$(CFG)" == "db_load - Win32 Debug Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Debug_static/libdb43d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no
-# ADD LINK32 Debug_static/libdb43sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "db_load - Win32 Release"
-# Name "db_load - Win32 Debug"
-# Name "db_load - Win32 Release Static"
-# Name "db_load - Win32 Debug Static"
-# Begin Source File
-
-SOURCE=..\db_load\db_load.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\clib\getopt.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win32/db_perf.dsp b/db/build_win32/db_perf.dsp
deleted file mode 100644
index 2e2617d61..000000000
--- a/db/build_win32/db_perf.dsp
+++ /dev/null
@@ -1,224 +0,0 @@
-# Microsoft Developer Studio Project File - Name="db_perf" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=db_perf - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "db_perf.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "db_perf.mak" CFG="db_perf - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "db_perf - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_perf - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_perf - Win32 Release Static" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_perf - Win32 Debug Static" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "db_perf - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 Release/libdb43.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-
-!ELSEIF "$(CFG)" == "db_perf - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 Debug/libdb43d.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-
-!ELSEIF "$(CFG)" == "db_perf - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Release_static/libdb43.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 Release_static/libdb43s.lib /nologo /subsystem:console /machine:I386
-
-!ELSEIF "$(CFG)" == "db_perf - Win32 Debug Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Debug_static/libdb43d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no
-# ADD LINK32 Debug_static/libdb43sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "db_perf - Win32 Release"
-# Name "db_perf - Win32 Debug"
-# Name "db_perf - Win32 Release Static"
-# Name "db_perf - Win32 Debug Static"
-# Begin Source File
-
-SOURCE=..\test_perf\db_perf.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\test_perf\perf_checkpoint.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\test_perf\perf_config.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\test_perf\perf_dbs.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\test_perf\perf_dead.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\test_perf\perf_debug.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\test_perf\perf_file.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\test_perf\perf_key.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\test_perf\perf_log.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\test_perf\perf_misc.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\test_perf\perf_op.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\test_perf\perf_parse.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\test_perf\perf_rand.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\test_perf\perf_spawn.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\test_perf\perf_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\test_perf\perf_sync.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\test_perf\perf_thread.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\test_perf\perf_trickle.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\test_perf\perf_txn.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\test_perf\perf_util.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\clib\getopt.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win32/db_printlog.dsp b/db/build_win32/db_printlog.dsp
deleted file mode 100644
index 7ca7fec5f..000000000
--- a/db/build_win32/db_printlog.dsp
+++ /dev/null
@@ -1,184 +0,0 @@
-# Microsoft Developer Studio Project File - Name="db_printlog" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=db_printlog - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "db_printlog.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "db_printlog.mak" CFG="db_printlog - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "db_printlog - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_printlog - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_printlog - Win32 Release Static" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_printlog - Win32 Debug Static" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "db_printlog - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 Release/libdb43.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-
-!ELSEIF "$(CFG)" == "db_printlog - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 Debug/libdb43d.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-
-!ELSEIF "$(CFG)" == "db_printlog - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Release_static/libdb43.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 Release_static/libdb43s.lib /nologo /subsystem:console /machine:I386
-
-!ELSEIF "$(CFG)" == "db_printlog - Win32 Debug Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Debug_static/libdb43d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no
-# ADD LINK32 Debug_static/libdb43sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "db_printlog - Win32 Release"
-# Name "db_printlog - Win32 Debug"
-# Name "db_printlog - Win32 Release Static"
-# Name "db_printlog - Win32 Debug Static"
-# Begin Source File
-
-SOURCE=..\btree\btree_autop.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\crdel_autop.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_autop.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db_printlog\db_printlog.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\dbreg\dbreg_autop.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\fileops\fileops_autop.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash_autop.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\qam\qam_autop.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\rep\rep_autop.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\txn\txn_autop.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\clib\getopt.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win32/db_recover.dsp b/db/build_win32/db_recover.dsp
deleted file mode 100644
index e41a41f69..000000000
--- a/db/build_win32/db_recover.dsp
+++ /dev/null
@@ -1,148 +0,0 @@
-# Microsoft Developer Studio Project File - Name="db_recover" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=db_recover - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "db_recover.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "db_recover.mak" CFG="db_recover - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "db_recover - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_recover - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_recover - Win32 Release Static" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_recover - Win32 Debug Static" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "db_recover - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 Release/libdb43.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-
-!ELSEIF "$(CFG)" == "db_recover - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 Debug/libdb43d.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-
-!ELSEIF "$(CFG)" == "db_recover - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Release_static/libdb43.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 Release_static/libdb43s.lib /nologo /subsystem:console /machine:I386
-
-!ELSEIF "$(CFG)" == "db_recover - Win32 Debug Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Debug_static/libdb43d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no
-# ADD LINK32 Debug_static/libdb43sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "db_recover - Win32 Release"
-# Name "db_recover - Win32 Debug"
-# Name "db_recover - Win32 Release Static"
-# Name "db_recover - Win32 Debug Static"
-# Begin Source File
-
-SOURCE=..\db_recover\db_recover.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\clib\getopt.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win32/db_small.dsp b/db/build_win32/db_small.dsp
deleted file mode 100644
index f82b0b08f..000000000
--- a/db/build_win32/db_small.dsp
+++ /dev/null
@@ -1,720 +0,0 @@
-# Microsoft Developer Studio Project File - Name="db_small" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=db_small - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "db_small.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "db_small.mak" CFG="db_small - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "db_small - Win32 Release Static" (based on "Win32 (x86) Static Library")
-!MESSAGE "db_small - Win32 Debug Static" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "db_small - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release_small"
-# PROP BASE Intermediate_Dir "Release_small"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_small"
-# PROP Intermediate_Dir "Release_small"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "HAVE_SMALLBUILD" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX"config.h" /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "HAVE_SMALLBUILD" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX"config.h" /FD /c
-# ADD BASE RSC /l 0xc09
-# ADD RSC /l 0xc09
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"Release_small/libdb43s.lib"
-# ADD LIB32 /nologo /out:"Release_small/libdb43s.lib"
-
-!ELSEIF "$(CFG)" == "db_small - Win32 Debug Static"
-
-# PROP BASE Use_MFC 1
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug_small"
-# PROP BASE Intermediate_Dir "Debug_small"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 1
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_small"
-# PROP Intermediate_Dir "Debug_small"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "HAVE_SMALLBUILD" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX"config.h" /FD /c
-# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "HAVE_SMALLBUILD" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX"config.h" /FD /c
-# ADD BASE RSC /l 0xc09
-# ADD RSC /l 0xc09
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"Debug_small/libdb43sd.lib"
-# ADD LIB32 /nologo /out:"Debug_small/libdb43sd.lib"
-
-!ENDIF
-
-# Begin Target
-
-# Name "db_small - Win32 Release Static"
-# Name "db_small - Win32 Debug Static"
-# Begin Source File
-
-SOURCE=..\btree\bt_compare.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_conv.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_curadj.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_cursor.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_delete.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_open.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_put.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_rec.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_reclaim.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_recno.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_rsearch.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_search.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_split.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_upgrade.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\btree_auto.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\clib\strcasecmp.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\crypto_stub.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\db_byteorder.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\db_err.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\db_getlong.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\db_idspace.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\db_log2.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\util_cache.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\util_log.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\util_sig.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_db.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_dbc.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_dbt.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_env.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_except.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_lock.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_logc.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_mpool.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_multi.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_seq.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_txn.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\crdel_auto.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\crdel_rec.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_am.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_auto.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_cam.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_conv.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_dispatch.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_dup.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_iface.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_join.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_meta.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_open.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_overflow.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_pr.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_rec.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_reclaim.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_remove.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_rename.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_ret.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_setid.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_setlsn.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_stati.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_truncate.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_upg.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_upg_opd.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_vrfy_stub.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\dbreg\dbreg.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\dbreg\dbreg_auto.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\dbreg\dbreg_rec.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\dbreg\dbreg_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\dbreg\dbreg_util.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\env\db_salloc.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\env\db_shash.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\env\env_file.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\env\env_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\env\env_open.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\env\env_recover.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\env\env_region.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\env\env_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\fileops\fileops_auto.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\fileops\fop_basic.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\fileops\fop_rec.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\fileops\fop_util.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash_func.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash_stub.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hmac\hmac.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hmac\sha1.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lock\lock.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lock\lock_deadlock.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lock\lock_id.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lock\lock_list.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lock\lock_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lock\lock_region.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lock\lock_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lock\lock_timer.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lock\lock_util.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\log\log.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\log\log_archive.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\log\log_compare.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\log\log_get.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\log\log_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\log\log_put.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\log\log_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_alloc.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_bh.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_fget.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_fmethod.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_fopen.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_fput.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_fset.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_region.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_register.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_sync.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_trickle.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mutex\mut_win32.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mutex\mutex.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os\os_alloc.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os\os_id.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os\os_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os\os_oflags.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os\os_region.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os\os_root.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os\os_rpath.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os\os_tmpdir.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_abs.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_clock.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_config.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_dir.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_errno.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_fid.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_fsync.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_handle.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_map.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_open.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_rename.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_rw.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_seek.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_sleep.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_spin.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_truncate.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_unlink.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\qam\qam_stub.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\rep\rep_stub.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\sequence\seq_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\sequence\sequence.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\txn\txn.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\txn\txn_auto.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\txn\txn_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\txn\txn_rec.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\txn\txn_recover.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\txn\txn_region.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\txn\txn_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\txn\txn_util.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\xa\xa.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\xa\xa_db.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\xa\xa_map.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win32/db_stat.dsp b/db/build_win32/db_stat.dsp
deleted file mode 100644
index 5397b52b4..000000000
--- a/db/build_win32/db_stat.dsp
+++ /dev/null
@@ -1,148 +0,0 @@
-# Microsoft Developer Studio Project File - Name="db_stat" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=db_stat - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "db_stat.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "db_stat.mak" CFG="db_stat - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "db_stat - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_stat - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_stat - Win32 Release Static" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_stat - Win32 Debug Static" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "db_stat - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 Release/libdb43.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-
-!ELSEIF "$(CFG)" == "db_stat - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 Debug/libdb43d.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-
-!ELSEIF "$(CFG)" == "db_stat - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Release_static/libdb43.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 Release_static/libdb43s.lib /nologo /subsystem:console /machine:I386
-
-!ELSEIF "$(CFG)" == "db_stat - Win32 Debug Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Debug_static/libdb43d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no
-# ADD LINK32 Debug_static/libdb43sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "db_stat - Win32 Release"
-# Name "db_stat - Win32 Debug"
-# Name "db_stat - Win32 Release Static"
-# Name "db_stat - Win32 Debug Static"
-# Begin Source File
-
-SOURCE=..\db_stat\db_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\clib\getopt.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win32/db_static.dsp b/db/build_win32/db_static.dsp
deleted file mode 100644
index 063db5791..000000000
--- a/db/build_win32/db_static.dsp
+++ /dev/null
@@ -1,864 +0,0 @@
-# Microsoft Developer Studio Project File - Name="db_static" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=db_static - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "db_static.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "db_static.mak" CFG="db_static - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "db_static - Win32 Release Static" (based on "Win32 (x86) Static Library")
-!MESSAGE "db_static - Win32 Debug Static" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "db_static - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release_static"
-# PROP BASE Intermediate_Dir "Release_static"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX"config.h" /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX"config.h" /FD /c
-# ADD BASE RSC /l 0xc09
-# ADD RSC /l 0xc09
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"Release/libdb43s.lib"
-# ADD LIB32 /nologo /out:"Release_static/libdb43s.lib"
-
-!ELSEIF "$(CFG)" == "db_static - Win32 Debug Static"
-
-# PROP BASE Use_MFC 1
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug_static"
-# PROP BASE Intermediate_Dir "Debug_static"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 1
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_static"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "CONFIG_TEST" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX"config.h" /FD /c
-# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "CONFIG_TEST" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX"config.h" /FD /c
-# ADD BASE RSC /l 0xc09
-# ADD RSC /l 0xc09
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"Debug/libdb43sd.lib"
-# ADD LIB32 /nologo /out:"Debug_static/libdb43sd.lib"
-
-!ENDIF
-
-# Begin Target
-
-# Name "db_static - Win32 Release Static"
-# Name "db_static - Win32 Debug Static"
-# Begin Source File
-
-SOURCE=..\btree\bt_compare.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_conv.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_curadj.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_cursor.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_delete.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_open.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_put.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_rec.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_reclaim.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_recno.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_rsearch.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_search.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_split.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_upgrade.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_verify.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\btree_auto.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\clib\strcasecmp.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\db_byteorder.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\db_err.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\db_getlong.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\db_idspace.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\db_log2.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\util_cache.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\util_log.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\util_sig.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\crypto\aes_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\crypto\crypto.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\crypto\mersenne\mt19937db.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\crypto\rijndael\rijndael-alg-fst.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\crypto\rijndael\rijndael-api-fst.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_db.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_dbc.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_dbt.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_env.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_except.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_lock.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_logc.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_mpool.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_multi.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_seq.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_txn.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\crdel_auto.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\crdel_rec.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_am.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_auto.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_cam.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_conv.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_dispatch.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_dup.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_iface.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_join.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_meta.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_open.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_overflow.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_ovfl_vrfy.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_pr.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_rec.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_reclaim.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_remove.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_rename.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_ret.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_setid.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_setlsn.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_stati.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_truncate.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_upg.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_upg_opd.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_vrfy.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_vrfyutil.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\dbm\dbm.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\dbreg\dbreg.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\dbreg\dbreg_auto.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\dbreg\dbreg_rec.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\dbreg\dbreg_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\dbreg\dbreg_util.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\env\db_salloc.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\env\db_shash.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\env\env_file.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\env\env_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\env\env_open.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\env\env_recover.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\env\env_region.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\env\env_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\fileops\fileops_auto.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\fileops\fop_basic.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\fileops\fop_rec.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\fileops\fop_util.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash_auto.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash_conv.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash_dup.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash_func.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash_meta.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash_open.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash_page.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash_rec.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash_reclaim.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash_upgrade.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash_verify.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hmac\hmac.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hmac\sha1.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hsearch\hsearch.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lock\lock.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lock\lock_deadlock.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lock\lock_id.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lock\lock_list.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lock\lock_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lock\lock_region.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lock\lock_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lock\lock_timer.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lock\lock_util.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\log\log.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\log\log_archive.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\log\log_compare.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\log\log_get.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\log\log_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\log\log_put.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\log\log_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_alloc.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_bh.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_fget.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_fmethod.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_fopen.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_fput.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_fset.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_region.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_register.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_sync.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_trickle.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mutex\mut_win32.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mutex\mutex.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os\os_alloc.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os\os_id.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os\os_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os\os_oflags.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os\os_region.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os\os_root.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os\os_rpath.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os\os_tmpdir.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_abs.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_clock.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_config.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_dir.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_errno.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_fid.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_fsync.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_handle.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_map.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_open.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_rename.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_rw.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_seek.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_sleep.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_spin.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_truncate.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_unlink.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\qam\qam.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\qam\qam_auto.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\qam\qam_conv.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\qam\qam_files.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\qam\qam_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\qam\qam_open.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\qam\qam_rec.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\qam\qam_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\qam\qam_upgrade.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\qam\qam_verify.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\rep\rep_auto.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\rep\rep_backup.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\rep\rep_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\rep\rep_record.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\rep\rep_region.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\rep\rep_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\rep\rep_util.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\sequence\seq_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\sequence\sequence.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\txn\txn.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\txn\txn_auto.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\txn\txn_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\txn\txn_rec.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\txn\txn_recover.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\txn\txn_region.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\txn\txn_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\txn\txn_util.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\xa\xa.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\xa\xa_db.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\xa\xa_map.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win32/db_tcl.dsp b/db/build_win32/db_tcl.dsp
deleted file mode 100644
index 665475e50..000000000
--- a/db/build_win32/db_tcl.dsp
+++ /dev/null
@@ -1,148 +0,0 @@
-# Microsoft Developer Studio Project File - Name="db_tcl" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-
-CFG=db_tcl - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "db_tcl.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "db_tcl.mak" CFG="db_tcl - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "db_tcl - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "db_tcl - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-MTL=midl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "db_tcl - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /Ob2 /I "." /I ".." /D "DB_TCL_SUPPORT" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "DB_CREATE_DLL" /YX /FD /c
-# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
-# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
-# ADD LINK32 Release/libdb43.lib tcl84.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:I386 /out:"Release/libdb_tcl43.dll"
-
-!ELSEIF "$(CFG)" == "db_tcl - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 2
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "DB_TCL_SUPPORT" /D "CONFIG_TEST" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "DB_CREATE_DLL" /D "_WINDLL" /D "_AFXDLL" /YX"config.h" /FD /c
-# SUBTRACT CPP /Fr
-# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 Debug/libdb43d.lib tcl84g.lib /nologo /base:"0x13000000" /subsystem:windows /dll /pdb:none /debug /machine:I386 /out:"Debug/libdb_tcl43d.dll" /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "db_tcl - Win32 Release"
-# Name "db_tcl - Win32 Debug"
-# Begin Source File
-
-SOURCE=.\libdb_tcl.def
-# End Source File
-# Begin Source File
-
-SOURCE=..\tcl\tcl_compat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\tcl\tcl_db.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\tcl\tcl_db_pkg.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\tcl\tcl_dbcursor.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\tcl\tcl_env.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\tcl\tcl_internal.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\tcl\tcl_lock.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\tcl\tcl_log.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\tcl\tcl_mp.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\tcl\tcl_rep.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\tcl\tcl_seq.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\tcl\tcl_txn.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\tcl\tcl_util.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win32/db_test.dsp b/db/build_win32/db_test.dsp
deleted file mode 100644
index 457b00cde..000000000
--- a/db/build_win32/db_test.dsp
+++ /dev/null
@@ -1,100 +0,0 @@
-# Microsoft Developer Studio Project File - Name="db_test" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=db_test - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "db_test.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "db_test.mak" CFG="db_test - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "db_test - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_test - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "db_test - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 Release/libdb43.lib /nologo /subsystem:console /machine:I386
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy built executable files.
-PostBuild_Cmds=copy Release\*.exe .
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "db_test - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 Debug/libdb43d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /out:"Debug/dbkill.exe" /fixed:no
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy built executable files.
-PostBuild_Cmds=copy Debug\*.exe .
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "db_test - Win32 Release"
-# Name "db_test - Win32 Debug"
-# Begin Source File
-
-SOURCE=.\dbkill.cpp
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win32/db_test.src b/db/build_win32/db_test.src
deleted file mode 100644
index 360c19dc2..000000000
--- a/db/build_win32/db_test.src
+++ /dev/null
@@ -1,97 +0,0 @@
-# Microsoft Developer Studio Project File - Name="@project_name@" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=@project_name@ - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "@project_name@.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "@project_name@.mak" CFG="@project_name@ - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "@project_name@ - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "@project_name@ - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "@project_name@ - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 Release/libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@.lib /nologo /subsystem:console /machine:I386
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy built executable files.
-PostBuild_Cmds=copy Release\*.exe .
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "@project_name@ - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 Debug/libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /out:"Debug/dbkill.exe" /fixed:no
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy built executable files.
-PostBuild_Cmds=copy Debug\*.exe .
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "@project_name@ - Win32 Release"
-# Name "@project_name@ - Win32 Debug"
-@SOURCE_FILES@
-# End Target
-# End Project
diff --git a/db/build_win32/db_upgrade.dsp b/db/build_win32/db_upgrade.dsp
deleted file mode 100644
index e5c49aac3..000000000
--- a/db/build_win32/db_upgrade.dsp
+++ /dev/null
@@ -1,148 +0,0 @@
-# Microsoft Developer Studio Project File - Name="db_upgrade" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=db_upgrade - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "db_upgrade.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "db_upgrade.mak" CFG="db_upgrade - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "db_upgrade - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_upgrade - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_upgrade - Win32 Release Static" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_upgrade - Win32 Debug Static" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "db_upgrade - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 Release/libdb43.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-
-!ELSEIF "$(CFG)" == "db_upgrade - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 Debug/libdb43d.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-
-!ELSEIF "$(CFG)" == "db_upgrade - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Release_static/libdb43.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 Release_static/libdb43s.lib /nologo /subsystem:console /machine:I386
-
-!ELSEIF "$(CFG)" == "db_upgrade - Win32 Debug Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Debug_static/libdb43d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no
-# ADD LINK32 Debug_static/libdb43sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "db_upgrade - Win32 Release"
-# Name "db_upgrade - Win32 Debug"
-# Name "db_upgrade - Win32 Release Static"
-# Name "db_upgrade - Win32 Debug Static"
-# Begin Source File
-
-SOURCE=..\db_upgrade\db_upgrade.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\clib\getopt.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win32/db_verify.dsp b/db/build_win32/db_verify.dsp
deleted file mode 100644
index 09eb3d18a..000000000
--- a/db/build_win32/db_verify.dsp
+++ /dev/null
@@ -1,148 +0,0 @@
-# Microsoft Developer Studio Project File - Name="db_verify" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=db_verify - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "db_verify.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "db_verify.mak" CFG="db_verify - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "db_verify - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_verify - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_verify - Win32 Release Static" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_verify - Win32 Debug Static" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "db_verify - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 Release/libdb43.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-
-!ELSEIF "$(CFG)" == "db_verify - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 Debug/libdb43d.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-
-!ELSEIF "$(CFG)" == "db_verify - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Release_static/libdb43.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 Release_static/libdb43s.lib /nologo /subsystem:console /machine:I386
-
-!ELSEIF "$(CFG)" == "db_verify - Win32 Debug Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Debug_static/libdb43d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no
-# ADD LINK32 Debug_static/libdb43sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "db_verify - Win32 Release"
-# Name "db_verify - Win32 Debug"
-# Name "db_verify - Win32 Release Static"
-# Name "db_verify - Win32 Debug Static"
-# Begin Source File
-
-SOURCE=..\db_verify\db_verify.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\clib\getopt.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win32/dbkill.cpp b/db/build_win32/dbkill.cpp
deleted file mode 100644
index 7be76135c..000000000
--- a/db/build_win32/dbkill.cpp
+++ /dev/null
@@ -1,131 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1999-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: dbkill.cpp,v 11.9 2004/01/28 03:35:52 bostic Exp $
- */
-/*
- * Kill -
- * Simulate Unix kill on Windows/NT and Windows/9X.
- * This good enough to support the Berkeley DB test suite,
- * but may be missing some favorite features.
- *
- * Would have used MKS kill, but it didn't seem to work well
- * on Win/9X. Cygnus kill works within the Gnu/Cygnus environment
- * (where processes are given small pids, with presumably a translation
- * table between small pids and actual process handles), but our test
- * environment, via Tcl, does not use the Cygnus environment.
- *
- * Compile this and install it as c:/tools/kill.exe (or as indicated
- * by build_win32/include.tcl ).
- */
-
-#include <windows.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <limits.h>
-
-/*
- * Like atol, with specified base. Would use stdlib, but
- * strtol("0xFFFF1234", NULL, 16) returns 0x7FFFFFFF and
- * strtol("4294712487", NULL, 16) returns 0x7FFFFFFF w/ VC++
- */
-long
-myatol(char *s, int base)
-{
- long result = 0;
- char ch;
- int sign = 1; /* + */
- if (base == 0)
- base = 10;
- if (base != 10 && base != 16)
- return LONG_MAX;
- while ((ch = *s++) != '\0') {
- if (ch == '-') {
- sign = -sign;
- }
- else if (ch >= '0' && ch <= '9') {
- result = result * base + (ch - '0');
- }
- else if (ch == 'x' || ch == 'X') {
- /* Allow leading 0x..., and switch to base 16 */
- base = 16;
- }
- else if (base == 16 && ch >= 'a' && ch <= 'f') {
- result = result * base + (ch - 'a' + 10);
- }
- else if (base == 16 && ch >= 'A' && ch <= 'F') {
- result = result * base + (ch - 'A' + 10);
- }
- else {
- if (sign > 1)
- return LONG_MAX;
- else
- return LONG_MIN;
- }
- }
- return sign * result;
-}
-
-void
-usage_exit()
-{
- fprintf(stderr, "Usage: kill [ -sig ] pid\n");
- fprintf(stderr, " for win32, sig must be or 0, 15 (TERM)\n");
- exit(EXIT_FAILURE);
-}
-
-int
-main(int argc, char **argv)
-{
- HANDLE hProcess ;
- DWORD accessflag;
- long pid;
- int sig = 15;
-
- if (argc > 2) {
- if (argv[1][0] != '-')
- usage_exit();
-
- if (strcmp(argv[1], "-TERM") == 0)
- sig = 15;
- else {
- /* currently sig is more or less ignored,
- * we only care if it is zero or not
- */
- sig = atoi(&argv[1][1]);
- if (sig < 0)
- usage_exit();
- }
- argc--;
- argv++;
- }
- if (argc < 2)
- usage_exit();
-
- pid = myatol(argv[1], 10);
- /*printf("pid = %ld (0x%lx) (command line %s)\n", pid, pid, argv[1]);*/
- if (pid == LONG_MAX || pid == LONG_MIN)
- usage_exit();
-
- if (sig == 0)
- accessflag = PROCESS_QUERY_INFORMATION | PROCESS_VM_READ;
- else
- accessflag = STANDARD_RIGHTS_REQUIRED | PROCESS_TERMINATE;
- hProcess = OpenProcess(accessflag, FALSE, pid);
- if (hProcess == NULL) {
- fprintf(stderr, "dbkill: %s: no such process\n", argv[1]);
- exit(EXIT_FAILURE);
- }
- if (sig == 0)
- exit(EXIT_SUCCESS);
- if (!TerminateProcess(hProcess, 99)) {
- DWORD err = GetLastError();
- fprintf(stderr,
- "dbkill: cannot kill process: error %d (0x%lx)\n", err, err);
- exit(EXIT_FAILURE);
- }
- return EXIT_SUCCESS;
-}
diff --git a/db/build_win32/dynamic_dsp.src b/db/build_win32/dynamic_dsp.src
deleted file mode 100644
index ff4b431d5..000000000
--- a/db/build_win32/dynamic_dsp.src
+++ /dev/null
@@ -1,93 +0,0 @@
-# Microsoft Developer Studio Project File - Name="@project_name@" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-
-CFG=@project_name@ - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "@project_name@.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "@project_name@.mak" CFG="@project_name@ - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "@project_name@ - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "@project_name@ - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-MTL=midl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "@project_name@ - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /Ob2 /I "." /I ".." /D "DB_CREATE_DLL" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c
-# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
-# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
-# ADD LINK32 /nologo /base:"0x13000000" /subsystem:windows /dll /machine:I386 /out:"Release/libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@.dll"
-
-!ELSEIF "$(CFG)" == "@project_name@ - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 2
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "DB_CREATE_DLL" /D "CONFIG_TEST" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX"config.h" /FD /c
-# SUBTRACT CPP /Fr
-# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /pdb:none /debug /machine:I386 /out:"Debug/libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@d.dll" /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "@project_name@ - Win32 Release"
-# Name "@project_name@ - Win32 Debug"
-@SOURCE_FILES@
-# End Target
-# End Project
diff --git a/db/build_win32/ex_access.dsp b/db/build_win32/ex_access.dsp
deleted file mode 100644
index 09c1ad172..000000000
--- a/db/build_win32/ex_access.dsp
+++ /dev/null
@@ -1,148 +0,0 @@
-# Microsoft Developer Studio Project File - Name="ex_access" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=ex_access - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "ex_access.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "ex_access.mak" CFG="ex_access - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "ex_access - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_access - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_access - Win32 Release Static" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_access - Win32 Debug Static" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "ex_access - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 Release/libdb43.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-
-!ELSEIF "$(CFG)" == "ex_access - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 Debug/libdb43d.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-
-!ELSEIF "$(CFG)" == "ex_access - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Release_static/libdb43.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 Release_static/libdb43s.lib /nologo /subsystem:console /machine:I386
-
-!ELSEIF "$(CFG)" == "ex_access - Win32 Debug Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Debug_static/libdb43d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no
-# ADD LINK32 Debug_static/libdb43sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "ex_access - Win32 Release"
-# Name "ex_access - Win32 Debug"
-# Name "ex_access - Win32 Release Static"
-# Name "ex_access - Win32 Debug Static"
-# Begin Source File
-
-SOURCE=..\examples_c\ex_access.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\clib\getopt.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win32/ex_btrec.dsp b/db/build_win32/ex_btrec.dsp
deleted file mode 100644
index 6cbb91071..000000000
--- a/db/build_win32/ex_btrec.dsp
+++ /dev/null
@@ -1,148 +0,0 @@
-# Microsoft Developer Studio Project File - Name="ex_btrec" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=ex_btrec - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "ex_btrec.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "ex_btrec.mak" CFG="ex_btrec - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "ex_btrec - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_btrec - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_btrec - Win32 Release Static" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_btrec - Win32 Debug Static" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "ex_btrec - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 Release/libdb43.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-
-!ELSEIF "$(CFG)" == "ex_btrec - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 Debug/libdb43d.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-
-!ELSEIF "$(CFG)" == "ex_btrec - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Release_static/libdb43.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 Release_static/libdb43s.lib /nologo /subsystem:console /machine:I386
-
-!ELSEIF "$(CFG)" == "ex_btrec - Win32 Debug Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Debug_static/libdb43d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no
-# ADD LINK32 Debug_static/libdb43sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "ex_btrec - Win32 Release"
-# Name "ex_btrec - Win32 Debug"
-# Name "ex_btrec - Win32 Release Static"
-# Name "ex_btrec - Win32 Debug Static"
-# Begin Source File
-
-SOURCE=..\examples_c\ex_btrec.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\clib\getopt.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win32/ex_env.dsp b/db/build_win32/ex_env.dsp
deleted file mode 100644
index 5d6176014..000000000
--- a/db/build_win32/ex_env.dsp
+++ /dev/null
@@ -1,148 +0,0 @@
-# Microsoft Developer Studio Project File - Name="ex_env" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=ex_env - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "ex_env.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "ex_env.mak" CFG="ex_env - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "ex_env - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_env - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_env - Win32 Release Static" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_env - Win32 Debug Static" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "ex_env - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 Release/libdb43.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-
-!ELSEIF "$(CFG)" == "ex_env - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 Debug/libdb43d.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-
-!ELSEIF "$(CFG)" == "ex_env - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Release_static/libdb43.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 Release_static/libdb43s.lib /nologo /subsystem:console /machine:I386
-
-!ELSEIF "$(CFG)" == "ex_env - Win32 Debug Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Debug_static/libdb43d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no
-# ADD LINK32 Debug_static/libdb43sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "ex_env - Win32 Release"
-# Name "ex_env - Win32 Debug"
-# Name "ex_env - Win32 Release Static"
-# Name "ex_env - Win32 Debug Static"
-# Begin Source File
-
-SOURCE=..\examples_c\ex_env.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\clib\getopt.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win32/ex_lock.dsp b/db/build_win32/ex_lock.dsp
deleted file mode 100644
index 3cb1dc170..000000000
--- a/db/build_win32/ex_lock.dsp
+++ /dev/null
@@ -1,148 +0,0 @@
-# Microsoft Developer Studio Project File - Name="ex_lock" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=ex_lock - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "ex_lock.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "ex_lock.mak" CFG="ex_lock - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "ex_lock - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_lock - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_lock - Win32 Release Static" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_lock - Win32 Debug Static" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "ex_lock - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 Release/libdb43.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-
-!ELSEIF "$(CFG)" == "ex_lock - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 Debug/libdb43d.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-
-!ELSEIF "$(CFG)" == "ex_lock - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Release_static/libdb43.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 Release_static/libdb43s.lib /nologo /subsystem:console /machine:I386
-
-!ELSEIF "$(CFG)" == "ex_lock - Win32 Debug Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Debug_static/libdb43d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no
-# ADD LINK32 Debug_static/libdb43sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "ex_lock - Win32 Release"
-# Name "ex_lock - Win32 Debug"
-# Name "ex_lock - Win32 Release Static"
-# Name "ex_lock - Win32 Debug Static"
-# Begin Source File
-
-SOURCE=..\examples_c\ex_lock.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\clib\getopt.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win32/ex_mpool.dsp b/db/build_win32/ex_mpool.dsp
deleted file mode 100644
index 27dfd5e93..000000000
--- a/db/build_win32/ex_mpool.dsp
+++ /dev/null
@@ -1,148 +0,0 @@
-# Microsoft Developer Studio Project File - Name="ex_mpool" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=ex_mpool - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "ex_mpool.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "ex_mpool.mak" CFG="ex_mpool - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "ex_mpool - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_mpool - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_mpool - Win32 Release Static" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_mpool - Win32 Debug Static" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "ex_mpool - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 Release/libdb43.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-
-!ELSEIF "$(CFG)" == "ex_mpool - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 Debug/libdb43d.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-
-!ELSEIF "$(CFG)" == "ex_mpool - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Release_static/libdb43.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 Release_static/libdb43s.lib /nologo /subsystem:console /machine:I386
-
-!ELSEIF "$(CFG)" == "ex_mpool - Win32 Debug Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Debug_static/libdb43d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no
-# ADD LINK32 Debug_static/libdb43sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "ex_mpool - Win32 Release"
-# Name "ex_mpool - Win32 Debug"
-# Name "ex_mpool - Win32 Release Static"
-# Name "ex_mpool - Win32 Debug Static"
-# Begin Source File
-
-SOURCE=..\examples_c\ex_mpool.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\clib\getopt.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win32/ex_repquote.dsp b/db/build_win32/ex_repquote.dsp
deleted file mode 100644
index 76ec321c0..000000000
--- a/db/build_win32/ex_repquote.dsp
+++ /dev/null
@@ -1,164 +0,0 @@
-# Microsoft Developer Studio Project File - Name="ex_repquote" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=ex_repquote - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "ex_repquote.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "ex_repquote.mak" CFG="ex_repquote - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "ex_repquote - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_repquote - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_repquote - Win32 Release Static" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_repquote - Win32 Debug Static" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "ex_repquote - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 Release/libdb43.lib ws2_32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-
-!ELSEIF "$(CFG)" == "ex_repquote - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 Debug/libdb43d.lib ws2_32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-
-!ELSEIF "$(CFG)" == "ex_repquote - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Release_static/libdb43.lib ws2_32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 Release_static/libdb43s.lib ws2_32.lib /nologo /subsystem:console /machine:I386
-
-!ELSEIF "$(CFG)" == "ex_repquote - Win32 Debug Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Debug_static/libdb43d.lib ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no
-# ADD LINK32 Debug_static/libdb43sd.lib ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "ex_repquote - Win32 Release"
-# Name "ex_repquote - Win32 Debug"
-# Name "ex_repquote - Win32 Release Static"
-# Name "ex_repquote - Win32 Debug Static"
-# Begin Source File
-
-SOURCE=..\examples_c\ex_repquote\ex_rq_client.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\examples_c\ex_repquote\ex_rq_main.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\examples_c\ex_repquote\ex_rq_master.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\examples_c\ex_repquote\ex_rq_net.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\examples_c\ex_repquote\ex_rq_util.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\clib\getopt.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win32/ex_repquote.src b/db/build_win32/ex_repquote.src
deleted file mode 100644
index dfcdd4d04..000000000
--- a/db/build_win32/ex_repquote.src
+++ /dev/null
@@ -1,145 +0,0 @@
-# Microsoft Developer Studio Project File - Name="@project_name@" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=@project_name@ - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "@project_name@.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "@project_name@.mak" CFG="@project_name@ - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "@project_name@ - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "@project_name@ - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "@project_name@ - Win32 Release Static" (based on "Win32 (x86) Console Application")
-!MESSAGE "@project_name@ - Win32 Debug Static" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "@project_name@ - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 Release/libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@.lib ws2_32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-
-!ELSEIF "$(CFG)" == "@project_name@ - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 Debug/libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@d.lib ws2_32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-
-!ELSEIF "$(CFG)" == "@project_name@ - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Release_static/libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@.lib ws2_32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 Release_static/libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@s.lib ws2_32.lib /nologo /subsystem:console /machine:I386
-
-!ELSEIF "$(CFG)" == "@project_name@ - Win32 Debug Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Debug_static/libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@d.lib ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no
-# ADD LINK32 Debug_static/libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@sd.lib ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "@project_name@ - Win32 Release"
-# Name "@project_name@ - Win32 Debug"
-# Name "@project_name@ - Win32 Release Static"
-# Name "@project_name@ - Win32 Debug Static"
-@SOURCE_FILES@
-# Begin Source File
-
-SOURCE=..\clib\getopt.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win32/ex_tpcb.dsp b/db/build_win32/ex_tpcb.dsp
deleted file mode 100644
index d8029a6dc..000000000
--- a/db/build_win32/ex_tpcb.dsp
+++ /dev/null
@@ -1,148 +0,0 @@
-# Microsoft Developer Studio Project File - Name="ex_tpcb" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=ex_tpcb - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "ex_tpcb.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "ex_tpcb.mak" CFG="ex_tpcb - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "ex_tpcb - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_tpcb - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_tpcb - Win32 Release Static" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_tpcb - Win32 Debug Static" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "ex_tpcb - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 Release/libdb43.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-
-!ELSEIF "$(CFG)" == "ex_tpcb - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 Debug/libdb43d.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-
-!ELSEIF "$(CFG)" == "ex_tpcb - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Release_static/libdb43.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 Release_static/libdb43s.lib /nologo /subsystem:console /machine:I386
-
-!ELSEIF "$(CFG)" == "ex_tpcb - Win32 Debug Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Debug_static/libdb43d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no
-# ADD LINK32 Debug_static/libdb43sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "ex_tpcb - Win32 Release"
-# Name "ex_tpcb - Win32 Debug"
-# Name "ex_tpcb - Win32 Release Static"
-# Name "ex_tpcb - Win32 Debug Static"
-# Begin Source File
-
-SOURCE=..\examples_c\ex_tpcb.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\clib\getopt.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win32/excxx_access.dsp b/db/build_win32/excxx_access.dsp
deleted file mode 100644
index a36c3f648..000000000
--- a/db/build_win32/excxx_access.dsp
+++ /dev/null
@@ -1,148 +0,0 @@
-# Microsoft Developer Studio Project File - Name="excxx_access" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=excxx_access - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "excxx_access.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "excxx_access.mak" CFG="excxx_access - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "excxx_access - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_access - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_access - Win32 Release Static" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_access - Win32 Debug Static" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "excxx_access - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 Release/libdb43.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-
-!ELSEIF "$(CFG)" == "excxx_access - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 Debug/libdb43d.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-
-!ELSEIF "$(CFG)" == "excxx_access - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Release_static/libdb43.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 Release_static/libdb43s.lib /nologo /subsystem:console /machine:I386
-
-!ELSEIF "$(CFG)" == "excxx_access - Win32 Debug Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Debug_static/libdb43d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no
-# ADD LINK32 Debug_static/libdb43sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "excxx_access - Win32 Release"
-# Name "excxx_access - Win32 Debug"
-# Name "excxx_access - Win32 Release Static"
-# Name "excxx_access - Win32 Debug Static"
-# Begin Source File
-
-SOURCE=..\examples_cxx\AccessExample.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\clib\getopt.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win32/excxx_btrec.dsp b/db/build_win32/excxx_btrec.dsp
deleted file mode 100644
index 12f0c106d..000000000
--- a/db/build_win32/excxx_btrec.dsp
+++ /dev/null
@@ -1,148 +0,0 @@
-# Microsoft Developer Studio Project File - Name="excxx_btrec" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=excxx_btrec - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "excxx_btrec.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "excxx_btrec.mak" CFG="excxx_btrec - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "excxx_btrec - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_btrec - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_btrec - Win32 Release Static" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_btrec - Win32 Debug Static" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "excxx_btrec - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 Release/libdb43.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-
-!ELSEIF "$(CFG)" == "excxx_btrec - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 Debug/libdb43d.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-
-!ELSEIF "$(CFG)" == "excxx_btrec - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Release_static/libdb43.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 Release_static/libdb43s.lib /nologo /subsystem:console /machine:I386
-
-!ELSEIF "$(CFG)" == "excxx_btrec - Win32 Debug Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Debug_static/libdb43d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no
-# ADD LINK32 Debug_static/libdb43sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "excxx_btrec - Win32 Release"
-# Name "excxx_btrec - Win32 Debug"
-# Name "excxx_btrec - Win32 Release Static"
-# Name "excxx_btrec - Win32 Debug Static"
-# Begin Source File
-
-SOURCE=..\examples_cxx\BtRecExample.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\clib\getopt.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win32/excxx_env.dsp b/db/build_win32/excxx_env.dsp
deleted file mode 100644
index ae1b2986f..000000000
--- a/db/build_win32/excxx_env.dsp
+++ /dev/null
@@ -1,148 +0,0 @@
-# Microsoft Developer Studio Project File - Name="excxx_env" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=excxx_env - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "excxx_env.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "excxx_env.mak" CFG="excxx_env - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "excxx_env - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_env - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_env - Win32 Release Static" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_env - Win32 Debug Static" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "excxx_env - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 Release/libdb43.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-
-!ELSEIF "$(CFG)" == "excxx_env - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 Debug/libdb43d.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-
-!ELSEIF "$(CFG)" == "excxx_env - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Release_static/libdb43.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 Release_static/libdb43s.lib /nologo /subsystem:console /machine:I386
-
-!ELSEIF "$(CFG)" == "excxx_env - Win32 Debug Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Debug_static/libdb43d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no
-# ADD LINK32 Debug_static/libdb43sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "excxx_env - Win32 Release"
-# Name "excxx_env - Win32 Debug"
-# Name "excxx_env - Win32 Release Static"
-# Name "excxx_env - Win32 Debug Static"
-# Begin Source File
-
-SOURCE=..\examples_cxx\EnvExample.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\clib\getopt.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win32/excxx_lock.dsp b/db/build_win32/excxx_lock.dsp
deleted file mode 100644
index 7bf8aadcb..000000000
--- a/db/build_win32/excxx_lock.dsp
+++ /dev/null
@@ -1,148 +0,0 @@
-# Microsoft Developer Studio Project File - Name="excxx_lock" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=excxx_lock - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "excxx_lock.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "excxx_lock.mak" CFG="excxx_lock - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "excxx_lock - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_lock - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_lock - Win32 Release Static" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_lock - Win32 Debug Static" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "excxx_lock - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 Release/libdb43.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-
-!ELSEIF "$(CFG)" == "excxx_lock - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 Debug/libdb43d.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-
-!ELSEIF "$(CFG)" == "excxx_lock - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Release_static/libdb43.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 Release_static/libdb43s.lib /nologo /subsystem:console /machine:I386
-
-!ELSEIF "$(CFG)" == "excxx_lock - Win32 Debug Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Debug_static/libdb43d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no
-# ADD LINK32 Debug_static/libdb43sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "excxx_lock - Win32 Release"
-# Name "excxx_lock - Win32 Debug"
-# Name "excxx_lock - Win32 Release Static"
-# Name "excxx_lock - Win32 Debug Static"
-# Begin Source File
-
-SOURCE=..\examples_cxx\LockExample.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\clib\getopt.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win32/excxx_mpool.dsp b/db/build_win32/excxx_mpool.dsp
deleted file mode 100644
index 48172fbf3..000000000
--- a/db/build_win32/excxx_mpool.dsp
+++ /dev/null
@@ -1,148 +0,0 @@
-# Microsoft Developer Studio Project File - Name="excxx_mpool" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=excxx_mpool - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "excxx_mpool.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "excxx_mpool.mak" CFG="excxx_mpool - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "excxx_mpool - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_mpool - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_mpool - Win32 Release Static" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_mpool - Win32 Debug Static" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "excxx_mpool - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 Release/libdb43.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-
-!ELSEIF "$(CFG)" == "excxx_mpool - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 Debug/libdb43d.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-
-!ELSEIF "$(CFG)" == "excxx_mpool - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Release_static/libdb43.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 Release_static/libdb43s.lib /nologo /subsystem:console /machine:I386
-
-!ELSEIF "$(CFG)" == "excxx_mpool - Win32 Debug Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Debug_static/libdb43d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no
-# ADD LINK32 Debug_static/libdb43sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "excxx_mpool - Win32 Release"
-# Name "excxx_mpool - Win32 Debug"
-# Name "excxx_mpool - Win32 Release Static"
-# Name "excxx_mpool - Win32 Debug Static"
-# Begin Source File
-
-SOURCE=..\examples_cxx\MpoolExample.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\clib\getopt.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win32/excxx_tpcb.dsp b/db/build_win32/excxx_tpcb.dsp
deleted file mode 100644
index 6a734fdfc..000000000
--- a/db/build_win32/excxx_tpcb.dsp
+++ /dev/null
@@ -1,148 +0,0 @@
-# Microsoft Developer Studio Project File - Name="excxx_tpcb" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=excxx_tpcb - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "excxx_tpcb.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "excxx_tpcb.mak" CFG="excxx_tpcb - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "excxx_tpcb - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_tpcb - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_tpcb - Win32 Release Static" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_tpcb - Win32 Debug Static" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "excxx_tpcb - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 Release/libdb43.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-
-!ELSEIF "$(CFG)" == "excxx_tpcb - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 Debug/libdb43d.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-
-!ELSEIF "$(CFG)" == "excxx_tpcb - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Release_static/libdb43.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 Release_static/libdb43s.lib /nologo /subsystem:console /machine:I386
-
-!ELSEIF "$(CFG)" == "excxx_tpcb - Win32 Debug Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Debug_static/libdb43d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no
-# ADD LINK32 Debug_static/libdb43sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "excxx_tpcb - Win32 Release"
-# Name "excxx_tpcb - Win32 Debug"
-# Name "excxx_tpcb - Win32 Release Static"
-# Name "excxx_tpcb - Win32 Debug Static"
-# Begin Source File
-
-SOURCE=..\examples_cxx\TpcbExample.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\clib\getopt.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win32/include.tcl b/db/build_win32/include.tcl
deleted file mode 100644
index fd0e69f2a..000000000
--- a/db/build_win32/include.tcl
+++ /dev/null
@@ -1,20 +0,0 @@
-# Automatically built by dist/s_test; may require local editing.
-
-set tclsh_path SET_YOUR_TCLSH_PATH
-set tcllib ./Debug/libdb_tcl43d.dll
-
-set src_root ..
-set test_path ../test
-set je_root ../../je
-
-global testdir
-set testdir ./TESTDIR
-
-global dict
-global util_path
-
-global is_hp_test
-global is_qnx_test
-global is_windows_test
-
-set KILL ./dbkill.exe
diff --git a/db/build_win32/java_dsp.src b/db/build_win32/java_dsp.src
deleted file mode 100644
index 521800c17..000000000
--- a/db/build_win32/java_dsp.src
+++ /dev/null
@@ -1,129 +0,0 @@
-# Microsoft Developer Studio Project File - Name="@project_name@" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-
-CFG=@project_name@ - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "@project_name@.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "@project_name@.mak" CFG="@project_name@ - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "@project_name@ - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "@project_name@ - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-MTL=midl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "@project_name@ - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /Ob2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "DB_CREATE_DLL" /YX /FD /c
-# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
-# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
-# ADD LINK32 Release/libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:I386 /out:"Release/libdb_java@DB_VERSION_MAJOR@@DB_VERSION_MINOR@.dll"
-# Begin Custom Build - Compiling java files using javac
-ProjDir=.
-InputPath=.\Release\libdb_java@DB_VERSION_MAJOR@@DB_VERSION_MINOR@.dll
-SOURCE="$(InputPath)"
-
-"force_compilation.txt" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- echo compiling Berkeley DB classes
- mkdir "$(OUTDIR)\classes"
- javac -O -d "$(OUTDIR)\classes" -classpath "$(OUTDIR)/classes" ..\java\src\com\sleepycat\db\*.java ..\java\src\com\sleepycat\db\internal\*.java ..\java\src\com\sleepycat\bind\*.java ..\java\src\com\sleepycat\bind\serial\*.java ..\java\src\com\sleepycat\bind\tuple\*.java ..\java\src\com\sleepycat\collections\*.java ..\java\src\com\sleepycat\compat\*.java ..\java\src\com\sleepycat\util\*.java
- echo compiling examples
- mkdir "$(OUTDIR)\classes.ex"
- javac -O -d "$(OUTDIR)\classes.ex" -classpath "$(OUTDIR)\classes;$(OUTDIR)\classes.ex" ..\examples_java\src\com\sleepycat\examples\db\*.java ..\examples_java\src\com\sleepycat\examples\db\GettingStarted\*.java ..\examples_java\src\com\sleepycat\examples\collections\access\*.java ..\examples_java\src\com\sleepycat\examples\collections\hello\*.java ..\examples_java\src\com\sleepycat\examples\collections\ship\basic\*.java ..\examples_java\src\com\sleepycat\examples\collections\ship\entity\*.java ..\examples_java\src\com\sleepycat\examples\collections\ship\tuple\*.java ..\examples_java\src\com\sleepycat\examples\collections\ship\sentity\*.java ..\examples_java\src\com\sleepycat\examples\collections\ship\marshal\*.java ..\examples_java\src\com\sleepycat\examples\collections\ship\factory\*.java
- echo creating jar files
- jar cf "$(OUTDIR)\db.jar" -C "$(OUTDIR)\classes" .
- jar cf "$(OUTDIR)\dbexamples.jar" -C "$(OUTDIR)\classes.ex" .
- echo Java build finished
-
-# End Custom Build
-
-!ELSEIF "$(CFG)" == "@project_name@ - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 2
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "DB_CREATE_DLL" /D "_WINDLL" /D "_AFXDLL" /YX"config.h" /FD /c
-# SUBTRACT CPP /Fr
-# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 Debug/libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@d.lib /nologo /base:"0x13000000" /subsystem:windows /dll /pdb:none /debug /machine:I386 /out:"Debug/libdb_java@DB_VERSION_MAJOR@@DB_VERSION_MINOR@d.dll" /fixed:no
-# Begin Custom Build - Compiling java files using javac
-ProjDir=.
-InputPath=.\Debug\libdb_java@DB_VERSION_MAJOR@@DB_VERSION_MINOR@d.dll
-SOURCE="$(InputPath)"
-
-"force_compilation.txt" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- echo compiling Berkeley DB classes
- mkdir "$(OUTDIR)\classes"
- javac -g -d "$(OUTDIR)\classes" -classpath "$(OUTDIR)/classes" ..\java\src\com\sleepycat\db\*.java ..\java\src\com\sleepycat\db\internal\*.java ..\java\src\com\sleepycat\bind\*.java ..\java\src\com\sleepycat\bind\serial\*.java ..\java\src\com\sleepycat\bind\tuple\*.java ..\java\src\com\sleepycat\collections\*.java ..\java\src\com\sleepycat\compat\*.java ..\java\src\com\sleepycat\util\*.java
- echo compiling examples
- mkdir "$(OUTDIR)\classes.ex"
- javac -g -d "$(OUTDIR)\classes.ex" -classpath "$(OUTDIR)\classes;$(OUTDIR)\classes.ex" ..\examples_java\src\com\sleepycat\examples\db\*.java ..\examples_java\src\com\sleepycat\examples\db\GettingStarted\*.java ..\examples_java\src\com\sleepycat\examples\collections\access\*.java ..\examples_java\src\com\sleepycat\examples\collections\hello\*.java ..\examples_java\src\com\sleepycat\examples\collections\ship\basic\*.java ..\examples_java\src\com\sleepycat\examples\collections\ship\entity\*.java ..\examples_java\src\com\sleepycat\examples\collections\ship\tuple\*.java ..\examples_java\src\com\sleepycat\examples\collections\ship\sentity\*.java ..\examples_java\src\com\sleepycat\examples\collections\ship\marshal\*.java ..\examples_java\src\com\sleepycat\examples\collections\ship\factory\*.java
- echo creating jar files
- jar cf "$(OUTDIR)\db.jar" -C "$(OUTDIR)\classes" .
- jar cf "$(OUTDIR)\dbexamples.jar" -C "$(OUTDIR)\classes.ex" .
- echo Java build finished
-
-# End Custom Build
-
-!ENDIF
-
-# Begin Target
-
-# Name "@project_name@ - Win32 Release"
-# Name "@project_name@ - Win32 Debug"
-@SOURCE_FILES@
-# End Target
-# End Project
diff --git a/db/build_win32/libdb.def b/db/build_win32/libdb.def
deleted file mode 100644
index f519ad543..000000000
--- a/db/build_win32/libdb.def
+++ /dev/null
@@ -1,171 +0,0 @@
-; DO NOT EDIT: automatically built by dist/s_win32.
-
-EXPORTS
- db_create @1
- db_env_create @2
- db_sequence_create @3
- db_strerror @4
- db_version @5
- db_xa_switch @6
- log_compare @7
- db_env_set_func_close @8
- db_env_set_func_dirfree @9
- db_env_set_func_dirlist @10
- db_env_set_func_exists @11
- db_env_set_func_free @12
- db_env_set_func_fsync @13
- db_env_set_func_ftruncate @14
- db_env_set_func_ioinfo @15
- db_env_set_func_malloc @16
- db_env_set_func_map @17
- db_env_set_func_open @18
- db_env_set_func_pread @19
- db_env_set_func_pwrite @20
- db_env_set_func_read @21
- db_env_set_func_realloc @22
- db_env_set_func_rename @23
- db_env_set_func_seek @24
- db_env_set_func_sleep @25
- db_env_set_func_unlink @26
- db_env_set_func_unmap @27
- db_env_set_func_write @28
- db_env_set_func_yield @29
- __db_add_recovery @30
- __db_dbm_close @31
- __db_dbm_delete @32
- __db_dbm_fetch @33
- __db_dbm_firstkey @34
- __db_dbm_init @35
- __db_dbm_nextkey @36
- __db_dbm_store @37
- __db_get_flags_fn @38
- __db_get_seq_flags_fn @39
- __db_hcreate @40
- __db_hdestroy @41
- __db_hsearch @42
- __db_loadme @43
- __db_ndbm_clearerr @44
- __db_ndbm_close @45
- __db_ndbm_delete @46
- __db_ndbm_dirfno @47
- __db_ndbm_error @48
- __db_ndbm_fetch @49
- __db_ndbm_firstkey @50
- __db_ndbm_nextkey @51
- __db_ndbm_open @52
- __db_ndbm_pagfno @53
- __db_ndbm_rdonly @54
- __db_ndbm_store @55
- __db_panic @56
- __db_r_attach @57
- __db_r_detach @58
- __db_win32_mutex_init @59
- __db_win32_mutex_lock @60
- __db_win32_mutex_unlock @61
- __ham_func2 @62
- __ham_func3 @63
- __ham_func4 @64
- __ham_func5 @65
- __ham_test @66
- __lock_id_set @67
- __os_calloc @68
- __os_closehandle @69
- __os_free @70
- __os_ioinfo @71
- __os_malloc @72
- __os_open @73
- __os_openhandle @74
- __os_read @75
- __os_realloc @76
- __os_strdup @77
- __os_umalloc @78
- __os_write @79
- __txn_id_set @80
- __bam_adj_read @81
- __bam_cadjust_read @82
- __bam_cdel_read @83
- __bam_curadj_read @84
- __bam_pgin @85
- __bam_pgout @86
- __bam_rcuradj_read @87
- __bam_relink_read @88
- __bam_repl_read @89
- __bam_root_read @90
- __bam_rsplit_read @91
- __bam_split_read @92
- __crdel_metasub_read @93
- __db_addrem_read @94
- __db_big_read @95
- __db_cksum_read @96
- __db_debug_read @97
- __db_dispatch @98
- __db_dumptree @99
- __db_err @100
- __db_fileid_reset @101
- __db_getlong @102
- __db_getulong @103
- __db_global_values @104
- __db_isbigendian @105
- __db_lsn_reset @106
- __db_noop_read @107
- __db_omode @108
- __db_overwrite @109
- __db_ovref_read @110
- __db_pg_alloc_read @111
- __db_pg_free_read @112
- __db_pg_freedata_read @113
- __db_pg_init_read @114
- __db_pg_new_read @115
- __db_pg_prepare_read @116
- __db_pgin @117
- __db_pgout @118
- __db_pr_callback @119
- __db_rpath @120
- __db_stat_pp @121
- __db_stat_print_pp @122
- __db_util_cache @123
- __db_util_interrupted @124
- __db_util_logset @125
- __db_util_siginit @126
- __db_util_sigresend @127
- __db_verify_internal @128
- __dbreg_register_read @129
- __fop_create_read @130
- __fop_file_remove_read @131
- __fop_remove_read @132
- __fop_rename_read @133
- __fop_write_read @134
- __ham_chgpg_read @135
- __ham_copypage_read @136
- __ham_curadj_read @137
- __ham_get_meta @138
- __ham_groupalloc_read @139
- __ham_insdel_read @140
- __ham_metagroup_read @141
- __ham_newpage_read @142
- __ham_pgin @143
- __ham_pgout @144
- __ham_release_meta @145
- __ham_replace_read @146
- __ham_splitdata_read @147
- __lock_list_print @148
- __log_stat_pp @149
- __os_clock @150
- __os_get_errno @151
- __os_id @152
- __os_set_errno @153
- __os_sleep @154
- __os_ufree @155
- __os_yield @156
- __qam_add_read @157
- __qam_del_read @158
- __qam_delext_read @159
- __qam_incfirst_read @160
- __qam_mvptr_read @161
- __qam_pgin_out @162
- __rep_stat_print @163
- __txn_child_read @164
- __txn_ckp_read @165
- __txn_recycle_read @166
- __txn_regop_read @167
- __txn_xa_regop_read @168
diff --git a/db/build_win32/libdb.rc b/db/build_win32/libdb.rc
deleted file mode 100644
index bdd74de18..000000000
--- a/db/build_win32/libdb.rc
+++ /dev/null
@@ -1,33 +0,0 @@
-1 VERSIONINFO
- FILEVERSION 4,0,3,27
- PRODUCTVERSION 4,0,3,27
- FILEFLAGSMASK 0x3fL
-#ifdef _DEBUG
- FILEFLAGS 0x1L
-#else
- FILEFLAGS 0x0L
-#endif
- FILEOS 0x4L
- FILETYPE 0x2L
- FILESUBTYPE 0x0L
-
-BEGIN
- BLOCK "StringFileInfo"
- BEGIN
- BLOCK "040904b0"
- BEGIN
- VALUE "CompanyName", "Sleepycat Software\0"
- VALUE "FileDescription", "Berkeley DB 3.0 DLL\0"
- VALUE "FileVersion", "4.3.27\0"
- VALUE "InternalName", "libdb.dll\0"
- VALUE "LegalCopyright", "Copyright © Sleepycat Software Inc. 1997-2004\0"
- VALUE "OriginalFilename", "libdb.dll\0"
- VALUE "ProductName", "Sleepycat Software libdb\0"
- VALUE "ProductVersion", "4.3.27\0"
- END
- END
- BLOCK "VarFileInfo"
- BEGIN
- VALUE "Translation", 0x409, 1200
- END
-END
diff --git a/db/build_win32/libdb_tcl.def b/db/build_win32/libdb_tcl.def
deleted file mode 100644
index 5e8386a35..000000000
--- a/db/build_win32/libdb_tcl.def
+++ /dev/null
@@ -1,7 +0,0 @@
-; $Id: libdb_tcl.def,v 11.7 2002/10/14 23:44:20 mjc Exp $
-
-DESCRIPTION 'Berkeley DB TCL interface Library'
-EXPORTS
- Db_tcl_Init
- _NameToPtr
-
diff --git a/db/build_win32/libdbrc.src b/db/build_win32/libdbrc.src
deleted file mode 100644
index 4c644ea9f..000000000
--- a/db/build_win32/libdbrc.src
+++ /dev/null
@@ -1,33 +0,0 @@
-1 VERSIONINFO
- FILEVERSION %MAJOR%,0,%MINOR%,%PATCH%
- PRODUCTVERSION %MAJOR%,0,%MINOR%,%PATCH%
- FILEFLAGSMASK 0x3fL
-#ifdef _DEBUG
- FILEFLAGS 0x1L
-#else
- FILEFLAGS 0x0L
-#endif
- FILEOS 0x4L
- FILETYPE 0x2L
- FILESUBTYPE 0x0L
-
-BEGIN
- BLOCK "StringFileInfo"
- BEGIN
- BLOCK "040904b0"
- BEGIN
- VALUE "CompanyName", "Sleepycat Software\0"
- VALUE "FileDescription", "Berkeley DB 3.0 DLL\0"
- VALUE "FileVersion", "%MAJOR%.%MINOR%.%PATCH%\0"
- VALUE "InternalName", "libdb.dll\0"
- VALUE "LegalCopyright", "Copyright © Sleepycat Software Inc. 1997-2004\0"
- VALUE "OriginalFilename", "libdb.dll\0"
- VALUE "ProductName", "Sleepycat Software libdb\0"
- VALUE "ProductVersion", "%MAJOR%.%MINOR%.%PATCH%\0"
- END
- END
- BLOCK "VarFileInfo"
- BEGIN
- VALUE "Translation", 0x409, 1200
- END
-END
diff --git a/db/build_win32/small_dsp.src b/db/build_win32/small_dsp.src
deleted file mode 100644
index 1b42e8c71..000000000
--- a/db/build_win32/small_dsp.src
+++ /dev/null
@@ -1,85 +0,0 @@
-# Microsoft Developer Studio Project File - Name="@project_name@" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=@project_name@ - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "@project_name@.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "@project_name@.mak" CFG="@project_name@ - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "@project_name@ - Win32 Release Static" (based on "Win32 (x86) Static Library")
-!MESSAGE "@project_name@ - Win32 Debug Static" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "@project_name@ - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release_small"
-# PROP BASE Intermediate_Dir "Release_small"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_small"
-# PROP Intermediate_Dir "Release_small"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "HAVE_SMALLBUILD" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX"config.h" /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "HAVE_SMALLBUILD" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX"config.h" /FD /c
-# ADD BASE RSC /l 0xc09
-# ADD RSC /l 0xc09
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"Release_small/libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@s.lib"
-# ADD LIB32 /nologo /out:"Release_small/libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@s.lib"
-
-!ELSEIF "$(CFG)" == "@project_name@ - Win32 Debug Static"
-
-# PROP BASE Use_MFC 1
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug_small"
-# PROP BASE Intermediate_Dir "Debug_small"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 1
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_small"
-# PROP Intermediate_Dir "Debug_small"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "HAVE_SMALLBUILD" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX"config.h" /FD /c
-# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "HAVE_SMALLBUILD" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX"config.h" /FD /c
-# ADD BASE RSC /l 0xc09
-# ADD RSC /l 0xc09
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"Debug_small/libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@sd.lib"
-# ADD LIB32 /nologo /out:"Debug_small/libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@sd.lib"
-
-!ENDIF
-
-# Begin Target
-
-# Name "@project_name@ - Win32 Release Static"
-# Name "@project_name@ - Win32 Debug Static"
-@SOURCE_FILES@
-# End Target
-# End Project
diff --git a/db/build_win32/static_dsp.src b/db/build_win32/static_dsp.src
deleted file mode 100644
index a2746856c..000000000
--- a/db/build_win32/static_dsp.src
+++ /dev/null
@@ -1,85 +0,0 @@
-# Microsoft Developer Studio Project File - Name="@project_name@" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=@project_name@ - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "@project_name@.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "@project_name@.mak" CFG="@project_name@ - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "@project_name@ - Win32 Release Static" (based on "Win32 (x86) Static Library")
-!MESSAGE "@project_name@ - Win32 Debug Static" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "@project_name@ - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release_static"
-# PROP BASE Intermediate_Dir "Release_static"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX"config.h" /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX"config.h" /FD /c
-# ADD BASE RSC /l 0xc09
-# ADD RSC /l 0xc09
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"Release/libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@s.lib"
-# ADD LIB32 /nologo /out:"Release_static/libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@s.lib"
-
-!ELSEIF "$(CFG)" == "@project_name@ - Win32 Debug Static"
-
-# PROP BASE Use_MFC 1
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug_static"
-# PROP BASE Intermediate_Dir "Debug_static"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 1
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_static"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "CONFIG_TEST" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX"config.h" /FD /c
-# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "CONFIG_TEST" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX"config.h" /FD /c
-# ADD BASE RSC /l 0xc09
-# ADD RSC /l 0xc09
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"Debug/libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@sd.lib"
-# ADD LIB32 /nologo /out:"Debug_static/libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@sd.lib"
-
-!ENDIF
-
-# Begin Target
-
-# Name "@project_name@ - Win32 Release Static"
-# Name "@project_name@ - Win32 Debug Static"
-@SOURCE_FILES@
-# End Target
-# End Project
diff --git a/db/build_win32/tcl_dsp.src b/db/build_win32/tcl_dsp.src
deleted file mode 100644
index 87ea99cbb..000000000
--- a/db/build_win32/tcl_dsp.src
+++ /dev/null
@@ -1,93 +0,0 @@
-# Microsoft Developer Studio Project File - Name="@project_name@" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-
-CFG=@project_name@ - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "@project_name@.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "@project_name@.mak" CFG="@project_name@ - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "@project_name@ - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "@project_name@ - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-MTL=midl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "@project_name@ - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /Ob2 /I "." /I ".." /D "DB_TCL_SUPPORT" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "DB_CREATE_DLL" /YX /FD /c
-# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
-# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
-# ADD LINK32 Release/libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@.lib tcl84.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:I386 /out:"Release/libdb_tcl@DB_VERSION_MAJOR@@DB_VERSION_MINOR@.dll"
-
-!ELSEIF "$(CFG)" == "@project_name@ - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 2
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "DB_TCL_SUPPORT" /D "CONFIG_TEST" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "DB_CREATE_DLL" /D "_WINDLL" /D "_AFXDLL" /YX"config.h" /FD /c
-# SUBTRACT CPP /Fr
-# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 Debug/libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@d.lib tcl84g.lib /nologo /base:"0x13000000" /subsystem:windows /dll /pdb:none /debug /machine:I386 /out:"Debug/libdb_tcl@DB_VERSION_MAJOR@@DB_VERSION_MINOR@d.dll" /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "@project_name@ - Win32 Release"
-# Name "@project_name@ - Win32 Debug"
-@SOURCE_FILES@
-# End Target
-# End Project
diff --git a/db/build_win32/win_db.h b/db/build_win32/win_db.h
deleted file mode 100644
index d623610f4..000000000
--- a/db/build_win32/win_db.h
+++ /dev/null
@@ -1,94 +0,0 @@
-/*-
- * $Id: win_db.in,v 11.4 2004/10/07 13:59:24 carol Exp $
- *
- * The following provides the information necessary to build Berkeley
- * DB on native Windows, and other Windows environments such as MinGW.
- */
-
-#include <sys/types.h>
-#include <sys/stat.h>
-
-#include <direct.h>
-#include <fcntl.h>
-#include <io.h>
-#include <limits.h>
-#include <memory.h>
-#include <process.h>
-#include <signal.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <tchar.h>
-#include <time.h>
-#include <errno.h>
-
-/*
- * To build Tcl interface libraries, the include path must be configured to
- * use the directory containing <tcl.h>, usually the include directory in
- * the Tcl distribution.
- */
-#ifdef DB_TCL_SUPPORT
-#include <tcl.h>
-#endif
-
-#define WIN32_LEAN_AND_MEAN
-#include <windows.h>
-
-/*
- * All of the necessary includes have been included, ignore the #includes
- * in the Berkeley DB source files.
- */
-#define NO_SYSTEM_INCLUDES
-
-/*
- * Win32 has getcwd, snprintf and vsnprintf, but under different names.
- */
-#define getcwd(buf, size) _getcwd(buf, size)
-#define snprintf _snprintf
-#define vsnprintf _vsnprintf
-
-/*
- * Win32 does not define getopt and friends in any header file, so we must.
- */
-#if defined(__cplusplus)
-extern "C" {
-#endif
-extern int optind;
-extern char *optarg;
-extern int getopt(int, char * const *, const char *);
-#if defined(__cplusplus)
-}
-#endif
-
-#ifdef _UNICODE
-#define TO_TSTRING(dbenv, s, ts, ret) do { \
- int __len = strlen(s) + 1; \
- ts = NULL; \
- if ((ret = __os_malloc((dbenv), \
- __len * sizeof (_TCHAR), &(ts))) == 0 && \
- MultiByteToWideChar(CP_UTF8, 0, \
- (s), -1, (ts), __len) == 0) \
- ret = __os_get_errno(); \
- } while (0)
-
-#define FROM_TSTRING(dbenv, ts, s, ret) { \
- int __len = WideCharToMultiByte(CP_UTF8, 0, ts, -1, \
- NULL, 0, NULL, NULL); \
- s = NULL; \
- if ((ret = __os_malloc((dbenv), __len, &(s))) == 0 && \
- WideCharToMultiByte(CP_UTF8, 0, \
- (ts), -1, (s), __len, NULL, NULL) == 0) \
- ret = __os_get_errno(); \
- } while (0)
-
-#define FREE_STRING(dbenv, s) do { \
- if ((s) != NULL) { \
- __os_free((dbenv), (s)); \
- (s) = NULL; \
- } \
- } while (0)
-
-#else
-#define TO_TSTRING(dbenv, s, ts, ret) (ret) = 0, (ts) = (_TCHAR *)(s)
-#define FROM_TSTRING(dbenv, ts, s, ret) (ret) = 0, (s) = (char *)(ts)
-#define FREE_STRING(dbenv, ts)
-#endif
diff --git a/db/build_win64/Berkeley_DB.dsw b/db/build_win64/Berkeley_DB.dsw
deleted file mode 100644
index bcce71e8a..000000000
--- a/db/build_win64/Berkeley_DB.dsw
+++ /dev/null
@@ -1,539 +0,0 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "build_all"=.\build_all.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name db_archive
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name db_checkpoint
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name db_deadlock
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name DB_DLL
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name db_dump
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name db_load
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name db_printlog
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name db_recover
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name db_stat
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name db_upgrade
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name db_verify
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name DB_Static
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name ex_access
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name ex_btrec
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name ex_env
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name ex_lock
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name ex_mpool
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name ex_tpcb
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name excxx_access
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name excxx_btrec
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name excxx_env
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name excxx_lock
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name excxx_mpool
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name excxx_tpcb
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name db_lib
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "db_archive"=.\db_archive.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name db_lib
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "db_checkpoint"=.\db_checkpoint.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name db_lib
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "db_deadlock"=.\db_deadlock.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name DB_DLL
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "db_dll"=.\db_dll.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "db_dump"=.\db_dump.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name db_lib
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "db_java"=.\db_java.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name DB_DLL
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "db_lib"=.\db_lib.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name db_dll
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name db_static
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "db_load"=.\db_load.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name db_lib
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "db_printlog"=.\db_printlog.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name db_lib
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "db_recover"=.\db_recover.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name db_lib
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "db_stat"=.\db_stat.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name db_lib
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "db_static"=.\db_static.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "db_tcl"=.\db_tcl.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name DB_DLL
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "db_test"=.\db_test.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name build_all
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name db_tcl
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "db_upgrade"=.\db_upgrade.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name db_lib
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "db_verify"=.\db_verify.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name db_lib
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "ex_access"=.\ex_access.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name db_lib
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "ex_btrec"=.\ex_btrec.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name db_lib
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "ex_env"=.\ex_env.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name db_lib
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "ex_lock"=.\ex_lock.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name db_lib
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "ex_mpool"=.\ex_mpool.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name db_lib
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "ex_repquote"=.\ex_repquote.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name db_lib
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "ex_tpcb"=.\ex_tpcb.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name db_lib
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "excxx_access"=.\excxx_access.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name db_lib
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "excxx_btrec"=.\excxx_btrec.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name db_lib
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "excxx_env"=.\excxx_env.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name db_lib
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "excxx_lock"=.\excxx_lock.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name db_lib
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "excxx_mpool"=.\excxx_mpool.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name db_lib
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "excxx_tpcb"=.\excxx_tpcb.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name db_lib
- End Project Dependency
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
diff --git a/db/build_win64/app_dsp.src b/db/build_win64/app_dsp.src
deleted file mode 100644
index 30af5b6d7..000000000
--- a/db/build_win64/app_dsp.src
+++ /dev/null
@@ -1,145 +0,0 @@
-# Microsoft Developer Studio Project File - Name="@project_name@" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=@project_name@ - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "@project_name@.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "@project_name@.mak" CFG="@project_name@ - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "@project_name@ - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "@project_name@ - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "@project_name@ - Win32 Release Static" (based on "Win32 (x86) Console Application")
-!MESSAGE "@project_name@ - Win32 Debug Static" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "@project_name@ - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /machine:IA64
-# ADD LINK32 Release/libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-
-!ELSEIF "$(CFG)" == "@project_name@ - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /pdbtype:sept
-# ADD LINK32 Debug/libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@d.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-
-!ELSEIF "$(CFG)" == "@project_name@ - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Release_static/libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@.lib /nologo /subsystem:console /machine:IA64
-# ADD LINK32 Release_static/libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@s.lib /nologo /subsystem:console /machine:IA64
-
-!ELSEIF "$(CFG)" == "@project_name@ - Win32 Debug Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Debug_static/libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /fixed:no
-# ADD LINK32 Debug_static/libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "@project_name@ - Win32 Release"
-# Name "@project_name@ - Win32 Debug"
-# Name "@project_name@ - Win32 Release Static"
-# Name "@project_name@ - Win32 Debug Static"
-@SOURCE_FILES@
-# Begin Source File
-
-SOURCE=..\clib\getopt.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win64/build_all.dsp b/db/build_win64/build_all.dsp
deleted file mode 100644
index 7ae1f9bb0..000000000
--- a/db/build_win64/build_all.dsp
+++ /dev/null
@@ -1,96 +0,0 @@
-# Microsoft Developer Studio Project File - Name="build_all" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Generic Project" 0x010a
-
-CFG=build_all - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "build_all.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "build_all.mak" CFG="build_all - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "build_all - Win32 Release" (based on "Win32 (x86) External Target")
-!MESSAGE "build_all - Win32 Debug" (based on "Win32 (x86) External Target")
-!MESSAGE "build_all - Win32 Release Static" (based on "Win32 (x86) External Target")
-!MESSAGE "build_all - Win32 Debug Static" (based on "Win32 (x86) External Target")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-
-!IF "$(CFG)" == "build_all - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Cmd_Line "echo DB Release version built."
-# PROP Target_Dir ""
-
-!ELSEIF "$(CFG)" == "build_all - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Cmd_Line "echo DB Debug version built."
-# PROP Target_Dir ""
-
-!ELSEIF "$(CFG)" == "build_all - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release_static"
-# PROP BASE Intermediate_Dir "Release_static"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Cmd_Line "echo DB Release Static version built."
-# PROP Target_Dir ""
-
-!ELSEIF "$(CFG)" == "build_all - Win32 Debug Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug_static"
-# PROP BASE Intermediate_Dir "Debug_Static"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_Static"
-# PROP Cmd_Line "echo DB Debug Static version built."
-# PROP Target_Dir ""
-
-!ENDIF
-
-# Begin Target
-
-# Name "build_all - Win32 Release"
-# Name "build_all - Win32 Debug"
-# Name "build_all - Win32 Release Static"
-# Name "build_all - Win32 Debug Static"
-# End Target
-# End Project
diff --git a/db/build_win64/db.h b/db/build_win64/db.h
deleted file mode 100644
index 359dede88..000000000
--- a/db/build_win64/db.h
+++ /dev/null
@@ -1,2242 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_win32. */
-/*
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1996-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: db.in,v 11.463 2004/10/11 18:47:50 bostic Exp $
- *
- * db.h include file layout:
- * General.
- * Database Environment.
- * Locking subsystem.
- * Logging subsystem.
- * Shared buffer cache (mpool) subsystem.
- * Transaction subsystem.
- * Access methods.
- * Access method cursors.
- * Dbm/Ndbm, Hsearch historic interfaces.
- */
-
-#ifndef _DB_H_
-#define _DB_H_
-
-#ifndef __NO_SYSTEM_INCLUDES
-#include <sys/types.h>
-#include <stddef.h>
-#include <stdio.h>
-#endif
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-
-#undef __P
-#define __P(protos) protos
-
-/*
- * Berkeley DB version information.
- */
-#define DB_VERSION_MAJOR 4
-#define DB_VERSION_MINOR 3
-#define DB_VERSION_PATCH 27
-#define DB_VERSION_STRING "Sleepycat Software: Berkeley DB 4.3.27: (December 22, 2004)"
-
-/*
- * !!!
- * Berkeley DB uses specifically sized types. If they're not provided by
- * the system, typedef them here.
- *
- * We protect them against multiple inclusion using __BIT_TYPES_DEFINED__,
- * as does BIND and Kerberos, since we don't know for sure what #include
- * files the user is using.
- *
- * !!!
- * We also provide the standard u_int, u_long etc., if they're not provided
- * by the system.
- */
-#ifndef __BIT_TYPES_DEFINED__
-#define __BIT_TYPES_DEFINED__
-typedef unsigned char u_int8_t;
-typedef short int16_t;
-typedef unsigned short u_int16_t;
-typedef int int32_t;
-typedef unsigned int u_int32_t;
-typedef __int64 int64_t;
-typedef unsigned __int64 u_int64_t;
-#endif
-
-#ifndef _WINSOCKAPI_
-typedef unsigned char u_char;
-typedef unsigned short u_short;
-typedef unsigned int u_int;
-typedef unsigned long u_long;
-#endif
-#ifdef _WIN64
-typedef int64_t ssize_t;
-#else
-typedef int32_t ssize_t;
-#endif
-
-/*
- * uintmax_t --
- * Largest unsigned type, used to align structures in memory. We don't store
- * floating point types in structures, so integral types should be sufficient
- * (and we don't have to worry about systems that store floats in other than
- * power-of-2 numbers of bytes). Additionally this fixes compilers that rewrite
- * structure assignments and ANSI C memcpy calls to be in-line instructions
- * that happen to require alignment. Note: this alignment isn't sufficient for
- * mutexes, which depend on things like cache line alignment. Mutex alignment
- * is handled separately, in mutex.h.
- *
- * uintptr_t --
- * Unsigned type that's the same size as a pointer. There are places where
- * DB modifies pointers by discarding the bottom bits to guarantee alignment.
- * We can't use uintmax_t, it may be larger than the pointer, and compilers
- * get upset about that. So far we haven't run on any machine where there's
- * no unsigned type the same size as a pointer -- here's hoping.
- */
-typedef u_int64_t uintmax_t;
-#ifdef _WIN64
-typedef u_int64_t uintptr_t;
-#else
-typedef u_int32_t uintptr_t;
-#endif
-
-/*
- * Sequences are only available on machines with 64-bit integral types.
- */
-typedef int64_t db_seq_t;
-
-/* Basic types that are exported or quasi-exported. */
-typedef u_int32_t db_pgno_t; /* Page number type. */
-typedef u_int16_t db_indx_t; /* Page offset type. */
-#define DB_MAX_PAGES 0xffffffff /* >= # of pages in a file */
-
-typedef u_int32_t db_recno_t; /* Record number type. */
-#define DB_MAX_RECORDS 0xffffffff /* >= # of records in a tree */
-
-typedef u_int32_t db_timeout_t; /* Type of a timeout. */
-
-/*
- * Region offsets are the difference between a pointer in a region and the
- * region's base address. With private environments, both addresses are the
- * result of calling malloc, and we can't assume anything about what malloc
- * will return, so region offsets have to be able to hold differences between
- * arbitrary pointers.
- */
-typedef uintptr_t roff_t;
-
-/*
- * Forward structure declarations, so we can declare pointers and
- * applications can get type checking.
- */
-struct __db; typedef struct __db DB;
-struct __db_bt_stat; typedef struct __db_bt_stat DB_BTREE_STAT;
-struct __db_cipher; typedef struct __db_cipher DB_CIPHER;
-struct __db_dbt; typedef struct __db_dbt DBT;
-struct __db_env; typedef struct __db_env DB_ENV;
-struct __db_h_stat; typedef struct __db_h_stat DB_HASH_STAT;
-struct __db_ilock; typedef struct __db_ilock DB_LOCK_ILOCK;
-struct __db_lock_stat; typedef struct __db_lock_stat DB_LOCK_STAT;
-struct __db_lock_u; typedef struct __db_lock_u DB_LOCK;
-struct __db_lockreq; typedef struct __db_lockreq DB_LOCKREQ;
-struct __db_log_cursor; typedef struct __db_log_cursor DB_LOGC;
-struct __db_log_stat; typedef struct __db_log_stat DB_LOG_STAT;
-struct __db_lsn; typedef struct __db_lsn DB_LSN;
-struct __db_mpool; typedef struct __db_mpool DB_MPOOL;
-struct __db_mpool_fstat;typedef struct __db_mpool_fstat DB_MPOOL_FSTAT;
-struct __db_mpool_stat; typedef struct __db_mpool_stat DB_MPOOL_STAT;
-struct __db_mpoolfile; typedef struct __db_mpoolfile DB_MPOOLFILE;
-struct __db_preplist; typedef struct __db_preplist DB_PREPLIST;
-struct __db_qam_stat; typedef struct __db_qam_stat DB_QUEUE_STAT;
-struct __db_rep; typedef struct __db_rep DB_REP;
-struct __db_rep_stat; typedef struct __db_rep_stat DB_REP_STAT;
-struct __db_sequence; typedef struct __db_sequence DB_SEQUENCE;
-struct __db_seq_record; typedef struct __db_seq_record DB_SEQ_RECORD;
-struct __db_seq_stat; typedef struct __db_seq_stat DB_SEQUENCE_STAT;
-struct __db_txn; typedef struct __db_txn DB_TXN;
-struct __db_txn_active; typedef struct __db_txn_active DB_TXN_ACTIVE;
-struct __db_txn_stat; typedef struct __db_txn_stat DB_TXN_STAT;
-struct __db_txnmgr; typedef struct __db_txnmgr DB_TXNMGR;
-struct __dbc; typedef struct __dbc DBC;
-struct __dbc_internal; typedef struct __dbc_internal DBC_INTERNAL;
-struct __fh_t; typedef struct __fh_t DB_FH;
-struct __fname; typedef struct __fname FNAME;
-struct __key_range; typedef struct __key_range DB_KEY_RANGE;
-struct __mpoolfile; typedef struct __mpoolfile MPOOLFILE;
-struct __mutex_t; typedef struct __mutex_t DB_MUTEX;
-
-/* Key/data structure -- a Data-Base Thang. */
-struct __db_dbt {
- /*
- * data/size must be fields 1 and 2 for DB 1.85 compatibility.
- */
- void *data; /* Key/data */
- u_int32_t size; /* key/data length */
-
- u_int32_t ulen; /* RO: length of user buffer. */
- u_int32_t dlen; /* RO: get/put record length. */
- u_int32_t doff; /* RO: get/put record offset. */
-
-#define DB_DBT_APPMALLOC 0x001 /* Callback allocated memory. */
-#define DB_DBT_ISSET 0x002 /* Lower level calls set value. */
-#define DB_DBT_MALLOC 0x004 /* Return in malloc'd memory. */
-#define DB_DBT_PARTIAL 0x008 /* Partial put/get. */
-#define DB_DBT_REALLOC 0x010 /* Return in realloc'd memory. */
-#define DB_DBT_USERMEM 0x020 /* Return in user's memory. */
-#define DB_DBT_DUPOK 0x040 /* Insert if duplicate. */
- u_int32_t flags;
-};
-
-/*
- * Common flags --
- * Interfaces which use any of these common flags should never have
- * interface specific flags in this range.
- */
-#define DB_CREATE 0x0000001 /* Create file as necessary. */
-#define DB_CXX_NO_EXCEPTIONS 0x0000002 /* C++: return error values. */
-#define DB_FORCE 0x0000004 /* Force (anything). */
-#define DB_NOMMAP 0x0000008 /* Don't mmap underlying file. */
-#define DB_RDONLY 0x0000010 /* Read-only (O_RDONLY). */
-#define DB_RECOVER 0x0000020 /* Run normal recovery. */
-#define DB_THREAD 0x0000040 /* Applications are threaded. */
-#define DB_TRUNCATE 0x0000080 /* Discard existing DB (O_TRUNC). */
-#define DB_TXN_NOSYNC 0x0000100 /* Do not sync log on commit. */
-#define DB_TXN_NOT_DURABLE 0x0000200 /* Do not log changes. */
-#define DB_USE_ENVIRON 0x0000400 /* Use the environment. */
-#define DB_USE_ENVIRON_ROOT 0x0000800 /* Use the environment if root. */
-
-/*
- * Common flags --
- * Interfaces which use any of these common flags should never have
- * interface specific flags in this range.
- *
- * DB_AUTO_COMMIT:
- * DB_ENV->set_flags, DB->associate, DB->del, DB->put, DB->open,
- * DB->remove, DB->rename, DB->truncate
- * DB_DEGREE_2:
- * DB->cursor, DB->get, DB->join, DBcursor->c_get, DB_ENV->txn_begin
- * DB_DIRTY_READ:
- * DB->cursor, DB->get, DB->join, DB->open, DBcursor->c_get,
- * DB_ENV->txn_begin
- * DB_NOAUTO_COMMIT
- * DB->associate, DB->del, DB->put, DB->open,
- * DB->remove, DB->rename, DB->truncate
- *
- * !!!
- * The DB_DIRTY_READ and DB_DEGREE_2 bit masks can't be changed without
- * also changing the masks for the flags that can be OR'd into DB
- * access method and cursor operation values.
- */
-#define DB_AUTO_COMMIT 0x01000000/* Implied transaction. */
-#define DB_DEGREE_2 0x02000000/* Degree 2. */
-#define DB_DIRTY_READ 0x04000000/* Dirty Read. */
-#define DB_NO_AUTO_COMMIT 0x08000000/* Override env-wide AUTOCOMMIT. */
-
-/*
- * Flags private to db_env_create.
- */
-#define DB_RPCCLIENT 0x0000001 /* An RPC client environment. */
-
-/*
- * Flags private to db_create.
- */
-#define DB_REP_CREATE 0x0000001 /* Open of an internal rep database. */
-#define DB_XA_CREATE 0x0000002 /* Open in an XA environment. */
-
-/*
- * Flags private to DB_ENV->open.
- * Shared flags up to 0x0000800 */
-#define DB_INIT_CDB 0x0001000 /* Concurrent Access Methods. */
-#define DB_INIT_LOCK 0x0002000 /* Initialize locking. */
-#define DB_INIT_LOG 0x0004000 /* Initialize logging. */
-#define DB_INIT_MPOOL 0x0008000 /* Initialize mpool. */
-#define DB_INIT_REP 0x0010000 /* Initialize replication. */
-#define DB_INIT_TXN 0x0020000 /* Initialize transactions. */
-#define DB_JOINENV 0x0040000 /* Initialize all subsystems present. */
-#define DB_LOCKDOWN 0x0080000 /* Lock memory into physical core. */
-#define DB_PRIVATE 0x0100000 /* DB_ENV is process local. */
-#define DB_RECOVER_FATAL 0x0200000 /* Run catastrophic recovery. */
-#define DB_SYSTEM_MEM 0x0400000 /* Use system-backed memory. */
-
-/*
- * Flags private to DB->open.
- * Shared flags up to 0x0000800 */
-#define DB_EXCL 0x0001000 /* Exclusive open (O_EXCL). */
-#define DB_FCNTL_LOCKING 0x0002000 /* UNDOC: fcntl(2) locking. */
-#define DB_RDWRMASTER 0x0004000 /* UNDOC: allow subdb master open R/W */
-#define DB_WRITEOPEN 0x0008000 /* UNDOC: open with write lock. */
-
-/*
- * Flags private to DB_ENV->txn_begin.
- * Shared flags up to 0x0000800 */
-#define DB_TXN_NOWAIT 0x0001000 /* Do not wait for locks in this TXN. */
-#define DB_TXN_SYNC 0x0002000 /* Always sync log on commit. */
-
-/*
- * Flags private to DB_ENV->set_encrypt.
- */
-#define DB_ENCRYPT_AES 0x0000001 /* AES, assumes SHA1 checksum */
-
-/*
- * Flags private to DB_ENV->set_flags.
- * Shared flags up to 0x00000800 */
-#define DB_CDB_ALLDB 0x00001000/* Set CDB locking per environment. */
-#define DB_DIRECT_DB 0x00002000/* Don't buffer databases in the OS. */
-#define DB_DIRECT_LOG 0x00004000/* Don't buffer log files in the OS. */
-#define DB_DSYNC_LOG 0x00008000/* Set O_DSYNC on the log. */
-#define DB_LOG_AUTOREMOVE 0x00010000/* Automatically remove log files. */
-#define DB_LOG_INMEMORY 0x00020000/* Store logs in buffers in memory. */
-#define DB_NOLOCKING 0x00040000/* Set locking/mutex behavior. */
-#define DB_NOPANIC 0x00080000/* Set panic state per DB_ENV. */
-#define DB_OVERWRITE 0x00100000/* Overwrite unlinked region files. */
-#define DB_PANIC_ENVIRONMENT 0x00200000/* Set panic state per environment. */
-#define DB_REGION_INIT 0x00400000/* Page-fault regions on open. */
-#define DB_TIME_NOTGRANTED 0x00800000/* Return NOTGRANTED on timeout. */
-/* Shared flags at 0x01000000 */
-/* Shared flags at 0x02000000 */
-/* Shared flags at 0x04000000 */
-/* Shared flags at 0x08000000 */
-#define DB_TXN_WRITE_NOSYNC 0x10000000/* Write, don't sync, on txn commit. */
-#define DB_YIELDCPU 0x20000000/* Yield the CPU (a lot). */
-
-/*
- * Flags private to DB->set_feedback's callback.
- */
-#define DB_UPGRADE 0x0000001 /* Upgrading. */
-#define DB_VERIFY 0x0000002 /* Verifying. */
-
-/*
- * Flags private to DB_MPOOLFILE->open.
- * Shared flags up to 0x0000800 */
-#define DB_DIRECT 0x0001000 /* Don't buffer the file in the OS. */
-#define DB_DURABLE_UNKNOWN 0x0002000 /* internal: durability on open. */
-#define DB_EXTENT 0x0004000 /* internal: dealing with an extent. */
-#define DB_ODDFILESIZE 0x0008000 /* Truncate file to N * pgsize. */
-
-/*
- * Flags private to DB->set_flags.
- */
-#define DB_CHKSUM 0x0000001 /* Do checksumming */
-#define DB_DUP 0x0000002 /* Btree, Hash: duplicate keys. */
-#define DB_DUPSORT 0x0000004 /* Btree, Hash: duplicate keys. */
-#define DB_ENCRYPT 0x0000008 /* Btree, Hash: duplicate keys. */
-#define DB_INORDER 0x0000010 /* Queue: strict ordering on consume. */
-#define DB_RECNUM 0x0000020 /* Btree: record numbers. */
-#define DB_RENUMBER 0x0000040 /* Recno: renumber on insert/delete. */
-#define DB_REVSPLITOFF 0x0000080 /* Btree: turn off reverse splits. */
-#define DB_SNAPSHOT 0x0000100 /* Recno: snapshot the input. */
-
-/*
- * Flags private to the DB_ENV->stat_print, DB->stat and DB->stat_print methods.
- */
-#define DB_STAT_ALL 0x0000001 /* Print: Everything. */
-#define DB_STAT_CLEAR 0x0000002 /* Clear stat after returning values. */
-#define DB_STAT_LOCK_CONF 0x0000004 /* Print: Lock conflict matrix. */
-#define DB_STAT_LOCK_LOCKERS 0x0000008 /* Print: Lockers. */
-#define DB_STAT_LOCK_OBJECTS 0x0000010 /* Print: Lock objects. */
-#define DB_STAT_LOCK_PARAMS 0x0000020 /* Print: Lock parameters. */
-#define DB_STAT_MEMP_HASH 0x0000040 /* Print: Mpool hash buckets. */
-#define DB_STAT_SUBSYSTEM 0x0000080 /* Print: Subsystems too. */
-
-/*
- * Flags private to DB->join.
- */
-#define DB_JOIN_NOSORT 0x0000001 /* Don't try to optimize join. */
-
-/*
- * Flags private to DB->verify.
- */
-#define DB_AGGRESSIVE 0x0000001 /* Salvage whatever could be data.*/
-#define DB_NOORDERCHK 0x0000002 /* Skip sort order/hashing check. */
-#define DB_ORDERCHKONLY 0x0000004 /* Only perform the order check. */
-#define DB_PR_PAGE 0x0000008 /* Show page contents (-da). */
-#define DB_PR_RECOVERYTEST 0x0000010 /* Recovery test (-dr). */
-#define DB_PRINTABLE 0x0000020 /* Use printable format for salvage. */
-#define DB_SALVAGE 0x0000040 /* Salvage what looks like data. */
-#define DB_UNREF 0x0000080 /* Report unreferenced pages. */
-/*
- * !!!
- * These must not go over 0x8000, or they will collide with the flags
- * used by __bam_vrfy_subtree.
- */
-
-/*
- * Flags private to DB->set_rep_transport's send callback.
- */
-#define DB_REP_NOBUFFER 0x0000001 /* Do not buffer this message. */
-#define DB_REP_PERMANENT 0x0000002 /* Important--app. may want to flush. */
-
-/*******************************************************
- * Locking.
- *******************************************************/
-#define DB_LOCKVERSION 1
-
-#define DB_FILE_ID_LEN 20 /* Unique file ID length. */
-
-/*
- * Deadlock detector modes; used in the DB_ENV structure to configure the
- * locking subsystem.
- */
-#define DB_LOCK_NORUN 0
-#define DB_LOCK_DEFAULT 1 /* Default policy. */
-#define DB_LOCK_EXPIRE 2 /* Only expire locks, no detection. */
-#define DB_LOCK_MAXLOCKS 3 /* Select locker with max locks. */
-#define DB_LOCK_MAXWRITE 4 /* Select locker with max writelocks. */
-#define DB_LOCK_MINLOCKS 5 /* Select locker with min locks. */
-#define DB_LOCK_MINWRITE 6 /* Select locker with min writelocks. */
-#define DB_LOCK_OLDEST 7 /* Select oldest locker. */
-#define DB_LOCK_RANDOM 8 /* Select random locker. */
-#define DB_LOCK_YOUNGEST 9 /* Select youngest locker. */
-
-/* Flag values for lock_vec(), lock_get(). */
-#define DB_LOCK_ABORT 0x001 /* Internal: Lock during abort. */
-#define DB_LOCK_NOWAIT 0x002 /* Don't wait on unavailable lock. */
-#define DB_LOCK_RECORD 0x004 /* Internal: record lock. */
-#define DB_LOCK_REMOVE 0x008 /* Internal: flag object removed. */
-#define DB_LOCK_SET_TIMEOUT 0x010 /* Internal: set lock timeout. */
-#define DB_LOCK_SWITCH 0x020 /* Internal: switch existing lock. */
-#define DB_LOCK_UPGRADE 0x040 /* Internal: upgrade existing lock. */
-
-/*
- * Simple R/W lock modes and for multi-granularity intention locking.
- *
- * !!!
- * These values are NOT random, as they are used as an index into the lock
- * conflicts arrays, i.e., DB_LOCK_IWRITE must be == 3, and DB_LOCK_IREAD
- * must be == 4.
- */
-typedef enum {
- DB_LOCK_NG=0, /* Not granted. */
- DB_LOCK_READ=1, /* Shared/read. */
- DB_LOCK_WRITE=2, /* Exclusive/write. */
- DB_LOCK_WAIT=3, /* Wait for event */
- DB_LOCK_IWRITE=4, /* Intent exclusive/write. */
- DB_LOCK_IREAD=5, /* Intent to share/read. */
- DB_LOCK_IWR=6, /* Intent to read and write. */
- DB_LOCK_DIRTY=7, /* Dirty Read. */
- DB_LOCK_WWRITE=8 /* Was Written. */
-} db_lockmode_t;
-
-/*
- * Request types.
- */
-typedef enum {
- DB_LOCK_DUMP=0, /* Display held locks. */
- DB_LOCK_GET=1, /* Get the lock. */
- DB_LOCK_GET_TIMEOUT=2, /* Get lock with a timeout. */
- DB_LOCK_INHERIT=3, /* Pass locks to parent. */
- DB_LOCK_PUT=4, /* Release the lock. */
- DB_LOCK_PUT_ALL=5, /* Release locker's locks. */
- DB_LOCK_PUT_OBJ=6, /* Release locker's locks on obj. */
- DB_LOCK_PUT_READ=7, /* Release locker's read locks. */
- DB_LOCK_TIMEOUT=8, /* Force a txn to timeout. */
- DB_LOCK_TRADE=9, /* Trade locker ids on a lock. */
- DB_LOCK_UPGRADE_WRITE=10 /* Upgrade writes for dirty reads. */
-} db_lockop_t;
-
-/*
- * Status of a lock.
- */
-typedef enum {
- DB_LSTAT_ABORTED=1, /* Lock belongs to an aborted txn. */
- DB_LSTAT_EXPIRED=2, /* Lock has expired. */
- DB_LSTAT_FREE=3, /* Lock is unallocated. */
- DB_LSTAT_HELD=4, /* Lock is currently held. */
- DB_LSTAT_NOTEXIST=5, /* Object on which lock was waiting
- * was removed */
- DB_LSTAT_PENDING=6, /* Lock was waiting and has been
- * promoted; waiting for the owner
- * to run and upgrade it to held. */
- DB_LSTAT_WAITING=7 /* Lock is on the wait queue. */
-}db_status_t;
-
-/* Lock statistics structure. */
-struct __db_lock_stat {
- u_int32_t st_id; /* Last allocated locker ID. */
- u_int32_t st_cur_maxid; /* Current maximum unused ID. */
- u_int32_t st_maxlocks; /* Maximum number of locks in table. */
- u_int32_t st_maxlockers; /* Maximum num of lockers in table. */
- u_int32_t st_maxobjects; /* Maximum num of objects in table. */
- int st_nmodes; /* Number of lock modes. */
- u_int32_t st_nlocks; /* Current number of locks. */
- u_int32_t st_maxnlocks; /* Maximum number of locks so far. */
- u_int32_t st_nlockers; /* Current number of lockers. */
- u_int32_t st_maxnlockers; /* Maximum number of lockers so far. */
- u_int32_t st_nobjects; /* Current number of objects. */
- u_int32_t st_maxnobjects; /* Maximum number of objects so far. */
- u_int32_t st_nconflicts; /* Number of lock conflicts. */
- u_int32_t st_nrequests; /* Number of lock gets. */
- u_int32_t st_nreleases; /* Number of lock puts. */
- u_int32_t st_nnowaits; /* Number of requests that would have
- waited, but NOWAIT was set. */
- u_int32_t st_ndeadlocks; /* Number of lock deadlocks. */
- db_timeout_t st_locktimeout; /* Lock timeout. */
- u_int32_t st_nlocktimeouts; /* Number of lock timeouts. */
- db_timeout_t st_txntimeout; /* Transaction timeout. */
- u_int32_t st_ntxntimeouts; /* Number of transaction timeouts. */
- u_int32_t st_region_wait; /* Region lock granted after wait. */
- u_int32_t st_region_nowait; /* Region lock granted without wait. */
- roff_t st_regsize; /* Region size. */
-};
-
-/*
- * DB_LOCK_ILOCK --
- * Internal DB access method lock.
- */
-struct __db_ilock {
- db_pgno_t pgno; /* Page being locked. */
- u_int8_t fileid[DB_FILE_ID_LEN];/* File id. */
-#define DB_HANDLE_LOCK 1
-#define DB_RECORD_LOCK 2
-#define DB_PAGE_LOCK 3
- u_int32_t type; /* Type of lock. */
-};
-
-/*
- * DB_LOCK --
- * The structure is allocated by the caller and filled in during a
- * lock_get request (or a lock_vec/DB_LOCK_GET).
- */
-struct __db_lock_u {
- roff_t off; /* Offset of the lock in the region */
- u_int32_t ndx; /* Index of the object referenced by
- * this lock; used for locking. */
- u_int32_t gen; /* Generation number of this lock. */
- db_lockmode_t mode; /* mode of this lock. */
-};
-
-/* Lock request structure. */
-struct __db_lockreq {
- db_lockop_t op; /* Operation. */
- db_lockmode_t mode; /* Requested mode. */
- db_timeout_t timeout; /* Time to expire lock. */
- DBT *obj; /* Object being locked. */
- DB_LOCK lock; /* Lock returned. */
-};
-
-/*******************************************************
- * Logging.
- *******************************************************/
-#define DB_LOGVERSION 10 /* Current log version. */
-#define DB_LOGOLDVER 10 /* Oldest log version supported. */
-#define DB_LOGMAGIC 0x040988
-
-/* Flag values for DB_ENV->log_archive(). */
-#define DB_ARCH_ABS 0x001 /* Absolute pathnames. */
-#define DB_ARCH_DATA 0x002 /* Data files. */
-#define DB_ARCH_LOG 0x004 /* Log files. */
-#define DB_ARCH_REMOVE 0x008 /* Remove log files. */
-
-/* Flag values for DB_ENV->log_put(). */
-#define DB_FLUSH 0x001 /* Flush data to disk (public). */
-#define DB_LOG_CHKPNT 0x002 /* Flush supports a checkpoint */
-#define DB_LOG_COMMIT 0x004 /* Flush supports a commit */
-#define DB_LOG_NOCOPY 0x008 /* Don't copy data */
-#define DB_LOG_NOT_DURABLE 0x010 /* Do not log; keep in memory */
-#define DB_LOG_PERM 0x020 /* Flag record with REP_PERMANENT */
-#define DB_LOG_RESEND 0x040 /* Resent log record */
-#define DB_LOG_WRNOSYNC 0x080 /* Write, don't sync log_put */
-
-/*
- * A DB_LSN has two parts, a fileid which identifies a specific file, and an
- * offset within that file. The fileid is an unsigned 4-byte quantity that
- * uniquely identifies a file within the log directory -- currently a simple
- * counter inside the log. The offset is also an unsigned 4-byte value. The
- * log manager guarantees the offset is never more than 4 bytes by switching
- * to a new log file before the maximum length imposed by an unsigned 4-byte
- * offset is reached.
- */
-struct __db_lsn {
- u_int32_t file; /* File ID. */
- u_int32_t offset; /* File offset. */
-};
-
-/*
- * Application-specified log record types start at DB_user_BEGIN, and must not
- * equal or exceed DB_debug_FLAG.
- *
- * DB_debug_FLAG is the high-bit of the u_int32_t that specifies a log record
- * type. If the flag is set, it's a log record that was logged for debugging
- * purposes only, even if it reflects a database change -- the change was part
- * of a non-durable transaction.
- */
-#define DB_user_BEGIN 10000
-#define DB_debug_FLAG 0x80000000
-
-/*
- * DB_LOGC --
- * Log cursor.
- */
-struct __db_log_cursor {
- DB_ENV *dbenv; /* Enclosing dbenv. */
-
- DB_FH *c_fhp; /* File handle. */
- DB_LSN c_lsn; /* Cursor: LSN */
- u_int32_t c_len; /* Cursor: record length */
- u_int32_t c_prev; /* Cursor: previous record's offset */
-
- DBT c_dbt; /* Return DBT. */
-
-#define DB_LOGC_BUF_SIZE (32 * 1024)
- u_int8_t *bp; /* Allocated read buffer. */
- u_int32_t bp_size; /* Read buffer length in bytes. */
- u_int32_t bp_rlen; /* Read buffer valid data length. */
- DB_LSN bp_lsn; /* Read buffer first byte LSN. */
-
- u_int32_t bp_maxrec; /* Max record length in the log file. */
-
- /* Methods. */
- int (*close) __P((DB_LOGC *, u_int32_t));
- int (*get) __P((DB_LOGC *, DB_LSN *, DBT *, u_int32_t));
-
-#define DB_LOG_DISK 0x01 /* Log record came from disk. */
-#define DB_LOG_LOCKED 0x02 /* Log region already locked */
-#define DB_LOG_SILENT_ERR 0x04 /* Turn-off error messages. */
- u_int32_t flags;
-};
-
-/* Log statistics structure. */
-struct __db_log_stat {
- u_int32_t st_magic; /* Log file magic number. */
- u_int32_t st_version; /* Log file version number. */
- int st_mode; /* Log file mode. */
- u_int32_t st_lg_bsize; /* Log buffer size. */
- u_int32_t st_lg_size; /* Log file size. */
- u_int32_t st_w_bytes; /* Bytes to log. */
- u_int32_t st_w_mbytes; /* Megabytes to log. */
- u_int32_t st_wc_bytes; /* Bytes to log since checkpoint. */
- u_int32_t st_wc_mbytes; /* Megabytes to log since checkpoint. */
- u_int32_t st_wcount; /* Total writes to the log. */
- u_int32_t st_wcount_fill; /* Overflow writes to the log. */
- u_int32_t st_scount; /* Total syncs to the log. */
- u_int32_t st_region_wait; /* Region lock granted after wait. */
- u_int32_t st_region_nowait; /* Region lock granted without wait. */
- u_int32_t st_cur_file; /* Current log file number. */
- u_int32_t st_cur_offset; /* Current log file offset. */
- u_int32_t st_disk_file; /* Known on disk log file number. */
- u_int32_t st_disk_offset; /* Known on disk log file offset. */
- roff_t st_regsize; /* Region size. */
- u_int32_t st_maxcommitperflush; /* Max number of commits in a flush. */
- u_int32_t st_mincommitperflush; /* Min number of commits in a flush. */
-};
-
-/*
- * We need to record the first log record of a transaction.
- * For user defined logging this macro returns the place to
- * put that information, if it is need in rlsnp, otherwise it
- * leaves it unchanged.
- */
-#define DB_SET_BEGIN_LSNP(txn, rlsnp) ((txn)->set_begin_lsnp(txn, rlsnp))
-
-/*******************************************************
- * Shared buffer cache (mpool).
- *******************************************************/
-/* Flag values for DB_MPOOLFILE->get. */
-#define DB_MPOOL_CREATE 0x001 /* Create a page. */
-#define DB_MPOOL_LAST 0x002 /* Return the last page. */
-#define DB_MPOOL_NEW 0x004 /* Create a new page. */
-
-/* Flag values for DB_MPOOLFILE->put, DB_MPOOLFILE->set. */
-#define DB_MPOOL_CLEAN 0x001 /* Page is not modified. */
-#define DB_MPOOL_DIRTY 0x002 /* Page is modified. */
-#define DB_MPOOL_DISCARD 0x004 /* Don't cache the page. */
-#define DB_MPOOL_FREE 0x008 /* Free page if present. */
-
-/* Flags values for DB_MPOOLFILE->set_flags. */
-#define DB_MPOOL_NOFILE 0x001 /* Never open a backing file. */
-#define DB_MPOOL_UNLINK 0x002 /* Unlink the file on last close. */
-
-/* Priority values for DB_MPOOLFILE->set_priority. */
-typedef enum {
- DB_PRIORITY_VERY_LOW=1,
- DB_PRIORITY_LOW=2,
- DB_PRIORITY_DEFAULT=3,
- DB_PRIORITY_HIGH=4,
- DB_PRIORITY_VERY_HIGH=5
-} DB_CACHE_PRIORITY;
-
-/* Per-process DB_MPOOLFILE information. */
-struct __db_mpoolfile {
- DB_FH *fhp; /* Underlying file handle. */
-
- /*
- * !!!
- * The ref, pinref and q fields are protected by the region lock.
- */
- u_int32_t ref; /* Reference count. */
-
- u_int32_t pinref; /* Pinned block reference count. */
-
- /*
- * !!!
- * Explicit representations of structures from queue.h.
- * TAILQ_ENTRY(__db_mpoolfile) q;
- */
- struct {
- struct __db_mpoolfile *tqe_next;
- struct __db_mpoolfile **tqe_prev;
- } q; /* Linked list of DB_MPOOLFILE's. */
-
- /*
- * !!!
- * The rest of the fields (with the exception of the MP_FLUSH flag)
- * are not thread-protected, even when they may be modified at any
- * time by the application. The reason is the DB_MPOOLFILE handle
- * is single-threaded from the viewpoint of the application, and so
- * the only fields needing to be thread-protected are those accessed
- * by checkpoint or sync threads when using DB_MPOOLFILE structures
- * to flush buffers from the cache.
- */
- DB_ENV *dbenv; /* Overlying DB_ENV. */
- MPOOLFILE *mfp; /* Underlying MPOOLFILE. */
-
- u_int32_t clear_len; /* Cleared length on created pages. */
- u_int8_t /* Unique file ID. */
- fileid[DB_FILE_ID_LEN];
- int ftype; /* File type. */
- int32_t lsn_offset; /* LSN offset in page. */
- u_int32_t gbytes, bytes; /* Maximum file size. */
- DBT *pgcookie; /* Byte-string passed to pgin/pgout. */
- DB_CACHE_PRIORITY /* Cache priority. */
- priority;
-
- void *addr; /* Address of mmap'd region. */
- size_t len; /* Length of mmap'd region. */
-
- u_int32_t config_flags; /* Flags to DB_MPOOLFILE->set_flags. */
-
- /* Methods. */
- int (*close) __P((DB_MPOOLFILE *, u_int32_t));
- int (*get) __P((DB_MPOOLFILE *, db_pgno_t *, u_int32_t, void *));
- int (*open) __P((DB_MPOOLFILE *, const char *, u_int32_t, int, size_t));
- int (*put) __P((DB_MPOOLFILE *, void *, u_int32_t));
- int (*set) __P((DB_MPOOLFILE *, void *, u_int32_t));
- int (*get_clear_len) __P((DB_MPOOLFILE *, u_int32_t *));
- int (*set_clear_len) __P((DB_MPOOLFILE *, u_int32_t));
- int (*get_fileid) __P((DB_MPOOLFILE *, u_int8_t *));
- int (*set_fileid) __P((DB_MPOOLFILE *, u_int8_t *));
- int (*get_flags) __P((DB_MPOOLFILE *, u_int32_t *));
- int (*set_flags) __P((DB_MPOOLFILE *, u_int32_t, int));
- int (*get_ftype) __P((DB_MPOOLFILE *, int *));
- int (*set_ftype) __P((DB_MPOOLFILE *, int));
- int (*get_lsn_offset) __P((DB_MPOOLFILE *, int32_t *));
- int (*set_lsn_offset) __P((DB_MPOOLFILE *, int32_t));
- int (*get_maxsize) __P((DB_MPOOLFILE *, u_int32_t *, u_int32_t *));
- int (*set_maxsize) __P((DB_MPOOLFILE *, u_int32_t, u_int32_t));
- int (*get_pgcookie) __P((DB_MPOOLFILE *, DBT *));
- int (*set_pgcookie) __P((DB_MPOOLFILE *, DBT *));
- int (*get_priority) __P((DB_MPOOLFILE *, DB_CACHE_PRIORITY *));
- int (*set_priority) __P((DB_MPOOLFILE *, DB_CACHE_PRIORITY));
- int (*sync) __P((DB_MPOOLFILE *));
-
- /*
- * MP_FILEID_SET, MP_OPEN_CALLED and MP_READONLY do not need to be
- * thread protected because they are initialized before the file is
- * linked onto the per-process lists, and never modified.
- *
- * MP_FLUSH is thread protected because it is potentially read/set by
- * multiple threads of control.
- */
-#define MP_FILEID_SET 0x001 /* Application supplied a file ID. */
-#define MP_FLUSH 0x002 /* Was opened to flush a buffer. */
-#define MP_OPEN_CALLED 0x004 /* File opened. */
-#define MP_READONLY 0x008 /* File is readonly. */
- u_int32_t flags;
-};
-
-/* Mpool statistics structure. */
-struct __db_mpool_stat {
- u_int32_t st_gbytes; /* Total cache size: GB. */
- u_int32_t st_bytes; /* Total cache size: B. */
- u_int32_t st_ncache; /* Number of caches. */
- roff_t st_regsize; /* Region size. */
- size_t st_mmapsize; /* Maximum file size for mmap. */
- int st_maxopenfd; /* Maximum number of open fd's. */
- int st_maxwrite; /* Maximum buffers to write. */
- int st_maxwrite_sleep; /* Sleep after writing max buffers. */
- u_int32_t st_map; /* Pages from mapped files. */
- u_int32_t st_cache_hit; /* Pages found in the cache. */
- u_int32_t st_cache_miss; /* Pages not found in the cache. */
- u_int32_t st_page_create; /* Pages created in the cache. */
- u_int32_t st_page_in; /* Pages read in. */
- u_int32_t st_page_out; /* Pages written out. */
- u_int32_t st_ro_evict; /* Clean pages forced from the cache. */
- u_int32_t st_rw_evict; /* Dirty pages forced from the cache. */
- u_int32_t st_page_trickle; /* Pages written by memp_trickle. */
- u_int32_t st_pages; /* Total number of pages. */
- u_int32_t st_page_clean; /* Clean pages. */
- u_int32_t st_page_dirty; /* Dirty pages. */
- u_int32_t st_hash_buckets; /* Number of hash buckets. */
- u_int32_t st_hash_searches; /* Total hash chain searches. */
- u_int32_t st_hash_longest; /* Longest hash chain searched. */
- u_int32_t st_hash_examined; /* Total hash entries searched. */
- u_int32_t st_hash_nowait; /* Hash lock granted with nowait. */
- u_int32_t st_hash_wait; /* Hash lock granted after wait. */
- u_int32_t st_hash_max_wait; /* Max hash lock granted after wait. */
- u_int32_t st_region_nowait; /* Region lock granted with nowait. */
- u_int32_t st_region_wait; /* Region lock granted after wait. */
- u_int32_t st_alloc; /* Number of page allocations. */
- u_int32_t st_alloc_buckets; /* Buckets checked during allocation. */
- u_int32_t st_alloc_max_buckets; /* Max checked during allocation. */
- u_int32_t st_alloc_pages; /* Pages checked during allocation. */
- u_int32_t st_alloc_max_pages; /* Max checked during allocation. */
-};
-
-/* Mpool file statistics structure. */
-struct __db_mpool_fstat {
- char *file_name; /* File name. */
- u_int32_t st_pagesize; /* Page size. */
- u_int32_t st_map; /* Pages from mapped files. */
- u_int32_t st_cache_hit; /* Pages found in the cache. */
- u_int32_t st_cache_miss; /* Pages not found in the cache. */
- u_int32_t st_page_create; /* Pages created in the cache. */
- u_int32_t st_page_in; /* Pages read in. */
- u_int32_t st_page_out; /* Pages written out. */
-};
-
-/*******************************************************
- * Transactions and recovery.
- *******************************************************/
-#define DB_TXNVERSION 1
-
-typedef enum {
- DB_TXN_ABORT=0, /* Public. */
- DB_TXN_APPLY=1, /* Public. */
- DB_TXN_BACKWARD_ALLOC=2, /* Internal. */
- DB_TXN_BACKWARD_ROLL=3, /* Public. */
- DB_TXN_FORWARD_ROLL=4, /* Public. */
- DB_TXN_OPENFILES=5, /* Internal. */
- DB_TXN_POPENFILES=6, /* Internal. */
- DB_TXN_PRINT=7 /* Public. */
-} db_recops;
-
-/*
- * BACKWARD_ALLOC is used during the forward pass to pick up any aborted
- * allocations for files that were created during the forward pass.
- * The main difference between _ALLOC and _ROLL is that the entry for
- * the file not exist during the rollforward pass.
- */
-#define DB_UNDO(op) ((op) == DB_TXN_ABORT || \
- (op) == DB_TXN_BACKWARD_ROLL || (op) == DB_TXN_BACKWARD_ALLOC)
-#define DB_REDO(op) ((op) == DB_TXN_FORWARD_ROLL || (op) == DB_TXN_APPLY)
-
-struct __db_txn {
- DB_TXNMGR *mgrp; /* Pointer to transaction manager. */
- DB_TXN *parent; /* Pointer to transaction's parent. */
- DB_LSN last_lsn; /* Lsn of last log write. */
- u_int32_t txnid; /* Unique transaction id. */
- u_int32_t tid; /* Thread id for use in MT XA. */
- roff_t off; /* Detail structure within region. */
- db_timeout_t lock_timeout; /* Timeout for locks for this txn. */
- db_timeout_t expire; /* Time this txn expires. */
- void *txn_list; /* Undo information for parent. */
-
- /*
- * !!!
- * Explicit representations of structures from queue.h.
- * TAILQ_ENTRY(__db_txn) links;
- * TAILQ_ENTRY(__db_txn) xalinks;
- */
- struct {
- struct __db_txn *tqe_next;
- struct __db_txn **tqe_prev;
- } links; /* Links transactions off manager. */
- struct {
- struct __db_txn *tqe_next;
- struct __db_txn **tqe_prev;
- } xalinks; /* Links active XA transactions. */
-
- /*
- * !!!
- * Explicit representations of structures from queue.h.
- * TAILQ_HEAD(__events, __txn_event) events;
- */
- struct {
- struct __txn_event *tqh_first;
- struct __txn_event **tqh_last;
- } events;
-
- /*
- * !!!
- * Explicit representations of structures from queue.h.
- * STAILQ_HEAD(__logrec, __txn_logrec) logs;
- */
- struct {
- struct __txn_logrec *stqh_first;
- struct __txn_logrec **stqh_last;
- } logs; /* Links deferred events. */
-
- /*
- * !!!
- * Explicit representations of structures from queue.h.
- * TAILQ_HEAD(__kids, __db_txn) kids;
- */
- struct __kids {
- struct __db_txn *tqh_first;
- struct __db_txn **tqh_last;
- } kids;
-
- /*
- * !!!
- * Explicit representations of structures from queue.h.
- * TAILQ_ENTRY(__db_txn) klinks;
- */
- struct {
- struct __db_txn *tqe_next;
- struct __db_txn **tqe_prev;
- } klinks;
-
- void *api_internal; /* C++ API private. */
- void *xml_internal; /* XML API private. */
-
- u_int32_t cursors; /* Number of cursors open for txn */
-
- /* Methods. */
- int (*abort) __P((DB_TXN *));
- int (*commit) __P((DB_TXN *, u_int32_t));
- int (*discard) __P((DB_TXN *, u_int32_t));
- u_int32_t (*id) __P((DB_TXN *));
- int (*prepare) __P((DB_TXN *, u_int8_t *));
- void (*set_begin_lsnp) __P((DB_TXN *txn, DB_LSN **));
- int (*set_timeout) __P((DB_TXN *, db_timeout_t, u_int32_t));
-
-#define TXN_CHILDCOMMIT 0x001 /* Transaction that has committed. */
-#define TXN_COMPENSATE 0x002 /* Compensating transaction. */
-#define TXN_DEADLOCK 0x004 /* Transaction has deadlocked. */
-#define TXN_DEGREE_2 0x008 /* Has degree 2 isolation. */
-#define TXN_DIRTY_READ 0x010 /* Transaction does dirty reads. */
-#define TXN_LOCKTIMEOUT 0x020 /* Transaction has a lock timeout. */
-#define TXN_MALLOC 0x040 /* Structure allocated by TXN system. */
-#define TXN_NOSYNC 0x080 /* Do not sync on prepare and commit. */
-#define TXN_NOWAIT 0x100 /* Do not wait on locks. */
-#define TXN_RESTORED 0x200 /* Transaction has been restored. */
-#define TXN_SYNC 0x400 /* Sync on prepare and commit. */
- u_int32_t flags;
-};
-
-/*
- * Structure used for two phase commit interface. Berkeley DB support for two
- * phase commit is compatible with the X/open XA interface.
- *
- * The XA #define XIDDATASIZE defines the size of a global transaction ID. We
- * have our own version here (for name space reasons) which must have the same
- * value.
- */
-#define DB_XIDDATASIZE 128
-struct __db_preplist {
- DB_TXN *txn;
- u_int8_t gid[DB_XIDDATASIZE];
-};
-
-/* Transaction statistics structure. */
-struct __db_txn_active {
- u_int32_t txnid; /* Transaction ID */
- u_int32_t parentid; /* Transaction ID of parent */
- DB_LSN lsn; /* LSN when transaction began */
- u_int32_t xa_status; /* XA status */
- u_int8_t xid[DB_XIDDATASIZE]; /* XA global transaction ID */
-};
-
-struct __db_txn_stat {
- DB_LSN st_last_ckp; /* lsn of the last checkpoint */
- time_t st_time_ckp; /* time of last checkpoint */
- u_int32_t st_last_txnid; /* last transaction id given out */
- u_int32_t st_maxtxns; /* maximum txns possible */
- u_int32_t st_naborts; /* number of aborted transactions */
- u_int32_t st_nbegins; /* number of begun transactions */
- u_int32_t st_ncommits; /* number of committed transactions */
- u_int32_t st_nactive; /* number of active transactions */
- u_int32_t st_nrestores; /* number of restored transactions
- after recovery. */
- u_int32_t st_maxnactive; /* maximum active transactions */
- DB_TXN_ACTIVE *st_txnarray; /* array of active transactions */
- u_int32_t st_region_wait; /* Region lock granted after wait. */
- u_int32_t st_region_nowait; /* Region lock granted without wait. */
- roff_t st_regsize; /* Region size. */
-};
-
-/*******************************************************
- * Replication.
- *******************************************************/
-/* Special, out-of-band environment IDs. */
-#define DB_EID_BROADCAST -1
-#define DB_EID_INVALID -2
-
-/* rep_start flags values */
-#define DB_REP_CLIENT 0x001
-#define DB_REP_MASTER 0x002
-
-/* Replication statistics. */
-struct __db_rep_stat {
- /* !!!
- * Many replication statistics fields cannot be protected by a mutex
- * without an unacceptable performance penalty, since most message
- * processing is done without the need to hold a region-wide lock.
- * Fields whose comments end with a '+' may be updated without holding
- * the replication or log mutexes (as appropriate), and thus may be
- * off somewhat (or, on unreasonable architectures under unlucky
- * circumstances, garbaged).
- */
- u_int32_t st_status; /* Current replication status. */
- DB_LSN st_next_lsn; /* Next LSN to use or expect. */
- DB_LSN st_waiting_lsn; /* LSN we're awaiting, if any. */
- db_pgno_t st_next_pg; /* Next pg we expect. */
- db_pgno_t st_waiting_pg; /* pg we're awaiting, if any. */
-
- u_int32_t st_dupmasters; /* # of times a duplicate master
- condition was detected.+ */
- int st_env_id; /* Current environment ID. */
- int st_env_priority; /* Current environment priority. */
- u_int32_t st_gen; /* Current generation number. */
- u_int32_t st_egen; /* Current election gen number. */
- u_int32_t st_log_duplicated; /* Log records received multiply.+ */
- u_int32_t st_log_queued; /* Log records currently queued.+ */
- u_int32_t st_log_queued_max; /* Max. log records queued at once.+ */
- u_int32_t st_log_queued_total; /* Total # of log recs. ever queued.+ */
- u_int32_t st_log_records; /* Log records received and put.+ */
- u_int32_t st_log_requested; /* Log recs. missed and requested.+ */
- int st_master; /* Env. ID of the current master. */
- u_int32_t st_master_changes; /* # of times we've switched masters. */
- u_int32_t st_msgs_badgen; /* Messages with a bad generation #.+ */
- u_int32_t st_msgs_processed; /* Messages received and processed.+ */
- u_int32_t st_msgs_recover; /* Messages ignored because this site
- was a client in recovery.+ */
- u_int32_t st_msgs_send_failures;/* # of failed message sends.+ */
- u_int32_t st_msgs_sent; /* # of successful message sends.+ */
- u_int32_t st_newsites; /* # of NEWSITE msgs. received.+ */
- int st_nsites; /* Current number of sites we will
- assume during elections. */
- u_int32_t st_nthrottles; /* # of times we were throttled. */
- u_int32_t st_outdated; /* # of times we detected and returned
- an OUTDATED condition.+ */
- u_int32_t st_pg_duplicated; /* Pages received multiply.+ */
- u_int32_t st_pg_records; /* Pages received and stored.+ */
- u_int32_t st_pg_requested; /* Pages missed and requested.+ */
- u_int32_t st_startup_complete; /* Site completed client sync-up. */
- u_int32_t st_txns_applied; /* # of transactions applied.+ */
-
- /* Elections generally. */
- u_int32_t st_elections; /* # of elections held.+ */
- u_int32_t st_elections_won; /* # of elections won by this site.+ */
-
- /* Statistics about an in-progress election. */
- int st_election_cur_winner; /* Current front-runner. */
- u_int32_t st_election_gen; /* Election generation number. */
- DB_LSN st_election_lsn; /* Max. LSN of current winner. */
- int st_election_nsites; /* # of "registered voters". */
- int st_election_nvotes; /* # of "registered voters" needed. */
- int st_election_priority; /* Current election priority. */
- int st_election_status; /* Current election status. */
- u_int32_t st_election_tiebreaker;/* Election tiebreaker value. */
- int st_election_votes; /* Votes received in this round. */
-};
-/*
- * The storage record for a sequence.
- */
-struct __db_seq_record {
- u_int32_t seq_version; /* Version size/number. */
-#define DB_SEQ_DEC 0x00000001 /* Decrement sequence. */
-#define DB_SEQ_INC 0x00000002 /* Increment sequence. */
-#define DB_SEQ_RANGE_SET 0x00000004 /* Range set (internal). */
-#define DB_SEQ_WRAP 0x00000008 /* Wrap sequence at min/max. */
- u_int32_t flags; /* Flags. */
- db_seq_t seq_value; /* Current value. */
- db_seq_t seq_max; /* Max permitted. */
- db_seq_t seq_min; /* Min permitted. */
-};
-
-/*
- * Handle for a sequence object.
- */
-struct __db_sequence {
- DB *seq_dbp; /* DB handle for this sequence. */
- DB_MUTEX *seq_mutexp; /* Mutex if sequence is threaded. */
- DB_SEQ_RECORD *seq_rp; /* Pointer to current data. */
- DB_SEQ_RECORD seq_record; /* Data from DB_SEQUENCE. */
- int32_t seq_cache_size; /* Number of values cached. */
- db_seq_t seq_last_value; /* Last value cached. */
- DBT seq_key; /* DBT pointing to sequence key. */
- DBT seq_data; /* DBT pointing to seq_record. */
-
- /* API-private structure: used by C++ and Java. */
- void *api_internal;
-
- int (*close) __P((DB_SEQUENCE *, u_int32_t));
- int (*get) __P((DB_SEQUENCE *,
- DB_TXN *, int32_t, db_seq_t *, u_int32_t));
- int (*get_cachesize) __P((DB_SEQUENCE *, int32_t *));
- int (*get_db) __P((DB_SEQUENCE *, DB **));
- int (*get_flags) __P((DB_SEQUENCE *, u_int32_t *));
- int (*get_key) __P((DB_SEQUENCE *, DBT *));
- int (*get_range) __P((DB_SEQUENCE *,
- db_seq_t *, db_seq_t *));
- int (*initial_value) __P((DB_SEQUENCE *, db_seq_t));
- int (*open) __P((DB_SEQUENCE *,
- DB_TXN *, DBT *, u_int32_t));
- int (*remove) __P((DB_SEQUENCE *, DB_TXN *, u_int32_t));
- int (*set_cachesize) __P((DB_SEQUENCE *, int32_t));
- int (*set_flags) __P((DB_SEQUENCE *, u_int32_t));
- int (*set_range) __P((DB_SEQUENCE *, db_seq_t, db_seq_t));
- int (*stat) __P((DB_SEQUENCE *,
- DB_SEQUENCE_STAT **, u_int32_t));
- int (*stat_print) __P((DB_SEQUENCE *, u_int32_t));
-};
-
-struct __db_seq_stat {
- u_int32_t st_wait; /* Sequence lock granted without wait. */
- u_int32_t st_nowait; /* Sequence lock granted after wait. */
- db_seq_t st_current; /* Current value in db. */
- db_seq_t st_value; /* Current cached value. */
- db_seq_t st_last_value; /* Last cached value. */
- db_seq_t st_min; /* Minimum value. */
- db_seq_t st_max; /* Maximum value. */
- int32_t st_cache_size; /* Cache size. */
- u_int32_t st_flags; /* Flag value. */
-};
-
-/*******************************************************
- * Access methods.
- *******************************************************/
-typedef enum {
- DB_BTREE=1,
- DB_HASH=2,
- DB_RECNO=3,
- DB_QUEUE=4,
- DB_UNKNOWN=5 /* Figure it out on open. */
-} DBTYPE;
-
-#define DB_RENAMEMAGIC 0x030800 /* File has been renamed. */
-
-#define DB_BTREEVERSION 9 /* Current btree version. */
-#define DB_BTREEOLDVER 8 /* Oldest btree version supported. */
-#define DB_BTREEMAGIC 0x053162
-
-#define DB_HASHVERSION 8 /* Current hash version. */
-#define DB_HASHOLDVER 7 /* Oldest hash version supported. */
-#define DB_HASHMAGIC 0x061561
-
-#define DB_QAMVERSION 4 /* Current queue version. */
-#define DB_QAMOLDVER 3 /* Oldest queue version supported. */
-#define DB_QAMMAGIC 0x042253
-
-#define DB_SEQUENCE_VERSION 1 /* Current sequence version. */
-
-/*
- * DB access method and cursor operation values. Each value is an operation
- * code to which additional bit flags are added.
- */
-#define DB_AFTER 1 /* c_put() */
-#define DB_APPEND 2 /* put() */
-#define DB_BEFORE 3 /* c_put() */
-#define DB_CACHED_COUNTS 4 /* stat() */
-#define DB_CONSUME 5 /* get() */
-#define DB_CONSUME_WAIT 6 /* get() */
-#define DB_CURRENT 7 /* c_get(), c_put(), DB_LOGC->get() */
-#define DB_FAST_STAT 8 /* stat() */
-#define DB_FIRST 9 /* c_get(), DB_LOGC->get() */
-#define DB_GET_BOTH 10 /* get(), c_get() */
-#define DB_GET_BOTHC 11 /* c_get() (internal) */
-#define DB_GET_BOTH_RANGE 12 /* get(), c_get() */
-#define DB_GET_RECNO 13 /* c_get() */
-#define DB_JOIN_ITEM 14 /* c_get(); do not do primary lookup */
-#define DB_KEYFIRST 15 /* c_put() */
-#define DB_KEYLAST 16 /* c_put() */
-#define DB_LAST 17 /* c_get(), DB_LOGC->get() */
-#define DB_NEXT 18 /* c_get(), DB_LOGC->get() */
-#define DB_NEXT_DUP 19 /* c_get() */
-#define DB_NEXT_NODUP 20 /* c_get() */
-#define DB_NODUPDATA 21 /* put(), c_put() */
-#define DB_NOOVERWRITE 22 /* put() */
-#define DB_NOSYNC 23 /* close() */
-#define DB_POSITION 24 /* c_dup() */
-#define DB_PREV 25 /* c_get(), DB_LOGC->get() */
-#define DB_PREV_NODUP 26 /* c_get(), DB_LOGC->get() */
-#define DB_RECORDCOUNT 27 /* stat() */
-#define DB_SET 28 /* c_get(), DB_LOGC->get() */
-#define DB_SET_LOCK_TIMEOUT 29 /* set_timout() */
-#define DB_SET_RANGE 30 /* c_get() */
-#define DB_SET_RECNO 31 /* get(), c_get() */
-#define DB_SET_TXN_NOW 32 /* set_timout() (internal) */
-#define DB_SET_TXN_TIMEOUT 33 /* set_timout() */
-#define DB_UPDATE_SECONDARY 34 /* c_get(), c_del() (internal) */
-#define DB_WRITECURSOR 35 /* cursor() */
-#define DB_WRITELOCK 36 /* cursor() (internal) */
-
-/* This has to change when the max opcode hits 255. */
-#define DB_OPFLAGS_MASK 0x000000ff /* Mask for operations flags. */
-
-/*
- * Masks for flags that can be OR'd into DB access method and cursor
- * operation values.
- *
- * DB_DIRTY_READ 0x04000000 Dirty Read. */
-#define DB_MULTIPLE 0x08000000 /* Return multiple data values. */
-#define DB_MULTIPLE_KEY 0x10000000 /* Return multiple data/key pairs. */
-#define DB_RMW 0x20000000 /* Acquire write flag immediately. */
-
-/*
- * DB (user visible) error return codes.
- *
- * !!!
- * For source compatibility with DB 2.X deadlock return (EAGAIN), use the
- * following:
- * #include <errno.h>
- * #define DB_LOCK_DEADLOCK EAGAIN
- *
- * !!!
- * We don't want our error returns to conflict with other packages where
- * possible, so pick a base error value that's hopefully not common. We
- * document that we own the error name space from -30,800 to -30,999.
- */
-/* DB (public) error return codes. */
-#define DB_BUFFER_SMALL (-30999)/* User memory too small for return. */
-#define DB_DONOTINDEX (-30998)/* "Null" return from 2ndary callbk. */
-#define DB_KEYEMPTY (-30997)/* Key/data deleted or never created. */
-#define DB_KEYEXIST (-30996)/* The key/data pair already exists. */
-#define DB_LOCK_DEADLOCK (-30995)/* Deadlock. */
-#define DB_LOCK_NOTGRANTED (-30994)/* Lock unavailable. */
-#define DB_LOG_BUFFER_FULL (-30993)/* In-memory log buffer full. */
-#define DB_NOSERVER (-30992)/* Server panic return. */
-#define DB_NOSERVER_HOME (-30991)/* Bad home sent to server. */
-#define DB_NOSERVER_ID (-30990)/* Bad ID sent to server. */
-#define DB_NOTFOUND (-30989)/* Key/data pair not found (EOF). */
-#define DB_OLD_VERSION (-30988)/* Out-of-date version. */
-#define DB_PAGE_NOTFOUND (-30987)/* Requested page not found. */
-#define DB_REP_DUPMASTER (-30986)/* There are two masters. */
-#define DB_REP_HANDLE_DEAD (-30985)/* Rolled back a commit. */
-#define DB_REP_HOLDELECTION (-30984)/* Time to hold an election. */
-#define DB_REP_ISPERM (-30983)/* Cached not written perm written.*/
-#define DB_REP_NEWMASTER (-30982)/* We have learned of a new master. */
-#define DB_REP_NEWSITE (-30981)/* New site entered system. */
-#define DB_REP_NOTPERM (-30980)/* Permanent log record not written. */
-#define DB_REP_STARTUPDONE (-30979)/* Client startup complete. */
-#define DB_REP_UNAVAIL (-30978)/* Site cannot currently be reached. */
-#define DB_RUNRECOVERY (-30977)/* Panic return. */
-#define DB_SECONDARY_BAD (-30976)/* Secondary index corrupt. */
-#define DB_VERIFY_BAD (-30975)/* Verify failed; bad format. */
-#define DB_VERSION_MISMATCH (-30974)/* Environment version mismatch. */
-
-/* DB (private) error return codes. */
-#define DB_ALREADY_ABORTED (-30899)
-#define DB_DELETED (-30898)/* Recovery file marked deleted. */
-#define DB_LOCK_NOTEXIST (-30897)/* Object to lock is gone. */
-#define DB_NEEDSPLIT (-30896)/* Page needs to be split. */
-#define DB_REP_EGENCHG (-30895)/* Egen changed while in election. */
-#define DB_REP_LOGREADY (-30894)/* Rep log ready for recovery. */
-#define DB_REP_PAGEDONE (-30893)/* This page was already done. */
-#define DB_SURPRISE_KID (-30892)/* Child commit where parent
- didn't know it was a parent. */
-#define DB_SWAPBYTES (-30891)/* Database needs byte swapping. */
-#define DB_TIMEOUT (-30890)/* Timed out waiting for election. */
-#define DB_TXN_CKP (-30889)/* Encountered ckp record in log. */
-#define DB_VERIFY_FATAL (-30888)/* DB->verify cannot proceed. */
-
-/* Database handle. */
-struct __db {
- /*******************************************************
- * Public: owned by the application.
- *******************************************************/
- u_int32_t pgsize; /* Database logical page size. */
-
- /* Callbacks. */
- int (*db_append_recno) __P((DB *, DBT *, db_recno_t));
- void (*db_feedback) __P((DB *, int, int));
- int (*dup_compare) __P((DB *, const DBT *, const DBT *));
-
- void *app_private; /* Application-private handle. */
-
- /*******************************************************
- * Private: owned by DB.
- *******************************************************/
- DB_ENV *dbenv; /* Backing environment. */
-
- DBTYPE type; /* DB access method type. */
-
- DB_MPOOLFILE *mpf; /* Backing buffer pool. */
-
- DB_MUTEX *mutexp; /* Synchronization for free threading */
-
- char *fname, *dname; /* File/database passed to DB->open. */
- u_int32_t open_flags; /* Flags passed to DB->open. */
-
- u_int8_t fileid[DB_FILE_ID_LEN];/* File's unique ID for locking. */
-
- u_int32_t adj_fileid; /* File's unique ID for curs. adj. */
-
-#define DB_LOGFILEID_INVALID -1
- FNAME *log_filename; /* File's naming info for logging. */
-
- db_pgno_t meta_pgno; /* Meta page number */
- u_int32_t lid; /* Locker id for handle locking. */
- u_int32_t cur_lid; /* Current handle lock holder. */
- u_int32_t associate_lid; /* Locker id for DB->associate call. */
- DB_LOCK handle_lock; /* Lock held on this handle. */
-
- u_int cl_id; /* RPC: remote client id. */
-
- time_t timestamp; /* Handle timestamp for replication. */
-
- /*
- * Returned data memory for DB->get() and friends.
- */
- DBT my_rskey; /* Secondary key. */
- DBT my_rkey; /* [Primary] key. */
- DBT my_rdata; /* Data. */
-
- /*
- * !!!
- * Some applications use DB but implement their own locking outside of
- * DB. If they're using fcntl(2) locking on the underlying database
- * file, and we open and close a file descriptor for that file, we will
- * discard their locks. The DB_FCNTL_LOCKING flag to DB->open is an
- * undocumented interface to support this usage which leaves any file
- * descriptors we open until DB->close. This will only work with the
- * DB->open interface and simple caches, e.g., creating a transaction
- * thread may open/close file descriptors this flag doesn't protect.
- * Locking with fcntl(2) on a file that you don't own is a very, very
- * unsafe thing to do. 'Nuff said.
- */
- DB_FH *saved_open_fhp; /* Saved file handle. */
-
- /*
- * Linked list of DBP's, linked from the DB_ENV, used to keep track
- * of all open db handles for cursor adjustment.
- *
- * !!!
- * Explicit representations of structures from queue.h.
- * LIST_ENTRY(__db) dblistlinks;
- */
- struct {
- struct __db *le_next;
- struct __db **le_prev;
- } dblistlinks;
-
- /*
- * Cursor queues.
- *
- * !!!
- * Explicit representations of structures from queue.h.
- * TAILQ_HEAD(__cq_fq, __dbc) free_queue;
- * TAILQ_HEAD(__cq_aq, __dbc) active_queue;
- * TAILQ_HEAD(__cq_jq, __dbc) join_queue;
- */
- struct __cq_fq {
- struct __dbc *tqh_first;
- struct __dbc **tqh_last;
- } free_queue;
- struct __cq_aq {
- struct __dbc *tqh_first;
- struct __dbc **tqh_last;
- } active_queue;
- struct __cq_jq {
- struct __dbc *tqh_first;
- struct __dbc **tqh_last;
- } join_queue;
-
- /*
- * Secondary index support.
- *
- * Linked list of secondary indices -- set in the primary.
- *
- * !!!
- * Explicit representations of structures from queue.h.
- * LIST_HEAD(s_secondaries, __db);
- */
- struct {
- struct __db *lh_first;
- } s_secondaries;
-
- /*
- * List entries for secondaries, and reference count of how
- * many threads are updating this secondary (see __db_c_put).
- *
- * !!!
- * Note that these are synchronized by the primary's mutex, but
- * filled in in the secondaries.
- *
- * !!!
- * Explicit representations of structures from queue.h.
- * LIST_ENTRY(__db) s_links;
- */
- struct {
- struct __db *le_next;
- struct __db **le_prev;
- } s_links;
- u_int32_t s_refcnt;
-
- /* Secondary callback and free functions -- set in the secondary. */
- int (*s_callback) __P((DB *, const DBT *, const DBT *, DBT *));
-
- /* Reference to primary -- set in the secondary. */
- DB *s_primary;
-
- /* API-private structure: used by DB 1.85, C++, Java, Perl and Tcl */
- void *api_internal;
-
- /* Subsystem-private structure. */
- void *bt_internal; /* Btree/Recno access method. */
- void *h_internal; /* Hash access method. */
- void *q_internal; /* Queue access method. */
- void *xa_internal; /* XA. */
-
- /* Methods. */
- int (*associate) __P((DB *, DB_TXN *, DB *, int (*)(DB *, const DBT *,
- const DBT *, DBT *), u_int32_t));
- int (*close) __P((DB *, u_int32_t));
- int (*cursor) __P((DB *, DB_TXN *, DBC **, u_int32_t));
- int (*del) __P((DB *, DB_TXN *, DBT *, u_int32_t));
- int (*dump) __P((DB *,
- const char *, int (*)(void *, const void *), void *, int, int));
- void (*err) __P((DB *, int, const char *, ...));
- void (*errx) __P((DB *, const char *, ...));
- int (*fd) __P((DB *, int *));
- int (*get) __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t));
- int (*pget) __P((DB *, DB_TXN *, DBT *, DBT *, DBT *, u_int32_t));
- int (*get_byteswapped) __P((DB *, int *));
- int (*get_cachesize) __P((DB *, u_int32_t *, u_int32_t *, int *));
- int (*get_dbname) __P((DB *, const char **, const char **));
- int (*get_encrypt_flags) __P((DB *, u_int32_t *));
- DB_ENV *(*get_env) __P((DB *));
- void (*get_errfile) __P((DB *, FILE **));
- void (*get_errpfx) __P((DB *, const char **));
- int (*get_flags) __P((DB *, u_int32_t *));
- int (*get_lorder) __P((DB *, int *));
- int (*get_open_flags) __P((DB *, u_int32_t *));
- int (*get_pagesize) __P((DB *, u_int32_t *));
- int (*get_transactional) __P((DB *));
- int (*get_type) __P((DB *, DBTYPE *));
- int (*join) __P((DB *, DBC **, DBC **, u_int32_t));
- int (*key_range) __P((DB *,
- DB_TXN *, DBT *, DB_KEY_RANGE *, u_int32_t));
- int (*open) __P((DB *, DB_TXN *,
- const char *, const char *, DBTYPE, u_int32_t, int));
- int (*put) __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t));
- int (*remove) __P((DB *, const char *, const char *, u_int32_t));
- int (*rename) __P((DB *,
- const char *, const char *, const char *, u_int32_t));
- int (*truncate) __P((DB *, DB_TXN *, u_int32_t *, u_int32_t));
- int (*set_append_recno) __P((DB *, int (*)(DB *, DBT *, db_recno_t)));
- int (*set_alloc) __P((DB *, void *(*)(size_t),
- void *(*)(void *, size_t), void (*)(void *)));
- int (*set_cachesize) __P((DB *, u_int32_t, u_int32_t, int));
- int (*set_dup_compare) __P((DB *,
- int (*)(DB *, const DBT *, const DBT *)));
- int (*set_encrypt) __P((DB *, const char *, u_int32_t));
- void (*set_errcall) __P((DB *,
- void (*)(const DB_ENV *, const char *, const char *)));
- void (*set_errfile) __P((DB *, FILE *));
- void (*set_errpfx) __P((DB *, const char *));
- int (*set_feedback) __P((DB *, void (*)(DB *, int, int)));
- int (*set_flags) __P((DB *, u_int32_t));
- int (*set_lorder) __P((DB *, int));
- void (*set_msgcall) __P((DB *, void (*)(const DB_ENV *, const char *)));
- void (*get_msgfile) __P((DB *, FILE **));
- void (*set_msgfile) __P((DB *, FILE *));
- int (*set_pagesize) __P((DB *, u_int32_t));
- int (*set_paniccall) __P((DB *, void (*)(DB_ENV *, int)));
- int (*stat) __P((DB *, DB_TXN *, void *, u_int32_t));
- int (*stat_print) __P((DB *, u_int32_t));
- int (*sync) __P((DB *, u_int32_t));
- int (*upgrade) __P((DB *, const char *, u_int32_t));
- int (*verify) __P((DB *,
- const char *, const char *, FILE *, u_int32_t));
-
- int (*get_bt_minkey) __P((DB *, u_int32_t *));
- int (*set_bt_compare) __P((DB *,
- int (*)(DB *, const DBT *, const DBT *)));
- int (*set_bt_maxkey) __P((DB *, u_int32_t));
- int (*set_bt_minkey) __P((DB *, u_int32_t));
- int (*set_bt_prefix) __P((DB *,
- size_t (*)(DB *, const DBT *, const DBT *)));
-
- int (*get_h_ffactor) __P((DB *, u_int32_t *));
- int (*get_h_nelem) __P((DB *, u_int32_t *));
- int (*set_h_ffactor) __P((DB *, u_int32_t));
- int (*set_h_hash) __P((DB *,
- u_int32_t (*)(DB *, const void *, u_int32_t)));
- int (*set_h_nelem) __P((DB *, u_int32_t));
-
- int (*get_re_delim) __P((DB *, int *));
- int (*get_re_len) __P((DB *, u_int32_t *));
- int (*get_re_pad) __P((DB *, int *));
- int (*get_re_source) __P((DB *, const char **));
- int (*set_re_delim) __P((DB *, int));
- int (*set_re_len) __P((DB *, u_int32_t));
- int (*set_re_pad) __P((DB *, int));
- int (*set_re_source) __P((DB *, const char *));
-
- int (*get_q_extentsize) __P((DB *, u_int32_t *));
- int (*set_q_extentsize) __P((DB *, u_int32_t));
-
- int (*db_am_remove) __P((DB *, DB_TXN *, const char *, const char *));
- int (*db_am_rename) __P((DB *, DB_TXN *,
- const char *, const char *, const char *));
-
- /*
- * Never called; these are a place to save function pointers
- * so that we can undo an associate.
- */
- int (*stored_get) __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t));
- int (*stored_close) __P((DB *, u_int32_t));
-
-#define DB_OK_BTREE 0x01
-#define DB_OK_HASH 0x02
-#define DB_OK_QUEUE 0x04
-#define DB_OK_RECNO 0x08
- u_int32_t am_ok; /* Legal AM choices. */
-
-#define DB_AM_CHKSUM 0x00000001 /* Checksumming. */
-#define DB_AM_CL_WRITER 0x00000002 /* Allow writes in client replica. */
-#define DB_AM_COMPENSATE 0x00000004 /* Created by compensating txn. */
-#define DB_AM_CREATED 0x00000008 /* Database was created upon open. */
-#define DB_AM_CREATED_MSTR 0x00000010 /* Encompassing file was created. */
-#define DB_AM_DBM_ERROR 0x00000020 /* Error in DBM/NDBM database. */
-#define DB_AM_DELIMITER 0x00000040 /* Variable length delimiter set. */
-#define DB_AM_DIRTY 0x00000080 /* Support Dirty Reads. */
-#define DB_AM_DISCARD 0x00000100 /* Discard any cached pages. */
-#define DB_AM_DUP 0x00000200 /* DB_DUP. */
-#define DB_AM_DUPSORT 0x00000400 /* DB_DUPSORT. */
-#define DB_AM_ENCRYPT 0x00000800 /* Encryption. */
-#define DB_AM_FIXEDLEN 0x00001000 /* Fixed-length records. */
-#define DB_AM_INMEM 0x00002000 /* In-memory; no sync on close. */
-#define DB_AM_INORDER 0x00004000 /* DB_INORDER. */
-#define DB_AM_IN_RENAME 0x00008000 /* File is being renamed. */
-#define DB_AM_NOT_DURABLE 0x00010000 /* Do not log changes. */
-#define DB_AM_OPEN_CALLED 0x00020000 /* DB->open called. */
-#define DB_AM_PAD 0x00040000 /* Fixed-length record pad. */
-#define DB_AM_PGDEF 0x00080000 /* Page size was defaulted. */
-#define DB_AM_RDONLY 0x00100000 /* Database is readonly. */
-#define DB_AM_RECNUM 0x00200000 /* DB_RECNUM. */
-#define DB_AM_RECOVER 0x00400000 /* DB opened by recovery routine. */
-#define DB_AM_RENUMBER 0x00800000 /* DB_RENUMBER. */
-#define DB_AM_REPLICATION 0x01000000 /* An internal replication file. */
-#define DB_AM_REVSPLITOFF 0x02000000 /* DB_REVSPLITOFF. */
-#define DB_AM_SECONDARY 0x04000000 /* Database is a secondary index. */
-#define DB_AM_SNAPSHOT 0x08000000 /* DB_SNAPSHOT. */
-#define DB_AM_SUBDB 0x10000000 /* Subdatabases supported. */
-#define DB_AM_SWAP 0x20000000 /* Pages need to be byte-swapped. */
-#define DB_AM_TXN 0x40000000 /* Opened in a transaction. */
-#define DB_AM_VERIFYING 0x80000000 /* DB handle is in the verifier. */
- u_int32_t orig_flags; /* Flags at open, for refresh. */
- u_int32_t flags;
-};
-
-/*
- * Macros for bulk get. These are only intended for the C API.
- * For C++, use DbMultiple*Iterator.
- */
-#define DB_MULTIPLE_INIT(pointer, dbt) \
- (pointer = (u_int8_t *)(dbt)->data + \
- (dbt)->ulen - sizeof(u_int32_t))
-#define DB_MULTIPLE_NEXT(pointer, dbt, retdata, retdlen) \
- do { \
- if (*((u_int32_t *)(pointer)) == (u_int32_t)-1) { \
- retdata = NULL; \
- pointer = NULL; \
- break; \
- } \
- retdata = (u_int8_t *) \
- (dbt)->data + *(u_int32_t *)(pointer); \
- (pointer) = (u_int32_t *)(pointer) - 1; \
- retdlen = *(u_int32_t *)(pointer); \
- (pointer) = (u_int32_t *)(pointer) - 1; \
- if (retdlen == 0 && \
- retdata == (u_int8_t *)(dbt)->data) \
- retdata = NULL; \
- } while (0)
-#define DB_MULTIPLE_KEY_NEXT(pointer, dbt, retkey, retklen, retdata, retdlen) \
- do { \
- if (*((u_int32_t *)(pointer)) == (u_int32_t)-1) { \
- retdata = NULL; \
- retkey = NULL; \
- pointer = NULL; \
- break; \
- } \
- retkey = (u_int8_t *) \
- (dbt)->data + *(u_int32_t *)(pointer); \
- (pointer) = (u_int32_t *)(pointer) - 1; \
- retklen = *(u_int32_t *)(pointer); \
- (pointer) = (u_int32_t *)(pointer) - 1; \
- retdata = (u_int8_t *) \
- (dbt)->data + *(u_int32_t *)(pointer); \
- (pointer) = (u_int32_t *)(pointer) - 1; \
- retdlen = *(u_int32_t *)(pointer); \
- (pointer) = (u_int32_t *)(pointer) - 1; \
- } while (0)
-
-#define DB_MULTIPLE_RECNO_NEXT(pointer, dbt, recno, retdata, retdlen) \
- do { \
- if (*((u_int32_t *)(pointer)) == (u_int32_t)0) { \
- recno = 0; \
- retdata = NULL; \
- pointer = NULL; \
- break; \
- } \
- recno = *(u_int32_t *)(pointer); \
- (pointer) = (u_int32_t *)(pointer) - 1; \
- retdata = (u_int8_t *) \
- (dbt)->data + *(u_int32_t *)(pointer); \
- (pointer) = (u_int32_t *)(pointer) - 1; \
- retdlen = *(u_int32_t *)(pointer); \
- (pointer) = (u_int32_t *)(pointer) - 1; \
- } while (0)
-
-/*******************************************************
- * Access method cursors.
- *******************************************************/
-struct __dbc {
- DB *dbp; /* Related DB access method. */
- DB_TXN *txn; /* Associated transaction. */
-
- /*
- * Active/free cursor queues.
- *
- * !!!
- * Explicit representations of structures from queue.h.
- * TAILQ_ENTRY(__dbc) links;
- */
- struct {
- DBC *tqe_next;
- DBC **tqe_prev;
- } links;
-
- /*
- * The DBT *'s below are used by the cursor routines to return
- * data to the user when DBT flags indicate that DB should manage
- * the returned memory. They point at a DBT containing the buffer
- * and length that will be used, and "belonging" to the handle that
- * should "own" this memory. This may be a "my_*" field of this
- * cursor--the default--or it may be the corresponding field of
- * another cursor, a DB handle, a join cursor, etc. In general, it
- * will be whatever handle the user originally used for the current
- * DB interface call.
- */
- DBT *rskey; /* Returned secondary key. */
- DBT *rkey; /* Returned [primary] key. */
- DBT *rdata; /* Returned data. */
-
- DBT my_rskey; /* Space for returned secondary key. */
- DBT my_rkey; /* Space for returned [primary] key. */
- DBT my_rdata; /* Space for returned data. */
-
- u_int32_t lid; /* Default process' locker id. */
- u_int32_t locker; /* Locker for this operation. */
- DBT lock_dbt; /* DBT referencing lock. */
- DB_LOCK_ILOCK lock; /* Object to be locked. */
- DB_LOCK mylock; /* CDB lock held on this cursor. */
-
- u_int cl_id; /* Remote client id. */
-
- DBTYPE dbtype; /* Cursor type. */
-
- DBC_INTERNAL *internal; /* Access method private. */
-
- int (*c_close) __P((DBC *)); /* Methods: public. */
- int (*c_count) __P((DBC *, db_recno_t *, u_int32_t));
- int (*c_del) __P((DBC *, u_int32_t));
- int (*c_dup) __P((DBC *, DBC **, u_int32_t));
- int (*c_get) __P((DBC *, DBT *, DBT *, u_int32_t));
- int (*c_pget) __P((DBC *, DBT *, DBT *, DBT *, u_int32_t));
- int (*c_put) __P((DBC *, DBT *, DBT *, u_int32_t));
-
- /* Methods: private. */
- int (*c_am_bulk) __P((DBC *, DBT *, u_int32_t));
- int (*c_am_close) __P((DBC *, db_pgno_t, int *));
- int (*c_am_del) __P((DBC *));
- int (*c_am_destroy) __P((DBC *));
- int (*c_am_get) __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *));
- int (*c_am_put) __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *));
- int (*c_am_writelock) __P((DBC *));
-
-#define DBC_ACTIVE 0x0001 /* Cursor in use. */
-#define DBC_COMPENSATE 0x0002 /* Cursor compensating, don't lock. */
-#define DBC_DEGREE_2 0x0004 /* Cursor has degree 2 isolation. */
-#define DBC_DIRTY_READ 0x0008 /* Cursor supports dirty reads. */
-#define DBC_OPD 0x0010 /* Cursor references off-page dups. */
-#define DBC_RECOVER 0x0020 /* Recovery cursor; don't log/lock. */
-#define DBC_RMW 0x0040 /* Acquire write flag in read op. */
-#define DBC_TRANSIENT 0x0080 /* Cursor is transient. */
-#define DBC_WRITECURSOR 0x0100 /* Cursor may be used to write (CDB). */
-#define DBC_WRITER 0x0200 /* Cursor immediately writing (CDB). */
-#define DBC_MULTIPLE 0x0400 /* Return Multiple data. */
-#define DBC_MULTIPLE_KEY 0x0800 /* Return Multiple keys and data. */
-#define DBC_OWN_LID 0x1000 /* Free lock id on destroy. */
- u_int32_t flags;
-};
-
-/* Key range statistics structure */
-struct __key_range {
- double less;
- double equal;
- double greater;
-};
-
-/* Btree/Recno statistics structure. */
-struct __db_bt_stat {
- u_int32_t bt_magic; /* Magic number. */
- u_int32_t bt_version; /* Version number. */
- u_int32_t bt_metaflags; /* Metadata flags. */
- u_int32_t bt_nkeys; /* Number of unique keys. */
- u_int32_t bt_ndata; /* Number of data items. */
- u_int32_t bt_pagesize; /* Page size. */
- u_int32_t bt_maxkey; /* Maxkey value. */
- u_int32_t bt_minkey; /* Minkey value. */
- u_int32_t bt_re_len; /* Fixed-length record length. */
- u_int32_t bt_re_pad; /* Fixed-length record pad. */
- u_int32_t bt_levels; /* Tree levels. */
- u_int32_t bt_int_pg; /* Internal pages. */
- u_int32_t bt_leaf_pg; /* Leaf pages. */
- u_int32_t bt_dup_pg; /* Duplicate pages. */
- u_int32_t bt_over_pg; /* Overflow pages. */
- u_int32_t bt_empty_pg; /* Empty pages. */
- u_int32_t bt_free; /* Pages on the free list. */
- u_int32_t bt_int_pgfree; /* Bytes free in internal pages. */
- u_int32_t bt_leaf_pgfree; /* Bytes free in leaf pages. */
- u_int32_t bt_dup_pgfree; /* Bytes free in duplicate pages. */
- u_int32_t bt_over_pgfree; /* Bytes free in overflow pages. */
-};
-
-/* Hash statistics structure. */
-struct __db_h_stat {
- u_int32_t hash_magic; /* Magic number. */
- u_int32_t hash_version; /* Version number. */
- u_int32_t hash_metaflags; /* Metadata flags. */
- u_int32_t hash_nkeys; /* Number of unique keys. */
- u_int32_t hash_ndata; /* Number of data items. */
- u_int32_t hash_pagesize; /* Page size. */
- u_int32_t hash_ffactor; /* Fill factor specified at create. */
- u_int32_t hash_buckets; /* Number of hash buckets. */
- u_int32_t hash_free; /* Pages on the free list. */
- u_int32_t hash_bfree; /* Bytes free on bucket pages. */
- u_int32_t hash_bigpages; /* Number of big key/data pages. */
- u_int32_t hash_big_bfree; /* Bytes free on big item pages. */
- u_int32_t hash_overflows; /* Number of overflow pages. */
- u_int32_t hash_ovfl_free; /* Bytes free on ovfl pages. */
- u_int32_t hash_dup; /* Number of dup pages. */
- u_int32_t hash_dup_free; /* Bytes free on duplicate pages. */
-};
-
-/* Queue statistics structure. */
-struct __db_qam_stat {
- u_int32_t qs_magic; /* Magic number. */
- u_int32_t qs_version; /* Version number. */
- u_int32_t qs_metaflags; /* Metadata flags. */
- u_int32_t qs_nkeys; /* Number of unique keys. */
- u_int32_t qs_ndata; /* Number of data items. */
- u_int32_t qs_pagesize; /* Page size. */
- u_int32_t qs_extentsize; /* Pages per extent. */
- u_int32_t qs_pages; /* Data pages. */
- u_int32_t qs_re_len; /* Fixed-length record length. */
- u_int32_t qs_re_pad; /* Fixed-length record pad. */
- u_int32_t qs_pgfree; /* Bytes free in data pages. */
- u_int32_t qs_first_recno; /* First not deleted record. */
- u_int32_t qs_cur_recno; /* Next available record number. */
-};
-
-/*******************************************************
- * Environment.
- *******************************************************/
-#define DB_REGION_MAGIC 0x120897 /* Environment magic number. */
-
-/* Database Environment handle. */
-struct __db_env {
- /*******************************************************
- * Public: owned by the application.
- *******************************************************/
- /* Error message callback. */
- void (*db_errcall) __P((const DB_ENV *, const char *, const char *));
- FILE *db_errfile; /* Error message file stream. */
- const char *db_errpfx; /* Error message prefix. */
-
- FILE *db_msgfile; /* Statistics message file stream. */
- /* Statistics message callback. */
- void (*db_msgcall) __P((const DB_ENV *, const char *));
-
- /* Other Callbacks. */
- void (*db_feedback) __P((DB_ENV *, int, int));
- void (*db_paniccall) __P((DB_ENV *, int));
-
- /* App-specified alloc functions. */
- void *(*db_malloc) __P((size_t));
- void *(*db_realloc) __P((void *, size_t));
- void (*db_free) __P((void *));
-
- /*
- * Currently, the verbose list is a bit field with room for 32
- * entries. There's no reason that it needs to be limited, if
- * there are ever more than 32 entries, convert to a bit array.
- */
-#define DB_VERB_DEADLOCK 0x0001 /* Deadlock detection information. */
-#define DB_VERB_RECOVERY 0x0002 /* Recovery information. */
-#define DB_VERB_REPLICATION 0x0004 /* Replication information. */
-#define DB_VERB_WAITSFOR 0x0008 /* Dump waits-for table. */
- u_int32_t verbose; /* Verbose output. */
-
- void *app_private; /* Application-private handle. */
-
- int (*app_dispatch) /* User-specified recovery dispatch. */
- __P((DB_ENV *, DBT *, DB_LSN *, db_recops));
-
- /* Locking. */
- u_int8_t *lk_conflicts; /* Two dimensional conflict matrix. */
- int lk_modes; /* Number of lock modes in table. */
- u_int32_t lk_max; /* Maximum number of locks. */
- u_int32_t lk_max_lockers;/* Maximum number of lockers. */
- u_int32_t lk_max_objects;/* Maximum number of locked objects. */
- u_int32_t lk_detect; /* Deadlock detect on all conflicts. */
- db_timeout_t lk_timeout; /* Lock timeout period. */
-
- /* Logging. */
- u_int32_t lg_bsize; /* Buffer size. */
- u_int32_t lg_size; /* Log file size. */
- u_int32_t lg_regionmax; /* Region size. */
-
- /* Memory pool. */
- u_int32_t mp_gbytes; /* Cachesize: GB. */
- u_int32_t mp_bytes; /* Cachesize: Bytes. */
- u_int mp_ncache; /* Number of cache regions. */
- size_t mp_mmapsize; /* Maximum file size for mmap. */
- int mp_maxopenfd; /* Maximum open file descriptors. */
- int mp_maxwrite; /* Maximum buffers to write. */
- int /* Sleep after writing max buffers. */
- mp_maxwrite_sleep;
-
- /* Replication */
- int rep_eid; /* environment id. */
- int (*rep_send) /* Send function. */
- __P((DB_ENV *, const DBT *, const DBT *,
- const DB_LSN *, int, u_int32_t));
-
- /* Transactions. */
- u_int32_t tx_max; /* Maximum number of transactions. */
- time_t tx_timestamp; /* Recover to specific timestamp. */
- db_timeout_t tx_timeout; /* Timeout for transactions. */
-
- /*******************************************************
- * Private: owned by DB.
- *******************************************************/
- /* User files, paths. */
- char *db_home; /* Database home. */
- char *db_log_dir; /* Database log file directory. */
- char *db_tmp_dir; /* Database tmp file directory. */
-
- char **db_data_dir; /* Database data file directories. */
- int data_cnt; /* Database data file slots. */
- int data_next; /* Next Database data file slot. */
-
- int db_mode; /* Default open permissions. */
- int dir_mode; /* Intermediate directory perms. */
- u_int32_t env_lid; /* Locker ID in non-threaded handles. */
- u_int32_t open_flags; /* Flags passed to DB_ENV->open. */
-
- void *reginfo; /* REGINFO structure reference. */
- DB_FH *lockfhp; /* fcntl(2) locking file handle. */
-
- int (**recover_dtab) /* Dispatch table for recover funcs. */
- __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
- size_t recover_dtab_size;
- /* Slots in the dispatch table. */
-
- void *cl_handle; /* RPC: remote client handle. */
- u_int cl_id; /* RPC: remote client env id. */
-
- int db_ref; /* DB reference count. */
-
- long shm_key; /* shmget(2) key. */
- u_int32_t tas_spins; /* test-and-set spins. */
-
- /*
- * List of open DB handles for this DB_ENV, used for cursor
- * adjustment. Must be protected for multi-threaded support.
- *
- * !!!
- * As this structure is allocated in per-process memory, the
- * mutex may need to be stored elsewhere on architectures unable
- * to support mutexes in heap memory, e.g. HP/UX 9.
- *
- * !!!
- * Explicit representation of structure in queue.h.
- * LIST_HEAD(dblist, __db);
- */
- DB_MUTEX *dblist_mutexp; /* Mutex. */
- struct {
- struct __db *lh_first;
- } dblist;
-
- /*
- * XA support.
- *
- * !!!
- * Explicit representations of structures from queue.h.
- * TAILQ_ENTRY(__db_env) links;
- * TAILQ_HEAD(xa_txn, __db_txn);
- */
- struct {
- struct __db_env *tqe_next;
- struct __db_env **tqe_prev;
- } links;
- struct __xa_txn { /* XA Active Transactions. */
- struct __db_txn *tqh_first;
- struct __db_txn **tqh_last;
- } xa_txn;
- int xa_rmid; /* XA Resource Manager ID. */
-
- /* API-private structure. */
- void *api1_internal; /* C++, Perl API private */
- void *api2_internal; /* Java API private */
-
- char *passwd; /* Cryptography support. */
- size_t passwd_len;
- void *crypto_handle; /* Primary handle. */
- DB_MUTEX *mt_mutexp; /* Mersenne Twister mutex. */
- int mti; /* Mersenne Twister index. */
- u_long *mt; /* Mersenne Twister state vector. */
-
- /* DB_ENV Methods. */
- int (*close) __P((DB_ENV *, u_int32_t));
- int (*dbremove) __P((DB_ENV *,
- DB_TXN *, const char *, const char *, u_int32_t));
- int (*dbrename) __P((DB_ENV *, DB_TXN *,
- const char *, const char *, const char *, u_int32_t));
- void (*err) __P((const DB_ENV *, int, const char *, ...));
- void (*errx) __P((const DB_ENV *, const char *, ...));
- int (*open) __P((DB_ENV *, const char *, u_int32_t, int));
- int (*remove) __P((DB_ENV *, const char *, u_int32_t));
- int (*stat_print) __P((DB_ENV *, u_int32_t));
-
- /* House-keeping. */
- int (*fileid_reset) __P((DB_ENV *, char *, int));
- int (*is_bigendian) __P((void));
- int (*lsn_reset) __P((DB_ENV *, char *, int));
- int (*prdbt) __P((DBT *,
- int, const char *, void *, int (*)(void *, const void *), int));
-
- /* Setters/getters. */
- int (*set_alloc) __P((DB_ENV *, void *(*)(size_t),
- void *(*)(void *, size_t), void (*)(void *)));
- int (*set_app_dispatch) __P((DB_ENV *,
- int (*)(DB_ENV *, DBT *, DB_LSN *, db_recops)));
- int (*get_data_dirs) __P((DB_ENV *, const char ***));
- int (*set_data_dir) __P((DB_ENV *, const char *));
- int (*get_encrypt_flags) __P((DB_ENV *, u_int32_t *));
- int (*set_encrypt) __P((DB_ENV *, const char *, u_int32_t));
- void (*set_errcall) __P((DB_ENV *,
- void (*)(const DB_ENV *, const char *, const char *)));
- void (*get_errfile) __P((DB_ENV *, FILE **));
- void (*set_errfile) __P((DB_ENV *, FILE *));
- void (*get_errpfx) __P((DB_ENV *, const char **));
- void (*set_errpfx) __P((DB_ENV *, const char *));
- int (*set_feedback) __P((DB_ENV *, void (*)(DB_ENV *, int, int)));
- int (*get_flags) __P((DB_ENV *, u_int32_t *));
- int (*set_flags) __P((DB_ENV *, u_int32_t, int));
- int (*get_home) __P((DB_ENV *, const char **));
- int (*set_intermediate_dir) __P((DB_ENV *, int, u_int32_t));
- int (*get_open_flags) __P((DB_ENV *, u_int32_t *));
- int (*set_paniccall) __P((DB_ENV *, void (*)(DB_ENV *, int)));
- int (*set_rpc_server) __P((DB_ENV *,
- void *, const char *, long, long, u_int32_t));
- int (*get_shm_key) __P((DB_ENV *, long *));
- int (*set_shm_key) __P((DB_ENV *, long));
- void (*set_msgcall) __P((DB_ENV *,
- void (*)(const DB_ENV *, const char *)));
- void (*get_msgfile) __P((DB_ENV *, FILE **));
- void (*set_msgfile) __P((DB_ENV *, FILE *));
- int (*get_tas_spins) __P((DB_ENV *, u_int32_t *));
- int (*set_tas_spins) __P((DB_ENV *, u_int32_t));
- int (*get_tmp_dir) __P((DB_ENV *, const char **));
- int (*set_tmp_dir) __P((DB_ENV *, const char *));
- int (*get_verbose) __P((DB_ENV *, u_int32_t, int *));
- int (*set_verbose) __P((DB_ENV *, u_int32_t, int));
-
- void *lg_handle; /* Log handle and methods. */
- int (*get_lg_bsize) __P((DB_ENV *, u_int32_t *));
- int (*set_lg_bsize) __P((DB_ENV *, u_int32_t));
- int (*get_lg_dir) __P((DB_ENV *, const char **));
- int (*set_lg_dir) __P((DB_ENV *, const char *));
- int (*get_lg_max) __P((DB_ENV *, u_int32_t *));
- int (*set_lg_max) __P((DB_ENV *, u_int32_t));
- int (*get_lg_regionmax) __P((DB_ENV *, u_int32_t *));
- int (*set_lg_regionmax) __P((DB_ENV *, u_int32_t));
- int (*log_archive) __P((DB_ENV *, char **[], u_int32_t));
- int (*log_cursor) __P((DB_ENV *, DB_LOGC **, u_int32_t));
- int (*log_file) __P((DB_ENV *, const DB_LSN *, char *, size_t));
- int (*log_flush) __P((DB_ENV *, const DB_LSN *));
- int (*log_put) __P((DB_ENV *, DB_LSN *, const DBT *, u_int32_t));
- int (*log_stat) __P((DB_ENV *, DB_LOG_STAT **, u_int32_t));
- int (*log_stat_print) __P((DB_ENV *, u_int32_t));
-
- void *lk_handle; /* Lock handle and methods. */
- int (*get_lk_conflicts) __P((DB_ENV *, const u_int8_t **, int *));
- int (*set_lk_conflicts) __P((DB_ENV *, u_int8_t *, int));
- int (*get_lk_detect) __P((DB_ENV *, u_int32_t *));
- int (*set_lk_detect) __P((DB_ENV *, u_int32_t));
- int (*set_lk_max) __P((DB_ENV *, u_int32_t));
- int (*get_lk_max_locks) __P((DB_ENV *, u_int32_t *));
- int (*set_lk_max_locks) __P((DB_ENV *, u_int32_t));
- int (*get_lk_max_lockers) __P((DB_ENV *, u_int32_t *));
- int (*set_lk_max_lockers) __P((DB_ENV *, u_int32_t));
- int (*get_lk_max_objects) __P((DB_ENV *, u_int32_t *));
- int (*set_lk_max_objects) __P((DB_ENV *, u_int32_t));
- int (*lock_detect) __P((DB_ENV *, u_int32_t, u_int32_t, int *));
- int (*lock_get) __P((DB_ENV *,
- u_int32_t, u_int32_t, const DBT *, db_lockmode_t, DB_LOCK *));
- int (*lock_put) __P((DB_ENV *, DB_LOCK *));
- int (*lock_id) __P((DB_ENV *, u_int32_t *));
- int (*lock_id_free) __P((DB_ENV *, u_int32_t));
- int (*lock_stat) __P((DB_ENV *, DB_LOCK_STAT **, u_int32_t));
- int (*lock_stat_print) __P((DB_ENV *, u_int32_t));
- int (*lock_vec) __P((DB_ENV *,
- u_int32_t, u_int32_t, DB_LOCKREQ *, int, DB_LOCKREQ **));
-
- void *mp_handle; /* Mpool handle and methods. */
- int (*get_cachesize) __P((DB_ENV *, u_int32_t *, u_int32_t *, int *));
- int (*set_cachesize) __P((DB_ENV *, u_int32_t, u_int32_t, int));
- int (*get_mp_mmapsize) __P((DB_ENV *, size_t *));
- int (*set_mp_mmapsize) __P((DB_ENV *, size_t));
- int (*get_mp_max_openfd) __P((DB_ENV *, int *));
- int (*set_mp_max_openfd) __P((DB_ENV *, int));
- int (*get_mp_max_write) __P((DB_ENV *, int *, int *));
- int (*set_mp_max_write) __P((DB_ENV *, int, int));
- int (*memp_fcreate) __P((DB_ENV *, DB_MPOOLFILE **, u_int32_t));
- int (*memp_register) __P((DB_ENV *, int,
- int (*)(DB_ENV *, db_pgno_t, void *, DBT *),
- int (*)(DB_ENV *, db_pgno_t, void *, DBT *)));
- int (*memp_stat) __P((DB_ENV *,
- DB_MPOOL_STAT **, DB_MPOOL_FSTAT ***, u_int32_t));
- int (*memp_stat_print) __P((DB_ENV *, u_int32_t));
- int (*memp_sync) __P((DB_ENV *, DB_LSN *));
- int (*memp_trickle) __P((DB_ENV *, int, int *));
-
- void *rep_handle; /* Replication handle and methods. */
- int (*rep_elect) __P((DB_ENV *, int, int, int,
- u_int32_t, int *, u_int32_t));
- int (*rep_flush) __P((DB_ENV *));
- int (*rep_process_message) __P((DB_ENV *, DBT *, DBT *,
- int *, DB_LSN *));
- int (*rep_start) __P((DB_ENV *, DBT *, u_int32_t));
- int (*rep_stat) __P((DB_ENV *, DB_REP_STAT **, u_int32_t));
- int (*rep_stat_print) __P((DB_ENV *, u_int32_t));
- int (*get_rep_limit) __P((DB_ENV *, u_int32_t *, u_int32_t *));
- int (*set_rep_limit) __P((DB_ENV *, u_int32_t, u_int32_t));
- int (*set_rep_request) __P((DB_ENV *, u_int32_t, u_int32_t));
- int (*set_rep_transport) __P((DB_ENV *, int,
- int (*) (DB_ENV *, const DBT *, const DBT *, const DB_LSN *,
- int, u_int32_t)));
-
- void *tx_handle; /* Txn handle and methods. */
- int (*get_tx_max) __P((DB_ENV *, u_int32_t *));
- int (*set_tx_max) __P((DB_ENV *, u_int32_t));
- int (*get_tx_timestamp) __P((DB_ENV *, time_t *));
- int (*set_tx_timestamp) __P((DB_ENV *, time_t *));
- int (*txn_begin) __P((DB_ENV *, DB_TXN *, DB_TXN **, u_int32_t));
- int (*txn_checkpoint) __P((DB_ENV *, u_int32_t, u_int32_t, u_int32_t));
- int (*txn_recover) __P((DB_ENV *,
- DB_PREPLIST *, long, long *, u_int32_t));
- int (*txn_stat) __P((DB_ENV *, DB_TXN_STAT **, u_int32_t));
- int (*txn_stat_print) __P((DB_ENV *, u_int32_t));
- int (*get_timeout) __P((DB_ENV *, db_timeout_t *, u_int32_t));
- int (*set_timeout) __P((DB_ENV *, db_timeout_t, u_int32_t));
-
-#define DB_TEST_ELECTINIT 1 /* after __rep_elect_init */
-#define DB_TEST_ELECTVOTE1 2 /* after sending VOTE1 */
-#define DB_TEST_POSTDESTROY 3 /* after destroy op */
-#define DB_TEST_POSTLOG 4 /* after logging all pages */
-#define DB_TEST_POSTLOGMETA 5 /* after logging meta in btree */
-#define DB_TEST_POSTOPEN 6 /* after __os_open */
-#define DB_TEST_POSTSYNC 7 /* after syncing the log */
-#define DB_TEST_PREDESTROY 8 /* before destroy op */
-#define DB_TEST_PREOPEN 9 /* before __os_open */
-#define DB_TEST_SUBDB_LOCKS 10 /* subdb locking tests */
- int test_abort; /* Abort value for testing. */
- int test_check; /* Checkpoint value for testing. */
- int test_copy; /* Copy value for testing. */
-
-#define DB_ENV_AUTO_COMMIT 0x0000001 /* DB_AUTO_COMMIT. */
-#define DB_ENV_CDB 0x0000002 /* DB_INIT_CDB. */
-#define DB_ENV_CDB_ALLDB 0x0000004 /* CDB environment wide locking. */
-#define DB_ENV_CREATE 0x0000008 /* DB_CREATE set. */
-#define DB_ENV_DBLOCAL 0x0000010 /* DB_ENV allocated for private DB. */
-#define DB_ENV_DIRECT_DB 0x0000020 /* DB_DIRECT_DB set. */
-#define DB_ENV_DIRECT_LOG 0x0000040 /* DB_DIRECT_LOG set. */
-#define DB_ENV_DSYNC_LOG 0x0000080 /* DB_DSYNC_LOG set. */
-#define DB_ENV_FATAL 0x0000100 /* Doing fatal recovery in env. */
-#define DB_ENV_LOCKDOWN 0x0000200 /* DB_LOCKDOWN set. */
-#define DB_ENV_LOG_AUTOREMOVE 0x0000400 /* DB_LOG_AUTOREMOVE set. */
-#define DB_ENV_LOG_INMEMORY 0x0000800 /* DB_LOG_INMEMORY set. */
-#define DB_ENV_NOLOCKING 0x0001000 /* DB_NOLOCKING set. */
-#define DB_ENV_NOMMAP 0x0002000 /* DB_NOMMAP set. */
-#define DB_ENV_NOPANIC 0x0004000 /* Okay if panic set. */
-#define DB_ENV_OPEN_CALLED 0x0008000 /* DB_ENV->open called. */
-#define DB_ENV_OVERWRITE 0x0010000 /* DB_OVERWRITE set. */
-#define DB_ENV_PRIVATE 0x0020000 /* DB_PRIVATE set. */
-#define DB_ENV_REGION_INIT 0x0040000 /* DB_REGION_INIT set. */
-#define DB_ENV_RPCCLIENT 0x0080000 /* DB_RPCCLIENT set. */
-#define DB_ENV_RPCCLIENT_GIVEN 0x0100000 /* User-supplied RPC client struct */
-#define DB_ENV_SYSTEM_MEM 0x0200000 /* DB_SYSTEM_MEM set. */
-#define DB_ENV_THREAD 0x0400000 /* DB_THREAD set. */
-#define DB_ENV_TIME_NOTGRANTED 0x0800000 /* DB_TIME_NOTGRANTED set. */
-#define DB_ENV_TXN_NOSYNC 0x1000000 /* DB_TXN_NOSYNC set. */
-#define DB_ENV_TXN_WRITE_NOSYNC 0x2000000 /* DB_TXN_WRITE_NOSYNC set. */
-#define DB_ENV_YIELDCPU 0x4000000 /* DB_YIELDCPU set. */
- u_int32_t flags;
-};
-
-#ifndef DB_DBM_HSEARCH
-#define DB_DBM_HSEARCH 0 /* No historic interfaces by default. */
-#endif
-#if DB_DBM_HSEARCH != 0
-/*******************************************************
- * Dbm/Ndbm historic interfaces.
- *******************************************************/
-typedef struct __db DBM;
-
-#define DBM_INSERT 0 /* Flags to dbm_store(). */
-#define DBM_REPLACE 1
-
-/*
- * The DB support for ndbm(3) always appends this suffix to the
- * file name to avoid overwriting the user's original database.
- */
-#define DBM_SUFFIX ".db"
-
-#if defined(_XPG4_2)
-typedef struct {
- char *dptr;
- size_t dsize;
-} datum;
-#else
-typedef struct {
- char *dptr;
- int dsize;
-} datum;
-#endif
-
-/*
- * Translate NDBM calls into DB calls so that DB doesn't step on the
- * application's name space.
- */
-#define dbm_clearerr(a) __db_ndbm_clearerr(a)
-#define dbm_close(a) __db_ndbm_close(a)
-#define dbm_delete(a, b) __db_ndbm_delete(a, b)
-#define dbm_dirfno(a) __db_ndbm_dirfno(a)
-#define dbm_error(a) __db_ndbm_error(a)
-#define dbm_fetch(a, b) __db_ndbm_fetch(a, b)
-#define dbm_firstkey(a) __db_ndbm_firstkey(a)
-#define dbm_nextkey(a) __db_ndbm_nextkey(a)
-#define dbm_open(a, b, c) __db_ndbm_open(a, b, c)
-#define dbm_pagfno(a) __db_ndbm_pagfno(a)
-#define dbm_rdonly(a) __db_ndbm_rdonly(a)
-#define dbm_store(a, b, c, d) \
- __db_ndbm_store(a, b, c, d)
-
-/*
- * Translate DBM calls into DB calls so that DB doesn't step on the
- * application's name space.
- *
- * The global variables dbrdonly, dirf and pagf were not retained when 4BSD
- * replaced the dbm interface with ndbm, and are not supported here.
- */
-#define dbminit(a) __db_dbm_init(a)
-#define dbmclose __db_dbm_close
-#if !defined(__cplusplus)
-#define delete(a) __db_dbm_delete(a)
-#endif
-#define fetch(a) __db_dbm_fetch(a)
-#define firstkey __db_dbm_firstkey
-#define nextkey(a) __db_dbm_nextkey(a)
-#define store(a, b) __db_dbm_store(a, b)
-
-/*******************************************************
- * Hsearch historic interface.
- *******************************************************/
-typedef enum {
- FIND, ENTER
-} ACTION;
-
-typedef struct entry {
- char *key;
- char *data;
-} ENTRY;
-
-#define hcreate(a) __db_hcreate(a)
-#define hdestroy __db_hdestroy
-#define hsearch(a, b) __db_hsearch(a, b)
-
-#endif /* DB_DBM_HSEARCH */
-
-#if defined(__cplusplus)
-}
-#endif
-#endif /* !_DB_H_ */
-
-/* DO NOT EDIT: automatically built by dist/s_include. */
-#ifndef _DB_EXT_PROT_IN_
-#define _DB_EXT_PROT_IN_
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-int db_create __P((DB **, DB_ENV *, u_int32_t));
-char *db_strerror __P((int));
-int db_env_create __P((DB_ENV **, u_int32_t));
-char *db_version __P((int *, int *, int *));
-int log_compare __P((const DB_LSN *, const DB_LSN *));
-int db_env_set_func_close __P((int (*)(int)));
-int db_env_set_func_dirfree __P((void (*)(char **, int)));
-int db_env_set_func_dirlist __P((int (*)(const char *, char ***, int *)));
-int db_env_set_func_exists __P((int (*)(const char *, int *)));
-int db_env_set_func_free __P((void (*)(void *)));
-int db_env_set_func_fsync __P((int (*)(int)));
-int db_env_set_func_ftruncate __P((int (*)(int, off_t)));
-int db_env_set_func_ioinfo __P((int (*)(const char *, int, u_int32_t *, u_int32_t *, u_int32_t *)));
-int db_env_set_func_malloc __P((void *(*)(size_t)));
-int db_env_set_func_map __P((int (*)(char *, size_t, int, int, void **)));
-int db_env_set_func_pread __P((ssize_t (*)(int, void *, size_t, off_t)));
-int db_env_set_func_pwrite __P((ssize_t (*)(int, const void *, size_t, off_t)));
-int db_env_set_func_open __P((int (*)(const char *, int, ...)));
-int db_env_set_func_read __P((ssize_t (*)(int, void *, size_t)));
-int db_env_set_func_realloc __P((void *(*)(void *, size_t)));
-int db_env_set_func_rename __P((int (*)(const char *, const char *)));
-int db_env_set_func_seek __P((int (*)(int, off_t, int)));
-int db_env_set_func_sleep __P((int (*)(u_long, u_long)));
-int db_env_set_func_unlink __P((int (*)(const char *)));
-int db_env_set_func_unmap __P((int (*)(void *, size_t)));
-int db_env_set_func_write __P((ssize_t (*)(int, const void *, size_t)));
-int db_env_set_func_yield __P((int (*)(void)));
-int db_sequence_create __P((DB_SEQUENCE **, DB *, u_int32_t));
-#if DB_DBM_HSEARCH != 0
-int __db_ndbm_clearerr __P((DBM *));
-void __db_ndbm_close __P((DBM *));
-int __db_ndbm_delete __P((DBM *, datum));
-int __db_ndbm_dirfno __P((DBM *));
-int __db_ndbm_error __P((DBM *));
-datum __db_ndbm_fetch __P((DBM *, datum));
-datum __db_ndbm_firstkey __P((DBM *));
-datum __db_ndbm_nextkey __P((DBM *));
-DBM *__db_ndbm_open __P((const char *, int, int));
-int __db_ndbm_pagfno __P((DBM *));
-int __db_ndbm_rdonly __P((DBM *));
-int __db_ndbm_store __P((DBM *, datum, datum, int));
-int __db_dbm_close __P((void));
-int __db_dbm_delete __P((datum));
-datum __db_dbm_fetch __P((datum));
-datum __db_dbm_firstkey __P((void));
-int __db_dbm_init __P((char *));
-datum __db_dbm_nextkey __P((datum));
-int __db_dbm_store __P((datum, datum));
-#endif
-#if DB_DBM_HSEARCH != 0
-int __db_hcreate __P((size_t));
-ENTRY *__db_hsearch __P((ENTRY, ACTION));
-void __db_hdestroy __P((void));
-#endif
-
-#if defined(__cplusplus)
-}
-#endif
-#endif /* !_DB_EXT_PROT_IN_ */
diff --git a/db/build_win64/db_archive.dsp b/db/build_win64/db_archive.dsp
deleted file mode 100644
index ce7ffbded..000000000
--- a/db/build_win64/db_archive.dsp
+++ /dev/null
@@ -1,148 +0,0 @@
-# Microsoft Developer Studio Project File - Name="db_archive" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=db_archive - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "db_archive.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "db_archive.mak" CFG="db_archive - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "db_archive - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_archive - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_archive - Win32 Release Static" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_archive - Win32 Debug Static" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "db_archive - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /machine:IA64
-# ADD LINK32 Release/libdb43.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-
-!ELSEIF "$(CFG)" == "db_archive - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /pdbtype:sept
-# ADD LINK32 Debug/libdb43d.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-
-!ELSEIF "$(CFG)" == "db_archive - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Release_static/libdb43.lib /nologo /subsystem:console /machine:IA64
-# ADD LINK32 Release_static/libdb43s.lib /nologo /subsystem:console /machine:IA64
-
-!ELSEIF "$(CFG)" == "db_archive - Win32 Debug Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Debug_static/libdb43d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /fixed:no
-# ADD LINK32 Debug_static/libdb43sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "db_archive - Win32 Release"
-# Name "db_archive - Win32 Debug"
-# Name "db_archive - Win32 Release Static"
-# Name "db_archive - Win32 Debug Static"
-# Begin Source File
-
-SOURCE=..\db_archive\db_archive.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\clib\getopt.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win64/db_checkpoint.dsp b/db/build_win64/db_checkpoint.dsp
deleted file mode 100644
index a68063fcd..000000000
--- a/db/build_win64/db_checkpoint.dsp
+++ /dev/null
@@ -1,148 +0,0 @@
-# Microsoft Developer Studio Project File - Name="db_checkpoint" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=db_checkpoint - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "db_checkpoint.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "db_checkpoint.mak" CFG="db_checkpoint - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "db_checkpoint - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_checkpoint - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_checkpoint - Win32 Release Static" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_checkpoint - Win32 Debug Static" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "db_checkpoint - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /machine:IA64
-# ADD LINK32 Release/libdb43.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-
-!ELSEIF "$(CFG)" == "db_checkpoint - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /pdbtype:sept
-# ADD LINK32 Debug/libdb43d.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-
-!ELSEIF "$(CFG)" == "db_checkpoint - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Release_static/libdb43.lib /nologo /subsystem:console /machine:IA64
-# ADD LINK32 Release_static/libdb43s.lib /nologo /subsystem:console /machine:IA64
-
-!ELSEIF "$(CFG)" == "db_checkpoint - Win32 Debug Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Debug_static/libdb43d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /fixed:no
-# ADD LINK32 Debug_static/libdb43sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "db_checkpoint - Win32 Release"
-# Name "db_checkpoint - Win32 Debug"
-# Name "db_checkpoint - Win32 Release Static"
-# Name "db_checkpoint - Win32 Debug Static"
-# Begin Source File
-
-SOURCE=..\db_checkpoint\db_checkpoint.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\clib\getopt.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win64/db_config.h b/db/build_win64/db_config.h
deleted file mode 100644
index 1e4ea1c8c..000000000
--- a/db/build_win64/db_config.h
+++ /dev/null
@@ -1,443 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_win32. */
-/* Define to 1 if you want to build a version for running the test suite. */
-/* #undef CONFIG_TEST */
-
-/* We use DB_WIN32 much as one would use _WIN32 -- to specify that we're using
- an operating system environment that supports Win32 calls and semantics. We
- don't use _WIN32 because Cygwin/GCC also defines _WIN32, even though
- Cygwin/GCC closely emulates the Unix environment. */
-#define DB_WIN32 1
-
-/* Define to 1 if you want a debugging version. */
-/* #undef DEBUG */
-#if defined(_DEBUG)
-#if !defined(DEBUG)
-#define DEBUG 1
-#endif
-#endif
-
-/* Define to 1 if you want a version that logs read operations. */
-/* #undef DEBUG_ROP */
-
-/* Define to 1 if you want a version that logs write operations. */
-/* #undef DEBUG_WOP */
-
-/* Define to 1 if you want a version with run-time diagnostic checking. */
-/* #undef DIAGNOSTIC */
-
-/* Define to 1 if you have the `clock_gettime' function. */
-/* #undef HAVE_CLOCK_GETTIME */
-
-/* Define to 1 if Berkeley DB release includes strong cryptography. */
-#ifndef HAVE_SMALLBUILD
-#define HAVE_CRYPTO 1
-#endif
-
-/* Define to 1 if you have the `directio' function. */
-/* #undef HAVE_DIRECTIO */
-
-/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
- */
-/* #undef HAVE_DIRENT_H */
-
-/* Define to 1 if you have the <dlfcn.h> header file. */
-/* #undef HAVE_DLFCN_H */
-
-/* Define to 1 if you have EXIT_SUCCESS/EXIT_FAILURE #defines. */
-#define HAVE_EXIT_SUCCESS 1
-
-/* Define to 1 if fcntl/F_SETFD denies child access to file descriptors. */
-/* #undef HAVE_FCNTL_F_SETFD */
-
-/* Define to 1 if you have the `fdatasync' function. */
-/* #undef HAVE_FDATASYNC */
-
-/* Define to 1 if allocated filesystem blocks are not zeroed. */
-#define HAVE_FILESYSTEM_NOTZERO 1
-
-/* Define to 1 if you have the `ftruncate' function. */
-#define HAVE_FTRUNCATE 1
-
-/* Define to 1 if you have the `getcwd' function. */
-#define HAVE_GETCWD 1
-
-/* Define to 1 if you have the `getopt' function. */
-/* #undef HAVE_GETOPT */
-
-/* Define to 1 if you have the `getrusage' function. */
-/* #undef HAVE_GETRUSAGE */
-
-/* Define to 1 if you have the `gettimeofday' function. */
-/* #undef HAVE_GETTIMEOFDAY */
-
-/* Define to 1 if you have the `getuid' function. */
-/* #undef HAVE_GETUID */
-
-/* Define to 1 if building Hash access method. */
-#ifndef HAVE_SMALLBUILD
-#define HAVE_HASH 1
-#endif
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-/* #undef HAVE_INTTYPES_H */
-
-/* Define to 1 if you have the `nsl' library (-lnsl). */
-/* #undef HAVE_LIBNSL */
-
-/* Define to 1 if the system has the type `long long'. */
-#define HAVE_LONG_LONG 1
-
-/* Define to 1 if you have the `memcmp' function. */
-#define HAVE_MEMCMP 1
-
-/* Define to 1 if you have the `memcpy' function. */
-#define HAVE_MEMCPY 1
-
-/* Define to 1 if you have the `memmove' function. */
-#define HAVE_MEMMOVE 1
-
-/* Define to 1 if you have the <memory.h> header file. */
-#define HAVE_MEMORY_H 1
-
-/* Define to 1 if you have the `mlock' function. */
-/* #undef HAVE_MLOCK */
-
-/* Define to 1 if you have the `mmap' function. */
-/* #undef HAVE_MMAP */
-
-/* Define to 1 if you have the `munlock' function. */
-/* #undef HAVE_MUNLOCK */
-
-/* Define to 1 if you have the `munmap' function. */
-/* #undef HAVE_MUNMAP */
-
-/* Define to 1 to use the GCC compiler and 68K assembly language mutexes. */
-/* #undef HAVE_MUTEX_68K_GCC_ASSEMBLY */
-
-/* Define to 1 to use the AIX _check_lock mutexes. */
-/* #undef HAVE_MUTEX_AIX_CHECK_LOCK */
-
-/* Define to 1 to use the GCC compiler and Alpha assembly language mutexes. */
-/* #undef HAVE_MUTEX_ALPHA_GCC_ASSEMBLY */
-
-/* Define to 1 to use the GCC compiler and ARM assembly language mutexes. */
-/* #undef HAVE_MUTEX_ARM_GCC_ASSEMBLY */
-
-/* Define to 1 to use the Apple/Darwin _spin_lock_try mutexes. */
-/* #undef HAVE_MUTEX_DARWIN_SPIN_LOCK_TRY */
-
-/* Define to 1 to use the UNIX fcntl system call mutexes. */
-/* #undef HAVE_MUTEX_FCNTL */
-
-/* Define to 1 to use the GCC compiler and PaRisc assembly language mutexes.
- */
-/* #undef HAVE_MUTEX_HPPA_GCC_ASSEMBLY */
-
-/* Define to 1 to use the msem_XXX mutexes on HP-UX. */
-/* #undef HAVE_MUTEX_HPPA_MSEM_INIT */
-
-/* Define to 1 to use the GCC compiler and IA64 assembly language mutexes. */
-/* #undef HAVE_MUTEX_IA64_GCC_ASSEMBLY */
-
-/* Define to 1 to use the msem_XXX mutexes on systems other than HP-UX. */
-/* #undef HAVE_MUTEX_MSEM_INIT */
-
-/* Define to 1 to use the GCC compiler and PowerPC assembly language mutexes.
- */
-/* #undef HAVE_MUTEX_PPC_GCC_ASSEMBLY */
-
-/* Define to 1 to use POSIX 1003.1 pthread_XXX mutexes. */
-/* #undef HAVE_MUTEX_PTHREADS */
-
-/* Define to 1 to use Reliant UNIX initspin mutexes. */
-/* #undef HAVE_MUTEX_RELIANTUNIX_INITSPIN */
-
-/* Define to 1 to use the IBM C compiler and S/390 assembly language mutexes.
- */
-/* #undef HAVE_MUTEX_S390_CC_ASSEMBLY */
-
-/* Define to 1 to use the GCC compiler and S/390 assembly language mutexes. */
-/* #undef HAVE_MUTEX_S390_GCC_ASSEMBLY */
-
-/* Define to 1 to use the SCO compiler and x86 assembly language mutexes. */
-/* #undef HAVE_MUTEX_SCO_X86_CC_ASSEMBLY */
-
-/* Define to 1 to use the obsolete POSIX 1003.1 sema_XXX mutexes. */
-/* #undef HAVE_MUTEX_SEMA_INIT */
-
-/* Define to 1 to use the SGI XXX_lock mutexes. */
-/* #undef HAVE_MUTEX_SGI_INIT_LOCK */
-
-/* Define to 1 to use the Solaris _lock_XXX mutexes. */
-/* #undef HAVE_MUTEX_SOLARIS_LOCK_TRY */
-
-/* Define to 1 to use the Solaris lwp threads mutexes. */
-/* #undef HAVE_MUTEX_SOLARIS_LWP */
-
-/* Define to 1 to use the GCC compiler and Sparc assembly language mutexes. */
-/* #undef HAVE_MUTEX_SPARC_GCC_ASSEMBLY */
-
-/* Define to 1 if mutexes hold system resources. */
-/* #undef HAVE_MUTEX_SYSTEM_RESOURCES */
-
-/* Define to 1 if fast mutexes are available. */
-#define HAVE_MUTEX_THREADS 1
-
-/* Define to 1 to configure mutexes intra-process only. */
-/* #undef HAVE_MUTEX_THREAD_ONLY */
-
-/* Define to 1 to use the CC compiler and Tru64 assembly language mutexes. */
-/* #undef HAVE_MUTEX_TRU64_CC_ASSEMBLY */
-
-/* Define to 1 to use the UNIX International mutexes. */
-/* #undef HAVE_MUTEX_UI_THREADS */
-
-/* Define to 1 to use the UTS compiler and assembly language mutexes. */
-/* #undef HAVE_MUTEX_UTS_CC_ASSEMBLY */
-
-/* Define to 1 to use VMS mutexes. */
-/* #undef HAVE_MUTEX_VMS */
-
-/* Define to 1 to use VxWorks mutexes. */
-/* #undef HAVE_MUTEX_VXWORKS */
-
-/* Define to 1 to use the MSVC compiler and Windows mutexes. */
-#define HAVE_MUTEX_WIN32 1
-
-/* Define to 1 to use the GCC compiler and Windows mutexes. */
-/* #undef HAVE_MUTEX_WIN32_GCC */
-
-/* Define to 1 to use the GCC compiler and x86 assembly language mutexes. */
-/* #undef HAVE_MUTEX_X86_GCC_ASSEMBLY */
-
-/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
-/* #undef HAVE_NDIR_H */
-
-/* Define to 1 if you have the O_DIRECT flag. */
-/* #undef HAVE_O_DIRECT */
-
-/* Define to 1 if you have the `pread' function. */
-/* #undef HAVE_PREAD */
-
-/* Define to 1 if you have the `pstat_getdynamic' function. */
-/* #undef HAVE_PSTAT_GETDYNAMIC */
-
-/* Define to 1 if you have the `pwrite' function. */
-/* #undef HAVE_PWRITE */
-
-/* Define to 1 if building on QNX. */
-/* #undef HAVE_QNX */
-
-/* Define to 1 if building Queue access method. */
-#ifndef HAVE_SMALLBUILD
-#define HAVE_QUEUE 1
-#endif
-
-/* Define to 1 if you have the `raise' function. */
-#define HAVE_RAISE 1
-
-/* Define to 1 if you have the `rand' function. */
-#define HAVE_RAND 1
-
-/* Define to 1 if building replication support. */
-#ifndef HAVE_SMALLBUILD
-#define HAVE_REPLICATION 1
-#endif
-
-/* Define to 1 if building RPC client/server. */
-/* #undef HAVE_RPC */
-
-/* Define to 1 if you have the `sched_yield' function. */
-/* #undef HAVE_SCHED_YIELD */
-
-/* Define to 1 if you have the `select' function. */
-/* #undef HAVE_SELECT */
-
-/* Define to 1 if building sequence support. */
-#define HAVE_SEQUENCE 1
-
-/* Define to 1 if you have the `shmget' function. */
-/* #undef HAVE_SHMGET */
-
-/* Define to 1 if you have the `snprintf' function. */
-#define HAVE_SNPRINTF 1
-
-/* Define to 1 if you have the `srand' function. */
-#define HAVE_SRAND 1
-
-/* Define to 1 if building statistics support. */
-#define HAVE_STATISTICS 1
-
-/* Define to 1 if you have the <stdint.h> header file. */
-/* #undef HAVE_STDINT_H */
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#define HAVE_STDLIB_H 1
-
-/* Define to 1 if you have the `strcasecmp' function. */
-/* #undef HAVE_STRCASECMP */
-
-/* Define to 1 if you have the `strdup' function. */
-#define HAVE_STRDUP 1
-
-/* Define to 1 if you have the `strerror' function. */
-#define HAVE_STRERROR 1
-
-/* Define to 1 if you have the <strings.h> header file. */
-#define HAVE_STRINGS_H 1
-
-/* Define to 1 if you have the <string.h> header file. */
-#define HAVE_STRING_H 1
-
-/* Define to 1 if you have the `strtol' function. */
-#define HAVE_STRTOL 1
-
-/* Define to 1 if you have the `strtoul' function. */
-#define HAVE_STRTOUL 1
-
-/* Define to 1 if `st_blksize' is member of `struct stat'. */
-/* #undef HAVE_STRUCT_STAT_ST_BLKSIZE */
-
-/* Define to 1 if you have the `sysconf' function. */
-/* #undef HAVE_SYSCONF */
-
-/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
- */
-/* #undef HAVE_SYS_DIR_H */
-
-/* Define to 1 if you have the <sys/fcntl.h> header file. */
-#define HAVE_SYS_FCNTL_H 1
-
-/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
- */
-/* #undef HAVE_SYS_NDIR_H */
-
-/* Define to 1 if you have the <sys/select.h> header file. */
-/* #undef HAVE_SYS_SELECT_H */
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#define HAVE_SYS_STAT_H 1
-
-/* Define to 1 if you have the <sys/time.h> header file. */
-/* #undef HAVE_SYS_TIME_H */
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#define HAVE_SYS_TYPES_H 1
-
-/* Define to 1 if you have the <unistd.h> header file. */
-/* #undef HAVE_UNISTD_H */
-
-/* Define to 1 if unlink of file with open file descriptors will fail. */
-/* #undef HAVE_UNLINK_WITH_OPEN_FAILURE */
-
-/* Define to 1 if the system has the type `unsigned long long'. */
-#define HAVE_UNSIGNED_LONG_LONG 1
-
-/* Define to 1 if building access method verification support. */
-#ifndef HAVE_SMALLBUILD
-#define HAVE_VERIFY 1
-#endif
-
-/* Define to 1 if you have the `vsnprintf' function. */
-#define HAVE_VSNPRINTF 1
-
-/* Define to 1 if building VxWorks. */
-/* #undef HAVE_VXWORKS */
-
-/* Define to 1 if you have the `yield' function. */
-/* #undef HAVE_YIELD */
-
-/* Define to 1 if you have the `_fstati64' function. */
-#define HAVE__FSTATI64 1
-
-/* Define to a value if using non-standard mutex alignment. */
-/* #undef MUTEX_ALIGN */
-
-/* Define to the address where bug reports for this package should be sent. */
-#define PACKAGE_BUGREPORT "support@sleepycat.com"
-
-/* Define to the full name of this package. */
-#define PACKAGE_NAME "Berkeley DB"
-
-/* Define to the full name and version of this package. */
-#define PACKAGE_STRING "Berkeley DB 4.3.27"
-
-/* Define to the one symbol short name of this package. */
-#define PACKAGE_TARNAME "db-4.3.27"
-
-/* Define to the version of this package. */
-#define PACKAGE_VERSION "4.3.27"
-
-/* Define to 1 if the `S_IS*' macros in <sys/stat.h> do not work properly. */
-/* #undef STAT_MACROS_BROKEN */
-
-/* Define to 1 if you have the ANSI C header files. */
-#define STDC_HEADERS 1
-
-/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
-/* #undef TIME_WITH_SYS_TIME */
-
-/* Define to 1 to mask harmless uninitialized memory read/writes. */
-/* #undef UMRW */
-
-/* Number of bits in a file offset, on hosts where this is settable. */
-/* #undef _FILE_OFFSET_BITS */
-
-/* Define for large files, on AIX-style hosts. */
-/* #undef _LARGE_FILES */
-
-/* Define to empty if `const' does not conform to ANSI C. */
-/* #undef const */
-
-/*
- * Exit success/failure macros.
- */
-#ifndef HAVE_EXIT_SUCCESS
-#define EXIT_FAILURE 1
-#define EXIT_SUCCESS 0
-#endif
-
-/*
- * Don't step on the namespace. Other libraries may have their own
- * implementations of these functions, we don't want to use their
- * implementations or force them to use ours based on the load order.
- */
-#ifndef HAVE_GETCWD
-#define getcwd __db_Cgetcwd
-#endif
-#ifndef HAVE_MEMCMP
-#define memcmp __db_Cmemcmp
-#endif
-#ifndef HAVE_MEMCPY
-#define memcpy __db_Cmemcpy
-#endif
-#ifndef HAVE_MEMMOVE
-#define memmove __db_Cmemmove
-#endif
-#ifndef HAVE_RAISE
-#define raise __db_Craise
-#endif
-#ifndef HAVE_SNPRINTF
-#define snprintf __db_Csnprintf
-#endif
-#ifndef HAVE_STRCASECMP
-#define strcasecmp __db_Cstrcasecmp
-#define strncasecmp __db_Cstrncasecmp
-#endif
-#ifndef HAVE_STRERROR
-#define strerror __db_Cstrerror
-#endif
-#ifndef HAVE_VSNPRINTF
-#define vsnprintf __db_Cvsnprintf
-#endif
-
-#include "win_db.h"
-
-/*
- * Microsoft's compiler _doesn't_ define __STDC__ unless you invoke it with
- * arguments turning OFF all vendor extensions. Even more unfortunately, if
- * we do that, it fails to parse windows.h!!!!! So, we define __STDC__ here,
- * after windows.h comes in. Note: the compiler knows we've defined it, and
- * starts enforcing strict ANSI compliance from this point on.
- */
-#define __STDC__ 1
diff --git a/db/build_win64/db_cxx.h b/db/build_win64/db_cxx.h
deleted file mode 100644
index abba7b635..000000000
--- a/db/build_win64/db_cxx.h
+++ /dev/null
@@ -1,1089 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_win32. */
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: db_cxx.in,v 11.147 2004/10/07 21:39:48 bostic Exp $
- */
-
-#ifndef _DB_CXX_H_
-#define _DB_CXX_H_
-//
-// C++ assumptions:
-//
-// To ensure portability to many platforms, both new and old, we make
-// few assumptions about the C++ compiler and library. For example,
-// we do not expect STL, templates or namespaces to be available. The
-// "newest" C++ feature used is exceptions, which are used liberally
-// to transmit error information. Even the use of exceptions can be
-// disabled at runtime, to do so, use the DB_CXX_NO_EXCEPTIONS flags
-// with the DbEnv or Db constructor.
-//
-// C++ naming conventions:
-//
-// - All top level class names start with Db.
-// - All class members start with lower case letter.
-// - All private data members are suffixed with underscore.
-// - Use underscores to divide names into multiple words.
-// - Simple data accessors are named with get_ or set_ prefix.
-// - All method names are taken from names of functions in the C
-// layer of db (usually by dropping a prefix like "db_").
-// These methods have the same argument types and order,
-// other than dropping the explicit arg that acts as "this".
-//
-// As a rule, each DbFoo object has exactly one underlying DB_FOO struct
-// (defined in db.h) associated with it. In some cases, we inherit directly
-// from the DB_FOO structure to make this relationship explicit. Often,
-// the underlying C layer allocates and deallocates these structures, so
-// there is no easy way to add any data to the DbFoo class. When you see
-// a comment about whether data is permitted to be added, this is what
-// is going on. Of course, if we need to add data to such C++ classes
-// in the future, we will arrange to have an indirect pointer to the
-// DB_FOO struct (as some of the classes already have).
-//
-
-////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////
-//
-// Forward declarations
-//
-
-#include <stdarg.h>
-
-#define HAVE_CXX_STDHEADERS 1
-#ifdef HAVE_CXX_STDHEADERS
-#include <iostream>
-#include <exception>
-#define __DB_STD(x) std::x
-#else
-#include <iostream.h>
-#include <exception.h>
-#define __DB_STD(x) x
-#endif
-
-#include "db.h"
-
-class Db; // forward
-class Dbc; // forward
-class DbEnv; // forward
-class DbInfo; // forward
-class DbLock; // forward
-class DbLogc; // forward
-class DbLsn; // forward
-class DbMpoolFile; // forward
-class DbPreplist; // forward
-class Dbt; // forward
-class DbTxn; // forward
-class DbLock; // forward
-class DbSequence; // forward
-class Dbt; // forward
-
-class DbMultipleIterator; // forward
-class DbMultipleKeyDataIterator; // forward
-class DbMultipleRecnoDataIterator; // forward
-class DbMultipleDataIterator; // forward
-
-class DbException; // forward
-class DbDeadlockException; // forward
-class DbLockNotGrantedException; // forward
-class DbMemoryException; // forward
-class DbRunRecoveryException; // forward
-
-////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////
-//
-// Turn off inappropriate compiler warnings
-//
-
-#ifdef _MSC_VER
-
-// These are level 4 warnings that are explicitly disabled.
-// With Visual C++, by default you do not see above level 3 unless
-// you use /W4. But we like to compile with the highest level
-// warnings to catch other errors.
-//
-// 4201: nameless struct/union
-// triggered by standard include file <winnt.h>
-//
-// 4514: unreferenced inline function has been removed
-// certain include files in MSVC define methods that are not called
-//
-#pragma warning(disable: 4201 4514)
-
-#endif
-
-////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////
-//
-// Mechanisms for declaring classes
-//
-
-//
-// Every class defined in this file has an _exported next to the class name.
-// This is needed for WinTel machines so that the class methods can
-// be exported or imported in a DLL as appropriate. Users of the DLL
-// use the define DB_USE_DLL. When the DLL is built, DB_CREATE_DLL
-// must be defined.
-//
-#if defined(_MSC_VER)
-
-# if defined(DB_CREATE_DLL)
-# define _exported __declspec(dllexport) // creator of dll
-# elif defined(DB_USE_DLL)
-# define _exported __declspec(dllimport) // user of dll
-# else
-# define _exported // static lib creator or user
-# endif
-
-#else /* _MSC_VER */
-
-# define _exported
-
-#endif /* _MSC_VER */
-
-// Some interfaces can be customized by allowing users to define
-// callback functions. For performance and logistical reasons, some
-// callback functions must be declared in extern "C" blocks. For others,
-// we allow you to declare the callbacks in C++ or C (or an extern "C"
-// block) as you wish. See the set methods for the callbacks for
-// the choices.
-//
-extern "C" {
- typedef void * (*db_malloc_fcn_type)
- (size_t);
- typedef void * (*db_realloc_fcn_type)
- (void *, size_t);
- typedef void (*db_free_fcn_type)
- (void *);
- typedef int (*bt_compare_fcn_type) /*C++ version available*/
- (DB *, const DBT *, const DBT *);
- typedef size_t (*bt_prefix_fcn_type) /*C++ version available*/
- (DB *, const DBT *, const DBT *);
- typedef int (*dup_compare_fcn_type) /*C++ version available*/
- (DB *, const DBT *, const DBT *);
- typedef u_int32_t (*h_hash_fcn_type) /*C++ version available*/
- (DB *, const void *, u_int32_t);
- typedef int (*pgin_fcn_type)
- (DB_ENV *dbenv, db_pgno_t pgno, void *pgaddr, DBT *pgcookie);
- typedef int (*pgout_fcn_type)
- (DB_ENV *dbenv, db_pgno_t pgno, void *pgaddr, DBT *pgcookie);
-}
-
-//
-// Represents a database table = a set of keys with associated values.
-//
-class _exported Db
-{
- friend class DbEnv;
-
-public:
- Db(DbEnv*, u_int32_t); // create a Db object, then call open()
- virtual ~Db(); // does *not* call close.
-
- // These methods exactly match those in the C interface.
- //
- virtual int associate(DbTxn *txn, Db *secondary,
- int (*callback)(Db *, const Dbt *, const Dbt *, Dbt *),
- u_int32_t flags);
- virtual int close(u_int32_t flags);
- virtual int cursor(DbTxn *txnid, Dbc **cursorp, u_int32_t flags);
- virtual int del(DbTxn *txnid, Dbt *key, u_int32_t flags);
- virtual void err(int, const char *, ...);
- virtual void errx(const char *, ...);
- virtual int fd(int *fdp);
- virtual int get(DbTxn *txnid, Dbt *key, Dbt *data, u_int32_t flags);
- virtual void *get_app_private() const;
- virtual int get_byteswapped(int *);
- virtual int get_dbname(const char **, const char **);
- virtual int get_open_flags(u_int32_t *);
- virtual int get_type(DBTYPE *);
- virtual int get_transactional();
- virtual int join(Dbc **curslist, Dbc **dbcp, u_int32_t flags);
- virtual int key_range(DbTxn *, Dbt *, DB_KEY_RANGE *, u_int32_t);
- virtual int open(DbTxn *txnid,
- const char *, const char *subname, DBTYPE, u_int32_t, int);
- virtual int pget(DbTxn *txnid, Dbt *key, Dbt *pkey, Dbt *data,
- u_int32_t flags);
- virtual int put(DbTxn *, Dbt *, Dbt *, u_int32_t);
- virtual int remove(const char *, const char *, u_int32_t);
- virtual int rename(const char *, const char *, const char *, u_int32_t);
- virtual int set_alloc(db_malloc_fcn_type, db_realloc_fcn_type,
- db_free_fcn_type);
- virtual void set_app_private(void *);
- virtual int set_append_recno(int (*)(Db *, Dbt *, db_recno_t));
- virtual int set_bt_compare(bt_compare_fcn_type); /*deprecated*/
- virtual int set_bt_compare(int (*)(Db *, const Dbt *, const Dbt *));
- virtual int set_bt_maxkey(u_int32_t);
- virtual int get_bt_minkey(u_int32_t *);
- virtual int set_bt_minkey(u_int32_t);
- virtual int set_bt_prefix(bt_prefix_fcn_type); /*deprecated*/
- virtual int set_bt_prefix(size_t (*)(Db *, const Dbt *, const Dbt *));
- virtual int get_cachesize(u_int32_t *, u_int32_t *, int *);
- virtual int set_cachesize(u_int32_t, u_int32_t, int);
- virtual int set_dup_compare(dup_compare_fcn_type); /*deprecated*/
- virtual int set_dup_compare(int (*)(Db *, const Dbt *, const Dbt *));
- virtual int get_encrypt_flags(u_int32_t *);
- virtual int set_encrypt(const char *, u_int32_t);
- virtual void set_errcall(
- void (*)(const DbEnv *, const char *, const char *));
- virtual void get_errfile(FILE **);
- virtual void set_errfile(FILE *);
- virtual void get_errpfx(const char **);
- virtual void set_errpfx(const char *);
- virtual int set_feedback(void (*)(Db *, int, int));
- virtual int get_flags(u_int32_t *);
- virtual int set_flags(u_int32_t);
- virtual int get_h_ffactor(u_int32_t *);
- virtual int set_h_ffactor(u_int32_t);
- virtual int set_h_hash(h_hash_fcn_type); /*deprecated*/
- virtual int set_h_hash(u_int32_t (*)(Db *, const void *, u_int32_t));
- virtual int get_h_nelem(u_int32_t *);
- virtual int set_h_nelem(u_int32_t);
- virtual int get_lorder(int *);
- virtual int set_lorder(int);
- virtual void set_msgcall(void (*)(const DbEnv *, const char *));
- virtual void get_msgfile(FILE **);
- virtual void set_msgfile(FILE *);
- virtual int get_pagesize(u_int32_t *);
- virtual int set_pagesize(u_int32_t);
- virtual int set_paniccall(void (*)(DbEnv *, int));
- virtual int get_re_delim(int *);
- virtual int set_re_delim(int);
- virtual int get_re_len(u_int32_t *);
- virtual int set_re_len(u_int32_t);
- virtual int get_re_pad(int *);
- virtual int set_re_pad(int);
- virtual int get_re_source(const char **);
- virtual int set_re_source(const char *);
- virtual int get_q_extentsize(u_int32_t *);
- virtual int set_q_extentsize(u_int32_t);
- virtual int stat(DbTxn *, void *sp, u_int32_t flags);
- virtual int stat_print(u_int32_t flags);
- virtual int sync(u_int32_t flags);
- virtual int truncate(DbTxn *, u_int32_t *, u_int32_t);
- virtual int upgrade(const char *name, u_int32_t flags);
- virtual int verify(const char *, const char *, __DB_STD(ostream) *,
- u_int32_t);
-
- // These additional methods are not in the C interface, and
- // are only available for C++.
- //
- virtual __DB_STD(ostream) *get_error_stream();
- virtual void set_error_stream(__DB_STD(ostream) *);
- virtual __DB_STD(ostream) *get_message_stream();
- virtual void set_message_stream(__DB_STD(ostream) *);
-
- virtual DbEnv *get_env();
- virtual DbMpoolFile *get_mpf();
-
- virtual DB *get_DB()
- {
- return imp_;
- }
-
- virtual const DB *get_const_DB() const
- {
- return imp_;
- }
-
- static Db* get_Db(DB *db)
- {
- return (Db *)db->api_internal;
- }
-
- static const Db* get_const_Db(const DB *db)
- {
- return (const Db *)db->api_internal;
- }
-
-private:
- // no copying
- Db(const Db &);
- Db &operator = (const Db &);
-
- void cleanup();
- int initialize();
- int error_policy();
-
- // instance data
- DB *imp_;
- DbEnv *env_;
- DbMpoolFile *mpf_;
- int construct_error_;
- u_int32_t flags_;
- u_int32_t construct_flags_;
-
-public:
- // These are public only because they need to be called
- // via C callback functions. They should never be used by
- // external users of this class.
- //
- int (*append_recno_callback_)(Db *, Dbt *, db_recno_t);
- int (*associate_callback_)(Db *, const Dbt *, const Dbt *, Dbt *);
- int (*bt_compare_callback_)(Db *, const Dbt *, const Dbt *);
- size_t (*bt_prefix_callback_)(Db *, const Dbt *, const Dbt *);
- int (*dup_compare_callback_)(Db *, const Dbt *, const Dbt *);
- void (*feedback_callback_)(Db *, int, int);
- u_int32_t (*h_hash_callback_)(Db *, const void *, u_int32_t);
-};
-
-//
-// Cursor
-//
-class _exported Dbc : protected DBC
-{
- friend class Db;
-
-public:
- int close();
- int count(db_recno_t *countp, u_int32_t flags);
- int del(u_int32_t flags);
- int dup(Dbc** cursorp, u_int32_t flags);
- int get(Dbt* key, Dbt *data, u_int32_t flags);
- int pget(Dbt* key, Dbt* pkey, Dbt *data, u_int32_t flags);
- int put(Dbt* key, Dbt *data, u_int32_t flags);
-
-private:
- // No data is permitted in this class (see comment at top)
-
- // Note: use Db::cursor() to get pointers to a Dbc,
- // and call Dbc::close() rather than delete to release them.
- //
- Dbc();
- ~Dbc();
-
- // no copying
- Dbc(const Dbc &);
- Dbc &operator = (const Dbc &);
-};
-
-//
-// Berkeley DB environment class. Provides functions for opening databases.
-// User of this library can use this class as a starting point for
-// developing a DB application - derive their application class from
-// this one, add application control logic.
-//
-// Note that if you use the default constructor, you must explicitly
-// call appinit() before any other db activity (e.g. opening files)
-//
-class _exported DbEnv
-{
- friend class Db;
- friend class DbLock;
- friend class DbMpoolFile;
-
-public:
- // After using this constructor, you can set any needed
- // parameters for the environment using the set_* methods.
- // Then call open() to finish initializing the environment
- // and attaching it to underlying files.
- //
- DbEnv(u_int32_t flags);
-
- virtual ~DbEnv();
-
- // These methods match those in the C interface.
- //
- virtual int close(u_int32_t);
- virtual int dbremove(DbTxn *txn, const char *name, const char *subdb,
- u_int32_t flags);
- virtual int dbrename(DbTxn *txn, const char *name, const char *subdb,
- const char *newname, u_int32_t flags);
- virtual void err(int, const char *, ...);
- virtual void errx(const char *, ...);
- virtual void *get_app_private() const;
- virtual int get_home(const char **);
- virtual int get_open_flags(u_int32_t *);
- virtual int open(const char *, u_int32_t, int);
- virtual int remove(const char *, u_int32_t);
- virtual int set_alloc(db_malloc_fcn_type, db_realloc_fcn_type,
- db_free_fcn_type);
- virtual void set_app_private(void *);
- virtual int get_cachesize(u_int32_t *, u_int32_t *, int *);
- virtual int set_cachesize(u_int32_t, u_int32_t, int);
- virtual int get_data_dirs(const char ***);
- virtual int set_data_dir(const char *);
- virtual int get_encrypt_flags(u_int32_t *);
- virtual int set_encrypt(const char *, u_int32_t);
- virtual void set_errcall(
- void (*)(const DbEnv *, const char *, const char *));
- virtual void get_errfile(FILE **);
- virtual void set_errfile(FILE *);
- virtual void get_errpfx(const char **);
- virtual void set_errpfx(const char *);
- virtual int get_flags(u_int32_t *);
- virtual int set_flags(u_int32_t, int);
- virtual int set_feedback(void (*)(DbEnv *, int, int));
- virtual int get_lg_bsize(u_int32_t *);
- virtual int set_lg_bsize(u_int32_t);
- virtual int get_lg_dir(const char **);
- virtual int set_lg_dir(const char *);
- virtual int get_lg_max(u_int32_t *);
- virtual int set_lg_max(u_int32_t);
- virtual int get_lg_regionmax(u_int32_t *);
- virtual int set_lg_regionmax(u_int32_t);
- virtual int get_lk_conflicts(const u_int8_t **, int *);
- virtual int set_lk_conflicts(u_int8_t *, int);
- virtual int get_lk_detect(u_int32_t *);
- virtual int set_lk_detect(u_int32_t);
- virtual int set_lk_max(u_int32_t);
- virtual int get_lk_max_lockers(u_int32_t *);
- virtual int set_lk_max_lockers(u_int32_t);
- virtual int get_lk_max_locks(u_int32_t *);
- virtual int set_lk_max_locks(u_int32_t);
- virtual int get_lk_max_objects(u_int32_t *);
- virtual int set_lk_max_objects(u_int32_t);
- virtual int get_mp_mmapsize(size_t *);
- virtual int set_mp_mmapsize(size_t);
- virtual void set_msgcall(void (*)(const DbEnv *, const char *));
- virtual void get_msgfile(FILE **);
- virtual void set_msgfile(FILE *);
- virtual int set_paniccall(void (*)(DbEnv *, int));
- virtual int set_rpc_server(void *, char *, long, long, u_int32_t);
- virtual int get_shm_key(long *);
- virtual int set_shm_key(long);
- virtual int get_timeout(db_timeout_t *, u_int32_t);
- virtual int set_timeout(db_timeout_t, u_int32_t);
- virtual int get_tmp_dir(const char **);
- virtual int set_tmp_dir(const char *);
- virtual int get_tas_spins(u_int32_t *);
- virtual int set_tas_spins(u_int32_t);
- virtual int get_tx_max(u_int32_t *);
- virtual int set_tx_max(u_int32_t);
- virtual int set_app_dispatch(int (*)(DbEnv *,
- Dbt *, DbLsn *, db_recops));
- virtual int get_tx_timestamp(time_t *);
- virtual int set_tx_timestamp(time_t *);
- virtual int get_verbose(u_int32_t which, int *);
- virtual int set_verbose(u_int32_t which, int);
-
- // Version information. A static method so it can be obtained anytime.
- //
- static char *version(int *major, int *minor, int *patch);
-
- // Convert DB errors to strings
- static char *strerror(int);
-
- // If an error is detected and the error call function
- // or stream is set, a message is dispatched or printed.
- // If a prefix is set, each message is prefixed.
- //
- // You can use set_errcall() or set_errfile() above to control
- // error functionality. Alternatively, you can call
- // set_error_stream() to force all errors to a C++ stream.
- // It is unwise to mix these approaches.
- //
- virtual __DB_STD(ostream) *get_error_stream();
- virtual void set_error_stream(__DB_STD(ostream) *);
- virtual __DB_STD(ostream) *get_message_stream();
- virtual void set_message_stream(__DB_STD(ostream) *);
-
- // used internally
- static void runtime_error(DbEnv *env, const char *caller, int err,
- int error_policy);
- static void runtime_error_dbt(DbEnv *env, const char *caller, Dbt *dbt,
- int error_policy);
- static void runtime_error_lock_get(DbEnv *env, const char *caller,
- int err, db_lockop_t op, db_lockmode_t mode,
- const Dbt *obj, DbLock lock, int index,
- int error_policy);
-
- // Lock functions
- //
- virtual int lock_detect(u_int32_t flags, u_int32_t atype, int *aborted);
- virtual int lock_get(u_int32_t locker, u_int32_t flags, const Dbt *obj,
- db_lockmode_t lock_mode, DbLock *lock);
- virtual int lock_id(u_int32_t *idp);
- virtual int lock_id_free(u_int32_t id);
- virtual int lock_put(DbLock *lock);
- virtual int lock_stat(DB_LOCK_STAT **statp, u_int32_t flags);
- virtual int lock_stat_print(u_int32_t flags);
- virtual int lock_vec(u_int32_t locker, u_int32_t flags,
- DB_LOCKREQ list[], int nlist, DB_LOCKREQ **elistp);
-
- // Log functions
- //
- virtual int log_archive(char **list[], u_int32_t flags);
- static int log_compare(const DbLsn *lsn0, const DbLsn *lsn1);
- virtual int log_cursor(DbLogc **cursorp, u_int32_t flags);
- virtual int log_file(DbLsn *lsn, char *namep, size_t len);
- virtual int log_flush(const DbLsn *lsn);
- virtual int log_put(DbLsn *lsn, const Dbt *data, u_int32_t flags);
-
- virtual int log_stat(DB_LOG_STAT **spp, u_int32_t flags);
- virtual int log_stat_print(u_int32_t flags);
-
- // Mpool functions
- //
- virtual int memp_fcreate(DbMpoolFile **dbmfp, u_int32_t flags);
- virtual int memp_register(int ftype,
- pgin_fcn_type pgin_fcn,
- pgout_fcn_type pgout_fcn);
- virtual int memp_stat(DB_MPOOL_STAT
- **gsp, DB_MPOOL_FSTAT ***fsp, u_int32_t flags);
- virtual int memp_stat_print(u_int32_t flags);
- virtual int memp_sync(DbLsn *lsn);
- virtual int memp_trickle(int pct, int *nwrotep);
-
- // Transaction functions
- //
- virtual int txn_begin(DbTxn *pid, DbTxn **tid, u_int32_t flags);
- virtual int txn_checkpoint(u_int32_t kbyte, u_int32_t min,
- u_int32_t flags);
- virtual int txn_recover(DbPreplist *preplist, long count,
- long *retp, u_int32_t flags);
- virtual int txn_stat(DB_TXN_STAT **statp, u_int32_t flags);
- virtual int txn_stat_print(u_int32_t flags);
-
- // Replication functions
- //
- virtual int rep_elect(int, int, int, u_int32_t, int *, u_int32_t);
- virtual int rep_process_message(Dbt *, Dbt *, int *, DbLsn *);
- virtual int rep_start(Dbt *, u_int32_t);
- virtual int rep_stat(DB_REP_STAT **statp, u_int32_t flags);
- virtual int rep_stat_print(u_int32_t flags);
- virtual int get_rep_limit(u_int32_t *, u_int32_t *);
- virtual int set_rep_limit(u_int32_t, u_int32_t);
- virtual int set_rep_transport(int, int (*)(DbEnv *,
- const Dbt *, const Dbt *, const DbLsn *, int, u_int32_t));
-
- // Conversion functions
- //
- virtual DB_ENV *get_DB_ENV()
- {
- return imp_;
- }
-
- virtual const DB_ENV *get_const_DB_ENV() const
- {
- return imp_;
- }
-
- static DbEnv* get_DbEnv(DB_ENV *dbenv)
- {
- return dbenv ? (DbEnv *)dbenv->api1_internal : 0;
- }
-
- static const DbEnv* get_const_DbEnv(const DB_ENV *dbenv)
- {
- return dbenv ? (const DbEnv *)dbenv->api1_internal : 0;
- }
-
- // For internal use only.
- static DbEnv* wrap_DB_ENV(DB_ENV *dbenv);
-
- // These are public only because they need to be called
- // via C functions. They should never be called by users
- // of this class.
- //
- static int _app_dispatch_intercept(DB_ENV *env, DBT *dbt, DB_LSN *lsn,
- db_recops op);
- static void _paniccall_intercept(DB_ENV *env, int errval);
- static void _feedback_intercept(DB_ENV *env, int opcode, int pct);
- static int _rep_send_intercept(DB_ENV *env,
- const DBT *cntrl, const DBT *data,
- const DB_LSN *lsn, int id,
- u_int32_t flags);
- static void _stream_error_function(const DB_ENV *env,
- const char *prefix,
- const char *message);
- static void _stream_message_function(const DB_ENV *env,
- const char *message);
-
-private:
- void cleanup();
- int initialize(DB_ENV *env);
- int error_policy();
-
- // For internal use only.
- DbEnv(DB_ENV *, u_int32_t flags);
-
- // no copying
- DbEnv(const DbEnv &);
- void operator = (const DbEnv &);
-
- // instance data
- DB_ENV *imp_;
- int construct_error_;
- u_int32_t construct_flags_;
- __DB_STD(ostream) *error_stream_;
- __DB_STD(ostream) *message_stream_;
-
- int (*app_dispatch_callback_)(DbEnv *, Dbt *, DbLsn *, db_recops);
- void (*error_callback_)(const DbEnv *, const char *, const char *);
- void (*feedback_callback_)(DbEnv *, int, int);
- void (*message_callback_)(const DbEnv *, const char *);
- void (*paniccall_callback_)(DbEnv *, int);
- int (*pgin_callback_)(DbEnv *dbenv, db_pgno_t pgno,
- void *pgaddr, Dbt *pgcookie);
- int (*pgout_callback_)(DbEnv *dbenv, db_pgno_t pgno,
- void *pgaddr, Dbt *pgcookie);
- int (*rep_send_callback_)(DbEnv *,
- const Dbt *, const Dbt *, const DbLsn *, int, u_int32_t);
-};
-
-//
-// Lock
-//
-class _exported DbLock
-{
- friend class DbEnv;
-
-public:
- DbLock();
- DbLock(const DbLock &);
- DbLock &operator = (const DbLock &);
-
-protected:
- // We can add data to this class if needed
- // since its contained class is not allocated by db.
- // (see comment at top)
-
- DbLock(DB_LOCK);
- DB_LOCK lock_;
-};
-
-//
-// Log cursor
-//
-class _exported DbLogc : protected DB_LOGC
-{
- friend class DbEnv;
-
-public:
- int close(u_int32_t _flags);
- int get(DbLsn *lsn, Dbt *data, u_int32_t _flags);
-
-private:
- // No data is permitted in this class (see comment at top)
-
- // Note: use Db::cursor() to get pointers to a Dbc,
- // and call Dbc::close() rather than delete to release them.
- //
- DbLogc();
- ~DbLogc();
-
- // no copying
- DbLogc(const Dbc &);
- DbLogc &operator = (const Dbc &);
-};
-
-//
-// Log sequence number
-//
-class _exported DbLsn : public DB_LSN
-{
- friend class DbEnv; // friendship needed to cast to base class
- friend class DbLogc; // friendship needed to cast to base class
-};
-
-//
-// Memory pool file
-//
-class _exported DbMpoolFile
-{
- friend class DbEnv;
- friend class Db;
-
-public:
- int close(u_int32_t flags);
- int get(db_pgno_t *pgnoaddr, u_int32_t flags, void *pagep);
- int open(const char *file, u_int32_t flags, int mode, size_t pagesize);
- int get_transactional(void);
- int put(void *pgaddr, u_int32_t flags);
- int set(void *pgaddr, u_int32_t flags);
- int get_clear_len(u_int32_t *len);
- int set_clear_len(u_int32_t len);
- int get_fileid(u_int8_t *fileid);
- int set_fileid(u_int8_t *fileid);
- int get_flags(u_int32_t *flagsp);
- int set_flags(u_int32_t flags, int onoff);
- int get_ftype(int *ftype);
- int set_ftype(int ftype);
- int get_lsn_offset(int32_t *offsetp);
- int set_lsn_offset(int32_t offset);
- int get_maxsize(u_int32_t *gbytes, u_int32_t *bytes);
- int set_maxsize(u_int32_t gbytes, u_int32_t bytes);
- int get_pgcookie(DBT *dbt);
- int set_pgcookie(DBT *dbt);
- int get_priority(DB_CACHE_PRIORITY *priorityp);
- int set_priority(DB_CACHE_PRIORITY priority);
- int sync();
-
- virtual DB_MPOOLFILE *get_DB_MPOOLFILE()
- {
- return imp_;
- }
-
- virtual const DB_MPOOLFILE *get_const_DB_MPOOLFILE() const
- {
- return imp_;
- }
-
-private:
- DB_MPOOLFILE *imp_;
-
- // We can add data to this class if needed
- // since it is implemented via a pointer.
- // (see comment at top)
-
- // Note: use DbEnv::memp_fcreate() to get pointers to a DbMpoolFile,
- // and call DbMpoolFile::close() rather than delete to release them.
- //
- DbMpoolFile();
-
- // Shut g++ up.
-protected:
- virtual ~DbMpoolFile();
-
-private:
- // no copying
- DbMpoolFile(const DbMpoolFile &);
- void operator = (const DbMpoolFile &);
-};
-
-//
-// This is filled in and returned by the DbEnv::txn_recover() method.
-//
-class _exported DbPreplist
-{
-public:
- DbTxn *txn;
- u_int8_t gid[DB_XIDDATASIZE];
-};
-
-//
-// A sequence record in a database
-//
-class _exported DbSequence
-{
-public:
- DbSequence(Db *db, u_int32_t flags);
- virtual ~DbSequence();
-
- int open(DbTxn *txnid, Dbt *key, u_int32_t flags);
- int initial_value(db_seq_t value);
- int close(u_int32_t flags);
- int remove(DbTxn *txnid, u_int32_t flags);
- int stat(DB_SEQUENCE_STAT **sp, u_int32_t flags);
- int stat_print(u_int32_t flags);
-
- int get(DbTxn *txnid, int32_t delta, db_seq_t *retp, u_int32_t flags);
- int get_cachesize(int32_t *sizep);
- int set_cachesize(int32_t size);
- int get_flags(u_int32_t *flagsp);
- int set_flags(u_int32_t flags);
- int get_range(db_seq_t *minp, db_seq_t *maxp);
- int set_range(db_seq_t min, db_seq_t max);
-
- Db *get_db();
- Dbt *get_key();
-
- virtual DB_SEQUENCE *get_DB_SEQUENCE()
- {
- return imp_;
- }
-
- virtual const DB_SEQUENCE *get_const_DB_SEQUENCE() const
- {
- return imp_;
- }
-
- static DbSequence* get_DbSequence(DB_SEQUENCE *seq)
- {
- return (DbSequence *)seq->api_internal;
- }
-
- static const DbSequence* get_const_DbSequence(const DB_SEQUENCE *seq)
- {
- return (const DbSequence *)seq->api_internal;
- }
-
- // For internal use only.
- static DbSequence* wrap_DB_SEQUENCE(DB_SEQUENCE *seq);
-
-private:
- DbSequence(DB_SEQUENCE *seq);
- // no copying
- DbSequence(const DbSequence &);
- DbSequence &operator = (const DbSequence &);
-
- DB_SEQUENCE *imp_;
- DBT key_;
-};
-
-//
-// Transaction
-//
-class _exported DbTxn
-{
- friend class DbEnv;
-
-public:
- int abort();
- int commit(u_int32_t flags);
- int discard(u_int32_t flags);
- u_int32_t id();
- int prepare(u_int8_t *gid);
- int set_timeout(db_timeout_t timeout, u_int32_t flags);
-
- virtual DB_TXN *get_DB_TXN()
- {
- return imp_;
- }
-
- virtual const DB_TXN *get_const_DB_TXN() const
- {
- return imp_;
- }
-
- static DbTxn* get_DbTxn(DB_TXN *txn)
- {
- return (DbTxn *)txn->api_internal;
- }
-
- static const DbTxn* get_const_DbTxn(const DB_TXN *txn)
- {
- return (const DbTxn *)txn->api_internal;
- }
-
- // For internal use only.
- static DbTxn* wrap_DB_TXN(DB_TXN *txn);
-
-private:
- DB_TXN *imp_;
-
- // We can add data to this class if needed
- // since it is implemented via a pointer.
- // (see comment at top)
-
- // Note: use DbEnv::txn_begin() to get pointers to a DbTxn,
- // and call DbTxn::abort() or DbTxn::commit rather than
- // delete to release them.
- //
- DbTxn();
- // For internal use only.
- DbTxn(DB_TXN *txn);
- virtual ~DbTxn();
-
- // no copying
- DbTxn(const DbTxn &);
- void operator = (const DbTxn &);
-};
-
-//
-// A chunk of data, maybe a key or value.
-//
-class _exported Dbt : private DBT
-{
- friend class Db;
- friend class Dbc;
- friend class DbEnv;
- friend class DbLogc;
- friend class DbSequence;
-
-public:
- // key/data
- void *get_data() const { return data; }
- void set_data(void *value) { data = value; }
-
- // key/data length
- u_int32_t get_size() const { return size; }
- void set_size(u_int32_t value) { size = value; }
-
- // RO: length of user buffer.
- u_int32_t get_ulen() const { return ulen; }
- void set_ulen(u_int32_t value) { ulen = value; }
-
- // RO: get/put record length.
- u_int32_t get_dlen() const { return dlen; }
- void set_dlen(u_int32_t value) { dlen = value; }
-
- // RO: get/put record offset.
- u_int32_t get_doff() const { return doff; }
- void set_doff(u_int32_t value) { doff = value; }
-
- // flags
- u_int32_t get_flags() const { return flags; }
- void set_flags(u_int32_t value) { flags = value; }
-
- // Conversion functions
- DBT *get_DBT() { return (DBT *)this; }
- const DBT *get_const_DBT() const { return (const DBT *)this; }
-
- static Dbt* get_Dbt(DBT *dbt) { return (Dbt *)dbt; }
- static const Dbt* get_const_Dbt(const DBT *dbt)
- { return (const Dbt *)dbt; }
-
- Dbt(void *data, u_int32_t size);
- Dbt();
- ~Dbt();
- Dbt(const Dbt &);
- Dbt &operator = (const Dbt &);
-
-private:
- // Note: no extra data appears in this class (other than
- // inherited from DBT) since we need DBT and Dbt objects
- // to have interchangable pointers.
- //
- // When subclassing this class, remember that callback
- // methods like bt_compare, bt_prefix, dup_compare may
- // internally manufacture DBT objects (which later are
- // cast to Dbt), so such callbacks might receive objects
- // not of your subclassed type.
-};
-
-////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////
-//
-// multiple key/data/reco iterator classes
-//
-
-// DbMultipleIterator is a shared private base class for the three types
-// of bulk-return Iterator; it should never be instantiated directly,
-// but it handles the functionality shared by its subclasses.
-class _exported DbMultipleIterator
-{
-public:
- DbMultipleIterator(const Dbt &dbt);
-protected:
- u_int8_t *data_;
- u_int32_t *p_;
-};
-
-class _exported DbMultipleKeyDataIterator : private DbMultipleIterator
-{
-public:
- DbMultipleKeyDataIterator(const Dbt &dbt) : DbMultipleIterator(dbt) {}
- bool next(Dbt &key, Dbt &data);
-};
-
-class _exported DbMultipleRecnoDataIterator : private DbMultipleIterator
-{
-public:
- DbMultipleRecnoDataIterator(const Dbt &dbt) : DbMultipleIterator(dbt) {}
- bool next(db_recno_t &recno, Dbt &data);
-};
-
-class _exported DbMultipleDataIterator : private DbMultipleIterator
-{
-public:
- DbMultipleDataIterator(const Dbt &dbt) : DbMultipleIterator(dbt) {}
- bool next(Dbt &data);
-};
-
-////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////
-//
-// Exception classes
-//
-
-// Almost any error in the DB library throws a DbException.
-// Every exception should be considered an abnormality
-// (e.g. bug, misuse of DB, file system error).
-//
-class _exported DbException : public __DB_STD(exception)
-{
-public:
- virtual ~DbException() throw();
- DbException(int err);
- DbException(const char *description);
- DbException(const char *description, int err);
- DbException(const char *prefix, const char *description, int err);
- int get_errno() const;
- virtual const char *what() const throw();
- DbEnv *get_env() const;
- void set_env(DbEnv *env);
-
- DbException(const DbException &);
- DbException &operator = (const DbException &);
-
-private:
- void describe(const char *prefix, const char *description);
-
- char *what_;
- int err_; // errno
- DbEnv *env_;
-};
-
-//
-// A specific sort of exception that occurs when
-// an operation is aborted to resolve a deadlock.
-//
-class _exported DbDeadlockException : public DbException
-{
-public:
- virtual ~DbDeadlockException() throw();
- DbDeadlockException(const char *description);
-
- DbDeadlockException(const DbDeadlockException &);
- DbDeadlockException &operator = (const DbDeadlockException &);
-};
-
-//
-// A specific sort of exception that occurs when
-// a lock is not granted, e.g. by lock_get or lock_vec.
-// Note that the Dbt is only live as long as the Dbt used
-// in the offending call.
-//
-class _exported DbLockNotGrantedException : public DbException
-{
-public:
- virtual ~DbLockNotGrantedException() throw();
- DbLockNotGrantedException(const char *prefix, db_lockop_t op,
- db_lockmode_t mode, const Dbt *obj, const DbLock lock, int index);
- DbLockNotGrantedException(const char *description);
-
- DbLockNotGrantedException(const DbLockNotGrantedException &);
- DbLockNotGrantedException &operator =
- (const DbLockNotGrantedException &);
-
- db_lockop_t get_op() const;
- db_lockmode_t get_mode() const;
- const Dbt* get_obj() const;
- DbLock *get_lock() const;
- int get_index() const;
-
-private:
- db_lockop_t op_;
- db_lockmode_t mode_;
- const Dbt *obj_;
- DbLock *lock_;
- int index_;
-};
-
-//
-// A specific sort of exception that occurs when
-// user declared memory is insufficient in a Dbt.
-//
-class _exported DbMemoryException : public DbException
-{
-public:
- virtual ~DbMemoryException() throw();
- DbMemoryException(Dbt *dbt);
- DbMemoryException(const char *prefix, Dbt *dbt);
-
- DbMemoryException(const DbMemoryException &);
- DbMemoryException &operator = (const DbMemoryException &);
-
- Dbt *get_dbt() const;
-private:
- Dbt *dbt_;
-};
-
-//
-// A specific sort of exception that occurs when
-// recovery is required before continuing DB activity.
-//
-class _exported DbRunRecoveryException : public DbException
-{
-public:
- virtual ~DbRunRecoveryException() throw();
- DbRunRecoveryException(const char *description);
-
- DbRunRecoveryException(const DbRunRecoveryException &);
- DbRunRecoveryException &operator = (const DbRunRecoveryException &);
-};
-#endif /* !_DB_CXX_H_ */
diff --git a/db/build_win64/db_deadlock.dsp b/db/build_win64/db_deadlock.dsp
deleted file mode 100644
index efd268610..000000000
--- a/db/build_win64/db_deadlock.dsp
+++ /dev/null
@@ -1,148 +0,0 @@
-# Microsoft Developer Studio Project File - Name="db_deadlock" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=db_deadlock - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "db_deadlock.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "db_deadlock.mak" CFG="db_deadlock - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "db_deadlock - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_deadlock - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_deadlock - Win32 Release Static" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_deadlock - Win32 Debug Static" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "db_deadlock - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /machine:IA64
-# ADD LINK32 Release/libdb43.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-
-!ELSEIF "$(CFG)" == "db_deadlock - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /pdbtype:sept
-# ADD LINK32 Debug/libdb43d.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-
-!ELSEIF "$(CFG)" == "db_deadlock - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Release_static/libdb43.lib /nologo /subsystem:console /machine:IA64
-# ADD LINK32 Release_static/libdb43s.lib /nologo /subsystem:console /machine:IA64
-
-!ELSEIF "$(CFG)" == "db_deadlock - Win32 Debug Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Debug_static/libdb43d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /fixed:no
-# ADD LINK32 Debug_static/libdb43sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "db_deadlock - Win32 Release"
-# Name "db_deadlock - Win32 Debug"
-# Name "db_deadlock - Win32 Release Static"
-# Name "db_deadlock - Win32 Debug Static"
-# Begin Source File
-
-SOURCE=..\db_deadlock\db_deadlock.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\clib\getopt.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win64/db_dll.dsp b/db/build_win64/db_dll.dsp
deleted file mode 100644
index af74213b2..000000000
--- a/db/build_win64/db_dll.dsp
+++ /dev/null
@@ -1,880 +0,0 @@
-# Microsoft Developer Studio Project File - Name="db_dll" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-
-CFG=db_dll - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "db_dll.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "db_dll.mak" CFG="db_dll - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "db_dll - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "db_dll - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-MTL=midl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "db_dll - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /Ob2 /I "." /I ".." /D "DB_CREATE_DLL" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c
-# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
-# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /machine:IA64
-# ADD LINK32 /nologo /base:"0x13000000" /subsystem:windows /dll /machine:IA64 /out:"Release/libdb43.dll"
-
-!ELSEIF "$(CFG)" == "db_dll - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 2
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "DB_CREATE_DLL" /D "CONFIG_TEST" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX"config.h" /FD /c
-# SUBTRACT CPP /Fr
-# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /debug /machine:IA64 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /base:"0x13000000" /subsystem:windows /dll /debug /machine:IA64 /out:"Debug/libdb43d.dll" /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "db_dll - Win32 Release"
-# Name "db_dll - Win32 Debug"
-# Begin Source File
-
-SOURCE=..\btree\bt_compare.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_conv.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_curadj.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_cursor.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_delete.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_open.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_put.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_rec.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_reclaim.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_recno.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_rsearch.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_search.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_split.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_upgrade.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_verify.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\btree_auto.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\build_win32\libdb.def
-# End Source File
-# Begin Source File
-
-SOURCE=..\build_win32\libdb.rc
-# End Source File
-# Begin Source File
-
-SOURCE=..\clib\strcasecmp.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\db_byteorder.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\db_err.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\db_getlong.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\db_idspace.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\db_log2.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\util_cache.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\util_log.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\util_sig.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\crypto\aes_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\crypto\crypto.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\crypto\mersenne\mt19937db.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\crypto\rijndael\rijndael-alg-fst.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\crypto\rijndael\rijndael-api-fst.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_db.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_dbc.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_dbt.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_env.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_except.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_lock.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_logc.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_mpool.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_multi.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_seq.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_txn.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\crdel_auto.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\crdel_rec.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_am.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_auto.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_cam.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_conv.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_dispatch.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_dup.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_iface.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_join.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_meta.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_open.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_overflow.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_ovfl_vrfy.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_pr.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_rec.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_reclaim.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_remove.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_rename.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_ret.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_setid.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_setlsn.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_stati.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_truncate.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_upg.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_upg_opd.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_vrfy.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_vrfyutil.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\dbm\dbm.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\dbreg\dbreg.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\dbreg\dbreg_auto.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\dbreg\dbreg_rec.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\dbreg\dbreg_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\dbreg\dbreg_util.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\env\db_salloc.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\env\db_shash.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\env\env_file.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\env\env_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\env\env_open.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\env\env_recover.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\env\env_region.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\env\env_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\fileops\fileops_auto.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\fileops\fop_basic.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\fileops\fop_rec.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\fileops\fop_util.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash_auto.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash_conv.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash_dup.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash_func.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash_meta.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash_open.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash_page.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash_rec.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash_reclaim.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash_upgrade.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash_verify.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hmac\hmac.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hmac\sha1.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hsearch\hsearch.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lock\lock.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lock\lock_deadlock.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lock\lock_id.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lock\lock_list.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lock\lock_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lock\lock_region.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lock\lock_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lock\lock_timer.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lock\lock_util.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\log\log.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\log\log_archive.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\log\log_compare.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\log\log_get.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\log\log_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\log\log_put.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\log\log_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_alloc.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_bh.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_fget.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_fmethod.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_fopen.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_fput.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_fset.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_region.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_register.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_sync.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_trickle.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mutex\mut_win32.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mutex\mutex.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os\os_alloc.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os\os_id.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os\os_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os\os_oflags.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os\os_region.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os\os_root.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os\os_rpath.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os\os_tmpdir.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_abs.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_clock.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_config.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_dir.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_errno.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_fid.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_fsync.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_handle.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_map.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_open.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_rename.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_rw.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_seek.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_sleep.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_spin.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_truncate.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_unlink.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\qam\qam.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\qam\qam_auto.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\qam\qam_conv.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\qam\qam_files.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\qam\qam_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\qam\qam_open.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\qam\qam_rec.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\qam\qam_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\qam\qam_upgrade.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\qam\qam_verify.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\rep\rep_auto.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\rep\rep_backup.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\rep\rep_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\rep\rep_record.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\rep\rep_region.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\rep\rep_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\rep\rep_util.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\sequence\seq_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\sequence\sequence.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\txn\txn.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\txn\txn_auto.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\txn\txn_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\txn\txn_rec.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\txn\txn_recover.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\txn\txn_region.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\txn\txn_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\txn\txn_util.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\xa\xa.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\xa\xa_db.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\xa\xa_map.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win64/db_dump.dsp b/db/build_win64/db_dump.dsp
deleted file mode 100644
index 9fc059677..000000000
--- a/db/build_win64/db_dump.dsp
+++ /dev/null
@@ -1,148 +0,0 @@
-# Microsoft Developer Studio Project File - Name="db_dump" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=db_dump - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "db_dump.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "db_dump.mak" CFG="db_dump - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "db_dump - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_dump - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_dump - Win32 Release Static" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_dump - Win32 Debug Static" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "db_dump - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /machine:IA64
-# ADD LINK32 Release/libdb43.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-
-!ELSEIF "$(CFG)" == "db_dump - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /pdbtype:sept
-# ADD LINK32 Debug/libdb43d.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-
-!ELSEIF "$(CFG)" == "db_dump - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Release_static/libdb43.lib /nologo /subsystem:console /machine:IA64
-# ADD LINK32 Release_static/libdb43s.lib /nologo /subsystem:console /machine:IA64
-
-!ELSEIF "$(CFG)" == "db_dump - Win32 Debug Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Debug_static/libdb43d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /fixed:no
-# ADD LINK32 Debug_static/libdb43sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "db_dump - Win32 Release"
-# Name "db_dump - Win32 Debug"
-# Name "db_dump - Win32 Release Static"
-# Name "db_dump - Win32 Debug Static"
-# Begin Source File
-
-SOURCE=..\db_dump\db_dump.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\clib\getopt.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win64/db_int.h b/db/build_win64/db_int.h
deleted file mode 100644
index 046e3de5a..000000000
--- a/db/build_win64/db_int.h
+++ /dev/null
@@ -1,592 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_win32. */
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1996-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: db_int.in,v 11.155 2004/10/28 16:07:38 ubell Exp $
- */
-
-#ifndef _DB_INTERNAL_H_
-#define _DB_INTERNAL_H_
-
-/*******************************************************
- * System includes, db.h, a few general DB includes. The DB includes are
- * here because it's OK if db_int.h includes queue structure declarations.
- *******************************************************/
-#ifndef NO_SYSTEM_INCLUDES
-#if defined(STDC_HEADERS) || defined(__cplusplus)
-#include <stdarg.h>
-#else
-#include <varargs.h>
-#endif
-#include <errno.h>
-#endif
-
-#include "db.h"
-
-#include "dbinc/queue.h"
-#include "dbinc/shqueue.h"
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-/*******************************************************
- * General purpose constants and macros.
- *******************************************************/
-#ifndef UINT16_MAX
-#define UINT16_MAX 65535 /* Maximum 16-bit unsigned. */
-#endif
-#ifndef UINT32_MAX
-#ifdef __STDC__
-#define UINT32_MAX 4294967295U /* Maximum 32-bit unsigned. */
-#else
-#define UINT32_MAX 0xffffffff /* Maximum 32-bit unsigned. */
-#endif
-#endif
-
-#if defined(HAVE_LONG_LONG) && defined(HAVE_UNSIGNED_LONG_LONG)
-#undef INT64_MAX
-#undef INT64_MIN
-#undef UINT64_MAX
-
-#ifdef DB_WIN32
-#define INT64_MAX _I64_MAX
-#define INT64_MIN _I64_MIN
-#define UINT64_MAX _UI64_MAX
-
-#define INT64_FMT "%l64d"
-#define UINT64_FMT "%l64u"
-#else
-/*
- * Override the system's 64-bit min/max constants. AIX's 32-bit compiler can
- * handle 64-bit values, but the system's constants don't include the LL/ULL
- * suffix, and so can't be compiled using the 32-bit compiler.
- */
-#define INT64_MAX 9223372036854775807LL
-#define INT64_MIN (-INT64_MAX-1)
-#define UINT64_MAX 18446744073709551615ULL
-
-#define INT64_FMT "%lld"
-#define UINT64_FMT "%llu"
-#endif /* DB_WIN32 */
-#endif /* HAVE_LONG_LONG && HAVE_UNSIGNED_LONG_LONG */
-
-#define MEGABYTE 1048576
-#define GIGABYTE 1073741824
-
-#define MS_PER_SEC 1000 /* Milliseconds in a second. */
-#define USEC_PER_MS 1000 /* Microseconds in a millisecond. */
-
-#define RECNO_OOB 0 /* Illegal record number. */
-
-/* Test for a power-of-two (tests true for zero, which doesn't matter here). */
-#define POWER_OF_TWO(x) (((x) & ((x) - 1)) == 0)
-
-/* Test for valid page sizes. */
-#define DB_MIN_PGSIZE 0x000200 /* Minimum page size (512). */
-#define DB_MAX_PGSIZE 0x010000 /* Maximum page size (65536). */
-#define IS_VALID_PAGESIZE(x) \
- (POWER_OF_TWO(x) && (x) >= DB_MIN_PGSIZE && ((x) <= DB_MAX_PGSIZE))
-
-/* Minimum number of pages cached, by default. */
-#define DB_MINPAGECACHE 16
-
-/*
- * If we are unable to determine the underlying filesystem block size, use
- * 8K on the grounds that most OS's use less than 8K for a VM page size.
- */
-#define DB_DEF_IOSIZE (8 * 1024)
-
-/* Align an integer to a specific boundary. */
-#undef DB_ALIGN
-#define DB_ALIGN(v, bound) \
- (((v) + (bound) - 1) & ~(((uintmax_t)bound) - 1))
-
-/* Increment a pointer to a specific boundary. */
-#undef ALIGNP_INC
-#define ALIGNP_INC(p, bound) \
- (void *)(((uintptr_t)(p) + (bound) - 1) & ~(((uintptr_t)bound) - 1))
-
-/* Decrement a pointer to a specific boundary. */
-#undef ALIGNP_DEC
-#define ALIGNP_DEC(p, bound) \
- (void *)((uintptr_t)(p) & ~(((uintptr_t)bound) - 1))
-
-/*
- * Print an address as a u_long (a u_long is the largest type we can print
- * portably). Most 64-bit systems have made longs 64-bits, so this should
- * work.
- */
-#define P_TO_ULONG(p) ((u_long)(uintptr_t)(p))
-
-/*
- * Convert a pointer to a small integral value.
- *
- * The (u_int16_t)(uintptr_t) cast avoids warnings: the (uintptr_t) cast
- * converts the value to an integral type, and the (u_int16_t) cast converts
- * it to a small integral type so we don't get complaints when we assign the
- * final result to an integral type smaller than uintptr_t.
- */
-#define P_TO_UINT32(p) ((u_int32_t)(uintptr_t)(p))
-#define P_TO_UINT16(p) ((u_int16_t)(uintptr_t)(p))
-
-/*
- * There are several on-page structures that are declared to have a number of
- * fields followed by a variable length array of items. The structure size
- * without including the variable length array or the address of the first of
- * those elements can be found using SSZ.
- *
- * This macro can also be used to find the offset of a structure element in a
- * structure. This is used in various places to copy structure elements from
- * unaligned memory references, e.g., pointers into a packed page.
- *
- * There are two versions because compilers object if you take the address of
- * an array.
- */
-#undef SSZ
-#define SSZ(name, field) P_TO_UINT16(&(((name *)0)->field))
-
-#undef SSZA
-#define SSZA(name, field) P_TO_UINT16(&(((name *)0)->field[0]))
-
-/* Structure used to print flag values. */
-typedef struct __fn {
- u_int32_t mask; /* Flag value. */
- const char *name; /* Flag name. */
-} FN;
-
-/* Set, clear and test flags. */
-#define FLD_CLR(fld, f) (fld) &= ~(f)
-#define FLD_ISSET(fld, f) ((fld) & (f))
-#define FLD_SET(fld, f) (fld) |= (f)
-#define F_CLR(p, f) (p)->flags &= ~(f)
-#define F_ISSET(p, f) ((p)->flags & (f))
-#define F_SET(p, f) (p)->flags |= (f)
-#define LF_CLR(f) ((flags) &= ~(f))
-#define LF_ISSET(f) ((flags) & (f))
-#define LF_SET(f) ((flags) |= (f))
-
-/*
- * Calculate a percentage. The values can overflow 32-bit integer arithmetic
- * so we use floating point.
- *
- * When calculating a bytes-vs-page size percentage, we're getting the inverse
- * of the percentage in all cases, that is, we want 100 minus the percentage we
- * calculate.
- */
-#define DB_PCT(v, total) \
- ((int)((total) == 0 ? 0 : ((double)(v) * 100) / (total)))
-#define DB_PCT_PG(v, total, pgsize) \
- ((int)((total) == 0 ? 0 : \
- 100 - ((double)(v) * 100) / ((total) * (pgsize))))
-
-/*
- * Structure used for callback message aggregation.
- *
- * Display values in XXX_stat_print calls.
- */
-typedef struct __db_msgbuf {
- char *buf; /* Heap allocated buffer. */
- char *cur; /* Current end of message. */
- size_t len; /* Allocated length of buffer. */
-} DB_MSGBUF;
-#define DB_MSGBUF_INIT(a) do { \
- (a)->buf = (a)->cur = NULL; \
- (a)->len = 0; \
-} while (0)
-#define DB_MSGBUF_FLUSH(dbenv, a) do { \
- if ((a)->buf != NULL) { \
- if ((a)->cur != (a)->buf) \
- __db_msg(dbenv, "%s", (a)->buf); \
- __os_free(dbenv, (a)->buf); \
- DB_MSGBUF_INIT(a); \
- } \
-} while (0)
-#define STAT_FMT(msg, fmt, type, v) do { \
- DB_MSGBUF __mb; \
- DB_MSGBUF_INIT(&__mb); \
- __db_msgadd(dbenv, &__mb, fmt, (type)(v)); \
- __db_msgadd(dbenv, &__mb, "\t%s", msg); \
- DB_MSGBUF_FLUSH(dbenv, &__mb); \
-} while (0)
-#define STAT_HEX(msg, v) \
- __db_msg(dbenv, "%#lx\t%s", (u_long)(v), msg)
-#define STAT_ISSET(msg, p) \
- __db_msg(dbenv, "%sSet\t%s", (p) == NULL ? "!" : " ", msg)
-#define STAT_LONG(msg, v) \
- __db_msg(dbenv, "%ld\t%s", (long)(v), msg)
-#define STAT_LSN(msg, lsnp) \
- __db_msg(dbenv, "%lu/%lu\t%s", \
- (u_long)(lsnp)->file, (u_long)(lsnp)->offset, msg)
-#define STAT_STRING(msg, p) do { \
- const char *__p = p; /* p may be a function call. */ \
- __db_msg(dbenv, "%s\t%s", __p == NULL ? "!Set" : __p, msg); \
-} while (0)
-#define STAT_ULONG(msg, v) \
- __db_msg(dbenv, "%lu\t%s", (u_long)(v), msg)
-
-/*******************************************************
- * API return values
- *******************************************************/
-/*
- * Return values that are OK for each different call. Most calls have a
- * standard 'return of 0 is only OK value', but some, like db->get have
- * DB_NOTFOUND as a return value, but it really isn't an error.
- */
-#define DB_RETOK_STD(ret) ((ret) == 0)
-#define DB_RETOK_DBCDEL(ret) ((ret) == 0 || (ret) == DB_KEYEMPTY || \
- (ret) == DB_NOTFOUND)
-#define DB_RETOK_DBCGET(ret) ((ret) == 0 || (ret) == DB_KEYEMPTY || \
- (ret) == DB_NOTFOUND)
-#define DB_RETOK_DBCPUT(ret) ((ret) == 0 || (ret) == DB_KEYEXIST || \
- (ret) == DB_NOTFOUND)
-#define DB_RETOK_DBDEL(ret) DB_RETOK_DBCDEL(ret)
-#define DB_RETOK_DBGET(ret) DB_RETOK_DBCGET(ret)
-#define DB_RETOK_DBPUT(ret) ((ret) == 0 || (ret) == DB_KEYEXIST)
-#define DB_RETOK_LGGET(ret) ((ret) == 0 || (ret) == DB_NOTFOUND)
-#define DB_RETOK_MPGET(ret) ((ret) == 0 || (ret) == DB_PAGE_NOTFOUND)
-#define DB_RETOK_REPPMSG(ret) ((ret) == 0 || \
- (ret) == DB_REP_ISPERM || \
- (ret) == DB_REP_NEWMASTER || \
- (ret) == DB_REP_NEWSITE || \
- (ret) == DB_REP_NOTPERM || \
- (ret) == DB_REP_STARTUPDONE)
-
-/* Find a reasonable operation-not-supported error. */
-#ifdef EOPNOTSUPP
-#define DB_OPNOTSUP EOPNOTSUPP
-#else
-#ifdef ENOTSUP
-#define DB_OPNOTSUP ENOTSUP
-#else
-#define DB_OPNOTSUP EINVAL
-#endif
-#endif
-
-/*******************************************************
- * Files.
- *******************************************************/
-/*
- * We use 1024 as the maximum path length. It's too hard to figure out what
- * the real path length is, as it was traditionally stored in <sys/param.h>,
- * and that file isn't always available.
- */
-#undef MAXPATHLEN
-#define MAXPATHLEN 1024
-
-#define PATH_DOT "." /* Current working directory. */
- /* Path separator character(s). */
-#define PATH_SEPARATOR "\\/:"
-
-/*******************************************************
- * Environment.
- *******************************************************/
-/* Type passed to __db_appname(). */
-typedef enum {
- DB_APP_NONE=0, /* No type (region). */
- DB_APP_DATA, /* Data file. */
- DB_APP_LOG, /* Log file. */
- DB_APP_TMP /* Temporary file. */
-} APPNAME;
-
-/*
- * CDB_LOCKING CDB product locking.
- * CRYPTO_ON Security has been configured.
- * LOCKING_ON Locking has been configured.
- * LOGGING_ON Logging has been configured.
- * MPOOL_ON Memory pool has been configured.
- * REP_ON Replication has been configured.
- * RPC_ON RPC has been configured.
- * TXN_ON Transactions have been configured.
- */
-#define CDB_LOCKING(dbenv) F_ISSET(dbenv, DB_ENV_CDB)
-#define CRYPTO_ON(dbenv) ((dbenv)->crypto_handle != NULL)
-#define LOCKING_ON(dbenv) ((dbenv)->lk_handle != NULL)
-#define LOGGING_ON(dbenv) ((dbenv)->lg_handle != NULL)
-#define MPOOL_ON(dbenv) ((dbenv)->mp_handle != NULL)
-#define REP_ON(dbenv) ((dbenv)->rep_handle != NULL)
-#define RPC_ON(dbenv) ((dbenv)->cl_handle != NULL)
-#define TXN_ON(dbenv) ((dbenv)->tx_handle != NULL)
-
-/*
- * STD_LOCKING Standard locking, that is, locking was configured and CDB
- * was not. We do not do locking in off-page duplicate trees,
- * so we check for that in the cursor first.
- */
-#define STD_LOCKING(dbc) \
- (!F_ISSET(dbc, DBC_OPD) && \
- !CDB_LOCKING((dbc)->dbp->dbenv) && LOCKING_ON((dbc)->dbp->dbenv))
-
-/*
- * IS_RECOVERING: The system is running recovery.
- */
-#define IS_RECOVERING(dbenv) \
- (LOGGING_ON(dbenv) && \
- F_ISSET((DB_LOG *)(dbenv)->lg_handle, DBLOG_RECOVER))
-
-/* Initialization methods are often illegal before/after open is called. */
-#define ENV_ILLEGAL_AFTER_OPEN(dbenv, name) \
- if (F_ISSET((dbenv), DB_ENV_OPEN_CALLED)) \
- return (__db_mi_open(dbenv, name, 1));
-#define ENV_ILLEGAL_BEFORE_OPEN(dbenv, name) \
- if (!F_ISSET((dbenv), DB_ENV_OPEN_CALLED)) \
- return (__db_mi_open(dbenv, name, 0));
-
-/* We're not actually user hostile, honest. */
-#define ENV_REQUIRES_CONFIG(dbenv, handle, i, flags) \
- if (handle == NULL) \
- return (__db_env_config(dbenv, i, flags));
-#define ENV_NOT_CONFIGURED(dbenv, handle, i, flags) \
- if (F_ISSET((dbenv), DB_ENV_OPEN_CALLED)) \
- ENV_REQUIRES_CONFIG(dbenv, handle, i, flags)
-
-/*******************************************************
- * Database Access Methods.
- *******************************************************/
-/*
- * DB_IS_THREADED --
- * The database handle is free-threaded (was opened with DB_THREAD).
- */
-#define DB_IS_THREADED(dbp) \
- ((dbp)->mutexp != NULL)
-
-/* Initialization methods are often illegal before/after open is called. */
-#define DB_ILLEGAL_AFTER_OPEN(dbp, name) \
- if (F_ISSET((dbp), DB_AM_OPEN_CALLED)) \
- return (__db_mi_open((dbp)->dbenv, name, 1));
-#define DB_ILLEGAL_BEFORE_OPEN(dbp, name) \
- if (!F_ISSET((dbp), DB_AM_OPEN_CALLED)) \
- return (__db_mi_open((dbp)->dbenv, name, 0));
-/* Some initialization methods are illegal if environment isn't local. */
-#define DB_ILLEGAL_IN_ENV(dbp, name) \
- if (!F_ISSET((dbp)->dbenv, DB_ENV_DBLOCAL)) \
- return (__db_mi_env((dbp)->dbenv, name));
-#define DB_ILLEGAL_METHOD(dbp, flags) { \
- int __ret; \
- if ((__ret = __dbh_am_chk(dbp, flags)) != 0) \
- return (__ret); \
-}
-
-/*
- * Common DBC->internal fields. Each access method adds additional fields
- * to this list, but the initial fields are common.
- */
-#define __DBC_INTERNAL \
- DBC *opd; /* Off-page duplicate cursor. */\
- \
- void *page; /* Referenced page. */ \
- db_pgno_t root; /* Tree root. */ \
- db_pgno_t pgno; /* Referenced page number. */ \
- db_indx_t indx; /* Referenced key item index. */\
- \
- DB_LOCK lock; /* Cursor lock. */ \
- db_lockmode_t lock_mode; /* Lock mode. */
-
-struct __dbc_internal {
- __DBC_INTERNAL
-};
-
-/* Actions that __db_master_update can take. */
-typedef enum { MU_REMOVE, MU_RENAME, MU_OPEN } mu_action;
-
-/*
- * Access-method-common macro for determining whether a cursor
- * has been initialized.
- */
-#define IS_INITIALIZED(dbc) ((dbc)->internal->pgno != PGNO_INVALID)
-
-/* Free the callback-allocated buffer, if necessary, hanging off of a DBT. */
-#define FREE_IF_NEEDED(sdbp, dbt) \
- if (F_ISSET((dbt), DB_DBT_APPMALLOC)) { \
- __os_ufree((sdbp)->dbenv, (dbt)->data); \
- F_CLR((dbt), DB_DBT_APPMALLOC); \
- }
-
-/*
- * Use memory belonging to object "owner" to return the results of
- * any no-DBT-flag get ops on cursor "dbc".
- */
-#define SET_RET_MEM(dbc, owner) \
- do { \
- (dbc)->rskey = &(owner)->my_rskey; \
- (dbc)->rkey = &(owner)->my_rkey; \
- (dbc)->rdata = &(owner)->my_rdata; \
- } while (0)
-
-/* Use the return-data memory src is currently set to use in dest as well. */
-#define COPY_RET_MEM(src, dest) \
- do { \
- (dest)->rskey = (src)->rskey; \
- (dest)->rkey = (src)->rkey; \
- (dest)->rdata = (src)->rdata; \
- } while (0)
-
-/* Reset the returned-memory pointers to their defaults. */
-#define RESET_RET_MEM(dbc) \
- do { \
- (dbc)->rskey = &(dbc)->my_rskey; \
- (dbc)->rkey = &(dbc)->my_rkey; \
- (dbc)->rdata = &(dbc)->my_rdata; \
- } while (0)
-
-/*******************************************************
- * Mpool.
- *******************************************************/
-/*
- * File types for DB access methods. Negative numbers are reserved to DB.
- */
-#define DB_FTYPE_SET -1 /* Call pgin/pgout functions. */
-#define DB_FTYPE_NOTSET 0 /* Don't call... */
-
-/* Structure used as the DB pgin/pgout pgcookie. */
-typedef struct __dbpginfo {
- size_t db_pagesize; /* Underlying page size. */
- u_int32_t flags; /* Some DB_AM flags needed. */
- DBTYPE type; /* DB type */
-} DB_PGINFO;
-
-/*******************************************************
- * Log.
- *******************************************************/
-/* Initialize an LSN to 'zero'. */
-#define ZERO_LSN(LSN) do { \
- (LSN).file = 0; \
- (LSN).offset = 0; \
-} while (0)
-#define IS_ZERO_LSN(LSN) ((LSN).file == 0 && (LSN).offset == 0)
-
-#define IS_INIT_LSN(LSN) ((LSN).file == 1 && (LSN).offset == 0)
-#define INIT_LSN(LSN) do { \
- (LSN).file = 1; \
- (LSN).offset = 0; \
-} while (0)
-
-#define MAX_LSN(LSN) do { \
- (LSN).file = UINT32_MAX; \
- (LSN).offset = UINT32_MAX; \
-} while (0)
-#define IS_MAX_LSN(LSN) \
- ((LSN).file == UINT32_MAX && (LSN).offset == UINT32_MAX)
-
-/* If logging is turned off, smash the lsn. */
-#define LSN_NOT_LOGGED(LSN) do { \
- (LSN).file = 0; \
- (LSN).offset = 1; \
-} while (0)
-#define IS_NOT_LOGGED_LSN(LSN) \
- ((LSN).file == 0 && (LSN).offset == 1)
-
-/*******************************************************
- * Txn.
- *******************************************************/
-#define DB_NONBLOCK(C) ((C)->txn != NULL && F_ISSET((C)->txn, TXN_NOWAIT))
-#define NOWAIT_FLAG(txn) \
- ((txn) != NULL && F_ISSET((txn), TXN_NOWAIT) ? DB_LOCK_NOWAIT : 0)
-#define IS_SUBTRANSACTION(txn) \
- ((txn) != NULL && (txn)->parent != NULL)
-
-/*******************************************************
- * Crypto.
- *******************************************************/
-#define DB_IV_BYTES 16 /* Bytes per IV */
-#define DB_MAC_KEY 20 /* Bytes per MAC checksum */
-
-/*******************************************************
- * Secondaries over RPC.
- *******************************************************/
-#ifdef CONFIG_TEST
-/*
- * These are flags passed to DB->associate calls by the Tcl API if running
- * over RPC. The RPC server will mask out these flags before making the real
- * DB->associate call.
- *
- * These flags must coexist with the valid flags to DB->associate (currently
- * DB_AUTO_COMMIT and DB_CREATE). DB_AUTO_COMMIT is in the group of
- * high-order shared flags (0xff000000), and DB_CREATE is in the low-order
- * group (0x00000fff), so we pick a range in between.
- */
-#define DB_RPC2ND_MASK 0x00f00000 /* Reserved bits. */
-
-#define DB_RPC2ND_REVERSEDATA 0x00100000 /* callback_n(0) _s_reversedata. */
-#define DB_RPC2ND_NOOP 0x00200000 /* callback_n(1) _s_noop */
-#define DB_RPC2ND_CONCATKEYDATA 0x00300000 /* callback_n(2) _s_concatkeydata */
-#define DB_RPC2ND_CONCATDATAKEY 0x00400000 /* callback_n(3) _s_concatdatakey */
-#define DB_RPC2ND_REVERSECONCAT 0x00500000 /* callback_n(4) _s_reverseconcat */
-#define DB_RPC2ND_TRUNCDATA 0x00600000 /* callback_n(5) _s_truncdata */
-#define DB_RPC2ND_CONSTANT 0x00700000 /* callback_n(6) _s_constant */
-#define DB_RPC2ND_GETZIP 0x00800000 /* sj_getzip */
-#define DB_RPC2ND_GETNAME 0x00900000 /* sj_getname */
-#endif
-
-/*******************************************************
- * Forward structure declarations.
- *******************************************************/
-struct __db_reginfo_t; typedef struct __db_reginfo_t REGINFO;
-struct __db_txnhead; typedef struct __db_txnhead DB_TXNHEAD;
-struct __db_txnlist; typedef struct __db_txnlist DB_TXNLIST;
-struct __vrfy_childinfo; typedef struct __vrfy_childinfo VRFY_CHILDINFO;
-struct __vrfy_dbinfo; typedef struct __vrfy_dbinfo VRFY_DBINFO;
-struct __vrfy_pageinfo; typedef struct __vrfy_pageinfo VRFY_PAGEINFO;
-
-#if defined(__cplusplus)
-}
-#endif
-
-/*******************************************************
- * Remaining general DB includes.
- *******************************************************/
-
-
-#include "dbinc/globals.h"
-#include "dbinc/debug.h"
-#include "dbinc/mutex.h"
-#include "dbinc/region.h"
-#include "dbinc_auto/mutex_ext.h" /* XXX: Include after region.h. */
-#include "dbinc_auto/env_ext.h"
-#include "dbinc/os.h"
-#include "dbinc/rep.h"
-#include "dbinc_auto/clib_ext.h"
-#include "dbinc_auto/common_ext.h"
-
-/*******************************************************
- * Remaining Log.
- * These need to be defined after the general includes
- * because they need rep.h from above.
- *******************************************************/
-/*
- * Test if the environment is currently logging changes. If we're in recovery
- * or we're a replication client, we don't need to log changes because they're
- * already in the log, even though we have a fully functional log system.
- */
-#define DBENV_LOGGING(dbenv) \
- (LOGGING_ON(dbenv) && !IS_REP_CLIENT(dbenv) && \
- (!IS_RECOVERING(dbenv)))
-
-/*
- * Test if we need to log a change. By default, we don't log operations without
- * associated transactions, unless DIAGNOSTIC, DEBUG_ROP or DEBUG_WOP are on.
- * This is because we want to get log records for read/write operations, and, if
- * we trying to debug something, more information is always better.
- *
- * The DBC_RECOVER flag is set when we're in abort, as well as during recovery;
- * thus DBC_LOGGING may be false for a particular dbc even when DBENV_LOGGING
- * is true.
- *
- * We explicitly use LOGGING_ON/IS_REP_CLIENT here because we don't want to pull
- * in the log headers, which IS_RECOVERING (and thus DBENV_LOGGING) rely on, and
- * because DBC_RECOVER should be set anytime IS_RECOVERING would be true.
- */
-#if defined(DIAGNOSTIC) || defined(DEBUG_ROP) || defined(DEBUG_WOP)
-#define DBC_LOGGING(dbc) \
- (LOGGING_ON((dbc)->dbp->dbenv) && \
- !F_ISSET((dbc), DBC_RECOVER) && !IS_REP_CLIENT((dbc)->dbp->dbenv))
-#else
-#define DBC_LOGGING(dbc) \
- ((dbc)->txn != NULL && LOGGING_ON((dbc)->dbp->dbenv) && \
- !F_ISSET((dbc), DBC_RECOVER) && !IS_REP_CLIENT((dbc)->dbp->dbenv))
-#endif
-
-#endif /* !_DB_INTERNAL_H_ */
diff --git a/db/build_win64/db_java.dsp b/db/build_win64/db_java.dsp
deleted file mode 100644
index dcf152708..000000000
--- a/db/build_win64/db_java.dsp
+++ /dev/null
@@ -1,132 +0,0 @@
-# Microsoft Developer Studio Project File - Name="db_java" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-
-CFG=db_java - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "db_java.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "db_java.mak" CFG="db_java - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "db_java - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "db_java - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-MTL=midl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "db_java - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /Ob2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "DB_CREATE_DLL" /YX /FD /c
-# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
-# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /machine:IA64
-# ADD LINK32 Release/libdb43.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:IA64 /out:"Release/libdb_java43.dll"
-# Begin Custom Build - Compiling java files using javac
-ProjDir=.
-InputPath=.\Release\libdb_java43.dll
-SOURCE="$(InputPath)"
-
-"force_compilation.txt" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- echo compiling Berkeley DB classes
- mkdir "$(OUTDIR)\classes"
- javac -O -d "$(OUTDIR)\classes" -classpath "$(OUTDIR)/classes" ..\java\src\com\sleepycat\db\*.java ..\java\src\com\sleepycat\db\internal\*.java ..\java\src\com\sleepycat\bind\*.java ..\java\src\com\sleepycat\bind\serial\*.java ..\java\src\com\sleepycat\bind\tuple\*.java ..\java\src\com\sleepycat\collections\*.java ..\java\src\com\sleepycat\compat\*.java ..\java\src\com\sleepycat\util\*.java
- echo compiling examples
- mkdir "$(OUTDIR)\classes.ex"
- javac -O -d "$(OUTDIR)\classes.ex" -classpath "$(OUTDIR)\classes;$(OUTDIR)\classes.ex" ..\examples_java\src\com\sleepycat\examples\db\*.java ..\examples_java\src\com\sleepycat\examples\db\GettingStarted\*.java ..\examples_java\src\com\sleepycat\examples\collections\access\*.java ..\examples_java\src\com\sleepycat\examples\collections\hello\*.java ..\examples_java\src\com\sleepycat\examples\collections\ship\basic\*.java ..\examples_java\src\com\sleepycat\examples\collections\ship\entity\*.java ..\examples_java\src\com\sleepycat\examples\collections\ship\tuple\*.java ..\examples_java\src\com\sleepycat\examples\collections\ship\sentity\*.java ..\examples_java\src\com\sleepycat\examples\collections\ship\marshal\*.java ..\examples_java\src\com\sleepycat\examples\collections\ship\factory\*.java
- echo creating jar files
- jar cf "$(OUTDIR)\db.jar" -C "$(OUTDIR)\classes" .
- jar cf "$(OUTDIR)\dbexamples.jar" -C "$(OUTDIR)\classes.ex" .
- echo Java build finished
-
-# End Custom Build
-
-!ELSEIF "$(CFG)" == "db_java - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 2
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "DB_CREATE_DLL" /D "_WINDLL" /D "_AFXDLL" /YX"config.h" /FD /c
-# SUBTRACT CPP /Fr
-# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /debug /machine:IA64 /pdbtype:sept
-# ADD LINK32 Debug/libdb43d.lib /nologo /base:"0x13000000" /subsystem:windows /dll /debug /machine:IA64 /out:"Debug/libdb_java43d.dll" /fixed:no
-# Begin Custom Build - Compiling java files using javac
-ProjDir=.
-InputPath=.\Debug\libdb_java43d.dll
-SOURCE="$(InputPath)"
-
-"force_compilation.txt" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- echo compiling Berkeley DB classes
- mkdir "$(OUTDIR)\classes"
- javac -g -d "$(OUTDIR)\classes" -classpath "$(OUTDIR)/classes" ..\java\src\com\sleepycat\db\*.java ..\java\src\com\sleepycat\db\internal\*.java ..\java\src\com\sleepycat\bind\*.java ..\java\src\com\sleepycat\bind\serial\*.java ..\java\src\com\sleepycat\bind\tuple\*.java ..\java\src\com\sleepycat\collections\*.java ..\java\src\com\sleepycat\compat\*.java ..\java\src\com\sleepycat\util\*.java
- echo compiling examples
- mkdir "$(OUTDIR)\classes.ex"
- javac -g -d "$(OUTDIR)\classes.ex" -classpath "$(OUTDIR)\classes;$(OUTDIR)\classes.ex" ..\examples_java\src\com\sleepycat\examples\db\*.java ..\examples_java\src\com\sleepycat\examples\db\GettingStarted\*.java ..\examples_java\src\com\sleepycat\examples\collections\access\*.java ..\examples_java\src\com\sleepycat\examples\collections\hello\*.java ..\examples_java\src\com\sleepycat\examples\collections\ship\basic\*.java ..\examples_java\src\com\sleepycat\examples\collections\ship\entity\*.java ..\examples_java\src\com\sleepycat\examples\collections\ship\tuple\*.java ..\examples_java\src\com\sleepycat\examples\collections\ship\sentity\*.java ..\examples_java\src\com\sleepycat\examples\collections\ship\marshal\*.java ..\examples_java\src\com\sleepycat\examples\collections\ship\factory\*.java
- echo creating jar files
- jar cf "$(OUTDIR)\db.jar" -C "$(OUTDIR)\classes" .
- jar cf "$(OUTDIR)\dbexamples.jar" -C "$(OUTDIR)\classes.ex" .
- echo Java build finished
-
-# End Custom Build
-
-!ENDIF
-
-# Begin Target
-
-# Name "db_java - Win32 Release"
-# Name "db_java - Win32 Debug"
-# Begin Source File
-
-SOURCE=..\libdb_java\db_java_wrap.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win64/db_lib.dsp b/db/build_win64/db_lib.dsp
deleted file mode 100644
index a7fb41579..000000000
--- a/db/build_win64/db_lib.dsp
+++ /dev/null
@@ -1,92 +0,0 @@
-# Microsoft Developer Studio Project File - Name="db_lib" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Generic Project" 0x010a
-
-CFG=db_lib - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "db_lib.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "db_lib.mak" CFG="db_lib - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "db_lib - Win32 Release" (based on "Win32 (x86) Generic Project")
-!MESSAGE "db_lib - Win32 Debug" (based on "Win32 (x86) Generic Project")
-!MESSAGE "db_lib - Win32 Release Static" (based on "Win32 (x86) Generic Project")
-!MESSAGE "db_lib - Win32 Debug Static" (based on "Win32 (x86) Generic Project")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-
-!IF "$(CFG)" == "db_lib - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Target_Dir ""
-
-!ELSEIF "$(CFG)" == "db_lib - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Target_Dir ""
-
-!ELSEIF "$(CFG)" == "db_lib - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release_static"
-# PROP BASE Intermediate_Dir "Release_static"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Target_Dir ""
-
-!ELSEIF "$(CFG)" == "db_lib - Win32 Debug Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug_static"
-# PROP BASE Intermediate_Dir "Debug_Static"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_Static"
-# PROP Target_Dir ""
-
-!ENDIF
-
-# Begin Target
-
-# Name "db_lib - Win32 Release"
-# Name "db_lib - Win32 Debug"
-# Name "db_lib - Win32 Release Static"
-# Name "db_lib - Win32 Debug Static"
-# End Target
-# End Project
diff --git a/db/build_win64/db_load.dsp b/db/build_win64/db_load.dsp
deleted file mode 100644
index 71ae7a299..000000000
--- a/db/build_win64/db_load.dsp
+++ /dev/null
@@ -1,148 +0,0 @@
-# Microsoft Developer Studio Project File - Name="db_load" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=db_load - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "db_load.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "db_load.mak" CFG="db_load - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "db_load - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_load - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_load - Win32 Release Static" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_load - Win32 Debug Static" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "db_load - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /machine:IA64
-# ADD LINK32 Release/libdb43.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-
-!ELSEIF "$(CFG)" == "db_load - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /pdbtype:sept
-# ADD LINK32 Debug/libdb43d.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-
-!ELSEIF "$(CFG)" == "db_load - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Release_static/libdb43.lib /nologo /subsystem:console /machine:IA64
-# ADD LINK32 Release_static/libdb43s.lib /nologo /subsystem:console /machine:IA64
-
-!ELSEIF "$(CFG)" == "db_load - Win32 Debug Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Debug_static/libdb43d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /fixed:no
-# ADD LINK32 Debug_static/libdb43sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "db_load - Win32 Release"
-# Name "db_load - Win32 Debug"
-# Name "db_load - Win32 Release Static"
-# Name "db_load - Win32 Debug Static"
-# Begin Source File
-
-SOURCE=..\db_load\db_load.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\clib\getopt.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win64/db_perf.dsp b/db/build_win64/db_perf.dsp
deleted file mode 100644
index 93ce956fe..000000000
--- a/db/build_win64/db_perf.dsp
+++ /dev/null
@@ -1,224 +0,0 @@
-# Microsoft Developer Studio Project File - Name="db_perf" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=db_perf - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "db_perf.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "db_perf.mak" CFG="db_perf - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "db_perf - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_perf - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_perf - Win32 Release Static" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_perf - Win32 Debug Static" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "db_perf - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /machine:IA64
-# ADD LINK32 Release/libdb43.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-
-!ELSEIF "$(CFG)" == "db_perf - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /pdbtype:sept
-# ADD LINK32 Debug/libdb43d.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-
-!ELSEIF "$(CFG)" == "db_perf - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Release_static/libdb43.lib /nologo /subsystem:console /machine:IA64
-# ADD LINK32 Release_static/libdb43s.lib /nologo /subsystem:console /machine:IA64
-
-!ELSEIF "$(CFG)" == "db_perf - Win32 Debug Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Debug_static/libdb43d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /fixed:no
-# ADD LINK32 Debug_static/libdb43sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "db_perf - Win32 Release"
-# Name "db_perf - Win32 Debug"
-# Name "db_perf - Win32 Release Static"
-# Name "db_perf - Win32 Debug Static"
-# Begin Source File
-
-SOURCE=..\test_perf\db_perf.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\test_perf\perf_checkpoint.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\test_perf\perf_config.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\test_perf\perf_dbs.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\test_perf\perf_dead.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\test_perf\perf_debug.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\test_perf\perf_file.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\test_perf\perf_key.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\test_perf\perf_log.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\test_perf\perf_misc.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\test_perf\perf_op.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\test_perf\perf_parse.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\test_perf\perf_rand.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\test_perf\perf_spawn.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\test_perf\perf_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\test_perf\perf_sync.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\test_perf\perf_thread.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\test_perf\perf_trickle.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\test_perf\perf_txn.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\test_perf\perf_util.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\clib\getopt.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win64/db_printlog.dsp b/db/build_win64/db_printlog.dsp
deleted file mode 100644
index 5fb97bef5..000000000
--- a/db/build_win64/db_printlog.dsp
+++ /dev/null
@@ -1,184 +0,0 @@
-# Microsoft Developer Studio Project File - Name="db_printlog" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=db_printlog - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "db_printlog.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "db_printlog.mak" CFG="db_printlog - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "db_printlog - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_printlog - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_printlog - Win32 Release Static" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_printlog - Win32 Debug Static" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "db_printlog - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /machine:IA64
-# ADD LINK32 Release/libdb43.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-
-!ELSEIF "$(CFG)" == "db_printlog - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /pdbtype:sept
-# ADD LINK32 Debug/libdb43d.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-
-!ELSEIF "$(CFG)" == "db_printlog - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Release_static/libdb43.lib /nologo /subsystem:console /machine:IA64
-# ADD LINK32 Release_static/libdb43s.lib /nologo /subsystem:console /machine:IA64
-
-!ELSEIF "$(CFG)" == "db_printlog - Win32 Debug Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Debug_static/libdb43d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /fixed:no
-# ADD LINK32 Debug_static/libdb43sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "db_printlog - Win32 Release"
-# Name "db_printlog - Win32 Debug"
-# Name "db_printlog - Win32 Release Static"
-# Name "db_printlog - Win32 Debug Static"
-# Begin Source File
-
-SOURCE=..\btree\btree_autop.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\crdel_autop.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_autop.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db_printlog\db_printlog.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\dbreg\dbreg_autop.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\fileops\fileops_autop.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash_autop.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\qam\qam_autop.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\rep\rep_autop.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\txn\txn_autop.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\clib\getopt.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win64/db_recover.dsp b/db/build_win64/db_recover.dsp
deleted file mode 100644
index 039530fd6..000000000
--- a/db/build_win64/db_recover.dsp
+++ /dev/null
@@ -1,148 +0,0 @@
-# Microsoft Developer Studio Project File - Name="db_recover" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=db_recover - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "db_recover.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "db_recover.mak" CFG="db_recover - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "db_recover - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_recover - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_recover - Win32 Release Static" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_recover - Win32 Debug Static" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "db_recover - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /machine:IA64
-# ADD LINK32 Release/libdb43.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-
-!ELSEIF "$(CFG)" == "db_recover - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /pdbtype:sept
-# ADD LINK32 Debug/libdb43d.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-
-!ELSEIF "$(CFG)" == "db_recover - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Release_static/libdb43.lib /nologo /subsystem:console /machine:IA64
-# ADD LINK32 Release_static/libdb43s.lib /nologo /subsystem:console /machine:IA64
-
-!ELSEIF "$(CFG)" == "db_recover - Win32 Debug Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Debug_static/libdb43d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /fixed:no
-# ADD LINK32 Debug_static/libdb43sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "db_recover - Win32 Release"
-# Name "db_recover - Win32 Debug"
-# Name "db_recover - Win32 Release Static"
-# Name "db_recover - Win32 Debug Static"
-# Begin Source File
-
-SOURCE=..\db_recover\db_recover.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\clib\getopt.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win64/db_small.dsp b/db/build_win64/db_small.dsp
deleted file mode 100644
index f82b0b08f..000000000
--- a/db/build_win64/db_small.dsp
+++ /dev/null
@@ -1,720 +0,0 @@
-# Microsoft Developer Studio Project File - Name="db_small" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=db_small - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "db_small.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "db_small.mak" CFG="db_small - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "db_small - Win32 Release Static" (based on "Win32 (x86) Static Library")
-!MESSAGE "db_small - Win32 Debug Static" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "db_small - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release_small"
-# PROP BASE Intermediate_Dir "Release_small"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_small"
-# PROP Intermediate_Dir "Release_small"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "HAVE_SMALLBUILD" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX"config.h" /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "HAVE_SMALLBUILD" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX"config.h" /FD /c
-# ADD BASE RSC /l 0xc09
-# ADD RSC /l 0xc09
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"Release_small/libdb43s.lib"
-# ADD LIB32 /nologo /out:"Release_small/libdb43s.lib"
-
-!ELSEIF "$(CFG)" == "db_small - Win32 Debug Static"
-
-# PROP BASE Use_MFC 1
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug_small"
-# PROP BASE Intermediate_Dir "Debug_small"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 1
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_small"
-# PROP Intermediate_Dir "Debug_small"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "HAVE_SMALLBUILD" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX"config.h" /FD /c
-# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "HAVE_SMALLBUILD" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX"config.h" /FD /c
-# ADD BASE RSC /l 0xc09
-# ADD RSC /l 0xc09
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"Debug_small/libdb43sd.lib"
-# ADD LIB32 /nologo /out:"Debug_small/libdb43sd.lib"
-
-!ENDIF
-
-# Begin Target
-
-# Name "db_small - Win32 Release Static"
-# Name "db_small - Win32 Debug Static"
-# Begin Source File
-
-SOURCE=..\btree\bt_compare.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_conv.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_curadj.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_cursor.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_delete.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_open.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_put.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_rec.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_reclaim.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_recno.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_rsearch.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_search.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_split.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_upgrade.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\btree_auto.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\clib\strcasecmp.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\crypto_stub.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\db_byteorder.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\db_err.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\db_getlong.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\db_idspace.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\db_log2.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\util_cache.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\util_log.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\util_sig.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_db.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_dbc.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_dbt.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_env.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_except.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_lock.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_logc.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_mpool.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_multi.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_seq.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_txn.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\crdel_auto.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\crdel_rec.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_am.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_auto.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_cam.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_conv.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_dispatch.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_dup.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_iface.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_join.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_meta.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_open.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_overflow.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_pr.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_rec.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_reclaim.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_remove.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_rename.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_ret.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_setid.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_setlsn.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_stati.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_truncate.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_upg.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_upg_opd.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_vrfy_stub.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\dbreg\dbreg.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\dbreg\dbreg_auto.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\dbreg\dbreg_rec.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\dbreg\dbreg_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\dbreg\dbreg_util.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\env\db_salloc.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\env\db_shash.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\env\env_file.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\env\env_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\env\env_open.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\env\env_recover.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\env\env_region.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\env\env_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\fileops\fileops_auto.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\fileops\fop_basic.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\fileops\fop_rec.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\fileops\fop_util.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash_func.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash_stub.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hmac\hmac.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hmac\sha1.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lock\lock.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lock\lock_deadlock.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lock\lock_id.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lock\lock_list.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lock\lock_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lock\lock_region.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lock\lock_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lock\lock_timer.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lock\lock_util.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\log\log.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\log\log_archive.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\log\log_compare.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\log\log_get.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\log\log_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\log\log_put.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\log\log_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_alloc.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_bh.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_fget.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_fmethod.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_fopen.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_fput.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_fset.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_region.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_register.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_sync.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_trickle.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mutex\mut_win32.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mutex\mutex.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os\os_alloc.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os\os_id.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os\os_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os\os_oflags.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os\os_region.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os\os_root.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os\os_rpath.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os\os_tmpdir.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_abs.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_clock.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_config.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_dir.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_errno.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_fid.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_fsync.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_handle.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_map.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_open.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_rename.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_rw.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_seek.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_sleep.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_spin.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_truncate.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_unlink.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\qam\qam_stub.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\rep\rep_stub.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\sequence\seq_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\sequence\sequence.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\txn\txn.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\txn\txn_auto.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\txn\txn_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\txn\txn_rec.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\txn\txn_recover.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\txn\txn_region.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\txn\txn_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\txn\txn_util.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\xa\xa.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\xa\xa_db.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\xa\xa_map.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win64/db_stat.dsp b/db/build_win64/db_stat.dsp
deleted file mode 100644
index 8ff259572..000000000
--- a/db/build_win64/db_stat.dsp
+++ /dev/null
@@ -1,148 +0,0 @@
-# Microsoft Developer Studio Project File - Name="db_stat" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=db_stat - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "db_stat.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "db_stat.mak" CFG="db_stat - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "db_stat - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_stat - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_stat - Win32 Release Static" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_stat - Win32 Debug Static" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "db_stat - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /machine:IA64
-# ADD LINK32 Release/libdb43.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-
-!ELSEIF "$(CFG)" == "db_stat - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /pdbtype:sept
-# ADD LINK32 Debug/libdb43d.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-
-!ELSEIF "$(CFG)" == "db_stat - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Release_static/libdb43.lib /nologo /subsystem:console /machine:IA64
-# ADD LINK32 Release_static/libdb43s.lib /nologo /subsystem:console /machine:IA64
-
-!ELSEIF "$(CFG)" == "db_stat - Win32 Debug Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Debug_static/libdb43d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /fixed:no
-# ADD LINK32 Debug_static/libdb43sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "db_stat - Win32 Release"
-# Name "db_stat - Win32 Debug"
-# Name "db_stat - Win32 Release Static"
-# Name "db_stat - Win32 Debug Static"
-# Begin Source File
-
-SOURCE=..\db_stat\db_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\clib\getopt.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win64/db_static.dsp b/db/build_win64/db_static.dsp
deleted file mode 100644
index 063db5791..000000000
--- a/db/build_win64/db_static.dsp
+++ /dev/null
@@ -1,864 +0,0 @@
-# Microsoft Developer Studio Project File - Name="db_static" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=db_static - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "db_static.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "db_static.mak" CFG="db_static - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "db_static - Win32 Release Static" (based on "Win32 (x86) Static Library")
-!MESSAGE "db_static - Win32 Debug Static" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "db_static - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release_static"
-# PROP BASE Intermediate_Dir "Release_static"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX"config.h" /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX"config.h" /FD /c
-# ADD BASE RSC /l 0xc09
-# ADD RSC /l 0xc09
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"Release/libdb43s.lib"
-# ADD LIB32 /nologo /out:"Release_static/libdb43s.lib"
-
-!ELSEIF "$(CFG)" == "db_static - Win32 Debug Static"
-
-# PROP BASE Use_MFC 1
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug_static"
-# PROP BASE Intermediate_Dir "Debug_static"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 1
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_static"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "CONFIG_TEST" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX"config.h" /FD /c
-# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "CONFIG_TEST" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX"config.h" /FD /c
-# ADD BASE RSC /l 0xc09
-# ADD RSC /l 0xc09
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"Debug/libdb43sd.lib"
-# ADD LIB32 /nologo /out:"Debug_static/libdb43sd.lib"
-
-!ENDIF
-
-# Begin Target
-
-# Name "db_static - Win32 Release Static"
-# Name "db_static - Win32 Debug Static"
-# Begin Source File
-
-SOURCE=..\btree\bt_compare.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_conv.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_curadj.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_cursor.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_delete.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_open.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_put.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_rec.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_reclaim.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_recno.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_rsearch.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_search.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_split.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_upgrade.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\bt_verify.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\btree\btree_auto.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\clib\strcasecmp.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\db_byteorder.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\db_err.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\db_getlong.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\db_idspace.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\db_log2.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\util_cache.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\util_log.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\util_sig.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\crypto\aes_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\crypto\crypto.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\crypto\mersenne\mt19937db.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\crypto\rijndael\rijndael-alg-fst.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\crypto\rijndael\rijndael-api-fst.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_db.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_dbc.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_dbt.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_env.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_except.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_lock.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_logc.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_mpool.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_multi.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_seq.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\cxx\cxx_txn.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\crdel_auto.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\crdel_rec.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_am.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_auto.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_cam.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_conv.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_dispatch.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_dup.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_iface.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_join.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_meta.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_open.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_overflow.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_ovfl_vrfy.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_pr.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_rec.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_reclaim.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_remove.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_rename.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_ret.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_setid.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_setlsn.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_stati.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_truncate.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_upg.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_upg_opd.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_vrfy.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\db\db_vrfyutil.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\dbm\dbm.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\dbreg\dbreg.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\dbreg\dbreg_auto.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\dbreg\dbreg_rec.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\dbreg\dbreg_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\dbreg\dbreg_util.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\env\db_salloc.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\env\db_shash.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\env\env_file.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\env\env_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\env\env_open.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\env\env_recover.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\env\env_region.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\env\env_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\fileops\fileops_auto.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\fileops\fop_basic.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\fileops\fop_rec.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\fileops\fop_util.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash_auto.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash_conv.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash_dup.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash_func.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash_meta.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash_open.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash_page.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash_rec.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash_reclaim.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash_upgrade.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hash\hash_verify.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hmac\hmac.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hmac\sha1.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\hsearch\hsearch.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lock\lock.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lock\lock_deadlock.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lock\lock_id.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lock\lock_list.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lock\lock_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lock\lock_region.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lock\lock_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lock\lock_timer.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lock\lock_util.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\log\log.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\log\log_archive.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\log\log_compare.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\log\log_get.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\log\log_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\log\log_put.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\log\log_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_alloc.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_bh.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_fget.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_fmethod.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_fopen.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_fput.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_fset.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_region.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_register.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_sync.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mp\mp_trickle.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mutex\mut_win32.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\mutex\mutex.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os\os_alloc.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os\os_id.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os\os_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os\os_oflags.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os\os_region.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os\os_root.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os\os_rpath.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os\os_tmpdir.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_abs.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_clock.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_config.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_dir.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_errno.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_fid.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_fsync.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_handle.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_map.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_open.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_rename.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_rw.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_seek.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_sleep.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_spin.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_truncate.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\os_win32\os_unlink.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\qam\qam.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\qam\qam_auto.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\qam\qam_conv.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\qam\qam_files.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\qam\qam_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\qam\qam_open.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\qam\qam_rec.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\qam\qam_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\qam\qam_upgrade.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\qam\qam_verify.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\rep\rep_auto.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\rep\rep_backup.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\rep\rep_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\rep\rep_record.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\rep\rep_region.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\rep\rep_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\rep\rep_util.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\sequence\seq_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\sequence\sequence.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\txn\txn.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\txn\txn_auto.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\txn\txn_method.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\txn\txn_rec.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\txn\txn_recover.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\txn\txn_region.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\txn\txn_stat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\txn\txn_util.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\xa\xa.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\xa\xa_db.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\xa\xa_map.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win64/db_tcl.dsp b/db/build_win64/db_tcl.dsp
deleted file mode 100644
index 0ce84a247..000000000
--- a/db/build_win64/db_tcl.dsp
+++ /dev/null
@@ -1,148 +0,0 @@
-# Microsoft Developer Studio Project File - Name="db_tcl" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-
-CFG=db_tcl - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "db_tcl.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "db_tcl.mak" CFG="db_tcl - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "db_tcl - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "db_tcl - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-MTL=midl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "db_tcl - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /Ob2 /I "." /I ".." /D "DB_TCL_SUPPORT" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "DB_CREATE_DLL" /YX /FD /c
-# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
-# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /machine:IA64
-# ADD LINK32 Release/libdb43.lib tcl84.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:IA64 /out:"Release/libdb_tcl43.dll"
-
-!ELSEIF "$(CFG)" == "db_tcl - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 2
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "DB_TCL_SUPPORT" /D "CONFIG_TEST" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "DB_CREATE_DLL" /D "_WINDLL" /D "_AFXDLL" /YX"config.h" /FD /c
-# SUBTRACT CPP /Fr
-# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /debug /machine:IA64 /pdbtype:sept
-# ADD LINK32 Debug/libdb43d.lib tcl84g.lib /nologo /base:"0x13000000" /subsystem:windows /dll /debug /machine:IA64 /out:"Debug/libdb_tcl43d.dll" /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "db_tcl - Win32 Release"
-# Name "db_tcl - Win32 Debug"
-# Begin Source File
-
-SOURCE=..\build_win32\libdb_tcl.def
-# End Source File
-# Begin Source File
-
-SOURCE=..\tcl\tcl_compat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\tcl\tcl_db.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\tcl\tcl_db_pkg.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\tcl\tcl_dbcursor.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\tcl\tcl_env.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\tcl\tcl_internal.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\tcl\tcl_lock.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\tcl\tcl_log.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\tcl\tcl_mp.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\tcl\tcl_rep.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\tcl\tcl_seq.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\tcl\tcl_txn.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\tcl\tcl_util.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win64/db_test.dsp b/db/build_win64/db_test.dsp
deleted file mode 100644
index c12971a5a..000000000
--- a/db/build_win64/db_test.dsp
+++ /dev/null
@@ -1,100 +0,0 @@
-# Microsoft Developer Studio Project File - Name="db_test" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=db_test - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "db_test.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "db_test.mak" CFG="db_test - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "db_test - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_test - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "db_test - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /machine:IA64
-# ADD LINK32 Release/libdb43.lib /nologo /subsystem:console /machine:IA64
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy built executable files.
-PostBuild_Cmds=copy Release\*.exe .
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "db_test - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /pdbtype:sept
-# ADD LINK32 Debug/libdb43d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /out:"Debug/dbkill.exe" /fixed:no
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy built executable files.
-PostBuild_Cmds=copy Debug\*.exe .
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "db_test - Win32 Release"
-# Name "db_test - Win32 Debug"
-# Begin Source File
-
-SOURCE=..\build_win32\dbkill.cpp
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win64/db_test.src b/db/build_win64/db_test.src
deleted file mode 100644
index 960143e04..000000000
--- a/db/build_win64/db_test.src
+++ /dev/null
@@ -1,97 +0,0 @@
-# Microsoft Developer Studio Project File - Name="@project_name@" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=@project_name@ - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "@project_name@.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "@project_name@.mak" CFG="@project_name@ - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "@project_name@ - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "@project_name@ - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "@project_name@ - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /machine:IA64
-# ADD LINK32 Release/libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@.lib /nologo /subsystem:console /machine:IA64
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy built executable files.
-PostBuild_Cmds=copy Release\*.exe .
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "@project_name@ - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /pdbtype:sept
-# ADD LINK32 Debug/libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /out:"Debug/dbkill.exe" /fixed:no
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy built executable files.
-PostBuild_Cmds=copy Debug\*.exe .
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "@project_name@ - Win32 Release"
-# Name "@project_name@ - Win32 Debug"
-@SOURCE_FILES@
-# End Target
-# End Project
diff --git a/db/build_win64/db_upgrade.dsp b/db/build_win64/db_upgrade.dsp
deleted file mode 100644
index ef51dbce4..000000000
--- a/db/build_win64/db_upgrade.dsp
+++ /dev/null
@@ -1,148 +0,0 @@
-# Microsoft Developer Studio Project File - Name="db_upgrade" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=db_upgrade - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "db_upgrade.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "db_upgrade.mak" CFG="db_upgrade - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "db_upgrade - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_upgrade - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_upgrade - Win32 Release Static" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_upgrade - Win32 Debug Static" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "db_upgrade - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /machine:IA64
-# ADD LINK32 Release/libdb43.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-
-!ELSEIF "$(CFG)" == "db_upgrade - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /pdbtype:sept
-# ADD LINK32 Debug/libdb43d.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-
-!ELSEIF "$(CFG)" == "db_upgrade - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Release_static/libdb43.lib /nologo /subsystem:console /machine:IA64
-# ADD LINK32 Release_static/libdb43s.lib /nologo /subsystem:console /machine:IA64
-
-!ELSEIF "$(CFG)" == "db_upgrade - Win32 Debug Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Debug_static/libdb43d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /fixed:no
-# ADD LINK32 Debug_static/libdb43sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "db_upgrade - Win32 Release"
-# Name "db_upgrade - Win32 Debug"
-# Name "db_upgrade - Win32 Release Static"
-# Name "db_upgrade - Win32 Debug Static"
-# Begin Source File
-
-SOURCE=..\db_upgrade\db_upgrade.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\clib\getopt.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win64/db_verify.dsp b/db/build_win64/db_verify.dsp
deleted file mode 100644
index 02a03de9e..000000000
--- a/db/build_win64/db_verify.dsp
+++ /dev/null
@@ -1,148 +0,0 @@
-# Microsoft Developer Studio Project File - Name="db_verify" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=db_verify - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "db_verify.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "db_verify.mak" CFG="db_verify - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "db_verify - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_verify - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_verify - Win32 Release Static" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_verify - Win32 Debug Static" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "db_verify - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /machine:IA64
-# ADD LINK32 Release/libdb43.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-
-!ELSEIF "$(CFG)" == "db_verify - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /pdbtype:sept
-# ADD LINK32 Debug/libdb43d.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-
-!ELSEIF "$(CFG)" == "db_verify - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Release_static/libdb43.lib /nologo /subsystem:console /machine:IA64
-# ADD LINK32 Release_static/libdb43s.lib /nologo /subsystem:console /machine:IA64
-
-!ELSEIF "$(CFG)" == "db_verify - Win32 Debug Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Debug_static/libdb43d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /fixed:no
-# ADD LINK32 Debug_static/libdb43sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "db_verify - Win32 Release"
-# Name "db_verify - Win32 Debug"
-# Name "db_verify - Win32 Release Static"
-# Name "db_verify - Win32 Debug Static"
-# Begin Source File
-
-SOURCE=..\db_verify\db_verify.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\clib\getopt.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win64/dynamic_dsp.src b/db/build_win64/dynamic_dsp.src
deleted file mode 100644
index 5f409e3de..000000000
--- a/db/build_win64/dynamic_dsp.src
+++ /dev/null
@@ -1,93 +0,0 @@
-# Microsoft Developer Studio Project File - Name="@project_name@" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-
-CFG=@project_name@ - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "@project_name@.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "@project_name@.mak" CFG="@project_name@ - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "@project_name@ - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "@project_name@ - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-MTL=midl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "@project_name@ - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /Ob2 /I "." /I ".." /D "DB_CREATE_DLL" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c
-# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
-# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /machine:IA64
-# ADD LINK32 /nologo /base:"0x13000000" /subsystem:windows /dll /machine:IA64 /out:"Release/libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@.dll"
-
-!ELSEIF "$(CFG)" == "@project_name@ - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 2
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "DB_CREATE_DLL" /D "CONFIG_TEST" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX"config.h" /FD /c
-# SUBTRACT CPP /Fr
-# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /debug /machine:IA64 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /base:"0x13000000" /subsystem:windows /dll /debug /machine:IA64 /out:"Debug/libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@d.dll" /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "@project_name@ - Win32 Release"
-# Name "@project_name@ - Win32 Debug"
-@SOURCE_FILES@
-# End Target
-# End Project
diff --git a/db/build_win64/ex_access.dsp b/db/build_win64/ex_access.dsp
deleted file mode 100644
index f58224544..000000000
--- a/db/build_win64/ex_access.dsp
+++ /dev/null
@@ -1,148 +0,0 @@
-# Microsoft Developer Studio Project File - Name="ex_access" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=ex_access - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "ex_access.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "ex_access.mak" CFG="ex_access - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "ex_access - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_access - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_access - Win32 Release Static" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_access - Win32 Debug Static" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "ex_access - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /machine:IA64
-# ADD LINK32 Release/libdb43.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-
-!ELSEIF "$(CFG)" == "ex_access - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /pdbtype:sept
-# ADD LINK32 Debug/libdb43d.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-
-!ELSEIF "$(CFG)" == "ex_access - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Release_static/libdb43.lib /nologo /subsystem:console /machine:IA64
-# ADD LINK32 Release_static/libdb43s.lib /nologo /subsystem:console /machine:IA64
-
-!ELSEIF "$(CFG)" == "ex_access - Win32 Debug Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Debug_static/libdb43d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /fixed:no
-# ADD LINK32 Debug_static/libdb43sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "ex_access - Win32 Release"
-# Name "ex_access - Win32 Debug"
-# Name "ex_access - Win32 Release Static"
-# Name "ex_access - Win32 Debug Static"
-# Begin Source File
-
-SOURCE=..\examples_c\ex_access.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\clib\getopt.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win64/ex_btrec.dsp b/db/build_win64/ex_btrec.dsp
deleted file mode 100644
index 698c7453c..000000000
--- a/db/build_win64/ex_btrec.dsp
+++ /dev/null
@@ -1,148 +0,0 @@
-# Microsoft Developer Studio Project File - Name="ex_btrec" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=ex_btrec - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "ex_btrec.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "ex_btrec.mak" CFG="ex_btrec - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "ex_btrec - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_btrec - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_btrec - Win32 Release Static" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_btrec - Win32 Debug Static" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "ex_btrec - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /machine:IA64
-# ADD LINK32 Release/libdb43.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-
-!ELSEIF "$(CFG)" == "ex_btrec - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /pdbtype:sept
-# ADD LINK32 Debug/libdb43d.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-
-!ELSEIF "$(CFG)" == "ex_btrec - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Release_static/libdb43.lib /nologo /subsystem:console /machine:IA64
-# ADD LINK32 Release_static/libdb43s.lib /nologo /subsystem:console /machine:IA64
-
-!ELSEIF "$(CFG)" == "ex_btrec - Win32 Debug Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Debug_static/libdb43d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /fixed:no
-# ADD LINK32 Debug_static/libdb43sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "ex_btrec - Win32 Release"
-# Name "ex_btrec - Win32 Debug"
-# Name "ex_btrec - Win32 Release Static"
-# Name "ex_btrec - Win32 Debug Static"
-# Begin Source File
-
-SOURCE=..\examples_c\ex_btrec.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\clib\getopt.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win64/ex_env.dsp b/db/build_win64/ex_env.dsp
deleted file mode 100644
index 703e4e921..000000000
--- a/db/build_win64/ex_env.dsp
+++ /dev/null
@@ -1,148 +0,0 @@
-# Microsoft Developer Studio Project File - Name="ex_env" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=ex_env - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "ex_env.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "ex_env.mak" CFG="ex_env - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "ex_env - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_env - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_env - Win32 Release Static" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_env - Win32 Debug Static" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "ex_env - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /machine:IA64
-# ADD LINK32 Release/libdb43.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-
-!ELSEIF "$(CFG)" == "ex_env - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /pdbtype:sept
-# ADD LINK32 Debug/libdb43d.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-
-!ELSEIF "$(CFG)" == "ex_env - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Release_static/libdb43.lib /nologo /subsystem:console /machine:IA64
-# ADD LINK32 Release_static/libdb43s.lib /nologo /subsystem:console /machine:IA64
-
-!ELSEIF "$(CFG)" == "ex_env - Win32 Debug Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Debug_static/libdb43d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /fixed:no
-# ADD LINK32 Debug_static/libdb43sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "ex_env - Win32 Release"
-# Name "ex_env - Win32 Debug"
-# Name "ex_env - Win32 Release Static"
-# Name "ex_env - Win32 Debug Static"
-# Begin Source File
-
-SOURCE=..\examples_c\ex_env.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\clib\getopt.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win64/ex_lock.dsp b/db/build_win64/ex_lock.dsp
deleted file mode 100644
index 4d11379ec..000000000
--- a/db/build_win64/ex_lock.dsp
+++ /dev/null
@@ -1,148 +0,0 @@
-# Microsoft Developer Studio Project File - Name="ex_lock" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=ex_lock - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "ex_lock.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "ex_lock.mak" CFG="ex_lock - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "ex_lock - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_lock - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_lock - Win32 Release Static" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_lock - Win32 Debug Static" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "ex_lock - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /machine:IA64
-# ADD LINK32 Release/libdb43.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-
-!ELSEIF "$(CFG)" == "ex_lock - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /pdbtype:sept
-# ADD LINK32 Debug/libdb43d.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-
-!ELSEIF "$(CFG)" == "ex_lock - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Release_static/libdb43.lib /nologo /subsystem:console /machine:IA64
-# ADD LINK32 Release_static/libdb43s.lib /nologo /subsystem:console /machine:IA64
-
-!ELSEIF "$(CFG)" == "ex_lock - Win32 Debug Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Debug_static/libdb43d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /fixed:no
-# ADD LINK32 Debug_static/libdb43sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "ex_lock - Win32 Release"
-# Name "ex_lock - Win32 Debug"
-# Name "ex_lock - Win32 Release Static"
-# Name "ex_lock - Win32 Debug Static"
-# Begin Source File
-
-SOURCE=..\examples_c\ex_lock.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\clib\getopt.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win64/ex_mpool.dsp b/db/build_win64/ex_mpool.dsp
deleted file mode 100644
index 36f156f5d..000000000
--- a/db/build_win64/ex_mpool.dsp
+++ /dev/null
@@ -1,148 +0,0 @@
-# Microsoft Developer Studio Project File - Name="ex_mpool" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=ex_mpool - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "ex_mpool.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "ex_mpool.mak" CFG="ex_mpool - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "ex_mpool - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_mpool - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_mpool - Win32 Release Static" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_mpool - Win32 Debug Static" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "ex_mpool - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /machine:IA64
-# ADD LINK32 Release/libdb43.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-
-!ELSEIF "$(CFG)" == "ex_mpool - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /pdbtype:sept
-# ADD LINK32 Debug/libdb43d.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-
-!ELSEIF "$(CFG)" == "ex_mpool - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Release_static/libdb43.lib /nologo /subsystem:console /machine:IA64
-# ADD LINK32 Release_static/libdb43s.lib /nologo /subsystem:console /machine:IA64
-
-!ELSEIF "$(CFG)" == "ex_mpool - Win32 Debug Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Debug_static/libdb43d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /fixed:no
-# ADD LINK32 Debug_static/libdb43sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "ex_mpool - Win32 Release"
-# Name "ex_mpool - Win32 Debug"
-# Name "ex_mpool - Win32 Release Static"
-# Name "ex_mpool - Win32 Debug Static"
-# Begin Source File
-
-SOURCE=..\examples_c\ex_mpool.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\clib\getopt.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win64/ex_repquote.dsp b/db/build_win64/ex_repquote.dsp
deleted file mode 100644
index 699e72baa..000000000
--- a/db/build_win64/ex_repquote.dsp
+++ /dev/null
@@ -1,164 +0,0 @@
-# Microsoft Developer Studio Project File - Name="ex_repquote" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=ex_repquote - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "ex_repquote.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "ex_repquote.mak" CFG="ex_repquote - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "ex_repquote - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_repquote - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_repquote - Win32 Release Static" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_repquote - Win32 Debug Static" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "ex_repquote - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /machine:IA64
-# ADD LINK32 Release/libdb43.lib ws2_32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-
-!ELSEIF "$(CFG)" == "ex_repquote - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /pdbtype:sept
-# ADD LINK32 Debug/libdb43d.lib ws2_32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-
-!ELSEIF "$(CFG)" == "ex_repquote - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Release_static/libdb43.lib ws2_32.lib /nologo /subsystem:console /machine:IA64
-# ADD LINK32 Release_static/libdb43s.lib ws2_32.lib /nologo /subsystem:console /machine:IA64
-
-!ELSEIF "$(CFG)" == "ex_repquote - Win32 Debug Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Debug_static/libdb43d.lib ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /fixed:no
-# ADD LINK32 Debug_static/libdb43sd.lib ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "ex_repquote - Win32 Release"
-# Name "ex_repquote - Win32 Debug"
-# Name "ex_repquote - Win32 Release Static"
-# Name "ex_repquote - Win32 Debug Static"
-# Begin Source File
-
-SOURCE=..\examples_c\ex_repquote\ex_rq_client.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\examples_c\ex_repquote\ex_rq_main.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\examples_c\ex_repquote\ex_rq_master.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\examples_c\ex_repquote\ex_rq_net.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\examples_c\ex_repquote\ex_rq_util.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\clib\getopt.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win64/ex_repquote.src b/db/build_win64/ex_repquote.src
deleted file mode 100644
index da08375ec..000000000
--- a/db/build_win64/ex_repquote.src
+++ /dev/null
@@ -1,145 +0,0 @@
-# Microsoft Developer Studio Project File - Name="@project_name@" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=@project_name@ - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "@project_name@.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "@project_name@.mak" CFG="@project_name@ - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "@project_name@ - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "@project_name@ - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "@project_name@ - Win32 Release Static" (based on "Win32 (x86) Console Application")
-!MESSAGE "@project_name@ - Win32 Debug Static" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "@project_name@ - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /machine:IA64
-# ADD LINK32 Release/libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@.lib ws2_32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-
-!ELSEIF "$(CFG)" == "@project_name@ - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /pdbtype:sept
-# ADD LINK32 Debug/libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@d.lib ws2_32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-
-!ELSEIF "$(CFG)" == "@project_name@ - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Release_static/libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@.lib ws2_32.lib /nologo /subsystem:console /machine:IA64
-# ADD LINK32 Release_static/libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@s.lib ws2_32.lib /nologo /subsystem:console /machine:IA64
-
-!ELSEIF "$(CFG)" == "@project_name@ - Win32 Debug Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Debug_static/libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@d.lib ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /fixed:no
-# ADD LINK32 Debug_static/libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@sd.lib ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "@project_name@ - Win32 Release"
-# Name "@project_name@ - Win32 Debug"
-# Name "@project_name@ - Win32 Release Static"
-# Name "@project_name@ - Win32 Debug Static"
-@SOURCE_FILES@
-# Begin Source File
-
-SOURCE=..\clib\getopt.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win64/ex_tpcb.dsp b/db/build_win64/ex_tpcb.dsp
deleted file mode 100644
index 15c92708f..000000000
--- a/db/build_win64/ex_tpcb.dsp
+++ /dev/null
@@ -1,148 +0,0 @@
-# Microsoft Developer Studio Project File - Name="ex_tpcb" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=ex_tpcb - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "ex_tpcb.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "ex_tpcb.mak" CFG="ex_tpcb - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "ex_tpcb - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_tpcb - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_tpcb - Win32 Release Static" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_tpcb - Win32 Debug Static" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "ex_tpcb - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /machine:IA64
-# ADD LINK32 Release/libdb43.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-
-!ELSEIF "$(CFG)" == "ex_tpcb - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /pdbtype:sept
-# ADD LINK32 Debug/libdb43d.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-
-!ELSEIF "$(CFG)" == "ex_tpcb - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Release_static/libdb43.lib /nologo /subsystem:console /machine:IA64
-# ADD LINK32 Release_static/libdb43s.lib /nologo /subsystem:console /machine:IA64
-
-!ELSEIF "$(CFG)" == "ex_tpcb - Win32 Debug Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Debug_static/libdb43d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /fixed:no
-# ADD LINK32 Debug_static/libdb43sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "ex_tpcb - Win32 Release"
-# Name "ex_tpcb - Win32 Debug"
-# Name "ex_tpcb - Win32 Release Static"
-# Name "ex_tpcb - Win32 Debug Static"
-# Begin Source File
-
-SOURCE=..\examples_c\ex_tpcb.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\clib\getopt.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win64/excxx_access.dsp b/db/build_win64/excxx_access.dsp
deleted file mode 100644
index 53aa6acf4..000000000
--- a/db/build_win64/excxx_access.dsp
+++ /dev/null
@@ -1,148 +0,0 @@
-# Microsoft Developer Studio Project File - Name="excxx_access" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=excxx_access - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "excxx_access.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "excxx_access.mak" CFG="excxx_access - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "excxx_access - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_access - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_access - Win32 Release Static" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_access - Win32 Debug Static" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "excxx_access - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /machine:IA64
-# ADD LINK32 Release/libdb43.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-
-!ELSEIF "$(CFG)" == "excxx_access - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /pdbtype:sept
-# ADD LINK32 Debug/libdb43d.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-
-!ELSEIF "$(CFG)" == "excxx_access - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Release_static/libdb43.lib /nologo /subsystem:console /machine:IA64
-# ADD LINK32 Release_static/libdb43s.lib /nologo /subsystem:console /machine:IA64
-
-!ELSEIF "$(CFG)" == "excxx_access - Win32 Debug Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Debug_static/libdb43d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /fixed:no
-# ADD LINK32 Debug_static/libdb43sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "excxx_access - Win32 Release"
-# Name "excxx_access - Win32 Debug"
-# Name "excxx_access - Win32 Release Static"
-# Name "excxx_access - Win32 Debug Static"
-# Begin Source File
-
-SOURCE=..\examples_cxx\AccessExample.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\clib\getopt.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win64/excxx_btrec.dsp b/db/build_win64/excxx_btrec.dsp
deleted file mode 100644
index 852a61f25..000000000
--- a/db/build_win64/excxx_btrec.dsp
+++ /dev/null
@@ -1,148 +0,0 @@
-# Microsoft Developer Studio Project File - Name="excxx_btrec" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=excxx_btrec - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "excxx_btrec.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "excxx_btrec.mak" CFG="excxx_btrec - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "excxx_btrec - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_btrec - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_btrec - Win32 Release Static" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_btrec - Win32 Debug Static" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "excxx_btrec - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /machine:IA64
-# ADD LINK32 Release/libdb43.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-
-!ELSEIF "$(CFG)" == "excxx_btrec - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /pdbtype:sept
-# ADD LINK32 Debug/libdb43d.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-
-!ELSEIF "$(CFG)" == "excxx_btrec - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Release_static/libdb43.lib /nologo /subsystem:console /machine:IA64
-# ADD LINK32 Release_static/libdb43s.lib /nologo /subsystem:console /machine:IA64
-
-!ELSEIF "$(CFG)" == "excxx_btrec - Win32 Debug Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Debug_static/libdb43d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /fixed:no
-# ADD LINK32 Debug_static/libdb43sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "excxx_btrec - Win32 Release"
-# Name "excxx_btrec - Win32 Debug"
-# Name "excxx_btrec - Win32 Release Static"
-# Name "excxx_btrec - Win32 Debug Static"
-# Begin Source File
-
-SOURCE=..\examples_cxx\BtRecExample.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\clib\getopt.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win64/excxx_env.dsp b/db/build_win64/excxx_env.dsp
deleted file mode 100644
index 44ee9a2fa..000000000
--- a/db/build_win64/excxx_env.dsp
+++ /dev/null
@@ -1,148 +0,0 @@
-# Microsoft Developer Studio Project File - Name="excxx_env" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=excxx_env - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "excxx_env.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "excxx_env.mak" CFG="excxx_env - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "excxx_env - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_env - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_env - Win32 Release Static" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_env - Win32 Debug Static" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "excxx_env - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /machine:IA64
-# ADD LINK32 Release/libdb43.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-
-!ELSEIF "$(CFG)" == "excxx_env - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /pdbtype:sept
-# ADD LINK32 Debug/libdb43d.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-
-!ELSEIF "$(CFG)" == "excxx_env - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Release_static/libdb43.lib /nologo /subsystem:console /machine:IA64
-# ADD LINK32 Release_static/libdb43s.lib /nologo /subsystem:console /machine:IA64
-
-!ELSEIF "$(CFG)" == "excxx_env - Win32 Debug Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Debug_static/libdb43d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /fixed:no
-# ADD LINK32 Debug_static/libdb43sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "excxx_env - Win32 Release"
-# Name "excxx_env - Win32 Debug"
-# Name "excxx_env - Win32 Release Static"
-# Name "excxx_env - Win32 Debug Static"
-# Begin Source File
-
-SOURCE=..\examples_cxx\EnvExample.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\clib\getopt.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win64/excxx_lock.dsp b/db/build_win64/excxx_lock.dsp
deleted file mode 100644
index af0327793..000000000
--- a/db/build_win64/excxx_lock.dsp
+++ /dev/null
@@ -1,148 +0,0 @@
-# Microsoft Developer Studio Project File - Name="excxx_lock" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=excxx_lock - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "excxx_lock.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "excxx_lock.mak" CFG="excxx_lock - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "excxx_lock - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_lock - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_lock - Win32 Release Static" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_lock - Win32 Debug Static" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "excxx_lock - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /machine:IA64
-# ADD LINK32 Release/libdb43.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-
-!ELSEIF "$(CFG)" == "excxx_lock - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /pdbtype:sept
-# ADD LINK32 Debug/libdb43d.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-
-!ELSEIF "$(CFG)" == "excxx_lock - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Release_static/libdb43.lib /nologo /subsystem:console /machine:IA64
-# ADD LINK32 Release_static/libdb43s.lib /nologo /subsystem:console /machine:IA64
-
-!ELSEIF "$(CFG)" == "excxx_lock - Win32 Debug Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Debug_static/libdb43d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /fixed:no
-# ADD LINK32 Debug_static/libdb43sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "excxx_lock - Win32 Release"
-# Name "excxx_lock - Win32 Debug"
-# Name "excxx_lock - Win32 Release Static"
-# Name "excxx_lock - Win32 Debug Static"
-# Begin Source File
-
-SOURCE=..\examples_cxx\LockExample.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\clib\getopt.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win64/excxx_mpool.dsp b/db/build_win64/excxx_mpool.dsp
deleted file mode 100644
index 22af8b36b..000000000
--- a/db/build_win64/excxx_mpool.dsp
+++ /dev/null
@@ -1,148 +0,0 @@
-# Microsoft Developer Studio Project File - Name="excxx_mpool" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=excxx_mpool - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "excxx_mpool.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "excxx_mpool.mak" CFG="excxx_mpool - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "excxx_mpool - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_mpool - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_mpool - Win32 Release Static" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_mpool - Win32 Debug Static" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "excxx_mpool - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /machine:IA64
-# ADD LINK32 Release/libdb43.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-
-!ELSEIF "$(CFG)" == "excxx_mpool - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /pdbtype:sept
-# ADD LINK32 Debug/libdb43d.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-
-!ELSEIF "$(CFG)" == "excxx_mpool - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Release_static/libdb43.lib /nologo /subsystem:console /machine:IA64
-# ADD LINK32 Release_static/libdb43s.lib /nologo /subsystem:console /machine:IA64
-
-!ELSEIF "$(CFG)" == "excxx_mpool - Win32 Debug Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Debug_static/libdb43d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /fixed:no
-# ADD LINK32 Debug_static/libdb43sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "excxx_mpool - Win32 Release"
-# Name "excxx_mpool - Win32 Debug"
-# Name "excxx_mpool - Win32 Release Static"
-# Name "excxx_mpool - Win32 Debug Static"
-# Begin Source File
-
-SOURCE=..\examples_cxx\MpoolExample.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\clib\getopt.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win64/excxx_tpcb.dsp b/db/build_win64/excxx_tpcb.dsp
deleted file mode 100644
index fd513fd9b..000000000
--- a/db/build_win64/excxx_tpcb.dsp
+++ /dev/null
@@ -1,148 +0,0 @@
-# Microsoft Developer Studio Project File - Name="excxx_tpcb" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=excxx_tpcb - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "excxx_tpcb.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "excxx_tpcb.mak" CFG="excxx_tpcb - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "excxx_tpcb - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_tpcb - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_tpcb - Win32 Release Static" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_tpcb - Win32 Debug Static" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "excxx_tpcb - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /machine:IA64
-# ADD LINK32 Release/libdb43.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-
-!ELSEIF "$(CFG)" == "excxx_tpcb - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /pdbtype:sept
-# ADD LINK32 Debug/libdb43d.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-
-!ELSEIF "$(CFG)" == "excxx_tpcb - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Release_static/libdb43.lib /nologo /subsystem:console /machine:IA64
-# ADD LINK32 Release_static/libdb43s.lib /nologo /subsystem:console /machine:IA64
-
-!ELSEIF "$(CFG)" == "excxx_tpcb - Win32 Debug Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_static"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 Debug_static/libdb43d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /fixed:no
-# ADD LINK32 Debug_static/libdb43sd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:IA64 /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "excxx_tpcb - Win32 Release"
-# Name "excxx_tpcb - Win32 Debug"
-# Name "excxx_tpcb - Win32 Release Static"
-# Name "excxx_tpcb - Win32 Debug Static"
-# Begin Source File
-
-SOURCE=..\examples_cxx\TpcbExample.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\clib\getopt.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_win64/java_dsp.src b/db/build_win64/java_dsp.src
deleted file mode 100644
index 36d5c5ba4..000000000
--- a/db/build_win64/java_dsp.src
+++ /dev/null
@@ -1,129 +0,0 @@
-# Microsoft Developer Studio Project File - Name="@project_name@" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-
-CFG=@project_name@ - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "@project_name@.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "@project_name@.mak" CFG="@project_name@ - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "@project_name@ - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "@project_name@ - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-MTL=midl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "@project_name@ - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /Ob2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "DB_CREATE_DLL" /YX /FD /c
-# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
-# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /machine:IA64
-# ADD LINK32 Release/libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:IA64 /out:"Release/libdb_java@DB_VERSION_MAJOR@@DB_VERSION_MINOR@.dll"
-# Begin Custom Build - Compiling java files using javac
-ProjDir=.
-InputPath=.\Release\libdb_java@DB_VERSION_MAJOR@@DB_VERSION_MINOR@.dll
-SOURCE="$(InputPath)"
-
-"force_compilation.txt" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- echo compiling Berkeley DB classes
- mkdir "$(OUTDIR)\classes"
- javac -O -d "$(OUTDIR)\classes" -classpath "$(OUTDIR)/classes" ..\java\src\com\sleepycat\db\*.java ..\java\src\com\sleepycat\db\internal\*.java ..\java\src\com\sleepycat\bind\*.java ..\java\src\com\sleepycat\bind\serial\*.java ..\java\src\com\sleepycat\bind\tuple\*.java ..\java\src\com\sleepycat\collections\*.java ..\java\src\com\sleepycat\compat\*.java ..\java\src\com\sleepycat\util\*.java
- echo compiling examples
- mkdir "$(OUTDIR)\classes.ex"
- javac -O -d "$(OUTDIR)\classes.ex" -classpath "$(OUTDIR)\classes;$(OUTDIR)\classes.ex" ..\examples_java\src\com\sleepycat\examples\db\*.java ..\examples_java\src\com\sleepycat\examples\db\GettingStarted\*.java ..\examples_java\src\com\sleepycat\examples\collections\access\*.java ..\examples_java\src\com\sleepycat\examples\collections\hello\*.java ..\examples_java\src\com\sleepycat\examples\collections\ship\basic\*.java ..\examples_java\src\com\sleepycat\examples\collections\ship\entity\*.java ..\examples_java\src\com\sleepycat\examples\collections\ship\tuple\*.java ..\examples_java\src\com\sleepycat\examples\collections\ship\sentity\*.java ..\examples_java\src\com\sleepycat\examples\collections\ship\marshal\*.java ..\examples_java\src\com\sleepycat\examples\collections\ship\factory\*.java
- echo creating jar files
- jar cf "$(OUTDIR)\db.jar" -C "$(OUTDIR)\classes" .
- jar cf "$(OUTDIR)\dbexamples.jar" -C "$(OUTDIR)\classes.ex" .
- echo Java build finished
-
-# End Custom Build
-
-!ELSEIF "$(CFG)" == "@project_name@ - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 2
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "DB_CREATE_DLL" /D "_WINDLL" /D "_AFXDLL" /YX"config.h" /FD /c
-# SUBTRACT CPP /Fr
-# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /debug /machine:IA64 /pdbtype:sept
-# ADD LINK32 Debug/libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@d.lib /nologo /base:"0x13000000" /subsystem:windows /dll /debug /machine:IA64 /out:"Debug/libdb_java@DB_VERSION_MAJOR@@DB_VERSION_MINOR@d.dll" /fixed:no
-# Begin Custom Build - Compiling java files using javac
-ProjDir=.
-InputPath=.\Debug\libdb_java@DB_VERSION_MAJOR@@DB_VERSION_MINOR@d.dll
-SOURCE="$(InputPath)"
-
-"force_compilation.txt" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- echo compiling Berkeley DB classes
- mkdir "$(OUTDIR)\classes"
- javac -g -d "$(OUTDIR)\classes" -classpath "$(OUTDIR)/classes" ..\java\src\com\sleepycat\db\*.java ..\java\src\com\sleepycat\db\internal\*.java ..\java\src\com\sleepycat\bind\*.java ..\java\src\com\sleepycat\bind\serial\*.java ..\java\src\com\sleepycat\bind\tuple\*.java ..\java\src\com\sleepycat\collections\*.java ..\java\src\com\sleepycat\compat\*.java ..\java\src\com\sleepycat\util\*.java
- echo compiling examples
- mkdir "$(OUTDIR)\classes.ex"
- javac -g -d "$(OUTDIR)\classes.ex" -classpath "$(OUTDIR)\classes;$(OUTDIR)\classes.ex" ..\examples_java\src\com\sleepycat\examples\db\*.java ..\examples_java\src\com\sleepycat\examples\db\GettingStarted\*.java ..\examples_java\src\com\sleepycat\examples\collections\access\*.java ..\examples_java\src\com\sleepycat\examples\collections\hello\*.java ..\examples_java\src\com\sleepycat\examples\collections\ship\basic\*.java ..\examples_java\src\com\sleepycat\examples\collections\ship\entity\*.java ..\examples_java\src\com\sleepycat\examples\collections\ship\tuple\*.java ..\examples_java\src\com\sleepycat\examples\collections\ship\sentity\*.java ..\examples_java\src\com\sleepycat\examples\collections\ship\marshal\*.java ..\examples_java\src\com\sleepycat\examples\collections\ship\factory\*.java
- echo creating jar files
- jar cf "$(OUTDIR)\db.jar" -C "$(OUTDIR)\classes" .
- jar cf "$(OUTDIR)\dbexamples.jar" -C "$(OUTDIR)\classes.ex" .
- echo Java build finished
-
-# End Custom Build
-
-!ENDIF
-
-# Begin Target
-
-# Name "@project_name@ - Win32 Release"
-# Name "@project_name@ - Win32 Debug"
-@SOURCE_FILES@
-# End Target
-# End Project
diff --git a/db/build_win64/libdbrc.src b/db/build_win64/libdbrc.src
deleted file mode 100644
index 4c644ea9f..000000000
--- a/db/build_win64/libdbrc.src
+++ /dev/null
@@ -1,33 +0,0 @@
-1 VERSIONINFO
- FILEVERSION %MAJOR%,0,%MINOR%,%PATCH%
- PRODUCTVERSION %MAJOR%,0,%MINOR%,%PATCH%
- FILEFLAGSMASK 0x3fL
-#ifdef _DEBUG
- FILEFLAGS 0x1L
-#else
- FILEFLAGS 0x0L
-#endif
- FILEOS 0x4L
- FILETYPE 0x2L
- FILESUBTYPE 0x0L
-
-BEGIN
- BLOCK "StringFileInfo"
- BEGIN
- BLOCK "040904b0"
- BEGIN
- VALUE "CompanyName", "Sleepycat Software\0"
- VALUE "FileDescription", "Berkeley DB 3.0 DLL\0"
- VALUE "FileVersion", "%MAJOR%.%MINOR%.%PATCH%\0"
- VALUE "InternalName", "libdb.dll\0"
- VALUE "LegalCopyright", "Copyright © Sleepycat Software Inc. 1997-2004\0"
- VALUE "OriginalFilename", "libdb.dll\0"
- VALUE "ProductName", "Sleepycat Software libdb\0"
- VALUE "ProductVersion", "%MAJOR%.%MINOR%.%PATCH%\0"
- END
- END
- BLOCK "VarFileInfo"
- BEGIN
- VALUE "Translation", 0x409, 1200
- END
-END
diff --git a/db/build_win64/small_dsp.src b/db/build_win64/small_dsp.src
deleted file mode 100644
index 1b42e8c71..000000000
--- a/db/build_win64/small_dsp.src
+++ /dev/null
@@ -1,85 +0,0 @@
-# Microsoft Developer Studio Project File - Name="@project_name@" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=@project_name@ - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "@project_name@.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "@project_name@.mak" CFG="@project_name@ - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "@project_name@ - Win32 Release Static" (based on "Win32 (x86) Static Library")
-!MESSAGE "@project_name@ - Win32 Debug Static" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "@project_name@ - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release_small"
-# PROP BASE Intermediate_Dir "Release_small"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_small"
-# PROP Intermediate_Dir "Release_small"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "HAVE_SMALLBUILD" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX"config.h" /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "HAVE_SMALLBUILD" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX"config.h" /FD /c
-# ADD BASE RSC /l 0xc09
-# ADD RSC /l 0xc09
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"Release_small/libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@s.lib"
-# ADD LIB32 /nologo /out:"Release_small/libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@s.lib"
-
-!ELSEIF "$(CFG)" == "@project_name@ - Win32 Debug Static"
-
-# PROP BASE Use_MFC 1
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug_small"
-# PROP BASE Intermediate_Dir "Debug_small"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 1
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_small"
-# PROP Intermediate_Dir "Debug_small"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "HAVE_SMALLBUILD" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX"config.h" /FD /c
-# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "HAVE_SMALLBUILD" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX"config.h" /FD /c
-# ADD BASE RSC /l 0xc09
-# ADD RSC /l 0xc09
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"Debug_small/libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@sd.lib"
-# ADD LIB32 /nologo /out:"Debug_small/libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@sd.lib"
-
-!ENDIF
-
-# Begin Target
-
-# Name "@project_name@ - Win32 Release Static"
-# Name "@project_name@ - Win32 Debug Static"
-@SOURCE_FILES@
-# End Target
-# End Project
diff --git a/db/build_win64/srcfile_dsp.src b/db/build_win64/srcfile_dsp.src
deleted file mode 100644
index 408a55e2a..000000000
--- a/db/build_win64/srcfile_dsp.src
+++ /dev/null
@@ -1,4 +0,0 @@
-# Begin Source File
-
-SOURCE=@srcdir@\@srcfile@
-# End Source File
diff --git a/db/build_win64/static_dsp.src b/db/build_win64/static_dsp.src
deleted file mode 100644
index a2746856c..000000000
--- a/db/build_win64/static_dsp.src
+++ /dev/null
@@ -1,85 +0,0 @@
-# Microsoft Developer Studio Project File - Name="@project_name@" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=@project_name@ - Win32 Debug Static
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "@project_name@.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "@project_name@.mak" CFG="@project_name@ - Win32 Debug Static"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "@project_name@ - Win32 Release Static" (based on "Win32 (x86) Static Library")
-!MESSAGE "@project_name@ - Win32 Debug Static" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "@project_name@ - Win32 Release Static"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release_static"
-# PROP BASE Intermediate_Dir "Release_static"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_static"
-# PROP Intermediate_Dir "Release_static"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX"config.h" /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX"config.h" /FD /c
-# ADD BASE RSC /l 0xc09
-# ADD RSC /l 0xc09
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"Release/libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@s.lib"
-# ADD LIB32 /nologo /out:"Release_static/libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@s.lib"
-
-!ELSEIF "$(CFG)" == "@project_name@ - Win32 Debug Static"
-
-# PROP BASE Use_MFC 1
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug_static"
-# PROP BASE Intermediate_Dir "Debug_static"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 1
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_static"
-# PROP Intermediate_Dir "Debug_static"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "CONFIG_TEST" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX"config.h" /FD /c
-# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "." /I ".." /D "CONFIG_TEST" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX"config.h" /FD /c
-# ADD BASE RSC /l 0xc09
-# ADD RSC /l 0xc09
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"Debug/libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@sd.lib"
-# ADD LIB32 /nologo /out:"Debug_static/libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@sd.lib"
-
-!ENDIF
-
-# Begin Target
-
-# Name "@project_name@ - Win32 Release Static"
-# Name "@project_name@ - Win32 Debug Static"
-@SOURCE_FILES@
-# End Target
-# End Project
diff --git a/db/build_win64/tcl_dsp.src b/db/build_win64/tcl_dsp.src
deleted file mode 100644
index 2d25d7407..000000000
--- a/db/build_win64/tcl_dsp.src
+++ /dev/null
@@ -1,93 +0,0 @@
-# Microsoft Developer Studio Project File - Name="@project_name@" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-
-CFG=@project_name@ - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "@project_name@.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "@project_name@.mak" CFG="@project_name@ - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "@project_name@ - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "@project_name@ - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-MTL=midl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "@project_name@ - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /Ob2 /I "." /I ".." /D "DB_TCL_SUPPORT" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "DB_CREATE_DLL" /YX /FD /c
-# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
-# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /machine:IA64
-# ADD LINK32 Release/libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@.lib tcl84.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:IA64 /out:"Release/libdb_tcl@DB_VERSION_MAJOR@@DB_VERSION_MINOR@.dll"
-
-!ELSEIF "$(CFG)" == "@project_name@ - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 2
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "DB_TCL_SUPPORT" /D "CONFIG_TEST" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "DB_CREATE_DLL" /D "_WINDLL" /D "_AFXDLL" /YX"config.h" /FD /c
-# SUBTRACT CPP /Fr
-# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /debug /machine:IA64 /pdbtype:sept
-# ADD LINK32 Debug/libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@d.lib tcl84g.lib /nologo /base:"0x13000000" /subsystem:windows /dll /debug /machine:IA64 /out:"Debug/libdb_tcl@DB_VERSION_MAJOR@@DB_VERSION_MINOR@d.dll" /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "@project_name@ - Win32 Release"
-# Name "@project_name@ - Win32 Debug"
-@SOURCE_FILES@
-# End Target
-# End Project
diff --git a/db/build_win64/win_db.h b/db/build_win64/win_db.h
deleted file mode 100644
index d623610f4..000000000
--- a/db/build_win64/win_db.h
+++ /dev/null
@@ -1,94 +0,0 @@
-/*-
- * $Id: win_db.in,v 11.4 2004/10/07 13:59:24 carol Exp $
- *
- * The following provides the information necessary to build Berkeley
- * DB on native Windows, and other Windows environments such as MinGW.
- */
-
-#include <sys/types.h>
-#include <sys/stat.h>
-
-#include <direct.h>
-#include <fcntl.h>
-#include <io.h>
-#include <limits.h>
-#include <memory.h>
-#include <process.h>
-#include <signal.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <tchar.h>
-#include <time.h>
-#include <errno.h>
-
-/*
- * To build Tcl interface libraries, the include path must be configured to
- * use the directory containing <tcl.h>, usually the include directory in
- * the Tcl distribution.
- */
-#ifdef DB_TCL_SUPPORT
-#include <tcl.h>
-#endif
-
-#define WIN32_LEAN_AND_MEAN
-#include <windows.h>
-
-/*
- * All of the necessary includes have been included, ignore the #includes
- * in the Berkeley DB source files.
- */
-#define NO_SYSTEM_INCLUDES
-
-/*
- * Win32 has getcwd, snprintf and vsnprintf, but under different names.
- */
-#define getcwd(buf, size) _getcwd(buf, size)
-#define snprintf _snprintf
-#define vsnprintf _vsnprintf
-
-/*
- * Win32 does not define getopt and friends in any header file, so we must.
- */
-#if defined(__cplusplus)
-extern "C" {
-#endif
-extern int optind;
-extern char *optarg;
-extern int getopt(int, char * const *, const char *);
-#if defined(__cplusplus)
-}
-#endif
-
-#ifdef _UNICODE
-#define TO_TSTRING(dbenv, s, ts, ret) do { \
- int __len = strlen(s) + 1; \
- ts = NULL; \
- if ((ret = __os_malloc((dbenv), \
- __len * sizeof (_TCHAR), &(ts))) == 0 && \
- MultiByteToWideChar(CP_UTF8, 0, \
- (s), -1, (ts), __len) == 0) \
- ret = __os_get_errno(); \
- } while (0)
-
-#define FROM_TSTRING(dbenv, ts, s, ret) { \
- int __len = WideCharToMultiByte(CP_UTF8, 0, ts, -1, \
- NULL, 0, NULL, NULL); \
- s = NULL; \
- if ((ret = __os_malloc((dbenv), __len, &(s))) == 0 && \
- WideCharToMultiByte(CP_UTF8, 0, \
- (ts), -1, (s), __len, NULL, NULL) == 0) \
- ret = __os_get_errno(); \
- } while (0)
-
-#define FREE_STRING(dbenv, s) do { \
- if ((s) != NULL) { \
- __os_free((dbenv), (s)); \
- (s) = NULL; \
- } \
- } while (0)
-
-#else
-#define TO_TSTRING(dbenv, s, ts, ret) (ret) = 0, (ts) = (_TCHAR *)(s)
-#define FROM_TSTRING(dbenv, ts, s, ret) (ret) = 0, (s) = (char *)(ts)
-#define FREE_STRING(dbenv, ts)
-#endif
diff --git a/db/build_wince/Berkeley_DB.sln b/db/build_wince/Berkeley_DB.sln
new file mode 100644
index 000000000..30ad4af7f
--- /dev/null
+++ b/db/build_wince/Berkeley_DB.sln
@@ -0,0 +1,61 @@
+
+Microsoft Visual Studio Solution File, Format Version 9.00
+# Visual Studio 2005
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "db_small", "db_small.vcproj", "{6A2849DA-8F7C-4B50-BDAE-AE7752EF8213}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "db_static", "db_static.vcproj", "{4AB4958F-8DD0-49B5-8C02-014B5637C59A}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wce_tpcb", "wce_tpcb.vcproj", "{F2CE670A-ABAE-414A-9A17-8079AB58613F}"
+ ProjectSection(ProjectDependencies) = postProject
+ {4AB4958F-8DD0-49B5-8C02-014B5637C59A} = {4AB4958F-8DD0-49B5-8C02-014B5637C59A}
+ EndProjectSection
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Pocket PC 2003 (ARMV4) = Debug|Pocket PC 2003 (ARMV4)
+ Debug|Smartphone 2003 (ARMV4) = Debug|Smartphone 2003 (ARMV4)
+ Release|Pocket PC 2003 (ARMV4) = Release|Pocket PC 2003 (ARMV4)
+ Release|Smartphone 2003 (ARMV4) = Release|Smartphone 2003 (ARMV4)
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {6A2849DA-8F7C-4B50-BDAE-AE7752EF8213}.Debug|Pocket PC 2003 (ARMV4).ActiveCfg = Debug|Pocket PC 2003 (ARMV4)
+ {6A2849DA-8F7C-4B50-BDAE-AE7752EF8213}.Debug|Pocket PC 2003 (ARMV4).Build.0 = Debug|Pocket PC 2003 (ARMV4)
+ {6A2849DA-8F7C-4B50-BDAE-AE7752EF8213}.Debug|Pocket PC 2003 (ARMV4).Deploy.0 = Debug|Pocket PC 2003 (ARMV4)
+ {6A2849DA-8F7C-4B50-BDAE-AE7752EF8213}.Debug|Smartphone 2003 (ARMV4).ActiveCfg = Debug|Smartphone 2003 (ARMV4)
+ {6A2849DA-8F7C-4B50-BDAE-AE7752EF8213}.Debug|Smartphone 2003 (ARMV4).Build.0 = Debug|Smartphone 2003 (ARMV4)
+ {6A2849DA-8F7C-4B50-BDAE-AE7752EF8213}.Debug|Smartphone 2003 (ARMV4).Deploy.0 = Debug|Smartphone 2003 (ARMV4)
+ {6A2849DA-8F7C-4B50-BDAE-AE7752EF8213}.Release|Pocket PC 2003 (ARMV4).ActiveCfg = Release|Pocket PC 2003 (ARMV4)
+ {6A2849DA-8F7C-4B50-BDAE-AE7752EF8213}.Release|Pocket PC 2003 (ARMV4).Build.0 = Release|Pocket PC 2003 (ARMV4)
+ {6A2849DA-8F7C-4B50-BDAE-AE7752EF8213}.Release|Pocket PC 2003 (ARMV4).Deploy.0 = Release|Pocket PC 2003 (ARMV4)
+ {6A2849DA-8F7C-4B50-BDAE-AE7752EF8213}.Release|Smartphone 2003 (ARMV4).ActiveCfg = Release|Smartphone 2003 (ARMV4)
+ {6A2849DA-8F7C-4B50-BDAE-AE7752EF8213}.Release|Smartphone 2003 (ARMV4).Build.0 = Release|Smartphone 2003 (ARMV4)
+ {6A2849DA-8F7C-4B50-BDAE-AE7752EF8213}.Release|Smartphone 2003 (ARMV4).Deploy.0 = Release|Smartphone 2003 (ARMV4)
+ {4AB4958F-8DD0-49B5-8C02-014B5637C59A}.Debug|Pocket PC 2003 (ARMV4).ActiveCfg = Debug|Pocket PC 2003 (ARMV4)
+ {4AB4958F-8DD0-49B5-8C02-014B5637C59A}.Debug|Pocket PC 2003 (ARMV4).Build.0 = Debug|Pocket PC 2003 (ARMV4)
+ {4AB4958F-8DD0-49B5-8C02-014B5637C59A}.Debug|Pocket PC 2003 (ARMV4).Deploy.0 = Debug|Pocket PC 2003 (ARMV4)
+ {4AB4958F-8DD0-49B5-8C02-014B5637C59A}.Debug|Smartphone 2003 (ARMV4).ActiveCfg = Debug|Smartphone 2003 (ARMV4)
+ {4AB4958F-8DD0-49B5-8C02-014B5637C59A}.Debug|Smartphone 2003 (ARMV4).Build.0 = Debug|Smartphone 2003 (ARMV4)
+ {4AB4958F-8DD0-49B5-8C02-014B5637C59A}.Debug|Smartphone 2003 (ARMV4).Deploy.0 = Debug|Smartphone 2003 (ARMV4)
+ {4AB4958F-8DD0-49B5-8C02-014B5637C59A}.Release|Pocket PC 2003 (ARMV4).ActiveCfg = Release|Pocket PC 2003 (ARMV4)
+ {4AB4958F-8DD0-49B5-8C02-014B5637C59A}.Release|Pocket PC 2003 (ARMV4).Build.0 = Release|Pocket PC 2003 (ARMV4)
+ {4AB4958F-8DD0-49B5-8C02-014B5637C59A}.Release|Pocket PC 2003 (ARMV4).Deploy.0 = Release|Pocket PC 2003 (ARMV4)
+ {4AB4958F-8DD0-49B5-8C02-014B5637C59A}.Release|Smartphone 2003 (ARMV4).ActiveCfg = Release|Smartphone 2003 (ARMV4)
+ {4AB4958F-8DD0-49B5-8C02-014B5637C59A}.Release|Smartphone 2003 (ARMV4).Build.0 = Release|Smartphone 2003 (ARMV4)
+ {4AB4958F-8DD0-49B5-8C02-014B5637C59A}.Release|Smartphone 2003 (ARMV4).Deploy.0 = Release|Smartphone 2003 (ARMV4)
+ {F2CE670A-ABAE-414A-9A17-8079AB58613F}.Debug|Pocket PC 2003 (ARMV4).ActiveCfg = Debug|Pocket PC 2003 (ARMV4)
+ {F2CE670A-ABAE-414A-9A17-8079AB58613F}.Debug|Pocket PC 2003 (ARMV4).Build.0 = Debug|Pocket PC 2003 (ARMV4)
+ {F2CE670A-ABAE-414A-9A17-8079AB58613F}.Debug|Pocket PC 2003 (ARMV4).Deploy.0 = Debug|Pocket PC 2003 (ARMV4)
+ {F2CE670A-ABAE-414A-9A17-8079AB58613F}.Debug|Smartphone 2003 (ARMV4).ActiveCfg = Debug|Smartphone 2003 (ARMV4)
+ {F2CE670A-ABAE-414A-9A17-8079AB58613F}.Debug|Smartphone 2003 (ARMV4).Build.0 = Debug|Smartphone 2003 (ARMV4)
+ {F2CE670A-ABAE-414A-9A17-8079AB58613F}.Debug|Smartphone 2003 (ARMV4).Deploy.0 = Debug|Smartphone 2003 (ARMV4)
+ {F2CE670A-ABAE-414A-9A17-8079AB58613F}.Release|Pocket PC 2003 (ARMV4).ActiveCfg = Release|Pocket PC 2003 (ARMV4)
+ {F2CE670A-ABAE-414A-9A17-8079AB58613F}.Release|Pocket PC 2003 (ARMV4).Build.0 = Release|Pocket PC 2003 (ARMV4)
+ {F2CE670A-ABAE-414A-9A17-8079AB58613F}.Release|Pocket PC 2003 (ARMV4).Deploy.0 = Release|Pocket PC 2003 (ARMV4)
+ {F2CE670A-ABAE-414A-9A17-8079AB58613F}.Release|Smartphone 2003 (ARMV4).ActiveCfg = Release|Smartphone 2003 (ARMV4)
+ {F2CE670A-ABAE-414A-9A17-8079AB58613F}.Release|Smartphone 2003 (ARMV4).Build.0 = Release|Smartphone 2003 (ARMV4)
+ {F2CE670A-ABAE-414A-9A17-8079AB58613F}.Release|Smartphone 2003 (ARMV4).Deploy.0 = Release|Smartphone 2003 (ARMV4)
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/db/build_wince/Berkeley_DB.vcw b/db/build_wince/Berkeley_DB.vcw
new file mode 100644
index 000000000..8732cc0b6
--- /dev/null
+++ b/db/build_wince/Berkeley_DB.vcw
@@ -0,0 +1,56 @@
+Microsoft eMbedded Visual Tools Workspace File, Format Version 4.00
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+
+###############################################################################
+
+Project: "db_small"=.\db_small.vcp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "db_static"=.\db_static.vcp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "wce_tpcb"=.\wce_tpcb.vcp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name db_static
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
diff --git a/db/build_wince/app_vcp.src b/db/build_wince/app_vcp.src
new file mode 100644
index 000000000..c0fd8369d
--- /dev/null
+++ b/db/build_wince/app_vcp.src
@@ -0,0 +1,181 @@
+# Microsoft eMbedded Visual Tools Project File - Name="@project_name@" - Package Owner=<4>
+# Microsoft eMbedded Visual Tools Generated Build File, Format Version 6.02
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (WCE ARMV4) Application" 0xa301
+# TARGTYPE "Win32 (WCE emulator) Application" 0xa601
+
+CFG=@project_name@ - Win32 (WCE emulator) Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "@project_name@.vcn".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "@project_name@.vcn" CFG="@project_name@ - Win32 (WCE emulator) Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "@project_name@ - Win32 (WCE emulator) Release" (based on "Win32 (WCE emulator) Application")
+!MESSAGE "@project_name@ - Win32 (WCE emulator) Debug" (based on "Win32 (WCE emulator) Application")
+!MESSAGE "@project_name@ - Win32 (WCE ARMV4) Release" (based on "Win32 (WCE ARMV4) Application")
+!MESSAGE "@project_name@ - Win32 (WCE ARMV4) Debug" (based on "Win32 (WCE ARMV4) Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+# PROP ATL_Project 2
+
+!IF "$(CFG)" == "@project_name@ - Win32 (WCE emulator) Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "@lib_rel_dest@_EMU"
+# PROP BASE Intermediate_Dir "@lib_rel_dest@_EMU/@project_name@"
+# PROP BASE CPU_ID "{32E52003-403E-442D-BE48-DE10F8C6131D}"
+# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "@lib_rel_dest@_EMU"
+# PROP Intermediate_Dir "@lib_rel_dest@_EMU/@project_name@"
+# PROP CPU_ID "{32E52003-403E-442D-BE48-DE10F8C6131D}"
+# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
+# PROP Target_Dir ""
+RSC=rc.exe
+# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "NDEBUG" /d "$(CePlatform)" /d "_X86_" /d "x86" /d "_i386_" /r
+# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "NDEBUG" /d "$(CePlatform)" /d "_X86_" /d "x86" /d "_i386_" /r
+CPP=cl.exe
+# ADD BASE CPP /nologo /W3 /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "_i386_" /D UNDER_CE=$(CEVersion) /D "i_386_" /D "UNICODE" /D "_UNICODE" /D "_X86_" /D "x86" /D "NDEBUG" /Gs8192 @extra_cppflags@ /GF /O2 /c
+# ADD CPP /nologo /W3 /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "_i386_" /D UNDER_CE=$(CEVersion) /I "." /I ".." /D "_i386_" /D "UNICODE" /D "_UNICODE" /D "_X86_" /D "x86" /D "NDEBUG" /D "__NO_SYSTEM_INCLUDES" /Gs8192 @extra_cppflags@ /GF /O2 /c
+MTL=midl.exe
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@s.lib commctrl.lib coredll.lib $(CEx86Corelibc) /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /nodefaultlib:"OLDNAMES.lib" /nodefaultlib:$(CENoDefaultLib) /subsystem:$(CESubsystem) /MACHINE:IX86 /libpath:"@lib_rel_dest@_EMU"
+# ADD LINK32 libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@s.lib commctrl.lib coredll.lib $(CEx86Corelibc) /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /nodefaultlib:"OLDNAMES.lib" /nodefaultlib:$(CENoDefaultLib) /subsystem:$(CESubsystem) /MACHINE:IX86 /libpath:"@lib_rel_dest@_EMU"
+
+!ELSEIF "$(CFG)" == "@project_name@ - Win32 (WCE emulator) Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "@lib_debug_dest@_EMU"
+# PROP BASE Intermediate_Dir "@lib_debug_dest@_EMU\@project_name@"
+# PROP BASE CPU_ID "{32E52003-403E-442D-BE48-DE10F8C6131D}"
+# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "@lib_debug_dest@_EMU"
+# PROP Intermediate_Dir "@lib_debug_dest@_EMU\@project_name@"
+# PROP CPU_ID "{32E52003-403E-442D-BE48-DE10F8C6131D}"
+# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+RSC=rc.exe
+# ADD BASE RSC /l 0x409 /d "$(CePlatform)" /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "DEBUG" /d "_X86_" /d "x86" /d "_i386_" /r
+# ADD RSC /l 0x409 /d "$(CePlatform)" /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "DEBUG" /d "_X86_" /d "x86" /d "_i386_" /r
+CPP=cl.exe
+# ADD BASE CPP /nologo /W3 /Zi /Od /D "DEBUG" /D "_i386_" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "i_386_" /D "UNICODE" /D "_UNICODE" /D "_X86_" /D "x86" /Gs8192 @extra_cppflags@ /GF /c
+# ADD CPP /nologo /W3 /Zi /Od /I "." /I ".." /D "DEBUG" /D "_i386_" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "i_386_" /D "UNICODE" /D "_UNICODE" /D "_X86_" /D "x86" /D "__NO_SYSTEM_INCLUDES" /Gs8192 @extra_cppflags@ /GF /c
+# SUBTRACT CPP
+MTL=midl.exe
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@sd.lib commctrl.lib coredll.lib $(CEx86Corelibc) /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /debug /nodefaultlib:"OLDNAMES.lib" /nodefaultlib:$(CENoDefaultLib) /subsystem:$(CESubsystem) /MACHINE:IX86 /libpath:"@lib_debug_dest@_EMU"
+# ADD LINK32 libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@sd.lib commctrl.lib coredll.lib $(CEx86Corelibc) /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /debug /nodefaultlib:"OLDNAMES.lib" /nodefaultlib:$(CENoDefaultLib) /out:"Debug_EMU/@project_name@.exe" /subsystem:$(CESubsystem) /MACHINE:IX86 /libpath:"@lib_debug_dest@_EMU"
+
+!ELSEIF "$(CFG)" == "@project_name@ - Win32 (WCE ARMV4) Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "@lib_rel_dest@_ARMV4"
+# PROP BASE Intermediate_Dir "Release_ARMV4/@project_name@"
+# PROP BASE CPU_ID "{ECBEA43D-CD7B-4852-AD55-D4227B5D624B}"
+# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "@lib_rel_dest@_ARMV4"
+# PROP Intermediate_Dir "Release_ARMV4/@project_name@"
+# PROP CPU_ID "{ECBEA43D-CD7B-4852-AD55-D4227B5D624B}"
+# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
+# PROP Target_Dir ""
+RSC=rc.exe
+# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "NDEBUG" /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /d "ARM" /d "_ARM_" /d "ARMV4" /r
+# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "NDEBUG" /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /d "ARM" /d "_ARM_" /d "ARMV4" /r
+CPP=clarm.exe
+# ADD BASE CPP /nologo /W3 /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "ARM" /D "_ARM_" /D "ARMV4" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "NDEBUG" /O2 /M$(CECrtMT) @extra_cppflags@ /c
+# ADD CPP /nologo /W3 /I "." /I ".." /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "ARM" /D "_ARM_" /D "ARMV4" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "NDEBUG" /O2 /M$(CECrtMT) @extra_cppflags@ /c
+# SUBTRACT CPP
+MTL=midl.exe
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@s.lib commctrl.lib coredll.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /align:"4096" /MACHINE:ARM /libpath:"@lib_rel_dest@_ARMV4"
+# ADD LINK32 libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@s.lib commctrl.lib coredll.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /align:"4096" /MACHINE:ARM /libpath:"@lib_rel_dest@_ARMV4"
+
+!ELSEIF "$(CFG)" == "@project_name@ - Win32 (WCE ARMV4) Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "@lib_debug_dest@_ARMV4"
+# PROP BASE Intermediate_Dir "Debug_ARMV4/@project_name@"
+# PROP BASE CPU_ID "{ECBEA43D-CD7B-4852-AD55-D4227B5D624B}"
+# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "@lib_debug_dest@_ARMV4"
+# PROP Intermediate_Dir "Debug_ARMV4/@project_name@"
+# PROP CPU_ID "{ECBEA43D-CD7B-4852-AD55-D4227B5D624B}"
+# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
+# PROP Target_Dir ""
+RSC=rc.exe
+# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "DEBUG" /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /d "ARM" /d "_ARM_" /d "ARMV4" /r
+# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "DEBUG" /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /d "ARM" /d "_ARM_" /d "ARMV4" /r
+CPP=clarm.exe
+# ADD BASE CPP /nologo /W3 /Zi /Od /D "DEBUG" /D "ARM" /D "_ARM_" /D "ARMV4" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "UNICODE" /D "_UNICODE" /M$(CECrtMTDebug) @extra_cppflags@ /c
+# ADD CPP /nologo /W3 /Zi /Od /I "." /I ".." /D "DEBUG" /D "ARM" /D "_ARM_" /D "ARMV4" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "UNICODE" /D "_UNICODE" /M$(CECrtMTDebug) @extra_cppflags@ /c
+# SUBTRACT CPP
+MTL=midl.exe
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@sd.lib commctrl.lib coredll.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /debug /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /align:"4096" /MACHINE:ARM /libpath:"@lib_debug_dest@_ARMV4"
+# ADD LINK32 libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@sd.lib commctrl.lib coredll.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /debug /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /align:"4096" /MACHINE:ARM /libpath:"@lib_debug_dest@_ARMV4"
+
+!ENDIF
+
+# Begin Target
+
+# Name "@project_name@ - Win32 (WCE emulator) Release"
+# Name "@project_name@ - Win32 (WCE emulator) Debug"
+# Name "@project_name@ - Win32 (WCE ARMV4) Release"
+# Name "@project_name@ - Win32 (WCE ARMV4) Debug"
+
+# Begin Group "Files"
+
+@SOURCE_FILES@
+
+# End Group
+
+# End Target
+# End Project
diff --git a/db/build_wince/app_vcproj.src b/db/build_wince/app_vcproj.src
new file mode 100644
index 000000000..550a8b74c
--- /dev/null
+++ b/db/build_wince/app_vcproj.src
@@ -0,0 +1,433 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="@project_name@"
+ ProjectGUID="{@PROJ_GUID@}"
+ >
+ <Platforms>
+ <Platform
+ Name="Smartphone 2003 (ARMV4)"
+ />
+ <Platform
+ Name="Pocket PC 2003 (ARMV4)"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ OutputDirectory="$(ConfigurationName)_Smartphone2003_ARMV4\@project_name@"
+ IntermediateDirectory="$(ConfigurationName)_Smartphone2003_ARMV4\@project_name@"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="_DEBUG"
+ MkTypLibCompatible="true"
+ SuppressStartupBanner="true"
+ TargetEnvironment="1"
+ TypeLibraryName="$(ConfigurationName)_Smartphone2003_ARMV4/@project_name@.tlb"
+ HeaderFileName=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ ExecutionBucket="7"
+ Optimization="0"
+ AdditionalIncludeDirectories=".,.."
+ PreprocessorDefinitions="DEBUG;ARM;_ARM_;ARMV4;UNDER_CE=$(CEVER);_WIN32_WCE=$(CEVER);$(CePlatform);UNICODE;__NO_SYSTEM_INCLUDES;@extra_cppflags@"
+ RuntimeLibrary="1"
+ PrecompiledHeaderFile="$(ConfigurationName)_Smartphone2003_ARMV4/@project_name@.pch"
+ AssemblerListingLocation="$(ConfigurationName)_Smartphone2003_ARMV4/"
+ ObjectFile="$(ConfigurationName)_Smartphone2003_ARMV4\@project_name@/"
+ ProgramDataBaseFileName="$(ConfigurationName)_Smartphone2003_ARMV4/"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ AdditionalOptions="/r "
+ PreprocessorDefinitions="UNDER_CE=$(CEVER),_WIN32_WCE=$(CEVER),DEBUG,UNICODE,_UNICODE,$(CePlatform),ARM,_ARM_,ARMV4"
+ Culture="1033"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/ALIGN:4096 /subsystem:$(CESubsystem) /MACHINE:ARM "
+ AdditionalDependencies="libdb46sd.lib commctrl.lib coredll.lib secchk.lib ccrtrtti.lib"
+ OutputFile="$(ConfigurationName)_Smartphone2003_ARMV4/@project_name@.exe"
+ LinkIncremental="2"
+ SuppressStartupBanner="true"
+ AdditionalLibraryDirectories="$(ConfigurationName)_Smartphone2003_ARMV4"
+ IgnoreDefaultLibraryNames="$(CENoDefaultLib)"
+ GenerateDebugInformation="true"
+ ProgramDatabaseFile="$(ConfigurationName)_Smartphone2003_ARMV4/@project_name@.pdb"
+ StackReserveSize="65536"
+ StackCommitSize="4096"
+ EntryPointSymbol="WinMainCRTStartup"
+ BaseAddress="0x00010000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ SuppressStartupBanner="true"
+ OutputFile="$(ConfigurationName)_Smartphone2003_ARMV4/@project_name@.bsc"
+ />
+ <Tool
+ Name="VCCodeSignTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ <DeploymentTool
+ ForceDirty="-1"
+ RemoteDirectory=""
+ RegisterOutput="0"
+ AdditionalFiles=""
+ />
+ <DebuggerTool
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ OutputDirectory="$(ConfigurationName)_PocketPC2003_ARMV4\@project_name@"
+ IntermediateDirectory="$(ConfigurationName)_PocketPC2003_ARMV4\@project_name@"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="_DEBUG"
+ MkTypLibCompatible="true"
+ SuppressStartupBanner="true"
+ TargetEnvironment="1"
+ TypeLibraryName="$(ConfigurationName)_PocketPC2003_ARMV4/@project_name@.tlb"
+ HeaderFileName=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ ExecutionBucket="7"
+ Optimization="0"
+ AdditionalIncludeDirectories=".,.."
+ PreprocessorDefinitions="DEBUG;ARM;_ARM_;ARMV4;UNDER_CE=$(CEVER);_WIN32_WCE=$(CEVER);$(CePlatform);UNICODE;__NO_SYSTEM_INCLUDES;@extra_cppflags@"
+ RuntimeLibrary="1"
+ PrecompiledHeaderFile="$(ConfigurationName)_PocketPC2003_ARMV4/@project_name@.pch"
+ AssemblerListingLocation="$(ConfigurationName)_PocketPC2003_ARMV4/"
+ ObjectFile="$(ConfigurationName)_PocketPC2003_ARMV4\@project_name@/"
+ ProgramDataBaseFileName="$(ConfigurationName)_PocketPC2003_ARMV4/"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ AdditionalOptions="/r "
+ PreprocessorDefinitions="UNDER_CE=$(CEVER),_WIN32_WCE=$(CEVER),DEBUG,UNICODE,_UNICODE,$(CePlatform),ARM,_ARM_,ARMV4"
+ Culture="1033"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/ALIGN:4096 /subsystem:$(CESubsystem) /MACHINE:ARM "
+ AdditionalDependencies="libdb46sd.lib commctrl.lib coredll.lib secchk.lib ccrtrtti.lib"
+ OutputFile="$(ConfigurationName)_PocketPC2003_ARMV4/@project_name@.exe"
+ LinkIncremental="2"
+ SuppressStartupBanner="true"
+ AdditionalLibraryDirectories="$(ConfigurationName)_PocketPC2003_ARMV4"
+ IgnoreDefaultLibraryNames="$(CENoDefaultLib)"
+ GenerateDebugInformation="true"
+ ProgramDatabaseFile="$(ConfigurationName)_PocketPC2003_ARMV4/@project_name@.pdb"
+ StackReserveSize="65536"
+ StackCommitSize="4096"
+ EntryPointSymbol="WinMainCRTStartup"
+ BaseAddress="0x00010000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ SuppressStartupBanner="true"
+ OutputFile="$(ConfigurationName)_PocketPC2003_ARMV4/@project_name@.bsc"
+ />
+ <Tool
+ Name="VCCodeSignTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ <DeploymentTool
+ ForceDirty="-1"
+ RemoteDirectory=""
+ RegisterOutput="0"
+ AdditionalFiles=""
+ />
+ <DebuggerTool
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ OutputDirectory="$(ConfigurationName)_Smartphone2003_ARMV4\@project_name@"
+ IntermediateDirectory="$(ConfigurationName)_Smartphone2003_ARMV4\@project_name@"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="NDEBUG"
+ MkTypLibCompatible="true"
+ SuppressStartupBanner="true"
+ TargetEnvironment="1"
+ TypeLibraryName="$(ConfigurationName)_Smartphone2003_ARMV4/@project_name@.tlb"
+ HeaderFileName=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ ExecutionBucket="7"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories=".,.."
+ PreprocessorDefinitions="_WIN32_WCE=$(CEVER);$(CePlatform);ARM;_ARM_;ARMV4;UNDER_CE=$(CEVER);UNICODE;NDEBUG;__NO_SYSTEM_INCLUDES;@extra_cppflags@"
+ StringPooling="true"
+ RuntimeLibrary="0"
+ EnableFunctionLevelLinking="true"
+ PrecompiledHeaderFile="$(ConfigurationName)_Smartphone2003_ARMV4/@project_name@.pch"
+ AssemblerListingLocation="$(ConfigurationName)_Smartphone2003_ARMV4/"
+ ObjectFile="$(ConfigurationName)_Smartphone2003_ARMV4\@project_name@/"
+ ProgramDataBaseFileName="$(ConfigurationName)_Smartphone2003_ARMV4/"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ AdditionalOptions="/r "
+ PreprocessorDefinitions="UNDER_CE=$(CEVER),_WIN32_WCE=$(CEVER),NDEBUG,UNICODE,_UNICODE,$(CePlatform),ARM,_ARM_,ARMV4"
+ Culture="1033"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/ALIGN:4096 /subsystem:$(CESubsystem) /MACHINE:ARM "
+ AdditionalDependencies="libdb46s.lib commctrl.lib coredll.lib secchk.lib ccrtrtti.lib"
+ OutputFile="$(ConfigurationName)_Smartphone2003_ARMV4/@project_name@.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="true"
+ AdditionalLibraryDirectories="$(ConfigurationName)_Smartphone2003_ARMV4"
+ IgnoreDefaultLibraryNames="$(CENoDefaultLib)"
+ ProgramDatabaseFile="$(ConfigurationName)_Smartphone2003_ARMV4/@project_name@.pdb"
+ StackReserveSize="65536"
+ StackCommitSize="4096"
+ EntryPointSymbol="WinMainCRTStartup"
+ BaseAddress="0x00010000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ SuppressStartupBanner="true"
+ OutputFile="$(ConfigurationName)_Smartphone2003_ARMV4/@project_name@.bsc"
+ />
+ <Tool
+ Name="VCCodeSignTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ <DeploymentTool
+ ForceDirty="-1"
+ RemoteDirectory=""
+ RegisterOutput="0"
+ AdditionalFiles=""
+ />
+ <DebuggerTool
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ OutputDirectory="$(ConfigurationName)_PocketPC2003_ARMV4\@project_name@"
+ IntermediateDirectory="$(ConfigurationName)_PocketPC2003_ARMV4\@project_name@"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="NDEBUG"
+ MkTypLibCompatible="true"
+ SuppressStartupBanner="true"
+ TargetEnvironment="1"
+ TypeLibraryName="$(ConfigurationName)_PocketPC2003_ARMV4/@project_name@.tlb"
+ HeaderFileName=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ ExecutionBucket="7"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories=".,.."
+ PreprocessorDefinitions="_WIN32_WCE=$(CEVER);$(CePlatform);ARM;_ARM_;ARMV4;UNDER_CE=$(CEVER);UNICODE;NDEBUG;__NO_SYSTEM_INCLUDES;@extra_cppflags@"
+ StringPooling="true"
+ RuntimeLibrary="0"
+ EnableFunctionLevelLinking="true"
+ PrecompiledHeaderFile="$(ConfigurationName)_PocketPC2003_ARMV4/@project_name@.pch"
+ AssemblerListingLocation="$(ConfigurationName)_PocketPC2003_ARMV4/"
+ ObjectFile="$(ConfigurationName)_PocketPC2003_ARMV4\@project_name@/"
+ ProgramDataBaseFileName="$(ConfigurationName)_PocketPC2003_ARMV4/"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ AdditionalOptions="/r "
+ PreprocessorDefinitions="UNDER_CE=$(CEVER),_WIN32_WCE=$(CEVER),NDEBUG,UNICODE,_UNICODE,$(CePlatform),ARM,_ARM_,ARMV4"
+ Culture="1033"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/ALIGN:4096 /subsystem:$(CESubsystem) /MACHINE:ARM "
+ AdditionalDependencies="libdb46s.lib commctrl.lib coredll.lib secchk.lib ccrtrtti.lib"
+ OutputFile="$(ConfigurationName)_PocketPC2003_ARMV4/@project_name@.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="true"
+ AdditionalLibraryDirectories="$(ConfigurationName)_PocketPC2003_ARMV4"
+ IgnoreDefaultLibraryNames="$(CENoDefaultLib)"
+ ProgramDatabaseFile="$(ConfigurationName)_PocketPC2003_ARMV4/@project_name@.pdb"
+ StackReserveSize="65536"
+ StackCommitSize="4096"
+ EntryPointSymbol="WinMainCRTStartup"
+ BaseAddress="0x00010000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ SuppressStartupBanner="true"
+ OutputFile="$(ConfigurationName)_PocketPC2003_ARMV4/@project_name@.bsc"
+ />
+ <Tool
+ Name="VCCodeSignTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ <DeploymentTool
+ ForceDirty="-1"
+ RemoteDirectory=""
+ RegisterOutput="0"
+ AdditionalFiles=""
+ />
+ <DebuggerTool
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Files"
+ >
+@SOURCE_FILES@
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/db/build_wince/clib_port.h b/db/build_wince/clib_port.h
new file mode 100644
index 000000000..54ad58aa3
--- /dev/null
+++ b/db/build_wince/clib_port.h
@@ -0,0 +1,205 @@
+/* DO NOT EDIT: automatically built from dist/clib_port.in. */
+/*
+ * Minimum/maximum values for various types.
+ */
+#ifndef UINT16_MAX /* Maximum 16-bit unsigned. */
+#define UINT16_MAX 65535
+#endif
+#ifndef UINT32_MAX /* Maximum 32-bit unsigned. */
+#define UINT32_MAX 4294967295U
+#endif
+
+#ifndef INT_MAX
+#if SIZEOF_INT == 4
+#define INT_MAX 2147483647
+#elif SIZEOF_INT == 8
+#define INT_MAX 9223372036854775807
+#endif
+#endif
+
+#ifndef INT_MIN /* minimum (signed) int value */
+#define INT_MIN (-INT_MAX-1)
+#endif
+
+#ifndef UINT_MAX /* maximum (signed) int value */
+#if SIZEOF_INT == 4
+#define UINT_MAX 4294967295U
+#elif SIZEOF_INT == 8
+#define UINT_MAX 18446744073709551615U
+#endif
+#endif
+
+#ifndef LONG_MAX /* maximum (signed) long value */
+#if SIZEOF_LONG == 4
+#define LONG_MAX 2147483647
+#elif SIZEOF_LONG == 8
+#define LONG_MAX 9223372036854775807L
+#endif
+#endif
+
+#ifndef LONG_MIN /* minimum (signed) long value */
+#define LONG_MIN (-LONG_MAX-1)
+#endif
+
+#ifndef ULONG_MAX /* maximum (unsigned) long value */
+#if SIZEOF_LONG == 4
+#define ULONG_MAX 4294967295U
+#elif SIZEOF_LONG == 8
+#define ULONG_MAX 18446744073709551615UL
+#endif
+#endif
+
+#if defined(HAVE_64BIT_TYPES)
+/*
+ * Override the system's 64-bit min/max constants. AIX's 32-bit compiler can
+ * handle 64-bit values, but the system's constants don't include the LL/ULL
+ * suffix, and so can't be compiled using the 32-bit compiler.
+ */
+#undef INT64_MAX
+#undef INT64_MIN
+#undef UINT64_MAX
+
+#ifdef DB_WIN32
+#define INT64_MAX _I64_MAX
+#define INT64_MIN _I64_MIN
+#define UINT64_MAX _UI64_MAX
+#else
+#define INT64_MAX 9223372036854775807LL
+#define INT64_MIN (-INT64_MAX-1)
+#define UINT64_MAX 18446744073709551615ULL
+#endif /* DB_WIN32 */
+
+#define INT64_FMT "%I64d"
+#define UINT64_FMT "%I64u"
+#endif /* HAVE_64BIT_TYPES */
+
+/*
+ * Exit success/failure macros.
+ */
+#ifndef HAVE_EXIT_SUCCESS
+#define EXIT_FAILURE 1
+#define EXIT_SUCCESS 0
+#endif
+
+/*
+ * Don't step on the namespace. Other libraries may have their own
+ * implementations of these functions, we don't want to use their
+ * implementations or force them to use ours based on the load order.
+ */
+#ifndef HAVE_ATOI
+#define atoi __db_Catoi
+#endif
+#ifndef HAVE_ATOL
+#define atol __db_Catol
+#endif
+#ifndef HAVE_FCLOSE
+#define fclose __db_Cfclose
+#endif
+#ifndef HAVE_FGETC
+#define fgetc __db_Cfgetc
+#endif
+#ifndef HAVE_FGETS
+#define fgets __db_Cfgets
+#endif
+#ifndef HAVE_FOPEN
+#define fopen __db_Cfopen
+#endif
+#ifndef HAVE_FWRITE
+#define fwrite __db_Cfwrite
+#endif
+#ifndef HAVE_GETADDRINFO
+#define freeaddrinfo(a) __db_Cfreeaddrinfo(a)
+#define getaddrinfo(a, b, c, d) __db_Cgetaddrinfo(a, b, c, d)
+#endif
+#ifndef HAVE_GETCWD
+#define getcwd __db_Cgetcwd
+#endif
+#ifndef HAVE_GETOPT
+#define getopt __db_Cgetopt
+#define optarg __db_Coptarg
+#define opterr __db_Copterr
+#define optind __db_Coptind
+#define optopt __db_Coptopt
+#define optreset __db_Coptreset
+#endif
+#ifndef HAVE_ISALPHA
+#define isalpha __db_Cisalpha
+#endif
+#ifndef HAVE_ISDIGIT
+#define isdigit __db_Cisdigit
+#endif
+#ifndef HAVE_ISPRINT
+#define isprint __db_Cisprint
+#endif
+#ifndef HAVE_ISSPACE
+#define isspace __db_Cisspace
+#endif
+#ifndef HAVE_LOCALTIME
+#define localtime __db_Clocaltime
+#endif
+#ifndef HAVE_MEMCMP
+#define memcmp __db_Cmemcmp
+#endif
+#ifndef HAVE_MEMCPY
+#define memcpy __db_Cmemcpy
+#endif
+#ifndef HAVE_MEMMOVE
+#define memmove __db_Cmemmove
+#endif
+#ifndef HAVE_PRINTF
+#define printf __db_Cprintf
+#define fprintf __db_Cfprintf
+#endif
+#ifndef HAVE_QSORT
+#define qsort __db_Cqsort
+#endif
+#ifndef HAVE_RAISE
+#define raise __db_Craise
+#endif
+#ifndef HAVE_RAND
+#define rand __db_Crand
+#define srand __db_Csrand
+#endif
+#ifndef HAVE_SNPRINTF
+#define snprintf __db_Csnprintf
+#endif
+#ifndef HAVE_STRCASECMP
+#define strcasecmp __db_Cstrcasecmp
+#define strncasecmp __db_Cstrncasecmp
+#endif
+#ifndef HAVE_STRCAT
+#define strcat __db_Cstrcat
+#endif
+#ifndef HAVE_STRCHR
+#define strchr __db_Cstrchr
+#endif
+#ifndef HAVE_STRDUP
+#define strdup __db_Cstrdup
+#endif
+#ifndef HAVE_STRERROR
+#define strerror __db_Cstrerror
+#endif
+#ifndef HAVE_STRNCAT
+#define strncat __db_Cstrncat
+#endif
+#ifndef HAVE_STRNCMP
+#define strncmp __db_Cstrncmp
+#endif
+#ifndef HAVE_STRRCHR
+#define strrchr __db_Cstrrchr
+#endif
+#ifndef HAVE_STRSEP
+#define strsep __db_Cstrsep
+#endif
+#ifndef HAVE_STRTOL
+#define strtol __db_Cstrtol
+#endif
+#ifndef HAVE_STRTOUL
+#define strtoul __db_Cstrtoul
+#endif
+#ifndef HAVE_TIME
+#define time __db_Ctime
+#endif
+#ifndef HAVE_VSNPRINTF
+#define vsnprintf __db_Cvsnprintf
+#endif
diff --git a/db/build_wince/db.h b/db/build_wince/db.h
new file mode 100644
index 000000000..f9c4d9e20
--- /dev/null
+++ b/db/build_wince/db.h
@@ -0,0 +1,2698 @@
+/* DO NOT EDIT: automatically built by dist/s_windows. */
+/*
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
+ *
+ * $Id: db.in,v 12.158 2007/06/28 14:23:35 mjc Exp $
+ *
+ * db.h include file layout:
+ * General.
+ * Database Environment.
+ * Locking subsystem.
+ * Logging subsystem.
+ * Shared buffer cache (mpool) subsystem.
+ * Transaction subsystem.
+ * Access methods.
+ * Access method cursors.
+ * Dbm/Ndbm, Hsearch historic interfaces.
+ */
+
+#ifndef _DB_H_
+#define _DB_H_
+
+#ifndef __NO_SYSTEM_INCLUDES
+#include <sys/types.h>
+#include <stddef.h>
+#include <stdio.h>
+#endif
+
+/*
+ * Turn off inappropriate compiler warnings
+ */
+#ifdef _MSC_VER
+/*
+ * This warning is explicitly disabled in Visual C++ by default.
+ * It is necessary to explicitly enable the /Wall flag to generate this
+ * warning.
+ * Since this is a shared include file it should compile without warnings
+ * at the highest warning level, so third party applications can use
+ * higher warning levels cleanly.
+ *
+ * 4820: 'bytes' bytes padding added after member 'member'
+ * The type and order of elements caused the compiler to
+ * add padding to the end of a struct.
+ */
+#pragma warning(push)
+#pragma warning(disable: 4820)
+#endif /* _MSC_VER */
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+
+#undef __P
+#define __P(protos) protos
+
+/*
+ * Berkeley DB version information.
+ */
+#define DB_VERSION_MAJOR 4
+#define DB_VERSION_MINOR 6
+#define DB_VERSION_PATCH 18
+#define DB_VERSION_STRING "Berkeley DB 4.6.18: (July 17, 2007)"
+
+/*
+ * !!!
+ * Berkeley DB uses specifically sized types. If they're not provided by
+ * the system, typedef them here.
+ *
+ * We protect them against multiple inclusion using __BIT_TYPES_DEFINED__,
+ * as does BIND and Kerberos, since we don't know for sure what #include
+ * files the user is using.
+ *
+ * !!!
+ * We also provide the standard u_int, u_long etc., if they're not provided
+ * by the system.
+ */
+#ifndef __BIT_TYPES_DEFINED__
+#define __BIT_TYPES_DEFINED__
+typedef unsigned char u_int8_t;
+typedef short int16_t;
+typedef unsigned short u_int16_t;
+typedef int int32_t;
+typedef unsigned int u_int32_t;
+typedef __int64 int64_t;
+typedef unsigned __int64 u_int64_t;
+#endif
+
+#ifndef _WINSOCKAPI_
+typedef unsigned char u_char;
+typedef unsigned int u_int;
+typedef unsigned long u_long;
+#endif
+typedef unsigned short u_short;
+
+/*
+ * Missing ANSI types.
+ *
+ * uintmax_t --
+ * Largest unsigned type, used to align structures in memory. We don't store
+ * floating point types in structures, so integral types should be sufficient
+ * (and we don't have to worry about systems that store floats in other than
+ * power-of-2 numbers of bytes). Additionally this fixes compilers that rewrite
+ * structure assignments and ANSI C memcpy calls to be in-line instructions
+ * that happen to require alignment.
+ *
+ * uintptr_t --
+ * Unsigned type that's the same size as a pointer. There are places where
+ * DB modifies pointers by discarding the bottom bits to guarantee alignment.
+ * We can't use uintmax_t, it may be larger than the pointer, and compilers
+ * get upset about that. So far we haven't run on any machine where there's
+ * no unsigned type the same size as a pointer -- here's hoping.
+ */
+typedef u_int64_t uintmax_t;
+#ifdef _WIN64
+typedef u_int64_t uintptr_t;
+#else
+typedef u_int32_t uintptr_t;
+#endif
+
+/*
+ * Windows defines off_t to long (i.e., 32 bits). We need to pass 64-bit
+ * file offsets, so we declare our own.
+ */
+#define off_t __db_off_t
+typedef int64_t off_t;
+typedef int pid_t;
+#ifdef _WIN64
+typedef int64_t ssize_t;
+#else
+typedef int32_t ssize_t;
+#endif
+
+/*
+ * Sequences are only available on machines with 64-bit integral types.
+ */
+typedef int64_t db_seq_t;
+
+/* Thread and process identification. */
+typedef u_int32_t db_threadid_t;
+
+/* Basic types that are exported or quasi-exported. */
+typedef u_int32_t db_pgno_t; /* Page number type. */
+typedef u_int16_t db_indx_t; /* Page offset type. */
+#define DB_MAX_PAGES 0xffffffff /* >= # of pages in a file */
+
+typedef u_int32_t db_recno_t; /* Record number type. */
+#define DB_MAX_RECORDS 0xffffffff /* >= # of records in a tree */
+
+typedef u_int32_t db_timeout_t; /* Type of a timeout. */
+
+/*
+ * Region offsets are the difference between a pointer in a region and the
+ * region's base address. With private environments, both addresses are the
+ * result of calling malloc, and we can't assume anything about what malloc
+ * will return, so region offsets have to be able to hold differences between
+ * arbitrary pointers.
+ */
+typedef uintptr_t roff_t;
+
+/*
+ * Forward structure declarations, so we can declare pointers and
+ * applications can get type checking.
+ */
+struct __db; typedef struct __db DB;
+struct __db_bt_stat; typedef struct __db_bt_stat DB_BTREE_STAT;
+struct __db_cipher; typedef struct __db_cipher DB_CIPHER;
+struct __db_compact; typedef struct __db_compact DB_COMPACT;
+struct __db_dbt; typedef struct __db_dbt DBT;
+struct __db_env; typedef struct __db_env DB_ENV;
+struct __db_h_stat; typedef struct __db_h_stat DB_HASH_STAT;
+struct __db_ilock; typedef struct __db_ilock DB_LOCK_ILOCK;
+struct __db_lock_stat; typedef struct __db_lock_stat DB_LOCK_STAT;
+struct __db_lock_hstat; typedef struct __db_lock_hstat DB_LOCK_HSTAT;
+struct __db_lock_u; typedef struct __db_lock_u DB_LOCK;
+struct __db_locker; typedef struct __db_locker DB_LOCKER;
+struct __db_lockreq; typedef struct __db_lockreq DB_LOCKREQ;
+struct __db_locktab; typedef struct __db_locktab DB_LOCKTAB;
+struct __db_log; typedef struct __db_log DB_LOG;
+struct __db_log_cursor; typedef struct __db_log_cursor DB_LOGC;
+struct __db_log_stat; typedef struct __db_log_stat DB_LOG_STAT;
+struct __db_lsn; typedef struct __db_lsn DB_LSN;
+struct __db_mpool; typedef struct __db_mpool DB_MPOOL;
+struct __db_mpool_fstat;typedef struct __db_mpool_fstat DB_MPOOL_FSTAT;
+struct __db_mpool_stat; typedef struct __db_mpool_stat DB_MPOOL_STAT;
+struct __db_mpoolfile; typedef struct __db_mpoolfile DB_MPOOLFILE;
+struct __db_mutex_stat; typedef struct __db_mutex_stat DB_MUTEX_STAT;
+struct __db_mutex_t; typedef struct __db_mutex_t DB_MUTEX;
+struct __db_mutexmgr; typedef struct __db_mutexmgr DB_MUTEXMGR;
+struct __db_preplist; typedef struct __db_preplist DB_PREPLIST;
+struct __db_qam_stat; typedef struct __db_qam_stat DB_QUEUE_STAT;
+struct __db_rep; typedef struct __db_rep DB_REP;
+struct __db_rep_stat; typedef struct __db_rep_stat DB_REP_STAT;
+struct __db_repmgr_site; \
+ typedef struct __db_repmgr_site DB_REPMGR_SITE;
+struct __db_repmgr_stat; \
+ typedef struct __db_repmgr_stat DB_REPMGR_STAT;
+struct __db_seq_record; typedef struct __db_seq_record DB_SEQ_RECORD;
+struct __db_seq_stat; typedef struct __db_seq_stat DB_SEQUENCE_STAT;
+struct __db_sequence; typedef struct __db_sequence DB_SEQUENCE;
+struct __db_txn; typedef struct __db_txn DB_TXN;
+struct __db_txn_active; typedef struct __db_txn_active DB_TXN_ACTIVE;
+struct __db_txn_stat; typedef struct __db_txn_stat DB_TXN_STAT;
+struct __db_txnmgr; typedef struct __db_txnmgr DB_TXNMGR;
+struct __dbc; typedef struct __dbc DBC;
+struct __dbc_internal; typedef struct __dbc_internal DBC_INTERNAL;
+struct __fh_t; typedef struct __fh_t DB_FH;
+struct __fname; typedef struct __fname FNAME;
+struct __key_range; typedef struct __key_range DB_KEY_RANGE;
+struct __mpoolfile; typedef struct __mpoolfile MPOOLFILE;
+
+/* Key/data structure -- a Data-Base Thang. */
+struct __db_dbt {
+ void *data; /* Key/data */
+ u_int32_t size; /* key/data length */
+
+ u_int32_t ulen; /* RO: length of user buffer. */
+ u_int32_t dlen; /* RO: get/put record length. */
+ u_int32_t doff; /* RO: get/put record offset. */
+
+ void *app_data;
+
+#define DB_DBT_APPMALLOC 0x001 /* Callback allocated memory. */
+#define DB_DBT_DUPOK 0x002 /* Insert if duplicate. */
+#define DB_DBT_ISSET 0x004 /* Lower level calls set value. */
+#define DB_DBT_MALLOC 0x008 /* Return in malloc'd memory. */
+#define DB_DBT_MULTIPLE 0x010 /* References multiple records. */
+#define DB_DBT_PARTIAL 0x020 /* Partial put/get. */
+#define DB_DBT_REALLOC 0x040 /* Return in realloc'd memory. */
+#define DB_DBT_USERCOPY 0x080 /* Use the user-supplied callback. */
+#define DB_DBT_USERMEM 0x100 /* Return in user's memory. */
+ u_int32_t flags;
+};
+
+/*
+ * Common flags --
+ * Interfaces which use any of these common flags should never have
+ * interface specific flags in this range.
+ */
+#define DB_CREATE 0x0000001 /* Create file as necessary. */
+#define DB_DURABLE_UNKNOWN 0x0000002 /* Durability on open (internal). */
+#define DB_FORCE 0x0000004 /* Force (anything). */
+#define DB_MULTIVERSION 0x0000008 /* Multiversion concurrency control. */
+#define DB_NOMMAP 0x0000010 /* Don't mmap underlying file. */
+#define DB_RDONLY 0x0000020 /* Read-only (O_RDONLY). */
+#define DB_RECOVER 0x0000040 /* Run normal recovery. */
+#define DB_THREAD 0x0000080 /* Applications are threaded. */
+#define DB_TRUNCATE 0x0000100 /* Discard existing DB (O_TRUNC). */
+#define DB_TXN_NOSYNC 0x0000200 /* Do not sync log on commit. */
+#define DB_TXN_NOWAIT 0x0000400 /* Do not wait for locks. */
+#define DB_TXN_NOT_DURABLE 0x0000800 /* Do not log changes. */
+#define DB_TXN_WRITE_NOSYNC 0x0001000 /* Write the log but don't sync. */
+#define DB_SPARE_FLAG 0x0002000 /* Spare. */
+
+/*
+ * Common flags --
+ * Interfaces which use any of these common flags should never have
+ * interface specific flags in this range.
+ *
+ * DB_AUTO_COMMIT:
+ * DB_ENV->set_flags, DB->open
+ * (Note: until the 4.3 release, legal to DB->associate, DB->del,
+ * DB->put, DB->remove, DB->rename and DB->truncate, and others.)
+ * DB_READ_COMMITTED:
+ * DB->cursor, DB->get, DB->join, DBcursor->get, DB_ENV->txn_begin
+ * DB_READ_UNCOMMITTED:
+ * DB->cursor, DB->get, DB->join, DB->open, DBcursor->get,
+ * DB_ENV->txn_begin
+ * DB_TXN_SNAPSHOT:
+ * DB_ENV->set_flags, DB_ENV->txn_begin, DB->cursor
+ *
+ * !!!
+ * The DB_READ_COMMITTED and DB_READ_UNCOMMITTED bit masks can't be changed
+ * without also changing the masks for the flags that can be OR'd into DB
+ * access method and cursor operation values.
+ */
+#define DB_IGNORE_LEASE 0x01000000/* Ignore leases. */
+#define DB_AUTO_COMMIT 0x02000000/* Implied transaction. */
+
+#define DB_READ_COMMITTED 0x04000000/* Degree 2 isolation. */
+#define DB_DEGREE_2 0x04000000/* Historic name. */
+
+#define DB_READ_UNCOMMITTED 0x08000000/* Degree 1 isolation. */
+#define DB_DIRTY_READ 0x08000000/* Historic name. */
+
+#define DB_TXN_SNAPSHOT 0x10000000/* Snapshot isolation. */
+
+/*
+ * Flags common to db_env_create and db_create.
+ */
+#define DB_CXX_NO_EXCEPTIONS 0x0000001 /* C++: return error values. */
+
+/*
+ * Flags private to db_env_create.
+ * Shared flags up to 0x0000001 */
+#define DB_RPCCLIENT 0x0000002 /* An RPC client environment. */
+
+/*
+ * Flags private to db_create.
+ * Shared flags up to 0x0000001 */
+#define DB_XA_CREATE 0x0000002 /* Open in an XA environment. */
+
+/*
+ * Flags shared by DB_ENV->remove and DB_ENV->open.
+ * Shared flags up to 0x0002000 */
+#define DB_USE_ENVIRON 0x0004000 /* Use the environment. */
+#define DB_USE_ENVIRON_ROOT 0x0008000 /* Use the environment if root. */
+/*
+ * Flags private to DB_ENV->open.
+ */
+#define DB_INIT_CDB 0x0010000 /* Concurrent Access Methods. */
+#define DB_INIT_LOCK 0x0020000 /* Initialize locking. */
+#define DB_INIT_LOG 0x0040000 /* Initialize logging. */
+#define DB_INIT_MPOOL 0x0080000 /* Initialize mpool. */
+#define DB_INIT_REP 0x0100000 /* Initialize replication. */
+#define DB_INIT_TXN 0x0200000 /* Initialize transactions. */
+#define DB_LOCKDOWN 0x0400000 /* Lock memory into physical core. */
+#define DB_PRIVATE 0x0800000 /* DB_ENV is process local. */
+#define DB_RECOVER_FATAL 0x1000000 /* Run catastrophic recovery. */
+#define DB_REGISTER 0x2000000 /* Multi-process registry. */
+#define DB_SYSTEM_MEM 0x4000000 /* Use system-backed memory. */
+
+#define DB_JOINENV 0x0 /* Compatibility. */
+
+/*
+ * Flags private to DB->open.
+ * Shared flags up to 0x0002000 */
+#define DB_EXCL 0x0004000 /* Exclusive open (O_EXCL). */
+#define DB_FCNTL_LOCKING 0x0008000 /* UNDOC: fcntl(2) locking. */
+#define DB_NO_AUTO_COMMIT 0x0010000 /* Override env-wide AUTOCOMMIT. */
+#define DB_RDWRMASTER 0x0020000 /* UNDOC: allow subdb master open R/W */
+#define DB_WRITEOPEN 0x0040000 /* UNDOC: open with write lock. */
+
+/*
+ * Flags private to DB->associate.
+ * Shared flags up to 0x0002000 */
+#define DB_IMMUTABLE_KEY 0x0004000 /* Secondary key is immutable. */
+/* Shared flags at 0x1000000 */
+
+/*
+ * Flags private to DB_ENV->txn_begin.
+ * Shared flags up to 0x0002000 */
+#define DB_TXN_SYNC 0x0004000 /* Always sync log on commit. */
+#define DB_TXN_WAIT 0x0008000 /* Always wait for locks in this TXN. */
+
+/*
+ * Flags private to DB_ENV->txn_checkpoint.
+ * Shared flags up to 0x0002000 */
+#define DB_CKP_INTERNAL 0x0004000 /* Internally generated checkpoint. */
+
+/*
+ * Flags private to DB_ENV->set_encrypt.
+ */
+#define DB_ENCRYPT_AES 0x0000001 /* AES, assumes SHA1 checksum */
+
+/*
+ * Flags private to DB_ENV->set_flags.
+ * Shared flags up to 0x00002000 */
+#define DB_CDB_ALLDB 0x00004000/* Set CDB locking per environment. */
+#define DB_DIRECT_DB 0x00008000/* Don't buffer databases in the OS. */
+#define DB_DIRECT_LOG 0x00010000/* Don't buffer log files in the OS. */
+#define DB_DSYNC_DB 0x00020000/* Set O_DSYNC on the databases. */
+#define DB_DSYNC_LOG 0x00040000/* Set O_DSYNC on the log. */
+#define DB_LOG_AUTOREMOVE 0x00080000/* Automatically remove log files. */
+#define DB_LOG_INMEMORY 0x00100000/* Store logs in buffers in memory. */
+#define DB_NOLOCKING 0x00200000/* Set locking/mutex behavior. */
+#define DB_NOPANIC 0x00400000/* Set panic state per DB_ENV. */
+#define DB_OVERWRITE 0x00800000/* Overwrite unlinked region files. */
+#define DB_PANIC_ENVIRONMENT 0x01000000/* Set panic state per environment. */
+/* Shared flags at 0x02000000 */
+/* Shared flags at 0x04000000 */
+/* Shared flags at 0x08000000 */
+/* Shared flags at 0x10000000 */
+#define DB_REGION_INIT 0x20000000/* Page-fault regions on open. */
+#define DB_TIME_NOTGRANTED 0x40000000/* Return NOTGRANTED on timeout. */
+#define DB_YIELDCPU 0x80000000/* Yield the CPU (a lot). */
+
+/*
+ * Flags private to DB->set_feedback's callback.
+ */
+#define DB_UPGRADE 0x0000001 /* Upgrading. */
+#define DB_VERIFY 0x0000002 /* Verifying. */
+
+/*
+ * Flags private to DB->compact.
+ * Shared flags up to 0x00002000
+ */
+#define DB_FREELIST_ONLY 0x00004000 /* Just sort and truncate. */
+#define DB_FREE_SPACE 0x00008000 /* Free space . */
+#define DB_COMPACT_FLAGS \
+ (DB_FREELIST_ONLY | DB_FREE_SPACE)
+
+/*
+ * Flags private to DB_MPOOLFILE->open.
+ * Shared flags up to 0x0002000 */
+#define DB_DIRECT 0x0004000 /* Don't buffer the file in the OS. */
+#define DB_EXTENT 0x0008000 /* internal: dealing with an extent. */
+#define DB_ODDFILESIZE 0x0010000 /* Truncate file to N * pgsize. */
+
+/*
+ * Flags private to DB->set_flags.
+ * Shared flags up to 0x00002000 */
+#define DB_CHKSUM 0x00004000 /* Do checksumming */
+#define DB_DUP 0x00008000 /* Btree, Hash: duplicate keys. */
+#define DB_DUPSORT 0x00010000 /* Btree, Hash: duplicate keys. */
+#define DB_ENCRYPT 0x00020000 /* Btree, Hash: duplicate keys. */
+#define DB_INORDER 0x00040000 /* Queue: strict ordering on consume */
+#define DB_RECNUM 0x00080000 /* Btree: record numbers. */
+#define DB_RENUMBER 0x00100000 /* Recno: renumber on insert/delete. */
+#define DB_REVSPLITOFF 0x00200000 /* Btree: turn off reverse splits. */
+#define DB_SNAPSHOT 0x00400000 /* Recno: snapshot the input. */
+
+/*
+ * Flags private to the DB_ENV->stat_print, DB->stat and DB->stat_print methods.
+ */
+#define DB_FAST_STAT 0x0000001 /* Don't traverse the database. */
+#define DB_STAT_ALL 0x0000002 /* Print: Everything. */
+#define DB_STAT_CLEAR 0x0000004 /* Clear stat after returning values. */
+#define DB_STAT_LOCK_CONF 0x0000008 /* Print: Lock conflict matrix. */
+#define DB_STAT_LOCK_LOCKERS 0x0000010 /* Print: Lockers. */
+#define DB_STAT_LOCK_OBJECTS 0x0000020 /* Print: Lock objects. */
+#define DB_STAT_LOCK_PARAMS 0x0000040 /* Print: Lock parameters. */
+#define DB_STAT_MEMP_HASH 0x0000080 /* Print: Mpool hash buckets. */
+#define DB_STAT_NOERROR 0x0000100 /* Internal: continue on error. */
+#define DB_STAT_SUBSYSTEM 0x0000200 /* Print: Subsystems too. */
+
+/*
+ * Flags private to DB->join.
+ */
+#define DB_JOIN_NOSORT 0x0000001 /* Don't try to optimize join. */
+
+/*
+ * Flags private to DB->verify.
+ */
+#define DB_AGGRESSIVE 0x0000001 /* Salvage whatever could be data.*/
+#define DB_NOORDERCHK 0x0000002 /* Skip sort order/hashing check. */
+#define DB_ORDERCHKONLY 0x0000004 /* Only perform the order check. */
+#define DB_PR_PAGE 0x0000008 /* Show page contents (-da). */
+#define DB_PR_RECOVERYTEST 0x0000010 /* Recovery test (-dr). */
+#define DB_PRINTABLE 0x0000020 /* Use printable format for salvage. */
+#define DB_SALVAGE 0x0000040 /* Salvage what looks like data. */
+#define DB_UNREF 0x0000080 /* Report unreferenced pages. */
+/*
+ * !!!
+ * These must not go over 0x8000, or they will collide with the flags
+ * used by __bam_vrfy_subtree.
+ */
+
+/*
+ * Flags private to DB->rep_set_transport's send callback.
+ */
+#define DB_REP_ANYWHERE 0x0000001 /* Message can be serviced anywhere. */
+#define DB_REP_NOBUFFER 0x0000002 /* Do not buffer this message. */
+#define DB_REP_PERMANENT 0x0000004 /* Important--app. may want to flush. */
+#define DB_REP_REREQUEST 0x0000008 /* This msg already been requested. */
+
+/*******************************************************
+ * Mutexes.
+ *******************************************************/
+typedef u_int32_t db_mutex_t;
+
+/*
+ * Flag arguments for DbEnv.mutex_alloc, DbEnv.is_alive and for the
+ * DB_MUTEX structure.
+ */
+#define DB_MUTEX_ALLOCATED 0x01 /* Mutex currently allocated. */
+#define DB_MUTEX_LOCKED 0x02 /* Mutex currently locked. */
+#define DB_MUTEX_LOGICAL_LOCK 0x04 /* Mutex backs a database lock. */
+#define DB_MUTEX_PROCESS_ONLY 0x08 /* Mutex private to a process. */
+#define DB_MUTEX_SELF_BLOCK 0x10 /* Must be able to block self. */
+
+struct __db_mutex_stat {
+ /* The following fields are maintained in the region's copy. */
+ u_int32_t st_mutex_align; /* Mutex alignment */
+ u_int32_t st_mutex_tas_spins; /* Mutex test-and-set spins */
+ u_int32_t st_mutex_cnt; /* Mutex count */
+ u_int32_t st_mutex_free; /* Available mutexes */
+ u_int32_t st_mutex_inuse; /* Mutexes in use */
+ u_int32_t st_mutex_inuse_max; /* Maximum mutexes ever in use */
+
+ /* The following fields are filled-in from other places. */
+#ifndef __TEST_DB_NO_STATISTICS
+ u_int32_t st_region_wait; /* Region lock granted after wait. */
+ u_int32_t st_region_nowait; /* Region lock granted without wait. */
+ roff_t st_regsize; /* Region size. */
+#endif
+};
+
+/* This is the length of the buffer passed to DB_ENV->thread_id_string() */
+#define DB_THREADID_STRLEN 128
+
+/*******************************************************
+ * Locking.
+ *******************************************************/
+#define DB_LOCKVERSION 1
+
+#define DB_FILE_ID_LEN 20 /* Unique file ID length. */
+
+/*
+ * Deadlock detector modes; used in the DB_ENV structure to configure the
+ * locking subsystem.
+ */
+#define DB_LOCK_NORUN 0
+#define DB_LOCK_DEFAULT 1 /* Default policy. */
+#define DB_LOCK_EXPIRE 2 /* Only expire locks, no detection. */
+#define DB_LOCK_MAXLOCKS 3 /* Select locker with max locks. */
+#define DB_LOCK_MAXWRITE 4 /* Select locker with max writelocks. */
+#define DB_LOCK_MINLOCKS 5 /* Select locker with min locks. */
+#define DB_LOCK_MINWRITE 6 /* Select locker with min writelocks. */
+#define DB_LOCK_OLDEST 7 /* Select oldest locker. */
+#define DB_LOCK_RANDOM 8 /* Select random locker. */
+#define DB_LOCK_YOUNGEST 9 /* Select youngest locker. */
+
+/* Flag values for lock_vec(), lock_get(). */
+#define DB_LOCK_ABORT 0x001 /* Internal: Lock during abort. */
+#define DB_LOCK_NOWAIT 0x002 /* Don't wait on unavailable lock. */
+#define DB_LOCK_RECORD 0x004 /* Internal: record lock. */
+#define DB_LOCK_SET_TIMEOUT 0x008 /* Internal: set lock timeout. */
+#define DB_LOCK_SWITCH 0x010 /* Internal: switch existing lock. */
+#define DB_LOCK_UPGRADE 0x020 /* Internal: upgrade existing lock. */
+
+/* Flag values for DbEnv.set_timeout. */
+#define DB_SET_LOCK_TIMEOUT 1 /* Set lock timeout */
+#define DB_SET_TXN_NOW 2 /* Timeout lock now (internal) */
+#define DB_SET_TXN_TIMEOUT 3 /* Set transaction timeout */
+
+/*
+ * Simple R/W lock modes and for multi-granularity intention locking.
+ *
+ * !!!
+ * These values are NOT random, as they are used as an index into the lock
+ * conflicts arrays, i.e., DB_LOCK_IWRITE must be == 3, and DB_LOCK_IREAD
+ * must be == 4.
+ */
+typedef enum {
+ DB_LOCK_NG=0, /* Not granted. */
+ DB_LOCK_READ=1, /* Shared/read. */
+ DB_LOCK_WRITE=2, /* Exclusive/write. */
+ DB_LOCK_WAIT=3, /* Wait for event */
+ DB_LOCK_IWRITE=4, /* Intent exclusive/write. */
+ DB_LOCK_IREAD=5, /* Intent to share/read. */
+ DB_LOCK_IWR=6, /* Intent to read and write. */
+ DB_LOCK_READ_UNCOMMITTED=7, /* Degree 1 isolation. */
+ DB_LOCK_WWRITE=8 /* Was Written. */
+} db_lockmode_t;
+
+/*
+ * Request types.
+ */
+typedef enum {
+ DB_LOCK_DUMP=0, /* Display held locks. */
+ DB_LOCK_GET=1, /* Get the lock. */
+ DB_LOCK_GET_TIMEOUT=2, /* Get lock with a timeout. */
+ DB_LOCK_INHERIT=3, /* Pass locks to parent. */
+ DB_LOCK_PUT=4, /* Release the lock. */
+ DB_LOCK_PUT_ALL=5, /* Release locker's locks. */
+ DB_LOCK_PUT_OBJ=6, /* Release locker's locks on obj. */
+ DB_LOCK_PUT_READ=7, /* Release locker's read locks. */
+ DB_LOCK_TIMEOUT=8, /* Force a txn to timeout. */
+ DB_LOCK_TRADE=9, /* Trade locker ids on a lock. */
+ DB_LOCK_UPGRADE_WRITE=10 /* Upgrade writes for dirty reads. */
+} db_lockop_t;
+
+/*
+ * Status of a lock.
+ */
+typedef enum {
+ DB_LSTAT_ABORTED=1, /* Lock belongs to an aborted txn. */
+ DB_LSTAT_EXPIRED=2, /* Lock has expired. */
+ DB_LSTAT_FREE=3, /* Lock is unallocated. */
+ DB_LSTAT_HELD=4, /* Lock is currently held. */
+ DB_LSTAT_PENDING=5, /* Lock was waiting and has been
+ * promoted; waiting for the owner
+ * to run and upgrade it to held. */
+ DB_LSTAT_WAITING=6 /* Lock is on the wait queue. */
+}db_status_t;
+
+/* Lock statistics structure. */
+struct __db_lock_stat {
+ u_int32_t st_id; /* Last allocated locker ID. */
+ u_int32_t st_cur_maxid; /* Current maximum unused ID. */
+ u_int32_t st_maxlocks; /* Maximum number of locks in table. */
+ u_int32_t st_maxlockers; /* Maximum num of lockers in table. */
+ u_int32_t st_maxobjects; /* Maximum num of objects in table. */
+ int st_nmodes; /* Number of lock modes. */
+ u_int32_t st_nlockers; /* Current number of lockers. */
+#ifndef __TEST_DB_NO_STATISTICS
+ u_int32_t st_nlocks; /* Current number of locks. */
+ u_int32_t st_maxnlocks; /* Maximum number of locks so far. */
+ u_int32_t st_maxnlockers; /* Maximum number of lockers so far. */
+ u_int32_t st_nobjects; /* Current number of objects. */
+ u_int32_t st_maxnobjects; /* Maximum number of objects so far. */
+ u_int32_t st_nrequests; /* Number of lock gets. */
+ u_int32_t st_nreleases; /* Number of lock puts. */
+ u_int32_t st_nupgrade; /* Number of lock upgrades. */
+ u_int32_t st_ndowngrade; /* Number of lock downgrades. */
+ u_int32_t st_lock_wait; /* Lock conflicts w/ subsequent wait */
+ u_int32_t st_lock_nowait; /* Lock conflicts w/o subsequent wait */
+ u_int32_t st_ndeadlocks; /* Number of lock deadlocks. */
+ db_timeout_t st_locktimeout; /* Lock timeout. */
+ u_int32_t st_nlocktimeouts; /* Number of lock timeouts. */
+ db_timeout_t st_txntimeout; /* Transaction timeout. */
+ u_int32_t st_ntxntimeouts; /* Number of transaction timeouts. */
+ u_int32_t st_objs_wait; /* Object lock granted after wait. */
+ u_int32_t st_objs_nowait; /* Object lock granted without wait. */
+ u_int32_t st_lockers_wait; /* Locker lock granted after wait. */
+ u_int32_t st_lockers_nowait; /* Locker lock granted without wait. */
+ u_int32_t st_locks_wait; /* Lock lock granted after wait. */
+ u_int32_t st_locks_nowait; /* Lock lock granted without wait. */
+ u_int32_t st_region_wait; /* Region lock granted after wait. */
+ u_int32_t st_region_nowait; /* Region lock granted without wait. */
+ u_int32_t st_hash_len; /* Max length of bucket. */
+ roff_t st_regsize; /* Region size. */
+#endif
+};
+
+struct __db_lock_hstat {
+ u_int32_t st_nrequests; /* Number of lock gets. */
+ u_int32_t st_nreleases; /* Number of lock puts. */
+ u_int32_t st_nupgrade; /* Number of lock upgrades. */
+ u_int32_t st_ndowngrade; /* Number of lock downgrades. */
+ u_int32_t st_lock_wait; /* Lock conflicts w/ subsequent wait */
+ u_int32_t st_lock_nowait; /* Lock conflicts w/o subsequent wait */
+ u_int32_t st_nlocktimeouts; /* Number of lock timeouts. */
+ u_int32_t st_ntxntimeouts; /* Number of transaction timeouts. */
+ u_int32_t st_hash_len; /* Max length of bucket. */
+};
+
+/*
+ * DB_LOCK_ILOCK --
+ * Internal DB access method lock.
+ */
+struct __db_ilock {
+ db_pgno_t pgno; /* Page being locked. */
+ u_int8_t fileid[DB_FILE_ID_LEN];/* File id. */
+#define DB_HANDLE_LOCK 1
+#define DB_RECORD_LOCK 2
+#define DB_PAGE_LOCK 3
+ u_int32_t type; /* Type of lock. */
+};
+
+/*
+ * DB_LOCK --
+ * The structure is allocated by the caller and filled in during a
+ * lock_get request (or a lock_vec/DB_LOCK_GET).
+ */
+struct __db_lock_u {
+ roff_t off; /* Offset of the lock in the region */
+ u_int32_t ndx; /* Index of the object referenced by
+ * this lock; used for locking. */
+ u_int32_t gen; /* Generation number of this lock. */
+ db_lockmode_t mode; /* mode of this lock. */
+};
+
+/* Lock request structure. */
+struct __db_lockreq {
+ db_lockop_t op; /* Operation. */
+ db_lockmode_t mode; /* Requested mode. */
+ db_timeout_t timeout; /* Time to expire lock. */
+ DBT *obj; /* Object being locked. */
+ DB_LOCK lock; /* Lock returned. */
+};
+
+/*******************************************************
+ * Logging.
+ *******************************************************/
+#define DB_LOGVERSION 13 /* Current log version. */
+#define DB_LOGOLDVER 8 /* Oldest log version supported. */
+#define DB_LOGMAGIC 0x040988
+
+/* Flag values for DB_ENV->log_archive(). */
+#define DB_ARCH_ABS 0x001 /* Absolute pathnames. */
+#define DB_ARCH_DATA 0x002 /* Data files. */
+#define DB_ARCH_LOG 0x004 /* Log files. */
+#define DB_ARCH_REMOVE 0x008 /* Remove log files. */
+
+/* Flag values for DB_ENV->log_put(). */
+#define DB_FLUSH 0x001 /* Flush data to disk (public). */
+#define DB_LOG_CHKPNT 0x002 /* Flush supports a checkpoint */
+#define DB_LOG_COMMIT 0x004 /* Flush supports a commit */
+#define DB_LOG_NOCOPY 0x008 /* Don't copy data */
+#define DB_LOG_NOT_DURABLE 0x010 /* Do not log; keep in memory */
+#define DB_LOG_WRNOSYNC 0x020 /* Write, don't sync log_put */
+
+/*
+ * A DB_LSN has two parts, a fileid which identifies a specific file, and an
+ * offset within that file. The fileid is an unsigned 4-byte quantity that
+ * uniquely identifies a file within the log directory -- currently a simple
+ * counter inside the log. The offset is also an unsigned 4-byte value. The
+ * log manager guarantees the offset is never more than 4 bytes by switching
+ * to a new log file before the maximum length imposed by an unsigned 4-byte
+ * offset is reached.
+ */
+struct __db_lsn {
+ u_int32_t file; /* File ID. */
+ u_int32_t offset; /* File offset. */
+};
+
+/*
+ * Application-specified log record types start at DB_user_BEGIN, and must not
+ * equal or exceed DB_debug_FLAG.
+ *
+ * DB_debug_FLAG is the high-bit of the u_int32_t that specifies a log record
+ * type. If the flag is set, it's a log record that was logged for debugging
+ * purposes only, even if it reflects a database change -- the change was part
+ * of a non-durable transaction.
+ */
+#define DB_user_BEGIN 10000
+#define DB_debug_FLAG 0x80000000
+
+/*
+ * DB_LOGC --
+ * Log cursor.
+ */
+struct __db_log_cursor {
+ DB_ENV *dbenv; /* Enclosing dbenv. */
+
+ DB_FH *fhp; /* File handle. */
+ DB_LSN lsn; /* Cursor: LSN */
+ u_int32_t len; /* Cursor: record length */
+ u_int32_t prev; /* Cursor: previous record's offset */
+
+ DBT dbt; /* Return DBT. */
+ DB_LSN p_lsn; /* Persist LSN. */
+ u_int32_t p_version; /* Persist version. */
+
+ u_int8_t *bp; /* Allocated read buffer. */
+ u_int32_t bp_size; /* Read buffer length in bytes. */
+ u_int32_t bp_rlen; /* Read buffer valid data length. */
+ DB_LSN bp_lsn; /* Read buffer first byte LSN. */
+
+ u_int32_t bp_maxrec; /* Max record length in the log file. */
+
+ /* DB_LOGC PUBLIC HANDLE LIST BEGIN */
+ int (*close) __P((DB_LOGC *, u_int32_t));
+ int (*get) __P((DB_LOGC *, DB_LSN *, DBT *, u_int32_t));
+ int (*version) __P((DB_LOGC *, u_int32_t *, u_int32_t));
+ /* DB_LOGC PUBLIC HANDLE LIST END */
+
+#define DB_LOG_DISK 0x01 /* Log record came from disk. */
+#define DB_LOG_LOCKED 0x02 /* Log region already locked */
+#define DB_LOG_SILENT_ERR 0x04 /* Turn-off error messages. */
+ u_int32_t flags;
+};
+
+/* Log statistics structure. */
+struct __db_log_stat {
+ u_int32_t st_magic; /* Log file magic number. */
+ u_int32_t st_version; /* Log file version number. */
+ int st_mode; /* Log file permissions mode. */
+ u_int32_t st_lg_bsize; /* Log buffer size. */
+ u_int32_t st_lg_size; /* Log file size. */
+ u_int32_t st_wc_bytes; /* Bytes to log since checkpoint. */
+ u_int32_t st_wc_mbytes; /* Megabytes to log since checkpoint. */
+#ifndef __TEST_DB_NO_STATISTICS
+ u_int32_t st_record; /* Records entered into the log. */
+ u_int32_t st_w_bytes; /* Bytes to log. */
+ u_int32_t st_w_mbytes; /* Megabytes to log. */
+ u_int32_t st_wcount; /* Total I/O writes to the log. */
+ u_int32_t st_wcount_fill; /* Overflow writes to the log. */
+ u_int32_t st_rcount; /* Total I/O reads from the log. */
+ u_int32_t st_scount; /* Total syncs to the log. */
+ u_int32_t st_region_wait; /* Region lock granted after wait. */
+ u_int32_t st_region_nowait; /* Region lock granted without wait. */
+ u_int32_t st_cur_file; /* Current log file number. */
+ u_int32_t st_cur_offset; /* Current log file offset. */
+ u_int32_t st_disk_file; /* Known on disk log file number. */
+ u_int32_t st_disk_offset; /* Known on disk log file offset. */
+ u_int32_t st_maxcommitperflush; /* Max number of commits in a flush. */
+ u_int32_t st_mincommitperflush; /* Min number of commits in a flush. */
+ roff_t st_regsize; /* Region size. */
+#endif
+};
+
+/*
+ * We need to record the first log record of a transaction. For user
+ * defined logging this macro returns the place to put that information,
+ * if it is need in rlsnp, otherwise it leaves it unchanged. We also
+ * need to track the last record of the transaction, this returns the
+ * place to put that info.
+ */
+#define DB_SET_TXN_LSNP(txn, blsnp, llsnp) \
+ ((txn)->set_txn_lsnp(txn, blsnp, llsnp))
+
+/*******************************************************
+ * Shared buffer cache (mpool).
+ *******************************************************/
+/* Flag values for DB_MPOOLFILE->get. */
+#define DB_MPOOL_CREATE 0x001 /* Create a page. */
+#define DB_MPOOL_DIRTY 0x002 /* Get page for an update. */
+#define DB_MPOOL_EDIT 0x004 /* Modify without copying. */
+#define DB_MPOOL_FREE 0x008 /* Free page if present. */
+#define DB_MPOOL_LAST 0x010 /* Return the last page. */
+#define DB_MPOOL_NEW 0x020 /* Create a new page. */
+
+/* Undocumented flag value for DB_MPOOLFILE->close. */
+#define DB_MPOOL_DISCARD 0x001 /* Discard file. */
+
+/* Flags values for DB_MPOOLFILE->set_flags. */
+#define DB_MPOOL_NOFILE 0x001 /* Never open a backing file. */
+#define DB_MPOOL_UNLINK 0x002 /* Unlink the file on last close. */
+
+/* Priority values for DB_MPOOLFILE->{put,set_priority}. */
+typedef enum {
+ DB_PRIORITY_UNCHANGED=0,
+ DB_PRIORITY_VERY_LOW=1,
+ DB_PRIORITY_LOW=2,
+ DB_PRIORITY_DEFAULT=3,
+ DB_PRIORITY_HIGH=4,
+ DB_PRIORITY_VERY_HIGH=5
+} DB_CACHE_PRIORITY;
+
+/* Per-process DB_MPOOLFILE information. */
+struct __db_mpoolfile {
+ DB_FH *fhp; /* Underlying file handle. */
+
+ /*
+ * !!!
+ * The ref, pinref and q fields are protected by the region lock.
+ */
+ u_int32_t ref; /* Reference count. */
+
+ u_int32_t pinref; /* Pinned block reference count. */
+
+ /*
+ * !!!
+ * Explicit representations of structures from queue.h.
+ * TAILQ_ENTRY(__db_mpoolfile) q;
+ */
+ struct {
+ struct __db_mpoolfile *tqe_next;
+ struct __db_mpoolfile **tqe_prev;
+ } q; /* Linked list of DB_MPOOLFILE's. */
+
+ /*
+ * !!!
+ * The rest of the fields (with the exception of the MP_FLUSH flag)
+ * are not thread-protected, even when they may be modified at any
+ * time by the application. The reason is the DB_MPOOLFILE handle
+ * is single-threaded from the viewpoint of the application, and so
+ * the only fields needing to be thread-protected are those accessed
+ * by checkpoint or sync threads when using DB_MPOOLFILE structures
+ * to flush buffers from the cache.
+ */
+ DB_ENV *dbenv; /* Overlying DB_ENV. */
+ MPOOLFILE *mfp; /* Underlying MPOOLFILE. */
+
+ u_int32_t clear_len; /* Cleared length on created pages. */
+ u_int8_t /* Unique file ID. */
+ fileid[DB_FILE_ID_LEN];
+ int ftype; /* File type. */
+ int32_t lsn_offset; /* LSN offset in page. */
+ u_int32_t gbytes, bytes; /* Maximum file size. */
+ DBT *pgcookie; /* Byte-string passed to pgin/pgout. */
+ int32_t priority; /* Cache priority. */
+
+ void *addr; /* Address of mmap'd region. */
+ size_t len; /* Length of mmap'd region. */
+
+ u_int32_t config_flags; /* Flags to DB_MPOOLFILE->set_flags. */
+
+ /* DB_MPOOLFILE PUBLIC HANDLE LIST BEGIN */
+ int (*close) __P((DB_MPOOLFILE *, u_int32_t));
+ int (*get)
+ __P((DB_MPOOLFILE *, db_pgno_t *, DB_TXN *, u_int32_t, void *));
+ int (*get_clear_len) __P((DB_MPOOLFILE *, u_int32_t *));
+ int (*get_fileid) __P((DB_MPOOLFILE *, u_int8_t *));
+ int (*get_flags) __P((DB_MPOOLFILE *, u_int32_t *));
+ int (*get_ftype) __P((DB_MPOOLFILE *, int *));
+ int (*get_last_pgno) __P((DB_MPOOLFILE *, db_pgno_t *));
+ int (*get_lsn_offset) __P((DB_MPOOLFILE *, int32_t *));
+ int (*get_maxsize) __P((DB_MPOOLFILE *, u_int32_t *, u_int32_t *));
+ int (*get_pgcookie) __P((DB_MPOOLFILE *, DBT *));
+ int (*get_priority) __P((DB_MPOOLFILE *, DB_CACHE_PRIORITY *));
+ int (*open) __P((DB_MPOOLFILE *, const char *, u_int32_t, int, size_t));
+ int (*put) __P((DB_MPOOLFILE *, void *, DB_CACHE_PRIORITY, u_int32_t));
+ int (*set_clear_len) __P((DB_MPOOLFILE *, u_int32_t));
+ int (*set_fileid) __P((DB_MPOOLFILE *, u_int8_t *));
+ int (*set_flags) __P((DB_MPOOLFILE *, u_int32_t, int));
+ int (*set_ftype) __P((DB_MPOOLFILE *, int));
+ int (*set_lsn_offset) __P((DB_MPOOLFILE *, int32_t));
+ int (*set_maxsize) __P((DB_MPOOLFILE *, u_int32_t, u_int32_t));
+ int (*set_pgcookie) __P((DB_MPOOLFILE *, DBT *));
+ int (*set_priority) __P((DB_MPOOLFILE *, DB_CACHE_PRIORITY));
+ int (*sync) __P((DB_MPOOLFILE *));
+ /* DB_MPOOLFILE PUBLIC HANDLE LIST END */
+
+ /*
+ * MP_FILEID_SET, MP_OPEN_CALLED and MP_READONLY do not need to be
+ * thread protected because they are initialized before the file is
+ * linked onto the per-process lists, and never modified.
+ *
+ * MP_FLUSH is thread protected because it is potentially read/set by
+ * multiple threads of control.
+ */
+#define MP_FILEID_SET 0x001 /* Application supplied a file ID. */
+#define MP_FLUSH 0x002 /* Was opened to flush a buffer. */
+#define MP_MULTIVERSION 0x004 /* Opened for multiversion access. */
+#define MP_OPEN_CALLED 0x008 /* File opened. */
+#define MP_READONLY 0x010 /* File is readonly. */
+ u_int32_t flags;
+};
+
+/* Mpool statistics structure. */
+struct __db_mpool_stat {
+ u_int32_t st_gbytes; /* Total cache size: GB. */
+ u_int32_t st_bytes; /* Total cache size: B. */
+ u_int32_t st_ncache; /* Number of cache regions. */
+ u_int32_t st_max_ncache; /* Maximum number of regions. */
+ size_t st_mmapsize; /* Maximum file size for mmap. */
+ int st_maxopenfd; /* Maximum number of open fd's. */
+ int st_maxwrite; /* Maximum buffers to write. */
+ db_timeout_t st_maxwrite_sleep; /* Sleep after writing max buffers. */
+ u_int32_t st_pages; /* Total number of pages. */
+#ifndef __TEST_DB_NO_STATISTICS
+ u_int32_t st_map; /* Pages from mapped files. */
+ u_int32_t st_cache_hit; /* Pages found in the cache. */
+ u_int32_t st_cache_miss; /* Pages not found in the cache. */
+ u_int32_t st_page_create; /* Pages created in the cache. */
+ u_int32_t st_page_in; /* Pages read in. */
+ u_int32_t st_page_out; /* Pages written out. */
+ u_int32_t st_ro_evict; /* Clean pages forced from the cache. */
+ u_int32_t st_rw_evict; /* Dirty pages forced from the cache. */
+ u_int32_t st_page_trickle; /* Pages written by memp_trickle. */
+ u_int32_t st_page_clean; /* Clean pages. */
+ u_int32_t st_page_dirty; /* Dirty pages. */
+ u_int32_t st_hash_buckets; /* Number of hash buckets. */
+ u_int32_t st_hash_searches; /* Total hash chain searches. */
+ u_int32_t st_hash_longest; /* Longest hash chain searched. */
+ u_int32_t st_hash_examined; /* Total hash entries searched. */
+ u_int32_t st_hash_nowait; /* Hash lock granted with nowait. */
+ u_int32_t st_hash_wait; /* Hash lock granted after wait. */
+ u_int32_t st_hash_max_nowait; /* Max hash lock granted with nowait. */
+ u_int32_t st_hash_max_wait; /* Max hash lock granted after wait. */
+ u_int32_t st_region_nowait; /* Region lock granted with nowait. */
+ u_int32_t st_region_wait; /* Region lock granted after wait. */
+ u_int32_t st_mvcc_frozen; /* Buffers frozen. */
+ u_int32_t st_mvcc_thawed; /* Buffers thawed. */
+ u_int32_t st_mvcc_freed; /* Frozen buffers freed. */
+ u_int32_t st_alloc; /* Number of page allocations. */
+ u_int32_t st_alloc_buckets; /* Buckets checked during allocation. */
+ u_int32_t st_alloc_max_buckets; /* Max checked during allocation. */
+ u_int32_t st_alloc_pages; /* Pages checked during allocation. */
+ u_int32_t st_alloc_max_pages; /* Max checked during allocation. */
+ u_int32_t st_io_wait; /* Thread waited on buffer I/O. */
+ roff_t st_regsize; /* Region size. */
+#endif
+};
+
+/* Mpool file statistics structure. */
+struct __db_mpool_fstat {
+ char *file_name; /* File name. */
+ u_int32_t st_pagesize; /* Page size. */
+#ifndef __TEST_DB_NO_STATISTICS
+ u_int32_t st_map; /* Pages from mapped files. */
+ u_int32_t st_cache_hit; /* Pages found in the cache. */
+ u_int32_t st_cache_miss; /* Pages not found in the cache. */
+ u_int32_t st_page_create; /* Pages created in the cache. */
+ u_int32_t st_page_in; /* Pages read in. */
+ u_int32_t st_page_out; /* Pages written out. */
+#endif
+};
+
+/*******************************************************
+ * Transactions and recovery.
+ *******************************************************/
+#define DB_TXNVERSION 1
+
+typedef enum {
+ DB_TXN_ABORT=0, /* Public. */
+ DB_TXN_APPLY=1, /* Public. */
+ DB_TXN_BACKWARD_ALLOC=2, /* Internal. */
+ DB_TXN_BACKWARD_ROLL=3, /* Public. */
+ DB_TXN_FORWARD_ROLL=4, /* Public. */
+ DB_TXN_OPENFILES=5, /* Internal. */
+ DB_TXN_POPENFILES=6, /* Internal. */
+ DB_TXN_PRINT=7 /* Public. */
+} db_recops;
+
+/*
+ * BACKWARD_ALLOC is used during the forward pass to pick up any aborted
+ * allocations for files that were created during the forward pass.
+ * The main difference between _ALLOC and _ROLL is that the entry for
+ * the file not exist during the rollforward pass.
+ */
+#define DB_UNDO(op) ((op) == DB_TXN_ABORT || \
+ (op) == DB_TXN_BACKWARD_ROLL || (op) == DB_TXN_BACKWARD_ALLOC)
+#define DB_REDO(op) ((op) == DB_TXN_FORWARD_ROLL || (op) == DB_TXN_APPLY)
+
+struct __db_txn {
+ DB_TXNMGR *mgrp; /* Pointer to transaction manager. */
+ DB_TXN *parent; /* Pointer to transaction's parent. */
+
+ u_int32_t txnid; /* Unique transaction id. */
+ char *name; /* Transaction name. */
+ DB_LOCKER *locker; /* Locker for this txn. */
+
+ db_threadid_t tid; /* Thread id for use in MT XA. */
+ void *td; /* Detail structure within region. */
+ db_timeout_t lock_timeout; /* Timeout for locks for this txn. */
+ db_timeout_t expire; /* Time transaction expires. */
+ void *txn_list; /* Undo information for parent. */
+
+ /*
+ * !!!
+ * Explicit representations of structures from queue.h.
+ * TAILQ_ENTRY(__db_txn) links;
+ * TAILQ_ENTRY(__db_txn) xalinks;
+ */
+ struct {
+ struct __db_txn *tqe_next;
+ struct __db_txn **tqe_prev;
+ } links; /* Links transactions off manager. */
+ struct {
+ struct __db_txn *tqe_next;
+ struct __db_txn **tqe_prev;
+ } xalinks; /* Links active XA transactions. */
+
+ /*
+ * !!!
+ * Explicit representations of structures from queue.h.
+ * TAILQ_HEAD(__kids, __db_txn) kids;
+ */
+ struct __kids {
+ struct __db_txn *tqh_first;
+ struct __db_txn **tqh_last;
+ } kids;
+
+ /*
+ * !!!
+ * Explicit representations of structures from queue.h.
+ * TAILQ_HEAD(__events, __txn_event) events;
+ */
+ struct {
+ struct __txn_event *tqh_first;
+ struct __txn_event **tqh_last;
+ } events; /* Links deferred events. */
+
+ /*
+ * !!!
+ * Explicit representations of structures from queue.h.
+ * STAILQ_HEAD(__logrec, __txn_logrec) logs;
+ */
+ struct {
+ struct __txn_logrec *stqh_first;
+ struct __txn_logrec **stqh_last;
+ } logs; /* Links in memory log records. */
+
+ /*
+ * !!!
+ * Explicit representations of structures from queue.h.
+ * TAILQ_ENTRY(__db_txn) klinks;
+ */
+ struct {
+ struct __db_txn *tqe_next;
+ struct __db_txn **tqe_prev;
+ } klinks;
+
+ void *api_internal; /* C++ API private. */
+ void *xml_internal; /* XML API private. */
+
+ u_int32_t cursors; /* Number of cursors open for txn */
+
+ /* DB_TXN PUBLIC HANDLE LIST BEGIN */
+ int (*abort) __P((DB_TXN *));
+ int (*commit) __P((DB_TXN *, u_int32_t));
+ int (*discard) __P((DB_TXN *, u_int32_t));
+ int (*get_name) __P((DB_TXN *, const char **));
+ u_int32_t (*id) __P((DB_TXN *));
+ int (*prepare) __P((DB_TXN *, u_int8_t *));
+ int (*set_name) __P((DB_TXN *, const char *));
+ int (*set_timeout) __P((DB_TXN *, db_timeout_t, u_int32_t));
+ /* DB_TXN PUBLIC HANDLE LIST END */
+
+ /* DB_TXN PRIVATE HANDLE LIST BEGIN */
+ void (*set_txn_lsnp) __P((DB_TXN *txn, DB_LSN **, DB_LSN **));
+ /* DB_TXN PRIVATE HANDLE LIST END */
+
+#define TXN_CHILDCOMMIT 0x0001 /* Txn has committed. */
+#define TXN_CDSGROUP 0x0002 /* CDS group handle. */
+#define TXN_COMPENSATE 0x0004 /* Compensating transaction. */
+#define TXN_DEADLOCK 0x0008 /* Txn has deadlocked. */
+#define TXN_LOCKTIMEOUT 0x0010 /* Txn has a lock timeout. */
+#define TXN_MALLOC 0x0020 /* Structure allocated by TXN system. */
+#define TXN_NOSYNC 0x0040 /* Do not sync on prepare and commit. */
+#define TXN_NOWAIT 0x0080 /* Do not wait on locks. */
+#define TXN_PRIVATE 0x0100 /* Txn owned by cursor.. */
+#define TXN_READ_COMMITTED 0x0200 /* Txn has degree 2 isolation. */
+#define TXN_READ_UNCOMMITTED 0x0400 /* Txn has degree 1 isolation. */
+#define TXN_RESTORED 0x0800 /* Txn has been restored. */
+#define TXN_SNAPSHOT 0x1000 /* Snapshot Isolation. */
+#define TXN_SYNC 0x2000 /* Write and sync on prepare/commit. */
+#define TXN_WRITE_NOSYNC 0x4000 /* Write only on prepare/commit. */
+ u_int32_t flags;
+};
+
+#define TXN_SYNC_FLAGS (TXN_SYNC | TXN_NOSYNC | TXN_WRITE_NOSYNC)
+
+/*
+ * Structure used for two phase commit interface. Berkeley DB support for two
+ * phase commit is compatible with the X/Open XA interface.
+ *
+ * The XA #define XIDDATASIZE defines the size of a global transaction ID. We
+ * have our own version here (for name space reasons) which must have the same
+ * value.
+ */
+#define DB_XIDDATASIZE 128
+struct __db_preplist {
+ DB_TXN *txn;
+ u_int8_t gid[DB_XIDDATASIZE];
+};
+
+/* Transaction statistics structure. */
+struct __db_txn_active {
+ u_int32_t txnid; /* Transaction ID */
+ u_int32_t parentid; /* Transaction ID of parent */
+ pid_t pid; /* Process owning txn ID */
+ db_threadid_t tid; /* Thread owning txn ID */
+
+ DB_LSN lsn; /* LSN when transaction began */
+
+ DB_LSN read_lsn; /* Read LSN for MVCC */
+ u_int32_t mvcc_ref; /* MVCC reference count */
+
+#define TXN_ABORTED 1
+#define TXN_COMMITTED 2
+#define TXN_PREPARED 3
+#define TXN_RUNNING 4
+ u_int32_t status; /* Status of the transaction */
+
+#define TXN_XA_ABORTED 1
+#define TXN_XA_DEADLOCKED 2
+#define TXN_XA_ENDED 3
+#define TXN_XA_PREPARED 4
+#define TXN_XA_STARTED 5
+#define TXN_XA_SUSPENDED 6
+ u_int32_t xa_status; /* XA status */
+
+ u_int8_t xid[DB_XIDDATASIZE]; /* Global transaction ID */
+ char name[51]; /* 50 bytes of name, nul termination */
+};
+
+struct __db_txn_stat {
+ u_int32_t st_nrestores; /* number of restored transactions
+ after recovery. */
+#ifndef __TEST_DB_NO_STATISTICS
+ DB_LSN st_last_ckp; /* lsn of the last checkpoint */
+ time_t st_time_ckp; /* time of last checkpoint */
+ u_int32_t st_last_txnid; /* last transaction id given out */
+ u_int32_t st_maxtxns; /* maximum txns possible */
+ u_int32_t st_naborts; /* number of aborted transactions */
+ u_int32_t st_nbegins; /* number of begun transactions */
+ u_int32_t st_ncommits; /* number of committed transactions */
+ u_int32_t st_nactive; /* number of active transactions */
+ u_int32_t st_nsnapshot; /* number of snapshot transactions */
+ u_int32_t st_maxnactive; /* maximum active transactions */
+ u_int32_t st_maxnsnapshot; /* maximum snapshot transactions */
+ DB_TXN_ACTIVE *st_txnarray; /* array of active transactions */
+ u_int32_t st_region_wait; /* Region lock granted after wait. */
+ u_int32_t st_region_nowait; /* Region lock granted without wait. */
+ roff_t st_regsize; /* Region size. */
+#endif
+};
+
+/*******************************************************
+ * Replication.
+ *******************************************************/
+/* Special, out-of-band environment IDs. */
+#define DB_EID_BROADCAST -1
+#define DB_EID_INVALID -2
+
+/* rep_config flag values. */
+#define DB_REP_CONF_BULK 0x0001 /* Bulk transfer. */
+#define DB_REP_CONF_DELAYCLIENT 0x0002 /* Delay client synchronization. */
+#define DB_REP_CONF_NOAUTOINIT 0x0004 /* No automatic client init. */
+#define DB_REP_CONF_NOWAIT 0x0008 /* Don't wait, return error. */
+
+/*
+ * Operation code values for rep_start and/or repmgr_start. Just one of the
+ * following values should be passed in the flags parameter. (If we ever need
+ * additional, independent bit flags for these methods, we can start allocating
+ * them from the high-order byte of the flags word, as we currently do elsewhere
+ * for DB_AFTER through DB_WRITELOCK and DB_AUTO_COMMIT, etc.)
+ */
+#define DB_REP_CLIENT 1
+#define DB_REP_ELECTION 2
+#define DB_REP_MASTER 3
+
+#define DB_REPFLAGS_MASK 0x000000ff /* Mask for rep modes. */
+
+#define DB_REP_DEFAULT_PRIORITY 100
+
+/* Acknowledgement policies. */
+#define DB_REPMGR_ACKS_ALL 1
+#define DB_REPMGR_ACKS_ALL_PEERS 2
+#define DB_REPMGR_ACKS_NONE 3
+#define DB_REPMGR_ACKS_ONE 4
+#define DB_REPMGR_ACKS_ONE_PEER 5
+#define DB_REPMGR_ACKS_QUORUM 6
+
+/* Replication timeout configuration values. */
+#define DB_REP_ACK_TIMEOUT 1 /* RepMgr acknowledgements. */
+#define DB_REP_CHECKPOINT_DELAY 2 /* RepMgr acknowledgements. */
+#define DB_REP_CONNECTION_RETRY 3 /* RepMgr connections. */
+#define DB_REP_ELECTION_RETRY 4 /* RepMgr elect retries. */
+#define DB_REP_ELECTION_TIMEOUT 5 /* Rep normal elections. */
+#define DB_REP_FULL_ELECTION_TIMEOUT 6 /* Rep full elections. */
+#define DB_REP_LEASE_TIMEOUT 7 /* Master leases. */
+
+/* Event notification types. */
+#define DB_EVENT_NO_SUCH_EVENT 0 /* out-of-band sentinel value */
+#define DB_EVENT_PANIC 1
+#define DB_EVENT_REP_CLIENT 2
+#define DB_EVENT_REP_ELECTED 3
+#define DB_EVENT_REP_MASTER 4
+#define DB_EVENT_REP_NEWMASTER 5
+#define DB_EVENT_REP_PERM_FAILED 6
+#define DB_EVENT_REP_STARTUPDONE 7
+#define DB_EVENT_WRITE_FAILED 8
+
+/* Flag value for repmgr_add_remote_site. */
+#define DB_REPMGR_PEER 0x01
+
+/* Replication Manager site status. */
+struct __db_repmgr_site {
+ int eid;
+ char *host;
+ u_int port;
+
+#define DB_REPMGR_CONNECTED 0x01
+#define DB_REPMGR_DISCONNECTED 0x02
+ u_int32_t status;
+};
+
+/* Replication statistics. */
+struct __db_rep_stat {
+ /* !!!
+ * Many replication statistics fields cannot be protected by a mutex
+ * without an unacceptable performance penalty, since most message
+ * processing is done without the need to hold a region-wide lock.
+ * Fields whose comments end with a '+' may be updated without holding
+ * the replication or log mutexes (as appropriate), and thus may be
+ * off somewhat (or, on unreasonable architectures under unlucky
+ * circumstances, garbaged).
+ */
+ u_int32_t st_log_queued; /* Log records currently queued.+ */
+ u_int32_t st_startup_complete; /* Site completed client sync-up. */
+#ifndef __TEST_DB_NO_STATISTICS
+ u_int32_t st_status; /* Current replication status. */
+ DB_LSN st_next_lsn; /* Next LSN to use or expect. */
+ DB_LSN st_waiting_lsn; /* LSN we're awaiting, if any. */
+ db_pgno_t st_next_pg; /* Next pg we expect. */
+ db_pgno_t st_waiting_pg; /* pg we're awaiting, if any. */
+
+ u_int32_t st_dupmasters; /* # of times a duplicate master
+ condition was detected.+ */
+ int st_env_id; /* Current environment ID. */
+ int st_env_priority; /* Current environment priority. */
+ u_int32_t st_bulk_fills; /* Bulk buffer fills. */
+ u_int32_t st_bulk_overflows; /* Bulk buffer overflows. */
+ u_int32_t st_bulk_records; /* Bulk records stored. */
+ u_int32_t st_bulk_transfers; /* Transfers of bulk buffers. */
+ u_int32_t st_client_rerequests; /* Number of forced rerequests. */
+ u_int32_t st_client_svc_req; /* Number of client service requests
+ received by this client. */
+ u_int32_t st_client_svc_miss; /* Number of client service requests
+ missing on this client. */
+ u_int32_t st_gen; /* Current generation number. */
+ u_int32_t st_egen; /* Current election gen number. */
+ u_int32_t st_log_duplicated; /* Log records received multiply.+ */
+ u_int32_t st_log_queued_max; /* Max. log records queued at once.+ */
+ u_int32_t st_log_queued_total; /* Total # of log recs. ever queued.+ */
+ u_int32_t st_log_records; /* Log records received and put.+ */
+ u_int32_t st_log_requested; /* Log recs. missed and requested.+ */
+ int st_master; /* Env. ID of the current master. */
+ u_int32_t st_master_changes; /* # of times we've switched masters. */
+ u_int32_t st_msgs_badgen; /* Messages with a bad generation #.+ */
+ u_int32_t st_msgs_processed; /* Messages received and processed.+ */
+ u_int32_t st_msgs_recover; /* Messages ignored because this site
+ was a client in recovery.+ */
+ u_int32_t st_msgs_send_failures;/* # of failed message sends.+ */
+ u_int32_t st_msgs_sent; /* # of successful message sends.+ */
+ u_int32_t st_newsites; /* # of NEWSITE msgs. received.+ */
+ int st_nsites; /* Current number of sites we will
+ assume during elections. */
+ u_int32_t st_nthrottles; /* # of times we were throttled. */
+ u_int32_t st_outdated; /* # of times we detected and returned
+ an OUTDATED condition.+ */
+ u_int32_t st_pg_duplicated; /* Pages received multiply.+ */
+ u_int32_t st_pg_records; /* Pages received and stored.+ */
+ u_int32_t st_pg_requested; /* Pages missed and requested.+ */
+ u_int32_t st_txns_applied; /* # of transactions applied.+ */
+ u_int32_t st_startsync_delayed; /* # of STARTSYNC msgs delayed.+ */
+
+ /* Elections generally. */
+ u_int32_t st_elections; /* # of elections held.+ */
+ u_int32_t st_elections_won; /* # of elections won by this site.+ */
+
+ /* Statistics about an in-progress election. */
+ int st_election_cur_winner; /* Current front-runner. */
+ u_int32_t st_election_gen; /* Election generation number. */
+ DB_LSN st_election_lsn; /* Max. LSN of current winner. */
+ int st_election_nsites; /* # of "registered voters". */
+ int st_election_nvotes; /* # of "registered voters" needed. */
+ int st_election_priority; /* Current election priority. */
+ int st_election_status; /* Current election status. */
+ u_int32_t st_election_tiebreaker;/* Election tiebreaker value. */
+ int st_election_votes; /* Votes received in this round. */
+ u_int32_t st_election_sec; /* Last election time seconds. */
+ u_int32_t st_election_usec; /* Last election time useconds. */
+#endif
+};
+
+/* Replication Manager statistics. */
+struct __db_repmgr_stat {
+ u_int32_t st_perm_failed; /* # of insufficiently ack'ed msgs. */
+ u_int32_t st_msgs_queued; /* # msgs queued for network delay. */
+ u_int32_t st_msgs_dropped; /* # msgs discarded due to excessive
+ queue length. */
+ u_int32_t st_connection_drop; /* Existing connections dropped. */
+ u_int32_t st_connect_fail; /* Failed new connection attempts. */
+};
+
+/*******************************************************
+ * Sequences.
+ *******************************************************/
+/*
+ * The storage record for a sequence.
+ */
+struct __db_seq_record {
+ u_int32_t seq_version; /* Version size/number. */
+#define DB_SEQ_DEC 0x00000001 /* Decrement sequence. */
+#define DB_SEQ_INC 0x00000002 /* Increment sequence. */
+#define DB_SEQ_RANGE_SET 0x00000004 /* Range set (internal). */
+#define DB_SEQ_WRAP 0x00000008 /* Wrap sequence at min/max. */
+#define DB_SEQ_WRAPPED 0x00000010 /* Just wrapped (internal). */
+ u_int32_t flags; /* Flags. */
+ db_seq_t seq_value; /* Current value. */
+ db_seq_t seq_max; /* Max permitted. */
+ db_seq_t seq_min; /* Min permitted. */
+};
+
+/*
+ * Handle for a sequence object.
+ */
+struct __db_sequence {
+ DB *seq_dbp; /* DB handle for this sequence. */
+ db_mutex_t mtx_seq; /* Mutex if sequence is threaded. */
+ DB_SEQ_RECORD *seq_rp; /* Pointer to current data. */
+ DB_SEQ_RECORD seq_record; /* Data from DB_SEQUENCE. */
+ int32_t seq_cache_size; /* Number of values cached. */
+ db_seq_t seq_last_value; /* Last value cached. */
+ DBT seq_key; /* DBT pointing to sequence key. */
+ DBT seq_data; /* DBT pointing to seq_record. */
+
+ /* API-private structure: used by C++ and Java. */
+ void *api_internal;
+
+ /* DB_SEQUENCE PUBLIC HANDLE LIST BEGIN */
+ int (*close) __P((DB_SEQUENCE *, u_int32_t));
+ int (*get) __P((DB_SEQUENCE *,
+ DB_TXN *, int32_t, db_seq_t *, u_int32_t));
+ int (*get_cachesize) __P((DB_SEQUENCE *, int32_t *));
+ int (*get_db) __P((DB_SEQUENCE *, DB **));
+ int (*get_flags) __P((DB_SEQUENCE *, u_int32_t *));
+ int (*get_key) __P((DB_SEQUENCE *, DBT *));
+ int (*get_range) __P((DB_SEQUENCE *,
+ db_seq_t *, db_seq_t *));
+ int (*initial_value) __P((DB_SEQUENCE *, db_seq_t));
+ int (*open) __P((DB_SEQUENCE *,
+ DB_TXN *, DBT *, u_int32_t));
+ int (*remove) __P((DB_SEQUENCE *, DB_TXN *, u_int32_t));
+ int (*set_cachesize) __P((DB_SEQUENCE *, int32_t));
+ int (*set_flags) __P((DB_SEQUENCE *, u_int32_t));
+ int (*set_range) __P((DB_SEQUENCE *, db_seq_t, db_seq_t));
+ int (*stat) __P((DB_SEQUENCE *,
+ DB_SEQUENCE_STAT **, u_int32_t));
+ int (*stat_print) __P((DB_SEQUENCE *, u_int32_t));
+ /* DB_SEQUENCE PUBLIC HANDLE LIST END */
+};
+
+struct __db_seq_stat {
+ u_int32_t st_wait; /* Sequence lock granted w/o wait. */
+ u_int32_t st_nowait; /* Sequence lock granted after wait. */
+ db_seq_t st_current; /* Current value in db. */
+ db_seq_t st_value; /* Current cached value. */
+ db_seq_t st_last_value; /* Last cached value. */
+ db_seq_t st_min; /* Minimum value. */
+ db_seq_t st_max; /* Maximum value. */
+ int32_t st_cache_size; /* Cache size. */
+ u_int32_t st_flags; /* Flag value. */
+};
+
+/*******************************************************
+ * Access methods.
+ *******************************************************/
+typedef enum {
+ DB_BTREE=1,
+ DB_HASH=2,
+ DB_RECNO=3,
+ DB_QUEUE=4,
+ DB_UNKNOWN=5 /* Figure it out on open. */
+} DBTYPE;
+
+#define DB_RENAMEMAGIC 0x030800 /* File has been renamed. */
+
+#define DB_BTREEVERSION 9 /* Current btree version. */
+#define DB_BTREEOLDVER 8 /* Oldest btree version supported. */
+#define DB_BTREEMAGIC 0x053162
+
+#define DB_HASHVERSION 9 /* Current hash version. */
+#define DB_HASHOLDVER 7 /* Oldest hash version supported. */
+#define DB_HASHMAGIC 0x061561
+
+#define DB_QAMVERSION 4 /* Current queue version. */
+#define DB_QAMOLDVER 3 /* Oldest queue version supported. */
+#define DB_QAMMAGIC 0x042253
+
+#define DB_SEQUENCE_VERSION 2 /* Current sequence version. */
+#define DB_SEQUENCE_OLDVER 1 /* Oldest sequence version supported. */
+
+/*
+ * DB access method and cursor operation values. Each value is an operation
+ * code to which additional bit flags are added.
+ */
+#define DB_AFTER 1 /* Dbc.put */
+#define DB_APPEND 2 /* Db.put */
+#define DB_BEFORE 3 /* Dbc.put */
+#define DB_CONSUME 4 /* Db.get */
+#define DB_CONSUME_WAIT 5 /* Db.get */
+#define DB_CURRENT 6 /* Dbc.get, Dbc.put, DbLogc.get */
+#define DB_FIRST 7 /* Dbc.get, DbLogc->get */
+#define DB_GET_BOTH 8 /* Db.get, Dbc.get */
+#define DB_GET_BOTHC 9 /* Dbc.get (internal) */
+#define DB_GET_BOTH_RANGE 10 /* Db.get, Dbc.get */
+#define DB_GET_RECNO 11 /* Dbc.get */
+#define DB_JOIN_ITEM 12 /* Dbc.get; don't do primary lookup */
+#define DB_KEYFIRST 13 /* Dbc.put */
+#define DB_KEYLAST 14 /* Dbc.put */
+#define DB_LAST 15 /* Dbc.get, DbLogc->get */
+#define DB_NEXT 16 /* Dbc.get, DbLogc->get */
+#define DB_NEXT_DUP 17 /* Dbc.get */
+#define DB_NEXT_NODUP 18 /* Dbc.get */
+#define DB_NODUPDATA 19 /* Db.put, Dbc.put */
+#define DB_NOOVERWRITE 20 /* Db.put */
+#define DB_NOSYNC 21 /* Db.close */
+#define DB_POSITION 22 /* Dbc.dup */
+#define DB_PREV 23 /* Dbc.get, DbLogc->get */
+#define DB_PREV_DUP 24 /* Dbc.get */
+#define DB_PREV_NODUP 25 /* Dbc.get */
+#define DB_SET 26 /* Dbc.get, DbLogc->get */
+#define DB_SET_RANGE 27 /* Dbc.get */
+#define DB_SET_RECNO 28 /* Db.get, Dbc.get */
+#define DB_UPDATE_SECONDARY 29 /* Dbc.get, Dbc.del (internal) */
+#define DB_WRITECURSOR 30 /* Db.cursor */
+#define DB_WRITELOCK 31 /* Db.cursor (internal) */
+
+/* This has to change when the max opcode hits 255. */
+#define DB_OPFLAGS_MASK 0x000000ff /* Mask for operations flags. */
+
+/*
+ * Masks for flags that can be OR'd into DB access method and cursor
+ * operation values. Three top bits have already been taken:
+ *
+ * DB_AUTO_COMMIT 0x02000000
+ * DB_READ_COMMITTED 0x04000000
+ * DB_READ_UNCOMMITTED 0x08000000
+ */
+#define DB_MULTIPLE 0x10000000 /* Return multiple data values. */
+#define DB_MULTIPLE_KEY 0x20000000 /* Return multiple data/key pairs. */
+#define DB_RMW 0x40000000 /* Acquire write lock immediately. */
+
+/*
+ * DB (user visible) error return codes.
+ *
+ * !!!
+ * We don't want our error returns to conflict with other packages where
+ * possible, so pick a base error value that's hopefully not common. We
+ * document that we own the error name space from -30,800 to -30,999.
+ */
+/* DB (public) error return codes. */
+#define DB_BUFFER_SMALL (-30999)/* User memory too small for return. */
+#define DB_DONOTINDEX (-30998)/* "Null" return from 2ndary callbk. */
+#define DB_KEYEMPTY (-30997)/* Key/data deleted or never created. */
+#define DB_KEYEXIST (-30996)/* The key/data pair already exists. */
+#define DB_LOCK_DEADLOCK (-30995)/* Deadlock. */
+#define DB_LOCK_NOTGRANTED (-30994)/* Lock unavailable. */
+#define DB_LOG_BUFFER_FULL (-30993)/* In-memory log buffer full. */
+#define DB_NOSERVER (-30992)/* Server panic return. */
+#define DB_NOSERVER_HOME (-30991)/* Bad home sent to server. */
+#define DB_NOSERVER_ID (-30990)/* Bad ID sent to server. */
+#define DB_NOTFOUND (-30989)/* Key/data pair not found (EOF). */
+#define DB_OLD_VERSION (-30988)/* Out-of-date version. */
+#define DB_PAGE_NOTFOUND (-30987)/* Requested page not found. */
+#define DB_REP_DUPMASTER (-30986)/* There are two masters. */
+#define DB_REP_HANDLE_DEAD (-30985)/* Rolled back a commit. */
+#define DB_REP_HOLDELECTION (-30984)/* Time to hold an election. */
+#define DB_REP_IGNORE (-30983)/* This msg should be ignored.*/
+#define DB_REP_ISPERM (-30982)/* Cached not written perm written.*/
+#define DB_REP_JOIN_FAILURE (-30981)/* Unable to join replication group. */
+#define DB_REP_LEASE_EXPIRED (-30980)/* Master lease has expired. */
+#define DB_REP_LOCKOUT (-30979)/* API/Replication lockout now. */
+#define DB_REP_NEWSITE (-30978)/* New site entered system. */
+#define DB_REP_NOTPERM (-30977)/* Permanent log record not written. */
+#define DB_REP_UNAVAIL (-30976)/* Site cannot currently be reached. */
+#define DB_RUNRECOVERY (-30975)/* Panic return. */
+#define DB_SECONDARY_BAD (-30974)/* Secondary index corrupt. */
+#define DB_VERIFY_BAD (-30973)/* Verify failed; bad format. */
+#define DB_VERSION_MISMATCH (-30972)/* Environment version mismatch. */
+
+/* DB (private) error return codes. */
+#define DB_ALREADY_ABORTED (-30899)
+#define DB_DELETED (-30898)/* Recovery file marked deleted. */
+#define DB_EVENT_NOT_HANDLED (-30897)/* Forward event to application. */
+#define DB_NEEDSPLIT (-30896)/* Page needs to be split. */
+#define DB_REP_BULKOVF (-30895)/* Rep bulk buffer overflow. */
+#define DB_REP_EGENCHG (-30894)/* Egen changed while in election. */
+#define DB_REP_LOGREADY (-30893)/* Rep log ready for recovery. */
+#define DB_REP_NEWMASTER (-30892)/* We have learned of a new master. */
+#define DB_REP_PAGEDONE (-30891)/* This page was already done. */
+#define DB_SURPRISE_KID (-30890)/* Child commit where parent
+ didn't know it was a parent. */
+#define DB_SWAPBYTES (-30889)/* Database needs byte swapping. */
+#define DB_TIMEOUT (-30888)/* Timed out waiting for election. */
+#define DB_TXN_CKP (-30887)/* Encountered ckp record in log. */
+#define DB_VERIFY_FATAL (-30886)/* DB->verify cannot proceed. */
+
+/* Database handle. */
+struct __db {
+ /*******************************************************
+ * Public: owned by the application.
+ *******************************************************/
+ u_int32_t pgsize; /* Database logical page size. */
+ DB_CACHE_PRIORITY priority; /* Database priority in cache. */
+
+ /* Callbacks. */
+ int (*db_append_recno) __P((DB *, DBT *, db_recno_t));
+ void (*db_feedback) __P((DB *, int, int));
+ int (*dup_compare) __P((DB *, const DBT *, const DBT *));
+
+ void *app_private; /* Application-private handle. */
+
+ /*******************************************************
+ * Private: owned by DB.
+ *******************************************************/
+ DB_ENV *dbenv; /* Backing environment. */
+
+ DBTYPE type; /* DB access method type. */
+
+ DB_MPOOLFILE *mpf; /* Backing buffer pool. */
+
+ db_mutex_t mutex; /* Synchronization for free threading */
+
+ char *fname, *dname; /* File/database passed to DB->open. */
+ u_int32_t open_flags; /* Flags passed to DB->open. */
+
+ u_int8_t fileid[DB_FILE_ID_LEN];/* File's unique ID for locking. */
+
+ u_int32_t adj_fileid; /* File's unique ID for curs. adj. */
+
+#define DB_LOGFILEID_INVALID -1
+ FNAME *log_filename; /* File's naming info for logging. */
+
+ db_pgno_t meta_pgno; /* Meta page number */
+ DB_LOCKER *locker; /* Locker for handle locking. */
+ DB_LOCKER *cur_locker; /* Current handle lock holder. */
+ DB_TXN *cur_txn; /* Opening transaction. */
+ DB_LOCKER *associate_locker; /* Locker for DB->associate call. */
+ DB_LOCK handle_lock; /* Lock held on this handle. */
+
+ u_int cl_id; /* RPC: remote client id. */
+
+ time_t timestamp; /* Handle timestamp for replication. */
+ u_int32_t fid_gen; /* Rep generation number for fids. */
+
+ /*
+ * Returned data memory for DB->get() and friends.
+ */
+ DBT my_rskey; /* Secondary key. */
+ DBT my_rkey; /* [Primary] key. */
+ DBT my_rdata; /* Data. */
+
+ /*
+ * !!!
+ * Some applications use DB but implement their own locking outside of
+ * DB. If they're using fcntl(2) locking on the underlying database
+ * file, and we open and close a file descriptor for that file, we will
+ * discard their locks. The DB_FCNTL_LOCKING flag to DB->open is an
+ * undocumented interface to support this usage which leaves any file
+ * descriptors we open until DB->close. This will only work with the
+ * DB->open interface and simple caches, e.g., creating a transaction
+ * thread may open/close file descriptors this flag doesn't protect.
+ * Locking with fcntl(2) on a file that you don't own is a very, very
+ * unsafe thing to do. 'Nuff said.
+ */
+ DB_FH *saved_open_fhp; /* Saved file handle. */
+
+ /*
+ * Linked list of DBP's, linked from the DB_ENV, used to keep track
+ * of all open db handles for cursor adjustment.
+ *
+ * !!!
+ * Explicit representations of structures from queue.h.
+ * TAILQ_ENTRY(__db) dblistlinks;
+ */
+ struct {
+ struct __db *tqe_next;
+ struct __db **tqe_prev;
+ } dblistlinks;
+
+ /*
+ * Cursor queues.
+ *
+ * !!!
+ * Explicit representations of structures from queue.h.
+ * TAILQ_HEAD(__cq_fq, __dbc) free_queue;
+ * TAILQ_HEAD(__cq_aq, __dbc) active_queue;
+ * TAILQ_HEAD(__cq_jq, __dbc) join_queue;
+ */
+ struct __cq_fq {
+ struct __dbc *tqh_first;
+ struct __dbc **tqh_last;
+ } free_queue;
+ struct __cq_aq {
+ struct __dbc *tqh_first;
+ struct __dbc **tqh_last;
+ } active_queue;
+ struct __cq_jq {
+ struct __dbc *tqh_first;
+ struct __dbc **tqh_last;
+ } join_queue;
+
+ /*
+ * Secondary index support.
+ *
+ * Linked list of secondary indices -- set in the primary.
+ *
+ * !!!
+ * Explicit representations of structures from queue.h.
+ * LIST_HEAD(s_secondaries, __db);
+ */
+ struct {
+ struct __db *lh_first;
+ } s_secondaries;
+
+ /*
+ * List entries for secondaries, and reference count of how many
+ * threads are updating this secondary (see Dbc.put).
+ *
+ * !!!
+ * Note that these are synchronized by the primary's mutex, but
+ * filled in in the secondaries.
+ *
+ * !!!
+ * Explicit representations of structures from queue.h.
+ * LIST_ENTRY(__db) s_links;
+ */
+ struct {
+ struct __db *le_next;
+ struct __db **le_prev;
+ } s_links;
+ u_int32_t s_refcnt;
+
+ /* Secondary callback and free functions -- set in the secondary. */
+ int (*s_callback) __P((DB *, const DBT *, const DBT *, DBT *));
+
+ /* Reference to primary -- set in the secondary. */
+ DB *s_primary;
+
+#define DB_ASSOC_IMMUTABLE_KEY 0x00000001 /* Secondary key is immutable. */
+
+ /* Flags passed to associate -- set in the secondary. */
+ u_int32_t s_assoc_flags;
+
+ /* API-private structure: used by DB 1.85, C++, Java, Perl and Tcl */
+ void *api_internal;
+
+ /* Subsystem-private structure. */
+ void *bt_internal; /* Btree/Recno access method. */
+ void *h_internal; /* Hash access method. */
+ void *q_internal; /* Queue access method. */
+ void *xa_internal; /* XA. */
+
+ /* DB PUBLIC HANDLE LIST BEGIN */
+ int (*associate) __P((DB *, DB_TXN *, DB *,
+ int (*)(DB *, const DBT *, const DBT *, DBT *), u_int32_t));
+ int (*close) __P((DB *, u_int32_t));
+ int (*compact) __P((DB *,
+ DB_TXN *, DBT *, DBT *, DB_COMPACT *, u_int32_t, DBT *));
+ int (*cursor) __P((DB *, DB_TXN *, DBC **, u_int32_t));
+ int (*del) __P((DB *, DB_TXN *, DBT *, u_int32_t));
+ void (*err) __P((DB *, int, const char *, ...));
+ void (*errx) __P((DB *, const char *, ...));
+ int (*exists) __P((DB *, DB_TXN *, DBT *, u_int32_t));
+ int (*fd) __P((DB *, int *));
+ int (*get) __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t));
+ int (*get_bt_minkey) __P((DB *, u_int32_t *));
+ int (*get_byteswapped) __P((DB *, int *));
+ int (*get_cachesize) __P((DB *, u_int32_t *, u_int32_t *, int *));
+ int (*get_dbname) __P((DB *, const char **, const char **));
+ int (*get_encrypt_flags) __P((DB *, u_int32_t *));
+ DB_ENV *(*get_env) __P((DB *));
+ void (*get_errfile) __P((DB *, FILE **));
+ void (*get_errpfx) __P((DB *, const char **));
+ int (*get_flags) __P((DB *, u_int32_t *));
+ int (*get_h_ffactor) __P((DB *, u_int32_t *));
+ int (*get_h_nelem) __P((DB *, u_int32_t *));
+ int (*get_lorder) __P((DB *, int *));
+ DB_MPOOLFILE *(*get_mpf) __P((DB *));
+ void (*get_msgfile) __P((DB *, FILE **));
+ int (*get_multiple) __P((DB *));
+ int (*get_open_flags) __P((DB *, u_int32_t *));
+ int (*get_pagesize) __P((DB *, u_int32_t *));
+ int (*get_priority) __P((DB *, DB_CACHE_PRIORITY *));
+ int (*get_q_extentsize) __P((DB *, u_int32_t *));
+ int (*get_re_delim) __P((DB *, int *));
+ int (*get_re_len) __P((DB *, u_int32_t *));
+ int (*get_re_pad) __P((DB *, int *));
+ int (*get_re_source) __P((DB *, const char **));
+ int (*get_transactional) __P((DB *));
+ int (*get_type) __P((DB *, DBTYPE *));
+ int (*join) __P((DB *, DBC **, DBC **, u_int32_t));
+ int (*key_range)
+ __P((DB *, DB_TXN *, DBT *, DB_KEY_RANGE *, u_int32_t));
+ int (*open) __P((DB *,
+ DB_TXN *, const char *, const char *, DBTYPE, u_int32_t, int));
+ int (*pget) __P((DB *, DB_TXN *, DBT *, DBT *, DBT *, u_int32_t));
+ int (*put) __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t));
+ int (*remove) __P((DB *, const char *, const char *, u_int32_t));
+ int (*rename) __P((DB *,
+ const char *, const char *, const char *, u_int32_t));
+ int (*set_alloc) __P((DB *, void *(*)(size_t),
+ void *(*)(void *, size_t), void (*)(void *)));
+ int (*set_append_recno) __P((DB *, int (*)(DB *, DBT *, db_recno_t)));
+ int (*set_bt_compare)
+ __P((DB *, int (*)(DB *, const DBT *, const DBT *)));
+ int (*set_bt_minkey) __P((DB *, u_int32_t));
+ int (*set_bt_prefix)
+ __P((DB *, size_t (*)(DB *, const DBT *, const DBT *)));
+ int (*set_cachesize) __P((DB *, u_int32_t, u_int32_t, int));
+ int (*set_dup_compare)
+ __P((DB *, int (*)(DB *, const DBT *, const DBT *)));
+ int (*set_encrypt) __P((DB *, const char *, u_int32_t));
+ void (*set_errcall) __P((DB *,
+ void (*)(const DB_ENV *, const char *, const char *)));
+ void (*set_errfile) __P((DB *, FILE *));
+ void (*set_errpfx) __P((DB *, const char *));
+ int (*set_feedback) __P((DB *, void (*)(DB *, int, int)));
+ int (*set_flags) __P((DB *, u_int32_t));
+ int (*set_h_compare)
+ __P((DB *, int (*)(DB *, const DBT *, const DBT *)));
+ int (*set_h_ffactor) __P((DB *, u_int32_t));
+ int (*set_h_hash)
+ __P((DB *, u_int32_t (*)(DB *, const void *, u_int32_t)));
+ int (*set_h_nelem) __P((DB *, u_int32_t));
+ int (*set_lorder) __P((DB *, int));
+ void (*set_msgcall) __P((DB *, void (*)(const DB_ENV *, const char *)));
+ void (*set_msgfile) __P((DB *, FILE *));
+ int (*set_pagesize) __P((DB *, u_int32_t));
+ int (*set_paniccall) __P((DB *, void (*)(DB_ENV *, int)));
+ int (*set_priority) __P((DB *, DB_CACHE_PRIORITY));
+ int (*set_q_extentsize) __P((DB *, u_int32_t));
+ int (*set_re_delim) __P((DB *, int));
+ int (*set_re_len) __P((DB *, u_int32_t));
+ int (*set_re_pad) __P((DB *, int));
+ int (*set_re_source) __P((DB *, const char *));
+ int (*stat) __P((DB *, DB_TXN *, void *, u_int32_t));
+ int (*stat_print) __P((DB *, u_int32_t));
+ int (*sync) __P((DB *, u_int32_t));
+ int (*truncate) __P((DB *, DB_TXN *, u_int32_t *, u_int32_t));
+ int (*upgrade) __P((DB *, const char *, u_int32_t));
+ int (*verify)
+ __P((DB *, const char *, const char *, FILE *, u_int32_t));
+ /* DB PUBLIC HANDLE LIST END */
+
+ /* DB PRIVATE HANDLE LIST BEGIN */
+ int (*dump) __P((DB *, const char *,
+ int (*)(void *, const void *), void *, int, int));
+ int (*db_am_remove) __P((DB *, DB_TXN *, const char *, const char *));
+ int (*db_am_rename) __P((DB *, DB_TXN *,
+ const char *, const char *, const char *));
+ /* DB PRIVATE HANDLE LIST END */
+
+ /*
+ * Never called; these are a place to save function pointers
+ * so that we can undo an associate.
+ */
+ int (*stored_get) __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t));
+ int (*stored_close) __P((DB *, u_int32_t));
+
+#define DB_OK_BTREE 0x01
+#define DB_OK_HASH 0x02
+#define DB_OK_QUEUE 0x04
+#define DB_OK_RECNO 0x08
+ u_int32_t am_ok; /* Legal AM choices. */
+
+ /*
+ * This field really ought to be an AM_FLAG, but we have
+ * have run out of bits. If/when we decide to split up
+ * the flags, we can incorporate it.
+ */
+ int preserve_fid; /* Do not free fileid on close. */
+
+#define DB_AM_CHKSUM 0x00000001 /* Checksumming */
+#define DB_AM_COMPENSATE 0x00000002 /* Created by compensating txn */
+#define DB_AM_CREATED 0x00000004 /* Database was created upon open */
+#define DB_AM_CREATED_MSTR 0x00000008 /* Encompassing file was created */
+#define DB_AM_DBM_ERROR 0x00000010 /* Error in DBM/NDBM database */
+#define DB_AM_DELIMITER 0x00000020 /* Variable length delimiter set */
+#define DB_AM_DISCARD 0x00000040 /* Discard any cached pages */
+#define DB_AM_DUP 0x00000080 /* DB_DUP */
+#define DB_AM_DUPSORT 0x00000100 /* DB_DUPSORT */
+#define DB_AM_ENCRYPT 0x00000200 /* Encryption */
+#define DB_AM_FIXEDLEN 0x00000400 /* Fixed-length records */
+#define DB_AM_INMEM 0x00000800 /* In-memory; no sync on close */
+#define DB_AM_INORDER 0x00001000 /* DB_INORDER */
+#define DB_AM_IN_RENAME 0x00002000 /* File is being renamed */
+#define DB_AM_NOT_DURABLE 0x00004000 /* Do not log changes */
+#define DB_AM_OPEN_CALLED 0x00008000 /* DB->open called */
+#define DB_AM_PAD 0x00010000 /* Fixed-length record pad */
+#define DB_AM_PGDEF 0x00020000 /* Page size was defaulted */
+#define DB_AM_RDONLY 0x00040000 /* Database is readonly */
+#define DB_AM_READ_UNCOMMITTED 0x00080000 /* Support degree 1 isolation */
+#define DB_AM_RECNUM 0x00100000 /* DB_RECNUM */
+#define DB_AM_RECOVER 0x00200000 /* DB opened by recovery routine */
+#define DB_AM_RENUMBER 0x00400000 /* DB_RENUMBER */
+#define DB_AM_REVSPLITOFF 0x00800000 /* DB_REVSPLITOFF */
+#define DB_AM_SECONDARY 0x01000000 /* Database is a secondary index */
+#define DB_AM_SNAPSHOT 0x02000000 /* DB_SNAPSHOT */
+#define DB_AM_SUBDB 0x04000000 /* Subdatabases supported */
+#define DB_AM_SWAP 0x08000000 /* Pages need to be byte-swapped */
+#define DB_AM_TXN 0x10000000 /* Opened in a transaction */
+#define DB_AM_VERIFYING 0x20000000 /* DB handle is in the verifier */
+ u_int32_t orig_flags; /* Flags at open, for refresh */
+ u_int32_t flags;
+};
+
+/*
+ * Macros for bulk get. These are only intended for the C API.
+ * For C++, use DbMultiple*Iterator.
+ */
+#define DB_MULTIPLE_INIT(pointer, dbt) \
+ (pointer = (u_int8_t *)(dbt)->data + \
+ (dbt)->ulen - sizeof(u_int32_t))
+#define DB_MULTIPLE_NEXT(pointer, dbt, retdata, retdlen) \
+ do { \
+ if (*((u_int32_t *)(pointer)) == (u_int32_t)-1) { \
+ retdata = NULL; \
+ pointer = NULL; \
+ break; \
+ } \
+ retdata = (u_int8_t *) \
+ (dbt)->data + *(u_int32_t *)(pointer); \
+ (pointer) = (u_int32_t *)(pointer) - 1; \
+ retdlen = *(u_int32_t *)(pointer); \
+ (pointer) = (u_int32_t *)(pointer) - 1; \
+ if (retdlen == 0 && \
+ retdata == (u_int8_t *)(dbt)->data) \
+ retdata = NULL; \
+ } while (0)
+#define DB_MULTIPLE_KEY_NEXT(pointer, dbt, retkey, retklen, retdata, retdlen) \
+ do { \
+ if (*((u_int32_t *)(pointer)) == (u_int32_t)-1) { \
+ retdata = NULL; \
+ retkey = NULL; \
+ pointer = NULL; \
+ break; \
+ } \
+ retkey = (u_int8_t *) \
+ (dbt)->data + *(u_int32_t *)(pointer); \
+ (pointer) = (u_int32_t *)(pointer) - 1; \
+ retklen = *(u_int32_t *)(pointer); \
+ (pointer) = (u_int32_t *)(pointer) - 1; \
+ retdata = (u_int8_t *) \
+ (dbt)->data + *(u_int32_t *)(pointer); \
+ (pointer) = (u_int32_t *)(pointer) - 1; \
+ retdlen = *(u_int32_t *)(pointer); \
+ (pointer) = (u_int32_t *)(pointer) - 1; \
+ } while (0)
+
+#define DB_MULTIPLE_RECNO_NEXT(pointer, dbt, recno, retdata, retdlen) \
+ do { \
+ if (*((u_int32_t *)(pointer)) == (u_int32_t)0) { \
+ recno = 0; \
+ retdata = NULL; \
+ pointer = NULL; \
+ break; \
+ } \
+ recno = *(u_int32_t *)(pointer); \
+ (pointer) = (u_int32_t *)(pointer) - 1; \
+ retdata = (u_int8_t *) \
+ (dbt)->data + *(u_int32_t *)(pointer); \
+ (pointer) = (u_int32_t *)(pointer) - 1; \
+ retdlen = *(u_int32_t *)(pointer); \
+ (pointer) = (u_int32_t *)(pointer) - 1; \
+ } while (0)
+
+/*******************************************************
+ * Access method cursors.
+ *******************************************************/
+struct __dbc {
+ DB *dbp; /* Related DB access method. */
+ DB_TXN *txn; /* Associated transaction. */
+ DB_CACHE_PRIORITY priority; /* Priority in cache. */
+
+ /*
+ * Active/free cursor queues.
+ *
+ * !!!
+ * Explicit representations of structures from queue.h.
+ * TAILQ_ENTRY(__dbc) links;
+ */
+ struct {
+ DBC *tqe_next;
+ DBC **tqe_prev;
+ } links;
+
+ /*
+ * The DBT *'s below are used by the cursor routines to return
+ * data to the user when DBT flags indicate that DB should manage
+ * the returned memory. They point at a DBT containing the buffer
+ * and length that will be used, and "belonging" to the handle that
+ * should "own" this memory. This may be a "my_*" field of this
+ * cursor--the default--or it may be the corresponding field of
+ * another cursor, a DB handle, a join cursor, etc. In general, it
+ * will be whatever handle the user originally used for the current
+ * DB interface call.
+ */
+ DBT *rskey; /* Returned secondary key. */
+ DBT *rkey; /* Returned [primary] key. */
+ DBT *rdata; /* Returned data. */
+
+ DBT my_rskey; /* Space for returned secondary key. */
+ DBT my_rkey; /* Space for returned [primary] key. */
+ DBT my_rdata; /* Space for returned data. */
+
+ void *lref; /* Reference to default locker. */
+ DB_LOCKER *locker; /* Locker for this operation. */
+ DBT lock_dbt; /* DBT referencing lock. */
+ DB_LOCK_ILOCK lock; /* Object to be locked. */
+ DB_LOCK mylock; /* CDB lock held on this cursor. */
+
+ u_int cl_id; /* Remote client id. */
+
+ DBTYPE dbtype; /* Cursor type. */
+
+ DBC_INTERNAL *internal; /* Access method private. */
+
+ /* DBC PUBLIC HANDLE LIST BEGIN */
+ int (*close) __P((DBC *));
+ int (*count) __P((DBC *, db_recno_t *, u_int32_t));
+ int (*del) __P((DBC *, u_int32_t));
+ int (*dup) __P((DBC *, DBC **, u_int32_t));
+ int (*get) __P((DBC *, DBT *, DBT *, u_int32_t));
+ int (*get_priority) __P((DBC *, DB_CACHE_PRIORITY *));
+ int (*pget) __P((DBC *, DBT *, DBT *, DBT *, u_int32_t));
+ int (*put) __P((DBC *, DBT *, DBT *, u_int32_t));
+ int (*set_priority) __P((DBC *, DB_CACHE_PRIORITY));
+ /* DBC PUBLIC HANDLE LIST END */
+
+ /* The following are the method names deprecated in the 4.6 release. */
+ int (*c_close) __P((DBC *));
+ int (*c_count) __P((DBC *, db_recno_t *, u_int32_t));
+ int (*c_del) __P((DBC *, u_int32_t));
+ int (*c_dup) __P((DBC *, DBC **, u_int32_t));
+ int (*c_get) __P((DBC *, DBT *, DBT *, u_int32_t));
+ int (*c_pget) __P((DBC *, DBT *, DBT *, DBT *, u_int32_t));
+ int (*c_put) __P((DBC *, DBT *, DBT *, u_int32_t));
+
+ /* DBC PRIVATE HANDLE LIST BEGIN */
+ int (*am_bulk) __P((DBC *, DBT *, u_int32_t));
+ int (*am_close) __P((DBC *, db_pgno_t, int *));
+ int (*am_del) __P((DBC *));
+ int (*am_destroy) __P((DBC *));
+ int (*am_get) __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *));
+ int (*am_put) __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *));
+ int (*am_writelock) __P((DBC *));
+ /* DBC PRIVATE HANDLE LIST END */
+
+/*
+ * DBC_DONTLOCK and DBC_RECOVER are used during recovery and transaction
+ * abort. If a transaction is being aborted or recovered then DBC_RECOVER
+ * will be set and locking and logging will be disabled on this cursor. If
+ * we are performing a compensating transaction (e.g. free page processing)
+ * then DB_DONTLOCK will be set to inhibit locking, but logging will still
+ * be required. DB_DONTLOCK is also used if the whole database is locked.
+ */
+#define DBC_ACTIVE 0x0001 /* Cursor in use. */
+#define DBC_DONTLOCK 0x0002 /* Don't lock on this cursor. */
+#define DBC_MULTIPLE 0x0004 /* Return Multiple data. */
+#define DBC_MULTIPLE_KEY 0x0008 /* Return Multiple keys and data. */
+#define DBC_OPD 0x0010 /* Cursor references off-page dups. */
+#define DBC_OWN_LID 0x0020 /* Free lock id on destroy. */
+#define DBC_READ_COMMITTED 0x0040 /* Cursor has degree 2 isolation. */
+#define DBC_READ_UNCOMMITTED 0x0080 /* Cursor has degree 1 isolation. */
+#define DBC_RECOVER 0x0100 /* Recovery cursor; don't log/lock. */
+#define DBC_RMW 0x0200 /* Acquire write flag in read op. */
+#define DBC_TRANSIENT 0x0400 /* Cursor is transient. */
+#define DBC_WRITECURSOR 0x0800 /* Cursor may be used to write (CDB). */
+#define DBC_WRITER 0x1000 /* Cursor immediately writing (CDB). */
+ u_int32_t flags;
+};
+
+/* Key range statistics structure */
+struct __key_range {
+ double less;
+ double equal;
+ double greater;
+};
+
+/* Btree/Recno statistics structure. */
+struct __db_bt_stat {
+ u_int32_t bt_magic; /* Magic number. */
+ u_int32_t bt_version; /* Version number. */
+ u_int32_t bt_metaflags; /* Metadata flags. */
+ u_int32_t bt_nkeys; /* Number of unique keys. */
+ u_int32_t bt_ndata; /* Number of data items. */
+ u_int32_t bt_pagecnt; /* Page count. */
+ u_int32_t bt_pagesize; /* Page size. */
+ u_int32_t bt_minkey; /* Minkey value. */
+ u_int32_t bt_re_len; /* Fixed-length record length. */
+ u_int32_t bt_re_pad; /* Fixed-length record pad. */
+ u_int32_t bt_levels; /* Tree levels. */
+ u_int32_t bt_int_pg; /* Internal pages. */
+ u_int32_t bt_leaf_pg; /* Leaf pages. */
+ u_int32_t bt_dup_pg; /* Duplicate pages. */
+ u_int32_t bt_over_pg; /* Overflow pages. */
+ u_int32_t bt_empty_pg; /* Empty pages. */
+ u_int32_t bt_free; /* Pages on the free list. */
+ u_int32_t bt_int_pgfree; /* Bytes free in internal pages. */
+ u_int32_t bt_leaf_pgfree; /* Bytes free in leaf pages. */
+ u_int32_t bt_dup_pgfree; /* Bytes free in duplicate pages. */
+ u_int32_t bt_over_pgfree; /* Bytes free in overflow pages. */
+};
+
+struct __db_compact {
+ /* Input Parameters. */
+ u_int32_t compact_fillpercent; /* Desired fillfactor: 1-100 */
+ db_timeout_t compact_timeout; /* Lock timeout. */
+ u_int32_t compact_pages; /* Max pages to process. */
+ /* Output Stats. */
+ u_int32_t compact_pages_free; /* Number of pages freed. */
+ u_int32_t compact_pages_examine; /* Number of pages examine. */
+ u_int32_t compact_levels; /* Number of levels removed. */
+ u_int32_t compact_deadlock; /* Number of deadlocks. */
+ db_pgno_t compact_pages_truncated; /* Pages truncated to OS. */
+ /* Internal. */
+ db_pgno_t compact_truncate; /* Page number for truncation */
+};
+
+/* Hash statistics structure. */
+struct __db_h_stat {
+ u_int32_t hash_magic; /* Magic number. */
+ u_int32_t hash_version; /* Version number. */
+ u_int32_t hash_metaflags; /* Metadata flags. */
+ u_int32_t hash_nkeys; /* Number of unique keys. */
+ u_int32_t hash_ndata; /* Number of data items. */
+ u_int32_t hash_pagecnt; /* Page count. */
+ u_int32_t hash_pagesize; /* Page size. */
+ u_int32_t hash_ffactor; /* Fill factor specified at create. */
+ u_int32_t hash_buckets; /* Number of hash buckets. */
+ u_int32_t hash_free; /* Pages on the free list. */
+ u_int32_t hash_bfree; /* Bytes free on bucket pages. */
+ u_int32_t hash_bigpages; /* Number of big key/data pages. */
+ u_int32_t hash_big_bfree; /* Bytes free on big item pages. */
+ u_int32_t hash_overflows; /* Number of overflow pages. */
+ u_int32_t hash_ovfl_free; /* Bytes free on ovfl pages. */
+ u_int32_t hash_dup; /* Number of dup pages. */
+ u_int32_t hash_dup_free; /* Bytes free on duplicate pages. */
+};
+
+/* Queue statistics structure. */
+struct __db_qam_stat {
+ u_int32_t qs_magic; /* Magic number. */
+ u_int32_t qs_version; /* Version number. */
+ u_int32_t qs_metaflags; /* Metadata flags. */
+ u_int32_t qs_nkeys; /* Number of unique keys. */
+ u_int32_t qs_ndata; /* Number of data items. */
+ u_int32_t qs_pagesize; /* Page size. */
+ u_int32_t qs_extentsize; /* Pages per extent. */
+ u_int32_t qs_pages; /* Data pages. */
+ u_int32_t qs_re_len; /* Fixed-length record length. */
+ u_int32_t qs_re_pad; /* Fixed-length record pad. */
+ u_int32_t qs_pgfree; /* Bytes free in data pages. */
+ u_int32_t qs_first_recno; /* First not deleted record. */
+ u_int32_t qs_cur_recno; /* Next available record number. */
+};
+
+/*******************************************************
+ * Environment.
+ *******************************************************/
+#define DB_REGION_MAGIC 0x120897 /* Environment magic number. */
+
+/* Database Environment handle. */
+struct __db_env {
+ /*******************************************************
+ * Public: owned by the application.
+ *******************************************************/
+ /* Error message callback. */
+ void (*db_errcall) __P((const DB_ENV *, const char *, const char *));
+ FILE *db_errfile; /* Error message file stream. */
+ const char *db_errpfx; /* Error message prefix. */
+
+ FILE *db_msgfile; /* Statistics message file stream. */
+ /* Statistics message callback. */
+ void (*db_msgcall) __P((const DB_ENV *, const char *));
+
+ /* Other Callbacks. */
+ void (*db_feedback) __P((DB_ENV *, int, int));
+ void (*db_paniccall) __P((DB_ENV *, int));
+ void (*db_event_func) __P((DB_ENV *, u_int32_t, void *));
+
+ /* App-specified alloc functions. */
+ void *(*db_malloc) __P((size_t));
+ void *(*db_realloc) __P((void *, size_t));
+ void (*db_free) __P((void *));
+
+ /* Application callback to copy data to/from a custom data source. */
+#define DB_USERCOPY_GETDATA 0x0001
+#define DB_USERCOPY_SETDATA 0x0002
+ int (*dbt_usercopy)
+ __P((DBT *, u_int32_t, void *, u_int32_t, u_int32_t));
+
+ /*
+ * Currently, the verbose list is a bit field with room for 32
+ * entries. There's no reason that it needs to be limited, if
+ * there are ever more than 32 entries, convert to a bit array.
+ */
+#define DB_VERB_DEADLOCK 0x0001 /* Deadlock detection information. */
+#define DB_VERB_FILEOPS 0x0002 /* Major file operations. */
+#define DB_VERB_FILEOPS_ALL 0x0004 /* All file operations. */
+#define DB_VERB_RECOVERY 0x0008 /* Recovery information. */
+#define DB_VERB_REGISTER 0x0010 /* Dump waits-for table. */
+#define DB_VERB_REPLICATION 0x0020 /* Replication information. */
+#define DB_VERB_WAITSFOR 0x0040 /* Dump waits-for table. */
+ u_int32_t verbose; /* Verbose output. */
+
+ void *app_private; /* Application-private handle. */
+
+ int (*app_dispatch) /* User-specified recovery dispatch. */
+ __P((DB_ENV *, DBT *, DB_LSN *, db_recops));
+
+ /* Mutexes. */
+ u_int32_t mutex_align; /* Mutex alignment */
+ u_int32_t mutex_cnt; /* Number of mutexes to configure */
+ u_int32_t mutex_inc; /* Number of mutexes to add */
+ u_int32_t mutex_tas_spins;/* Test-and-set spin count */
+
+ struct {
+ int alloc_id; /* Allocation ID argument */
+ u_int32_t flags; /* Flags argument */
+ } *mutex_iq; /* Initial mutexes queue */
+ u_int mutex_iq_next; /* Count of initial mutexes */
+ u_int mutex_iq_max; /* Maximum initial mutexes */
+
+ /* Locking. */
+ u_int8_t *lk_conflicts; /* Two dimensional conflict matrix. */
+ int lk_modes; /* Number of lock modes in table. */
+ u_int32_t lk_max; /* Maximum number of locks. */
+ u_int32_t lk_max_lockers;/* Maximum number of lockers. */
+ u_int32_t lk_max_objects;/* Maximum number of locked objects. */
+ u_int32_t lk_detect; /* Deadlock detect on all conflicts. */
+ db_timeout_t lk_timeout; /* Lock timeout period. */
+
+ /* Logging. */
+ u_int32_t lg_bsize; /* Buffer size. */
+ u_int32_t lg_size; /* Log file size. */
+ u_int32_t lg_regionmax; /* Region size. */
+ int lg_filemode; /* Log file permission mode. */
+
+ /* Memory pool. */
+ u_int mp_ncache; /* Initial number of cache regions. */
+ u_int32_t mp_gbytes; /* Cache size: GB. */
+ u_int32_t mp_bytes; /* Cache size: bytes. */
+ u_int32_t mp_max_gbytes; /* Maximum cache size: GB. */
+ u_int32_t mp_max_bytes; /* Maximum cache size: bytes. */
+ size_t mp_mmapsize; /* Maximum file size for mmap. */
+ int mp_maxopenfd; /* Maximum open file descriptors. */
+ int mp_maxwrite; /* Maximum buffers to write. */
+ db_timeout_t mp_maxwrite_sleep; /* Sleep after writing max buffers. */
+
+ /* Transactions. */
+ u_int32_t tx_max; /* Maximum number of transactions. */
+ time_t tx_timestamp; /* Recover to specific timestamp. */
+ db_timeout_t tx_timeout; /* Timeout for transactions. */
+
+ /* Thread tracking. */
+ u_int32_t thr_nbucket; /* Number of hash buckets. */
+ u_int32_t thr_max; /* Max before garbage collection. */
+ void *thr_hashtab; /* Hash table of DB_THREAD_INFO. */
+
+ /*******************************************************
+ * Private: owned by DB.
+ *******************************************************/
+ db_mutex_t mtx_env; /* General DbEnv structure mutex. */
+
+ pid_t pid_cache; /* Cached process ID. */
+
+ /* User files, paths. */
+ char *db_home; /* Database home. */
+ char *db_log_dir; /* Database log file directory. */
+ char *db_tmp_dir; /* Database tmp file directory. */
+
+ char **db_data_dir; /* Database data file directories. */
+ int data_cnt; /* Database data file slots. */
+ int data_next; /* Next Database data file slot. */
+
+ int db_mode; /* Default open permissions. */
+ int dir_mode; /* Intermediate directory perms. */
+ void *env_lref; /* Locker in non-threaded handles. */
+ u_int32_t open_flags; /* Flags passed to DB_ENV->open. */
+
+ void *reginfo; /* REGINFO structure reference. */
+ DB_FH *lockfhp; /* fcntl(2) locking file handle. */
+
+ DB_FH *registry; /* DB_REGISTER file handle. */
+ u_int32_t registry_off; /*
+ * Offset of our slot. We can't use
+ * off_t because its size depends on
+ * build settings.
+ */
+
+ /* Return IDs. */
+ void (*thread_id) __P((DB_ENV *, pid_t *, db_threadid_t *));
+ /* Return if IDs alive. */
+ int (*is_alive)
+ __P((DB_ENV *, pid_t, db_threadid_t, u_int32_t));
+ /* Format IDs into a string. */
+ char *(*thread_id_string)
+ __P((DB_ENV *, pid_t, db_threadid_t, char *));
+
+ int (**recover_dtab) /* Dispatch table for recover funcs. */
+ __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+ size_t recover_dtab_size;
+ /* Slots in the dispatch table. */
+
+ void *cl_handle; /* RPC: remote client handle. */
+ u_int cl_id; /* RPC: remote client env id. */
+
+ int db_ref; /* DB reference count. */
+
+ long shm_key; /* shmget(2) key. */
+
+ /*
+ * List of open file handles for this DB_ENV. Must be protected
+ * for multi-threaded support.
+ *
+ * !!!
+ * Explicit representation of structure in queue.h.
+ * TAILQ_HEAD(__fdlist, __fh_t);
+ */
+ struct __fdlist {
+ struct __fh_t *tqh_first;
+ struct __fh_t **tqh_last;
+ } fdlist;
+
+ /*
+ * List of open DB handles for this DB_ENV, used for cursor
+ * adjustment. Must be protected for multi-threaded support.
+ *
+ * !!!
+ * Explicit representation of structure in queue.h.
+ * TAILQ_HEAD(__dblist, __db);
+ */
+ db_mutex_t mtx_dblist; /* Mutex. */
+ struct __dblist {
+ struct __db *tqh_first;
+ struct __db **tqh_last;
+ } dblist;
+
+ /*
+ * XA support.
+ *
+ * !!!
+ * Explicit representations of structures from queue.h.
+ * TAILQ_ENTRY(__db_env) links;
+ * TAILQ_HEAD(xa_txn, __db_txn);
+ */
+ struct {
+ struct __db_env *tqe_next;
+ struct __db_env **tqe_prev;
+ } links;
+ struct __xa_txn { /* XA Active Transactions. */
+ struct __db_txn *tqh_first;
+ struct __db_txn **tqh_last;
+ } xa_txn;
+ int xa_rmid; /* XA Resource Manager ID. */
+
+ char *passwd; /* Cryptography support. */
+ size_t passwd_len;
+ void *crypto_handle; /* Primary handle. */
+ db_mutex_t mtx_mt; /* Mersenne Twister mutex. */
+ int mti; /* Mersenne Twister index. */
+ u_long *mt; /* Mersenne Twister state vector. */
+
+ /* API-private structure. */
+ void *api1_internal; /* C++, Perl API private */
+ void *api2_internal; /* Java API private */
+
+ DB_LOCKTAB *lk_handle; /* Lock handle. */
+ DB_LOG *lg_handle; /* Log handle. */
+ DB_MPOOL *mp_handle; /* Mpool handle. */
+ DB_MUTEXMGR *mutex_handle; /* Mutex handle. */
+ DB_REP *rep_handle; /* Replication handle. */
+ DB_TXNMGR *tx_handle; /* Txn handle. */
+
+ /* DB_ENV PUBLIC HANDLE LIST BEGIN */
+ int (*cdsgroup_begin) __P((DB_ENV *, DB_TXN **));
+ int (*close) __P((DB_ENV *, u_int32_t));
+ int (*dbremove) __P((DB_ENV *,
+ DB_TXN *, const char *, const char *, u_int32_t));
+ int (*dbrename) __P((DB_ENV *,
+ DB_TXN *, const char *, const char *, const char *, u_int32_t));
+ void (*err) __P((const DB_ENV *, int, const char *, ...));
+ void (*errx) __P((const DB_ENV *, const char *, ...));
+ int (*failchk) __P((DB_ENV *, u_int32_t));
+ int (*fileid_reset) __P((DB_ENV *, const char *, u_int32_t));
+ int (*get_cachesize) __P((DB_ENV *, u_int32_t *, u_int32_t *, int *));
+ int (*get_cache_max) __P((DB_ENV *, u_int32_t *, u_int32_t *));
+ int (*get_data_dirs) __P((DB_ENV *, const char ***));
+ int (*get_encrypt_flags) __P((DB_ENV *, u_int32_t *));
+ void (*get_errfile) __P((DB_ENV *, FILE **));
+ void (*get_errpfx) __P((DB_ENV *, const char **));
+ int (*get_flags) __P((DB_ENV *, u_int32_t *));
+ int (*get_home) __P((DB_ENV *, const char **));
+ int (*get_lg_bsize) __P((DB_ENV *, u_int32_t *));
+ int (*get_lg_dir) __P((DB_ENV *, const char **));
+ int (*get_lg_filemode) __P((DB_ENV *, int *));
+ int (*get_lg_max) __P((DB_ENV *, u_int32_t *));
+ int (*get_lg_regionmax) __P((DB_ENV *, u_int32_t *));
+ int (*get_lk_conflicts) __P((DB_ENV *, const u_int8_t **, int *));
+ int (*get_lk_detect) __P((DB_ENV *, u_int32_t *));
+ int (*get_lk_max_lockers) __P((DB_ENV *, u_int32_t *));
+ int (*get_lk_max_locks) __P((DB_ENV *, u_int32_t *));
+ int (*get_lk_max_objects) __P((DB_ENV *, u_int32_t *));
+ int (*get_mp_max_openfd) __P((DB_ENV *, int *));
+ int (*get_mp_max_write) __P((DB_ENV *, int *, db_timeout_t *));
+ int (*get_mp_mmapsize) __P((DB_ENV *, size_t *));
+ void (*get_msgfile) __P((DB_ENV *, FILE **));
+ int (*get_open_flags) __P((DB_ENV *, u_int32_t *));
+ int (*get_shm_key) __P((DB_ENV *, long *));
+ int (*get_thread_count) __P((DB_ENV *, u_int32_t *));
+ int (*get_timeout) __P((DB_ENV *, db_timeout_t *, u_int32_t));
+ int (*get_tmp_dir) __P((DB_ENV *, const char **));
+ int (*get_tx_max) __P((DB_ENV *, u_int32_t *));
+ int (*get_tx_timestamp) __P((DB_ENV *, time_t *));
+ int (*get_verbose) __P((DB_ENV *, u_int32_t, int *));
+ int (*is_bigendian) __P((void));
+ int (*lock_detect) __P((DB_ENV *, u_int32_t, u_int32_t, int *));
+ int (*lock_get) __P((DB_ENV *,
+ u_int32_t, u_int32_t, const DBT *, db_lockmode_t, DB_LOCK *));
+ int (*lock_id) __P((DB_ENV *, u_int32_t *));
+ int (*lock_id_free) __P((DB_ENV *, u_int32_t));
+ int (*lock_put) __P((DB_ENV *, DB_LOCK *));
+ int (*lock_stat) __P((DB_ENV *, DB_LOCK_STAT **, u_int32_t));
+ int (*lock_stat_print) __P((DB_ENV *, u_int32_t));
+ int (*lock_vec) __P((DB_ENV *,
+ u_int32_t, u_int32_t, DB_LOCKREQ *, int, DB_LOCKREQ **));
+ int (*log_archive) __P((DB_ENV *, char **[], u_int32_t));
+ int (*log_cursor) __P((DB_ENV *, DB_LOGC **, u_int32_t));
+ int (*log_file) __P((DB_ENV *, const DB_LSN *, char *, size_t));
+ int (*log_flush) __P((DB_ENV *, const DB_LSN *));
+ int (*log_printf) __P((DB_ENV *, DB_TXN *, const char *, ...));
+ int (*log_put) __P((DB_ENV *, DB_LSN *, const DBT *, u_int32_t));
+ int (*log_stat) __P((DB_ENV *, DB_LOG_STAT **, u_int32_t));
+ int (*log_stat_print) __P((DB_ENV *, u_int32_t));
+ int (*lsn_reset) __P((DB_ENV *, const char *, u_int32_t));
+ int (*memp_fcreate) __P((DB_ENV *, DB_MPOOLFILE **, u_int32_t));
+ int (*memp_register) __P((DB_ENV *, int, int (*)(DB_ENV *,
+ db_pgno_t, void *, DBT *), int (*)(DB_ENV *,
+ db_pgno_t, void *, DBT *)));
+ int (*memp_stat) __P((DB_ENV *,
+ DB_MPOOL_STAT **, DB_MPOOL_FSTAT ***, u_int32_t));
+ int (*memp_stat_print) __P((DB_ENV *, u_int32_t));
+ int (*memp_sync) __P((DB_ENV *, DB_LSN *));
+ int (*memp_trickle) __P((DB_ENV *, int, int *));
+ int (*mutex_alloc) __P((DB_ENV *, u_int32_t, db_mutex_t *));
+ int (*mutex_free) __P((DB_ENV *, db_mutex_t));
+ int (*mutex_get_align) __P((DB_ENV *, u_int32_t *));
+ int (*mutex_get_increment) __P((DB_ENV *, u_int32_t *));
+ int (*mutex_get_max) __P((DB_ENV *, u_int32_t *));
+ int (*mutex_get_tas_spins) __P((DB_ENV *, u_int32_t *));
+ int (*mutex_lock) __P((DB_ENV *, db_mutex_t));
+ int (*mutex_set_align) __P((DB_ENV *, u_int32_t));
+ int (*mutex_set_increment) __P((DB_ENV *, u_int32_t));
+ int (*mutex_set_max) __P((DB_ENV *, u_int32_t));
+ int (*mutex_set_tas_spins) __P((DB_ENV *, u_int32_t));
+ int (*mutex_stat) __P((DB_ENV *, DB_MUTEX_STAT **, u_int32_t));
+ int (*mutex_stat_print) __P((DB_ENV *, u_int32_t));
+ int (*mutex_unlock) __P((DB_ENV *, db_mutex_t));
+ int (*open) __P((DB_ENV *, const char *, u_int32_t, int));
+ int (*remove) __P((DB_ENV *, const char *, u_int32_t));
+ int (*rep_elect) __P((DB_ENV *, int, int, u_int32_t));
+ int (*rep_flush) __P((DB_ENV *));
+ int (*rep_get_config) __P((DB_ENV *, u_int32_t, int *));
+ int (*rep_get_limit) __P((DB_ENV *, u_int32_t *, u_int32_t *));
+ int (*rep_get_nsites) __P((DB_ENV *, int *));
+ int (*rep_get_priority) __P((DB_ENV *, int *));
+ int (*rep_get_timeout) __P((DB_ENV *, int, u_int32_t *));
+ int (*rep_process_message)
+ __P((DB_ENV *, DBT *, DBT *, int, DB_LSN *));
+ int (*rep_set_config) __P((DB_ENV *, u_int32_t, int));
+ int (*rep_set_lease) __P((DB_ENV *, u_int32_t, u_int32_t));
+ int (*rep_set_limit) __P((DB_ENV *, u_int32_t, u_int32_t));
+ int (*rep_set_nsites) __P((DB_ENV *, int));
+ int (*rep_set_priority) __P((DB_ENV *, int));
+ int (*rep_set_timeout) __P((DB_ENV *, int, db_timeout_t));
+ int (*rep_set_transport) __P((DB_ENV *, int, int (*)(DB_ENV *,
+ const DBT *, const DBT *, const DB_LSN *, int, u_int32_t)));
+ int (*rep_start) __P((DB_ENV *, DBT *, u_int32_t));
+ int (*rep_stat) __P((DB_ENV *, DB_REP_STAT **, u_int32_t));
+ int (*rep_stat_print) __P((DB_ENV *, u_int32_t));
+ int (*rep_sync) __P((DB_ENV *, u_int32_t));
+ int (*repmgr_add_remote_site) __P((DB_ENV *, const char *, u_int,
+ int *, u_int32_t));
+ int (*repmgr_get_ack_policy) __P((DB_ENV *, int *));
+ int (*repmgr_set_ack_policy) __P((DB_ENV *, int));
+ int (*repmgr_set_local_site) __P((DB_ENV *, const char *, u_int,
+ u_int32_t));
+ int (*repmgr_site_list) __P((DB_ENV *, u_int *,
+ DB_REPMGR_SITE **));
+ int (*repmgr_start) __P((DB_ENV *, int, u_int32_t));
+ int (*repmgr_stat) __P((DB_ENV *, DB_REPMGR_STAT **, u_int32_t));
+ int (*repmgr_stat_print) __P((DB_ENV *, u_int32_t));
+ int (*set_alloc) __P((DB_ENV *, void *(*)(size_t),
+ void *(*)(void *, size_t), void (*)(void *)));
+ int (*set_app_dispatch)
+ __P((DB_ENV *, int (*)(DB_ENV *, DBT *, DB_LSN *, db_recops)));
+ int (*set_cachesize) __P((DB_ENV *, u_int32_t, u_int32_t, int));
+ int (*set_cache_max) __P((DB_ENV *, u_int32_t, u_int32_t));
+ int (*set_data_dir) __P((DB_ENV *, const char *));
+ int (*set_encrypt) __P((DB_ENV *, const char *, u_int32_t));
+ void (*set_errcall) __P((DB_ENV *,
+ void (*)(const DB_ENV *, const char *, const char *)));
+ void (*set_errfile) __P((DB_ENV *, FILE *));
+ void (*set_errpfx) __P((DB_ENV *, const char *));
+ int (*set_event_notify)
+ __P((DB_ENV *, void (*)(DB_ENV *, u_int32_t, void *)));
+ int (*set_feedback) __P((DB_ENV *, void (*)(DB_ENV *, int, int)));
+ int (*set_flags) __P((DB_ENV *, u_int32_t, int));
+ int (*set_intermediate_dir) __P((DB_ENV *, int, u_int32_t));
+ int (*set_isalive) __P((DB_ENV *,
+ int (*)(DB_ENV *, pid_t, db_threadid_t, u_int32_t)));
+ int (*set_lg_bsize) __P((DB_ENV *, u_int32_t));
+ int (*set_lg_dir) __P((DB_ENV *, const char *));
+ int (*set_lg_filemode) __P((DB_ENV *, int));
+ int (*set_lg_max) __P((DB_ENV *, u_int32_t));
+ int (*set_lg_regionmax) __P((DB_ENV *, u_int32_t));
+ int (*set_lk_conflicts) __P((DB_ENV *, u_int8_t *, int));
+ int (*set_lk_detect) __P((DB_ENV *, u_int32_t));
+ int (*set_lk_max_lockers) __P((DB_ENV *, u_int32_t));
+ int (*set_lk_max_locks) __P((DB_ENV *, u_int32_t));
+ int (*set_lk_max_objects) __P((DB_ENV *, u_int32_t));
+ int (*set_mp_max_openfd) __P((DB_ENV *, int));
+ int (*set_mp_max_write) __P((DB_ENV *, int, db_timeout_t));
+ int (*set_mp_mmapsize) __P((DB_ENV *, size_t));
+ void (*set_msgcall)
+ __P((DB_ENV *, void (*)(const DB_ENV *, const char *)));
+ void (*set_msgfile) __P((DB_ENV *, FILE *));
+ int (*set_paniccall) __P((DB_ENV *, void (*)(DB_ENV *, int)));
+ int (*set_rep_request) __P((DB_ENV *, u_int32_t, u_int32_t));
+ int (*set_rpc_server)
+ __P((DB_ENV *, void *, const char *, long, long, u_int32_t));
+ int (*set_shm_key) __P((DB_ENV *, long));
+ int (*set_thread_count) __P((DB_ENV *, u_int32_t));
+ int (*set_thread_id) __P((DB_ENV *,
+ void (*)(DB_ENV *, pid_t *, db_threadid_t *)));
+ int (*set_thread_id_string) __P((DB_ENV *,
+ char *(*)(DB_ENV *, pid_t, db_threadid_t, char *)));
+ int (*set_timeout) __P((DB_ENV *, db_timeout_t, u_int32_t));
+ int (*set_tmp_dir) __P((DB_ENV *, const char *));
+ int (*set_tx_max) __P((DB_ENV *, u_int32_t));
+ int (*set_tx_timestamp) __P((DB_ENV *, time_t *));
+ int (*set_verbose) __P((DB_ENV *, u_int32_t, int));
+ int (*stat_print) __P((DB_ENV *, u_int32_t));
+ int (*txn_begin) __P((DB_ENV *, DB_TXN *, DB_TXN **, u_int32_t));
+ int (*txn_checkpoint) __P((DB_ENV *, u_int32_t, u_int32_t, u_int32_t));
+ int (*txn_recover)
+ __P((DB_ENV *, DB_PREPLIST *, long, long *, u_int32_t));
+ int (*txn_stat) __P((DB_ENV *, DB_TXN_STAT **, u_int32_t));
+ int (*txn_stat_print) __P((DB_ENV *, u_int32_t));
+ /* DB_ENV PUBLIC HANDLE LIST END */
+
+ /* DB_ENV PRIVATE HANDLE LIST BEGIN */
+ int (*prdbt) __P((DBT *,
+ int, const char *, void *, int (*)(void *, const void *), int));
+ /* DB_ENV PRIVATE HANDLE LIST END */
+
+#define DB_TEST_ELECTINIT 1 /* after __rep_elect_init */
+#define DB_TEST_ELECTVOTE1 2 /* after sending VOTE1 */
+#define DB_TEST_POSTDESTROY 3 /* after destroy op */
+#define DB_TEST_POSTLOG 4 /* after logging all pages */
+#define DB_TEST_POSTLOGMETA 5 /* after logging meta in btree */
+#define DB_TEST_POSTOPEN 6 /* after __os_open */
+#define DB_TEST_POSTSYNC 7 /* after syncing the log */
+#define DB_TEST_PREDESTROY 8 /* before destroy op */
+#define DB_TEST_PREOPEN 9 /* before __os_open */
+#define DB_TEST_RECYCLE 10 /* test rep and txn_recycle */
+#define DB_TEST_SUBDB_LOCKS 11 /* subdb locking tests */
+ int test_abort; /* Abort value for testing. */
+ int test_check; /* Checkpoint value for testing. */
+ int test_copy; /* Copy value for testing. */
+
+#define DB_ENV_AUTO_COMMIT 0x00000001 /* DB_AUTO_COMMIT. */
+#define DB_ENV_CDB 0x00000002 /* DB_INIT_CDB. */
+#define DB_ENV_CDB_ALLDB 0x00000004 /* CDB environment wide locking. */
+#define DB_ENV_DBLOCAL 0x00000008 /* Environment for a private DB. */
+#define DB_ENV_DIRECT_DB 0x00000010 /* DB_DIRECT_DB set. */
+#define DB_ENV_DIRECT_LOG 0x00000020 /* DB_DIRECT_LOG set. */
+#define DB_ENV_DSYNC_DB 0x00000040 /* DB_DSYNC_DB set. */
+#define DB_ENV_DSYNC_LOG 0x00000080 /* DB_DSYNC_LOG set. */
+#define DB_ENV_LOCKDOWN 0x00000100 /* DB_LOCKDOWN set. */
+#define DB_ENV_LOG_AUTOREMOVE 0x00000200 /* DB_LOG_AUTOREMOVE set. */
+#define DB_ENV_LOG_INMEMORY 0x00000400 /* DB_LOG_INMEMORY set. */
+#define DB_ENV_MULTIVERSION 0x00000800 /* DB_MULTIVERSION set. */
+#define DB_ENV_NOLOCKING 0x00001000 /* DB_NOLOCKING set. */
+#define DB_ENV_NOMMAP 0x00002000 /* DB_NOMMAP set. */
+#define DB_ENV_NOPANIC 0x00004000 /* Okay if panic set. */
+#define DB_ENV_NO_OUTPUT_SET 0x00008000 /* No output channel set. */
+#define DB_ENV_OPEN_CALLED 0x00010000 /* DB_ENV->open called. */
+#define DB_ENV_OVERWRITE 0x00020000 /* DB_OVERWRITE set. */
+#define DB_ENV_PRIVATE 0x00040000 /* DB_PRIVATE set. */
+#define DB_ENV_RECOVER_FATAL 0x00080000 /* Doing fatal recovery in env. */
+#define DB_ENV_REF_COUNTED 0x00100000 /* Region references this handle. */
+#define DB_ENV_REGION_INIT 0x00200000 /* DB_REGION_INIT set. */
+#define DB_ENV_RPCCLIENT 0x00400000 /* DB_RPCCLIENT set. */
+#define DB_ENV_RPCCLIENT_GIVEN 0x00800000 /* User-supplied RPC client struct */
+#define DB_ENV_SYSTEM_MEM 0x01000000 /* DB_SYSTEM_MEM set. */
+#define DB_ENV_THREAD 0x02000000 /* DB_THREAD set. */
+#define DB_ENV_TIME_NOTGRANTED 0x04000000 /* DB_TIME_NOTGRANTED set. */
+#define DB_ENV_TXN_NOSYNC 0x08000000 /* DB_TXN_NOSYNC set. */
+#define DB_ENV_TXN_NOWAIT 0x10000000 /* DB_TXN_NOWAIT set. */
+#define DB_ENV_TXN_SNAPSHOT 0x20000000 /* DB_TXN_SNAPSHOT set. */
+#define DB_ENV_TXN_WRITE_NOSYNC 0x40000000 /* DB_TXN_WRITE_NOSYNC set. */
+#define DB_ENV_YIELDCPU 0x80000000 /* DB_YIELDCPU set. */
+ u_int32_t flags;
+};
+
+#ifndef DB_DBM_HSEARCH
+#define DB_DBM_HSEARCH 0 /* No historic interfaces by default. */
+#endif
+#if DB_DBM_HSEARCH != 0
+/*******************************************************
+ * Dbm/Ndbm historic interfaces.
+ *******************************************************/
+typedef struct __db DBM;
+
+#define DBM_INSERT 0 /* Flags to dbm_store(). */
+#define DBM_REPLACE 1
+
+/*
+ * The DB support for ndbm(3) always appends this suffix to the
+ * file name to avoid overwriting the user's original database.
+ */
+#define DBM_SUFFIX ".db"
+
+#if defined(_XPG4_2)
+typedef struct {
+ char *dptr;
+ size_t dsize;
+} datum;
+#else
+typedef struct {
+ char *dptr;
+ int dsize;
+} datum;
+#endif
+
+/*
+ * Translate NDBM calls into DB calls so that DB doesn't step on the
+ * application's name space.
+ */
+#define dbm_clearerr(a) __db_ndbm_clearerr(a)
+#define dbm_close(a) __db_ndbm_close(a)
+#define dbm_delete(a, b) __db_ndbm_delete(a, b)
+#define dbm_dirfno(a) __db_ndbm_dirfno(a)
+#define dbm_error(a) __db_ndbm_error(a)
+#define dbm_fetch(a, b) __db_ndbm_fetch(a, b)
+#define dbm_firstkey(a) __db_ndbm_firstkey(a)
+#define dbm_nextkey(a) __db_ndbm_nextkey(a)
+#define dbm_open(a, b, c) __db_ndbm_open(a, b, c)
+#define dbm_pagfno(a) __db_ndbm_pagfno(a)
+#define dbm_rdonly(a) __db_ndbm_rdonly(a)
+#define dbm_store(a, b, c, d) \
+ __db_ndbm_store(a, b, c, d)
+
+/*
+ * Translate DBM calls into DB calls so that DB doesn't step on the
+ * application's name space.
+ *
+ * The global variables dbrdonly, dirf and pagf were not retained when 4BSD
+ * replaced the dbm interface with ndbm, and are not supported here.
+ */
+#define dbminit(a) __db_dbm_init(a)
+#define dbmclose __db_dbm_close
+#if !defined(__cplusplus)
+#define delete(a) __db_dbm_delete(a)
+#endif
+#define fetch(a) __db_dbm_fetch(a)
+#define firstkey __db_dbm_firstkey
+#define nextkey(a) __db_dbm_nextkey(a)
+#define store(a, b) __db_dbm_store(a, b)
+
+/*******************************************************
+ * Hsearch historic interface.
+ *******************************************************/
+typedef enum {
+ FIND, ENTER
+} ACTION;
+
+typedef struct entry {
+ char *key;
+ char *data;
+} ENTRY;
+
+#define hcreate(a) __db_hcreate(a)
+#define hdestroy __db_hdestroy
+#define hsearch(a, b) __db_hsearch(a, b)
+
+#endif /* DB_DBM_HSEARCH */
+
+#if defined(__cplusplus)
+}
+#endif
+
+/* Restore default compiler warnings */
+#ifdef _MSC_VER
+#pragma warning(pop)
+#endif
+#endif /* !_DB_H_ */
+
+/* DO NOT EDIT: automatically built by dist/s_include. */
+#ifndef _DB_EXT_PROT_IN_
+#define _DB_EXT_PROT_IN_
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+int db_create __P((DB **, DB_ENV *, u_int32_t));
+char *db_strerror __P((int));
+int db_env_create __P((DB_ENV **, u_int32_t));
+char *db_version __P((int *, int *, int *));
+int log_compare __P((const DB_LSN *, const DB_LSN *));
+int db_env_set_func_close __P((int (*)(int)));
+int db_env_set_func_dirfree __P((void (*)(char **, int)));
+int db_env_set_func_dirlist __P((int (*)(const char *, char ***, int *)));
+int db_env_set_func_exists __P((int (*)(const char *, int *)));
+int db_env_set_func_free __P((void (*)(void *)));
+int db_env_set_func_fsync __P((int (*)(int)));
+int db_env_set_func_ftruncate __P((int (*)(int, off_t)));
+int db_env_set_func_ioinfo __P((int (*)(const char *, int, u_int32_t *, u_int32_t *, u_int32_t *)));
+int db_env_set_func_malloc __P((void *(*)(size_t)));
+int db_env_set_func_map __P((int (*)(char *, size_t, int, int, void **)));
+int db_env_set_func_pread __P((ssize_t (*)(int, void *, size_t, off_t)));
+int db_env_set_func_pwrite __P((ssize_t (*)(int, const void *, size_t, off_t)));
+int db_env_set_func_open __P((int (*)(const char *, int, ...)));
+int db_env_set_func_read __P((ssize_t (*)(int, void *, size_t)));
+int db_env_set_func_realloc __P((void *(*)(void *, size_t)));
+int db_env_set_func_rename __P((int (*)(const char *, const char *)));
+int db_env_set_func_seek __P((int (*)(int, off_t, int)));
+int db_env_set_func_sleep __P((int (*)(u_long, u_long)));
+int db_env_set_func_unlink __P((int (*)(const char *)));
+int db_env_set_func_unmap __P((int (*)(void *, size_t)));
+int db_env_set_func_write __P((ssize_t (*)(int, const void *, size_t)));
+int db_env_set_func_yield __P((int (*)(void)));
+int db_sequence_create __P((DB_SEQUENCE **, DB *, u_int32_t));
+#if DB_DBM_HSEARCH != 0
+int __db_ndbm_clearerr __P((DBM *));
+void __db_ndbm_close __P((DBM *));
+int __db_ndbm_delete __P((DBM *, datum));
+int __db_ndbm_dirfno __P((DBM *));
+int __db_ndbm_error __P((DBM *));
+datum __db_ndbm_fetch __P((DBM *, datum));
+datum __db_ndbm_firstkey __P((DBM *));
+datum __db_ndbm_nextkey __P((DBM *));
+DBM *__db_ndbm_open __P((const char *, int, int));
+int __db_ndbm_pagfno __P((DBM *));
+int __db_ndbm_rdonly __P((DBM *));
+int __db_ndbm_store __P((DBM *, datum, datum, int));
+int __db_dbm_close __P((void));
+int __db_dbm_delete __P((datum));
+datum __db_dbm_fetch __P((datum));
+datum __db_dbm_firstkey __P((void));
+int __db_dbm_init __P((char *));
+datum __db_dbm_nextkey __P((datum));
+int __db_dbm_store __P((datum, datum));
+#endif
+#if DB_DBM_HSEARCH != 0
+int __db_hcreate __P((size_t));
+ENTRY *__db_hsearch __P((ENTRY, ACTION));
+void __db_hdestroy __P((void));
+#endif
+
+#if defined(__cplusplus)
+}
+#endif
+#endif /* !_DB_EXT_PROT_IN_ */
diff --git a/db/build_wince/db_config.h b/db/build_wince/db_config.h
new file mode 100644
index 000000000..09389efd5
--- /dev/null
+++ b/db/build_wince/db_config.h
@@ -0,0 +1,561 @@
+/* DO NOT EDIT: automatically built by dist/s_windows. */
+/* Define to 1 if you want to build a version for running the test suite. */
+/* #undef CONFIG_TEST */
+
+/* We use DB_WIN32 much as one would use _WIN32 -- to specify that we're using
+ an operating system environment that supports Win32 calls and semantics. We
+ don't use _WIN32 because Cygwin/GCC also defines _WIN32, even though
+ Cygwin/GCC closely emulates the Unix environment. */
+#define DB_WIN32 1
+
+/* Define to 1 if you want a debugging version. */
+#if defined(_DEBUG)
+#if !defined(DEBUG)
+#define DEBUG 1
+#endif
+#endif
+
+/* Define to 1 if you want a version that logs read operations. */
+/* #undef DEBUG_ROP */
+
+/* Define to 1 if you want a version that logs write operations. */
+/* #undef DEBUG_WOP */
+
+/* Define to 1 if you want a version with run-time diagnostic checking. */
+/* #undef DIAGNOSTIC */
+
+/* Define to 1 if 64-bit types are available. */
+#define HAVE_64BIT_TYPES 1
+
+/* Define to 1 if you have the `abort' function. */
+/* #undef HAVE_ABORT */
+
+/* Define to 1 if you have the `atoi' function. */
+#define HAVE_ATOI 1
+
+/* Define to 1 if you have the `atol' function. */
+#define HAVE_ATOL 1
+
+/* Define to 1 if building BREW. */
+/* #undef HAVE_BREW */
+
+/* Define to 1 if building on BREW (SDK2). */
+/* #undef HAVE_BREW_SDK2 */
+
+/* Define to 1 if you have the `clock_gettime' function. */
+/* #undef HAVE_CLOCK_GETTIME */
+
+/* Define to 1 if Berkeley DB release includes strong cryptography. */
+#ifndef HAVE_SMALLBUILD
+#define HAVE_CRYPTO 1
+#endif
+
+/* Define to 1 if you have the `ctime_r' function. */
+/* #undef HAVE_CTIME_R */
+
+/* Define to 1 if ctime_r takes a buffer length as a third argument. */
+/* #undef HAVE_CTIME_R_3ARG */
+
+/* Define to 1 if you have the `directio' function. */
+/* #undef HAVE_DIRECTIO */
+
+/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
+ */
+/* #undef HAVE_DIRENT_H */
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+/* #undef HAVE_DLFCN_H */
+
+/* Define to 1 if you have EXIT_SUCCESS/EXIT_FAILURE #defines. */
+#define HAVE_EXIT_SUCCESS 1
+
+/* Define to 1 if you have the `fchmod' function. */
+/* #undef HAVE_FCHMOD */
+
+/* Define to 1 if you have the `fclose' function. */
+#define HAVE_FCLOSE 1
+
+/* Define to 1 if you have the `fcntl' function. */
+/* #undef HAVE_FCNTL */
+
+/* Define to 1 if fcntl/F_SETFD denies child access to file descriptors. */
+/* #undef HAVE_FCNTL_F_SETFD */
+
+/* Define to 1 if you have the `fdatasync' function. */
+/* #undef HAVE_FDATASYNC */
+
+/* Define to 1 if you have the `fgetc' function. */
+#define HAVE_FGETC 1
+
+/* Define to 1 if you have the `fgets' function. */
+#define HAVE_FGETS 1
+
+/* Define to 1 if allocated filesystem blocks are not zeroed. */
+#define HAVE_FILESYSTEM_NOTZERO 1
+
+/* Define to 1 to build Berkeley DB with a fine-grained lock manager. */
+/* #undef HAVE_FINE_GRAINED_LOCK_MANAGER */
+
+/* Define to 1 if you have the `fopen' function. */
+#define HAVE_FOPEN 1
+
+/* Define to 1 if you have the `ftruncate' function. */
+/* #undef HAVE_FTRUNCATE */
+
+/* Define to 1 if you have the `fwrite' function. */
+#define HAVE_FWRITE 1
+
+/* Define to 1 if you have the `getaddrinfo' function. */
+/* #undef HAVE_GETADDRINFO */
+
+/* Define to 1 if you have the `getcwd' function. */
+/* #undef HAVE_GETCWD */
+
+/* Define to 1 if you have the `getenv' function. */
+/* #undef HAVE_GETENV */
+
+/* Define to 1 if you have the `getopt' function. */
+/*
+ * Windows does not have the getopt function, but as Berkeley DB example
+ * programs require getopt, we handle it outside of this configuration.
+ */
+#define HAVE_GETOPT 1
+
+/* Define to 1 if you have the `getrusage' function. */
+/* #undef HAVE_GETRUSAGE */
+
+/* Define to 1 if you have the `gettimeofday' function. */
+/* #undef HAVE_GETTIMEOFDAY */
+
+/* Define to 1 if you have the `getuid' function. */
+/* #undef HAVE_GETUID */
+
+/* Define to 1 if building Hash access method. */
+#ifndef HAVE_SMALLBUILD
+#define HAVE_HASH 1
+#endif
+
+/* Define to 1 if you have the `hstrerror' function. */
+/* #undef HAVE_HSTRERROR */
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+/* #undef HAVE_INTTYPES_H */
+
+/* Define to 1 if you have the `isalpha' function. */
+#define HAVE_ISALPHA 1
+
+/* Define to 1 if you have the `isdigit' function. */
+#define HAVE_ISDIGIT 1
+
+/* Define to 1 if you have the `isprint' function. */
+#define HAVE_ISPRINT 1
+
+/* Define to 1 if you have the `localtime' function. */
+/* #undef HAVE_LOCALTIME */
+
+/* Define to 1 if you have the `isspace' function. */
+#define HAVE_ISSPACE 1
+
+/* Define to 1 if you have the `memcmp' function. */
+#define HAVE_MEMCMP 1
+
+/* Define to 1 if you have the `memcpy' function. */
+#define HAVE_MEMCPY 1
+
+/* Define to 1 if you have the `memmove' function. */
+#define HAVE_MEMMOVE 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have the `mlock' function. */
+/* #undef HAVE_MLOCK */
+
+/* Define to 1 if you have the `mmap' function. */
+/* #undef HAVE_MMAP */
+
+/* Define to 1 if you have the `mprotect' function. */
+/* #undef HAVE_MPROTECT */
+
+/* Define to 1 if you have the `munlock' function. */
+/* #undef HAVE_MUNLOCK */
+
+/* Define to 1 if you have the `munmap' function. */
+/* #undef HAVE_MUNMAP */
+
+/* Define to 1 to use the GCC compiler and 68K assembly language mutexes. */
+/* #undef HAVE_MUTEX_68K_GCC_ASSEMBLY */
+
+/* Define to 1 to use the AIX _check_lock mutexes. */
+/* #undef HAVE_MUTEX_AIX_CHECK_LOCK */
+
+/* Define to 1 to use the GCC compiler and Alpha assembly language mutexes. */
+/* #undef HAVE_MUTEX_ALPHA_GCC_ASSEMBLY */
+
+/* Define to 1 to use the GCC compiler and ARM assembly language mutexes. */
+/* #undef HAVE_MUTEX_ARM_GCC_ASSEMBLY */
+
+/* Define to 1 to use the Apple/Darwin _spin_lock_try mutexes. */
+/* #undef HAVE_MUTEX_DARWIN_SPIN_LOCK_TRY */
+
+/* Define to 1 to use the UNIX fcntl system call mutexes. */
+/* #undef HAVE_MUTEX_FCNTL */
+
+/* Define to 1 to use the GCC compiler and PaRisc assembly language mutexes.
+ */
+/* #undef HAVE_MUTEX_HPPA_GCC_ASSEMBLY */
+
+/* Define to 1 to use the msem_XXX mutexes on HP-UX. */
+/* #undef HAVE_MUTEX_HPPA_MSEM_INIT */
+
+/* Define to 1 to use test-and-set mutexes with blocking mutexes. */
+/* #undef HAVE_MUTEX_HYBRID */
+
+/* Define to 1 to use the GCC compiler and IA64 assembly language mutexes. */
+/* #undef HAVE_MUTEX_IA64_GCC_ASSEMBLY */
+
+/* Define to 1 to use the GCC compiler and MIPS assembly language mutexes. */
+/* #undef HAVE_MUTEX_MIPS_GCC_ASSEMBLY */
+
+/* Define to 1 to use the msem_XXX mutexes on systems other than HP-UX. */
+/* #undef HAVE_MUTEX_MSEM_INIT */
+
+/* Define to 1 to use the GCC compiler and PowerPC assembly language mutexes.
+ */
+/* #undef HAVE_MUTEX_PPC_GCC_ASSEMBLY */
+
+/* Define to 1 to use POSIX 1003.1 pthread_XXX mutexes. */
+/* #undef HAVE_MUTEX_PTHREADS */
+
+/* Define to 1 to use Reliant UNIX initspin mutexes. */
+/* #undef HAVE_MUTEX_RELIANTUNIX_INITSPIN */
+
+/* Define to 1 to use the IBM C compiler and S/390 assembly language mutexes.
+ */
+/* #undef HAVE_MUTEX_S390_CC_ASSEMBLY */
+
+/* Define to 1 to use the GCC compiler and S/390 assembly language mutexes. */
+/* #undef HAVE_MUTEX_S390_GCC_ASSEMBLY */
+
+/* Define to 1 to use the SCO compiler and x86 assembly language mutexes. */
+/* #undef HAVE_MUTEX_SCO_X86_CC_ASSEMBLY */
+
+/* Define to 1 to use the obsolete POSIX 1003.1 sema_XXX mutexes. */
+/* #undef HAVE_MUTEX_SEMA_INIT */
+
+/* Define to 1 to use the SGI XXX_lock mutexes. */
+/* #undef HAVE_MUTEX_SGI_INIT_LOCK */
+
+/* Define to 1 to use the Solaris _lock_XXX mutexes. */
+/* #undef HAVE_MUTEX_SOLARIS_LOCK_TRY */
+
+/* Define to 1 to use the Solaris lwp threads mutexes. */
+/* #undef HAVE_MUTEX_SOLARIS_LWP */
+
+/* Define to 1 to use the GCC compiler and Sparc assembly language mutexes. */
+/* #undef HAVE_MUTEX_SPARC_GCC_ASSEMBLY */
+
+/* Define to 1 if the Berkeley DB library should support mutexes. */
+#define HAVE_MUTEX_SUPPORT 1
+
+/* Define to 1 if mutexes hold system resources. */
+/* #undef HAVE_MUTEX_SYSTEM_RESOURCES */
+
+/* Define to 1 to configure mutexes intra-process only. */
+/* #undef HAVE_MUTEX_THREAD_ONLY */
+
+/* Define to 1 to use the CC compiler and Tru64 assembly language mutexes. */
+/* #undef HAVE_MUTEX_TRU64_CC_ASSEMBLY */
+
+/* Define to 1 to use the UNIX International mutexes. */
+/* #undef HAVE_MUTEX_UI_THREADS */
+
+/* Define to 1 to use the UTS compiler and assembly language mutexes. */
+/* #undef HAVE_MUTEX_UTS_CC_ASSEMBLY */
+
+/* Define to 1 to use VMS mutexes. */
+/* #undef HAVE_MUTEX_VMS */
+
+/* Define to 1 to use VxWorks mutexes. */
+/* #undef HAVE_MUTEX_VXWORKS */
+
+/* Define to 1 to use the MSVC compiler and Windows mutexes. */
+#define HAVE_MUTEX_WIN32 1
+
+/* Define to 1 to use the GCC compiler and Windows mutexes. */
+/* #undef HAVE_MUTEX_WIN32_GCC */
+
+/* Define to 1 to use the GCC compiler and 64-bit x86 assembly language
+ mutexes. */
+/* #undef HAVE_MUTEX_X86_64_GCC_ASSEMBLY */
+
+/* Define to 1 to use the GCC compiler and 32-bit x86 assembly language
+ mutexes. */
+/* #undef HAVE_MUTEX_X86_GCC_ASSEMBLY */
+
+/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
+/* #undef HAVE_NDIR_H */
+
+/* Define to 1 if you have the O_DIRECT flag. */
+/* #undef HAVE_O_DIRECT */
+
+/* Define to 1 if you have the `pread' function. */
+/* #undef HAVE_PREAD */
+
+/* Define to 1 if you have the `printf' function. */
+#define HAVE_PRINTF 1
+
+/* Define to 1 if you have the `pstat_getdynamic' function. */
+/* #undef HAVE_PSTAT_GETDYNAMIC */
+
+/* Define to 1 to configure Berkeley DB for POSIX pthread API. */
+/* #undef HAVE_PTHREAD_API */
+
+/* Define to 1 if you have the `pthread_yield' function. */
+/* #undef HAVE_PTHREAD_YIELD */
+
+/* Define to 1 if you have the `pwrite' function. */
+/* #undef HAVE_PWRITE */
+
+/* Define to 1 if building on QNX. */
+/* #undef HAVE_QNX */
+
+/* Define to 1 if you have the `qsort' function. */
+#define HAVE_QSORT 1
+
+/* Define to 1 if building Queue access method. */
+#ifndef HAVE_SMALLBUILD
+#define HAVE_QUEUE 1
+#endif
+
+/* Define to 1 if you have the `raise' function. */
+#define HAVE_RAISE 1
+
+/* Define to 1 if you have the `rand' function. */
+#define HAVE_RAND 1
+
+/* Define to 1 if building replication support. */
+/* #undef HAVE_REPLICATION */
+
+/* Define to 1 if building the Berkeley DB replication framework. */
+/* #undef HAVE_REPLICATION_THREADS */
+
+/* Define to 1 if building RPC client/server. */
+/* #undef HAVE_RPC */
+
+/* Define to 1 if building on S60. */
+/* #undef HAVE_S60 */
+
+/* Define to 1 if you have the `sched_yield' function. */
+/* #undef HAVE_SCHED_YIELD */
+
+/* Define to 1 if you have the `select' function. */
+/* #undef HAVE_SELECT */
+
+/* Define to 1 if you have the `shmget' function. */
+/* #undef HAVE_SHMGET */
+
+/* Define to 1 if you have the `sigaction' function. */
+/* #undef HAVE_SIGACTION */
+
+/* Define to 1 if thread identifier type db_threadid_t is integral. */
+#define HAVE_SIMPLE_THREAD_TYPE 1
+
+/* Define to 1 if you have the `snprintf' function. */
+#define HAVE_SNPRINTF 1
+
+/* Define to 1 if you have the `stat' function. */
+#define HAVE_STAT 1
+
+/* Define to 1 if building statistics support. */
+#define HAVE_STATISTICS 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+/* #undef HAVE_STDINT_H */
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the `strcasecmp' function. */
+#define HAVE_STRCASECMP 1
+
+/* Define to 1 if you have the `strcat' function. */
+#define HAVE_STRCAT 1
+
+/* Define to 1 if you have the `strchr' function. */
+#define HAVE_STRCHR 1
+
+/* Define to 1 if you have the `strdup' function. */
+/* #undef HAVE_STRDUP */
+
+/* Define to 1 if you have the `strerror' function. */
+/* #undef HAVE_STRERROR */
+
+/* Define to 1 if you have the `strftime' function. */
+/* #undef HAVE_STRFTIME */
+
+/* Define to 1 if you have the <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the `strncat' function. */
+#define HAVE_STRNCAT 1
+
+/* Define to 1 if you have the `strncmp' function. */
+#define HAVE_STRNCMP 1
+
+/* Define to 1 if you have the `strrchr' function. */
+#define HAVE_STRRCHR 1
+
+/* Define to 1 if you have the `strsep' function. */
+/* #undef HAVE_STRSEP */
+
+/* Define to 1 if you have the `strtol' function. */
+#define HAVE_STRTOL 1
+
+/* Define to 1 if you have the `strtoul' function. */
+#define HAVE_STRTOUL 1
+
+/* Define to 1 if `st_blksize' is member of `struct stat'. */
+/* #undef HAVE_STRUCT_STAT_ST_BLKSIZE */
+
+/* Define to 1 if you have the `sysconf' function. */
+/* #undef HAVE_SYSCONF */
+
+/* Define to 1 if port includes files in the Berkeley DB source code. */
+/* #undef HAVE_SYSTEM_INCLUDE_FILES */
+
+/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
+ */
+/* #undef HAVE_SYS_DIR_H */
+
+/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
+ */
+/* #undef HAVE_SYS_NDIR_H */
+
+/* Define to 1 if you have the <sys/select.h> header file. */
+/* #undef HAVE_SYS_SELECT_H */
+
+/* Define to 1 if you have the <sys/socket.h> header file. */
+/* #undef HAVE_SYS_SOCKET_H */
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+/* #undef HAVE_SYS_TIME_H */
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the `time' function. */
+/* #undef HAVE_TIME */
+
+/* Define to 1 if you have the <unistd.h> header file. */
+/* #undef HAVE_UNISTD_H */
+
+/* Define to 1 if unlink of file with open file descriptors will fail. */
+/* #undef HAVE_UNLINK_WITH_OPEN_FAILURE */
+
+/* Define to 1 if port includes historic database upgrade support. */
+/* #undef HAVE_UPGRADE_SUPPORT */
+
+/* Define to 1 if building access method verification support. */
+#ifndef HAVE_SMALLBUILD
+#define HAVE_VERIFY 1
+#endif
+
+/* Define to 1 if you have the `vsnprintf' function. */
+#define HAVE_VSNPRINTF 1
+
+/* Define to 1 if building VxWorks. */
+/* #undef HAVE_VXWORKS */
+
+/* Define to 1 if you have the `yield' function. */
+/* #undef HAVE_YIELD */
+
+/* Define to 1 if you have the `_fstati64' function. */
+#define HAVE__FSTATI64 1
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "Oracle Technology Network Berkeley DB forum"
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "Berkeley DB"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "Berkeley DB 4.6.18"
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME "db-4.6.18"
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "4.6.18"
+
+/* The size of a `char', as computed by sizeof. */
+/* #undef SIZEOF_CHAR */
+
+/* The size of a `char *', as computed by sizeof. */
+/* #undef SIZEOF_CHAR_P */
+
+/* The size of a `int', as computed by sizeof. */
+/* #undef SIZEOF_INT */
+
+/* The size of a `long', as computed by sizeof. */
+/* #undef SIZEOF_LONG */
+
+/* The size of a `long long', as computed by sizeof. */
+/* #undef SIZEOF_LONG_LONG */
+
+/* The size of a `short', as computed by sizeof. */
+/* #undef SIZEOF_SHORT */
+
+/* The size of a `size_t', as computed by sizeof. */
+/* #undef SIZEOF_SIZE_T */
+
+/* The size of a `unsigned char', as computed by sizeof. */
+/* #undef SIZEOF_UNSIGNED_CHAR */
+
+/* The size of a `unsigned int', as computed by sizeof. */
+/* #undef SIZEOF_UNSIGNED_INT */
+
+/* The size of a `unsigned long', as computed by sizeof. */
+/* #undef SIZEOF_UNSIGNED_LONG */
+
+/* The size of a `unsigned long long', as computed by sizeof. */
+/* #undef SIZEOF_UNSIGNED_LONG_LONG */
+
+/* The size of a `unsigned short', as computed by sizeof. */
+/* #undef SIZEOF_UNSIGNED_SHORT */
+
+/* Define to 1 if the `S_IS*' macros in <sys/stat.h> do not work properly. */
+/* #undef STAT_MACROS_BROKEN */
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
+/* #undef TIME_WITH_SYS_TIME */
+
+/* Define to 1 to mask harmless uninitialized memory read/writes. */
+/* #undef UMRW */
+
+/* Number of bits in a file offset, on hosts where this is settable. */
+/* #undef _FILE_OFFSET_BITS */
+
+/* Define for large files, on AIX-style hosts. */
+/* #undef _LARGE_FILES */
+
+/* Define to empty if `const' does not conform to ANSI C. */
+/* #undef const */
+
+/* Define to `__inline__' or `__inline' if that's what the C compiler
+ calls it, or to nothing if 'inline' is not supported under any name. */
+#ifndef __cplusplus
+#define inline __inline
+#endif
+
+/* type to use in place of socklen_t if not defined */
+/* #undef socklen_t */
diff --git a/db/build_wince/db_int.h b/db/build_wince/db_int.h
new file mode 100644
index 000000000..157a4a65a
--- /dev/null
+++ b/db/build_wince/db_int.h
@@ -0,0 +1,774 @@
+/* DO NOT EDIT: automatically built by dist/s_windows. */
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
+ *
+ * $Id: db_int.in,v 12.58 2007/05/30 14:06:39 bostic Exp $
+ */
+
+#ifndef _DB_INT_H_
+#define _DB_INT_H_
+
+/*******************************************************
+ * Berkeley DB ANSI/POSIX include files.
+ *******************************************************/
+#ifdef HAVE_SYSTEM_INCLUDE_FILES
+#include <sys/types.h>
+#ifdef DIAG_MVCC
+#include <sys/mman.h>
+#endif
+#include <sys/stat.h>
+
+#if defined(__INCLUDE_SELECT_H)
+#ifdef HAVE_SYS_SELECT_H
+#include <sys/select.h>
+#endif
+#ifdef HAVE_VXWORKS
+#include <selectLib.h>
+#endif
+#endif
+
+#if TIME_WITH_SYS_TIME
+#include <sys/time.h>
+#include <time.h>
+#else
+#if HAVE_SYS_TIME_H
+#include <sys/time.h>
+#else
+#include <time.h>
+#endif
+#endif
+
+#ifdef HAVE_VXWORKS
+#include <net/uio.h>
+#else
+#include <sys/uio.h>
+#endif
+
+#if defined(__INCLUDE_NETWORKING)
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#include <netinet/in.h>
+#include <netdb.h>
+#include <arpa/inet.h>
+#endif
+
+#if defined(STDC_HEADERS) || defined(__cplusplus)
+#include <stdarg.h>
+#else
+#include <varargs.h>
+#endif
+
+#include <ctype.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <limits.h>
+#include <signal.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#if defined(__INCLUDE_DIRECTORY)
+#if HAVE_DIRENT_H
+# include <dirent.h>
+# define NAMLEN(dirent) strlen((dirent)->d_name)
+#else
+# define dirent direct
+# define NAMLEN(dirent) (dirent)->d_namlen
+# if HAVE_SYS_NDIR_H
+# include <sys/ndir.h>
+# endif
+# if HAVE_SYS_DIR_H
+# include <sys/dir.h>
+# endif
+# if HAVE_NDIR_H
+# include <ndir.h>
+# endif
+#endif
+#endif /* __INCLUDE_DIRECTORY_READ */
+
+#endif /* !HAVE_SYSTEM_INCLUDE_FILES */
+
+#ifdef DB_WIN32
+#include "dbinc/win_db.h"
+#endif
+
+#include "db.h"
+#include "clib_port.h"
+
+#include "dbinc/queue.h"
+#include "dbinc/shqueue.h"
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+/*******************************************************
+ * General purpose constants and macros.
+ *******************************************************/
+#undef FALSE
+#define FALSE 0
+#undef TRUE
+#define TRUE (!FALSE)
+
+#define MEGABYTE 1048576
+#define GIGABYTE 1073741824
+
+#define NS_PER_MS 1000000 /* Nanoseconds in a millisecond */
+#define NS_PER_US 1000 /* Nanoseconds in a microsecond */
+#define NS_PER_SEC 1000000000 /* Nanoseconds in a second */
+#define US_PER_MS 1000 /* Microseconds in a millisecond */
+#define US_PER_SEC 1000000 /* Microseconds in a second */
+#define MS_PER_NS 1000000 /* Milliseconds in a nanosecond */
+#define MS_PER_SEC 1000 /* Milliseconds in a second */
+
+#define RECNO_OOB 0 /* Illegal record number. */
+
+/* Test for a power-of-two (tests true for zero, which doesn't matter here). */
+#define POWER_OF_TWO(x) (((x) & ((x) - 1)) == 0)
+
+/* Test for valid page sizes. */
+#define DB_MIN_PGSIZE 0x000200 /* Minimum page size (512). */
+#define DB_MAX_PGSIZE 0x010000 /* Maximum page size (65536). */
+#define IS_VALID_PAGESIZE(x) \
+ (POWER_OF_TWO(x) && (x) >= DB_MIN_PGSIZE && ((x) <= DB_MAX_PGSIZE))
+
+/* Minimum number of pages cached, by default. */
+#define DB_MINPAGECACHE 16
+
+/*
+ * If we are unable to determine the underlying filesystem block size, use
+ * 8K on the grounds that most OS's use less than 8K for a VM page size.
+ */
+#define DB_DEF_IOSIZE (8 * 1024)
+
+/* Align an integer to a specific boundary. */
+#undef DB_ALIGN
+#define DB_ALIGN(v, bound) \
+ (((v) + (bound) - 1) & ~(((uintmax_t)(bound)) - 1))
+
+/* Increment a pointer to a specific boundary. */
+#undef ALIGNP_INC
+#define ALIGNP_INC(p, bound) \
+ (void *)(((uintptr_t)(p) + (bound) - 1) & ~(((uintptr_t)(bound)) - 1))
+
+/*
+ * Print an address as a u_long (a u_long is the largest type we can print
+ * portably). Most 64-bit systems have made longs 64-bits, so this should
+ * work.
+ */
+#define P_TO_ULONG(p) ((u_long)(uintptr_t)(p))
+
+/*
+ * Convert a pointer to a small integral value.
+ *
+ * The (u_int16_t)(uintptr_t) cast avoids warnings: the (uintptr_t) cast
+ * converts the value to an integral type, and the (u_int16_t) cast converts
+ * it to a small integral type so we don't get complaints when we assign the
+ * final result to an integral type smaller than uintptr_t.
+ */
+#define P_TO_UINT32(p) ((u_int32_t)(uintptr_t)(p))
+#define P_TO_UINT16(p) ((u_int16_t)(uintptr_t)(p))
+
+/*
+ * There are several on-page structures that are declared to have a number of
+ * fields followed by a variable length array of items. The structure size
+ * without including the variable length array or the address of the first of
+ * those elements can be found using SSZ.
+ *
+ * This macro can also be used to find the offset of a structure element in a
+ * structure. This is used in various places to copy structure elements from
+ * unaligned memory references, e.g., pointers into a packed page.
+ *
+ * There are two versions because compilers object if you take the address of
+ * an array.
+ */
+#undef SSZ
+#define SSZ(name, field) P_TO_UINT16(&(((name *)0)->field))
+
+#undef SSZA
+#define SSZA(name, field) P_TO_UINT16(&(((name *)0)->field[0]))
+
+/* Structure used to print flag values. */
+typedef struct __fn {
+ u_int32_t mask; /* Flag value. */
+ const char *name; /* Flag name. */
+} FN;
+
+/* Set, clear and test flags. */
+#define FLD_CLR(fld, f) (fld) &= ~(f)
+#define FLD_ISSET(fld, f) ((fld) & (f))
+#define FLD_SET(fld, f) (fld) |= (f)
+#define F_CLR(p, f) (p)->flags &= ~(f)
+#define F_ISSET(p, f) ((p)->flags & (f))
+#define F_SET(p, f) (p)->flags |= (f)
+#define LF_CLR(f) ((flags) &= ~(f))
+#define LF_ISSET(f) ((flags) & (f))
+#define LF_SET(f) ((flags) |= (f))
+
+/*
+ * Calculate a percentage. The values can overflow 32-bit integer arithmetic
+ * so we use floating point.
+ *
+ * When calculating a bytes-vs-page size percentage, we're getting the inverse
+ * of the percentage in all cases, that is, we want 100 minus the percentage we
+ * calculate.
+ */
+#define DB_PCT(v, total) \
+ ((int)((total) == 0 ? 0 : ((double)(v) * 100) / (total)))
+#define DB_PCT_PG(v, total, pgsize) \
+ ((int)((total) == 0 ? 0 : \
+ 100 - ((double)(v) * 100) / (((double)total) * (pgsize))))
+
+/*
+ * Statistics update shared memory and so are expensive -- don't update the
+ * values unless we're going to display the results.
+ */
+#undef STAT
+#ifdef HAVE_STATISTICS
+#define STAT(x) x
+#else
+#define STAT(x)
+#endif
+
+/*
+ * Structure used for callback message aggregation.
+ *
+ * Display values in XXX_stat_print calls.
+ */
+typedef struct __db_msgbuf {
+ char *buf; /* Heap allocated buffer. */
+ char *cur; /* Current end of message. */
+ size_t len; /* Allocated length of buffer. */
+} DB_MSGBUF;
+#define DB_MSGBUF_INIT(a) do { \
+ (a)->buf = (a)->cur = NULL; \
+ (a)->len = 0; \
+} while (0)
+#define DB_MSGBUF_FLUSH(dbenv, a) do { \
+ if ((a)->buf != NULL) { \
+ if ((a)->cur != (a)->buf) \
+ __db_msg(dbenv, "%s", (a)->buf); \
+ __os_free(dbenv, (a)->buf); \
+ DB_MSGBUF_INIT(a); \
+ } \
+} while (0)
+#define STAT_FMT(msg, fmt, type, v) do { \
+ DB_MSGBUF __mb; \
+ DB_MSGBUF_INIT(&__mb); \
+ __db_msgadd(dbenv, &__mb, fmt, (type)(v)); \
+ __db_msgadd(dbenv, &__mb, "\t%s", msg); \
+ DB_MSGBUF_FLUSH(dbenv, &__mb); \
+} while (0)
+#define STAT_HEX(msg, v) \
+ __db_msg(dbenv, "%#lx\t%s", (u_long)(v), msg)
+#define STAT_ISSET(msg, p) \
+ __db_msg(dbenv, "%sSet\t%s", (p) == NULL ? "!" : " ", msg)
+#define STAT_LONG(msg, v) \
+ __db_msg(dbenv, "%ld\t%s", (long)(v), msg)
+#define STAT_LSN(msg, lsnp) \
+ __db_msg(dbenv, "%lu/%lu\t%s", \
+ (u_long)(lsnp)->file, (u_long)(lsnp)->offset, msg)
+#define STAT_POINTER(msg, v) \
+ __db_msg(dbenv, "%#lx\t%s", P_TO_ULONG(v), msg)
+#define STAT_STRING(msg, p) do { \
+ const char *__p = p; /* p may be a function call. */ \
+ __db_msg(dbenv, "%s\t%s", __p == NULL ? "!Set" : __p, msg); \
+} while (0)
+#define STAT_ULONG(msg, v) \
+ __db_msg(dbenv, "%lu\t%s", (u_long)(v), msg)
+
+/*
+ * There are quite a few places in Berkeley DB where we want to initialize
+ * a DBT from a string or other random pointer type, using a length typed
+ * to size_t in most cases. This macro avoids a lot of casting. The macro
+ * comes in two flavors because we often want to clear the DBT first.
+ */
+#define DB_SET_DBT(dbt, d, s) do { \
+ (dbt).data = (void *)(d); \
+ (dbt).size = (u_int32_t)(s); \
+} while (0)
+#define DB_INIT_DBT(dbt, d, s) do { \
+ memset(&(dbt), 0, sizeof(dbt)); \
+ DB_SET_DBT(dbt, d, s); \
+} while (0)
+
+/*******************************************************
+ * API return values
+ *******************************************************/
+/*
+ * Return values that are OK for each different call. Most calls have a
+ * standard 'return of 0 is only OK value', but some, like db->get have
+ * DB_NOTFOUND as a return value, but it really isn't an error.
+ */
+#define DB_RETOK_STD(ret) ((ret) == 0)
+#define DB_RETOK_DBCDEL(ret) ((ret) == 0 || (ret) == DB_KEYEMPTY || \
+ (ret) == DB_NOTFOUND)
+#define DB_RETOK_DBCGET(ret) ((ret) == 0 || (ret) == DB_KEYEMPTY || \
+ (ret) == DB_NOTFOUND)
+#define DB_RETOK_DBCPUT(ret) ((ret) == 0 || (ret) == DB_KEYEXIST || \
+ (ret) == DB_NOTFOUND)
+#define DB_RETOK_DBDEL(ret) DB_RETOK_DBCDEL(ret)
+#define DB_RETOK_DBGET(ret) DB_RETOK_DBCGET(ret)
+#define DB_RETOK_DBPUT(ret) ((ret) == 0 || (ret) == DB_KEYEXIST)
+#define DB_RETOK_EXISTS(ret) DB_RETOK_DBCGET(ret)
+#define DB_RETOK_LGGET(ret) ((ret) == 0 || (ret) == DB_NOTFOUND)
+#define DB_RETOK_MPGET(ret) ((ret) == 0 || (ret) == DB_PAGE_NOTFOUND)
+#define DB_RETOK_REPPMSG(ret) ((ret) == 0 || \
+ (ret) == DB_REP_IGNORE || \
+ (ret) == DB_REP_ISPERM || \
+ (ret) == DB_REP_NEWMASTER || \
+ (ret) == DB_REP_NEWSITE || \
+ (ret) == DB_REP_NOTPERM)
+
+/* Find a reasonable operation-not-supported error. */
+#ifdef EOPNOTSUPP
+#define DB_OPNOTSUP EOPNOTSUPP
+#else
+#ifdef ENOTSUP
+#define DB_OPNOTSUP ENOTSUP
+#else
+#define DB_OPNOTSUP EINVAL
+#endif
+#endif
+
+/*******************************************************
+ * Files.
+ *******************************************************/
+/*
+ * We use 1024 as the maximum path length. It's too hard to figure out what
+ * the real path length is, as it was traditionally stored in <sys/param.h>,
+ * and that file isn't always available.
+ */
+#define DB_MAXPATHLEN 1024
+
+#define PATH_DOT "." /* Current working directory. */
+ /* Path separator character(s). */
+#define PATH_SEPARATOR "\\/:"
+
+/*******************************************************
+ * Environment.
+ *******************************************************/
+/* Type passed to __db_appname(). */
+typedef enum {
+ DB_APP_NONE=0, /* No type (region). */
+ DB_APP_DATA, /* Data file. */
+ DB_APP_LOG, /* Log file. */
+ DB_APP_TMP /* Temporary file. */
+} APPNAME;
+
+/*
+ * A set of macros to check if various functionality has been configured.
+ *
+ * ALIVE_ON The is_alive function is configured.
+ * CDB_LOCKING CDB product locking.
+ * CRYPTO_ON Security has been configured.
+ * LOCKING_ON Locking has been configured.
+ * LOGGING_ON Logging has been configured.
+ * MUTEX_ON Mutexes have been configured.
+ * MPOOL_ON Memory pool has been configured.
+ * REP_ON Replication has been configured.
+ * RPC_ON RPC has been configured.
+ * TXN_ON Transactions have been configured.
+ *
+ * REP_ON is more complex than most: if the BDB library was compiled without
+ * replication support, dbenv->rep_handle will be NULL; if the BDB library
+ * has replication support, but it was not configured, the region reference
+ * will be NULL.
+ */
+#define ALIVE_ON(dbenv) ((dbenv)->is_alive != NULL)
+#define CDB_LOCKING(dbenv) F_ISSET(dbenv, DB_ENV_CDB)
+#define CRYPTO_ON(dbenv) ((dbenv)->crypto_handle != NULL)
+#define LOCKING_ON(dbenv) ((dbenv)->lk_handle != NULL)
+#define LOGGING_ON(dbenv) ((dbenv)->lg_handle != NULL)
+#define MPOOL_ON(dbenv) ((dbenv)->mp_handle != NULL)
+#define MUTEX_ON(dbenv) ((dbenv)->mutex_handle != NULL)
+#define REP_ON(dbenv) \
+ ((dbenv)->rep_handle != NULL && (dbenv)->rep_handle->region != NULL)
+#define RPC_ON(dbenv) ((dbenv)->cl_handle != NULL)
+#define TXN_ON(dbenv) ((dbenv)->tx_handle != NULL)
+
+/*
+ * STD_LOCKING Standard locking, that is, locking was configured and CDB
+ * was not. We do not do locking in off-page duplicate trees,
+ * so we check for that in the cursor first.
+ */
+#define STD_LOCKING(dbc) \
+ (!F_ISSET(dbc, DBC_OPD) && \
+ !CDB_LOCKING((dbc)->dbp->dbenv) && LOCKING_ON((dbc)->dbp->dbenv))
+
+/*
+ * IS_RECOVERING: The system is running recovery.
+ */
+#define IS_RECOVERING(dbenv) \
+ (LOGGING_ON(dbenv) && F_ISSET((dbenv)->lg_handle, DBLOG_RECOVER))
+
+/* Initialization methods are often illegal before/after open is called. */
+#define ENV_ILLEGAL_AFTER_OPEN(dbenv, name) \
+ if (F_ISSET((dbenv), DB_ENV_OPEN_CALLED)) \
+ return (__db_mi_open(dbenv, name, 1));
+#define ENV_ILLEGAL_BEFORE_OPEN(dbenv, name) \
+ if (!F_ISSET((dbenv), DB_ENV_OPEN_CALLED)) \
+ return (__db_mi_open(dbenv, name, 0));
+
+/* We're not actually user hostile, honest. */
+#define ENV_REQUIRES_CONFIG(dbenv, handle, i, flags) \
+ if (handle == NULL) \
+ return (__db_env_config(dbenv, i, flags));
+#define ENV_REQUIRES_CONFIG_XX(dbenv, handle, i, flags) \
+ if ((dbenv)->handle->region == NULL) \
+ return (__db_env_config(dbenv, i, flags));
+#define ENV_NOT_CONFIGURED(dbenv, handle, i, flags) \
+ if (F_ISSET((dbenv), DB_ENV_OPEN_CALLED)) \
+ ENV_REQUIRES_CONFIG(dbenv, handle, i, flags)
+
+#define ENV_ENTER(dbenv, ip) do { \
+ int __ret; \
+ if ((dbenv)->thr_hashtab == NULL) \
+ ip = NULL; \
+ else { \
+ if ((__ret = \
+ __env_set_state(dbenv, &(ip), THREAD_ACTIVE)) != 0) \
+ return (__ret); \
+ } \
+} while (0)
+
+#ifdef DIAGNOSTIC
+#define ENV_LEAVE(dbenv, ip) do { \
+ if ((ip) != NULL) { \
+ DB_ASSERT(dbenv, (ip)->dbth_state == THREAD_ACTIVE); \
+ (ip)->dbth_state = THREAD_OUT; \
+ } \
+} while (0)
+#else
+#define ENV_LEAVE(dbenv, ip) do { \
+ if ((ip) != NULL) \
+ (ip)->dbth_state = THREAD_OUT; \
+} while (0)
+#endif
+#ifdef DIAGNOSTIC
+#define CHECK_THREAD(dbenv) do { \
+ DB_THREAD_INFO *__ip; \
+ if ((dbenv)->thr_hashtab != NULL) { \
+ (void)__env_set_state(dbenv, &__ip, THREAD_DIAGNOSTIC); \
+ DB_ASSERT(dbenv, \
+ __ip != NULL && __ip->dbth_state != THREAD_OUT); \
+ } \
+} while (0)
+#ifdef HAVE_STATISTICS
+#define CHECK_MTX_THREAD(dbenv, mtx) do { \
+ if (mtx->alloc_id != MTX_MUTEX_REGION && \
+ mtx->alloc_id != MTX_ENV_REGION && \
+ mtx->alloc_id != MTX_APPLICATION) \
+ CHECK_THREAD(dbenv); \
+} while (0)
+#else
+#define CHECK_MTX_THREAD(dbenv, mtx)
+#endif
+#else
+#define CHECK_THREAD(dbenv)
+#define CHECK_MTX_THREAD(dbenv, mtx)
+#endif
+
+typedef enum {
+ THREAD_SLOT_NOT_IN_USE=0,
+ THREAD_OUT,
+ THREAD_ACTIVE,
+ THREAD_BLOCKED
+#ifdef DIAGNOSTIC
+ , THREAD_DIAGNOSTIC
+#endif
+} DB_THREAD_STATE;
+
+typedef struct __db_thread_info {
+ pid_t dbth_pid;
+ db_threadid_t dbth_tid;
+ DB_THREAD_STATE dbth_state;
+ SH_TAILQ_ENTRY dbth_links;
+} DB_THREAD_INFO;
+
+typedef struct __env_thread_info {
+ u_int32_t thr_count;
+ u_int32_t thr_max;
+ u_int32_t thr_nbucket;
+ roff_t thr_hashoff;
+} THREAD_INFO;
+
+#define DB_EVENT(dbenv, e, einfo) do { \
+ if ((dbenv)->db_event_func != NULL) \
+ (dbenv)->db_event_func(dbenv, e, einfo); \
+} while (0)
+
+/*******************************************************
+ * Database Access Methods.
+ *******************************************************/
+/*
+ * DB_IS_THREADED --
+ * The database handle is free-threaded (was opened with DB_THREAD).
+ */
+#define DB_IS_THREADED(dbp) \
+ ((dbp)->mutex != MUTEX_INVALID)
+
+/* Initialization methods are often illegal before/after open is called. */
+#define DB_ILLEGAL_AFTER_OPEN(dbp, name) \
+ if (F_ISSET((dbp), DB_AM_OPEN_CALLED)) \
+ return (__db_mi_open((dbp)->dbenv, name, 1));
+#define DB_ILLEGAL_BEFORE_OPEN(dbp, name) \
+ if (!F_ISSET((dbp), DB_AM_OPEN_CALLED)) \
+ return (__db_mi_open((dbp)->dbenv, name, 0));
+/* Some initialization methods are illegal if environment isn't local. */
+#define DB_ILLEGAL_IN_ENV(dbp, name) \
+ if (!F_ISSET((dbp)->dbenv, DB_ENV_DBLOCAL)) \
+ return (__db_mi_env((dbp)->dbenv, name));
+#define DB_ILLEGAL_METHOD(dbp, flags) { \
+ int __ret; \
+ if ((__ret = __dbh_am_chk(dbp, flags)) != 0) \
+ return (__ret); \
+}
+
+/*
+ * Common DBC->internal fields. Each access method adds additional fields
+ * to this list, but the initial fields are common.
+ */
+#define __DBC_INTERNAL \
+ DBC *opd; /* Off-page duplicate cursor. */\
+ \
+ void *page; /* Referenced page. */ \
+ db_pgno_t root; /* Tree root. */ \
+ db_pgno_t pgno; /* Referenced page number. */ \
+ db_indx_t indx; /* Referenced key item index. */\
+ \
+ DB_LOCK lock; /* Cursor lock. */ \
+ db_lockmode_t lock_mode; /* Lock mode. */
+
+struct __dbc_internal {
+ __DBC_INTERNAL
+};
+
+/* Actions that __db_master_update can take. */
+typedef enum { MU_REMOVE, MU_RENAME, MU_OPEN } mu_action;
+
+/*
+ * Access-method-common macro for determining whether a cursor
+ * has been initialized.
+ */
+#define IS_INITIALIZED(dbc) ((dbc)->internal->pgno != PGNO_INVALID)
+
+/* Free the callback-allocated buffer, if necessary, hanging off of a DBT. */
+#define FREE_IF_NEEDED(dbenv, dbt) \
+ if (F_ISSET((dbt), DB_DBT_APPMALLOC)) { \
+ __os_ufree((dbenv), (dbt)->data); \
+ F_CLR((dbt), DB_DBT_APPMALLOC); \
+ }
+
+/*
+ * Use memory belonging to object "owner" to return the results of
+ * any no-DBT-flag get ops on cursor "dbc".
+ */
+#define SET_RET_MEM(dbc, owner) \
+ do { \
+ (dbc)->rskey = &(owner)->my_rskey; \
+ (dbc)->rkey = &(owner)->my_rkey; \
+ (dbc)->rdata = &(owner)->my_rdata; \
+ } while (0)
+
+/* Use the return-data memory src is currently set to use in dest as well. */
+#define COPY_RET_MEM(src, dest) \
+ do { \
+ (dest)->rskey = (src)->rskey; \
+ (dest)->rkey = (src)->rkey; \
+ (dest)->rdata = (src)->rdata; \
+ } while (0)
+
+/* Reset the returned-memory pointers to their defaults. */
+#define RESET_RET_MEM(dbc) \
+ do { \
+ (dbc)->rskey = &(dbc)->my_rskey; \
+ (dbc)->rkey = &(dbc)->my_rkey; \
+ (dbc)->rdata = &(dbc)->my_rdata; \
+ } while (0)
+
+/*******************************************************
+ * Mpool.
+ *******************************************************/
+/*
+ * File types for DB access methods. Negative numbers are reserved to DB.
+ */
+#define DB_FTYPE_SET -1 /* Call pgin/pgout functions. */
+#define DB_FTYPE_NOTSET 0 /* Don't call... */
+#define DB_LSN_OFF_NOTSET -1 /* Not yet set. */
+#define DB_CLEARLEN_NOTSET UINT32_MAX /* Not yet set. */
+
+/* Structure used as the DB pgin/pgout pgcookie. */
+typedef struct __dbpginfo {
+ size_t db_pagesize; /* Underlying page size. */
+ u_int32_t flags; /* Some DB_AM flags needed. */
+ DBTYPE type; /* DB type */
+} DB_PGINFO;
+
+/*******************************************************
+ * Log.
+ *******************************************************/
+/* Initialize an LSN to 'zero'. */
+#define ZERO_LSN(LSN) do { \
+ (LSN).file = 0; \
+ (LSN).offset = 0; \
+} while (0)
+#define IS_ZERO_LSN(LSN) ((LSN).file == 0 && (LSN).offset == 0)
+
+#define IS_INIT_LSN(LSN) ((LSN).file == 1 && (LSN).offset == 0)
+#define INIT_LSN(LSN) do { \
+ (LSN).file = 1; \
+ (LSN).offset = 0; \
+} while (0)
+
+#define MAX_LSN(LSN) do { \
+ (LSN).file = UINT32_MAX; \
+ (LSN).offset = UINT32_MAX; \
+} while (0)
+#define IS_MAX_LSN(LSN) \
+ ((LSN).file == UINT32_MAX && (LSN).offset == UINT32_MAX)
+
+/* If logging is turned off, smash the lsn. */
+#define LSN_NOT_LOGGED(LSN) do { \
+ (LSN).file = 0; \
+ (LSN).offset = 1; \
+} while (0)
+#define IS_NOT_LOGGED_LSN(LSN) \
+ ((LSN).file == 0 && (LSN).offset == 1)
+
+/*
+ * LOG_COMPARE -- compare two LSNs.
+ */
+
+#define LOG_COMPARE(lsn0, lsn1) \
+ ((lsn0)->file != (lsn1)->file ? \
+ ((lsn0)->file < (lsn1)->file ? -1 : 1) : \
+ ((lsn0)->offset != (lsn1)->offset ? \
+ ((lsn0)->offset < (lsn1)->offset ? -1 : 1) : 0))
+
+/*******************************************************
+ * Txn.
+ *******************************************************/
+#define DB_NONBLOCK(C) ((C)->txn != NULL && F_ISSET((C)->txn, TXN_NOWAIT))
+#define NOWAIT_FLAG(txn) \
+ ((txn) != NULL && F_ISSET((txn), TXN_NOWAIT) ? DB_LOCK_NOWAIT : 0)
+#define IS_REAL_TXN(txn) \
+ ((txn) != NULL && !F_ISSET(txn, TXN_CDSGROUP))
+#define IS_SUBTRANSACTION(txn) \
+ ((txn) != NULL && (txn)->parent != NULL)
+
+/*******************************************************
+ * Crypto.
+ *******************************************************/
+#define DB_IV_BYTES 16 /* Bytes per IV */
+#define DB_MAC_KEY 20 /* Bytes per MAC checksum */
+
+/*******************************************************
+ * Secondaries over RPC.
+ *******************************************************/
+#ifdef CONFIG_TEST
+/*
+ * These are flags passed to DB->associate calls by the Tcl API if running
+ * over RPC. The RPC server will mask out these flags before making the real
+ * DB->associate call.
+ *
+ * These flags must coexist with the valid flags to DB->associate (currently
+ * DB_AUTO_COMMIT and DB_CREATE). DB_AUTO_COMMIT is in the group of
+ * high-order shared flags (0xff000000), and DB_CREATE is in the low-order
+ * group (0x00000fff), so we pick a range in between.
+ */
+#define DB_RPC2ND_MASK 0x00f00000 /* Reserved bits. */
+
+#define DB_RPC2ND_REVERSEDATA 0x00100000 /* callback_n(0) _s_reversedata. */
+#define DB_RPC2ND_NOOP 0x00200000 /* callback_n(1) _s_noop */
+#define DB_RPC2ND_CONCATKEYDATA 0x00300000 /* callback_n(2) _s_concatkeydata */
+#define DB_RPC2ND_CONCATDATAKEY 0x00400000 /* callback_n(3) _s_concatdatakey */
+#define DB_RPC2ND_REVERSECONCAT 0x00500000 /* callback_n(4) _s_reverseconcat */
+#define DB_RPC2ND_TRUNCDATA 0x00600000 /* callback_n(5) _s_truncdata */
+#define DB_RPC2ND_CONSTANT 0x00700000 /* callback_n(6) _s_constant */
+#define DB_RPC2ND_GETZIP 0x00800000 /* sj_getzip */
+#define DB_RPC2ND_GETNAME 0x00900000 /* sj_getname */
+#endif
+
+/*******************************************************
+ * Forward structure declarations.
+ *******************************************************/
+struct __db_reginfo_t; typedef struct __db_reginfo_t REGINFO;
+struct __db_txnhead; typedef struct __db_txnhead DB_TXNHEAD;
+struct __db_txnlist; typedef struct __db_txnlist DB_TXNLIST;
+struct __vrfy_childinfo;typedef struct __vrfy_childinfo VRFY_CHILDINFO;
+struct __vrfy_dbinfo; typedef struct __vrfy_dbinfo VRFY_DBINFO;
+struct __vrfy_pageinfo; typedef struct __vrfy_pageinfo VRFY_PAGEINFO;
+
+typedef SH_TAILQ_HEAD(__hash_head) DB_HASHTAB;
+
+#if defined(__cplusplus)
+}
+#endif
+
+/*******************************************************
+ * Remaining general DB includes.
+ *******************************************************/
+
+
+#include "dbinc/globals.h"
+#include "dbinc/clock.h"
+#include "dbinc/debug.h"
+#include "dbinc/region.h"
+#include "dbinc_auto/env_ext.h"
+#include "dbinc/mutex.h"
+#include "dbinc/os.h"
+#ifdef HAVE_REPLICATION_THREADS
+#include "dbinc/repmgr.h"
+#endif
+#include "dbinc/rep.h"
+#include "dbinc_auto/clib_ext.h"
+#include "dbinc_auto/common_ext.h"
+
+/*******************************************************
+ * Remaining Log.
+ * These need to be defined after the general includes
+ * because they need rep.h from above.
+ *******************************************************/
+/*
+ * Test if the environment is currently logging changes. If we're in recovery
+ * or we're a replication client, we don't need to log changes because they're
+ * already in the log, even though we have a fully functional log system.
+ */
+#define DBENV_LOGGING(dbenv) \
+ (LOGGING_ON(dbenv) && !IS_REP_CLIENT(dbenv) && \
+ (!IS_RECOVERING(dbenv)))
+
+/*
+ * Test if we need to log a change. By default, we don't log operations without
+ * associated transactions, unless DIAGNOSTIC, DEBUG_ROP or DEBUG_WOP are on.
+ * This is because we want to get log records for read/write operations, and, if
+ * we are trying to debug something, more information is always better.
+ *
+ * The DBC_RECOVER flag is set when we're in abort, as well as during recovery;
+ * thus DBC_LOGGING may be false for a particular dbc even when DBENV_LOGGING
+ * is true.
+ *
+ * We explicitly use LOGGING_ON/IS_REP_CLIENT here because we don't want to pull
+ * in the log headers, which IS_RECOVERING (and thus DBENV_LOGGING) rely on, and
+ * because DBC_RECOVER should be set anytime IS_RECOVERING would be true.
+ *
+ * If we're not in recovery (master - doing an abort or a client applying
+ * a txn), then a client's only path through here is on an internal
+ * operation, and a master's only path through here is a transactional
+ * operation. Detect if either is not the case.
+ */
+#if defined(DIAGNOSTIC) || defined(DEBUG_ROP) || defined(DEBUG_WOP)
+#define DBC_LOGGING(dbc) __dbc_logging(dbc)
+#else
+#define DBC_LOGGING(dbc) \
+ ((dbc)->txn != NULL && LOGGING_ON((dbc)->dbp->dbenv) && \
+ !F_ISSET((dbc), DBC_RECOVER) && !IS_REP_CLIENT((dbc)->dbp->dbenv))
+#endif
+
+#endif /* !_DB_INT_H_ */
diff --git a/db/build_wince/db_small.vcp b/db/build_wince/db_small.vcp
new file mode 100644
index 000000000..504cd8c88
--- /dev/null
+++ b/db/build_wince/db_small.vcp
@@ -0,0 +1,858 @@
+# Microsoft eMbedded Visual Tools Project File - Name="db_small" - Package Owner=<4>
+# Microsoft eMbedded Visual Tools Generated Build File, Format Version 6.02
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (WCE ARMV4) Static Library" 0xa304
+# TARGTYPE "Win32 (WCE emulator) Static Library" 0xa604
+
+CFG=db_small - Win32 (WCE emulator) Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "db_small.vcn".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "db_small.vcn" CFG="db_small - Win32 (WCE emulator) Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "db_small - Win32 (WCE emulator) Release" (based on "Win32 (WCE emulator) Static Library")
+!MESSAGE "db_small - Win32 (WCE emulator) Debug" (based on "Win32 (WCE emulator) Static Library")
+!MESSAGE "db_small - Win32 (WCE ARMV4) Release" (based on "Win32 (WCE ARMV4) Static Library")
+!MESSAGE "db_small - Win32 (WCE ARMV4) Debug" (based on "Win32 (WCE ARMV4) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+# PROP ATL_Project 2
+
+!IF "$(CFG)" == "db_small - Win32 (WCE emulator) Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_EMU"
+# PROP BASE Intermediate_Dir "Release_EMU/db_small"
+# PROP BASE CPU_ID "{32E52003-403E-442D-BE48-DE10F8C6131D}"
+# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_EMU"
+# PROP Intermediate_Dir "Release_EMU/db_small"
+# PROP CPU_ID "{32E52003-403E-442D-BE48-DE10F8C6131D}"
+# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
+# PROP Target_Dir ""
+CPP=cl.exe
+# ADD BASE CPP /nologo /W3 /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "_i386_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_X86_" /D "x86" /D "NDEBUG" /D "_LIB" /Yu"stdafx.h" /Gs8192 /D "HAVE_SMALLBUILD" /GF /O2 /c
+# ADD CPP /nologo /W3 /I "." /I ".." /D "DB_WIN32" /D "DB_WINCE" /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "_i386_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_X86_" /D "x86" /D "NDEBUG" /D "_LIB" /D "__NO_SYSTEM_INCLUDES" /Yu"stdafx.h" /Gs8192 /D "HAVE_SMALLBUILD" /GF /O2 /c
+# SUBTRACT CPP /YX /Yc /Yu
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"Release_EMU/libdb_small46s.lib"
+# ADD LIB32 /nologo /out:"Release_EMU/libdb_small46s.lib"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+
+!ELSEIF "$(CFG)" == "db_small - Win32 (WCE emulator) Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_EMU"
+# PROP BASE Intermediate_Dir "Debug_EMU/db_small"
+# PROP BASE CPU_ID "{32E52003-403E-442D-BE48-DE10F8C6131D}"
+# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_EMU"
+# PROP Intermediate_Dir "Debug_EMU/db_small"
+# PROP CPU_ID "{32E52003-403E-442D-BE48-DE10F8C6131D}"
+# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
+# PROP Target_Dir ""
+CPP=cl.exe
+# ADD BASE CPP /nologo /W3 /Zi /Od /D "DEBUG" /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "_i386_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_X86_" /D "x86" /D "_LIB" /Yu"stdafx.h" /Gs8192 /D "HAVE_SMALLBUILD" /GF /c
+# ADD CPP /nologo /W3 /I "." /I ".." /D "DB_WIN32" /D "DB_WINCE" /Zi /Od /D "DEBUG" /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "_i386_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_X86_" /D "x86" /D "_LIB" /D "__NO_SYSTEM_INCLUDES" /Yu"stdafx.h" /Gs8192 /D "HAVE_SMALLBUILD" /GF /c
+# SUBTRACT CPP /YX /Yc /Yu
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"Debug_EMU/libdb_small46sd.lib"
+# ADD LIB32 /nologo /out:"Debug_EMU/libdb_small46sd.lib"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+
+!ELSEIF "$(CFG)" == "db_small - Win32 (WCE ARMV4) Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_ARMV4"
+# PROP BASE Intermediate_Dir "Release_ARMV4/db_small"
+# PROP BASE CPU_ID "{ECBEA43D-CD7B-4852-AD55-D4227B5D624B}"
+# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_ARMV4"
+# PROP Intermediate_Dir "Release_ARMV4/db_small"
+# PROP CPU_ID "{ECBEA43D-CD7B-4852-AD55-D4227B5D624B}"
+# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
+# PROP Target_Dir ""
+CPP=clarm.exe
+# ADD BASE CPP /nologo /W3 /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "NDEBUG" /D "ARM" /D "_ARM_" /D "ARMV4" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_LIB" /Yu"stdafx.h" /O2 /M$(CECrtMT) /D "HAVE_SMALLBUILD" /c
+# ADD CPP /nologo /W3 /I "." /I ".." /D "DB_WIN32" /D "DB_WINCE" /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "NDEBUG" /D "ARM" /D "_ARM_" /D "ARMV4" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_LIB" /D "__NO_SYSTEM_INCLUDES" /Yu"stdafx.h" /O2 /M$(CECrtMT) /D "HAVE_SMALLBUILD" /c
+# SUBTRACT CPP /YX /Yc /Yu
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"Release_ARMV4/libdb_small46s.lib"
+# ADD LIB32 /nologo /out:"Release_ARMV4/libdb_small46s.lib"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+
+!ELSEIF "$(CFG)" == "db_small - Win32 (WCE ARMV4) Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_ARMV4"
+# PROP BASE Intermediate_Dir "Debug_ARMV4/db_small"
+# PROP BASE CPU_ID "{ECBEA43D-CD7B-4852-AD55-D4227B5D624B}"
+# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_ARMV4"
+# PROP Intermediate_Dir "Debug_ARMV4/db_small"
+# PROP CPU_ID "{ECBEA43D-CD7B-4852-AD55-D4227B5D624B}"
+# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
+# PROP Target_Dir ""
+CPP=clarm.exe
+# ADD BASE CPP /nologo /W3 /Zi /Od /D "DEBUG" /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "ARM" /D "_ARM_" /D "ARMV4" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_LIB" /Yu"stdafx.h" /M$(CECrtMTDebug) /D "HAVE_SMALLBUILD" /c
+# ADD CPP /nologo /W3 /I "." /I ".." /D "DB_WIN32" /D "DB_WINCE" /Zi /Od /D "DEBUG" /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "ARM" /D "_ARM_" /D "ARMV4" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_LIB" /D "__NO_SYSTEM_INCLUDES" /Yu"stdafx.h" /M$(CECrtMTDebug) /D "HAVE_SMALLBUILD" /c
+# SUBTRACT CPP /YX /Yc /Yu
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"Debug_ARMV4/libdb_small46sd.lib"
+# ADD LIB32 /nologo /out:"Debug_ARMV4/libdb_small46sd.lib"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+
+!ENDIF
+
+# Begin Target
+
+# Name "db_small - Win32 (WCE emulator) Release"
+# Name "db_small - Win32 (WCE emulator) Debug"
+# Name "db_small - Win32 (WCE ARMV4) Release"
+# Name "db_small - Win32 (WCE ARMV4) Debug"
+# Begin Source File
+
+SOURCE=..\btree\bt_compact.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\btree\bt_compare.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\btree\bt_conv.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\btree\bt_curadj.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\btree\bt_cursor.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\btree\bt_delete.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\btree\bt_method.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\btree\bt_open.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\btree\bt_put.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\btree\bt_rec.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\btree\bt_reclaim.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\btree\bt_recno.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\btree\bt_rsearch.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\btree\bt_search.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\btree\bt_split.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\btree\bt_stat.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\btree\bt_upgrade.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\btree\bt_verify.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\btree\btree_auto.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\clib\strdup.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\clib\strerror.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\clib\strsep.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\common\crypto_stub.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\common\db_byteorder.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\common\db_err.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\common\db_getlong.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\common\db_idspace.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\common\db_log2.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\common\db_shash.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\common\mkpath.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\common\util_cache.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\common\util_log.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db\crdel_auto.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db\crdel_rec.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db\db.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db\db_am.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db\db_auto.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db\db_cam.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db\db_cds.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db\db_conv.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db\db_dispatch.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db\db_dup.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db\db_iface.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db\db_join.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db\db_meta.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db\db_method.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db\db_open.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db\db_overflow.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db\db_pr.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db\db_rec.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db\db_reclaim.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db\db_remove.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db\db_rename.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db\db_ret.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db\db_setid.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db\db_setlsn.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db\db_stati.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db\db_truncate.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db\db_upg.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db\db_upg_opd.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db\db_vrfy_stub.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\dbreg\dbreg.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\dbreg\dbreg_auto.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\dbreg\dbreg_rec.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\dbreg\dbreg_stat.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\dbreg\dbreg_util.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\env\env_alloc.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\env\env_config.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\env\env_failchk.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\env\env_file.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\env\env_globals.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\env\env_method.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\env\env_name.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\env\env_open.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\env\env_recover.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\env\env_region.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\env\env_register.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\env\env_stat.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\fileops\fileops_auto.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\fileops\fop_basic.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\fileops\fop_rec.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\fileops\fop_util.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\hash\hash_func.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\hash\hash_stub.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\hmac\hmac.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\hmac\sha1.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lock\lock.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lock\lock_deadlock.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lock\lock_failchk.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lock\lock_id.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lock\lock_list.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lock\lock_method.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lock\lock_region.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lock\lock_stat.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lock\lock_timer.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lock\lock_util.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\log\log.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\log\log_archive.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\log\log_compare.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\log\log_debug.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\log\log_get.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\log\log_method.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\log\log_put.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\log\log_stat.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\mp\mp_alloc.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\mp\mp_bh.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\mp\mp_fget.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\mp\mp_fmethod.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\mp\mp_fopen.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\mp\mp_fput.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\mp\mp_fset.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\mp\mp_method.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\mp\mp_mvcc.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\mp\mp_region.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\mp\mp_register.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\mp\mp_resize.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\mp\mp_stat.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\mp\mp_sync.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\mp\mp_trickle.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\mutex\mut_alloc.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\mutex\mut_failchk.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\mutex\mut_method.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\mutex\mut_region.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\mutex\mut_stat.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\mutex\mut_win32.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os\os_abort.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os\os_alloc.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os\os_fzero.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os\os_oflags.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os\os_pid.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os\os_region.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os\os_root.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os\os_rpath.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os\os_tmpdir.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os\os_uid.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os_windows\ce_ctime.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os_windows\ce_time.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os_windows\os_abs.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os_windows\os_clock.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os_windows\os_config.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os_windows\os_dir.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os_windows\os_errno.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os_windows\os_fid.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os_windows\os_flock.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os_windows\os_fsync.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os_windows\os_getenv.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os_windows\os_handle.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os_windows\os_map.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os_windows\os_mkdir.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os_windows\os_open.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os_windows\os_rename.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os_windows\os_rw.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os_windows\os_seek.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os_windows\os_sleep.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os_windows\os_spin.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os_windows\os_stat.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os_windows\os_truncate.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os_windows\os_unlink.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os_windows\os_yield.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\qam\qam_stub.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\rep\rep_stub.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\repmgr\repmgr_stub.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\sequence\seq_stat.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\sequence\sequence.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\txn\txn.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\txn\txn_auto.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\txn\txn_chkpt.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\txn\txn_failchk.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\txn\txn_method.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\txn\txn_rec.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\txn\txn_recover.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\txn\txn_region.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\txn\txn_stat.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\txn\txn_util.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\xa\xa.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\xa\xa_db.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\xa\xa_map.c
+# End Source File
+# End Target
+# End Project
diff --git a/db/build_wince/db_small.vcproj b/db/build_wince/db_small.vcproj
new file mode 100644
index 000000000..38432134f
--- /dev/null
+++ b/db/build_wince/db_small.vcproj
@@ -0,0 +1,7442 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="db_small"
+ ProjectGUID="{6A2849DA-8F7C-4B50-BDAE-AE7752EF8213}"
+ >
+ <Platforms>
+ <Platform
+ Name="Smartphone 2003 (ARMV4)"
+ />
+ <Platform
+ Name="Pocket PC 2003 (ARMV4)"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ OutputDirectory="$(ConfigurationName)_Smartphone2003_ARMV4\db_small"
+ IntermediateDirectory="$(ConfigurationName)_Smartphone2003_ARMV4\db_small"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName="$(ConfigurationName)_Smartphone2003_ARMV4/libdb_small46s.tlb"
+ HeaderFileName=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ ExecutionBucket="7"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories=".,.."
+ PreprocessorDefinitions="DB_WIN32;DB_WINCE;_WIN32_WCE=$(CEVER);$(CePlatform);NDEBUG;ARM;_ARM_;ARMV4;UNDER_CE=$(CEVER);UNICODE;_LIB;__NO_SYSTEM_INCLUDES;HAVE_SMALLBUILD"
+ StringPooling="true"
+ RuntimeLibrary="0"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ PrecompiledHeaderFile="$(ConfigurationName)_Smartphone2003_ARMV4/db_small.pch"
+ AssemblerListingLocation="$(ConfigurationName)_Smartphone2003_ARMV4/"
+ ObjectFile="$(ConfigurationName)_Smartphone2003_ARMV4\db_small/"
+ ProgramDataBaseFileName="$(ConfigurationName)_Smartphone2003_ARMV4/"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ Culture="3081"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(ConfigurationName)_Smartphone2003_ARMV4\libdb_small46s.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ SuppressStartupBanner="true"
+ OutputFile="$(ConfigurationName)_Smartphone2003_ARMV4/libdb_small46s.bsc"
+ />
+ <Tool
+ Name="VCCodeSignTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ <DeploymentTool
+ ForceDirty="-1"
+ RemoteDirectory=""
+ RegisterOutput="0"
+ AdditionalFiles=""
+ />
+ <DebuggerTool
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ OutputDirectory="$(ConfigurationName)_PocketPC2003_ARMV4\db_small"
+ IntermediateDirectory="$(ConfigurationName)_PocketPC2003_ARMV4\db_small"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName="$(ConfigurationName)_PocketPC2003_ARMV4/libdb_small46s.tlb"
+ HeaderFileName=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ ExecutionBucket="7"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories=".,.."
+ PreprocessorDefinitions="DB_WIN32;DB_WINCE;_WIN32_WCE=$(CEVER);$(CePlatform);NDEBUG;ARM;_ARM_;ARMV4;UNDER_CE=$(CEVER);UNICODE;_LIB;__NO_SYSTEM_INCLUDES;HAVE_SMALLBUILD"
+ StringPooling="true"
+ RuntimeLibrary="0"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ PrecompiledHeaderFile="$(ConfigurationName)_PocketPC2003_ARMV4/db_small.pch"
+ AssemblerListingLocation="$(ConfigurationName)_PocketPC2003_ARMV4/"
+ ObjectFile="$(ConfigurationName)_PocketPC2003_ARMV4\db_small/"
+ ProgramDataBaseFileName="$(ConfigurationName)_PocketPC2003_ARMV4/"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ Culture="3081"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(ConfigurationName)_PocketPC2003_ARMV4\libdb_small46s.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ SuppressStartupBanner="true"
+ OutputFile="$(ConfigurationName)_PocketPC2003_ARMV4/libdb_small46s.bsc"
+ />
+ <Tool
+ Name="VCCodeSignTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ <DeploymentTool
+ ForceDirty="-1"
+ RemoteDirectory=""
+ RegisterOutput="0"
+ AdditionalFiles=""
+ />
+ <DebuggerTool
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ OutputDirectory="$(ConfigurationName)_Smartphone2003_ARMV4\db_small"
+ IntermediateDirectory="$(ConfigurationName)_Smartphone2003_ARMV4\db_small"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName="$(ConfigurationName)_Smartphone2003_ARMV4/libdb_small46sd.tlb"
+ HeaderFileName=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ ExecutionBucket="7"
+ Optimization="0"
+ AdditionalIncludeDirectories=".,.."
+ PreprocessorDefinitions="DB_WIN32;DB_WINCE;DEBUG;_WIN32_WCE=$(CEVER);$(CePlatform);ARM;_ARM_;ARMV4;UNDER_CE=$(CEVER);UNICODE;_LIB;__NO_SYSTEM_INCLUDES;HAVE_SMALLBUILD"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ PrecompiledHeaderFile="$(ConfigurationName)_Smartphone2003_ARMV4/db_small.pch"
+ AssemblerListingLocation="$(ConfigurationName)_Smartphone2003_ARMV4/"
+ ObjectFile="$(ConfigurationName)_Smartphone2003_ARMV4\db_small/"
+ ProgramDataBaseFileName="$(ConfigurationName)_Smartphone2003_ARMV4/"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ Culture="3081"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(ConfigurationName)_Smartphone2003_ARMV4\libdb_small46sd.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ SuppressStartupBanner="true"
+ OutputFile="$(ConfigurationName)_Smartphone2003_ARMV4/libdb_small46sd.bsc"
+ />
+ <Tool
+ Name="VCCodeSignTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ <DeploymentTool
+ ForceDirty="-1"
+ RemoteDirectory=""
+ RegisterOutput="0"
+ AdditionalFiles=""
+ />
+ <DebuggerTool
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ OutputDirectory="$(ConfigurationName)_PocketPC2003_ARMV4\db_small"
+ IntermediateDirectory="$(ConfigurationName)_PocketPC2003_ARMV4\db_small"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName="$(ConfigurationName)_PocketPC2003_ARMV4/libdb_small46sd.tlb"
+ HeaderFileName=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ ExecutionBucket="7"
+ Optimization="0"
+ AdditionalIncludeDirectories=".,.."
+ PreprocessorDefinitions="DB_WIN32;DB_WINCE;DEBUG;_WIN32_WCE=$(CEVER);$(CePlatform);ARM;_ARM_;ARMV4;UNDER_CE=$(CEVER);UNICODE;_LIB;__NO_SYSTEM_INCLUDES;HAVE_SMALLBUILD"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ PrecompiledHeaderFile="$(ConfigurationName)_PocketPC2003_ARMV4/db_small.pch"
+ AssemblerListingLocation="$(ConfigurationName)_PocketPC2003_ARMV4/"
+ ObjectFile="$(ConfigurationName)_PocketPC2003_ARMV4\db_small/"
+ ProgramDataBaseFileName="$(ConfigurationName)_PocketPC2003_ARMV4/"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ Culture="3081"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(ConfigurationName)_PocketPC2003_ARMV4\libdb_small46sd.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ SuppressStartupBanner="true"
+ OutputFile="$(ConfigurationName)_PocketPC2003_ARMV4/libdb_small46sd.bsc"
+ />
+ <Tool
+ Name="VCCodeSignTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ <DeploymentTool
+ ForceDirty="-1"
+ RemoteDirectory=""
+ RegisterOutput="0"
+ AdditionalFiles=""
+ />
+ <DebuggerTool
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\btree\bt_compact.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\btree\bt_compare.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\btree\bt_conv.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\btree\bt_curadj.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\btree\bt_cursor.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\btree\bt_delete.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\btree\bt_method.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\btree\bt_open.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\btree\bt_put.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\btree\bt_rec.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\btree\bt_reclaim.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\btree\bt_recno.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\btree\bt_rsearch.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\btree\bt_search.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\btree\bt_split.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\btree\bt_stat.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\btree\bt_upgrade.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\btree\bt_verify.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\btree\btree_auto.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\clib\strdup.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\clib\strerror.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\clib\strsep.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\common\crypto_stub.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\common\db_byteorder.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\common\db_err.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\common\db_getlong.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\common\db_idspace.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\common\db_log2.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\common\db_shash.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\common\mkpath.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\common\util_cache.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\common\util_log.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\db\crdel_auto.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\db\crdel_rec.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\db\db.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\db\db_am.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\db\db_auto.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\db\db_cam.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\db\db_cds.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\db\db_conv.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\db\db_dispatch.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\db\db_dup.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\db\db_iface.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\db\db_join.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\db\db_meta.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\db\db_method.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\db\db_open.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\db\db_overflow.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\db\db_pr.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\db\db_rec.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\db\db_reclaim.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\db\db_remove.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\db\db_rename.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\db\db_ret.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\db\db_setid.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\db\db_setlsn.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\db\db_stati.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\db\db_truncate.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\db\db_upg.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\db\db_upg_opd.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\db\db_vrfy_stub.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\dbreg\dbreg.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\dbreg\dbreg_auto.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\dbreg\dbreg_rec.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\dbreg\dbreg_stat.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\dbreg\dbreg_util.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\env\env_alloc.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\env\env_config.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\env\env_failchk.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\env\env_file.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\env\env_globals.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\env\env_method.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\env\env_name.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\env\env_open.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\env\env_recover.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\env\env_region.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\env\env_register.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\env\env_stat.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\fileops\fileops_auto.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\fileops\fop_basic.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\fileops\fop_rec.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\fileops\fop_util.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\hash\hash_func.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\hash\hash_stub.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\hmac\hmac.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\hmac\sha1.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\lock\lock.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\lock\lock_deadlock.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\lock\lock_failchk.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\lock\lock_id.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\lock\lock_list.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\lock\lock_method.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\lock\lock_region.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\lock\lock_stat.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\lock\lock_timer.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\lock\lock_util.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\log\log.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\log\log_archive.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\log\log_compare.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\log\log_debug.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\log\log_get.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\log\log_method.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\log\log_put.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\log\log_stat.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\mp\mp_alloc.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\mp\mp_bh.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\mp\mp_fget.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\mp\mp_fmethod.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\mp\mp_fopen.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\mp\mp_fput.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\mp\mp_fset.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\mp\mp_method.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\mp\mp_mvcc.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\mp\mp_region.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\mp\mp_register.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\mp\mp_resize.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\mp\mp_stat.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\mp\mp_sync.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\mp\mp_trickle.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\mutex\mut_alloc.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\mutex\mut_failchk.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\mutex\mut_method.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\mutex\mut_region.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\mutex\mut_stat.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\mutex\mut_win32.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os\os_abort.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os\os_alloc.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os\os_fzero.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os\os_oflags.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os\os_pid.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os\os_region.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os\os_root.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os\os_rpath.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os\os_tmpdir.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os\os_uid.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os_windows\ce_ctime.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os_windows\ce_time.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os_windows\os_abs.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os_windows\os_clock.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os_windows\os_config.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os_windows\os_dir.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os_windows\os_errno.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os_windows\os_fid.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os_windows\os_flock.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os_windows\os_fsync.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os_windows\os_getenv.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os_windows\os_handle.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os_windows\os_map.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os_windows\os_mkdir.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os_windows\os_open.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os_windows\os_rename.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os_windows\os_rw.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os_windows\os_seek.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os_windows\os_sleep.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os_windows\os_spin.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os_windows\os_stat.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os_windows\os_truncate.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os_windows\os_unlink.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os_windows\os_yield.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\qam\qam_stub.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\rep\rep_stub.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\repmgr\repmgr_stub.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\sequence\seq_stat.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\sequence\sequence.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\txn\txn.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\txn\txn_auto.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\txn\txn_chkpt.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\txn\txn_failchk.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\txn\txn_method.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\txn\txn_rec.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\txn\txn_recover.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\txn\txn_region.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\txn\txn_stat.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\txn\txn_util.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\xa\xa.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\xa\xa_db.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\xa\xa_map.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/db/build_wince/db_static.vcp b/db/build_wince/db_static.vcp
new file mode 100644
index 000000000..f15968752
--- /dev/null
+++ b/db/build_wince/db_static.vcp
@@ -0,0 +1,970 @@
+# Microsoft eMbedded Visual Tools Project File - Name="db_static" - Package Owner=<4>
+# Microsoft eMbedded Visual Tools Generated Build File, Format Version 6.02
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (WCE ARMV4) Static Library" 0xa304
+# TARGTYPE "Win32 (WCE emulator) Static Library" 0xa604
+
+CFG=db_static - Win32 (WCE emulator) Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "db_static.vcn".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "db_static.vcn" CFG="db_static - Win32 (WCE emulator) Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "db_static - Win32 (WCE emulator) Release" (based on "Win32 (WCE emulator) Static Library")
+!MESSAGE "db_static - Win32 (WCE emulator) Debug" (based on "Win32 (WCE emulator) Static Library")
+!MESSAGE "db_static - Win32 (WCE ARMV4) Release" (based on "Win32 (WCE ARMV4) Static Library")
+!MESSAGE "db_static - Win32 (WCE ARMV4) Debug" (based on "Win32 (WCE ARMV4) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+# PROP ATL_Project 2
+
+!IF "$(CFG)" == "db_static - Win32 (WCE emulator) Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_EMU"
+# PROP BASE Intermediate_Dir "Release_EMU/db_static"
+# PROP BASE CPU_ID "{32E52003-403E-442D-BE48-DE10F8C6131D}"
+# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_EMU"
+# PROP Intermediate_Dir "Release_EMU/db_static"
+# PROP CPU_ID "{32E52003-403E-442D-BE48-DE10F8C6131D}"
+# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
+# PROP Target_Dir ""
+CPP=cl.exe
+# ADD BASE CPP /nologo /W3 /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "_i386_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_X86_" /D "x86" /D "NDEBUG" /D "_LIB" /Yu"stdafx.h" /Gs8192 /GF /O2 /c
+# ADD CPP /nologo /W3 /I "." /I ".." /D "DB_WIN32" /D "DB_WINCE" /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "_i386_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_X86_" /D "x86" /D "NDEBUG" /D "_LIB" /D "__NO_SYSTEM_INCLUDES" /Yu"stdafx.h" /Gs8192 /GF /O2 /c
+# SUBTRACT CPP /YX /Yc /Yu
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"Release_EMU/libdb46s.lib"
+# ADD LIB32 /nologo /out:"Release_EMU/libdb46s.lib"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+
+!ELSEIF "$(CFG)" == "db_static - Win32 (WCE emulator) Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_EMU"
+# PROP BASE Intermediate_Dir "Debug_EMU/db_static"
+# PROP BASE CPU_ID "{32E52003-403E-442D-BE48-DE10F8C6131D}"
+# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_EMU"
+# PROP Intermediate_Dir "Debug_EMU/db_static"
+# PROP CPU_ID "{32E52003-403E-442D-BE48-DE10F8C6131D}"
+# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
+# PROP Target_Dir ""
+CPP=cl.exe
+# ADD BASE CPP /nologo /W3 /Zi /Od /D "DEBUG" /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "_i386_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_X86_" /D "x86" /D "_LIB" /Yu"stdafx.h" /Gs8192 /GF /c
+# ADD CPP /nologo /W3 /I "." /I ".." /D "DB_WIN32" /D "DB_WINCE" /Zi /Od /D "DEBUG" /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "_i386_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_X86_" /D "x86" /D "_LIB" /D "__NO_SYSTEM_INCLUDES" /Yu"stdafx.h" /Gs8192 /GF /c
+# SUBTRACT CPP /YX /Yc /Yu
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"Debug_EMU/libdb46sd.lib"
+# ADD LIB32 /nologo /out:"Debug_EMU/libdb46sd.lib"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+
+!ELSEIF "$(CFG)" == "db_static - Win32 (WCE ARMV4) Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_ARMV4"
+# PROP BASE Intermediate_Dir "Release_ARMV4/db_static"
+# PROP BASE CPU_ID "{ECBEA43D-CD7B-4852-AD55-D4227B5D624B}"
+# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_ARMV4"
+# PROP Intermediate_Dir "Release_ARMV4/db_static"
+# PROP CPU_ID "{ECBEA43D-CD7B-4852-AD55-D4227B5D624B}"
+# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
+# PROP Target_Dir ""
+CPP=clarm.exe
+# ADD BASE CPP /nologo /W3 /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "NDEBUG" /D "ARM" /D "_ARM_" /D "ARMV4" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_LIB" /Yu"stdafx.h" /O2 /M$(CECrtMT) /c
+# ADD CPP /nologo /W3 /I "." /I ".." /D "DB_WIN32" /D "DB_WINCE" /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "NDEBUG" /D "ARM" /D "_ARM_" /D "ARMV4" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_LIB" /D "__NO_SYSTEM_INCLUDES" /Yu"stdafx.h" /O2 /M$(CECrtMT) /c
+# SUBTRACT CPP /YX /Yc /Yu
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"Release_ARMV4/libdb46s.lib"
+# ADD LIB32 /nologo /out:"Release_ARMV4/libdb46s.lib"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+
+!ELSEIF "$(CFG)" == "db_static - Win32 (WCE ARMV4) Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_ARMV4"
+# PROP BASE Intermediate_Dir "Debug_ARMV4/db_static"
+# PROP BASE CPU_ID "{ECBEA43D-CD7B-4852-AD55-D4227B5D624B}"
+# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_ARMV4"
+# PROP Intermediate_Dir "Debug_ARMV4/db_static"
+# PROP CPU_ID "{ECBEA43D-CD7B-4852-AD55-D4227B5D624B}"
+# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
+# PROP Target_Dir ""
+CPP=clarm.exe
+# ADD BASE CPP /nologo /W3 /Zi /Od /D "DEBUG" /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "ARM" /D "_ARM_" /D "ARMV4" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_LIB" /Yu"stdafx.h" /M$(CECrtMTDebug) /c
+# ADD CPP /nologo /W3 /I "." /I ".." /D "DB_WIN32" /D "DB_WINCE" /Zi /Od /D "DEBUG" /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "ARM" /D "_ARM_" /D "ARMV4" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_LIB" /D "__NO_SYSTEM_INCLUDES" /Yu"stdafx.h" /M$(CECrtMTDebug) /c
+# SUBTRACT CPP /YX /Yc /Yu
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"Debug_ARMV4/libdb46sd.lib"
+# ADD LIB32 /nologo /out:"Debug_ARMV4/libdb46sd.lib"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+
+!ENDIF
+
+# Begin Target
+
+# Name "db_static - Win32 (WCE emulator) Release"
+# Name "db_static - Win32 (WCE emulator) Debug"
+# Name "db_static - Win32 (WCE ARMV4) Release"
+# Name "db_static - Win32 (WCE ARMV4) Debug"
+# Begin Source File
+
+SOURCE=..\btree\bt_compact.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\btree\bt_compare.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\btree\bt_conv.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\btree\bt_curadj.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\btree\bt_cursor.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\btree\bt_delete.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\btree\bt_method.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\btree\bt_open.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\btree\bt_put.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\btree\bt_rec.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\btree\bt_reclaim.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\btree\bt_recno.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\btree\bt_rsearch.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\btree\bt_search.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\btree\bt_split.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\btree\bt_stat.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\btree\bt_upgrade.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\btree\bt_verify.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\btree\btree_auto.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\clib\strdup.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\clib\strerror.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\clib\strsep.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\common\db_byteorder.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\common\db_err.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\common\db_getlong.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\common\db_idspace.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\common\db_log2.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\common\db_shash.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\common\mkpath.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\common\util_cache.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\common\util_log.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\crypto\aes_method.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\crypto\crypto.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\crypto\mersenne\mt19937db.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\crypto\rijndael\rijndael-alg-fst.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\crypto\rijndael\rijndael-api-fst.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db\crdel_auto.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db\crdel_rec.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db\db.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db\db_am.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db\db_auto.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db\db_cam.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db\db_cds.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db\db_conv.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db\db_dispatch.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db\db_dup.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db\db_iface.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db\db_join.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db\db_meta.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db\db_method.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db\db_open.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db\db_overflow.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db\db_ovfl_vrfy.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db\db_pr.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db\db_rec.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db\db_reclaim.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db\db_remove.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db\db_rename.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db\db_ret.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db\db_setid.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db\db_setlsn.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db\db_stati.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db\db_truncate.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db\db_upg.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db\db_upg_opd.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db\db_vrfy.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db\db_vrfyutil.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\dbreg\dbreg.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\dbreg\dbreg_auto.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\dbreg\dbreg_rec.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\dbreg\dbreg_stat.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\dbreg\dbreg_util.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\env\env_alloc.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\env\env_config.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\env\env_failchk.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\env\env_file.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\env\env_globals.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\env\env_method.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\env\env_name.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\env\env_open.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\env\env_recover.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\env\env_region.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\env\env_register.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\env\env_stat.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\fileops\fileops_auto.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\fileops\fop_basic.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\fileops\fop_rec.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\fileops\fop_util.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\hash\hash.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\hash\hash_auto.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\hash\hash_conv.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\hash\hash_dup.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\hash\hash_func.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\hash\hash_meta.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\hash\hash_method.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\hash\hash_open.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\hash\hash_page.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\hash\hash_rec.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\hash\hash_reclaim.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\hash\hash_stat.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\hash\hash_upgrade.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\hash\hash_verify.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\hmac\hmac.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\hmac\sha1.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\hsearch\hsearch.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lock\lock.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lock\lock_deadlock.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lock\lock_failchk.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lock\lock_id.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lock\lock_list.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lock\lock_method.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lock\lock_region.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lock\lock_stat.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lock\lock_timer.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lock\lock_util.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\log\log.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\log\log_archive.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\log\log_compare.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\log\log_debug.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\log\log_get.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\log\log_method.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\log\log_put.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\log\log_stat.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\mp\mp_alloc.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\mp\mp_bh.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\mp\mp_fget.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\mp\mp_fmethod.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\mp\mp_fopen.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\mp\mp_fput.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\mp\mp_fset.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\mp\mp_method.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\mp\mp_mvcc.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\mp\mp_region.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\mp\mp_register.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\mp\mp_resize.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\mp\mp_stat.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\mp\mp_sync.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\mp\mp_trickle.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\mutex\mut_alloc.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\mutex\mut_failchk.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\mutex\mut_method.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\mutex\mut_region.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\mutex\mut_stat.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\mutex\mut_win32.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os\os_abort.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os\os_alloc.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os\os_fzero.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os\os_oflags.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os\os_pid.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os\os_region.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os\os_root.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os\os_rpath.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os\os_tmpdir.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os\os_uid.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os_windows\ce_ctime.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os_windows\ce_time.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os_windows\os_abs.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os_windows\os_clock.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os_windows\os_config.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os_windows\os_dir.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os_windows\os_errno.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os_windows\os_fid.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os_windows\os_flock.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os_windows\os_fsync.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os_windows\os_getenv.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os_windows\os_handle.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os_windows\os_map.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os_windows\os_mkdir.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os_windows\os_open.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os_windows\os_rename.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os_windows\os_rw.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os_windows\os_seek.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os_windows\os_sleep.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os_windows\os_spin.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os_windows\os_stat.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os_windows\os_truncate.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os_windows\os_unlink.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\os_windows\os_yield.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\qam\qam.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\qam\qam_auto.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\qam\qam_conv.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\qam\qam_files.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\qam\qam_method.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\qam\qam_open.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\qam\qam_rec.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\qam\qam_stat.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\qam\qam_upgrade.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\qam\qam_verify.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\rep\rep_stub.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\repmgr\repmgr_stub.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\sequence\seq_stat.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\sequence\sequence.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\txn\txn.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\txn\txn_auto.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\txn\txn_chkpt.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\txn\txn_failchk.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\txn\txn_method.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\txn\txn_rec.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\txn\txn_recover.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\txn\txn_region.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\txn\txn_stat.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\txn\txn_util.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\xa\xa.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\xa\xa_db.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\xa\xa_map.c
+# End Source File
+# End Target
+# End Project
diff --git a/db/build_wince/db_static.vcproj b/db/build_wince/db_static.vcproj
new file mode 100644
index 000000000..1f48be4b0
--- /dev/null
+++ b/db/build_wince/db_static.vcproj
@@ -0,0 +1,8562 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="db_static"
+ ProjectGUID="{4AB4958F-8DD0-49B5-8C02-014B5637C59A}"
+ >
+ <Platforms>
+ <Platform
+ Name="Smartphone 2003 (ARMV4)"
+ />
+ <Platform
+ Name="Pocket PC 2003 (ARMV4)"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ OutputDirectory="$(ConfigurationName)_Smartphone2003_ARMV4\db_static"
+ IntermediateDirectory="$(ConfigurationName)_Smartphone2003_ARMV4\db_static"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName="$(ConfigurationName)_Smartphone2003_ARMV4/libdb46s.tlb"
+ HeaderFileName=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ ExecutionBucket="7"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories=".,.."
+ PreprocessorDefinitions="DB_WIN32;DB_WINCE;_WIN32_WCE=$(CEVER);$(CePlatform);NDEBUG;ARM;_ARM_;ARMV4;UNDER_CE=$(CEVER);UNICODE;_LIB;__NO_SYSTEM_INCLUDES;"
+ StringPooling="true"
+ RuntimeLibrary="0"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ PrecompiledHeaderFile="$(ConfigurationName)_Smartphone2003_ARMV4/db_static.pch"
+ AssemblerListingLocation="$(ConfigurationName)_Smartphone2003_ARMV4/"
+ ObjectFile="$(ConfigurationName)_Smartphone2003_ARMV4\db_static/"
+ ProgramDataBaseFileName="$(ConfigurationName)_Smartphone2003_ARMV4/"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ Culture="3081"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(ConfigurationName)_Smartphone2003_ARMV4\libdb46s.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ SuppressStartupBanner="true"
+ OutputFile="$(ConfigurationName)_Smartphone2003_ARMV4/libdb46s.bsc"
+ />
+ <Tool
+ Name="VCCodeSignTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ <DeploymentTool
+ ForceDirty="-1"
+ RemoteDirectory=""
+ RegisterOutput="0"
+ AdditionalFiles=""
+ />
+ <DebuggerTool
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ OutputDirectory="$(ConfigurationName)_PocketPC2003_ARMV4\db_static"
+ IntermediateDirectory="$(ConfigurationName)_PocketPC2003_ARMV4\db_static"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName="$(ConfigurationName)_PocketPC2003_ARMV4/libdb46s.tlb"
+ HeaderFileName=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ ExecutionBucket="7"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories=".,.."
+ PreprocessorDefinitions="DB_WIN32;DB_WINCE;_WIN32_WCE=$(CEVER);$(CePlatform);NDEBUG;ARM;_ARM_;ARMV4;UNDER_CE=$(CEVER);UNICODE;_LIB;__NO_SYSTEM_INCLUDES;"
+ StringPooling="true"
+ RuntimeLibrary="0"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ PrecompiledHeaderFile="$(ConfigurationName)_PocketPC2003_ARMV4/db_static.pch"
+ AssemblerListingLocation="$(ConfigurationName)_PocketPC2003_ARMV4/"
+ ObjectFile="$(ConfigurationName)_PocketPC2003_ARMV4\db_static/"
+ ProgramDataBaseFileName="$(ConfigurationName)_PocketPC2003_ARMV4/"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ Culture="3081"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(ConfigurationName)_PocketPC2003_ARMV4\libdb46s.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ SuppressStartupBanner="true"
+ OutputFile="$(ConfigurationName)_PocketPC2003_ARMV4/libdb46s.bsc"
+ />
+ <Tool
+ Name="VCCodeSignTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ <DeploymentTool
+ ForceDirty="-1"
+ RemoteDirectory=""
+ RegisterOutput="0"
+ AdditionalFiles=""
+ />
+ <DebuggerTool
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ OutputDirectory="$(ConfigurationName)_Smartphone2003_ARMV4\db_static"
+ IntermediateDirectory="$(ConfigurationName)_Smartphone2003_ARMV4\db_static"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName="$(ConfigurationName)_Smartphone2003_ARMV4/libdb46sd.tlb"
+ HeaderFileName=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ ExecutionBucket="7"
+ Optimization="0"
+ AdditionalIncludeDirectories=".,.."
+ PreprocessorDefinitions="DB_WIN32;DB_WINCE;DEBUG;_WIN32_WCE=$(CEVER);$(CePlatform);ARM;_ARM_;ARMV4;UNDER_CE=$(CEVER);UNICODE;_LIB;__NO_SYSTEM_INCLUDES;"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ PrecompiledHeaderFile="$(ConfigurationName)_Smartphone2003_ARMV4/db_static.pch"
+ AssemblerListingLocation="$(ConfigurationName)_Smartphone2003_ARMV4/"
+ ObjectFile="$(ConfigurationName)_Smartphone2003_ARMV4\db_static/"
+ ProgramDataBaseFileName="$(ConfigurationName)_Smartphone2003_ARMV4/"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ Culture="3081"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(ConfigurationName)_Smartphone2003_ARMV4\libdb46sd.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ SuppressStartupBanner="true"
+ OutputFile="$(ConfigurationName)_Smartphone2003_ARMV4/libdb46sd.bsc"
+ />
+ <Tool
+ Name="VCCodeSignTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ <DeploymentTool
+ ForceDirty="-1"
+ RemoteDirectory=""
+ RegisterOutput="0"
+ AdditionalFiles=""
+ />
+ <DebuggerTool
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ OutputDirectory="$(ConfigurationName)_PocketPC2003_ARMV4\db_static"
+ IntermediateDirectory="$(ConfigurationName)_PocketPC2003_ARMV4\db_static"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName="$(ConfigurationName)_PocketPC2003_ARMV4/libdb46sd.tlb"
+ HeaderFileName=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ ExecutionBucket="7"
+ Optimization="0"
+ AdditionalIncludeDirectories=".,.."
+ PreprocessorDefinitions="DB_WIN32;DB_WINCE;DEBUG;_WIN32_WCE=$(CEVER);$(CePlatform);ARM;_ARM_;ARMV4;UNDER_CE=$(CEVER);UNICODE;_LIB;__NO_SYSTEM_INCLUDES;"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ PrecompiledHeaderFile="$(ConfigurationName)_PocketPC2003_ARMV4/db_static.pch"
+ AssemblerListingLocation="$(ConfigurationName)_PocketPC2003_ARMV4/"
+ ObjectFile="$(ConfigurationName)_PocketPC2003_ARMV4\db_static/"
+ ProgramDataBaseFileName="$(ConfigurationName)_PocketPC2003_ARMV4/"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ Culture="3081"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(ConfigurationName)_PocketPC2003_ARMV4\libdb46sd.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ SuppressStartupBanner="true"
+ OutputFile="$(ConfigurationName)_PocketPC2003_ARMV4/libdb46sd.bsc"
+ />
+ <Tool
+ Name="VCCodeSignTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ <DeploymentTool
+ ForceDirty="-1"
+ RemoteDirectory=""
+ RegisterOutput="0"
+ AdditionalFiles=""
+ />
+ <DebuggerTool
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\btree\bt_compact.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\btree\bt_compare.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\btree\bt_conv.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\btree\bt_curadj.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\btree\bt_cursor.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\btree\bt_delete.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\btree\bt_method.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\btree\bt_open.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\btree\bt_put.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\btree\bt_rec.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\btree\bt_reclaim.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\btree\bt_recno.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\btree\bt_rsearch.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\btree\bt_search.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\btree\bt_split.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\btree\bt_stat.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\btree\bt_upgrade.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\btree\bt_verify.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\btree\btree_auto.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\clib\strdup.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\clib\strerror.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\clib\strsep.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\common\db_byteorder.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\common\db_err.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\common\db_getlong.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\common\db_idspace.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\common\db_log2.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\common\db_shash.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\common\mkpath.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\common\util_cache.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\common\util_log.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\crypto\aes_method.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\crypto\crypto.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\crypto\mersenne\mt19937db.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\crypto\rijndael\rijndael-alg-fst.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\crypto\rijndael\rijndael-api-fst.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\db\crdel_auto.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\db\crdel_rec.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\db\db.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\db\db_am.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\db\db_auto.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\db\db_cam.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\db\db_cds.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\db\db_conv.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\db\db_dispatch.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\db\db_dup.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\db\db_iface.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\db\db_join.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\db\db_meta.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\db\db_method.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\db\db_open.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\db\db_overflow.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\db\db_ovfl_vrfy.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\db\db_pr.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\db\db_rec.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\db\db_reclaim.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\db\db_remove.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\db\db_rename.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\db\db_ret.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\db\db_setid.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\db\db_setlsn.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\db\db_stati.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\db\db_truncate.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\db\db_upg.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\db\db_upg_opd.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\db\db_vrfy.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\db\db_vrfyutil.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\dbreg\dbreg.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\dbreg\dbreg_auto.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\dbreg\dbreg_rec.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\dbreg\dbreg_stat.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\dbreg\dbreg_util.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\env\env_alloc.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\env\env_config.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\env\env_failchk.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\env\env_file.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\env\env_globals.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\env\env_method.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\env\env_name.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\env\env_open.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\env\env_recover.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\env\env_region.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\env\env_register.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\env\env_stat.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\fileops\fileops_auto.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\fileops\fop_basic.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\fileops\fop_rec.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\fileops\fop_util.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\hash\hash.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\hash\hash_auto.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\hash\hash_conv.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\hash\hash_dup.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\hash\hash_func.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\hash\hash_meta.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\hash\hash_method.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\hash\hash_open.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\hash\hash_page.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\hash\hash_rec.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\hash\hash_reclaim.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\hash\hash_stat.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\hash\hash_upgrade.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\hash\hash_verify.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\hmac\hmac.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\hmac\sha1.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\hsearch\hsearch.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\lock\lock.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\lock\lock_deadlock.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\lock\lock_failchk.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\lock\lock_id.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\lock\lock_list.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\lock\lock_method.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\lock\lock_region.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\lock\lock_stat.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\lock\lock_timer.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\lock\lock_util.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\log\log.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\log\log_archive.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\log\log_compare.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\log\log_debug.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\log\log_get.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\log\log_method.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\log\log_put.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\log\log_stat.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\mp\mp_alloc.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\mp\mp_bh.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\mp\mp_fget.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\mp\mp_fmethod.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\mp\mp_fopen.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\mp\mp_fput.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\mp\mp_fset.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\mp\mp_method.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\mp\mp_mvcc.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\mp\mp_region.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\mp\mp_register.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\mp\mp_resize.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\mp\mp_stat.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\mp\mp_sync.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\mp\mp_trickle.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\mutex\mut_alloc.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\mutex\mut_failchk.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\mutex\mut_method.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\mutex\mut_region.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\mutex\mut_stat.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\mutex\mut_win32.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os\os_abort.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os\os_alloc.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os\os_fzero.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os\os_oflags.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os\os_pid.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os\os_region.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os\os_root.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os\os_rpath.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os\os_tmpdir.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os\os_uid.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os_windows\ce_ctime.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os_windows\ce_time.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os_windows\os_abs.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os_windows\os_clock.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os_windows\os_config.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os_windows\os_dir.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os_windows\os_errno.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os_windows\os_fid.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os_windows\os_flock.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os_windows\os_fsync.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os_windows\os_getenv.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os_windows\os_handle.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os_windows\os_map.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os_windows\os_mkdir.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os_windows\os_open.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os_windows\os_rename.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os_windows\os_rw.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os_windows\os_seek.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os_windows\os_sleep.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os_windows\os_spin.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os_windows\os_stat.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os_windows\os_truncate.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os_windows\os_unlink.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\os_windows\os_yield.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\qam\qam.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\qam\qam_auto.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\qam\qam_conv.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\qam\qam_files.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\qam\qam_method.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\qam\qam_open.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\qam\qam_rec.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\qam\qam_stat.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\qam\qam_upgrade.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\qam\qam_verify.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\rep\rep_stub.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\repmgr\repmgr_stub.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\sequence\seq_stat.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\sequence\sequence.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\txn\txn.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\txn\txn_auto.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\txn\txn_chkpt.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\txn\txn_failchk.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\txn\txn_method.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\txn\txn_rec.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\txn\txn_recover.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\txn\txn_region.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\txn\txn_stat.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\txn\txn_util.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\xa\xa.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\xa\xa_db.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\xa\xa_map.c"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/db/build_wince/errno.h b/db/build_wince/errno.h
new file mode 100644
index 000000000..935efcce2
--- /dev/null
+++ b/db/build_wince/errno.h
@@ -0,0 +1,188 @@
+/*-
+ * Copyright (c) 1982, 1986, 1989, 1993
+ * The Regents of the University of California. All rights reserved.
+ * (c) UNIX System Laboratories, Inc.
+ * All or some portions of this file are derived from material licensed
+ * to the University of California by American Telephone and Telegraph
+ * Co. or Unix System Laboratories, Inc. and are reproduced herein with
+ * the permission of UNIX System Laboratories, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * @(#)errno.h 8.5 (Berkeley) 1/21/94
+ * FreeBSD: /repoman/r/ncvs/src/sys/sys/errno.h,v 1.28 2005/04/02 12:33:28 das Exp $
+ *
+ * $Id: errno.h,v 1.4 2006/11/09 14:23:11 bostic Exp $
+ */
+
+#ifndef _SYS_ERRNO_H_
+#define _SYS_ERRNO_H_
+
+#undef errno
+#define errno DB_GLOBAL(db_errno)
+
+#define EPERM 1 /* Operation not permitted */
+#define ENOENT 2 /* No such file or directory */
+#define ESRCH 3 /* No such process */
+#define EINTR 4 /* Interrupted system call */
+#define EIO 5 /* Input/output error */
+#define ENXIO 6 /* Device not configured */
+#define E2BIG 7 /* Argument list too long */
+#define ENOEXEC 8 /* Exec format error */
+#define EBADF 9 /* Bad file descriptor */
+#define ECHILD 10 /* No child processes */
+#define EDEADLK 11 /* Resource deadlock avoided */
+ /* 11 was EAGAIN */
+#define ENOMEM 12 /* Cannot allocate memory */
+#define EACCES 13 /* Permission denied */
+#define EFAULT 14 /* Bad address */
+#ifndef _POSIX_SOURCE
+#define ENOTBLK 15 /* Block device required */
+#endif
+#define EBUSY 16 /* Device busy */
+#define EEXIST 17 /* File exists */
+#define EXDEV 18 /* Cross-device link */
+#define ENODEV 19 /* Operation not supported by device */
+#define ENOTDIR 20 /* Not a directory */
+#define EISDIR 21 /* Is a directory */
+#define EINVAL 22 /* Invalid argument */
+#define ENFILE 23 /* Too many open files in system */
+#define EMFILE 24 /* Too many open files */
+#define ENOTTY 25 /* Inappropriate ioctl for device */
+#ifndef _POSIX_SOURCE
+#define ETXTBSY 26 /* Text file busy */
+#endif
+#define EFBIG 27 /* File too large */
+#define ENOSPC 28 /* No space left on device */
+#define ESPIPE 29 /* Illegal seek */
+#define EROFS 30 /* Read-only filesystem */
+#define EMLINK 31 /* Too many links */
+#define EPIPE 32 /* Broken pipe */
+
+/* math software */
+#define EDOM 33 /* Numerical argument out of domain */
+#define ERANGE 34 /* Result too large */
+
+/* non-blocking and interrupt i/o */
+#define EAGAIN 35 /* Resource temporarily unavailable */
+#ifndef _POSIX_SOURCE
+#define EWOULDBLOCK EAGAIN /* Operation would block */
+#define EINPROGRESS 36 /* Operation now in progress */
+
+#ifndef EALREADY /* BREW already has an EALREADY. */
+#define EALREADY 37 /* Operation already in progress */
+#endif
+
+/* ipc/network software -- argument errors */
+#define ENOTSOCK 38 /* Socket operation on non-socket */
+#define EDESTADDRREQ 39 /* Destination address required */
+#define EMSGSIZE 40 /* Message too long */
+#define EPROTOTYPE 41 /* Protocol wrong type for socket */
+#define ENOPROTOOPT 42 /* Protocol not available */
+#define EPROTONOSUPPORT 43 /* Protocol not supported */
+#define ESOCKTNOSUPPORT 44 /* Socket type not supported */
+#define EOPNOTSUPP 45 /* Operation not supported */
+#define ENOTSUP EOPNOTSUPP /* Operation not supported */
+#define EPFNOSUPPORT 46 /* Protocol family not supported */
+#define EAFNOSUPPORT 47 /* Address family not supported by protocol family */
+#define EADDRINUSE 48 /* Address already in use */
+#define EADDRNOTAVAIL 49 /* Can't assign requested address */
+
+/* ipc/network software -- operational errors */
+#define ENETDOWN 50 /* Network is down */
+#define ENETUNREACH 51 /* Network is unreachable */
+#define ENETRESET 52 /* Network dropped connection on reset */
+#define ECONNABORTED 53 /* Software caused connection abort */
+#define ECONNRESET 54 /* Connection reset by peer */
+#define ENOBUFS 55 /* No buffer space available */
+#define EISCONN 56 /* Socket is already connected */
+#define ENOTCONN 57 /* Socket is not connected */
+#define ESHUTDOWN 58 /* Can't send after socket shutdown */
+#define ETOOMANYREFS 59 /* Too many references: can't splice */
+#define ETIMEDOUT 60 /* Operation timed out */
+#define ECONNREFUSED 61 /* Connection refused */
+
+#define ELOOP 62 /* Too many levels of symbolic links */
+#endif /* _POSIX_SOURCE */
+#define ENAMETOOLONG 63 /* File name too long */
+
+/* should be rearranged */
+#ifndef _POSIX_SOURCE
+#define EHOSTDOWN 64 /* Host is down */
+#define EHOSTUNREACH 65 /* No route to host */
+#endif /* _POSIX_SOURCE */
+#define ENOTEMPTY 66 /* Directory not empty */
+
+/* quotas & mush */
+#ifndef _POSIX_SOURCE
+#define EPROCLIM 67 /* Too many processes */
+#define EUSERS 68 /* Too many users */
+#define EDQUOT 69 /* Disc quota exceeded */
+
+/* Network File System */
+#define ESTALE 70 /* Stale NFS file handle */
+#define EREMOTE 71 /* Too many levels of remote in path */
+#define EBADRPC 72 /* RPC struct is bad */
+#define ERPCMISMATCH 73 /* RPC version wrong */
+#define EPROGUNAVAIL 74 /* RPC prog. not avail */
+#define EPROGMISMATCH 75 /* Program version wrong */
+#define EPROCUNAVAIL 76 /* Bad procedure for program */
+#endif /* _POSIX_SOURCE */
+
+#define ENOLCK 77 /* No locks available */
+#define ENOSYS 78 /* Function not implemented */
+
+#ifndef _POSIX_SOURCE
+#define EFTYPE 79 /* Inappropriate file type or format */
+#define EAUTH 80 /* Authentication error */
+#define ENEEDAUTH 81 /* Need authenticator */
+#define EIDRM 82 /* Identifier removed */
+#define ENOMSG 83 /* No message of desired type */
+#define EOVERFLOW 84 /* Value too large to be stored in data type */
+#define ECANCELED 85 /* Operation canceled */
+#define EILSEQ 86 /* Illegal byte sequence */
+#define ENOATTR 87 /* Attribute not found */
+
+#define EDOOFUS 88 /* Programming error */
+#endif /* _POSIX_SOURCE */
+
+#define EBADMSG 89 /* Bad message */
+#define EMULTIHOP 90 /* Multihop attempted */
+#define ENOLINK 91 /* Link has been severed */
+#define EPROTO 92 /* Protocol error */
+
+#ifndef _POSIX_SOURCE
+#define ELAST 92 /* Must be equal largest errno */
+#endif /* _POSIX_SOURCE */
+
+#ifdef _KERNEL
+/* pseudo-errors returned inside kernel to modify return to process */
+#define ERESTART (-1) /* restart syscall */
+#define EJUSTRETURN (-2) /* don't modify regs, just return */
+#define ENOIOCTL (-3) /* ioctl not handled by this layer */
+#define EDIRIOCTL (-4) /* do direct ioctl in GEOM */
+#endif
+
+#endif
diff --git a/db/build_wince/rsrcfile_vcproj.src b/db/build_wince/rsrcfile_vcproj.src
new file mode 100644
index 000000000..7b932545b
--- /dev/null
+++ b/db/build_wince/rsrcfile_vcproj.src
@@ -0,0 +1,40 @@
+ <File
+ RelativePath="@srcdir@\@srcfile@"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCResourceCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCResourceCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCResourceCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCResourceCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
diff --git a/db/build_win32/srcfile_dsp.src b/db/build_wince/srcfile_vcp.src
index 408a55e2a..408a55e2a 100644
--- a/db/build_win32/srcfile_dsp.src
+++ b/db/build_wince/srcfile_vcp.src
diff --git a/db/build_wince/srcfile_vcproj.src b/db/build_wince/srcfile_vcproj.src
new file mode 100644
index 000000000..ed9a035e6
--- /dev/null
+++ b/db/build_wince/srcfile_vcproj.src
@@ -0,0 +1,40 @@
+ <File
+ RelativePath="@srcdir@\@srcfile@"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
diff --git a/db/build_wince/static_vcp.src b/db/build_wince/static_vcp.src
new file mode 100644
index 000000000..6f2a3f1e3
--- /dev/null
+++ b/db/build_wince/static_vcp.src
@@ -0,0 +1,151 @@
+# Microsoft eMbedded Visual Tools Project File - Name="@project_name@" - Package Owner=<4>
+# Microsoft eMbedded Visual Tools Generated Build File, Format Version 6.02
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (WCE ARMV4) Static Library" 0xa304
+# TARGTYPE "Win32 (WCE emulator) Static Library" 0xa604
+
+CFG=@project_name@ - Win32 (WCE emulator) Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "@project_name@.vcn".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "@project_name@.vcn" CFG="@project_name@ - Win32 (WCE emulator) Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "@project_name@ - Win32 (WCE emulator) Release" (based on "Win32 (WCE emulator) Static Library")
+!MESSAGE "@project_name@ - Win32 (WCE emulator) Debug" (based on "Win32 (WCE emulator) Static Library")
+!MESSAGE "@project_name@ - Win32 (WCE ARMV4) Release" (based on "Win32 (WCE ARMV4) Static Library")
+!MESSAGE "@project_name@ - Win32 (WCE ARMV4) Debug" (based on "Win32 (WCE ARMV4) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+# PROP ATL_Project 2
+
+!IF "$(CFG)" == "@project_name@ - Win32 (WCE emulator) Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "@lib_rel_dest@_EMU"
+# PROP BASE Intermediate_Dir "Release_EMU/@project_name@"
+# PROP BASE CPU_ID "{32E52003-403E-442D-BE48-DE10F8C6131D}"
+# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "@lib_rel_dest@_EMU"
+# PROP Intermediate_Dir "Release_EMU/@project_name@"
+# PROP CPU_ID "{32E52003-403E-442D-BE48-DE10F8C6131D}"
+# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
+# PROP Target_Dir ""
+CPP=cl.exe
+# ADD BASE CPP /nologo /W3 /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "_i386_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_X86_" /D "x86" /D "NDEBUG" /D "_LIB" /Yu"stdafx.h" /Gs8192 @extra_cppflags@ /GF /O2 /c
+# ADD CPP /nologo /W3 /I "." /I ".." /D "DB_WIN32" /D "DB_WINCE" /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "_i386_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_X86_" /D "x86" /D "NDEBUG" /D "_LIB" /D "__NO_SYSTEM_INCLUDES" /Yu"stdafx.h" /Gs8192 @extra_cppflags@ /GF /O2 /c
+# SUBTRACT CPP /YX /Yc /Yu
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"@lib_rel_dest@_EMU/libdb@lib_suffix@@DB_VERSION_MAJOR@@DB_VERSION_MINOR@s.lib"
+# ADD LIB32 /nologo /out:"@lib_rel_dest@_EMU/libdb@lib_suffix@@DB_VERSION_MAJOR@@DB_VERSION_MINOR@s.lib"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+
+!ELSEIF "$(CFG)" == "@project_name@ - Win32 (WCE emulator) Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "@lib_debug_dest@_EMU"
+# PROP BASE Intermediate_Dir "Debug_EMU/@project_name@"
+# PROP BASE CPU_ID "{32E52003-403E-442D-BE48-DE10F8C6131D}"
+# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "@lib_debug_dest@_EMU"
+# PROP Intermediate_Dir "Debug_EMU/@project_name@"
+# PROP CPU_ID "{32E52003-403E-442D-BE48-DE10F8C6131D}"
+# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
+# PROP Target_Dir ""
+CPP=cl.exe
+# ADD BASE CPP /nologo /W3 /Zi /Od /D "DEBUG" /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "_i386_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_X86_" /D "x86" /D "_LIB" /Yu"stdafx.h" /Gs8192 @extra_cppflags@ /GF /c
+# ADD CPP /nologo /W3 /I "." /I ".." /D "DB_WIN32" /D "DB_WINCE" /Zi /Od /D "DEBUG" /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "_i386_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_X86_" /D "x86" /D "_LIB" /D "__NO_SYSTEM_INCLUDES" /Yu"stdafx.h" /Gs8192 @extra_cppflags@ /GF /c
+# SUBTRACT CPP /YX /Yc /Yu
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"@lib_debug_dest@_EMU/libdb@lib_suffix@@DB_VERSION_MAJOR@@DB_VERSION_MINOR@sd.lib"
+# ADD LIB32 /nologo /out:"@lib_debug_dest@_EMU/libdb@lib_suffix@@DB_VERSION_MAJOR@@DB_VERSION_MINOR@sd.lib"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+
+!ELSEIF "$(CFG)" == "@project_name@ - Win32 (WCE ARMV4) Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "@lib_rel_dest@_ARMV4"
+# PROP BASE Intermediate_Dir "Release_ARMV4/@project_name@"
+# PROP BASE CPU_ID "{ECBEA43D-CD7B-4852-AD55-D4227B5D624B}"
+# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "@lib_rel_dest@_ARMV4"
+# PROP Intermediate_Dir "Release_ARMV4/@project_name@"
+# PROP CPU_ID "{ECBEA43D-CD7B-4852-AD55-D4227B5D624B}"
+# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
+# PROP Target_Dir ""
+CPP=clarm.exe
+# ADD BASE CPP /nologo /W3 /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "NDEBUG" /D "ARM" /D "_ARM_" /D "ARMV4" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_LIB" /Yu"stdafx.h" /O2 /M$(CECrtMT) @extra_cppflags@ /c
+# ADD CPP /nologo /W3 /I "." /I ".." /D "DB_WIN32" /D "DB_WINCE" /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "NDEBUG" /D "ARM" /D "_ARM_" /D "ARMV4" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_LIB" /D "__NO_SYSTEM_INCLUDES" /Yu"stdafx.h" /O2 /M$(CECrtMT) @extra_cppflags@ /c
+# SUBTRACT CPP /YX /Yc /Yu
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"@lib_rel_dest@_ARMV4/libdb@lib_suffix@@DB_VERSION_MAJOR@@DB_VERSION_MINOR@s.lib"
+# ADD LIB32 /nologo /out:"@lib_rel_dest@_ARMV4/libdb@lib_suffix@@DB_VERSION_MAJOR@@DB_VERSION_MINOR@s.lib"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+
+!ELSEIF "$(CFG)" == "@project_name@ - Win32 (WCE ARMV4) Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "@lib_debug_dest@_ARMV4"
+# PROP BASE Intermediate_Dir "Debug_ARMV4/@project_name@"
+# PROP BASE CPU_ID "{ECBEA43D-CD7B-4852-AD55-D4227B5D624B}"
+# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "@lib_debug_dest@_ARMV4"
+# PROP Intermediate_Dir "Debug_ARMV4/@project_name@"
+# PROP CPU_ID "{ECBEA43D-CD7B-4852-AD55-D4227B5D624B}"
+# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
+# PROP Target_Dir ""
+CPP=clarm.exe
+# ADD BASE CPP /nologo /W3 /Zi /Od /D "DEBUG" /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "ARM" /D "_ARM_" /D "ARMV4" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_LIB" /Yu"stdafx.h" /M$(CECrtMTDebug) @extra_cppflags@ /c
+# ADD CPP /nologo /W3 /I "." /I ".." /D "DB_WIN32" /D "DB_WINCE" /Zi /Od /D "DEBUG" /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "ARM" /D "_ARM_" /D "ARMV4" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_LIB" /D "__NO_SYSTEM_INCLUDES" /Yu"stdafx.h" /M$(CECrtMTDebug) @extra_cppflags@ /c
+# SUBTRACT CPP /YX /Yc /Yu
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"@lib_debug_dest@_ARMV4/libdb@lib_suffix@@DB_VERSION_MAJOR@@DB_VERSION_MINOR@sd.lib"
+# ADD LIB32 /nologo /out:"@lib_debug_dest@_ARMV4/libdb@lib_suffix@@DB_VERSION_MAJOR@@DB_VERSION_MINOR@sd.lib"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+
+!ENDIF
+
+# Begin Target
+
+# Name "@project_name@ - Win32 (WCE emulator) Release"
+# Name "@project_name@ - Win32 (WCE emulator) Debug"
+# Name "@project_name@ - Win32 (WCE ARMV4) Release"
+# Name "@project_name@ - Win32 (WCE ARMV4) Debug"
+@SOURCE_FILES@
+# End Target
+# End Project
diff --git a/db/build_wince/static_vcproj.src b/db/build_wince/static_vcproj.src
new file mode 100644
index 000000000..65c9dea88
--- /dev/null
+++ b/db/build_wince/static_vcproj.src
@@ -0,0 +1,363 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="@project_name@"
+ ProjectGUID="{@PROJ_GUID@}"
+ >
+ <Platforms>
+ <Platform
+ Name="Smartphone 2003 (ARMV4)"
+ />
+ <Platform
+ Name="Pocket PC 2003 (ARMV4)"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ OutputDirectory="$(ConfigurationName)_Smartphone2003_ARMV4\@project_name@"
+ IntermediateDirectory="$(ConfigurationName)_Smartphone2003_ARMV4\@project_name@"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName="$(ConfigurationName)_Smartphone2003_ARMV4/libdb@lib_suffix@@DB_VERSION_MAJOR@@DB_VERSION_MINOR@s.tlb"
+ HeaderFileName=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ ExecutionBucket="7"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories=".,.."
+ PreprocessorDefinitions="DB_WIN32;DB_WINCE;_WIN32_WCE=$(CEVER);$(CePlatform);NDEBUG;ARM;_ARM_;ARMV4;UNDER_CE=$(CEVER);UNICODE;_LIB;__NO_SYSTEM_INCLUDES;@extra_cppflags@"
+ StringPooling="true"
+ RuntimeLibrary="0"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ PrecompiledHeaderFile="$(ConfigurationName)_Smartphone2003_ARMV4/@project_name@.pch"
+ AssemblerListingLocation="$(ConfigurationName)_Smartphone2003_ARMV4/"
+ ObjectFile="$(ConfigurationName)_Smartphone2003_ARMV4\@project_name@/"
+ ProgramDataBaseFileName="$(ConfigurationName)_Smartphone2003_ARMV4/"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ Culture="3081"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(ConfigurationName)_Smartphone2003_ARMV4\libdb@lib_suffix@@DB_VERSION_MAJOR@@DB_VERSION_MINOR@s.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ SuppressStartupBanner="true"
+ OutputFile="$(ConfigurationName)_Smartphone2003_ARMV4/libdb@lib_suffix@@DB_VERSION_MAJOR@@DB_VERSION_MINOR@s.bsc"
+ />
+ <Tool
+ Name="VCCodeSignTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ <DeploymentTool
+ ForceDirty="-1"
+ RemoteDirectory=""
+ RegisterOutput="0"
+ AdditionalFiles=""
+ />
+ <DebuggerTool
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ OutputDirectory="$(ConfigurationName)_PocketPC2003_ARMV4\@project_name@"
+ IntermediateDirectory="$(ConfigurationName)_PocketPC2003_ARMV4\@project_name@"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName="$(ConfigurationName)_PocketPC2003_ARMV4/libdb@lib_suffix@@DB_VERSION_MAJOR@@DB_VERSION_MINOR@s.tlb"
+ HeaderFileName=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ ExecutionBucket="7"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories=".,.."
+ PreprocessorDefinitions="DB_WIN32;DB_WINCE;_WIN32_WCE=$(CEVER);$(CePlatform);NDEBUG;ARM;_ARM_;ARMV4;UNDER_CE=$(CEVER);UNICODE;_LIB;__NO_SYSTEM_INCLUDES;@extra_cppflags@"
+ StringPooling="true"
+ RuntimeLibrary="0"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ PrecompiledHeaderFile="$(ConfigurationName)_PocketPC2003_ARMV4/@project_name@.pch"
+ AssemblerListingLocation="$(ConfigurationName)_PocketPC2003_ARMV4/"
+ ObjectFile="$(ConfigurationName)_PocketPC2003_ARMV4\@project_name@/"
+ ProgramDataBaseFileName="$(ConfigurationName)_PocketPC2003_ARMV4/"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ Culture="3081"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(ConfigurationName)_PocketPC2003_ARMV4\libdb@lib_suffix@@DB_VERSION_MAJOR@@DB_VERSION_MINOR@s.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ SuppressStartupBanner="true"
+ OutputFile="$(ConfigurationName)_PocketPC2003_ARMV4/libdb@lib_suffix@@DB_VERSION_MAJOR@@DB_VERSION_MINOR@s.bsc"
+ />
+ <Tool
+ Name="VCCodeSignTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ <DeploymentTool
+ ForceDirty="-1"
+ RemoteDirectory=""
+ RegisterOutput="0"
+ AdditionalFiles=""
+ />
+ <DebuggerTool
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ OutputDirectory="$(ConfigurationName)_Smartphone2003_ARMV4\@project_name@"
+ IntermediateDirectory="$(ConfigurationName)_Smartphone2003_ARMV4\@project_name@"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName="$(ConfigurationName)_Smartphone2003_ARMV4/libdb@lib_suffix@@DB_VERSION_MAJOR@@DB_VERSION_MINOR@sd.tlb"
+ HeaderFileName=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ ExecutionBucket="7"
+ Optimization="0"
+ AdditionalIncludeDirectories=".,.."
+ PreprocessorDefinitions="DB_WIN32;DB_WINCE;DEBUG;_WIN32_WCE=$(CEVER);$(CePlatform);ARM;_ARM_;ARMV4;UNDER_CE=$(CEVER);UNICODE;_LIB;__NO_SYSTEM_INCLUDES;@extra_cppflags@"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ PrecompiledHeaderFile="$(ConfigurationName)_Smartphone2003_ARMV4/@project_name@.pch"
+ AssemblerListingLocation="$(ConfigurationName)_Smartphone2003_ARMV4/"
+ ObjectFile="$(ConfigurationName)_Smartphone2003_ARMV4\@project_name@/"
+ ProgramDataBaseFileName="$(ConfigurationName)_Smartphone2003_ARMV4/"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ Culture="3081"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(ConfigurationName)_Smartphone2003_ARMV4\libdb@lib_suffix@@DB_VERSION_MAJOR@@DB_VERSION_MINOR@sd.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ SuppressStartupBanner="true"
+ OutputFile="$(ConfigurationName)_Smartphone2003_ARMV4/libdb@lib_suffix@@DB_VERSION_MAJOR@@DB_VERSION_MINOR@sd.bsc"
+ />
+ <Tool
+ Name="VCCodeSignTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ <DeploymentTool
+ ForceDirty="-1"
+ RemoteDirectory=""
+ RegisterOutput="0"
+ AdditionalFiles=""
+ />
+ <DebuggerTool
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ OutputDirectory="$(ConfigurationName)_PocketPC2003_ARMV4\@project_name@"
+ IntermediateDirectory="$(ConfigurationName)_PocketPC2003_ARMV4\@project_name@"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName="$(ConfigurationName)_PocketPC2003_ARMV4/libdb@lib_suffix@@DB_VERSION_MAJOR@@DB_VERSION_MINOR@sd.tlb"
+ HeaderFileName=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ ExecutionBucket="7"
+ Optimization="0"
+ AdditionalIncludeDirectories=".,.."
+ PreprocessorDefinitions="DB_WIN32;DB_WINCE;DEBUG;_WIN32_WCE=$(CEVER);$(CePlatform);ARM;_ARM_;ARMV4;UNDER_CE=$(CEVER);UNICODE;_LIB;__NO_SYSTEM_INCLUDES;@extra_cppflags@"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ PrecompiledHeaderFile="$(ConfigurationName)_PocketPC2003_ARMV4/@project_name@.pch"
+ AssemblerListingLocation="$(ConfigurationName)_PocketPC2003_ARMV4/"
+ ObjectFile="$(ConfigurationName)_PocketPC2003_ARMV4\@project_name@/"
+ ProgramDataBaseFileName="$(ConfigurationName)_PocketPC2003_ARMV4/"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ Culture="3081"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(ConfigurationName)_PocketPC2003_ARMV4\libdb@lib_suffix@@DB_VERSION_MAJOR@@DB_VERSION_MINOR@sd.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ SuppressStartupBanner="true"
+ OutputFile="$(ConfigurationName)_PocketPC2003_ARMV4/libdb@lib_suffix@@DB_VERSION_MAJOR@@DB_VERSION_MINOR@sd.bsc"
+ />
+ <Tool
+ Name="VCCodeSignTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ <DeploymentTool
+ ForceDirty="-1"
+ RemoteDirectory=""
+ RegisterOutput="0"
+ AdditionalFiles=""
+ />
+ <DebuggerTool
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+@SOURCE_FILES@
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/db/build_wince/wce_tpcb.vcp b/db/build_wince/wce_tpcb.vcp
new file mode 100644
index 000000000..5b50787d7
--- /dev/null
+++ b/db/build_wince/wce_tpcb.vcp
@@ -0,0 +1,192 @@
+# Microsoft eMbedded Visual Tools Project File - Name="wce_tpcb" - Package Owner=<4>
+# Microsoft eMbedded Visual Tools Generated Build File, Format Version 6.02
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (WCE ARMV4) Application" 0xa301
+# TARGTYPE "Win32 (WCE emulator) Application" 0xa601
+
+CFG=wce_tpcb - Win32 (WCE emulator) Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "wce_tpcb.vcn".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "wce_tpcb.vcn" CFG="wce_tpcb - Win32 (WCE emulator) Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "wce_tpcb - Win32 (WCE emulator) Release" (based on "Win32 (WCE emulator) Application")
+!MESSAGE "wce_tpcb - Win32 (WCE emulator) Debug" (based on "Win32 (WCE emulator) Application")
+!MESSAGE "wce_tpcb - Win32 (WCE ARMV4) Release" (based on "Win32 (WCE ARMV4) Application")
+!MESSAGE "wce_tpcb - Win32 (WCE ARMV4) Debug" (based on "Win32 (WCE ARMV4) Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+# PROP ATL_Project 2
+
+!IF "$(CFG)" == "wce_tpcb - Win32 (WCE emulator) Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_EMU"
+# PROP BASE Intermediate_Dir "Release_EMU/wce_tpcb"
+# PROP BASE CPU_ID "{32E52003-403E-442D-BE48-DE10F8C6131D}"
+# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_EMU"
+# PROP Intermediate_Dir "Release_EMU/wce_tpcb"
+# PROP CPU_ID "{32E52003-403E-442D-BE48-DE10F8C6131D}"
+# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
+# PROP Target_Dir ""
+RSC=rc.exe
+# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "NDEBUG" /d "$(CePlatform)" /d "_X86_" /d "x86" /d "_i386_" /r
+# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "NDEBUG" /d "$(CePlatform)" /d "_X86_" /d "x86" /d "_i386_" /r
+CPP=cl.exe
+# ADD BASE CPP /nologo /W3 /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "_i386_" /D UNDER_CE=$(CEVersion) /D "i_386_" /D "UNICODE" /D "_UNICODE" /D "_X86_" /D "x86" /D "NDEBUG" /Gs8192 /D "__NO_SYSTEM_INCLUDES" /GF /O2 /c
+# ADD CPP /nologo /W3 /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "_i386_" /D UNDER_CE=$(CEVersion) /I "." /I ".." /D "_i386_" /D "UNICODE" /D "_UNICODE" /D "_X86_" /D "x86" /D "NDEBUG" /D "__NO_SYSTEM_INCLUDES" /Gs8192 /D "__NO_SYSTEM_INCLUDES" /GF /O2 /c
+MTL=midl.exe
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46s.lib commctrl.lib coredll.lib $(CEx86Corelibc) /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /nodefaultlib:"OLDNAMES.lib" /nodefaultlib:$(CENoDefaultLib) /subsystem:$(CESubsystem) /MACHINE:IX86 /libpath:"Release_EMU"
+# ADD LINK32 libdb46s.lib commctrl.lib coredll.lib $(CEx86Corelibc) /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /nodefaultlib:"OLDNAMES.lib" /nodefaultlib:$(CENoDefaultLib) /subsystem:$(CESubsystem) /MACHINE:IX86 /libpath:"Release_EMU"
+
+!ELSEIF "$(CFG)" == "wce_tpcb - Win32 (WCE emulator) Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_EMU"
+# PROP BASE Intermediate_Dir "Debug_EMU\wce_tpcb"
+# PROP BASE CPU_ID "{32E52003-403E-442D-BE48-DE10F8C6131D}"
+# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_EMU"
+# PROP Intermediate_Dir "Debug_EMU\wce_tpcb"
+# PROP CPU_ID "{32E52003-403E-442D-BE48-DE10F8C6131D}"
+# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+RSC=rc.exe
+# ADD BASE RSC /l 0x409 /d "$(CePlatform)" /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "DEBUG" /d "_X86_" /d "x86" /d "_i386_" /r
+# ADD RSC /l 0x409 /d "$(CePlatform)" /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "DEBUG" /d "_X86_" /d "x86" /d "_i386_" /r
+CPP=cl.exe
+# ADD BASE CPP /nologo /W3 /Zi /Od /D "DEBUG" /D "_i386_" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "i_386_" /D "UNICODE" /D "_UNICODE" /D "_X86_" /D "x86" /Gs8192 /D "__NO_SYSTEM_INCLUDES" /GF /c
+# ADD CPP /nologo /W3 /Zi /Od /I "." /I ".." /D "DEBUG" /D "_i386_" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "i_386_" /D "UNICODE" /D "_UNICODE" /D "_X86_" /D "x86" /D "__NO_SYSTEM_INCLUDES" /Gs8192 /D "__NO_SYSTEM_INCLUDES" /GF /c
+# SUBTRACT CPP
+MTL=midl.exe
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46sd.lib commctrl.lib coredll.lib $(CEx86Corelibc) /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /debug /nodefaultlib:"OLDNAMES.lib" /nodefaultlib:$(CENoDefaultLib) /subsystem:$(CESubsystem) /MACHINE:IX86 /libpath:"Debug_EMU"
+# ADD LINK32 libdb46sd.lib commctrl.lib coredll.lib $(CEx86Corelibc) /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /debug /nodefaultlib:"OLDNAMES.lib" /nodefaultlib:$(CENoDefaultLib) /out:"Debug_EMU/wce_tpcb.exe" /subsystem:$(CESubsystem) /MACHINE:IX86 /libpath:"Debug_EMU"
+
+!ELSEIF "$(CFG)" == "wce_tpcb - Win32 (WCE ARMV4) Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_ARMV4"
+# PROP BASE Intermediate_Dir "Release_ARMV4/wce_tpcb"
+# PROP BASE CPU_ID "{ECBEA43D-CD7B-4852-AD55-D4227B5D624B}"
+# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_ARMV4"
+# PROP Intermediate_Dir "Release_ARMV4/wce_tpcb"
+# PROP CPU_ID "{ECBEA43D-CD7B-4852-AD55-D4227B5D624B}"
+# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
+# PROP Target_Dir ""
+RSC=rc.exe
+# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "NDEBUG" /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /d "ARM" /d "_ARM_" /d "ARMV4" /r
+# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "NDEBUG" /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /d "ARM" /d "_ARM_" /d "ARMV4" /r
+CPP=clarm.exe
+# ADD BASE CPP /nologo /W3 /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "ARM" /D "_ARM_" /D "ARMV4" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "NDEBUG" /O2 /M$(CECrtMT) /D "__NO_SYSTEM_INCLUDES" /c
+# ADD CPP /nologo /W3 /I "." /I ".." /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "ARM" /D "_ARM_" /D "ARMV4" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "NDEBUG" /O2 /M$(CECrtMT) /D "__NO_SYSTEM_INCLUDES" /c
+# SUBTRACT CPP
+MTL=midl.exe
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46s.lib commctrl.lib coredll.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /align:"4096" /MACHINE:ARM /libpath:"Release_ARMV4"
+# ADD LINK32 libdb46s.lib commctrl.lib coredll.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /align:"4096" /MACHINE:ARM /libpath:"Release_ARMV4"
+
+!ELSEIF "$(CFG)" == "wce_tpcb - Win32 (WCE ARMV4) Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_ARMV4"
+# PROP BASE Intermediate_Dir "Debug_ARMV4/wce_tpcb"
+# PROP BASE CPU_ID "{ECBEA43D-CD7B-4852-AD55-D4227B5D624B}"
+# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_ARMV4"
+# PROP Intermediate_Dir "Debug_ARMV4/wce_tpcb"
+# PROP CPU_ID "{ECBEA43D-CD7B-4852-AD55-D4227B5D624B}"
+# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
+# PROP Target_Dir ""
+RSC=rc.exe
+# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "DEBUG" /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /d "ARM" /d "_ARM_" /d "ARMV4" /r
+# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "DEBUG" /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /d "ARM" /d "_ARM_" /d "ARMV4" /r
+CPP=clarm.exe
+# ADD BASE CPP /nologo /W3 /Zi /Od /D "DEBUG" /D "ARM" /D "_ARM_" /D "ARMV4" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "UNICODE" /D "_UNICODE" /M$(CECrtMTDebug) /D "__NO_SYSTEM_INCLUDES" /c
+# ADD CPP /nologo /W3 /Zi /Od /I "." /I ".." /D "DEBUG" /D "ARM" /D "_ARM_" /D "ARMV4" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "UNICODE" /D "_UNICODE" /M$(CECrtMTDebug) /D "__NO_SYSTEM_INCLUDES" /c
+# SUBTRACT CPP
+MTL=midl.exe
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46sd.lib commctrl.lib coredll.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /debug /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /align:"4096" /MACHINE:ARM /libpath:"Debug_ARMV4"
+# ADD LINK32 libdb46sd.lib commctrl.lib coredll.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /debug /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /align:"4096" /MACHINE:ARM /libpath:"Debug_ARMV4"
+
+!ENDIF
+
+# Begin Target
+
+# Name "wce_tpcb - Win32 (WCE emulator) Release"
+# Name "wce_tpcb - Win32 (WCE emulator) Debug"
+# Name "wce_tpcb - Win32 (WCE ARMV4) Release"
+# Name "wce_tpcb - Win32 (WCE ARMV4) Debug"
+
+# Begin Group "Files"
+
+# Begin Source File
+
+SOURCE=..\examples_cxx\wce_tpcb\TpcbExample.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\examples_cxx\wce_tpcb\TpcbUI.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\examples_cxx\wce_tpcb\wce_tpcb.rc
+# End Source File
+
+# End Group
+
+# End Target
+# End Project
diff --git a/db/build_wince/wce_tpcb.vcproj b/db/build_wince/wce_tpcb.vcproj
new file mode 100644
index 000000000..af7b40101
--- /dev/null
+++ b/db/build_wince/wce_tpcb.vcproj
@@ -0,0 +1,552 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="wce_tpcb"
+ ProjectGUID="{F2CE670A-ABAE-414A-9A17-8079AB58613F}"
+ >
+ <Platforms>
+ <Platform
+ Name="Smartphone 2003 (ARMV4)"
+ />
+ <Platform
+ Name="Pocket PC 2003 (ARMV4)"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ OutputDirectory="$(ConfigurationName)_Smartphone2003_ARMV4\wce_tpcb"
+ IntermediateDirectory="$(ConfigurationName)_Smartphone2003_ARMV4\wce_tpcb"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="_DEBUG"
+ MkTypLibCompatible="true"
+ SuppressStartupBanner="true"
+ TargetEnvironment="1"
+ TypeLibraryName="$(ConfigurationName)_Smartphone2003_ARMV4/wce_tpcb.tlb"
+ HeaderFileName=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ ExecutionBucket="7"
+ Optimization="0"
+ AdditionalIncludeDirectories=".,.."
+ PreprocessorDefinitions="DEBUG;ARM;_ARM_;ARMV4;UNDER_CE=$(CEVER);_WIN32_WCE=$(CEVER);$(CePlatform);UNICODE;__NO_SYSTEM_INCLUDES;__NO_SYSTEM_INCLUDES"
+ RuntimeLibrary="1"
+ PrecompiledHeaderFile="$(ConfigurationName)_Smartphone2003_ARMV4/wce_tpcb.pch"
+ AssemblerListingLocation="$(ConfigurationName)_Smartphone2003_ARMV4/"
+ ObjectFile="$(ConfigurationName)_Smartphone2003_ARMV4\wce_tpcb/"
+ ProgramDataBaseFileName="$(ConfigurationName)_Smartphone2003_ARMV4/"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ AdditionalOptions="/r "
+ PreprocessorDefinitions="UNDER_CE=$(CEVER),_WIN32_WCE=$(CEVER),DEBUG,UNICODE,_UNICODE,$(CePlatform),ARM,_ARM_,ARMV4"
+ Culture="1033"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/ALIGN:4096 /subsystem:$(CESubsystem) /MACHINE:ARM "
+ AdditionalDependencies="libdb46sd.lib commctrl.lib coredll.lib secchk.lib ccrtrtti.lib"
+ OutputFile="$(ConfigurationName)_Smartphone2003_ARMV4/wce_tpcb.exe"
+ LinkIncremental="2"
+ SuppressStartupBanner="true"
+ AdditionalLibraryDirectories="$(ConfigurationName)_Smartphone2003_ARMV4"
+ IgnoreDefaultLibraryNames="$(CENoDefaultLib)"
+ GenerateDebugInformation="true"
+ ProgramDatabaseFile="$(ConfigurationName)_Smartphone2003_ARMV4/wce_tpcb.pdb"
+ StackReserveSize="65536"
+ StackCommitSize="4096"
+ EntryPointSymbol="WinMainCRTStartup"
+ BaseAddress="0x00010000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ SuppressStartupBanner="true"
+ OutputFile="$(ConfigurationName)_Smartphone2003_ARMV4/wce_tpcb.bsc"
+ />
+ <Tool
+ Name="VCCodeSignTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ <DeploymentTool
+ ForceDirty="-1"
+ RemoteDirectory=""
+ RegisterOutput="0"
+ AdditionalFiles=""
+ />
+ <DebuggerTool
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ OutputDirectory="$(ConfigurationName)_PocketPC2003_ARMV4\wce_tpcb"
+ IntermediateDirectory="$(ConfigurationName)_PocketPC2003_ARMV4\wce_tpcb"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="_DEBUG"
+ MkTypLibCompatible="true"
+ SuppressStartupBanner="true"
+ TargetEnvironment="1"
+ TypeLibraryName="$(ConfigurationName)_PocketPC2003_ARMV4/wce_tpcb.tlb"
+ HeaderFileName=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ ExecutionBucket="7"
+ Optimization="0"
+ AdditionalIncludeDirectories=".,.."
+ PreprocessorDefinitions="DEBUG;ARM;_ARM_;ARMV4;UNDER_CE=$(CEVER);_WIN32_WCE=$(CEVER);$(CePlatform);UNICODE;__NO_SYSTEM_INCLUDES;__NO_SYSTEM_INCLUDES"
+ RuntimeLibrary="1"
+ PrecompiledHeaderFile="$(ConfigurationName)_PocketPC2003_ARMV4/wce_tpcb.pch"
+ AssemblerListingLocation="$(ConfigurationName)_PocketPC2003_ARMV4/"
+ ObjectFile="$(ConfigurationName)_PocketPC2003_ARMV4\wce_tpcb/"
+ ProgramDataBaseFileName="$(ConfigurationName)_PocketPC2003_ARMV4/"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ AdditionalOptions="/r "
+ PreprocessorDefinitions="UNDER_CE=$(CEVER),_WIN32_WCE=$(CEVER),DEBUG,UNICODE,_UNICODE,$(CePlatform),ARM,_ARM_,ARMV4"
+ Culture="1033"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/ALIGN:4096 /subsystem:$(CESubsystem) /MACHINE:ARM "
+ AdditionalDependencies="libdb46sd.lib commctrl.lib coredll.lib secchk.lib ccrtrtti.lib"
+ OutputFile="$(ConfigurationName)_PocketPC2003_ARMV4/wce_tpcb.exe"
+ LinkIncremental="2"
+ SuppressStartupBanner="true"
+ AdditionalLibraryDirectories="$(ConfigurationName)_PocketPC2003_ARMV4"
+ IgnoreDefaultLibraryNames="$(CENoDefaultLib)"
+ GenerateDebugInformation="true"
+ ProgramDatabaseFile="$(ConfigurationName)_PocketPC2003_ARMV4/wce_tpcb.pdb"
+ StackReserveSize="65536"
+ StackCommitSize="4096"
+ EntryPointSymbol="WinMainCRTStartup"
+ BaseAddress="0x00010000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ SuppressStartupBanner="true"
+ OutputFile="$(ConfigurationName)_PocketPC2003_ARMV4/wce_tpcb.bsc"
+ />
+ <Tool
+ Name="VCCodeSignTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ <DeploymentTool
+ ForceDirty="-1"
+ RemoteDirectory=""
+ RegisterOutput="0"
+ AdditionalFiles=""
+ />
+ <DebuggerTool
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ OutputDirectory="$(ConfigurationName)_Smartphone2003_ARMV4\wce_tpcb"
+ IntermediateDirectory="$(ConfigurationName)_Smartphone2003_ARMV4\wce_tpcb"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="NDEBUG"
+ MkTypLibCompatible="true"
+ SuppressStartupBanner="true"
+ TargetEnvironment="1"
+ TypeLibraryName="$(ConfigurationName)_Smartphone2003_ARMV4/wce_tpcb.tlb"
+ HeaderFileName=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ ExecutionBucket="7"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories=".,.."
+ PreprocessorDefinitions="_WIN32_WCE=$(CEVER);$(CePlatform);ARM;_ARM_;ARMV4;UNDER_CE=$(CEVER);UNICODE;NDEBUG;__NO_SYSTEM_INCLUDES;__NO_SYSTEM_INCLUDES"
+ StringPooling="true"
+ RuntimeLibrary="0"
+ EnableFunctionLevelLinking="true"
+ PrecompiledHeaderFile="$(ConfigurationName)_Smartphone2003_ARMV4/wce_tpcb.pch"
+ AssemblerListingLocation="$(ConfigurationName)_Smartphone2003_ARMV4/"
+ ObjectFile="$(ConfigurationName)_Smartphone2003_ARMV4\wce_tpcb/"
+ ProgramDataBaseFileName="$(ConfigurationName)_Smartphone2003_ARMV4/"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ AdditionalOptions="/r "
+ PreprocessorDefinitions="UNDER_CE=$(CEVER),_WIN32_WCE=$(CEVER),NDEBUG,UNICODE,_UNICODE,$(CePlatform),ARM,_ARM_,ARMV4"
+ Culture="1033"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/ALIGN:4096 /subsystem:$(CESubsystem) /MACHINE:ARM "
+ AdditionalDependencies="libdb46s.lib commctrl.lib coredll.lib secchk.lib ccrtrtti.lib"
+ OutputFile="$(ConfigurationName)_Smartphone2003_ARMV4/wce_tpcb.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="true"
+ AdditionalLibraryDirectories="$(ConfigurationName)_Smartphone2003_ARMV4"
+ IgnoreDefaultLibraryNames="$(CENoDefaultLib)"
+ ProgramDatabaseFile="$(ConfigurationName)_Smartphone2003_ARMV4/wce_tpcb.pdb"
+ StackReserveSize="65536"
+ StackCommitSize="4096"
+ EntryPointSymbol="WinMainCRTStartup"
+ BaseAddress="0x00010000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ SuppressStartupBanner="true"
+ OutputFile="$(ConfigurationName)_Smartphone2003_ARMV4/wce_tpcb.bsc"
+ />
+ <Tool
+ Name="VCCodeSignTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ <DeploymentTool
+ ForceDirty="-1"
+ RemoteDirectory=""
+ RegisterOutput="0"
+ AdditionalFiles=""
+ />
+ <DebuggerTool
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ OutputDirectory="$(ConfigurationName)_PocketPC2003_ARMV4\wce_tpcb"
+ IntermediateDirectory="$(ConfigurationName)_PocketPC2003_ARMV4\wce_tpcb"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="NDEBUG"
+ MkTypLibCompatible="true"
+ SuppressStartupBanner="true"
+ TargetEnvironment="1"
+ TypeLibraryName="$(ConfigurationName)_PocketPC2003_ARMV4/wce_tpcb.tlb"
+ HeaderFileName=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ ExecutionBucket="7"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories=".,.."
+ PreprocessorDefinitions="_WIN32_WCE=$(CEVER);$(CePlatform);ARM;_ARM_;ARMV4;UNDER_CE=$(CEVER);UNICODE;NDEBUG;__NO_SYSTEM_INCLUDES;__NO_SYSTEM_INCLUDES"
+ StringPooling="true"
+ RuntimeLibrary="0"
+ EnableFunctionLevelLinking="true"
+ PrecompiledHeaderFile="$(ConfigurationName)_PocketPC2003_ARMV4/wce_tpcb.pch"
+ AssemblerListingLocation="$(ConfigurationName)_PocketPC2003_ARMV4/"
+ ObjectFile="$(ConfigurationName)_PocketPC2003_ARMV4\wce_tpcb/"
+ ProgramDataBaseFileName="$(ConfigurationName)_PocketPC2003_ARMV4/"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ AdditionalOptions="/r "
+ PreprocessorDefinitions="UNDER_CE=$(CEVER),_WIN32_WCE=$(CEVER),NDEBUG,UNICODE,_UNICODE,$(CePlatform),ARM,_ARM_,ARMV4"
+ Culture="1033"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/ALIGN:4096 /subsystem:$(CESubsystem) /MACHINE:ARM "
+ AdditionalDependencies="libdb46s.lib commctrl.lib coredll.lib secchk.lib ccrtrtti.lib"
+ OutputFile="$(ConfigurationName)_PocketPC2003_ARMV4/wce_tpcb.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="true"
+ AdditionalLibraryDirectories="$(ConfigurationName)_PocketPC2003_ARMV4"
+ IgnoreDefaultLibraryNames="$(CENoDefaultLib)"
+ ProgramDatabaseFile="$(ConfigurationName)_PocketPC2003_ARMV4/wce_tpcb.pdb"
+ StackReserveSize="65536"
+ StackCommitSize="4096"
+ EntryPointSymbol="WinMainCRTStartup"
+ BaseAddress="0x00010000"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ SuppressStartupBanner="true"
+ OutputFile="$(ConfigurationName)_PocketPC2003_ARMV4/wce_tpcb.bsc"
+ />
+ <Tool
+ Name="VCCodeSignTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ <DeploymentTool
+ ForceDirty="-1"
+ RemoteDirectory=""
+ RegisterOutput="0"
+ AdditionalFiles=""
+ />
+ <DebuggerTool
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Files"
+ >
+ <File
+ RelativePath="..\examples_cxx\wce_tpcb\TpcbExample.cpp"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\examples_cxx\wce_tpcb\TpcbUI.cpp"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\examples_cxx\wce_tpcb\wce_tpcb.rc"
+ >
+ <FileConfiguration
+ Name="Release|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCResourceCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCResourceCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Smartphone 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCResourceCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Pocket PC 2003 (ARMV4)"
+ >
+ <Tool
+ Name="VCResourceCompilerTool"
+ AdditionalIncludeDirectories=""
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/db/build_windows/Berkeley_DB.dsw b/db/build_windows/Berkeley_DB.dsw
index 0f2c7777d..ee3b06b83 100644
--- a/db/build_windows/Berkeley_DB.dsw
+++ b/db/build_windows/Berkeley_DB.dsw
@@ -159,6 +159,21 @@ Package=<4>
###############################################################################
+Project: "db_codegen"=.\db_codegen.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name db_dll
+ End Project Dependency
+}}}
+
+###############################################################################
+
Project: "db_deadlock"=.\db_deadlock.dsp - Package Owner=<4>
Package=<5>
diff --git a/db/build_windows/app_dsp.src b/db/build_windows/app_dsp.src
index 0ae7afaa9..0a7a57951 100644
--- a/db/build_windows/app_dsp.src
+++ b/db/build_windows/app_dsp.src
@@ -4,7 +4,7 @@
# TARGTYPE "Win32 (x86) Console Application" 0x0103
-CFG=@project_name@ - Win32 Debug
+CFG=@project_name@ - Win32 Debug x86
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
@@ -13,18 +13,22 @@ CFG=@project_name@ - Win32 Debug
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "@project_name@.mak" CFG="@project_name@ - Win32 Debug"
+!MESSAGE NMAKE /f "@project_name@.mak" CFG="@project_name@ - Win32 Debug x86"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "@project_name@ - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "@project_name@ - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "@project_name@ - Win32 ASCII Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "@project_name@ - Win32 ASCII Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "@project_name@ - Win32 Release x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "@project_name@ - Win32 Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "@project_name@ - Win32 ASCII Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "@project_name@ - Win32 ASCII Release x86" (based on "Win32 (x86) Console Application")
!MESSAGE "@project_name@ - x64 Debug AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "@project_name@ - x64 Release AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "@project_name@ - x64 Debug IA64" (based on "Win32 (x86) Console Application")
!MESSAGE "@project_name@ - x64 Release IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "@project_name@ - Win32 Debug AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "@project_name@ - Win32 Release AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "@project_name@ - Win32 Debug IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "@project_name@ - Win32 Release IA64" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
@@ -34,7 +38,7 @@ CFG=@project_name@ - Win32 Debug
CPP=cl.exe
RSC=rc.exe
-!IF "$(CFG)" == "@project_name@ - Win32 Release"
+!IF "$(CFG)" == "@project_name@ - Win32 Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -59,7 +63,7 @@ LINK32=link.exe
# ADD LINK32 libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@.lib @release_libs@ kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"@lib_rel_dest@"
@POST_BUILD@
-!ELSEIF "$(CFG)" == "@project_name@ - Win32 Debug"
+!ELSEIF "$(CFG)" == "@project_name@ - Win32 Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -84,7 +88,7 @@ LINK32=link.exe
# ADD LINK32 libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@d.lib @debug_libs@ kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"@lib_debug_dest@"
@POST_BUILD@
-!ELSEIF "$(CFG)" == "@project_name@ - Win32 ASCII Debug"
+!ELSEIF "$(CFG)" == "@project_name@ - Win32 ASCII Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -110,7 +114,7 @@ LINK32=link.exe
# ADD LINK32 libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@d.lib @debug_libs@ kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"@lib_debug_dest@_ASCII"
@POST_BUILD@
-!ELSEIF "$(CFG)" == "@project_name@ - Win32 ASCII Release"
+!ELSEIF "$(CFG)" == "@project_name@ - Win32 ASCII Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -240,18 +244,126 @@ LINK32=link.exe
# ADD LINK32 libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@.lib @release_libs@ bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"@lib_rel_dest@_IA64"
@POST_BUILD@
+!ELSEIF "$(CFG)" == "@project_name@ - Win32 Debug AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "@bin_debug_dest@_AMD64"
+# PROP BASE Intermediate_Dir "Debug_AMD64/@project_name@"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "@bin_debug_dest@_AMD64"
+# PROP Intermediate_Dir "Debug_AMD64/@project_name@"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" @extra_cppflags@ /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" @extra_cppflags@ /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@d.lib @debug_libs@ bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@d.lib @debug_libs@ bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"@lib_debug_dest@_AMD64"
+@POST_BUILD@
+
+!ELSEIF "$(CFG)" == "@project_name@ - Win32 Release AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "@bin_rel_dest@_AMD64"
+# PROP BASE Intermediate_Dir "Release_AMD64/@project_name@"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "@bin_rel_dest@_AMD64"
+# PROP Intermediate_Dir "Release_AMD64/@project_name@"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" @extra_cppflags@ /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" @extra_cppflags@ /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@.lib @release_libs@ bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@.lib @release_libs@ bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"@lib_rel_dest@_AMD64"
+@POST_BUILD@
+
+!ELSEIF "$(CFG)" == "@project_name@ - Win32 Debug IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "@bin_debug_dest@_IA64"
+# PROP BASE Intermediate_Dir "Debug_IA64/@project_name@"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "@bin_debug_dest@_IA64"
+# PROP Intermediate_Dir "Debug_IA64/@project_name@"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" @extra_cppflags@ /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" @extra_cppflags@ /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@d.lib @debug_libs@ bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@d.lib @debug_libs@ bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"@lib_debug_dest@_IA64"
+@POST_BUILD@
+
+!ELSEIF "$(CFG)" == "@project_name@ - Win32 Release IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "@bin_rel_dest@_IA64"
+# PROP BASE Intermediate_Dir "Release_IA64/@project_name@"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "@bin_rel_dest@_IA64"
+# PROP Intermediate_Dir "Release_IA64/@project_name@"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" @extra_cppflags@ /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" @extra_cppflags@ /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@.lib @release_libs@ bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@.lib @release_libs@ bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"@lib_rel_dest@_IA64"
+@POST_BUILD@
+
!ENDIF
# Begin Target
-# Name "@project_name@ - Win32 Release"
-# Name "@project_name@ - Win32 Debug"
-# Name "@project_name@ - Win32 ASCII Debug"
-# Name "@project_name@ - Win32 ASCII Release"
+# Name "@project_name@ - Win32 Release x86"
+# Name "@project_name@ - Win32 Debug x86"
+# Name "@project_name@ - Win32 ASCII Debug x86"
+# Name "@project_name@ - Win32 ASCII Release x86"
# Name "@project_name@ - x64 Debug AMD64"
# Name "@project_name@ - x64 Release AMD64"
# Name "@project_name@ - x64 Debug IA64"
# Name "@project_name@ - x64 Release IA64"
+# Name "@project_name@ - Win32 Debug AMD64"
+# Name "@project_name@ - Win32 Release AMD64"
+# Name "@project_name@ - Win32 Debug IA64"
+# Name "@project_name@ - Win32 Release IA64"
@SOURCE_FILES@
# Begin Source File
diff --git a/db/build_windows/build_all.dsp b/db/build_windows/build_all.dsp
index fdd922c67..e09dc873f 100644
--- a/db/build_windows/build_all.dsp
+++ b/db/build_windows/build_all.dsp
@@ -4,7 +4,7 @@
# TARGTYPE "Win32 (x86) External Target" 0x0106
-CFG=build_all - Win32 Debug
+CFG=build_all - Win32 Debug x86
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
@@ -13,18 +13,22 @@ CFG=build_all - Win32 Debug
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "build_all.mak" CFG="build_all - Win32 Debug"
+!MESSAGE NMAKE /f "build_all.mak" CFG="build_all - Win32 Debug x86"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "build_all - Win32 Release" (based on "Win32 (x86) External Target")
-!MESSAGE "build_all - Win32 Debug" (based on "Win32 (x86) External Target")
-!MESSAGE "build_all - Win32 ASCII Debug" (based on "Win32 (x86) External Target")
-!MESSAGE "build_all - Win32 ASCII Release" (based on "Win32 (x86) External Target")
+!MESSAGE "build_all - Win32 Release x86" (based on "Win32 (x86) External Target")
+!MESSAGE "build_all - Win32 Debug x86" (based on "Win32 (x86) External Target")
+!MESSAGE "build_all - Win32 ASCII Debug x86" (based on "Win32 (x86) External Target")
+!MESSAGE "build_all - Win32 ASCII Release x86" (based on "Win32 (x86) External Target")
!MESSAGE "build_all - x64 Debug AMD64" (based on "Win32 (x86) External Target")
!MESSAGE "build_all - x64 Release AMD64" (based on "Win32 (x86) External Target")
!MESSAGE "build_all - x64 Debug IA64" (based on "Win32 (x86) External Target")
!MESSAGE "build_all - x64 Release IA64" (based on "Win32 (x86) External Target")
+!MESSAGE "build_all - Win32 Debug AMD64" (based on "Win32 (x86) External Target")
+!MESSAGE "build_all - Win32 Release AMD64" (based on "Win32 (x86) External Target")
+!MESSAGE "build_all - Win32 Debug IA64" (based on "Win32 (x86) External Target")
+!MESSAGE "build_all - Win32 Release IA64" (based on "Win32 (x86) External Target")
!MESSAGE
# Begin Project
@@ -32,7 +36,7 @@ CFG=build_all - Win32 Debug
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
-!IF "$(CFG)" == "build_all - Win32 Release"
+!IF "$(CFG)" == "build_all - Win32 Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -46,7 +50,7 @@ CFG=build_all - Win32 Debug
# PROP Cmd_Line "echo DB Release version built."
# PROP Target_Dir ""
-!ELSEIF "$(CFG)" == "build_all - Win32 Debug"
+!ELSEIF "$(CFG)" == "build_all - Win32 Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -60,7 +64,7 @@ CFG=build_all - Win32 Debug
# PROP Cmd_Line "echo DB Debug version built."
# PROP Target_Dir ""
-!ELSEIF "$(CFG)" == "build_all - Win32 ASCII Debug"
+!ELSEIF "$(CFG)" == "build_all - Win32 ASCII Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -75,7 +79,7 @@ CFG=build_all - Win32 Debug
# PROP Cmd_Line "echo DB Debug version built."
# PROP Target_Dir ""
-!ELSEIF "$(CFG)" == "build_all - Win32 ASCII Release"
+!ELSEIF "$(CFG)" == "build_all - Win32 ASCII Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -150,34 +154,95 @@ CFG=build_all - Win32 Debug
# PROP Cmd_Line "echo DB Release version built."
# PROP Target_Dir ""
+!ELSEIF "$(CFG)" == "build_all - Win32 Debug AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_AMD64"
+# PROP BASE Intermediate_Dir "Debug_AMD64/build_all"
+# PROP BASE Cmd_Line "echo DB Debug version built."
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_AMD64"
+# PROP Intermediate_Dir "Debug_AMD64/build_all"
+# PROP Cmd_Line "echo DB Debug version built."
+# PROP Target_Dir ""
+
+!ELSEIF "$(CFG)" == "build_all - Win32 Release AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_AMD64"
+# PROP BASE Intermediate_Dir "Release_AMD64/build_all"
+# PROP BASE Cmd_Line "echo DB Release version built."
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_AMD64"
+# PROP Intermediate_Dir "Release_AMD64/build_all"
+# PROP Cmd_Line "echo DB Release version built."
+# PROP Target_Dir ""
+
+!ELSEIF "$(CFG)" == "build_all - Win32 Debug IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_IA64"
+# PROP BASE Intermediate_Dir "Debug_IA64"
+# PROP BASE Cmd_Line "echo DB Debug version built."
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_IA64"
+# PROP Intermediate_Dir "Debug_IA64"
+# PROP Cmd_Line "echo DB Debug version built."
+# PROP Target_Dir ""
+
+!ELSEIF "$(CFG)" == "build_all - Win32 Release IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_IA64"
+# PROP BASE Intermediate_Dir "Release_IA64"
+# PROP BASE Cmd_Line "echo DB Release version built."
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_IA64"
+# PROP Intermediate_Dir "Release_IA64"
+# PROP Cmd_Line "echo DB Release version built."
+# PROP Target_Dir ""
+
!ENDIF
# Begin Target
-# Name "build_all - Win32 Release"
-# Name "build_all - Win32 Debug"
-# Name "build_all - Win32 ASCII Debug"
-# Name "build_all - Win32 ASCII Release"
+# Name "build_all - Win32 Release x86"
+# Name "build_all - Win32 Debug x86"
+# Name "build_all - Win32 ASCII Debug x86"
+# Name "build_all - Win32 ASCII Release x86"
# Name "build_all - x64 Debug AMD64"
# Name "build_all - x64 Release AMD64"
# Name "build_all - x64 Debug IA64"
# Name "build_all - x64 Release IA64"
-
-!IF "$(CFG)" == "build_all - Win32 Release"
-
-!ELSEIF "$(CFG)" == "build_all - Win32 Debug"
-
-!ELSEIF "$(CFG)" == "build_all - Win32 ASCII Debug"
-
-!ELSEIF "$(CFG)" == "build_all - Win32 ASCII Release"
-
+# Name "build_all - Win32 Debug AMD64"
+# Name "build_all - Win32 Release AMD64"
+# Name "build_all - Win32 Debug IA64"
+# Name "build_all - Win32 Release IA64"
+
+!IF "$(CFG)" == "build_all - Win32 Release x86"
+!ELSEIF "$(CFG)" == "build_all - Win32 Debug x86"
+!ELSEIF "$(CFG)" == "build_all - Win32 ASCII Debug x86"
+!ELSEIF "$(CFG)" == "build_all - Win32 ASCII Release x86"
!ELSEIF "$(CFG)" == "build_all - x64 Debug AMD64"
-
!ELSEIF "$(CFG)" == "build_all - x64 Release AMD64"
-
!ELSEIF "$(CFG)" == "build_all - x64 Debug IA64"
-
!ELSEIF "$(CFG)" == "build_all - x64 Release IA64"
+!ELSEIF "$(CFG)" == "build_all - Win32 Debug AMD64"
+!ELSEIF "$(CFG)" == "build_all - Win32 Release AMD64"
+!ELSEIF "$(CFG)" == "build_all - Win32 Debug IA64"
+!ELSEIF "$(CFG)" == "build_all - Win32 Release IA64"
!ENDIF
diff --git a/db/build_windows/clib_port.h b/db/build_windows/clib_port.h
index cfefbb37d..54ad58aa3 100644
--- a/db/build_windows/clib_port.h
+++ b/db/build_windows/clib_port.h
@@ -1,3 +1,78 @@
+/* DO NOT EDIT: automatically built from dist/clib_port.in. */
+/*
+ * Minimum/maximum values for various types.
+ */
+#ifndef UINT16_MAX /* Maximum 16-bit unsigned. */
+#define UINT16_MAX 65535
+#endif
+#ifndef UINT32_MAX /* Maximum 32-bit unsigned. */
+#define UINT32_MAX 4294967295U
+#endif
+
+#ifndef INT_MAX
+#if SIZEOF_INT == 4
+#define INT_MAX 2147483647
+#elif SIZEOF_INT == 8
+#define INT_MAX 9223372036854775807
+#endif
+#endif
+
+#ifndef INT_MIN /* minimum (signed) int value */
+#define INT_MIN (-INT_MAX-1)
+#endif
+
+#ifndef UINT_MAX /* maximum (signed) int value */
+#if SIZEOF_INT == 4
+#define UINT_MAX 4294967295U
+#elif SIZEOF_INT == 8
+#define UINT_MAX 18446744073709551615U
+#endif
+#endif
+
+#ifndef LONG_MAX /* maximum (signed) long value */
+#if SIZEOF_LONG == 4
+#define LONG_MAX 2147483647
+#elif SIZEOF_LONG == 8
+#define LONG_MAX 9223372036854775807L
+#endif
+#endif
+
+#ifndef LONG_MIN /* minimum (signed) long value */
+#define LONG_MIN (-LONG_MAX-1)
+#endif
+
+#ifndef ULONG_MAX /* maximum (unsigned) long value */
+#if SIZEOF_LONG == 4
+#define ULONG_MAX 4294967295U
+#elif SIZEOF_LONG == 8
+#define ULONG_MAX 18446744073709551615UL
+#endif
+#endif
+
+#if defined(HAVE_64BIT_TYPES)
+/*
+ * Override the system's 64-bit min/max constants. AIX's 32-bit compiler can
+ * handle 64-bit values, but the system's constants don't include the LL/ULL
+ * suffix, and so can't be compiled using the 32-bit compiler.
+ */
+#undef INT64_MAX
+#undef INT64_MIN
+#undef UINT64_MAX
+
+#ifdef DB_WIN32
+#define INT64_MAX _I64_MAX
+#define INT64_MIN _I64_MIN
+#define UINT64_MAX _UI64_MAX
+#else
+#define INT64_MAX 9223372036854775807LL
+#define INT64_MIN (-INT64_MAX-1)
+#define UINT64_MAX 18446744073709551615ULL
+#endif /* DB_WIN32 */
+
+#define INT64_FMT "%I64d"
+#define UINT64_FMT "%I64u"
+#endif /* HAVE_64BIT_TYPES */
+
/*
* Exit success/failure macros.
*/
@@ -17,6 +92,21 @@
#ifndef HAVE_ATOL
#define atol __db_Catol
#endif
+#ifndef HAVE_FCLOSE
+#define fclose __db_Cfclose
+#endif
+#ifndef HAVE_FGETC
+#define fgetc __db_Cfgetc
+#endif
+#ifndef HAVE_FGETS
+#define fgets __db_Cfgets
+#endif
+#ifndef HAVE_FOPEN
+#define fopen __db_Cfopen
+#endif
+#ifndef HAVE_FWRITE
+#define fwrite __db_Cfwrite
+#endif
#ifndef HAVE_GETADDRINFO
#define freeaddrinfo(a) __db_Cfreeaddrinfo(a)
#define getaddrinfo(a, b, c, d) __db_Cgetaddrinfo(a, b, c, d)
@@ -32,9 +122,21 @@
#define optopt __db_Coptopt
#define optreset __db_Coptreset
#endif
+#ifndef HAVE_ISALPHA
+#define isalpha __db_Cisalpha
+#endif
+#ifndef HAVE_ISDIGIT
+#define isdigit __db_Cisdigit
+#endif
+#ifndef HAVE_ISPRINT
+#define isprint __db_Cisprint
+#endif
#ifndef HAVE_ISSPACE
#define isspace __db_Cisspace
#endif
+#ifndef HAVE_LOCALTIME
+#define localtime __db_Clocaltime
+#endif
#ifndef HAVE_MEMCMP
#define memcmp __db_Cmemcmp
#endif
@@ -48,6 +150,9 @@
#define printf __db_Cprintf
#define fprintf __db_Cfprintf
#endif
+#ifndef HAVE_QSORT
+#define qsort __db_Cqsort
+#endif
#ifndef HAVE_RAISE
#define raise __db_Craise
#endif
@@ -92,6 +197,9 @@
#ifndef HAVE_STRTOUL
#define strtoul __db_Cstrtoul
#endif
+#ifndef HAVE_TIME
+#define time __db_Ctime
+#endif
#ifndef HAVE_VSNPRINTF
#define vsnprintf __db_Cvsnprintf
#endif
diff --git a/db/build_windows/db.h b/db/build_windows/db.h
index ab0fdf058..f9c4d9e20 100644
--- a/db/build_windows/db.h
+++ b/db/build_windows/db.h
@@ -2,10 +2,9 @@
/*
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: db.in,v 12.108 2006/09/13 14:53:37 mjc Exp $
+ * $Id: db.in,v 12.158 2007/06/28 14:23:35 mjc Exp $
*
* db.h include file layout:
* General.
@@ -22,7 +21,7 @@
#ifndef _DB_H_
#define _DB_H_
-#ifndef __NO_SYSTEM_INCLUDES
+#ifndef __NO_SYSTEM_INCLUDES
#include <sys/types.h>
#include <stddef.h>
#include <stdio.h>
@@ -59,9 +58,9 @@ extern "C" {
* Berkeley DB version information.
*/
#define DB_VERSION_MAJOR 4
-#define DB_VERSION_MINOR 5
-#define DB_VERSION_PATCH 20
-#define DB_VERSION_STRING "Berkeley DB 4.5.20: (September 20, 2006)"
+#define DB_VERSION_MINOR 6
+#define DB_VERSION_PATCH 18
+#define DB_VERSION_STRING "Berkeley DB 4.6.18: (July 17, 2007)"
/*
* !!!
@@ -89,17 +88,14 @@ typedef unsigned __int64 u_int64_t;
#ifndef _WINSOCKAPI_
typedef unsigned char u_char;
-typedef unsigned short u_short;
typedef unsigned int u_int;
typedef unsigned long u_long;
#endif
-#ifdef _WIN64
-typedef int64_t ssize_t;
-#else
-typedef int32_t ssize_t;
-#endif
+typedef unsigned short u_short;
/*
+ * Missing ANSI types.
+ *
* uintmax_t --
* Largest unsigned type, used to align structures in memory. We don't store
* floating point types in structures, so integral types should be sufficient
@@ -123,13 +119,25 @@ typedef u_int32_t uintptr_t;
#endif
/*
+ * Windows defines off_t to long (i.e., 32 bits). We need to pass 64-bit
+ * file offsets, so we declare our own.
+ */
+#define off_t __db_off_t
+typedef int64_t off_t;
+typedef int pid_t;
+#ifdef _WIN64
+typedef int64_t ssize_t;
+#else
+typedef int32_t ssize_t;
+#endif
+
+/*
* Sequences are only available on machines with 64-bit integral types.
*/
typedef int64_t db_seq_t;
/* Thread and process identification. */
typedef u_int32_t db_threadid_t;
-typedef int pid_t;
/* Basic types that are exported or quasi-exported. */
typedef u_int32_t db_pgno_t; /* Page number type. */
@@ -163,7 +171,9 @@ struct __db_env; typedef struct __db_env DB_ENV;
struct __db_h_stat; typedef struct __db_h_stat DB_HASH_STAT;
struct __db_ilock; typedef struct __db_ilock DB_LOCK_ILOCK;
struct __db_lock_stat; typedef struct __db_lock_stat DB_LOCK_STAT;
+struct __db_lock_hstat; typedef struct __db_lock_hstat DB_LOCK_HSTAT;
struct __db_lock_u; typedef struct __db_lock_u DB_LOCK;
+struct __db_locker; typedef struct __db_locker DB_LOCKER;
struct __db_lockreq; typedef struct __db_lockreq DB_LOCKREQ;
struct __db_locktab; typedef struct __db_locktab DB_LOCKTAB;
struct __db_log; typedef struct __db_log DB_LOG;
@@ -183,6 +193,8 @@ struct __db_rep; typedef struct __db_rep DB_REP;
struct __db_rep_stat; typedef struct __db_rep_stat DB_REP_STAT;
struct __db_repmgr_site; \
typedef struct __db_repmgr_site DB_REPMGR_SITE;
+struct __db_repmgr_stat; \
+ typedef struct __db_repmgr_stat DB_REPMGR_STAT;
struct __db_seq_record; typedef struct __db_seq_record DB_SEQ_RECORD;
struct __db_seq_stat; typedef struct __db_seq_stat DB_SEQUENCE_STAT;
struct __db_sequence; typedef struct __db_sequence DB_SEQUENCE;
@@ -209,13 +221,14 @@ struct __db_dbt {
void *app_data;
#define DB_DBT_APPMALLOC 0x001 /* Callback allocated memory. */
-#define DB_DBT_ISSET 0x002 /* Lower level calls set value. */
-#define DB_DBT_MALLOC 0x004 /* Return in malloc'd memory. */
-#define DB_DBT_PARTIAL 0x008 /* Partial put/get. */
-#define DB_DBT_REALLOC 0x010 /* Return in realloc'd memory. */
-#define DB_DBT_USERCOPY 0x020 /* Use the user-supplied callback. */
-#define DB_DBT_USERMEM 0x040 /* Return in user's memory. */
-#define DB_DBT_DUPOK 0x080 /* Insert if duplicate. */
+#define DB_DBT_DUPOK 0x002 /* Insert if duplicate. */
+#define DB_DBT_ISSET 0x004 /* Lower level calls set value. */
+#define DB_DBT_MALLOC 0x008 /* Return in malloc'd memory. */
+#define DB_DBT_MULTIPLE 0x010 /* References multiple records. */
+#define DB_DBT_PARTIAL 0x020 /* Partial put/get. */
+#define DB_DBT_REALLOC 0x040 /* Return in realloc'd memory. */
+#define DB_DBT_USERCOPY 0x080 /* Use the user-supplied callback. */
+#define DB_DBT_USERMEM 0x100 /* Return in user's memory. */
u_int32_t flags;
};
@@ -234,10 +247,10 @@ struct __db_dbt {
#define DB_THREAD 0x0000080 /* Applications are threaded. */
#define DB_TRUNCATE 0x0000100 /* Discard existing DB (O_TRUNC). */
#define DB_TXN_NOSYNC 0x0000200 /* Do not sync log on commit. */
-#define DB_TXN_NOT_DURABLE 0x0000400 /* Do not log changes. */
-#define DB_TXN_WRITE_NOSYNC 0x0000800 /* Write the log but don't sync. */
-#define DB_USE_ENVIRON 0x0001000 /* Use the environment. */
-#define DB_USE_ENVIRON_ROOT 0x0002000 /* Use the environment if root. */
+#define DB_TXN_NOWAIT 0x0000400 /* Do not wait for locks. */
+#define DB_TXN_NOT_DURABLE 0x0000800 /* Do not log changes. */
+#define DB_TXN_WRITE_NOSYNC 0x0001000 /* Write the log but don't sync. */
+#define DB_SPARE_FLAG 0x0002000 /* Spare. */
/*
* Common flags --
@@ -249,9 +262,9 @@ struct __db_dbt {
* (Note: until the 4.3 release, legal to DB->associate, DB->del,
* DB->put, DB->remove, DB->rename and DB->truncate, and others.)
* DB_READ_COMMITTED:
- * DB->cursor, DB->get, DB->join, DBcursor->c_get, DB_ENV->txn_begin
+ * DB->cursor, DB->get, DB->join, DBcursor->get, DB_ENV->txn_begin
* DB_READ_UNCOMMITTED:
- * DB->cursor, DB->get, DB->join, DB->open, DBcursor->c_get,
+ * DB->cursor, DB->get, DB->join, DB->open, DBcursor->get,
* DB_ENV->txn_begin
* DB_TXN_SNAPSHOT:
* DB_ENV->set_flags, DB_ENV->txn_begin, DB->cursor
@@ -261,6 +274,7 @@ struct __db_dbt {
* without also changing the masks for the flags that can be OR'd into DB
* access method and cursor operation values.
*/
+#define DB_IGNORE_LEASE 0x01000000/* Ignore leases. */
#define DB_AUTO_COMMIT 0x02000000/* Implied transaction. */
#define DB_READ_COMMITTED 0x04000000/* Degree 2 isolation. */
@@ -287,19 +301,24 @@ struct __db_dbt {
#define DB_XA_CREATE 0x0000002 /* Open in an XA environment. */
/*
- * Flags private to DB_ENV->open.
+ * Flags shared by DB_ENV->remove and DB_ENV->open.
* Shared flags up to 0x0002000 */
-#define DB_INIT_CDB 0x0004000 /* Concurrent Access Methods. */
-#define DB_INIT_LOCK 0x0008000 /* Initialize locking. */
-#define DB_INIT_LOG 0x0010000 /* Initialize logging. */
-#define DB_INIT_MPOOL 0x0020000 /* Initialize mpool. */
-#define DB_INIT_REP 0x0040000 /* Initialize replication. */
-#define DB_INIT_TXN 0x0080000 /* Initialize transactions. */
-#define DB_LOCKDOWN 0x0100000 /* Lock memory into physical core. */
-#define DB_PRIVATE 0x0200000 /* DB_ENV is process local. */
-#define DB_RECOVER_FATAL 0x0400000 /* Run catastrophic recovery. */
-#define DB_REGISTER 0x0800000 /* Multi-process registry. */
-#define DB_SYSTEM_MEM 0x1000000 /* Use system-backed memory. */
+#define DB_USE_ENVIRON 0x0004000 /* Use the environment. */
+#define DB_USE_ENVIRON_ROOT 0x0008000 /* Use the environment if root. */
+/*
+ * Flags private to DB_ENV->open.
+ */
+#define DB_INIT_CDB 0x0010000 /* Concurrent Access Methods. */
+#define DB_INIT_LOCK 0x0020000 /* Initialize locking. */
+#define DB_INIT_LOG 0x0040000 /* Initialize logging. */
+#define DB_INIT_MPOOL 0x0080000 /* Initialize mpool. */
+#define DB_INIT_REP 0x0100000 /* Initialize replication. */
+#define DB_INIT_TXN 0x0200000 /* Initialize transactions. */
+#define DB_LOCKDOWN 0x0400000 /* Lock memory into physical core. */
+#define DB_PRIVATE 0x0800000 /* DB_ENV is process local. */
+#define DB_RECOVER_FATAL 0x1000000 /* Run catastrophic recovery. */
+#define DB_REGISTER 0x2000000 /* Multi-process registry. */
+#define DB_SYSTEM_MEM 0x4000000 /* Use system-backed memory. */
#define DB_JOINENV 0x0 /* Compatibility. */
@@ -321,8 +340,13 @@ struct __db_dbt {
/*
* Flags private to DB_ENV->txn_begin.
* Shared flags up to 0x0002000 */
-#define DB_TXN_NOWAIT 0x0004000 /* Do not wait for locks in this TXN. */
-#define DB_TXN_SYNC 0x0008000 /* Always sync log on commit. */
+#define DB_TXN_SYNC 0x0004000 /* Always sync log on commit. */
+#define DB_TXN_WAIT 0x0008000 /* Always wait for locks in this TXN. */
+
+/*
+ * Flags private to DB_ENV->txn_checkpoint.
+ * Shared flags up to 0x0002000 */
+#define DB_CKP_INTERNAL 0x0004000 /* Internally generated checkpoint. */
/*
* Flags private to DB_ENV->set_encrypt.
@@ -455,9 +479,11 @@ struct __db_mutex_stat {
u_int32_t st_mutex_inuse_max; /* Maximum mutexes ever in use */
/* The following fields are filled-in from other places. */
+#ifndef __TEST_DB_NO_STATISTICS
u_int32_t st_region_wait; /* Region lock granted after wait. */
u_int32_t st_region_nowait; /* Region lock granted without wait. */
roff_t st_regsize; /* Region size. */
+#endif
};
/* This is the length of the buffer passed to DB_ENV->thread_id_string() */
@@ -493,6 +519,11 @@ struct __db_mutex_stat {
#define DB_LOCK_SWITCH 0x010 /* Internal: switch existing lock. */
#define DB_LOCK_UPGRADE 0x020 /* Internal: upgrade existing lock. */
+/* Flag values for DbEnv.set_timeout. */
+#define DB_SET_LOCK_TIMEOUT 1 /* Set lock timeout */
+#define DB_SET_TXN_NOW 2 /* Timeout lock now (internal) */
+#define DB_SET_TXN_TIMEOUT 3 /* Set transaction timeout */
+
/*
* Simple R/W lock modes and for multi-granularity intention locking.
*
@@ -552,9 +583,10 @@ struct __db_lock_stat {
u_int32_t st_maxlockers; /* Maximum num of lockers in table. */
u_int32_t st_maxobjects; /* Maximum num of objects in table. */
int st_nmodes; /* Number of lock modes. */
+ u_int32_t st_nlockers; /* Current number of lockers. */
+#ifndef __TEST_DB_NO_STATISTICS
u_int32_t st_nlocks; /* Current number of locks. */
u_int32_t st_maxnlocks; /* Maximum number of locks so far. */
- u_int32_t st_nlockers; /* Current number of lockers. */
u_int32_t st_maxnlockers; /* Maximum number of lockers so far. */
u_int32_t st_nobjects; /* Current number of objects. */
u_int32_t st_maxnobjects; /* Maximum number of objects so far. */
@@ -569,9 +601,29 @@ struct __db_lock_stat {
u_int32_t st_nlocktimeouts; /* Number of lock timeouts. */
db_timeout_t st_txntimeout; /* Transaction timeout. */
u_int32_t st_ntxntimeouts; /* Number of transaction timeouts. */
+ u_int32_t st_objs_wait; /* Object lock granted after wait. */
+ u_int32_t st_objs_nowait; /* Object lock granted without wait. */
+ u_int32_t st_lockers_wait; /* Locker lock granted after wait. */
+ u_int32_t st_lockers_nowait; /* Locker lock granted without wait. */
+ u_int32_t st_locks_wait; /* Lock lock granted after wait. */
+ u_int32_t st_locks_nowait; /* Lock lock granted without wait. */
u_int32_t st_region_wait; /* Region lock granted after wait. */
u_int32_t st_region_nowait; /* Region lock granted without wait. */
+ u_int32_t st_hash_len; /* Max length of bucket. */
roff_t st_regsize; /* Region size. */
+#endif
+};
+
+struct __db_lock_hstat {
+ u_int32_t st_nrequests; /* Number of lock gets. */
+ u_int32_t st_nreleases; /* Number of lock puts. */
+ u_int32_t st_nupgrade; /* Number of lock upgrades. */
+ u_int32_t st_ndowngrade; /* Number of lock downgrades. */
+ u_int32_t st_lock_wait; /* Lock conflicts w/ subsequent wait */
+ u_int32_t st_lock_nowait; /* Lock conflicts w/o subsequent wait */
+ u_int32_t st_nlocktimeouts; /* Number of lock timeouts. */
+ u_int32_t st_ntxntimeouts; /* Number of transaction timeouts. */
+ u_int32_t st_hash_len; /* Max length of bucket. */
};
/*
@@ -612,7 +664,7 @@ struct __db_lockreq {
/*******************************************************
* Logging.
*******************************************************/
-#define DB_LOGVERSION 12 /* Current log version. */
+#define DB_LOGVERSION 13 /* Current log version. */
#define DB_LOGOLDVER 8 /* Oldest log version supported. */
#define DB_LOGMAGIC 0x040988
@@ -663,12 +715,12 @@ struct __db_lsn {
struct __db_log_cursor {
DB_ENV *dbenv; /* Enclosing dbenv. */
- DB_FH *c_fhp; /* File handle. */
- DB_LSN c_lsn; /* Cursor: LSN */
- u_int32_t c_len; /* Cursor: record length */
- u_int32_t c_prev; /* Cursor: previous record's offset */
+ DB_FH *fhp; /* File handle. */
+ DB_LSN lsn; /* Cursor: LSN */
+ u_int32_t len; /* Cursor: record length */
+ u_int32_t prev; /* Cursor: previous record's offset */
- DBT c_dbt; /* Return DBT. */
+ DBT dbt; /* Return DBT. */
DB_LSN p_lsn; /* Persist LSN. */
u_int32_t p_version; /* Persist version. */
@@ -698,11 +750,12 @@ struct __db_log_stat {
int st_mode; /* Log file permissions mode. */
u_int32_t st_lg_bsize; /* Log buffer size. */
u_int32_t st_lg_size; /* Log file size. */
+ u_int32_t st_wc_bytes; /* Bytes to log since checkpoint. */
+ u_int32_t st_wc_mbytes; /* Megabytes to log since checkpoint. */
+#ifndef __TEST_DB_NO_STATISTICS
u_int32_t st_record; /* Records entered into the log. */
u_int32_t st_w_bytes; /* Bytes to log. */
u_int32_t st_w_mbytes; /* Megabytes to log. */
- u_int32_t st_wc_bytes; /* Bytes to log since checkpoint. */
- u_int32_t st_wc_mbytes; /* Megabytes to log since checkpoint. */
u_int32_t st_wcount; /* Total I/O writes to the log. */
u_int32_t st_wcount_fill; /* Overflow writes to the log. */
u_int32_t st_rcount; /* Total I/O reads from the log. */
@@ -713,9 +766,10 @@ struct __db_log_stat {
u_int32_t st_cur_offset; /* Current log file offset. */
u_int32_t st_disk_file; /* Known on disk log file number. */
u_int32_t st_disk_offset; /* Known on disk log file offset. */
- roff_t st_regsize; /* Region size. */
u_int32_t st_maxcommitperflush; /* Max number of commits in a flush. */
u_int32_t st_mincommitperflush; /* Min number of commits in a flush. */
+ roff_t st_regsize; /* Region size. */
+#endif
};
/*
@@ -739,15 +793,16 @@ struct __db_log_stat {
#define DB_MPOOL_LAST 0x010 /* Return the last page. */
#define DB_MPOOL_NEW 0x020 /* Create a new page. */
-/* Flag values for DB_MPOOLFILE->put, DB_MPOOLFILE->set. */
-#define DB_MPOOL_DISCARD 0x001 /* Don't cache the page. */
+/* Undocumented flag value for DB_MPOOLFILE->close. */
+#define DB_MPOOL_DISCARD 0x001 /* Discard file. */
/* Flags values for DB_MPOOLFILE->set_flags. */
#define DB_MPOOL_NOFILE 0x001 /* Never open a backing file. */
#define DB_MPOOL_UNLINK 0x002 /* Unlink the file on last close. */
-/* Priority values for DB_MPOOLFILE->set_priority. */
+/* Priority values for DB_MPOOLFILE->{put,set_priority}. */
typedef enum {
+ DB_PRIORITY_UNCHANGED=0,
DB_PRIORITY_VERY_LOW=1,
DB_PRIORITY_LOW=2,
DB_PRIORITY_DEFAULT=3,
@@ -808,24 +863,24 @@ struct __db_mpoolfile {
int (*close) __P((DB_MPOOLFILE *, u_int32_t));
int (*get)
__P((DB_MPOOLFILE *, db_pgno_t *, DB_TXN *, u_int32_t, void *));
- int (*open) __P((DB_MPOOLFILE *, const char *, u_int32_t, int, size_t));
- int (*put) __P((DB_MPOOLFILE *, void *, u_int32_t));
- int (*set) __P((DB_MPOOLFILE *, void *, u_int32_t));
int (*get_clear_len) __P((DB_MPOOLFILE *, u_int32_t *));
- int (*set_clear_len) __P((DB_MPOOLFILE *, u_int32_t));
int (*get_fileid) __P((DB_MPOOLFILE *, u_int8_t *));
- int (*set_fileid) __P((DB_MPOOLFILE *, u_int8_t *));
int (*get_flags) __P((DB_MPOOLFILE *, u_int32_t *));
- int (*set_flags) __P((DB_MPOOLFILE *, u_int32_t, int));
int (*get_ftype) __P((DB_MPOOLFILE *, int *));
- int (*set_ftype) __P((DB_MPOOLFILE *, int));
+ int (*get_last_pgno) __P((DB_MPOOLFILE *, db_pgno_t *));
int (*get_lsn_offset) __P((DB_MPOOLFILE *, int32_t *));
- int (*set_lsn_offset) __P((DB_MPOOLFILE *, int32_t));
int (*get_maxsize) __P((DB_MPOOLFILE *, u_int32_t *, u_int32_t *));
- int (*set_maxsize) __P((DB_MPOOLFILE *, u_int32_t, u_int32_t));
int (*get_pgcookie) __P((DB_MPOOLFILE *, DBT *));
- int (*set_pgcookie) __P((DB_MPOOLFILE *, DBT *));
int (*get_priority) __P((DB_MPOOLFILE *, DB_CACHE_PRIORITY *));
+ int (*open) __P((DB_MPOOLFILE *, const char *, u_int32_t, int, size_t));
+ int (*put) __P((DB_MPOOLFILE *, void *, DB_CACHE_PRIORITY, u_int32_t));
+ int (*set_clear_len) __P((DB_MPOOLFILE *, u_int32_t));
+ int (*set_fileid) __P((DB_MPOOLFILE *, u_int8_t *));
+ int (*set_flags) __P((DB_MPOOLFILE *, u_int32_t, int));
+ int (*set_ftype) __P((DB_MPOOLFILE *, int));
+ int (*set_lsn_offset) __P((DB_MPOOLFILE *, int32_t));
+ int (*set_maxsize) __P((DB_MPOOLFILE *, u_int32_t, u_int32_t));
+ int (*set_pgcookie) __P((DB_MPOOLFILE *, DBT *));
int (*set_priority) __P((DB_MPOOLFILE *, DB_CACHE_PRIORITY));
int (*sync) __P((DB_MPOOLFILE *));
/* DB_MPOOLFILE PUBLIC HANDLE LIST END */
@@ -850,12 +905,14 @@ struct __db_mpoolfile {
struct __db_mpool_stat {
u_int32_t st_gbytes; /* Total cache size: GB. */
u_int32_t st_bytes; /* Total cache size: B. */
- u_int32_t st_ncache; /* Number of caches. */
- roff_t st_regsize; /* Region size. */
+ u_int32_t st_ncache; /* Number of cache regions. */
+ u_int32_t st_max_ncache; /* Maximum number of regions. */
size_t st_mmapsize; /* Maximum file size for mmap. */
int st_maxopenfd; /* Maximum number of open fd's. */
int st_maxwrite; /* Maximum buffers to write. */
- int st_maxwrite_sleep; /* Sleep after writing max buffers. */
+ db_timeout_t st_maxwrite_sleep; /* Sleep after writing max buffers. */
+ u_int32_t st_pages; /* Total number of pages. */
+#ifndef __TEST_DB_NO_STATISTICS
u_int32_t st_map; /* Pages from mapped files. */
u_int32_t st_cache_hit; /* Pages found in the cache. */
u_int32_t st_cache_miss; /* Pages not found in the cache. */
@@ -865,7 +922,6 @@ struct __db_mpool_stat {
u_int32_t st_ro_evict; /* Clean pages forced from the cache. */
u_int32_t st_rw_evict; /* Dirty pages forced from the cache. */
u_int32_t st_page_trickle; /* Pages written by memp_trickle. */
- u_int32_t st_pages; /* Total number of pages. */
u_int32_t st_page_clean; /* Clean pages. */
u_int32_t st_page_dirty; /* Dirty pages. */
u_int32_t st_hash_buckets; /* Number of hash buckets. */
@@ -887,18 +943,22 @@ struct __db_mpool_stat {
u_int32_t st_alloc_pages; /* Pages checked during allocation. */
u_int32_t st_alloc_max_pages; /* Max checked during allocation. */
u_int32_t st_io_wait; /* Thread waited on buffer I/O. */
+ roff_t st_regsize; /* Region size. */
+#endif
};
/* Mpool file statistics structure. */
struct __db_mpool_fstat {
char *file_name; /* File name. */
u_int32_t st_pagesize; /* Page size. */
+#ifndef __TEST_DB_NO_STATISTICS
u_int32_t st_map; /* Pages from mapped files. */
u_int32_t st_cache_hit; /* Pages found in the cache. */
u_int32_t st_cache_miss; /* Pages not found in the cache. */
u_int32_t st_page_create; /* Pages created in the cache. */
u_int32_t st_page_in; /* Pages read in. */
u_int32_t st_page_out; /* Pages written out. */
+#endif
};
/*******************************************************
@@ -932,7 +992,8 @@ struct __db_txn {
DB_TXN *parent; /* Pointer to transaction's parent. */
u_int32_t txnid; /* Unique transaction id. */
- char *name; /* Transaction name */
+ char *name; /* Transaction name. */
+ DB_LOCKER *locker; /* Locker for this txn. */
db_threadid_t tid; /* Thread id for use in MT XA. */
void *td; /* Detail structure within region. */
@@ -973,7 +1034,7 @@ struct __db_txn {
struct {
struct __txn_event *tqh_first;
struct __txn_event **tqh_last;
- } events;
+ } events; /* Links deferred events. */
/*
* !!!
@@ -983,7 +1044,7 @@ struct __db_txn {
struct {
struct __txn_logrec *stqh_first;
struct __txn_logrec **stqh_last;
- } logs; /* Links deferred events. */
+ } logs; /* Links in memory log records. */
/*
* !!!
@@ -1080,6 +1141,9 @@ struct __db_txn_active {
};
struct __db_txn_stat {
+ u_int32_t st_nrestores; /* number of restored transactions
+ after recovery. */
+#ifndef __TEST_DB_NO_STATISTICS
DB_LSN st_last_ckp; /* lsn of the last checkpoint */
time_t st_time_ckp; /* time of last checkpoint */
u_int32_t st_last_txnid; /* last transaction id given out */
@@ -1089,14 +1153,13 @@ struct __db_txn_stat {
u_int32_t st_ncommits; /* number of committed transactions */
u_int32_t st_nactive; /* number of active transactions */
u_int32_t st_nsnapshot; /* number of snapshot transactions */
- u_int32_t st_nrestores; /* number of restored transactions
- after recovery. */
u_int32_t st_maxnactive; /* maximum active transactions */
u_int32_t st_maxnsnapshot; /* maximum snapshot transactions */
DB_TXN_ACTIVE *st_txnarray; /* array of active transactions */
u_int32_t st_region_wait; /* Region lock granted after wait. */
u_int32_t st_region_nowait; /* Region lock granted without wait. */
roff_t st_regsize; /* Region size. */
+#endif
};
/*******************************************************
@@ -1121,8 +1184,11 @@ struct __db_txn_stat {
*/
#define DB_REP_CLIENT 1
#define DB_REP_ELECTION 2
-#define DB_REP_FULL_ELECTION 3
-#define DB_REP_MASTER 4
+#define DB_REP_MASTER 3
+
+#define DB_REPFLAGS_MASK 0x000000ff /* Mask for rep modes. */
+
+#define DB_REP_DEFAULT_PRIORITY 100
/* Acknowledgement policies. */
#define DB_REPMGR_ACKS_ALL 1
@@ -1132,33 +1198,38 @@ struct __db_txn_stat {
#define DB_REPMGR_ACKS_ONE_PEER 5
#define DB_REPMGR_ACKS_QUORUM 6
-/* Replication Framework timeout configuration values. */
-#define DB_REP_ACK_TIMEOUT 1
-#define DB_REP_ELECTION_TIMEOUT 2
-#define DB_REP_ELECTION_RETRY 3
-#define DB_REP_CONNECTION_RETRY 4
+/* Replication timeout configuration values. */
+#define DB_REP_ACK_TIMEOUT 1 /* RepMgr acknowledgements. */
+#define DB_REP_CHECKPOINT_DELAY 2 /* RepMgr acknowledgements. */
+#define DB_REP_CONNECTION_RETRY 3 /* RepMgr connections. */
+#define DB_REP_ELECTION_RETRY 4 /* RepMgr elect retries. */
+#define DB_REP_ELECTION_TIMEOUT 5 /* Rep normal elections. */
+#define DB_REP_FULL_ELECTION_TIMEOUT 6 /* Rep full elections. */
+#define DB_REP_LEASE_TIMEOUT 7 /* Master leases. */
/* Event notification types. */
#define DB_EVENT_NO_SUCH_EVENT 0 /* out-of-band sentinel value */
#define DB_EVENT_PANIC 1
#define DB_EVENT_REP_CLIENT 2
-#define DB_EVENT_REP_MASTER 3
-#define DB_EVENT_REP_NEWMASTER 4
-#define DB_EVENT_REP_STARTUPDONE 5
-#define DB_EVENT_WRITE_FAILED 6
+#define DB_EVENT_REP_ELECTED 3
+#define DB_EVENT_REP_MASTER 4
+#define DB_EVENT_REP_NEWMASTER 5
+#define DB_EVENT_REP_PERM_FAILED 6
+#define DB_EVENT_REP_STARTUPDONE 7
+#define DB_EVENT_WRITE_FAILED 8
/* Flag value for repmgr_add_remote_site. */
#define DB_REPMGR_PEER 0x01
/* Replication Manager site status. */
struct __db_repmgr_site {
- int eid;
- char *host;
- u_int port;
+ int eid;
+ char *host;
+ u_int port;
#define DB_REPMGR_CONNECTED 0x01
#define DB_REPMGR_DISCONNECTED 0x02
- u_int32_t status;
+ u_int32_t status;
};
/* Replication statistics. */
@@ -1172,6 +1243,9 @@ struct __db_rep_stat {
* off somewhat (or, on unreasonable architectures under unlucky
* circumstances, garbaged).
*/
+ u_int32_t st_log_queued; /* Log records currently queued.+ */
+ u_int32_t st_startup_complete; /* Site completed client sync-up. */
+#ifndef __TEST_DB_NO_STATISTICS
u_int32_t st_status; /* Current replication status. */
DB_LSN st_next_lsn; /* Next LSN to use or expect. */
DB_LSN st_waiting_lsn; /* LSN we're awaiting, if any. */
@@ -1194,7 +1268,6 @@ struct __db_rep_stat {
u_int32_t st_gen; /* Current generation number. */
u_int32_t st_egen; /* Current election gen number. */
u_int32_t st_log_duplicated; /* Log records received multiply.+ */
- u_int32_t st_log_queued; /* Log records currently queued.+ */
u_int32_t st_log_queued_max; /* Max. log records queued at once.+ */
u_int32_t st_log_queued_total; /* Total # of log recs. ever queued.+ */
u_int32_t st_log_records; /* Log records received and put.+ */
@@ -1216,8 +1289,8 @@ struct __db_rep_stat {
u_int32_t st_pg_duplicated; /* Pages received multiply.+ */
u_int32_t st_pg_records; /* Pages received and stored.+ */
u_int32_t st_pg_requested; /* Pages missed and requested.+ */
- u_int32_t st_startup_complete; /* Site completed client sync-up. */
u_int32_t st_txns_applied; /* # of transactions applied.+ */
+ u_int32_t st_startsync_delayed; /* # of STARTSYNC msgs delayed.+ */
/* Elections generally. */
u_int32_t st_elections; /* # of elections held.+ */
@@ -1235,6 +1308,17 @@ struct __db_rep_stat {
int st_election_votes; /* Votes received in this round. */
u_int32_t st_election_sec; /* Last election time seconds. */
u_int32_t st_election_usec; /* Last election time useconds. */
+#endif
+};
+
+/* Replication Manager statistics. */
+struct __db_repmgr_stat {
+ u_int32_t st_perm_failed; /* # of insufficiently ack'ed msgs. */
+ u_int32_t st_msgs_queued; /* # msgs queued for network delay. */
+ u_int32_t st_msgs_dropped; /* # msgs discarded due to excessive
+ queue length. */
+ u_int32_t st_connection_drop; /* Existing connections dropped. */
+ u_int32_t st_connect_fail; /* Failed new connection attempts. */
};
/*******************************************************
@@ -1324,7 +1408,7 @@ typedef enum {
#define DB_BTREEOLDVER 8 /* Oldest btree version supported. */
#define DB_BTREEMAGIC 0x053162
-#define DB_HASHVERSION 8 /* Current hash version. */
+#define DB_HASHVERSION 9 /* Current hash version. */
#define DB_HASHOLDVER 7 /* Oldest hash version supported. */
#define DB_HASHMAGIC 0x061561
@@ -1339,39 +1423,37 @@ typedef enum {
* DB access method and cursor operation values. Each value is an operation
* code to which additional bit flags are added.
*/
-#define DB_AFTER 1 /* c_put() */
-#define DB_APPEND 2 /* put() */
-#define DB_BEFORE 3 /* c_put() */
-#define DB_CONSUME 4 /* get() */
-#define DB_CONSUME_WAIT 5 /* get() */
-#define DB_CURRENT 6 /* c_get(), c_put(), DB_LOGC->get() */
-#define DB_FIRST 7 /* c_get(), DB_LOGC->get() */
-#define DB_GET_BOTH 8 /* get(), c_get() */
-#define DB_GET_BOTHC 9 /* c_get() (internal) */
-#define DB_GET_BOTH_RANGE 10 /* get(), c_get() */
-#define DB_GET_RECNO 11 /* c_get() */
-#define DB_JOIN_ITEM 12 /* c_get(); do not do primary lookup */
-#define DB_KEYFIRST 13 /* c_put() */
-#define DB_KEYLAST 14 /* c_put() */
-#define DB_LAST 15 /* c_get(), DB_LOGC->get() */
-#define DB_NEXT 16 /* c_get(), DB_LOGC->get() */
-#define DB_NEXT_DUP 17 /* c_get() */
-#define DB_NEXT_NODUP 18 /* c_get() */
-#define DB_NODUPDATA 19 /* put(), c_put() */
-#define DB_NOOVERWRITE 20 /* put() */
-#define DB_NOSYNC 21 /* close() */
-#define DB_POSITION 22 /* c_dup() */
-#define DB_PREV 23 /* c_get(), DB_LOGC->get() */
-#define DB_PREV_NODUP 24 /* c_get(), DB_LOGC->get() */
-#define DB_SET 25 /* c_get(), DB_LOGC->get() */
-#define DB_SET_LOCK_TIMEOUT 26 /* set_timout() */
-#define DB_SET_RANGE 27 /* c_get() */
-#define DB_SET_RECNO 28 /* get(), c_get() */
-#define DB_SET_TXN_NOW 29 /* set_timout() (internal) */
-#define DB_SET_TXN_TIMEOUT 30 /* set_timout() */
-#define DB_UPDATE_SECONDARY 31 /* c_get(), c_del() (internal) */
-#define DB_WRITECURSOR 32 /* cursor() */
-#define DB_WRITELOCK 33 /* cursor() (internal) */
+#define DB_AFTER 1 /* Dbc.put */
+#define DB_APPEND 2 /* Db.put */
+#define DB_BEFORE 3 /* Dbc.put */
+#define DB_CONSUME 4 /* Db.get */
+#define DB_CONSUME_WAIT 5 /* Db.get */
+#define DB_CURRENT 6 /* Dbc.get, Dbc.put, DbLogc.get */
+#define DB_FIRST 7 /* Dbc.get, DbLogc->get */
+#define DB_GET_BOTH 8 /* Db.get, Dbc.get */
+#define DB_GET_BOTHC 9 /* Dbc.get (internal) */
+#define DB_GET_BOTH_RANGE 10 /* Db.get, Dbc.get */
+#define DB_GET_RECNO 11 /* Dbc.get */
+#define DB_JOIN_ITEM 12 /* Dbc.get; don't do primary lookup */
+#define DB_KEYFIRST 13 /* Dbc.put */
+#define DB_KEYLAST 14 /* Dbc.put */
+#define DB_LAST 15 /* Dbc.get, DbLogc->get */
+#define DB_NEXT 16 /* Dbc.get, DbLogc->get */
+#define DB_NEXT_DUP 17 /* Dbc.get */
+#define DB_NEXT_NODUP 18 /* Dbc.get */
+#define DB_NODUPDATA 19 /* Db.put, Dbc.put */
+#define DB_NOOVERWRITE 20 /* Db.put */
+#define DB_NOSYNC 21 /* Db.close */
+#define DB_POSITION 22 /* Dbc.dup */
+#define DB_PREV 23 /* Dbc.get, DbLogc->get */
+#define DB_PREV_DUP 24 /* Dbc.get */
+#define DB_PREV_NODUP 25 /* Dbc.get */
+#define DB_SET 26 /* Dbc.get, DbLogc->get */
+#define DB_SET_RANGE 27 /* Dbc.get */
+#define DB_SET_RECNO 28 /* Db.get, Dbc.get */
+#define DB_UPDATE_SECONDARY 29 /* Dbc.get, Dbc.del (internal) */
+#define DB_WRITECURSOR 30 /* Db.cursor */
+#define DB_WRITELOCK 31 /* Db.cursor (internal) */
/* This has to change when the max opcode hits 255. */
#define DB_OPFLAGS_MASK 0x000000ff /* Mask for operations flags. */
@@ -1416,8 +1498,8 @@ typedef enum {
#define DB_REP_IGNORE (-30983)/* This msg should be ignored.*/
#define DB_REP_ISPERM (-30982)/* Cached not written perm written.*/
#define DB_REP_JOIN_FAILURE (-30981)/* Unable to join replication group. */
-#define DB_REP_LOCKOUT (-30980)/* API/Replication lockout now. */
-#define DB_REP_NEWMASTER (-30979)/* We have learned of a new master. */
+#define DB_REP_LEASE_EXPIRED (-30980)/* Master lease has expired. */
+#define DB_REP_LOCKOUT (-30979)/* API/Replication lockout now. */
#define DB_REP_NEWSITE (-30978)/* New site entered system. */
#define DB_REP_NOTPERM (-30977)/* Permanent log record not written. */
#define DB_REP_UNAVAIL (-30976)/* Site cannot currently be reached. */
@@ -1429,17 +1511,19 @@ typedef enum {
/* DB (private) error return codes. */
#define DB_ALREADY_ABORTED (-30899)
#define DB_DELETED (-30898)/* Recovery file marked deleted. */
-#define DB_NEEDSPLIT (-30897)/* Page needs to be split. */
-#define DB_REP_BULKOVF (-30896)/* Rep bulk buffer overflow. */
-#define DB_REP_EGENCHG (-30895)/* Egen changed while in election. */
-#define DB_REP_LOGREADY (-30894)/* Rep log ready for recovery. */
-#define DB_REP_PAGEDONE (-30893)/* This page was already done. */
-#define DB_SURPRISE_KID (-30892)/* Child commit where parent
+#define DB_EVENT_NOT_HANDLED (-30897)/* Forward event to application. */
+#define DB_NEEDSPLIT (-30896)/* Page needs to be split. */
+#define DB_REP_BULKOVF (-30895)/* Rep bulk buffer overflow. */
+#define DB_REP_EGENCHG (-30894)/* Egen changed while in election. */
+#define DB_REP_LOGREADY (-30893)/* Rep log ready for recovery. */
+#define DB_REP_NEWMASTER (-30892)/* We have learned of a new master. */
+#define DB_REP_PAGEDONE (-30891)/* This page was already done. */
+#define DB_SURPRISE_KID (-30890)/* Child commit where parent
didn't know it was a parent. */
-#define DB_SWAPBYTES (-30891)/* Database needs byte swapping. */
-#define DB_TIMEOUT (-30890)/* Timed out waiting for election. */
-#define DB_TXN_CKP (-30889)/* Encountered ckp record in log. */
-#define DB_VERIFY_FATAL (-30888)/* DB->verify cannot proceed. */
+#define DB_SWAPBYTES (-30889)/* Database needs byte swapping. */
+#define DB_TIMEOUT (-30888)/* Timed out waiting for election. */
+#define DB_TXN_CKP (-30887)/* Encountered ckp record in log. */
+#define DB_VERIFY_FATAL (-30886)/* DB->verify cannot proceed. */
/* Database handle. */
struct __db {
@@ -1447,6 +1531,7 @@ struct __db {
* Public: owned by the application.
*******************************************************/
u_int32_t pgsize; /* Database logical page size. */
+ DB_CACHE_PRIORITY priority; /* Database priority in cache. */
/* Callbacks. */
int (*db_append_recno) __P((DB *, DBT *, db_recno_t));
@@ -1477,9 +1562,10 @@ struct __db {
FNAME *log_filename; /* File's naming info for logging. */
db_pgno_t meta_pgno; /* Meta page number */
- u_int32_t lid; /* Locker id for handle locking. */
- u_int32_t cur_lid; /* Current handle lock holder. */
- u_int32_t associate_lid; /* Locker id for DB->associate call. */
+ DB_LOCKER *locker; /* Locker for handle locking. */
+ DB_LOCKER *cur_locker; /* Current handle lock holder. */
+ DB_TXN *cur_txn; /* Opening transaction. */
+ DB_LOCKER *associate_locker; /* Locker for DB->associate call. */
DB_LOCK handle_lock; /* Lock held on this handle. */
u_int cl_id; /* RPC: remote client id. */
@@ -1558,8 +1644,8 @@ struct __db {
} s_secondaries;
/*
- * List entries for secondaries, and reference count of how
- * many threads are updating this secondary (see __db_c_put).
+ * List entries for secondaries, and reference count of how many
+ * threads are updating this secondary (see Dbc.put).
*
* !!!
* Note that these are synchronized by the primary's mutex, but
@@ -1605,6 +1691,7 @@ struct __db {
int (*del) __P((DB *, DB_TXN *, DBT *, u_int32_t));
void (*err) __P((DB *, int, const char *, ...));
void (*errx) __P((DB *, const char *, ...));
+ int (*exists) __P((DB *, DB_TXN *, DBT *, u_int32_t));
int (*fd) __P((DB *, int *));
int (*get) __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t));
int (*get_bt_minkey) __P((DB *, u_int32_t *));
@@ -1621,8 +1708,10 @@ struct __db {
int (*get_lorder) __P((DB *, int *));
DB_MPOOLFILE *(*get_mpf) __P((DB *));
void (*get_msgfile) __P((DB *, FILE **));
+ int (*get_multiple) __P((DB *));
int (*get_open_flags) __P((DB *, u_int32_t *));
int (*get_pagesize) __P((DB *, u_int32_t *));
+ int (*get_priority) __P((DB *, DB_CACHE_PRIORITY *));
int (*get_q_extentsize) __P((DB *, u_int32_t *));
int (*get_re_delim) __P((DB *, int *));
int (*get_re_len) __P((DB *, u_int32_t *));
@@ -1658,6 +1747,8 @@ struct __db {
void (*set_errpfx) __P((DB *, const char *));
int (*set_feedback) __P((DB *, void (*)(DB *, int, int)));
int (*set_flags) __P((DB *, u_int32_t));
+ int (*set_h_compare)
+ __P((DB *, int (*)(DB *, const DBT *, const DBT *)));
int (*set_h_ffactor) __P((DB *, u_int32_t));
int (*set_h_hash)
__P((DB *, u_int32_t (*)(DB *, const void *, u_int32_t)));
@@ -1667,6 +1758,7 @@ struct __db {
void (*set_msgfile) __P((DB *, FILE *));
int (*set_pagesize) __P((DB *, u_int32_t));
int (*set_paniccall) __P((DB *, void (*)(DB_ENV *, int)));
+ int (*set_priority) __P((DB *, DB_CACHE_PRIORITY));
int (*set_q_extentsize) __P((DB *, u_int32_t));
int (*set_re_delim) __P((DB *, int));
int (*set_re_len) __P((DB *, u_int32_t));
@@ -1710,36 +1802,35 @@ struct __db {
int preserve_fid; /* Do not free fileid on close. */
#define DB_AM_CHKSUM 0x00000001 /* Checksumming */
-#define DB_AM_CL_WRITER 0x00000002 /* Allow writes in client replica */
-#define DB_AM_COMPENSATE 0x00000004 /* Created by compensating txn */
-#define DB_AM_CREATED 0x00000008 /* Database was created upon open */
-#define DB_AM_CREATED_MSTR 0x00000010 /* Encompassing file was created */
-#define DB_AM_DBM_ERROR 0x00000020 /* Error in DBM/NDBM database */
-#define DB_AM_DELIMITER 0x00000040 /* Variable length delimiter set */
-#define DB_AM_DISCARD 0x00000080 /* Discard any cached pages */
-#define DB_AM_DUP 0x00000100 /* DB_DUP */
-#define DB_AM_DUPSORT 0x00000200 /* DB_DUPSORT */
-#define DB_AM_ENCRYPT 0x00000400 /* Encryption */
-#define DB_AM_FIXEDLEN 0x00000800 /* Fixed-length records */
-#define DB_AM_INMEM 0x00001000 /* In-memory; no sync on close */
-#define DB_AM_INORDER 0x00002000 /* DB_INORDER */
-#define DB_AM_IN_RENAME 0x00004000 /* File is being renamed */
-#define DB_AM_NOT_DURABLE 0x00008000 /* Do not log changes */
-#define DB_AM_OPEN_CALLED 0x00010000 /* DB->open called */
-#define DB_AM_PAD 0x00020000 /* Fixed-length record pad */
-#define DB_AM_PGDEF 0x00040000 /* Page size was defaulted */
-#define DB_AM_RDONLY 0x00080000 /* Database is readonly */
-#define DB_AM_READ_UNCOMMITTED 0x00100000 /* Support degree 1 isolation */
-#define DB_AM_RECNUM 0x00200000 /* DB_RECNUM */
-#define DB_AM_RECOVER 0x00400000 /* DB opened by recovery routine */
-#define DB_AM_RENUMBER 0x00800000 /* DB_RENUMBER */
-#define DB_AM_REVSPLITOFF 0x01000000 /* DB_REVSPLITOFF */
-#define DB_AM_SECONDARY 0x02000000 /* Database is a secondary index */
-#define DB_AM_SNAPSHOT 0x04000000 /* DB_SNAPSHOT */
-#define DB_AM_SUBDB 0x08000000 /* Subdatabases supported */
-#define DB_AM_SWAP 0x10000000 /* Pages need to be byte-swapped */
-#define DB_AM_TXN 0x20000000 /* Opened in a transaction */
-#define DB_AM_VERIFYING 0x40000000 /* DB handle is in the verifier */
+#define DB_AM_COMPENSATE 0x00000002 /* Created by compensating txn */
+#define DB_AM_CREATED 0x00000004 /* Database was created upon open */
+#define DB_AM_CREATED_MSTR 0x00000008 /* Encompassing file was created */
+#define DB_AM_DBM_ERROR 0x00000010 /* Error in DBM/NDBM database */
+#define DB_AM_DELIMITER 0x00000020 /* Variable length delimiter set */
+#define DB_AM_DISCARD 0x00000040 /* Discard any cached pages */
+#define DB_AM_DUP 0x00000080 /* DB_DUP */
+#define DB_AM_DUPSORT 0x00000100 /* DB_DUPSORT */
+#define DB_AM_ENCRYPT 0x00000200 /* Encryption */
+#define DB_AM_FIXEDLEN 0x00000400 /* Fixed-length records */
+#define DB_AM_INMEM 0x00000800 /* In-memory; no sync on close */
+#define DB_AM_INORDER 0x00001000 /* DB_INORDER */
+#define DB_AM_IN_RENAME 0x00002000 /* File is being renamed */
+#define DB_AM_NOT_DURABLE 0x00004000 /* Do not log changes */
+#define DB_AM_OPEN_CALLED 0x00008000 /* DB->open called */
+#define DB_AM_PAD 0x00010000 /* Fixed-length record pad */
+#define DB_AM_PGDEF 0x00020000 /* Page size was defaulted */
+#define DB_AM_RDONLY 0x00040000 /* Database is readonly */
+#define DB_AM_READ_UNCOMMITTED 0x00080000 /* Support degree 1 isolation */
+#define DB_AM_RECNUM 0x00100000 /* DB_RECNUM */
+#define DB_AM_RECOVER 0x00200000 /* DB opened by recovery routine */
+#define DB_AM_RENUMBER 0x00400000 /* DB_RENUMBER */
+#define DB_AM_REVSPLITOFF 0x00800000 /* DB_REVSPLITOFF */
+#define DB_AM_SECONDARY 0x01000000 /* Database is a secondary index */
+#define DB_AM_SNAPSHOT 0x02000000 /* DB_SNAPSHOT */
+#define DB_AM_SUBDB 0x04000000 /* Subdatabases supported */
+#define DB_AM_SWAP 0x08000000 /* Pages need to be byte-swapped */
+#define DB_AM_TXN 0x10000000 /* Opened in a transaction */
+#define DB_AM_VERIFYING 0x20000000 /* DB handle is in the verifier */
u_int32_t orig_flags; /* Flags at open, for refresh */
u_int32_t flags;
};
@@ -1810,6 +1901,7 @@ struct __db {
struct __dbc {
DB *dbp; /* Related DB access method. */
DB_TXN *txn; /* Associated transaction. */
+ DB_CACHE_PRIORITY priority; /* Priority in cache. */
/*
* Active/free cursor queues.
@@ -1843,7 +1935,7 @@ struct __dbc {
DBT my_rdata; /* Space for returned data. */
void *lref; /* Reference to default locker. */
- u_int32_t locker; /* Locker for this operation. */
+ DB_LOCKER *locker; /* Locker for this operation. */
DBT lock_dbt; /* DBT referencing lock. */
DB_LOCK_ILOCK lock; /* Object to be locked. */
DB_LOCK mylock; /* CDB lock held on this cursor. */
@@ -1855,6 +1947,18 @@ struct __dbc {
DBC_INTERNAL *internal; /* Access method private. */
/* DBC PUBLIC HANDLE LIST BEGIN */
+ int (*close) __P((DBC *));
+ int (*count) __P((DBC *, db_recno_t *, u_int32_t));
+ int (*del) __P((DBC *, u_int32_t));
+ int (*dup) __P((DBC *, DBC **, u_int32_t));
+ int (*get) __P((DBC *, DBT *, DBT *, u_int32_t));
+ int (*get_priority) __P((DBC *, DB_CACHE_PRIORITY *));
+ int (*pget) __P((DBC *, DBT *, DBT *, DBT *, u_int32_t));
+ int (*put) __P((DBC *, DBT *, DBT *, u_int32_t));
+ int (*set_priority) __P((DBC *, DB_CACHE_PRIORITY));
+ /* DBC PUBLIC HANDLE LIST END */
+
+ /* The following are the method names deprecated in the 4.6 release. */
int (*c_close) __P((DBC *));
int (*c_count) __P((DBC *, db_recno_t *, u_int32_t));
int (*c_del) __P((DBC *, u_int32_t));
@@ -1862,16 +1966,15 @@ struct __dbc {
int (*c_get) __P((DBC *, DBT *, DBT *, u_int32_t));
int (*c_pget) __P((DBC *, DBT *, DBT *, DBT *, u_int32_t));
int (*c_put) __P((DBC *, DBT *, DBT *, u_int32_t));
- /* DBC PUBLIC HANDLE LIST END */
/* DBC PRIVATE HANDLE LIST BEGIN */
- int (*c_am_bulk) __P((DBC *, DBT *, u_int32_t));
- int (*c_am_close) __P((DBC *, db_pgno_t, int *));
- int (*c_am_del) __P((DBC *));
- int (*c_am_destroy) __P((DBC *));
- int (*c_am_get) __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *));
- int (*c_am_put) __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *));
- int (*c_am_writelock) __P((DBC *));
+ int (*am_bulk) __P((DBC *, DBT *, u_int32_t));
+ int (*am_close) __P((DBC *, db_pgno_t, int *));
+ int (*am_del) __P((DBC *));
+ int (*am_destroy) __P((DBC *));
+ int (*am_get) __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *));
+ int (*am_put) __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *));
+ int (*am_writelock) __P((DBC *));
/* DBC PRIVATE HANDLE LIST END */
/*
@@ -1912,6 +2015,7 @@ struct __db_bt_stat {
u_int32_t bt_metaflags; /* Metadata flags. */
u_int32_t bt_nkeys; /* Number of unique keys. */
u_int32_t bt_ndata; /* Number of data items. */
+ u_int32_t bt_pagecnt; /* Page count. */
u_int32_t bt_pagesize; /* Page size. */
u_int32_t bt_minkey; /* Minkey value. */
u_int32_t bt_re_len; /* Fixed-length record length. */
@@ -1951,6 +2055,7 @@ struct __db_h_stat {
u_int32_t hash_metaflags; /* Metadata flags. */
u_int32_t hash_nkeys; /* Number of unique keys. */
u_int32_t hash_ndata; /* Number of data items. */
+ u_int32_t hash_pagecnt; /* Page count. */
u_int32_t hash_pagesize; /* Page size. */
u_int32_t hash_ffactor; /* Fill factor specified at create. */
u_int32_t hash_buckets; /* Number of hash buckets. */
@@ -2022,10 +2127,12 @@ struct __db_env {
* there are ever more than 32 entries, convert to a bit array.
*/
#define DB_VERB_DEADLOCK 0x0001 /* Deadlock detection information. */
-#define DB_VERB_RECOVERY 0x0002 /* Recovery information. */
-#define DB_VERB_REGISTER 0x0004 /* Dump waits-for table. */
-#define DB_VERB_REPLICATION 0x0008 /* Replication information. */
-#define DB_VERB_WAITSFOR 0x0010 /* Dump waits-for table. */
+#define DB_VERB_FILEOPS 0x0002 /* Major file operations. */
+#define DB_VERB_FILEOPS_ALL 0x0004 /* All file operations. */
+#define DB_VERB_RECOVERY 0x0008 /* Recovery information. */
+#define DB_VERB_REGISTER 0x0010 /* Dump waits-for table. */
+#define DB_VERB_REPLICATION 0x0020 /* Replication information. */
+#define DB_VERB_WAITSFOR 0x0040 /* Dump waits-for table. */
u_int32_t verbose; /* Verbose output. */
void *app_private; /* Application-private handle. */
@@ -2062,14 +2169,15 @@ struct __db_env {
int lg_filemode; /* Log file permission mode. */
/* Memory pool. */
- u_int32_t mp_gbytes; /* Cachesize: GB. */
- u_int32_t mp_bytes; /* Cachesize: Bytes. */
- u_int mp_ncache; /* Number of cache regions. */
+ u_int mp_ncache; /* Initial number of cache regions. */
+ u_int32_t mp_gbytes; /* Cache size: GB. */
+ u_int32_t mp_bytes; /* Cache size: bytes. */
+ u_int32_t mp_max_gbytes; /* Maximum cache size: GB. */
+ u_int32_t mp_max_bytes; /* Maximum cache size: bytes. */
size_t mp_mmapsize; /* Maximum file size for mmap. */
int mp_maxopenfd; /* Maximum open file descriptors. */
int mp_maxwrite; /* Maximum buffers to write. */
- int /* Sleep after writing max buffers. */
- mp_maxwrite_sleep;
+ db_timeout_t mp_maxwrite_sleep; /* Sleep after writing max buffers. */
/* Transactions. */
u_int32_t tx_max; /* Maximum number of transactions. */
@@ -2084,6 +2192,8 @@ struct __db_env {
/*******************************************************
* Private: owned by DB.
*******************************************************/
+ db_mutex_t mtx_env; /* General DbEnv structure mutex. */
+
pid_t pid_cache; /* Cached process ID. */
/* User files, paths. */
@@ -2132,13 +2242,21 @@ struct __db_env {
long shm_key; /* shmget(2) key. */
/*
- * List of open DB handles for this DB_ENV, used for cursor
- * adjustment. Must be protected for multi-threaded support.
+ * List of open file handles for this DB_ENV. Must be protected
+ * for multi-threaded support.
*
* !!!
- * As this structure is allocated in per-process memory, the
- * mutex may need to be stored elsewhere on architectures unable
- * to support mutexes in heap memory, e.g. HP/UX 9.
+ * Explicit representation of structure in queue.h.
+ * TAILQ_HEAD(__fdlist, __fh_t);
+ */
+ struct __fdlist {
+ struct __fh_t *tqh_first;
+ struct __fh_t **tqh_last;
+ } fdlist;
+
+ /*
+ * List of open DB handles for this DB_ENV, used for cursor
+ * adjustment. Must be protected for multi-threaded support.
*
* !!!
* Explicit representation of structure in queue.h.
@@ -2198,6 +2316,7 @@ struct __db_env {
int (*failchk) __P((DB_ENV *, u_int32_t));
int (*fileid_reset) __P((DB_ENV *, const char *, u_int32_t));
int (*get_cachesize) __P((DB_ENV *, u_int32_t *, u_int32_t *, int *));
+ int (*get_cache_max) __P((DB_ENV *, u_int32_t *, u_int32_t *));
int (*get_data_dirs) __P((DB_ENV *, const char ***));
int (*get_encrypt_flags) __P((DB_ENV *, u_int32_t *));
void (*get_errfile) __P((DB_ENV *, FILE **));
@@ -2215,11 +2334,12 @@ struct __db_env {
int (*get_lk_max_locks) __P((DB_ENV *, u_int32_t *));
int (*get_lk_max_objects) __P((DB_ENV *, u_int32_t *));
int (*get_mp_max_openfd) __P((DB_ENV *, int *));
- int (*get_mp_max_write) __P((DB_ENV *, int *, int *));
+ int (*get_mp_max_write) __P((DB_ENV *, int *, db_timeout_t *));
int (*get_mp_mmapsize) __P((DB_ENV *, size_t *));
void (*get_msgfile) __P((DB_ENV *, FILE **));
int (*get_open_flags) __P((DB_ENV *, u_int32_t *));
int (*get_shm_key) __P((DB_ENV *, long *));
+ int (*get_thread_count) __P((DB_ENV *, u_int32_t *));
int (*get_timeout) __P((DB_ENV *, db_timeout_t *, u_int32_t));
int (*get_tmp_dir) __P((DB_ENV *, const char **));
int (*get_tx_max) __P((DB_ENV *, u_int32_t *));
@@ -2270,8 +2390,7 @@ struct __db_env {
int (*mutex_unlock) __P((DB_ENV *, db_mutex_t));
int (*open) __P((DB_ENV *, const char *, u_int32_t, int));
int (*remove) __P((DB_ENV *, const char *, u_int32_t));
- int (*rep_elect)
- __P((DB_ENV *, int, int, int *, u_int32_t));
+ int (*rep_elect) __P((DB_ENV *, int, int, u_int32_t));
int (*rep_flush) __P((DB_ENV *));
int (*rep_get_config) __P((DB_ENV *, u_int32_t, int *));
int (*rep_get_limit) __P((DB_ENV *, u_int32_t *, u_int32_t *));
@@ -2279,8 +2398,9 @@ struct __db_env {
int (*rep_get_priority) __P((DB_ENV *, int *));
int (*rep_get_timeout) __P((DB_ENV *, int, u_int32_t *));
int (*rep_process_message)
- __P((DB_ENV *, DBT *, DBT *, int *, DB_LSN *));
+ __P((DB_ENV *, DBT *, DBT *, int, DB_LSN *));
int (*rep_set_config) __P((DB_ENV *, u_int32_t, int));
+ int (*rep_set_lease) __P((DB_ENV *, u_int32_t, u_int32_t));
int (*rep_set_limit) __P((DB_ENV *, u_int32_t, u_int32_t));
int (*rep_set_nsites) __P((DB_ENV *, int));
int (*rep_set_priority) __P((DB_ENV *, int));
@@ -2300,11 +2420,14 @@ struct __db_env {
int (*repmgr_site_list) __P((DB_ENV *, u_int *,
DB_REPMGR_SITE **));
int (*repmgr_start) __P((DB_ENV *, int, u_int32_t));
+ int (*repmgr_stat) __P((DB_ENV *, DB_REPMGR_STAT **, u_int32_t));
+ int (*repmgr_stat_print) __P((DB_ENV *, u_int32_t));
int (*set_alloc) __P((DB_ENV *, void *(*)(size_t),
void *(*)(void *, size_t), void (*)(void *)));
int (*set_app_dispatch)
__P((DB_ENV *, int (*)(DB_ENV *, DBT *, DB_LSN *, db_recops)));
int (*set_cachesize) __P((DB_ENV *, u_int32_t, u_int32_t, int));
+ int (*set_cache_max) __P((DB_ENV *, u_int32_t, u_int32_t));
int (*set_data_dir) __P((DB_ENV *, const char *));
int (*set_encrypt) __P((DB_ENV *, const char *, u_int32_t));
void (*set_errcall) __P((DB_ENV *,
@@ -2329,7 +2452,7 @@ struct __db_env {
int (*set_lk_max_locks) __P((DB_ENV *, u_int32_t));
int (*set_lk_max_objects) __P((DB_ENV *, u_int32_t));
int (*set_mp_max_openfd) __P((DB_ENV *, int));
- int (*set_mp_max_write) __P((DB_ENV *, int, int));
+ int (*set_mp_max_write) __P((DB_ENV *, int, db_timeout_t));
int (*set_mp_mmapsize) __P((DB_ENV *, size_t));
void (*set_msgcall)
__P((DB_ENV *, void (*)(const DB_ENV *, const char *)));
@@ -2381,33 +2504,35 @@ struct __db_env {
#define DB_ENV_AUTO_COMMIT 0x00000001 /* DB_AUTO_COMMIT. */
#define DB_ENV_CDB 0x00000002 /* DB_INIT_CDB. */
#define DB_ENV_CDB_ALLDB 0x00000004 /* CDB environment wide locking. */
-#define DB_ENV_CREATE 0x00000008 /* DB_CREATE set. */
-#define DB_ENV_DBLOCAL 0x00000010 /* Environment for a private DB. */
-#define DB_ENV_DIRECT_DB 0x00000020 /* DB_DIRECT_DB set. */
-#define DB_ENV_DIRECT_LOG 0x00000040 /* DB_DIRECT_LOG set. */
-#define DB_ENV_DSYNC_DB 0x00000080 /* DB_DSYNC_DB set. */
-#define DB_ENV_DSYNC_LOG 0x00000100 /* DB_DSYNC_LOG set. */
-#define DB_ENV_FATAL 0x00000200 /* Doing fatal recovery in env. */
-#define DB_ENV_LOCKDOWN 0x00000400 /* DB_LOCKDOWN set. */
-#define DB_ENV_LOG_AUTOREMOVE 0x00000800 /* DB_LOG_AUTOREMOVE set. */
-#define DB_ENV_LOG_INMEMORY 0x00001000 /* DB_LOG_INMEMORY set. */
-#define DB_ENV_MULTIVERSION 0x00002000 /* DB_MULTIVERSION set. */
-#define DB_ENV_NOLOCKING 0x00004000 /* DB_NOLOCKING set. */
-#define DB_ENV_NOMMAP 0x00008000 /* DB_NOMMAP set. */
-#define DB_ENV_NOPANIC 0x00010000 /* Okay if panic set. */
-#define DB_ENV_OPEN_CALLED 0x00020000 /* DB_ENV->open called. */
-#define DB_ENV_OVERWRITE 0x00040000 /* DB_OVERWRITE set. */
-#define DB_ENV_PRIVATE 0x00080000 /* DB_PRIVATE set. */
-#define DB_ENV_REGION_INIT 0x00100000 /* DB_REGION_INIT set. */
-#define DB_ENV_RPCCLIENT 0x00200000 /* DB_RPCCLIENT set. */
-#define DB_ENV_RPCCLIENT_GIVEN 0x00400000 /* User-supplied RPC client struct */
-#define DB_ENV_SYSTEM_MEM 0x00800000 /* DB_SYSTEM_MEM set. */
-#define DB_ENV_THREAD 0x01000000 /* DB_THREAD set. */
-#define DB_ENV_TIME_NOTGRANTED 0x02000000 /* DB_TIME_NOTGRANTED set. */
-#define DB_ENV_TXN_NOSYNC 0x04000000 /* DB_TXN_NOSYNC set. */
-#define DB_ENV_TXN_SNAPSHOT 0x08000000 /* DB_TXN_SNAPSHOT set. */
-#define DB_ENV_TXN_WRITE_NOSYNC 0x10000000 /* DB_TXN_WRITE_NOSYNC set. */
-#define DB_ENV_YIELDCPU 0x20000000 /* DB_YIELDCPU set. */
+#define DB_ENV_DBLOCAL 0x00000008 /* Environment for a private DB. */
+#define DB_ENV_DIRECT_DB 0x00000010 /* DB_DIRECT_DB set. */
+#define DB_ENV_DIRECT_LOG 0x00000020 /* DB_DIRECT_LOG set. */
+#define DB_ENV_DSYNC_DB 0x00000040 /* DB_DSYNC_DB set. */
+#define DB_ENV_DSYNC_LOG 0x00000080 /* DB_DSYNC_LOG set. */
+#define DB_ENV_LOCKDOWN 0x00000100 /* DB_LOCKDOWN set. */
+#define DB_ENV_LOG_AUTOREMOVE 0x00000200 /* DB_LOG_AUTOREMOVE set. */
+#define DB_ENV_LOG_INMEMORY 0x00000400 /* DB_LOG_INMEMORY set. */
+#define DB_ENV_MULTIVERSION 0x00000800 /* DB_MULTIVERSION set. */
+#define DB_ENV_NOLOCKING 0x00001000 /* DB_NOLOCKING set. */
+#define DB_ENV_NOMMAP 0x00002000 /* DB_NOMMAP set. */
+#define DB_ENV_NOPANIC 0x00004000 /* Okay if panic set. */
+#define DB_ENV_NO_OUTPUT_SET 0x00008000 /* No output channel set. */
+#define DB_ENV_OPEN_CALLED 0x00010000 /* DB_ENV->open called. */
+#define DB_ENV_OVERWRITE 0x00020000 /* DB_OVERWRITE set. */
+#define DB_ENV_PRIVATE 0x00040000 /* DB_PRIVATE set. */
+#define DB_ENV_RECOVER_FATAL 0x00080000 /* Doing fatal recovery in env. */
+#define DB_ENV_REF_COUNTED 0x00100000 /* Region references this handle. */
+#define DB_ENV_REGION_INIT 0x00200000 /* DB_REGION_INIT set. */
+#define DB_ENV_RPCCLIENT 0x00400000 /* DB_RPCCLIENT set. */
+#define DB_ENV_RPCCLIENT_GIVEN 0x00800000 /* User-supplied RPC client struct */
+#define DB_ENV_SYSTEM_MEM 0x01000000 /* DB_SYSTEM_MEM set. */
+#define DB_ENV_THREAD 0x02000000 /* DB_THREAD set. */
+#define DB_ENV_TIME_NOTGRANTED 0x04000000 /* DB_TIME_NOTGRANTED set. */
+#define DB_ENV_TXN_NOSYNC 0x08000000 /* DB_TXN_NOSYNC set. */
+#define DB_ENV_TXN_NOWAIT 0x10000000 /* DB_TXN_NOWAIT set. */
+#define DB_ENV_TXN_SNAPSHOT 0x20000000 /* DB_TXN_SNAPSHOT set. */
+#define DB_ENV_TXN_WRITE_NOSYNC 0x40000000 /* DB_TXN_WRITE_NOSYNC set. */
+#define DB_ENV_YIELDCPU 0x80000000 /* DB_YIELDCPU set. */
u_int32_t flags;
};
diff --git a/db/build_windows/db_archive.dsp b/db/build_windows/db_archive.dsp
index 4e9dc7633..e569447b4 100644
--- a/db/build_windows/db_archive.dsp
+++ b/db/build_windows/db_archive.dsp
@@ -4,7 +4,7 @@
# TARGTYPE "Win32 (x86) Console Application" 0x0103
-CFG=db_archive - Win32 Debug
+CFG=db_archive - Win32 Debug x86
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
@@ -13,18 +13,22 @@ CFG=db_archive - Win32 Debug
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "db_archive.mak" CFG="db_archive - Win32 Debug"
+!MESSAGE NMAKE /f "db_archive.mak" CFG="db_archive - Win32 Debug x86"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "db_archive - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_archive - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_archive - Win32 ASCII Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_archive - Win32 ASCII Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_archive - Win32 Release x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_archive - Win32 Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_archive - Win32 ASCII Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_archive - Win32 ASCII Release x86" (based on "Win32 (x86) Console Application")
!MESSAGE "db_archive - x64 Debug AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "db_archive - x64 Release AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "db_archive - x64 Debug IA64" (based on "Win32 (x86) Console Application")
!MESSAGE "db_archive - x64 Release IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_archive - Win32 Debug AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_archive - Win32 Release AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_archive - Win32 Debug IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_archive - Win32 Release IA64" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
@@ -34,7 +38,7 @@ CFG=db_archive - Win32 Debug
CPP=cl.exe
RSC=rc.exe
-!IF "$(CFG)" == "db_archive - Win32 Release"
+!IF "$(CFG)" == "db_archive - Win32 Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -56,9 +60,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
-!ELSEIF "$(CFG)" == "db_archive - Win32 Debug"
+!ELSEIF "$(CFG)" == "db_archive - Win32 Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -80,9 +84,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
-!ELSEIF "$(CFG)" == "db_archive - Win32 ASCII Debug"
+!ELSEIF "$(CFG)" == "db_archive - Win32 ASCII Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -104,10 +108,10 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
+# ADD BASE LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
-!ELSEIF "$(CFG)" == "db_archive - Win32 ASCII Release"
+!ELSEIF "$(CFG)" == "db_archive - Win32 ASCII Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -129,8 +133,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
+# ADD BASE LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
!ELSEIF "$(CFG)" == "db_archive - x64 Debug AMD64"
@@ -154,8 +158,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
!ELSEIF "$(CFG)" == "db_archive - x64 Release AMD64"
@@ -179,8 +183,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
!ELSEIF "$(CFG)" == "db_archive - x64 Debug IA64"
@@ -204,8 +208,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
!ELSEIF "$(CFG)" == "db_archive - x64 Release IA64"
@@ -229,21 +233,125 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+
+!ELSEIF "$(CFG)" == "db_archive - Win32 Debug AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_AMD64"
+# PROP BASE Intermediate_Dir "Debug_AMD64/db_archive"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_AMD64"
+# PROP Intermediate_Dir "Debug_AMD64/db_archive"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+
+!ELSEIF "$(CFG)" == "db_archive - Win32 Release AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_AMD64"
+# PROP BASE Intermediate_Dir "Release_AMD64/db_archive"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_AMD64"
+# PROP Intermediate_Dir "Release_AMD64/db_archive"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+
+!ELSEIF "$(CFG)" == "db_archive - Win32 Debug IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_IA64"
+# PROP BASE Intermediate_Dir "Debug_IA64/db_archive"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_IA64"
+# PROP Intermediate_Dir "Debug_IA64/db_archive"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+
+!ELSEIF "$(CFG)" == "db_archive - Win32 Release IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_IA64"
+# PROP BASE Intermediate_Dir "Release_IA64/db_archive"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_IA64"
+# PROP Intermediate_Dir "Release_IA64/db_archive"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
!ENDIF
# Begin Target
-# Name "db_archive - Win32 Release"
-# Name "db_archive - Win32 Debug"
-# Name "db_archive - Win32 ASCII Debug"
-# Name "db_archive - Win32 ASCII Release"
+# Name "db_archive - Win32 Release x86"
+# Name "db_archive - Win32 Debug x86"
+# Name "db_archive - Win32 ASCII Debug x86"
+# Name "db_archive - Win32 ASCII Release x86"
# Name "db_archive - x64 Debug AMD64"
# Name "db_archive - x64 Release AMD64"
# Name "db_archive - x64 Debug IA64"
# Name "db_archive - x64 Release IA64"
+# Name "db_archive - Win32 Debug AMD64"
+# Name "db_archive - Win32 Release AMD64"
+# Name "db_archive - Win32 Debug IA64"
+# Name "db_archive - Win32 Release IA64"
# Begin Source File
SOURCE=..\db_archive\db_archive.c
diff --git a/db/build_windows/db_checkpoint.dsp b/db/build_windows/db_checkpoint.dsp
index 83bec7d2f..c196fbf8d 100644
--- a/db/build_windows/db_checkpoint.dsp
+++ b/db/build_windows/db_checkpoint.dsp
@@ -4,7 +4,7 @@
# TARGTYPE "Win32 (x86) Console Application" 0x0103
-CFG=db_checkpoint - Win32 Debug
+CFG=db_checkpoint - Win32 Debug x86
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
@@ -13,18 +13,22 @@ CFG=db_checkpoint - Win32 Debug
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "db_checkpoint.mak" CFG="db_checkpoint - Win32 Debug"
+!MESSAGE NMAKE /f "db_checkpoint.mak" CFG="db_checkpoint - Win32 Debug x86"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "db_checkpoint - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_checkpoint - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_checkpoint - Win32 ASCII Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_checkpoint - Win32 ASCII Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_checkpoint - Win32 Release x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_checkpoint - Win32 Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_checkpoint - Win32 ASCII Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_checkpoint - Win32 ASCII Release x86" (based on "Win32 (x86) Console Application")
!MESSAGE "db_checkpoint - x64 Debug AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "db_checkpoint - x64 Release AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "db_checkpoint - x64 Debug IA64" (based on "Win32 (x86) Console Application")
!MESSAGE "db_checkpoint - x64 Release IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_checkpoint - Win32 Debug AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_checkpoint - Win32 Release AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_checkpoint - Win32 Debug IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_checkpoint - Win32 Release IA64" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
@@ -34,7 +38,7 @@ CFG=db_checkpoint - Win32 Debug
CPP=cl.exe
RSC=rc.exe
-!IF "$(CFG)" == "db_checkpoint - Win32 Release"
+!IF "$(CFG)" == "db_checkpoint - Win32 Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -56,9 +60,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
-!ELSEIF "$(CFG)" == "db_checkpoint - Win32 Debug"
+!ELSEIF "$(CFG)" == "db_checkpoint - Win32 Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -80,9 +84,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
-!ELSEIF "$(CFG)" == "db_checkpoint - Win32 ASCII Debug"
+!ELSEIF "$(CFG)" == "db_checkpoint - Win32 ASCII Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -104,10 +108,10 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
+# ADD BASE LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
-!ELSEIF "$(CFG)" == "db_checkpoint - Win32 ASCII Release"
+!ELSEIF "$(CFG)" == "db_checkpoint - Win32 ASCII Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -129,8 +133,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
+# ADD BASE LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
!ELSEIF "$(CFG)" == "db_checkpoint - x64 Debug AMD64"
@@ -154,8 +158,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
!ELSEIF "$(CFG)" == "db_checkpoint - x64 Release AMD64"
@@ -179,8 +183,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
!ELSEIF "$(CFG)" == "db_checkpoint - x64 Debug IA64"
@@ -204,8 +208,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
!ELSEIF "$(CFG)" == "db_checkpoint - x64 Release IA64"
@@ -229,21 +233,125 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+
+!ELSEIF "$(CFG)" == "db_checkpoint - Win32 Debug AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_AMD64"
+# PROP BASE Intermediate_Dir "Debug_AMD64/db_checkpoint"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_AMD64"
+# PROP Intermediate_Dir "Debug_AMD64/db_checkpoint"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+
+!ELSEIF "$(CFG)" == "db_checkpoint - Win32 Release AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_AMD64"
+# PROP BASE Intermediate_Dir "Release_AMD64/db_checkpoint"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_AMD64"
+# PROP Intermediate_Dir "Release_AMD64/db_checkpoint"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+
+!ELSEIF "$(CFG)" == "db_checkpoint - Win32 Debug IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_IA64"
+# PROP BASE Intermediate_Dir "Debug_IA64/db_checkpoint"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_IA64"
+# PROP Intermediate_Dir "Debug_IA64/db_checkpoint"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+
+!ELSEIF "$(CFG)" == "db_checkpoint - Win32 Release IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_IA64"
+# PROP BASE Intermediate_Dir "Release_IA64/db_checkpoint"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_IA64"
+# PROP Intermediate_Dir "Release_IA64/db_checkpoint"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
!ENDIF
# Begin Target
-# Name "db_checkpoint - Win32 Release"
-# Name "db_checkpoint - Win32 Debug"
-# Name "db_checkpoint - Win32 ASCII Debug"
-# Name "db_checkpoint - Win32 ASCII Release"
+# Name "db_checkpoint - Win32 Release x86"
+# Name "db_checkpoint - Win32 Debug x86"
+# Name "db_checkpoint - Win32 ASCII Debug x86"
+# Name "db_checkpoint - Win32 ASCII Release x86"
# Name "db_checkpoint - x64 Debug AMD64"
# Name "db_checkpoint - x64 Release AMD64"
# Name "db_checkpoint - x64 Debug IA64"
# Name "db_checkpoint - x64 Release IA64"
+# Name "db_checkpoint - Win32 Debug AMD64"
+# Name "db_checkpoint - Win32 Release AMD64"
+# Name "db_checkpoint - Win32 Debug IA64"
+# Name "db_checkpoint - Win32 Release IA64"
# Begin Source File
SOURCE=..\db_checkpoint\db_checkpoint.c
diff --git a/db/build_windows/db_codegen.dsp b/db/build_windows/db_codegen.dsp
new file mode 100644
index 000000000..d6f5f86e3
--- /dev/null
+++ b/db/build_windows/db_codegen.dsp
@@ -0,0 +1,372 @@
+# Microsoft Developer Studio Project File - Name="db_codegen" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=db_codegen - Win32 Debug x86
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "db_codegen.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "db_codegen.mak" CFG="db_codegen - Win32 Debug x86"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "db_codegen - Win32 Release x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_codegen - Win32 Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_codegen - Win32 ASCII Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_codegen - Win32 ASCII Release x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_codegen - x64 Debug AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_codegen - x64 Release AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_codegen - x64 Debug IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_codegen - x64 Release IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_codegen - Win32 Debug AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_codegen - Win32 Release AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_codegen - Win32 Debug IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_codegen - Win32 Release IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "db_codegen - Win32 Release x86"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release/db_codegen"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release/db_codegen"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
+
+!ELSEIF "$(CFG)" == "db_codegen - Win32 Debug x86"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug/db_codegen"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug/db_codegen"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /FD /c
+# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
+
+!ELSEIF "$(CFG)" == "db_codegen - Win32 ASCII Debug x86"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_ASCII"
+# PROP BASE Intermediate_Dir "Debug_ASCII/db_codegen"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_ASCII"
+# PROP Intermediate_Dir "Debug_ASCII/db_codegen"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /FD /c
+# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
+
+!ELSEIF "$(CFG)" == "db_codegen - Win32 ASCII Release x86"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_ASCII"
+# PROP BASE Intermediate_Dir "Release_ASCII/db_codegen"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_ASCII"
+# PROP Intermediate_Dir "Release_ASCII/db_codegen"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
+
+!ELSEIF "$(CFG)" == "db_codegen - x64 Debug AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_AMD64"
+# PROP BASE Intermediate_Dir "Debug_AMD64/db_codegen"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_AMD64"
+# PROP Intermediate_Dir "Debug_AMD64/db_codegen"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+
+!ELSEIF "$(CFG)" == "db_codegen - x64 Release AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_AMD64"
+# PROP BASE Intermediate_Dir "Release_AMD64/db_codegen"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_AMD64"
+# PROP Intermediate_Dir "Release_AMD64/db_codegen"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+
+!ELSEIF "$(CFG)" == "db_codegen - x64 Debug IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_IA64"
+# PROP BASE Intermediate_Dir "Debug_IA64/db_codegen"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_IA64"
+# PROP Intermediate_Dir "Debug_IA64/db_codegen"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+
+!ELSEIF "$(CFG)" == "db_codegen - x64 Release IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_IA64"
+# PROP BASE Intermediate_Dir "Release_IA64/db_codegen"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_IA64"
+# PROP Intermediate_Dir "Release_IA64/db_codegen"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+
+!ELSEIF "$(CFG)" == "db_codegen - Win32 Debug AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_AMD64"
+# PROP BASE Intermediate_Dir "Debug_AMD64/db_codegen"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_AMD64"
+# PROP Intermediate_Dir "Debug_AMD64/db_codegen"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+
+!ELSEIF "$(CFG)" == "db_codegen - Win32 Release AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_AMD64"
+# PROP BASE Intermediate_Dir "Release_AMD64/db_codegen"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_AMD64"
+# PROP Intermediate_Dir "Release_AMD64/db_codegen"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+
+!ELSEIF "$(CFG)" == "db_codegen - Win32 Debug IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_IA64"
+# PROP BASE Intermediate_Dir "Debug_IA64/db_codegen"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_IA64"
+# PROP Intermediate_Dir "Debug_IA64/db_codegen"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+
+!ELSEIF "$(CFG)" == "db_codegen - Win32 Release IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_IA64"
+# PROP BASE Intermediate_Dir "Release_IA64/db_codegen"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_IA64"
+# PROP Intermediate_Dir "Release_IA64/db_codegen"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+
+!ENDIF
+
+# Begin Target
+
+# Name "db_codegen - Win32 Release x86"
+# Name "db_codegen - Win32 Debug x86"
+# Name "db_codegen - Win32 ASCII Debug x86"
+# Name "db_codegen - Win32 ASCII Release x86"
+# Name "db_codegen - x64 Debug AMD64"
+# Name "db_codegen - x64 Release AMD64"
+# Name "db_codegen - x64 Debug IA64"
+# Name "db_codegen - x64 Release IA64"
+# Name "db_codegen - Win32 Debug AMD64"
+# Name "db_codegen - Win32 Release AMD64"
+# Name "db_codegen - Win32 Debug IA64"
+# Name "db_codegen - Win32 Release IA64"
+# Begin Source File
+
+SOURCE=..\db_codegen\code_capi.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db_codegen\code_parse.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\db_codegen\db_codegen.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\clib\getopt.c
+# End Source File
+# End Target
+# End Project
diff --git a/db/build_windows/db_config.h b/db/build_windows/db_config.h
index 8e182ce63..74a036897 100644
--- a/db/build_windows/db_config.h
+++ b/db/build_windows/db_config.h
@@ -36,6 +36,12 @@
/* Define to 1 if you have the `atol' function. */
#define HAVE_ATOL 1
+/* Define to 1 if building BREW. */
+/* #undef HAVE_BREW */
+
+/* Define to 1 if building on BREW (SDK2). */
+/* #undef HAVE_BREW_SDK2 */
+
/* Define to 1 if you have the `clock_gettime' function. */
/* #undef HAVE_CLOCK_GETTIME */
@@ -66,6 +72,9 @@
/* Define to 1 if you have the `fchmod' function. */
/* #undef HAVE_FCHMOD */
+/* Define to 1 if you have the `fclose' function. */
+#define HAVE_FCLOSE 1
+
/* Define to 1 if you have the `fcntl' function. */
/* #undef HAVE_FCNTL */
@@ -75,12 +84,27 @@
/* Define to 1 if you have the `fdatasync' function. */
/* #undef HAVE_FDATASYNC */
+/* Define to 1 if you have the `fgetc' function. */
+#define HAVE_FGETC 1
+
+/* Define to 1 if you have the `fgets' function. */
+#define HAVE_FGETS 1
+
/* Define to 1 if allocated filesystem blocks are not zeroed. */
#define HAVE_FILESYSTEM_NOTZERO 1
+/* Define to 1 to build Berkeley DB with a fine-grained lock manager. */
+/* #undef HAVE_FINE_GRAINED_LOCK_MANAGER */
+
+/* Define to 1 if you have the `fopen' function. */
+#define HAVE_FOPEN 1
+
/* Define to 1 if you have the `ftruncate' function. */
#define HAVE_FTRUNCATE 1
+/* Define to 1 if you have the `fwrite' function. */
+#define HAVE_FWRITE 1
+
/* Define to 1 if you have the `getaddrinfo' function. */
/* #undef HAVE_GETADDRINFO */
@@ -111,6 +135,9 @@
#define HAVE_HASH 1
#endif
+/* Define to 1 if you have the `hstrerror' function. */
+/* #undef HAVE_HSTRERROR */
+
/* Define to 1 if you have the <inttypes.h> header file. */
/* #undef HAVE_INTTYPES_H */
@@ -123,6 +150,9 @@
/* Define to 1 if you have the `isprint' function. */
#define HAVE_ISPRINT 1
+/* Define to 1 if you have the `localtime' function. */
+#define HAVE_LOCALTIME 1
+
/* Define to 1 if you have the `isspace' function. */
#define HAVE_ISSPACE 1
@@ -178,6 +208,9 @@
/* Define to 1 to use the msem_XXX mutexes on HP-UX. */
/* #undef HAVE_MUTEX_HPPA_MSEM_INIT */
+/* Define to 1 to use test-and-set mutexes with blocking mutexes. */
+/* #undef HAVE_MUTEX_HYBRID */
+
/* Define to 1 to use the GCC compiler and IA64 assembly language mutexes. */
/* #undef HAVE_MUTEX_IA64_GCC_ASSEMBLY */
@@ -222,6 +255,9 @@
/* Define to 1 to use the GCC compiler and Sparc assembly language mutexes. */
/* #undef HAVE_MUTEX_SPARC_GCC_ASSEMBLY */
+/* Define to 1 if the Berkeley DB library should support mutexes. */
+#define HAVE_MUTEX_SUPPORT 1
+
/* Define to 1 if mutexes hold system resources. */
/* #undef HAVE_MUTEX_SYSTEM_RESOURCES */
@@ -249,10 +285,12 @@
/* Define to 1 to use the GCC compiler and Windows mutexes. */
/* #undef HAVE_MUTEX_WIN32_GCC */
-/* Define to 1 to use the GCC compiler and amd64 assembly language mutexes. */
+/* Define to 1 to use the GCC compiler and 64-bit x86 assembly language
+ mutexes. */
/* #undef HAVE_MUTEX_X86_64_GCC_ASSEMBLY */
-/* Define to 1 to use the GCC compiler and x86 assembly language mutexes. */
+/* Define to 1 to use the GCC compiler and 32-bit x86 assembly language
+ mutexes. */
/* #undef HAVE_MUTEX_X86_GCC_ASSEMBLY */
/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
@@ -282,6 +320,9 @@
/* Define to 1 if building on QNX. */
/* #undef HAVE_QNX */
+/* Define to 1 if you have the `qsort' function. */
+#define HAVE_QSORT 1
+
/* Define to 1 if building Queue access method. */
#ifndef HAVE_SMALLBUILD
#define HAVE_QUEUE 1
@@ -306,6 +347,9 @@
/* Define to 1 if building RPC client/server. */
/* #undef HAVE_RPC */
+/* Define to 1 if building on S60. */
+/* #undef HAVE_S60 */
+
/* Define to 1 if you have the `sched_yield' function. */
/* #undef HAVE_SCHED_YIELD */
@@ -337,7 +381,7 @@
#define HAVE_STDLIB_H 1
/* Define to 1 if you have the `strcasecmp' function. */
-/* #undef HAVE_STRCASECMP */
+#define HAVE_STRCASECMP 1
/* Define to 1 if you have the `strcat' function. */
#define HAVE_STRCAT 1
@@ -384,13 +428,13 @@
/* Define to 1 if you have the `sysconf' function. */
/* #undef HAVE_SYSCONF */
+/* Define to 1 if port includes files in the Berkeley DB source code. */
+/* #undef HAVE_SYSTEM_INCLUDE_FILES */
+
/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
*/
/* #undef HAVE_SYS_DIR_H */
-/* Define to 1 if you have the <sys/fcntl.h> header file. */
-#define HAVE_SYS_FCNTL_H 1
-
/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
*/
/* #undef HAVE_SYS_NDIR_H */
@@ -398,6 +442,9 @@
/* Define to 1 if you have the <sys/select.h> header file. */
/* #undef HAVE_SYS_SELECT_H */
+/* Define to 1 if you have the <sys/socket.h> header file. */
+/* #undef HAVE_SYS_SOCKET_H */
+
/* Define to 1 if you have the <sys/stat.h> header file. */
#define HAVE_SYS_STAT_H 1
@@ -407,12 +454,18 @@
/* Define to 1 if you have the <sys/types.h> header file. */
#define HAVE_SYS_TYPES_H 1
+/* Define to 1 if you have the `time' function. */
+#define HAVE_TIME 1
+
/* Define to 1 if you have the <unistd.h> header file. */
/* #undef HAVE_UNISTD_H */
/* Define to 1 if unlink of file with open file descriptors will fail. */
/* #undef HAVE_UNLINK_WITH_OPEN_FAILURE */
+/* Define to 1 if port includes historic database upgrade support. */
+#define HAVE_UPGRADE_SUPPORT 1
+
/* Define to 1 if building access method verification support. */
#ifndef HAVE_SMALLBUILD
#define HAVE_VERIFY 1
@@ -437,13 +490,49 @@
#define PACKAGE_NAME "Berkeley DB"
/* Define to the full name and version of this package. */
-#define PACKAGE_STRING "Berkeley DB 4.5.20"
+#define PACKAGE_STRING "Berkeley DB 4.6.18"
/* Define to the one symbol short name of this package. */
-#define PACKAGE_TARNAME "db-4.5.20"
+#define PACKAGE_TARNAME "db-4.6.18"
/* Define to the version of this package. */
-#define PACKAGE_VERSION "4.5.20"
+#define PACKAGE_VERSION "4.6.18"
+
+/* The size of a `char', as computed by sizeof. */
+/* #undef SIZEOF_CHAR */
+
+/* The size of a `char *', as computed by sizeof. */
+/* #undef SIZEOF_CHAR_P */
+
+/* The size of a `int', as computed by sizeof. */
+/* #undef SIZEOF_INT */
+
+/* The size of a `long', as computed by sizeof. */
+/* #undef SIZEOF_LONG */
+
+/* The size of a `long long', as computed by sizeof. */
+/* #undef SIZEOF_LONG_LONG */
+
+/* The size of a `short', as computed by sizeof. */
+/* #undef SIZEOF_SHORT */
+
+/* The size of a `size_t', as computed by sizeof. */
+/* #undef SIZEOF_SIZE_T */
+
+/* The size of a `unsigned char', as computed by sizeof. */
+/* #undef SIZEOF_UNSIGNED_CHAR */
+
+/* The size of a `unsigned int', as computed by sizeof. */
+/* #undef SIZEOF_UNSIGNED_INT */
+
+/* The size of a `unsigned long', as computed by sizeof. */
+/* #undef SIZEOF_UNSIGNED_LONG */
+
+/* The size of a `unsigned long long', as computed by sizeof. */
+/* #undef SIZEOF_UNSIGNED_LONG_LONG */
+
+/* The size of a `unsigned short', as computed by sizeof. */
+/* #undef SIZEOF_UNSIGNED_SHORT */
/* Define to 1 if the `S_IS*' macros in <sys/stat.h> do not work properly. */
/* #undef STAT_MACROS_BROKEN */
@@ -466,14 +555,11 @@
/* Define to empty if `const' does not conform to ANSI C. */
/* #undef const */
-#include "clib_port.h"
-#include "win_db.h"
+/* Define to `__inline__' or `__inline' if that's what the C compiler
+ calls it, or to nothing if 'inline' is not supported under any name. */
+#ifndef __cplusplus
+#define inline __inline
+#endif
-/*
- * Microsoft's compiler _doesn't_ define __STDC__ unless you invoke it with
- * arguments turning OFF all vendor extensions. Even more unfortunately, if
- * we do that, it fails to parse windows.h!!!!! So, we define __STDC__ here,
- * after windows.h comes in. Note: the compiler knows we've defined it, and
- * starts enforcing strict ANSI compliance from this point on.
- */
-#define __STDC__ 1
+/* type to use in place of socklen_t if not defined */
+/* #undef socklen_t */
diff --git a/db/build_windows/db_cxx.h b/db/build_windows/db_cxx.h
index 23d5dfc7f..f6acfc052 100644
--- a/db/build_windows/db_cxx.h
+++ b/db/build_windows/db_cxx.h
@@ -2,10 +2,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: db_cxx.in,v 12.28 2006/09/13 14:53:37 mjc Exp $
+ * $Id: db_cxx.in,v 12.40 2007/06/28 13:02:50 mjc Exp $
*/
#ifndef _DB_CXX_H_
@@ -163,6 +162,8 @@ extern "C" {
(DB *, const DBT *, const DBT *);
typedef int (*dup_compare_fcn_type) /*C++ version available*/
(DB *, const DBT *, const DBT *);
+ typedef int (*h_compare_fcn_type) /*C++ version available*/
+ (DB *, const DBT *, const DBT *);
typedef u_int32_t (*h_hash_fcn_type) /*C++ version available*/
(DB *, const void *, u_int32_t);
typedef int (*pgin_fcn_type)
@@ -184,93 +185,98 @@ public:
// These methods exactly match those in the C interface.
//
- virtual int associate(DbTxn *txn, Db *secondary,
- int (*callback)(Db *, const Dbt *, const Dbt *, Dbt *),
- u_int32_t flags);
+ virtual int associate(DbTxn *txn, Db *secondary, int (*callback)
+ (Db *, const Dbt *, const Dbt *, Dbt *), u_int32_t flags);
virtual int close(u_int32_t flags);
- virtual int compact(DbTxn *txnid, Dbt *start, Dbt *stop,
- DB_COMPACT *c_data, u_int32_t flags, Dbt *end);
+ virtual int compact(DbTxn *txnid, Dbt *start,
+ Dbt *stop, DB_COMPACT *c_data, u_int32_t flags, Dbt *end);
virtual int cursor(DbTxn *txnid, Dbc **cursorp, u_int32_t flags);
virtual int del(DbTxn *txnid, Dbt *key, u_int32_t flags);
virtual void err(int, const char *, ...);
virtual void errx(const char *, ...);
+ virtual int exists(DbTxn *txnid, Dbt *key, u_int32_t flags);
virtual int fd(int *fdp);
virtual int get(DbTxn *txnid, Dbt *key, Dbt *data, u_int32_t flags);
- virtual void *get_app_private() const;
+ virtual int get_bt_minkey(u_int32_t *);
virtual int get_byteswapped(int *);
+ virtual int get_cachesize(u_int32_t *, u_int32_t *, int *);
virtual int get_dbname(const char **, const char **);
+ virtual int get_encrypt_flags(u_int32_t *);
+ virtual void get_errfile(FILE **);
+ virtual void get_errpfx(const char **);
+ virtual int get_flags(u_int32_t *);
+ virtual int get_h_ffactor(u_int32_t *);
+ virtual int get_h_nelem(u_int32_t *);
+ virtual int get_lorder(int *);
+ virtual void get_msgfile(FILE **);
+ virtual int get_multiple();
virtual int get_open_flags(u_int32_t *);
- virtual int get_type(DBTYPE *);
+ virtual int get_pagesize(u_int32_t *);
+ virtual int get_priority(DB_CACHE_PRIORITY *);
+ virtual int get_q_extentsize(u_int32_t *);
+ virtual int get_re_delim(int *);
+ virtual int get_re_len(u_int32_t *);
+ virtual int get_re_pad(int *);
+ virtual int get_re_source(const char **);
virtual int get_transactional();
+ virtual int get_type(DBTYPE *);
virtual int join(Dbc **curslist, Dbc **dbcp, u_int32_t flags);
virtual int key_range(DbTxn *, Dbt *, DB_KEY_RANGE *, u_int32_t);
virtual int open(DbTxn *txnid,
const char *, const char *subname, DBTYPE, u_int32_t, int);
- virtual int pget(DbTxn *txnid, Dbt *key, Dbt *pkey, Dbt *data,
- u_int32_t flags);
+ virtual int pget(DbTxn *txnid,
+ Dbt *key, Dbt *pkey, Dbt *data, u_int32_t flags);
virtual int put(DbTxn *, Dbt *, Dbt *, u_int32_t);
virtual int remove(const char *, const char *, u_int32_t);
virtual int rename(const char *, const char *, const char *, u_int32_t);
- virtual int set_alloc(db_malloc_fcn_type, db_realloc_fcn_type,
- db_free_fcn_type);
+ virtual int set_alloc(
+ db_malloc_fcn_type, db_realloc_fcn_type, db_free_fcn_type);
virtual void set_app_private(void *);
virtual int set_append_recno(int (*)(Db *, Dbt *, db_recno_t));
virtual int set_bt_compare(bt_compare_fcn_type); /*deprecated*/
virtual int set_bt_compare(int (*)(Db *, const Dbt *, const Dbt *));
- virtual int get_bt_minkey(u_int32_t *);
virtual int set_bt_minkey(u_int32_t);
virtual int set_bt_prefix(bt_prefix_fcn_type); /*deprecated*/
virtual int set_bt_prefix(size_t (*)(Db *, const Dbt *, const Dbt *));
- virtual int get_cachesize(u_int32_t *, u_int32_t *, int *);
virtual int set_cachesize(u_int32_t, u_int32_t, int);
virtual int set_dup_compare(dup_compare_fcn_type); /*deprecated*/
virtual int set_dup_compare(int (*)(Db *, const Dbt *, const Dbt *));
- virtual int get_encrypt_flags(u_int32_t *);
virtual int set_encrypt(const char *, u_int32_t);
virtual void set_errcall(
void (*)(const DbEnv *, const char *, const char *));
- virtual void get_errfile(FILE **);
virtual void set_errfile(FILE *);
- virtual void get_errpfx(const char **);
virtual void set_errpfx(const char *);
virtual int set_feedback(void (*)(Db *, int, int));
- virtual int get_flags(u_int32_t *);
virtual int set_flags(u_int32_t);
- virtual int get_h_ffactor(u_int32_t *);
+ virtual int set_h_compare(h_compare_fcn_type); /*deprecated*/
+ virtual int set_h_compare(int (*)(Db *, const Dbt *, const Dbt *));
virtual int set_h_ffactor(u_int32_t);
virtual int set_h_hash(h_hash_fcn_type); /*deprecated*/
virtual int set_h_hash(u_int32_t (*)(Db *, const void *, u_int32_t));
- virtual int get_h_nelem(u_int32_t *);
virtual int set_h_nelem(u_int32_t);
- virtual int get_lorder(int *);
virtual int set_lorder(int);
virtual void set_msgcall(void (*)(const DbEnv *, const char *));
- virtual void get_msgfile(FILE **);
virtual void set_msgfile(FILE *);
- virtual int get_pagesize(u_int32_t *);
virtual int set_pagesize(u_int32_t);
virtual int set_paniccall(void (*)(DbEnv *, int));
- virtual int get_re_delim(int *);
+ virtual int set_priority(DB_CACHE_PRIORITY);
+ virtual int set_q_extentsize(u_int32_t);
virtual int set_re_delim(int);
- virtual int get_re_len(u_int32_t *);
virtual int set_re_len(u_int32_t);
- virtual int get_re_pad(int *);
virtual int set_re_pad(int);
- virtual int get_re_source(const char **);
virtual int set_re_source(const char *);
- virtual int get_q_extentsize(u_int32_t *);
- virtual int set_q_extentsize(u_int32_t);
virtual int stat(DbTxn *, void *sp, u_int32_t flags);
virtual int stat_print(u_int32_t flags);
virtual int sync(u_int32_t flags);
virtual int truncate(DbTxn *, u_int32_t *, u_int32_t);
virtual int upgrade(const char *name, u_int32_t flags);
- virtual int verify(const char *, const char *, __DB_STD(ostream) *,
- u_int32_t);
+ virtual int verify(
+ const char *, const char *, __DB_STD(ostream) *, u_int32_t);
// These additional methods are not in the C interface, and
// are only available for C++.
//
+ virtual void *get_app_private() const;
virtual __DB_STD(ostream) *get_error_stream();
virtual void set_error_stream(__DB_STD(ostream) *);
virtual __DB_STD(ostream) *get_message_stream();
@@ -327,6 +333,7 @@ public:
size_t (*bt_prefix_callback_)(Db *, const Dbt *, const Dbt *);
int (*dup_compare_callback_)(Db *, const Dbt *, const Dbt *);
void (*feedback_callback_)(Db *, int, int);
+ int (*h_compare_callback_)(Db *, const Dbt *, const Dbt *);
u_int32_t (*h_hash_callback_)(Db *, const void *, u_int32_t);
};
@@ -343,8 +350,10 @@ public:
int del(u_int32_t flags);
int dup(Dbc** cursorp, u_int32_t flags);
int get(Dbt* key, Dbt *data, u_int32_t flags);
+ int get_priority(DB_CACHE_PRIORITY *priorityp);
int pget(Dbt* key, Dbt* pkey, Dbt *data, u_int32_t flags);
int put(Dbt* key, Dbt *data, u_int32_t flags);
+ int set_priority(DB_CACHE_PRIORITY priority);
private:
// No data is permitted in this class (see comment at top)
@@ -409,6 +418,8 @@ public:
virtual void set_app_private(void *);
virtual int get_cachesize(u_int32_t *, u_int32_t *, int *);
virtual int set_cachesize(u_int32_t, u_int32_t, int);
+ virtual int get_cache_max(u_int32_t *, u_int32_t *);
+ virtual int set_cache_max(u_int32_t, u_int32_t);
virtual int get_data_dirs(const char ***);
virtual int set_data_dir(const char *);
virtual int get_encrypt_flags(u_int32_t *);
@@ -452,8 +463,8 @@ public:
virtual int set_mp_mmapsize(size_t);
virtual int get_mp_max_openfd(int *);
virtual int set_mp_max_openfd(int);
- virtual int get_mp_max_write(int *, int *);
- virtual int set_mp_max_write(int, int);
+ virtual int get_mp_max_write(int *, db_timeout_t *);
+ virtual int set_mp_max_write(int, db_timeout_t);
virtual void set_msgcall(void (*)(const DbEnv *, const char *));
virtual void get_msgfile(FILE **);
virtual void set_msgfile(FILE *);
@@ -572,17 +583,19 @@ public:
// Replication functions
//
- virtual int rep_elect(int, int, int *, u_int32_t);
+ virtual int rep_elect(int, int, u_int32_t);
virtual int rep_flush();
- virtual int rep_process_message(Dbt *, Dbt *, int *, DbLsn *);
+ virtual int rep_process_message(Dbt *, Dbt *, int, DbLsn *);
virtual int rep_start(Dbt *, u_int32_t);
virtual int rep_stat(DB_REP_STAT **statp, u_int32_t flags);
virtual int rep_stat_print(u_int32_t flags);
+ virtual int rep_set_lease(u_int32_t, u_int32_t);
virtual int rep_get_limit(u_int32_t *, u_int32_t *);
virtual int rep_set_limit(u_int32_t, u_int32_t);
virtual int rep_set_transport(int, int (*)(DbEnv *,
const Dbt *, const Dbt *, const DbLsn *, int, u_int32_t));
virtual int set_rep_request(u_int32_t, u_int32_t);
+ virtual int get_thread_count(u_int32_t *);
virtual int set_thread_count(u_int32_t);
virtual int set_thread_id(void (*)(DbEnv *, pid_t *, db_threadid_t *));
virtual int set_thread_id_string(char *(*)(DbEnv *,
@@ -595,7 +608,7 @@ public:
//
virtual int rep_get_nsites(int *n);
virtual int rep_set_nsites(int n);
- virtual int rep_get_priority(int *priority);
+ virtual int rep_get_priority(int *priorityp);
virtual int rep_set_priority(int priority);
virtual int rep_get_timeout(int which, db_timeout_t *timeout);
virtual int rep_set_timeout(int which, db_timeout_t timeout);
@@ -607,6 +620,8 @@ public:
u_int32_t flags);
virtual int repmgr_site_list(u_int *countp, DB_REPMGR_SITE **listp);
virtual int repmgr_start(int nthreads, u_int32_t flags);
+ virtual int repmgr_stat(DB_REPMGR_STAT **statp, u_int32_t flags);
+ virtual int repmgr_stat_print(u_int32_t flags);
// Conversion functions
//
@@ -719,6 +734,7 @@ class _exported DbLogc : protected DB_LOGC
public:
int close(u_int32_t _flags);
int get(DbLsn *lsn, Dbt *data, u_int32_t _flags);
+ int version(u_int32_t *versionp, u_int32_t _flags);
private:
// No data is permitted in this class (see comment at top)
@@ -754,25 +770,25 @@ class _exported DbMpoolFile
public:
int close(u_int32_t flags);
int get(db_pgno_t *pgnoaddr, DbTxn *txn, u_int32_t flags, void *pagep);
- int open(const char *file, u_int32_t flags, int mode, size_t pagesize);
- int get_transactional(void);
- int put(void *pgaddr, u_int32_t flags);
- int set(void *pgaddr, u_int32_t flags);
int get_clear_len(u_int32_t *len);
- int set_clear_len(u_int32_t len);
int get_fileid(u_int8_t *fileid);
- int set_fileid(u_int8_t *fileid);
int get_flags(u_int32_t *flagsp);
- int set_flags(u_int32_t flags, int onoff);
int get_ftype(int *ftype);
- int set_ftype(int ftype);
+ int get_last_pgno(db_pgno_t *pgnop);
int get_lsn_offset(int32_t *offsetp);
- int set_lsn_offset(int32_t offset);
int get_maxsize(u_int32_t *gbytes, u_int32_t *bytes);
- int set_maxsize(u_int32_t gbytes, u_int32_t bytes);
int get_pgcookie(DBT *dbt);
- int set_pgcookie(DBT *dbt);
int get_priority(DB_CACHE_PRIORITY *priorityp);
+ int get_transactional(void);
+ int open(const char *file, u_int32_t flags, int mode, size_t pagesize);
+ int put(void *pgaddr, DB_CACHE_PRIORITY priority, u_int32_t flags);
+ int set_clear_len(u_int32_t len);
+ int set_fileid(u_int8_t *fileid);
+ int set_flags(u_int32_t flags, int onoff);
+ int set_ftype(int ftype);
+ int set_lsn_offset(int32_t offset);
+ int set_maxsize(u_int32_t gbytes, u_int32_t bytes);
+ int set_pgcookie(DBT *dbt);
int set_priority(DB_CACHE_PRIORITY priority);
int sync();
diff --git a/db/build_windows/db_deadlock.dsp b/db/build_windows/db_deadlock.dsp
index c6b4f5c3d..05c64342d 100644
--- a/db/build_windows/db_deadlock.dsp
+++ b/db/build_windows/db_deadlock.dsp
@@ -4,7 +4,7 @@
# TARGTYPE "Win32 (x86) Console Application" 0x0103
-CFG=db_deadlock - Win32 Debug
+CFG=db_deadlock - Win32 Debug x86
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
@@ -13,18 +13,22 @@ CFG=db_deadlock - Win32 Debug
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "db_deadlock.mak" CFG="db_deadlock - Win32 Debug"
+!MESSAGE NMAKE /f "db_deadlock.mak" CFG="db_deadlock - Win32 Debug x86"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "db_deadlock - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_deadlock - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_deadlock - Win32 ASCII Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_deadlock - Win32 ASCII Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_deadlock - Win32 Release x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_deadlock - Win32 Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_deadlock - Win32 ASCII Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_deadlock - Win32 ASCII Release x86" (based on "Win32 (x86) Console Application")
!MESSAGE "db_deadlock - x64 Debug AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "db_deadlock - x64 Release AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "db_deadlock - x64 Debug IA64" (based on "Win32 (x86) Console Application")
!MESSAGE "db_deadlock - x64 Release IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_deadlock - Win32 Debug AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_deadlock - Win32 Release AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_deadlock - Win32 Debug IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_deadlock - Win32 Release IA64" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
@@ -34,7 +38,7 @@ CFG=db_deadlock - Win32 Debug
CPP=cl.exe
RSC=rc.exe
-!IF "$(CFG)" == "db_deadlock - Win32 Release"
+!IF "$(CFG)" == "db_deadlock - Win32 Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -56,9 +60,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
-!ELSEIF "$(CFG)" == "db_deadlock - Win32 Debug"
+!ELSEIF "$(CFG)" == "db_deadlock - Win32 Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -80,9 +84,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
-!ELSEIF "$(CFG)" == "db_deadlock - Win32 ASCII Debug"
+!ELSEIF "$(CFG)" == "db_deadlock - Win32 ASCII Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -104,10 +108,10 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
+# ADD BASE LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
-!ELSEIF "$(CFG)" == "db_deadlock - Win32 ASCII Release"
+!ELSEIF "$(CFG)" == "db_deadlock - Win32 ASCII Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -129,8 +133,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
+# ADD BASE LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
!ELSEIF "$(CFG)" == "db_deadlock - x64 Debug AMD64"
@@ -154,8 +158,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
!ELSEIF "$(CFG)" == "db_deadlock - x64 Release AMD64"
@@ -179,8 +183,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
!ELSEIF "$(CFG)" == "db_deadlock - x64 Debug IA64"
@@ -204,8 +208,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
!ELSEIF "$(CFG)" == "db_deadlock - x64 Release IA64"
@@ -229,21 +233,125 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+
+!ELSEIF "$(CFG)" == "db_deadlock - Win32 Debug AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_AMD64"
+# PROP BASE Intermediate_Dir "Debug_AMD64/db_deadlock"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_AMD64"
+# PROP Intermediate_Dir "Debug_AMD64/db_deadlock"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+
+!ELSEIF "$(CFG)" == "db_deadlock - Win32 Release AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_AMD64"
+# PROP BASE Intermediate_Dir "Release_AMD64/db_deadlock"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_AMD64"
+# PROP Intermediate_Dir "Release_AMD64/db_deadlock"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+
+!ELSEIF "$(CFG)" == "db_deadlock - Win32 Debug IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_IA64"
+# PROP BASE Intermediate_Dir "Debug_IA64/db_deadlock"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_IA64"
+# PROP Intermediate_Dir "Debug_IA64/db_deadlock"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+
+!ELSEIF "$(CFG)" == "db_deadlock - Win32 Release IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_IA64"
+# PROP BASE Intermediate_Dir "Release_IA64/db_deadlock"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_IA64"
+# PROP Intermediate_Dir "Release_IA64/db_deadlock"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
!ENDIF
# Begin Target
-# Name "db_deadlock - Win32 Release"
-# Name "db_deadlock - Win32 Debug"
-# Name "db_deadlock - Win32 ASCII Debug"
-# Name "db_deadlock - Win32 ASCII Release"
+# Name "db_deadlock - Win32 Release x86"
+# Name "db_deadlock - Win32 Debug x86"
+# Name "db_deadlock - Win32 ASCII Debug x86"
+# Name "db_deadlock - Win32 ASCII Release x86"
# Name "db_deadlock - x64 Debug AMD64"
# Name "db_deadlock - x64 Release AMD64"
# Name "db_deadlock - x64 Debug IA64"
# Name "db_deadlock - x64 Release IA64"
+# Name "db_deadlock - Win32 Debug AMD64"
+# Name "db_deadlock - Win32 Release AMD64"
+# Name "db_deadlock - Win32 Debug IA64"
+# Name "db_deadlock - Win32 Release IA64"
# Begin Source File
SOURCE=..\db_deadlock\db_deadlock.c
diff --git a/db/build_windows/db_dll.dsp b/db/build_windows/db_dll.dsp
index 9c15ce57a..e99f4eaa3 100644
--- a/db/build_windows/db_dll.dsp
+++ b/db/build_windows/db_dll.dsp
@@ -4,7 +4,7 @@
# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-CFG=db_dll - Win32 Debug
+CFG=db_dll - Win32 Debug x86
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
@@ -13,18 +13,22 @@ CFG=db_dll - Win32 Debug
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "db_dll.mak" CFG="db_dll - Win32 Debug"
+!MESSAGE NMAKE /f "db_dll.mak" CFG="db_dll - Win32 Debug x86"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "db_dll - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "db_dll - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "db_dll - Win32 ASCII Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "db_dll - Win32 ASCII Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "db_dll - Win32 Release x86" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "db_dll - Win32 Debug x86" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "db_dll - Win32 ASCII Debug x86" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "db_dll - Win32 ASCII Release x86" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE "db_dll - x64 Debug AMD64" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE "db_dll - x64 Release AMD64" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE "db_dll - x64 Debug IA64" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE "db_dll - x64 Release IA64" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "db_dll - Win32 Debug AMD64" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "db_dll - Win32 Release AMD64" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "db_dll - Win32 Debug IA64" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "db_dll - Win32 Release IA64" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE
# Begin Project
@@ -35,7 +39,7 @@ CPP=cl.exe
MTL=midl.exe
RSC=rc.exe
-!IF "$(CFG)" == "db_dll - Win32 Release"
+!IF "$(CFG)" == "db_dll - Win32 Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -59,9 +63,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 ws2_32.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:windows /dll /machine:I386
-# ADD LINK32 ws2_32.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:I386 /out:"Release/libdb45.dll" /libpath:"$(OUTDIR)"
+# ADD LINK32 ws2_32.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:I386 /out:"Release/libdb46.dll" /libpath:"$(OUTDIR)"
-!ELSEIF "$(CFG)" == "db_dll - Win32 Debug"
+!ELSEIF "$(CFG)" == "db_dll - Win32 Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -86,9 +90,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 ws2_32.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 ws2_32.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /export:__db_assert /pdb:none /debug /machine:I386 /out:"Debug/libdb45d.dll" /fixed:no /libpath:"$(OUTDIR)"
+# ADD LINK32 ws2_32.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /export:__db_assert /pdb:none /debug /machine:I386 /out:"Debug/libdb46d.dll" /fixed:no /libpath:"$(OUTDIR)"
-!ELSEIF "$(CFG)" == "db_dll - Win32 ASCII Debug"
+!ELSEIF "$(CFG)" == "db_dll - Win32 ASCII Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -114,10 +118,10 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 ws2_32.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /pdb:none /debug /machine:I386 /out:"Debug_ASCII/libdb45d.dll" /fixed:no
-# ADD LINK32 ws2_32.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /export:__db_assert /pdb:none /debug /machine:I386 /out:"Debug_ASCII/libdb45d.dll" /fixed:no /libpath:"$(OUTDIR)"
+# ADD BASE LINK32 ws2_32.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /pdb:none /debug /machine:I386 /out:"Debug_ASCII/libdb46d.dll" /fixed:no
+# ADD LINK32 ws2_32.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /export:__db_assert /pdb:none /debug /machine:I386 /out:"Debug_ASCII/libdb46d.dll" /fixed:no /libpath:"$(OUTDIR)"
-!ELSEIF "$(CFG)" == "db_dll - Win32 ASCII Release"
+!ELSEIF "$(CFG)" == "db_dll - Win32 ASCII Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -141,8 +145,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 ws2_32.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:I386 /out:"Release_ASCII/libdb45.dll"
-# ADD LINK32 ws2_32.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:I386 /out:"Release_ASCII/libdb45.dll" /libpath:"$(OUTDIR)"
+# ADD BASE LINK32 ws2_32.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:I386 /out:"Release_ASCII/libdb46.dll"
+# ADD LINK32 ws2_32.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:I386 /out:"Release_ASCII/libdb46.dll" /libpath:"$(OUTDIR)"
!ELSEIF "$(CFG)" == "db_dll - x64 Debug AMD64"
@@ -169,8 +173,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 ws2_32.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /debug /machine:AMD64 /out:"Debug_AMD64/libdb45d.dll" /fixed:no
-# ADD LINK32 ws2_32.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /export:__db_assert /debug /machine:AMD64 /out:"Debug_AMD64/libdb45d.dll" /fixed:no /libpath:"$(OUTDIR)"
+# ADD BASE LINK32 ws2_32.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /debug /machine:AMD64 /out:"Debug_AMD64/libdb46d.dll" /fixed:no
+# ADD LINK32 ws2_32.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /export:__db_assert /debug /machine:AMD64 /out:"Debug_AMD64/libdb46d.dll" /fixed:no /libpath:"$(OUTDIR)"
!ELSEIF "$(CFG)" == "db_dll - x64 Release AMD64"
@@ -196,8 +200,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 ws2_32.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:AMD64 /out:"Release_AMD64/libdb45.dll"
-# ADD LINK32 ws2_32.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:AMD64 /out:"Release_AMD64/libdb45.dll" /libpath:"$(OUTDIR)"
+# ADD BASE LINK32 ws2_32.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:AMD64 /out:"Release_AMD64/libdb46.dll"
+# ADD LINK32 ws2_32.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:AMD64 /out:"Release_AMD64/libdb46.dll" /libpath:"$(OUTDIR)"
!ELSEIF "$(CFG)" == "db_dll - x64 Debug IA64"
@@ -225,8 +229,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 ws2_32.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /debug /machine:IA64 /out:"Debug_IA64/libdb45d.dll" /fixed:no
-# ADD LINK32 ws2_32.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /export:__db_assert /debug /machine:IA64 /out:"Debug_IA64/libdb45d.dll" /fixed:no /libpath:"$(OUTDIR)"
+# ADD BASE LINK32 ws2_32.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /debug /machine:IA64 /out:"Debug_IA64/libdb46d.dll" /fixed:no
+# ADD LINK32 ws2_32.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /export:__db_assert /debug /machine:IA64 /out:"Debug_IA64/libdb46d.dll" /fixed:no /libpath:"$(OUTDIR)"
!ELSEIF "$(CFG)" == "db_dll - x64 Release IA64"
@@ -252,21 +256,136 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 ws2_32.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:IA64 /out:"Release_IA64/libdb45.dll"
-# ADD LINK32 ws2_32.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:IA64 /out:"Release_IA64/libdb45.dll" /libpath:"$(OUTDIR)"
+# ADD BASE LINK32 ws2_32.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:IA64 /out:"Release_IA64/libdb46.dll"
+# ADD LINK32 ws2_32.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:IA64 /out:"Release_IA64/libdb46.dll" /libpath:"$(OUTDIR)"
+
+!ELSEIF "$(CFG)" == "db_dll - Win32 Debug AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_AMD64"
+# PROP BASE Intermediate_Dir "Debug_AMD64/db_dll"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_AMD64"
+# PROP Intermediate_Dir "Debug_AMD64/db_dll"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "UNICODE" /D "_UNICODE" /D "DB_CREATE_DLL" /D "DIAGNOSTIC" /D "CONFIG_TEST" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FD /c
+# SUBTRACT BASE CPP /Fr
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "UNICODE" /D "_UNICODE" /D "DB_CREATE_DLL" /D "DIAGNOSTIC" /D "CONFIG_TEST" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FD /Wp64 /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 ws2_32.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /debug /machine:AMD64 /out:"Debug_AMD64/libdb46d.dll" /fixed:no
+# ADD LINK32 ws2_32.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /export:__db_assert /debug /machine:AMD64 /out:"Debug_AMD64/libdb46d.dll" /fixed:no /libpath:"$(OUTDIR)"
+
+!ELSEIF "$(CFG)" == "db_dll - Win32 Release AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_AMD64"
+# PROP BASE Intermediate_Dir "Release_AMD64/db_dll"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_AMD64"
+# PROP Intermediate_Dir "Release_AMD64/db_dll"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /Ob2 /I "." /I ".." /D "UNICODE" /D "_UNICODE" /D "DB_CREATE_DLL" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /Ob2 /I "." /I ".." /D "UNICODE" /D "_UNICODE" /D "DB_CREATE_DLL" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /Wp64 /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 ws2_32.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:AMD64 /out:"Release_AMD64/libdb46.dll"
+# ADD LINK32 ws2_32.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:AMD64 /out:"Release_AMD64/libdb46.dll" /libpath:"$(OUTDIR)"
+
+!ELSEIF "$(CFG)" == "db_dll - Win32 Debug IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_IA64"
+# PROP BASE Intermediate_Dir "Debug_IA64/db_dll"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_IA64"
+# PROP Intermediate_Dir "Debug_IA64/db_dll"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "UNICODE" /D "_UNICODE" /D "DB_CREATE_DLL" /D "DIAGNOSTIC" /D "CONFIG_TEST" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /Wp64 /FD /c
+# SUBTRACT BASE CPP /Fr
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "UNICODE" /D "_UNICODE" /D "DB_CREATE_DLL" /D "DIAGNOSTIC" /D "CONFIG_TEST" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /Wp64 /FD /c
+# SUBTRACT CPP /Fr
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 ws2_32.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /debug /machine:IA64 /out:"Debug_IA64/libdb46d.dll" /fixed:no
+# ADD LINK32 ws2_32.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /export:__db_assert /debug /machine:IA64 /out:"Debug_IA64/libdb46d.dll" /fixed:no /libpath:"$(OUTDIR)"
+
+!ELSEIF "$(CFG)" == "db_dll - Win32 Release IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_IA64"
+# PROP BASE Intermediate_Dir "Release_IA64/db_dll"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_IA64"
+# PROP Intermediate_Dir "Release_IA64/db_dll"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /Ob2 /I "." /I ".." /D "UNICODE" /D "_UNICODE" /D "DB_CREATE_DLL" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /Ob2 /I "." /I ".." /D "UNICODE" /D "_UNICODE" /D "DB_CREATE_DLL" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /Wp64 /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 ws2_32.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:IA64 /out:"Release_IA64/libdb46.dll"
+# ADD LINK32 ws2_32.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:IA64 /out:"Release_IA64/libdb46.dll" /libpath:"$(OUTDIR)"
!ENDIF
# Begin Target
-# Name "db_dll - Win32 Release"
-# Name "db_dll - Win32 Debug"
-# Name "db_dll - Win32 ASCII Debug"
-# Name "db_dll - Win32 ASCII Release"
+# Name "db_dll - Win32 Release x86"
+# Name "db_dll - Win32 Debug x86"
+# Name "db_dll - Win32 ASCII Debug x86"
+# Name "db_dll - Win32 ASCII Release x86"
# Name "db_dll - x64 Debug AMD64"
# Name "db_dll - x64 Release AMD64"
# Name "db_dll - x64 Debug IA64"
# Name "db_dll - x64 Release IA64"
+# Name "db_dll - Win32 Debug AMD64"
+# Name "db_dll - Win32 Release AMD64"
+# Name "db_dll - Win32 Debug IA64"
+# Name "db_dll - Win32 Release IA64"
# Begin Source File
SOURCE=..\btree\bt_compact.c
@@ -361,10 +480,6 @@ SOURCE=..\clib\getaddrinfo.c
# End Source File
# Begin Source File
-SOURCE=..\clib\strcasecmp.c
-# End Source File
-# Begin Source File
-
SOURCE=..\clib\strsep.c
# End Source File
# Begin Source File
@@ -373,10 +488,6 @@ SOURCE=..\common\db_byteorder.c
# End Source File
# Begin Source File
-SOURCE=..\common\db_clock.c
-# End Source File
-# Begin Source File
-
SOURCE=..\common\db_err.c
# End Source File
# Begin Source File
@@ -393,6 +504,10 @@ SOURCE=..\common\db_log2.c
# End Source File
# Begin Source File
+SOURCE=..\common\db_shash.c
+# End Source File
+# Begin Source File
+
SOURCE=..\common\mkpath.c
# End Source File
# Begin Source File
@@ -621,11 +736,7 @@ SOURCE=..\dbreg\dbreg_util.c
# End Source File
# Begin Source File
-SOURCE=..\env\db_salloc.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\env\db_shash.c
+SOURCE=..\env\env_alloc.c
# End Source File
# Begin Source File
@@ -641,10 +752,18 @@ SOURCE=..\env\env_file.c
# End Source File
# Begin Source File
+SOURCE=..\env\env_globals.c
+# End Source File
+# Begin Source File
+
SOURCE=..\env\env_method.c
# End Source File
# Begin Source File
+SOURCE=..\env\env_name.c
+# End Source File
+# Begin Source File
+
SOURCE=..\env\env_open.c
# End Source File
# Begin Source File
@@ -865,6 +984,10 @@ SOURCE=..\mp\mp_register.c
# End Source File
# Begin Source File
+SOURCE=..\mp\mp_resize.c
+# End Source File
+# Begin Source File
+
SOURCE=..\mp\mp_stat.c
# End Source File
# Begin Source File
@@ -901,15 +1024,15 @@ SOURCE=..\mutex\mut_win32.c
# End Source File
# Begin Source File
-SOURCE=..\os\os_alloc.c
+SOURCE=..\os\os_abort.c
# End Source File
# Begin Source File
-SOURCE=..\os\os_fzero.c
+SOURCE=..\os\os_alloc.c
# End Source File
# Begin Source File
-SOURCE=..\os\os_mkdir.c
+SOURCE=..\os\os_fzero.c
# End Source File
# Begin Source File
@@ -985,6 +1108,10 @@ SOURCE=..\os_windows\os_map.c
# End Source File
# Begin Source File
+SOURCE=..\os_windows\os_mkdir.c
+# End Source File
+# Begin Source File
+
SOURCE=..\os_windows\os_open.c
# End Source File
# Begin Source File
@@ -1077,6 +1204,10 @@ SOURCE=..\rep\rep_elect.c
# End Source File
# Begin Source File
+SOURCE=..\rep\rep_lease.c
+# End Source File
+# Begin Source File
+
SOURCE=..\rep\rep_log.c
# End Source File
# Begin Source File
diff --git a/db/build_windows/db_dump.dsp b/db/build_windows/db_dump.dsp
index 10a681499..200cd3c68 100644
--- a/db/build_windows/db_dump.dsp
+++ b/db/build_windows/db_dump.dsp
@@ -4,7 +4,7 @@
# TARGTYPE "Win32 (x86) Console Application" 0x0103
-CFG=db_dump - Win32 Debug
+CFG=db_dump - Win32 Debug x86
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
@@ -13,18 +13,22 @@ CFG=db_dump - Win32 Debug
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "db_dump.mak" CFG="db_dump - Win32 Debug"
+!MESSAGE NMAKE /f "db_dump.mak" CFG="db_dump - Win32 Debug x86"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "db_dump - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_dump - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_dump - Win32 ASCII Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_dump - Win32 ASCII Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_dump - Win32 Release x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_dump - Win32 Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_dump - Win32 ASCII Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_dump - Win32 ASCII Release x86" (based on "Win32 (x86) Console Application")
!MESSAGE "db_dump - x64 Debug AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "db_dump - x64 Release AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "db_dump - x64 Debug IA64" (based on "Win32 (x86) Console Application")
!MESSAGE "db_dump - x64 Release IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_dump - Win32 Debug AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_dump - Win32 Release AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_dump - Win32 Debug IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_dump - Win32 Release IA64" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
@@ -34,7 +38,7 @@ CFG=db_dump - Win32 Debug
CPP=cl.exe
RSC=rc.exe
-!IF "$(CFG)" == "db_dump - Win32 Release"
+!IF "$(CFG)" == "db_dump - Win32 Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -56,9 +60,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
-!ELSEIF "$(CFG)" == "db_dump - Win32 Debug"
+!ELSEIF "$(CFG)" == "db_dump - Win32 Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -80,9 +84,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
-!ELSEIF "$(CFG)" == "db_dump - Win32 ASCII Debug"
+!ELSEIF "$(CFG)" == "db_dump - Win32 ASCII Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -104,10 +108,10 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
+# ADD BASE LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
-!ELSEIF "$(CFG)" == "db_dump - Win32 ASCII Release"
+!ELSEIF "$(CFG)" == "db_dump - Win32 ASCII Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -129,8 +133,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
+# ADD BASE LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
!ELSEIF "$(CFG)" == "db_dump - x64 Debug AMD64"
@@ -154,8 +158,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
!ELSEIF "$(CFG)" == "db_dump - x64 Release AMD64"
@@ -179,8 +183,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
!ELSEIF "$(CFG)" == "db_dump - x64 Debug IA64"
@@ -204,8 +208,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
!ELSEIF "$(CFG)" == "db_dump - x64 Release IA64"
@@ -229,21 +233,125 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+
+!ELSEIF "$(CFG)" == "db_dump - Win32 Debug AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_AMD64"
+# PROP BASE Intermediate_Dir "Debug_AMD64/db_dump"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_AMD64"
+# PROP Intermediate_Dir "Debug_AMD64/db_dump"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+
+!ELSEIF "$(CFG)" == "db_dump - Win32 Release AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_AMD64"
+# PROP BASE Intermediate_Dir "Release_AMD64/db_dump"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_AMD64"
+# PROP Intermediate_Dir "Release_AMD64/db_dump"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+
+!ELSEIF "$(CFG)" == "db_dump - Win32 Debug IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_IA64"
+# PROP BASE Intermediate_Dir "Debug_IA64/db_dump"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_IA64"
+# PROP Intermediate_Dir "Debug_IA64/db_dump"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+
+!ELSEIF "$(CFG)" == "db_dump - Win32 Release IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_IA64"
+# PROP BASE Intermediate_Dir "Release_IA64/db_dump"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_IA64"
+# PROP Intermediate_Dir "Release_IA64/db_dump"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
!ENDIF
# Begin Target
-# Name "db_dump - Win32 Release"
-# Name "db_dump - Win32 Debug"
-# Name "db_dump - Win32 ASCII Debug"
-# Name "db_dump - Win32 ASCII Release"
+# Name "db_dump - Win32 Release x86"
+# Name "db_dump - Win32 Debug x86"
+# Name "db_dump - Win32 ASCII Debug x86"
+# Name "db_dump - Win32 ASCII Release x86"
# Name "db_dump - x64 Debug AMD64"
# Name "db_dump - x64 Release AMD64"
# Name "db_dump - x64 Debug IA64"
# Name "db_dump - x64 Release IA64"
+# Name "db_dump - Win32 Debug AMD64"
+# Name "db_dump - Win32 Release AMD64"
+# Name "db_dump - Win32 Debug IA64"
+# Name "db_dump - Win32 Release IA64"
# Begin Source File
SOURCE=..\db_dump\db_dump.c
diff --git a/db/build_windows/db_hotbackup.dsp b/db/build_windows/db_hotbackup.dsp
index aa6a270bb..d983147ad 100644
--- a/db/build_windows/db_hotbackup.dsp
+++ b/db/build_windows/db_hotbackup.dsp
@@ -4,7 +4,7 @@
# TARGTYPE "Win32 (x86) Console Application" 0x0103
-CFG=db_hotbackup - Win32 Debug
+CFG=db_hotbackup - Win32 Debug x86
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
@@ -13,18 +13,22 @@ CFG=db_hotbackup - Win32 Debug
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "db_hotbackup.mak" CFG="db_hotbackup - Win32 Debug"
+!MESSAGE NMAKE /f "db_hotbackup.mak" CFG="db_hotbackup - Win32 Debug x86"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "db_hotbackup - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_hotbackup - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_hotbackup - Win32 ASCII Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_hotbackup - Win32 ASCII Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_hotbackup - Win32 Release x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_hotbackup - Win32 Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_hotbackup - Win32 ASCII Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_hotbackup - Win32 ASCII Release x86" (based on "Win32 (x86) Console Application")
!MESSAGE "db_hotbackup - x64 Debug AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "db_hotbackup - x64 Release AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "db_hotbackup - x64 Debug IA64" (based on "Win32 (x86) Console Application")
!MESSAGE "db_hotbackup - x64 Release IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_hotbackup - Win32 Debug AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_hotbackup - Win32 Release AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_hotbackup - Win32 Debug IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_hotbackup - Win32 Release IA64" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
@@ -34,7 +38,7 @@ CFG=db_hotbackup - Win32 Debug
CPP=cl.exe
RSC=rc.exe
-!IF "$(CFG)" == "db_hotbackup - Win32 Release"
+!IF "$(CFG)" == "db_hotbackup - Win32 Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -56,9 +60,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
-!ELSEIF "$(CFG)" == "db_hotbackup - Win32 Debug"
+!ELSEIF "$(CFG)" == "db_hotbackup - Win32 Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -80,9 +84,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
-!ELSEIF "$(CFG)" == "db_hotbackup - Win32 ASCII Debug"
+!ELSEIF "$(CFG)" == "db_hotbackup - Win32 ASCII Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -104,10 +108,10 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
+# ADD BASE LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
-!ELSEIF "$(CFG)" == "db_hotbackup - Win32 ASCII Release"
+!ELSEIF "$(CFG)" == "db_hotbackup - Win32 ASCII Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -129,8 +133,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
+# ADD BASE LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
!ELSEIF "$(CFG)" == "db_hotbackup - x64 Debug AMD64"
@@ -154,8 +158,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
!ELSEIF "$(CFG)" == "db_hotbackup - x64 Release AMD64"
@@ -179,8 +183,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
!ELSEIF "$(CFG)" == "db_hotbackup - x64 Debug IA64"
@@ -204,8 +208,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
!ELSEIF "$(CFG)" == "db_hotbackup - x64 Release IA64"
@@ -229,21 +233,125 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+
+!ELSEIF "$(CFG)" == "db_hotbackup - Win32 Debug AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_AMD64"
+# PROP BASE Intermediate_Dir "Debug_AMD64/db_hotbackup"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_AMD64"
+# PROP Intermediate_Dir "Debug_AMD64/db_hotbackup"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+
+!ELSEIF "$(CFG)" == "db_hotbackup - Win32 Release AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_AMD64"
+# PROP BASE Intermediate_Dir "Release_AMD64/db_hotbackup"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_AMD64"
+# PROP Intermediate_Dir "Release_AMD64/db_hotbackup"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+
+!ELSEIF "$(CFG)" == "db_hotbackup - Win32 Debug IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_IA64"
+# PROP BASE Intermediate_Dir "Debug_IA64/db_hotbackup"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_IA64"
+# PROP Intermediate_Dir "Debug_IA64/db_hotbackup"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+
+!ELSEIF "$(CFG)" == "db_hotbackup - Win32 Release IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_IA64"
+# PROP BASE Intermediate_Dir "Release_IA64/db_hotbackup"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_IA64"
+# PROP Intermediate_Dir "Release_IA64/db_hotbackup"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
!ENDIF
# Begin Target
-# Name "db_hotbackup - Win32 Release"
-# Name "db_hotbackup - Win32 Debug"
-# Name "db_hotbackup - Win32 ASCII Debug"
-# Name "db_hotbackup - Win32 ASCII Release"
+# Name "db_hotbackup - Win32 Release x86"
+# Name "db_hotbackup - Win32 Debug x86"
+# Name "db_hotbackup - Win32 ASCII Debug x86"
+# Name "db_hotbackup - Win32 ASCII Release x86"
# Name "db_hotbackup - x64 Debug AMD64"
# Name "db_hotbackup - x64 Release AMD64"
# Name "db_hotbackup - x64 Debug IA64"
# Name "db_hotbackup - x64 Release IA64"
+# Name "db_hotbackup - Win32 Debug AMD64"
+# Name "db_hotbackup - Win32 Release AMD64"
+# Name "db_hotbackup - Win32 Debug IA64"
+# Name "db_hotbackup - Win32 Release IA64"
# Begin Source File
SOURCE=..\db_hotbackup\db_hotbackup.c
diff --git a/db/build_windows/db_int.h b/db/build_windows/db_int.h
index 02aa4e86e..157a4a65a 100644
--- a/db/build_windows/db_int.h
+++ b/db/build_windows/db_int.h
@@ -2,19 +2,18 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: db_int.in,v 12.41 2006/09/19 15:06:59 bostic Exp $
+ * $Id: db_int.in,v 12.58 2007/05/30 14:06:39 bostic Exp $
*/
#ifndef _DB_INT_H_
#define _DB_INT_H_
/*******************************************************
- * Berkeley DB includes.
+ * Berkeley DB ANSI/POSIX include files.
*******************************************************/
-#ifndef NO_SYSTEM_INCLUDES
+#ifdef HAVE_SYSTEM_INCLUDE_FILES
#include <sys/types.h>
#ifdef DIAG_MVCC
#include <sys/mman.h>
@@ -48,7 +47,9 @@
#endif
#if defined(__INCLUDE_NETWORKING)
+#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
+#endif
#include <netinet/in.h>
#include <netdb.h>
#include <arpa/inet.h>
@@ -70,9 +71,34 @@
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
+
+#if defined(__INCLUDE_DIRECTORY)
+#if HAVE_DIRENT_H
+# include <dirent.h>
+# define NAMLEN(dirent) strlen((dirent)->d_name)
+#else
+# define dirent direct
+# define NAMLEN(dirent) (dirent)->d_namlen
+# if HAVE_SYS_NDIR_H
+# include <sys/ndir.h>
+# endif
+# if HAVE_SYS_DIR_H
+# include <sys/dir.h>
+# endif
+# if HAVE_NDIR_H
+# include <ndir.h>
+# endif
+#endif
+#endif /* __INCLUDE_DIRECTORY_READ */
+
+#endif /* !HAVE_SYSTEM_INCLUDE_FILES */
+
+#ifdef DB_WIN32
+#include "dbinc/win_db.h"
#endif
#include "db.h"
+#include "clib_port.h"
#include "dbinc/queue.h"
#include "dbinc/shqueue.h"
@@ -84,41 +110,6 @@ extern "C" {
/*******************************************************
* General purpose constants and macros.
*******************************************************/
-#ifndef UINT16_MAX
-#define UINT16_MAX 65535 /* Maximum 16-bit unsigned. */
-#endif
-#ifndef UINT32_MAX
-#ifdef __STDC__
-#define UINT32_MAX 4294967295U /* Maximum 32-bit unsigned. */
-#else
-#define UINT32_MAX 0xffffffff /* Maximum 32-bit unsigned. */
-#endif
-#endif
-
-#if defined(HAVE_64BIT_TYPES)
-#undef INT64_MAX
-#undef INT64_MIN
-#undef UINT64_MAX
-
-#ifdef DB_WIN32
-#define INT64_MAX _I64_MAX
-#define INT64_MIN _I64_MIN
-#define UINT64_MAX _UI64_MAX
-#else
-/*
- * Override the system's 64-bit min/max constants. AIX's 32-bit compiler can
- * handle 64-bit values, but the system's constants don't include the LL/ULL
- * suffix, and so can't be compiled using the 32-bit compiler.
- */
-#define INT64_MAX 9223372036854775807LL
-#define INT64_MIN (-INT64_MAX-1)
-#define UINT64_MAX 18446744073709551615ULL
-#endif /* DB_WIN32 */
-
-#define INT64_FMT "%I64d"
-#define UINT64_FMT "%I64u"
-#endif /* HAVE_64BIT_TYPES */
-
#undef FALSE
#define FALSE 0
#undef TRUE
@@ -127,8 +118,13 @@ extern "C" {
#define MEGABYTE 1048576
#define GIGABYTE 1073741824
-#define MS_PER_SEC 1000 /* Milliseconds in a second. */
-#define USEC_PER_MS 1000 /* Microseconds in a millisecond. */
+#define NS_PER_MS 1000000 /* Nanoseconds in a millisecond */
+#define NS_PER_US 1000 /* Nanoseconds in a microsecond */
+#define NS_PER_SEC 1000000000 /* Nanoseconds in a second */
+#define US_PER_MS 1000 /* Microseconds in a millisecond */
+#define US_PER_SEC 1000000 /* Microseconds in a second */
+#define MS_PER_NS 1000000 /* Milliseconds in a nanosecond */
+#define MS_PER_SEC 1000 /* Milliseconds in a second */
#define RECNO_OOB 0 /* Illegal record number. */
@@ -160,11 +156,6 @@ extern "C" {
#define ALIGNP_INC(p, bound) \
(void *)(((uintptr_t)(p) + (bound) - 1) & ~(((uintptr_t)(bound)) - 1))
-/* Decrement a pointer to a specific boundary. */
-#undef ALIGNP_DEC
-#define ALIGNP_DEC(p, bound) \
- (void *)((uintptr_t)(p) & ~(((uintptr_t)(bound)) - 1))
-
/*
* Print an address as a u_long (a u_long is the largest type we can print
* portably). Most 64-bit systems have made longs 64-bits, so this should
@@ -234,6 +225,17 @@ typedef struct __fn {
100 - ((double)(v) * 100) / (((double)total) * (pgsize))))
/*
+ * Statistics update shared memory and so are expensive -- don't update the
+ * values unless we're going to display the results.
+ */
+#undef STAT
+#ifdef HAVE_STATISTICS
+#define STAT(x) x
+#else
+#define STAT(x)
+#endif
+
+/*
* Structure used for callback message aggregation.
*
* Display values in XXX_stat_print calls.
@@ -313,6 +315,7 @@ typedef struct __db_msgbuf {
#define DB_RETOK_DBDEL(ret) DB_RETOK_DBCDEL(ret)
#define DB_RETOK_DBGET(ret) DB_RETOK_DBCGET(ret)
#define DB_RETOK_DBPUT(ret) ((ret) == 0 || (ret) == DB_KEYEXIST)
+#define DB_RETOK_EXISTS(ret) DB_RETOK_DBCGET(ret)
#define DB_RETOK_LGGET(ret) ((ret) == 0 || (ret) == DB_NOTFOUND)
#define DB_RETOK_MPGET(ret) ((ret) == 0 || (ret) == DB_PAGE_NOTFOUND)
#define DB_RETOK_REPPMSG(ret) ((ret) == 0 || \
@@ -437,7 +440,7 @@ typedef enum {
#ifdef DIAGNOSTIC
#define ENV_LEAVE(dbenv, ip) do { \
if ((ip) != NULL) { \
- DB_ASSERT(dbenv, ip->dbth_state == THREAD_ACTIVE); \
+ DB_ASSERT(dbenv, (ip)->dbth_state == THREAD_ACTIVE); \
(ip)->dbth_state = THREAD_OUT; \
} \
} while (0)
@@ -648,7 +651,6 @@ typedef struct __dbpginfo {
((lsn0)->offset != (lsn1)->offset ? \
((lsn0)->offset < (lsn1)->offset ? -1 : 1) : 0))
-
/*******************************************************
* Txn.
*******************************************************/
@@ -715,6 +717,7 @@ typedef SH_TAILQ_HEAD(__hash_head) DB_HASHTAB;
#include "dbinc/globals.h"
+#include "dbinc/clock.h"
#include "dbinc/debug.h"
#include "dbinc/region.h"
#include "dbinc_auto/env_ext.h"
@@ -745,7 +748,7 @@ typedef SH_TAILQ_HEAD(__hash_head) DB_HASHTAB;
* Test if we need to log a change. By default, we don't log operations without
* associated transactions, unless DIAGNOSTIC, DEBUG_ROP or DEBUG_WOP are on.
* This is because we want to get log records for read/write operations, and, if
- * we trying to debug something, more information is always better.
+ * we are trying to debug something, more information is always better.
*
* The DBC_RECOVER flag is set when we're in abort, as well as during recovery;
* thus DBC_LOGGING may be false for a particular dbc even when DBENV_LOGGING
@@ -755,7 +758,7 @@ typedef SH_TAILQ_HEAD(__hash_head) DB_HASHTAB;
* in the log headers, which IS_RECOVERING (and thus DBENV_LOGGING) rely on, and
* because DBC_RECOVER should be set anytime IS_RECOVERING would be true.
*
- * If we're not in recovery (master - doing an abort a client applying
+ * If we're not in recovery (master - doing an abort or a client applying
* a txn), then a client's only path through here is on an internal
* operation, and a master's only path through here is a transactional
* operation. Detect if either is not the case.
diff --git a/db/build_windows/db_java.dsp b/db/build_windows/db_java.dsp
index 996cfc9e3..7d633c1d6 100644
--- a/db/build_windows/db_java.dsp
+++ b/db/build_windows/db_java.dsp
@@ -4,7 +4,7 @@
# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-CFG=db_java - Win32 Debug
+CFG=db_java - Win32 Debug x86
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
@@ -13,18 +13,22 @@ CFG=db_java - Win32 Debug
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "db_java.mak" CFG="db_java - Win32 Debug"
+!MESSAGE NMAKE /f "db_java.mak" CFG="db_java - Win32 Debug x86"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "db_java - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "db_java - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "db_java - Win32 ASCII Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "db_java - Win32 ASCII Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "db_java - Win32 Release x86" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "db_java - Win32 Debug x86" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "db_java - Win32 ASCII Debug x86" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "db_java - Win32 ASCII Release x86" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE "db_java - x64 Debug AMD64" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE "db_java - x64 Release AMD64" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE "db_java - x64 Debug IA64" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE "db_java - x64 Release IA64" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "db_java - Win32 Debug AMD64" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "db_java - Win32 Release AMD64" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "db_java - Win32 Debug IA64" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "db_java - Win32 Release IA64" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE
# Begin Project
@@ -35,7 +39,7 @@ CPP=cl.exe
MTL=midl.exe
RSC=rc.exe
-!IF "$(CFG)" == "db_java - Win32 Release"
+!IF "$(CFG)" == "db_java - Win32 Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -58,8 +62,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:windows /dll /machine:I386
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:I386 /out:"Release/libdb_java45.dll" /libpath:"$(OUTDIR)"
+# ADD BASE LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:windows /dll /machine:I386
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:I386 /out:"Release/libdb_java46.dll" /libpath:"$(OUTDIR)"
# Begin Custom Build - Compiling java files using javac
ProjDir=.
InputPath=$(OUTDIR)/libdb_java44d.dll
@@ -78,7 +82,7 @@ SOURCE="$(InputPath)"
echo Java build finished
# End Custom Build
-!ELSEIF "$(CFG)" == "db_java - Win32 Debug"
+!ELSEIF "$(CFG)" == "db_java - Win32 Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -102,8 +106,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /export:__db_assert /pdb:none /debug /machine:I386 /out:"Debug/libdb_java45d.dll" /fixed:no /libpath:"$(OUTDIR)"
+# ADD BASE LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /export:__db_assert /pdb:none /debug /machine:I386 /out:"Debug/libdb_java46d.dll" /fixed:no /libpath:"$(OUTDIR)"
# Begin Custom Build - Compiling java files using javac
ProjDir=.
InputPath=$(OUTDIR)/libdb_java44d.dll
@@ -122,7 +126,7 @@ SOURCE="$(InputPath)"
echo Java build finished
# End Custom Build
-!ELSEIF "$(CFG)" == "db_java - Win32 ASCII Debug"
+!ELSEIF "$(CFG)" == "db_java - Win32 ASCII Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -148,8 +152,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /pdb:none /debug /machine:I386 /out:"Debug_ASCII/libdb_java45d.dll" /fixed:no
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /export:__db_assert /pdb:none /debug /machine:I386 /out:"Debug_ASCII/libdb_java45d.dll" /fixed:no /libpath:"$(OUTDIR)"
+# ADD BASE LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /pdb:none /debug /machine:I386 /out:"Debug_ASCII/libdb_java46d.dll" /fixed:no
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /export:__db_assert /pdb:none /debug /machine:I386 /out:"Debug_ASCII/libdb_java46d.dll" /fixed:no /libpath:"$(OUTDIR)"
# Begin Custom Build - Compiling java files using javac
ProjDir=.
InputPath=$(OUTDIR)/libdb_java44d.dll
@@ -168,7 +172,7 @@ SOURCE="$(InputPath)"
echo Java build finished
# End Custom Build
-!ELSEIF "$(CFG)" == "db_java - Win32 ASCII Release"
+!ELSEIF "$(CFG)" == "db_java - Win32 ASCII Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -192,8 +196,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:I386 /out:"Release_ASCII/libdb_java45.dll"
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:I386 /out:"Release_ASCII/libdb_java45.dll" /libpath:"$(OUTDIR)"
+# ADD BASE LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:I386 /out:"Release_ASCII/libdb_java46.dll"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:I386 /out:"Release_ASCII/libdb_java46.dll" /libpath:"$(OUTDIR)"
# Begin Custom Build - Compiling java files using javac
ProjDir=.
InputPath=$(OUTDIR)/libdb_java44d.dll
@@ -237,8 +241,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /debug /machine:AMD64 /out:"Debug_AMD64/libdb_java45d.dll" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /export:__db_assert /debug /machine:AMD64 /out:"Debug_AMD64/libdb_java45d.dll" /fixed:no /libpath:"$(OUTDIR)"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /debug /machine:AMD64 /out:"Debug_AMD64/libdb_java46d.dll" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /export:__db_assert /debug /machine:AMD64 /out:"Debug_AMD64/libdb_java46d.dll" /fixed:no /libpath:"$(OUTDIR)"
# Begin Custom Build - Compiling java files using javac
ProjDir=.
InputPath=$(OUTDIR)/libdb_java44d.dll
@@ -281,8 +285,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:AMD64 /out:"Release_AMD64/libdb_java45.dll"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:AMD64 /out:"Release_AMD64/libdb_java45.dll" /libpath:"$(OUTDIR)"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:AMD64 /out:"Release_AMD64/libdb_java46.dll"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:AMD64 /out:"Release_AMD64/libdb_java46.dll" /libpath:"$(OUTDIR)"
# Begin Custom Build - Compiling java files using javac
ProjDir=.
InputPath=$(OUTDIR)/libdb_java44d.dll
@@ -327,8 +331,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /debug /machine:IA64 /out:"Debug_IA64/libdb_java45d.dll" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /export:__db_assert /debug /machine:IA64 /out:"Debug_IA64/libdb_java45d.dll" /fixed:no /libpath:"$(OUTDIR)"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /debug /machine:IA64 /out:"Debug_IA64/libdb_java46d.dll" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /export:__db_assert /debug /machine:IA64 /out:"Debug_IA64/libdb_java46d.dll" /fixed:no /libpath:"$(OUTDIR)"
# Begin Custom Build - Compiling java files using javac
ProjDir=.
InputPath=$(OUTDIR)/libdb_java44d.dll
@@ -371,8 +375,187 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:IA64 /out:"Release_IA64/libdb_java45.dll"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:IA64 /out:"Release_IA64/libdb_java45.dll" /libpath:"$(OUTDIR)"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:IA64 /out:"Release_IA64/libdb_java46.dll"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:IA64 /out:"Release_IA64/libdb_java46.dll" /libpath:"$(OUTDIR)"
+# Begin Custom Build - Compiling java files using javac
+ProjDir=.
+InputPath=$(OUTDIR)/libdb_java44d.dll
+SOURCE="$(InputPath)"
+
+"force_compilation.txt" : $(SOURCE) "$(INTDIR)"
+ echo compiling Berkeley DB classes
+ mkdir "$(INTDIR)\classes"
+ javac -g -d "$(INTDIR)\classes" -classpath "$(INTDIR)\classes" ..\java\src\com\sleepycat\db\*.java ..\java\src\com\sleepycat\db\internal\*.java ..\java\src\com\sleepycat\bind\*.java ..\java\src\com\sleepycat\bind\serial\*.java ..\java\src\com\sleepycat\bind\tuple\*.java ..\java\src\com\sleepycat\collections\*.java ..\java\src\com\sleepycat\compat\*.java ..\java\src\com\sleepycat\util\*.java ..\java\src\com\sleepycat\util\keyrange\*.java
+ echo compiling examples
+ mkdir "$(INTDIR)\classes.ex"
+ javac -g -d "$(INTDIR)\classes.ex" -classpath "$(INTDIR)\classes;$(INTDIR)\classes.ex" ..\examples_java\src\db\*.java ..\examples_java\src\db\GettingStarted\*.java ..\examples_java\src\db\repquote\*.java ..\examples_java\src\collections\access\*.java ..\examples_java\src\collections\hello\*.java ..\examples_java\src\collections\ship\basic\*.java ..\examples_java\src\collections\ship\entity\*.java ..\examples_java\src\collections\ship\tuple\*.java ..\examples_java\src\collections\ship\sentity\*.java ..\examples_java\src\collections\ship\marshal\*.java ..\examples_java\src\collections\ship\factory\*.java
+ echo creating jar files
+ jar cf "$(OUTDIR)/db.jar" -C "$(INTDIR)\classes" .
+ jar cf "$(OUTDIR)/dbexamples.jar" -C "$(INTDIR)\classes.ex" .
+ echo Java build finished
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "db_java - Win32 Debug AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_AMD64"
+# PROP BASE Intermediate_Dir "Debug_AMD64/db_java"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_AMD64"
+# PROP Intermediate_Dir "Debug_AMD64/db_java"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "UNICODE" /D "_UNICODE" /D "DB_CREATE_DLL" /D "DIAGNOSTIC" /D "CONFIG_TEST" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FD /c
+# SUBTRACT BASE CPP /Fr
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "UNICODE" /D "_UNICODE" /D "DB_CREATE_DLL" /D "DIAGNOSTIC" /D "CONFIG_TEST" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FD /Wp64 /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /debug /machine:AMD64 /out:"Debug_AMD64/libdb_java46d.dll" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /export:__db_assert /debug /machine:AMD64 /out:"Debug_AMD64/libdb_java46d.dll" /fixed:no /libpath:"$(OUTDIR)"
+# Begin Custom Build - Compiling java files using javac
+ProjDir=.
+InputPath=$(OUTDIR)/libdb_java44d.dll
+SOURCE="$(InputPath)"
+
+"force_compilation.txt" : $(SOURCE) "$(INTDIR)"
+ echo compiling Berkeley DB classes
+ mkdir "$(INTDIR)\classes"
+ javac -g -d "$(INTDIR)\classes" -classpath "$(INTDIR)\classes" ..\java\src\com\sleepycat\db\*.java ..\java\src\com\sleepycat\db\internal\*.java ..\java\src\com\sleepycat\bind\*.java ..\java\src\com\sleepycat\bind\serial\*.java ..\java\src\com\sleepycat\bind\tuple\*.java ..\java\src\com\sleepycat\collections\*.java ..\java\src\com\sleepycat\compat\*.java ..\java\src\com\sleepycat\util\*.java ..\java\src\com\sleepycat\util\keyrange\*.java
+ echo compiling examples
+ mkdir "$(INTDIR)\classes.ex"
+ javac -g -d "$(INTDIR)\classes.ex" -classpath "$(INTDIR)\classes;$(INTDIR)\classes.ex" ..\examples_java\src\db\*.java ..\examples_java\src\db\GettingStarted\*.java ..\examples_java\src\db\repquote\*.java ..\examples_java\src\collections\access\*.java ..\examples_java\src\collections\hello\*.java ..\examples_java\src\collections\ship\basic\*.java ..\examples_java\src\collections\ship\entity\*.java ..\examples_java\src\collections\ship\tuple\*.java ..\examples_java\src\collections\ship\sentity\*.java ..\examples_java\src\collections\ship\marshal\*.java ..\examples_java\src\collections\ship\factory\*.java
+ echo creating jar files
+ jar cf "$(OUTDIR)/db.jar" -C "$(INTDIR)\classes" .
+ jar cf "$(OUTDIR)/dbexamples.jar" -C "$(INTDIR)\classes.ex" .
+ echo Java build finished
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "db_java - Win32 Release AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_AMD64"
+# PROP BASE Intermediate_Dir "Release_AMD64/db_java"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_AMD64"
+# PROP Intermediate_Dir "Release_AMD64/db_java"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /Ob2 /I "." /I ".." /D "UNICODE" /D "_UNICODE" /D "DB_CREATE_DLL" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /Ob2 /I "." /I ".." /D "UNICODE" /D "_UNICODE" /D "DB_CREATE_DLL" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /Wp64 /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:AMD64 /out:"Release_AMD64/libdb_java46.dll"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:AMD64 /out:"Release_AMD64/libdb_java46.dll" /libpath:"$(OUTDIR)"
+# Begin Custom Build - Compiling java files using javac
+ProjDir=.
+InputPath=$(OUTDIR)/libdb_java44d.dll
+SOURCE="$(InputPath)"
+
+"force_compilation.txt" : $(SOURCE) "$(INTDIR)"
+ echo compiling Berkeley DB classes
+ mkdir "$(INTDIR)\classes"
+ javac -g -d "$(INTDIR)\classes" -classpath "$(INTDIR)\classes" ..\java\src\com\sleepycat\db\*.java ..\java\src\com\sleepycat\db\internal\*.java ..\java\src\com\sleepycat\bind\*.java ..\java\src\com\sleepycat\bind\serial\*.java ..\java\src\com\sleepycat\bind\tuple\*.java ..\java\src\com\sleepycat\collections\*.java ..\java\src\com\sleepycat\compat\*.java ..\java\src\com\sleepycat\util\*.java ..\java\src\com\sleepycat\util\keyrange\*.java
+ echo compiling examples
+ mkdir "$(INTDIR)\classes.ex"
+ javac -g -d "$(INTDIR)\classes.ex" -classpath "$(INTDIR)\classes;$(INTDIR)\classes.ex" ..\examples_java\src\db\*.java ..\examples_java\src\db\GettingStarted\*.java ..\examples_java\src\db\repquote\*.java ..\examples_java\src\collections\access\*.java ..\examples_java\src\collections\hello\*.java ..\examples_java\src\collections\ship\basic\*.java ..\examples_java\src\collections\ship\entity\*.java ..\examples_java\src\collections\ship\tuple\*.java ..\examples_java\src\collections\ship\sentity\*.java ..\examples_java\src\collections\ship\marshal\*.java ..\examples_java\src\collections\ship\factory\*.java
+ echo creating jar files
+ jar cf "$(OUTDIR)/db.jar" -C "$(INTDIR)\classes" .
+ jar cf "$(OUTDIR)/dbexamples.jar" -C "$(INTDIR)\classes.ex" .
+ echo Java build finished
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "db_java - Win32 Debug IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_IA64"
+# PROP BASE Intermediate_Dir "Debug_IA64/db_java"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_IA64"
+# PROP Intermediate_Dir "Debug_IA64/db_java"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "UNICODE" /D "_UNICODE" /D "DB_CREATE_DLL" /D "DIAGNOSTIC" /D "CONFIG_TEST" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /Wp64 /FD /c
+# SUBTRACT BASE CPP /Fr
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "UNICODE" /D "_UNICODE" /D "DB_CREATE_DLL" /D "DIAGNOSTIC" /D "CONFIG_TEST" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /Wp64 /FD /c
+# SUBTRACT CPP /Fr
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /debug /machine:IA64 /out:"Debug_IA64/libdb_java46d.dll" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /export:__db_assert /debug /machine:IA64 /out:"Debug_IA64/libdb_java46d.dll" /fixed:no /libpath:"$(OUTDIR)"
+# Begin Custom Build - Compiling java files using javac
+ProjDir=.
+InputPath=$(OUTDIR)/libdb_java44d.dll
+SOURCE="$(InputPath)"
+
+"force_compilation.txt" : $(SOURCE) "$(INTDIR)"
+ echo compiling Berkeley DB classes
+ mkdir "$(INTDIR)\classes"
+ javac -g -d "$(INTDIR)\classes" -classpath "$(INTDIR)\classes" ..\java\src\com\sleepycat\db\*.java ..\java\src\com\sleepycat\db\internal\*.java ..\java\src\com\sleepycat\bind\*.java ..\java\src\com\sleepycat\bind\serial\*.java ..\java\src\com\sleepycat\bind\tuple\*.java ..\java\src\com\sleepycat\collections\*.java ..\java\src\com\sleepycat\compat\*.java ..\java\src\com\sleepycat\util\*.java ..\java\src\com\sleepycat\util\keyrange\*.java
+ echo compiling examples
+ mkdir "$(INTDIR)\classes.ex"
+ javac -g -d "$(INTDIR)\classes.ex" -classpath "$(INTDIR)\classes;$(INTDIR)\classes.ex" ..\examples_java\src\db\*.java ..\examples_java\src\db\GettingStarted\*.java ..\examples_java\src\db\repquote\*.java ..\examples_java\src\collections\access\*.java ..\examples_java\src\collections\hello\*.java ..\examples_java\src\collections\ship\basic\*.java ..\examples_java\src\collections\ship\entity\*.java ..\examples_java\src\collections\ship\tuple\*.java ..\examples_java\src\collections\ship\sentity\*.java ..\examples_java\src\collections\ship\marshal\*.java ..\examples_java\src\collections\ship\factory\*.java
+ echo creating jar files
+ jar cf "$(OUTDIR)/db.jar" -C "$(INTDIR)\classes" .
+ jar cf "$(OUTDIR)/dbexamples.jar" -C "$(INTDIR)\classes.ex" .
+ echo Java build finished
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "db_java - Win32 Release IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_IA64"
+# PROP BASE Intermediate_Dir "Release_IA64/db_java"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_IA64"
+# PROP Intermediate_Dir "Release_IA64/db_java"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /Ob2 /I "." /I ".." /D "UNICODE" /D "_UNICODE" /D "DB_CREATE_DLL" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /Ob2 /I "." /I ".." /D "UNICODE" /D "_UNICODE" /D "DB_CREATE_DLL" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /Wp64 /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:IA64 /out:"Release_IA64/libdb_java46.dll"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:IA64 /out:"Release_IA64/libdb_java46.dll" /libpath:"$(OUTDIR)"
# Begin Custom Build - Compiling java files using javac
ProjDir=.
InputPath=$(OUTDIR)/libdb_java44d.dll
@@ -395,14 +578,18 @@ SOURCE="$(InputPath)"
# Begin Target
-# Name "db_java - Win32 Release"
-# Name "db_java - Win32 Debug"
-# Name "db_java - Win32 ASCII Debug"
-# Name "db_java - Win32 ASCII Release"
+# Name "db_java - Win32 Release x86"
+# Name "db_java - Win32 Debug x86"
+# Name "db_java - Win32 ASCII Debug x86"
+# Name "db_java - Win32 ASCII Release x86"
# Name "db_java - x64 Debug AMD64"
# Name "db_java - x64 Release AMD64"
# Name "db_java - x64 Debug IA64"
# Name "db_java - x64 Release IA64"
+# Name "db_java - Win32 Debug AMD64"
+# Name "db_java - Win32 Release AMD64"
+# Name "db_java - Win32 Debug IA64"
+# Name "db_java - Win32 Release IA64"
# Begin Source File
SOURCE=..\libdb_java\db_java_wrap.c
diff --git a/db/build_windows/db_load.dsp b/db/build_windows/db_load.dsp
index b75c2f83a..8482daabb 100644
--- a/db/build_windows/db_load.dsp
+++ b/db/build_windows/db_load.dsp
@@ -4,7 +4,7 @@
# TARGTYPE "Win32 (x86) Console Application" 0x0103
-CFG=db_load - Win32 Debug
+CFG=db_load - Win32 Debug x86
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
@@ -13,18 +13,22 @@ CFG=db_load - Win32 Debug
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "db_load.mak" CFG="db_load - Win32 Debug"
+!MESSAGE NMAKE /f "db_load.mak" CFG="db_load - Win32 Debug x86"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "db_load - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_load - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_load - Win32 ASCII Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_load - Win32 ASCII Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_load - Win32 Release x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_load - Win32 Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_load - Win32 ASCII Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_load - Win32 ASCII Release x86" (based on "Win32 (x86) Console Application")
!MESSAGE "db_load - x64 Debug AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "db_load - x64 Release AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "db_load - x64 Debug IA64" (based on "Win32 (x86) Console Application")
!MESSAGE "db_load - x64 Release IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_load - Win32 Debug AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_load - Win32 Release AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_load - Win32 Debug IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_load - Win32 Release IA64" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
@@ -34,7 +38,7 @@ CFG=db_load - Win32 Debug
CPP=cl.exe
RSC=rc.exe
-!IF "$(CFG)" == "db_load - Win32 Release"
+!IF "$(CFG)" == "db_load - Win32 Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -56,9 +60,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
-!ELSEIF "$(CFG)" == "db_load - Win32 Debug"
+!ELSEIF "$(CFG)" == "db_load - Win32 Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -80,9 +84,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
-!ELSEIF "$(CFG)" == "db_load - Win32 ASCII Debug"
+!ELSEIF "$(CFG)" == "db_load - Win32 ASCII Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -104,10 +108,10 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
+# ADD BASE LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
-!ELSEIF "$(CFG)" == "db_load - Win32 ASCII Release"
+!ELSEIF "$(CFG)" == "db_load - Win32 ASCII Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -129,8 +133,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
+# ADD BASE LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
!ELSEIF "$(CFG)" == "db_load - x64 Debug AMD64"
@@ -154,8 +158,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
!ELSEIF "$(CFG)" == "db_load - x64 Release AMD64"
@@ -179,8 +183,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
!ELSEIF "$(CFG)" == "db_load - x64 Debug IA64"
@@ -204,8 +208,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
!ELSEIF "$(CFG)" == "db_load - x64 Release IA64"
@@ -229,21 +233,125 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+
+!ELSEIF "$(CFG)" == "db_load - Win32 Debug AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_AMD64"
+# PROP BASE Intermediate_Dir "Debug_AMD64/db_load"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_AMD64"
+# PROP Intermediate_Dir "Debug_AMD64/db_load"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+
+!ELSEIF "$(CFG)" == "db_load - Win32 Release AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_AMD64"
+# PROP BASE Intermediate_Dir "Release_AMD64/db_load"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_AMD64"
+# PROP Intermediate_Dir "Release_AMD64/db_load"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+
+!ELSEIF "$(CFG)" == "db_load - Win32 Debug IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_IA64"
+# PROP BASE Intermediate_Dir "Debug_IA64/db_load"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_IA64"
+# PROP Intermediate_Dir "Debug_IA64/db_load"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+
+!ELSEIF "$(CFG)" == "db_load - Win32 Release IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_IA64"
+# PROP BASE Intermediate_Dir "Release_IA64/db_load"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_IA64"
+# PROP Intermediate_Dir "Release_IA64/db_load"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
!ENDIF
# Begin Target
-# Name "db_load - Win32 Release"
-# Name "db_load - Win32 Debug"
-# Name "db_load - Win32 ASCII Debug"
-# Name "db_load - Win32 ASCII Release"
+# Name "db_load - Win32 Release x86"
+# Name "db_load - Win32 Debug x86"
+# Name "db_load - Win32 ASCII Debug x86"
+# Name "db_load - Win32 ASCII Release x86"
# Name "db_load - x64 Debug AMD64"
# Name "db_load - x64 Release AMD64"
# Name "db_load - x64 Debug IA64"
# Name "db_load - x64 Release IA64"
+# Name "db_load - Win32 Debug AMD64"
+# Name "db_load - Win32 Release AMD64"
+# Name "db_load - Win32 Debug IA64"
+# Name "db_load - Win32 Release IA64"
# Begin Source File
SOURCE=..\db_load\db_load.c
diff --git a/db/build_windows/db_perf.dsp b/db/build_windows/db_perf.dsp
index de5dee7af..154dd42fe 100644
--- a/db/build_windows/db_perf.dsp
+++ b/db/build_windows/db_perf.dsp
@@ -4,7 +4,7 @@
# TARGTYPE "Win32 (x86) Console Application" 0x0103
-CFG=db_perf - Win32 Debug
+CFG=db_perf - Win32 Debug x86
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
@@ -13,18 +13,22 @@ CFG=db_perf - Win32 Debug
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "db_perf.mak" CFG="db_perf - Win32 Debug"
+!MESSAGE NMAKE /f "db_perf.mak" CFG="db_perf - Win32 Debug x86"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "db_perf - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_perf - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_perf - Win32 ASCII Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_perf - Win32 ASCII Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_perf - Win32 Release x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_perf - Win32 Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_perf - Win32 ASCII Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_perf - Win32 ASCII Release x86" (based on "Win32 (x86) Console Application")
!MESSAGE "db_perf - x64 Debug AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "db_perf - x64 Release AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "db_perf - x64 Debug IA64" (based on "Win32 (x86) Console Application")
!MESSAGE "db_perf - x64 Release IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_perf - Win32 Debug AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_perf - Win32 Release AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_perf - Win32 Debug IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_perf - Win32 Release IA64" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
@@ -34,7 +38,7 @@ CFG=db_perf - Win32 Debug
CPP=cl.exe
RSC=rc.exe
-!IF "$(CFG)" == "db_perf - Win32 Release"
+!IF "$(CFG)" == "db_perf - Win32 Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -56,9 +60,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
-!ELSEIF "$(CFG)" == "db_perf - Win32 Debug"
+!ELSEIF "$(CFG)" == "db_perf - Win32 Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -80,9 +84,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
-!ELSEIF "$(CFG)" == "db_perf - Win32 ASCII Debug"
+!ELSEIF "$(CFG)" == "db_perf - Win32 ASCII Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -104,10 +108,10 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
+# ADD BASE LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
-!ELSEIF "$(CFG)" == "db_perf - Win32 ASCII Release"
+!ELSEIF "$(CFG)" == "db_perf - Win32 ASCII Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -129,8 +133,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
+# ADD BASE LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
!ELSEIF "$(CFG)" == "db_perf - x64 Debug AMD64"
@@ -154,8 +158,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
!ELSEIF "$(CFG)" == "db_perf - x64 Release AMD64"
@@ -179,8 +183,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
!ELSEIF "$(CFG)" == "db_perf - x64 Debug IA64"
@@ -204,8 +208,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
!ELSEIF "$(CFG)" == "db_perf - x64 Release IA64"
@@ -229,21 +233,125 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+
+!ELSEIF "$(CFG)" == "db_perf - Win32 Debug AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_AMD64"
+# PROP BASE Intermediate_Dir "Debug_AMD64/db_perf"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_AMD64"
+# PROP Intermediate_Dir "Debug_AMD64/db_perf"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+
+!ELSEIF "$(CFG)" == "db_perf - Win32 Release AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_AMD64"
+# PROP BASE Intermediate_Dir "Release_AMD64/db_perf"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_AMD64"
+# PROP Intermediate_Dir "Release_AMD64/db_perf"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+
+!ELSEIF "$(CFG)" == "db_perf - Win32 Debug IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_IA64"
+# PROP BASE Intermediate_Dir "Debug_IA64/db_perf"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_IA64"
+# PROP Intermediate_Dir "Debug_IA64/db_perf"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+
+!ELSEIF "$(CFG)" == "db_perf - Win32 Release IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_IA64"
+# PROP BASE Intermediate_Dir "Release_IA64/db_perf"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_IA64"
+# PROP Intermediate_Dir "Release_IA64/db_perf"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
!ENDIF
# Begin Target
-# Name "db_perf - Win32 Release"
-# Name "db_perf - Win32 Debug"
-# Name "db_perf - Win32 ASCII Debug"
-# Name "db_perf - Win32 ASCII Release"
+# Name "db_perf - Win32 Release x86"
+# Name "db_perf - Win32 Debug x86"
+# Name "db_perf - Win32 ASCII Debug x86"
+# Name "db_perf - Win32 ASCII Release x86"
# Name "db_perf - x64 Debug AMD64"
# Name "db_perf - x64 Release AMD64"
# Name "db_perf - x64 Debug IA64"
# Name "db_perf - x64 Release IA64"
+# Name "db_perf - Win32 Debug AMD64"
+# Name "db_perf - Win32 Release AMD64"
+# Name "db_perf - Win32 Debug IA64"
+# Name "db_perf - Win32 Release IA64"
# Begin Source File
SOURCE=..\test_perf\db_perf.c
diff --git a/db/build_windows/db_printlog.dsp b/db/build_windows/db_printlog.dsp
index d166f676a..5ff39d191 100644
--- a/db/build_windows/db_printlog.dsp
+++ b/db/build_windows/db_printlog.dsp
@@ -4,7 +4,7 @@
# TARGTYPE "Win32 (x86) Console Application" 0x0103
-CFG=db_printlog - Win32 Debug
+CFG=db_printlog - Win32 Debug x86
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
@@ -13,18 +13,22 @@ CFG=db_printlog - Win32 Debug
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "db_printlog.mak" CFG="db_printlog - Win32 Debug"
+!MESSAGE NMAKE /f "db_printlog.mak" CFG="db_printlog - Win32 Debug x86"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "db_printlog - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_printlog - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_printlog - Win32 ASCII Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_printlog - Win32 ASCII Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_printlog - Win32 Release x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_printlog - Win32 Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_printlog - Win32 ASCII Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_printlog - Win32 ASCII Release x86" (based on "Win32 (x86) Console Application")
!MESSAGE "db_printlog - x64 Debug AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "db_printlog - x64 Release AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "db_printlog - x64 Debug IA64" (based on "Win32 (x86) Console Application")
!MESSAGE "db_printlog - x64 Release IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_printlog - Win32 Debug AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_printlog - Win32 Release AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_printlog - Win32 Debug IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_printlog - Win32 Release IA64" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
@@ -34,7 +38,7 @@ CFG=db_printlog - Win32 Debug
CPP=cl.exe
RSC=rc.exe
-!IF "$(CFG)" == "db_printlog - Win32 Release"
+!IF "$(CFG)" == "db_printlog - Win32 Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -56,9 +60,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
-!ELSEIF "$(CFG)" == "db_printlog - Win32 Debug"
+!ELSEIF "$(CFG)" == "db_printlog - Win32 Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -80,9 +84,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
-!ELSEIF "$(CFG)" == "db_printlog - Win32 ASCII Debug"
+!ELSEIF "$(CFG)" == "db_printlog - Win32 ASCII Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -104,10 +108,10 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
+# ADD BASE LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
-!ELSEIF "$(CFG)" == "db_printlog - Win32 ASCII Release"
+!ELSEIF "$(CFG)" == "db_printlog - Win32 ASCII Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -129,8 +133,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
+# ADD BASE LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
!ELSEIF "$(CFG)" == "db_printlog - x64 Debug AMD64"
@@ -154,8 +158,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
!ELSEIF "$(CFG)" == "db_printlog - x64 Release AMD64"
@@ -179,8 +183,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
!ELSEIF "$(CFG)" == "db_printlog - x64 Debug IA64"
@@ -204,8 +208,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
!ELSEIF "$(CFG)" == "db_printlog - x64 Release IA64"
@@ -229,21 +233,125 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+
+!ELSEIF "$(CFG)" == "db_printlog - Win32 Debug AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_AMD64"
+# PROP BASE Intermediate_Dir "Debug_AMD64/db_printlog"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_AMD64"
+# PROP Intermediate_Dir "Debug_AMD64/db_printlog"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+
+!ELSEIF "$(CFG)" == "db_printlog - Win32 Release AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_AMD64"
+# PROP BASE Intermediate_Dir "Release_AMD64/db_printlog"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_AMD64"
+# PROP Intermediate_Dir "Release_AMD64/db_printlog"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+
+!ELSEIF "$(CFG)" == "db_printlog - Win32 Debug IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_IA64"
+# PROP BASE Intermediate_Dir "Debug_IA64/db_printlog"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_IA64"
+# PROP Intermediate_Dir "Debug_IA64/db_printlog"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+
+!ELSEIF "$(CFG)" == "db_printlog - Win32 Release IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_IA64"
+# PROP BASE Intermediate_Dir "Release_IA64/db_printlog"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_IA64"
+# PROP Intermediate_Dir "Release_IA64/db_printlog"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
!ENDIF
# Begin Target
-# Name "db_printlog - Win32 Release"
-# Name "db_printlog - Win32 Debug"
-# Name "db_printlog - Win32 ASCII Debug"
-# Name "db_printlog - Win32 ASCII Release"
+# Name "db_printlog - Win32 Release x86"
+# Name "db_printlog - Win32 Debug x86"
+# Name "db_printlog - Win32 ASCII Debug x86"
+# Name "db_printlog - Win32 ASCII Release x86"
# Name "db_printlog - x64 Debug AMD64"
# Name "db_printlog - x64 Release AMD64"
# Name "db_printlog - x64 Debug IA64"
# Name "db_printlog - x64 Release IA64"
+# Name "db_printlog - Win32 Debug AMD64"
+# Name "db_printlog - Win32 Release AMD64"
+# Name "db_printlog - Win32 Debug IA64"
+# Name "db_printlog - Win32 Release IA64"
# Begin Source File
SOURCE=..\btree\btree_autop.c
diff --git a/db/build_windows/db_recover.dsp b/db/build_windows/db_recover.dsp
index de11c70f0..b63a8a1b3 100644
--- a/db/build_windows/db_recover.dsp
+++ b/db/build_windows/db_recover.dsp
@@ -4,7 +4,7 @@
# TARGTYPE "Win32 (x86) Console Application" 0x0103
-CFG=db_recover - Win32 Debug
+CFG=db_recover - Win32 Debug x86
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
@@ -13,18 +13,22 @@ CFG=db_recover - Win32 Debug
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "db_recover.mak" CFG="db_recover - Win32 Debug"
+!MESSAGE NMAKE /f "db_recover.mak" CFG="db_recover - Win32 Debug x86"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "db_recover - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_recover - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_recover - Win32 ASCII Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_recover - Win32 ASCII Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_recover - Win32 Release x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_recover - Win32 Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_recover - Win32 ASCII Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_recover - Win32 ASCII Release x86" (based on "Win32 (x86) Console Application")
!MESSAGE "db_recover - x64 Debug AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "db_recover - x64 Release AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "db_recover - x64 Debug IA64" (based on "Win32 (x86) Console Application")
!MESSAGE "db_recover - x64 Release IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_recover - Win32 Debug AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_recover - Win32 Release AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_recover - Win32 Debug IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_recover - Win32 Release IA64" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
@@ -34,7 +38,7 @@ CFG=db_recover - Win32 Debug
CPP=cl.exe
RSC=rc.exe
-!IF "$(CFG)" == "db_recover - Win32 Release"
+!IF "$(CFG)" == "db_recover - Win32 Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -56,9 +60,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
-!ELSEIF "$(CFG)" == "db_recover - Win32 Debug"
+!ELSEIF "$(CFG)" == "db_recover - Win32 Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -80,9 +84,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
-!ELSEIF "$(CFG)" == "db_recover - Win32 ASCII Debug"
+!ELSEIF "$(CFG)" == "db_recover - Win32 ASCII Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -104,10 +108,10 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
+# ADD BASE LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
-!ELSEIF "$(CFG)" == "db_recover - Win32 ASCII Release"
+!ELSEIF "$(CFG)" == "db_recover - Win32 ASCII Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -129,8 +133,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
+# ADD BASE LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
!ELSEIF "$(CFG)" == "db_recover - x64 Debug AMD64"
@@ -154,8 +158,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
!ELSEIF "$(CFG)" == "db_recover - x64 Release AMD64"
@@ -179,8 +183,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
!ELSEIF "$(CFG)" == "db_recover - x64 Debug IA64"
@@ -204,8 +208,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
!ELSEIF "$(CFG)" == "db_recover - x64 Release IA64"
@@ -229,21 +233,125 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+
+!ELSEIF "$(CFG)" == "db_recover - Win32 Debug AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_AMD64"
+# PROP BASE Intermediate_Dir "Debug_AMD64/db_recover"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_AMD64"
+# PROP Intermediate_Dir "Debug_AMD64/db_recover"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+
+!ELSEIF "$(CFG)" == "db_recover - Win32 Release AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_AMD64"
+# PROP BASE Intermediate_Dir "Release_AMD64/db_recover"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_AMD64"
+# PROP Intermediate_Dir "Release_AMD64/db_recover"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+
+!ELSEIF "$(CFG)" == "db_recover - Win32 Debug IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_IA64"
+# PROP BASE Intermediate_Dir "Debug_IA64/db_recover"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_IA64"
+# PROP Intermediate_Dir "Debug_IA64/db_recover"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+
+!ELSEIF "$(CFG)" == "db_recover - Win32 Release IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_IA64"
+# PROP BASE Intermediate_Dir "Release_IA64/db_recover"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_IA64"
+# PROP Intermediate_Dir "Release_IA64/db_recover"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
!ENDIF
# Begin Target
-# Name "db_recover - Win32 Release"
-# Name "db_recover - Win32 Debug"
-# Name "db_recover - Win32 ASCII Debug"
-# Name "db_recover - Win32 ASCII Release"
+# Name "db_recover - Win32 Release x86"
+# Name "db_recover - Win32 Debug x86"
+# Name "db_recover - Win32 ASCII Debug x86"
+# Name "db_recover - Win32 ASCII Release x86"
# Name "db_recover - x64 Debug AMD64"
# Name "db_recover - x64 Release AMD64"
# Name "db_recover - x64 Debug IA64"
# Name "db_recover - x64 Release IA64"
+# Name "db_recover - Win32 Debug AMD64"
+# Name "db_recover - Win32 Release AMD64"
+# Name "db_recover - Win32 Debug IA64"
+# Name "db_recover - Win32 Release IA64"
# Begin Source File
SOURCE=..\db_recover\db_recover.c
diff --git a/db/build_windows/db_reptest.dsp b/db/build_windows/db_reptest.dsp
index 6b2ecbf89..432eb402d 100644
--- a/db/build_windows/db_reptest.dsp
+++ b/db/build_windows/db_reptest.dsp
@@ -4,7 +4,7 @@
# TARGTYPE "Win32 (x86) Console Application" 0x0103
-CFG=db_reptest - Win32 Debug
+CFG=db_reptest - Win32 Debug x86
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
@@ -13,18 +13,22 @@ CFG=db_reptest - Win32 Debug
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "db_reptest.mak" CFG="db_reptest - Win32 Debug"
+!MESSAGE NMAKE /f "db_reptest.mak" CFG="db_reptest - Win32 Debug x86"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "db_reptest - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_reptest - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_reptest - Win32 ASCII Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_reptest - Win32 ASCII Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_reptest - Win32 Release x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_reptest - Win32 Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_reptest - Win32 ASCII Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_reptest - Win32 ASCII Release x86" (based on "Win32 (x86) Console Application")
!MESSAGE "db_reptest - x64 Debug AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "db_reptest - x64 Release AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "db_reptest - x64 Debug IA64" (based on "Win32 (x86) Console Application")
!MESSAGE "db_reptest - x64 Release IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_reptest - Win32 Debug AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_reptest - Win32 Release AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_reptest - Win32 Debug IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_reptest - Win32 Release IA64" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
@@ -34,7 +38,7 @@ CFG=db_reptest - Win32 Debug
CPP=cl.exe
RSC=rc.exe
-!IF "$(CFG)" == "db_reptest - Win32 Release"
+!IF "$(CFG)" == "db_reptest - Win32 Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -56,9 +60,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
-!ELSEIF "$(CFG)" == "db_reptest - Win32 Debug"
+!ELSEIF "$(CFG)" == "db_reptest - Win32 Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -80,9 +84,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
-!ELSEIF "$(CFG)" == "db_reptest - Win32 ASCII Debug"
+!ELSEIF "$(CFG)" == "db_reptest - Win32 ASCII Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -104,10 +108,10 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
+# ADD BASE LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
-!ELSEIF "$(CFG)" == "db_reptest - Win32 ASCII Release"
+!ELSEIF "$(CFG)" == "db_reptest - Win32 ASCII Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -129,8 +133,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
+# ADD BASE LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
!ELSEIF "$(CFG)" == "db_reptest - x64 Debug AMD64"
@@ -154,8 +158,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
!ELSEIF "$(CFG)" == "db_reptest - x64 Release AMD64"
@@ -179,8 +183,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
!ELSEIF "$(CFG)" == "db_reptest - x64 Debug IA64"
@@ -204,8 +208,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
!ELSEIF "$(CFG)" == "db_reptest - x64 Release IA64"
@@ -229,21 +233,125 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+
+!ELSEIF "$(CFG)" == "db_reptest - Win32 Debug AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_AMD64"
+# PROP BASE Intermediate_Dir "Debug_AMD64/db_reptest"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_AMD64"
+# PROP Intermediate_Dir "Debug_AMD64/db_reptest"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+
+!ELSEIF "$(CFG)" == "db_reptest - Win32 Release AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_AMD64"
+# PROP BASE Intermediate_Dir "Release_AMD64/db_reptest"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_AMD64"
+# PROP Intermediate_Dir "Release_AMD64/db_reptest"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+
+!ELSEIF "$(CFG)" == "db_reptest - Win32 Debug IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_IA64"
+# PROP BASE Intermediate_Dir "Debug_IA64/db_reptest"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_IA64"
+# PROP Intermediate_Dir "Debug_IA64/db_reptest"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+
+!ELSEIF "$(CFG)" == "db_reptest - Win32 Release IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_IA64"
+# PROP BASE Intermediate_Dir "Release_IA64/db_reptest"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_IA64"
+# PROP Intermediate_Dir "Release_IA64/db_reptest"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
!ENDIF
# Begin Target
-# Name "db_reptest - Win32 Release"
-# Name "db_reptest - Win32 Debug"
-# Name "db_reptest - Win32 ASCII Debug"
-# Name "db_reptest - Win32 ASCII Release"
+# Name "db_reptest - Win32 Release x86"
+# Name "db_reptest - Win32 Debug x86"
+# Name "db_reptest - Win32 ASCII Debug x86"
+# Name "db_reptest - Win32 ASCII Release x86"
# Name "db_reptest - x64 Debug AMD64"
# Name "db_reptest - x64 Release AMD64"
# Name "db_reptest - x64 Debug IA64"
# Name "db_reptest - x64 Release IA64"
+# Name "db_reptest - Win32 Debug AMD64"
+# Name "db_reptest - Win32 Release AMD64"
+# Name "db_reptest - Win32 Debug IA64"
+# Name "db_reptest - Win32 Release IA64"
# Begin Source File
SOURCE=..\test_perf\perf_rand.c
diff --git a/db/build_windows/db_small.dsp b/db/build_windows/db_small.dsp
index d6cdc1e77..acb9fbe8d 100644
--- a/db/build_windows/db_small.dsp
+++ b/db/build_windows/db_small.dsp
@@ -4,7 +4,7 @@
# TARGTYPE "Win32 (x86) Static Library" 0x0104
-CFG=db_small - Win32 Debug
+CFG=db_small - Win32 Debug x86
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
@@ -13,18 +13,22 @@ CFG=db_small - Win32 Debug
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "db_small.mak" CFG="db_small - Win32 Debug"
+!MESSAGE NMAKE /f "db_small.mak" CFG="db_small - Win32 Debug x86"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "db_small - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "db_small - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "db_small - Win32 ASCII Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "db_small - Win32 ASCII Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "db_small - Win32 Release x86" (based on "Win32 (x86) Static Library")
+!MESSAGE "db_small - Win32 Debug x86" (based on "Win32 (x86) Static Library")
+!MESSAGE "db_small - Win32 ASCII Release x86" (based on "Win32 (x86) Static Library")
+!MESSAGE "db_small - Win32 ASCII Debug x86" (based on "Win32 (x86) Static Library")
!MESSAGE "db_small - x64 Debug AMD64" (based on "Win32 (x86) Static Library")
!MESSAGE "db_small - x64 Release AMD64" (based on "Win32 (x86) Static Library")
!MESSAGE "db_small - x64 Debug IA64" (based on "Win32 (x86) Static Library")
!MESSAGE "db_small - x64 Release IA64" (based on "Win32 (x86) Static Library")
+!MESSAGE "db_small - Win32 Debug AMD64" (based on "Win32 (x86) Static Library")
+!MESSAGE "db_small - Win32 Release AMD64" (based on "Win32 (x86) Static Library")
+!MESSAGE "db_small - Win32 Debug IA64" (based on "Win32 (x86) Static Library")
+!MESSAGE "db_small - Win32 Release IA64" (based on "Win32 (x86) Static Library")
!MESSAGE
# Begin Project
@@ -34,7 +38,7 @@ CFG=db_small - Win32 Debug
CPP=cl.exe
RSC=rc.exe
-!IF "$(CFG)" == "db_small - Win32 Release"
+!IF "$(CFG)" == "db_small - Win32 Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -54,10 +58,10 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"Release/libdb_small45s.lib"
-# ADD LIB32 /nologo /out:"Release/libdb_small45s.lib"
+# ADD BASE LIB32 /nologo /out:"Release/libdb_small46s.lib"
+# ADD LIB32 /nologo /out:"Release/libdb_small46s.lib"
-!ELSEIF "$(CFG)" == "db_small - Win32 Debug"
+!ELSEIF "$(CFG)" == "db_small - Win32 Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -77,10 +81,10 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"Debug/libdb_small45sd.lib"
-# ADD LIB32 /nologo /out:"Debug/libdb_small45sd.lib"
+# ADD BASE LIB32 /nologo /out:"Debug/libdb_small46sd.lib"
+# ADD LIB32 /nologo /out:"Debug/libdb_small46sd.lib"
-!ELSEIF "$(CFG)" == "db_small - Win32 ASCII Release"
+!ELSEIF "$(CFG)" == "db_small - Win32 ASCII Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -100,10 +104,10 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"Release_ASCII/libdb_small45s.lib"
-# ADD LIB32 /nologo /out:"Release_ASCII/libdb_small45s.lib"
+# ADD BASE LIB32 /nologo /out:"Release_ASCII/libdb_small46s.lib"
+# ADD LIB32 /nologo /out:"Release_ASCII/libdb_small46s.lib"
-!ELSEIF "$(CFG)" == "db_small - Win32 ASCII Debug"
+!ELSEIF "$(CFG)" == "db_small - Win32 ASCII Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -123,8 +127,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"Debug_ASCII/libdb_small45sd.lib"
-# ADD LIB32 /nologo /out:"Debug_ASCII/libdb_small45sd.lib"
+# ADD BASE LIB32 /nologo /out:"Debug_ASCII/libdb_small46sd.lib"
+# ADD LIB32 /nologo /out:"Debug_ASCII/libdb_small46sd.lib"
!ELSEIF "$(CFG)" == "db_small - x64 Debug AMD64"
@@ -146,8 +150,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"Debug_AMD64/libdb_small45sd.lib"
-# ADD LIB32 /nologo /out:"Debug_AMD64/libdb_small45sd.lib"
+# ADD BASE LIB32 /nologo /out:"Debug_AMD64/libdb_small46sd.lib"
+# ADD LIB32 /nologo /out:"Debug_AMD64/libdb_small46sd.lib"
!ELSEIF "$(CFG)" == "db_small - x64 Release AMD64"
@@ -169,8 +173,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"Release_AMD64/libdb_small45s.lib"
-# ADD LIB32 /nologo /out:"Release_AMD64/libdb_small45s.lib"
+# ADD BASE LIB32 /nologo /out:"Release_AMD64/libdb_small46s.lib"
+# ADD LIB32 /nologo /out:"Release_AMD64/libdb_small46s.lib"
!ELSEIF "$(CFG)" == "db_small - x64 Debug IA64"
@@ -192,8 +196,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"Debug_IA64/libdb_small45sd.lib"
-# ADD LIB32 /nologo /out:"Debug_IA64/libdb_small45sd.lib"
+# ADD BASE LIB32 /nologo /out:"Debug_IA64/libdb_small46sd.lib"
+# ADD LIB32 /nologo /out:"Debug_IA64/libdb_small46sd.lib"
!ELSEIF "$(CFG)" == "db_small - x64 Release IA64"
@@ -215,21 +219,117 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"Release_IA64/libdb_small45s.lib"
-# ADD LIB32 /nologo /out:"Release_IA64/libdb_small45s.lib"
+# ADD BASE LIB32 /nologo /out:"Release_IA64/libdb_small46s.lib"
+# ADD LIB32 /nologo /out:"Release_IA64/libdb_small46s.lib"
+
+!ELSEIF "$(CFG)" == "db_small - Win32 Debug AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_AMD64"
+# PROP BASE Intermediate_Dir "Debug/db_small"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_AMD64"
+# PROP Intermediate_Dir "Debug_AMD64/db_small"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "DIAGNOSTIC" /D "UNICODE" /D "_UNICODE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "HAVE_SMALLBUILD" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "DIAGNOSTIC" /D "UNICODE" /D "_UNICODE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "HAVE_SMALLBUILD" /Wp64 /FD /Wp64 /c
+# ADD BASE RSC /l 0xc09
+# ADD RSC /l 0xc09
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"Debug_AMD64/libdb_small46sd.lib"
+# ADD LIB32 /nologo /out:"Debug_AMD64/libdb_small46sd.lib"
+
+!ELSEIF "$(CFG)" == "db_small - Win32 Release AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_AMD64"
+# PROP BASE Intermediate_Dir "Release_AMD64/db_small"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_AMD64"
+# PROP Intermediate_Dir "Release_AMD64/db_small"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "UNICODE" /D "_UNICODE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "HAVE_SMALLBUILD" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "UNICODE" /D "_UNICODE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "HAVE_SMALLBUILD" /Wp64 /FD /c
+# ADD BASE RSC /l 0xc09
+# ADD RSC /l 0xc09
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"Release_AMD64/libdb_small46s.lib"
+# ADD LIB32 /nologo /out:"Release_AMD64/libdb_small46s.lib"
+
+!ELSEIF "$(CFG)" == "db_small - Win32 Debug IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_IA64"
+# PROP BASE Intermediate_Dir "Debug_IA64/db_small"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_IA64"
+# PROP Intermediate_Dir "Debug_IA64/db_small"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "DIAGNOSTIC" /D "UNICODE" /D "_UNICODE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "HAVE_SMALLBUILD" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "DIAGNOSTIC" /D "UNICODE" /D "_UNICODE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "HAVE_SMALLBUILD" /Wp64 /FD /c
+# ADD BASE RSC /l 0xc09
+# ADD RSC /l 0xc09
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"Debug_IA64/libdb_small46sd.lib"
+# ADD LIB32 /nologo /out:"Debug_IA64/libdb_small46sd.lib"
+
+!ELSEIF "$(CFG)" == "db_small - Win32 Release IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_IA64"
+# PROP BASE Intermediate_Dir "Release_IA64/db_small"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_IA64"
+# PROP Intermediate_Dir "Release_IA64/db_small"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "UNICODE" /D "_UNICODE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "HAVE_SMALLBUILD" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "UNICODE" /D "_UNICODE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "HAVE_SMALLBUILD" /Wp64 /FD /c
+# ADD BASE RSC /l 0xc09
+# ADD RSC /l 0xc09
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"Release_IA64/libdb_small46s.lib"
+# ADD LIB32 /nologo /out:"Release_IA64/libdb_small46s.lib"
!ENDIF
# Begin Target
-# Name "db_small - Win32 Release"
-# Name "db_small - Win32 Debug"
-# Name "db_small - Win32 ASCII Release"
-# Name "db_small - Win32 ASCII Debug"
+# Name "db_small - Win32 Release x86"
+# Name "db_small - Win32 Debug x86"
+# Name "db_small - Win32 ASCII Release x86"
+# Name "db_small - Win32 ASCII Debug x86"
# Name "db_small - x64 Debug AMD64"
# Name "db_small - x64 Release AMD64"
# Name "db_small - x64 Debug IA64"
# Name "db_small - x64 Release IA64"
+# Name "db_small - Win32 Debug AMD64"
+# Name "db_small - Win32 Release AMD64"
+# Name "db_small - Win32 Debug IA64"
+# Name "db_small - Win32 Release IA64"
# Begin Source File
SOURCE=..\btree\bt_compact.c
@@ -308,10 +408,6 @@ SOURCE=..\clib\ctime.c
# End Source File
# Begin Source File
-SOURCE=..\clib\strcasecmp.c
-# End Source File
-# Begin Source File
-
SOURCE=..\clib\strsep.c
# End Source File
# Begin Source File
@@ -340,6 +436,10 @@ SOURCE=..\common\db_log2.c
# End Source File
# Begin Source File
+SOURCE=..\common\db_shash.c
+# End Source File
+# Begin Source File
+
SOURCE=..\common\mkpath.c
# End Source File
# Begin Source File
@@ -536,11 +636,7 @@ SOURCE=..\dbreg\dbreg_util.c
# End Source File
# Begin Source File
-SOURCE=..\env\db_salloc.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\env\db_shash.c
+SOURCE=..\env\env_alloc.c
# End Source File
# Begin Source File
@@ -556,10 +652,18 @@ SOURCE=..\env\env_file.c
# End Source File
# Begin Source File
+SOURCE=..\env\env_globals.c
+# End Source File
+# Begin Source File
+
SOURCE=..\env\env_method.c
# End Source File
# Begin Source File
+SOURCE=..\env\env_name.c
+# End Source File
+# Begin Source File
+
SOURCE=..\env\env_open.c
# End Source File
# Begin Source File
@@ -728,6 +832,10 @@ SOURCE=..\mp\mp_register.c
# End Source File
# Begin Source File
+SOURCE=..\mp\mp_resize.c
+# End Source File
+# Begin Source File
+
SOURCE=..\mp\mp_stat.c
# End Source File
# Begin Source File
@@ -764,15 +872,15 @@ SOURCE=..\mutex\mut_win32.c
# End Source File
# Begin Source File
-SOURCE=..\os\os_alloc.c
+SOURCE=..\os\os_abort.c
# End Source File
# Begin Source File
-SOURCE=..\os\os_fzero.c
+SOURCE=..\os\os_alloc.c
# End Source File
# Begin Source File
-SOURCE=..\os\os_mkdir.c
+SOURCE=..\os\os_fzero.c
# End Source File
# Begin Source File
@@ -848,6 +956,10 @@ SOURCE=..\os_windows\os_map.c
# End Source File
# Begin Source File
+SOURCE=..\os_windows\os_mkdir.c
+# End Source File
+# Begin Source File
+
SOURCE=..\os_windows\os_open.c
# End Source File
# Begin Source File
@@ -896,6 +1008,10 @@ SOURCE=..\rep\rep_stub.c
# End Source File
# Begin Source File
+SOURCE=..\repmgr\repmgr_stub.c
+# End Source File
+# Begin Source File
+
SOURCE=..\sequence\seq_stat.c
# End Source File
# Begin Source File
diff --git a/db/build_windows/db_stat.dsp b/db/build_windows/db_stat.dsp
index fc806e9ed..75bc8a5f9 100644
--- a/db/build_windows/db_stat.dsp
+++ b/db/build_windows/db_stat.dsp
@@ -4,7 +4,7 @@
# TARGTYPE "Win32 (x86) Console Application" 0x0103
-CFG=db_stat - Win32 Debug
+CFG=db_stat - Win32 Debug x86
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
@@ -13,18 +13,22 @@ CFG=db_stat - Win32 Debug
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "db_stat.mak" CFG="db_stat - Win32 Debug"
+!MESSAGE NMAKE /f "db_stat.mak" CFG="db_stat - Win32 Debug x86"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "db_stat - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_stat - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_stat - Win32 ASCII Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_stat - Win32 ASCII Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_stat - Win32 Release x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_stat - Win32 Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_stat - Win32 ASCII Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_stat - Win32 ASCII Release x86" (based on "Win32 (x86) Console Application")
!MESSAGE "db_stat - x64 Debug AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "db_stat - x64 Release AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "db_stat - x64 Debug IA64" (based on "Win32 (x86) Console Application")
!MESSAGE "db_stat - x64 Release IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_stat - Win32 Debug AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_stat - Win32 Release AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_stat - Win32 Debug IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_stat - Win32 Release IA64" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
@@ -34,7 +38,7 @@ CFG=db_stat - Win32 Debug
CPP=cl.exe
RSC=rc.exe
-!IF "$(CFG)" == "db_stat - Win32 Release"
+!IF "$(CFG)" == "db_stat - Win32 Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -56,9 +60,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
-!ELSEIF "$(CFG)" == "db_stat - Win32 Debug"
+!ELSEIF "$(CFG)" == "db_stat - Win32 Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -80,9 +84,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
-!ELSEIF "$(CFG)" == "db_stat - Win32 ASCII Debug"
+!ELSEIF "$(CFG)" == "db_stat - Win32 ASCII Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -104,10 +108,10 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
+# ADD BASE LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
-!ELSEIF "$(CFG)" == "db_stat - Win32 ASCII Release"
+!ELSEIF "$(CFG)" == "db_stat - Win32 ASCII Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -129,8 +133,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
+# ADD BASE LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
!ELSEIF "$(CFG)" == "db_stat - x64 Debug AMD64"
@@ -154,8 +158,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
!ELSEIF "$(CFG)" == "db_stat - x64 Release AMD64"
@@ -179,8 +183,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
!ELSEIF "$(CFG)" == "db_stat - x64 Debug IA64"
@@ -204,8 +208,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
!ELSEIF "$(CFG)" == "db_stat - x64 Release IA64"
@@ -229,21 +233,125 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+
+!ELSEIF "$(CFG)" == "db_stat - Win32 Debug AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_AMD64"
+# PROP BASE Intermediate_Dir "Debug_AMD64/db_stat"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_AMD64"
+# PROP Intermediate_Dir "Debug_AMD64/db_stat"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+
+!ELSEIF "$(CFG)" == "db_stat - Win32 Release AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_AMD64"
+# PROP BASE Intermediate_Dir "Release_AMD64/db_stat"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_AMD64"
+# PROP Intermediate_Dir "Release_AMD64/db_stat"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+
+!ELSEIF "$(CFG)" == "db_stat - Win32 Debug IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_IA64"
+# PROP BASE Intermediate_Dir "Debug_IA64/db_stat"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_IA64"
+# PROP Intermediate_Dir "Debug_IA64/db_stat"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+
+!ELSEIF "$(CFG)" == "db_stat - Win32 Release IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_IA64"
+# PROP BASE Intermediate_Dir "Release_IA64/db_stat"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_IA64"
+# PROP Intermediate_Dir "Release_IA64/db_stat"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
!ENDIF
# Begin Target
-# Name "db_stat - Win32 Release"
-# Name "db_stat - Win32 Debug"
-# Name "db_stat - Win32 ASCII Debug"
-# Name "db_stat - Win32 ASCII Release"
+# Name "db_stat - Win32 Release x86"
+# Name "db_stat - Win32 Debug x86"
+# Name "db_stat - Win32 ASCII Debug x86"
+# Name "db_stat - Win32 ASCII Release x86"
# Name "db_stat - x64 Debug AMD64"
# Name "db_stat - x64 Release AMD64"
# Name "db_stat - x64 Debug IA64"
# Name "db_stat - x64 Release IA64"
+# Name "db_stat - Win32 Debug AMD64"
+# Name "db_stat - Win32 Release AMD64"
+# Name "db_stat - Win32 Debug IA64"
+# Name "db_stat - Win32 Release IA64"
# Begin Source File
SOURCE=..\db_stat\db_stat.c
diff --git a/db/build_windows/db_static.dsp b/db/build_windows/db_static.dsp
index df640f47c..c7e00cd7d 100644
--- a/db/build_windows/db_static.dsp
+++ b/db/build_windows/db_static.dsp
@@ -4,7 +4,7 @@
# TARGTYPE "Win32 (x86) Static Library" 0x0104
-CFG=db_static - Win32 Debug
+CFG=db_static - Win32 Debug x86
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
@@ -13,18 +13,22 @@ CFG=db_static - Win32 Debug
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "db_static.mak" CFG="db_static - Win32 Debug"
+!MESSAGE NMAKE /f "db_static.mak" CFG="db_static - Win32 Debug x86"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "db_static - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "db_static - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "db_static - Win32 ASCII Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "db_static - Win32 ASCII Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "db_static - Win32 Release x86" (based on "Win32 (x86) Static Library")
+!MESSAGE "db_static - Win32 Debug x86" (based on "Win32 (x86) Static Library")
+!MESSAGE "db_static - Win32 ASCII Release x86" (based on "Win32 (x86) Static Library")
+!MESSAGE "db_static - Win32 ASCII Debug x86" (based on "Win32 (x86) Static Library")
!MESSAGE "db_static - x64 Debug AMD64" (based on "Win32 (x86) Static Library")
!MESSAGE "db_static - x64 Release AMD64" (based on "Win32 (x86) Static Library")
!MESSAGE "db_static - x64 Debug IA64" (based on "Win32 (x86) Static Library")
!MESSAGE "db_static - x64 Release IA64" (based on "Win32 (x86) Static Library")
+!MESSAGE "db_static - Win32 Debug AMD64" (based on "Win32 (x86) Static Library")
+!MESSAGE "db_static - Win32 Release AMD64" (based on "Win32 (x86) Static Library")
+!MESSAGE "db_static - Win32 Debug IA64" (based on "Win32 (x86) Static Library")
+!MESSAGE "db_static - Win32 Release IA64" (based on "Win32 (x86) Static Library")
!MESSAGE
# Begin Project
@@ -34,7 +38,7 @@ CFG=db_static - Win32 Debug
CPP=cl.exe
RSC=rc.exe
-!IF "$(CFG)" == "db_static - Win32 Release"
+!IF "$(CFG)" == "db_static - Win32 Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -54,10 +58,10 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"Release/libdb45s.lib"
-# ADD LIB32 /nologo /out:"Release/libdb45s.lib"
+# ADD BASE LIB32 /nologo /out:"Release/libdb46s.lib"
+# ADD LIB32 /nologo /out:"Release/libdb46s.lib"
-!ELSEIF "$(CFG)" == "db_static - Win32 Debug"
+!ELSEIF "$(CFG)" == "db_static - Win32 Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -77,10 +81,10 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"Debug/libdb45sd.lib"
-# ADD LIB32 /nologo /out:"Debug/libdb45sd.lib"
+# ADD BASE LIB32 /nologo /out:"Debug/libdb46sd.lib"
+# ADD LIB32 /nologo /out:"Debug/libdb46sd.lib"
-!ELSEIF "$(CFG)" == "db_static - Win32 ASCII Release"
+!ELSEIF "$(CFG)" == "db_static - Win32 ASCII Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -100,10 +104,10 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"Release_ASCII/libdb45s.lib"
-# ADD LIB32 /nologo /out:"Release_ASCII/libdb45s.lib"
+# ADD BASE LIB32 /nologo /out:"Release_ASCII/libdb46s.lib"
+# ADD LIB32 /nologo /out:"Release_ASCII/libdb46s.lib"
-!ELSEIF "$(CFG)" == "db_static - Win32 ASCII Debug"
+!ELSEIF "$(CFG)" == "db_static - Win32 ASCII Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -123,8 +127,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"Debug_ASCII/libdb45sd.lib"
-# ADD LIB32 /nologo /out:"Debug_ASCII/libdb45sd.lib"
+# ADD BASE LIB32 /nologo /out:"Debug_ASCII/libdb46sd.lib"
+# ADD LIB32 /nologo /out:"Debug_ASCII/libdb46sd.lib"
!ELSEIF "$(CFG)" == "db_static - x64 Debug AMD64"
@@ -146,8 +150,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"Debug_AMD64/libdb45sd.lib"
-# ADD LIB32 /nologo /out:"Debug_AMD64/libdb45sd.lib"
+# ADD BASE LIB32 /nologo /out:"Debug_AMD64/libdb46sd.lib"
+# ADD LIB32 /nologo /out:"Debug_AMD64/libdb46sd.lib"
!ELSEIF "$(CFG)" == "db_static - x64 Release AMD64"
@@ -169,8 +173,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"Release_AMD64/libdb45s.lib"
-# ADD LIB32 /nologo /out:"Release_AMD64/libdb45s.lib"
+# ADD BASE LIB32 /nologo /out:"Release_AMD64/libdb46s.lib"
+# ADD LIB32 /nologo /out:"Release_AMD64/libdb46s.lib"
!ELSEIF "$(CFG)" == "db_static - x64 Debug IA64"
@@ -192,8 +196,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"Debug_IA64/libdb45sd.lib"
-# ADD LIB32 /nologo /out:"Debug_IA64/libdb45sd.lib"
+# ADD BASE LIB32 /nologo /out:"Debug_IA64/libdb46sd.lib"
+# ADD LIB32 /nologo /out:"Debug_IA64/libdb46sd.lib"
!ELSEIF "$(CFG)" == "db_static - x64 Release IA64"
@@ -215,21 +219,117 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"Release_IA64/libdb45s.lib"
-# ADD LIB32 /nologo /out:"Release_IA64/libdb45s.lib"
+# ADD BASE LIB32 /nologo /out:"Release_IA64/libdb46s.lib"
+# ADD LIB32 /nologo /out:"Release_IA64/libdb46s.lib"
+
+!ELSEIF "$(CFG)" == "db_static - Win32 Debug AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_AMD64"
+# PROP BASE Intermediate_Dir "Debug/db_static"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_AMD64"
+# PROP Intermediate_Dir "Debug_AMD64/db_static"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "DIAGNOSTIC" /D "UNICODE" /D "_UNICODE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "DIAGNOSTIC" /D "UNICODE" /D "_UNICODE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /Wp64 /FD /Wp64 /c
+# ADD BASE RSC /l 0xc09
+# ADD RSC /l 0xc09
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"Debug_AMD64/libdb46sd.lib"
+# ADD LIB32 /nologo /out:"Debug_AMD64/libdb46sd.lib"
+
+!ELSEIF "$(CFG)" == "db_static - Win32 Release AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_AMD64"
+# PROP BASE Intermediate_Dir "Release_AMD64/db_static"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_AMD64"
+# PROP Intermediate_Dir "Release_AMD64/db_static"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "UNICODE" /D "_UNICODE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "UNICODE" /D "_UNICODE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /Wp64 /FD /c
+# ADD BASE RSC /l 0xc09
+# ADD RSC /l 0xc09
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"Release_AMD64/libdb46s.lib"
+# ADD LIB32 /nologo /out:"Release_AMD64/libdb46s.lib"
+
+!ELSEIF "$(CFG)" == "db_static - Win32 Debug IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_IA64"
+# PROP BASE Intermediate_Dir "Debug_IA64/db_static"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_IA64"
+# PROP Intermediate_Dir "Debug_IA64/db_static"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "DIAGNOSTIC" /D "UNICODE" /D "_UNICODE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "DIAGNOSTIC" /D "UNICODE" /D "_UNICODE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /Wp64 /FD /c
+# ADD BASE RSC /l 0xc09
+# ADD RSC /l 0xc09
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"Debug_IA64/libdb46sd.lib"
+# ADD LIB32 /nologo /out:"Debug_IA64/libdb46sd.lib"
+
+!ELSEIF "$(CFG)" == "db_static - Win32 Release IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_IA64"
+# PROP BASE Intermediate_Dir "Release_IA64/db_static"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_IA64"
+# PROP Intermediate_Dir "Release_IA64/db_static"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "UNICODE" /D "_UNICODE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "UNICODE" /D "_UNICODE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /Wp64 /FD /c
+# ADD BASE RSC /l 0xc09
+# ADD RSC /l 0xc09
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"Release_IA64/libdb46s.lib"
+# ADD LIB32 /nologo /out:"Release_IA64/libdb46s.lib"
!ENDIF
# Begin Target
-# Name "db_static - Win32 Release"
-# Name "db_static - Win32 Debug"
-# Name "db_static - Win32 ASCII Release"
-# Name "db_static - Win32 ASCII Debug"
+# Name "db_static - Win32 Release x86"
+# Name "db_static - Win32 Debug x86"
+# Name "db_static - Win32 ASCII Release x86"
+# Name "db_static - Win32 ASCII Debug x86"
# Name "db_static - x64 Debug AMD64"
# Name "db_static - x64 Release AMD64"
# Name "db_static - x64 Debug IA64"
# Name "db_static - x64 Release IA64"
+# Name "db_static - Win32 Debug AMD64"
+# Name "db_static - Win32 Release AMD64"
+# Name "db_static - Win32 Debug IA64"
+# Name "db_static - Win32 Release IA64"
# Begin Source File
SOURCE=..\btree\bt_compact.c
@@ -316,10 +416,6 @@ SOURCE=..\clib\getaddrinfo.c
# End Source File
# Begin Source File
-SOURCE=..\clib\strcasecmp.c
-# End Source File
-# Begin Source File
-
SOURCE=..\clib\strsep.c
# End Source File
# Begin Source File
@@ -328,10 +424,6 @@ SOURCE=..\common\db_byteorder.c
# End Source File
# Begin Source File
-SOURCE=..\common\db_clock.c
-# End Source File
-# Begin Source File
-
SOURCE=..\common\db_err.c
# End Source File
# Begin Source File
@@ -348,6 +440,10 @@ SOURCE=..\common\db_log2.c
# End Source File
# Begin Source File
+SOURCE=..\common\db_shash.c
+# End Source File
+# Begin Source File
+
SOURCE=..\common\mkpath.c
# End Source File
# Begin Source File
@@ -576,11 +672,7 @@ SOURCE=..\dbreg\dbreg_util.c
# End Source File
# Begin Source File
-SOURCE=..\env\db_salloc.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\env\db_shash.c
+SOURCE=..\env\env_alloc.c
# End Source File
# Begin Source File
@@ -596,10 +688,18 @@ SOURCE=..\env\env_file.c
# End Source File
# Begin Source File
+SOURCE=..\env\env_globals.c
+# End Source File
+# Begin Source File
+
SOURCE=..\env\env_method.c
# End Source File
# Begin Source File
+SOURCE=..\env\env_name.c
+# End Source File
+# Begin Source File
+
SOURCE=..\env\env_open.c
# End Source File
# Begin Source File
@@ -820,6 +920,10 @@ SOURCE=..\mp\mp_register.c
# End Source File
# Begin Source File
+SOURCE=..\mp\mp_resize.c
+# End Source File
+# Begin Source File
+
SOURCE=..\mp\mp_stat.c
# End Source File
# Begin Source File
@@ -856,15 +960,15 @@ SOURCE=..\mutex\mut_win32.c
# End Source File
# Begin Source File
-SOURCE=..\os\os_alloc.c
+SOURCE=..\os\os_abort.c
# End Source File
# Begin Source File
-SOURCE=..\os\os_fzero.c
+SOURCE=..\os\os_alloc.c
# End Source File
# Begin Source File
-SOURCE=..\os\os_mkdir.c
+SOURCE=..\os\os_fzero.c
# End Source File
# Begin Source File
@@ -940,6 +1044,10 @@ SOURCE=..\os_windows\os_map.c
# End Source File
# Begin Source File
+SOURCE=..\os_windows\os_mkdir.c
+# End Source File
+# Begin Source File
+
SOURCE=..\os_windows\os_open.c
# End Source File
# Begin Source File
@@ -1032,6 +1140,10 @@ SOURCE=..\rep\rep_elect.c
# End Source File
# Begin Source File
+SOURCE=..\rep\rep_lease.c
+# End Source File
+# Begin Source File
+
SOURCE=..\rep\rep_log.c
# End Source File
# Begin Source File
diff --git a/db/build_windows/db_tcl.dsp b/db/build_windows/db_tcl.dsp
index 82c02fffe..87d83fa98 100644
--- a/db/build_windows/db_tcl.dsp
+++ b/db/build_windows/db_tcl.dsp
@@ -4,7 +4,7 @@
# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-CFG=db_tcl - Win32 Debug
+CFG=db_tcl - Win32 Debug x86
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
@@ -13,18 +13,22 @@ CFG=db_tcl - Win32 Debug
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "db_tcl.mak" CFG="db_tcl - Win32 Debug"
+!MESSAGE NMAKE /f "db_tcl.mak" CFG="db_tcl - Win32 Debug x86"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "db_tcl - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "db_tcl - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "db_tcl - Win32 ASCII Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "db_tcl - Win32 ASCII Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "db_tcl - Win32 Release x86" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "db_tcl - Win32 Debug x86" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "db_tcl - Win32 ASCII Debug x86" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "db_tcl - Win32 ASCII Release x86" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE "db_tcl - x64 Debug AMD64" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE "db_tcl - x64 Release AMD64" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE "db_tcl - x64 Debug IA64" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE "db_tcl - x64 Release IA64" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "db_tcl - Win32 Debug AMD64" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "db_tcl - Win32 Release AMD64" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "db_tcl - Win32 Debug IA64" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "db_tcl - Win32 Release IA64" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE
# Begin Project
@@ -35,7 +39,7 @@ CPP=cl.exe
MTL=midl.exe
RSC=rc.exe
-!IF "$(CFG)" == "db_tcl - Win32 Release"
+!IF "$(CFG)" == "db_tcl - Win32 Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -58,10 +62,10 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib tcl84.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:windows /dll /machine:I386
-# ADD LINK32 libdb45.lib tcl84.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:I386 /out:"Release/libdb_tcl45.dll" /libpath:"$(OUTDIR)"
+# ADD BASE LINK32 libdb46.lib tcl84.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:windows /dll /machine:I386
+# ADD LINK32 libdb46.lib tcl84.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:I386 /out:"Release/libdb_tcl46.dll" /libpath:"$(OUTDIR)"
-!ELSEIF "$(CFG)" == "db_tcl - Win32 Debug"
+!ELSEIF "$(CFG)" == "db_tcl - Win32 Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -85,10 +89,10 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib tcl84g.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 libdb45d.lib tcl84g.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /export:__db_assert /pdb:none /debug /machine:I386 /out:"Debug/libdb_tcl45d.dll" /fixed:no /libpath:"$(OUTDIR)"
+# ADD BASE LINK32 libdb46d.lib tcl84g.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 libdb46d.lib tcl84g.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /export:__db_assert /pdb:none /debug /machine:I386 /out:"Debug/libdb_tcl46d.dll" /fixed:no /libpath:"$(OUTDIR)"
-!ELSEIF "$(CFG)" == "db_tcl - Win32 ASCII Debug"
+!ELSEIF "$(CFG)" == "db_tcl - Win32 ASCII Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -114,10 +118,10 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib tcl84g.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /pdb:none /debug /machine:I386 /out:"Debug_ASCII/libdb_tcl45d.dll" /fixed:no
-# ADD LINK32 libdb45d.lib tcl84g.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /export:__db_assert /pdb:none /debug /machine:I386 /out:"Debug_ASCII/libdb_tcl45d.dll" /fixed:no /libpath:"$(OUTDIR)"
+# ADD BASE LINK32 libdb46d.lib tcl84g.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /pdb:none /debug /machine:I386 /out:"Debug_ASCII/libdb_tcl46d.dll" /fixed:no
+# ADD LINK32 libdb46d.lib tcl84g.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /export:__db_assert /pdb:none /debug /machine:I386 /out:"Debug_ASCII/libdb_tcl46d.dll" /fixed:no /libpath:"$(OUTDIR)"
-!ELSEIF "$(CFG)" == "db_tcl - Win32 ASCII Release"
+!ELSEIF "$(CFG)" == "db_tcl - Win32 ASCII Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -141,8 +145,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib tcl84.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:I386 /out:"Release_ASCII/libdb_tcl45.dll"
-# ADD LINK32 libdb45.lib tcl84.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:I386 /out:"Release_ASCII/libdb_tcl45.dll" /libpath:"$(OUTDIR)"
+# ADD BASE LINK32 libdb46.lib tcl84.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:I386 /out:"Release_ASCII/libdb_tcl46.dll"
+# ADD LINK32 libdb46.lib tcl84.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:I386 /out:"Release_ASCII/libdb_tcl46.dll" /libpath:"$(OUTDIR)"
!ELSEIF "$(CFG)" == "db_tcl - x64 Debug AMD64"
@@ -169,8 +173,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib tcl84g.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /debug /machine:AMD64 /out:"Debug_AMD64/libdb_tcl45d.dll" /fixed:no
-# ADD LINK32 libdb45d.lib tcl84g.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /export:__db_assert /debug /machine:AMD64 /out:"Debug_AMD64/libdb_tcl45d.dll" /fixed:no /libpath:"$(OUTDIR)"
+# ADD BASE LINK32 libdb46d.lib tcl84g.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /debug /machine:AMD64 /out:"Debug_AMD64/libdb_tcl46d.dll" /fixed:no
+# ADD LINK32 libdb46d.lib tcl84g.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /export:__db_assert /debug /machine:AMD64 /out:"Debug_AMD64/libdb_tcl46d.dll" /fixed:no /libpath:"$(OUTDIR)"
!ELSEIF "$(CFG)" == "db_tcl - x64 Release AMD64"
@@ -196,8 +200,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib tcl84.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:AMD64 /out:"Release_AMD64/libdb_tcl45.dll"
-# ADD LINK32 libdb45.lib tcl84.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:AMD64 /out:"Release_AMD64/libdb_tcl45.dll" /libpath:"$(OUTDIR)"
+# ADD BASE LINK32 libdb46.lib tcl84.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:AMD64 /out:"Release_AMD64/libdb_tcl46.dll"
+# ADD LINK32 libdb46.lib tcl84.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:AMD64 /out:"Release_AMD64/libdb_tcl46.dll" /libpath:"$(OUTDIR)"
!ELSEIF "$(CFG)" == "db_tcl - x64 Debug IA64"
@@ -225,8 +229,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib tcl84g.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /debug /machine:IA64 /out:"Debug_IA64/libdb_tcl45d.dll" /fixed:no
-# ADD LINK32 libdb45d.lib tcl84g.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /export:__db_assert /debug /machine:IA64 /out:"Debug_IA64/libdb_tcl45d.dll" /fixed:no /libpath:"$(OUTDIR)"
+# ADD BASE LINK32 libdb46d.lib tcl84g.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /debug /machine:IA64 /out:"Debug_IA64/libdb_tcl46d.dll" /fixed:no
+# ADD LINK32 libdb46d.lib tcl84g.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /export:__db_assert /debug /machine:IA64 /out:"Debug_IA64/libdb_tcl46d.dll" /fixed:no /libpath:"$(OUTDIR)"
!ELSEIF "$(CFG)" == "db_tcl - x64 Release IA64"
@@ -252,27 +256,146 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib tcl84.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:IA64 /out:"Release_IA64/libdb_tcl45.dll"
-# ADD LINK32 libdb45.lib tcl84.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:IA64 /out:"Release_IA64/libdb_tcl45.dll" /libpath:"$(OUTDIR)"
+# ADD BASE LINK32 libdb46.lib tcl84.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:IA64 /out:"Release_IA64/libdb_tcl46.dll"
+# ADD LINK32 libdb46.lib tcl84.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:IA64 /out:"Release_IA64/libdb_tcl46.dll" /libpath:"$(OUTDIR)"
+
+!ELSEIF "$(CFG)" == "db_tcl - Win32 Debug AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_AMD64"
+# PROP BASE Intermediate_Dir "Debug_AMD64/db_tcl"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_AMD64"
+# PROP Intermediate_Dir "Debug_AMD64/db_tcl"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "UNICODE" /D "_UNICODE" /D "DB_CREATE_DLL" /D "DIAGNOSTIC" /D "CONFIG_TEST" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "DB_TCL_SUPPORT" /FD /c
+# SUBTRACT BASE CPP /Fr
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "UNICODE" /D "_UNICODE" /D "DB_CREATE_DLL" /D "DIAGNOSTIC" /D "CONFIG_TEST" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "DB_TCL_SUPPORT" /FD /Wp64 /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib tcl84g.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /debug /machine:AMD64 /out:"Debug_AMD64/libdb_tcl46d.dll" /fixed:no
+# ADD LINK32 libdb46d.lib tcl84g.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /export:__db_assert /debug /machine:AMD64 /out:"Debug_AMD64/libdb_tcl46d.dll" /fixed:no /libpath:"$(OUTDIR)"
+
+!ELSEIF "$(CFG)" == "db_tcl - Win32 Release AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_AMD64"
+# PROP BASE Intermediate_Dir "Release_AMD64/db_tcl"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_AMD64"
+# PROP Intermediate_Dir "Release_AMD64/db_tcl"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /Ob2 /I "." /I ".." /D "UNICODE" /D "_UNICODE" /D "DB_CREATE_DLL" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "DB_TCL_SUPPORT" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /Ob2 /I "." /I ".." /D "UNICODE" /D "_UNICODE" /D "DB_CREATE_DLL" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "DB_TCL_SUPPORT" /Wp64 /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib tcl84.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:AMD64 /out:"Release_AMD64/libdb_tcl46.dll"
+# ADD LINK32 libdb46.lib tcl84.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:AMD64 /out:"Release_AMD64/libdb_tcl46.dll" /libpath:"$(OUTDIR)"
+
+!ELSEIF "$(CFG)" == "db_tcl - Win32 Debug IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_IA64"
+# PROP BASE Intermediate_Dir "Debug_IA64/db_tcl"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_IA64"
+# PROP Intermediate_Dir "Debug_IA64/db_tcl"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "UNICODE" /D "_UNICODE" /D "DB_CREATE_DLL" /D "DIAGNOSTIC" /D "CONFIG_TEST" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "DB_TCL_SUPPORT" /Wp64 /FD /c
+# SUBTRACT BASE CPP /Fr
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "UNICODE" /D "_UNICODE" /D "DB_CREATE_DLL" /D "DIAGNOSTIC" /D "CONFIG_TEST" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "DB_TCL_SUPPORT" /Wp64 /FD /c
+# SUBTRACT CPP /Fr
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib tcl84g.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /debug /machine:IA64 /out:"Debug_IA64/libdb_tcl46d.dll" /fixed:no
+# ADD LINK32 libdb46d.lib tcl84g.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /export:__db_assert /debug /machine:IA64 /out:"Debug_IA64/libdb_tcl46d.dll" /fixed:no /libpath:"$(OUTDIR)"
+
+!ELSEIF "$(CFG)" == "db_tcl - Win32 Release IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_IA64"
+# PROP BASE Intermediate_Dir "Release_IA64/db_tcl"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_IA64"
+# PROP Intermediate_Dir "Release_IA64/db_tcl"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /Ob2 /I "." /I ".." /D "UNICODE" /D "_UNICODE" /D "DB_CREATE_DLL" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "DB_TCL_SUPPORT" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /Ob2 /I "." /I ".." /D "UNICODE" /D "_UNICODE" /D "DB_CREATE_DLL" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "DB_TCL_SUPPORT" /Wp64 /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib tcl84.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:IA64 /out:"Release_IA64/libdb_tcl46.dll"
+# ADD LINK32 libdb46.lib tcl84.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:IA64 /out:"Release_IA64/libdb_tcl46.dll" /libpath:"$(OUTDIR)"
!ENDIF
# Begin Target
-# Name "db_tcl - Win32 Release"
-# Name "db_tcl - Win32 Debug"
-# Name "db_tcl - Win32 ASCII Debug"
-# Name "db_tcl - Win32 ASCII Release"
+# Name "db_tcl - Win32 Release x86"
+# Name "db_tcl - Win32 Debug x86"
+# Name "db_tcl - Win32 ASCII Debug x86"
+# Name "db_tcl - Win32 ASCII Release x86"
# Name "db_tcl - x64 Debug AMD64"
# Name "db_tcl - x64 Release AMD64"
# Name "db_tcl - x64 Debug IA64"
# Name "db_tcl - x64 Release IA64"
+# Name "db_tcl - Win32 Debug AMD64"
+# Name "db_tcl - Win32 Release AMD64"
+# Name "db_tcl - Win32 Debug IA64"
+# Name "db_tcl - Win32 Release IA64"
# Begin Source File
SOURCE=.\libdb_tcl.def
# End Source File
# Begin Source File
+SOURCE=..\os\os_abort.c
+# End Source File
+# Begin Source File
+
SOURCE=..\tcl\tcl_compat.c
# End Source File
# Begin Source File
diff --git a/db/build_windows/db_test.dsp b/db/build_windows/db_test.dsp
index eff4cf7e5..0efc350b7 100644
--- a/db/build_windows/db_test.dsp
+++ b/db/build_windows/db_test.dsp
@@ -4,7 +4,7 @@
# TARGTYPE "Win32 (x86) Console Application" 0x0103
-CFG=db_test - Win32 Debug
+CFG=db_test - Win32 Debug x86
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
@@ -13,18 +13,22 @@ CFG=db_test - Win32 Debug
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "db_test.mak" CFG="db_test - Win32 Debug"
+!MESSAGE NMAKE /f "db_test.mak" CFG="db_test - Win32 Debug x86"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "db_test - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_test - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_test - Win32 ASCII Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_test - Win32 ASCII Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_test - Win32 Release x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_test - Win32 Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_test - Win32 ASCII Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_test - Win32 ASCII Release x86" (based on "Win32 (x86) Console Application")
!MESSAGE "db_test - x64 Debug AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "db_test - x64 Release AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "db_test - x64 Debug IA64" (based on "Win32 (x86) Console Application")
!MESSAGE "db_test - x64 Release IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_test - Win32 Debug AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_test - Win32 Release AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_test - Win32 Debug IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_test - Win32 Release IA64" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
@@ -34,7 +38,7 @@ CFG=db_test - Win32 Debug
CPP=cl.exe
RSC=rc.exe
-!IF "$(CFG)" == "db_test - Win32 Release"
+!IF "$(CFG)" == "db_test - Win32 Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -56,14 +60,14 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 /out:"dbkill.exe" kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 libdb45.lib /out:"dbkill.exe" kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
+# ADD LINK32 libdb46.lib /out:"dbkill.exe" kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
# Begin Special Build Tool
SOURCE="$(InputPath)"
PostBuild_Desc=Copy built executable files.
PostBuild_Cmds=copy $(OUTDIR)\*.exe . copy $(OUTDIR)\*.dll .
# End Special Build Tool
-!ELSEIF "$(CFG)" == "db_test - Win32 Debug"
+!ELSEIF "$(CFG)" == "db_test - Win32 Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -85,14 +89,14 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 /out:"dbkill.exe" kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 libdb45d.lib /out:"dbkill.exe" kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
+# ADD LINK32 libdb46d.lib /out:"dbkill.exe" kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
# Begin Special Build Tool
SOURCE="$(InputPath)"
PostBuild_Desc=Copy built executable files.
PostBuild_Cmds=copy $(OUTDIR)\*.exe . copy $(OUTDIR)\*.dll .
# End Special Build Tool
-!ELSEIF "$(CFG)" == "db_test - Win32 ASCII Debug"
+!ELSEIF "$(CFG)" == "db_test - Win32 ASCII Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -114,15 +118,15 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib /out:"dbkill.exe" kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib /out:"dbkill.exe" kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
+# ADD BASE LINK32 libdb46d.lib /out:"dbkill.exe" kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib /out:"dbkill.exe" kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
# Begin Special Build Tool
SOURCE="$(InputPath)"
PostBuild_Desc=Copy built executable files.
PostBuild_Cmds=copy $(OUTDIR)\*.exe . copy $(OUTDIR)\*.dll .
# End Special Build Tool
-!ELSEIF "$(CFG)" == "db_test - Win32 ASCII Release"
+!ELSEIF "$(CFG)" == "db_test - Win32 ASCII Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -144,8 +148,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib /out:"dbkill.exe" kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib /out:"dbkill.exe" kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
+# ADD BASE LINK32 libdb46.lib /out:"dbkill.exe" kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib /out:"dbkill.exe" kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
# Begin Special Build Tool
SOURCE="$(InputPath)"
PostBuild_Desc=Copy built executable files.
@@ -174,8 +178,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib /out:"dbkill.exe" bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib /out:"dbkill.exe" bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+# ADD BASE LINK32 libdb46d.lib /out:"dbkill.exe" bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib /out:"dbkill.exe" bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
# Begin Special Build Tool
SOURCE="$(InputPath)"
PostBuild_Desc=Copy built executable files.
@@ -204,8 +208,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib /out:"dbkill.exe" bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib /out:"dbkill.exe" bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+# ADD BASE LINK32 libdb46.lib /out:"dbkill.exe" bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib /out:"dbkill.exe" bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
# Begin Special Build Tool
SOURCE="$(InputPath)"
PostBuild_Desc=Copy built executable files.
@@ -234,8 +238,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib /out:"dbkill.exe" bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib /out:"dbkill.exe" bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+# ADD BASE LINK32 libdb46d.lib /out:"dbkill.exe" bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib /out:"dbkill.exe" bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
# Begin Special Build Tool
SOURCE="$(InputPath)"
PostBuild_Desc=Copy built executable files.
@@ -264,8 +268,128 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib /out:"dbkill.exe" bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib /out:"dbkill.exe" bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+# ADD BASE LINK32 libdb46.lib /out:"dbkill.exe" bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib /out:"dbkill.exe" bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Desc=Copy built executable files.
+PostBuild_Cmds=copy $(OUTDIR)\*.exe . copy $(OUTDIR)\*.dll .
+# End Special Build Tool
+
+!ELSEIF "$(CFG)" == "db_test - Win32 Debug AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_AMD64"
+# PROP BASE Intermediate_Dir "Debug_AMD64/db_test"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_AMD64"
+# PROP Intermediate_Dir "Debug_AMD64/db_test"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib /out:"dbkill.exe" bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib /out:"dbkill.exe" bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Desc=Copy built executable files.
+PostBuild_Cmds=copy $(OUTDIR)\*.exe . copy $(OUTDIR)\*.dll .
+# End Special Build Tool
+
+!ELSEIF "$(CFG)" == "db_test - Win32 Release AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_AMD64"
+# PROP BASE Intermediate_Dir "Release_AMD64/db_test"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_AMD64"
+# PROP Intermediate_Dir "Release_AMD64/db_test"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib /out:"dbkill.exe" bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib /out:"dbkill.exe" bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Desc=Copy built executable files.
+PostBuild_Cmds=copy $(OUTDIR)\*.exe . copy $(OUTDIR)\*.dll .
+# End Special Build Tool
+
+!ELSEIF "$(CFG)" == "db_test - Win32 Debug IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_IA64"
+# PROP BASE Intermediate_Dir "Debug_IA64/db_test"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_IA64"
+# PROP Intermediate_Dir "Debug_IA64/db_test"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib /out:"dbkill.exe" bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib /out:"dbkill.exe" bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Desc=Copy built executable files.
+PostBuild_Cmds=copy $(OUTDIR)\*.exe . copy $(OUTDIR)\*.dll .
+# End Special Build Tool
+
+!ELSEIF "$(CFG)" == "db_test - Win32 Release IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_IA64"
+# PROP BASE Intermediate_Dir "Release_IA64/db_test"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_IA64"
+# PROP Intermediate_Dir "Release_IA64/db_test"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib /out:"dbkill.exe" bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib /out:"dbkill.exe" bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
# Begin Special Build Tool
SOURCE="$(InputPath)"
PostBuild_Desc=Copy built executable files.
@@ -276,14 +400,18 @@ PostBuild_Cmds=copy $(OUTDIR)\*.exe . copy $(OUTDIR)\*.dll .
# Begin Target
-# Name "db_test - Win32 Release"
-# Name "db_test - Win32 Debug"
-# Name "db_test - Win32 ASCII Debug"
-# Name "db_test - Win32 ASCII Release"
+# Name "db_test - Win32 Release x86"
+# Name "db_test - Win32 Debug x86"
+# Name "db_test - Win32 ASCII Debug x86"
+# Name "db_test - Win32 ASCII Release x86"
# Name "db_test - x64 Debug AMD64"
# Name "db_test - x64 Release AMD64"
# Name "db_test - x64 Debug IA64"
# Name "db_test - x64 Release IA64"
+# Name "db_test - Win32 Debug AMD64"
+# Name "db_test - Win32 Release AMD64"
+# Name "db_test - Win32 Debug IA64"
+# Name "db_test - Win32 Release IA64"
# Begin Source File
SOURCE=.\dbkill.cpp
diff --git a/db/build_windows/db_upgrade.dsp b/db/build_windows/db_upgrade.dsp
index e2cd5ac4e..7e8aa621c 100644
--- a/db/build_windows/db_upgrade.dsp
+++ b/db/build_windows/db_upgrade.dsp
@@ -4,7 +4,7 @@
# TARGTYPE "Win32 (x86) Console Application" 0x0103
-CFG=db_upgrade - Win32 Debug
+CFG=db_upgrade - Win32 Debug x86
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
@@ -13,18 +13,22 @@ CFG=db_upgrade - Win32 Debug
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "db_upgrade.mak" CFG="db_upgrade - Win32 Debug"
+!MESSAGE NMAKE /f "db_upgrade.mak" CFG="db_upgrade - Win32 Debug x86"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "db_upgrade - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_upgrade - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_upgrade - Win32 ASCII Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_upgrade - Win32 ASCII Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_upgrade - Win32 Release x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_upgrade - Win32 Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_upgrade - Win32 ASCII Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_upgrade - Win32 ASCII Release x86" (based on "Win32 (x86) Console Application")
!MESSAGE "db_upgrade - x64 Debug AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "db_upgrade - x64 Release AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "db_upgrade - x64 Debug IA64" (based on "Win32 (x86) Console Application")
!MESSAGE "db_upgrade - x64 Release IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_upgrade - Win32 Debug AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_upgrade - Win32 Release AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_upgrade - Win32 Debug IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_upgrade - Win32 Release IA64" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
@@ -34,7 +38,7 @@ CFG=db_upgrade - Win32 Debug
CPP=cl.exe
RSC=rc.exe
-!IF "$(CFG)" == "db_upgrade - Win32 Release"
+!IF "$(CFG)" == "db_upgrade - Win32 Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -56,9 +60,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
-!ELSEIF "$(CFG)" == "db_upgrade - Win32 Debug"
+!ELSEIF "$(CFG)" == "db_upgrade - Win32 Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -80,9 +84,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
-!ELSEIF "$(CFG)" == "db_upgrade - Win32 ASCII Debug"
+!ELSEIF "$(CFG)" == "db_upgrade - Win32 ASCII Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -104,10 +108,10 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
+# ADD BASE LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
-!ELSEIF "$(CFG)" == "db_upgrade - Win32 ASCII Release"
+!ELSEIF "$(CFG)" == "db_upgrade - Win32 ASCII Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -129,8 +133,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
+# ADD BASE LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
!ELSEIF "$(CFG)" == "db_upgrade - x64 Debug AMD64"
@@ -154,8 +158,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
!ELSEIF "$(CFG)" == "db_upgrade - x64 Release AMD64"
@@ -179,8 +183,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
!ELSEIF "$(CFG)" == "db_upgrade - x64 Debug IA64"
@@ -204,8 +208,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
!ELSEIF "$(CFG)" == "db_upgrade - x64 Release IA64"
@@ -229,21 +233,125 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+
+!ELSEIF "$(CFG)" == "db_upgrade - Win32 Debug AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_AMD64"
+# PROP BASE Intermediate_Dir "Debug_AMD64/db_upgrade"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_AMD64"
+# PROP Intermediate_Dir "Debug_AMD64/db_upgrade"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+
+!ELSEIF "$(CFG)" == "db_upgrade - Win32 Release AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_AMD64"
+# PROP BASE Intermediate_Dir "Release_AMD64/db_upgrade"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_AMD64"
+# PROP Intermediate_Dir "Release_AMD64/db_upgrade"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+
+!ELSEIF "$(CFG)" == "db_upgrade - Win32 Debug IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_IA64"
+# PROP BASE Intermediate_Dir "Debug_IA64/db_upgrade"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_IA64"
+# PROP Intermediate_Dir "Debug_IA64/db_upgrade"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+
+!ELSEIF "$(CFG)" == "db_upgrade - Win32 Release IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_IA64"
+# PROP BASE Intermediate_Dir "Release_IA64/db_upgrade"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_IA64"
+# PROP Intermediate_Dir "Release_IA64/db_upgrade"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
!ENDIF
# Begin Target
-# Name "db_upgrade - Win32 Release"
-# Name "db_upgrade - Win32 Debug"
-# Name "db_upgrade - Win32 ASCII Debug"
-# Name "db_upgrade - Win32 ASCII Release"
+# Name "db_upgrade - Win32 Release x86"
+# Name "db_upgrade - Win32 Debug x86"
+# Name "db_upgrade - Win32 ASCII Debug x86"
+# Name "db_upgrade - Win32 ASCII Release x86"
# Name "db_upgrade - x64 Debug AMD64"
# Name "db_upgrade - x64 Release AMD64"
# Name "db_upgrade - x64 Debug IA64"
# Name "db_upgrade - x64 Release IA64"
+# Name "db_upgrade - Win32 Debug AMD64"
+# Name "db_upgrade - Win32 Release AMD64"
+# Name "db_upgrade - Win32 Debug IA64"
+# Name "db_upgrade - Win32 Release IA64"
# Begin Source File
SOURCE=..\db_upgrade\db_upgrade.c
diff --git a/db/build_windows/db_verify.dsp b/db/build_windows/db_verify.dsp
index f084bc9a2..51e5d985a 100644
--- a/db/build_windows/db_verify.dsp
+++ b/db/build_windows/db_verify.dsp
@@ -4,7 +4,7 @@
# TARGTYPE "Win32 (x86) Console Application" 0x0103
-CFG=db_verify - Win32 Debug
+CFG=db_verify - Win32 Debug x86
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
@@ -13,18 +13,22 @@ CFG=db_verify - Win32 Debug
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "db_verify.mak" CFG="db_verify - Win32 Debug"
+!MESSAGE NMAKE /f "db_verify.mak" CFG="db_verify - Win32 Debug x86"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "db_verify - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_verify - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_verify - Win32 ASCII Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "db_verify - Win32 ASCII Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_verify - Win32 Release x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_verify - Win32 Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_verify - Win32 ASCII Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_verify - Win32 ASCII Release x86" (based on "Win32 (x86) Console Application")
!MESSAGE "db_verify - x64 Debug AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "db_verify - x64 Release AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "db_verify - x64 Debug IA64" (based on "Win32 (x86) Console Application")
!MESSAGE "db_verify - x64 Release IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_verify - Win32 Debug AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_verify - Win32 Release AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_verify - Win32 Debug IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "db_verify - Win32 Release IA64" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
@@ -34,7 +38,7 @@ CFG=db_verify - Win32 Debug
CPP=cl.exe
RSC=rc.exe
-!IF "$(CFG)" == "db_verify - Win32 Release"
+!IF "$(CFG)" == "db_verify - Win32 Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -56,9 +60,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
-!ELSEIF "$(CFG)" == "db_verify - Win32 Debug"
+!ELSEIF "$(CFG)" == "db_verify - Win32 Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -80,9 +84,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
-!ELSEIF "$(CFG)" == "db_verify - Win32 ASCII Debug"
+!ELSEIF "$(CFG)" == "db_verify - Win32 ASCII Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -104,10 +108,10 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
+# ADD BASE LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
-!ELSEIF "$(CFG)" == "db_verify - Win32 ASCII Release"
+!ELSEIF "$(CFG)" == "db_verify - Win32 ASCII Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -129,8 +133,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
+# ADD BASE LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
!ELSEIF "$(CFG)" == "db_verify - x64 Debug AMD64"
@@ -154,8 +158,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
!ELSEIF "$(CFG)" == "db_verify - x64 Release AMD64"
@@ -179,8 +183,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
!ELSEIF "$(CFG)" == "db_verify - x64 Debug IA64"
@@ -204,8 +208,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
!ELSEIF "$(CFG)" == "db_verify - x64 Release IA64"
@@ -229,21 +233,125 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+
+!ELSEIF "$(CFG)" == "db_verify - Win32 Debug AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_AMD64"
+# PROP BASE Intermediate_Dir "Debug_AMD64/db_verify"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_AMD64"
+# PROP Intermediate_Dir "Debug_AMD64/db_verify"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+
+!ELSEIF "$(CFG)" == "db_verify - Win32 Release AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_AMD64"
+# PROP BASE Intermediate_Dir "Release_AMD64/db_verify"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_AMD64"
+# PROP Intermediate_Dir "Release_AMD64/db_verify"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+
+!ELSEIF "$(CFG)" == "db_verify - Win32 Debug IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_IA64"
+# PROP BASE Intermediate_Dir "Debug_IA64/db_verify"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_IA64"
+# PROP Intermediate_Dir "Debug_IA64/db_verify"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+
+!ELSEIF "$(CFG)" == "db_verify - Win32 Release IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_IA64"
+# PROP BASE Intermediate_Dir "Release_IA64/db_verify"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_IA64"
+# PROP Intermediate_Dir "Release_IA64/db_verify"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
!ENDIF
# Begin Target
-# Name "db_verify - Win32 Release"
-# Name "db_verify - Win32 Debug"
-# Name "db_verify - Win32 ASCII Debug"
-# Name "db_verify - Win32 ASCII Release"
+# Name "db_verify - Win32 Release x86"
+# Name "db_verify - Win32 Debug x86"
+# Name "db_verify - Win32 ASCII Debug x86"
+# Name "db_verify - Win32 ASCII Release x86"
# Name "db_verify - x64 Debug AMD64"
# Name "db_verify - x64 Release AMD64"
# Name "db_verify - x64 Debug IA64"
# Name "db_verify - x64 Release IA64"
+# Name "db_verify - Win32 Debug AMD64"
+# Name "db_verify - Win32 Release AMD64"
+# Name "db_verify - Win32 Debug IA64"
+# Name "db_verify - Win32 Release IA64"
# Begin Source File
SOURCE=..\db_verify\db_verify.c
diff --git a/db/build_windows/dbkill.cpp b/db/build_windows/dbkill.cpp
index b186bde42..6c1f940fb 100644
--- a/db/build_windows/dbkill.cpp
+++ b/db/build_windows/dbkill.cpp
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1999-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1999,2007 Oracle. All rights reserved.
*
- * $Id: dbkill.cpp,v 12.4 2006/08/24 14:45:08 bostic Exp $
+ * $Id: dbkill.cpp,v 12.6 2007/05/17 15:14:54 bostic Exp $
*/
/*
* Kill -
diff --git a/db/build_windows/dynamic_dsp.src b/db/build_windows/dynamic_dsp.src
index fb6862cb7..c4d99d5a4 100644
--- a/db/build_windows/dynamic_dsp.src
+++ b/db/build_windows/dynamic_dsp.src
@@ -4,7 +4,7 @@
# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-CFG=@project_name@ - Win32 Debug
+CFG=@project_name@ - Win32 Debug x86
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
@@ -13,18 +13,22 @@ CFG=@project_name@ - Win32 Debug
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "@project_name@.mak" CFG="@project_name@ - Win32 Debug"
+!MESSAGE NMAKE /f "@project_name@.mak" CFG="@project_name@ - Win32 Debug x86"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "@project_name@ - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "@project_name@ - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "@project_name@ - Win32 ASCII Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "@project_name@ - Win32 ASCII Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "@project_name@ - Win32 Release x86" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "@project_name@ - Win32 Debug x86" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "@project_name@ - Win32 ASCII Debug x86" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "@project_name@ - Win32 ASCII Release x86" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE "@project_name@ - x64 Debug AMD64" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE "@project_name@ - x64 Release AMD64" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE "@project_name@ - x64 Debug IA64" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE "@project_name@ - x64 Release IA64" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "@project_name@ - Win32 Debug AMD64" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "@project_name@ - Win32 Release AMD64" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "@project_name@ - Win32 Debug IA64" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "@project_name@ - Win32 Release IA64" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE
# Begin Project
@@ -35,7 +39,7 @@ CPP=cl.exe
MTL=midl.exe
RSC=rc.exe
-!IF "$(CFG)" == "@project_name@ - Win32 Release"
+!IF "$(CFG)" == "@project_name@ - Win32 Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -62,7 +66,7 @@ LINK32=link.exe
# ADD LINK32 @release_libs@ kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:I386 /out:"@bin_rel_dest@/libdb@lib_suffix@@DB_VERSION_MAJOR@@DB_VERSION_MINOR@.dll" /libpath:"$(OUTDIR)"
@POST_BUILD@
-!ELSEIF "$(CFG)" == "@project_name@ - Win32 Debug"
+!ELSEIF "$(CFG)" == "@project_name@ - Win32 Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -90,7 +94,7 @@ LINK32=link.exe
# ADD LINK32 @debug_libs@ kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /export:__db_assert /pdb:none /debug /machine:I386 /out:"@bin_debug_dest@/libdb@lib_suffix@@DB_VERSION_MAJOR@@DB_VERSION_MINOR@d.dll" /fixed:no /libpath:"$(OUTDIR)"
@POST_BUILD@
-!ELSEIF "$(CFG)" == "@project_name@ - Win32 ASCII Debug"
+!ELSEIF "$(CFG)" == "@project_name@ - Win32 ASCII Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -120,7 +124,7 @@ LINK32=link.exe
# ADD LINK32 @debug_libs@ kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /export:__db_assert /pdb:none /debug /machine:I386 /out:"@bin_debug_dest@_ASCII/libdb@lib_suffix@@DB_VERSION_MAJOR@@DB_VERSION_MINOR@d.dll" /fixed:no /libpath:"$(OUTDIR)"
@POST_BUILD@
-!ELSEIF "$(CFG)" == "@project_name@ - Win32 ASCII Release"
+!ELSEIF "$(CFG)" == "@project_name@ - Win32 ASCII Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -263,18 +267,137 @@ LINK32=link.exe
# ADD LINK32 @release_libs@ bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:IA64 /out:"@bin_rel_dest@_IA64/libdb@lib_suffix@@DB_VERSION_MAJOR@@DB_VERSION_MINOR@.dll" /libpath:"$(OUTDIR)"
@POST_BUILD@
+!ELSEIF "$(CFG)" == "@project_name@ - Win32 Debug AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "@lib_debug_dest@_AMD64"
+# PROP BASE Intermediate_Dir "Debug_AMD64/@project_name@"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "@lib_debug_dest@_AMD64"
+# PROP Intermediate_Dir "Debug_AMD64/@project_name@"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "UNICODE" /D "_UNICODE" /D "DB_CREATE_DLL" /D "DIAGNOSTIC" /D "CONFIG_TEST" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" @extra_cppflags@ /FD /c
+# SUBTRACT BASE CPP /Fr
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "UNICODE" /D "_UNICODE" /D "DB_CREATE_DLL" /D "DIAGNOSTIC" /D "CONFIG_TEST" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" @extra_cppflags@ /FD /Wp64 /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 @debug_libs@ bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /debug /machine:AMD64 /out:"@bin_debug_dest@_AMD64/libdb@lib_suffix@@DB_VERSION_MAJOR@@DB_VERSION_MINOR@d.dll" /fixed:no
+# ADD LINK32 @debug_libs@ bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /export:__db_assert /debug /machine:AMD64 /out:"@bin_debug_dest@_AMD64/libdb@lib_suffix@@DB_VERSION_MAJOR@@DB_VERSION_MINOR@d.dll" /fixed:no /libpath:"$(OUTDIR)"
+@POST_BUILD@
+
+!ELSEIF "$(CFG)" == "@project_name@ - Win32 Release AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "@lib_rel_dest@_AMD64"
+# PROP BASE Intermediate_Dir "Release_AMD64/@project_name@"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "@lib_rel_dest@_AMD64"
+# PROP Intermediate_Dir "Release_AMD64/@project_name@"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /Ob2 /I "." /I ".." /D "UNICODE" /D "_UNICODE" /D "DB_CREATE_DLL" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" @extra_cppflags@ /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /Ob2 /I "." /I ".." /D "UNICODE" /D "_UNICODE" /D "DB_CREATE_DLL" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" @extra_cppflags@ /Wp64 /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 @release_libs@ bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:AMD64 /out:"@bin_rel_dest@_AMD64/libdb@lib_suffix@@DB_VERSION_MAJOR@@DB_VERSION_MINOR@.dll"
+# ADD LINK32 @release_libs@ bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:AMD64 /out:"@bin_rel_dest@_AMD64/libdb@lib_suffix@@DB_VERSION_MAJOR@@DB_VERSION_MINOR@.dll" /libpath:"$(OUTDIR)"
+@POST_BUILD@
+
+!ELSEIF "$(CFG)" == "@project_name@ - Win32 Debug IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "@lib_debug_dest@_IA64"
+# PROP BASE Intermediate_Dir "Debug_IA64/@project_name@"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "@lib_debug_dest@_IA64"
+# PROP Intermediate_Dir "Debug_IA64/@project_name@"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "UNICODE" /D "_UNICODE" /D "DB_CREATE_DLL" /D "DIAGNOSTIC" /D "CONFIG_TEST" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" @extra_cppflags@ /Wp64 /FD /c
+# SUBTRACT BASE CPP /Fr
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "UNICODE" /D "_UNICODE" /D "DB_CREATE_DLL" /D "DIAGNOSTIC" /D "CONFIG_TEST" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" @extra_cppflags@ /Wp64 /FD /c
+# SUBTRACT CPP /Fr
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 @debug_libs@ bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /debug /machine:IA64 /out:"@bin_debug_dest@_IA64/libdb@lib_suffix@@DB_VERSION_MAJOR@@DB_VERSION_MINOR@d.dll" /fixed:no
+# ADD LINK32 @debug_libs@ bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /export:__db_assert /debug /machine:IA64 /out:"@bin_debug_dest@_IA64/libdb@lib_suffix@@DB_VERSION_MAJOR@@DB_VERSION_MINOR@d.dll" /fixed:no /libpath:"$(OUTDIR)"
+@POST_BUILD@
+
+!ELSEIF "$(CFG)" == "@project_name@ - Win32 Release IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "@lib_rel_dest@_IA64"
+# PROP BASE Intermediate_Dir "Release_IA64/@project_name@"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "@lib_rel_dest@_IA64"
+# PROP Intermediate_Dir "Release_IA64/@project_name@"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /Ob2 /I "." /I ".." /D "UNICODE" /D "_UNICODE" /D "DB_CREATE_DLL" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" @extra_cppflags@ /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /Ob2 /I "." /I ".." /D "UNICODE" /D "_UNICODE" /D "DB_CREATE_DLL" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" @extra_cppflags@ /Wp64 /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 @release_libs@ bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:IA64 /out:"@bin_rel_dest@_IA64/libdb@lib_suffix@@DB_VERSION_MAJOR@@DB_VERSION_MINOR@.dll"
+# ADD LINK32 @release_libs@ bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x13000000" /subsystem:windows /dll /machine:IA64 /out:"@bin_rel_dest@_IA64/libdb@lib_suffix@@DB_VERSION_MAJOR@@DB_VERSION_MINOR@.dll" /libpath:"$(OUTDIR)"
+@POST_BUILD@
+
!ENDIF
# Begin Target
-# Name "@project_name@ - Win32 Release"
-# Name "@project_name@ - Win32 Debug"
-# Name "@project_name@ - Win32 ASCII Debug"
-# Name "@project_name@ - Win32 ASCII Release"
+# Name "@project_name@ - Win32 Release x86"
+# Name "@project_name@ - Win32 Debug x86"
+# Name "@project_name@ - Win32 ASCII Debug x86"
+# Name "@project_name@ - Win32 ASCII Release x86"
# Name "@project_name@ - x64 Debug AMD64"
# Name "@project_name@ - x64 Release AMD64"
# Name "@project_name@ - x64 Debug IA64"
# Name "@project_name@ - x64 Release IA64"
+# Name "@project_name@ - Win32 Debug AMD64"
+# Name "@project_name@ - Win32 Release AMD64"
+# Name "@project_name@ - Win32 Debug IA64"
+# Name "@project_name@ - Win32 Release IA64"
@SOURCE_FILES@
# End Target
diff --git a/db/build_windows/ex_access.dsp b/db/build_windows/ex_access.dsp
index b6fa3cd77..cd5b420ca 100644
--- a/db/build_windows/ex_access.dsp
+++ b/db/build_windows/ex_access.dsp
@@ -4,7 +4,7 @@
# TARGTYPE "Win32 (x86) Console Application" 0x0103
-CFG=ex_access - Win32 Debug
+CFG=ex_access - Win32 Debug x86
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
@@ -13,18 +13,22 @@ CFG=ex_access - Win32 Debug
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "ex_access.mak" CFG="ex_access - Win32 Debug"
+!MESSAGE NMAKE /f "ex_access.mak" CFG="ex_access - Win32 Debug x86"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "ex_access - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_access - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_access - Win32 ASCII Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_access - Win32 ASCII Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_access - Win32 Release x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_access - Win32 Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_access - Win32 ASCII Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_access - Win32 ASCII Release x86" (based on "Win32 (x86) Console Application")
!MESSAGE "ex_access - x64 Debug AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "ex_access - x64 Release AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "ex_access - x64 Debug IA64" (based on "Win32 (x86) Console Application")
!MESSAGE "ex_access - x64 Release IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_access - Win32 Debug AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_access - Win32 Release AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_access - Win32 Debug IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_access - Win32 Release IA64" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
@@ -34,7 +38,7 @@ CFG=ex_access - Win32 Debug
CPP=cl.exe
RSC=rc.exe
-!IF "$(CFG)" == "ex_access - Win32 Release"
+!IF "$(CFG)" == "ex_access - Win32 Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -56,9 +60,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
-!ELSEIF "$(CFG)" == "ex_access - Win32 Debug"
+!ELSEIF "$(CFG)" == "ex_access - Win32 Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -80,9 +84,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
-!ELSEIF "$(CFG)" == "ex_access - Win32 ASCII Debug"
+!ELSEIF "$(CFG)" == "ex_access - Win32 ASCII Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -104,10 +108,10 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
+# ADD BASE LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
-!ELSEIF "$(CFG)" == "ex_access - Win32 ASCII Release"
+!ELSEIF "$(CFG)" == "ex_access - Win32 ASCII Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -129,8 +133,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
+# ADD BASE LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
!ELSEIF "$(CFG)" == "ex_access - x64 Debug AMD64"
@@ -154,8 +158,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
!ELSEIF "$(CFG)" == "ex_access - x64 Release AMD64"
@@ -179,8 +183,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
!ELSEIF "$(CFG)" == "ex_access - x64 Debug IA64"
@@ -204,8 +208,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
!ELSEIF "$(CFG)" == "ex_access - x64 Release IA64"
@@ -229,21 +233,125 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+
+!ELSEIF "$(CFG)" == "ex_access - Win32 Debug AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_AMD64"
+# PROP BASE Intermediate_Dir "Debug_AMD64/ex_access"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_AMD64"
+# PROP Intermediate_Dir "Debug_AMD64/ex_access"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+
+!ELSEIF "$(CFG)" == "ex_access - Win32 Release AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_AMD64"
+# PROP BASE Intermediate_Dir "Release_AMD64/ex_access"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_AMD64"
+# PROP Intermediate_Dir "Release_AMD64/ex_access"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+
+!ELSEIF "$(CFG)" == "ex_access - Win32 Debug IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_IA64"
+# PROP BASE Intermediate_Dir "Debug_IA64/ex_access"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_IA64"
+# PROP Intermediate_Dir "Debug_IA64/ex_access"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+
+!ELSEIF "$(CFG)" == "ex_access - Win32 Release IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_IA64"
+# PROP BASE Intermediate_Dir "Release_IA64/ex_access"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_IA64"
+# PROP Intermediate_Dir "Release_IA64/ex_access"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
!ENDIF
# Begin Target
-# Name "ex_access - Win32 Release"
-# Name "ex_access - Win32 Debug"
-# Name "ex_access - Win32 ASCII Debug"
-# Name "ex_access - Win32 ASCII Release"
+# Name "ex_access - Win32 Release x86"
+# Name "ex_access - Win32 Debug x86"
+# Name "ex_access - Win32 ASCII Debug x86"
+# Name "ex_access - Win32 ASCII Release x86"
# Name "ex_access - x64 Debug AMD64"
# Name "ex_access - x64 Release AMD64"
# Name "ex_access - x64 Debug IA64"
# Name "ex_access - x64 Release IA64"
+# Name "ex_access - Win32 Debug AMD64"
+# Name "ex_access - Win32 Release AMD64"
+# Name "ex_access - Win32 Debug IA64"
+# Name "ex_access - Win32 Release IA64"
# Begin Source File
SOURCE=..\examples_c\ex_access.c
diff --git a/db/build_windows/ex_btrec.dsp b/db/build_windows/ex_btrec.dsp
index 7d31080f9..b2b48b389 100644
--- a/db/build_windows/ex_btrec.dsp
+++ b/db/build_windows/ex_btrec.dsp
@@ -4,7 +4,7 @@
# TARGTYPE "Win32 (x86) Console Application" 0x0103
-CFG=ex_btrec - Win32 Debug
+CFG=ex_btrec - Win32 Debug x86
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
@@ -13,18 +13,22 @@ CFG=ex_btrec - Win32 Debug
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "ex_btrec.mak" CFG="ex_btrec - Win32 Debug"
+!MESSAGE NMAKE /f "ex_btrec.mak" CFG="ex_btrec - Win32 Debug x86"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "ex_btrec - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_btrec - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_btrec - Win32 ASCII Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_btrec - Win32 ASCII Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_btrec - Win32 Release x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_btrec - Win32 Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_btrec - Win32 ASCII Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_btrec - Win32 ASCII Release x86" (based on "Win32 (x86) Console Application")
!MESSAGE "ex_btrec - x64 Debug AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "ex_btrec - x64 Release AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "ex_btrec - x64 Debug IA64" (based on "Win32 (x86) Console Application")
!MESSAGE "ex_btrec - x64 Release IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_btrec - Win32 Debug AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_btrec - Win32 Release AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_btrec - Win32 Debug IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_btrec - Win32 Release IA64" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
@@ -34,7 +38,7 @@ CFG=ex_btrec - Win32 Debug
CPP=cl.exe
RSC=rc.exe
-!IF "$(CFG)" == "ex_btrec - Win32 Release"
+!IF "$(CFG)" == "ex_btrec - Win32 Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -56,9 +60,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
-!ELSEIF "$(CFG)" == "ex_btrec - Win32 Debug"
+!ELSEIF "$(CFG)" == "ex_btrec - Win32 Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -80,9 +84,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
-!ELSEIF "$(CFG)" == "ex_btrec - Win32 ASCII Debug"
+!ELSEIF "$(CFG)" == "ex_btrec - Win32 ASCII Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -104,10 +108,10 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
+# ADD BASE LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
-!ELSEIF "$(CFG)" == "ex_btrec - Win32 ASCII Release"
+!ELSEIF "$(CFG)" == "ex_btrec - Win32 ASCII Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -129,8 +133,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
+# ADD BASE LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
!ELSEIF "$(CFG)" == "ex_btrec - x64 Debug AMD64"
@@ -154,8 +158,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
!ELSEIF "$(CFG)" == "ex_btrec - x64 Release AMD64"
@@ -179,8 +183,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
!ELSEIF "$(CFG)" == "ex_btrec - x64 Debug IA64"
@@ -204,8 +208,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
!ELSEIF "$(CFG)" == "ex_btrec - x64 Release IA64"
@@ -229,21 +233,125 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+
+!ELSEIF "$(CFG)" == "ex_btrec - Win32 Debug AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_AMD64"
+# PROP BASE Intermediate_Dir "Debug_AMD64/ex_btrec"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_AMD64"
+# PROP Intermediate_Dir "Debug_AMD64/ex_btrec"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+
+!ELSEIF "$(CFG)" == "ex_btrec - Win32 Release AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_AMD64"
+# PROP BASE Intermediate_Dir "Release_AMD64/ex_btrec"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_AMD64"
+# PROP Intermediate_Dir "Release_AMD64/ex_btrec"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+
+!ELSEIF "$(CFG)" == "ex_btrec - Win32 Debug IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_IA64"
+# PROP BASE Intermediate_Dir "Debug_IA64/ex_btrec"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_IA64"
+# PROP Intermediate_Dir "Debug_IA64/ex_btrec"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+
+!ELSEIF "$(CFG)" == "ex_btrec - Win32 Release IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_IA64"
+# PROP BASE Intermediate_Dir "Release_IA64/ex_btrec"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_IA64"
+# PROP Intermediate_Dir "Release_IA64/ex_btrec"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
!ENDIF
# Begin Target
-# Name "ex_btrec - Win32 Release"
-# Name "ex_btrec - Win32 Debug"
-# Name "ex_btrec - Win32 ASCII Debug"
-# Name "ex_btrec - Win32 ASCII Release"
+# Name "ex_btrec - Win32 Release x86"
+# Name "ex_btrec - Win32 Debug x86"
+# Name "ex_btrec - Win32 ASCII Debug x86"
+# Name "ex_btrec - Win32 ASCII Release x86"
# Name "ex_btrec - x64 Debug AMD64"
# Name "ex_btrec - x64 Release AMD64"
# Name "ex_btrec - x64 Debug IA64"
# Name "ex_btrec - x64 Release IA64"
+# Name "ex_btrec - Win32 Debug AMD64"
+# Name "ex_btrec - Win32 Release AMD64"
+# Name "ex_btrec - Win32 Debug IA64"
+# Name "ex_btrec - Win32 Release IA64"
# Begin Source File
SOURCE=..\examples_c\ex_btrec.c
diff --git a/db/build_windows/ex_csvcode.dsp b/db/build_windows/ex_csvcode.dsp
index 43b083696..1f6e5e090 100644
--- a/db/build_windows/ex_csvcode.dsp
+++ b/db/build_windows/ex_csvcode.dsp
@@ -4,7 +4,7 @@
# TARGTYPE "Win32 (x86) Console Application" 0x0103
-CFG=ex_csvcode - Win32 Debug
+CFG=ex_csvcode - Win32 Debug x86
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
@@ -13,18 +13,22 @@ CFG=ex_csvcode - Win32 Debug
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "ex_csvcode.mak" CFG="ex_csvcode - Win32 Debug"
+!MESSAGE NMAKE /f "ex_csvcode.mak" CFG="ex_csvcode - Win32 Debug x86"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "ex_csvcode - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_csvcode - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_csvcode - Win32 ASCII Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_csvcode - Win32 ASCII Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_csvcode - Win32 Release x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_csvcode - Win32 Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_csvcode - Win32 ASCII Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_csvcode - Win32 ASCII Release x86" (based on "Win32 (x86) Console Application")
!MESSAGE "ex_csvcode - x64 Debug AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "ex_csvcode - x64 Release AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "ex_csvcode - x64 Debug IA64" (based on "Win32 (x86) Console Application")
!MESSAGE "ex_csvcode - x64 Release IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_csvcode - Win32 Debug AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_csvcode - Win32 Release AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_csvcode - Win32 Debug IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_csvcode - Win32 Release IA64" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
@@ -34,7 +38,7 @@ CFG=ex_csvcode - Win32 Debug
CPP=cl.exe
RSC=rc.exe
-!IF "$(CFG)" == "ex_csvcode - Win32 Release"
+!IF "$(CFG)" == "ex_csvcode - Win32 Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -56,14 +60,14 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
# Begin Special Build Tool
SOURCE="$(InputPath)"
PostBuild_Desc=Generate csv_local.c
PostBuild_Cmds=$(OUTDIR)\ex_csvcode.exe -c ../examples_c/csv/csv_local.c -h ../examples_c/csv/csv_local.h -f ../examples_c/csv/sample.desc
# End Special Build Tool
-!ELSEIF "$(CFG)" == "ex_csvcode - Win32 Debug"
+!ELSEIF "$(CFG)" == "ex_csvcode - Win32 Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -85,14 +89,14 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
# Begin Special Build Tool
SOURCE="$(InputPath)"
PostBuild_Desc=Generate csv_local.c
PostBuild_Cmds=$(OUTDIR)\ex_csvcode.exe -c ../examples_c/csv/csv_local.c -h ../examples_c/csv/csv_local.h -f ../examples_c/csv/sample.desc
# End Special Build Tool
-!ELSEIF "$(CFG)" == "ex_csvcode - Win32 ASCII Debug"
+!ELSEIF "$(CFG)" == "ex_csvcode - Win32 ASCII Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -114,15 +118,15 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
+# ADD BASE LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
# Begin Special Build Tool
SOURCE="$(InputPath)"
PostBuild_Desc=Generate csv_local.c
PostBuild_Cmds=$(OUTDIR)\ex_csvcode.exe -c ../examples_c/csv/csv_local.c -h ../examples_c/csv/csv_local.h -f ../examples_c/csv/sample.desc
# End Special Build Tool
-!ELSEIF "$(CFG)" == "ex_csvcode - Win32 ASCII Release"
+!ELSEIF "$(CFG)" == "ex_csvcode - Win32 ASCII Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -144,8 +148,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
+# ADD BASE LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
# Begin Special Build Tool
SOURCE="$(InputPath)"
PostBuild_Desc=Generate csv_local.c
@@ -174,8 +178,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
# Begin Special Build Tool
SOURCE="$(InputPath)"
PostBuild_Desc=Generate csv_local.c
@@ -204,8 +208,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
# Begin Special Build Tool
SOURCE="$(InputPath)"
PostBuild_Desc=Generate csv_local.c
@@ -234,8 +238,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
# Begin Special Build Tool
SOURCE="$(InputPath)"
PostBuild_Desc=Generate csv_local.c
@@ -264,8 +268,128 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Desc=Generate csv_local.c
+PostBuild_Cmds=$(OUTDIR)\ex_csvcode.exe -c ../examples_c/csv/csv_local.c -h ../examples_c/csv/csv_local.h -f ../examples_c/csv/sample.desc
+# End Special Build Tool
+
+!ELSEIF "$(CFG)" == "ex_csvcode - Win32 Debug AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_AMD64"
+# PROP BASE Intermediate_Dir "Debug_AMD64/ex_csvcode"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_AMD64"
+# PROP Intermediate_Dir "Debug_AMD64/ex_csvcode"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Desc=Generate csv_local.c
+PostBuild_Cmds=$(OUTDIR)\ex_csvcode.exe -c ../examples_c/csv/csv_local.c -h ../examples_c/csv/csv_local.h -f ../examples_c/csv/sample.desc
+# End Special Build Tool
+
+!ELSEIF "$(CFG)" == "ex_csvcode - Win32 Release AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_AMD64"
+# PROP BASE Intermediate_Dir "Release_AMD64/ex_csvcode"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_AMD64"
+# PROP Intermediate_Dir "Release_AMD64/ex_csvcode"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Desc=Generate csv_local.c
+PostBuild_Cmds=$(OUTDIR)\ex_csvcode.exe -c ../examples_c/csv/csv_local.c -h ../examples_c/csv/csv_local.h -f ../examples_c/csv/sample.desc
+# End Special Build Tool
+
+!ELSEIF "$(CFG)" == "ex_csvcode - Win32 Debug IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_IA64"
+# PROP BASE Intermediate_Dir "Debug_IA64/ex_csvcode"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_IA64"
+# PROP Intermediate_Dir "Debug_IA64/ex_csvcode"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Desc=Generate csv_local.c
+PostBuild_Cmds=$(OUTDIR)\ex_csvcode.exe -c ../examples_c/csv/csv_local.c -h ../examples_c/csv/csv_local.h -f ../examples_c/csv/sample.desc
+# End Special Build Tool
+
+!ELSEIF "$(CFG)" == "ex_csvcode - Win32 Release IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_IA64"
+# PROP BASE Intermediate_Dir "Release_IA64/ex_csvcode"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_IA64"
+# PROP Intermediate_Dir "Release_IA64/ex_csvcode"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
# Begin Special Build Tool
SOURCE="$(InputPath)"
PostBuild_Desc=Generate csv_local.c
@@ -276,14 +400,18 @@ PostBuild_Cmds=$(OUTDIR)\ex_csvcode.exe -c ../examples_c/csv/csv_local.c -h ../e
# Begin Target
-# Name "ex_csvcode - Win32 Release"
-# Name "ex_csvcode - Win32 Debug"
-# Name "ex_csvcode - Win32 ASCII Debug"
-# Name "ex_csvcode - Win32 ASCII Release"
+# Name "ex_csvcode - Win32 Release x86"
+# Name "ex_csvcode - Win32 Debug x86"
+# Name "ex_csvcode - Win32 ASCII Debug x86"
+# Name "ex_csvcode - Win32 ASCII Release x86"
# Name "ex_csvcode - x64 Debug AMD64"
# Name "ex_csvcode - x64 Release AMD64"
# Name "ex_csvcode - x64 Debug IA64"
# Name "ex_csvcode - x64 Release IA64"
+# Name "ex_csvcode - Win32 Debug AMD64"
+# Name "ex_csvcode - Win32 Release AMD64"
+# Name "ex_csvcode - Win32 Debug IA64"
+# Name "ex_csvcode - Win32 Release IA64"
# Begin Source File
SOURCE=..\examples_c\csv\code.c
diff --git a/db/build_windows/ex_csvload.dsp b/db/build_windows/ex_csvload.dsp
index a7a99e2f4..d856ddd49 100644
--- a/db/build_windows/ex_csvload.dsp
+++ b/db/build_windows/ex_csvload.dsp
@@ -4,7 +4,7 @@
# TARGTYPE "Win32 (x86) Console Application" 0x0103
-CFG=ex_csvload - Win32 Debug
+CFG=ex_csvload - Win32 Debug x86
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
@@ -13,18 +13,22 @@ CFG=ex_csvload - Win32 Debug
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "ex_csvload.mak" CFG="ex_csvload - Win32 Debug"
+!MESSAGE NMAKE /f "ex_csvload.mak" CFG="ex_csvload - Win32 Debug x86"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "ex_csvload - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_csvload - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_csvload - Win32 ASCII Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_csvload - Win32 ASCII Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_csvload - Win32 Release x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_csvload - Win32 Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_csvload - Win32 ASCII Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_csvload - Win32 ASCII Release x86" (based on "Win32 (x86) Console Application")
!MESSAGE "ex_csvload - x64 Debug AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "ex_csvload - x64 Release AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "ex_csvload - x64 Debug IA64" (based on "Win32 (x86) Console Application")
!MESSAGE "ex_csvload - x64 Release IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_csvload - Win32 Debug AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_csvload - Win32 Release AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_csvload - Win32 Debug IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_csvload - Win32 Release IA64" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
@@ -34,7 +38,7 @@ CFG=ex_csvload - Win32 Debug
CPP=cl.exe
RSC=rc.exe
-!IF "$(CFG)" == "ex_csvload - Win32 Release"
+!IF "$(CFG)" == "ex_csvload - Win32 Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -56,9 +60,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
-!ELSEIF "$(CFG)" == "ex_csvload - Win32 Debug"
+!ELSEIF "$(CFG)" == "ex_csvload - Win32 Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -80,9 +84,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
-!ELSEIF "$(CFG)" == "ex_csvload - Win32 ASCII Debug"
+!ELSEIF "$(CFG)" == "ex_csvload - Win32 ASCII Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -104,10 +108,10 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
+# ADD BASE LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
-!ELSEIF "$(CFG)" == "ex_csvload - Win32 ASCII Release"
+!ELSEIF "$(CFG)" == "ex_csvload - Win32 ASCII Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -129,8 +133,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
+# ADD BASE LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
!ELSEIF "$(CFG)" == "ex_csvload - x64 Debug AMD64"
@@ -154,8 +158,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
!ELSEIF "$(CFG)" == "ex_csvload - x64 Release AMD64"
@@ -179,8 +183,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
!ELSEIF "$(CFG)" == "ex_csvload - x64 Debug IA64"
@@ -204,8 +208,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
!ELSEIF "$(CFG)" == "ex_csvload - x64 Release IA64"
@@ -229,21 +233,125 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+
+!ELSEIF "$(CFG)" == "ex_csvload - Win32 Debug AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_AMD64"
+# PROP BASE Intermediate_Dir "Debug_AMD64/ex_csvload"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_AMD64"
+# PROP Intermediate_Dir "Debug_AMD64/ex_csvload"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+
+!ELSEIF "$(CFG)" == "ex_csvload - Win32 Release AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_AMD64"
+# PROP BASE Intermediate_Dir "Release_AMD64/ex_csvload"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_AMD64"
+# PROP Intermediate_Dir "Release_AMD64/ex_csvload"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+
+!ELSEIF "$(CFG)" == "ex_csvload - Win32 Debug IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_IA64"
+# PROP BASE Intermediate_Dir "Debug_IA64/ex_csvload"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_IA64"
+# PROP Intermediate_Dir "Debug_IA64/ex_csvload"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+
+!ELSEIF "$(CFG)" == "ex_csvload - Win32 Release IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_IA64"
+# PROP BASE Intermediate_Dir "Release_IA64/ex_csvload"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_IA64"
+# PROP Intermediate_Dir "Release_IA64/ex_csvload"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
!ENDIF
# Begin Target
-# Name "ex_csvload - Win32 Release"
-# Name "ex_csvload - Win32 Debug"
-# Name "ex_csvload - Win32 ASCII Debug"
-# Name "ex_csvload - Win32 ASCII Release"
+# Name "ex_csvload - Win32 Release x86"
+# Name "ex_csvload - Win32 Debug x86"
+# Name "ex_csvload - Win32 ASCII Debug x86"
+# Name "ex_csvload - Win32 ASCII Release x86"
# Name "ex_csvload - x64 Debug AMD64"
# Name "ex_csvload - x64 Release AMD64"
# Name "ex_csvload - x64 Debug IA64"
# Name "ex_csvload - x64 Release IA64"
+# Name "ex_csvload - Win32 Debug AMD64"
+# Name "ex_csvload - Win32 Release AMD64"
+# Name "ex_csvload - Win32 Debug IA64"
+# Name "ex_csvload - Win32 Release IA64"
# Begin Source File
SOURCE=..\examples_c\csv\DbRecord.c
diff --git a/db/build_windows/ex_csvquery.dsp b/db/build_windows/ex_csvquery.dsp
index 8c0197043..7c420fc74 100644
--- a/db/build_windows/ex_csvquery.dsp
+++ b/db/build_windows/ex_csvquery.dsp
@@ -4,7 +4,7 @@
# TARGTYPE "Win32 (x86) Console Application" 0x0103
-CFG=ex_csvquery - Win32 Debug
+CFG=ex_csvquery - Win32 Debug x86
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
@@ -13,18 +13,22 @@ CFG=ex_csvquery - Win32 Debug
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "ex_csvquery.mak" CFG="ex_csvquery - Win32 Debug"
+!MESSAGE NMAKE /f "ex_csvquery.mak" CFG="ex_csvquery - Win32 Debug x86"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "ex_csvquery - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_csvquery - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_csvquery - Win32 ASCII Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_csvquery - Win32 ASCII Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_csvquery - Win32 Release x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_csvquery - Win32 Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_csvquery - Win32 ASCII Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_csvquery - Win32 ASCII Release x86" (based on "Win32 (x86) Console Application")
!MESSAGE "ex_csvquery - x64 Debug AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "ex_csvquery - x64 Release AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "ex_csvquery - x64 Debug IA64" (based on "Win32 (x86) Console Application")
!MESSAGE "ex_csvquery - x64 Release IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_csvquery - Win32 Debug AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_csvquery - Win32 Release AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_csvquery - Win32 Debug IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_csvquery - Win32 Release IA64" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
@@ -34,7 +38,7 @@ CFG=ex_csvquery - Win32 Debug
CPP=cl.exe
RSC=rc.exe
-!IF "$(CFG)" == "ex_csvquery - Win32 Release"
+!IF "$(CFG)" == "ex_csvquery - Win32 Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -56,9 +60,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
-!ELSEIF "$(CFG)" == "ex_csvquery - Win32 Debug"
+!ELSEIF "$(CFG)" == "ex_csvquery - Win32 Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -80,9 +84,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
-!ELSEIF "$(CFG)" == "ex_csvquery - Win32 ASCII Debug"
+!ELSEIF "$(CFG)" == "ex_csvquery - Win32 ASCII Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -104,10 +108,10 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
+# ADD BASE LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
-!ELSEIF "$(CFG)" == "ex_csvquery - Win32 ASCII Release"
+!ELSEIF "$(CFG)" == "ex_csvquery - Win32 ASCII Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -129,8 +133,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
+# ADD BASE LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
!ELSEIF "$(CFG)" == "ex_csvquery - x64 Debug AMD64"
@@ -154,8 +158,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
!ELSEIF "$(CFG)" == "ex_csvquery - x64 Release AMD64"
@@ -179,8 +183,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
!ELSEIF "$(CFG)" == "ex_csvquery - x64 Debug IA64"
@@ -204,8 +208,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
!ELSEIF "$(CFG)" == "ex_csvquery - x64 Release IA64"
@@ -229,21 +233,125 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+
+!ELSEIF "$(CFG)" == "ex_csvquery - Win32 Debug AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_AMD64"
+# PROP BASE Intermediate_Dir "Debug_AMD64/ex_csvquery"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_AMD64"
+# PROP Intermediate_Dir "Debug_AMD64/ex_csvquery"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+
+!ELSEIF "$(CFG)" == "ex_csvquery - Win32 Release AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_AMD64"
+# PROP BASE Intermediate_Dir "Release_AMD64/ex_csvquery"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_AMD64"
+# PROP Intermediate_Dir "Release_AMD64/ex_csvquery"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+
+!ELSEIF "$(CFG)" == "ex_csvquery - Win32 Debug IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_IA64"
+# PROP BASE Intermediate_Dir "Debug_IA64/ex_csvquery"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_IA64"
+# PROP Intermediate_Dir "Debug_IA64/ex_csvquery"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+
+!ELSEIF "$(CFG)" == "ex_csvquery - Win32 Release IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_IA64"
+# PROP BASE Intermediate_Dir "Release_IA64/ex_csvquery"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_IA64"
+# PROP Intermediate_Dir "Release_IA64/ex_csvquery"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
!ENDIF
# Begin Target
-# Name "ex_csvquery - Win32 Release"
-# Name "ex_csvquery - Win32 Debug"
-# Name "ex_csvquery - Win32 ASCII Debug"
-# Name "ex_csvquery - Win32 ASCII Release"
+# Name "ex_csvquery - Win32 Release x86"
+# Name "ex_csvquery - Win32 Debug x86"
+# Name "ex_csvquery - Win32 ASCII Debug x86"
+# Name "ex_csvquery - Win32 ASCII Release x86"
# Name "ex_csvquery - x64 Debug AMD64"
# Name "ex_csvquery - x64 Release AMD64"
# Name "ex_csvquery - x64 Debug IA64"
# Name "ex_csvquery - x64 Release IA64"
+# Name "ex_csvquery - Win32 Debug AMD64"
+# Name "ex_csvquery - Win32 Release AMD64"
+# Name "ex_csvquery - Win32 Debug IA64"
+# Name "ex_csvquery - Win32 Release IA64"
# Begin Source File
SOURCE=..\examples_c\csv\DbRecord.c
diff --git a/db/build_windows/ex_env.dsp b/db/build_windows/ex_env.dsp
index 0fdfd4cc4..553d5f4c3 100644
--- a/db/build_windows/ex_env.dsp
+++ b/db/build_windows/ex_env.dsp
@@ -4,7 +4,7 @@
# TARGTYPE "Win32 (x86) Console Application" 0x0103
-CFG=ex_env - Win32 Debug
+CFG=ex_env - Win32 Debug x86
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
@@ -13,18 +13,22 @@ CFG=ex_env - Win32 Debug
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "ex_env.mak" CFG="ex_env - Win32 Debug"
+!MESSAGE NMAKE /f "ex_env.mak" CFG="ex_env - Win32 Debug x86"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "ex_env - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_env - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_env - Win32 ASCII Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_env - Win32 ASCII Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_env - Win32 Release x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_env - Win32 Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_env - Win32 ASCII Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_env - Win32 ASCII Release x86" (based on "Win32 (x86) Console Application")
!MESSAGE "ex_env - x64 Debug AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "ex_env - x64 Release AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "ex_env - x64 Debug IA64" (based on "Win32 (x86) Console Application")
!MESSAGE "ex_env - x64 Release IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_env - Win32 Debug AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_env - Win32 Release AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_env - Win32 Debug IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_env - Win32 Release IA64" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
@@ -34,7 +38,7 @@ CFG=ex_env - Win32 Debug
CPP=cl.exe
RSC=rc.exe
-!IF "$(CFG)" == "ex_env - Win32 Release"
+!IF "$(CFG)" == "ex_env - Win32 Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -56,9 +60,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
-!ELSEIF "$(CFG)" == "ex_env - Win32 Debug"
+!ELSEIF "$(CFG)" == "ex_env - Win32 Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -80,9 +84,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
-!ELSEIF "$(CFG)" == "ex_env - Win32 ASCII Debug"
+!ELSEIF "$(CFG)" == "ex_env - Win32 ASCII Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -104,10 +108,10 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
+# ADD BASE LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
-!ELSEIF "$(CFG)" == "ex_env - Win32 ASCII Release"
+!ELSEIF "$(CFG)" == "ex_env - Win32 ASCII Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -129,8 +133,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
+# ADD BASE LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
!ELSEIF "$(CFG)" == "ex_env - x64 Debug AMD64"
@@ -154,8 +158,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
!ELSEIF "$(CFG)" == "ex_env - x64 Release AMD64"
@@ -179,8 +183,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
!ELSEIF "$(CFG)" == "ex_env - x64 Debug IA64"
@@ -204,8 +208,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
!ELSEIF "$(CFG)" == "ex_env - x64 Release IA64"
@@ -229,21 +233,125 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+
+!ELSEIF "$(CFG)" == "ex_env - Win32 Debug AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_AMD64"
+# PROP BASE Intermediate_Dir "Debug_AMD64/ex_env"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_AMD64"
+# PROP Intermediate_Dir "Debug_AMD64/ex_env"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+
+!ELSEIF "$(CFG)" == "ex_env - Win32 Release AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_AMD64"
+# PROP BASE Intermediate_Dir "Release_AMD64/ex_env"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_AMD64"
+# PROP Intermediate_Dir "Release_AMD64/ex_env"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+
+!ELSEIF "$(CFG)" == "ex_env - Win32 Debug IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_IA64"
+# PROP BASE Intermediate_Dir "Debug_IA64/ex_env"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_IA64"
+# PROP Intermediate_Dir "Debug_IA64/ex_env"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+
+!ELSEIF "$(CFG)" == "ex_env - Win32 Release IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_IA64"
+# PROP BASE Intermediate_Dir "Release_IA64/ex_env"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_IA64"
+# PROP Intermediate_Dir "Release_IA64/ex_env"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
!ENDIF
# Begin Target
-# Name "ex_env - Win32 Release"
-# Name "ex_env - Win32 Debug"
-# Name "ex_env - Win32 ASCII Debug"
-# Name "ex_env - Win32 ASCII Release"
+# Name "ex_env - Win32 Release x86"
+# Name "ex_env - Win32 Debug x86"
+# Name "ex_env - Win32 ASCII Debug x86"
+# Name "ex_env - Win32 ASCII Release x86"
# Name "ex_env - x64 Debug AMD64"
# Name "ex_env - x64 Release AMD64"
# Name "ex_env - x64 Debug IA64"
# Name "ex_env - x64 Release IA64"
+# Name "ex_env - Win32 Debug AMD64"
+# Name "ex_env - Win32 Release AMD64"
+# Name "ex_env - Win32 Debug IA64"
+# Name "ex_env - Win32 Release IA64"
# Begin Source File
SOURCE=..\examples_c\ex_env.c
diff --git a/db/build_windows/ex_lock.dsp b/db/build_windows/ex_lock.dsp
index 24a34975c..9059ac89c 100644
--- a/db/build_windows/ex_lock.dsp
+++ b/db/build_windows/ex_lock.dsp
@@ -4,7 +4,7 @@
# TARGTYPE "Win32 (x86) Console Application" 0x0103
-CFG=ex_lock - Win32 Debug
+CFG=ex_lock - Win32 Debug x86
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
@@ -13,18 +13,22 @@ CFG=ex_lock - Win32 Debug
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "ex_lock.mak" CFG="ex_lock - Win32 Debug"
+!MESSAGE NMAKE /f "ex_lock.mak" CFG="ex_lock - Win32 Debug x86"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "ex_lock - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_lock - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_lock - Win32 ASCII Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_lock - Win32 ASCII Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_lock - Win32 Release x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_lock - Win32 Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_lock - Win32 ASCII Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_lock - Win32 ASCII Release x86" (based on "Win32 (x86) Console Application")
!MESSAGE "ex_lock - x64 Debug AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "ex_lock - x64 Release AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "ex_lock - x64 Debug IA64" (based on "Win32 (x86) Console Application")
!MESSAGE "ex_lock - x64 Release IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_lock - Win32 Debug AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_lock - Win32 Release AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_lock - Win32 Debug IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_lock - Win32 Release IA64" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
@@ -34,7 +38,7 @@ CFG=ex_lock - Win32 Debug
CPP=cl.exe
RSC=rc.exe
-!IF "$(CFG)" == "ex_lock - Win32 Release"
+!IF "$(CFG)" == "ex_lock - Win32 Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -56,9 +60,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
-!ELSEIF "$(CFG)" == "ex_lock - Win32 Debug"
+!ELSEIF "$(CFG)" == "ex_lock - Win32 Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -80,9 +84,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
-!ELSEIF "$(CFG)" == "ex_lock - Win32 ASCII Debug"
+!ELSEIF "$(CFG)" == "ex_lock - Win32 ASCII Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -104,10 +108,10 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
+# ADD BASE LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
-!ELSEIF "$(CFG)" == "ex_lock - Win32 ASCII Release"
+!ELSEIF "$(CFG)" == "ex_lock - Win32 ASCII Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -129,8 +133,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
+# ADD BASE LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
!ELSEIF "$(CFG)" == "ex_lock - x64 Debug AMD64"
@@ -154,8 +158,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
!ELSEIF "$(CFG)" == "ex_lock - x64 Release AMD64"
@@ -179,8 +183,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
!ELSEIF "$(CFG)" == "ex_lock - x64 Debug IA64"
@@ -204,8 +208,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
!ELSEIF "$(CFG)" == "ex_lock - x64 Release IA64"
@@ -229,21 +233,125 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+
+!ELSEIF "$(CFG)" == "ex_lock - Win32 Debug AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_AMD64"
+# PROP BASE Intermediate_Dir "Debug_AMD64/ex_lock"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_AMD64"
+# PROP Intermediate_Dir "Debug_AMD64/ex_lock"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+
+!ELSEIF "$(CFG)" == "ex_lock - Win32 Release AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_AMD64"
+# PROP BASE Intermediate_Dir "Release_AMD64/ex_lock"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_AMD64"
+# PROP Intermediate_Dir "Release_AMD64/ex_lock"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+
+!ELSEIF "$(CFG)" == "ex_lock - Win32 Debug IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_IA64"
+# PROP BASE Intermediate_Dir "Debug_IA64/ex_lock"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_IA64"
+# PROP Intermediate_Dir "Debug_IA64/ex_lock"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+
+!ELSEIF "$(CFG)" == "ex_lock - Win32 Release IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_IA64"
+# PROP BASE Intermediate_Dir "Release_IA64/ex_lock"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_IA64"
+# PROP Intermediate_Dir "Release_IA64/ex_lock"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
!ENDIF
# Begin Target
-# Name "ex_lock - Win32 Release"
-# Name "ex_lock - Win32 Debug"
-# Name "ex_lock - Win32 ASCII Debug"
-# Name "ex_lock - Win32 ASCII Release"
+# Name "ex_lock - Win32 Release x86"
+# Name "ex_lock - Win32 Debug x86"
+# Name "ex_lock - Win32 ASCII Debug x86"
+# Name "ex_lock - Win32 ASCII Release x86"
# Name "ex_lock - x64 Debug AMD64"
# Name "ex_lock - x64 Release AMD64"
# Name "ex_lock - x64 Debug IA64"
# Name "ex_lock - x64 Release IA64"
+# Name "ex_lock - Win32 Debug AMD64"
+# Name "ex_lock - Win32 Release AMD64"
+# Name "ex_lock - Win32 Debug IA64"
+# Name "ex_lock - Win32 Release IA64"
# Begin Source File
SOURCE=..\examples_c\ex_lock.c
diff --git a/db/build_windows/ex_mpool.dsp b/db/build_windows/ex_mpool.dsp
index f4434c4d5..7898f4589 100644
--- a/db/build_windows/ex_mpool.dsp
+++ b/db/build_windows/ex_mpool.dsp
@@ -4,7 +4,7 @@
# TARGTYPE "Win32 (x86) Console Application" 0x0103
-CFG=ex_mpool - Win32 Debug
+CFG=ex_mpool - Win32 Debug x86
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
@@ -13,18 +13,22 @@ CFG=ex_mpool - Win32 Debug
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "ex_mpool.mak" CFG="ex_mpool - Win32 Debug"
+!MESSAGE NMAKE /f "ex_mpool.mak" CFG="ex_mpool - Win32 Debug x86"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "ex_mpool - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_mpool - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_mpool - Win32 ASCII Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_mpool - Win32 ASCII Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_mpool - Win32 Release x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_mpool - Win32 Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_mpool - Win32 ASCII Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_mpool - Win32 ASCII Release x86" (based on "Win32 (x86) Console Application")
!MESSAGE "ex_mpool - x64 Debug AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "ex_mpool - x64 Release AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "ex_mpool - x64 Debug IA64" (based on "Win32 (x86) Console Application")
!MESSAGE "ex_mpool - x64 Release IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_mpool - Win32 Debug AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_mpool - Win32 Release AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_mpool - Win32 Debug IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_mpool - Win32 Release IA64" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
@@ -34,7 +38,7 @@ CFG=ex_mpool - Win32 Debug
CPP=cl.exe
RSC=rc.exe
-!IF "$(CFG)" == "ex_mpool - Win32 Release"
+!IF "$(CFG)" == "ex_mpool - Win32 Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -56,9 +60,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
-!ELSEIF "$(CFG)" == "ex_mpool - Win32 Debug"
+!ELSEIF "$(CFG)" == "ex_mpool - Win32 Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -80,9 +84,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
-!ELSEIF "$(CFG)" == "ex_mpool - Win32 ASCII Debug"
+!ELSEIF "$(CFG)" == "ex_mpool - Win32 ASCII Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -104,10 +108,10 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
+# ADD BASE LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
-!ELSEIF "$(CFG)" == "ex_mpool - Win32 ASCII Release"
+!ELSEIF "$(CFG)" == "ex_mpool - Win32 ASCII Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -129,8 +133,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
+# ADD BASE LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
!ELSEIF "$(CFG)" == "ex_mpool - x64 Debug AMD64"
@@ -154,8 +158,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
!ELSEIF "$(CFG)" == "ex_mpool - x64 Release AMD64"
@@ -179,8 +183,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
!ELSEIF "$(CFG)" == "ex_mpool - x64 Debug IA64"
@@ -204,8 +208,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
!ELSEIF "$(CFG)" == "ex_mpool - x64 Release IA64"
@@ -229,21 +233,125 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+
+!ELSEIF "$(CFG)" == "ex_mpool - Win32 Debug AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_AMD64"
+# PROP BASE Intermediate_Dir "Debug_AMD64/ex_mpool"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_AMD64"
+# PROP Intermediate_Dir "Debug_AMD64/ex_mpool"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+
+!ELSEIF "$(CFG)" == "ex_mpool - Win32 Release AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_AMD64"
+# PROP BASE Intermediate_Dir "Release_AMD64/ex_mpool"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_AMD64"
+# PROP Intermediate_Dir "Release_AMD64/ex_mpool"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+
+!ELSEIF "$(CFG)" == "ex_mpool - Win32 Debug IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_IA64"
+# PROP BASE Intermediate_Dir "Debug_IA64/ex_mpool"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_IA64"
+# PROP Intermediate_Dir "Debug_IA64/ex_mpool"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+
+!ELSEIF "$(CFG)" == "ex_mpool - Win32 Release IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_IA64"
+# PROP BASE Intermediate_Dir "Release_IA64/ex_mpool"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_IA64"
+# PROP Intermediate_Dir "Release_IA64/ex_mpool"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
!ENDIF
# Begin Target
-# Name "ex_mpool - Win32 Release"
-# Name "ex_mpool - Win32 Debug"
-# Name "ex_mpool - Win32 ASCII Debug"
-# Name "ex_mpool - Win32 ASCII Release"
+# Name "ex_mpool - Win32 Release x86"
+# Name "ex_mpool - Win32 Debug x86"
+# Name "ex_mpool - Win32 ASCII Debug x86"
+# Name "ex_mpool - Win32 ASCII Release x86"
# Name "ex_mpool - x64 Debug AMD64"
# Name "ex_mpool - x64 Release AMD64"
# Name "ex_mpool - x64 Debug IA64"
# Name "ex_mpool - x64 Release IA64"
+# Name "ex_mpool - Win32 Debug AMD64"
+# Name "ex_mpool - Win32 Release AMD64"
+# Name "ex_mpool - Win32 Debug IA64"
+# Name "ex_mpool - Win32 Release IA64"
# Begin Source File
SOURCE=..\examples_c\ex_mpool.c
diff --git a/db/build_windows/ex_rep_base.dsp b/db/build_windows/ex_rep_base.dsp
index 759ccbaa5..f4e1fe3ed 100644
--- a/db/build_windows/ex_rep_base.dsp
+++ b/db/build_windows/ex_rep_base.dsp
@@ -4,7 +4,7 @@
# TARGTYPE "Win32 (x86) Console Application" 0x0103
-CFG=ex_rep_base - Win32 Debug
+CFG=ex_rep_base - Win32 Debug x86
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
@@ -13,18 +13,22 @@ CFG=ex_rep_base - Win32 Debug
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "ex_rep_base.mak" CFG="ex_rep_base - Win32 Debug"
+!MESSAGE NMAKE /f "ex_rep_base.mak" CFG="ex_rep_base - Win32 Debug x86"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "ex_rep_base - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_rep_base - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_rep_base - Win32 ASCII Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_rep_base - Win32 ASCII Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_rep_base - Win32 Release x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_rep_base - Win32 Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_rep_base - Win32 ASCII Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_rep_base - Win32 ASCII Release x86" (based on "Win32 (x86) Console Application")
!MESSAGE "ex_rep_base - x64 Debug AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "ex_rep_base - x64 Release AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "ex_rep_base - x64 Debug IA64" (based on "Win32 (x86) Console Application")
!MESSAGE "ex_rep_base - x64 Release IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_rep_base - Win32 Debug AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_rep_base - Win32 Release AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_rep_base - Win32 Debug IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_rep_base - Win32 Release IA64" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
@@ -34,7 +38,7 @@ CFG=ex_rep_base - Win32 Debug
CPP=cl.exe
RSC=rc.exe
-!IF "$(CFG)" == "ex_rep_base - Win32 Release"
+!IF "$(CFG)" == "ex_rep_base - Win32 Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -56,9 +60,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 ws2_32.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 libdb45.lib ws2_32.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
+# ADD LINK32 libdb46.lib ws2_32.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
-!ELSEIF "$(CFG)" == "ex_rep_base - Win32 Debug"
+!ELSEIF "$(CFG)" == "ex_rep_base - Win32 Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -80,9 +84,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 ws2_32.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 libdb45d.lib ws2_32.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
+# ADD LINK32 libdb46d.lib ws2_32.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
-!ELSEIF "$(CFG)" == "ex_rep_base - Win32 ASCII Debug"
+!ELSEIF "$(CFG)" == "ex_rep_base - Win32 ASCII Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -104,10 +108,10 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib ws2_32.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib ws2_32.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
+# ADD BASE LINK32 libdb46d.lib ws2_32.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib ws2_32.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
-!ELSEIF "$(CFG)" == "ex_rep_base - Win32 ASCII Release"
+!ELSEIF "$(CFG)" == "ex_rep_base - Win32 ASCII Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -129,8 +133,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib ws2_32.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib ws2_32.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
+# ADD BASE LINK32 libdb46.lib ws2_32.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib ws2_32.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
!ELSEIF "$(CFG)" == "ex_rep_base - x64 Debug AMD64"
@@ -154,8 +158,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib ws2_32.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib ws2_32.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+# ADD BASE LINK32 libdb46d.lib ws2_32.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib ws2_32.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
!ELSEIF "$(CFG)" == "ex_rep_base - x64 Release AMD64"
@@ -179,8 +183,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib ws2_32.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib ws2_32.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+# ADD BASE LINK32 libdb46.lib ws2_32.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib ws2_32.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
!ELSEIF "$(CFG)" == "ex_rep_base - x64 Debug IA64"
@@ -204,8 +208,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib ws2_32.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib ws2_32.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+# ADD BASE LINK32 libdb46d.lib ws2_32.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib ws2_32.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
!ELSEIF "$(CFG)" == "ex_rep_base - x64 Release IA64"
@@ -229,21 +233,125 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib ws2_32.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib ws2_32.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+# ADD BASE LINK32 libdb46.lib ws2_32.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib ws2_32.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+
+!ELSEIF "$(CFG)" == "ex_rep_base - Win32 Debug AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_AMD64"
+# PROP BASE Intermediate_Dir "Debug_AMD64/ex_rep_base"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_AMD64"
+# PROP Intermediate_Dir "Debug_AMD64/ex_rep_base"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib ws2_32.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib ws2_32.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+
+!ELSEIF "$(CFG)" == "ex_rep_base - Win32 Release AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_AMD64"
+# PROP BASE Intermediate_Dir "Release_AMD64/ex_rep_base"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_AMD64"
+# PROP Intermediate_Dir "Release_AMD64/ex_rep_base"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib ws2_32.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib ws2_32.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+
+!ELSEIF "$(CFG)" == "ex_rep_base - Win32 Debug IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_IA64"
+# PROP BASE Intermediate_Dir "Debug_IA64/ex_rep_base"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_IA64"
+# PROP Intermediate_Dir "Debug_IA64/ex_rep_base"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib ws2_32.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib ws2_32.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+
+!ELSEIF "$(CFG)" == "ex_rep_base - Win32 Release IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_IA64"
+# PROP BASE Intermediate_Dir "Release_IA64/ex_rep_base"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_IA64"
+# PROP Intermediate_Dir "Release_IA64/ex_rep_base"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib ws2_32.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib ws2_32.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
!ENDIF
# Begin Target
-# Name "ex_rep_base - Win32 Release"
-# Name "ex_rep_base - Win32 Debug"
-# Name "ex_rep_base - Win32 ASCII Debug"
-# Name "ex_rep_base - Win32 ASCII Release"
+# Name "ex_rep_base - Win32 Release x86"
+# Name "ex_rep_base - Win32 Debug x86"
+# Name "ex_rep_base - Win32 ASCII Debug x86"
+# Name "ex_rep_base - Win32 ASCII Release x86"
# Name "ex_rep_base - x64 Debug AMD64"
# Name "ex_rep_base - x64 Release AMD64"
# Name "ex_rep_base - x64 Debug IA64"
# Name "ex_rep_base - x64 Release IA64"
+# Name "ex_rep_base - Win32 Debug AMD64"
+# Name "ex_rep_base - Win32 Release AMD64"
+# Name "ex_rep_base - Win32 Debug IA64"
+# Name "ex_rep_base - Win32 Release IA64"
# Begin Source File
SOURCE=..\examples_c\ex_rep\base\rep_base.c
diff --git a/db/build_windows/ex_rep_mgr.dsp b/db/build_windows/ex_rep_mgr.dsp
index e7a814f88..e9215f38c 100644
--- a/db/build_windows/ex_rep_mgr.dsp
+++ b/db/build_windows/ex_rep_mgr.dsp
@@ -4,7 +4,7 @@
# TARGTYPE "Win32 (x86) Console Application" 0x0103
-CFG=ex_rep_mgr - Win32 Debug
+CFG=ex_rep_mgr - Win32 Debug x86
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
@@ -13,18 +13,22 @@ CFG=ex_rep_mgr - Win32 Debug
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "ex_rep_mgr.mak" CFG="ex_rep_mgr - Win32 Debug"
+!MESSAGE NMAKE /f "ex_rep_mgr.mak" CFG="ex_rep_mgr - Win32 Debug x86"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "ex_rep_mgr - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_rep_mgr - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_rep_mgr - Win32 ASCII Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_rep_mgr - Win32 ASCII Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_rep_mgr - Win32 Release x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_rep_mgr - Win32 Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_rep_mgr - Win32 ASCII Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_rep_mgr - Win32 ASCII Release x86" (based on "Win32 (x86) Console Application")
!MESSAGE "ex_rep_mgr - x64 Debug AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "ex_rep_mgr - x64 Release AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "ex_rep_mgr - x64 Debug IA64" (based on "Win32 (x86) Console Application")
!MESSAGE "ex_rep_mgr - x64 Release IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_rep_mgr - Win32 Debug AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_rep_mgr - Win32 Release AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_rep_mgr - Win32 Debug IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_rep_mgr - Win32 Release IA64" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
@@ -34,7 +38,7 @@ CFG=ex_rep_mgr - Win32 Debug
CPP=cl.exe
RSC=rc.exe
-!IF "$(CFG)" == "ex_rep_mgr - Win32 Release"
+!IF "$(CFG)" == "ex_rep_mgr - Win32 Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -56,9 +60,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
-!ELSEIF "$(CFG)" == "ex_rep_mgr - Win32 Debug"
+!ELSEIF "$(CFG)" == "ex_rep_mgr - Win32 Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -80,9 +84,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
-!ELSEIF "$(CFG)" == "ex_rep_mgr - Win32 ASCII Debug"
+!ELSEIF "$(CFG)" == "ex_rep_mgr - Win32 ASCII Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -104,10 +108,10 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
+# ADD BASE LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
-!ELSEIF "$(CFG)" == "ex_rep_mgr - Win32 ASCII Release"
+!ELSEIF "$(CFG)" == "ex_rep_mgr - Win32 ASCII Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -129,8 +133,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
+# ADD BASE LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
!ELSEIF "$(CFG)" == "ex_rep_mgr - x64 Debug AMD64"
@@ -154,8 +158,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
!ELSEIF "$(CFG)" == "ex_rep_mgr - x64 Release AMD64"
@@ -179,8 +183,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
!ELSEIF "$(CFG)" == "ex_rep_mgr - x64 Debug IA64"
@@ -204,8 +208,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
!ELSEIF "$(CFG)" == "ex_rep_mgr - x64 Release IA64"
@@ -229,21 +233,125 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+
+!ELSEIF "$(CFG)" == "ex_rep_mgr - Win32 Debug AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_AMD64"
+# PROP BASE Intermediate_Dir "Debug_AMD64/ex_rep_mgr"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_AMD64"
+# PROP Intermediate_Dir "Debug_AMD64/ex_rep_mgr"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+
+!ELSEIF "$(CFG)" == "ex_rep_mgr - Win32 Release AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_AMD64"
+# PROP BASE Intermediate_Dir "Release_AMD64/ex_rep_mgr"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_AMD64"
+# PROP Intermediate_Dir "Release_AMD64/ex_rep_mgr"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+
+!ELSEIF "$(CFG)" == "ex_rep_mgr - Win32 Debug IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_IA64"
+# PROP BASE Intermediate_Dir "Debug_IA64/ex_rep_mgr"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_IA64"
+# PROP Intermediate_Dir "Debug_IA64/ex_rep_mgr"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+
+!ELSEIF "$(CFG)" == "ex_rep_mgr - Win32 Release IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_IA64"
+# PROP BASE Intermediate_Dir "Release_IA64/ex_rep_mgr"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_IA64"
+# PROP Intermediate_Dir "Release_IA64/ex_rep_mgr"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
!ENDIF
# Begin Target
-# Name "ex_rep_mgr - Win32 Release"
-# Name "ex_rep_mgr - Win32 Debug"
-# Name "ex_rep_mgr - Win32 ASCII Debug"
-# Name "ex_rep_mgr - Win32 ASCII Release"
+# Name "ex_rep_mgr - Win32 Release x86"
+# Name "ex_rep_mgr - Win32 Debug x86"
+# Name "ex_rep_mgr - Win32 ASCII Debug x86"
+# Name "ex_rep_mgr - Win32 ASCII Release x86"
# Name "ex_rep_mgr - x64 Debug AMD64"
# Name "ex_rep_mgr - x64 Release AMD64"
# Name "ex_rep_mgr - x64 Debug IA64"
# Name "ex_rep_mgr - x64 Release IA64"
+# Name "ex_rep_mgr - Win32 Debug AMD64"
+# Name "ex_rep_mgr - Win32 Release AMD64"
+# Name "ex_rep_mgr - Win32 Debug IA64"
+# Name "ex_rep_mgr - Win32 Release IA64"
# Begin Source File
SOURCE=..\examples_c\ex_rep\common\rep_common.c
diff --git a/db/build_windows/ex_sequence.dsp b/db/build_windows/ex_sequence.dsp
index 1da0885dd..da8e83caf 100644
--- a/db/build_windows/ex_sequence.dsp
+++ b/db/build_windows/ex_sequence.dsp
@@ -4,7 +4,7 @@
# TARGTYPE "Win32 (x86) Console Application" 0x0103
-CFG=ex_sequence - Win32 Debug
+CFG=ex_sequence - Win32 Debug x86
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
@@ -13,18 +13,22 @@ CFG=ex_sequence - Win32 Debug
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "ex_sequence.mak" CFG="ex_sequence - Win32 Debug"
+!MESSAGE NMAKE /f "ex_sequence.mak" CFG="ex_sequence - Win32 Debug x86"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "ex_sequence - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_sequence - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_sequence - Win32 ASCII Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_sequence - Win32 ASCII Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_sequence - Win32 Release x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_sequence - Win32 Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_sequence - Win32 ASCII Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_sequence - Win32 ASCII Release x86" (based on "Win32 (x86) Console Application")
!MESSAGE "ex_sequence - x64 Debug AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "ex_sequence - x64 Release AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "ex_sequence - x64 Debug IA64" (based on "Win32 (x86) Console Application")
!MESSAGE "ex_sequence - x64 Release IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_sequence - Win32 Debug AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_sequence - Win32 Release AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_sequence - Win32 Debug IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_sequence - Win32 Release IA64" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
@@ -34,7 +38,7 @@ CFG=ex_sequence - Win32 Debug
CPP=cl.exe
RSC=rc.exe
-!IF "$(CFG)" == "ex_sequence - Win32 Release"
+!IF "$(CFG)" == "ex_sequence - Win32 Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -56,9 +60,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
-!ELSEIF "$(CFG)" == "ex_sequence - Win32 Debug"
+!ELSEIF "$(CFG)" == "ex_sequence - Win32 Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -80,9 +84,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
-!ELSEIF "$(CFG)" == "ex_sequence - Win32 ASCII Debug"
+!ELSEIF "$(CFG)" == "ex_sequence - Win32 ASCII Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -104,10 +108,10 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
+# ADD BASE LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
-!ELSEIF "$(CFG)" == "ex_sequence - Win32 ASCII Release"
+!ELSEIF "$(CFG)" == "ex_sequence - Win32 ASCII Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -129,8 +133,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
+# ADD BASE LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
!ELSEIF "$(CFG)" == "ex_sequence - x64 Debug AMD64"
@@ -154,8 +158,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
!ELSEIF "$(CFG)" == "ex_sequence - x64 Release AMD64"
@@ -179,8 +183,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
!ELSEIF "$(CFG)" == "ex_sequence - x64 Debug IA64"
@@ -204,8 +208,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
!ELSEIF "$(CFG)" == "ex_sequence - x64 Release IA64"
@@ -229,21 +233,125 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+
+!ELSEIF "$(CFG)" == "ex_sequence - Win32 Debug AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_AMD64"
+# PROP BASE Intermediate_Dir "Debug_AMD64/ex_sequence"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_AMD64"
+# PROP Intermediate_Dir "Debug_AMD64/ex_sequence"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+
+!ELSEIF "$(CFG)" == "ex_sequence - Win32 Release AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_AMD64"
+# PROP BASE Intermediate_Dir "Release_AMD64/ex_sequence"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_AMD64"
+# PROP Intermediate_Dir "Release_AMD64/ex_sequence"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+
+!ELSEIF "$(CFG)" == "ex_sequence - Win32 Debug IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_IA64"
+# PROP BASE Intermediate_Dir "Debug_IA64/ex_sequence"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_IA64"
+# PROP Intermediate_Dir "Debug_IA64/ex_sequence"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+
+!ELSEIF "$(CFG)" == "ex_sequence - Win32 Release IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_IA64"
+# PROP BASE Intermediate_Dir "Release_IA64/ex_sequence"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_IA64"
+# PROP Intermediate_Dir "Release_IA64/ex_sequence"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
!ENDIF
# Begin Target
-# Name "ex_sequence - Win32 Release"
-# Name "ex_sequence - Win32 Debug"
-# Name "ex_sequence - Win32 ASCII Debug"
-# Name "ex_sequence - Win32 ASCII Release"
+# Name "ex_sequence - Win32 Release x86"
+# Name "ex_sequence - Win32 Debug x86"
+# Name "ex_sequence - Win32 ASCII Debug x86"
+# Name "ex_sequence - Win32 ASCII Release x86"
# Name "ex_sequence - x64 Debug AMD64"
# Name "ex_sequence - x64 Release AMD64"
# Name "ex_sequence - x64 Debug IA64"
# Name "ex_sequence - x64 Release IA64"
+# Name "ex_sequence - Win32 Debug AMD64"
+# Name "ex_sequence - Win32 Release AMD64"
+# Name "ex_sequence - Win32 Debug IA64"
+# Name "ex_sequence - Win32 Release IA64"
# Begin Source File
SOURCE=..\examples_c\ex_sequence.c
diff --git a/db/build_windows/ex_tpcb.dsp b/db/build_windows/ex_tpcb.dsp
index 889533e3d..056d1a14b 100644
--- a/db/build_windows/ex_tpcb.dsp
+++ b/db/build_windows/ex_tpcb.dsp
@@ -4,7 +4,7 @@
# TARGTYPE "Win32 (x86) Console Application" 0x0103
-CFG=ex_tpcb - Win32 Debug
+CFG=ex_tpcb - Win32 Debug x86
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
@@ -13,18 +13,22 @@ CFG=ex_tpcb - Win32 Debug
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "ex_tpcb.mak" CFG="ex_tpcb - Win32 Debug"
+!MESSAGE NMAKE /f "ex_tpcb.mak" CFG="ex_tpcb - Win32 Debug x86"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "ex_tpcb - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_tpcb - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_tpcb - Win32 ASCII Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_tpcb - Win32 ASCII Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_tpcb - Win32 Release x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_tpcb - Win32 Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_tpcb - Win32 ASCII Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_tpcb - Win32 ASCII Release x86" (based on "Win32 (x86) Console Application")
!MESSAGE "ex_tpcb - x64 Debug AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "ex_tpcb - x64 Release AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "ex_tpcb - x64 Debug IA64" (based on "Win32 (x86) Console Application")
!MESSAGE "ex_tpcb - x64 Release IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_tpcb - Win32 Debug AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_tpcb - Win32 Release AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_tpcb - Win32 Debug IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_tpcb - Win32 Release IA64" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
@@ -34,7 +38,7 @@ CFG=ex_tpcb - Win32 Debug
CPP=cl.exe
RSC=rc.exe
-!IF "$(CFG)" == "ex_tpcb - Win32 Release"
+!IF "$(CFG)" == "ex_tpcb - Win32 Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -56,9 +60,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
-!ELSEIF "$(CFG)" == "ex_tpcb - Win32 Debug"
+!ELSEIF "$(CFG)" == "ex_tpcb - Win32 Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -80,9 +84,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
-!ELSEIF "$(CFG)" == "ex_tpcb - Win32 ASCII Debug"
+!ELSEIF "$(CFG)" == "ex_tpcb - Win32 ASCII Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -104,10 +108,10 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
+# ADD BASE LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
-!ELSEIF "$(CFG)" == "ex_tpcb - Win32 ASCII Release"
+!ELSEIF "$(CFG)" == "ex_tpcb - Win32 ASCII Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -129,8 +133,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
+# ADD BASE LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
!ELSEIF "$(CFG)" == "ex_tpcb - x64 Debug AMD64"
@@ -154,8 +158,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
!ELSEIF "$(CFG)" == "ex_tpcb - x64 Release AMD64"
@@ -179,8 +183,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
!ELSEIF "$(CFG)" == "ex_tpcb - x64 Debug IA64"
@@ -204,8 +208,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
!ELSEIF "$(CFG)" == "ex_tpcb - x64 Release IA64"
@@ -229,21 +233,125 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+
+!ELSEIF "$(CFG)" == "ex_tpcb - Win32 Debug AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_AMD64"
+# PROP BASE Intermediate_Dir "Debug_AMD64/ex_tpcb"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_AMD64"
+# PROP Intermediate_Dir "Debug_AMD64/ex_tpcb"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+
+!ELSEIF "$(CFG)" == "ex_tpcb - Win32 Release AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_AMD64"
+# PROP BASE Intermediate_Dir "Release_AMD64/ex_tpcb"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_AMD64"
+# PROP Intermediate_Dir "Release_AMD64/ex_tpcb"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+
+!ELSEIF "$(CFG)" == "ex_tpcb - Win32 Debug IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_IA64"
+# PROP BASE Intermediate_Dir "Debug_IA64/ex_tpcb"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_IA64"
+# PROP Intermediate_Dir "Debug_IA64/ex_tpcb"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+
+!ELSEIF "$(CFG)" == "ex_tpcb - Win32 Release IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_IA64"
+# PROP BASE Intermediate_Dir "Release_IA64/ex_tpcb"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_IA64"
+# PROP Intermediate_Dir "Release_IA64/ex_tpcb"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
!ENDIF
# Begin Target
-# Name "ex_tpcb - Win32 Release"
-# Name "ex_tpcb - Win32 Debug"
-# Name "ex_tpcb - Win32 ASCII Debug"
-# Name "ex_tpcb - Win32 ASCII Release"
+# Name "ex_tpcb - Win32 Release x86"
+# Name "ex_tpcb - Win32 Debug x86"
+# Name "ex_tpcb - Win32 ASCII Debug x86"
+# Name "ex_tpcb - Win32 ASCII Release x86"
# Name "ex_tpcb - x64 Debug AMD64"
# Name "ex_tpcb - x64 Release AMD64"
# Name "ex_tpcb - x64 Debug IA64"
# Name "ex_tpcb - x64 Release IA64"
+# Name "ex_tpcb - Win32 Debug AMD64"
+# Name "ex_tpcb - Win32 Release AMD64"
+# Name "ex_tpcb - Win32 Debug IA64"
+# Name "ex_tpcb - Win32 Release IA64"
# Begin Source File
SOURCE=..\examples_c\ex_tpcb.c
diff --git a/db/build_windows/ex_txnguide.dsp b/db/build_windows/ex_txnguide.dsp
index a33327620..399035a0f 100644
--- a/db/build_windows/ex_txnguide.dsp
+++ b/db/build_windows/ex_txnguide.dsp
@@ -4,7 +4,7 @@
# TARGTYPE "Win32 (x86) Console Application" 0x0103
-CFG=ex_txnguide - Win32 Debug
+CFG=ex_txnguide - Win32 Debug x86
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
@@ -13,18 +13,22 @@ CFG=ex_txnguide - Win32 Debug
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "ex_txnguide.mak" CFG="ex_txnguide - Win32 Debug"
+!MESSAGE NMAKE /f "ex_txnguide.mak" CFG="ex_txnguide - Win32 Debug x86"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "ex_txnguide - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_txnguide - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_txnguide - Win32 ASCII Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_txnguide - Win32 ASCII Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_txnguide - Win32 Release x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_txnguide - Win32 Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_txnguide - Win32 ASCII Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_txnguide - Win32 ASCII Release x86" (based on "Win32 (x86) Console Application")
!MESSAGE "ex_txnguide - x64 Debug AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "ex_txnguide - x64 Release AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "ex_txnguide - x64 Debug IA64" (based on "Win32 (x86) Console Application")
!MESSAGE "ex_txnguide - x64 Release IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_txnguide - Win32 Debug AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_txnguide - Win32 Release AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_txnguide - Win32 Debug IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_txnguide - Win32 Release IA64" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
@@ -34,7 +38,7 @@ CFG=ex_txnguide - Win32 Debug
CPP=cl.exe
RSC=rc.exe
-!IF "$(CFG)" == "ex_txnguide - Win32 Release"
+!IF "$(CFG)" == "ex_txnguide - Win32 Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -56,9 +60,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
-!ELSEIF "$(CFG)" == "ex_txnguide - Win32 Debug"
+!ELSEIF "$(CFG)" == "ex_txnguide - Win32 Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -80,9 +84,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
-!ELSEIF "$(CFG)" == "ex_txnguide - Win32 ASCII Debug"
+!ELSEIF "$(CFG)" == "ex_txnguide - Win32 ASCII Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -104,10 +108,10 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
+# ADD BASE LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
-!ELSEIF "$(CFG)" == "ex_txnguide - Win32 ASCII Release"
+!ELSEIF "$(CFG)" == "ex_txnguide - Win32 ASCII Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -129,8 +133,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
+# ADD BASE LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
!ELSEIF "$(CFG)" == "ex_txnguide - x64 Debug AMD64"
@@ -154,8 +158,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
!ELSEIF "$(CFG)" == "ex_txnguide - x64 Release AMD64"
@@ -179,8 +183,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
!ELSEIF "$(CFG)" == "ex_txnguide - x64 Debug IA64"
@@ -204,8 +208,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
!ELSEIF "$(CFG)" == "ex_txnguide - x64 Release IA64"
@@ -229,21 +233,125 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+
+!ELSEIF "$(CFG)" == "ex_txnguide - Win32 Debug AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_AMD64"
+# PROP BASE Intermediate_Dir "Debug_AMD64/ex_txnguide"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_AMD64"
+# PROP Intermediate_Dir "Debug_AMD64/ex_txnguide"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+
+!ELSEIF "$(CFG)" == "ex_txnguide - Win32 Release AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_AMD64"
+# PROP BASE Intermediate_Dir "Release_AMD64/ex_txnguide"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_AMD64"
+# PROP Intermediate_Dir "Release_AMD64/ex_txnguide"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+
+!ELSEIF "$(CFG)" == "ex_txnguide - Win32 Debug IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_IA64"
+# PROP BASE Intermediate_Dir "Debug_IA64/ex_txnguide"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_IA64"
+# PROP Intermediate_Dir "Debug_IA64/ex_txnguide"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+
+!ELSEIF "$(CFG)" == "ex_txnguide - Win32 Release IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_IA64"
+# PROP BASE Intermediate_Dir "Release_IA64/ex_txnguide"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_IA64"
+# PROP Intermediate_Dir "Release_IA64/ex_txnguide"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
!ENDIF
# Begin Target
-# Name "ex_txnguide - Win32 Release"
-# Name "ex_txnguide - Win32 Debug"
-# Name "ex_txnguide - Win32 ASCII Debug"
-# Name "ex_txnguide - Win32 ASCII Release"
+# Name "ex_txnguide - Win32 Release x86"
+# Name "ex_txnguide - Win32 Debug x86"
+# Name "ex_txnguide - Win32 ASCII Debug x86"
+# Name "ex_txnguide - Win32 ASCII Release x86"
# Name "ex_txnguide - x64 Debug AMD64"
# Name "ex_txnguide - x64 Release AMD64"
# Name "ex_txnguide - x64 Debug IA64"
# Name "ex_txnguide - x64 Release IA64"
+# Name "ex_txnguide - Win32 Debug AMD64"
+# Name "ex_txnguide - Win32 Release AMD64"
+# Name "ex_txnguide - Win32 Debug IA64"
+# Name "ex_txnguide - Win32 Release IA64"
# Begin Source File
SOURCE=..\examples_c\txn_guide\txn_guide.c
diff --git a/db/build_windows/ex_txnguide_inmem.dsp b/db/build_windows/ex_txnguide_inmem.dsp
index 7b0dc40a9..c62b1b108 100644
--- a/db/build_windows/ex_txnguide_inmem.dsp
+++ b/db/build_windows/ex_txnguide_inmem.dsp
@@ -4,7 +4,7 @@
# TARGTYPE "Win32 (x86) Console Application" 0x0103
-CFG=ex_txnguide_inmem - Win32 Debug
+CFG=ex_txnguide_inmem - Win32 Debug x86
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
@@ -13,18 +13,22 @@ CFG=ex_txnguide_inmem - Win32 Debug
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "ex_txnguide_inmem.mak" CFG="ex_txnguide_inmem - Win32 Debug"
+!MESSAGE NMAKE /f "ex_txnguide_inmem.mak" CFG="ex_txnguide_inmem - Win32 Debug x86"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "ex_txnguide_inmem - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_txnguide_inmem - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_txnguide_inmem - Win32 ASCII Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "ex_txnguide_inmem - Win32 ASCII Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_txnguide_inmem - Win32 Release x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_txnguide_inmem - Win32 Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_txnguide_inmem - Win32 ASCII Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_txnguide_inmem - Win32 ASCII Release x86" (based on "Win32 (x86) Console Application")
!MESSAGE "ex_txnguide_inmem - x64 Debug AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "ex_txnguide_inmem - x64 Release AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "ex_txnguide_inmem - x64 Debug IA64" (based on "Win32 (x86) Console Application")
!MESSAGE "ex_txnguide_inmem - x64 Release IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_txnguide_inmem - Win32 Debug AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_txnguide_inmem - Win32 Release AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_txnguide_inmem - Win32 Debug IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "ex_txnguide_inmem - Win32 Release IA64" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
@@ -34,7 +38,7 @@ CFG=ex_txnguide_inmem - Win32 Debug
CPP=cl.exe
RSC=rc.exe
-!IF "$(CFG)" == "ex_txnguide_inmem - Win32 Release"
+!IF "$(CFG)" == "ex_txnguide_inmem - Win32 Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -56,9 +60,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
-!ELSEIF "$(CFG)" == "ex_txnguide_inmem - Win32 Debug"
+!ELSEIF "$(CFG)" == "ex_txnguide_inmem - Win32 Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -80,9 +84,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
-!ELSEIF "$(CFG)" == "ex_txnguide_inmem - Win32 ASCII Debug"
+!ELSEIF "$(CFG)" == "ex_txnguide_inmem - Win32 ASCII Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -104,10 +108,10 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
+# ADD BASE LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
-!ELSEIF "$(CFG)" == "ex_txnguide_inmem - Win32 ASCII Release"
+!ELSEIF "$(CFG)" == "ex_txnguide_inmem - Win32 ASCII Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -129,8 +133,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
+# ADD BASE LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
!ELSEIF "$(CFG)" == "ex_txnguide_inmem - x64 Debug AMD64"
@@ -154,8 +158,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
!ELSEIF "$(CFG)" == "ex_txnguide_inmem - x64 Release AMD64"
@@ -179,8 +183,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
!ELSEIF "$(CFG)" == "ex_txnguide_inmem - x64 Debug IA64"
@@ -204,8 +208,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
!ELSEIF "$(CFG)" == "ex_txnguide_inmem - x64 Release IA64"
@@ -229,21 +233,125 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+
+!ELSEIF "$(CFG)" == "ex_txnguide_inmem - Win32 Debug AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_AMD64"
+# PROP BASE Intermediate_Dir "Debug_AMD64/ex_txnguide_inmem"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_AMD64"
+# PROP Intermediate_Dir "Debug_AMD64/ex_txnguide_inmem"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+
+!ELSEIF "$(CFG)" == "ex_txnguide_inmem - Win32 Release AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_AMD64"
+# PROP BASE Intermediate_Dir "Release_AMD64/ex_txnguide_inmem"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_AMD64"
+# PROP Intermediate_Dir "Release_AMD64/ex_txnguide_inmem"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+
+!ELSEIF "$(CFG)" == "ex_txnguide_inmem - Win32 Debug IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_IA64"
+# PROP BASE Intermediate_Dir "Debug_IA64/ex_txnguide_inmem"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_IA64"
+# PROP Intermediate_Dir "Debug_IA64/ex_txnguide_inmem"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+
+!ELSEIF "$(CFG)" == "ex_txnguide_inmem - Win32 Release IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_IA64"
+# PROP BASE Intermediate_Dir "Release_IA64/ex_txnguide_inmem"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_IA64"
+# PROP Intermediate_Dir "Release_IA64/ex_txnguide_inmem"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
!ENDIF
# Begin Target
-# Name "ex_txnguide_inmem - Win32 Release"
-# Name "ex_txnguide_inmem - Win32 Debug"
-# Name "ex_txnguide_inmem - Win32 ASCII Debug"
-# Name "ex_txnguide_inmem - Win32 ASCII Release"
+# Name "ex_txnguide_inmem - Win32 Release x86"
+# Name "ex_txnguide_inmem - Win32 Debug x86"
+# Name "ex_txnguide_inmem - Win32 ASCII Debug x86"
+# Name "ex_txnguide_inmem - Win32 ASCII Release x86"
# Name "ex_txnguide_inmem - x64 Debug AMD64"
# Name "ex_txnguide_inmem - x64 Release AMD64"
# Name "ex_txnguide_inmem - x64 Debug IA64"
# Name "ex_txnguide_inmem - x64 Release IA64"
+# Name "ex_txnguide_inmem - Win32 Debug AMD64"
+# Name "ex_txnguide_inmem - Win32 Release AMD64"
+# Name "ex_txnguide_inmem - Win32 Debug IA64"
+# Name "ex_txnguide_inmem - Win32 Release IA64"
# Begin Source File
SOURCE=..\examples_c\txn_guide\txn_guide_inmemory.c
diff --git a/db/build_windows/example_database_load.dsp b/db/build_windows/example_database_load.dsp
index 3eed16250..157198578 100644
--- a/db/build_windows/example_database_load.dsp
+++ b/db/build_windows/example_database_load.dsp
@@ -4,7 +4,7 @@
# TARGTYPE "Win32 (x86) Console Application" 0x0103
-CFG=example_database_load - Win32 Debug
+CFG=example_database_load - Win32 Debug x86
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
@@ -13,18 +13,22 @@ CFG=example_database_load - Win32 Debug
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "example_database_load.mak" CFG="example_database_load - Win32 Debug"
+!MESSAGE NMAKE /f "example_database_load.mak" CFG="example_database_load - Win32 Debug x86"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "example_database_load - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "example_database_load - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "example_database_load - Win32 ASCII Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "example_database_load - Win32 ASCII Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "example_database_load - Win32 Release x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "example_database_load - Win32 Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "example_database_load - Win32 ASCII Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "example_database_load - Win32 ASCII Release x86" (based on "Win32 (x86) Console Application")
!MESSAGE "example_database_load - x64 Debug AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "example_database_load - x64 Release AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "example_database_load - x64 Debug IA64" (based on "Win32 (x86) Console Application")
!MESSAGE "example_database_load - x64 Release IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "example_database_load - Win32 Debug AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "example_database_load - Win32 Release AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "example_database_load - Win32 Debug IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "example_database_load - Win32 Release IA64" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
@@ -34,7 +38,7 @@ CFG=example_database_load - Win32 Debug
CPP=cl.exe
RSC=rc.exe
-!IF "$(CFG)" == "example_database_load - Win32 Release"
+!IF "$(CFG)" == "example_database_load - Win32 Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -56,9 +60,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
-!ELSEIF "$(CFG)" == "example_database_load - Win32 Debug"
+!ELSEIF "$(CFG)" == "example_database_load - Win32 Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -80,9 +84,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
-!ELSEIF "$(CFG)" == "example_database_load - Win32 ASCII Debug"
+!ELSEIF "$(CFG)" == "example_database_load - Win32 ASCII Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -104,10 +108,10 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
+# ADD BASE LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
-!ELSEIF "$(CFG)" == "example_database_load - Win32 ASCII Release"
+!ELSEIF "$(CFG)" == "example_database_load - Win32 ASCII Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -129,8 +133,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
+# ADD BASE LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
!ELSEIF "$(CFG)" == "example_database_load - x64 Debug AMD64"
@@ -154,8 +158,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
!ELSEIF "$(CFG)" == "example_database_load - x64 Release AMD64"
@@ -179,8 +183,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
!ELSEIF "$(CFG)" == "example_database_load - x64 Debug IA64"
@@ -204,8 +208,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
!ELSEIF "$(CFG)" == "example_database_load - x64 Release IA64"
@@ -229,21 +233,125 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+
+!ELSEIF "$(CFG)" == "example_database_load - Win32 Debug AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_AMD64"
+# PROP BASE Intermediate_Dir "Debug_AMD64/example_database_load"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_AMD64"
+# PROP Intermediate_Dir "Debug_AMD64/example_database_load"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+
+!ELSEIF "$(CFG)" == "example_database_load - Win32 Release AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_AMD64"
+# PROP BASE Intermediate_Dir "Release_AMD64/example_database_load"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_AMD64"
+# PROP Intermediate_Dir "Release_AMD64/example_database_load"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+
+!ELSEIF "$(CFG)" == "example_database_load - Win32 Debug IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_IA64"
+# PROP BASE Intermediate_Dir "Debug_IA64/example_database_load"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_IA64"
+# PROP Intermediate_Dir "Debug_IA64/example_database_load"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+
+!ELSEIF "$(CFG)" == "example_database_load - Win32 Release IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_IA64"
+# PROP BASE Intermediate_Dir "Release_IA64/example_database_load"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_IA64"
+# PROP Intermediate_Dir "Release_IA64/example_database_load"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
!ENDIF
# Begin Target
-# Name "example_database_load - Win32 Release"
-# Name "example_database_load - Win32 Debug"
-# Name "example_database_load - Win32 ASCII Debug"
-# Name "example_database_load - Win32 ASCII Release"
+# Name "example_database_load - Win32 Release x86"
+# Name "example_database_load - Win32 Debug x86"
+# Name "example_database_load - Win32 ASCII Debug x86"
+# Name "example_database_load - Win32 ASCII Release x86"
# Name "example_database_load - x64 Debug AMD64"
# Name "example_database_load - x64 Release AMD64"
# Name "example_database_load - x64 Debug IA64"
# Name "example_database_load - x64 Release IA64"
+# Name "example_database_load - Win32 Debug AMD64"
+# Name "example_database_load - Win32 Release AMD64"
+# Name "example_database_load - Win32 Debug IA64"
+# Name "example_database_load - Win32 Release IA64"
# Begin Source File
SOURCE=..\examples_c\getting_started\example_database_load.c
diff --git a/db/build_windows/example_database_read.dsp b/db/build_windows/example_database_read.dsp
index 65d241b8f..456836746 100644
--- a/db/build_windows/example_database_read.dsp
+++ b/db/build_windows/example_database_read.dsp
@@ -4,7 +4,7 @@
# TARGTYPE "Win32 (x86) Console Application" 0x0103
-CFG=example_database_read - Win32 Debug
+CFG=example_database_read - Win32 Debug x86
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
@@ -13,18 +13,22 @@ CFG=example_database_read - Win32 Debug
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "example_database_read.mak" CFG="example_database_read - Win32 Debug"
+!MESSAGE NMAKE /f "example_database_read.mak" CFG="example_database_read - Win32 Debug x86"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "example_database_read - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "example_database_read - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "example_database_read - Win32 ASCII Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "example_database_read - Win32 ASCII Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "example_database_read - Win32 Release x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "example_database_read - Win32 Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "example_database_read - Win32 ASCII Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "example_database_read - Win32 ASCII Release x86" (based on "Win32 (x86) Console Application")
!MESSAGE "example_database_read - x64 Debug AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "example_database_read - x64 Release AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "example_database_read - x64 Debug IA64" (based on "Win32 (x86) Console Application")
!MESSAGE "example_database_read - x64 Release IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "example_database_read - Win32 Debug AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "example_database_read - Win32 Release AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "example_database_read - Win32 Debug IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "example_database_read - Win32 Release IA64" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
@@ -34,7 +38,7 @@ CFG=example_database_read - Win32 Debug
CPP=cl.exe
RSC=rc.exe
-!IF "$(CFG)" == "example_database_read - Win32 Release"
+!IF "$(CFG)" == "example_database_read - Win32 Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -56,9 +60,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
-!ELSEIF "$(CFG)" == "example_database_read - Win32 Debug"
+!ELSEIF "$(CFG)" == "example_database_read - Win32 Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -80,9 +84,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
-!ELSEIF "$(CFG)" == "example_database_read - Win32 ASCII Debug"
+!ELSEIF "$(CFG)" == "example_database_read - Win32 ASCII Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -104,10 +108,10 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
+# ADD BASE LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
-!ELSEIF "$(CFG)" == "example_database_read - Win32 ASCII Release"
+!ELSEIF "$(CFG)" == "example_database_read - Win32 ASCII Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -129,8 +133,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
+# ADD BASE LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
!ELSEIF "$(CFG)" == "example_database_read - x64 Debug AMD64"
@@ -154,8 +158,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
!ELSEIF "$(CFG)" == "example_database_read - x64 Release AMD64"
@@ -179,8 +183,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
!ELSEIF "$(CFG)" == "example_database_read - x64 Debug IA64"
@@ -204,8 +208,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
!ELSEIF "$(CFG)" == "example_database_read - x64 Release IA64"
@@ -229,21 +233,125 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+
+!ELSEIF "$(CFG)" == "example_database_read - Win32 Debug AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_AMD64"
+# PROP BASE Intermediate_Dir "Debug_AMD64/example_database_read"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_AMD64"
+# PROP Intermediate_Dir "Debug_AMD64/example_database_read"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+
+!ELSEIF "$(CFG)" == "example_database_read - Win32 Release AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_AMD64"
+# PROP BASE Intermediate_Dir "Release_AMD64/example_database_read"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_AMD64"
+# PROP Intermediate_Dir "Release_AMD64/example_database_read"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+
+!ELSEIF "$(CFG)" == "example_database_read - Win32 Debug IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_IA64"
+# PROP BASE Intermediate_Dir "Debug_IA64/example_database_read"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_IA64"
+# PROP Intermediate_Dir "Debug_IA64/example_database_read"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+
+!ELSEIF "$(CFG)" == "example_database_read - Win32 Release IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_IA64"
+# PROP BASE Intermediate_Dir "Release_IA64/example_database_read"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_IA64"
+# PROP Intermediate_Dir "Release_IA64/example_database_read"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
!ENDIF
# Begin Target
-# Name "example_database_read - Win32 Release"
-# Name "example_database_read - Win32 Debug"
-# Name "example_database_read - Win32 ASCII Debug"
-# Name "example_database_read - Win32 ASCII Release"
+# Name "example_database_read - Win32 Release x86"
+# Name "example_database_read - Win32 Debug x86"
+# Name "example_database_read - Win32 ASCII Debug x86"
+# Name "example_database_read - Win32 ASCII Release x86"
# Name "example_database_read - x64 Debug AMD64"
# Name "example_database_read - x64 Release AMD64"
# Name "example_database_read - x64 Debug IA64"
# Name "example_database_read - x64 Release IA64"
+# Name "example_database_read - Win32 Debug AMD64"
+# Name "example_database_read - Win32 Release AMD64"
+# Name "example_database_read - Win32 Debug IA64"
+# Name "example_database_read - Win32 Release IA64"
# Begin Source File
SOURCE=..\examples_c\getting_started\example_database_read.c
diff --git a/db/build_windows/excxx_access.dsp b/db/build_windows/excxx_access.dsp
index 9e18187da..4e268fa15 100644
--- a/db/build_windows/excxx_access.dsp
+++ b/db/build_windows/excxx_access.dsp
@@ -4,7 +4,7 @@
# TARGTYPE "Win32 (x86) Console Application" 0x0103
-CFG=excxx_access - Win32 Debug
+CFG=excxx_access - Win32 Debug x86
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
@@ -13,18 +13,22 @@ CFG=excxx_access - Win32 Debug
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "excxx_access.mak" CFG="excxx_access - Win32 Debug"
+!MESSAGE NMAKE /f "excxx_access.mak" CFG="excxx_access - Win32 Debug x86"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "excxx_access - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_access - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_access - Win32 ASCII Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_access - Win32 ASCII Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_access - Win32 Release x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_access - Win32 Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_access - Win32 ASCII Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_access - Win32 ASCII Release x86" (based on "Win32 (x86) Console Application")
!MESSAGE "excxx_access - x64 Debug AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "excxx_access - x64 Release AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "excxx_access - x64 Debug IA64" (based on "Win32 (x86) Console Application")
!MESSAGE "excxx_access - x64 Release IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_access - Win32 Debug AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_access - Win32 Release AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_access - Win32 Debug IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_access - Win32 Release IA64" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
@@ -34,7 +38,7 @@ CFG=excxx_access - Win32 Debug
CPP=cl.exe
RSC=rc.exe
-!IF "$(CFG)" == "excxx_access - Win32 Release"
+!IF "$(CFG)" == "excxx_access - Win32 Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -56,9 +60,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
-!ELSEIF "$(CFG)" == "excxx_access - Win32 Debug"
+!ELSEIF "$(CFG)" == "excxx_access - Win32 Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -80,9 +84,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
-!ELSEIF "$(CFG)" == "excxx_access - Win32 ASCII Debug"
+!ELSEIF "$(CFG)" == "excxx_access - Win32 ASCII Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -104,10 +108,10 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
+# ADD BASE LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
-!ELSEIF "$(CFG)" == "excxx_access - Win32 ASCII Release"
+!ELSEIF "$(CFG)" == "excxx_access - Win32 ASCII Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -129,8 +133,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
+# ADD BASE LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
!ELSEIF "$(CFG)" == "excxx_access - x64 Debug AMD64"
@@ -154,8 +158,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
!ELSEIF "$(CFG)" == "excxx_access - x64 Release AMD64"
@@ -179,8 +183,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
!ELSEIF "$(CFG)" == "excxx_access - x64 Debug IA64"
@@ -204,8 +208,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
!ELSEIF "$(CFG)" == "excxx_access - x64 Release IA64"
@@ -229,21 +233,125 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+
+!ELSEIF "$(CFG)" == "excxx_access - Win32 Debug AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_AMD64"
+# PROP BASE Intermediate_Dir "Debug_AMD64/excxx_access"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_AMD64"
+# PROP Intermediate_Dir "Debug_AMD64/excxx_access"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+
+!ELSEIF "$(CFG)" == "excxx_access - Win32 Release AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_AMD64"
+# PROP BASE Intermediate_Dir "Release_AMD64/excxx_access"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_AMD64"
+# PROP Intermediate_Dir "Release_AMD64/excxx_access"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+
+!ELSEIF "$(CFG)" == "excxx_access - Win32 Debug IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_IA64"
+# PROP BASE Intermediate_Dir "Debug_IA64/excxx_access"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_IA64"
+# PROP Intermediate_Dir "Debug_IA64/excxx_access"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+
+!ELSEIF "$(CFG)" == "excxx_access - Win32 Release IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_IA64"
+# PROP BASE Intermediate_Dir "Release_IA64/excxx_access"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_IA64"
+# PROP Intermediate_Dir "Release_IA64/excxx_access"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
!ENDIF
# Begin Target
-# Name "excxx_access - Win32 Release"
-# Name "excxx_access - Win32 Debug"
-# Name "excxx_access - Win32 ASCII Debug"
-# Name "excxx_access - Win32 ASCII Release"
+# Name "excxx_access - Win32 Release x86"
+# Name "excxx_access - Win32 Debug x86"
+# Name "excxx_access - Win32 ASCII Debug x86"
+# Name "excxx_access - Win32 ASCII Release x86"
# Name "excxx_access - x64 Debug AMD64"
# Name "excxx_access - x64 Release AMD64"
# Name "excxx_access - x64 Debug IA64"
# Name "excxx_access - x64 Release IA64"
+# Name "excxx_access - Win32 Debug AMD64"
+# Name "excxx_access - Win32 Release AMD64"
+# Name "excxx_access - Win32 Debug IA64"
+# Name "excxx_access - Win32 Release IA64"
# Begin Source File
SOURCE=..\examples_cxx\AccessExample.cpp
diff --git a/db/build_windows/excxx_btrec.dsp b/db/build_windows/excxx_btrec.dsp
index 568a8be64..2c61142f8 100644
--- a/db/build_windows/excxx_btrec.dsp
+++ b/db/build_windows/excxx_btrec.dsp
@@ -4,7 +4,7 @@
# TARGTYPE "Win32 (x86) Console Application" 0x0103
-CFG=excxx_btrec - Win32 Debug
+CFG=excxx_btrec - Win32 Debug x86
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
@@ -13,18 +13,22 @@ CFG=excxx_btrec - Win32 Debug
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "excxx_btrec.mak" CFG="excxx_btrec - Win32 Debug"
+!MESSAGE NMAKE /f "excxx_btrec.mak" CFG="excxx_btrec - Win32 Debug x86"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "excxx_btrec - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_btrec - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_btrec - Win32 ASCII Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_btrec - Win32 ASCII Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_btrec - Win32 Release x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_btrec - Win32 Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_btrec - Win32 ASCII Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_btrec - Win32 ASCII Release x86" (based on "Win32 (x86) Console Application")
!MESSAGE "excxx_btrec - x64 Debug AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "excxx_btrec - x64 Release AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "excxx_btrec - x64 Debug IA64" (based on "Win32 (x86) Console Application")
!MESSAGE "excxx_btrec - x64 Release IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_btrec - Win32 Debug AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_btrec - Win32 Release AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_btrec - Win32 Debug IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_btrec - Win32 Release IA64" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
@@ -34,7 +38,7 @@ CFG=excxx_btrec - Win32 Debug
CPP=cl.exe
RSC=rc.exe
-!IF "$(CFG)" == "excxx_btrec - Win32 Release"
+!IF "$(CFG)" == "excxx_btrec - Win32 Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -56,9 +60,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
-!ELSEIF "$(CFG)" == "excxx_btrec - Win32 Debug"
+!ELSEIF "$(CFG)" == "excxx_btrec - Win32 Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -80,9 +84,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
-!ELSEIF "$(CFG)" == "excxx_btrec - Win32 ASCII Debug"
+!ELSEIF "$(CFG)" == "excxx_btrec - Win32 ASCII Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -104,10 +108,10 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
+# ADD BASE LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
-!ELSEIF "$(CFG)" == "excxx_btrec - Win32 ASCII Release"
+!ELSEIF "$(CFG)" == "excxx_btrec - Win32 ASCII Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -129,8 +133,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
+# ADD BASE LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
!ELSEIF "$(CFG)" == "excxx_btrec - x64 Debug AMD64"
@@ -154,8 +158,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
!ELSEIF "$(CFG)" == "excxx_btrec - x64 Release AMD64"
@@ -179,8 +183,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
!ELSEIF "$(CFG)" == "excxx_btrec - x64 Debug IA64"
@@ -204,8 +208,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
!ELSEIF "$(CFG)" == "excxx_btrec - x64 Release IA64"
@@ -229,21 +233,125 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+
+!ELSEIF "$(CFG)" == "excxx_btrec - Win32 Debug AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_AMD64"
+# PROP BASE Intermediate_Dir "Debug_AMD64/excxx_btrec"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_AMD64"
+# PROP Intermediate_Dir "Debug_AMD64/excxx_btrec"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+
+!ELSEIF "$(CFG)" == "excxx_btrec - Win32 Release AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_AMD64"
+# PROP BASE Intermediate_Dir "Release_AMD64/excxx_btrec"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_AMD64"
+# PROP Intermediate_Dir "Release_AMD64/excxx_btrec"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+
+!ELSEIF "$(CFG)" == "excxx_btrec - Win32 Debug IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_IA64"
+# PROP BASE Intermediate_Dir "Debug_IA64/excxx_btrec"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_IA64"
+# PROP Intermediate_Dir "Debug_IA64/excxx_btrec"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+
+!ELSEIF "$(CFG)" == "excxx_btrec - Win32 Release IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_IA64"
+# PROP BASE Intermediate_Dir "Release_IA64/excxx_btrec"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_IA64"
+# PROP Intermediate_Dir "Release_IA64/excxx_btrec"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
!ENDIF
# Begin Target
-# Name "excxx_btrec - Win32 Release"
-# Name "excxx_btrec - Win32 Debug"
-# Name "excxx_btrec - Win32 ASCII Debug"
-# Name "excxx_btrec - Win32 ASCII Release"
+# Name "excxx_btrec - Win32 Release x86"
+# Name "excxx_btrec - Win32 Debug x86"
+# Name "excxx_btrec - Win32 ASCII Debug x86"
+# Name "excxx_btrec - Win32 ASCII Release x86"
# Name "excxx_btrec - x64 Debug AMD64"
# Name "excxx_btrec - x64 Release AMD64"
# Name "excxx_btrec - x64 Debug IA64"
# Name "excxx_btrec - x64 Release IA64"
+# Name "excxx_btrec - Win32 Debug AMD64"
+# Name "excxx_btrec - Win32 Release AMD64"
+# Name "excxx_btrec - Win32 Debug IA64"
+# Name "excxx_btrec - Win32 Release IA64"
# Begin Source File
SOURCE=..\examples_cxx\BtRecExample.cpp
diff --git a/db/build_windows/excxx_env.dsp b/db/build_windows/excxx_env.dsp
index 75ed4f88c..a1c1e8a77 100644
--- a/db/build_windows/excxx_env.dsp
+++ b/db/build_windows/excxx_env.dsp
@@ -4,7 +4,7 @@
# TARGTYPE "Win32 (x86) Console Application" 0x0103
-CFG=excxx_env - Win32 Debug
+CFG=excxx_env - Win32 Debug x86
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
@@ -13,18 +13,22 @@ CFG=excxx_env - Win32 Debug
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "excxx_env.mak" CFG="excxx_env - Win32 Debug"
+!MESSAGE NMAKE /f "excxx_env.mak" CFG="excxx_env - Win32 Debug x86"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "excxx_env - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_env - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_env - Win32 ASCII Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_env - Win32 ASCII Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_env - Win32 Release x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_env - Win32 Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_env - Win32 ASCII Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_env - Win32 ASCII Release x86" (based on "Win32 (x86) Console Application")
!MESSAGE "excxx_env - x64 Debug AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "excxx_env - x64 Release AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "excxx_env - x64 Debug IA64" (based on "Win32 (x86) Console Application")
!MESSAGE "excxx_env - x64 Release IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_env - Win32 Debug AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_env - Win32 Release AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_env - Win32 Debug IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_env - Win32 Release IA64" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
@@ -34,7 +38,7 @@ CFG=excxx_env - Win32 Debug
CPP=cl.exe
RSC=rc.exe
-!IF "$(CFG)" == "excxx_env - Win32 Release"
+!IF "$(CFG)" == "excxx_env - Win32 Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -56,9 +60,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
-!ELSEIF "$(CFG)" == "excxx_env - Win32 Debug"
+!ELSEIF "$(CFG)" == "excxx_env - Win32 Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -80,9 +84,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
-!ELSEIF "$(CFG)" == "excxx_env - Win32 ASCII Debug"
+!ELSEIF "$(CFG)" == "excxx_env - Win32 ASCII Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -104,10 +108,10 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
+# ADD BASE LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
-!ELSEIF "$(CFG)" == "excxx_env - Win32 ASCII Release"
+!ELSEIF "$(CFG)" == "excxx_env - Win32 ASCII Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -129,8 +133,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
+# ADD BASE LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
!ELSEIF "$(CFG)" == "excxx_env - x64 Debug AMD64"
@@ -154,8 +158,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
!ELSEIF "$(CFG)" == "excxx_env - x64 Release AMD64"
@@ -179,8 +183,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
!ELSEIF "$(CFG)" == "excxx_env - x64 Debug IA64"
@@ -204,8 +208,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
!ELSEIF "$(CFG)" == "excxx_env - x64 Release IA64"
@@ -229,21 +233,125 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+
+!ELSEIF "$(CFG)" == "excxx_env - Win32 Debug AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_AMD64"
+# PROP BASE Intermediate_Dir "Debug_AMD64/excxx_env"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_AMD64"
+# PROP Intermediate_Dir "Debug_AMD64/excxx_env"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+
+!ELSEIF "$(CFG)" == "excxx_env - Win32 Release AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_AMD64"
+# PROP BASE Intermediate_Dir "Release_AMD64/excxx_env"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_AMD64"
+# PROP Intermediate_Dir "Release_AMD64/excxx_env"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+
+!ELSEIF "$(CFG)" == "excxx_env - Win32 Debug IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_IA64"
+# PROP BASE Intermediate_Dir "Debug_IA64/excxx_env"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_IA64"
+# PROP Intermediate_Dir "Debug_IA64/excxx_env"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+
+!ELSEIF "$(CFG)" == "excxx_env - Win32 Release IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_IA64"
+# PROP BASE Intermediate_Dir "Release_IA64/excxx_env"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_IA64"
+# PROP Intermediate_Dir "Release_IA64/excxx_env"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
!ENDIF
# Begin Target
-# Name "excxx_env - Win32 Release"
-# Name "excxx_env - Win32 Debug"
-# Name "excxx_env - Win32 ASCII Debug"
-# Name "excxx_env - Win32 ASCII Release"
+# Name "excxx_env - Win32 Release x86"
+# Name "excxx_env - Win32 Debug x86"
+# Name "excxx_env - Win32 ASCII Debug x86"
+# Name "excxx_env - Win32 ASCII Release x86"
# Name "excxx_env - x64 Debug AMD64"
# Name "excxx_env - x64 Release AMD64"
# Name "excxx_env - x64 Debug IA64"
# Name "excxx_env - x64 Release IA64"
+# Name "excxx_env - Win32 Debug AMD64"
+# Name "excxx_env - Win32 Release AMD64"
+# Name "excxx_env - Win32 Debug IA64"
+# Name "excxx_env - Win32 Release IA64"
# Begin Source File
SOURCE=..\examples_cxx\EnvExample.cpp
diff --git a/db/build_windows/excxx_example_database_load.dsp b/db/build_windows/excxx_example_database_load.dsp
index a25bf56ae..54050e6f3 100644
--- a/db/build_windows/excxx_example_database_load.dsp
+++ b/db/build_windows/excxx_example_database_load.dsp
@@ -4,7 +4,7 @@
# TARGTYPE "Win32 (x86) Console Application" 0x0103
-CFG=excxx_example_database_load - Win32 Debug
+CFG=excxx_example_database_load - Win32 Debug x86
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
@@ -13,18 +13,22 @@ CFG=excxx_example_database_load - Win32 Debug
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "excxx_example_database_load.mak" CFG="excxx_example_database_load - Win32 Debug"
+!MESSAGE NMAKE /f "excxx_example_database_load.mak" CFG="excxx_example_database_load - Win32 Debug x86"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "excxx_example_database_load - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_example_database_load - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_example_database_load - Win32 ASCII Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_example_database_load - Win32 ASCII Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_example_database_load - Win32 Release x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_example_database_load - Win32 Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_example_database_load - Win32 ASCII Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_example_database_load - Win32 ASCII Release x86" (based on "Win32 (x86) Console Application")
!MESSAGE "excxx_example_database_load - x64 Debug AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "excxx_example_database_load - x64 Release AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "excxx_example_database_load - x64 Debug IA64" (based on "Win32 (x86) Console Application")
!MESSAGE "excxx_example_database_load - x64 Release IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_example_database_load - Win32 Debug AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_example_database_load - Win32 Release AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_example_database_load - Win32 Debug IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_example_database_load - Win32 Release IA64" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
@@ -34,7 +38,7 @@ CFG=excxx_example_database_load - Win32 Debug
CPP=cl.exe
RSC=rc.exe
-!IF "$(CFG)" == "excxx_example_database_load - Win32 Release"
+!IF "$(CFG)" == "excxx_example_database_load - Win32 Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -56,9 +60,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
-!ELSEIF "$(CFG)" == "excxx_example_database_load - Win32 Debug"
+!ELSEIF "$(CFG)" == "excxx_example_database_load - Win32 Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -80,9 +84,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
-!ELSEIF "$(CFG)" == "excxx_example_database_load - Win32 ASCII Debug"
+!ELSEIF "$(CFG)" == "excxx_example_database_load - Win32 ASCII Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -104,10 +108,10 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
+# ADD BASE LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
-!ELSEIF "$(CFG)" == "excxx_example_database_load - Win32 ASCII Release"
+!ELSEIF "$(CFG)" == "excxx_example_database_load - Win32 ASCII Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -129,8 +133,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
+# ADD BASE LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
!ELSEIF "$(CFG)" == "excxx_example_database_load - x64 Debug AMD64"
@@ -154,8 +158,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
!ELSEIF "$(CFG)" == "excxx_example_database_load - x64 Release AMD64"
@@ -179,8 +183,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
!ELSEIF "$(CFG)" == "excxx_example_database_load - x64 Debug IA64"
@@ -204,8 +208,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
!ELSEIF "$(CFG)" == "excxx_example_database_load - x64 Release IA64"
@@ -229,21 +233,125 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+
+!ELSEIF "$(CFG)" == "excxx_example_database_load - Win32 Debug AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_AMD64"
+# PROP BASE Intermediate_Dir "Debug_AMD64/excxx_example_database_load"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_AMD64"
+# PROP Intermediate_Dir "Debug_AMD64/excxx_example_database_load"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+
+!ELSEIF "$(CFG)" == "excxx_example_database_load - Win32 Release AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_AMD64"
+# PROP BASE Intermediate_Dir "Release_AMD64/excxx_example_database_load"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_AMD64"
+# PROP Intermediate_Dir "Release_AMD64/excxx_example_database_load"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+
+!ELSEIF "$(CFG)" == "excxx_example_database_load - Win32 Debug IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_IA64"
+# PROP BASE Intermediate_Dir "Debug_IA64/excxx_example_database_load"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_IA64"
+# PROP Intermediate_Dir "Debug_IA64/excxx_example_database_load"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+
+!ELSEIF "$(CFG)" == "excxx_example_database_load - Win32 Release IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_IA64"
+# PROP BASE Intermediate_Dir "Release_IA64/excxx_example_database_load"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_IA64"
+# PROP Intermediate_Dir "Release_IA64/excxx_example_database_load"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
!ENDIF
# Begin Target
-# Name "excxx_example_database_load - Win32 Release"
-# Name "excxx_example_database_load - Win32 Debug"
-# Name "excxx_example_database_load - Win32 ASCII Debug"
-# Name "excxx_example_database_load - Win32 ASCII Release"
+# Name "excxx_example_database_load - Win32 Release x86"
+# Name "excxx_example_database_load - Win32 Debug x86"
+# Name "excxx_example_database_load - Win32 ASCII Debug x86"
+# Name "excxx_example_database_load - Win32 ASCII Release x86"
# Name "excxx_example_database_load - x64 Debug AMD64"
# Name "excxx_example_database_load - x64 Release AMD64"
# Name "excxx_example_database_load - x64 Debug IA64"
# Name "excxx_example_database_load - x64 Release IA64"
+# Name "excxx_example_database_load - Win32 Debug AMD64"
+# Name "excxx_example_database_load - Win32 Release AMD64"
+# Name "excxx_example_database_load - Win32 Debug IA64"
+# Name "excxx_example_database_load - Win32 Release IA64"
# Begin Source File
SOURCE=..\examples_cxx\getting_started\MyDb.cpp
diff --git a/db/build_windows/excxx_example_database_read.dsp b/db/build_windows/excxx_example_database_read.dsp
index 804bf70c6..3aed5ea66 100644
--- a/db/build_windows/excxx_example_database_read.dsp
+++ b/db/build_windows/excxx_example_database_read.dsp
@@ -4,7 +4,7 @@
# TARGTYPE "Win32 (x86) Console Application" 0x0103
-CFG=excxx_example_database_read - Win32 Debug
+CFG=excxx_example_database_read - Win32 Debug x86
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
@@ -13,18 +13,22 @@ CFG=excxx_example_database_read - Win32 Debug
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "excxx_example_database_read.mak" CFG="excxx_example_database_read - Win32 Debug"
+!MESSAGE NMAKE /f "excxx_example_database_read.mak" CFG="excxx_example_database_read - Win32 Debug x86"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "excxx_example_database_read - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_example_database_read - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_example_database_read - Win32 ASCII Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_example_database_read - Win32 ASCII Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_example_database_read - Win32 Release x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_example_database_read - Win32 Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_example_database_read - Win32 ASCII Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_example_database_read - Win32 ASCII Release x86" (based on "Win32 (x86) Console Application")
!MESSAGE "excxx_example_database_read - x64 Debug AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "excxx_example_database_read - x64 Release AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "excxx_example_database_read - x64 Debug IA64" (based on "Win32 (x86) Console Application")
!MESSAGE "excxx_example_database_read - x64 Release IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_example_database_read - Win32 Debug AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_example_database_read - Win32 Release AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_example_database_read - Win32 Debug IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_example_database_read - Win32 Release IA64" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
@@ -34,7 +38,7 @@ CFG=excxx_example_database_read - Win32 Debug
CPP=cl.exe
RSC=rc.exe
-!IF "$(CFG)" == "excxx_example_database_read - Win32 Release"
+!IF "$(CFG)" == "excxx_example_database_read - Win32 Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -56,9 +60,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
-!ELSEIF "$(CFG)" == "excxx_example_database_read - Win32 Debug"
+!ELSEIF "$(CFG)" == "excxx_example_database_read - Win32 Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -80,9 +84,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
-!ELSEIF "$(CFG)" == "excxx_example_database_read - Win32 ASCII Debug"
+!ELSEIF "$(CFG)" == "excxx_example_database_read - Win32 ASCII Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -104,10 +108,10 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
+# ADD BASE LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
-!ELSEIF "$(CFG)" == "excxx_example_database_read - Win32 ASCII Release"
+!ELSEIF "$(CFG)" == "excxx_example_database_read - Win32 ASCII Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -129,8 +133,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
+# ADD BASE LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
!ELSEIF "$(CFG)" == "excxx_example_database_read - x64 Debug AMD64"
@@ -154,8 +158,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
!ELSEIF "$(CFG)" == "excxx_example_database_read - x64 Release AMD64"
@@ -179,8 +183,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
!ELSEIF "$(CFG)" == "excxx_example_database_read - x64 Debug IA64"
@@ -204,8 +208,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
!ELSEIF "$(CFG)" == "excxx_example_database_read - x64 Release IA64"
@@ -229,21 +233,125 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+
+!ELSEIF "$(CFG)" == "excxx_example_database_read - Win32 Debug AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_AMD64"
+# PROP BASE Intermediate_Dir "Debug_AMD64/excxx_example_database_read"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_AMD64"
+# PROP Intermediate_Dir "Debug_AMD64/excxx_example_database_read"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+
+!ELSEIF "$(CFG)" == "excxx_example_database_read - Win32 Release AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_AMD64"
+# PROP BASE Intermediate_Dir "Release_AMD64/excxx_example_database_read"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_AMD64"
+# PROP Intermediate_Dir "Release_AMD64/excxx_example_database_read"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+
+!ELSEIF "$(CFG)" == "excxx_example_database_read - Win32 Debug IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_IA64"
+# PROP BASE Intermediate_Dir "Debug_IA64/excxx_example_database_read"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_IA64"
+# PROP Intermediate_Dir "Debug_IA64/excxx_example_database_read"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+
+!ELSEIF "$(CFG)" == "excxx_example_database_read - Win32 Release IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_IA64"
+# PROP BASE Intermediate_Dir "Release_IA64/excxx_example_database_read"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_IA64"
+# PROP Intermediate_Dir "Release_IA64/excxx_example_database_read"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
!ENDIF
# Begin Target
-# Name "excxx_example_database_read - Win32 Release"
-# Name "excxx_example_database_read - Win32 Debug"
-# Name "excxx_example_database_read - Win32 ASCII Debug"
-# Name "excxx_example_database_read - Win32 ASCII Release"
+# Name "excxx_example_database_read - Win32 Release x86"
+# Name "excxx_example_database_read - Win32 Debug x86"
+# Name "excxx_example_database_read - Win32 ASCII Debug x86"
+# Name "excxx_example_database_read - Win32 ASCII Release x86"
# Name "excxx_example_database_read - x64 Debug AMD64"
# Name "excxx_example_database_read - x64 Release AMD64"
# Name "excxx_example_database_read - x64 Debug IA64"
# Name "excxx_example_database_read - x64 Release IA64"
+# Name "excxx_example_database_read - Win32 Debug AMD64"
+# Name "excxx_example_database_read - Win32 Release AMD64"
+# Name "excxx_example_database_read - Win32 Debug IA64"
+# Name "excxx_example_database_read - Win32 Release IA64"
# Begin Source File
SOURCE=..\examples_cxx\getting_started\MyDb.cpp
diff --git a/db/build_windows/excxx_lock.dsp b/db/build_windows/excxx_lock.dsp
index 51845a1dc..378d5de86 100644
--- a/db/build_windows/excxx_lock.dsp
+++ b/db/build_windows/excxx_lock.dsp
@@ -4,7 +4,7 @@
# TARGTYPE "Win32 (x86) Console Application" 0x0103
-CFG=excxx_lock - Win32 Debug
+CFG=excxx_lock - Win32 Debug x86
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
@@ -13,18 +13,22 @@ CFG=excxx_lock - Win32 Debug
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "excxx_lock.mak" CFG="excxx_lock - Win32 Debug"
+!MESSAGE NMAKE /f "excxx_lock.mak" CFG="excxx_lock - Win32 Debug x86"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "excxx_lock - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_lock - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_lock - Win32 ASCII Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_lock - Win32 ASCII Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_lock - Win32 Release x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_lock - Win32 Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_lock - Win32 ASCII Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_lock - Win32 ASCII Release x86" (based on "Win32 (x86) Console Application")
!MESSAGE "excxx_lock - x64 Debug AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "excxx_lock - x64 Release AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "excxx_lock - x64 Debug IA64" (based on "Win32 (x86) Console Application")
!MESSAGE "excxx_lock - x64 Release IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_lock - Win32 Debug AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_lock - Win32 Release AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_lock - Win32 Debug IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_lock - Win32 Release IA64" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
@@ -34,7 +38,7 @@ CFG=excxx_lock - Win32 Debug
CPP=cl.exe
RSC=rc.exe
-!IF "$(CFG)" == "excxx_lock - Win32 Release"
+!IF "$(CFG)" == "excxx_lock - Win32 Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -56,9 +60,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
-!ELSEIF "$(CFG)" == "excxx_lock - Win32 Debug"
+!ELSEIF "$(CFG)" == "excxx_lock - Win32 Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -80,9 +84,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
-!ELSEIF "$(CFG)" == "excxx_lock - Win32 ASCII Debug"
+!ELSEIF "$(CFG)" == "excxx_lock - Win32 ASCII Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -104,10 +108,10 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
+# ADD BASE LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
-!ELSEIF "$(CFG)" == "excxx_lock - Win32 ASCII Release"
+!ELSEIF "$(CFG)" == "excxx_lock - Win32 ASCII Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -129,8 +133,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
+# ADD BASE LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
!ELSEIF "$(CFG)" == "excxx_lock - x64 Debug AMD64"
@@ -154,8 +158,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
!ELSEIF "$(CFG)" == "excxx_lock - x64 Release AMD64"
@@ -179,8 +183,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
!ELSEIF "$(CFG)" == "excxx_lock - x64 Debug IA64"
@@ -204,8 +208,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
!ELSEIF "$(CFG)" == "excxx_lock - x64 Release IA64"
@@ -229,21 +233,125 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+
+!ELSEIF "$(CFG)" == "excxx_lock - Win32 Debug AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_AMD64"
+# PROP BASE Intermediate_Dir "Debug_AMD64/excxx_lock"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_AMD64"
+# PROP Intermediate_Dir "Debug_AMD64/excxx_lock"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+
+!ELSEIF "$(CFG)" == "excxx_lock - Win32 Release AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_AMD64"
+# PROP BASE Intermediate_Dir "Release_AMD64/excxx_lock"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_AMD64"
+# PROP Intermediate_Dir "Release_AMD64/excxx_lock"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+
+!ELSEIF "$(CFG)" == "excxx_lock - Win32 Debug IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_IA64"
+# PROP BASE Intermediate_Dir "Debug_IA64/excxx_lock"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_IA64"
+# PROP Intermediate_Dir "Debug_IA64/excxx_lock"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+
+!ELSEIF "$(CFG)" == "excxx_lock - Win32 Release IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_IA64"
+# PROP BASE Intermediate_Dir "Release_IA64/excxx_lock"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_IA64"
+# PROP Intermediate_Dir "Release_IA64/excxx_lock"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
!ENDIF
# Begin Target
-# Name "excxx_lock - Win32 Release"
-# Name "excxx_lock - Win32 Debug"
-# Name "excxx_lock - Win32 ASCII Debug"
-# Name "excxx_lock - Win32 ASCII Release"
+# Name "excxx_lock - Win32 Release x86"
+# Name "excxx_lock - Win32 Debug x86"
+# Name "excxx_lock - Win32 ASCII Debug x86"
+# Name "excxx_lock - Win32 ASCII Release x86"
# Name "excxx_lock - x64 Debug AMD64"
# Name "excxx_lock - x64 Release AMD64"
# Name "excxx_lock - x64 Debug IA64"
# Name "excxx_lock - x64 Release IA64"
+# Name "excxx_lock - Win32 Debug AMD64"
+# Name "excxx_lock - Win32 Release AMD64"
+# Name "excxx_lock - Win32 Debug IA64"
+# Name "excxx_lock - Win32 Release IA64"
# Begin Source File
SOURCE=..\examples_cxx\LockExample.cpp
diff --git a/db/build_windows/excxx_mpool.dsp b/db/build_windows/excxx_mpool.dsp
index 140d56a4a..c8545f2e3 100644
--- a/db/build_windows/excxx_mpool.dsp
+++ b/db/build_windows/excxx_mpool.dsp
@@ -4,7 +4,7 @@
# TARGTYPE "Win32 (x86) Console Application" 0x0103
-CFG=excxx_mpool - Win32 Debug
+CFG=excxx_mpool - Win32 Debug x86
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
@@ -13,18 +13,22 @@ CFG=excxx_mpool - Win32 Debug
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "excxx_mpool.mak" CFG="excxx_mpool - Win32 Debug"
+!MESSAGE NMAKE /f "excxx_mpool.mak" CFG="excxx_mpool - Win32 Debug x86"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "excxx_mpool - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_mpool - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_mpool - Win32 ASCII Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_mpool - Win32 ASCII Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_mpool - Win32 Release x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_mpool - Win32 Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_mpool - Win32 ASCII Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_mpool - Win32 ASCII Release x86" (based on "Win32 (x86) Console Application")
!MESSAGE "excxx_mpool - x64 Debug AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "excxx_mpool - x64 Release AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "excxx_mpool - x64 Debug IA64" (based on "Win32 (x86) Console Application")
!MESSAGE "excxx_mpool - x64 Release IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_mpool - Win32 Debug AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_mpool - Win32 Release AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_mpool - Win32 Debug IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_mpool - Win32 Release IA64" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
@@ -34,7 +38,7 @@ CFG=excxx_mpool - Win32 Debug
CPP=cl.exe
RSC=rc.exe
-!IF "$(CFG)" == "excxx_mpool - Win32 Release"
+!IF "$(CFG)" == "excxx_mpool - Win32 Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -56,9 +60,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
-!ELSEIF "$(CFG)" == "excxx_mpool - Win32 Debug"
+!ELSEIF "$(CFG)" == "excxx_mpool - Win32 Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -80,9 +84,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
-!ELSEIF "$(CFG)" == "excxx_mpool - Win32 ASCII Debug"
+!ELSEIF "$(CFG)" == "excxx_mpool - Win32 ASCII Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -104,10 +108,10 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
+# ADD BASE LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
-!ELSEIF "$(CFG)" == "excxx_mpool - Win32 ASCII Release"
+!ELSEIF "$(CFG)" == "excxx_mpool - Win32 ASCII Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -129,8 +133,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
+# ADD BASE LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
!ELSEIF "$(CFG)" == "excxx_mpool - x64 Debug AMD64"
@@ -154,8 +158,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
!ELSEIF "$(CFG)" == "excxx_mpool - x64 Release AMD64"
@@ -179,8 +183,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
!ELSEIF "$(CFG)" == "excxx_mpool - x64 Debug IA64"
@@ -204,8 +208,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
!ELSEIF "$(CFG)" == "excxx_mpool - x64 Release IA64"
@@ -229,21 +233,125 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+
+!ELSEIF "$(CFG)" == "excxx_mpool - Win32 Debug AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_AMD64"
+# PROP BASE Intermediate_Dir "Debug_AMD64/excxx_mpool"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_AMD64"
+# PROP Intermediate_Dir "Debug_AMD64/excxx_mpool"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+
+!ELSEIF "$(CFG)" == "excxx_mpool - Win32 Release AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_AMD64"
+# PROP BASE Intermediate_Dir "Release_AMD64/excxx_mpool"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_AMD64"
+# PROP Intermediate_Dir "Release_AMD64/excxx_mpool"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+
+!ELSEIF "$(CFG)" == "excxx_mpool - Win32 Debug IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_IA64"
+# PROP BASE Intermediate_Dir "Debug_IA64/excxx_mpool"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_IA64"
+# PROP Intermediate_Dir "Debug_IA64/excxx_mpool"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+
+!ELSEIF "$(CFG)" == "excxx_mpool - Win32 Release IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_IA64"
+# PROP BASE Intermediate_Dir "Release_IA64/excxx_mpool"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_IA64"
+# PROP Intermediate_Dir "Release_IA64/excxx_mpool"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
!ENDIF
# Begin Target
-# Name "excxx_mpool - Win32 Release"
-# Name "excxx_mpool - Win32 Debug"
-# Name "excxx_mpool - Win32 ASCII Debug"
-# Name "excxx_mpool - Win32 ASCII Release"
+# Name "excxx_mpool - Win32 Release x86"
+# Name "excxx_mpool - Win32 Debug x86"
+# Name "excxx_mpool - Win32 ASCII Debug x86"
+# Name "excxx_mpool - Win32 ASCII Release x86"
# Name "excxx_mpool - x64 Debug AMD64"
# Name "excxx_mpool - x64 Release AMD64"
# Name "excxx_mpool - x64 Debug IA64"
# Name "excxx_mpool - x64 Release IA64"
+# Name "excxx_mpool - Win32 Debug AMD64"
+# Name "excxx_mpool - Win32 Release AMD64"
+# Name "excxx_mpool - Win32 Debug IA64"
+# Name "excxx_mpool - Win32 Release IA64"
# Begin Source File
SOURCE=..\examples_cxx\MpoolExample.cpp
diff --git a/db/build_windows/excxx_repquote.dsp b/db/build_windows/excxx_repquote.dsp
index 34b8a996a..bee67bacd 100644
--- a/db/build_windows/excxx_repquote.dsp
+++ b/db/build_windows/excxx_repquote.dsp
@@ -4,7 +4,7 @@
# TARGTYPE "Win32 (x86) Console Application" 0x0103
-CFG=excxx_repquote - Win32 Debug
+CFG=excxx_repquote - Win32 Debug x86
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
@@ -13,18 +13,22 @@ CFG=excxx_repquote - Win32 Debug
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "excxx_repquote.mak" CFG="excxx_repquote - Win32 Debug"
+!MESSAGE NMAKE /f "excxx_repquote.mak" CFG="excxx_repquote - Win32 Debug x86"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "excxx_repquote - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_repquote - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_repquote - Win32 ASCII Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_repquote - Win32 ASCII Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_repquote - Win32 Release x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_repquote - Win32 Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_repquote - Win32 ASCII Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_repquote - Win32 ASCII Release x86" (based on "Win32 (x86) Console Application")
!MESSAGE "excxx_repquote - x64 Debug AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "excxx_repquote - x64 Release AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "excxx_repquote - x64 Debug IA64" (based on "Win32 (x86) Console Application")
!MESSAGE "excxx_repquote - x64 Release IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_repquote - Win32 Debug AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_repquote - Win32 Release AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_repquote - Win32 Debug IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_repquote - Win32 Release IA64" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
@@ -34,7 +38,7 @@ CFG=excxx_repquote - Win32 Debug
CPP=cl.exe
RSC=rc.exe
-!IF "$(CFG)" == "excxx_repquote - Win32 Release"
+!IF "$(CFG)" == "excxx_repquote - Win32 Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -56,9 +60,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
-!ELSEIF "$(CFG)" == "excxx_repquote - Win32 Debug"
+!ELSEIF "$(CFG)" == "excxx_repquote - Win32 Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -80,9 +84,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
-!ELSEIF "$(CFG)" == "excxx_repquote - Win32 ASCII Debug"
+!ELSEIF "$(CFG)" == "excxx_repquote - Win32 ASCII Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -104,10 +108,10 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
+# ADD BASE LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
-!ELSEIF "$(CFG)" == "excxx_repquote - Win32 ASCII Release"
+!ELSEIF "$(CFG)" == "excxx_repquote - Win32 ASCII Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -129,8 +133,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
+# ADD BASE LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
!ELSEIF "$(CFG)" == "excxx_repquote - x64 Debug AMD64"
@@ -154,8 +158,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
!ELSEIF "$(CFG)" == "excxx_repquote - x64 Release AMD64"
@@ -179,8 +183,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
!ELSEIF "$(CFG)" == "excxx_repquote - x64 Debug IA64"
@@ -204,8 +208,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
!ELSEIF "$(CFG)" == "excxx_repquote - x64 Release IA64"
@@ -229,21 +233,125 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+
+!ELSEIF "$(CFG)" == "excxx_repquote - Win32 Debug AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_AMD64"
+# PROP BASE Intermediate_Dir "Debug_AMD64/excxx_repquote"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_AMD64"
+# PROP Intermediate_Dir "Debug_AMD64/excxx_repquote"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+
+!ELSEIF "$(CFG)" == "excxx_repquote - Win32 Release AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_AMD64"
+# PROP BASE Intermediate_Dir "Release_AMD64/excxx_repquote"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_AMD64"
+# PROP Intermediate_Dir "Release_AMD64/excxx_repquote"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+
+!ELSEIF "$(CFG)" == "excxx_repquote - Win32 Debug IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_IA64"
+# PROP BASE Intermediate_Dir "Debug_IA64/excxx_repquote"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_IA64"
+# PROP Intermediate_Dir "Debug_IA64/excxx_repquote"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+
+!ELSEIF "$(CFG)" == "excxx_repquote - Win32 Release IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_IA64"
+# PROP BASE Intermediate_Dir "Release_IA64/excxx_repquote"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_IA64"
+# PROP Intermediate_Dir "Release_IA64/excxx_repquote"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
!ENDIF
# Begin Target
-# Name "excxx_repquote - Win32 Release"
-# Name "excxx_repquote - Win32 Debug"
-# Name "excxx_repquote - Win32 ASCII Debug"
-# Name "excxx_repquote - Win32 ASCII Release"
+# Name "excxx_repquote - Win32 Release x86"
+# Name "excxx_repquote - Win32 Debug x86"
+# Name "excxx_repquote - Win32 ASCII Debug x86"
+# Name "excxx_repquote - Win32 ASCII Release x86"
# Name "excxx_repquote - x64 Debug AMD64"
# Name "excxx_repquote - x64 Release AMD64"
# Name "excxx_repquote - x64 Debug IA64"
# Name "excxx_repquote - x64 Release IA64"
+# Name "excxx_repquote - Win32 Debug AMD64"
+# Name "excxx_repquote - Win32 Release AMD64"
+# Name "excxx_repquote - Win32 Debug IA64"
+# Name "excxx_repquote - Win32 Release IA64"
# Begin Source File
SOURCE=..\examples_cxx\excxx_repquote\RepConfigInfo.cpp
diff --git a/db/build_windows/excxx_sequence.dsp b/db/build_windows/excxx_sequence.dsp
index be5b1f002..178a9aa68 100644
--- a/db/build_windows/excxx_sequence.dsp
+++ b/db/build_windows/excxx_sequence.dsp
@@ -4,7 +4,7 @@
# TARGTYPE "Win32 (x86) Console Application" 0x0103
-CFG=excxx_sequence - Win32 Debug
+CFG=excxx_sequence - Win32 Debug x86
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
@@ -13,18 +13,22 @@ CFG=excxx_sequence - Win32 Debug
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "excxx_sequence.mak" CFG="excxx_sequence - Win32 Debug"
+!MESSAGE NMAKE /f "excxx_sequence.mak" CFG="excxx_sequence - Win32 Debug x86"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "excxx_sequence - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_sequence - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_sequence - Win32 ASCII Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_sequence - Win32 ASCII Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_sequence - Win32 Release x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_sequence - Win32 Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_sequence - Win32 ASCII Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_sequence - Win32 ASCII Release x86" (based on "Win32 (x86) Console Application")
!MESSAGE "excxx_sequence - x64 Debug AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "excxx_sequence - x64 Release AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "excxx_sequence - x64 Debug IA64" (based on "Win32 (x86) Console Application")
!MESSAGE "excxx_sequence - x64 Release IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_sequence - Win32 Debug AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_sequence - Win32 Release AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_sequence - Win32 Debug IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_sequence - Win32 Release IA64" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
@@ -34,7 +38,7 @@ CFG=excxx_sequence - Win32 Debug
CPP=cl.exe
RSC=rc.exe
-!IF "$(CFG)" == "excxx_sequence - Win32 Release"
+!IF "$(CFG)" == "excxx_sequence - Win32 Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -56,9 +60,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
-!ELSEIF "$(CFG)" == "excxx_sequence - Win32 Debug"
+!ELSEIF "$(CFG)" == "excxx_sequence - Win32 Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -80,9 +84,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
-!ELSEIF "$(CFG)" == "excxx_sequence - Win32 ASCII Debug"
+!ELSEIF "$(CFG)" == "excxx_sequence - Win32 ASCII Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -104,10 +108,10 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
+# ADD BASE LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
-!ELSEIF "$(CFG)" == "excxx_sequence - Win32 ASCII Release"
+!ELSEIF "$(CFG)" == "excxx_sequence - Win32 ASCII Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -129,8 +133,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
+# ADD BASE LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
!ELSEIF "$(CFG)" == "excxx_sequence - x64 Debug AMD64"
@@ -154,8 +158,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
!ELSEIF "$(CFG)" == "excxx_sequence - x64 Release AMD64"
@@ -179,8 +183,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
!ELSEIF "$(CFG)" == "excxx_sequence - x64 Debug IA64"
@@ -204,8 +208,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
!ELSEIF "$(CFG)" == "excxx_sequence - x64 Release IA64"
@@ -229,21 +233,125 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+
+!ELSEIF "$(CFG)" == "excxx_sequence - Win32 Debug AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_AMD64"
+# PROP BASE Intermediate_Dir "Debug_AMD64/excxx_sequence"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_AMD64"
+# PROP Intermediate_Dir "Debug_AMD64/excxx_sequence"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+
+!ELSEIF "$(CFG)" == "excxx_sequence - Win32 Release AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_AMD64"
+# PROP BASE Intermediate_Dir "Release_AMD64/excxx_sequence"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_AMD64"
+# PROP Intermediate_Dir "Release_AMD64/excxx_sequence"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+
+!ELSEIF "$(CFG)" == "excxx_sequence - Win32 Debug IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_IA64"
+# PROP BASE Intermediate_Dir "Debug_IA64/excxx_sequence"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_IA64"
+# PROP Intermediate_Dir "Debug_IA64/excxx_sequence"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+
+!ELSEIF "$(CFG)" == "excxx_sequence - Win32 Release IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_IA64"
+# PROP BASE Intermediate_Dir "Release_IA64/excxx_sequence"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_IA64"
+# PROP Intermediate_Dir "Release_IA64/excxx_sequence"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
!ENDIF
# Begin Target
-# Name "excxx_sequence - Win32 Release"
-# Name "excxx_sequence - Win32 Debug"
-# Name "excxx_sequence - Win32 ASCII Debug"
-# Name "excxx_sequence - Win32 ASCII Release"
+# Name "excxx_sequence - Win32 Release x86"
+# Name "excxx_sequence - Win32 Debug x86"
+# Name "excxx_sequence - Win32 ASCII Debug x86"
+# Name "excxx_sequence - Win32 ASCII Release x86"
# Name "excxx_sequence - x64 Debug AMD64"
# Name "excxx_sequence - x64 Release AMD64"
# Name "excxx_sequence - x64 Debug IA64"
# Name "excxx_sequence - x64 Release IA64"
+# Name "excxx_sequence - Win32 Debug AMD64"
+# Name "excxx_sequence - Win32 Release AMD64"
+# Name "excxx_sequence - Win32 Debug IA64"
+# Name "excxx_sequence - Win32 Release IA64"
# Begin Source File
SOURCE=..\examples_cxx\SequenceExample.cpp
diff --git a/db/build_windows/excxx_tpcb.dsp b/db/build_windows/excxx_tpcb.dsp
index 26032d795..24246aff5 100644
--- a/db/build_windows/excxx_tpcb.dsp
+++ b/db/build_windows/excxx_tpcb.dsp
@@ -4,7 +4,7 @@
# TARGTYPE "Win32 (x86) Console Application" 0x0103
-CFG=excxx_tpcb - Win32 Debug
+CFG=excxx_tpcb - Win32 Debug x86
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
@@ -13,18 +13,22 @@ CFG=excxx_tpcb - Win32 Debug
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "excxx_tpcb.mak" CFG="excxx_tpcb - Win32 Debug"
+!MESSAGE NMAKE /f "excxx_tpcb.mak" CFG="excxx_tpcb - Win32 Debug x86"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "excxx_tpcb - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_tpcb - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_tpcb - Win32 ASCII Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_tpcb - Win32 ASCII Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_tpcb - Win32 Release x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_tpcb - Win32 Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_tpcb - Win32 ASCII Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_tpcb - Win32 ASCII Release x86" (based on "Win32 (x86) Console Application")
!MESSAGE "excxx_tpcb - x64 Debug AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "excxx_tpcb - x64 Release AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "excxx_tpcb - x64 Debug IA64" (based on "Win32 (x86) Console Application")
!MESSAGE "excxx_tpcb - x64 Release IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_tpcb - Win32 Debug AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_tpcb - Win32 Release AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_tpcb - Win32 Debug IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_tpcb - Win32 Release IA64" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
@@ -34,7 +38,7 @@ CFG=excxx_tpcb - Win32 Debug
CPP=cl.exe
RSC=rc.exe
-!IF "$(CFG)" == "excxx_tpcb - Win32 Release"
+!IF "$(CFG)" == "excxx_tpcb - Win32 Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -56,9 +60,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
-!ELSEIF "$(CFG)" == "excxx_tpcb - Win32 Debug"
+!ELSEIF "$(CFG)" == "excxx_tpcb - Win32 Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -80,9 +84,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
-!ELSEIF "$(CFG)" == "excxx_tpcb - Win32 ASCII Debug"
+!ELSEIF "$(CFG)" == "excxx_tpcb - Win32 ASCII Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -104,10 +108,10 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
+# ADD BASE LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
-!ELSEIF "$(CFG)" == "excxx_tpcb - Win32 ASCII Release"
+!ELSEIF "$(CFG)" == "excxx_tpcb - Win32 ASCII Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -129,8 +133,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
+# ADD BASE LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
!ELSEIF "$(CFG)" == "excxx_tpcb - x64 Debug AMD64"
@@ -154,8 +158,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
!ELSEIF "$(CFG)" == "excxx_tpcb - x64 Release AMD64"
@@ -179,8 +183,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
!ELSEIF "$(CFG)" == "excxx_tpcb - x64 Debug IA64"
@@ -204,8 +208,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
!ELSEIF "$(CFG)" == "excxx_tpcb - x64 Release IA64"
@@ -229,21 +233,125 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+
+!ELSEIF "$(CFG)" == "excxx_tpcb - Win32 Debug AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_AMD64"
+# PROP BASE Intermediate_Dir "Debug_AMD64/excxx_tpcb"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_AMD64"
+# PROP Intermediate_Dir "Debug_AMD64/excxx_tpcb"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+
+!ELSEIF "$(CFG)" == "excxx_tpcb - Win32 Release AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_AMD64"
+# PROP BASE Intermediate_Dir "Release_AMD64/excxx_tpcb"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_AMD64"
+# PROP Intermediate_Dir "Release_AMD64/excxx_tpcb"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+
+!ELSEIF "$(CFG)" == "excxx_tpcb - Win32 Debug IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_IA64"
+# PROP BASE Intermediate_Dir "Debug_IA64/excxx_tpcb"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_IA64"
+# PROP Intermediate_Dir "Debug_IA64/excxx_tpcb"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+
+!ELSEIF "$(CFG)" == "excxx_tpcb - Win32 Release IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_IA64"
+# PROP BASE Intermediate_Dir "Release_IA64/excxx_tpcb"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_IA64"
+# PROP Intermediate_Dir "Release_IA64/excxx_tpcb"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
!ENDIF
# Begin Target
-# Name "excxx_tpcb - Win32 Release"
-# Name "excxx_tpcb - Win32 Debug"
-# Name "excxx_tpcb - Win32 ASCII Debug"
-# Name "excxx_tpcb - Win32 ASCII Release"
+# Name "excxx_tpcb - Win32 Release x86"
+# Name "excxx_tpcb - Win32 Debug x86"
+# Name "excxx_tpcb - Win32 ASCII Debug x86"
+# Name "excxx_tpcb - Win32 ASCII Release x86"
# Name "excxx_tpcb - x64 Debug AMD64"
# Name "excxx_tpcb - x64 Release AMD64"
# Name "excxx_tpcb - x64 Debug IA64"
# Name "excxx_tpcb - x64 Release IA64"
+# Name "excxx_tpcb - Win32 Debug AMD64"
+# Name "excxx_tpcb - Win32 Release AMD64"
+# Name "excxx_tpcb - Win32 Debug IA64"
+# Name "excxx_tpcb - Win32 Release IA64"
# Begin Source File
SOURCE=..\examples_cxx\TpcbExample.cpp
diff --git a/db/build_windows/excxx_txnguide.dsp b/db/build_windows/excxx_txnguide.dsp
index d22ded8f2..b73d7bfa2 100644
--- a/db/build_windows/excxx_txnguide.dsp
+++ b/db/build_windows/excxx_txnguide.dsp
@@ -4,7 +4,7 @@
# TARGTYPE "Win32 (x86) Console Application" 0x0103
-CFG=excxx_txnguide - Win32 Debug
+CFG=excxx_txnguide - Win32 Debug x86
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
@@ -13,18 +13,22 @@ CFG=excxx_txnguide - Win32 Debug
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "excxx_txnguide.mak" CFG="excxx_txnguide - Win32 Debug"
+!MESSAGE NMAKE /f "excxx_txnguide.mak" CFG="excxx_txnguide - Win32 Debug x86"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "excxx_txnguide - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_txnguide - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_txnguide - Win32 ASCII Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_txnguide - Win32 ASCII Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_txnguide - Win32 Release x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_txnguide - Win32 Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_txnguide - Win32 ASCII Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_txnguide - Win32 ASCII Release x86" (based on "Win32 (x86) Console Application")
!MESSAGE "excxx_txnguide - x64 Debug AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "excxx_txnguide - x64 Release AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "excxx_txnguide - x64 Debug IA64" (based on "Win32 (x86) Console Application")
!MESSAGE "excxx_txnguide - x64 Release IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_txnguide - Win32 Debug AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_txnguide - Win32 Release AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_txnguide - Win32 Debug IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_txnguide - Win32 Release IA64" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
@@ -34,7 +38,7 @@ CFG=excxx_txnguide - Win32 Debug
CPP=cl.exe
RSC=rc.exe
-!IF "$(CFG)" == "excxx_txnguide - Win32 Release"
+!IF "$(CFG)" == "excxx_txnguide - Win32 Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -56,9 +60,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
-!ELSEIF "$(CFG)" == "excxx_txnguide - Win32 Debug"
+!ELSEIF "$(CFG)" == "excxx_txnguide - Win32 Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -80,9 +84,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
-!ELSEIF "$(CFG)" == "excxx_txnguide - Win32 ASCII Debug"
+!ELSEIF "$(CFG)" == "excxx_txnguide - Win32 ASCII Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -104,10 +108,10 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
+# ADD BASE LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
-!ELSEIF "$(CFG)" == "excxx_txnguide - Win32 ASCII Release"
+!ELSEIF "$(CFG)" == "excxx_txnguide - Win32 ASCII Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -129,8 +133,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
+# ADD BASE LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
!ELSEIF "$(CFG)" == "excxx_txnguide - x64 Debug AMD64"
@@ -154,8 +158,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
!ELSEIF "$(CFG)" == "excxx_txnguide - x64 Release AMD64"
@@ -179,8 +183,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
!ELSEIF "$(CFG)" == "excxx_txnguide - x64 Debug IA64"
@@ -204,8 +208,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
!ELSEIF "$(CFG)" == "excxx_txnguide - x64 Release IA64"
@@ -229,21 +233,125 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+
+!ELSEIF "$(CFG)" == "excxx_txnguide - Win32 Debug AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_AMD64"
+# PROP BASE Intermediate_Dir "Debug_AMD64/excxx_txnguide"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_AMD64"
+# PROP Intermediate_Dir "Debug_AMD64/excxx_txnguide"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+
+!ELSEIF "$(CFG)" == "excxx_txnguide - Win32 Release AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_AMD64"
+# PROP BASE Intermediate_Dir "Release_AMD64/excxx_txnguide"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_AMD64"
+# PROP Intermediate_Dir "Release_AMD64/excxx_txnguide"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+
+!ELSEIF "$(CFG)" == "excxx_txnguide - Win32 Debug IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_IA64"
+# PROP BASE Intermediate_Dir "Debug_IA64/excxx_txnguide"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_IA64"
+# PROP Intermediate_Dir "Debug_IA64/excxx_txnguide"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+
+!ELSEIF "$(CFG)" == "excxx_txnguide - Win32 Release IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_IA64"
+# PROP BASE Intermediate_Dir "Release_IA64/excxx_txnguide"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_IA64"
+# PROP Intermediate_Dir "Release_IA64/excxx_txnguide"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
!ENDIF
# Begin Target
-# Name "excxx_txnguide - Win32 Release"
-# Name "excxx_txnguide - Win32 Debug"
-# Name "excxx_txnguide - Win32 ASCII Debug"
-# Name "excxx_txnguide - Win32 ASCII Release"
+# Name "excxx_txnguide - Win32 Release x86"
+# Name "excxx_txnguide - Win32 Debug x86"
+# Name "excxx_txnguide - Win32 ASCII Debug x86"
+# Name "excxx_txnguide - Win32 ASCII Release x86"
# Name "excxx_txnguide - x64 Debug AMD64"
# Name "excxx_txnguide - x64 Release AMD64"
# Name "excxx_txnguide - x64 Debug IA64"
# Name "excxx_txnguide - x64 Release IA64"
+# Name "excxx_txnguide - Win32 Debug AMD64"
+# Name "excxx_txnguide - Win32 Release AMD64"
+# Name "excxx_txnguide - Win32 Debug IA64"
+# Name "excxx_txnguide - Win32 Release IA64"
# Begin Source File
SOURCE=..\examples_cxx\txn_guide\TxnGuide.cpp
diff --git a/db/build_windows/excxx_txnguide_inmem.dsp b/db/build_windows/excxx_txnguide_inmem.dsp
index c54be9030..801c1b3bd 100644
--- a/db/build_windows/excxx_txnguide_inmem.dsp
+++ b/db/build_windows/excxx_txnguide_inmem.dsp
@@ -4,7 +4,7 @@
# TARGTYPE "Win32 (x86) Console Application" 0x0103
-CFG=excxx_txnguide_inmem - Win32 Debug
+CFG=excxx_txnguide_inmem - Win32 Debug x86
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
@@ -13,18 +13,22 @@ CFG=excxx_txnguide_inmem - Win32 Debug
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "excxx_txnguide_inmem.mak" CFG="excxx_txnguide_inmem - Win32 Debug"
+!MESSAGE NMAKE /f "excxx_txnguide_inmem.mak" CFG="excxx_txnguide_inmem - Win32 Debug x86"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "excxx_txnguide_inmem - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_txnguide_inmem - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_txnguide_inmem - Win32 ASCII Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "excxx_txnguide_inmem - Win32 ASCII Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_txnguide_inmem - Win32 Release x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_txnguide_inmem - Win32 Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_txnguide_inmem - Win32 ASCII Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_txnguide_inmem - Win32 ASCII Release x86" (based on "Win32 (x86) Console Application")
!MESSAGE "excxx_txnguide_inmem - x64 Debug AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "excxx_txnguide_inmem - x64 Release AMD64" (based on "Win32 (x86) Console Application")
!MESSAGE "excxx_txnguide_inmem - x64 Debug IA64" (based on "Win32 (x86) Console Application")
!MESSAGE "excxx_txnguide_inmem - x64 Release IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_txnguide_inmem - Win32 Debug AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_txnguide_inmem - Win32 Release AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_txnguide_inmem - Win32 Debug IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "excxx_txnguide_inmem - Win32 Release IA64" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
@@ -34,7 +38,7 @@ CFG=excxx_txnguide_inmem - Win32 Debug
CPP=cl.exe
RSC=rc.exe
-!IF "$(CFG)" == "excxx_txnguide_inmem - Win32 Release"
+!IF "$(CFG)" == "excxx_txnguide_inmem - Win32 Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -56,9 +60,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
-!ELSEIF "$(CFG)" == "excxx_txnguide_inmem - Win32 Debug"
+!ELSEIF "$(CFG)" == "excxx_txnguide_inmem - Win32 Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -80,9 +84,9 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
-!ELSEIF "$(CFG)" == "excxx_txnguide_inmem - Win32 ASCII Debug"
+!ELSEIF "$(CFG)" == "excxx_txnguide_inmem - Win32 ASCII Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -104,10 +108,10 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
+# ADD BASE LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
-!ELSEIF "$(CFG)" == "excxx_txnguide_inmem - Win32 ASCII Release"
+!ELSEIF "$(CFG)" == "excxx_txnguide_inmem - Win32 ASCII Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -129,8 +133,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
+# ADD BASE LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
!ELSEIF "$(CFG)" == "excxx_txnguide_inmem - x64 Debug AMD64"
@@ -154,8 +158,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
!ELSEIF "$(CFG)" == "excxx_txnguide_inmem - x64 Release AMD64"
@@ -179,8 +183,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
!ELSEIF "$(CFG)" == "excxx_txnguide_inmem - x64 Debug IA64"
@@ -204,8 +208,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
!ELSEIF "$(CFG)" == "excxx_txnguide_inmem - x64 Release IA64"
@@ -229,21 +233,125 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+
+!ELSEIF "$(CFG)" == "excxx_txnguide_inmem - Win32 Debug AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_AMD64"
+# PROP BASE Intermediate_Dir "Debug_AMD64/excxx_txnguide_inmem"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_AMD64"
+# PROP Intermediate_Dir "Debug_AMD64/excxx_txnguide_inmem"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+
+!ELSEIF "$(CFG)" == "excxx_txnguide_inmem - Win32 Release AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_AMD64"
+# PROP BASE Intermediate_Dir "Release_AMD64/excxx_txnguide_inmem"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_AMD64"
+# PROP Intermediate_Dir "Release_AMD64/excxx_txnguide_inmem"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+
+!ELSEIF "$(CFG)" == "excxx_txnguide_inmem - Win32 Debug IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_IA64"
+# PROP BASE Intermediate_Dir "Debug_IA64/excxx_txnguide_inmem"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_IA64"
+# PROP Intermediate_Dir "Debug_IA64/excxx_txnguide_inmem"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+
+!ELSEIF "$(CFG)" == "excxx_txnguide_inmem - Win32 Release IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_IA64"
+# PROP BASE Intermediate_Dir "Release_IA64/excxx_txnguide_inmem"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_IA64"
+# PROP Intermediate_Dir "Release_IA64/excxx_txnguide_inmem"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
!ENDIF
# Begin Target
-# Name "excxx_txnguide_inmem - Win32 Release"
-# Name "excxx_txnguide_inmem - Win32 Debug"
-# Name "excxx_txnguide_inmem - Win32 ASCII Debug"
-# Name "excxx_txnguide_inmem - Win32 ASCII Release"
+# Name "excxx_txnguide_inmem - Win32 Release x86"
+# Name "excxx_txnguide_inmem - Win32 Debug x86"
+# Name "excxx_txnguide_inmem - Win32 ASCII Debug x86"
+# Name "excxx_txnguide_inmem - Win32 ASCII Release x86"
# Name "excxx_txnguide_inmem - x64 Debug AMD64"
# Name "excxx_txnguide_inmem - x64 Release AMD64"
# Name "excxx_txnguide_inmem - x64 Debug IA64"
# Name "excxx_txnguide_inmem - x64 Release IA64"
+# Name "excxx_txnguide_inmem - Win32 Debug AMD64"
+# Name "excxx_txnguide_inmem - Win32 Release AMD64"
+# Name "excxx_txnguide_inmem - Win32 Debug IA64"
+# Name "excxx_txnguide_inmem - Win32 Release IA64"
# Begin Source File
SOURCE=..\examples_cxx\txn_guide\TxnGuideInMemory.cpp
diff --git a/db/build_windows/include.tcl b/db/build_windows/include.tcl
index e82d66dab..4b504373f 100644
--- a/db/build_windows/include.tcl
+++ b/db/build_windows/include.tcl
@@ -1,7 +1,7 @@
# Automatically built by dist/s_test; may require local editing.
set tclsh_path SET_YOUR_TCLSH_PATH
-set tcllib ./Debug/libdb_tcl45d.dll
+set tcllib ./Debug/libdb_tcl46d.dll
set src_root ..
set test_path ../test
diff --git a/db/build_windows/libdb.def b/db/build_windows/libdb.def
index ac3379f9e..f68dea3ee 100644
--- a/db/build_windows/libdb.def
+++ b/db/build_windows/libdb.def
@@ -35,8 +35,8 @@ EXPORTS
__db_ndbm_rdonly @32
__db_ndbm_store @33
__db_panic @34
- __db_r_attach @35
- __db_r_detach @36
+ __db_win32_mutex_lock @35
+ __db_win32_mutex_unlock @36
__ham_func2 @37
__ham_func3 @38
__ham_func4 @39
@@ -48,130 +48,133 @@ EXPORTS
__os_dirfree @45
__os_dirlist @46
__os_free @47
- __os_get_syserr @48
- __os_getenv @49
- __os_ioinfo @50
- __os_malloc @51
- __os_mkdir @52
- __os_open @53
- __os_openhandle @54
- __os_posix_err @55
- __os_read @56
- __os_realloc @57
- __os_strdup @58
- __os_umalloc @59
- __os_unlink @60
- __os_write @61
- __txn_id_set @62
- __bam_adj_read @63
- __bam_cadjust_read @64
- __bam_cdel_read @65
- __bam_curadj_read @66
- __bam_merge_read @67
- __bam_pgin @68
- __bam_pgno_read @69
- __bam_pgout @70
- __bam_rcuradj_read @71
- __bam_relink_43_read @72
- __bam_relink_read @73
- __bam_repl_read @74
- __bam_root_read @75
- __bam_rsplit_read @76
- __bam_split_read @77
- __crdel_inmem_create_read @78
- __crdel_inmem_remove_read @79
- __crdel_inmem_rename_read @80
- __crdel_metasub_read @81
- __db_addrem_read @82
- __db_big_read @83
- __db_cksum_read @84
- __db_ctime @85
- __db_debug_read @86
- __db_dispatch @87
- __db_dl @88
- __db_dumptree @89
- __db_err @90
- __db_errx @91
- __db_getlong @92
- __db_getulong @93
- __db_global_values @94
- __db_isbigendian @95
- __db_mkpath @96
- __db_msg @97
- __db_noop_read @98
- __db_omode @99
- __db_ovref_read @100
- __db_pg_alloc_42_read @101
- __db_pg_alloc_read @102
- __db_pg_free_42_read @103
- __db_pg_free_read @104
- __db_pg_freedata_42_read @105
- __db_pg_freedata_read @106
- __db_pg_init_read @107
- __db_pg_new_read @108
- __db_pg_prepare_read @109
- __db_pg_sort_read @110
- __db_pgin @111
- __db_pgout @112
- __db_pr_callback @113
- __db_relink_42_read @114
- __db_rpath @115
- __db_stat_pp @116
- __db_stat_print_pp @117
- __db_util_cache @118
- __db_util_interrupted @119
- __db_util_logset @120
- __db_util_siginit @121
- __db_util_sigresend @122
- __db_verify_internal @123
- __dbreg_register_read @124
- __fop_create_read @125
- __fop_file_remove_read @126
- __fop_remove_read @127
- __fop_rename_read @128
- __fop_write_read @129
- __ham_chgpg_read @130
- __ham_copypage_read @131
- __ham_curadj_read @132
- __ham_get_meta @133
- __ham_groupalloc_42_read @134
- __ham_groupalloc_read @135
- __ham_insdel_read @136
- __ham_metagroup_42_read @137
- __ham_metagroup_read @138
- __ham_newpage_read @139
- __ham_pgin @140
- __ham_pgout @141
- __ham_release_meta @142
- __ham_replace_read @143
- __ham_splitdata_read @144
- __lock_list_print @145
- __log_stat_pp @146
- __mutex_set_wait_info @147
- __os_abspath @148
- __os_clock @149
- __os_exists @150
- __os_get_errno @151
- __os_id @152
- __os_mapfile @153
- __os_seek @154
- __os_set_errno @155
- __os_sleep @156
- __os_spin @157
- __os_ufree @158
- __os_unmapfile @159
- __os_yield @160
- __qam_add_read @161
- __qam_del_read @162
- __qam_delext_read @163
- __qam_incfirst_read @164
- __qam_mvptr_read @165
- __qam_pgin_out @166
- __rep_stat_print @167
- __txn_child_read @168
- __txn_ckp_42_read @169
- __txn_ckp_read @170
- __txn_recycle_read @171
- __txn_regop_42_read @172
- __txn_regop_read @173
- __txn_xa_regop_read @174
+ __os_fsync @48
+ __os_get_syserr @49
+ __os_getenv @50
+ __os_ioinfo @51
+ __os_malloc @52
+ __os_mkdir @53
+ __os_open @54
+ __os_openhandle @55
+ __os_posix_err @56
+ __os_read @57
+ __os_realloc @58
+ __os_rename @59
+ __os_strdup @60
+ __os_umalloc @61
+ __os_unlink @62
+ __os_write @63
+ __txn_id_set @64
+ __bam_adj_read @65
+ __bam_cadjust_read @66
+ __bam_cdel_read @67
+ __bam_curadj_read @68
+ __bam_merge_read @69
+ __bam_pgin @70
+ __bam_pgno_read @71
+ __bam_pgout @72
+ __bam_rcuradj_read @73
+ __bam_relink_43_read @74
+ __bam_relink_read @75
+ __bam_repl_read @76
+ __bam_root_read @77
+ __bam_rsplit_read @78
+ __bam_split_read @79
+ __config_split @80
+ __crdel_inmem_create_read @81
+ __crdel_inmem_remove_read @82
+ __crdel_inmem_rename_read @83
+ __crdel_metasub_read @84
+ __db_addrem_read @85
+ __db_big_read @86
+ __db_cksum_read @87
+ __db_ctime @88
+ __db_debug_read @89
+ __db_dispatch @90
+ __db_dl @91
+ __db_dumptree @92
+ __db_err @93
+ __db_errx @94
+ __db_getlong @95
+ __db_getulong @96
+ __db_global_values @97
+ __db_isbigendian @98
+ __db_mkpath @99
+ __db_msg @100
+ __db_noop_read @101
+ __db_omode @102
+ __db_ovref_read @103
+ __db_pg_alloc_42_read @104
+ __db_pg_alloc_read @105
+ __db_pg_free_42_read @106
+ __db_pg_free_read @107
+ __db_pg_freedata_42_read @108
+ __db_pg_freedata_read @109
+ __db_pg_init_read @110
+ __db_pg_new_read @111
+ __db_pg_prepare_read @112
+ __db_pg_sort_read @113
+ __db_pgin @114
+ __db_pgout @115
+ __db_pr_callback @116
+ __db_relink_42_read @117
+ __db_rpath @118
+ __db_stat_pp @119
+ __db_stat_print_pp @120
+ __db_util_cache @121
+ __db_util_interrupted @122
+ __db_util_logset @123
+ __db_util_siginit @124
+ __db_util_sigresend @125
+ __db_verify_internal @126
+ __dbreg_register_read @127
+ __fop_create_read @128
+ __fop_file_remove_read @129
+ __fop_remove_read @130
+ __fop_rename_read @131
+ __fop_write_read @132
+ __ham_chgpg_read @133
+ __ham_copypage_read @134
+ __ham_curadj_read @135
+ __ham_get_meta @136
+ __ham_groupalloc_42_read @137
+ __ham_groupalloc_read @138
+ __ham_insdel_read @139
+ __ham_metagroup_42_read @140
+ __ham_metagroup_read @141
+ __ham_newpage_read @142
+ __ham_pgin @143
+ __ham_pgout @144
+ __ham_release_meta @145
+ __ham_replace_read @146
+ __ham_splitdata_read @147
+ __lock_list_print @148
+ __log_stat_pp @149
+ __mutex_set_wait_info @150
+ __os_abspath @151
+ __os_exists @152
+ __os_get_errno @153
+ __os_gettime @154
+ __os_id @155
+ __os_mapfile @156
+ __os_seek @157
+ __os_set_errno @158
+ __os_sleep @159
+ __os_spin @160
+ __os_ufree @161
+ __os_unmapfile @162
+ __os_yield @163
+ __qam_add_read @164
+ __qam_del_read @165
+ __qam_delext_read @166
+ __qam_incfirst_read @167
+ __qam_mvptr_read @168
+ __qam_pgin_out @169
+ __rep_stat_print @170
+ __txn_child_read @171
+ __txn_ckp_42_read @172
+ __txn_ckp_read @173
+ __txn_recycle_read @174
+ __txn_regop_42_read @175
+ __txn_regop_read @176
+ __txn_xa_regop_read @177
diff --git a/db/build_windows/libdb.rc b/db/build_windows/libdb.rc
index 4b0666cc5..2c70a9ee4 100644
--- a/db/build_windows/libdb.rc
+++ b/db/build_windows/libdb.rc
@@ -1,6 +1,6 @@
1 VERSIONINFO
- FILEVERSION 4,0,5,20
- PRODUCTVERSION 4,0,5,20
+ FILEVERSION 4,0,6,18
+ PRODUCTVERSION 4,0,6,18
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
@@ -16,14 +16,14 @@ BEGIN
BEGIN
BLOCK "040904b0"
BEGIN
- VALUE "CompanyName", "Oracle Corporation\0"
- VALUE "FileDescription", "Berkeley DB 4.5 DLL\0"
- VALUE "FileVersion", "4.5.20\0"
- VALUE "InternalName", "libdb45.dll\0"
- VALUE "LegalCopyright", "Copyright © Oracle Corporation 1997-2006\0"
- VALUE "OriginalFilename", "libdb45.dll\0"
- VALUE "ProductName", "Oracle Corporation libdb\0"
- VALUE "ProductVersion", "4.5.20\0"
+ VALUE "CompanyName", "Oracle\0"
+ VALUE "FileDescription", "Berkeley DB 4.6 DLL\0"
+ VALUE "FileVersion", "4.6.18\0"
+ VALUE "InternalName", "libdb46.dll\0"
+ VALUE "LegalCopyright", "Copyright © Oracle 1997,2007\0"
+ VALUE "OriginalFilename", "libdb46.dll\0"
+ VALUE "ProductName", "Oracle libdb\0"
+ VALUE "ProductVersion", "4.6.18\0"
END
END
BLOCK "VarFileInfo"
diff --git a/db/build_windows/libdbrc.src b/db/build_windows/libdbrc.src
index e624e77a1..091d596e5 100644
--- a/db/build_windows/libdbrc.src
+++ b/db/build_windows/libdbrc.src
@@ -16,13 +16,13 @@ BEGIN
BEGIN
BLOCK "040904b0"
BEGIN
- VALUE "CompanyName", "Oracle Corporation\0"
+ VALUE "CompanyName", "Oracle\0"
VALUE "FileDescription", "Berkeley DB %MAJOR%.%MINOR% DLL\0"
VALUE "FileVersion", "%MAJOR%.%MINOR%.%PATCH%\0"
VALUE "InternalName", "libdb%MAJOR%%MINOR%.dll\0"
- VALUE "LegalCopyright", "Copyright © Oracle Corporation 1997-2006\0"
+ VALUE "LegalCopyright", "Copyright © Oracle 1997,2007\0"
VALUE "OriginalFilename", "libdb%MAJOR%%MINOR%.dll\0"
- VALUE "ProductName", "Oracle Corporation libdb\0"
+ VALUE "ProductName", "Oracle libdb\0"
VALUE "ProductVersion", "%MAJOR%.%MINOR%.%PATCH%\0"
END
END
diff --git a/db/build_windows/static_dsp.src b/db/build_windows/static_dsp.src
index aba9c79cc..68b2efeb6 100644
--- a/db/build_windows/static_dsp.src
+++ b/db/build_windows/static_dsp.src
@@ -4,7 +4,7 @@
# TARGTYPE "Win32 (x86) Static Library" 0x0104
-CFG=@project_name@ - Win32 Debug
+CFG=@project_name@ - Win32 Debug x86
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
@@ -13,18 +13,22 @@ CFG=@project_name@ - Win32 Debug
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "@project_name@.mak" CFG="@project_name@ - Win32 Debug"
+!MESSAGE NMAKE /f "@project_name@.mak" CFG="@project_name@ - Win32 Debug x86"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "@project_name@ - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "@project_name@ - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "@project_name@ - Win32 ASCII Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "@project_name@ - Win32 ASCII Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "@project_name@ - Win32 Release x86" (based on "Win32 (x86) Static Library")
+!MESSAGE "@project_name@ - Win32 Debug x86" (based on "Win32 (x86) Static Library")
+!MESSAGE "@project_name@ - Win32 ASCII Release x86" (based on "Win32 (x86) Static Library")
+!MESSAGE "@project_name@ - Win32 ASCII Debug x86" (based on "Win32 (x86) Static Library")
!MESSAGE "@project_name@ - x64 Debug AMD64" (based on "Win32 (x86) Static Library")
!MESSAGE "@project_name@ - x64 Release AMD64" (based on "Win32 (x86) Static Library")
!MESSAGE "@project_name@ - x64 Debug IA64" (based on "Win32 (x86) Static Library")
!MESSAGE "@project_name@ - x64 Release IA64" (based on "Win32 (x86) Static Library")
+!MESSAGE "@project_name@ - Win32 Debug AMD64" (based on "Win32 (x86) Static Library")
+!MESSAGE "@project_name@ - Win32 Release AMD64" (based on "Win32 (x86) Static Library")
+!MESSAGE "@project_name@ - Win32 Debug IA64" (based on "Win32 (x86) Static Library")
+!MESSAGE "@project_name@ - Win32 Release IA64" (based on "Win32 (x86) Static Library")
!MESSAGE
# Begin Project
@@ -34,7 +38,7 @@ CFG=@project_name@ - Win32 Debug
CPP=cl.exe
RSC=rc.exe
-!IF "$(CFG)" == "@project_name@ - Win32 Release"
+!IF "$(CFG)" == "@project_name@ - Win32 Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -57,7 +61,7 @@ LIB32=link.exe -lib
# ADD BASE LIB32 /nologo /out:"@lib_rel_dest@/libdb@lib_suffix@@DB_VERSION_MAJOR@@DB_VERSION_MINOR@s.lib"
# ADD LIB32 /nologo /out:"@lib_rel_dest@/libdb@lib_suffix@@DB_VERSION_MAJOR@@DB_VERSION_MINOR@s.lib"
-!ELSEIF "$(CFG)" == "@project_name@ - Win32 Debug"
+!ELSEIF "$(CFG)" == "@project_name@ - Win32 Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -80,7 +84,7 @@ LIB32=link.exe -lib
# ADD BASE LIB32 /nologo /out:"@lib_debug_dest@/libdb@lib_suffix@@DB_VERSION_MAJOR@@DB_VERSION_MINOR@sd.lib"
# ADD LIB32 /nologo /out:"@lib_debug_dest@/libdb@lib_suffix@@DB_VERSION_MAJOR@@DB_VERSION_MINOR@sd.lib"
-!ELSEIF "$(CFG)" == "@project_name@ - Win32 ASCII Release"
+!ELSEIF "$(CFG)" == "@project_name@ - Win32 ASCII Release x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -103,7 +107,7 @@ LIB32=link.exe -lib
# ADD BASE LIB32 /nologo /out:"@lib_rel_dest@_ASCII/libdb@lib_suffix@@DB_VERSION_MAJOR@@DB_VERSION_MINOR@s.lib"
# ADD LIB32 /nologo /out:"@lib_rel_dest@_ASCII/libdb@lib_suffix@@DB_VERSION_MAJOR@@DB_VERSION_MINOR@s.lib"
-!ELSEIF "$(CFG)" == "@project_name@ - Win32 ASCII Debug"
+!ELSEIF "$(CFG)" == "@project_name@ - Win32 ASCII Debug x86"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -218,18 +222,114 @@ LIB32=link.exe -lib
# ADD BASE LIB32 /nologo /out:"@lib_rel_dest@_IA64/libdb@lib_suffix@@DB_VERSION_MAJOR@@DB_VERSION_MINOR@s.lib"
# ADD LIB32 /nologo /out:"@lib_rel_dest@_IA64/libdb@lib_suffix@@DB_VERSION_MAJOR@@DB_VERSION_MINOR@s.lib"
+!ELSEIF "$(CFG)" == "@project_name@ - Win32 Debug AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "@lib_debug_dest@_AMD64"
+# PROP BASE Intermediate_Dir "Debug/@project_name@"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "@lib_debug_dest@_AMD64"
+# PROP Intermediate_Dir "Debug_AMD64/@project_name@"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "DIAGNOSTIC" /D "UNICODE" /D "_UNICODE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" @extra_cppflags@ /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "DIAGNOSTIC" /D "UNICODE" /D "_UNICODE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" @extra_cppflags@ /Wp64 /FD /Wp64 /c
+# ADD BASE RSC /l 0xc09
+# ADD RSC /l 0xc09
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"@lib_debug_dest@_AMD64/libdb@lib_suffix@@DB_VERSION_MAJOR@@DB_VERSION_MINOR@sd.lib"
+# ADD LIB32 /nologo /out:"@lib_debug_dest@_AMD64/libdb@lib_suffix@@DB_VERSION_MAJOR@@DB_VERSION_MINOR@sd.lib"
+
+!ELSEIF "$(CFG)" == "@project_name@ - Win32 Release AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "@lib_rel_dest@_AMD64"
+# PROP BASE Intermediate_Dir "Release_AMD64/@project_name@"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "@lib_rel_dest@_AMD64"
+# PROP Intermediate_Dir "Release_AMD64/@project_name@"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "UNICODE" /D "_UNICODE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" @extra_cppflags@ /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "UNICODE" /D "_UNICODE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" @extra_cppflags@ /Wp64 /FD /c
+# ADD BASE RSC /l 0xc09
+# ADD RSC /l 0xc09
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"@lib_rel_dest@_AMD64/libdb@lib_suffix@@DB_VERSION_MAJOR@@DB_VERSION_MINOR@s.lib"
+# ADD LIB32 /nologo /out:"@lib_rel_dest@_AMD64/libdb@lib_suffix@@DB_VERSION_MAJOR@@DB_VERSION_MINOR@s.lib"
+
+!ELSEIF "$(CFG)" == "@project_name@ - Win32 Debug IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "@lib_debug_dest@_IA64"
+# PROP BASE Intermediate_Dir "Debug_IA64/@project_name@"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "@lib_debug_dest@_IA64"
+# PROP Intermediate_Dir "Debug_IA64/@project_name@"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "DIAGNOSTIC" /D "UNICODE" /D "_UNICODE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" @extra_cppflags@ /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "DIAGNOSTIC" /D "UNICODE" /D "_UNICODE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" @extra_cppflags@ /Wp64 /FD /c
+# ADD BASE RSC /l 0xc09
+# ADD RSC /l 0xc09
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"@lib_debug_dest@_IA64/libdb@lib_suffix@@DB_VERSION_MAJOR@@DB_VERSION_MINOR@sd.lib"
+# ADD LIB32 /nologo /out:"@lib_debug_dest@_IA64/libdb@lib_suffix@@DB_VERSION_MAJOR@@DB_VERSION_MINOR@sd.lib"
+
+!ELSEIF "$(CFG)" == "@project_name@ - Win32 Release IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "@lib_rel_dest@_IA64"
+# PROP BASE Intermediate_Dir "Release_IA64/@project_name@"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "@lib_rel_dest@_IA64"
+# PROP Intermediate_Dir "Release_IA64/@project_name@"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "UNICODE" /D "_UNICODE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" @extra_cppflags@ /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "UNICODE" /D "_UNICODE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" @extra_cppflags@ /Wp64 /FD /c
+# ADD BASE RSC /l 0xc09
+# ADD RSC /l 0xc09
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"@lib_rel_dest@_IA64/libdb@lib_suffix@@DB_VERSION_MAJOR@@DB_VERSION_MINOR@s.lib"
+# ADD LIB32 /nologo /out:"@lib_rel_dest@_IA64/libdb@lib_suffix@@DB_VERSION_MAJOR@@DB_VERSION_MINOR@s.lib"
+
!ENDIF
# Begin Target
-# Name "@project_name@ - Win32 Release"
-# Name "@project_name@ - Win32 Debug"
-# Name "@project_name@ - Win32 ASCII Release"
-# Name "@project_name@ - Win32 ASCII Debug"
+# Name "@project_name@ - Win32 Release x86"
+# Name "@project_name@ - Win32 Debug x86"
+# Name "@project_name@ - Win32 ASCII Release x86"
+# Name "@project_name@ - Win32 ASCII Debug x86"
# Name "@project_name@ - x64 Debug AMD64"
# Name "@project_name@ - x64 Release AMD64"
# Name "@project_name@ - x64 Debug IA64"
# Name "@project_name@ - x64 Release IA64"
+# Name "@project_name@ - Win32 Debug AMD64"
+# Name "@project_name@ - Win32 Release AMD64"
+# Name "@project_name@ - Win32 Debug IA64"
+# Name "@project_name@ - Win32 Release IA64"
@SOURCE_FILES@
# End Target
# End Project
diff --git a/db/build_windows/test_mutex.dsp b/db/build_windows/test_mutex.dsp
new file mode 100644
index 000000000..d9b16f4ce
--- /dev/null
+++ b/db/build_windows/test_mutex.dsp
@@ -0,0 +1,364 @@
+# Microsoft Developer Studio Project File - Name="test_mutex" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=test_mutex - Win32 Debug x86
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "test_mutex.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "test_mutex.mak" CFG="test_mutex - Win32 Debug x86"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "test_mutex - Win32 Release x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "test_mutex - Win32 Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "test_mutex - Win32 ASCII Debug x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "test_mutex - Win32 ASCII Release x86" (based on "Win32 (x86) Console Application")
+!MESSAGE "test_mutex - x64 Debug AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "test_mutex - x64 Release AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "test_mutex - x64 Debug IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "test_mutex - x64 Release IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "test_mutex - Win32 Debug AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "test_mutex - Win32 Release AMD64" (based on "Win32 (x86) Console Application")
+!MESSAGE "test_mutex - Win32 Debug IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE "test_mutex - Win32 Release IA64" (based on "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "test_mutex - Win32 Release x86"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release/test_mutex"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release/test_mutex"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
+
+!ELSEIF "$(CFG)" == "test_mutex - Win32 Debug x86"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug/test_mutex"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug/test_mutex"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /FD /c
+# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
+
+!ELSEIF "$(CFG)" == "test_mutex - Win32 ASCII Debug x86"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_ASCII"
+# PROP BASE Intermediate_Dir "Debug_ASCII/test_mutex"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_ASCII"
+# PROP Intermediate_Dir "Debug_ASCII/test_mutex"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /FD /c
+# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
+
+!ELSEIF "$(CFG)" == "test_mutex - Win32 ASCII Release x86"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_ASCII"
+# PROP BASE Intermediate_Dir "Release_ASCII/test_mutex"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_ASCII"
+# PROP Intermediate_Dir "Release_ASCII/test_mutex"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
+
+!ELSEIF "$(CFG)" == "test_mutex - x64 Debug AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_AMD64"
+# PROP BASE Intermediate_Dir "Debug_AMD64/test_mutex"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_AMD64"
+# PROP Intermediate_Dir "Debug_AMD64/test_mutex"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+
+!ELSEIF "$(CFG)" == "test_mutex - x64 Release AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_AMD64"
+# PROP BASE Intermediate_Dir "Release_AMD64/test_mutex"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_AMD64"
+# PROP Intermediate_Dir "Release_AMD64/test_mutex"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+
+!ELSEIF "$(CFG)" == "test_mutex - x64 Debug IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_IA64"
+# PROP BASE Intermediate_Dir "Debug_IA64/test_mutex"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_IA64"
+# PROP Intermediate_Dir "Debug_IA64/test_mutex"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+
+!ELSEIF "$(CFG)" == "test_mutex - x64 Release IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_IA64"
+# PROP BASE Intermediate_Dir "Release_IA64/test_mutex"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_IA64"
+# PROP Intermediate_Dir "Release_IA64/test_mutex"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+
+!ELSEIF "$(CFG)" == "test_mutex - Win32 Debug AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_AMD64"
+# PROP BASE Intermediate_Dir "Debug_AMD64/test_mutex"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_AMD64"
+# PROP Intermediate_Dir "Debug_AMD64/test_mutex"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
+
+!ELSEIF "$(CFG)" == "test_mutex - Win32 Release AMD64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_AMD64"
+# PROP BASE Intermediate_Dir "Release_AMD64/test_mutex"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_AMD64"
+# PROP Intermediate_Dir "Release_AMD64/test_mutex"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
+
+!ELSEIF "$(CFG)" == "test_mutex - Win32 Debug IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_IA64"
+# PROP BASE Intermediate_Dir "Debug_IA64/test_mutex"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_IA64"
+# PROP Intermediate_Dir "Debug_IA64/test_mutex"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
+# ADD LINK32 libdb46d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
+
+!ELSEIF "$(CFG)" == "test_mutex - Win32 Release IA64"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_IA64"
+# PROP BASE Intermediate_Dir "Release_IA64/test_mutex"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_IA64"
+# PROP Intermediate_Dir "Release_IA64/test_mutex"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
+# ADD LINK32 libdb46.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
+
+!ENDIF
+
+# Begin Target
+
+# Name "test_mutex - Win32 Release x86"
+# Name "test_mutex - Win32 Debug x86"
+# Name "test_mutex - Win32 ASCII Debug x86"
+# Name "test_mutex - Win32 ASCII Release x86"
+# Name "test_mutex - x64 Debug AMD64"
+# Name "test_mutex - x64 Release AMD64"
+# Name "test_mutex - x64 Debug IA64"
+# Name "test_mutex - x64 Release IA64"
+# Name "test_mutex - Win32 Debug AMD64"
+# Name "test_mutex - Win32 Release AMD64"
+# Name "test_mutex - Win32 Debug IA64"
+# Name "test_mutex - Win32 Release IA64"
+# Begin Source File
+
+SOURCE=..\mutex\test_mutex.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\clib\getopt.c
+# End Source File
+# End Target
+# End Project
diff --git a/db/build_windows/tm.dsp b/db/build_windows/tm.dsp
deleted file mode 100644
index 5917fc796..000000000
--- a/db/build_windows/tm.dsp
+++ /dev/null
@@ -1,256 +0,0 @@
-# Microsoft Developer Studio Project File - Name="tm" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=tm - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "tm.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "tm.mak" CFG="tm - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "tm - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "tm - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "tm - Win32 ASCII Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "tm - Win32 ASCII Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "tm - x64 Debug AMD64" (based on "Win32 (x86) Console Application")
-!MESSAGE "tm - x64 Release AMD64" (based on "Win32 (x86) Console Application")
-!MESSAGE "tm - x64 Debug IA64" (based on "Win32 (x86) Console Application")
-!MESSAGE "tm - x64 Release IA64" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "tm - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release/tm"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release/tm"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release"
-
-!ELSEIF "$(CFG)" == "tm - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug/tm"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug/tm"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug"
-
-!ELSEIF "$(CFG)" == "tm - Win32 ASCII Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug_ASCII"
-# PROP BASE Intermediate_Dir "Debug_ASCII/tm"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_ASCII"
-# PROP Intermediate_Dir "Debug_ASCII/tm"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_ASCII"
-
-!ELSEIF "$(CFG)" == "tm - Win32 ASCII Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release_ASCII"
-# PROP BASE Intermediate_Dir "Release_ASCII/tm"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_ASCII"
-# PROP Intermediate_Dir "Release_ASCII/tm"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"Release_ASCII"
-
-!ELSEIF "$(CFG)" == "tm - x64 Debug AMD64"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug_AMD64"
-# PROP BASE Intermediate_Dir "Debug_AMD64/tm"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_AMD64"
-# PROP Intermediate_Dir "Debug_AMD64/tm"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
-# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:AMD64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_AMD64"
-
-!ELSEIF "$(CFG)" == "tm - x64 Release AMD64"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release_AMD64"
-# PROP BASE Intermediate_Dir "Release_AMD64/tm"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_AMD64"
-# PROP Intermediate_Dir "Release_AMD64/tm"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
-# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:AMD64 /nodefaultlib:"libcmt" /libpath:"Release_AMD64"
-
-!ELSEIF "$(CFG)" == "tm - x64 Debug IA64"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug_IA64"
-# PROP BASE Intermediate_Dir "Debug_IA64/tm"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_IA64"
-# PROP Intermediate_Dir "Debug_IA64/tm"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
-# ADD CPP /nologo /MDd /W3 /EHsc /Z7 /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Wp64 /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no
-# ADD LINK32 libdb45d.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:IA64 /nodefaultlib:"libcmtd" /fixed:no /libpath:"Debug_IA64"
-
-!ELSEIF "$(CFG)" == "tm - x64 Release IA64"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release_IA64"
-# PROP BASE Intermediate_Dir "Release_IA64/tm"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_IA64"
-# PROP Intermediate_Dir "Release_IA64/tm"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
-# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Wp64 /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt"
-# ADD LINK32 libdb45.lib bufferoverflowU.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:IA64 /nodefaultlib:"libcmt" /libpath:"Release_IA64"
-
-!ENDIF
-
-# Begin Target
-
-# Name "tm - Win32 Release"
-# Name "tm - Win32 Debug"
-# Name "tm - Win32 ASCII Debug"
-# Name "tm - Win32 ASCII Release"
-# Name "tm - x64 Debug AMD64"
-# Name "tm - x64 Release AMD64"
-# Name "tm - x64 Debug IA64"
-# Name "tm - x64 Release IA64"
-# Begin Source File
-
-SOURCE=..\mutex\tm.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\clib\getopt.c
-# End Source File
-# End Target
-# End Project
diff --git a/db/build_windows/win_db.h b/db/build_windows/win_db.h
deleted file mode 100644
index 88d3b15b4..000000000
--- a/db/build_windows/win_db.h
+++ /dev/null
@@ -1,143 +0,0 @@
-/*-
- * $Id: win_db.h,v 12.188 2006/09/20 20:08:48 bostic Exp $
- *
- * The following provides the information necessary to build Berkeley
- * DB on native Windows, and other Windows environments such as MinGW.
- */
-
-/*
- * Avoid warnings with Visual Studio 8.
- */
-#define _CRT_SECURE_NO_DEPRECATE 1
-
-/*
- * Windows NT 4.0 and later required for the replication manager.
- */
-#ifdef HAVE_REPLICATION_THREADS
-#define _WIN32_WINNT 0x0400
-#endif
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/timeb.h>
-
-#include <direct.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <io.h>
-#include <limits.h>
-#include <memory.h>
-#include <process.h>
-#include <signal.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <tchar.h>
-#include <time.h>
-
-/*
- * To build Tcl interface libraries, the include path must be configured to
- * use the directory containing <tcl.h>, usually the include directory in
- * the Tcl distribution.
- */
-#ifdef DB_TCL_SUPPORT
-#include <tcl.h>
-#endif
-
-#define WIN32_LEAN_AND_MEAN
-#include <windows.h>
-#include <winsock2.h>
-
-#ifdef HAVE_GETADDRINFO
-/*
- * Need explicit includes for IPv6 support on Windows. Both are necessary to
- * ensure that pre WinXP versions have an implementation of the getaddrinfo API.
- */
-#include <ws2tcpip.h>
-#include <wspiapi.h>
-#endif
-
-/*
- * All of the necessary includes have been included, ignore the #includes
- * in the Berkeley DB source files.
- */
-#define NO_SYSTEM_INCLUDES
-
-/*
- * Microsoft's C runtime library has fsync, getcwd, getpid, snprintf and
- * vsnprintf, but under different names.
- */
-#define fsync _commit
-#define getcwd(buf, size) _getcwd(buf, size)
-#define getpid _getpid
-#define snprintf _snprintf
-#define vsnprintf _vsnprintf
-
-#define h_errno WSAGetLastError()
-
-/*
- * Windows defines off_t to long (i.e., 32 bits). We need to pass 64-bit
- * file offsets, so we declare our own.
- */
-#define off_t __db_off_t
-typedef __int64 off_t;
-
-/*
- * Win32 does not have getopt.
- *
- * The externs are here (instead of using db_config.h and clib_port.h),
- * because Berkeley DB example programs use getopt and they can't #include
- * those files.
- */
-#if defined(__cplusplus)
-extern "C" {
-#endif
-extern int getopt(int, char * const *, const char *);
-#if defined(__cplusplus)
-}
-#endif
-
-#ifdef _UNICODE
-#define TO_TSTRING(dbenv, s, ts, ret) do { \
- int __len = (int)strlen(s) + 1; \
- ts = NULL; \
- if ((ret = __os_malloc((dbenv), \
- __len * sizeof(_TCHAR), &(ts))) == 0 && \
- MultiByteToWideChar(CP_UTF8, 0, \
- (s), -1, (ts), __len) == 0) \
- ret = __os_posix_err(__os_get_syserr()); \
- } while (0)
-
-#define FROM_TSTRING(dbenv, ts, s, ret) { \
- int __len = WideCharToMultiByte(CP_UTF8, 0, ts, -1, \
- NULL, 0, NULL, NULL); \
- s = NULL; \
- if ((ret = __os_malloc((dbenv), __len, &(s))) == 0 && \
- WideCharToMultiByte(CP_UTF8, 0, \
- (ts), -1, (s), __len, NULL, NULL) == 0) \
- ret = __os_posix_err(__os_get_syserr()); \
- } while (0)
-
-#define FREE_STRING(dbenv, s) do { \
- if ((s) != NULL) { \
- __os_free((dbenv), (s)); \
- (s) = NULL; \
- } \
- } while (0)
-
-#else
-#define TO_TSTRING(dbenv, s, ts, ret) (ret) = 0, (ts) = (_TCHAR *)(s)
-#define FROM_TSTRING(dbenv, ts, s, ret) (ret) = 0, (s) = (char *)(ts)
-#define FREE_STRING(dbenv, ts)
-#endif
-
-#ifndef INVALID_HANDLE_VALUE
-#define INVALID_HANDLE_VALUE ((HANDLE)-1)
-#endif
-
-#ifndef INVALID_FILE_ATTRIBUTES
-#define INVALID_FILE_ATTRIBUTES ((DWORD)-1)
-#endif
-
-#ifndef INVALID_SET_FILE_POINTER
-#define INVALID_SET_FILE_POINTER ((DWORD)-1)
-#endif
diff --git a/db/clib/abort.c b/db/clib/abort.c
deleted file mode 100644
index d3069a442..000000000
--- a/db/clib/abort.c
+++ /dev/null
@@ -1,29 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2005-2006
- * Oracle Corporation. All rights reserved.
- *
- * $Id: abort.c,v 1.3 2006/09/07 14:12:59 bostic Exp $
- */
-
-#include "db_config.h"
-
-#include "db_int.h"
-
-/*
- * abort --
- *
- * PUBLIC: #ifndef HAVE_ABORT
- * PUBLIC: void abort __P((void));
- * PUBLIC: #endif
- */
-void
-abort()
-{
-#ifdef SIGABRT
- raise(SIGABRT); /* Try and drop core. */
-#endif
- exit(1);
- /* NOTREACHED */
-}
diff --git a/db/clib/ctime.c b/db/clib/ctime.c
index 49375d5da..b6a5c606e 100644
--- a/db/clib/ctime.c
+++ b/db/clib/ctime.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2001-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2001,2007 Oracle. All rights reserved.
*
- * $Id: ctime.c,v 12.10 2006/08/24 14:45:09 bostic Exp $
+ * $Id: ctime.c,v 12.12 2007/05/17 15:14:54 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/clib/getaddrinfo.c b/db/clib/getaddrinfo.c
index 769dda67d..c2d5ba2e9 100644
--- a/db/clib/getaddrinfo.c
+++ b/db/clib/getaddrinfo.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2006,2007 Oracle. All rights reserved.
*
- * $Id: getaddrinfo.c,v 1.5 2006/08/24 14:45:09 bostic Exp $
+ * $Id: getaddrinfo.c,v 1.8 2007/05/17 15:14:54 bostic Exp $
*/
#include "db_config.h"
@@ -58,6 +57,11 @@ __db_getaddrinfo(dbenv, nodename, port, servname, hints, res)
COMPQUIET(hints, NULL);
COMPQUIET(servname, NULL);
+ /* INADDR_NONE is not defined on Solaris 2.6, 2.7 or 2.8. */
+#ifndef INADDR_NONE
+#define INADDR_NONE ((u_long)0xffffffff)
+#endif
+
/*
* Basic implementation of IPv4 component of getaddrinfo.
* Limited to the functionality used by repmgr.
@@ -85,11 +89,22 @@ __db_getaddrinfo(dbenv, nodename, port, servname, hints, res)
* errors. The only function we currently
* use that needs h_errno is gethostbyname,
* so we deal with it here.
+ *
+ * hstrerror is not available on Solaris 2.6
+ * (it is in libresolv but is a private,
+ * unexported symbol).
*/
+#ifdef HAVE_HSTRERROR
__db_errx(dbenv,
"%s(%u): host lookup failed: %s",
nodename == NULL ? "" : nodename, port,
hstrerror(h_errno));
+#else
+ __db_errx(dbenv,
+ "%s(%u): host lookup failed: %d",
+ nodename == NULL ? "" : nodename, port,
+ h_errno);
+#endif
switch (h_errno) {
case HOST_NOT_FOUND:
case NO_DATA:
diff --git a/db/clib/getcwd.c b/db/clib/getcwd.c
index 7a2ce2d7d..97e6f9af7 100644
--- a/db/clib/getcwd.c
+++ b/db/clib/getcwd.c
@@ -1,8 +1,7 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*/
/*
* Copyright (c) 1989, 1991, 1993
@@ -32,14 +31,14 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: getcwd.c,v 12.5 2006/08/24 14:45:09 bostic Exp $
+ * $Id: getcwd.c,v 12.9 2007/05/17 15:14:54 bostic Exp $
*/
#include "db_config.h"
#include "db_int.h"
-#ifndef NO_SYSTEM_INCLUDES
+#ifdef HAVE_SYSTEM_INCLUDE_FILES
#if HAVE_DIRENT_H
# include <dirent.h>
# define NAMLEN(dirent) strlen((dirent)->d_name)
@@ -63,7 +62,7 @@
(dp->d_name[1] == '.' && dp->d_name[2] == '\0')))
#ifndef dirfd
-#define dirfd(dirp) ((dirp)->dd_fd)
+#define dirfd(dirp) ((dirp)->dd_fd)
#endif
/*
diff --git a/db/clib/getopt.c b/db/clib/getopt.c
index 86b436809..ea486c817 100644
--- a/db/clib/getopt.c
+++ b/db/clib/getopt.c
@@ -1,8 +1,7 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*/
/*
* Copyright (c) 1987, 1993, 1994
@@ -32,7 +31,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: getopt.c,v 12.4 2006/08/24 14:45:10 bostic Exp $
+ * $Id: getopt.c,v 12.6 2007/05/17 15:14:54 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/clib/isalpha.c b/db/clib/isalpha.c
index 7d77d8dad..f8588411f 100644
--- a/db/clib/isalpha.c
+++ b/db/clib/isalpha.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2005-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2005,2007 Oracle. All rights reserved.
*
- * $Id: isalpha.c,v 1.2 2006/08/24 14:45:10 bostic Exp $
+ * $Id: isalpha.c,v 1.4 2007/05/17 15:14:54 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/clib/isdigit.c b/db/clib/isdigit.c
index 95c490f84..e81eef8e1 100644
--- a/db/clib/isdigit.c
+++ b/db/clib/isdigit.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2005-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2005,2007 Oracle. All rights reserved.
*
- * $Id: isdigit.c,v 1.2 2006/08/24 14:45:10 bostic Exp $
+ * $Id: isdigit.c,v 1.4 2007/05/17 15:14:54 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/clib/isprint.c b/db/clib/isprint.c
index 481b64772..4e5d4f04c 100644
--- a/db/clib/isprint.c
+++ b/db/clib/isprint.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2005-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2005,2007 Oracle. All rights reserved.
*
- * $Id: isprint.c,v 1.2 2006/08/24 14:45:10 bostic Exp $
+ * $Id: isprint.c,v 1.4 2007/05/17 15:14:54 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/clib/isspace.c b/db/clib/isspace.c
index 18ed4dcfc..07955defa 100644
--- a/db/clib/isspace.c
+++ b/db/clib/isspace.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2005-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2005,2007 Oracle. All rights reserved.
*
- * $Id: isspace.c,v 1.2 2006/08/24 14:45:10 bostic Exp $
+ * $Id: isspace.c,v 1.4 2007/05/17 15:14:54 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/clib/memcmp.c b/db/clib/memcmp.c
index 8b4f4c347..6ebfeeeb5 100644
--- a/db/clib/memcmp.c
+++ b/db/clib/memcmp.c
@@ -1,8 +1,7 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*/
/*
* Copyright (c) 1990, 1993
@@ -32,7 +31,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: memcmp.c,v 12.4 2006/08/24 14:45:10 bostic Exp $
+ * $Id: memcmp.c,v 12.6 2007/05/17 15:14:54 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/clib/memmove.c b/db/clib/memmove.c
index b52ffbea0..bc1c4b205 100644
--- a/db/clib/memmove.c
+++ b/db/clib/memmove.c
@@ -1,8 +1,7 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*/
/*
* Copyright (c) 1990, 1993
@@ -32,7 +31,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: memmove.c,v 12.5 2006/08/24 14:45:10 bostic Exp $
+ * $Id: memmove.c,v 12.7 2007/05/17 15:14:54 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/clib/printf.c b/db/clib/printf.c
index 62c1daf0f..461667306 100644
--- a/db/clib/printf.c
+++ b/db/clib/printf.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2005-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2005,2007 Oracle. All rights reserved.
*
- * $Id: printf.c,v 1.5 2006/09/13 19:10:57 bostic Exp $
+ * $Id: printf.c,v 1.7 2007/05/17 15:14:54 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/clib/qsort.c b/db/clib/qsort.c
new file mode 100644
index 000000000..730f22e6a
--- /dev/null
+++ b/db/clib/qsort.c
@@ -0,0 +1,181 @@
+/*-
+ * Copyright (c) 1992, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * static char sccsid[] = "@(#)qsort.c 8.1 (Berkeley) 6/4/93";
+ * Id: qsort.c,v 1.4 1996/04/19 18:40:20 bde
+ */
+
+#include "db_config.h"
+
+#include "db_int.h"
+
+static char *med3 __P((char *,
+ char *, char *, int (*)(const void *, const void *)));
+static void swapfunc __P((char *, char *, int, int));
+
+#define min(a, b) (a) < (b) ? a : b
+
+/*
+ * Qsort routine from Bentley & McIlroy's "Engineering a Sort Function".
+ */
+#define swapcode(TYPE, parmi, parmj, n) { \
+ long i = (n) / sizeof (TYPE); \
+ register TYPE *pi = (TYPE *) (parmi); \
+ register TYPE *pj = (TYPE *) (parmj); \
+ do { \
+ register TYPE t = *pi; \
+ *pi++ = *pj; \
+ *pj++ = t; \
+ } while (--i > 0); \
+}
+
+#define SWAPINIT(a, es) swaptype = ((char *)a - (char *)0) % sizeof(long) || \
+ es % sizeof(long) ? 2 : es == sizeof(long)? 0 : 1;
+
+static inline void
+swapfunc(a, b, n, swaptype)
+ char *a, *b;
+ int n, swaptype;
+{
+ if(swaptype <= 1)
+ swapcode(long, a, b, n)
+ else
+ swapcode(char, a, b, n)
+}
+
+#define swap(a, b) \
+ if (swaptype == 0) { \
+ long t = *(long *)(a); \
+ *(long *)(a) = *(long *)(b); \
+ *(long *)(b) = t; \
+ } else \
+ swapfunc(a, b, es, swaptype)
+
+#define vecswap(a, b, n) if ((n) > 0) swapfunc(a, b, n, swaptype)
+
+static inline char *
+med3(a, b, c, cmp)
+ char *a, *b, *c;
+ int (*cmp)(const void *, const void *);
+{
+ return cmp(a, b) < 0 ?
+ (cmp(b, c) < 0 ? b : (cmp(a, c) < 0 ? c : a ))
+ :(cmp(b, c) > 0 ? b : (cmp(a, c) < 0 ? a : c ));
+}
+
+/*
+ * PUBLIC: #ifndef HAVE_QSORT
+ * PUBLIC: void qsort __P((void *,
+ * PUBLIC: size_t, size_t, int(*)(const void *, const void *)));
+ * PUBLIC: #endif
+ */
+void
+qsort(a, n, es, cmp)
+ void *a;
+ size_t n, es;
+ int (*cmp) __P((const void *, const void *));
+{
+ char *pa, *pb, *pc, *pd, *pl, *pm, *pn;
+ int d, r, swaptype, swap_cnt;
+
+loop: SWAPINIT(a, es);
+ swap_cnt = 0;
+ if (n < 7) {
+ for (pm = (char *)a + es; pm < (char *)a + n * es; pm += es)
+ for (pl = pm; pl > (char *)a && cmp(pl - es, pl) > 0;
+ pl -= es)
+ swap(pl, pl - es);
+ return;
+ }
+ pm = (char *)a + (n / 2) * es;
+ if (n > 7) {
+ pl = a;
+ pn = (char *)a + (n - 1) * es;
+ if (n > 40) {
+ d = (n / 8) * es;
+ pl = med3(pl, pl + d, pl + 2 * d, cmp);
+ pm = med3(pm - d, pm, pm + d, cmp);
+ pn = med3(pn - 2 * d, pn - d, pn, cmp);
+ }
+ pm = med3(pl, pm, pn, cmp);
+ }
+ swap(a, pm);
+ pa = pb = (char *)a + es;
+
+ pc = pd = (char *)a + (n - 1) * es;
+ for (;;) {
+ while (pb <= pc && (r = cmp(pb, a)) <= 0) {
+ if (r == 0) {
+ swap_cnt = 1;
+ swap(pa, pb);
+ pa += es;
+ }
+ pb += es;
+ }
+ while (pb <= pc && (r = cmp(pc, a)) >= 0) {
+ if (r == 0) {
+ swap_cnt = 1;
+ swap(pc, pd);
+ pd -= es;
+ }
+ pc -= es;
+ }
+ if (pb > pc)
+ break;
+ swap(pb, pc);
+ swap_cnt = 1;
+ pb += es;
+ pc -= es;
+ }
+ if (swap_cnt == 0) { /* Switch to insertion sort */
+ for (pm = (char *)a + es; pm < (char *)a + n * es; pm += es)
+ for (pl = pm; pl > (char *)a && cmp(pl - es, pl) > 0;
+ pl -= es)
+ swap(pl, pl - es);
+ return;
+ }
+
+ pn = (char *)a + n * es;
+ r = min(pa - (char *)a, pb - pa);
+ vecswap(a, pb - r, r);
+ r = min((int)(pd - pc), (int)(pn - pd - es));
+ vecswap(pb, pn - r, r);
+ if ((r = (int)(pb - pa)) > (int)es)
+ qsort(a, r / es, es, cmp);
+ if ((r = (int)(pd - pc)) > (int)es) {
+ /* Iterate rather than recurse to save stack space */
+ a = pn - r;
+ n = r / es;
+ goto loop;
+ }
+/* qsort(pn - r, r / es, es, cmp);*/
+}
diff --git a/db/clib/raise.c b/db/clib/raise.c
index 1c5b87589..3e8a83be5 100644
--- a/db/clib/raise.c
+++ b/db/clib/raise.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: raise.c,v 12.5 2006/08/24 14:45:10 bostic Exp $
+ * $Id: raise.c,v 12.7 2007/05/17 15:14:54 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/clib/rand.c b/db/clib/rand.c
index f46248b91..6b8100600 100644
--- a/db/clib/rand.c
+++ b/db/clib/rand.c
@@ -13,15 +13,13 @@
* PUBLIC: void srand __P((unsigned int));
* PUBLIC: #endif
*/
-static unsigned long int next = 1;
-
int rand(void) /* RAND_MAX assumed to be 32767 */
{
- next = next * 1103515245 + 12345;
- return (unsigned int) (next/65536) % 32768;
+ DB_GLOBAL(rand_next) = DB_GLOBAL(rand_next) * 1103515245 + 12345;
+ return (unsigned int) (DB_GLOBAL(rand_next)/65536) % 32768;
}
void srand(unsigned int seed)
{
- next = seed;
+ DB_GLOBAL(rand_next) = seed;
}
diff --git a/db/clib/snprintf.c b/db/clib/snprintf.c
index f568713c0..1dc852abb 100644
--- a/db/clib/snprintf.c
+++ b/db/clib/snprintf.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: snprintf.c,v 12.4 2006/08/24 14:45:10 bostic Exp $
+ * $Id: snprintf.c,v 12.7 2007/05/17 15:14:54 bostic Exp $
*/
#include "db_config.h"
@@ -120,7 +119,7 @@ sprintf_overflow()
exit(1);
/* But firm. */
- abort();
+ __os_abort();
/* NOTREACHED */
}
diff --git a/db/clib/strcasecmp.c b/db/clib/strcasecmp.c
index 7510f2385..f4e81a5d9 100644
--- a/db/clib/strcasecmp.c
+++ b/db/clib/strcasecmp.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: strcasecmp.c,v 12.1 2006/05/05 14:53:08 bostic Exp $
+ * $Id: strcasecmp.c,v 12.3 2006/10/11 15:31:21 bostic Exp $
*/
#include "db_config.h"
@@ -38,46 +38,6 @@
#include "db_int.h"
/*
- * This array is designed for mapping upper and lower case letter
- * together for a case independent comparison. The mappings are
- * based upon ascii character sequences.
- */
-static const unsigned char charmap[] = {
- '\000', '\001', '\002', '\003', '\004', '\005', '\006', '\007',
- '\010', '\011', '\012', '\013', '\014', '\015', '\016', '\017',
- '\020', '\021', '\022', '\023', '\024', '\025', '\026', '\027',
- '\030', '\031', '\032', '\033', '\034', '\035', '\036', '\037',
- '\040', '\041', '\042', '\043', '\044', '\045', '\046', '\047',
- '\050', '\051', '\052', '\053', '\054', '\055', '\056', '\057',
- '\060', '\061', '\062', '\063', '\064', '\065', '\066', '\067',
- '\070', '\071', '\072', '\073', '\074', '\075', '\076', '\077',
- '\100', '\141', '\142', '\143', '\144', '\145', '\146', '\147',
- '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157',
- '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167',
- '\170', '\171', '\172', '\133', '\134', '\135', '\136', '\137',
- '\140', '\141', '\142', '\143', '\144', '\145', '\146', '\147',
- '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157',
- '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167',
- '\170', '\171', '\172', '\173', '\174', '\175', '\176', '\177',
- '\200', '\201', '\202', '\203', '\204', '\205', '\206', '\207',
- '\210', '\211', '\212', '\213', '\214', '\215', '\216', '\217',
- '\220', '\221', '\222', '\223', '\224', '\225', '\226', '\227',
- '\230', '\231', '\232', '\233', '\234', '\235', '\236', '\237',
- '\240', '\241', '\242', '\243', '\244', '\245', '\246', '\247',
- '\250', '\251', '\252', '\253', '\254', '\255', '\256', '\257',
- '\260', '\261', '\262', '\263', '\264', '\265', '\266', '\267',
- '\270', '\271', '\272', '\273', '\274', '\275', '\276', '\277',
- '\300', '\301', '\302', '\303', '\304', '\305', '\306', '\307',
- '\310', '\311', '\312', '\313', '\314', '\315', '\316', '\317',
- '\320', '\321', '\322', '\323', '\324', '\325', '\326', '\327',
- '\330', '\331', '\332', '\333', '\334', '\335', '\336', '\337',
- '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347',
- '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357',
- '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367',
- '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\377'
-};
-
-/*
* strcasecmp --
* Do strcmp(3) in a case-insensitive manner.
*
@@ -89,14 +49,21 @@ int
strcasecmp(s1, s2)
const char *s1, *s2;
{
- register const unsigned char *cm = charmap,
- *us1 = (const unsigned char *)s1,
- *us2 = (const unsigned char *)s2;
+ u_char s1ch, s2ch;
- while (cm[*us1] == cm[*us2++])
- if (*us1++ == '\0')
+ for (;;) {
+ s1ch = *s1++;
+ s2ch = *s2++;
+ if (s1ch >= 'A' && s1ch <= 'Z') /* tolower() */
+ s1ch += 32;
+ if (s2ch >= 'A' && s2ch <= 'Z') /* tolower() */
+ s2ch += 32;
+ if (s1ch != s2ch)
+ return (s1ch - s2ch);
+ if (s1ch == '\0')
return (0);
- return (cm[*us1] - cm[*--us2]);
+ }
+ /* NOTREACHED */
}
/*
@@ -112,17 +79,19 @@ strncasecmp(s1, s2, n)
const char *s1, *s2;
register size_t n;
{
- if (n != 0) {
- register const unsigned char *cm = charmap,
- *us1 = (const unsigned char *)s1,
- *us2 = (const unsigned char *)s2;
+ u_char s1ch, s2ch;
- do {
- if (cm[*us1] != cm[*us2++])
- return (cm[*us1] - cm[*--us2]);
- if (*us1++ == '\0')
- break;
- } while (--n != 0);
+ for (; n != 0; --n) {
+ s1ch = *s1++;
+ s2ch = *s2++;
+ if (s1ch >= 'A' && s1ch <= 'Z') /* tolower() */
+ s1ch += 32;
+ if (s2ch >= 'A' && s2ch <= 'Z') /* tolower() */
+ s2ch += 32;
+ if (s1ch != s2ch)
+ return (s1ch - s2ch);
+ if (s1ch == '\0')
+ return (0);
}
return (0);
}
diff --git a/db/clib/strerror.c b/db/clib/strerror.c
index f5c303988..7186f2303 100644
--- a/db/clib/strerror.c
+++ b/db/clib/strerror.c
@@ -1,8 +1,7 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*/
/*
* Copyright (c) 1988, 1993
@@ -32,7 +31,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: strerror.c,v 12.7 2006/08/24 14:45:10 bostic Exp $
+ * $Id: strerror.c,v 12.13 2007/05/17 16:57:46 bostic Exp $
*/
/*
@@ -74,138 +73,153 @@
#include "db_int.h"
-static const char *__db_errlist[] = {
- "Undefined error: 0", /* 0 - ENOERROR */
- "Operation not permitted", /* 1 - EPERM */
- "No such file or directory", /* 2 - ENOENT */
- "No such process", /* 3 - ESRCH */
- "Interrupted system call", /* 4 - EINTR */
- "Input/output error", /* 5 - EIO */
- "Device not configured", /* 6 - ENXIO */
- "Argument list too long", /* 7 - E2BIG */
- "Exec format error", /* 8 - ENOEXEC */
- "Bad file descriptor", /* 9 - EBADF */
- "No child processes", /* 10 - ECHILD */
- "Resource deadlock avoided", /* 11 - EDEADLK */
- "Cannot allocate memory", /* 12 - ENOMEM */
- "Permission denied", /* 13 - EACCES */
- "Bad address", /* 14 - EFAULT */
- "Block device required", /* 15 - ENOTBLK */
- "Device busy", /* 16 - EBUSY */
- "File exists", /* 17 - EEXIST */
- "Cross-device link", /* 18 - EXDEV */
- "Operation not supported by device", /* 19 - ENODEV */
- "Not a directory", /* 20 - ENOTDIR */
- "Is a directory", /* 21 - EISDIR */
- "Invalid argument", /* 22 - EINVAL */
- "Too many open files in system", /* 23 - ENFILE */
- "Too many open files", /* 24 - EMFILE */
- "Inappropriate ioctl for device", /* 25 - ENOTTY */
- "Text file busy", /* 26 - ETXTBSY */
- "File too large", /* 27 - EFBIG */
- "No space left on device", /* 28 - ENOSPC */
- "Illegal seek", /* 29 - ESPIPE */
- "Read-only file system", /* 30 - EROFS */
- "Too many links", /* 31 - EMLINK */
- "Broken pipe", /* 32 - EPIPE */
+/*
+ * __db_strerror --
+ * Return the string associated with an errno.
+ *
+ * PUBLIC: #ifndef HAVE_STRERROR
+ * PUBLIC: char *strerror __P((int));
+ * PUBLIC: #endif
+ */
+char *
+strerror(num)
+ int num;
+{
+#define ERRSTR(v, s) do { \
+ if (num == (v)) \
+ return (s); \
+} while (0)
+ ERRSTR(0, "Undefined error: 0");
+ ERRSTR(EPERM, "Operation not permitted");
+ ERRSTR(ENOENT, "No such file or directory");
+ ERRSTR(ESRCH, "No such process");
+ ERRSTR(EINTR, "Interrupted system call");
+ ERRSTR(EIO, "Input/output error");
+ ERRSTR(ENXIO, "Device not configured");
+ ERRSTR(E2BIG, "Argument list too long");
+ ERRSTR(ENOEXEC, "Exec format error");
+ ERRSTR(EBADF, "Bad file descriptor");
+ ERRSTR(ECHILD, "No child processes");
+ ERRSTR(EDEADLK, "Resource deadlock avoided");
+ ERRSTR(ENOMEM, "Cannot allocate memory");
+ ERRSTR(EACCES, "Permission denied");
+ ERRSTR(EFAULT, "Bad address");
+ ERRSTR(ENOTBLK, "Block device required");
+ ERRSTR(EBUSY, "Device busy");
+ ERRSTR(EEXIST, "File exists");
+ ERRSTR(EXDEV, "Cross-device link");
+ ERRSTR(ENODEV, "Operation not supported by device");
+ ERRSTR(ENOTDIR, "Not a directory");
+ ERRSTR(EISDIR, "Is a directory");
+ ERRSTR(EINVAL, "Invalid argument");
+ ERRSTR(ENFILE, "Too many open files in system");
+ ERRSTR(EMFILE, "Too many open files");
+ ERRSTR(ENOTTY, "Inappropriate ioctl for device");
+ ERRSTR(ETXTBSY, "Text file busy");
+ ERRSTR(EFBIG, "File too large");
+ ERRSTR(ENOSPC, "No space left on device");
+ ERRSTR(ESPIPE, "Illegal seek");
+ ERRSTR(EROFS, "Read-only file system");
+ ERRSTR(EMLINK, "Too many links");
+ ERRSTR(EPIPE, "Broken pipe");
/* math software */
- "Numerical argument out of domain", /* 33 - EDOM */
- "Result too large", /* 34 - ERANGE */
+ ERRSTR(EDOM, "Numerical argument out of domain");
+ ERRSTR(ERANGE, "Result too large");
/* non-blocking and interrupt i/o */
- "Resource temporarily unavailable", /* 35 - EAGAIN */
- /* 35 - EWOULDBLOCK */
- "Operation now in progress", /* 36 - EINPROGRESS */
- "Operation already in progress", /* 37 - EALREADY */
+ ERRSTR(EAGAIN, "Resource temporarily unavailable");
+ ERRSTR(EWOULDBLOCK, "Resource temporarily unavailable");
+ ERRSTR(EINPROGRESS, "Operation now in progress");
+ ERRSTR(EALREADY, "Operation already in progress");
/* ipc/network software -- argument errors */
- "Socket operation on non-socket", /* 38 - ENOTSOCK */
- "Destination address required", /* 39 - EDESTADDRREQ */
- "Message too long", /* 40 - EMSGSIZE */
- "Protocol wrong type for socket", /* 41 - EPROTOTYPE */
- "Protocol not available", /* 42 - ENOPROTOOPT */
- "Protocol not supported", /* 43 - EPROTONOSUPPORT */
- "Socket type not supported", /* 44 - ESOCKTNOSUPPORT */
- "Operation not supported", /* 45 - EOPNOTSUPP */
- "Protocol family not supported", /* 46 - EPFNOSUPPORT */
- /* 47 - EAFNOSUPPORT */
- "Address family not supported by protocol family",
- "Address already in use", /* 48 - EADDRINUSE */
- "Can't assign requested address", /* 49 - EADDRNOTAVAIL */
+ ERRSTR(ENOTSOCK, "Socket operation on non-socket");
+ ERRSTR(EDESTADDRREQ, "Destination address required");
+ ERRSTR(EMSGSIZE, "Message too long");
+ ERRSTR(EPROTOTYPE, "Protocol wrong type for socket");
+ ERRSTR(ENOPROTOOPT, "Protocol not available");
+ ERRSTR(EPROTONOSUPPORT, "Protocol not supported");
+ ERRSTR(ESOCKTNOSUPPORT, "Socket type not supported");
+ ERRSTR(EOPNOTSUPP, "Operation not supported");
+ ERRSTR(EPFNOSUPPORT, "Protocol family not supported");
+ ERRSTR(EAFNOSUPPORT, "Address family not supported by protocol family");
+ ERRSTR(EADDRINUSE, "Address already in use");
+ ERRSTR(EADDRNOTAVAIL, "Can't assign requested address");
/* ipc/network software -- operational errors */
- "Network is down", /* 50 - ENETDOWN */
- "Network is unreachable", /* 51 - ENETUNREACH */
- "Network dropped connection on reset", /* 52 - ENETRESET */
- "Software caused connection abort", /* 53 - ECONNABORTED */
- "Connection reset by peer", /* 54 - ECONNRESET */
- "No buffer space available", /* 55 - ENOBUFS */
- "Socket is already connected", /* 56 - EISCONN */
- "Socket is not connected", /* 57 - ENOTCONN */
- "Can't send after socket shutdown", /* 58 - ESHUTDOWN */
- "Too many references: can't splice", /* 59 - ETOOMANYREFS */
- "Operation timed out", /* 60 - ETIMEDOUT */
- "Connection refused", /* 61 - ECONNREFUSED */
-
- "Too many levels of symbolic links", /* 62 - ELOOP */
- "File name too long", /* 63 - ENAMETOOLONG */
+ ERRSTR(ENETDOWN, "Network is down");
+ ERRSTR(ENETUNREACH, "Network is unreachable");
+ ERRSTR(ENETRESET, "Network dropped connection on reset");
+ ERRSTR(ECONNABORTED, "Software caused connection abort");
+ ERRSTR(ECONNRESET, "Connection reset by peer");
+ ERRSTR(ENOBUFS, "No buffer space available");
+ ERRSTR(EISCONN, "Socket is already connected");
+ ERRSTR(ENOTCONN, "Socket is not connected");
+ ERRSTR(ESHUTDOWN, "Can't send after socket shutdown");
+ ERRSTR(ETOOMANYREFS, "Too many references: can't splice");
+ ERRSTR(ETIMEDOUT, "Operation timed out");
+ ERRSTR(ECONNREFUSED, "Connection refused");
+
+ ERRSTR(ELOOP, "Too many levels of symbolic links");
+ ERRSTR(ENAMETOOLONG, "File name too long");
/* should be rearranged */
- "Host is down", /* 64 - EHOSTDOWN */
- "No route to host", /* 65 - EHOSTUNREACH */
- "Directory not empty", /* 66 - ENOTEMPTY */
+ ERRSTR(EHOSTDOWN, "Host is down");
+ ERRSTR(EHOSTUNREACH, "No route to host");
+ ERRSTR(ENOTEMPTY, "Directory not empty");
/* quotas & mush */
- "Too many processes", /* 67 - EPROCLIM */
- "Too many users", /* 68 - EUSERS */
- "Disc quota exceeded", /* 69 - EDQUOT */
+ ERRSTR(EPROCLIM, "Too many processes");
+ ERRSTR(EUSERS, "Too many users");
+ ERRSTR(EDQUOT, "Disc quota exceeded");
/* Network File System */
- "Stale NFS file handle", /* 70 - ESTALE */
- "Too many levels of remote in path", /* 71 - EREMOTE */
- "RPC struct is bad", /* 72 - EBADRPC */
- "RPC version wrong", /* 73 - ERPCMISMATCH */
- "RPC prog. not avail", /* 74 - EPROGUNAVAIL */
- "Program version wrong", /* 75 - EPROGMISMATCH */
- "Bad procedure for program", /* 76 - EPROCUNAVAIL */
-
- "No locks available", /* 77 - ENOLCK */
- "Function not implemented", /* 78 - ENOSYS */
- "Inappropriate file type or format", /* 79 - EFTYPE */
- "Authentication error", /* 80 - EAUTH */
- "Need authenticator", /* 81 - ENEEDAUTH */
- "Identifier removed", /* 82 - EIDRM */
- "No message of desired type", /* 83 - ENOMSG */
- "Value too large to be stored in data type", /* 84 - EOVERFLOW */
- "Operation canceled", /* 85 - ECANCELED */
- "Illegal byte sequence", /* 86 - EILSEQ */
- "Attribute not found", /* 87 - ENOATTR */
+ ERRSTR(ESTALE, "Stale NFS file handle");
+ ERRSTR(EREMOTE, "Too many levels of remote in path");
+ ERRSTR(EBADRPC, "RPC struct is bad");
+ ERRSTR(ERPCMISMATCH, "RPC version wrong");
+ ERRSTR(EPROGUNAVAIL, "RPC prog. not avail");
+ ERRSTR(EPROGMISMATCH, "Program version wrong");
+ ERRSTR(EPROCUNAVAIL, "Bad procedure for program");
+
+ ERRSTR(ENOLCK, "No locks available");
+ ERRSTR(ENOSYS, "Function not implemented");
+ ERRSTR(EFTYPE, "Inappropriate file type or format");
+#ifdef EAUTH
+ ERRSTR(EAUTH, "Authentication error");
+#endif
+#ifdef ENEEDAUTH
+ ERRSTR(ENEEDAUTH, "Need authenticator");
+#endif
+ ERRSTR(EIDRM, "Identifier removed");
+ ERRSTR(ENOMSG, "No message of desired type");
+#ifdef EOVERFLOW
+ ERRSTR(EOVERFLOW, "Value too large to be stored in data type");
+#endif
+ ERRSTR(ECANCELED, "Operation canceled");
+ ERRSTR(EILSEQ, "Illegal byte sequence");
+#ifdef ENOATTR
+ ERRSTR(ENOATTR, "Attribute not found");
+#endif
/* General */
- "Programming error", /* 88 - EDOOFUS */
-
- "Bad message", /* 89 - EBADMSG */
- "Multihop attempted", /* 90 - EMULTIHOP */
- "Link has been severed", /* 91 - ENOLINK */
- "Protocol error", /* 92 - EPROTO */
-};
-static int __db_nerr = sizeof(__db_errlist) / sizeof(__db_errlist[0]);
-
-/*
- * __db_strerror --
- * Return the string associated with an errno.
- *
- * PUBLIC: #ifndef HAVE_STRERROR
- * PUBLIC: char *strerror __P((int));
- * PUBLIC: #endif
- */
-char *
-strerror(num)
- int num;
-{
- if (num >= 0 && num < __db_nerr)
- return ((char *)__db_errlist[num]);
+#ifdef EDOOFUS
+ ERRSTR(EDOOFUS, "Programming error");
+#endif
+
+#ifdef EBADMSG
+ ERRSTR(EBADMSG, "Bad message");
+#endif
+#ifdef EMULTIHOP
+ ERRSTR(EMULTIHOP, "Multihop attempted");
+#endif
+#ifdef ENOLINK
+ ERRSTR(ENOLINK, "Link has been severed");
+#endif
+#ifdef EPROTO
+ ERRSTR(EPROTO, "Protocol error");
+#endif
return (__db_unknown_error(num));
}
diff --git a/db/common/crypto_stub.c b/db/common/crypto_stub.c
index 991622b91..4485b1dd2 100644
--- a/db/common/crypto_stub.c
+++ b/db/common/crypto_stub.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: crypto_stub.c,v 12.5 2006/08/24 14:45:10 bostic Exp $
+ * $Id: crypto_stub.c,v 12.7 2007/05/17 15:14:55 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/common/db_byteorder.c b/db/common/db_byteorder.c
index 2aa85dfc9..27c7e4688 100644
--- a/db/common/db_byteorder.c
+++ b/db/common/db_byteorder.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: db_byteorder.c,v 12.5 2006/08/24 14:45:10 bostic Exp $
+ * $Id: db_byteorder.c,v 12.7 2007/05/17 15:14:55 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/common/db_clock.c b/db/common/db_clock.c
deleted file mode 100644
index 190ee5924..000000000
--- a/db/common/db_clock.c
+++ /dev/null
@@ -1,31 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2005-2006
- * Oracle Corporation. All rights reserved.
- *
- * $Id: db_clock.c,v 1.5 2006/08/24 14:45:11 bostic Exp $
- */
-
-#include "db_config.h"
-
-#include "db_int.h"
-
-/*
- * __db_difftime --
- *
- * Compute the difference in seconds and microseconds of two timers.
- *
- * PUBLIC: void __db_difftime __P((u_int32_t, u_int32_t, u_int32_t, u_int32_t,
- * PUBLIC: u_int32_t *, u_int32_t *));
- */
-void
-__db_difftime(ssec, esec, susec, eusec, secp, usecp)
- u_int32_t ssec, esec, susec, eusec, *secp, *usecp;
-{
- if ((*secp = esec - ssec) != 0 && eusec < susec) {
- (*secp)--;
- eusec += 1000000;
- }
- *usecp = eusec - susec;
-}
diff --git a/db/common/db_err.c b/db/common/db_err.c
index 0c11148b9..62e16d161 100644
--- a/db/common/db_err.c
+++ b/db/common/db_err.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: db_err.c,v 12.44 2006/09/13 14:53:34 mjc Exp $
+ * $Id: db_err.c,v 12.62 2007/05/29 15:23:05 sue Exp $
*/
#include "db_config.h"
@@ -140,7 +139,7 @@ __db_assert(dbenv, e, file, line)
{
__db_errx(dbenv, "assert failure: %s/%d: \"%s\"", file, line, e);
- abort();
+ __os_abort();
/* NOTREACHED */
}
#endif
@@ -180,7 +179,7 @@ __db_panic(dbenv, errval)
int errval;
{
if (dbenv != NULL) {
- __db_panic_set(dbenv, 1);
+ __env_panic_set(dbenv, 1);
__db_err(dbenv, errval, "PANIC");
@@ -197,7 +196,7 @@ __db_panic(dbenv, errval)
* test suite to check to make sure that DB_RUNRECOVERY is returned
* under certain conditions.
*/
- abort();
+ __os_abort();
/* NOTREACHED */
#endif
@@ -210,22 +209,6 @@ __db_panic(dbenv, errval)
}
/*
- * __db_panic_set --
- * Set/clear unrecoverable error.
- *
- * PUBLIC: void __db_panic_set __P((DB_ENV *, int));
- */
-void
-__db_panic_set(dbenv, on)
- DB_ENV *dbenv;
- int on;
-{
- if (dbenv != NULL && dbenv->reginfo != NULL)
- ((REGENV *)
- ((REGINFO *)dbenv->reginfo)->primary)->panic = on ? 1 : 0;
-}
-
-/*
* db_strerror --
* ANSI C strerror(3) for DB.
*
@@ -294,11 +277,12 @@ db_strerror(error)
case DB_REP_JOIN_FAILURE:
return
("DB_REP_JOIN_FAILURE: Unable to join replication group");
+ case DB_REP_LEASE_EXPIRED:
+ return
+ ("DB_REP_LEASE_EXPIRED: Replication leases have expired");
case DB_REP_LOCKOUT:
return
("DB_REP_LOCKOUT: Waiting for replication recovery to complete");
- case DB_REP_NEWMASTER:
- return ("DB_REP_NEWMASTER: A new master has declared itself");
case DB_REP_NEWSITE:
return ("DB_REP_NEWSITE: A new site has entered the system");
case DB_REP_NOTPERM:
@@ -343,16 +327,14 @@ __db_unknown_error(error)
* be a trailing nul byte since the error buffer is nul filled
* and longer than any error message.
*/
- static char ebuf[40];
-
- (void)snprintf(ebuf, sizeof(ebuf), "Unknown error: %d", error);
- return (ebuf);
+ (void)snprintf(DB_GLOBAL(error_buf),
+ sizeof(DB_GLOBAL(error_buf)), "Unknown error: %d", error);
+ return (DB_GLOBAL(error_buf));
}
/*
* __db_syserr --
- * Standard DB system-specific error routine. The same as __db_err except
- * we use a system-specific function to translate errors to strings.
+ * Standard error routine.
*
* PUBLIC: void __db_syserr __P((const DB_ENV *, int, const char *, ...))
* PUBLIC: __attribute__ ((__format__ (__printf__, 3, 4)));
@@ -361,20 +343,24 @@ void
#ifdef STDC_HEADERS
__db_syserr(const DB_ENV *dbenv, int error, const char *fmt, ...)
#else
-__db_syserr(dbenv, error fmt, va_alist)
+__db_syserr(dbenv, error, fmt, va_alist)
const DB_ENV *dbenv;
int error;
const char *fmt;
va_dcl
#endif
{
+ /*
+ * The same as DB->err, except we don't default to writing to stderr
+ * after any output channel has been configured, and we use a system-
+ * specific function to translate errors to strings.
+ */
DB_REAL_ERR(dbenv, error, DB_ERROR_SYSTEM, 0, fmt);
}
/*
* __db_err --
- * Standard DB error routine. The same as DB->err, except we don't write
- * to stderr if no output mechanism was specified.
+ * Standard error routine.
*
* PUBLIC: void __db_err __P((const DB_ENV *, int, const char *, ...))
* PUBLIC: __attribute__ ((__format__ (__printf__, 3, 4)));
@@ -383,20 +369,23 @@ void
#ifdef STDC_HEADERS
__db_err(const DB_ENV *dbenv, int error, const char *fmt, ...)
#else
-__db_err(dbenv, error fmt, va_alist)
+__db_err(dbenv, error, fmt, va_alist)
const DB_ENV *dbenv;
int error;
const char *fmt;
va_dcl
#endif
{
+ /*
+ * The same as DB->err, except we don't default to writing to stderr
+ * once an output channel has been configured.
+ */
DB_REAL_ERR(dbenv, error, DB_ERROR_SET, 0, fmt);
}
/*
* __db_errx --
- * Standard DB error routine. The same as DB->errx, except we don't write
- * to stderr if no output mechanism was specified.
+ * Standard error routine.
*
* PUBLIC: void __db_errx __P((const DB_ENV *, const char *, ...))
* PUBLIC: __attribute__ ((__format__ (__printf__, 2, 3)));
@@ -411,6 +400,10 @@ __db_errx(dbenv, fmt, va_alist)
va_dcl
#endif
{
+ /*
+ * The same as DB->errx, except we don't default to writing to stderr
+ * once an output channel has been configured.
+ */
DB_REAL_ERR(dbenv, 0, DB_ERROR_NOT_SET, 0, fmt);
}
@@ -500,17 +493,34 @@ __db_msgadd(dbenv, mbp, fmt, va_alist)
#endif
{
va_list ap;
- size_t len, olen;
- char buf[2048]; /* !!!: END OF THE STACK DON'T TRUST SPRINTF. */
#ifdef STDC_HEADERS
va_start(ap, fmt);
#else
va_start(ap);
#endif
- len = (size_t)vsnprintf(buf, sizeof(buf), fmt, ap);
-
+ __db_msgadd_ap(dbenv, mbp, fmt, ap);
va_end(ap);
+}
+
+/*
+ * __db_msgadd_ap --
+ * Aggregate a set of strings into a buffer for the callback API.
+ *
+ * PUBLIC: void __db_msgadd_ap
+ * PUBLIC: __P((DB_ENV *, DB_MSGBUF *, const char *, va_list));
+ */
+void
+__db_msgadd_ap(dbenv, mbp, fmt, ap)
+ DB_ENV *dbenv;
+ DB_MSGBUF *mbp;
+ const char *fmt;
+ va_list ap;
+{
+ size_t len, olen;
+ char buf[2048]; /* !!!: END OF THE STACK DON'T TRUST SPRINTF. */
+
+ len = (size_t)vsnprintf(buf, sizeof(buf), fmt, ap);
/*
* There's a heap buffer in the DB_ENV handle we use to aggregate the
@@ -600,7 +610,7 @@ __db_unknown_flag(dbenv, routine, flag)
__db_errx(dbenv, "%s: Unknown flag: %#x", routine, (u_int)flag);
#ifdef DIAGNOSTIC
- abort();
+ __os_abort();
/* NOTREACHED */
#endif
return (EINVAL);
@@ -622,7 +632,7 @@ __db_unknown_type(dbenv, routine, type)
routine, __db_dbtype_to_string(type));
#ifdef DIAGNOSTIC
- abort();
+ __os_abort();
/* NOTREACHED */
#endif
return (EINVAL);
@@ -641,7 +651,7 @@ __db_unknown_path(dbenv, routine)
__db_errx(dbenv, "%s: Unexpected code path error", routine);
#ifdef DIAGNOSTIC
- abort();
+ __os_abort();
/* NOTREACHED */
#endif
return (EINVAL);
@@ -651,13 +661,13 @@ __db_unknown_path(dbenv, routine)
* __db_check_txn --
* Check for common transaction errors.
*
- * PUBLIC: int __db_check_txn __P((DB *, DB_TXN *, u_int32_t, int));
+ * PUBLIC: int __db_check_txn __P((DB *, DB_TXN *, DB_LOCKER *, int));
*/
int
-__db_check_txn(dbp, txn, assoc_lid, read_op)
+__db_check_txn(dbp, txn, assoc_locker, read_op)
DB *dbp;
DB_TXN *txn;
- u_int32_t assoc_lid;
+ DB_LOCKER *assoc_locker;
int read_op;
{
DB_ENV *dbenv;
@@ -683,7 +693,8 @@ __db_check_txn(dbp, txn, assoc_lid, read_op)
* a transaction handle for a non-transactional database
*/
if (txn == NULL || F_ISSET(txn, TXN_PRIVATE)) {
- if (dbp->cur_lid >= TXN_MINIMUM)
+ if (dbp->cur_locker != NULL &&
+ dbp->cur_locker->id >= TXN_MINIMUM)
goto open_err;
if (!read_op && F_ISSET(dbp, DB_AM_TXN)) {
@@ -713,10 +724,12 @@ __db_check_txn(dbp, txn, assoc_lid, read_op)
}
if (F_ISSET(txn, TXN_DEADLOCK))
- return (__db_txn_deadlock_err(dbenv));
- if (dbp->cur_lid >= TXN_MINIMUM && dbp->cur_lid != txn->txnid) {
+ return (__db_txn_deadlock_err(dbenv, txn));
+ if (dbp->cur_locker != NULL &&
+ dbp->cur_locker->id >= TXN_MINIMUM &&
+ dbp->cur_locker->id != txn->txnid) {
if ((ret = __lock_locker_is_parent(dbenv,
- dbp->cur_lid, txn->txnid, &isp)) != 0)
+ dbp->cur_locker, txn->locker, &isp)) != 0)
return (ret);
if (!isp)
goto open_err;
@@ -724,7 +737,7 @@ __db_check_txn(dbp, txn, assoc_lid, read_op)
}
/*
- * If dbp->associate_lid is not DB_LOCK_INVALIDID, that means we're in
+ * If dbp->associate_locker is not NULL, that means we're in
* the middle of a DB->associate with DB_CREATE (i.e., a secondary index
* creation).
*
@@ -738,8 +751,8 @@ __db_check_txn(dbp, txn, assoc_lid, read_op)
* the secondary in another transaction (presumably by updating the
* primary).
*/
- if (!read_op && dbp->associate_lid != DB_LOCK_INVALIDID &&
- txn != NULL && dbp->associate_lid != assoc_lid) {
+ if (!read_op && dbp->associate_locker != NULL &&
+ txn != NULL && dbp->associate_locker != assoc_locker) {
__db_errx(dbenv,
"Operation forbidden while secondary index is being created");
return (EINVAL);
@@ -765,13 +778,22 @@ open_err:
* __db_txn_deadlock_err --
* Transaction has allready been deadlocked.
*
- * PUBLIC: int __db_txn_deadlock_err __P((DB_ENV *));
+ * PUBLIC: int __db_txn_deadlock_err __P((DB_ENV *, DB_TXN *));
*/
int
-__db_txn_deadlock_err(dbenv)
+__db_txn_deadlock_err(dbenv, txn)
DB_ENV *dbenv;
+ DB_TXN *txn;
{
- __db_errx(dbenv, "Previous deadlock return not resolved");
+ const char *name;
+
+ name = NULL;
+ (void)__txn_get_name(txn, &name);
+
+ __db_errx(dbenv,
+ "%s%sprevious transaction deadlock return not resolved",
+ name == NULL ? "" : name, name == NULL ? "" : ": ");
+
return (EINVAL);
}
@@ -852,7 +874,7 @@ __dbc_logging(dbc)
#ifndef DEBUG_ROP
/*
- * Only check when DEBUG_ROP is not configured. People often do
+ * Only check when DEBUG_ROP is not configured. People often do
* non-transactional reads, and debug_rop is going to write
* a log record.
*/
@@ -862,12 +884,10 @@ __dbc_logging(dbc)
rep = db_rep->region;
/*
- * If we're a client and not running recovery or internally, error.
+ * If we're a client and not running recovery or non durably, error.
*/
- if (IS_REP_CLIENT(dbenv) &&
- !F_ISSET(dbc->dbp, DB_AM_CL_WRITER) &&
- !F_ISSET(dbc->dbp, DB_AM_NOT_DURABLE)) {
- __db_errx(dbenv, "Dbc_logging: Client update");
+ if (IS_REP_CLIENT(dbenv) && !F_ISSET(dbc->dbp, DB_AM_NOT_DURABLE)) {
+ __db_errx(dbenv, "dbc_logging: Client update");
goto err;
}
@@ -884,12 +904,11 @@ __dbc_logging(dbc)
#endif
if (0) {
-err: __db_errx(dbenv, "Rep: flags 0x%lx msg_th %lu, lockout_th %d",
- (u_long)rep->flags, (u_long)rep->msg_th, rep->lockout_th);
- __db_errx(dbenv, "Rep: handle %lu, opcnt %lu, in_rec %d",
- (u_long)rep->handle_cnt, (u_long)rep->op_cnt,
- rep->in_recovery);
- abort();
+err: __db_errx(dbenv, "Rep: flags 0x%lx msg_th %lu",
+ (u_long)rep->flags, (u_long)rep->msg_th);
+ __db_errx(dbenv, "Rep: handle %lu, opcnt %lu",
+ (u_long)rep->handle_cnt, (u_long)rep->op_cnt);
+ __os_abort();
/* NOTREACHED */
}
}
diff --git a/db/common/db_getlong.c b/db/common/db_getlong.c
index 7285c50a7..3cc0a0f57 100644
--- a/db/common/db_getlong.c
+++ b/db/common/db_getlong.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: db_getlong.c,v 12.5 2006/08/24 14:45:11 bostic Exp $
+ * $Id: db_getlong.c,v 12.7 2007/05/17 15:14:55 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/common/db_idspace.c b/db/common/db_idspace.c
index 777ced7f1..44575073e 100644
--- a/db/common/db_idspace.c
+++ b/db/common/db_idspace.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2001-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2001,2007 Oracle. All rights reserved.
*
- * $Id: db_idspace.c,v 12.4 2006/08/24 14:45:11 bostic Exp $
+ * $Id: db_idspace.c,v 12.6 2007/05/17 15:14:55 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/common/db_log2.c b/db/common/db_log2.c
index 9adc5d9a5..32bdad02f 100644
--- a/db/common/db_log2.c
+++ b/db/common/db_log2.c
@@ -1,8 +1,7 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*/
/*
* Copyright (c) 1995, 1996
@@ -35,7 +34,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: db_log2.c,v 12.4 2006/08/24 14:45:11 bostic Exp $
+ * $Id: db_log2.c,v 12.6 2007/05/17 15:14:55 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/common/db_shash.c b/db/common/db_shash.c
new file mode 100644
index 000000000..d3df58a63
--- /dev/null
+++ b/db/common/db_shash.c
@@ -0,0 +1,104 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
+ *
+ * $Id: db_shash.c,v 12.7 2007/05/17 15:14:55 bostic Exp $
+ */
+
+#include "db_config.h"
+
+#include "db_int.h"
+
+/*
+ * __db_tablesize --
+ * Choose a size for the hash table.
+ *
+ * PUBLIC: u_int32_t __db_tablesize __P((u_int32_t));
+ */
+u_int32_t
+__db_tablesize(n_buckets)
+ u_int32_t n_buckets;
+{
+ /*
+ * We try to be clever about how big we make the hash tables. Use a
+ * prime number close to the "suggested" number of elements that will
+ * be in the hash table. Use 32 as the minimum hash table size.
+ *
+ * Ref: Sedgewick, Algorithms in C, "Hash Functions"
+ *
+ * Up to ~250,000 buckets, we use powers of 2. After that, we slow
+ * the rate of increase by half. For each choice, we then use a
+ * nearby prime number as the hash value.
+ *
+ * If a terabyte is the maximum cache we'll see, and we assume there
+ * are 10 1K buckets on each hash chain, then 107374182 is the maximum
+ * number of buckets we'll ever need.
+ *
+ * We don't use the obvious static data structure because some C
+ * compilers (and I use the term loosely), can't handle them.
+ */
+#define HASH_SIZE(power, prime) { \
+ if ((power) >= n_buckets) \
+ return (prime); \
+}
+ HASH_SIZE(32, 37); /* 2^5 */
+ HASH_SIZE(64, 67); /* 2^6 */
+ HASH_SIZE(128, 131); /* 2^7 */
+ HASH_SIZE(256, 257); /* 2^8 */
+ HASH_SIZE(512, 521); /* 2^9 */
+ HASH_SIZE(1024, 1031); /* 2^10 */
+ HASH_SIZE(2048, 2053); /* 2^11 */
+ HASH_SIZE(4096, 4099); /* 2^12 */
+ HASH_SIZE(8192, 8191); /* 2^13 */
+ HASH_SIZE(16384, 16381); /* 2^14 */
+ HASH_SIZE(32768, 32771); /* 2^15 */
+ HASH_SIZE(65536, 65537); /* 2^16 */
+ HASH_SIZE(131072, 131071); /* 2^17 */
+ HASH_SIZE(262144, 262147); /* 2^18 */
+ HASH_SIZE(393216, 393209); /* 2^18 + 2^18/2 */
+ HASH_SIZE(524288, 524287); /* 2^19 */
+ HASH_SIZE(786432, 786431); /* 2^19 + 2^19/2 */
+ HASH_SIZE(1048576, 1048573); /* 2^20 */
+ HASH_SIZE(1572864, 1572869); /* 2^20 + 2^20/2 */
+ HASH_SIZE(2097152, 2097169); /* 2^21 */
+ HASH_SIZE(3145728, 3145721); /* 2^21 + 2^21/2 */
+ HASH_SIZE(4194304, 4194301); /* 2^22 */
+ HASH_SIZE(6291456, 6291449); /* 2^22 + 2^22/2 */
+ HASH_SIZE(8388608, 8388617); /* 2^23 */
+ HASH_SIZE(12582912, 12582917); /* 2^23 + 2^23/2 */
+ HASH_SIZE(16777216, 16777213); /* 2^24 */
+ HASH_SIZE(25165824, 25165813); /* 2^24 + 2^24/2 */
+ HASH_SIZE(33554432, 33554393); /* 2^25 */
+ HASH_SIZE(50331648, 50331653); /* 2^25 + 2^25/2 */
+ HASH_SIZE(67108864, 67108859); /* 2^26 */
+ HASH_SIZE(100663296, 100663291); /* 2^26 + 2^26/2 */
+ HASH_SIZE(134217728, 134217757); /* 2^27 */
+ HASH_SIZE(201326592, 201326611); /* 2^27 + 2^27/2 */
+ HASH_SIZE(268435456, 268435459); /* 2^28 */
+ HASH_SIZE(402653184, 402653189); /* 2^28 + 2^28/2 */
+ HASH_SIZE(536870912, 536870909); /* 2^29 */
+ HASH_SIZE(805306368, 805306357); /* 2^29 + 2^29/2 */
+ HASH_SIZE(1073741824, 1073741827); /* 2^30 */
+ return (1073741827);
+}
+
+/*
+ * __db_hashinit --
+ * Initialize a hash table that resides in shared memory.
+ *
+ * PUBLIC: void __db_hashinit __P((void *, u_int32_t));
+ */
+void
+__db_hashinit(begin, nelements)
+ void *begin;
+ u_int32_t nelements;
+{
+ u_int32_t i;
+ SH_TAILQ_HEAD(hash_head) *headp;
+
+ headp = (struct hash_head *)begin;
+
+ for (i = 0; i < nelements; i++, headp++)
+ SH_TAILQ_INIT(headp);
+}
diff --git a/db/common/mkpath.c b/db/common/mkpath.c
index 3f2cbf73b..de6712762 100644
--- a/db/common/mkpath.c
+++ b/db/common/mkpath.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: mkpath.c,v 12.16 2006/08/24 14:45:11 bostic Exp $
+ * $Id: mkpath.c,v 12.18 2007/05/17 15:14:55 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/common/util_arg.c b/db/common/util_arg.c
index e7cb68cd8..fc9caaac2 100644
--- a/db/common/util_arg.c
+++ b/db/common/util_arg.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2001-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2001,2007 Oracle. All rights reserved.
*
- * $Id: util_arg.c,v 12.4 2006/08/24 14:45:11 bostic Exp $
+ * $Id: util_arg.c,v 12.6 2007/05/17 15:14:55 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/common/util_cache.c b/db/common/util_cache.c
index b9098cb1e..c101c4064 100644
--- a/db/common/util_cache.c
+++ b/db/common/util_cache.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: util_cache.c,v 12.4 2006/08/24 14:45:11 bostic Exp $
+ * $Id: util_cache.c,v 12.6 2007/05/17 15:14:55 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/common/util_log.c b/db/common/util_log.c
index f1888b8ac..384ef37b4 100644
--- a/db/common/util_log.c
+++ b/db/common/util_log.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: util_log.c,v 12.11 2006/08/24 14:45:11 bostic Exp $
+ * $Id: util_log.c,v 12.13 2007/05/17 15:14:55 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/common/util_sig.c b/db/common/util_sig.c
index 821253b77..10a154b05 100644
--- a/db/common/util_sig.c
+++ b/db/common/util_sig.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: util_sig.c,v 12.5 2006/08/24 14:45:11 bostic Exp $
+ * $Id: util_sig.c,v 12.7 2007/05/17 15:14:55 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/crypto/aes_method.c b/db/crypto/aes_method.c
index cd4370b3a..bc0d191ff 100644
--- a/db/crypto/aes_method.c
+++ b/db/crypto/aes_method.c
@@ -1,13 +1,12 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2001-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2001,2007 Oracle. All rights reserved.
*
* Some parts of this code originally written by Adam Stubblefield,
* -- astubble@rice.edu.
*
- * $Id: aes_method.c,v 12.5 2006/08/24 14:45:12 bostic Exp $
+ * $Id: aes_method.c,v 12.7 2007/05/17 15:14:55 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/crypto/crypto.c b/db/crypto/crypto.c
index 72a8444e0..d39f60c7c 100644
--- a/db/crypto/crypto.c
+++ b/db/crypto/crypto.c
@@ -1,13 +1,12 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
* Some parts of this code originally written by Adam Stubblefield
* -- astubble@rice.edu
*
- * $Id: crypto.c,v 12.10 2006/08/24 14:45:12 bostic Exp $
+ * $Id: crypto.c,v 12.20 2007/05/17 15:14:55 bostic Exp $
*/
#include "db_config.h"
@@ -53,13 +52,12 @@ __crypto_region_init(dbenv)
* information that contains the passwd. After we copy the
* passwd, we smash and free the one in the dbenv.
*/
- if ((ret =
- __db_shalloc(infop, sizeof(CIPHER), 0, &cipher)) != 0)
+ if ((ret = __env_alloc(infop, sizeof(CIPHER), &cipher)) != 0)
return (ret);
memset(cipher, 0, sizeof(*cipher));
- if ((ret = __db_shalloc(
- infop, dbenv->passwd_len, 0, &sh_passwd)) != 0) {
- __db_shalloc_free(infop, cipher);
+ if ((ret =
+ __env_alloc(infop, dbenv->passwd_len, &sh_passwd)) != 0) {
+ __env_alloc_free(infop, cipher);
return (ret);
}
memset(sh_passwd, 0, dbenv->passwd_len);
@@ -113,53 +111,64 @@ __crypto_region_init(dbenv)
}
/*
- * __crypto_dbenv_close --
+ * __crypto_env_close --
* Crypto-specific destruction of DB_ENV structure.
*
- * PUBLIC: int __crypto_dbenv_close __P((DB_ENV *));
+ * PUBLIC: int __crypto_env_close __P((DB_ENV *));
*/
int
-__crypto_dbenv_close(dbenv)
+__crypto_env_close(dbenv)
DB_ENV *dbenv;
{
DB_CIPHER *db_cipher;
int ret;
- ret = 0;
- db_cipher = dbenv->crypto_handle;
if (dbenv->passwd != NULL) {
memset(dbenv->passwd, 0xff, dbenv->passwd_len-1);
__os_free(dbenv, dbenv->passwd);
dbenv->passwd = NULL;
}
+
if (!CRYPTO_ON(dbenv))
return (0);
+
+ ret = 0;
+ db_cipher = dbenv->crypto_handle;
if (!F_ISSET(db_cipher, CIPHER_ANY))
ret = db_cipher->close(dbenv, db_cipher->data);
__os_free(dbenv, db_cipher);
+
+ dbenv->crypto_handle = NULL;
return (ret);
}
/*
- * __crypto_region_destroy --
- * Destroy any system resources allocated in the primary region.
+ * __crypto_env_refresh --
+ * Clean up after the crpto system on a close or failed open.
*
- * PUBLIC: int __crypto_region_destroy __P((DB_ENV *));
+ * PUBLIC: int __crypto_env_refresh __P((DB_ENV *));
*/
int
-__crypto_region_destroy(dbenv)
+__crypto_env_refresh(dbenv)
DB_ENV *dbenv;
{
CIPHER *cipher;
REGENV *renv;
REGINFO *infop;
- infop = dbenv->reginfo;
- renv = infop->primary;
- if (renv->cipher_off != INVALID_ROFF) {
- cipher = R_ADDR(infop, renv->cipher_off);
- __db_shalloc_free(infop, R_ADDR(infop, cipher->passwd));
- __db_shalloc_free(infop, cipher);
+ /*
+ * If a private region, return the memory to the heap. Not needed for
+ * filesystem-backed or system shared memory regions, that memory isn't
+ * owned by any particular process.
+ */
+ if (F_ISSET(dbenv, DB_ENV_PRIVATE)) {
+ infop = dbenv->reginfo;
+ renv = infop->primary;
+ if (renv->cipher_off != INVALID_ROFF) {
+ cipher = R_ADDR(infop, renv->cipher_off);
+ __env_alloc_free(infop, R_ADDR(infop, cipher->passwd));
+ __env_alloc_free(infop, cipher);
+ }
}
return (0);
}
@@ -192,10 +201,10 @@ __crypto_algsetup(dbenv, db_cipher, alg, do_init)
ret = __aes_setup(dbenv, db_cipher);
break;
default:
- __db_panic(dbenv, EINVAL);
- /* NOTREACHED */
+ ret = __db_panic(dbenv, EINVAL);
+ break;
}
- if (do_init)
+ if (ret == 0 && do_init)
ret = db_cipher->init(dbenv, db_cipher);
return (ret);
}
@@ -248,8 +257,7 @@ __crypto_decrypt_meta(dbenv, dbp, mbuf, do_metachk)
* since been removed).
*
* Ugly check to jump out if this format is older than what we support.
- * It assumes no encrypted page will have an unencrypted magic number,
- * but that seems relatively safe. [#10920]
+ * This works because we do not encrypt the page header.
*/
if (meta->magic == DB_HASHMAGIC && meta->version <= 5)
return (0);
@@ -376,9 +384,7 @@ __crypto_set_passwd(dbenv_src, dbenv_dest)
REGENV *renv;
REGINFO *infop;
char *sh_passwd;
- int ret;
- ret = 0;
infop = dbenv_src->reginfo;
renv = infop->primary;
diff --git a/db/crypto/crypto.html b/db/crypto/crypto.html
index 129a7f4f3..1a2dc0c15 100644
--- a/db/crypto/crypto.html
+++ b/db/crypto/crypto.html
@@ -413,7 +413,7 @@ in the log buffer.&nbsp; Records in that buffer will be encrypted, so decryption
will occur no matter whether we are returning records from the buffer or
if we are returning log records directly from the disk. Current checksum
checking is done in
-<i>__log_get_c_int.</i>&nbsp; Decryption will be done
+<i>__logc_get_int.</i>&nbsp; Decryption will be done
after the checksum is checked.
<p>There are currently two nasty issues with encrypted log records.&nbsp;
The first is that <i>__txn_force_abort</i> overwrites a commit record in
diff --git a/db/crypto/mersenne/mt19937db.c b/db/crypto/mersenne/mt19937db.c
index 6cd259932..aa20928a2 100644
--- a/db/crypto/mersenne/mt19937db.c
+++ b/db/crypto/mersenne/mt19937db.c
@@ -1,5 +1,5 @@
/*
- * $Id: mt19937db.c,v 12.4 2006/09/08 20:32:02 bostic Exp $
+ * $Id: mt19937db.c,v 12.6 2007/04/18 18:16:04 bostic Exp $
*/
#include "db_config.h"
@@ -138,10 +138,11 @@ static unsigned long
__db_genrand(dbenv)
DB_ENV *dbenv;
{
+ db_timespec ts;
unsigned long y;
static unsigned long mag01[2]={0x0, MATRIX_A};
/* mag01[x] = x * MATRIX_A for x=0,1 */
- u_int32_t secs, seed, usecs;
+ u_int32_t seed;
/*
* We are called with DB_ENV->mtx_mt locked.
@@ -155,11 +156,11 @@ __db_genrand(dbenv)
* function will return 4 bytes if we don't send in a key.
*/
do {
- __os_clock(dbenv, &secs, &usecs);
- __db_chksum(NULL, (u_int8_t *)&secs, sizeof(secs), NULL,
- (u_int8_t *)&seed);
+ __os_gettime(dbenv, &ts);
+ __db_chksum(NULL, (u_int8_t *)&ts.tv_sec,
+ sizeof(ts.tv_sec), NULL, (u_int8_t *)&seed);
} while (seed == 0);
- __db_sgenrand((long)seed, dbenv->mt, &dbenv->mti);
+ __db_sgenrand((unsigned long)seed, dbenv->mt, &dbenv->mti);
}
for (kk=0;kk<N-M;kk++) {
diff --git a/db/cxx/cxx_app.cpp b/db/cxx/cxx_app.cpp
deleted file mode 100644
index 1fcf04b5c..000000000
--- a/db/cxx/cxx_app.cpp
+++ /dev/null
@@ -1,671 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997, 1998, 1999, 2000
- * Sleepycat Software. All rights reserved.
- */
-
-#include "db_config.h"
-
-#ifndef lint
-static const char revid[] = "$Id: cxx_app.cpp,v 11.38 2000/12/21 20:30:18 dda Exp $";
-#endif /* not lint */
-
-#include <errno.h>
-#include <stdio.h> // needed for set_error_stream
-#include <string.h>
-
-#include "db_cxx.h"
-#include "cxx_int.h"
-
-#include "db_int.h"
-#include "common_ext.h"
-
-// The reason for a static variable is that some structures
-// (like Dbts) have no connection to any Db or DbEnv, so when
-// errors occur in their methods, we must have some reasonable
-// way to determine whether to throw or return errors.
-//
-// This variable is taken from flags whenever a DbEnv is constructed.
-// Normally there is only one DbEnv per program, and even if not,
-// there is typically a single policy of throwing or returning.
-//
-static int last_known_error_policy = ON_ERROR_UNKNOWN;
-
-////////////////////////////////////////////////////////////////////////
-// //
-// DbEnv //
-// //
-////////////////////////////////////////////////////////////////////////
-
-ostream *DbEnv::error_stream_ = 0;
-
-// _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)
-{
- ostream *out;
-
- out = error_stream_;
- if (out == NULL || isDbEnv == 1)
- out = &cerr;
-
- (*out) << "DbEnv::_destroy_check: open " << str << " object destroyed\n";
-}
-
-// A truism for the DbEnv object is that there is a valid
-// DB_ENV handle from the constructor until close().
-// After the close, the DB_ENV handle is invalid and
-// no operations are permitted on the DbEnv (other than
-// destructor). Leaving the DbEnv handle open and not
-// doing a close is generally considered an error.
-//
-// We used to allow DbEnv objects to be closed and reopened.
-// This implied always keeping a valid DB_ENV object, and
-// coordinating the open objects between Db/DbEnv turned
-// out to be overly complicated. Now we do not allow this.
-
-DbEnv::DbEnv(u_int32_t flags)
-: imp_(0)
-, construct_error_(0)
-, construct_flags_(flags)
-, tx_recover_callback_(0)
-, paniccall_callback_(0)
-{
- int err;
-
- COMPQUIET(err, 0);
- if ((err = initialize(0)) != 0)
- DB_ERROR("DbEnv::DbEnv", err, error_policy());
-}
-
-DbEnv::DbEnv(DB_ENV *env, u_int32_t flags)
-: imp_(0)
-, construct_error_(0)
-, construct_flags_(flags)
-, tx_recover_callback_(0)
-, paniccall_callback_(0)
-{
- int err;
-
- COMPQUIET(err, 0);
- if ((err = initialize(env)) != 0)
- DB_ERROR("DbEnv::DbEnv", err, 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.
-//
-DbEnv::~DbEnv()
-{
- DB_ENV *env = unwrap(this);
-
- if (env != NULL) {
- _destroy_check("DbEnv", 1);
- (void)env->close(env, 0);
-
- // extra safety
- cleanup();
- }
-}
-
-// called by Db destructor when the DbEnv is owned by DB.
-void DbEnv::cleanup()
-{
- DB_ENV *env = unwrap(this);
-
- if (env != NULL) {
- env->cj_internal = 0;
- imp_ = 0;
- }
-}
-
-int DbEnv::close(u_int32_t flags)
-{
- DB_ENV *env = unwrap(this);
- int err, init_err;
-
- COMPQUIET(init_err, 0);
-
- // after a close (no matter if success or failure),
- // the underlying DB_ENV object must not be accessed,
- // so we clean up in advance.
- //
- cleanup();
-
- // It's safe to throw an error after the close,
- // since our error mechanism does not peer into
- // the DB* structures.
- //
- if ((err = env->close(env, flags)) != 0) {
- DB_ERROR("DbEnv::close", err, error_policy());
- }
- return (err);
-}
-
-void DbEnv::err(int error, const char *format, ...)
-{
- va_list args;
- DB_ENV *env = unwrap(this);
-
- va_start(args, format);
- __db_real_err(env, error, 1, 1, format, args);
- va_end(args);
-}
-
-void DbEnv::errx(const char *format, ...)
-{
- va_list args;
- DB_ENV *env = unwrap(this);
-
- va_start(args, format);
- __db_real_err(env, 0, 0, 1, format, args);
- va_end(args);
-}
-
-// 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.
-//
-int DbEnv::initialize(DB_ENV *env)
-{
- int err;
-
- last_known_error_policy = error_policy();
-
- if (env == 0) {
- // Create a new DB_ENV environment.
- if ((err = ::db_env_create(&env,
- construct_flags_ & ~DB_CXX_NO_EXCEPTIONS)) != 0) {
- construct_error_ = err;
- return (err);
- }
- }
- imp_ = wrap(env);
- env->cj_internal = this; // for DB_ENV* to DbEnv* conversion
- return (0);
-}
-
-// Return a tristate value corresponding to whether we should
-// throw exceptions on errors:
-// ON_ERROR_RETURN
-// ON_ERROR_THROW
-// ON_ERROR_UNKNOWN
-//
-int DbEnv::error_policy()
-{
- if ((construct_flags_ & DB_CXX_NO_EXCEPTIONS) != 0) {
- return (ON_ERROR_RETURN);
- }
- else {
- return (ON_ERROR_THROW);
- }
-}
-
-// If an error occurred during the constructor, report it now.
-// Otherwise, call the underlying DB->open method.
-//
-int DbEnv::open(const char *db_home, u_int32_t flags, int mode)
-{
- DB_ENV *env = unwrap(this);
- int err;
-
- if ((err = construct_error_) != 0)
- DB_ERROR("Db::open", err, error_policy());
- else if ((err = env->open(env, db_home, flags, mode)) != 0)
- DB_ERROR("DbEnv::open", err, error_policy());
-
- return (err);
-}
-
-int DbEnv::remove(const char *db_home, u_int32_t flags)
-{
- DB_ENV *env;
- int ret;
-
- env = unwrap(this);
-
- // after a remove (no matter if success or failure),
- // the underlying DB_ENV object must not be accessed,
- // so we clean up in advance.
- //
- cleanup();
-
- if ((ret = env->remove(env, db_home, flags)) != 0)
- DB_ERROR("DbEnv::remove", ret, error_policy());
-
- return (ret);
-}
-
-// Report an error associated with the DbEnv.
-// error_policy is one of:
-// ON_ERROR_THROW throw an error
-// ON_ERROR_RETURN do nothing here, the caller will return an error
-// ON_ERROR_UNKNOWN defer the policy to policy saved in DbEnv::DbEnv
-//
-void DbEnv::runtime_error(const char *caller, int error, int error_policy)
-{
- if (error_policy == ON_ERROR_UNKNOWN)
- error_policy = last_known_error_policy;
- if (error_policy == ON_ERROR_THROW) {
- // Creating and throwing the object in two separate
- // statements seems to be necessary for HP compilers.
- DbException except(caller, error);
- throw except;
- }
-}
-
-// static method
-char *DbEnv::strerror(int error)
-{
- return (db_strerror(error));
-}
-
-// This is a 'glue' function declared as extern "C" so it will
-// be compatible with picky compilers that do not allow mixing
-// of function pointers to 'C' functions with function pointers
-// to C++ functions.
-//
-extern "C"
-void _stream_error_function_c(const char *prefix, char *message)
-{
- DbEnv::_stream_error_function(prefix, message);
-}
-
-void DbEnv::_stream_error_function(const char *prefix, char *message)
-{
- // HP compilers need the extra casts, we don't know why.
- if (error_stream_) {
- if (prefix) {
- (*error_stream_) << prefix << (const char *)": ";
- }
- if (message) {
- (*error_stream_) << (const char *)message;
- }
- (*error_stream_) << (const char *)"\n";
- }
-}
-
-// Note: This actually behaves a bit like a static function,
-// since DB_ENV.db_errcall has no information about which
-// db_env triggered the call. A user that has multiple DB_ENVs
-// will simply not be able to have different streams for each one.
-//
-void DbEnv::set_error_stream(ostream *stream)
-{
- DB_ENV *dbenv = unwrap(this);
-
- error_stream_ = stream;
- dbenv->set_errcall(dbenv, (stream == 0) ? 0 :
- _stream_error_function_c);
-}
-
-// static method
-char *DbEnv::version(int *major, int *minor, int *patch)
-{
- return (db_version(major, minor, patch));
-}
-
-// This is a variant of the DB_WO_ACCESS macro to define a simple set_
-// method calling the underlying C method, but unlike a simple
-// set method, it may return an error or raise an exception.
-// Note this macro expects that input _argspec is an argument
-// list element (e.g. "char *arg") defined in terms of "arg".
-//
-#define DB_DBENV_ACCESS(_name, _argspec) \
- \
-int DbEnv::set_##_name(_argspec) \
-{ \
- int ret; \
- DB_ENV *dbenv = unwrap(this); \
- \
- if ((ret = (*(dbenv->set_##_name))(dbenv, arg)) != 0) {\
- DB_ERROR("DbEnv::set_" # _name, ret, error_policy()); \
- } \
- return (ret); \
-}
-
-#define DB_DBENV_ACCESS_NORET(_name, _argspec) \
- \
-void DbEnv::set_##_name(_argspec) \
-{ \
- DB_ENV *dbenv = unwrap(this); \
- \
- (*(dbenv->set_##_name))(dbenv, arg); \
- return; \
-}
-
-DB_DBENV_ACCESS_NORET(errfile, FILE *arg)
-DB_DBENV_ACCESS_NORET(errpfx, const char *arg)
-
-// We keep these alphabetical by field name,
-// for comparison with Java's list.
-//
-DB_DBENV_ACCESS(data_dir, const char *arg)
-DB_DBENV_ACCESS(lg_bsize, u_int32_t arg)
-DB_DBENV_ACCESS(lg_dir, const char *arg)
-DB_DBENV_ACCESS(lg_max, u_int32_t arg)
-DB_DBENV_ACCESS(lk_detect, u_int32_t arg)
-DB_DBENV_ACCESS(lk_max, u_int32_t arg)
-DB_DBENV_ACCESS(lk_max_lockers, u_int32_t arg)
-DB_DBENV_ACCESS(lk_max_locks, u_int32_t arg)
-DB_DBENV_ACCESS(lk_max_objects, u_int32_t arg)
-DB_DBENV_ACCESS(mp_mmapsize, size_t arg)
-DB_DBENV_ACCESS(mutexlocks, int arg)
-DB_DBENV_ACCESS(tmp_dir, const char *arg)
-DB_DBENV_ACCESS(tx_max, u_int32_t arg)
-
-// Here are the set methods that don't fit the above mold.
-//
-extern "C" {
- typedef void (*db_errcall_fcn_type)
- (const char *, char *);
-};
-
-void DbEnv::set_errcall(void (*arg)(const char *, char *))
-{
- DB_ENV *dbenv = unwrap(this);
-
- // XXX
- // We are casting from a function ptr declared with C++
- // linkage to one (same arg types) declared with C
- // linkage. It's hard to imagine a pair of C/C++
- // compilers from the same vendor for which this
- // won't work. Unfortunately, we can't use a
- // intercept function like the others since the
- // function does not have a (DbEnv*) as one of
- // the args. If this causes trouble, we can pull
- // the same trick we use in Java, namely stuffing
- // a (DbEnv*) pointer into the prefix. We're
- // avoiding this for the moment because it obfuscates.
- //
- (*(dbenv->set_errcall))(dbenv, (db_errcall_fcn_type)arg);
-}
-
-int DbEnv::set_cachesize(u_int32_t gbytes, u_int32_t bytes, int ncache)
-{
- int ret;
- DB_ENV *dbenv = unwrap(this);
-
- if ((ret =
- (*(dbenv->set_cachesize))(dbenv, gbytes, bytes, ncache)) != 0)
- DB_ERROR("DbEnv::set_cachesize", ret, error_policy());
-
- return (ret);
-}
-
-int DbEnv::set_flags(u_int32_t flags, int onoff)
-{
- int ret;
- DB_ENV *dbenv = unwrap(this);
-
- if ((ret = (dbenv->set_flags)(dbenv, flags, onoff)) != 0)
- DB_ERROR("DbEnv::set_flags", ret, error_policy());
-
- return (ret);
-}
-
-int DbEnv::set_lk_conflicts(u_int8_t *lk_conflicts, int lk_max)
-{
- int ret;
- DB_ENV *dbenv = unwrap(this);
-
- if ((ret = (*(dbenv->set_lk_conflicts))
- (dbenv, lk_conflicts, lk_max)) != 0)
- DB_ERROR("DbEnv::set_lk_conflicts", ret, error_policy());
-
- return (ret);
-}
-
-// static method
-int DbEnv::set_pageyield(int arg)
-{
- int ret;
-
- if ((ret = db_env_set_pageyield(arg)) != 0)
- DB_ERROR("DbEnv::set_pageyield", ret, last_known_error_policy);
-
- return (ret);
-}
-
-// static method
-int DbEnv::set_panicstate(int arg)
-{
- int ret;
-
- if ((ret = db_env_set_panicstate(arg)) != 0)
- DB_ERROR("DbEnv::set_panicstate", ret, last_known_error_policy);
-
- return (ret);
-}
-
-// static method
-int DbEnv::set_region_init(int arg)
-{
- int ret;
-
- if ((ret = db_env_set_region_init(arg)) != 0)
- DB_ERROR("DbEnv::set_region_init", ret, last_known_error_policy);
-
- return (ret);
-}
-
-int DbEnv::set_server(char *host, long tsec, long ssec, u_int32_t flags)
-{
- int ret;
- DB_ENV *dbenv = unwrap(this);
-
- if ((ret = dbenv->set_server(dbenv, host, tsec, ssec, flags)) != 0)
- DB_ERROR("DbEnv::set_server", ret, error_policy());
-
- return (ret);
-}
-
-int DbEnv::set_shm_key(long shm_key)
-{
- int ret;
- DB_ENV *dbenv = unwrap(this);
-
- if ((ret = dbenv->set_shm_key(dbenv, shm_key)) != 0)
- DB_ERROR("DbEnv::set_shm_key", ret, error_policy());
-
- return (ret);
-}
-
-// static method
-int DbEnv::set_tas_spins(u_int32_t arg)
-{
- int ret;
-
- if ((ret = db_env_set_tas_spins(arg)) != 0)
- DB_ERROR("DbEnv::set_tas_spins", ret, last_known_error_policy);
-
- return (ret);
-}
-
-int DbEnv::set_verbose(u_int32_t which, int onoff)
-{
- int ret;
- DB_ENV *dbenv = unwrap(this);
-
- if ((ret = (*(dbenv->set_verbose))(dbenv, which, onoff)) != 0)
- DB_ERROR("DbEnv::set_verbose", ret, error_policy());
-
- return (ret);
-}
-
-// This is a 'glue' function declared as extern "C" so it will
-// be compatible with picky compilers that do not allow mixing
-// of function pointers to 'C' functions with function pointers
-// to C++ functions.
-//
-extern "C"
-int _tx_recover_intercept_c(DB_ENV *env, DBT *dbt,
- DB_LSN *lsn, db_recops op)
-{
- return (DbEnv::_tx_recover_intercept(env, dbt, lsn, op));
-}
-
-int DbEnv::_tx_recover_intercept(DB_ENV *env, DBT *dbt,
- DB_LSN *lsn, db_recops op)
-{
- if (env == 0) {
- DB_ERROR("DbEnv::tx_recover_callback", EINVAL, ON_ERROR_UNKNOWN);
- return (EINVAL);
- }
- DbEnv *cxxenv = (DbEnv *)env->cj_internal;
- if (cxxenv == 0) {
- DB_ERROR("DbEnv::tx_recover_callback", EINVAL, ON_ERROR_UNKNOWN);
- return (EINVAL);
- }
- if (cxxenv->tx_recover_callback_ == 0) {
- DB_ERROR("DbEnv::tx_recover_callback", EINVAL, cxxenv->error_policy());
- return (EINVAL);
- }
- Dbt *cxxdbt = (Dbt *)dbt;
- DbLsn *cxxlsn = (DbLsn *)lsn;
- return ((*cxxenv->tx_recover_callback_)(cxxenv, cxxdbt, cxxlsn, op));
-}
-
-int DbEnv::set_tx_recover
- (int (*arg)(DbEnv *, Dbt *, DbLsn *, db_recops))
-{
- int ret;
- DB_ENV *dbenv = unwrap(this);
-
- tx_recover_callback_ = arg;
- if ((ret =
- (*(dbenv->set_tx_recover))(dbenv, _tx_recover_intercept_c)) != 0)
- DB_ERROR("DbEnv::set_tx_recover", ret, error_policy());
-
- return (ret);
-}
-
-int DbEnv::set_tx_timestamp(time_t *timestamp)
-{
- int ret;
- DB_ENV *dbenv = unwrap(this);
-
- if ((ret = dbenv->set_tx_timestamp(dbenv, timestamp)) != 0)
- DB_ERROR("DbEnv::set_tx_timestamp", ret, error_policy());
-
- return (ret);
-}
-
-// This is a 'glue' function declared as extern "C" so it will
-// be compatible with picky compilers that do not allow mixing
-// of function pointers to 'C' functions with function pointers
-// to C++ functions.
-//
-extern "C"
-void _paniccall_intercept_c(DB_ENV *env, int errval)
-{
- DbEnv::_paniccall_intercept(env, errval);
-}
-
-void DbEnv::_paniccall_intercept(DB_ENV *env, int errval)
-{
- if (env == 0) {
- DB_ERROR("DbEnv::paniccall_callback", EINVAL, ON_ERROR_UNKNOWN);
- }
- DbEnv *cxxenv = (DbEnv *)env->cj_internal;
- if (cxxenv == 0) {
- DB_ERROR("DbEnv::paniccall_callback", EINVAL, ON_ERROR_UNKNOWN);
- }
- if (cxxenv->paniccall_callback_ == 0) {
- DB_ERROR("DbEnv::paniccall_callback", EINVAL, cxxenv->error_policy());
- }
- (*cxxenv->paniccall_callback_)(cxxenv, errval);
-}
-
-int DbEnv::set_paniccall(void (*arg)(DbEnv *, int))
-{
- DB_ENV *dbenv = unwrap(this);
-
- paniccall_callback_ = arg;
-
- return ((*(dbenv->set_paniccall))(dbenv, _paniccall_intercept_c));
-}
-
-// This is a 'glue' function declared as extern "C" so it will
-// be compatible with picky compilers that do not allow mixing
-// of function pointers to 'C' functions with function pointers
-// to C++ functions.
-//
-extern "C"
-int _recovery_init_intercept_c(DB_ENV *env)
-{
- return (DbEnv::_recovery_init_intercept(env));
-}
-
-int DbEnv::_recovery_init_intercept(DB_ENV *env)
-{
- if (env == 0) {
- DB_ERROR("DbEnv::recovery_init_callback", EINVAL,
- ON_ERROR_UNKNOWN);
- }
- DbEnv *cxxenv = (DbEnv *)env->cj_internal;
- if (cxxenv == 0) {
- DB_ERROR("DbEnv::recovery_init_callback", EINVAL,
- ON_ERROR_UNKNOWN);
- }
- if (cxxenv->recovery_init_callback_ == 0) {
- DB_ERROR("DbEnv::recovery_init_callback", EINVAL,
- cxxenv->error_policy());
- }
- return ((*cxxenv->recovery_init_callback_)(cxxenv));
-}
-
-int DbEnv::set_recovery_init(int (*arg)(DbEnv *))
-{
- DB_ENV *dbenv = unwrap(this);
-
- recovery_init_callback_ = arg;
-
- return ((*(dbenv->set_recovery_init))(dbenv, _recovery_init_intercept_c));
-}
-
-// This is a 'glue' function declared as extern "C" so it will
-// be compatible with picky compilers that do not allow mixing
-// of function pointers to 'C' functions with function pointers
-// to C++ functions.
-//
-extern "C"
-void _feedback_intercept_c(DB_ENV *env, int opcode, int pct)
-{
- DbEnv::_feedback_intercept(env, opcode, pct);
-}
-
-void DbEnv::_feedback_intercept(DB_ENV *env, int opcode, int pct)
-{
- if (env == 0) {
- DB_ERROR("DbEnv::feedback_callback", EINVAL, ON_ERROR_UNKNOWN);
- return;
- }
- DbEnv *cxxenv = (DbEnv *)env->cj_internal;
- if (cxxenv == 0) {
- DB_ERROR("DbEnv::feedback_callback", EINVAL, ON_ERROR_UNKNOWN);
- return;
- }
- if (cxxenv->feedback_callback_ == 0) {
- DB_ERROR("DbEnv::feedback_callback", EINVAL,
- cxxenv->error_policy());
- return;
- }
- (*cxxenv->feedback_callback_)(cxxenv, opcode, pct);
-}
-
-int DbEnv::set_feedback(void (*arg)(DbEnv *, int, int))
-{
- DB_ENV *dbenv = unwrap(this);
-
- feedback_callback_ = arg;
-
- return ((*(dbenv->set_feedback))(dbenv, _feedback_intercept_c));
-}
diff --git a/db/cxx/cxx_db.cpp b/db/cxx/cxx_db.cpp
index 0ecc2fe5e..2c95274ff 100644
--- a/db/cxx/cxx_db.cpp
+++ b/db/cxx/cxx_db.cpp
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: cxx_db.cpp,v 12.13 2006/08/24 14:45:13 bostic Exp $
+ * $Id: cxx_db.cpp,v 12.20 2007/06/28 13:02:50 mjc Exp $
*/
#include "db_config.h"
@@ -97,6 +96,7 @@ Db::Db(DbEnv *env, u_int32_t flags)
, bt_prefix_callback_(0)
, dup_compare_callback_(0)
, feedback_callback_(0)
+, h_compare_callback_(0)
, h_hash_callback_(0)
{
if (env_ == 0)
@@ -239,6 +239,9 @@ void Db::errx(const char *format, ...)
DB_REAL_ERR(db->dbenv, 0, DB_ERROR_NOT_SET, 1, format);
}
+DB_METHOD(exists, (DbTxn *txnid, Dbt *key, u_int32_t flags),
+ (db, unwrap(txnid), key, flags), DB_RETOK_EXISTS)
+
DB_METHOD(fd, (int *fdp), (db, fdp), DB_RETOK_STD)
int Db::get(DbTxn *txnid, Dbt *key, Dbt *value, u_int32_t flags)
@@ -478,6 +481,14 @@ DB_CALLBACK_C_INTERCEPT(dup_compare,
DB_SET_CALLBACK(set_dup_compare, dup_compare,
(int (*arg)(Db *cxxthis, const Dbt *data1, const Dbt *data2)), arg)
+DB_CALLBACK_C_INTERCEPT(h_compare,
+ int, (DB *cthis, const DBT *data1, const DBT *data2),
+ return,
+ (cxxthis, Dbt::get_const_Dbt(data1), Dbt::get_const_Dbt(data2)))
+
+DB_SET_CALLBACK(set_h_compare, h_compare,
+ (int (*arg)(Db *cxxthis, const Dbt *data1, const Dbt *data2)), arg)
+
DB_CALLBACK_C_INTERCEPT(h_hash,
u_int32_t, (DB *cthis, const void *data, u_int32_t len),
return, (cxxthis, data, len))
@@ -552,6 +563,8 @@ DB_METHOD(get_flags, (u_int32_t *flagsp), (db, flagsp),
DB_RETOK_STD)
DB_METHOD(set_flags, (u_int32_t flags), (db, flags),
DB_RETOK_STD)
+DB_METHOD(set_h_compare, (h_compare_fcn_type func),
+ (db, func), DB_RETOK_STD)
DB_METHOD(get_h_ffactor, (u_int32_t *h_ffactorp),
(db, h_ffactorp), DB_RETOK_STD)
DB_METHOD(set_h_ffactor, (u_int32_t h_ffactor),
@@ -568,10 +581,15 @@ DB_METHOD(set_lorder, (int db_lorder), (db, db_lorder),
DB_RETOK_STD)
DB_METHOD_VOID(get_msgfile, (FILE **msgfilep), (db, msgfilep))
DB_METHOD_VOID(set_msgfile, (FILE *msgfile), (db, msgfile))
+DB_METHOD_QUIET(get_multiple, (), (db))
DB_METHOD(get_pagesize, (u_int32_t *db_pagesizep),
(db, db_pagesizep), DB_RETOK_STD)
DB_METHOD(set_pagesize, (u_int32_t db_pagesize),
(db, db_pagesize), DB_RETOK_STD)
+DB_METHOD(get_priority, (DB_CACHE_PRIORITY *priorityp),
+ (db, priorityp), DB_RETOK_STD)
+DB_METHOD(set_priority, (DB_CACHE_PRIORITY priority),
+ (db, priority), DB_RETOK_STD)
DB_METHOD(get_re_delim, (int *re_delimp),
(db, re_delimp), DB_RETOK_STD)
DB_METHOD(set_re_delim, (int re_delim),
diff --git a/db/cxx/cxx_dbc.cpp b/db/cxx/cxx_dbc.cpp
index 4ab337c54..6ef72d331 100644
--- a/db/cxx/cxx_dbc.cpp
+++ b/db/cxx/cxx_dbc.cpp
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: cxx_dbc.cpp,v 12.5 2006/08/24 14:45:13 bostic Exp $
+ * $Id: cxx_dbc.cpp,v 12.10 2007/06/26 16:58:17 bostic Exp $
*/
#include "db_config.h"
@@ -33,7 +32,7 @@ int Dbc::_name _argspec \
int ret; \
DBC *dbc = this; \
\
- ret = dbc->c_##_name _arglist; \
+ ret = dbc->_name _arglist; \
if (!_retok(ret)) \
DB_ERROR(DbEnv::get_DbEnv(dbc->dbp->dbenv), \
"Dbc::" # _name, ret, ON_ERROR_UNKNOWN); \
@@ -58,7 +57,7 @@ int Dbc::dup(Dbc** cursorp, u_int32_t _flags)
DBC *dbc = this;
DBC *new_cursor = 0;
- ret = dbc->c_dup(dbc, &new_cursor, _flags);
+ ret = dbc->dup(dbc, &new_cursor, _flags);
if (DB_RETOK_STD(ret))
// The following cast implies that Dbc can be no larger than DBC
@@ -75,7 +74,7 @@ int Dbc::get(Dbt* key, Dbt *data, u_int32_t _flags)
int ret;
DBC *dbc = this;
- ret = dbc->c_get(dbc, key, data, _flags);
+ ret = dbc->get(dbc, key, data, _flags);
if (!DB_RETOK_DBCGET(ret)) {
if (ret == DB_BUFFER_SMALL && DB_OVERFLOWED_DBT(key))
@@ -97,7 +96,7 @@ int Dbc::pget(Dbt* key, Dbt *pkey, Dbt *data, u_int32_t _flags)
int ret;
DBC *dbc = this;
- ret = dbc->c_pget(dbc, key, pkey, data, _flags);
+ ret = dbc->pget(dbc, key, pkey, data, _flags);
/* Logic is the same as for Dbc::get - reusing macro. */
if (!DB_RETOK_DBCGET(ret)) {
@@ -117,3 +116,6 @@ int Dbc::pget(Dbt* key, Dbt *pkey, Dbt *data, u_int32_t _flags)
DBC_METHOD(put, (Dbt* key, Dbt *data, u_int32_t _flags),
(dbc, key, data, _flags), DB_RETOK_DBCPUT)
+DBC_METHOD(get_priority, (DB_CACHE_PRIORITY *priorityp),
+ (dbc, priorityp), DB_RETOK_STD)
+DBC_METHOD(set_priority, (DB_CACHE_PRIORITY pri), (dbc, pri), DB_RETOK_STD)
diff --git a/db/cxx/cxx_dbt.cpp b/db/cxx/cxx_dbt.cpp
index cb203e18d..705dea332 100644
--- a/db/cxx/cxx_dbt.cpp
+++ b/db/cxx/cxx_dbt.cpp
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: cxx_dbt.cpp,v 12.4 2006/08/24 14:45:13 bostic Exp $
+ * $Id: cxx_dbt.cpp,v 12.6 2007/05/17 15:14:56 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/cxx/cxx_env.cpp b/db/cxx/cxx_env.cpp
index ef6dd5678..3db5647c8 100644
--- a/db/cxx/cxx_env.cpp
+++ b/db/cxx/cxx_env.cpp
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: cxx_env.cpp,v 12.32 2006/09/13 14:53:36 mjc Exp $
+ * $Id: cxx_env.cpp,v 12.40 2007/06/28 13:02:50 mjc Exp $
*/
#include "db_config.h"
@@ -408,6 +407,7 @@ bool DbEnv::is_bigendian()
return unwrap(this)->is_bigendian() ? true : false;
}
+DBENV_METHOD(get_thread_count, (u_int32_t *count), (dbenv, count))
DBENV_METHOD(set_thread_count, (u_int32_t count), (dbenv, count))
// used internally during constructor
@@ -741,9 +741,9 @@ DBENV_METHOD(get_lk_max_objects, (u_int32_t *max_objectsp),
DBENV_METHOD(set_lk_max_objects, (u_int32_t max_objects), (dbenv, max_objects))
DBENV_METHOD(get_mp_max_openfd, (int *maxopenfdp), (dbenv, maxopenfdp))
DBENV_METHOD(set_mp_max_openfd, (int maxopenfd), (dbenv, maxopenfd))
-DBENV_METHOD(get_mp_max_write, (int *maxwritep, int *maxwrite_sleepp),
+DBENV_METHOD(get_mp_max_write, (int *maxwritep, db_timeout_t *maxwrite_sleepp),
(dbenv, maxwritep, maxwrite_sleepp))
-DBENV_METHOD(set_mp_max_write, (int maxwrite, int maxwrite_sleep),
+DBENV_METHOD(set_mp_max_write, (int maxwrite, db_timeout_t maxwrite_sleep),
(dbenv, maxwrite, maxwrite_sleep))
DBENV_METHOD(get_mp_mmapsize, (size_t *mmapsizep), (dbenv, mmapsizep))
DBENV_METHOD(set_mp_mmapsize, (size_t mmapsize), (dbenv, mmapsize))
@@ -772,6 +772,10 @@ DBENV_METHOD(get_cachesize,
DBENV_METHOD(set_cachesize,
(u_int32_t gbytes, u_int32_t bytes, int ncache),
(dbenv, gbytes, bytes, ncache))
+DBENV_METHOD(get_cache_max, (u_int32_t *gbytesp, u_int32_t *bytesp),
+ (dbenv, gbytesp, bytesp))
+DBENV_METHOD(set_cache_max, (u_int32_t gbytes, u_int32_t bytes),
+ (dbenv, gbytes, bytes))
void DbEnv::set_errcall(void (*arg)(const DbEnv *, const char *, const char *))
{
@@ -1039,20 +1043,20 @@ int DbEnv::rep_set_transport(int myid, int (*arg)(DbEnv *,
return (ret);
}
-DBENV_METHOD(rep_elect, (int nsites, int nvotes, int *eidp, u_int32_t flags),
- (dbenv, nsites, nvotes, eidp, flags))
+DBENV_METHOD(rep_elect, (int nsites, int nvotes, u_int32_t flags),
+ (dbenv, nsites, nvotes, flags))
DBENV_METHOD(rep_flush, (), (dbenv))
DBENV_METHOD(rep_get_config, (u_int32_t which, int *onoffp),
(dbenv, which, onoffp))
DBENV_METHOD(set_rep_request, (u_int32_t min, u_int32_t max), (dbenv, min, max))
int DbEnv::rep_process_message(Dbt *control,
- Dbt *rec, int *idp, DbLsn *ret_lsnp)
+ Dbt *rec, int id, DbLsn *ret_lsnp)
{
DB_ENV *dbenv = unwrap(this);
int ret;
- ret = dbenv->rep_process_message(dbenv, control, rec, idp, ret_lsnp);
+ ret = dbenv->rep_process_message(dbenv, control, rec, id, ret_lsnp);
if (!DB_RETOK_REPPMSG(ret))
DB_ERROR(this, "DbEnv::rep_process_message", ret,
error_policy());
@@ -1071,6 +1075,8 @@ DBENV_METHOD(rep_stat, (DB_REP_STAT **statp, u_int32_t flags),
DBENV_METHOD(rep_stat_print, (u_int32_t flags), (dbenv, flags))
DBENV_METHOD(rep_sync, (u_int32_t flags), (dbenv, flags))
+DBENV_METHOD(rep_set_lease, (u_int32_t clock_scale_factor, u_int32_t flags),
+ (dbenv, clock_scale_factor, flags))
DBENV_METHOD(rep_get_limit, (u_int32_t *gbytesp, u_int32_t *bytesp),
(dbenv, gbytesp, bytesp))
DBENV_METHOD(rep_set_limit, (u_int32_t gbytes, u_int32_t bytes),
@@ -1098,6 +1104,9 @@ DBENV_METHOD(repmgr_site_list, (u_int *countp, DB_REPMGR_SITE **listp),
(dbenv, countp, listp))
DBENV_METHOD(repmgr_start, (int nthreads, u_int32_t flags),
(dbenv, nthreads, flags))
+DBENV_METHOD(repmgr_stat, (DB_REPMGR_STAT **statp, u_int32_t flags),
+ (dbenv, statp, flags))
+DBENV_METHOD(repmgr_stat_print, (u_int32_t flags), (dbenv, flags))
// End advanced replication API method implementations.
diff --git a/db/cxx/cxx_except.cpp b/db/cxx/cxx_except.cpp
index 3a58f6bec..27b642caa 100644
--- a/db/cxx/cxx_except.cpp
+++ b/db/cxx/cxx_except.cpp
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: cxx_except.cpp,v 12.10 2006/09/13 14:53:37 mjc Exp $
+ * $Id: cxx_except.cpp,v 12.12 2007/05/17 15:14:56 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/cxx/cxx_lock.cpp b/db/cxx/cxx_lock.cpp
index 8c5a537a2..7b77330be 100644
--- a/db/cxx/cxx_lock.cpp
+++ b/db/cxx/cxx_lock.cpp
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: cxx_lock.cpp,v 12.4 2006/08/24 14:45:13 bostic Exp $
+ * $Id: cxx_lock.cpp,v 12.6 2007/05/17 15:14:56 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/cxx/cxx_log.cpp b/db/cxx/cxx_log.cpp
deleted file mode 100644
index 336b9d337..000000000
--- a/db/cxx/cxx_log.cpp
+++ /dev/null
@@ -1,125 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997, 1998, 1999, 2000
- * Sleepycat Software. All rights reserved.
- */
-
-#include "db_config.h"
-
-#ifndef lint
-static const char revid[] = "$Id: cxx_log.cpp,v 11.9 2000/09/21 15:05:45 dda Exp $";
-#endif /* not lint */
-
-#include <errno.h>
-
-#include "db_cxx.h"
-#include "cxx_int.h"
-
-////////////////////////////////////////////////////////////////////////
-// //
-// DbLog //
-// //
-////////////////////////////////////////////////////////////////////////
-
-int DbEnv::log_archive(char **list[], u_int32_t flags,
- db_malloc_fcn_type db_malloc_fcn)
-{
- int err;
- DB_ENV *env = unwrap(this);
-
- if ((err = ::log_archive(env, list, flags, db_malloc_fcn)) != 0) {
- DB_ERROR("DbEnv::log_archive", err, error_policy());
- return (err);
- }
- return (0);
-}
-
-int DbEnv::log_compare(const DbLsn *lsn0, const DbLsn *lsn1)
-{
- return (::log_compare(lsn0, lsn1));
-}
-
-int DbEnv::log_file(DbLsn *lsn, char *namep, size_t len)
-{
- int err;
- DB_ENV *env = unwrap(this);
-
- if ((err = ::log_file(env, lsn, namep, len)) != 0) {
- DB_ERROR("DbEnv::log_file", err, error_policy());
- return (err);
- }
- return (0);
-}
-
-int DbEnv::log_flush(const DbLsn *lsn)
-{
- int err;
- DB_ENV *env = unwrap(this);
-
- if ((err = ::log_flush(env, lsn)) != 0) {
- DB_ERROR("DbEnv::log_flush", err, error_policy());
- return (err);
- }
- return (0);
-}
-
-int DbEnv::log_get(DbLsn *lsn, Dbt *data, u_int32_t flags)
-{
- int err;
- DB_ENV *env = unwrap(this);
-
- if ((err = ::log_get(env, lsn, data, flags)) != 0) {
- DB_ERROR("DbEnv::log_get", err, error_policy());
- return (err);
- }
- return (0);
-}
-
-int DbEnv::log_put(DbLsn *lsn, const Dbt *data, u_int32_t flags)
-{
- int err = 0;
- DB_ENV *env = unwrap(this);
-
- if ((err = ::log_put(env, lsn, data, flags)) != 0) {
- DB_ERROR("DbEnv::log_put", err, error_policy());
- return (err);
- }
- return (0);
-}
-
-int DbEnv::log_register(Db *dbp, const char *name)
-{
- int err = 0;
- DB_ENV *env = unwrap(this);
-
- if ((err = ::log_register(env, unwrap(dbp), name)) != 0) {
- DB_ERROR("DbEnv::log_register", err, error_policy());
- return (err);
- }
- return (0);
-}
-
-int DbEnv::log_stat(DB_LOG_STAT **spp, db_malloc_fcn_type db_malloc_fcn)
-{
- int err = 0;
- DB_ENV *env = unwrap(this);
-
- if ((err = ::log_stat(env, spp, db_malloc_fcn)) != 0) {
- DB_ERROR("DbEnv::log_stat", err, error_policy());
- return (err);
- }
- return (0);
-}
-
-int DbEnv::log_unregister(Db *dbp)
-{
- int err;
- DB_ENV *env = unwrap(this);
-
- if ((err = ::log_unregister(env, unwrap(dbp))) != 0) {
- DB_ERROR("DbEnv::log_unregister", err, error_policy());
- return (err);
- }
- return (0);
-}
diff --git a/db/cxx/cxx_logc.cpp b/db/cxx/cxx_logc.cpp
index 1e3c4ef70..819f5b0fb 100644
--- a/db/cxx/cxx_logc.cpp
+++ b/db/cxx/cxx_logc.cpp
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: cxx_logc.cpp,v 12.4 2006/08/24 14:45:13 bostic Exp $
+ * $Id: cxx_logc.cpp,v 12.8 2007/06/28 13:02:50 mjc Exp $
*/
#include "db_config.h"
@@ -44,12 +43,12 @@ int DbLogc::close(u_int32_t _flags)
}
// The name _flags prevents a name clash with __db_log_cursor::flags
-int DbLogc::get(DbLsn *lsn, Dbt *data, u_int32_t _flags)
+int DbLogc::get(DbLsn *get_lsn, Dbt *data, u_int32_t _flags)
{
DB_LOGC *logc = this;
int ret;
- ret = logc->get(logc, lsn, data, _flags);
+ ret = logc->get(logc, get_lsn, data, _flags);
if (!DB_RETOK_LGGET(ret)) {
if (ret == DB_BUFFER_SMALL)
@@ -62,3 +61,18 @@ int DbLogc::get(DbLsn *lsn, Dbt *data, u_int32_t _flags)
return (ret);
}
+
+// The name _flags prevents a name clash with __db_log_cursor::flags
+int DbLogc::version(u_int32_t *versionp, u_int32_t _flags)
+{
+ DB_LOGC *logc = this;
+ int ret;
+
+ ret = logc->version(logc, versionp, _flags);
+
+ if (!DB_RETOK_LGGET(ret))
+ DB_ERROR(DbEnv::get_DbEnv(logc->dbenv),
+ "DbLogc::version", ret, ON_ERROR_UNKNOWN);
+
+ return (ret);
+}
diff --git a/db/cxx/cxx_mpool.cpp b/db/cxx/cxx_mpool.cpp
index 1085f0390..db93114ac 100644
--- a/db/cxx/cxx_mpool.cpp
+++ b/db/cxx/cxx_mpool.cpp
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: cxx_mpool.cpp,v 12.5 2006/08/24 14:45:13 bostic Exp $
+ * $Id: cxx_mpool.cpp,v 12.10 2007/06/28 13:02:50 mjc Exp $
*/
#include "db_config.h"
@@ -88,10 +87,9 @@ DB_MPOOLFILE_METHOD(get,
DB_MPOOLFILE_METHOD(open,
(const char *file, u_int32_t flags, int mode, size_t pagesize),
(mpf, file, flags, mode, pagesize), DB_RETOK_STD)
-DB_MPOOLFILE_METHOD(put, (void *pgaddr, u_int32_t flags),
- (mpf, pgaddr, flags), DB_RETOK_STD)
-DB_MPOOLFILE_METHOD(set, (void *pgaddr, u_int32_t flags),
- (mpf, pgaddr, flags), DB_RETOK_STD)
+DB_MPOOLFILE_METHOD(put,
+ (void *pgaddr, DB_CACHE_PRIORITY priority, u_int32_t flags),
+ (mpf, pgaddr, priority, flags), DB_RETOK_STD)
DB_MPOOLFILE_METHOD(get_clear_len, (u_int32_t *lenp),
(mpf, lenp), DB_RETOK_STD)
DB_MPOOLFILE_METHOD(set_clear_len, (u_int32_t len),
@@ -108,6 +106,8 @@ DB_MPOOLFILE_METHOD(get_ftype, (int *ftypep),
(mpf, ftypep), DB_RETOK_STD)
DB_MPOOLFILE_METHOD(set_ftype, (int ftype),
(mpf, ftype), DB_RETOK_STD)
+DB_MPOOLFILE_METHOD(get_last_pgno, (db_pgno_t *pgnop),
+ (mpf, pgnop), DB_RETOK_STD)
DB_MPOOLFILE_METHOD(get_lsn_offset, (int32_t *offsetp),
(mpf, offsetp), DB_RETOK_STD)
DB_MPOOLFILE_METHOD(set_lsn_offset, (int32_t offset),
diff --git a/db/cxx/cxx_multi.cpp b/db/cxx/cxx_multi.cpp
index a53f09b34..bf1c61e68 100644
--- a/db/cxx/cxx_multi.cpp
+++ b/db/cxx/cxx_multi.cpp
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: cxx_multi.cpp,v 12.7 2006/08/24 14:45:13 bostic Exp $
+ * $Id: cxx_multi.cpp,v 12.9 2007/05/17 15:14:56 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/cxx/cxx_seq.cpp b/db/cxx/cxx_seq.cpp
index d3a4bd0ad..33b2af37d 100644
--- a/db/cxx/cxx_seq.cpp
+++ b/db/cxx/cxx_seq.cpp
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: cxx_seq.cpp,v 12.6 2006/08/24 14:45:13 bostic Exp $
+ * $Id: cxx_seq.cpp,v 12.9 2007/05/17 17:23:26 bostic Exp $
*/
#include "db_config.h"
@@ -97,7 +96,7 @@ Db *DbSequence::get_db()
Dbt *DbSequence::get_key()
{
DB_SEQUENCE *seq = unwrap(this);
- memset(&key_, 0, sizeof (DBT));
+ memset(&key_, 0, sizeof(DBT));
(void)seq->get_key(seq, &key_);
return Dbt::get_Dbt(&key_);
}
diff --git a/db/cxx/cxx_table.cpp b/db/cxx/cxx_table.cpp
deleted file mode 100644
index b7b335d26..000000000
--- a/db/cxx/cxx_table.cpp
+++ /dev/null
@@ -1,808 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997, 1998, 1999, 2000
- * Sleepycat Software. All rights reserved.
- */
-
-#include "db_config.h"
-
-#ifndef lint
-static const char revid[] = "$Id: cxx_table.cpp,v 11.35 2001/01/11 18:19:49 bostic Exp $";
-#endif /* not lint */
-
-#include <errno.h>
-#include <string.h>
-
-#include "db_cxx.h"
-#include "cxx_int.h"
-
-#include "db_int.h"
-#include "db_page.h"
-#include "db_ext.h"
-#include "common_ext.h"
-
-////////////////////////////////////////////////////////////////////////
-// //
-// Db //
-// //
-////////////////////////////////////////////////////////////////////////
-
-// A truism for the DbEnv object is that there is a valid
-// DB_ENV handle from the constructor until close().
-// After the close, the DB handle is invalid and
-// no operations are permitted on the Db (other than
-// destructor). Leaving the Db handle open and not
-// doing a close is generally considered an error.
-//
-// We used to allow Db objects to be closed and reopened.
-// This implied always keeping a valid DB object, and
-// coordinating the open objects between Db/DbEnv turned
-// out to be overly complicated. Now we do not allow this.
-
-Db::Db(DbEnv *env, u_int32_t flags)
-: imp_(0)
-, env_(env)
-, construct_error_(0)
-, flags_(0)
-, construct_flags_(flags)
-{
- if (env_ == 0)
- flags_ |= DB_CXX_PRIVATE_ENV;
- initialize();
-}
-
-// 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.
-//
-Db::~Db()
-{
- DB *db;
-
- db = unwrap(this);
- if (db != NULL) {
- DbEnv::_destroy_check("Db", 0);
- cleanup();
- }
-}
-
-// 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()
-{
- u_int32_t cxx_flags;
- DB *db;
- int err;
- DB_ENV *cenv = unwrap(env_);
-
- cxx_flags = construct_flags_ & DB_CXX_NO_EXCEPTIONS;
-
- // Create a new underlying DB object.
- // We rely on the fact that if a NULL DB_ENV* is given,
- // one is allocated by DB.
- //
- if ((err = db_create(&db, cenv,
- construct_flags_ & ~cxx_flags)) != 0) {
- construct_error_ = err;
- return (err);
- }
-
- // Associate the DB with this object
- imp_ = wrap(db);
- db->cj_internal = this;
-
- // Create a new DbEnv from a DB_ENV* if it was created locally.
- // It is deleted in Db::close().
- //
- if ((flags_ & DB_CXX_PRIVATE_ENV) != 0)
- env_ = new DbEnv(db->dbenv, cxx_flags);
-
- return (0);
-}
-
-// private method to cleanup after destructor or during close.
-// If the environment was created by this Db object, we optionally
-// delete it, or return it so the caller can delete it after
-// last use.
-//
-void Db::cleanup()
-{
- DB *db = unwrap(this);
-
- if (db != NULL) {
- // extra safety
- db->cj_internal = 0;
- imp_ = 0;
-
- // we must dispose of the DbEnv object if
- // we created it. This will be the case
- // if a NULL DbEnv was passed into the constructor.
- // The underlying DB_ENV object will be inaccessible
- // after the close, so we must clean it up now.
- //
- if ((flags_ & DB_CXX_PRIVATE_ENV) != 0) {
- env_->cleanup();
- delete env_;
- env_ = 0;
- }
- }
- construct_error_ = 0;
-}
-
-// Return a tristate value corresponding to whether we should
-// throw exceptions on errors:
-// ON_ERROR_RETURN
-// ON_ERROR_THROW
-// ON_ERROR_UNKNOWN
-//
-int Db::error_policy()
-{
- if (env_ != NULL)
- return (env_->error_policy());
- else {
- // If the env_ is null, that means that the user
- // did not attach an environment, so the correct error
- // policy can be deduced from constructor flags
- // for this Db.
- //
- if ((construct_flags_ & DB_CXX_NO_EXCEPTIONS) != 0) {
- return (ON_ERROR_RETURN);
- }
- else {
- return (ON_ERROR_THROW);
- }
- }
-}
-
-int Db::close(u_int32_t flags)
-{
- DB *db = unwrap(this);
- int err;
-
- // after a DB->close (no matter if success or failure),
- // the underlying DB object must not be accessed,
- // so we clean up in advance.
- //
- cleanup();
-
- // It's safe to throw an error after the close,
- // since our error mechanism does not peer into
- // the DB* structures.
- //
- if ((err = db->close(db, flags)) != 0 && err != DB_INCOMPLETE)
- DB_ERROR("Db::close", err, error_policy());
-
- return (err);
-}
-
-int Db::cursor(DbTxn *txnid, Dbc **cursorp, u_int32_t flags)
-{
- DB *db = unwrap(this);
- DBC *dbc = 0;
- int err;
-
- if ((err = db->cursor(db, unwrap(txnid), &dbc, flags)) != 0) {
- DB_ERROR("Db::cursor", err, error_policy());
- return (err);
- }
-
- // The following cast implies that Dbc can be no larger than DBC
- *cursorp = (Dbc*)dbc;
- return (0);
-}
-
-int Db::del(DbTxn *txnid, Dbt *key, u_int32_t flags)
-{
- DB *db = unwrap(this);
- int err;
-
- if ((err = db->del(db, unwrap(txnid), key, flags)) != 0) {
- // DB_NOTFOUND is a "normal" return, so should not be
- // thrown as an error
- //
- if (err != DB_NOTFOUND) {
- DB_ERROR("Db::del", err, error_policy());
- return (err);
- }
- }
- return (err);
-}
-
-void Db::err(int error, const char *format, ...)
-{
- va_list args;
- DB *db = unwrap(this);
-
- va_start(args, format);
- __db_real_err(db->dbenv, error, 1, 1, format, args);
- va_end(args);
-}
-
-void Db::errx(const char *format, ...)
-{
- va_list args;
- DB *db = unwrap(this);
-
- va_start(args, format);
- __db_real_err(db->dbenv, 0, 0, 1, format, args);
- va_end(args);
-}
-
-int Db::fd(int *fdp)
-{
- DB *db = unwrap(this);
- int err;
-
- if ((err = db->fd(db, fdp)) != 0) {
- DB_ERROR("Db::fd", err, error_policy());
- return (err);
- }
- return (0);
-}
-
-// This is a 'glue' function declared as extern "C" so it will
-// be compatible with picky compilers that do not allow mixing
-// of function pointers to 'C' functions with function pointers
-// to C++ functions.
-//
-extern "C"
-void _db_feedback_intercept_c(DB *db, int opcode, int pct)
-{
- Db::_feedback_intercept(db, opcode, pct);
-}
-
-//static
-void Db::_feedback_intercept(DB *db, int opcode, int pct)
-{
- if (db == 0) {
- DB_ERROR("Db::feedback_callback", EINVAL, ON_ERROR_UNKNOWN);
- return;
- }
- Db *cxxdb = (Db *)db->cj_internal;
- if (cxxdb == 0) {
- DB_ERROR("Db::feedback_callback", EINVAL, ON_ERROR_UNKNOWN);
- return;
- }
- if (cxxdb->feedback_callback_ == 0) {
- DB_ERROR("Db::feedback_callback", EINVAL, cxxdb->error_policy());
- return;
- }
- (*cxxdb->feedback_callback_)(cxxdb, opcode, pct);
-}
-
-int Db::set_feedback(void (*arg)(Db *, int, int))
-{
- DB *db = unwrap(this);
-
- feedback_callback_ = arg;
-
- return ((*(db->set_feedback))(db, _db_feedback_intercept_c));
-}
-
-// This is a 'glue' function declared as extern "C" so it will
-// be compatible with picky compilers that do not allow mixing
-// of function pointers to 'C' functions with function pointers
-// to C++ functions.
-//
-extern "C"
-int _db_append_recno_intercept_c(DB *db, DBT *data, db_recno_t recno)
-{
- return (Db::_append_recno_intercept(db, data, recno));
-}
-
-//static
-int Db::_append_recno_intercept(DB *db, DBT *data, db_recno_t recno)
-{
- int err;
-
- if (db == 0) {
- DB_ERROR("Db::append_recno_callback", EINVAL, ON_ERROR_UNKNOWN);
- return (EINVAL);
- }
- Db *cxxdb = (Db *)db->cj_internal;
- if (cxxdb == 0) {
- DB_ERROR("Db::append_recno_callback", EINVAL, ON_ERROR_UNKNOWN);
- return (EINVAL);
- }
- if (cxxdb->append_recno_callback_ == 0) {
- DB_ERROR("Db::append_recno_callback", EINVAL, cxxdb->error_policy());
- return (EINVAL);
- }
-
- // making these copies is slow but portable.
- // Another alternative is to cast the DBT* manufactured
- // by the C layer to a Dbt*. It 'should be' safe since
- // Dbt is a thin shell over DBT, adding no extra data,
- // but is nonportable, and could lead to errors if anything
- // were added to the Dbt class.
- //
- Dbt cxxdbt;
- memcpy((DBT *)&cxxdbt, data, sizeof(DBT));
- err = (*cxxdb->append_recno_callback_)(cxxdb, &cxxdbt, recno);
- memcpy(data, (DBT *)&cxxdbt, sizeof(DBT));
- return (err);
-}
-
-int Db::set_append_recno(int (*arg)(Db *, Dbt *, db_recno_t))
-{
- DB *db = unwrap(this);
-
- append_recno_callback_ = arg;
-
- return ((*(db->set_append_recno))(db, _db_append_recno_intercept_c));
-}
-
-int Db::get(DbTxn *txnid, Dbt *key, Dbt *value, u_int32_t flags)
-{
- DB *db = unwrap(this);
- int err;
-
- if ((err = db->get(db, unwrap(txnid), key, value, flags)) != 0) {
- // DB_NOTFOUND and DB_KEYEMPTY are "normal" returns,
- // so should not be thrown as an error
- //
- if (err != DB_NOTFOUND && err != DB_KEYEMPTY) {
- DB_ERROR("Db::get", err, error_policy());
- return (err);
- }
- }
- return (err);
-}
-
-int Db::get_byteswapped() const
-{
- DB *db = (DB *)unwrapConst(this);
- return (db->get_byteswapped(db));
-}
-
-DBTYPE Db::get_type() const
-{
- DB *db = (DB *)unwrapConst(this);
- return ((DBTYPE)db->get_type(db));
-}
-
-int Db::join(Dbc **curslist, Dbc **cursorp, u_int32_t flags)
-{
- // Dbc is a "compatible" subclass of DBC -
- // that is, no virtual functions or even extra data members,
- // so this cast, although technically non-portable,
- // "should" always be okay.
- //
- DBC **list = (DBC **)(curslist);
- DB *db = unwrap(this);
- DBC *dbc = 0;
- int err;
-
- if ((err = db->join(db, list, &dbc, flags)) != 0) {
- DB_ERROR("Db::join_cursor", err, error_policy());
- return (err);
- }
- *cursorp = (Dbc*)dbc;
- return (0);
-}
-
-int Db::key_range(DbTxn *txnid, Dbt *key,
- DB_KEY_RANGE *results, u_int32_t flags)
-{
- DB *db = unwrap(this);
- int err;
-
- if ((err = db->key_range(db, unwrap(txnid), key,
- results, flags)) != 0) {
- DB_ERROR("Db::key_range", err, error_policy());
- return (err);
- }
- return (0);
-}
-
-// If an error occurred during the constructor, report it now.
-// Otherwise, call the underlying DB->open method.
-//
-int Db::open(const char *file, const char *database,
- DBTYPE type, u_int32_t flags, int mode)
-{
- int err;
- DB *db = unwrap(this);
-
- if ((err = construct_error_) != 0)
- DB_ERROR("Db::open", construct_error_, error_policy());
- else if ((err = db->open(db, file, database, type, flags, mode)) != 0)
- DB_ERROR("Db::open", err, error_policy());
-
- return (err);
-}
-
-int Db::put(DbTxn *txnid, Dbt *key, Dbt *value, u_int32_t flags)
-{
- int err;
- DB *db = unwrap(this);
-
- if ((err = db->put(db, unwrap(txnid), key, value, flags)) != 0) {
-
- // DB_KEYEXIST is a "normal" return, so should not be
- // thrown as an error
- //
- if (err != DB_KEYEXIST) {
- DB_ERROR("Db::put", err, error_policy());
- return (err);
- }
- }
- return (err);
-}
-
-int Db::rename(const char *file, const char *database,
- const char *newname, u_int32_t flags)
-{
- int err = 0;
- DB *db = unwrap(this);
-
- if (!db) {
- DB_ERROR("Db::rename", EINVAL, error_policy());
- return (EINVAL);
- }
-
- // after a DB->rename (no matter if success or failure),
- // the underlying DB object must not be accessed,
- // so we clean up in advance.
- //
- cleanup();
-
- if ((err = db->rename(db, file, database, newname, flags)) != 0) {
- DB_ERROR("Db::rename", err, error_policy());
- return (err);
- }
- return (0);
-}
-
-int Db::remove(const char *file, const char *database, u_int32_t flags)
-{
- int err = 0;
- DB *db = unwrap(this);
-
- if (!db) {
- DB_ERROR("Db::remove", EINVAL, error_policy());
- return (EINVAL);
- }
-
- // after a DB->remove (no matter if success or failure),
- // the underlying DB object must not be accessed,
- // so we clean up in advance.
- //
- cleanup();
-
- if ((err = db->remove(db, file, database, flags)) != 0)
- DB_ERROR("Db::remove", err, error_policy());
-
- return (err);
-}
-
-int Db::stat(void *sp, db_malloc_fcn_type db_malloc_fcn, u_int32_t flags)
-{
- int err;
- DB *db = unwrap(this);
-
- if (!db) {
- DB_ERROR("Db::stat", EINVAL, error_policy());
- return (EINVAL);
- }
- if ((err = db->stat(db, sp, db_malloc_fcn, flags)) != 0) {
- DB_ERROR("Db::stat", err, error_policy());
- return (err);
- }
- return (0);
-}
-
-int Db::sync(u_int32_t flags)
-{
- int err;
- DB *db = unwrap(this);
-
- if (!db) {
- DB_ERROR("Db::sync", EINVAL, error_policy());
- return (EINVAL);
- }
- if ((err = db->sync(db, flags)) != 0 && err != DB_INCOMPLETE) {
- DB_ERROR("Db::sync", err, error_policy());
- return (err);
- }
- return (err);
-}
-
-int Db::upgrade(const char *name, u_int32_t flags)
-{
- int err;
- DB *db = unwrap(this);
-
- if (!db) {
- DB_ERROR("Db::upgrade", EINVAL, error_policy());
- return (EINVAL);
- }
- if ((err = db->upgrade(db, name, flags)) != 0) {
- DB_ERROR("Db::upgrade", err, error_policy());
- return (err);
- }
- return (0);
-}
-
-static int _verify_callback_cxx(void *handle, const void *str_arg)
-{
- char *str;
- ostream *out;
-
- str = (char *)str_arg;
- out = (ostream *)handle;
-
- (*out) << str;
- if (out->fail())
- return (EIO);
-
- return (0);
-}
-
-// This is a 'glue' function declared as extern "C" so it will
-// be compatible with picky compilers that do not allow mixing
-// of function pointers to 'C' functions with function pointers
-// to C++ functions.
-//
-extern "C"
-int _verify_callback_c(void *handle, const void *str_arg)
-{
- return (_verify_callback_cxx(handle, str_arg));
-}
-
-int Db::verify(const char *name, const char *subdb,
- ostream *ostr, u_int32_t flags)
-{
- int err;
- DB *db = unwrap(this);
-
- if (!db) {
- DB_ERROR("Db::verify", EINVAL, error_policy());
- return (EINVAL);
- }
- if ((err = __db_verify_internal(db, name, subdb, ostr,
- _verify_callback_c, flags)) != 0) {
- DB_ERROR("Db::verify", err, error_policy());
- return (err);
- }
- return (0);
-}
-
-// This is a variant of the DB_WO_ACCESS macro to define a simple set_
-// method calling the underlying C method, but unlike a simple
-// set method, it may return an error or raise an exception.
-// Note this macro expects that input _argspec is an argument
-// list element (e.g. "char *arg") defined in terms of "arg".
-//
-#define DB_DB_ACCESS(_name, _argspec) \
-\
-int Db::set_##_name(_argspec) \
-{ \
- int ret; \
- DB *db = unwrap(this); \
- \
- if ((ret = (*(db->set_##_name))(db, arg)) != 0) { \
- DB_ERROR("Db::set_" # _name, ret, error_policy()); \
- } \
- return (ret); \
-}
-
-#define DB_DB_ACCESS_NORET(_name, _argspec) \
- \
-void Db::set_##_name(_argspec) \
-{ \
- DB *db = unwrap(this); \
- \
- (*(db->set_##_name))(db, arg); \
- return; \
-}
-
-DB_DB_ACCESS(bt_compare, bt_compare_fcn_type arg)
-DB_DB_ACCESS(bt_maxkey, u_int32_t arg)
-DB_DB_ACCESS(bt_minkey, u_int32_t arg)
-DB_DB_ACCESS(bt_prefix, bt_prefix_fcn_type arg)
-DB_DB_ACCESS(dup_compare, dup_compare_fcn_type arg)
-DB_DB_ACCESS_NORET(errfile, FILE *arg)
-DB_DB_ACCESS_NORET(errpfx, const char *arg)
-DB_DB_ACCESS(flags, u_int32_t arg)
-DB_DB_ACCESS(h_ffactor, u_int32_t arg)
-DB_DB_ACCESS(h_hash, h_hash_fcn_type arg)
-DB_DB_ACCESS(h_nelem, u_int32_t arg)
-DB_DB_ACCESS(lorder, int arg)
-DB_DB_ACCESS(malloc, db_malloc_fcn_type arg)
-DB_DB_ACCESS(pagesize, u_int32_t arg)
-DB_DB_ACCESS(realloc, db_realloc_fcn_type arg)
-DB_DB_ACCESS(re_delim, int arg)
-DB_DB_ACCESS(re_len, u_int32_t arg)
-DB_DB_ACCESS(re_pad, int arg)
-DB_DB_ACCESS(re_source, char *arg)
-DB_DB_ACCESS(q_extentsize, u_int32_t arg)
-
-// Here are the set methods that don't fit the above mold.
-//
-
-void Db::set_errcall(void (*arg)(const char *, char *))
-{
- env_->set_errcall(arg);
-}
-
-int Db::set_cachesize(u_int32_t gbytes, u_int32_t bytes, int ncache)
-{
- int ret;
- DB *db = unwrap(this);
-
- if ((ret = (*(db->set_cachesize))(db, gbytes, bytes, ncache)) != 0) {
- DB_ERROR("Db::set_cachesize", ret, error_policy());
- }
- return (ret);
-}
-
-int Db::set_paniccall(void (*callback)(DbEnv *, int))
-{
- return (env_->set_paniccall(callback));
-}
-
-void Db::set_error_stream(ostream *error_stream)
-{
- env_->set_error_stream(error_stream);
-}
-
-////////////////////////////////////////////////////////////////////////
-// //
-// Dbc //
-// //
-////////////////////////////////////////////////////////////////////////
-
-// It's private, and should never be called, but VC4.0 needs it resolved
-//
-Dbc::~Dbc()
-{
-}
-
-int Dbc::close()
-{
- DBC *cursor = this;
- int err;
-
- if ((err = cursor->c_close(cursor)) != 0) {
- DB_ERROR("Db::close", err, ON_ERROR_UNKNOWN);
- return (err);
- }
- return (0);
-}
-
-int Dbc::count(db_recno_t *countp, u_int32_t flags_arg)
-{
- DBC *cursor = this;
- int err;
-
- if ((err = cursor->c_count(cursor, countp, flags_arg)) != 0) {
- DB_ERROR("Db::count", err, ON_ERROR_UNKNOWN);
- return (err);
- }
- return (0);
-}
-
-int Dbc::del(u_int32_t flags_arg)
-{
- DBC *cursor = this;
- int err;
-
- if ((err = cursor->c_del(cursor, flags_arg)) != 0) {
-
- // DB_KEYEMPTY is a "normal" return, so should not be
- // thrown as an error
- //
- if (err != DB_KEYEMPTY) {
- DB_ERROR("Db::del", err, ON_ERROR_UNKNOWN);
- return (err);
- }
- }
- return (err);
-}
-
-int Dbc::dup(Dbc** cursorp, u_int32_t flags_arg)
-{
- DBC *cursor = this;
- DBC *new_cursor = 0;
- int err;
-
- if ((err = cursor->c_dup(cursor, &new_cursor, flags_arg)) != 0) {
- DB_ERROR("Db::dup", err, ON_ERROR_UNKNOWN);
- return (err);
- }
-
- // The following cast implies that Dbc can be no larger than DBC
- *cursorp = (Dbc*)new_cursor;
- return (0);
-}
-
-int Dbc::get(Dbt* key, Dbt *data, u_int32_t flags_arg)
-{
- DBC *cursor = this;
- int err;
-
- if ((err = cursor->c_get(cursor, key, data, flags_arg)) != 0) {
-
- // DB_NOTFOUND and DB_KEYEMPTY are "normal" returns,
- // so should not be thrown as an error
- //
- if (err != DB_NOTFOUND && err != DB_KEYEMPTY) {
- DB_ERROR("Db::get", err, ON_ERROR_UNKNOWN);
- return (err);
- }
- }
- return (err);
-}
-
-int Dbc::put(Dbt* key, Dbt *data, u_int32_t flags_arg)
-{
- DBC *cursor = this;
- int err;
-
- if ((err = cursor->c_put(cursor, key, data, flags_arg)) != 0) {
-
- // DB_KEYEXIST is a "normal" return, so should not be
- // thrown as an error
- //
- if (err != DB_KEYEXIST) {
- DB_ERROR("Db::put", err, ON_ERROR_UNKNOWN);
- return (err);
- }
- }
- return (err);
-}
-
-////////////////////////////////////////////////////////////////////////
-// //
-// Dbt //
-// //
-////////////////////////////////////////////////////////////////////////
-
-Dbt::Dbt()
-{
- DBT *dbt = this;
- memset(dbt, 0, sizeof(DBT));
-}
-
-Dbt::Dbt(void *data_arg, size_t size_arg)
-{
- DBT *dbt = this;
- memset(dbt, 0, sizeof(DBT));
- set_data(data_arg);
- set_size(size_arg);
-}
-
-Dbt::~Dbt()
-{
-}
-
-Dbt::Dbt(const Dbt &that)
-{
- const DBT *from = &that;
- DBT *to = this;
- memcpy(to, from, sizeof(DBT));
-}
-
-Dbt &Dbt::operator = (const Dbt &that)
-{
- if (this != &that) {
- const DBT *from = &that;
- DBT *to = this;
- memcpy(to, from, sizeof(DBT));
- }
- return (*this);
-}
-
-DB_RW_ACCESS(Dbt, void *, data, data)
-DB_RW_ACCESS(Dbt, u_int32_t, size, size)
-DB_RW_ACCESS(Dbt, u_int32_t, ulen, ulen)
-DB_RW_ACCESS(Dbt, u_int32_t, dlen, dlen)
-DB_RW_ACCESS(Dbt, u_int32_t, doff, doff)
-DB_RW_ACCESS(Dbt, u_int32_t, flags, flags)
diff --git a/db/cxx/cxx_txn.cpp b/db/cxx/cxx_txn.cpp
index 6456e3461..cb0995d15 100644
--- a/db/cxx/cxx_txn.cpp
+++ b/db/cxx/cxx_txn.cpp
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: cxx_txn.cpp,v 12.5 2006/08/24 14:45:13 bostic Exp $
+ * $Id: cxx_txn.cpp,v 12.7 2007/05/17 15:14:56 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/cxx/namemap.txt b/db/cxx/namemap.txt
deleted file mode 100644
index 752077185..000000000
--- a/db/cxx/namemap.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-$Id: namemap.txt,v 10.4 2000/02/19 20:57:54 bostic Exp $
-
-The bulk of DB provides for wrapper classes and appropriately named methods
-that call into DB. For the most part, there is a straightforward mapping of
-names. For the purposes of referencing documentation, this chart shows the
-underlying C structure name for each C++ class. In some cases, using the
-given C prefix with a C++ method name gives the underlying C function name.
-For example, DbMpoolFile::close() is implemented by memp_fclose().
-
-C++ C C prefix
-
-Db DB
-DbEnv DB_ENV
-Dbc DBC
-DbException none
-DbInfo DB_INFO
-DbLock DB_LOCK lock_
-DbLsn DB_LSN
-DbMpoolFile DB_MPOOL_FILE memp_
-Dbt DBT
-DbTxn DB_TXN txn_
diff --git a/db/db/Design.fileop b/db/db/Design.fileop
deleted file mode 100644
index 187f1ffaf..000000000
--- a/db/db/Design.fileop
+++ /dev/null
@@ -1,452 +0,0 @@
-# $Id: Design.fileop,v 11.4 2000/02/19 20:57:54 bostic Exp $
-
-The design of file operation recovery.
-
-Keith has asked me to write up notes on our current status of database
-create and delete and recovery, why it's so hard, and how we've violated
-all the cornerstone assumptions on which our recovery framework is based.
-
-I am including two documents at the end of this one. The first is the
-initial design of the recoverability of file create and delete (there is
-no talk of subdatabases there, because we didn't think we'd have to do
-anything special there). I will annotate this document on where things
-changed.
-
-The second is the design of recd007 which is supposed to test our ability
-to recover these operations regardless of where one crashes. This test
-is fundamentally different from our other recovery tests in the following
-manner. Normally, the application controls transaction boundaries.
-Therefore, we can perform an operation and then decide whether to commit
-or abort it. In the normal recovery tests, we force the database into
-each of the four possible states from a recovery perspective:
-
- database is pre-op, undo (do nothing)
- database is pre-op, redo
- database is post-op, undo
- database is post-op, redo (do nothing)
-
-By copying databases at various points and initiating txn_commit and abort
-appropriately, we can make all these things happen. Notice that the one
-case we don't handle is where page A is in one state (e.g., pre-op) and
-page B is in another state (e.g., post-op). I will argue that these don't
-matter because each page is recovered independently. If anyone can poke
-holes in this, I'm interested.
-
-The problem with create/delete recovery testing is that the transaction
-is begun and ended all inside the library. Therefore, there is never any
-point (outside the library) where we can copy files and or initiate
-abort/commit. In order to still put the recovery code through its paces,
-Sue designed an infrastructure that lets you tell the library where to
-make copies of things and where to suddenly inject errors so that the
-transaction gets aborted. This level of detail allows us to push the
-create/delete recovery code through just about every recovery path
-possible (although I'm sure Mike will tell me I'm wrong when he starts to
-run code coverage tools).
-
-OK, so that's all preamble and a brief discussion of the documents I'm
-enclosing.
-
-Why was this so hard and painful and why is the code so Q@#$!% complicated?
-The following is a discussion/explanation, but to the best of my knowledge,
-the structure we have in place now works. The key question we need to be
-asking is, "Does this need to have to be so complex or should we redesign
-portions to simplify it?" At this point, there is no obvious way to simplify
-it in my book, but I may be having difficulty seeing this because my mind is
-too polluted at this point.
-
-Our overall strategy for recovery is that we do write-ahead logging,
-that is we log an operation and make sure it is on disk before any
-data corresponding to the data that log record describes is on disk.
-Typically we use log sequence numbers (LSNs) to mark the data so that
-during recovery, we can look at the data and determine if it is in a
-state before a particular log record or after a particular log record.
-
-In the good old days, opens were not transaction protected, so we could
-do regular old opens during recovery and if the file existed, we opened
-it and if it didn't (or appeared corrupt), we didn't and treated it like
-a missing file. As will be discussed below in detail, our states are much
-more complicated and recovery can't make such simplistic assumptions.
-
-Also, since we are now dealing with file system operations, we have less
-control about when they actually happen and what the state of the system
-can be. That is, we have to write create log records synchronously, because
-the create/open system call may force a newly created (0-length) file to
-disk. This file has to now be identified as being in the "being-created"
-state.
-
-A. We used to make a number of assumptions during recovery:
-
-1. We could call db_open at any time and one of three things would happen:
- a) the file would be opened cleanly
- b) the file would not exist
- c) we would encounter an error while opening the file
-
-Case a posed no difficulty.
-In Case b, we simply spit out a warning that a file was missing and then
- ignored all subsequent operations to that file.
-In Case c, we reported a fatal error.
-
-2. We can always generate a warning if a file is missing.
-
-3. We never encounter NULL file names in the log.
-
-B. We also made some assumptions in the main-line library:
-
-1. If you try to open a file and it exists but is 0-length, then
-someone else is trying to open it.
-
-2. You can write pages anywhere in a file and any non-existent pages
-are 0-filled. [This breaks on Windows.]
-
-3. If you have proper permissions then you can always evict pages from
-the buffer pool.
-
-4. During open, we can close the master database handle as soon as
-we're done with it since all the rest of the activity will take place
-on the subdatabase handle.
-
-In our brave new world, most of these assumptions are no longer valid.
-Let's address them one at a time.
-
-A.1 We could call db_open at any time and one of three things would happen:
- a) the file would be opened cleanly
- b) the file would not exist
- c) we would encounter an error while opening the file
-There are now additional states. Since we are trying to make file
-operations recoverable, you can now die in the middle of such an
-operation and we have to be able to pick up the pieces. What this
-now means is that:
-
- * a 0-length file can be an indication of a create in-progress
- * you can have a meta-data page but no root page (of a btree)
- * if a file doesn't exist, it could mean that it was just about
- to be created and needs to be rolled forward.
- * if you encounter an error in a file (e.g., the meta-data page
- is all 0's) you could still be in mid-open.
-
-I have now made this all work, but it required significant changes to the
-db_open code and error handling and this is the sort of change that makes
-everyone nervous.
-
-A.2. We can always generate a warning if a file is missing.
-
-Now that we have a delete file method in the API, we need to make sure
-that we do not generate warning messages for files that don't exist if
-we see that they were explicitly deleted.
-
-This means that we need to save state during recovery, determine which
-files were missing and were not being recreated and were not deleted and
-only complain about those.
-
-A.3. We never encounter NULL file names in the log.
-
-Now that we allow tranaction protection on memory-resident files, we write
-log messages for files with NULL file names. This means that our assumption
-of always being able to call "db_open" on any log_register OPEN message found
-in the log is no longer valid.
-
-B.1. If you try to open a file and it exists but is 0-length, then
-someone else is trying to open it.
-
-As discussed for A.1, this is no longer true. It may be instead that you
-are in the process of recovering a create.
-
-B.2. You can write pages anywhere in a file and any non-existent pages
-are 0-filled.
-
-It turns out that this is not true on Windows. This means that places
-we do group allocation (hash) must explicitly allocate each page, because
-we can't count on recognizing the uninitialized pages later.
-
-B.3. If you have proper permissions then you can always evict pages from
-the buffer pool.
-
-In the brave new world though, files can be deleted and they may
-have pages in the mpool. If you later try to evict these, you
-discover that the file doesn't exist. We'd get here when we had
-to dirty pages during a remove operation.
-
-B.4. You can close files any time you want.
-
-However, if the file takes part in the open/remove transaction,
-then we had better not close it until after the transaction
-commits/aborts, because we need to be able to get our hands on the
-dbp and the open happened in a different transaction.
-
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-Design for recovering file create and delete in the presence of subdatabases.
-
-Assumptions:
- Remove the O_TRUNCATE flag.
- Single-thread all open/create/delete operations.
- (Well, almost all; we'll optimize opens without DB_CREATE set.)
- The reasoning for this is that with two simultaneous
- open/creaters, during recovery, we cannot identify which
- transaction successfully created files and therefore cannot
- recovery correctly.
- File system creates/deletes are synchronous
- Once the file is open, subdatabase creates look like regular
- get/put operations and a metadata page creation.
-
-There are 4 cases to deal with:
- 1. Open/create file
- 2. Open/create subdatabase
- 3. Delete
- 4. Recovery records
-
- __db_fileopen_recover
- __db_metapage_recover
- __db_delete_recover
- existing c_put and c_get routines for subdatabase creation
-
- Note that the open/create of the file and the open/create of the
- subdatabase need to be in the same transaction.
-
-1. Open/create (full file and subdb version)
-
-If create
- LOCK_FILEOP
- txn_begin
- log create message (open message below)
- do file system open/create
- if we did not create
- abort transaction (before going to open_only)
- if (!subdb)
- set dbp->open_txn = NULL
- else
- txn_begin a new transaction for the subdb open
-
- construct meta-data page
- log meta-data page (see metapage)
- write the meta-data page
- * It may be the case that btrees need to log both meta-data pages
- and root pages. If that is the case, I believe that we can use
- this same record and recovery routines for both
-
- txn_commit
- UNLOCK_FILEOP
-
-2. Delete
- LOCK_FILEOP
- txn_begin
- log delete message (delete message below)
- mv file __db.file.lsn
- txn_commit
- unlink __db.file.lsn
- UNLOCK_FILEOP
-
-3. Recovery Routines
-
-__db_fileopen_recover
- if (argp->name.size == 0
- done;
-
- if (redo) /* Commit */
- __os_open(argp->name, DB_OSO_CREATE, argp->mode, &fh)
- __os_closehandle(fh)
- if (undo) /* Abort */
- if (argp->name exists)
- unlink(argp->name);
-
-__db_metapage_recover
- if (redo)
- __os_open(argp->name, 0, 0, &fh)
- __os_lseek(meta data page)
- __os_write(meta data page)
- __os_closehandle(fh);
- if (undo)
- done = 0;
- if (argp->name exists)
- if (length of argp->name != 0)
- __os_open(argp->name, 0, 0, &fh)
- __os_lseek(meta data page)
- __os_read(meta data page)
- if (read succeeds && page lsn != current_lsn)
- done = 1
- __os_closehandle(fh);
- if (!done)
- unlink(argp->name)
-
-__db_delete_recover
- if (redo)
- Check if the backup file still exists and if so, delete it.
-
- if (undo)
- if (__db_appname(__db.file.lsn exists))
- mv __db_appname(__db.file.lsn) __db_appname(file)
-
-__db_metasub_recover
- /* This is like a normal recovery routine */
- Get the metadata page
- if (cmp_n && redo)
- copy the log page onto the page
- update the lsn
- make sure page gets put dirty
- else if (cmp_p && undo)
- update the lsn to the lsn in the log record
- make sure page gets put dirty
-
- if the page was modified, put it back dirty
-
-In db.src
-
-# name: filename (before call to __db_appname)
-# mode: file system mode
-BEGIN open
-DBT name DBT s
-ARG mode u_int32_t o
-END
-
-# opcode: indicate if it is a create/delete and if it is a subdatabase
-# pgsize: page size on which we're going to write the meta-data page
-# pgno: page number on which to write this meta-data page
-# page: the actual meta-data page
-# lsn: LSN of the meta-data page -- 0 for new databases, may be non-0
-# for subdatabases.
-
-BEGIN metapage
-ARG opcode u_int32_t x
-DBT name DBT s
-ARG pgno db_pgno_t d
-DBT page DBT s
-POINTER lsn DB_LSN * lu
-END
-
-# We do not need a subdatabase name here because removing a subdatabase
-# name is simply a regular bt_delete operation from the master database.
-# It will get logged normally.
-# name: filename
-BEGIN delete
-DBT name DBT s
-END
-
-# We also need to reclaim pages, but we can use the existing
-# bt_pg_alloc routines.
-
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-Testing recoverability of create/delete.
-
-These tests are unlike other tests in that they are going to
-require hooks in the library. The reason is that the create
-and delete calls are internally wrapped in a transaction, so
-that if the call returns, the transaction has already either
-commited or aborted. Using only that interface limits what
-kind of testing we can do. To match our other recovery testing
-efforts, we need to add hooks to trigger aborts at particular
-times in the create/delete path.
-
-The general recovery testing strategy is that we wish to
-execute every path through every recovery routine. That
-means that we try to:
- catch each operation in its pre-operation state
- call the recovery function with redo
- call the recovery function with undo
- catch each operation in its post-operation state
- call the recovery function with redo
- call the recovery function with undo
-
-In addition, there are a few critical points in the create and
-delete path that we want to make sure we capture.
-
-1. Test Structure
-
-The test structure should be similar to the existing recovery
-tests. We will want to have a structure in place where we
-can execute different commands:
- create a file/database
- create a file that will contain subdatabases.
- create a subdatabase
- remove a subdatabase (that contains valid data)
- remove a subdatabase (that does not contain any data)
- remove a file that used to contain subdatabases
- remove a file that contains a database
-
-The tricky part is capturing the state of the world at the
-various points in the create/delete process.
-
-The critical points in the create process are:
-
- 1. After we've logged the create, but before we've done anything.
- in db/db.c
- after the open_retry
- after the __crdel_fileopen_log call (and before we've
- called __os_open).
-
- 2. Immediately after the __os_open
-
- 3. Immediately after each __db_log_page call
- in bt_open.c
- log meta-data page
- log root page
- in hash.c
- log meta-data page
-
- 4. With respect to the log records above, shortly after each
- log write is an memp_fput. We need to do a sync after
- each memp_fput and trigger a point after that sync.
-
-The critical points in the remove process are:
-
- 1. Right after the crdel_delete_log in db/db.c
-
- 2. Right after the __os_rename call (below the crdel_delete_log)
-
- 3. After the __db_remove_callback call.
-
-I believe that there are the places where we'll need some sort of hook.
-
-2. Adding hooks to the library.
-
-The hooks need two components. One component is to capture the state of
-the database at the hook point and the other is to trigger a txn_abort at
-the hook point. The second part is fairly trivial.
-
-The first part requires more thought. Let me explain what we do in a
-"normal" recovery test. In a normal recovery test, we save an intial
-copy of the database (this copy is called init). Then we execute one
-or more operations. Then, right before the commit/abort, we sync the
-file, and save another copy (the afterop copy). Finally, we call txn_commit
-or txn_abort, sync the file again, and save the database one last time (the
-final copy).
-
-Then we run recovery. The first time, this should be a no-op, because
-we've either committed the transaction and are checking to redo it or
-we aborted the transaction, undid it on the abort and are checking to
-undo it again.
-
-We then run recovery again on whatever database will force us through
-the path that requires work. In the commit case, this means we start
-with the init copy of the database and run recovery. This pushes us
-through all the redo paths. In the abort case, we start with the afterop
-copy which pushes us through all the undo cases.
-
-In some sense, we're asking the create/delete test to be more exhaustive
-by defining all the trigger points, but I think that's the correct thing
-to do, since the create/delete is not initiated by a user transaction.
-
-So, what do we have to do at the hook points?
- 1. sync the file to disk.
- 2. save the file itself
- 3. save any files named __db_backup_name(name, &backup_name, lsn)
- Since we may not know the right lsns, I think we should save
- every file of the form __db.name.0xNNNNNNNN.0xNNNNNNNN into
- some temporary files from which we can restore it to run
- recovery.
-
-3. Putting it all together
-
-So, the three pieces are writing the test structure, putting in the hooks
-and then writing the recovery portions so that we restore the right thing
-that the hooks saved in order to initiate recovery.
-
-Some of the technical issues that need to be solved are:
- How does the hook code become active (i.e., we don't
- want it in there normally, but it's got to be
- there when you configure for testing)?
- How do you (the test) tell the library that you want a
- particular hook to abort?
- How do you (the test) tell the library that you want the
- hook code doing its copies (do we really want
- *every* test doing these copies during testing?
- Maybe it's not a big deal, but maybe it is; we
- should at least think about it).
diff --git a/db/db/crdel.src b/db/db/crdel.src
index 1992dd152..8c1050986 100644
--- a/db/db/crdel.src
+++ b/db/db/crdel.src
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: crdel.src,v 12.6 2006/08/24 14:45:15 bostic Exp $
+ * $Id: crdel.src,v 12.8 2007/05/17 15:14:56 bostic Exp $
*/
PREFIX __crdel
diff --git a/db/db/crdel_auto.c b/db/db/crdel_auto.c
index ab7f528a9..3122cf174 100644
--- a/db/db/crdel_auto.c
+++ b/db/db/crdel_auto.c
@@ -158,6 +158,7 @@ __crdel_metasub_log(dbp, txnp, ret_lsnp, flags, pgno, page, lsn)
*ret_lsnp = *rlsnp;
}
} else {
+ ret = 0;
#ifdef DIAGNOSTIC
/*
* Set the debug bit if we are going to log non-durable
@@ -167,10 +168,9 @@ __crdel_metasub_log(dbp, txnp, ret_lsnp, flags, pgno, page, lsn)
rectype |= DB_debug_FLAG;
memcpy(logrec.data, &rectype, sizeof(rectype));
- ret = __log_put(dbenv,
- rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
-#else
- ret = 0;
+ if (!IS_REP_CLIENT(dbenv))
+ ret = __log_put(dbenv,
+ rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
#endif
STAILQ_INSERT_HEAD(&txnp->logs, lr, links);
F_SET((TXN_DETAIL *)txnp->td, TXN_DTL_INMEMORY);
@@ -388,6 +388,7 @@ __crdel_inmem_create_log(dbenv, txnp, ret_lsnp, flags,
*ret_lsnp = *rlsnp;
}
} else {
+ ret = 0;
#ifdef DIAGNOSTIC
/*
* Set the debug bit if we are going to log non-durable
@@ -397,10 +398,9 @@ __crdel_inmem_create_log(dbenv, txnp, ret_lsnp, flags,
rectype |= DB_debug_FLAG;
memcpy(logrec.data, &rectype, sizeof(rectype));
- ret = __log_put(dbenv,
- rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
-#else
- ret = 0;
+ if (!IS_REP_CLIENT(dbenv))
+ ret = __log_put(dbenv,
+ rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
#endif
STAILQ_INSERT_HEAD(&txnp->logs, lr, links);
F_SET((TXN_DETAIL *)txnp->td, TXN_DTL_INMEMORY);
@@ -621,6 +621,7 @@ __crdel_inmem_rename_log(dbenv, txnp, ret_lsnp, flags,
*ret_lsnp = *rlsnp;
}
} else {
+ ret = 0;
#ifdef DIAGNOSTIC
/*
* Set the debug bit if we are going to log non-durable
@@ -630,10 +631,9 @@ __crdel_inmem_rename_log(dbenv, txnp, ret_lsnp, flags,
rectype |= DB_debug_FLAG;
memcpy(logrec.data, &rectype, sizeof(rectype));
- ret = __log_put(dbenv,
- rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
-#else
- ret = 0;
+ if (!IS_REP_CLIENT(dbenv))
+ ret = __log_put(dbenv,
+ rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
#endif
STAILQ_INSERT_HEAD(&txnp->logs, lr, links);
F_SET((TXN_DETAIL *)txnp->td, TXN_DTL_INMEMORY);
@@ -838,6 +838,7 @@ __crdel_inmem_remove_log(dbenv, txnp, ret_lsnp, flags,
*ret_lsnp = *rlsnp;
}
} else {
+ ret = 0;
#ifdef DIAGNOSTIC
/*
* Set the debug bit if we are going to log non-durable
@@ -847,10 +848,9 @@ __crdel_inmem_remove_log(dbenv, txnp, ret_lsnp, flags,
rectype |= DB_debug_FLAG;
memcpy(logrec.data, &rectype, sizeof(rectype));
- ret = __log_put(dbenv,
- rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
-#else
- ret = 0;
+ if (!IS_REP_CLIENT(dbenv))
+ ret = __log_put(dbenv,
+ rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
#endif
STAILQ_INSERT_HEAD(&txnp->logs, lr, links);
F_SET((TXN_DETAIL *)txnp->td, TXN_DTL_INMEMORY);
diff --git a/db/db/crdel_rec.c b/db/db/crdel_rec.c
index 43f9c4f2c..908bc1346 100644
--- a/db/db/crdel_rec.c
+++ b/db/db/crdel_rec.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: crdel_rec.c,v 12.13 2006/08/24 14:45:15 bostic Exp $
+ * $Id: crdel_rec.c,v 12.21 2007/06/13 18:21:30 ubell Exp $
*/
#include "db_config.h"
@@ -40,7 +39,6 @@ __crdel_metasub_recover(dbenv, dbtp, lsnp, op, info)
int cmp_p, ret, t_ret;
pagep = NULL;
- COMPQUIET(info, NULL);
REC_PRINT(__crdel_metasub_print);
REC_INTRO(__crdel_metasub_read, 0, 0);
@@ -62,7 +60,7 @@ __crdel_metasub_recover(dbenv, dbtp, lsnp, op, info)
CHECK_LSN(dbenv, op, cmp_p, &LSN(pagep), &argp->lsn);
if (cmp_p == 0 && DB_REDO(op)) {
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
memcpy(pagep, argp->page.data, argp->page.size);
LSN(pagep) = *lsnp;
@@ -73,8 +71,8 @@ __crdel_metasub_recover(dbenv, dbtp, lsnp, op, info)
*/
if (F_ISSET(file_dbp, DB_AM_INMEM) &&
argp->pgno == PGNO_BASE_MD &&
- (ret = __db_meta_setup(file_dbp->dbenv,
- file_dbp, file_dbp->dname, (DBMETA *)pagep, 0, 1)) != 0)
+ (ret = __db_meta_setup(file_dbp->dbenv, file_dbp,
+ file_dbp->dname, (DBMETA *)pagep, 0, DB_CHK_META)) != 0)
goto out;
} else if (DB_UNDO(op)) {
/*
@@ -89,14 +87,15 @@ __crdel_metasub_recover(dbenv, dbtp, lsnp, op, info)
* freed. Opening the subdb will have reinitialized the
* page, but not the lsn.
*/
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
LSN(pagep) = argp->lsn;
}
done: *lsnp = argp->prev_lsn;
ret = 0;
-out: if (pagep != NULL && (t_ret = __memp_fput(mpf, pagep, 0)) != 0 &&
+out: if (pagep != NULL &&
+ (t_ret = __memp_fput(mpf, pagep, file_dbp->priority)) != 0 &&
ret == 0)
ret = t_ret;
@@ -144,7 +143,7 @@ __crdel_inmem_create_recover(dbenv, dbtp, lsnp, op, info)
* tmp file.
*/
if (ret != 0) {
- if ((ret = db_create(&dbp, dbenv, 0)) != 0)
+ if ((ret = __db_create_internal(&dbp, dbenv, 0)) != 0)
goto out;
F_SET(dbp, DB_AM_RECOVER | DB_AM_INMEM);
@@ -167,14 +166,14 @@ __crdel_inmem_create_recover(dbenv, dbtp, lsnp, op, info)
goto out;
dbp->preserve_fid = 1;
MAKE_INMEM(dbp);
- if ((ret = __db_dbenv_setup(dbp,
+ if ((ret = __db_env_setup(dbp,
NULL, NULL, argp->name.data, TXN_INVALID, 0)) != 0)
goto out;
- ret = __db_dbenv_mpool(dbp, argp->name.data, 0);
+ ret = __db_env_mpool(dbp, argp->name.data, 0);
if (ret == ENOENT) {
dbp->pgsize = argp->pgsize;
- if ((ret = __db_dbenv_mpool(dbp,
+ if ((ret = __db_env_mpool(dbp,
argp->name.data, DB_CREATE)) != 0)
goto out;
} else if (ret != 0)
@@ -196,9 +195,8 @@ __crdel_inmem_create_recover(dbenv, dbtp, lsnp, op, info)
out: if (dbp != NULL) {
t_ret = 0;
- if (DB_UNDO(op))
- t_ret = __db_refresh(dbp, NULL, DB_NOSYNC, NULL, 0);
- else if (do_close || ret != 0)
+
+ if (do_close || ret != 0)
t_ret = __db_close(dbp, NULL, DB_NOSYNC);
if (t_ret != 0 && ret == 0)
ret = t_ret;
diff --git a/db/db/db.c b/db/db/db.c
index e7975687a..6b2a93e6c 100644
--- a/db/db/db.c
+++ b/db/db/db.c
@@ -1,8 +1,7 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*/
/*
* Copyright (c) 1990, 1993, 1994, 1995, 1996
@@ -36,7 +35,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: db.c,v 12.42 2006/09/19 15:06:58 bostic Exp $
+ * $Id: db.c,v 12.70 2007/06/13 18:57:42 bostic Exp $
*/
#include "db_config.h"
@@ -56,9 +55,9 @@
static int __db_disassociate __P((DB *));
#ifdef CONFIG_TEST
-static void __db_makecopy __P((DB_ENV *, const char *, const char *));
-static int __db_testdocopy __P((DB_ENV *, const char *));
-static int __qam_testdocopy __P((DB *, const char *));
+static int __db_makecopy __P((DB_ENV *, const char *, const char *));
+static int __db_testdocopy __P((DB_ENV *, const char *));
+static int __qam_testdocopy __P((DB *, const char *));
#endif
/*
@@ -88,7 +87,7 @@ __db_master_open(subdbp, txn, name, flags, mode, dbpp)
*dbpp = NULL;
/* Open up a handle on the main database. */
- if ((ret = db_create(&dbp, subdbp->dbenv, 0)) != 0)
+ if ((ret = __db_create_internal(&dbp, subdbp->dbenv, 0)) != 0)
return (ret);
/*
@@ -196,7 +195,7 @@ __db_master_update(mdbp, sdbp, txn, subdb, type, action, newname, flags)
memset(&data, 0, sizeof(data));
F_SET(&data, DB_DBT_MALLOC);
- ret = __db_c_get(dbc, &key, &data,
+ ret = __dbc_get(dbc, &key, &data,
DB_SET | ((STD_LOCKING(dbc) && modify) ? DB_RMW : 0));
/*
@@ -219,7 +218,7 @@ __db_master_update(mdbp, sdbp, txn, subdb, type, action, newname, flags)
* Delete the subdatabase entry first; if this fails,
* we don't want to touch the actual subdb pages.
*/
- if ((ret = __db_c_del(dbc, 0)) != 0)
+ if ((ret = __dbc_del(dbc, 0)) != 0)
goto err;
/*
@@ -273,12 +272,12 @@ __db_master_update(mdbp, sdbp, txn, subdb, type, action, newname, flags)
/*
* We don't actually care what the meta page of the potentially-
- * overwritten DB is; we just care about existence.
+ * overwritten DB is; we just care about existence.
*/
memset(&ndata, 0, sizeof(ndata));
F_SET(&ndata, DB_DBT_USERMEM | DB_DBT_PARTIAL);
- if ((ret = __db_c_get(ndbc, &key, &ndata, DB_SET)) == 0) {
+ if ((ret = __dbc_get(ndbc, &key, &ndata, DB_SET)) == 0) {
/* A subdb called newname exists. Bail. */
ret = EEXIST;
__db_errx(dbenv, "rename: database %s exists", newname);
@@ -287,18 +286,18 @@ __db_master_update(mdbp, sdbp, txn, subdb, type, action, newname, flags)
goto err;
/*
- * Now do the put first; we don't want to lose our
- * sole reference to the subdb. Use the second cursor
- * so that the first one continues to point to the old record.
+ * Now do the put first; we don't want to lose our only
+ * reference to the subdb. Use the second cursor so the
+ * first one continues to point to the old record.
*/
- if ((ret = __db_c_put(ndbc, &key, &data, DB_KEYFIRST)) != 0)
+ if ((ret = __dbc_put(ndbc, &key, &data, DB_KEYFIRST)) != 0)
goto err;
- if ((ret = __db_c_del(dbc, 0)) != 0) {
+ if ((ret = __dbc_del(dbc, 0)) != 0) {
/*
* If the delete fails, try to delete the record
* we just put, in case we're not txn-protected.
*/
- (void)__db_c_del(ndbc, 0);
+ (void)__dbc_del(ndbc, 0);
goto err;
}
@@ -347,7 +346,7 @@ __db_master_update(mdbp, sdbp, txn, subdb, type, action, newname, flags)
memset(&ndata, 0, sizeof(ndata));
ndata.data = &t_pgno;
ndata.size = sizeof(db_pgno_t);
- if ((ret = __db_c_put(dbc, &key, &ndata, DB_KEYLAST)) != 0)
+ if ((ret = __dbc_put(dbc, &key, &ndata, DB_KEYLAST)) != 0)
goto err;
F_SET(sdbp, DB_AM_CREATED);
break;
@@ -358,30 +357,30 @@ done: /*
* If we allocated a page: if we're successful, mark the page dirty
* and return it to the cache, otherwise, discard/free it.
*/
- if (p != NULL &&
- (t_ret = __memp_fput(mdbp->mpf, p, 0)) != 0 && ret == 0)
+ if (p != NULL && (t_ret =
+ __memp_fput(mdbp->mpf, p, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
/* Discard the cursor(s) and data. */
if (data.data != NULL)
__os_ufree(dbenv, data.data);
- if (dbc != NULL && (t_ret = __db_c_close(dbc)) != 0 && ret == 0)
+ if (dbc != NULL && (t_ret = __dbc_close(dbc)) != 0 && ret == 0)
ret = t_ret;
- if (ndbc != NULL && (t_ret = __db_c_close(ndbc)) != 0 && ret == 0)
+ if (ndbc != NULL && (t_ret = __dbc_close(ndbc)) != 0 && ret == 0)
ret = t_ret;
return (ret);
}
/*
- * __db_dbenv_setup --
+ * __db_env_setup --
* Set up the underlying environment during a db_open.
*
- * PUBLIC: int __db_dbenv_setup __P((DB *,
+ * PUBLIC: int __db_env_setup __P((DB *,
* PUBLIC: DB_TXN *, const char *, const char *, u_int32_t, u_int32_t));
*/
int
-__db_dbenv_setup(dbp, txn, fname, dname, id, flags)
+__db_env_setup(dbp, txn, fname, dname, id, flags)
DB *dbp;
DB_TXN *txn;
const char *fname, *dname;
@@ -410,7 +409,7 @@ __db_dbenv_setup(dbp, txn, fname, dname, id, flags)
/* Join the underlying cache. */
if ((!F_ISSET(dbp, DB_AM_INMEM) || dname == NULL) &&
- (ret = __db_dbenv_mpool(dbp, fname, flags)) != 0)
+ (ret = __db_env_mpool(dbp, fname, flags)) != 0)
return (ret);
/* We may need a per-thread mutex. */
@@ -425,6 +424,9 @@ __db_dbenv_setup(dbp, txn, fname, dname, id, flags)
* still need an FNAME struct, so LOGGING_ON is the correct macro.
*/
if (LOGGING_ON(dbenv) && dbp->log_filename == NULL &&
+#if !defined(DEBUG_ROP) && !defined(DEBUG_WOP) && !defined(DIAGNOSTIC)
+ (txn != NULL || F_ISSET(dbp, DB_AM_RECOVER)) &&
+#endif
(ret = __dbreg_setup(dbp,
F_ISSET(dbp, DB_AM_INMEM) ? dname : fname, id)) != 0)
return (ret);
@@ -434,6 +436,9 @@ __db_dbenv_setup(dbp, txn, fname, dname, id, flags)
* that already did so, then assign this dbp a log fileid.
*/
if (DBENV_LOGGING(dbenv) && !F_ISSET(dbp, DB_AM_RECOVER) &&
+#if !defined(DEBUG_ROP) && !defined(DEBUG_WOP) && !defined(DIAGNOSTIC)
+ txn != NULL &&
+#endif
#if !defined(DEBUG_ROP)
!F_ISSET(dbp, DB_AM_RDONLY) &&
#endif
@@ -493,13 +498,13 @@ __db_dbenv_setup(dbp, txn, fname, dname, id, flags)
}
/*
- * __db_dbenv_mpool --
+ * __db_env_mpool --
* Set up the underlying environment cache during a db_open.
*
- * PUBLIC: int __db_dbenv_mpool __P((DB *, const char *, u_int32_t));
+ * PUBLIC: int __db_env_mpool __P((DB *, const char *, u_int32_t));
*/
int
-__db_dbenv_mpool(dbp, fname, flags)
+__db_env_mpool(dbp, fname, flags)
DB *dbp;
const char *fname;
u_int32_t flags;
@@ -514,7 +519,9 @@ __db_dbenv_mpool(dbp, fname, flags)
u_int32_t clear_len;
dbenv = dbp->dbenv;
- lsn_off = 0;
+
+ /* The LSN is the first entry on a DB page, byte offset 0. */
+ lsn_off = F_ISSET(dbp, DB_AM_NOT_DURABLE) ? DB_LSN_OFF_NOTSET : 0;
/* It's possible that this database is already open. */
if (F_ISSET(dbp, DB_AM_OPEN_CALLED))
@@ -734,6 +741,7 @@ __db_refresh(dbp, txn, flags, deferred_closep, reuse)
DBC *dbc;
DB_ENV *dbenv;
DB_LOCKREQ lreq;
+ DB_LOCKER *locker;
REGENV *renv;
REGINFO *infop;
u_int32_t save_flags;
@@ -748,6 +756,13 @@ __db_refresh(dbp, txn, flags, deferred_closep, reuse)
else
renv = NULL;
+ /*
+ * If this dbp is not completely open, avoid trapping by trying to
+ * sync without an mpool file.
+ */
+ if (dbp->mpf == NULL)
+ LF_SET(DB_NOSYNC);
+
/* If never opened, or not currently open, it's easy. */
if (!F_ISSET(dbp, DB_AM_OPEN_CALLED))
goto never_opened;
@@ -790,14 +805,14 @@ __db_refresh(dbp, txn, flags, deferred_closep, reuse)
*/
resync = TAILQ_FIRST(&dbp->active_queue) == NULL ? 0 : 1;
while ((dbc = TAILQ_FIRST(&dbp->active_queue)) != NULL)
- if ((t_ret = __db_c_close(dbc)) != 0) {
+ if ((t_ret = __dbc_close(dbc)) != 0) {
if (ret == 0)
ret = t_ret;
break;
}
while ((dbc = TAILQ_FIRST(&dbp->free_queue)) != NULL)
- if ((t_ret = __db_c_destroy(dbc)) != 0) {
+ if ((t_ret = __dbc_destroy(dbc)) != 0) {
if (ret == 0)
ret = t_ret;
break;
@@ -831,17 +846,17 @@ __db_refresh(dbp, txn, flags, deferred_closep, reuse)
never_opened:
/*
- * At this point, we haven't done anything to render the DB
- * handle unusable, at least by a transaction abort. Take the
- * opportunity now to log the file close. If this log fails
- * and we're in a transaction, we have to bail out of the attempted
- * close; we'll need a dbp in order to successfully abort the
- * transaction, and we can't conjure a new one up because we haven't
- * gotten out the dbreg_register record that represents the close.
- * In this case, we put off actually closing the dbp until we've
- * performed the abort.
+ * At this point, we haven't done anything to render the DB handle
+ * unusable, at least by a transaction abort. Take the opportunity
+ * now to log the file close if we have initialized the logging
+ * information. If this log fails and we're in a transaction,
+ * we have to bail out of the attempted close; we'll need a dbp in
+ * order to successfully abort the transaction, and we can't conjure
+ * a new one up because we haven't gotten out the dbreg_register
+ * record that represents the close. In this case, we put off
+ * actually closing the dbp until we've performed the abort.
*/
- if (!reuse && LOGGING_ON(dbp->dbenv)) {
+ if (!reuse && LOGGING_ON(dbp->dbenv) && dbp->log_filename != NULL) {
/*
* Discard the log file id, if any. We want to log the close
* if and only if this is not a recovery dbp or a client dbp,
@@ -849,9 +864,13 @@ never_opened:
*/
DB_ASSERT(dbenv, renv != NULL);
if (F_ISSET(dbp, DB_AM_RECOVER) || IS_REP_CLIENT(dbenv) ||
- dbp->timestamp != renv->rep_timestamp)
- t_ret = __dbreg_revoke_id(dbp, 0, DB_LOGFILEID_INVALID);
- else {
+ dbp->timestamp != renv->rep_timestamp) {
+ if ((t_ret = __dbreg_revoke_id(dbp,
+ 0, DB_LOGFILEID_INVALID)) == 0 && ret == 0)
+ ret = t_ret;
+ if ((t_ret = __dbreg_teardown(dbp)) != 0 && ret == 0)
+ ret = t_ret;
+ } else {
if ((t_ret = __dbreg_close_id(dbp,
txn, DBREG_CLOSE)) != 0 && txn != NULL) {
/*
@@ -886,12 +905,6 @@ never_opened:
*/
}
- if (ret == 0)
- ret = t_ret;
-
- /* Discard the log FNAME. */
- if ((t_ret = __dbreg_teardown(dbp)) != 0 && ret == 0)
- ret = t_ret;
}
/* Close any handle we've been holding since the open. */
@@ -969,21 +982,25 @@ never_opened:
* access-method specific data.
*/
- if (!reuse && dbp->lid != DB_LOCK_INVALIDID) {
+ if (!reuse && dbp->locker != NULL) {
/* We may have pending trade operations on this dbp. */
+ if (txn == NULL)
+ txn = dbp->cur_txn;
if (IS_REAL_TXN(txn))
- __txn_remlock(dbenv, txn, &dbp->handle_lock, dbp->lid);
+ __txn_remlock(dbenv,
+ txn, &dbp->handle_lock, dbp->locker);
/* We may be holding the handle lock; release it. */
lreq.op = DB_LOCK_PUT_ALL;
lreq.obj = NULL;
if ((t_ret = __lock_vec(dbenv,
- dbp->lid, 0, &lreq, 1, NULL)) != 0 && ret == 0)
+ dbp->locker, 0, &lreq, 1, NULL)) != 0 && ret == 0)
ret = t_ret;
- if ((t_ret = __lock_id_free(dbenv, dbp->lid)) != 0 && ret == 0)
+ if ((t_ret =
+ __lock_id_free(dbenv, dbp->locker)) != 0 && ret == 0)
ret = t_ret;
- dbp->lid = DB_LOCK_INVALIDID;
+ dbp->locker = NULL;
LOCK_INIT(dbp->handle_lock);
}
@@ -993,10 +1010,13 @@ never_opened:
*/
if (LOCKING_ON(dbenv) &&
F_ISSET(dbp, DB_AM_INMEM) && !dbp->preserve_fid &&
- *(u_int32_t *)dbp->fileid != DB_LOCK_INVALIDID &&
- (t_ret = __lock_id_free(dbenv, *(u_int32_t *)dbp->fileid)) != 0 &&
- ret == 0)
- ret = t_ret;
+ *(u_int32_t *)dbp->fileid != DB_LOCK_INVALIDID) {
+ if ((t_ret = __lock_getlocker(dbenv->lk_handle,
+ *(u_int32_t *)dbp->fileid, 0, &locker)) == 0)
+ t_ret = __lock_id_free(dbenv, locker);
+ if (ret == 0)
+ ret = t_ret;
+ }
if (reuse) {
/*
@@ -1035,7 +1055,10 @@ never_opened:
dbp->type = DB_UNKNOWN;
- /* Discard the thread mutex. */
+ /*
+ * The thread mutex may have been invalidated in __dbreg_close_id if the
+ * fname refcount did not go to 0. If not, discard the thread mutex.
+ */
if ((t_ret = __mutex_free(dbenv, &dbp->mutex)) != 0 && ret == 0)
ret = t_ret;
@@ -1066,8 +1089,9 @@ never_opened:
memset(dbp->fileid, 0, sizeof(dbp->fileid));
dbp->adj_fileid = 0;
dbp->meta_pgno = 0;
- dbp->cur_lid = DB_LOCK_INVALIDID;
- dbp->associate_lid = DB_LOCK_INVALIDID;
+ dbp->cur_locker = NULL;
+ dbp->cur_txn = NULL;
+ dbp->associate_locker = NULL;
dbp->cl_id = 0;
dbp->open_flags = 0;
@@ -1088,6 +1112,45 @@ never_opened:
}
/*
+ * __db_disassociate --
+ * Destroy the association between a given secondary and its primary.
+ */
+static int
+__db_disassociate(sdbp)
+ DB *sdbp;
+{
+ DBC *dbc;
+ int ret, t_ret;
+
+ ret = 0;
+
+ sdbp->s_callback = NULL;
+ sdbp->s_primary = NULL;
+ sdbp->get = sdbp->stored_get;
+ sdbp->close = sdbp->stored_close;
+
+ /*
+ * Complain, but proceed, if we have any active cursors. (We're in
+ * the middle of a close, so there's really no turning back.)
+ */
+ if (sdbp->s_refcnt != 1 ||
+ TAILQ_FIRST(&sdbp->active_queue) != NULL ||
+ TAILQ_FIRST(&sdbp->join_queue) != NULL) {
+ __db_errx(sdbp->dbenv,
+ "Closing a primary DB while a secondary DB has active cursors is unsafe");
+ ret = EINVAL;
+ }
+ sdbp->s_refcnt = 0;
+
+ while ((dbc = TAILQ_FIRST(&sdbp->free_queue)) != NULL)
+ if ((t_ret = __dbc_destroy(dbc)) != 0 && ret == 0)
+ ret = t_ret;
+
+ F_CLR(sdbp, DB_AM_SECONDARY);
+ return (ret);
+}
+
+/*
* __db_log_page
* Log a meta-data or root page during a subdatabase create operation.
*
@@ -1127,10 +1190,10 @@ __db_log_page(dbp, txn, lsn, pgno, page)
* PUBLIC: const char *, DB_TXN *, char **));
*/
#undef BACKUP_PREFIX
-#define BACKUP_PREFIX "__db"
+#define BACKUP_PREFIX "__db."
-#undef MAX_LSN_TO_TEXT
-#define MAX_LSN_TO_TEXT 17
+#undef MAX_INT_TO_HEX
+#define MAX_INT_TO_HEX 8
int
__db_backup_name(dbenv, name, txn, backup)
@@ -1139,34 +1202,29 @@ __db_backup_name(dbenv, name, txn, backup)
DB_TXN *txn;
char **backup;
{
- DB_LSN lsn;
+ u_int32_t id;
size_t len;
int ret;
char *p, *retp;
+ *backup = NULL;
+
/*
* Part of the name may be a full path, so we need to make sure that
* we allocate enough space for it, even in the case where we don't
* use the entire filename for the backup name.
*/
- len = strlen(name) + strlen(BACKUP_PREFIX) + 1 + MAX_LSN_TO_TEXT;
+ len = strlen(name) + strlen(BACKUP_PREFIX) + 2 * MAX_INT_TO_HEX + 1;
if ((ret = __os_malloc(dbenv, len, &retp)) != 0)
return (ret);
/*
- * Create the name. Backup file names are in one of three forms:
- *
- * In a transactional env: __db.LSN(8).LSN(8)
- * and
- * In VXWORKS (where we want 8.3 support)
- * and
- * in any other non-transactional env: __db.FILENAME
- *
- * If the transaction doesn't have a current LSN, we write a dummy
- * log record to force it, so we ensure all tmp names are unique.
+ * Create the name. Backup file names are in one of 2 forms: in a
+ * transactional env "__db.TXNID.ID", where ID is a random number,
+ * and in any other env "__db.FILENAME".
*
* In addition, the name passed may contain an env-relative path.
- * In that case, put the __db. in the right place (in the last
+ * In that case, put the "__db." in the right place (in the last
* component of the pathname).
*
* There are four cases here:
@@ -1176,102 +1234,26 @@ __db_backup_name(dbenv, name, txn, backup)
* 4. multi-component path + transaction
*/
p = __db_rpath(name);
- if (!IS_REAL_TXN(txn)) {
-#ifdef HAVE_VXWORKS
- { int i, n;
- /* On VxWorks we must support 8.3 names. */
- if (p == NULL) /* Case 1. */
- n = snprintf(retp,
- len, "%s%.4s.tmp", BACKUP_PREFIX, name);
- else /* Case 3. */
- n = snprintf(retp, len, "%.*s%s%.4s.tmp",
- (int)(p - name) + 1, name, BACKUP_PREFIX, p + 1);
-
- /*
- * Overwrite "." in the characters copied from the name.
- * If we backup 8 characters from the end, we're guaranteed
- * to a) include the four bytes we copied from the name
- * and b) not run off the beginning of the string.
- */
- for (i = 0, p = (retp + n) - 8; i < 4; p++, i++)
- if (*p == '.')
- *p = '_';
- }
-#else
- if (p == NULL) /* Case 1. */
- snprintf(retp, len, "%s.%s", BACKUP_PREFIX, name);
- else /* Case 3. */
- snprintf(retp, len, "%.*s%s.%s",
- (int)(p - name) + 1, name, BACKUP_PREFIX, p + 1);
-#endif
- } else {
- lsn = ((TXN_DETAIL *)txn->td)->last_lsn;
- if (IS_ZERO_LSN(lsn)) {
- /*
- * Write dummy log record. The two choices for dummy
- * log records are __db_noop_log and __db_debug_log;
- * unfortunately __db_noop_log requires a valid dbp,
- * and we aren't guaranteed to be able to pass one in
- * here.
- */
- if ((ret = __db_debug_log(dbenv,
- txn, &lsn, 0, NULL, 0, NULL, NULL, 0)) != 0) {
- __os_free(dbenv, retp);
- return (ret);
- }
- }
-
+ if (IS_REAL_TXN(txn)) {
+ __os_unique_id(dbenv, &id);
if (p == NULL) /* Case 2. */
- snprintf(retp, len,
- "%s.%x.%x", BACKUP_PREFIX, lsn.file, lsn.offset);
+ snprintf(retp, len, "%s%x.%x",
+ BACKUP_PREFIX, txn->txnid, id);
else /* Case 4. */
snprintf(retp, len, "%.*s%x.%x",
- (int)(p - name) + 1, name, lsn.file, lsn.offset);
+ (int)(p - name) + 1, name, txn->txnid, id);
+ } else {
+ if (p == NULL) /* Case 1. */
+ snprintf(retp, len, "%s%s", BACKUP_PREFIX, name);
+ else /* Case 3. */
+ snprintf(retp, len, "%.*s%s%s",
+ (int)(p - name) + 1, name, BACKUP_PREFIX, p + 1);
}
*backup = retp;
return (0);
}
-/*
- * __db_disassociate --
- * Destroy the association between a given secondary and its primary.
- */
-static int
-__db_disassociate(sdbp)
- DB *sdbp;
-{
- DBC *dbc;
- int ret, t_ret;
-
- ret = 0;
-
- sdbp->s_callback = NULL;
- sdbp->s_primary = NULL;
- sdbp->get = sdbp->stored_get;
- sdbp->close = sdbp->stored_close;
-
- /*
- * Complain, but proceed, if we have any active cursors. (We're in
- * the middle of a close, so there's really no turning back.)
- */
- if (sdbp->s_refcnt != 1 ||
- TAILQ_FIRST(&sdbp->active_queue) != NULL ||
- TAILQ_FIRST(&sdbp->join_queue) != NULL) {
- __db_errx(sdbp->dbenv,
- "Closing a primary DB while a secondary DB has active cursors is unsafe");
- ret = EINVAL;
- }
- sdbp->s_refcnt = 0;
-
- while ((dbc = TAILQ_FIRST(&sdbp->free_queue)) != NULL)
- if ((t_ret = __db_c_destroy(dbc)) != 0 && ret == 0)
- ret = t_ret;
-
- F_CLR(sdbp, DB_AM_SECONDARY);
- return (ret);
-}
-
#ifdef CONFIG_TEST
/*
* __db_testcopy
@@ -1337,7 +1319,6 @@ __qam_testdocopy(dbp, name)
/*
* __db_testdocopy
* Create a copy of all backup files and our "main" DB.
- *
*/
static int
__db_testdocopy(dbenv, name)
@@ -1346,145 +1327,146 @@ __db_testdocopy(dbenv, name)
{
size_t len;
int dircnt, i, ret;
- char *backup, *copy, *dir, **namesp, *p, *real_name;
+ char *copy, **namesp, *p, *real_name;
dircnt = 0;
- copy = backup = NULL;
+ copy = NULL;
namesp = NULL;
- /* Get the real backing file name. */
+ /* Create the real backing file name. */
if ((ret = __db_appname(dbenv,
DB_APP_DATA, name, 0, NULL, &real_name)) != 0)
return (ret);
/*
- * Maximum size of file, including adding a ".afterop".
+ * !!!
+ * There are tests that attempt to copy non-existent files. I'd guess
+ * it's a testing bug, but I don't have time to figure it out. Block
+ * the case here.
*/
- len = strlen(real_name) +
- strlen(BACKUP_PREFIX) + 1 + MAX_LSN_TO_TEXT + 9;
+ if (__os_exists(dbenv, real_name, NULL) != 0) {
+ __os_free(dbenv, real_name);
+ return (0);
+ }
+ /*
+ * Copy the file itself.
+ *
+ * Allocate space for the file name, including adding an ".afterop" and
+ * trailing nul byte.
+ */
+ len = strlen(real_name) + sizeof(".afterop");
if ((ret = __os_malloc(dbenv, len, &copy)) != 0)
goto err;
-
- if ((ret = __os_malloc(dbenv, len, &backup)) != 0)
+ snprintf(copy, len, "%s.afterop", real_name);
+ if ((ret = __db_makecopy(dbenv, real_name, copy)) != 0)
goto err;
/*
- * First copy the file itself.
+ * Get the directory path to call __os_dirlist().
*/
- snprintf(copy, len, "%s.afterop", real_name);
- __db_makecopy(dbenv, real_name, copy);
-
- if ((ret = __os_strdup(dbenv, real_name, &dir)) != 0)
+ if ((p = __db_rpath(real_name)) != NULL)
+ *p = '\0';
+ if ((ret = __os_dirlist(dbenv, real_name, &namesp, &dircnt)) != 0)
goto err;
- __os_free(dbenv, real_name);
- real_name = NULL;
/*
- * Create the name. Backup file names are of the form:
+ * Walk the directory looking for backup files. Backup file names in
+ * transactional environments are of the form:
*
- * __db.name.0x[lsn-file].0x[lsn-offset]
- *
- * which guarantees uniqueness. We want to look for the
- * backup name, followed by a '.0x' (so that if they have
- * files named, say, 'a' and 'abc' we won't match 'abc' when
- * looking for 'a'.
- */
- snprintf(backup, len, "%s.%s.0x", BACKUP_PREFIX, name);
-
- /*
- * We need the directory path to do the __os_dirlist.
- */
- p = __db_rpath(dir);
- if (p != NULL)
- *p = '\0';
- ret = __os_dirlist(dbenv, dir, &namesp, &dircnt);
-#if DIAGNOSTIC
- /*
- * XXX
- * To get the memory guard code to work because it uses strlen and we
- * just moved the end of the string somewhere sooner. This causes the
- * guard code to fail because it looks at one byte past the end of the
- * string.
+ * BACKUP_PREFIX.TXNID.ID
*/
- *p = '/';
-#endif
- __os_free(dbenv, dir);
- if (ret != 0)
- goto err;
for (i = 0; i < dircnt; i++) {
+ /* Check for a related backup file name. */
+ if (strncmp(
+ namesp[i], BACKUP_PREFIX, sizeof(BACKUP_PREFIX) - 1) != 0)
+ continue;
+ p = namesp[i] + sizeof(BACKUP_PREFIX);
+ p += strspn(p, "0123456789ABCDEFabcdef");
+ if (*p != '.')
+ continue;
+ ++p;
+ p += strspn(p, "0123456789ABCDEFabcdef");
+ if (*p != '\0')
+ continue;
+
/*
- * Need to check if it is a backup file for this.
- * No idea what namesp[i] may be or how long, so
- * must use strncmp and not memcmp. We don't want
- * to use strcmp either because we are only matching
- * the first part of the real file's name. We don't
- * know its LSN's.
+ * Copy the backup file.
+ *
+ * Allocate space for the file name, including adding a
+ * ".afterop" and trailing nul byte.
*/
- if (strncmp(namesp[i], backup, strlen(backup)) == 0) {
- if ((ret = __db_appname(dbenv, DB_APP_DATA,
- namesp[i], 0, NULL, &real_name)) != 0)
- goto err;
-
- /*
- * This should not happen. Check that old
- * .afterop files aren't around.
- * If so, just move on.
- */
- if (strstr(real_name, ".afterop") != NULL) {
- __os_free(dbenv, real_name);
- real_name = NULL;
- continue;
- }
- snprintf(copy, len, "%s.afterop", real_name);
- __db_makecopy(dbenv, real_name, copy);
+ if (real_name != NULL) {
__os_free(dbenv, real_name);
real_name = NULL;
}
+ if ((ret = __db_appname(
+ dbenv, DB_APP_DATA, namesp[i], 0, NULL, &real_name)) != 0)
+ goto err;
+ if (copy != NULL) {
+ __os_free(dbenv, copy);
+ copy = NULL;
+ }
+ len = strlen(real_name) + sizeof(".afterop");
+ if ((ret = __os_malloc(dbenv, len, &copy)) != 0)
+ goto err;
+ snprintf(copy, len, "%s.afterop", real_name);
+ if ((ret = __db_makecopy(dbenv, real_name, copy)) != 0)
+ goto err;
}
-err: if (backup != NULL)
- __os_free(dbenv, backup);
+err: if (namesp != NULL)
+ __os_dirfree(dbenv, namesp, dircnt);
if (copy != NULL)
__os_free(dbenv, copy);
- if (namesp != NULL)
- __os_dirfree(dbenv, namesp, dircnt);
if (real_name != NULL)
__os_free(dbenv, real_name);
return (ret);
}
-static void
+static int
__db_makecopy(dbenv, src, dest)
DB_ENV *dbenv;
const char *src, *dest;
{
DB_FH *rfhp, *wfhp;
size_t rcnt, wcnt;
+ int ret;
char *buf;
rfhp = wfhp = NULL;
- if (__os_malloc(dbenv, 1024, &buf) != 0)
- return;
+ if ((ret = __os_malloc(dbenv, 64 * 1024, &buf)) != 0)
+ goto err;
- if (__os_open(dbenv,
- src, DB_OSO_RDONLY, __db_omode(OWNER_RW), &rfhp) != 0)
+ if ((ret = __os_open(dbenv, src, 0,
+ DB_OSO_RDONLY, __db_omode(OWNER_RW), &rfhp)) != 0)
goto err;
- if (__os_open(dbenv, dest,
- DB_OSO_CREATE | DB_OSO_TRUNC, __db_omode(OWNER_RW), &wfhp) != 0)
+ if ((ret = __os_open(dbenv, dest, 0,
+ DB_OSO_CREATE | DB_OSO_TRUNC, __db_omode(OWNER_RW), &wfhp)) != 0)
goto err;
- for (;;)
- if (__os_read(dbenv, rfhp, buf, 1024, &rcnt) < 0 || rcnt == 0 ||
- __os_write(dbenv, wfhp, buf, rcnt, &wcnt) < 0)
+ for (;;) {
+ if ((ret =
+ __os_read(dbenv, rfhp, buf, sizeof(buf), &rcnt)) != 0)
+ goto err;
+ if (rcnt == 0)
break;
+ if ((ret =
+ __os_write(dbenv, wfhp, buf, sizeof(buf), &wcnt)) != 0)
+ goto err;
+ }
-err: if (buf != NULL)
+ if (0) {
+err: __db_err(dbenv, ret, "__db_makecopy: %s -> %s", src, dest);
+ }
+
+ if (buf != NULL)
__os_free(dbenv, buf);
if (rfhp != NULL)
(void)__os_closehandle(dbenv, rfhp);
if (wfhp != NULL)
(void)__os_closehandle(dbenv, wfhp);
+ return (ret);
}
#endif
diff --git a/db/db/db.src b/db/db/db.src
index 40ce88677..37c933e57 100644
--- a/db/db/db.src
+++ b/db/db/db.src
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: db.src,v 12.6 2006/08/24 14:45:15 bostic Exp $
+ * $Id: db.src,v 12.9 2007/05/17 15:14:56 bostic Exp $
*/
PREFIX __db
@@ -139,8 +138,9 @@ END
/*
* pg_alloc: used to record allocating a new page.
*
- * meta_lsn: the meta-data page's original lsn.
- * meta_pgno the meta-data page number.
+ * meta_lsn: the original lsn of the page reference by meta_pgno.
+ * meta_pgno the page pointing at the allocated page in the free list.
+ * If the list is unsorted this is the metadata page.
* page_lsn: the allocated page's original lsn.
* pgno: the page allocated.
* ptype: the type of the page allocated.
@@ -170,6 +170,9 @@ END
/*
* pg_free: used to record freeing a page.
+ * If we are maintaining a sorted free list (during compact) meta_pgno
+ * will be non-zero and refer to the page that preceeds the one we are freeing
+ * in the free list. Meta_lsn will then be the lsn of that page.
*
* pgno: the page being freed.
* meta_lsn: the meta-data page's original lsn.
diff --git a/db/db/db_am.c b/db/db/db_am.c
index becfd8b77..2b8990c3d 100644
--- a/db/db/db_am.c
+++ b/db/db/db_am.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1998-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1998,2007 Oracle. All rights reserved.
*
- * $Id: db_am.c,v 12.24 2006/08/24 14:45:15 bostic Exp $
+ * $Id: db_am.c,v 12.39 2007/06/13 18:21:30 ubell Exp $
*/
#include "db_config.h"
@@ -17,25 +16,28 @@
#include "dbinc/log.h"
#include "dbinc/mp.h"
#include "dbinc/qam.h"
+#include "dbinc/txn.h"
static int __db_append_primary __P((DBC *, DBT *, DBT *));
static int __db_secondary_get __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t));
+static int __dbc_set_priority __P((DBC *, DB_CACHE_PRIORITY));
+static int __dbc_get_priority __P((DBC *, DB_CACHE_PRIORITY* ));
/*
* __db_cursor_int --
* Internal routine to create a cursor.
*
- * PUBLIC: int __db_cursor_int
- * PUBLIC: __P((DB *, DB_TXN *, DBTYPE, db_pgno_t, int, u_int32_t, DBC **));
+ * PUBLIC: int __db_cursor_int __P((DB *,
+ * PUBLIC: DB_TXN *, DBTYPE, db_pgno_t, int, DB_LOCKER *, DBC **));
*/
int
-__db_cursor_int(dbp, txn, dbtype, root, is_opd, lockerid, dbcp)
+__db_cursor_int(dbp, txn, dbtype, root, is_opd, locker, dbcp)
DB *dbp;
DB_TXN *txn;
DBTYPE dbtype;
db_pgno_t root;
int is_opd;
- u_int32_t lockerid;
+ DB_LOCKER *locker;
DBC **dbcp;
{
DBC *dbc;
@@ -57,6 +59,22 @@ __db_cursor_int(dbp, txn, dbtype, root, is_opd, lockerid, dbcp)
* of cursors on the queue for a single database.
*/
MUTEX_LOCK(dbenv, dbp->mutex);
+
+#ifndef HAVE_NO_DB_REFCOUNT
+ /*
+ * If this DBP is being logged then refcount the log filename
+ * relative to this transaction. We do this here because we have
+ * the dbp->mutex which protects the refcount. If we know this
+ * cursor will not be used in an update, we could avoid this,
+ * but we don't have that information.
+ */
+ if (txn != NULL && !F_ISSET(dbp, DB_AM_RECOVER) &&
+ dbp->log_filename != NULL &&
+ !is_opd && locker == NULL && !IS_REP_CLIENT(dbenv) &&
+ (ret = __txn_record_fname(dbenv, txn, dbp->log_filename)) != 0)
+ return (ret);
+#endif
+
TAILQ_FOREACH(dbc, &dbp->free_queue, links)
if (dbtype == dbc->dbtype) {
TAILQ_REMOVE(&dbp->free_queue, dbc, links);
@@ -146,15 +164,15 @@ __db_cursor_int(dbp, txn, dbtype, root, is_opd, lockerid, dbcp)
switch (dbtype) {
case DB_BTREE:
case DB_RECNO:
- if ((ret = __bam_c_init(dbc, dbtype)) != 0)
+ if ((ret = __bamc_init(dbc, dbtype)) != 0)
goto err;
break;
case DB_HASH:
- if ((ret = __ham_c_init(dbc)) != 0)
+ if ((ret = __hamc_init(dbc)) != 0)
goto err;
break;
case DB_QUEUE:
- if ((ret = __qam_c_init(dbc)) != 0)
+ if ((ret = __qamc_init(dbc)) != 0)
goto err;
break;
case DB_UNKNOWN:
@@ -169,9 +187,12 @@ __db_cursor_int(dbp, txn, dbtype, root, is_opd, lockerid, dbcp)
/* Refresh the DBC structure. */
dbc->dbtype = dbtype;
RESET_RET_MEM(dbc);
+ dbc->set_priority = __dbc_set_priority;
+ dbc->get_priority = __dbc_get_priority;
+ dbc->priority = dbp->priority;
if ((dbc->txn = txn) != NULL)
- dbc->locker = txn->txnid;
+ dbc->locker = txn->locker;
else if (LOCKING_ON(dbenv)) {
/*
* There are certain cases in which we want to create a
@@ -180,7 +201,7 @@ __db_cursor_int(dbp, txn, dbtype, root, is_opd, lockerid, dbcp)
* open cursor.
*
* The most obvious case is cursor duplication; when we
- * call DBC->c_dup or __db_c_idup, we want to use the original
+ * call DBC->dup or __dbc_idup, we want to use the original
* cursor's locker ID.
*
* Another case is when updating secondary indices. Standard
@@ -194,8 +215,8 @@ __db_cursor_int(dbp, txn, dbtype, root, is_opd, lockerid, dbcp)
* ID into this function. Use this locker ID instead of
* the default as the locker ID for our new cursor.
*/
- if (lockerid != DB_LOCK_INVALIDID)
- dbc->locker = lockerid;
+ if (locker != NULL)
+ dbc->locker = locker;
else {
/*
* If we are threaded then we need to set the
@@ -203,10 +224,9 @@ __db_cursor_int(dbp, txn, dbtype, root, is_opd, lockerid, dbcp)
*/
if (DB_IS_THREADED(dbp)) {
dbenv->thread_id(dbenv, &pid, &tid);
- __lock_set_thread_id(
- (DB_LOCKER *)dbc->lref, pid, tid);
+ __lock_set_thread_id(dbc->lref, pid, tid);
}
- dbc->locker = ((DB_LOCKER *)dbc->lref)->id;
+ dbc->locker = (DB_LOCKER *)dbc->lref;
}
}
@@ -215,10 +235,10 @@ __db_cursor_int(dbp, txn, dbtype, root, is_opd, lockerid, dbcp)
* if the DB is a secondary, make sure they're set properly just
* in case we opened some cursors before we were associated.
*
- * __db_c_get is used by all access methods, so this should be safe.
+ * __dbc_get is used by all access methods, so this should be safe.
*/
if (F_ISSET(dbp, DB_AM_SECONDARY))
- dbc->c_get = __db_c_secondary_get_pp;
+ dbc->get = dbc->c_get = __dbc_secondary_get_pp;
if (is_opd)
F_SET(dbc, DBC_OPD);
@@ -239,7 +259,7 @@ __db_cursor_int(dbp, txn, dbtype, root, is_opd, lockerid, dbcp)
switch (dbtype) {
case DB_BTREE:
case DB_RECNO:
- if ((ret = __bam_c_refresh(dbc)) != 0)
+ if ((ret = __bamc_refresh(dbc)) != 0)
goto err;
break;
case DB_HASH:
@@ -349,7 +369,7 @@ __db_put(dbp, txn, key, data, flags)
/*
* Secondary indices: since we've returned zero from an append
* function, we've just put a record, and done so outside
- * __db_c_put. We know we're not a secondary-- the interface
+ * __dbc_put. We know we're not a secondary-- the interface
* prevents puts on them--but we may be a primary. If so,
* update our secondary indices appropriately.
*
@@ -376,12 +396,12 @@ __db_put(dbp, txn, key, data, flags)
}
if (ret == 0)
- ret = __db_c_put(dbc,
+ ret = __dbc_put(dbc,
key, data, flags == 0 ? DB_KEYLAST : flags);
err:
done: /* Close the cursor. */
- if ((t_ret = __db_c_close(dbc)) != 0 && ret == 0)
+ if ((t_ret = __dbc_close(dbc)) != 0 && ret == 0)
ret = t_ret;
return (ret);
@@ -416,7 +436,7 @@ __db_del(dbp, txn, key, flags)
* Walk a cursor through the key/data pairs, deleting as we go. Set
* the DB_DBT_USERMEM flag, as this might be a threaded application
* and the flags checking will catch us. We don't actually want the
- * keys or data, set DB_DBT_ISSET. We rely on __db_c_get to clear
+ * keys or data, set DB_DBT_ISSET. We rely on __dbc_get to clear
* this.
*/
memset(&data, 0, sizeof(data));
@@ -451,7 +471,7 @@ __db_del(dbp, txn, key, flags)
*
* !!!
* Note that this is the only application-executed delete call in
- * Berkeley DB that does not go through the __db_c_del function.
+ * Berkeley DB that does not go through the __dbc_del function.
* If anything other than the delete itself (like a secondary index
* update) has to happen there in a particular situation, the
* conditions here should be modified not to use these optimizations.
@@ -469,7 +489,7 @@ __db_del(dbp, txn, key, flags)
#endif
/* Fetch the first record. */
- if ((ret = __db_c_get(dbc, key, &data, f_init)) != 0)
+ if ((ret = __dbc_get(dbc, key, &data, f_init)) != 0)
goto err;
#ifdef HAVE_HASH
@@ -481,19 +501,19 @@ __db_del(dbp, txn, key, flags)
if ((dbp->type == DB_BTREE || dbp->type == DB_RECNO) &&
!F_ISSET(dbp, DB_AM_DUP)) {
- ret = dbc->c_am_del(dbc);
+ ret = dbc->am_del(dbc);
goto done;
}
- } else if ((ret = __db_c_get(dbc, key, &data, f_init)) != 0)
+ } else if ((ret = __dbc_get(dbc, key, &data, f_init)) != 0)
goto err;
/* Walk through the set of key/data pairs, deleting as we go. */
for (;;) {
- if ((ret = __db_c_del(dbc, 0)) != 0)
+ if ((ret = __dbc_del(dbc, 0)) != 0)
break;
F_SET(key, DB_DBT_ISSET);
F_SET(&data, DB_DBT_ISSET);
- if ((ret = __db_c_get(dbc, key, &data, f_next)) != 0) {
+ if ((ret = __dbc_get(dbc, key, &data, f_next)) != 0) {
if (ret == DB_NOTFOUND)
ret = 0;
break;
@@ -502,7 +522,7 @@ __db_del(dbp, txn, key, flags)
done:
err: /* Discard the cursor. */
- if ((t_ret = __db_c_close(dbc)) != 0 && ret == 0)
+ if ((t_ret = __dbc_close(dbc)) != 0 && ret == 0)
ret = t_ret;
return (ret);
@@ -560,13 +580,18 @@ __db_associate(dbp, txn, sdbp, callback, flags)
{
DB_ENV *dbenv;
DBC *pdbc, *sdbc;
- DBT skey, key, data;
+ DBT key, data, skey, *tskeyp;
int build, ret, t_ret;
+ u_int32_t nskey;
dbenv = dbp->dbenv;
pdbc = sdbc = NULL;
ret = 0;
+ memset(&skey, 0, sizeof(DBT));
+ nskey = 0;
+ tskeyp = NULL;
+
/*
* Check to see if the secondary is empty -- and thus if we should
* build it -- before we link it in and risk making it show up in other
@@ -586,14 +611,14 @@ __db_associate(dbp, txn, sdbp, callback, flags)
memset(&data, 0, sizeof(DBT));
F_SET(&key, DB_DBT_PARTIAL | DB_DBT_USERMEM);
F_SET(&data, DB_DBT_PARTIAL | DB_DBT_USERMEM);
- if ((ret = __db_c_get(sdbc, &key, &data,
+ if ((ret = __dbc_get(sdbc, &key, &data,
(STD_LOCKING(sdbc) ? DB_RMW : 0) |
DB_FIRST)) == DB_NOTFOUND) {
build = 1;
ret = 0;
}
- if ((t_ret = __db_c_close(sdbc)) != 0 && ret == 0)
+ if ((t_ret = __dbc_close(sdbc)) != 0 && ret == 0)
ret = t_ret;
/* Reset for later error check. */
@@ -654,23 +679,33 @@ __db_associate(dbp, txn, sdbp, callback, flags)
txn, dbp->type, PGNO_INVALID, 0, sdbc->locker, &pdbc)) != 0)
goto err;
- /* Lock out other threads, now that we have a locker ID. */
- dbp->associate_lid = sdbc->locker;
+ /* Lock out other threads, now that we have a locker. */
+ dbp->associate_locker = sdbc->locker;
memset(&key, 0, sizeof(DBT));
memset(&data, 0, sizeof(DBT));
- while ((ret = __db_c_get(pdbc, &key, &data, DB_NEXT)) == 0) {
- memset(&skey, 0, sizeof(DBT));
+ while ((ret = __dbc_get(pdbc, &key, &data, DB_NEXT)) == 0) {
if ((ret = callback(sdbp, &key, &data, &skey)) != 0) {
if (ret == DB_DONOTINDEX)
continue;
goto err;
}
+ if (F_ISSET(&skey, DB_DBT_MULTIPLE)) {
+#ifdef DIAGNOSTIC
+ __db_check_skeyset(sdbp, &skey);
+#endif
+ nskey = skey.size;
+ tskeyp = (DBT *)skey.data;
+ } else {
+ nskey = 1;
+ tskeyp = &skey;
+ }
SWAP_IF_NEEDED(sdbp, &key);
- if ((ret = __db_c_put(sdbc,
- &skey, &key, DB_UPDATE_SECONDARY)) != 0) {
- FREE_IF_NEEDED(dbenv, &skey);
- goto err;
+ for (; nskey > 0; nskey--, tskeyp++) {
+ if ((ret = __dbc_put(sdbc,
+ tskeyp, &key, DB_UPDATE_SECONDARY)) != 0)
+ goto err;
+ FREE_IF_NEEDED(dbenv, tskeyp);
}
SWAP_IF_NEEDED(sdbp, &key);
FREE_IF_NEEDED(dbenv, &skey);
@@ -679,13 +714,17 @@ __db_associate(dbp, txn, sdbp, callback, flags)
ret = 0;
}
-err: if (sdbc != NULL && (t_ret = __db_c_close(sdbc)) != 0 && ret == 0)
+err: if (sdbc != NULL && (t_ret = __dbc_close(sdbc)) != 0 && ret == 0)
ret = t_ret;
- if (pdbc != NULL && (t_ret = __db_c_close(pdbc)) != 0 && ret == 0)
+ if (pdbc != NULL && (t_ret = __dbc_close(pdbc)) != 0 && ret == 0)
ret = t_ret;
- dbp->associate_lid = DB_LOCK_INVALIDID;
+ dbp->associate_locker = NULL;
+
+ for (; nskey > 0; nskey--, tskeyp++)
+ FREE_IF_NEEDED(dbenv, tskeyp);
+ FREE_IF_NEEDED(dbenv, &skey);
return (ret);
}
@@ -792,12 +831,12 @@ __db_append_primary(dbc, key, data)
* correctly-constructed full data item from this partial
* put is on the page waiting for us.
*/
- if ((ret = __db_c_idup(dbc, &pdbc, DB_POSITION)) != 0)
+ if ((ret = __dbc_idup(dbc, &pdbc, DB_POSITION)) != 0)
return (ret);
memset(&pkey, 0, sizeof(DBT));
memset(&pdata, 0, sizeof(DBT));
- if ((ret = __db_c_get(pdbc, &pkey, &pdata, DB_CURRENT)) != 0)
+ if ((ret = __dbc_get(pdbc, &pkey, &pdata, DB_CURRENT)) != 0)
goto err;
key = &pkey;
@@ -808,14 +847,14 @@ __db_append_primary(dbc, key, data)
* Loop through the secondary indices, putting a new item in
* each that points to the appended item.
*
- * This is much like the loop in "step 3" in __db_c_put, so
+ * This is much like the loop in "step 3" in __dbc_put, so
* I'm not commenting heavily here; it was unclean to excerpt
* just that section into a common function, but the basic
* overview is the same here.
*/
if ((ret = __db_s_first(dbp, &sdbp)) != 0)
goto err;
- for (; sdbp != NULL && ret == 0; ret = __db_s_next(&sdbp)) {
+ for (; sdbp != NULL && ret == 0; ret = __db_s_next(&sdbp, dbc->txn)) {
memset(&skey, 0, sizeof(DBT));
if ((ret = sdbp->s_callback(sdbp, key, data, &skey)) != 0) {
if (ret == DB_DONOTINDEX)
@@ -843,7 +882,7 @@ __db_append_primary(dbc, key, data)
if (!F_ISSET(sdbp, DB_AM_DUP)) {
memset(&oldpkey, 0, sizeof(DBT));
F_SET(&oldpkey, DB_DBT_MALLOC);
- ret = __db_c_get(sdbc, &skey, &oldpkey,
+ ret = __dbc_get(sdbc, &skey, &oldpkey,
DB_SET | (STD_LOCKING(dbc) ? DB_RMW : 0));
if (ret == 0) {
cmp = __bam_defcmp(sdbp, &oldpkey, key);
@@ -864,19 +903,38 @@ __db_append_primary(dbc, key, data)
goto err1;
}
- ret = __db_c_put(sdbc, &skey, key, DB_UPDATE_SECONDARY);
+ ret = __dbc_put(sdbc, &skey, key, DB_UPDATE_SECONDARY);
err1: FREE_IF_NEEDED(dbenv, &skey);
- if ((t_ret = __db_c_close(sdbc)) != 0 && ret == 0)
+ if ((t_ret = __dbc_close(sdbc)) != 0 && ret == 0)
ret = t_ret;
if (ret != 0)
goto err;
}
-err: if (pdbc != NULL && (t_ret = __db_c_close(pdbc)) != 0 && ret == 0)
+err: if (pdbc != NULL && (t_ret = __dbc_close(pdbc)) != 0 && ret == 0)
ret = t_ret;
- if (sdbp != NULL && (t_ret = __db_s_done(sdbp)) != 0 && ret == 0)
+ if (sdbp != NULL &&
+ (t_ret = __db_s_done(sdbp, dbc->txn)) != 0 && ret == 0)
ret = t_ret;
return (ret);
}
+
+static int
+__dbc_set_priority(dbc, priority)
+ DBC *dbc;
+ DB_CACHE_PRIORITY priority;
+{
+ dbc->priority = priority;
+ return (0);
+}
+
+static int
+__dbc_get_priority(dbc, priority)
+ DBC *dbc;
+ DB_CACHE_PRIORITY *priority;
+{
+ *priority = dbc->priority;
+ return (0);
+}
diff --git a/db/db/db_auto.c b/db/db/db_auto.c
index f9cdedd7f..75ed90ea2 100644
--- a/db/db/db_auto.c
+++ b/db/db/db_auto.c
@@ -192,6 +192,7 @@ __db_addrem_log(dbp, txnp, ret_lsnp, flags,
*ret_lsnp = *rlsnp;
}
} else {
+ ret = 0;
#ifdef DIAGNOSTIC
/*
* Set the debug bit if we are going to log non-durable
@@ -201,10 +202,9 @@ __db_addrem_log(dbp, txnp, ret_lsnp, flags,
rectype |= DB_debug_FLAG;
memcpy(logrec.data, &rectype, sizeof(rectype));
- ret = __log_put(dbenv,
- rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
-#else
- ret = 0;
+ if (!IS_REP_CLIENT(dbenv))
+ ret = __log_put(dbenv,
+ rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
#endif
STAILQ_INSERT_HEAD(&txnp->logs, lr, links);
F_SET((TXN_DETAIL *)txnp->td, TXN_DTL_INMEMORY);
@@ -492,6 +492,7 @@ __db_big_log(dbp, txnp, ret_lsnp, flags,
*ret_lsnp = *rlsnp;
}
} else {
+ ret = 0;
#ifdef DIAGNOSTIC
/*
* Set the debug bit if we are going to log non-durable
@@ -501,10 +502,9 @@ __db_big_log(dbp, txnp, ret_lsnp, flags,
rectype |= DB_debug_FLAG;
memcpy(logrec.data, &rectype, sizeof(rectype));
- ret = __log_put(dbenv,
- rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
-#else
- ret = 0;
+ if (!IS_REP_CLIENT(dbenv))
+ ret = __log_put(dbenv,
+ rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
#endif
STAILQ_INSERT_HEAD(&txnp->logs, lr, links);
F_SET((TXN_DETAIL *)txnp->td, TXN_DTL_INMEMORY);
@@ -736,6 +736,7 @@ __db_ovref_log(dbp, txnp, ret_lsnp, flags, pgno, adjust, lsn)
*ret_lsnp = *rlsnp;
}
} else {
+ ret = 0;
#ifdef DIAGNOSTIC
/*
* Set the debug bit if we are going to log non-durable
@@ -745,10 +746,9 @@ __db_ovref_log(dbp, txnp, ret_lsnp, flags, pgno, adjust, lsn)
rectype |= DB_debug_FLAG;
memcpy(logrec.data, &rectype, sizeof(rectype));
- ret = __log_put(dbenv,
- rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
-#else
- ret = 0;
+ if (!IS_REP_CLIENT(dbenv))
+ ret = __log_put(dbenv,
+ rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
#endif
STAILQ_INSERT_HEAD(&txnp->logs, lr, links);
F_SET((TXN_DETAIL *)txnp->td, TXN_DTL_INMEMORY);
@@ -1037,6 +1037,7 @@ __db_debug_log(dbenv, txnp, ret_lsnp, flags,
*ret_lsnp = *rlsnp;
}
} else {
+ ret = 0;
#ifdef DIAGNOSTIC
/*
* Set the debug bit if we are going to log non-durable
@@ -1046,10 +1047,9 @@ __db_debug_log(dbenv, txnp, ret_lsnp, flags,
rectype |= DB_debug_FLAG;
memcpy(logrec.data, &rectype, sizeof(rectype));
- ret = __log_put(dbenv,
- rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
-#else
- ret = 0;
+ if (!IS_REP_CLIENT(dbenv))
+ ret = __log_put(dbenv,
+ rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
#endif
STAILQ_INSERT_HEAD(&txnp->logs, lr, links);
F_SET((TXN_DETAIL *)txnp->td, TXN_DTL_INMEMORY);
@@ -1266,6 +1266,7 @@ __db_noop_log(dbp, txnp, ret_lsnp, flags, pgno, prevlsn)
*ret_lsnp = *rlsnp;
}
} else {
+ ret = 0;
#ifdef DIAGNOSTIC
/*
* Set the debug bit if we are going to log non-durable
@@ -1275,10 +1276,9 @@ __db_noop_log(dbp, txnp, ret_lsnp, flags, pgno, prevlsn)
rectype |= DB_debug_FLAG;
memcpy(logrec.data, &rectype, sizeof(rectype));
- ret = __log_put(dbenv,
- rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
-#else
- ret = 0;
+ if (!IS_REP_CLIENT(dbenv))
+ ret = __log_put(dbenv,
+ rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
#endif
STAILQ_INSERT_HEAD(&txnp->logs, lr, links);
F_SET((TXN_DETAIL *)txnp->td, TXN_DTL_INMEMORY);
@@ -1581,6 +1581,7 @@ __db_pg_alloc_log(dbp, txnp, ret_lsnp, flags, meta_lsn, meta_pgno, page_lsn, pgn
*ret_lsnp = *rlsnp;
}
} else {
+ ret = 0;
#ifdef DIAGNOSTIC
/*
* Set the debug bit if we are going to log non-durable
@@ -1590,10 +1591,9 @@ __db_pg_alloc_log(dbp, txnp, ret_lsnp, flags, meta_lsn, meta_pgno, page_lsn, pgn
rectype |= DB_debug_FLAG;
memcpy(logrec.data, &rectype, sizeof(rectype));
- ret = __log_put(dbenv,
- rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
-#else
- ret = 0;
+ if (!IS_REP_CLIENT(dbenv))
+ ret = __log_put(dbenv,
+ rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
#endif
STAILQ_INSERT_HEAD(&txnp->logs, lr, links);
F_SET((TXN_DETAIL *)txnp->td, TXN_DTL_INMEMORY);
@@ -1908,6 +1908,7 @@ __db_pg_free_log(dbp, txnp, ret_lsnp, flags, pgno, meta_lsn, meta_pgno, header,
*ret_lsnp = *rlsnp;
}
} else {
+ ret = 0;
#ifdef DIAGNOSTIC
/*
* Set the debug bit if we are going to log non-durable
@@ -1917,10 +1918,9 @@ __db_pg_free_log(dbp, txnp, ret_lsnp, flags, pgno, meta_lsn, meta_pgno, header,
rectype |= DB_debug_FLAG;
memcpy(logrec.data, &rectype, sizeof(rectype));
- ret = __log_put(dbenv,
- rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
-#else
- ret = 0;
+ if (!IS_REP_CLIENT(dbenv))
+ ret = __log_put(dbenv,
+ rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
#endif
STAILQ_INSERT_HEAD(&txnp->logs, lr, links);
F_SET((TXN_DETAIL *)txnp->td, TXN_DTL_INMEMORY);
@@ -2108,6 +2108,7 @@ __db_cksum_log(dbenv, txnp, ret_lsnp, flags)
*ret_lsnp = *rlsnp;
}
} else {
+ ret = 0;
#ifdef DIAGNOSTIC
/*
* Set the debug bit if we are going to log non-durable
@@ -2117,10 +2118,9 @@ __db_cksum_log(dbenv, txnp, ret_lsnp, flags)
rectype |= DB_debug_FLAG;
memcpy(logrec.data, &rectype, sizeof(rectype));
- ret = __log_put(dbenv,
- rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
-#else
- ret = 0;
+ if (!IS_REP_CLIENT(dbenv))
+ ret = __log_put(dbenv,
+ rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
#endif
STAILQ_INSERT_HEAD(&txnp->logs, lr, links);
F_SET((TXN_DETAIL *)txnp->td, TXN_DTL_INMEMORY);
@@ -2422,6 +2422,7 @@ __db_pg_freedata_log(dbp, txnp, ret_lsnp, flags, pgno, meta_lsn, meta_pgno, head
*ret_lsnp = *rlsnp;
}
} else {
+ ret = 0;
#ifdef DIAGNOSTIC
/*
* Set the debug bit if we are going to log non-durable
@@ -2431,10 +2432,9 @@ __db_pg_freedata_log(dbp, txnp, ret_lsnp, flags, pgno, meta_lsn, meta_pgno, head
rectype |= DB_debug_FLAG;
memcpy(logrec.data, &rectype, sizeof(rectype));
- ret = __log_put(dbenv,
- rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
-#else
- ret = 0;
+ if (!IS_REP_CLIENT(dbenv))
+ ret = __log_put(dbenv,
+ rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
#endif
STAILQ_INSERT_HEAD(&txnp->logs, lr, links);
F_SET((TXN_DETAIL *)txnp->td, TXN_DTL_INMEMORY);
@@ -2647,6 +2647,7 @@ __db_pg_prepare_log(dbp, txnp, ret_lsnp, flags, pgno)
*ret_lsnp = *rlsnp;
}
} else {
+ ret = 0;
#ifdef DIAGNOSTIC
/*
* Set the debug bit if we are going to log non-durable
@@ -2656,10 +2657,9 @@ __db_pg_prepare_log(dbp, txnp, ret_lsnp, flags, pgno)
rectype |= DB_debug_FLAG;
memcpy(logrec.data, &rectype, sizeof(rectype));
- ret = __log_put(dbenv,
- rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
-#else
- ret = 0;
+ if (!IS_REP_CLIENT(dbenv))
+ ret = __log_put(dbenv,
+ rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
#endif
STAILQ_INSERT_HEAD(&txnp->logs, lr, links);
F_SET((TXN_DETAIL *)txnp->td, TXN_DTL_INMEMORY);
@@ -2885,6 +2885,7 @@ __db_pg_new_log(dbp, txnp, ret_lsnp, flags, pgno, meta_lsn, meta_pgno, header, n
*ret_lsnp = *rlsnp;
}
} else {
+ ret = 0;
#ifdef DIAGNOSTIC
/*
* Set the debug bit if we are going to log non-durable
@@ -2894,10 +2895,9 @@ __db_pg_new_log(dbp, txnp, ret_lsnp, flags, pgno, meta_lsn, meta_pgno, header, n
rectype |= DB_debug_FLAG;
memcpy(logrec.data, &rectype, sizeof(rectype));
- ret = __log_put(dbenv,
- rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
-#else
- ret = 0;
+ if (!IS_REP_CLIENT(dbenv))
+ ret = __log_put(dbenv,
+ rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
#endif
STAILQ_INSERT_HEAD(&txnp->logs, lr, links);
F_SET((TXN_DETAIL *)txnp->td, TXN_DTL_INMEMORY);
@@ -3125,6 +3125,7 @@ __db_pg_init_log(dbp, txnp, ret_lsnp, flags, pgno, header, data)
*ret_lsnp = *rlsnp;
}
} else {
+ ret = 0;
#ifdef DIAGNOSTIC
/*
* Set the debug bit if we are going to log non-durable
@@ -3134,10 +3135,9 @@ __db_pg_init_log(dbp, txnp, ret_lsnp, flags, pgno, header, data)
rectype |= DB_debug_FLAG;
memcpy(logrec.data, &rectype, sizeof(rectype));
- ret = __log_put(dbenv,
- rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
-#else
- ret = 0;
+ if (!IS_REP_CLIENT(dbenv))
+ ret = __log_put(dbenv,
+ rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
#endif
STAILQ_INSERT_HEAD(&txnp->logs, lr, links);
F_SET((TXN_DETAIL *)txnp->td, TXN_DTL_INMEMORY);
@@ -3389,6 +3389,7 @@ __db_pg_sort_log(dbp, txnp, ret_lsnp, flags, meta, meta_lsn, last_free, last_lsn
*ret_lsnp = *rlsnp;
}
} else {
+ ret = 0;
#ifdef DIAGNOSTIC
/*
* Set the debug bit if we are going to log non-durable
@@ -3398,10 +3399,9 @@ __db_pg_sort_log(dbp, txnp, ret_lsnp, flags, meta, meta_lsn, last_free, last_lsn
rectype |= DB_debug_FLAG;
memcpy(logrec.data, &rectype, sizeof(rectype));
- ret = __log_put(dbenv,
- rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
-#else
- ret = 0;
+ if (!IS_REP_CLIENT(dbenv))
+ ret = __log_put(dbenv,
+ rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
#endif
STAILQ_INSERT_HEAD(&txnp->logs, lr, links);
F_SET((TXN_DETAIL *)txnp->td, TXN_DTL_INMEMORY);
diff --git a/db/db/db_cam.c b/db/db/db_cam.c
index af88d955e..24eba8bb6 100644
--- a/db/db/db_cam.c
+++ b/db/db/db_cam.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: db_cam.c,v 12.43 2006/08/24 14:45:15 bostic Exp $
+ * $Id: db_cam.c,v 12.57 2007/06/05 11:46:24 mjc Exp $
*/
#include "db_config.h"
@@ -19,10 +18,10 @@
#include "dbinc/txn.h"
static int __db_buildpartial __P((DB *, DBT *, DBT *, DBT *));
-static int __db_c_cleanup __P((DBC *, DBC *, int));
-static int __db_c_del_oldskey __P((DB *, DBC *, DBT *, DBT *, DBT *));
-static int __db_c_del_secondary __P((DBC *));
-static int __db_c_pget_recno __P((DBC *, DBT *, DBT *, u_int32_t));
+static int __dbc_cleanup __P((DBC *, DBC *, int));
+static int __dbc_del_oldskey __P((DB *, DBC *, DBT *, DBT *, DBT *));
+static int __dbc_del_secondary __P((DBC *));
+static int __dbc_pget_recno __P((DBC *, DBT *, DBT *, u_int32_t));
static int __db_s_count __P((DB *));
static int __db_wrlock_err __P((DB_ENV *));
@@ -50,13 +49,13 @@ static int __db_wrlock_err __P((DB_ENV *));
dbenv, &(dbc)->mylock, DB_LOCK_IWRITE, 0);
/*
- * __db_c_close --
- * DBC->c_close.
+ * __dbc_close --
+ * DBC->close.
*
- * PUBLIC: int __db_c_close __P((DBC *));
+ * PUBLIC: int __dbc_close __P((DBC *));
*/
int
-__db_c_close(dbc)
+__dbc_close(dbc)
DBC *dbc;
{
DB *dbp;
@@ -98,7 +97,7 @@ __db_c_close(dbc)
/* Call the access specific cursor close routine. */
if ((t_ret =
- dbc->c_am_close(dbc, PGNO_INVALID, NULL)) != 0 && ret == 0)
+ dbc->am_close(dbc, PGNO_INVALID, NULL)) != 0 && ret == 0)
ret = t_ret;
/*
@@ -143,13 +142,13 @@ __db_c_close(dbc)
}
/*
- * __db_c_destroy --
- * Destroy the cursor, called after DBC->c_close.
+ * __dbc_destroy --
+ * Destroy the cursor, called after DBC->close.
*
- * PUBLIC: int __db_c_destroy __P((DBC *));
+ * PUBLIC: int __dbc_destroy __P((DBC *));
*/
int
-__db_c_destroy(dbc)
+__dbc_destroy(dbc)
DBC *dbc;
{
DB *dbp;
@@ -173,7 +172,7 @@ __db_c_destroy(dbc)
__os_free(dbenv, dbc->my_rdata.data);
/* Call the access specific cursor destroy routine. */
- ret = dbc->c_am_destroy == NULL ? 0 : dbc->c_am_destroy(dbc);
+ ret = dbc->am_destroy == NULL ? 0 : dbc->am_destroy(dbc);
/*
* Release the lock id for this cursor.
@@ -181,7 +180,7 @@ __db_c_destroy(dbc)
if (LOCKING_ON(dbenv) &&
F_ISSET(dbc, DBC_OWN_LID) &&
(t_ret = __lock_id_free(dbenv,
- ((DB_LOCKER *)dbc->lref)->id)) != 0 && ret == 0)
+ (DB_LOCKER *)dbc->lref)) != 0 && ret == 0)
ret = t_ret;
__os_free(dbenv, dbc);
@@ -190,13 +189,13 @@ __db_c_destroy(dbc)
}
/*
- * __db_c_count --
+ * __dbc_count --
* Return a count of duplicate data items.
*
- * PUBLIC: int __db_c_count __P((DBC *, db_recno_t *));
+ * PUBLIC: int __dbc_count __P((DBC *, db_recno_t *));
*/
int
-__db_c_count(dbc, recnop)
+__dbc_count(dbc, recnop)
DBC *dbc;
db_recno_t *recnop;
{
@@ -219,30 +218,30 @@ __db_c_count(dbc, recnop)
break;
case DB_HASH:
if (dbc->internal->opd == NULL) {
- if ((ret = __ham_c_count(dbc, recnop)) != 0)
+ if ((ret = __hamc_count(dbc, recnop)) != 0)
return (ret);
break;
}
/* FALLTHROUGH */
case DB_BTREE:
- if ((ret = __bam_c_count(dbc, recnop)) != 0)
+ if ((ret = __bamc_count(dbc, recnop)) != 0)
return (ret);
break;
case DB_UNKNOWN:
default:
- return (__db_unknown_type(dbenv, "__db_c_count", dbc->dbtype));
+ return (__db_unknown_type(dbenv, "__dbc_count", dbc->dbtype));
}
return (0);
}
/*
- * __db_c_del --
- * DBC->c_del.
+ * __dbc_del --
+ * DBC->del.
*
- * PUBLIC: int __db_c_del __P((DBC *, u_int32_t));
+ * PUBLIC: int __dbc_del __P((DBC *, u_int32_t));
*/
int
-__db_c_del(dbc, flags)
+__dbc_del(dbc, flags)
DBC *dbc;
u_int32_t flags;
{
@@ -273,7 +272,7 @@ __db_c_del(dbc, flags)
* delete it ourselves as well, so we can just goto done.
*/
if (flags != DB_UPDATE_SECONDARY && F_ISSET(dbp, DB_AM_SECONDARY)) {
- ret = __db_c_del_secondary(dbc);
+ ret = __dbc_del_secondary(dbc);
goto done;
}
@@ -282,7 +281,7 @@ __db_c_del(dbc, flags)
* and delete any secondary keys that point at the current record.
*/
if (LIST_FIRST(&dbp->s_secondaries) != NULL &&
- (ret = __db_c_del_primary(dbc)) != 0)
+ (ret = __dbc_del_primary(dbc)) != 0)
goto done;
/*
@@ -293,10 +292,10 @@ __db_c_del(dbc, flags)
*/
opd = dbc->internal->opd;
if (opd == NULL)
- ret = dbc->c_am_del(dbc);
+ ret = dbc->am_del(dbc);
else
- if ((ret = dbc->c_am_writelock(dbc)) == 0)
- ret = opd->c_am_del(opd);
+ if ((ret = dbc->am_writelock(dbc)) == 0)
+ ret = opd->am_del(opd);
/*
* If this was an update that is supporting dirty reads
@@ -320,13 +319,13 @@ done: CDB_LOCKING_DONE(dbenv, dbc);
}
/*
- * __db_c_dup --
+ * __dbc_dup --
* Duplicate a cursor
*
- * PUBLIC: int __db_c_dup __P((DBC *, DBC **, u_int32_t));
+ * PUBLIC: int __dbc_dup __P((DBC *, DBC **, u_int32_t));
*/
int
-__db_c_dup(dbc_orig, dbcp, flags)
+__dbc_dup(dbc_orig, dbcp, flags)
DBC *dbc_orig;
DBC **dbcp;
u_int32_t flags;
@@ -337,7 +336,7 @@ __db_c_dup(dbc_orig, dbcp, flags)
dbc_n = dbc_nopd = NULL;
/* Allocate a new cursor and initialize it. */
- if ((ret = __db_c_idup(dbc_orig, &dbc_n, flags)) != 0)
+ if ((ret = __dbc_idup(dbc_orig, &dbc_n, flags)) != 0)
goto err;
*dbcp = dbc_n;
@@ -347,28 +346,28 @@ __db_c_dup(dbc_orig, dbcp, flags)
*/
if (dbc_orig->internal->opd != NULL) {
if ((ret =
- __db_c_idup(dbc_orig->internal->opd, &dbc_nopd, flags)) != 0)
+ __dbc_idup(dbc_orig->internal->opd, &dbc_nopd, flags)) != 0)
goto err;
dbc_n->internal->opd = dbc_nopd;
}
return (0);
err: if (dbc_n != NULL)
- (void)__db_c_close(dbc_n);
+ (void)__dbc_close(dbc_n);
if (dbc_nopd != NULL)
- (void)__db_c_close(dbc_nopd);
+ (void)__dbc_close(dbc_nopd);
return (ret);
}
/*
- * __db_c_idup --
- * Internal version of __db_c_dup.
+ * __dbc_idup --
+ * Internal version of __dbc_dup.
*
- * PUBLIC: int __db_c_idup __P((DBC *, DBC **, u_int32_t));
+ * PUBLIC: int __dbc_idup __P((DBC *, DBC **, u_int32_t));
*/
int
-__db_c_idup(dbc_orig, dbcp, flags)
+__dbc_idup(dbc_orig, dbcp, flags)
DBC *dbc_orig, **dbcp;
u_int32_t flags;
{
@@ -399,22 +398,22 @@ __db_c_idup(dbc_orig, dbcp, flags)
switch (dbc_orig->dbtype) {
case DB_QUEUE:
- if ((ret = __qam_c_dup(dbc_orig, dbc_n)) != 0)
+ if ((ret = __qamc_dup(dbc_orig, dbc_n)) != 0)
goto err;
break;
case DB_BTREE:
case DB_RECNO:
- if ((ret = __bam_c_dup(dbc_orig, dbc_n)) != 0)
+ if ((ret = __bamc_dup(dbc_orig, dbc_n)) != 0)
goto err;
break;
case DB_HASH:
- if ((ret = __ham_c_dup(dbc_orig, dbc_n)) != 0)
+ if ((ret = __hamc_dup(dbc_orig, dbc_n)) != 0)
goto err;
break;
case DB_UNKNOWN:
default:
ret = __db_unknown_type(dbp->dbenv,
- "__db_c_idup", dbc_orig->dbtype);
+ "__dbc_idup", dbc_orig->dbtype);
goto err;
}
}
@@ -433,21 +432,22 @@ __db_c_idup(dbc_orig, dbcp, flags)
DB_LOCK_IWRITE : DB_LOCK_READ, &dbc_n->mylock)) != 0)
goto err;
+ dbc_n->priority = dbc_orig->priority;
*dbcp = dbc_n;
return (0);
-err: (void)__db_c_close(dbc_n);
+err: (void)__dbc_close(dbc_n);
return (ret);
}
/*
- * __db_c_newopd --
+ * __dbc_newopd --
* Create a new off-page duplicate cursor.
*
- * PUBLIC: int __db_c_newopd __P((DBC *, db_pgno_t, DBC *, DBC **));
+ * PUBLIC: int __dbc_newopd __P((DBC *, db_pgno_t, DBC *, DBC **));
*/
int
-__db_c_newopd(dbc_parent, root, oldopd, dbcp)
+__dbc_newopd(dbc_parent, root, oldopd, dbcp)
DBC *dbc_parent;
db_pgno_t root;
DBC *oldopd;
@@ -474,6 +474,7 @@ __db_c_newopd(dbc_parent, root, oldopd, dbcp)
dbc_parent->txn, dbtype, root, 1, dbc_parent->locker, &opd)) != 0)
return (ret);
+ opd->priority = dbc_parent->priority;
*dbcp = opd;
/*
@@ -488,20 +489,20 @@ __db_c_newopd(dbc_parent, root, oldopd, dbcp)
* leave the main cursor in our caller with a non-NULL pointer
* to a freed off-page dup cursor.
*/
- if (oldopd != NULL && (ret = __db_c_close(oldopd)) != 0)
+ if (oldopd != NULL && (ret = __dbc_close(oldopd)) != 0)
return (ret);
return (0);
}
/*
- * __db_c_get --
+ * __dbc_get --
* Get using a cursor.
*
- * PUBLIC: int __db_c_get __P((DBC *, DBT *, DBT *, u_int32_t));
+ * PUBLIC: int __dbc_get __P((DBC *, DBT *, DBT *, u_int32_t));
*/
int
-__db_c_get(dbc_arg, key, data, flags)
+__dbc_get(dbc_arg, key, data, flags)
DBC *dbc_arg;
DBT *key, *data;
u_int32_t flags;
@@ -512,6 +513,7 @@ __db_c_get(dbc_arg, key, data, flags)
DB_ENV *dbenv;
DB_MPOOLFILE *mpf;
db_pgno_t pgno;
+ db_indx_t indx_off;
u_int32_t multi, orig_ulen, tmp_flags, tmp_read_uncommitted, tmp_rmw;
u_int8_t type;
int key_small, ret, t_ret;
@@ -556,7 +558,7 @@ __db_c_get(dbc_arg, key, data, flags)
F_SET(dbc_arg, DBC_RMW);
if (tmp_read_uncommitted)
F_SET(dbc_arg, DBC_READ_UNCOMMITTED);
- ret = __bam_c_rget(dbc_arg, data);
+ ret = __bamc_rget(dbc_arg, data);
if (tmp_rmw)
F_CLR(dbc_arg, DBC_RMW);
if (tmp_read_uncommitted)
@@ -572,9 +574,13 @@ __db_c_get(dbc_arg, key, data, flags)
* application's DBT if there is a custom comparator: it might be a
* partial key containing only the unique identifier.
*/
- if ((flags == DB_GET_BOTH || flags == DB_GET_BOTH_RANGE ||
- flags == DB_SET) &&
- ((BTREE *)dbp->bt_internal)->bt_compare == __bam_defcmp)
+ if ((flags == DB_GET_BOTH ||
+ flags == DB_GET_BOTH_RANGE || flags == DB_SET) &&
+ ((BTREE *)dbp->bt_internal)->bt_compare == __bam_defcmp
+#ifdef HAVE_HASH
+ && ((HASH *)dbp->h_internal)->h_compare == NULL
+#endif
+ )
F_SET(key, DB_DBT_ISSET);
if (flags == DB_GET_BOTH && dbp->dup_compare == NULL)
@@ -594,15 +600,16 @@ __db_c_get(dbc_arg, key, data, flags)
cp = dbc_arg->internal;
if (cp->opd != NULL &&
(flags == DB_CURRENT || flags == DB_GET_BOTHC ||
- flags == DB_NEXT || flags == DB_NEXT_DUP || flags == DB_PREV)) {
- if (tmp_rmw && (ret = dbc_arg->c_am_writelock(dbc_arg)) != 0)
+ flags == DB_NEXT || flags == DB_NEXT_DUP ||
+ flags == DB_PREV || flags == DB_PREV_DUP)) {
+ if (tmp_rmw && (ret = dbc_arg->am_writelock(dbc_arg)) != 0)
goto err;
if (F_ISSET(dbc_arg, DBC_TRANSIENT))
opd = cp->opd;
- else if ((ret = __db_c_idup(cp->opd, &opd, DB_POSITION)) != 0)
+ else if ((ret = __dbc_idup(cp->opd, &opd, DB_POSITION)) != 0)
goto err;
- switch (ret = opd->c_am_get(opd, key, data, flags, NULL)) {
+ switch (ret = opd->am_get(opd, key, data, flags, NULL)) {
case 0:
goto done;
case DB_NOTFOUND:
@@ -612,7 +619,7 @@ __db_c_get(dbc_arg, key, data, flags)
* the parent cursor.
*/
if (flags == DB_NEXT || flags == DB_PREV) {
- if ((ret = __db_c_close(opd)) != 0)
+ if ((ret = __dbc_close(opd)) != 0)
goto err;
opd = NULL;
if (F_ISSET(dbc_arg, DBC_TRANSIENT))
@@ -624,7 +631,7 @@ __db_c_get(dbc_arg, key, data, flags)
goto err;
}
} else if (cp->opd != NULL && F_ISSET(dbc_arg, DBC_TRANSIENT)) {
- if ((ret = __db_c_close(cp->opd)) != 0)
+ if ((ret = __dbc_close(cp->opd)) != 0)
goto err;
cp->opd = NULL;
}
@@ -640,6 +647,7 @@ __db_c_get(dbc_arg, key, data, flags)
case DB_NEXT_DUP:
case DB_NEXT_NODUP:
case DB_PREV:
+ case DB_PREV_DUP:
case DB_PREV_NODUP:
tmp_flags = DB_POSITION;
break;
@@ -658,7 +666,7 @@ __db_c_get(dbc_arg, key, data, flags)
if (F_ISSET(dbc_arg, DBC_TRANSIENT))
dbc_n = dbc_arg;
else {
- ret = __db_c_idup(dbc_arg, &dbc_n, tmp_flags);
+ ret = __dbc_idup(dbc_arg, &dbc_n, tmp_flags);
if (tmp_read_uncommitted)
F_CLR(dbc_arg, DBC_READ_UNCOMMITTED);
@@ -686,7 +694,7 @@ __db_c_get(dbc_arg, key, data, flags)
}
pgno = PGNO_INVALID;
- ret = dbc_n->c_am_get(dbc_n, key, data, flags, &pgno);
+ ret = dbc_n->am_get(dbc_n, key, data, flags, &pgno);
if (tmp_rmw)
F_CLR(dbc_n, DBC_RMW);
if (tmp_read_uncommitted)
@@ -702,7 +710,7 @@ __db_c_get(dbc_arg, key, data, flags)
* a new cursor and call the underlying function.
*/
if (pgno != PGNO_INVALID) {
- if ((ret = __db_c_newopd(dbc_arg,
+ if ((ret = __dbc_newopd(dbc_arg,
pgno, cp_n->opd, &cp_n->opd)) != 0)
goto err;
@@ -726,10 +734,10 @@ __db_c_get(dbc_arg, key, data, flags)
tmp_flags = flags;
break;
default:
- ret = __db_unknown_flag(dbenv, "__db_c_get", flags);
+ ret = __db_unknown_flag(dbenv, "__dbc_get", flags);
goto err;
}
- if ((ret = cp_n->opd->c_am_get(
+ if ((ret = cp_n->opd->am_get(
cp_n->opd, key, data, tmp_flags, NULL)) != 0)
goto err;
}
@@ -790,10 +798,10 @@ done: /*
F_ISSET(dbc_arg, DBC_TRANSIENT))
dbc_n = dbc_arg;
else {
- if ((ret = __db_c_idup(dbc_arg,
+ if ((ret = __dbc_idup(dbc_arg,
&dbc_n, DB_POSITION)) != 0)
goto err;
- if ((ret = dbc_n->c_am_get(dbc_n,
+ if ((ret = dbc_n->am_get(dbc_n,
key, data, DB_CURRENT, &pgno)) != 0)
goto err;
}
@@ -814,13 +822,13 @@ done: /*
/*
* Bulk get doesn't use __db_retcopy, so data.size won't
* get set up unless there is an error. Assume success
- * here. This is the only call to c_am_bulk, and it avoids
+ * here. This is the only call to am_bulk, and it avoids
* setting it exactly the same everywhere. If we have an
* DB_BUFFER_SMALL error, it'll get overwritten with the
* needed value.
*/
data->size = data->ulen;
- ret = dbc_n->c_am_bulk(dbc_n, data, flags | multi);
+ ret = dbc_n->am_bulk(dbc_n, data, flags | multi);
} else if (!F_ISSET(data, DB_DBT_ISSET)) {
dbc = opd != NULL ? opd : cp_n->opd != NULL ? cp_n->opd : dbc_n;
cp = dbc->internal;
@@ -830,8 +838,9 @@ done: /*
goto err;
type = TYPE(cp->page);
- ret = __db_ret(dbp, dbc->txn, cp->page, cp->indx +
- (type == P_LBTREE || type == P_HASH ? O_INDX : 0),
+ indx_off = ((type == P_LBTREE ||
+ type == P_HASH || type == P_HASH_UNSORTED) ? O_INDX : 0);
+ ret = __db_ret(dbp, dbc->txn, cp->page, cp->indx + indx_off,
data, &dbc_arg->rdata->data, &dbc_arg->rdata->ulen);
}
@@ -852,9 +861,9 @@ err: /* Don't pass DB_DBT_ISSET back to application level, error or no. */
F_ISSET((BTREE_CURSOR *)
dbc_arg->internal->opd->internal, C_DELETED))
if ((t_ret =
- dbc_arg->c_am_writelock(dbc_arg)) != 0 && ret == 0)
+ dbc_arg->am_writelock(dbc_arg)) != 0 && ret == 0)
ret = t_ret;
- if ((t_ret = __db_c_cleanup(
+ if ((t_ret = __dbc_cleanup(
dbc_arg->internal->opd, opd, ret)) != 0 && ret == 0)
ret = t_ret;
@@ -866,7 +875,7 @@ err: /* Don't pass DB_DBT_ISSET back to application level, error or no. */
ret = DB_BUFFER_SMALL;
}
- if ((t_ret = __db_c_cleanup(dbc_arg, dbc_n, ret)) != 0 &&
+ if ((t_ret = __dbc_cleanup(dbc_arg, dbc_n, ret)) != 0 &&
(ret == 0 || ret == DB_BUFFER_SMALL))
ret = t_ret;
@@ -876,13 +885,13 @@ err: /* Don't pass DB_DBT_ISSET back to application level, error or no. */
}
/*
- * __db_c_put --
+ * __dbc_put --
* Put using a cursor.
*
- * PUBLIC: int __db_c_put __P((DBC *, DBT *, DBT *, u_int32_t));
+ * PUBLIC: int __dbc_put __P((DBC *, DBT *, DBT *, u_int32_t));
*/
int
-__db_c_put(dbc_arg, key, data, flags)
+__dbc_put(dbc_arg, key, data, flags)
DBC *dbc_arg;
DBT *key, *data;
u_int32_t flags;
@@ -891,10 +900,10 @@ __db_c_put(dbc_arg, key, data, flags)
DB *dbp, *sdbp;
DBC *dbc_n, *oldopd, *opd, *sdbc, *pdbc;
DBT olddata, oldpkey, newdata, pkey, temppkey, tempskey;
- DBT *all_skeys, *skeyp;
+ DBT *all_skeys, *skeyp, *tskeyp;
db_pgno_t pgno;
int cmp, have_oldrec, ispartial, nodel, re_pad, ret, s_count, t_ret;
- u_int32_t re_len, rmw, size, tmp_flags;
+ u_int32_t re_len, nskey, rmw, size, tmp_flags;
/*
* Cursor Cleanup Note:
@@ -1032,7 +1041,7 @@ __db_c_put(dbc_arg, key, data, flags)
* The DB_KEYEMPTY return needs special handling -- if the
* cursor is on a deleted key, we return DB_NOTFOUND.
*/
- ret = __db_c_get(dbc_arg, &pkey, &olddata, rmw | DB_CURRENT);
+ ret = __dbc_get(dbc_arg, &pkey, &olddata, rmw | DB_CURRENT);
if (ret == DB_KEYEMPTY)
ret = DB_NOTFOUND;
if (ret != 0)
@@ -1055,18 +1064,18 @@ __db_c_put(dbc_arg, key, data, flags)
* specified key. Dup a cursor (so we have the same
* locking info) and do a c_get.
*/
- if ((ret = __db_c_idup(dbc_arg, &pdbc, 0)) != 0)
+ if ((ret = __dbc_idup(dbc_arg, &pdbc, 0)) != 0)
goto err;
/* We should have gotten DB_CURRENT in step 1. */
DB_ASSERT(dbenv, flags != DB_CURRENT);
- ret = __db_c_get(pdbc, &pkey, &olddata, rmw | DB_SET);
+ ret = __dbc_get(pdbc, &pkey, &olddata, rmw | DB_SET);
if (ret == DB_KEYEMPTY || ret == DB_NOTFOUND) {
nodel = 1;
ret = 0;
}
- if ((t_ret = __db_c_close(pdbc)) != 0)
+ if ((t_ret = __dbc_close(pdbc)) != 0)
ret = t_ret;
if (ret != 0)
goto err;
@@ -1139,7 +1148,7 @@ __db_c_put(dbc_arg, key, data, flags)
*/
for (ret = __db_s_first(dbp, &sdbp), skeyp = all_skeys;
sdbp != NULL && ret == 0;
- ret = __db_s_next(&sdbp), ++skeyp) {
+ ret = __db_s_next(&sdbp, dbc_arg->txn), ++skeyp) {
DB_ASSERT(dbenv, skeyp - all_skeys < s_count);
/*
* Don't process this secondary if the key is immutable and we
@@ -1168,17 +1177,33 @@ __db_c_put(dbc_arg, key, data, flags)
}
/*
- * If we have the old record, we can generate and remove the
- * old secondary key now. We can also skip the secondary put
+ * Mark the secondary key DBT(s) as set -- that is, the
+ * callback returned 0 rather than DB_DONOTINDEX, so we have at
+ * least one secondary key.
+ */
+ if (F_ISSET(skeyp, DB_DBT_MULTIPLE)) {
+#ifdef DIAGNOSTIC
+ __db_check_skeyset(sdbp, skeyp);
+#endif
+ for (tskeyp = (DBT *)skeyp->data, nskey = skeyp->size;
+ nskey > 0; nskey--, tskeyp++)
+ F_SET(tskeyp, DB_DBT_ISSET);
+
+ tskeyp = (DBT *)skeyp->data;
+ nskey = skeyp->size;
+ } else {
+ F_SET(skeyp, DB_DBT_ISSET);
+ tskeyp = skeyp;
+ nskey = 1;
+ }
+
+ /*
+ * If we have the old record, we can generate and remove any
+ * old secondary key(s) now. We can also skip the secondary put
* if there is no change.
*/
if (have_oldrec) {
- /*
- * Mark that the secondary key is set -- that is, the
- * callback returned 0 rather than DB_DONOTINDEX.
- */
- F_SET(skeyp, DB_DBT_ISSET);
- if ((ret = __db_c_del_oldskey(sdbp, dbc_arg,
+ if ((ret = __dbc_del_oldskey(sdbp, dbc_arg,
skeyp, &pkey, &olddata)) == DB_KEYEXIST)
continue;
else if (ret != 0)
@@ -1219,81 +1244,90 @@ __db_c_put(dbc_arg, key, data, flags)
*/
SWAP_IF_NEEDED(sdbp, &pkey);
- /*
- * There are three cases here--
- * 1) The secondary supports sorted duplicates.
- * If we attempt to put a secondary/primary pair
- * that already exists, that's a duplicate duplicate,
- * and c_put will return DB_KEYEXIST (see __db_duperr).
- * This will leave us with exactly one copy of the
- * secondary/primary pair, and this is just right--we'll
- * avoid deleting it later, as the old and new secondaries
- * will match (since the old secondary is the dup dup
- * that's already there).
- * 2) The secondary supports duplicates, but they're not
- * sorted. We need to avoid putting a duplicate
- * duplicate, because the matching old and new secondaries
- * will prevent us from deleting anything and we'll
- * wind up with two secondary records that point to the
- * same primary key. Do a c_get(DB_GET_BOTH); only
- * do the put if the secondary doesn't exist.
- * 3) The secondary doesn't support duplicates at all.
- * In this case, secondary keys must be unique; if
- * another primary key already exists for this
- * secondary key, we have to either overwrite it or
- * not put this one, and in either case we've
- * corrupted the secondary index. Do a c_get(DB_SET).
- * If the secondary/primary pair already exists, do
- * nothing; if the secondary exists with a different
- * primary, return an error; and if the secondary
- * does not exist, put it.
- */
- if (!F_ISSET(sdbp, DB_AM_DUP)) {
- /* Case 3. */
- memset(&oldpkey, 0, sizeof(DBT));
- F_SET(&oldpkey, DB_DBT_MALLOC);
- ret = __db_c_get(sdbc,
- skeyp, &oldpkey, rmw | DB_SET);
- if (ret == 0) {
- cmp = __bam_defcmp(sdbp, &oldpkey, &pkey);
- __os_ufree(dbenv, oldpkey.data);
- if (cmp != 0) {
- __db_errx(dbenv, "%s%s",
+ for (; nskey > 0 && ret == 0; nskey--, tskeyp++) {
+ /* Skip this key if it is already in the database. */
+ if (!F_ISSET(tskeyp, DB_DBT_ISSET))
+ continue;
+
+ /*
+ * There are three cases here--
+ * 1) The secondary supports sorted duplicates.
+ * If we attempt to put a secondary/primary pair
+ * that already exists, that's a duplicate
+ * duplicate, and c_put will return DB_KEYEXIST
+ * (see __db_duperr). This will leave us with
+ * exactly one copy of the secondary/primary pair,
+ * and this is just right--we'll avoid deleting it
+ * later, as the old and new secondaries will
+ * match (since the old secondary is the dup dup
+ * that's already there).
+ * 2) The secondary supports duplicates, but they're not
+ * sorted. We need to avoid putting a duplicate
+ * duplicate, because the matching old and new
+ * secondaries will prevent us from deleting
+ * anything and we'll wind up with two secondary
+ * records that point to the same primary key. Do
+ * a c_get(DB_GET_BOTH); only do the put if the
+ * secondary doesn't exist.
+ * 3) The secondary doesn't support duplicates at all.
+ * In this case, secondary keys must be unique;
+ * if another primary key already exists for this
+ * secondary key, we have to either overwrite it
+ * or not put this one, and in either case we've
+ * corrupted the secondary index. Do a
+ * c_get(DB_SET). If the secondary/primary pair
+ * already exists, do nothing; if the secondary
+ * exists with a different primary, return an
+ * error; and if the secondary does not exist,
+ * put it.
+ */
+ if (!F_ISSET(sdbp, DB_AM_DUP)) {
+ /* Case 3. */
+ memset(&oldpkey, 0, sizeof(DBT));
+ F_SET(&oldpkey, DB_DBT_MALLOC);
+ ret = __dbc_get(sdbc,
+ tskeyp, &oldpkey, rmw | DB_SET);
+ if (ret == 0) {
+ cmp = __bam_defcmp(sdbp,
+ &oldpkey, &pkey);
+ __os_ufree(dbenv, oldpkey.data);
+ if (cmp != 0) {
+ __db_errx(dbenv, "%s%s",
"Put results in a non-unique secondary key in an ",
"index not configured to support duplicates");
- ret = EINVAL;
+ ret = EINVAL;
+ }
}
+ if (ret != DB_NOTFOUND && ret != DB_KEYEMPTY)
+ break;
+ } else if (!F_ISSET(sdbp, DB_AM_DUPSORT)) {
+ /* Case 2. */
+ DB_INIT_DBT(tempskey,
+ tskeyp->data, tskeyp->size);
+ DB_INIT_DBT(temppkey,
+ pkey.data, pkey.size);
+ ret = __dbc_get(sdbc, &tempskey, &temppkey,
+ rmw | DB_GET_BOTH);
+ if (ret != DB_NOTFOUND && ret != DB_KEYEMPTY)
+ break;
}
- if (ret != DB_NOTFOUND && ret != DB_KEYEMPTY)
- goto skipput;
- } else if (!F_ISSET(sdbp, DB_AM_DUPSORT)) {
- /* Case 2. */
- memset(&tempskey, 0, sizeof(DBT));
- tempskey.data = skeyp->data;
- tempskey.size = skeyp->size;
- memset(&temppkey, 0, sizeof(DBT));
- temppkey.data = pkey.data;
- temppkey.size = pkey.size;
- ret = __db_c_get(sdbc, &tempskey, &temppkey,
- rmw | DB_GET_BOTH);
- if (ret != DB_NOTFOUND && ret != DB_KEYEMPTY)
- goto skipput;
- }
- ret = __db_c_put(sdbc, skeyp, &pkey, DB_UPDATE_SECONDARY);
+ ret = __dbc_put(sdbc, tskeyp, &pkey,
+ DB_UPDATE_SECONDARY);
- /*
- * We don't know yet whether this was a put-overwrite that
- * in fact changed nothing. If it was, we may get DB_KEYEXIST.
- * This is not an error.
- */
- if (ret == DB_KEYEXIST)
- ret = 0;
+ /*
+ * We don't know yet whether this was a put-overwrite
+ * that in fact changed nothing. If it was, we may get
+ * DB_KEYEXIST. This is not an error.
+ */
+ if (ret == DB_KEYEXIST)
+ ret = 0;
+ }
-skipput: /* Make sure the primary key is back in native byte-order. */
+ /* Make sure the primary key is back in native byte-order. */
SWAP_IF_NEEDED(sdbp, &pkey);
- if ((t_ret = __db_c_close(sdbc)) != 0 && ret == 0)
+ if ((t_ret = __dbc_close(sdbc)) != 0 && ret == 0)
ret = t_ret;
if (ret != 0)
@@ -1305,7 +1339,6 @@ skipput: /* Make sure the primary key is back in native byte-order. */
* earlier or it would be cleared in the calls above.
*/
F_SET(skeyp, DB_DBT_ISSET);
-
}
if (ret != 0)
goto err;
@@ -1317,19 +1350,22 @@ skipput: /* Make sure the primary key is back in native byte-order. */
if (have_oldrec)
goto skip_s_update;
- /* If still necessary, go get the old primary key/data. (Step 4.) */
- /* See the comments in step 2. This is real familiar. */
- if ((ret = __db_c_idup(dbc_arg, &pdbc, 0)) != 0)
+ /*
+ * If still necessary, go get the old primary key/data. (Step 4.)
+ *
+ * See the comments in step 2. This is real familiar.
+ */
+ if ((ret = __dbc_idup(dbc_arg, &pdbc, 0)) != 0)
goto err;
DB_ASSERT(dbenv, flags != DB_CURRENT);
pkey.data = key->data;
pkey.size = key->size;
- ret = __db_c_get(pdbc, &pkey, &olddata, rmw | DB_SET);
+ ret = __dbc_get(pdbc, &pkey, &olddata, rmw | DB_SET);
if (ret == DB_KEYEMPTY || ret == DB_NOTFOUND) {
nodel = 1;
ret = 0;
}
- if ((t_ret = __db_c_close(pdbc)) != 0 && ret == 0)
+ if ((t_ret = __dbc_close(pdbc)) != 0 && ret == 0)
ret = t_ret;
if (ret != 0)
goto err;
@@ -1343,7 +1379,7 @@ skipput: /* Make sure the primary key is back in native byte-order. */
for (ret = __db_s_first(dbp, &sdbp), skeyp = all_skeys;
sdbp != NULL && ret == 0;
- ret = __db_s_next(&sdbp), skeyp++) {
+ ret = __db_s_next(&sdbp, dbc_arg->txn), skeyp++) {
DB_ASSERT(dbenv, skeyp - all_skeys < s_count);
/*
* Don't process this secondary if the key is immutable. We
@@ -1353,7 +1389,7 @@ skipput: /* Make sure the primary key is back in native byte-order. */
if (FLD_ISSET(sdbp->s_assoc_flags, DB_ASSOC_IMMUTABLE_KEY))
continue;
- ret = __db_c_del_oldskey(sdbp, dbc_arg, skeyp, &pkey, &olddata);
+ ret = __dbc_del_oldskey(sdbp, dbc_arg, skeyp, &pkey, &olddata);
if (ret != 0 && ret != DB_KEYEXIST)
goto err;
}
@@ -1389,11 +1425,11 @@ skip_s_update:
goto err;
}
- if ((ret = dbc_arg->c_am_writelock(dbc_arg)) != 0 ||
- (ret = __db_c_dup(dbc_arg, &dbc_n, DB_POSITION)) != 0)
+ if ((ret = dbc_arg->am_writelock(dbc_arg)) != 0 ||
+ (ret = __dbc_dup(dbc_arg, &dbc_n, DB_POSITION)) != 0)
goto err;
opd = dbc_n->internal->opd;
- if ((ret = opd->c_am_put(
+ if ((ret = opd->am_put(
opd, key, data, flags, NULL)) != 0)
goto err;
goto done;
@@ -1402,13 +1438,9 @@ skip_s_update:
/*
* Perform an operation on the main cursor. Duplicate the cursor,
* and call the underlying function.
- *
- * XXX: MARGO
- *
+ */
tmp_flags = flags == DB_AFTER ||
flags == DB_BEFORE || flags == DB_CURRENT ? DB_POSITION : 0;
- */
- tmp_flags = DB_POSITION;
/*
* If this cursor is going to be closed immediately, we don't
@@ -1416,11 +1448,11 @@ skip_s_update:
*/
if (F_ISSET(dbc_arg, DBC_TRANSIENT))
dbc_n = dbc_arg;
- else if ((ret = __db_c_idup(dbc_arg, &dbc_n, tmp_flags)) != 0)
+ else if ((ret = __dbc_idup(dbc_arg, &dbc_n, tmp_flags)) != 0)
goto err;
pgno = PGNO_INVALID;
- if ((ret = dbc_n->c_am_put(dbc_n, key, data, flags, &pgno)) != 0)
+ if ((ret = dbc_n->am_put(dbc_n, key, data, flags, &pgno)) != 0)
goto err;
/*
@@ -1429,7 +1461,7 @@ skip_s_update:
*/
if (pgno != PGNO_INVALID) {
oldopd = dbc_n->internal->opd;
- if ((ret = __db_c_newopd(dbc_arg, pgno, oldopd, &opd)) != 0) {
+ if ((ret = __dbc_newopd(dbc_arg, pgno, oldopd, &opd)) != 0) {
dbc_n->internal->opd = opd;
goto err;
}
@@ -1438,14 +1470,14 @@ skip_s_update:
if (flags == DB_NOOVERWRITE)
flags = DB_KEYLAST;
- if ((ret = opd->c_am_put(
+ if ((ret = opd->am_put(
opd, key, data, flags, NULL)) != 0)
goto err;
}
done:
err: /* Cleanup and cursor resolution. */
- if ((t_ret = __db_c_cleanup(dbc_arg, dbc_n, ret)) != 0 && ret == 0)
+ if ((t_ret = __dbc_cleanup(dbc_arg, dbc_n, ret)) != 0 && ret == 0)
ret = t_ret;
/* If newdata or olddata were used, free their buffers. */
@@ -1456,11 +1488,19 @@ err: /* Cleanup and cursor resolution. */
CDB_LOCKING_DONE(dbenv, dbc_arg);
- if (sdbp != NULL && (t_ret = __db_s_done(sdbp)) != 0 && ret == 0)
+ if (sdbp != NULL &&
+ (t_ret = __db_s_done(sdbp, dbc_arg->txn)) != 0 && ret == 0)
ret = t_ret;
- for (skeyp = all_skeys; skeyp - all_skeys < s_count; skeyp++)
+ for (skeyp = all_skeys; skeyp - all_skeys < s_count; skeyp++) {
+ if (F_ISSET(skeyp, DB_DBT_MULTIPLE)) {
+ for (nskey = skeyp->size, tskeyp = (DBT *)skeyp->data;
+ nskey > 0;
+ nskey--, tskeyp++)
+ FREE_IF_NEEDED(dbenv, tskeyp);
+ }
FREE_IF_NEEDED(dbenv, skeyp);
+ }
if (all_skeys != NULL)
__os_free(dbenv, all_skeys);
@@ -1468,12 +1508,12 @@ err: /* Cleanup and cursor resolution. */
}
/*
- * __db_c_del_oldskey --
+ * __dbc_del_oldskey --
* Delete an old secondary key, if necessary.
* Returns DB_KEYEXIST if the new and old keys match..
*/
static int
-__db_c_del_oldskey(sdbp, dbc_arg, skey, pkey, olddata)
+__dbc_del_oldskey(sdbp, dbc_arg, skey, pkey, olddata)
DB *sdbp;
DBC *dbc_arg;
DBT *skey, *pkey, *olddata;
@@ -1481,13 +1521,15 @@ __db_c_del_oldskey(sdbp, dbc_arg, skey, pkey, olddata)
DB_ENV *dbenv;
DB *dbp;
DBC *sdbc;
+ DBT *toldskeyp, *tskeyp;
DBT oldskey, temppkey, tempskey;
int ret, t_ret;
- u_int32_t rmw;
+ u_int32_t i, noldskey, nsame, nskey, rmw;
sdbc = NULL;
dbp = sdbp->s_primary;
dbenv = dbp->dbenv;
+ nsame = 0;
rmw = STD_LOCKING(dbc_arg) ? DB_RMW : 0;
/*
@@ -1501,48 +1543,77 @@ __db_c_del_oldskey(sdbp, dbc_arg, skey, pkey, olddata)
return (ret);
}
- /*
- * If there is a new secondary key, check whether it is different from
- * the old secondary key before we delete it. Note that bt_compare is
- * (and must be) set no matter what access method we're in.
- */
- if (F_ISSET(skey, DB_DBT_ISSET) &&
- ((BTREE *)sdbp->bt_internal)->bt_compare(sdbp,
- &oldskey, skey) == 0) {
- ret = DB_KEYEXIST;
- goto err;
+ if (F_ISSET(&oldskey, DB_DBT_MULTIPLE)) {
+#ifdef DIAGNOSTIC
+ __db_check_skeyset(sdbp, &oldskey);
+#endif
+ toldskeyp = (DBT *)oldskey.data;
+ noldskey = oldskey.size;
+ } else {
+ toldskeyp = &oldskey;
+ noldskey = 1;
}
- if ((ret = __db_cursor_int(
- sdbp, dbc_arg->txn, sdbp->type,
- PGNO_INVALID, 0, dbc_arg->locker, &sdbc)) != 0)
- goto err;
- if (CDB_LOCKING(dbenv)) {
- DB_ASSERT(dbenv, sdbc->mylock.off == LOCK_INVALID);
- F_SET(sdbc, DBC_WRITER);
- }
+ if (F_ISSET(skey, DB_DBT_MULTIPLE)) {
+ nskey = skey->size;
+ skey = (DBT *)skey->data;
+ } else
+ nskey = F_ISSET(skey, DB_DBT_ISSET) ? 1 : 0;
- /*
- * Don't let c_get(DB_GET_BOTH) stomp on our data. Use a temp DBT
- * instead.
- */
- memset(&tempskey, 0, sizeof(DBT));
- tempskey.data = oldskey.data;
- tempskey.size = oldskey.size;
- SWAP_IF_NEEDED(sdbp, pkey);
- memset(&temppkey, 0, sizeof(DBT));
- temppkey.data = pkey->data;
- temppkey.size = pkey->size;
- if ((ret = __db_c_get(sdbc,
- &tempskey, &temppkey, rmw | DB_GET_BOTH)) == 0)
- ret = __db_c_del(sdbc, DB_UPDATE_SECONDARY);
- else if (ret == DB_NOTFOUND)
- ret = __db_secondary_corrupt(dbp);
- SWAP_IF_NEEDED(sdbp, pkey);
+ for (; noldskey > 0 && ret == 0; noldskey--, toldskeyp++) {
+ /*
+ * Check whether this old secondary key is also a new key
+ * before we delete it. Note that bt_compare is (and must be)
+ * set no matter what access method we're in.
+ */
+ for (i = 0, tskeyp = skey; i < nskey; i++, tskeyp++)
+ if (((BTREE *)sdbp->bt_internal)->bt_compare(sdbp,
+ toldskeyp, tskeyp) == 0) {
+ nsame++;
+ F_CLR(tskeyp, DB_DBT_ISSET);
+ break;
+ }
+
+ if (i < nskey) {
+ FREE_IF_NEEDED(dbenv, toldskeyp);
+ continue;
+ }
-err: FREE_IF_NEEDED(dbenv, &oldskey);
- if (sdbc != NULL && (t_ret = __db_c_close(sdbc)) != 0 && ret == 0)
+ if (sdbc == NULL) {
+ if ((ret = __db_cursor_int(
+ sdbp, dbc_arg->txn, sdbp->type,
+ PGNO_INVALID, 0, dbc_arg->locker, &sdbc)) != 0)
+ goto err;
+ if (CDB_LOCKING(dbenv)) {
+ DB_ASSERT(dbenv,
+ sdbc->mylock.off == LOCK_INVALID);
+ F_SET(sdbc, DBC_WRITER);
+ }
+ }
+
+ /*
+ * Don't let c_get(DB_GET_BOTH) stomp on our data. Use
+ * temporary DBTs instead.
+ */
+ SWAP_IF_NEEDED(sdbp, pkey);
+ DB_INIT_DBT(temppkey, pkey->data, pkey->size);
+ DB_INIT_DBT(tempskey, toldskeyp->data, toldskeyp->size);
+ if ((ret = __dbc_get(sdbc,
+ &tempskey, &temppkey, rmw | DB_GET_BOTH)) == 0)
+ ret = __dbc_del(sdbc, DB_UPDATE_SECONDARY);
+ else if (ret == DB_NOTFOUND)
+ ret = __db_secondary_corrupt(dbp);
+ SWAP_IF_NEEDED(sdbp, pkey);
+ FREE_IF_NEEDED(dbenv, toldskeyp);
+ }
+
+err: for (; noldskey > 0; noldskey--, toldskeyp++)
+ FREE_IF_NEEDED(dbenv, toldskeyp);
+ FREE_IF_NEEDED(dbenv, &oldskey);
+ if (sdbc != NULL && (t_ret = __dbc_close(sdbc)) != 0 && ret == 0)
ret = t_ret;
+ if (ret == 0 && nsame == nskey)
+ return (DB_KEYEXIST);
return (ret);
}
@@ -1576,11 +1647,11 @@ __db_duperr(dbp, flags)
}
/*
- * __db_c_cleanup --
+ * __dbc_cleanup --
* Clean up duplicate cursors.
*/
static int
-__db_c_cleanup(dbc, dbc_n, failed)
+__dbc_cleanup(dbc, dbc_n, failed)
DBC *dbc, *dbc_n;
int failed;
{
@@ -1597,15 +1668,15 @@ __db_c_cleanup(dbc, dbc_n, failed)
/* Discard any pages we're holding. */
if (internal->page != NULL) {
- if ((t_ret =
- __memp_fput(mpf, internal->page, 0)) != 0 && ret == 0)
+ if ((t_ret = __memp_fput(mpf,
+ internal->page, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
internal->page = NULL;
}
opd = internal->opd;
if (opd != NULL && opd->internal->page != NULL) {
- if ((t_ret =
- __memp_fput(mpf, opd->internal->page, 0)) != 0 && ret == 0)
+ if ((t_ret = __memp_fput(mpf,
+ opd->internal->page, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
opd->internal->page = NULL;
}
@@ -1628,15 +1699,15 @@ __db_c_cleanup(dbc, dbc_n, failed)
return (ret);
if (dbc_n->internal->page != NULL) {
- if ((t_ret = __memp_fput(
- mpf, dbc_n->internal->page, 0)) != 0 && ret == 0)
+ if ((t_ret = __memp_fput(mpf,
+ dbc_n->internal->page, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
dbc_n->internal->page = NULL;
}
opd = dbc_n->internal->opd;
if (opd != NULL && opd->internal->page != NULL) {
- if ((t_ret =
- __memp_fput(mpf, opd->internal->page, 0)) != 0 && ret == 0)
+ if ((t_ret = __memp_fput(mpf,
+ opd->internal->page, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
opd->internal->page = NULL;
}
@@ -1666,7 +1737,7 @@ __db_c_cleanup(dbc, dbc_n, failed)
* We might want to consider adding a flag to the cursor, so that any
* subsequent operations other than close just return an error?
*/
- if ((t_ret = __db_c_close(dbc_n)) != 0 && ret == 0)
+ if ((t_ret = __dbc_close(dbc_n)) != 0 && ret == 0)
ret = t_ret;
/*
@@ -1689,30 +1760,30 @@ __db_c_cleanup(dbc, dbc_n, failed)
}
/*
- * __db_c_secondary_get_pp --
- * This wrapper function for DBC->c_pget() is the DBC->c_get() function
+ * __dbc_secondary_get_pp --
+ * This wrapper function for DBC->pget() is the DBC->get() function
* for a secondary index cursor.
*
- * PUBLIC: int __db_c_secondary_get_pp __P((DBC *, DBT *, DBT *, u_int32_t));
+ * PUBLIC: int __dbc_secondary_get_pp __P((DBC *, DBT *, DBT *, u_int32_t));
*/
int
-__db_c_secondary_get_pp(dbc, skey, data, flags)
+__dbc_secondary_get_pp(dbc, skey, data, flags)
DBC *dbc;
DBT *skey, *data;
u_int32_t flags;
{
DB_ASSERT(dbc->dbp->dbenv, F_ISSET(dbc->dbp, DB_AM_SECONDARY));
- return (__db_c_pget_pp(dbc, skey, NULL, data, flags));
+ return (__dbc_pget_pp(dbc, skey, NULL, data, flags));
}
/*
- * __db_c_pget --
+ * __dbc_pget --
* Get a primary key/data pair through a secondary index.
*
- * PUBLIC: int __db_c_pget __P((DBC *, DBT *, DBT *, DBT *, u_int32_t));
+ * PUBLIC: int __dbc_pget __P((DBC *, DBT *, DBT *, DBT *, u_int32_t));
*/
int
-__db_c_pget(dbc, skey, pkey, data, flags)
+__dbc_pget(dbc, skey, pkey, data, flags)
DBC *dbc;
DBT *skey, *pkey, *data;
u_int32_t flags;
@@ -1764,7 +1835,7 @@ __db_c_pget(dbc, skey, pkey, data, flags)
F_SET(dbc, DBC_RMW);
if (tmp_read_uncommitted)
F_SET(dbc, DBC_READ_UNCOMMITTED);
- ret = __db_c_pget_recno(dbc, pkey, data, flags);
+ ret = __dbc_pget_recno(dbc, pkey, data, flags);
if (tmp_rmw)
F_CLR(dbc, DBC_RMW);
if (tmp_read_uncommitted)
@@ -1823,6 +1894,7 @@ __db_c_pget(dbc, skey, pkey, data, flags)
case DB_NEXT_DUP:
case DB_NEXT_NODUP:
case DB_PREV:
+ case DB_PREV_DUP:
case DB_PREV_NODUP:
tmp_flags = DB_POSITION;
break;
@@ -1831,7 +1903,7 @@ __db_c_pget(dbc, skey, pkey, data, flags)
break;
}
- if ((ret = __db_c_dup(dbc, &dbc_n, tmp_flags)) != 0)
+ if ((ret = __dbc_dup(dbc, &dbc_n, tmp_flags)) != 0)
return (ret);
F_SET(dbc_n, DBC_TRANSIENT);
@@ -1852,7 +1924,7 @@ __db_c_pget(dbc, skey, pkey, data, flags)
retry: /* Step 1. */
dbc_n->rdata = dbc->rkey;
dbc_n->rkey = dbc->rskey;
- ret = __db_c_get(dbc_n, skey, pkey, flags);
+ ret = __dbc_get(dbc_n, skey, pkey, flags);
/* Restore pkey's flags in case we stomped the PARTIAL flag. */
pkey->flags = save_pkey_flags;
@@ -1909,8 +1981,8 @@ retry: /* Step 1. */
*
* Alternatively, if the application is handling copying for pkey, we
* need to take a copy now. The copy will be freed on exit from
- * __db_c_pget_pp (and we must be coming through there if
- * DB_DBT_USERCOPY is set).
+ * __dbc_pget_pp (and we must be coming through there if DB_DBT_USERCOPY
+ * is set).
*
* !!!
* This assumes that the user must always specify a compatible realloc
@@ -1932,7 +2004,7 @@ retry: /* Step 1. */
*/
F_SET(pdbc, DBC_TRANSIENT);
SET_RET_MEM(pdbc, dbc);
- ret = __db_c_get(pdbc, pkey, data, DB_SET);
+ ret = __dbc_get(pdbc, pkey, data, DB_SET);
/*
* If the item wasn't found in the primary, this is a bug; our
@@ -1941,7 +2013,7 @@ retry: /* Step 1. */
*/
/* Now close the primary cursor. */
- if ((t_ret = __db_c_close(pdbc)) != 0 && ret == 0)
+ if ((t_ret = __dbc_close(pdbc)) != 0 && ret == 0)
ret = t_ret;
else if (ret == DB_NOTFOUND) {
@@ -1953,6 +2025,7 @@ retry: /* Step 1. */
case DB_NEXT_DUP:
case DB_NEXT_NODUP:
case DB_PREV:
+ case DB_PREV_DUP:
case DB_PREV_NODUP:
goto retry;
default:
@@ -1961,7 +2034,7 @@ retry: /* Step 1. */
}
err: /* Cleanup and cursor resolution. */
- if ((t_ret = __db_c_cleanup(dbc, dbc_n, ret)) != 0 && ret == 0)
+ if ((t_ret = __dbc_cleanup(dbc, dbc_n, ret)) != 0 && ret == 0)
ret = t_ret;
if (pkeymalloc) {
/*
@@ -1978,13 +2051,13 @@ err: /* Cleanup and cursor resolution. */
}
/*
- * __db_c_pget_recno --
+ * __dbc_pget_recno --
* Perform a DB_GET_RECNO c_pget on a secondary index. Returns
* the secondary's record number in the pkey field and the primary's
* in the data field.
*/
static int
-__db_c_pget_recno(sdbc, pkey, data, flags)
+__dbc_pget_recno(sdbc, pkey, data, flags)
DBC *sdbc;
DBT *pkey, *data;
u_int32_t flags;
@@ -2023,7 +2096,7 @@ __db_c_pget_recno(sdbc, pkey, data, flags)
*/
memset(&primary_key, 0, sizeof(DBT));
F_SET(&primary_key, DB_DBT_MALLOC);
- if ((ret = __db_c_get(sdbc,
+ if ((ret = __dbc_get(sdbc,
&discardme, &primary_key, rmw | DB_CURRENT)) != 0)
return (ret);
@@ -2031,7 +2104,7 @@ __db_c_pget_recno(sdbc, pkey, data, flags)
* Open a cursor on the primary, set it to the right record,
* and fetch its recno into "data".
*
- * (See __db_c_pget for comments on the use of __db_cursor_int.)
+ * (See __dbc_pget for comments on the use of __db_cursor_int.)
*
* SET_RET_MEM so that the secondary DBC owns any returned-data
* memory.
@@ -2040,15 +2113,15 @@ __db_c_pget_recno(sdbc, pkey, data, flags)
pdbp->type, PGNO_INVALID, 0, sdbc->locker, &pdbc)) != 0)
goto perr;
SET_RET_MEM(pdbc, sdbc);
- if ((ret = __db_c_get(pdbc,
+ if ((ret = __dbc_get(pdbc,
&primary_key, &discardme, rmw | DB_SET)) != 0)
goto perr;
- ret = __db_c_get(pdbc, &discardme, data, rmw | DB_GET_RECNO);
+ ret = __dbc_get(pdbc, &discardme, data, rmw | DB_GET_RECNO);
perr: __os_ufree(sdbp->dbenv, primary_key.data);
if (pdbc != NULL &&
- (t_ret = __db_c_close(pdbc)) != 0 && ret == 0)
+ (t_ret = __dbc_close(pdbc)) != 0 && ret == 0)
ret = t_ret;
if (ret != 0)
return (ret);
@@ -2063,7 +2136,7 @@ perr: __os_ufree(sdbp->dbenv, primary_key.data);
* If it's not an rbtree, return RECNO_OOB in "pkey".
*/
if (F_ISSET(sdbp, DB_AM_RECNUM))
- return (__db_c_get(sdbc, &discardme, pkey, flags));
+ return (__dbc_get(sdbc, &discardme, pkey, flags));
else
return (__db_retcopy(dbenv, pkey, &oob,
sizeof(oob), &sdbc->rdata->data, &sdbc->rdata->ulen));
@@ -2081,7 +2154,7 @@ __db_wrlock_err(dbenv)
}
/*
- * __db_c_del_secondary --
+ * __dbc_del_secondary --
* Perform a delete operation on a secondary index: call through
* to the primary and delete the primary record that this record
* points to.
@@ -2091,7 +2164,7 @@ __db_wrlock_err(dbenv)
* to execute both this function and an actual delete.
*/
static int
-__db_c_del_secondary(dbc)
+__dbc_del_secondary(dbc)
DBC *dbc;
{
DB_ENV *dbenv;
@@ -2099,19 +2172,21 @@ __db_c_del_secondary(dbc)
DBC *pdbc;
DBT skey, pkey;
int ret, t_ret;
+ u_int32_t rmw;
pdbp = dbc->dbp->s_primary;
dbenv = pdbp->dbenv;
- memset(&skey, 0, sizeof(DBT));
- memset(&pkey, 0, sizeof(DBT));
+ rmw = STD_LOCKING(dbc) ? DB_RMW : 0;
/*
* Get the current item that we're pointing at.
* We don't actually care about the secondary key, just
* the primary.
*/
+ memset(&skey, 0, sizeof(DBT));
+ memset(&pkey, 0, sizeof(DBT));
F_SET(&skey, DB_DBT_PARTIAL | DB_DBT_USERMEM);
- if ((ret = __db_c_get(dbc, &skey, &pkey, DB_CURRENT)) != 0)
+ if ((ret = __dbc_get(dbc, &skey, &pkey, DB_CURRENT)) != 0)
return (ret);
SWAP_IF_NEEDED(dbc->dbp, &pkey);
@@ -2131,7 +2206,7 @@ __db_c_del_secondary(dbc)
return (ret);
/*
- * See comment in __db_c_put--if we're in CDB,
+ * See comment in __dbc_put--if we're in CDB,
* we already hold the locks we need, and we need to flag
* the cursor as a WRITER so we don't run into errors
* when we try to delete.
@@ -2150,39 +2225,41 @@ __db_c_del_secondary(dbc)
* every record in the secondary should correspond to some record
* in the primary.
*/
- if ((ret = __db_c_get(pdbc, &pkey, &skey,
- (STD_LOCKING(dbc) ? DB_RMW : 0) | DB_SET)) == 0)
- ret = __db_c_del(pdbc, 0);
+ if ((ret = __dbc_get(pdbc, &pkey, &skey, DB_SET | rmw)) == 0)
+ ret = __dbc_del(pdbc, 0);
else if (ret == DB_NOTFOUND)
ret = __db_secondary_corrupt(pdbp);
- if ((t_ret = __db_c_close(pdbc)) != 0 && ret == 0)
+ if ((t_ret = __dbc_close(pdbc)) != 0 && ret == 0)
ret = t_ret;
return (ret);
}
/*
- * __db_c_del_primary --
+ * __dbc_del_primary --
* Perform a delete operation on a primary index. Loop through
* all the secondary indices which correspond to this primary
* database, and delete any secondary keys that point at the current
* record.
*
- * PUBLIC: int __db_c_del_primary __P((DBC *));
+ * PUBLIC: int __dbc_del_primary __P((DBC *));
*/
int
-__db_c_del_primary(dbc)
+__dbc_del_primary(dbc)
DBC *dbc;
{
DB_ENV *dbenv;
DB *dbp, *sdbp;
DBC *sdbc;
+ DBT *tskeyp;
DBT data, pkey, skey, temppkey, tempskey;
+ u_int32_t nskey, rmw;
int ret, t_ret;
dbp = dbc->dbp;
dbenv = dbp->dbenv;
+ rmw = STD_LOCKING(dbc) ? DB_RMW : 0;
/*
* If we're called at all, we have at least one secondary.
@@ -2192,13 +2269,13 @@ __db_c_del_primary(dbc)
*/
memset(&pkey, 0, sizeof(DBT));
memset(&data, 0, sizeof(DBT));
- if ((ret = __db_c_get(dbc, &pkey, &data, DB_CURRENT)) != 0)
+ if ((ret = __dbc_get(dbc, &pkey, &data, DB_CURRENT)) != 0)
return (ret);
memset(&skey, 0, sizeof(DBT));
for (ret = __db_s_first(dbp, &sdbp);
sdbp != NULL && ret == 0;
- ret = __db_s_next(&sdbp)) {
+ ret = __db_s_next(&sdbp, dbc->txn)) {
/*
* Get the secondary key for this secondary and the current
* item.
@@ -2215,51 +2292,72 @@ __db_c_del_primary(dbc)
goto err;
}
+#ifdef DIAGNOSTIC
+ if (F_ISSET(&skey, DB_DBT_MULTIPLE))
+ __db_check_skeyset(sdbp, &skey);
+#endif
+
/* Open a secondary cursor. */
if ((ret = __db_cursor_int(sdbp, dbc->txn, sdbp->type,
PGNO_INVALID, 0, dbc->locker, &sdbc)) != 0)
goto err;
- /* See comment above and in __db_c_put. */
+ /* See comment above and in __dbc_put. */
if (CDB_LOCKING(dbenv)) {
DB_ASSERT(dbenv, sdbc->mylock.off == LOCK_INVALID);
F_SET(sdbc, DBC_WRITER);
}
- /*
- * Set the secondary cursor to the appropriate item.
- * Delete it.
- *
- * We want to use DB_RMW if locking is on; it's only
- * legal then, though.
- *
- * !!!
- * Don't stomp on any callback-allocated buffer in skey
- * when we do a c_get(DB_GET_BOTH); use a temp DBT instead.
- * Similarly, don't allow pkey to be invalidated when the
- * cursor is closed.
- */
- memset(&tempskey, 0, sizeof(DBT));
- tempskey.data = skey.data;
- tempskey.size = skey.size;
- SWAP_IF_NEEDED(sdbp, &pkey);
- memset(&temppkey, 0, sizeof(DBT));
- temppkey.data = pkey.data;
- temppkey.size = pkey.size;
- if ((ret = __db_c_get(sdbc, &tempskey, &temppkey,
- (STD_LOCKING(dbc) ? DB_RMW : 0) | DB_GET_BOTH)) == 0)
- ret = __db_c_del(sdbc, DB_UPDATE_SECONDARY);
- else if (ret == DB_NOTFOUND)
- ret = __db_secondary_corrupt(dbp);
- SWAP_IF_NEEDED(sdbp, &pkey);
- FREE_IF_NEEDED(dbenv, &skey);
+ if (F_ISSET(&skey, DB_DBT_MULTIPLE)) {
+ tskeyp = (DBT *)skey.data;
+ nskey = skey.size;
+ } else {
+ tskeyp = &skey;
+ nskey = 1;
+ }
+
+ for (; nskey > 0; nskey--, tskeyp++) {
+ /*
+ * Set the secondary cursor to the appropriate item.
+ * Delete it.
+ *
+ * We want to use DB_RMW if locking is on; it's only
+ * legal then, though.
+ *
+ * !!!
+ * Don't stomp on any callback-allocated buffer in skey
+ * when we do a c_get(DB_GET_BOTH); use a temp DBT
+ * instead. Similarly, don't allow pkey to be
+ * invalidated when the cursor is closed.
+ */
+ DB_INIT_DBT(tempskey, tskeyp->data, tskeyp->size);
+ SWAP_IF_NEEDED(sdbp, &pkey);
+ DB_INIT_DBT(temppkey, pkey.data, pkey.size);
+ if ((ret = __dbc_get(sdbc, &tempskey, &temppkey,
+ DB_GET_BOTH | rmw)) == 0)
+ ret = __dbc_del(sdbc, DB_UPDATE_SECONDARY);
+ else if (ret == DB_NOTFOUND)
+ ret = __db_secondary_corrupt(dbp);
+ SWAP_IF_NEEDED(sdbp, &pkey);
+ FREE_IF_NEEDED(dbenv, tskeyp);
+ }
- if ((t_ret = __db_c_close(sdbc)) != 0 && ret == 0)
+ if ((t_ret = __dbc_close(sdbc)) != 0 && ret == 0)
ret = t_ret;
if (ret != 0)
goto err;
+
+ /*
+ * In the common case where there is a single secondary key, we
+ * will have freed any application-allocated data in skey
+ * already. In the multiple key case, we need to free it here.
+ * It is safe to do this twice as the macro resets the data
+ * field.
+ */
+ FREE_IF_NEEDED(dbenv, &skey);
}
-err: if (sdbp != NULL && (t_ret = __db_s_done(sdbp)) != 0 && ret == 0)
+err: if (sdbp != NULL &&
+ (t_ret = __db_s_done(sdbp, dbc->txn)) != 0 && ret == 0)
ret = t_ret;
FREE_IF_NEEDED(dbenv, &skey);
return (ret);
@@ -2294,11 +2392,12 @@ __db_s_first(pdbp, sdbpp)
* __db_s_next --
* Get the next secondary in the list.
*
- * PUBLIC: int __db_s_next __P((DB **));
+ * PUBLIC: int __db_s_next __P((DB **, DB_TXN *));
*/
int
-__db_s_next(sdbpp)
+__db_s_next(sdbpp, txn)
DB **sdbpp;
+ DB_TXN *txn;
{
DB_ENV *dbenv;
DB *sdbp, *pdbp, *closeme;
@@ -2348,7 +2447,13 @@ __db_s_next(sdbpp)
/*
* closeme->close() is a wrapper; call __db_close explicitly.
*/
- ret = closeme != NULL ? __db_close(closeme, NULL, 0) : 0;
+ if (closeme == NULL)
+ ret = 0;
+ else if (txn == NULL)
+ ret = __db_close(closeme, NULL, 0);
+ else
+ ret = __txn_closeevent(dbenv, txn, closeme);
+
return (ret);
}
@@ -2357,15 +2462,16 @@ __db_s_next(sdbpp)
* Properly decrement the refcount on a secondary database handle we're
* using, without calling __db_s_next.
*
- * PUBLIC: int __db_s_done __P((DB *));
+ * PUBLIC: int __db_s_done __P((DB *, DB_TXN *));
*/
int
-__db_s_done(sdbp)
+__db_s_done(sdbp, txn)
DB *sdbp;
+ DB_TXN *txn;
{
DB_ENV *dbenv;
DB *pdbp;
- int doclose;
+ int doclose, ret;
pdbp = sdbp->s_primary;
dbenv = pdbp->dbenv;
@@ -2379,7 +2485,13 @@ __db_s_done(sdbp)
}
MUTEX_UNLOCK(dbenv, pdbp->mutex);
- return (doclose ? __db_close(sdbp, NULL, 0) : 0);
+ if (doclose == 0)
+ ret = 0;
+ else if (txn == NULL)
+ ret = __db_close(sdbp, NULL, 0);
+ else
+ ret = __txn_closeevent(dbenv, txn, sdbp);
+ return (ret);
}
/*
@@ -2495,3 +2607,33 @@ __db_partsize(nbytes, data)
return (nbytes + data->size - data->dlen); /* Case 2 */
}
+
+#ifdef DIAGNOSTIC
+/*
+ * __db_check_skeyset --
+ * Diagnostic check that the application's callback returns a set of
+ * secondary keys without repeats.
+ *
+ * PUBLIC: #ifdef DIAGNOSTIC
+ * PUBLIC: void __db_check_skeyset __P((DB *, DBT *));
+ * PUBLIC: #endif
+ */
+void
+__db_check_skeyset(sdbp, skeyp)
+ DB *sdbp;
+ DBT *skeyp;
+{
+ DB_ENV *dbenv;
+ DBT *firstkey, *lastkey, *key1, *key2;
+
+ dbenv = sdbp->dbenv;
+
+ firstkey = (DBT *)skeyp->data;
+ lastkey = firstkey + skeyp->size;
+ for (key1 = firstkey; key1 < lastkey; key1++)
+ for (key2 = key1 + 1; key2 < lastkey; key2++)
+ DB_ASSERT(dbenv,
+ ((BTREE *)sdbp->bt_internal)->bt_compare(sdbp,
+ key1, key2) != 0);
+}
+#endif
diff --git a/db/db/db_cds.c b/db/db/db_cds.c
index ee9caa062..433ce3638 100644
--- a/db/db/db_cds.c
+++ b/db/db/db_cds.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: db_cds.c,v 12.5 2006/09/07 05:46:15 mjc Exp $
+ * $Id: db_cds.c,v 12.10 2007/07/17 07:29:04 mjc Exp $
*/
#include "db_config.h"
@@ -50,7 +49,7 @@ static int __cdsgroup_commit(txn, flags)
{
DB_ENV *dbenv;
DB_LOCKREQ lreq;
- u_int32_t locker;
+ DB_LOCKER *locker;
int ret, t_ret;
COMPQUIET(flags, 0);
@@ -65,10 +64,10 @@ static int __cdsgroup_commit(txn, flags)
/* We may be holding handle locks; release them. */
lreq.op = DB_LOCK_PUT_ALL;
lreq.obj = NULL;
- ret = __lock_vec(dbenv, txn->txnid, 0, &lreq, 1, NULL);
+ ret = __lock_vec(dbenv, txn->locker, 0, &lreq, 1, NULL);
dbenv = txn->mgrp->dbenv;
- locker = txn->txnid;
+ locker = txn->locker;
__os_free(dbenv, txn->mgrp);
__os_free(dbenv, txn);
if ((t_ret = __lock_id_free(dbenv, locker)) != 0 && ret == 0)
@@ -122,7 +121,8 @@ static int __cdsgroup_set_timeout(txn, timeout, flags)
*
* PUBLIC: int __cdsgroup_begin __P((DB_ENV *, DB_TXN **));
*/
-int __cdsgroup_begin(dbenv, txnpp)
+int
+__cdsgroup_begin(dbenv, txnpp)
DB_ENV *dbenv;
DB_TXN **txnpp;
{
@@ -147,7 +147,7 @@ int __cdsgroup_begin(dbenv, txnpp)
goto err;
txn->mgrp->dbenv = dbenv;
- if ((ret = __lock_id(dbenv, &txn->txnid, NULL)) != 0)
+ if ((ret = __lock_id(dbenv, &txn->txnid, &txn->locker)) != 0)
goto err;
txn->flags = TXN_CDSGROUP;
diff --git a/db/db/db_conv.c b/db/db/db_conv.c
index 94afb1db7..1bb9f36ef 100644
--- a/db/db/db_conv.c
+++ b/db/db/db_conv.c
@@ -1,8 +1,7 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*/
/*
* Copyright (c) 1990, 1993, 1994, 1995, 1996
@@ -36,7 +35,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: db_conv.c,v 12.7 2006/08/24 14:45:15 bostic Exp $
+ * $Id: db_conv.c,v 12.15 2007/07/02 16:58:02 alexg Exp $
*/
#include "db_config.h"
@@ -69,18 +68,19 @@ __db_pgin(dbenv, pg, pp, cookie)
DB_CIPHER *db_cipher;
DB_LSN not_used;
PAGE *pagep;
- size_t pg_off, pg_len, sum_len;
+ size_t sum_len;
int is_hmac, ret;
- u_int8_t *chksum, *iv;
+ u_int8_t *chksum;
pginfo = (DB_PGINFO *)cookie->data;
pagep = (PAGE *)pp;
ret = is_hmac = 0;
- chksum = iv = NULL;
+ chksum = NULL;
memset(&dummydb, 0, sizeof(DB));
dbp = &dummydb;
dummydb.flags = pginfo->flags;
+ dummydb.pgsize = pginfo->db_pagesize;
db_cipher = (DB_CIPHER *)dbenv->crypto_handle;
switch (pagep->type) {
case P_HASHMETA:
@@ -152,49 +152,15 @@ __db_pgin(dbenv, pg, pp, cookie)
return (ret);
}
}
- if (F_ISSET(dbp, DB_AM_ENCRYPT)) {
- DB_ASSERT(dbenv, db_cipher != NULL);
- DB_ASSERT(dbenv, F_ISSET(dbp, DB_AM_CHKSUM));
-
- pg_off = P_OVERHEAD(dbp);
- DB_ASSERT(dbenv, db_cipher->adj_size(pg_off) == 0);
-
- switch (pagep->type) {
- case P_HASHMETA:
- case P_BTREEMETA:
- case P_QAMMETA:
- /*
- * !!!
- * For all meta pages it is required that the iv
- * be at the same location. Use BTMETA to get to it
- * for any meta type.
- */
- iv = ((BTMETA *)pp)->iv;
- pg_len = DBMETASIZE;
- break;
- case P_INVALID:
- if (IS_ZERO_LSN(LSN(pagep)) &&
- pagep->pgno == PGNO_INVALID) {
- pg_len = 0;
- break;
- }
- /* FALLTHROUGH */
- default:
- iv = P_IV(dbp, pagep);
- pg_len = pginfo->db_pagesize;
- break;
- }
- if (pg_len != 0 && (ret = db_cipher->decrypt(dbenv,
- db_cipher->data, iv, ((u_int8_t *)pagep) + pg_off,
- pg_len - pg_off)) != 0)
- return (ret);
- }
+ if ((ret = __db_decrypt_pg(dbenv, dbp, pagep)) != 0)
+ return (ret);
switch (pagep->type) {
case P_INVALID:
if (pginfo->type == DB_QUEUE)
return (__qam_pgin_out(dbenv, pg, pp, cookie));
else
return (__ham_pgin(dbenv, dbp, pg, pp, cookie));
+ case P_HASH_UNSORTED:
case P_HASH:
case P_HASHMETA:
return (__ham_pgin(dbenv, dbp, pg, pp, cookie));
@@ -229,20 +195,17 @@ __db_pgout(dbenv, pg, pp, cookie)
DBT *cookie;
{
DB dummydb, *dbp;
- DB_CIPHER *db_cipher;
DB_PGINFO *pginfo;
PAGE *pagep;
- size_t pg_off, pg_len, sum_len;
int ret;
- u_int8_t *chksum, *iv, *key;
pginfo = (DB_PGINFO *)cookie->data;
pagep = (PAGE *)pp;
- chksum = iv = key = NULL;
memset(&dummydb, 0, sizeof(DB));
dbp = &dummydb;
dummydb.flags = pginfo->flags;
+ dummydb.pgsize = pginfo->db_pagesize;
ret = 0;
switch (pagep->type) {
case P_INVALID:
@@ -252,6 +215,14 @@ __db_pgout(dbenv, pg, pp, cookie)
ret = __ham_pgout(dbenv, dbp, pg, pp, cookie);
break;
case P_HASH:
+ case P_HASH_UNSORTED:
+ /*
+ * Support pgout of unsorted hash pages - since online
+ * replication upgrade can cause pages of this type to be
+ * written out.
+ *
+ * FALLTHROUGH
+ */
case P_HASHMETA:
ret = __ham_pgout(dbenv, dbp, pg, pp, cookie);
break;
@@ -274,6 +245,89 @@ __db_pgout(dbenv, pg, pp, cookie)
if (ret)
return (ret);
+ return (__db_encrypt_and_checksum_pg(dbenv, dbp, pagep));
+}
+
+/*
+ * __db_decrypt_pg --
+ * Utility function to decrypt a db page.
+ *
+ * PUBLIC: int __db_decrypt_pg __P((DB_ENV *, DB *, PAGE *));
+ */
+int
+__db_decrypt_pg (dbenv, dbp, pagep)
+ DB_ENV *dbenv;
+ DB *dbp;
+ PAGE *pagep;
+{
+ DB_CIPHER *db_cipher;
+ size_t pg_len, pg_off;
+ u_int8_t *iv;
+ int ret;
+
+ db_cipher = (DB_CIPHER *)dbenv->crypto_handle;
+ ret = 0;
+ iv = NULL;
+ if (F_ISSET(dbp, DB_AM_ENCRYPT)) {
+ DB_ASSERT(dbenv, db_cipher != NULL);
+ DB_ASSERT(dbenv, F_ISSET(dbp, DB_AM_CHKSUM));
+
+ pg_off = P_OVERHEAD(dbp);
+ DB_ASSERT(dbenv, db_cipher->adj_size(pg_off) == 0);
+
+ switch (pagep->type) {
+ case P_HASHMETA:
+ case P_BTREEMETA:
+ case P_QAMMETA:
+ /*
+ * !!!
+ * For all meta pages it is required that the iv
+ * be at the same location. Use BTMETA to get to it
+ * for any meta type.
+ */
+ iv = ((BTMETA *)pagep)->iv;
+ pg_len = DBMETASIZE;
+ break;
+ case P_INVALID:
+ if (IS_ZERO_LSN(LSN(pagep)) &&
+ pagep->pgno == PGNO_INVALID) {
+ pg_len = 0;
+ break;
+ }
+ /* FALLTHROUGH */
+ default:
+ iv = P_IV(dbp, pagep);
+ pg_len = dbp->pgsize;
+ break;
+ }
+ if (pg_len != 0)
+ ret = db_cipher->decrypt(dbenv, db_cipher->data,
+ iv, ((u_int8_t *)pagep) + pg_off,
+ pg_len - pg_off);
+ }
+ return (ret);
+}
+
+/*
+ * __db_encrypt_and_checksum_pg --
+ * Utility function to encrypt and checksum a db page.
+ *
+ * PUBLIC: int __db_encrypt_and_checksum_pg
+ * PUBLIC: __P((DB_ENV *, DB *, PAGE *));
+ */
+int
+__db_encrypt_and_checksum_pg (dbenv, dbp, pagep)
+ DB_ENV *dbenv;
+ DB *dbp;
+ PAGE *pagep;
+{
+ DB_CIPHER *db_cipher;
+ int ret;
+ size_t pg_off, pg_len, sum_len;
+ u_int8_t *chksum, *iv, *key;
+
+ chksum = iv = key = NULL;
+
db_cipher = (DB_CIPHER *)dbenv->crypto_handle;
if (F_ISSET(dbp, DB_AM_ENCRYPT)) {
@@ -295,12 +349,12 @@ __db_pgout(dbenv, pg, pp, cookie)
* be at the same location. Use BTMETA to get to it
* for any meta type.
*/
- iv = ((BTMETA *)pp)->iv;
+ iv = ((BTMETA *)pagep)->iv;
pg_len = DBMETASIZE;
break;
default:
iv = P_IV(dbp, pagep);
- pg_len = pginfo->db_pagesize;
+ pg_len = dbp->pgsize;
break;
}
if ((ret = db_cipher->encrypt(dbenv, db_cipher->data,
@@ -318,15 +372,15 @@ __db_pgout(dbenv, pg, pp, cookie)
* be at the same location. Use BTMETA to get to it
* for any meta type.
*/
- chksum = ((BTMETA *)pp)->chksum;
+ chksum = ((BTMETA *)pagep)->chksum;
sum_len = DBMETASIZE;
break;
default:
chksum = P_CHKSUM(dbp, pagep);
- sum_len = pginfo->db_pagesize;
+ sum_len = dbp->pgsize;
break;
}
- __db_chksum(NULL, pp, sum_len, key, chksum);
+ __db_chksum(NULL, (u_int8_t *)pagep, sum_len, key, chksum);
if (F_ISSET(dbp, DB_AM_SWAP) && !F_ISSET(dbp, DB_AM_ENCRYPT))
P_32_SWAP(chksum);
}
@@ -400,6 +454,7 @@ __db_byteswap(dbenv, dbp, pg, h, pagesize, pgin)
}
switch (h->type) {
+ case P_HASH_UNSORTED:
case P_HASH:
for (i = 0; i < NUM_ENT(h); i++) {
if (pgin)
diff --git a/db/db/db_dispatch.c b/db/db/db_dispatch.c
index 4ef8347ba..1ee385b70 100644
--- a/db/db/db_dispatch.c
+++ b/db/db/db_dispatch.c
@@ -1,8 +1,7 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*/
/*
* Copyright (c) 1995, 1996
@@ -35,7 +34,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: db_dispatch.c,v 12.26 2006/08/24 14:45:15 bostic Exp $
+ * $Id: db_dispatch.c,v 12.37 2007/05/17 15:14:56 bostic Exp $
*/
#include "db_config.h"
@@ -54,7 +53,7 @@ static int __db_limbo_fix __P((DB *, DB_TXN *,
static int __db_limbo_bucket __P((DB_ENV *,
DB_TXN *, DB_TXNLIST *, db_limbo_state));
static int __db_limbo_move __P((DB_ENV *, DB_TXN *, DB_TXN *, DB_TXNLIST *));
-static int __db_limbo_prepare __P(( DB *, DB_TXN *, DB_TXNLIST *));
+static int __db_limbo_prepare __P((DB *, DB_TXN *, DB_TXNLIST *));
static int __db_lock_move __P((DB_ENV *,
u_int8_t *, db_pgno_t, db_lockmode_t, DB_TXN *, DB_TXN *));
static int __db_txnlist_pgnoadd __P((DB_ENV *, DB_TXNHEAD *,
@@ -222,6 +221,7 @@ __db_dispatch(dbenv, dtab, dtabsize, db, lsnp, redo, info)
case DB___txn_recycle:
case DB___txn_ckp:
case DB___db_noop:
+ case DB___dbreg_register:
make_call = 1;
break;
@@ -257,19 +257,8 @@ __db_dispatch(dbenv, dtab, dtabsize, db, lsnp, redo, info)
*/
make_call = 1;
redo = DB_TXN_BACKWARD_ALLOC;
- } else
-#endif
- if (rectype == DB___dbreg_register) {
- /*
- * This may be a transaction dbreg_register.
- * If it is, we only make the call on a COMMIT,
- * which we checked above. If it's not, then we
- * should always make the call, because we need
- * the file open information.
- */
- if (txnid == 0)
- make_call = 1;
}
+#endif
}
break;
case DB_TXN_BACKWARD_ALLOC:
@@ -424,6 +413,21 @@ __db_txnlist_init(dbenv, low_txn, hi_txn, trunc_lsn, retp)
return (0);
}
+#define FIND_GENERATION(hp, txnid, gen) do { \
+ u_int32_t __i; \
+ for (__i = 0; __i <= (hp)->generation; __i++) \
+ /* The range may wrap around the end. */ \
+ if ((hp)->gen_array[__i].txn_min < \
+ (hp)->gen_array[__i].txn_max ? \
+ ((txnid) >= (hp)->gen_array[__i].txn_min && \
+ (txnid) <= (hp)->gen_array[__i].txn_max) : \
+ ((txnid) >= (hp)->gen_array[__i].txn_min || \
+ (txnid) <= (hp)->gen_array[__i].txn_max)) \
+ break; \
+ DB_ASSERT(dbenv, __i <= (hp)->generation); \
+ gen = (hp)->gen_array[__i].generation; \
+} while (0)
+
/*
* __db_txnlist_add --
* Add an element to our transaction linked list.
@@ -446,10 +450,11 @@ __db_txnlist_add(dbenv, hp, txnid, status, lsn)
LIST_INSERT_HEAD(&hp->head[DB_TXNLIST_MASK(hp, txnid)], elp, links);
+ /* Find the most recent generation containing this ID */
+ FIND_GENERATION(hp, txnid, elp->u.t.generation);
elp->type = TXNLIST_TXNID;
elp->u.t.txnid = txnid;
elp->u.t.status = status;
- elp->u.t.generation = hp->generation;
if (txnid > hp->maxid)
hp->maxid = txnid;
if (lsn != NULL && IS_ZERO_LSN(hp->maxlsn) && status == TXN_COMMIT)
@@ -637,7 +642,7 @@ __db_txnlist_find_internal(dbenv,
{
struct __db_headlink *head;
DB_TXNLIST *p;
- u_int32_t generation, hash, i;
+ u_int32_t generation, hash;
int ret;
ret = 0;
@@ -648,18 +653,7 @@ __db_txnlist_find_internal(dbenv,
switch (type) {
case TXNLIST_TXNID:
hash = txnid;
- /* Find the most recent generation containing this ID */
- for (i = 0; i <= hp->generation; i++)
- /* The range may wrap around the end. */
- if (hp->gen_array[i].txn_min <
- hp->gen_array[i].txn_max ?
- (txnid >= hp->gen_array[i].txn_min &&
- txnid <= hp->gen_array[i].txn_max) :
- (txnid >= hp->gen_array[i].txn_min ||
- txnid <= hp->gen_array[i].txn_max))
- break;
- DB_ASSERT(dbenv, i <= hp->generation);
- generation = hp->gen_array[i].generation;
+ FIND_GENERATION(hp, txnid, generation);
break;
case TXNLIST_PGNO:
memcpy(&hash, uid, sizeof(hash));
@@ -1003,11 +997,11 @@ __db_lock_move(dbenv, fileid, pgno, mode, ptxn, txn)
lock_dbt.size = sizeof(lock_obj);
if ((ret = __lock_get(dbenv,
- txn->txnid, 0, &lock_dbt, mode, &lock)) == 0) {
+ txn->locker, 0, &lock_dbt, mode, &lock)) == 0) {
memset(&req, 0, sizeof(req));
req.lock = lock;
req.op = DB_LOCK_TRADE;
- ret = __lock_vec(dbenv, ptxn->txnid, 0, &req, 1, NULL);
+ ret = __lock_vec(dbenv, ptxn->locker, 0, &req, 1, NULL);
}
return (ret);
}
@@ -1109,7 +1103,7 @@ retry: dbp_created = 0;
goto next;
if (ret != 0) {
- if ((ret = db_create(&dbp, dbenv, 0)) != 0)
+ if ((ret = __db_create_internal(&dbp, dbenv, 0)) != 0)
goto err;
/*
@@ -1197,7 +1191,8 @@ retry: dbp_created = 0;
*/
else if (last_pgno == meta->free) {
/* No change to page; just put the page back. */
- if ((ret = __memp_fput(mpf, meta, 0)) != 0)
+ if ((ret =
+ __memp_fput(mpf, meta, DB_PRIORITY_UNCHANGED)) != 0)
goto err;
meta = NULL;
} else {
@@ -1210,7 +1205,8 @@ retry: dbp_created = 0;
*/
if (!IS_RECOVERING(dbenv) && !T_RESTORED(txn))
__db_errx(dbenv, "Flushing free list to disk");
- if ((ret = __memp_fput(mpf, meta, 0)) != 0)
+ if ((ret =
+ __memp_fput(mpf, meta, DB_PRIORITY_UNCHANGED)) != 0)
goto err;
meta = NULL;
/*
@@ -1228,7 +1224,8 @@ retry: dbp_created = 0;
DB_MPOOL_DIRTY, &meta)) != 0)
goto err;
meta->free = last_pgno;
- if ((ret = __memp_fput(mpf, meta, 0)) != 0)
+ if ((ret = __memp_fput(mpf,
+ meta, DB_PRIORITY_UNCHANGED)) != 0)
goto err;
meta = NULL;
} else {
@@ -1264,7 +1261,7 @@ next:
}
err: if (meta != NULL)
- (void)__memp_fput(mpf, meta, 0);
+ (void)__memp_fput(mpf, meta, DB_PRIORITY_UNCHANGED);
return (ret);
}
@@ -1327,8 +1324,8 @@ __db_limbo_fix(dbp, ctxn, elp, lastp, meta, state)
&next, ctxn, 0, &freep)) != 0)
goto err;
next = NEXT_PGNO(freep);
- if ((ret =
- __memp_fput(mpf, freep, 0)) != 0)
+ if ((ret = __memp_fput(mpf,
+ freep, DB_PRIORITY_UNCHANGED)) != 0)
goto err;
}
@@ -1388,7 +1385,7 @@ __db_limbo_fix(dbp, ctxn, elp, lastp, meta, state)
*/
if (ret != 0) {
/* Assume that this is out of space. */
- (void)__db_c_close(dbc);
+ (void)__dbc_close(dbc);
dbc = NULL;
goto err;
}
@@ -1398,17 +1395,18 @@ __db_limbo_fix(dbp, ctxn, elp, lastp, meta, state)
elp->u.p.pgno_array[i] = PGNO_INVALID;
if (pagep != NULL) {
- ret = __memp_fput(mpf, pagep, 0);
+ ret = __memp_fput(mpf, pagep, DB_PRIORITY_UNCHANGED);
pagep = NULL;
}
if (ret != 0)
goto err;
}
-err: if (pagep != NULL && (t_ret = __memp_fput(mpf, pagep, 0)) != 0 &&
+err: if (pagep != NULL &&
+ (t_ret = __memp_fput(mpf, pagep, DB_PRIORITY_UNCHANGED)) != 0 &&
ret == 0)
ret = t_ret;
- if (dbc != NULL && (t_ret = __db_c_close(dbc)) != 0 && ret == 0)
+ if (dbc != NULL && (t_ret = __dbc_close(dbc)) != 0 && ret == 0)
ret = t_ret;
return (ret);
}
@@ -1447,7 +1445,8 @@ __db_limbo_prepare(dbp, txn, elp)
if (IS_ZERO_LSN(LSN(pagep)))
ret = __db_pg_prepare_log(dbp, txn, &lsn, 0, pgno);
- if ((t_ret = __memp_fput(mpf, pagep, 0)) != 0 && ret == 0)
+ if ((t_ret = __memp_fput(mpf,
+ pagep, DB_PRIORITY_UNCHANGED)) != 0 && ret == 0)
ret = t_ret;
if (ret != 0)
diff --git a/db/db/db_dup.c b/db/db/db_dup.c
index 84b326c0c..f32a3c915 100644
--- a/db/db/db_dup.c
+++ b/db/db/db_dup.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: db_dup.c,v 12.9 2006/08/24 14:45:15 bostic Exp $
+ * $Id: db_dup.c,v 12.11 2007/05/17 15:14:56 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/db/db_iface.c b/db/db/db_iface.c
index bf41332df..b6949de8c 100644
--- a/db/db/db_iface.c
+++ b/db/db/db_iface.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: db_iface.c,v 12.51 2006/09/19 15:06:58 bostic Exp $
+ * $Id: db_iface.c,v 12.68 2007/06/14 19:00:55 bostic Exp $
*/
#include "db_config.h"
@@ -25,10 +24,10 @@
static int __db_associate_arg __P((DB *, DB *,
int (*)(DB *, const DBT *, const DBT *, DBT *), u_int32_t));
-static int __db_c_del_arg __P((DBC *, u_int32_t));
-static int __db_c_get_arg __P((DBC *, DBT *, DBT *, u_int32_t));
-static int __db_c_pget_arg __P((DBC *, DBT *, u_int32_t));
-static int __db_c_put_arg __P((DBC *, DBT *, DBT *, u_int32_t));
+static int __dbc_del_arg __P((DBC *, u_int32_t));
+static int __dbc_get_arg __P((DBC *, DBT *, DBT *, u_int32_t));
+static int __dbc_pget_arg __P((DBC *, DBT *, u_int32_t));
+static int __dbc_put_arg __P((DBC *, DBT *, DBT *, u_int32_t));
static int __db_curinval __P((const DB_ENV *));
static int __db_cursor_arg __P((DB *, u_int32_t));
static int __db_del_arg __P((DB *, DBT *, u_int32_t));
@@ -127,7 +126,7 @@ __db_associate_pp(dbp, txn, sdbp, callback, flags)
goto err;
while ((sdbc = TAILQ_FIRST(&sdbp->free_queue)) != NULL)
- if ((ret = __db_c_destroy(sdbc)) != 0)
+ if ((ret = __dbc_destroy(sdbc)) != 0)
goto err;
ret = __db_associate(dbp, txn, sdbp, callback, flags);
@@ -382,7 +381,7 @@ __db_cursor(dbp, txn, dbcp, flags)
*dbcp = dbc;
return (0);
-err: (void)__db_c_close(dbc);
+err: (void)__dbc_close(dbc);
return (ret);
}
@@ -529,6 +528,42 @@ __db_del_arg(dbp, key, flags)
}
/*
+ * __db_exists --
+ * DB->exists implementation.
+ *
+ * PUBLIC: int __db_exists __P((DB *, DB_TXN *, DBT *, u_int32_t));
+ */
+int
+__db_exists(dbp, txn, key, flags)
+ DB *dbp;
+ DB_TXN *txn;
+ DBT *key;
+ u_int32_t flags;
+{
+ DBT data;
+ int ret;
+
+ /*
+ * Most flag checking is done in the DB->get call, we only check for
+ * specific incompatibilities here. This saves making __get_arg
+ * aware of the exist method's API constraints.
+ */
+ if ((ret = __db_fchk(dbp->dbenv, "DB->exists", flags,
+ DB_READ_COMMITTED | DB_READ_UNCOMMITTED | DB_RMW)) != 0)
+ return (ret);
+
+ /*
+ * Configure a data DBT that returns no bytes so there's no copy
+ * of the data.
+ */
+ memset(&data, 0, sizeof(data));
+ data.dlen = 0;
+ data.flags = DB_DBT_PARTIAL | DB_DBT_USERMEM;
+
+ return (dbp->get(dbp, txn, key, &data, flags));
+}
+
+/*
* db_fd_pp --
* DB->fd pre/post processing.
*
@@ -600,7 +635,7 @@ __db_get_pp(dbp, txn, key, data, flags)
DB_ENV *dbenv;
DB_THREAD_INFO *ip;
u_int32_t mode;
- int handle_check, ret, t_ret, txn_local;
+ int handle_check, ignore_lease, ret, t_ret, txn_local;
dbenv = dbp->dbenv;
mode = 0;
@@ -610,6 +645,9 @@ __db_get_pp(dbp, txn, key, data, flags)
STRIP_AUTO_COMMIT(flags);
DB_ILLEGAL_BEFORE_OPEN(dbp, "DB->get");
+ ignore_lease = LF_ISSET(DB_IGNORE_LEASE);
+ LF_CLR(DB_IGNORE_LEASE);
+
if ((ret = __db_get_arg(dbp, key, data, flags)) != 0)
return (ret);
@@ -641,6 +679,12 @@ __db_get_pp(dbp, txn, key, data, flags)
goto err;
ret = __db_get(dbp, txn, key, data, flags);
+ /*
+ * Check for master leases.
+ */
+ if (ret == 0 && IS_REP_MASTER(dbenv) && IS_USING_LEASES(dbenv) &&
+ !ignore_lease)
+ ret = __rep_lease_check(dbenv, 1);
err: if (txn_local &&
(t_ret = __db_txn_auto_resolve(dbenv, txn, 0, ret)) && ret == 0)
@@ -708,9 +752,9 @@ __db_get(dbp, txn, key, data, flags)
if (LF_ISSET(~(DB_RMW | DB_MULTIPLE)) == 0)
LF_SET(DB_SET);
- ret = __db_c_get(dbc, key, data, flags);
+ ret = __dbc_get(dbc, key, data, flags);
- if (dbc != NULL && (t_ret = __db_c_close(dbc)) != 0 && ret == 0)
+ if (dbc != NULL && (t_ret = __dbc_close(dbc)) != 0 && ret == 0)
ret = t_ret;
return (ret);
@@ -967,6 +1011,7 @@ __db_key_range_pp(dbp, txn, key, kr, flags)
*/
switch (dbp->type) {
case DB_BTREE:
+#ifndef HAVE_BREW
if ((ret = __dbt_usercopy(dbenv, key)) != 0)
goto err;
@@ -978,10 +1023,16 @@ __db_key_range_pp(dbp, txn, key, kr, flags)
ret = __bam_key_range(dbc, key, kr, flags);
- if ((t_ret = __db_c_close(dbc)) != 0 && ret == 0)
+ if ((t_ret = __dbc_close(dbc)) != 0 && ret == 0)
ret = t_ret;
__dbt_userfree(dbenv, key, NULL, NULL);
break;
+#else
+ COMPQUIET(dbc, NULL);
+ COMPQUIET(key, NULL);
+ COMPQUIET(kr, NULL);
+ /* FALLTHROUGH */
+#endif
case DB_HASH:
case DB_QUEUE:
case DB_RECNO:
@@ -1108,11 +1159,13 @@ __db_open_pp(dbp, txn, fname, dname, type, flags, mode)
F_CLR(dbp, DB_AM_DISCARD | DB_AM_CREATED | DB_AM_CREATED_MSTR);
/*
- * If not transactional, remove the databases/subdatabases. If we're
- * transactional, the child transaction abort cleans up.
+ * If not transactional, remove the databases/subdatabases if it is
+ * persistent. If we're transactional, the child transaction abort
+ * cleans up.
*/
txnerr: if (ret != 0 && !IS_REAL_TXN(txn)) {
- remove_me = F_ISSET(dbp, DB_AM_CREATED);
+ remove_me = (F_ISSET(dbp, DB_AM_CREATED) &&
+ (fname != NULL || dname != NULL)) ? 1 : 0;
if (F_ISSET(dbp, DB_AM_CREATED_MSTR) ||
(dname == NULL && remove_me))
/* Remove file. */
@@ -1289,13 +1342,16 @@ __db_pget_pp(dbp, txn, skey, pkey, data, flags)
{
DB_ENV *dbenv;
DB_THREAD_INFO *ip;
- int handle_check, ret, t_ret;
+ int handle_check, ignore_lease, ret, t_ret;
dbenv = dbp->dbenv;
PANIC_CHECK(dbenv);
DB_ILLEGAL_BEFORE_OPEN(dbp, "DB->pget");
+ ignore_lease = LF_ISSET(DB_IGNORE_LEASE);
+ LF_CLR(DB_IGNORE_LEASE);
+
if ((ret = __db_pget_arg(dbp, pkey, flags)) != 0 ||
(ret = __db_get_arg(dbp, skey, data, flags)) != 0) {
__dbt_userfree(dbenv, skey, pkey, data);
@@ -1313,6 +1369,12 @@ __db_pget_pp(dbp, txn, skey, pkey, data, flags)
}
ret = __db_pget(dbp, txn, skey, pkey, data, flags);
+ /*
+ * Check for master leases.
+ */
+ if (ret == 0 && IS_REP_MASTER(dbenv) && IS_USING_LEASES(dbenv) &&
+ !ignore_lease)
+ ret = __rep_lease_check(dbenv, 1);
err: /* Release replication block. */
if (handle_check && (t_ret = __env_db_rep_exit(dbenv)) != 0 && ret == 0)
@@ -1381,9 +1443,9 @@ __db_pget(dbp, txn, skey, pkey, data, flags)
if (flags == 0 || flags == DB_RMW)
flags |= DB_SET;
- ret = __db_c_pget(dbc, skey, pkey, data, flags);
+ ret = __dbc_pget(dbc, skey, pkey, data, flags);
- if ((t_ret = __db_c_close(dbc)) != 0 && ret == 0)
+ if ((t_ret = __dbc_close(dbc)) != 0 && ret == 0)
ret = t_ret;
return (ret);
@@ -1556,14 +1618,29 @@ __db_put_arg(dbp, key, data, flags)
err: return (__db_ferr(dbenv, "DB->put", 0));
}
- /* Check for invalid key/data flags. */
- if ((ret = __dbt_ferr(dbp, "key", key, returnkey)) != 0)
+ /*
+ * Check for invalid key/data flags. The key may reasonably be NULL
+ * if DB_APPEND is set and the application doesn't care about the
+ * returned key.
+ */
+ if (((returnkey && key != NULL) || !returnkey) &&
+ (ret = __dbt_ferr(dbp, "key", key, returnkey)) != 0)
return (ret);
if ((ret = __dbt_ferr(dbp, "data", data, 0)) != 0)
return (ret);
- /* Keys shouldn't have partial flags during a put. */
- if (F_ISSET(key, DB_DBT_PARTIAL))
+ /*
+ * The key parameter should not be NULL or have the "partial" flag set
+ * in a put call unless the user doesn't care about a key value we'd
+ * return. The user tells us they don't care about the returned key by
+ * setting the key parameter to NULL or configuring the key DBT to not
+ * return any information. (Returned keys from a put are always record
+ * numbers, and returning part of a record number doesn't make sense:
+ * only accept a partial return if the length returned is 0.)
+ */
+ if ((returnkey &&
+ key != NULL && F_ISSET(key, DB_DBT_PARTIAL) && key->dlen != 0) ||
+ (!returnkey && F_ISSET(key, DB_DBT_PARTIAL)))
return (__db_ferr(dbenv, "key DBT", 0));
/* Check for partial puts in the presence of duplicates. */
@@ -1619,6 +1696,11 @@ __db_compact_pp(dbp, txn, start, stop, c_data, flags, end)
if (DB_IS_READONLY(dbp))
return (__db_rdonly(dbenv, "DB->compact"));
+ if (start != NULL && (ret = __dbt_usercopy(dbenv, start)) != 0)
+ return (ret);
+ if (stop != NULL && (ret = __dbt_usercopy(dbenv, stop)) != 0)
+ return (ret);
+
ENV_ENTER(dbenv, ip);
/* Check for replication block. */
@@ -1654,6 +1736,7 @@ err: ret = __dbh_am_chk(dbp, DB_OK_BTREE);
ret = t_ret;
ENV_LEAVE(dbenv, ip);
+ __dbt_userfree(dbenv, start, stop, NULL);
return (ret);
}
@@ -1705,13 +1788,13 @@ err: ENV_LEAVE(dbenv, ip);
}
/*
- * __db_c_close_pp --
- * DBC->c_close pre/post processing.
+ * __dbc_close_pp --
+ * DBC->close pre/post processing.
*
- * PUBLIC: int __db_c_close_pp __P((DBC *));
+ * PUBLIC: int __dbc_close_pp __P((DBC *));
*/
int
-__db_c_close_pp(dbc)
+__dbc_close_pp(dbc)
DBC *dbc;
{
DB_ENV *dbenv;
@@ -1738,7 +1821,7 @@ __db_c_close_pp(dbc)
/* Check for replication block. */
handle_check = dbc->txn == NULL && IS_ENV_REPLICATED(dbenv);
- ret = __db_c_close(dbc);
+ ret = __dbc_close(dbc);
/* Release replication block. */
if (handle_check &&
@@ -1750,13 +1833,13 @@ err: ENV_LEAVE(dbenv, ip);
}
/*
- * __db_c_count_pp --
- * DBC->c_count pre/post processing.
+ * __dbc_count_pp --
+ * DBC->count pre/post processing.
*
- * PUBLIC: int __db_c_count_pp __P((DBC *, db_recno_t *, u_int32_t));
+ * PUBLIC: int __dbc_count_pp __P((DBC *, db_recno_t *, u_int32_t));
*/
int
-__db_c_count_pp(dbc, recnop, flags)
+__dbc_count_pp(dbc, recnop, flags)
DBC *dbc;
db_recno_t *recnop;
u_int32_t flags;
@@ -1786,19 +1869,19 @@ __db_c_count_pp(dbc, recnop, flags)
ENV_ENTER(dbenv, ip);
- ret = __db_c_count(dbc, recnop);
+ ret = __dbc_count(dbc, recnop);
ENV_LEAVE(dbenv, ip);
return (ret);
}
/*
- * __db_c_del_pp --
- * DBC->c_del pre/post processing.
+ * __dbc_del_pp --
+ * DBC->del pre/post processing.
*
- * PUBLIC: int __db_c_del_pp __P((DBC *, u_int32_t));
+ * PUBLIC: int __dbc_del_pp __P((DBC *, u_int32_t));
*/
int
-__db_c_del_pp(dbc, flags)
+__dbc_del_pp(dbc, flags)
DBC *dbc;
u_int32_t flags;
{
@@ -1812,7 +1895,7 @@ __db_c_del_pp(dbc, flags)
PANIC_CHECK(dbenv);
- if ((ret = __db_c_del_arg(dbc, flags)) != 0)
+ if ((ret = __dbc_del_arg(dbc, flags)) != 0)
return (ret);
ENV_ENTER(dbenv, ip);
@@ -1822,18 +1905,18 @@ __db_c_del_pp(dbc, flags)
goto err;
DEBUG_LWRITE(dbc, dbc->txn, "DBcursor->del", NULL, NULL, flags);
- ret = __db_c_del(dbc, flags);
+ ret = __dbc_del(dbc, flags);
err:
ENV_LEAVE(dbenv, ip);
return (ret);
}
/*
- * __db_c_del_arg --
- * Check DBC->c_del arguments.
+ * __dbc_del_arg --
+ * Check DBC->del arguments.
*/
static int
-__db_c_del_arg(dbc, flags)
+__dbc_del_arg(dbc, flags)
DBC *dbc;
u_int32_t flags;
{
@@ -1869,13 +1952,13 @@ __db_c_del_arg(dbc, flags)
}
/*
- * __db_c_dup_pp --
- * DBC->c_dup pre/post processing.
+ * __dbc_dup_pp --
+ * DBC->dup pre/post processing.
*
- * PUBLIC: int __db_c_dup_pp __P((DBC *, DBC **, u_int32_t));
+ * PUBLIC: int __dbc_dup_pp __P((DBC *, DBC **, u_int32_t));
*/
int
-__db_c_dup_pp(dbc, dbcp, flags)
+__dbc_dup_pp(dbc, dbcp, flags)
DBC *dbc, **dbcp;
u_int32_t flags;
{
@@ -1899,26 +1982,26 @@ __db_c_dup_pp(dbc, dbcp, flags)
ENV_ENTER(dbenv, ip);
- ret = __db_c_dup(dbc, dbcp, flags);
+ ret = __dbc_dup(dbc, dbcp, flags);
ENV_LEAVE(dbenv, ip);
return (ret);
}
/*
- * __db_c_get_pp --
- * DBC->c_get pre/post processing.
+ * __dbc_get_pp --
+ * DBC->get pre/post processing.
*
- * PUBLIC: int __db_c_get_pp __P((DBC *, DBT *, DBT *, u_int32_t));
+ * PUBLIC: int __dbc_get_pp __P((DBC *, DBT *, DBT *, u_int32_t));
*/
int
-__db_c_get_pp(dbc, key, data, flags)
+__dbc_get_pp(dbc, key, data, flags)
DBC *dbc;
DBT *key, *data;
u_int32_t flags;
{
DB *dbp;
DB_ENV *dbenv;
- int ret;
+ int ignore_lease, ret;
DB_THREAD_INFO *ip;
dbp = dbc->dbp;
@@ -1926,14 +2009,23 @@ __db_c_get_pp(dbc, key, data, flags)
PANIC_CHECK(dbenv);
- if ((ret = __db_c_get_arg(dbc, key, data, flags)) != 0)
+ ignore_lease = LF_ISSET(DB_IGNORE_LEASE);
+ LF_CLR(DB_IGNORE_LEASE);
+ if ((ret = __dbc_get_arg(dbc, key, data, flags)) != 0)
return (ret);
ENV_ENTER(dbenv, ip);
DEBUG_LREAD(dbc, dbc->txn, "DBcursor->get",
flags == DB_SET || flags == DB_SET_RANGE ? key : NULL, NULL, flags);
- ret = __db_c_get(dbc, key, data, flags);
+ ret = __dbc_get(dbc, key, data, flags);
+
+ /*
+ * Check for master leases.
+ */
+ if (ret == 0 && IS_REP_MASTER(dbenv) && IS_USING_LEASES(dbenv) &&
+ !ignore_lease)
+ ret = __rep_lease_check(dbenv, 1);
ENV_LEAVE(dbenv, ip);
__dbt_userfree(dbenv, key, NULL, data);
@@ -1941,11 +2033,11 @@ __db_c_get_pp(dbc, key, data, flags)
}
/*
- * __db_c_get_arg --
+ * __dbc_get_arg --
* Common DBC->get argument checking, used by both DBC->get and DBC->pget.
*/
static int
-__db_c_get_arg(dbc, key, data, flags)
+__dbc_get_arg(dbc, key, data, flags)
DBC *dbc;
DBT *key, *data;
u_int32_t flags;
@@ -2009,6 +2101,7 @@ __db_c_get_arg(dbc, key, data, flags)
break;
case DB_LAST:
case DB_PREV:
+ case DB_PREV_DUP:
case DB_PREV_NODUP:
if (multi)
multi_err: return (__db_ferr(dbenv, "DBcursor->get", 1));
@@ -2077,11 +2170,13 @@ err: __dbt_userfree(dbenv, key, NULL, data);
}
/*
- * The cursor must be initialized for DB_CURRENT, DB_GET_RECNO and
- * DB_NEXT_DUP. Return EINVAL for an invalid cursor, otherwise 0.
+ * The cursor must be initialized for DB_CURRENT, DB_GET_RECNO,
+ * DB_PREV_DUP and DB_NEXT_DUP. Return EINVAL for an invalid
+ * cursor, otherwise 0.
*/
if (!IS_INITIALIZED(dbc) && (flags == DB_CURRENT ||
- flags == DB_GET_RECNO || flags == DB_NEXT_DUP))
+ flags == DB_GET_RECNO ||
+ flags == DB_NEXT_DUP || flags == DB_PREV_DUP))
return (__db_curinval(dbenv));
/* Check for consistent transaction usage. */
@@ -2144,13 +2239,13 @@ __db_secondary_close_pp(dbp, flags)
}
/*
- * __db_c_pget_pp --
- * DBC->c_pget pre/post processing.
+ * __dbc_pget_pp --
+ * DBC->pget pre/post processing.
*
- * PUBLIC: int __db_c_pget_pp __P((DBC *, DBT *, DBT *, DBT *, u_int32_t));
+ * PUBLIC: int __dbc_pget_pp __P((DBC *, DBT *, DBT *, DBT *, u_int32_t));
*/
int
-__db_c_pget_pp(dbc, skey, pkey, data, flags)
+__dbc_pget_pp(dbc, skey, pkey, data, flags)
DBC *dbc;
DBT *skey, *pkey, *data;
u_int32_t flags;
@@ -2158,19 +2253,28 @@ __db_c_pget_pp(dbc, skey, pkey, data, flags)
DB *dbp;
DB_ENV *dbenv;
DB_THREAD_INFO *ip;
- int ret;
+ int ignore_lease, ret;
dbp = dbc->dbp;
dbenv = dbp->dbenv;
PANIC_CHECK(dbenv);
- if ((ret = __db_c_pget_arg(dbc, pkey, flags)) != 0 ||
- (ret = __db_c_get_arg(dbc, skey, data, flags)) != 0)
+ ignore_lease = LF_ISSET(DB_IGNORE_LEASE);
+ LF_CLR(DB_IGNORE_LEASE);
+ if ((ret = __dbc_pget_arg(dbc, pkey, flags)) != 0 ||
+ (ret = __dbc_get_arg(dbc, skey, data, flags)) != 0)
return (ret);
ENV_ENTER(dbenv, ip);
- ret = __db_c_pget(dbc, skey, pkey, data, flags);
+ ret = __dbc_pget(dbc, skey, pkey, data, flags);
+ /*
+ * Check for master leases.
+ */
+ if (ret == 0 && IS_REP_MASTER(dbenv) && IS_USING_LEASES(dbenv) &&
+ !ignore_lease)
+ ret = __rep_lease_check(dbenv, 1);
+
ENV_LEAVE(dbenv, ip);
__dbt_userfree(dbenv, skey, pkey, data);
@@ -2178,11 +2282,11 @@ __db_c_pget_pp(dbc, skey, pkey, data, flags)
}
/*
- * __db_c_pget_arg --
+ * __dbc_pget_arg --
* Check DBC->pget arguments.
*/
static int
-__db_c_pget_arg(dbc, pkey, flags)
+__dbc_pget_arg(dbc, pkey, flags)
DBC *dbc;
DBT *pkey;
u_int32_t flags;
@@ -2225,7 +2329,7 @@ __db_c_pget_arg(dbc, pkey, flags)
return (ret);
break;
default:
- /* __db_c_get_arg will catch the rest. */
+ /* __dbc_get_arg will catch the rest. */
break;
}
@@ -2247,13 +2351,13 @@ __db_c_pget_arg(dbc, pkey, flags)
}
/*
- * __db_c_put_pp --
+ * __dbc_put_pp --
* DBC->put pre/post processing.
*
- * PUBLIC: int __db_c_put_pp __P((DBC *, DBT *, DBT *, u_int32_t));
+ * PUBLIC: int __dbc_put_pp __P((DBC *, DBT *, DBT *, u_int32_t));
*/
int
-__db_c_put_pp(dbc, key, data, flags)
+__dbc_put_pp(dbc, key, data, flags)
DBC *dbc;
DBT *key, *data;
u_int32_t flags;
@@ -2268,7 +2372,7 @@ __db_c_put_pp(dbc, key, data, flags)
PANIC_CHECK(dbenv);
- if ((ret = __db_c_put_arg(dbc, key, data, flags)) != 0)
+ if ((ret = __dbc_put_arg(dbc, key, data, flags)) != 0)
return (ret);
ENV_ENTER(dbenv, ip);
@@ -2281,7 +2385,7 @@ __db_c_put_pp(dbc, key, data, flags)
flags == DB_KEYFIRST || flags == DB_KEYLAST ||
flags == DB_NODUPDATA || flags == DB_UPDATE_SECONDARY ?
key : NULL, data, flags);
- ret =__db_c_put(dbc, key, data, flags);
+ ret =__dbc_put(dbc, key, data, flags);
err: ENV_LEAVE(dbenv, ip);
__dbt_userfree(dbenv, key, NULL, data);
@@ -2289,11 +2393,11 @@ err: ENV_LEAVE(dbenv, ip);
}
/*
- * __db_c_put_arg --
+ * __dbc_put_arg --
* Check DBC->put arguments.
*/
static int
-__db_c_put_arg(dbc, key, data, flags)
+__dbc_put_arg(dbc, key, data, flags)
DBC *dbc;
DBT *key, *data;
u_int32_t flags;
@@ -2341,7 +2445,7 @@ __db_c_put_arg(dbc, key, data, flags)
case DB_RECNO: /* Only with mutable record numbers. */
if (!F_ISSET(dbp, DB_AM_RENUMBER))
goto err;
- key_flags = 1;
+ key_flags = key == NULL ? 0 : 1;
break;
case DB_UNKNOWN:
default:
@@ -2369,14 +2473,26 @@ __db_c_put_arg(dbc, key, data, flags)
err: return (__db_ferr(dbenv, "DBcursor->put", 0));
}
- /* Check for invalid key/data flags. */
+ /*
+ * Check for invalid key/data flags. The key may reasonably be NULL
+ * if DB_AFTER or DB_BEFORE is set and the application doesn't care
+ * about the returned key, or if the DB_CURRENT flag is set.
+ */
if (key_flags && (ret = __dbt_ferr(dbp, "key", key, 0)) != 0)
return (ret);
if ((ret = __dbt_ferr(dbp, "data", data, 0)) != 0)
return (ret);
- /* Keys shouldn't have partial flags during a put. */
- if (key_flags && F_ISSET(key, DB_DBT_PARTIAL))
+ /*
+ * The key parameter should not be NULL or have the "partial" flag set
+ * in a put call unless the user doesn't care about a key value we'd
+ * return. The user tells us they don't care about the returned key by
+ * setting the key parameter to NULL or configuring the key DBT to not
+ * return any information. (Returned keys from a put are always record
+ * numbers, and returning part of a record number doesn't make sense:
+ * only accept a partial return if the length returned is 0.)
+ */
+ if (key_flags && F_ISSET(key, DB_DBT_PARTIAL) && key->dlen != 0)
return (__db_ferr(dbenv, "key DBT", 0));
/*
diff --git a/db/db/db_join.c b/db/db/db_join.c
index 7d75b344e..101c958fe 100644
--- a/db/db/db_join.c
+++ b/db/db/db_join.c
@@ -1,10 +1,9 @@
/*
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1998-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1998,2007 Oracle. All rights reserved.
*
- * $Id: db_join.c,v 12.14 2006/08/24 14:45:15 bostic Exp $
+ * $Id: db_join.c,v 12.18 2007/05/17 15:14:56 bostic Exp $
*/
#include "db_config.h"
@@ -13,6 +12,7 @@
#include "dbinc/db_page.h"
#include "dbinc/db_join.h"
#include "dbinc/btree.h"
+#include "dbinc/lock.h"
static int __db_join_close_pp __P((DBC *));
static int __db_join_cmp __P((const void *, const void *));
@@ -21,7 +21,7 @@ static int __db_join_get __P((DBC *, DBT *, DBT *, u_int32_t));
static int __db_join_get_pp __P((DBC *, DBT *, DBT *, u_int32_t));
static int __db_join_getnext __P((DBC *, DBT *, DBT *, u_int32_t, u_int32_t));
static int __db_join_primget __P((DB *,
- DB_TXN *, u_int32_t, DBT *, DBT *, u_int32_t));
+ DB_TXN *, DB_LOCKER *, DBT *, DBT *, u_int32_t));
static int __db_join_put __P((DBC *, DBT *, DBT *, u_int32_t));
/*
@@ -193,13 +193,13 @@ __db_join(primary, curslist, dbcp, flags)
* function beware!
*/
if ((ret =
- __db_c_dup(jc->j_curslist[0], jc->j_workcurs, DB_POSITION)) != 0)
+ __dbc_dup(jc->j_curslist[0], jc->j_workcurs, DB_POSITION)) != 0)
goto err;
- dbc->c_close = __db_join_close_pp;
- dbc->c_del = __db_join_del;
- dbc->c_get = __db_join_get_pp;
- dbc->c_put = __db_join_put;
+ dbc->close = dbc->c_close = __db_join_close_pp;
+ dbc->del = dbc->c_del = __db_join_del;
+ dbc->get = dbc->c_get = __db_join_get_pp;
+ dbc->put = dbc->c_put = __db_join_put;
dbc->internal = (DBC_INTERNAL *)jc;
dbc->dbp = primary;
jc->j_primary = primary;
@@ -220,7 +220,7 @@ err: if (jc != NULL) {
__os_free(dbenv, jc->j_curslist);
if (jc->j_workcurs != NULL) {
if (jc->j_workcurs[0] != NULL)
- (void)__db_c_close(jc->j_workcurs[0]);
+ (void)__dbc_close(jc->j_workcurs[0]);
__os_free(dbenv, jc->j_workcurs);
}
if (jc->j_fdupcurs != NULL)
@@ -236,7 +236,7 @@ err: if (jc != NULL) {
/*
* __db_join_close_pp --
- * DBC->c_close pre/post processing for join cursors.
+ * DBC->close pre/post processing for join cursors.
*/
static int
__db_join_close_pp(dbc)
@@ -322,7 +322,7 @@ __db_join_get_pp(dbc, key, data, flags)
if (LF_ISSET(DB_READ_COMMITTED | DB_READ_UNCOMMITTED | DB_RMW)) {
if (!LOCKING_ON(dbenv))
- return (__db_fnl(dbenv, "DBcursor->c_get"));
+ return (__db_fnl(dbenv, "DBC->get"));
LF_CLR(DB_READ_COMMITTED | DB_READ_UNCOMMITTED | DB_RMW);
}
@@ -331,7 +331,7 @@ __db_join_get_pp(dbc, key, data, flags)
case DB_JOIN_ITEM:
break;
default:
- return (__db_ferr(dbenv, "DBcursor->c_get", 0));
+ return (__db_ferr(dbenv, "DBC->get", 0));
}
/*
@@ -428,7 +428,7 @@ __db_join_get(dbc, key_arg, data_arg, flags)
goto samekey;
F_CLR(jc, JOIN_RETRY);
-retry: ret = __db_c_get(jc->j_workcurs[0], &jc->j_key, key_n,
+retry: ret = __dbc_get(jc->j_workcurs[0], &jc->j_key, key_n,
opmods | (jc->j_exhausted[0] ? DB_NEXT_DUP : DB_CURRENT));
if (ret == DB_BUFFER_SMALL) {
@@ -456,7 +456,7 @@ retry: ret = __db_c_get(jc->j_workcurs[0], &jc->j_key, key_n,
*/
for (i = 1; i < jc->j_ncurs; i++) {
if (jc->j_fdupcurs[i] != NULL &&
- (ret = __db_c_close(jc->j_fdupcurs[i])) != 0)
+ (ret = __dbc_close(jc->j_fdupcurs[i])) != 0)
goto err;
jc->j_fdupcurs[i] = NULL;
}
@@ -480,7 +480,7 @@ retry: ret = __db_c_get(jc->j_workcurs[0], &jc->j_key, key_n,
DB_ASSERT(dbenv, jc->j_curslist[i] != NULL);
if (jc->j_workcurs[i] == NULL)
/* If this is NULL, we need to dup curslist into it. */
- if ((ret = __db_c_dup(jc->j_curslist[i],
+ if ((ret = __dbc_dup(jc->j_curslist[i],
&jc->j_workcurs[i], DB_POSITION)) != 0)
goto err;
@@ -532,7 +532,7 @@ retry2: cp = jc->j_workcurs[i];
* and let strange things happen--we
* can't make rope childproof.
*/
- if ((ret = __db_c_close(
+ if ((ret = __dbc_close(
jc->j_workcurs[j])) != 0)
goto err;
if (!SORTED_SET(jc, 0) ||
@@ -545,7 +545,7 @@ retry2: cp = jc->j_workcurs[i];
jc->j_workcurs[j] = NULL;
else
/* Partial reset suffices. */
- if ((__db_c_dup(
+ if ((__dbc_dup(
jc->j_fdupcurs[j],
&jc->j_workcurs[j],
DB_POSITION)) != 0)
@@ -565,12 +565,12 @@ retry2: cp = jc->j_workcurs[i];
jc->j_workcurs[j] != NULL;
j++) {
if ((ret =
- __db_c_close(jc->j_workcurs[j])) != 0)
+ __dbc_close(jc->j_workcurs[j])) != 0)
goto err;
jc->j_exhausted[j] = 0;
if (jc->j_fdupcurs[j] == NULL)
jc->j_workcurs[j] = NULL;
- else if ((ret = __db_c_dup(jc->j_fdupcurs[j],
+ else if ((ret = __dbc_dup(jc->j_fdupcurs[j],
&jc->j_workcurs[j], DB_POSITION)) != 0)
goto err;
}
@@ -616,7 +616,7 @@ mem_err: __db_errx(dbenv,
* duplicate duplicates; store this into jc->j_fdupcurs[i].
*/
if (SORTED_SET(jc, i) && jc->j_fdupcurs[i] == NULL && (ret =
- __db_c_dup(cp, &jc->j_fdupcurs[i], DB_POSITION)) != 0)
+ __dbc_dup(cp, &jc->j_fdupcurs[i], DB_POSITION)) != 0)
goto err;
}
@@ -628,7 +628,7 @@ samekey: /*
* Get the key we tried and failed to return last time;
* it should be the current datum of all the secondary cursors.
*/
- if ((ret = __db_c_get(jc->j_workcurs[0],
+ if ((ret = __dbc_get(jc->j_workcurs[0],
&jc->j_key, key_n, DB_CURRENT | opmods)) != 0)
return (ret);
F_CLR(jc, JOIN_RETRY);
@@ -714,7 +714,7 @@ samekey: /*
/*
* __db_join_close --
- * DBC->c_close for join cursors.
+ * DBC->close for join cursors.
*
* PUBLIC: int __db_join_close __P((DBC *));
*/
@@ -757,10 +757,10 @@ __db_join_close(dbc)
*/
for (i = 0; i < jc->j_ncurs; i++) {
if (jc->j_workcurs[i] != NULL &&
- (t_ret = __db_c_close(jc->j_workcurs[i])) != 0)
+ (t_ret = __dbc_close(jc->j_workcurs[i])) != 0)
ret = t_ret;
if (jc->j_fdupcurs[i] != NULL &&
- (t_ret = __db_c_close(jc->j_fdupcurs[i])) != 0)
+ (t_ret = __dbc_close(jc->j_fdupcurs[i])) != 0)
ret = t_ret;
}
@@ -814,7 +814,7 @@ __db_join_getnext(dbc, key, data, exhausted, opmods)
*/
memset(&ldata, 0, sizeof(DBT));
F_SET(&ldata, DB_DBT_MALLOC);
- if ((ret = __db_c_get(dbc,
+ if ((ret = __dbc_get(dbc,
key, &ldata, opmods | DB_CURRENT)) != 0)
break;
cmp = func(dbp, data, &ldata);
@@ -839,7 +839,7 @@ __db_join_getnext(dbc, key, data, exhausted, opmods)
__os_ufree(dbp->dbenv, ldata.data);
/* FALLTHROUGH */
case 1:
- ret = __db_c_get(dbc, key, data, opmods | DB_GET_BOTHC);
+ ret = __dbc_get(dbc, key, data, opmods | DB_GET_BOTHC);
break;
default:
ret = EINVAL;
@@ -863,8 +863,8 @@ __db_join_cmp(a, b)
dbca = *((DBC * const *)a);
dbcb = *((DBC * const *)b);
- if (__db_c_count(dbca, &counta) != 0 ||
- __db_c_count(dbcb, &countb) != 0)
+ if (__dbc_count(dbca, &counta) != 0 ||
+ __dbc_count(dbcb, &countb) != 0)
return (0);
return ((long)counta - (long)countb);
@@ -876,10 +876,10 @@ __db_join_cmp(a, b)
* locker ID if we're doing CDB locking.
*/
static int
-__db_join_primget(dbp, txn, lockerid, key, data, flags)
+__db_join_primget(dbp, txn, locker, key, data, flags)
DB *dbp;
DB_TXN *txn;
- u_int32_t lockerid;
+ DB_LOCKER *locker;
DBT *key, *data;
u_int32_t flags;
{
@@ -888,7 +888,7 @@ __db_join_primget(dbp, txn, lockerid, key, data, flags)
int ret, t_ret;
if ((ret = __db_cursor_int(dbp,
- txn, dbp->type, PGNO_INVALID, 0, lockerid, &dbc)) != 0)
+ txn, dbp->type, PGNO_INVALID, 0, locker, &dbc)) != 0)
return (ret);
/*
@@ -918,9 +918,9 @@ __db_join_primget(dbp, txn, lockerid, key, data, flags)
*/
SET_RET_MEM(dbc, dbp);
- ret = __db_c_get(dbc, key, data, DB_SET | rmw);
+ ret = __dbc_get(dbc, key, data, DB_SET | rmw);
- if ((t_ret = __db_c_close(dbc)) != 0 && ret == 0)
+ if ((t_ret = __dbc_close(dbc)) != 0 && ret == 0)
ret = t_ret;
return (ret);
diff --git a/db/db/db_meta.c b/db/db/db_meta.c
index 316840a02..adcfb91e3 100644
--- a/db/db/db_meta.c
+++ b/db/db/db_meta.c
@@ -1,8 +1,7 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*/
/*
* Copyright (c) 1990, 1993, 1994, 1995, 1996
@@ -39,7 +38,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: db_meta.c,v 12.35 2006/08/24 14:45:15 bostic Exp $
+ * $Id: db_meta.c,v 12.47 2007/05/17 17:17:41 bostic Exp $
*/
#include "db_config.h"
@@ -183,7 +182,7 @@ __db_new(dbc, type, pagepp)
}
LSN(h) = LSN(meta);
- ret = __memp_fput(mpf, meta, 0);
+ ret = __memp_fput(mpf, meta, dbc->priority);
meta = NULL;
if ((t_ret = __TLPUT(dbc, metalock)) != 0 && ret == 0)
ret = t_ret;
@@ -240,9 +239,9 @@ __db_new(dbc, type, pagepp)
return (0);
err: if (h != NULL)
- (void)__memp_fput(mpf, h, 0);
+ (void)__memp_fput(mpf, h, dbc->priority);
if (meta != NULL)
- (void)__memp_fput(mpf, meta, 0);
+ (void)__memp_fput(mpf, meta, dbc->priority);
(void)__TLPUT(dbc, metalock);
return (ret);
}
@@ -262,22 +261,28 @@ __db_free(dbc, h)
DB *dbp;
DBT ddbt, ldbt;
DB_LOCK metalock;
+ DB_LSN *lsnp;
DB_MPOOLFILE *mpf;
- db_pgno_t last_pgno, *lp, next_pgno, pgno, prev_pgno;
- u_int32_t lflag, nelem;
- int do_truncate, ret, t_ret;
+ PAGE *prev;
+ db_pgno_t last_pgno, next_pgno, pgno, prev_pgno;
+ u_int32_t lflag;
+ int ret, t_ret;
#ifdef HAVE_FTRUNCATE
- db_pgno_t *list;
- u_int32_t position, start;
+ db_pgno_t *list, *lp;
+ u_int32_t nelem, position, start;
+ int do_truncate;
#endif
dbp = dbc->dbp;
mpf = dbp->mpf;
prev_pgno = PGNO_INVALID;
- nelem = 0;
meta = NULL;
- do_truncate = 0;
+ prev = NULL;
+#ifdef HAVE_FTRUNCATE
lp = NULL;
+ nelem = 0;
+ do_truncate = 0;
+#endif
/*
* Retrieve the metadata page. If we are not keeping a sorted
@@ -293,11 +298,24 @@ __db_free(dbc, h)
if ((ret = __db_lget(dbc,
LCK_ALWAYS, pgno, DB_LOCK_WRITE, 0, &metalock)) != 0)
goto err;
- if ((ret = __memp_fget(mpf, &pgno, dbc->txn, 0, &meta)) != 0)
+
+ /* If we support truncate, we might not dirty the meta page. */
+ if ((ret = __memp_fget(mpf, &pgno, dbc->txn,
+#ifdef HAVE_FTRUNCATE
+ 0,
+#else
+ DB_MPOOL_DIRTY,
+#endif
+ &meta)) != 0)
goto err1;
last_pgno = meta->last_pgno;
next_pgno = meta->free;
+ /*
+ * Assign lsnp here so it always initialized when
+ * HAVE_FTRUNCATE is not defined.
+ */
+ lsnp = &LSN(meta);
DB_ASSERT(dbp->dbenv, h->pgno != next_pgno);
@@ -352,21 +370,26 @@ __db_free(dbc, h)
}
no_sort:
- if (prev_pgno != PGNO_INVALID) {
- if ((ret = __memp_fput(mpf, meta, 0)) != 0)
+ if (prev_pgno == PGNO_INVALID) {
+ if ((ret = __memp_dirty(mpf,
+ &meta, dbc->txn, dbc->priority, 0)) != 0)
goto err1;
- meta = NULL;
+ lsnp = &LSN(meta);
+ } else {
pgno = prev_pgno;
- if ((ret = __memp_fget(mpf, &pgno, dbc->txn, 0, &meta)) != 0)
+ if ((ret = __memp_fget(mpf,
+ &pgno, dbc->txn, DB_MPOOL_DIRTY, &prev)) != 0)
goto err1;
- next_pgno = NEXT_PGNO(meta);
+ next_pgno = NEXT_PGNO(prev);
+ lsnp = &LSN(prev);
}
#endif
- if ((ret = __memp_dirty(mpf, &meta, dbc->txn, 0)) != 0)
- goto err1;
-
- /* Log the change. */
+ /*
+ * Log the change.
+ * We are either logging an update to the metapage or to the
+ * previous page in the sorted list.
+ */
if (DBC_LOGGING(dbc)) {
memset(&ldbt, 0, sizeof(ldbt));
ldbt.data = h;
@@ -394,8 +417,8 @@ no_sort:
ddbt.data = (u_int8_t *)h + HOFFSET(h);
ddbt.size = dbp->pgsize - HOFFSET(h);
if ((ret = __db_pg_freedata_log(dbp, dbc->txn,
- &LSN(meta), lflag,
- h->pgno, &LSN(meta), pgno,
+ lsnp, lflag,
+ h->pgno, lsnp, pgno,
&ldbt, next_pgno, last_pgno, &ddbt)) != 0)
goto err1;
goto logged;
@@ -415,11 +438,12 @@ no_sort:
}
if ((ret = __db_pg_free_log(dbp,
- dbc->txn, &LSN(meta), lflag, h->pgno,
- &LSN(meta), pgno, &ldbt, next_pgno, last_pgno)) != 0)
+ dbc->txn, lsnp, lflag, h->pgno,
+ lsnp, pgno, &ldbt, next_pgno, last_pgno)) != 0)
goto err1;
} else
- LSN_NOT_LOGGED(LSN(meta));
+ LSN_NOT_LOGGED(*lsnp);
+
logged:
#ifdef HAVE_FTRUNCATE
if (do_truncate) {
@@ -429,10 +453,10 @@ logged:
dbc, meta, h, list, start, nelem);
h = NULL;
} else if (h->pgno == last_pgno) {
- LSN(h) = LSN(meta);
+ LSN(h) = *lsnp;
P_INIT(h, dbp->pgsize,
h->pgno, PGNO_INVALID, next_pgno, 0, P_INVALID);
- if ((ret = __memp_fput(mpf, h, DB_MPOOL_DISCARD)) != 0)
+ if ((ret = __memp_fput(mpf, h, DB_PRIORITY_VERY_LOW)) != 0)
goto err1;
h = NULL;
/* Give the page back to the OS. */
@@ -449,9 +473,10 @@ logged:
* reinitialize it and put it at the head of
* the free list.
*/
- if ((ret = __memp_dirty(mpf, &h, dbc->txn, 0)) != 0)
+ if ((ret = __memp_dirty(mpf,
+ &h, dbc->txn, dbc->priority, 0)) != 0)
goto err1;
- LSN(h) = LSN(meta);
+ LSN(h) = *lsnp;
P_INIT(h, dbp->pgsize,
h->pgno, PGNO_INVALID, next_pgno, 0, P_INVALID);
#ifdef DIAGNOSTIC
@@ -461,18 +486,22 @@ logged:
if (prev_pgno == PGNO_INVALID)
meta->free = h->pgno;
else
- NEXT_PGNO(meta) = h->pgno;
+ NEXT_PGNO(prev) = h->pgno;
}
/* Discard the metadata or previous page. */
-err1: if (meta != NULL &&
- (t_ret = __memp_fput(mpf, (PAGE *)meta, 0)) != 0 && ret == 0)
+err1: if (meta != NULL && (t_ret =
+ __memp_fput(mpf, (PAGE *)meta, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
if ((t_ret = __TLPUT(dbc, metalock)) != 0 && ret == 0)
ret = t_ret;
+ if (prev != (PAGE*) meta && prev != NULL &&
+ (t_ret = __memp_fput(mpf, prev, dbc->priority)) != 0 && ret == 0)
+ ret = t_ret;
/* Discard the caller's page reference. */
-err: if (h != NULL && (t_ret = __memp_fput(mpf, h, 0)) != 0 && ret == 0)
+err: if (h != NULL &&
+ (t_ret = __memp_fput(mpf, h, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
/*
@@ -546,14 +575,14 @@ __db_freelist_sort(list, nelems)
* __db_pg_truncate -- sort the freelist and find the truncation point.
*
* PUBLIC: #ifdef HAVE_FTRUNCATE
- * PUBLIC: int __db_pg_truncate __P((DB_MPOOLFILE *, DB_TXN *,
+ * PUBLIC: int __db_pg_truncate __P((DB *, DB_TXN *,
* PUBLIC: struct pglist *list, DB_COMPACT *, u_int32_t *, db_pgno_t *,
* PUBLIC: DB_LSN *, int));
* PUBLIC: #endif
*/
int
-__db_pg_truncate(mpf, txn, list, c_data, nelemp, last_pgno, lsnp, in_recovery)
- DB_MPOOLFILE *mpf;
+__db_pg_truncate(dbp, txn, list, c_data, nelemp, last_pgno, lsnp, in_recovery)
+ DB *dbp;
DB_TXN *txn;
struct pglist *list;
DB_COMPACT *c_data;
@@ -562,6 +591,7 @@ __db_pg_truncate(mpf, txn, list, c_data, nelemp, last_pgno, lsnp, in_recovery)
DB_LSN *lsnp;
int in_recovery;
{
+ DB_MPOOLFILE *mpf;
PAGE *h;
struct pglist *lp;
db_pgno_t pgno;
@@ -570,6 +600,7 @@ __db_pg_truncate(mpf, txn, list, c_data, nelemp, last_pgno, lsnp, in_recovery)
ret = 0;
+ mpf = dbp->mpf;
nelems = *nelemp;
/* Sort the list */
__db_freelist_sort(list, nelems);
@@ -601,8 +632,9 @@ __db_pg_truncate(mpf, txn, list, c_data, nelemp, last_pgno, lsnp, in_recovery)
goto err;
}
if (!in_recovery || LOG_COMPARE(&LSN(h), &lp->lsn) == 0) {
- if ((ret = __memp_dirty(mpf, &h, txn, 0)) != 0) {
- (void)__memp_fput(mpf, h, 0);
+ if ((ret = __memp_dirty(mpf,
+ &h, txn, dbp->priority, 0)) != 0) {
+ (void)__memp_fput(mpf, h, dbp->priority);
goto err;
}
if (lp == &list[nelems - 1])
@@ -613,7 +645,7 @@ __db_pg_truncate(mpf, txn, list, c_data, nelemp, last_pgno, lsnp, in_recovery)
LSN(h) = *lsnp;
}
- if ((ret = __memp_fput(mpf, h, 0)) != 0)
+ if ((ret = __memp_fput(mpf, h, dbp->priority)) != 0)
goto err;
}
@@ -711,7 +743,7 @@ __db_free_truncate(dbp, txn, flags, c_data, listp, nelemp, last_pgnop)
lp->pgno = pgno;
lp->lsn = LSN(h);
pgno = NEXT_PGNO(h);
- if ((ret = __memp_fput(mpf, h, 0)) != 0)
+ if ((ret = __memp_fput(mpf, h, dbc->priority)) != 0)
goto err;
lp++;
} while (pgno != PGNO_INVALID);
@@ -729,7 +761,7 @@ __db_free_truncate(dbp, txn, flags, c_data, listp, nelemp, last_pgnop)
} else
LSN_NOT_LOGGED(LSN(meta));
- if ((ret = __db_pg_truncate(mpf, txn, list, c_data,
+ if ((ret = __db_pg_truncate(dbp, txn, list, c_data,
&nelems, &meta->last_pgno, &LSN(meta), 0)) != 0)
goto err;
@@ -757,12 +789,12 @@ done: if (last_pgnop != NULL)
err: if (list != NULL)
__os_free(dbenv, list);
- if (meta != NULL &&
- (t_ret = __memp_fput(mpf, (PAGE *)meta, 0)) != 0 && ret == 0)
+ if (meta != NULL && (t_ret =
+ __memp_fput(mpf, (PAGE *)meta, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
if ((t_ret = __TLPUT(dbc, metalock)) != 0 && ret == 0)
ret = t_ret;
- if ((t_ret = __db_c_close(dbc)) != 0 && ret == 0)
+ if ((t_ret = __dbc_close(dbc)) != 0 && ret == 0)
ret = t_ret;
return (ret);
}
@@ -805,7 +837,8 @@ __db_truncate_freelist(dbc, meta, h, list, start, nelem)
if ((ret = __memp_fget(mpf, lp, dbc->txn, 0, &pg)) != 0)
goto err;
pp->lsn = LSN(pg);
- if ((ret = __memp_fput(mpf, pg, DB_MPOOL_DISCARD)) != 0)
+ if ((ret =
+ __memp_fput(mpf, pg, DB_PRIORITY_VERY_LOW)) != 0)
goto err;
pp++;
}
@@ -826,7 +859,7 @@ __db_truncate_freelist(dbc, meta, h, list, start, nelem)
if (last_free != NULL)
LSN(last_free) = LSN(meta);
- if ((ret = __memp_fput(mpf, h, DB_MPOOL_DISCARD)) != 0)
+ if ((ret = __memp_fput(mpf, h, DB_PRIORITY_VERY_LOW)) != 0)
goto err;
h = NULL;
if ((ret = __memp_ftruncate(mpf, list[start], 0)) != 0)
@@ -837,7 +870,7 @@ __db_truncate_freelist(dbc, meta, h, list, start, nelem)
meta->free = PGNO_INVALID;
else {
NEXT_PGNO(last_free) = PGNO_INVALID;
- if ((ret = __memp_fput(mpf, last_free, 0)) != 0)
+ if ((ret = __memp_fput(mpf, last_free, dbc->priority)) != 0)
goto err;
last_free = NULL;
}
@@ -850,9 +883,9 @@ err: if (plist != NULL)
/* We need to put the page on error. */
if (h != NULL)
- (void)__memp_fput(mpf, h, 0);
+ (void)__memp_fput(mpf, h, dbc->priority);
if (last_free != NULL)
- (void)__memp_fput(mpf, last_free, 0);
+ (void)__memp_fput(mpf, last_free, dbc->priority);
return (ret);
}
diff --git a/db/db/db_method.c b/db/db/db_method.c
index c4b28cb4d..350e1b052 100644
--- a/db/db/db_method.c
+++ b/db/db/db_method.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1999-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1999,2007 Oracle. All rights reserved.
*
- * $Id: db_method.c,v 12.23 2006/08/24 14:45:16 bostic Exp $
+ * $Id: db_method.c,v 12.40 2007/05/22 00:37:15 ubell Exp $
*/
#include "db_config.h"
@@ -20,7 +19,7 @@
#include "dbinc/txn.h"
#ifdef HAVE_RPC
-#ifndef NO_SYSTEM_INCLUDES
+#ifdef HAVE_SYSTEM_INCLUDE_FILES
#include <rpc/rpc.h>
#endif
#include "db_server.h"
@@ -31,9 +30,10 @@ static int __db_get_byteswapped __P((DB *, int *));
static int __db_get_dbname __P((DB *, const char **, const char **));
static DB_ENV *__db_get_env __P((DB *));
static DB_MPOOLFILE *__db_get_mpf __P((DB *));
+static int __db_get_multiple __P((DB *));
static int __db_get_transactional __P((DB *));
static int __db_get_type __P((DB *, DBTYPE *dbtype));
-static int __db_init __P((DB_ENV *, DB *, u_int32_t));
+static int __db_init __P((DB *, u_int32_t));
static int __db_set_alloc __P((DB *, void *(*)(size_t),
void *(*)(void *, size_t), void (*)(void *)));
static int __db_set_append_recno __P((DB *, int (*)(DB *, DBT *, db_recno_t)));
@@ -47,6 +47,8 @@ static int __db_set_feedback __P((DB *, void (*)(DB *, int, int)));
static void __db_map_flags __P((DB *, u_int32_t *, u_int32_t *));
static int __db_get_pagesize __P((DB *, u_int32_t *));
static int __db_set_paniccall __P((DB *, void (*)(DB_ENV *, int)));
+static int __db_set_priority __P((DB *, DB_CACHE_PRIORITY));
+static int __db_get_priority __P((DB *, DB_CACHE_PRIORITY *));
static void __db_set_errcall
__P((DB *, void (*)(const DB_ENV *, const char *, const char *)));
static void __db_get_errfile __P((DB *, FILE **));
@@ -72,11 +74,11 @@ db_create(dbpp, dbenv, flags)
DB_ENV *dbenv;
u_int32_t flags;
{
- DB *dbp;
DB_THREAD_INFO *ip;
- DB_REP *db_rep;
int ret;
+ ip = NULL;
+
/* Check for invalid function flags. */
switch (flags) {
case 0:
@@ -100,27 +102,48 @@ db_create(dbpp, dbenv, flags)
return (__db_ferr(dbenv, "db_create", 0));
}
- ip = NULL;
if (dbenv != NULL)
ENV_ENTER(dbenv, ip);
- /* Allocate the DB. */
- if ((ret = __os_calloc(dbenv, 1, sizeof(*dbp), &dbp)) != 0) {
- if (dbenv != NULL)
- ENV_LEAVE(dbenv, ip);
- return (ret);
- }
+ ret = __db_create_internal(dbpp, dbenv, flags);
+ if (dbenv != NULL)
+ ENV_LEAVE(dbenv, ip);
- if ((ret = __db_init(dbenv, dbp, flags)) != 0)
- goto err;
+ return (ret);
+}
+
+/*
+ * __db_create_internal --
+ * DB constructor internal routine.
+ *
+ * PUBLIC: int __db_create_internal __P((DB **, DB_ENV *, u_int32_t));
+ */
+int
+__db_create_internal(dbpp, dbenv, flags)
+ DB **dbpp;
+ DB_ENV *dbenv;
+ u_int32_t flags;
+{
+ DB *dbp;
+ DB_REP *db_rep;
+ int ret;
+
+ *dbpp = NULL;
/* If we don't have an environment yet, allocate a local one. */
if (dbenv == NULL) {
if ((ret = db_env_create(&dbenv, 0)) != 0)
- goto err;
+ return (ret);
F_SET(dbenv, DB_ENV_DBLOCAL);
- ENV_ENTER(dbenv, ip);
}
+
+ /* Allocate and initialize the DB handle. */
+ if ((ret = __os_calloc(dbenv, 1, sizeof(*dbp), &dbp)) != 0)
+ goto err;
+
dbp->dbenv = dbenv;
+ if ((ret = __db_init(dbp, flags)) != 0)
+ goto err;
+
MUTEX_LOCK(dbenv, dbenv->mtx_dblist);
++dbenv->db_ref;
MUTEX_UNLOCK(dbenv, dbenv->mtx_dblist);
@@ -150,13 +173,15 @@ db_create(dbpp, dbenv, flags)
*dbpp = dbp;
return (0);
-err: if (dbp->mpf != NULL)
- (void)__memp_fclose(dbp->mpf, 0);
- if (dbenv != NULL && F_ISSET(dbenv, DB_ENV_DBLOCAL))
+err: if (dbp != NULL) {
+ if (dbp->mpf != NULL)
+ (void)__memp_fclose(dbp->mpf, 0);
+ __os_free(dbenv, dbp);
+ }
+
+ if (F_ISSET(dbenv, DB_ENV_DBLOCAL))
(void)__env_close(dbenv, 0);
- __os_free(dbenv, dbp);
- *dbpp = NULL;
- ENV_LEAVE(dbenv, ip);
+
return (ret);
}
@@ -165,14 +190,13 @@ err: if (dbp->mpf != NULL)
* Initialize a DB structure.
*/
static int
-__db_init(dbenv, dbp, flags)
- DB_ENV *dbenv;
+__db_init(dbp, flags)
DB *dbp;
u_int32_t flags;
{
int ret;
- dbp->lid = DB_LOCK_INVALIDID;
+ dbp->locker = NULL;
LOCK_INIT(dbp->handle_lock);
TAILQ_INIT(&dbp->free_queue);
@@ -192,6 +216,7 @@ __db_init(dbenv, dbp, flags)
dbp->dump = __db_dump_pp;
dbp->err = __dbh_err;
dbp->errx = __dbh_errx;
+ dbp->exists = __db_exists;
dbp->fd = __db_fd_pp;
dbp->get = __db_get_pp;
dbp->get_byteswapped = __db_get_byteswapped;
@@ -205,6 +230,7 @@ __db_init(dbenv, dbp, flags)
dbp->get_lorder = __db_get_lorder;
dbp->get_mpf = __db_get_mpf;
dbp->get_msgfile = __db_get_msgfile;
+ dbp->get_multiple = __db_get_multiple;
dbp->get_open_flags = __db_get_open_flags;
dbp->get_pagesize = __db_get_pagesize;
dbp->get_transactional = __db_get_transactional;
@@ -231,6 +257,8 @@ __db_init(dbenv, dbp, flags)
dbp->set_msgfile = __db_set_msgfile;
dbp->set_pagesize = __db_set_pagesize;
dbp->set_paniccall = __db_set_paniccall;
+ dbp->set_priority = __db_set_priority;
+ dbp->get_priority = __db_get_priority;
dbp->stat = __db_stat_pp;
dbp->stat_print = __db_stat_print_pp;
dbp->sync = __db_sync_pp;
@@ -259,7 +287,7 @@ __db_init(dbenv, dbp, flags)
* RPC specific: must be last, as we replace methods set by the
* access methods.
*/
- if (dbenv != NULL && RPC_ON(dbenv)) {
+ if (RPC_ON(dbp->dbenv)) {
__dbcl_dbp_init(dbp);
/*
* !!!
@@ -267,11 +295,9 @@ __db_init(dbenv, dbp, flags)
* can't handle that.
*/
dbp->open = __dbcl_db_open_wrap;
- if ((ret = __dbcl_db_create(dbp, dbenv, flags)) != 0)
+ if ((ret = __dbcl_db_create(dbp, dbp->dbenv, flags)) != 0)
return (ret);
}
-#else
- COMPQUIET(dbenv, NULL);
#endif
return (0);
@@ -308,7 +334,7 @@ __dbh_am_chk(dbp, flags)
/*
* __dbh_err --
- * Error message, including the standard error string.
+ * Db.err method.
*/
static void
#ifdef STDC_HEADERS
@@ -321,12 +347,13 @@ __dbh_err(dbp, error, fmt, va_alist)
va_dcl
#endif
{
+ /* Message with error string, to stderr by default. */
DB_REAL_ERR(dbp->dbenv, error, DB_ERROR_SET, 1, fmt);
}
/*
* __dbh_errx --
- * Error message.
+ * Db.errx method.
*/
static void
#ifdef STDC_HEADERS
@@ -338,6 +365,7 @@ __dbh_errx(dbp, fmt, va_alist)
va_dcl
#endif
{
+ /* Message without error string, to stderr by default. */
DB_REAL_ERR(dbp->dbenv, 0, DB_ERROR_NOT_SET, 1, fmt);
}
@@ -397,8 +425,31 @@ __db_get_mpf(dbp)
}
/*
+ * get_multiple --
+ * Return whether this DB handle references a physical file with multiple
+ * databases.
+ */
+static int
+__db_get_multiple(dbp)
+ DB *dbp;
+{
+ DB_ILLEGAL_BEFORE_OPEN(dbp, "DB->get_multiple");
+
+ /*
+ * Only return TRUE if the handle is for the master database, not for
+ * any subdatabase in the physical file. If it's a Btree, with the
+ * subdatabases flag set, and the meta-data page has the right value,
+ * return TRUE. (We don't need to check it's a Btree, I suppose, but
+ * it doesn't hurt.)
+ */
+ return (dbp->type == DB_BTREE &&
+ F_ISSET(dbp, DB_AM_SUBDB) &&
+ dbp->meta_pgno == PGNO_BASE_MD ? 1 : 0);
+}
+
+/*
* get_transactional --
- * Get whether this database was created in a transaction.
+ * Return whether this database was created in a transaction.
*/
static int
__db_get_transactional(dbp)
@@ -629,7 +680,9 @@ __db_get_flags(dbp, flagsp)
DB_DUP,
DB_DUPSORT,
DB_ENCRYPT,
+#ifdef HAVE_QUEUE
DB_INORDER,
+#endif
DB_RECNUM,
DB_RENUMBER,
DB_REVSPLITOFF,
@@ -852,3 +905,21 @@ __db_set_paniccall(dbp, paniccall)
{
return (__env_set_paniccall(dbp->dbenv, paniccall));
}
+
+static int
+__db_set_priority(dbp, priority)
+ DB *dbp;
+ DB_CACHE_PRIORITY priority;
+{
+ dbp->priority = priority;
+ return (0);
+}
+
+static int
+__db_get_priority(dbp, priority)
+ DB *dbp;
+ DB_CACHE_PRIORITY *priority;
+{
+ *priority = dbp->priority;
+ return (0);
+}
diff --git a/db/db/db_open.c b/db/db/db_open.c
index 6fe158900..a2a10b9b0 100644
--- a/db/db/db_open.c
+++ b/db/db/db_open.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: db_open.c,v 12.30 2006/09/19 15:06:58 bostic Exp $
+ * $Id: db_open.c,v 12.39 2007/05/29 20:52:57 ubell Exp $
*/
#include "db_config.h"
@@ -177,7 +176,7 @@ __db_open(dbp, txn, fname, dname, type, flags, mode, meta_pgno)
LF_SET(DB_TRUNCATE);
/* Set up the underlying environment. */
- if ((ret = __db_dbenv_setup(dbp, txn, fname, dname, id, flags)) != 0)
+ if ((ret = __db_env_setup(dbp, txn, fname, dname, id, flags)) != 0)
return (ret);
/* For in-memory databases, we now need to open/create the database. */
@@ -189,6 +188,9 @@ __db_open(dbp, txn, fname, dname, type, flags, mode, meta_pgno)
if ((ret = __fop_file_setup(dbp,
txn, dname, mode, flags, &id)) == 0 &&
DBENV_LOGGING(dbenv) && !F_ISSET(dbp, DB_AM_RECOVER)
+#if !defined(DEBUG_ROP) && !defined(DEBUG_WOP) && !defined(DIAGNOSTIC)
+ && txn != NULL
+#endif
#if !defined(DEBUG_ROP)
&& !F_ISSET(dbp, DB_AM_RDONLY)
#endif
@@ -232,7 +234,7 @@ __db_open(dbp, txn, fname, dname, type, flags, mode, meta_pgno)
LOCK_ISSET(dbp->handle_lock)) {
if (IS_REAL_TXN(txn))
ret = __txn_lockevent(dbenv,
- txn, dbp, &dbp->handle_lock, dbp->lid);
+ txn, dbp, &dbp->handle_lock, dbp->locker);
else if (LOCKING_ON(dbenv))
/* Trade write handle lock for read handle lock. */
ret = __lock_downgrade(dbenv,
@@ -329,7 +331,8 @@ __db_init_subdb(mdbp, dbp, name, txn)
txn, 0, &meta)) != 0)
goto err;
ret = __db_meta_setup(mdbp->dbenv, dbp, name, meta, 0, 0);
- if ((t_ret = __memp_fput(mpf, meta, 0)) != 0 && ret == 0)
+ if ((t_ret =
+ __memp_fput(mpf, meta, dbp->priority)) != 0 && ret == 0)
ret = t_ret;
/*
* If __db_meta_setup found that the meta-page hadn't
@@ -369,14 +372,14 @@ err: return (ret);
*
* Return 0 on success, >0 (errno) on error, -1 on checksum mismatch.
*
- * PUBLIC: int __db_chk_meta __P((DB_ENV *, DB *, DBMETA *, int));
+ * PUBLIC: int __db_chk_meta __P((DB_ENV *, DB *, DBMETA *, u_int32_t));
*/
int
-__db_chk_meta(dbenv, dbp, meta, do_metachk)
+__db_chk_meta(dbenv, dbp, meta, flags)
DB_ENV *dbenv;
DB *dbp;
DBMETA *meta;
- int do_metachk;
+ u_int32_t flags;
{
DB_LSN swap_lsn;
int is_hmac, ret, swapped;
@@ -404,7 +407,7 @@ __db_chk_meta(dbenv, dbp, meta, do_metachk)
* We cannot add this to __db_metaswap because that gets done
* later after we've verified the checksum or decrypted.
*/
- if (do_metachk) {
+ if (LF_ISSET(DB_CHK_META)) {
swapped = 0;
chk_retry: if ((ret = __db_check_chksum(dbenv, NULL,
(DB_CIPHER *)dbenv->crypto_handle, chksum, meta,
@@ -422,11 +425,12 @@ chk_retry: if ((ret = __db_check_chksum(dbenv, NULL,
F_CLR(dbp, DB_AM_CHKSUM);
#ifdef HAVE_CRYPTO
- ret = __crypto_decrypt_meta(dbenv, dbp, (u_int8_t *)meta, do_metachk);
+ ret = __crypto_decrypt_meta(dbenv,
+ dbp, (u_int8_t *)meta, LF_ISSET(DB_CHK_META));
#endif
/* Now that we're decrypted, we can check LSN. */
- if (LOGGING_ON(dbenv)) {
+ if (LOGGING_ON(dbenv) && !LF_ISSET(DB_CHK_NOLSN)) {
/*
* This gets called both before and after swapping, so we
* need to check ourselves. If we already swapped it above,
@@ -468,18 +472,18 @@ lsn_retry:
* valid, and if so, initialize the dbp from the meta-data page.
*
* PUBLIC: int __db_meta_setup __P((DB_ENV *,
- * PUBLIC: DB *, const char *, DBMETA *, u_int32_t, int));
+ * PUBLIC: DB *, const char *, DBMETA *, u_int32_t, u_int32_t));
*/
int
-__db_meta_setup(dbenv, dbp, name, meta, oflags, do_metachk)
+__db_meta_setup(dbenv, dbp, name, meta, oflags, flags)
DB_ENV *dbenv;
DB *dbp;
const char *name;
DBMETA *meta;
u_int32_t oflags;
- int do_metachk;
+ u_int32_t flags;
{
- u_int32_t flags, magic;
+ u_int32_t magic;
int ret;
ret = 0;
@@ -531,7 +535,7 @@ swap_retry:
* checksum match errors here, because we haven't opened the database
* and even a checksum error isn't a reason to panic the environment.
*/
- if ((ret = __db_chk_meta(dbenv, dbp, meta, do_metachk)) != 0) {
+ if ((ret = __db_chk_meta(dbenv, dbp, meta, flags)) != 0) {
if (ret == -1)
__db_errx(dbenv,
"%s: metadata page checksum error", name);
diff --git a/db/db/db_overflow.c b/db/db/db_overflow.c
index bf39291fc..1f7a6ca24 100644
--- a/db/db/db_overflow.c
+++ b/db/db/db_overflow.c
@@ -1,8 +1,7 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*/
/*
* Copyright (c) 1990, 1993, 1994, 1995, 1996
@@ -39,7 +38,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: db_overflow.c,v 12.13 2006/08/24 14:45:16 bostic Exp $
+ * $Id: db_overflow.c,v 12.21 2007/05/17 19:33:03 bostic Exp $
*/
#include "db_config.h"
@@ -157,9 +156,17 @@ skip_alloc:
if (bytes > needed)
bytes = needed;
if (F_ISSET(dbt, DB_DBT_USERCOPY)) {
- if ((ret = dbenv->dbt_usercopy(dbt, curoff,
+ /*
+ * The offset into the DBT is the total size
+ * less the amount of data still needed. Care
+ * needs to be taken if doing a partial copy
+ * beginning at an offset other than 0.
+ */
+ if ((ret = dbenv->dbt_usercopy(
+ dbt, dbt->size - needed,
src, bytes, DB_USERCOPY_SETDATA)) != 0) {
- (void)__memp_fput(mpf, h, 0);
+ (void)__memp_fput(mpf,
+ h, dbp->priority);
return (ret);
}
} else
@@ -169,7 +176,7 @@ skip_alloc:
}
curoff += OV_LEN(h);
pgno = h->next_pgno;
- (void)__memp_fput(mpf, h, 0);
+ (void)__memp_fput(mpf, h, dbp->priority);
}
return (0);
}
@@ -234,7 +241,8 @@ __db_poff(dbc, dbt, pgnop)
lastp == NULL ? &null_lsn : &LSN(lastp),
&null_lsn)) != 0) {
if (lastp != NULL)
- (void)__memp_fput(mpf, lastp, 0);
+ (void)__memp_fput(mpf,
+ lastp, dbc->priority);
lastp = pagep;
break;
}
@@ -260,12 +268,12 @@ __db_poff(dbc, dbt, pgnop)
else {
lastp->next_pgno = PGNO(pagep);
pagep->prev_pgno = PGNO(lastp);
- (void)__memp_fput(mpf, lastp, 0);
+ (void)__memp_fput(mpf, lastp, dbc->priority);
}
lastp = pagep;
}
- if (lastp != NULL &&
- (t_ret = __memp_fput(mpf, lastp, 0)) != 0 && ret == 0)
+ if (lastp != NULL && (t_ret =
+ __memp_fput(mpf, lastp, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
return (ret);
}
@@ -295,7 +303,7 @@ __db_ovref(dbc, pgno)
if (DBC_LOGGING(dbc)) {
if ((ret = __db_ovref_log(dbp,
dbc->txn, &LSN(h), 0, h->pgno, -1, &LSN(h))) != 0) {
- (void)__memp_fput(mpf, h, 0);
+ (void)__memp_fput(mpf, h, dbc->priority);
return (ret);
}
} else
@@ -312,7 +320,7 @@ __db_ovref(dbc, pgno)
*/
--OV_REF(h);
- return (__memp_fput(mpf, h, 0));
+ return (__memp_fput(mpf, h, dbc->priority));
}
/*
@@ -346,12 +354,13 @@ __db_doff(dbc, pgno)
* decrement the reference count and return.
*/
if (OV_REF(pagep) > 1) {
- (void)__memp_fput(mpf, pagep, 0);
+ (void)__memp_fput(mpf, pagep, dbc->priority);
return (__db_ovref(dbc, pgno));
}
- if ((ret = __memp_dirty(mpf, &pagep, dbc->txn, 0)) != 0) {
- (void)__memp_fput(mpf, pagep, 0);
+ if ((ret = __memp_dirty(mpf,
+ &pagep, dbc->txn, dbc->priority, 0)) != 0) {
+ (void)__memp_fput(mpf, pagep, dbc->priority);
return (ret);
}
@@ -364,7 +373,7 @@ __db_doff(dbc, pgno)
PGNO(pagep), PREV_PGNO(pagep),
NEXT_PGNO(pagep), &tmp_dbt,
&LSN(pagep), &null_lsn, &null_lsn)) != 0) {
- (void)__memp_fput(mpf, pagep, 0);
+ (void)__memp_fput(mpf, pagep, dbc->priority);
return (ret);
}
} else
@@ -388,6 +397,10 @@ __db_doff(dbc, pgno)
* specified a comparison function. In this case, we need to materialize
* the entire object and call their comparison routine.
*
+ * __db_moff and __db_coff are generic functions useful in searching and
+ * ordering off page items. __db_moff matches an overflow DBT with an offpage
+ * item. __db_coff compares two offpage items for lexicographic sort order.
+ *
* PUBLIC: int __db_moff __P((DB *, DB_TXN *, const DBT *, db_pgno_t, u_int32_t,
* PUBLIC: int (*)(DB *, const DBT *, const DBT *), int *));
*/
@@ -444,7 +457,7 @@ __db_moff(dbp, txn, dbt, pgno, tlen, cmpfunc, cmpp)
break;
}
pgno = NEXT_PGNO(pagep);
- if ((ret = __memp_fput(mpf, pagep, 0)) != 0)
+ if ((ret = __memp_fput(mpf, pagep, dbp->priority)) != 0)
return (ret);
if (*cmpp != 0)
return (0);
@@ -458,3 +471,129 @@ __db_moff(dbp, txn, dbt, pgno, tlen, cmpfunc, cmpp)
return (0);
}
+
+/*
+ * __db_coff --
+ * Match two offpage dbts.
+ *
+ * The DBTs must both refer to offpage items.
+ * The match happens a chunk (page) at a time unless a user defined comparison
+ * function exists. It is not possible to optimize this comparison away when
+ * a lexicographic sort order is required on mismatch.
+ *
+ * NOTE: For now this function only works for H_OFFPAGE type items. It would
+ * be simple to extend it for use with B_OVERFLOW type items. It would only
+ * require extracting the total length, and page number, dependent on the
+ * DBT type.
+ *
+ * PUBLIC: int __db_coff __P((DB *, DB_TXN *, const DBT *, const DBT *,
+ * PUBLIC: int (*)(DB *, const DBT *, const DBT *), int *));
+ */
+int
+__db_coff(dbp, txn, dbt, match, cmpfunc, cmpp)
+ DB *dbp;
+ DB_TXN *txn;
+ const DBT *dbt, *match;
+ int (*cmpfunc) __P((DB *, const DBT *, const DBT *)), *cmpp;
+{
+ DBT local_key, local_match;
+ DB_MPOOLFILE *mpf;
+ PAGE *dbt_pagep, *match_pagep;
+ db_pgno_t dbt_pgno, match_pgno;
+ u_int32_t cmp_bytes, dbt_bufsz, dbt_len, match_bufsz;
+ u_int32_t match_len, max_data, page_sz;
+ u_int8_t *p1, *p2;
+ int ret;
+ void *dbt_buf, *match_buf;
+
+ mpf = dbp->mpf;
+ page_sz = dbp->pgsize;
+ *cmpp = 0;
+ dbt_buf = match_buf = NULL;
+
+ DB_ASSERT(dbp->dbenv, HPAGE_PTYPE(dbt->data) == H_OFFPAGE);
+ DB_ASSERT(dbp->dbenv, HPAGE_PTYPE(match->data) == H_OFFPAGE);
+
+ /* Extract potentially unaligned length and pgno fields from DBTs */
+ memcpy(&dbt_len, HOFFPAGE_TLEN(dbt->data), sizeof(u_int32_t));
+ memcpy(&dbt_pgno, HOFFPAGE_PGNO(dbt->data), sizeof(db_pgno_t));
+ memcpy(&match_len, HOFFPAGE_TLEN(match->data), sizeof(u_int32_t));
+ memcpy(&match_pgno, HOFFPAGE_PGNO(match->data), sizeof(db_pgno_t));
+ max_data = (dbt_len < match_len ? dbt_len : match_len);
+
+ /*
+ * If there is a custom comparator, fully resolve both DBTs.
+ * Then call the users comparator.
+ */
+ if (cmpfunc != NULL) {
+ memset(&local_key, 0, sizeof(local_key));
+ memset(&local_match, 0, sizeof(local_match));
+ dbt_buf = match_buf = NULL;
+ dbt_bufsz = match_bufsz = 0;
+
+ if ((ret = __db_goff(dbp, txn, &local_key, dbt_len,
+ dbt_pgno, &dbt_buf, &dbt_bufsz)) != 0)
+ goto err1;
+ if ((ret = __db_goff(dbp, txn, &local_match, match_len,
+ match_pgno, &match_buf, &match_bufsz)) != 0)
+ goto err1;
+ /* The key needs to be the first argument for sort order */
+ *cmpp = cmpfunc(dbp, &local_key, &local_match);
+
+err1: if (dbt_buf != NULL)
+ __os_free(dbp->dbenv, dbt_buf);
+ if (match_buf != NULL)
+ __os_free(dbp->dbenv, match_buf);
+ return (ret);
+ }
+
+ /* Match the offpage DBTs a page at a time. */
+ while (dbt_pgno != PGNO_INVALID && match_pgno != PGNO_INVALID) {
+ if ((ret =
+ __memp_fget(mpf, &dbt_pgno, txn, 0, &dbt_pagep)) != 0)
+ return (ret);
+ if ((ret =
+ __memp_fget(mpf, &match_pgno, txn, 0, &match_pagep)) != 0) {
+ (void)__memp_fput(
+ mpf, dbt_pagep, DB_PRIORITY_UNCHANGED);
+ return (ret);
+ }
+ cmp_bytes = page_sz < max_data ? page_sz : max_data;
+ for (p1 = (u_int8_t *)dbt_pagep + P_OVERHEAD(dbp),
+ p2 = (u_int8_t *)match_pagep + P_OVERHEAD(dbp);
+ cmp_bytes-- > 0; ++p1, ++p2)
+ if (*p1 != *p2) {
+ *cmpp = (long)*p1 - (long)*p2;
+ break;
+ }
+
+ dbt_pgno = NEXT_PGNO(dbt_pagep);
+ match_pgno = NEXT_PGNO(match_pagep);
+ max_data -= page_sz;
+ if ((ret =
+ __memp_fput(mpf, dbt_pagep, DB_PRIORITY_UNCHANGED)) != 0) {
+ (void)__memp_fput(
+ mpf, match_pagep, DB_PRIORITY_UNCHANGED);
+ return (ret);
+ }
+ if ((ret = __memp_fput(
+ mpf, match_pagep, DB_PRIORITY_UNCHANGED)) != 0)
+ return (ret);
+ if (*cmpp != 0)
+ return (0);
+ }
+
+ /* If a lexicographic mismatch was found, then the result has already
+ * been returned. If the DBTs matched, consider the lengths of the
+ * items, and return appropriately.
+ */
+ if (dbt_len > match_len) /* DBT is longer than the match key. */
+ *cmpp = 1;
+ else if (match_len > dbt_len) /* DBT is shorter than the match key. */
+ *cmpp = -1;
+ else
+ *cmpp = 0;
+
+ return (0);
+
+}
diff --git a/db/db/db_ovfl_vrfy.c b/db/db/db_ovfl_vrfy.c
index 85cb85eba..dc58cd05c 100644
--- a/db/db/db_ovfl_vrfy.c
+++ b/db/db/db_ovfl_vrfy.c
@@ -1,8 +1,7 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*/
/*
* Copyright (c) 1990, 1993, 1994, 1995, 1996
@@ -39,7 +38,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: db_ovfl_vrfy.c,v 12.8 2006/09/07 20:05:26 bostic Exp $
+ * $Id: db_ovfl_vrfy.c,v 12.11 2007/05/17 15:14:56 bostic Exp $
*/
#include "db_config.h"
@@ -347,7 +346,7 @@ __db_safe_goff(dbp, vdp, pgno, dbt, buf, flags)
pgno = NEXT_PGNO(h);
- if ((ret = __memp_fput(mpf, h, 0)) != 0)
+ if ((ret = __memp_fput(mpf, h, DB_PRIORITY_UNCHANGED)) != 0)
break;
h = NULL;
}
@@ -362,7 +361,8 @@ __db_safe_goff(dbp, vdp, pgno, dbt, buf, flags)
}
/* If we broke out on error, don't leave pages pinned. */
- if (h != NULL && (t_ret = __memp_fput(mpf, h, 0)) != 0 && ret == 0)
+ if (h != NULL && (t_ret =
+ __memp_fput(mpf, h, DB_PRIORITY_UNCHANGED)) != 0 && ret == 0)
ret = t_ret;
return (ret);
diff --git a/db/db/db_pr.c b/db/db/db_pr.c
index 2a092ab0d..6e1298252 100644
--- a/db/db/db_pr.c
+++ b/db/db/db_pr.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: db_pr.c,v 12.29 2006/09/07 20:05:26 bostic Exp $
+ * $Id: db_pr.c,v 12.38 2007/07/02 16:58:02 alexg Exp $
*/
#include "db_config.h"
@@ -99,7 +98,6 @@ __db_dumptree(dbp, txn, op, name)
static const FN __db_flags_fn[] = {
{ DB_AM_CHKSUM, "checksumming" },
- { DB_AM_CL_WRITER, "client replica writer" },
{ DB_AM_COMPENSATE, "created by compensating transaction" },
{ DB_AM_CREATED, "database created" },
{ DB_AM_CREATED_MSTR, "encompassing file created" },
@@ -237,13 +235,13 @@ __db_prtree(dbp, txn, flags)
* Find out the page number of the last page in the database, then
* dump each page.
*/
- if ((ret = __memp_last_pgno(mpf, &last)) != 0)
+ if ((ret = __memp_get_last_pgno(mpf, &last)) != 0)
return (ret);
for (i = 0; i <= last; ++i) {
if ((ret = __memp_fget(mpf, &i, txn, 0, &h)) != 0)
return (ret);
(void)__db_prpage(dbp, h, flags);
- if ((ret = __memp_fput(mpf, h, 0)) != 0)
+ if ((ret = __memp_fput(mpf, h, dbp->priority)) != 0)
return (ret);
}
@@ -298,7 +296,7 @@ __db_meta(dbp, dbmeta, fn, flags)
break;
}
pgno = h->next_pgno;
- (void)__memp_fput(mpf, h, 0);
+ (void)__memp_fput(mpf, h, dbp->priority);
__db_msgadd(dbenv, &mb, "%s%lu", sep, (u_long)pgno);
if (++cnt % 10 == 0) {
DB_MSGBUF_FLUSH(dbenv, &mb);
@@ -373,7 +371,6 @@ __db_hmeta(dbp, h, flags)
HMETA *h;
u_int32_t flags;
{
- DB_MSGBUF mb;
static const FN fn[] = {
{ DB_HASH_DUP, "duplicates" },
{ DB_HASH_SUBDB, "multiple-databases" },
@@ -381,6 +378,7 @@ __db_hmeta(dbp, h, flags)
{ 0, NULL }
};
DB_ENV *dbenv;
+ DB_MSGBUF mb;
int i;
dbenv = dbp->dbenv;
@@ -451,7 +449,7 @@ __db_prnpage(dbp, txn, pgno)
ret = __db_prpage(dbp, h, DB_PR_PAGE);
- if ((t_ret = __memp_fput(mpf, h, 0)) != 0 && ret == 0)
+ if ((t_ret = __memp_fput(mpf, h, dbp->priority)) != 0 && ret == 0)
ret = t_ret;
return (ret);
@@ -498,7 +496,7 @@ __db_prpage(dbp, h, flags)
if ((s = __db_pagetype_to_string(TYPE(h))) == NULL) {
__db_msg(dbenv, "ILLEGAL PAGE TYPE: page: %lu type: %lu",
(u_long)h->pgno, (u_long)TYPE(h));
- return (1);
+ return (EINVAL);
}
/*
@@ -599,6 +597,7 @@ __db_prpage(dbp, h, flags)
}
deleted = 0;
switch (TYPE(h)) {
+ case P_HASH_UNSORTED:
case P_HASH:
case P_IBTREE:
case P_IRECNO:
@@ -621,6 +620,7 @@ __db_prpage(dbp, h, flags)
__db_msgadd(
dbenv, &mb, "[%03lu] %4lu ", (u_long)i, (u_long)inp[i]);
switch (TYPE(h)) {
+ case P_HASH_UNSORTED:
case P_HASH:
hk = sp;
switch (HPAGE_PTYPE(hk)) {
@@ -813,6 +813,9 @@ __db_prflags(dbenv, mbp, flags, fn, prefix, suffix)
int found, standalone;
const char *sep;
+ if (fn == NULL)
+ return;
+
/*
* If it's a standalone message, output the suffix (which will be the
* label), regardless of whether we found anything or not, and flush
@@ -892,6 +895,9 @@ __db_pagetype_to_string(type)
case P_LDUP:
s = "duplicate";
break;
+ case P_HASH_UNSORTED:
+ s = "hash unsorted";
+ break;
case P_HASH:
s = "hash";
break;
@@ -959,15 +965,11 @@ __db_dumptree(dbp, txn, op, name)
const FN *
__db_get_flags_fn()
{
- static const FN __db_flags_fn[] = {
- { 0, NULL }
- };
-
/*
* !!!
* The Tcl API uses this interface, stub it off.
*/
- return (__db_flags_fn);
+ return (NULL);
}
#endif
@@ -1064,7 +1066,7 @@ __db_dump(dbp, subname, callback, handle, pflag, keyflag)
}
retry: while ((ret =
- __db_c_get(dbcp, &key, &data, DB_NEXT | DB_MULTIPLE_KEY)) == 0) {
+ __dbc_get(dbcp, &key, &data, DB_NEXT | DB_MULTIPLE_KEY)) == 0) {
DB_MULTIPLE_INIT(pointer, &data);
for (;;) {
if (is_recno)
@@ -1099,7 +1101,7 @@ retry: while ((ret =
if ((t_ret = __db_prfooter(handle, callback)) != 0 && ret == 0)
ret = t_ret;
-err: if ((t_ret = __db_c_close(dbcp)) != 0 && ret == 0)
+err: if ((t_ret = __dbc_close(dbcp)) != 0 && ret == 0)
ret = t_ret;
if (data.data != NULL)
__os_free(dbenv, data.data);
diff --git a/db/db/db_rec.c b/db/db/db_rec.c
index 921b9c34a..720faf191 100644
--- a/db/db/db_rec.c
+++ b/db/db/db_rec.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: db_rec.c,v 12.31 2006/09/19 04:04:49 ubell Exp $
+ * $Id: db_rec.c,v 12.44 2007/06/27 18:01:59 ubell Exp $
*/
#include "db_config.h"
@@ -44,7 +43,6 @@ __db_addrem_recover(dbenv, dbtp, lsnp, op, info)
int cmp_n, cmp_p, modified, ret;
pagep = NULL;
- COMPQUIET(info, NULL);
REC_PRINT(__db_addrem_print);
REC_INTRO(__db_addrem_read, 1, 1);
@@ -57,7 +55,7 @@ __db_addrem_recover(dbenv, dbtp, lsnp, op, info)
if ((cmp_p == 0 && DB_REDO(op) && argp->opcode == DB_ADD_DUP) ||
(cmp_n == 0 && DB_UNDO(op) && argp->opcode == DB_REM_DUP)) {
/* Need to redo an add, or undo a delete. */
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, dbc->priority, &pagep);
if ((ret = __db_pitem(dbc, pagep, argp->indx, argp->nbytes,
argp->hdr.size == 0 ? NULL : &argp->hdr,
argp->dbt.size == 0 ? NULL : &argp->dbt)) != 0)
@@ -67,7 +65,7 @@ __db_addrem_recover(dbenv, dbtp, lsnp, op, info)
} else if ((cmp_n == 0 && DB_UNDO(op) && argp->opcode == DB_ADD_DUP) ||
(cmp_p == 0 && DB_REDO(op) && argp->opcode == DB_REM_DUP)) {
/* Need to undo an add, or redo a delete. */
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, dbc->priority, &pagep);
if ((ret = __db_ditem(dbc,
pagep, argp->indx, argp->nbytes)) != 0)
goto out;
@@ -81,7 +79,7 @@ __db_addrem_recover(dbenv, dbtp, lsnp, op, info)
LSN(pagep) = argp->pagelsn;
}
- if ((ret = __memp_fput(mpf, pagep, 0)) != 0)
+ if ((ret = __memp_fput(mpf, pagep, dbc->priority)) != 0)
goto out;
pagep = NULL;
@@ -89,7 +87,7 @@ done: *lsnp = argp->prev_lsn;
ret = 0;
out: if (pagep != NULL)
- (void)__memp_fput(mpf, pagep, 0);
+ (void)__memp_fput(mpf, pagep, dbc->priority);
REC_CLOSE;
}
@@ -113,7 +111,6 @@ __db_big_recover(dbenv, dbtp, lsnp, op, info)
int cmp_n, cmp_p, modified, ret;
pagep = NULL;
- COMPQUIET(info, NULL);
REC_PRINT(__db_big_print);
REC_INTRO(__db_big_read, 1, 0);
@@ -132,7 +129,7 @@ __db_big_recover(dbenv, dbtp, lsnp, op, info)
if ((cmp_p == 0 && DB_REDO(op) && argp->opcode == DB_ADD_BIG) ||
(cmp_n == 0 && DB_UNDO(op) && argp->opcode == DB_REM_BIG)) {
/* We are either redo-ing an add, or undoing a delete. */
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
P_INIT(pagep, file_dbp->pgsize, argp->pgno, argp->prev_pgno,
argp->next_pgno, 0, P_OVERFLOW);
OV_LEN(pagep) = argp->dbt.size;
@@ -148,13 +145,13 @@ __db_big_recover(dbenv, dbtp, lsnp, op, info)
* The page is about to be reclaimed in either case, so
* there really isn't anything to do here.
*/
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
modified = 1;
}
if (modified)
LSN(pagep) = DB_REDO(op) ? *lsnp : argp->pagelsn;
- ret = __memp_fput(mpf, pagep, 0);
+ ret = __memp_fput(mpf, pagep, file_dbp->priority);
pagep = NULL;
if (ret != 0)
goto out;
@@ -177,19 +174,19 @@ ppage: if (argp->prev_pgno != PGNO_INVALID) {
if (cmp_p == 0 && DB_REDO(op) && argp->opcode == DB_ADD_BIG) {
/* Redo add, undo delete. */
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
NEXT_PGNO(pagep) = argp->pgno;
modified = 1;
} else if (cmp_n == 0 &&
DB_UNDO(op) && argp->opcode == DB_ADD_BIG) {
/* Redo delete, undo add. */
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
NEXT_PGNO(pagep) = argp->next_pgno;
modified = 1;
}
if (modified)
LSN(pagep) = DB_REDO(op) ? *lsnp : argp->prevlsn;
- ret = __memp_fput(mpf, pagep, 0);
+ ret = __memp_fput(mpf, pagep, file_dbp->priority);
pagep = NULL;
if (ret != 0)
goto out;
@@ -205,17 +202,17 @@ npage: if (argp->next_pgno != PGNO_INVALID) {
cmp_p = LOG_COMPARE(&LSN(pagep), &argp->nextlsn);
CHECK_LSN(dbenv, op, cmp_p, &LSN(pagep), &argp->nextlsn);
if (cmp_p == 0 && DB_REDO(op)) {
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
PREV_PGNO(pagep) = PGNO_INVALID;
modified = 1;
} else if (cmp_n == 0 && DB_UNDO(op)) {
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
PREV_PGNO(pagep) = argp->pgno;
modified = 1;
}
if (modified)
LSN(pagep) = DB_REDO(op) ? *lsnp : argp->nextlsn;
- ret = __memp_fput(mpf, pagep, 0);
+ ret = __memp_fput(mpf, pagep, file_dbp->priority);
pagep = NULL;
if (ret != 0)
goto out;
@@ -226,7 +223,7 @@ done: *lsnp = argp->prev_lsn;
ret = 0;
out: if (pagep != NULL)
- (void)__memp_fput(mpf, pagep, 0);
+ (void)__memp_fput(mpf, pagep, file_dbp->priority);
REC_CLOSE;
}
@@ -253,7 +250,6 @@ __db_ovref_recover(dbenv, dbtp, lsnp, op, info)
int cmp, ret;
pagep = NULL;
- COMPQUIET(info, NULL);
REC_PRINT(__db_ovref_print);
REC_INTRO(__db_ovref_read, 1, 0);
@@ -263,16 +259,16 @@ __db_ovref_recover(dbenv, dbtp, lsnp, op, info)
CHECK_LSN(dbenv, op, cmp, &LSN(pagep), &argp->lsn);
if (cmp == 0 && DB_REDO(op)) {
/* Need to redo update described. */
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
OV_REF(pagep) += argp->adjust;
pagep->lsn = *lsnp;
} else if (LOG_COMPARE(lsnp, &LSN(pagep)) == 0 && DB_UNDO(op)) {
/* Need to undo update described. */
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
OV_REF(pagep) -= argp->adjust;
pagep->lsn = argp->lsn;
}
- ret = __memp_fput(mpf, pagep, 0);
+ ret = __memp_fput(mpf, pagep, file_dbp->priority);
pagep = NULL;
if (ret != 0)
goto out;
@@ -282,7 +278,7 @@ done: *lsnp = argp->prev_lsn;
ret = 0;
out: if (pagep != NULL)
- (void)__memp_fput(mpf, pagep, 0);
+ (void)__memp_fput(mpf, pagep, file_dbp->priority);
REC_CLOSE;
}
@@ -340,7 +336,6 @@ __db_noop_recover(dbenv, dbtp, lsnp, op, info)
int cmp_n, cmp_p, ret;
pagep = NULL;
- COMPQUIET(info, NULL);
REC_PRINT(__db_noop_print);
REC_INTRO(__db_noop_read, 0, 0);
@@ -350,18 +345,18 @@ __db_noop_recover(dbenv, dbtp, lsnp, op, info)
cmp_p = LOG_COMPARE(&LSN(pagep), &argp->prevlsn);
CHECK_LSN(dbenv, op, cmp_p, &LSN(pagep), &argp->prevlsn);
if (cmp_p == 0 && DB_REDO(op)) {
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
LSN(pagep) = *lsnp;
} else if (cmp_n == 0 && DB_UNDO(op)) {
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
LSN(pagep) = argp->prevlsn;
}
- ret = __memp_fput(mpf, pagep, 0);
+ ret = __memp_fput(mpf, pagep, file_dbp->priority);
pagep = NULL;
done: *lsnp = argp->prev_lsn;
out: if (pagep != NULL)
- (void)__memp_fput(mpf, pagep, 0);
+ (void)__memp_fput(mpf, pagep, file_dbp->priority);
REC_CLOSE;
}
@@ -416,14 +411,14 @@ __db_pg_alloc_recover(dbenv, dbtp, lsnp, op, info)
CHECK_LSN(dbenv, op, cmp_p, &LSN(meta), &argp->meta_lsn);
if (cmp_p == 0 && DB_REDO(op)) {
/* Need to redo update described. */
- REC_DIRTY(mpf, &meta);
+ REC_DIRTY(mpf, file_dbp->priority, &meta);
LSN(meta) = *lsnp;
meta->free = argp->next;
if (argp->pgno > meta->last_pgno)
meta->last_pgno = argp->pgno;
} else if (cmp_n == 0 && DB_UNDO(op)) {
/* Need to undo update described. */
- REC_DIRTY(mpf, &meta);
+ REC_DIRTY(mpf, file_dbp->priority, &meta);
LSN(meta) = argp->meta_lsn;
/*
* If the page has a zero LSN then its newly created
@@ -512,6 +507,19 @@ __db_pg_alloc_recover(dbenv, dbtp, lsnp, op, info)
(IS_ZERO_LSN(argp->page_lsn) && IS_INIT_LSN(LSN(pagep))))
cmp_p = 0;
+#ifndef HAVE_FTRUNCATE
+ /*
+ * If this page was put on the limbo list and then taken off
+ * the free list it will have INIT_LSN. If we are aborting
+ * this operation then we need to initialize the page with
+ * the next pointer as recorded in the log as its current
+ * next pointer may be from its last trip through limbo on
+ * a previous archival restore.
+ */
+ if (IS_INIT_LSN(LSN(pagep)) && IS_INIT_LSN(argp->page_lsn))
+ cmp_n = 0;
+#endif
+
CHECK_LSN(dbenv, op, cmp_p, &LSN(pagep), &argp->page_lsn);
/*
* Another special case we have to handle is if we ended up with a
@@ -521,7 +529,7 @@ __db_pg_alloc_recover(dbenv, dbtp, lsnp, op, info)
*/
if (DB_REDO(op) && cmp_p == 0) {
/* Need to redo update described. */
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
switch (argp->ptype) {
case P_LBTREE:
case P_LRECNO:
@@ -543,7 +551,7 @@ __db_pg_alloc_recover(dbenv, dbtp, lsnp, op, info)
* Undo the allocation, reinitialize the page and
* link its next pointer to the free list.
*/
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
P_INIT(pagep, file_dbp->pgsize,
argp->pgno, PGNO_INVALID, argp->next, 0, P_INVALID);
@@ -558,11 +566,10 @@ do_truncate:
if ((pagep == NULL || IS_ZERO_LSN(LSN(pagep))) &&
IS_ZERO_LSN(argp->page_lsn) && DB_UNDO(op)) {
#ifdef HAVE_FTRUNCATE
- COMPQUIET(info, NULL);
/* Discard the page. */
if (pagep != NULL) {
- if ((ret =
- __memp_fput(mpf, pagep, DB_MPOOL_DISCARD)) != 0)
+ if ((ret = __memp_fput(mpf,
+ pagep, DB_PRIORITY_VERY_LOW)) != 0)
goto out;
pagep = NULL;
}
@@ -577,20 +584,20 @@ do_truncate:
goto out;
/* The last_pgno grows if this was a new page. */
if (argp->pgno > meta->last_pgno) {
- REC_DIRTY(mpf, &meta);
+ REC_DIRTY(mpf, file_dbp->priority, &meta);
meta->last_pgno = argp->pgno;
}
#endif
}
if (pagep != NULL) {
- ret = __memp_fput(mpf, pagep, 0);
+ ret = __memp_fput(mpf, pagep, file_dbp->priority);
pagep = NULL;
if (ret != 0)
goto out;
}
- ret = __memp_fput(mpf, meta, 0);
+ ret = __memp_fput(mpf, meta, file_dbp->priority);
meta = NULL;
if (ret != 0)
goto out;
@@ -599,9 +606,9 @@ done: *lsnp = argp->prev_lsn;
ret = 0;
out: if (pagep != NULL)
- (void)__memp_fput(mpf, pagep, 0);
+ (void)__memp_fput(mpf, pagep, file_dbp->priority);
if (meta != NULL)
- (void)__memp_fput(mpf, meta, 0);
+ (void)__memp_fput(mpf, meta, file_dbp->priority);
if (ret == ENOENT && op == DB_TXN_BACKWARD_ALLOC)
ret = 0;
REC_CLOSE;
@@ -651,7 +658,7 @@ __db_pg_free_recover_int(dbenv, argp, file_dbp, lsnp, mpf, op, data)
* we get the page and update its LSN, last and free pointer.
*/
if (cmp_p == 0 && DB_REDO(op)) {
- REC_DIRTY(mpf, &meta);
+ REC_DIRTY(mpf, file_dbp->priority, &meta);
#ifdef HAVE_FTRUNCATE
/*
* If we are at the end of the file truncate, otherwise
@@ -659,13 +666,13 @@ __db_pg_free_recover_int(dbenv, argp, file_dbp, lsnp, mpf, op, data)
*/
if (argp->pgno == argp->last_pgno)
meta->last_pgno = argp->pgno - 1;
- else if (prevp == NULL)
+ else if (is_meta)
meta->free = argp->pgno;
else
NEXT_PGNO(prevp) = argp->pgno;
#else
/* Need to redo the deallocation. */
- if (prevp == NULL)
+ if (is_meta)
meta->free = argp->pgno;
else
NEXT_PGNO(prevp) = argp->pgno;
@@ -674,20 +681,20 @@ __db_pg_free_recover_int(dbenv, argp, file_dbp, lsnp, mpf, op, data)
* we are a replica, then we never executed the
* original allocation which incremented meta->free.
*/
- if (prevp == NULL && meta->last_pgno < meta->free)
+ if (is_meta && meta->last_pgno < meta->free)
meta->last_pgno = meta->free;
#endif
LSN(meta) = *lsnp;
} else if (cmp_n == 0 && DB_UNDO(op)) {
/* Need to undo the deallocation. */
- REC_DIRTY(mpf, &meta);
- if (prevp == NULL)
+ REC_DIRTY(mpf, file_dbp->priority, &meta);
+ if (is_meta) {
+ if (meta->last_pgno < argp->pgno)
+ meta->last_pgno = argp->pgno;
meta->free = argp->next;
- else
+ } else
NEXT_PGNO(prevp) = argp->next;
LSN(meta) = argp->meta_lsn;
- if (prevp == NULL && meta->last_pgno < argp->pgno)
- meta->last_pgno = argp->pgno;
}
check_meta:
@@ -750,8 +757,8 @@ check_meta:
*/
if (is_meta && meta->last_pgno <= argp->pgno &&
argp->last_pgno <= argp->pgno) {
- if ((ret =
- __memp_fput(mpf, pagep, DB_MPOOL_DISCARD)) != 0)
+ if ((ret = __memp_fput(mpf,
+ pagep, DB_PRIORITY_VERY_LOW)) != 0)
goto out;
pagep = NULL;
trunc: if ((ret = __memp_ftruncate(mpf,
@@ -759,14 +766,14 @@ trunc: if ((ret = __memp_ftruncate(mpf,
goto out;
} else if (argp->last_pgno == argp->pgno) {
/* The page was truncated at runtime, zero it out. */
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
P_INIT(pagep, 0, PGNO_INVALID,
PGNO_INVALID, PGNO_INVALID, 0, P_INVALID);
ZERO_LSN(pagep->lsn);
} else
#endif
{
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
P_INIT(pagep, file_dbp->pgsize,
argp->pgno, PGNO_INVALID, argp->next, 0, P_INVALID);
pagep->lsn = *lsnp;
@@ -774,13 +781,14 @@ trunc: if ((ret = __memp_ftruncate(mpf,
}
} else if (cmp_n == 0 && DB_UNDO(op)) {
/* Need to reallocate the page. */
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
memcpy(pagep, argp->header.data, argp->header.size);
if (data)
memcpy((u_int8_t*)pagep + HOFFSET(pagep),
argp->data.data, argp->data.size);
}
- if (pagep != NULL && (ret = __memp_fput(mpf, pagep, 0)) != 0)
+ if (pagep != NULL &&
+ (ret = __memp_fput(mpf, pagep, file_dbp->priority)) != 0)
goto out;
pagep = NULL;
@@ -797,7 +805,7 @@ trunc: if ((ret = __memp_ftruncate(mpf,
goto out;
if (lp != NULL) {
pos = 0;
- if (!is_meta && nelem != 0) {
+ if (!is_meta) {
__db_freelist_pos(argp->pgno, lp, nelem, &pos);
DB_ASSERT(dbenv, argp->pgno == lp[pos]);
@@ -805,9 +813,9 @@ trunc: if ((ret = __memp_ftruncate(mpf,
argp->meta_pgno == lp[pos - 1]);
}
- if (nelem != 0 && pos != nelem)
+ if (pos < nelem)
memmove(&lp[pos], &lp[pos + 1],
- (nelem - pos) * sizeof(*lp));
+ ((nelem - pos) - 1) * sizeof(*lp));
/* Shrink the list */
if ((ret =
@@ -817,16 +825,16 @@ trunc: if ((ret = __memp_ftruncate(mpf,
}
done:
#endif
- if (meta != NULL && (ret = __memp_fput(mpf, meta, 0)) != 0)
+ if (meta != NULL &&
+ (ret = __memp_fput(mpf, meta, file_dbp->priority)) != 0)
goto out;
meta = NULL;
-
ret = 0;
out: if (pagep != NULL)
- (void)__memp_fput(mpf, pagep, 0);
+ (void)__memp_fput(mpf, pagep, file_dbp->priority);
if (meta != NULL)
- (void)__memp_fput(mpf, meta, 0);
+ (void)__memp_fput(mpf, meta, file_dbp->priority);
return (ret);
}
@@ -852,7 +860,6 @@ __db_pg_free_recover(dbenv, dbtp, lsnp, op, info)
__db_pg_free_args *argp;
int ret;
- COMPQUIET(info, NULL);
REC_PRINT(__db_pg_free_print);
REC_INTRO(__db_pg_free_read, 1, 0);
@@ -895,23 +902,22 @@ __db_pg_new_recover(dbenv, dbtp, lsnp, op, info)
if (DB_UNDO(op)) {
if (LOG_COMPARE(lsnp, &LSN(meta)) == 0) {
meta->lsn = argp->meta_lsn;
- REC_DIRTY(mpf, &meta);
+ REC_DIRTY(mpf, file_dbp->priority, &meta);
}
} else if (DB_REDO(op)) {
if (LOG_COMPARE(&argp->meta_lsn, &LSN(meta)) == 0) {
meta->lsn = *lsnp;
- REC_DIRTY(mpf, &meta);
+ REC_DIRTY(mpf, file_dbp->priority, &meta);
}
}
- if ((ret = __memp_fput(mpf, meta, 0)) != 0)
+ if ((ret = __memp_fput(mpf, meta, file_dbp->priority)) != 0)
goto out;
if ((ret =
__db_add_limbo(dbenv, info, argp->fileid, argp->pgno, 1)) == 0)
*lsnp = argp->prev_lsn;
-
done:
out:
REC_CLOSE;
@@ -946,7 +952,6 @@ __db_pg_freedata_recover(dbenv, dbtp, lsnp, op, info)
__db_pg_freedata_args *argp;
int ret;
- COMPQUIET(info, NULL);
REC_PRINT(__db_pg_freedata_print);
REC_INTRO(__db_pg_freedata_read, 1, 0);
@@ -989,7 +994,7 @@ __db_cksum_recover(dbenv, dbtp, lsnp, op, info)
* We had a checksum failure -- the only option is to run catastrophic
* recovery.
*/
- if (F_ISSET(dbenv, DB_ENV_FATAL))
+ if (F_ISSET(dbenv, DB_ENV_RECOVER_FATAL))
ret = 0;
else {
__db_errx(dbenv,
@@ -1053,7 +1058,8 @@ __db_pg_prepare_recover(dbenv, dbtp, lsnp, op, info)
argp->pgno, PGNO_INVALID, PGNO_INVALID, 0, P_INVALID);
ZERO_LSN(pagep->lsn);
ret = __db_add_limbo(dbenv, info, argp->fileid, argp->pgno, 1);
- if ((t_ret = __memp_fput(mpf, pagep, 0)) != 0 && ret == 0)
+ if ((t_ret = __memp_fput(
+ mpf, pagep, file_dbp->priority)) != 0 && ret == 0)
ret = t_ret;
}
@@ -1094,7 +1100,6 @@ __db_pg_init_recover(dbenv, dbtp, lsnp, op, info)
PAGE *pagep;
int cmp_n, cmp_p, ret, type;
- COMPQUIET(info, NULL);
REC_PRINT(__db_pg_init_print);
REC_INTRO(__db_pg_init_read, 1, 0);
@@ -1132,19 +1137,19 @@ __db_pg_init_recover(dbenv, dbtp, lsnp, op, info)
type = P_HASH;
else
type = file_dbp->type == DB_RECNO ? P_LRECNO : P_LBTREE;
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
P_INIT(pagep, file_dbp->pgsize, PGNO(pagep), PGNO_INVALID,
PGNO_INVALID, TYPE(pagep) == P_HASH ? 0 : 1, type);
pagep->lsn = *lsnp;
} else if (cmp_n == 0 && DB_UNDO(op)) {
/* Put the data back on the page. */
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
memcpy(pagep, argp->header.data, argp->header.size);
if (argp->data.size > 0)
memcpy((u_int8_t*)pagep + HOFFSET(pagep),
argp->data.data, argp->data.size);
}
- if ((ret = __memp_fput(mpf, pagep, 0)) != 0)
+ if ((ret = __memp_fput(mpf, pagep, file_dbp->priority)) != 0)
goto out;
done: *lsnp = argp->prev_lsn;
@@ -1179,7 +1184,6 @@ __db_pg_sort_recover(dbenv, dbtp, lsnp, op, info)
struct pglist *pglist, *lp;
int ret;
- COMPQUIET(info, NULL);
REC_PRINT(__db_pg_sort_print);
REC_INTRO(__db_pg_sort_read, 1, 1);
@@ -1187,7 +1191,7 @@ __db_pg_sort_recover(dbenv, dbtp, lsnp, op, info)
nelem = argp->list.size / sizeof(struct pglist);
if (DB_REDO(op)) {
pgno = argp->last_pgno;
- if ((ret = __db_pg_truncate(mpf, NULL,
+ if ((ret = __db_pg_truncate(file_dbp, NULL,
pglist, NULL, &nelem, &pgno, lsnp, 1)) != 0)
goto out;
@@ -1196,11 +1200,12 @@ __db_pg_sort_recover(dbenv, dbtp, lsnp, op, info)
0, &meta)) == 0) {
if (LOG_COMPARE(&LSN(meta),
&argp->last_lsn) == 0) {
- REC_DIRTY(mpf, &meta);
+ REC_DIRTY(mpf, dbc->priority, &meta);
NEXT_PGNO(meta) = PGNO_INVALID;
LSN(meta) = *lsnp;
}
- if ((ret = __memp_fput(mpf, meta, 0)) != 0)
+ if ((ret = __memp_fput(
+ mpf, meta, file_dbp->priority)) != 0)
goto out;
meta = NULL;
} else if (ret != DB_PAGE_NOTFOUND)
@@ -1210,7 +1215,7 @@ __db_pg_sort_recover(dbenv, dbtp, lsnp, op, info)
0, &meta)) != 0)
goto out;
if (LOG_COMPARE(&LSN(meta), &argp->meta_lsn) == 0) {
- REC_DIRTY(mpf, &meta);
+ REC_DIRTY(mpf, dbc->priority, &meta);
if (argp->last_free == PGNO_INVALID) {
if (nelem == 0)
meta->free = PGNO_INVALID;
@@ -1228,7 +1233,7 @@ __db_pg_sort_recover(dbenv, dbtp, lsnp, op, info)
goto out;
if (IS_ZERO_LSN(LSN(pagep)) ||
LOG_COMPARE(&LSN(pagep), lsnp) == 0) {
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, dbc->priority, &pagep);
if (lp == &pglist[nelem - 1])
pgno = PGNO_INVALID;
else
@@ -1238,18 +1243,20 @@ __db_pg_sort_recover(dbenv, dbtp, lsnp, op, info)
lp->pgno, PGNO_INVALID, pgno, 0, P_INVALID);
LSN(pagep) = lp->lsn;
}
- if ((ret = __memp_fput(mpf, pagep, 0)) != 0)
+ if ((ret =
+ __memp_fput(mpf, pagep, file_dbp->priority)) != 0)
goto out;
}
if (argp->last_free != PGNO_INVALID) {
if ((ret = __memp_fget(mpf, &argp->last_free, NULL,
DB_MPOOL_EDIT, &meta)) == 0) {
if (LOG_COMPARE(&LSN(meta), lsnp) == 0) {
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, dbc->priority, &pagep);
NEXT_PGNO(meta) = pglist->pgno;
LSN(meta) = argp->last_lsn;
}
- if ((ret = __memp_fput(mpf, meta, 0)) != 0)
+ if ((ret = __memp_fput(mpf,
+ meta, file_dbp->priority)) != 0)
goto out;
} else if (ret != DB_PAGE_NOTFOUND)
goto out;
@@ -1259,7 +1266,7 @@ __db_pg_sort_recover(dbenv, dbtp, lsnp, op, info)
NULL, DB_MPOOL_EDIT, &meta)) != 0)
goto out;
if (LOG_COMPARE(&LSN(meta), lsnp) == 0) {
- REC_DIRTY(mpf, &meta);
+ REC_DIRTY(mpf, dbc->priority, &meta);
meta->last_pgno = argp->last_pgno;
if (argp->last_free == PGNO_INVALID)
meta->free = pglist->pgno;
@@ -1280,7 +1287,7 @@ __db_pg_sort_recover(dbenv, dbtp, lsnp, op, info)
}
}
- if ((ret = __memp_fput(mpf, meta, 0)) != 0)
+ if ((ret = __memp_fput(mpf, meta, file_dbp->priority)) != 0)
goto out;
done: *lsnp = argp->prev_lsn;
@@ -1351,14 +1358,14 @@ __db_pg_alloc_42_recover(dbenv, dbtp, lsnp, op, info)
CHECK_LSN(dbenv, op, cmp_p, &LSN(meta), &argp->meta_lsn);
if (cmp_p == 0 && DB_REDO(op)) {
/* Need to redo update described. */
- REC_DIRTY(mpf, &meta);
+ REC_DIRTY(mpf, file_dbp->priority, &meta);
LSN(meta) = *lsnp;
meta->free = argp->next;
if (argp->pgno > meta->last_pgno)
meta->last_pgno = argp->pgno;
} else if (cmp_n == 0 && DB_UNDO(op)) {
/* Need to undo update described. */
- REC_DIRTY(mpf, &meta);
+ REC_DIRTY(mpf, file_dbp->priority, &meta);
LSN(meta) = argp->meta_lsn;
/*
* If the page has a zero LSN then its newly created
@@ -1430,7 +1437,7 @@ __db_pg_alloc_42_recover(dbenv, dbtp, lsnp, op, info)
level = 0;
break;
}
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
P_INIT(pagep, file_dbp->pgsize,
argp->pgno, PGNO_INVALID, PGNO_INVALID, level, argp->ptype);
@@ -1442,7 +1449,7 @@ __db_pg_alloc_42_recover(dbenv, dbtp, lsnp, op, info)
* Undo the allocation, reinitialize the page and
* link its next pointer to the free list.
*/
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
P_INIT(pagep, file_dbp->pgsize,
argp->pgno, PGNO_INVALID, argp->next, 0, P_INVALID);
@@ -1462,16 +1469,17 @@ do_truncate:
goto out;
/* The last_pgno grows if this was a new page. */
if (argp->pgno > meta->last_pgno) {
- REC_DIRTY(mpf, &meta);
+ REC_DIRTY(mpf, file_dbp->priority, &meta);
meta->last_pgno = argp->pgno;
}
}
- if (pagep != NULL && (ret = __memp_fput(mpf, pagep, 0)) != 0)
+ if (pagep != NULL &&
+ (ret = __memp_fput(mpf, pagep, file_dbp->priority)) != 0)
goto out;
pagep = NULL;
- if ((ret = __memp_fput(mpf, meta, 0)) != 0)
+ if ((ret = __memp_fput(mpf, meta, file_dbp->priority)) != 0)
goto out;
meta = NULL;
@@ -1479,9 +1487,9 @@ done: *lsnp = argp->prev_lsn;
ret = 0;
out: if (pagep != NULL)
- (void)__memp_fput(mpf, pagep, 0);
+ (void)__memp_fput(mpf, pagep, file_dbp->priority);
if (meta != NULL)
- (void)__memp_fput(mpf, meta, 0);
+ (void)__memp_fput(mpf, meta, file_dbp->priority);
if (ret == ENOENT && op == DB_TXN_BACKWARD_ALLOC)
ret = 0;
REC_CLOSE;
@@ -1532,7 +1540,7 @@ __db_pg_free_recover_42_int(dbenv, argp, file_dbp, lsnp, mpf, op, data)
*/
if (cmp_p == 0 && DB_REDO(op)) {
/* Need to redo the deallocation. */
- REC_DIRTY(mpf, &meta);
+ REC_DIRTY(mpf, file_dbp->priority, &meta);
if (prevp == NULL)
meta->free = argp->pgno;
else
@@ -1547,7 +1555,7 @@ __db_pg_free_recover_42_int(dbenv, argp, file_dbp, lsnp, mpf, op, data)
LSN(meta) = *lsnp;
} else if (cmp_n == 0 && DB_UNDO(op)) {
/* Need to undo the deallocation. */
- REC_DIRTY(mpf, &meta);
+ REC_DIRTY(mpf, file_dbp->priority, &meta);
if (prevp == NULL)
meta->free = argp->next;
else
@@ -1587,32 +1595,34 @@ check_meta:
(IS_ZERO_LSN(copy_lsn) &&
LOG_COMPARE(&LSN(pagep), &argp->meta_lsn) <= 0))) {
/* Need to redo the deallocation. */
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
P_INIT(pagep, file_dbp->pgsize,
argp->pgno, PGNO_INVALID, argp->next, 0, P_INVALID);
pagep->lsn = *lsnp;
} else if (cmp_n == 0 && DB_UNDO(op)) {
/* Need to reallocate the page. */
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
memcpy(pagep, argp->header.data, argp->header.size);
if (data)
memcpy((u_int8_t*)pagep + HOFFSET(pagep),
argp->data.data, argp->data.size);
}
- if (pagep != NULL && (ret = __memp_fput(mpf, pagep, 0)) != 0)
+ if (pagep != NULL &&
+ (ret = __memp_fput(mpf, pagep, file_dbp->priority)) != 0)
goto out;
pagep = NULL;
- if (meta != NULL && (ret = __memp_fput(mpf, meta, 0)) != 0)
+ if (meta != NULL &&
+ (ret = __memp_fput(mpf, meta, file_dbp->priority)) != 0)
goto out;
meta = NULL;
ret = 0;
out: if (pagep != NULL)
- (void)__memp_fput(mpf, pagep, 0);
+ (void)__memp_fput(mpf, pagep, file_dbp->priority);
if (meta != NULL)
- (void)__memp_fput(mpf, meta, 0);
+ (void)__memp_fput(mpf, meta, file_dbp->priority);
return (ret);
}
@@ -1638,7 +1648,6 @@ __db_pg_free_42_recover(dbenv, dbtp, lsnp, op, info)
__db_pg_free_42_args *argp;
int ret;
- COMPQUIET(info, NULL);
REC_PRINT(__db_pg_free_42_print);
REC_INTRO(__db_pg_free_42_read, 1, 0);
@@ -1671,7 +1680,6 @@ __db_pg_freedata_42_recover(dbenv, dbtp, lsnp, op, info)
__db_pg_freedata_42_args *argp;
int ret;
- COMPQUIET(info, NULL);
REC_PRINT(__db_pg_freedata_42_print);
REC_INTRO(__db_pg_freedata_42_read, 1, 0);
@@ -1706,7 +1714,6 @@ __db_relink_42_recover(dbenv, dbtp, lsnp, op, info)
int cmp_n, cmp_p, modified, ret;
pagep = NULL;
- COMPQUIET(info, NULL);
REC_PRINT(__db_relink_42_print);
REC_INTRO(__db_relink_42_read, 1, 0);
@@ -1730,16 +1737,16 @@ __db_relink_42_recover(dbenv, dbtp, lsnp, op, info)
CHECK_LSN(dbenv, op, cmp_p, &LSN(pagep), &argp->lsn);
if (cmp_p == 0 && DB_REDO(op)) {
/* Redo the relink. */
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
pagep->lsn = *lsnp;
} else if (LOG_COMPARE(lsnp, &LSN(pagep)) == 0 && DB_UNDO(op)) {
/* Undo the relink. */
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
pagep->next_pgno = argp->next;
pagep->prev_pgno = argp->prev;
pagep->lsn = argp->lsn;
}
-next1: if ((ret = __memp_fput(mpf, pagep, 0)) != 0)
+next1: if ((ret = __memp_fput(mpf, pagep, file_dbp->priority)) != 0)
goto out;
pagep = NULL;
@@ -1757,14 +1764,14 @@ next2: if ((ret = __memp_fget(mpf, &argp->next, NULL, 0, &pagep)) != 0) {
if ((argp->opcode == DB_REM_PAGE_COMPAT && cmp_p == 0 && DB_REDO(op)) ||
(argp->opcode == DB_ADD_PAGE_COMPAT && cmp_n == 0 && DB_UNDO(op))) {
/* Redo the remove or undo the add. */
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
pagep->prev_pgno = argp->prev;
modified = 1;
} else if ((argp->opcode == DB_REM_PAGE_COMPAT &&
cmp_n == 0 && DB_UNDO(op)) ||
(argp->opcode == DB_ADD_PAGE_COMPAT && cmp_p == 0 && DB_REDO(op))) {
/* Undo the remove or redo the add. */
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
pagep->prev_pgno = argp->pgno;
modified = 1;
}
@@ -1774,7 +1781,7 @@ next2: if ((ret = __memp_fget(mpf, &argp->next, NULL, 0, &pagep)) != 0) {
else
pagep->lsn = *lsnp;
}
- if ((ret = __memp_fput(mpf, pagep, 0)) != 0)
+ if ((ret = __memp_fput(mpf, pagep, file_dbp->priority)) != 0)
goto out;
pagep = NULL;
if (argp->opcode == DB_ADD_PAGE_COMPAT)
@@ -1792,12 +1799,12 @@ prev: if ((ret = __memp_fget(mpf, &argp->prev, NULL, 0, &pagep)) != 0) {
CHECK_LSN(dbenv, op, cmp_p, &LSN(pagep), &argp->lsn_prev);
if (cmp_p == 0 && DB_REDO(op)) {
/* Redo the relink. */
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
pagep->next_pgno = argp->next;
modified = 1;
} else if (LOG_COMPARE(lsnp, &LSN(pagep)) == 0 && DB_UNDO(op)) {
/* Undo the relink. */
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
pagep->next_pgno = argp->pgno;
modified = 1;
}
@@ -1807,7 +1814,7 @@ prev: if ((ret = __memp_fget(mpf, &argp->prev, NULL, 0, &pagep)) != 0) {
else
pagep->lsn = *lsnp;
}
- if ((ret = __memp_fput(mpf, pagep, 0)) != 0)
+ if ((ret = __memp_fput(mpf, pagep, file_dbp->priority)) != 0)
goto out;
pagep = NULL;
@@ -1815,6 +1822,6 @@ done: *lsnp = argp->prev_lsn;
ret = 0;
out: if (pagep != NULL)
- (void)__memp_fput(mpf, pagep, 0);
+ (void)__memp_fput(mpf, pagep, file_dbp->priority);
REC_CLOSE;
}
diff --git a/db/db/db_reclaim.c b/db/db/db_reclaim.c
index afa81f4bf..a7270b77e 100644
--- a/db/db/db_reclaim.c
+++ b/db/db/db_reclaim.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: db_reclaim.c,v 12.8 2006/08/24 14:45:16 bostic Exp $
+ * $Id: db_reclaim.c,v 12.11 2007/05/17 15:14:56 bostic Exp $
*/
#include "db_config.h"
@@ -52,7 +51,7 @@ __db_traverse_big(dbp, pgno, txn, callback, cookie)
pgno = PGNO_INVALID;
if ((ret = callback(dbp, p, cookie, &did_put)) == 0 &&
!did_put)
- ret = __memp_fput(mpf, p, 0);
+ ret = __memp_fput(mpf, p, dbp->priority);
} while (ret == 0 && pgno != PGNO_INVALID);
return (ret);
@@ -139,7 +138,8 @@ __db_truncate_callback(dbp, p, cookie, putp)
}
break;
case P_OVERFLOW:
- if ((ret = __memp_dirty(mpf, &p, param->dbc->txn, 0)) != 0)
+ if ((ret = __memp_dirty(mpf,
+ &p, param->dbc->txn, param->dbc->priority, 0)) != 0)
return (ret);
if (DBC_LOGGING(param->dbc)) {
if ((ret = __db_ovref_log(dbp, param->dbc->txn,
@@ -198,8 +198,8 @@ __db_truncate_callback(dbp, p, cookie, putp)
if (PREV_PGNO(p) == PGNO_INVALID) {
type = P_HASH;
-reinit: if ((ret =
- __memp_dirty(mpf, &p, param->dbc->txn, 0)) != 0)
+reinit: if ((ret = __memp_dirty(mpf,
+ &p, param->dbc->txn, param->dbc->priority, 0)) != 0)
return (ret);
*putp = 0;
if (DBC_LOGGING(param->dbc)) {
@@ -229,7 +229,7 @@ reinit: if ((ret =
if ((ret = __db_free(param->dbc, p)) != 0)
return (ret);
} else {
- if ((ret = __memp_fput(mpf, p, 0)) != 0)
+ if ((ret = __memp_fput(mpf, p, dbp->priority)) != 0)
return (ret);
*putp = 1;
}
diff --git a/db/db/db_remove.c b/db/db/db_remove.c
index 2201ec1e5..830d3bcc7 100644
--- a/db/db/db_remove.c
+++ b/db/db/db_remove.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2001-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2001,2007 Oracle. All rights reserved.
*
- * $Id: db_remove.c,v 12.28 2006/09/19 15:06:58 bostic Exp $
+ * $Id: db_remove.c,v 12.35 2007/07/05 18:43:13 alanb Exp $
*/
#include "db_config.h"
@@ -77,7 +76,7 @@ __env_dbremove_pp(dbenv, txn, name, subdb, flags)
}
LF_CLR(DB_AUTO_COMMIT);
- if ((ret = db_create(&dbp, dbenv, 0)) != 0)
+ if ((ret = __db_create_internal(&dbp, dbenv, 0)) != 0)
goto err;
ret = __db_remove_int(dbp, txn, name, subdb, flags);
@@ -89,16 +88,16 @@ __env_dbremove_pp(dbenv, txn, name, subdb, flags)
* lock; mark the handle cleared explicitly.
*/
LOCK_INIT(dbp->handle_lock);
- dbp->lid = DB_LOCK_INVALIDID;
+ dbp->locker = NULL;
} else if (txn != NULL) {
/*
* We created this handle locally so we need to close it
* and clean it up. Unfortunately, it's holding transactional
* locks that need to persist until the end of transaction.
- * If we invalidate the locker id (dbp->lid), then the close
+ * If we invalidate the locker id (dbp->locker), then the close
* won't free these locks prematurely.
*/
- dbp->lid = DB_LOCK_INVALIDID;
+ dbp->locker = NULL;
}
err: if (txn_local && (t_ret =
@@ -112,11 +111,18 @@ err: if (txn_local && (t_ret =
* !!!
* Note we're reversing the order of operations: we started the txn and
* then opened the DB handle; we're resolving the txn and then closing
- * closing the DB handle -- it's safer.
+ * closing the DB handle -- a DB handle cannot be closed before
+ * resolving the txn.
*/
- if (dbp != NULL &&
- (t_ret = __db_close(dbp, NULL, DB_NOSYNC)) != 0 && ret == 0)
- ret = t_ret;
+ if (txn_local || txn == NULL) {
+ if (dbp != NULL &&
+ (t_ret = __db_close(dbp, NULL, DB_NOSYNC)) != 0 && ret == 0)
+ ret = t_ret;
+ } else {
+ if (dbp != NULL && (t_ret =
+ __txn_closeevent(dbenv, txn, dbp)) != 0 && ret == 0)
+ ret = t_ret;
+ }
if (handle_check && (t_ret = __env_db_rep_exit(dbenv)) != 0 && ret == 0)
ret = t_ret;
@@ -205,8 +211,14 @@ __db_remove(dbp, txn, name, subdb, flags)
ret = __db_remove_int(dbp, txn, name, subdb, flags);
- if ((t_ret = __db_close(dbp, txn, DB_NOSYNC)) != 0 && ret == 0)
- ret = t_ret;
+ if (txn == NULL) {
+ if ((t_ret = __db_close(dbp, txn, DB_NOSYNC)) != 0 && ret == 0)
+ ret = t_ret;
+ } else {
+ if ((t_ret =
+ __txn_closeevent(dbp->dbenv, txn, dbp)) != 0 && ret == 0)
+ ret = t_ret;
+ }
return (ret);
}
@@ -305,11 +317,11 @@ __db_inmem_remove(dbp, txn, name)
DB_ENV *dbenv;
DB_LSN lsn;
DBT fid_dbt, name_dbt;
- u_int32_t locker;
+ DB_LOCKER *locker;
int ret;
dbenv = dbp->dbenv;
- locker = DB_LOCK_INVALIDID;
+ locker = NULL;
DB_ASSERT(dbenv, name != NULL);
@@ -322,10 +334,10 @@ __db_inmem_remove(dbp, txn, name)
dbp->preserve_fid = 1;
if (LOCKING_ON(dbenv)) {
- if (dbp->lid == DB_LOCK_INVALIDID &&
- (ret = __lock_id(dbenv, &dbp->lid, NULL)) != 0)
+ if (dbp->locker == NULL &&
+ (ret = __lock_id(dbenv, NULL, &dbp->locker)) != 0)
return (ret);
- locker = txn == NULL ? dbp->lid : txn->txnid;
+ locker = txn == NULL ? dbp->locker : txn->locker;
}
/*
@@ -371,7 +383,7 @@ __db_subdb_remove(dbp, txn, name, subdb)
mdbp = sdbp = NULL;
/* Open the subdatabase. */
- if ((ret = db_create(&sdbp, dbp->dbenv, 0)) != 0)
+ if ((ret = __db_create_internal(&sdbp, dbp->dbenv, 0)) != 0)
goto err;
if ((ret = __db_open(sdbp,
txn, name, subdb, DB_UNKNOWN, DB_WRITEOPEN, 0, PGNO_BASE_MD)) != 0)
@@ -414,12 +426,21 @@ __db_subdb_remove(dbp, txn, name, subdb)
DB_TEST_RECOVERY_LABEL
err:
/* Close the main and subdatabases. */
- if ((t_ret = __db_close(sdbp, txn, 0)) != 0 && ret == 0)
- ret = t_ret;
-
- if (mdbp != NULL &&
- (t_ret = __db_close(mdbp, txn, DB_NOSYNC)) != 0 && ret == 0)
- ret = t_ret;
+ if (txn == NULL) {
+ if ((t_ret = __db_close(sdbp, txn, 0)) != 0 && ret == 0)
+ ret = t_ret;
+
+ if (mdbp != NULL &&
+ (t_ret = __db_close(mdbp, txn, DB_NOSYNC)) != 0 && ret == 0)
+ ret = t_ret;
+ } else {
+ if ((t_ret =
+ __txn_closeevent(sdbp->dbenv, txn, sdbp)) != 0 && ret == 0)
+ ret = t_ret;
+ if (mdbp != NULL && (t_ret =
+ __txn_closeevent(mdbp->dbenv, txn, mdbp)) != 0 && ret == 0)
+ ret = t_ret;
+ }
return (ret);
}
diff --git a/db/db/db_rename.c b/db/db/db_rename.c
index e841542ca..915ec792c 100644
--- a/db/db/db_rename.c
+++ b/db/db/db_rename.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2001-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2001,2007 Oracle. All rights reserved.
*
- * $Id: db_rename.c,v 12.20 2006/09/19 15:06:58 bostic Exp $
+ * $Id: db_rename.c,v 12.26 2007/05/17 15:14:56 bostic Exp $
*/
#include "db_config.h"
@@ -16,6 +15,7 @@
#include "dbinc/lock.h"
#include "dbinc/log.h"
#include "dbinc/mp.h"
+#include "dbinc/txn.h"
static int __db_subdb_rename __P((DB *,
DB_TXN *, const char *, const char *, const char *));
@@ -77,7 +77,7 @@ __env_dbrename_pp(dbenv, txn, name, subdb, newname, flags)
LF_CLR(DB_AUTO_COMMIT);
- if ((ret = db_create(&dbp, dbenv, 0)) != 0)
+ if ((ret = __db_create_internal(&dbp, dbenv, 0)) != 0)
goto err;
ret = __db_rename_int(dbp, txn, name, subdb, newname);
@@ -89,16 +89,16 @@ __env_dbrename_pp(dbenv, txn, name, subdb, newname, flags)
* lock; mark the handle cleared explicitly.
*/
LOCK_INIT(dbp->handle_lock);
- dbp->lid = DB_LOCK_INVALIDID;
+ dbp->locker = NULL;
} else if (txn != NULL) {
/*
* We created this handle locally so we need to close it and
* clean it up. Unfortunately, it's holding transactional
* or CDS group locks that need to persist until the end of
- * transaction. If we invalidate the locker id (dbp->lid),
+ * transaction. If we invalidate the locker (dbp->locker),
* then the close won't free these locks prematurely.
*/
- dbp->lid = DB_LOCK_INVALIDID;
+ dbp->locker = NULL;
}
err: if (txn_local && (t_ret =
@@ -114,9 +114,15 @@ err: if (txn_local && (t_ret =
* then opened the DB handle; we're resolving the txn and then closing
* closing the DB handle -- it's safer.
*/
- if (dbp != NULL &&
- (t_ret = __db_close(dbp, NULL, DB_NOSYNC)) != 0 && ret == 0)
- ret = t_ret;
+ if (txn_local || txn == NULL) {
+ if (dbp != NULL &&
+ (t_ret = __db_close(dbp, NULL, DB_NOSYNC)) != 0 && ret == 0)
+ ret = t_ret;
+ } else {
+ if (dbp != NULL && (t_ret =
+ __txn_closeevent(dbenv, txn, dbp)) != 0 && ret == 0)
+ ret = t_ret;
+ }
if (handle_check && (t_ret = __env_db_rep_exit(dbenv)) != 0 && ret == 0)
ret = t_ret;
@@ -202,8 +208,14 @@ __db_rename(dbp, txn, name, subdb, newname)
ret = __db_rename_int(dbp, txn, name, subdb, newname);
- if ((t_ret = __db_close(dbp, txn, DB_NOSYNC)) != 0 && ret == 0)
- ret = t_ret;
+ if (txn == NULL) {
+ if ((t_ret = __db_close(dbp, txn, DB_NOSYNC)) != 0 && ret == 0)
+ ret = t_ret;
+ } else {
+ if ((t_ret =
+ __txn_closeevent(dbp->dbenv, txn, dbp)) != 0 && ret == 0)
+ ret = t_ret;
+ }
return (ret);
}
@@ -341,10 +353,10 @@ __db_subdb_rename(dbp, txn, name, subdb, newname)
goto err;
memcpy(dbp->fileid, ((DBMETA *)meta)->uid, DB_FILE_ID_LEN);
if ((ret = __fop_lock_handle(dbenv,
- dbp, mdbp->lid, DB_LOCK_WRITE, NULL, NOWAIT_FLAG(txn))) != 0)
+ dbp, mdbp->locker, DB_LOCK_WRITE, NULL, NOWAIT_FLAG(txn))) != 0)
goto err;
- ret = __memp_fput(mdbp->mpf, meta, 0);
+ ret = __memp_fput(mdbp->mpf, meta, dbp->priority);
meta = NULL;
if (ret != 0)
goto err;
@@ -357,13 +369,19 @@ __db_subdb_rename(dbp, txn, name, subdb, newname)
DB_TEST_RECOVERY_LABEL
err:
- if (meta != NULL &&
- (t_ret = __memp_fput(mdbp->mpf, meta, 0)) != 0 && ret == 0)
+ if (meta != NULL && (t_ret =
+ __memp_fput(mdbp->mpf, meta, dbp->priority)) != 0 && ret == 0)
ret = t_ret;
- if (mdbp != NULL &&
- (t_ret = __db_close(mdbp, txn, DB_NOSYNC)) != 0 && ret == 0)
- ret = t_ret;
+ if (txn == NULL) {
+ if (mdbp != NULL &&
+ (t_ret = __db_close(mdbp, txn, DB_NOSYNC)) != 0 && ret == 0)
+ ret = t_ret;
+ } else {
+ if (mdbp != NULL && (t_ret =
+ __txn_closeevent(dbenv, txn, mdbp)) != 0 && ret == 0)
+ ret = t_ret;
+ }
return (ret);
}
diff --git a/db/db/db_ret.c b/db/db/db_ret.c
index 3de1776c6..6c8c71929 100644
--- a/db/db/db_ret.c
+++ b/db/db/db_ret.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: db_ret.c,v 12.6 2006/08/24 14:45:16 bostic Exp $
+ * $Id: db_ret.c,v 12.9 2007/05/17 15:14:57 bostic Exp $
*/
#include "db_config.h"
@@ -38,6 +37,7 @@ __db_ret(dbp, txn, h, indx, dbt, memp, memsize)
void *data;
switch (TYPE(h)) {
+ case P_HASH_UNSORTED:
case P_HASH:
hk = P_ENTRY(dbp, h, indx);
if (HPAGE_PTYPE(hk) == H_OFFPAGE) {
diff --git a/db/db/db_setid.c b/db/db/db_setid.c
index 3cbbb38ca..d59aa382c 100644
--- a/db/db/db_setid.c
+++ b/db/db/db_setid.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: db_setid.c,v 12.16 2006/08/24 14:45:16 bostic Exp $
+ * $Id: db_setid.c,v 12.26 2007/05/26 00:13:14 ubell Exp $
*/
#include "db_config.h"
@@ -74,11 +73,12 @@ __env_fileid_reset(dbenv, name, encrypted)
DBT key, data;
DB_FH *fhp;
DB_MPOOLFILE *mpf;
+ DB_PGINFO cookie;
db_pgno_t pgno;
int t_ret, ret;
size_t n;
char *real_name;
- u_int8_t fileid[DB_FILE_ID_LEN], mbuf[256];
+ u_int8_t fileid[DB_FILE_ID_LEN], mbuf[DBMETASIZE];
void *pagep;
dbp = NULL;
@@ -100,24 +100,45 @@ __env_fileid_reset(dbenv, name, encrypted)
* cache, which means if we open this file through the cache before
* updating the file ID on page 0, we might connect to the file from
* which the copy was made.
- *
- * !!!
- * This code depends on page 0 of the file not being encrypted.
*/
- if ((ret = __os_open(dbenv, real_name, 0, 0, &fhp)) != 0)
+ if ((ret = __os_open(dbenv, real_name, 0, 0, 0, &fhp)) != 0) {
+ __db_err(dbenv, ret, "%s", real_name);
goto err;
+ }
if ((ret = __os_read(dbenv, fhp, mbuf, sizeof(mbuf), &n)) != 0)
goto err;
+
if (n != sizeof(mbuf)) {
ret = EINVAL;
__db_errx(dbenv,
"%s: unexpected file type or format", real_name);
goto err;
}
+
+ /*
+ * Create the DB object.
+ */
+ if ((ret = __db_create_internal(&dbp, dbenv, 0)) != 0)
+ goto err;
+
+ /* If configured with a password, the databases are encrypted. */
+ if (encrypted && (ret = __db_set_flags(dbp, DB_ENCRYPT)) != 0)
+ goto err;
+
+ if ((ret = __db_meta_setup(dbenv,
+ dbp, real_name, (DBMETA *)mbuf, 0, DB_CHK_META)) != 0)
+ goto err;
memcpy(((DBMETA *)mbuf)->uid, fileid, DB_FILE_ID_LEN);
+ cookie.db_pagesize = sizeof(mbuf);
+ cookie.flags = dbp->flags;
+ cookie.type = dbp->type;
+ key.data = &cookie;
+
+ if ((ret = __db_pgout(dbenv, 0, mbuf, &key)) != 0)
+ goto err;
if ((ret = __os_seek(dbenv, fhp, 0, 0, 0)) != 0)
goto err;
- if ((ret = __os_write(dbenv, fhp, mbuf, 256, &n)) != 0)
+ if ((ret = __os_write(dbenv, fhp, mbuf, sizeof(mbuf), &n)) != 0)
goto err;
if ((ret = __os_fsync(dbenv, fhp)) != 0)
goto err;
@@ -128,15 +149,7 @@ __env_fileid_reset(dbenv, name, encrypted)
* the file in the cache, and update the file IDs for subdatabases.
* (No existing code, as far as I know, actually uses the file ID of
* a subdatabase, but it's cleaner to get them all.)
- *
- * Create the DB object.
*/
- if ((ret = db_create(&dbp, dbenv, 0)) != 0)
- goto err;
-
- /* If configured with a password, the databases are encrypted. */
- if (encrypted && (ret = __db_set_flags(dbp, DB_ENCRYPT)) != 0)
- goto err;
/*
* Open the DB file.
@@ -163,7 +176,7 @@ __env_fileid_reset(dbenv, name, encrypted)
memset(&data, 0, sizeof(data));
if ((ret = __db_cursor(dbp, NULL, &dbcp, 0)) != 0)
goto err;
- while ((ret = __db_c_get(dbcp, &key, &data, DB_NEXT)) == 0) {
+ while ((ret = __dbc_get(dbcp, &key, &data, DB_NEXT)) == 0) {
/*
* XXX
* We're handling actual data, not on-page meta-data, so it
@@ -176,13 +189,13 @@ __env_fileid_reset(dbenv, name, encrypted)
DB_MPOOL_DIRTY, &pagep)) != 0)
goto err;
memcpy(((DBMETA *)pagep)->uid, fileid, DB_FILE_ID_LEN);
- if ((ret = __memp_fput(mpf, pagep, 0)) != 0)
+ if ((ret = __memp_fput(mpf, pagep, dbcp->priority)) != 0)
goto err;
}
if (ret == DB_NOTFOUND)
ret = 0;
-err: if (dbcp != NULL && (t_ret = __db_c_close(dbcp)) != 0 && ret == 0)
+err: if (dbcp != NULL && (t_ret = __dbc_close(dbcp)) != 0 && ret == 0)
ret = t_ret;
if (dbp != NULL && (t_ret = __db_close(dbp, NULL, 0)) != 0 && ret == 0)
ret = t_ret;
diff --git a/db/db/db_setlsn.c b/db/db/db_setlsn.c
index acd4edfaa..9d15356f7 100644
--- a/db/db/db_setlsn.c
+++ b/db/db/db_setlsn.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: db_setlsn.c,v 12.13 2006/08/24 14:45:16 bostic Exp $
+ * $Id: db_setlsn.c,v 12.18 2007/05/17 15:14:57 bostic Exp $
*/
#include "db_config.h"
@@ -75,7 +74,7 @@ __env_lsn_reset(dbenv, name, encrypted)
int t_ret, ret;
/* Create the DB object. */
- if ((ret = db_create(&dbp, dbenv, 0)) != 0)
+ if ((ret = __db_create_internal(&dbp, dbenv, 0)) != 0)
return (ret);
/* If configured with a password, the databases are encrypted. */
@@ -90,8 +89,10 @@ __env_lsn_reset(dbenv, name, encrypted)
* for writing in this case.
*/
if ((ret = __db_open(dbp, NULL,
- name, NULL, DB_UNKNOWN, DB_RDWRMASTER, 0, PGNO_BASE_MD)) != 0)
+ name, NULL, DB_UNKNOWN, DB_RDWRMASTER, 0, PGNO_BASE_MD)) != 0) {
+ __db_err(dbenv, ret, "%s", name);
goto err;
+ }
/* Reset the LSN on every page of the database file. */
mpf = dbp->mpf;
@@ -99,7 +100,7 @@ __env_lsn_reset(dbenv, name, encrypted)
(ret = __memp_fget(mpf, &pgno, NULL, DB_MPOOL_DIRTY, &pagep)) == 0;
++pgno) {
LSN_NOT_LOGGED(pagep->lsn);
- if ((ret = __memp_fput(mpf, pagep, 0)) != 0)
+ if ((ret = __memp_fput(mpf, pagep, DB_PRIORITY_UNCHANGED)) != 0)
goto err;
}
diff --git a/db/db/db_stati.c b/db/db/db_stati.c
index 2b1266717..0f6a3ef07 100644
--- a/db/db/db_stati.c
+++ b/db/db/db_stati.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: db_stati.c,v 12.21 2006/08/24 14:45:16 bostic Exp $
+ * $Id: db_stati.c,v 12.29 2007/06/29 12:16:16 bostic Exp $
*/
#include "db_config.h"
@@ -113,7 +112,7 @@ __db_stat(dbp, txn, spp, flags)
break;
}
- if ((t_ret = __db_c_close(dbc)) != 0 && ret == 0)
+ if ((t_ret = __dbc_close(dbc)) != 0 && ret == 0)
ret = t_ret;
return (ret);
@@ -163,7 +162,7 @@ __db_stat_print_pp(dbp, flags)
dbenv = dbp->dbenv;
PANIC_CHECK(dbenv);
- DB_ILLEGAL_BEFORE_OPEN(dbp, "DB->stat");
+ DB_ILLEGAL_BEFORE_OPEN(dbp, "DB->stat_print");
/*
* !!!
@@ -257,7 +256,7 @@ __db_print_stats(dbp, flags)
break;
}
- if ((t_ret = __db_c_close(dbc)) != 0 && ret == 0)
+ if ((t_ret = __dbc_close(dbc)) != 0 && ret == 0)
ret = t_ret;
return (ret);
@@ -274,7 +273,6 @@ __db_print_all(dbp, flags)
{
static const FN fn[] = {
{ DB_AM_CHKSUM, "DB_AM_CHKSUM" },
- { DB_AM_CL_WRITER, "DB_AM_CL_WRITER" },
{ DB_AM_COMPENSATE, "DB_AM_COMPENSATE" },
{ DB_AM_CREATED, "DB_AM_CREATED" },
{ DB_AM_CREATED_MSTR, "DB_AM_CREATED_MSTR" },
@@ -330,9 +328,12 @@ __db_print_all(dbp, flags)
STAT_ULONG("Cursor adjust ID", dbp->adj_fileid);
STAT_ULONG("Meta pgno", dbp->meta_pgno);
- STAT_ULONG("Locker ID", dbp->lid);
- STAT_ULONG("Handle lock", dbp->cur_lid);
- STAT_ULONG("Associate lock", dbp->associate_lid);
+ if (dbp->locker != NULL)
+ STAT_ULONG("Locker ID", dbp->locker->id);
+ if (dbp->cur_locker != NULL)
+ STAT_ULONG("Handle lock", dbp->cur_locker->id);
+ if (dbp->associate_locker != NULL)
+ STAT_ULONG("Associate lock", dbp->associate_locker->id);
STAT_ULONG("RPC remote ID", dbp->cl_id);
__db_msg(dbenv,
@@ -396,8 +397,8 @@ __db_print_cursor(dbp)
return (ret);
}
-static
-int __db_print_citem(dbc)
+static int
+__db_print_citem(dbc)
DBC *dbc;
{
static const FN fn[] = {
@@ -430,7 +431,7 @@ int __db_print_citem(dbc)
STAT_POINTER("Internal", cp);
STAT_HEX("Default locker ID",
dbc->lref == NULL ? 0 : ((DB_LOCKER *)dbc->lref)->id);
- STAT_HEX("Locker", dbc->locker);
+ STAT_HEX("Locker", P_TO_ULONG(dbc->locker));
STAT_STRING("Type", __db_dbtype_to_string(dbc->dbtype));
STAT_POINTER("Off-page duplicate cursor", cp->opd);
diff --git a/db/db/db_truncate.c b/db/db/db_truncate.c
index 7e5e7124b..3700d5c25 100644
--- a/db/db/db_truncate.c
+++ b/db/db/db_truncate.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2001-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2001,2007 Oracle. All rights reserved.
*
- * $Id: db_truncate.c,v 12.18 2006/08/24 14:45:16 bostic Exp $
+ * $Id: db_truncate.c,v 12.22 2007/05/17 15:14:57 bostic Exp $
*/
#include "db_config.h"
@@ -144,11 +143,11 @@ __db_truncate(dbp, txn, countp)
if (dbp->type != DB_QUEUE && LIST_FIRST(&dbp->s_secondaries) != NULL) {
if ((ret = __db_s_first(dbp, &sdbp)) != 0)
return (ret);
- for (; sdbp != NULL && ret == 0; ret = __db_s_next(&sdbp))
+ for (; sdbp != NULL && ret == 0; ret = __db_s_next(&sdbp, txn))
if ((ret = __db_truncate(sdbp, txn, &scount)) != 0)
break;
if (sdbp != NULL)
- (void)__db_s_done(sdbp);
+ (void)__db_s_done(sdbp, txn);
if (ret != 0)
return (ret);
}
@@ -179,7 +178,7 @@ __db_truncate(dbp, txn, countp)
}
/* Discard the cursor. */
- if (dbc != NULL && (t_ret = __db_c_close(dbc)) != 0 && ret == 0)
+ if (dbc != NULL && (t_ret = __dbc_close(dbc)) != 0 && ret == 0)
ret = t_ret;
DB_TEST_RECOVERY(dbp, DB_TEST_POSTDESTROY, ret, NULL);
diff --git a/db/db/db_upg.c b/db/db/db_upg.c
index bb7107648..08054f4c1 100644
--- a/db/db/db_upg.c
+++ b/db/db/db_upg.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: db_upg.c,v 12.8 2006/08/24 14:45:16 bostic Exp $
+ * $Id: db_upg.c,v 12.20 2007/06/21 19:11:04 bostic Exp $
*/
#include "db_config.h"
@@ -16,27 +15,6 @@
#include "dbinc/hash.h"
#include "dbinc/qam.h"
-static int (* const func_31_list[P_PAGETYPE_MAX])
- __P((DB *, char *, u_int32_t, DB_FH *, PAGE *, int *)) = {
- NULL, /* P_INVALID */
- NULL, /* __P_DUPLICATE */
- __ham_31_hash, /* P_HASH */
- NULL, /* P_IBTREE */
- NULL, /* P_IRECNO */
- __bam_31_lbtree, /* P_LBTREE */
- NULL, /* P_LRECNO */
- NULL, /* P_OVERFLOW */
- __ham_31_hashmeta, /* P_HASHMETA */
- __bam_31_btreemeta, /* P_BTREEMETA */
- NULL, /* P_QAMMETA */
- NULL, /* P_QAMDATA */
- NULL, /* P_LDUP */
-};
-
-static int __db_page_pass __P((DB *, char *, u_int32_t, int (* const [])
- (DB *, char *, u_int32_t, DB_FH *, PAGE *, int *), DB_FH *));
-static int __db_set_lastpgno __P((DB *, char *, DB_FH *));
-
/*
* __db_upgrade_pp --
* DB->upgrade pre/post processing.
@@ -63,9 +41,56 @@ __db_upgrade_pp(dbp, fname, flags)
if ((ret = __db_fchk(dbenv, "DB->upgrade", flags, DB_DUPSORT)) != 0)
return (ret);
+#ifdef HAVE_UPGRADE_SUPPORT
return (__db_upgrade(dbp, fname, flags));
+#else
+ COMPQUIET(fname, NULL);
+ __db_errx(dbenv, "upgrade not supported");
+ return (EINVAL);
+#endif
}
+#ifdef HAVE_UPGRADE_SUPPORT
+static int (* const func_31_list[P_PAGETYPE_MAX])
+ __P((DB *, char *, u_int32_t, DB_FH *, PAGE *, int *)) = {
+ NULL, /* P_INVALID */
+ NULL, /* __P_DUPLICATE */
+ __ham_31_hash, /* P_HASH_UNSORTED */
+ NULL, /* P_IBTREE */
+ NULL, /* P_IRECNO */
+ __bam_31_lbtree, /* P_LBTREE */
+ NULL, /* P_LRECNO */
+ NULL, /* P_OVERFLOW */
+ __ham_31_hashmeta, /* P_HASHMETA */
+ __bam_31_btreemeta, /* P_BTREEMETA */
+ NULL, /* P_QAMMETA */
+ NULL, /* P_QAMDATA */
+ NULL, /* P_LDUP */
+ NULL, /* P_HASH */
+};
+
+static int (* const func_46_list[P_PAGETYPE_MAX])
+ __P((DB *, char *, u_int32_t, DB_FH *, PAGE *, int *)) = {
+ NULL, /* P_INVALID */
+ NULL, /* __P_DUPLICATE */
+ __ham_46_hash, /* P_HASH_UNSORTED */
+ NULL, /* P_IBTREE */
+ NULL, /* P_IRECNO */
+ NULL, /* P_LBTREE */
+ NULL, /* P_LRECNO */
+ NULL, /* P_OVERFLOW */
+ __ham_46_hashmeta, /* P_HASHMETA */
+ NULL, /* P_BTREEMETA */
+ NULL, /* P_QAMMETA */
+ NULL, /* P_QAMDATA */
+ NULL, /* P_LDUP */
+ NULL, /* P_HASH */
+};
+
+static int __db_page_pass __P((DB *, char *, u_int32_t, int (* const [])
+ (DB *, char *, u_int32_t, DB_FH *, PAGE *, int *), DB_FH *));
+static int __db_set_lastpgno __P((DB *, char *, DB_FH *));
+
/*
* __db_upgrade --
* Upgrade an existing database.
@@ -80,11 +105,13 @@ __db_upgrade(dbp, fname, flags)
{
DB_ENV *dbenv;
DB_FH *fhp;
+ DBMETA *meta;
size_t n;
- int ret, t_ret;
- u_int8_t mbuf[256];
+ int ret, t_ret, use_mp_open;
+ u_int8_t mbuf[256], tmpflags;
char *real_name;
+ use_mp_open = 0;
dbenv = dbp->dbenv;
fhp = NULL;
@@ -94,7 +121,7 @@ __db_upgrade(dbp, fname, flags)
return (ret);
/* Open the file. */
- if ((ret = __os_open(dbenv, real_name, 0, 0, &fhp)) != 0) {
+ if ((ret = __os_open(dbenv, real_name, 0, 0, 0, &fhp)) != 0) {
__db_err(dbenv, ret, "%s", real_name);
return (ret);
}
@@ -203,6 +230,71 @@ __db_upgrade(dbp, fname, flags)
goto err;
/* FALLTHROUGH */
case 8:
+ /*
+ * Any upgrade that has proceeded this far has metadata
+ * pages compatible with hash version 8 metadata pages,
+ * so casting mbuf to a dbmeta is safe.
+ * If a newer revision moves the pagesize, checksum or
+ * encrypt_alg flags in the metadata, then the
+ * extraction of the fields will need to use hard coded
+ * offsets.
+ */
+ meta = (DBMETA*)mbuf;
+ /*
+ * We need the page size to do more. Extract it from
+ * the meta-data page.
+ */
+ memcpy(&dbp->pgsize, &meta->pagesize,
+ sizeof(u_int32_t));
+ /*
+ * Rip out metadata and encrypt_alg fields from the
+ * metadata page. So the upgrade can know how big
+ * the page metadata pre-amble is. Any upgrade that has
+ * proceeded this far has metadata pages compatible
+ * with hash version 8 metadata pages, so extracting
+ * the fields is safe.
+ */
+ memcpy(&tmpflags, &meta->metaflags, sizeof(u_int8_t));
+ if (FLD_ISSET(tmpflags, DBMETA_CHKSUM))
+ F_SET(dbp, DB_AM_CHKSUM);
+ memcpy(&tmpflags, &meta->encrypt_alg, sizeof(u_int8_t));
+ if (tmpflags != 0) {
+ if (!CRYPTO_ON(dbp->dbenv)) {
+ __db_errx(dbenv,
+"Attempt to upgrade an encrypted database without providing a password.");
+ ret = EINVAL;
+ goto err;
+ }
+ F_SET(dbp, DB_AM_ENCRYPT);
+ }
+
+ /*
+ * This is ugly. It is necessary to have a usable
+ * mpool in the dbp to upgrade from an unsorted
+ * to a sorted hash database. The mpool file is used
+ * to resolve offpage key items, which are needed to
+ * determine sort order. Having mpool open and access
+ * the file does not affect the page pass, since the
+ * page pass only updates DB_HASH_UNSORTED pages
+ * in-place, and the mpool file is only used to read
+ * OFFPAGE items.
+ */
+ use_mp_open = 1;
+ if ((ret = __os_closehandle(dbenv, fhp)) != 0)
+ return (ret);
+ dbp->type = DB_HASH;
+ if ((ret = __db_env_mpool(dbp, fname,
+ DB_AM_NOT_DURABLE | DB_AM_VERIFYING)) != 0)
+ return (ret);
+ fhp = dbp->mpf->fhp;
+
+ /* Do the actual conversion pass. */
+ if ((ret = __db_page_pass(
+ dbp, real_name, flags, func_46_list, fhp)) != 0)
+ goto err;
+
+ /* FALLTHROUGH */
+ case 9:
break;
default:
__db_errx(dbenv, "%s: unsupported hash version: %lu",
@@ -261,7 +353,11 @@ __db_upgrade(dbp, fname, flags)
ret = __os_fsync(dbenv, fhp);
-err: if (fhp != NULL &&
+ /*
+ * If mp_open was used, then rely on the database close to clean up
+ * any file handles.
+ */
+err: if (use_mp_open == 0 && fhp != NULL &&
(t_ret = __os_closehandle(dbenv, fhp)) != 0 && ret == 0)
ret = t_ret;
__os_free(dbenv, real_name);
@@ -312,10 +408,16 @@ __db_page_pass(dbp, real_name, flags, fl, fhp)
if ((ret = __os_read(dbenv, fhp, page, dbp->pgsize, &n)) != 0)
break;
dirty = 0;
+ /* Always decrypt the page. */
+ if ((ret = __db_decrypt_pg(dbenv, dbp, page)) != 0)
+ break;
if (fl[TYPE(page)] != NULL && (ret = fl[TYPE(page)]
(dbp, real_name, flags, fhp, page, &dirty)) != 0)
break;
if (dirty) {
+ if ((ret = __db_encrypt_and_checksum_pg(
+ dbenv, dbp, page)) != 0)
+ break;
if ((ret =
__os_seek(dbenv, fhp, i, dbp->pgsize, 0)) != 0)
break;
@@ -400,3 +502,4 @@ __db_set_lastpgno(dbp, real_name, fhp)
return (0);
}
+#endif /* HAVE_UPGRADE_SUPPORT */
diff --git a/db/db/db_upg_opd.c b/db/db/db_upg_opd.c
index 41dec2696..0f067966e 100644
--- a/db/db/db_upg_opd.c
+++ b/db/db/db_upg_opd.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: db_upg_opd.c,v 12.7 2006/08/24 14:45:16 bostic Exp $
+ * $Id: db_upg_opd.c,v 12.9 2007/05/17 15:14:57 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/db/db_vrfy.c b/db/db/db_vrfy.c
index f502c35a9..38479cf6c 100644
--- a/db/db/db_vrfy.c
+++ b/db/db/db_vrfy.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: db_vrfy.c,v 12.29 2006/09/07 20:05:26 bostic Exp $
+ * $Id: db_vrfy.c,v 12.40 2007/07/02 16:58:02 alexg Exp $
*/
#include "db_config.h"
@@ -252,7 +251,7 @@ __db_verify(dbp, name, subdb, handle, callback, flags)
* safe to open the database normally and then use the page swapping
* code, which makes life easier.
*/
- if ((ret = __os_open(dbenv, real_name, DB_OSO_RDONLY, 0, &fhp)) != 0)
+ if ((ret = __os_open(dbenv, real_name, 0, DB_OSO_RDONLY, 0, &fhp)) != 0)
goto err;
/* Verify the metadata page 0; set pagesize and type. */
@@ -271,11 +270,11 @@ __db_verify(dbp, name, subdb, handle, callback, flags)
* enough to use.
*
* The dbp is not open, but the file is open in the fhp, and we
- * cannot assume that __db_open is safe. Call __db_dbenv_setup,
+ * cannot assume that __db_open is safe. Call __db_env_setup,
* the [safe] part of __db_open that initializes the environment--
* and the mpool--manually.
*/
- if ((ret = __db_dbenv_setup(dbp, NULL,
+ if ((ret = __db_env_setup(dbp, NULL,
name, subdb, TXN_INVALID, DB_ODDFILESIZE | DB_RDONLY)) != 0)
goto err;
@@ -291,7 +290,7 @@ __db_verify(dbp, name, subdb, handle, callback, flags)
F_SET(dbp, DB_AM_OPEN_CALLED);
/* Find out the page number of the last page in the database. */
- if ((ret = __memp_last_pgno(dbp->mpf, &vdp->last_pgno)) != 0)
+ if ((ret = __memp_get_last_pgno(dbp->mpf, &vdp->last_pgno)) != 0)
goto err;
/*
@@ -570,6 +569,7 @@ __db_vrfy_pagezero(dbp, vdp, fhp, flags)
/*
* 28-31: Free list page number.
+ * 32-35: Last page in database file.
* We'll verify its sensibility when we do inter-page
* verification later; for now, just store it.
*/
@@ -620,6 +620,7 @@ __db_vrfy_walkpages(dbp, vdp, handle, callback, flags)
{
DB_ENV *dbenv;
DB_MPOOLFILE *mpf;
+ VRFY_PAGEINFO *pip;
PAGE *h;
db_pgno_t i;
int ret, t_ret, isbad;
@@ -638,11 +639,26 @@ __db_vrfy_walkpages(dbp, vdp, handle, callback, flags)
continue;
/*
- * If an individual page get fails, keep going if and only
- * if we're salvaging.
+ * An individual page get can fail if:
+ * * This is a hash database, it is expected to find
+ * empty buckets, which don't have allocated pages. Create
+ * a dummy page so the verification can proceed.
+ * * We are salvaging, flag the error and continue.
*/
if ((t_ret = __memp_fget(mpf, &i, NULL, 0, &h)) != 0) {
- if (ret == 0)
+ if (dbp->type == DB_HASH) {
+ if ((t_ret =
+ __db_vrfy_getpageinfo(vdp, i, &pip)) != 0)
+ goto err1;
+ pip->type = P_INVALID;
+ pip->pgno = i;
+ F_CLR(pip, VRFY_IS_ALLZEROES);
+ if ((t_ret = __db_vrfy_putpageinfo(
+ dbenv, vdp, pip)) != 0)
+ goto err1;
+ continue;
+ }
+err1: if (ret == 0)
ret = t_ret;
if (LF_ISSET(DB_SALVAGE))
continue;
@@ -690,6 +706,7 @@ __db_vrfy_walkpages(dbp, vdp, handle, callback, flags)
"Page %lu: old-style duplicate page",
(u_long)i));
break;
+ case P_HASH_UNSORTED:
case P_HASH:
ret = __ham_vrfy(dbp, vdp, h, i, flags);
break;
@@ -752,7 +769,7 @@ __db_vrfy_walkpages(dbp, vdp, handle, callback, flags)
* Just as with the page get, bail if and only if we're
* not salvaging.
*/
- if ((t_ret = __memp_fput(mpf, h, 0)) != 0) {
+ if ((t_ret = __memp_fput(mpf, h, dbp->priority)) != 0) {
if (ret == 0)
ret = t_ret;
if (!LF_ISSET(DB_SALVAGE))
@@ -775,7 +792,8 @@ __db_vrfy_walkpages(dbp, vdp, handle, callback, flags)
}
if (0) {
-err: if (h != NULL && (t_ret = __memp_fput(mpf, h, 0)) != 0)
+err: if (h != NULL &&
+ (t_ret = __memp_fput(mpf, h, dbp->priority)) != 0)
return (ret == 0 ? t_ret : ret);
}
@@ -921,7 +939,12 @@ __db_vrfy_structure(dbp, vdp, dbname, meta_pgno, flags)
(u_long)pip->refcount, (u_long)p));
isbad = 1;
}
- } else if (p == 0 && LF_ISSET(DB_UNREF)) {
+ } else if (p == 0 && LF_ISSET(DB_UNREF) &&
+ !(dbp->type == DB_HASH && pip->type == P_INVALID)) {
+ /*
+ * It is OK for unreferenced hash buckets to be
+ * marked invalid and unreferenced.
+ */
EPRINT((dbenv,
"Page %lu: unreferenced page", (u_long)i));
isbad = 1;
@@ -952,7 +975,7 @@ __db_is_valid_pagetype(type)
{
switch (type) {
case P_INVALID: /* Order matches ordinal value. */
- case P_HASH:
+ case P_HASH_UNSORTED:
case P_IBTREE:
case P_IRECNO:
case P_LBTREE:
@@ -963,6 +986,7 @@ __db_is_valid_pagetype(type)
case P_QAMMETA:
case P_QAMDATA:
case P_LDUP:
+ case P_HASH:
return (1);
default:
break;
@@ -1125,6 +1149,7 @@ __db_vrfy_datapage(dbp, vdp, h, pgno, flags)
{
DB_ENV *dbenv;
VRFY_PAGEINFO *pip;
+ u_int32_t smallest_entry;
int isbad, ret, t_ret;
dbenv = dbp->dbenv;
@@ -1157,22 +1182,41 @@ __db_vrfy_datapage(dbp, vdp, h, pgno, flags)
}
/*
- * Verify the number of entries on the page.
- * There is no good way to determine if this is accurate; the
- * best we can do is verify that it's not more than can, in theory,
- * fit on the page. Then, we make sure there are at least
- * this many valid elements in inp[], and hope that this catches
- * most cases.
+ * Verify the number of entries on the page: there's no good way to
+ * determine if this is accurate. The best we can do is verify that
+ * it's not more than can, in theory, fit on the page. Then, we make
+ * sure there are at least this many valid elements in inp[], and
+ * hope the test catches most cases.
*/
- if (TYPE(h) != P_OVERFLOW) {
- if (BKEYDATA_PSIZE(0) * NUM_ENT(h) > dbp->pgsize) {
- isbad = 1;
- EPRINT((dbenv, "Page %lu: too many entries: %lu",
- (u_long)pgno, (u_long)NUM_ENT(h)));
- }
- pip->entries = NUM_ENT(h);
+ switch (TYPE(h)) {
+ case P_HASH_UNSORTED:
+ case P_HASH:
+ smallest_entry = HKEYDATA_PSIZE(0);
+ break;
+ case P_IBTREE:
+ smallest_entry = BINTERNAL_PSIZE(0);
+ break;
+ case P_IRECNO:
+ smallest_entry = RINTERNAL_PSIZE;
+ break;
+ case P_LBTREE:
+ case P_LDUP:
+ case P_LRECNO:
+ smallest_entry = BKEYDATA_PSIZE(0);
+ break;
+ default:
+ smallest_entry = 0;
+ break;
+ }
+ if (smallest_entry * NUM_ENT(h) > dbp->pgsize) {
+ isbad = 1;
+ EPRINT((dbenv, "Page %lu: too many entries: %lu",
+ (u_long)pgno, (u_long)NUM_ENT(h)));
}
+ if (TYPE(h) != P_OVERFLOW)
+ pip->entries = NUM_ENT(h);
+
/*
* btree level. Should be zero unless we're a btree;
* if we are a btree, should be between LEAFLEVEL and MAXBTREELEVEL,
@@ -1336,6 +1380,14 @@ __db_vrfy_meta(dbp, vdp, meta, pgno, flags)
(u_long)pgno, (u_long)meta->free));
}
+ if (pgno == PGNO_BASE_MD && meta->last_pgno != vdp->last_pgno) {
+ isbad = 1;
+ EPRINT((dbenv,
+ "Page %lu: last_pgno is not correct: %lu != %lu",
+ (u_long)pgno,
+ (u_long)meta->last_pgno, (u_long)vdp->last_pgno));
+ }
+
/*
* We have now verified the common fields of the metadata page.
* Clear the flag that told us they had been incompletely checked.
@@ -1450,7 +1502,7 @@ __db_vrfy_subdbs(dbp, vdp, dbname, flags)
memset(&key, 0, sizeof(key));
memset(&data, 0, sizeof(data));
- while ((ret = __db_c_get(dbc, &key, &data, DB_NEXT)) == 0) {
+ while ((ret = __dbc_get(dbc, &key, &data, DB_NEXT)) == 0) {
if (data.size != sizeof(db_pgno_t)) {
EPRINT((dbenv,
"Subdatabase entry not page-number size"));
@@ -1507,7 +1559,7 @@ __db_vrfy_subdbs(dbp, vdp, dbname, flags)
if (ret == DB_NOTFOUND)
ret = 0;
-err: if (dbc != NULL && (t_ret = __db_c_close(dbc)) != 0 && ret == 0)
+err: if (dbc != NULL && (t_ret = __dbc_close(dbc)) != 0 && ret == 0)
ret = t_ret;
if ((t_ret = __db_close(mdbp, NULL, 0)) != 0 && ret == 0)
@@ -1626,7 +1678,8 @@ __db_vrfy_orderchkonly(dbp, vdp, name, subdb, flags)
NULL, currpg, p, NUM_ENT(currpg), 1,
F_ISSET(&btmeta->dbmeta, BTM_DUP), flags)) != 0)
goto err;
- if ((ret = __memp_fput(mpf, currpg, 0)) != 0)
+ if ((ret =
+ __memp_fput(mpf, currpg, dbp->priority)) != 0)
goto err;
currpg = NULL;
}
@@ -1679,7 +1732,8 @@ __db_vrfy_orderchkonly(dbp, vdp, name, subdb, flags)
flags, h_internal->h_hash)) != 0)
goto err;
pgno = NEXT_PGNO(currpg);
- if ((ret = __memp_fput(mpf, currpg, 0)) != 0)
+ if ((ret = __memp_fput(mpf,
+ currpg, dbp->priority)) != 0)
goto err;
currpg = NULL;
}
@@ -1692,14 +1746,15 @@ __db_vrfy_orderchkonly(dbp, vdp, name, subdb, flags)
break;
}
-err: if (pgsc != NULL && (t_ret = __db_c_close(pgsc)) != 0 && ret == 0)
+err: if (pgsc != NULL && (t_ret = __dbc_close(pgsc)) != 0 && ret == 0)
ret = t_ret;
if (pgset != NULL &&
(t_ret = __db_close(pgset, NULL, 0)) != 0 && ret == 0)
ret = t_ret;
- if (h != NULL && (t_ret = __memp_fput(mpf, h, 0)) != 0)
+ if (h != NULL && (t_ret = __memp_fput(mpf, h, dbp->priority)) != 0)
ret = t_ret;
- if (currpg != NULL && (t_ret = __memp_fput(mpf, currpg, 0)) != 0)
+ if (currpg != NULL &&
+ (t_ret = __memp_fput(mpf, currpg, dbp->priority)) != 0)
ret = t_ret;
if ((t_ret = __db_close(mdbp, NULL, 0)) != 0)
ret = t_ret;
@@ -1755,6 +1810,7 @@ __db_salvage(dbp, vdp, pgno, h, handle, callback, flags)
keyflag = 1;
ret = __qam_vrfy_meta(dbp, vdp, (QMETA *)h, pgno, flags);
break;
+ case P_HASH_UNSORTED:
case P_HASH:
return (__ham_salvage(
dbp, vdp, pgno, h, handle, callback, flags));
@@ -1888,7 +1944,8 @@ __db_salvage_unknowns(dbp, vdp, handle, callback, flags)
DB_ASSERT(dbenv, 0);
break;
}
- if ((t_ret = __memp_fput(mpf, h, 0)) != 0 && ret == 0)
+ if ((t_ret =
+ __memp_fput(mpf, h, dbp->priority)) != 0 && ret == 0)
ret = t_ret;
}
@@ -1899,7 +1956,7 @@ __db_salvage_unknowns(dbp, vdp, handle, callback, flags)
ret = t_ret;
/* Re-open the cursor so we traverse the database again. */
- if ((t_ret = __db_c_close(dbc)) != 0 && ret == 0)
+ if ((t_ret = __dbc_close(dbc)) != 0 && ret == 0)
ret = t_ret;
dbc = NULL;
@@ -1933,7 +1990,8 @@ __db_salvage_unknowns(dbp, vdp, handle, callback, flags)
DB_ASSERT(dbenv, 0); /* Shouldn't ever happen. */
break;
}
- if ((t_ret = __memp_fput(mpf, h, 0)) != 0 && ret == 0)
+ if ((t_ret =
+ __memp_fput(mpf, h, dbp->priority)) != 0 && ret == 0)
ret = t_ret;
}
@@ -1943,7 +2001,7 @@ __db_salvage_unknowns(dbp, vdp, handle, callback, flags)
if (t_ret != 0 && ret == 0)
ret = t_ret;
- if ((t_ret = __db_c_close(dbc)) != 0 && ret == 0)
+ if ((t_ret = __dbc_close(dbc)) != 0 && ret == 0)
ret = t_ret;
__os_free(dbenv, ovflbuf);
@@ -2209,7 +2267,7 @@ __db_salvage_duptree(dbp, vdp, pgno, key, handle, callback, flags)
goto err;
}
-err: if ((t_ret = __memp_fput(mpf, h, 0)) != 0 && ret == 0)
+err: if ((t_ret = __memp_fput(mpf, h, dbp->priority)) != 0 && ret == 0)
ret = t_ret;
return (ret);
}
@@ -2263,7 +2321,8 @@ __db_salvage_subdbs(dbp, vdp, handle, callback, flags, hassubsp)
(t_ret = __db_vrfy_putpageinfo(dbenv, vdp, pip)) != 0 && ret == 0)
ret = t_ret;
if (h != NULL) {
- if ((t_ret = __memp_fput(mpf, h, 0)) != 0 && ret == 0)
+ if ((t_ret =
+ __memp_fput(mpf, h, dbp->priority)) != 0 && ret == 0)
ret = t_ret;
h = NULL;
}
@@ -2293,7 +2352,8 @@ __db_salvage_subdbs(dbp, vdp, handle, callback, flags, hassubsp)
if (t_ret != 0 && ret == 0)
ret = t_ret;
if (h != NULL) {
- if ((t_ret = __memp_fput(mpf, h, 0)) != 0 && ret == 0)
+ if ((t_ret = __memp_fput(mpf,
+ h, dbp->priority)) != 0 && ret == 0)
ret = t_ret;
h = NULL;
}
@@ -2302,12 +2362,13 @@ __db_salvage_subdbs(dbp, vdp, handle, callback, flags, hassubsp)
if (t_ret != DB_NOTFOUND && ret == 0)
ret = t_ret;
-err: if (pgsc != NULL && (t_ret = __db_c_close(pgsc)) != 0 && ret == 0)
+err: if (pgsc != NULL && (t_ret = __dbc_close(pgsc)) != 0 && ret == 0)
ret = t_ret;
if (pgset != NULL &&
(t_ret = __db_close(pgset, NULL, 0)) != 0 && ret ==0)
ret = t_ret;
- if (h != NULL && (t_ret = __memp_fput(mpf, h, 0)) != 0 && ret == 0)
+ if (h != NULL &&
+ (t_ret = __memp_fput(mpf, h, dbp->priority)) != 0 && ret == 0)
ret = t_ret;
return (ret);
}
@@ -2413,7 +2474,7 @@ __db_salvage_subdbpg(dbp, vdp, master, handle, callback, flags)
if ((ret =
__db_vrfy_common(dbp, vdp, subpg, meta_pgno, flags)) != 0) {
err_ret = ret;
- (void)__memp_fput(mpf, subpg, 0);
+ (void)__memp_fput(mpf, subpg, dbp->priority);
continue;
}
switch (TYPE(subpg)) {
@@ -2421,7 +2482,7 @@ __db_salvage_subdbpg(dbp, vdp, master, handle, callback, flags)
if ((ret = __bam_vrfy_meta(dbp,
vdp, (BTMETA *)subpg, meta_pgno, flags)) != 0) {
err_ret = ret;
- (void)__memp_fput(mpf, subpg, 0);
+ (void)__memp_fput(mpf, subpg, dbp->priority);
continue;
}
break;
@@ -2429,7 +2490,7 @@ __db_salvage_subdbpg(dbp, vdp, master, handle, callback, flags)
if ((ret = __ham_vrfy_meta(dbp,
vdp, (HMETA *)subpg, meta_pgno, flags)) != 0) {
err_ret = ret;
- (void)__memp_fput(mpf, subpg, 0);
+ (void)__memp_fput(mpf, subpg, dbp->priority);
continue;
}
break;
@@ -2439,7 +2500,7 @@ __db_salvage_subdbpg(dbp, vdp, master, handle, callback, flags)
continue;
}
- if ((ret = __memp_fput(mpf, subpg, 0)) != 0) {
+ if ((ret = __memp_fput(mpf, subpg, dbp->priority)) != 0) {
err_ret = ret;
continue;
}
@@ -2466,14 +2527,15 @@ __db_salvage_subdbpg(dbp, vdp, master, handle, callback, flags)
if ((ret = __db_salvage(dbp, vdp, p, subpg,
handle, callback, flags)) != 0)
err_ret = ret;
- if ((ret = __memp_fput(mpf, subpg, 0)) != 0)
+ if ((ret =
+ __memp_fput(mpf, subpg, dbp->priority)) != 0)
err_ret = ret;
}
if (ret != DB_NOTFOUND)
goto err;
- if ((ret = __db_c_close(pgsc)) != 0)
+ if ((ret = __dbc_close(pgsc)) != 0)
goto err;
if ((ret = __db_prfooter(handle, callback)) != 0)
goto err;
@@ -2525,7 +2587,7 @@ __db_meta2pgset(dbp, vdp, pgno, flags, pgset)
break;
}
- if ((t_ret = __memp_fput(mpf, h, 0)) != 0)
+ if ((t_ret = __memp_fput(mpf, h, dbp->priority)) != 0)
return (t_ret);
return (ret);
}
diff --git a/db/db/db_vrfy_stub.c b/db/db/db_vrfy_stub.c
index 9bef99be0..efbd233dc 100644
--- a/db/db/db_vrfy_stub.c
+++ b/db/db/db_vrfy_stub.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: db_vrfy_stub.c,v 12.5 2006/08/24 14:45:16 bostic Exp $
+ * $Id: db_vrfy_stub.c,v 12.7 2007/05/17 15:14:57 bostic Exp $
*/
#ifndef HAVE_VERIFY
diff --git a/db/db/db_vrfyutil.c b/db/db/db_vrfyutil.c
index 414814079..53ca7860f 100644
--- a/db/db/db_vrfyutil.c
+++ b/db/db/db_vrfyutil.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: db_vrfyutil.c,v 12.12 2006/09/11 15:13:24 bostic Exp $
+ * $Id: db_vrfyutil.c,v 12.16 2007/05/17 15:14:57 bostic Exp $
*/
#include "db_config.h"
@@ -40,7 +39,7 @@ __db_vrfy_dbinfo_create(dbenv, pgsize, vdpp)
if ((ret = __os_calloc(NULL, 1, sizeof(VRFY_DBINFO), &vdp)) != 0)
goto err;
- if ((ret = db_create(&cdbp, dbenv, 0)) != 0)
+ if ((ret = __db_create_internal(&cdbp, dbenv, 0)) != 0)
goto err;
if ((ret = __db_set_flags(cdbp, DB_DUP)) != 0)
@@ -57,7 +56,7 @@ __db_vrfy_dbinfo_create(dbenv, pgsize, vdpp)
NULL, NULL, NULL, DB_BTREE, DB_CREATE, 0600, PGNO_BASE_MD)) != 0)
goto err;
- if ((ret = db_create(&pgdbp, dbenv, 0)) != 0)
+ if ((ret = __db_create_internal(&pgdbp, dbenv, 0)) != 0)
goto err;
if ((ret = __db_set_pagesize(pgdbp, pgsize)) != 0)
@@ -274,7 +273,7 @@ __db_vrfy_pgset(dbenv, pgsize, dbpp)
DB *dbp;
int ret;
- if ((ret = db_create(&dbp, dbenv, 0)) != 0)
+ if ((ret = __db_create_internal(&dbp, dbenv, 0)) != 0)
return (ret);
if ((ret = __db_set_pagesize(dbp, pgsize)) != 0)
goto err;
@@ -389,7 +388,7 @@ __db_vrfy_pgset_next(dbc, pgnop)
key.data = &pgno;
key.ulen = sizeof(db_pgno_t);
- if ((ret = __db_c_get(dbc, &key, &data, DB_NEXT)) != 0)
+ if ((ret = __dbc_get(dbc, &key, &data, DB_NEXT)) != 0)
return (ret);
DB_ASSERT(dbc->dbp->dbenv, key.size == sizeof(db_pgno_t));
@@ -511,7 +510,7 @@ __db_vrfy_childinc(dbc, cip)
data.data = cip;
data.size = sizeof(VRFY_CHILDINFO);
- return (__db_c_put(dbc, &key, &data, DB_CURRENT));
+ return (__dbc_put(dbc, &key, &data, DB_CURRENT));
}
/*
@@ -536,7 +535,7 @@ __db_vrfy_ccset(dbc, pgno, cipp)
key.data = &pgno;
key.size = sizeof(db_pgno_t);
- if ((ret = __db_c_get(dbc, &key, &data, DB_SET)) != 0)
+ if ((ret = __dbc_get(dbc, &key, &data, DB_SET)) != 0)
return (ret);
DB_ASSERT(dbc->dbp->dbenv, data.size == sizeof(VRFY_CHILDINFO));
@@ -564,7 +563,7 @@ __db_vrfy_ccnext(dbc, cipp)
memset(&key, 0, sizeof(DBT));
memset(&data, 0, sizeof(DBT));
- if ((ret = __db_c_get(dbc, &key, &data, DB_NEXT_DUP)) != 0)
+ if ((ret = __dbc_get(dbc, &key, &data, DB_NEXT_DUP)) != 0)
return (ret);
DB_ASSERT(dbc->dbp->dbenv, data.size == sizeof(VRFY_CHILDINFO));
@@ -589,7 +588,7 @@ __db_vrfy_ccclose(dbc)
DBC *dbc;
{
- return (__db_c_close(dbc));
+ return (__dbc_close(dbc));
}
/*
@@ -632,7 +631,7 @@ __db_salvage_init(vdp)
DB *dbp;
int ret;
- if ((ret = db_create(&dbp, NULL, 0)) != 0)
+ if ((ret = __db_create_internal(&dbp, NULL, 0)) != 0)
return (ret);
if ((ret = __db_set_pagesize(dbp, 1024)) != 0)
@@ -692,14 +691,14 @@ __db_salvage_getnext(vdp, dbcp, pgnop, pgtypep, skip_overflow)
(ret = __db_cursor(dbp, NULL, dbcp, 0)) != 0)
return (ret);
- while ((ret = __db_c_get(*dbcp, &key, &data, DB_NEXT)) == 0) {
+ while ((ret = __dbc_get(*dbcp, &key, &data, DB_NEXT)) == 0) {
DB_ASSERT(dbp->dbenv, data.size == sizeof(u_int32_t));
memcpy(&pgtype, data.data, sizeof(pgtype));
if (skip_overflow && pgtype == SALVAGE_OVERFLOW)
continue;
- if ((ret = __db_c_del(*dbcp, 0)) != 0)
+ if ((ret = __dbc_del(*dbcp, 0)) != 0)
return (ret);
if (pgtype != SALVAGE_IGNORE) {
DB_ASSERT(dbp->dbenv, key.size == sizeof(db_pgno_t));
diff --git a/db/db185/db185.c b/db/db185/db185.c
index 484b43676..58d2fe596 100644
--- a/db/db185/db185.c
+++ b/db/db185/db185.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: db185.c,v 12.7 2006/08/31 17:59:25 bostic Exp $
+ * $Id: db185.c,v 12.11 2007/05/17 15:14:57 bostic Exp $
*/
#include "db_config.h"
@@ -13,7 +12,7 @@
#ifndef lint
static const char copyright[] =
- "Copyright (c) 1996-2006\nOracle Corporation. All rights reserved.\n";
+ "Copyright (c) 1996,2007 Oracle. All rights reserved.\n";
#endif
#include "db185_int.h"
@@ -157,6 +156,15 @@ __db185_open(file, oflags, mode, type, openinfo)
file = NULL;
}
+ /*
+ * !!!
+ * Set the O_CREAT flag in case the application didn't -- in DB
+ * 1.85 the backing file was the file being created and it may
+ * exist, but DB 2.X is creating a temporary Btree database and
+ * we need the create flag to do that.
+ */
+ oflags |= O_CREAT;
+
if ((ri = openinfo) != NULL) {
/*
* !!!
@@ -279,7 +287,7 @@ db185_del(db185p, key185, flags)
if (flags & ~R_CURSOR)
goto einval;
if (flags & R_CURSOR)
- ret = db185p->dbc->c_del(db185p->dbc, 0);
+ ret = db185p->dbc->del(db185p->dbc, 0);
else
ret = dbp->del(dbp, NULL, &key, 0);
@@ -378,7 +386,7 @@ db185_put(db185p, key185, data185, flags)
ret = dbp->put(dbp, NULL, &key, &data, 0);
break;
case R_CURSOR:
- ret = db185p->dbc->c_put(db185p->dbc, &key, &data, DB_CURRENT);
+ ret = db185p->dbc->put(db185p->dbc, &key, &data, DB_CURRENT);
break;
case R_IAFTER:
case R_IBEFORE:
@@ -388,14 +396,14 @@ db185_put(db185p, key185, data185, flags)
if ((ret = dbp->cursor(dbp, NULL, &dbcp_put, 0)) != 0)
break;
if ((ret =
- dbcp_put->c_get(dbcp_put, &key, &data, DB_SET)) == 0) {
+ dbcp_put->get(dbcp_put, &key, &data, DB_SET)) == 0) {
memset(&data, 0, sizeof(data));
data.data = data185->data;
data.size = data185->size;
- ret = dbcp_put->c_put(dbcp_put, &key, &data,
+ ret = dbcp_put->put(dbcp_put, &key, &data,
flags == R_IAFTER ? DB_AFTER : DB_BEFORE);
}
- if ((t_ret = dbcp_put->c_close(dbcp_put)) != 0 && ret == 0)
+ if ((t_ret = dbcp_put->close(dbcp_put)) != 0 && ret == 0)
ret = t_ret;
break;
case R_NOOVERWRITE:
@@ -408,7 +416,7 @@ db185_put(db185p, key185, data185, flags)
if ((ret = dbp->put(dbp, NULL, &key, &data, 0)) != 0)
break;
ret =
- db185p->dbc->c_get(db185p->dbc, &key, &data, DB_SET_RANGE);
+ db185p->dbc->get(db185p->dbc, &key, &data, DB_SET_RANGE);
break;
default:
goto einval;
@@ -472,7 +480,7 @@ db185_seq(db185p, key185, data185, flags)
default:
goto einval;
}
- switch (ret = db185p->dbc->c_get(db185p->dbc, &key, &data, flags)) {
+ switch (ret = db185p->dbc->get(db185p->dbc, &key, &data, flags)) {
case 0:
key185->data = key.data;
key185->size = key.size;
diff --git a/db/db185/db185_int.h b/db/db185/db185_int.h
deleted file mode 100644
index 172019d3f..000000000
--- a/db/db185/db185_int.h
+++ /dev/null
@@ -1,129 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997, 1998, 1999, 2000
- * Sleepycat Software. All rights reserved.
- */
-/*
- * Copyright (c) 1990, 1993, 1994, 1995, 1996
- * Keith Bostic. All rights reserved.
- */
-/*
- * Copyright (c) 1990, 1993, 1994
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $Id: db185_int.h,v 11.7 2001/01/22 22:22:46 krinsky Exp $
- */
-
-#ifndef _DB185_H_
-#define _DB185_H_
-
-/* Routine flags. */
-#define R_CURSOR 1 /* del, put, seq */
-#define __R_UNUSED 2 /* UNUSED */
-#define R_FIRST 3 /* seq */
-#define R_IAFTER 4 /* put (RECNO) */
-#define R_IBEFORE 5 /* put (RECNO) */
-#define R_LAST 6 /* seq (BTREE, RECNO) */
-#define R_NEXT 7 /* seq */
-#define R_NOOVERWRITE 8 /* put */
-#define R_PREV 9 /* seq (BTREE, RECNO) */
-#define R_SETCURSOR 10 /* put (RECNO) */
-#define R_RECNOSYNC 11 /* sync (RECNO) */
-
-typedef struct {
- void *data; /* data */
- size_t size; /* data length */
-} DBT185;
-
-/* Access method description structure. */
-typedef struct __db185 {
- DBTYPE type; /* Underlying db type. */
- int (*close) __P((struct __db185 *));
- int (*del) __P((const struct __db185 *, const DBT185 *, u_int));
- int (*get)
- __P((const struct __db185 *, const DBT185 *, DBT185 *, u_int));
- int (*put)
- __P((const struct __db185 *, DBT185 *, const DBT185 *, u_int));
- int (*seq)
- __P((const struct __db185 *, DBT185 *, DBT185 *, u_int));
- int (*sync) __P((const struct __db185 *, u_int));
- DB *dbp; /* DB structure. Was void *internal. */
- int (*fd) __P((const struct __db185 *));
-
- /*
- * !!!
- * The following elements added to the end of the DB 1.85 DB
- * structure.
- */
- DBC *dbc; /* DB cursor. */
- /* Various callback functions. */
- int (*compare) __P((const DBT *, const DBT *));
- size_t (*prefix) __P((const DBT *, const DBT *));
- u_int32_t (*hash) __P((const void *, size_t));
-} DB185;
-
-/* Structure used to pass parameters to the btree routines. */
-typedef struct {
-#define R_DUP 0x01 /* duplicate keys */
- u_int32_t flags;
- u_int32_t cachesize; /* bytes to cache */
- u_int32_t maxkeypage; /* maximum keys per page */
- u_int32_t minkeypage; /* minimum keys per page */
- u_int32_t psize; /* page size */
- int (*compare) /* comparison function */
- __P((const DBT *, const DBT *));
- size_t (*prefix) /* prefix function */
- __P((const DBT *, const DBT *));
- int lorder; /* byte order */
-} BTREEINFO;
-
-/* Structure used to pass parameters to the hashing routines. */
-typedef struct {
- u_int32_t bsize; /* bucket size */
- u_int32_t ffactor; /* fill factor */
- u_int32_t nelem; /* number of elements */
- u_int32_t cachesize; /* bytes to cache */
- u_int32_t /* hash function */
- (*hash) __P((const void *, size_t));
- int lorder; /* byte order */
-} HASHINFO;
-
-/* Structure used to pass parameters to the record routines. */
-typedef struct {
-#define R_FIXEDLEN 0x01 /* fixed-length records */
-#define R_NOKEY 0x02 /* key not required */
-#define R_SNAPSHOT 0x04 /* snapshot the input */
- u_int32_t flags;
- u_int32_t cachesize; /* bytes to cache */
- u_int32_t psize; /* page size */
- int lorder; /* byte order */
- size_t reclen; /* record length (fixed-length records) */
- u_char bval; /* delimiting byte (variable-length records */
- char *bfname; /* btree file name */
-} RECNOINFO;
-#endif /* !_DB185_H_ */
diff --git a/db/db185/db185_int.in b/db/db185/db185_int.in
index acc44c91a..c3d924869 100644
--- a/db/db185/db185_int.in
+++ b/db/db185/db185_int.in
@@ -1,8 +1,7 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*/
/*
* Copyright (c) 1990, 1993, 1994, 1995, 1996
@@ -36,7 +35,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: db185_int.in,v 12.4 2006/08/24 14:45:17 bostic Exp $
+ * $Id: db185_int.in,v 12.6 2007/05/17 15:14:57 bostic Exp $
*/
#ifndef _DB185_INT_H_
diff --git a/db/db_archive/db_archive.c b/db/db_archive/db_archive.c
index 48094e20f..3460ed3a4 100644
--- a/db/db_archive/db_archive.c
+++ b/db/db_archive/db_archive.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: db_archive.c,v 12.9 2006/08/26 09:23:00 bostic Exp $
+ * $Id: db_archive.c,v 12.12 2007/05/17 15:14:58 bostic Exp $
*/
#include "db_config.h"
@@ -13,7 +12,7 @@
#ifndef lint
static const char copyright[] =
- "Copyright (c) 1996-2006\nOracle Corporation. All rights reserved.\n";
+ "Copyright (c) 1996,2007 Oracle. All rights reserved.\n";
#endif
int main __P((int, char *[]));
@@ -34,7 +33,7 @@ main(argc, argv)
int ch, exitval, ret, verbose;
char **file, *home, **list, *passwd;
- if ((progname = strrchr(argv[0], '/')) == NULL)
+ if ((progname = __db_rpath(argv[0])) == NULL)
progname = argv[0];
else
++progname;
diff --git a/db/db_checkpoint/db_checkpoint.c b/db/db_checkpoint/db_checkpoint.c
index df0e5e286..076be2bf2 100644
--- a/db/db_checkpoint/db_checkpoint.c
+++ b/db/db_checkpoint/db_checkpoint.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: db_checkpoint.c,v 12.15 2006/08/26 09:23:25 bostic Exp $
+ * $Id: db_checkpoint.c,v 12.18 2007/05/17 15:14:58 bostic Exp $
*/
#include "db_config.h"
@@ -13,7 +12,7 @@
#ifndef lint
static const char copyright[] =
- "Copyright (c) 1996-2006\nOracle Corporation. All rights reserved.\n";
+ "Copyright (c) 1996,2007 Oracle. All rights reserved.\n";
#endif
int main __P((int, char *[]));
@@ -36,7 +35,7 @@ main(argc, argv)
int ch, exitval, once, ret, verbose;
char *home, *logfile, *passwd, time_buf[CTIME_BUFLEN];
- if ((progname = strrchr(argv[0], '/')) == NULL)
+ if ((progname = __db_rpath(argv[0])) == NULL)
progname = argv[0];
else
++progname;
diff --git a/db/db_codegen/code_capi.c b/db/db_codegen/code_capi.c
new file mode 100644
index 000000000..83615baab
--- /dev/null
+++ b/db/db_codegen/code_capi.c
@@ -0,0 +1,626 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
+ *
+ * $Id: code_capi.c,v 1.8 2007/06/05 14:06:25 bostic Exp $
+ */
+
+#include "db_codegen.h"
+
+static FILE *of; /* Output stream. */
+
+static void api_c_callback __P((DB_OBJ *));
+static void api_c_compare __P((DB_OBJ *));
+static void api_c_data __P((void));
+static void api_c_db __P((void));
+static void api_c_env __P((void));
+static void api_c_header __P((void));
+static void api_c_public_data __P((void));
+static void api_c_public_func __P((void));
+static void api_c_shutdown __P((void));
+
+int
+api_c(ofname)
+ char *ofname;
+{
+ DB_OBJ *cur_db;
+ ENV_OBJ *cur_env;
+
+ /* Open the output file. */
+ if (ofname == NULL)
+ ofname = "application.c";
+ if ((of = fopen(ofname, "w")) == NULL) {
+ fprintf(stderr,
+ "%s: %s: %s\n", progname, ofname, strerror(errno));
+ return (1);
+ }
+
+ /* File header. */
+ api_c_header();
+
+ /* Public information for the application. */
+ api_c_public_data();
+
+ /* Secondary callback functions. */
+ TAILQ_FOREACH(cur_env, &env_tree, q)
+ TAILQ_FOREACH(cur_db, &cur_env->dbq, q)
+ if (cur_db->primary != NULL)
+ api_c_callback(cur_db);
+
+ /* Integral type comparison functions. */
+ TAILQ_FOREACH(cur_env, &env_tree, q)
+ TAILQ_FOREACH(cur_db, &cur_env->dbq, q)
+ if (cur_db->key_type != NULL)
+ api_c_compare(cur_db);
+
+ /* Data structures. */
+ api_c_data();
+
+ /* Initialization functions. */
+ api_c_public_func();
+
+ /* Open the environments. */
+ api_c_env();
+
+ /* Open the databases. */
+ api_c_db();
+
+ /* Shutdown gracefully. */
+ api_c_shutdown();
+
+ return (0);
+}
+
+static void
+api_c_header()
+{
+ /* Include files. */
+ fprintf(of, "\
+#include <sys/types.h>\n\
+#include <sys/stat.h>\n\
+\n\
+#include <errno.h>\n\
+#include <stdlib.h>\n\
+#include <string.h>\n\
+\n\
+#ifdef _WIN32\n\
+#include <direct.h>\n\
+\n\
+#define\tmkdir(dir, perm)\t_mkdir(dir)\n\
+#endif\n\
+\n\
+#include \"db.h\"\n\n");
+}
+
+static void
+api_c_public_data()
+{
+ ENV_OBJ *cur_env;
+ DB_OBJ *cur_db;
+
+ /*
+ * Global handles.
+ *
+ * XXX
+ * Maybe we should put these all into a structure with some
+ * access methods?
+ */
+ fprintf(of, "\
+/* Global environment and database handles for use by the application */\n");
+ TAILQ_FOREACH(cur_env, &env_tree, q) {
+ if (!cur_env->standalone)
+ fprintf(of,
+ "DB_ENV\t*%s_dbenv;\t\t\t/* Database environment handle */\n",
+ cur_env->prefix);
+ TAILQ_FOREACH(cur_db, &cur_env->dbq, q)
+ if (cur_env->standalone)
+ fprintf(of,
+ "DB\t*%s;\t\t\t/* Database handle */\n",
+ cur_db->name);
+ else
+ fprintf(of,
+ "DB\t*%s_%s;\t\t\t/* Database handle */\n",
+ cur_env->prefix, cur_db->name);
+ }
+
+ fprintf(of, "\
+\n\
+/* Public functions for use by the application */\n\
+int bdb_startup(void);\n\
+int bdb_shutdown(void);\n");
+}
+
+static void
+api_c_data()
+{
+ DB_OBJ *cur_db;
+ ENV_OBJ *cur_env;
+ int first;
+
+ fprintf(of, "\
+\n\
+/* DB_ENV initialization structures */\n\
+typedef struct {\n\
+\tDB_ENV **envpp;\n\
+\tchar *home;\n\
+\tu_int32_t gbytes;\n\
+\tu_int32_t bytes;\n\
+\tu_int32_t ncache;\n\
+\tint private;\n\
+\tint transaction;\n\
+} env_list_t;\n\
+static env_list_t env_list[] = {\n");
+
+ first = 1;
+ TAILQ_FOREACH(cur_env, &env_tree, q)
+ if (!cur_env->standalone) {
+ fprintf(of,
+ "%s\t{ &%s_dbenv, \"%s\", %lu, %lu, %lu, %d, %d",
+ first ? "" : " },\n",
+ cur_env->prefix,
+ cur_env->home,
+ (u_long)cur_env->gbytes,
+ (u_long)cur_env->bytes,
+ (u_long)cur_env->ncache,
+ cur_env->private,
+ cur_env->transaction);
+ first = 0;
+ }
+ fprintf(of, " }\n};\n\n");
+
+ fprintf(of, "\
+/* DB initialization structures */\n\
+typedef struct db_list_t {\n\
+\tDB_ENV **envpp;\n\
+\tDB **dbpp;\n\
+\tchar *name;\n\
+\tDBTYPE type;\n\
+\tu_int32_t extentsize;\n\
+\tu_int32_t pagesize;\n\
+\tu_int32_t re_len;\n\
+\tint (*key_compare)(DB *, const DBT *, const DBT *);\n\
+\tDB **primaryp;\n\
+\tint (*secondary_callback)(DB *, const DBT *, const DBT *, DBT *);\n\
+\tint dupsort;\n\
+\tint recnum;\n\
+\tint transaction;\n\
+} db_list_t;\n\
+static db_list_t db_list[] = {\n");
+
+ first = 1;
+ TAILQ_FOREACH(cur_env, &env_tree, q)
+ TAILQ_FOREACH(cur_db, &cur_env->dbq, q) {
+ fprintf(of, "\
+%s\t{ %s%s%s, &%s%s%s, \"%s\", %s, %lu, %lu, %lu,\n\
+\t\t%s%s%s, %s%s%s%s, %s%s%s, %d, %d, %d",
+ first ? "" : " },\n",
+ cur_env->standalone ? "" : "&",
+ cur_env->standalone ? "NULL" : cur_env->prefix,
+ cur_env->standalone ? "" : "_dbenv",
+ cur_env->prefix == NULL ?
+ cur_db->name : cur_env->prefix,
+ cur_env->prefix == NULL ? "" : "_",
+ cur_env->prefix == NULL ? "" : cur_db->name,
+ cur_db->name,
+ cur_db->dbtype,
+ (u_long)cur_db->extentsize,
+ (u_long)cur_db->pagesize,
+ (u_long)cur_db->re_len,
+ cur_db->key_type == NULL ? "NULL" : "bdb_",
+ cur_db->key_type == NULL ? "" : cur_db->key_type,
+ cur_db->key_type == NULL ? "" : "_compare",
+ cur_db->primary == NULL ? "NULL" : "&",
+ cur_db->primary == NULL ? "" : cur_env->prefix,
+ cur_db->primary == NULL ? "" : "_",
+ cur_db->primary == NULL ? "" : cur_db->primary,
+ cur_db->primary == NULL ? "NULL" : "bdb_",
+ cur_db->primary == NULL ? "" : cur_db->name,
+ cur_db->primary == NULL ? "" : "_callback",
+ cur_db->dupsort,
+ cur_db->recnum,
+ cur_db->transaction);
+ first = 0;
+ }
+ fprintf(of, " }\n};\n\n");
+}
+
+static void
+api_c_public_func()
+{
+ fprintf(of, "\
+#ifdef BUILD_STANDALONE\n\
+int\n\
+main()\n\
+{\n\
+\treturn (bdb_startup() && bdb_shutdown() ? EXIT_FAILURE : EXIT_SUCCESS);\n\
+}\n\
+#endif\n\n");
+
+ /* Function prototypes. */
+ fprintf(of, "\
+static int bdb_env_startup(env_list_t *);\n\
+static int bdb_env_shutdown(env_list_t *);\n\
+static int bdb_db_startup(db_list_t *);\n\
+static int bdb_db_shutdown(db_list_t *);\n\
+\n");
+
+ fprintf(of, "\
+/*\n\
+ * bdb_startup --\n\
+ *\tStart up the environments and databases.\n\
+ */\n\
+int\nbdb_startup()\n{\n\
+\tu_int i;\n\
+\n\
+\t/* Open environments. */\n\
+\tfor (i = 0; i < sizeof(env_list) / sizeof(env_list[0]); ++i)\n\
+\t\tif (bdb_env_startup(&env_list[i]))\n\
+\t\t\treturn (1);\n\
+\t/* Open primary databases. */\n\
+\tfor (i = 0; i < sizeof(db_list) / sizeof(db_list[0]); ++i)\n\
+\t\tif (db_list[i].primaryp == NULL &&\n\
+\t\t bdb_db_startup(&db_list[i]))\n\
+\t\t\treturn (1);\n\
+\t/* Open secondary databases. */\n\
+\tfor (i = 0; i < sizeof(db_list) / sizeof(db_list[0]); ++i)\n\
+\t\tif (db_list[i].primaryp != NULL &&\n\
+\t\t bdb_db_startup(&db_list[i]))\n\
+\t\t\treturn (1);\n\
+\treturn (0);\n\
+}\n");
+
+ fprintf(of, "\
+\n\
+/*\n\
+ * bdb_shutdown --\n\
+ *\tShut down the environments and databases.\n\
+ */\n\
+int\nbdb_shutdown()\n{\n\
+\tu_int i;\n\
+\n\
+\t/* Close secondary databases. */\n\
+\tfor (i = 0; i < sizeof(db_list) / sizeof(db_list[0]); ++i)\n\
+\t\tif (db_list[i].primaryp != NULL &&\n\
+\t\t bdb_db_shutdown(&db_list[i]))\n\
+\t\t\treturn (1);\n\
+\t/* Close primary databases. */\n\
+\tfor (i = 0; i < sizeof(db_list) / sizeof(db_list[0]); ++i)\n\
+\t\tif (db_list[i].primaryp == NULL &&\n\
+\t\t bdb_db_shutdown(&db_list[i]))\n\
+\t\t\treturn (1);\n\
+\t/* Close environments. */\n\
+\tfor (i = 0; i < sizeof(env_list) / sizeof(env_list[0]); ++i)\n\
+\t\tif (bdb_env_shutdown(&env_list[i]))\n\
+\t\t\treturn (1);\n\
+\treturn (0);\n\
+}\n");
+}
+
+static void
+api_c_env()
+{
+ fprintf(of, "\
+\n\
+static int\nbdb_env_startup(env_list_t *ep)\n{\n\
+\tstruct stat sb;\n\
+\tDB_ENV *dbenv;\n\
+\tu_int32_t open_flags;\n\
+\tint ret;\n\
+\n\
+\t/*\n\
+\t * If the directory doesn't exist, create it with permissions limited\n\
+\t * to the owner. Assume errors caused by the directory not existing;\n\
+\t * we'd like to avoid interpreting system errors and it won't hurt to\n\
+\t * attempt to create an existing directory.\n\
+\t *\n\
+\t * !!!\n\
+\t * We use octal for the permissions, nothing else is portable.\n\
+\t */\n\
+\tif (stat(ep->home, &sb) != 0)\n\
+\t\t(void)mkdir(ep->home, 0700);\n\
+\n\
+\t/*\n\
+\t * If the environment is not transactional, remove and re-create it.\n\
+\t */\n\
+\tif (!ep->transaction) {\n\
+\t\tif ((ret = db_env_create(&dbenv, 0)) != 0) {\n\
+\t\t\tfprintf(stderr, \"db_env_create: %%s\", db_strerror(ret));\n\
+\t\t\treturn (1);\n\
+\t\t}\n\
+\t\tif ((ret = dbenv->remove(dbenv, ep->home, DB_FORCE)) != 0) {\n\
+\t\t\tdbenv->err(dbenv, ret,\n\
+\t\t\t \"DB_ENV->remove: %%s\", ep->home);\n\
+\t\t\tgoto err;\n\
+\t\t}\n\
+\t}\n\n");
+
+ fprintf(of, "\
+\t/*\n\
+\t * Create the DB_ENV handle and initialize error reporting.\n\
+\t */\n\
+\tif ((ret = db_env_create(&dbenv, 0)) != 0) {\n\
+\t\tfprintf(stderr, \"db_env_create: %%s\", db_strerror(ret));\n\
+\t\treturn (1);\n\
+\t}\n");
+
+ fprintf(of, "\
+\tdbenv->set_errpfx(dbenv, ep->home);\n\
+\tdbenv->set_errfile(dbenv, stderr);\n\n");
+
+ fprintf(of, "\
+\t /* Configure the cache size. */\n\
+\tif ((ep->gbytes != 0 || ep->bytes != 0) &&\n\
+\t (ret = dbenv->set_cachesize(dbenv,\n\
+\t ep->gbytes, ep->bytes, ep->ncache)) != 0) {\n\
+\t\tdbenv->err(dbenv, ret, \"DB_ENV->set_cachesize\");\n\
+\t\tgoto err;\n\
+\t}\n");
+
+ fprintf(of, "\
+\n\
+\t/*\n\
+\t * Open the environment.\n\
+\t */\n\
+\topen_flags = DB_CREATE | DB_INIT_MPOOL | DB_THREAD;\n\
+\tif (ep->private)\n\
+\t open_flags |= DB_PRIVATE;\n\
+\tif (ep->transaction)\n\
+\t open_flags |= DB_INIT_LOCK |\n\
+\t DB_INIT_LOG | DB_INIT_TXN | DB_RECOVER;\n\
+\tif ((ret = dbenv->open(dbenv, ep->home, open_flags, 0)) != 0) {\n\
+\t dbenv->err(dbenv, ret, \"DB_ENV->open: %%s\", ep->home);\n\
+\t goto err;\n\
+\t}\n\
+\n\
+\t*ep->envpp = dbenv;\n\
+\treturn (0);\n\
+\n\
+err:\t(void)dbenv->close(dbenv, 0);\n\
+\treturn (1);\n\
+}");
+}
+
+static void
+api_c_db()
+{
+ fprintf(of, "\
+\n\
+\nstatic int\nbdb_db_startup(db_list_t *dp)\n\
+{\n\
+\tDB_ENV *dbenv;\n\
+\tDB *dbp;\n\
+\tint ret;\n\
+\n\
+\tdbenv = dp->envpp == NULL ? NULL : *dp->envpp;\n\
+\n\
+\t/*\n\
+\t * If the database is not transactional, remove it and re-create it.\n\
+\t */\n\
+\tif (!dp->transaction) {\n\
+\t\tif ((ret = db_create(&dbp, dbenv, 0)) != 0) {\n\
+\t\t\tif (dbenv == NULL)\n\
+\t\t\t\tfprintf(stderr,\n\
+\t\t\t\t \"db_create: %%s\\n\", db_strerror(ret));\n\
+\t\t\telse\n\
+\t\t\t\tdbenv->err(dbenv, ret, \"db_create\");\n\
+\t\t\treturn (1);\n\
+\t\t}\n\
+\t\tif ((ret = dbp->remove(\n\
+\t\t dbp, dp->name, NULL, 0)) != 0 && ret != ENOENT) {\n\
+\t\t\tif (dbenv == NULL)\n\
+\t\t\t\tfprintf(stderr,\n\
+\t\t\t\t \"DB->remove: %%s: %%s\\n\",\n\
+\t\t\t\t dp->name, db_strerror(ret));\n\
+\t\t\telse\n\
+\t\t\t\tdbenv->err(\n\
+\t\t\t\t dbenv, ret, \"DB->remove: %%s\", dp->name);\n\
+\t\t\treturn (1);\n\
+\t\t}\n\
+\t}\n");
+
+ fprintf(of, "\
+\n\
+\tif ((ret = db_create(&dbp, dbenv, 0)) != 0) {\n\
+\t\tif (dbenv == NULL)\n\
+\t\t\tfprintf(stderr, \"db_create: %%s\\n\", db_strerror(ret));\n\
+\t\telse\n\
+\t\t\tdbenv->err(dbenv, ret, \"db_create\");\n\
+\t\treturn (1);\n\
+\t}\n\
+\tif (dbenv == NULL) {\n\
+\t\tdbp->set_errpfx(dbp, dp->name);\n\
+\t\tdbp->set_errfile(dbp, stderr);\n\
+\t}\n");
+
+ fprintf(of, "\
+\n\
+\tif (dp->dupsort && (ret = dbp->set_flags(dbp, DB_DUPSORT)) != 0) {\n\
+\t\tdbp->err(dbp, ret, \"DB->set_flags: DB_DUPSORT: %%s\", dp->name);\n\
+\t\tgoto err;\n\
+\t}\n");
+
+ fprintf(of, "\
+\n\
+\tif (dp->recnum && (ret = dbp->set_flags(dbp, DB_RECNUM)) != 0) {\n\
+\t\tdbp->err(dbp, ret, \"DB->set_flags: DB_RECNUM: %%s\", dp->name);\n\
+\t\tgoto err;\n\
+\t}\n");
+
+ fprintf(of, "\
+\n\
+\tif (dp->extentsize != 0 &&\n\
+\t (ret = dbp->set_q_extentsize(dbp, dp->extentsize)) != 0) {\n\
+\t\tdbp->err(dbp, ret,\n\
+\t\t \"DB->set_q_extentsize: %%lu: %%s\",\n\
+\t\t (u_long)dp->extentsize, dp->name);\n\
+\t\tgoto err;\n\
+\t}\n");
+
+ fprintf(of, "\
+\n\
+\tif (dp->pagesize != 0 &&\n\
+\t (ret = dbp->set_pagesize(dbp, dp->pagesize)) != 0) {\n\
+\t\tdbp->err(dbp, ret,\n\
+\t\t \"DB->set_pagesize: %%lu: %%s\",\n\
+\t\t (u_long)dp->pagesize, dp->name);\n\
+\t\tgoto err;\n\
+\t}\n");
+
+ fprintf(of, "\
+\n\
+\tif (dp->re_len != 0 &&\n\
+\t (ret = dbp->set_re_len(dbp, dp->re_len)) != 0) {\n\
+\t\tdbp->err(dbp, ret,\n\
+\t\t \"DB->set_re_len: %%lu: %%s\",\n\
+\t\t (u_long)dp->re_len, dp->name);\n\
+\t\tgoto err;\n\
+\t}\n");
+
+ fprintf(of, "\
+\n\
+\tif (dp->key_compare != NULL &&\n\
+\t (ret = dbp->set_bt_compare(dbp, dp->key_compare)) != 0) {\n\
+\t\tdbp->err(dbp, ret, \"DB->set_bt_compare\");\n\
+\t\tgoto err;\n\
+\t}\n");
+
+ fprintf(of, "\
+\n\
+\tif ((ret = dbp->open(dbp, NULL, dp->name, NULL, dp->type,\n\
+\t (dp->transaction ? DB_AUTO_COMMIT : 0) |\n\
+\t DB_CREATE | DB_THREAD, 0)) != 0) {\n\
+\t\tdbp->err(dbp, ret, \"DB->open: %%s\", dp->name);\n\
+\t\tgoto err;\n\
+\t}\n");
+
+ fprintf(of, "\
+\n\
+\tif (dp->primaryp != NULL &&\n\
+\t (ret = dbp->associate(*dp->primaryp,\n\
+\t NULL, dbp, dp->secondary_callback, DB_CREATE)) != 0) {\n\
+\t\tdbp->err(dbp, ret, \"DB->associate: %%s\", dp->name);\n\
+\t\tgoto err;\n\
+\t}\n");
+
+ fprintf(of, "\
+\n\
+\t*dp->dbpp = dbp;\n\
+\treturn (0);\n\
+\nerr:\t(void)dbp->close(dbp, 0);\n\
+\treturn (1);\n\
+}\n");
+}
+
+static void
+api_c_callback(cur_db)
+ DB_OBJ *cur_db;
+{
+ fprintf(of, "\
+\n\
+static int\nbdb_%s_callback(DB *secondary, const DBT *key, const DBT *data , DBT *result)\n\
+{\n", cur_db->name);
+
+ if (cur_db->custom) {
+ fprintf(of, "\
+\tsecondary->errx(secondary,\n\
+\t \"%s: missing callback comparison function\");\n\
+\treturn (DB_DONOTINDEX);\n\
+}\n", cur_db->name);
+ fprintf(stderr,
+ "Warning: you must write a comparison function for the %s database\n",
+ cur_db->name);
+ } else
+ fprintf(of, "\
+\tresult->data = &((u_int8_t *)data->data)[%d];\n\
+\tresult->size = %d;\n\
+\treturn (0);\n\
+}\n", cur_db->secondary_off, cur_db->secondary_len);
+}
+
+static void
+api_c_compare(cur_db)
+ DB_OBJ *cur_db;
+{
+ DB_OBJ *t_db;
+ ENV_OBJ *t_env;
+
+ /*
+ * Check to see if we've already written this one.
+ *
+ * !!!
+ * N^2, but like I care.
+ */
+ TAILQ_FOREACH(t_env, &env_tree, q)
+ TAILQ_FOREACH(t_db, &t_env->dbq, q) {
+ if (t_db == cur_db)
+ goto output;
+ if (t_db->key_type == NULL)
+ continue;
+ if (strcasecmp(t_db->key_type, cur_db->key_type) == 0)
+ return;
+ }
+
+ /* NOTREACHED */
+ return;
+
+output: fprintf(of, "\
+\n\
+static int bdb_%s_compare(DB *, const DBT *, const DBT *);\n\
+\n\
+static int\nbdb_%s_compare(DB *dbp, const DBT *a, const DBT *b)\n\
+{\n\
+\t%s ai, bi;\n\
+\n\
+\tmemcpy(&ai, a->data, sizeof(ai));\n\
+\tmemcpy(&bi, b->data, sizeof(bi));\n\
+\treturn (ai < bi ? -1 : (ai > bi ? 1 : 0));\n\
+}\n", cur_db->key_type, cur_db->key_type, cur_db->key_type);
+}
+
+static void
+api_c_shutdown()
+{
+ fprintf(of, "\
+\n\
+static int\nbdb_env_shutdown(env_list_t *ep)\n\
+{\n\
+\tDB_ENV *dbenv;\n\
+\tint ret;\n\
+\n\
+\tdbenv = ep->envpp == NULL ? NULL : *ep->envpp;\n\
+\tret = 0;\n\
+\n\
+\tif (dbenv != NULL && (ret = dbenv->close(dbenv, 0)) != 0)\n\
+\t\tfprintf(stderr,\n\
+\t\t \"DB_ENV->close: %%s: %%s\\n\", ep->home, db_strerror(ret));\n\
+\treturn (ret == 0 ? 0 : 1);\n\
+}\n");
+
+ fprintf(of, "\
+\n\
+static int\nbdb_db_shutdown(db_list_t *dp)\n\
+{\n\
+\tDB_ENV *dbenv;\n\
+\tDB *dbp;\n\
+\tint ret;\n\
+\n\
+\tdbenv = dp->envpp == NULL ? NULL : *dp->envpp;\n\
+\tdbp = *dp->dbpp;\n\
+\tret = 0;\n\
+\n\
+\t/*\n\
+\t * If the database is transactionally protected, close without writing;\n\
+\t * dirty pages; otherwise, flush dirty pages to disk.\n\
+\t */\n\
+\tif (dbp != NULL &&\n\
+\t (ret = dbp->close(dbp, dp->transaction ? DB_NOSYNC : 0)) != 0) {\n\
+\t\tif (dbenv == NULL)\n\
+\t\t\tfprintf(stderr,\n\
+\t\t\t \"DB->close: %%s: %%s\\n\", dp->name, db_strerror(ret));\n\
+\t\telse\n\
+\t\t\tdbenv->err(dbenv, ret, \"DB->close: %%s\", dp->name);\n\
+\t}\n\
+\treturn (ret == 0 ? 0 : 1);\n\
+}\n");
+}
diff --git a/db/db_codegen/code_parse.c b/db/db_codegen/code_parse.c
new file mode 100644
index 000000000..4cb0858a2
--- /dev/null
+++ b/db/db_codegen/code_parse.c
@@ -0,0 +1,338 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 2006,2007 Oracle. All rights reserved.
+ *
+ * $Id: code_parse.c,v 1.5 2007/05/17 15:14:58 bostic Exp $
+ */
+
+#include "db_codegen.h"
+
+static enum /* Parse state */
+ { PS_UNSET, PS_ENV_SET, PS_DB_SET } parse_status;
+static ENV_OBJ *cur_env; /* Current objects */
+static DB_OBJ *cur_db;
+
+static int parse_line __P((char *, int));
+
+int
+parse_input(fp)
+ FILE *fp;
+{
+ int lc;
+ char *p, *t, buf[256];
+
+ parse_status = PS_UNSET;
+
+ for (lc = 1; fgets(buf, sizeof(buf), fp) != NULL; ++lc) {
+ if ((p = strchr(buf, '\n')) != NULL)
+ *p = '\0';
+ else if (strlen(buf) + 1 == sizeof(buf)) {
+ fprintf(stderr, "%s: %d: line too long", progname, lc);
+ return (1);
+ }
+
+ /* Skip leading whitespace. */
+ for (p = buf; *p != '\0' && isspace((int)*p); ++p)
+ ;
+
+ /*
+ * Any empty line or hash mark to the end of the line is
+ * a comment.
+ */
+ if (*p == '\0' || *p == '#')
+ continue;
+ for (t = p; *t != '\0' && *t != '#'; ++t)
+ ;
+ *t = '\0';
+
+ if (parse_line(p, lc))
+ return (1);
+ }
+ (void)fclose(fp);
+
+ return (0);
+}
+
+#undef CONFIG_SLOTS
+#define CONFIG_SLOTS 10
+
+#undef CONFIG_GET_UINT32
+#define CONFIG_GET_UINT32(s, vp) do { \
+ if (__db_getulong(NULL, progname, s, 0, UINT32_MAX, vp) != 0) \
+ return (EINVAL); \
+} while (0)
+
+static int
+parse_line(s, lc)
+ char *s;
+ int lc;
+{
+ u_long uv;
+ int nf;
+ char *argv[CONFIG_SLOTS], *p;
+
+ nf = __config_split(s, argv); /* Split the line by white-space. */
+
+ /*
+ * Environment keywords.
+ */
+ if (strcasecmp(argv[0], "environment") == 0) {
+ if (nf != 3 ||
+ strcmp(argv[2], "{") != 0 || parse_status != PS_UNSET)
+ goto format;
+
+ if (__os_calloc(NULL, 1, sizeof(*cur_env), &cur_env) ||
+ __os_strdup(NULL, argv[1], &cur_env->prefix))
+ goto memory;
+ TAILQ_INIT(&cur_env->dbq);
+
+ TAILQ_INSERT_TAIL(&env_tree, cur_env, q);
+
+ /*
+ * Default settings.
+ */
+ cur_env->home = ".";
+
+ parse_status = PS_ENV_SET;
+ return (0);
+ }
+ if (strcasecmp(argv[0], "home") == 0) {
+ if (nf != 2 || parse_status != PS_ENV_SET)
+ goto format;
+ if (__os_strdup(NULL, argv[1], &cur_env->home))
+ goto memory;
+ return (0);
+ }
+ if (strcasecmp(argv[0], "cachesize") == 0) {
+ if (nf != 4 || parse_status != PS_ENV_SET)
+ goto format;
+ CONFIG_GET_UINT32(argv[1], &uv);
+ cur_env->gbytes = uv;
+ CONFIG_GET_UINT32(argv[1], &uv);
+ cur_env->bytes = uv;
+ CONFIG_GET_UINT32(argv[1], &uv);
+ cur_env->ncache = uv;
+ return (0);
+ }
+ if (strcasecmp(argv[0], "private") == 0) {
+ if (nf != 1 || parse_status != PS_ENV_SET)
+ goto format;
+ cur_env->private = 1;
+ return (0);
+ }
+
+ /*
+ * Database keywords.
+ */
+ if (strcasecmp(argv[0], "database") == 0) {
+ if (nf != 3 ||
+ strcmp(argv[2], "{") != 0 || parse_status == PS_DB_SET)
+ goto format;
+
+ /*
+ * Databases can be specified standalone. If we don't have an
+ * environment, create a fake one to hold the information.
+ */
+ if (parse_status == PS_UNSET) {
+ if (__os_calloc(NULL, 1, sizeof(*cur_env), &cur_env))
+ goto memory;
+ TAILQ_INIT(&cur_env->dbq);
+ cur_env->standalone = 1;
+
+ TAILQ_INSERT_TAIL(&env_tree, cur_env, q);
+ }
+
+ if (__os_calloc(NULL, 1, sizeof(*cur_db), &cur_db) ||
+ __os_strdup(NULL, argv[1], &cur_db->name))
+ goto memory;
+ TAILQ_INSERT_TAIL(&cur_env->dbq, cur_db, q);
+
+ /*
+ * Default settings.
+ */
+ cur_db->dbtype = "DB_BTREE";
+
+ parse_status = PS_DB_SET;
+ return (0);
+ }
+ if (strcasecmp(argv[0], "custom") == 0) {
+ if (nf != 1 || parse_status != PS_DB_SET)
+ goto format;
+ cur_db->custom = 1;
+ return (0);
+ }
+ if (strcasecmp(argv[0], "dupsort") == 0) {
+ if (nf != 1 || parse_status != PS_DB_SET)
+ goto format;
+ cur_db->dupsort = 1;
+ return (0);
+ }
+ if (strcasecmp(argv[0], "extentsize") == 0) {
+ if (nf != 2 || parse_status != PS_DB_SET)
+ goto format;
+ CONFIG_GET_UINT32(argv[1], &uv);
+ cur_db->extentsize = uv;
+ return (0);
+ }
+ if (strcasecmp(argv[0], "key_type") == 0) {
+ if (nf != 2 || parse_status != PS_DB_SET)
+ goto format;
+ if (__os_strdup(NULL, argv[1], &cur_db->key_type))
+ goto memory;
+ return (0);
+ }
+ if (strcasecmp(argv[0], "pagesize") == 0) {
+ if (nf != 2 || parse_status != PS_DB_SET)
+ goto format;
+ CONFIG_GET_UINT32(argv[1], &uv);
+ cur_db->pagesize = uv;
+ return (0);
+ }
+ if (strcasecmp(argv[0], "primary") == 0) {
+ if (nf != 2 || parse_status != PS_DB_SET)
+ goto format;
+ if (__os_strdup(NULL, argv[1], &cur_db->primary))
+ goto memory;
+ return (0);
+ }
+ if (strcasecmp(argv[0], "recnum") == 0) {
+ if (nf != 1 || parse_status != PS_DB_SET)
+ goto format;
+ cur_db->recnum = 1;
+ return (0);
+ }
+ if (strcasecmp(argv[0], "re_len") == 0) {
+ if (nf != 2 || parse_status != PS_DB_SET)
+ goto format;
+ CONFIG_GET_UINT32(argv[1], &uv);
+ cur_db->re_len = uv;
+ return (0);
+ }
+ if (strcasecmp(argv[0], "secondary_offset") == 0) {
+ if (nf != 3 || parse_status != PS_DB_SET)
+ goto format;
+ CONFIG_GET_UINT32(argv[1], &uv);
+ cur_db->secondary_off = uv;
+ CONFIG_GET_UINT32(argv[2], &uv);
+ cur_db->secondary_len = uv;
+ return (0);
+ }
+ if (strcasecmp(argv[0], "transaction") == 0) {
+ if (nf != 1 || parse_status != PS_DB_SET)
+ goto format;
+ cur_env->transaction = cur_db->transaction = 1;
+ return (0);
+ }
+ if (strcasecmp(argv[0], "type") == 0) {
+ if (nf != 2 || parse_status != PS_DB_SET)
+ goto format;
+ if (strcasecmp(argv[1], "btree") == 0)
+ p = "DB_BTREE";
+ else if (strcasecmp(argv[1], "hash") == 0)
+ p = "DB_HASH";
+ else if (strcasecmp(argv[1], "queue") == 0)
+ p = "DB_QUEUE";
+ else if (strcasecmp(argv[1], "recno") == 0)
+ p = "DB_RECNO";
+ else
+ goto format;
+ if (__os_strdup(NULL, p, &cur_db->dbtype))
+ goto memory;
+ return (0);
+ }
+
+ /*
+ * End block.
+ */
+ if (strcmp(argv[0], "}") == 0) {
+ if (nf != 1)
+ goto format;
+ /*
+ * Pop up a level -- if we finished a database that's part of
+ * an environment, go back to the environment level; if we
+ * finished a standalone database or an environment, go back to
+ * unset.
+ */
+ switch (parse_status) {
+ case PS_UNSET:
+ goto format;
+ case PS_DB_SET:
+ parse_status =
+ cur_env->standalone ? PS_UNSET : PS_ENV_SET;
+ break;
+ case PS_ENV_SET:
+ parse_status = PS_UNSET;
+ }
+ return (0);
+ }
+
+format: fprintf(stderr,
+ "%s: line %d: %s: invalid input\n", progname, lc, s);
+ return (1);
+
+memory: fprintf(stderr, "%s: %s\n", progname, db_strerror(errno));
+ return (1);
+}
+
+#ifdef DEBUG
+int
+parse_dump()
+{
+ TAILQ_FOREACH(cur_env, &env_tree, q) {
+ printf("environment: %s\n",
+ cur_env->standalone ? "standalone" : cur_env->prefix);
+
+ if (cur_env->home != NULL)
+ printf("\thome: %s\n", cur_env->home);
+ if (cur_env->gbytes != 0 || cur_env->bytes != 0)
+ printf("\tcachesize: %luGB, %luB, %lu\n",
+ (u_long)cur_env->gbytes,
+ (u_long)cur_env->bytes,
+ (u_long)cur_env->ncache);
+
+ if (cur_env->private)
+ printf("\tprivate: yes\n");
+ if (cur_env->transaction)
+ printf("\ttransaction: yes\n");
+
+ TAILQ_FOREACH(cur_db, &cur_env->dbq, q) {
+ printf("\tdatabase: %s\n", cur_db->name);
+ printf("\t\tdbtype: %s\n", cur_db->dbtype);
+
+ if (cur_db->extentsize)
+ printf("\t\textentsize: %lu\n",
+ (u_long)cur_db->extentsize);
+ if (cur_db->pagesize)
+ printf("\t\tpagesize: %lu\n",
+ (u_long)cur_db->pagesize);
+ if (cur_db->re_len)
+ printf("\t\tre_len: %lu\n",
+ (u_long)cur_db->re_len);
+
+ if (cur_db->key_type != NULL)
+ printf("\t\tkey_type: %s\n",
+ cur_db->key_type);
+
+ if (cur_db->primary != NULL)
+ printf("\t\tprimary: %s\n",
+ cur_db->primary);
+ if (cur_db->custom)
+ printf("\t\tcustom: yes\n");
+ if (cur_db->secondary_off)
+ printf("\t\tsecondary_offset: %lu/%lu\n",
+ (u_long)cur_db->secondary_off,
+ (u_long)cur_db->secondary_len);
+
+ if (cur_db->dupsort)
+ printf("\t\tdupsort: yes\n");
+ if (cur_db->recnum)
+ printf("\t\trecnum: yes\n");
+ if (cur_db->transaction)
+ printf("\t\ttransaction: yes\n");
+ }
+ }
+
+ return (0);
+}
+#endif
diff --git a/db/db_codegen/db_codegen.c b/db/db_codegen/db_codegen.c
new file mode 100644
index 000000000..9d49c7864
--- /dev/null
+++ b/db/db_codegen/db_codegen.c
@@ -0,0 +1,116 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
+ *
+ * $Id: db_codegen.c,v 1.2 2007/05/17 15:14:58 bostic Exp $
+ */
+
+#include "db_codegen.h"
+
+#ifndef lint
+static const char copyright[] =
+ "Copyright (c) 1996,2007 Oracle. All rights reserved.\n";
+#endif
+
+static int usage __P((void));
+
+int main __P((int, char *[]));
+
+const char *progname;
+struct __head_env env_tree;
+
+int
+main(argc, argv)
+ int argc;
+ char *argv[];
+{
+ extern char *optarg;
+ extern int optind;
+ enum { C, CXX, JAVA } api;
+ int ch, verbose;
+ char *ofname;
+
+ TAILQ_INIT(&env_tree);
+
+ if ((progname = __db_rpath(argv[0])) == NULL)
+ progname = argv[0];
+ else
+ ++progname;
+
+ api = C;
+ ofname = NULL;
+ verbose = 0;
+
+ while ((ch = getopt(argc, argv, "a:i:o:Vv")) != EOF)
+ switch (ch) {
+ case 'a':
+ if (strcasecmp(optarg, "c") == 0) {
+ api = C;
+ }
+ else if (
+ strcasecmp(optarg, "c++") == 0 ||
+ strcasecmp(optarg, "cxx") == 0)
+ api = CXX;
+ else if (strcasecmp(optarg, "java") == 0)
+ api = JAVA;
+ else
+ return (usage());
+ break;
+ case 'i':
+ if (freopen(optarg, "r", stdin) == NULL) {
+ fprintf(stderr, "%s: %s: %s\n",
+ progname, optarg, strerror(errno));
+ return (EXIT_FAILURE);
+ }
+ break;
+ case 'o':
+ ofname = optarg;
+ break;
+ case 'V':
+ printf("%s\n", db_version(NULL, NULL, NULL));
+ return (EXIT_SUCCESS);
+ case 'v':
+ verbose = 1;
+ break;
+ case '?':
+ default:
+ return (usage());
+ }
+ argc -= optind;
+ argv += optind;
+
+ if (argc != 0)
+ return (usage());
+
+ if (parse_input(stdin))
+ return (EXIT_FAILURE);
+
+#ifdef DEBUG
+ if (verbose && parse_dump())
+ return (EXIT_FAILURE);
+#endif
+
+ if (TAILQ_FIRST(&env_tree) != NULL)
+ switch (api) {
+ case C:
+ if (api_c(ofname))
+ return (EXIT_FAILURE);
+ break;
+ case CXX:
+ case JAVA:
+ fprintf(stderr,
+ "C++ and Java APIs not yet supported\n");
+ return (EXIT_FAILURE);
+ }
+
+ return (EXIT_SUCCESS);
+}
+
+static int
+usage()
+{
+ (void)fprintf(stderr,
+ "usage: %s [-Vv] [-a c] [-i input] [-o output]\n", progname);
+ return (EXIT_FAILURE);
+}
diff --git a/db/db_codegen/db_codegen.h b/db/db_codegen/db_codegen.h
new file mode 100644
index 000000000..1e6d29c7e
--- /dev/null
+++ b/db/db_codegen/db_codegen.h
@@ -0,0 +1,59 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
+ *
+ * $Id: db_codegen.h,v 1.4 2007/05/17 15:14:58 bostic Exp $
+ */
+#include "db_config.h"
+
+#include "db_int.h"
+
+typedef struct __db_obj {
+ char *name; /* Database name */
+ char *dbtype; /* Database type */
+
+ u_int32_t extentsize; /* Queue: extent size */
+ u_int32_t pagesize; /* Pagesize */
+ u_int32_t re_len; /* Queue/Recno: record length */
+
+ char *key_type; /* Key type */
+ int custom; /* Custom key comparison. */
+
+ char *primary; /* Secondary: primary's name */
+ u_int32_t secondary_len; /* secondary: length */
+ u_int32_t secondary_off; /* secondary: 0-based byte offset */
+
+ int dupsort; /* Sorted duplicates */
+ int recnum; /* Btree: record numbers */
+ int transaction; /* Database is transactional */
+
+ TAILQ_ENTRY(__db_obj) q; /* List of databases */
+} DB_OBJ;
+
+typedef struct __env_obj {
+ char *prefix; /* Name prefix */
+ char *home; /* Environment home */
+
+ u_int32_t gbytes; /* GB, B of cache */
+ u_int32_t bytes;
+ u_int32_t ncache; /* Number of caches */
+
+ int private; /* Private environment */
+ int standalone; /* Standalone database */
+ int transaction; /* Database is transactional */
+
+ TAILQ_ENTRY(__env_obj) q; /* List of environments, databases */
+ TAILQ_HEAD(__head_db, __db_obj) dbq;
+} ENV_OBJ;
+
+TAILQ_HEAD(__head_env, __env_obj); /* List of environments */
+extern struct __head_env env_tree;
+
+extern const char *progname; /* Program name */
+
+int api_c __P((char *));
+#ifdef DEBUG
+int parse_dump __P((void));
+#endif
+int parse_input __P((FILE *));
diff --git a/db/db_codegen/example1 b/db/db_codegen/example1
new file mode 100644
index 000000000..07b0b110e
--- /dev/null
+++ b/db/db_codegen/example1
@@ -0,0 +1,16 @@
+# Two database environments, each with a single Btree database.
+environment env1 {
+ home TESTDIR1
+ database db1 {
+ type btree
+ pagesize 8192
+ }
+}
+
+environment env2 {
+ home TESTDIR2
+ database db1 {
+ type btree
+ pagesize 8192
+ }
+}
diff --git a/db/db_codegen/example2 b/db/db_codegen/example2
new file mode 100644
index 000000000..05ef224ea
--- /dev/null
+++ b/db/db_codegen/example2
@@ -0,0 +1,27 @@
+# A single private environment, with four databases of different types.
+environment env1 {
+ database db1 {
+ type btree
+ recnum
+ transaction
+ pagesize 65536
+ }
+ database db2 {
+ type hash
+ transaction
+ pagesize 32768
+ }
+ database db3 {
+ type queue
+ transaction
+ pagesize 16384
+ }
+ database db4 {
+ type recno
+ transaction
+ pagesize 8192
+ }
+
+ private
+ home TESTDIR
+}
diff --git a/db/db_codegen/example3 b/db/db_codegen/example3
new file mode 100644
index 000000000..35ea51b20
--- /dev/null
+++ b/db/db_codegen/example3
@@ -0,0 +1,25 @@
+# A single private environment, with two databases, a primary and secondary
+# index pair.
+environment env1 {
+ home TESTDIR
+ cachesize 2 0 4 # 2GB, 4 caches
+
+ database db1 { # Primary database.
+ type btree
+
+ transaction
+ pagesize 65536
+ }
+ database db2 {
+ type hash
+
+ # The secondary is a hash database, the primary is "db1".
+ # The secondary key is 10 bytes starting at byte offset
+ # 20. The secondary key is an untyped byte string.
+ primary db1
+ secondary_offset 20 10
+
+ transaction
+ pagesize 32768
+ }
+}
diff --git a/db/db_codegen/example4 b/db/db_codegen/example4
new file mode 100644
index 000000000..dfa6c268c
--- /dev/null
+++ b/db/db_codegen/example4
@@ -0,0 +1,26 @@
+# A single private environment, with two databases, a primary and secondary
+# index pair.
+environment env1 {
+ home TESTDIR
+ cachesize 2 0 4 # 2GB, 4 caches
+
+ database db1 { # Primary database.
+ type btree
+
+ transaction
+ pagesize 32768
+ }
+ database db2 {
+ type btree
+
+ # The secondary is a btree database, the primary is "db1".
+ # The secondary key is a 4-byte unsigned int, starting at
+ # byte offset 10.
+ primary db1
+ key_type u_int32_t
+ secondary_offset 10 4
+
+ transaction
+ pagesize 32768
+ }
+}
diff --git a/db/db_deadlock/db_deadlock.c b/db/db_deadlock/db_deadlock.c
index 4e82bfef5..4d412b659 100644
--- a/db/db_deadlock/db_deadlock.c
+++ b/db/db_deadlock/db_deadlock.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: db_deadlock.c,v 12.13 2006/08/26 09:23:00 bostic Exp $
+ * $Id: db_deadlock.c,v 12.18 2007/05/17 17:17:42 bostic Exp $
*/
#include "db_config.h"
@@ -13,7 +12,7 @@
#ifndef lint
static const char copyright[] =
- "Copyright (c) 1996-2006\nOracle Corporation. All rights reserved.\n";
+ "Copyright (c) 1996,2007 Oracle. All rights reserved.\n";
#endif
int main __P((int, char *[]));
@@ -33,10 +32,10 @@ main(argc, argv)
u_int32_t atype;
time_t now;
u_long secs, usecs;
- int ch, exitval, ret, verbose;
+ int rejected, ch, exitval, ret, verbose;
char *home, *logfile, *passwd, *str, time_buf[CTIME_BUFLEN];
- if ((progname = strrchr(argv[0], '/')) == NULL)
+ if ((progname = __db_rpath(argv[0])) == NULL)
progname = argv[0];
else
++progname;
@@ -170,10 +169,13 @@ main(argc, argv)
"running at %.24s", __db_ctime(&now, time_buf));
}
- if ((ret = dbenv->lock_detect(dbenv, 0, atype, NULL)) != 0) {
+ if ((ret =
+ dbenv->lock_detect(dbenv, 0, atype, &rejected)) != 0) {
dbenv->err(dbenv, ret, "DB_ENV->lock_detect");
goto shutdown;
}
+ if (verbose)
+ dbenv->errx(dbenv, "rejected %d locks", rejected);
/* Make a pass every "secs" secs and "usecs" usecs. */
if (secs == 0 && usecs == 0)
diff --git a/db/db_dump/db_dump.c b/db/db_dump/db_dump.c
index 9202e53c7..9e5f1f438 100644
--- a/db/db_dump/db_dump.c
+++ b/db/db_dump/db_dump.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: db_dump.c,v 12.9 2006/08/26 09:23:01 bostic Exp $
+ * $Id: db_dump.c,v 12.15 2007/05/17 15:14:59 bostic Exp $
*/
#include "db_config.h"
@@ -15,12 +14,11 @@
#ifndef lint
static const char copyright[] =
- "Copyright (c) 1996-2006\nOracle Corporation. All rights reserved.\n";
+ "Copyright (c) 1996,2007 Oracle. All rights reserved.\n";
#endif
int db_init __P((DB_ENV *, char *, int, u_int32_t, int *));
int dump_sub __P((DB_ENV *, DB *, char *, int, int));
-int is_sub __P((DB *, int *));
int main __P((int, char *[]));
int show_subs __P((DB *));
int usage __P((void));
@@ -40,10 +38,10 @@ main(argc, argv)
u_int32_t cache;
int ch;
int exitval, keyflag, lflag, nflag, pflag, private;
- int ret, Rflag, rflag, resize, subs;
+ int ret, Rflag, rflag, resize;
char *dopt, *home, *passwd, *subname;
- if ((progname = strrchr(argv[0], '/')) == NULL)
+ if ((progname = __db_rpath(argv[0])) == NULL)
progname = argv[0];
else
++progname;
@@ -225,20 +223,16 @@ retry: if ((ret = db_env_create(&dbenv, 0)) != 0) {
goto err;
}
} else if (lflag) {
- if (is_sub(dbp, &subs))
- goto err;
- if (subs == 0) {
+ if (dbp->get_multiple(dbp)) {
+ if (show_subs(dbp))
+ goto err;
+ } else {
dbp->errx(dbp,
"%s: does not contain multiple databases", argv[0]);
goto err;
}
- if (show_subs(dbp))
- goto err;
} else {
- subs = 0;
- if (subname == NULL && is_sub(dbp, &subs))
- goto err;
- if (subs) {
+ if (subname == NULL && dbp->get_multiple(dbp)) {
if (dump_sub(dbenv, dbp, argv[0], pflag, keyflag))
goto err;
} else
@@ -330,47 +324,6 @@ err: dbenv->err(dbenv, ret, "DB_ENV->open");
}
/*
- * is_sub --
- * Return if the database contains subdatabases.
- */
-int
-is_sub(dbp, yesno)
- DB *dbp;
- int *yesno;
-{
- DB_BTREE_STAT *btsp;
- DB_HASH_STAT *hsp;
- int ret;
-
- switch (dbp->type) {
- case DB_BTREE:
- case DB_RECNO:
- if ((ret = dbp->stat(dbp, NULL, &btsp, DB_FAST_STAT)) != 0) {
- dbp->err(dbp, ret, "DB->stat");
- return (ret);
- }
- *yesno = btsp->bt_metaflags & BTM_SUBDB ? 1 : 0;
- free(btsp);
- break;
- case DB_HASH:
- if ((ret = dbp->stat(dbp, NULL, &hsp, DB_FAST_STAT)) != 0) {
- dbp->err(dbp, ret, "DB->stat");
- return (ret);
- }
- *yesno = hsp->hash_metaflags & DB_HASH_SUBDB ? 1 : 0;
- free(hsp);
- break;
- case DB_QUEUE:
- break;
- case DB_UNKNOWN:
- default:
- dbp->errx(dbp, "unknown database type");
- return (1);
- }
- return (0);
-}
-
-/*
* dump_sub --
* Dump out the records for a DB containing subdatabases.
*/
@@ -398,7 +351,8 @@ dump_sub(dbenv, parent_dbp, parent_name, pflag, keyflag)
memset(&key, 0, sizeof(key));
memset(&data, 0, sizeof(data));
- while ((ret = dbcp->c_get(dbcp, &key, &data, DB_NEXT)) == 0) {
+ while ((ret = dbcp->get(dbcp, &key, &data,
+ DB_IGNORE_LEASE | DB_NEXT)) == 0) {
/* Nul terminate the subdatabase name. */
if ((subdb = malloc(key.size + 1)) == NULL) {
dbenv->err(dbenv, ENOMEM, NULL);
@@ -430,7 +384,7 @@ dump_sub(dbenv, parent_dbp, parent_name, pflag, keyflag)
return (1);
}
- if ((ret = dbcp->c_close(dbcp)) != 0) {
+ if ((ret = dbcp->close(dbcp)) != 0) {
parent_dbp->err(parent_dbp, ret, "DBcursor->close");
return (1);
}
@@ -461,7 +415,8 @@ show_subs(dbp)
memset(&key, 0, sizeof(key));
memset(&data, 0, sizeof(data));
- while ((ret = dbcp->c_get(dbcp, &key, &data, DB_NEXT)) == 0) {
+ while ((ret = dbcp->get(dbcp, &key, &data,
+ DB_IGNORE_LEASE | DB_NEXT)) == 0) {
if ((ret = dbp->dbenv->prdbt(
&key, 1, NULL, stdout, __db_pr_callback, 0)) != 0) {
dbp->errx(dbp, NULL);
@@ -473,7 +428,7 @@ show_subs(dbp)
return (1);
}
- if ((ret = dbcp->c_close(dbcp)) != 0) {
+ if ((ret = dbcp->close(dbcp)) != 0) {
dbp->err(dbp, ret, "DBcursor->close");
return (1);
}
diff --git a/db/db_dump185/db_dump185.c b/db/db_dump185/db_dump185.c
index 14968a3dd..c1851681d 100644
--- a/db/db_dump185/db_dump185.c
+++ b/db/db_dump185/db_dump185.c
@@ -1,15 +1,14 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: db_dump185.c,v 12.4 2006/08/26 09:23:04 bostic Exp $
+ * $Id: db_dump185.c,v 12.6 2007/05/17 15:15:00 bostic Exp $
*/
#ifndef lint
-static char copyright[] =
- "Copyright (c) 1996-2006\nOracle Corporation. All rights reserved.\n";
+static const char copyright[] =
+ "Copyright (c) 1996,2007 Oracle. All rights reserved.\n";
#endif
#include <sys/types.h>
diff --git a/db/db_hotbackup/db_hotbackup.c b/db/db_hotbackup/db_hotbackup.c
index 6bafd3659..e04fbdde0 100644
--- a/db/db_hotbackup/db_hotbackup.c
+++ b/db/db_hotbackup/db_hotbackup.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: db_hotbackup.c,v 1.30 2006/08/26 09:23:07 bostic Exp $
+ * $Id: db_hotbackup.c,v 1.51 2007/05/17 15:15:01 bostic Exp $
*/
#include "db_config.h"
@@ -16,18 +15,18 @@
#ifndef lint
static const char copyright[] =
- "Copyright (c) 1996-2006\nOracle Corporation. All rights reserved.\n";
+ "Copyright (c) 1996,2007 Oracle. All rights reserved.\n";
#endif
enum which_open { OPEN_ORIGINAL, OPEN_HOT_BACKUP };
-int backup_dir_clean __P((DB_ENV *, char *, int *, int, int));
-int data_copy __P((DB_ENV *, const char *, const char *, const char *, int));
+int backup_dir_clean __P((DB_ENV *, char *, char *, int *, int, int));
+int data_copy __P((DB_ENV *, char *, char *, char *, int));
int env_init __P((DB_ENV **,
- char *, const char **, const char ***, char *, enum which_open));
+ char *, char **, char ***, char *, enum which_open));
int main __P((int, char *[]));
-int read_data_dir __P((DB_ENV *, char *, char *, const char *, int, int));
-int read_log_dir __P((DB_ENV *, char *, char *, const char *, int *, int, int));
+int read_data_dir __P((DB_ENV *, char *, char *, char *, int, int));
+int read_log_dir __P((DB_ENV *, char *, char *, char *, int *, int, int));
int usage __P((void));
int version_check __P((void));
@@ -45,11 +44,22 @@ main(argc, argv)
u_int data_cnt, data_next;
int ch, checkpoint, copy_min, db_config, exitval;
int remove_max, ret, update, verbose;
- char *backup_dir, **data_dir, *home, *passwd;
- const char **ddir, **dir, *log_dir;
+ char *backup_dir, **data_dir, **dir, *home, *log_dir, *passwd;
char home_buf[DB_MAXPATHLEN], time_buf[CTIME_BUFLEN];
- if ((progname = strrchr(argv[0], '/')) == NULL)
+ /*
+ * Make sure all verbose message are output before any error messages
+ * in the case where the output is being logged into a file. This
+ * call has to be done before any operation is performed on the stream.
+ *
+ * Use unbuffered I/O because line-buffered I/O requires a buffer, and
+ * some operating systems have buffer alignment and size constraints we
+ * don't want to care about. There isn't enough output for the calls
+ * to matter.
+ */
+ setbuf(stdout, NULL);
+
+ if ((progname = __db_rpath(argv[0])) == NULL)
progname = argv[0];
else
++progname;
@@ -124,6 +134,20 @@ main(argc, argv)
if (argc != 0)
return (usage());
+ /* NULL-terminate any list of data directories. */
+ if (data_dir != NULL) {
+ data_dir[data_next] = NULL;
+ /*
+ * -d is relative to the current directory, to run a checkpoint
+ * we must have directories relative to the environment.
+ */
+ if (checkpoint == 1) {
+ fprintf(stderr,
+ "%s: cannot specify -d and -c\n", progname);
+ return (usage());
+ }
+ }
+
if (db_config && (data_dir != NULL || log_dir != NULL)) {
fprintf(stderr,
"%s: cannot specify -D and -d or -l\n", progname);
@@ -164,29 +188,19 @@ main(argc, argv)
return (usage());
}
- /* NULL-terminate any list of data directories. */
- if (data_dir != NULL)
- data_dir[data_next] = NULL;
-
if (verbose) {
(void)time(&now);
printf("%s: hot backup started at %s",
progname, __db_ctime(&now, time_buf));
}
- ddir = NULL;
/* Open the source environment. */
- if ((ret = env_init(&dbenv, home,
+ if (env_init(&dbenv, home,
(db_config || log_dir != NULL) ? &log_dir : NULL,
- db_config ? &ddir : NULL, passwd, OPEN_ORIGINAL)) != 0)
+ db_config ? &data_dir : NULL,
+ passwd, OPEN_ORIGINAL) != 0)
goto shutdown;
- if (!db_config)
- ddir = (const char **)data_dir;
-
- if (log_dir == NULL)
- log_dir = home;
-
if (db_config && __os_abspath(log_dir)) {
fprintf(stderr,
"%s: DB_CONFIG must not contain an absolute path for the log directory",
@@ -227,13 +241,20 @@ main(argc, argv)
(void)__os_mkdir(NULL, backup_dir, __db_omode("rwx------"));
/*
- * If the target directory for the backup does exist and the -u option
- * was specified, all log files in the target directory are removed;
- * if the -u option was not specified, all files in the target directory
- * are removed.
+ * If -u was specified, remove all log files; if -u was not specified,
+ * remove all files.
+ *
+ * Potentially there are two directories to clean, the log directory
+ * and the target directory. First, clean up the log directory if
+ * it's different from the target directory, then clean up the target
+ * directory.
*/
- if ((ret = backup_dir_clean(
- dbenv, backup_dir, &remove_max, update, verbose)) != 0)
+ if (db_config && log_dir != NULL &&
+ backup_dir_clean(
+ dbenv, backup_dir, log_dir, &remove_max, update, verbose) != 0)
+ goto shutdown;
+ if (backup_dir_clean(dbenv,
+ backup_dir, NULL, &remove_max, update, verbose) != 0)
goto shutdown;
/*
@@ -245,9 +266,14 @@ main(argc, argv)
if (read_data_dir(dbenv, home,
backup_dir, home, verbose, db_config) != 0)
goto shutdown;
- if (ddir != NULL)
- for (dir = &ddir[0]; *dir != NULL; ++dir) {
- if (__os_abspath(*dir)) {
+ if (data_dir != NULL)
+ for (dir = data_dir; *dir != NULL; ++dir) {
+ /*
+ * Don't allow absolute path names taken from
+ * the DB_CONFIG file -- running recovery with
+ * them would corrupt the source files.
+ */
+ if (db_config && __os_abspath(*dir)) {
fprintf(stderr,
"%s: data directory '%s' is absolute path, not permitted with -D option\n",
progname, *dir);
@@ -266,8 +292,8 @@ main(argc, argv)
*
* The log directory defaults to the home directory.
*/
- if (read_log_dir(dbenv, db_config ? home : NULL,
- backup_dir, log_dir, &copy_min, update, verbose) != 0)
+ if (read_log_dir(dbenv, db_config ? home : NULL, backup_dir,
+ log_dir == NULL ? home : log_dir, &copy_min, update, verbose) != 0)
goto shutdown;
/*
@@ -298,8 +324,8 @@ main(argc, argv)
if (verbose)
printf("%s: %s: run catastrophic recovery\n",
progname, backup_dir);
- if ((ret = env_init(
- &dbenv, backup_dir, NULL, NULL, passwd, OPEN_HOT_BACKUP)) != 0)
+ if (env_init(
+ &dbenv, backup_dir, NULL, NULL, passwd, OPEN_HOT_BACKUP) != 0)
goto shutdown;
/*
@@ -323,11 +349,6 @@ shutdown: exitval = 1;
"%s: dbenv->close: %s\n", progname, db_strerror(ret));
}
- if (data_dir != NULL)
- free(data_dir);
- if (passwd != NULL)
- free(passwd);
-
if (exitval == 0) {
if (verbose) {
(void)time(&now);
@@ -350,11 +371,9 @@ shutdown: exitval = 1;
* Open a database environment.
*/
int
-env_init(dbenvp, home, log_dir, data_dir, passwd, which)
+env_init(dbenvp, home, log_dirp, data_dirp, passwd, which)
DB_ENV **dbenvp;
- char *home;
- const char **log_dir, ***data_dir;
- char *passwd;
+ char *home, **log_dirp, ***data_dirp, *passwd;
enum which_open which;
{
DB_ENV *dbenv;
@@ -374,15 +393,14 @@ env_init(dbenvp, home, log_dir, data_dir, passwd, which)
dbenv->set_errfile(dbenv, stderr);
setbuf(stderr, NULL);
dbenv->set_errpfx(dbenv, progname);
- (void)setvbuf(stdout, NULL, _IOLBF, 0);
/*
* If a log directory has been specified, and it's not the same as the
* home directory, set it for the environment.
*/
- if (log_dir != NULL && *log_dir != NULL && *log_dir != home &&
- (ret = dbenv->set_lg_dir(dbenv, *log_dir)) != 0) {
- dbenv->err(dbenv, ret, "DB_ENV->set_lg_dir: %s", log_dir);
+ if (log_dirp != NULL && *log_dirp != NULL &&
+ (ret = dbenv->set_lg_dir(dbenv, *log_dirp)) != 0) {
+ dbenv->err(dbenv, ret, "DB_ENV->set_lg_dir: %s", *log_dirp);
return (1);
}
@@ -408,19 +426,25 @@ env_init(dbenvp, home, log_dir, data_dir, passwd, which)
dbenv->err(dbenv, ret, "DB_ENV->open: %s", home);
return (1);
}
- if (log_dir != NULL && *log_dir == NULL) {
- (void)dbenv->get_lg_dir(dbenv, log_dir);
- if (*log_dir == NULL)
- *log_dir = home;
- }
- if (data_dir != NULL && *data_dir == NULL)
- (void)dbenv->get_data_dirs(dbenv, data_dir);
+ if (log_dirp != NULL && *log_dirp == NULL)
+ (void)dbenv->get_lg_dir(dbenv, (const char **)log_dirp);
+ if (data_dirp != NULL && *data_dirp == NULL)
+ (void)dbenv->get_data_dirs(
+ dbenv, (const char ***)data_dirp);
break;
case OPEN_HOT_BACKUP:
/*
* Opening the backup copy of the database environment. We
* better be the only user, we're running recovery.
+ * Ensure that there at least minimal cache for worst
+ * case page size.
*/
+ if ((ret =
+ dbenv->set_cachesize(dbenv, 0, 64 * 1024 * 10, 0)) != 0) {
+ dbenv->err(dbenv,
+ ret, "DB_ENV->set_cachesize: %s", home);
+ return (1);
+ }
if ((ret = dbenv->open(dbenv, home, DB_CREATE |
DB_INIT_LOG | DB_INIT_MPOOL | DB_INIT_TXN | DB_PRIVATE |
DB_RECOVER_FATAL | DB_USE_ENVIRON, 0)) != 0) {
@@ -439,22 +463,36 @@ env_init(dbenvp, home, log_dir, data_dir, passwd, which)
* Clean out the backup directory.
*/
int
-backup_dir_clean(dbenv, backup_dir, remove_maxp, update, verbose)
+backup_dir_clean(dbenv, backup_dir, log_dir, remove_maxp, update, verbose)
DB_ENV *dbenv;
- char *backup_dir;
+ char *backup_dir, *log_dir;
int *remove_maxp, update, verbose;
{
int cnt, fcnt, ret, v;
- char **names, buf[DB_MAXPATHLEN];
+ char **names, *dir, buf[DB_MAXPATHLEN], path[DB_MAXPATHLEN];
+
+ /* We may be cleaning a log directory separate from the target. */
+ if (log_dir != NULL) {
+ if ((size_t)snprintf(buf, sizeof(buf), "%s%c%s",
+ backup_dir, PATH_SEPARATOR[0] ,log_dir) >= sizeof(buf)) {
+ dbenv->errx(dbenv, "%s%c%s: path too long",
+ backup_dir, PATH_SEPARATOR[0] ,log_dir);
+ return (1);
+ }
+ dir = buf;
+ } else
+ dir = backup_dir;
/* Get a list of file names. */
- if ((ret = __os_dirlist(dbenv, backup_dir, &names, &fcnt)) != 0) {
- dbenv->err(dbenv, ret, "%s: directory read", backup_dir);
+ if ((ret = __os_dirlist(dbenv, dir, &names, &fcnt)) != 0) {
+ if (log_dir != NULL && !update)
+ return (0);
+ dbenv->err(dbenv, ret, "%s: directory read", dir);
return (1);
}
for (cnt = fcnt; --cnt >= 0;) {
/*
- * Skip log files (if update wasn't specified).
+ * Skip non-log files (if update was specified).
*/
if (strncmp(names[cnt], LFPREFIX, sizeof(LFPREFIX) - 1)) {
if (update)
@@ -465,18 +503,16 @@ backup_dir_clean(dbenv, backup_dir, remove_maxp, update, verbose)
if (*remove_maxp < v)
*remove_maxp = v;
}
- if ((size_t)snprintf(buf, sizeof(buf),
- "%s/%s", backup_dir, names[cnt]) >= sizeof(buf)) {
- dbenv->err(dbenv, ret,
- "%s/%s: path too long", backup_dir, names[cnt]);
+ if ((size_t)snprintf(path, sizeof(path), "%s%c%s",
+ dir, PATH_SEPARATOR[0], names[cnt]) >= sizeof(path)) {
+ dbenv->errx(dbenv, "%s%c%s: path too long",
+ dir, PATH_SEPARATOR[0], names[cnt]);
return (1);
}
if (verbose)
- printf("%s: removing %s\n", progname, buf);
- if ((ret = remove(buf)) != 0) {
- dbenv->err(dbenv, ret, "%s: remove", buf);
+ printf("%s: removing %s\n", progname, path);
+ if (__os_unlink(dbenv, path) != 0)
return (1);
- }
}
__os_dirfree(dbenv, names, fcnt);
@@ -495,8 +531,7 @@ backup_dir_clean(dbenv, backup_dir, remove_maxp, update, verbose)
int
read_data_dir(dbenv, home, backup_dir, dir, verbose, db_config)
DB_ENV *dbenv;
- char *home, *backup_dir;
- const char *dir;
+ char *home, *backup_dir, *dir;
int verbose, db_config;
{
int cnt, fcnt, ret;
@@ -506,10 +541,11 @@ read_data_dir(dbenv, home, backup_dir, dir, verbose, db_config)
bd = backup_dir;
if (db_config && dir != home) {
/* Build a path name to the destination. */
- if ((size_t)(cnt = snprintf(bbuf, sizeof(bbuf),
- "%s/%s/", backup_dir, dir)) >= sizeof(buf)) {
- dbenv->errx(dbenv,
- "%s/%s: path too long", backup_dir, dir);
+ if ((size_t)(cnt = snprintf(bbuf, sizeof(bbuf), "%s%c%s%c",
+ backup_dir, PATH_SEPARATOR[0],
+ dir, PATH_SEPARATOR[0])) >= sizeof(buf)) {
+ dbenv->errx(dbenv, "%s%c%s: path too long",
+ backup_dir, PATH_SEPARATOR[0], dir);
return (1);
}
bd = bbuf;
@@ -522,13 +558,13 @@ read_data_dir(dbenv, home, backup_dir, dir, verbose, db_config)
return (1);
}
/* step on the trailing '/' */
- bd[cnt] = '\0';
+ bd[cnt - 1] = '\0';
/* Build a path name to the source. */
if ((size_t)snprintf(buf, sizeof(buf),
- "%s/%s", home, dir) >= sizeof(buf)) {
- dbenv->errx(dbenv,
- "%s/%s: path too long", home, dir);
+ "%s%c%s", home, PATH_SEPARATOR[0], dir) >= sizeof(buf)) {
+ dbenv->errx(dbenv, "%s%c%s: path too long",
+ home, PATH_SEPARATOR[0], dir);
return (1);
}
dir = buf;
@@ -559,8 +595,7 @@ read_data_dir(dbenv, home, backup_dir, dir, verbose, db_config)
continue;
/* Copy the file. */
- if ((ret = data_copy(
- dbenv, names[cnt], dir, bd, verbose)) != 0)
+ if (data_copy(dbenv, names[cnt], dir, bd, verbose) != 0)
return (1);
}
@@ -578,42 +613,43 @@ read_data_dir(dbenv, home, backup_dir, dir, verbose, db_config)
int
read_log_dir(dbenv, home, backup_dir, log_dir, copy_minp, update, verbose)
DB_ENV *dbenv;
- char *home, *backup_dir;
- const char *log_dir;
+ char *home, *backup_dir, *log_dir;
int *copy_minp, update, verbose;
{
u_int32_t aflag;
int cnt, ret, v;
- char **begin, **names, *backupd;
- const char *logd;
+ char **begin, **names, *backupd, *logd;
char from[DB_MAXPATHLEN], to[DB_MAXPATHLEN];
- logd = log_dir;
- backupd = backup_dir;
- if (home != NULL && log_dir != home) {
- if ((size_t)snprintf(from, sizeof(from),
- "%s/%s", home, log_dir) >= sizeof(from)) {
- dbenv->errx(dbenv,
- "%s/%s: path too long", home, log_dir);
+ if (home != NULL && log_dir != NULL) {
+ if ((size_t)snprintf(from, sizeof(from), "%s%c%s",
+ home, PATH_SEPARATOR[0], log_dir) >= sizeof(from)) {
+ dbenv->errx(dbenv, "%s%c%s: path too long",
+ home, PATH_SEPARATOR[0], log_dir);
return (1);
}
logd = strdup(from);
if ((size_t)(cnt = snprintf(to, sizeof(to),
- "%s/%s/", backup_dir, log_dir)) >= sizeof(to)) {
- dbenv->errx(dbenv,
- "%s/%s: path too long", backup_dir, log_dir);
+ "%s%c%s%c", backup_dir, PATH_SEPARATOR[0],
+ log_dir, PATH_SEPARATOR[0])) >= sizeof(to)) {
+ dbenv->errx(dbenv, "%s%c%s: path too long",
+ backup_dir, PATH_SEPARATOR[0], log_dir);
return (1);
}
backupd = strdup(to);
- /* Create the path. */
+
+ /* Create the backup log directory. */
if ((ret = dbenv->set_intermediate_dir(
dbenv, __db_omode("rwx------"), 0)) != 0 ||
(ret = __db_mkpath(dbenv, backupd)) != 0) {
dbenv->err(dbenv, ret, "%s: cannot create", backupd);
return (1);
}
- /* step on the trailing '/' */
- backupd[cnt] = '\0';
+ /* Step on the trailing '/'. */
+ backupd[cnt - 1] = '\0';
+ } else {
+ backupd = backup_dir;
+ logd = log_dir;
}
again: aflag = DB_ARCH_LOG;
@@ -626,7 +662,7 @@ again: aflag = DB_ARCH_LOG;
aflag = 0;
/* Get a list of file names to be copied. */
if ((ret = dbenv->log_archive(dbenv, &names, aflag)) != 0) {
- dbenv->err(dbenv, ret, "%s: log_archive", log_dir);
+ dbenv->err(dbenv, ret, "DB_ENV->log_archive");
return (1);
}
if (names == NULL)
@@ -638,10 +674,10 @@ again: aflag = DB_ARCH_LOG;
if (*copy_minp == 0 || *copy_minp > v)
*copy_minp = v;
- if ((size_t)snprintf(from, sizeof(from),
- "%s/%s", logd, *names) >= sizeof(from)) {
- dbenv->errx(dbenv,
- "%s/%s: path too long", log_dir, *names);
+ if ((size_t)snprintf(from, sizeof(from), "%s%c%s",
+ logd, PATH_SEPARATOR[0], *names) >= sizeof(from)) {
+ dbenv->errx(dbenv, "%s%c%s: path too long",
+ logd, PATH_SEPARATOR[0], *names);
return (1);
}
@@ -654,13 +690,13 @@ again: aflag = DB_ARCH_LOG;
* on open.
*/
if (update) {
- if ((size_t)snprintf(to, sizeof(to),
- "%s/%s", backupd, *names) >= sizeof(to)) {
- dbenv->errx(dbenv,
- "%s/%s: path too long", backupd, *names);
+ if ((size_t)snprintf(to, sizeof(to), "%s%c%s",
+ backupd, PATH_SEPARATOR[0], *names) >= sizeof(to)) {
+ dbenv->errx(dbenv, "%s%c%s: path too long",
+ backupd, PATH_SEPARATOR[0], *names);
return (1);
}
- if (rename(from, to) == 0) {
+ if (__os_rename(dbenv, from, to, 1) == 0) {
if (verbose)
printf("%s: moving %s to %s\n",
progname, from, to);
@@ -669,8 +705,7 @@ again: aflag = DB_ARCH_LOG;
}
/* Copy the file. */
- if ((ret = data_copy(dbenv,
- *names, logd, backupd, verbose)) != 0)
+ if (data_copy(dbenv, *names, logd, backupd, verbose) != 0)
return (1);
if (update) {
@@ -695,7 +730,7 @@ done: if (update) {
printf("%s: lowest numbered log file copied: %d\n",
progname, *copy_minp);
if (logd != log_dir)
- free((char *)logd);
+ free(logd);
if (backupd != backup_dir)
free(backupd);
@@ -709,20 +744,20 @@ done: if (update) {
int
data_copy(dbenv, file, from_dir, to_dir, verbose)
DB_ENV *dbenv;
- const char *file, *from_dir, *to_dir;
+ char *file, *from_dir, *to_dir;
int verbose;
{
- ssize_t nr, nw;
- size_t offset;
- int ret, rfd, wfd;
- char *buf, *taddr;
+ DB_FH *rfhp, *wfhp;
+ size_t nr, nw;
+ int ret;
+ char *buf;
ret = 0;
- rfd = wfd = -1;
+ rfhp = wfhp = NULL;
if (verbose)
- printf("%s: copying %s/%s to %s/%s\n",
- progname, from_dir, file, to_dir, file);
+ printf("%s: copying %s%c%s to %s%c%s\n", progname, from_dir,
+ PATH_SEPARATOR[0], file, to_dir, PATH_SEPARATOR[0], file);
/*
* We MUST copy multiples of the page size, atomically, to ensure a
@@ -741,44 +776,35 @@ data_copy(dbenv, file, from_dir, to_dir, verbose)
}
/* Open the input file. */
- if ((u_int32_t)snprintf(
- buf, MEGABYTE, "%s/%s", from_dir, file) >= MEGABYTE) {
- dbenv->errx(dbenv, "%s/%s: path too long", from_dir, file);
+ if (snprintf(buf, MEGABYTE, "%s%c%s",
+ from_dir, PATH_SEPARATOR[0], file) >= MEGABYTE) {
+ dbenv->errx(dbenv,
+ "%s%c%s: path too long", from_dir, PATH_SEPARATOR[0], file);
goto err;
}
- if ((rfd = open(buf, O_RDONLY, 0)) == -1) {
- dbenv->err(dbenv, errno, "%s", buf);
+ if ((ret = __os_open(dbenv, buf, 0, DB_OSO_RDONLY, 0, &rfhp)) != 0) {
+ dbenv->err(dbenv, ret, "%s", buf);
goto err;
}
/* Open the output file. */
- if ((u_int32_t)snprintf(
- buf, MEGABYTE, "%s/%s", to_dir, file) >= MEGABYTE) {
- dbenv->errx(dbenv, "%s/%s: path too long", to_dir, file);
+ if (snprintf(buf, MEGABYTE, "%s%c%s",
+ to_dir, PATH_SEPARATOR[0], file) >= MEGABYTE) {
+ dbenv->errx(dbenv,
+ "%s%c%s: path too long", to_dir, PATH_SEPARATOR[0], file);
goto err;
}
- if ((wfd = open(
- buf, O_CREAT | O_TRUNC | O_WRONLY, __db_omode(OWNER_RW))) == -1)
- goto err;
-
- /* Copy the data. */
- while ((nr = read(rfd, buf, MEGABYTE)) > 0)
- for (taddr = buf, offset = 0;
- offset < (size_t)nr; taddr += nw, offset += (size_t)nw) {
- RETRY_CHK(((nw = write(wfd,
- taddr, (u_int)(nr - offset))) < 0 ? 1 : 0), ret);
- if (ret != 0)
- break;
- }
- if (nr == -1) {
- dbenv->err(dbenv, errno, "%s/%s: read", from_dir, file);
+ if ((ret = __os_open(dbenv, buf, 0,
+ DB_OSO_CREATE | DB_OSO_TRUNC, __db_omode(OWNER_RW), &wfhp)) != 0) {
+ dbenv->err(dbenv, ret, "%s", buf);
goto err;
}
- if (ret != 0) {
- dbenv->err(dbenv, errno, "%s: write %s/%s", to_dir, file);
- goto err;
- }
+ /* Copy the data. */
+ while ((ret = __os_read(dbenv, rfhp, buf, MEGABYTE, &nr)) == 0 &&
+ nr > 0)
+ if ((ret = __os_write(dbenv, wfhp, buf, nr, &nw)) != 0)
+ break;
if (0) {
err: ret = 1;
@@ -786,14 +812,15 @@ err: ret = 1;
if (buf != NULL)
free(buf);
- if (rfd != -1)
- (void)close(rfd);
+ if (rfhp != NULL && __os_closehandle(dbenv, rfhp) != 0)
+ ret = 1;
/* We may be running on a remote filesystem; force the flush. */
- if (wfd != -1 && (fsync(wfd) != 0 || close(wfd) != 0)) {
- dbenv->err(dbenv,
- errno, "%s: fsync %s/%s", to_dir, file);
- ret = 1;
+ if (wfhp != NULL) {
+ if (__os_fsync(dbenv, wfhp) != 0)
+ ret = 1;
+ if (__os_closehandle(dbenv, wfhp) != 0)
+ ret = 1;
}
return (ret);
}
diff --git a/db/db_load/db_load.c b/db/db_load/db_load.c
index 5cdfc79e8..66131847a 100644
--- a/db/db_load/db_load.c
+++ b/db/db_load/db_load.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: db_load.c,v 12.18 2006/08/26 09:23:08 bostic Exp $
+ * $Id: db_load.c,v 12.23 2007/05/17 17:17:42 bostic Exp $
*/
#include "db_config.h"
@@ -15,7 +14,7 @@
#ifndef lint
static const char copyright[] =
- "Copyright (c) 1996-2006\nOracle Corporation. All rights reserved.\n";
+ "Copyright (c) 1996,2007 Oracle. All rights reserved.\n";
#endif
typedef struct { /* XXX: Globals. */
@@ -72,7 +71,7 @@ main(argc, argv)
int ch, existed, exitval, ret;
char **clist, **clp;
- if ((progname = strrchr(argv[0], '/')) == NULL)
+ if ((progname = __db_rpath(argv[0])) == NULL)
progname = argv[0];
else
++progname;
@@ -843,7 +842,27 @@ rheader(dbenv, dbp, dbtypep, subdbp, checkprintp, keysp)
value = p--;
- if (name[0] == '\0' || value[0] == '\0')
+ if (name[0] == '\0')
+ goto badfmt;
+
+ /*
+ * The only values that may be zero-length are database names.
+ * In the original Berkeley DB code it was possible to create
+ * zero-length database names, and the db_load code was then
+ * changed to allow such databases to be be dumped and loaded.
+ * [#8204]
+ */
+ if (strcmp(name, "database") == 0 ||
+ strcmp(name, "subdatabase") == 0) {
+ if ((ret = convprintable(dbenv, value, subdbp)) != 0) {
+ dbp->err(dbp, ret, "error reading db name");
+ goto err;
+ }
+ continue;
+ }
+
+ /* No other values may be zero-length. */
+ if (value[0] == '\0')
goto badfmt;
if (strcmp(name, "HEADER") == 0)
@@ -894,14 +913,6 @@ rheader(dbenv, dbp, dbtypep, subdbp, checkprintp, keysp)
dbp->errx(dbp, "line %lu: unknown type", G(lineno));
goto err;
}
- if (strcmp(name, "database") == 0 ||
- strcmp(name, "subdatabase") == 0) {
- if ((ret = convprintable(dbenv, value, subdbp)) != 0) {
- dbp->err(dbp, ret, "error reading db name");
- goto err;
- }
- continue;
- }
if (strcmp(name, "keys") == 0) {
if (strcmp(value, "1") == 0)
*keysp = 1;
@@ -1009,6 +1020,9 @@ convprintable(dbenv, instr, outstrp)
/*
* Just malloc a string big enough for the whole input string;
* the output string will be smaller (or of equal length).
+ *
+ * Note that we may be passed a zero-length string and need to
+ * be able to duplicate it.
*/
if ((outstr = malloc(strlen(instr) + 1)) == NULL)
return (ENOMEM);
diff --git a/db/db_printlog/db_printlog.c b/db/db_printlog/db_printlog.c
index 1ef2896ee..035dbbdfa 100644
--- a/db/db_printlog/db_printlog.c
+++ b/db/db_printlog/db_printlog.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: db_printlog.c,v 12.20 2006/08/26 09:23:10 bostic Exp $
+ * $Id: db_printlog.c,v 12.25 2007/06/01 15:36:50 sue Exp $
*/
#include "db_config.h"
@@ -20,7 +19,7 @@
#ifndef lint
static const char copyright[] =
- "Copyright (c) 1996-2006\nOracle Corporation. All rights reserved.\n";
+ "Copyright (c) 1996,2007 Oracle. All rights reserved.\n";
#endif
int env_init_print __P((DB_ENV *, u_int32_t,
@@ -59,7 +58,7 @@ main(argc, argv)
int (**dtab) __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
char *home, *passwd;
- if ((progname = strrchr(argv[0], '/')) == NULL)
+ if ((progname = __db_rpath(argv[0])) == NULL)
progname = argv[0];
else
++progname;
@@ -229,7 +228,7 @@ main(argc, argv)
}
for (; !__db_util_interrupted(); logcflag = rflag ? DB_PREV : DB_NEXT) {
if (repflag) {
- ret = dbc->c_get(dbc, &keydbt, &data, logcflag);
+ ret = dbc->get(dbc, &keydbt, &data, logcflag);
if (ret == 0)
key = ((REP_CONTROL *)keydbt.data)->lsn;
} else
@@ -292,7 +291,7 @@ shutdown: exitval = 1;
if (logc != NULL && (ret = logc->close(logc, 0)) != 0)
exitval = 1;
- if (dbc != NULL && (ret = dbc->c_close(dbc)) != 0)
+ if (dbc != NULL && (ret = dbc->close(dbc)) != 0)
exitval = 1;
if (dbp != NULL && (ret = dbp->close(dbp, 0)) != 0)
@@ -344,7 +343,11 @@ env_init_print(dbenv, version, dtabp, dtabsizep)
/*
* There are no log record/recovery differences between
* 4.4 and 4.5. The log version changed due to checksum.
+ * There are no log recovery differences between
+ * 4.5 and 4.6. The name of the rep_gen in txn_checkpoint
+ * changed (to spare, since we don't use it anymore).
*/
+ case DB_LOGVERSION_46:
case DB_LOGVERSION_45:
case DB_LOGVERSION_44:
ret = 0;
diff --git a/db/db_recover/db_recover.c b/db/db_recover/db_recover.c
index 4082279a8..4e5c12d8e 100644
--- a/db/db_recover/db_recover.c
+++ b/db/db_recover/db_recover.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: db_recover.c,v 12.9 2006/08/26 09:23:13 bostic Exp $
+ * $Id: db_recover.c,v 12.14 2007/05/17 15:15:03 bostic Exp $
*/
#include "db_config.h"
@@ -13,15 +12,17 @@
#ifndef lint
static const char copyright[] =
- "Copyright (c) 1996-2006\nOracle Corporation. All rights reserved.\n";
+ "Copyright (c) 1996,2007 Oracle. All rights reserved.\n";
#endif
+void feedback __P((DB_ENV *, int, int));
int main __P((int, char *[]));
int read_timestamp __P((char *, time_t *));
int usage __P((void));
int version_check __P((void));
const char *progname;
+int newline_needed;
int
main(argc, argv)
@@ -33,10 +34,10 @@ main(argc, argv)
DB_ENV *dbenv;
time_t timestamp;
u_int32_t flags;
- int ch, exitval, fatal_recover, ret, retain_env, verbose;
+ int ch, exitval, fatal_recover, ret, retain_env, set_feedback, verbose;
char *home, *passwd;
- if ((progname = strrchr(argv[0], '/')) == NULL)
+ if ((progname = __db_rpath(argv[0])) == NULL)
progname = argv[0];
else
++progname;
@@ -46,8 +47,8 @@ main(argc, argv)
home = passwd = NULL;
timestamp = 0;
- exitval = fatal_recover = retain_env = verbose = 0;
- while ((ch = getopt(argc, argv, "ceh:P:t:Vv")) != EOF)
+ exitval = fatal_recover = retain_env = set_feedback = verbose = 0;
+ while ((ch = getopt(argc, argv, "cefh:P:t:Vv")) != EOF)
switch (ch) {
case 'c':
fatal_recover = 1;
@@ -55,6 +56,9 @@ main(argc, argv)
case 'e':
retain_env = 1;
break;
+ case 'f':
+ set_feedback = 1;
+ break;
case 'h':
home = optarg;
break;
@@ -101,6 +105,8 @@ main(argc, argv)
}
dbenv->set_errfile(dbenv, stderr);
dbenv->set_errpfx(dbenv, progname);
+ if (set_feedback)
+ (void)dbenv->set_feedback(dbenv, feedback);
if (verbose)
(void)dbenv->set_verbose(dbenv, DB_VERB_RECOVERY, 1);
if (timestamp &&
@@ -141,6 +147,10 @@ main(argc, argv)
shutdown: exitval = 1;
}
+ /* Flush to the next line of the output device. */
+ if (newline_needed)
+ printf("\n");
+
/* Clean up the environment. */
if ((ret = dbenv->close(dbenv, 0)) != 0) {
exitval = 1;
@@ -156,6 +166,25 @@ shutdown: exitval = 1;
return (exitval == 0 ? EXIT_SUCCESS : EXIT_FAILURE);
}
+/*
+ * feedback --
+ * provide feedback on recovery progress.
+ */
+void
+feedback(dbenv, opcode, percent)
+ DB_ENV *dbenv;
+ int opcode;
+ int percent;
+{
+ COMPQUIET(dbenv, NULL);
+
+ if (opcode == DB_RECOVER) {
+ printf("\rrecovery %d%% complete", percent);
+ (void)fflush(stdout);
+ newline_needed = 1;
+ }
+}
+
#define ATOI2(ar) ((ar)[0] - '0') * 10 + ((ar)[1] - '0'); (ar) += 2;
/*
@@ -262,7 +291,7 @@ int
usage()
{
(void)fprintf(stderr, "usage: %s %s\n", progname,
- "[-ceVv] [-h home] [-P password] [-t [[CC]YY]MMDDhhmm[.SS]]");
+ "[-cefVv] [-h home] [-P password] [-t [[CC]YY]MMDDhhmm[.SS]]");
return (EXIT_FAILURE);
}
diff --git a/db/db_stat/db_stat.c b/db/db_stat/db_stat.c
index 62fa01878..2ae62f683 100644
--- a/db/db_stat/db_stat.c
+++ b/db/db_stat/db_stat.c
@@ -1,24 +1,22 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: db_stat.c,v 12.14 2006/08/26 09:23:19 bostic Exp $
+ * $Id: db_stat.c,v 12.22 2007/07/06 15:43:57 alanb Exp $
*/
#include "db_config.h"
#include "db_int.h"
-#include "dbinc/db_page.h"
#ifndef lint
static const char copyright[] =
- "Copyright (c) 1996-2006\nOracle Corporation. All rights reserved.\n";
+ "Copyright (c) 1996,2007 Oracle. All rights reserved.\n";
#endif
-typedef enum { T_NOTSET,
- T_DB, T_ENV, T_LOCK, T_LOG, T_MPOOL, T_MUTEX, T_REP, T_TXN } test_t;
+typedef enum { T_NOTSET, T_DB,
+ T_ENV, T_LOCK, T_LOG, T_MPOOL, T_MUTEX, T_REP, T_TXN } test_t;
int db_init __P((DB_ENV *, char *, test_t, u_int32_t, int *));
int main __P((int, char *[]));
@@ -42,7 +40,7 @@ main(argc, argv)
int nflag, private, resize, ret;
char *db, *home, *p, *passwd, *subdb;
- if ((progname = strrchr(argv[0], '/')) == NULL)
+ if ((progname = __db_rpath(argv[0])) == NULL)
progname = argv[0];
else
++progname;
@@ -58,7 +56,7 @@ main(argc, argv)
db = home = passwd = subdb = NULL;
while ((ch = getopt(argc,
- argv, "C:cd:Eefh:L:lM:mNP:R:rs:tVxX:Z")) != EOF)
+ argv, "C:cd:Eefgh:L:lM:mNP:R:rs:tVxX:Z")) != EOF)
switch (ch) {
case 'C': case 'c':
if (ttype != T_NOTSET && ttype != T_LOCK)
@@ -330,6 +328,10 @@ retry: if ((ret = db_env_create(&dbenv, 0)) != 0) {
goto err;
break;
case T_REP:
+#ifdef HAVE_REPLICATION_THREADS
+ if (dbenv->repmgr_stat_print(dbenv, flags))
+ goto err;
+#endif
if (dbenv->rep_stat_print(dbenv, flags))
goto err;
break;
@@ -420,8 +422,6 @@ db_init(dbenv, home, ttype, cache, is_private)
oflags |= DB_INIT_MPOOL;
if (ttype == T_LOG)
oflags |= DB_INIT_LOG;
- if (ttype == T_REP)
- oflags |= DB_INIT_REP;
if ((ret = dbenv->open(dbenv, home, oflags, 0)) == 0)
return (0);
diff --git a/db/db_upgrade/db_upgrade.c b/db/db_upgrade/db_upgrade.c
index 0d7319050..05e5dc187 100644
--- a/db/db_upgrade/db_upgrade.c
+++ b/db/db_upgrade/db_upgrade.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: db_upgrade.c,v 12.9 2006/08/26 09:23:22 bostic Exp $
+ * $Id: db_upgrade.c,v 12.12 2007/05/17 15:15:04 bostic Exp $
*/
#include "db_config.h"
@@ -13,7 +12,7 @@
#ifndef lint
static const char copyright[] =
- "Copyright (c) 1996-2006\nOracle Corporation. All rights reserved.\n";
+ "Copyright (c) 1996,2007 Oracle. All rights reserved.\n";
#endif
int main __P((int, char *[]));
@@ -35,7 +34,7 @@ main(argc, argv)
int ch, exitval, nflag, ret, t_ret, verbose;
char *home, *passwd;
- if ((progname = strrchr(argv[0], '/')) == NULL)
+ if ((progname = __db_rpath(argv[0])) == NULL)
progname = argv[0];
else
++progname;
diff --git a/db/db_verify/db_verify.c b/db/db_verify/db_verify.c
index f09ebc4ff..f0533b717 100644
--- a/db/db_verify/db_verify.c
+++ b/db/db_verify/db_verify.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: db_verify.c,v 12.8 2006/08/26 09:23:23 bostic Exp $
+ * $Id: db_verify.c,v 12.11 2007/05/17 15:15:05 bostic Exp $
*/
#include "db_config.h"
@@ -13,7 +12,7 @@
#ifndef lint
static const char copyright[] =
- "Copyright (c) 1996-2006\nOracle Corporation. All rights reserved.\n";
+ "Copyright (c) 1996,2007 Oracle. All rights reserved.\n";
#endif
int main __P((int, char *[]));
@@ -36,7 +35,7 @@ main(argc, argv)
int quiet, resize, ret;
char *home, *passwd;
- if ((progname = strrchr(argv[0], '/')) == NULL)
+ if ((progname = __db_rpath(argv[0])) == NULL)
progname = argv[0];
else
++progname;
diff --git a/db/dbinc/btree.h b/db/dbinc/btree.h
index e7b3998b4..9480cf2e4 100644
--- a/db/dbinc/btree.h
+++ b/db/dbinc/btree.h
@@ -1,8 +1,7 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*/
/*
* Copyright (c) 1990, 1993, 1994, 1995, 1996
@@ -39,7 +38,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: btree.h,v 12.12 2006/08/24 14:45:27 bostic Exp $
+ * $Id: btree.h,v 12.14 2007/05/17 15:15:05 bostic Exp $
*/
#ifndef _DB_BTREE_H_
#define _DB_BTREE_H_
diff --git a/db/dbinc/clock.h b/db/dbinc/clock.h
new file mode 100644
index 000000000..c6256ef92
--- /dev/null
+++ b/db/dbinc/clock.h
@@ -0,0 +1,108 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 2005,2007 Oracle. All rights reserved.
+ *
+ * $Id: clock.h,v 12.5 2007/05/17 17:22:36 bostic Exp $
+ */
+/*
+ * Copyright (c) 1982, 1986, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * @(#)time.h 8.5 (Berkeley) 5/4/95
+ * FreeBSD: src/sys/sys/time.h,v 1.65 2004/04/07 04:19:49 imp Exp
+ */
+
+#ifndef _DB_CLOCK_H_
+#define _DB_CLOCK_H_
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+/*
+ * This declaration is POSIX-compatible. Because there are lots of different
+ * time.h include file patterns out there, it's easier to declare our own name
+ * in all cases than to try and discover if a system has a struct timespec.
+ * For the same reason, and because we'd have to #include <sys/time.h> in db.h,
+ * we don't export any timespec structures in the DB API, even in places where
+ * it would make sense, like the replication statistics information.
+ */
+typedef struct {
+ time_t tv_sec; /* seconds */
+ long tv_nsec; /* nanoseconds */
+} db_timespec;
+
+/* Operations on timespecs */
+#undef timespecclear
+#define timespecclear(tvp) ((tvp)->tv_sec = (tvp)->tv_nsec = 0)
+#undef timespecisset
+#define timespecisset(tvp) ((tvp)->tv_sec || (tvp)->tv_nsec)
+#undef timespeccmp
+#define timespeccmp(tvp, uvp, cmp) \
+ (((tvp)->tv_sec == (uvp)->tv_sec) ? \
+ ((tvp)->tv_nsec cmp (uvp)->tv_nsec) : \
+ ((tvp)->tv_sec cmp (uvp)->tv_sec))
+#undef timespecadd
+#define timespecadd(vvp, uvp) \
+ do { \
+ (vvp)->tv_sec += (uvp)->tv_sec; \
+ (vvp)->tv_nsec += (uvp)->tv_nsec; \
+ if ((vvp)->tv_nsec >= 1000000000) { \
+ (vvp)->tv_sec++; \
+ (vvp)->tv_nsec -= 1000000000; \
+ } \
+ } while (0)
+#undef timespecsub
+#define timespecsub(vvp, uvp) \
+ do { \
+ (vvp)->tv_sec -= (uvp)->tv_sec; \
+ (vvp)->tv_nsec -= (uvp)->tv_nsec; \
+ if ((vvp)->tv_nsec < 0) { \
+ (vvp)->tv_sec--; \
+ (vvp)->tv_nsec += 1000000000; \
+ } \
+ } while (0)
+
+#define DB_TIMEOUT_TO_TIMESPEC(t, vvp) \
+ do { \
+ (vvp)->tv_sec = (time_t)((t) / 1000000); \
+ (vvp)->tv_nsec = (long)(((t) % 1000000) * 1000); \
+ } while (0)
+
+#define DB_TIMESPEC_TO_TIMEOUT(t, vvp) \
+ do { \
+ t = (u_long)((vvp)->tv_sec * 1000000); \
+ t += (u_long)((vvp)->tv_nsec / 1000); \
+ /* Add in 1 usec for lost nsec precision. */ \
+ t++; \
+ } while (0)
+
+#if defined(__cplusplus)
+}
+#endif
+#endif /* !_DB_CLOCK_H_ */
diff --git a/db/dbinc/crypto.h b/db/dbinc/crypto.h
index 86c7a0b7d..a83f35e66 100644
--- a/db/dbinc/crypto.h
+++ b/db/dbinc/crypto.h
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: crypto.h,v 12.5 2006/08/24 14:45:27 bostic Exp $
+ * $Id: crypto.h,v 12.7 2007/05/17 15:15:05 bostic Exp $
*/
#ifndef _DB_CRYPTO_H_
diff --git a/db/dbinc/cxx_int.h b/db/dbinc/cxx_int.h
index bde013543..78550fb95 100644
--- a/db/dbinc/cxx_int.h
+++ b/db/dbinc/cxx_int.h
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: cxx_int.h,v 12.4 2006/08/24 14:45:27 bostic Exp $
+ * $Id: cxx_int.h,v 12.6 2007/05/17 15:15:05 bostic Exp $
*/
#ifndef _DB_CXX_INT_H_
diff --git a/db/dbinc/db.in b/db/dbinc/db.in
index 19180e2c3..4aa823d89 100644
--- a/db/dbinc/db.in
+++ b/db/dbinc/db.in
@@ -1,10 +1,9 @@
/*
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: db.in,v 12.108 2006/09/13 14:53:37 mjc Exp $
+ * $Id: db.in,v 12.158 2007/06/28 14:23:35 mjc Exp $
*
* db.h include file layout:
* General.
@@ -21,7 +20,7 @@
#ifndef _DB_H_
#define _DB_H_
-#ifndef __NO_SYSTEM_INCLUDES
+#ifndef __NO_SYSTEM_INCLUDES
#include <sys/types.h>
@inttypes_h_decl@
@stdint_h_decl@
@@ -73,12 +72,13 @@ extern "C" {
#endif
@u_char_decl@
-@u_short_decl@
@u_int_decl@
@u_long_decl@
-@ssize_t_decl@
+@u_short_decl@
/*
+ * Missing ANSI types.
+ *
* uintmax_t --
* Largest unsigned type, used to align structures in memory. We don't store
* floating point types in structures, so integral types should be sufficient
@@ -97,6 +97,13 @@ extern "C" {
@uintmax_t_decl@
@uintptr_t_decl@
+@FILE_t_decl@
+@off_t_decl@
+@pid_t_decl@
+@size_t_decl@
+@ssize_t_decl@
+@time_t_decl@
+
/*
* Sequences are only available on machines with 64-bit integral types.
*/
@@ -104,7 +111,6 @@ extern "C" {
/* Thread and process identification. */
@db_threadid_t_decl@
-@pid_t_decl@
/* Basic types that are exported or quasi-exported. */
typedef u_int32_t db_pgno_t; /* Page number type. */
@@ -138,7 +144,9 @@ struct __db_env; typedef struct __db_env DB_ENV;
struct __db_h_stat; typedef struct __db_h_stat DB_HASH_STAT;
struct __db_ilock; typedef struct __db_ilock DB_LOCK_ILOCK;
struct __db_lock_stat; typedef struct __db_lock_stat DB_LOCK_STAT;
+struct __db_lock_hstat; typedef struct __db_lock_hstat DB_LOCK_HSTAT;
struct __db_lock_u; typedef struct __db_lock_u DB_LOCK;
+struct __db_locker; typedef struct __db_locker DB_LOCKER;
struct __db_lockreq; typedef struct __db_lockreq DB_LOCKREQ;
struct __db_locktab; typedef struct __db_locktab DB_LOCKTAB;
struct __db_log; typedef struct __db_log DB_LOG;
@@ -158,6 +166,8 @@ struct __db_rep; typedef struct __db_rep DB_REP;
struct __db_rep_stat; typedef struct __db_rep_stat DB_REP_STAT;
struct __db_repmgr_site; \
typedef struct __db_repmgr_site DB_REPMGR_SITE;
+struct __db_repmgr_stat; \
+ typedef struct __db_repmgr_stat DB_REPMGR_STAT;
struct __db_seq_record; typedef struct __db_seq_record DB_SEQ_RECORD;
struct __db_seq_stat; typedef struct __db_seq_stat DB_SEQUENCE_STAT;
struct __db_sequence; typedef struct __db_sequence DB_SEQUENCE;
@@ -184,13 +194,14 @@ struct __db_dbt {
void *app_data;
#define DB_DBT_APPMALLOC 0x001 /* Callback allocated memory. */
-#define DB_DBT_ISSET 0x002 /* Lower level calls set value. */
-#define DB_DBT_MALLOC 0x004 /* Return in malloc'd memory. */
-#define DB_DBT_PARTIAL 0x008 /* Partial put/get. */
-#define DB_DBT_REALLOC 0x010 /* Return in realloc'd memory. */
-#define DB_DBT_USERCOPY 0x020 /* Use the user-supplied callback. */
-#define DB_DBT_USERMEM 0x040 /* Return in user's memory. */
-#define DB_DBT_DUPOK 0x080 /* Insert if duplicate. */
+#define DB_DBT_DUPOK 0x002 /* Insert if duplicate. */
+#define DB_DBT_ISSET 0x004 /* Lower level calls set value. */
+#define DB_DBT_MALLOC 0x008 /* Return in malloc'd memory. */
+#define DB_DBT_MULTIPLE 0x010 /* References multiple records. */
+#define DB_DBT_PARTIAL 0x020 /* Partial put/get. */
+#define DB_DBT_REALLOC 0x040 /* Return in realloc'd memory. */
+#define DB_DBT_USERCOPY 0x080 /* Use the user-supplied callback. */
+#define DB_DBT_USERMEM 0x100 /* Return in user's memory. */
u_int32_t flags;
};
@@ -209,10 +220,10 @@ struct __db_dbt {
#define DB_THREAD 0x0000080 /* Applications are threaded. */
#define DB_TRUNCATE 0x0000100 /* Discard existing DB (O_TRUNC). */
#define DB_TXN_NOSYNC 0x0000200 /* Do not sync log on commit. */
-#define DB_TXN_NOT_DURABLE 0x0000400 /* Do not log changes. */
-#define DB_TXN_WRITE_NOSYNC 0x0000800 /* Write the log but don't sync. */
-#define DB_USE_ENVIRON 0x0001000 /* Use the environment. */
-#define DB_USE_ENVIRON_ROOT 0x0002000 /* Use the environment if root. */
+#define DB_TXN_NOWAIT 0x0000400 /* Do not wait for locks. */
+#define DB_TXN_NOT_DURABLE 0x0000800 /* Do not log changes. */
+#define DB_TXN_WRITE_NOSYNC 0x0001000 /* Write the log but don't sync. */
+#define DB_SPARE_FLAG 0x0002000 /* Spare. */
/*
* Common flags --
@@ -224,9 +235,9 @@ struct __db_dbt {
* (Note: until the 4.3 release, legal to DB->associate, DB->del,
* DB->put, DB->remove, DB->rename and DB->truncate, and others.)
* DB_READ_COMMITTED:
- * DB->cursor, DB->get, DB->join, DBcursor->c_get, DB_ENV->txn_begin
+ * DB->cursor, DB->get, DB->join, DBcursor->get, DB_ENV->txn_begin
* DB_READ_UNCOMMITTED:
- * DB->cursor, DB->get, DB->join, DB->open, DBcursor->c_get,
+ * DB->cursor, DB->get, DB->join, DB->open, DBcursor->get,
* DB_ENV->txn_begin
* DB_TXN_SNAPSHOT:
* DB_ENV->set_flags, DB_ENV->txn_begin, DB->cursor
@@ -236,6 +247,7 @@ struct __db_dbt {
* without also changing the masks for the flags that can be OR'd into DB
* access method and cursor operation values.
*/
+#define DB_IGNORE_LEASE 0x01000000/* Ignore leases. */
#define DB_AUTO_COMMIT 0x02000000/* Implied transaction. */
#define DB_READ_COMMITTED 0x04000000/* Degree 2 isolation. */
@@ -262,19 +274,24 @@ struct __db_dbt {
#define DB_XA_CREATE 0x0000002 /* Open in an XA environment. */
/*
- * Flags private to DB_ENV->open.
+ * Flags shared by DB_ENV->remove and DB_ENV->open.
* Shared flags up to 0x0002000 */
-#define DB_INIT_CDB 0x0004000 /* Concurrent Access Methods. */
-#define DB_INIT_LOCK 0x0008000 /* Initialize locking. */
-#define DB_INIT_LOG 0x0010000 /* Initialize logging. */
-#define DB_INIT_MPOOL 0x0020000 /* Initialize mpool. */
-#define DB_INIT_REP 0x0040000 /* Initialize replication. */
-#define DB_INIT_TXN 0x0080000 /* Initialize transactions. */
-#define DB_LOCKDOWN 0x0100000 /* Lock memory into physical core. */
-#define DB_PRIVATE 0x0200000 /* DB_ENV is process local. */
-#define DB_RECOVER_FATAL 0x0400000 /* Run catastrophic recovery. */
-#define DB_REGISTER 0x0800000 /* Multi-process registry. */
-#define DB_SYSTEM_MEM 0x1000000 /* Use system-backed memory. */
+#define DB_USE_ENVIRON 0x0004000 /* Use the environment. */
+#define DB_USE_ENVIRON_ROOT 0x0008000 /* Use the environment if root. */
+/*
+ * Flags private to DB_ENV->open.
+ */
+#define DB_INIT_CDB 0x0010000 /* Concurrent Access Methods. */
+#define DB_INIT_LOCK 0x0020000 /* Initialize locking. */
+#define DB_INIT_LOG 0x0040000 /* Initialize logging. */
+#define DB_INIT_MPOOL 0x0080000 /* Initialize mpool. */
+#define DB_INIT_REP 0x0100000 /* Initialize replication. */
+#define DB_INIT_TXN 0x0200000 /* Initialize transactions. */
+#define DB_LOCKDOWN 0x0400000 /* Lock memory into physical core. */
+#define DB_PRIVATE 0x0800000 /* DB_ENV is process local. */
+#define DB_RECOVER_FATAL 0x1000000 /* Run catastrophic recovery. */
+#define DB_REGISTER 0x2000000 /* Multi-process registry. */
+#define DB_SYSTEM_MEM 0x4000000 /* Use system-backed memory. */
#define DB_JOINENV 0x0 /* Compatibility. */
@@ -296,8 +313,13 @@ struct __db_dbt {
/*
* Flags private to DB_ENV->txn_begin.
* Shared flags up to 0x0002000 */
-#define DB_TXN_NOWAIT 0x0004000 /* Do not wait for locks in this TXN. */
-#define DB_TXN_SYNC 0x0008000 /* Always sync log on commit. */
+#define DB_TXN_SYNC 0x0004000 /* Always sync log on commit. */
+#define DB_TXN_WAIT 0x0008000 /* Always wait for locks in this TXN. */
+
+/*
+ * Flags private to DB_ENV->txn_checkpoint.
+ * Shared flags up to 0x0002000 */
+#define DB_CKP_INTERNAL 0x0004000 /* Internally generated checkpoint. */
/*
* Flags private to DB_ENV->set_encrypt.
@@ -430,9 +452,11 @@ struct __db_mutex_stat {
u_int32_t st_mutex_inuse_max; /* Maximum mutexes ever in use */
/* The following fields are filled-in from other places. */
+#ifndef __TEST_DB_NO_STATISTICS
u_int32_t st_region_wait; /* Region lock granted after wait. */
u_int32_t st_region_nowait; /* Region lock granted without wait. */
roff_t st_regsize; /* Region size. */
+#endif
};
/* This is the length of the buffer passed to DB_ENV->thread_id_string() */
@@ -468,6 +492,11 @@ struct __db_mutex_stat {
#define DB_LOCK_SWITCH 0x010 /* Internal: switch existing lock. */
#define DB_LOCK_UPGRADE 0x020 /* Internal: upgrade existing lock. */
+/* Flag values for DbEnv.set_timeout. */
+#define DB_SET_LOCK_TIMEOUT 1 /* Set lock timeout */
+#define DB_SET_TXN_NOW 2 /* Timeout lock now (internal) */
+#define DB_SET_TXN_TIMEOUT 3 /* Set transaction timeout */
+
/*
* Simple R/W lock modes and for multi-granularity intention locking.
*
@@ -527,9 +556,10 @@ struct __db_lock_stat {
u_int32_t st_maxlockers; /* Maximum num of lockers in table. */
u_int32_t st_maxobjects; /* Maximum num of objects in table. */
int st_nmodes; /* Number of lock modes. */
+ u_int32_t st_nlockers; /* Current number of lockers. */
+#ifndef __TEST_DB_NO_STATISTICS
u_int32_t st_nlocks; /* Current number of locks. */
u_int32_t st_maxnlocks; /* Maximum number of locks so far. */
- u_int32_t st_nlockers; /* Current number of lockers. */
u_int32_t st_maxnlockers; /* Maximum number of lockers so far. */
u_int32_t st_nobjects; /* Current number of objects. */
u_int32_t st_maxnobjects; /* Maximum number of objects so far. */
@@ -544,9 +574,29 @@ struct __db_lock_stat {
u_int32_t st_nlocktimeouts; /* Number of lock timeouts. */
db_timeout_t st_txntimeout; /* Transaction timeout. */
u_int32_t st_ntxntimeouts; /* Number of transaction timeouts. */
+ u_int32_t st_objs_wait; /* Object lock granted after wait. */
+ u_int32_t st_objs_nowait; /* Object lock granted without wait. */
+ u_int32_t st_lockers_wait; /* Locker lock granted after wait. */
+ u_int32_t st_lockers_nowait; /* Locker lock granted without wait. */
+ u_int32_t st_locks_wait; /* Lock lock granted after wait. */
+ u_int32_t st_locks_nowait; /* Lock lock granted without wait. */
u_int32_t st_region_wait; /* Region lock granted after wait. */
u_int32_t st_region_nowait; /* Region lock granted without wait. */
+ u_int32_t st_hash_len; /* Max length of bucket. */
roff_t st_regsize; /* Region size. */
+#endif
+};
+
+struct __db_lock_hstat {
+ u_int32_t st_nrequests; /* Number of lock gets. */
+ u_int32_t st_nreleases; /* Number of lock puts. */
+ u_int32_t st_nupgrade; /* Number of lock upgrades. */
+ u_int32_t st_ndowngrade; /* Number of lock downgrades. */
+ u_int32_t st_lock_wait; /* Lock conflicts w/ subsequent wait */
+ u_int32_t st_lock_nowait; /* Lock conflicts w/o subsequent wait */
+ u_int32_t st_nlocktimeouts; /* Number of lock timeouts. */
+ u_int32_t st_ntxntimeouts; /* Number of transaction timeouts. */
+ u_int32_t st_hash_len; /* Max length of bucket. */
};
/*
@@ -587,7 +637,7 @@ struct __db_lockreq {
/*******************************************************
* Logging.
*******************************************************/
-#define DB_LOGVERSION 12 /* Current log version. */
+#define DB_LOGVERSION 13 /* Current log version. */
#define DB_LOGOLDVER 8 /* Oldest log version supported. */
#define DB_LOGMAGIC 0x040988
@@ -638,12 +688,12 @@ struct __db_lsn {
struct __db_log_cursor {
DB_ENV *dbenv; /* Enclosing dbenv. */
- DB_FH *c_fhp; /* File handle. */
- DB_LSN c_lsn; /* Cursor: LSN */
- u_int32_t c_len; /* Cursor: record length */
- u_int32_t c_prev; /* Cursor: previous record's offset */
+ DB_FH *fhp; /* File handle. */
+ DB_LSN lsn; /* Cursor: LSN */
+ u_int32_t len; /* Cursor: record length */
+ u_int32_t prev; /* Cursor: previous record's offset */
- DBT c_dbt; /* Return DBT. */
+ DBT dbt; /* Return DBT. */
DB_LSN p_lsn; /* Persist LSN. */
u_int32_t p_version; /* Persist version. */
@@ -673,11 +723,12 @@ struct __db_log_stat {
int st_mode; /* Log file permissions mode. */
u_int32_t st_lg_bsize; /* Log buffer size. */
u_int32_t st_lg_size; /* Log file size. */
+ u_int32_t st_wc_bytes; /* Bytes to log since checkpoint. */
+ u_int32_t st_wc_mbytes; /* Megabytes to log since checkpoint. */
+#ifndef __TEST_DB_NO_STATISTICS
u_int32_t st_record; /* Records entered into the log. */
u_int32_t st_w_bytes; /* Bytes to log. */
u_int32_t st_w_mbytes; /* Megabytes to log. */
- u_int32_t st_wc_bytes; /* Bytes to log since checkpoint. */
- u_int32_t st_wc_mbytes; /* Megabytes to log since checkpoint. */
u_int32_t st_wcount; /* Total I/O writes to the log. */
u_int32_t st_wcount_fill; /* Overflow writes to the log. */
u_int32_t st_rcount; /* Total I/O reads from the log. */
@@ -688,9 +739,10 @@ struct __db_log_stat {
u_int32_t st_cur_offset; /* Current log file offset. */
u_int32_t st_disk_file; /* Known on disk log file number. */
u_int32_t st_disk_offset; /* Known on disk log file offset. */
- roff_t st_regsize; /* Region size. */
u_int32_t st_maxcommitperflush; /* Max number of commits in a flush. */
u_int32_t st_mincommitperflush; /* Min number of commits in a flush. */
+ roff_t st_regsize; /* Region size. */
+#endif
};
/*
@@ -714,15 +766,16 @@ struct __db_log_stat {
#define DB_MPOOL_LAST 0x010 /* Return the last page. */
#define DB_MPOOL_NEW 0x020 /* Create a new page. */
-/* Flag values for DB_MPOOLFILE->put, DB_MPOOLFILE->set. */
-#define DB_MPOOL_DISCARD 0x001 /* Don't cache the page. */
+/* Undocumented flag value for DB_MPOOLFILE->close. */
+#define DB_MPOOL_DISCARD 0x001 /* Discard file. */
/* Flags values for DB_MPOOLFILE->set_flags. */
#define DB_MPOOL_NOFILE 0x001 /* Never open a backing file. */
#define DB_MPOOL_UNLINK 0x002 /* Unlink the file on last close. */
-/* Priority values for DB_MPOOLFILE->set_priority. */
+/* Priority values for DB_MPOOLFILE->{put,set_priority}. */
typedef enum {
+ DB_PRIORITY_UNCHANGED=0,
DB_PRIORITY_VERY_LOW=1,
DB_PRIORITY_LOW=2,
DB_PRIORITY_DEFAULT=3,
@@ -783,24 +836,24 @@ struct __db_mpoolfile {
int (*close) __P((DB_MPOOLFILE *, u_int32_t));
int (*get)
__P((DB_MPOOLFILE *, db_pgno_t *, DB_TXN *, u_int32_t, void *));
- int (*open) __P((DB_MPOOLFILE *, const char *, u_int32_t, int, size_t));
- int (*put) __P((DB_MPOOLFILE *, void *, u_int32_t));
- int (*set) __P((DB_MPOOLFILE *, void *, u_int32_t));
int (*get_clear_len) __P((DB_MPOOLFILE *, u_int32_t *));
- int (*set_clear_len) __P((DB_MPOOLFILE *, u_int32_t));
int (*get_fileid) __P((DB_MPOOLFILE *, u_int8_t *));
- int (*set_fileid) __P((DB_MPOOLFILE *, u_int8_t *));
int (*get_flags) __P((DB_MPOOLFILE *, u_int32_t *));
- int (*set_flags) __P((DB_MPOOLFILE *, u_int32_t, int));
int (*get_ftype) __P((DB_MPOOLFILE *, int *));
- int (*set_ftype) __P((DB_MPOOLFILE *, int));
+ int (*get_last_pgno) __P((DB_MPOOLFILE *, db_pgno_t *));
int (*get_lsn_offset) __P((DB_MPOOLFILE *, int32_t *));
- int (*set_lsn_offset) __P((DB_MPOOLFILE *, int32_t));
int (*get_maxsize) __P((DB_MPOOLFILE *, u_int32_t *, u_int32_t *));
- int (*set_maxsize) __P((DB_MPOOLFILE *, u_int32_t, u_int32_t));
int (*get_pgcookie) __P((DB_MPOOLFILE *, DBT *));
- int (*set_pgcookie) __P((DB_MPOOLFILE *, DBT *));
int (*get_priority) __P((DB_MPOOLFILE *, DB_CACHE_PRIORITY *));
+ int (*open) __P((DB_MPOOLFILE *, const char *, u_int32_t, int, size_t));
+ int (*put) __P((DB_MPOOLFILE *, void *, DB_CACHE_PRIORITY, u_int32_t));
+ int (*set_clear_len) __P((DB_MPOOLFILE *, u_int32_t));
+ int (*set_fileid) __P((DB_MPOOLFILE *, u_int8_t *));
+ int (*set_flags) __P((DB_MPOOLFILE *, u_int32_t, int));
+ int (*set_ftype) __P((DB_MPOOLFILE *, int));
+ int (*set_lsn_offset) __P((DB_MPOOLFILE *, int32_t));
+ int (*set_maxsize) __P((DB_MPOOLFILE *, u_int32_t, u_int32_t));
+ int (*set_pgcookie) __P((DB_MPOOLFILE *, DBT *));
int (*set_priority) __P((DB_MPOOLFILE *, DB_CACHE_PRIORITY));
int (*sync) __P((DB_MPOOLFILE *));
/* DB_MPOOLFILE PUBLIC HANDLE LIST END */
@@ -825,12 +878,14 @@ struct __db_mpoolfile {
struct __db_mpool_stat {
u_int32_t st_gbytes; /* Total cache size: GB. */
u_int32_t st_bytes; /* Total cache size: B. */
- u_int32_t st_ncache; /* Number of caches. */
- roff_t st_regsize; /* Region size. */
+ u_int32_t st_ncache; /* Number of cache regions. */
+ u_int32_t st_max_ncache; /* Maximum number of regions. */
size_t st_mmapsize; /* Maximum file size for mmap. */
int st_maxopenfd; /* Maximum number of open fd's. */
int st_maxwrite; /* Maximum buffers to write. */
- int st_maxwrite_sleep; /* Sleep after writing max buffers. */
+ db_timeout_t st_maxwrite_sleep; /* Sleep after writing max buffers. */
+ u_int32_t st_pages; /* Total number of pages. */
+#ifndef __TEST_DB_NO_STATISTICS
u_int32_t st_map; /* Pages from mapped files. */
u_int32_t st_cache_hit; /* Pages found in the cache. */
u_int32_t st_cache_miss; /* Pages not found in the cache. */
@@ -840,7 +895,6 @@ struct __db_mpool_stat {
u_int32_t st_ro_evict; /* Clean pages forced from the cache. */
u_int32_t st_rw_evict; /* Dirty pages forced from the cache. */
u_int32_t st_page_trickle; /* Pages written by memp_trickle. */
- u_int32_t st_pages; /* Total number of pages. */
u_int32_t st_page_clean; /* Clean pages. */
u_int32_t st_page_dirty; /* Dirty pages. */
u_int32_t st_hash_buckets; /* Number of hash buckets. */
@@ -862,18 +916,22 @@ struct __db_mpool_stat {
u_int32_t st_alloc_pages; /* Pages checked during allocation. */
u_int32_t st_alloc_max_pages; /* Max checked during allocation. */
u_int32_t st_io_wait; /* Thread waited on buffer I/O. */
+ roff_t st_regsize; /* Region size. */
+#endif
};
/* Mpool file statistics structure. */
struct __db_mpool_fstat {
char *file_name; /* File name. */
u_int32_t st_pagesize; /* Page size. */
+#ifndef __TEST_DB_NO_STATISTICS
u_int32_t st_map; /* Pages from mapped files. */
u_int32_t st_cache_hit; /* Pages found in the cache. */
u_int32_t st_cache_miss; /* Pages not found in the cache. */
u_int32_t st_page_create; /* Pages created in the cache. */
u_int32_t st_page_in; /* Pages read in. */
u_int32_t st_page_out; /* Pages written out. */
+#endif
};
/*******************************************************
@@ -907,7 +965,8 @@ struct __db_txn {
DB_TXN *parent; /* Pointer to transaction's parent. */
u_int32_t txnid; /* Unique transaction id. */
- char *name; /* Transaction name */
+ char *name; /* Transaction name. */
+ DB_LOCKER *locker; /* Locker for this txn. */
db_threadid_t tid; /* Thread id for use in MT XA. */
void *td; /* Detail structure within region. */
@@ -948,7 +1007,7 @@ struct __db_txn {
struct {
struct __txn_event *tqh_first;
struct __txn_event **tqh_last;
- } events;
+ } events; /* Links deferred events. */
/*
* !!!
@@ -958,7 +1017,7 @@ struct __db_txn {
struct {
struct __txn_logrec *stqh_first;
struct __txn_logrec **stqh_last;
- } logs; /* Links deferred events. */
+ } logs; /* Links in memory log records. */
/*
* !!!
@@ -1055,6 +1114,9 @@ struct __db_txn_active {
};
struct __db_txn_stat {
+ u_int32_t st_nrestores; /* number of restored transactions
+ after recovery. */
+#ifndef __TEST_DB_NO_STATISTICS
DB_LSN st_last_ckp; /* lsn of the last checkpoint */
time_t st_time_ckp; /* time of last checkpoint */
u_int32_t st_last_txnid; /* last transaction id given out */
@@ -1064,14 +1126,13 @@ struct __db_txn_stat {
u_int32_t st_ncommits; /* number of committed transactions */
u_int32_t st_nactive; /* number of active transactions */
u_int32_t st_nsnapshot; /* number of snapshot transactions */
- u_int32_t st_nrestores; /* number of restored transactions
- after recovery. */
u_int32_t st_maxnactive; /* maximum active transactions */
u_int32_t st_maxnsnapshot; /* maximum snapshot transactions */
DB_TXN_ACTIVE *st_txnarray; /* array of active transactions */
u_int32_t st_region_wait; /* Region lock granted after wait. */
u_int32_t st_region_nowait; /* Region lock granted without wait. */
roff_t st_regsize; /* Region size. */
+#endif
};
/*******************************************************
@@ -1096,8 +1157,11 @@ struct __db_txn_stat {
*/
#define DB_REP_CLIENT 1
#define DB_REP_ELECTION 2
-#define DB_REP_FULL_ELECTION 3
-#define DB_REP_MASTER 4
+#define DB_REP_MASTER 3
+
+#define DB_REPFLAGS_MASK 0x000000ff /* Mask for rep modes. */
+
+#define DB_REP_DEFAULT_PRIORITY 100
/* Acknowledgement policies. */
#define DB_REPMGR_ACKS_ALL 1
@@ -1107,33 +1171,38 @@ struct __db_txn_stat {
#define DB_REPMGR_ACKS_ONE_PEER 5
#define DB_REPMGR_ACKS_QUORUM 6
-/* Replication Framework timeout configuration values. */
-#define DB_REP_ACK_TIMEOUT 1
-#define DB_REP_ELECTION_TIMEOUT 2
-#define DB_REP_ELECTION_RETRY 3
-#define DB_REP_CONNECTION_RETRY 4
+/* Replication timeout configuration values. */
+#define DB_REP_ACK_TIMEOUT 1 /* RepMgr acknowledgements. */
+#define DB_REP_CHECKPOINT_DELAY 2 /* RepMgr acknowledgements. */
+#define DB_REP_CONNECTION_RETRY 3 /* RepMgr connections. */
+#define DB_REP_ELECTION_RETRY 4 /* RepMgr elect retries. */
+#define DB_REP_ELECTION_TIMEOUT 5 /* Rep normal elections. */
+#define DB_REP_FULL_ELECTION_TIMEOUT 6 /* Rep full elections. */
+#define DB_REP_LEASE_TIMEOUT 7 /* Master leases. */
/* Event notification types. */
#define DB_EVENT_NO_SUCH_EVENT 0 /* out-of-band sentinel value */
#define DB_EVENT_PANIC 1
#define DB_EVENT_REP_CLIENT 2
-#define DB_EVENT_REP_MASTER 3
-#define DB_EVENT_REP_NEWMASTER 4
-#define DB_EVENT_REP_STARTUPDONE 5
-#define DB_EVENT_WRITE_FAILED 6
+#define DB_EVENT_REP_ELECTED 3
+#define DB_EVENT_REP_MASTER 4
+#define DB_EVENT_REP_NEWMASTER 5
+#define DB_EVENT_REP_PERM_FAILED 6
+#define DB_EVENT_REP_STARTUPDONE 7
+#define DB_EVENT_WRITE_FAILED 8
/* Flag value for repmgr_add_remote_site. */
#define DB_REPMGR_PEER 0x01
/* Replication Manager site status. */
struct __db_repmgr_site {
- int eid;
- char *host;
- u_int port;
+ int eid;
+ char *host;
+ u_int port;
#define DB_REPMGR_CONNECTED 0x01
#define DB_REPMGR_DISCONNECTED 0x02
- u_int32_t status;
+ u_int32_t status;
};
/* Replication statistics. */
@@ -1147,6 +1216,9 @@ struct __db_rep_stat {
* off somewhat (or, on unreasonable architectures under unlucky
* circumstances, garbaged).
*/
+ u_int32_t st_log_queued; /* Log records currently queued.+ */
+ u_int32_t st_startup_complete; /* Site completed client sync-up. */
+#ifndef __TEST_DB_NO_STATISTICS
u_int32_t st_status; /* Current replication status. */
DB_LSN st_next_lsn; /* Next LSN to use or expect. */
DB_LSN st_waiting_lsn; /* LSN we're awaiting, if any. */
@@ -1169,7 +1241,6 @@ struct __db_rep_stat {
u_int32_t st_gen; /* Current generation number. */
u_int32_t st_egen; /* Current election gen number. */
u_int32_t st_log_duplicated; /* Log records received multiply.+ */
- u_int32_t st_log_queued; /* Log records currently queued.+ */
u_int32_t st_log_queued_max; /* Max. log records queued at once.+ */
u_int32_t st_log_queued_total; /* Total # of log recs. ever queued.+ */
u_int32_t st_log_records; /* Log records received and put.+ */
@@ -1191,8 +1262,8 @@ struct __db_rep_stat {
u_int32_t st_pg_duplicated; /* Pages received multiply.+ */
u_int32_t st_pg_records; /* Pages received and stored.+ */
u_int32_t st_pg_requested; /* Pages missed and requested.+ */
- u_int32_t st_startup_complete; /* Site completed client sync-up. */
u_int32_t st_txns_applied; /* # of transactions applied.+ */
+ u_int32_t st_startsync_delayed; /* # of STARTSYNC msgs delayed.+ */
/* Elections generally. */
u_int32_t st_elections; /* # of elections held.+ */
@@ -1210,6 +1281,17 @@ struct __db_rep_stat {
int st_election_votes; /* Votes received in this round. */
u_int32_t st_election_sec; /* Last election time seconds. */
u_int32_t st_election_usec; /* Last election time useconds. */
+#endif
+};
+
+/* Replication Manager statistics. */
+struct __db_repmgr_stat {
+ u_int32_t st_perm_failed; /* # of insufficiently ack'ed msgs. */
+ u_int32_t st_msgs_queued; /* # msgs queued for network delay. */
+ u_int32_t st_msgs_dropped; /* # msgs discarded due to excessive
+ queue length. */
+ u_int32_t st_connection_drop; /* Existing connections dropped. */
+ u_int32_t st_connect_fail; /* Failed new connection attempts. */
};
/*******************************************************
@@ -1299,7 +1381,7 @@ typedef enum {
#define DB_BTREEOLDVER 8 /* Oldest btree version supported. */
#define DB_BTREEMAGIC 0x053162
-#define DB_HASHVERSION 8 /* Current hash version. */
+#define DB_HASHVERSION 9 /* Current hash version. */
#define DB_HASHOLDVER 7 /* Oldest hash version supported. */
#define DB_HASHMAGIC 0x061561
@@ -1314,39 +1396,37 @@ typedef enum {
* DB access method and cursor operation values. Each value is an operation
* code to which additional bit flags are added.
*/
-#define DB_AFTER 1 /* c_put() */
-#define DB_APPEND 2 /* put() */
-#define DB_BEFORE 3 /* c_put() */
-#define DB_CONSUME 4 /* get() */
-#define DB_CONSUME_WAIT 5 /* get() */
-#define DB_CURRENT 6 /* c_get(), c_put(), DB_LOGC->get() */
-#define DB_FIRST 7 /* c_get(), DB_LOGC->get() */
-#define DB_GET_BOTH 8 /* get(), c_get() */
-#define DB_GET_BOTHC 9 /* c_get() (internal) */
-#define DB_GET_BOTH_RANGE 10 /* get(), c_get() */
-#define DB_GET_RECNO 11 /* c_get() */
-#define DB_JOIN_ITEM 12 /* c_get(); do not do primary lookup */
-#define DB_KEYFIRST 13 /* c_put() */
-#define DB_KEYLAST 14 /* c_put() */
-#define DB_LAST 15 /* c_get(), DB_LOGC->get() */
-#define DB_NEXT 16 /* c_get(), DB_LOGC->get() */
-#define DB_NEXT_DUP 17 /* c_get() */
-#define DB_NEXT_NODUP 18 /* c_get() */
-#define DB_NODUPDATA 19 /* put(), c_put() */
-#define DB_NOOVERWRITE 20 /* put() */
-#define DB_NOSYNC 21 /* close() */
-#define DB_POSITION 22 /* c_dup() */
-#define DB_PREV 23 /* c_get(), DB_LOGC->get() */
-#define DB_PREV_NODUP 24 /* c_get(), DB_LOGC->get() */
-#define DB_SET 25 /* c_get(), DB_LOGC->get() */
-#define DB_SET_LOCK_TIMEOUT 26 /* set_timout() */
-#define DB_SET_RANGE 27 /* c_get() */
-#define DB_SET_RECNO 28 /* get(), c_get() */
-#define DB_SET_TXN_NOW 29 /* set_timout() (internal) */
-#define DB_SET_TXN_TIMEOUT 30 /* set_timout() */
-#define DB_UPDATE_SECONDARY 31 /* c_get(), c_del() (internal) */
-#define DB_WRITECURSOR 32 /* cursor() */
-#define DB_WRITELOCK 33 /* cursor() (internal) */
+#define DB_AFTER 1 /* Dbc.put */
+#define DB_APPEND 2 /* Db.put */
+#define DB_BEFORE 3 /* Dbc.put */
+#define DB_CONSUME 4 /* Db.get */
+#define DB_CONSUME_WAIT 5 /* Db.get */
+#define DB_CURRENT 6 /* Dbc.get, Dbc.put, DbLogc.get */
+#define DB_FIRST 7 /* Dbc.get, DbLogc->get */
+#define DB_GET_BOTH 8 /* Db.get, Dbc.get */
+#define DB_GET_BOTHC 9 /* Dbc.get (internal) */
+#define DB_GET_BOTH_RANGE 10 /* Db.get, Dbc.get */
+#define DB_GET_RECNO 11 /* Dbc.get */
+#define DB_JOIN_ITEM 12 /* Dbc.get; don't do primary lookup */
+#define DB_KEYFIRST 13 /* Dbc.put */
+#define DB_KEYLAST 14 /* Dbc.put */
+#define DB_LAST 15 /* Dbc.get, DbLogc->get */
+#define DB_NEXT 16 /* Dbc.get, DbLogc->get */
+#define DB_NEXT_DUP 17 /* Dbc.get */
+#define DB_NEXT_NODUP 18 /* Dbc.get */
+#define DB_NODUPDATA 19 /* Db.put, Dbc.put */
+#define DB_NOOVERWRITE 20 /* Db.put */
+#define DB_NOSYNC 21 /* Db.close */
+#define DB_POSITION 22 /* Dbc.dup */
+#define DB_PREV 23 /* Dbc.get, DbLogc->get */
+#define DB_PREV_DUP 24 /* Dbc.get */
+#define DB_PREV_NODUP 25 /* Dbc.get */
+#define DB_SET 26 /* Dbc.get, DbLogc->get */
+#define DB_SET_RANGE 27 /* Dbc.get */
+#define DB_SET_RECNO 28 /* Db.get, Dbc.get */
+#define DB_UPDATE_SECONDARY 29 /* Dbc.get, Dbc.del (internal) */
+#define DB_WRITECURSOR 30 /* Db.cursor */
+#define DB_WRITELOCK 31 /* Db.cursor (internal) */
/* This has to change when the max opcode hits 255. */
#define DB_OPFLAGS_MASK 0x000000ff /* Mask for operations flags. */
@@ -1391,8 +1471,8 @@ typedef enum {
#define DB_REP_IGNORE (-30983)/* This msg should be ignored.*/
#define DB_REP_ISPERM (-30982)/* Cached not written perm written.*/
#define DB_REP_JOIN_FAILURE (-30981)/* Unable to join replication group. */
-#define DB_REP_LOCKOUT (-30980)/* API/Replication lockout now. */
-#define DB_REP_NEWMASTER (-30979)/* We have learned of a new master. */
+#define DB_REP_LEASE_EXPIRED (-30980)/* Master lease has expired. */
+#define DB_REP_LOCKOUT (-30979)/* API/Replication lockout now. */
#define DB_REP_NEWSITE (-30978)/* New site entered system. */
#define DB_REP_NOTPERM (-30977)/* Permanent log record not written. */
#define DB_REP_UNAVAIL (-30976)/* Site cannot currently be reached. */
@@ -1404,17 +1484,19 @@ typedef enum {
/* DB (private) error return codes. */
#define DB_ALREADY_ABORTED (-30899)
#define DB_DELETED (-30898)/* Recovery file marked deleted. */
-#define DB_NEEDSPLIT (-30897)/* Page needs to be split. */
-#define DB_REP_BULKOVF (-30896)/* Rep bulk buffer overflow. */
-#define DB_REP_EGENCHG (-30895)/* Egen changed while in election. */
-#define DB_REP_LOGREADY (-30894)/* Rep log ready for recovery. */
-#define DB_REP_PAGEDONE (-30893)/* This page was already done. */
-#define DB_SURPRISE_KID (-30892)/* Child commit where parent
+#define DB_EVENT_NOT_HANDLED (-30897)/* Forward event to application. */
+#define DB_NEEDSPLIT (-30896)/* Page needs to be split. */
+#define DB_REP_BULKOVF (-30895)/* Rep bulk buffer overflow. */
+#define DB_REP_EGENCHG (-30894)/* Egen changed while in election. */
+#define DB_REP_LOGREADY (-30893)/* Rep log ready for recovery. */
+#define DB_REP_NEWMASTER (-30892)/* We have learned of a new master. */
+#define DB_REP_PAGEDONE (-30891)/* This page was already done. */
+#define DB_SURPRISE_KID (-30890)/* Child commit where parent
didn't know it was a parent. */
-#define DB_SWAPBYTES (-30891)/* Database needs byte swapping. */
-#define DB_TIMEOUT (-30890)/* Timed out waiting for election. */
-#define DB_TXN_CKP (-30889)/* Encountered ckp record in log. */
-#define DB_VERIFY_FATAL (-30888)/* DB->verify cannot proceed. */
+#define DB_SWAPBYTES (-30889)/* Database needs byte swapping. */
+#define DB_TIMEOUT (-30888)/* Timed out waiting for election. */
+#define DB_TXN_CKP (-30887)/* Encountered ckp record in log. */
+#define DB_VERIFY_FATAL (-30886)/* DB->verify cannot proceed. */
/* Database handle. */
struct __db {
@@ -1422,6 +1504,7 @@ struct __db {
* Public: owned by the application.
*******************************************************/
u_int32_t pgsize; /* Database logical page size. */
+ DB_CACHE_PRIORITY priority; /* Database priority in cache. */
/* Callbacks. */
int (*db_append_recno) __P((DB *, DBT *, db_recno_t));
@@ -1452,9 +1535,10 @@ struct __db {
FNAME *log_filename; /* File's naming info for logging. */
db_pgno_t meta_pgno; /* Meta page number */
- u_int32_t lid; /* Locker id for handle locking. */
- u_int32_t cur_lid; /* Current handle lock holder. */
- u_int32_t associate_lid; /* Locker id for DB->associate call. */
+ DB_LOCKER *locker; /* Locker for handle locking. */
+ DB_LOCKER *cur_locker; /* Current handle lock holder. */
+ DB_TXN *cur_txn; /* Opening transaction. */
+ DB_LOCKER *associate_locker; /* Locker for DB->associate call. */
DB_LOCK handle_lock; /* Lock held on this handle. */
u_int cl_id; /* RPC: remote client id. */
@@ -1533,8 +1617,8 @@ struct __db {
} s_secondaries;
/*
- * List entries for secondaries, and reference count of how
- * many threads are updating this secondary (see __db_c_put).
+ * List entries for secondaries, and reference count of how many
+ * threads are updating this secondary (see Dbc.put).
*
* !!!
* Note that these are synchronized by the primary's mutex, but
@@ -1580,6 +1664,7 @@ struct __db {
int (*del) __P((DB *, DB_TXN *, DBT *, u_int32_t));
void (*err) __P((DB *, int, const char *, ...));
void (*errx) __P((DB *, const char *, ...));
+ int (*exists) __P((DB *, DB_TXN *, DBT *, u_int32_t));
int (*fd) __P((DB *, int *));
int (*get) __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t));
int (*get_bt_minkey) __P((DB *, u_int32_t *));
@@ -1596,8 +1681,10 @@ struct __db {
int (*get_lorder) __P((DB *, int *));
DB_MPOOLFILE *(*get_mpf) __P((DB *));
void (*get_msgfile) __P((DB *, FILE **));
+ int (*get_multiple) __P((DB *));
int (*get_open_flags) __P((DB *, u_int32_t *));
int (*get_pagesize) __P((DB *, u_int32_t *));
+ int (*get_priority) __P((DB *, DB_CACHE_PRIORITY *));
int (*get_q_extentsize) __P((DB *, u_int32_t *));
int (*get_re_delim) __P((DB *, int *));
int (*get_re_len) __P((DB *, u_int32_t *));
@@ -1633,6 +1720,8 @@ struct __db {
void (*set_errpfx) __P((DB *, const char *));
int (*set_feedback) __P((DB *, void (*)(DB *, int, int)));
int (*set_flags) __P((DB *, u_int32_t));
+ int (*set_h_compare)
+ __P((DB *, int (*)(DB *, const DBT *, const DBT *)));
int (*set_h_ffactor) __P((DB *, u_int32_t));
int (*set_h_hash)
__P((DB *, u_int32_t (*)(DB *, const void *, u_int32_t)));
@@ -1642,6 +1731,7 @@ struct __db {
void (*set_msgfile) __P((DB *, FILE *));
int (*set_pagesize) __P((DB *, u_int32_t));
int (*set_paniccall) __P((DB *, void (*)(DB_ENV *, int)));
+ int (*set_priority) __P((DB *, DB_CACHE_PRIORITY));
int (*set_q_extentsize) __P((DB *, u_int32_t));
int (*set_re_delim) __P((DB *, int));
int (*set_re_len) __P((DB *, u_int32_t));
@@ -1685,36 +1775,35 @@ struct __db {
int preserve_fid; /* Do not free fileid on close. */
#define DB_AM_CHKSUM 0x00000001 /* Checksumming */
-#define DB_AM_CL_WRITER 0x00000002 /* Allow writes in client replica */
-#define DB_AM_COMPENSATE 0x00000004 /* Created by compensating txn */
-#define DB_AM_CREATED 0x00000008 /* Database was created upon open */
-#define DB_AM_CREATED_MSTR 0x00000010 /* Encompassing file was created */
-#define DB_AM_DBM_ERROR 0x00000020 /* Error in DBM/NDBM database */
-#define DB_AM_DELIMITER 0x00000040 /* Variable length delimiter set */
-#define DB_AM_DISCARD 0x00000080 /* Discard any cached pages */
-#define DB_AM_DUP 0x00000100 /* DB_DUP */
-#define DB_AM_DUPSORT 0x00000200 /* DB_DUPSORT */
-#define DB_AM_ENCRYPT 0x00000400 /* Encryption */
-#define DB_AM_FIXEDLEN 0x00000800 /* Fixed-length records */
-#define DB_AM_INMEM 0x00001000 /* In-memory; no sync on close */
-#define DB_AM_INORDER 0x00002000 /* DB_INORDER */
-#define DB_AM_IN_RENAME 0x00004000 /* File is being renamed */
-#define DB_AM_NOT_DURABLE 0x00008000 /* Do not log changes */
-#define DB_AM_OPEN_CALLED 0x00010000 /* DB->open called */
-#define DB_AM_PAD 0x00020000 /* Fixed-length record pad */
-#define DB_AM_PGDEF 0x00040000 /* Page size was defaulted */
-#define DB_AM_RDONLY 0x00080000 /* Database is readonly */
-#define DB_AM_READ_UNCOMMITTED 0x00100000 /* Support degree 1 isolation */
-#define DB_AM_RECNUM 0x00200000 /* DB_RECNUM */
-#define DB_AM_RECOVER 0x00400000 /* DB opened by recovery routine */
-#define DB_AM_RENUMBER 0x00800000 /* DB_RENUMBER */
-#define DB_AM_REVSPLITOFF 0x01000000 /* DB_REVSPLITOFF */
-#define DB_AM_SECONDARY 0x02000000 /* Database is a secondary index */
-#define DB_AM_SNAPSHOT 0x04000000 /* DB_SNAPSHOT */
-#define DB_AM_SUBDB 0x08000000 /* Subdatabases supported */
-#define DB_AM_SWAP 0x10000000 /* Pages need to be byte-swapped */
-#define DB_AM_TXN 0x20000000 /* Opened in a transaction */
-#define DB_AM_VERIFYING 0x40000000 /* DB handle is in the verifier */
+#define DB_AM_COMPENSATE 0x00000002 /* Created by compensating txn */
+#define DB_AM_CREATED 0x00000004 /* Database was created upon open */
+#define DB_AM_CREATED_MSTR 0x00000008 /* Encompassing file was created */
+#define DB_AM_DBM_ERROR 0x00000010 /* Error in DBM/NDBM database */
+#define DB_AM_DELIMITER 0x00000020 /* Variable length delimiter set */
+#define DB_AM_DISCARD 0x00000040 /* Discard any cached pages */
+#define DB_AM_DUP 0x00000080 /* DB_DUP */
+#define DB_AM_DUPSORT 0x00000100 /* DB_DUPSORT */
+#define DB_AM_ENCRYPT 0x00000200 /* Encryption */
+#define DB_AM_FIXEDLEN 0x00000400 /* Fixed-length records */
+#define DB_AM_INMEM 0x00000800 /* In-memory; no sync on close */
+#define DB_AM_INORDER 0x00001000 /* DB_INORDER */
+#define DB_AM_IN_RENAME 0x00002000 /* File is being renamed */
+#define DB_AM_NOT_DURABLE 0x00004000 /* Do not log changes */
+#define DB_AM_OPEN_CALLED 0x00008000 /* DB->open called */
+#define DB_AM_PAD 0x00010000 /* Fixed-length record pad */
+#define DB_AM_PGDEF 0x00020000 /* Page size was defaulted */
+#define DB_AM_RDONLY 0x00040000 /* Database is readonly */
+#define DB_AM_READ_UNCOMMITTED 0x00080000 /* Support degree 1 isolation */
+#define DB_AM_RECNUM 0x00100000 /* DB_RECNUM */
+#define DB_AM_RECOVER 0x00200000 /* DB opened by recovery routine */
+#define DB_AM_RENUMBER 0x00400000 /* DB_RENUMBER */
+#define DB_AM_REVSPLITOFF 0x00800000 /* DB_REVSPLITOFF */
+#define DB_AM_SECONDARY 0x01000000 /* Database is a secondary index */
+#define DB_AM_SNAPSHOT 0x02000000 /* DB_SNAPSHOT */
+#define DB_AM_SUBDB 0x04000000 /* Subdatabases supported */
+#define DB_AM_SWAP 0x08000000 /* Pages need to be byte-swapped */
+#define DB_AM_TXN 0x10000000 /* Opened in a transaction */
+#define DB_AM_VERIFYING 0x20000000 /* DB handle is in the verifier */
u_int32_t orig_flags; /* Flags at open, for refresh */
u_int32_t flags;
};
@@ -1785,6 +1874,7 @@ struct __db {
struct __dbc {
DB *dbp; /* Related DB access method. */
DB_TXN *txn; /* Associated transaction. */
+ DB_CACHE_PRIORITY priority; /* Priority in cache. */
/*
* Active/free cursor queues.
@@ -1818,7 +1908,7 @@ struct __dbc {
DBT my_rdata; /* Space for returned data. */
void *lref; /* Reference to default locker. */
- u_int32_t locker; /* Locker for this operation. */
+ DB_LOCKER *locker; /* Locker for this operation. */
DBT lock_dbt; /* DBT referencing lock. */
DB_LOCK_ILOCK lock; /* Object to be locked. */
DB_LOCK mylock; /* CDB lock held on this cursor. */
@@ -1830,6 +1920,18 @@ struct __dbc {
DBC_INTERNAL *internal; /* Access method private. */
/* DBC PUBLIC HANDLE LIST BEGIN */
+ int (*close) __P((DBC *));
+ int (*count) __P((DBC *, db_recno_t *, u_int32_t));
+ int (*del) __P((DBC *, u_int32_t));
+ int (*dup) __P((DBC *, DBC **, u_int32_t));
+ int (*get) __P((DBC *, DBT *, DBT *, u_int32_t));
+ int (*get_priority) __P((DBC *, DB_CACHE_PRIORITY *));
+ int (*pget) __P((DBC *, DBT *, DBT *, DBT *, u_int32_t));
+ int (*put) __P((DBC *, DBT *, DBT *, u_int32_t));
+ int (*set_priority) __P((DBC *, DB_CACHE_PRIORITY));
+ /* DBC PUBLIC HANDLE LIST END */
+
+ /* The following are the method names deprecated in the 4.6 release. */
int (*c_close) __P((DBC *));
int (*c_count) __P((DBC *, db_recno_t *, u_int32_t));
int (*c_del) __P((DBC *, u_int32_t));
@@ -1837,16 +1939,15 @@ struct __dbc {
int (*c_get) __P((DBC *, DBT *, DBT *, u_int32_t));
int (*c_pget) __P((DBC *, DBT *, DBT *, DBT *, u_int32_t));
int (*c_put) __P((DBC *, DBT *, DBT *, u_int32_t));
- /* DBC PUBLIC HANDLE LIST END */
/* DBC PRIVATE HANDLE LIST BEGIN */
- int (*c_am_bulk) __P((DBC *, DBT *, u_int32_t));
- int (*c_am_close) __P((DBC *, db_pgno_t, int *));
- int (*c_am_del) __P((DBC *));
- int (*c_am_destroy) __P((DBC *));
- int (*c_am_get) __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *));
- int (*c_am_put) __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *));
- int (*c_am_writelock) __P((DBC *));
+ int (*am_bulk) __P((DBC *, DBT *, u_int32_t));
+ int (*am_close) __P((DBC *, db_pgno_t, int *));
+ int (*am_del) __P((DBC *));
+ int (*am_destroy) __P((DBC *));
+ int (*am_get) __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *));
+ int (*am_put) __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *));
+ int (*am_writelock) __P((DBC *));
/* DBC PRIVATE HANDLE LIST END */
/*
@@ -1887,6 +1988,7 @@ struct __db_bt_stat {
u_int32_t bt_metaflags; /* Metadata flags. */
u_int32_t bt_nkeys; /* Number of unique keys. */
u_int32_t bt_ndata; /* Number of data items. */
+ u_int32_t bt_pagecnt; /* Page count. */
u_int32_t bt_pagesize; /* Page size. */
u_int32_t bt_minkey; /* Minkey value. */
u_int32_t bt_re_len; /* Fixed-length record length. */
@@ -1926,6 +2028,7 @@ struct __db_h_stat {
u_int32_t hash_metaflags; /* Metadata flags. */
u_int32_t hash_nkeys; /* Number of unique keys. */
u_int32_t hash_ndata; /* Number of data items. */
+ u_int32_t hash_pagecnt; /* Page count. */
u_int32_t hash_pagesize; /* Page size. */
u_int32_t hash_ffactor; /* Fill factor specified at create. */
u_int32_t hash_buckets; /* Number of hash buckets. */
@@ -1997,10 +2100,12 @@ struct __db_env {
* there are ever more than 32 entries, convert to a bit array.
*/
#define DB_VERB_DEADLOCK 0x0001 /* Deadlock detection information. */
-#define DB_VERB_RECOVERY 0x0002 /* Recovery information. */
-#define DB_VERB_REGISTER 0x0004 /* Dump waits-for table. */
-#define DB_VERB_REPLICATION 0x0008 /* Replication information. */
-#define DB_VERB_WAITSFOR 0x0010 /* Dump waits-for table. */
+#define DB_VERB_FILEOPS 0x0002 /* Major file operations. */
+#define DB_VERB_FILEOPS_ALL 0x0004 /* All file operations. */
+#define DB_VERB_RECOVERY 0x0008 /* Recovery information. */
+#define DB_VERB_REGISTER 0x0010 /* Dump waits-for table. */
+#define DB_VERB_REPLICATION 0x0020 /* Replication information. */
+#define DB_VERB_WAITSFOR 0x0040 /* Dump waits-for table. */
u_int32_t verbose; /* Verbose output. */
void *app_private; /* Application-private handle. */
@@ -2037,14 +2142,15 @@ struct __db_env {
int lg_filemode; /* Log file permission mode. */
/* Memory pool. */
- u_int32_t mp_gbytes; /* Cachesize: GB. */
- u_int32_t mp_bytes; /* Cachesize: Bytes. */
- u_int mp_ncache; /* Number of cache regions. */
+ u_int mp_ncache; /* Initial number of cache regions. */
+ u_int32_t mp_gbytes; /* Cache size: GB. */
+ u_int32_t mp_bytes; /* Cache size: bytes. */
+ u_int32_t mp_max_gbytes; /* Maximum cache size: GB. */
+ u_int32_t mp_max_bytes; /* Maximum cache size: bytes. */
size_t mp_mmapsize; /* Maximum file size for mmap. */
int mp_maxopenfd; /* Maximum open file descriptors. */
int mp_maxwrite; /* Maximum buffers to write. */
- int /* Sleep after writing max buffers. */
- mp_maxwrite_sleep;
+ db_timeout_t mp_maxwrite_sleep; /* Sleep after writing max buffers. */
/* Transactions. */
u_int32_t tx_max; /* Maximum number of transactions. */
@@ -2059,6 +2165,8 @@ struct __db_env {
/*******************************************************
* Private: owned by DB.
*******************************************************/
+ db_mutex_t mtx_env; /* General DbEnv structure mutex. */
+
pid_t pid_cache; /* Cached process ID. */
/* User files, paths. */
@@ -2107,13 +2215,21 @@ struct __db_env {
long shm_key; /* shmget(2) key. */
/*
- * List of open DB handles for this DB_ENV, used for cursor
- * adjustment. Must be protected for multi-threaded support.
+ * List of open file handles for this DB_ENV. Must be protected
+ * for multi-threaded support.
*
* !!!
- * As this structure is allocated in per-process memory, the
- * mutex may need to be stored elsewhere on architectures unable
- * to support mutexes in heap memory, e.g. HP/UX 9.
+ * Explicit representation of structure in queue.h.
+ * TAILQ_HEAD(__fdlist, __fh_t);
+ */
+ struct __fdlist {
+ struct __fh_t *tqh_first;
+ struct __fh_t **tqh_last;
+ } fdlist;
+
+ /*
+ * List of open DB handles for this DB_ENV, used for cursor
+ * adjustment. Must be protected for multi-threaded support.
*
* !!!
* Explicit representation of structure in queue.h.
@@ -2173,6 +2289,7 @@ struct __db_env {
int (*failchk) __P((DB_ENV *, u_int32_t));
int (*fileid_reset) __P((DB_ENV *, const char *, u_int32_t));
int (*get_cachesize) __P((DB_ENV *, u_int32_t *, u_int32_t *, int *));
+ int (*get_cache_max) __P((DB_ENV *, u_int32_t *, u_int32_t *));
int (*get_data_dirs) __P((DB_ENV *, const char ***));
int (*get_encrypt_flags) __P((DB_ENV *, u_int32_t *));
void (*get_errfile) __P((DB_ENV *, FILE **));
@@ -2190,11 +2307,12 @@ struct __db_env {
int (*get_lk_max_locks) __P((DB_ENV *, u_int32_t *));
int (*get_lk_max_objects) __P((DB_ENV *, u_int32_t *));
int (*get_mp_max_openfd) __P((DB_ENV *, int *));
- int (*get_mp_max_write) __P((DB_ENV *, int *, int *));
+ int (*get_mp_max_write) __P((DB_ENV *, int *, db_timeout_t *));
int (*get_mp_mmapsize) __P((DB_ENV *, size_t *));
void (*get_msgfile) __P((DB_ENV *, FILE **));
int (*get_open_flags) __P((DB_ENV *, u_int32_t *));
int (*get_shm_key) __P((DB_ENV *, long *));
+ int (*get_thread_count) __P((DB_ENV *, u_int32_t *));
int (*get_timeout) __P((DB_ENV *, db_timeout_t *, u_int32_t));
int (*get_tmp_dir) __P((DB_ENV *, const char **));
int (*get_tx_max) __P((DB_ENV *, u_int32_t *));
@@ -2245,8 +2363,7 @@ struct __db_env {
int (*mutex_unlock) __P((DB_ENV *, db_mutex_t));
int (*open) __P((DB_ENV *, const char *, u_int32_t, int));
int (*remove) __P((DB_ENV *, const char *, u_int32_t));
- int (*rep_elect)
- __P((DB_ENV *, int, int, int *, u_int32_t));
+ int (*rep_elect) __P((DB_ENV *, int, int, u_int32_t));
int (*rep_flush) __P((DB_ENV *));
int (*rep_get_config) __P((DB_ENV *, u_int32_t, int *));
int (*rep_get_limit) __P((DB_ENV *, u_int32_t *, u_int32_t *));
@@ -2254,8 +2371,9 @@ struct __db_env {
int (*rep_get_priority) __P((DB_ENV *, int *));
int (*rep_get_timeout) __P((DB_ENV *, int, u_int32_t *));
int (*rep_process_message)
- __P((DB_ENV *, DBT *, DBT *, int *, DB_LSN *));
+ __P((DB_ENV *, DBT *, DBT *, int, DB_LSN *));
int (*rep_set_config) __P((DB_ENV *, u_int32_t, int));
+ int (*rep_set_lease) __P((DB_ENV *, u_int32_t, u_int32_t));
int (*rep_set_limit) __P((DB_ENV *, u_int32_t, u_int32_t));
int (*rep_set_nsites) __P((DB_ENV *, int));
int (*rep_set_priority) __P((DB_ENV *, int));
@@ -2275,11 +2393,14 @@ struct __db_env {
int (*repmgr_site_list) __P((DB_ENV *, u_int *,
DB_REPMGR_SITE **));
int (*repmgr_start) __P((DB_ENV *, int, u_int32_t));
+ int (*repmgr_stat) __P((DB_ENV *, DB_REPMGR_STAT **, u_int32_t));
+ int (*repmgr_stat_print) __P((DB_ENV *, u_int32_t));
int (*set_alloc) __P((DB_ENV *, void *(*)(size_t),
void *(*)(void *, size_t), void (*)(void *)));
int (*set_app_dispatch)
__P((DB_ENV *, int (*)(DB_ENV *, DBT *, DB_LSN *, db_recops)));
int (*set_cachesize) __P((DB_ENV *, u_int32_t, u_int32_t, int));
+ int (*set_cache_max) __P((DB_ENV *, u_int32_t, u_int32_t));
int (*set_data_dir) __P((DB_ENV *, const char *));
int (*set_encrypt) __P((DB_ENV *, const char *, u_int32_t));
void (*set_errcall) __P((DB_ENV *,
@@ -2304,7 +2425,7 @@ struct __db_env {
int (*set_lk_max_locks) __P((DB_ENV *, u_int32_t));
int (*set_lk_max_objects) __P((DB_ENV *, u_int32_t));
int (*set_mp_max_openfd) __P((DB_ENV *, int));
- int (*set_mp_max_write) __P((DB_ENV *, int, int));
+ int (*set_mp_max_write) __P((DB_ENV *, int, db_timeout_t));
int (*set_mp_mmapsize) __P((DB_ENV *, size_t));
void (*set_msgcall)
__P((DB_ENV *, void (*)(const DB_ENV *, const char *)));
@@ -2356,33 +2477,35 @@ struct __db_env {
#define DB_ENV_AUTO_COMMIT 0x00000001 /* DB_AUTO_COMMIT. */
#define DB_ENV_CDB 0x00000002 /* DB_INIT_CDB. */
#define DB_ENV_CDB_ALLDB 0x00000004 /* CDB environment wide locking. */
-#define DB_ENV_CREATE 0x00000008 /* DB_CREATE set. */
-#define DB_ENV_DBLOCAL 0x00000010 /* Environment for a private DB. */
-#define DB_ENV_DIRECT_DB 0x00000020 /* DB_DIRECT_DB set. */
-#define DB_ENV_DIRECT_LOG 0x00000040 /* DB_DIRECT_LOG set. */
-#define DB_ENV_DSYNC_DB 0x00000080 /* DB_DSYNC_DB set. */
-#define DB_ENV_DSYNC_LOG 0x00000100 /* DB_DSYNC_LOG set. */
-#define DB_ENV_FATAL 0x00000200 /* Doing fatal recovery in env. */
-#define DB_ENV_LOCKDOWN 0x00000400 /* DB_LOCKDOWN set. */
-#define DB_ENV_LOG_AUTOREMOVE 0x00000800 /* DB_LOG_AUTOREMOVE set. */
-#define DB_ENV_LOG_INMEMORY 0x00001000 /* DB_LOG_INMEMORY set. */
-#define DB_ENV_MULTIVERSION 0x00002000 /* DB_MULTIVERSION set. */
-#define DB_ENV_NOLOCKING 0x00004000 /* DB_NOLOCKING set. */
-#define DB_ENV_NOMMAP 0x00008000 /* DB_NOMMAP set. */
-#define DB_ENV_NOPANIC 0x00010000 /* Okay if panic set. */
-#define DB_ENV_OPEN_CALLED 0x00020000 /* DB_ENV->open called. */
-#define DB_ENV_OVERWRITE 0x00040000 /* DB_OVERWRITE set. */
-#define DB_ENV_PRIVATE 0x00080000 /* DB_PRIVATE set. */
-#define DB_ENV_REGION_INIT 0x00100000 /* DB_REGION_INIT set. */
-#define DB_ENV_RPCCLIENT 0x00200000 /* DB_RPCCLIENT set. */
-#define DB_ENV_RPCCLIENT_GIVEN 0x00400000 /* User-supplied RPC client struct */
-#define DB_ENV_SYSTEM_MEM 0x00800000 /* DB_SYSTEM_MEM set. */
-#define DB_ENV_THREAD 0x01000000 /* DB_THREAD set. */
-#define DB_ENV_TIME_NOTGRANTED 0x02000000 /* DB_TIME_NOTGRANTED set. */
-#define DB_ENV_TXN_NOSYNC 0x04000000 /* DB_TXN_NOSYNC set. */
-#define DB_ENV_TXN_SNAPSHOT 0x08000000 /* DB_TXN_SNAPSHOT set. */
-#define DB_ENV_TXN_WRITE_NOSYNC 0x10000000 /* DB_TXN_WRITE_NOSYNC set. */
-#define DB_ENV_YIELDCPU 0x20000000 /* DB_YIELDCPU set. */
+#define DB_ENV_DBLOCAL 0x00000008 /* Environment for a private DB. */
+#define DB_ENV_DIRECT_DB 0x00000010 /* DB_DIRECT_DB set. */
+#define DB_ENV_DIRECT_LOG 0x00000020 /* DB_DIRECT_LOG set. */
+#define DB_ENV_DSYNC_DB 0x00000040 /* DB_DSYNC_DB set. */
+#define DB_ENV_DSYNC_LOG 0x00000080 /* DB_DSYNC_LOG set. */
+#define DB_ENV_LOCKDOWN 0x00000100 /* DB_LOCKDOWN set. */
+#define DB_ENV_LOG_AUTOREMOVE 0x00000200 /* DB_LOG_AUTOREMOVE set. */
+#define DB_ENV_LOG_INMEMORY 0x00000400 /* DB_LOG_INMEMORY set. */
+#define DB_ENV_MULTIVERSION 0x00000800 /* DB_MULTIVERSION set. */
+#define DB_ENV_NOLOCKING 0x00001000 /* DB_NOLOCKING set. */
+#define DB_ENV_NOMMAP 0x00002000 /* DB_NOMMAP set. */
+#define DB_ENV_NOPANIC 0x00004000 /* Okay if panic set. */
+#define DB_ENV_NO_OUTPUT_SET 0x00008000 /* No output channel set. */
+#define DB_ENV_OPEN_CALLED 0x00010000 /* DB_ENV->open called. */
+#define DB_ENV_OVERWRITE 0x00020000 /* DB_OVERWRITE set. */
+#define DB_ENV_PRIVATE 0x00040000 /* DB_PRIVATE set. */
+#define DB_ENV_RECOVER_FATAL 0x00080000 /* Doing fatal recovery in env. */
+#define DB_ENV_REF_COUNTED 0x00100000 /* Region references this handle. */
+#define DB_ENV_REGION_INIT 0x00200000 /* DB_REGION_INIT set. */
+#define DB_ENV_RPCCLIENT 0x00400000 /* DB_RPCCLIENT set. */
+#define DB_ENV_RPCCLIENT_GIVEN 0x00800000 /* User-supplied RPC client struct */
+#define DB_ENV_SYSTEM_MEM 0x01000000 /* DB_SYSTEM_MEM set. */
+#define DB_ENV_THREAD 0x02000000 /* DB_THREAD set. */
+#define DB_ENV_TIME_NOTGRANTED 0x04000000 /* DB_TIME_NOTGRANTED set. */
+#define DB_ENV_TXN_NOSYNC 0x08000000 /* DB_TXN_NOSYNC set. */
+#define DB_ENV_TXN_NOWAIT 0x10000000 /* DB_TXN_NOWAIT set. */
+#define DB_ENV_TXN_SNAPSHOT 0x20000000 /* DB_TXN_SNAPSHOT set. */
+#define DB_ENV_TXN_WRITE_NOSYNC 0x40000000 /* DB_TXN_WRITE_NOSYNC set. */
+#define DB_ENV_YIELDCPU 0x80000000 /* DB_YIELDCPU set. */
u_int32_t flags;
};
diff --git a/db/dbinc/db_185.in b/db/dbinc/db_185.in
index bf3af8abb..7c4cb1af1 100644
--- a/db/dbinc/db_185.in
+++ b/db/dbinc/db_185.in
@@ -1,8 +1,7 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*/
/*
* Copyright (c) 1990, 1993, 1994
@@ -32,7 +31,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: db_185.in,v 12.5 2006/08/24 14:45:28 bostic Exp $
+ * $Id: db_185.in,v 12.7 2007/05/17 15:15:05 bostic Exp $
*/
#ifndef _DB_185_H_
diff --git a/db/dbinc/db_am.h b/db/dbinc/db_am.h
index 887255eb1..5775491dd 100644
--- a/db/dbinc/db_am.h
+++ b/db/dbinc/db_am.h
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: db_am.h,v 12.17 2006/08/24 14:45:29 bostic Exp $
+ * $Id: db_am.h,v 12.29 2007/06/13 19:06:07 bostic Exp $
*/
#ifndef _DB_AM_H_
#define _DB_AM_H_
@@ -55,6 +54,8 @@ extern "C" {
COMPQUIET(mpf, NULL); \
if ((ret = func(dbenv, dbtp->data, &argp)) != 0) \
goto out; \
+ if (info != NULL) \
+ argp->txnp->td = ((DB_TXNHEAD *)info)->td; \
if ((ret = __dbreg_id_to_db(dbenv, argp->txnp, \
&file_dbp, argp->fileid, inc_count)) != 0) { \
if (ret == DB_DELETED) { \
@@ -76,7 +77,7 @@ extern "C" {
if (argp != NULL) \
__os_free(dbenv, argp); \
if (dbc != NULL && \
- (__t_ret = __db_c_close(dbc)) != 0 && ret == 0) \
+ (__t_ret = __dbc_close(dbc)) != 0 && ret == 0) \
ret = __t_ret; \
} \
return (ret)
@@ -118,8 +119,9 @@ extern "C" {
goto cont; \
}
#endif
-#define REC_DIRTY(mpf, pagep) \
- if ((ret = __memp_dirty(mpf, pagep, NULL, DB_MPOOL_EDIT)) != 0) {\
+#define REC_DIRTY(mpf, priority, pagep) \
+ if ((ret = __memp_dirty(mpf, \
+ pagep, NULL, priority, DB_MPOOL_EDIT)) != 0) { \
ret = __db_pgerr(file_dbp, PGNO(*(pagep)), ret); \
goto out; \
}
@@ -175,12 +177,12 @@ typedef struct {
/*
* A database should be required to be readonly if it's been explicitly
- * specified as such or if we're a client in a replicated environment and
- * we don't have the special "client-writer" designation.
+ * specified as such or if we're a client in a replicated environment
+ * and the user did not specify DB_TXN_NOT_DURABLE.
*/
#define DB_IS_READONLY(dbp) \
(F_ISSET(dbp, DB_AM_RDONLY) || \
- (IS_REP_CLIENT((dbp)->dbenv)))
+ (IS_REP_CLIENT((dbp)->dbenv) && !F_ISSET((dbp), DB_AM_NOT_DURABLE)))
/*
* For portability, primary keys that are record numbers are stored in
@@ -210,10 +212,32 @@ typedef struct {
TAILQ_PREV((tdbp), __dblist, dblistlinks) != NULL && \
TAILQ_PREV((tdbp), \
__dblist, dblistlinks)->adj_fileid == (dbp)->adj_fileid;\
- (tdbp) = TAILQ_PREV((tdbp), __dblist, dblistlinks)) \
+ (tdbp) = TAILQ_PREV((tdbp), __dblist, dblistlinks)) \
; \
} while (0)
+/*
+ * Macros used to implement a binary search algorithm. Shared between the
+ * btree and hash implementations.
+ */
+#define DB_BINARY_SEARCH_FOR(base, limit, page, adjust) \
+ for (base = 0, limit = NUM_ENT(page) / (db_indx_t)(adjust); \
+ (limit) != 0; (limit) >>= 1)
+
+#define DB_BINARY_SEARCH_INCR(index, base, limit, adjust) \
+ index = (base) + (((limit) >> 1) * (adjust))
+
+#define DB_BINARY_SEARCH_SHIFT_BASE(index, base, limit, adjust) do { \
+ base = (index) + (adjust); \
+ --(limit); \
+} while (0)
+
+/*
+ * Flags to __db_chk_meta.
+ */
+#define DB_CHK_META 0x01 /* Checksum the meta page. */
+#define DB_CHK_NOLSN 0x02 /* Don't check the LSN. */
+
#if defined(__cplusplus)
}
#endif
diff --git a/db/dbinc/db_cxx.in b/db/dbinc/db_cxx.in
index ca08f98d8..adf129337 100644
--- a/db/dbinc/db_cxx.in
+++ b/db/dbinc/db_cxx.in
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: db_cxx.in,v 12.28 2006/09/13 14:53:37 mjc Exp $
+ * $Id: db_cxx.in,v 12.40 2007/06/28 13:02:50 mjc Exp $
*/
#ifndef _DB_CXX_H_
@@ -162,6 +161,8 @@ extern "C" {
(DB *, const DBT *, const DBT *);
typedef int (*dup_compare_fcn_type) /*C++ version available*/
(DB *, const DBT *, const DBT *);
+ typedef int (*h_compare_fcn_type) /*C++ version available*/
+ (DB *, const DBT *, const DBT *);
typedef u_int32_t (*h_hash_fcn_type) /*C++ version available*/
(DB *, const void *, u_int32_t);
typedef int (*pgin_fcn_type)
@@ -183,93 +184,98 @@ public:
// These methods exactly match those in the C interface.
//
- virtual int associate(DbTxn *txn, Db *secondary,
- int (*callback)(Db *, const Dbt *, const Dbt *, Dbt *),
- u_int32_t flags);
+ virtual int associate(DbTxn *txn, Db *secondary, int (*callback)
+ (Db *, const Dbt *, const Dbt *, Dbt *), u_int32_t flags);
virtual int close(u_int32_t flags);
- virtual int compact(DbTxn *txnid, Dbt *start, Dbt *stop,
- DB_COMPACT *c_data, u_int32_t flags, Dbt *end);
+ virtual int compact(DbTxn *txnid, Dbt *start,
+ Dbt *stop, DB_COMPACT *c_data, u_int32_t flags, Dbt *end);
virtual int cursor(DbTxn *txnid, Dbc **cursorp, u_int32_t flags);
virtual int del(DbTxn *txnid, Dbt *key, u_int32_t flags);
virtual void err(int, const char *, ...);
virtual void errx(const char *, ...);
+ virtual int exists(DbTxn *txnid, Dbt *key, u_int32_t flags);
virtual int fd(int *fdp);
virtual int get(DbTxn *txnid, Dbt *key, Dbt *data, u_int32_t flags);
- virtual void *get_app_private() const;
+ virtual int get_bt_minkey(u_int32_t *);
virtual int get_byteswapped(int *);
+ virtual int get_cachesize(u_int32_t *, u_int32_t *, int *);
virtual int get_dbname(const char **, const char **);
+ virtual int get_encrypt_flags(u_int32_t *);
+ virtual void get_errfile(FILE **);
+ virtual void get_errpfx(const char **);
+ virtual int get_flags(u_int32_t *);
+ virtual int get_h_ffactor(u_int32_t *);
+ virtual int get_h_nelem(u_int32_t *);
+ virtual int get_lorder(int *);
+ virtual void get_msgfile(FILE **);
+ virtual int get_multiple();
virtual int get_open_flags(u_int32_t *);
- virtual int get_type(DBTYPE *);
+ virtual int get_pagesize(u_int32_t *);
+ virtual int get_priority(DB_CACHE_PRIORITY *);
+ virtual int get_q_extentsize(u_int32_t *);
+ virtual int get_re_delim(int *);
+ virtual int get_re_len(u_int32_t *);
+ virtual int get_re_pad(int *);
+ virtual int get_re_source(const char **);
virtual int get_transactional();
+ virtual int get_type(DBTYPE *);
virtual int join(Dbc **curslist, Dbc **dbcp, u_int32_t flags);
virtual int key_range(DbTxn *, Dbt *, DB_KEY_RANGE *, u_int32_t);
virtual int open(DbTxn *txnid,
const char *, const char *subname, DBTYPE, u_int32_t, int);
- virtual int pget(DbTxn *txnid, Dbt *key, Dbt *pkey, Dbt *data,
- u_int32_t flags);
+ virtual int pget(DbTxn *txnid,
+ Dbt *key, Dbt *pkey, Dbt *data, u_int32_t flags);
virtual int put(DbTxn *, Dbt *, Dbt *, u_int32_t);
virtual int remove(const char *, const char *, u_int32_t);
virtual int rename(const char *, const char *, const char *, u_int32_t);
- virtual int set_alloc(db_malloc_fcn_type, db_realloc_fcn_type,
- db_free_fcn_type);
+ virtual int set_alloc(
+ db_malloc_fcn_type, db_realloc_fcn_type, db_free_fcn_type);
virtual void set_app_private(void *);
virtual int set_append_recno(int (*)(Db *, Dbt *, db_recno_t));
virtual int set_bt_compare(bt_compare_fcn_type); /*deprecated*/
virtual int set_bt_compare(int (*)(Db *, const Dbt *, const Dbt *));
- virtual int get_bt_minkey(u_int32_t *);
virtual int set_bt_minkey(u_int32_t);
virtual int set_bt_prefix(bt_prefix_fcn_type); /*deprecated*/
virtual int set_bt_prefix(size_t (*)(Db *, const Dbt *, const Dbt *));
- virtual int get_cachesize(u_int32_t *, u_int32_t *, int *);
virtual int set_cachesize(u_int32_t, u_int32_t, int);
virtual int set_dup_compare(dup_compare_fcn_type); /*deprecated*/
virtual int set_dup_compare(int (*)(Db *, const Dbt *, const Dbt *));
- virtual int get_encrypt_flags(u_int32_t *);
virtual int set_encrypt(const char *, u_int32_t);
virtual void set_errcall(
void (*)(const DbEnv *, const char *, const char *));
- virtual void get_errfile(FILE **);
virtual void set_errfile(FILE *);
- virtual void get_errpfx(const char **);
virtual void set_errpfx(const char *);
virtual int set_feedback(void (*)(Db *, int, int));
- virtual int get_flags(u_int32_t *);
virtual int set_flags(u_int32_t);
- virtual int get_h_ffactor(u_int32_t *);
+ virtual int set_h_compare(h_compare_fcn_type); /*deprecated*/
+ virtual int set_h_compare(int (*)(Db *, const Dbt *, const Dbt *));
virtual int set_h_ffactor(u_int32_t);
virtual int set_h_hash(h_hash_fcn_type); /*deprecated*/
virtual int set_h_hash(u_int32_t (*)(Db *, const void *, u_int32_t));
- virtual int get_h_nelem(u_int32_t *);
virtual int set_h_nelem(u_int32_t);
- virtual int get_lorder(int *);
virtual int set_lorder(int);
virtual void set_msgcall(void (*)(const DbEnv *, const char *));
- virtual void get_msgfile(FILE **);
virtual void set_msgfile(FILE *);
- virtual int get_pagesize(u_int32_t *);
virtual int set_pagesize(u_int32_t);
virtual int set_paniccall(void (*)(DbEnv *, int));
- virtual int get_re_delim(int *);
+ virtual int set_priority(DB_CACHE_PRIORITY);
+ virtual int set_q_extentsize(u_int32_t);
virtual int set_re_delim(int);
- virtual int get_re_len(u_int32_t *);
virtual int set_re_len(u_int32_t);
- virtual int get_re_pad(int *);
virtual int set_re_pad(int);
- virtual int get_re_source(const char **);
virtual int set_re_source(const char *);
- virtual int get_q_extentsize(u_int32_t *);
- virtual int set_q_extentsize(u_int32_t);
virtual int stat(DbTxn *, void *sp, u_int32_t flags);
virtual int stat_print(u_int32_t flags);
virtual int sync(u_int32_t flags);
virtual int truncate(DbTxn *, u_int32_t *, u_int32_t);
virtual int upgrade(const char *name, u_int32_t flags);
- virtual int verify(const char *, const char *, __DB_STD(ostream) *,
- u_int32_t);
+ virtual int verify(
+ const char *, const char *, __DB_STD(ostream) *, u_int32_t);
// These additional methods are not in the C interface, and
// are only available for C++.
//
+ virtual void *get_app_private() const;
virtual __DB_STD(ostream) *get_error_stream();
virtual void set_error_stream(__DB_STD(ostream) *);
virtual __DB_STD(ostream) *get_message_stream();
@@ -326,6 +332,7 @@ public:
size_t (*bt_prefix_callback_)(Db *, const Dbt *, const Dbt *);
int (*dup_compare_callback_)(Db *, const Dbt *, const Dbt *);
void (*feedback_callback_)(Db *, int, int);
+ int (*h_compare_callback_)(Db *, const Dbt *, const Dbt *);
u_int32_t (*h_hash_callback_)(Db *, const void *, u_int32_t);
};
@@ -342,8 +349,10 @@ public:
int del(u_int32_t flags);
int dup(Dbc** cursorp, u_int32_t flags);
int get(Dbt* key, Dbt *data, u_int32_t flags);
+ int get_priority(DB_CACHE_PRIORITY *priorityp);
int pget(Dbt* key, Dbt* pkey, Dbt *data, u_int32_t flags);
int put(Dbt* key, Dbt *data, u_int32_t flags);
+ int set_priority(DB_CACHE_PRIORITY priority);
private:
// No data is permitted in this class (see comment at top)
@@ -408,6 +417,8 @@ public:
virtual void set_app_private(void *);
virtual int get_cachesize(u_int32_t *, u_int32_t *, int *);
virtual int set_cachesize(u_int32_t, u_int32_t, int);
+ virtual int get_cache_max(u_int32_t *, u_int32_t *);
+ virtual int set_cache_max(u_int32_t, u_int32_t);
virtual int get_data_dirs(const char ***);
virtual int set_data_dir(const char *);
virtual int get_encrypt_flags(u_int32_t *);
@@ -451,8 +462,8 @@ public:
virtual int set_mp_mmapsize(size_t);
virtual int get_mp_max_openfd(int *);
virtual int set_mp_max_openfd(int);
- virtual int get_mp_max_write(int *, int *);
- virtual int set_mp_max_write(int, int);
+ virtual int get_mp_max_write(int *, db_timeout_t *);
+ virtual int set_mp_max_write(int, db_timeout_t);
virtual void set_msgcall(void (*)(const DbEnv *, const char *));
virtual void get_msgfile(FILE **);
virtual void set_msgfile(FILE *);
@@ -571,17 +582,19 @@ public:
// Replication functions
//
- virtual int rep_elect(int, int, int *, u_int32_t);
+ virtual int rep_elect(int, int, u_int32_t);
virtual int rep_flush();
- virtual int rep_process_message(Dbt *, Dbt *, int *, DbLsn *);
+ virtual int rep_process_message(Dbt *, Dbt *, int, DbLsn *);
virtual int rep_start(Dbt *, u_int32_t);
virtual int rep_stat(DB_REP_STAT **statp, u_int32_t flags);
virtual int rep_stat_print(u_int32_t flags);
+ virtual int rep_set_lease(u_int32_t, u_int32_t);
virtual int rep_get_limit(u_int32_t *, u_int32_t *);
virtual int rep_set_limit(u_int32_t, u_int32_t);
virtual int rep_set_transport(int, int (*)(DbEnv *,
const Dbt *, const Dbt *, const DbLsn *, int, u_int32_t));
virtual int set_rep_request(u_int32_t, u_int32_t);
+ virtual int get_thread_count(u_int32_t *);
virtual int set_thread_count(u_int32_t);
virtual int set_thread_id(void (*)(DbEnv *, pid_t *, db_threadid_t *));
virtual int set_thread_id_string(char *(*)(DbEnv *,
@@ -594,7 +607,7 @@ public:
//
virtual int rep_get_nsites(int *n);
virtual int rep_set_nsites(int n);
- virtual int rep_get_priority(int *priority);
+ virtual int rep_get_priority(int *priorityp);
virtual int rep_set_priority(int priority);
virtual int rep_get_timeout(int which, db_timeout_t *timeout);
virtual int rep_set_timeout(int which, db_timeout_t timeout);
@@ -606,6 +619,8 @@ public:
u_int32_t flags);
virtual int repmgr_site_list(u_int *countp, DB_REPMGR_SITE **listp);
virtual int repmgr_start(int nthreads, u_int32_t flags);
+ virtual int repmgr_stat(DB_REPMGR_STAT **statp, u_int32_t flags);
+ virtual int repmgr_stat_print(u_int32_t flags);
// Conversion functions
//
@@ -718,6 +733,7 @@ class _exported DbLogc : protected DB_LOGC
public:
int close(u_int32_t _flags);
int get(DbLsn *lsn, Dbt *data, u_int32_t _flags);
+ int version(u_int32_t *versionp, u_int32_t _flags);
private:
// No data is permitted in this class (see comment at top)
@@ -753,25 +769,25 @@ class _exported DbMpoolFile
public:
int close(u_int32_t flags);
int get(db_pgno_t *pgnoaddr, DbTxn *txn, u_int32_t flags, void *pagep);
- int open(const char *file, u_int32_t flags, int mode, size_t pagesize);
- int get_transactional(void);
- int put(void *pgaddr, u_int32_t flags);
- int set(void *pgaddr, u_int32_t flags);
int get_clear_len(u_int32_t *len);
- int set_clear_len(u_int32_t len);
int get_fileid(u_int8_t *fileid);
- int set_fileid(u_int8_t *fileid);
int get_flags(u_int32_t *flagsp);
- int set_flags(u_int32_t flags, int onoff);
int get_ftype(int *ftype);
- int set_ftype(int ftype);
+ int get_last_pgno(db_pgno_t *pgnop);
int get_lsn_offset(int32_t *offsetp);
- int set_lsn_offset(int32_t offset);
int get_maxsize(u_int32_t *gbytes, u_int32_t *bytes);
- int set_maxsize(u_int32_t gbytes, u_int32_t bytes);
int get_pgcookie(DBT *dbt);
- int set_pgcookie(DBT *dbt);
int get_priority(DB_CACHE_PRIORITY *priorityp);
+ int get_transactional(void);
+ int open(const char *file, u_int32_t flags, int mode, size_t pagesize);
+ int put(void *pgaddr, DB_CACHE_PRIORITY priority, u_int32_t flags);
+ int set_clear_len(u_int32_t len);
+ int set_fileid(u_int8_t *fileid);
+ int set_flags(u_int32_t flags, int onoff);
+ int set_ftype(int ftype);
+ int set_lsn_offset(int32_t offset);
+ int set_maxsize(u_int32_t gbytes, u_int32_t bytes);
+ int set_pgcookie(DBT *dbt);
int set_priority(DB_CACHE_PRIORITY priority);
int sync();
diff --git a/db/dbinc/db_dispatch.h b/db/dbinc/db_dispatch.h
index c86f2c999..8844e7e79 100644
--- a/db/dbinc/db_dispatch.h
+++ b/db/dbinc/db_dispatch.h
@@ -1,8 +1,7 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*/
/*
* Copyright (c) 1995, 1996
@@ -32,7 +31,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: db_dispatch.h,v 12.8 2006/08/24 14:45:29 bostic Exp $
+ * $Id: db_dispatch.h,v 12.11 2007/05/17 15:15:05 bostic Exp $
*/
#ifndef _DB_DISPATCH_H_
@@ -56,6 +55,7 @@ typedef enum {
#define DB_TXNLIST_MASK(hp, n) (n % hp->nslots)
struct __db_txnhead {
+ void *td; /* If abort, the detail for the txn. */
u_int32_t maxid; /* Maximum transaction id. */
DB_LSN maxlsn; /* Maximum commit lsn. */
DB_LSN ckplsn; /* LSN of last retained checkpoint. */
diff --git a/db/dbinc/db_int.in b/db/dbinc/db_int.in
index 7c3e085cf..6fc2030ba 100644
--- a/db/dbinc/db_int.in
+++ b/db/dbinc/db_int.in
@@ -1,19 +1,18 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: db_int.in,v 12.41 2006/09/19 15:06:59 bostic Exp $
+ * $Id: db_int.in,v 12.58 2007/05/30 14:06:39 bostic Exp $
*/
#ifndef _DB_INT_H_
#define _DB_INT_H_
/*******************************************************
- * Berkeley DB includes.
+ * Berkeley DB ANSI/POSIX include files.
*******************************************************/
-#ifndef NO_SYSTEM_INCLUDES
+#ifdef HAVE_SYSTEM_INCLUDE_FILES
#include <sys/types.h>
#ifdef DIAG_MVCC
#include <sys/mman.h>
@@ -47,7 +46,9 @@
#endif
#if defined(__INCLUDE_NETWORKING)
+#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
+#endif
#include <netinet/in.h>
#include <netdb.h>
#include <arpa/inet.h>
@@ -69,9 +70,34 @@
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
+
+#if defined(__INCLUDE_DIRECTORY)
+#if HAVE_DIRENT_H
+# include <dirent.h>
+# define NAMLEN(dirent) strlen((dirent)->d_name)
+#else
+# define dirent direct
+# define NAMLEN(dirent) (dirent)->d_namlen
+# if HAVE_SYS_NDIR_H
+# include <sys/ndir.h>
+# endif
+# if HAVE_SYS_DIR_H
+# include <sys/dir.h>
+# endif
+# if HAVE_NDIR_H
+# include <ndir.h>
+# endif
+#endif
+#endif /* __INCLUDE_DIRECTORY_READ */
+
+#endif /* !HAVE_SYSTEM_INCLUDE_FILES */
+
+#ifdef DB_WIN32
+#include "dbinc/win_db.h"
#endif
#include "db.h"
+#include "clib_port.h"
#include "dbinc/queue.h"
#include "dbinc/shqueue.h"
@@ -83,41 +109,6 @@ extern "C" {
/*******************************************************
* General purpose constants and macros.
*******************************************************/
-#ifndef UINT16_MAX
-#define UINT16_MAX 65535 /* Maximum 16-bit unsigned. */
-#endif
-#ifndef UINT32_MAX
-#ifdef __STDC__
-#define UINT32_MAX 4294967295U /* Maximum 32-bit unsigned. */
-#else
-#define UINT32_MAX 0xffffffff /* Maximum 32-bit unsigned. */
-#endif
-#endif
-
-#if defined(HAVE_64BIT_TYPES)
-#undef INT64_MAX
-#undef INT64_MIN
-#undef UINT64_MAX
-
-#ifdef DB_WIN32
-#define INT64_MAX _I64_MAX
-#define INT64_MIN _I64_MIN
-#define UINT64_MAX _UI64_MAX
-#else
-/*
- * Override the system's 64-bit min/max constants. AIX's 32-bit compiler can
- * handle 64-bit values, but the system's constants don't include the LL/ULL
- * suffix, and so can't be compiled using the 32-bit compiler.
- */
-#define INT64_MAX 9223372036854775807LL
-#define INT64_MIN (-INT64_MAX-1)
-#define UINT64_MAX 18446744073709551615ULL
-#endif /* DB_WIN32 */
-
-@INT64_FMT@
-@UINT64_FMT@
-#endif /* HAVE_64BIT_TYPES */
-
#undef FALSE
#define FALSE 0
#undef TRUE
@@ -126,8 +117,13 @@ extern "C" {
#define MEGABYTE 1048576
#define GIGABYTE 1073741824
-#define MS_PER_SEC 1000 /* Milliseconds in a second. */
-#define USEC_PER_MS 1000 /* Microseconds in a millisecond. */
+#define NS_PER_MS 1000000 /* Nanoseconds in a millisecond */
+#define NS_PER_US 1000 /* Nanoseconds in a microsecond */
+#define NS_PER_SEC 1000000000 /* Nanoseconds in a second */
+#define US_PER_MS 1000 /* Microseconds in a millisecond */
+#define US_PER_SEC 1000000 /* Microseconds in a second */
+#define MS_PER_NS 1000000 /* Milliseconds in a nanosecond */
+#define MS_PER_SEC 1000 /* Milliseconds in a second */
#define RECNO_OOB 0 /* Illegal record number. */
@@ -159,11 +155,6 @@ extern "C" {
#define ALIGNP_INC(p, bound) \
(void *)(((uintptr_t)(p) + (bound) - 1) & ~(((uintptr_t)(bound)) - 1))
-/* Decrement a pointer to a specific boundary. */
-#undef ALIGNP_DEC
-#define ALIGNP_DEC(p, bound) \
- (void *)((uintptr_t)(p) & ~(((uintptr_t)(bound)) - 1))
-
/*
* Print an address as a u_long (a u_long is the largest type we can print
* portably). Most 64-bit systems have made longs 64-bits, so this should
@@ -233,6 +224,17 @@ typedef struct __fn {
100 - ((double)(v) * 100) / (((double)total) * (pgsize))))
/*
+ * Statistics update shared memory and so are expensive -- don't update the
+ * values unless we're going to display the results.
+ */
+#undef STAT
+#ifdef HAVE_STATISTICS
+#define STAT(x) x
+#else
+#define STAT(x)
+#endif
+
+/*
* Structure used for callback message aggregation.
*
* Display values in XXX_stat_print calls.
@@ -312,6 +314,7 @@ typedef struct __db_msgbuf {
#define DB_RETOK_DBDEL(ret) DB_RETOK_DBCDEL(ret)
#define DB_RETOK_DBGET(ret) DB_RETOK_DBCGET(ret)
#define DB_RETOK_DBPUT(ret) ((ret) == 0 || (ret) == DB_KEYEXIST)
+#define DB_RETOK_EXISTS(ret) DB_RETOK_DBCGET(ret)
#define DB_RETOK_LGGET(ret) ((ret) == 0 || (ret) == DB_NOTFOUND)
#define DB_RETOK_MPGET(ret) ((ret) == 0 || (ret) == DB_PAGE_NOTFOUND)
#define DB_RETOK_REPPMSG(ret) ((ret) == 0 || \
@@ -436,7 +439,7 @@ typedef enum {
#ifdef DIAGNOSTIC
#define ENV_LEAVE(dbenv, ip) do { \
if ((ip) != NULL) { \
- DB_ASSERT(dbenv, ip->dbth_state == THREAD_ACTIVE); \
+ DB_ASSERT(dbenv, (ip)->dbth_state == THREAD_ACTIVE); \
(ip)->dbth_state = THREAD_OUT; \
} \
} while (0)
@@ -647,7 +650,6 @@ typedef struct __dbpginfo {
((lsn0)->offset != (lsn1)->offset ? \
((lsn0)->offset < (lsn1)->offset ? -1 : 1) : 0))
-
/*******************************************************
* Txn.
*******************************************************/
@@ -714,6 +716,7 @@ typedef SH_TAILQ_HEAD(__hash_head) DB_HASHTAB;
@db_int_def@
#include "dbinc/globals.h"
+#include "dbinc/clock.h"
#include "dbinc/debug.h"
#include "dbinc/region.h"
#include "dbinc_auto/env_ext.h"
@@ -744,7 +747,7 @@ typedef SH_TAILQ_HEAD(__hash_head) DB_HASHTAB;
* Test if we need to log a change. By default, we don't log operations without
* associated transactions, unless DIAGNOSTIC, DEBUG_ROP or DEBUG_WOP are on.
* This is because we want to get log records for read/write operations, and, if
- * we trying to debug something, more information is always better.
+ * we are trying to debug something, more information is always better.
*
* The DBC_RECOVER flag is set when we're in abort, as well as during recovery;
* thus DBC_LOGGING may be false for a particular dbc even when DBENV_LOGGING
@@ -754,7 +757,7 @@ typedef SH_TAILQ_HEAD(__hash_head) DB_HASHTAB;
* in the log headers, which IS_RECOVERING (and thus DBENV_LOGGING) rely on, and
* because DBC_RECOVER should be set anytime IS_RECOVERING would be true.
*
- * If we're not in recovery (master - doing an abort a client applying
+ * If we're not in recovery (master - doing an abort or a client applying
* a txn), then a client's only path through here is on an internal
* operation, and a master's only path through here is a transactional
* operation. Detect if either is not the case.
diff --git a/db/dbinc/db_join.h b/db/dbinc/db_join.h
index 089972f6f..7aa1f26fb 100644
--- a/db/dbinc/db_join.h
+++ b/db/dbinc/db_join.h
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1998-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1998,2007 Oracle. All rights reserved.
*
- * $Id: db_join.h,v 12.5 2006/08/24 14:45:29 bostic Exp $
+ * $Id: db_join.h,v 12.7 2007/05/17 15:15:05 bostic Exp $
*/
#ifndef _DB_JOIN_H_
diff --git a/db/dbinc/db_page.h b/db/dbinc/db_page.h
index 4f2973cc3..8f1e3c831 100644
--- a/db/dbinc/db_page.h
+++ b/db/dbinc/db_page.h
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: db_page.h,v 12.10 2006/08/24 14:45:29 bostic Exp $
+ * $Id: db_page.h,v 12.13 2007/05/17 15:15:05 bostic Exp $
*/
#ifndef _DB_PAGE_H_
@@ -36,7 +35,7 @@ extern "C" {
/* Page types. */
#define P_INVALID 0 /* Invalid page type. */
#define __P_DUPLICATE 1 /* Duplicate. DEPRECATED in 3.1 */
-#define P_HASH 2 /* Hash. */
+#define P_HASH_UNSORTED 2 /* Hash pages created pre 4.6. DEPRECATED */
#define P_IBTREE 3 /* Btree internal. */
#define P_IRECNO 4 /* Recno internal. */
#define P_LBTREE 5 /* Btree leaf. */
@@ -47,7 +46,8 @@ extern "C" {
#define P_QAMMETA 10 /* Queue metadata page. */
#define P_QAMDATA 11 /* Queue data page. */
#define P_LDUP 12 /* Off-page duplicate leaf. */
-#define P_PAGETYPE_MAX 13
+#define P_HASH 13 /* Sorted hash page. */
+#define P_PAGETYPE_MAX 14
/* Flag to __db_new */
#define P_DONTEXTEND 0x8000 /* Don't allocate if there are no free pages. */
@@ -456,9 +456,9 @@ typedef struct _hkeydata {
(HKEYDATA_SIZE(len) + sizeof(db_indx_t))
/* Put a HKEYDATA item at the location referenced by a page entry. */
-#define PUT_HKEYDATA(pe, kd, len, type) { \
- ((HKEYDATA *)pe)->type = type; \
- memcpy((u_int8_t *)pe + sizeof(u_int8_t), kd, len); \
+#define PUT_HKEYDATA(pe, kd, len, etype) { \
+ ((HKEYDATA *)(pe))->type = etype; \
+ memcpy((u_int8_t *)(pe) + sizeof(u_int8_t), kd, len); \
}
/*
diff --git a/db/dbinc/db_server_int.h b/db/dbinc/db_server_int.h
index f93ba15ba..207fd9a41 100644
--- a/db/dbinc/db_server_int.h
+++ b/db/dbinc/db_server_int.h
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: db_server_int.h,v 12.9 2006/08/24 14:45:29 bostic Exp $
+ * $Id: db_server_int.h,v 12.11 2007/05/17 15:15:05 bostic Exp $
*/
#ifndef _DB_SERVER_INT_H_
diff --git a/db/dbinc/db_shash.h b/db/dbinc/db_shash.h
deleted file mode 100644
index 51277e5e0..000000000
--- a/db/dbinc/db_shash.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1996-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: db_shash.h,v 11.13 2004/01/28 03:36:02 bostic Exp $
- */
-
-#ifndef _DB_SHASH_H_
-#define _DB_SHASH_H_
-
-/* Hash Headers */
-typedef SH_TAILQ_HEAD(__hash_head) DB_HASHTAB;
-
-/*
- * HASHLOOKUP --
- *
- * Look up something in a shared memory hash table. The "elt" argument
- * should be a key, and cmp_func must know how to compare a key to whatever
- * structure it is that appears in the hash table. The comparison function
- *
- * begin: address of the beginning of the hash table.
- * ndx: index into table for this item.
- * type: the structure type of the elements that are linked in each bucket.
- * field: the name of the field by which the "type" structures are linked.
- * elt: the item for which we are searching in the hash table.
- * res: the variable into which we'll store the element if we find it.
- * cmp: called as: cmp(lookup_elt, table_elt).
- *
- * If the element is not in the hash table, this macro exits with res set
- * to NULL.
- */
-#define HASHLOOKUP(begin, ndx, type, field, elt, res, cmp) do { \
- DB_HASHTAB *__bucket; \
- \
- __bucket = &begin[ndx]; \
- for (res = SH_TAILQ_FIRST(__bucket, type); \
- res != NULL; res = SH_TAILQ_NEXT(res, field, type)) \
- if (cmp(elt, res)) \
- break; \
-} while (0)
-
-/*
- * HASHINSERT --
- *
- * Insert a new entry into the hash table. This assumes that you already
- * have the bucket locked and that lookup has failed; don't call it if you
- * haven't already called HASHLOOKUP. If you do, you could get duplicate
- * entries.
- *
- * begin: the beginning address of the hash table.
- * ndx: the index for this element.
- * type: the structure type of the elements that are linked in each bucket.
- * field: the name of the field by which the "type" structures are linked.
- * elt: the item to be inserted.
- */
-#define HASHINSERT(begin, ndx, type, field, elt) do { \
- DB_HASHTAB *__bucket; \
- \
- __bucket = &begin[ndx]; \
- SH_TAILQ_INSERT_HEAD(__bucket, elt, field, type); \
-} while (0)
-
-/*
- * HASHREMOVE_EL --
- * Given the object "obj" in the table, remove it.
- *
- * begin: address of the beginning of the hash table.
- * ndx: index into hash table of where this element belongs.
- * type: the structure type of the elements that are linked in each bucket.
- * field: the name of the field by which the "type" structures are linked.
- * obj: the object in the table that we with to delete.
- */
-#define HASHREMOVE_EL(begin, ndx, type, field, obj) { \
- DB_HASHTAB *__bucket; \
- \
- __bucket = &begin[ndx]; \
- SH_TAILQ_REMOVE(__bucket, obj, field, type); \
-}
-#endif /* !_DB_SHASH_H_ */
diff --git a/db/dbinc/db_swap.h b/db/dbinc/db_swap.h
index 1fc13b159..5c9e0dc00 100644
--- a/db/dbinc/db_swap.h
+++ b/db/dbinc/db_swap.h
@@ -1,8 +1,7 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*/
/*
* Copyright (c) 1990, 1993, 1994
@@ -32,7 +31,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: db_swap.h,v 12.6 2006/08/24 14:45:29 bostic Exp $
+ * $Id: db_swap.h,v 12.8 2007/05/17 15:15:05 bostic Exp $
*/
#ifndef _DB_SWAP_H_
diff --git a/db/dbinc/db_upgrade.h b/db/dbinc/db_upgrade.h
index 6e52859b5..464394008 100644
--- a/db/dbinc/db_upgrade.h
+++ b/db/dbinc/db_upgrade.h
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: db_upgrade.h,v 12.4 2006/08/24 14:45:29 bostic Exp $
+ * $Id: db_upgrade.h,v 12.6 2007/05/17 15:15:05 bostic Exp $
*/
#ifndef _DB_UPGRADE_H_
diff --git a/db/dbinc/db_verify.h b/db/dbinc/db_verify.h
index cc88d1c87..49a63a0de 100644
--- a/db/dbinc/db_verify.h
+++ b/db/dbinc/db_verify.h
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1999-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1999,2007 Oracle. All rights reserved.
*
- * $Id: db_verify.h,v 12.9 2006/09/08 21:57:14 bostic Exp $
+ * $Id: db_verify.h,v 12.11 2007/05/17 15:15:05 bostic Exp $
*/
#ifndef _DB_VERIFY_H_
diff --git a/db/dbinc/debug.h b/db/dbinc/debug.h
index e47f3f614..4b6bea6c4 100644
--- a/db/dbinc/debug.h
+++ b/db/dbinc/debug.h
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1998-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1998,2007 Oracle. All rights reserved.
*
- * $Id: debug.h,v 12.8 2006/08/24 14:45:29 bostic Exp $
+ * $Id: debug.h,v 12.12 2007/05/17 15:15:05 bostic Exp $
*/
#ifndef _DB_DEBUG_H_
@@ -80,101 +79,98 @@ typedef enum {
* original routine that took the variadic list of arguments.
*/
#if defined(STDC_HEADERS) || defined(__cplusplus)
-#define DB_REAL_ERR(env, error, error_set, default_stream, fmt) { \
- va_list ap; \
+#define DB_REAL_ERR(env, error, error_set, app_call, fmt) { \
+ va_list __ap; \
\
/* Call the application's callback function, if specified. */ \
- va_start(ap, fmt); \
+ va_start(__ap, fmt); \
if ((env) != NULL && (env)->db_errcall != NULL) \
- __db_errcall(env, error, error_set, fmt, ap); \
- va_end(ap); \
- \
- /* Write to the application's file descriptor, if specified. */\
- va_start(ap, fmt); \
- if ((env) != NULL && (env)->db_errfile != NULL) \
- __db_errfile(env, error, error_set, fmt, ap); \
- va_end(ap); \
+ __db_errcall(env, error, error_set, fmt, __ap); \
+ va_end(__ap); \
\
/* \
- * If we have a default and we didn't do either of the above, \
- * write to the default. \
+ * If the application specified a file descriptor, write to it. \
+ * If we wrote to neither the application's callback routine or \
+ * its file descriptor, and it's an application error message \
+ * using {DbEnv,Db}.{err,errx} or the application has never \
+ * configured an output channel, default by writing to stderr. \
*/ \
- va_start(ap, fmt); \
- if ((default_stream) && ((env) == NULL || \
- ((env)->db_errcall == NULL && (env)->db_errfile == NULL))) \
- __db_errfile(env, error, error_set, fmt, ap); \
- va_end(ap); \
+ va_start(__ap, fmt); \
+ if ((env) == NULL || \
+ (env)->db_errfile != NULL || \
+ ((env)->db_errcall == NULL && \
+ ((app_call) || F_ISSET((env), DB_ENV_NO_OUTPUT_SET)))) \
+ __db_errfile(env, error, error_set, fmt, __ap); \
+ va_end(__ap); \
}
#else
-#define DB_REAL_ERR(env, error, error_set, default_stream, fmt) { \
- va_list ap; \
+#define DB_REAL_ERR(env, error, error_set, fmt) { \
+ va_list __ap; \
\
/* Call the application's callback function, if specified. */ \
- va_start(ap); \
+ va_start(__ap); \
if ((env) != NULL && (env)->db_errcall != NULL) \
- __db_errcall(env, error, error_set, fmt, ap); \
- va_end(ap); \
- \
- /* Write to the application's file descriptor, if specified. */\
- va_start(ap); \
- if ((env) != NULL && (env)->db_errfile != NULL) \
- __db_errfile(env, error, error_set, fmt, ap); \
- va_end(ap); \
+ __db_errcall(env, error, error_set, fmt, __ap); \
+ va_end(__ap); \
\
/* \
- * If we have a default and we didn't do either of the above, \
- * write to the default. \
+ * If the application specified a file descriptor, write to it. \
+ * If we wrote to neither the application's callback routine or \
+ * its file descriptor, and it's an application error message \
+ * using {DbEnv,Db}.{err,errx} or the application has never \
+ * configured an output channel, default by writing to stderr. \
*/ \
- va_start(ap); \
- if ((default_stream) && ((env) == NULL || \
- ((env)->db_errcall == NULL && (env)->db_errfile == NULL))) \
- __db_errfile(env, error, error_set, fmt, ap); \
- va_end(ap); \
+ va_start(__ap); \
+ if ((env) == NULL || \
+ (env)->db_errfile != NULL || \
+ ((env)->db_errcall == NULL && \
+ ((app_call) || F_ISSET((env), DB_ENV_NO_OUTPUT_SET)))) \
+ va_end(__ap); \
}
#endif
#if defined(STDC_HEADERS) || defined(__cplusplus)
#define DB_REAL_MSG(env, fmt) { \
- va_list ap; \
+ va_list __ap; \
\
/* Call the application's callback function, if specified. */ \
- va_start(ap, fmt); \
+ va_start(__ap, fmt); \
if ((env) != NULL && (env)->db_msgcall != NULL) \
- __db_msgcall(env, fmt, ap); \
- va_end(ap); \
+ __db_msgcall(env, fmt, __ap); \
+ va_end(__ap); \
\
/* \
- * If the application specified a file descriptor, or we wrote \
- * to neither the application's callback routine or to its file \
- * descriptor, write to stdout. \
+ * If the application specified a file descriptor, write to it. \
+ * If we wrote to neither the application's callback routine or \
+ * its file descriptor, write to stdout. \
*/ \
- va_start(ap, fmt); \
+ va_start(__ap, fmt); \
if ((env) == NULL || \
(env)->db_msgfile != NULL || (env)->db_msgcall == NULL) { \
- __db_msgfile(env, fmt, ap); \
+ __db_msgfile(env, fmt, __ap); \
} \
- va_end(ap); \
+ va_end(__ap); \
}
#else
#define DB_REAL_MSG(env, fmt) { \
- va_list ap; \
+ va_list __ap; \
\
/* Call the application's callback function, if specified. */ \
- va_start(ap); \
+ va_start(__ap); \
if ((env) != NULL && (env)->db_msgcall != NULL) \
- __db_msgcall(env, fmt, ap); \
- va_end(ap); \
+ __db_msgcall(env, fmt, __ap); \
+ va_end(__ap); \
\
/* \
- * If the application specified a file descriptor, or we wrote \
- * to neither the application's callback routine or to its file \
- * descriptor, write to stdout. \
+ * If the application specified a file descriptor, write to it. \
+ * If we wrote to neither the application's callback routine or \
+ * its file descriptor, write to stdout. \
*/ \
- va_start(ap); \
+ va_start(__ap); \
if ((env) == NULL || \
(env)->db_msgfile != NULL || (env)->db_msgcall == NULL) { \
- __db_msgfile(env, fmt, ap); \
+ __db_msgfile(env, fmt, __ap); \
} \
- va_end(ap); \
+ va_end(__ap); \
}
#endif
diff --git a/db/dbinc/fop.h b/db/dbinc/fop.h
index 33f919d22..6ac1baaa0 100644
--- a/db/dbinc/fop.h
+++ b/db/dbinc/fop.h
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2001-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2001,2007 Oracle. All rights reserved.
*
- * $Id: fop.h,v 12.6 2006/08/24 14:45:29 bostic Exp $
+ * $Id: fop.h,v 12.8 2007/05/17 15:15:05 bostic Exp $
*/
#ifndef _DB_FOP_H_
diff --git a/db/dbinc/globals.h b/db/dbinc/globals.h
index 3d68423ef..b5404f6ed 100644
--- a/db/dbinc/globals.h
+++ b/db/dbinc/globals.h
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: globals.h,v 12.4 2006/08/24 14:45:29 bostic Exp $
+ * $Id: globals.h,v 12.7 2007/05/17 15:15:05 bostic Exp $
*/
#ifndef _DB_GLOBALS_H_
@@ -24,6 +23,9 @@ extern "C" {
#endif
typedef struct __db_globals {
+#ifdef HAVE_BREW
+ struct tm ltm; /* BREW localtime structure */
+#endif
#ifdef HAVE_VXWORKS
u_int32_t db_global_init; /* VxWorks: inited */
SEM_ID db_global_lock; /* VxWorks: global semaphore */
@@ -33,6 +35,16 @@ typedef struct __db_globals {
char *db_line; /* DB display string. */
+ char error_buf[40]; /* Error string buffer. */
+
+ int uid_init; /* srand set in UID generator */
+
+ u_long rand_next; /* rand/srand value */
+
+ u_int32_t fid_serial; /* file id counter */
+
+ int db_errno; /* Errno value if not available */
+
int (*j_close) __P((int)); /* Underlying OS interface jump table.*/
void (*j_dirfree) __P((char **, int));
int (*j_dirlist) __P((const char *, char ***, int *));
@@ -58,6 +70,10 @@ typedef struct __db_globals {
int (*j_yield) __P((void));
} DB_GLOBALS;
+#ifdef HAVE_BREW
+#define DB_GLOBAL(v) \
+ ((DB_GLOBALS *)(((BDBApp *)GETAPPINSTANCE())->db_global_values))->v
+#else
#ifdef DB_INITIALIZE_DB_GLOBALS
DB_GLOBALS __db_global_values = {
#ifdef HAVE_VXWORKS
@@ -68,7 +84,11 @@ DB_GLOBALS __db_global_values = {
{NULL, &__db_global_values.db_envq.tqh_first},
"=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=",
-
+ { 0 },
+ 0,
+ 0,
+ 0,
+ 0,
NULL,
NULL,
NULL,
@@ -97,6 +117,7 @@ extern DB_GLOBALS __db_global_values;
#endif
#define DB_GLOBAL(v) __db_global_values.v
+#endif /* HAVE_BREW */
#if defined(__cplusplus)
}
diff --git a/db/dbinc/hash.h b/db/dbinc/hash.h
index acc608802..c8490e4f0 100644
--- a/db/dbinc/hash.h
+++ b/db/dbinc/hash.h
@@ -1,8 +1,7 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*/
/*
* Copyright (c) 1990, 1993, 1994
@@ -39,7 +38,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: hash.h,v 12.5 2006/08/24 14:45:29 bostic Exp $
+ * $Id: hash.h,v 12.11 2007/05/17 17:22:36 bostic Exp $
*/
#ifndef _DB_HASH_H_
@@ -54,8 +53,9 @@ typedef struct hash_t {
db_pgno_t meta_pgno; /* Page number of the meta data page. */
u_int32_t h_ffactor; /* Fill factor. */
u_int32_t h_nelem; /* Number of elements. */
- /* Hash function. */
+ /* Hash and compare functions. */
u_int32_t (*h_hash) __P((DB *, const void *, u_int32_t));
+ int (*h_compare) __P((DB *, const DBT *, const DBT *));
} HASH;
/* Cursor structure definitions. */
@@ -78,6 +78,7 @@ typedef struct cursor_t {
db_indx_t dup_tlen; /* Total length of duplicate entry. */
u_int32_t seek_size; /* Number of bytes we need for add. */
db_pgno_t seek_found_page;/* Page on which we can insert. */
+ db_indx_t seek_found_indx;/* Insert position for item. */
u_int32_t order; /* Relative order among deleted curs. */
#define H_CONTINUE 0x0001 /* Join--search strictly fwd for data */
@@ -134,6 +135,18 @@ typedef struct cursor_t {
#define HASH_UNUSED2 0x70
#define SPLITOLD 0x80
#define SPLITNEW 0x90
+#define SORTPAGE 0x100
+
+/* Flags to control behavior of __ham_del_pair */
+#define HAM_DEL_NO_CURSOR 0x01 /* Don't do any cursor adjustment */
+#define HAM_DEL_NO_RECLAIM 0x02 /* Don't reclaim empty pages */
+
+typedef enum {
+ DB_HAM_CURADJ_DEL = 1,
+ DB_HAM_CURADJ_ADD = 2,
+ DB_HAM_CURADJ_ADDMOD = 3,
+ DB_HAM_CURADJ_DELMOD = 4
+} db_ham_curadj;
typedef enum {
DB_HAM_CHGPG = 1,
diff --git a/db/dbinc/hmac.h b/db/dbinc/hmac.h
index 5868d7bfb..8fd5a9e7a 100644
--- a/db/dbinc/hmac.h
+++ b/db/dbinc/hmac.h
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: hmac.h,v 12.4 2006/08/24 14:45:29 bostic Exp $
+ * $Id: hmac.h,v 12.6 2007/05/17 15:15:05 bostic Exp $
*/
#ifndef _DB_HMAC_H_
diff --git a/db/dbinc/lock.h b/db/dbinc/lock.h
index 8d5a6a367..5651f598b 100644
--- a/db/dbinc/lock.h
+++ b/db/dbinc/lock.h
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: lock.h,v 12.11 2006/08/24 14:45:29 bostic Exp $
+ * $Id: lock.h,v 12.18 2007/05/17 18:46:15 bostic Exp $
*/
#ifndef _DB_LOCK_H_
@@ -41,30 +40,26 @@ extern "C" {
(m) == DB_LOCK_IWRITE || (m) == DB_LOCK_IWR)
/*
- * Lock timers.
- */
-typedef struct {
- u_int32_t tv_sec; /* Seconds. */
- u_int32_t tv_usec; /* Microseconds. */
-} db_timeval_t;
-
-#define LOCK_TIME_ISVALID(time) ((time)->tv_sec != 0)
-#define LOCK_SET_TIME_INVALID(time) ((time)->tv_sec = 0)
-#define LOCK_TIME_ISMAX(time) ((time)->tv_sec == UINT32_MAX)
-#define LOCK_SET_TIME_MAX(time) ((time)->tv_sec = UINT32_MAX)
-#define LOCK_TIME_EQUAL(t1, t2) \
- ((t1)->tv_sec == (t2)->tv_sec && (t1)->tv_usec == (t2)->tv_usec)
-#define LOCK_TIME_GREATER(t1, t2) \
- ((t1)->tv_sec > (t2)->tv_sec || \
- ((t1)->tv_sec == (t2)->tv_sec && (t1)->tv_usec > (t2)->tv_usec))
-
-/* Macros to lock/unlock the lock region as a whole. */
+ * Macros to lock/unlock the lock region as a whole.
+ * IF we are using multiple mutexes in the lock region these are a noop.
+ */
+#ifdef HAVE_FINE_GRAINED_LOCK_MANAGER
+#define LOCK_SYSTEM_LOCK(dbenv)
+#define LOCK_SYSTEM_UNLOCK(dbenv)
+#else
#define LOCK_SYSTEM_LOCK(dbenv) \
MUTEX_LOCK(dbenv, ((DB_LOCKREGION *) \
(dbenv)->lk_handle->reginfo.primary)->mtx_region)
#define LOCK_SYSTEM_UNLOCK(dbenv) \
MUTEX_UNLOCK(dbenv, ((DB_LOCKREGION *) \
(dbenv)->lk_handle->reginfo.primary)->mtx_region)
+#endif
+#define LOCK_REGION_LOCK(dbenv) \
+ MUTEX_LOCK(dbenv, ((DB_LOCKREGION *) \
+ (dbenv)->lk_handle->reginfo.primary)->mtx_region)
+#define LOCK_REGION_UNLOCK(dbenv) \
+ MUTEX_UNLOCK(dbenv, ((DB_LOCKREGION *) \
+ (dbenv)->lk_handle->reginfo.primary)->mtx_region)
/*
* DB_LOCKREGION --
@@ -75,14 +70,19 @@ typedef struct __db_lockregion {
u_int32_t need_dd; /* flag for deadlock detector */
u_int32_t detect; /* run dd on every conflict */
- db_timeval_t next_timeout; /* next time to expire a lock */
+ db_timespec next_timeout; /* next time to expire a lock */
+#ifdef HAVE_FINE_GRAINED_LOCK_MANAGER
+ db_mutex_t mtx_locks; /* mutex for lock allocation. */
+ db_mutex_t mtx_objs; /* mutex for lock object allocation. */
+ db_mutex_t mtx_lockers; /* mutex for locker allocation. */
+#endif
/* free lock header */
SH_TAILQ_HEAD(__flock) free_locks;
/* free obj header */
SH_TAILQ_HEAD(__fobj) free_objs;
+ SH_TAILQ_HEAD(__dobj) dd_objs; /* objects with waiters */
/* free locker header */
SH_TAILQ_HEAD(__flocker) free_lockers;
- SH_TAILQ_HEAD(__dobj) dd_objs; /* objects with waiters */
SH_TAILQ_HEAD(__lkrs) lockers; /* list of lockers */
db_timeout_t lk_timeout; /* timeout for locks. */
@@ -93,6 +93,10 @@ typedef struct __db_lockregion {
roff_t conf_off; /* offset of conflicts array */
roff_t obj_off; /* offset of object hash table */
+#ifdef HAVE_FINE_GRAINED_LOCK_MANAGER
+ roff_t mtx_off; /* offset of object mutex table */
+#endif
+ roff_t stat_off; /* offset to object hash stats */
roff_t locker_off; /* offset of locker hash table */
DB_LOCK_STAT stat; /* stats about locking. */
@@ -113,6 +117,8 @@ typedef struct __sh_dbt {
* Object structures; these live in the object hash table.
*/
typedef struct __db_lockobj {
+ u_int32_t indx; /* Hash index of this object. */
+ u_int32_t generation; /* Generation of this object. */
SH_DBT lockobj; /* Identifies object locked. */
SH_TAILQ_ENTRY links; /* Links for free list or hash list. */
SH_TAILQ_ENTRY dd_links; /* Links for dd list. */
@@ -128,7 +134,7 @@ typedef struct __db_lockobj {
/*
* Locker structures; these live in the locker hash table.
*/
-typedef struct __db_locker {
+struct __db_locker {
u_int32_t id; /* Locker id. */
pid_t pid; /* Process owning locker ID */
@@ -150,8 +156,8 @@ typedef struct __db_locker {
SH_TAILQ_ENTRY links; /* Links for free and hash list. */
SH_TAILQ_ENTRY ulinks; /* Links in-use list. */
SH_LIST_HEAD(_held) heldby; /* Locks held by this locker. */
- db_timeval_t lk_expire; /* When current lock expires. */
- db_timeval_t tx_expire; /* When this txn expires. */
+ db_timespec lk_expire; /* When current lock expires. */
+ db_timespec tx_expire; /* When this txn expires. */
db_timeout_t lk_timeout; /* How long do we let locks live. */
#define DB_LOCKER_DELETED 0x0001
@@ -159,7 +165,7 @@ typedef struct __db_locker {
#define DB_LOCKER_INABORT 0x0004
#define DB_LOCKER_TIMEOUT 0x0008
u_int32_t flags;
-} DB_LOCKER;
+};
/*
* DB_LOCKTAB --
@@ -171,6 +177,10 @@ struct __db_locktab {
REGINFO reginfo; /* Region information. */
u_int8_t *conflicts; /* Pointer to conflict matrix. */
DB_HASHTAB *obj_tab; /* Beginning of object hash table. */
+#ifdef HAVE_FINE_GRAINED_LOCK_MANAGER
+ db_mutex_t *obj_mtx; /* Object mutex array. */
+#endif
+ DB_LOCK_HSTAT *obj_stat; /* Object hash stats array. */
DB_HASHTAB *locker_tab; /* Beginning of locker hash table. */
};
@@ -191,13 +201,14 @@ struct __db_lock {
*/
db_mutex_t mtx_lock;
- u_int32_t holder; /* Who holds this lock. */
+ roff_t holder; /* Who holds this lock. */
u_int32_t gen; /* Generation count. */
SH_TAILQ_ENTRY links; /* Free or holder/waiter list. */
SH_LIST_ENTRY locker_links; /* List of locks held by a locker. */
u_int32_t refcount; /* Reference count the lock. */
db_lockmode_t mode; /* What sort of lock. */
roff_t obj; /* Relative offset of object struct. */
+ u_int32_t indx; /* Hash index of this object. */
db_status_t status; /* Status of this lock. */
};
@@ -215,16 +226,59 @@ struct __db_lock {
#define DB_LOCK_FREE 0x040000
#define DB_LOCK_NOPROMOTE 0x080000
#define DB_LOCK_UNLINK 0x100000
-#define DB_LOCK_NOREGION 0x200000
#define DB_LOCK_NOWAITERS 0x400000
/*
* Macros to get/release different types of mutexes.
*/
+#ifdef HAVE_FINE_GRAINED_LOCK_MANAGER
+/*
+ * All operations on a lock object are preceded by getting a lock on
+ * the mutex for its hash bucket. Lock structures associated with
+ * an object are protected by this mutex as well. If holding a hash bucket
+ * we may call LOCK_OBJECTS to allocate a new object.
+ */
+#define OBJECT_LOCK(lt, reg, obj, ndx) do { \
+ ndx = __lock_ohash(obj) % (reg)->object_t_size; \
+ MUTEX_LOCK((lt)->dbenv, (lt)->obj_mtx[ndx]); \
+} while (0)
+#define OBJECT_LOCK_NDX(lt, ndx) \
+ MUTEX_LOCK((lt)->dbenv, (lt)->obj_mtx[ndx])
+#define OBJECT_UNLOCK(lt, ndx) \
+ MUTEX_UNLOCK((lt)->dbenv, (lt)->obj_mtx[ndx])
+
+/*
+ * These mutexes protect the allocation/deallocation and the queues
+ * of the lock objects, lock structures and locks.
+ * It is assumed that all accesses to a locker are single threaded
+ * since transactions are single threaded. The exception is in the
+ * deadlock detector where we look at the last lock held by the locker
+ * with some care.
+ */
+#define LOCK_OBJECTS(dbenv, region) \
+ MUTEX_LOCK(dbenv, (region)->mtx_objs)
+#define UNLOCK_OBJECTS(dbenv, region) \
+ MUTEX_UNLOCK(dbenv, (region)->mtx_objs)
+#define LOCK_LOCKS(dbenv, region) \
+ MUTEX_LOCK(dbenv, (region)->mtx_locks)
+#define UNLOCK_LOCKS(dbenv, region) \
+ MUTEX_UNLOCK(dbenv, (region)->mtx_locks)
+#define LOCK_LOCKERS(dbenv, region) \
+ MUTEX_LOCK(dbenv, (region)->mtx_lockers)
+#define UNLOCK_LOCKERS(dbenv, region) \
+ MUTEX_UNLOCK(dbenv, (region)->mtx_lockers)
+#else
#define OBJECT_LOCK(lt, reg, obj, ndx) \
ndx = __lock_ohash(obj) % (reg)->object_t_size
-#define SHOBJECT_LOCK(lt, reg, shobj, ndx) \
- ndx = __lock_lhash(shobj) % (reg)->object_t_size
+#define OBJECT_LOCK_NDX(lt, ndx)
+#define OBJECT_UNLOCK(lt, ndx)
+#define LOCK_OBJECTS(dbenv, region)
+#define UNLOCK_OBJECTS(dbenv, region)
+#define LOCK_LOCKS(dbenv, region)
+#define UNLOCK_LOCKS(dbenv, region)
+#define LOCK_LOCKERS(dbenv, region)
+#define UNLOCK_LOCKERS(dbenv, region)
+#endif
/*
* __lock_locker_hash --
@@ -233,7 +287,7 @@ struct __db_lock {
* just return the locker value.
*/
#define __lock_locker_hash(locker) (locker)
-#define LOCKER_LOCK(lt, reg, locker, ndx) \
+#define LOCKER_HASH(lt, reg, locker, ndx) \
ndx = __lock_locker_hash(locker) % (reg)->locker_t_size;
#if defined(__cplusplus)
diff --git a/db/dbinc/log.h b/db/dbinc/log.h
index 3acd1b7ec..310722ecc 100644
--- a/db/dbinc/log.h
+++ b/db/dbinc/log.h
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: log.h,v 12.24 2006/08/24 14:45:29 bostic Exp $
+ * $Id: log.h,v 12.31 2007/06/13 18:21:31 ubell Exp $
*/
#ifndef _DB_LOG_H_
@@ -47,8 +46,15 @@ struct __fname {
* Txn ID of the DB create, stored so
* we can log it at register time.
*/
-#define DB_FNAME_NOTLOGGED 0x01 /* Log of close failed. */
+ db_mutex_t mutex; /* mutex from db handle. */
+ u_int32_t txn_ref; /* number of txn referencing. */
+
+#define DB_FNAME_CLOSED 0x01 /* DBP was closed. */
#define DB_FNAME_DURABLE 0x02 /* File is durable. */
+#define DB_FNAME_INMEM 0x04 /* File is in memory. */
+#define DB_FNAME_NOTLOGGED 0x08 /* Log of close failed. */
+#define DB_FNAME_RECOVER 0x10 /* File was opened by recovery code. */
+#define DB_FNAME_RESTORED 0x20 /* File may be in restored txn. */
u_int32_t flags;
};
@@ -113,9 +119,10 @@ struct __db_log {
DB_ENV *dbenv; /* Reference to error information. */
REGINFO reginfo; /* Region information. */
-#define DBLOG_RECOVER 0x01 /* We are in recovery. */
-#define DBLOG_FORCE_OPEN 0x02 /* Force the DB open even if it appears
+#define DBLOG_FORCE_OPEN 0x01 /* Force the DB open even if it appears
* to be deleted. */
+#define DBLOG_OPENFILES 0x02 /* Prepared files need to be open. */
+#define DBLOG_RECOVER 0x04 /* We are in recovery. */
u_int32_t flags;
};
@@ -238,10 +245,10 @@ struct __log {
/*
* !!!
- * NOTE: the next 11 fields, waiting_lsn, verify_lsn, max_wait_lsn,
- * maxperm_lsn, wait_recs, rcvd_recs, ready_lsn and bulk_* are NOT
- * protected by the log region lock. They are protected by
- * REP->mtx_clientdb. If you need access to both, you must acquire
+ * NOTE: the next 12 fields, waiting_lsn, verify_lsn, max_wait_lsn,
+ * max_perm_lsn, max_lease_ts, wait_recs, rcvd_recs, ready_lsn and
+ * bulk_* are NOT protected by the log region lock. They are protected
+ * by REP->mtx_clientdb. If you need access to both, you must acquire
* REP->mtx_clientdb before acquiring the log region lock.
*
* The waiting_lsn is used by the replication system. It is the
@@ -261,6 +268,7 @@ struct __log {
DB_LSN verify_lsn; /* LSN we are waiting to verify. */
DB_LSN max_wait_lsn; /* Maximum LSN requested. */
DB_LSN max_perm_lsn; /* Maximum PERMANENT LSN processed. */
+ db_timespec max_lease_ts; /* Maximum Lease timestamp seen. */
u_int32_t wait_recs; /* Records to wait before requesting. */
u_int32_t rcvd_recs; /* Records received while waiting. */
/*
diff --git a/db/dbinc/mp.h b/db/dbinc/mp.h
index 7c4bed813..120f91716 100644
--- a/db/dbinc/mp.h
+++ b/db/dbinc/mp.h
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: mp.h,v 12.23 2006/09/07 15:11:26 mjc Exp $
+ * $Id: mp.h,v 12.38 2007/06/07 16:47:01 bostic Exp $
*/
#ifndef _DB_MP_H_
@@ -35,12 +34,17 @@ struct __mpool; typedef struct __mpool MPOOL;
if (!F_ISSET(dbmfp, MP_OPEN_CALLED)) \
return (__db_mi_open((dbmfp)->dbenv, name, 0));
-typedef enum {
- DB_SYNC_ALLOC, /* Flush for allocation. */
- DB_SYNC_CACHE, /* Checkpoint or flush entire cache. */
- DB_SYNC_FILE, /* Flush file. */
- DB_SYNC_TRICKLE /* Trickle sync. */
-} db_sync_op;
+/*
+ * Cache flush operations, plus modifiers.
+ */
+#define DB_SYNC_ALLOC 0x0001 /* Flush for allocation. */
+#define DB_SYNC_CACHE 0x0002 /* Flush entire cache. */
+#define DB_SYNC_CHECKPOINT 0x0004 /* Checkpoint. */
+#define DB_SYNC_FILE 0x0008 /* Flush file. */
+#define DB_SYNC_INTERRUPT_OK 0x0010 /* Allow interrupt and return OK. */
+#define DB_SYNC_QUEUE_EXTENT 0x0020 /* Flush a queue file with extents. */
+#define DB_SYNC_SUPPRESS_WRITE 0x0040 /* Ignore max-write configuration. */
+#define DB_SYNC_TRICKLE 0x0080 /* Trickle sync. */
/*
* DB_MPOOL --
@@ -62,13 +66,10 @@ struct __db_mpool {
TAILQ_HEAD(__db_mpoolfileh, __db_mpoolfile) dbmfq;
/*
- * The dbenv, nreg and reginfo fields are not thread protected,
- * as they are initialized during mpool creation, and not modified
- * again.
+ * The dbenv and reginfo fields are not thread protected, as they are
+ * initialized during mpool creation, and not modified again.
*/
DB_ENV *dbenv; /* Enclosing environment. */
-
- u_int32_t nreg; /* N underlying cache regions. */
REGINFO *reginfo; /* Underlying cache regions. */
};
@@ -86,35 +87,6 @@ struct __db_mpreg {
};
/*
- * NCACHE --
- * Select a cache based on the file and the page number. Assumes accesses
- * are uniform across pages, which is probably OK. What we really want to
- * avoid is anything that puts all pages from any single file in the same
- * cache, as we expect that file access will be bursty, and to avoid
- * putting all page number N pages in the same cache as we expect access
- * to the metapages (page 0) and the root of a btree (page 1) to be much
- * more frequent than a random data page.
- */
-#define NCACHE(mp, mf_offset, pgno) \
- (((MPOOL *)mp)->nreg == 1 ? 0 : \
- (((pgno) ^ ((u_int32_t)(mf_offset) >> 3)) % ((MPOOL *)mp)->nreg))
-
-/*
- * NBUCKET --
- * We make the assumption that early pages of the file are more likely
- * to be retrieved than the later pages, which means the top bits will
- * be more interesting for hashing as they're less likely to collide.
- * That said, as 512 8K pages represents a 4MB file, so only reasonably
- * large files will have page numbers with any other than the bottom 9
- * bits set. We XOR in the MPOOL offset of the MPOOLFILE that backs the
- * page, since that should also be unique for the page. We don't want
- * to do anything very fancy -- speed is more important to us than using
- * good hashing.
- */
-#define NBUCKET(mc, mf_offset, pgno) \
- (((pgno) ^ ((mf_offset) << 9)) % (mc)->htab_buckets)
-
-/*
* File hashing --
* We hash each file to hash bucket based on its fileid
* or, in the case of in memory files, its name.
@@ -149,15 +121,18 @@ struct __db_mpreg {
struct __mpool {
/*
* The memory pool can be broken up into individual pieces/files.
- * Not what we would have liked, but on Solaris you can allocate
+ * There are two reasons for this: firstly, on Solaris you can allocate
* only a little more than 2GB of memory in a contiguous chunk,
- * and I expect to see more systems with similar issues.
+ * and I expect to see more systems with similar issues. Secondly,
+ * applications can add / remove pieces to dynamically resize the
+ * cache.
*
* While this structure is duplicated in each piece of the cache,
* the first of these pieces/files describes the entire pool, the
* second only describe a piece of the cache.
*/
db_mutex_t mtx_region; /* Region mutex. */
+ db_mutex_t mtx_resize; /* Resizing mutex. */
/*
* The lsn field and list of underlying MPOOLFILEs are thread protected
@@ -166,22 +141,33 @@ struct __mpool {
DB_LSN lsn; /* Maximum checkpoint LSN. */
/* Configuration information: protected by the region lock. */
- size_t mp_mmapsize; /* Maximum file size for mmap. */
- int mp_maxopenfd; /* Maximum open file descriptors. */
- int mp_maxwrite; /* Maximum buffers to write. */
- int mp_maxwrite_sleep; /* Sleep after writing max buffers. */
+ u_int32_t max_nreg; /* Maximum number of regions. */
+ size_t mp_mmapsize; /* Maximum file size for mmap. */
+ int mp_maxopenfd; /* Maximum open file descriptors. */
+ int mp_maxwrite; /* Maximum buffers to write. */
+ db_timeout_t mp_maxwrite_sleep; /* Sleep after writing max buffers. */
/*
- * The nreg, regids and maint_off fields are not thread protected,
- * as they are initialized during mpool creation, and not modified
- * again.
+ * The number of regions and the total number of hash buckets across
+ * all regions.
+ * These fields are not protected by a mutex because we assume that we
+ * can read a 32-bit value atomically. They are only modified by cache
+ * resizing which holds the mpool resizing mutex to ensure that
+ * resizing is single-threaded. See the comment in mp_resize.c for
+ * more information.
*/
u_int32_t nreg; /* Number of underlying REGIONS. */
+ u_int32_t nbuckets; /* Total number of hash buckets. */
+
+ /*
+ * The regid field is protected by the resize mutex.
+ */
roff_t regids; /* Array of underlying REGION Ids. */
+ roff_t ftab; /* Hash table of files. */
+
/*
- * The following structure fields only describe the per-cache portion
- * of the region.
+ * The following fields describe the per-cache portion of the region.
*
* The htab and htab_buckets fields are not thread protected as they
* are initialized during mpool creation, and not modified again.
@@ -189,12 +175,11 @@ struct __mpool {
* The last_checked and lru_count fields are thread protected by
* the region lock.
*/
- u_int32_t htab_buckets; /* Number of hash table entries. */
- roff_t htab; /* Hash table offset. */
- u_int32_t last_checked; /* Last bucket checked for free. */
- u_int32_t lru_count; /* Counter for buffer LRU */
-
- roff_t ftab; /* Hash table of files. */
+ roff_t htab; /* Hash table offset. */
+ u_int32_t htab_buckets; /* Number of hash table entries. */
+ u_int32_t last_checked; /* Last bucket checked for free. */
+ u_int32_t lru_count; /* Counter for buffer LRU. */
+ int32_t lru_reset; /* Hash bucket lru reset point. */
/*
* The stat fields are generally not thread protected, and cannot be
@@ -211,6 +196,24 @@ struct __mpool {
*/
u_int32_t put_counter; /* Count of page put calls. */
+ /*
+ * Cache flush operations take a long time...
+ *
+ * Some cache flush operations want to ignore the app's configured
+ * max-write parameters (they are trying to quickly shut down an
+ * environment, for example). We can't specify that as an argument
+ * to the cache region functions, because we may decide to ignore
+ * the max-write configuration after the cache operation has begun.
+ * If the variable suppress_maxwrite is set, ignore the application
+ * max-write config.
+ *
+ * We may want to interrupt cache flush operations in high-availability
+ * configurations.
+ */
+#define DB_MEMP_SUPPRESS_WRITE 0x01
+#define DB_MEMP_SYNC_INTERRUPT 0x02
+ u_int32_t config_flags;
+
/* Free frozen buffer headers, protected by the region lock. */
SH_TAILQ_HEAD(__free_frozen) free_frozen;
@@ -218,6 +221,99 @@ struct __mpool {
SH_TAILQ_HEAD(__alloc_frozen) alloc_frozen;
};
+/*
+ * NREGION --
+ * Select a cache region given the bucket number.
+ */
+#define NREGION(mp, bucket) \
+ ((bucket) / (mp)->htab_buckets)
+
+/*
+ * MP_HASH --
+ * We make the assumption that early pages of the file are more likely
+ * to be retrieved than the later pages, which means the top bits will
+ * be more interesting for hashing as they're less likely to collide.
+ * That said, as 512 8K pages represents a 4MB file, so only reasonably
+ * large files will have page numbers with any other than the bottom 9
+ * bits set. We XOR in the MPOOL offset of the MPOOLFILE that backs the
+ * page, since that should also be unique for the page. We don't want
+ * to do anything very fancy -- speed is more important to us than using
+ * good hashing.
+ *
+ * Since moving to a dynamic hash, which boils down to using some of the
+ * least significant bits of the hash value, we no longer want to use a
+ * simple shift here, because it's likely with a bit shift that mf_offset
+ * will be ignored, and pages from different files end up in the same
+ * hash bucket. Use a nearby prime instead.
+ */
+#define MP_HASH(mf_offset, pgno) \
+ ((pgno) ^ ((mf_offset) * 509))
+
+/*
+ * Inline the calculation of the mask, since we can't reliably store the mask
+ * with the number of buckets in the region.
+ *
+ * This is equivalent to:
+ * mask = (1 << __db_log2(nbuckets)) - 1;
+ */
+#define MP_MASK(nbuckets, mask) do { \
+ for (mask = 1; mask < (nbuckets); mask = (mask << 1) | 1) \
+ ; \
+} while (0)
+
+#define MP_HASH_BUCKET(hash, nbuckets, mask, bucket) do { \
+ (bucket) = (hash) & (mask); \
+ if ((bucket) >= (nbuckets)) \
+ (bucket) &= ((mask) >> 1); \
+} while (0)
+
+#define MP_BUCKET(mf_offset, pgno, nbuckets, bucket) do { \
+ u_int32_t __mask; \
+ MP_MASK(nbuckets, __mask); \
+ MP_HASH_BUCKET(MP_HASH(mf_offset, pgno), nbuckets, \
+ __mask, bucket); \
+} while (0)
+
+/*
+ * MP_GET_REGION --
+ * Select the region for a given page.
+ */
+#define MP_GET_REGION(dbmfp, pgno, infopp, ret) do { \
+ DB_MPOOL *__t_dbmp; \
+ MPOOL *__t_mp; \
+ \
+ __t_dbmp = dbmfp->dbenv->mp_handle; \
+ __t_mp = __t_dbmp->reginfo[0].primary; \
+ if (__t_mp->max_nreg == 1) { \
+ *(infopp) = &__t_dbmp->reginfo[0]; \
+ } else \
+ ret = __memp_get_bucket((dbmfp), (pgno), (infopp), NULL);\
+} while (0)
+
+/*
+ * MP_GET_BUCKET --
+ * Select and lock the bucket for a given page.
+ */
+#define MP_GET_BUCKET(dbmfp, pgno, infopp, hp, ret) do { \
+ DB_MPOOL *__t_dbmp; \
+ MPOOL *__t_mp; \
+ roff_t __t_mf_offset; \
+ u_int32_t __t_bucket; \
+ \
+ __t_dbmp = (dbmfp)->dbenv->mp_handle; \
+ __t_mp = __t_dbmp->reginfo[0].primary; \
+ if (__t_mp->max_nreg == 1) { \
+ *(infopp) = &__t_dbmp->reginfo[0]; \
+ __t_mf_offset = R_OFFSET(*(infopp), (dbmfp)->mfp); \
+ MP_BUCKET(__t_mf_offset, (pgno), __t_mp->nbuckets, __t_bucket);\
+ (hp) = R_ADDR(*(infopp), __t_mp->htab); \
+ (hp) = &(hp)[__t_bucket]; \
+ MUTEX_LOCK(dbenv, (hp)->mtx_hash); \
+ ret = 0; \
+ } else \
+ ret = __memp_get_bucket((dbmfp), (pgno), (infopp), &(hp));\
+} while (0)
+
struct __db_mpool_hash {
db_mutex_t mtx_hash; /* Per-bucket mutex. */
db_mutex_t mtx_io; /* Buffer I/O mutex. */
@@ -227,10 +323,12 @@ struct __db_mpool_hash {
u_int32_t hash_page_dirty;/* Count of dirty pages. */
u_int32_t hash_priority; /* Minimum priority of bucket buffer. */
+#ifndef __TEST_DB_NO_STATISTICS
u_int32_t hash_io_wait; /* Count of I/O waits. */
u_int32_t hash_frozen; /* Count of frozen buffers. */
u_int32_t hash_thawed; /* Count of thawed buffers. */
u_int32_t hash_frozen_freed;/* Count of freed frozen buffers. */
+#endif
DB_LSN old_reader; /* Oldest snapshot reader (cached). */
diff --git a/db/dbinc/mutex.h b/db/dbinc/mutex.h
index 3adf150a0..d48ddb0ff 100644
--- a/db/dbinc/mutex.h
+++ b/db/dbinc/mutex.h
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: mutex.h,v 12.20 2006/08/24 14:45:29 bostic Exp $
+ * $Id: mutex.h,v 12.28 2007/05/17 15:15:05 bostic Exp $
*/
#ifndef _DB_MUTEX_H_
@@ -27,58 +26,57 @@ extern "C" {
#define MTX_APPLICATION 1
#define MTX_DB_HANDLE 2
#define MTX_ENV_DBLIST 3
-#define MTX_ENV_REGION 4
-#define MTX_LOCK_REGION 5
-#define MTX_LOGICAL_LOCK 6
-#define MTX_LOG_FILENAME 7
-#define MTX_LOG_FLUSH 8
-#define MTX_LOG_HANDLE 9
-#define MTX_LOG_REGION 10
-#define MTX_MPOOLFILE_HANDLE 11
-#define MTX_MPOOL_FH 12
-#define MTX_MPOOL_FILE_BUCKET 13
-#define MTX_MPOOL_HANDLE 14
-#define MTX_MPOOL_HASH_BUCKET 15
-#define MTX_MPOOL_IO 16
-#define MTX_MPOOL_REGION 17
-#define MTX_MUTEX_REGION 18
-#define MTX_MUTEX_TEST 19
-#define MTX_REP_DATABASE 20
-#define MTX_REP_REGION 21
-#define MTX_SEQUENCE 22
-#define MTX_TWISTER 23
-#define MTX_TXN_ACTIVE 24
-#define MTX_TXN_CHKPT 25
-#define MTX_TXN_COMMIT 26
-#define MTX_TXN_MVCC 27
-#define MTX_TXN_REGION 28
-#define MTX_MAX_ENTRY 28
+#define MTX_ENV_HANDLE 4
+#define MTX_ENV_REGION 5
+#define MTX_LOCK_REGION 6
+#define MTX_LOGICAL_LOCK 7
+#define MTX_LOG_FILENAME 8
+#define MTX_LOG_FLUSH 9
+#define MTX_LOG_HANDLE 10
+#define MTX_LOG_REGION 11
+#define MTX_MPOOLFILE_HANDLE 12
+#define MTX_MPOOL_FH 13
+#define MTX_MPOOL_FILE_BUCKET 14
+#define MTX_MPOOL_HANDLE 15
+#define MTX_MPOOL_HASH_BUCKET 16
+#define MTX_MPOOL_IO 17
+#define MTX_MPOOL_REGION 18
+#define MTX_MUTEX_REGION 19
+#define MTX_MUTEX_TEST 20
+#define MTX_REP_CKP 21
+#define MTX_REP_DATABASE 22
+#define MTX_REP_EVENT 23
+#define MTX_REP_REGION 24
+#define MTX_SEQUENCE 25
+#define MTX_TWISTER 26
+#define MTX_TXN_ACTIVE 27
+#define MTX_TXN_CHKPT 28
+#define MTX_TXN_COMMIT 29
+#define MTX_TXN_MVCC 30
+#define MTX_TXN_REGION 31
+
+#define MTX_MAX_ENTRY 31
/* Redirect mutex calls to the correct functions. */
-#if defined(HAVE_MUTEX_PTHREADS) || \
+#if !defined(HAVE_MUTEX_HYBRID) && ( \
+ defined(HAVE_MUTEX_PTHREADS) || \
defined(HAVE_MUTEX_SOLARIS_LWP) || \
- defined(HAVE_MUTEX_UI_THREADS)
+ defined(HAVE_MUTEX_UI_THREADS))
#define __mutex_init(a, b, c) __db_pthread_mutex_init(a, b, c)
#define __mutex_lock(a, b) __db_pthread_mutex_lock(a, b)
#define __mutex_unlock(a, b) __db_pthread_mutex_unlock(a, b)
#define __mutex_destroy(a, b) __db_pthread_mutex_destroy(a, b)
-#endif
-
-#if defined(HAVE_MUTEX_WIN32) || defined(HAVE_MUTEX_WIN32_GCC)
+#elif defined(HAVE_MUTEX_WIN32) || defined(HAVE_MUTEX_WIN32_GCC)
#define __mutex_init(a, b, c) __db_win32_mutex_init(a, b, c)
#define __mutex_lock(a, b) __db_win32_mutex_lock(a, b)
#define __mutex_unlock(a, b) __db_win32_mutex_unlock(a, b)
#define __mutex_destroy(a, b) __db_win32_mutex_destroy(a, b)
-#endif
-
-#if defined(HAVE_MUTEX_FCNTL)
+#elif defined(HAVE_MUTEX_FCNTL)
#define __mutex_init(a, b, c) __db_fcntl_mutex_init(a, b, c)
#define __mutex_lock(a, b) __db_fcntl_mutex_lock(a, b)
#define __mutex_unlock(a, b) __db_fcntl_mutex_unlock(a, b)
#define __mutex_destroy(a, b) __db_fcntl_mutex_destroy(a, b)
-#endif
-
-#ifndef __mutex_init /* Test-and-set is the default */
+#else
#define __mutex_init(a, b, c) __db_tas_mutex_init(a, b, c)
#define __mutex_lock(a, b) __db_tas_mutex_lock(a, b)
#define __mutex_unlock(a, b) __db_tas_mutex_unlock(a, b)
@@ -93,6 +91,7 @@ extern "C" {
* the macros to always return a panic value rather than saving the actual
* return value of the mutex routine.
*/
+#ifdef HAVE_MUTEX_SUPPORT
#define MUTEX_LOCK(dbenv, mutex) do { \
if ((mutex) != MUTEX_INVALID && \
__mutex_lock(dbenv, mutex) != 0) \
@@ -103,6 +102,18 @@ extern "C" {
__mutex_unlock(dbenv, mutex) != 0) \
return (DB_RUNRECOVERY); \
} while (0)
+#else
+/*
+ * XXX
+ * There are calls to lock/unlock mutexes outside of #ifdef's -- replace
+ * the call with something the compiler can discard, but which will make
+ * if-then-else blocks work correctly.
+ */
+#define MUTEX_LOCK(dbenv, mutex) \
+ (mutex) = (mutex);
+#define MUTEX_UNLOCK(dbenv, mutex) \
+ (mutex) = (mutex);
+#endif
/*
* Berkeley DB ports may require single-threading at places in the code.
diff --git a/db/dbinc/mutex_int.h b/db/dbinc/mutex_int.h
index 74bc813e2..79e42bf99 100644
--- a/db/dbinc/mutex_int.h
+++ b/db/dbinc/mutex_int.h
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: mutex_int.h,v 12.22 2006/08/24 14:45:29 bostic Exp $
+ * $Id: mutex_int.h,v 12.39 2007/06/21 16:39:20 ubell Exp $
*/
#ifndef _DB_MUTEX_INT_H_
@@ -17,7 +16,7 @@ extern "C" {
/*********************************************************************
* POSIX.1 pthreads interface.
*********************************************************************/
-#ifdef HAVE_MUTEX_PTHREADS
+#if defined(HAVE_MUTEX_PTHREADS)
#include <pthread.h>
#define MUTEX_FIELDS \
@@ -196,13 +195,22 @@ typedef abilock_t tsl_t;
* correctly as far as we know.
*********************************************************************/
#ifdef HAVE_MUTEX_SOLARIS_LOCK_TRY
+#include <sys/atomic.h>
#include <sys/machlock.h>
typedef lock_t tsl_t;
+/*
+ * The functions are declared in <sys/machlock.h>, but under #ifdef KERNEL.
+ * Re-declare them here to avoid warnings.
+ */
+extern int _lock_try(lock_t *);
+extern void _lock_clear(lock_t *);
+
#ifdef LOAD_ACTUAL_MUTEX_CODE
#define MUTEX_INIT(x) 0
#define MUTEX_SET(x) _lock_try(x)
#define MUTEX_UNSET(x) _lock_clear(x)
+#define MUTEX_MEMBAR(x) membar_enter();
#endif
#endif
@@ -289,7 +297,7 @@ typedef unsigned int tsl_t;
* platforms, and it improves performance on Pentium 4 processor platforms."
*/
#ifdef HAVE_MUTEX_WIN32
-#ifndef _WIN64
+#if !defined(_WIN64) && !defined(DB_WINCE)
#define MUTEX_PAUSE {__asm{_emit 0xf3}; __asm{_emit 0x90}}
#endif
#endif
@@ -628,7 +636,7 @@ typedef unsigned char tsl_t;
#define MUTEX_SET(tsl) ({ \
register tsl_t *__l = (tsl); \
register tsl_t __r; \
- __asm__ volatile \
+ asm volatile \
("ldstub [%1],%0; stbar" \
: "=r"( __r) : "r" (__l)); \
!__r; \
@@ -636,6 +644,7 @@ typedef unsigned char tsl_t;
#define MUTEX_UNSET(tsl) (*(tsl) = 0)
#define MUTEX_INIT(tsl) MUTEX_UNSET(tsl)
+#define MUTEX_MEMBAR(x) ({asm volatile("stbar");})
#endif
#endif
@@ -658,7 +667,7 @@ typedef int tsl_t;
#ifdef HAVE_MUTEX_MIPS_GCC_ASSEMBLY
typedef u_int32_t tsl_t;
-#define MUTEX_ALIGN 4
+#define MUTEX_ALIGN 4
#ifdef LOAD_ACTUAL_MUTEX_CODE
/*
@@ -669,7 +678,7 @@ static inline int
MUTEX_SET(tsl_t *tsl) {
register tsl_t *__l = tsl;
register tsl_t __r;
- __asm__ __volatile__(
+ asm volatile(
" .set push \n"
" .set mips2 \n"
" .set noreorder \n"
@@ -691,28 +700,38 @@ MUTEX_SET(tsl_t *tsl) {
#endif
/*********************************************************************
- * x86/gcc assembly.
+ * x86/gcc (32- and 64-bit) assembly.
*********************************************************************/
-#ifdef HAVE_MUTEX_X86_GCC_ASSEMBLY
+#if defined(HAVE_MUTEX_X86_GCC_ASSEMBLY) || \
+ defined(HAVE_MUTEX_X86_64_GCC_ASSEMBLY)
typedef unsigned char tsl_t;
#ifdef LOAD_ACTUAL_MUTEX_CODE
/* gcc/x86: 0 is clear, 1 is set. */
#define MUTEX_SET(tsl) ({ \
- register tsl_t *__l = (tsl); \
- int __r; \
- asm volatile("movl $1,%%eax\n" \
- "lock\n" \
- "xchgb %1,%%al\n" \
- "xorl $1,%%eax" \
- : "=&a" (__r), "=m" (*__l) \
- : "m1" (*__l) \
- ); \
- __r & 1; \
+ tsl_t __r; \
+ asm volatile("movb $1, %b0\n\t" \
+ "xchgb %b0,%1" \
+ : "=&q" (__r) \
+ : "m" (*(volatile tsl_t *)(tsl)) \
+ : "memory", "cc"); \
+ !__r; \
})
#define MUTEX_UNSET(tsl) (*(volatile tsl_t *)(tsl) = 0)
#define MUTEX_INIT(tsl) MUTEX_UNSET(tsl)
+/*
+ * We need to pass a valid address to generate the memory barrier
+ * otherwise PURIFY will complain. Use something referenced recently
+ * and initialized.
+ */
+#if defined(HAVE_MUTEX_X86_GCC_ASSEMBLY)
+#define MUTEX_MEMBAR(addr) \
+ ({ asm volatile ("lock; addl $0, %0" ::"m" (addr): "memory"); 1; })
+#else
+#define MUTEX_MEMBAR(addr) \
+ ({ asm volatile ("mfence" ::: "memory"); 1; })
+#endif
/*
* From Intel's performance tuning documentation (and see SR #6975):
@@ -727,32 +746,6 @@ typedef unsigned char tsl_t;
#endif
#endif
-/*********************************************************************
- * x86_64/gcc assembly.
- *********************************************************************/
-#ifdef HAVE_MUTEX_X86_64_GCC_ASSEMBLY
-typedef unsigned char tsl_t;
-
-#ifdef LOAD_ACTUAL_MUTEX_CODE
-/* gcc/x86_64: 0 is clear, 1 is set. */
-#define MUTEX_SET(tsl) ({ \
- register tsl_t *__l = (tsl); \
- int __r; \
- asm volatile("mov $1,%%rax\n" \
- "lock\n" \
- "xchgb %1,%%al\n" \
- "xor $1,%%rax" \
- : "=&a" (__r), "=m" (*__l) \
- : "1m" (*__l) \
- ); \
- __r & 1; \
-})
-
-#define MUTEX_UNSET(tsl) (*(tsl) = 0)
-#define MUTEX_INIT(tsl) MUTEX_UNSET(tsl)
-#endif
-#endif
-
/*
* Mutex alignment defaults to sizeof(unsigned int).
*
@@ -799,7 +792,8 @@ struct __db_mutexmgr {
*/
typedef struct __db_mutexregion {
/* These fields are initialized at create time and never modified. */
- roff_t mutex_offset; /* Offset of mutex array */
+ roff_t mutex_off_alloc;/* Offset of mutex array */
+ roff_t mutex_off; /* Adjusted offset of mutex array */
size_t mutex_size; /* Size of the aligned mutex */
roff_t thread_off; /* Offset of the thread area. */
@@ -813,13 +807,17 @@ typedef struct __db_mutexregion {
struct __db_mutex_t { /* Mutex. */
#ifdef MUTEX_FIELDS
- MUTEX_FIELDS
+ MUTEX_FIELDS /* Opaque thread mutex structures. */
#endif
-#if !defined(MUTEX_FIELDS) && !defined(HAVE_MUTEX_FCNTL)
+#if defined(HAVE_MUTEX_HYBRID) || \
+ (!defined(MUTEX_FIELDS) && !defined(HAVE_MUTEX_FCNTL))
tsl_t tas; /* Test and set. */
#endif
- pid_t pid; /* Process owning mutex */
- db_threadid_t tid; /* Thread owning mutex */
+#ifdef HAVE_MUTEX_HYBRID
+ volatile u_int32_t wait; /* Count of waiters. */
+#endif
+ pid_t pid; /* Process owning mutex */
+ db_threadid_t tid; /* Thread owning mutex */
u_int32_t mutex_next_link; /* Linked list of free mutexes. */
@@ -837,7 +835,7 @@ struct __db_mutex_t { /* Mutex. */
* the possible flags values, getting a single byte on some machines
* is expensive, and the mutex structure is a MP hot spot.
*/
- u_int32_t flags; /* MUTEX_XXX */
+ volatile u_int32_t flags; /* MUTEX_XXX */
};
/* Macro to get a reference to a specific mutex. */
diff --git a/db/dbinc/os.h b/db/dbinc/os.h
index 792c04dd9..9e324a67e 100644
--- a/db/dbinc/os.h
+++ b/db/dbinc/os.h
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: os.h,v 12.18 2006/09/05 15:02:30 mjc Exp $
+ * $Id: os.h,v 12.25 2007/05/17 15:15:05 bostic Exp $
*/
#ifndef _DB_OS_H_
@@ -87,6 +86,12 @@ extern "C" {
/* DB filehandle. */
struct __fh_t {
/*
+ * Linked list of DB_FH's, linked from the DB_ENV, used to keep track
+ * of all open file handles for resource cleanup.
+ */
+ TAILQ_ENTRY(__fh_t) q;
+
+ /*
* The file-handle mutex is only used to protect the handle/fd
* across seek and read/write pairs, it does not protect the
* the reference count, or any other fields in the structure.
@@ -95,13 +100,16 @@ struct __fh_t {
int ref; /* Reference count. */
+#ifdef HAVE_BREW
+ IFile *ifp; /* IFile pointer */
+#endif
#if defined(DB_WIN32)
HANDLE handle; /* Windows/32 file handle. */
HANDLE trunc_handle; /* Handle for truncate calls. */
#endif
int fd; /* POSIX file descriptor. */
- char *name; /* File name (ref DB_FH_UNLINK) */
+ char *name; /* File name at open. */
/*
* Last seek statistics, used for zero-filling on filesystems
@@ -111,9 +119,10 @@ struct __fh_t {
u_int32_t pgsize;
u_int32_t offset;
-#define DB_FH_NOSYNC 0x01 /* Handle doesn't need to be sync'd. */
-#define DB_FH_OPENED 0x02 /* Handle is valid. */
-#define DB_FH_UNLINK 0x04 /* Unlink on close */
+#define DB_FH_ENVLINK 0x01 /* We're linked on the DB_ENV. */
+#define DB_FH_NOSYNC 0x02 /* Handle doesn't need to be sync'd. */
+#define DB_FH_OPENED 0x04 /* Handle is valid. */
+#define DB_FH_UNLINK 0x08 /* Unlink on close */
u_int8_t flags;
};
diff --git a/db/dbinc/qam.h b/db/dbinc/qam.h
index b76c92cd2..636ac886f 100644
--- a/db/dbinc/qam.h
+++ b/db/dbinc/qam.h
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1999-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1999,2007 Oracle. All rights reserved.
*
- * $Id: qam.h,v 12.9 2006/08/24 14:45:29 bostic Exp $
+ * $Id: qam.h,v 12.14 2007/05/17 17:22:36 bostic Exp $
*/
#ifndef _DB_QAM_H_
@@ -162,14 +161,15 @@ typedef enum {
QAM_NAME_REMOVE
} qam_name_op;
-#define __qam_fget(dbp, pgnoaddr, lsnp, flags, addrp) \
- __qam_fprobe(dbp, *pgnoaddr, lsnp, addrp, QAM_PROBE_GET, flags)
+#define __qam_fget(dbp, pgnoaddr, lsnp, flags, addrp) \
+ __qam_fprobe(dbp, *pgnoaddr, \
+ lsnp, addrp, QAM_PROBE_GET, DB_PRIORITY_UNCHANGED, flags)
-#define __qam_fput(dbp, pgno, addrp, flags) \
- __qam_fprobe(dbp, pgno, NULL, addrp, QAM_PROBE_PUT, flags)
+#define __qam_fput(dbp, pgno, addrp, priority) \
+ __qam_fprobe(dbp, pgno, NULL, addrp, QAM_PROBE_PUT, priority, 0)
-#define __qam_dirty(dbp, pgno, pagep, lsnp, flags) \
- __qam_fprobe(dbp, pgno, lsnp, pagep, QAM_PROBE_DIRTY, flags)
+#define __qam_dirty(dbp, pgno, pagep, lsnp, priority) \
+ __qam_fprobe(dbp, pgno, lsnp, pagep, QAM_PROBE_DIRTY, priority, 0)
#if defined(__cplusplus)
}
diff --git a/db/dbinc/region.h b/db/dbinc/region.h
index d184f4418..84490f804 100644
--- a/db/dbinc/region.h
+++ b/db/dbinc/region.h
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1998-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1998,2007 Oracle. All rights reserved.
*
- * $Id: region.h,v 12.9 2006/08/24 14:45:30 bostic Exp $
+ * $Id: region.h,v 12.14 2007/05/17 15:15:05 bostic Exp $
*/
#ifndef _DB_REGION_H_
@@ -176,14 +175,15 @@ typedef struct __db_reg_env {
/*
* The mtx_regenv mutex protects the environment reference count and
- * memory allocation from the primary shared region (the crypto and
- * replication implementations allocate memory from the primary shared
- * region). The rest of the fields are initialized at creation time,
- * and so don't need mutex protection. The flags, op_timestamp and
- * rep_timestamp fields are used by replication only and are
- * protected * by the replication mutex. The rep_timestamp is
- * is not protected when it is used in recovery as that is already
- * single threaded.
+ * memory allocation from the primary shared region (the crypto, thread
+ * control block and replication implementations allocate memory from
+ * the primary shared region).
+ *
+ * The rest of the fields are initialized at creation time, and don't
+ * need mutex protection. The flags, op_timestamp and rep_timestamp
+ * fields are used by replication only and are protected by the
+ * replication mutex. The rep_timestamp is is not protected when it
+ * is used in recovery as that is already single threaded.
*/
db_mutex_t mtx_regenv; /* Refcnt, region allocation mutex. */
u_int32_t refcnt; /* References to the environment. */
@@ -193,6 +193,8 @@ typedef struct __db_reg_env {
roff_t cipher_off; /* Offset of cipher area */
+ roff_t thread_off; /* Offset of the thread area. */
+
roff_t rep_off; /* Offset of the replication area. */
#define DB_REGENV_REPLOCKED 0x0001 /* Env locked for rep backup. */
u_int32_t flags; /* Shared environment flags. */
@@ -223,12 +225,12 @@ typedef struct __db_region {
/*
* Per-process/per-attachment information about a single region.
*/
-struct __db_reginfo_t { /* __db_r_attach IN parameters. */
+struct __db_reginfo_t { /* __env_region_attach IN parameters. */
DB_ENV *dbenv; /* Enclosing environment. */
reg_type_t type; /* Region type. */
u_int32_t id; /* Region id. */
- /* __db_r_attach OUT parameters. */
+ /* env_region_attach OUT parameters. */
REGION *rp; /* Shared region. */
char *name; /* Region file name. */
@@ -261,11 +263,17 @@ struct __db_reginfo_t { /* __db_r_attach IN parameters. */
(F_ISSET((reginfop)->dbenv, DB_ENV_PRIVATE) ? (roff_t)(p) : \
(roff_t)((u_int8_t *)(p) - (u_int8_t *)(reginfop)->addr))
-/* PANIC_CHECK: Check to see if the DB environment is dead. */
-#define PANIC_CHECK(dbenv) \
- if ((dbenv)->reginfo != NULL && ((REGENV *) \
+/*
+ * PANIC_ISSET, PANIC_CHECK:
+ * Check to see if the DB environment is dead.
+ */
+#define PANIC_ISSET(dbenv) \
+ ((dbenv)->reginfo != NULL && ((REGENV *) \
((REGINFO *)(dbenv)->reginfo)->primary)->panic != 0 && \
- !F_ISSET((dbenv), DB_ENV_NOPANIC)) \
+ !F_ISSET((dbenv), DB_ENV_NOPANIC))
+
+#define PANIC_CHECK(dbenv) \
+ if (PANIC_ISSET(dbenv)) \
return (__db_panic_msg(dbenv));
#if defined(__cplusplus)
diff --git a/db/dbinc/rep.h b/db/dbinc/rep.h
index f1ea36e2f..949f16f0c 100644
--- a/db/dbinc/rep.h
+++ b/db/dbinc/rep.h
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2001-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2001,2007 Oracle. All rights reserved.
*
- * $Id: rep.h,v 12.57 2006/09/12 01:06:35 alanb Exp $
+ * $Id: rep.h,v 12.91 2007/06/22 16:42:45 bostic Exp $
*/
#ifndef _DB_REP_H_
@@ -35,41 +34,42 @@ extern "C" {
#define REP_FILE 7 /* Page of a database file. NOTUSED */
#define REP_FILE_FAIL 8 /* File requested does not exist. */
#define REP_FILE_REQ 9 /* Request for a database file. NOTUSED */
-#define REP_LOG 10 /* Log record. */
-#define REP_LOG_MORE 11 /* There are more log records to request. */
-#define REP_LOG_REQ 12 /* Request for a log record. */
-#define REP_MASTER_REQ 13 /* Who is the master */
-#define REP_NEWCLIENT 14 /* Announces the presence of a new client. */
-#define REP_NEWFILE 15 /* Announce a log file change. */
-#define REP_NEWMASTER 16 /* Announces who the master is. */
-#define REP_NEWSITE 17 /* Announces that a site has heard from a new
+#define REP_LEASE_GRANT 10 /* Client grants a lease to a master. */
+#define REP_LOG 11 /* Log record. */
+#define REP_LOG_MORE 12 /* There are more log records to request. */
+#define REP_LOG_REQ 13 /* Request for a log record. */
+#define REP_MASTER_REQ 14 /* Who is the master */
+#define REP_NEWCLIENT 15 /* Announces the presence of a new client. */
+#define REP_NEWFILE 16 /* Announce a log file change. */
+#define REP_NEWMASTER 17 /* Announces who the master is. */
+#define REP_NEWSITE 18 /* Announces that a site has heard from a new
* site; like NEWCLIENT, but indirect. A
* NEWCLIENT message comes directly from the new
* client while a NEWSITE comes indirectly from
* someone who heard about a NEWSITE.
*/
-#define REP_PAGE 18 /* Database page. */
-#define REP_PAGE_FAIL 19 /* Requested page does not exist. */
-#define REP_PAGE_MORE 20 /* There are more pages to request. */
-#define REP_PAGE_REQ 21 /* Request for a database page. */
-#define REP_REREQUEST 22 /* Force rerequest. */
-#define REP_UPDATE 23 /* Environment hotcopy information. */
-#define REP_UPDATE_REQ 24 /* Request for hotcopy information. */
-#define REP_VERIFY 25 /* A log record for verification. */
-#define REP_VERIFY_FAIL 26 /* The client is outdated. */
-#define REP_VERIFY_REQ 27 /* Request for a log record to verify. */
-#define REP_VOTE1 28 /* Send out your information for an election. */
-#define REP_VOTE2 29 /* Send a "you are master" vote. */
-
+#define REP_PAGE 19 /* Database page. */
+#define REP_PAGE_FAIL 20 /* Requested page does not exist. */
+#define REP_PAGE_MORE 21 /* There are more pages to request. */
+#define REP_PAGE_REQ 22 /* Request for a database page. */
+#define REP_REREQUEST 23 /* Force rerequest. */
+#define REP_START_SYNC 24 /* Tell client to begin syncing a ckp.*/
+#define REP_UPDATE 25 /* Environment hotcopy information. */
+#define REP_UPDATE_REQ 26 /* Request for hotcopy information. */
+#define REP_VERIFY 27 /* A log record for verification. */
+#define REP_VERIFY_FAIL 28 /* The client is outdated. */
+#define REP_VERIFY_REQ 29 /* Request for a log record to verify. */
+#define REP_VOTE1 30 /* Send out your information for an election. */
+#define REP_VOTE2 31 /* Send a "you are master" vote. */
/*
* Maximum message number for conversion tables. Update this
* value as the largest message number above increases.
*
* !!!
* NOTE: When changing messages above, the two tables for upgrade support
- * need adjusting. They are in rep_record.c.
+ * need adjusting. They are in rep_util.c.
*/
-#define REP_MAX_MSG 29
+#define REP_MAX_MSG 31
/*
* This is the list of client-to-client requests messages.
@@ -96,48 +96,30 @@ extern "C" {
#define DB_LOGVERSION_43 10
#define DB_LOGVERSION_44 11
#define DB_LOGVERSION_45 12
+#define DB_LOGVERSION_46 13
#define DB_REPVERSION_INVALID 0
#define DB_REPVERSION_42 1
#define DB_REPVERSION_43 2
#define DB_REPVERSION_44 3
#define DB_REPVERSION_45 3
-#define DB_REPVERSION 3
+#define DB_REPVERSION_46 4
+#define DB_REPVERSION DB_REPVERSION_46
/*
- * REP_PRINT_MESSAGE
- * A function to print a debugging message.
- *
* RPRINT
- * A macro for debug printing. Takes as an arg the arg set for __db_msg.
- *
- * !!! This function assumes a local DB_MSGBUF variable called 'mb'.
+ * REP_PRINT_MESSAGE
+ * Macros for verbose replication messages.
*/
-#ifdef DIAGNOSTIC
-#define REP_PRINT_MESSAGE(dbenv, eid, rp, str, fl) \
- __rep_print_message(dbenv, eid, rp, str, fl)
-#define RPRINT(e, x) do { \
- if (FLD_ISSET((e)->verbose, DB_VERB_REPLICATION)) { \
- DB_MSGBUF_INIT(&mb); \
- if ((e)->db_errpfx != NULL) \
- __db_msgadd((e), &mb, "%s: ", (e)->db_errpfx); \
- else if (REP_ON(e)) { \
- REP *_r = (e)->rep_handle->region; \
- if (F_ISSET(_r, REP_F_CLIENT)) \
- __db_msgadd((e), &mb, "CLIENT: "); \
- else if (F_ISSET((_r), REP_F_MASTER)) \
- __db_msgadd((e), &mb, "MASTER: "); \
- else \
- __db_msgadd((e), &mb, "REP_UNDEF: "); \
- } else \
- __db_msgadd((e), &mb, "REP_UNDEF: "); \
- __db_msgadd x; \
- DB_MSGBUF_FLUSH((e), &mb); \
+#define RPRINT(dbenv, x) do { \
+ if (FLD_ISSET((dbenv)->verbose, DB_VERB_REPLICATION)) { \
+ __rep_print x; \
+ } \
+} while (0)
+#define REP_PRINT_MESSAGE(dbenv, eid, rp, str, fl) do { \
+ if (FLD_ISSET((dbenv)->verbose, DB_VERB_REPLICATION)) { \
+ __rep_print_message(dbenv, eid, rp, str, fl); \
} \
} while (0)
-#else
-#define REP_PRINT_MESSAGE(dbenv, eid, rp, str, fl)
-#define RPRINT(e, x)
-#endif
/*
* Election gen file name
@@ -151,6 +133,23 @@ extern "C" {
* election, should it crash.
*/
#define REP_EGENNAME "__db.rep.egen"
+#define REP_GENNAME "__db.rep.gen"
+
+/*
+ * Internal init flag file name:
+ * The existence of this file serves as an indication that the client is in the
+ * process of Internal Initialization, in case it crashes before completing.
+ * During internal init the client's partially reconstructed database pages and
+ * logs may be in an inconsistent state, so much so that running recovery must
+ * be avoided. Furthermore, there is no other way to reliably recognize this
+ * condition. Therefore, when we open an environment, and we're just about to
+ * run recovery, we check for this file first. If it exists we must discard all
+ * logs and databases. This avoids the recovery problems, and leads to a fresh
+ * attempt at internal init if the environment becomes a replication client and
+ * finds a master. The list of databases which may need to be removed is stored
+ * in this file.
+ */
+#define REP_INITNAME "__db.rep.init"
/*
* Database types for __rep_client_dbinit
@@ -167,12 +166,24 @@ typedef enum {
MUTEX_UNLOCK(dbenv, (dbenv)->rep_handle->region->mtx_region)
/*
+ * Macros for manipulating the event synchronization. We use a separate mutex
+ * so that an application's call-back function can be invoked without locking
+ * the whole region.
+ */
+#define REP_EVENT_LOCK(dbenv) \
+ MUTEX_LOCK(dbenv, (dbenv)->rep_handle->region->mtx_event)
+#define REP_EVENT_UNLOCK(dbenv) \
+ MUTEX_UNLOCK(dbenv, (dbenv)->rep_handle->region->mtx_event)
+
+/*
* REP --
* Shared replication structure.
*/
typedef struct __rep {
db_mutex_t mtx_region; /* Region mutex. */
db_mutex_t mtx_clientdb; /* Client database mutex. */
+ db_mutex_t mtx_ckp; /* Checkpoint mutex. */
+ roff_t lease_off; /* Offset of the lease table. */
roff_t tally_off; /* Offset of the tally region. */
roff_t v2tally_off; /* Offset of the vote2 tally region. */
int eid; /* Environment id. */
@@ -186,7 +197,13 @@ typedef struct __rep {
int nvotes; /* Number of votes needed. */
int priority; /* My priority in an election. */
int config_nsites;
- db_timeout_t elect_timeout;
+
+ db_timeout_t elect_timeout; /* Normal/full election timeouts. */
+ db_timeout_t full_elect_timeout;
+
+ db_timeout_t chkpt_delay; /* Master checkpoint delay. */
+
+#define REP_DEFAULT_THROTTLE (10 * MEGABYTE) /* Default value is < 1Gig. */
u_int32_t gbytes; /* Limit on data sent in single... */
u_int32_t bytes; /* __rep_process_message call. */
#define DB_REP_REQUEST_GAP 4
@@ -196,16 +213,38 @@ typedef struct __rep {
u_int32_t max_gap; /* Maximum number of records before
* requesting a missing log record. */
/* Status change information */
- int elect_th; /* A thread is in rep_elect. */
- u_int32_t msg_th; /* Number of callers in rep_proc_msg. */
- int lockout_th; /* A thread is in msg lockout. */
+ u_int32_t apply_th; /* Number of callers in rep_apply. */
+ u_int32_t msg_th; /* Number of callers in rep_proc_msg.*/
u_int32_t handle_cnt; /* Count of handles in library. */
u_int32_t op_cnt; /* Multi-step operation count.*/
- int in_recovery; /* Running recovery now. */
+ DB_LSN ckp_lsn; /* LSN for syncing a checkpoint. */
+ DB_LSN max_prep_lsn; /* Max LSN of txn_prepare record. */
+
+ /*
+ * Event notification synchronization: the mtx_event and associate
+ * fields which it protects govern event notification to the
+ * application. They form a guarantee that no matter how crazy the
+ * thread scheduling gets, the application sees a sensible, orderly
+ * progression of events.
+ */
+ db_mutex_t mtx_event; /* Serializes event notification. */
+ /*
+ * Latest generation whose NEWMASTER event the application has been
+ * notified of. Also serves to force STARTUPDONE to occur after
+ * NEWMASTER.
+ */
+ u_int32_t newmaster_event_gen;
+ /*
+ * Latest local victory of an election that the application has been
+ * notified of, expressed as the election generation number. This
+ * ensures we notify the application exactly once when it wins an
+ * election.
+ */
+ u_int32_t notified_egen;
/* Backup information. */
u_int32_t nfiles; /* Number of files we have info on. */
- u_int32_t curfile; /* Current file we're getting. */
+ u_int32_t curfile; /* Cur file we're getting (0-based). */
__rep_fileinfo_args *curinfo; /* Current file info ptr. */
void *finfo; /* Current file info buffer. */
void *nextinfo; /* Next file info buffer. */
@@ -229,50 +268,81 @@ typedef struct __rep {
DB_LSN w_lsn; /* Winner LSN. */
u_int32_t w_tiebreaker; /* Winner tiebreaking value. */
int votes; /* Number of votes for this site. */
- u_int32_t esec; /* Election start seconds. */
- u_int32_t eusec; /* Election start useconds. */
+
+ db_timespec etime; /* Election start timestamp. */
+
+ /* Leases. */
+ db_timeout_t lease_timeout; /* Lease timeout. */
+ db_timespec lease_duration; /* Lease timeout with clock skew. */
+ u_int32_t clock_skew; /* Clock skew factor. */
+ db_timespec grant_expire; /* Local grant expiration time. */
/* Statistics. */
DB_REP_STAT stat;
+#if defined(HAVE_REPLICATION_THREADS) && defined(HAVE_STATISTICS)
+ DB_REPMGR_STAT mstat;
+#endif
/* Configuration. */
#define REP_C_BULK 0x00001 /* Bulk transfer. */
#define REP_C_DELAYCLIENT 0x00002 /* Delay client sync-up. */
-#define REP_C_NOAUTOINIT 0x00004 /* No auto initialization. */
-#define REP_C_NOWAIT 0x00008 /* Immediate error return. */
+#define REP_C_LEASE 0x00004 /* Leases configured. */
+#define REP_C_NOAUTOINIT 0x00008 /* No auto initialization. */
+#define REP_C_NOWAIT 0x00010 /* Immediate error return. */
u_int32_t config; /* Configuration flags. */
-#define REP_F_CLIENT 0x00001 /* Client replica. */
-#define REP_F_DELAY 0x00002 /* Delaying client sync-up. */
-#define REP_F_EPHASE1 0x00004 /* In phase 1 of election. */
-#define REP_F_EPHASE2 0x00008 /* In phase 2 of election. */
-#define REP_F_MASTER 0x00010 /* Master replica. */
-#define REP_F_MASTERELECT 0x00020 /* Master elect */
-#define REP_F_NOARCHIVE 0x00040 /* Rep blocks log_archive */
-#define REP_F_READY 0x00080 /* Wait for txn_cnt to be 0. */
-#define REP_F_RECOVER_LOG 0x00100 /* In recovery - log. */
-#define REP_F_RECOVER_PAGE 0x00200 /* In recovery - pages. */
-#define REP_F_RECOVER_UPDATE 0x00400 /* In recovery - files. */
-#define REP_F_RECOVER_VERIFY 0x00800 /* In recovery - verify. */
-#define REP_F_TALLY 0x01000 /* Tallied vote before elect. */
+#define REP_F_CLIENT 0x00000001 /* Client replica. */
+#define REP_F_DELAY 0x00000002 /* Delaying client sync-up. */
+#define REP_F_EGENUPDATE 0x00000004 /* Egen updated by ALIVE msg. */
+#define REP_F_EPHASE0 0x00000008 /* In phase 0 of election. */
+#define REP_F_EPHASE1 0x00000010 /* In phase 1 of election. */
+#define REP_F_EPHASE2 0x00000020 /* In phase 2 of election. */
+#define REP_F_GROUP_ESTD 0x00000040 /* Rep group is established. */
+#define REP_F_INREPELECT 0x00000080 /* Thread in rep_elect. */
+#define REP_F_MASTER 0x00000100 /* Master replica. */
+#define REP_F_MASTERELECT 0x00000200 /* Master elect. */
+#define REP_F_NEWFILE 0x00000400 /* Newfile in progress. */
+#define REP_F_NOARCHIVE 0x00000800 /* Rep blocks log_archive. */
+#define REP_F_READY_API 0x00001000 /* Need handle_cnt to be 0. */
+#define REP_F_READY_APPLY 0x00002000 /* Need apply_th to be 0. */
+#define REP_F_READY_MSG 0x00004000 /* Need msg_th to be 0. */
+#define REP_F_READY_OP 0x00008000 /* Need op_cnt to be 0. */
+#define REP_F_RECOVER_LOG 0x00010000 /* In recovery - log. */
+#define REP_F_RECOVER_PAGE 0x00020000 /* In recovery - pages. */
+#define REP_F_RECOVER_UPDATE 0x00040000 /* In recovery - files. */
+#define REP_F_RECOVER_VERIFY 0x00080000 /* In recovery - verify. */
+#define REP_F_SKIPPED_APPLY 0x00100000 /* Skipped applying a record. */
+#define REP_F_START_CALLED 0x00200000 /* Rep_start called. */
+#define REP_F_TALLY 0x00400000 /* Tallied vote before elect. */
u_int32_t flags;
} REP;
/*
* Recovery flag mask to easily check any/all recovery bits. That is
- * REP_F_READY and all REP_F_RECOVER*. This must change if the values
- * of the flags change.
+ * REP_F_READY_{API|OP} and all REP_F_RECOVER*. This must change if the values
+ * of the flags change. NOTE: We do not include REP_F_READY_MSG in
+ * this mask because it is used frequently in non-recovery related
+ * areas and we want to manipulate it separately (see especially
+ * in __rep_new_master).
*/
#define REP_F_RECOVER_MASK \
- (REP_F_READY | REP_F_RECOVER_LOG | REP_F_RECOVER_PAGE | \
+ (REP_F_READY_API | REP_F_READY_OP | \
+ REP_F_RECOVER_LOG | REP_F_RECOVER_PAGE | \
REP_F_RECOVER_UPDATE | REP_F_RECOVER_VERIFY)
+/*
+ * REP_F_EPHASE0 is not a *real* election phase. It is used for
+ * master leases and allowing the client to find the master or
+ * expire its lease. However, EPHASE0 is cleared by __rep_elect_done.
+ */
#define IN_ELECTION(R) \
F_ISSET((R), REP_F_EPHASE1 | REP_F_EPHASE2)
#define IN_ELECTION_TALLY(R) \
F_ISSET((R), REP_F_EPHASE1 | REP_F_EPHASE2 | REP_F_TALLY)
#define ELECTION_MAJORITY(n) (((n) / 2) + 1)
+#define REP_F_INTERNAL_INIT_MASK (REP_F_RECOVER_PAGE | REP_F_RECOVER_LOG)
+
#define IS_REP_MASTER(dbenv) \
(REP_ON(dbenv) && \
F_ISSET(((REP *)(dbenv)->rep_handle->region), REP_F_MASTER))
@@ -281,6 +351,11 @@ typedef struct __rep {
(REP_ON(dbenv) && \
F_ISSET(((REP *)(dbenv)->rep_handle->region), REP_F_CLIENT))
+#define IS_USING_LEASES(dbenv) \
+ (REP_ON(dbenv) && \
+ FLD_ISSET(((REP *)(dbenv)->rep_handle->region)->config, \
+ REP_C_LEASE))
+
#define IS_CLIENT_PGRECOVER(dbenv) \
(IS_REP_CLIENT(dbenv) && \
F_ISSET(((REP *)(dbenv)->rep_handle->region), REP_F_RECOVER_PAGE))
@@ -357,14 +432,20 @@ struct __db_rep {
u_int32_t max_gap; /* Maximum number of records before
* requesting a missing log record. */
+ u_int32_t clock_skew; /* Clock skew factor. */
u_int32_t config; /* Configuration flags. */
int config_nsites;
- db_timeout_t elect_timeout;
+
+ db_timeout_t elect_timeout; /* Normal/full election timeouts. */
+ db_timeout_t full_elect_timeout;
+
+ db_timeout_t chkpt_delay; /* Master checkpoint delay. */
+
int my_priority;
+ db_timeout_t lease_timeout; /* Master leases. */
/*
* End of shared configuration information.
*/
-
int (*send) /* Send function. */
__P((DB_ENV *, const DBT *, const DBT *,
const DB_LSN *, int, u_int32_t));
@@ -419,16 +500,19 @@ struct __db_rep {
socket_t listen_fd;
repmgr_netaddr_t my_addr;
- int finished;
+ int finished; /* Repmgr threads should shut down. */
int done_one; /* TODO: rename */
int found_master;
-
-/* The repertoire of operations we can ask election thread to perform: */
-#define ELECT_ELECTION 1 /* Call for an election. */
-#define ELECT_REPSTART 2 /* Call rep_start(CLIENT) to find a master. */
-#define ELECT_FAILURE_ELECTION 3 /* Do election, adjusting nsites to account
- for a failed master. */
+ int takeover_pending; /* We've been elected master. */
+
+/* Operations we can ask election thread to perform (OOB value is 0): */
+#define ELECT_ELECTION 1 /* Call for an election. */
+#define ELECT_FAILURE_ELECTION 2 /* Do election, adjusting nsites to account
+ for a failed master. */
+#define ELECT_REPSTART 3 /* Call rep_start(CLIENT). */
+#define ELECT_SEEK_MASTER 4 /* Alternate rep_start to find master. */
int operation_needed; /* Next op for election thread. */
+
#endif /* HAVE_REPLICATION_THREADS */
};
@@ -436,26 +520,66 @@ struct __db_rep {
* Control structure for replication communication infrastructure.
*/
typedef struct {
-#define DB_REPVERSION 3
u_int32_t rep_version; /* Replication version number. */
u_int32_t log_version; /* Log version number. */
DB_LSN lsn; /* Log sequence number. */
u_int32_t rectype; /* Message type. */
u_int32_t gen; /* Generation number. */
+ db_timespec msg_time; /* Timestamp for leases. */
/*
- * Define old DB_LOG_ values that we must support here.
+ * Define old DB_LOG_ values that we must support here. For reasons of
+ * compatibility with old versions, these values must be reserved explicitly in
+ * the list of flag values (below)
*/
#define DB_LOG_PERM_42_44 0x20
#define DB_LOG_RESEND_42_44 0x40
#define REPCTL_ELECTABLE 0x01 /* Upgraded client is electable. */
-#define REPCTL_INIT 0x02 /* Internal init message. */
+#define REPCTL_FLUSH 0x02 /* Record should be flushed. */
+#define REPCTL_GROUP_ESTD 0x04 /* Message from site in a group. */
+#define REPCTL_INIT 0x08 /* Internal init message. */
+#define REPCTL_LEASE 0x10 /* Lease related message.. */
+ /*
+ * Skip over reserved values 0x20
+ * and 0x40, as explained above.
+ */
+#define REPCTL_LOG_END 0x80 /* Approximate end of group-wide log. */
#define REPCTL_PERM DB_LOG_PERM_42_44
#define REPCTL_RESEND DB_LOG_RESEND_42_44
u_int32_t flags; /* log_put flag value. */
} REP_CONTROL;
+/*
+ * Control message format for 4.5 release and earlier.
+ */
+typedef struct {
+ u_int32_t rep_version; /* Replication version number. */
+ u_int32_t log_version; /* Log version number. */
+
+ DB_LSN lsn; /* Log sequence number. */
+ u_int32_t rectype; /* Message type. */
+ u_int32_t gen; /* Generation number. */
+ u_int32_t flags; /* log_put flag value. */
+} REP_OLD_CONTROL;
+
+#define LEASE_REFRESH_TRIES 3 /* Number of times to try refresh. */
+
+/* Master granted lease information. */
+typedef struct __rep_lease_entry {
+ int eid; /* EID of client grantor. */
+ db_timespec start_time; /* Start time clients echo back. */
+ db_timespec end_time; /* Master lease expiration time. */
+ DB_LSN lease_lsn; /* Durable LSN lease applies to. */
+} REP_LEASE_ENTRY;
+
+typedef struct __rep_grant_info {
+ db_timespec msg_time; /* Echoed master timestamp. */
+#ifdef DIAGNOSTIC
+ db_timespec expire_time; /* Local expiration time. */
+#endif
+} REP_GRANT_INFO;
+
/* Election vote information, 4.2 version. Does not have nvotes. */
typedef struct __rep_old_vote {
u_int32_t egen; /* Election generation. */
@@ -512,8 +636,7 @@ typedef struct {
u_int32_t type; /* Item type in buffer (log, page). */
DB_LSN lsn; /* First LSN in buffer. */
int eid; /* ID of potential recipients. */
-#define BULK_FORCE 0x001 /* Force buffer after this record. */
-#define BULK_XMIT 0x002 /* Buffer in transit. */
+#define BULK_XMIT 0x001 /* Buffer in transit. */
u_int32_t *flagsp; /* Buffer flags. */
} REP_BULK;
diff --git a/db/dbinc/repmgr.h b/db/dbinc/repmgr.h
index c027035f0..e2254331b 100644
--- a/db/dbinc/repmgr.h
+++ b/db/dbinc/repmgr.h
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2006,2007 Oracle. All rights reserved.
*
- * $Id: repmgr.h,v 12.10 2006/09/19 14:14:07 mjc Exp $
+ * $Id: repmgr.h,v 12.13 2007/05/17 15:15:05 bostic Exp $
*/
#ifndef _DB_REPMGR_H_
@@ -70,11 +69,6 @@ struct __repmgr_runnable {
int finished;
};
-typedef struct {
- u_int32_t tv_sec;
- u_int32_t tv_usec;
-} repmgr_timeval_t;
-
/*
* Information about pending connection establishment retry operations.
*
@@ -94,7 +88,7 @@ typedef struct {
struct __repmgr_retry {
TAILQ_ENTRY(__repmgr_retry) entries;
u_int eid;
- repmgr_timeval_t time;
+ db_timespec time;
};
/*
@@ -340,7 +334,6 @@ typedef char * sockopt_t;
#define iov_len len
#define iov_base buf
-typedef DWORD select_timeout_t;
typedef DWORD threadsync_timeout_t;
#define REPMGR_SYNC_INITED(db_rep) (db_rep->waiters != NULL)
@@ -356,7 +349,6 @@ typedef void * sockopt_t;
#define closesocket(fd) close(fd)
-typedef struct timeval select_timeout_t;
typedef struct timespec threadsync_timeout_t;
#define REPMGR_SYNC_INITED(db_rep) (db_rep->read_pipe >= 0)
diff --git a/db/dbinc/shqueue.h b/db/dbinc/shqueue.h
index ffaa15748..6e4a0f461 100644
--- a/db/dbinc/shqueue.h
+++ b/db/dbinc/shqueue.h
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: shqueue.h,v 12.9 2006/09/07 15:11:26 mjc Exp $
+ * $Id: shqueue.h,v 12.12 2007/05/17 15:15:05 bostic Exp $
*/
#ifndef _DB_SHQUEUE_H_
@@ -381,7 +380,7 @@ struct { \
} else { \
(elm)->field.stqe_next = -1; \
(head)->stqh_last = \
- SH_PTR_TO_OFF(head, &elm->field.stqe_next); \
+ SH_PTR_TO_OFF(head, &(elm)->field.stqe_next); \
} \
(listelm)->field.stqe_next = SH_PTR_TO_OFF(listelm, elm); \
(elm)->field.stqe_prev = SH_TAILQ_NEXT_TO_PREV(listelm, field); \
@@ -393,7 +392,7 @@ struct { \
(elm)->field.stqe_prev + \
SH_PTR_TO_OFF(SH_TAILQ_NEXTP(elm, \
field, type), elm); \
- *__SH_TAILQ_PREV_OFF(elm, field) += elm->field.stqe_next;\
+ *__SH_TAILQ_PREV_OFF(elm, field) += (elm)->field.stqe_next;\
} else { \
(head)->stqh_last = (elm)->field.stqe_prev + \
SH_PTR_TO_OFF(head, elm); \
diff --git a/db/dbinc/tcl_db.h b/db/dbinc/tcl_db.h
index 4f589431b..41c9e3ecb 100644
--- a/db/dbinc/tcl_db.h
+++ b/db/dbinc/tcl_db.h
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1999-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1999,2007 Oracle. All rights reserved.
*
- * $Id: tcl_db.h,v 12.8 2006/08/24 14:45:30 bostic Exp $
+ * $Id: tcl_db.h,v 12.11 2007/05/17 15:15:05 bostic Exp $
*/
#ifndef _DB_TCL_DB_H_
@@ -83,7 +82,7 @@ typedef struct dbtcl_info {
char *i_errpfx;
/* Callbacks--Tcl_Objs containing proc names */
- Tcl_Obj *i_btcompare;
+ Tcl_Obj *i_compare;
Tcl_Obj *i_dupcompare;
Tcl_Obj *i_event;
Tcl_Obj *i_hashproc;
diff --git a/db/dbinc/txn.h b/db/dbinc/txn.h
index 4d0048809..3f7c23e93 100644
--- a/db/dbinc/txn.h
+++ b/db/dbinc/txn.h
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: txn.h,v 12.13 2006/08/24 14:45:30 bostic Exp $
+ * $Id: txn.h,v 12.18 2007/05/17 19:33:03 bostic Exp $
*/
#ifndef _DB_TXN_H_
@@ -36,6 +35,7 @@ struct __txn_logrec; typedef struct __txn_logrec DB_TXNLOGREC;
#define TXN_INVALID 0 /* Invalid transaction ID. */
#define DEF_MAX_TXNS 100 /* Default max transactions. */
+#define TXN_NSLOTS 4 /* Initial slots to hold DB refs */
/*
* Internal data maintained in shared memory for each transaction.
@@ -51,6 +51,10 @@ typedef struct __txn_detail {
roff_t parent; /* Offset of transaction's parent. */
roff_t name; /* Offset of txn name. */
+ u_int32_t nlog_dbs; /* Number of databases used. */
+ u_int32_t nlog_slots; /* Number of allocated slots. */
+ roff_t log_dbs; /* Databases used. */
+
DB_LSN read_lsn; /* Read LSN for MVCC. */
DB_LSN visible_lsn; /* LSN at which this transaction's
changes are visible. */
@@ -82,6 +86,7 @@ typedef struct __txn_detail {
u_int32_t bqual; /* bqual_length from XID */
u_int32_t gtrid; /* gtrid_length from XID */
int32_t format; /* XA format */
+ roff_t slots[TXN_NSLOTS]; /* Initial DB slot allocation. */
} TXN_DETAIL;
/*
diff --git a/db/dbinc/win_db.h b/db/dbinc/win_db.h
new file mode 100644
index 000000000..a7d3a7c8d
--- /dev/null
+++ b/db/dbinc/win_db.h
@@ -0,0 +1,151 @@
+/*-
+ * $Id: win_db.h,v 12.25 2007/06/29 14:11:25 alexg Exp $
+ *
+ * The following provides the information necessary to build Berkeley
+ * DB on native Windows, and other Windows environments such as MinGW.
+ */
+
+/*
+ * Avoid warnings with Visual Studio 8.
+ */
+#ifndef _CRT_SECURE_NO_DEPRECATE
+#define _CRT_SECURE_NO_DEPRECATE 1
+#endif
+
+/*
+ * Windows NT 4.0 and later required for the replication manager.
+ */
+#ifdef HAVE_REPLICATION_THREADS
+#define _WIN32_WINNT 0x0400
+#endif
+
+#ifndef DB_WINCE
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/timeb.h>
+
+#include <direct.h>
+#include <fcntl.h>
+#include <io.h>
+#include <limits.h>
+#include <memory.h>
+#include <process.h>
+#include <signal.h>
+#endif /* DB_WINCE */
+
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <tchar.h>
+#include <time.h>
+
+/*
+ * To build Tcl interface libraries, the include path must be configured to
+ * use the directory containing <tcl.h>, usually the include directory in
+ * the Tcl distribution.
+ */
+#ifdef DB_TCL_SUPPORT
+#include <tcl.h>
+#endif
+
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#include <winsock2.h>
+
+#ifdef HAVE_GETADDRINFO
+/*
+ * Need explicit includes for IPv6 support on Windows. Both are necessary to
+ * ensure that pre WinXP versions have an implementation of the getaddrinfo API.
+ */
+#include <ws2tcpip.h>
+#include <wspiapi.h>
+#endif
+
+/*
+ * Microsoft's C runtime library has fsync, getcwd, getpid, snprintf and
+ * vsnprintf, but under different names.
+ */
+#define fsync _commit
+
+#ifndef DB_WINCE
+#define getcwd(buf, size) _getcwd(buf, size)
+#endif
+#define getpid GetCurrentProcessId
+#define snprintf _snprintf
+#define strcasecmp _stricmp
+#define strncasecmp _strnicmp
+#define vsnprintf _vsnprintf
+
+#define h_errno WSAGetLastError()
+
+/*
+ * Win32 does not have getopt.
+ *
+ * The externs are here, instead of using db_config.h and clib_port.h, because
+ * that approach changes function names to BDB specific names, and the example
+ * programs use getopt and can't use BDB specific names.
+ */
+#if defined(__cplusplus)
+extern "C" {
+#endif
+extern int getopt(int, char * const *, const char *);
+#if defined(__cplusplus)
+}
+#endif
+
+/*
+ * Microsoft's compiler _doesn't_ define __STDC__ unless you invoke it with
+ * arguments turning OFF all vendor extensions. Even more unfortunately, if
+ * we do that, it fails to parse windows.h!!!!! So, we define __STDC__ here,
+ * after windows.h comes in. Note: the compiler knows we've defined it, and
+ * starts enforcing strict ANSI compliance from this point on.
+ */
+#ifndef __STDC__
+#define __STDC__ 1
+#endif
+
+#ifdef _UNICODE
+#define TO_TSTRING(dbenv, s, ts, ret) do { \
+ int __len = (int)strlen(s) + 1; \
+ ts = NULL; \
+ if ((ret = __os_malloc((dbenv), \
+ __len * sizeof(_TCHAR), &(ts))) == 0 && \
+ MultiByteToWideChar(CP_UTF8, 0, \
+ (s), -1, (ts), __len) == 0) \
+ ret = __os_posix_err(__os_get_syserr()); \
+ } while (0)
+
+#define FROM_TSTRING(dbenv, ts, s, ret) { \
+ int __len = WideCharToMultiByte(CP_UTF8, 0, ts, -1, \
+ NULL, 0, NULL, NULL); \
+ s = NULL; \
+ if ((ret = __os_malloc((dbenv), __len, &(s))) == 0 && \
+ WideCharToMultiByte(CP_UTF8, 0, \
+ (ts), -1, (s), __len, NULL, NULL) == 0) \
+ ret = __os_posix_err(__os_get_syserr()); \
+ } while (0)
+
+#define FREE_STRING(dbenv, s) do { \
+ if ((s) != NULL) { \
+ __os_free((dbenv), (s)); \
+ (s) = NULL; \
+ } \
+ } while (0)
+
+#else
+#define TO_TSTRING(dbenv, s, ts, ret) (ret) = 0, (ts) = (_TCHAR *)(s)
+#define FROM_TSTRING(dbenv, ts, s, ret) (ret) = 0, (s) = (char *)(ts)
+#define FREE_STRING(dbenv, ts)
+#endif
+
+#ifndef INVALID_HANDLE_VALUE
+#define INVALID_HANDLE_VALUE ((HANDLE)-1)
+#endif
+
+#ifndef INVALID_FILE_ATTRIBUTES
+#define INVALID_FILE_ATTRIBUTES ((DWORD)-1)
+#endif
+
+#ifndef INVALID_SET_FILE_POINTER
+#define INVALID_SET_FILE_POINTER ((DWORD)-1)
+#endif
diff --git a/db/dbinc/xa.h b/db/dbinc/xa.h
index 5768c58c9..050f9a01f 100644
--- a/db/dbinc/xa.h
+++ b/db/dbinc/xa.h
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1998-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1998,2007 Oracle. All rights reserved.
*
- * $Id: xa.h,v 12.4 2006/08/24 14:45:30 bostic Exp $
+ * $Id: xa.h,v 12.6 2007/05/17 15:15:05 bostic Exp $
*/
/*
* Start of xa.h header
diff --git a/db/dbinc_auto/btree_ext.h b/db/dbinc_auto/btree_ext.h
index 82916e84b..2cf47bff5 100644
--- a/db/dbinc_auto/btree_ext.h
+++ b/db/dbinc_auto/btree_ext.h
@@ -21,13 +21,13 @@ int __bam_ca_undodup __P((DB *, u_int32_t, db_pgno_t, u_int32_t, u_int32_t));
int __bam_ca_rsplit __P((DBC *, db_pgno_t, db_pgno_t));
int __bam_ca_split __P((DBC *, db_pgno_t, db_pgno_t, db_pgno_t, u_int32_t, int));
int __bam_ca_undosplit __P((DB *, db_pgno_t, db_pgno_t, db_pgno_t, u_int32_t));
-int __bam_c_init __P((DBC *, DBTYPE));
-int __bam_c_refresh __P((DBC *));
-int __bam_c_count __P((DBC *, db_recno_t *));
-int __bam_c_dup __P((DBC *, DBC *));
+int __bamc_init __P((DBC *, DBTYPE));
+int __bamc_refresh __P((DBC *));
+int __bamc_count __P((DBC *, db_recno_t *));
+int __bamc_dup __P((DBC *, DBC *));
int __bam_bulk_overflow __P((DBC *, u_int32_t, db_pgno_t, u_int8_t *));
int __bam_bulk_duplicates __P((DBC *, db_pgno_t, u_int8_t *, int32_t *, int32_t **, u_int8_t **, u_int32_t *, int));
-int __bam_c_rget __P((DBC *, DBT *));
+int __bamc_rget __P((DBC *, DBT *));
int __bam_opd_exists __P((DBC *, db_pgno_t));
int __bam_ditem __P((DBC *, PAGE *, u_int32_t));
int __bam_adjindx __P((DBC *, PAGE *, u_int32_t, u_int32_t, int));
@@ -68,9 +68,9 @@ int __bam_reclaim __P((DB *, DB_TXN *));
int __bam_truncate __P((DBC *, u_int32_t *));
int __ram_open __P((DB *, DB_TXN *, const char *, db_pgno_t, u_int32_t));
int __ram_append __P((DBC *, DBT *, DBT *));
-int __ram_c_del __P((DBC *));
-int __ram_c_get __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *));
-int __ram_c_put __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *));
+int __ramc_del __P((DBC *));
+int __ramc_get __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *));
+int __ramc_put __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *));
int __ram_ca __P((DBC *, ca_recno_arg, int *));
int __ram_getno __P((DBC *, const DBT *, db_recno_t *, int));
int __ram_writeback __P((DB *));
@@ -83,7 +83,7 @@ int __bam_search __P((DBC *, db_pgno_t, const DBT *, u_int32_t, int, db_recno_t
int __bam_stkrel __P((DBC *, u_int32_t));
int __bam_stkgrow __P((DB_ENV *, BTREE_CURSOR *));
int __bam_split __P((DBC *, void *, db_pgno_t *));
-int __bam_pinsert __P((DBC *, EPG *, PAGE *, PAGE *, int));
+int __bam_pinsert __P((DBC *, EPG *, u_int32_t, PAGE *, PAGE *, int));
int __bam_copy __P((DB *, PAGE *, PAGE *, u_int32_t, u_int32_t));
int __bam_stat __P((DBC *, void *, u_int32_t));
int __bam_stat_print __P((DBC *, u_int32_t));
diff --git a/db/dbinc_auto/clib_ext.h b/db/dbinc_auto/clib_ext.h
index 941152326..d841c5cfb 100644
--- a/db/dbinc_auto/clib_ext.h
+++ b/db/dbinc_auto/clib_ext.h
@@ -6,9 +6,6 @@
extern "C" {
#endif
-#ifndef HAVE_ABORT
-void abort __P((void));
-#endif
#ifndef HAVE_ATOI
int atoi __P((const char *));
#endif
@@ -58,6 +55,9 @@ int fprintf __P((FILE *, const char *, ...));
#ifndef HAVE_PRINTF
int vfprintf __P((FILE *, const char *, va_list));
#endif
+#ifndef HAVE_QSORT
+void qsort __P((void *, size_t, size_t, int(*)(const void *, const void *)));
+#endif
#ifndef HAVE_RAISE
int raise __P((int));
#endif
diff --git a/db/dbinc_auto/common_ext.h b/db/dbinc_auto/common_ext.h
index 8d90d72fe..5525caa11 100644
--- a/db/dbinc_auto/common_ext.h
+++ b/db/dbinc_auto/common_ext.h
@@ -9,7 +9,6 @@ extern "C" {
int __crypto_region_init __P((DB_ENV *));
int __db_isbigendian __P((void));
int __db_byteorder __P((DB_ENV *, int));
-void __db_difftime __P((u_int32_t, u_int32_t, u_int32_t, u_int32_t, u_int32_t *, u_int32_t *));
int __db_fchk __P((DB_ENV *, const char *, u_int32_t, u_int32_t));
int __db_fcchk __P((DB_ENV *, const char *, u_int32_t, u_int32_t, u_int32_t));
int __db_ferr __P((const DB_ENV *, const char *, int));
@@ -21,7 +20,6 @@ void __db_assert __P((DB_ENV *, const char *, const char *, int));
#endif
int __db_panic_msg __P((DB_ENV *));
int __db_panic __P((DB_ENV *, int));
-void __db_panic_set __P((DB_ENV *, int));
char *__db_unknown_error __P((int));
void __db_syserr __P((const DB_ENV *, int, const char *, ...)) __attribute__ ((__format__ (__printf__, 3, 4)));
void __db_err __P((const DB_ENV *, int, const char *, ...)) __attribute__ ((__format__ (__printf__, 3, 4)));
@@ -29,12 +27,13 @@ void __db_errx __P((const DB_ENV *, const char *, ...)) __attribute__ ((__format
void __db_errcall __P((const DB_ENV *, int, db_error_set_t, const char *, va_list));
void __db_errfile __P((const DB_ENV *, int, db_error_set_t, const char *, va_list));
void __db_msgadd __P((DB_ENV *, DB_MSGBUF *, const char *, ...)) __attribute__ ((__format__ (__printf__, 3, 4)));
+void __db_msgadd_ap __P((DB_ENV *, DB_MSGBUF *, const char *, va_list));
void __db_msg __P((const DB_ENV *, const char *, ...)) __attribute__ ((__format__ (__printf__, 2, 3)));
int __db_unknown_flag __P((DB_ENV *, char *, u_int32_t));
int __db_unknown_type __P((DB_ENV *, char *, DBTYPE));
int __db_unknown_path __P((DB_ENV *, char *));
-int __db_check_txn __P((DB *, DB_TXN *, u_int32_t, int));
-int __db_txn_deadlock_err __P((DB_ENV *));
+int __db_check_txn __P((DB *, DB_TXN *, DB_LOCKER *, int));
+int __db_txn_deadlock_err __P((DB_ENV *, DB_TXN *));
int __db_not_txn_env __P((DB_ENV *));
int __db_rec_toobig __P((DB_ENV *, u_int32_t, u_int32_t));
int __db_rec_repl __P((DB_ENV *, u_int32_t, u_int32_t));
@@ -47,6 +46,8 @@ int __db_getlong __P((DB_ENV *, const char *, char *, long, long, long *));
int __db_getulong __P((DB_ENV *, const char *, char *, u_long, u_long, u_long *));
void __db_idspace __P((u_int32_t *, int, u_int32_t *, u_int32_t *));
u_int32_t __db_log2 __P((u_int32_t));
+u_int32_t __db_tablesize __P((u_int32_t));
+void __db_hashinit __P((void *, u_int32_t));
int __db_mkpath __P((DB_ENV *, const char *));
int __db_util_arg __P((char *, char *, int *, char ***));
int __db_util_cache __P((DB *, u_int32_t *, int *));
diff --git a/db/dbinc_auto/crypto_ext.h b/db/dbinc_auto/crypto_ext.h
index b305ec5a7..92bc8244a 100644
--- a/db/dbinc_auto/crypto_ext.h
+++ b/db/dbinc_auto/crypto_ext.h
@@ -12,8 +12,8 @@ int __aes_close __P((DB_ENV *, void *));
int __aes_decrypt __P((DB_ENV *, void *, void *, u_int8_t *, size_t));
int __aes_encrypt __P((DB_ENV *, void *, void *, u_int8_t *, size_t));
int __aes_init __P((DB_ENV *, DB_CIPHER *));
-int __crypto_dbenv_close __P((DB_ENV *));
-int __crypto_region_destroy __P((DB_ENV *));
+int __crypto_env_close __P((DB_ENV *));
+int __crypto_env_refresh __P((DB_ENV *));
int __crypto_algsetup __P((DB_ENV *, DB_CIPHER *, u_int32_t, int));
int __crypto_decrypt_meta __P((DB_ENV *, DB *, u_int8_t *, int));
int __crypto_set_passwd __P((DB_ENV *, DB_ENV *));
diff --git a/db/dbinc_auto/db_ext.h b/db/dbinc_auto/db_ext.h
index 141bd5149..f29513678 100644
--- a/db/dbinc_auto/db_ext.h
+++ b/db/dbinc_auto/db_ext.h
@@ -26,8 +26,8 @@ int __crdel_inmem_rename_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void
int __crdel_inmem_remove_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
int __db_master_open __P((DB *, DB_TXN *, const char *, u_int32_t, int, DB **));
int __db_master_update __P((DB *, DB *, DB_TXN *, const char *, DBTYPE, mu_action, const char *, u_int32_t));
-int __db_dbenv_setup __P((DB *, DB_TXN *, const char *, const char *, u_int32_t, u_int32_t));
-int __db_dbenv_mpool __P((DB *, const char *, u_int32_t));
+int __db_env_setup __P((DB *, DB_TXN *, const char *, const char *, u_int32_t, u_int32_t));
+int __db_env_mpool __P((DB *, const char *, u_int32_t));
int __db_close __P((DB *, DB_TXN *, u_int32_t));
int __db_refresh __P((DB *, DB_TXN *, u_int32_t, int *, int));
int __db_log_page __P((DB *, DB_TXN *, DB_LSN *, db_pgno_t, PAGE *));
@@ -35,7 +35,7 @@ int __db_backup_name __P((DB_ENV *, const char *, DB_TXN *, char **));
#ifdef CONFIG_TEST
int __db_testcopy __P((DB_ENV *, DB *, const char *));
#endif
-int __db_cursor_int __P((DB *, DB_TXN *, DBTYPE, db_pgno_t, int, u_int32_t, DBC **));
+int __db_cursor_int __P((DB *, DB_TXN *, DBTYPE, db_pgno_t, int, DB_LOCKER *, DBC **));
int __db_put __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t));
int __db_del __P((DB *, DB_TXN *, DBT *, u_int32_t));
int __db_sync __P((DB *));
@@ -90,26 +90,31 @@ int __db_pg_new_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
int __db_pg_init_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
int __db_pg_sort_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
int __db_init_print __P((DB_ENV *, int (***)(DB_ENV *, DBT *, DB_LSN *, db_recops, void *), size_t *));
-int __db_c_close __P((DBC *));
-int __db_c_destroy __P((DBC *));
-int __db_c_count __P((DBC *, db_recno_t *));
-int __db_c_del __P((DBC *, u_int32_t));
-int __db_c_dup __P((DBC *, DBC **, u_int32_t));
-int __db_c_idup __P((DBC *, DBC **, u_int32_t));
-int __db_c_newopd __P((DBC *, db_pgno_t, DBC *, DBC **));
-int __db_c_get __P((DBC *, DBT *, DBT *, u_int32_t));
-int __db_c_put __P((DBC *, DBT *, DBT *, u_int32_t));
+int __dbc_close __P((DBC *));
+int __dbc_destroy __P((DBC *));
+int __dbc_count __P((DBC *, db_recno_t *));
+int __dbc_del __P((DBC *, u_int32_t));
+int __dbc_dup __P((DBC *, DBC **, u_int32_t));
+int __dbc_idup __P((DBC *, DBC **, u_int32_t));
+int __dbc_newopd __P((DBC *, db_pgno_t, DBC *, DBC **));
+int __dbc_get __P((DBC *, DBT *, DBT *, u_int32_t));
+int __dbc_put __P((DBC *, DBT *, DBT *, u_int32_t));
int __db_duperr __P((DB *, u_int32_t));
-int __db_c_secondary_get_pp __P((DBC *, DBT *, DBT *, u_int32_t));
-int __db_c_pget __P((DBC *, DBT *, DBT *, DBT *, u_int32_t));
-int __db_c_del_primary __P((DBC *));
+int __dbc_secondary_get_pp __P((DBC *, DBT *, DBT *, u_int32_t));
+int __dbc_pget __P((DBC *, DBT *, DBT *, DBT *, u_int32_t));
+int __dbc_del_primary __P((DBC *));
int __db_s_first __P((DB *, DB **));
-int __db_s_next __P((DB **));
-int __db_s_done __P((DB *));
+int __db_s_next __P((DB **, DB_TXN *));
+int __db_s_done __P((DB *, DB_TXN *));
u_int32_t __db_partsize __P((u_int32_t, DBT *));
+#ifdef DIAGNOSTIC
+void __db_check_skeyset __P((DB *, DBT *));
+#endif
int __cdsgroup_begin __P((DB_ENV *, DB_TXN **));
int __db_pgin __P((DB_ENV *, db_pgno_t, void *, DBT *));
int __db_pgout __P((DB_ENV *, db_pgno_t, void *, DBT *));
+int __db_decrypt_pg __P((DB_ENV *, DB *, PAGE *));
+int __db_encrypt_and_checksum_pg __P((DB_ENV *, DB *, PAGE *));
void __db_metaswap __P((PAGE *));
int __db_byteswap __P((DB_ENV *, DB *, db_pgno_t, PAGE *, size_t, int));
int __db_dispatch __P((DB_ENV *, int (**)__P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *)), size_t, DBT *, DB_LSN *, db_recops, DB_TXNHEAD *));
@@ -135,6 +140,7 @@ int __db_close_pp __P((DB *, u_int32_t));
int __db_cursor_pp __P((DB *, DB_TXN *, DBC **, u_int32_t));
int __db_cursor __P((DB *, DB_TXN *, DBC **, u_int32_t));
int __db_del_pp __P((DB *, DB_TXN *, DBT *, u_int32_t));
+int __db_exists __P((DB *, DB_TXN *, DBT *, u_int32_t));
int __db_fd_pp __P((DB *, int *));
int __db_get_pp __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t));
int __db_get __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t));
@@ -146,14 +152,14 @@ int __db_pget __P((DB *, DB_TXN *, DBT *, DBT *, DBT *, u_int32_t));
int __db_put_pp __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t));
int __db_compact_pp __P((DB *, DB_TXN *, DBT *, DBT *, DB_COMPACT *, u_int32_t, DBT *));
int __db_sync_pp __P((DB *, u_int32_t));
-int __db_c_close_pp __P((DBC *));
-int __db_c_count_pp __P((DBC *, db_recno_t *, u_int32_t));
-int __db_c_del_pp __P((DBC *, u_int32_t));
-int __db_c_dup_pp __P((DBC *, DBC **, u_int32_t));
-int __db_c_get_pp __P((DBC *, DBT *, DBT *, u_int32_t));
+int __dbc_close_pp __P((DBC *));
+int __dbc_count_pp __P((DBC *, db_recno_t *, u_int32_t));
+int __dbc_del_pp __P((DBC *, u_int32_t));
+int __dbc_dup_pp __P((DBC *, DBC **, u_int32_t));
+int __dbc_get_pp __P((DBC *, DBT *, DBT *, u_int32_t));
int __db_secondary_close_pp __P((DB *, u_int32_t));
-int __db_c_pget_pp __P((DBC *, DBT *, DBT *, DBT *, u_int32_t));
-int __db_c_put_pp __P((DBC *, DBT *, DBT *, u_int32_t));
+int __dbc_pget_pp __P((DBC *, DBT *, DBT *, DBT *, u_int32_t));
+int __dbc_put_pp __P((DBC *, DBT *, DBT *, u_int32_t));
int __db_txn_auto_init __P((DB_ENV *, DB_TXN **));
int __db_txn_auto_resolve __P((DB_ENV *, DB_TXN *, int, int));
int __dbt_usercopy __P((DB_ENV *, DBT *));
@@ -167,7 +173,7 @@ int __db_free __P((DBC *, PAGE *));
void __db_freelist_pos __P((db_pgno_t, db_pgno_t *, u_int32_t, u_int32_t *));
#endif
#ifdef HAVE_FTRUNCATE
-int __db_pg_truncate __P((DB_MPOOLFILE *, DB_TXN *, struct pglist *list, DB_COMPACT *, u_int32_t *, db_pgno_t *, DB_LSN *, int));
+int __db_pg_truncate __P((DB *, DB_TXN *, struct pglist *list, DB_COMPACT *, u_int32_t *, db_pgno_t *, DB_LSN *, int));
#endif
#ifdef HAVE_FTRUNCATE
int __db_free_truncate __P((DB *, DB_TXN *, u_int32_t, DB_COMPACT *, struct pglist **, u_int32_t *, db_pgno_t *));
@@ -175,6 +181,7 @@ int __db_free_truncate __P((DB *, DB_TXN *, u_int32_t, DB_COMPACT *, struct pgli
int __db_lprint __P((DBC *));
int __db_lget __P((DBC *, int, db_pgno_t, db_lockmode_t, u_int32_t, DB_LOCK *));
int __db_lput __P((DBC *, DB_LOCK *));
+int __db_create_internal __P((DB **, DB_ENV *, u_int32_t));
int __dbh_am_chk __P((DB *, u_int32_t));
int __db_get_flags __P((DB *, u_int32_t *));
int __db_set_flags __P((DB *, u_int32_t));
@@ -185,13 +192,14 @@ int __db_open __P((DB *, DB_TXN *, const char *, const char *, DBTYPE, u_int32_t
int __db_get_open_flags __P((DB *, u_int32_t *));
int __db_new_file __P((DB *, DB_TXN *, DB_FH *, const char *));
int __db_init_subdb __P((DB *, DB *, const char *, DB_TXN *));
-int __db_chk_meta __P((DB_ENV *, DB *, DBMETA *, int));
-int __db_meta_setup __P((DB_ENV *, DB *, const char *, DBMETA *, u_int32_t, int));
+int __db_chk_meta __P((DB_ENV *, DB *, DBMETA *, u_int32_t));
+int __db_meta_setup __P((DB_ENV *, DB *, const char *, DBMETA *, u_int32_t, u_int32_t));
int __db_goff __P((DB *, DB_TXN *, DBT *, u_int32_t, db_pgno_t, void **, u_int32_t *));
int __db_poff __P((DBC *, const DBT *, db_pgno_t *));
int __db_ovref __P((DBC *, db_pgno_t));
int __db_doff __P((DBC *, db_pgno_t));
int __db_moff __P((DB *, DB_TXN *, const DBT *, db_pgno_t, u_int32_t, int (*)(DB *, const DBT *, const DBT *), int *));
+int __db_coff __P((DB *, DB_TXN *, const DBT *, const DBT *, int (*)(DB *, const DBT *, const DBT *), int *));
int __db_vrfy_overflow __P((DB *, VRFY_DBINFO *, PAGE *, db_pgno_t, u_int32_t));
int __db_vrfy_ovfl_structure __P((DB *, VRFY_DBINFO *, db_pgno_t, u_int32_t, u_int32_t));
int __db_safe_goff __P((DB *, VRFY_DBINFO *, db_pgno_t, DBT *, void *, u_int32_t));
diff --git a/db/dbinc_auto/dbreg_ext.h b/db/dbinc_auto/dbreg_ext.h
index 6e7aa8487..cd7b554c9 100644
--- a/db/dbinc_auto/dbreg_ext.h
+++ b/db/dbinc_auto/dbreg_ext.h
@@ -8,11 +8,14 @@ extern "C" {
int __dbreg_setup __P((DB *, const char *, u_int32_t));
int __dbreg_teardown __P((DB *));
+int __dbreg_teardown_int __P((DB_ENV *, FNAME *));
int __dbreg_new_id __P((DB *, DB_TXN *));
int __dbreg_get_id __P((DB *, DB_TXN *, int32_t *));
int __dbreg_assign_id __P((DB *, int32_t));
int __dbreg_revoke_id __P((DB *, int, int32_t));
+int __dbreg_revoke_id_int __P((DB_ENV *, FNAME *, int, int, int32_t));
int __dbreg_close_id __P((DB *, DB_TXN *, u_int32_t));
+int __dbreg_close_id_int __P((DB_ENV *, FNAME *, u_int32_t, int));
int __dbreg_log_close __P((DB_ENV *, FNAME *, DB_TXN *, u_int32_t));
int __dbreg_log_id __P((DB *, DB_TXN *, int32_t, int));
int __dbreg_register_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, u_int32_t, const DBT *, const DBT *, int32_t, DBTYPE, db_pgno_t, u_int32_t));
@@ -25,9 +28,11 @@ int __dbreg_stat_print __P((DB_ENV *, u_int32_t));
void __dbreg_print_fname __P((DB_ENV *, FNAME *));
int __dbreg_add_dbentry __P((DB_ENV *, DB_LOG *, DB *, int32_t));
int __dbreg_rem_dbentry __P((DB_LOG *, int32_t));
-int __dbreg_log_files __P((DB_ENV *));
-int __dbreg_close_files __P((DB_ENV *));
-int __dbreg_invalidate_files __P((DB_ENV *));
+int __dbreg_log_files __P((DB_ENV *, u_int32_t));
+int __dbreg_close_files __P((DB_ENV *, int));
+int __dbreg_close_file __P((DB_ENV *, FNAME *));
+int __dbreg_mark_restored __P((DB_ENV *));
+int __dbreg_invalidate_files __P((DB_ENV *, int));
int __dbreg_id_to_db __P((DB_ENV *, DB_TXN *, DB **, int32_t, int));
int __dbreg_id_to_db_int __P((DB_ENV *, DB_TXN *, DB **, int32_t, int, int));
int __dbreg_id_to_fname __P((DB_LOG *, int32_t, int, FNAME **));
diff --git a/db/dbinc_auto/env_ext.h b/db/dbinc_auto/env_ext.h
index 2e0882415..d1742ddea 100644
--- a/db/dbinc_auto/env_ext.h
+++ b/db/dbinc_auto/env_ext.h
@@ -6,14 +6,14 @@
extern "C" {
#endif
-void __db_shalloc_init __P((REGINFO *, size_t));
-size_t __db_shalloc_size __P((size_t, size_t));
-int __db_shalloc __P((REGINFO *, size_t, size_t, void *));
-void __db_shalloc_free __P((REGINFO *, void *));
-size_t __db_shalloc_sizeof __P((void *));
-u_int32_t __db_tablesize __P((u_int32_t));
-void __db_hashinit __P((void *, u_int32_t));
+void __env_alloc_init __P((REGINFO *, size_t));
+size_t __env_alloc_overhead __P((void));
+size_t __env_alloc_size __P((size_t));
+int __env_alloc __P((REGINFO *, size_t, void *));
+void __env_alloc_free __P((REGINFO *, void *));
+void __env_alloc_print __P((REGINFO *, u_int32_t));
int __env_read_db_config __P((DB_ENV *));
+int __config_split __P((char *, char *[]));
int __env_failchk_pp __P((DB_ENV *, u_int32_t));
int __env_thread_init __P((DB_ENV *, int));
int __env_set_state __P((DB_ENV *, DB_THREAD_INFO **, DB_THREAD_STATE));
@@ -43,6 +43,7 @@ int __env_set_verbose __P((DB_ENV *, u_int32_t, int));
int __db_mi_env __P((DB_ENV *, const char *));
int __db_mi_open __P((DB_ENV *, const char *, int));
int __db_env_config __P((DB_ENV *, char *, u_int32_t));
+int __db_appname __P((DB_ENV *, APPNAME, const char *, u_int32_t, DB_FH **, char **));
int __env_open_pp __P((DB_ENV *, const char *, u_int32_t, int));
int __env_open __P((DB_ENV *, const char *, u_int32_t, int));
int __env_remove __P((DB_ENV *, const char *, u_int32_t));
@@ -50,17 +51,20 @@ int __env_config __P((DB_ENV *, const char *, u_int32_t, int));
int __env_close_pp __P((DB_ENV *, u_int32_t));
int __env_close __P((DB_ENV *, int));
int __env_get_open_flags __P((DB_ENV *, u_int32_t *));
-int __db_appname __P((DB_ENV *, APPNAME, const char *, u_int32_t, DB_FH **, char **));
int __db_apprec __P((DB_ENV *, DB_LSN *, DB_LSN *, int, u_int32_t));
int __log_backup __P((DB_ENV *, DB_LOGC *, DB_LSN *, DB_LSN *, u_int32_t));
int __env_openfiles __P((DB_ENV *, DB_LOGC *, void *, DBT *, DB_LSN *, DB_LSN *, double, int));
int __env_init_rec __P((DB_ENV *, u_int32_t));
-int __db_e_attach __P((DB_ENV *, u_int32_t *));
-int __db_e_golive __P((DB_ENV *));
-int __db_e_detach __P((DB_ENV *, int));
-int __db_e_remove __P((DB_ENV *, u_int32_t));
-int __db_r_attach __P((DB_ENV *, REGINFO *, size_t));
-int __db_r_detach __P((DB_ENV *, REGINFO *, int));
+int __env_attach __P((DB_ENV *, u_int32_t *, int, int));
+int __env_turn_on __P((DB_ENV *));
+int __env_turn_off __P((DB_ENV *, u_int32_t));
+void __env_panic_set __P((DB_ENV *, int));
+int __env_ref_increment __P((DB_ENV *));
+int __env_ref_decrement __P((DB_ENV *));
+int __env_detach __P((DB_ENV *, int));
+int __env_remove_env __P((DB_ENV *));
+int __env_region_attach __P((DB_ENV *, REGINFO *, size_t));
+int __env_region_detach __P((DB_ENV *, REGINFO *, int));
int __envreg_register __P((DB_ENV *, int *));
int __envreg_unregister __P((DB_ENV *, int));
int __envreg_xunlock __P((DB_ENV *));
@@ -70,8 +74,38 @@ void __db_print_fileid __P((DB_ENV *, u_int8_t *, const char *));
void __db_dl __P((DB_ENV *, const char *, u_long));
void __db_dl_pct __P((DB_ENV *, const char *, u_long, int, const char *));
void __db_dlbytes __P((DB_ENV *, const char *, u_long, u_long, u_long));
-void __db_print_reginfo __P((DB_ENV *, REGINFO *, const char *));
+void __db_print_reginfo __P((DB_ENV *, REGINFO *, const char *, u_int32_t));
int __db_stat_not_built __P((DB_ENV *));
+#ifndef HAVE_REPLICATION_THREADS
+int __repmgr_close __P((DB_ENV *));
+#endif
+#ifndef HAVE_REPLICATION_THREADS
+int __repmgr_add_remote_site __P((DB_ENV *, const char *, u_int, int *, u_int32_t));
+#endif
+#ifndef HAVE_REPLICATION_THREADS
+int __repmgr_get_ack_policy __P((DB_ENV *, int *));
+#endif
+#ifndef HAVE_REPLICATION_THREADS
+int __repmgr_set_ack_policy __P((DB_ENV *, int));
+#endif
+#ifndef HAVE_REPLICATION_THREADS
+int __repmgr_set_local_site __P((DB_ENV *, const char *, u_int, u_int32_t));
+#endif
+#ifndef HAVE_REPLICATION_THREADS
+int __repmgr_site_list __P((DB_ENV *, u_int *, DB_REPMGR_SITE **));
+#endif
+#ifndef HAVE_REPLICATION_THREADS
+int __repmgr_start __P((DB_ENV *, int, u_int32_t));
+#endif
+#ifndef HAVE_REPLICATION_THREADS
+int __repmgr_stat_pp __P((DB_ENV *, DB_REPMGR_STAT **, u_int32_t));
+#endif
+#ifndef HAVE_REPLICATION_THREADS
+int __repmgr_stat_print_pp __P((DB_ENV *, u_int32_t));
+#endif
+#ifndef HAVE_REPLICATION_THREADS
+int __repmgr_handle_event __P((DB_ENV *, u_int32_t, void *));
+#endif
#if defined(__cplusplus)
}
diff --git a/db/dbinc_auto/fileops_auto.h b/db/dbinc_auto/fileops_auto.h
index 9b3a65649..91207bd9e 100644
--- a/db/dbinc_auto/fileops_auto.h
+++ b/db/dbinc_auto/fileops_auto.h
@@ -37,6 +37,7 @@ typedef struct ___fop_write_args {
} __fop_write_args;
#define DB___fop_rename 146
+#define DB___fop_rename_noundo 150
typedef struct ___fop_rename_args {
u_int32_t type;
DB_TXN *txnp;
diff --git a/db/dbinc_auto/fileops_ext.h b/db/dbinc_auto/fileops_ext.h
index 25b2fe625..2c41b3628 100644
--- a/db/dbinc_auto/fileops_ext.h
+++ b/db/dbinc_auto/fileops_ext.h
@@ -13,6 +13,8 @@ int __fop_remove_read __P((DB_ENV *, void *, __fop_remove_args **));
int __fop_write_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, const DBT *, u_int32_t, u_int32_t, db_pgno_t, u_int32_t, const DBT *, u_int32_t));
int __fop_write_read __P((DB_ENV *, void *, __fop_write_args **));
int __fop_rename_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, const DBT *, const DBT *, const DBT *, u_int32_t));
+int __fop_rename_noundo_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, const DBT *, const DBT *, const DBT *, u_int32_t));
+int __fop_rename_int_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, const DBT *, const DBT *, const DBT *, u_int32_t, u_int32_t));
int __fop_rename_read __P((DB_ENV *, void *, __fop_rename_args **));
int __fop_file_remove_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, const DBT *, const DBT *, const DBT *, u_int32_t, u_int32_t));
int __fop_file_remove_read __P((DB_ENV *, void *, __fop_file_remove_args **));
@@ -25,14 +27,15 @@ int __fop_file_remove_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
int __fop_init_print __P((DB_ENV *, int (***)(DB_ENV *, DBT *, DB_LSN *, db_recops, void *), size_t *));
int __fop_create __P((DB_ENV *, DB_TXN *, DB_FH **, const char *, APPNAME, int, u_int32_t));
int __fop_remove __P((DB_ENV *, DB_TXN *, u_int8_t *, const char *, APPNAME, u_int32_t));
-int __fop_write __P((DB_ENV *, DB_TXN *, const char *, APPNAME, DB_FH *, u_int32_t, db_pgno_t, u_int32_t, u_int8_t *, u_int32_t, u_int32_t, u_int32_t));
-int __fop_rename __P((DB_ENV *, DB_TXN *, const char *, const char *, u_int8_t *, APPNAME, u_int32_t));
+int __fop_write __P((DB_ENV *, DB_TXN *, const char *, APPNAME, DB_FH *, u_int32_t, db_pgno_t, u_int32_t, void *, u_int32_t, u_int32_t, u_int32_t));
+int __fop_rename __P((DB_ENV *, DB_TXN *, const char *, const char *, u_int8_t *, APPNAME, int, u_int32_t));
int __fop_create_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
int __fop_remove_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
int __fop_write_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
int __fop_rename_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __fop_rename_noundo_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
int __fop_file_remove_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __fop_lock_handle __P((DB_ENV *, DB *, u_int32_t, db_lockmode_t, DB_LOCK *, u_int32_t));
+int __fop_lock_handle __P((DB_ENV *, DB *, DB_LOCKER *, db_lockmode_t, DB_LOCK *, u_int32_t));
int __fop_file_setup __P((DB *, DB_TXN *, const char *, int, u_int32_t, u_int32_t *));
int __fop_subdb_setup __P((DB *, DB_TXN *, const char *, const char *, int, u_int32_t));
int __fop_remove_setup __P((DB *, DB_TXN *, const char *, u_int32_t));
diff --git a/db/dbinc_auto/hash_ext.h b/db/dbinc_auto/hash_ext.h
index f821675ae..8407f64fb 100644
--- a/db/dbinc_auto/hash_ext.h
+++ b/db/dbinc_auto/hash_ext.h
@@ -7,12 +7,12 @@ extern "C" {
#endif
int __ham_quick_delete __P((DBC *));
-int __ham_c_init __P((DBC *));
-int __ham_c_count __P((DBC *, db_recno_t *));
-int __ham_c_dup __P((DBC *, DBC *));
+int __hamc_init __P((DBC *));
+int __hamc_count __P((DBC *, db_recno_t *));
+int __hamc_dup __P((DBC *, DBC *));
u_int32_t __ham_call_hash __P((DBC *, u_int8_t *, u_int32_t));
int __ham_init_dbt __P((DB_ENV *, DBT *, u_int32_t, void **, u_int32_t *));
-int __ham_c_update __P((DBC *, u_int32_t, int, int));
+int __hamc_update __P((DBC *, u_int32_t, db_ham_curadj, int));
int __ham_get_clist __P((DB *, db_pgno_t, u_int32_t, DBC ***));
int __ham_insdel_log __P((DB *, DB_TXN *, DB_LSN *, u_int32_t, u_int32_t, db_pgno_t, u_int32_t, DB_LSN *, const DBT *, const DBT *));
int __ham_insdel_read __P((DB_ENV *, void *, __ham_insdel_args **));
@@ -65,6 +65,7 @@ int __ham_dirty_meta __P((DBC *, u_int32_t));
int __ham_db_create __P((DB *));
int __ham_db_close __P((DB *));
int __ham_get_h_ffactor __P((DB *, u_int32_t *));
+int __ham_set_h_compare __P((DB *, int (*)(DB *, const DBT *, const DBT *)));
int __ham_get_h_nelem __P((DB *, u_int32_t *));
int __ham_open __P((DB *, DB_TXN *, const char * name, db_pgno_t, u_int32_t));
int __ham_metachk __P((DB *, const char *, HMETA *));
@@ -77,14 +78,16 @@ int __ham_item_last __P((DBC *, db_lockmode_t, db_pgno_t *));
int __ham_item_first __P((DBC *, db_lockmode_t, db_pgno_t *));
int __ham_item_prev __P((DBC *, db_lockmode_t, db_pgno_t *));
int __ham_item_next __P((DBC *, db_lockmode_t, db_pgno_t *));
-void __ham_putitem __P((DB *, PAGE *p, const DBT *, int));
-void __ham_reputpair __P((DB *, PAGE *, u_int32_t, const DBT *, const DBT *));
+int __ham_insertpair __P((DB *, DB_TXN *, PAGE *p, db_indx_t *indxp, const DBT *, const DBT *, int, int));
+int __ham_getindex __P((DB *, DB_TXN *, PAGE *, const DBT *, int, int *, db_indx_t *));
+int __ham_verify_sorted_page __P((DB *, DB_TXN *, PAGE *));
+int __ham_sort_page __P((DB *, DB_TXN *, PAGE **, PAGE *));
int __ham_del_pair __P((DBC *, int));
int __ham_replpair __P((DBC *, DBT *, u_int32_t));
void __ham_onpage_replace __P((DB *, PAGE *, u_int32_t, int32_t, u_int32_t, int, DBT *));
int __ham_split_page __P((DBC *, u_int32_t, u_int32_t));
int __ham_add_el __P((DBC *, const DBT *, const DBT *, int));
-void __ham_copy_item __P((DB *, PAGE *, u_int32_t, PAGE *));
+int __ham_copypair __P((DB *, DB_TXN *, PAGE *, u_int32_t, PAGE *, db_indx_t *));
int __ham_add_ovflpage __P((DBC *, PAGE *, int, PAGE **));
int __ham_get_cpage __P((DBC *, db_lockmode_t));
int __ham_next_cpage __P((DBC *, db_pgno_t));
@@ -112,6 +115,8 @@ int __ham_30_hashmeta __P((DB *, char *, u_int8_t *));
int __ham_30_sizefix __P((DB *, DB_FH *, char *, u_int8_t *));
int __ham_31_hashmeta __P((DB *, char *, u_int32_t, DB_FH *, PAGE *, int *));
int __ham_31_hash __P((DB *, char *, u_int32_t, DB_FH *, PAGE *, int *));
+int __ham_46_hashmeta __P((DB *, char *, u_int32_t, DB_FH *, PAGE *, int *));
+int __ham_46_hash __P((DB *, char *, u_int32_t, DB_FH *, PAGE *, int *));
int __ham_vrfy_meta __P((DB *, VRFY_DBINFO *, HMETA *, db_pgno_t, u_int32_t));
int __ham_vrfy __P((DB *, VRFY_DBINFO *, PAGE *, db_pgno_t, u_int32_t));
int __ham_vrfy_structure __P((DB *, VRFY_DBINFO *, db_pgno_t, u_int32_t));
diff --git a/db/dbinc_auto/int_def.in b/db/dbinc_auto/int_def.in
index f88b35dd2..8b59c85d8 100644
--- a/db/dbinc_auto/int_def.in
+++ b/db/dbinc_auto/int_def.in
@@ -22,8 +22,8 @@
#define __crdel_inmem_remove_recover __crdel_inmem_remove_recover@DB_VERSION_UNIQUE_NAME@
#define __db_master_open __db_master_open@DB_VERSION_UNIQUE_NAME@
#define __db_master_update __db_master_update@DB_VERSION_UNIQUE_NAME@
-#define __db_dbenv_setup __db_dbenv_setup@DB_VERSION_UNIQUE_NAME@
-#define __db_dbenv_mpool __db_dbenv_mpool@DB_VERSION_UNIQUE_NAME@
+#define __db_env_setup __db_env_setup@DB_VERSION_UNIQUE_NAME@
+#define __db_env_mpool __db_env_mpool@DB_VERSION_UNIQUE_NAME@
#define __db_close __db_close@DB_VERSION_UNIQUE_NAME@
#define __db_refresh __db_refresh@DB_VERSION_UNIQUE_NAME@
#define __db_log_page __db_log_page@DB_VERSION_UNIQUE_NAME@
@@ -86,26 +86,31 @@
#define __db_pg_init_print __db_pg_init_print@DB_VERSION_UNIQUE_NAME@
#define __db_pg_sort_print __db_pg_sort_print@DB_VERSION_UNIQUE_NAME@
#define __db_init_print __db_init_print@DB_VERSION_UNIQUE_NAME@
-#define __db_c_close __db_c_close@DB_VERSION_UNIQUE_NAME@
-#define __db_c_destroy __db_c_destroy@DB_VERSION_UNIQUE_NAME@
-#define __db_c_count __db_c_count@DB_VERSION_UNIQUE_NAME@
-#define __db_c_del __db_c_del@DB_VERSION_UNIQUE_NAME@
-#define __db_c_dup __db_c_dup@DB_VERSION_UNIQUE_NAME@
-#define __db_c_idup __db_c_idup@DB_VERSION_UNIQUE_NAME@
-#define __db_c_newopd __db_c_newopd@DB_VERSION_UNIQUE_NAME@
-#define __db_c_get __db_c_get@DB_VERSION_UNIQUE_NAME@
-#define __db_c_put __db_c_put@DB_VERSION_UNIQUE_NAME@
+#define __dbc_close __dbc_close@DB_VERSION_UNIQUE_NAME@
+#define __dbc_destroy __dbc_destroy@DB_VERSION_UNIQUE_NAME@
+#define __dbc_count __dbc_count@DB_VERSION_UNIQUE_NAME@
+#define __dbc_del __dbc_del@DB_VERSION_UNIQUE_NAME@
+#define __dbc_dup __dbc_dup@DB_VERSION_UNIQUE_NAME@
+#define __dbc_idup __dbc_idup@DB_VERSION_UNIQUE_NAME@
+#define __dbc_newopd __dbc_newopd@DB_VERSION_UNIQUE_NAME@
+#define __dbc_get __dbc_get@DB_VERSION_UNIQUE_NAME@
+#define __dbc_put __dbc_put@DB_VERSION_UNIQUE_NAME@
#define __db_duperr __db_duperr@DB_VERSION_UNIQUE_NAME@
-#define __db_c_secondary_get_pp __db_c_secondary_get_pp@DB_VERSION_UNIQUE_NAME@
-#define __db_c_pget __db_c_pget@DB_VERSION_UNIQUE_NAME@
-#define __db_c_del_primary __db_c_del_primary@DB_VERSION_UNIQUE_NAME@
+#define __dbc_secondary_get_pp __dbc_secondary_get_pp@DB_VERSION_UNIQUE_NAME@
+#define __dbc_pget __dbc_pget@DB_VERSION_UNIQUE_NAME@
+#define __dbc_del_primary __dbc_del_primary@DB_VERSION_UNIQUE_NAME@
#define __db_s_first __db_s_first@DB_VERSION_UNIQUE_NAME@
#define __db_s_next __db_s_next@DB_VERSION_UNIQUE_NAME@
#define __db_s_done __db_s_done@DB_VERSION_UNIQUE_NAME@
#define __db_partsize __db_partsize@DB_VERSION_UNIQUE_NAME@
+#ifdef DIAGNOSTIC
+#define __db_check_skeyset __db_check_skeyset@DB_VERSION_UNIQUE_NAME@
+#endif
#define __cdsgroup_begin __cdsgroup_begin@DB_VERSION_UNIQUE_NAME@
#define __db_pgin __db_pgin@DB_VERSION_UNIQUE_NAME@
#define __db_pgout __db_pgout@DB_VERSION_UNIQUE_NAME@
+#define __db_decrypt_pg __db_decrypt_pg@DB_VERSION_UNIQUE_NAME@
+#define __db_encrypt_and_checksum_pg __db_encrypt_and_checksum_pg@DB_VERSION_UNIQUE_NAME@
#define __db_metaswap __db_metaswap@DB_VERSION_UNIQUE_NAME@
#define __db_byteswap __db_byteswap@DB_VERSION_UNIQUE_NAME@
#define __db_dispatch __db_dispatch@DB_VERSION_UNIQUE_NAME@
@@ -131,6 +136,7 @@
#define __db_cursor_pp __db_cursor_pp@DB_VERSION_UNIQUE_NAME@
#define __db_cursor __db_cursor@DB_VERSION_UNIQUE_NAME@
#define __db_del_pp __db_del_pp@DB_VERSION_UNIQUE_NAME@
+#define __db_exists __db_exists@DB_VERSION_UNIQUE_NAME@
#define __db_fd_pp __db_fd_pp@DB_VERSION_UNIQUE_NAME@
#define __db_get_pp __db_get_pp@DB_VERSION_UNIQUE_NAME@
#define __db_get __db_get@DB_VERSION_UNIQUE_NAME@
@@ -142,14 +148,14 @@
#define __db_put_pp __db_put_pp@DB_VERSION_UNIQUE_NAME@
#define __db_compact_pp __db_compact_pp@DB_VERSION_UNIQUE_NAME@
#define __db_sync_pp __db_sync_pp@DB_VERSION_UNIQUE_NAME@
-#define __db_c_close_pp __db_c_close_pp@DB_VERSION_UNIQUE_NAME@
-#define __db_c_count_pp __db_c_count_pp@DB_VERSION_UNIQUE_NAME@
-#define __db_c_del_pp __db_c_del_pp@DB_VERSION_UNIQUE_NAME@
-#define __db_c_dup_pp __db_c_dup_pp@DB_VERSION_UNIQUE_NAME@
-#define __db_c_get_pp __db_c_get_pp@DB_VERSION_UNIQUE_NAME@
+#define __dbc_close_pp __dbc_close_pp@DB_VERSION_UNIQUE_NAME@
+#define __dbc_count_pp __dbc_count_pp@DB_VERSION_UNIQUE_NAME@
+#define __dbc_del_pp __dbc_del_pp@DB_VERSION_UNIQUE_NAME@
+#define __dbc_dup_pp __dbc_dup_pp@DB_VERSION_UNIQUE_NAME@
+#define __dbc_get_pp __dbc_get_pp@DB_VERSION_UNIQUE_NAME@
#define __db_secondary_close_pp __db_secondary_close_pp@DB_VERSION_UNIQUE_NAME@
-#define __db_c_pget_pp __db_c_pget_pp@DB_VERSION_UNIQUE_NAME@
-#define __db_c_put_pp __db_c_put_pp@DB_VERSION_UNIQUE_NAME@
+#define __dbc_pget_pp __dbc_pget_pp@DB_VERSION_UNIQUE_NAME@
+#define __dbc_put_pp __dbc_put_pp@DB_VERSION_UNIQUE_NAME@
#define __db_txn_auto_init __db_txn_auto_init@DB_VERSION_UNIQUE_NAME@
#define __db_txn_auto_resolve __db_txn_auto_resolve@DB_VERSION_UNIQUE_NAME@
#define __dbt_usercopy __dbt_usercopy@DB_VERSION_UNIQUE_NAME@
@@ -171,6 +177,7 @@
#define __db_lprint __db_lprint@DB_VERSION_UNIQUE_NAME@
#define __db_lget __db_lget@DB_VERSION_UNIQUE_NAME@
#define __db_lput __db_lput@DB_VERSION_UNIQUE_NAME@
+#define __db_create_internal __db_create_internal@DB_VERSION_UNIQUE_NAME@
#define __dbh_am_chk __dbh_am_chk@DB_VERSION_UNIQUE_NAME@
#define __db_get_flags __db_get_flags@DB_VERSION_UNIQUE_NAME@
#define __db_set_flags __db_set_flags@DB_VERSION_UNIQUE_NAME@
@@ -188,6 +195,7 @@
#define __db_ovref __db_ovref@DB_VERSION_UNIQUE_NAME@
#define __db_doff __db_doff@DB_VERSION_UNIQUE_NAME@
#define __db_moff __db_moff@DB_VERSION_UNIQUE_NAME@
+#define __db_coff __db_coff@DB_VERSION_UNIQUE_NAME@
#define __db_vrfy_overflow __db_vrfy_overflow@DB_VERSION_UNIQUE_NAME@
#define __db_vrfy_ovfl_structure __db_vrfy_ovfl_structure@DB_VERSION_UNIQUE_NAME@
#define __db_safe_goff __db_safe_goff@DB_VERSION_UNIQUE_NAME@
@@ -296,13 +304,13 @@
#define __bam_ca_rsplit __bam_ca_rsplit@DB_VERSION_UNIQUE_NAME@
#define __bam_ca_split __bam_ca_split@DB_VERSION_UNIQUE_NAME@
#define __bam_ca_undosplit __bam_ca_undosplit@DB_VERSION_UNIQUE_NAME@
-#define __bam_c_init __bam_c_init@DB_VERSION_UNIQUE_NAME@
-#define __bam_c_refresh __bam_c_refresh@DB_VERSION_UNIQUE_NAME@
-#define __bam_c_count __bam_c_count@DB_VERSION_UNIQUE_NAME@
-#define __bam_c_dup __bam_c_dup@DB_VERSION_UNIQUE_NAME@
+#define __bamc_init __bamc_init@DB_VERSION_UNIQUE_NAME@
+#define __bamc_refresh __bamc_refresh@DB_VERSION_UNIQUE_NAME@
+#define __bamc_count __bamc_count@DB_VERSION_UNIQUE_NAME@
+#define __bamc_dup __bamc_dup@DB_VERSION_UNIQUE_NAME@
#define __bam_bulk_overflow __bam_bulk_overflow@DB_VERSION_UNIQUE_NAME@
#define __bam_bulk_duplicates __bam_bulk_duplicates@DB_VERSION_UNIQUE_NAME@
-#define __bam_c_rget __bam_c_rget@DB_VERSION_UNIQUE_NAME@
+#define __bamc_rget __bamc_rget@DB_VERSION_UNIQUE_NAME@
#define __bam_opd_exists __bam_opd_exists@DB_VERSION_UNIQUE_NAME@
#define __bam_ditem __bam_ditem@DB_VERSION_UNIQUE_NAME@
#define __bam_adjindx __bam_adjindx@DB_VERSION_UNIQUE_NAME@
@@ -343,9 +351,9 @@
#define __bam_truncate __bam_truncate@DB_VERSION_UNIQUE_NAME@
#define __ram_open __ram_open@DB_VERSION_UNIQUE_NAME@
#define __ram_append __ram_append@DB_VERSION_UNIQUE_NAME@
-#define __ram_c_del __ram_c_del@DB_VERSION_UNIQUE_NAME@
-#define __ram_c_get __ram_c_get@DB_VERSION_UNIQUE_NAME@
-#define __ram_c_put __ram_c_put@DB_VERSION_UNIQUE_NAME@
+#define __ramc_del __ramc_del@DB_VERSION_UNIQUE_NAME@
+#define __ramc_get __ramc_get@DB_VERSION_UNIQUE_NAME@
+#define __ramc_put __ramc_put@DB_VERSION_UNIQUE_NAME@
#define __ram_ca __ram_ca@DB_VERSION_UNIQUE_NAME@
#define __ram_getno __ram_getno@DB_VERSION_UNIQUE_NAME@
#define __ram_writeback __ram_writeback@DB_VERSION_UNIQUE_NAME@
@@ -418,9 +426,6 @@
#define __bam_merge_print __bam_merge_print@DB_VERSION_UNIQUE_NAME@
#define __bam_pgno_print __bam_pgno_print@DB_VERSION_UNIQUE_NAME@
#define __bam_init_print __bam_init_print@DB_VERSION_UNIQUE_NAME@
-#ifndef HAVE_ABORT
-#define abort abort@DB_VERSION_UNIQUE_NAME@
-#endif
#ifndef HAVE_ATOI
#define atoi atoi@DB_VERSION_UNIQUE_NAME@
#endif
@@ -470,6 +475,9 @@
#ifndef HAVE_PRINTF
#define vfprintf vfprintf@DB_VERSION_UNIQUE_NAME@
#endif
+#ifndef HAVE_QSORT
+#define qsort qsort@DB_VERSION_UNIQUE_NAME@
+#endif
#ifndef HAVE_RAISE
#define raise raise@DB_VERSION_UNIQUE_NAME@
#endif
@@ -522,7 +530,6 @@
#define __crypto_region_init __crypto_region_init@DB_VERSION_UNIQUE_NAME@
#define __db_isbigendian __db_isbigendian@DB_VERSION_UNIQUE_NAME@
#define __db_byteorder __db_byteorder@DB_VERSION_UNIQUE_NAME@
-#define __db_difftime __db_difftime@DB_VERSION_UNIQUE_NAME@
#define __db_fchk __db_fchk@DB_VERSION_UNIQUE_NAME@
#define __db_fcchk __db_fcchk@DB_VERSION_UNIQUE_NAME@
#define __db_ferr __db_ferr@DB_VERSION_UNIQUE_NAME@
@@ -534,7 +541,6 @@
#endif
#define __db_panic_msg __db_panic_msg@DB_VERSION_UNIQUE_NAME@
#define __db_panic __db_panic@DB_VERSION_UNIQUE_NAME@
-#define __db_panic_set __db_panic_set@DB_VERSION_UNIQUE_NAME@
#define __db_unknown_error __db_unknown_error@DB_VERSION_UNIQUE_NAME@
#define __db_syserr __db_syserr@DB_VERSION_UNIQUE_NAME@
#define __db_err __db_err@DB_VERSION_UNIQUE_NAME@
@@ -542,6 +548,7 @@
#define __db_errcall __db_errcall@DB_VERSION_UNIQUE_NAME@
#define __db_errfile __db_errfile@DB_VERSION_UNIQUE_NAME@
#define __db_msgadd __db_msgadd@DB_VERSION_UNIQUE_NAME@
+#define __db_msgadd_ap __db_msgadd_ap@DB_VERSION_UNIQUE_NAME@
#define __db_msg __db_msg@DB_VERSION_UNIQUE_NAME@
#define __db_unknown_flag __db_unknown_flag@DB_VERSION_UNIQUE_NAME@
#define __db_unknown_type __db_unknown_type@DB_VERSION_UNIQUE_NAME@
@@ -560,6 +567,8 @@
#define __db_getulong __db_getulong@DB_VERSION_UNIQUE_NAME@
#define __db_idspace __db_idspace@DB_VERSION_UNIQUE_NAME@
#define __db_log2 __db_log2@DB_VERSION_UNIQUE_NAME@
+#define __db_tablesize __db_tablesize@DB_VERSION_UNIQUE_NAME@
+#define __db_hashinit __db_hashinit@DB_VERSION_UNIQUE_NAME@
#define __db_mkpath __db_mkpath@DB_VERSION_UNIQUE_NAME@
#define __db_util_arg __db_util_arg@DB_VERSION_UNIQUE_NAME@
#define __db_util_cache __db_util_cache@DB_VERSION_UNIQUE_NAME@
@@ -573,8 +582,8 @@
#define __aes_decrypt __aes_decrypt@DB_VERSION_UNIQUE_NAME@
#define __aes_encrypt __aes_encrypt@DB_VERSION_UNIQUE_NAME@
#define __aes_init __aes_init@DB_VERSION_UNIQUE_NAME@
-#define __crypto_dbenv_close __crypto_dbenv_close@DB_VERSION_UNIQUE_NAME@
-#define __crypto_region_destroy __crypto_region_destroy@DB_VERSION_UNIQUE_NAME@
+#define __crypto_env_close __crypto_env_close@DB_VERSION_UNIQUE_NAME@
+#define __crypto_env_refresh __crypto_env_refresh@DB_VERSION_UNIQUE_NAME@
#define __crypto_algsetup __crypto_algsetup@DB_VERSION_UNIQUE_NAME@
#define __crypto_decrypt_meta __crypto_decrypt_meta@DB_VERSION_UNIQUE_NAME@
#define __crypto_set_passwd __crypto_set_passwd@DB_VERSION_UNIQUE_NAME@
@@ -594,11 +603,14 @@
#define __db_cipherUpdateRounds __db_cipherUpdateRounds@DB_VERSION_UNIQUE_NAME@
#define __dbreg_setup __dbreg_setup@DB_VERSION_UNIQUE_NAME@
#define __dbreg_teardown __dbreg_teardown@DB_VERSION_UNIQUE_NAME@
+#define __dbreg_teardown_int __dbreg_teardown_int@DB_VERSION_UNIQUE_NAME@
#define __dbreg_new_id __dbreg_new_id@DB_VERSION_UNIQUE_NAME@
#define __dbreg_get_id __dbreg_get_id@DB_VERSION_UNIQUE_NAME@
#define __dbreg_assign_id __dbreg_assign_id@DB_VERSION_UNIQUE_NAME@
#define __dbreg_revoke_id __dbreg_revoke_id@DB_VERSION_UNIQUE_NAME@
+#define __dbreg_revoke_id_int __dbreg_revoke_id_int@DB_VERSION_UNIQUE_NAME@
#define __dbreg_close_id __dbreg_close_id@DB_VERSION_UNIQUE_NAME@
+#define __dbreg_close_id_int __dbreg_close_id_int@DB_VERSION_UNIQUE_NAME@
#define __dbreg_log_close __dbreg_log_close@DB_VERSION_UNIQUE_NAME@
#define __dbreg_log_id __dbreg_log_id@DB_VERSION_UNIQUE_NAME@
#define __dbreg_register_log __dbreg_register_log@DB_VERSION_UNIQUE_NAME@
@@ -613,6 +625,8 @@
#define __dbreg_rem_dbentry __dbreg_rem_dbentry@DB_VERSION_UNIQUE_NAME@
#define __dbreg_log_files __dbreg_log_files@DB_VERSION_UNIQUE_NAME@
#define __dbreg_close_files __dbreg_close_files@DB_VERSION_UNIQUE_NAME@
+#define __dbreg_close_file __dbreg_close_file@DB_VERSION_UNIQUE_NAME@
+#define __dbreg_mark_restored __dbreg_mark_restored@DB_VERSION_UNIQUE_NAME@
#define __dbreg_invalidate_files __dbreg_invalidate_files@DB_VERSION_UNIQUE_NAME@
#define __dbreg_id_to_db __dbreg_id_to_db@DB_VERSION_UNIQUE_NAME@
#define __dbreg_id_to_db_int __dbreg_id_to_db_int@DB_VERSION_UNIQUE_NAME@
@@ -621,14 +635,14 @@
#define __dbreg_get_name __dbreg_get_name@DB_VERSION_UNIQUE_NAME@
#define __dbreg_do_open __dbreg_do_open@DB_VERSION_UNIQUE_NAME@
#define __dbreg_lazy_id __dbreg_lazy_id@DB_VERSION_UNIQUE_NAME@
-#define __db_shalloc_init __db_shalloc_init@DB_VERSION_UNIQUE_NAME@
-#define __db_shalloc_size __db_shalloc_size@DB_VERSION_UNIQUE_NAME@
-#define __db_shalloc __db_shalloc@DB_VERSION_UNIQUE_NAME@
-#define __db_shalloc_free __db_shalloc_free@DB_VERSION_UNIQUE_NAME@
-#define __db_shalloc_sizeof __db_shalloc_sizeof@DB_VERSION_UNIQUE_NAME@
-#define __db_tablesize __db_tablesize@DB_VERSION_UNIQUE_NAME@
-#define __db_hashinit __db_hashinit@DB_VERSION_UNIQUE_NAME@
+#define __env_alloc_init __env_alloc_init@DB_VERSION_UNIQUE_NAME@
+#define __env_alloc_overhead __env_alloc_overhead@DB_VERSION_UNIQUE_NAME@
+#define __env_alloc_size __env_alloc_size@DB_VERSION_UNIQUE_NAME@
+#define __env_alloc __env_alloc@DB_VERSION_UNIQUE_NAME@
+#define __env_alloc_free __env_alloc_free@DB_VERSION_UNIQUE_NAME@
+#define __env_alloc_print __env_alloc_print@DB_VERSION_UNIQUE_NAME@
#define __env_read_db_config __env_read_db_config@DB_VERSION_UNIQUE_NAME@
+#define __config_split __config_split@DB_VERSION_UNIQUE_NAME@
#define __env_failchk_pp __env_failchk_pp@DB_VERSION_UNIQUE_NAME@
#define __env_thread_init __env_thread_init@DB_VERSION_UNIQUE_NAME@
#define __env_set_state __env_set_state@DB_VERSION_UNIQUE_NAME@
@@ -658,6 +672,7 @@
#define __db_mi_env __db_mi_env@DB_VERSION_UNIQUE_NAME@
#define __db_mi_open __db_mi_open@DB_VERSION_UNIQUE_NAME@
#define __db_env_config __db_env_config@DB_VERSION_UNIQUE_NAME@
+#define __db_appname __db_appname@DB_VERSION_UNIQUE_NAME@
#define __env_open_pp __env_open_pp@DB_VERSION_UNIQUE_NAME@
#define __env_open __env_open@DB_VERSION_UNIQUE_NAME@
#define __env_remove __env_remove@DB_VERSION_UNIQUE_NAME@
@@ -665,17 +680,20 @@
#define __env_close_pp __env_close_pp@DB_VERSION_UNIQUE_NAME@
#define __env_close __env_close@DB_VERSION_UNIQUE_NAME@
#define __env_get_open_flags __env_get_open_flags@DB_VERSION_UNIQUE_NAME@
-#define __db_appname __db_appname@DB_VERSION_UNIQUE_NAME@
#define __db_apprec __db_apprec@DB_VERSION_UNIQUE_NAME@
#define __log_backup __log_backup@DB_VERSION_UNIQUE_NAME@
#define __env_openfiles __env_openfiles@DB_VERSION_UNIQUE_NAME@
#define __env_init_rec __env_init_rec@DB_VERSION_UNIQUE_NAME@
-#define __db_e_attach __db_e_attach@DB_VERSION_UNIQUE_NAME@
-#define __db_e_golive __db_e_golive@DB_VERSION_UNIQUE_NAME@
-#define __db_e_detach __db_e_detach@DB_VERSION_UNIQUE_NAME@
-#define __db_e_remove __db_e_remove@DB_VERSION_UNIQUE_NAME@
-#define __db_r_attach __db_r_attach@DB_VERSION_UNIQUE_NAME@
-#define __db_r_detach __db_r_detach@DB_VERSION_UNIQUE_NAME@
+#define __env_attach __env_attach@DB_VERSION_UNIQUE_NAME@
+#define __env_turn_on __env_turn_on@DB_VERSION_UNIQUE_NAME@
+#define __env_turn_off __env_turn_off@DB_VERSION_UNIQUE_NAME@
+#define __env_panic_set __env_panic_set@DB_VERSION_UNIQUE_NAME@
+#define __env_ref_increment __env_ref_increment@DB_VERSION_UNIQUE_NAME@
+#define __env_ref_decrement __env_ref_decrement@DB_VERSION_UNIQUE_NAME@
+#define __env_detach __env_detach@DB_VERSION_UNIQUE_NAME@
+#define __env_remove_env __env_remove_env@DB_VERSION_UNIQUE_NAME@
+#define __env_region_attach __env_region_attach@DB_VERSION_UNIQUE_NAME@
+#define __env_region_detach __env_region_detach@DB_VERSION_UNIQUE_NAME@
#define __envreg_register __envreg_register@DB_VERSION_UNIQUE_NAME@
#define __envreg_unregister __envreg_unregister@DB_VERSION_UNIQUE_NAME@
#define __envreg_xunlock __envreg_xunlock@DB_VERSION_UNIQUE_NAME@
@@ -687,6 +705,36 @@
#define __db_dlbytes __db_dlbytes@DB_VERSION_UNIQUE_NAME@
#define __db_print_reginfo __db_print_reginfo@DB_VERSION_UNIQUE_NAME@
#define __db_stat_not_built __db_stat_not_built@DB_VERSION_UNIQUE_NAME@
+#ifndef HAVE_REPLICATION_THREADS
+#define __repmgr_close __repmgr_close@DB_VERSION_UNIQUE_NAME@
+#endif
+#ifndef HAVE_REPLICATION_THREADS
+#define __repmgr_add_remote_site __repmgr_add_remote_site@DB_VERSION_UNIQUE_NAME@
+#endif
+#ifndef HAVE_REPLICATION_THREADS
+#define __repmgr_get_ack_policy __repmgr_get_ack_policy@DB_VERSION_UNIQUE_NAME@
+#endif
+#ifndef HAVE_REPLICATION_THREADS
+#define __repmgr_set_ack_policy __repmgr_set_ack_policy@DB_VERSION_UNIQUE_NAME@
+#endif
+#ifndef HAVE_REPLICATION_THREADS
+#define __repmgr_set_local_site __repmgr_set_local_site@DB_VERSION_UNIQUE_NAME@
+#endif
+#ifndef HAVE_REPLICATION_THREADS
+#define __repmgr_site_list __repmgr_site_list@DB_VERSION_UNIQUE_NAME@
+#endif
+#ifndef HAVE_REPLICATION_THREADS
+#define __repmgr_start __repmgr_start@DB_VERSION_UNIQUE_NAME@
+#endif
+#ifndef HAVE_REPLICATION_THREADS
+#define __repmgr_stat_pp __repmgr_stat_pp@DB_VERSION_UNIQUE_NAME@
+#endif
+#ifndef HAVE_REPLICATION_THREADS
+#define __repmgr_stat_print_pp __repmgr_stat_print_pp@DB_VERSION_UNIQUE_NAME@
+#endif
+#ifndef HAVE_REPLICATION_THREADS
+#define __repmgr_handle_event __repmgr_handle_event@DB_VERSION_UNIQUE_NAME@
+#endif
#define __fop_create_log __fop_create_log@DB_VERSION_UNIQUE_NAME@
#define __fop_create_read __fop_create_read@DB_VERSION_UNIQUE_NAME@
#define __fop_remove_log __fop_remove_log@DB_VERSION_UNIQUE_NAME@
@@ -694,6 +742,8 @@
#define __fop_write_log __fop_write_log@DB_VERSION_UNIQUE_NAME@
#define __fop_write_read __fop_write_read@DB_VERSION_UNIQUE_NAME@
#define __fop_rename_log __fop_rename_log@DB_VERSION_UNIQUE_NAME@
+#define __fop_rename_noundo_log __fop_rename_noundo_log@DB_VERSION_UNIQUE_NAME@
+#define __fop_rename_int_log __fop_rename_int_log@DB_VERSION_UNIQUE_NAME@
#define __fop_rename_read __fop_rename_read@DB_VERSION_UNIQUE_NAME@
#define __fop_file_remove_log __fop_file_remove_log@DB_VERSION_UNIQUE_NAME@
#define __fop_file_remove_read __fop_file_remove_read@DB_VERSION_UNIQUE_NAME@
@@ -712,6 +762,7 @@
#define __fop_remove_recover __fop_remove_recover@DB_VERSION_UNIQUE_NAME@
#define __fop_write_recover __fop_write_recover@DB_VERSION_UNIQUE_NAME@
#define __fop_rename_recover __fop_rename_recover@DB_VERSION_UNIQUE_NAME@
+#define __fop_rename_noundo_recover __fop_rename_noundo_recover@DB_VERSION_UNIQUE_NAME@
#define __fop_file_remove_recover __fop_file_remove_recover@DB_VERSION_UNIQUE_NAME@
#define __fop_lock_handle __fop_lock_handle@DB_VERSION_UNIQUE_NAME@
#define __fop_file_setup __fop_file_setup@DB_VERSION_UNIQUE_NAME@
@@ -721,12 +772,12 @@
#define __fop_dummy __fop_dummy@DB_VERSION_UNIQUE_NAME@
#define __fop_dbrename __fop_dbrename@DB_VERSION_UNIQUE_NAME@
#define __ham_quick_delete __ham_quick_delete@DB_VERSION_UNIQUE_NAME@
-#define __ham_c_init __ham_c_init@DB_VERSION_UNIQUE_NAME@
-#define __ham_c_count __ham_c_count@DB_VERSION_UNIQUE_NAME@
-#define __ham_c_dup __ham_c_dup@DB_VERSION_UNIQUE_NAME@
+#define __hamc_init __hamc_init@DB_VERSION_UNIQUE_NAME@
+#define __hamc_count __hamc_count@DB_VERSION_UNIQUE_NAME@
+#define __hamc_dup __hamc_dup@DB_VERSION_UNIQUE_NAME@
#define __ham_call_hash __ham_call_hash@DB_VERSION_UNIQUE_NAME@
#define __ham_init_dbt __ham_init_dbt@DB_VERSION_UNIQUE_NAME@
-#define __ham_c_update __ham_c_update@DB_VERSION_UNIQUE_NAME@
+#define __hamc_update __hamc_update@DB_VERSION_UNIQUE_NAME@
#define __ham_get_clist __ham_get_clist@DB_VERSION_UNIQUE_NAME@
#define __ham_insdel_log __ham_insdel_log@DB_VERSION_UNIQUE_NAME@
#define __ham_insdel_read __ham_insdel_read@DB_VERSION_UNIQUE_NAME@
@@ -779,6 +830,7 @@
#define __ham_db_create __ham_db_create@DB_VERSION_UNIQUE_NAME@
#define __ham_db_close __ham_db_close@DB_VERSION_UNIQUE_NAME@
#define __ham_get_h_ffactor __ham_get_h_ffactor@DB_VERSION_UNIQUE_NAME@
+#define __ham_set_h_compare __ham_set_h_compare@DB_VERSION_UNIQUE_NAME@
#define __ham_get_h_nelem __ham_get_h_nelem@DB_VERSION_UNIQUE_NAME@
#define __ham_open __ham_open@DB_VERSION_UNIQUE_NAME@
#define __ham_metachk __ham_metachk@DB_VERSION_UNIQUE_NAME@
@@ -791,14 +843,16 @@
#define __ham_item_first __ham_item_first@DB_VERSION_UNIQUE_NAME@
#define __ham_item_prev __ham_item_prev@DB_VERSION_UNIQUE_NAME@
#define __ham_item_next __ham_item_next@DB_VERSION_UNIQUE_NAME@
-#define __ham_putitem __ham_putitem@DB_VERSION_UNIQUE_NAME@
-#define __ham_reputpair __ham_reputpair@DB_VERSION_UNIQUE_NAME@
+#define __ham_insertpair __ham_insertpair@DB_VERSION_UNIQUE_NAME@
+#define __ham_getindex __ham_getindex@DB_VERSION_UNIQUE_NAME@
+#define __ham_verify_sorted_page __ham_verify_sorted_page@DB_VERSION_UNIQUE_NAME@
+#define __ham_sort_page __ham_sort_page@DB_VERSION_UNIQUE_NAME@
#define __ham_del_pair __ham_del_pair@DB_VERSION_UNIQUE_NAME@
#define __ham_replpair __ham_replpair@DB_VERSION_UNIQUE_NAME@
#define __ham_onpage_replace __ham_onpage_replace@DB_VERSION_UNIQUE_NAME@
#define __ham_split_page __ham_split_page@DB_VERSION_UNIQUE_NAME@
#define __ham_add_el __ham_add_el@DB_VERSION_UNIQUE_NAME@
-#define __ham_copy_item __ham_copy_item@DB_VERSION_UNIQUE_NAME@
+#define __ham_copypair __ham_copypair@DB_VERSION_UNIQUE_NAME@
#define __ham_add_ovflpage __ham_add_ovflpage@DB_VERSION_UNIQUE_NAME@
#define __ham_get_cpage __ham_get_cpage@DB_VERSION_UNIQUE_NAME@
#define __ham_next_cpage __ham_next_cpage@DB_VERSION_UNIQUE_NAME@
@@ -826,6 +880,8 @@
#define __ham_30_sizefix __ham_30_sizefix@DB_VERSION_UNIQUE_NAME@
#define __ham_31_hashmeta __ham_31_hashmeta@DB_VERSION_UNIQUE_NAME@
#define __ham_31_hash __ham_31_hash@DB_VERSION_UNIQUE_NAME@
+#define __ham_46_hashmeta __ham_46_hashmeta@DB_VERSION_UNIQUE_NAME@
+#define __ham_46_hash __ham_46_hash@DB_VERSION_UNIQUE_NAME@
#define __ham_vrfy_meta __ham_vrfy_meta@DB_VERSION_UNIQUE_NAME@
#define __ham_vrfy __ham_vrfy@DB_VERSION_UNIQUE_NAME@
#define __ham_vrfy_structure __ham_vrfy_structure@DB_VERSION_UNIQUE_NAME@
@@ -859,14 +915,15 @@
#define __lock_id_free __lock_id_free@DB_VERSION_UNIQUE_NAME@
#define __lock_id_set __lock_id_set@DB_VERSION_UNIQUE_NAME@
#define __lock_getlocker __lock_getlocker@DB_VERSION_UNIQUE_NAME@
+#define __lock_getlocker_int __lock_getlocker_int@DB_VERSION_UNIQUE_NAME@
#define __lock_addfamilylocker __lock_addfamilylocker@DB_VERSION_UNIQUE_NAME@
#define __lock_freefamilylocker __lock_freefamilylocker@DB_VERSION_UNIQUE_NAME@
#define __lock_freelocker __lock_freelocker@DB_VERSION_UNIQUE_NAME@
#define __lock_fix_list __lock_fix_list@DB_VERSION_UNIQUE_NAME@
#define __lock_get_list __lock_get_list@DB_VERSION_UNIQUE_NAME@
#define __lock_list_print __lock_list_print@DB_VERSION_UNIQUE_NAME@
-#define __lock_dbenv_create __lock_dbenv_create@DB_VERSION_UNIQUE_NAME@
-#define __lock_dbenv_destroy __lock_dbenv_destroy@DB_VERSION_UNIQUE_NAME@
+#define __lock_env_create __lock_env_create@DB_VERSION_UNIQUE_NAME@
+#define __lock_env_destroy __lock_env_destroy@DB_VERSION_UNIQUE_NAME@
#define __lock_get_lk_conflicts __lock_get_lk_conflicts@DB_VERSION_UNIQUE_NAME@
#define __lock_set_lk_conflicts __lock_set_lk_conflicts@DB_VERSION_UNIQUE_NAME@
#define __lock_get_lk_detect __lock_get_lk_detect@DB_VERSION_UNIQUE_NAME@
@@ -880,7 +937,7 @@
#define __lock_get_env_timeout __lock_get_env_timeout@DB_VERSION_UNIQUE_NAME@
#define __lock_set_env_timeout __lock_set_env_timeout@DB_VERSION_UNIQUE_NAME@
#define __lock_open __lock_open@DB_VERSION_UNIQUE_NAME@
-#define __lock_dbenv_refresh __lock_dbenv_refresh@DB_VERSION_UNIQUE_NAME@
+#define __lock_env_refresh __lock_env_refresh@DB_VERSION_UNIQUE_NAME@
#define __lock_region_mutex_count __lock_region_mutex_count@DB_VERSION_UNIQUE_NAME@
#define __lock_stat_pp __lock_stat_pp@DB_VERSION_UNIQUE_NAME@
#define __lock_stat_print_pp __lock_stat_print_pp@DB_VERSION_UNIQUE_NAME@
@@ -897,7 +954,7 @@
#define __log_open __log_open@DB_VERSION_UNIQUE_NAME@
#define __log_find __log_find@DB_VERSION_UNIQUE_NAME@
#define __log_valid __log_valid@DB_VERSION_UNIQUE_NAME@
-#define __log_dbenv_refresh __log_dbenv_refresh@DB_VERSION_UNIQUE_NAME@
+#define __log_env_refresh __log_env_refresh@DB_VERSION_UNIQUE_NAME@
#define __log_get_cached_ckp_lsn __log_get_cached_ckp_lsn@DB_VERSION_UNIQUE_NAME@
#define __log_region_mutex_count __log_region_mutex_count@DB_VERSION_UNIQUE_NAME@
#define __log_vtruncate __log_vtruncate@DB_VERSION_UNIQUE_NAME@
@@ -919,12 +976,12 @@
#define __log_printf __log_printf@DB_VERSION_UNIQUE_NAME@
#define __log_cursor_pp __log_cursor_pp@DB_VERSION_UNIQUE_NAME@
#define __log_cursor __log_cursor@DB_VERSION_UNIQUE_NAME@
-#define __log_c_close __log_c_close@DB_VERSION_UNIQUE_NAME@
-#define __log_c_version __log_c_version@DB_VERSION_UNIQUE_NAME@
-#define __log_c_get __log_c_get@DB_VERSION_UNIQUE_NAME@
+#define __logc_close __logc_close@DB_VERSION_UNIQUE_NAME@
+#define __logc_version __logc_version@DB_VERSION_UNIQUE_NAME@
+#define __logc_get __logc_get@DB_VERSION_UNIQUE_NAME@
#define __log_rep_split __log_rep_split@DB_VERSION_UNIQUE_NAME@
-#define __log_dbenv_create __log_dbenv_create@DB_VERSION_UNIQUE_NAME@
-#define __log_dbenv_destroy __log_dbenv_destroy@DB_VERSION_UNIQUE_NAME@
+#define __log_env_create __log_env_create@DB_VERSION_UNIQUE_NAME@
+#define __log_env_destroy __log_env_destroy@DB_VERSION_UNIQUE_NAME@
#define __log_get_lg_bsize __log_get_lg_bsize@DB_VERSION_UNIQUE_NAME@
#define __log_set_lg_bsize __log_set_lg_bsize@DB_VERSION_UNIQUE_NAME@
#define __log_get_lg_filemode __log_get_lg_filemode@DB_VERSION_UNIQUE_NAME@
@@ -973,7 +1030,7 @@
#define __memp_set_ftype __memp_set_ftype@DB_VERSION_UNIQUE_NAME@
#define __memp_set_lsn_offset __memp_set_lsn_offset@DB_VERSION_UNIQUE_NAME@
#define __memp_set_pgcookie __memp_set_pgcookie@DB_VERSION_UNIQUE_NAME@
-#define __memp_last_pgno __memp_last_pgno@DB_VERSION_UNIQUE_NAME@
+#define __memp_get_last_pgno __memp_get_last_pgno@DB_VERSION_UNIQUE_NAME@
#define __memp_fn __memp_fn@DB_VERSION_UNIQUE_NAME@
#define __memp_fns __memp_fns@DB_VERSION_UNIQUE_NAME@
#define __memp_fopen_pp __memp_fopen_pp@DB_VERSION_UNIQUE_NAME@
@@ -984,13 +1041,13 @@
#define __memp_inmemlist __memp_inmemlist@DB_VERSION_UNIQUE_NAME@
#define __memp_fput_pp __memp_fput_pp@DB_VERSION_UNIQUE_NAME@
#define __memp_fput __memp_fput@DB_VERSION_UNIQUE_NAME@
-#define __memp_fset_pp __memp_fset_pp@DB_VERSION_UNIQUE_NAME@
-#define __memp_fset __memp_fset@DB_VERSION_UNIQUE_NAME@
#define __memp_dirty __memp_dirty@DB_VERSION_UNIQUE_NAME@
-#define __memp_dbenv_create __memp_dbenv_create@DB_VERSION_UNIQUE_NAME@
-#define __memp_dbenv_destroy __memp_dbenv_destroy@DB_VERSION_UNIQUE_NAME@
+#define __memp_env_create __memp_env_create@DB_VERSION_UNIQUE_NAME@
+#define __memp_env_destroy __memp_env_destroy@DB_VERSION_UNIQUE_NAME@
#define __memp_get_cachesize __memp_get_cachesize@DB_VERSION_UNIQUE_NAME@
#define __memp_set_cachesize __memp_set_cachesize@DB_VERSION_UNIQUE_NAME@
+#define __memp_set_config __memp_set_config@DB_VERSION_UNIQUE_NAME@
+#define __memp_get_config __memp_get_config@DB_VERSION_UNIQUE_NAME@
#define __memp_get_mp_max_openfd __memp_get_mp_max_openfd@DB_VERSION_UNIQUE_NAME@
#define __memp_set_mp_max_openfd __memp_set_mp_max_openfd@DB_VERSION_UNIQUE_NAME@
#define __memp_get_mp_max_write __memp_get_mp_max_write@DB_VERSION_UNIQUE_NAME@
@@ -1010,10 +1067,16 @@
#define __memp_bh_freeze __memp_bh_freeze@DB_VERSION_UNIQUE_NAME@
#define __memp_bh_thaw __memp_bh_thaw@DB_VERSION_UNIQUE_NAME@
#define __memp_open __memp_open@DB_VERSION_UNIQUE_NAME@
+#define __memp_init __memp_init@DB_VERSION_UNIQUE_NAME@
+#define __memp_max_regions __memp_max_regions@DB_VERSION_UNIQUE_NAME@
#define __memp_region_mutex_count __memp_region_mutex_count@DB_VERSION_UNIQUE_NAME@
-#define __memp_dbenv_refresh __memp_dbenv_refresh@DB_VERSION_UNIQUE_NAME@
+#define __memp_env_refresh __memp_env_refresh@DB_VERSION_UNIQUE_NAME@
#define __memp_register_pp __memp_register_pp@DB_VERSION_UNIQUE_NAME@
#define __memp_register __memp_register@DB_VERSION_UNIQUE_NAME@
+#define __memp_get_bucket __memp_get_bucket@DB_VERSION_UNIQUE_NAME@
+#define __memp_resize __memp_resize@DB_VERSION_UNIQUE_NAME@
+#define __memp_get_cache_max __memp_get_cache_max@DB_VERSION_UNIQUE_NAME@
+#define __memp_set_cache_max __memp_set_cache_max@DB_VERSION_UNIQUE_NAME@
#define __memp_stat_pp __memp_stat_pp@DB_VERSION_UNIQUE_NAME@
#define __memp_stat_print_pp __memp_stat_print_pp@DB_VERSION_UNIQUE_NAME@
#define __memp_stat_print __memp_stat_print@DB_VERSION_UNIQUE_NAME@
@@ -1053,9 +1116,10 @@
#define __db_pthread_mutex_unlock __db_pthread_mutex_unlock@DB_VERSION_UNIQUE_NAME@
#define __db_pthread_mutex_destroy __db_pthread_mutex_destroy@DB_VERSION_UNIQUE_NAME@
#define __mutex_open __mutex_open@DB_VERSION_UNIQUE_NAME@
-#define __mutex_dbenv_refresh __mutex_dbenv_refresh@DB_VERSION_UNIQUE_NAME@
+#define __mutex_env_refresh __mutex_env_refresh@DB_VERSION_UNIQUE_NAME@
#define __mutex_resource_return __mutex_resource_return@DB_VERSION_UNIQUE_NAME@
-#define __mutex_stat __mutex_stat@DB_VERSION_UNIQUE_NAME@
+#define __mutex_stat_pp __mutex_stat_pp@DB_VERSION_UNIQUE_NAME@
+#define __mutex_stat_print_pp __mutex_stat_print_pp@DB_VERSION_UNIQUE_NAME@
#define __mutex_stat_print __mutex_stat_print@DB_VERSION_UNIQUE_NAME@
#define __mutex_print_debug_single __mutex_print_debug_single@DB_VERSION_UNIQUE_NAME@
#define __mutex_print_debug_stats __mutex_print_debug_stats@DB_VERSION_UNIQUE_NAME@
@@ -1069,6 +1133,7 @@
#define __db_win32_mutex_lock __db_win32_mutex_lock@DB_VERSION_UNIQUE_NAME@
#define __db_win32_mutex_unlock __db_win32_mutex_unlock@DB_VERSION_UNIQUE_NAME@
#define __db_win32_mutex_destroy __db_win32_mutex_destroy@DB_VERSION_UNIQUE_NAME@
+#define __os_abort __os_abort@DB_VERSION_UNIQUE_NAME@
#define __os_abspath __os_abspath@DB_VERSION_UNIQUE_NAME@
#define __os_umalloc __os_umalloc@DB_VERSION_UNIQUE_NAME@
#define __os_urealloc __os_urealloc@DB_VERSION_UNIQUE_NAME@
@@ -1079,7 +1144,7 @@
#define __os_realloc __os_realloc@DB_VERSION_UNIQUE_NAME@
#define __os_free __os_free@DB_VERSION_UNIQUE_NAME@
#define __ua_memcpy __ua_memcpy@DB_VERSION_UNIQUE_NAME@
-#define __os_clock __os_clock@DB_VERSION_UNIQUE_NAME@
+#define __os_gettime __os_gettime@DB_VERSION_UNIQUE_NAME@
#define __os_fs_notzero __os_fs_notzero@DB_VERSION_UNIQUE_NAME@
#define __os_support_direct_io __os_support_direct_io@DB_VERSION_UNIQUE_NAME@
#define __os_support_db_register __os_support_db_register@DB_VERSION_UNIQUE_NAME@
@@ -1108,10 +1173,6 @@
#define __db_oflags __db_oflags@DB_VERSION_UNIQUE_NAME@
#define __db_omode __db_omode@DB_VERSION_UNIQUE_NAME@
#define __os_open __os_open@DB_VERSION_UNIQUE_NAME@
-#define __os_open_extend __os_open_extend@DB_VERSION_UNIQUE_NAME@
-#ifdef HAVE_QNX
-#define __os_shmname __os_shmname@DB_VERSION_UNIQUE_NAME@
-#endif
#define __os_id __os_id@DB_VERSION_UNIQUE_NAME@
#define __os_r_attach __os_r_attach@DB_VERSION_UNIQUE_NAME@
#define __os_r_detach __os_r_detach@DB_VERSION_UNIQUE_NAME@
@@ -1133,13 +1194,46 @@
#define __os_region_unlink __os_region_unlink@DB_VERSION_UNIQUE_NAME@
#define __os_unlink __os_unlink@DB_VERSION_UNIQUE_NAME@
#define __os_yield __os_yield@DB_VERSION_UNIQUE_NAME@
+#ifndef HAVE_FCLOSE
+#define fclose fclose@DB_VERSION_UNIQUE_NAME@
+#endif
+#ifndef HAVE_FGETC
+#define fgetc fgetc@DB_VERSION_UNIQUE_NAME@
+#endif
+#ifndef HAVE_FGETS
+#define fgets fgets@DB_VERSION_UNIQUE_NAME@
+#endif
+#ifndef HAVE_FOPEN
+#define fopen fopen@DB_VERSION_UNIQUE_NAME@
+#endif
+#ifndef HAVE_FWRITE
+#define fwrite fwrite@DB_VERSION_UNIQUE_NAME@
+#endif
+#ifndef HAVE_LOCALTIME
+#define localtime localtime@DB_VERSION_UNIQUE_NAME@
+#endif
+#ifndef HAVE_TIME
+#define time time@DB_VERSION_UNIQUE_NAME@
+#endif
+#ifdef HAVE_QNX
+#define __os_qnx_region_open __os_qnx_region_open@DB_VERSION_UNIQUE_NAME@
+#endif
+#ifdef HAVE_QNX
+#define __os_qnx_shmname __os_qnx_shmname@DB_VERSION_UNIQUE_NAME@
+#endif
+#ifndef HAVE_TIME
+#define time time@DB_VERSION_UNIQUE_NAME@
+#endif
#define __os_is_winnt __os_is_winnt@DB_VERSION_UNIQUE_NAME@
+#ifdef HAVE_REPLICATION_THREADS
#define __os_get_neterr __os_get_neterr@DB_VERSION_UNIQUE_NAME@
+#endif
+#define __os_mkdir __os_mkdir@DB_VERSION_UNIQUE_NAME@
#define __qam_position __qam_position@DB_VERSION_UNIQUE_NAME@
#define __qam_pitem __qam_pitem@DB_VERSION_UNIQUE_NAME@
#define __qam_append __qam_append@DB_VERSION_UNIQUE_NAME@
-#define __qam_c_dup __qam_c_dup@DB_VERSION_UNIQUE_NAME@
-#define __qam_c_init __qam_c_init@DB_VERSION_UNIQUE_NAME@
+#define __qamc_dup __qamc_dup@DB_VERSION_UNIQUE_NAME@
+#define __qamc_init __qamc_init@DB_VERSION_UNIQUE_NAME@
#define __qam_truncate __qam_truncate@DB_VERSION_UNIQUE_NAME@
#define __qam_delete __qam_delete@DB_VERSION_UNIQUE_NAME@
#define __qam_incfirst_log __qam_incfirst_log@DB_VERSION_UNIQUE_NAME@
@@ -1210,18 +1304,27 @@
#define __rep_init_cleanup __rep_init_cleanup@DB_VERSION_UNIQUE_NAME@
#define __rep_pggap_req __rep_pggap_req@DB_VERSION_UNIQUE_NAME@
#define __rep_finfo_alloc __rep_finfo_alloc@DB_VERSION_UNIQUE_NAME@
+#define __rep_remove_init_file __rep_remove_init_file@DB_VERSION_UNIQUE_NAME@
+#define __rep_reset_init __rep_reset_init@DB_VERSION_UNIQUE_NAME@
#define __rep_elect __rep_elect@DB_VERSION_UNIQUE_NAME@
#define __rep_vote1 __rep_vote1@DB_VERSION_UNIQUE_NAME@
#define __rep_vote2 __rep_vote2@DB_VERSION_UNIQUE_NAME@
-#define __rep_elect_master __rep_elect_master@DB_VERSION_UNIQUE_NAME@
+#define __rep_update_grant __rep_update_grant@DB_VERSION_UNIQUE_NAME@
+#define __rep_islease_granted __rep_islease_granted@DB_VERSION_UNIQUE_NAME@
+#define __rep_lease_table_alloc __rep_lease_table_alloc@DB_VERSION_UNIQUE_NAME@
+#define __rep_lease_grant __rep_lease_grant@DB_VERSION_UNIQUE_NAME@
+#define __rep_lease_check __rep_lease_check@DB_VERSION_UNIQUE_NAME@
+#define __rep_lease_refresh __rep_lease_refresh@DB_VERSION_UNIQUE_NAME@
+#define __rep_lease_expire __rep_lease_expire@DB_VERSION_UNIQUE_NAME@
+#define __rep_lease_waittime __rep_lease_waittime@DB_VERSION_UNIQUE_NAME@
#define __rep_allreq __rep_allreq@DB_VERSION_UNIQUE_NAME@
#define __rep_log __rep_log@DB_VERSION_UNIQUE_NAME@
#define __rep_bulk_log __rep_bulk_log@DB_VERSION_UNIQUE_NAME@
#define __rep_logreq __rep_logreq@DB_VERSION_UNIQUE_NAME@
#define __rep_loggap_req __rep_loggap_req@DB_VERSION_UNIQUE_NAME@
#define __rep_logready __rep_logready@DB_VERSION_UNIQUE_NAME@
-#define __rep_dbenv_create __rep_dbenv_create@DB_VERSION_UNIQUE_NAME@
-#define __rep_dbenv_destroy __rep_dbenv_destroy@DB_VERSION_UNIQUE_NAME@
+#define __rep_env_create __rep_env_create@DB_VERSION_UNIQUE_NAME@
+#define __rep_env_destroy __rep_env_destroy@DB_VERSION_UNIQUE_NAME@
#define __rep_get_config __rep_get_config@DB_VERSION_UNIQUE_NAME@
#define __rep_set_config __rep_set_config@DB_VERSION_UNIQUE_NAME@
#define __rep_start __rep_start@DB_VERSION_UNIQUE_NAME@
@@ -1237,19 +1340,21 @@
#define __rep_get_request __rep_get_request@DB_VERSION_UNIQUE_NAME@
#define __rep_set_request __rep_set_request@DB_VERSION_UNIQUE_NAME@
#define __rep_set_transport __rep_set_transport@DB_VERSION_UNIQUE_NAME@
+#define __rep_set_lease __rep_set_lease@DB_VERSION_UNIQUE_NAME@
#define __rep_flush __rep_flush@DB_VERSION_UNIQUE_NAME@
#define __rep_sync __rep_sync@DB_VERSION_UNIQUE_NAME@
#define __rep_process_message __rep_process_message@DB_VERSION_UNIQUE_NAME@
#define __rep_apply __rep_apply@DB_VERSION_UNIQUE_NAME@
#define __rep_process_txn __rep_process_txn@DB_VERSION_UNIQUE_NAME@
+#define __rep_resend_req __rep_resend_req@DB_VERSION_UNIQUE_NAME@
#define __rep_check_doreq __rep_check_doreq@DB_VERSION_UNIQUE_NAME@
#define __rep_open __rep_open@DB_VERSION_UNIQUE_NAME@
-#define __rep_region_destroy __rep_region_destroy@DB_VERSION_UNIQUE_NAME@
-#define __rep_dbenv_refresh __rep_dbenv_refresh@DB_VERSION_UNIQUE_NAME@
-#define __rep_close __rep_close@DB_VERSION_UNIQUE_NAME@
+#define __rep_env_refresh __rep_env_refresh@DB_VERSION_UNIQUE_NAME@
+#define __rep_env_close __rep_env_close@DB_VERSION_UNIQUE_NAME@
#define __rep_preclose __rep_preclose@DB_VERSION_UNIQUE_NAME@
#define __rep_closefiles __rep_closefiles@DB_VERSION_UNIQUE_NAME@
#define __rep_write_egen __rep_write_egen@DB_VERSION_UNIQUE_NAME@
+#define __rep_write_gen __rep_write_gen@DB_VERSION_UNIQUE_NAME@
#define __rep_stat_pp __rep_stat_pp@DB_VERSION_UNIQUE_NAME@
#define __rep_stat_print_pp __rep_stat_print_pp@DB_VERSION_UNIQUE_NAME@
#define __rep_stat_print __rep_stat_print@DB_VERSION_UNIQUE_NAME@
@@ -1268,13 +1373,15 @@
#define __db_rep_enter __db_rep_enter@DB_VERSION_UNIQUE_NAME@
#define __op_rep_enter __op_rep_enter@DB_VERSION_UNIQUE_NAME@
#define __op_rep_exit __op_rep_exit@DB_VERSION_UNIQUE_NAME@
-#define __rep_get_gen __rep_get_gen@DB_VERSION_UNIQUE_NAME@
#define __rep_lockout_api __rep_lockout_api@DB_VERSION_UNIQUE_NAME@
+#define __rep_lockout_apply __rep_lockout_apply@DB_VERSION_UNIQUE_NAME@
#define __rep_lockout_msg __rep_lockout_msg@DB_VERSION_UNIQUE_NAME@
#define __rep_send_throttle __rep_send_throttle@DB_VERSION_UNIQUE_NAME@
#define __rep_msg_to_old __rep_msg_to_old@DB_VERSION_UNIQUE_NAME@
#define __rep_msg_from_old __rep_msg_from_old@DB_VERSION_UNIQUE_NAME@
+#define __rep_print __rep_print@DB_VERSION_UNIQUE_NAME@
#define __rep_print_message __rep_print_message@DB_VERSION_UNIQUE_NAME@
+#define __rep_fire_event __rep_fire_event@DB_VERSION_UNIQUE_NAME@
#define __rep_verify __rep_verify@DB_VERSION_UNIQUE_NAME@
#define __rep_verify_fail __rep_verify_fail@DB_VERSION_UNIQUE_NAME@
#define __rep_verify_req __rep_verify_req@DB_VERSION_UNIQUE_NAME@
@@ -1286,12 +1393,13 @@
#define __repmgr_close __repmgr_close@DB_VERSION_UNIQUE_NAME@
#define __repmgr_set_ack_policy __repmgr_set_ack_policy@DB_VERSION_UNIQUE_NAME@
#define __repmgr_get_ack_policy __repmgr_get_ack_policy@DB_VERSION_UNIQUE_NAME@
-#define __repmgr_dbenv_create __repmgr_dbenv_create@DB_VERSION_UNIQUE_NAME@
-#define __repmgr_dbenv_destroy __repmgr_dbenv_destroy@DB_VERSION_UNIQUE_NAME@
+#define __repmgr_env_create __repmgr_env_create@DB_VERSION_UNIQUE_NAME@
+#define __repmgr_env_destroy __repmgr_env_destroy@DB_VERSION_UNIQUE_NAME@
#define __repmgr_stop_threads __repmgr_stop_threads@DB_VERSION_UNIQUE_NAME@
#define __repmgr_set_local_site __repmgr_set_local_site@DB_VERSION_UNIQUE_NAME@
#define __repmgr_add_remote_site __repmgr_add_remote_site@DB_VERSION_UNIQUE_NAME@
#define __repmgr_msg_thread __repmgr_msg_thread@DB_VERSION_UNIQUE_NAME@
+#define __repmgr_handle_event __repmgr_handle_event@DB_VERSION_UNIQUE_NAME@
#define __repmgr_stash_generation __repmgr_stash_generation@DB_VERSION_UNIQUE_NAME@
#define __repmgr_send __repmgr_send@DB_VERSION_UNIQUE_NAME@
#define __repmgr_send_one __repmgr_send_one@DB_VERSION_UNIQUE_NAME@
@@ -1321,7 +1429,6 @@
#define __repmgr_wake_main_thread __repmgr_wake_main_thread@DB_VERSION_UNIQUE_NAME@
#define __repmgr_writev __repmgr_writev@DB_VERSION_UNIQUE_NAME@
#define __repmgr_readv __repmgr_readv@DB_VERSION_UNIQUE_NAME@
-#define __repmgr_timeval_diff_current __repmgr_timeval_diff_current@DB_VERSION_UNIQUE_NAME@
#define __repmgr_select_loop __repmgr_select_loop@DB_VERSION_UNIQUE_NAME@
#define __repmgr_queue_create __repmgr_queue_create@DB_VERSION_UNIQUE_NAME@
#define __repmgr_queue_destroy __repmgr_queue_destroy@DB_VERSION_UNIQUE_NAME@
@@ -1336,8 +1443,39 @@
#define __repmgr_send_handshake __repmgr_send_handshake@DB_VERSION_UNIQUE_NAME@
#define __repmgr_read_from_site __repmgr_read_from_site@DB_VERSION_UNIQUE_NAME@
#define __repmgr_write_some __repmgr_write_some@DB_VERSION_UNIQUE_NAME@
+#define __repmgr_stat_pp __repmgr_stat_pp@DB_VERSION_UNIQUE_NAME@
+#define __repmgr_stat_print_pp __repmgr_stat_print_pp@DB_VERSION_UNIQUE_NAME@
+#define __repmgr_site_list __repmgr_site_list@DB_VERSION_UNIQUE_NAME@
+#ifndef HAVE_REPLICATION_THREADS
+#define __repmgr_close __repmgr_close@DB_VERSION_UNIQUE_NAME@
+#endif
+#ifndef HAVE_REPLICATION_THREADS
+#define __repmgr_add_remote_site __repmgr_add_remote_site@DB_VERSION_UNIQUE_NAME@
+#endif
+#ifndef HAVE_REPLICATION_THREADS
+#define __repmgr_get_ack_policy __repmgr_get_ack_policy@DB_VERSION_UNIQUE_NAME@
+#endif
+#ifndef HAVE_REPLICATION_THREADS
+#define __repmgr_set_ack_policy __repmgr_set_ack_policy@DB_VERSION_UNIQUE_NAME@
+#endif
+#ifndef HAVE_REPLICATION_THREADS
+#define __repmgr_set_local_site __repmgr_set_local_site@DB_VERSION_UNIQUE_NAME@
+#endif
+#ifndef HAVE_REPLICATION_THREADS
#define __repmgr_site_list __repmgr_site_list@DB_VERSION_UNIQUE_NAME@
-#define __repmgr_print_stats __repmgr_print_stats@DB_VERSION_UNIQUE_NAME@
+#endif
+#ifndef HAVE_REPLICATION_THREADS
+#define __repmgr_start __repmgr_start@DB_VERSION_UNIQUE_NAME@
+#endif
+#ifndef HAVE_REPLICATION_THREADS
+#define __repmgr_stat_pp __repmgr_stat_pp@DB_VERSION_UNIQUE_NAME@
+#endif
+#ifndef HAVE_REPLICATION_THREADS
+#define __repmgr_stat_print_pp __repmgr_stat_print_pp@DB_VERSION_UNIQUE_NAME@
+#endif
+#ifndef HAVE_REPLICATION_THREADS
+#define __repmgr_handle_event __repmgr_handle_event@DB_VERSION_UNIQUE_NAME@
+#endif
#define __repmgr_schedule_connection_attempt __repmgr_schedule_connection_attempt@DB_VERSION_UNIQUE_NAME@
#define __repmgr_reset_for_reading __repmgr_reset_for_reading@DB_VERSION_UNIQUE_NAME@
#define __repmgr_new_connection __repmgr_new_connection@DB_VERSION_UNIQUE_NAME@
@@ -1348,11 +1486,12 @@
#define __repmgr_add_dbt __repmgr_add_dbt@DB_VERSION_UNIQUE_NAME@
#define __repmgr_update_consumed __repmgr_update_consumed@DB_VERSION_UNIQUE_NAME@
#define __repmgr_prepare_my_addr __repmgr_prepare_my_addr@DB_VERSION_UNIQUE_NAME@
-#define __repmgr_timeval_cmp __repmgr_timeval_cmp@DB_VERSION_UNIQUE_NAME@
#define __repmgr_get_nsites __repmgr_get_nsites@DB_VERSION_UNIQUE_NAME@
#define __repmgr_thread_failure __repmgr_thread_failure@DB_VERSION_UNIQUE_NAME@
#define __repmgr_format_eid_loc __repmgr_format_eid_loc@DB_VERSION_UNIQUE_NAME@
#define __repmgr_format_site_loc __repmgr_format_site_loc@DB_VERSION_UNIQUE_NAME@
+#define __repmgr_timespec_diff_now __repmgr_timespec_diff_now@DB_VERSION_UNIQUE_NAME@
+#define __repmgr_repstart __repmgr_repstart@DB_VERSION_UNIQUE_NAME@
#define __repmgr_wsa_init __repmgr_wsa_init@DB_VERSION_UNIQUE_NAME@
#define __dbcl_env_set_rpc_server __dbcl_env_set_rpc_server@DB_VERSION_UNIQUE_NAME@
#define __dbcl_env_close_wrap __dbcl_env_close_wrap@DB_VERSION_UNIQUE_NAME@
@@ -1398,6 +1537,7 @@
#define __dbcl_db_get_lorder __dbcl_db_get_lorder@DB_VERSION_UNIQUE_NAME@
#define __dbcl_db_get_open_flags __dbcl_db_get_open_flags@DB_VERSION_UNIQUE_NAME@
#define __dbcl_db_get_pagesize __dbcl_db_get_pagesize@DB_VERSION_UNIQUE_NAME@
+#define __dbcl_db_get_priority __dbcl_db_get_priority@DB_VERSION_UNIQUE_NAME@
#define __dbcl_db_get_q_extentsize __dbcl_db_get_q_extentsize@DB_VERSION_UNIQUE_NAME@
#define __dbcl_db_get_re_delim __dbcl_db_get_re_delim@DB_VERSION_UNIQUE_NAME@
#define __dbcl_db_get_re_len __dbcl_db_get_re_len@DB_VERSION_UNIQUE_NAME@
@@ -1416,6 +1556,7 @@
#define __dbcl_db_set_h_nelem __dbcl_db_set_h_nelem@DB_VERSION_UNIQUE_NAME@
#define __dbcl_db_set_lorder __dbcl_db_set_lorder@DB_VERSION_UNIQUE_NAME@
#define __dbcl_db_set_pagesize __dbcl_db_set_pagesize@DB_VERSION_UNIQUE_NAME@
+#define __dbcl_db_set_priority __dbcl_db_set_priority@DB_VERSION_UNIQUE_NAME@
#define __dbcl_db_set_q_extentsize __dbcl_db_set_q_extentsize@DB_VERSION_UNIQUE_NAME@
#define __dbcl_db_set_re_delim __dbcl_db_set_re_delim@DB_VERSION_UNIQUE_NAME@
#define __dbcl_db_set_re_len __dbcl_db_set_re_len@DB_VERSION_UNIQUE_NAME@
@@ -1423,13 +1564,15 @@
#define __dbcl_db_stat __dbcl_db_stat@DB_VERSION_UNIQUE_NAME@
#define __dbcl_db_sync __dbcl_db_sync@DB_VERSION_UNIQUE_NAME@
#define __dbcl_db_truncate __dbcl_db_truncate@DB_VERSION_UNIQUE_NAME@
-#define __dbcl_dbc_c_close __dbcl_dbc_c_close@DB_VERSION_UNIQUE_NAME@
-#define __dbcl_dbc_c_count __dbcl_dbc_c_count@DB_VERSION_UNIQUE_NAME@
-#define __dbcl_dbc_c_del __dbcl_dbc_c_del@DB_VERSION_UNIQUE_NAME@
-#define __dbcl_dbc_c_dup __dbcl_dbc_c_dup@DB_VERSION_UNIQUE_NAME@
-#define __dbcl_dbc_c_get __dbcl_dbc_c_get@DB_VERSION_UNIQUE_NAME@
-#define __dbcl_dbc_c_pget __dbcl_dbc_c_pget@DB_VERSION_UNIQUE_NAME@
-#define __dbcl_dbc_c_put __dbcl_dbc_c_put@DB_VERSION_UNIQUE_NAME@
+#define __dbcl_dbc_close __dbcl_dbc_close@DB_VERSION_UNIQUE_NAME@
+#define __dbcl_dbc_count __dbcl_dbc_count@DB_VERSION_UNIQUE_NAME@
+#define __dbcl_dbc_del __dbcl_dbc_del@DB_VERSION_UNIQUE_NAME@
+#define __dbcl_dbc_dup __dbcl_dbc_dup@DB_VERSION_UNIQUE_NAME@
+#define __dbcl_dbc_get __dbcl_dbc_get@DB_VERSION_UNIQUE_NAME@
+#define __dbcl_dbc_get_priority __dbcl_dbc_get_priority@DB_VERSION_UNIQUE_NAME@
+#define __dbcl_dbc_pget __dbcl_dbc_pget@DB_VERSION_UNIQUE_NAME@
+#define __dbcl_dbc_put __dbcl_dbc_put@DB_VERSION_UNIQUE_NAME@
+#define __dbcl_dbc_set_priority __dbcl_dbc_set_priority@DB_VERSION_UNIQUE_NAME@
#define __dbcl_txn_abort __dbcl_txn_abort@DB_VERSION_UNIQUE_NAME@
#define __dbcl_txn_commit __dbcl_txn_commit@DB_VERSION_UNIQUE_NAME@
#define __dbcl_txn_discard __dbcl_txn_discard@DB_VERSION_UNIQUE_NAME@
@@ -1460,12 +1603,12 @@
#define __dbcl_db_truncate_ret __dbcl_db_truncate_ret@DB_VERSION_UNIQUE_NAME@
#define __dbcl_db_cursor_ret __dbcl_db_cursor_ret@DB_VERSION_UNIQUE_NAME@
#define __dbcl_db_join_ret __dbcl_db_join_ret@DB_VERSION_UNIQUE_NAME@
-#define __dbcl_dbc_c_close_ret __dbcl_dbc_c_close_ret@DB_VERSION_UNIQUE_NAME@
-#define __dbcl_dbc_c_count_ret __dbcl_dbc_c_count_ret@DB_VERSION_UNIQUE_NAME@
-#define __dbcl_dbc_c_dup_ret __dbcl_dbc_c_dup_ret@DB_VERSION_UNIQUE_NAME@
-#define __dbcl_dbc_c_get_ret __dbcl_dbc_c_get_ret@DB_VERSION_UNIQUE_NAME@
-#define __dbcl_dbc_c_pget_ret __dbcl_dbc_c_pget_ret@DB_VERSION_UNIQUE_NAME@
-#define __dbcl_dbc_c_put_ret __dbcl_dbc_c_put_ret@DB_VERSION_UNIQUE_NAME@
+#define __dbcl_dbc_close_ret __dbcl_dbc_close_ret@DB_VERSION_UNIQUE_NAME@
+#define __dbcl_dbc_count_ret __dbcl_dbc_count_ret@DB_VERSION_UNIQUE_NAME@
+#define __dbcl_dbc_dup_ret __dbcl_dbc_dup_ret@DB_VERSION_UNIQUE_NAME@
+#define __dbcl_dbc_get_ret __dbcl_dbc_get_ret@DB_VERSION_UNIQUE_NAME@
+#define __dbcl_dbc_pget_ret __dbcl_dbc_pget_ret@DB_VERSION_UNIQUE_NAME@
+#define __dbcl_dbc_put_ret __dbcl_dbc_put_ret@DB_VERSION_UNIQUE_NAME@
#define __env_get_cachesize_proc __env_get_cachesize_proc@DB_VERSION_UNIQUE_NAME@
#define __env_set_cachesize_proc __env_set_cachesize_proc@DB_VERSION_UNIQUE_NAME@
#define __env_cdsgroup_begin_proc __env_cdsgroup_begin_proc@DB_VERSION_UNIQUE_NAME@
@@ -1514,6 +1657,8 @@
#define __db_set_pagesize_proc __db_set_pagesize_proc@DB_VERSION_UNIQUE_NAME@
#define __db_pget_proc __db_pget_proc@DB_VERSION_UNIQUE_NAME@
#define __db_put_proc __db_put_proc@DB_VERSION_UNIQUE_NAME@
+#define __db_get_priority_proc __db_get_priority_proc@DB_VERSION_UNIQUE_NAME@
+#define __db_set_priority_proc __db_set_priority_proc@DB_VERSION_UNIQUE_NAME@
#define __db_get_re_delim_proc __db_get_re_delim_proc@DB_VERSION_UNIQUE_NAME@
#define __db_set_re_delim_proc __db_set_re_delim_proc@DB_VERSION_UNIQUE_NAME@
#define __db_get_re_len_proc __db_get_re_len_proc@DB_VERSION_UNIQUE_NAME@
@@ -1527,13 +1672,15 @@
#define __db_truncate_proc __db_truncate_proc@DB_VERSION_UNIQUE_NAME@
#define __db_cursor_proc __db_cursor_proc@DB_VERSION_UNIQUE_NAME@
#define __db_join_proc __db_join_proc@DB_VERSION_UNIQUE_NAME@
-#define __dbc_c_close_proc __dbc_c_close_proc@DB_VERSION_UNIQUE_NAME@
-#define __dbc_c_count_proc __dbc_c_count_proc@DB_VERSION_UNIQUE_NAME@
-#define __dbc_c_del_proc __dbc_c_del_proc@DB_VERSION_UNIQUE_NAME@
-#define __dbc_c_dup_proc __dbc_c_dup_proc@DB_VERSION_UNIQUE_NAME@
-#define __dbc_c_get_proc __dbc_c_get_proc@DB_VERSION_UNIQUE_NAME@
-#define __dbc_c_pget_proc __dbc_c_pget_proc@DB_VERSION_UNIQUE_NAME@
-#define __dbc_c_put_proc __dbc_c_put_proc@DB_VERSION_UNIQUE_NAME@
+#define __dbc_close_proc __dbc_close_proc@DB_VERSION_UNIQUE_NAME@
+#define __dbc_count_proc __dbc_count_proc@DB_VERSION_UNIQUE_NAME@
+#define __dbc_del_proc __dbc_del_proc@DB_VERSION_UNIQUE_NAME@
+#define __dbc_dup_proc __dbc_dup_proc@DB_VERSION_UNIQUE_NAME@
+#define __dbc_get_proc __dbc_get_proc@DB_VERSION_UNIQUE_NAME@
+#define __dbc_pget_proc __dbc_pget_proc@DB_VERSION_UNIQUE_NAME@
+#define __dbc_put_proc __dbc_put_proc@DB_VERSION_UNIQUE_NAME@
+#define __dbc_get_priority_proc __dbc_get_priority_proc@DB_VERSION_UNIQUE_NAME@
+#define __dbc_set_priority_proc __dbc_set_priority_proc@DB_VERSION_UNIQUE_NAME@
#define __dbsrv_settimeout __dbsrv_settimeout@DB_VERSION_UNIQUE_NAME@
#define __dbclear_ctp __dbclear_ctp@DB_VERSION_UNIQUE_NAME@
#define __dbdel_ctp __dbdel_ctp@DB_VERSION_UNIQUE_NAME@
@@ -1620,13 +1767,16 @@
#define tcl_RepElect tcl_RepElect@DB_VERSION_UNIQUE_NAME@
#define tcl_RepFlush tcl_RepFlush@DB_VERSION_UNIQUE_NAME@
#define tcl_RepSync tcl_RepSync@DB_VERSION_UNIQUE_NAME@
+#define tcl_RepLease tcl_RepLease@DB_VERSION_UNIQUE_NAME@
#define tcl_RepLimit tcl_RepLimit@DB_VERSION_UNIQUE_NAME@
#define tcl_RepRequest tcl_RepRequest@DB_VERSION_UNIQUE_NAME@
+#define tcl_RepNoarchiveTimeout tcl_RepNoarchiveTimeout@DB_VERSION_UNIQUE_NAME@
#define tcl_RepTransport tcl_RepTransport@DB_VERSION_UNIQUE_NAME@
#define tcl_RepStart tcl_RepStart@DB_VERSION_UNIQUE_NAME@
#define tcl_RepProcessMessage tcl_RepProcessMessage@DB_VERSION_UNIQUE_NAME@
#define tcl_RepStat tcl_RepStat@DB_VERSION_UNIQUE_NAME@
#define tcl_RepMgr tcl_RepMgr@DB_VERSION_UNIQUE_NAME@
+#define tcl_RepMgrStat tcl_RepMgrStat@DB_VERSION_UNIQUE_NAME@
#define seq_Cmd seq_Cmd@DB_VERSION_UNIQUE_NAME@
#define _TxnInfoDelete _TxnInfoDelete@DB_VERSION_UNIQUE_NAME@
#define tcl_TxnCheckpoint tcl_TxnCheckpoint@DB_VERSION_UNIQUE_NAME@
@@ -1681,8 +1831,8 @@
#define __txn_getckp __txn_getckp@DB_VERSION_UNIQUE_NAME@
#define __txn_updateckp __txn_updateckp@DB_VERSION_UNIQUE_NAME@
#define __txn_failchk __txn_failchk@DB_VERSION_UNIQUE_NAME@
-#define __txn_dbenv_create __txn_dbenv_create@DB_VERSION_UNIQUE_NAME@
-#define __txn_dbenv_destroy __txn_dbenv_destroy@DB_VERSION_UNIQUE_NAME@
+#define __txn_env_create __txn_env_create@DB_VERSION_UNIQUE_NAME@
+#define __txn_env_destroy __txn_env_destroy@DB_VERSION_UNIQUE_NAME@
#define __txn_get_tx_max __txn_get_tx_max@DB_VERSION_UNIQUE_NAME@
#define __txn_set_tx_max __txn_set_tx_max@DB_VERSION_UNIQUE_NAME@
#define __txn_get_tx_timestamp __txn_get_tx_timestamp@DB_VERSION_UNIQUE_NAME@
@@ -1702,7 +1852,8 @@
#define __txn_openfiles __txn_openfiles@DB_VERSION_UNIQUE_NAME@
#define __txn_open __txn_open@DB_VERSION_UNIQUE_NAME@
#define __txn_findlastckp __txn_findlastckp@DB_VERSION_UNIQUE_NAME@
-#define __txn_dbenv_refresh __txn_dbenv_refresh@DB_VERSION_UNIQUE_NAME@
+#define __txn_env_refresh __txn_env_refresh@DB_VERSION_UNIQUE_NAME@
+#define __txn_region_mutex_count __txn_region_mutex_count@DB_VERSION_UNIQUE_NAME@
#define __txn_id_set __txn_id_set@DB_VERSION_UNIQUE_NAME@
#define __txn_oldest_reader __txn_oldest_reader@DB_VERSION_UNIQUE_NAME@
#define __txn_add_buffer __txn_add_buffer@DB_VERSION_UNIQUE_NAME@
@@ -1716,6 +1867,8 @@
#define __txn_lockevent __txn_lockevent@DB_VERSION_UNIQUE_NAME@
#define __txn_remlock __txn_remlock@DB_VERSION_UNIQUE_NAME@
#define __txn_doevents __txn_doevents@DB_VERSION_UNIQUE_NAME@
+#define __txn_record_fname __txn_record_fname@DB_VERSION_UNIQUE_NAME@
+#define __txn_dref_fname __txn_dref_fname@DB_VERSION_UNIQUE_NAME@
#define __xa_get_txn __xa_get_txn@DB_VERSION_UNIQUE_NAME@
#define __db_xa_create __db_xa_create@DB_VERSION_UNIQUE_NAME@
#define __db_rmid_to_env __db_rmid_to_env@DB_VERSION_UNIQUE_NAME@
diff --git a/db/dbinc_auto/lock_ext.h b/db/dbinc_auto/lock_ext.h
index f84f27483..3a067bc4b 100644
--- a/db/dbinc_auto/lock_ext.h
+++ b/db/dbinc_auto/lock_ext.h
@@ -7,33 +7,34 @@ extern "C" {
#endif
int __lock_vec_pp __P((DB_ENV *, u_int32_t, u_int32_t, DB_LOCKREQ *, int, DB_LOCKREQ **));
-int __lock_vec __P((DB_ENV *, u_int32_t, u_int32_t, DB_LOCKREQ *, int, DB_LOCKREQ **));
+int __lock_vec __P((DB_ENV *, DB_LOCKER *, u_int32_t, DB_LOCKREQ *, int, DB_LOCKREQ **));
int __lock_get_pp __P((DB_ENV *, u_int32_t, u_int32_t, const DBT *, db_lockmode_t, DB_LOCK *));
-int __lock_get __P((DB_ENV *, u_int32_t, u_int32_t, const DBT *, db_lockmode_t, DB_LOCK *));
-int __lock_get_internal __P((DB_LOCKTAB *, u_int32_t, u_int32_t, const DBT *, db_lockmode_t, db_timeout_t, DB_LOCK *));
+int __lock_get __P((DB_ENV *, DB_LOCKER *, u_int32_t, const DBT *, db_lockmode_t, DB_LOCK *));
+int __lock_get_internal __P((DB_LOCKTAB *, DB_LOCKER *, u_int32_t, const DBT *, db_lockmode_t, db_timeout_t, DB_LOCK *));
int __lock_put_pp __P((DB_ENV *, DB_LOCK *));
int __lock_put __P((DB_ENV *, DB_LOCK *));
int __lock_downgrade __P((DB_ENV *, DB_LOCK *, db_lockmode_t, u_int32_t));
-int __lock_locker_is_parent __P((DB_ENV *, u_int32_t, u_int32_t, int *));
+int __lock_locker_is_parent __P((DB_ENV *, DB_LOCKER *, DB_LOCKER *, int *));
int __lock_promote __P((DB_LOCKTAB *, DB_LOCKOBJ *, int *, u_int32_t));
int __lock_detect_pp __P((DB_ENV *, u_int32_t, u_int32_t, int *));
int __lock_detect __P((DB_ENV *, u_int32_t, int *));
int __lock_failchk __P((DB_ENV *));
int __lock_id_pp __P((DB_ENV *, u_int32_t *));
int __lock_id __P((DB_ENV *, u_int32_t *, DB_LOCKER **));
-void __lock_set_thread_id __P((DB_LOCKER *, pid_t, db_threadid_t));
+void __lock_set_thread_id __P((void *, pid_t, db_threadid_t));
int __lock_id_free_pp __P((DB_ENV *, u_int32_t));
-int __lock_id_free __P((DB_ENV *, u_int32_t));
+int __lock_id_free __P((DB_ENV *, DB_LOCKER *));
int __lock_id_set __P((DB_ENV *, u_int32_t, u_int32_t));
-int __lock_getlocker __P((DB_LOCKTAB *, u_int32_t, u_int32_t, int, DB_LOCKER **));
+int __lock_getlocker __P((DB_LOCKTAB *, u_int32_t, int, DB_LOCKER **));
+int __lock_getlocker_int __P((DB_LOCKTAB *, u_int32_t, int, DB_LOCKER **));
int __lock_addfamilylocker __P((DB_ENV *, u_int32_t, u_int32_t));
-int __lock_freefamilylocker __P((DB_LOCKTAB *, u_int32_t));
-void __lock_freelocker __P((DB_LOCKTAB *, DB_LOCKREGION *, DB_LOCKER *, u_int32_t));
+int __lock_freefamilylocker __P((DB_LOCKTAB *, DB_LOCKER *));
+int __lock_freelocker __P((DB_LOCKTAB *, DB_LOCKREGION *, DB_LOCKER *));
int __lock_fix_list __P((DB_ENV *, DBT *, u_int32_t));
-int __lock_get_list __P((DB_ENV *, u_int32_t, u_int32_t, db_lockmode_t, DBT *));
+int __lock_get_list __P((DB_ENV *, DB_LOCKER *, u_int32_t, db_lockmode_t, DBT *));
void __lock_list_print __P((DB_ENV *, DBT *));
-int __lock_dbenv_create __P((DB_ENV *));
-void __lock_dbenv_destroy __P((DB_ENV *));
+int __lock_env_create __P((DB_ENV *));
+void __lock_env_destroy __P((DB_ENV *));
int __lock_get_lk_conflicts __P((DB_ENV *, const u_int8_t **, int *));
int __lock_set_lk_conflicts __P((DB_ENV *, u_int8_t *, int));
int __lock_get_lk_detect __P((DB_ENV *, u_int32_t *));
@@ -46,18 +47,18 @@ int __lock_get_lk_max_objects __P((DB_ENV *, u_int32_t *));
int __lock_set_lk_max_objects __P((DB_ENV *, u_int32_t));
int __lock_get_env_timeout __P((DB_ENV *, db_timeout_t *, u_int32_t));
int __lock_set_env_timeout __P((DB_ENV *, db_timeout_t, u_int32_t));
-int __lock_open __P((DB_ENV *));
-int __lock_dbenv_refresh __P((DB_ENV *));
+int __lock_open __P((DB_ENV *, int));
+int __lock_env_refresh __P((DB_ENV *));
u_int32_t __lock_region_mutex_count __P((DB_ENV *));
int __lock_stat_pp __P((DB_ENV *, DB_LOCK_STAT **, u_int32_t));
int __lock_stat_print_pp __P((DB_ENV *, u_int32_t));
int __lock_stat_print __P((DB_ENV *, u_int32_t));
void __lock_printlock __P((DB_LOCKTAB *, DB_MSGBUF *mbp, struct __db_lock *, int));
-int __lock_set_timeout __P(( DB_ENV *, u_int32_t, db_timeout_t, u_int32_t));
-int __lock_set_timeout_internal __P((DB_ENV *, u_int32_t, db_timeout_t, u_int32_t));
-int __lock_inherit_timeout __P(( DB_ENV *, u_int32_t, u_int32_t));
-void __lock_expires __P((DB_ENV *, db_timeval_t *, db_timeout_t));
-int __lock_expired __P((DB_ENV *, db_timeval_t *, db_timeval_t *));
+int __lock_set_timeout __P((DB_ENV *, DB_LOCKER *, db_timeout_t, u_int32_t));
+int __lock_set_timeout_internal __P((DB_ENV *, DB_LOCKER *, db_timeout_t, u_int32_t));
+int __lock_inherit_timeout __P((DB_ENV *, DB_LOCKER *, DB_LOCKER *));
+void __lock_expires __P((DB_ENV *, db_timespec *, db_timeout_t));
+int __lock_expired __P((DB_ENV *, db_timespec *, db_timespec *));
u_int32_t __lock_ohash __P((const DBT *));
u_int32_t __lock_lhash __P((DB_LOCKOBJ *));
int __lock_nomem __P((DB_ENV *, const char *));
diff --git a/db/dbinc_auto/log_ext.h b/db/dbinc_auto/log_ext.h
index a231bc23e..0170c2c1d 100644
--- a/db/dbinc_auto/log_ext.h
+++ b/db/dbinc_auto/log_ext.h
@@ -6,15 +6,15 @@
extern "C" {
#endif
-int __log_open __P((DB_ENV *));
+int __log_open __P((DB_ENV *, int));
int __log_find __P((DB_LOG *, int, u_int32_t *, logfile_validity *));
int __log_valid __P((DB_LOG *, u_int32_t, int, DB_FH **, u_int32_t, logfile_validity *, u_int32_t *));
-int __log_dbenv_refresh __P((DB_ENV *));
+int __log_env_refresh __P((DB_ENV *));
int __log_get_cached_ckp_lsn __P((DB_ENV *, DB_LSN *));
u_int32_t __log_region_mutex_count __P((DB_ENV *));
int __log_vtruncate __P((DB_ENV *, DB_LSN *, DB_LSN *, DB_LSN *));
int __log_is_outdated __P((DB_ENV *, u_int32_t, int *));
-int __log_zero __P((DB_ENV *, DB_LSN *, DB_LSN *));
+int __log_zero __P((DB_ENV *, DB_LSN *));
int __log_inmem_lsnoff __P((DB_LOG *, DB_LSN *, size_t *));
int __log_inmem_newfile __P((DB_LOG *, u_int32_t));
int __log_inmem_chkspace __P((DB_LOG *, size_t));
@@ -31,12 +31,12 @@ int __log_printf_pp __P((DB_ENV *, DB_TXN *, const char *, va_list));
int __log_printf __P((DB_ENV *, DB_TXN *, const char *, ...)) __attribute__ ((__format__ (__printf__, 3, 4)));
int __log_cursor_pp __P((DB_ENV *, DB_LOGC **, u_int32_t));
int __log_cursor __P((DB_ENV *, DB_LOGC **));
-int __log_c_close __P((DB_LOGC *));
-int __log_c_version __P((DB_LOGC *, u_int32_t *));
-int __log_c_get __P((DB_LOGC *, DB_LSN *, DBT *, u_int32_t));
+int __logc_close __P((DB_LOGC *));
+int __logc_version __P((DB_LOGC *, u_int32_t *));
+int __logc_get __P((DB_LOGC *, DB_LSN *, DBT *, u_int32_t));
int __log_rep_split __P((DB_ENV *, REP_CONTROL *, DBT *, DB_LSN *, DB_LSN *));
-int __log_dbenv_create __P((DB_ENV *));
-void __log_dbenv_destroy __P((DB_ENV *));
+int __log_env_create __P((DB_ENV *));
+void __log_env_destroy __P((DB_ENV *));
int __log_get_lg_bsize __P((DB_ENV *, u_int32_t *));
int __log_set_lg_bsize __P((DB_ENV *, u_int32_t));
int __log_get_lg_filemode __P((DB_ENV *, int *));
@@ -59,7 +59,7 @@ int __log_flush __P((DB_ENV *, const DB_LSN *));
int __log_flush_int __P((DB_LOG *, const DB_LSN *, int));
int __log_file_pp __P((DB_ENV *, const DB_LSN *, char *, size_t));
int __log_name __P((DB_LOG *, u_int32_t, char **, DB_FH **, u_int32_t));
-int __log_rep_put __P((DB_ENV *, DB_LSN *, const DBT *));
+int __log_rep_put __P((DB_ENV *, DB_LSN *, const DBT *, u_int32_t));
int __log_stat_pp __P((DB_ENV *, DB_LOG_STAT **, u_int32_t));
int __log_stat_print_pp __P((DB_ENV *, u_int32_t));
int __log_stat_print __P((DB_ENV *, u_int32_t));
diff --git a/db/dbinc_auto/mp_ext.h b/db/dbinc_auto/mp_ext.h
index 13e6b1be1..d4974af88 100644
--- a/db/dbinc_auto/mp_ext.h
+++ b/db/dbinc_auto/mp_ext.h
@@ -14,7 +14,7 @@ void __memp_check_order __P((DB_ENV *, DB_MPOOL_HASH *));
int __memp_bhwrite __P((DB_MPOOL *, DB_MPOOL_HASH *, MPOOLFILE *, BH *, int));
int __memp_pgread __P((DB_MPOOLFILE *, DB_MPOOL_HASH *, BH *, int));
int __memp_pg __P((DB_MPOOLFILE *, BH *, int));
-int __memp_bhfree __P((DB_MPOOL *, DB_MPOOL_HASH *, BH *, u_int32_t));
+int __memp_bhfree __P((DB_MPOOL *, REGINFO *, DB_MPOOL_HASH *, BH *, u_int32_t));
int __memp_fget_pp __P((DB_MPOOLFILE *, db_pgno_t *, DB_TXN *, u_int32_t, void *));
int __memp_fget __P((DB_MPOOLFILE *, db_pgno_t *, DB_TXN *, u_int32_t, void *));
int __memp_fcreate_pp __P((DB_ENV *, DB_MPOOLFILE **, u_int32_t));
@@ -28,7 +28,7 @@ int __memp_get_ftype __P((DB_MPOOLFILE *, int *));
int __memp_set_ftype __P((DB_MPOOLFILE *, int));
int __memp_set_lsn_offset __P((DB_MPOOLFILE *, int32_t));
int __memp_set_pgcookie __P((DB_MPOOLFILE *, DBT *));
-int __memp_last_pgno __P((DB_MPOOLFILE *, db_pgno_t *));
+int __memp_get_last_pgno __P((DB_MPOOLFILE *, db_pgno_t *));
char * __memp_fn __P((DB_MPOOLFILE *));
char * __memp_fns __P((DB_MPOOL *, MPOOLFILE *));
int __memp_fopen_pp __P((DB_MPOOLFILE *, const char *, u_int32_t, int, size_t));
@@ -37,19 +37,19 @@ int __memp_fclose_pp __P((DB_MPOOLFILE *, u_int32_t));
int __memp_fclose __P((DB_MPOOLFILE *, u_int32_t));
int __memp_mf_discard __P((DB_MPOOL *, MPOOLFILE *));
int __memp_inmemlist __P((DB_ENV *, char ***, int *));
-int __memp_fput_pp __P((DB_MPOOLFILE *, void *, u_int32_t));
-int __memp_fput __P((DB_MPOOLFILE *, void *, u_int32_t));
-int __memp_fset_pp __P((DB_MPOOLFILE *, void *, u_int32_t));
-int __memp_fset __P((DB_MPOOLFILE *, void *, u_int32_t));
-int __memp_dirty __P((DB_MPOOLFILE *, void *, DB_TXN *, u_int32_t));
-int __memp_dbenv_create __P((DB_ENV *));
-void __memp_dbenv_destroy __P((DB_ENV *));
+int __memp_fput_pp __P((DB_MPOOLFILE *, void *, DB_CACHE_PRIORITY, u_int32_t));
+int __memp_fput __P((DB_MPOOLFILE *, void *, DB_CACHE_PRIORITY));
+int __memp_dirty __P(( DB_MPOOLFILE *, void *, DB_TXN *, DB_CACHE_PRIORITY, u_int32_t));
+int __memp_env_create __P((DB_ENV *));
+void __memp_env_destroy __P((DB_ENV *));
int __memp_get_cachesize __P((DB_ENV *, u_int32_t *, u_int32_t *, int *));
int __memp_set_cachesize __P((DB_ENV *, u_int32_t, u_int32_t, int));
+int __memp_set_config __P((DB_ENV *, u_int32_t, int));
+int __memp_get_config __P((DB_ENV *, u_int32_t, int *));
int __memp_get_mp_max_openfd __P((DB_ENV *, int *));
int __memp_set_mp_max_openfd __P((DB_ENV *, int));
-int __memp_get_mp_max_write __P((DB_ENV *, int *, int *));
-int __memp_set_mp_max_write __P((DB_ENV *, int, int));
+int __memp_get_mp_max_write __P((DB_ENV *, int *, db_timeout_t *));
+int __memp_set_mp_max_write __P((DB_ENV *, int, db_timeout_t));
int __memp_get_mp_mmapsize __P((DB_ENV *, size_t *));
int __memp_set_mp_mmapsize __P((DB_ENV *, size_t));
int __memp_nameop __P((DB_ENV *, u_int8_t *, const char *, const char *, const char *, int));
@@ -64,22 +64,28 @@ int __memp_bh_settxn __P((DB_MPOOL *, MPOOLFILE *mfp, BH *, void *));
int __memp_skip_curadj __P((DBC *, db_pgno_t));
int __memp_bh_freeze __P((DB_MPOOL *, REGINFO *, DB_MPOOL_HASH *, BH *, int *));
int __memp_bh_thaw __P((DB_MPOOL *, REGINFO *, DB_MPOOL_HASH *, BH *, BH *));
-int __memp_open __P((DB_ENV *));
+int __memp_open __P((DB_ENV *, int));
+int __memp_init __P((DB_ENV *, DB_MPOOL *, u_int, u_int32_t, u_int));
+u_int32_t __memp_max_regions __P((DB_ENV *));
u_int32_t __memp_region_mutex_count __P((DB_ENV *));
-int __memp_dbenv_refresh __P((DB_ENV *));
+int __memp_env_refresh __P((DB_ENV *));
int __memp_register_pp __P((DB_ENV *, int, int (*)(DB_ENV *, db_pgno_t, void *, DBT *), int (*)(DB_ENV *, db_pgno_t, void *, DBT *)));
int __memp_register __P((DB_ENV *, int, int (*)(DB_ENV *, db_pgno_t, void *, DBT *), int (*)(DB_ENV *, db_pgno_t, void *, DBT *)));
+int __memp_get_bucket __P((DB_MPOOLFILE *, db_pgno_t, REGINFO **, DB_MPOOL_HASH **));
+int __memp_resize __P((DB_MPOOL *, u_int32_t, u_int32_t));
+int __memp_get_cache_max __P((DB_ENV *, u_int32_t *, u_int32_t *));
+int __memp_set_cache_max __P((DB_ENV *, u_int32_t, u_int32_t));
int __memp_stat_pp __P((DB_ENV *, DB_MPOOL_STAT **, DB_MPOOL_FSTAT ***, u_int32_t));
int __memp_stat_print_pp __P((DB_ENV *, u_int32_t));
int __memp_stat_print __P((DB_ENV *, u_int32_t));
void __memp_stat_hash __P((REGINFO *, MPOOL *, u_int32_t *));
int __memp_walk_files __P((DB_ENV *, MPOOL *, int (*) __P((DB_ENV *, MPOOLFILE *, void *, u_int32_t *, u_int32_t)), void *, u_int32_t *, u_int32_t));
int __memp_sync_pp __P((DB_ENV *, DB_LSN *));
-int __memp_sync __P((DB_ENV *, DB_LSN *));
+int __memp_sync __P((DB_ENV *, u_int32_t, DB_LSN *));
int __memp_fsync_pp __P((DB_MPOOLFILE *));
int __memp_fsync __P((DB_MPOOLFILE *));
int __mp_xxx_fh __P((DB_MPOOLFILE *, DB_FH **));
-int __memp_sync_int __P((DB_ENV *, DB_MPOOLFILE *, u_int32_t, db_sync_op, u_int32_t *));
+int __memp_sync_int __P((DB_ENV *, DB_MPOOLFILE *, u_int32_t, u_int32_t, u_int32_t *, int *));
int __memp_mf_sync __P((DB_MPOOL *, MPOOLFILE *, int));
int __memp_trickle_pp __P((DB_ENV *, int, int *));
diff --git a/db/dbinc_auto/mutex_ext.h b/db/dbinc_auto/mutex_ext.h
index 7b06e67d1..e3abbf77d 100644
--- a/db/dbinc_auto/mutex_ext.h
+++ b/db/dbinc_auto/mutex_ext.h
@@ -31,10 +31,11 @@ int __db_pthread_mutex_init __P((DB_ENV *, db_mutex_t, u_int32_t));
int __db_pthread_mutex_lock __P((DB_ENV *, db_mutex_t));
int __db_pthread_mutex_unlock __P((DB_ENV *, db_mutex_t));
int __db_pthread_mutex_destroy __P((DB_ENV *, db_mutex_t));
-int __mutex_open __P((DB_ENV *));
-int __mutex_dbenv_refresh __P((DB_ENV *));
+int __mutex_open __P((DB_ENV *, int));
+int __mutex_env_refresh __P((DB_ENV *));
void __mutex_resource_return __P((DB_ENV *, REGINFO *));
-int __mutex_stat __P((DB_ENV *, DB_MUTEX_STAT **, u_int32_t));
+int __mutex_stat_pp __P((DB_ENV *, DB_MUTEX_STAT **, u_int32_t));
+int __mutex_stat_print_pp __P((DB_ENV *, u_int32_t));
int __mutex_stat_print __P((DB_ENV *, u_int32_t));
void __mutex_print_debug_single __P((DB_ENV *, const char *, db_mutex_t, u_int32_t));
void __mutex_print_debug_stats __P((DB_ENV *, DB_MSGBUF *, db_mutex_t, u_int32_t));
diff --git a/db/dbinc_auto/os_ext.h b/db/dbinc_auto/os_ext.h
index 2481c42b8..d02dc0b48 100644
--- a/db/dbinc_auto/os_ext.h
+++ b/db/dbinc_auto/os_ext.h
@@ -6,6 +6,7 @@
extern "C" {
#endif
+void __os_abort __P((void));
int __os_abspath __P((const char *));
int __os_umalloc __P((DB_ENV *, size_t, void *));
int __os_urealloc __P((DB_ENV *, size_t, void *));
@@ -16,7 +17,7 @@ int __os_malloc __P((DB_ENV *, size_t, void *));
int __os_realloc __P((DB_ENV *, size_t, void *));
void __os_free __P((DB_ENV *, void *));
void *__ua_memcpy __P((void *, const void *, size_t));
-void __os_clock __P((DB_ENV *, u_int32_t *, u_int32_t *));
+void __os_gettime __P((DB_ENV *, db_timespec *));
int __os_fs_notzero __P((void));
int __os_support_direct_io __P((void));
int __os_support_db_register __P((void));
@@ -44,11 +45,7 @@ int __os_unmapfile __P((DB_ENV *, void *, size_t));
int __os_mkdir __P((DB_ENV *, const char *, int));
u_int32_t __db_oflags __P((int));
int __db_omode __P((const char *));
-int __os_open __P((DB_ENV *, const char *, u_int32_t, int, DB_FH **));
-int __os_open_extend __P((DB_ENV *, const char *, u_int32_t, u_int32_t, int, DB_FH **));
-#ifdef HAVE_QNX
-int __os_shmname __P((DB_ENV *, const char *, char **));
-#endif
+int __os_open __P((DB_ENV *, const char *, u_int32_t, u_int32_t, int, DB_FH **));
void __os_id __P((DB_ENV *, pid_t *, db_threadid_t*));
int __os_r_attach __P((DB_ENV *, REGINFO *, REGION *));
int __os_r_detach __P((DB_ENV *, REGINFO *, int));
@@ -70,8 +67,41 @@ void __os_unique_id __P((DB_ENV *, u_int32_t *));
int __os_region_unlink __P((DB_ENV *, const char *));
int __os_unlink __P((DB_ENV *, const char *));
void __os_yield __P((DB_ENV *));
+#ifndef HAVE_FCLOSE
+int fclose __P((FILE *));
+#endif
+#ifndef HAVE_FGETC
+int fgetc __P((FILE *));
+#endif
+#ifndef HAVE_FGETS
+char *fgets __P((char *, int, FILE *));
+#endif
+#ifndef HAVE_FOPEN
+FILE *fopen __P((const char *, const char *));
+#endif
+#ifndef HAVE_FWRITE
+size_t fwrite __P((const void *, size_t, size_t, FILE *));
+#endif
+#ifndef HAVE_LOCALTIME
+struct tm *localtime __P((const time_t *));
+#endif
+#ifndef HAVE_TIME
+time_t time __P((time_t *));
+#endif
+#ifdef HAVE_QNX
+int __os_qnx_region_open __P((DB_ENV *, const char *, int, int, DB_FH *));
+#endif
+#ifdef HAVE_QNX
+int __os_qnx_shmname __P((DB_ENV *, const char *, char **));
+#endif
+#ifndef HAVE_TIME
+time_t time __P((time_t *));
+#endif
int __os_is_winnt __P((void));
+#ifdef HAVE_REPLICATION_THREADS
int __os_get_neterr __P((void));
+#endif
+int __os_mkdir __P((DB_ENV *, const char *, int));
#if defined(__cplusplus)
}
diff --git a/db/dbinc_auto/qam_ext.h b/db/dbinc_auto/qam_ext.h
index 4c0571f1d..881b31107 100644
--- a/db/dbinc_auto/qam_ext.h
+++ b/db/dbinc_auto/qam_ext.h
@@ -9,8 +9,8 @@ extern "C" {
int __qam_position __P((DBC *, db_recno_t *, db_lockmode_t, u_int32_t, int *));
int __qam_pitem __P((DBC *, QPAGE *, u_int32_t, db_recno_t, DBT *));
int __qam_append __P((DBC *, DBT *, DBT *));
-int __qam_c_dup __P((DBC *, DBC *));
-int __qam_c_init __P((DBC *));
+int __qamc_dup __P((DBC *, DBC *));
+int __qamc_init __P((DBC *));
int __qam_truncate __P((DBC *, u_int32_t *));
int __qam_delete __P((DBC *, DBT *));
int __qam_incfirst_log __P((DB *, DB_TXN *, DB_LSN *, u_int32_t, db_recno_t, db_pgno_t));
@@ -32,11 +32,11 @@ int __qam_delext_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
int __qam_init_print __P((DB_ENV *, int (***)(DB_ENV *, DBT *, DB_LSN *, db_recops, void *), size_t *));
int __qam_mswap __P((PAGE *));
int __qam_pgin_out __P((DB_ENV *, db_pgno_t, void *, DBT *));
-int __qam_fprobe __P((DB *, db_pgno_t, DB_TXN *, void *, qam_probe_mode, u_int32_t));
+int __qam_fprobe __P((DB *, db_pgno_t, DB_TXN *, void *, qam_probe_mode, DB_CACHE_PRIORITY, u_int32_t));
int __qam_fclose __P((DB *, db_pgno_t));
int __qam_fremove __P((DB *, db_pgno_t));
int __qam_sync __P((DB *));
-int __qam_gen_filelist __P(( DB *, QUEUE_FILELIST **));
+int __qam_gen_filelist __P((DB *, QUEUE_FILELIST **));
int __qam_extent_names __P((DB_ENV *, char *, char ***));
void __qam_exid __P((DB *, u_int8_t *, u_int32_t));
int __qam_nameop __P((DB *, DB_TXN *, const char *, qam_name_op));
diff --git a/db/dbinc_auto/rep_ext.h b/db/dbinc_auto/rep_ext.h
index 9430a895c..0dffcb72d 100644
--- a/db/dbinc_auto/rep_ext.h
+++ b/db/dbinc_auto/rep_ext.h
@@ -19,18 +19,27 @@ int __rep_page_fail __P((DB_ENV *, int, DBT *));
int __rep_init_cleanup __P((DB_ENV *, REP *, int));
int __rep_pggap_req __P((DB_ENV *, REP *, __rep_fileinfo_args *, u_int32_t));
int __rep_finfo_alloc __P((DB_ENV *, __rep_fileinfo_args *, __rep_fileinfo_args **));
-int __rep_elect __P((DB_ENV *, int, int, int *, u_int32_t));
-int __rep_vote1 __P((DB_ENV *, REP_CONTROL *, DBT *, int *));
-int __rep_vote2 __P((DB_ENV *, DBT *, int *));
-void __rep_elect_master __P((DB_ENV *, REP *, int *));
+int __rep_remove_init_file __P((DB_ENV *));
+int __rep_reset_init __P((DB_ENV *));
+int __rep_elect __P((DB_ENV *, int, int, u_int32_t));
+int __rep_vote1 __P((DB_ENV *, REP_CONTROL *, DBT *, int));
+int __rep_vote2 __P((DB_ENV *, DBT *, int));
+int __rep_update_grant __P((DB_ENV *, db_timespec *));
+int __rep_islease_granted __P((DB_ENV *));
+int __rep_lease_table_alloc __P((DB_ENV *, int));
+int __rep_lease_grant __P((DB_ENV *, REP_CONTROL *, DBT *, int));
+int __rep_lease_check __P((DB_ENV *, int));
+int __rep_lease_refresh __P((DB_ENV *));
+int __rep_lease_expire __P((DB_ENV *, int));
+db_timeout_t __rep_lease_waittime __P((DB_ENV *));
int __rep_allreq __P((DB_ENV *, REP_CONTROL *, int));
int __rep_log __P((DB_ENV *, REP_CONTROL *, DBT *, time_t, DB_LSN *));
int __rep_bulk_log __P((DB_ENV *, REP_CONTROL *, DBT *, time_t, DB_LSN *));
int __rep_logreq __P((DB_ENV *, REP_CONTROL *, DBT *, int));
int __rep_loggap_req __P((DB_ENV *, REP *, DB_LSN *, u_int32_t));
int __rep_logready __P((DB_ENV *, REP *, time_t, DB_LSN *));
-int __rep_dbenv_create __P((DB_ENV *));
-void __rep_dbenv_destroy __P((DB_ENV *));
+int __rep_env_create __P((DB_ENV *));
+void __rep_env_destroy __P((DB_ENV *));
int __rep_get_config __P((DB_ENV *, u_int32_t, int *));
int __rep_set_config __P((DB_ENV *, u_int32_t, int));
int __rep_start __P((DB_ENV *, DBT *, u_int32_t));
@@ -46,19 +55,21 @@ int __rep_get_timeout __P((DB_ENV *, int, db_timeout_t *));
int __rep_get_request __P((DB_ENV *, u_int32_t *, u_int32_t *));
int __rep_set_request __P((DB_ENV *, u_int32_t, u_int32_t));
int __rep_set_transport __P((DB_ENV *, int, int (*)(DB_ENV *, const DBT *, const DBT *, const DB_LSN *, int, u_int32_t)));
+int __rep_set_lease __P((DB_ENV *, u_int32_t, u_int32_t));
int __rep_flush __P((DB_ENV *));
int __rep_sync __P((DB_ENV *, u_int32_t));
-int __rep_process_message __P((DB_ENV *, DBT *, DBT *, int *, DB_LSN *));
+int __rep_process_message __P((DB_ENV *, DBT *, DBT *, int, DB_LSN *));
int __rep_apply __P((DB_ENV *, REP_CONTROL *, DBT *, DB_LSN *, int *, DB_LSN *));
int __rep_process_txn __P((DB_ENV *, DBT *));
+int __rep_resend_req __P((DB_ENV *, int));
int __rep_check_doreq __P((DB_ENV *, REP *));
int __rep_open __P((DB_ENV *));
-int __rep_region_destroy __P((DB_ENV *));
-void __rep_dbenv_refresh __P((DB_ENV *));
-int __rep_close __P((DB_ENV *));
+int __rep_env_refresh __P((DB_ENV *));
+int __rep_env_close __P((DB_ENV *));
int __rep_preclose __P((DB_ENV *));
-int __rep_closefiles __P((DB_ENV *));
+int __rep_closefiles __P((DB_ENV *, int));
int __rep_write_egen __P((DB_ENV *, u_int32_t));
+int __rep_write_gen __P((DB_ENV *, u_int32_t));
int __rep_stat_pp __P((DB_ENV *, DB_REP_STAT **, u_int32_t));
int __rep_stat_print_pp __P((DB_ENV *, u_int32_t));
int __rep_stat_print __P((DB_ENV *, u_int32_t));
@@ -71,19 +82,21 @@ int __rep_new_master __P((DB_ENV *, REP_CONTROL *, int));
int __rep_noarchive __P((DB_ENV *));
void __rep_send_vote __P((DB_ENV *, DB_LSN *, int, int, int, u_int32_t, u_int32_t, int, u_int32_t, u_int32_t));
void __rep_elect_done __P((DB_ENV *, REP *));
-int __rep_grow_sites __P((DB_ENV *dbenv, int nsites));
+int __rep_grow_sites __P((DB_ENV *, int));
int __env_rep_enter __P((DB_ENV *, int));
int __env_db_rep_exit __P((DB_ENV *));
int __db_rep_enter __P((DB *, int, int, int));
int __op_rep_enter __P((DB_ENV *));
int __op_rep_exit __P((DB_ENV *));
-int __rep_get_gen __P((DB_ENV *, u_int32_t *));
int __rep_lockout_api __P((DB_ENV *, REP *));
+int __rep_lockout_apply __P((DB_ENV *, REP *, u_int32_t));
int __rep_lockout_msg __P((DB_ENV *, REP *, u_int32_t));
-int __rep_send_throttle __P((DB_ENV *, int, REP_THROTTLE *, u_int32_t));
+int __rep_send_throttle __P((DB_ENV *, int, REP_THROTTLE *, u_int32_t, u_int32_t));
u_int32_t __rep_msg_to_old __P((u_int32_t, u_int32_t));
u_int32_t __rep_msg_from_old __P((u_int32_t, u_int32_t));
+void __rep_print __P((DB_ENV *, const char *, ...)) __attribute__ ((__format__ (__printf__, 2, 3)));
void __rep_print_message __P((DB_ENV *, int, REP_CONTROL *, char *, u_int32_t));
+void __rep_fire_event __P((DB_ENV *, u_int32_t, void *));
int __rep_verify __P((DB_ENV *, REP_CONTROL *, DBT *, int, time_t));
int __rep_verify_fail __P((DB_ENV *, REP_CONTROL *, int));
int __rep_verify_req __P((DB_ENV *, REP_CONTROL *, int));
diff --git a/db/dbinc_auto/repmgr_ext.h b/db/dbinc_auto/repmgr_ext.h
index 78979b987..eeefd4451 100644
--- a/db/dbinc_auto/repmgr_ext.h
+++ b/db/dbinc_auto/repmgr_ext.h
@@ -12,13 +12,14 @@ int __repmgr_start __P((DB_ENV *, int, u_int32_t));
int __repmgr_close __P((DB_ENV *));
int __repmgr_set_ack_policy __P((DB_ENV *, int));
int __repmgr_get_ack_policy __P((DB_ENV *, int *));
-int __repmgr_dbenv_create __P((DB_ENV *, DB_REP *));
-void __repmgr_dbenv_destroy __P((DB_ENV *, DB_REP *));
+int __repmgr_env_create __P((DB_ENV *, DB_REP *));
+void __repmgr_env_destroy __P((DB_ENV *, DB_REP *));
int __repmgr_stop_threads __P((DB_ENV *));
int __repmgr_set_local_site __P((DB_ENV *, const char *, u_int, u_int32_t));
int __repmgr_add_remote_site __P((DB_ENV *, const char *, u_int, int *, u_int32_t));
void *__repmgr_msg_thread __P((void *));
-int __repmgr_stash_generation __P((DB_ENV *));
+int __repmgr_handle_event __P((DB_ENV *, u_int32_t, void *));
+void __repmgr_stash_generation __P((DB_ENV *));
int __repmgr_send __P((DB_ENV *, const DBT *, const DBT *, const DB_LSN *, int, u_int32_t));
int __repmgr_send_one __P((DB_ENV *, REPMGR_CONNECTION *, u_int, const DBT *, const DBT *));
int __repmgr_is_permanent __P((DB_ENV *, const DB_LSN *));
@@ -47,7 +48,6 @@ int __repmgr_signal __P((cond_var_t *));
int __repmgr_wake_main_thread __P((DB_ENV*));
int __repmgr_writev __P((socket_t, db_iovec_t *, int, size_t *));
int __repmgr_readv __P((socket_t, db_iovec_t *, int, size_t *));
-void __repmgr_timeval_diff_current __P((DB_ENV *, repmgr_timeval_t *, select_timeout_t *));
int __repmgr_select_loop __P((DB_ENV *));
int __repmgr_queue_create __P((DB_ENV *, DB_REP *));
void __repmgr_queue_destroy __P((DB_ENV *));
@@ -62,8 +62,39 @@ int __repmgr_connect_site __P((DB_ENV *, u_int eid));
int __repmgr_send_handshake __P((DB_ENV *, REPMGR_CONNECTION *));
int __repmgr_read_from_site __P((DB_ENV *, REPMGR_CONNECTION *));
int __repmgr_write_some __P((DB_ENV *, REPMGR_CONNECTION *));
+int __repmgr_stat_pp __P((DB_ENV *, DB_REPMGR_STAT **, u_int32_t));
+int __repmgr_stat_print_pp __P((DB_ENV *, u_int32_t));
int __repmgr_site_list __P((DB_ENV *, u_int *, DB_REPMGR_SITE **));
-int __repmgr_print_stats __P((DB_ENV *));
+#ifndef HAVE_REPLICATION_THREADS
+int __repmgr_close __P((DB_ENV *));
+#endif
+#ifndef HAVE_REPLICATION_THREADS
+int __repmgr_add_remote_site __P((DB_ENV *, const char *, u_int, int *, u_int32_t));
+#endif
+#ifndef HAVE_REPLICATION_THREADS
+int __repmgr_get_ack_policy __P((DB_ENV *, int *));
+#endif
+#ifndef HAVE_REPLICATION_THREADS
+int __repmgr_set_ack_policy __P((DB_ENV *, int));
+#endif
+#ifndef HAVE_REPLICATION_THREADS
+int __repmgr_set_local_site __P((DB_ENV *, const char *, u_int, u_int32_t));
+#endif
+#ifndef HAVE_REPLICATION_THREADS
+int __repmgr_site_list __P((DB_ENV *, u_int *, DB_REPMGR_SITE **));
+#endif
+#ifndef HAVE_REPLICATION_THREADS
+int __repmgr_start __P((DB_ENV *, int, u_int32_t));
+#endif
+#ifndef HAVE_REPLICATION_THREADS
+int __repmgr_stat_pp __P((DB_ENV *, DB_REPMGR_STAT **, u_int32_t));
+#endif
+#ifndef HAVE_REPLICATION_THREADS
+int __repmgr_stat_print_pp __P((DB_ENV *, u_int32_t));
+#endif
+#ifndef HAVE_REPLICATION_THREADS
+int __repmgr_handle_event __P((DB_ENV *, u_int32_t, void *));
+#endif
int __repmgr_schedule_connection_attempt __P((DB_ENV *, u_int, int));
void __repmgr_reset_for_reading __P((REPMGR_CONNECTION *));
int __repmgr_new_connection __P((DB_ENV *, REPMGR_CONNECTION **, socket_t, u_int32_t));
@@ -74,11 +105,12 @@ void __repmgr_add_buffer __P((REPMGR_IOVECS *, void *, size_t));
void __repmgr_add_dbt __P((REPMGR_IOVECS *, const DBT *));
int __repmgr_update_consumed __P((REPMGR_IOVECS *, size_t));
int __repmgr_prepare_my_addr __P((DB_ENV *, DBT *));
-int __repmgr_timeval_cmp __P((repmgr_timeval_t *, repmgr_timeval_t *));
u_int __repmgr_get_nsites __P((DB_REP *));
void __repmgr_thread_failure __P((DB_ENV *, int));
char *__repmgr_format_eid_loc __P((DB_REP *, int, char *));
char *__repmgr_format_site_loc __P((REPMGR_SITE *, char *));
+void __repmgr_timespec_diff_now __P((DB_ENV *, db_timespec *, db_timespec *));
+int __repmgr_repstart __P((DB_ENV *, u_int32_t));
int __repmgr_wsa_init __P((DB_ENV *));
#if defined(__cplusplus)
diff --git a/db/dbinc_auto/rpc_client_ext.h b/db/dbinc_auto/rpc_client_ext.h
index a578bbcd1..bc64116a0 100644
--- a/db/dbinc_auto/rpc_client_ext.h
+++ b/db/dbinc_auto/rpc_client_ext.h
@@ -50,6 +50,7 @@ int __dbcl_db_get_h_nelem __P((DB *, u_int32_t *));
int __dbcl_db_get_lorder __P((DB *, int *));
int __dbcl_db_get_open_flags __P((DB *, u_int32_t *));
int __dbcl_db_get_pagesize __P((DB *, u_int32_t *));
+int __dbcl_db_get_priority __P((DB *, DB_CACHE_PRIORITY *));
int __dbcl_db_get_q_extentsize __P((DB *, u_int32_t *));
int __dbcl_db_get_re_delim __P((DB *, int *));
int __dbcl_db_get_re_len __P((DB *, u_int32_t *));
@@ -68,6 +69,7 @@ int __dbcl_db_set_h_ffactor __P((DB *, u_int32_t));
int __dbcl_db_set_h_nelem __P((DB *, u_int32_t));
int __dbcl_db_set_lorder __P((DB *, int));
int __dbcl_db_set_pagesize __P((DB *, u_int32_t));
+int __dbcl_db_set_priority __P((DB *, DB_CACHE_PRIORITY));
int __dbcl_db_set_q_extentsize __P((DB *, u_int32_t));
int __dbcl_db_set_re_delim __P((DB *, int));
int __dbcl_db_set_re_len __P((DB *, u_int32_t));
@@ -75,13 +77,15 @@ int __dbcl_db_set_re_pad __P((DB *, int));
int __dbcl_db_stat __P((DB *, DB_TXN *, void *, u_int32_t));
int __dbcl_db_sync __P((DB *, u_int32_t));
int __dbcl_db_truncate __P((DB *, DB_TXN *, u_int32_t *, u_int32_t));
-int __dbcl_dbc_c_close __P((DBC *));
-int __dbcl_dbc_c_count __P((DBC *, db_recno_t *, u_int32_t));
-int __dbcl_dbc_c_del __P((DBC *, u_int32_t));
-int __dbcl_dbc_c_dup __P((DBC *, DBC **, u_int32_t));
-int __dbcl_dbc_c_get __P((DBC *, DBT *, DBT *, u_int32_t));
-int __dbcl_dbc_c_pget __P((DBC *, DBT *, DBT *, DBT *, u_int32_t));
-int __dbcl_dbc_c_put __P((DBC *, DBT *, DBT *, u_int32_t));
+int __dbcl_dbc_close __P((DBC *));
+int __dbcl_dbc_count __P((DBC *, db_recno_t *, u_int32_t));
+int __dbcl_dbc_del __P((DBC *, u_int32_t));
+int __dbcl_dbc_dup __P((DBC *, DBC **, u_int32_t));
+int __dbcl_dbc_get __P((DBC *, DBT *, DBT *, u_int32_t));
+int __dbcl_dbc_get_priority __P((DBC *, DB_CACHE_PRIORITY *));
+int __dbcl_dbc_pget __P((DBC *, DBT *, DBT *, DBT *, u_int32_t));
+int __dbcl_dbc_put __P((DBC *, DBT *, DBT *, u_int32_t));
+int __dbcl_dbc_set_priority __P((DBC *, DB_CACHE_PRIORITY));
int __dbcl_txn_abort __P((DB_TXN *));
int __dbcl_txn_commit __P((DB_TXN *, u_int32_t));
int __dbcl_txn_discard __P((DB_TXN *, u_int32_t));
@@ -112,12 +116,12 @@ int __dbcl_db_stat_ret __P((DB *, DB_TXN *, void *, u_int32_t, __db_stat_reply *
int __dbcl_db_truncate_ret __P((DB *, DB_TXN *, u_int32_t *, u_int32_t, __db_truncate_reply *));
int __dbcl_db_cursor_ret __P((DB *, DB_TXN *, DBC **, u_int32_t, __db_cursor_reply *));
int __dbcl_db_join_ret __P((DB *, DBC **, DBC **, u_int32_t, __db_join_reply *));
-int __dbcl_dbc_c_close_ret __P((DBC *, __dbc_c_close_reply *));
-int __dbcl_dbc_c_count_ret __P((DBC *, db_recno_t *, u_int32_t, __dbc_c_count_reply *));
-int __dbcl_dbc_c_dup_ret __P((DBC *, DBC **, u_int32_t, __dbc_c_dup_reply *));
-int __dbcl_dbc_c_get_ret __P((DBC *, DBT *, DBT *, u_int32_t, __dbc_c_get_reply *));
-int __dbcl_dbc_c_pget_ret __P((DBC *, DBT *, DBT *, DBT *, u_int32_t, __dbc_c_pget_reply *));
-int __dbcl_dbc_c_put_ret __P((DBC *, DBT *, DBT *, u_int32_t, __dbc_c_put_reply *));
+int __dbcl_dbc_close_ret __P((DBC *, __dbc_close_reply *));
+int __dbcl_dbc_count_ret __P((DBC *, db_recno_t *, u_int32_t, __dbc_count_reply *));
+int __dbcl_dbc_dup_ret __P((DBC *, DBC **, u_int32_t, __dbc_dup_reply *));
+int __dbcl_dbc_get_ret __P((DBC *, DBT *, DBT *, u_int32_t, __dbc_get_reply *));
+int __dbcl_dbc_pget_ret __P((DBC *, DBT *, DBT *, DBT *, u_int32_t, __dbc_pget_reply *));
+int __dbcl_dbc_put_ret __P((DBC *, DBT *, DBT *, u_int32_t, __dbc_put_reply *));
#if defined(__cplusplus)
}
diff --git a/db/dbinc_auto/rpc_server_ext.h b/db/dbinc_auto/rpc_server_ext.h
index 589aef156..cd330a5ac 100644
--- a/db/dbinc_auto/rpc_server_ext.h
+++ b/db/dbinc_auto/rpc_server_ext.h
@@ -54,6 +54,8 @@ void __db_get_pagesize_proc __P((u_int, __db_get_pagesize_reply *));
void __db_set_pagesize_proc __P((u_int, u_int32_t, __db_set_pagesize_reply *));
void __db_pget_proc __P((u_int, u_int, u_int32_t, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, __db_pget_reply *, int *));
void __db_put_proc __P((u_int, u_int, u_int32_t, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, __db_put_reply *, int *));
+void __db_get_priority_proc __P((u_int, __db_get_priority_reply *));
+void __db_set_priority_proc __P((u_int, u_int32_t, __db_set_priority_reply *));
void __db_get_re_delim_proc __P((u_int, __db_get_re_delim_reply *));
void __db_set_re_delim_proc __P((u_int, u_int32_t, __db_set_re_delim_reply *));
void __db_get_re_len_proc __P((u_int, __db_get_re_len_reply *));
@@ -67,13 +69,15 @@ void __db_sync_proc __P((u_int, u_int32_t, __db_sync_reply *));
void __db_truncate_proc __P((u_int, u_int, u_int32_t, __db_truncate_reply *));
void __db_cursor_proc __P((u_int, u_int, u_int32_t, __db_cursor_reply *));
void __db_join_proc __P((u_int, u_int32_t *, u_int32_t, u_int32_t, __db_join_reply *));
-void __dbc_c_close_proc __P((u_int, __dbc_c_close_reply *));
-void __dbc_c_count_proc __P((u_int, u_int32_t, __dbc_c_count_reply *));
-void __dbc_c_del_proc __P((u_int, u_int32_t, __dbc_c_del_reply *));
-void __dbc_c_dup_proc __P((u_int, u_int32_t, __dbc_c_dup_reply *));
-void __dbc_c_get_proc __P((u_int, u_int32_t, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, __dbc_c_get_reply *, int *));
-void __dbc_c_pget_proc __P((u_int, u_int32_t, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, __dbc_c_pget_reply *, int *));
-void __dbc_c_put_proc __P((u_int, u_int32_t, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, __dbc_c_put_reply *, int *));
+void __dbc_close_proc __P((u_int, __dbc_close_reply *));
+void __dbc_count_proc __P((u_int, u_int32_t, __dbc_count_reply *));
+void __dbc_del_proc __P((u_int, u_int32_t, __dbc_del_reply *));
+void __dbc_dup_proc __P((u_int, u_int32_t, __dbc_dup_reply *));
+void __dbc_get_proc __P((u_int, u_int32_t, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, __dbc_get_reply *, int *));
+void __dbc_pget_proc __P((u_int, u_int32_t, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, __dbc_pget_reply *, int *));
+void __dbc_put_proc __P((u_int, u_int32_t, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, __dbc_put_reply *, int *));
+void __dbc_get_priority_proc __P((u_int, __dbc_get_priority_reply *));
+void __dbc_set_priority_proc __P((u_int, u_int32_t, __dbc_set_priority_reply *));
void __dbsrv_settimeout __P((ct_entry *, u_int32_t));
void __dbclear_ctp __P((ct_entry *));
void __dbdel_ctp __P((ct_entry *));
diff --git a/db/dbinc_auto/tcl_ext.h b/db/dbinc_auto/tcl_ext.h
index e5395c539..d1a939b7d 100644
--- a/db/dbinc_auto/tcl_ext.h
+++ b/db/dbinc_auto/tcl_ext.h
@@ -76,13 +76,16 @@ int tcl_RepGetConfig __P((Tcl_Interp *, DB_ENV *, Tcl_Obj *));
int tcl_RepElect __P((Tcl_Interp *, int, Tcl_Obj * CONST *, DB_ENV *));
int tcl_RepFlush __P((Tcl_Interp *, int, Tcl_Obj * CONST *, DB_ENV *));
int tcl_RepSync __P((Tcl_Interp *, int, Tcl_Obj * CONST *, DB_ENV *));
+int tcl_RepLease __P((Tcl_Interp *, int, Tcl_Obj * CONST *, DB_ENV *));
int tcl_RepLimit __P((Tcl_Interp *, int, Tcl_Obj * CONST *, DB_ENV *));
int tcl_RepRequest __P((Tcl_Interp *, int, Tcl_Obj * CONST *, DB_ENV *));
+int tcl_RepNoarchiveTimeout __P((Tcl_Interp *, DB_ENV *));
int tcl_RepTransport __P((Tcl_Interp *, int, Tcl_Obj * CONST *, DB_ENV *, DBTCL_INFO *));
int tcl_RepStart __P((Tcl_Interp *, int, Tcl_Obj * CONST *, DB_ENV *));
int tcl_RepProcessMessage __P((Tcl_Interp *, int, Tcl_Obj * CONST *, DB_ENV *));
int tcl_RepStat __P((Tcl_Interp *, int, Tcl_Obj * CONST *, DB_ENV *));
int tcl_RepMgr __P((Tcl_Interp *, int, Tcl_Obj * CONST *, DB_ENV *));
+int tcl_RepMgrStat __P((Tcl_Interp *, int, Tcl_Obj * CONST *, DB_ENV *));
int seq_Cmd __P((ClientData, Tcl_Interp *, int, Tcl_Obj * CONST*));
void _TxnInfoDelete __P((Tcl_Interp *, DBTCL_INFO *));
int tcl_TxnCheckpoint __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
diff --git a/db/dbinc_auto/txn_auto.h b/db/dbinc_auto/txn_auto.h
index ec3eb2081..72fe932d4 100644
--- a/db/dbinc_auto/txn_auto.h
+++ b/db/dbinc_auto/txn_auto.h
@@ -43,7 +43,7 @@ typedef struct ___txn_ckp_args {
DB_LSN last_ckp;
int32_t timestamp;
u_int32_t envid;
- u_int32_t rep_gen;
+ u_int32_t spare;
} __txn_ckp_args;
#define DB___txn_child 12
diff --git a/db/dbinc_auto/txn_ext.h b/db/dbinc_auto/txn_ext.h
index 48ba76efc..34bbdf574 100644
--- a/db/dbinc_auto/txn_ext.h
+++ b/db/dbinc_auto/txn_ext.h
@@ -11,7 +11,7 @@ int __txn_begin __P((DB_ENV *, DB_TXN *, DB_TXN **, u_int32_t));
int __txn_xa_begin __P((DB_ENV *, DB_TXN *));
int __txn_recycle_id __P((DB_ENV *));
int __txn_compensate_begin __P((DB_ENV *, DB_TXN **));
-void __txn_continue __P((DB_ENV *, DB_TXN *, TXN_DETAIL *));
+int __txn_continue __P((DB_ENV *, DB_TXN *, TXN_DETAIL *));
int __txn_commit __P((DB_TXN *, u_int32_t));
int __txn_abort __P((DB_TXN *));
int __txn_discard_int __P((DB_TXN *, u_int32_t flags));
@@ -51,8 +51,8 @@ int __txn_getactive __P((DB_ENV *, DB_LSN *));
int __txn_getckp __P((DB_ENV *, DB_LSN *));
int __txn_updateckp __P((DB_ENV *, DB_LSN *));
int __txn_failchk __P((DB_ENV *));
-int __txn_dbenv_create __P((DB_ENV *));
-void __txn_dbenv_destroy __P((DB_ENV *));
+int __txn_env_create __P((DB_ENV *));
+void __txn_env_destroy __P((DB_ENV *));
int __txn_get_tx_max __P((DB_ENV *, u_int32_t *));
int __txn_set_tx_max __P((DB_ENV *, u_int32_t));
int __txn_get_tx_timestamp __P((DB_ENV *, time_t *));
@@ -70,9 +70,10 @@ int __txn_recover_pp __P((DB_ENV *, DB_PREPLIST *, long, long *, u_int32_t));
int __txn_recover __P((DB_ENV *, DB_PREPLIST *, long, long *, u_int32_t));
int __txn_get_prepared __P((DB_ENV *, XID *, DB_PREPLIST *, long, long *, u_int32_t));
int __txn_openfiles __P((DB_ENV *, DB_LSN *, int));
-int __txn_open __P((DB_ENV *));
+int __txn_open __P((DB_ENV *, int));
int __txn_findlastckp __P((DB_ENV *, DB_LSN *, DB_LSN *));
-int __txn_dbenv_refresh __P((DB_ENV *));
+int __txn_env_refresh __P((DB_ENV *));
+u_int32_t __txn_region_mutex_count __P((DB_ENV *));
int __txn_id_set __P((DB_ENV *, u_int32_t, u_int32_t));
int __txn_oldest_reader __P((DB_ENV *, DB_LSN *));
int __txn_add_buffer __P((DB_ENV *, TXN_DETAIL *));
@@ -83,9 +84,11 @@ int __txn_stat_print __P((DB_ENV *, u_int32_t));
int __txn_closeevent __P((DB_ENV *, DB_TXN *, DB *));
int __txn_remevent __P((DB_ENV *, DB_TXN *, const char *, u_int8_t *, int));
void __txn_remrem __P((DB_ENV *, DB_TXN *, const char *));
-int __txn_lockevent __P((DB_ENV *, DB_TXN *, DB *, DB_LOCK *, u_int32_t));
-void __txn_remlock __P((DB_ENV *, DB_TXN *, DB_LOCK *, u_int32_t));
+int __txn_lockevent __P((DB_ENV *, DB_TXN *, DB *, DB_LOCK *, DB_LOCKER *));
+void __txn_remlock __P((DB_ENV *, DB_TXN *, DB_LOCK *, DB_LOCKER *));
int __txn_doevents __P((DB_ENV *, DB_TXN *, int, int));
+int __txn_record_fname __P((DB_ENV *, DB_TXN *, FNAME *));
+int __txn_dref_fname __P((DB_ENV *, DB_TXN *));
#if defined(__cplusplus)
}
diff --git a/db/dbm/dbm.c b/db/dbm/dbm.c
index 0093ce703..b4af224a6 100644
--- a/db/dbm/dbm.c
+++ b/db/dbm/dbm.c
@@ -1,8 +1,7 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*/
/*
* Copyright (c) 1990, 1993
@@ -39,7 +38,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: dbm.c,v 12.8 2006/08/24 14:45:31 bostic Exp $
+ * $Id: dbm.c,v 12.11 2007/05/17 15:15:07 bostic Exp $
*/
#define DB_DBM_HSEARCH 1
@@ -282,7 +281,7 @@ __db_ndbm_fetch(dbm, key)
memset(&_data, 0, sizeof(DBT));
/*
- * Note that we can't simply use the dbc we have to do a c_get/SET,
+ * Note that we can't simply use the dbc we have to do a get/SET,
* because that cursor is the one used for sequential iteration and
* it has to remain stable in the face of intervening gets and puts.
*/
@@ -321,7 +320,7 @@ __db_ndbm_firstkey(dbm)
memset(&_key, 0, sizeof(DBT));
memset(&_data, 0, sizeof(DBT));
- if ((ret = dbc->c_get(dbc, &_key, &_data, DB_FIRST)) == 0) {
+ if ((ret = dbc->get(dbc, &_key, &_data, DB_FIRST)) == 0) {
key.dptr = _key.data;
key.dsize = (int)_key.size;
} else {
@@ -356,7 +355,7 @@ __db_ndbm_nextkey(dbm)
memset(&_key, 0, sizeof(DBT));
memset(&_data, 0, sizeof(DBT));
- if ((ret = dbc->c_get(dbc, &_key, &_data, DB_NEXT)) == 0) {
+ if ((ret = dbc->get(dbc, &_key, &_data, DB_NEXT)) == 0) {
key.dptr = _key.data;
key.dsize = (int)_key.size;
} else {
diff --git a/db/dbreg/dbreg.c b/db/dbreg/dbreg.c
index edc4599be..21334d8d4 100644
--- a/db/dbreg/dbreg.c
+++ b/db/dbreg/dbreg.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: dbreg.c,v 12.20 2006/08/24 14:45:31 bostic Exp $
+ * $Id: dbreg.c,v 12.28 2007/06/13 18:59:35 bostic Exp $
*/
#include "db_config.h"
@@ -15,7 +14,7 @@
#include "dbinc/txn.h"
#include "dbinc/db_am.h"
-static int __dbreg_push_id __P((DB_ENV *, DB *, int32_t));
+static int __dbreg_push_id __P((DB_ENV *, int32_t));
static int __dbreg_pop_id __P((DB_ENV *, int32_t *));
static int __dbreg_pluck_id __P((DB_ENV *, int32_t));
@@ -109,12 +108,12 @@ __dbreg_setup(dbp, name, create_txnid)
/* Allocate an FNAME and, if necessary, a buffer for the name itself. */
LOG_SYSTEM_LOCK(dbenv);
- if ((ret = __db_shalloc(infop, sizeof(FNAME), 0, &fnp)) != 0)
+ if ((ret = __env_alloc(infop, sizeof(FNAME), &fnp)) != 0)
goto err;
memset(fnp, 0, sizeof(FNAME));
if (name != NULL) {
len = strlen(name) + 1;
- if ((ret = __db_shalloc(infop, len, 0, &namep)) != 0)
+ if ((ret = __env_alloc(infop, len, &namep)) != 0)
goto err;
fnp->name_off = R_OFFSET(infop, namep);
memcpy(namep, name, len);
@@ -133,6 +132,13 @@ __dbreg_setup(dbp, name, create_txnid)
fnp->meta_pgno = dbp->meta_pgno;
fnp->create_txnid = create_txnid;
+ if (F_ISSET(dbp, DB_AM_INMEM))
+ F_SET(fnp, DB_FNAME_INMEM);
+ if (F_ISSET(dbp, DB_AM_RECOVER))
+ F_SET(fnp, DB_FNAME_RECOVER);
+ fnp->txn_ref = 1;
+ fnp->mutex = dbp->mutex;
+
dbp->log_filename = fnp;
return (0);
@@ -147,7 +153,8 @@ err: LOG_SYSTEM_UNLOCK(dbenv);
/*
* __dbreg_teardown --
- * Destroy a DB handle's FNAME struct.
+ * Destroy a DB handle's FNAME struct. This is only called when closing
+ * the DB.
*
* PUBLIC: int __dbreg_teardown __P((DB *));
*/
@@ -155,34 +162,54 @@ int
__dbreg_teardown(dbp)
DB *dbp;
{
- DB_ENV *dbenv;
- DB_LOG *dblp;
- REGINFO *infop;
- FNAME *fnp;
-
- dbenv = dbp->dbenv;
- dblp = dbenv->lg_handle;
- infop = &dblp->reginfo;
- fnp = dbp->log_filename;
+ int ret;
/*
* We may not have an FNAME if we were never opened. This is not an
* error.
*/
- if (fnp == NULL || F_ISSET(fnp, DB_FNAME_NOTLOGGED))
+ if (dbp->log_filename == NULL)
return (0);
+ ret = __dbreg_teardown_int(dbp->dbenv, dbp->log_filename);
+
+ /* We freed the copy of the mutex from the FNAME. */
+ dbp->log_filename = NULL;
+ dbp->mutex = MUTEX_INVALID;
+
+ return (ret);
+}
+
+/*
+ * __dbreg_teardown_int --
+ * Destroy an FNAME struct.
+ *
+ * PUBLIC: int __dbreg_teardown_int __P((DB_ENV *, FNAME *));
+ */
+int
+__dbreg_teardown_int(dbenv, fnp)
+ DB_ENV *dbenv;
+ FNAME *fnp;
+{
+ DB_LOG *dblp;
+ REGINFO *infop;
+ int ret;
+
+ if (F_ISSET(fnp, DB_FNAME_NOTLOGGED))
+ return (0);
+ dblp = dbenv->lg_handle;
+ infop = &dblp->reginfo;
+
DB_ASSERT(dbenv, fnp->id == DB_LOGFILEID_INVALID);
+ ret = __mutex_free(dbenv, &fnp->mutex);
LOG_SYSTEM_LOCK(dbenv);
if (fnp->name_off != INVALID_ROFF)
- __db_shalloc_free(infop, R_ADDR(infop, fnp->name_off));
- __db_shalloc_free(infop, fnp);
+ __env_alloc_free(infop, R_ADDR(infop, fnp->name_off));
+ __env_alloc_free(infop, fnp);
LOG_SYSTEM_UNLOCK(dbenv);
- dbp->log_filename = NULL;
-
- return (0);
+ return (ret);
}
/*
@@ -411,16 +438,47 @@ __dbreg_revoke_id(dbp, have_lock, force_id)
int32_t force_id;
{
DB_ENV *dbenv;
- DB_LOG *dblp;
+ DB_REP *db_rep;
+ int push;
+
+ dbenv = dbp->dbenv;
+
+ /*
+ * If we are not in recovery but the file was opened for a recovery
+ * operation, then this process aborted a transaction for another
+ * process and the id may still be in use, so don't reuse this id.
+ * If our fid generation in replication has changed, this fid
+ * should not be reused
+ */
+ db_rep = dbenv->rep_handle;
+ push = (!F_ISSET(dbp, DB_AM_RECOVER) || IS_RECOVERING(dbenv)) &&
+ (!REP_ON(dbenv) || ((REP *)db_rep->region)->gen == dbp->fid_gen);
+
+ return (__dbreg_revoke_id_int(dbp->dbenv,
+ dbp->log_filename, have_lock, push, force_id));
+}
+/*
+ * __dbreg_revoke_id_int --
+ * Revoke a log, in preparation for closing it, but without logging
+ * the close.
+ *
+ * PUBLIC: int __dbreg_revoke_id_int
+ * PUBLIC: __P((DB_ENV *, FNAME *, int, int, int32_t));
+ */
+int
+__dbreg_revoke_id_int(dbenv, fnp, have_lock, push, force_id)
+ DB_ENV *dbenv;
FNAME *fnp;
+ int have_lock, push;
+ int32_t force_id;
+{
+ DB_LOG *dblp;
LOG *lp;
int32_t id;
int ret;
- dbenv = dbp->dbenv;
dblp = dbenv->lg_handle;
lp = dblp->reginfo.primary;
- fnp = dbp->log_filename;
ret = 0;
/* If we lack an ID, this is a null-op. */
@@ -450,19 +508,14 @@ __dbreg_revoke_id(dbp, have_lock, force_id)
SH_TAILQ_REMOVE(&lp->fq, fnp, q, __fname);
/*
- * Remove this id from the dbentry table and push it onto the
+ * This FNAME may be for a DBP which is already closed. Its ID may
+ * still be in use by an aborting transaction. If not,
+ * remove this id from the dbentry table and push it onto the
* free list.
*/
- if ((ret = __dbreg_rem_dbentry(dblp, id)) == 0) {
- /*
- * If we are not in recovery but the file was opened
- * for a recovery operation, then this process aborted
- * a transaction for another process and the id may
- * still be in use, so don't reuse this id.
- */
- if (!F_ISSET(dbp, DB_AM_RECOVER) || IS_RECOVERING(dbenv))
- ret = __dbreg_push_id(dbenv, dbp, id);
- }
+ if (!F_ISSET(fnp, DB_FNAME_CLOSED) &&
+ (ret = __dbreg_rem_dbentry(dblp, id)) == 0 && push)
+ ret = __dbreg_push_id(dbenv, id);
if (!have_lock)
MUTEX_UNLOCK(dbenv, lp->mtx_filelist);
@@ -472,7 +525,7 @@ __dbreg_revoke_id(dbp, have_lock, force_id)
/*
* __dbreg_close_id --
* Take a dbreg id away from a dbp that we're closing, and log
- * the unregistry.
+ * the unregistry if the refcount goes to 0.
*
* PUBLIC: int __dbreg_close_id __P((DB *, DB_TXN *, u_int32_t));
*/
@@ -486,7 +539,7 @@ __dbreg_close_id(dbp, txn, op)
DB_LOG *dblp;
FNAME *fnp;
LOG *lp;
- int ret;
+ int ret, t_ret;
dbenv = dbp->dbenv;
dblp = dbenv->lg_handle;
@@ -500,6 +553,37 @@ __dbreg_close_id(dbp, txn, op)
if (fnp->id == DB_LOGFILEID_INVALID)
return (__dbreg_revoke_id(dbp, 0, DB_LOGFILEID_INVALID));
+ /*
+ * If we are the last reference to this db then we need to log it
+ * as closed. Otherwise the last transaction will do the logging.
+ * Remove the DBP from the db entry table since it can nolonger
+ * be used. If we abort it will have to be reopened.
+ */
+ ret = 0;
+ DB_ASSERT(dbenv, fnp->txn_ref > 0);
+ if (fnp->txn_ref > 1) {
+ MUTEX_LOCK(dbenv, dbp->mutex);
+ if (fnp->txn_ref > 1) {
+ fnp->txn_ref--;
+ if (!F_ISSET(fnp, DB_FNAME_CLOSED) &&
+ (t_ret = __dbreg_rem_dbentry(
+ dbenv->lg_handle, fnp->id)) != 0 && ret == 0)
+ ret = t_ret;
+
+ /*
+ * The DB handle has been closed in the logging system.
+ * Transactions may still have a ref to this name.
+ * Mark it so that if recovery reopens the file id
+ * the transaction will not close the wrong handle.
+ */
+ F_SET(fnp, DB_FNAME_CLOSED);
+ MUTEX_UNLOCK(dbenv, dbp->mutex);
+ /* The mutex now lives only in the FNAME. */
+ dbp->mutex = MUTEX_INVALID;
+ dbp->log_filename = NULL;
+ goto no_log;
+ }
+ }
MUTEX_LOCK(dbenv, lp->mtx_filelist);
if ((ret = __dbreg_log_close(dbenv, fnp, txn, op)) != 0)
@@ -507,9 +591,58 @@ __dbreg_close_id(dbp, txn, op)
ret = __dbreg_revoke_id(dbp, 1, DB_LOGFILEID_INVALID);
err: MUTEX_UNLOCK(dbenv, lp->mtx_filelist);
+
+ if ((t_ret = __dbreg_teardown(dbp)) != 0 && ret == 0)
+ ret = t_ret;
+no_log:
return (ret);
}
+/*
+ * __dbreg_close_id_int --
+ * Close down a dbreg id and log the unregistry. This is called only
+ * when a transaction has the last ref to the fname.
+ *
+ * PUBLIC: int __dbreg_close_id_int __P((DB_ENV *, FNAME *, u_int32_t, int));
+ */
+int
+__dbreg_close_id_int(dbenv, fnp, op, locked)
+ DB_ENV *dbenv;
+ FNAME *fnp;
+ u_int32_t op;
+ int locked;
+{
+ DB_LOG *dblp;
+ LOG *lp;
+ int ret, t_ret;
+ DB_ASSERT(dbenv, fnp->txn_ref == 1);
+ dblp = dbenv->lg_handle;
+ lp = dblp->reginfo.primary;
+
+ if (fnp->id == DB_LOGFILEID_INVALID)
+ return (__dbreg_revoke_id_int(dbenv,
+ fnp, locked, 1, DB_LOGFILEID_INVALID));
+
+ if (F_ISSET(fnp, DB_FNAME_RECOVER))
+ return (__dbreg_close_file(dbenv, fnp));
+ /*
+ * If log_close fails then it will mark the name DB_FNAME_NOTLOGGED
+ * and the id must persist.
+ */
+ if (!locked)
+ MUTEX_LOCK(dbenv, lp->mtx_filelist);
+ if ((ret = __dbreg_log_close(dbenv, fnp, NULL, op)) != 0)
+ goto err;
+
+ ret = __dbreg_revoke_id_int(dbenv, fnp, 1, 1, DB_LOGFILEID_INVALID);
+
+err: if (!locked)
+ MUTEX_UNLOCK(dbenv, lp->mtx_filelist);
+
+ if ((t_ret = __dbreg_teardown_int(dbenv, fnp)) != 0 && ret == 0)
+ ret = t_ret;
+ return (ret);
+}
/*
* __dbreg_log_close --
*
@@ -580,13 +713,11 @@ __dbreg_log_close(dbenv, fnp, txn, op)
* is already locked.
*/
static int
-__dbreg_push_id(dbenv, dbp, id)
+__dbreg_push_id(dbenv, id)
DB_ENV *dbenv;
- DB *dbp;
int32_t id;
{
DB_LOG *dblp;
- DB_REP *db_rep;
LOG *lp;
REGINFO *infop;
int32_t *stack, *newstack;
@@ -595,20 +726,18 @@ __dbreg_push_id(dbenv, dbp, id)
dblp = dbenv->lg_handle;
infop = &dblp->reginfo;
lp = infop->primary;
- db_rep = dbenv->rep_handle;
- /*
- * If our fid generation in replication has changed, this fid should
- * not be pushed back onto the stack.
- */
- if (REP_ON(dbenv) && ((REP *)db_rep->region)->gen != dbp->fid_gen)
+ if (id == lp->fid_max - 1) {
+ lp->fid_max--;
return (0);
+ }
+
/* Check if we have room on the stack. */
if (lp->free_fid_stack == INVALID_ROFF ||
lp->free_fids_alloced <= lp->free_fids + 1) {
LOG_SYSTEM_LOCK(dbenv);
- if ((ret = __db_shalloc(infop,
- (lp->free_fids_alloced + 20) * sizeof(u_int32_t), 0,
+ if ((ret = __env_alloc(infop,
+ (lp->free_fids_alloced + 20) * sizeof(u_int32_t),
&newstack)) != 0) {
LOG_SYSTEM_UNLOCK(dbenv);
return (ret);
@@ -618,7 +747,7 @@ __dbreg_push_id(dbenv, dbp, id)
stack = R_ADDR(infop, lp->free_fid_stack);
memcpy(newstack, stack,
lp->free_fids_alloced * sizeof(u_int32_t));
- __db_shalloc_free(infop, stack);
+ __env_alloc_free(infop, stack);
}
lp->free_fid_stack = R_OFFSET(infop, newstack);
lp->free_fids_alloced += 20;
@@ -674,6 +803,9 @@ __dbreg_pluck_id(dbenv, id)
dblp = dbenv->lg_handle;
lp = dblp->reginfo.primary;
+ if (id >= lp->fid_max)
+ return (0);
+
/* Do we have anything to look at? */
if (lp->free_fid_stack != INVALID_ROFF) {
stack = R_ADDR(&dblp->reginfo, lp->free_fid_stack);
diff --git a/db/dbreg/dbreg.src b/db/dbreg/dbreg.src
index 6f229e287..b5a11921f 100644
--- a/db/dbreg/dbreg.src
+++ b/db/dbreg/dbreg.src
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: dbreg.src,v 12.5 2006/08/24 14:45:31 bostic Exp $
+ * $Id: dbreg.src,v 12.7 2007/05/17 15:15:07 bostic Exp $
*/
PREFIX __dbreg
diff --git a/db/dbreg/dbreg_auto.c b/db/dbreg/dbreg_auto.c
index 519786c14..4155d91b9 100644
--- a/db/dbreg/dbreg_auto.c
+++ b/db/dbreg/dbreg_auto.c
@@ -173,6 +173,7 @@ __dbreg_register_log(dbenv, txnp, ret_lsnp, flags,
*ret_lsnp = *rlsnp;
}
} else {
+ ret = 0;
#ifdef DIAGNOSTIC
/*
* Set the debug bit if we are going to log non-durable
@@ -182,10 +183,9 @@ __dbreg_register_log(dbenv, txnp, ret_lsnp, flags,
rectype |= DB_debug_FLAG;
memcpy(logrec.data, &rectype, sizeof(rectype));
- ret = __log_put(dbenv,
- rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
-#else
- ret = 0;
+ if (!IS_REP_CLIENT(dbenv))
+ ret = __log_put(dbenv,
+ rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
#endif
STAILQ_INSERT_HEAD(&txnp->logs, lr, links);
F_SET((TXN_DETAIL *)txnp->td, TXN_DTL_INMEMORY);
diff --git a/db/dbreg/dbreg_rec.c b/db/dbreg/dbreg_rec.c
index 180239842..29c3124ea 100644
--- a/db/dbreg/dbreg_rec.c
+++ b/db/dbreg/dbreg_rec.c
@@ -1,8 +1,7 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*/
/*
* Copyright (c) 1995, 1996
@@ -32,7 +31,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: dbreg_rec.c,v 12.17 2006/09/07 20:05:28 bostic Exp $
+ * $Id: dbreg_rec.c,v 12.21 2007/05/17 15:15:07 bostic Exp $
*/
#include "db_config.h"
@@ -224,17 +223,27 @@ __dbreg_register_recover(dbenv, dbtp, lsnp, op, info)
* assigned a fileid to. Be sure that
* we only close dbps that we opened in
* the recovery code or that were opened
- * inside a currently aborting transaction.
+ * inside a currently aborting transaction
+ * but not by the recovery code.
*/
- do_rem = F_ISSET(dbp, DB_AM_RECOVER) ||
- op == DB_TXN_ABORT;
+ do_rem = F_ISSET(dbp, DB_AM_RECOVER) ?
+ op != DB_TXN_ABORT : op == DB_TXN_ABORT;
MUTEX_UNLOCK(dbenv, dblp->mtx_dbreg);
- if (op == DB_TXN_ABORT)
- (void)__dbreg_close_id(dbp,
- NULL, DBREG_RCLOSE);
- else
- (void)__dbreg_revoke_id(dbp, 0,
- DB_LOGFILEID_INVALID);
+ /*
+ * If we are aborting an open then this
+ * DBP can only be used in this txn, so
+ * log it closed.
+ */
+ if (!F_ISSET(dbp, DB_AM_RECOVER)) {
+ if (op == DB_TXN_ABORT)
+ ret = __dbreg_log_close(dbenv,
+ dbp->log_filename,
+ NULL, DBREG_RCLOSE);
+ if (ret == 0)
+ (void)__dbreg_revoke_id(dbp, 0,
+ DB_LOGFILEID_INVALID);
+ ret = 0;
+ }
} else if (dbe->deleted) {
MUTEX_UNLOCK(dbenv, dblp->mtx_dbreg);
if ((ret = __dbreg_rem_dbentry(
@@ -272,15 +281,11 @@ __dbreg_register_recover(dbenv, dbtp, lsnp, op, info)
ret = 0;
}
- if (op == DB_TXN_ABORT &&
- !F_ISSET(dbp, DB_AM_RECOVER)) {
+ if (op == DB_TXN_ABORT) {
if ((t_ret = __db_refresh(dbp,
NULL, DB_NOSYNC, NULL, 0)) != 0 && ret == 0)
ret = t_ret;
} else {
- if (op == DB_TXN_APPLY &&
- (t_ret = __db_sync(dbp)) != 0 && ret == 0)
- ret = t_ret;
if ((t_ret = __db_close(
dbp, NULL, DB_NOSYNC)) != 0 && ret == 0)
ret = t_ret;
diff --git a/db/dbreg/dbreg_stat.c b/db/dbreg/dbreg_stat.c
index c19adc688..6c018cb75 100644
--- a/db/dbreg/dbreg_stat.c
+++ b/db/dbreg/dbreg_stat.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: dbreg_stat.c,v 12.9 2006/08/24 14:45:32 bostic Exp $
+ * $Id: dbreg_stat.c,v 12.12 2007/05/17 15:15:07 bostic Exp $
*/
#include "db_config.h"
@@ -83,7 +82,6 @@ __dbreg_print_dblist(dbenv, flags)
dblp = dbenv->lg_handle;
lp = dblp->reginfo.primary;
- __db_msg(dbenv, "%s", DB_GLOBAL(db_line));
__db_msg(dbenv, "LOG FNAME list:");
__mutex_print_debug_single(
dbenv, "File name mutex", lp->mtx_filelist, flags);
diff --git a/db/dbreg/dbreg_util.c b/db/dbreg/dbreg_util.c
index 5037810c1..7dc0b7113 100644
--- a/db/dbreg/dbreg_util.c
+++ b/db/dbreg/dbreg_util.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: dbreg_util.c,v 12.20 2006/09/09 14:28:22 bostic Exp $
+ * $Id: dbreg_util.c,v 12.29 2007/06/13 18:21:31 ubell Exp $
*/
#include "db_config.h"
@@ -91,11 +90,12 @@ __dbreg_rem_dbentry(dblp, ndx)
* __dbreg_log_files --
* Put a DBREG_CHKPNT/CLOSE log record for each open database.
*
- * PUBLIC: int __dbreg_log_files __P((DB_ENV *));
+ * PUBLIC: int __dbreg_log_files __P((DB_ENV *, u_int32_t));
*/
int
-__dbreg_log_files(dbenv)
+__dbreg_log_files(dbenv, opcode)
DB_ENV *dbenv;
+ u_int32_t opcode;
{
DB_LOG *dblp;
DB_LSN r_unused;
@@ -137,7 +137,7 @@ __dbreg_log_files(dbenv)
if ((ret = __dbreg_register_log(dbenv,
NULL, &r_unused,
F_ISSET(fnp, DB_FNAME_DURABLE) ? 0 : DB_LOG_NOT_DURABLE,
- F_ISSET(dblp, DBLOG_RECOVER) ? DBREG_RCLOSE : DBREG_CHKPNT,
+ opcode,
dbtp, &fid_dbt, fnp->id, fnp->s_type, fnp->meta_pgno,
TXN_INVALID)) != 0)
break;
@@ -156,11 +156,12 @@ __dbreg_log_files(dbenv)
* db_rename. We may not have flushed the log_register record that
* closes the file.
*
- * PUBLIC: int __dbreg_close_files __P((DB_ENV *));
+ * PUBLIC: int __dbreg_close_files __P((DB_ENV *, int));
*/
int
-__dbreg_close_files(dbenv)
+__dbreg_close_files(dbenv, do_restored)
DB_ENV *dbenv;
+ int do_restored;
{
DB_LOG *dblp;
DB *dbp;
@@ -183,12 +184,6 @@ __dbreg_close_files(dbenv)
* Before doing so, we need to revoke their log fileids
* so that we don't end up leaving around FNAME entries
* for dbps that shouldn't have them.
- *
- * Any FNAME entries that were marked NOTLOGGED had the
- * log write fail while they were being closed. Since it's
- * too late to be logging now we flag that as a failure
- * so recovery will be run. This will get returned by
- * __dbreg_revoke_id.
*/
if ((dbp = dblp->dbentry[i].dbp) != NULL) {
/*
@@ -202,10 +197,16 @@ __dbreg_close_files(dbenv)
* we're in this loop anyway--we're in the process of
* making all outstanding dbps invalid.
*/
+ /*
+ * If we only want to close those FNAMES marked
+ * as restored, check now.
+ */
+ if (do_restored &&
+ !F_ISSET(dbp->log_filename, DB_FNAME_RESTORED))
+ continue;
MUTEX_UNLOCK(dbenv, dblp->mtx_dbreg);
if (F_ISSET(dbp, DB_AM_RECOVER))
- t_ret = __db_close(dbp,
- NULL, dbp->mpf == NULL ? DB_NOSYNC : 0);
+ t_ret = __db_close(dbp, NULL, DB_NOSYNC);
else
t_ret = __dbreg_revoke_id(
dbp, 0, DB_LOGFILEID_INVALID);
@@ -222,16 +223,72 @@ __dbreg_close_files(dbenv)
}
/*
+ * __dbreg_close_file --
+ * Close a database file opened by recovery.
+ * PUBLIC: int __dbreg_close_file __P((DB_ENV *, FNAME *));
+ */
+int
+__dbreg_close_file(dbenv, fnp)
+ DB_ENV *dbenv;
+ FNAME *fnp;
+{
+ DB_LOG *dblp;
+ DB *dbp;
+
+ dblp = dbenv->lg_handle;
+
+ dbp = dblp->dbentry[fnp->id].dbp;
+ if (dbp == NULL)
+ return (0);
+ DB_ASSERT(dbenv, dbp->log_filename == fnp);
+ DB_ASSERT(dbenv, F_ISSET(dbp, DB_AM_RECOVER));
+ return (__db_close(dbp, NULL, DB_NOSYNC));
+}
+
+/*
+ * __dbreg_mark_restored --
+ * Mark files when we change replication roles and there are outstanding
+ * prepared txns that may use these files. These will be invalidated later
+ * when all outstanding prepared txns are resolved.
+ *
+ * PUBLIC: int __dbreg_mark_restored __P((DB_ENV *));
+ */
+int
+__dbreg_mark_restored(dbenv)
+ DB_ENV *dbenv;
+{
+ DB_LOG *dblp;
+ FNAME *fnp;
+ LOG *lp;
+
+ /* If we haven't initialized logging, we have nothing to do. */
+ if (!LOGGING_ON(dbenv))
+ return (0);
+
+ dblp = dbenv->lg_handle;
+ lp = dblp->reginfo.primary;
+
+ MUTEX_LOCK(dbenv, lp->mtx_filelist);
+ SH_TAILQ_FOREACH(fnp, &lp->fq, q, __fname)
+ if (fnp->id != DB_LOGFILEID_INVALID)
+ F_SET(fnp, DB_FNAME_RESTORED);
+
+ MUTEX_UNLOCK(dbenv, lp->mtx_filelist);
+ return (0);
+}
+
+/*
* __dbreg_invalidate_files --
* Invalidate files when we change replication roles. Save the
* id so that another process will be able to clean up the information
* when it notices.
*
- * PUBLIC: int __dbreg_invalidate_files __P((DB_ENV *));
+ * PUBLIC: int __dbreg_invalidate_files __P((DB_ENV *, int));
*/
int
-__dbreg_invalidate_files(dbenv)
+__dbreg_invalidate_files(dbenv, do_restored)
DB_ENV *dbenv;
+ int do_restored;
{
DB_LOG *dblp;
FNAME *fnp;
@@ -248,6 +305,15 @@ __dbreg_invalidate_files(dbenv)
ret = 0;
MUTEX_LOCK(dbenv, lp->mtx_filelist);
SH_TAILQ_FOREACH(fnp, &lp->fq, q, __fname) {
+ /*
+ * Normally, skip any file with DB_FNAME_RESTORED
+ * set. If do_restored is set, only invalidate
+ * those files with the flag set and skip all others.
+ */
+ if (F_ISSET(fnp, DB_FNAME_RESTORED) && !do_restored)
+ continue;
+ if (!F_ISSET(fnp, DB_FNAME_RESTORED) && do_restored)
+ continue;
if (fnp->id != DB_LOGFILEID_INVALID) {
if ((ret = __dbreg_log_close(dbenv,
fnp, NULL, DBREG_RCLOSE)) != 0)
@@ -354,16 +420,16 @@ __dbreg_id_to_db_int(dbenv, txn, dbpp, ndx, inc, tryopen)
* bottom. If the __dbreg_do_open succeeded, then we don't need
* to do any of the remaining error checking at the end of this
* routine.
- * XXX I am sending a NULL txnlist and 0 txnid which may be
- * completely broken ;(
+ * If TXN_INVALID is passed then no txnlist is needed.
*/
if ((ret = __dbreg_do_open(dbenv, txn, dblp,
- fname->ufid, name, fname->s_type,
- ndx, fname->meta_pgno, NULL, 0, DBREG_OPEN)) != 0)
+ fname->ufid, name, fname->s_type, ndx, fname->meta_pgno,
+ NULL, TXN_INVALID, F_ISSET(fname, DB_FNAME_INMEM) ?
+ DBREG_REOPEN : DBREG_OPEN)) != 0)
return (ret);
*dbpp = dblp->dbentry[ndx].dbp;
- return (0);
+ return (*dbpp == NULL ? DB_DELETED : 0);
}
/*
@@ -527,7 +593,7 @@ __dbreg_do_open(dbenv,
cstat = TXN_EXPECTED;
fname = name;
dname = NULL;
- if ((ret = db_create(&dbp, lp->dbenv, 0)) != 0)
+ if ((ret = __db_create_internal(&dbp, lp->dbenv, 0)) != 0)
return (ret);
/*
@@ -618,7 +684,7 @@ __dbreg_check_master(dbenv, uid, name)
int ret;
ret = 0;
- if ((ret = db_create(&dbp, dbenv, 0)) != 0)
+ if ((ret = __db_create_internal(&dbp, dbenv, 0)) != 0)
return (ret);
F_SET(dbp, DB_AM_RECOVER);
ret = __db_open(dbp, NULL,
diff --git a/db/dist/Makefile.in b/db/dist/Makefile.in
index 190103e6b..da00f6a93 100644
--- a/db/dist/Makefile.in
+++ b/db/dist/Makefile.in
@@ -1,4 +1,4 @@
-# $Id: Makefile.in,v 12.79 2006/09/13 14:53:38 mjc Exp $
+# $Id: Makefile.in,v 12.106 2007/07/05 18:35:02 bostic Exp $
srcdir= @srcdir@/..
builddir=.
@@ -167,9 +167,15 @@ QUEUE_OBJS=\
qam_open@o@ qam_rec@o@ qam_stat@o@ qam_upgrade@o@
QUEUE_VRFY_OBJS=\
qam_verify@o@
+LOCK_OBJS=\
+ lock@o@ lock_deadlock@o@ lock_failchk@o@ lock_id@o@ lock_list@o@ \
+ lock_method@o@ lock_region@o@ lock_stat@o@ lock_timer@o@ lock_util@o@
+MUTEX_OBJS=\
+ mut_alloc@o@ mut_failchk@o@ mut_method@o@ mut_region@o@ mut_stat@o@
REP_OBJS=\
- rep_auto@o@ rep_backup@o@ rep_elect@o@ rep_log@o@ rep_method@o@ \
- rep_record@o@ rep_region@o@ rep_stat@o@ rep_util@o@ rep_verify@o@
+ rep_auto@o@ rep_backup@o@ rep_elect@o@ rep_lease@o@ rep_log@o@ \
+ rep_method@o@ rep_record@o@ rep_region@o@ rep_stat@o@ \
+ rep_util@o@ rep_verify@o@
REPMGR_OBJS=\
getaddrinfo@o@\
repmgr_elect@o@ repmgr_method@o@ repmgr_msg@o@ repmgr_net@o@ \
@@ -182,35 +188,32 @@ PRINT_OBJS=\
C_OBJS= @ADDITIONAL_OBJS@ @REPLACEMENT_OBJS@ @CRYPTO_OBJS@ @RPC_CLIENT_OBJS@ \
crdel_auto@o@ crdel_rec@o@ ctime@o@ db@o@ db_am@o@ db_auto@o@ \
- db_byteorder@o@ db_cam@o@ db_cds@o@ db_clock@o@ db_conv@o@ \
- db_dispatch@o@ db_dup@o@ db_err@o@ db_getlong@o@ db_idspace@o@ \
- db_iface@o@ db_join@o@ db_log2@o@ db_meta@o@ db_method@o@ db_open@o@ \
+ db_byteorder@o@ db_cam@o@ db_cds@o@ db_conv@o@ db_dispatch@o@ \
+ db_dup@o@ db_err@o@ db_getlong@o@ db_idspace@o@ db_iface@o@ \
+ db_join@o@ db_log2@o@ db_meta@o@ db_method@o@ db_open@o@ \
db_overflow@o@ db_pr@o@ db_rec@o@ db_reclaim@o@ db_remove@o@ \
- db_rename@o@ db_ret@o@ db_salloc@o@ db_setid@o@ db_setlsn@o@ \
- db_shash@o@ db_stati@o@ db_truncate@o@ db_upg@o@ db_upg_opd@o@ \
- dbm@o@ dbreg@o@ dbreg_auto@o@ dbreg_rec@o@ dbreg_stat@o@ \
- dbreg_util@o@ env_config@o@ env_failchk@o@ env_file@o@ \
- env_method@o@ env_open@o@ env_recover@o@ env_region@o@ \
- env_register@o@ env_stat@o@ fileops_auto@o@ fop_basic@o@ \
- fop_rec@o@ fop_util@o@ hash_func@o@ hmac@o@ hsearch@o@ lock@o@ \
- lock_deadlock@o@ lock_failchk@o@ lock_id@o@ lock_list@o@ \
- lock_method@o@ lock_region@o@ lock_stat@o@ lock_timer@o@ \
- lock_util@o@ log@o@ log_archive@o@ log_compare@o@ log_debug@o@ \
- log_get@o@ log_method@o@ log_put@o@ log_stat@o@ mkpath@o@ \
- mp_alloc@o@ mp_bh@o@ mp_fget@o@ mp_fmethod@o@ mp_fopen@o@ \
- mp_fput@o@ mp_fset@o@ mp_method@o@ mp_mvcc@o@ mp_region@o@ \
- mp_register@o@ mp_stat@o@ mp_sync@o@ mp_trickle@o@ mut_alloc@o@ \
- mut_failchk@o@ mut_method@o@ mut_region@o@ mut_stat@o@ os_abs@o@ \
- os_alloc@o@ os_clock@o@ os_config@o@ os_dir@o@ os_errno@o@ \
- os_fid@o@ os_flock@o@ os_fsync@o@ os_fzero@o@ os_getenv@o@ \
- os_handle@o@ os_map@o@ os_method@o@ os_mkdir@o@ os_oflags@o@ \
- os_open@o@ os_pid@o@ os_region@o@ os_rename@o@ os_root@o@ \
- os_rpath@o@ os_rw@o@ os_seek@o@ os_sleep@o@ os_spin@o@ \
- os_stat@o@ os_tmpdir@o@ os_truncate@o@ os_uid@o@ os_unlink@o@ \
- os_yield@o@ seq_stat@o@ sequence@o@ sha1@o@ snprintf@o@ txn@o@ \
- txn_auto@o@ txn_chkpt@o@ txn_failchk@o@ txn_method@o@ \
- txn_rec@o@ txn_recover@o@ txn_region@o@ txn_stat@o@ \
- txn_util@o@ xa@o@ xa_db@o@ xa_map@o@
+ db_rename@o@ db_ret@o@ db_setid@o@ db_setlsn@o@ db_shash@o@ \
+ db_stati@o@ db_truncate@o@ db_upg@o@ db_upg_opd@o@ dbm@o@ \
+ dbreg@o@ dbreg_auto@o@ dbreg_rec@o@ dbreg_stat@o@ dbreg_util@o@ \
+ env_alloc@o@ env_config@o@ env_failchk@o@ env_file@o@ \
+ env_globals@o@ env_method@o@ env_name@o@ env_open@o@ \
+ env_recover@o@ env_region@o@ env_register@o@ env_stat@o@ \
+ fileops_auto@o@ fop_basic@o@ fop_rec@o@ fop_util@o@ hash_func@o@ \
+ hmac@o@ hsearch@o@ log@o@ log_archive@o@ log_compare@o@ \
+ log_debug@o@ log_get@o@ log_method@o@ log_put@o@ log_stat@o@ \
+ mkpath@o@ mp_alloc@o@ mp_bh@o@ mp_fget@o@ mp_fmethod@o@ \
+ mp_fopen@o@ mp_fput@o@ mp_fset@o@ mp_method@o@ mp_mvcc@o@ \
+ mp_region@o@ mp_register@o@ mp_resize@o@ mp_stat@o@ mp_sync@o@ \
+ mp_trickle@o@ os_abort@o@ os_abs@o@ os_alloc@o@ os_clock@o@ \
+ os_config@o@ os_dir@o@ os_errno@o@ os_fid@o@ os_flock@o@ \
+ os_fsync@o@ os_fzero@o@ os_getenv@o@ os_handle@o@ os_map@o@ \
+ os_method@o@ os_mkdir@o@ os_oflags@o@ os_open@o@ os_pid@o@ \
+ os_region@o@ os_rename@o@ os_root@o@ os_rpath@o@ os_rw@o@ \
+ os_seek@o@ os_sleep@o@ os_spin@o@ os_stat@o@ os_tmpdir@o@ \
+ os_truncate@o@ os_uid@o@ os_unlink@o@ os_yield@o@ seq_stat@o@ \
+ sequence@o@ sha1@o@ snprintf@o@ txn@o@ txn_auto@o@ txn_chkpt@o@ \
+ txn_failchk@o@ txn_method@o@ txn_rec@o@ txn_recover@o@ \
+ txn_region@o@ txn_stat@o@ txn_util@o@ xa@o@ xa_db@o@ xa_map@o@
CXX_OBJS=\
cxx_db@o@ cxx_dbc@o@ cxx_dbt@o@ cxx_env@o@ cxx_except@o@ cxx_lock@o@ \
@@ -240,6 +243,7 @@ JAVA_DBSRCS=\
$(JAVA_SLEEPYCAT)/bind/serial/TupleSerialKeyCreator.java \
$(JAVA_SLEEPYCAT)/bind/serial/TupleSerialMarshalledBinding.java \
$(JAVA_SLEEPYCAT)/bind/serial/TupleSerialMarshalledKeyCreator.java \
+ $(JAVA_SLEEPYCAT)/bind/tuple/BigIntegerBinding.java \
$(JAVA_SLEEPYCAT)/bind/tuple/BooleanBinding.java \
$(JAVA_SLEEPYCAT)/bind/tuple/ByteBinding.java \
$(JAVA_SLEEPYCAT)/bind/tuple/CharacterBinding.java \
@@ -311,7 +315,7 @@ JAVA_DBSRCS=\
$(JAVA_SLEEPYCAT)/db/EnvironmentConfig.java \
$(JAVA_SLEEPYCAT)/db/ErrorHandler.java \
$(JAVA_SLEEPYCAT)/db/EventHandler.java \
- $(JAVA_SLEEPYCAT)/db/EventType.java \
+ $(JAVA_SLEEPYCAT)/db/EventHandlerAdapter.java \
$(JAVA_SLEEPYCAT)/db/FeedbackHandler.java \
$(JAVA_SLEEPYCAT)/db/HashStats.java \
$(JAVA_SLEEPYCAT)/db/Hasher.java \
@@ -352,8 +356,11 @@ JAVA_DBSRCS=\
$(JAVA_SLEEPYCAT)/db/ReplicationHoldElectionException.java \
$(JAVA_SLEEPYCAT)/db/ReplicationHostAddress.java \
$(JAVA_SLEEPYCAT)/db/ReplicationJoinFailureException.java \
+ $(JAVA_SLEEPYCAT)/db/ReplicationLeaseExpiredException.java \
+ $(JAVA_SLEEPYCAT)/db/ReplicationLeaseTimeoutException.java \
$(JAVA_SLEEPYCAT)/db/ReplicationLockoutException.java \
$(JAVA_SLEEPYCAT)/db/ReplicationManagerAckPolicy.java \
+ $(JAVA_SLEEPYCAT)/db/ReplicationManagerStats.java \
$(JAVA_SLEEPYCAT)/db/ReplicationManagerStartPolicy.java \
$(JAVA_SLEEPYCAT)/db/ReplicationSiteUnavailableException.java \
$(JAVA_SLEEPYCAT)/db/ReplicationStats.java \
@@ -365,6 +372,7 @@ JAVA_DBSRCS=\
$(JAVA_SLEEPYCAT)/db/SecondaryCursor.java \
$(JAVA_SLEEPYCAT)/db/SecondaryDatabase.java \
$(JAVA_SLEEPYCAT)/db/SecondaryKeyCreator.java \
+ $(JAVA_SLEEPYCAT)/db/SecondaryMultiKeyCreator.java \
$(JAVA_SLEEPYCAT)/db/Sequence.java \
$(JAVA_SLEEPYCAT)/db/SequenceConfig.java \
$(JAVA_SLEEPYCAT)/db/SequenceStats.java \
@@ -372,6 +380,7 @@ JAVA_DBSRCS=\
$(JAVA_SLEEPYCAT)/db/Transaction.java \
$(JAVA_SLEEPYCAT)/db/TransactionConfig.java \
$(JAVA_SLEEPYCAT)/db/TransactionStats.java \
+ $(JAVA_SLEEPYCAT)/db/VerboseConfig.java \
$(JAVA_SLEEPYCAT)/db/VerifyConfig.java \
$(JAVA_SLEEPYCAT)/db/VersionMismatchException.java \
$(JAVA_SLEEPYCAT)/db/internal/Db.java \
@@ -522,8 +531,9 @@ RPC_CXXSRV_OBJS=\
UTIL_PROGS=\
@ADDITIONAL_PROGS@ \
- db_archive db_checkpoint db_deadlock db_dump db_hotbackup \
- db_load db_printlog db_recover db_stat db_upgrade db_verify
+ db_archive db_checkpoint db_codegen db_deadlock db_dump \
+ db_hotbackup db_load db_printlog db_recover db_stat db_upgrade \
+ db_verify
##################################################
# List of files installed into the library directory.
@@ -573,7 +583,7 @@ $(libdb): $(DEF_LIB)
# Real static C library.
$(libdb_version): $(C_OBJS)
$(AR) cr $@ $(C_OBJS)
- test "$(RANLIB)" = "none" || $(RANLIB) $@
+ $(RANLIB) $@
$(RM) -f $(libdb)
$(LN) -s $(libdb_version) $(libdb)
@@ -589,7 +599,7 @@ $(libcxx): $(DEF_LIB_CXX)
# Real static C++ library.
$(libcxx_version): $(CXX_OBJS) $(C_OBJS)
$(AR) cr $@ $(CXX_OBJS) $(C_OBJS)
- test "$(RANLIB)" = "none" || $(RANLIB) $@
+ $(RANLIB) $@
$(RM) -f $(libcxx)
$(LN) -s $(libcxx_version) $(libcxx)
@@ -654,6 +664,11 @@ db_checkpoint: db_checkpoint@o@ util_log@o@ util_sig@o@ $(DEF_LIB)
db_checkpoint@o@ util_log@o@ util_sig@o@ $(DEF_LIB) $(LIBS)
$(POSTLINK) $@
+db_codegen: db_codegen@o@ code_capi@o@ code_parse@o@ $(DEF_LIB)
+ $(CCLINK) -o $@ $(LDFLAGS) \
+ db_codegen@o@ code_capi@o@ code_parse@o@ $(DEF_LIB) $(LIBS)
+ $(POSTLINK) $@
+
db_deadlock: db_deadlock@o@ util_log@o@ util_sig@o@ $(DEF_LIB)
$(CCLINK) -o $@ $(LDFLAGS) \
db_deadlock@o@ util_log@o@ util_sig@o@ $(DEF_LIB) $(LIBS)
@@ -762,7 +777,7 @@ install_utilities:
test -f $$i.exe && i=$$i.exe || i=$$i; \
$(RM) -f $(DESTDIR)$(bindir)/$$i; \
$(INSTALLER) $$i $(DESTDIR)$(bindir)/$$i; \
- test "$(STRIP)" = "none" || $(STRIP) $(DESTDIR)$(bindir)/$$i; \
+ $(STRIP) $(DESTDIR)$(bindir)/$$i; \
$(CHMOD) $(emode) $(DESTDIR)$(bindir)/$$i; \
done
@@ -771,8 +786,8 @@ uninstall_utilities:
$(RM) -f $$i $$i.exe; \
done)
-DOCLIST=api_c api_cxx api_tcl collections gsg gsg_db_rep gsg_txn images \
- index.html java license ref utility
+DOCLIST=api_c api_cxx api_tcl articles collections gsg gsg_db_rep \
+ gsg_txn images index.html java license ref utility
install_docs:
@echo "Installing documentation: $(DESTDIR)$(docdir) ..."
@@ -805,17 +820,17 @@ mostly-clean clean:
$(RM) -rf $(RPC_CLIENT_OBJS) $(RPC_SRV_OBJS) $(RPC_CXXSRV_OBJS)
$(RM) -rf $(UTIL_PROGS) *.exe $(CLEAN_LIST)
$(RM) -rf $(JAVA_CLASSTOP) $(JAVA_EXCLASSTOP)
- $(RM) -rf tags *@o@ *.o *.o.lock *.lo core *.core
+ $(RM) -rf tags *@o@ *.o *.o.lock *.lo core *.core core.*
$(RM) -rf ALL.OUT.* PARALLEL_TESTDIR.*
$(RM) -rf RUN_LOG RUNQUEUE TESTDIR TESTDIR.A TEST.LIST
- $(RM) -rf logtrack_seen.db tm .libs $(LIB_INSTALL_FILE_LIST)
+ $(RM) -rf logtrack_seen.db test_mutex .libs $(LIB_INSTALL_FILE_LIST)
REALCLEAN_LIST=\
Makefile clib_port.h confdefs.h config.cache config.log config.status \
configure.lineno db.h db185_int.h db_185.h db_config.h \
db_cxx.h db_int.h db_int_def.h include.tcl \
db_server.h db_server_clnt.c db_server_svc.c db_server_xdr.c \
- gen_db_server.c win_db.h
+ gen_db_server.c
distclean maintainer-clean realclean: clean
$(RM) -rf $(REALCLEAN_LIST)
@@ -976,15 +991,21 @@ db_reptest: $(DBREPTEST_OBJS) $(DEF_LIB)
$(LDFLAGS) $(DBREPTEST_OBJS) $(DEF_LIB) $(TEST_LIBS) $(LIBS)
$(POSTLINK) $@
-tm@o@: $(srcdir)/mutex/tm.c
+test_mutex@o@: $(srcdir)/mutex/test_mutex.c
$(CC) $(CFLAGS) $?
-tm: tm@o@ $(DEF_LIB)
- $(CCLINK) -o $@ $(LDFLAGS) tm@o@ $(DEF_LIB) $(TEST_LIBS) $(LIBS)
+test_mutex: test_mutex@o@ $(DEF_LIB)
+ $(CCLINK) -o $@ $(LDFLAGS) test_mutex@o@ $(DEF_LIB) $(TEST_LIBS) $(LIBS)
$(POSTLINK) $@
##################################################
# Example programs for C.
##################################################
+application@o@: application.c
+ $(CC) -DBUILD_STANDALONE $(CFLAGS) $?
+application: application@o@ $(DEF_LIB)
+ $(CCLINK) -o $@ $(LDFLAGS) application@o@ $(DEF_LIB) $(LIBS)
+ $(POSTLINK) $@
+
bench_001@o@: $(srcdir)/examples_c/bench_001.c
$(CC) $(CFLAGS) $?
bench_001: bench_001@o@ $(DEF_LIB)
@@ -1272,8 +1293,6 @@ db_cam@o@: $(srcdir)/db/db_cam.c
$(CC) $(CFLAGS) $?
db_cds@o@: $(srcdir)/db/db_cds.c
$(CC) $(CFLAGS) $?
-db_clock@o@: $(srcdir)/common/db_clock.c
- $(CC) $(CFLAGS) $?
db_conv@o@: $(srcdir)/db/db_conv.c
$(CC) $(CFLAGS) $?
db_dispatch@o@: $(srcdir)/db/db_dispatch.c
@@ -1318,9 +1337,7 @@ db_setid@o@: $(srcdir)/db/db_setid.c
$(CC) $(CFLAGS) $?
db_setlsn@o@: $(srcdir)/db/db_setlsn.c
$(CC) $(CFLAGS) $?
-db_salloc@o@: $(srcdir)/env/db_salloc.c
- $(CC) $(CFLAGS) $?
-db_shash@o@: $(srcdir)/env/db_shash.c
+db_shash@o@: $(srcdir)/common/db_shash.c
$(CC) $(CFLAGS) $?
db_stati@o@: $(srcdir)/db/db_stati.c
$(CC) $(CFLAGS) $?
@@ -1350,14 +1367,20 @@ dbreg_stat@o@: $(srcdir)/dbreg/dbreg_stat.c
$(CC) $(CFLAGS) $?
dbreg_util@o@: $(srcdir)/dbreg/dbreg_util.c
$(CC) $(CFLAGS) $?
+env_alloc@o@: $(srcdir)/env/env_alloc.c
+ $(CC) $(CFLAGS) $?
env_config@o@: $(srcdir)/env/env_config.c
$(CC) $(CFLAGS) $?
env_failchk@o@: $(srcdir)/env/env_failchk.c
$(CC) $(CFLAGS) $?
env_file@o@: $(srcdir)/env/env_file.c
$(CC) $(CFLAGS) $?
+env_globals@o@: $(srcdir)/env/env_globals.c
+ $(CC) $(CFLAGS) $?
env_method@o@: $(srcdir)/env/env_method.c
$(CC) $(CFLAGS) $?
+env_name@o@: $(srcdir)/env/env_name.c
+ $(CC) $(CFLAGS) $?
env_open@o@: $(srcdir)/env/env_open.c
$(CC) $(CFLAGS) $?
env_recover@o@: $(srcdir)/env/env_recover.c
@@ -1430,6 +1453,8 @@ lock_region@o@:$(srcdir)/lock/lock_region.c
$(CC) $(CFLAGS) $?
lock_stat@o@:$(srcdir)/lock/lock_stat.c
$(CC) $(CFLAGS) $?
+lock_stub@o@: $(srcdir)/lock/lock_stub.c
+ $(CC) $(CFLAGS) $?
lock_timer@o@:$(srcdir)/lock/lock_timer.c
$(CC) $(CFLAGS) $?
lock_util@o@:$(srcdir)/lock/lock_util.c
@@ -1474,6 +1499,8 @@ mp_region@o@: $(srcdir)/mp/mp_region.c
$(CC) $(CFLAGS) $?
mp_register@o@: $(srcdir)/mp/mp_register.c
$(CC) $(CFLAGS) $?
+mp_resize@o@: $(srcdir)/mp/mp_resize.c
+ $(CC) $(CFLAGS) $?
mp_stat@o@: $(srcdir)/mp/mp_stat.c
$(CC) $(CFLAGS) $?
mp_sync@o@: $(srcdir)/mp/mp_sync.c
@@ -1496,12 +1523,16 @@ mut_region@o@: $(srcdir)/mutex/mut_region.c
$(CC) $(CFLAGS) $?
mut_stat@o@: $(srcdir)/mutex/mut_stat.c
$(CC) $(CFLAGS) $?
+mut_stub@o@: $(srcdir)/mutex/mut_stub.c
+ $(CC) $(CFLAGS) $?
mut_tas@o@: $(srcdir)/mutex/mut_tas.c
$(CC) $(CFLAGS) $?
mut_win32@o@: $(srcdir)/mutex/mut_win32.c
$(CC) $(CFLAGS) $?
os_abs@o@: $(srcdir)/@OSDIR@/os_abs.c
$(CC) $(CFLAGS) $?
+os_abort@o@: $(srcdir)/os/os_abort.c
+ $(CC) $(CFLAGS) $?
os_alloc@o@: $(srcdir)/os/os_alloc.c
$(CC) $(CFLAGS) $?
os_clock@o@: $(srcdir)/@OSDIR@/os_clock.c
@@ -1536,6 +1567,8 @@ os_open@o@: $(srcdir)/@OSDIR@/os_open.c
$(CC) $(CFLAGS) $?
os_pid@o@: $(srcdir)/os/os_pid.c
$(CC) $(CFLAGS) $?
+os_qnx_open@o@: $(srcdir)/os_qnx/os_qnx_open.c
+ $(CC) $(CFLAGS) $?
os_region@o@: $(srcdir)/os/os_region.c
$(CC) $(CFLAGS) $?
os_rename@o@: $(srcdir)/@OSDIR@/os_rename.c
@@ -1596,6 +1629,8 @@ rep_backup@o@: $(srcdir)/rep/rep_backup.c
$(CC) $(CFLAGS) $?
rep_elect@o@: $(srcdir)/rep/rep_elect.c
$(CC) $(CFLAGS) $?
+rep_lease@o@: $(srcdir)/rep/rep_lease.c
+ $(CC) $(CFLAGS) $?
rep_log@o@: $(srcdir)/rep/rep_log.c
$(CC) $(CFLAGS) $?
rep_method@o@: $(srcdir)/rep/rep_method.c
@@ -1628,6 +1663,8 @@ repmgr_sel@o@: $(srcdir)/repmgr/repmgr_sel.c
$(CC) $(CFLAGS) $?
repmgr_stat@o@: $(srcdir)/repmgr/repmgr_stat.c
$(CC) $(CFLAGS) $?
+repmgr_stub@o@: $(srcdir)/repmgr/repmgr_stub.c
+ $(CC) $(CFLAGS) $?
repmgr_util@o@: $(srcdir)/repmgr/repmgr_util.c
$(CC) $(CFLAGS) $?
rijndael-alg-fst@o@: $(srcdir)/crypto/rijndael/rijndael-alg-fst.c
@@ -1777,6 +1814,8 @@ db_archive@o@: $(srcdir)/db_archive/db_archive.c
$(CC) $(CFLAGS) $?
db_checkpoint@o@: $(srcdir)/db_checkpoint/db_checkpoint.c
$(CC) $(CFLAGS) $?
+db_codegen@o@: $(srcdir)/db_codegen/db_codegen.c
+ $(CC) $(CFLAGS) $?
db_deadlock@o@: $(srcdir)/db_deadlock/db_deadlock.c
$(CC) $(CFLAGS) $?
db_dump@o@: $(srcdir)/db_dump/db_dump.c
@@ -1798,6 +1837,11 @@ db_upgrade@o@: $(srcdir)/db_upgrade/db_upgrade.c
db_verify@o@: $(srcdir)/db_verify/db_verify.c
$(CC) $(CFLAGS) $?
+code_parse@o@: $(srcdir)/db_codegen/code_parse.c
+ $(CC) $(CFLAGS) $?
+code_capi@o@: $(srcdir)/db_codegen/code_capi.c
+ $(CC) $(CFLAGS) $?
+
##################################################
# C library replacement files.
##################################################
@@ -1829,6 +1873,8 @@ memmove@o@: $(srcdir)/clib/memmove.c
$(CC) -DMEMMOVE $(CFLAGS) $?
printf@o@: $(srcdir)/clib/printf.c
$(CC) $(CFLAGS) $?
+qsort@o@: $(srcdir)/clib/qsort.c
+ $(CC) $(CFLAGS) $?
raise@o@: $(srcdir)/clib/raise.c
$(CC) $(CFLAGS) $?
rand@o@: $(srcdir)/clib/rand.c
diff --git a/db/dist/RELEASE b/db/dist/RELEASE
index 0874a36d3..34528f3d8 100644
--- a/db/dist/RELEASE
+++ b/db/dist/RELEASE
@@ -1,8 +1,8 @@
-# $Id: RELEASE,v 12.38 2006/09/20 20:08:48 bostic Exp $
+# $Id: RELEASE,v 12.56 2007/07/17 14:50:19 bostic Exp $
DB_VERSION_MAJOR=4
-DB_VERSION_MINOR=5
-DB_VERSION_PATCH=20
+DB_VERSION_MINOR=6
+DB_VERSION_PATCH=18
DB_VERSION="$DB_VERSION_MAJOR.$DB_VERSION_MINOR.$DB_VERSION_PATCH"
DB_VERSION_UNIQUE_NAME=`printf "_%d%03d" $DB_VERSION_MAJOR $DB_VERSION_MINOR`
diff --git a/db/dist/acconfig.h b/db/dist/acconfig.h
deleted file mode 100644
index e30d0e3d2..000000000
--- a/db/dist/acconfig.h
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * $Id: acconfig.h,v 11.29 2000/09/20 16:30:33 bostic Exp $
- */
-
-/* Define if you are building a version for running the test suite. */
-#undef CONFIG_TEST
-
-/* Define if you want a debugging version. */
-#undef DEBUG
-
-/* Define if you want a version that logs read operations. */
-#undef DEBUG_ROP
-
-/* Define if you want a version that logs write operations. */
-#undef DEBUG_WOP
-
-/* Define if you want a version with run-time diagnostic checking. */
-#undef DIAGNOSTIC
-
-/* Define if you want to mask harmless unitialized memory read/writes. */
-#undef UMRW
-
-/* Define if fcntl/F_SETFD denies child access to file descriptors. */
-#undef HAVE_FCNTL_F_SETFD
-
-/* Define if building big-file environment (e.g., AIX, HP/UX, Solaris). */
-#undef HAVE_FILE_OFFSET_BITS
-
-/* Mutex possibilities. */
-#undef HAVE_MUTEX_68K_GCC_ASSEMBLY
-#undef HAVE_MUTEX_AIX_CHECK_LOCK
-#undef HAVE_MUTEX_ALPHA_GCC_ASSEMBLY
-#undef HAVE_MUTEX_HPPA_GCC_ASSEMBLY
-#undef HAVE_MUTEX_HPPA_MSEM_INIT
-#undef HAVE_MUTEX_IA64_GCC_ASSEMBLY
-#undef HAVE_MUTEX_MACOS
-#undef HAVE_MUTEX_MSEM_INIT
-#undef HAVE_MUTEX_PPC_GCC_ASSEMBLY
-#undef HAVE_MUTEX_PTHREADS
-#undef HAVE_MUTEX_RELIANTUNIX_INITSPIN
-#undef HAVE_MUTEX_SCO_X86_CC_ASSEMBLY
-#undef HAVE_MUTEX_SEMA_INIT
-#undef HAVE_MUTEX_SGI_INIT_LOCK
-#undef HAVE_MUTEX_SOLARIS_LOCK_TRY
-#undef HAVE_MUTEX_SOLARIS_LWP
-#undef HAVE_MUTEX_SPARC_GCC_ASSEMBLY
-#undef HAVE_MUTEX_THREADS
-#undef HAVE_MUTEX_UI_THREADS
-#undef HAVE_MUTEX_UTS_CC_ASSEMBLY
-#undef HAVE_MUTEX_VMS
-#undef HAVE_MUTEX_VXWORKS
-#undef HAVE_MUTEX_WIN16
-#undef HAVE_MUTEX_WIN32
-#undef HAVE_MUTEX_X86_GCC_ASSEMBLY
-
-/* Define if building on QNX. */
-#undef HAVE_QNX
-
-/* Define if building RPC client/server. */
-#undef HAVE_RPC
-
-/* Define if your sprintf returns a pointer, not a length. */
-#undef SPRINTF_RET_CHARPNT
-
-@BOTTOM@
-
-/*
- * Big-file configuration.
- */
-#ifdef HAVE_FILE_OFFSET_BITS
-#define _FILE_OFFSET_BITS 64
-#endif
-
-/*
- * Don't step on the namespace. Other libraries may have their own
- * implementations of these functions, we don't want to use their
- * implementations or force them to use ours based on the load order.
- */
-#ifndef HAVE_GETCWD
-#define getcwd __db_Cgetcwd
-#endif
-#ifndef HAVE_GETOPT
-#define getopt __db_Cgetopt
-#endif
-#ifndef HAVE_MEMCMP
-#define memcmp __db_Cmemcmp
-#endif
-#ifndef HAVE_MEMCPY
-#define memcpy __db_Cmemcpy
-#endif
-#ifndef HAVE_MEMMOVE
-#define memmove __db_Cmemmove
-#endif
-#ifndef HAVE_RAISE
-#define raise __db_Craise
-#endif
-#ifndef HAVE_SNPRINTF
-#define snprintf __db_Csnprintf
-#endif
-#ifndef HAVE_STRCASECMP
-#define strcasecmp __db_Cstrcasecmp
-#endif
-#ifndef HAVE_STRERROR
-#define strerror __db_Cstrerror
-#endif
-#ifndef HAVE_VSNPRINTF
-#define vsnprintf __db_Cvsnprintf
-#endif
diff --git a/db/dist/aclocal/config.ac b/db/dist/aclocal/config.ac
deleted file mode 100644
index 3ae2ff2eb..000000000
--- a/db/dist/aclocal/config.ac
+++ /dev/null
@@ -1,22 +0,0 @@
-# Features we don't test for, but want the #defines to exist for
-# other ports.
-AH_TEMPLATE(DB_WIN32,
- [We use DB_WIN32 much as one would use _WIN32 -- to specify that
- we're using an operating system environment that supports Win32
- calls and semantics. We don't use _WIN32 because Cygwin/GCC also
- defines _WIN32, even though Cygwin/GCC closely emulates the Unix
- environment.])
-
-AH_TEMPLATE(HAVE_VXWORKS, [Define to 1 if building VxWorks.])
-
-AH_TEMPLATE(HAVE_FILESYSTEM_NOTZERO,
- [Define to 1 if allocated filesystem blocks are not zeroed.])
-
-AH_TEMPLATE(HAVE_UNLINK_WITH_OPEN_FAILURE,
- [Define to 1 if unlink of file with open file descriptors will fail.])
-
-AH_BOTTOM([#include "clib_port.h"
-
-#ifdef DB_WIN32
-#include "win_db.h"
-#endif])
diff --git a/db/dist/aclocal/config.m4 b/db/dist/aclocal/config.m4
new file mode 100644
index 000000000..c24d127dc
--- /dev/null
+++ b/db/dist/aclocal/config.m4
@@ -0,0 +1,22 @@
+# Features we don't test for, but want the #defines to exist for
+# other ports.
+AH_TEMPLATE(DB_WIN32,
+ [We use DB_WIN32 much as one would use _WIN32 -- to specify that
+ we're using an operating system environment that supports Win32
+ calls and semantics. We don't use _WIN32 because Cygwin/GCC also
+ defines _WIN32, even though Cygwin/GCC closely emulates the Unix
+ environment.])
+
+AH_TEMPLATE(HAVE_BREW, [Define to 1 if building on BREW.])
+AH_TEMPLATE(HAVE_BREW_SDK2, [Define to 1 if building on BREW (SDK2).])
+AH_TEMPLATE(HAVE_S60, [Define to 1 if building on S60.])
+AH_TEMPLATE(HAVE_VXWORKS, [Define to 1 if building on VxWorks.])
+
+AH_TEMPLATE(HAVE_FILESYSTEM_NOTZERO,
+ [Define to 1 if allocated filesystem blocks are not zeroed.])
+
+AH_TEMPLATE(HAVE_UNLINK_WITH_OPEN_FAILURE,
+ [Define to 1 if unlink of file with open file descriptors will fail.])
+
+AH_TEMPLATE(HAVE_SYSTEM_INCLUDE_FILES,
+ [Define to 1 if port includes files in the Berkeley DB source code.])
diff --git a/db/dist/aclocal/cxx.ac b/db/dist/aclocal/cxx.m4
index 49103cc66..49103cc66 100644
--- a/db/dist/aclocal/cxx.ac
+++ b/db/dist/aclocal/cxx.m4
diff --git a/db/dist/aclocal/gcc.ac b/db/dist/aclocal/gcc.m4
index 0949d982f..0949d982f 100644
--- a/db/dist/aclocal/gcc.ac
+++ b/db/dist/aclocal/gcc.m4
diff --git a/db/dist/aclocal/libtool.ac b/db/dist/aclocal/libtool.m4
index 0f53cb592..0f53cb592 100644
--- a/db/dist/aclocal/libtool.ac
+++ b/db/dist/aclocal/libtool.m4
diff --git a/db/dist/aclocal/mutex.ac b/db/dist/aclocal/mutex.ac
deleted file mode 100644
index 31b3d2942..000000000
--- a/db/dist/aclocal/mutex.ac
+++ /dev/null
@@ -1,746 +0,0 @@
-# $Id: mutex.ac,v 12.18 2006/06/20 20:31:01 bostic Exp $
-
-# POSIX pthreads tests: inter-process safe and intra-process only.
-AC_DEFUN(AM_PTHREADS_SHARED, [
-AC_TRY_RUN([
-#include <pthread.h>
-main() {
- pthread_cond_t cond;
- pthread_mutex_t mutex;
- pthread_condattr_t condattr;
- pthread_mutexattr_t mutexattr;
- exit (
- pthread_condattr_init(&condattr) ||
- pthread_condattr_setpshared(&condattr, PTHREAD_PROCESS_SHARED) ||
- pthread_mutexattr_init(&mutexattr) ||
- pthread_mutexattr_setpshared(&mutexattr, PTHREAD_PROCESS_SHARED) ||
- pthread_cond_init(&cond, &condattr) ||
- pthread_mutex_init(&mutex, &mutexattr) ||
- pthread_mutex_lock(&mutex) ||
- pthread_mutex_unlock(&mutex) ||
- pthread_mutex_destroy(&mutex) ||
- pthread_cond_destroy(&cond) ||
- pthread_condattr_destroy(&condattr) ||
- pthread_mutexattr_destroy(&mutexattr));
-}], [db_cv_mutex="$1"],,
-AC_TRY_LINK([
-#include <pthread.h>],[
- pthread_cond_t cond;
- pthread_mutex_t mutex;
- pthread_condattr_t condattr;
- pthread_mutexattr_t mutexattr;
- exit (
- pthread_condattr_init(&condattr) ||
- pthread_condattr_setpshared(&condattr, PTHREAD_PROCESS_SHARED) ||
- pthread_mutexattr_init(&mutexattr) ||
- pthread_mutexattr_setpshared(&mutexattr, PTHREAD_PROCESS_SHARED) ||
- pthread_cond_init(&cond, &condattr) ||
- pthread_mutex_init(&mutex, &mutexattr) ||
- pthread_mutex_lock(&mutex) ||
- pthread_mutex_unlock(&mutex) ||
- pthread_mutex_destroy(&mutex) ||
- pthread_cond_destroy(&cond) ||
- pthread_condattr_destroy(&condattr) ||
- pthread_mutexattr_destroy(&mutexattr));
-], [db_cv_mutex="$1"]))])
-AC_DEFUN(AM_PTHREADS_PRIVATE, [
-AC_TRY_RUN([
-#include <pthread.h>
-main() {
- pthread_cond_t cond;
- pthread_mutex_t mutex;
- pthread_condattr_t condattr;
- pthread_mutexattr_t mutexattr;
- exit (
- pthread_condattr_init(&condattr) ||
- pthread_mutexattr_init(&mutexattr) ||
- pthread_cond_init(&cond, &condattr) ||
- pthread_mutex_init(&mutex, &mutexattr) ||
- pthread_mutex_lock(&mutex) ||
- pthread_mutex_unlock(&mutex) ||
- pthread_mutex_destroy(&mutex) ||
- pthread_cond_destroy(&cond) ||
- pthread_condattr_destroy(&condattr) ||
- pthread_mutexattr_destroy(&mutexattr));
-}], [db_cv_mutex="$1"],,
-AC_TRY_LINK([
-#include <pthread.h>],[
- pthread_cond_t cond;
- pthread_mutex_t mutex;
- pthread_condattr_t condattr;
- pthread_mutexattr_t mutexattr;
- exit (
- pthread_condattr_init(&condattr) ||
- pthread_mutexattr_init(&mutexattr) ||
- pthread_cond_init(&cond, &condattr) ||
- pthread_mutex_init(&mutex, &mutexattr) ||
- pthread_mutex_lock(&mutex) ||
- pthread_mutex_unlock(&mutex) ||
- pthread_mutex_destroy(&mutex) ||
- pthread_cond_destroy(&cond) ||
- pthread_condattr_destroy(&condattr) ||
- pthread_mutexattr_destroy(&mutexattr));
-], [db_cv_mutex="$1"]))])
-
-# Figure out mutexes for this compiler/architecture.
-AC_DEFUN(AM_DEFINE_MUTEXES, [
-
-# Mutexes we don't test for, but want the #defines to exist for
-# other ports.
-AH_TEMPLATE(HAVE_MUTEX_VMS, [Define to 1 to use VMS mutexes.])
-AH_TEMPLATE(HAVE_MUTEX_VXWORKS, [Define to 1 to use VxWorks mutexes.])
-
-AC_CACHE_CHECK([for mutexes], db_cv_mutex, [
-db_cv_mutex=no
-
-orig_libs=$LIBS
-
-# User-specified POSIX or UI mutexes.
-#
-# There are two different reasons to specify mutexes: First, the application
-# is already using one type of mutex and doesn't want to mix-and-match (for
-# example, on Solaris, which has POSIX, UI and LWP mutexes). Second, the
-# applications POSIX pthreads mutexes don't support inter-process locking,
-# but the application wants to use them anyway (for example, some Linux and
-# *BSD systems).
-#
-# Test for LWP threads before testing for UI/POSIX threads, we prefer them
-# on Solaris, for two reasons: a bug in SunOS 5.7 causes applications to
-# get pwrite, not pwrite64, if they load the C library before the appropriate
-# threads library, e.g., tclsh using dlopen to load the DB library. Second,
-# LWP mutexes are faster than POSIX pthread mutexes by some amount.
-#
-# Otherwise, test for POSIX threads before UI threads. There are Linux systems
-# that support a UI compatibility mode, and applications are more likely to be
-# written for POSIX threads than UI threads.
-if test "$db_cv_posixmutexes" = yes; then
- db_cv_mutex="posix_only";
-fi
-if test "$db_cv_uimutexes" = yes; then
- db_cv_mutex="ui_only";
-fi
-
-# User-specified Win32 mutexes (MinGW build)
-if test "$db_cv_mingw" = "yes"; then
- db_cv_mutex=win32/gcc
-fi
-
-# LWP threads: _lwp_XXX
-if test "$db_cv_mutex" = no; then
-AC_TRY_LINK([
-#include <synch.h>],[
- static lwp_mutex_t mi = SHAREDMUTEX;
- static lwp_cond_t ci = SHAREDCV;
- lwp_mutex_t mutex = mi;
- lwp_cond_t cond = ci;
- exit (
- _lwp_mutex_lock(&mutex) ||
- _lwp_mutex_unlock(&mutex));
-], [db_cv_mutex="Solaris/lwp"])
-fi
-
-# POSIX.1 pthreads: pthread_XXX
-#
-# If the user specified we use POSIX pthreads mutexes, and we fail to find the
-# full interface, try and configure for just intra-process support.
-if test "$db_cv_mutex" = no -o "$db_cv_mutex" = "posix_only"; then
- LIBS="$LIBS -lpthread"
- AM_PTHREADS_SHARED("POSIX/pthreads/library")
- LIBS="$orig_libs"
-fi
-if test "$db_cv_mutex" = no -o "$db_cv_mutex" = "posix_only"; then
- AM_PTHREADS_SHARED("POSIX/pthreads")
-fi
-if test "$db_cv_mutex" = "posix_only"; then
- AM_PTHREADS_PRIVATE("POSIX/pthreads/private")
-fi
-if test "$db_cv_mutex" = "posix_only"; then
- LIBS="$LIBS -lpthread"
- AM_PTHREADS_PRIVATE("POSIX/pthreads/library/private")
- LIBS="$orig_libs"
-fi
-if test "$db_cv_mutex" = "posix_only"; then
- AC_MSG_ERROR([unable to find POSIX 1003.1 mutex interfaces])
-fi
-
-# UI threads: thr_XXX
-if test "$db_cv_mutex" = no -o "$db_cv_mutex" = "ui_only"; then
-LIBS="$LIBS -lthread"
-AC_TRY_LINK([
-#include <thread.h>
-#include <synch.h>],[
- mutex_t mutex;
- cond_t cond;
- int type = USYNC_PROCESS;
- exit (
- mutex_init(&mutex, type, NULL) ||
- cond_init(&cond, type, NULL) ||
- mutex_lock(&mutex) ||
- mutex_unlock(&mutex));
-], [db_cv_mutex="UI/threads/library"])
-LIBS="$orig_libs"
-fi
-if test "$db_cv_mutex" = no -o "$db_cv_mutex" = "ui_only"; then
-AC_TRY_LINK([
-#include <thread.h>
-#include <synch.h>],[
- mutex_t mutex;
- cond_t cond;
- int type = USYNC_PROCESS;
- exit (
- mutex_init(&mutex, type, NULL) ||
- cond_init(&cond, type, NULL) ||
- mutex_lock(&mutex) ||
- mutex_unlock(&mutex));
-], [db_cv_mutex="UI/threads"])
-fi
-if test "$db_cv_mutex" = "ui_only"; then
- AC_MSG_ERROR([unable to find UI mutex interfaces])
-fi
-
-# msemaphore: HPPA only
-# Try HPPA before general msem test, it needs special alignment.
-if test "$db_cv_mutex" = no; then
-AC_TRY_LINK([
-#include <sys/mman.h>],[
-#if defined(__hppa)
- typedef msemaphore tsl_t;
- msemaphore x;
- msem_init(&x, 0);
- msem_lock(&x, 0);
- msem_unlock(&x, 0);
- exit(0);
-#else
- FAIL TO COMPILE/LINK
-#endif
-], [db_cv_mutex="HP/msem_init"])
-fi
-
-# msemaphore: AIX, OSF/1
-if test "$db_cv_mutex" = no; then
-AC_TRY_LINK([
-#include <sys/types.h>
-#include <sys/mman.h>],[
- typedef msemaphore tsl_t;
- msemaphore x;
- msem_init(&x, 0);
- msem_lock(&x, 0);
- msem_unlock(&x, 0);
- exit(0);
-], [db_cv_mutex="UNIX/msem_init"])
-fi
-
-# ReliantUNIX
-if test "$db_cv_mutex" = no; then
-LIBS="$LIBS -lmproc"
-AC_TRY_LINK([
-#include <ulocks.h>],[
- typedef spinlock_t tsl_t;
- spinlock_t x;
- initspin(&x, 1);
- cspinlock(&x);
- spinunlock(&x);
-], [db_cv_mutex="ReliantUNIX/initspin"])
-LIBS="$orig_libs"
-fi
-
-# SCO: UnixWare has threads in libthread, but OpenServer doesn't.
-if test "$db_cv_mutex" = no; then
-AC_TRY_COMPILE(,[
-#if defined(__USLC__)
- exit(0);
-#else
- FAIL TO COMPILE/LINK
-#endif
-], [db_cv_mutex="SCO/x86/cc-assembly"])
-fi
-
-# abilock_t: SGI
-if test "$db_cv_mutex" = no; then
-AC_TRY_LINK([
-#include <abi_mutex.h>],[
- typedef abilock_t tsl_t;
- abilock_t x;
- init_lock(&x);
- acquire_lock(&x);
- release_lock(&x);
-], [db_cv_mutex="SGI/init_lock"])
-fi
-
-# sema_t: Solaris
-# The sema_XXX calls do not work on Solaris 5.5. I see no reason to ever
-# turn this test on, unless we find some other platform that uses the old
-# POSIX.1 interfaces. (I plan to move directly to pthreads on Solaris.)
-if test "$db_cv_mutex" = DOESNT_WORK; then
-AC_TRY_LINK([
-#include <synch.h>],[
- typedef sema_t tsl_t;
- sema_t x;
- sema_init(&x, 1, USYNC_PROCESS, NULL);
- sema_wait(&x);
- sema_post(&x);
-], [db_cv_mutex="UNIX/sema_init"])
-fi
-
-# _lock_try/_lock_clear: Solaris
-# On Solaris systems without Pthread or UI mutex interfaces, DB uses the
-# undocumented _lock_try _lock_clear function calls instead of either the
-# sema_trywait(3T) or sema_wait(3T) function calls. This is because of
-# problems in those interfaces in some releases of the Solaris C library.
-if test "$db_cv_mutex" = no; then
-AC_TRY_LINK([
-#include <sys/machlock.h>],[
- typedef lock_t tsl_t;
- lock_t x;
- _lock_try(&x);
- _lock_clear(&x);
-], [db_cv_mutex="Solaris/_lock_try"])
-fi
-
-# _check_lock/_clear_lock: AIX
-if test "$db_cv_mutex" = no; then
-AC_TRY_LINK([
-#include <sys/atomic_op.h>],[
- int x;
- _check_lock(&x,0,1);
- _clear_lock(&x,0);
-], [db_cv_mutex="AIX/_check_lock"])
-fi
-
-# _spin_lock_try/_spin_unlock: Apple/Darwin
-if test "$db_cv_mutex" = no; then
-AC_TRY_LINK(,[
- int x;
- _spin_lock_try(&x);
- _spin_unlock(&x);
-], [db_cv_mutex="Darwin/_spin_lock_try"])
-fi
-
-# Tru64/cc
-if test "$db_cv_mutex" = no; then
-AC_TRY_COMPILE(,[
-#if defined(__alpha) && defined(__DECC)
- exit(0);
-#else
- FAIL TO COMPILE/LINK
-#endif
-], [db_cv_mutex="Tru64/cc-assembly"])
-fi
-
-# Alpha/gcc
-if test "$db_cv_mutex" = no; then
-AC_TRY_COMPILE(,[
-#if defined(__alpha) && defined(__GNUC__)
- exit(0);
-#else
- FAIL TO COMPILE/LINK
-#endif
-], [db_cv_mutex="ALPHA/gcc-assembly"])
-fi
-
-# ARM/gcc: Linux
-if test "$db_cv_mutex" = no; then
-AC_TRY_COMPILE(,[
-#if defined(__arm__) && defined(__GNUC__)
- exit(0);
-#else
- FAIL TO COMPILE/LINK
-#endif
-], [db_cv_mutex="ARM/gcc-assembly"])
-fi
-
-# MIPS/gcc: Linux
-if test "$db_cv_mutex" = no; then
-AC_TRY_COMPILE(,[
-#if (defined(__mips) || defined(__mips__)) && defined(__GNUC__)
- exit(0);
-#else
- FAIL TO COMPILE/LINK
-#endif
-], [db_cv_mutex="MIPS/gcc-assembly"])
-fi
-
-# MIPS/gcc: Linux
-if test "$db_cv_mutex" = no; then
-AC_TRY_COMPILE(,[
-#if (defined(__mips) || defined(__mips__)) && defined(__GNUC__)
- exit(0);
-#else
- FAIL TO COMPILE/LINK
-#endif
-], [db_cv_mutex="MIPS/gcc-assembly"])
-fi
-
-# PaRisc/gcc: HP/UX
-if test "$db_cv_mutex" = no; then
-AC_TRY_COMPILE(,[
-#if (defined(__hppa) || defined(__hppa__)) && defined(__GNUC__)
- exit(0);
-#else
- FAIL TO COMPILE/LINK
-#endif
-], [db_cv_mutex="HPPA/gcc-assembly"])
-fi
-
-# PPC/gcc:
-if test "$db_cv_mutex" = no; then
-AC_TRY_COMPILE(,[
-#if (defined(__powerpc__) || defined(__ppc__)) && defined(__GNUC__)
- exit(0);
-#else
- FAIL TO COMPILE/LINK
-#endif
-], [db_cv_mutex="PPC/gcc-assembly"])
-fi
-
-# Sparc/gcc: SunOS, Solaris
-if test "$db_cv_mutex" = no; then
-AC_TRY_COMPILE(,[
-#if defined(__sparc__) && defined(__GNUC__)
- exit(0);
-#else
- FAIL TO COMPILE/LINK
-#endif
-], [db_cv_mutex="Sparc/gcc-assembly"])
-fi
-
-# 68K/gcc: SunOS
-if test "$db_cv_mutex" = no; then
-AC_TRY_COMPILE(,[
-#if (defined(mc68020) || defined(sun3)) && defined(__GNUC__)
- exit(0);
-#else
- FAIL TO COMPILE/LINK
-#endif
-], [db_cv_mutex="68K/gcc-assembly"])
-fi
-
-# x86/gcc: FreeBSD, NetBSD, BSD/OS, Linux
-if test "$db_cv_mutex" = no; then
-AC_TRY_COMPILE(,[
-#if (defined(i386) || defined(__i386__)) && defined(__GNUC__)
- exit(0);
-#else
- FAIL TO COMPILE/LINK
-#endif
-], [db_cv_mutex="x86/gcc-assembly"])
-fi
-
-# x86_64/gcc: FreeBSD, NetBSD, BSD/OS, Linux
-if test "$db_cv_mutex" = no; then
-AC_TRY_COMPILE(,[
-#if (defined(x86_64) || defined(__x86_64__)) && defined(__GNUC__)
- exit(0);
-#else
- FAIL TO COMPILE/LINK
-#endif
-], [db_cv_mutex="x86_64/gcc-assembly"])
-fi
-
-# S390/cc: IBM OS/390 Unix
-if test "$db_cv_mutex" = no; then
-AC_TRY_COMPILE(,[
-#if defined(__MVS__) && defined(__IBMC__)
- exit(0);
-#else
- FAIL TO COMPILE/LINK
-#endif
-], [db_cv_mutex="S390/cc-assembly"])
-fi
-
-# S390/gcc: Linux
-if test "$db_cv_mutex" = no; then
-AC_TRY_COMPILE(,[
-#if defined(__s390__) && defined(__GNUC__)
- exit(0);
-#else
- FAIL TO COMPILE/LINK
-#endif
-], [db_cv_mutex="S390/gcc-assembly"])
-fi
-
-# ia64/gcc: Linux
-if test "$db_cv_mutex" = no; then
-AC_TRY_COMPILE(,[
-#if defined(__ia64) && defined(__GNUC__)
- exit(0);
-#else
- FAIL TO COMPILE/LINK
-#endif
-], [db_cv_mutex="ia64/gcc-assembly"])
-fi
-
-# uts/cc: UTS
-if test "$db_cv_mutex" = no; then
-AC_TRY_COMPILE(,[
-#if defined(_UTS)
- exit(0);
-#else
- FAIL TO COMPILE/LINK
-#endif
-], [db_cv_mutex="UTS/cc-assembly"])
-fi
-
-# default to UNIX fcntl system call mutexes.
-if test "$db_cv_mutex" = no; then
- db_cv_mutex="UNIX/fcntl"
-fi
-])
-
-AC_SUBST(thread_h_decl)
-AC_SUBST(db_threadid_t_decl)
-db_threadid_t_decl=notset
-
-case "$db_cv_mutex" in
-68K/gcc-assembly) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
- AC_DEFINE(HAVE_MUTEX_68K_GCC_ASSEMBLY)
- AH_TEMPLATE(HAVE_MUTEX_68K_GCC_ASSEMBLY,
- [Define to 1 to use the GCC compiler and 68K assembly language mutexes.]);;
-AIX/_check_lock) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
- AC_DEFINE(HAVE_MUTEX_AIX_CHECK_LOCK)
- AH_TEMPLATE(HAVE_MUTEX_AIX_CHECK_LOCK,
- [Define to 1 to use the AIX _check_lock mutexes.]);;
-Darwin/_spin_lock_try) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
- AC_DEFINE(HAVE_MUTEX_DARWIN_SPIN_LOCK_TRY)
- AH_TEMPLATE(HAVE_MUTEX_DARWIN_SPIN_LOCK_TRY,
- [Define to 1 to use the Apple/Darwin _spin_lock_try mutexes.]);;
-ALPHA/gcc-assembly) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
- AC_DEFINE(HAVE_MUTEX_ALPHA_GCC_ASSEMBLY)
- AH_TEMPLATE(HAVE_MUTEX_ALPHA_GCC_ASSEMBLY,
- [Define to 1 to use the GCC compiler and Alpha assembly language mutexes.]);;
-ARM/gcc-assembly) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
- AC_DEFINE(HAVE_MUTEX_ARM_GCC_ASSEMBLY)
- AH_TEMPLATE(HAVE_MUTEX_ARM_GCC_ASSEMBLY,
- [Define to 1 to use the GCC compiler and ARM assembly language mutexes.]);;
-HP/msem_init) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
- AC_DEFINE(HAVE_MUTEX_HPPA_MSEM_INIT)
- AH_TEMPLATE(HAVE_MUTEX_HPPA_MSEM_INIT,
- [Define to 1 to use the msem_XXX mutexes on HP-UX.]);;
-HPPA/gcc-assembly) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
- AC_DEFINE(HAVE_MUTEX_HPPA_GCC_ASSEMBLY)
- AH_TEMPLATE(HAVE_MUTEX_HPPA_GCC_ASSEMBLY,
- [Define to 1 to use the GCC compiler and PaRisc assembly language mutexes.]);;
-ia64/gcc-assembly) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
- AC_DEFINE(HAVE_MUTEX_IA64_GCC_ASSEMBLY)
- AH_TEMPLATE(HAVE_MUTEX_IA64_GCC_ASSEMBLY,
- [Define to 1 to use the GCC compiler and IA64 assembly language mutexes.]);;
-POSIX/pthreads) ADDITIONAL_OBJS="mut_pthread${o} $ADDITIONAL_OBJS"
- AC_DEFINE(HAVE_MUTEX_PTHREADS)
- AH_TEMPLATE(HAVE_MUTEX_PTHREADS,
- [Define to 1 to use POSIX 1003.1 pthread_XXX mutexes.]);;
-POSIX/pthreads/private) ADDITIONAL_OBJS="mut_pthread${o} $ADDITIONAL_OBJS"
- AC_DEFINE(HAVE_MUTEX_PTHREADS)
- AH_TEMPLATE(HAVE_MUTEX_PTHREADS,
- [Define to 1 to use POSIX 1003.1 pthread_XXX mutexes.])
- AC_DEFINE(HAVE_MUTEX_THREAD_ONLY)
- AH_TEMPLATE(HAVE_MUTEX_THREAD_ONLY,
- [Define to 1 to configure mutexes intra-process only.]);;
-POSIX/pthreads/library) ADDITIONAL_OBJS="mut_pthread${o} $ADDITIONAL_OBJS"
- AC_DEFINE(HAVE_MUTEX_PTHREADS)
- AH_TEMPLATE(HAVE_MUTEX_PTHREADS,
- [Define to 1 to use POSIX 1003.1 pthread_XXX mutexes.]);;
-POSIX/pthreads/library/private)
- ADDITIONAL_OBJS="mut_pthread${o} $ADDITIONAL_OBJS"
- AC_DEFINE(HAVE_MUTEX_PTHREADS)
- AH_TEMPLATE(HAVE_MUTEX_PTHREADS,
- [Define to 1 to use POSIX 1003.1 pthread_XXX mutexes.])
- AC_DEFINE(HAVE_MUTEX_THREAD_ONLY)
- AH_TEMPLATE(HAVE_MUTEX_THREAD_ONLY,
- [Define to 1 to configure mutexes intra-process only.]);;
-PPC/gcc-assembly)
- ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
- AC_DEFINE(HAVE_MUTEX_PPC_GCC_ASSEMBLY)
- AH_TEMPLATE(HAVE_MUTEX_PPC_GCC_ASSEMBLY,
- [Define to 1 to use the GCC compiler and PowerPC assembly language mutexes.]);;
-ReliantUNIX/initspin) LIBSO_LIBS="$LIBSO_LIBS -lmproc"
- ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
- AC_DEFINE(HAVE_MUTEX_RELIANTUNIX_INITSPIN)
- AH_TEMPLATE(HAVE_MUTEX_RELIANTUNIX_INITSPIN,
- [Define to 1 to use Reliant UNIX initspin mutexes.]);;
-S390/cc-assembly) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
- AC_DEFINE(HAVE_MUTEX_S390_CC_ASSEMBLY)
- AH_TEMPLATE(HAVE_MUTEX_S390_CC_ASSEMBLY,
- [Define to 1 to use the IBM C compiler and S/390 assembly language mutexes.]);;
-S390/gcc-assembly) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
- AC_DEFINE(HAVE_MUTEX_S390_GCC_ASSEMBLY)
- AH_TEMPLATE(HAVE_MUTEX_S390_GCC_ASSEMBLY,
- [Define to 1 to use the GCC compiler and S/390 assembly language mutexes.]);;
-SCO/x86/cc-assembly) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
- AC_DEFINE(HAVE_MUTEX_SCO_X86_CC_ASSEMBLY)
- AH_TEMPLATE(HAVE_MUTEX_SCO_X86_CC_ASSEMBLY,
- [Define to 1 to use the SCO compiler and x86 assembly language mutexes.]);;
-SGI/init_lock) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
- AC_DEFINE(HAVE_MUTEX_SGI_INIT_LOCK)
- AH_TEMPLATE(HAVE_MUTEX_SGI_INIT_LOCK,
- [Define to 1 to use the SGI XXX_lock mutexes.]);;
-Solaris/_lock_try) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
- AC_DEFINE(HAVE_MUTEX_SOLARIS_LOCK_TRY)
- AH_TEMPLATE(HAVE_MUTEX_SOLARIS_LOCK_TRY,
- [Define to 1 to use the Solaris _lock_XXX mutexes.]);;
-Solaris/lwp) ADDITIONAL_OBJS="mut_pthread${o} $ADDITIONAL_OBJS"
- AC_DEFINE(HAVE_MUTEX_SOLARIS_LWP)
- AH_TEMPLATE(HAVE_MUTEX_SOLARIS_LWP,
- [Define to 1 to use the Solaris lwp threads mutexes.]);;
-Sparc/gcc-assembly) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
- AC_DEFINE(HAVE_MUTEX_SPARC_GCC_ASSEMBLY)
- AH_TEMPLATE(HAVE_MUTEX_SPARC_GCC_ASSEMBLY,
- [Define to 1 to use the GCC compiler and Sparc assembly language mutexes.]);;
-Tru64/cc-assembly) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
- AC_DEFINE(HAVE_MUTEX_TRU64_CC_ASSEMBLY)
- AH_TEMPLATE(HAVE_MUTEX_TRU64_CC_ASSEMBLY,
- [Define to 1 to use the CC compiler and Tru64 assembly language mutexes.]);;
-UI/threads) ADDITIONAL_OBJS="mut_pthread${o} $ADDITIONAL_OBJS"
- AC_DEFINE(HAVE_MUTEX_UI_THREADS)
- AH_TEMPLATE(HAVE_MUTEX_UI_THREADS,
- [Define to 1 to use the UNIX International mutexes.]);;
-UI/threads/library) ADDITIONAL_OBJS="mut_pthread${o} $ADDITIONAL_OBJS"
- AC_DEFINE(HAVE_MUTEX_UI_THREADS)
- AH_TEMPLATE(HAVE_MUTEX_UI_THREADS,
- [Define to 1 to use the UNIX International mutexes.]);;
-UNIX/msem_init) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
- AC_DEFINE(HAVE_MUTEX_MSEM_INIT)
- AH_TEMPLATE(HAVE_MUTEX_MSEM_INIT,
- [Define to 1 to use the msem_XXX mutexes on systems other than HP-UX.]);;
-UNIX/sema_init) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
- AC_DEFINE(HAVE_MUTEX_SEMA_INIT)
- AH_TEMPLATE(HAVE_MUTEX_SEMA_INIT,
- [Define to 1 to use the obsolete POSIX 1003.1 sema_XXX mutexes.]);;
-UTS/cc-assembly) ADDITIONAL_OBJS="uts4.cc${o} $ADDITIONAL_OBJS"
- AC_DEFINE(HAVE_MUTEX_UTS_CC_ASSEMBLY)
- AH_TEMPLATE(HAVE_MUTEX_UTS_CC_ASSEMBLY,
- [Define to 1 to use the UTS compiler and assembly language mutexes.]);;
-win32) ADDITIONAL_OBJS="mut_win32${o} $ADDITIONAL_OBJS"
- AC_DEFINE(HAVE_MUTEX_WIN32)
- AH_TEMPLATE(HAVE_MUTEX_WIN32, [Define to 1 to use the MSVC compiler and Windows mutexes.]);;
-win32/gcc) ADDITIONAL_OBJS="mut_win32${o} $ADDITIONAL_OBJS"
- AC_DEFINE(HAVE_MUTEX_WIN32_GCC)
- AH_TEMPLATE(HAVE_MUTEX_WIN32_GCC, [Define to 1 to use the GCC compiler and Windows mutexes.]);;
-MIPS/gcc-assembly) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
- AC_DEFINE(HAVE_MUTEX_MIPS_GCC_ASSEMBLY)
- AH_TEMPLATE(HAVE_MUTEX_MIPS_GCC_ASSEMBLY,
- [Define to 1 to use the GCC compiler and MIPS assembly language mutexes.]);;
-x86/gcc-assembly) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
- AC_DEFINE(HAVE_MUTEX_X86_GCC_ASSEMBLY)
- AH_TEMPLATE(HAVE_MUTEX_X86_GCC_ASSEMBLY,
- [Define to 1 to use the GCC compiler and x86 assembly language mutexes.]);;
-x86_64/gcc-assembly) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
- AC_DEFINE(HAVE_MUTEX_X86_64_GCC_ASSEMBLY)
- AH_TEMPLATE(HAVE_MUTEX_X86_64_GCC_ASSEMBLY,
- [Define to 1 to use the GCC compiler and amd64 assembly language mutexes.]);;
-UNIX/fcntl) AC_MSG_WARN(
- [NO FAST MUTEXES FOUND FOR THIS COMPILER/ARCHITECTURE.])
- ADDITIONAL_OBJS="mut_fcntl${o} $ADDITIONAL_OBJS"
- AC_DEFINE(HAVE_MUTEX_FCNTL)
- AH_TEMPLATE(HAVE_MUTEX_FCNTL,
- [Define to 1 to use the UNIX fcntl system call mutexes.]);;
-*) AC_MSG_ERROR([Unknown mutex interface: $db_cv_mutex]);;
-esac
-
-# The mutex selection may require specific declarations -- we fill in most of
-# them above, but here are the common ones.
-#
-# The mutex selection may tell us what kind of thread package we're using,
-# which we use to figure out the thread type.
-#
-# If we're configured for the POSIX pthread API, then force the thread ID type
-# and include function, regardless of the mutex selection. Ditto for the
-# (default) Solaris lwp mutexes, because they don't have a way to return the
-# thread ID.
-#
-# Try and link with a threads library if possible. The problem is the Solaris
-# C library has UI/POSIX interface stubs, but they're broken, configuring them
-# for inter-process mutexes doesn't return an error, but it doesn't work either.
-# For that reason always add -lpthread if we're using pthread calls or mutexes
-# and there's a pthread library.
-#
-# We can't depend on any specific call existing (pthread_create, for example),
-# as it may be #defined in an include file -- OSF/1 (Tru64) has this problem.
-case "$db_cv_mutex" in
-POSIX/pthread*|Solaris/lwp)
- thread_h_decl="#include <pthread.h>"
- db_threadid_t_decl="typedef pthread_t db_threadid_t;"
- AC_HAVE_LIBRARY(pthread, LIBSO_LIBS="$LIBSO_LIBS -lpthread");;
-UI/threads*)
- thread_h_decl="#include <thread.h>"
- db_threadid_t_decl="typedef thread_t db_threadid_t;"
- AC_HAVE_LIBRARY(thread, LIBSO_LIBS="$LIBSO_LIBS -lthread");;
-*)
- if test "$db_cv_pthread_api" = "yes"; then
- thread_h_decl="#include <pthread.h>"
- db_threadid_t_decl="typedef pthread_t db_threadid_t;"
- AC_HAVE_LIBRARY(pthread, LIBSO_LIBS="$LIBSO_LIBS -lpthread")
- fi;;
-esac
-
-# We need to know if the thread ID type will fit into an integral type and we
-# can compare it for equality and generally treat it like an int, or if it's a
-# non-integral type and we have to treat it like a structure or other untyped
-# block of bytes. For example, MVS typedef's pthread_t to a structure.
-AH_TEMPLATE(HAVE_SIMPLE_THREAD_TYPE,
- [Define to 1 if thread identifier type db_threadid_t is integral.])
-if test "$db_threadid_t_decl" = "notset"; then
- db_threadid_t_decl="typedef uintmax_t db_threadid_t;"
- AC_DEFINE(HAVE_SIMPLE_THREAD_TYPE)
-else
- AC_TRY_COMPILE(
- #include <sys/types.h>
- $thread_h_decl, [
- $db_threadid_t_decl
- db_threadid_t a;
- a = 0;
- ], AC_DEFINE(HAVE_SIMPLE_THREAD_TYPE))
-fi
-
-# If we're building replication and configured with POSIX pthreads or were
-# told to build using the POSIX API, build the replication manager framework.
-db_cv_build_replication_mgr="no"
-if test "$db_cv_build_replication" = "yes"; then
- AH_TEMPLATE(HAVE_REPLICATION_THREADS,
- [Define to 1 if building the Berkeley DB replication framework.])
- case "$db_cv_mutex" in
- POSIX/pthread*|Solaris/lwp)
- db_cv_build_replication_mgr="yes";;
- esac
- if test "$db_cv_pthread_api" = "yes"; then
- db_cv_build_replication_mgr="yes"
- fi
-
- if test "$db_cv_build_replication_mgr" = "yes"; then
- AC_DEFINE(HAVE_REPLICATION_THREADS)
-
- # Solaris requires the socket and nsl libraries to build the
- # replication manager. Don't add nsl regardless of the OS,
- # it causes RPC to fail on AIX 4.3.3.
- case "$host_os" in
- solaris*)
- AC_HAVE_LIBRARY(nsl, LIBSO_LIBS="$LIBSO_LIBS -lnsl")
- AC_HAVE_LIBRARY(socket,
- LIBSO_LIBS="$LIBSO_LIBS -lsocket");;
- esac
- fi
-fi
-
-# There are 3 classes of mutexes:
-#
-# 1: Mutexes requiring no cleanup, for example, test-and-set mutexes.
-# 2: Mutexes that must be destroyed, but which don't hold permanent system
-# resources, for example, pthread mutexes on MVS aka OS/390 aka z/OS.
-# 3: Mutexes that must be destroyed, even after the process is gone, for
-# example, pthread mutexes on QNX and binary semaphores on VxWorks.
-#
-# DB cannot currently distinguish between #2 and #3 because DB does not know
-# if the application is running environment recovery as part of startup and
-# does not need to do cleanup, or if the environment is being removed and/or
-# recovered in a loop in the application, and so does need to clean up. If
-# we get it wrong, we're going to call the mutex destroy routine on a random
-# piece of memory, which usually works, but just might drop core. For now,
-# we group #2 and #3 into the HAVE_MUTEX_SYSTEM_RESOURCES define, until we
-# have a better solution or reason to solve this in a general way -- so far,
-# the places we've needed to handle this are few.
-AH_TEMPLATE(HAVE_MUTEX_SYSTEM_RESOURCES,
- [Define to 1 if mutexes hold system resources.])
-
-case "$host_os$db_cv_mutex" in
-*qnx*POSIX/pthread*|openedition*POSIX/pthread*)
- AC_DEFINE(HAVE_MUTEX_SYSTEM_RESOURCES);;
-esac])
diff --git a/db/dist/aclocal/mutex.m4 b/db/dist/aclocal/mutex.m4
index 5f16ee0e1..7932794cc 100644
--- a/db/dist/aclocal/mutex.m4
+++ b/db/dist/aclocal/mutex.m4
@@ -1,100 +1,10 @@
-dnl $Id: mutex.m4,v 11.20 2000/12/20 22:16:56 bostic Exp $
+# $Id: mutex.m4,v 12.26 2007/05/18 15:08:50 bostic Exp $
-dnl Figure out mutexes for this compiler/architecture.
-AC_DEFUN(AM_DEFINE_MUTEXES, [
-
-AC_CACHE_CHECK([for mutexes], db_cv_mutex, [dnl
-db_cv_mutex=no
-
-orig_libs=$LIBS
-
-dnl User-specified POSIX mutexes.
-dnl
-dnl Assume that -lpthread exists when the user specifies POSIX mutexes. (I
-dnl only expect this option to be used on Solaris, which has -lpthread.)
-if test "$db_cv_posixmutexes" = yes; then
- db_cv_mutex="posix_only"
-fi
-
-dnl User-specified UI mutexes.
-dnl
-dnl Assume that -lthread exists when the user specifies UI mutexes. (I only
-dnl expect this option to be used on Solaris, which has -lthread.)
-if test "$db_cv_uimutexes" = yes; then
- db_cv_mutex="ui_only"
-fi
-
-dnl LWP threads: _lwp_XXX
-dnl
-dnl Test for LWP threads before testing for UI/POSIX threads, we prefer them
-dnl on Solaris. There are two reasons: the Solaris C library has UI/POSIX
-dnl interface stubs, but they're broken, configuring them for inter-process
-dnl mutexes doesn't return an error, but it doesn't work either. Second,
-dnl there's a bug in SunOS 5.7 where applications get pwrite, not pwrite64,
-dnl if they load the C library before the appropriate threads library, e.g.,
-dnl tclsh using dlopen to load the DB library. Anyway, by using LWP threads
-dnl we avoid answering lots of user questions, not to mention the bugs.
-if test "$db_cv_mutex" = no; then
-AC_TRY_RUN([
-#include <synch.h>
-main(){
- static lwp_mutex_t mi = SHAREDMUTEX;
- static lwp_cond_t ci = SHAREDCV;
- lwp_mutex_t mutex = mi;
- lwp_cond_t cond = ci;
- exit (
- _lwp_mutex_lock(&mutex) ||
- _lwp_mutex_unlock(&mutex));
-}], [db_cv_mutex="Solaris/lwp"])
-fi
-
-dnl UI threads: thr_XXX
-dnl
-dnl Try with and without the -lthread library.
-if test "$db_cv_mutex" = no -o "$db_cv_mutex" = "ui_only"; then
-LIBS="-lthread $LIBS"
-AC_TRY_RUN([
-#include <thread.h>
-#include <synch.h>
-main(){
- mutex_t mutex;
- cond_t cond;
- int type = USYNC_PROCESS;
- exit (
- mutex_init(&mutex, type, NULL) ||
- cond_init(&cond, type, NULL) ||
- mutex_lock(&mutex) ||
- mutex_unlock(&mutex));
-}], [db_cv_mutex="UI/threads/library"])
-LIBS="$orig_libs"
-fi
-if test "$db_cv_mutex" = no -o "$db_cv_mutex" = "ui_only"; then
-AC_TRY_RUN([
-#include <thread.h>
-#include <synch.h>
-main(){
- mutex_t mutex;
- cond_t cond;
- int type = USYNC_PROCESS;
- exit (
- mutex_init(&mutex, type, NULL) ||
- cond_init(&cond, type, NULL) ||
- mutex_lock(&mutex) ||
- mutex_unlock(&mutex));
-}], [db_cv_mutex="UI/threads"])
-fi
-if test "$db_cv_mutex" = "ui_only"; then
- AC_MSG_ERROR([unable to find UI mutex interfaces])
-fi
-
-
-dnl POSIX.1 pthreads: pthread_XXX
-dnl
-dnl Try with and without the -lpthread library.
-if test "$db_cv_mutex" = no -o "$db_cv_mutex" = "posix_only"; then
+# POSIX pthreads tests: inter-process safe and intra-process only.
+AC_DEFUN(AM_PTHREADS_SHARED, [
AC_TRY_RUN([
#include <pthread.h>
-main(){
+main() {
pthread_cond_t cond;
pthread_mutex_t mutex;
pthread_condattr_t condattr;
@@ -112,13 +22,9 @@ main(){
pthread_cond_destroy(&cond) ||
pthread_condattr_destroy(&condattr) ||
pthread_mutexattr_destroy(&mutexattr));
-}], [db_cv_mutex="POSIX/pthreads"])
-fi
-if test "$db_cv_mutex" = no -o "$db_cv_mutex" = "posix_only"; then
-LIBS="-lpthread $LIBS"
-AC_TRY_RUN([
-#include <pthread.h>
-main(){
+}], [db_cv_mutex="$1"],,
+AC_TRY_LINK([
+#include <pthread.h>],[
pthread_cond_t cond;
pthread_mutex_t mutex;
pthread_condattr_t condattr;
@@ -136,19 +42,251 @@ main(){
pthread_cond_destroy(&cond) ||
pthread_condattr_destroy(&condattr) ||
pthread_mutexattr_destroy(&mutexattr));
-}], [db_cv_mutex="POSIX/pthreads/library"])
-LIBS="$orig_libs"
+], [db_cv_mutex="$1"]))])
+AC_DEFUN(AM_PTHREADS_PRIVATE, [
+AC_TRY_RUN([
+#include <pthread.h>
+main() {
+ pthread_cond_t cond;
+ pthread_mutex_t mutex;
+ pthread_condattr_t condattr;
+ pthread_mutexattr_t mutexattr;
+ exit (
+ pthread_condattr_init(&condattr) ||
+ pthread_mutexattr_init(&mutexattr) ||
+ pthread_cond_init(&cond, &condattr) ||
+ pthread_mutex_init(&mutex, &mutexattr) ||
+ pthread_mutex_lock(&mutex) ||
+ pthread_mutex_unlock(&mutex) ||
+ pthread_mutex_destroy(&mutex) ||
+ pthread_cond_destroy(&cond) ||
+ pthread_condattr_destroy(&condattr) ||
+ pthread_mutexattr_destroy(&mutexattr));
+}], [db_cv_mutex="$1"],,
+AC_TRY_LINK([
+#include <pthread.h>],[
+ pthread_cond_t cond;
+ pthread_mutex_t mutex;
+ pthread_condattr_t condattr;
+ pthread_mutexattr_t mutexattr;
+ exit (
+ pthread_condattr_init(&condattr) ||
+ pthread_mutexattr_init(&mutexattr) ||
+ pthread_cond_init(&cond, &condattr) ||
+ pthread_mutex_init(&mutex, &mutexattr) ||
+ pthread_mutex_lock(&mutex) ||
+ pthread_mutex_unlock(&mutex) ||
+ pthread_mutex_destroy(&mutex) ||
+ pthread_cond_destroy(&cond) ||
+ pthread_condattr_destroy(&condattr) ||
+ pthread_mutexattr_destroy(&mutexattr));
+], [db_cv_mutex="$1"]))])
+
+# Figure out mutexes for this compiler/architecture.
+#
+# There are 3 mutex groups in BDB: pthreads-style, test-and-set, or a hybrid
+# combination of the two. We first test for the pthreads-style mutex, and
+# then for a test-and-set mutex.
+AC_DEFUN(AM_DEFINE_MUTEXES, [
+
+# Mutexes we don't test for, but want the #defines to exist for other ports.
+AH_TEMPLATE(HAVE_MUTEX_VMS, [Define to 1 to use VMS mutexes.])
+AH_TEMPLATE(HAVE_MUTEX_VXWORKS, [Define to 1 to use VxWorks mutexes.])
+
+AC_CACHE_CHECK([for mutexes], db_cv_mutex, [
+
+orig_libs=$LIBS
+
+db_cv_mutex=no
+
+# Mutexes can be disabled.
+if test "$db_cv_build_mutexsupport" = no; then
+ db_cv_mutex=disabled;
fi
-if test "$db_cv_mutex" = "posix_only"; then
- AC_MSG_ERROR([unable to find POSIX mutex interfaces])
+
+# User-specified Win32 mutexes (MinGW build)
+if test "$db_cv_mingw" = yes; then
+ db_cv_mutex=win32/gcc
fi
-dnl msemaphore: HPPA only
-dnl Try HPPA before general msem test, it needs special alignment.
if test "$db_cv_mutex" = no; then
-AC_TRY_RUN([
-#include <sys/mman.h>
-main(){
+ # User-specified POSIX or UI mutexes.
+ #
+ # There are two different reasons to specify mutexes: First, the
+ # application is already using one type of mutex and doesn't want
+ # to mix-and-match (for example, on Solaris, which has POSIX, UI
+ # and LWP mutexes). Second, the application's POSIX pthreads
+ # mutexes don't support inter-process locking, but the application
+ # wants to use them anyway (for example, some Linux and *BSD systems).
+ #
+ # Test for LWP threads before testing for UI/POSIX threads, we prefer
+ # them on Solaris, for two reasons: a bug in SunOS 5.7 causes
+ # applications to get pwrite, not pwrite64, if they load the C library
+ # before the appropriate threads library, e.g., tclsh using dlopen to
+ # load the DB library. Second, LWP mutexes are faster than POSIX
+ # pthread mutexes by some amount.
+ #
+ # Otherwise, test for POSIX threads before UI threads. There are Linux
+ # systems that support a UI compatibility mode, and applications are
+ # more likely to be written for POSIX threads than UI threads.
+
+ if test "$db_cv_posixmutexes" = yes; then
+ db_cv_mutex=posix_only;
+ fi
+ if test "$db_cv_uimutexes" = yes; then
+ db_cv_mutex=ui_only;
+ fi
+
+ # LWP threads: _lwp_XXX
+ if test "$db_cv_mutex" = no; then
+ AC_TRY_LINK([
+ #include <synch.h>],[
+ static lwp_mutex_t mi = SHAREDMUTEX;
+ static lwp_cond_t ci = SHAREDCV;
+ lwp_mutex_t mutex = mi;
+ lwp_cond_t cond = ci;
+ exit (
+ _lwp_mutex_lock(&mutex) ||
+ _lwp_mutex_unlock(&mutex));
+ ], [db_cv_mutex=Solaris/lwp])
+ fi
+
+ # POSIX.1 pthreads: pthread_XXX
+ #
+ # If the user specified we use POSIX pthreads mutexes, and we fail to
+ # find the full interface, try and configure for just intra-process
+ # support.
+ if test "$db_cv_mutex" = no -o "$db_cv_mutex" = posix_only; then
+ LIBS="$LIBS -lpthread"
+ AM_PTHREADS_SHARED(POSIX/pthreads/library)
+ LIBS="$orig_libs"
+ fi
+ if test "$db_cv_mutex" = no -o "$db_cv_mutex" = posix_only; then
+ AM_PTHREADS_SHARED(POSIX/pthreads)
+ fi
+ if test "$db_cv_mutex" = posix_only; then
+ AM_PTHREADS_PRIVATE(POSIX/pthreads/private)
+ fi
+ if test "$db_cv_mutex" = posix_only; then
+ LIBS="$LIBS -lpthread"
+ AM_PTHREADS_PRIVATE(POSIX/pthreads/library/private)
+ LIBS="$orig_libs"
+ fi
+ if test "$db_cv_mutex" = posix_only; then
+ AC_MSG_ERROR([unable to find POSIX 1003.1 mutex interfaces])
+ fi
+
+ # UI threads: thr_XXX
+ if test "$db_cv_mutex" = no -o "$db_cv_mutex" = ui_only; then
+ LIBS="$LIBS -lthread"
+ AC_TRY_LINK([
+ #include <thread.h>
+ #include <synch.h>],[
+ mutex_t mutex;
+ cond_t cond;
+ int type = USYNC_PROCESS;
+ exit (
+ mutex_init(&mutex, type, NULL) ||
+ cond_init(&cond, type, NULL) ||
+ mutex_lock(&mutex) ||
+ mutex_unlock(&mutex));
+ ], [db_cv_mutex=UI/threads/library])
+ LIBS="$orig_libs"
+ fi
+ if test "$db_cv_mutex" = no -o "$db_cv_mutex" = ui_only; then
+ AC_TRY_LINK([
+ #include <thread.h>
+ #include <synch.h>],[
+ mutex_t mutex;
+ cond_t cond;
+ int type = USYNC_PROCESS;
+ exit (
+ mutex_init(&mutex, type, NULL) ||
+ cond_init(&cond, type, NULL) ||
+ mutex_lock(&mutex) ||
+ mutex_unlock(&mutex));
+ ], [db_cv_mutex=UI/threads])
+ fi
+ if test "$db_cv_mutex" = ui_only; then
+ AC_MSG_ERROR([unable to find UI mutex interfaces])
+ fi
+
+ # We're done testing for pthreads-style mutexes. Next, check for
+ # test-and-set mutexes. Check first for hybrid implementations,
+ # because we check for them even if we've already found a
+ # pthreads-style mutex and they're the most common architectures
+ # anyway.
+ #
+ # x86/gcc: FreeBSD, NetBSD, BSD/OS, Linux
+ AC_TRY_COMPILE(,[
+ #if (defined(i386) || defined(__i386__)) && defined(__GNUC__)
+ exit(0);
+ #else
+ FAIL TO COMPILE/LINK
+ #endif
+ ], [db_cv_mutex="$db_cv_mutex/x86/gcc-assembly"])
+
+ # x86_64/gcc: FreeBSD, NetBSD, BSD/OS, Linux
+ AC_TRY_COMPILE(,[
+ #if (defined(x86_64) || defined(__x86_64__)) && defined(__GNUC__)
+ exit(0);
+ #else
+ FAIL TO COMPILE/LINK
+ #endif
+ ], [db_cv_mutex="$db_cv_mutex/x86_64/gcc-assembly"])
+
+ # Solaris is one of the systems where we can configure hybrid mutexes.
+ # However, we require the membar_enter function for that, and only newer
+ # Solaris releases have it. Check to see if we can configure hybrids.
+ AC_TRY_LINK([
+ #include <sys/atomic.h>
+ #include <sys/machlock.h>],[
+ typedef lock_t tsl_t;
+ lock_t x;
+ _lock_try(&x);
+ _lock_clear(&x);
+ membar_enter();
+ ], [db_cv_mutex="$db_cv_mutex/Solaris/_lock_try/membar"])
+
+ # Sparc/gcc: SunOS, Solaris
+ AC_TRY_COMPILE(,[
+ #if defined(__sparc__) && defined(__GNUC__)
+ exit(0);
+ #else
+ FAIL TO COMPILE/LINK
+ #endif
+ ], [db_cv_mutex="$db_cv_mutex/Sparc/gcc-assembly"])
+
+ # We're done testing for any hybrid mutex implementations. If we did
+ # not find a pthreads-style mutex, but did find a test-and-set mutex,
+ # we set db_cv_mutex to "no/XXX" -- clean that up.
+ db_cv_mutex=`echo $db_cv_mutex | sed 's/^no\///'`
+fi
+
+# If we still don't have a mutex implementation yet, continue testing for a
+# test-and-set mutex implementation.
+
+# _lock_try/_lock_clear: Solaris
+# On Solaris systems without other mutex interfaces, DB uses the undocumented
+# _lock_try _lock_clear function calls instead of either the sema_trywait(3T)
+# or sema_wait(3T) function calls. This is because of problems in those
+# interfaces in some releases of the Solaris C library.
+if test "$db_cv_mutex" = no; then
+AC_TRY_LINK([
+#include <sys/atomic.h>
+#include <sys/machlock.h>],[
+ typedef lock_t tsl_t;
+ lock_t x;
+ _lock_try(&x);
+ _lock_clear(&x);
+], [db_cv_mutex=Solaris/_lock_try])
+fi
+
+# msemaphore: HPPA only
+# Try HPPA before general msem test, it needs special alignment.
+if test "$db_cv_mutex" = no; then
+AC_TRY_LINK([
+#include <sys/mman.h>],[
#if defined(__hppa)
typedef msemaphore tsl_t;
msemaphore x;
@@ -157,239 +295,514 @@ main(){
msem_unlock(&x, 0);
exit(0);
#else
- exit(1);
+ FAIL TO COMPILE/LINK
#endif
-}], [db_cv_mutex="HP/msem_init"])
+], [db_cv_mutex=HP/msem_init])
fi
-dnl msemaphore: AIX, OSF/1
+# msemaphore: AIX, OSF/1
if test "$db_cv_mutex" = no; then
-AC_TRY_RUN([
+AC_TRY_LINK([
#include <sys/types.h>
-#include <sys/mman.h>;
-main(){
+#include <sys/mman.h>],[
typedef msemaphore tsl_t;
msemaphore x;
msem_init(&x, 0);
msem_lock(&x, 0);
msem_unlock(&x, 0);
exit(0);
-}], [db_cv_mutex="UNIX/msem_init"])
+], [db_cv_mutex=UNIX/msem_init])
fi
-dnl ReliantUNIX
+# ReliantUNIX
if test "$db_cv_mutex" = no; then
LIBS="$LIBS -lmproc"
-AC_TRY_LINK([#include <ulocks.h>],
-[typedef spinlock_t tsl_t;
-spinlock_t x; initspin(&x, 1); cspinlock(&x); spinunlock(&x);],
-[db_cv_mutex="ReliantUNIX/initspin"])
+AC_TRY_LINK([
+#include <ulocks.h>],[
+ typedef spinlock_t tsl_t;
+ spinlock_t x;
+ initspin(&x, 1);
+ cspinlock(&x);
+ spinunlock(&x);
+], [db_cv_mutex=ReliantUNIX/initspin])
LIBS="$orig_libs"
fi
-dnl SCO: UnixWare has threads in libthread, but OpenServer doesn't.
+# SCO: UnixWare has threads in libthread, but OpenServer doesn't.
if test "$db_cv_mutex" = no; then
-AC_TRY_RUN([
-main(){
+AC_TRY_COMPILE(,[
#if defined(__USLC__)
exit(0);
+#else
+ FAIL TO COMPILE/LINK
#endif
- exit(1);
-}], [db_cv_mutex="SCO/x86/cc-assembly"])
+], [db_cv_mutex=SCO/x86/cc-assembly])
fi
-dnl abilock_t: SGI
+# abilock_t: SGI
if test "$db_cv_mutex" = no; then
-AC_TRY_LINK([#include <abi_mutex.h>],
-[typedef abilock_t tsl_t;
-abilock_t x; init_lock(&x); acquire_lock(&x); release_lock(&x);],
-[db_cv_mutex="SGI/init_lock"])
+AC_TRY_LINK([
+#include <abi_mutex.h>],[
+ typedef abilock_t tsl_t;
+ abilock_t x;
+ init_lock(&x);
+ acquire_lock(&x);
+ release_lock(&x);
+], [db_cv_mutex=SGI/init_lock])
fi
-dnl sema_t: Solaris
-dnl The sema_XXX calls do not work on Solaris 5.5. I see no reason to ever
-dnl turn this test on, unless we find some other platform that uses the old
-dnl POSIX.1 interfaces. (I plan to move directly to pthreads on Solaris.)
+# sema_t: Solaris
+# The sema_XXX calls do not work on Solaris 5.5. I see no reason to ever
+# turn this test on, unless we find some other platform that uses the old
+# POSIX.1 interfaces.
if test "$db_cv_mutex" = DOESNT_WORK; then
-AC_TRY_LINK([#include <synch.h>],
-[typedef sema_t tsl_t;
- sema_t x;
- sema_init(&x, 1, USYNC_PROCESS, NULL); sema_wait(&x); sema_post(&x);],
-[db_cv_mutex="UNIX/sema_init"])
+AC_TRY_LINK([
+#include <synch.h>],[
+ typedef sema_t tsl_t;
+ sema_t x;
+ sema_init(&x, 1, USYNC_PROCESS, NULL);
+ sema_wait(&x);
+ sema_post(&x);
+], [db_cv_mutex=UNIX/sema_init])
fi
-dnl _lock_try/_lock_clear: Solaris
-dnl On Solaris systems without Pthread or UI mutex interfaces, DB uses the
-dnl undocumented _lock_try _lock_clear function calls instead of either the
-dnl sema_trywait(3T) or sema_wait(3T) function calls. This is because of
-dnl problems in those interfaces in some releases of the Solaris C library.
+# _check_lock/_clear_lock: AIX
if test "$db_cv_mutex" = no; then
-AC_TRY_LINK([#include <sys/machlock.h>],
-[typedef lock_t tsl_t;
- lock_t x;
- _lock_try(&x); _lock_clear(&x);],
-[db_cv_mutex="Solaris/_lock_try"])
+AC_TRY_LINK([
+#include <sys/atomic_op.h>],[
+ int x;
+ _check_lock(&x,0,1);
+ _clear_lock(&x,0);
+], [db_cv_mutex=AIX/_check_lock])
fi
-dnl _check_lock/_clear_lock: AIX
+# _spin_lock_try/_spin_unlock: Apple/Darwin
if test "$db_cv_mutex" = no; then
-AC_TRY_LINK([#include <sys/atomic_op.h>],
-[int x; _check_lock(&x,0,1); _clear_lock(&x,0);],
-[db_cv_mutex="AIX/_check_lock"])
+AC_TRY_LINK(,[
+ int x;
+ _spin_lock_try(&x);
+ _spin_unlock(&x);
+], [db_cv_mutex=Darwin/_spin_lock_try])
fi
-dnl Alpha/gcc: OSF/1
-dnl The alpha/gcc code doesn't work as far as I know. There are
-dnl two versions, both have problems. See Support Request #1583.
-if test "$db_cv_mutex" = DOESNT_WORK; then
-AC_TRY_RUN([main(){
-#if defined(__alpha)
-#if defined(__GNUC__)
-exit(0);
-#endif
+# Tru64/cc
+if test "$db_cv_mutex" = no; then
+AC_TRY_COMPILE(,[
+#if defined(__alpha) && defined(__DECC)
+ exit(0);
+#else
+ FAIL TO COMPILE/LINK
#endif
-exit(1);}],
-[db_cv_mutex="ALPHA/gcc-assembly"])
+], [db_cv_mutex=Tru64/cc-assembly])
fi
-dnl PaRisc/gcc: HP/UX
+# Alpha/gcc
if test "$db_cv_mutex" = no; then
-AC_TRY_RUN([main(){
-#if defined(__hppa)
-#if defined(__GNUC__)
-exit(0);
-#endif
+AC_TRY_COMPILE(,[
+#if defined(__alpha) && defined(__GNUC__)
+ exit(0);
+#else
+ FAIL TO COMPILE/LINK
#endif
-exit(1);}],
-[db_cv_mutex="HPPA/gcc-assembly"])
+], [db_cv_mutex=ALPHA/gcc-assembly])
fi
-dnl PPC/gcc:
+# ARM/gcc: Linux
if test "$db_cv_mutex" = no; then
-AC_TRY_RUN([main(){
-#if defined(__powerpc__)
-#if defined(__GNUC__)
-exit(0);
-#endif
+AC_TRY_COMPILE(,[
+#if defined(__arm__) && defined(__GNUC__)
+ exit(0);
+#else
+ FAIL TO COMPILE/LINK
#endif
-exit(1);}],
-[db_cv_mutex="PPC/gcc-assembly"])
+], [db_cv_mutex=ARM/gcc-assembly])
fi
-dnl Sparc/gcc: SunOS, Solaris
-dnl The sparc/gcc code doesn't always work, specifically, I've seen assembler
-dnl failures from the stbar instruction on SunOS 4.1.4/sun4c and gcc 2.7.2.2.
-if test "$db_cv_mutex" = DOESNT_WORK; then
-AC_TRY_RUN([main(){
-#if defined(__sparc__)
-#if defined(__GNUC__)
+# MIPS/gcc: Linux
+if test "$db_cv_mutex" = no; then
+AC_TRY_COMPILE(,[
+#if (defined(__mips) || defined(__mips__)) && defined(__GNUC__)
exit(0);
+#else
+ FAIL TO COMPILE/LINK
#endif
-#endif
- exit(1);
-}], [db_cv_mutex="Sparc/gcc-assembly"])
+], [db_cv_mutex=MIPS/gcc-assembly])
fi
-dnl 68K/gcc: SunOS
+# PaRisc/gcc: HP/UX
if test "$db_cv_mutex" = no; then
-AC_TRY_RUN([main(){
-#if (defined(mc68020) || defined(sun3))
-#if defined(__GNUC__)
+AC_TRY_COMPILE(,[
+#if (defined(__hppa) || defined(__hppa__)) && defined(__GNUC__)
exit(0);
+#else
+ FAIL TO COMPILE/LINK
#endif
+], [db_cv_mutex=HPPA/gcc-assembly])
+fi
+
+# PPC/gcc:
+if test "$db_cv_mutex" = no; then
+AC_TRY_COMPILE(,[
+#if (defined(__powerpc__) || defined(__ppc__)) && defined(__GNUC__)
+ exit(0);
+#else
+ FAIL TO COMPILE/LINK
#endif
- exit(1);
-}], [db_cv_mutex="68K/gcc-assembly"])
+], [db_cv_mutex=PPC/gcc-assembly])
fi
-dnl x86/gcc: FreeBSD, NetBSD, BSD/OS, Linux
+# 68K/gcc: SunOS
if test "$db_cv_mutex" = no; then
-AC_TRY_RUN([main(){
-#if defined(i386) || defined(__i386__)
-#if defined(__GNUC__)
+AC_TRY_COMPILE(,[
+#if (defined(mc68020) || defined(sun3)) && defined(__GNUC__)
exit(0);
+#else
+ FAIL TO COMPILE/LINK
#endif
+], [db_cv_mutex=68K/gcc-assembly])
+fi
+
+# S390/cc: IBM OS/390 Unix
+if test "$db_cv_mutex" = no; then
+AC_TRY_COMPILE(,[
+#if defined(__MVS__) && defined(__IBMC__)
+ exit(0);
+#else
+ FAIL TO COMPILE/LINK
#endif
- exit(1);
-}], [db_cv_mutex="x86/gcc-assembly"])
+], [db_cv_mutex=S390/cc-assembly])
fi
-dnl ia86/gcc: Linux
+# S390/gcc: Linux
if test "$db_cv_mutex" = no; then
-AC_TRY_RUN([main(){
-#if defined(__ia64)
-#if defined(__GNUC__)
+AC_TRY_COMPILE(,[
+#if defined(__s390__) && defined(__GNUC__)
exit(0);
+#else
+ FAIL TO COMPILE/LINK
#endif
+], [db_cv_mutex=S390/gcc-assembly])
+fi
+
+# ia64/gcc: Linux
+if test "$db_cv_mutex" = no; then
+AC_TRY_COMPILE(,[
+#if defined(__ia64) && defined(__GNUC__)
+ exit(0);
+#else
+ FAIL TO COMPILE/LINK
#endif
- exit(1);
-}], [db_cv_mutex="ia64/gcc-assembly"])
+], [db_cv_mutex=ia64/gcc-assembly])
fi
-dnl: uts/cc: UTS
+# uts/cc: UTS
if test "$db_cv_mutex" = no; then
-AC_TRY_RUN([main(){
+AC_TRY_COMPILE(,[
#if defined(_UTS)
exit(0);
+#else
+ FAIL TO COMPILE/LINK
#endif
- exit(1);
-}], [db_cv_mutex="UTS/cc-assembly"])
+], [db_cv_mutex=UTS/cc-assembly])
fi
-])
+# UNIX fcntl system call mutexes.
if test "$db_cv_mutex" = no; then
- AC_MSG_WARN(
- [THREAD MUTEXES NOT AVAILABLE FOR THIS COMPILER/ARCHITECTURE.])
- ADDITIONAL_OBJS="mut_fcntl${o} $ADDITIONAL_OBJS"
-else
- AC_DEFINE(HAVE_MUTEX_THREADS)
+ db_cv_mutex=UNIX/fcntl
+AC_TRY_LINK([
+#include <fcntl.h>],[
+ struct flock l;
+ l.l_whence = SEEK_SET;
+ l.l_start = 10;
+ l.l_len = 1;
+ l.l_type = F_WRLCK;
+ fcntl(0, F_SETLK, &l);
+], [db_cv_mutex=UNIX/fcntl])
fi
+])
+
+# Mutexes may not have been found, or may have been disabled.
+case "$db_cv_mutex" in
+disabled) ;;
+no)
+ AC_MSG_ERROR([Unable to find a mutex implementation]);;
+*) AC_DEFINE(HAVE_MUTEX_SUPPORT)
+ AH_TEMPLATE(HAVE_MUTEX_SUPPORT,
+ [Define to 1 if the Berkeley DB library should support mutexes.])
+esac
+# Configure a pthreads-style mutex implementation.
+hybrid=pthread
+case "$db_cv_mutex" in
+POSIX/pthreads*) ADDITIONAL_OBJS="mut_pthread${o} $ADDITIONAL_OBJS"
+ AC_DEFINE(HAVE_MUTEX_PTHREADS)
+ AH_TEMPLATE(HAVE_MUTEX_PTHREADS,
+ [Define to 1 to use POSIX 1003.1 pthread_XXX mutexes.]);;
+POSIX/pthreads/private*)ADDITIONAL_OBJS="mut_pthread${o} $ADDITIONAL_OBJS"
+ AC_DEFINE(HAVE_MUTEX_PTHREADS)
+ AC_DEFINE(HAVE_MUTEX_THREAD_ONLY)
+ AH_TEMPLATE(HAVE_MUTEX_THREAD_ONLY,
+ [Define to 1 to configure mutexes intra-process only.]);;
+POSIX/pthreads/library*)ADDITIONAL_OBJS="mut_pthread${o} $ADDITIONAL_OBJS"
+ AC_DEFINE(HAVE_MUTEX_PTHREADS);;
+POSIX/pthreads/library/private*)
+ ADDITIONAL_OBJS="mut_pthread${o} $ADDITIONAL_OBJS"
+ AC_DEFINE(HAVE_MUTEX_PTHREADS)
+ AC_DEFINE(HAVE_MUTEX_THREAD_ONLY);;
+Solaris/lwp*) ADDITIONAL_OBJS="mut_pthread${o} $ADDITIONAL_OBJS"
+ AC_DEFINE(HAVE_MUTEX_SOLARIS_LWP)
+ AH_TEMPLATE(HAVE_MUTEX_SOLARIS_LWP,
+ [Define to 1 to use the Solaris lwp threads mutexes.]);;
+UI/threads*) ADDITIONAL_OBJS="mut_pthread${o} $ADDITIONAL_OBJS"
+ AC_DEFINE(HAVE_MUTEX_UI_THREADS)
+ AH_TEMPLATE(HAVE_MUTEX_UI_THREADS,
+ [Define to 1 to use the UNIX International mutexes.]);;
+UI/threads/library*) ADDITIONAL_OBJS="mut_pthread${o} $ADDITIONAL_OBJS"
+ AC_DEFINE(HAVE_MUTEX_UI_THREADS);;
+*) hybrid=no;;
+esac
+
+# Configure a test-and-set mutex implementation.
case "$db_cv_mutex" in
68K/gcc-assembly) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
- AC_DEFINE(HAVE_MUTEX_68K_GCC_ASSEMBLY);;
+ AC_DEFINE(HAVE_MUTEX_68K_GCC_ASSEMBLY)
+ AH_TEMPLATE(HAVE_MUTEX_68K_GCC_ASSEMBLY,
+ [Define to 1 to use the GCC compiler and 68K assembly language mutexes.]);;
AIX/_check_lock) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
- AC_DEFINE(HAVE_MUTEX_AIX_CHECK_LOCK);;
+ AC_DEFINE(HAVE_MUTEX_AIX_CHECK_LOCK)
+ AH_TEMPLATE(HAVE_MUTEX_AIX_CHECK_LOCK,
+ [Define to 1 to use the AIX _check_lock mutexes.]);;
+Darwin/_spin_lock_try) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
+ AC_DEFINE(HAVE_MUTEX_DARWIN_SPIN_LOCK_TRY)
+ AH_TEMPLATE(HAVE_MUTEX_DARWIN_SPIN_LOCK_TRY,
+ [Define to 1 to use the Apple/Darwin _spin_lock_try mutexes.]);;
ALPHA/gcc-assembly) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
- AC_DEFINE(HAVE_MUTEX_ALPHA_GCC_ASSEMBLY);;
+ AC_DEFINE(HAVE_MUTEX_ALPHA_GCC_ASSEMBLY)
+ AH_TEMPLATE(HAVE_MUTEX_ALPHA_GCC_ASSEMBLY,
+ [Define to 1 to use the GCC compiler and Alpha assembly language mutexes.]);;
+ARM/gcc-assembly) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
+ AC_DEFINE(HAVE_MUTEX_ARM_GCC_ASSEMBLY)
+ AH_TEMPLATE(HAVE_MUTEX_ARM_GCC_ASSEMBLY,
+ [Define to 1 to use the GCC compiler and ARM assembly language mutexes.]);;
HP/msem_init) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
- AC_DEFINE(HAVE_MUTEX_HPPA_MSEM_INIT);;
+ AC_DEFINE(HAVE_MUTEX_HPPA_MSEM_INIT)
+ AH_TEMPLATE(HAVE_MUTEX_HPPA_MSEM_INIT,
+ [Define to 1 to use the msem_XXX mutexes on HP-UX.]);;
HPPA/gcc-assembly) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
- AC_DEFINE(HAVE_MUTEX_HPPA_GCC_ASSEMBLY);;
+ AC_DEFINE(HAVE_MUTEX_HPPA_GCC_ASSEMBLY)
+ AH_TEMPLATE(HAVE_MUTEX_HPPA_GCC_ASSEMBLY,
+ [Define to 1 to use the GCC compiler and PaRisc assembly language mutexes.]);;
ia64/gcc-assembly) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
- AC_DEFINE(HAVE_MUTEX_IA64_GCC_ASSEMBLY);;
-POSIX/pthreads) ADDITIONAL_OBJS="mut_pthread${o} $ADDITIONAL_OBJS"
- AC_DEFINE(HAVE_MUTEX_PTHREADS);;
-POSIX/pthreads/library) LIBS="-lpthread $LIBS"
- ADDITIONAL_OBJS="mut_pthread${o} $ADDITIONAL_OBJS"
- AC_DEFINE(HAVE_MUTEX_PTHREADS);;
-PPC/gcc-assembly) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
- AC_DEFINE(HAVE_MUTEX_PPC_GCC_ASSEMBLY);;
-ReliantUNIX/initspin) LIBS="$LIBS -lmproc"
+ AC_DEFINE(HAVE_MUTEX_IA64_GCC_ASSEMBLY)
+ AH_TEMPLATE(HAVE_MUTEX_IA64_GCC_ASSEMBLY,
+ [Define to 1 to use the GCC compiler and IA64 assembly language mutexes.]);;
+MIPS/gcc-assembly) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
+ AC_DEFINE(HAVE_MUTEX_MIPS_GCC_ASSEMBLY)
+ AH_TEMPLATE(HAVE_MUTEX_MIPS_GCC_ASSEMBLY,
+ [Define to 1 to use the GCC compiler and MIPS assembly language mutexes.]);;
+PPC/gcc-assembly)
+ ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
+ AC_DEFINE(HAVE_MUTEX_PPC_GCC_ASSEMBLY)
+ AH_TEMPLATE(HAVE_MUTEX_PPC_GCC_ASSEMBLY,
+ [Define to 1 to use the GCC compiler and PowerPC assembly language mutexes.]);;
+ReliantUNIX/initspin) LIBSO_LIBS="$LIBSO_LIBS -lmproc"
ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
- AC_DEFINE(HAVE_MUTEX_RELIANTUNIX_INITSPIN);;
+ AC_DEFINE(HAVE_MUTEX_RELIANTUNIX_INITSPIN)
+ AH_TEMPLATE(HAVE_MUTEX_RELIANTUNIX_INITSPIN,
+ [Define to 1 to use Reliant UNIX initspin mutexes.]);;
+S390/cc-assembly) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
+ AC_DEFINE(HAVE_MUTEX_S390_CC_ASSEMBLY)
+ AH_TEMPLATE(HAVE_MUTEX_S390_CC_ASSEMBLY,
+ [Define to 1 to use the IBM C compiler and S/390 assembly language mutexes.]);;
+S390/gcc-assembly) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
+ AC_DEFINE(HAVE_MUTEX_S390_GCC_ASSEMBLY)
+ AH_TEMPLATE(HAVE_MUTEX_S390_GCC_ASSEMBLY,
+ [Define to 1 to use the GCC compiler and S/390 assembly language mutexes.]);;
SCO/x86/cc-assembly) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
- AC_DEFINE(HAVE_MUTEX_SCO_X86_CC_ASSEMBLY);;
+ AC_DEFINE(HAVE_MUTEX_SCO_X86_CC_ASSEMBLY)
+ AH_TEMPLATE(HAVE_MUTEX_SCO_X86_CC_ASSEMBLY,
+ [Define to 1 to use the SCO compiler and x86 assembly language mutexes.]);;
SGI/init_lock) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
- AC_DEFINE(HAVE_MUTEX_SGI_INIT_LOCK);;
+ AC_DEFINE(HAVE_MUTEX_SGI_INIT_LOCK)
+ AH_TEMPLATE(HAVE_MUTEX_SGI_INIT_LOCK,
+ [Define to 1 to use the SGI XXX_lock mutexes.]);;
Solaris/_lock_try) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
- AC_DEFINE(HAVE_MUTEX_SOLARIS_LOCK_TRY);;
-Solaris/lwp) ADDITIONAL_OBJS="mut_pthread${o} $ADDITIONAL_OBJS"
- AC_DEFINE(HAVE_MUTEX_SOLARIS_LWP);;
-Sparc/gcc-assembly) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
- AC_DEFINE(HAVE_MUTEX_SPARC_GCC_ASSEMBLY);;
-UI/threads) ADDITIONAL_OBJS="mut_pthread${o} $ADDITIONAL_OBJS"
- AC_DEFINE(HAVE_MUTEX_UI_THREADS);;
-UI/threads/library) LIBS="-lthread $LIBS"
- ADDITIONAL_OBJS="mut_pthread${o} $ADDITIONAL_OBJS"
- AC_DEFINE(HAVE_MUTEX_UI_THREADS);;
+ AC_DEFINE(HAVE_MUTEX_SOLARIS_LOCK_TRY)
+ AH_TEMPLATE(HAVE_MUTEX_SOLARIS_LOCK_TRY,
+ [Define to 1 to use the Solaris _lock_XXX mutexes.]);;
+*Solaris/_lock_try/membar)
+ hybrid="$hybrid/tas"
+ ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
+ AC_DEFINE(HAVE_MUTEX_SOLARIS_LOCK_TRY)
+ AH_TEMPLATE(HAVE_MUTEX_SOLARIS_LOCK_TRY,
+ [Define to 1 to use the Solaris _lock_XXX mutexes.]);;
+*Sparc/gcc-assembly) hybrid="$hybrid/tas"
+ ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
+ AC_DEFINE(HAVE_MUTEX_SPARC_GCC_ASSEMBLY)
+ AH_TEMPLATE(HAVE_MUTEX_SPARC_GCC_ASSEMBLY,
+ [Define to 1 to use the GCC compiler and Sparc assembly language mutexes.]);;
+Tru64/cc-assembly) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
+ AC_DEFINE(HAVE_MUTEX_TRU64_CC_ASSEMBLY)
+ AH_TEMPLATE(HAVE_MUTEX_TRU64_CC_ASSEMBLY,
+ [Define to 1 to use the CC compiler and Tru64 assembly language mutexes.]);;
UNIX/msem_init) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
- AC_DEFINE(HAVE_MUTEX_MSEM_INIT);;
+ AC_DEFINE(HAVE_MUTEX_MSEM_INIT)
+ AH_TEMPLATE(HAVE_MUTEX_MSEM_INIT,
+ [Define to 1 to use the msem_XXX mutexes on systems other than HP-UX.]);;
UNIX/sema_init) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
- AC_DEFINE(HAVE_MUTEX_SEMA_INIT);;
-UTS/cc-assembly) ADDITIONAL_OBJS="$ADDITIONAL_OBJS uts4.cc${o}"
- AC_DEFINE(HAVE_MUTEX_UTS_CC_ASSEMBLY);;
-x86/gcc-assembly) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
- AC_DEFINE(HAVE_MUTEX_X86_GCC_ASSEMBLY);;
+ AC_DEFINE(HAVE_MUTEX_SEMA_INIT)
+ AH_TEMPLATE(HAVE_MUTEX_SEMA_INIT,
+ [Define to 1 to use the obsolete POSIX 1003.1 sema_XXX mutexes.]);;
+UTS/cc-assembly) ADDITIONAL_OBJS="uts4.cc${o} $ADDITIONAL_OBJS"
+ AC_DEFINE(HAVE_MUTEX_UTS_CC_ASSEMBLY)
+ AH_TEMPLATE(HAVE_MUTEX_UTS_CC_ASSEMBLY,
+ [Define to 1 to use the UTS compiler and assembly language mutexes.]);;
+*x86/gcc-assembly) hybrid="$hybrid/tas"
+ ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
+ AC_DEFINE(HAVE_MUTEX_X86_GCC_ASSEMBLY)
+ AH_TEMPLATE(HAVE_MUTEX_X86_GCC_ASSEMBLY,
+ [Define to 1 to use the GCC compiler and 32-bit x86 assembly language mutexes.]);;
+*x86_64/gcc-assembly) hybrid="$hybrid/tas"
+ ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
+ AC_DEFINE(HAVE_MUTEX_X86_64_GCC_ASSEMBLY)
+ AH_TEMPLATE(HAVE_MUTEX_X86_64_GCC_ASSEMBLY,
+ [Define to 1 to use the GCC compiler and 64-bit x86 assembly language mutexes.]);;
+esac
+
+# Configure the remaining special cases.
+case "$db_cv_mutex" in
+UNIX/fcntl) AC_MSG_WARN(
+ [NO FAST MUTEXES FOUND FOR THIS COMPILER/ARCHITECTURE.])
+ ADDITIONAL_OBJS="mut_fcntl${o} $ADDITIONAL_OBJS"
+ AC_DEFINE(HAVE_MUTEX_FCNTL)
+ AH_TEMPLATE(HAVE_MUTEX_FCNTL,
+ [Define to 1 to use the UNIX fcntl system call mutexes.]);;
+win32) ADDITIONAL_OBJS="mut_win32${o} $ADDITIONAL_OBJS"
+ AC_DEFINE(HAVE_MUTEX_WIN32)
+ AH_TEMPLATE(HAVE_MUTEX_WIN32, [Define to 1 to use the MSVC compiler and Windows mutexes.]);;
+win32/gcc) ADDITIONAL_OBJS="mut_win32${o} $ADDITIONAL_OBJS"
+ AC_DEFINE(HAVE_MUTEX_WIN32_GCC)
+ AH_TEMPLATE(HAVE_MUTEX_WIN32_GCC, [Define to 1 to use the GCC compiler and Windows mutexes.]);;
esac
-])dnl
+
+# We may have found both a pthreads-style mutex implementation as well as a
+# test-and-set, in which case configure for the hybrid.
+if test "$hybrid" = pthread/tas; then
+ AC_DEFINE(HAVE_MUTEX_HYBRID)
+ AH_TEMPLATE(HAVE_MUTEX_HYBRID,
+ [Define to 1 to use test-and-set mutexes with blocking mutexes.])
+fi
+
+# The mutex selection may require specific declarations -- we fill in most of
+# them above, but here are the common ones.
+#
+# The mutex selection may tell us what kind of thread package we're using,
+# which we use to figure out the thread type.
+#
+# If we're configured for the POSIX pthread API, then force the thread ID type
+# and include function, regardless of the mutex selection. Ditto for the
+# (default) Solaris lwp mutexes, because they don't have a way to return the
+# thread ID.
+#
+# Try and link with a threads library if possible. The problem is the Solaris
+# C library has UI/POSIX interface stubs, but they're broken, configuring them
+# for inter-process mutexes doesn't return an error, but it doesn't work either.
+# For that reason always add -lpthread if we're using pthread calls or mutexes
+# and there's a pthread library.
+#
+# We can't depend on any specific call existing (pthread_create, for example),
+# as it may be #defined in an include file -- OSF/1 (Tru64) has this problem.
+
+AC_SUBST(thread_h_decl)
+AC_SUBST(db_threadid_t_decl)
+db_threadid_t_decl=notset
+
+case "$db_cv_mutex" in
+POSIX/pthread*|Solaris/lwp*)
+ thread_h_decl="#include <pthread.h>"
+ db_threadid_t_decl="typedef pthread_t db_threadid_t;"
+ AC_HAVE_LIBRARY(pthread, LIBSO_LIBS="$LIBSO_LIBS -lpthread");;
+UI/threads*)
+ thread_h_decl="#include <thread.h>"
+ db_threadid_t_decl="typedef thread_t db_threadid_t;"
+ AC_HAVE_LIBRARY(thread, LIBSO_LIBS="$LIBSO_LIBS -lthread");;
+*)
+ if test "$db_cv_pthread_api" = yes; then
+ thread_h_decl="#include <pthread.h>"
+ db_threadid_t_decl="typedef pthread_t db_threadid_t;"
+ AC_HAVE_LIBRARY(pthread, LIBSO_LIBS="$LIBSO_LIBS -lpthread")
+ fi;;
+esac
+
+# We need to know if the thread ID type will fit into an integral type and we
+# can compare it for equality and generally treat it like an int, or if it's a
+# non-integral type and we have to treat it like a structure or other untyped
+# block of bytes. For example, MVS typedef's pthread_t to a structure.
+AH_TEMPLATE(HAVE_SIMPLE_THREAD_TYPE,
+ [Define to 1 if thread identifier type db_threadid_t is integral.])
+if test "$db_threadid_t_decl" = notset; then
+ db_threadid_t_decl="typedef uintmax_t db_threadid_t;"
+ AC_DEFINE(HAVE_SIMPLE_THREAD_TYPE)
+else
+ AC_TRY_COMPILE(
+ #include <sys/types.h>
+ $thread_h_decl, [
+ $db_threadid_t_decl
+ db_threadid_t a;
+ a = 0;
+ ], AC_DEFINE(HAVE_SIMPLE_THREAD_TYPE))
+fi
+
+# If we're building replication and configured with POSIX pthreads or were
+# told to build using the POSIX API, build the replication manager framework.
+db_cv_build_replication_mgr=no
+if test "$db_cv_build_replication" = yes; then
+ AH_TEMPLATE(HAVE_REPLICATION_THREADS,
+ [Define to 1 if building the Berkeley DB replication framework.])
+ case "$db_cv_mutex" in
+ POSIX/pthread*|Solaris/lwp)
+ db_cv_build_replication_mgr=yes;;
+ esac
+ if test "$db_cv_pthread_api" = yes; then
+ db_cv_build_replication_mgr=yes
+ fi
+
+ if test "$db_cv_build_replication_mgr" = yes; then
+ AC_DEFINE(HAVE_REPLICATION_THREADS)
+
+ # Solaris requires the socket and nsl libraries to build the
+ # replication manager. Don't add nsl regardless of the OS,
+ # it causes RPC to fail on AIX 4.3.3.
+ case "$host_os" in
+ solaris*)
+ AC_HAVE_LIBRARY(nsl, LIBSO_LIBS="$LIBSO_LIBS -lnsl")
+ AC_HAVE_LIBRARY(socket,
+ LIBSO_LIBS="$LIBSO_LIBS -lsocket");;
+ esac
+ fi
+fi
+
+# There are 3 classes of mutexes:
+#
+# 1: Mutexes requiring no cleanup, for example, test-and-set mutexes.
+# 2: Mutexes that must be destroyed, but which don't hold permanent system
+# resources, for example, pthread mutexes on MVS aka OS/390 aka z/OS.
+# 3: Mutexes that must be destroyed, even after the process is gone, for
+# example, pthread mutexes on QNX and binary semaphores on VxWorks.
+#
+# DB cannot currently distinguish between #2 and #3 because DB does not know
+# if the application is running environment recovery as part of startup and
+# does not need to do cleanup, or if the environment is being removed and/or
+# recovered in a loop in the application, and so does need to clean up. If
+# we get it wrong, we're going to call the mutex destroy routine on a random
+# piece of memory, which usually works, but just might drop core. For now,
+# we group #2 and #3 into the HAVE_MUTEX_SYSTEM_RESOURCES define, until we
+# have a better solution or reason to solve this in a general way -- so far,
+# the places we've needed to handle this are few.
+AH_TEMPLATE(HAVE_MUTEX_SYSTEM_RESOURCES,
+ [Define to 1 if mutexes hold system resources.])
+
+case "$host_os$db_cv_mutex" in
+*qnx*POSIX/pthread*|openedition*POSIX/pthread*)
+ AC_DEFINE(HAVE_MUTEX_SYSTEM_RESOURCES);;
+esac])
diff --git a/db/dist/aclocal/options.ac b/db/dist/aclocal/options.ac
deleted file mode 100644
index 81e1361b8..000000000
--- a/db/dist/aclocal/options.ac
+++ /dev/null
@@ -1,291 +0,0 @@
-# $Id: options.ac,v 12.4 2006/04/07 15:08:58 bostic Exp $
-
-# Process user-specified options.
-AC_DEFUN(AM_OPTIONS_SET, [
-
-# --enable-bigfile was the configuration option that Berkeley DB used before
-# autoconf 2.50 was released (which had --enable-largefile integrated in).
-AC_ARG_ENABLE(bigfile,
- [AC_HELP_STRING([--disable-bigfile],
- [Obsolete; use --disable-largefile instead.])],
- [AC_MSG_ERROR(
- [--enable-bigfile no longer supported, use --enable-largefile])])
-
-AC_MSG_CHECKING(if --disable-cryptography option specified)
-AC_ARG_ENABLE(cryptography,
- AC_HELP_STRING([--disable-cryptography],
- [Do not build database cryptography support.]),, enableval="yes")
-db_cv_build_cryptography="$enableval"
-case "$enableval" in
- no) AC_MSG_RESULT(yes);;
-yes) AC_MSG_RESULT(no);;
-esac
-
-AC_MSG_CHECKING(if --disable-hash option specified)
-AC_ARG_ENABLE(hash,
- AC_HELP_STRING([--disable-hash],
- [Do not build Hash access method.]),, enableval="yes")
-db_cv_build_hash="$enableval"
-case "$enableval" in
- no) AC_MSG_RESULT(yes);;
-yes) AC_MSG_RESULT(no);;
-esac
-
-AC_MSG_CHECKING(if --disable-queue option specified)
-AC_ARG_ENABLE(queue,
- AC_HELP_STRING([--disable-queue],
- [Do not build Queue access method.]),, enableval="yes")
-db_cv_build_queue="$enableval"
-case "$enableval" in
- no) AC_MSG_RESULT(yes);;
-yes) AC_MSG_RESULT(no);;
-esac
-
-AC_MSG_CHECKING(if --disable-replication option specified)
-AC_ARG_ENABLE(replication,
- AC_HELP_STRING([--disable-replication],
- [Do not build database replication support.]),, enableval="yes")
-db_cv_build_replication="$enableval"
-case "$enableval" in
- no) AC_MSG_RESULT(yes);;
-yes) AC_MSG_RESULT(no);;
-esac
-
-AC_MSG_CHECKING(if --disable-statistics option specified)
-AC_ARG_ENABLE(statistics,
- AC_HELP_STRING([--disable-statistics],
- [Do not build statistics support.]),, enableval="yes")
-db_cv_build_statistics="$enableval"
-case "$enableval" in
- no) AC_MSG_RESULT(yes);;
-yes) AC_MSG_RESULT(no);;
-esac
-
-AC_MSG_CHECKING(if --disable-verify option specified)
-AC_ARG_ENABLE(verify,
- AC_HELP_STRING([--disable-verify],
- [Do not build database verification support.]),, enableval="yes")
-db_cv_build_verify="$enableval"
-case "$enableval" in
- no) AC_MSG_RESULT(yes);;
-yes) AC_MSG_RESULT(no);;
-esac
-
-AC_MSG_CHECKING(if --enable-compat185 option specified)
-AC_ARG_ENABLE(compat185,
- [AC_HELP_STRING([--enable-compat185],
- [Build DB 1.85 compatibility API.])],
- [db_cv_compat185="$enable_compat185"], [db_cv_compat185="no"])
-AC_MSG_RESULT($db_cv_compat185)
-
-AC_MSG_CHECKING(if --enable-cxx option specified)
-AC_ARG_ENABLE(cxx,
- [AC_HELP_STRING([--enable-cxx],
- [Build C++ API.])],
- [db_cv_cxx="$enable_cxx"], [db_cv_cxx="no"])
-AC_MSG_RESULT($db_cv_cxx)
-
-AC_MSG_CHECKING(if --enable-debug option specified)
-AC_ARG_ENABLE(debug,
- [AC_HELP_STRING([--enable-debug],
- [Build a debugging version.])],
- [db_cv_debug="$enable_debug"], [db_cv_debug="no"])
-AC_MSG_RESULT($db_cv_debug)
-
-AC_MSG_CHECKING(if --enable-debug_rop option specified)
-AC_ARG_ENABLE(debug_rop,
- [AC_HELP_STRING([--enable-debug_rop],
- [Build a version that logs read operations.])],
- [db_cv_debug_rop="$enable_debug_rop"], [db_cv_debug_rop="no"])
-AC_MSG_RESULT($db_cv_debug_rop)
-
-AC_MSG_CHECKING(if --enable-debug_wop option specified)
-AC_ARG_ENABLE(debug_wop,
- [AC_HELP_STRING([--enable-debug_wop],
- [Build a version that logs write operations.])],
- [db_cv_debug_wop="$enable_debug_wop"], [db_cv_debug_wop="no"])
-AC_MSG_RESULT($db_cv_debug_wop)
-
-AC_MSG_CHECKING(if --enable-diagnostic option specified)
-AC_ARG_ENABLE(diagnostic,
- [AC_HELP_STRING([--enable-diagnostic],
- [Build a version with run-time diagnostics.])],
- [db_cv_diagnostic="$enable_diagnostic"], [db_cv_diagnostic="no"])
-if test "$db_cv_diagnostic" = "yes"; then
- AC_MSG_RESULT($db_cv_diagnostic)
-fi
-if test "$db_cv_diagnostic" = "no" -a "$db_cv_debug_rop" = "yes"; then
- db_cv_diagnostic="yes"
- AC_MSG_RESULT([by --enable-debug_rop])
-fi
-if test "$db_cv_diagnostic" = "no" -a "$db_cv_debug_wop" = "yes"; then
- db_cv_diagnostic="yes"
- AC_MSG_RESULT([by --enable-debug_wop])
-fi
-if test "$db_cv_diagnostic" = "no"; then
- AC_MSG_RESULT($db_cv_diagnostic)
-fi
-
-AC_MSG_CHECKING(if --enable-dump185 option specified)
-AC_ARG_ENABLE(dump185,
- [AC_HELP_STRING([--enable-dump185],
- [Build db_dump185(1) to dump 1.85 databases.])],
- [db_cv_dump185="$enable_dump185"], [db_cv_dump185="no"])
-AC_MSG_RESULT($db_cv_dump185)
-
-AC_MSG_CHECKING(if --enable-java option specified)
-AC_ARG_ENABLE(java,
- [AC_HELP_STRING([--enable-java],
- [Build Java API.])],
- [db_cv_java="$enable_java"], [db_cv_java="no"])
-AC_MSG_RESULT($db_cv_java)
-
-AC_MSG_CHECKING(if --enable-mingw option specified)
-AC_ARG_ENABLE(mingw,
- [AC_HELP_STRING([--enable-mingw],
- [Build Berkeley DB for MinGW.])],
- [db_cv_mingw="$enable_mingw"], [db_cv_mingw="no"])
-AC_MSG_RESULT($db_cv_mingw)
-
-AC_MSG_CHECKING(if --enable-o_direct option specified)
-AC_ARG_ENABLE(o_direct,
- [AC_HELP_STRING([--enable-o_direct],
- [Enable the O_DIRECT flag for direct I/O.])],
- [db_cv_o_direct="$enable_o_direct"], [db_cv_o_direct="no"])
-AC_MSG_RESULT($db_cv_o_direct)
-
-AC_MSG_CHECKING(if --enable-posixmutexes option specified)
-AC_ARG_ENABLE(posixmutexes,
- [AC_HELP_STRING([--enable-posixmutexes],
- [Force use of POSIX standard mutexes.])],
- [db_cv_posixmutexes="$enable_posixmutexes"], [db_cv_posixmutexes="no"])
-AC_MSG_RESULT($db_cv_posixmutexes)
-
-AC_ARG_ENABLE(pthread_self,
- [AC_HELP_STRING([--enable-pthread_self],
- [Obsolete; use --enable-pthread_api instead.])],
- [AC_MSG_ERROR(
- [--enable-pthread_self no longer supported, use --enable-pthread_api])])
-
-AC_MSG_CHECKING(if --enable-pthread_api option specified)
-AC_ARG_ENABLE(pthread_api,
- [AC_HELP_STRING([--enable-pthread_api],
- [Configure Berkeley DB for POSIX pthread API.])],
- [db_cv_pthread_api="$enable_pthread_api"], [db_cv_pthread_api="no"])
-# POSIX mutexes implies other POSIX APIs.
-if test "$db_cv_posixmutexes" != "no"; then
- db_cv_pthread_api="yes"
-fi
-AC_MSG_RESULT($db_cv_pthread_api)
-AH_TEMPLATE(HAVE_PTHREAD_API,
- [Define to 1 to configure Berkeley DB for POSIX pthread API.])
-if test "$db_cv_pthread_api" = "yes"; then
- AC_DEFINE(HAVE_PTHREAD_API)
-fi
-
-AC_MSG_CHECKING(if --enable-rpc option specified)
-AC_ARG_ENABLE(rpc,
- [AC_HELP_STRING([--enable-rpc],
- [Build RPC client/server.])],
- [db_cv_rpc="$enable_rpc"], [db_cv_rpc="no"])
-AC_MSG_RESULT($db_cv_rpc)
-
-AC_MSG_CHECKING(if --enable-smallbuild option specified)
-AC_ARG_ENABLE(smallbuild,
- [AC_HELP_STRING([--enable-smallbuild],
- [Build small footprint version of the library.])],
- [db_cv_smallbuild="$enable_smallbuild"], [db_cv_smallbuild="no"])
-if test "$db_cv_smallbuild" = "yes"; then
- db_cv_build_cryptography="no"
- db_cv_build_hash="no"
- db_cv_build_queue="no"
- db_cv_build_replication="no"
- db_cv_build_statistics="no"
- db_cv_build_verify="no"
-fi
-AC_MSG_RESULT($db_cv_smallbuild)
-
-AC_MSG_CHECKING(if --enable-tcl option specified)
-AC_ARG_ENABLE(tcl,
- [AC_HELP_STRING([--enable-tcl],
- [Build Tcl API.])],
- [db_cv_tcl="$enable_tcl"], [db_cv_tcl="no"])
-AC_MSG_RESULT($db_cv_tcl)
-
-AC_MSG_CHECKING(if --enable-test option specified)
-AC_ARG_ENABLE(test,
- [AC_HELP_STRING([--enable-test],
- [Configure to run the test suite.])],
- [db_cv_test="$enable_test"], [db_cv_test="no"])
-AC_MSG_RESULT($db_cv_test)
-
-AC_MSG_CHECKING(if --enable-uimutexes option specified)
-AC_ARG_ENABLE(uimutexes,
- [AC_HELP_STRING([--enable-uimutexes],
- [Force use of Unix International mutexes.])],
- [db_cv_uimutexes="$enable_uimutexes"], [db_cv_uimutexes="no"])
-AC_MSG_RESULT($db_cv_uimutexes)
-
-AC_MSG_CHECKING(if --enable-umrw option specified)
-AC_ARG_ENABLE(umrw,
- [AC_HELP_STRING([--enable-umrw],
- [Mask harmless uninitialized memory read/writes.])],
- [db_cv_umrw="$enable_umrw"], [db_cv_umrw="no"])
-AC_MSG_RESULT($db_cv_umrw)
-
-AC_MSG_CHECKING(if --with-mutex=MUTEX option specified)
-AC_ARG_WITH(mutex,
- [AC_HELP_STRING([--with-mutex=MUTEX],
- [Selection of non-standard mutexes.])],
- [with_mutex="$withval"], [with_mutex="no"])
-if test "$with_mutex" = "yes"; then
- AC_MSG_ERROR([--with-mutex requires a mutex name argument])
-fi
-if test "$with_mutex" != "no"; then
- db_cv_mutex="$with_mutex"
-fi
-AC_MSG_RESULT($with_mutex)
-
-# --with-mutexalign=ALIGNMENT was the configuration option that Berkeley DB
-# used before the DbEnv::mutex_set_align method was added.
-AC_ARG_WITH(mutexalign,
- [AC_HELP_STRING([--with-mutexalign=ALIGNMENT],
- [Obsolete; use DbEnv::mutex_set_align instead.])],
- [AC_MSG_ERROR(
- [--with-mutexalign no longer supported, use DbEnv::mutex_set_align])])
-
-AC_MSG_CHECKING([if --with-tcl=DIR option specified])
-AC_ARG_WITH(tcl,
- [AC_HELP_STRING([--with-tcl=DIR],
- [Directory location of tclConfig.sh.])],
- [with_tclconfig="$withval"], [with_tclconfig="no"])
-AC_MSG_RESULT($with_tclconfig)
-if test "$with_tclconfig" != "no"; then
- db_cv_tcl="yes"
-fi
-
-AC_MSG_CHECKING([if --with-uniquename=NAME option specified])
-AC_ARG_WITH(uniquename,
- [AC_HELP_STRING([--with-uniquename=NAME],
- [Build a uniquely named library.])],
- [with_uniquename="$withval"], [with_uniquename="no"])
-if test "$with_uniquename" = "no"; then
- db_cv_uniquename="no"
- DB_VERSION_UNIQUE_NAME=""
- AC_MSG_RESULT($with_uniquename)
-else
- db_cv_uniquename="yes"
- if test "$with_uniquename" = "yes"; then
- DB_VERSION_UNIQUE_NAME="__EDIT_DB_VERSION_UNIQUE_NAME__"
- else
- DB_VERSION_UNIQUE_NAME="$with_uniquename"
- fi
- AC_MSG_RESULT($DB_VERSION_UNIQUE_NAME)
-fi
-
-# Test requires Tcl
-if test "$db_cv_test" = "yes"; then
- if test "$db_cv_tcl" = "no"; then
- AC_MSG_ERROR([--enable-test requires --enable-tcl])
- fi
-fi])
diff --git a/db/dist/aclocal/options.m4 b/db/dist/aclocal/options.m4
index c51a39524..455ec8d8b 100644
--- a/db/dist/aclocal/options.m4
+++ b/db/dist/aclocal/options.m4
@@ -1,121 +1,314 @@
-dnl $Id: options.m4,v 11.10 2000/07/07 15:50:39 bostic Exp $
+# $Id: options.m4,v 12.7 2007/05/04 13:46:25 bostic Exp $
-dnl Process user-specified options.
+# Process user-specified options.
AC_DEFUN(AM_OPTIONS_SET, [
-AC_MSG_CHECKING(if --disable-bigfile option specified)
+# --enable-bigfile was the configuration option that Berkeley DB used before
+# autoconf 2.50 was released (which had --enable-largefile integrated in).
AC_ARG_ENABLE(bigfile,
- [ --disable-bigfile Disable AIX, HP/UX, Solaris big files.],
- [db_cv_bigfile="yes"], [db_cv_bigfile="no"])
-AC_MSG_RESULT($db_cv_bigfile)
+ [AC_HELP_STRING([--disable-bigfile],
+ [Obsolete; use --disable-largefile instead.])],
+ [AC_MSG_ERROR(
+ [--enable-bigfile no longer supported, use --enable-largefile])])
+
+AC_MSG_CHECKING(if --disable-cryptography option specified)
+AC_ARG_ENABLE(cryptography,
+ AC_HELP_STRING([--disable-cryptography],
+ [Do not build database cryptography support.]),, enableval="yes")
+db_cv_build_cryptography="$enableval"
+case "$enableval" in
+ no) AC_MSG_RESULT(yes);;
+yes) AC_MSG_RESULT(no);;
+esac
+
+AC_MSG_CHECKING(if --disable-hash option specified)
+AC_ARG_ENABLE(hash,
+ AC_HELP_STRING([--disable-hash],
+ [Do not build Hash access method.]),, enableval="yes")
+db_cv_build_hash="$enableval"
+case "$enableval" in
+ no) AC_MSG_RESULT(yes);;
+yes) AC_MSG_RESULT(no);;
+esac
+
+AC_MSG_CHECKING(if --disable-mutexsupport option specified)
+AC_ARG_ENABLE(mutexsupport,
+ AC_HELP_STRING([--disable-mutexsupport],
+ [Do not build any mutex support.]),, enableval="yes")
+db_cv_build_mutexsupport="$enableval"
+case "$enableval" in
+ no) AC_MSG_RESULT(yes);;
+yes) AC_MSG_RESULT(no);;
+esac
+
+AC_MSG_CHECKING(if --disable-queue option specified)
+AC_ARG_ENABLE(queue,
+ AC_HELP_STRING([--disable-queue],
+ [Do not build Queue access method.]),, enableval="yes")
+db_cv_build_queue="$enableval"
+case "$enableval" in
+ no) AC_MSG_RESULT(yes);;
+yes) AC_MSG_RESULT(no);;
+esac
+
+AC_MSG_CHECKING(if --disable-replication option specified)
+AC_ARG_ENABLE(replication,
+ AC_HELP_STRING([--disable-replication],
+ [Do not build database replication support.]),, enableval="yes")
+db_cv_build_replication="$enableval"
+case "$enableval" in
+ no) AC_MSG_RESULT(yes);;
+yes) AC_MSG_RESULT(no);;
+esac
+
+AC_MSG_CHECKING(if --disable-statistics option specified)
+AC_ARG_ENABLE(statistics,
+ AC_HELP_STRING([--disable-statistics],
+ [Do not build statistics support.]),, enableval="yes")
+db_cv_build_statistics="$enableval"
+case "$enableval" in
+ no) AC_MSG_RESULT(yes);;
+yes) AC_MSG_RESULT(no);;
+esac
+
+AC_MSG_CHECKING(if --disable-verify option specified)
+AC_ARG_ENABLE(verify,
+ AC_HELP_STRING([--disable-verify],
+ [Do not build database verification support.]),, enableval="yes")
+db_cv_build_verify="$enableval"
+case "$enableval" in
+ no) AC_MSG_RESULT(yes);;
+yes) AC_MSG_RESULT(no);;
+esac
AC_MSG_CHECKING(if --enable-compat185 option specified)
AC_ARG_ENABLE(compat185,
- [ --enable-compat185 Build DB 1.85 compatibility API.],
+ [AC_HELP_STRING([--enable-compat185],
+ [Build DB 1.85 compatibility API.])],
[db_cv_compat185="$enable_compat185"], [db_cv_compat185="no"])
AC_MSG_RESULT($db_cv_compat185)
AC_MSG_CHECKING(if --enable-cxx option specified)
AC_ARG_ENABLE(cxx,
- [ --enable-cxx Build C++ API.],
+ [AC_HELP_STRING([--enable-cxx],
+ [Build C++ API.])],
[db_cv_cxx="$enable_cxx"], [db_cv_cxx="no"])
AC_MSG_RESULT($db_cv_cxx)
AC_MSG_CHECKING(if --enable-debug option specified)
AC_ARG_ENABLE(debug,
- [ --enable-debug Build a debugging version.],
+ [AC_HELP_STRING([--enable-debug],
+ [Build a debugging version.])],
[db_cv_debug="$enable_debug"], [db_cv_debug="no"])
AC_MSG_RESULT($db_cv_debug)
AC_MSG_CHECKING(if --enable-debug_rop option specified)
AC_ARG_ENABLE(debug_rop,
- [ --enable-debug_rop Build a version that logs read operations.],
+ [AC_HELP_STRING([--enable-debug_rop],
+ [Build a version that logs read operations.])],
[db_cv_debug_rop="$enable_debug_rop"], [db_cv_debug_rop="no"])
AC_MSG_RESULT($db_cv_debug_rop)
AC_MSG_CHECKING(if --enable-debug_wop option specified)
AC_ARG_ENABLE(debug_wop,
- [ --enable-debug_wop Build a version that logs write operations.],
+ [AC_HELP_STRING([--enable-debug_wop],
+ [Build a version that logs write operations.])],
[db_cv_debug_wop="$enable_debug_wop"], [db_cv_debug_wop="no"])
AC_MSG_RESULT($db_cv_debug_wop)
AC_MSG_CHECKING(if --enable-diagnostic option specified)
AC_ARG_ENABLE(diagnostic,
- [ --enable-diagnostic Build a version with run-time diagnostics.],
+ [AC_HELP_STRING([--enable-diagnostic],
+ [Build a version with run-time diagnostics.])],
[db_cv_diagnostic="$enable_diagnostic"], [db_cv_diagnostic="no"])
-AC_MSG_RESULT($db_cv_diagnostic)
+if test "$db_cv_diagnostic" = "yes"; then
+ AC_MSG_RESULT($db_cv_diagnostic)
+fi
+if test "$db_cv_diagnostic" = "no" -a "$db_cv_debug_rop" = "yes"; then
+ db_cv_diagnostic="yes"
+ AC_MSG_RESULT([by --enable-debug_rop])
+fi
+if test "$db_cv_diagnostic" = "no" -a "$db_cv_debug_wop" = "yes"; then
+ db_cv_diagnostic="yes"
+ AC_MSG_RESULT([by --enable-debug_wop])
+fi
+if test "$db_cv_diagnostic" = "no"; then
+ AC_MSG_RESULT($db_cv_diagnostic)
+fi
AC_MSG_CHECKING(if --enable-dump185 option specified)
AC_ARG_ENABLE(dump185,
- [ --enable-dump185 Build db_dump185(1) to dump 1.85 databases.],
+ [AC_HELP_STRING([--enable-dump185],
+ [Build db_dump185(1) to dump 1.85 databases.])],
[db_cv_dump185="$enable_dump185"], [db_cv_dump185="no"])
AC_MSG_RESULT($db_cv_dump185)
-AC_MSG_CHECKING(if --enable-dynamic option specified)
-AC_ARG_ENABLE(dynamic,
- [ --enable-dynamic Build with dynamic libraries.],
- [db_cv_dynamic="$enable_dynamic"], [db_cv_dynamic="no"])
-AC_MSG_RESULT($db_cv_dynamic)
-
AC_MSG_CHECKING(if --enable-java option specified)
AC_ARG_ENABLE(java,
- [ --enable-java Build Java API.],
+ [AC_HELP_STRING([--enable-java],
+ [Build Java API.])],
[db_cv_java="$enable_java"], [db_cv_java="no"])
AC_MSG_RESULT($db_cv_java)
+AC_MSG_CHECKING(if --enable-mingw option specified)
+AC_ARG_ENABLE(mingw,
+ [AC_HELP_STRING([--enable-mingw],
+ [Build Berkeley DB for MinGW.])],
+ [db_cv_mingw="$enable_mingw"], [db_cv_mingw="no"])
+AC_MSG_RESULT($db_cv_mingw)
+
+AC_MSG_CHECKING(if --enable-fine_grained_lock_manager option specified)
+AC_ARG_ENABLE(fine_grained_lock_manager,
+ [AC_HELP_STRING([--enable-fine_grained_lock_manager],
+ [Build Berkeley DB with a fine-grained lock manager.])],
+ [db_cv_fine_grained_lock_manager="$enable_fine_grained_lock_manager"],
+ [db_cv_fine_grained_lock_manager="no"])
+AC_MSG_RESULT($db_cv_fine_grained_lock_manager)
+AH_TEMPLATE(HAVE_FINE_GRAINED_LOCK_MANAGER,
+ [Define to 1 to build Berkeley DB with a fine-grained lock manager.])
+if test "$db_cv_fine_grained_lock_manager" = "yes"; then
+ AC_DEFINE(HAVE_FINE_GRAINED_LOCK_MANAGER)
+fi
+
+AC_MSG_CHECKING(if --enable-o_direct option specified)
+AC_ARG_ENABLE(o_direct,
+ [AC_HELP_STRING([--enable-o_direct],
+ [Enable the O_DIRECT flag for direct I/O.])],
+ [db_cv_o_direct="$enable_o_direct"], [db_cv_o_direct="no"])
+AC_MSG_RESULT($db_cv_o_direct)
+
AC_MSG_CHECKING(if --enable-posixmutexes option specified)
AC_ARG_ENABLE(posixmutexes,
- [ --enable-posixmutexes Force use of POSIX standard mutexes.],
+ [AC_HELP_STRING([--enable-posixmutexes],
+ [Force use of POSIX standard mutexes.])],
[db_cv_posixmutexes="$enable_posixmutexes"], [db_cv_posixmutexes="no"])
AC_MSG_RESULT($db_cv_posixmutexes)
+AC_ARG_ENABLE(pthread_self,
+ [AC_HELP_STRING([--enable-pthread_self],
+ [Obsolete; use --enable-pthread_api instead.])],
+ [AC_MSG_ERROR(
+ [--enable-pthread_self no longer supported, use --enable-pthread_api])])
+
+AC_MSG_CHECKING(if --enable-pthread_api option specified)
+AC_ARG_ENABLE(pthread_api,
+ [AC_HELP_STRING([--enable-pthread_api],
+ [Configure Berkeley DB for POSIX pthread API.])],
+ [db_cv_pthread_api="$enable_pthread_api"], [db_cv_pthread_api="no"])
+# POSIX mutexes implies other POSIX APIs.
+if test "$db_cv_posixmutexes" != "no"; then
+ db_cv_pthread_api="yes"
+fi
+AC_MSG_RESULT($db_cv_pthread_api)
+AH_TEMPLATE(HAVE_PTHREAD_API,
+ [Define to 1 to configure Berkeley DB for POSIX pthread API.])
+if test "$db_cv_pthread_api" = "yes"; then
+ AC_DEFINE(HAVE_PTHREAD_API)
+fi
+
AC_MSG_CHECKING(if --enable-rpc option specified)
AC_ARG_ENABLE(rpc,
- [ --enable-rpc Build RPC client/server.],
+ [AC_HELP_STRING([--enable-rpc],
+ [Build RPC client/server.])],
[db_cv_rpc="$enable_rpc"], [db_cv_rpc="no"])
AC_MSG_RESULT($db_cv_rpc)
-dnl --enable-shared is an alias for --enable-dynamic. We support it for
-dnl compatibility with other applications, e.g., Tcl.
-AC_MSG_CHECKING(if --enable-shared option specified)
-AC_ARG_ENABLE(shared,
- [ --enable-shared Build with dynamic libraries.],
- [db_cv_shared="$enable_shared"], [db_cv_shared="no"])
-AC_MSG_RESULT($db_cv_shared)
-if test "$db_cv_shared" != "no"; then
- db_cv_dynamic="yes"
+AC_MSG_CHECKING(if --enable-smallbuild option specified)
+AC_ARG_ENABLE(smallbuild,
+ [AC_HELP_STRING([--enable-smallbuild],
+ [Build small footprint version of the library.])],
+ [db_cv_smallbuild="$enable_smallbuild"], [db_cv_smallbuild="no"])
+if test "$db_cv_smallbuild" = "yes"; then
+ db_cv_build_cryptography="no"
+ db_cv_build_hash="no"
+ db_cv_build_queue="no"
+ db_cv_build_replication="no"
+ db_cv_build_statistics="no"
+ db_cv_build_verify="no"
fi
+AC_MSG_RESULT($db_cv_smallbuild)
AC_MSG_CHECKING(if --enable-tcl option specified)
AC_ARG_ENABLE(tcl,
- [ --enable-tcl Build Tcl API.],
+ [AC_HELP_STRING([--enable-tcl],
+ [Build Tcl API.])],
[db_cv_tcl="$enable_tcl"], [db_cv_tcl="no"])
AC_MSG_RESULT($db_cv_tcl)
AC_MSG_CHECKING(if --enable-test option specified)
AC_ARG_ENABLE(test,
- [ --enable-test Configure to run the test suite.],
+ [AC_HELP_STRING([--enable-test],
+ [Configure to run the test suite.])],
[db_cv_test="$enable_test"], [db_cv_test="no"])
AC_MSG_RESULT($db_cv_test)
AC_MSG_CHECKING(if --enable-uimutexes option specified)
AC_ARG_ENABLE(uimutexes,
- [ --enable-uimutexes Force use of Unix International mutexes.],
+ [AC_HELP_STRING([--enable-uimutexes],
+ [Force use of Unix International mutexes.])],
[db_cv_uimutexes="$enable_uimutexes"], [db_cv_uimutexes="no"])
AC_MSG_RESULT($db_cv_uimutexes)
AC_MSG_CHECKING(if --enable-umrw option specified)
AC_ARG_ENABLE(umrw,
- [ --enable-umrw Mask harmless unitialized memory read/writes.],
+ [AC_HELP_STRING([--enable-umrw],
+ [Mask harmless uninitialized memory read/writes.])],
[db_cv_umrw="$enable_umrw"], [db_cv_umrw="no"])
AC_MSG_RESULT($db_cv_umrw)
-AC_MSG_CHECKING([if --with-tcl option specified])
+AC_MSG_CHECKING(if --with-mutex=MUTEX option specified)
+AC_ARG_WITH(mutex,
+ [AC_HELP_STRING([--with-mutex=MUTEX],
+ [Select non-default mutex implementation.])],
+ [with_mutex="$withval"], [with_mutex="no"])
+if test "$with_mutex" = "yes"; then
+ AC_MSG_ERROR([--with-mutex requires a mutex name argument])
+fi
+if test "$with_mutex" != "no"; then
+ db_cv_mutex="$with_mutex"
+fi
+AC_MSG_RESULT($with_mutex)
+
+# --with-mutexalign=ALIGNMENT was the configuration option that Berkeley DB
+# used before the DbEnv::mutex_set_align method was added.
+AC_ARG_WITH(mutexalign,
+ [AC_HELP_STRING([--with-mutexalign=ALIGNMENT],
+ [Obsolete; use DbEnv::mutex_set_align instead.])],
+ [AC_MSG_ERROR(
+ [--with-mutexalign no longer supported, use DbEnv::mutex_set_align])])
+
+AC_MSG_CHECKING([if --with-tcl=DIR option specified])
AC_ARG_WITH(tcl,
- [ --with-tcl=DIR Directory location of tclConfig.sh.],
- with_tclconfig=${withval}, with_tclconfig="no")
+ [AC_HELP_STRING([--with-tcl=DIR],
+ [Directory location of tclConfig.sh.])],
+ [with_tclconfig="$withval"], [with_tclconfig="no"])
AC_MSG_RESULT($with_tclconfig)
if test "$with_tclconfig" != "no"; then
db_cv_tcl="yes"
fi
-])dnl
+
+AC_MSG_CHECKING([if --with-uniquename=NAME option specified])
+AC_ARG_WITH(uniquename,
+ [AC_HELP_STRING([--with-uniquename=NAME],
+ [Build a uniquely named library.])],
+ [with_uniquename="$withval"], [with_uniquename="no"])
+if test "$with_uniquename" = "no"; then
+ db_cv_uniquename="no"
+ DB_VERSION_UNIQUE_NAME=""
+ AC_MSG_RESULT($with_uniquename)
+else
+ db_cv_uniquename="yes"
+ if test "$with_uniquename" = "yes"; then
+ DB_VERSION_UNIQUE_NAME="__EDIT_DB_VERSION_UNIQUE_NAME__"
+ else
+ DB_VERSION_UNIQUE_NAME="$with_uniquename"
+ fi
+ AC_MSG_RESULT($DB_VERSION_UNIQUE_NAME)
+fi
+
+# Test requires Tcl
+if test "$db_cv_test" = "yes"; then
+ if test "$db_cv_tcl" = "no"; then
+ AC_MSG_ERROR([--enable-test requires --enable-tcl])
+ fi
+fi])
diff --git a/db/dist/aclocal/programs.ac b/db/dist/aclocal/programs.ac
deleted file mode 100644
index 3fb61f045..000000000
--- a/db/dist/aclocal/programs.ac
+++ /dev/null
@@ -1,52 +0,0 @@
-# $Id: programs.ac,v 12.2 2006/07/06 14:00:28 bostic Exp $
-
-# Check for programs used in building/installation.
-AC_DEFUN(AM_PROGRAMS_SET, [
-
-AC_CHECK_TOOL(AR, ar, none)
-test "$AR" = "none" && AC_MSG_ERROR([No ar utility found.])
-
-AC_CHECK_TOOL(CHMOD, chmod, none)
-test "$CHMOD" = "none" && AC_MSG_ERROR([No chmod utility found.])
-
-AC_CHECK_TOOL(CP, cp, none)
-test "$CP" = "none" && AC_MSG_ERROR([No cp utility found.])
-
-# The Tcl test suite requires a kill utility.
-if test "$db_cv_test" = "yes"; then
- AC_CHECK_TOOL(KILL, kill, none)
- test "$KILL" = "none" && AC_MSG_ERROR([No kill utility found.])
-fi
-
-AC_CHECK_TOOL(LN, ln, none)
-test "$LN" = "none" && AC_MSG_ERROR([No ln utility found.])
-
-AC_CHECK_TOOL(MKDIR, mkdir, none)
-test "$MKDIR" = "none" && AC_MSG_ERROR([No mkdir utility found.])
-
-# Ranlib doesn't exist on some architectures because the ar utility
-# packages the library itself.
-AC_CHECK_TOOL(RANLIB, ranlib, none)
-
-AC_CHECK_TOOL(RM, rm, none)
-test "$RM" = "none" && AC_MSG_ERROR([No rm utility found.])
-
-if test "$db_cv_rpc" = "yes"; then
- AC_CHECK_TOOL(RPCGEN, rpcgen, none)
- test "$RPCGEN" = "none" && AC_MSG_ERROR([No rpcgen utility found.])
-fi
-
-# We need a complete path for sh, because some make utility implementations get
-# upset if SHELL is set to just the command name. Don't use the SHELL variable
-# here because the user likely has the SHELL variable set to something other
-# than the Bourne shell, which is what Make wants.
-AC_PATH_TOOL(db_cv_path_sh, sh, none)
-test "$db_cv_path_sh" = "none" && AC_MSG_ERROR([No sh utility found.])
-
-# Don't strip the binaries if --enable-debug was specified.
-if test "$db_cv_debug" = yes; then
- STRIP="none"
-else
- AC_CHECK_TOOL(STRIP, strip, none)
- test "$STRIP" = "none" && AC_MSG_WARN([No strip utility found.])
-fi])
diff --git a/db/dist/aclocal/programs.m4 b/db/dist/aclocal/programs.m4
index 9ec04f4d8..9a592f788 100644
--- a/db/dist/aclocal/programs.m4
+++ b/db/dist/aclocal/programs.m4
@@ -1,48 +1,42 @@
-dnl $Id: programs.m4,v 11.11 2000/03/30 21:20:50 bostic Exp $
+# $Id: programs.m4,v 12.3 2007/04/18 14:28:19 bostic Exp $
-dnl Check for programs used in building/installation.
+# Check for programs used in building/installation.
AC_DEFUN(AM_PROGRAMS_SET, [
-AC_PATH_PROG(db_cv_path_ar, ar, missing_ar)
-if test "$db_cv_path_ar" = missing_ar; then
- AC_MSG_ERROR([No ar utility found.])
-fi
-AC_PATH_PROG(db_cv_path_chmod, chmod, missing_chmod)
-if test "$db_cv_path_chmod" = missing_chmod; then
- AC_MSG_ERROR([No chmod utility found.])
-fi
-AC_PATH_PROG(db_cv_path_cp, cp, missing_cp)
-if test "$db_cv_path_cp" = missing_cp; then
- AC_MSG_ERROR([No cp utility found.])
-fi
-AC_PATH_PROG(db_cv_path_ln, ln, missing_ln)
-if test "$db_cv_path_ln" = missing_ln; then
- AC_MSG_ERROR([No ln utility found.])
-fi
-AC_PATH_PROG(db_cv_path_mkdir, mkdir, missing_mkdir)
-if test "$db_cv_path_mkdir" = missing_mkdir; then
- AC_MSG_ERROR([No mkdir utility found.])
-fi
-AC_PATH_PROG(db_cv_path_ranlib, ranlib, missing_ranlib)
-AC_PATH_PROG(db_cv_path_rm, rm, missing_rm)
-if test "$db_cv_path_rm" = missing_rm; then
- AC_MSG_ERROR([No rm utility found.])
-fi
-AC_PATH_PROG(db_cv_path_sh, sh, missing_sh)
-if test "$db_cv_path_sh" = missing_sh; then
- AC_MSG_ERROR([No sh utility found.])
-fi
-AC_PATH_PROG(db_cv_path_strip, strip, missing_strip)
-if test "$db_cv_path_strip" = missing_strip; then
- AC_MSG_ERROR([No strip utility found.])
-fi
+AC_CHECK_TOOL(CHMOD, chmod, none)
+test "$CHMOD" = "none" && AC_MSG_ERROR([No chmod utility found.])
-dnl Check for programs used in testing.
+AC_CHECK_TOOL(CP, cp, none)
+test "$CP" = "none" && AC_MSG_ERROR([No cp utility found.])
+
+# The Tcl test suite requires a kill utility.
if test "$db_cv_test" = "yes"; then
- AC_PATH_PROG(db_cv_path_kill, kill, missing_kill)
- if test "$db_cv_path_kill" = missing_kill; then
- AC_MSG_ERROR([No kill utility found.])
- fi
+ AC_CHECK_TOOL(KILL, kill, none)
+ test "$KILL" = "none" && AC_MSG_ERROR([No kill utility found.])
fi
-])dnl
+AC_CHECK_TOOL(LN, ln, none)
+test "$LN" = "none" && AC_MSG_ERROR([No ln utility found.])
+
+AC_CHECK_TOOL(MKDIR, mkdir, none)
+test "$MKDIR" = "none" && AC_MSG_ERROR([No mkdir utility found.])
+
+AC_CHECK_TOOL(RM, rm, none)
+test "$RM" = "none" && AC_MSG_ERROR([No rm utility found.])
+
+if test "$db_cv_rpc" = "yes"; then
+ AC_CHECK_TOOL(RPCGEN, rpcgen, none)
+ test "$RPCGEN" = "none" && AC_MSG_ERROR([No rpcgen utility found.])
+fi
+
+# We need a complete path for sh, because some make utility implementations get
+# upset if SHELL is set to just the command name. Don't use the SHELL variable
+# here because the user likely has the SHELL variable set to something other
+# than the Bourne shell, which is what Make wants.
+AC_PATH_TOOL(db_cv_path_sh, sh, none)
+test "$db_cv_path_sh" = "none" && AC_MSG_ERROR([No sh utility found.])
+
+# Don't strip the binaries if --enable-debug was specified.
+if test "$db_cv_debug" = yes; then
+ STRIP=":"
+fi])
diff --git a/db/dist/aclocal/rpc.ac b/db/dist/aclocal/rpc.ac
deleted file mode 100644
index 11fb0e925..000000000
--- a/db/dist/aclocal/rpc.ac
+++ /dev/null
@@ -1,77 +0,0 @@
-# $Id: rpc.ac,v 12.1 2006/05/08 20:52:36 bostic Exp $
-
-# Try and configure RPC support.
-AC_DEFUN(AM_RPC_CONFIGURE, [
- AC_DEFINE(HAVE_RPC)
- AH_TEMPLATE(HAVE_RPC, [Define to 1 if building RPC client/server.])
-
- # We use the target's rpcgen utility because it may be architecture
- # specific, for example, 32- or 64-bit specific.
- XDR_FILE=$srcdir/../rpc_server/db_server.x
-
- # Prefer the -C option to rpcgen which generates ANSI C-conformant
- # code.
- RPCGEN="rpcgen -C"
- AC_MSG_CHECKING(["$RPCGEN" build of db_server.h])
- $RPCGEN -h $XDR_FILE > db_server.h 2>/dev/null
- if test $? -ne 0; then
- AC_MSG_RESULT([no])
-
- # Try rpcgen without the -C option.
- RPCGEN="rpcgen"
- AC_MSG_CHECKING(["$RPCGEN" build of db_server.h])
- $RPCGEN -h $XDR_FILE > db_server.h 2>/dev/null
- if test $? -ne 0; then
- AC_MSG_RESULT([no])
- AC_MSG_ERROR(
- [Unable to build RPC support: $RPCGEN failed.])
- fi
- fi
-
- # Some rpcgen programs generate a set of client stubs called something
- # like __db_env_create_4003 and functions on the server to handle the
- # request called something like __db_env_create_4003_svc. Others
- # expect client and server stubs to both be called __db_env_create_4003.
- #
- # We have to generate code in whichever format rpcgen expects, and the
- # only reliable way to do that is to check what is in the db_server.h
- # file we just created.
- if grep "env_create_[[0-9]]*_svc" db_server.h >/dev/null 2>&1 ; then
- sed 's/__SVCSUFFIX__/_svc/' \
- < $srcdir/../rpc_server/c/gen_db_server.c > gen_db_server.c
- else
- sed 's/__SVCSUFFIX__//' \
- < $srcdir/../rpc_server/c/gen_db_server.c > gen_db_server.c
- fi
-
- AC_MSG_RESULT([yes])
-
- $RPCGEN -l $XDR_FILE |
- sed -e 's/^#include.*db_server.h.*/#include "db_server.h"/' \
- -e '1,/^#include/s/^#include/#include "db_config.h"\
-&/' > db_server_clnt.c
-
- $RPCGEN -s tcp $XDR_FILE |
- sed -e 's/^#include.*db_server.h.*/#include "db_server.h"/' \
- -e 's/^main *()/__dbsrv_main()/' \
- -e 's/^main *(.*argc.*argv.*)/__dbsrv_main(int argc, char *argv[])/' \
- -e '/^db_rpc_serverprog/,/^}/{' \
- -e 's/return;//' \
- -e 's/^}/__dbsrv_timeout(0);}/' \
- -e '}' \
- -e '1,/^#include/s/^#include/#include "db_config.h"\
-&/' > db_server_svc.c
-
- $RPCGEN -c $XDR_FILE |
- sed -e 's/^#include.*db_server.h.*/#include "db_server.h"/' \
- -e '1,/^#include/s/^#include/#include "db_config.h"\
-&/' > db_server_xdr.c
-
- RPC_SERVER_H=db_server.h
- RPC_CLIENT_OBJS="\$(RPC_CLIENT_OBJS)"
- ADDITIONAL_PROGS="berkeley_db_svc $ADDITIONAL_PROGS"
-
- # Solaris and HPUX need the nsl library to build RPC.
- AC_CHECK_FUNC(svc_run,,
- AC_HAVE_LIBRARY(nsl, LIBSO_LIBS="$LIBSO_LIBS -lnsl"))
-])
diff --git a/db/dist/aclocal/rpc.m4 b/db/dist/aclocal/rpc.m4
new file mode 100644
index 000000000..44fc15efa
--- /dev/null
+++ b/db/dist/aclocal/rpc.m4
@@ -0,0 +1,77 @@
+# $Id: rpc.m4,v 12.1 2006/05/08 20:52:36 bostic Exp $
+
+# Try and configure RPC support.
+AC_DEFUN(AM_RPC_CONFIGURE, [
+ AC_DEFINE(HAVE_RPC)
+ AH_TEMPLATE(HAVE_RPC, [Define to 1 if building RPC client/server.])
+
+ # We use the target's rpcgen utility because it may be architecture
+ # specific, for example, 32- or 64-bit specific.
+ XDR_FILE=$srcdir/../rpc_server/db_server.x
+
+ # Prefer the -C option to rpcgen which generates ANSI C-conformant
+ # code.
+ RPCGEN="rpcgen -C"
+ AC_MSG_CHECKING(["$RPCGEN" build of db_server.h])
+ $RPCGEN -h $XDR_FILE > db_server.h 2>/dev/null
+ if test $? -ne 0; then
+ AC_MSG_RESULT([no])
+
+ # Try rpcgen without the -C option.
+ RPCGEN="rpcgen"
+ AC_MSG_CHECKING(["$RPCGEN" build of db_server.h])
+ $RPCGEN -h $XDR_FILE > db_server.h 2>/dev/null
+ if test $? -ne 0; then
+ AC_MSG_RESULT([no])
+ AC_MSG_ERROR(
+ [Unable to build RPC support: $RPCGEN failed.])
+ fi
+ fi
+
+ # Some rpcgen programs generate a set of client stubs called something
+ # like __db_env_create_4003 and functions on the server to handle the
+ # request called something like __db_env_create_4003_svc. Others
+ # expect client and server stubs to both be called __db_env_create_4003.
+ #
+ # We have to generate code in whichever format rpcgen expects, and the
+ # only reliable way to do that is to check what is in the db_server.h
+ # file we just created.
+ if grep "env_create_[[0-9]]*_svc" db_server.h >/dev/null 2>&1 ; then
+ sed 's/__SVCSUFFIX__/_svc/' \
+ < $srcdir/../rpc_server/c/gen_db_server.c > gen_db_server.c
+ else
+ sed 's/__SVCSUFFIX__//' \
+ < $srcdir/../rpc_server/c/gen_db_server.c > gen_db_server.c
+ fi
+
+ AC_MSG_RESULT([yes])
+
+ $RPCGEN -l $XDR_FILE |
+ sed -e 's/^#include.*db_server.h.*/#include "db_server.h"/' \
+ -e '1,/^#include/s/^#include/#include "db_config.h"\
+&/' > db_server_clnt.c
+
+ $RPCGEN -s tcp $XDR_FILE |
+ sed -e 's/^#include.*db_server.h.*/#include "db_server.h"/' \
+ -e 's/^main *()/__dbsrv_main()/' \
+ -e 's/^main *(.*argc.*argv.*)/__dbsrv_main(int argc, char *argv[])/' \
+ -e '/^db_rpc_serverprog/,/^}/{' \
+ -e 's/return;//' \
+ -e 's/^}/__dbsrv_timeout(0);}/' \
+ -e '}' \
+ -e '1,/^#include/s/^#include/#include "db_config.h"\
+&/' > db_server_svc.c
+
+ $RPCGEN -c $XDR_FILE |
+ sed -e 's/^#include.*db_server.h.*/#include "db_server.h"/' \
+ -e '1,/^#include/s/^#include/#include "db_config.h"\
+&/' > db_server_xdr.c
+
+ RPC_SERVER_H=db_server.h
+ RPC_CLIENT_OBJS="\$(RPC_CLIENT_OBJS)"
+ ADDITIONAL_PROGS="berkeley_db_svc $ADDITIONAL_PROGS"
+
+ # Solaris and HPUX need the nsl library to build RPC.
+ AC_CHECK_FUNC(svc_run,,
+ AC_HAVE_LIBRARY(nsl, LIBSO_LIBS="$LIBSO_LIBS -lnsl"))
+])
diff --git a/db/dist/aclocal/sequence.ac b/db/dist/aclocal/sequence.ac
deleted file mode 100644
index 75cf19bfd..000000000
--- a/db/dist/aclocal/sequence.ac
+++ /dev/null
@@ -1,91 +0,0 @@
-# $Id: sequence.ac,v 12.3 2005/11/24 00:49:24 bostic Exp $
-
-# Try and configure sequence support.
-AC_DEFUN(AM_SEQUENCE_CONFIGURE, [
- AC_MSG_CHECKING([for 64-bit integral type support for sequences])
-
- db_cv_build_sequence="yes"
-
- # Have to have found 64-bit types to support sequences. If we don't
- # find the native types, we try and create our own.
- if test "$ac_cv_type_int64_t" = "no" -a -z "$int64_decl"; then
- db_cv_build_sequence="no"
- fi
- if test "$ac_cv_type_uint64_t" = "no" -a -z "$u_int64_decl"; then
- db_cv_build_sequence="no"
- fi
-
- # Figure out what type is the right size, and set the format.
- AC_SUBST(INT64_FMT)
- AC_SUBST(UINT64_FMT)
- db_cv_seq_type="no"
- if test "$db_cv_build_sequence" = "yes" -a\
- "$ac_cv_sizeof_long" -eq "8"; then
- db_cv_seq_type="long"
- db_cv_seq_fmt='"%ld"'
- db_cv_seq_ufmt='"%lu"'
- INT64_FMT='#define INT64_FMT "%ld"'
- UINT64_FMT='#define UINT64_FMT "%lu"'
- else if test "$db_cv_build_sequence" = "yes" -a\
- "$ac_cv_sizeof_long_long" -eq "8"; then
- db_cv_seq_type="long long"
- db_cv_seq_fmt='"%lld"'
- db_cv_seq_ufmt='"%llu"'
- INT64_FMT='#define INT64_FMT "%lld"'
- UINT64_FMT='#define UINT64_FMT "%llu"'
- else
- db_cv_build_sequence="no"
- fi
- fi
-
- # Test to see if we can declare variables of the appropriate size
- # and format them. If we're cross-compiling, all we get is a link
- # test, which won't test for the appropriate printf format strings.
- if test "$db_cv_build_sequence" = "yes"; then
- AC_TRY_RUN([
- main() {
- $db_cv_seq_type l;
- unsigned $db_cv_seq_type u;
- char buf@<:@100@:>@;
-
- buf@<:@0@:>@ = 'a';
- l = 9223372036854775807LL;
- (void)snprintf(buf, sizeof(buf), $db_cv_seq_fmt, l);
- if (strcmp(buf, "9223372036854775807"))
- return (1);
- u = 18446744073709551615ULL;
- (void)snprintf(buf, sizeof(buf), $db_cv_seq_ufmt, u);
- if (strcmp(buf, "18446744073709551615"))
- return (1);
- return (0);
- }],, [db_cv_build_sequence="no"],
- AC_TRY_LINK(,[
- $db_cv_seq_type l;
- unsigned $db_cv_seq_type u;
- char buf@<:@100@:>@;
-
- buf@<:@0@:>@ = 'a';
- l = 9223372036854775807LL;
- (void)snprintf(buf, sizeof(buf), $db_cv_seq_fmt, l);
- if (strcmp(buf, "9223372036854775807"))
- return (1);
- u = 18446744073709551615ULL;
- (void)snprintf(buf, sizeof(buf), $db_cv_seq_ufmt, u);
- if (strcmp(buf, "18446744073709551615"))
- return (1);
- return (0);
- ],, [db_cv_build_sequence="no"]))
- fi
- if test "$db_cv_build_sequence" = "yes"; then
- AC_SUBST(db_seq_decl)
- db_seq_decl="typedef int64_t db_seq_t;";
-
- AC_DEFINE(HAVE_64BIT_TYPES)
- AH_TEMPLATE(HAVE_64BIT_TYPES,
- [Define to 1 if 64-bit types are available.])
- else
- # It still has to compile, but it won't run.
- db_seq_decl="typedef int db_seq_t;";
- fi
- AC_MSG_RESULT($db_cv_build_sequence)
-])
diff --git a/db/dist/aclocal/sequence.m4 b/db/dist/aclocal/sequence.m4
new file mode 100644
index 000000000..a2c358f91
--- /dev/null
+++ b/db/dist/aclocal/sequence.m4
@@ -0,0 +1,91 @@
+# $Id: sequence.m4,v 12.3 2005/11/24 00:49:24 bostic Exp $
+
+# Try and configure sequence support.
+AC_DEFUN(AM_SEQUENCE_CONFIGURE, [
+ AC_MSG_CHECKING([for 64-bit integral type support for sequences])
+
+ db_cv_build_sequence="yes"
+
+ # Have to have found 64-bit types to support sequences. If we don't
+ # find the native types, we try and create our own.
+ if test "$ac_cv_type_int64_t" = "no" -a -z "$int64_decl"; then
+ db_cv_build_sequence="no"
+ fi
+ if test "$ac_cv_type_uint64_t" = "no" -a -z "$u_int64_decl"; then
+ db_cv_build_sequence="no"
+ fi
+
+ # Figure out what type is the right size, and set the format.
+ AC_SUBST(INT64_FMT)
+ AC_SUBST(UINT64_FMT)
+ db_cv_seq_type="no"
+ if test "$db_cv_build_sequence" = "yes" -a\
+ "$ac_cv_sizeof_long" -eq "8"; then
+ db_cv_seq_type="long"
+ db_cv_seq_fmt='"%ld"'
+ db_cv_seq_ufmt='"%lu"'
+ INT64_FMT='#define INT64_FMT "%ld"'
+ UINT64_FMT='#define UINT64_FMT "%lu"'
+ else if test "$db_cv_build_sequence" = "yes" -a\
+ "$ac_cv_sizeof_long_long" -eq "8"; then
+ db_cv_seq_type="long long"
+ db_cv_seq_fmt='"%lld"'
+ db_cv_seq_ufmt='"%llu"'
+ INT64_FMT='#define INT64_FMT "%lld"'
+ UINT64_FMT='#define UINT64_FMT "%llu"'
+ else
+ db_cv_build_sequence="no"
+ fi
+ fi
+
+ # Test to see if we can declare variables of the appropriate size
+ # and format them. If we're cross-compiling, all we get is a link
+ # test, which won't test for the appropriate printf format strings.
+ if test "$db_cv_build_sequence" = "yes"; then
+ AC_TRY_RUN([
+ main() {
+ $db_cv_seq_type l;
+ unsigned $db_cv_seq_type u;
+ char buf@<:@100@:>@;
+
+ buf@<:@0@:>@ = 'a';
+ l = 9223372036854775807LL;
+ (void)snprintf(buf, sizeof(buf), $db_cv_seq_fmt, l);
+ if (strcmp(buf, "9223372036854775807"))
+ return (1);
+ u = 18446744073709551615ULL;
+ (void)snprintf(buf, sizeof(buf), $db_cv_seq_ufmt, u);
+ if (strcmp(buf, "18446744073709551615"))
+ return (1);
+ return (0);
+ }],, [db_cv_build_sequence="no"],
+ AC_TRY_LINK(,[
+ $db_cv_seq_type l;
+ unsigned $db_cv_seq_type u;
+ char buf@<:@100@:>@;
+
+ buf@<:@0@:>@ = 'a';
+ l = 9223372036854775807LL;
+ (void)snprintf(buf, sizeof(buf), $db_cv_seq_fmt, l);
+ if (strcmp(buf, "9223372036854775807"))
+ return (1);
+ u = 18446744073709551615ULL;
+ (void)snprintf(buf, sizeof(buf), $db_cv_seq_ufmt, u);
+ if (strcmp(buf, "18446744073709551615"))
+ return (1);
+ return (0);
+ ],, [db_cv_build_sequence="no"]))
+ fi
+ if test "$db_cv_build_sequence" = "yes"; then
+ AC_SUBST(db_seq_decl)
+ db_seq_decl="typedef int64_t db_seq_t;";
+
+ AC_DEFINE(HAVE_64BIT_TYPES)
+ AH_TEMPLATE(HAVE_64BIT_TYPES,
+ [Define to 1 if 64-bit types are available.])
+ else
+ # It still has to compile, but it won't run.
+ db_seq_decl="typedef int db_seq_t;";
+ fi
+ AC_MSG_RESULT($db_cv_build_sequence)
+])
diff --git a/db/dist/aclocal/socklen.m4 b/db/dist/aclocal/socklen.m4
new file mode 100644
index 000000000..4a77800d9
--- /dev/null
+++ b/db/dist/aclocal/socklen.m4
@@ -0,0 +1,55 @@
+dnl Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Albert Chin, Windows fixes from Simon Josefsson.
+
+dnl Check for socklen_t: historically on BSD it is an int, and in
+dnl POSIX 1g it is a type of its own, but some platforms use different
+dnl types for the argument to getsockopt, getpeername, etc. So we
+dnl have to test to find something that will work.
+
+dnl On mingw32, socklen_t is in ws2tcpip.h ('int'), so we try to find
+dnl it there first. That file is included by gnulib's socket_.h, which
+dnl all users of this module should include. Cygwin must not include
+dnl ws2tcpip.h.
+
+dnl Windows fixes removed for Berkeley DB. Functions renamed, basic check
+dnl remains the same though.
+dnl !!!
+dnl The original version had fixes for MinGW -- if you need those, go back
+dnl and look at the original code.
+
+AC_DEFUN([AM_SOCKLEN_T],[
+ AC_CHECK_TYPE([socklen_t], ,
+ [AC_MSG_CHECKING([for socklen_t equivalent])
+ AC_CACHE_VAL([db_cv_socklen_t_equiv],
+ [# Systems have either "struct sockaddr *" or
+ # "void *" as the second argument to getpeername
+ db_cv_socklen_t_equiv=
+ for arg2 in "struct sockaddr" void; do
+ for t in int size_t "unsigned int" "long int" "unsigned long int"; do
+ AC_TRY_COMPILE(
+ [#include <sys/types.h>
+ #include <sys/socket.h>
+
+ int getpeername (int, $arg2 *, $t *);],
+ [$t len;
+ getpeername (0, 0, &len);],
+ [db_cv_socklen_t_equiv="$t"])
+ test "$db_cv_socklen_t_equiv" != "" && break
+ done
+ test "$db_cv_socklen_t_equiv" != "" && break
+ done
+ ])
+ if test "$db_cv_socklen_t_equiv" = ""; then
+ AC_MSG_ERROR([Cannot find a type to use in place of socklen_t])
+ fi
+ AC_MSG_RESULT([$db_cv_socklen_t_equiv])
+ AC_DEFINE_UNQUOTED([socklen_t], [$db_cv_socklen_t_equiv],
+ [type to use in place of socklen_t if not defined])],
+ [#include <sys/types.h>
+ #ifdef HAVE_SYS_SOCKET_H
+ #include <sys/socket.h>
+ #endif])])
diff --git a/db/dist/aclocal/sosuffix.ac b/db/dist/aclocal/sosuffix.ac
deleted file mode 100644
index bd391e248..000000000
--- a/db/dist/aclocal/sosuffix.ac
+++ /dev/null
@@ -1,76 +0,0 @@
-# $Id: sosuffix.ac,v 12.0 2004/11/17 03:43:38 bostic Exp $
-# Determine shared object suffixes.
-#
-# Our method is to use the libtool variable $library_names_spec,
-# set by using AC_PROG_LIBTOOL. This variable is a snippet of shell
-# defined in terms of $versuffix, $release, $libname and $module
-# We want to eval it and grab the suffix used for shared objects.
-# By setting $module to yes/no, we obtain the suffixes
-# used to create dlloadable, or java loadable modules.
-# On many (*nix) systems, these all evaluate to .so, but there
-# are some notable exceptions.
-# Before calling this macro, $LIBTOOL_PROG must be set to
-# the correct method of invoking libtool (e.g. $SHELL ./libtool)
-
-# This macro is used internally to discover the suffix for the current
-# settings of $module. The result is stored in $_SOSUFFIX.
-AC_DEFUN(_SOSUFFIX_INTERNAL, [
- versuffix=""
- release=""
- libname=libfoo
- eval _SOSUFFIX=\"$shrext_cmds\"
- if test "$_SOSUFFIX" = "" ; then
- _SOSUFFIX=".so"
- if test `$LIBTOOL_PROG --config | grep build_libtool_libs | grep no` 2>/dev/null; then
- if test "$_SOSUFFIX_MESSAGE" = ""; then
- _SOSUFFIX_MESSAGE=yes
- AC_MSG_WARN([libtool may not know about this architecture.])
- AC_MSG_WARN([assuming $_SUFFIX suffix for dynamic libraries.])
- fi
- fi
- fi
-])
-
-# SOSUFFIX_CONFIG will set the variable SOSUFFIX to be the
-# shared library extension used for general linking, not dlopen.
-AC_DEFUN(SOSUFFIX_CONFIG, [
- AC_MSG_CHECKING([SOSUFFIX from libtool])
- module=no
- _SOSUFFIX_INTERNAL
- SOSUFFIX=$_SOSUFFIX
- AC_MSG_RESULT($SOSUFFIX)
- AC_SUBST(SOSUFFIX)
-])
-
-# MODSUFFIX_CONFIG will set the variable MODSUFFIX to be the
-# shared library extension used for dlopen'ed modules.
-# To discover this, we set $module, simulating libtool's -module option.
-AC_DEFUN(MODSUFFIX_CONFIG, [
- AC_MSG_CHECKING([MODSUFFIX from libtool])
- module=yes
- _SOSUFFIX_INTERNAL
- MODSUFFIX=$_SOSUFFIX
- AC_MSG_RESULT($MODSUFFIX)
- AC_SUBST(MODSUFFIX)
-])
-
-# JMODSUFFIX_CONFIG will set the variable JMODSUFFIX to be the
-# shared library extension used JNI modules opened by Java.
-# To discover this, we set $jnimodule, simulating libtool's -shrext option.
-##########################################################################
-# Robert Boehne: Not much point in this macro any more because apparently
-# Darwin is the only OS that wants or needs the .jnilib extension.
-##########################################################################
-AC_DEFUN(JMODSUFFIX_CONFIG, [
- AC_MSG_CHECKING([JMODSUFFIX from libtool])
- module=yes
- _SOSUFFIX_INTERNAL
- if test `uname` = "Darwin"; then
- JMODSUFFIX=".jnilib"
- else
- JMODSUFFIX=$_SOSUFFIX
- fi
- AC_MSG_RESULT($JMODSUFFIX)
- AC_SUBST(JMODSUFFIX)
-])
-
diff --git a/db/dist/aclocal/sosuffix.m4 b/db/dist/aclocal/sosuffix.m4
new file mode 100644
index 000000000..17224f7ba
--- /dev/null
+++ b/db/dist/aclocal/sosuffix.m4
@@ -0,0 +1,76 @@
+# $Id: sosuffix.m4,v 12.0 2004/11/17 03:43:38 bostic Exp $
+# Determine shared object suffixes.
+#
+# Our method is to use the libtool variable $library_names_spec,
+# set by using AC_PROG_LIBTOOL. This variable is a snippet of shell
+# defined in terms of $versuffix, $release, $libname and $module
+# We want to eval it and grab the suffix used for shared objects.
+# By setting $module to yes/no, we obtain the suffixes
+# used to create dlloadable, or java loadable modules.
+# On many (*nix) systems, these all evaluate to .so, but there
+# are some notable exceptions.
+# Before calling this macro, $LIBTOOL_PROG must be set to
+# the correct method of invoking libtool (e.g. $SHELL ./libtool)
+
+# This macro is used internally to discover the suffix for the current
+# settings of $module. The result is stored in $_SOSUFFIX.
+AC_DEFUN(_SOSUFFIX_INTERNAL, [
+ versuffix=""
+ release=""
+ libname=libfoo
+ eval _SOSUFFIX=\"$shrext_cmds\"
+ if test "$_SOSUFFIX" = "" ; then
+ _SOSUFFIX=".so"
+ if test `$LIBTOOL_PROG --config | grep build_libtool_libs | grep no` 2>/dev/null; then
+ if test "$_SOSUFFIX_MESSAGE" = ""; then
+ _SOSUFFIX_MESSAGE=yes
+ AC_MSG_WARN([libtool may not know about this architecture.])
+ AC_MSG_WARN([assuming $_SUFFIX suffix for dynamic libraries.])
+ fi
+ fi
+ fi
+])
+
+# SOSUFFIX_CONFIG will set the variable SOSUFFIX to be the
+# shared library extension used for general linking, not dlopen.
+AC_DEFUN(SOSUFFIX_CONFIG, [
+ AC_MSG_CHECKING([SOSUFFIX from libtool])
+ module=no
+ _SOSUFFIX_INTERNAL
+ SOSUFFIX=$_SOSUFFIX
+ AC_MSG_RESULT($SOSUFFIX)
+ AC_SUBST(SOSUFFIX)
+])
+
+# MODSUFFIX_CONFIG will set the variable MODSUFFIX to be the
+# shared library extension used for dlopen'ed modules.
+# To discover this, we set $module, simulating libtool's -module option.
+AC_DEFUN(MODSUFFIX_CONFIG, [
+ AC_MSG_CHECKING([MODSUFFIX from libtool])
+ module=yes
+ _SOSUFFIX_INTERNAL
+ MODSUFFIX=$_SOSUFFIX
+ AC_MSG_RESULT($MODSUFFIX)
+ AC_SUBST(MODSUFFIX)
+])
+
+# JMODSUFFIX_CONFIG will set the variable JMODSUFFIX to be the
+# shared library extension used JNI modules opened by Java.
+# To discover this, we set $jnimodule, simulating libtool's -shrext option.
+##########################################################################
+# Robert Boehne: Not much point in this macro any more because apparently
+# Darwin is the only OS that wants or needs the .jnilib extension.
+##########################################################################
+AC_DEFUN(JMODSUFFIX_CONFIG, [
+ AC_MSG_CHECKING([JMODSUFFIX from libtool])
+ module=yes
+ _SOSUFFIX_INTERNAL
+ if test `uname` = "Darwin"; then
+ JMODSUFFIX=".jnilib"
+ else
+ JMODSUFFIX=$_SOSUFFIX
+ fi
+ AC_MSG_RESULT($JMODSUFFIX)
+ AC_SUBST(JMODSUFFIX)
+])
+
diff --git a/db/dist/aclocal/tcl.ac b/db/dist/aclocal/tcl.ac
deleted file mode 100644
index 360cf62b1..000000000
--- a/db/dist/aclocal/tcl.ac
+++ /dev/null
@@ -1,135 +0,0 @@
-# $Id: tcl.ac,v 12.2 2005/06/28 20:45:25 gmf 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
-# terms for the Berkeley DB distribution dist/aclocal/tcl.m4 file are as
-# follows (copied from the license.terms file in the Tcl 8.3 distribution):
-#
-# This software is copyrighted by the Regents of the University of
-# California, Sun Microsystems, Inc., Scriptics Corporation,
-# and other parties. The following terms apply to all files associated
-# with the software unless explicitly disclaimed in individual files.
-#
-# The authors hereby grant permission to use, copy, modify, distribute,
-# and license this software and its documentation for any purpose, provided
-# that existing copyright notices are retained in all copies and that this
-# notice is included verbatim in any distributions. No written agreement,
-# license, or royalty fee is required for any of the authorized uses.
-# Modifications to this software may be copyrighted by their authors
-# and need not follow the licensing terms described here, provided that
-# the new terms are clearly indicated on the first page of each file where
-# they apply.
-#
-# IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY
-# FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
-# ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY
-# DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-#
-# THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES,
-# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE
-# IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE
-# NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
-# MODIFICATIONS.
-#
-# GOVERNMENT USE: If you are acquiring this software on behalf of the
-# U.S. government, the Government shall have only "Restricted Rights"
-# in the software and related documentation as defined in the Federal
-# Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2). If you
-# are acquiring the software on behalf of the Department of Defense, the
-# software shall be classified as "Commercial Computer Software" and the
-# Government shall have only "Restricted Rights" as defined in Clause
-# 252.227-7013 (c) (1) of DFARs. Notwithstanding the foregoing, the
-# authors grant the U.S. Government and others acting in its behalf
-# permission to use and distribute the software in accordance with the
-# terms specified in this license.
-
-AC_DEFUN(SC_PATH_TCLCONFIG, [
- AC_CACHE_VAL(ac_cv_c_tclconfig,[
-
- # First check to see if --with-tclconfig was specified.
- if test "${with_tclconfig}" != no; then
- if test -f "${with_tclconfig}/tclConfig.sh" ; then
- ac_cv_c_tclconfig=`(cd ${with_tclconfig}; pwd)`
- else
- AC_MSG_ERROR([${with_tclconfig} directory doesn't contain tclConfig.sh])
- fi
- fi
-
- # check in a few common install locations
- if test x"${ac_cv_c_tclconfig}" = x ; then
- for i in `ls -d /usr/local/lib 2>/dev/null` ; do
- if test -f "$i/tclConfig.sh" ; then
- ac_cv_c_tclconfig=`(cd $i; pwd)`
- break
- fi
- done
- fi
-
- ])
-
- if test x"${ac_cv_c_tclconfig}" = x ; then
- TCL_BIN_DIR="# no Tcl configs found"
- AC_MSG_ERROR(can't find Tcl configuration definitions)
- else
- TCL_BIN_DIR=${ac_cv_c_tclconfig}
- fi
-])
-
-AC_DEFUN(SC_LOAD_TCLCONFIG, [
- AC_MSG_CHECKING([for existence of $TCL_BIN_DIR/tclConfig.sh])
-
- if test -f "$TCL_BIN_DIR/tclConfig.sh" ; then
- AC_MSG_RESULT([loading])
- . $TCL_BIN_DIR/tclConfig.sh
- else
- AC_MSG_RESULT([file not found])
- fi
-
- # DB requires at least version 8.4.
- if test ${TCL_MAJOR_VERSION} -lt 8 \
- -o ${TCL_MAJOR_VERSION} -eq 8 -a ${TCL_MINOR_VERSION} -lt 4; then
- AC_MSG_ERROR([Berkeley DB requires Tcl version 8.4 or better.])
- fi
-
- # The eval is required to do substitution (for example, the TCL_DBGX
- # substitution in the TCL_LIB_FILE variable.
- eval "TCL_INCLUDE_SPEC=\"${TCL_INCLUDE_SPEC}\""
- eval "TCL_LIB_FILE=\"${TCL_LIB_FILE}\""
- eval "TCL_LIB_FLAG=\"${TCL_LIB_FLAG}\""
- eval "TCL_LIB_SPEC=\"${TCL_LIB_SPEC}\""
-
- #
- # If the DB Tcl library isn't loaded with the Tcl spec and library
- # flags on AIX, the resulting libdb_tcl-X.Y.so.0 will drop core at
- # load time. [#4843] Furthermore, with Tcl 8.3, the link flags
- # given by the Tcl spec are insufficient for our use. [#5779]
- #
- case "$host_os" in
- 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*)
- LIBTSO_LIBS="$LIBTSO_LIBS $TCL_LIB_SPEC $TCL_LIB_FLAG";;
- esac
- AC_SUBST(TCL_BIN_DIR)
- AC_SUBST(TCL_INCLUDE_SPEC)
- AC_SUBST(TCL_LIB_FILE)
- AC_SUBST(TCL_SRC_DIR)
-
- AC_SUBST(TCL_TCLSH)
- TCL_TCLSH="${TCL_PREFIX}/bin/tclsh${TCL_VERSION}"
-])
-
-# Optional Tcl API.
-AC_DEFUN(AM_TCL_LOAD, [
- if test `$LIBTOOL_PROG --config | grep build_libtool_libs | grep no` 2>/dev/null; then
- AC_MSG_ERROR([Tcl requires shared libraries])
- fi
-
- SC_PATH_TCLCONFIG
- SC_LOAD_TCLCONFIG
-
- INSTALL_LIBS="${INSTALL_LIBS} \$(libtso_target)"
-])
diff --git a/db/dist/aclocal/tcl.m4 b/db/dist/aclocal/tcl.m4
index 3d0aec2e8..dd3f60290 100644
--- a/db/dist/aclocal/tcl.m4
+++ b/db/dist/aclocal/tcl.m4
@@ -1,49 +1,49 @@
-dnl $Id: tcl.m4,v 11.5 2000/06/27 13:21:28 bostic Exp $
-
-dnl The SC_* macros in this file are from the unix/tcl.m4 files in the Tcl
-dnl 8.3.0 distribution, with some minor changes. For this reason, license
-dnl terms for the Berkeley DB distribution dist/aclocal/tcl.m4 file are as
-dnl follows (copied from the license.terms file in the Tcl 8.3 distribution):
-dnl
-dnl This software is copyrighted by the Regents of the University of
-dnl California, Sun Microsystems, Inc., Scriptics Corporation,
-dnl and other parties. The following terms apply to all files associated
-dnl with the software unless explicitly disclaimed in individual files.
-dnl
-dnl The authors hereby grant permission to use, copy, modify, distribute,
-dnl and license this software and its documentation for any purpose, provided
-dnl that existing copyright notices are retained in all copies and that this
-dnl notice is included verbatim in any distributions. No written agreement,
-dnl license, or royalty fee is required for any of the authorized uses.
-dnl Modifications to this software may be copyrighted by their authors
-dnl and need not follow the licensing terms described here, provided that
-dnl the new terms are clearly indicated on the first page of each file where
-dnl they apply.
-dnl
-dnl IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY
-dnl FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
-dnl ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY
-dnl DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE
-dnl POSSIBILITY OF SUCH DAMAGE.
-dnl
-dnl THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES,
-dnl INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
-dnl FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE
-dnl IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE
-dnl NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
-dnl MODIFICATIONS.
-dnl
-dnl GOVERNMENT USE: If you are acquiring this software on behalf of the
-dnl U.S. government, the Government shall have only "Restricted Rights"
-dnl in the software and related documentation as defined in the Federal
-dnl Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2). If you
-dnl are acquiring the software on behalf of the Department of Defense, the
-dnl software shall be classified as "Commercial Computer Software" and the
-dnl Government shall have only "Restricted Rights" as defined in Clause
-dnl 252.227-7013 (c) (1) of DFARs. Notwithstanding the foregoing, the
-dnl authors grant the U.S. Government and others acting in its behalf
-dnl permission to use and distribute the software in accordance with the
-dnl terms specified in this license.
+# $Id: tcl.m4,v 12.2 2005/06/28 20:45:25 gmf 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
+# terms for the Berkeley DB distribution dist/aclocal/tcl.m4 file are as
+# follows (copied from the license.terms file in the Tcl 8.3 distribution):
+#
+# This software is copyrighted by the Regents of the University of
+# California, Sun Microsystems, Inc., Scriptics Corporation,
+# and other parties. The following terms apply to all files associated
+# with the software unless explicitly disclaimed in individual files.
+#
+# The authors hereby grant permission to use, copy, modify, distribute,
+# and license this software and its documentation for any purpose, provided
+# that existing copyright notices are retained in all copies and that this
+# notice is included verbatim in any distributions. No written agreement,
+# license, or royalty fee is required for any of the authorized uses.
+# Modifications to this software may be copyrighted by their authors
+# and need not follow the licensing terms described here, provided that
+# the new terms are clearly indicated on the first page of each file where
+# they apply.
+#
+# IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY
+# FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
+# ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY
+# DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+# THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES,
+# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE
+# IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE
+# NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
+# MODIFICATIONS.
+#
+# GOVERNMENT USE: If you are acquiring this software on behalf of the
+# U.S. government, the Government shall have only "Restricted Rights"
+# in the software and related documentation as defined in the Federal
+# Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2). If you
+# are acquiring the software on behalf of the Department of Defense, the
+# software shall be classified as "Commercial Computer Software" and the
+# Government shall have only "Restricted Rights" as defined in Clause
+# 252.227-7013 (c) (1) of DFARs. Notwithstanding the foregoing, the
+# authors grant the U.S. Government and others acting in its behalf
+# permission to use and distribute the software in accordance with the
+# terms specified in this license.
AC_DEFUN(SC_PATH_TCLCONFIG, [
AC_CACHE_VAL(ac_cv_c_tclconfig,[
@@ -87,40 +87,49 @@ AC_DEFUN(SC_LOAD_TCLCONFIG, [
AC_MSG_RESULT([file not found])
fi
- #
- # The eval is required to do the TCL_DBGX substitution in the
- # TCL_LIB_FILE variable
- #
- eval TCL_LIB_FILE="${TCL_LIB_FILE}"
- eval TCL_LIB_FLAG="${TCL_LIB_FLAG}"
+ # DB requires at least version 8.4.
+ if test ${TCL_MAJOR_VERSION} -lt 8 \
+ -o ${TCL_MAJOR_VERSION} -eq 8 -a ${TCL_MINOR_VERSION} -lt 4; then
+ AC_MSG_ERROR([Berkeley DB requires Tcl version 8.4 or better.])
+ fi
+
+ # The eval is required to do substitution (for example, the TCL_DBGX
+ # substitution in the TCL_LIB_FILE variable.
+ eval "TCL_INCLUDE_SPEC=\"${TCL_INCLUDE_SPEC}\""
+ eval "TCL_LIB_FILE=\"${TCL_LIB_FILE}\""
+ eval "TCL_LIB_FLAG=\"${TCL_LIB_FLAG}\""
eval "TCL_LIB_SPEC=\"${TCL_LIB_SPEC}\""
+ #
+ # If the DB Tcl library isn't loaded with the Tcl spec and library
+ # flags on AIX, the resulting libdb_tcl-X.Y.so.0 will drop core at
+ # load time. [#4843] Furthermore, with Tcl 8.3, the link flags
+ # given by the Tcl spec are insufficient for our use. [#5779]
+ #
+ case "$host_os" in
+ 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*)
+ LIBTSO_LIBS="$LIBTSO_LIBS $TCL_LIB_SPEC $TCL_LIB_FLAG";;
+ esac
AC_SUBST(TCL_BIN_DIR)
- AC_SUBST(TCL_SRC_DIR)
+ AC_SUBST(TCL_INCLUDE_SPEC)
AC_SUBST(TCL_LIB_FILE)
+ AC_SUBST(TCL_SRC_DIR)
AC_SUBST(TCL_TCLSH)
TCL_TCLSH="${TCL_PREFIX}/bin/tclsh${TCL_VERSION}"
])
-dnl Optional Tcl API.
+# Optional Tcl API.
AC_DEFUN(AM_TCL_LOAD, [
-if test "$db_cv_tcl" != no; then
- if test "$db_cv_dynamic" != "yes"; then
- AC_MSG_ERROR([--with-tcl requires --enable-dynamic])
+ if test `$LIBTOOL_PROG --config | grep build_libtool_libs | grep no` 2>/dev/null; then
+ AC_MSG_ERROR([Tcl requires shared libraries])
fi
- AC_SUBST(TCFLAGS)
-
SC_PATH_TCLCONFIG
SC_LOAD_TCLCONFIG
- if test x"$TCL_PREFIX" != x && test -f "$TCL_PREFIX/include/tcl.h"; then
- TCFLAGS="-I$TCL_PREFIX/include"
- fi
-
- LIBS="$LIBS $TCL_LIB_SPEC $TCL_LIBS"
-
- ADDITIONAL_LIBS="$ADDITIONAL_LIBS \$(libtso_target)"
- DEFAULT_INSTALL="${DEFAULT_INSTALL} install_tcl"
-fi])
+ INSTALL_LIBS="${INSTALL_LIBS} \$(libtso_target)"
+])
diff --git a/db/dist/aclocal/types.ac b/db/dist/aclocal/types.ac
deleted file mode 100644
index f9291386d..000000000
--- a/db/dist/aclocal/types.ac
+++ /dev/null
@@ -1,167 +0,0 @@
-# $Id: types.ac,v 12.3 2005/11/03 17:46:14 bostic Exp $
-
-# Check the sizes we know about, and see if any of them match what's needed.
-#
-# Prefer ints to anything else, because read, write and others historically
-# returned an int.
-AC_DEFUN(AM_SEARCH_USIZES, [
- case "$3" in
- "$ac_cv_sizeof_unsigned_int")
- $1="typedef unsigned int $2;";;
- "$ac_cv_sizeof_unsigned_char")
- $1="typedef unsigned char $2;";;
- "$ac_cv_sizeof_unsigned_short")
- $1="typedef unsigned short $2;";;
- "$ac_cv_sizeof_unsigned_long")
- $1="typedef unsigned long $2;";;
- "$ac_cv_sizeof_unsigned_long_long")
- $1="typedef unsigned long long $2;";;
- *)
- if test "$4" != "notfatal"; then
- AC_MSG_ERROR([No unsigned $3-byte integral type])
- fi;;
- esac])
-AC_DEFUN(AM_SEARCH_SSIZES, [
- case "$3" in
- "$ac_cv_sizeof_int")
- $1="typedef int $2;";;
- "$ac_cv_sizeof_char")
- $1="typedef char $2;";;
- "$ac_cv_sizeof_short")
- $1="typedef short $2;";;
- "$ac_cv_sizeof_long")
- $1="typedef long $2;";;
- "$ac_cv_sizeof_long_long")
- $1="typedef long long $2;";;
- *)
- if test "$4" != "notfatal"; then
- AC_MSG_ERROR([No signed $3-byte integral type])
- fi;;
- esac])
-
-# Check for the standard system types.
-AC_DEFUN(AM_TYPES, [
-
-# db.h includes <sys/types.h> and <stdio.h>, not the other default includes
-# autoconf usually includes. For that reason, we specify a set of includes
-# for all type checking tests. [#5060]
-#
-# C99 says types should be in <stdint.h>; include <stdint.h> if it exists.
-#
-# Some systems have types in <stddef.h>; include <stddef.h> if it exists.
-#
-# IBM's OS/390 and z/OS releases have types in <inttypes.h> not also found
-# in <sys/types.h>; include <inttypes.h> if it exists.
-db_includes="#include <sys/types.h>"
-AC_SUBST(inttypes_h_decl)
-AC_CHECK_HEADER(inttypes.h, [
- db_includes="$db_includes
-#include <inttypes.h>"
- inttypes_h_decl="#include <inttypes.h>"])
-AC_SUBST(stdint_h_decl)
-AC_CHECK_HEADER(stdint.h, [
- db_includes="$db_includes
-#include <stdint.h>"
- stdint_h_decl="#include <stdint.h>"])
-AC_SUBST(stddef_h_decl)
-AC_CHECK_HEADER(stddef.h, [
- db_includes="$db_includes
-#include <stddef.h>"
- stddef_h_decl="#include <stddef.h>"])
-AC_SUBST(unistd_h_decl)
-AC_CHECK_HEADER(unistd.h, [
- db_includes="$db_includes
-#include <unistd.h>"
- unistd_h_decl="#include <unistd.h>"])
-db_includes="$db_includes
-#include <stdio.h>"
-
-# We require off_t and size_t, and we don't try to substitute our own
-# if we can't find them.
-AC_CHECK_TYPE(off_t,, AC_MSG_ERROR([No off_t type.]), $db_includes)
-AC_CHECK_TYPE(size_t,, AC_MSG_ERROR([No size_t type.]), $db_includes)
-
-# We need to know the sizes of various objects on this system.
-AC_CHECK_SIZEOF(char,, $db_includes)
-AC_CHECK_SIZEOF(unsigned char,, $db_includes)
-AC_CHECK_SIZEOF(short,, $db_includes)
-AC_CHECK_SIZEOF(unsigned short,, $db_includes)
-AC_CHECK_SIZEOF(int,, $db_includes)
-AC_CHECK_SIZEOF(unsigned int,, $db_includes)
-AC_CHECK_SIZEOF(long,, $db_includes)
-AC_CHECK_SIZEOF(unsigned long,, $db_includes)
-AC_CHECK_SIZEOF(long long,, $db_includes)
-AC_CHECK_SIZEOF(unsigned long long,, $db_includes)
-AC_CHECK_SIZEOF(size_t,, $db_includes)
-AC_CHECK_SIZEOF(char *,, $db_includes)
-
-# We look for u_char, u_short, u_int, u_long -- if we can't find them,
-# we create our own.
-AC_SUBST(u_char_decl)
-AC_CHECK_TYPE(u_char,,
- [u_char_decl="typedef unsigned char u_char;"], $db_includes)
-
-AC_SUBST(u_short_decl)
-AC_CHECK_TYPE(u_short,,
- [u_short_decl="typedef unsigned short u_short;"], $db_includes)
-
-AC_SUBST(u_int_decl)
-AC_CHECK_TYPE(u_int,,
- [u_int_decl="typedef unsigned int u_int;"], $db_includes)
-
-AC_SUBST(u_long_decl)
-AC_CHECK_TYPE(u_long,,
- [u_long_decl="typedef unsigned long u_long;"], $db_includes)
-
-# We look for fixed-size variants of u_char, u_short, u_int, u_long as well.
-AC_SUBST(u_int8_decl)
-AC_CHECK_TYPE(u_int8_t,,
- [AM_SEARCH_USIZES(u_int8_decl, u_int8_t, 1)], $db_includes)
-
-AC_SUBST(u_int16_decl)
-AC_CHECK_TYPE(u_int16_t,,
- [AM_SEARCH_USIZES(u_int16_decl, u_int16_t, 2)], $db_includes)
-
-AC_SUBST(int16_decl)
-AC_CHECK_TYPE(int16_t,,
- [AM_SEARCH_SSIZES(int16_decl, int16_t, 2)], $db_includes)
-
-AC_SUBST(u_int32_decl)
-AC_CHECK_TYPE(u_int32_t,,
- [AM_SEARCH_USIZES(u_int32_decl, u_int32_t, 4)], $db_includes)
-
-AC_SUBST(int32_decl)
-AC_CHECK_TYPE(int32_t,,
- [AM_SEARCH_SSIZES(int32_decl, int32_t, 4)], $db_includes)
-
-AC_SUBST(u_int64_decl)
-AC_CHECK_TYPE(u_int64_t,,
- [AM_SEARCH_USIZES(u_int64_decl, u_int64_t, 8, notfatal)], $db_includes)
-
-AC_SUBST(int64_decl)
-AC_CHECK_TYPE(int64_t,,
- [AM_SEARCH_SSIZES(int64_decl, int64_t, 8, notfatal)], $db_includes)
-
-# Check for ssize_t -- if none exists, find a signed integral type that's
-# the same size as a size_t.
-AC_SUBST(ssize_t_decl)
-AC_CHECK_TYPE(ssize_t,,
- [AM_SEARCH_SSIZES(ssize_t_decl, ssize_t, $ac_cv_sizeof_size_t)],
- $db_includes)
-
-# So far, no autoconf'd systems lack pid_t.
-AC_SUBST(pid_t_decl)
-
-# Check for uintmax_t -- if none exists, first the largest unsigned integral
-# type available.
-AC_SUBST(uintmax_t_decl)
-AC_CHECK_TYPE(uintmax_t,, [AC_CHECK_TYPE(unsigned long long,
- [uintmax_t_decl="typedef unsigned long long uintmax_t;"],
- [uintmax_t_decl="typedef unsigned long uintmax_t;"], $db_includes)])
-
-# Check for uintptr_t -- if none exists, find an integral type which is
-# the same size as a pointer.
-AC_SUBST(uintptr_t_decl)
-AC_CHECK_TYPE(uintptr_t,,
- [AM_SEARCH_USIZES(uintptr_t_decl, uintptr_t, $ac_cv_sizeof_char_p)])
-])
diff --git a/db/dist/aclocal/types.m4 b/db/dist/aclocal/types.m4
index a9a03ab6d..be5d8989d 100644
--- a/db/dist/aclocal/types.m4
+++ b/db/dist/aclocal/types.m4
@@ -1,139 +1,209 @@
-dnl $Id: types.m4,v 11.4 1999/12/04 19:18:28 bostic Exp $
+# $Id: types.m4,v 12.5 2007/04/18 14:28:20 bostic Exp $
-dnl Check for the standard shorthand types.
-AC_DEFUN(AM_SHORTHAND_TYPES, [dnl
+# Check the sizes we know about, and see if any of them match what's needed.
+#
+# Prefer ints to anything else, because read, write and others historically
+# returned an int.
+AC_DEFUN(AM_SEARCH_USIZES, [
+ case "$3" in
+ "$ac_cv_sizeof_unsigned_int")
+ $1="typedef unsigned int $2;";;
+ "$ac_cv_sizeof_unsigned_char")
+ $1="typedef unsigned char $2;";;
+ "$ac_cv_sizeof_unsigned_short")
+ $1="typedef unsigned short $2;";;
+ "$ac_cv_sizeof_unsigned_long")
+ $1="typedef unsigned long $2;";;
+ "$ac_cv_sizeof_unsigned_long_long")
+ $1="typedef unsigned long long $2;";;
+ *)
+ if test "$4" != "notfatal"; then
+ AC_MSG_ERROR([No unsigned $3-byte integral type])
+ fi;;
+ esac])
+AC_DEFUN(AM_SEARCH_SSIZES, [
+ case "$3" in
+ "$ac_cv_sizeof_int")
+ $1="typedef int $2;";;
+ "$ac_cv_sizeof_char")
+ $1="typedef char $2;";;
+ "$ac_cv_sizeof_short")
+ $1="typedef short $2;";;
+ "$ac_cv_sizeof_long")
+ $1="typedef long $2;";;
+ "$ac_cv_sizeof_long_long")
+ $1="typedef long long $2;";;
+ *)
+ if test "$4" != "notfatal"; then
+ AC_MSG_ERROR([No signed $3-byte integral type])
+ fi;;
+ esac])
-AC_SUBST(ssize_t_decl)
-AC_CACHE_CHECK([for ssize_t], db_cv_ssize_t, [dnl
-AC_TRY_COMPILE([#include <sys/types.h>], ssize_t foo;,
- [db_cv_ssize_t=yes], [db_cv_ssize_t=no])])
-if test "$db_cv_ssize_t" = no; then
- ssize_t_decl="typedef int ssize_t;"
-fi
+# Check for the standard system types.
+AC_DEFUN(AM_TYPES, [
+
+# db.h includes <sys/types.h> and <stdio.h>, not the other default includes
+# autoconf usually includes. For that reason, we specify a set of includes
+# for all type checking tests. [#5060]
+#
+# C99 says types should be in <stdint.h>; include <stdint.h> if it exists.
+#
+# Some systems have types in <stddef.h>; include <stddef.h> if it exists.
+#
+# IBM's OS/390 and z/OS releases have types in <inttypes.h> not also found
+# in <sys/types.h>; include <inttypes.h> if it exists.
+db_includes="#include <sys/types.h>"
+AC_SUBST(inttypes_h_decl)
+AC_CHECK_HEADER(inttypes.h, [
+ db_includes="$db_includes
+#include <inttypes.h>"
+ inttypes_h_decl="#include <inttypes.h>"])
+
+# IRIX has stdint.h that is only available when using c99 (i.e. __c99
+# is defined). Problem with having it in a public header is that a c++
+# compiler cannot #include <db.h> if db.h #includes stdint.h, so we
+# need to check that stdint.h is available for all cases. Also the
+# IRIX compiler does not exit with a non-zero exit code when it sees
+# #error, so we actually need to use the header for the compiler to fail.
+AC_SUBST(stdint_h_decl)
+AC_MSG_CHECKING(for stdint.h)
+AC_COMPILE_IFELSE([#include <stdint.h>
+ int main() {
+ uint_least8_t x=0;
+ return x;
+ }],[AC_MSG_RESULT(yes)
+if test "$db_cv_cxx" = "yes"; then
+ AC_MSG_CHECKING([if stdint.h can be used by C++])
+ AC_LANG_PUSH(C++)
+ AC_COMPILE_IFELSE([#include <stdint.h>
+ int main() {
+ uint_least8_t x=0;
+ return x;
+ }],[AC_MSG_RESULT(yes)
+ stdint_h_decl="#include <stdint.h>"
+ db_includes="$db_includes
+#include <stdint.h>"
+],[AC_MSG_RESULT(no)
+ stdint_h_decl="#ifndef __cplusplus
+#include <stdint.h>
+#endif"
+ db_includes="$db_includes
+#ifndef __cplusplus
+#include <stdint.h>
+#endif"
+])
+ AC_LANG_POP
+else
+ stdint_h_decl="#include <stdint.h>"
+ db_includes="$db_includes
+#include <stdint.h>"
+fi],[AC_MSG_RESULT(no)])
+
+AC_SUBST(stddef_h_decl)
+AC_CHECK_HEADER(stddef.h, [
+ db_includes="$db_includes
+#include <stddef.h>"
+ stddef_h_decl="#include <stddef.h>"])
+AC_SUBST(unistd_h_decl)
+AC_CHECK_HEADER(unistd.h, [
+ db_includes="$db_includes
+#include <unistd.h>"
+ unistd_h_decl="#include <unistd.h>"])
+db_includes="$db_includes
+#include <stdio.h>"
+# We need to know the sizes of various objects on this system.
+AC_CHECK_SIZEOF(char,, $db_includes)
+AC_CHECK_SIZEOF(unsigned char,, $db_includes)
+AC_CHECK_SIZEOF(short,, $db_includes)
+AC_CHECK_SIZEOF(unsigned short,, $db_includes)
+AC_CHECK_SIZEOF(int,, $db_includes)
+AC_CHECK_SIZEOF(unsigned int,, $db_includes)
+AC_CHECK_SIZEOF(long,, $db_includes)
+AC_CHECK_SIZEOF(unsigned long,, $db_includes)
+AC_CHECK_SIZEOF(long long,, $db_includes)
+AC_CHECK_SIZEOF(unsigned long long,, $db_includes)
+AC_CHECK_SIZEOF(char *,, $db_includes)
+
+# We look for u_char, u_short, u_int, u_long -- if we can't find them,
+# we create our own.
AC_SUBST(u_char_decl)
-AC_CACHE_CHECK([for u_char], db_cv_uchar, [dnl
-AC_TRY_COMPILE([#include <sys/types.h>], u_char foo;,
- [db_cv_uchar=yes], [db_cv_uchar=no])])
-if test "$db_cv_uchar" = no; then
- u_char_decl="typedef unsigned char u_char;"
-fi
+AC_CHECK_TYPE(u_char,,
+ [u_char_decl="typedef unsigned char u_char;"], $db_includes)
AC_SUBST(u_short_decl)
-AC_CACHE_CHECK([for u_short], db_cv_ushort, [dnl
-AC_TRY_COMPILE([#include <sys/types.h>], u_short foo;,
- [db_cv_ushort=yes], [db_cv_ushort=no])])
-if test "$db_cv_ushort" = no; then
- u_short_decl="typedef unsigned short u_short;"
-fi
+AC_CHECK_TYPE(u_short,,
+ [u_short_decl="typedef unsigned short u_short;"], $db_includes)
AC_SUBST(u_int_decl)
-AC_CACHE_CHECK([for u_int], db_cv_uint, [dnl
-AC_TRY_COMPILE([#include <sys/types.h>], u_int foo;,
- [db_cv_uint=yes], [db_cv_uint=no])])
-if test "$db_cv_uint" = no; then
- u_int_decl="typedef unsigned int u_int;"
-fi
+AC_CHECK_TYPE(u_int,,
+ [u_int_decl="typedef unsigned int u_int;"], $db_includes)
AC_SUBST(u_long_decl)
-AC_CACHE_CHECK([for u_long], db_cv_ulong, [dnl
-AC_TRY_COMPILE([#include <sys/types.h>], u_long foo;,
- [db_cv_ulong=yes], [db_cv_ulong=no])])
-if test "$db_cv_ulong" = no; then
- u_long_decl="typedef unsigned long u_long;"
-fi
-
-dnl DB/Vi use specific integer sizes.
+AC_CHECK_TYPE(u_long,,
+ [u_long_decl="typedef unsigned long u_long;"], $db_includes)
+
+# We look for fixed-size variants of u_char, u_short, u_int, u_long as well.
AC_SUBST(u_int8_decl)
-AC_CACHE_CHECK([for u_int8_t], db_cv_uint8, [dnl
-AC_TRY_COMPILE([#include <sys/types.h>], u_int8_t foo;,
- [db_cv_uint8=yes],
- AC_TRY_RUN([main(){exit(sizeof(unsigned char) != 1);}],
- [db_cv_uint8="unsigned char"], [db_cv_uint8=no]))])
-if test "$db_cv_uint8" = no; then
- AC_MSG_ERROR(No unsigned 8-bit integral type.)
-fi
-if test "$db_cv_uint8" != yes; then
- u_int8_decl="typedef $db_cv_uint8 u_int8_t;"
-fi
+AC_CHECK_TYPE(u_int8_t,,
+ [AM_SEARCH_USIZES(u_int8_decl, u_int8_t, 1)], $db_includes)
AC_SUBST(u_int16_decl)
-AC_CACHE_CHECK([for u_int16_t], db_cv_uint16, [dnl
-AC_TRY_COMPILE([#include <sys/types.h>], u_int16_t foo;,
- [db_cv_uint16=yes],
-AC_TRY_RUN([main(){exit(sizeof(unsigned short) != 2);}],
- [db_cv_uint16="unsigned short"],
-AC_TRY_RUN([main(){exit(sizeof(unsigned int) != 2);}],
- [db_cv_uint16="unsigned int"], [db_cv_uint16=no])))])
-if test "$db_cv_uint16" = no; then
- AC_MSG_ERROR([No unsigned 16-bit integral type.])
-fi
-if test "$db_cv_uint16" != yes; then
- u_int16_decl="typedef $db_cv_uint16 u_int16_t;"
-fi
+AC_CHECK_TYPE(u_int16_t,,
+ [AM_SEARCH_USIZES(u_int16_decl, u_int16_t, 2)], $db_includes)
AC_SUBST(int16_decl)
-AC_CACHE_CHECK([for int16_t], db_cv_int16, [dnl
-AC_TRY_COMPILE([#include <sys/types.h>], int16_t foo;,
- [db_cv_int16=yes],
-AC_TRY_RUN([main(){exit(sizeof(short) != 2);}],
- [db_cv_int16="short"],
-AC_TRY_RUN([main(){exit(sizeof(int) != 2);}],
- [db_cv_int16="int"], [db_cv_int16=no])))])
-if test "$db_cv_int16" = no; then
- AC_MSG_ERROR([No signed 16-bit integral type.])
-fi
-if test "$db_cv_int16" != yes; then
- int16_decl="typedef $db_cv_int16 int16_t;"
-fi
+AC_CHECK_TYPE(int16_t,,
+ [AM_SEARCH_SSIZES(int16_decl, int16_t, 2)], $db_includes)
AC_SUBST(u_int32_decl)
-AC_CACHE_CHECK([for u_int32_t], db_cv_uint32, [dnl
-AC_TRY_COMPILE([#include <sys/types.h>], u_int32_t foo;,
- [db_cv_uint32=yes],
-AC_TRY_RUN([main(){exit(sizeof(unsigned int) != 4);}],
- [db_cv_uint32="unsigned int"],
-AC_TRY_RUN([main(){exit(sizeof(unsigned long) != 4);}],
- [db_cv_uint32="unsigned long"], [db_cv_uint32=no])))])
-if test "$db_cv_uint32" = no; then
- AC_MSG_ERROR([No unsigned 32-bit integral type.])
-fi
-if test "$db_cv_uint32" != yes; then
- u_int32_decl="typedef $db_cv_uint32 u_int32_t;"
-fi
+AC_CHECK_TYPE(u_int32_t,,
+ [AM_SEARCH_USIZES(u_int32_decl, u_int32_t, 4)], $db_includes)
AC_SUBST(int32_decl)
-AC_CACHE_CHECK([for int32_t], db_cv_int32, [dnl
-AC_TRY_COMPILE([#include <sys/types.h>], int32_t foo;,
- [db_cv_int32=yes],
-AC_TRY_RUN([main(){exit(sizeof(int) != 4);}],
- [db_cv_int32="int"],
-AC_TRY_RUN([main(){exit(sizeof(long) != 4);}],
- [db_cv_int32="long"], [db_cv_int32=no])))])
-if test "$db_cv_int32" = no; then
- AC_MSG_ERROR([No signed 32-bit integral type.])
-fi
-if test "$db_cv_int32" != yes; then
- int32_decl="typedef $db_cv_int32 int32_t;"
-fi
-
-dnl Figure out largest integral type.
-AC_SUBST(db_align_t_decl)
-AC_CACHE_CHECK([for largest integral type], db_cv_align_t, [dnl
-AC_TRY_COMPILE([#include <sys/types.h>], long long foo;,
- [db_cv_align_t="unsigned long long"], [db_cv_align_t="unsigned long"])])
-db_align_t_decl="typedef $db_cv_align_t db_align_t;"
-
-dnl Figure out integral type the same size as a pointer.
-AC_SUBST(db_alignp_t_decl)
-AC_CACHE_CHECK([for integral type equal to pointer size], db_cv_alignp_t, [dnl
-db_cv_alignp_t=$db_cv_align_t
-AC_TRY_RUN([main(){exit(sizeof(unsigned int) != sizeof(char *));}],
- [db_cv_alignp_t="unsigned int"])
-AC_TRY_RUN([main(){exit(sizeof(unsigned long) != sizeof(char *));}],
- [db_cv_alignp_t="unsigned long"])
-AC_TRY_RUN([main(){exit(sizeof(unsigned long long) != sizeof(char *));}],
- [db_cv_alignp_t="unsigned long long"])])
-db_alignp_t_decl="typedef $db_cv_alignp_t db_alignp_t;"
-
-])dnl
+AC_CHECK_TYPE(int32_t,,
+ [AM_SEARCH_SSIZES(int32_decl, int32_t, 4)], $db_includes)
+
+AC_SUBST(u_int64_decl)
+AC_CHECK_TYPE(u_int64_t,,
+ [AM_SEARCH_USIZES(u_int64_decl, u_int64_t, 8, notfatal)], $db_includes)
+
+AC_SUBST(int64_decl)
+AC_CHECK_TYPE(int64_t,,
+ [AM_SEARCH_SSIZES(int64_decl, int64_t, 8, notfatal)], $db_includes)
+
+# No currently autoconf'd systems lack FILE, off_t pid_t, size_t, time_t.
+#
+# We require them, we don't try to substitute our own if we can't find them.
+AC_SUBST(FILE_t_decl)
+AC_CHECK_TYPE(FILE,, AC_MSG_ERROR([No FILE type.]), $db_includes)
+AC_SUBST(off_t_decl)
+AC_CHECK_TYPE(off_t,, AC_MSG_ERROR([No off_t type.]), $db_includes)
+AC_SUBST(pid_t_decl)
+AC_CHECK_TYPE(pid_t,, AC_MSG_ERROR([No pid_t type.]), $db_includes)
+AC_SUBST(size_t_decl)
+AC_CHECK_TYPE(size_t,, AC_MSG_ERROR([No size_t type.]), $db_includes)
+AC_SUBST(time_t_decl)
+AC_CHECK_TYPE(time_t,, AC_MSG_ERROR([No time_t type.]), $db_includes)
+
+# Check for ssize_t -- if none exists, find a signed integral type that's
+# the same size as a size_t.
+AC_CHECK_SIZEOF(size_t,, $db_includes)
+AC_SUBST(ssize_t_decl)
+AC_CHECK_TYPE(ssize_t,,
+ [AM_SEARCH_SSIZES(ssize_t_decl, ssize_t, $ac_cv_sizeof_size_t)],
+ $db_includes)
+
+# Check for uintmax_t -- if none exists, first the largest unsigned integral
+# type available.
+AC_SUBST(uintmax_t_decl)
+AC_CHECK_TYPE(uintmax_t,, [AC_CHECK_TYPE(unsigned long long,
+ [uintmax_t_decl="typedef unsigned long long uintmax_t;"],
+ [uintmax_t_decl="typedef unsigned long uintmax_t;"], $db_includes)])
+
+# Check for uintptr_t -- if none exists, find an integral type which is
+# the same size as a pointer.
+AC_SUBST(uintptr_t_decl)
+AC_CHECK_TYPE(uintptr_t,,
+ [AM_SEARCH_USIZES(uintptr_t_decl, uintptr_t, $ac_cv_sizeof_char_p)])
+])
diff --git a/db/dist/aclocal_java/ac_check_class.ac b/db/dist/aclocal_java/ac_check_class.ac
deleted file mode 100644
index b12e7f02f..000000000
--- a/db/dist/aclocal_java/ac_check_class.ac
+++ /dev/null
@@ -1,107 +0,0 @@
-dnl @synopsis AC_CHECK_CLASS
-dnl
-dnl AC_CHECK_CLASS tests the existence of a given Java class, either in
-dnl a jar or in a '.class' file.
-dnl
-dnl *Warning*: its success or failure can depend on a proper setting of the
-dnl CLASSPATH env. variable.
-dnl
-dnl Note: This is part of the set of autoconf M4 macros for Java programs.
-dnl It is VERY IMPORTANT that you download the whole set, some
-dnl macros depend on other. Unfortunately, the autoconf archive does not
-dnl support the concept of set of macros, so I had to break it for
-dnl submission.
-dnl The general documentation, as well as the sample configure.in, is
-dnl included in the AC_PROG_JAVA macro.
-dnl
-dnl @author Stephane Bortzmeyer <bortzmeyer@pasteur.fr>
-dnl @version $Id: ac_check_class.ac,v 12.0 2004/11/17 03:43:38 bostic Exp $
-dnl
-AC_DEFUN([AC_CHECK_CLASS],[
-AC_REQUIRE([AC_PROG_JAVA])
-ac_var_name=`echo $1 | sed 's/\./_/g'`
-dnl Normaly I'd use a AC_CACHE_CHECK here but since the variable name is
-dnl dynamic I need an extra level of extraction
-AC_MSG_CHECKING([for $1 class])
-AC_CACHE_VAL(ac_cv_class_$ac_var_name, [
-if test x$ac_cv_prog_uudecode_base64 = xyes; then
-dnl /**
-dnl * Test.java: used to test dynamicaly if a class exists.
-dnl */
-dnl public class Test
-dnl {
-dnl
-dnl public static void
-dnl main( String[] argv )
-dnl {
-dnl Class lib;
-dnl if (argv.length < 1)
-dnl {
-dnl System.err.println ("Missing argument");
-dnl System.exit (77);
-dnl }
-dnl try
-dnl {
-dnl lib = Class.forName (argv[0]);
-dnl }
-dnl catch (ClassNotFoundException e)
-dnl {
-dnl System.exit (1);
-dnl }
-dnl lib = null;
-dnl System.exit (0);
-dnl }
-dnl
-dnl }
-cat << \EOF > Test.uue
-begin-base64 644 Test.class
-yv66vgADAC0AKQcAAgEABFRlc3QHAAQBABBqYXZhL2xhbmcvT2JqZWN0AQAE
-bWFpbgEAFihbTGphdmEvbGFuZy9TdHJpbmc7KVYBAARDb2RlAQAPTGluZU51
-bWJlclRhYmxlDAAKAAsBAANlcnIBABVMamF2YS9pby9QcmludFN0cmVhbTsJ
-AA0ACQcADgEAEGphdmEvbGFuZy9TeXN0ZW0IABABABBNaXNzaW5nIGFyZ3Vt
-ZW50DAASABMBAAdwcmludGxuAQAVKExqYXZhL2xhbmcvU3RyaW5nOylWCgAV
-ABEHABYBABNqYXZhL2lvL1ByaW50U3RyZWFtDAAYABkBAARleGl0AQAEKEkp
-VgoADQAXDAAcAB0BAAdmb3JOYW1lAQAlKExqYXZhL2xhbmcvU3RyaW5nOylM
-amF2YS9sYW5nL0NsYXNzOwoAHwAbBwAgAQAPamF2YS9sYW5nL0NsYXNzBwAi
-AQAgamF2YS9sYW5nL0NsYXNzTm90Rm91bmRFeGNlcHRpb24BAAY8aW5pdD4B
-AAMoKVYMACMAJAoAAwAlAQAKU291cmNlRmlsZQEACVRlc3QuamF2YQAhAAEA
-AwAAAAAAAgAJAAUABgABAAcAAABtAAMAAwAAACkqvgSiABCyAAwSD7YAFBBN
-uAAaKgMyuAAeTKcACE0EuAAaAUwDuAAasQABABMAGgAdACEAAQAIAAAAKgAK
-AAAACgAAAAsABgANAA4ADgATABAAEwASAB4AFgAiABgAJAAZACgAGgABACMA
-JAABAAcAAAAhAAEAAQAAAAUqtwAmsQAAAAEACAAAAAoAAgAAAAQABAAEAAEA
-JwAAAAIAKA==
-====
-EOF
- if uudecode$EXEEXT Test.uue; then
- :
- else
- echo "configure: __oline__: uudecode had trouble decoding base 64 file 'Test.uue'" >&AC_FD_CC
- echo "configure: failed file was:" >&AC_FD_CC
- cat Test.uue >&AC_FD_CC
- ac_cv_prog_uudecode_base64=no
- fi
- rm -f Test.uue
- if AC_TRY_COMMAND($JAVA $JAVAFLAGS Test $1) >/dev/null 2>&1; then
- eval "ac_cv_class_$ac_var_name=yes"
- else
- eval "ac_cv_class_$ac_var_name=no"
- fi
- rm -f Test.class
-else
- AC_TRY_COMPILE_JAVA([$1], , [eval "ac_cv_class_$ac_var_name=yes"],
- [eval "ac_cv_class_$ac_var_name=no"])
-fi
-eval "ac_var_val=$`eval echo ac_cv_class_$ac_var_name`"
-eval "HAVE_$ac_var_name=$`echo ac_cv_class_$ac_var_val`"
-HAVE_LAST_CLASS=$ac_var_val
-if test x$ac_var_val = xyes; then
- ifelse([$2], , :, [$2])
-else
- ifelse([$3], , :, [$3])
-fi
-])
-dnl for some reason the above statment didn't fall though here?
-dnl do scripts have variable scoping?
-eval "ac_var_val=$`eval echo ac_cv_class_$ac_var_name`"
-AC_MSG_RESULT($ac_var_val)
-])
diff --git a/db/dist/aclocal_java/ac_check_class.m4 b/db/dist/aclocal_java/ac_check_class.m4
new file mode 100644
index 000000000..fedaf1517
--- /dev/null
+++ b/db/dist/aclocal_java/ac_check_class.m4
@@ -0,0 +1,107 @@
+dnl @synopsis AC_CHECK_CLASS
+dnl
+dnl AC_CHECK_CLASS tests the existence of a given Java class, either in
+dnl a jar or in a '.class' file.
+dnl
+dnl *Warning*: its success or failure can depend on a proper setting of the
+dnl CLASSPATH env. variable.
+dnl
+dnl Note: This is part of the set of autoconf M4 macros for Java programs.
+dnl It is VERY IMPORTANT that you download the whole set, some
+dnl macros depend on other. Unfortunately, the autoconf archive does not
+dnl support the concept of set of macros, so I had to break it for
+dnl submission.
+dnl The general documentation, as well as the sample configure.in, is
+dnl included in the AC_PROG_JAVA macro.
+dnl
+dnl @author Stephane Bortzmeyer <bortzmeyer@pasteur.fr>
+dnl @version $Id: ac_check_class.m4,v 12.0 2004/11/17 03:43:38 bostic Exp $
+dnl
+AC_DEFUN([AC_CHECK_CLASS],[
+AC_REQUIRE([AC_PROG_JAVA])
+ac_var_name=`echo $1 | sed 's/\./_/g'`
+dnl Normaly I'd use a AC_CACHE_CHECK here but since the variable name is
+dnl dynamic I need an extra level of extraction
+AC_MSG_CHECKING([for $1 class])
+AC_CACHE_VAL(ac_cv_class_$ac_var_name, [
+if test x$ac_cv_prog_uudecode_base64 = xyes; then
+dnl /**
+dnl * Test.java: used to test dynamicaly if a class exists.
+dnl */
+dnl public class Test
+dnl {
+dnl
+dnl public static void
+dnl main( String[] argv )
+dnl {
+dnl Class lib;
+dnl if (argv.length < 1)
+dnl {
+dnl System.err.println ("Missing argument");
+dnl System.exit (77);
+dnl }
+dnl try
+dnl {
+dnl lib = Class.forName (argv[0]);
+dnl }
+dnl catch (ClassNotFoundException e)
+dnl {
+dnl System.exit (1);
+dnl }
+dnl lib = null;
+dnl System.exit (0);
+dnl }
+dnl
+dnl }
+cat << \EOF > Test.uue
+begin-base64 644 Test.class
+yv66vgADAC0AKQcAAgEABFRlc3QHAAQBABBqYXZhL2xhbmcvT2JqZWN0AQAE
+bWFpbgEAFihbTGphdmEvbGFuZy9TdHJpbmc7KVYBAARDb2RlAQAPTGluZU51
+bWJlclRhYmxlDAAKAAsBAANlcnIBABVMamF2YS9pby9QcmludFN0cmVhbTsJ
+AA0ACQcADgEAEGphdmEvbGFuZy9TeXN0ZW0IABABABBNaXNzaW5nIGFyZ3Vt
+ZW50DAASABMBAAdwcmludGxuAQAVKExqYXZhL2xhbmcvU3RyaW5nOylWCgAV
+ABEHABYBABNqYXZhL2lvL1ByaW50U3RyZWFtDAAYABkBAARleGl0AQAEKEkp
+VgoADQAXDAAcAB0BAAdmb3JOYW1lAQAlKExqYXZhL2xhbmcvU3RyaW5nOylM
+amF2YS9sYW5nL0NsYXNzOwoAHwAbBwAgAQAPamF2YS9sYW5nL0NsYXNzBwAi
+AQAgamF2YS9sYW5nL0NsYXNzTm90Rm91bmRFeGNlcHRpb24BAAY8aW5pdD4B
+AAMoKVYMACMAJAoAAwAlAQAKU291cmNlRmlsZQEACVRlc3QuamF2YQAhAAEA
+AwAAAAAAAgAJAAUABgABAAcAAABtAAMAAwAAACkqvgSiABCyAAwSD7YAFBBN
+uAAaKgMyuAAeTKcACE0EuAAaAUwDuAAasQABABMAGgAdACEAAQAIAAAAKgAK
+AAAACgAAAAsABgANAA4ADgATABAAEwASAB4AFgAiABgAJAAZACgAGgABACMA
+JAABAAcAAAAhAAEAAQAAAAUqtwAmsQAAAAEACAAAAAoAAgAAAAQABAAEAAEA
+JwAAAAIAKA==
+====
+EOF
+ if uudecode$EXEEXT Test.uue; then
+ :
+ else
+ echo "configure: __oline__: uudecode had trouble decoding base 64 file 'Test.uue'" >&AC_FD_CC
+ echo "configure: failed file was:" >&AC_FD_CC
+ cat Test.uue >&AC_FD_CC
+ ac_cv_prog_uudecode_base64=no
+ fi
+ rm -f Test.uue
+ if AC_TRY_COMMAND($JAVA $JAVAFLAGS Test $1) >/dev/null 2>&1; then
+ eval "ac_cv_class_$ac_var_name=yes"
+ else
+ eval "ac_cv_class_$ac_var_name=no"
+ fi
+ rm -f Test.class
+else
+ AC_TRY_COMPILE_JAVA([$1], , [eval "ac_cv_class_$ac_var_name=yes"],
+ [eval "ac_cv_class_$ac_var_name=no"])
+fi
+eval "ac_var_val=$`eval echo ac_cv_class_$ac_var_name`"
+eval "HAVE_$ac_var_name=$`echo ac_cv_class_$ac_var_val`"
+HAVE_LAST_CLASS=$ac_var_val
+if test x$ac_var_val = xyes; then
+ ifelse([$2], , :, [$2])
+else
+ ifelse([$3], , :, [$3])
+fi
+])
+dnl for some reason the above statment didn't fall though here?
+dnl do scripts have variable scoping?
+eval "ac_var_val=$`eval echo ac_cv_class_$ac_var_name`"
+AC_MSG_RESULT($ac_var_val)
+])
diff --git a/db/dist/aclocal_java/ac_check_classpath.ac b/db/dist/aclocal_java/ac_check_classpath.ac
deleted file mode 100644
index b18d479b3..000000000
--- a/db/dist/aclocal_java/ac_check_classpath.ac
+++ /dev/null
@@ -1,23 +0,0 @@
-dnl @synopsis AC_CHECK_CLASSPATH
-dnl
-dnl AC_CHECK_CLASSPATH just displays the CLASSPATH, for the edification
-dnl of the user.
-dnl
-dnl Note: This is part of the set of autoconf M4 macros for Java programs.
-dnl It is VERY IMPORTANT that you download the whole set, some
-dnl macros depend on other. Unfortunately, the autoconf archive does not
-dnl support the concept of set of macros, so I had to break it for
-dnl submission.
-dnl The general documentation, as well as the sample configure.in, is
-dnl included in the AC_PROG_JAVA macro.
-dnl
-dnl @author Stephane Bortzmeyer <bortzmeyer@pasteur.fr>
-dnl @version $Id: ac_check_classpath.ac,v 12.0 2004/11/17 03:43:38 bostic Exp $
-dnl
-AC_DEFUN([AC_CHECK_CLASSPATH],[
-if test "x$CLASSPATH" = x; then
- echo "You have no CLASSPATH, I hope it is good"
-else
- echo "You have CLASSPATH $CLASSPATH, hope it is correct"
-fi
-])
diff --git a/db/dist/aclocal_java/ac_check_classpath.m4 b/db/dist/aclocal_java/ac_check_classpath.m4
new file mode 100644
index 000000000..3dbcf63cf
--- /dev/null
+++ b/db/dist/aclocal_java/ac_check_classpath.m4
@@ -0,0 +1,23 @@
+dnl @synopsis AC_CHECK_CLASSPATH
+dnl
+dnl AC_CHECK_CLASSPATH just displays the CLASSPATH, for the edification
+dnl of the user.
+dnl
+dnl Note: This is part of the set of autoconf M4 macros for Java programs.
+dnl It is VERY IMPORTANT that you download the whole set, some
+dnl macros depend on other. Unfortunately, the autoconf archive does not
+dnl support the concept of set of macros, so I had to break it for
+dnl submission.
+dnl The general documentation, as well as the sample configure.in, is
+dnl included in the AC_PROG_JAVA macro.
+dnl
+dnl @author Stephane Bortzmeyer <bortzmeyer@pasteur.fr>
+dnl @version $Id: ac_check_classpath.m4,v 12.0 2004/11/17 03:43:38 bostic Exp $
+dnl
+AC_DEFUN([AC_CHECK_CLASSPATH],[
+if test "x$CLASSPATH" = x; then
+ echo "You have no CLASSPATH, I hope it is good"
+else
+ echo "You have CLASSPATH $CLASSPATH, hope it is correct"
+fi
+])
diff --git a/db/dist/aclocal_java/ac_check_junit.ac b/db/dist/aclocal_java/ac_check_junit.ac
deleted file mode 100644
index cc02e3276..000000000
--- a/db/dist/aclocal_java/ac_check_junit.ac
+++ /dev/null
@@ -1,54 +0,0 @@
-dnl @synopsis AC_CHECK_JUNIT
-dnl
-dnl AC_CHECK_JUNIT tests the availability of the Junit testing
-dnl framework, and set some variables for conditional compilation
-dnl of the test suite by automake.
-dnl
-dnl If available, JUNIT is set to a command launching the text
-dnl based user interface of Junit, @JAVA_JUNIT@ is set to $JAVA_JUNIT
-dnl and @TESTS_JUNIT@ is set to $TESTS_JUNIT, otherwise they are set
-dnl to empty values.
-dnl
-dnl You can use these variables in your Makefile.am file like this :
-dnl
-dnl # Some of the following classes are built only if junit is available
-dnl JAVA_JUNIT = Class1Test.java Class2Test.java AllJunitTests.java
-dnl
-dnl noinst_JAVA = Example1.java Example2.java @JAVA_JUNIT@
-dnl
-dnl EXTRA_JAVA = $(JAVA_JUNIT)
-dnl
-dnl TESTS_JUNIT = AllJunitTests
-dnl
-dnl TESTS = StandaloneTest1 StandaloneTest2 @TESTS_JUNIT@
-dnl
-dnl EXTRA_TESTS = $(TESTS_JUNIT)
-dnl
-dnl AllJunitTests :
-dnl echo "#! /bin/sh" > $@
-dnl echo "exec @JUNIT@ my.package.name.AllJunitTests" >> $@
-dnl chmod +x $@
-dnl
-dnl @author Luc Maisonobe
-dnl @version $Id: ac_check_junit.ac,v 12.0 2004/11/17 03:43:38 bostic Exp $
-dnl
-AC_DEFUN([AC_CHECK_JUNIT],[
-AC_CACHE_VAL(ac_cv_prog_JUNIT,[
-AC_CHECK_CLASS(junit.textui.TestRunner)
-if test x"`eval 'echo $ac_cv_class_junit_textui_TestRunner'`" != xno ; then
- ac_cv_prog_JUNIT='$(CLASSPATH_ENV) $(JAVA) $(JAVAFLAGS) junit.textui.TestRunner'
-fi])
-AC_MSG_CHECKING([for junit])
-if test x"`eval 'echo $ac_cv_prog_JUNIT'`" != x ; then
- JUNIT="$ac_cv_prog_JUNIT"
- JAVA_JUNIT='$(JAVA_JUNIT)'
- TESTS_JUNIT='$(TESTS_JUNIT)'
-else
- JUNIT=
- JAVA_JUNIT=
- TESTS_JUNIT=
-fi
-AC_MSG_RESULT($JAVA_JUNIT)
-AC_SUBST(JUNIT)
-AC_SUBST(JAVA_JUNIT)
-AC_SUBST(TESTS_JUNIT)])
diff --git a/db/dist/aclocal_java/ac_check_junit.m4 b/db/dist/aclocal_java/ac_check_junit.m4
new file mode 100644
index 000000000..59ef12a82
--- /dev/null
+++ b/db/dist/aclocal_java/ac_check_junit.m4
@@ -0,0 +1,54 @@
+dnl @synopsis AC_CHECK_JUNIT
+dnl
+dnl AC_CHECK_JUNIT tests the availability of the Junit testing
+dnl framework, and set some variables for conditional compilation
+dnl of the test suite by automake.
+dnl
+dnl If available, JUNIT is set to a command launching the text
+dnl based user interface of Junit, @JAVA_JUNIT@ is set to $JAVA_JUNIT
+dnl and @TESTS_JUNIT@ is set to $TESTS_JUNIT, otherwise they are set
+dnl to empty values.
+dnl
+dnl You can use these variables in your Makefile.am file like this :
+dnl
+dnl # Some of the following classes are built only if junit is available
+dnl JAVA_JUNIT = Class1Test.java Class2Test.java AllJunitTests.java
+dnl
+dnl noinst_JAVA = Example1.java Example2.java @JAVA_JUNIT@
+dnl
+dnl EXTRA_JAVA = $(JAVA_JUNIT)
+dnl
+dnl TESTS_JUNIT = AllJunitTests
+dnl
+dnl TESTS = StandaloneTest1 StandaloneTest2 @TESTS_JUNIT@
+dnl
+dnl EXTRA_TESTS = $(TESTS_JUNIT)
+dnl
+dnl AllJunitTests :
+dnl echo "#! /bin/sh" > $@
+dnl echo "exec @JUNIT@ my.package.name.AllJunitTests" >> $@
+dnl chmod +x $@
+dnl
+dnl @author Luc Maisonobe
+dnl @version $Id: ac_check_junit.m4,v 12.0 2004/11/17 03:43:38 bostic Exp $
+dnl
+AC_DEFUN([AC_CHECK_JUNIT],[
+AC_CACHE_VAL(ac_cv_prog_JUNIT,[
+AC_CHECK_CLASS(junit.textui.TestRunner)
+if test x"`eval 'echo $ac_cv_class_junit_textui_TestRunner'`" != xno ; then
+ ac_cv_prog_JUNIT='$(CLASSPATH_ENV) $(JAVA) $(JAVAFLAGS) junit.textui.TestRunner'
+fi])
+AC_MSG_CHECKING([for junit])
+if test x"`eval 'echo $ac_cv_prog_JUNIT'`" != x ; then
+ JUNIT="$ac_cv_prog_JUNIT"
+ JAVA_JUNIT='$(JAVA_JUNIT)'
+ TESTS_JUNIT='$(TESTS_JUNIT)'
+else
+ JUNIT=
+ JAVA_JUNIT=
+ TESTS_JUNIT=
+fi
+AC_MSG_RESULT($JAVA_JUNIT)
+AC_SUBST(JUNIT)
+AC_SUBST(JAVA_JUNIT)
+AC_SUBST(TESTS_JUNIT)])
diff --git a/db/dist/aclocal_java/ac_check_rqrd_class.ac b/db/dist/aclocal_java/ac_check_rqrd_class.ac
deleted file mode 100644
index c7c26b877..000000000
--- a/db/dist/aclocal_java/ac_check_rqrd_class.ac
+++ /dev/null
@@ -1,26 +0,0 @@
-dnl @synopsis AC_CHECK_RQRD_CLASS
-dnl
-dnl AC_CHECK_RQRD_CLASS tests the existence of a given Java class, either in
-dnl a jar or in a '.class' file and fails if it doesn't exist.
-dnl Its success or failure can depend on a proper setting of the
-dnl CLASSPATH env. variable.
-dnl
-dnl Note: This is part of the set of autoconf M4 macros for Java programs.
-dnl It is VERY IMPORTANT that you download the whole set, some
-dnl macros depend on other. Unfortunately, the autoconf archive does not
-dnl support the concept of set of macros, so I had to break it for
-dnl submission.
-dnl The general documentation, as well as the sample configure.in, is
-dnl included in the AC_PROG_JAVA macro.
-dnl
-dnl @author Stephane Bortzmeyer <bortzmeyer@pasteur.fr>
-dnl @version $Id: ac_check_rqrd_class.ac,v 12.0 2004/11/17 03:43:38 bostic Exp $
-dnl
-
-AC_DEFUN([AC_CHECK_RQRD_CLASS],[
-CLASS=`echo $1|sed 's/\./_/g'`
-AC_CHECK_CLASS($1)
-if test "$HAVE_LAST_CLASS" = "no"; then
- AC_MSG_ERROR([Required class $1 missing, exiting.])
-fi
-])
diff --git a/db/dist/aclocal_java/ac_check_rqrd_class.m4 b/db/dist/aclocal_java/ac_check_rqrd_class.m4
new file mode 100644
index 000000000..ec9be7bda
--- /dev/null
+++ b/db/dist/aclocal_java/ac_check_rqrd_class.m4
@@ -0,0 +1,26 @@
+dnl @synopsis AC_CHECK_RQRD_CLASS
+dnl
+dnl AC_CHECK_RQRD_CLASS tests the existence of a given Java class, either in
+dnl a jar or in a '.class' file and fails if it doesn't exist.
+dnl Its success or failure can depend on a proper setting of the
+dnl CLASSPATH env. variable.
+dnl
+dnl Note: This is part of the set of autoconf M4 macros for Java programs.
+dnl It is VERY IMPORTANT that you download the whole set, some
+dnl macros depend on other. Unfortunately, the autoconf archive does not
+dnl support the concept of set of macros, so I had to break it for
+dnl submission.
+dnl The general documentation, as well as the sample configure.in, is
+dnl included in the AC_PROG_JAVA macro.
+dnl
+dnl @author Stephane Bortzmeyer <bortzmeyer@pasteur.fr>
+dnl @version $Id: ac_check_rqrd_class.m4,v 12.0 2004/11/17 03:43:38 bostic Exp $
+dnl
+
+AC_DEFUN([AC_CHECK_RQRD_CLASS],[
+CLASS=`echo $1|sed 's/\./_/g'`
+AC_CHECK_CLASS($1)
+if test "$HAVE_LAST_CLASS" = "no"; then
+ AC_MSG_ERROR([Required class $1 missing, exiting.])
+fi
+])
diff --git a/db/dist/aclocal_java/ac_java_options.ac b/db/dist/aclocal_java/ac_java_options.ac
deleted file mode 100644
index e71adfe68..000000000
--- a/db/dist/aclocal_java/ac_java_options.ac
+++ /dev/null
@@ -1,32 +0,0 @@
-dnl @synopsis AC_JAVA_OPTIONS
-dnl
-dnl AC_JAVA_OPTIONS adds configure command line options used for Java m4
-dnl macros. This Macro is optional.
-dnl
-dnl Note: This is part of the set of autoconf M4 macros for Java programs.
-dnl It is VERY IMPORTANT that you download the whole set, some
-dnl macros depend on other. Unfortunately, the autoconf archive does not
-dnl support the concept of set of macros, so I had to break it for
-dnl submission.
-dnl The general documentation, as well as the sample configure.in, is
-dnl included in the AC_PROG_JAVA macro.
-dnl
-dnl @author Devin Weaver <ktohg@tritarget.com>
-dnl @version $Id: ac_java_options.ac,v 12.0 2004/11/17 03:43:38 bostic Exp $
-dnl
-AC_DEFUN([AC_JAVA_OPTIONS],[
-AC_ARG_WITH(java-prefix,
- [ --with-java-prefix=PFX prefix where Java runtime is installed (optional)])
-AC_ARG_WITH(javac-flags,
- [ --with-javac-flags=FLAGS flags to pass to the Java compiler (optional)])
-AC_ARG_WITH(java-flags,
- [ --with-java-flags=FLAGS flags to pass to the Java VM (optional)])
-JAVAPREFIX=$with_java_prefix
-JAVACFLAGS=$with_javac_flags
-JAVAFLAGS=$with_java_flags
-AC_SUBST(JAVAPREFIX)dnl
-AC_SUBST(JAVACFLAGS)dnl
-AC_SUBST(JAVAFLAGS)dnl
-AC_SUBST(JAVA)dnl
-AC_SUBST(JAVAC)dnl
-])
diff --git a/db/dist/aclocal_java/ac_java_options.m4 b/db/dist/aclocal_java/ac_java_options.m4
new file mode 100644
index 000000000..3e2cfe47a
--- /dev/null
+++ b/db/dist/aclocal_java/ac_java_options.m4
@@ -0,0 +1,32 @@
+dnl @synopsis AC_JAVA_OPTIONS
+dnl
+dnl AC_JAVA_OPTIONS adds configure command line options used for Java m4
+dnl macros. This Macro is optional.
+dnl
+dnl Note: This is part of the set of autoconf M4 macros for Java programs.
+dnl It is VERY IMPORTANT that you download the whole set, some
+dnl macros depend on other. Unfortunately, the autoconf archive does not
+dnl support the concept of set of macros, so I had to break it for
+dnl submission.
+dnl The general documentation, as well as the sample configure.in, is
+dnl included in the AC_PROG_JAVA macro.
+dnl
+dnl @author Devin Weaver <ktohg@tritarget.com>
+dnl @version $Id: ac_java_options.m4,v 12.0 2004/11/17 03:43:38 bostic Exp $
+dnl
+AC_DEFUN([AC_JAVA_OPTIONS],[
+AC_ARG_WITH(java-prefix,
+ [ --with-java-prefix=PFX prefix where Java runtime is installed (optional)])
+AC_ARG_WITH(javac-flags,
+ [ --with-javac-flags=FLAGS flags to pass to the Java compiler (optional)])
+AC_ARG_WITH(java-flags,
+ [ --with-java-flags=FLAGS flags to pass to the Java VM (optional)])
+JAVAPREFIX=$with_java_prefix
+JAVACFLAGS=$with_javac_flags
+JAVAFLAGS=$with_java_flags
+AC_SUBST(JAVAPREFIX)dnl
+AC_SUBST(JAVACFLAGS)dnl
+AC_SUBST(JAVAFLAGS)dnl
+AC_SUBST(JAVA)dnl
+AC_SUBST(JAVAC)dnl
+])
diff --git a/db/dist/aclocal_java/ac_jni_include_dirs.ac b/db/dist/aclocal_java/ac_jni_include_dirs.ac
deleted file mode 100644
index 177f62f85..000000000
--- a/db/dist/aclocal_java/ac_jni_include_dirs.ac
+++ /dev/null
@@ -1,114 +0,0 @@
-dnl @synopsis AC_JNI_INCLUDE_DIR
-dnl
-dnl AC_JNI_INCLUDE_DIR finds include directories needed
-dnl for compiling programs using the JNI interface.
-dnl
-dnl JNI include directories are usually in the java distribution
-dnl This is deduced from the value of JAVAC. When this macro
-dnl completes, a list of directories is left in the variable
-dnl JNI_INCLUDE_DIRS.
-dnl
-dnl Example usage follows:
-dnl
-dnl AC_JNI_INCLUDE_DIR
-dnl
-dnl for JNI_INCLUDE_DIR in $JNI_INCLUDE_DIRS
-dnl do
-dnl CPPFLAGS="$CPPFLAGS -I$JNI_INCLUDE_DIR"
-dnl done
-dnl
-dnl If you want to force a specific compiler:
-dnl
-dnl - at the configure.in level, set JAVAC=yourcompiler before calling
-dnl AC_JNI_INCLUDE_DIR
-dnl
-dnl - at the configure level, setenv JAVAC
-dnl
-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
-dnl @version $Id: ac_jni_include_dirs.ac,v 12.1 2006/08/24 14:45:36 bostic Exp $
-dnl
-AC_DEFUN(AC_JNI_INCLUDE_DIR,[
-
-JNI_INCLUDE_DIRS=""
-
-test "x$JAVAC" = x && AC_MSG_ERROR(['$JAVAC' undefined])
-AC_PATH_PROG(_ACJNI_JAVAC, $JAVAC, $JAVAC)
-test ! -x "$_ACJNI_JAVAC" && AC_MSG_ERROR([$JAVAC could not be found in path])
-AC_MSG_CHECKING(absolute path of $JAVAC)
-case "$_ACJNI_JAVAC" in
-/*) AC_MSG_RESULT($_ACJNI_JAVAC);;
-*) AC_MSG_ERROR([$_ACJNI_JAVAC is not an absolute path name]);;
-esac
-
-_ACJNI_FOLLOW_SYMLINKS("$_ACJNI_JAVAC")
-_JTOPDIR=`echo "$_ACJNI_FOLLOWED" | sed -e 's://*:/:g' -e 's:/[[^/]]*$::'`
-case "$host_os" in
- darwin*) _JTOPDIR=`echo "$_JTOPDIR" | sed -e 's:/[[^/]]*$::'`
- _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 we don't find jni.h, just keep going. Hopefully javac knows where
-# to find its include files, even if we can't.
-if test -r "$_JINC/jni.h"; then
- if test "$_JINC" != "/usr/include"; then
- JNI_INCLUDE_DIRS="$JNI_INCLUDE_DIRS $_JINC"
- fi
-else
- _JTOPDIR=`echo "$_JTOPDIR" | sed -e 's:/[[^/]]*$::'`
- if test -r "$_JTOPDIR/include/jni.h"; then
- if test "$_JTOPDIR" != "/usr"; then
- JNI_INCLUDE_DIRS="$JNI_INCLUDE_DIRS $_JTOPDIR/include"
- fi
- fi
-fi
-
-# get the likely subdirectories for system specific java includes
-if test "$_JTOPDIR" != "/usr"; then
- case "$host_os" in
- aix*) _JNI_INC_SUBDIRS="aix";;
- bsdi*) _JNI_INC_SUBDIRS="bsdos";;
- freebsd*) _JNI_INC_SUBDIRS="freebsd";;
- hp*) _JNI_INC_SUBDIRS="hp-ux";;
- 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
-do
- if test -d "$_JTOPDIR/include/$_JINCSUBDIR"; then
- JNI_INCLUDE_DIRS="$JNI_INCLUDE_DIRS $_JTOPDIR/include/$_JINCSUBDIR"
- fi
-done
-])
-
-# _ACJNI_FOLLOW_SYMLINKS <path>
-# Follows symbolic links on <path>,
-# finally setting variable _ACJNI_FOLLOWED
-# --------------------
-AC_DEFUN(_ACJNI_FOLLOW_SYMLINKS,[
-# find the include directory relative to the javac executable
-_cur="$1"
-while ls -ld "$_cur" 2>/dev/null | grep " -> " >/dev/null; do
- AC_MSG_CHECKING(symlink for $_cur)
- _slink=`ls -ld "$_cur" | sed 's/.* -> //'`
- case "$_slink" in
- /*) _cur="$_slink";;
- # 'X' avoids triggering unwanted echo options.
- *) _cur=`echo "X$_cur" | sed -e 's/^X//' -e 's:[[^/]]*$::'`"$_slink";;
- esac
- AC_MSG_RESULT($_cur)
-done
-_ACJNI_FOLLOWED="$_cur"
-])# _ACJNI
diff --git a/db/dist/aclocal_java/ac_jni_include_dirs.m4 b/db/dist/aclocal_java/ac_jni_include_dirs.m4
new file mode 100644
index 000000000..d7738777a
--- /dev/null
+++ b/db/dist/aclocal_java/ac_jni_include_dirs.m4
@@ -0,0 +1,114 @@
+dnl @synopsis AC_JNI_INCLUDE_DIR
+dnl
+dnl AC_JNI_INCLUDE_DIR finds include directories needed
+dnl for compiling programs using the JNI interface.
+dnl
+dnl JNI include directories are usually in the java distribution
+dnl This is deduced from the value of JAVAC. When this macro
+dnl completes, a list of directories is left in the variable
+dnl JNI_INCLUDE_DIRS.
+dnl
+dnl Example usage follows:
+dnl
+dnl AC_JNI_INCLUDE_DIR
+dnl
+dnl for JNI_INCLUDE_DIR in $JNI_INCLUDE_DIRS
+dnl do
+dnl CPPFLAGS="$CPPFLAGS -I$JNI_INCLUDE_DIR"
+dnl done
+dnl
+dnl If you want to force a specific compiler:
+dnl
+dnl - at the configure.in level, set JAVAC=yourcompiler before calling
+dnl AC_JNI_INCLUDE_DIR
+dnl
+dnl - at the configure level, setenv JAVAC
+dnl
+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
+dnl @version $Id: ac_jni_include_dirs.m4,v 12.1 2006/08/24 14:45:36 bostic Exp $
+dnl
+AC_DEFUN(AC_JNI_INCLUDE_DIR,[
+
+JNI_INCLUDE_DIRS=""
+
+test "x$JAVAC" = x && AC_MSG_ERROR(['$JAVAC' undefined])
+AC_PATH_PROG(_ACJNI_JAVAC, $JAVAC, $JAVAC)
+test ! -x "$_ACJNI_JAVAC" && AC_MSG_ERROR([$JAVAC could not be found in path])
+AC_MSG_CHECKING(absolute path of $JAVAC)
+case "$_ACJNI_JAVAC" in
+/*) AC_MSG_RESULT($_ACJNI_JAVAC);;
+*) AC_MSG_ERROR([$_ACJNI_JAVAC is not an absolute path name]);;
+esac
+
+_ACJNI_FOLLOW_SYMLINKS("$_ACJNI_JAVAC")
+_JTOPDIR=`echo "$_ACJNI_FOLLOWED" | sed -e 's://*:/:g' -e 's:/[[^/]]*$::'`
+case "$host_os" in
+ darwin*) _JTOPDIR=`echo "$_JTOPDIR" | sed -e 's:/[[^/]]*$::'`
+ _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 we don't find jni.h, just keep going. Hopefully javac knows where
+# to find its include files, even if we can't.
+if test -r "$_JINC/jni.h"; then
+ if test "$_JINC" != "/usr/include"; then
+ JNI_INCLUDE_DIRS="$JNI_INCLUDE_DIRS $_JINC"
+ fi
+else
+ _JTOPDIR=`echo "$_JTOPDIR" | sed -e 's:/[[^/]]*$::'`
+ if test -r "$_JTOPDIR/include/jni.h"; then
+ if test "$_JTOPDIR" != "/usr"; then
+ JNI_INCLUDE_DIRS="$JNI_INCLUDE_DIRS $_JTOPDIR/include"
+ fi
+ fi
+fi
+
+# get the likely subdirectories for system specific java includes
+if test "$_JTOPDIR" != "/usr"; then
+ case "$host_os" in
+ aix*) _JNI_INC_SUBDIRS="aix";;
+ bsdi*) _JNI_INC_SUBDIRS="bsdos";;
+ freebsd*) _JNI_INC_SUBDIRS="freebsd";;
+ hp*) _JNI_INC_SUBDIRS="hp-ux";;
+ 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
+do
+ if test -d "$_JTOPDIR/include/$_JINCSUBDIR"; then
+ JNI_INCLUDE_DIRS="$JNI_INCLUDE_DIRS $_JTOPDIR/include/$_JINCSUBDIR"
+ fi
+done
+])
+
+# _ACJNI_FOLLOW_SYMLINKS <path>
+# Follows symbolic links on <path>,
+# finally setting variable _ACJNI_FOLLOWED
+# --------------------
+AC_DEFUN(_ACJNI_FOLLOW_SYMLINKS,[
+# find the include directory relative to the javac executable
+_cur="$1"
+while ls -ld "$_cur" 2>/dev/null | grep " -> " >/dev/null; do
+ AC_MSG_CHECKING(symlink for $_cur)
+ _slink=`ls -ld "$_cur" | sed 's/.* -> //'`
+ case "$_slink" in
+ /*) _cur="$_slink";;
+ # 'X' avoids triggering unwanted echo options.
+ *) _cur=`echo "X$_cur" | sed -e 's/^X//' -e 's:[[^/]]*$::'`"$_slink";;
+ esac
+ AC_MSG_RESULT($_cur)
+done
+_ACJNI_FOLLOWED="$_cur"
+])# _ACJNI
diff --git a/db/dist/aclocal_java/ac_prog_jar.ac b/db/dist/aclocal_java/ac_prog_jar.ac
deleted file mode 100644
index c60a79a85..000000000
--- a/db/dist/aclocal_java/ac_prog_jar.ac
+++ /dev/null
@@ -1,36 +0,0 @@
-dnl @synopsis AC_PROG_JAR
-dnl
-dnl AC_PROG_JAR tests for an existing jar program. It uses the environment
-dnl variable JAR then tests in sequence various common jar programs.
-dnl
-dnl If you want to force a specific compiler:
-dnl
-dnl - at the configure.in level, set JAR=yourcompiler before calling
-dnl AC_PROG_JAR
-dnl
-dnl - at the configure level, setenv JAR
-dnl
-dnl You can use the JAR variable in your Makefile.in, with @JAR@.
-dnl
-dnl Note: This macro depends on the autoconf M4 macros for Java programs.
-dnl It is VERY IMPORTANT that you download that whole set, some
-dnl macros depend on other. Unfortunately, the autoconf archive does not
-dnl support the concept of set of macros, so I had to break it for
-dnl submission.
-dnl
-dnl The general documentation of those macros, as well as the sample
-dnl configure.in, is included in the AC_PROG_JAVA macro.
-dnl
-dnl @author Egon Willighagen <egonw@sci.kun.nl>
-dnl @version $Id: ac_prog_jar.ac,v 12.0 2004/11/17 03:43:38 bostic Exp $
-dnl
-AC_DEFUN([AC_PROG_JAR],[
-AC_REQUIRE([AC_EXEEXT])dnl
-if test "x$JAVAPREFIX" = x; then
- test "x$JAR" = x && AC_CHECK_PROGS(JAR, jar$EXEEXT)
-else
- test "x$JAR" = x && AC_CHECK_PROGS(JAR, jar, $JAVAPREFIX)
-fi
-test "x$JAR" = x && AC_MSG_ERROR([no acceptable jar program found in \$PATH])
-AC_PROVIDE([$0])dnl
-])
diff --git a/db/dist/aclocal_java/ac_prog_jar.m4 b/db/dist/aclocal_java/ac_prog_jar.m4
new file mode 100644
index 000000000..1dc316f2e
--- /dev/null
+++ b/db/dist/aclocal_java/ac_prog_jar.m4
@@ -0,0 +1,36 @@
+dnl @synopsis AC_PROG_JAR
+dnl
+dnl AC_PROG_JAR tests for an existing jar program. It uses the environment
+dnl variable JAR then tests in sequence various common jar programs.
+dnl
+dnl If you want to force a specific compiler:
+dnl
+dnl - at the configure.in level, set JAR=yourcompiler before calling
+dnl AC_PROG_JAR
+dnl
+dnl - at the configure level, setenv JAR
+dnl
+dnl You can use the JAR variable in your Makefile.in, with @JAR@.
+dnl
+dnl Note: This macro depends on the autoconf M4 macros for Java programs.
+dnl It is VERY IMPORTANT that you download that whole set, some
+dnl macros depend on other. Unfortunately, the autoconf archive does not
+dnl support the concept of set of macros, so I had to break it for
+dnl submission.
+dnl
+dnl The general documentation of those macros, as well as the sample
+dnl configure.in, is included in the AC_PROG_JAVA macro.
+dnl
+dnl @author Egon Willighagen <egonw@sci.kun.nl>
+dnl @version $Id: ac_prog_jar.m4,v 12.0 2004/11/17 03:43:38 bostic Exp $
+dnl
+AC_DEFUN([AC_PROG_JAR],[
+AC_REQUIRE([AC_EXEEXT])dnl
+if test "x$JAVAPREFIX" = x; then
+ test "x$JAR" = x && AC_CHECK_PROGS(JAR, jar$EXEEXT)
+else
+ test "x$JAR" = x && AC_CHECK_PROGS(JAR, jar, $JAVAPREFIX)
+fi
+test "x$JAR" = x && AC_MSG_ERROR([no acceptable jar program found in \$PATH])
+AC_PROVIDE([$0])dnl
+])
diff --git a/db/dist/aclocal_java/ac_prog_java.ac b/db/dist/aclocal_java/ac_prog_java.ac
deleted file mode 100644
index 05c65e7c4..000000000
--- a/db/dist/aclocal_java/ac_prog_java.ac
+++ /dev/null
@@ -1,79 +0,0 @@
-dnl @synopsis AC_PROG_JAVA
-dnl
-dnl Here is a summary of the main macros:
-dnl
-dnl AC_PROG_JAVAC: finds a Java compiler.
-dnl
-dnl AC_PROG_JAVA: finds a Java virtual machine.
-dnl
-dnl AC_CHECK_CLASS: finds if we have the given class (beware of CLASSPATH!).
-dnl
-dnl AC_CHECK_RQRD_CLASS: finds if we have the given class and stops otherwise.
-dnl
-dnl AC_TRY_COMPILE_JAVA: attempt to compile user given source.
-dnl
-dnl AC_TRY_RUN_JAVA: attempt to compile and run user given source.
-dnl
-dnl AC_JAVA_OPTIONS: adds Java configure options.
-dnl
-dnl AC_PROG_JAVA tests an existing Java virtual machine. It uses the
-dnl environment variable JAVA then tests in sequence various common Java
-dnl virtual machines. For political reasons, it starts with the free ones.
-dnl You *must* call [AC_PROG_JAVAC] before.
-dnl
-dnl If you want to force a specific VM:
-dnl
-dnl - at the configure.in level, set JAVA=yourvm before calling AC_PROG_JAVA
-dnl (but after AC_INIT)
-dnl
-dnl - at the configure level, setenv JAVA
-dnl
-dnl You can use the JAVA variable in your Makefile.in, with @JAVA@.
-dnl
-dnl *Warning*: its success or failure can depend on a proper setting of the
-dnl CLASSPATH env. variable.
-dnl
-dnl TODO: allow to exclude virtual machines (rationale: most Java programs
-dnl cannot run with some VM like kaffe).
-dnl
-dnl Note: This is part of the set of autoconf M4 macros for Java programs.
-dnl It is VERY IMPORTANT that you download the whole set, some
-dnl macros depend on other. Unfortunately, the autoconf archive does not
-dnl support the concept of set of macros, so I had to break it for
-dnl submission.
-dnl
-dnl A Web page, with a link to the latest CVS snapshot is at
-dnl <http://www.internatif.org/bortzmeyer/autoconf-Java/>.
-dnl
-dnl This is a sample configure.in
-dnl Process this file with autoconf to produce a configure script.
-dnl
-dnl AC_INIT(UnTag.java)
-dnl
-dnl dnl Checks for programs.
-dnl AC_CHECK_CLASSPATH
-dnl AC_PROG_JAVAC
-dnl AC_PROG_JAVA
-dnl
-dnl dnl Checks for classes
-dnl AC_CHECK_RQRD_CLASS(org.xml.sax.Parser)
-dnl AC_CHECK_RQRD_CLASS(com.jclark.xml.sax.Driver)
-dnl
-dnl AC_OUTPUT(Makefile)
-dnl
-dnl @author Stephane Bortzmeyer <bortzmeyer@pasteur.fr>
-dnl @version $Id: ac_prog_java.ac,v 12.1 2006/08/24 14:45:36 bostic Exp $
-dnl
-dnl Note: Modified to prefer java over kaffe. [#8059]
-dnl
-AC_DEFUN([AC_PROG_JAVA],[
-AC_REQUIRE([AC_EXEEXT])dnl
-if test x$JAVAPREFIX = x; then
- test x$JAVA = x && AC_CHECK_PROGS(JAVA, java$EXEEXT kaffe$EXEEXT)
-else
- test x$JAVA = x && AC_CHECK_PROGS(JAVA, java$EXEEXT kaffe$EXEEXT, $JAVAPREFIX)
-fi
-test x$JAVA = x && AC_MSG_ERROR([no acceptable Java virtual machine found in \$PATH])
-AC_PROG_JAVA_WORKS
-AC_PROVIDE([$0])dnl
-])
diff --git a/db/dist/aclocal_java/ac_prog_java.m4 b/db/dist/aclocal_java/ac_prog_java.m4
new file mode 100644
index 000000000..7a908bec7
--- /dev/null
+++ b/db/dist/aclocal_java/ac_prog_java.m4
@@ -0,0 +1,79 @@
+dnl @synopsis AC_PROG_JAVA
+dnl
+dnl Here is a summary of the main macros:
+dnl
+dnl AC_PROG_JAVAC: finds a Java compiler.
+dnl
+dnl AC_PROG_JAVA: finds a Java virtual machine.
+dnl
+dnl AC_CHECK_CLASS: finds if we have the given class (beware of CLASSPATH!).
+dnl
+dnl AC_CHECK_RQRD_CLASS: finds if we have the given class and stops otherwise.
+dnl
+dnl AC_TRY_COMPILE_JAVA: attempt to compile user given source.
+dnl
+dnl AC_TRY_RUN_JAVA: attempt to compile and run user given source.
+dnl
+dnl AC_JAVA_OPTIONS: adds Java configure options.
+dnl
+dnl AC_PROG_JAVA tests an existing Java virtual machine. It uses the
+dnl environment variable JAVA then tests in sequence various common Java
+dnl virtual machines. For political reasons, it starts with the free ones.
+dnl You *must* call [AC_PROG_JAVAC] before.
+dnl
+dnl If you want to force a specific VM:
+dnl
+dnl - at the configure.in level, set JAVA=yourvm before calling AC_PROG_JAVA
+dnl (but after AC_INIT)
+dnl
+dnl - at the configure level, setenv JAVA
+dnl
+dnl You can use the JAVA variable in your Makefile.in, with @JAVA@.
+dnl
+dnl *Warning*: its success or failure can depend on a proper setting of the
+dnl CLASSPATH env. variable.
+dnl
+dnl TODO: allow to exclude virtual machines (rationale: most Java programs
+dnl cannot run with some VM like kaffe).
+dnl
+dnl Note: This is part of the set of autoconf M4 macros for Java programs.
+dnl It is VERY IMPORTANT that you download the whole set, some
+dnl macros depend on other. Unfortunately, the autoconf archive does not
+dnl support the concept of set of macros, so I had to break it for
+dnl submission.
+dnl
+dnl A Web page, with a link to the latest CVS snapshot is at
+dnl <http://www.internatif.org/bortzmeyer/autoconf-Java/>.
+dnl
+dnl This is a sample configure.in
+dnl Process this file with autoconf to produce a configure script.
+dnl
+dnl AC_INIT(UnTag.java)
+dnl
+dnl dnl Checks for programs.
+dnl AC_CHECK_CLASSPATH
+dnl AC_PROG_JAVAC
+dnl AC_PROG_JAVA
+dnl
+dnl dnl Checks for classes
+dnl AC_CHECK_RQRD_CLASS(org.xml.sax.Parser)
+dnl AC_CHECK_RQRD_CLASS(com.jclark.xml.sax.Driver)
+dnl
+dnl AC_OUTPUT(Makefile)
+dnl
+dnl @author Stephane Bortzmeyer <bortzmeyer@pasteur.fr>
+dnl @version $Id: ac_prog_java.m4,v 12.1 2006/08/24 14:45:36 bostic Exp $
+dnl
+dnl Note: Modified to prefer java over kaffe. [#8059]
+dnl
+AC_DEFUN([AC_PROG_JAVA],[
+AC_REQUIRE([AC_EXEEXT])dnl
+if test x$JAVAPREFIX = x; then
+ test x$JAVA = x && AC_CHECK_PROGS(JAVA, java$EXEEXT kaffe$EXEEXT)
+else
+ test x$JAVA = x && AC_CHECK_PROGS(JAVA, java$EXEEXT kaffe$EXEEXT, $JAVAPREFIX)
+fi
+test x$JAVA = x && AC_MSG_ERROR([no acceptable Java virtual machine found in \$PATH])
+AC_PROG_JAVA_WORKS
+AC_PROVIDE([$0])dnl
+])
diff --git a/db/dist/aclocal_java/ac_prog_java_works.ac b/db/dist/aclocal_java/ac_prog_java_works.ac
deleted file mode 100644
index f0ff8c57f..000000000
--- a/db/dist/aclocal_java/ac_prog_java_works.ac
+++ /dev/null
@@ -1,97 +0,0 @@
-dnl @synopsis AC_PROG_JAVA_WORKS
-dnl
-dnl Internal use ONLY.
-dnl
-dnl Note: This is part of the set of autoconf M4 macros for Java programs.
-dnl It is VERY IMPORTANT that you download the whole set, some
-dnl macros depend on other. Unfortunately, the autoconf archive does not
-dnl support the concept of set of macros, so I had to break it for
-dnl submission.
-dnl The general documentation, as well as the sample configure.in, is
-dnl included in the AC_PROG_JAVA macro.
-dnl
-dnl @author Stephane Bortzmeyer <bortzmeyer@pasteur.fr>
-dnl @version $Id: ac_prog_java_works.ac,v 12.0 2004/11/17 03:43:38 bostic Exp $
-dnl
-AC_DEFUN([AC_PROG_JAVA_WORKS], [
-AC_CHECK_PROG(uudecode, uudecode$EXEEXT, yes)
-if test x$uudecode = xyes; then
-AC_CACHE_CHECK([if uudecode can decode base 64 file], ac_cv_prog_uudecode_base64, [
-dnl /**
-dnl * Test.java: used to test if java compiler works.
-dnl */
-dnl public class Test
-dnl {
-dnl
-dnl public static void
-dnl main( String[] argv )
-dnl {
-dnl System.exit (0);
-dnl }
-dnl
-dnl }
-cat << \EOF > Test.uue
-begin-base64 644 Test.class
-yv66vgADAC0AFQcAAgEABFRlc3QHAAQBABBqYXZhL2xhbmcvT2JqZWN0AQAE
-bWFpbgEAFihbTGphdmEvbGFuZy9TdHJpbmc7KVYBAARDb2RlAQAPTGluZU51
-bWJlclRhYmxlDAAKAAsBAARleGl0AQAEKEkpVgoADQAJBwAOAQAQamF2YS9s
-YW5nL1N5c3RlbQEABjxpbml0PgEAAygpVgwADwAQCgADABEBAApTb3VyY2VG
-aWxlAQAJVGVzdC5qYXZhACEAAQADAAAAAAACAAkABQAGAAEABwAAACEAAQAB
-AAAABQO4AAyxAAAAAQAIAAAACgACAAAACgAEAAsAAQAPABAAAQAHAAAAIQAB
-AAEAAAAFKrcAErEAAAABAAgAAAAKAAIAAAAEAAQABAABABMAAAACABQ=
-====
-EOF
-if uudecode$EXEEXT Test.uue; then
- ac_cv_prog_uudecode_base64=yes
-else
- echo "configure: __oline__: uudecode had trouble decoding base 64 file 'Test.uue'" >&AC_FD_CC
- echo "configure: failed file was:" >&AC_FD_CC
- cat Test.uue >&AC_FD_CC
- ac_cv_prog_uudecode_base64=no
-fi
-rm -f Test.uue])
-fi
-if test x$ac_cv_prog_uudecode_base64 != xyes; then
- rm -f Test.class
- AC_MSG_WARN([I have to compile Test.class from scratch])
- if test x$ac_cv_prog_javac_works = xno; then
- AC_MSG_ERROR([Cannot compile java source. $JAVAC does not work properly])
- fi
- if test x$ac_cv_prog_javac_works = x; then
- AC_PROG_JAVAC
- fi
-fi
-AC_CACHE_CHECK(if $JAVA works, ac_cv_prog_java_works, [
-JAVA_TEST=Test.java
-CLASS_TEST=Test.class
-TEST=Test
-changequote(, )dnl
-cat << \EOF > $JAVA_TEST
-/* [#]line __oline__ "configure" */
-public class Test {
-public static void main (String args[]) {
- System.exit (0);
-} }
-EOF
-changequote([, ])dnl
-if test x$ac_cv_prog_uudecode_base64 != xyes; then
- if AC_TRY_COMMAND($JAVAC $JAVACFLAGS $JAVA_TEST) && test -s $CLASS_TEST; then
- :
- else
- echo "configure: failed program was:" >&AC_FD_CC
- cat $JAVA_TEST >&AC_FD_CC
- AC_MSG_ERROR(The Java compiler $JAVAC failed (see config.log, check the CLASSPATH?))
- fi
-fi
-if AC_TRY_COMMAND($JAVA $JAVAFLAGS $TEST) >/dev/null 2>&1; then
- ac_cv_prog_java_works=yes
-else
- echo "configure: failed program was:" >&AC_FD_CC
- cat $JAVA_TEST >&AC_FD_CC
- AC_MSG_ERROR(The Java VM $JAVA failed (see config.log, check the CLASSPATH?))
-fi
-rm -fr $JAVA_TEST $CLASS_TEST Test.uue
-])
-AC_PROVIDE([$0])dnl
-]
-)
diff --git a/db/dist/aclocal_java/ac_prog_java_works.m4 b/db/dist/aclocal_java/ac_prog_java_works.m4
new file mode 100644
index 000000000..33a0e19e1
--- /dev/null
+++ b/db/dist/aclocal_java/ac_prog_java_works.m4
@@ -0,0 +1,97 @@
+dnl @synopsis AC_PROG_JAVA_WORKS
+dnl
+dnl Internal use ONLY.
+dnl
+dnl Note: This is part of the set of autoconf M4 macros for Java programs.
+dnl It is VERY IMPORTANT that you download the whole set, some
+dnl macros depend on other. Unfortunately, the autoconf archive does not
+dnl support the concept of set of macros, so I had to break it for
+dnl submission.
+dnl The general documentation, as well as the sample configure.in, is
+dnl included in the AC_PROG_JAVA macro.
+dnl
+dnl @author Stephane Bortzmeyer <bortzmeyer@pasteur.fr>
+dnl @version $Id: ac_prog_java_works.m4,v 12.0 2004/11/17 03:43:38 bostic Exp $
+dnl
+AC_DEFUN([AC_PROG_JAVA_WORKS], [
+AC_CHECK_PROG(uudecode, uudecode$EXEEXT, yes)
+if test x$uudecode = xyes; then
+AC_CACHE_CHECK([if uudecode can decode base 64 file], ac_cv_prog_uudecode_base64, [
+dnl /**
+dnl * Test.java: used to test if java compiler works.
+dnl */
+dnl public class Test
+dnl {
+dnl
+dnl public static void
+dnl main( String[] argv )
+dnl {
+dnl System.exit (0);
+dnl }
+dnl
+dnl }
+cat << \EOF > Test.uue
+begin-base64 644 Test.class
+yv66vgADAC0AFQcAAgEABFRlc3QHAAQBABBqYXZhL2xhbmcvT2JqZWN0AQAE
+bWFpbgEAFihbTGphdmEvbGFuZy9TdHJpbmc7KVYBAARDb2RlAQAPTGluZU51
+bWJlclRhYmxlDAAKAAsBAARleGl0AQAEKEkpVgoADQAJBwAOAQAQamF2YS9s
+YW5nL1N5c3RlbQEABjxpbml0PgEAAygpVgwADwAQCgADABEBAApTb3VyY2VG
+aWxlAQAJVGVzdC5qYXZhACEAAQADAAAAAAACAAkABQAGAAEABwAAACEAAQAB
+AAAABQO4AAyxAAAAAQAIAAAACgACAAAACgAEAAsAAQAPABAAAQAHAAAAIQAB
+AAEAAAAFKrcAErEAAAABAAgAAAAKAAIAAAAEAAQABAABABMAAAACABQ=
+====
+EOF
+if uudecode$EXEEXT Test.uue; then
+ ac_cv_prog_uudecode_base64=yes
+else
+ echo "configure: __oline__: uudecode had trouble decoding base 64 file 'Test.uue'" >&AC_FD_CC
+ echo "configure: failed file was:" >&AC_FD_CC
+ cat Test.uue >&AC_FD_CC
+ ac_cv_prog_uudecode_base64=no
+fi
+rm -f Test.uue])
+fi
+if test x$ac_cv_prog_uudecode_base64 != xyes; then
+ rm -f Test.class
+ AC_MSG_WARN([I have to compile Test.class from scratch])
+ if test x$ac_cv_prog_javac_works = xno; then
+ AC_MSG_ERROR([Cannot compile java source. $JAVAC does not work properly])
+ fi
+ if test x$ac_cv_prog_javac_works = x; then
+ AC_PROG_JAVAC
+ fi
+fi
+AC_CACHE_CHECK(if $JAVA works, ac_cv_prog_java_works, [
+JAVA_TEST=Test.java
+CLASS_TEST=Test.class
+TEST=Test
+changequote(, )dnl
+cat << \EOF > $JAVA_TEST
+/* [#]line __oline__ "configure" */
+public class Test {
+public static void main (String args[]) {
+ System.exit (0);
+} }
+EOF
+changequote([, ])dnl
+if test x$ac_cv_prog_uudecode_base64 != xyes; then
+ if AC_TRY_COMMAND($JAVAC $JAVACFLAGS $JAVA_TEST) && test -s $CLASS_TEST; then
+ :
+ else
+ echo "configure: failed program was:" >&AC_FD_CC
+ cat $JAVA_TEST >&AC_FD_CC
+ AC_MSG_ERROR(The Java compiler $JAVAC failed (see config.log, check the CLASSPATH?))
+ fi
+fi
+if AC_TRY_COMMAND($JAVA $JAVAFLAGS $TEST) >/dev/null 2>&1; then
+ ac_cv_prog_java_works=yes
+else
+ echo "configure: failed program was:" >&AC_FD_CC
+ cat $JAVA_TEST >&AC_FD_CC
+ AC_MSG_ERROR(The Java VM $JAVA failed (see config.log, check the CLASSPATH?))
+fi
+rm -fr $JAVA_TEST $CLASS_TEST Test.uue
+])
+AC_PROVIDE([$0])dnl
+]
+)
diff --git a/db/dist/aclocal_java/ac_prog_javac.ac b/db/dist/aclocal_java/ac_prog_javac.ac
deleted file mode 100644
index b3607dcf8..000000000
--- a/db/dist/aclocal_java/ac_prog_javac.ac
+++ /dev/null
@@ -1,43 +0,0 @@
-dnl @synopsis AC_PROG_JAVAC
-dnl
-dnl AC_PROG_JAVAC tests an existing Java compiler. It uses the environment
-dnl variable JAVAC then tests in sequence various common Java compilers. For
-dnl political reasons, it starts with the free ones.
-dnl
-dnl If you want to force a specific compiler:
-dnl
-dnl - at the configure.in level, set JAVAC=yourcompiler before calling
-dnl AC_PROG_JAVAC
-dnl
-dnl - at the configure level, setenv JAVAC
-dnl
-dnl You can use the JAVAC variable in your Makefile.in, with @JAVAC@.
-dnl
-dnl *Warning*: its success or failure can depend on a proper setting of the
-dnl CLASSPATH env. variable.
-dnl
-dnl TODO: allow to exclude compilers (rationale: most Java programs cannot compile
-dnl with some compilers like guavac).
-dnl
-dnl Note: This is part of the set of autoconf M4 macros for Java programs.
-dnl It is VERY IMPORTANT that you download the whole set, some
-dnl macros depend on other. Unfortunately, the autoconf archive does not
-dnl support the concept of set of macros, so I had to break it for
-dnl submission.
-dnl The general documentation, as well as the sample configure.in, is
-dnl included in the AC_PROG_JAVA macro.
-dnl
-dnl @author Stephane Bortzmeyer <bortzmeyer@pasteur.fr>
-dnl @version $Id: ac_prog_javac.ac,v 12.0 2004/11/17 03:43:38 bostic Exp $
-dnl
-AC_DEFUN([AC_PROG_JAVAC],[
-AC_REQUIRE([AC_EXEEXT])dnl
-if test "x$JAVAPREFIX" = x; then
- test "x$JAVAC" = x && AC_CHECK_PROGS(JAVAC, javac$EXEEXT "gcj$EXEEXT -C" guavac$EXEEXT jikes$EXEEXT)
-else
- test "x$JAVAC" = x && AC_CHECK_PROGS(JAVAC, javac$EXEEXT "gcj$EXEEXT -C" guavac$EXEEXT jikes$EXEEXT, $JAVAPREFIX)
-fi
-test "x$JAVAC" = x && AC_MSG_ERROR([no acceptable Java compiler found in \$PATH])
-AC_PROG_JAVAC_WORKS
-AC_PROVIDE([$0])dnl
-])
diff --git a/db/dist/aclocal_java/ac_prog_javac.m4 b/db/dist/aclocal_java/ac_prog_javac.m4
new file mode 100644
index 000000000..580685993
--- /dev/null
+++ b/db/dist/aclocal_java/ac_prog_javac.m4
@@ -0,0 +1,43 @@
+dnl @synopsis AC_PROG_JAVAC
+dnl
+dnl AC_PROG_JAVAC tests an existing Java compiler. It uses the environment
+dnl variable JAVAC then tests in sequence various common Java compilers. For
+dnl political reasons, it starts with the free ones.
+dnl
+dnl If you want to force a specific compiler:
+dnl
+dnl - at the configure.in level, set JAVAC=yourcompiler before calling
+dnl AC_PROG_JAVAC
+dnl
+dnl - at the configure level, setenv JAVAC
+dnl
+dnl You can use the JAVAC variable in your Makefile.in, with @JAVAC@.
+dnl
+dnl *Warning*: its success or failure can depend on a proper setting of the
+dnl CLASSPATH env. variable.
+dnl
+dnl TODO: allow to exclude compilers (rationale: most Java programs cannot compile
+dnl with some compilers like guavac).
+dnl
+dnl Note: This is part of the set of autoconf M4 macros for Java programs.
+dnl It is VERY IMPORTANT that you download the whole set, some
+dnl macros depend on other. Unfortunately, the autoconf archive does not
+dnl support the concept of set of macros, so I had to break it for
+dnl submission.
+dnl The general documentation, as well as the sample configure.in, is
+dnl included in the AC_PROG_JAVA macro.
+dnl
+dnl @author Stephane Bortzmeyer <bortzmeyer@pasteur.fr>
+dnl @version $Id: ac_prog_javac.m4,v 12.0 2004/11/17 03:43:38 bostic Exp $
+dnl
+AC_DEFUN([AC_PROG_JAVAC],[
+AC_REQUIRE([AC_EXEEXT])dnl
+if test "x$JAVAPREFIX" = x; then
+ test "x$JAVAC" = x && AC_CHECK_PROGS(JAVAC, javac$EXEEXT "gcj$EXEEXT -C" guavac$EXEEXT jikes$EXEEXT)
+else
+ test "x$JAVAC" = x && AC_CHECK_PROGS(JAVAC, javac$EXEEXT "gcj$EXEEXT -C" guavac$EXEEXT jikes$EXEEXT, $JAVAPREFIX)
+fi
+test "x$JAVAC" = x && AC_MSG_ERROR([no acceptable Java compiler found in \$PATH])
+AC_PROG_JAVAC_WORKS
+AC_PROVIDE([$0])dnl
+])
diff --git a/db/dist/aclocal_java/ac_prog_javac_works.ac b/db/dist/aclocal_java/ac_prog_javac_works.ac
deleted file mode 100644
index 0cfd1f213..000000000
--- a/db/dist/aclocal_java/ac_prog_javac_works.ac
+++ /dev/null
@@ -1,35 +0,0 @@
-dnl @synopsis AC_PROG_JAVAC_WORKS
-dnl
-dnl Internal use ONLY.
-dnl
-dnl Note: This is part of the set of autoconf M4 macros for Java programs.
-dnl It is VERY IMPORTANT that you download the whole set, some
-dnl macros depend on other. Unfortunately, the autoconf archive does not
-dnl support the concept of set of macros, so I had to break it for
-dnl submission.
-dnl The general documentation, as well as the sample configure.in, is
-dnl included in the AC_PROG_JAVA macro.
-dnl
-dnl @author Stephane Bortzmeyer <bortzmeyer@pasteur.fr>
-dnl @version $Id: ac_prog_javac_works.ac,v 12.0 2004/11/17 03:43:38 bostic Exp $
-dnl
-AC_DEFUN([AC_PROG_JAVAC_WORKS],[
-AC_CACHE_CHECK([if $JAVAC works], ac_cv_prog_javac_works, [
-JAVA_TEST=Test.java
-CLASS_TEST=Test.class
-cat << \EOF > $JAVA_TEST
-/* [#]line __oline__ "configure" */
-public class Test {
-}
-EOF
-if AC_TRY_COMMAND($JAVAC $JAVACFLAGS $JAVA_TEST) >/dev/null 2>&1; then
- ac_cv_prog_javac_works=yes
-else
- AC_MSG_ERROR([The Java compiler $JAVAC failed (see config.log, check the CLASSPATH?)])
- echo "configure: failed program was:" >&AC_FD_CC
- cat $JAVA_TEST >&AC_FD_CC
-fi
-rm -f $JAVA_TEST $CLASS_TEST
-])
-AC_PROVIDE([$0])dnl
-])
diff --git a/db/dist/aclocal_java/ac_prog_javac_works.m4 b/db/dist/aclocal_java/ac_prog_javac_works.m4
new file mode 100644
index 000000000..548466827
--- /dev/null
+++ b/db/dist/aclocal_java/ac_prog_javac_works.m4
@@ -0,0 +1,35 @@
+dnl @synopsis AC_PROG_JAVAC_WORKS
+dnl
+dnl Internal use ONLY.
+dnl
+dnl Note: This is part of the set of autoconf M4 macros for Java programs.
+dnl It is VERY IMPORTANT that you download the whole set, some
+dnl macros depend on other. Unfortunately, the autoconf archive does not
+dnl support the concept of set of macros, so I had to break it for
+dnl submission.
+dnl The general documentation, as well as the sample configure.in, is
+dnl included in the AC_PROG_JAVA macro.
+dnl
+dnl @author Stephane Bortzmeyer <bortzmeyer@pasteur.fr>
+dnl @version $Id: ac_prog_javac_works.m4,v 12.0 2004/11/17 03:43:38 bostic Exp $
+dnl
+AC_DEFUN([AC_PROG_JAVAC_WORKS],[
+AC_CACHE_CHECK([if $JAVAC works], ac_cv_prog_javac_works, [
+JAVA_TEST=Test.java
+CLASS_TEST=Test.class
+cat << \EOF > $JAVA_TEST
+/* [#]line __oline__ "configure" */
+public class Test {
+}
+EOF
+if AC_TRY_COMMAND($JAVAC $JAVACFLAGS $JAVA_TEST) >/dev/null 2>&1; then
+ ac_cv_prog_javac_works=yes
+else
+ AC_MSG_ERROR([The Java compiler $JAVAC failed (see config.log, check the CLASSPATH?)])
+ echo "configure: failed program was:" >&AC_FD_CC
+ cat $JAVA_TEST >&AC_FD_CC
+fi
+rm -f $JAVA_TEST $CLASS_TEST
+])
+AC_PROVIDE([$0])dnl
+])
diff --git a/db/dist/aclocal_java/ac_prog_javadoc.ac b/db/dist/aclocal_java/ac_prog_javadoc.ac
deleted file mode 100644
index 36b95bd00..000000000
--- a/db/dist/aclocal_java/ac_prog_javadoc.ac
+++ /dev/null
@@ -1,37 +0,0 @@
-dnl @synopsis AC_PROG_JAVADOC
-dnl
-dnl AC_PROG_JAVADOC tests for an existing javadoc generator. It uses the environment
-dnl variable JAVADOC then tests in sequence various common javadoc generator.
-dnl
-dnl If you want to force a specific compiler:
-dnl
-dnl - at the configure.in level, set JAVADOC=yourgenerator before calling
-dnl AC_PROG_JAVADOC
-dnl
-dnl - at the configure level, setenv JAVADOC
-dnl
-dnl You can use the JAVADOC variable in your Makefile.in, with @JAVADOC@.
-dnl
-dnl Note: This macro depends on the autoconf M4 macros for Java programs.
-dnl It is VERY IMPORTANT that you download that whole set, some
-dnl macros depend on other. Unfortunately, the autoconf archive does not
-dnl support the concept of set of macros, so I had to break it for
-dnl submission.
-dnl
-dnl The general documentation of those macros, as well as the sample
-dnl configure.in, is included in the AC_PROG_JAVA macro.
-dnl
-dnl @author Egon Willighagen <egonw@sci.kun.nl>
-dnl @version $Id: ac_prog_javadoc.ac,v 12.0 2004/11/17 03:43:38 bostic Exp $
-dnl
-AC_DEFUN([AC_PROG_JAVADOC],[
-AC_REQUIRE([AC_EXEEXT])dnl
-if test "x$JAVAPREFIX" = x; then
- test "x$JAVADOC" = x && AC_CHECK_PROGS(JAVADOC, javadoc$EXEEXT)
-else
- test "x$JAVADOC" = x && AC_CHECK_PROGS(JAVADOC, javadoc, $JAVAPREFIX)
-fi
-test "x$JAVADOC" = x && AC_MSG_ERROR([no acceptable javadoc generator found in \$PATH])
-AC_PROVIDE([$0])dnl
-])
-
diff --git a/db/dist/aclocal_java/ac_prog_javadoc.m4 b/db/dist/aclocal_java/ac_prog_javadoc.m4
new file mode 100644
index 000000000..42b700bc9
--- /dev/null
+++ b/db/dist/aclocal_java/ac_prog_javadoc.m4
@@ -0,0 +1,37 @@
+dnl @synopsis AC_PROG_JAVADOC
+dnl
+dnl AC_PROG_JAVADOC tests for an existing javadoc generator. It uses the environment
+dnl variable JAVADOC then tests in sequence various common javadoc generator.
+dnl
+dnl If you want to force a specific compiler:
+dnl
+dnl - at the configure.in level, set JAVADOC=yourgenerator before calling
+dnl AC_PROG_JAVADOC
+dnl
+dnl - at the configure level, setenv JAVADOC
+dnl
+dnl You can use the JAVADOC variable in your Makefile.in, with @JAVADOC@.
+dnl
+dnl Note: This macro depends on the autoconf M4 macros for Java programs.
+dnl It is VERY IMPORTANT that you download that whole set, some
+dnl macros depend on other. Unfortunately, the autoconf archive does not
+dnl support the concept of set of macros, so I had to break it for
+dnl submission.
+dnl
+dnl The general documentation of those macros, as well as the sample
+dnl configure.in, is included in the AC_PROG_JAVA macro.
+dnl
+dnl @author Egon Willighagen <egonw@sci.kun.nl>
+dnl @version $Id: ac_prog_javadoc.m4,v 12.0 2004/11/17 03:43:38 bostic Exp $
+dnl
+AC_DEFUN([AC_PROG_JAVADOC],[
+AC_REQUIRE([AC_EXEEXT])dnl
+if test "x$JAVAPREFIX" = x; then
+ test "x$JAVADOC" = x && AC_CHECK_PROGS(JAVADOC, javadoc$EXEEXT)
+else
+ test "x$JAVADOC" = x && AC_CHECK_PROGS(JAVADOC, javadoc, $JAVAPREFIX)
+fi
+test "x$JAVADOC" = x && AC_MSG_ERROR([no acceptable javadoc generator found in \$PATH])
+AC_PROVIDE([$0])dnl
+])
+
diff --git a/db/dist/aclocal_java/ac_prog_javah.ac b/db/dist/aclocal_java/ac_prog_javah.ac
deleted file mode 100644
index 7563036c0..000000000
--- a/db/dist/aclocal_java/ac_prog_javah.ac
+++ /dev/null
@@ -1,26 +0,0 @@
-dnl @synopsis AC_PROG_JAVAH
-dnl
-dnl AC_PROG_JAVAH tests the availability of the javah header generator
-dnl and looks for the jni.h header file. If available, JAVAH is set to
-dnl the full path of javah and CPPFLAGS is updated accordingly.
-dnl
-dnl @author Luc Maisonobe
-dnl @version $Id: ac_prog_javah.ac,v 12.0 2004/11/17 03:43:38 bostic Exp $
-dnl
-AC_DEFUN([AC_PROG_JAVAH],[
-AC_REQUIRE([AC_CANONICAL_SYSTEM])dnl
-AC_REQUIRE([AC_PROG_CPP])dnl
-AC_PATH_PROG(JAVAH,javah)
-if test x"`eval 'echo $ac_cv_path_JAVAH'`" != x ; then
- AC_TRY_CPP([#include <jni.h>],,[
- ac_save_CPPFLAGS="$CPPFLAGS"
-changequote(, )dnl
- ac_dir=`echo $ac_cv_path_JAVAH | sed 's,\(.*\)/[^/]*/[^/]*$,\1/include,'`
- ac_machdep=`echo $build_os | sed 's,[-0-9].*,,'`
-changequote([, ])dnl
- CPPFLAGS="$ac_save_CPPFLAGS -I$ac_dir -I$ac_dir/$ac_machdep"
- AC_TRY_CPP([#include <jni.h>],
- ac_save_CPPFLAGS="$CPPFLAGS",
- AC_MSG_WARN([unable to include <jni.h>]))
- CPPFLAGS="$ac_save_CPPFLAGS"])
-fi])
diff --git a/db/dist/aclocal_java/ac_prog_javah.m4 b/db/dist/aclocal_java/ac_prog_javah.m4
new file mode 100644
index 000000000..7c07fe9e4
--- /dev/null
+++ b/db/dist/aclocal_java/ac_prog_javah.m4
@@ -0,0 +1,26 @@
+dnl @synopsis AC_PROG_JAVAH
+dnl
+dnl AC_PROG_JAVAH tests the availability of the javah header generator
+dnl and looks for the jni.h header file. If available, JAVAH is set to
+dnl the full path of javah and CPPFLAGS is updated accordingly.
+dnl
+dnl @author Luc Maisonobe
+dnl @version $Id: ac_prog_javah.m4,v 12.0 2004/11/17 03:43:38 bostic Exp $
+dnl
+AC_DEFUN([AC_PROG_JAVAH],[
+AC_REQUIRE([AC_CANONICAL_SYSTEM])dnl
+AC_REQUIRE([AC_PROG_CPP])dnl
+AC_PATH_PROG(JAVAH,javah)
+if test x"`eval 'echo $ac_cv_path_JAVAH'`" != x ; then
+ AC_TRY_CPP([#include <jni.h>],,[
+ ac_save_CPPFLAGS="$CPPFLAGS"
+changequote(, )dnl
+ ac_dir=`echo $ac_cv_path_JAVAH | sed 's,\(.*\)/[^/]*/[^/]*$,\1/include,'`
+ ac_machdep=`echo $build_os | sed 's,[-0-9].*,,'`
+changequote([, ])dnl
+ CPPFLAGS="$ac_save_CPPFLAGS -I$ac_dir -I$ac_dir/$ac_machdep"
+ AC_TRY_CPP([#include <jni.h>],
+ ac_save_CPPFLAGS="$CPPFLAGS",
+ AC_MSG_WARN([unable to include <jni.h>]))
+ CPPFLAGS="$ac_save_CPPFLAGS"])
+fi])
diff --git a/db/dist/aclocal_java/ac_try_compile_java.ac b/db/dist/aclocal_java/ac_try_compile_java.ac
deleted file mode 100644
index d22aeab42..000000000
--- a/db/dist/aclocal_java/ac_try_compile_java.ac
+++ /dev/null
@@ -1,39 +0,0 @@
-dnl @synopsis AC_TRY_COMPILE_JAVA
-dnl
-dnl AC_TRY_COMPILE_JAVA attempt to compile user given source.
-dnl
-dnl *Warning*: its success or failure can depend on a proper setting of the
-dnl CLASSPATH env. variable.
-dnl
-dnl Note: This is part of the set of autoconf M4 macros for Java programs.
-dnl It is VERY IMPORTANT that you download the whole set, some
-dnl macros depend on other. Unfortunately, the autoconf archive does not
-dnl support the concept of set of macros, so I had to break it for
-dnl submission.
-dnl The general documentation, as well as the sample configure.in, is
-dnl included in the AC_PROG_JAVA macro.
-dnl
-dnl @author Devin Weaver <ktohg@tritarget.com>
-dnl @version $Id: ac_try_compile_java.ac,v 12.0 2004/11/17 03:43:38 bostic Exp $
-dnl
-AC_DEFUN([AC_TRY_COMPILE_JAVA],[
-AC_REQUIRE([AC_PROG_JAVAC])dnl
-cat << \EOF > Test.java
-/* [#]line __oline__ "configure" */
-ifelse([$1], , , [import $1;])
-public class Test {
-[$2]
-}
-EOF
-if AC_TRY_COMMAND($JAVAC $JAVACFLAGS Test.java) && test -s Test.class
-then
-dnl Don't remove the temporary files here, so they can be examined.
- ifelse([$3], , :, [$3])
-else
- echo "configure: failed program was:" >&AC_FD_CC
- cat Test.java >&AC_FD_CC
-ifelse([$4], , , [ rm -fr Test*
- $4
-])dnl
-fi
-rm -fr Test*])
diff --git a/db/dist/aclocal_java/ac_try_compile_java.m4 b/db/dist/aclocal_java/ac_try_compile_java.m4
new file mode 100644
index 000000000..4f233bbcb
--- /dev/null
+++ b/db/dist/aclocal_java/ac_try_compile_java.m4
@@ -0,0 +1,39 @@
+dnl @synopsis AC_TRY_COMPILE_JAVA
+dnl
+dnl AC_TRY_COMPILE_JAVA attempt to compile user given source.
+dnl
+dnl *Warning*: its success or failure can depend on a proper setting of the
+dnl CLASSPATH env. variable.
+dnl
+dnl Note: This is part of the set of autoconf M4 macros for Java programs.
+dnl It is VERY IMPORTANT that you download the whole set, some
+dnl macros depend on other. Unfortunately, the autoconf archive does not
+dnl support the concept of set of macros, so I had to break it for
+dnl submission.
+dnl The general documentation, as well as the sample configure.in, is
+dnl included in the AC_PROG_JAVA macro.
+dnl
+dnl @author Devin Weaver <ktohg@tritarget.com>
+dnl @version $Id: ac_try_compile_java.m4,v 12.0 2004/11/17 03:43:38 bostic Exp $
+dnl
+AC_DEFUN([AC_TRY_COMPILE_JAVA],[
+AC_REQUIRE([AC_PROG_JAVAC])dnl
+cat << \EOF > Test.java
+/* [#]line __oline__ "configure" */
+ifelse([$1], , , [import $1;])
+public class Test {
+[$2]
+}
+EOF
+if AC_TRY_COMMAND($JAVAC $JAVACFLAGS Test.java) && test -s Test.class
+then
+dnl Don't remove the temporary files here, so they can be examined.
+ ifelse([$3], , :, [$3])
+else
+ echo "configure: failed program was:" >&AC_FD_CC
+ cat Test.java >&AC_FD_CC
+ifelse([$4], , , [ rm -fr Test*
+ $4
+])dnl
+fi
+rm -fr Test*])
diff --git a/db/dist/aclocal_java/ac_try_run_javac.ac b/db/dist/aclocal_java/ac_try_run_javac.ac
deleted file mode 100644
index 012493588..000000000
--- a/db/dist/aclocal_java/ac_try_run_javac.ac
+++ /dev/null
@@ -1,40 +0,0 @@
-dnl @synopsis AC_TRY_RUN_JAVA
-dnl
-dnl AC_TRY_RUN_JAVA attempt to compile and run user given source.
-dnl
-dnl *Warning*: its success or failure can depend on a proper setting of the
-dnl CLASSPATH env. variable.
-dnl
-dnl Note: This is part of the set of autoconf M4 macros for Java programs.
-dnl It is VERY IMPORTANT that you download the whole set, some
-dnl macros depend on other. Unfortunately, the autoconf archive does not
-dnl support the concept of set of macros, so I had to break it for
-dnl submission.
-dnl The general documentation, as well as the sample configure.in, is
-dnl included in the AC_PROG_JAVA macro.
-dnl
-dnl @author Devin Weaver <ktohg@tritarget.com>
-dnl @version $Id: ac_try_run_javac.ac,v 12.0 2004/11/17 03:43:38 bostic Exp $
-dnl
-AC_DEFUN([AC_TRY_RUN_JAVA],[
-AC_REQUIRE([AC_PROG_JAVAC])dnl
-AC_REQUIRE([AC_PROG_JAVA])dnl
-cat << \EOF > Test.java
-/* [#]line __oline__ "configure" */
-ifelse([$1], , , [include $1;])
-public class Test {
-[$2]
-}
-EOF
-if AC_TRY_COMMAND($JAVAC $JAVACFLAGS Test.java) && test -s Test.class && ($JAVA $JAVAFLAGS Test; exit) 2>/dev/null
-then
-dnl Don't remove the temporary files here, so they can be examined.
- ifelse([$3], , :, [$3])
-else
- echo "configure: failed program was:" >&AC_FD_CC
- cat Test.java >&AC_FD_CC
-ifelse([$4], , , [ rm -fr Test*
- $4
-])dnl
-fi
-rm -fr Test*])
diff --git a/db/dist/aclocal_java/ac_try_run_javac.m4 b/db/dist/aclocal_java/ac_try_run_javac.m4
new file mode 100644
index 000000000..69f91e5bc
--- /dev/null
+++ b/db/dist/aclocal_java/ac_try_run_javac.m4
@@ -0,0 +1,40 @@
+dnl @synopsis AC_TRY_RUN_JAVA
+dnl
+dnl AC_TRY_RUN_JAVA attempt to compile and run user given source.
+dnl
+dnl *Warning*: its success or failure can depend on a proper setting of the
+dnl CLASSPATH env. variable.
+dnl
+dnl Note: This is part of the set of autoconf M4 macros for Java programs.
+dnl It is VERY IMPORTANT that you download the whole set, some
+dnl macros depend on other. Unfortunately, the autoconf archive does not
+dnl support the concept of set of macros, so I had to break it for
+dnl submission.
+dnl The general documentation, as well as the sample configure.in, is
+dnl included in the AC_PROG_JAVA macro.
+dnl
+dnl @author Devin Weaver <ktohg@tritarget.com>
+dnl @version $Id: ac_try_run_javac.m4,v 12.0 2004/11/17 03:43:38 bostic Exp $
+dnl
+AC_DEFUN([AC_TRY_RUN_JAVA],[
+AC_REQUIRE([AC_PROG_JAVAC])dnl
+AC_REQUIRE([AC_PROG_JAVA])dnl
+cat << \EOF > Test.java
+/* [#]line __oline__ "configure" */
+ifelse([$1], , , [include $1;])
+public class Test {
+[$2]
+}
+EOF
+if AC_TRY_COMMAND($JAVAC $JAVACFLAGS Test.java) && test -s Test.class && ($JAVA $JAVAFLAGS Test; exit) 2>/dev/null
+then
+dnl Don't remove the temporary files here, so they can be examined.
+ ifelse([$3], , :, [$3])
+else
+ echo "configure: failed program was:" >&AC_FD_CC
+ cat Test.java >&AC_FD_CC
+ifelse([$4], , , [ rm -fr Test*
+ $4
+])dnl
+fi
+rm -fr Test*])
diff --git a/db/dist/brew/bdb_brew.dsp b/db/dist/brew/bdb_brew.dsp
new file mode 100644
index 000000000..29948f367
--- /dev/null
+++ b/db/dist/brew/bdb_brew.dsp
@@ -0,0 +1,115 @@
+# Microsoft Developer Studio Project File - Name="bdb_brew" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=bdb_brew - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "bdb_brew.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "bdb_brew.mak" CFG="bdb_brew - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "bdb_brew - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "bdb_brew - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "bdb_brew - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release/bdb_brew"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release/bdb_brew"
+# PROP Target_Dir ""
+LINK32=link.exe
+# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /D "UNICODE" /D "_UNICODE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I ".." /I "$(BREWDIR)\inc" /D "UNICODE" /D "_UNICODE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /FD /c
+# ADD BASE RSC /l 0xc09
+# ADD RSC /l 0xc09
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "bdb_brew - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug/bdb_brew"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug/bdb_brew"
+# PROP Target_Dir ""
+LINK32=link.exe
+# ADD BASE CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I ".." /D "DIAGNOSTIC" /D "UNICODE" /D "_UNICODE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FD /c
+# ADD CPP /nologo /MDd /W3 /GX /ZI /Od /X /I "." /I ".." /I "$(BREWDIR)\inc" /D "DIAGNOSTIC" /D "UNICODE" /D "_UNICODE" /D "_DEBUG" /D "AEE_SIMULATOR" /D "__NO_SYSTEM_INCLUDES" /FR /FD /c
+# ADD BASE RSC /l 0xc09
+# ADD RSC /l 0xc09
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ENDIF
+
+# Begin Target
+
+# Name "bdb_brew - Win32 Release"
+# Name "bdb_brew - Win32 Debug"
+# Begin Group "header_files"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\brew_db.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\clib_port.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\db.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\db_config.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\db_int.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\errno.h
+# End Source File
+# End Group
+# Begin Group "source_files"
+
+# PROP Default_Filter ""
diff --git a/db/dist/brew/bdbread.mak b/db/dist/brew/bdbread.mak
new file mode 100644
index 000000000..6b566ee99
--- /dev/null
+++ b/db/dist/brew/bdbread.mak
@@ -0,0 +1,418 @@
+#============================================================================
+# Name:
+# $(TARGET).MAK
+#
+# Description:
+# Makefile to build the $(TARGET) downloadable module.
+#
+# The following nmake targets are available in this makefile:
+#
+# all - make .elf and .mod image files (default)
+# clean - delete object directory and image files
+# filename.o - make object file
+#
+# The above targets can be made with the following command:
+#
+# nmake /f $(TARGET).mak [target]
+#
+# Assumptions:
+# 1. The environment variable ADSHOME is set to the root directory of the
+# arm tools.
+# 2. The version of ADS is 1.2 or above.
+#
+# Notes:
+# None.
+#
+#
+# Copyright © 2000-2003 QUALCOMM Incorporated.
+# All Rights Reserved.
+# QUALCOMM Proprietary/GTDR
+#
+#----------------------------------------------------------------------------
+#============================================================================
+BREW_HOME =$(BREWDIR)
+ARM_HOME =$(ARMHOME)
+TARGET =D:\DB7588~1.BRE\BUILD_~1\bdb_brew
+LIST OF OBJECT FILES
+APP_INCLUDES = -I ..\build_brew -I ..
+
+#-------------------------------------------------------------------------------
+# Target file name and type definitions
+#-------------------------------------------------------------------------------
+
+EXETYPE = elf # Target image file format
+MODULE = mod # Downloadable module extension
+
+#-------------------------------------------------------------------------------
+# Target compile time symbol definitions
+#
+# Tells the SDK source stuffs that we're building a dynamic app.
+#-------------------------------------------------------------------------------
+
+DYNAPP = -DDYNAMIC_APP
+
+
+#-------------------------------------------------------------------------------
+# Software tool and environment definitions
+#-------------------------------------------------------------------------------
+
+AEESRCPATH = $(BREW_HOME)\src
+AEEINCPATH = $(BREW_HOME)\inc
+
+ARMBIN = $(ARM_HOME)\bin # ARM ADS application directory
+ARMINC = $(ARM_HOME)\include # ARM ADS include file directory
+ARMLIB = $(ARM_HOME)\lib # ARM ADS library directory
+
+ARMCC = $(ARMBIN)\armcc # ARM ADS ARM 32-bit inst. set ANSI C compiler
+LD = $(ARMBIN)\armlink # ARM ADS linker
+HEXTOOL = $(ARMBIN)\fromelf # ARM ADS utility to create hex file from image
+
+OBJ_CMD = -o # Command line option to specify output filename
+
+#-------------------------------------------------------------------------------
+# Processor architecture options
+#-------------------------------------------------------------------------------
+
+CPU = -cpu ARM7TDMI # ARM7TDMI target processor
+
+#-------------------------------------------------------------------------------
+# ARM Procedure Call Standard (APCS) options
+#-------------------------------------------------------------------------------
+
+ROPI = ropi # Read-Only(code) Position independence
+INTERWRK = interwork # Allow ARM-Thumb interworking
+
+APCS = -apcs /$(ROPI)/$(INTERWRK)/norwpi
+
+#-------------------------------------------------------------------------------
+# Additional compile time error checking options
+#-------------------------------------------------------------------------------
+
+CHK = -fa # Check for data flow anomolies
+
+#-------------------------------------------------------------------------------
+# Compiler output options
+#-------------------------------------------------------------------------------
+
+OUT = -c # Object file output only
+
+#-------------------------------------------------------------------------------
+# Compiler/assembler debug options
+#-------------------------------------------------------------------------------
+
+DBG = -g # Enable debug
+
+#-------------------------------------------------------------------------------
+# Compiler optimization options
+#-------------------------------------------------------------------------------
+
+OPT = -Ospace -O2 # Full compiler optimization for space
+
+#-------------------------------------------------------------------------------
+# Compiler code generation options
+#-------------------------------------------------------------------------------
+
+END = -littleend # Compile for little endian memory architecture
+ZA = -zo # LDR may only access 32-bit aligned addresses
+
+CODE = $(END) $(ZA)
+
+
+#-------------------------------------------------------------------------------
+# Include file search path options
+#-------------------------------------------------------------------------------
+
+INC = -I. -I$(AEEINCPATH) $(APP_INCLUDES)
+
+
+#-------------------------------------------------------------------------------
+# Compiler pragma emulation options
+#-------------------------------------------------------------------------------
+
+
+#-------------------------------------------------------------------------------
+# Linker options
+#-------------------------------------------------------------------------------
+
+LINK_CMD = -o #Command line option to specify output file
+ #on linking
+
+ROPILINK = -ropi #Link image as Read-Only Position Independent
+
+LINK_ORDER = -first AEEMod_Load
+
+#-------------------------------------------------------------------------------
+# HEXTOOL options
+#-------------------------------------------------------------------------------
+
+BINFORMAT = -bin
+
+
+#-------------------------------------------------------------------------------
+# Compiler flag definitions
+#-------------------------------------------------------------------------------
+NO_WARNING= -W
+
+CFLAGS0 = $(OUT) $(DYNAPP) $(CPU) $(APCS) $(CODE) $(CHK) $(DBG)
+CFLAGS = $(NO_WARNING) $(CFLAGS0) $(OPT)
+
+#-------------------------------------------------------------------------------
+# Linker flag definitions
+#-------------------------------------------------------------------------------
+
+# the -entry flag is not really needed, but it keeps the linker from reporting
+# warning L6305W (no entry point). The address
+LFLAGS = $(ROPILINK) -rwpi -entry 0x8000#
+
+#----------------------------------------------------------------------------
+# Default target
+#----------------------------------------------------------------------------
+
+all : $(TARGET).$(MODULE)
+
+#----------------------------------------------------------------------------
+# Clean target
+#----------------------------------------------------------------------------
+
+# The object subdirectory, target image file, and target hex file are deleted.
+
+clean :
+ @echo ---------------------------------------------------------------
+ @echo CLEAN
+ -del /f $(OBJS)
+ -del /f $(TARGET).$(EXETYPE)
+ -del /f $(TARGET).$(MODULE)
+ @echo ---------------------------------------------------------------
+
+#============================================================================
+# DEFAULT SUFFIX RULES
+#============================================================================
+
+# The following are the default suffix rules used to compile all objects that
+# are not specifically included in one of the module specific rules defined
+# in the next section.
+
+# The following macros are used to specify the output object file, MSG_FILE
+# symbol definition and input source file on the compile line in the rules
+# defined below.
+
+SRC_FILE = $(@F:.o=.c) # Input source file specification
+OBJ_FILE = $(OBJ_CMD) $(@F) # Output object file specification
+
+.SUFFIXES :
+.SUFFIXES : .o .dep .c
+
+#--------------------------------------------------------------------------
+# C code inference rules
+#----------------------------------------------------------------------------
+
+.c.o:
+ @echo ---------------------------------------------------------------
+ @echo OBJECT $(@F)
+ $(ARMCC) $(CFLAGS) $(INC) $(OBJ_FILE) $(SRC_FILE)
+ @echo ---------------------------------------------------------------
+
+.c.mix:
+ @echo ---------------------------------------------------------------
+ @echo OBJECT $(@F)
+ $(ARMCC) -S -fs $(CFLAGS) $(INC) $(OBJ_FILE) $<
+ @echo ---------------------------------------------------------------
+
+
+{$(AEESRCPATH)}.c.o:
+ @echo ---------------------------------------------------------------
+ @echo OBJECT $(@F)
+ $(ARMCC) $(CFLAGS) $(INC) $(OBJ_FILE) $(AEESRCPATH)\$(SRC_FILE)
+ @echo ---------------------------------------------------------------
+
+
+#===============================================================================
+# MODULE SPECIFIC RULES
+#===============================================================================
+
+APP_OBJS = $(OBJS)
+
+
+#----------------------------------------------------------------------------
+# Lib file targets
+#----------------------------------------------------------------------------
+
+$(TARGET).$(MODULE) : $(TARGET).$(EXETYPE)
+ @echo ---------------------------------------------------------------
+ @echo TARGET $@
+ $(HEXTOOL) $(TARGET).$(EXETYPE) $(BINFORMAT) $(TARGET).$(MODULE)
+
+$(TARGET).$(EXETYPE) : $(APP_OBJS)
+ @echo ---------------------------------------------------------------
+ @echo TARGET $@
+ $(LD) $(LINK_CMD) $(TARGET).$(EXETYPE) $(LFLAGS) $(APP_OBJS) $(LINK_ORDER)
+
+#----------------------------------------------------------------------------
+# Applet Specific Rules
+#----------------------------------------------------------------------------
+
+
+RULE1 = ..\clib
+{$(RULE1)}.c.o:
+ @echo ---------------------------------------------------------------
+ @echo OBJECT $(@F)
+ $(ARMCC) $(CFLAGS) $(INC) $(OBJ_FILE) $(RULE1)\$(SRC_FILE)
+ @echo ---------------------------------------------------------------
+
+
+RULE2 = ..\btree
+{$(RULE2)}.c.o:
+ @echo ---------------------------------------------------------------
+ @echo OBJECT $(@F)
+ $(ARMCC) $(CFLAGS) $(INC) $(OBJ_FILE) $(RULE2)\$(SRC_FILE)
+ @echo ---------------------------------------------------------------
+
+
+RULE3 = ..\db
+{$(RULE3)}.c.o:
+ @echo ---------------------------------------------------------------
+ @echo OBJECT $(@F)
+ $(ARMCC) $(CFLAGS) $(INC) $(OBJ_FILE) $(RULE3)\$(SRC_FILE)
+ @echo ---------------------------------------------------------------
+
+
+RULE4 = ..\common
+{$(RULE4)}.c.o:
+ @echo ---------------------------------------------------------------
+ @echo OBJECT $(@F)
+ $(ARMCC) $(CFLAGS) $(INC) $(OBJ_FILE) $(RULE4)\$(SRC_FILE)
+ @echo ---------------------------------------------------------------
+
+
+RULE5 = ..\os_brew
+{$(RULE5)}.c.o:
+ @echo ---------------------------------------------------------------
+ @echo OBJECT $(@F)
+ $(ARMCC) $(CFLAGS) $(INC) $(OBJ_FILE) $(RULE5)\$(SRC_FILE)
+ @echo ---------------------------------------------------------------
+
+
+RULE6 = ..\env
+{$(RULE6)}.c.o:
+ @echo ---------------------------------------------------------------
+ @echo OBJECT $(@F)
+ $(ARMCC) $(CFLAGS) $(INC) $(OBJ_FILE) $(RULE6)\$(SRC_FILE)
+ @echo ---------------------------------------------------------------
+
+
+RULE7 = ..\dbreg
+{$(RULE7)}.c.o:
+ @echo ---------------------------------------------------------------
+ @echo OBJECT $(@F)
+ $(ARMCC) $(CFLAGS) $(INC) $(OBJ_FILE) $(RULE7)\$(SRC_FILE)
+ @echo ---------------------------------------------------------------
+
+
+RULE8 = ..\fileops
+{$(RULE8)}.c.o:
+ @echo ---------------------------------------------------------------
+ @echo OBJECT $(@F)
+ $(ARMCC) $(CFLAGS) $(INC) $(OBJ_FILE) $(RULE8)\$(SRC_FILE)
+ @echo ---------------------------------------------------------------
+
+
+RULE9 = ..\hash
+{$(RULE9)}.c.o:
+ @echo ---------------------------------------------------------------
+ @echo OBJECT $(@F)
+ $(ARMCC) $(CFLAGS) $(INC) $(OBJ_FILE) $(RULE9)\$(SRC_FILE)
+ @echo ---------------------------------------------------------------
+
+
+RULE10 = ..\hmac
+{$(RULE10)}.c.o:
+ @echo ---------------------------------------------------------------
+ @echo OBJECT $(@F)
+ $(ARMCC) $(CFLAGS) $(INC) $(OBJ_FILE) $(RULE10)\$(SRC_FILE)
+ @echo ---------------------------------------------------------------
+
+
+RULE11 = ..\lock
+{$(RULE11)}.c.o:
+ @echo ---------------------------------------------------------------
+ @echo OBJECT $(@F)
+ $(ARMCC) $(CFLAGS) $(INC) $(OBJ_FILE) $(RULE11)\$(SRC_FILE)
+ @echo ---------------------------------------------------------------
+
+
+RULE12 = ..\log
+{$(RULE12)}.c.o:
+ @echo ---------------------------------------------------------------
+ @echo OBJECT $(@F)
+ $(ARMCC) $(CFLAGS) $(INC) $(OBJ_FILE) $(RULE12)\$(SRC_FILE)
+ @echo ---------------------------------------------------------------
+
+
+RULE13 = ..\mp
+{$(RULE13)}.c.o:
+ @echo ---------------------------------------------------------------
+ @echo OBJECT $(@F)
+ $(ARMCC) $(CFLAGS) $(INC) $(OBJ_FILE) $(RULE13)\$(SRC_FILE)
+ @echo ---------------------------------------------------------------
+
+
+RULE14 = ..\mutex
+{$(RULE14)}.c.o:
+ @echo ---------------------------------------------------------------
+ @echo OBJECT $(@F)
+ $(ARMCC) $(CFLAGS) $(INC) $(OBJ_FILE) $(RULE14)\$(SRC_FILE)
+ @echo ---------------------------------------------------------------
+
+
+RULE15 = ..\os
+{$(RULE15)}.c.o:
+ @echo ---------------------------------------------------------------
+ @echo OBJECT $(@F)
+ $(ARMCC) $(CFLAGS) $(INC) $(OBJ_FILE) $(RULE15)\$(SRC_FILE)
+ @echo ---------------------------------------------------------------
+
+
+RULE16 = ..\qam
+{$(RULE16)}.c.o:
+ @echo ---------------------------------------------------------------
+ @echo OBJECT $(@F)
+ $(ARMCC) $(CFLAGS) $(INC) $(OBJ_FILE) $(RULE16)\$(SRC_FILE)
+ @echo ---------------------------------------------------------------
+
+
+RULE17 = ..\rep
+{$(RULE17)}.c.o:
+ @echo ---------------------------------------------------------------
+ @echo OBJECT $(@F)
+ $(ARMCC) $(CFLAGS) $(INC) $(OBJ_FILE) $(RULE17)\$(SRC_FILE)
+ @echo ---------------------------------------------------------------
+
+
+RULE18 = ..\txn
+{$(RULE18)}.c.o:
+ @echo ---------------------------------------------------------------
+ @echo OBJECT $(@F)
+ $(ARMCC) $(CFLAGS) $(INC) $(OBJ_FILE) $(RULE18)\$(SRC_FILE)
+ @echo ---------------------------------------------------------------
+
+
+RULE19 = ..\xa
+{$(RULE19)}.c.o:
+ @echo ---------------------------------------------------------------
+ @echo OBJECT $(@F)
+ $(ARMCC) $(CFLAGS) $(INC) $(OBJ_FILE) $(RULE19)\$(SRC_FILE)
+ @echo ---------------------------------------------------------------
+RULE20 = ..\bdbread
+{$(RULE20)}.c.o:
+ @echo ---------------------------------------------------------------
+ @echo OBJECT $(@F)
+ $(ARMCC) $(CFLAGS) $(INC) $(OBJ_FILE) $(RULE20)\$(SRC_FILE)
+ @echo ---------------------------------------------------------------
+
+# --------------------------------------------
+# DEPENDENCY LIST, DO NOT EDIT BELOW THIS LINE
+# --------------------------------------------
+
+bdbread.o : ..\bdbread\bdbread.c
+AEEModGen.o : ..\bdbread\AEEModGen.c
+AEEAppGen.o : ..\bdbread\AEEAppGen.c
diff --git a/db/dist/brew/brew_config.in b/db/dist/brew/brew_config.in
new file mode 100644
index 000000000..2b770e76c
--- /dev/null
+++ b/db/dist/brew/brew_config.in
@@ -0,0 +1,548 @@
+/* Define to 1 if you want to build a version for running the test suite. */
+/* #undef CONFIG_TEST */
+
+/* We use DB_WIN32 much as one would use _WIN32 -- to specify that we're using
+ an operating system environment that supports Win32 calls and semantics. We
+ don't use _WIN32 because Cygwin/GCC also defines _WIN32, even though
+ Cygwin/GCC closely emulates the Unix environment. */
+/* #undef DB_WIN32 */
+
+/* Define to 1 if you want a debugging version. */
+#if defined(_DEBUG)
+#if !defined(DEBUG)
+#define DEBUG 1
+#endif
+#endif
+
+/* Define to 1 if you want a version that logs read operations. */
+/* #undef DEBUG_ROP */
+
+/* Define to 1 if you want a version that logs write operations. */
+/* #undef DEBUG_WOP */
+
+/* Define to 1 if you want a version with run-time diagnostic checking. */
+/* #undef DIAGNOSTIC */
+
+/* Define to 1 if 64-bit types are available. */
+/* #undef HAVE_64BIT_TYPES */
+
+/* Define to 1 if you have the `abort' function. */
+/* #undef HAVE_ABORT */
+
+/* Define to 1 if you have the `atoi' function. */
+#define HAVE_ATOI 1
+
+/* Define to 1 if you have the `atol' function. */
+/* #undef HAVE_ATOL */
+
+/* Define to 1 if building BREW. */
+#define HAVE_BREW 1
+
+/* Define to 1 if building on BREW (SDK2). */
+#define HAVE_BREW_SDK2 1
+
+/* Define to 1 if you have the `clock_gettime' function. */
+/* #undef HAVE_CLOCK_GETTIME */
+
+/* Define to 1 if Berkeley DB release includes strong cryptography. */
+/* #undef HAVE_CRYPTO */
+
+/* Define to 1 if you have the `ctime_r' function. */
+/* #undef HAVE_CTIME_R */
+
+/* Define to 1 if ctime_r takes a buffer length as a third argument. */
+/* #undef HAVE_CTIME_R_3ARG */
+
+/* Define to 1 if you have the `directio' function. */
+/* #undef HAVE_DIRECTIO */
+
+/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
+ */
+/* #undef HAVE_DIRENT_H */
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+/* #undef HAVE_DLFCN_H */
+
+/* Define to 1 if you have EXIT_SUCCESS/EXIT_FAILURE #defines. */
+#define HAVE_EXIT_SUCCESS 1
+
+/* Define to 1 if you have the `fchmod' function. */
+/* #undef HAVE_FCHMOD */
+
+/* Define to 1 if you have the `fclose' function. */
+/* #undef HAVE_FCLOSE */
+
+/* Define to 1 if you have the `fcntl' function. */
+/* #undef HAVE_FCNTL */
+
+/* Define to 1 if fcntl/F_SETFD denies child access to file descriptors. */
+/* #undef HAVE_FCNTL_F_SETFD */
+
+/* Define to 1 if you have the `fdatasync' function. */
+/* #undef HAVE_FDATASYNC */
+
+/* Define to 1 if you have the `fgetc' function. */
+/* #undef HAVE_FGETC */
+
+/* Define to 1 if you have the `fgets' function. */
+/* #undef HAVE_FGETS */
+
+/* Define to 1 if allocated filesystem blocks are not zeroed. */
+#define HAVE_FILESYSTEM_NOTZERO 1
+
+/* Define to 1 to build Berkeley DB with a fine-grained lock manager. */
+/* #undef HAVE_FINE_GRAINED_LOCK_MANAGER */
+
+/* Define to 1 if you have the `fopen' function. */
+/* #undef HAVE_FOPEN */
+
+/* Define to 1 if you have the `ftruncate' function. */
+#define HAVE_FTRUNCATE 1
+
+/* Define to 1 if you have the `fwrite' function. */
+/* #undef HAVE_FWRITE */
+
+/* Define to 1 if you have the `getaddrinfo' function. */
+/* #undef HAVE_GETADDRINFO */
+
+/* Define to 1 if you have the `getcwd' function. */
+/* #undef HAVE_GETCWD */
+
+/* Define to 1 if you have the `getenv' function. */
+/* #undef HAVE_GETENV */
+
+/* Define to 1 if you have the `getopt' function. */
+/* #undef HAVE_GETOPT */
+
+/* Define to 1 if you have the `getrusage' function. */
+/* #undef HAVE_GETRUSAGE */
+
+/* Define to 1 if you have the `gettimeofday' function. */
+/* #undef HAVE_GETTIMEOFDAY */
+
+/* Define to 1 if you have the `getuid' function. */
+/* #undef HAVE_GETUID */
+
+/* Define to 1 if building Hash access method. */
+/* #undef HAVE_HASH */
+
+/* Define to 1 if you have the `hstrerror' function. */
+/* #undef HAVE_HSTRERROR */
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+/* #undef HAVE_INTTYPES_H */
+
+/* Define to 1 if you have the `isspace' function. */
+/* #undef HAVE_ISALPHA */
+
+/* Define to 1 if you have the `isspace' function. */
+/* #undef HAVE_ISDIGIT */
+
+/* Define to 1 if you have the `isspace' function. */
+/* #undef HAVE_ISPRINT */
+
+/* Define to 1 if you have the `isspace' function. */
+/* #undef HAVE_ISSPACE */
+
+/* Define to 1 if you have the `localtime' function. */
+/* #undef HAVE_LOCALTIME */
+
+/* Define to 1 if you have the `memcmp' function. */
+#define HAVE_MEMCMP 1
+
+/* Define to 1 if you have the `memcpy' function. */
+#define HAVE_MEMCPY 1
+
+/* Define to 1 if you have the `memmove' function. */
+#define HAVE_MEMMOVE 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+/* #undef HAVE_MEMORY_H */
+
+/* Define to 1 if you have the `mlock' function. */
+/* #undef HAVE_MLOCK */
+
+/* Define to 1 if you have the `mmap' function. */
+/* #undef HAVE_MMAP */
+
+/* Define to 1 if you have the `mprotect' function. */
+/* #undef HAVE_MPROTECT */
+
+/* Define to 1 if you have the `munlock' function. */
+/* #undef HAVE_MUNLOCK */
+
+/* Define to 1 if you have the `munmap' function. */
+/* #undef HAVE_MUNMAP */
+
+/* Define to 1 to use the GCC compiler and 68K assembly language mutexes. */
+/* #undef HAVE_MUTEX_68K_GCC_ASSEMBLY */
+
+/* Define to 1 to use the AIX _check_lock mutexes. */
+/* #undef HAVE_MUTEX_AIX_CHECK_LOCK */
+
+/* Define to 1 to use the GCC compiler and Alpha assembly language mutexes. */
+/* #undef HAVE_MUTEX_ALPHA_GCC_ASSEMBLY */
+
+/* Define to 1 to use the GCC compiler and ARM assembly language mutexes. */
+/* #undef HAVE_MUTEX_ARM_GCC_ASSEMBLY */
+
+/* Define to 1 to use the Apple/Darwin _spin_lock_try mutexes. */
+/* #undef HAVE_MUTEX_DARWIN_SPIN_LOCK_TRY */
+
+/* Define to 1 to use the UNIX fcntl system call mutexes. */
+/* #undef HAVE_MUTEX_FCNTL */
+
+/* Define to 1 to use the GCC compiler and PaRisc assembly language mutexes.
+ */
+/* #undef HAVE_MUTEX_HPPA_GCC_ASSEMBLY */
+
+/* Define to 1 to use the msem_XXX mutexes on HP-UX. */
+/* #undef HAVE_MUTEX_HPPA_MSEM_INIT */
+
+/* Define to 1 to use test-and-set mutexes with blocking mutexes. */
+/* #undef HAVE_MUTEX_HYBRID */
+
+/* Define to 1 to use the GCC compiler and IA64 assembly language mutexes. */
+/* #undef HAVE_MUTEX_IA64_GCC_ASSEMBLY */
+
+/* Define to 1 to use the GCC compiler and MIPS assembly language mutexes. */
+/* #undef HAVE_MUTEX_MIPS_GCC_ASSEMBLY */
+
+/* Define to 1 to use the msem_XXX mutexes on systems other than HP-UX. */
+/* #undef HAVE_MUTEX_MSEM_INIT */
+
+/* Define to 1 to use the GCC compiler and PowerPC assembly language mutexes.
+ */
+/* #undef HAVE_MUTEX_PPC_GCC_ASSEMBLY */
+
+/* Define to 1 to use POSIX 1003.1 pthread_XXX mutexes. */
+/* #undef HAVE_MUTEX_PTHREADS */
+
+/* Define to 1 to use Reliant UNIX initspin mutexes. */
+/* #undef HAVE_MUTEX_RELIANTUNIX_INITSPIN */
+
+/* Define to 1 to use the IBM C compiler and S/390 assembly language mutexes.
+ */
+/* #undef HAVE_MUTEX_S390_CC_ASSEMBLY */
+
+/* Define to 1 to use the GCC compiler and S/390 assembly language mutexes. */
+/* #undef HAVE_MUTEX_S390_GCC_ASSEMBLY */
+
+/* Define to 1 to use the SCO compiler and x86 assembly language mutexes. */
+/* #undef HAVE_MUTEX_SCO_X86_CC_ASSEMBLY */
+
+/* Define to 1 to use the obsolete POSIX 1003.1 sema_XXX mutexes. */
+/* #undef HAVE_MUTEX_SEMA_INIT */
+
+/* Define to 1 to use the SGI XXX_lock mutexes. */
+/* #undef HAVE_MUTEX_SGI_INIT_LOCK */
+
+/* Define to 1 to use the Solaris _lock_XXX mutexes. */
+/* #undef HAVE_MUTEX_SOLARIS_LOCK_TRY */
+
+/* Define to 1 to use the Solaris lwp threads mutexes. */
+/* #undef HAVE_MUTEX_SOLARIS_LWP */
+
+/* Define to 1 to use the GCC compiler and Sparc assembly language mutexes. */
+/* #undef HAVE_MUTEX_SPARC_GCC_ASSEMBLY */
+
+/* Define to 1 if the Berkeley DB library should support mutexes. */
+/* #undef HAVE_MUTEX_SUPPORT */
+
+/* Define to 1 if mutexes hold system resources. */
+/* #undef HAVE_MUTEX_SYSTEM_RESOURCES */
+
+/* Define to 1 to configure mutexes intra-process only. */
+/* #undef HAVE_MUTEX_THREAD_ONLY */
+
+/* Define to 1 to use the CC compiler and Tru64 assembly language mutexes. */
+/* #undef HAVE_MUTEX_TRU64_CC_ASSEMBLY */
+
+/* Define to 1 to use the UNIX International mutexes. */
+/* #undef HAVE_MUTEX_UI_THREADS */
+
+/* Define to 1 to use the UTS compiler and assembly language mutexes. */
+/* #undef HAVE_MUTEX_UTS_CC_ASSEMBLY */
+
+/* Define to 1 to use VMS mutexes. */
+/* #undef HAVE_MUTEX_VMS */
+
+/* Define to 1 to use VxWorks mutexes. */
+/* #undef HAVE_MUTEX_VXWORKS */
+
+/* Define to 1 to use the MSVC compiler and Windows mutexes. */
+/* #undef HAVE_MUTEX_WIN32 */
+
+/* Define to 1 to use the GCC compiler and Windows mutexes. */
+/* #undef HAVE_MUTEX_WIN32_GCC */
+
+/* Define to 1 to use the GCC compiler and 64-bit x86 assembly language
+ mutexes. */
+/* #undef HAVE_MUTEX_X86_64_GCC_ASSEMBLY */
+
+/* Define to 1 to use the GCC compiler and 32-bit x86 assembly language
+ mutexes. */
+/* #undef HAVE_MUTEX_X86_GCC_ASSEMBLY */
+
+/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
+/* #undef HAVE_NDIR_H */
+
+/* Define to 1 if you have the O_DIRECT flag. */
+/* #undef HAVE_O_DIRECT */
+
+/* Define to 1 if you have the `pread' function. */
+/* #undef HAVE_PREAD */
+
+/* Define to 1 if you have the `printf' function. */
+/* #undef HAVE_PRINTF */
+
+/* Define to 1 if you have the `pstat_getdynamic' function. */
+/* #undef HAVE_PSTAT_GETDYNAMIC */
+
+/* Define to 1 to configure Berkeley DB for POSIX pthread API. */
+/* #undef HAVE_PTHREAD_API */
+
+/* Define to 1 if you have the `pthread_yield' function. */
+/* #undef HAVE_PTHREAD_YIELD */
+
+/* Define to 1 if you have the `pwrite' function. */
+/* #undef HAVE_PWRITE */
+
+/* Define to 1 if building on QNX. */
+/* #undef HAVE_QNX */
+
+/* Define to 1 if you have the `qsort' function. */
+/* #undef HAVE_QSORT */
+
+/* Define to 1 if building Queue access method. */
+/* #undef HAVE_QUEUE */
+
+/* Define to 1 if you have the `raise' function. */
+/* #undef HAVE_RAISE */
+
+/* Define to 1 if you have the `rand' function. */
+/* #undef HAVE_RAND */
+
+/* Define to 1 if building replication support. */
+/* #undef HAVE_REPLICATION */
+
+/* Define to 1 if building the Berkeley DB replication framework. */
+/* #undef HAVE_REPLICATION_THREADS */
+
+/* Define to 1 if building RPC client/server. */
+/* #undef HAVE_RPC */
+
+/* Define to 1 if building on S60. */
+/* #undef HAVE_S60 */
+
+/* Define to 1 if you have the `sched_yield' function. */
+/* #undef HAVE_SCHED_YIELD */
+
+/* Define to 1 if you have the `select' function. */
+/* #undef HAVE_SELECT */
+
+/* Define to 1 if you have the `shmget' function. */
+/* #undef HAVE_SHMGET */
+
+/* Define to 1 if you have the `sigaction' function. */
+/* #undef HAVE_SIGACTION */
+
+/* Define to 1 if thread identifier type db_threadid_t is integral. */
+/* #undef HAVE_SIMPLE_THREAD_TYPE */
+
+/* Define to 1 if you have the `snprintf' function. */
+#define HAVE_SNPRINTF 1
+
+/* Define to 1 if you have the `stat' function. */
+/* #undef HAVE_STAT */
+
+/* Define to 1 if building statistics support. */
+/* #undef HAVE_STATISTICS */
+
+/* Define to 1 if you have the <stdint.h> header file. */
+/* #undef HAVE_STDINT_H */
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+/* #undef HAVE_STDLIB_H */
+
+/* Define to 1 if you have the `strcasecmp' function. */
+/* #undef HAVE_STRCASECMP */
+
+/* Define to 1 if you have the `strcat' function. */
+#define HAVE_STRCAT 1
+
+/* Define to 1 if you have the `strchr' function. */
+#define HAVE_STRCHR 1
+
+/* Define to 1 if you have the `strdup' function. */
+#define HAVE_STRDUP 1
+
+/* Define to 1 if you have the `strerror' function. */
+/* #undef HAVE_STRERROR */
+
+/* Define to 1 if you have the `strftime' function. */
+/* #undef HAVE_STRFTIME */
+
+/* Define to 1 if you have the <strings.h> header file. */
+/* #undef HAVE_STRINGS_H */
+
+/* Define to 1 if you have the <string.h> header file. */
+/* #undef HAVE_STRING_H */
+
+/* Define to 1 if you have the `strncat' function. */
+/* #undef HAVE_STRNCAT */
+
+/* Define to 1 if you have the `strncmp' function. */
+#define HAVE_STRNCMP 1
+
+/* Define to 1 if you have the `strrchr' function. */
+#define HAVE_STRRCHR 1
+
+/* Define to 1 if you have the `strsep' function. */
+/* #undef HAVE_STRSEP */
+
+/* Define to 1 if you have the `strtol' function. */
+/* #undef HAVE_STRTOL */
+
+/* Define to 1 if you have the `strtoul' function. */
+#define HAVE_STRTOUL 1
+
+/* Define to 1 if `st_blksize' is member of `struct stat'. */
+/* #undef HAVE_STRUCT_STAT_ST_BLKSIZE */
+
+/* Define to 1 if you have the `sysconf' function. */
+/* #undef HAVE_SYSCONF */
+
+/* Define to 1 if port includes files in the Berkeley DB source code. */
+/* #undef HAVE_SYSTEM_INCLUDE_FILES */
+
+/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
+ */
+/* #undef HAVE_SYS_DIR_H */
+
+/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
+ */
+/* #undef HAVE_SYS_NDIR_H */
+
+/* Define to 1 if you have the <sys/select.h> header file. */
+/* #undef HAVE_SYS_SELECT_H */
+
+/* Define to 1 if you have the <sys/socket.h> header file. */
+/* #undef HAVE_SYS_SOCKET_H */
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+/* #undef HAVE_SYS_STAT_H */
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+/* #undef HAVE_SYS_TIME_H */
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+/* #undef HAVE_SYS_TYPES_H 1*/
+
+/* Define to 1 if you have the `time' function. */
+/* #undef HAVE_TIME */
+
+/* Define to 1 if you have the <unistd.h> header file. */
+/* #undef HAVE_UNISTD_H */
+
+/* Define to 1 if unlink of file with open file descriptors will fail. */
+/* #undef HAVE_UNLINK_WITH_OPEN_FAILURE */
+
+/* Define to 1 if port includes historic database upgrade support. */
+/* #undef HAVE_UPGRADE_SUPPORT */
+
+/* Define to 1 if building access method verification support. */
+/* #undef HAVE_VERIFY */
+
+/* Define to 1 if you have the `vsnprintf' function. */
+#define HAVE_VSNPRINTF 1
+
+/* Define to 1 if building VxWorks. */
+/* #undef HAVE_VXWORKS */
+
+/* Define to 1 if you have the `yield' function. */
+/* #undef HAVE_YIELD */
+
+/* Define to 1 if you have the `_fstati64' function. */
+/* #undef HAVE__FSTATI64 1*/
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "support@sleepycat.com"
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "Berkeley DB"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "Berkeley DB __EDIT_DB_VERSION__"
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME "db-__EDIT_DB_VERSION__"
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "__EDIT_DB_VERSION__"
+
+/* The size of a `char', as computed by sizeof. */
+#define SIZEOF_CHAR 1
+
+/* The size of a `char *', as computed by sizeof. */
+#define SIZEOF_CHAR_P 4
+
+/* The size of a `int', as computed by sizeof. */
+#define SIZEOF_INT 4
+
+/* The size of a `long', as computed by sizeof. */
+#define SIZEOF_LONG 4
+
+/* The size of a `long long', as computed by sizeof. */
+/* #undef SIZEOF_LONG_LONG */
+
+/* The size of a `short', as computed by sizeof. */
+#define SIZEOF_SHORT 2
+
+/* The size of a `size_t', as computed by sizeof. */
+#define SIZEOF_SIZE_T 4
+
+/* The size of a `unsigned char', as computed by sizeof. */
+#define SIZEOF_UNSIGNED_CHAR 1
+
+/* The size of a `unsigned int', as computed by sizeof. */
+#define SIZEOF_UNSIGNED_INT 4
+
+/* The size of a `unsigned long', as computed by sizeof. */
+#define SIZEOF_UNSIGNED_LONG 4
+
+/* The size of a `unsigned long long', as computed by sizeof. */
+/* #undef SIZEOF_UNSIGNED_LONG_LONG */
+
+/* The size of a `unsigned short', as computed by sizeof. */
+#define SIZEOF_UNSIGNED_SHORT 2
+
+/* Define to 1 if the `S_IS*' macros in <sys/stat.h> do not work properly. */
+/* #undef STAT_MACROS_BROKEN */
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
+/* #undef TIME_WITH_SYS_TIME */
+
+/* Define to 1 to mask harmless uninitialized memory read/writes. */
+/* #undef UMRW */
+
+/* Number of bits in a file offset, on hosts where this is settable. */
+/* #undef _FILE_OFFSET_BITS */
+
+/* Define for large files, on AIX-style hosts. */
+/* #undef _LARGE_FILES */
+
+/* Define to empty if `const' does not conform to ANSI C. */
+/* #undef const */
+
+/* Define to `__inline__' or `__inline' if that's what the C compiler
+ calls it, or to nothing if 'inline' is not supported under any name. */
+#ifndef __cplusplus
+#define inline
+#endif
+
+/* type to use in place of socklen_t if not defined */
+/* #undef socklen_t */
diff --git a/db/dist/brew/brew_db.in b/db/dist/brew/brew_db.in
new file mode 100644
index 000000000..d9e156867
--- /dev/null
+++ b/db/dist/brew/brew_db.in
@@ -0,0 +1,150 @@
+/*-
+ * $Id: brew_db.in,v 1.5 2006/11/15 13:36:48 bostic Exp $
+ *
+ * The following provides the information necessary to build Berkeley DB
+ * on BREW.
+ */
+
+#include <AEEAppGen.h>
+#include <AEEShell.h>
+#include <AEEFile.h>
+#include <AEEStdLib.h>
+
+#include "errno.h"
+#include "db.h"
+#include "clib_port.h"
+
+/*
+ * BREW doesn't have stdio.
+ */
+#define EOF (-1) /* Declare stdio's EOF. */
+#define stderr ((IFile *)1) /* Flag to call DBGPRINTF. */
+#define stdout ((IFile *)1)
+
+/*
+ * POSIX time structure/function compatibility.
+ *
+ * !!!
+ * This is likely wrong, we should probably move all Berkeley DB time-specific
+ * functionality into os/.
+ */
+struct tm {
+ int tm_sec; /* seconds after the minute - [0,59] */
+ int tm_min; /* minutes after the hour - [0,59] */
+ int tm_hour; /* hours since midnight - [0,23] */
+ int tm_mday; /* day of the month - [1,31] */
+ int tm_mon; /* months since January - [0,11] */
+ int tm_year; /* years since 1900 */
+ int tm_wday; /* days since Sunday - [0,6] */
+ int tm_yday; /* days since January 1 - [0,365] */
+ int tm_isdst; /* daylight savings time flag */
+ /*
+ * We don't provide tm_zone or tm_gmtoff because BREW doesn't
+ * provide them.
+ */
+};
+
+/*
+* The ctime() function converts the time pointed to by clock, representing
+* time in seconds since the Epoch to local time in the form of a string.
+*
+* Berkeley DB uses POSIX time values internally.
+*
+* The POSIX time function returns seconds since the Epoch, which was
+* 1970/01/01 00:00:00 UTC.
+*
+* BREW's GETUTCSECONDS() returns the number of seconds since
+* 1980/01/06 00:00:00 UTC.
+*
+* To convert from BREW to POSIX, add the seconds between 1970 and 1980 plus
+* 6 more days.
+*/
+#define BREW_EPOCH_OFFSET (315964800L)
+
+/*
+ * Map ANSI C library functions to BREW specific APIs.
+ */
+#define atoi(a) ATOI(a)
+#define free(a) FREE(a)
+#define malloc(a) MALLOC(a)
+#define memcmp(a, b, c) MEMCMP(a, b, c)
+#define memmove(a, b, c) MEMMOVE(a, b, c)
+#define memset(a, b, c) MEMSET(a, b, c)
+#define realloc(a, b) REALLOC(a, b)
+#define snprintf SNPRINTF
+#define sprintf SPRINTF
+#define strcat(a, b) STRCAT(a, b)
+#define strchr(a, b) STRCHR(a, b)
+#define strcmp(a, b) STRCMP(a, b)
+#define strcpy(a, b) STRCPY(a, b)
+#define strdup(a) STRDUP(a)
+#define strlen(a) STRLEN(a)
+#define strncmp(a, b, c) STRNCMP(a, b, c)
+#define strncpy(a, b, c) STRNCPY(a, b, c)
+#define strrchr(a, b) STRRCHR(a, b)
+#define strtoul(a, b, c) STRTOUL(a, b, c)
+#define vsnprintf(a, b, c, d) VSNPRINTF(a, b, c, d)
+
+/*
+ * !!!
+ * Don't #define memcpy to MEMCPY, even though it exists, because that results
+ * in a C pre-processor loop and compile failure.
+ *
+ * Don't #define memcpy to MEMMOVE directly, that results in failure as well.
+ */
+#define memcpy memmove
+
+/*
+ * BREW does not have concept of 'sync'.
+ *
+ * It depends on the implementation of the BREW on various platforms, but
+ * Mobilus confirms the version of BREW that ships to North America in 3G
+ * models has sync features guaranteeing safe physical writes whenever a
+ * write is performed using BREW API. Therefore, the issue is not on the
+ * applications running top of BREW, but the implementation of BREW itself
+ * that has to be checked in order to provide durability.
+ */
+#define __os_fsync(a, b) (0)
+#define fflush(a) (0)
+
+/*
+ * The ANSI C library functions for which we wrote local versions.
+ */
+int fclose(FILE *);
+int fgetc(FILE *);
+char *fgets(char *, int, FILE *);
+FILE *fopen(const char *, const char *);
+size_t fwrite(const void *, size_t, size_t, FILE *);
+char *getcwd(char *, size_t);
+struct tm *localtime(const time_t *);
+time_t time(time_t *);
+
+/*
+ * FILE_MANAGER_CREATE --
+ * Instantiate file manager instance.
+ */
+#define FILE_MANAGER_CREATE(dbenv, mgr, ret) do { \
+ AEEApplet *__app = (AEEApplet *)GETAPPINSTANCE(); \
+ int __ret; \
+ if ((__ret = ISHELL_CreateInstance(__app->m_pIShell, \
+ AEECLSID_FILEMGR, (void **)&(mgr))) == SUCCESS) \
+ ret = 0; \
+ else { \
+ __db_syserr(dbenv, __ret, "ISHELL_CreateInstance"); \
+ ret = __os_posix_err(__ret); \
+ } \
+} while (0)
+
+/*
+ * FILE_MANAGER_ERR --
+ * Handle file manager method error.
+ */
+#define FILE_MANAGER_ERR(dbenv, mgr, name, op, ret) do { \
+ int __ret; \
+ __ret = IFILEMGR_GetLastError(mgr); \
+ if ((name) == NULL) \
+ __db_syserr(dbenv, __ret, "%s", op); \
+ else \
+ __db_syserr(dbenv, __ret, "%s: %s", name, op); \
+ (ret) = __os_posix_err(__ret); \
+} while (0)
diff --git a/db/dist/brew/brew_make.in b/db/dist/brew/brew_make.in
new file mode 100644
index 000000000..462c66640
--- /dev/null
+++ b/db/dist/brew/brew_make.in
@@ -0,0 +1,25 @@
+###################################################
+# EVERYTHING IN THIS FILE HEADER COPIED FROM dist/brew_makefile.in
+##################################################
+CC= cc
+CFLAGS= -c -g -W -Wall -Wpointer-arith -Wmissing-prototypes \
+ -I. -I.. -DDIAGNOSTIC
+
+.c.o:
+ $(CC) $(CFLAGS) $< -o $@
+
+a: t
+
+t: t.c libdb.a
+ $(CC) t.c -o t libdb.a
+
+t.c:
+ echo '#include <sys/types.h>' > $@
+ echo '#include <stdio.h>' >> $@
+ echo '#define AEEApplet char' >> $@
+ echo '#include "db.h"' >> $@
+ echo 'int main() {' >> $@
+ echo ' DB_ENV *dbenv; db_env_create(&dbenv, 0); return (0); }' >> $@
+
+realclean distclean clean:
+ rm -f mklog t t.c tmp.c libdb.a *.o
diff --git a/db/dist/brew/brew_posix.h b/db/dist/brew/brew_posix.h
new file mode 100644
index 000000000..225ae4251
--- /dev/null
+++ b/db/dist/brew/brew_posix.h
@@ -0,0 +1,103 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 2005,2007 Oracle. All rights reserved.
+ *
+ * $Id: brew_posix.h,v 1.4 2007/05/17 15:15:08 bostic Exp $
+ */
+
+typedef void *AEEAppInfo;
+typedef void *AEECLSID;
+typedef void *IFileMgr;
+typedef void *IShell;
+
+typedef int FileSeekType;
+typedef int OpenFileMode;
+typedef int boolean;
+
+typedef struct {
+ IShell *m_pIShell;
+} AEEApplet;
+
+typedef struct {
+ unsigned int attrib;
+ unsigned int dwSize;
+ char *szName;
+} FileInfo;
+
+typedef struct {
+ int wSecond;
+ int wMinute;
+ int wHour;
+ int wDay;
+ int wWeekDay;
+ int wMonth;
+ int wYear;
+} JulianType;
+
+#define AECHAR char
+#define AEECLSID_FILEMGR (1)
+#define BREW_EPOCH_OFFSET (1)
+#define DBGPRINTF printf
+#define FILE_MANAGER_CREATE(a, b, c) (b = (IFileMgr *)a, c = 0)
+#define FILE_MANAGER_ERR(a, b, c, d, e) (b = (IFileMgr *)a, e = 0)
+#define FLOAT_TO_WSTR(a, b, c) (a = c)
+#define GETAPPINSTANCE() (NULL)
+#define GETJULIANDATE(a, b)
+#define GETTIMESECONDS() (0)
+#define GETUTCSECONDS() (0)
+#define IFILEMGR_EnumInit(a, b, c) (b = b, 1)
+#define IFILEMGR_EnumNext(a, b) (1)
+#define IFILEMGR_GetInfo(a, b, c) (1)
+#define IFILEMGR_GetLastError(a) (1)
+#define IFILEMGR_MkDir(a, b) (b = b, 1)
+#define IFILEMGR_OpenFile(a, b, c) (NULL)
+#define IFILEMGR_Release(a) (a = a)
+#define IFILEMGR_Remove(a, b) (b = b, 1)
+#define IFILEMGR_Rename(a, b, c) (a = a, b = b, c = c, 0)
+#define IFILEMGR_ResolvePath(a, b, c, d) (1)
+#define IFILEMGR_Test(a, b) (b = b, 1)
+#define IFILE_GetInfo(a, b) (a = a, 1)
+#define IFILE_Read(a, b, c) (a = a, 1)
+#define IFILE_Release(a) (a = a)
+#define IFILE_Seek(a, b, c) (1)
+#define IFILE_Truncate(a, b) (a = a, 1)
+#define IFILE_Write(a, b, c) (a = a, 1)
+#define ISHELL_ActiveApplet(a) (NULL)
+#define ISHELL_CloseApplet(a, b)
+#define ISHELL_CreateInstance(a, b, c) (1)
+#define ISHELL_QueryClass(a, b, c) (*c = NULL, 1)
+#define JULIANTOSECONDS(a) (1)
+#define LOCALTIMEOFFSET(a) (1)
+#define MEMCPY(a, b, c) (NULL)
+#define MSLEEP(a)
+#define WSTR_TO_STR(a, b, c) strncpy(b, a, c)
+#define __os_fsync(a, b) (0)
+
+#define SUCCESS (0)
+#define EFAILED (1)
+
+#define _FA_DIR (1)
+#define _OFM_APPEND (1)
+#define _OFM_CREATE (1)
+#define _OFM_READ (1)
+#define _OFM_READWRITE (1)
+#define _SEEK_CURRENT (1)
+#define _SEEK_END (1)
+#define _SEEK_START (1)
+
+#define EBADFILENAME (1)
+#define EBADSEEKPOS (2)
+#define EDIRNOEXISTS (3)
+#define EDIRNOTEMPTY (4)
+#define EFILEEOF (5)
+#define EFILEEXISTS (6)
+#define EFILENOEXISTS (7)
+#define EFILEOPEN (8)
+#define EFSFULL (9)
+#define EINVALIDOPERATION (10)
+#define ENOMEDIA (11)
+#define ENOMEMORY (12)
+#define EOUTOFNODES (13)
+
+#define static
diff --git a/db/dist/build/chk.code b/db/dist/build/chk.code
deleted file mode 100644
index e88fcff15..000000000
--- a/db/dist/build/chk.code
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/bin/sh -
-#
-# Id: chk.code,v 1.1 2001/05/08 15:07:05 bostic Exp
-#
-# Check to make sure that the code samples in the documents build.
-
-# Run from the top-level directory.
-[ -f db_config.h ] || {
- echo 'chk.code must be run from a build directory.'
- exit 1
-}
-
-t1=/tmp/__1
-
-find ../docs_src -name '*.cs' > ${t1}
-
-for i in `cat ${t1}`; do
- echo "$i ..."
- sed -e 's/m4_include(\(.*\))/#include <\1>/g' \
- -e 's/m4_[a-z]*[(\[)]*//g' \
- -e 's/(\[//g' \
- -e '/argv/!s/])//g' \
- -e 's/dnl//g' \
- -e 's/__GT__/>/g' \
- -e 's/__LB__/[/g' \
- -e 's/__LT__/</g' \
- -e 's/__RB__/]/g' < $i > t.c
- if cc -Wall -I. t.c libdb.a -o t; then
- :
- else
- exit 1
- fi
-done
-
-rm -f ${t1}
diff --git a/db/dist/build/chk.def b/db/dist/build/chk.def
deleted file mode 100755
index abd12b839..000000000
--- a/db/dist/build/chk.def
+++ /dev/null
@@ -1,50 +0,0 @@
-#!/bin/sh -
-#
-# $Id: chk.def,v 1.4 2000/12/12 18:20:59 bostic Exp $
-#
-# Check to make sure we haven't forgotten to add any interfaces
-# to the Win32 libdb.def file.
-
-# Run from the top-level directory.
-[ -f db_config.h ] && cd ..
-
-f=build_win32/libdb.def
-t1=/tmp/__1
-t2=/tmp/__2
-
-sed '/; /d' $f |
- egrep @ |
- awk '{print $1}' |
- sed -e '/db_xa_switch/d' \
- -e '/^__/d' -e '/^;/d' |
- sort > ${t1}
-
-egrep __P include/db.src |
- sed '/^[a-z]/!d' |
- awk '{print $2}' |
- sed 's/^\*//' |
- sed '/^__/d' | sort > ${t2}
-
-if cmp -s ${t1} ${t2} ; then
- :
-else
- echo "<<< libdb.def"
- echo ">>> DB include files"
- diff ${t1} ${t2}
-fi
-
-# Check to make sure we don't have any extras in the libdb.def file.
-sed '/; /d' $f |
- egrep @ |
- awk '{print $1}' |
- sed -e '/__db_global_values/d' > ${t1}
-
-for i in `cat ${t1}`; do
- if egrep $i */*.c > /dev/null; then
- :
- else
- echo "$f: $i not found in DB sources"
- fi
-done
-
-rm -f ${t1} ${t2}
diff --git a/db/dist/build/chk.define b/db/dist/build/chk.define
deleted file mode 100755
index 9e2aa0db4..000000000
--- a/db/dist/build/chk.define
+++ /dev/null
@@ -1,55 +0,0 @@
-#!/bin/sh -
-#
-# $Id: chk.define,v 1.8 2000/12/12 18:20:59 bostic Exp $
-#
-# Check to make sure that all #defines are actually used.
-
-# Run from the top-level directory.
-[ -f db_config.h ] && cd ..
-
-t1=/tmp/__1
-
-egrep '^#define' include/*.h |
- sed -e '/db_185.h/d' -e '/xa.h/d' |
- awk '{print $2}' |
- sed -e '/^B_DELETE/d' \
- -e '/^B_MAX/d' \
- -e '/^CIRCLEQ/d' \
- -e '/^DB_RO_ACCESS/d' \
- -e '/^DEFINE_DB_CLASS/d' \
- -e '/^LIST/d' \
- -e '/^LOG_OP/d' \
- -e '/^MINFILL/d' \
- -e '/^MUTEX_FIELDS/d' \
- -e '/^NCACHED2X/d' \
- -e '/^NCACHED30/d' \
- -e '/^PAIR_MASK/d' \
- -e '/^POWER_OF_TWO/d' \
- -e '/^P_16_COPY/d' \
- -e '/^P_32_COPY/d' \
- -e '/^P_32_SWAP/d' \
- -e '/^SH_CIRCLEQ/d' \
- -e '/^SH_LIST/d' \
- -e '/^SH_TAILQ/d' \
- -e '/^TAILQ/d' \
- -e '/UNUSED/d' \
- -e '/^WRAPPED_CLASS/d' \
- -e '/^XA_$/d' \
- -e '/^_DB_SERVER_H_RPCGEN/d' \
- -e '/_AUTO_H$/d' \
- -e '/_H_$/d' \
- -e '/ext_h_/d' \
- -e '/^i_/d' \
- -e 's/(.*//' | sort > ${t1}
-
-for i in `cat ${t1}`; do
- if egrep -w $i */*.c */*.cpp > /dev/null; then
- :;
- else
- f=`egrep -l $i include/*.h |
- sed 's;include/;;' | tr -s "[:space:]" " "`
- echo "$i: $f"
- fi
-done | sort +1
-
-rm -f ${t1}
diff --git a/db/dist/build/chk.offt b/db/dist/build/chk.offt
deleted file mode 100755
index ea7f0b914..000000000
--- a/db/dist/build/chk.offt
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/sh -
-#
-# $Id: chk.offt,v 1.3 2000/12/12 18:20:59 bostic Exp $
-#
-# Make sure that no off_t's have snuck into the release.
-
-# Run from the top-level directory.
-[ -f db_config.h ] && cd ..
-
-egrep -w off_t */*.[ch] |
-sed -e "/#undef off_t/d" \
- -e "/mp_fopen.c:.*can't use off_t's here/d" \
- -e "/mp_fopen.c:.*size or type off_t's or/d" \
- -e "/mp_fopen.c:.*where an off_t is 32-bits/d" \
- -e "/os_map.c:.*(off_t)0))/d" \
- -e "/os_rw.c:.*(off_t)db_iop->pgno/d" \
- -e "/os_seek.c:.*off_t offset;/d" \
- -e "/os_seek.c:.*offset = /d" \
- -e "/test_vxworks\/vx_mutex.c:/d"
diff --git a/db/dist/build/chk.proto b/db/dist/build/chk.proto
deleted file mode 100755
index 8ebfae809..000000000
--- a/db/dist/build/chk.proto
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/bin/sh -
-#
-# Id: chk.proto,v 1.3 2001/05/05 14:48:11 bostic Exp
-#
-# Check to make sure that prototypes are actually needed.
-
-# Run from the top-level directory.
-[ -f db_config.h ] && cd ..
-
-t1=/tmp/__1
-
-egrep '__P' include_auto/*.h |
- sed -e 's/[ ][ ]*__P.*//' \
- -e 's/^.*[ *]//' \
- -e '/__db_cprint/d' \
- -e '/__db_lprint/d' \
- -e '/__db_noop_log/d' \
- -e '/__db_prnpage/d' \
- -e '/__db_txnlist_print/d' \
- -e '/__ham_func2/d' \
- -e '/__ham_func3/d' \
- -e '/_print$/d' \
- -e '/_read$/d' > ${t1}
-
-for i in `cat ${t1}`; do
- c=`egrep -low $i include/*.in include/*.h */*.c */*.cpp | wc -l`
- echo "$i: $c"
-done | egrep ' 1$'
-
-rm -f ${t1}
diff --git a/db/dist/build/chk.srcfiles b/db/dist/build/chk.srcfiles
deleted file mode 100755
index cfd6f955e..000000000
--- a/db/dist/build/chk.srcfiles
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/bin/sh -
-#
-# $Id: chk.srcfiles,v 1.3 2000/12/12 18:20:59 bostic Exp $
-#
-# Check to make sure we haven't forgotten to add any files to the list
-# of source files Win32 uses to build its dsp files.
-
-# Run from the top-level directory.
-[ -f db_config.h ] && cd ..
-
-f=dist/srcfiles.in
-t1=/tmp/__1
-t2=/tmp/__2
-
-sed -e '/^[ #]/d' \
- -e '/^$/d' < $f |
- awk '{print $1}' > ${t1}
-find . -type f |
- sed -e 's/^\.\///' |
- egrep '\.c$|\.cpp$|\.def$|\.rc$' |
- sed -e '/dist\/build\/chk.def/d' \
- -e '/perl.DB_File\/version.c/d' |
- sort > ${t2}
-
-cmp ${t1} ${t2} > /dev/null ||
-(echo "<<< srcfiles.in >>> existing files" && \
- diff ${t1} ${t2} | tee /tmp/_f)
-
-rm -f ${t1} ${t2}
diff --git a/db/dist/build/chk.str b/db/dist/build/chk.str
deleted file mode 100644
index f4a3129a6..000000000
--- a/db/dist/build/chk.str
+++ /dev/null
@@ -1,22 +0,0 @@
-# This sed script can be used to check spelling in quoted strings:
-#
-# sed -f /tmp/f/i */*.c */*.cpp | tee /tmp/_f | spell > /tmp/f/spell.out
-
-
-#!/bin/sh -
-#
-# Id: chk.str,v 1.1 2001/05/05 14:48:42 bostic Exp
-#
-# Check spelling in quoted strings.
-
-# Run from the top-level directory.
-[ -f db_config.h ] && cd ..
-
-sed -e '/^#include/d' \
- -e '/revid/d' \
- -e '/"/!d' \
- -e 's/^[^"]*//' \
- -e 's/%s/ /g' \
- -e 's/[^"]*$//' \
- -e 's/\\[nt]/ /g' */*.c */*.cpp | \
- tee /tmp/chk.str.orig | spell > /tmp/chk.str
diff --git a/db/dist/build/chk.tags b/db/dist/build/chk.tags
deleted file mode 100755
index fa67927e7..000000000
--- a/db/dist/build/chk.tags
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/bin/sh -
-#
-# $Id: chk.tags,v 1.5 2000/12/22 15:35:32 bostic Exp $
-#
-# Check to make sure we don't need any more symbolic links to tags files.
-
-# Run from the top-level directory.
-[ -f db_config.h ] && cd ..
-
-t1=/tmp/__1
-t2=/tmp/__2
-
-(ls -F | egrep / | sort |
- sed -e 's/\///' \
- -e '/^CVS$/d' \
- -e '/^build_vxworks$/d' \
- -e '/^build_win32$/d' \
- -e '/^docs$/d' \
- -e '/^docs.text$/d' \
- -e '/^docs_src$/d' \
- -e '/^docs_text$/d' \
- -e '/^java$/d' \
- -e '/^perl.BerkeleyDB$/d' \
- -e '/^perl.DB_File$/d' \
- -e '/^test$/d' \
- -e '/^test_purify$/d' \
- -e '/^test_thread$/d' \
- -e '/^test_vxworks$/d') > ${t1}
-
-(ls */tags | sed 's/\/tags$//' | sort) > ${t2}
-if diff ${t1} ${t2} > /dev/null; then
- :
-else
- echo "<<< source tree"
- echo ">>> tags files"
- diff ${t1} ${t2}
-fi
-
-rm -f ${t1} ${t2}
diff --git a/db/dist/build/script b/db/dist/build/script
deleted file mode 100644
index 8eef3099f..000000000
--- a/db/dist/build/script
+++ /dev/null
@@ -1,94 +0,0 @@
-#!/bin/sh -
-# $Id: script,v 1.21 2001/01/19 18:13:16 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
-
-# Update the release number.
-cd $D/dist
-vi RELEASE
-setenv VERSION \
-`sh -c '. RELEASE; echo $DB_VERSION_MAJOR.$DB_VERSION_MINOR.$DB_VERSION_PATCH'`
-echo "Version: $VERSION"
-
-# Make sure the source tree is up-to-date, generate new support files, and
-# commit anything that's changed.
-cd $D && cvs -q update
-cd $D/dist && sh s_all
-cd $D && cvs -q commit
-
-# Build the documentation.
-cd $D/docs_src && make clean
-cd $D/docs_src && make
-cd $D/docs_src && make && make check
-
-# Copy a development tree into a release tree.
-setenv R /a/db-$VERSION
-rm -rf $R && mkdir -p $R
-cd $D && tar cf - \
-`cvs -q status | sed -n -e "/Repository/s;.*/CVSROOT/db/;;" -e "s/,v//p"` | \
-(cd $R && tar xpf -)
-
-# Fix symbolic links and permissions.
-cd $R/dist && sh s_perm
-cd $R/dist && sh s_symlink
-
-# Build the documents.
-cd $R/docs_src && make
-
-# Build a version.
-cd $R && rm -rf build_run && mkdir build_run
-cd $R/build_run && ~bostic/bin/dbconf && make >& mklog
-
-# Smoke test.
-./ex_access
-
-# Check the install
-make prefix=`pwd`/BDB install
-
-# Run distribution check scripts
-$R/dist/build/chk.def
-$R/dist/build/chk.define
-$R/dist/build/chk.offt
-$R/dist/build/chk.srcfiles
-$R/dist/build/chk.tags
-
-# Clean up the tree.
-cd $R && rm -rf build_run docs_src
-cd $R && rm -rf test_thread test_purify test_server test_vxworks test/TODO
-cd $R && rm -rf test/upgrade/databases && mkdir test/upgrade/databases
-
-# ACQUIRE ROOT PRIVILEGES
-cd $R && find . -type d | xargs chmod 775
-cd $R && find . -type f | xargs chmod 444
-cd $R/dist && sh s_perm
-chown -R 100.100 $R
-# DISCARD ROOT PRIVILEGES
-
-# Compare this release with the last one.
-set LR=3.1.X
-cd $R/.. && gzcat /a/releases/db-${LR}.tar.gz | tar xf -
-cd $R/../db-${LR} && find . | sort > /tmp/__OLD
-cd $R && find . | sort > /tmp/__NEW
-diff -c /tmp/__OLD /tmp/__NEW
-
-# Create the tar archive release.
-setenv T "$R/../db-$VERSION.tar.gz"
-cd $R/.. && tar cf - db-$VERSION | gzip --best > $T
-chmod 444 $T
-
-# Create the zip archive release.
-#
-# Remove symbolic links to tags files. They're large and we don't want to
-# store real symbolic links in the archive for portability reasons.
-# ACQUIRE ROOT PRIVILEGES
-cd $R && rm -f `find . -type l -name 'tags'`
-# DISCARD ROOT PRIVILEGES
-
-setenv T "$R/../db-$VERSION.zip"
-cd $R/.. && zip -r - db-$VERSION > $T
-chmod 444 $T
diff --git a/db/dist/buildrel b/db/dist/buildrel
index 1d2263cb5..67ee8cdae 100644
--- a/db/dist/buildrel
+++ b/db/dist/buildrel
@@ -1,17 +1,16 @@
-# $Id: buildrel,v 12.14 2006/09/20 01:12:33 bostic Exp $
+# $Id: buildrel,v 12.28 2007/07/13 14:36:54 bostic Exp $
#
# Build the distribution package.
#
# A set of commands intended to be cut and pasted into a csh window.
setenv D ~bostic/berkeleydb/db.rel
-setenv DBCONF "~bostic/bin/dbconf thread"
+setenv DBCONF "~db/bin/dbconf thread"
setenv TARGETDIR ~bostic/berkeleydb/
# Update the release number.
-cd $D/dist
-cvs -q update RELEASE
-vi RELEASE
+cd $D/dist && cvs -q update RELEASE && vi RELEASE
+setenv MINOR `sh -c '. RELEASE; echo $DB_VERSION_MINOR'`
setenv VERSION `sh -c '. RELEASE; echo $DB_VERSION'`
echo "Version: $VERSION"
@@ -21,39 +20,39 @@ cd $D && cvs -q update
# Build auto-generated files.
cd $D/dist && sh s_all
+# Update the change log patch number.
+cd $D/docs_src/ref/changelog && vi toc.so 4.$MINOR.html
+
# Commit all of the changes.
cd $D && cvs -q commit
# Copy a development tree into a release tree.
setenv R $TARGETDIR/db-$VERSION
-rm -rf $R && mkdir -p $R
-cd $D && cvs -q status | \
- grep "Repository revision" | \
- sed -e 's;.*CVSROOT/db/;;' \
- -e 's;.*CVSROOT/;;' \
- -e 's;,v$;;' | pax -rw $R/
-
-# Build the documentation, copy it into place.
-cd db_docs && cvs -q update
-cd db_docs && sh build $D clean && sh build $D |& sed '/.html$/d'
-cd je/docs_src && sh build db ../../db
-rm -rf $R/docs && cp -r $D/docs $R/docs
+rm -rf $R $R.tmp && mkdir $R.tmp
+cd $R.tmp && cvs -q co db > /dev/null && mv db $R && cd .. && rm -rf $R.tmp
+cd $R && find . -name CVS | xargs rm -rf
+
+# Build the C/C++/Java API documentation and Reference Guide.
+#
+# XXX
+# This command only builds the C/C++ API documentation and Reference Guide
+cd $R/docs_src && sh build clean && sh build |& sed '/.html$/d'
########################################
# PATCH RELEASE: starting point.
########################################
-# Fix symbolic links and permissions.
+# Create symbolic links and cscope output, fix permissions.
cd $R/dist && sh s_perm
+cd $R/dist && sh s_cscope
cd $R/dist && sh s_symlink
# Remove source directories we don't distribute.
-cd $R && rm -rf build_brew os_brew
-cd $R && rm -rf docs_src docs/api_java docs/api_c/pindex.src
+cd $R && rm -rf build_brew_x build_s60_x
cd $R && rm -rf java/src/com/sleepycat/xa
cd $R && rm -rf rpc_server/java
cd $R && rm -rf test/TODO test/upgrade test_perf test_purify
-cd $R && rm -rf test_rep test_server test_thread test_vxworks test_xa
+cd $R && rm -rf test_rep test_server test_vxworks
# Build a version and smoke test.
cd $R && rm -rf build_run && mkdir build_run
diff --git a/db/dist/clib_port.h b/db/dist/clib_port.h
deleted file mode 100644
index cfefbb37d..000000000
--- a/db/dist/clib_port.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Exit success/failure macros.
- */
-#ifndef HAVE_EXIT_SUCCESS
-#define EXIT_FAILURE 1
-#define EXIT_SUCCESS 0
-#endif
-
-/*
- * Don't step on the namespace. Other libraries may have their own
- * implementations of these functions, we don't want to use their
- * implementations or force them to use ours based on the load order.
- */
-#ifndef HAVE_ATOI
-#define atoi __db_Catoi
-#endif
-#ifndef HAVE_ATOL
-#define atol __db_Catol
-#endif
-#ifndef HAVE_GETADDRINFO
-#define freeaddrinfo(a) __db_Cfreeaddrinfo(a)
-#define getaddrinfo(a, b, c, d) __db_Cgetaddrinfo(a, b, c, d)
-#endif
-#ifndef HAVE_GETCWD
-#define getcwd __db_Cgetcwd
-#endif
-#ifndef HAVE_GETOPT
-#define getopt __db_Cgetopt
-#define optarg __db_Coptarg
-#define opterr __db_Copterr
-#define optind __db_Coptind
-#define optopt __db_Coptopt
-#define optreset __db_Coptreset
-#endif
-#ifndef HAVE_ISSPACE
-#define isspace __db_Cisspace
-#endif
-#ifndef HAVE_MEMCMP
-#define memcmp __db_Cmemcmp
-#endif
-#ifndef HAVE_MEMCPY
-#define memcpy __db_Cmemcpy
-#endif
-#ifndef HAVE_MEMMOVE
-#define memmove __db_Cmemmove
-#endif
-#ifndef HAVE_PRINTF
-#define printf __db_Cprintf
-#define fprintf __db_Cfprintf
-#endif
-#ifndef HAVE_RAISE
-#define raise __db_Craise
-#endif
-#ifndef HAVE_RAND
-#define rand __db_Crand
-#define srand __db_Csrand
-#endif
-#ifndef HAVE_SNPRINTF
-#define snprintf __db_Csnprintf
-#endif
-#ifndef HAVE_STRCASECMP
-#define strcasecmp __db_Cstrcasecmp
-#define strncasecmp __db_Cstrncasecmp
-#endif
-#ifndef HAVE_STRCAT
-#define strcat __db_Cstrcat
-#endif
-#ifndef HAVE_STRCHR
-#define strchr __db_Cstrchr
-#endif
-#ifndef HAVE_STRDUP
-#define strdup __db_Cstrdup
-#endif
-#ifndef HAVE_STRERROR
-#define strerror __db_Cstrerror
-#endif
-#ifndef HAVE_STRNCAT
-#define strncat __db_Cstrncat
-#endif
-#ifndef HAVE_STRNCMP
-#define strncmp __db_Cstrncmp
-#endif
-#ifndef HAVE_STRRCHR
-#define strrchr __db_Cstrrchr
-#endif
-#ifndef HAVE_STRSEP
-#define strsep __db_Cstrsep
-#endif
-#ifndef HAVE_STRTOL
-#define strtol __db_Cstrtol
-#endif
-#ifndef HAVE_STRTOUL
-#define strtoul __db_Cstrtoul
-#endif
-#ifndef HAVE_VSNPRINTF
-#define vsnprintf __db_Cvsnprintf
-#endif
diff --git a/db/dist/clib_port.in b/db/dist/clib_port.in
new file mode 100644
index 000000000..e8f87e5ea
--- /dev/null
+++ b/db/dist/clib_port.in
@@ -0,0 +1,205 @@
+/* DO NOT EDIT: automatically built from dist/clib_port.in. */
+/*
+ * Minimum/maximum values for various types.
+ */
+#ifndef UINT16_MAX /* Maximum 16-bit unsigned. */
+#define UINT16_MAX 65535
+#endif
+#ifndef UINT32_MAX /* Maximum 32-bit unsigned. */
+#define UINT32_MAX 4294967295U
+#endif
+
+#ifndef INT_MAX
+#if SIZEOF_INT == 4
+#define INT_MAX 2147483647
+#elif SIZEOF_INT == 8
+#define INT_MAX 9223372036854775807
+#endif
+#endif
+
+#ifndef INT_MIN /* minimum (signed) int value */
+#define INT_MIN (-INT_MAX-1)
+#endif
+
+#ifndef UINT_MAX /* maximum (signed) int value */
+#if SIZEOF_INT == 4
+#define UINT_MAX 4294967295U
+#elif SIZEOF_INT == 8
+#define UINT_MAX 18446744073709551615U
+#endif
+#endif
+
+#ifndef LONG_MAX /* maximum (signed) long value */
+#if SIZEOF_LONG == 4
+#define LONG_MAX 2147483647
+#elif SIZEOF_LONG == 8
+#define LONG_MAX 9223372036854775807L
+#endif
+#endif
+
+#ifndef LONG_MIN /* minimum (signed) long value */
+#define LONG_MIN (-LONG_MAX-1)
+#endif
+
+#ifndef ULONG_MAX /* maximum (unsigned) long value */
+#if SIZEOF_LONG == 4
+#define ULONG_MAX 4294967295U
+#elif SIZEOF_LONG == 8
+#define ULONG_MAX 18446744073709551615UL
+#endif
+#endif
+
+#if defined(HAVE_64BIT_TYPES)
+/*
+ * Override the system's 64-bit min/max constants. AIX's 32-bit compiler can
+ * handle 64-bit values, but the system's constants don't include the LL/ULL
+ * suffix, and so can't be compiled using the 32-bit compiler.
+ */
+#undef INT64_MAX
+#undef INT64_MIN
+#undef UINT64_MAX
+
+#ifdef DB_WIN32
+#define INT64_MAX _I64_MAX
+#define INT64_MIN _I64_MIN
+#define UINT64_MAX _UI64_MAX
+#else
+#define INT64_MAX 9223372036854775807LL
+#define INT64_MIN (-INT64_MAX-1)
+#define UINT64_MAX 18446744073709551615ULL
+#endif /* DB_WIN32 */
+
+@INT64_FMT@
+@UINT64_FMT@
+#endif /* HAVE_64BIT_TYPES */
+
+/*
+ * Exit success/failure macros.
+ */
+#ifndef HAVE_EXIT_SUCCESS
+#define EXIT_FAILURE 1
+#define EXIT_SUCCESS 0
+#endif
+
+/*
+ * Don't step on the namespace. Other libraries may have their own
+ * implementations of these functions, we don't want to use their
+ * implementations or force them to use ours based on the load order.
+ */
+#ifndef HAVE_ATOI
+#define atoi __db_Catoi
+#endif
+#ifndef HAVE_ATOL
+#define atol __db_Catol
+#endif
+#ifndef HAVE_FCLOSE
+#define fclose __db_Cfclose
+#endif
+#ifndef HAVE_FGETC
+#define fgetc __db_Cfgetc
+#endif
+#ifndef HAVE_FGETS
+#define fgets __db_Cfgets
+#endif
+#ifndef HAVE_FOPEN
+#define fopen __db_Cfopen
+#endif
+#ifndef HAVE_FWRITE
+#define fwrite __db_Cfwrite
+#endif
+#ifndef HAVE_GETADDRINFO
+#define freeaddrinfo(a) __db_Cfreeaddrinfo(a)
+#define getaddrinfo(a, b, c, d) __db_Cgetaddrinfo(a, b, c, d)
+#endif
+#ifndef HAVE_GETCWD
+#define getcwd __db_Cgetcwd
+#endif
+#ifndef HAVE_GETOPT
+#define getopt __db_Cgetopt
+#define optarg __db_Coptarg
+#define opterr __db_Copterr
+#define optind __db_Coptind
+#define optopt __db_Coptopt
+#define optreset __db_Coptreset
+#endif
+#ifndef HAVE_ISALPHA
+#define isalpha __db_Cisalpha
+#endif
+#ifndef HAVE_ISDIGIT
+#define isdigit __db_Cisdigit
+#endif
+#ifndef HAVE_ISPRINT
+#define isprint __db_Cisprint
+#endif
+#ifndef HAVE_ISSPACE
+#define isspace __db_Cisspace
+#endif
+#ifndef HAVE_LOCALTIME
+#define localtime __db_Clocaltime
+#endif
+#ifndef HAVE_MEMCMP
+#define memcmp __db_Cmemcmp
+#endif
+#ifndef HAVE_MEMCPY
+#define memcpy __db_Cmemcpy
+#endif
+#ifndef HAVE_MEMMOVE
+#define memmove __db_Cmemmove
+#endif
+#ifndef HAVE_PRINTF
+#define printf __db_Cprintf
+#define fprintf __db_Cfprintf
+#endif
+#ifndef HAVE_QSORT
+#define qsort __db_Cqsort
+#endif
+#ifndef HAVE_RAISE
+#define raise __db_Craise
+#endif
+#ifndef HAVE_RAND
+#define rand __db_Crand
+#define srand __db_Csrand
+#endif
+#ifndef HAVE_SNPRINTF
+#define snprintf __db_Csnprintf
+#endif
+#ifndef HAVE_STRCASECMP
+#define strcasecmp __db_Cstrcasecmp
+#define strncasecmp __db_Cstrncasecmp
+#endif
+#ifndef HAVE_STRCAT
+#define strcat __db_Cstrcat
+#endif
+#ifndef HAVE_STRCHR
+#define strchr __db_Cstrchr
+#endif
+#ifndef HAVE_STRDUP
+#define strdup __db_Cstrdup
+#endif
+#ifndef HAVE_STRERROR
+#define strerror __db_Cstrerror
+#endif
+#ifndef HAVE_STRNCAT
+#define strncat __db_Cstrncat
+#endif
+#ifndef HAVE_STRNCMP
+#define strncmp __db_Cstrncmp
+#endif
+#ifndef HAVE_STRRCHR
+#define strrchr __db_Cstrrchr
+#endif
+#ifndef HAVE_STRSEP
+#define strsep __db_Cstrsep
+#endif
+#ifndef HAVE_STRTOL
+#define strtol __db_Cstrtol
+#endif
+#ifndef HAVE_STRTOUL
+#define strtoul __db_Cstrtoul
+#endif
+#ifndef HAVE_TIME
+#define time __db_Ctime
+#endif
+#ifndef HAVE_VSNPRINTF
+#define vsnprintf __db_Cvsnprintf
+#endif
diff --git a/db/dist/config.guess b/db/dist/config.guess
index 396482d6c..951383e35 100755
--- a/db/dist/config.guess
+++ b/db/dist/config.guess
@@ -4,7 +4,7 @@
# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
# Inc.
-timestamp='2006-07-02'
+timestamp='2007-05-17'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@@ -161,6 +161,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
arm*) machine=arm-unknown ;;
sh3el) machine=shl-unknown ;;
sh3eb) machine=sh-unknown ;;
+ sh5el) machine=sh5le-unknown ;;
*) machine=${UNAME_MACHINE_ARCH}-unknown ;;
esac
# The Operating System including object format, if it has switched
@@ -329,7 +330,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit ;;
- i86pc:SunOS:5.*:*)
+ i86pc:SunOS:5.*:* | ix86xen:SunOS:5.*:*)
echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit ;;
sun4*:SunOS:6*:*)
@@ -780,7 +781,7 @@ EOF
i*:CYGWIN*:*)
echo ${UNAME_MACHINE}-pc-cygwin
exit ;;
- i*:MINGW*:*)
+ *:MINGW*:*)
echo ${UNAME_MACHINE}-pc-mingw32
exit ;;
i*:windows32*:*)
@@ -790,12 +791,15 @@ EOF
i*:PW*:*)
echo ${UNAME_MACHINE}-pc-pw32
exit ;;
- x86:Interix*:[3456]*)
- echo i586-pc-interix${UNAME_RELEASE}
- exit ;;
- EM64T:Interix*:[3456]*)
- echo x86_64-unknown-interix${UNAME_RELEASE}
- exit ;;
+ *:Interix*:[3456]*)
+ case ${UNAME_MACHINE} in
+ x86)
+ echo i586-pc-interix${UNAME_RELEASE}
+ exit ;;
+ EM64T | authenticamd)
+ echo x86_64-unknown-interix${UNAME_RELEASE}
+ exit ;;
+ esac ;;
[345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
echo i${UNAME_MACHINE}-pc-mks
exit ;;
@@ -950,6 +954,9 @@ EOF
x86_64:Linux:*:*)
echo x86_64-unknown-linux-gnu
exit ;;
+ xtensa:Linux:*:*)
+ echo xtensa-unknown-linux-gnu
+ exit ;;
i*86:Linux:*:*)
# The BFD linker knows what the default object file format is, so
# first see if it will tell us. cd to the root directory to prevent
@@ -1208,6 +1215,15 @@ EOF
SX-6:SUPER-UX:*:*)
echo sx6-nec-superux${UNAME_RELEASE}
exit ;;
+ SX-7:SUPER-UX:*:*)
+ echo sx7-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-8:SUPER-UX:*:*)
+ echo sx8-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-8R:SUPER-UX:*:*)
+ echo sx8r-nec-superux${UNAME_RELEASE}
+ exit ;;
Power*:Rhapsody:*:*)
echo powerpc-apple-rhapsody${UNAME_RELEASE}
exit ;;
diff --git a/db/dist/config.hin b/db/dist/config.hin
index d4a3f3138..f0c125bc0 100644
--- a/db/dist/config.hin
+++ b/db/dist/config.hin
@@ -33,6 +33,12 @@
/* Define to 1 if you have the `atol' function. */
#undef HAVE_ATOL
+/* Define to 1 if building on BREW. */
+#undef HAVE_BREW
+
+/* Define to 1 if building on BREW (SDK2). */
+#undef HAVE_BREW_SDK2
+
/* Define to 1 if you have the `clock_gettime' function. */
#undef HAVE_CLOCK_GETTIME
@@ -61,6 +67,9 @@
/* Define to 1 if you have the `fchmod' function. */
#undef HAVE_FCHMOD
+/* Define to 1 if you have the `fclose' function. */
+#undef HAVE_FCLOSE
+
/* Define to 1 if you have the `fcntl' function. */
#undef HAVE_FCNTL
@@ -70,12 +79,27 @@
/* Define to 1 if you have the `fdatasync' function. */
#undef HAVE_FDATASYNC
+/* Define to 1 if you have the `fgetc' function. */
+#undef HAVE_FGETC
+
+/* Define to 1 if you have the `fgets' function. */
+#undef HAVE_FGETS
+
/* Define to 1 if allocated filesystem blocks are not zeroed. */
#undef HAVE_FILESYSTEM_NOTZERO
+/* Define to 1 to build Berkeley DB with a fine-grained lock manager. */
+#undef HAVE_FINE_GRAINED_LOCK_MANAGER
+
+/* Define to 1 if you have the `fopen' function. */
+#undef HAVE_FOPEN
+
/* Define to 1 if you have the `ftruncate' function. */
#undef HAVE_FTRUNCATE
+/* Define to 1 if you have the `fwrite' function. */
+#undef HAVE_FWRITE
+
/* Define to 1 if you have the `getaddrinfo' function. */
#undef HAVE_GETADDRINFO
@@ -100,6 +124,9 @@
/* Define to 1 if building Hash access method. */
#undef HAVE_HASH
+/* Define to 1 if you have the `hstrerror' function. */
+#undef HAVE_HSTRERROR
+
/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H
@@ -115,6 +142,9 @@
/* Define to 1 if you have the `isspace' function. */
#undef HAVE_ISSPACE
+/* Define to 1 if you have the `localtime' function. */
+#undef HAVE_LOCALTIME
+
/* Define to 1 if you have the `memcmp' function. */
#undef HAVE_MEMCMP
@@ -167,6 +197,9 @@
/* Define to 1 to use the msem_XXX mutexes on HP-UX. */
#undef HAVE_MUTEX_HPPA_MSEM_INIT
+/* Define to 1 to use test-and-set mutexes with blocking mutexes. */
+#undef HAVE_MUTEX_HYBRID
+
/* Define to 1 to use the GCC compiler and IA64 assembly language mutexes. */
#undef HAVE_MUTEX_IA64_GCC_ASSEMBLY
@@ -211,6 +244,9 @@
/* Define to 1 to use the GCC compiler and Sparc assembly language mutexes. */
#undef HAVE_MUTEX_SPARC_GCC_ASSEMBLY
+/* Define to 1 if the Berkeley DB library should support mutexes. */
+#undef HAVE_MUTEX_SUPPORT
+
/* Define to 1 if mutexes hold system resources. */
#undef HAVE_MUTEX_SYSTEM_RESOURCES
@@ -238,10 +274,12 @@
/* Define to 1 to use the GCC compiler and Windows mutexes. */
#undef HAVE_MUTEX_WIN32_GCC
-/* Define to 1 to use the GCC compiler and amd64 assembly language mutexes. */
+/* Define to 1 to use the GCC compiler and 64-bit x86 assembly language
+ mutexes. */
#undef HAVE_MUTEX_X86_64_GCC_ASSEMBLY
-/* Define to 1 to use the GCC compiler and x86 assembly language mutexes. */
+/* Define to 1 to use the GCC compiler and 32-bit x86 assembly language
+ mutexes. */
#undef HAVE_MUTEX_X86_GCC_ASSEMBLY
/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
@@ -271,6 +309,9 @@
/* Define to 1 if building on QNX. */
#undef HAVE_QNX
+/* Define to 1 if you have the `qsort' function. */
+#undef HAVE_QSORT
+
/* Define to 1 if building Queue access method. */
#undef HAVE_QUEUE
@@ -289,6 +330,9 @@
/* Define to 1 if building RPC client/server. */
#undef HAVE_RPC
+/* Define to 1 if building on S60. */
+#undef HAVE_S60
+
/* Define to 1 if you have the `sched_yield' function. */
#undef HAVE_SCHED_YIELD
@@ -367,13 +411,13 @@
/* Define to 1 if you have the `sysconf' function. */
#undef HAVE_SYSCONF
+/* Define to 1 if port includes files in the Berkeley DB source code. */
+#undef HAVE_SYSTEM_INCLUDE_FILES
+
/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
*/
#undef HAVE_SYS_DIR_H
-/* Define to 1 if you have the <sys/fcntl.h> header file. */
-#undef HAVE_SYS_FCNTL_H
-
/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
*/
#undef HAVE_SYS_NDIR_H
@@ -381,6 +425,9 @@
/* Define to 1 if you have the <sys/select.h> header file. */
#undef HAVE_SYS_SELECT_H
+/* Define to 1 if you have the <sys/socket.h> header file. */
+#undef HAVE_SYS_SOCKET_H
+
/* Define to 1 if you have the <sys/stat.h> header file. */
#undef HAVE_SYS_STAT_H
@@ -390,19 +437,25 @@
/* Define to 1 if you have the <sys/types.h> header file. */
#undef HAVE_SYS_TYPES_H
+/* Define to 1 if you have the `time' function. */
+#undef HAVE_TIME
+
/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H
/* Define to 1 if unlink of file with open file descriptors will fail. */
#undef HAVE_UNLINK_WITH_OPEN_FAILURE
+/* Define to 1 if port includes historic database upgrade support. */
+#undef HAVE_UPGRADE_SUPPORT
+
/* Define to 1 if building access method verification support. */
#undef HAVE_VERIFY
/* Define to 1 if you have the `vsnprintf' function. */
#undef HAVE_VSNPRINTF
-/* Define to 1 if building VxWorks. */
+/* Define to 1 if building on VxWorks. */
#undef HAVE_VXWORKS
/* Define to 1 if you have the `yield' function. */
@@ -483,8 +536,11 @@
/* Define to empty if `const' does not conform to ANSI C. */
#undef const
-#include "clib_port.h"
-
-#ifdef DB_WIN32
-#include "win_db.h"
+/* Define to `__inline__' or `__inline' if that's what the C compiler
+ calls it, or to nothing if 'inline' is not supported under any name. */
+#ifndef __cplusplus
+#undef inline
#endif
+
+/* type to use in place of socklen_t if not defined */
+#undef socklen_t
diff --git a/db/dist/config.sub b/db/dist/config.sub
index 53954dbe9..c060f4483 100755
--- a/db/dist/config.sub
+++ b/db/dist/config.sub
@@ -4,7 +4,7 @@
# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
# Inc.
-timestamp='2006-08-14'
+timestamp='2007-04-29'
# This file is (in principle) common to ALL GNU software.
# The presence of a machine in this file suggests that SOME GNU software
@@ -245,12 +245,12 @@ case $basic_machine in
| bfin \
| c4x | clipper \
| d10v | d30v | dlx | dsp16xx \
- | fr30 | frv \
+ | fido | fr30 | frv \
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
| i370 | i860 | i960 | ia64 \
| ip2k | iq2000 \
| m32c | m32r | m32rle | m68000 | m68k | m88k \
- | maxq | mb | microblaze | mcore \
+ | maxq | mb | microblaze | mcore | mep \
| mips | mipsbe | mipseb | mipsel | mipsle \
| mips16 \
| mips64 | mips64el \
@@ -276,6 +276,7 @@ case $basic_machine in
| pdp10 | pdp11 | pj | pjl \
| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
| pyramid \
+ | score \
| sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
| sh64 | sh64le \
| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
@@ -323,7 +324,7 @@ case $basic_machine in
| clipper-* | craynv-* | cydra-* \
| d10v-* | d30v-* | dlx-* \
| elxsi-* \
- | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
+ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
| h8300-* | h8500-* \
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
| i*86-* | i860-* | i960-* | ia64-* \
@@ -682,6 +683,10 @@ case $basic_machine in
basic_machine=i386-pc
os=-mingw32
;;
+ mingw32ce)
+ basic_machine=arm-unknown
+ os=-mingw32ce
+ ;;
miniframe)
basic_machine=m68000-convergent
;;
@@ -924,6 +929,9 @@ case $basic_machine in
basic_machine=sh-hitachi
os=-hms
;;
+ sh5el)
+ basic_machine=sh5le-unknown
+ ;;
sh64)
basic_machine=sh64-unknown
;;
@@ -1218,7 +1226,7 @@ case $os in
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
| -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
- | -skyos* | -haiku* | -rdos* | -toppers*)
+ | -skyos* | -haiku* | -rdos* | -toppers* | -drops*)
# Remember, each alternative MUST END IN *, to match a version number.
;;
-qnx*)
@@ -1370,6 +1378,9 @@ else
# system, and we'll never get to this point.
case $basic_machine in
+ score-*)
+ os=-elf
+ ;;
spu-*)
os=-elf
;;
@@ -1410,6 +1421,9 @@ case $basic_machine in
m68*-cisco)
os=-aout
;;
+ mep-*)
+ os=-elf
+ ;;
mips*-cisco)
os=-elf
;;
diff --git a/db/dist/configure b/db/dist/configure
index b7af6f85c..f3cc93240 100755
--- a/db/dist/configure
+++ b/db/dist/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.60 for Berkeley DB 4.5.20.
+# Generated by GNU Autoconf 2.61 for Berkeley DB 4.6.18.
#
# Report bugs to <Oracle Technology Network Berkeley DB forum>.
#
@@ -12,7 +12,8 @@
## M4sh Initialization. ##
## --------------------- ##
-# Be Bourne compatible
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
emulate sh
NULLCMD=:
@@ -21,10 +22,13 @@ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
alias -g '${1+"$@"}'='"$@"'
setopt NO_GLOB_SUBST
else
- case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+ case `(set -o) 2>/dev/null` in
+ *posix*) set -o posix ;;
+esac
+
fi
-BIN_SH=xpg4; export BIN_SH # for Tru64
-DUALCASE=1; export DUALCASE # for MKS sh
+
+
# PATH needs CR
@@ -217,7 +221,7 @@ test \$exitcode = 0) || { (exit 1); exit 1; }
else
as_candidate_shells=
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in /usr/bin/posix$PATH_SEPARATOR/bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
@@ -235,7 +239,6 @@ IFS=$as_save_IFS
# Try only shells that exist, to save several forks.
if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
{ ("$as_shell") 2> /dev/null <<\_ASEOF
-# Be Bourne compatible
if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
emulate sh
NULLCMD=:
@@ -244,10 +247,12 @@ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
alias -g '${1+"$@"}'='"$@"'
setopt NO_GLOB_SUBST
else
- case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+ case `(set -o) 2>/dev/null` in
+ *posix*) set -o posix ;;
+esac
+
fi
-BIN_SH=xpg4; export BIN_SH # for Tru64
-DUALCASE=1; export DUALCASE # for MKS sh
+
:
_ASEOF
@@ -255,7 +260,6 @@ _ASEOF
CONFIG_SHELL=$as_shell
as_have_required=yes
if { "$as_shell" 2> /dev/null <<\_ASEOF
-# Be Bourne compatible
if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
emulate sh
NULLCMD=:
@@ -264,10 +268,12 @@ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
alias -g '${1+"$@"}'='"$@"'
setopt NO_GLOB_SUBST
else
- case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+ case `(set -o) 2>/dev/null` in
+ *posix*) set -o posix ;;
+esac
+
fi
-BIN_SH=xpg4; export BIN_SH # for Tru64
-DUALCASE=1; export DUALCASE # for MKS sh
+
:
(as_func_return () {
@@ -514,19 +520,28 @@ else
as_mkdir_p=false
fi
-# Find out whether ``test -x'' works. Don't use a zero-byte file, as
-# systems may use methods other than mode bits to determine executability.
-cat >conf$$.file <<_ASEOF
-#! /bin/sh
-exit 0
-_ASEOF
-chmod +x conf$$.file
-if test -x conf$$.file >/dev/null 2>&1; then
- as_executable_p="test -x"
+if test -x / >/dev/null 2>&1; then
+ as_test_x='test -x'
else
- as_executable_p=:
+ if ls -dL / >/dev/null 2>&1; then
+ as_ls_L_option=L
+ else
+ as_ls_L_option=
+ fi
+ as_test_x='
+ eval sh -c '\''
+ if test -d "$1"; then
+ test -d "$1/.";
+ else
+ case $1 in
+ -*)set "./$1";;
+ esac;
+ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
+ ???[sx]*):;;*)false;;esac;fi
+ '\'' sh
+ '
fi
-rm -f conf$$.file
+as_executable_p=$as_test_x
# Sed expression to map a string onto a valid CPP name.
as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
@@ -712,46 +727,46 @@ SHELL=${CONFIG_SHELL-/bin/sh}
# Identity of this package.
PACKAGE_NAME='Berkeley DB'
-PACKAGE_TARNAME='db-4.5.20'
-PACKAGE_VERSION='4.5.20'
-PACKAGE_STRING='Berkeley DB 4.5.20'
+PACKAGE_TARNAME='db-4.6.18'
+PACKAGE_VERSION='4.6.18'
+PACKAGE_STRING='Berkeley DB 4.6.18'
PACKAGE_BUGREPORT='Oracle Technology Network Berkeley DB forum'
ac_unique_file="../db/db.c"
-ac_default_prefix=/usr/local/BerkeleyDB.4.5
+ac_default_prefix=/usr/local/BerkeleyDB.4.6
# Factoring default headers for most tests.
ac_includes_default="\
#include <stdio.h>
-#if HAVE_SYS_TYPES_H
+#ifdef HAVE_SYS_TYPES_H
# include <sys/types.h>
#endif
-#if HAVE_SYS_STAT_H
+#ifdef HAVE_SYS_STAT_H
# include <sys/stat.h>
#endif
-#if STDC_HEADERS
+#ifdef STDC_HEADERS
# include <stdlib.h>
# include <stddef.h>
#else
-# if HAVE_STDLIB_H
+# ifdef HAVE_STDLIB_H
# include <stdlib.h>
# endif
#endif
-#if HAVE_STRING_H
-# if !STDC_HEADERS && HAVE_MEMORY_H
+#ifdef HAVE_STRING_H
+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
# include <memory.h>
# endif
# include <string.h>
#endif
-#if HAVE_STRINGS_H
+#ifdef HAVE_STRINGS_H
# include <strings.h>
#endif
-#if HAVE_INTTYPES_H
+#ifdef HAVE_INTTYPES_H
# include <inttypes.h>
#endif
-#if HAVE_STDINT_H
+#ifdef HAVE_STDINT_H
# include <stdint.h>
#endif
-#if HAVE_UNISTD_H
+#ifdef HAVE_UNISTD_H
# include <unistd.h>
#endif"
@@ -853,17 +868,14 @@ DB_VERSION_MINOR
DB_VERSION_PATCH
DB_VERSION_STRING
DB_VERSION_UNIQUE_NAME
-AR
CHMOD
CP
KILL
LN
MKDIR
-RANLIB
RM
RPCGEN
db_cv_path_sh
-STRIP
INSTALL_PROGRAM
INSTALL_SCRIPT
INSTALL_DATA
@@ -880,6 +892,9 @@ GREP
EGREP
LN_S
ECHO
+AR
+RANLIB
+STRIP
CPP
F77
FFLAGS
@@ -906,8 +921,12 @@ u_int32_decl
int32_decl
u_int64_decl
int64_decl
-ssize_t_decl
+FILE_t_decl
+off_t_decl
pid_t_decl
+size_t_decl
+time_t_decl
+ssize_t_decl
uintmax_t_decl
uintptr_t_decl
thread_h_decl
@@ -929,6 +948,7 @@ target_alias
CC
CFLAGS
LDFLAGS
+LIBS
CPPFLAGS
CXX
CXXFLAGS
@@ -1042,10 +1062,10 @@ do
-disable-* | --disable-*)
ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
# Reject names that are not valid shell variable names.
- expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+ expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null &&
{ echo "$as_me: error: invalid feature name: $ac_feature" >&2
{ (exit 1); exit 1; }; }
- ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+ ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'`
eval enable_$ac_feature=no ;;
-docdir | --docdir | --docdi | --doc | --do)
@@ -1061,10 +1081,10 @@ do
-enable-* | --enable-*)
ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
# Reject names that are not valid shell variable names.
- expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+ expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null &&
{ echo "$as_me: error: invalid feature name: $ac_feature" >&2
{ (exit 1); exit 1; }; }
- ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+ ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'`
eval enable_$ac_feature=\$ac_optarg ;;
-exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
@@ -1258,19 +1278,19 @@ do
-with-* | --with-*)
ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
# Reject names that are not valid shell variable names.
- expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+ expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null &&
{ echo "$as_me: error: invalid package name: $ac_package" >&2
{ (exit 1); exit 1; }; }
- ac_package=`echo $ac_package| sed 's/-/_/g'`
+ ac_package=`echo $ac_package | sed 's/[-.]/_/g'`
eval with_$ac_package=\$ac_optarg ;;
-without-* | --without-*)
ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
# Reject names that are not valid shell variable names.
- expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+ expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null &&
{ echo "$as_me: error: invalid package name: $ac_package" >&2
{ (exit 1); exit 1; }; }
- ac_package=`echo $ac_package | sed 's/-/_/g'`
+ ac_package=`echo $ac_package | sed 's/[-.]/_/g'`
eval with_$ac_package=no ;;
--x)
@@ -1439,7 +1459,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures Berkeley DB 4.5.20 to adapt to many kinds of systems.
+\`configure' configures Berkeley DB 4.6.18 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1487,7 +1507,7 @@ Fine tuning of the installation directories:
--infodir=DIR info documentation [DATAROOTDIR/info]
--localedir=DIR locale-dependent data [DATAROOTDIR/locale]
--mandir=DIR man documentation [DATAROOTDIR/man]
- --docdir=DIR documentation root [DATAROOTDIR/doc/db-4.5.20]
+ --docdir=DIR documentation root [DATAROOTDIR/doc/db-4.6.18]
--htmldir=DIR html documentation [DOCDIR]
--dvidir=DIR dvi documentation [DOCDIR]
--pdfdir=DIR pdf documentation [DOCDIR]
@@ -1509,7 +1529,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of Berkeley DB 4.5.20:";;
+ short | recursive ) echo "Configuration of Berkeley DB 4.6.18:";;
esac
cat <<\_ACEOF
@@ -1519,6 +1539,7 @@ Optional Features:
--disable-bigfile Obsolete; use --disable-largefile instead.
--disable-cryptography Do not build database cryptography support.
--disable-hash Do not build Hash access method.
+ --disable-mutexsupport Do not build any mutex support.
--disable-queue Do not build Queue access method.
--disable-replication Do not build database replication support.
--disable-statistics Do not build statistics support.
@@ -1532,6 +1553,8 @@ Optional Features:
--enable-dump185 Build db_dump185(1) to dump 1.85 databases.
--enable-java Build Java API.
--enable-mingw Build Berkeley DB for MinGW.
+ --enable-fine_grained_lock_manager
+ Build Berkeley DB with a fine-grained lock manager.
--enable-o_direct Enable the O_DIRECT flag for direct I/O.
--enable-posixmutexes Force use of POSIX standard mutexes.
--enable-pthread_self Obsolete; use --enable-pthread_api instead.
@@ -1552,7 +1575,7 @@ Optional Features:
Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
- --with-mutex=MUTEX Selection of non-standard mutexes.
+ --with-mutex=MUTEX Select non-default mutex implementation.
--with-mutexalign=ALIGNMENT
Obsolete; use DbEnv::mutex_set_align instead.
--with-tcl=DIR Directory location of tclConfig.sh.
@@ -1567,6 +1590,7 @@ Some influential environment variables:
CFLAGS C compiler flags
LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
nonstandard directory <lib dir>
+ LIBS libraries to pass to the linker, e.g. -l<library>
CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
you have headers in a nonstandard directory <include dir>
CXX C++ compiler command
@@ -1640,8 +1664,8 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-Berkeley DB configure 4.5.20
-generated by GNU Autoconf 2.60
+Berkeley DB configure 4.6.18
+generated by GNU Autoconf 2.61
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
@@ -1654,8 +1678,8 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by Berkeley DB $as_me 4.5.20, which was
-generated by GNU Autoconf 2.60. Invocation command line was
+It was created by Berkeley DB $as_me 4.6.18, which was
+generated by GNU Autoconf 2.61. Invocation command line was
$ $0 $@
@@ -2221,11 +2245,11 @@ echo "${ECHO_T}no" >&6; }
DB_VERSION_MAJOR="4"
-DB_VERSION_MINOR="5"
+DB_VERSION_MINOR="6"
-DB_VERSION_PATCH="20"
+DB_VERSION_PATCH="18"
-DB_VERSION_STRING='"Berkeley DB 4.5.20: (September 20, 2006)"'
+DB_VERSION_STRING='"Berkeley DB 4.6.18: (July 17, 2007)"'
# Process all options before using them.
@@ -2275,6 +2299,23 @@ yes) { echo "$as_me:$LINENO: result: no" >&5
echo "${ECHO_T}no" >&6; };;
esac
+{ echo "$as_me:$LINENO: checking if --disable-mutexsupport option specified" >&5
+echo $ECHO_N "checking if --disable-mutexsupport option specified... $ECHO_C" >&6; }
+# Check whether --enable-mutexsupport was given.
+if test "${enable_mutexsupport+set}" = set; then
+ enableval=$enable_mutexsupport;
+else
+ enableval="yes"
+fi
+
+db_cv_build_mutexsupport="$enableval"
+case "$enableval" in
+ no) { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; };;
+yes) { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; };;
+esac
+
{ echo "$as_me:$LINENO: checking if --disable-queue option specified" >&5
echo $ECHO_N "checking if --disable-queue option specified... $ECHO_C" >&6; }
# Check whether --enable-queue was given.
@@ -2467,6 +2508,26 @@ fi
{ echo "$as_me:$LINENO: result: $db_cv_mingw" >&5
echo "${ECHO_T}$db_cv_mingw" >&6; }
+{ echo "$as_me:$LINENO: checking if --enable-fine_grained_lock_manager option specified" >&5
+echo $ECHO_N "checking if --enable-fine_grained_lock_manager option specified... $ECHO_C" >&6; }
+# Check whether --enable-fine_grained_lock_manager was given.
+if test "${enable_fine_grained_lock_manager+set}" = set; then
+ enableval=$enable_fine_grained_lock_manager; db_cv_fine_grained_lock_manager="$enable_fine_grained_lock_manager"
+else
+ db_cv_fine_grained_lock_manager="no"
+fi
+
+{ echo "$as_me:$LINENO: result: $db_cv_fine_grained_lock_manager" >&5
+echo "${ECHO_T}$db_cv_fine_grained_lock_manager" >&6; }
+
+
+if test "$db_cv_fine_grained_lock_manager" = "yes"; then
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_FINE_GRAINED_LOCK_MANAGER 1
+_ACEOF
+
+fi
+
{ echo "$as_me:$LINENO: checking if --enable-o_direct option specified" >&5
echo $ECHO_N "checking if --enable-o_direct option specified... $ECHO_C" >&6; }
# Check whether --enable-o_direct was given.
@@ -2669,7 +2730,7 @@ echo "${ECHO_T}$with_uniquename" >&6; }
else
db_cv_uniquename="yes"
if test "$with_uniquename" = "yes"; then
- DB_VERSION_UNIQUE_NAME="_4005"
+ DB_VERSION_UNIQUE_NAME="_4006"
else
DB_VERSION_UNIQUE_NAME="$with_uniquename"
fi
@@ -2729,108 +2790,15 @@ _ACEOF
fi
-# Check for programs used in building and installation.
-if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ar; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_AR+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$AR"; then
- ac_cv_prog_AR="$AR" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_AR="${ac_tool_prefix}ar"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-AR=$ac_cv_prog_AR
-if test -n "$AR"; then
- { echo "$as_me:$LINENO: result: $AR" >&5
-echo "${ECHO_T}$AR" >&6; }
-else
- { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_AR"; then
- ac_ct_AR=$AR
- # Extract the first word of "ar", so it can be a program name with args.
-set dummy ar; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_ac_ct_AR+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$ac_ct_AR"; then
- ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_ac_ct_AR="ar"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_UPGRADE_SUPPORT 1
+_ACEOF
-fi
-fi
-ac_ct_AR=$ac_cv_prog_ac_ct_AR
-if test -n "$ac_ct_AR"; then
- { echo "$as_me:$LINENO: result: $ac_ct_AR" >&5
-echo "${ECHO_T}$ac_ct_AR" >&6; }
-else
- { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-fi
- if test "x$ac_ct_AR" = x; then
- AR="none"
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet. If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&5
-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet. If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
-ac_tool_warned=yes ;;
-esac
- AR=$ac_ct_AR
- fi
-else
- AR="$ac_cv_prog_AR"
-fi
+# Check for programs used in building and installation.
-test "$AR" = "none" && { { echo "$as_me:$LINENO: error: No ar utility found." >&5
-echo "$as_me: error: No ar utility found." >&2;}
- { (exit 1); exit 1; }; }
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}chmod", so it can be a program name with args.
@@ -2849,7 +2817,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_CHMOD="${ac_tool_prefix}chmod"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -2889,7 +2857,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_ac_ct_CHMOD="chmod"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -2949,7 +2917,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_CP="${ac_tool_prefix}cp"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -2989,7 +2957,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_ac_ct_CP="cp"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3051,7 +3019,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_KILL="${ac_tool_prefix}kill"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3091,7 +3059,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_ac_ct_KILL="kill"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3152,7 +3120,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_LN="${ac_tool_prefix}ln"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3192,7 +3160,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_ac_ct_LN="ln"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3252,7 +3220,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_MKDIR="${ac_tool_prefix}mkdir"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3292,7 +3260,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_ac_ct_MKDIR="mkdir"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3335,105 +3303,6 @@ test "$MKDIR" = "none" && { { echo "$as_me:$LINENO: error: No mkdir utility foun
echo "$as_me: error: No mkdir utility found." >&2;}
{ (exit 1); exit 1; }; }
-# Ranlib doesn't exist on some architectures because the ar utility
-# packages the library itself.
-if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ranlib; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_RANLIB+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$RANLIB"; then
- ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-RANLIB=$ac_cv_prog_RANLIB
-if test -n "$RANLIB"; then
- { echo "$as_me:$LINENO: result: $RANLIB" >&5
-echo "${ECHO_T}$RANLIB" >&6; }
-else
- { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_RANLIB"; then
- ac_ct_RANLIB=$RANLIB
- # Extract the first word of "ranlib", so it can be a program name with args.
-set dummy ranlib; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$ac_ct_RANLIB"; then
- ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_ac_ct_RANLIB="ranlib"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
-if test -n "$ac_ct_RANLIB"; then
- { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
-echo "${ECHO_T}$ac_ct_RANLIB" >&6; }
-else
- { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-fi
-
- if test "x$ac_ct_RANLIB" = x; then
- RANLIB="none"
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet. If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&5
-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet. If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
-ac_tool_warned=yes ;;
-esac
- RANLIB=$ac_ct_RANLIB
- fi
-else
- RANLIB="$ac_cv_prog_RANLIB"
-fi
-
-
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}rm", so it can be a program name with args.
set dummy ${ac_tool_prefix}rm; ac_word=$2
@@ -3451,7 +3320,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_RM="${ac_tool_prefix}rm"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3491,7 +3360,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_ac_ct_RM="rm"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3552,7 +3421,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_RPCGEN="${ac_tool_prefix}rpcgen"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3592,7 +3461,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_ac_ct_RPCGEN="rpcgen"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3659,7 +3528,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_db_cv_path_sh="$as_dir/$ac_word$ac_exec_ext"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3702,7 +3571,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_ac_pt_db_cv_path_sh="$as_dir/$ac_word$ac_exec_ext"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3748,106 +3617,7 @@ echo "$as_me: error: No sh utility found." >&2;}
# Don't strip the binaries if --enable-debug was specified.
if test "$db_cv_debug" = yes; then
- STRIP="none"
-else
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
-set dummy ${ac_tool_prefix}strip; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_STRIP+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$STRIP"; then
- ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_STRIP="${ac_tool_prefix}strip"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-STRIP=$ac_cv_prog_STRIP
-if test -n "$STRIP"; then
- { echo "$as_me:$LINENO: result: $STRIP" >&5
-echo "${ECHO_T}$STRIP" >&6; }
-else
- { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_STRIP"; then
- ac_ct_STRIP=$STRIP
- # Extract the first word of "strip", so it can be a program name with args.
-set dummy strip; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$ac_ct_STRIP"; then
- ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_ac_ct_STRIP="strip"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
-if test -n "$ac_ct_STRIP"; then
- { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
-echo "${ECHO_T}$ac_ct_STRIP" >&6; }
-else
- { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-fi
-
- if test "x$ac_ct_STRIP" = x; then
- STRIP="none"
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet. If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&5
-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet. If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
-ac_tool_warned=yes ;;
-esac
- STRIP=$ac_ct_STRIP
- fi
-else
- STRIP="$ac_cv_prog_STRIP"
-fi
-
- test "$STRIP" = "none" && { echo "$as_me:$LINENO: WARNING: No strip utility found." >&5
-echo "$as_me: WARNING: No strip utility found." >&2;}
+ STRIP=":"
fi
# Find a good install program. We prefer a C program (faster),
# so one script is as good as another. But avoid the broken or
@@ -3885,7 +3655,7 @@ case $as_dir/ in
# by default.
for ac_prog in ginstall scoinst install; do
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; }; then
+ if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
if test $ac_prog = install &&
grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
# AIX install. It has an incompatible calling convention.
@@ -3933,6 +3703,9 @@ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
BUILD_TARGET="library_build"
INSTALL_TARGET="library_install"
+# Respect the environment LIBS settings
+LIBSO_LIBS="$LIBS"
+
# This is where we handle stuff that autoconf can't handle: compiler,
# preprocessor and load flags, libraries that the standard tests don't
# look for.
@@ -3950,6 +3723,10 @@ INSTALL_TARGET="library_install"
optimize_debug="-O"
case "$host_os" in
aix4.3.*|aix5*)
+ case "$host_os" in
+ aix4.3.*)
+ CPPFLAGS="$CPPFLAGS -D_LINUX_SOURCE_COMPAT";;
+ esac
optimize_debug="-O2"
CC=${CC-"xlc_r"}
CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE"
@@ -3969,7 +3746,8 @@ irix*) optimize_debug="-O2"
mpeix*) CPPFLAGS="$CPPFLAGS -D_POSIX_SOURCE -D_SOCKET_SOURCE"
LIBSO_LIBS="$LIBSO_LIBS -lsocket -lsvipc";;
osf*) CPPFLAGS="$CPPFLAGS -pthread";;
-*qnx*) cat >>confdefs.h <<\_ACEOF
+*qnx*) qnx_build="yes"
+ cat >>confdefs.h <<\_ACEOF
#define HAVE_QNX 1
_ACEOF
@@ -4028,7 +3806,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -4072,7 +3850,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_ac_ct_CC="$ac_prog"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -4211,7 +3989,7 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
# in a Makefile. We should not override ac_cv_exeext if it was cached,
# so that the user can short-circuit this test for compilers unknown to
# Autoconf.
-for ac_file in $ac_files
+for ac_file in $ac_files ''
do
test -f "$ac_file" || continue
case $ac_file in
@@ -4239,6 +4017,12 @@ done
test "$ac_cv_exeext" = no && ac_cv_exeext=
else
+ ac_file=''
+fi
+
+{ echo "$as_me:$LINENO: result: $ac_file" >&5
+echo "${ECHO_T}$ac_file" >&6; }
+if test -z "$ac_file"; then
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
@@ -4250,8 +4034,6 @@ See \`config.log' for more details." >&2;}
fi
ac_exeext=$ac_cv_exeext
-{ echo "$as_me:$LINENO: result: $ac_file" >&5
-echo "${ECHO_T}$ac_file" >&6; }
# Check that the compiler produces executables we can run. If not, either
# the compiler is broken, or we cross compile.
@@ -4429,27 +4211,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_compiler_gnu=yes
else
echo "$as_me: failed program was:" >&5
@@ -4504,27 +4269,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_cv_prog_cc_g=yes
else
echo "$as_me: failed program was:" >&5
@@ -4559,27 +4307,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
:
else
echo "$as_me: failed program was:" >&5
@@ -4615,27 +4346,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_cv_prog_cc_g=yes
else
echo "$as_me: failed program was:" >&5
@@ -4751,27 +4465,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_cv_prog_cc_c89=$ac_arg
else
echo "$as_me: failed program was:" >&5
@@ -4829,17 +4526,7 @@ else
esac
fi
-# Checks for compiler characteristics.
-DB_PROTO1="#undef __P"
-
-# AC_PROG_CC_STDC only sets ac_cv_prog_cc_stdc if the test fails, so
-# check for "no", not "yes".
-if test "$ac_cv_prog_cc_stdc" = "no"; then
- DB_PROTO2="#define __P(protos) ()"
-else
- DB_PROTO2="#define __P(protos) protos"
-fi
-
+# Check for "const" and "inline" keywords.
{ echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5
echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6; }
@@ -4860,10 +4547,10 @@ main ()
#ifndef __cplusplus
/* Ultrix mips cc rejects this. */
typedef int charset[2];
- const charset x;
+ const charset cs;
/* SunOS 4.1.1 cc rejects this. */
- char const *const *ccp;
- char **p;
+ char const *const *pcpcc;
+ char **ppc;
/* NEC SVR4.0.2 mips cc rejects this. */
struct point {int x, y;};
static struct point const zero = {0,0};
@@ -4872,11 +4559,11 @@ main ()
an arm of an if-expression whose if-part is not a constant
expression */
const char *g = "string";
- ccp = &g + (g ? g-g : 0);
+ pcpcc = &g + (g ? g-g : 0);
/* HPUX 7.0 cc rejects these. */
- ++ccp;
- p = (char**) ccp;
- ccp = (char const *const *) p;
+ ++pcpcc;
+ ppc = (char**) pcpcc;
+ pcpcc = (char const *const *) ppc;
{ /* SCO 3.2v4 cc rejects this. */
char *t;
char const *s = 0 ? (char *) 0 : (char const *) 0;
@@ -4903,7 +4590,7 @@ main ()
const int foo = 10;
if (!foo) return 0;
}
- return !x[0] && !zero.x;
+ return !cs[0] && !zero.x;
#endif
;
@@ -4923,27 +4610,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_cv_c_const=yes
else
echo "$as_me: failed program was:" >&5
@@ -4964,11 +4634,101 @@ _ACEOF
fi
+{ echo "$as_me:$LINENO: checking for inline" >&5
+echo $ECHO_N "checking for inline... $ECHO_C" >&6; }
+if test "${ac_cv_c_inline+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_c_inline=no
+for ac_kw in inline __inline__ __inline; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#ifndef __cplusplus
+typedef int foo_t;
+static $ac_kw foo_t static_foo () {return 0; }
+$ac_kw foo_t foo () {return 0; }
+#endif
+
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_c_inline=$ac_kw
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ test "$ac_cv_c_inline" != no && break
+done
+
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5
+echo "${ECHO_T}$ac_cv_c_inline" >&6; }
+
+
+case $ac_cv_c_inline in
+ inline | yes) ;;
+ *)
+ case $ac_cv_c_inline in
+ no) ac_val=;;
+ *) ac_val=$ac_cv_c_inline;;
+ esac
+ cat >>confdefs.h <<_ACEOF
+#ifndef __cplusplus
+#define inline $ac_val
+#endif
+_ACEOF
+ ;;
+esac
+
+
+# We use prototypes and the keyword "const" in db.h which doesn't include
+# db_config.h, so we have to figure out what to do there. We don't have
+# much choice, we look at internal autoconf variables.
if test "$ac_cv_c_const" != "yes"; then
DB_CONST="#define const"
fi
+# Now prototypes.
+#
+# There is an autoconf AC_C_PROTOTYPES macro, but it doesn't set internal
+# variables, so it doesn't help us at all -- use the internal variable for
+# STDC compilers instead.
+#
+# First, clear __P, some other systems use it too.
+DB_PROTO1="#undef __P"
+
+# AC_PROG_CC_STDC only sets ac_cv_prog_cc_stdc if the test fails, so
+# check for "no", not "yes".
+if test "$ac_cv_prog_cc_stdc" = "no"; then
+ DB_PROTO2="#define __P(protos) ()"
+else
+ DB_PROTO2="#define __P(protos) protos"
+fi
+
# Because of shared library building, the ${CC} used for config tests
# may be different than the ${CC} we want to put in the Makefile.
# The latter is known as ${MAKEFILE_CC} in this script.
@@ -5004,7 +4764,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_CCC="${ac_tool_prefix}xlC_r"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -5044,7 +4804,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_ac_ct_CCC="xlC_r"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -5102,7 +4862,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_CCC="${ac_tool_prefix}aCC"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -5142,7 +4902,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_ac_ct_CCC="aCC"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -5198,7 +4958,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_CCC="${ac_tool_prefix}CC"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -5238,7 +4998,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_ac_ct_CCC="CC"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -5294,7 +5054,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_CCC="${ac_tool_prefix}cxx"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -5334,7 +5094,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_ac_ct_CCC="cxx"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -5372,7 +5132,10 @@ esac
else
CCC="$ac_cv_prog_CCC"
fi
-;;
+
+ CXXFLAGS="$CXXFLAGS -D__USE_STD_IOSTREAM"
+ test -d /usr/include.dtk &&
+ CXXFLAGS="$CXXFLAGS -I/usr/include.dtk";;
solaris*) if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}CC", so it can be a program name with args.
set dummy ${ac_tool_prefix}CC; ac_word=$2
@@ -5390,7 +5153,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_CCC="${ac_tool_prefix}CC"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -5430,7 +5193,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_ac_ct_CCC="CC"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -5499,7 +5262,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -5543,7 +5306,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_ac_ct_CXX="$ac_prog"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -5656,27 +5419,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_cxx_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_compiler_gnu=yes
else
echo "$as_me: failed program was:" >&5
@@ -5731,27 +5477,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_cxx_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_cv_prog_cxx_g=yes
else
echo "$as_me: failed program was:" >&5
@@ -5786,27 +5515,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_cxx_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
:
else
echo "$as_me: failed program was:" >&5
@@ -5842,27 +5554,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_cxx_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_cv_prog_cxx_g=yes
else
echo "$as_me: failed program was:" >&5
@@ -5952,17 +5647,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_cxx_preproc_warn_flag
- ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
+ test ! -s conftest.err
+ }; then
:
else
echo "$as_me: failed program was:" >&5
@@ -5996,17 +5684,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_cxx_preproc_warn_flag
- ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
+ test ! -s conftest.err
+ }; then
# Broken: success on invalid input.
continue
else
@@ -6071,17 +5752,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_cxx_preproc_warn_flag
- ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
+ test ! -s conftest.err
+ }; then
:
else
echo "$as_me: failed program was:" >&5
@@ -6115,17 +5789,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_cxx_preproc_warn_flag
- ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
+ test ! -s conftest.err
+ }; then
# Broken: success on invalid input.
continue
else
@@ -6203,27 +5870,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_cxx_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
db_cv_cxx_have_stdheaders=yes
else
echo "$as_me: failed program was:" >&5
@@ -6468,7 +6118,7 @@ do
for ac_prog in grep ggrep; do
for ac_exec_ext in '' $ac_executable_extensions; do
ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
- { test -f "$ac_path_GREP" && $as_executable_p "$ac_path_GREP"; } || continue
+ { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
# Check for GNU ac_path_GREP and select it if it is found.
# Check for GNU $ac_path_GREP
case `"$ac_path_GREP" --version 2>&1` in
@@ -6550,7 +6200,7 @@ do
for ac_prog in egrep; do
for ac_exec_ext in '' $ac_executable_extensions; do
ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
- { test -f "$ac_path_EGREP" && $as_executable_p "$ac_path_EGREP"; } || continue
+ { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
# Check for GNU ac_path_EGREP and select it if it is found.
# Check for GNU $ac_path_EGREP
case `"$ac_path_EGREP" --version 2>&1` in
@@ -7030,7 +6680,7 @@ ia64-*-hpux*)
;;
*-*-irix6*)
# Find out which ABI we are using.
- echo '#line 7033 "configure"' > conftest.$ac_ext
+ echo '#line 6683 "configure"' > conftest.$ac_ext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
@@ -7154,27 +6804,11 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
lt_cv_cc_needs_belf=yes
else
echo "$as_me: failed program was:" >&5
@@ -7183,7 +6817,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
lt_cv_cc_needs_belf=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
@@ -7277,17 +6911,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
:
else
echo "$as_me: failed program was:" >&5
@@ -7321,17 +6948,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
# Broken: success on invalid input.
continue
else
@@ -7396,17 +7016,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
:
else
echo "$as_me: failed program was:" >&5
@@ -7440,17 +7053,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
# Broken: success on invalid input.
continue
else
@@ -7521,27 +7127,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_cv_header_stdc=yes
else
echo "$as_me: failed program was:" >&5
@@ -7717,27 +7306,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
eval "$as_ac_Header=yes"
else
echo "$as_me: failed program was:" >&5
@@ -7800,27 +7372,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_header_compiler=yes
else
echo "$as_me: failed program was:" >&5
@@ -7856,17 +7411,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
ac_header_preproc=yes
else
echo "$as_me: failed program was:" >&5
@@ -7983,17 +7531,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_cxx_preproc_warn_flag
- ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
+ test ! -s conftest.err
+ }; then
:
else
echo "$as_me: failed program was:" >&5
@@ -8027,17 +7568,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_cxx_preproc_warn_flag
- ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
+ test ! -s conftest.err
+ }; then
# Broken: success on invalid input.
continue
else
@@ -8102,17 +7636,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_cxx_preproc_warn_flag
- ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
+ test ! -s conftest.err
+ }; then
:
else
echo "$as_me: failed program was:" >&5
@@ -8146,17 +7673,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_cxx_preproc_warn_flag
- ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
+ test ! -s conftest.err
+ }; then
# Broken: success on invalid input.
continue
else
@@ -8196,7 +7716,7 @@ ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_f77_compiler_gnu
if test -n "$ac_tool_prefix"; then
- for ac_prog in g77 f77 xlf frt pgf77 cf77 fort77 fl32 af77 f90 xlf90 pgf90 pghpf epcf90 gfortran g95 f95 fort xlf95 ifort ifc efc pgf95 lf95 ftn
+ for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn
do
# Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
set dummy $ac_tool_prefix$ac_prog; ac_word=$2
@@ -8214,7 +7734,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_F77="$ac_tool_prefix$ac_prog"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -8240,7 +7760,7 @@ fi
fi
if test -z "$F77"; then
ac_ct_F77=$F77
- for ac_prog in g77 f77 xlf frt pgf77 cf77 fort77 fl32 af77 f90 xlf90 pgf90 pghpf epcf90 gfortran g95 f95 fort xlf95 ifort ifc efc pgf95 lf95 ftn
+ for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
@@ -8258,7 +7778,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_ac_ct_F77="$ac_prog"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -8365,27 +7885,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_f77_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_compiler_gnu=yes
else
echo "$as_me: failed program was:" >&5
@@ -8428,27 +7931,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_f77_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_cv_prog_f77_g=yes
else
echo "$as_me: failed program was:" >&5
@@ -8903,7 +8389,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_AR="${ac_tool_prefix}ar"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -8943,7 +8429,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_ac_ct_AR="ar"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -8999,7 +8485,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -9039,7 +8525,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_ac_ct_RANLIB="ranlib"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -9095,7 +8581,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_STRIP="${ac_tool_prefix}strip"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -9135,7 +8621,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_ac_ct_STRIP="strip"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -9456,11 +8942,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:9459: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:8945: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:9463: \$? = $ac_status" >&5
+ echo "$as_me:8949: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -9724,11 +9210,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:9727: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:9213: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:9731: \$? = $ac_status" >&5
+ echo "$as_me:9217: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -9828,11 +9314,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:9831: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:9317: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:9835: \$? = $ac_status" >&5
+ echo "$as_me:9321: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -10308,27 +9794,11 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
}'`
@@ -10342,7 +9812,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
@@ -10383,27 +9853,11 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
}'`
@@ -10417,7 +9871,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
@@ -11665,27 +11119,11 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
ac_cv_lib_dl_dlopen=yes
else
echo "$as_me: failed program was:" >&5
@@ -11694,7 +11132,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_lib_dl_dlopen=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
@@ -11776,27 +11214,11 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
ac_cv_func_shl_load=yes
else
echo "$as_me: failed program was:" >&5
@@ -11805,7 +11227,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_func_shl_load=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
fi
{ echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
@@ -11855,27 +11277,11 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
ac_cv_lib_dld_shl_load=yes
else
echo "$as_me: failed program was:" >&5
@@ -11884,7 +11290,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_lib_dld_shl_load=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
@@ -11956,27 +11362,11 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
ac_cv_func_dlopen=yes
else
echo "$as_me: failed program was:" >&5
@@ -11985,7 +11375,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_func_dlopen=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
fi
{ echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
@@ -12035,27 +11425,11 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
ac_cv_lib_dl_dlopen=yes
else
echo "$as_me: failed program was:" >&5
@@ -12064,7 +11438,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_lib_dl_dlopen=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
@@ -12115,27 +11489,11 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
ac_cv_lib_svld_dlopen=yes
else
echo "$as_me: failed program was:" >&5
@@ -12144,7 +11502,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_lib_svld_dlopen=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
@@ -12195,27 +11553,11 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
ac_cv_lib_dld_dld_link=yes
else
echo "$as_me: failed program was:" >&5
@@ -12224,7 +11566,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_lib_dld_dld_link=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
@@ -12280,7 +11622,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
-#line 12283 "configure"
+#line 11625 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -12380,7 +11722,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
-#line 12383 "configure"
+#line 11725 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -13467,27 +12809,11 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_cxx_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
}'`
@@ -13501,7 +12827,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
@@ -13543,27 +12869,11 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_cxx_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
}'`
@@ -13577,7 +12887,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
@@ -14752,11 +14062,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:14755: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:14065: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:14759: \$? = $ac_status" >&5
+ echo "$as_me:14069: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -14856,11 +14166,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:14859: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:14169: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:14863: \$? = $ac_status" >&5
+ echo "$as_me:14173: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -16426,11 +15736,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:16429: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:15739: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:16433: \$? = $ac_status" >&5
+ echo "$as_me:15743: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -16530,11 +15840,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:16533: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:15843: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:16537: \$? = $ac_status" >&5
+ echo "$as_me:15847: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -17000,27 +16310,11 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_f77_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
}'`
@@ -17034,7 +16328,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
@@ -17065,27 +16359,11 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_f77_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
}'`
@@ -17099,7 +16377,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
@@ -18764,11 +18042,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:18767: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:18045: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:18771: \$? = $ac_status" >&5
+ echo "$as_me:18049: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -19032,11 +18310,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:19035: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:18313: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:19039: \$? = $ac_status" >&5
+ echo "$as_me:18317: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -19136,11 +18414,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:19139: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:18417: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:19143: \$? = $ac_status" >&5
+ echo "$as_me:18421: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -19616,27 +18894,11 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
}'`
@@ -19650,7 +18912,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
@@ -19691,27 +18953,11 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
}'`
@@ -19725,7 +18971,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
@@ -22028,7 +21274,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_JAVAC="$ac_prog"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -22071,7 +21317,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_JAVAC="$ac_prog"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -22110,7 +21356,7 @@ else
JAVA_TEST=Test.java
CLASS_TEST=Test.class
cat << \EOF > $JAVA_TEST
-/* #line 22113 "configure" */
+/* #line 21359 "configure" */
public class Test {
}
EOF
@@ -22155,7 +21401,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_JAR="$ac_prog"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -22198,7 +21444,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_JAR="$ac_prog"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -22248,7 +21494,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_JAVA="$ac_prog"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -22291,7 +21537,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_JAVA="$ac_prog"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -22337,7 +21583,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_uudecode="yes"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -22379,7 +21625,7 @@ EOF
if uudecode$EXEEXT Test.uue; then
ac_cv_prog_uudecode_base64=yes
else
- echo "configure: 22382: uudecode had trouble decoding base 64 file 'Test.uue'" >&5
+ echo "configure: 21628: uudecode had trouble decoding base 64 file 'Test.uue'" >&5
echo "configure: failed file was:" >&5
cat Test.uue >&5
ac_cv_prog_uudecode_base64=no
@@ -22419,7 +21665,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_JAVAC="$ac_prog"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -22462,7 +21708,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_JAVAC="$ac_prog"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -22501,7 +21747,7 @@ else
JAVA_TEST=Test.java
CLASS_TEST=Test.class
cat << \EOF > $JAVA_TEST
-/* #line 22504 "configure" */
+/* #line 21750 "configure" */
public class Test {
}
EOF
@@ -22538,7 +21784,7 @@ JAVA_TEST=Test.java
CLASS_TEST=Test.class
TEST=Test
cat << \EOF > $JAVA_TEST
-/* [#]line 22541 "configure" */
+/* [#]line 21787 "configure" */
public class Test {
public static void main (String args[]) {
System.exit (0);
@@ -22607,7 +21853,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path__ACJNI_JAVAC="$as_dir/$ac_word$ac_exec_ext"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -22763,6 +22009,10 @@ _ACEOF
else
OSDIR=os
PATH_SEPARATOR="/"
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_SYSTEM_INCLUDE_FILES 1
+_ACEOF
+
fi
# Checks for include files, structures, C types.
@@ -22781,38 +22031,48 @@ cat >>conftest.$ac_ext <<_ACEOF
#include <sys/stat.h>
#if defined S_ISBLK && defined S_IFDIR
-# if S_ISBLK (S_IFDIR)
-You lose.
-# endif
+extern char c1[S_ISBLK (S_IFDIR) ? -1 : 1];
#endif
#if defined S_ISBLK && defined S_IFCHR
-# if S_ISBLK (S_IFCHR)
-You lose.
-# endif
+extern char c2[S_ISBLK (S_IFCHR) ? -1 : 1];
#endif
#if defined S_ISLNK && defined S_IFREG
-# if S_ISLNK (S_IFREG)
-You lose.
-# endif
+extern char c3[S_ISLNK (S_IFREG) ? -1 : 1];
#endif
#if defined S_ISSOCK && defined S_IFREG
-# if S_ISSOCK (S_IFREG)
-You lose.
-# endif
+extern char c4[S_ISSOCK (S_IFREG) ? -1 : 1];
#endif
_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "You lose" >/dev/null 2>&1; then
- ac_cv_header_stat_broken=yes
-else
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_cv_header_stat_broken=no
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_header_stat_broken=yes
fi
-rm -f conftest*
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
{ echo "$as_me:$LINENO: result: $ac_cv_header_stat_broken" >&5
echo "${ECHO_T}$ac_cv_header_stat_broken" >&6; }
@@ -22861,27 +22121,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_cv_header_time=yes
else
echo "$as_me: failed program was:" >&5
@@ -22946,27 +22189,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
eval "$as_ac_Header=yes"
else
echo "$as_me: failed program was:" >&5
@@ -23039,27 +22265,11 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
ac_cv_search_opendir=$ac_res
else
echo "$as_me: failed program was:" >&5
@@ -23068,7 +22278,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext
if test "${ac_cv_search_opendir+set}" = set; then
break
@@ -23139,27 +22349,11 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
ac_cv_search_opendir=$ac_res
else
echo "$as_me: failed program was:" >&5
@@ -23168,7 +22362,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext
if test "${ac_cv_search_opendir+set}" = set; then
break
@@ -23195,7 +22389,7 @@ fi
-for ac_header in sys/select.h sys/time.h sys/fcntl.h
+for ac_header in sys/select.h sys/socket.h sys/time.h
do
as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
@@ -23233,27 +22427,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_header_compiler=yes
else
echo "$as_me: failed program was:" >&5
@@ -23289,17 +22466,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
ac_header_preproc=yes
else
echo "$as_me: failed program was:" >&5
@@ -23398,27 +22568,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_cv_member_struct_stat_st_blksize=yes
else
echo "$as_me: failed program was:" >&5
@@ -23454,27 +22607,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_cv_member_struct_stat_st_blksize=yes
else
echo "$as_me: failed program was:" >&5
@@ -23547,27 +22683,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_header_compiler=yes
else
echo "$as_me: failed program was:" >&5
@@ -23603,17 +22722,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
ac_header_preproc=yes
else
echo "$as_me: failed program was:" >&5
@@ -23676,26 +22788,21 @@ fi
-if test "${ac_cv_header_stdint_h+set}" = set; then
- { echo "$as_me:$LINENO: checking for stdint.h" >&5
+# IRIX has stdint.h that is only available when using c99 (i.e. __c99
+# is defined). Problem with having it in a public header is that a c++
+# compiler cannot #include <db.h> if db.h #includes stdint.h, so we
+# need to check that stdint.h is available for all cases. Also the
+# IRIX compiler does not exit with a non-zero exit code when it sees
+# #error, so we actually need to use the header for the compiler to fail.
+
+{ echo "$as_me:$LINENO: checking for stdint.h" >&5
echo $ECHO_N "checking for stdint.h... $ECHO_C" >&6; }
-if test "${ac_cv_header_stdint_h+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_stdint_h" >&5
-echo "${ECHO_T}$ac_cv_header_stdint_h" >&6; }
-else
- # Is the header compilable?
-{ echo "$as_me:$LINENO: checking stdint.h usability" >&5
-echo $ECHO_N "checking stdint.h usability... $ECHO_C" >&6; }
cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
#include <stdint.h>
+ int main() {
+ uint_least8_t x=0;
+ return x;
+ }
_ACEOF
rm -f conftest.$ac_objext
if { (ac_try="$ac_compile"
@@ -23710,133 +22817,88 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_header_compiler=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_header_compiler=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6; }
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+if test "$db_cv_cxx" = "yes"; then
+ { echo "$as_me:$LINENO: checking if stdint.h can be used by C++" >&5
+echo $ECHO_N "checking if stdint.h can be used by C++... $ECHO_C" >&6; }
+ ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-# Is the header present?
-{ echo "$as_me:$LINENO: checking stdint.h presence" >&5
-echo $ECHO_N "checking stdint.h presence... $ECHO_C" >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
+ cat >conftest.$ac_ext <<_ACEOF
#include <stdint.h>
+ int main() {
+ uint_least8_t x=0;
+ return x;
+ }
_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ (eval "$ac_compile") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- ac_header_preproc=yes
+ (exit $ac_status); } && {
+ test -z "$ac_cxx_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+ stdint_h_decl="#include <stdint.h>"
+ db_includes="$db_includes
+#include <stdint.h>"
+
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
- ac_header_preproc=no
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+ stdint_h_decl="#ifndef __cplusplus
+#include <stdint.h>
+#endif"
+ db_includes="$db_includes
+#ifndef __cplusplus
+#include <stdint.h>
+#endif"
+
fi
-rm -f conftest.err conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6; }
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
- yes:no: )
- { echo "$as_me:$LINENO: WARNING: stdint.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: stdint.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { echo "$as_me:$LINENO: WARNING: stdint.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: stdint.h: proceeding with the compiler's result" >&2;}
- ac_header_preproc=yes
- ;;
- no:yes:* )
- { echo "$as_me:$LINENO: WARNING: stdint.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: stdint.h: present but cannot be compiled" >&2;}
- { echo "$as_me:$LINENO: WARNING: stdint.h: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: stdint.h: check for missing prerequisite headers?" >&2;}
- { echo "$as_me:$LINENO: WARNING: stdint.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: stdint.h: see the Autoconf documentation" >&2;}
- { echo "$as_me:$LINENO: WARNING: stdint.h: section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: stdint.h: section \"Present But Cannot Be Compiled\"" >&2;}
- { echo "$as_me:$LINENO: WARNING: stdint.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: stdint.h: proceeding with the preprocessor's result" >&2;}
- { echo "$as_me:$LINENO: WARNING: stdint.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: stdint.h: in the future, the compiler will take precedence" >&2;}
- ( cat <<\_ASBOX
-## ---------------------------------------------------------- ##
-## Report this to Oracle Technology Network Berkeley DB forum ##
-## ---------------------------------------------------------- ##
-_ASBOX
- ) | sed "s/^/$as_me: WARNING: /" >&2
- ;;
-esac
-{ echo "$as_me:$LINENO: checking for stdint.h" >&5
-echo $ECHO_N "checking for stdint.h... $ECHO_C" >&6; }
-if test "${ac_cv_header_stdint_h+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
else
- ac_cv_header_stdint_h=$ac_header_preproc
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_stdint_h" >&5
-echo "${ECHO_T}$ac_cv_header_stdint_h" >&6; }
-
+ stdint_h_decl="#include <stdint.h>"
+ db_includes="$db_includes
+#include <stdint.h>"
fi
-if test $ac_cv_header_stdint_h = yes; then
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
- db_includes="$db_includes
-#include <stdint.h>"
- stdint_h_decl="#include <stdint.h>"
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
if test "${ac_cv_header_stddef_h+set}" = set; then
@@ -23873,27 +22935,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_header_compiler=yes
else
echo "$as_me: failed program was:" >&5
@@ -23929,17 +22974,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
ac_header_preproc=yes
else
echo "$as_me: failed program was:" >&5
@@ -24036,27 +23074,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_header_compiler=yes
else
echo "$as_me: failed program was:" >&5
@@ -24092,17 +23113,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
ac_header_preproc=yes
else
echo "$as_me: failed program was:" >&5
@@ -24167,167 +23181,6 @@ fi
db_includes="$db_includes
#include <stdio.h>"
-# We require off_t and size_t, and we don't try to substitute our own
-# if we can't find them.
-{ echo "$as_me:$LINENO: checking for off_t" >&5
-echo $ECHO_N "checking for off_t... $ECHO_C" >&6; }
-if test "${ac_cv_type_off_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$db_includes
-
-typedef off_t ac__type_new_;
-int
-main ()
-{
-if ((ac__type_new_ *) 0)
- return 0;
-if (sizeof (ac__type_new_))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_type_off_t=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_type_off_t=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5
-echo "${ECHO_T}$ac_cv_type_off_t" >&6; }
-if test $ac_cv_type_off_t = yes; then
- :
-else
- { { echo "$as_me:$LINENO: error: No off_t type." >&5
-echo "$as_me: error: No off_t type." >&2;}
- { (exit 1); exit 1; }; }
-fi
-
-{ echo "$as_me:$LINENO: checking for size_t" >&5
-echo $ECHO_N "checking for size_t... $ECHO_C" >&6; }
-if test "${ac_cv_type_size_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$db_includes
-
-typedef size_t ac__type_new_;
-int
-main ()
-{
-if ((ac__type_new_ *) 0)
- return 0;
-if (sizeof (ac__type_new_))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_type_size_t=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_type_size_t=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5
-echo "${ECHO_T}$ac_cv_type_size_t" >&6; }
-if test $ac_cv_type_size_t = yes; then
- :
-else
- { { echo "$as_me:$LINENO: error: No size_t type." >&5
-echo "$as_me: error: No size_t type." >&2;}
- { (exit 1); exit 1; }; }
-fi
-
-
# We need to know the sizes of various objects on this system.
{ echo "$as_me:$LINENO: checking for char" >&5
echo $ECHO_N "checking for char... $ECHO_C" >&6; }
@@ -24367,27 +23220,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_cv_type_char=yes
else
echo "$as_me: failed program was:" >&5
@@ -24401,16 +23237,15 @@ fi
{ echo "$as_me:$LINENO: result: $ac_cv_type_char" >&5
echo "${ECHO_T}$ac_cv_type_char" >&6; }
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
{ echo "$as_me:$LINENO: checking size of char" >&5
echo $ECHO_N "checking size of char... $ECHO_C" >&6; }
if test "${ac_cv_sizeof_char+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- if test "$ac_cv_type_char" = yes; then
- # The cast to long int works around a bug in the HP C Compiler
- # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
- # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
- # This bug is HP SR number 8606223364.
if test "$cross_compiling" = yes; then
# Depending upon the size, compute the lo and hi bounds.
cat >conftest.$ac_ext <<_ACEOF
@@ -24421,7 +23256,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef char ac__type_sizeof_;
+ typedef char ac__type_sizeof_;
int
main ()
{
@@ -24445,27 +23280,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_lo=0 ac_mid=0
while :; do
cat >conftest.$ac_ext <<_ACEOF
@@ -24476,7 +23294,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef char ac__type_sizeof_;
+ typedef char ac__type_sizeof_;
int
main ()
{
@@ -24500,27 +23318,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_hi=$ac_mid; break
else
echo "$as_me: failed program was:" >&5
@@ -24548,7 +23349,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef char ac__type_sizeof_;
+ typedef char ac__type_sizeof_;
int
main ()
{
@@ -24572,27 +23373,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_hi=-1 ac_mid=-1
while :; do
cat >conftest.$ac_ext <<_ACEOF
@@ -24603,7 +23387,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef char ac__type_sizeof_;
+ typedef char ac__type_sizeof_;
int
main ()
{
@@ -24627,27 +23411,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_lo=$ac_mid; break
else
echo "$as_me: failed program was:" >&5
@@ -24685,7 +23452,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef char ac__type_sizeof_;
+ typedef char ac__type_sizeof_;
int
main ()
{
@@ -24709,27 +23476,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_hi=$ac_mid
else
echo "$as_me: failed program was:" >&5
@@ -24742,11 +23492,15 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
done
case $ac_lo in
?*) ac_cv_sizeof_char=$ac_lo;;
-'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (char)
+'') if test "$ac_cv_type_char" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot compute sizeof (char)
See \`config.log' for more details." >&5
echo "$as_me: error: cannot compute sizeof (char)
See \`config.log' for more details." >&2;}
- { (exit 77); exit 77; }; } ;;
+ { (exit 77); exit 77; }; }
+ else
+ ac_cv_sizeof_char=0
+ fi ;;
esac
else
cat >conftest.$ac_ext <<_ACEOF
@@ -24757,7 +23511,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef char ac__type_sizeof_;
+ typedef char ac__type_sizeof_;
static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); }
static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); }
#include <stdio.h>
@@ -24816,21 +23570,25 @@ echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
( exit $ac_status )
-{ { echo "$as_me:$LINENO: error: cannot compute sizeof (char)
+if test "$ac_cv_type_char" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot compute sizeof (char)
See \`config.log' for more details." >&5
echo "$as_me: error: cannot compute sizeof (char)
See \`config.log' for more details." >&2;}
{ (exit 77); exit 77; }; }
+ else
+ ac_cv_sizeof_char=0
+ fi
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
rm -f conftest.val
-else
- ac_cv_sizeof_char=0
-fi
fi
{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_char" >&5
echo "${ECHO_T}$ac_cv_sizeof_char" >&6; }
+
+
+
cat >>confdefs.h <<_ACEOF
#define SIZEOF_CHAR $ac_cv_sizeof_char
_ACEOF
@@ -24874,27 +23632,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_cv_type_unsigned_char=yes
else
echo "$as_me: failed program was:" >&5
@@ -24908,16 +23649,15 @@ fi
{ echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_char" >&5
echo "${ECHO_T}$ac_cv_type_unsigned_char" >&6; }
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
{ echo "$as_me:$LINENO: checking size of unsigned char" >&5
echo $ECHO_N "checking size of unsigned char... $ECHO_C" >&6; }
if test "${ac_cv_sizeof_unsigned_char+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- if test "$ac_cv_type_unsigned_char" = yes; then
- # The cast to long int works around a bug in the HP C Compiler
- # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
- # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
- # This bug is HP SR number 8606223364.
if test "$cross_compiling" = yes; then
# Depending upon the size, compute the lo and hi bounds.
cat >conftest.$ac_ext <<_ACEOF
@@ -24928,7 +23668,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef unsigned char ac__type_sizeof_;
+ typedef unsigned char ac__type_sizeof_;
int
main ()
{
@@ -24952,27 +23692,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_lo=0 ac_mid=0
while :; do
cat >conftest.$ac_ext <<_ACEOF
@@ -24983,7 +23706,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef unsigned char ac__type_sizeof_;
+ typedef unsigned char ac__type_sizeof_;
int
main ()
{
@@ -25007,27 +23730,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_hi=$ac_mid; break
else
echo "$as_me: failed program was:" >&5
@@ -25055,7 +23761,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef unsigned char ac__type_sizeof_;
+ typedef unsigned char ac__type_sizeof_;
int
main ()
{
@@ -25079,27 +23785,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_hi=-1 ac_mid=-1
while :; do
cat >conftest.$ac_ext <<_ACEOF
@@ -25110,7 +23799,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef unsigned char ac__type_sizeof_;
+ typedef unsigned char ac__type_sizeof_;
int
main ()
{
@@ -25134,27 +23823,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_lo=$ac_mid; break
else
echo "$as_me: failed program was:" >&5
@@ -25192,7 +23864,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef unsigned char ac__type_sizeof_;
+ typedef unsigned char ac__type_sizeof_;
int
main ()
{
@@ -25216,27 +23888,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_hi=$ac_mid
else
echo "$as_me: failed program was:" >&5
@@ -25249,11 +23904,15 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
done
case $ac_lo in
?*) ac_cv_sizeof_unsigned_char=$ac_lo;;
-'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned char)
+'') if test "$ac_cv_type_unsigned_char" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned char)
See \`config.log' for more details." >&5
echo "$as_me: error: cannot compute sizeof (unsigned char)
See \`config.log' for more details." >&2;}
- { (exit 77); exit 77; }; } ;;
+ { (exit 77); exit 77; }; }
+ else
+ ac_cv_sizeof_unsigned_char=0
+ fi ;;
esac
else
cat >conftest.$ac_ext <<_ACEOF
@@ -25264,7 +23923,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef unsigned char ac__type_sizeof_;
+ typedef unsigned char ac__type_sizeof_;
static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); }
static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); }
#include <stdio.h>
@@ -25323,21 +23982,25 @@ echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
( exit $ac_status )
-{ { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned char)
+if test "$ac_cv_type_unsigned_char" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned char)
See \`config.log' for more details." >&5
echo "$as_me: error: cannot compute sizeof (unsigned char)
See \`config.log' for more details." >&2;}
{ (exit 77); exit 77; }; }
+ else
+ ac_cv_sizeof_unsigned_char=0
+ fi
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
rm -f conftest.val
-else
- ac_cv_sizeof_unsigned_char=0
-fi
fi
{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_unsigned_char" >&5
echo "${ECHO_T}$ac_cv_sizeof_unsigned_char" >&6; }
+
+
+
cat >>confdefs.h <<_ACEOF
#define SIZEOF_UNSIGNED_CHAR $ac_cv_sizeof_unsigned_char
_ACEOF
@@ -25381,27 +24044,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_cv_type_short=yes
else
echo "$as_me: failed program was:" >&5
@@ -25415,16 +24061,15 @@ fi
{ echo "$as_me:$LINENO: result: $ac_cv_type_short" >&5
echo "${ECHO_T}$ac_cv_type_short" >&6; }
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
{ echo "$as_me:$LINENO: checking size of short" >&5
echo $ECHO_N "checking size of short... $ECHO_C" >&6; }
if test "${ac_cv_sizeof_short+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- if test "$ac_cv_type_short" = yes; then
- # The cast to long int works around a bug in the HP C Compiler
- # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
- # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
- # This bug is HP SR number 8606223364.
if test "$cross_compiling" = yes; then
# Depending upon the size, compute the lo and hi bounds.
cat >conftest.$ac_ext <<_ACEOF
@@ -25435,7 +24080,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef short ac__type_sizeof_;
+ typedef short ac__type_sizeof_;
int
main ()
{
@@ -25459,27 +24104,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_lo=0 ac_mid=0
while :; do
cat >conftest.$ac_ext <<_ACEOF
@@ -25490,7 +24118,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef short ac__type_sizeof_;
+ typedef short ac__type_sizeof_;
int
main ()
{
@@ -25514,27 +24142,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_hi=$ac_mid; break
else
echo "$as_me: failed program was:" >&5
@@ -25562,7 +24173,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef short ac__type_sizeof_;
+ typedef short ac__type_sizeof_;
int
main ()
{
@@ -25586,27 +24197,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_hi=-1 ac_mid=-1
while :; do
cat >conftest.$ac_ext <<_ACEOF
@@ -25617,7 +24211,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef short ac__type_sizeof_;
+ typedef short ac__type_sizeof_;
int
main ()
{
@@ -25641,27 +24235,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_lo=$ac_mid; break
else
echo "$as_me: failed program was:" >&5
@@ -25699,7 +24276,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef short ac__type_sizeof_;
+ typedef short ac__type_sizeof_;
int
main ()
{
@@ -25723,27 +24300,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_hi=$ac_mid
else
echo "$as_me: failed program was:" >&5
@@ -25756,11 +24316,15 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
done
case $ac_lo in
?*) ac_cv_sizeof_short=$ac_lo;;
-'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (short)
+'') if test "$ac_cv_type_short" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot compute sizeof (short)
See \`config.log' for more details." >&5
echo "$as_me: error: cannot compute sizeof (short)
See \`config.log' for more details." >&2;}
- { (exit 77); exit 77; }; } ;;
+ { (exit 77); exit 77; }; }
+ else
+ ac_cv_sizeof_short=0
+ fi ;;
esac
else
cat >conftest.$ac_ext <<_ACEOF
@@ -25771,7 +24335,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef short ac__type_sizeof_;
+ typedef short ac__type_sizeof_;
static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); }
static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); }
#include <stdio.h>
@@ -25830,21 +24394,25 @@ echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
( exit $ac_status )
-{ { echo "$as_me:$LINENO: error: cannot compute sizeof (short)
+if test "$ac_cv_type_short" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot compute sizeof (short)
See \`config.log' for more details." >&5
echo "$as_me: error: cannot compute sizeof (short)
See \`config.log' for more details." >&2;}
{ (exit 77); exit 77; }; }
+ else
+ ac_cv_sizeof_short=0
+ fi
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
rm -f conftest.val
-else
- ac_cv_sizeof_short=0
-fi
fi
{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_short" >&5
echo "${ECHO_T}$ac_cv_sizeof_short" >&6; }
+
+
+
cat >>confdefs.h <<_ACEOF
#define SIZEOF_SHORT $ac_cv_sizeof_short
_ACEOF
@@ -25888,27 +24456,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_cv_type_unsigned_short=yes
else
echo "$as_me: failed program was:" >&5
@@ -25922,16 +24473,15 @@ fi
{ echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_short" >&5
echo "${ECHO_T}$ac_cv_type_unsigned_short" >&6; }
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
{ echo "$as_me:$LINENO: checking size of unsigned short" >&5
echo $ECHO_N "checking size of unsigned short... $ECHO_C" >&6; }
if test "${ac_cv_sizeof_unsigned_short+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- if test "$ac_cv_type_unsigned_short" = yes; then
- # The cast to long int works around a bug in the HP C Compiler
- # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
- # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
- # This bug is HP SR number 8606223364.
if test "$cross_compiling" = yes; then
# Depending upon the size, compute the lo and hi bounds.
cat >conftest.$ac_ext <<_ACEOF
@@ -25942,7 +24492,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef unsigned short ac__type_sizeof_;
+ typedef unsigned short ac__type_sizeof_;
int
main ()
{
@@ -25966,27 +24516,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_lo=0 ac_mid=0
while :; do
cat >conftest.$ac_ext <<_ACEOF
@@ -25997,7 +24530,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef unsigned short ac__type_sizeof_;
+ typedef unsigned short ac__type_sizeof_;
int
main ()
{
@@ -26021,27 +24554,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_hi=$ac_mid; break
else
echo "$as_me: failed program was:" >&5
@@ -26069,7 +24585,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef unsigned short ac__type_sizeof_;
+ typedef unsigned short ac__type_sizeof_;
int
main ()
{
@@ -26093,27 +24609,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_hi=-1 ac_mid=-1
while :; do
cat >conftest.$ac_ext <<_ACEOF
@@ -26124,7 +24623,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef unsigned short ac__type_sizeof_;
+ typedef unsigned short ac__type_sizeof_;
int
main ()
{
@@ -26148,27 +24647,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_lo=$ac_mid; break
else
echo "$as_me: failed program was:" >&5
@@ -26206,7 +24688,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef unsigned short ac__type_sizeof_;
+ typedef unsigned short ac__type_sizeof_;
int
main ()
{
@@ -26230,27 +24712,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_hi=$ac_mid
else
echo "$as_me: failed program was:" >&5
@@ -26263,11 +24728,15 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
done
case $ac_lo in
?*) ac_cv_sizeof_unsigned_short=$ac_lo;;
-'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned short)
+'') if test "$ac_cv_type_unsigned_short" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned short)
See \`config.log' for more details." >&5
echo "$as_me: error: cannot compute sizeof (unsigned short)
See \`config.log' for more details." >&2;}
- { (exit 77); exit 77; }; } ;;
+ { (exit 77); exit 77; }; }
+ else
+ ac_cv_sizeof_unsigned_short=0
+ fi ;;
esac
else
cat >conftest.$ac_ext <<_ACEOF
@@ -26278,7 +24747,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef unsigned short ac__type_sizeof_;
+ typedef unsigned short ac__type_sizeof_;
static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); }
static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); }
#include <stdio.h>
@@ -26337,21 +24806,25 @@ echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
( exit $ac_status )
-{ { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned short)
+if test "$ac_cv_type_unsigned_short" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned short)
See \`config.log' for more details." >&5
echo "$as_me: error: cannot compute sizeof (unsigned short)
See \`config.log' for more details." >&2;}
{ (exit 77); exit 77; }; }
+ else
+ ac_cv_sizeof_unsigned_short=0
+ fi
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
rm -f conftest.val
-else
- ac_cv_sizeof_unsigned_short=0
-fi
fi
{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_unsigned_short" >&5
echo "${ECHO_T}$ac_cv_sizeof_unsigned_short" >&6; }
+
+
+
cat >>confdefs.h <<_ACEOF
#define SIZEOF_UNSIGNED_SHORT $ac_cv_sizeof_unsigned_short
_ACEOF
@@ -26395,27 +24868,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_cv_type_int=yes
else
echo "$as_me: failed program was:" >&5
@@ -26429,16 +24885,15 @@ fi
{ echo "$as_me:$LINENO: result: $ac_cv_type_int" >&5
echo "${ECHO_T}$ac_cv_type_int" >&6; }
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
{ echo "$as_me:$LINENO: checking size of int" >&5
echo $ECHO_N "checking size of int... $ECHO_C" >&6; }
if test "${ac_cv_sizeof_int+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- if test "$ac_cv_type_int" = yes; then
- # The cast to long int works around a bug in the HP C Compiler
- # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
- # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
- # This bug is HP SR number 8606223364.
if test "$cross_compiling" = yes; then
# Depending upon the size, compute the lo and hi bounds.
cat >conftest.$ac_ext <<_ACEOF
@@ -26449,7 +24904,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef int ac__type_sizeof_;
+ typedef int ac__type_sizeof_;
int
main ()
{
@@ -26473,27 +24928,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_lo=0 ac_mid=0
while :; do
cat >conftest.$ac_ext <<_ACEOF
@@ -26504,7 +24942,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef int ac__type_sizeof_;
+ typedef int ac__type_sizeof_;
int
main ()
{
@@ -26528,27 +24966,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_hi=$ac_mid; break
else
echo "$as_me: failed program was:" >&5
@@ -26576,7 +24997,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef int ac__type_sizeof_;
+ typedef int ac__type_sizeof_;
int
main ()
{
@@ -26600,27 +25021,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_hi=-1 ac_mid=-1
while :; do
cat >conftest.$ac_ext <<_ACEOF
@@ -26631,7 +25035,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef int ac__type_sizeof_;
+ typedef int ac__type_sizeof_;
int
main ()
{
@@ -26655,27 +25059,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_lo=$ac_mid; break
else
echo "$as_me: failed program was:" >&5
@@ -26713,7 +25100,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef int ac__type_sizeof_;
+ typedef int ac__type_sizeof_;
int
main ()
{
@@ -26737,27 +25124,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_hi=$ac_mid
else
echo "$as_me: failed program was:" >&5
@@ -26770,11 +25140,15 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
done
case $ac_lo in
?*) ac_cv_sizeof_int=$ac_lo;;
-'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (int)
+'') if test "$ac_cv_type_int" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot compute sizeof (int)
See \`config.log' for more details." >&5
echo "$as_me: error: cannot compute sizeof (int)
See \`config.log' for more details." >&2;}
- { (exit 77); exit 77; }; } ;;
+ { (exit 77); exit 77; }; }
+ else
+ ac_cv_sizeof_int=0
+ fi ;;
esac
else
cat >conftest.$ac_ext <<_ACEOF
@@ -26785,7 +25159,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef int ac__type_sizeof_;
+ typedef int ac__type_sizeof_;
static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); }
static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); }
#include <stdio.h>
@@ -26844,21 +25218,25 @@ echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
( exit $ac_status )
-{ { echo "$as_me:$LINENO: error: cannot compute sizeof (int)
+if test "$ac_cv_type_int" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot compute sizeof (int)
See \`config.log' for more details." >&5
echo "$as_me: error: cannot compute sizeof (int)
See \`config.log' for more details." >&2;}
{ (exit 77); exit 77; }; }
+ else
+ ac_cv_sizeof_int=0
+ fi
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
rm -f conftest.val
-else
- ac_cv_sizeof_int=0
-fi
fi
{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_int" >&5
echo "${ECHO_T}$ac_cv_sizeof_int" >&6; }
+
+
+
cat >>confdefs.h <<_ACEOF
#define SIZEOF_INT $ac_cv_sizeof_int
_ACEOF
@@ -26902,27 +25280,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_cv_type_unsigned_int=yes
else
echo "$as_me: failed program was:" >&5
@@ -26936,16 +25297,15 @@ fi
{ echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_int" >&5
echo "${ECHO_T}$ac_cv_type_unsigned_int" >&6; }
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
{ echo "$as_me:$LINENO: checking size of unsigned int" >&5
echo $ECHO_N "checking size of unsigned int... $ECHO_C" >&6; }
if test "${ac_cv_sizeof_unsigned_int+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- if test "$ac_cv_type_unsigned_int" = yes; then
- # The cast to long int works around a bug in the HP C Compiler
- # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
- # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
- # This bug is HP SR number 8606223364.
if test "$cross_compiling" = yes; then
# Depending upon the size, compute the lo and hi bounds.
cat >conftest.$ac_ext <<_ACEOF
@@ -26956,7 +25316,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef unsigned int ac__type_sizeof_;
+ typedef unsigned int ac__type_sizeof_;
int
main ()
{
@@ -26980,27 +25340,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_lo=0 ac_mid=0
while :; do
cat >conftest.$ac_ext <<_ACEOF
@@ -27011,7 +25354,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef unsigned int ac__type_sizeof_;
+ typedef unsigned int ac__type_sizeof_;
int
main ()
{
@@ -27035,27 +25378,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_hi=$ac_mid; break
else
echo "$as_me: failed program was:" >&5
@@ -27083,7 +25409,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef unsigned int ac__type_sizeof_;
+ typedef unsigned int ac__type_sizeof_;
int
main ()
{
@@ -27107,27 +25433,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_hi=-1 ac_mid=-1
while :; do
cat >conftest.$ac_ext <<_ACEOF
@@ -27138,7 +25447,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef unsigned int ac__type_sizeof_;
+ typedef unsigned int ac__type_sizeof_;
int
main ()
{
@@ -27162,27 +25471,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_lo=$ac_mid; break
else
echo "$as_me: failed program was:" >&5
@@ -27220,7 +25512,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef unsigned int ac__type_sizeof_;
+ typedef unsigned int ac__type_sizeof_;
int
main ()
{
@@ -27244,27 +25536,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_hi=$ac_mid
else
echo "$as_me: failed program was:" >&5
@@ -27277,11 +25552,15 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
done
case $ac_lo in
?*) ac_cv_sizeof_unsigned_int=$ac_lo;;
-'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned int)
+'') if test "$ac_cv_type_unsigned_int" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned int)
See \`config.log' for more details." >&5
echo "$as_me: error: cannot compute sizeof (unsigned int)
See \`config.log' for more details." >&2;}
- { (exit 77); exit 77; }; } ;;
+ { (exit 77); exit 77; }; }
+ else
+ ac_cv_sizeof_unsigned_int=0
+ fi ;;
esac
else
cat >conftest.$ac_ext <<_ACEOF
@@ -27292,7 +25571,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef unsigned int ac__type_sizeof_;
+ typedef unsigned int ac__type_sizeof_;
static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); }
static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); }
#include <stdio.h>
@@ -27351,21 +25630,25 @@ echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
( exit $ac_status )
-{ { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned int)
+if test "$ac_cv_type_unsigned_int" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned int)
See \`config.log' for more details." >&5
echo "$as_me: error: cannot compute sizeof (unsigned int)
See \`config.log' for more details." >&2;}
{ (exit 77); exit 77; }; }
+ else
+ ac_cv_sizeof_unsigned_int=0
+ fi
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
rm -f conftest.val
-else
- ac_cv_sizeof_unsigned_int=0
-fi
fi
{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_unsigned_int" >&5
echo "${ECHO_T}$ac_cv_sizeof_unsigned_int" >&6; }
+
+
+
cat >>confdefs.h <<_ACEOF
#define SIZEOF_UNSIGNED_INT $ac_cv_sizeof_unsigned_int
_ACEOF
@@ -27409,27 +25692,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_cv_type_long=yes
else
echo "$as_me: failed program was:" >&5
@@ -27443,16 +25709,15 @@ fi
{ echo "$as_me:$LINENO: result: $ac_cv_type_long" >&5
echo "${ECHO_T}$ac_cv_type_long" >&6; }
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
{ echo "$as_me:$LINENO: checking size of long" >&5
echo $ECHO_N "checking size of long... $ECHO_C" >&6; }
if test "${ac_cv_sizeof_long+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- if test "$ac_cv_type_long" = yes; then
- # The cast to long int works around a bug in the HP C Compiler
- # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
- # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
- # This bug is HP SR number 8606223364.
if test "$cross_compiling" = yes; then
# Depending upon the size, compute the lo and hi bounds.
cat >conftest.$ac_ext <<_ACEOF
@@ -27463,7 +25728,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef long ac__type_sizeof_;
+ typedef long ac__type_sizeof_;
int
main ()
{
@@ -27487,27 +25752,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_lo=0 ac_mid=0
while :; do
cat >conftest.$ac_ext <<_ACEOF
@@ -27518,7 +25766,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef long ac__type_sizeof_;
+ typedef long ac__type_sizeof_;
int
main ()
{
@@ -27542,27 +25790,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_hi=$ac_mid; break
else
echo "$as_me: failed program was:" >&5
@@ -27590,7 +25821,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef long ac__type_sizeof_;
+ typedef long ac__type_sizeof_;
int
main ()
{
@@ -27614,27 +25845,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_hi=-1 ac_mid=-1
while :; do
cat >conftest.$ac_ext <<_ACEOF
@@ -27645,7 +25859,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef long ac__type_sizeof_;
+ typedef long ac__type_sizeof_;
int
main ()
{
@@ -27669,27 +25883,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_lo=$ac_mid; break
else
echo "$as_me: failed program was:" >&5
@@ -27727,7 +25924,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef long ac__type_sizeof_;
+ typedef long ac__type_sizeof_;
int
main ()
{
@@ -27751,27 +25948,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_hi=$ac_mid
else
echo "$as_me: failed program was:" >&5
@@ -27784,11 +25964,15 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
done
case $ac_lo in
?*) ac_cv_sizeof_long=$ac_lo;;
-'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long)
+'') if test "$ac_cv_type_long" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot compute sizeof (long)
See \`config.log' for more details." >&5
echo "$as_me: error: cannot compute sizeof (long)
See \`config.log' for more details." >&2;}
- { (exit 77); exit 77; }; } ;;
+ { (exit 77); exit 77; }; }
+ else
+ ac_cv_sizeof_long=0
+ fi ;;
esac
else
cat >conftest.$ac_ext <<_ACEOF
@@ -27799,7 +25983,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef long ac__type_sizeof_;
+ typedef long ac__type_sizeof_;
static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); }
static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); }
#include <stdio.h>
@@ -27858,21 +26042,25 @@ echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
( exit $ac_status )
-{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long)
+if test "$ac_cv_type_long" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot compute sizeof (long)
See \`config.log' for more details." >&5
echo "$as_me: error: cannot compute sizeof (long)
See \`config.log' for more details." >&2;}
{ (exit 77); exit 77; }; }
+ else
+ ac_cv_sizeof_long=0
+ fi
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
rm -f conftest.val
-else
- ac_cv_sizeof_long=0
-fi
fi
{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_long" >&5
echo "${ECHO_T}$ac_cv_sizeof_long" >&6; }
+
+
+
cat >>confdefs.h <<_ACEOF
#define SIZEOF_LONG $ac_cv_sizeof_long
_ACEOF
@@ -27916,27 +26104,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_cv_type_unsigned_long=yes
else
echo "$as_me: failed program was:" >&5
@@ -27950,16 +26121,15 @@ fi
{ echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_long" >&5
echo "${ECHO_T}$ac_cv_type_unsigned_long" >&6; }
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
{ echo "$as_me:$LINENO: checking size of unsigned long" >&5
echo $ECHO_N "checking size of unsigned long... $ECHO_C" >&6; }
if test "${ac_cv_sizeof_unsigned_long+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- if test "$ac_cv_type_unsigned_long" = yes; then
- # The cast to long int works around a bug in the HP C Compiler
- # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
- # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
- # This bug is HP SR number 8606223364.
if test "$cross_compiling" = yes; then
# Depending upon the size, compute the lo and hi bounds.
cat >conftest.$ac_ext <<_ACEOF
@@ -27970,7 +26140,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef unsigned long ac__type_sizeof_;
+ typedef unsigned long ac__type_sizeof_;
int
main ()
{
@@ -27994,27 +26164,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_lo=0 ac_mid=0
while :; do
cat >conftest.$ac_ext <<_ACEOF
@@ -28025,7 +26178,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef unsigned long ac__type_sizeof_;
+ typedef unsigned long ac__type_sizeof_;
int
main ()
{
@@ -28049,27 +26202,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_hi=$ac_mid; break
else
echo "$as_me: failed program was:" >&5
@@ -28097,7 +26233,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef unsigned long ac__type_sizeof_;
+ typedef unsigned long ac__type_sizeof_;
int
main ()
{
@@ -28121,27 +26257,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_hi=-1 ac_mid=-1
while :; do
cat >conftest.$ac_ext <<_ACEOF
@@ -28152,7 +26271,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef unsigned long ac__type_sizeof_;
+ typedef unsigned long ac__type_sizeof_;
int
main ()
{
@@ -28176,27 +26295,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_lo=$ac_mid; break
else
echo "$as_me: failed program was:" >&5
@@ -28234,7 +26336,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef unsigned long ac__type_sizeof_;
+ typedef unsigned long ac__type_sizeof_;
int
main ()
{
@@ -28258,27 +26360,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_hi=$ac_mid
else
echo "$as_me: failed program was:" >&5
@@ -28291,11 +26376,15 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
done
case $ac_lo in
?*) ac_cv_sizeof_unsigned_long=$ac_lo;;
-'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned long)
+'') if test "$ac_cv_type_unsigned_long" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned long)
See \`config.log' for more details." >&5
echo "$as_me: error: cannot compute sizeof (unsigned long)
See \`config.log' for more details." >&2;}
- { (exit 77); exit 77; }; } ;;
+ { (exit 77); exit 77; }; }
+ else
+ ac_cv_sizeof_unsigned_long=0
+ fi ;;
esac
else
cat >conftest.$ac_ext <<_ACEOF
@@ -28306,7 +26395,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef unsigned long ac__type_sizeof_;
+ typedef unsigned long ac__type_sizeof_;
static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); }
static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); }
#include <stdio.h>
@@ -28365,21 +26454,25 @@ echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
( exit $ac_status )
-{ { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned long)
+if test "$ac_cv_type_unsigned_long" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned long)
See \`config.log' for more details." >&5
echo "$as_me: error: cannot compute sizeof (unsigned long)
See \`config.log' for more details." >&2;}
{ (exit 77); exit 77; }; }
+ else
+ ac_cv_sizeof_unsigned_long=0
+ fi
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
rm -f conftest.val
-else
- ac_cv_sizeof_unsigned_long=0
-fi
fi
{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_unsigned_long" >&5
echo "${ECHO_T}$ac_cv_sizeof_unsigned_long" >&6; }
+
+
+
cat >>confdefs.h <<_ACEOF
#define SIZEOF_UNSIGNED_LONG $ac_cv_sizeof_unsigned_long
_ACEOF
@@ -28423,27 +26516,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_cv_type_long_long=yes
else
echo "$as_me: failed program was:" >&5
@@ -28457,16 +26533,15 @@ fi
{ echo "$as_me:$LINENO: result: $ac_cv_type_long_long" >&5
echo "${ECHO_T}$ac_cv_type_long_long" >&6; }
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
{ echo "$as_me:$LINENO: checking size of long long" >&5
echo $ECHO_N "checking size of long long... $ECHO_C" >&6; }
if test "${ac_cv_sizeof_long_long+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- if test "$ac_cv_type_long_long" = yes; then
- # The cast to long int works around a bug in the HP C Compiler
- # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
- # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
- # This bug is HP SR number 8606223364.
if test "$cross_compiling" = yes; then
# Depending upon the size, compute the lo and hi bounds.
cat >conftest.$ac_ext <<_ACEOF
@@ -28477,7 +26552,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef long long ac__type_sizeof_;
+ typedef long long ac__type_sizeof_;
int
main ()
{
@@ -28501,27 +26576,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_lo=0 ac_mid=0
while :; do
cat >conftest.$ac_ext <<_ACEOF
@@ -28532,7 +26590,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef long long ac__type_sizeof_;
+ typedef long long ac__type_sizeof_;
int
main ()
{
@@ -28556,27 +26614,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_hi=$ac_mid; break
else
echo "$as_me: failed program was:" >&5
@@ -28604,7 +26645,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef long long ac__type_sizeof_;
+ typedef long long ac__type_sizeof_;
int
main ()
{
@@ -28628,27 +26669,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_hi=-1 ac_mid=-1
while :; do
cat >conftest.$ac_ext <<_ACEOF
@@ -28659,7 +26683,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef long long ac__type_sizeof_;
+ typedef long long ac__type_sizeof_;
int
main ()
{
@@ -28683,27 +26707,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_lo=$ac_mid; break
else
echo "$as_me: failed program was:" >&5
@@ -28741,7 +26748,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef long long ac__type_sizeof_;
+ typedef long long ac__type_sizeof_;
int
main ()
{
@@ -28765,27 +26772,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_hi=$ac_mid
else
echo "$as_me: failed program was:" >&5
@@ -28798,11 +26788,15 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
done
case $ac_lo in
?*) ac_cv_sizeof_long_long=$ac_lo;;
-'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long long)
+'') if test "$ac_cv_type_long_long" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot compute sizeof (long long)
See \`config.log' for more details." >&5
echo "$as_me: error: cannot compute sizeof (long long)
See \`config.log' for more details." >&2;}
- { (exit 77); exit 77; }; } ;;
+ { (exit 77); exit 77; }; }
+ else
+ ac_cv_sizeof_long_long=0
+ fi ;;
esac
else
cat >conftest.$ac_ext <<_ACEOF
@@ -28813,7 +26807,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef long long ac__type_sizeof_;
+ typedef long long ac__type_sizeof_;
static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); }
static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); }
#include <stdio.h>
@@ -28872,21 +26866,25 @@ echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
( exit $ac_status )
-{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long long)
+if test "$ac_cv_type_long_long" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot compute sizeof (long long)
See \`config.log' for more details." >&5
echo "$as_me: error: cannot compute sizeof (long long)
See \`config.log' for more details." >&2;}
{ (exit 77); exit 77; }; }
+ else
+ ac_cv_sizeof_long_long=0
+ fi
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
rm -f conftest.val
-else
- ac_cv_sizeof_long_long=0
-fi
fi
{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_long_long" >&5
echo "${ECHO_T}$ac_cv_sizeof_long_long" >&6; }
+
+
+
cat >>confdefs.h <<_ACEOF
#define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long
_ACEOF
@@ -28930,27 +26928,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_cv_type_unsigned_long_long=yes
else
echo "$as_me: failed program was:" >&5
@@ -28964,16 +26945,15 @@ fi
{ echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_long_long" >&5
echo "${ECHO_T}$ac_cv_type_unsigned_long_long" >&6; }
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
{ echo "$as_me:$LINENO: checking size of unsigned long long" >&5
echo $ECHO_N "checking size of unsigned long long... $ECHO_C" >&6; }
if test "${ac_cv_sizeof_unsigned_long_long+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- if test "$ac_cv_type_unsigned_long_long" = yes; then
- # The cast to long int works around a bug in the HP C Compiler
- # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
- # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
- # This bug is HP SR number 8606223364.
if test "$cross_compiling" = yes; then
# Depending upon the size, compute the lo and hi bounds.
cat >conftest.$ac_ext <<_ACEOF
@@ -28984,7 +26964,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef unsigned long long ac__type_sizeof_;
+ typedef unsigned long long ac__type_sizeof_;
int
main ()
{
@@ -29008,27 +26988,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_lo=0 ac_mid=0
while :; do
cat >conftest.$ac_ext <<_ACEOF
@@ -29039,7 +27002,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef unsigned long long ac__type_sizeof_;
+ typedef unsigned long long ac__type_sizeof_;
int
main ()
{
@@ -29063,27 +27026,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_hi=$ac_mid; break
else
echo "$as_me: failed program was:" >&5
@@ -29111,7 +27057,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef unsigned long long ac__type_sizeof_;
+ typedef unsigned long long ac__type_sizeof_;
int
main ()
{
@@ -29135,27 +27081,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_hi=-1 ac_mid=-1
while :; do
cat >conftest.$ac_ext <<_ACEOF
@@ -29166,7 +27095,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef unsigned long long ac__type_sizeof_;
+ typedef unsigned long long ac__type_sizeof_;
int
main ()
{
@@ -29190,27 +27119,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_lo=$ac_mid; break
else
echo "$as_me: failed program was:" >&5
@@ -29248,7 +27160,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef unsigned long long ac__type_sizeof_;
+ typedef unsigned long long ac__type_sizeof_;
int
main ()
{
@@ -29272,27 +27184,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_hi=$ac_mid
else
echo "$as_me: failed program was:" >&5
@@ -29305,11 +27200,15 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
done
case $ac_lo in
?*) ac_cv_sizeof_unsigned_long_long=$ac_lo;;
-'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned long long)
+'') if test "$ac_cv_type_unsigned_long_long" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned long long)
See \`config.log' for more details." >&5
echo "$as_me: error: cannot compute sizeof (unsigned long long)
See \`config.log' for more details." >&2;}
- { (exit 77); exit 77; }; } ;;
+ { (exit 77); exit 77; }; }
+ else
+ ac_cv_sizeof_unsigned_long_long=0
+ fi ;;
esac
else
cat >conftest.$ac_ext <<_ACEOF
@@ -29320,7 +27219,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef unsigned long long ac__type_sizeof_;
+ typedef unsigned long long ac__type_sizeof_;
static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); }
static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); }
#include <stdio.h>
@@ -29379,530 +27278,27 @@ echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
( exit $ac_status )
-{ { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned long long)
+if test "$ac_cv_type_unsigned_long_long" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned long long)
See \`config.log' for more details." >&5
echo "$as_me: error: cannot compute sizeof (unsigned long long)
See \`config.log' for more details." >&2;}
{ (exit 77); exit 77; }; }
+ else
+ ac_cv_sizeof_unsigned_long_long=0
+ fi
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
rm -f conftest.val
-else
- ac_cv_sizeof_unsigned_long_long=0
-fi
fi
{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_unsigned_long_long" >&5
echo "${ECHO_T}$ac_cv_sizeof_unsigned_long_long" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_UNSIGNED_LONG_LONG $ac_cv_sizeof_unsigned_long_long
-_ACEOF
-
-{ echo "$as_me:$LINENO: checking for size_t" >&5
-echo $ECHO_N "checking for size_t... $ECHO_C" >&6; }
-if test "${ac_cv_type_size_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$db_includes
-
-typedef size_t ac__type_new_;
-int
-main ()
-{
-if ((ac__type_new_ *) 0)
- return 0;
-if (sizeof (ac__type_new_))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_type_size_t=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_type_size_t=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5
-echo "${ECHO_T}$ac_cv_type_size_t" >&6; }
-
-{ echo "$as_me:$LINENO: checking size of size_t" >&5
-echo $ECHO_N "checking size of size_t... $ECHO_C" >&6; }
-if test "${ac_cv_sizeof_size_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test "$ac_cv_type_size_t" = yes; then
- # The cast to long int works around a bug in the HP C Compiler
- # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
- # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
- # This bug is HP SR number 8606223364.
- if test "$cross_compiling" = yes; then
- # Depending upon the size, compute the lo and hi bounds.
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$db_includes
-
- typedef size_t ac__type_sizeof_;
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_lo=0 ac_mid=0
- while :; do
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$db_includes
-
- typedef size_t ac__type_sizeof_;
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=$ac_mid; break
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_lo=`expr $ac_mid + 1`
- if test $ac_lo -le $ac_mid; then
- ac_lo= ac_hi=
- break
- fi
- ac_mid=`expr 2 '*' $ac_mid + 1`
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- done
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$db_includes
-
- typedef size_t ac__type_sizeof_;
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=-1 ac_mid=-1
- while :; do
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$db_includes
-
- typedef size_t ac__type_sizeof_;
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_lo=$ac_mid; break
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_hi=`expr '(' $ac_mid ')' - 1`
- if test $ac_mid -le $ac_hi; then
- ac_lo= ac_hi=
- break
- fi
- ac_mid=`expr 2 '*' $ac_mid`
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- done
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_lo= ac_hi=
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-# Binary search between lo and hi bounds.
-while test "x$ac_lo" != "x$ac_hi"; do
- ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$db_includes
-
- typedef size_t ac__type_sizeof_;
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=$ac_mid
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_lo=`expr '(' $ac_mid ')' + 1`
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-done
-case $ac_lo in
-?*) ac_cv_sizeof_size_t=$ac_lo;;
-'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (size_t)
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (size_t)
-See \`config.log' for more details." >&2;}
- { (exit 77); exit 77; }; } ;;
-esac
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$db_includes
-
- typedef size_t ac__type_sizeof_;
-static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); }
-static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); }
-#include <stdio.h>
-#include <stdlib.h>
-int
-main ()
-{
-
- FILE *f = fopen ("conftest.val", "w");
- if (! f)
- return 1;
- if (((long int) (sizeof (ac__type_sizeof_))) < 0)
- {
- long int i = longval ();
- if (i != ((long int) (sizeof (ac__type_sizeof_))))
- return 1;
- fprintf (f, "%ld\n", i);
- }
- else
- {
- unsigned long int i = ulongval ();
- if (i != ((long int) (sizeof (ac__type_sizeof_))))
- return 1;
- fprintf (f, "%lu\n", i);
- }
- return ferror (f) || fclose (f) != 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_link") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_sizeof_size_t=`cat conftest.val`
-else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-( exit $ac_status )
-{ { echo "$as_me:$LINENO: error: cannot compute sizeof (size_t)
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (size_t)
-See \`config.log' for more details." >&2;}
- { (exit 77); exit 77; }; }
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f conftest.val
-else
- ac_cv_sizeof_size_t=0
-fi
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_size_t" >&5
-echo "${ECHO_T}$ac_cv_sizeof_size_t" >&6; }
cat >>confdefs.h <<_ACEOF
-#define SIZEOF_SIZE_T $ac_cv_sizeof_size_t
+#define SIZEOF_UNSIGNED_LONG_LONG $ac_cv_sizeof_unsigned_long_long
_ACEOF
@@ -29944,27 +27340,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_cv_type_char_p=yes
else
echo "$as_me: failed program was:" >&5
@@ -29978,16 +27357,15 @@ fi
{ echo "$as_me:$LINENO: result: $ac_cv_type_char_p" >&5
echo "${ECHO_T}$ac_cv_type_char_p" >&6; }
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
{ echo "$as_me:$LINENO: checking size of char *" >&5
echo $ECHO_N "checking size of char *... $ECHO_C" >&6; }
if test "${ac_cv_sizeof_char_p+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- if test "$ac_cv_type_char_p" = yes; then
- # The cast to long int works around a bug in the HP C Compiler
- # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
- # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
- # This bug is HP SR number 8606223364.
if test "$cross_compiling" = yes; then
# Depending upon the size, compute the lo and hi bounds.
cat >conftest.$ac_ext <<_ACEOF
@@ -29998,7 +27376,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef char * ac__type_sizeof_;
+ typedef char * ac__type_sizeof_;
int
main ()
{
@@ -30022,27 +27400,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_lo=0 ac_mid=0
while :; do
cat >conftest.$ac_ext <<_ACEOF
@@ -30053,7 +27414,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef char * ac__type_sizeof_;
+ typedef char * ac__type_sizeof_;
int
main ()
{
@@ -30077,27 +27438,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_hi=$ac_mid; break
else
echo "$as_me: failed program was:" >&5
@@ -30125,7 +27469,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef char * ac__type_sizeof_;
+ typedef char * ac__type_sizeof_;
int
main ()
{
@@ -30149,27 +27493,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_hi=-1 ac_mid=-1
while :; do
cat >conftest.$ac_ext <<_ACEOF
@@ -30180,7 +27507,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef char * ac__type_sizeof_;
+ typedef char * ac__type_sizeof_;
int
main ()
{
@@ -30204,27 +27531,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_lo=$ac_mid; break
else
echo "$as_me: failed program was:" >&5
@@ -30262,7 +27572,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef char * ac__type_sizeof_;
+ typedef char * ac__type_sizeof_;
int
main ()
{
@@ -30286,27 +27596,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_hi=$ac_mid
else
echo "$as_me: failed program was:" >&5
@@ -30319,11 +27612,15 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
done
case $ac_lo in
?*) ac_cv_sizeof_char_p=$ac_lo;;
-'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (char *)
+'') if test "$ac_cv_type_char_p" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot compute sizeof (char *)
See \`config.log' for more details." >&5
echo "$as_me: error: cannot compute sizeof (char *)
See \`config.log' for more details." >&2;}
- { (exit 77); exit 77; }; } ;;
+ { (exit 77); exit 77; }; }
+ else
+ ac_cv_sizeof_char_p=0
+ fi ;;
esac
else
cat >conftest.$ac_ext <<_ACEOF
@@ -30334,7 +27631,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
- typedef char * ac__type_sizeof_;
+ typedef char * ac__type_sizeof_;
static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); }
static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); }
#include <stdio.h>
@@ -30393,21 +27690,25 @@ echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
( exit $ac_status )
-{ { echo "$as_me:$LINENO: error: cannot compute sizeof (char *)
+if test "$ac_cv_type_char_p" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot compute sizeof (char *)
See \`config.log' for more details." >&5
echo "$as_me: error: cannot compute sizeof (char *)
See \`config.log' for more details." >&2;}
{ (exit 77); exit 77; }; }
+ else
+ ac_cv_sizeof_char_p=0
+ fi
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
rm -f conftest.val
-else
- ac_cv_sizeof_char_p=0
-fi
fi
{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_char_p" >&5
echo "${ECHO_T}$ac_cv_sizeof_char_p" >&6; }
+
+
+
cat >>confdefs.h <<_ACEOF
#define SIZEOF_CHAR_P $ac_cv_sizeof_char_p
_ACEOF
@@ -30455,27 +27756,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_cv_type_u_char=yes
else
echo "$as_me: failed program was:" >&5
@@ -30534,27 +27818,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_cv_type_u_short=yes
else
echo "$as_me: failed program was:" >&5
@@ -30613,27 +27880,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_cv_type_u_int=yes
else
echo "$as_me: failed program was:" >&5
@@ -30692,27 +27942,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_cv_type_u_long=yes
else
echo "$as_me: failed program was:" >&5
@@ -30772,27 +28005,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_cv_type_u_int8_t=yes
else
echo "$as_me: failed program was:" >&5
@@ -30869,27 +28085,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_cv_type_u_int16_t=yes
else
echo "$as_me: failed program was:" >&5
@@ -30966,27 +28165,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_cv_type_int16_t=yes
else
echo "$as_me: failed program was:" >&5
@@ -31063,27 +28245,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_cv_type_u_int32_t=yes
else
echo "$as_me: failed program was:" >&5
@@ -31160,27 +28325,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_cv_type_int32_t=yes
else
echo "$as_me: failed program was:" >&5
@@ -31257,27 +28405,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_cv_type_u_int64_t=yes
else
echo "$as_me: failed program was:" >&5
@@ -31354,27 +28485,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_cv_type_int64_t=yes
else
echo "$as_me: failed program was:" >&5
@@ -31412,12 +28526,330 @@ echo "$as_me: error: No signed 8-byte integral type" >&2;}
fi
+# No currently autoconf'd systems lack FILE, off_t pid_t, size_t, time_t.
+#
+# We require them, we don't try to substitute our own if we can't find them.
+
+{ echo "$as_me:$LINENO: checking for FILE" >&5
+echo $ECHO_N "checking for FILE... $ECHO_C" >&6; }
+if test "${ac_cv_type_FILE+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$db_includes
+
+typedef FILE ac__type_new_;
+int
+main ()
+{
+if ((ac__type_new_ *) 0)
+ return 0;
+if (sizeof (ac__type_new_))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_type_FILE=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_type_FILE=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_type_FILE" >&5
+echo "${ECHO_T}$ac_cv_type_FILE" >&6; }
+if test $ac_cv_type_FILE = yes; then
+ :
+else
+ { { echo "$as_me:$LINENO: error: No FILE type." >&5
+echo "$as_me: error: No FILE type." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+
+{ echo "$as_me:$LINENO: checking for off_t" >&5
+echo $ECHO_N "checking for off_t... $ECHO_C" >&6; }
+if test "${ac_cv_type_off_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$db_includes
+
+typedef off_t ac__type_new_;
+int
+main ()
+{
+if ((ac__type_new_ *) 0)
+ return 0;
+if (sizeof (ac__type_new_))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_type_off_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_type_off_t=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5
+echo "${ECHO_T}$ac_cv_type_off_t" >&6; }
+if test $ac_cv_type_off_t = yes; then
+ :
+else
+ { { echo "$as_me:$LINENO: error: No off_t type." >&5
+echo "$as_me: error: No off_t type." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+
+{ echo "$as_me:$LINENO: checking for pid_t" >&5
+echo $ECHO_N "checking for pid_t... $ECHO_C" >&6; }
+if test "${ac_cv_type_pid_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$db_includes
+
+typedef pid_t ac__type_new_;
+int
+main ()
+{
+if ((ac__type_new_ *) 0)
+ return 0;
+if (sizeof (ac__type_new_))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_type_pid_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_type_pid_t=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_type_pid_t" >&5
+echo "${ECHO_T}$ac_cv_type_pid_t" >&6; }
+if test $ac_cv_type_pid_t = yes; then
+ :
+else
+ { { echo "$as_me:$LINENO: error: No pid_t type." >&5
+echo "$as_me: error: No pid_t type." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+
+{ echo "$as_me:$LINENO: checking for size_t" >&5
+echo $ECHO_N "checking for size_t... $ECHO_C" >&6; }
+if test "${ac_cv_type_size_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$db_includes
+
+typedef size_t ac__type_new_;
+int
+main ()
+{
+if ((ac__type_new_ *) 0)
+ return 0;
+if (sizeof (ac__type_new_))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_type_size_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_type_size_t=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5
+echo "${ECHO_T}$ac_cv_type_size_t" >&6; }
+if test $ac_cv_type_size_t = yes; then
+ :
+else
+ { { echo "$as_me:$LINENO: error: No size_t type." >&5
+echo "$as_me: error: No size_t type." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+
+{ echo "$as_me:$LINENO: checking for time_t" >&5
+echo $ECHO_N "checking for time_t... $ECHO_C" >&6; }
+if test "${ac_cv_type_time_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$db_includes
+
+typedef time_t ac__type_new_;
+int
+main ()
+{
+if ((ac__type_new_ *) 0)
+ return 0;
+if (sizeof (ac__type_new_))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_type_time_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_type_time_t=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_type_time_t" >&5
+echo "${ECHO_T}$ac_cv_type_time_t" >&6; }
+if test $ac_cv_type_time_t = yes; then
+ :
+else
+ { { echo "$as_me:$LINENO: error: No time_t type." >&5
+echo "$as_me: error: No time_t type." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+
# Check for ssize_t -- if none exists, find a signed integral type that's
# the same size as a size_t.
-
-{ echo "$as_me:$LINENO: checking for ssize_t" >&5
-echo $ECHO_N "checking for ssize_t... $ECHO_C" >&6; }
-if test "${ac_cv_type_ssize_t+set}" = set; then
+{ echo "$as_me:$LINENO: checking for size_t" >&5
+echo $ECHO_N "checking for size_t... $ECHO_C" >&6; }
+if test "${ac_cv_type_size_t+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
@@ -31428,7 +28860,7 @@ cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$db_includes
-typedef ssize_t ac__type_new_;
+typedef size_t ac__type_new_;
int
main ()
{
@@ -31453,18 +28885,340 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_type_size_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_type_size_t=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5
+echo "${ECHO_T}$ac_cv_type_size_t" >&6; }
+
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ echo "$as_me:$LINENO: checking size of size_t" >&5
+echo $ECHO_N "checking size of size_t... $ECHO_C" >&6; }
+if test "${ac_cv_sizeof_size_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$db_includes
+
+ typedef size_t ac__type_sizeof_;
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_lo=0 ac_mid=0
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$db_includes
+
+ typedef size_t ac__type_sizeof_;
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_hi=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_lo=`expr $ac_mid + 1`
+ if test $ac_lo -le $ac_mid; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$db_includes
+
+ typedef size_t ac__type_sizeof_;
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_hi=-1 ac_mid=-1
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$db_includes
+
+ typedef size_t ac__type_sizeof_;
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_lo=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_hi=`expr '(' $ac_mid ')' - 1`
+ if test $ac_mid -le $ac_hi; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_lo= ac_hi=
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$db_includes
+
+ typedef size_t ac__type_sizeof_;
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_hi=$ac_mid
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) ac_cv_sizeof_size_t=$ac_lo;;
+'') if test "$ac_cv_type_size_t" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot compute sizeof (size_t)
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (size_t)
+See \`config.log' for more details." >&2;}
+ { (exit 77); exit 77; }; }
+ else
+ ac_cv_sizeof_size_t=0
+ fi ;;
+esac
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$db_includes
+
+ typedef size_t ac__type_sizeof_;
+static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); }
+static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+ FILE *f = fopen ("conftest.val", "w");
+ if (! f)
+ return 1;
+ if (((long int) (sizeof (ac__type_sizeof_))) < 0)
+ {
+ long int i = longval ();
+ if (i != ((long int) (sizeof (ac__type_sizeof_))))
+ return 1;
+ fprintf (f, "%ld\n", i);
+ }
+ else
+ {
+ unsigned long int i = ulongval ();
+ if (i != ((long int) (sizeof (ac__type_sizeof_))))
+ return 1;
+ fprintf (f, "%lu\n", i);
+ }
+ return ferror (f) || fclose (f) != 0;
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
{ (case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
@@ -31474,6 +29228,80 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
+ ac_cv_sizeof_size_t=`cat conftest.val`
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+if test "$ac_cv_type_size_t" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot compute sizeof (size_t)
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (size_t)
+See \`config.log' for more details." >&2;}
+ { (exit 77); exit 77; }; }
+ else
+ ac_cv_sizeof_size_t=0
+ fi
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.val
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_size_t" >&5
+echo "${ECHO_T}$ac_cv_sizeof_size_t" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_SIZE_T $ac_cv_sizeof_size_t
+_ACEOF
+
+
+
+{ echo "$as_me:$LINENO: checking for ssize_t" >&5
+echo $ECHO_N "checking for ssize_t... $ECHO_C" >&6; }
+if test "${ac_cv_type_ssize_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$db_includes
+
+typedef ssize_t ac__type_new_;
+int
+main ()
+{
+if ((ac__type_new_ *) 0)
+ return 0;
+if (sizeof (ac__type_new_))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_cv_type_ssize_t=yes
else
echo "$as_me: failed program was:" >&5
@@ -31511,9 +29339,6 @@ echo "$as_me: error: No signed $ac_cv_sizeof_size_t-byte integral type" >&2;}
fi
-# So far, no autoconf'd systems lack pid_t.
-
-
# Check for uintmax_t -- if none exists, first the largest unsigned integral
# type available.
@@ -31554,27 +29379,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_cv_type_uintmax_t=yes
else
echo "$as_me: failed program was:" >&5
@@ -31628,27 +29436,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_cv_type_unsigned_long_long=yes
else
echo "$as_me: failed program was:" >&5
@@ -31710,27 +29501,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_cv_type_uintptr_t=yes
else
echo "$as_me: failed program was:" >&5
@@ -31769,23 +29543,30 @@ fi
-{ echo "$as_me:$LINENO: checking for ANSI C exit success/failure values" >&5
-echo $ECHO_N "checking for ANSI C exit success/failure values... $ECHO_C" >&6; }
-if test "${db_cv_exit_defines+set}" = set; then
+ { echo "$as_me:$LINENO: checking for socklen_t" >&5
+echo $ECHO_N "checking for socklen_t... $ECHO_C" >&6; }
+if test "${ac_cv_type_socklen_t+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
-
-cat >conftest.$ac_ext <<_ACEOF
+ cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-#include <stdlib.h>
+#include <sys/types.h>
+ #ifdef HAVE_SYS_SOCKET_H
+ #include <sys/socket.h>
+ #endif
+
+typedef socklen_t ac__type_new_;
int
main ()
{
-return (EXIT_SUCCESS);
+if ((ac__type_new_ *) 0)
+ return 0;
+if (sizeof (ac__type_new_))
+ return 0;
;
return 0;
}
@@ -31803,27 +29584,140 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_type_socklen_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_type_socklen_t=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_type_socklen_t" >&5
+echo "${ECHO_T}$ac_cv_type_socklen_t" >&6; }
+if test $ac_cv_type_socklen_t = yes; then
+ :
+else
+ { echo "$as_me:$LINENO: checking for socklen_t equivalent" >&5
+echo $ECHO_N "checking for socklen_t equivalent... $ECHO_C" >&6; }
+ if test "${db_cv_socklen_t_equiv+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ # Systems have either "struct sockaddr *" or
+ # "void *" as the second argument to getpeername
+ db_cv_socklen_t_equiv=
+ for arg2 in "struct sockaddr" void; do
+ for t in int size_t "unsigned int" "long int" "unsigned long int"; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+ #include <sys/socket.h>
+
+ int getpeername (int, $arg2 *, $t *);
+int
+main ()
+{
+$t len;
+ getpeername (0, 0, &len);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
+ (eval "$ac_compile") 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ db_cv_socklen_t_equiv="$t"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ test "$db_cv_socklen_t_equiv" != "" && break
+ done
+ test "$db_cv_socklen_t_equiv" != "" && break
+ done
+
+fi
+
+ if test "$db_cv_socklen_t_equiv" = ""; then
+ { { echo "$as_me:$LINENO: error: Cannot find a type to use in place of socklen_t" >&5
+echo "$as_me: error: Cannot find a type to use in place of socklen_t" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+ { echo "$as_me:$LINENO: result: $db_cv_socklen_t_equiv" >&5
+echo "${ECHO_T}$db_cv_socklen_t_equiv" >&6; }
+
+cat >>confdefs.h <<_ACEOF
+#define socklen_t $db_cv_socklen_t_equiv
+_ACEOF
+
+fi
+
+
+{ echo "$as_me:$LINENO: checking for ANSI C exit success/failure values" >&5
+echo $ECHO_N "checking for ANSI C exit success/failure values... $ECHO_C" >&6; }
+if test "${db_cv_exit_defines+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdlib.h>
+int
+main ()
+{
+return (EXIT_SUCCESS);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
+ (eval "$ac_compile") 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
db_cv_exit_defines=yes
else
echo "$as_me: failed program was:" >&5
@@ -31849,8 +29743,7 @@ fi
# We do this first because it changes $LIBSO_LIBS.
-# Mutexes we don't test for, but want the #defines to exist for
-# other ports.
+# Mutexes we don't test for, but want the #defines to exist for other ports.
@@ -31862,61 +29755,70 @@ if test "${db_cv_mutex+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
-db_cv_mutex=no
orig_libs=$LIBS
-# User-specified POSIX or UI mutexes.
-#
-# There are two different reasons to specify mutexes: First, the application
-# is already using one type of mutex and doesn't want to mix-and-match (for
-# example, on Solaris, which has POSIX, UI and LWP mutexes). Second, the
-# applications POSIX pthreads mutexes don't support inter-process locking,
-# but the application wants to use them anyway (for example, some Linux and
-# *BSD systems).
-#
-# Test for LWP threads before testing for UI/POSIX threads, we prefer them
-# on Solaris, for two reasons: a bug in SunOS 5.7 causes applications to
-# get pwrite, not pwrite64, if they load the C library before the appropriate
-# threads library, e.g., tclsh using dlopen to load the DB library. Second,
-# LWP mutexes are faster than POSIX pthread mutexes by some amount.
-#
-# Otherwise, test for POSIX threads before UI threads. There are Linux systems
-# that support a UI compatibility mode, and applications are more likely to be
-# written for POSIX threads than UI threads.
-if test "$db_cv_posixmutexes" = yes; then
- db_cv_mutex="posix_only";
-fi
-if test "$db_cv_uimutexes" = yes; then
- db_cv_mutex="ui_only";
+db_cv_mutex=no
+
+# Mutexes can be disabled.
+if test "$db_cv_build_mutexsupport" = no; then
+ db_cv_mutex=disabled;
fi
# User-specified Win32 mutexes (MinGW build)
-if test "$db_cv_mingw" = "yes"; then
+if test "$db_cv_mingw" = yes; then
db_cv_mutex=win32/gcc
fi
-# LWP threads: _lwp_XXX
if test "$db_cv_mutex" = no; then
-cat >conftest.$ac_ext <<_ACEOF
+ # User-specified POSIX or UI mutexes.
+ #
+ # There are two different reasons to specify mutexes: First, the
+ # application is already using one type of mutex and doesn't want
+ # to mix-and-match (for example, on Solaris, which has POSIX, UI
+ # and LWP mutexes). Second, the application's POSIX pthreads
+ # mutexes don't support inter-process locking, but the application
+ # wants to use them anyway (for example, some Linux and *BSD systems).
+ #
+ # Test for LWP threads before testing for UI/POSIX threads, we prefer
+ # them on Solaris, for two reasons: a bug in SunOS 5.7 causes
+ # applications to get pwrite, not pwrite64, if they load the C library
+ # before the appropriate threads library, e.g., tclsh using dlopen to
+ # load the DB library. Second, LWP mutexes are faster than POSIX
+ # pthread mutexes by some amount.
+ #
+ # Otherwise, test for POSIX threads before UI threads. There are Linux
+ # systems that support a UI compatibility mode, and applications are
+ # more likely to be written for POSIX threads than UI threads.
+
+ if test "$db_cv_posixmutexes" = yes; then
+ db_cv_mutex=posix_only;
+ fi
+ if test "$db_cv_uimutexes" = yes; then
+ db_cv_mutex=ui_only;
+ fi
+
+ # LWP threads: _lwp_XXX
+ if test "$db_cv_mutex" = no; then
+ cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-#include <synch.h>
+ #include <synch.h>
int
main ()
{
- static lwp_mutex_t mi = SHAREDMUTEX;
- static lwp_cond_t ci = SHAREDCV;
- lwp_mutex_t mutex = mi;
- lwp_cond_t cond = ci;
- exit (
- _lwp_mutex_lock(&mutex) ||
- _lwp_mutex_unlock(&mutex));
+ static lwp_mutex_t mi = SHAREDMUTEX;
+ static lwp_cond_t ci = SHAREDCV;
+ lwp_mutex_t mutex = mi;
+ lwp_cond_t cond = ci;
+ exit (
+ _lwp_mutex_lock(&mutex) ||
+ _lwp_mutex_unlock(&mutex));
;
return 0;
@@ -31935,28 +29837,12 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- db_cv_mutex="Solaris/lwp"
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ db_cv_mutex=Solaris/lwp
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
@@ -31964,16 +29850,17 @@ sed 's/^/| /' conftest.$ac_ext >&5
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
-fi
+ fi
-# POSIX.1 pthreads: pthread_XXX
-#
-# If the user specified we use POSIX pthreads mutexes, and we fail to find the
-# full interface, try and configure for just intra-process support.
-if test "$db_cv_mutex" = no -o "$db_cv_mutex" = "posix_only"; then
- LIBS="$LIBS -lpthread"
+ # POSIX.1 pthreads: pthread_XXX
+ #
+ # If the user specified we use POSIX pthreads mutexes, and we fail to
+ # find the full interface, try and configure for just intra-process
+ # support.
+ if test "$db_cv_mutex" = no -o "$db_cv_mutex" = posix_only; then
+ LIBS="$LIBS -lpthread"
if test "$cross_compiling" = yes; then
cat >conftest.$ac_ext <<_ACEOF
@@ -32023,28 +29910,12 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- db_cv_mutex=""POSIX/pthreads/library""
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ db_cv_mutex="POSIX/pthreads/library"
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
@@ -32052,7 +29923,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
else
cat >conftest.$ac_ext <<_ACEOF
@@ -32103,7 +29974,7 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- db_cv_mutex=""POSIX/pthreads/library""
+ db_cv_mutex="POSIX/pthreads/library"
else
echo "$as_me: program exited with status $ac_status" >&5
echo "$as_me: failed program was:" >&5
@@ -32114,9 +29985,9 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$a
fi
- LIBS="$orig_libs"
-fi
-if test "$db_cv_mutex" = no -o "$db_cv_mutex" = "posix_only"; then
+ LIBS="$orig_libs"
+ fi
+ if test "$db_cv_mutex" = no -o "$db_cv_mutex" = posix_only; then
if test "$cross_compiling" = yes; then
cat >conftest.$ac_ext <<_ACEOF
@@ -32166,28 +30037,12 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- db_cv_mutex=""POSIX/pthreads""
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ db_cv_mutex="POSIX/pthreads"
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
@@ -32195,7 +30050,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
else
cat >conftest.$ac_ext <<_ACEOF
@@ -32246,7 +30101,7 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- db_cv_mutex=""POSIX/pthreads""
+ db_cv_mutex="POSIX/pthreads"
else
echo "$as_me: program exited with status $ac_status" >&5
echo "$as_me: failed program was:" >&5
@@ -32257,8 +30112,8 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$a
fi
-fi
-if test "$db_cv_mutex" = "posix_only"; then
+ fi
+ if test "$db_cv_mutex" = posix_only; then
if test "$cross_compiling" = yes; then
cat >conftest.$ac_ext <<_ACEOF
@@ -32306,28 +30161,12 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- db_cv_mutex=""POSIX/pthreads/private""
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ db_cv_mutex="POSIX/pthreads/private"
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
@@ -32335,7 +30174,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
else
cat >conftest.$ac_ext <<_ACEOF
@@ -32384,7 +30223,7 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- db_cv_mutex=""POSIX/pthreads/private""
+ db_cv_mutex="POSIX/pthreads/private"
else
echo "$as_me: program exited with status $ac_status" >&5
echo "$as_me: failed program was:" >&5
@@ -32395,9 +30234,9 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$a
fi
-fi
-if test "$db_cv_mutex" = "posix_only"; then
- LIBS="$LIBS -lpthread"
+ fi
+ if test "$db_cv_mutex" = posix_only; then
+ LIBS="$LIBS -lpthread"
if test "$cross_compiling" = yes; then
cat >conftest.$ac_ext <<_ACEOF
@@ -32445,28 +30284,12 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- db_cv_mutex=""POSIX/pthreads/library/private""
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ db_cv_mutex="POSIX/pthreads/library/private"
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
@@ -32474,7 +30297,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
else
cat >conftest.$ac_ext <<_ACEOF
@@ -32523,7 +30346,7 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- db_cv_mutex=""POSIX/pthreads/library/private""
+ db_cv_mutex="POSIX/pthreads/library/private"
else
echo "$as_me: program exited with status $ac_status" >&5
echo "$as_me: failed program was:" >&5
@@ -32534,38 +30357,38 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$a
fi
- LIBS="$orig_libs"
-fi
-if test "$db_cv_mutex" = "posix_only"; then
- { { echo "$as_me:$LINENO: error: unable to find POSIX 1003.1 mutex interfaces" >&5
+ LIBS="$orig_libs"
+ fi
+ if test "$db_cv_mutex" = posix_only; then
+ { { echo "$as_me:$LINENO: error: unable to find POSIX 1003.1 mutex interfaces" >&5
echo "$as_me: error: unable to find POSIX 1003.1 mutex interfaces" >&2;}
{ (exit 1); exit 1; }; }
-fi
+ fi
-# UI threads: thr_XXX
-if test "$db_cv_mutex" = no -o "$db_cv_mutex" = "ui_only"; then
-LIBS="$LIBS -lthread"
-cat >conftest.$ac_ext <<_ACEOF
+ # UI threads: thr_XXX
+ if test "$db_cv_mutex" = no -o "$db_cv_mutex" = ui_only; then
+ LIBS="$LIBS -lthread"
+ cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-#include <thread.h>
-#include <synch.h>
+ #include <thread.h>
+ #include <synch.h>
int
main ()
{
- mutex_t mutex;
- cond_t cond;
- int type = USYNC_PROCESS;
- exit (
- mutex_init(&mutex, type, NULL) ||
- cond_init(&cond, type, NULL) ||
- mutex_lock(&mutex) ||
- mutex_unlock(&mutex));
+ mutex_t mutex;
+ cond_t cond;
+ int type = USYNC_PROCESS;
+ exit (
+ mutex_init(&mutex, type, NULL) ||
+ cond_init(&cond, type, NULL) ||
+ mutex_lock(&mutex) ||
+ mutex_unlock(&mutex));
;
return 0;
@@ -32584,28 +30407,12 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- db_cv_mutex="UI/threads/library"
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ db_cv_mutex=UI/threads/library
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
@@ -32613,32 +30420,32 @@ sed 's/^/| /' conftest.$ac_ext >&5
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
-LIBS="$orig_libs"
-fi
-if test "$db_cv_mutex" = no -o "$db_cv_mutex" = "ui_only"; then
-cat >conftest.$ac_ext <<_ACEOF
+ LIBS="$orig_libs"
+ fi
+ if test "$db_cv_mutex" = no -o "$db_cv_mutex" = ui_only; then
+ cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-#include <thread.h>
-#include <synch.h>
+ #include <thread.h>
+ #include <synch.h>
int
main ()
{
- mutex_t mutex;
- cond_t cond;
- int type = USYNC_PROCESS;
- exit (
- mutex_init(&mutex, type, NULL) ||
- cond_init(&cond, type, NULL) ||
- mutex_lock(&mutex) ||
- mutex_unlock(&mutex));
+ mutex_t mutex;
+ cond_t cond;
+ int type = USYNC_PROCESS;
+ exit (
+ mutex_init(&mutex, type, NULL) ||
+ cond_init(&cond, type, NULL) ||
+ mutex_lock(&mutex) ||
+ mutex_unlock(&mutex));
;
return 0;
@@ -32657,28 +30464,12 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- db_cv_mutex="UI/threads"
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ db_cv_mutex=UI/threads
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
@@ -32686,80 +30477,61 @@ sed 's/^/| /' conftest.$ac_ext >&5
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
-fi
-if test "$db_cv_mutex" = "ui_only"; then
- { { echo "$as_me:$LINENO: error: unable to find UI mutex interfaces" >&5
+ fi
+ if test "$db_cv_mutex" = ui_only; then
+ { { echo "$as_me:$LINENO: error: unable to find UI mutex interfaces" >&5
echo "$as_me: error: unable to find UI mutex interfaces" >&2;}
{ (exit 1); exit 1; }; }
-fi
+ fi
-# msemaphore: HPPA only
-# Try HPPA before general msem test, it needs special alignment.
-if test "$db_cv_mutex" = no; then
-cat >conftest.$ac_ext <<_ACEOF
+ # We're done testing for pthreads-style mutexes. Next, check for
+ # test-and-set mutexes. Check first for hybrid implementations,
+ # because we check for them even if we've already found a
+ # pthreads-style mutex and they're the most common architectures
+ # anyway.
+ #
+ # x86/gcc: FreeBSD, NetBSD, BSD/OS, Linux
+ cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-#include <sys/mman.h>
int
main ()
{
-#if defined(__hppa)
- typedef msemaphore tsl_t;
- msemaphore x;
- msem_init(&x, 0);
- msem_lock(&x, 0);
- msem_unlock(&x, 0);
- exit(0);
-#else
- FAIL TO COMPILE/LINK
-#endif
+ #if (defined(i386) || defined(__i386__)) && defined(__GNUC__)
+ exit(0);
+ #else
+ FAIL TO COMPILE/LINK
+ #endif
;
return 0;
}
_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_link") 2>conftest.er1
+ (eval "$ac_compile") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- db_cv_mutex="HP/msem_init"
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ db_cv_mutex="$db_cv_mutex/x86/gcc-assembly"
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
@@ -32767,71 +30539,48 @@ sed 's/^/| /' conftest.$ac_ext >&5
fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-# msemaphore: AIX, OSF/1
-if test "$db_cv_mutex" = no; then
-cat >conftest.$ac_ext <<_ACEOF
+ # x86_64/gcc: FreeBSD, NetBSD, BSD/OS, Linux
+ cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-#include <sys/types.h>
-#include <sys/mman.h>
int
main ()
{
- typedef msemaphore tsl_t;
- msemaphore x;
- msem_init(&x, 0);
- msem_lock(&x, 0);
- msem_unlock(&x, 0);
- exit(0);
+ #if (defined(x86_64) || defined(__x86_64__)) && defined(__GNUC__)
+ exit(0);
+ #else
+ FAIL TO COMPILE/LINK
+ #endif
;
return 0;
}
_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_link") 2>conftest.er1
+ (eval "$ac_compile") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- db_cv_mutex="UNIX/msem_init"
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ db_cv_mutex="$db_cv_mutex/x86_64/gcc-assembly"
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
@@ -32839,30 +30588,29 @@ sed 's/^/| /' conftest.$ac_ext >&5
fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-# ReliantUNIX
-if test "$db_cv_mutex" = no; then
-LIBS="$LIBS -lmproc"
-cat >conftest.$ac_ext <<_ACEOF
+ # Solaris is one of the systems where we can configure hybrid mutexes.
+ # However, we require the membar_enter function for that, and only newer
+ # Solaris releases have it. Check to see if we can configure hybrids.
+ cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-#include <ulocks.h>
+ #include <sys/atomic.h>
+ #include <sys/machlock.h>
int
main ()
{
- typedef spinlock_t tsl_t;
- spinlock_t x;
- initspin(&x, 1);
- cspinlock(&x);
- spinunlock(&x);
+ typedef lock_t tsl_t;
+ lock_t x;
+ _lock_try(&x);
+ _lock_clear(&x);
+ membar_enter();
;
return 0;
@@ -32881,28 +30629,12 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- db_cv_mutex="ReliantUNIX/initspin"
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ db_cv_mutex="$db_cv_mutex/Solaris/_lock_try/membar"
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
@@ -32910,14 +30642,11 @@ sed 's/^/| /' conftest.$ac_ext >&5
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
-LIBS="$orig_libs"
-fi
-# SCO: UnixWare has threads in libthread, but OpenServer doesn't.
-if test "$db_cv_mutex" = no; then
-cat >conftest.$ac_ext <<_ACEOF
+ # Sparc/gcc: SunOS, Solaris
+ cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -32928,11 +30657,11 @@ int
main ()
{
-#if defined(__USLC__)
- exit(0);
-#else
- FAIL TO COMPILE/LINK
-#endif
+ #if defined(__sparc__) && defined(__GNUC__)
+ exit(0);
+ #else
+ FAIL TO COMPILE/LINK
+ #endif
;
return 0;
@@ -32951,28 +30680,11 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- db_cv_mutex="SCO/x86/cc-assembly"
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ db_cv_mutex="$db_cv_mutex/Sparc/gcc-assembly"
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
@@ -32981,9 +30693,21 @@ sed 's/^/| /' conftest.$ac_ext >&5
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+ # We're done testing for any hybrid mutex implementations. If we did
+ # not find a pthreads-style mutex, but did find a test-and-set mutex,
+ # we set db_cv_mutex to "no/XXX" -- clean that up.
+ db_cv_mutex=`echo $db_cv_mutex | sed 's/^no\///'`
fi
-# abilock_t: SGI
+# If we still don't have a mutex implementation yet, continue testing for a
+# test-and-set mutex implementation.
+
+# _lock_try/_lock_clear: Solaris
+# On Solaris systems without other mutex interfaces, DB uses the undocumented
+# _lock_try _lock_clear function calls instead of either the sema_trywait(3T)
+# or sema_wait(3T) function calls. This is because of problems in those
+# interfaces in some releases of the Solaris C library.
if test "$db_cv_mutex" = no; then
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
@@ -32992,16 +30716,16 @@ cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-#include <abi_mutex.h>
+#include <sys/atomic.h>
+#include <sys/machlock.h>
int
main ()
{
- typedef abilock_t tsl_t;
- abilock_t x;
- init_lock(&x);
- acquire_lock(&x);
- release_lock(&x);
+ typedef lock_t tsl_t;
+ lock_t x;
+ _lock_try(&x);
+ _lock_clear(&x);
;
return 0;
@@ -33020,28 +30744,12 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- db_cv_mutex="SGI/init_lock"
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ db_cv_mutex=Solaris/_lock_try
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
@@ -33049,15 +30757,13 @@ sed 's/^/| /' conftest.$ac_ext >&5
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
fi
-# sema_t: Solaris
-# The sema_XXX calls do not work on Solaris 5.5. I see no reason to ever
-# turn this test on, unless we find some other platform that uses the old
-# POSIX.1 interfaces. (I plan to move directly to pthreads on Solaris.)
-if test "$db_cv_mutex" = DOESNT_WORK; then
+# msemaphore: HPPA only
+# Try HPPA before general msem test, it needs special alignment.
+if test "$db_cv_mutex" = no; then
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
@@ -33065,16 +30771,21 @@ cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-#include <synch.h>
+#include <sys/mman.h>
int
main ()
{
- typedef sema_t tsl_t;
- sema_t x;
- sema_init(&x, 1, USYNC_PROCESS, NULL);
- sema_wait(&x);
- sema_post(&x);
+#if defined(__hppa)
+ typedef msemaphore tsl_t;
+ msemaphore x;
+ msem_init(&x, 0);
+ msem_lock(&x, 0);
+ msem_unlock(&x, 0);
+ exit(0);
+#else
+ FAIL TO COMPILE/LINK
+#endif
;
return 0;
@@ -33093,28 +30804,12 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- db_cv_mutex="UNIX/sema_init"
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ db_cv_mutex=HP/msem_init
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
@@ -33122,15 +30817,11 @@ sed 's/^/| /' conftest.$ac_ext >&5
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
fi
-# _lock_try/_lock_clear: Solaris
-# On Solaris systems without Pthread or UI mutex interfaces, DB uses the
-# undocumented _lock_try _lock_clear function calls instead of either the
-# sema_trywait(3T) or sema_wait(3T) function calls. This is because of
-# problems in those interfaces in some releases of the Solaris C library.
+# msemaphore: AIX, OSF/1
if test "$db_cv_mutex" = no; then
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
@@ -33139,15 +30830,18 @@ cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-#include <sys/machlock.h>
+#include <sys/types.h>
+#include <sys/mman.h>
int
main ()
{
- typedef lock_t tsl_t;
- lock_t x;
- _lock_try(&x);
- _lock_clear(&x);
+ typedef msemaphore tsl_t;
+ msemaphore x;
+ msem_init(&x, 0);
+ msem_lock(&x, 0);
+ msem_unlock(&x, 0);
+ exit(0);
;
return 0;
@@ -33166,28 +30860,12 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- db_cv_mutex="Solaris/_lock_try"
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ db_cv_mutex=UNIX/msem_init
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
@@ -33195,12 +30873,13 @@ sed 's/^/| /' conftest.$ac_ext >&5
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
fi
-# _check_lock/_clear_lock: AIX
+# ReliantUNIX
if test "$db_cv_mutex" = no; then
+LIBS="$LIBS -lmproc"
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
@@ -33208,14 +30887,16 @@ cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-#include <sys/atomic_op.h>
+#include <ulocks.h>
int
main ()
{
- int x;
- _check_lock(&x,0,1);
- _clear_lock(&x,0);
+ typedef spinlock_t tsl_t;
+ spinlock_t x;
+ initspin(&x, 1);
+ cspinlock(&x);
+ spinunlock(&x);
;
return 0;
@@ -33234,28 +30915,12 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- db_cv_mutex="AIX/_check_lock"
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ db_cv_mutex=ReliantUNIX/initspin
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
@@ -33263,11 +30928,12 @@ sed 's/^/| /' conftest.$ac_ext >&5
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
+LIBS="$orig_libs"
fi
-# _spin_lock_try/_spin_unlock: Apple/Darwin
+# SCO: UnixWare has threads in libthread, but OpenServer doesn't.
if test "$db_cv_mutex" = no; then
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
@@ -33280,49 +30946,34 @@ int
main ()
{
- int x;
- _spin_lock_try(&x);
- _spin_unlock(&x);
+#if defined(__USLC__)
+ exit(0);
+#else
+ FAIL TO COMPILE/LINK
+#endif
;
return 0;
}
_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_link") 2>conftest.er1
+ (eval "$ac_compile") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- db_cv_mutex="Darwin/_spin_lock_try"
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ db_cv_mutex=SCO/x86/cc-assembly
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
@@ -33330,11 +30981,10 @@ sed 's/^/| /' conftest.$ac_ext >&5
fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
-# Tru64/cc
+# abilock_t: SGI
if test "$db_cv_mutex" = no; then
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
@@ -33343,55 +30993,40 @@ cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
+#include <abi_mutex.h>
int
main ()
{
-#if defined(__alpha) && defined(__DECC)
- exit(0);
-#else
- FAIL TO COMPILE/LINK
-#endif
+ typedef abilock_t tsl_t;
+ abilock_t x;
+ init_lock(&x);
+ acquire_lock(&x);
+ release_lock(&x);
;
return 0;
}
_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
+ (eval "$ac_link") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- db_cv_mutex="Tru64/cc-assembly"
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ db_cv_mutex=SGI/init_lock
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
@@ -33399,11 +31034,15 @@ sed 's/^/| /' conftest.$ac_ext >&5
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
fi
-# Alpha/gcc
-if test "$db_cv_mutex" = no; then
+# sema_t: Solaris
+# The sema_XXX calls do not work on Solaris 5.5. I see no reason to ever
+# turn this test on, unless we find some other platform that uses the old
+# POSIX.1 interfaces.
+if test "$db_cv_mutex" = DOESNT_WORK; then
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
@@ -33411,55 +31050,40 @@ cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
+#include <synch.h>
int
main ()
{
-#if defined(__alpha) && defined(__GNUC__)
- exit(0);
-#else
- FAIL TO COMPILE/LINK
-#endif
+ typedef sema_t tsl_t;
+ sema_t x;
+ sema_init(&x, 1, USYNC_PROCESS, NULL);
+ sema_wait(&x);
+ sema_post(&x);
;
return 0;
}
_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
+ (eval "$ac_link") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- db_cv_mutex="ALPHA/gcc-assembly"
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ db_cv_mutex=UNIX/sema_init
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
@@ -33467,10 +31091,11 @@ sed 's/^/| /' conftest.$ac_ext >&5
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
fi
-# ARM/gcc: Linux
+# _check_lock/_clear_lock: AIX
if test "$db_cv_mutex" = no; then
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
@@ -33479,55 +31104,38 @@ cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
+#include <sys/atomic_op.h>
int
main ()
{
-#if defined(__arm__) && defined(__GNUC__)
- exit(0);
-#else
- FAIL TO COMPILE/LINK
-#endif
+ int x;
+ _check_lock(&x,0,1);
+ _clear_lock(&x,0);
;
return 0;
}
_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
+ (eval "$ac_link") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- db_cv_mutex="ARM/gcc-assembly"
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ db_cv_mutex=AIX/_check_lock
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
@@ -33535,10 +31143,11 @@ sed 's/^/| /' conftest.$ac_ext >&5
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
fi
-# MIPS/gcc: Linux
+# _spin_lock_try/_spin_unlock: Apple/Darwin
if test "$db_cv_mutex" = no; then
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
@@ -33551,51 +31160,33 @@ int
main ()
{
-#if (defined(__mips) || defined(__mips__)) && defined(__GNUC__)
- exit(0);
-#else
- FAIL TO COMPILE/LINK
-#endif
+ int x;
+ _spin_lock_try(&x);
+ _spin_unlock(&x);
;
return 0;
}
_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
+ (eval "$ac_link") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- db_cv_mutex="MIPS/gcc-assembly"
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ db_cv_mutex=Darwin/_spin_lock_try
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
@@ -33603,10 +31194,11 @@ sed 's/^/| /' conftest.$ac_ext >&5
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
fi
-# MIPS/gcc: Linux
+# Tru64/cc
if test "$db_cv_mutex" = no; then
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
@@ -33619,7 +31211,7 @@ int
main ()
{
-#if (defined(__mips) || defined(__mips__)) && defined(__GNUC__)
+#if defined(__alpha) && defined(__DECC)
exit(0);
#else
FAIL TO COMPILE/LINK
@@ -33642,28 +31234,11 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- db_cv_mutex="MIPS/gcc-assembly"
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ db_cv_mutex=Tru64/cc-assembly
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
@@ -33674,7 +31249,7 @@ fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
-# PaRisc/gcc: HP/UX
+# Alpha/gcc
if test "$db_cv_mutex" = no; then
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
@@ -33687,7 +31262,7 @@ int
main ()
{
-#if (defined(__hppa) || defined(__hppa__)) && defined(__GNUC__)
+#if defined(__alpha) && defined(__GNUC__)
exit(0);
#else
FAIL TO COMPILE/LINK
@@ -33710,28 +31285,11 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- db_cv_mutex="HPPA/gcc-assembly"
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ db_cv_mutex=ALPHA/gcc-assembly
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
@@ -33742,7 +31300,7 @@ fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
-# PPC/gcc:
+# ARM/gcc: Linux
if test "$db_cv_mutex" = no; then
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
@@ -33755,7 +31313,7 @@ int
main ()
{
-#if (defined(__powerpc__) || defined(__ppc__)) && defined(__GNUC__)
+#if defined(__arm__) && defined(__GNUC__)
exit(0);
#else
FAIL TO COMPILE/LINK
@@ -33778,28 +31336,11 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- db_cv_mutex="PPC/gcc-assembly"
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ db_cv_mutex=ARM/gcc-assembly
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
@@ -33810,7 +31351,7 @@ fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
-# Sparc/gcc: SunOS, Solaris
+# MIPS/gcc: Linux
if test "$db_cv_mutex" = no; then
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
@@ -33823,7 +31364,7 @@ int
main ()
{
-#if defined(__sparc__) && defined(__GNUC__)
+#if (defined(__mips) || defined(__mips__)) && defined(__GNUC__)
exit(0);
#else
FAIL TO COMPILE/LINK
@@ -33846,28 +31387,11 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- db_cv_mutex="Sparc/gcc-assembly"
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ db_cv_mutex=MIPS/gcc-assembly
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
@@ -33878,7 +31402,7 @@ fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
-# 68K/gcc: SunOS
+# PaRisc/gcc: HP/UX
if test "$db_cv_mutex" = no; then
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
@@ -33891,7 +31415,7 @@ int
main ()
{
-#if (defined(mc68020) || defined(sun3)) && defined(__GNUC__)
+#if (defined(__hppa) || defined(__hppa__)) && defined(__GNUC__)
exit(0);
#else
FAIL TO COMPILE/LINK
@@ -33914,28 +31438,11 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- db_cv_mutex="68K/gcc-assembly"
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ db_cv_mutex=HPPA/gcc-assembly
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
@@ -33946,7 +31453,7 @@ fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
-# x86/gcc: FreeBSD, NetBSD, BSD/OS, Linux
+# PPC/gcc:
if test "$db_cv_mutex" = no; then
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
@@ -33959,7 +31466,7 @@ int
main ()
{
-#if (defined(i386) || defined(__i386__)) && defined(__GNUC__)
+#if (defined(__powerpc__) || defined(__ppc__)) && defined(__GNUC__)
exit(0);
#else
FAIL TO COMPILE/LINK
@@ -33982,28 +31489,11 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- db_cv_mutex="x86/gcc-assembly"
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ db_cv_mutex=PPC/gcc-assembly
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
@@ -34014,7 +31504,7 @@ fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
-# x86_64/gcc: FreeBSD, NetBSD, BSD/OS, Linux
+# 68K/gcc: SunOS
if test "$db_cv_mutex" = no; then
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
@@ -34027,7 +31517,7 @@ int
main ()
{
-#if (defined(x86_64) || defined(__x86_64__)) && defined(__GNUC__)
+#if (defined(mc68020) || defined(sun3)) && defined(__GNUC__)
exit(0);
#else
FAIL TO COMPILE/LINK
@@ -34050,28 +31540,11 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- db_cv_mutex="x86_64/gcc-assembly"
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ db_cv_mutex=68K/gcc-assembly
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
@@ -34118,28 +31591,11 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- db_cv_mutex="S390/cc-assembly"
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ db_cv_mutex=S390/cc-assembly
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
@@ -34186,28 +31642,11 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- db_cv_mutex="S390/gcc-assembly"
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ db_cv_mutex=S390/gcc-assembly
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
@@ -34254,28 +31693,11 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- db_cv_mutex="ia64/gcc-assembly"
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ db_cv_mutex=ia64/gcc-assembly
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
@@ -34322,28 +31744,66 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ db_cv_mutex=UTS/cc-assembly
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+# UNIX fcntl system call mutexes.
+if test "$db_cv_mutex" = no; then
+ db_cv_mutex=UNIX/fcntl
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <fcntl.h>
+int
+main ()
+{
+
+ struct flock l;
+ l.l_whence = SEEK_SET;
+ l.l_start = 10;
+ l.l_len = 1;
+ l.l_type = F_WRLCK;
+ fcntl(0, F_SETLK, &l);
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
+ (eval "$ac_link") 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- db_cv_mutex="UTS/cc-assembly"
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ db_cv_mutex=UNIX/fcntl
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
@@ -34351,116 +31811,148 @@ sed 's/^/| /' conftest.$ac_ext >&5
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-# default to UNIX fcntl system call mutexes.
-if test "$db_cv_mutex" = no; then
- db_cv_mutex="UNIX/fcntl"
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
fi
fi
{ echo "$as_me:$LINENO: result: $db_cv_mutex" >&5
echo "${ECHO_T}$db_cv_mutex" >&6; }
+# Mutexes may not have been found, or may have been disabled.
+case "$db_cv_mutex" in
+disabled) ;;
+no)
+ { { echo "$as_me:$LINENO: error: Unable to find a mutex implementation" >&5
+echo "$as_me: error: Unable to find a mutex implementation" >&2;}
+ { (exit 1); exit 1; }; };;
+*) cat >>confdefs.h <<\_ACEOF
+#define HAVE_MUTEX_SUPPORT 1
+_ACEOF
-db_threadid_t_decl=notset
+esac
+
+# Configure a pthreads-style mutex implementation.
+hybrid=pthread
case "$db_cv_mutex" in
-68K/gcc-assembly) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
+POSIX/pthreads*) ADDITIONAL_OBJS="mut_pthread${o} $ADDITIONAL_OBJS"
cat >>confdefs.h <<\_ACEOF
-#define HAVE_MUTEX_68K_GCC_ASSEMBLY 1
+#define HAVE_MUTEX_PTHREADS 1
_ACEOF
;;
-AIX/_check_lock) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
+POSIX/pthreads/private*)ADDITIONAL_OBJS="mut_pthread${o} $ADDITIONAL_OBJS"
cat >>confdefs.h <<\_ACEOF
-#define HAVE_MUTEX_AIX_CHECK_LOCK 1
+#define HAVE_MUTEX_PTHREADS 1
+_ACEOF
+
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_MUTEX_THREAD_ONLY 1
_ACEOF
;;
-Darwin/_spin_lock_try) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
+POSIX/pthreads/library*)ADDITIONAL_OBJS="mut_pthread${o} $ADDITIONAL_OBJS"
cat >>confdefs.h <<\_ACEOF
-#define HAVE_MUTEX_DARWIN_SPIN_LOCK_TRY 1
+#define HAVE_MUTEX_PTHREADS 1
+_ACEOF
+;;
+POSIX/pthreads/library/private*)
+ ADDITIONAL_OBJS="mut_pthread${o} $ADDITIONAL_OBJS"
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_MUTEX_PTHREADS 1
_ACEOF
-
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_MUTEX_THREAD_ONLY 1
+_ACEOF
;;
-ALPHA/gcc-assembly) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
+Solaris/lwp*) ADDITIONAL_OBJS="mut_pthread${o} $ADDITIONAL_OBJS"
cat >>confdefs.h <<\_ACEOF
-#define HAVE_MUTEX_ALPHA_GCC_ASSEMBLY 1
+#define HAVE_MUTEX_SOLARIS_LWP 1
_ACEOF
;;
-ARM/gcc-assembly) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
+UI/threads*) ADDITIONAL_OBJS="mut_pthread${o} $ADDITIONAL_OBJS"
cat >>confdefs.h <<\_ACEOF
-#define HAVE_MUTEX_ARM_GCC_ASSEMBLY 1
+#define HAVE_MUTEX_UI_THREADS 1
_ACEOF
;;
-HP/msem_init) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
+UI/threads/library*) ADDITIONAL_OBJS="mut_pthread${o} $ADDITIONAL_OBJS"
cat >>confdefs.h <<\_ACEOF
-#define HAVE_MUTEX_HPPA_MSEM_INIT 1
+#define HAVE_MUTEX_UI_THREADS 1
+_ACEOF
+;;
+*) hybrid=no;;
+esac
+
+# Configure a test-and-set mutex implementation.
+case "$db_cv_mutex" in
+68K/gcc-assembly) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_MUTEX_68K_GCC_ASSEMBLY 1
_ACEOF
;;
-HPPA/gcc-assembly) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
+AIX/_check_lock) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
cat >>confdefs.h <<\_ACEOF
-#define HAVE_MUTEX_HPPA_GCC_ASSEMBLY 1
+#define HAVE_MUTEX_AIX_CHECK_LOCK 1
_ACEOF
;;
-ia64/gcc-assembly) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
+Darwin/_spin_lock_try) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
cat >>confdefs.h <<\_ACEOF
-#define HAVE_MUTEX_IA64_GCC_ASSEMBLY 1
+#define HAVE_MUTEX_DARWIN_SPIN_LOCK_TRY 1
_ACEOF
;;
-POSIX/pthreads) ADDITIONAL_OBJS="mut_pthread${o} $ADDITIONAL_OBJS"
+ALPHA/gcc-assembly) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
cat >>confdefs.h <<\_ACEOF
-#define HAVE_MUTEX_PTHREADS 1
+#define HAVE_MUTEX_ALPHA_GCC_ASSEMBLY 1
_ACEOF
;;
-POSIX/pthreads/private) ADDITIONAL_OBJS="mut_pthread${o} $ADDITIONAL_OBJS"
+ARM/gcc-assembly) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
cat >>confdefs.h <<\_ACEOF
-#define HAVE_MUTEX_PTHREADS 1
+#define HAVE_MUTEX_ARM_GCC_ASSEMBLY 1
_ACEOF
-
+;;
+HP/msem_init) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
cat >>confdefs.h <<\_ACEOF
-#define HAVE_MUTEX_THREAD_ONLY 1
+#define HAVE_MUTEX_HPPA_MSEM_INIT 1
_ACEOF
;;
-POSIX/pthreads/library) ADDITIONAL_OBJS="mut_pthread${o} $ADDITIONAL_OBJS"
+HPPA/gcc-assembly) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
cat >>confdefs.h <<\_ACEOF
-#define HAVE_MUTEX_PTHREADS 1
+#define HAVE_MUTEX_HPPA_GCC_ASSEMBLY 1
_ACEOF
;;
-POSIX/pthreads/library/private)
- ADDITIONAL_OBJS="mut_pthread${o} $ADDITIONAL_OBJS"
+ia64/gcc-assembly) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
cat >>confdefs.h <<\_ACEOF
-#define HAVE_MUTEX_PTHREADS 1
+#define HAVE_MUTEX_IA64_GCC_ASSEMBLY 1
_ACEOF
-
+;;
+MIPS/gcc-assembly) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
cat >>confdefs.h <<\_ACEOF
-#define HAVE_MUTEX_THREAD_ONLY 1
+#define HAVE_MUTEX_MIPS_GCC_ASSEMBLY 1
_ACEOF
@@ -34516,14 +32008,17 @@ _ACEOF
;;
-Solaris/lwp) ADDITIONAL_OBJS="mut_pthread${o} $ADDITIONAL_OBJS"
+*Solaris/_lock_try/membar)
+ hybrid="$hybrid/tas"
+ ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
cat >>confdefs.h <<\_ACEOF
-#define HAVE_MUTEX_SOLARIS_LWP 1
+#define HAVE_MUTEX_SOLARIS_LOCK_TRY 1
_ACEOF
;;
-Sparc/gcc-assembly) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
+*Sparc/gcc-assembly) hybrid="$hybrid/tas"
+ ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
cat >>confdefs.h <<\_ACEOF
#define HAVE_MUTEX_SPARC_GCC_ASSEMBLY 1
_ACEOF
@@ -34537,20 +32032,6 @@ _ACEOF
;;
-UI/threads) ADDITIONAL_OBJS="mut_pthread${o} $ADDITIONAL_OBJS"
- cat >>confdefs.h <<\_ACEOF
-#define HAVE_MUTEX_UI_THREADS 1
-_ACEOF
-
-
-;;
-UI/threads/library) ADDITIONAL_OBJS="mut_pthread${o} $ADDITIONAL_OBJS"
- cat >>confdefs.h <<\_ACEOF
-#define HAVE_MUTEX_UI_THREADS 1
-_ACEOF
-
-
-;;
UNIX/msem_init) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
cat >>confdefs.h <<\_ACEOF
#define HAVE_MUTEX_MSEM_INIT 1
@@ -34572,54 +32053,61 @@ _ACEOF
;;
-win32) ADDITIONAL_OBJS="mut_win32${o} $ADDITIONAL_OBJS"
+*x86/gcc-assembly) hybrid="$hybrid/tas"
+ ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
cat >>confdefs.h <<\_ACEOF
-#define HAVE_MUTEX_WIN32 1
+#define HAVE_MUTEX_X86_GCC_ASSEMBLY 1
_ACEOF
;;
-win32/gcc) ADDITIONAL_OBJS="mut_win32${o} $ADDITIONAL_OBJS"
+*x86_64/gcc-assembly) hybrid="$hybrid/tas"
+ ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
cat >>confdefs.h <<\_ACEOF
-#define HAVE_MUTEX_WIN32_GCC 1
+#define HAVE_MUTEX_X86_64_GCC_ASSEMBLY 1
_ACEOF
;;
-MIPS/gcc-assembly) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
+esac
+
+# Configure the remaining special cases.
+case "$db_cv_mutex" in
+UNIX/fcntl) { echo "$as_me:$LINENO: WARNING: NO FAST MUTEXES FOUND FOR THIS COMPILER/ARCHITECTURE." >&5
+echo "$as_me: WARNING: NO FAST MUTEXES FOUND FOR THIS COMPILER/ARCHITECTURE." >&2;}
+ ADDITIONAL_OBJS="mut_fcntl${o} $ADDITIONAL_OBJS"
cat >>confdefs.h <<\_ACEOF
-#define HAVE_MUTEX_MIPS_GCC_ASSEMBLY 1
+#define HAVE_MUTEX_FCNTL 1
_ACEOF
;;
-x86/gcc-assembly) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
+win32) ADDITIONAL_OBJS="mut_win32${o} $ADDITIONAL_OBJS"
cat >>confdefs.h <<\_ACEOF
-#define HAVE_MUTEX_X86_GCC_ASSEMBLY 1
+#define HAVE_MUTEX_WIN32 1
_ACEOF
;;
-x86_64/gcc-assembly) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
+win32/gcc) ADDITIONAL_OBJS="mut_win32${o} $ADDITIONAL_OBJS"
cat >>confdefs.h <<\_ACEOF
-#define HAVE_MUTEX_X86_64_GCC_ASSEMBLY 1
+#define HAVE_MUTEX_WIN32_GCC 1
_ACEOF
;;
-UNIX/fcntl) { echo "$as_me:$LINENO: WARNING: NO FAST MUTEXES FOUND FOR THIS COMPILER/ARCHITECTURE." >&5
-echo "$as_me: WARNING: NO FAST MUTEXES FOUND FOR THIS COMPILER/ARCHITECTURE." >&2;}
- ADDITIONAL_OBJS="mut_fcntl${o} $ADDITIONAL_OBJS"
- cat >>confdefs.h <<\_ACEOF
-#define HAVE_MUTEX_FCNTL 1
+esac
+
+# We may have found both a pthreads-style mutex implementation as well as a
+# test-and-set, in which case configure for the hybrid.
+if test "$hybrid" = pthread/tas; then
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_MUTEX_HYBRID 1
_ACEOF
-;;
-*) { { echo "$as_me:$LINENO: error: Unknown mutex interface: $db_cv_mutex" >&5
-echo "$as_me: error: Unknown mutex interface: $db_cv_mutex" >&2;}
- { (exit 1); exit 1; }; };;
-esac
+
+fi
# The mutex selection may require specific declarations -- we fill in most of
# them above, but here are the common ones.
@@ -34640,8 +32128,13 @@ esac
#
# We can't depend on any specific call existing (pthread_create, for example),
# as it may be #defined in an include file -- OSF/1 (Tru64) has this problem.
+
+
+
+db_threadid_t_decl=notset
+
case "$db_cv_mutex" in
-POSIX/pthread*|Solaris/lwp)
+POSIX/pthread*|Solaris/lwp*)
thread_h_decl="#include <pthread.h>"
db_threadid_t_decl="typedef pthread_t db_threadid_t;"
{ echo "$as_me:$LINENO: checking for main in -lpthread" >&5
@@ -34680,27 +32173,11 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
ac_cv_lib_pthread_main=yes
else
echo "$as_me: failed program was:" >&5
@@ -34709,7 +32186,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_lib_pthread_main=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
@@ -34759,27 +32236,11 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
ac_cv_lib_thread_main=yes
else
echo "$as_me: failed program was:" >&5
@@ -34788,7 +32249,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_lib_thread_main=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
@@ -34800,7 +32261,7 @@ fi
ac_cv_lib_thread=ac_cv_lib_thread_main
;;
*)
- if test "$db_cv_pthread_api" = "yes"; then
+ if test "$db_cv_pthread_api" = yes; then
thread_h_decl="#include <pthread.h>"
db_threadid_t_decl="typedef pthread_t db_threadid_t;"
{ echo "$as_me:$LINENO: checking for main in -lpthread" >&5
@@ -34839,27 +32300,11 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
ac_cv_lib_pthread_main=yes
else
echo "$as_me: failed program was:" >&5
@@ -34868,7 +32313,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_lib_pthread_main=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
@@ -34888,7 +32333,7 @@ esac
# block of bytes. For example, MVS typedef's pthread_t to a structure.
-if test "$db_threadid_t_decl" = "notset"; then
+if test "$db_threadid_t_decl" = notset; then
db_threadid_t_decl="typedef uintmax_t db_threadid_t;"
cat >>confdefs.h <<\_ACEOF
#define HAVE_SIMPLE_THREAD_TYPE 1
@@ -34928,27 +32373,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
cat >>confdefs.h <<\_ACEOF
#define HAVE_SIMPLE_THREAD_TYPE 1
_ACEOF
@@ -34965,19 +32393,19 @@ fi
# If we're building replication and configured with POSIX pthreads or were
# told to build using the POSIX API, build the replication manager framework.
-db_cv_build_replication_mgr="no"
-if test "$db_cv_build_replication" = "yes"; then
+db_cv_build_replication_mgr=no
+if test "$db_cv_build_replication" = yes; then
case "$db_cv_mutex" in
POSIX/pthread*|Solaris/lwp)
- db_cv_build_replication_mgr="yes";;
+ db_cv_build_replication_mgr=yes;;
esac
- if test "$db_cv_pthread_api" = "yes"; then
- db_cv_build_replication_mgr="yes"
+ if test "$db_cv_pthread_api" = yes; then
+ db_cv_build_replication_mgr=yes
fi
- if test "$db_cv_build_replication_mgr" = "yes"; then
+ if test "$db_cv_build_replication_mgr" = yes; then
cat >>confdefs.h <<\_ACEOF
#define HAVE_REPLICATION_THREADS 1
_ACEOF
@@ -35024,27 +32452,11 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
ac_cv_lib_nsl_main=yes
else
echo "$as_me: failed program was:" >&5
@@ -35053,7 +32465,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_lib_nsl_main=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
@@ -35100,27 +32512,11 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
ac_cv_lib_socket_main=yes
else
echo "$as_me: failed program was:" >&5
@@ -35129,7 +32525,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_lib_socket_main=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
@@ -35175,16 +32571,15 @@ esac
# Test for various functions/libraries -- do tests that change library values
# first.
#
+# Update LIBS, so we're testing against the current list of libraries.
+LIBS="$LIBSO_LIBS"
+
# The yield function on Solaris is almost certainly pthread_yield (LWP threads
# or POSIX pthreads), or thr_yield (UI threads). There's an outside chance it
# is sched_yield() though, only available in -lrt on Solaris.
-#
-# The Berkeley DB library calls fdatasync, only available in -lrt on Solaris.
-# See if we can find either without additional libraries or in -lrt. If found
-# in -lrt and we haven't yet added -lrt, add it to the shared library list.
-{ echo "$as_me:$LINENO: checking for library containing fdatasync" >&5
-echo $ECHO_N "checking for library containing fdatasync... $ECHO_C" >&6; }
-if test "${ac_cv_search_fdatasync+set}" = set; then
+{ echo "$as_me:$LINENO: checking for library containing sched_yield" >&5
+echo $ECHO_N "checking for library containing sched_yield... $ECHO_C" >&6; }
+if test "${ac_cv_search_sched_yield+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
ac_func_search_save_LIBS=$LIBS
@@ -35201,11 +32596,11 @@ cat >>conftest.$ac_ext <<_ACEOF
#ifdef __cplusplus
extern "C"
#endif
-char fdatasync ();
+char sched_yield ();
int
main ()
{
-return fdatasync ();
+return sched_yield ();
;
return 0;
}
@@ -35230,27 +32625,96 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (case "(($ac_try" in
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_search_sched_yield=$ac_res
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext
+ if test "${ac_cv_search_sched_yield+set}" = set; then
+ break
+fi
+done
+if test "${ac_cv_search_sched_yield+set}" = set; then
+ :
+else
+ ac_cv_search_sched_yield=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_search_sched_yield" >&5
+echo "${ECHO_T}$ac_cv_search_sched_yield" >&6; }
+ac_res=$ac_cv_search_sched_yield
+if test "$ac_res" != no; then
+ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+
+# The Berkeley DB library calls fdatasync, only available in -lrt on Solaris.
+{ echo "$as_me:$LINENO: checking for library containing fdatasync" >&5
+echo $ECHO_N "checking for library containing fdatasync... $ECHO_C" >&6; }
+if test "${ac_cv_search_fdatasync+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_func_search_save_LIBS=$LIBS
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char fdatasync ();
+int
+main ()
+{
+return fdatasync ();
+ ;
+ return 0;
+}
+_ACEOF
+for ac_lib in '' rt; do
+ if test -z "$ac_lib"; then
+ ac_res="none required"
+ else
+ ac_res=-l$ac_lib
+ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+ fi
+ rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
+ (eval "$ac_link") 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
ac_cv_search_fdatasync=$ac_res
else
echo "$as_me: failed program was:" >&5
@@ -35259,7 +32723,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext
if test "${ac_cv_search_fdatasync+set}" = set; then
break
@@ -35278,13 +32742,13 @@ echo "${ECHO_T}$ac_cv_search_fdatasync" >&6; }
ac_res=$ac_cv_search_fdatasync
if test "$ac_res" != no; then
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
- if test "$ac_cv_search_fdatasync" != "none required" ; then
- LIBSO_LIBS="$LIBSO_LIBS -lrt";
- fi
-else
- { echo "$as_me:$LINENO: checking for library containing sched_yield" >&5
-echo $ECHO_N "checking for library containing sched_yield... $ECHO_C" >&6; }
-if test "${ac_cv_search_sched_yield+set}" = set; then
+
+fi
+
+
+{ echo "$as_me:$LINENO: checking for library containing getaddrinfo" >&5
+echo $ECHO_N "checking for library containing getaddrinfo... $ECHO_C" >&6; }
+if test "${ac_cv_search_getaddrinfo+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
ac_func_search_save_LIBS=$LIBS
@@ -35301,16 +32765,16 @@ cat >>conftest.$ac_ext <<_ACEOF
#ifdef __cplusplus
extern "C"
#endif
-char sched_yield ();
+char getaddrinfo ();
int
main ()
{
-return sched_yield ();
+return getaddrinfo ();
;
return 0;
}
_ACEOF
-for ac_lib in '' rt; do
+for ac_lib in '' nsl socket; do
if test -z "$ac_lib"; then
ac_res="none required"
else
@@ -35330,28 +32794,95 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (case "(($ac_try" in
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_search_getaddrinfo=$ac_res
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext
+ if test "${ac_cv_search_getaddrinfo+set}" = set; then
+ break
+fi
+done
+if test "${ac_cv_search_getaddrinfo+set}" = set; then
+ :
+else
+ ac_cv_search_getaddrinfo=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_search_getaddrinfo" >&5
+echo "${ECHO_T}$ac_cv_search_getaddrinfo" >&6; }
+ac_res=$ac_cv_search_getaddrinfo
+if test "$ac_res" != no; then
+ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+{ echo "$as_me:$LINENO: checking for library containing hstrerror" >&5
+echo $ECHO_N "checking for library containing hstrerror... $ECHO_C" >&6; }
+if test "${ac_cv_search_hstrerror+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_func_search_save_LIBS=$LIBS
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char hstrerror ();
+int
+main ()
+{
+return hstrerror ();
+ ;
+ return 0;
+}
+_ACEOF
+for ac_lib in '' resolv; do
+ if test -z "$ac_lib"; then
+ ac_res="none required"
+ else
+ ac_res=-l$ac_lib
+ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+ fi
+ rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
+ (eval "$ac_link") 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_search_sched_yield=$ac_res
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_search_hstrerror=$ac_res
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
@@ -35359,33 +32890,32 @@ sed 's/^/| /' conftest.$ac_ext >&5
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext
- if test "${ac_cv_search_sched_yield+set}" = set; then
+ if test "${ac_cv_search_hstrerror+set}" = set; then
break
fi
done
-if test "${ac_cv_search_sched_yield+set}" = set; then
+if test "${ac_cv_search_hstrerror+set}" = set; then
:
else
- ac_cv_search_sched_yield=no
+ ac_cv_search_hstrerror=no
fi
rm conftest.$ac_ext
LIBS=$ac_func_search_save_LIBS
fi
-{ echo "$as_me:$LINENO: result: $ac_cv_search_sched_yield" >&5
-echo "${ECHO_T}$ac_cv_search_sched_yield" >&6; }
-ac_res=$ac_cv_search_sched_yield
+{ echo "$as_me:$LINENO: result: $ac_cv_search_hstrerror" >&5
+echo "${ECHO_T}$ac_cv_search_hstrerror" >&6; }
+ac_res=$ac_cv_search_hstrerror
if test "$ac_res" != no; then
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
- if test "$ac_cv_search_sched_yield" != "none required" ; then
- LIBSO_LIBS="$LIBSO_LIBS -lrt";
- fi
-fi
fi
+# Those tests updated LIBS, update our internal list.
+LIBSO_LIBS="$LIBS"
+
# !!!
# We could be more exact about whether these libraries are needed, but don't
# bother -- if they exist, we load them, it's only the test programs anyway.
@@ -35425,27 +32955,11 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
ac_cv_lib_m_main=yes
else
echo "$as_me: failed program was:" >&5
@@ -35454,7 +32968,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_lib_m_main=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
@@ -35501,27 +33015,11 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
ac_cv_lib_nsl_main=yes
else
echo "$as_me: failed program was:" >&5
@@ -35530,7 +33028,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_lib_nsl_main=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
@@ -35577,27 +33075,11 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
ac_cv_lib_pthread_main=yes
else
echo "$as_me: failed program was:" >&5
@@ -35606,7 +33088,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_lib_pthread_main=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
@@ -35653,27 +33135,11 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
ac_cv_lib_socket_main=yes
else
echo "$as_me: failed program was:" >&5
@@ -35682,7 +33148,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_lib_socket_main=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
@@ -35694,10 +33160,6 @@ fi
ac_cv_lib_socket=ac_cv_lib_socket_main
-# Update LIBS so that the rest of our tests are run with the libraries we'll
-# load against.
-LIBS="$LIBSO_LIBS"
-
# Checks for system functions for which we have replacements.
#
# The only portable getcwd call is getcwd(char *, size_t), where the
@@ -35730,10 +33192,12 @@ LIBS="$LIBSO_LIBS"
+
for ac_func in \
- abort atoi atol getcwd getenv getopt isalpha isdigit isprint isspace\
- memcmp memcpy memmove printf raise rand strcasecmp strcat strchr\
- strdup strerror strncat strncmp strrchr strsep strtol strtoul
+ abort atoi atol getcwd getenv getopt isalpha isdigit isprint\
+ isspace memcmp memcpy memmove printf qsort raise rand strcasecmp\
+ strcat strchr strdup strerror strncat strncmp strrchr strsep\
+ strtol strtoul
do
as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
{ echo "$as_me:$LINENO: checking for $ac_func" >&5
@@ -35799,27 +33263,11 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
eval "$as_ac_var=yes"
else
echo "$as_me: failed program was:" >&5
@@ -35828,7 +33276,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
eval "$as_ac_var=no"
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
fi
ac_res=`eval echo '${'$as_ac_var'}'`
@@ -35874,11 +33322,19 @@ done
+
+
+
+
+
+
+
for ac_func in \
- _fstati64 clock_gettime directio fchmod fcntl fdatasync getaddrinfo\
- getrusage gettimeofday getuid mprotect pstat_getdynamic pthread_yield\
- sched_yield select sigaction snprintf stat strftime sysconf vsnprintf\
- yield
+ _fstati64 directio fchmod fclose fcntl fdatasync fgetc fgets\
+ fopen fwrite getaddrinfo getrusage gettimeofday getuid hstrerror\
+ localtime mprotect pstat_getdynamic pthread_yield sched_yield\
+ select sigaction snprintf stat strftime sysconf time vsnprintf\
+ yield
do
as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
{ echo "$as_me:$LINENO: checking for $ac_func" >&5
@@ -35944,27 +33400,11 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
eval "$as_ac_var=yes"
else
echo "$as_me: failed program was:" >&5
@@ -35973,7 +33413,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
eval "$as_ac_var=no"
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
fi
ac_res=`eval echo '${'$as_ac_var'}'`
@@ -36056,27 +33496,11 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
eval "$as_ac_var=yes"
else
echo "$as_me: failed program was:" >&5
@@ -36085,7 +33509,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
eval "$as_ac_var=no"
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
fi
ac_res=`eval echo '${'$as_ac_var'}'`
@@ -36106,13 +33530,14 @@ if test \
echo "$as_me: WARNING: replication requires ftruncate, replication disabled." >&2;}
fi
-# ctime_r --
-#
-# There are two versions of ctime_r, one of which takes a buffer length as a
-# third argument, and one which only takes two arguments. (There is also a
-# difference in return values, but we handle that in the code itself.)
+# AIX 4.3 will link applications with calls to clock_gettime, but the
+# calls always fail.
+case "$host_os" in
+aix4.3.*)
+ ;;
+*)
-for ac_func in ctime_r
+for ac_func in clock_gettime
do
as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
{ echo "$as_me:$LINENO: checking for $ac_func" >&5
@@ -36178,27 +33603,112 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval echo '${'$as_ac_var'}'`
+ { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+;;
esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (case "(($ac_try" in
+
+# ctime_r --
+#
+# There are two versions of ctime_r, one of which takes a buffer length as a
+# third argument, and one which only takes two arguments. (There is also a
+# difference in return values, but we handle that in the code itself.)
+
+for ac_func in ctime_r
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
+ (eval "$ac_link") 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
eval "$as_ac_var=yes"
else
echo "$as_me: failed program was:" >&5
@@ -36207,7 +33717,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
eval "$as_ac_var=no"
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
fi
ac_res=`eval echo '${'$as_ac_var'}'`
@@ -36259,27 +33769,11 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
db_cv_ctime_r_3arg="3-argument"
else
echo "$as_me: failed program was:" >&5
@@ -36288,7 +33782,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
db_cv_ctime_r_3arg="2-argument"
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
fi
{ echo "$as_me:$LINENO: result: $db_cv_ctime_r_3arg" >&5
@@ -36379,27 +33873,11 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
eval "$as_ac_var=yes"
else
echo "$as_me: failed program was:" >&5
@@ -36408,7 +33886,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
eval "$as_ac_var=no"
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
fi
ac_res=`eval echo '${'$as_ac_var'}'`
@@ -36463,27 +33941,11 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
db_cv_fcntl_f_setfd=yes
else
echo "$as_me: failed program was:" >&5
@@ -36492,7 +33954,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
db_cv_fcntl_f_setfd=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
fi
{ echo "$as_me:$LINENO: result: $db_cv_fcntl_f_setfd" >&5
@@ -36558,27 +34020,11 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
db_cv_open_o_direct=yes
else
echo "$as_me: failed program was:" >&5
@@ -36587,7 +34033,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
db_cv_open_o_direct=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
fi
{ echo "$as_me:$LINENO: result: $db_cv_open_o_direct" >&5
@@ -36658,27 +34104,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
break
else
echo "$as_me: failed program was:" >&5
@@ -36702,27 +34131,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_cv_sys_largefile_CC=' -n32'; break
else
echo "$as_me: failed program was:" >&5
@@ -36750,7 +34162,6 @@ if test "${ac_cv_sys_file_offset_bits+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
while :; do
- ac_cv_sys_file_offset_bits=no
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
@@ -36787,28 +34198,11 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- break
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_sys_file_offset_bits=no; break
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
@@ -36854,27 +34248,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_cv_sys_file_offset_bits=64; break
else
echo "$as_me: failed program was:" >&5
@@ -36884,26 +34261,28 @@ sed 's/^/| /' conftest.$ac_ext >&5
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_cv_sys_file_offset_bits=unknown
break
done
fi
{ echo "$as_me:$LINENO: result: $ac_cv_sys_file_offset_bits" >&5
echo "${ECHO_T}$ac_cv_sys_file_offset_bits" >&6; }
-if test "$ac_cv_sys_file_offset_bits" != no; then
-
+case $ac_cv_sys_file_offset_bits in #(
+ no | unknown) ;;
+ *)
cat >>confdefs.h <<_ACEOF
#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
_ACEOF
-
-fi
+;;
+esac
rm -f conftest*
- { echo "$as_me:$LINENO: checking for _LARGE_FILES value needed for large files" >&5
+ if test $ac_cv_sys_file_offset_bits = unknown; then
+ { echo "$as_me:$LINENO: checking for _LARGE_FILES value needed for large files" >&5
echo $ECHO_N "checking for _LARGE_FILES value needed for large files... $ECHO_C" >&6; }
if test "${ac_cv_sys_large_files+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
while :; do
- ac_cv_sys_large_files=no
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
@@ -36940,28 +34319,11 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- break
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_sys_large_files=no; break
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
@@ -37007,27 +34369,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
ac_cv_sys_large_files=1; break
else
echo "$as_me: failed program was:" >&5
@@ -37037,19 +34382,22 @@ sed 's/^/| /' conftest.$ac_ext >&5
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_cv_sys_large_files=unknown
break
done
fi
{ echo "$as_me:$LINENO: result: $ac_cv_sys_large_files" >&5
echo "${ECHO_T}$ac_cv_sys_large_files" >&6; }
-if test "$ac_cv_sys_large_files" != no; then
-
+case $ac_cv_sys_large_files in #(
+ no | unknown) ;;
+ *)
cat >>confdefs.h <<_ACEOF
#define _LARGE_FILES $ac_cv_sys_large_files
_ACEOF
-
-fi
+;;
+esac
rm -f conftest*
+ fi
fi
@@ -37138,27 +34486,11 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
eval "$as_ac_var=yes"
else
echo "$as_me: failed program was:" >&5
@@ -37167,7 +34499,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
eval "$as_ac_var=no"
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
fi
ac_res=`eval echo '${'$as_ac_var'}'`
@@ -37256,27 +34588,11 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
eval "$as_ac_var=yes"
else
echo "$as_me: failed program was:" >&5
@@ -37285,7 +34601,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
eval "$as_ac_var=no"
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
fi
ac_res=`eval echo '${'$as_ac_var'}'`
@@ -37367,27 +34683,11 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
eval "$as_ac_var=yes"
else
echo "$as_me: failed program was:" >&5
@@ -37396,7 +34696,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
eval "$as_ac_var=no"
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
fi
ac_res=`eval echo '${'$as_ac_var'}'`
@@ -37492,27 +34792,11 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
eval "$as_ac_var=yes"
else
echo "$as_me: failed program was:" >&5
@@ -37521,7 +34805,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
eval "$as_ac_var=no"
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
fi
ac_res=`eval echo '${'$as_ac_var'}'`
@@ -37691,27 +34975,11 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
ac_cv_func_svc_run=yes
else
echo "$as_me: failed program was:" >&5
@@ -37720,7 +34988,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_func_svc_run=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
fi
{ echo "$as_me:$LINENO: result: $ac_cv_func_svc_run" >&5
@@ -37764,27 +35032,11 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
ac_cv_lib_nsl_main=yes
else
echo "$as_me: failed program was:" >&5
@@ -37793,7 +35045,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_lib_nsl_main=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
@@ -37999,27 +35251,11 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
:
else
echo "$as_me: failed program was:" >&5
@@ -38028,7 +35264,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
db_cv_build_sequence="no"
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
else
cat >conftest.$ac_ext <<_ACEOF
@@ -38169,9 +35405,11 @@ _ACEOF
if test "$db_cv_build_replication_mgr" = "yes"; then
ADDITIONAL_OBJS="$ADDITIONAL_OBJS \$(REPMGR_OBJS)"
+ else
+ ADDITIONAL_OBJS="$ADDITIONAL_OBJS repmgr_stub${o}"
fi
else
- ADDITIONAL_OBJS="$ADDITIONAL_OBJS rep_stub${o}"
+ ADDITIONAL_OBJS="$ADDITIONAL_OBJS rep_stub${o} repmgr_stub${o}"
fi
# The statistics code can be disabled.
@@ -38211,12 +35449,25 @@ else
CRYPTO_OBJS="crypto_stub${o}"
fi
+# The mutex code can be disabled, and if there aren't any mutexes, then there's
+# no reason to include the locking code.
+if test "$db_cv_build_mutexsupport" = "yes"; then
+ ADDITIONAL_OBJS="$ADDITIONAL_OBJS \$(LOCK_OBJS) \$(MUTEX_OBJS)"
+else
+ ADDITIONAL_OBJS="$ADDITIONAL_OBJS lock_stub${o} mut_stub${o}"
+fi
+
# If DIAGNOSTIC is defined, include the log print routines in the library
# itself, various diagnostic modes use them.
if test "$db_cv_diagnostic" = "yes"; then
ADDITIONAL_OBJS="$ADDITIONAL_OBJS \$(PRINT_OBJS)"
fi
+# If building for QNX, we need additional OS files.
+if test "$qnx_build" = "yes"; then
+ ADDITIONAL_OBJS="$ADDITIONAL_OBJS os_qnx_open${o}"
+fi
+
# We need to add the additional object files into the Makefile with the correct
# suffix. We can't use $LTLIBOBJS itself, because that variable has $U encoded
# in it for automake, and that's not what we want. See SR #7227 for additional
@@ -38224,29 +35475,23 @@ fi
#
# XXX: I'm not sure this is correct.
REPLACEMENT_OBJS=`echo "$LIBOBJS" |
- sed "s,\.[^.]* ,$o ,g;s,\.[^.]*$,$o,"`
+ sed "s,\.[^.]* ,$o ,g;s,\.[^.]*$,$o,"`
# This is necessary so that .o files in LIBOBJS are also built via
# the ANSI2KNR-filtering rules.
LIBOBJS=`echo "$LIBOBJS" |
- sed 's,\.[^.]* ,$U&,g;s,\.[^.]*$,$U&,'`
+ sed 's,\.[^.]* ,$U&,g;s,\.[^.]*$,$U&,'`
LTLIBOBJS=`echo "$LIBOBJS" |
- sed 's,\.[^.]* ,.lo ,g;s,\.[^.]*$,.lo,'`
+ sed 's,\.[^.]* ,.lo ,g;s,\.[^.]*$,.lo,'`
# Initial output file list.
CREATE_LIST="Makefile
db_cxx.h:$srcdir/../dbinc/db_cxx.in
db_int.h:$srcdir/../dbinc/db_int.in
- clib_port.h:$srcdir/../dist/clib_port.h
+ clib_port.h:$srcdir/../dist/clib_port.in
include.tcl:$srcdir/../test/include.tcl"
-# MinGW needs win_db.h.
-if test "$db_cv_mingw" = "yes"; then
-CREATE_LIST="$CREATE_LIST
- win_db.h:$srcdir/win_db.in"
-fi
-
# Create the db.h file from a source file, a list of global function
# prototypes, and, if configured for unique names, a list of #defines
# to do DB_VERSION_UNIQUE_NAME substitution.
@@ -38404,7 +35649,8 @@ cat >>$CONFIG_STATUS <<\_ACEOF
## M4sh Initialization. ##
## --------------------- ##
-# Be Bourne compatible
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
emulate sh
NULLCMD=:
@@ -38413,10 +35659,13 @@ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
alias -g '${1+"$@"}'='"$@"'
setopt NO_GLOB_SUBST
else
- case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+ case `(set -o) 2>/dev/null` in
+ *posix*) set -o posix ;;
+esac
+
fi
-BIN_SH=xpg4; export BIN_SH # for Tru64
-DUALCASE=1; export DUALCASE # for MKS sh
+
+
# PATH needs CR
@@ -38640,19 +35889,28 @@ else
as_mkdir_p=false
fi
-# Find out whether ``test -x'' works. Don't use a zero-byte file, as
-# systems may use methods other than mode bits to determine executability.
-cat >conf$$.file <<_ASEOF
-#! /bin/sh
-exit 0
-_ASEOF
-chmod +x conf$$.file
-if test -x conf$$.file >/dev/null 2>&1; then
- as_executable_p="test -x"
+if test -x / >/dev/null 2>&1; then
+ as_test_x='test -x'
else
- as_executable_p=:
+ if ls -dL / >/dev/null 2>&1; then
+ as_ls_L_option=L
+ else
+ as_ls_L_option=
+ fi
+ as_test_x='
+ eval sh -c '\''
+ if test -d "$1"; then
+ test -d "$1/.";
+ else
+ case $1 in
+ -*)set "./$1";;
+ esac;
+ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
+ ???[sx]*):;;*)false;;esac;fi
+ '\'' sh
+ '
fi
-rm -f conf$$.file
+as_executable_p=$as_test_x
# Sed expression to map a string onto a valid CPP name.
as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
@@ -38667,8 +35925,8 @@ exec 6>&1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by Berkeley DB $as_me 4.5.20, which was
-generated by GNU Autoconf 2.60. Invocation command line was
+This file was extended by Berkeley DB $as_me 4.6.18, which was
+generated by GNU Autoconf 2.61. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
CONFIG_HEADERS = $CONFIG_HEADERS
@@ -38696,7 +35954,7 @@ current configuration.
Usage: $0 [OPTIONS] [FILE]...
-h, --help print this help, then exit
- -V, --version print version number, then exit
+ -V, --version print version number and configuration settings, then exit
-q, --quiet do not print progress messages
-d, --debug don't remove temporary files
--recheck update $as_me by reconfiguring in the same conditions
@@ -38716,8 +35974,8 @@ Report bugs to <bug-autoconf@gnu.org>."
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF
ac_cs_version="\\
-Berkeley DB config.status 4.5.20
-configured by $0, generated by GNU Autoconf 2.60,
+Berkeley DB config.status 4.6.18
+configured by $0, generated by GNU Autoconf 2.61,
with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
Copyright (C) 2006 Free Software Foundation, Inc.
@@ -39026,17 +36284,14 @@ ac_delim='%!_!# '
for ac_last_try in false false false false false :; do
cat >conf$$subs.sed <<_ACEOF
DB_VERSION_UNIQUE_NAME!$DB_VERSION_UNIQUE_NAME$ac_delim
-AR!$AR$ac_delim
CHMOD!$CHMOD$ac_delim
CP!$CP$ac_delim
KILL!$KILL$ac_delim
LN!$LN$ac_delim
MKDIR!$MKDIR$ac_delim
-RANLIB!$RANLIB$ac_delim
RM!$RM$ac_delim
RPCGEN!$RPCGEN$ac_delim
db_cv_path_sh!$db_cv_path_sh$ac_delim
-STRIP!$STRIP$ac_delim
INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim
INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim
INSTALL_DATA!$INSTALL_DATA$ac_delim
@@ -39053,6 +36308,9 @@ GREP!$GREP$ac_delim
EGREP!$EGREP$ac_delim
LN_S!$LN_S$ac_delim
ECHO!$ECHO$ac_delim
+AR!$AR$ac_delim
+RANLIB!$RANLIB$ac_delim
+STRIP!$STRIP$ac_delim
CPP!$CPP$ac_delim
F77!$F77$ac_delim
FFLAGS!$FFLAGS$ac_delim
@@ -39079,8 +36337,12 @@ u_int32_decl!$u_int32_decl$ac_delim
int32_decl!$int32_decl$ac_delim
u_int64_decl!$u_int64_decl$ac_delim
int64_decl!$int64_decl$ac_delim
-ssize_t_decl!$ssize_t_decl$ac_delim
+FILE_t_decl!$FILE_t_decl$ac_delim
+off_t_decl!$off_t_decl$ac_delim
pid_t_decl!$pid_t_decl$ac_delim
+size_t_decl!$size_t_decl$ac_delim
+time_t_decl!$time_t_decl$ac_delim
+ssize_t_decl!$ssize_t_decl$ac_delim
uintmax_t_decl!$uintmax_t_decl$ac_delim
uintptr_t_decl!$uintptr_t_decl$ac_delim
thread_h_decl!$thread_h_decl$ac_delim
@@ -39097,7 +36359,7 @@ db_seq_decl!$db_seq_decl$ac_delim
LTLIBOBJS!$LTLIBOBJS$ac_delim
_ACEOF
- if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 70; then
+ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 74; then
break
elif $ac_last_try; then
{ { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
diff --git a/db/dist/configure.ac b/db/dist/configure.ac
index 592fb5511..ada275a53 100644
--- a/db/dist/configure.ac
+++ b/db/dist/configure.ac
@@ -1,4 +1,4 @@
-# $Id: configure.ac,v 12.46 2006/09/19 00:33:58 bostic Exp $
+# $Id: configure.ac,v 12.64 2007/05/08 21:16:46 bostic Exp $
# Process this file with autoconf to produce a configure script.
PACKAGE=db
@@ -123,6 +123,10 @@ if test "$db_cv_test" = "yes"; then
[Define to 1 if you want to build a version for running the test suite.])
fi
+AH_TEMPLATE(HAVE_UPGRADE_SUPPORT,
+ [Define to 1 if port includes historic database upgrade support.])
+AC_DEFINE(HAVE_UPGRADE_SUPPORT)
+
# Check for programs used in building and installation.
AM_PROGRAMS_SET
AC_PROG_INSTALL
@@ -130,6 +134,9 @@ AC_PROG_INSTALL
BUILD_TARGET="library_build"
INSTALL_TARGET="library_install"
+# Respect the environment LIBS settings
+LIBSO_LIBS="$LIBS"
+
# This is where we handle stuff that autoconf can't handle: compiler,
# preprocessor and load flags, libraries that the standard tests don't
# look for.
@@ -147,6 +154,10 @@ INSTALL_TARGET="library_install"
optimize_debug="-O"
case "$host_os" in
aix4.3.*|aix5*)
+ case "$host_os" in
+ aix4.3.*)
+ CPPFLAGS="$CPPFLAGS -D_LINUX_SOURCE_COMPAT";;
+ esac
optimize_debug="-O2"
CC=${CC-"xlc_r"}
CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE"
@@ -166,7 +177,8 @@ irix*) optimize_debug="-O2"
mpeix*) CPPFLAGS="$CPPFLAGS -D_POSIX_SOURCE -D_SOCKET_SOURCE"
LIBSO_LIBS="$LIBSO_LIBS -lsocket -lsvipc";;
osf*) CPPFLAGS="$CPPFLAGS -pthread";;
-*qnx*) AC_DEFINE(HAVE_QNX)
+*qnx*) qnx_build="yes"
+ AC_DEFINE(HAVE_QNX)
AH_TEMPLATE(HAVE_QNX, [Define to 1 if building on QNX.]);;
solaris*)
CPPFLAGS="$CPPFLAGS -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS ";;
@@ -215,7 +227,25 @@ else
esac
fi
-# Checks for compiler characteristics.
+# Check for "const" and "inline" keywords.
+AC_C_CONST
+AC_C_INLINE
+
+# We use prototypes and the keyword "const" in db.h which doesn't include
+# db_config.h, so we have to figure out what to do there. We don't have
+# much choice, we look at internal autoconf variables.
+AC_SUBST(DB_CONST)
+if test "$ac_cv_c_const" != "yes"; then
+ DB_CONST="#define const"
+fi
+
+# Now prototypes.
+#
+# There is an autoconf AC_C_PROTOTYPES macro, but it doesn't set internal
+# variables, so it doesn't help us at all -- use the internal variable for
+# STDC compilers instead.
+#
+# First, clear __P, some other systems use it too.
DB_PROTO1="#undef __P"
# AC_PROG_CC_STDC only sets ac_cv_prog_cc_stdc if the test fails, so
@@ -226,12 +256,6 @@ else
DB_PROTO2="#define __P(protos) protos"
fi
-AC_C_CONST
-AC_SUBST(DB_CONST)
-if test "$ac_cv_c_const" != "yes"; then
- DB_CONST="#define const"
-fi
-
# Because of shared library building, the ${CC} used for config tests
# may be different than the ${CC} we want to put in the Makefile.
# The latter is known as ${MAKEFILE_CC} in this script.
@@ -255,7 +279,10 @@ if test "$db_cv_cxx" = "yes"; then
LIBSO_LIBS="-lC_r $LIBSO_LIBS";;
hpux*) AC_CHECK_TOOL(CCC, aCC);;
irix*) AC_CHECK_TOOL(CCC, CC);;
- osf*) AC_CHECK_TOOL(CCC, cxx);;
+ osf*) AC_CHECK_TOOL(CCC, cxx)
+ CXXFLAGS="$CXXFLAGS -D__USE_STD_IOSTREAM"
+ test -d /usr/include.dtk &&
+ CXXFLAGS="$CXXFLAGS -I/usr/include.dtk";;
solaris*) AC_CHECK_TOOL(CCC, CC);;
esac
fi
@@ -435,15 +462,17 @@ if test "$db_cv_mingw" = "yes"; then
else
OSDIR=os
PATH_SEPARATOR="/"
+ AC_DEFINE(HAVE_SYSTEM_INCLUDE_FILES)
fi
# Checks for include files, structures, C types.
AC_HEADER_STAT
AC_HEADER_TIME
AC_HEADER_DIRENT
-AC_CHECK_HEADERS(sys/select.h sys/time.h sys/fcntl.h)
+AC_CHECK_HEADERS(sys/select.h sys/socket.h sys/time.h)
AC_CHECK_MEMBERS([struct stat.st_blksize])
AM_TYPES
+AM_SOCKLEN_T
AC_CACHE_CHECK([for ANSI C exit success/failure values], db_cv_exit_defines, [
AC_TRY_COMPILE([#include <stdlib.h>], return (EXIT_SUCCESS);,
@@ -461,21 +490,22 @@ AM_DEFINE_MUTEXES
# Test for various functions/libraries -- do tests that change library values
# first.
#
+# Update LIBS, so we're testing against the current list of libraries.
+LIBS="$LIBSO_LIBS"
+
# The yield function on Solaris is almost certainly pthread_yield (LWP threads
# or POSIX pthreads), or thr_yield (UI threads). There's an outside chance it
# is sched_yield() though, only available in -lrt on Solaris.
-#
+AC_SEARCH_LIBS(sched_yield, rt)
+
# The Berkeley DB library calls fdatasync, only available in -lrt on Solaris.
-# See if we can find either without additional libraries or in -lrt. If found
-# in -lrt and we haven't yet added -lrt, add it to the shared library list.
-AC_SEARCH_LIBS(fdatasync, rt, [dnl
- if test "$ac_cv_search_fdatasync" != "none required" ; then
- LIBSO_LIBS="$LIBSO_LIBS -lrt";
- fi], [dnl
- AC_SEARCH_LIBS(sched_yield, rt, [dnl
- if test "$ac_cv_search_sched_yield" != "none required" ; then
- LIBSO_LIBS="$LIBSO_LIBS -lrt";
- fi])])
+AC_SEARCH_LIBS(fdatasync, rt)
+
+AC_SEARCH_LIBS(getaddrinfo, nsl socket)
+AC_SEARCH_LIBS(hstrerror, resolv)
+
+# Those tests updated LIBS, update our internal list.
+LIBSO_LIBS="$LIBS"
# !!!
# We could be more exact about whether these libraries are needed, but don't
@@ -485,26 +515,24 @@ AC_HAVE_LIBRARY(nsl, TEST_LIBS="$TEST_LIBS -lnsl")
AC_HAVE_LIBRARY(pthread, TEST_LIBS="$TEST_LIBS -lpthread")
AC_HAVE_LIBRARY(socket, TEST_LIBS="$TEST_LIBS -lsocket")
-# Update LIBS so that the rest of our tests are run with the libraries we'll
-# load against.
-LIBS="$LIBSO_LIBS"
-
# Checks for system functions for which we have replacements.
#
# The only portable getcwd call is getcwd(char *, size_t), where the
# buffer is non-NULL -- Solaris can't handle a NULL buffer, and they
# deleted getwd().
AC_REPLACE_FUNCS(\
- abort atoi atol getcwd getenv getopt isalpha isdigit isprint isspace\
- memcmp memcpy memmove printf raise rand strcasecmp strcat strchr\
- strdup strerror strncat strncmp strrchr strsep strtol strtoul)
+ abort atoi atol getcwd getenv getopt isalpha isdigit isprint\
+ isspace memcmp memcpy memmove printf qsort raise rand strcasecmp\
+ strcat strchr strdup strerror strncat strncmp strrchr strsep\
+ strtol strtoul)
# Check for system functions we optionally use.
AC_CHECK_FUNCS(\
- _fstati64 clock_gettime directio fchmod fcntl fdatasync getaddrinfo\
- getrusage gettimeofday getuid mprotect pstat_getdynamic pthread_yield\
- sched_yield select sigaction snprintf stat strftime sysconf vsnprintf\
- yield)
+ _fstati64 directio fchmod fclose fcntl fdatasync fgetc fgets\
+ fopen fwrite getaddrinfo getrusage gettimeofday getuid hstrerror\
+ localtime mprotect pstat_getdynamic pthread_yield sched_yield\
+ select sigaction snprintf stat strftime sysconf time vsnprintf\
+ yield)
# Replication can't run correctly if ftruncate isn't available.
AC_CHECK_FUNCS(ftruncate)
@@ -514,6 +542,15 @@ if test \
AC_MSG_WARN([replication requires ftruncate, replication disabled.])
fi
+# AIX 4.3 will link applications with calls to clock_gettime, but the
+# calls always fail.
+case "$host_os" in
+aix4.3.*)
+ ;;
+*)
+ AC_CHECK_FUNCS(clock_gettime);;
+esac
+
# ctime_r --
#
# There are two versions of ctime_r, one of which takes a buffer length as a
@@ -690,9 +727,11 @@ if test "$db_cv_build_replication" = "yes"; then
if test "$db_cv_build_replication_mgr" = "yes"; then
ADDITIONAL_OBJS="$ADDITIONAL_OBJS \$(REPMGR_OBJS)"
+ else
+ ADDITIONAL_OBJS="$ADDITIONAL_OBJS repmgr_stub${o}"
fi
else
- ADDITIONAL_OBJS="$ADDITIONAL_OBJS rep_stub${o}"
+ ADDITIONAL_OBJS="$ADDITIONAL_OBJS rep_stub${o} repmgr_stub${o}"
fi
# The statistics code can be disabled.
@@ -723,12 +762,25 @@ else
CRYPTO_OBJS="crypto_stub${o}"
fi
+# The mutex code can be disabled, and if there aren't any mutexes, then there's
+# no reason to include the locking code.
+if test "$db_cv_build_mutexsupport" = "yes"; then
+ ADDITIONAL_OBJS="$ADDITIONAL_OBJS \$(LOCK_OBJS) \$(MUTEX_OBJS)"
+else
+ ADDITIONAL_OBJS="$ADDITIONAL_OBJS lock_stub${o} mut_stub${o}"
+fi
+
# If DIAGNOSTIC is defined, include the log print routines in the library
# itself, various diagnostic modes use them.
if test "$db_cv_diagnostic" = "yes"; then
ADDITIONAL_OBJS="$ADDITIONAL_OBJS \$(PRINT_OBJS)"
fi
+# If building for QNX, we need additional OS files.
+if test "$qnx_build" = "yes"; then
+ ADDITIONAL_OBJS="$ADDITIONAL_OBJS os_qnx_open${o}"
+fi
+
# We need to add the additional object files into the Makefile with the correct
# suffix. We can't use $LTLIBOBJS itself, because that variable has $U encoded
# in it for automake, and that's not what we want. See SR #7227 for additional
@@ -736,29 +788,23 @@ fi
#
# XXX: I'm not sure this is correct.
REPLACEMENT_OBJS=`echo "$LIB@&t@OBJS" |
- sed "s,\.[[^.]]* ,$o ,g;s,\.[[^.]]*$,$o,"`
+ sed "s,\.[[^.]]* ,$o ,g;s,\.[[^.]]*$,$o,"`
# This is necessary so that .o files in LIBOBJS are also built via
# the ANSI2KNR-filtering rules.
LIB@&t@OBJS=`echo "$LIB@&t@OBJS" |
- sed 's,\.[[^.]]* ,$U&,g;s,\.[[^.]]*$,$U&,'`
+ sed 's,\.[[^.]]* ,$U&,g;s,\.[[^.]]*$,$U&,'`
LTLIBOBJS=`echo "$LIB@&t@OBJS" |
- sed 's,\.[[^.]]* ,.lo ,g;s,\.[[^.]]*$,.lo,'`
+ sed 's,\.[[^.]]* ,.lo ,g;s,\.[[^.]]*$,.lo,'`
AC_SUBST(LTLIBOBJS)
# Initial output file list.
CREATE_LIST="Makefile
db_cxx.h:$srcdir/../dbinc/db_cxx.in
db_int.h:$srcdir/../dbinc/db_int.in
- clib_port.h:$srcdir/../dist/clib_port.h
+ clib_port.h:$srcdir/../dist/clib_port.in
include.tcl:$srcdir/../test/include.tcl"
-# MinGW needs win_db.h.
-if test "$db_cv_mingw" = "yes"; then
-CREATE_LIST="$CREATE_LIST
- win_db.h:$srcdir/win_db.in"
-fi
-
# Create the db.h file from a source file, a list of global function
# prototypes, and, if configured for unique names, a list of #defines
# to do DB_VERSION_UNIQUE_NAME substitution.
diff --git a/db/dist/configure.in b/db/dist/configure.in
deleted file mode 100644
index 6c2a0c5d0..000000000
--- a/db/dist/configure.in
+++ /dev/null
@@ -1,501 +0,0 @@
-dnl $Id: configure.in,v 11.77 2001/01/18 19:05:25 bostic Exp $
-dnl Process this file with autoconf to produce a configure script.
-
-AC_INIT(../db/db.c)
-AC_CONFIG_HEADER(db_config.h:config.hin)
-
-dnl Configure setup.
-AC_PROG_INSTALL()
-AC_CANONICAL_HOST
-AC_ARG_PROGRAM()
-
-dnl We cannot build in the top-level directory.
-AC_MSG_CHECKING(if building in the top-level directory)
-[ test -d db_archive ] && AC_MSG_ERROR([
-Berkeley DB cannot be built in the top-level distribution directory.])
-AC_MSG_RESULT(no)
-
-dnl Substitution variables.
-AC_SUBST(ADDITIONAL_INCS)
-AC_SUBST(ADDITIONAL_LANG)
-AC_SUBST(ADDITIONAL_LIBS)
-AC_SUBST(ADDITIONAL_OBJS)
-AC_SUBST(ADDITIONAL_PROGS)
-AC_SUBST(CFLAGS)
-AC_SUBST(CPPFLAGS)
-AC_SUBST(CXX)
-AC_SUBST(CXXFLAGS)
-AC_SUBST(DBS_LIBS)
-AC_SUBST(DEFAULT_INSTALL)
-AC_SUBST(DEFAULT_LIB)
-AC_SUBST(INSTALLER)
-AC_SUBST(INSTALL_LIBS)
-AC_SUBST(JAR)
-AC_SUBST(JAVAC)
-AC_SUBST(JAVACFLAGS)
-AC_SUBST(LDFLAGS)
-AC_SUBST(LIBDB_ARGS)
-AC_SUBST(LIBJSO_LIBS)
-AC_SUBST(LIBS)
-AC_SUBST(LIBSO_LIBS)
-AC_SUBST(LIBTOOL)
-AC_SUBST(LIBTSO_LIBS)
-AC_SUBST(LIBXSO_LIBS)
-AC_SUBST(MAKEFILE_CC)
-AC_SUBST(MAKEFILE_CCLINK)
-AC_SUBST(MAKEFILE_CXX)
-AC_SUBST(POSTLINK)
-AC_SUBST(RPC_OBJS)
-AC_SUBST(SOFLAGS)
-AC_SUBST(SOLINK)
-AC_SUBST(SOSUFFIX)
-
-dnl $o is set to ".o" or ".lo", and is the file suffix used in the
-dnl Makefile instead of .o
-AC_SUBST(o)
-o=.o
-INSTALLER="\$(cp)"
-DEFAULT_LIB="\$(libdb)"
-DEFAULT_INSTALL="install_static"
-
-dnl Set the version.
-AM_VERSION_SET
-
-dnl Set the default installation location.
-AC_PREFIX_DEFAULT(/usr/local/BerkeleyDB.@DB_VERSION_MAJOR@.@DB_VERSION_MINOR@)
-
-dnl Process all options before using them. This is necessary because there
-dnl are dependencies among them.
-AM_OPTIONS_SET
-
-dnl This is where we handle stuff that autoconf can't handle: compiler,
-dnl preprocessor and load flags, libraries that the standard tests don't
-dnl look for. The default optimization is -O. We would like to set the
-dnl default optimization for systems using gcc to -O2, but we can't. By
-dnl the time we know we're using gcc, it's too late to set optimization
-dnl flags.
-dnl
-dnl There are additional libraries we need for some compiler/architecture
-dnl combinations.
-dnl
-dnl Some architectures require DB to be compiled with special flags and/or
-dnl libraries for threaded applications
-dnl
-dnl The makefile CC may be different than the CC used in config testing,
-dnl because the makefile CC may be set to use $(LIBTOOL).
-dnl
-dnl XXX
-dnl Don't override anything if it's already set from the environment.
-optimize_def="-O"
-case "$host_os" in
-aix4.*) optimize_def="-O2"
- CC=${CC-"xlc_r"}
- CPPFLAGS="-D_THREAD_SAFE $CPPFLAGS"
- LIBTSO_LIBS="\$(LIBS)";;
-bsdi3*) CC=${CC-"shlicc2"}
- optimize_def="-O2"
- LIBS="-lipc $LIBS";;
-bsdi*) optimize_def="-O2";;
-freebsd*) optimize_def="-O2"
- CPPFLAGS="-D_THREAD_SAFE $CPPFLAGS"
- LIBS="-pthread";;
-hpux*) CPPFLAGS="-D_REENTRANT $CPPFLAGS";;
-irix*) optimize_def="-O2"
- CPPFLAGS="-D_SGI_MP_SOURCE $CPPFLAGS";;
-linux*) optimize_def="-O2"
- CFLAGS="-D_GNU_SOURCE"
- CPPFLAGS="-D_REENTRANT $CPPFLAGS";;
-mpeix*) CPPFLAGS="-D_POSIX_SOURCE -D_SOCKET_SOURCE $CPPFLAGS"
- LIBS="-lsocket -lsvipc $LIBS";;
-osf*) CPPFLAGS="-D_REENTRANT $CPPFLAGS";;
-*qnx) AC_DEFINE(HAVE_QNX);;
-sco3.2v4*) CC=${CC-"cc -belf"}
- LIBS="-lsocket -lnsl_s $LIBS";;
-sco*) CC=${CC-"cc -belf"}
- LIBS="-lsocket -lnsl $LIBS";;
-solaris*) CPPFLAGS="-D_REENTRANT $CPPFLAGS";;
-esac
-
-dnl Set CFLAGS/CXXFLAGS. We MUST set the flags before we call autoconf
-dnl compiler configuration macros, because if we don't, they set CFLAGS
-dnl to no optimization and -g, which isn't what we want.
-CFLAGS=${CFLAGS-$optimize_def}
-CXXFLAGS=${CXXFLAGS-"$CFLAGS"}
-
-dnl If the user wants a debugging environment, add -g to the CFLAGS value.
-dnl
-dnl XXX
-dnl Some compilers can't mix optimizing and debug flags. The only way to
-dnl handle this is to specify CFLAGS in the environment before configuring.
-if test "$db_cv_debug" = yes; then
- AC_DEFINE(DEBUG)
- CFLAGS="$CFLAGS -g"
- CXXFLAGS="$CXXFLAGS -g"
-fi
-
-dnl The default compiler is cc (NOT gcc), the default CFLAGS is as specified
-dnl above, NOT what is set by AC_PROG_CC, as it won't set optimization flags.
-dnl We still call AC_PROG_CC so that we get the other side-effects.
-AC_CHECK_PROG(CC, cc, cc)
-AC_CHECK_PROG(CC, gcc, gcc)
-AC_PROG_CC
-
-dnl Because of dynamic library building, the ${CC} used for config tests
-dnl may be different than the ${CC} we want to put in the Makefile.
-dnl The latter is known as ${MAKEFILE_CC} in this script.
-MAKEFILE_CC=${CC}
-MAKEFILE_CCLINK="\$(CC)"
-MAKEFILE_CXX="nocxx"
-
-dnl Set some #defines based on configuration options.
-if test "$db_cv_diagnostic" = yes; then
- AC_DEFINE(DIAGNOSTIC)
-fi
-if test "$db_cv_debug_rop" = yes; then
- AC_DEFINE(DEBUG_ROP)
-fi
-if test "$db_cv_debug_wop" = yes; then
- AC_DEFINE(DEBUG_WOP)
-fi
-if test "$db_cv_umrw" = yes; then
- AC_DEFINE(UMRW)
-fi
-if test "$db_cv_test" = yes; then
- AC_DEFINE(CONFIG_TEST)
-fi
-
-dnl See if we need the C++ compiler at all. If so, we'd like to find one that
-dnl interoperates with the C compiler we chose. Since we prefered cc over gcc,
-dnl we'll also prefer the vendor's compiler over g++/gcc. If we're wrong, the
-dnl user can set CC and CXX in their environment before running configure.
-dnl
-dnl AC_PROG_CXX sets CXX, but it uses $CXX and $CCC (in that order) as its
-dnl first choices.
-if test "$db_cv_cxx" = "yes"; then
- if test "$GCC" != "yes"; then
- case "$host_os" in
- aix*) AC_CHECK_PROG(CCC, xlC_r, xlC_r);;
- hpux*) AC_CHECK_PROG(CCC, aCC, aCC);;
- osf*) AC_CHECK_PROG(CCC, cxx, cxx);;
- solaris*) AC_CHECK_PROG(CCC, CC, CC);;
- esac
- fi
- AC_PROG_CXX
- MAKEFILE_CXX=${CXX}
-fi
-
-dnl XXX
-dnl Versions of GCC up to 2.8.0 required -fhandle-exceptions, but it is
-dnl renamed as -fexceptions and is the default in versions 2.8.0 and after.
-dnl
-dnl $GXX may be set as a result of enabling C++ or Java.
-if test "$GXX" = "yes"; then
- CXXVERSION=`${MAKEFILE_CXX} --version`
- case ${CXXVERSION} in
- 1.*|2.[[01234567]].*|*-1.*|*-2.[[01234567]].* )
- CXXFLAGS="-fhandle-exceptions $CXXFLAGS";;
- * ) CXXFLAGS="-fexceptions $CXXFLAGS";;
- esac
-fi
-
-dnl Export our compiler preferences for the libtool configuration.
-export CC CCC
-CCC=CXX
-
-dnl Dynamic library and libtool configuration; optional, but required for
-dnl Tcl or Java support.
-LIBDB_ARGS="libdb.a"
-LIBTOOL="nolibtool"
-POSTLINK="@true"
-SOSUFFIX="so"
-if test "$db_cv_dynamic" = "yes"; then
- SAVE_CC="${MAKEFILE_CC}"
- SAVE_CXX="${MAKEFILE_CXX}"
-
- # Configure libtool.
- AC_MSG_CHECKING(libtool configuration)
- AC_MSG_RESULT([])
- ${CONFIG_SHELL-/bin/sh} $srcdir/ltconfig \
- --no-verify $srcdir/ltmain.sh \
- --output=./libtool $host_os \
- --disable-static \
- || AC_MSG_ERROR([libtool configure failed])
-
- SOSUFFIX=`sed -e '/^library_names_spec=/!d' -e 's/.*\.\([[a-zA-Z0-9_]]*\).*/\1/' ./libtool`
- DEFAULT_LIB="\$(libso_target)"
- DEFAULT_INSTALL="install_dynamic"
- LIBDB_ARGS="\$(libso_linkname)"
- LIBTOOL="\$(SHELL) ./libtool"
-
- MAKEFILE_CC="\$(LIBTOOL) --mode=compile ${SAVE_CC}"
- MAKEFILE_CXX="\$(LIBTOOL) --mode=compile ${SAVE_CXX}"
- MAKEFILE_CCLINK="\$(LIBTOOL) --mode=link ${SAVE_CC}"
-
- INSTALLER="\$(LIBTOOL) --mode=install cp"
- POSTLINK="\$(LIBTOOL) --mode=execute true"
- SOLINK="\$(LIBTOOL) --mode=link ${SAVE_CC} -avoid-version"
- SOFLAGS="-rpath \$(libdir)"
- o=".lo"
-fi
-
-dnl Optional C++ API.
-if test "$db_cv_cxx" = "yes"; then
- if test "$db_cv_dynamic" = "yes"; then
- ADDITIONAL_LIBS="$ADDITIONAL_LIBS \$(libxso_target)"
- DEFAULT_INSTALL="${DEFAULT_INSTALL} install_dynamic_cxx"
- else
- ADDITIONAL_LIBS="$ADDITIONAL_LIBS \$(libcxx)"
- DEFAULT_INSTALL="${DEFAULT_INSTALL} install_static_cxx"
- fi
-fi
-
-dnl Optional Java API.
-if test "$db_cv_java" = "yes"; then
- if test "$db_cv_dynamic" != "yes"; then
- AC_MSG_ERROR([--enable-java requires --enable-dynamic])
- fi
-
- AC_CHECK_PROG(JAVAC, javac, javac, nojavac)
- if test "$JAVAC" = "nojavac"; then
- AC_MSG_ERROR([no javac compiler in PATH])
- fi
- AC_CHECK_PROG(JAR, jar, jar, nojar)
- if test "$JAR" = "nojar"; then
- AC_MSG_ERROR([no jar utility in PATH])
- fi
- AC_PATH_PROG(JAVACABS, javac, nojavac)
- ADDITIONAL_LIBS="$ADDITIONAL_LIBS \$(libjso_target)"
- ADDITIONAL_LANG="$ADDITIONAL_LANG java"
- DEFAULT_INSTALL="${DEFAULT_INSTALL} install_java"
-
-dnl find the include directory relative to the javac executable
- while ls -ld "$JAVACABS" 2>/dev/null | grep " -> " >/dev/null; do
- AC_MSG_CHECKING(symlink for $JAVACABS)
- JAVACLINK=`ls -ld $JAVACABS | sed 's/.* -> //'`
- case "$JAVACLINK" in
- /*) JAVACABS="$JAVACLINK";;
-dnl 'X' avoids triggering unwanted echo options.
- *) JAVACABS=`echo "X$JAVACABS" | sed -e 's/^X//' -e 's:[[^/]]*$::'`"$JAVACLINK";;
- esac
- AC_MSG_RESULT($JAVACABS)
- done
- JTOPDIR=`echo "$JAVACABS" | sed -e 's://*:/:g' -e 's:/[[^/]]*$::'`
- if test -f "$JTOPDIR/include/jni.h"; then
- CPPFLAGS="$CPPFLAGSS -I$JTOPDIR/include"
- else
- JTOPDIR=`echo "$JTOPDIR" | sed -e 's:/[[^/]]*$::'`
- if test -f "$JTOPDIR/include/jni.h"; then
- CPPFLAGS="$CPPFLAGS -I$JTOPDIR/include"
- else
- AC_MSG_ERROR([cannot find java include files])
- fi
- fi
-
-dnl get the likely subdirectories for system specific java includes
- case "$host_os" in
- solaris*) JINCSUBDIRS="solaris";;
- linux*) JINCSUBDIRS="linux genunix";;
- *) JINCSUBDIRS="genunix";;
- esac
-
- for JINCSUBDIR in $JINCSUBDIRS
- do
- if test -d "$JTOPDIR/include/$JINCSUBDIR"; then
- CPPFLAGS="$CPPFLAGS -I$JTOPDIR/include/$JINCSUBDIR"
- fi
- done
-else
- JAVAC=nojavac
-fi
-
-dnl Optional RPC client/server.
-if test "$db_cv_rpc" = "yes"; then
- AC_DEFINE(HAVE_RPC)
-
- RPC_OBJS="\$(RPC_OBJS)"
- ADDITIONAL_PROGS="berkeley_db_svc $ADDITIONAL_PROGS"
-
- case "$host_os" in
- hpux*)
- AC_CHECK_FUNC(svc_run,,
- AC_CHECK_LIB(nsl, svc_run,
- LIBS="-lnsl $LIBS"; LIBTSO_LIBS="-lnsl $LIBTSO_LIBS"));;
- solaris*)
- AC_CHECK_FUNC(svc_run,, AC_CHECK_LIB(nsl, svc_run));;
- esac
-fi
-
-AM_TCL_LOAD
-
-dnl Optional DB 1.85 compatibility API.
-if test "$db_cv_compat185" = "yes"; then
- ADDITIONAL_INCS="db_185.h $ADDITIONAL_INCS"
- ADDITIONAL_OBJS="db185${o} $ADDITIONAL_OBJS"
-fi
-
-dnl Optional utilities.
-if test "$db_cv_dump185" = "yes"; then
- ADDITIONAL_PROGS="db_dump185 $ADDITIONAL_PROGS"
-fi
-
-dnl Test Server.
-dnl Include -lpthread if the library exists.
-AC_CHECK_LIB(pthread, pthread_create, DBS_LIBS=-lpthread)
-
-dnl Checks for typedefs, structures, and system/compiler characteristics.
-AC_C_BIGENDIAN
-AC_C_CONST
-AC_HEADER_STAT
-AC_HEADER_TIME
-AC_STRUCT_ST_BLKSIZE
-AC_TYPE_MODE_T
-AC_TYPE_OFF_T
-AC_TYPE_PID_T
-AC_TYPE_SIZE_T
-
-dnl Define any short-hand types we're missing.
-AM_SHORTHAND_TYPES
-
-dnl Checks for header files.
-AC_HEADER_DIRENT
-AC_CHECK_HEADERS(sys/select.h)
-AC_CHECK_HEADERS(sys/time.h)
-
-dnl Check for mutexes. We do this here because it changes $LIBS.
-AM_DEFINE_MUTEXES
-
-dnl Checks for system functions for which we have replacements.
-dnl
-dnl XXX
-dnl The only portable getcwd call is getcwd(char *, size_t), where the
-dnl buffer is non-NULL -- Solaris can't handle a NULL buffer, and they
-dnl deleted getwd().
-AC_REPLACE_FUNCS(getcwd getopt memcmp memcpy memmove)
-AC_REPLACE_FUNCS(raise snprintf strcasecmp strerror vsnprintf)
-
-dnl XXX
-dnl Nasty hack. AC_REPLACE_FUNCS added entries of the form xxx.o to the
-dnl LIBOBJS variable. They have to be xxx.lo if we are building shared
-dnl libraries. Use sed, configure already requires it.
-tmp="`echo \"$LIBOBJS\" | sed \"s/\.o/${o}/g\"`"
-LIBOBJS="$tmp"
-
-dnl Check for system functions we optionally use.
-AC_CHECK_FUNCS(getuid pstat_getdynamic sysconf sched_yield strtoul yield)
-
-dnl Pread/pwrite.
-dnl
-dnl HP-UX has pread/pwrite, but it doesn't work with bigfile support.
-case "$host_os" in
-hpux*)
- AC_MSG_WARN([pread/pwrite interfaces ignored on $host_os.]);;
-*) AC_CHECK_FUNCS(pread pwrite)
-esac
-
-dnl Check for fcntl(2) to deny child process access to file descriptors.
-AC_CACHE_CHECK([for fcntl/F_SETFD], db_cv_fcntl_f_setfd, [dnl
-AC_TRY_RUN([
-#include <sys/types.h>
-#include <fcntl.h>
-main(){exit(fcntl(1, F_SETFD, 1) == -1);}],
- [db_cv_fcntl_f_setfd=yes], [db_cv_fcntl_f_setfd=no])])
-if test "$db_cv_fcntl_f_setfd" = yes; then
- AC_DEFINE(HAVE_FCNTL_F_SETFD)
-fi
-
-dnl A/UX has a broken getopt(3).
-case "$host_os" in
-aux*) ADDITIONAL_OBJS="getopt${o} $ADDITIONAL_OBJS";;
-esac
-
-dnl Checks for system functions for which we don't have replacements.
-
-dnl We require qsort(3) and select(2).
-AC_CHECK_FUNCS(qsort, , AC_MSG_ERROR([No qsort library function.]))
-AC_CHECK_FUNCS(select, , AC_MSG_ERROR([No select library function.]))
-
-dnl Some versions of sprintf return a pointer to the first argument instead
-dnl of a character count. We assume that the return value of snprintf and
-dnl vsprintf etc. will be the same as sprintf, and check the easy one.
-AC_CACHE_CHECK([for int type sprintf return value], db_cv_sprintf_count, [dnl
-AC_TRY_RUN([main(){char buf[20]; exit(sprintf(buf, "XXX") != 3);}],
- [db_cv_sprintf_count=yes], [db_cv_sprintf_count=no])])
-if test "$db_cv_sprintf_count" = no; then
- AC_DEFINE(SPRINTF_RET_CHARPNT)
-fi
-
-dnl Vendors are doing 64-bit lseek in different ways.
-dnl AIX, HP/UX, Solaris and Linux all use _FILE_OFFSET_BITS
-dnl to specify a "big-file" environment.
-dnl
-dnl You can't build C++ with big-file support on HP-UX, the include files
-dnl are wrong. On Solaris 8, <fcntl.h> included with big-file support
-dnl is not compatible with C++.
-if test "$db_cv_bigfile" = no; then
- case "$host_os" in
- solaris2.8|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([and Solaris 8; large file support has been turned off.])
- else
- AC_DEFINE(HAVE_FILE_OFFSET_BITS)
- fi;;
- aix*|solaris*|linux*)
- AC_DEFINE(HAVE_FILE_OFFSET_BITS);;
- esac
-fi
-
-dnl Figure out how to create shared regions.
-dnl
-dnl First, we look for mmap.
-dnl
-dnl BSD/OS has mlock(2), but it doesn't work until the 4.1 release.
-dnl
-dnl Nextstep (version 3.3) apparently supports mmap(2) (the mmap symbol
-dnl is defined in the C library) but does not support munmap(2). Don't
-dnl try to use mmap if we can't find munmap.
-dnl
-dnl Ultrix has mmap(2), but it doesn't work.
-mmap_ok=no
-case "$host_os" in
-bsdi3*|bsdi4.0)
- AC_MSG_WARN([mlock(2) interface ignored on BSD/OS 3.X and 4.0.])
- mmap_ok=yes
- AC_CHECK_FUNCS(mmap munmap, , mmap_ok=no);;
-ultrix*)
- AC_MSG_WARN([mmap(2) interface ignored on Ultrix.]);;
-*)
- mmap_ok=yes
- AC_CHECK_FUNCS(mlock munlock)
- AC_CHECK_FUNCS(mmap munmap, , mmap_ok=no);;
-esac
-
-dnl Second, we look for shmget.
-dnl
-dnl SunOS has the shmget(2) interfaces, but there appears to be a missing
-dnl #include <debug/debug.h> file, so we ignore them.
-shmget_ok=no
-case "$host_os" in
-sunos*)
- AC_MSG_WARN([shmget(2) interface ignored on SunOS.]);;
-*)
- shmget_ok=yes
- AC_CHECK_FUNCS(shmget, , shmget_ok=no);;
-esac
-
-dnl We require either mmap/munmap(2) or shmget(2).
-if test "$mmap_ok" = no -a "$shmget_ok" = no; then
- AC_MSG_WARN([Neither mmap/munmap(2) or shmget(2) library functions.])
-fi
-
-dnl Check for programs used in building and installation.
-AM_PROGRAMS_SET
-
-CREATE_LIST="Makefile
- include.tcl:../test/include.tcl
- db.h:../include/db.src
- db_int.h:../include/db_int.src"
-if test "$db_cv_compat185" = "yes"; then
- CREATE_LIST="${CREATE_LIST} db_185.h:../include/db_185.h"
-fi
-AC_OUTPUT(${CREATE_LIST})
diff --git a/db/dist/errno.h b/db/dist/errno.h
index ae5bc88c8..935efcce2 100644
--- a/db/dist/errno.h
+++ b/db/dist/errno.h
@@ -34,15 +34,14 @@
* @(#)errno.h 8.5 (Berkeley) 1/21/94
* FreeBSD: /repoman/r/ncvs/src/sys/sys/errno.h,v 1.28 2005/04/02 12:33:28 das Exp $
*
- * $Id: errno.h,v 1.2 2006/06/11 16:13:13 bostic Exp $
+ * $Id: errno.h,v 1.4 2006/11/09 14:23:11 bostic Exp $
*/
#ifndef _SYS_ERRNO_H_
#define _SYS_ERRNO_H_
#undef errno
-#define errno __db_errno
-extern int __db_errno;
+#define errno DB_GLOBAL(db_errno)
#define EPERM 1 /* Operation not permitted */
#define ENOENT 2 /* No such file or directory */
@@ -91,7 +90,10 @@ extern int __db_errno;
#ifndef _POSIX_SOURCE
#define EWOULDBLOCK EAGAIN /* Operation would block */
#define EINPROGRESS 36 /* Operation now in progress */
+
+#ifndef EALREADY /* BREW already has an EALREADY. */
#define EALREADY 37 /* Operation already in progress */
+#endif
/* ipc/network software -- argument errors */
#define ENOTSOCK 38 /* Socket operation on non-socket */
diff --git a/db/dist/gen_rec.awk b/db/dist/gen_rec.awk
index a8f1f01f3..dcf2ffc88 100644
--- a/db/dist/gen_rec.awk
+++ b/db/dist/gen_rec.awk
@@ -2,10 +2,9 @@
#
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: gen_rec.awk,v 12.22 2006/09/14 15:00:47 bostic Exp $
+# $Id: gen_rec.awk,v 12.28 2007/06/13 19:01:29 bostic Exp $
#
# This awk script generates all the log, print, and read routines for the DB
@@ -108,6 +107,7 @@ BEGIN {
exit
}
in_begin = 1;
+ is_duplicate = 0;
is_dbt = 0;
has_dbp = 0;
is_uint = 0;
@@ -122,21 +122,13 @@ BEGIN {
nvars = 0;
thisfunc = $2;
+ dup_thisfunc = $2;
version = $3;
if (not_buf)
rectype = $4;
- logfunc = sprintf("%s_%s", prefix, $2);
- logname[num_funcs] = logfunc;
- if (is_compat) {
- funcname = sprintf("%s_%s_%s", prefix, $2, version);
- } else {
- funcname = logfunc;
- }
- funcs[num_funcs] = funcname;
- functable[num_funcs] = is_compat;
- ++num_funcs;
+ make_name(thisfunc, thisfunc, version);
}
/^[ ]*(DB|ARG|DBT|LOCKS|PGDBT|POINTER|TIME)/ {
vars[nvars] = $2;
@@ -164,6 +156,19 @@ BEGIN {
}
nvars++;
}
+/^[ ]*DUPLICATE/ {
+ is_duplicate = 1;
+ dup_rectype = $4;
+ old_logfunc = logfunc;
+ old_funcname = funcname;
+ make_name($2, funcname, $3);
+ internal_name = sprintf("%s_%s_int", prefix, thisfunc);
+ dup_logfunc = logfunc;
+ dup_funcname = funcname;
+ dup_thisfunc = $2;
+ logfunc = old_logfunc;
+ funcname = old_funcname;
+}
/^[ ]*END/ {
if (!in_begin) {
print "Invalid format: missing BEGIN statement"
@@ -173,6 +178,10 @@ BEGIN {
# Declare the record type.
if (not_buf) {
printf("#define\tDB_%s\t%d\n", funcname, rectype) >> HFILE
+ if (is_duplicate)
+ printf("#define\tDB_%s\t%d\n", \
+ dup_funcname, dup_rectype) >> HFILE
+
}
# Structure declaration.
@@ -207,8 +216,8 @@ BEGIN {
# Recovery template
if (not_buf) {
cmd = sprintf(\
- "sed -e s/PREF/%s/ -e s/FUNC/%s/ < template/rec_ctemp >> %s",
- prefix, thisfunc, TFILE)
+ "sed -e s/PREF/%s/ -e s/FUNC/%s/ -e s/DUP/%s/ < template/rec_ctemp >> %s",
+ prefix, thisfunc, dup_thisfunc, TFILE)
system(cmd);
}
@@ -256,7 +265,7 @@ END {
printf("\tif ((ret = __db_add_recovery(dbenv, ") >> PFILE;
printf("dtabp, dtabsizep,\n") >> PFILE;
printf("\t %s_print, DB_%s)) != 0)\n", \
- funcs[i], funcs[i]) >> PFILE;
+ dupfuncs[i], funcs[i]) >> PFILE;
printf("\t\treturn (ret);\n") >> PFILE;
}
printf("\treturn (0);\n}\n") >> PFILE;
@@ -301,82 +310,19 @@ END {
function log_function()
{
- # Write the log function; function prototype
- pi = 1;
- if (not_buf) {
- p[pi++] = sprintf("int %s_log", logfunc);
- p[pi++] = " ";
- if (has_dbp == 1) {
- p[pi++] = "__P((DB *";
- } else {
- p[pi++] = "__P((DB_ENV *";
- }
- p[pi++] = ", DB_TXN *, DB_LSN *, u_int32_t";
- } else {
- p[pi++] = sprintf("int %s_buf", logfunc);
- p[pi++] = " ";
- p[pi++] = "__P((u_int8_t *, size_t, size_t *";
- }
- for (i = 0; i < nvars; i++) {
- if (modes[i] == "DB")
- continue;
- p[pi++] = ", ";
- p[pi++] = sprintf("%s%s%s",
- (modes[i] == "DBT" || modes[i] == "LOCKS" ||
- modes[i] == "PGDBT") ? "const " : "", types[i],
- (modes[i] == "DBT" || modes[i] == "LOCKS" ||
- modes[i] == "PGDBT") ? " *" : "");
+ log_prototype(logfunc, 0);
+ if (is_duplicate) {
+ log_prototype(dup_logfunc, 0);
+ log_prototype(internal_name, 1);
}
- p[pi++] = "";
- p[pi++] = "));";
- p[pi++] = "";
- proto_format(p, CFILE);
# Function declaration
- if (not_buf && has_dbp == 1) {
- printf("int\n%s_log(dbp, txnp, ret_lsnp, flags", \
- logfunc) >> CFILE;
- } else if (not_buf) {
- printf("int\n%s_log(dbenv, txnp, ret_lsnp, flags", \
- logfunc) >> CFILE;
- } else {
- printf("int\n%s_buf(buf, max, lenp", logfunc) >> CFILE;
- }
- for (i = 0; i < nvars; i++) {
- if (modes[i] == "DB") {
- # We pass in fileids on the dbp, so if this is one,
- # skip it.
- continue;
- }
- printf(",") >> CFILE;
- if ((i % 6) == 0)
- printf("\n ") >> CFILE;
- else
- printf(" ") >> CFILE;
- printf("%s", vars[i]) >> CFILE;
- }
- printf(")\n") >> CFILE;
-
- # Now print the parameters
- if (not_buf) {
- if (has_dbp == 1) {
- printf("\tDB *dbp;\n") >> CFILE;
- } else {
- printf("\tDB_ENV *dbenv;\n") >> CFILE;
- }
- printf("\tDB_TXN *txnp;\n\tDB_LSN *ret_lsnp;\n") >> CFILE;
- printf("\tu_int32_t flags;\n") >> CFILE;
- } else {
- printf("\tu_int8_t *buf;\n") >> CFILE;
- printf("\tsize_t max, *lenp;\n") >> CFILE;
- }
- for (i = 0; i < nvars; i++) {
- # We just skip for modes == DB.
- if (modes[i] == "DBT" ||
- modes[i] == "LOCKS" || modes[i] == "PGDBT")
- printf("\tconst %s *%s;\n", types[i], vars[i]) >> CFILE;
- else if (modes[i] != "DB")
- printf("\t%s %s;\n", types[i], vars[i]) >> CFILE;
+ log_funcdecl(logfunc, 0);
+ if (is_duplicate) {
+ log_callint(funcname);
+ log_funcdecl(dup_logfunc, 0);
+ log_callint(dup_funcname);
+ log_funcdecl(internal_name, 1);
}
# Function body and local decls
@@ -415,7 +361,10 @@ function log_function()
printf("\tdbenv = dbp->dbenv;\n") >> CFILE;
if (dbprivate)
printf("\tCOMPQUIET(lr, NULL);\n\n") >> CFILE;
- printf("\trectype = DB_%s;\n", logfunc) >> CFILE;
+ if (is_duplicate)
+ printf("\trectype = type;\n") >> CFILE;
+ else
+ printf("\trectype = DB_%s;\n", funcname) >> CFILE;
printf("\tnpad = 0;\n") >> CFILE;
printf("\trlsnp = ret_lsnp;\n\n") >> CFILE;
}
@@ -643,6 +592,7 @@ function log_function()
printf("\t\t\tif (rlsnp != ret_lsnp)\n") >> CFILE;
printf("\t\t\t\t *ret_lsnp = *rlsnp;\n") >> CFILE;
printf("\t\t}\n\t} else {\n") >> CFILE;
+ printf("\t\tret = 0;\n") >> CFILE;
printf("#ifdef DIAGNOSTIC\n") >> CFILE;
# Add the debug bit if we are logging a ND record.
@@ -660,11 +610,10 @@ function log_function()
printf("logrec.data, &rectype, sizeof(rectype));\n\n") \
>> CFILE;
# Output the log record.
- printf("\t\tret = __log_put(dbenv,\n") >> CFILE;
- printf("\t\t rlsnp, (DBT *)&logrec, ") >> CFILE;
+ printf("\t\tif (!IS_REP_CLIENT(dbenv))\n") >> CFILE;
+ printf("\t\t\tret = __log_put(dbenv,\n") >> CFILE;
+ printf("\t\t\t rlsnp, (DBT *)&logrec, ") >> CFILE;
printf("flags | DB_LOG_NOCOPY);\n") >> CFILE;
- printf("#else\n") >> CFILE;
- printf("\t\tret = 0;\n") >> CFILE;
printf("#endif\n") >> CFILE;
# Add a ND record to the txn list.
printf("\t\tSTAILQ_INSERT_HEAD(&txnp") >> CFILE;
@@ -712,6 +661,46 @@ function log_function()
printf("\treturn (ret);\n}\n\n") >> CFILE;
}
+function log_prototype(fname, with_type)
+{
+
+ # Write the log function; function prototype
+ pi = 1;
+ if (not_buf) {
+ p[pi++] = sprintf("int %s_log", fname);
+ p[pi++] = " ";
+ if (has_dbp == 1) {
+ p[pi++] = "__P((DB *";
+ } else {
+ p[pi++] = "__P((DB_ENV *";
+ }
+ p[pi++] = ", DB_TXN *, DB_LSN *, u_int32_t";
+ } else {
+ p[pi++] = sprintf("int %s_buf", fname);
+ p[pi++] = " ";
+ p[pi++] = "__P((u_int8_t *, size_t, size_t *";
+ }
+ for (i = 0; i < nvars; i++) {
+ if (modes[i] == "DB")
+ continue;
+ p[pi++] = ", ";
+ p[pi++] = sprintf("%s%s%s",
+ (modes[i] == "DBT" || modes[i] == "LOCKS" ||
+ modes[i] == "PGDBT") ? "const " : "", types[i],
+ (modes[i] == "DBT" || modes[i] == "LOCKS" ||
+ modes[i] == "PGDBT") ? " *" : "");
+ }
+
+ # If this is a logging call with type, add the type here.
+ if (with_type)
+ p[pi++] = ", u_int32_t";
+
+ p[pi++] = "";
+ p[pi++] = "));";
+ p[pi++] = "";
+ proto_format(p, CFILE);
+}
+
# If we're logging a DB handle, make sure we have a log
# file ID for it.
function db_handle_id_function(modes, n)
@@ -1010,3 +999,109 @@ function write_free(tab, ptr, file)
print(tab "free(" ptr ");") >> file
}
}
+
+function make_name(unique_name, dup_name, p_version)
+{
+ logfunc = sprintf("%s_%s", prefix, unique_name);
+ logname[num_funcs] = logfunc;
+ if (is_compat) {
+ funcname = sprintf("%s_%s_%s", prefix, unique_name, p_version);
+ } else {
+ funcname = logfunc;
+ }
+
+ if (is_duplicate)
+ dupfuncs[num_funcs] = dup_name;
+ else
+ dupfuncs[num_funcs] = funcname;
+
+ funcs[num_funcs] = funcname;
+ functable[num_funcs] = is_compat;
+ ++num_funcs;
+}
+
+function log_funcdecl(name, withtype)
+{
+ # Function declaration
+ if (not_buf && has_dbp == 1) {
+ printf("int\n%s_log(dbp, txnp, ret_lsnp, flags", \
+ name) >> CFILE;
+ } else if (not_buf) {
+ printf("int\n%s_log(dbenv, txnp, ret_lsnp, flags", \
+ name) >> CFILE;
+ } else {
+ printf("int\n%s_buf(buf, max, lenp", name) >> CFILE;
+ }
+ for (i = 0; i < nvars; i++) {
+ if (modes[i] == "DB") {
+ # We pass in fileids on the dbp, so if this is one,
+ # skip it.
+ continue;
+ }
+ printf(",") >> CFILE;
+ if ((i % 6) == 0)
+ printf("\n ") >> CFILE;
+ else
+ printf(" ") >> CFILE;
+ printf("%s", vars[i]) >> CFILE;
+ }
+
+ if (withtype)
+ printf(", type") >> CFILE;
+
+ printf(")\n") >> CFILE;
+
+ # Now print the parameters
+ if (not_buf) {
+ if (has_dbp == 1) {
+ printf("\tDB *dbp;\n") >> CFILE;
+ } else {
+ printf("\tDB_ENV *dbenv;\n") >> CFILE;
+ }
+ printf("\tDB_TXN *txnp;\n\tDB_LSN *ret_lsnp;\n") >> CFILE;
+ printf("\tu_int32_t flags;\n") >> CFILE;
+ } else {
+ printf("\tu_int8_t *buf;\n") >> CFILE;
+ printf("\tsize_t max, *lenp;\n") >> CFILE;
+ }
+ for (i = 0; i < nvars; i++) {
+ # We just skip for modes == DB.
+ if (modes[i] == "DBT" ||
+ modes[i] == "LOCKS" || modes[i] == "PGDBT")
+ printf("\tconst %s *%s;\n", types[i], vars[i]) >> CFILE;
+ else if (modes[i] != "DB")
+ printf("\t%s %s;\n", types[i], vars[i]) >> CFILE;
+ }
+ if (withtype)
+ printf("\tu_int32_t type;\n") >> CFILE;
+}
+
+# This should always be called with not_buf
+function log_callint(fname)
+{
+ if (has_dbp == 1) {
+ printf("\n{\n\treturn (%s_log(dbp, txnp, ret_lsnp, flags", \
+ internal_name) >> CFILE;
+ } else {
+ printf("\n{\n\treturn (%s_log(dbenv, txnp, ret_lsnp, flags", \
+ internal_name) >> CFILE;
+ }
+
+ for (i = 0; i < nvars; i++) {
+ if (modes[i] == "DB") {
+ # We pass in fileids on the dbp, so if this is one,
+ # skip it.
+ continue;
+ }
+ printf(",") >> CFILE;
+ if ((i % 6) == 0)
+ printf("\n ") >> CFILE;
+ else
+ printf(" ") >> CFILE;
+ printf("%s", vars[i]) >> CFILE;
+ }
+
+ printf(", DB_%s", fname) >> CFILE;
+
+ printf("));\n}\n") >> CFILE;
+}
diff --git a/db/dist/gen_rpc.awk b/db/dist/gen_rpc.awk
index e4bf85e76..7b3e63508 100644
--- a/db/dist/gen_rpc.awk
+++ b/db/dist/gen_rpc.awk
@@ -1,5 +1,5 @@
#
-# $Id: gen_rpc.awk,v 12.7 2006/05/05 15:29:43 bostic Exp $
+# $Id: gen_rpc.awk,v 12.13 2007/05/23 15:07:29 bostic Exp $
# Awk script for generating client/server RPC code.
#
# This awk script generates most of the RPC routines for DB client/server
@@ -757,7 +757,8 @@ END {
args[i], args[i], xidsize) >> CFILE
}
if (rpc_type[i] == "INT") {
- printf("\tmsg.%s = %s;\n", args[i], args[i]) >> CFILE
+ printf("\tmsg.%s = (u_int)%s;\n",
+ args[i], args[i]) >> CFILE
}
if (rpc_type[i] == "STRING") {
printf("\tif (%s == NULL)\n", args[i]) >> CFILE
@@ -790,8 +791,8 @@ END {
# If we are an array of ints, *_len is how many
# elements. If we are a GID, *_len is total bytes.
#
- printf("\tmsg.%s.%s_len = %si",args[i], args[i], \
- args[i]) >> CFILE
+ printf("\tmsg.%s.%s_len = (u_int)%si",
+ args[i], args[i], args[i]) >> CFILE
if (list_type[i] == "GID")
printf(" * %d;\n", xidsize) >> CFILE
else
@@ -858,10 +859,11 @@ END {
#
for (i = 0; i < rvars; ++i) {
if (ret_isarg[i]) {
- printf("\tif (%sp != NULL)\n", \
+ printf("\tif (%sp != NULL)\n",
retargs[i]) >> CFILE;
- printf("\t\t*%sp = replyp->%s;\n", \
- retargs[i], retargs[i]) >> CFILE;
+ printf("\t\t*%sp = (%s)replyp->%s;\n",
+ retargs[i],
+ retc_type[i], retargs[i]) >> CFILE;
}
}
} else {
@@ -984,7 +986,7 @@ function general_headers()
printf("#include \"db_config.h\"\n") >> CFILE
printf("\n") >> CFILE
printf("#include \"db_int.h\"\n") >> CFILE
- printf("#ifndef NO_SYSTEM_INCLUDES\n") >> CFILE
+ printf("#ifdef HAVE_SYSTEM_INCLUDE_FILES\n") >> CFILE
printf("#include <rpc/rpc.h>\n") >> CFILE
printf("#endif\n") >> CFILE
printf("#include \"db_server.h\"\n") >> CFILE
@@ -1001,7 +1003,7 @@ function general_headers()
printf("#include \"db_config.h\"\n") >> SFILE
printf("\n") >> SFILE
printf("#include \"db_int.h\"\n") >> SFILE
- printf("#ifndef NO_SYSTEM_INCLUDES\n") >> SFILE
+ printf("#ifdef HAVE_SYSTEM_INCLUDE_FILES\n") >> SFILE
printf("#include <rpc/rpc.h>\n") >> SFILE
printf("#endif\n") >> SFILE
printf("#include \"db_server.h\"\n") >> SFILE
@@ -1012,7 +1014,7 @@ function general_headers()
printf("#include \"db_config.h\"\n") >> PFILE
printf("\n") >> PFILE
printf("#include \"db_int.h\"\n") >> PFILE
- printf("#ifndef NO_SYSTEM_INCLUDES\n") >> PFILE
+ printf("#ifdef HAVE_SYSTEM_INCLUDE_FILES\n") >> PFILE
printf("#include <rpc/rpc.h>\n") >> PFILE
printf("#endif\n") >> PFILE
printf("#include \"db_server.h\"\n") >> PFILE
@@ -1028,6 +1030,8 @@ function illegal_functions(OUTPUT)
printf("static int __dbcl_dbp_illegal __P((DB *));\n") >> OUTPUT
printf("static int __dbcl_noserver __P((DB_ENV *));\n") >> OUTPUT
printf("static int __dbcl_txn_illegal __P((DB_TXN *));\n") >> OUTPUT
+ # If we ever need an "illegal" function for a DBC method.
+ # printf("static int __dbcl_dbc_illegal __P((DBC *));\n") >> OUTPUT
printf("\n") >> OUTPUT
printf("static int\n") >> OUTPUT
@@ -1071,23 +1075,38 @@ function illegal_functions(OUTPUT)
printf("{\n\treturn (__dbcl_dbenv_illegal(txn->mgrp->dbenv));\n")\
>> OUTPUT
printf("}\n\n") >> OUTPUT
+ # If we ever need an "illegal" function for a DBC method.
+ # printf("static int\n") >> OUTPUT
+ # printf("__dbcl_dbc_illegal(dbc)\n") >> OUTPUT
+ # printf("\tDBC *dbc;\n") >> OUTPUT
+ # printf("{\n\treturn (__dbcl_dbenv_illegal(dbc->dbp->dbenv));\n") \
+ # >> OUTPUT
+ # printf("}\n\n") >> OUTPUT
}
function obj_func(v, l)
{
- # Ignore db_create -- there's got to be something cleaner, but I
- # don't want to rewrite rpc.src right now.
+ # Ignore db_create and env_create -- there's got to be something
+ # cleaner, but I don't want to rewrite rpc.src right now.
if (name == "db_create")
return;
if (name == "env_create")
return;
- # Strip off the leading prefix for the method name -- there's got to
- # be something cleaner, but I don't want to rewrite rpc.src right now.
+ # Strip off the leading prefix for the method name.
+ #
+ # There are two method names for cursors, the old and the new.
+ #
+ # There just has to be something cleaner, but yadda, yadda, yadda.
len = length(name);
i = index(name, "_");
- l[obj_indx] = sprintf("\t%s->%s = __dbcl_%s;",
- v, substr(name, i + 1, len - i), name);
+ s = substr(name, i + 1, len - i)
+
+ if (v != "dbc" || s == "get_priority" || s == "set_priority")
+ o = ""
+ else
+ o = sprintf(" = %s->c_%s", v, s)
+ l[obj_indx] = sprintf("\t%s->%s%s = __dbcl_%s;", v, s, o, name)
}
function obj_illegal(l, handle, method, proto)
diff --git a/db/dist/ltconfig b/db/dist/ltconfig
deleted file mode 100644
index f78afda0e..000000000
--- a/db/dist/ltconfig
+++ /dev/null
@@ -1,3136 +0,0 @@
-#! /bin/sh
-
-# ltconfig - Create a system-specific libtool.
-# Copyright (C) 1996-1999 Free Software Foundation, Inc.
-# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
-#
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# A lot of this script is taken from autoconf-2.10.
-
-# Check that we are running under the correct shell.
-SHELL=${CONFIG_SHELL-/bin/sh}
-echo=echo
-if test "X$1" = X--no-reexec; then
- # Discard the --no-reexec flag, and continue.
- shift
-elif test "X$1" = X--fallback-echo; then
- # Avoid inline document here, it may be left over
- :
-elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
- # Yippee, $echo works!
- :
-else
- # Restart under the correct shell.
- exec "$SHELL" "$0" --no-reexec ${1+"$@"}
-fi
-
-if test "X$1" = X--fallback-echo; then
- # used as fallback echo
- shift
- cat <<EOF
-$*
-EOF
- exit 0
-fi
-
-# Find the correct PATH separator. Usually this is `:', but
-# DJGPP uses `;' like DOS.
-if test "X${PATH_SEPARATOR+set}" != Xset; then
- UNAME=${UNAME-`uname 2>/dev/null`}
- case X$UNAME in
- *-DOS) PATH_SEPARATOR=';' ;;
- *) PATH_SEPARATOR=':' ;;
- esac
-fi
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
-
-if test "X${echo_test_string+set}" != Xset; then
- # find a string as large as possible, as long as the shell can cope with it
- for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do
- # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
- if (echo_test_string="`eval $cmd`") 2>/dev/null &&
- echo_test_string="`eval $cmd`" &&
- (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null; then
- break
- fi
- done
-fi
-
-if test "X`($echo '\t') 2>/dev/null`" != 'X\t' ||
- test "X`($echo "$echo_test_string") 2>/dev/null`" != X"$echo_test_string"; then
- # The Solaris, AIX, and Digital Unix default echo programs unquote
- # backslashes. This makes it impossible to quote backslashes using
- # echo "$something" | sed 's/\\/\\\\/g'
- #
- # So, first we look for a working echo in the user's PATH.
-
- IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
- for dir in $PATH /usr/ucb; do
- if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
- test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
- test "X`($dir/echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then
- echo="$dir/echo"
- break
- fi
- done
- IFS="$save_ifs"
-
- if test "X$echo" = Xecho; then
- # We didn't find a better echo, so look for alternatives.
- if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' &&
- test "X`(print -r "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then
- # This shell has a builtin print -r that does the trick.
- echo='print -r'
- elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) &&
- test "X$CONFIG_SHELL" != X/bin/ksh; then
- # If we have ksh, try running ltconfig again with it.
- ORIGINAL_CONFIG_SHELL="${CONFIG_SHELL-/bin/sh}"
- export ORIGINAL_CONFIG_SHELL
- CONFIG_SHELL=/bin/ksh
- export CONFIG_SHELL
- exec "$CONFIG_SHELL" "$0" --no-reexec ${1+"$@"}
- else
- # Try using printf.
- echo='printf "%s\n"'
- if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
- test "X`($echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then
- # Cool, printf works
- :
- elif test "X`("$ORIGINAL_CONFIG_SHELL" "$0" --fallback-echo '\t') 2>/dev/null`" = 'X\t' &&
- test "X`("$ORIGINAL_CONFIG_SHELL" "$0" --fallback-echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then
- CONFIG_SHELL="$ORIGINAL_CONFIG_SHELL"
- export CONFIG_SHELL
- SHELL="$CONFIG_SHELL"
- export SHELL
- echo="$CONFIG_SHELL $0 --fallback-echo"
- elif test "X`("$CONFIG_SHELL" "$0" --fallback-echo '\t') 2>/dev/null`" = 'X\t' &&
- test "X`("$CONFIG_SHELL" "$0" --fallback-echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then
- echo="$CONFIG_SHELL $0 --fallback-echo"
- else
- # maybe with a smaller string...
- prev=:
-
- for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do
- if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null; then
- break
- fi
- prev="$cmd"
- done
-
- if test "$prev" != 'sed 50q "$0"'; then
- echo_test_string=`eval $prev`
- export echo_test_string
- exec "${ORIGINAL_CONFIG_SHELL}" "$0" ${1+"$@"}
- else
- # Oops. We lost completely, so just stick with echo.
- echo=echo
- fi
- fi
- fi
- fi
-fi
-
-# Sed substitution that helps us do robust quoting. It backslashifies
-# metacharacters that are still active within double-quoted strings.
-Xsed='sed -e s/^X//'
-sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'
-
-# Same as above, but do not quote variable references.
-double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'
-
-# Sed substitution to delay expansion of an escaped shell variable in a
-# double_quote_subst'ed string.
-delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
-
-# The name of this program.
-progname=`$echo "X$0" | $Xsed -e 's%^.*/%%'`
-
-# Constants:
-PROGRAM=ltconfig
-PACKAGE=libtool
-VERSION=1.3.5
-TIMESTAMP=" (1.385.2.206 2000/05/27 11:12:27)"
-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-rm="rm -f"
-
-help="Try \`$progname --help' for more information."
-
-# Global variables:
-default_ofile=libtool
-can_build_shared=yes
-enable_shared=yes
-# All known linkers require a `.a' archive for static linking (except M$VC,
-# which needs '.lib').
-enable_static=yes
-enable_fast_install=yes
-enable_dlopen=unknown
-enable_win32_dll=no
-ltmain=
-silent=
-srcdir=
-ac_config_guess=
-ac_config_sub=
-host=
-nonopt=
-ofile="$default_ofile"
-verify_host=yes
-with_gcc=no
-with_gnu_ld=no
-need_locks=yes
-ac_ext=c
-objext=o
-libext=a
-exeext=
-cache_file=
-
-old_AR="$AR"
-old_CC="$CC"
-old_CFLAGS="$CFLAGS"
-old_CPPFLAGS="$CPPFLAGS"
-old_LDFLAGS="$LDFLAGS"
-old_LD="$LD"
-old_LN_S="$LN_S"
-old_LIBS="$LIBS"
-old_NM="$NM"
-old_RANLIB="$RANLIB"
-old_DLLTOOL="$DLLTOOL"
-old_OBJDUMP="$OBJDUMP"
-old_AS="$AS"
-
-# Parse the command line options.
-args=
-prev=
-for option
-do
- case "$option" in
- -*=*) optarg=`echo "$option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
- *) optarg= ;;
- esac
-
- # If the previous option needs an argument, assign it.
- if test -n "$prev"; then
- eval "$prev=\$option"
- prev=
- continue
- fi
-
- case "$option" in
- --help) cat <<EOM
-Usage: $progname [OPTION]... [HOST [LTMAIN]]
-
-Generate a system-specific libtool script.
-
- --debug enable verbose shell tracing
- --disable-shared do not build shared libraries
- --disable-static do not build static libraries
- --disable-fast-install do not optimize for fast installation
- --enable-dlopen enable dlopen support
- --enable-win32-dll enable building dlls on win32 hosts
- --help display this help and exit
- --no-verify do not verify that HOST is a valid host type
--o, --output=FILE specify the output file [default=$default_ofile]
- --quiet same as \`--silent'
- --silent do not print informational messages
- --srcdir=DIR find \`config.guess' in DIR
- --version output version information and exit
- --with-gcc assume that the GNU C compiler will be used
- --with-gnu-ld assume that the C compiler uses the GNU linker
- --disable-lock disable file locking
- --cache-file=FILE configure cache file
-
-LTMAIN is the \`ltmain.sh' shell script fragment or \`ltmain.c' program
-that provides basic libtool functionality.
-
-HOST is the canonical host system name [default=guessed].
-EOM
- exit 0
- ;;
-
- --debug)
- echo "$progname: enabling shell trace mode"
- set -x
- ;;
-
- --disable-shared) enable_shared=no ;;
-
- --disable-static) enable_static=no ;;
-
- --disable-fast-install) enable_fast_install=no ;;
-
- --enable-dlopen) enable_dlopen=yes ;;
-
- --enable-win32-dll) enable_win32_dll=yes ;;
-
- --quiet | --silent) silent=yes ;;
-
- --srcdir) prev=srcdir ;;
- --srcdir=*) srcdir="$optarg" ;;
-
- --no-verify) verify_host=no ;;
-
- --output | -o) prev=ofile ;;
- --output=*) ofile="$optarg" ;;
-
- --version) echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"; exit 0 ;;
-
- --with-gcc) with_gcc=yes ;;
- --with-gnu-ld) with_gnu_ld=yes ;;
-
- --disable-lock) need_locks=no ;;
-
- --cache-file=*) cache_file="$optarg" ;;
-
- -*)
- echo "$progname: unrecognized option \`$option'" 1>&2
- echo "$help" 1>&2
- exit 1
- ;;
-
- *)
- if test -z "$ltmain"; then
- ltmain="$option"
- elif test -z "$host"; then
-# This generates an unnecessary warning for sparc-sun-solaris4.1.3_U1
-# if test -n "`echo $option| sed 's/[-a-z0-9.]//g'`"; then
-# echo "$progname: warning \`$option' is not a valid host type" 1>&2
-# fi
- host="$option"
- else
- echo "$progname: too many arguments" 1>&2
- echo "$help" 1>&2
- exit 1
- fi ;;
- esac
-done
-
-if test -z "$ltmain"; then
- echo "$progname: you must specify a LTMAIN file" 1>&2
- echo "$help" 1>&2
- exit 1
-fi
-
-if test ! -f "$ltmain"; then
- echo "$progname: \`$ltmain' does not exist" 1>&2
- echo "$help" 1>&2
- exit 1
-fi
-
-# Quote any args containing shell metacharacters.
-ltconfig_args=
-for arg
-do
- case "$arg" in
- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*)
- ltconfig_args="$ltconfig_args '$arg'" ;;
- *) ltconfig_args="$ltconfig_args $arg" ;;
- esac
-done
-
-# A relevant subset of AC_INIT.
-
-# File descriptor usage:
-# 0 standard input
-# 1 file creation
-# 2 errors and warnings
-# 3 some systems may open it to /dev/tty
-# 4 used on the Kubota Titan
-# 5 compiler messages saved in config.log
-# 6 checking for... messages and results
-if test "$silent" = yes; then
- exec 6>/dev/null
-else
- exec 6>&1
-fi
-exec 5>>./config.log
-
-# NLS nuisances.
-# Only set LANG and LC_ALL to C if already set.
-# These must not be set unconditionally because not all systems understand
-# e.g. LANG=C (notably SCO).
-if test "X${LC_ALL+set}" = Xset; then LC_ALL=C; export LC_ALL; fi
-if test "X${LANG+set}" = Xset; then LANG=C; export LANG; fi
-
-if test -n "$cache_file" && test -r "$cache_file"; then
- echo "loading cache $cache_file within ltconfig"
- . $cache_file
-fi
-
-if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
- # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
- if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
- ac_n= ac_c='
-' ac_t=' '
- else
- ac_n=-n ac_c= ac_t=
- fi
-else
- ac_n= ac_c='\c' ac_t=
-fi
-
-if test -z "$srcdir"; then
- # Assume the source directory is the same one as the path to LTMAIN.
- srcdir=`$echo "X$ltmain" | $Xsed -e 's%/[^/]*$%%'`
- test "$srcdir" = "$ltmain" && srcdir=.
-fi
-
-trap "$rm conftest*; exit 1" 1 2 15
-if test "$verify_host" = yes; then
- # Check for config.guess and config.sub.
- ac_aux_dir=
- for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
- if test -f $ac_dir/config.guess; then
- ac_aux_dir=$ac_dir
- break
- fi
- done
- if test -z "$ac_aux_dir"; then
- echo "$progname: cannot find config.guess in $srcdir $srcdir/.. $srcdir/../.." 1>&2
- echo "$help" 1>&2
- exit 1
- fi
- ac_config_guess=$ac_aux_dir/config.guess
- ac_config_sub=$ac_aux_dir/config.sub
-
- # Make sure we can run config.sub.
- if $SHELL $ac_config_sub sun4 >/dev/null 2>&1; then :
- else
- echo "$progname: cannot run $ac_config_sub" 1>&2
- echo "$help" 1>&2
- exit 1
- fi
-
- echo $ac_n "checking host system type""... $ac_c" 1>&6
-
- host_alias=$host
- case "$host_alias" in
- "")
- if host_alias=`$SHELL $ac_config_guess`; then :
- else
- echo "$progname: cannot guess host type; you must specify one" 1>&2
- echo "$help" 1>&2
- exit 1
- fi ;;
- esac
- host=`$SHELL $ac_config_sub $host_alias`
- echo "$ac_t$host" 1>&6
-
- # Make sure the host verified.
- test -z "$host" && exit 1
-
-elif test -z "$host"; then
- echo "$progname: you must specify a host type if you use \`--no-verify'" 1>&2
- echo "$help" 1>&2
- exit 1
-else
- host_alias=$host
-fi
-
-# Transform linux* to *-*-linux-gnu*, to support old configure scripts.
-case "$host_os" in
-linux-gnu*) ;;
-linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'`
-esac
-
-host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
-host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
-host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
-
-case "$host_os" in
-aix3*)
- # AIX sometimes has problems with the GCC collect2 program. For some
- # reason, if we set the COLLECT_NAMES environment variable, the problems
- # vanish in a puff of smoke.
- if test "X${COLLECT_NAMES+set}" != Xset; then
- COLLECT_NAMES=
- export COLLECT_NAMES
- fi
- ;;
-esac
-
-# Determine commands to create old-style static archives.
-old_archive_cmds='$AR cru $oldlib$oldobjs'
-old_postinstall_cmds='chmod 644 $oldlib'
-old_postuninstall_cmds=
-
-# Set a sane default for `AR'.
-test -z "$AR" && AR=ar
-
-# Set a sane default for `OBJDUMP'.
-test -z "$OBJDUMP" && OBJDUMP=objdump
-
-# If RANLIB is not set, then run the test.
-if test "${RANLIB+set}" != "set"; then
- result=no
-
- echo $ac_n "checking for ranlib... $ac_c" 1>&6
- IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
- for dir in $PATH; do
- test -z "$dir" && dir=.
- if test -f $dir/ranlib || test -f $dir/ranlib$ac_exeext; then
- RANLIB="ranlib"
- result="ranlib"
- break
- fi
- done
- IFS="$save_ifs"
-
- echo "$ac_t$result" 1>&6
-fi
-
-if test -n "$RANLIB"; then
- old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
- old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
-fi
-
-# Set sane defaults for `DLLTOOL', `OBJDUMP', and `AS', used on cygwin.
-test -z "$DLLTOOL" && DLLTOOL=dlltool
-test -z "$OBJDUMP" && OBJDUMP=objdump
-test -z "$AS" && AS=as
-
-# Check to see if we are using GCC.
-if test "$with_gcc" != yes || test -z "$CC"; then
- # If CC is not set, then try to find GCC or a usable CC.
- if test -z "$CC"; then
- echo $ac_n "checking for gcc... $ac_c" 1>&6
- IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
- for dir in $PATH; do
- test -z "$dir" && dir=.
- if test -f $dir/gcc || test -f $dir/gcc$ac_exeext; then
- CC="gcc"
- break
- fi
- done
- IFS="$save_ifs"
-
- if test -n "$CC"; then
- echo "$ac_t$CC" 1>&6
- else
- echo "$ac_t"no 1>&6
- fi
- fi
-
- # Not "gcc", so try "cc", rejecting "/usr/ucb/cc".
- if test -z "$CC"; then
- echo $ac_n "checking for cc... $ac_c" 1>&6
- IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
- cc_rejected=no
- for dir in $PATH; do
- test -z "$dir" && dir=.
- if test -f $dir/cc || test -f $dir/cc$ac_exeext; then
- if test "$dir/cc" = "/usr/ucb/cc"; then
- cc_rejected=yes
- continue
- fi
- CC="cc"
- break
- fi
- done
- IFS="$save_ifs"
- if test $cc_rejected = yes; then
- # We found a bogon in the path, so make sure we never use it.
- set dummy $CC
- shift
- if test $# -gt 0; then
- # We chose a different compiler from the bogus one.
- # However, it has the same name, so the bogon will be chosen
- # first if we set CC to just the name; use the full file name.
- shift
- set dummy "$dir/cc" "$@"
- shift
- CC="$@"
- fi
- fi
-
- if test -n "$CC"; then
- echo "$ac_t$CC" 1>&6
- else
- echo "$ac_t"no 1>&6
- fi
-
- if test -z "$CC"; then
- echo "$progname: error: no acceptable cc found in \$PATH" 1>&2
- exit 1
- fi
- fi
-
- # Now see if the compiler is really GCC.
- with_gcc=no
- echo $ac_n "checking whether we are using GNU C... $ac_c" 1>&6
- echo "$progname:581: checking whether we are using GNU C" >&5
-
- $rm conftest.c
- cat > conftest.c <<EOF
-#ifdef __GNUC__
- yes;
-#endif
-EOF
- if { ac_try='${CC-cc} -E conftest.c'; { (eval echo $progname:589: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
- with_gcc=yes
- fi
- $rm conftest.c
- echo "$ac_t$with_gcc" 1>&6
-fi
-
-# Allow CC to be a program name with arguments.
-set dummy $CC
-compiler="$2"
-
-echo $ac_n "checking for object suffix... $ac_c" 1>&6
-$rm conftest*
-echo 'int i = 1;' > conftest.c
-echo "$progname:603: checking for object suffix" >& 5
-if { (eval echo $progname:604: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; }; then
- # Append any warnings to the config.log.
- cat conftest.err 1>&5
-
- for ac_file in conftest.*; do
- case $ac_file in
- *.c) ;;
- *) objext=`echo $ac_file | sed -e s/conftest.//` ;;
- esac
- done
-else
- cat conftest.err 1>&5
- echo "$progname: failed program was:" >&5
- cat conftest.c >&5
-fi
-$rm conftest*
-echo "$ac_t$objext" 1>&6
-
-echo $ac_n "checking for executable suffix... $ac_c" 1>&6
-if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- ac_cv_exeext="no"
- $rm conftest*
- echo 'main () { return 0; }' > conftest.c
- echo "$progname:629: checking for executable suffix" >& 5
- if { (eval echo $progname:630: \"$ac_link\") 1>&5; (eval $ac_link) 2>conftest.err; }; then
- # Append any warnings to the config.log.
- cat conftest.err 1>&5
-
- for ac_file in conftest.*; do
- case $ac_file in
- *.c | *.err | *.$objext ) ;;
- *) ac_cv_exeext=.`echo $ac_file | sed -e s/conftest.//` ;;
- esac
- done
- else
- cat conftest.err 1>&5
- echo "$progname: failed program was:" >&5
- cat conftest.c >&5
- fi
- $rm conftest*
-fi
-if test "X$ac_cv_exeext" = Xno; then
- exeext=""
-else
- exeext="$ac_cv_exeext"
-fi
-echo "$ac_t$ac_cv_exeext" 1>&6
-
-echo $ac_n "checking for $compiler option to produce PIC... $ac_c" 1>&6
-pic_flag=
-special_shlib_compile_flags=
-wl=
-link_static_flag=
-no_builtin_flag=
-
-if test "$with_gcc" = yes; then
- wl='-Wl,'
- link_static_flag='-static'
-
- case "$host_os" in
- beos* | irix5* | irix6* | osf3* | osf4* | osf5*)
- # PIC is the default for these OSes.
- ;;
- aix*)
- # Below there is a dirty hack to force normal static linking with -ldl
- # The problem is because libdl dynamically linked with both libc and
- # libC (AIX C++ library), which obviously doesn't included in libraries
- # list by gcc. This cause undefined symbols with -static flags.
- # This hack allows C programs to be linked with "-static -ldl", but
- # we not sure about C++ programs.
- link_static_flag="$link_static_flag ${wl}-lC"
- ;;
- cygwin* | mingw* | os2*)
- # We can build DLLs from non-PIC.
- ;;
- amigaos*)
- # FIXME: we need at least 68020 code to build shared libraries, but
- # adding the `-m68020' flag to GCC prevents building anything better,
- # like `-m68040'.
- pic_flag='-m68020 -resident32 -malways-restore-a4'
- ;;
- sysv4*MP*)
- if test -d /usr/nec; then
- pic_flag=-Kconform_pic
- fi
- ;;
- *)
- pic_flag='-fPIC'
- ;;
- esac
-else
- # PORTME Check for PIC flags for the system compiler.
- case "$host_os" in
- aix3* | aix4*)
- # All AIX code is PIC.
- link_static_flag='-bnso -bI:/lib/syscalls.exp'
- ;;
-
- hpux9* | hpux10* | hpux11*)
- # Is there a better link_static_flag that works with the bundled CC?
- wl='-Wl,'
- link_static_flag="${wl}-a ${wl}archive"
- pic_flag='+Z'
- ;;
-
- irix5* | irix6*)
- wl='-Wl,'
- link_static_flag='-non_shared'
- # PIC (with -KPIC) is the default.
- ;;
-
- cygwin* | mingw* | os2*)
- # We can build DLLs from non-PIC.
- ;;
-
- osf3* | osf4* | osf5*)
- # All OSF/1 code is PIC.
- wl='-Wl,'
- link_static_flag='-non_shared'
- ;;
-
- sco3.2v5*)
- pic_flag='-Kpic'
- link_static_flag='-dn'
- special_shlib_compile_flags='-belf'
- ;;
-
- solaris*)
- pic_flag='-KPIC'
- link_static_flag='-Bstatic'
- wl='-Wl,'
- ;;
-
- sunos4*)
- pic_flag='-PIC'
- link_static_flag='-Bstatic'
- wl='-Qoption ld '
- ;;
-
- sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
- pic_flag='-KPIC'
- link_static_flag='-Bstatic'
- wl='-Wl,'
- ;;
-
- uts4*)
- pic_flag='-pic'
- link_static_flag='-Bstatic'
- ;;
- sysv4*MP*)
- if test -d /usr/nec ;then
- pic_flag='-Kconform_pic'
- link_static_flag='-Bstatic'
- fi
- ;;
- *)
- can_build_shared=no
- ;;
- esac
-fi
-
-if test -n "$pic_flag"; then
- echo "$ac_t$pic_flag" 1>&6
-
- # Check to make sure the pic_flag actually works.
- echo $ac_n "checking if $compiler PIC flag $pic_flag works... $ac_c" 1>&6
- $rm conftest*
- echo "int some_variable = 0;" > conftest.c
- save_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS $pic_flag -DPIC"
- echo "$progname:776: checking if $compiler PIC flag $pic_flag works" >&5
- if { (eval echo $progname:777: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.$objext; then
- # Append any warnings to the config.log.
- cat conftest.err 1>&5
-
- case "$host_os" in
- hpux9* | hpux10* | hpux11*)
- # On HP-UX, both CC and GCC only warn that PIC is supported... then they
- # create non-PIC objects. So, if there were any warnings, we assume that
- # PIC is not supported.
- if test -s conftest.err; then
- echo "$ac_t"no 1>&6
- can_build_shared=no
- pic_flag=
- else
- echo "$ac_t"yes 1>&6
- pic_flag=" $pic_flag"
- fi
- ;;
- *)
- echo "$ac_t"yes 1>&6
- pic_flag=" $pic_flag"
- ;;
- esac
- else
- # Append any errors to the config.log.
- cat conftest.err 1>&5
- can_build_shared=no
- pic_flag=
- echo "$ac_t"no 1>&6
- fi
- CFLAGS="$save_CFLAGS"
- $rm conftest*
-else
- echo "$ac_t"none 1>&6
-fi
-
-# Check to see if options -o and -c are simultaneously supported by compiler
-echo $ac_n "checking if $compiler supports -c -o file.o... $ac_c" 1>&6
-$rm -r conftest 2>/dev/null
-mkdir conftest
-cd conftest
-$rm conftest*
-echo "int some_variable = 0;" > conftest.c
-mkdir out
-# According to Tom Tromey, Ian Lance Taylor reported there are C compilers
-# that will create temporary files in the current directory regardless of
-# the output directory. Thus, making CWD read-only will cause this test
-# to fail, enabling locking or at least warning the user not to do parallel
-# builds.
-chmod -w .
-save_CFLAGS="$CFLAGS"
-CFLAGS="$CFLAGS -o out/conftest2.o"
-echo "$progname:829: checking if $compiler supports -c -o file.o" >&5
-if { (eval echo $progname:830: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.o; then
-
- # The compiler can only warn and ignore the option if not recognized
- # So say no if there are warnings
- if test -s out/conftest.err; then
- echo "$ac_t"no 1>&6
- compiler_c_o=no
- else
- echo "$ac_t"yes 1>&6
- compiler_c_o=yes
- fi
-else
- # Append any errors to the config.log.
- cat out/conftest.err 1>&5
- compiler_c_o=no
- echo "$ac_t"no 1>&6
-fi
-CFLAGS="$save_CFLAGS"
-chmod u+w .
-$rm conftest* out/*
-rmdir out
-cd ..
-rmdir conftest
-$rm -r conftest 2>/dev/null
-
-if test x"$compiler_c_o" = x"yes"; then
- # Check to see if we can write to a .lo
- echo $ac_n "checking if $compiler supports -c -o file.lo... $ac_c" 1>&6
- $rm conftest*
- echo "int some_variable = 0;" > conftest.c
- save_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -c -o conftest.lo"
- echo "$progname:862: checking if $compiler supports -c -o file.lo" >&5
-if { (eval echo $progname:863: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.lo; then
-
- # The compiler can only warn and ignore the option if not recognized
- # So say no if there are warnings
- if test -s conftest.err; then
- echo "$ac_t"no 1>&6
- compiler_o_lo=no
- else
- echo "$ac_t"yes 1>&6
- compiler_o_lo=yes
- fi
- else
- # Append any errors to the config.log.
- cat conftest.err 1>&5
- compiler_o_lo=no
- echo "$ac_t"no 1>&6
- fi
- CFLAGS="$save_CFLAGS"
- $rm conftest*
-else
- compiler_o_lo=no
-fi
-
-# Check to see if we can do hard links to lock some files if needed
-hard_links="nottested"
-if test "$compiler_c_o" = no && test "$need_locks" != no; then
- # do not overwrite the value of need_locks provided by the user
- echo $ac_n "checking if we can lock with hard links... $ac_c" 1>&6
- hard_links=yes
- $rm conftest*
- ln conftest.a conftest.b 2>/dev/null && hard_links=no
- touch conftest.a
- ln conftest.a conftest.b 2>&5 || hard_links=no
- ln conftest.a conftest.b 2>/dev/null && hard_links=no
- echo "$ac_t$hard_links" 1>&6
- $rm conftest*
- if test "$hard_links" = no; then
- echo "*** WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2
- need_locks=warn
- fi
-else
- need_locks=no
-fi
-
-if test "$with_gcc" = yes; then
- # Check to see if options -fno-rtti -fno-exceptions are supported by compiler
- echo $ac_n "checking if $compiler supports -fno-rtti -fno-exceptions ... $ac_c" 1>&6
- $rm conftest*
- echo "int some_variable = 0;" > conftest.c
- save_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.c"
- echo "$progname:914: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
- if { (eval echo $progname:915: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.o; then
-
- # The compiler can only warn and ignore the option if not recognized
- # So say no if there are warnings
- if test -s conftest.err; then
- echo "$ac_t"no 1>&6
- compiler_rtti_exceptions=no
- else
- echo "$ac_t"yes 1>&6
- compiler_rtti_exceptions=yes
- fi
- else
- # Append any errors to the config.log.
- cat conftest.err 1>&5
- compiler_rtti_exceptions=no
- echo "$ac_t"no 1>&6
- fi
- CFLAGS="$save_CFLAGS"
- $rm conftest*
-
- if test "$compiler_rtti_exceptions" = "yes"; then
- no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions'
- else
- no_builtin_flag=' -fno-builtin'
- fi
-
-fi
-
-# Check for any special shared library compilation flags.
-if test -n "$special_shlib_compile_flags"; then
- echo "$progname: warning: \`$CC' requires \`$special_shlib_compile_flags' to build shared libraries" 1>&2
- if echo "$old_CC $old_CFLAGS " | egrep -e "[ ]$special_shlib_compile_flags[ ]" >/dev/null; then :
- else
- echo "$progname: add \`$special_shlib_compile_flags' to the CC or CFLAGS env variable and reconfigure" 1>&2
- can_build_shared=no
- fi
-fi
-
-echo $ac_n "checking if $compiler static flag $link_static_flag works... $ac_c" 1>&6
-$rm conftest*
-echo 'main(){return(0);}' > conftest.c
-save_LDFLAGS="$LDFLAGS"
-LDFLAGS="$LDFLAGS $link_static_flag"
-echo "$progname:958: checking if $compiler static flag $link_static_flag works" >&5
-if { (eval echo $progname:959: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
- echo "$ac_t$link_static_flag" 1>&6
-else
- echo "$ac_t"none 1>&6
- link_static_flag=
-fi
-LDFLAGS="$save_LDFLAGS"
-$rm conftest*
-
-if test -z "$LN_S"; then
- # Check to see if we can use ln -s, or we need hard links.
- echo $ac_n "checking whether ln -s works... $ac_c" 1>&6
- $rm conftest.dat
- if ln -s X conftest.dat 2>/dev/null; then
- $rm conftest.dat
- LN_S="ln -s"
- else
- LN_S=ln
- fi
- if test "$LN_S" = "ln -s"; then
- echo "$ac_t"yes 1>&6
- else
- echo "$ac_t"no 1>&6
- fi
-fi
-
-# Make sure LD is an absolute path.
-if test -z "$LD"; then
- ac_prog=ld
- if test "$with_gcc" = yes; then
- # Check if gcc -print-prog-name=ld gives a path.
- echo $ac_n "checking for ld used by GCC... $ac_c" 1>&6
- echo "$progname:991: checking for ld used by GCC" >&5
- ac_prog=`($CC -print-prog-name=ld) 2>&5`
- case "$ac_prog" in
- # Accept absolute paths.
- [\\/]* | [A-Za-z]:[\\/]*)
- re_direlt='/[^/][^/]*/\.\./'
- # Canonicalize the path of ld
- ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
- while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
- ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
- done
- test -z "$LD" && LD="$ac_prog"
- ;;
- "")
- # If it fails, then pretend we are not using GCC.
- ac_prog=ld
- ;;
- *)
- # If it is relative, then search for the first ld in PATH.
- with_gnu_ld=unknown
- ;;
- esac
- elif test "$with_gnu_ld" = yes; then
- echo $ac_n "checking for GNU ld... $ac_c" 1>&6
- echo "$progname:1015: checking for GNU ld" >&5
- else
- echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6
- echo "$progname:1018: checking for non-GNU ld" >&5
- fi
-
- if test -z "$LD"; then
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
- for ac_dir in $PATH; do
- test -z "$ac_dir" && ac_dir=.
- if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
- LD="$ac_dir/$ac_prog"
- # Check to see if the program is GNU ld. I'd rather use --version,
- # but apparently some GNU ld's only accept -v.
- # Break only if it was the GNU/non-GNU ld that we prefer.
- if "$LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then
- test "$with_gnu_ld" != no && break
- else
- test "$with_gnu_ld" != yes && break
- fi
- fi
- done
- IFS="$ac_save_ifs"
- fi
-
- if test -n "$LD"; then
- echo "$ac_t$LD" 1>&6
- else
- echo "$ac_t"no 1>&6
- fi
-
- if test -z "$LD"; then
- echo "$progname: error: no acceptable ld found in \$PATH" 1>&2
- exit 1
- fi
-fi
-
-# Check to see if it really is or is not GNU ld.
-echo $ac_n "checking if the linker ($LD) is GNU ld... $ac_c" 1>&6
-# I'd rather use --version here, but apparently some GNU ld's only accept -v.
-if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
- with_gnu_ld=yes
-else
- with_gnu_ld=no
-fi
-echo "$ac_t$with_gnu_ld" 1>&6
-
-# See if the linker supports building shared libraries.
-echo $ac_n "checking whether the linker ($LD) supports shared libraries... $ac_c" 1>&6
-
-allow_undefined_flag=
-no_undefined_flag=
-need_lib_prefix=unknown
-need_version=unknown
-# when you set need_version to no, make sure it does not cause -set_version
-# flags to be left without arguments
-archive_cmds=
-archive_expsym_cmds=
-old_archive_from_new_cmds=
-export_dynamic_flag_spec=
-whole_archive_flag_spec=
-thread_safe_flag_spec=
-hardcode_libdir_flag_spec=
-hardcode_libdir_separator=
-hardcode_direct=no
-hardcode_minus_L=no
-hardcode_shlibpath_var=unsupported
-runpath_var=
-always_export_symbols=no
-export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols'
-# include_expsyms should be a list of space-separated symbols to be *always*
-# included in the symbol list
-include_expsyms=
-# exclude_expsyms can be an egrep regular expression of symbols to exclude
-# it will be wrapped by ` (' and `)$', so one must not match beginning or
-# end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
-# as well as any symbol that contains `d'.
-exclude_expsyms="_GLOBAL_OFFSET_TABLE_"
-# Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
-# platforms (ab)use it in PIC code, but their linkers get confused if
-# the symbol is explicitly referenced. Since portable code cannot
-# rely on this symbol name, it's probably fine to never include it in
-# preloaded symbol tables.
-
-case "$host_os" in
-cygwin* | mingw*)
- # FIXME: the MSVC++ port hasn't been tested in a loooong time
- # When not using gcc, we currently assume that we are using
- # Microsoft Visual C++.
- if test "$with_gcc" != yes; then
- with_gnu_ld=no
- fi
- ;;
-
-esac
-
-ld_shlibs=yes
-if test "$with_gnu_ld" = yes; then
- # If archive_cmds runs LD, not CC, wlarc should be empty
- wlarc='${wl}'
-
- # See if GNU ld supports shared libraries.
- case "$host_os" in
- aix3* | aix4*)
- # On AIX, the GNU linker is very broken
- ld_shlibs=no
- cat <<EOF 1>&2
-
-*** Warning: the GNU linker, at least up to release 2.9.1, is reported
-*** to be unable to reliably create shared libraries on AIX.
-*** Therefore, libtool is disabling shared libraries support. If you
-*** really care for shared libraries, you may want to modify your PATH
-*** so that a non-GNU linker is found, and then restart.
-
-EOF
- ;;
-
- amigaos*)
- archive_cmds='$rm $objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data~$AR cru $lib $libobjs~$RANLIB $lib~(cd $objdir && a2ixlibrary -32)'
- hardcode_libdir_flag_spec='-L$libdir'
- hardcode_minus_L=yes
-
- # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
- # that the semantics of dynamic libraries on AmigaOS, at least up
- # to version 4, is to share data among multiple programs linked
- # with the same dynamic library. Since this doesn't match the
- # behavior of shared libraries on other platforms, we can use
- # them.
- ld_shlibs=no
- ;;
-
- beos*)
- if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
- allow_undefined_flag=unsupported
- # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
- # support --undefined. This deserves some investigation. FIXME
- archive_cmds='$CC -nostart $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib'
- else
- ld_shlibs=no
- fi
- ;;
-
- cygwin* | mingw*)
- # hardcode_libdir_flag_spec is actually meaningless, as there is
- # no search path for DLLs.
- hardcode_libdir_flag_spec='-L$libdir'
- allow_undefined_flag=unsupported
- always_export_symbols=yes
-
- # Extract the symbol export list from an `--export-all' def file,
- # then regenerate the def file from the symbol export list, so that
- # the compiled dll only exports the symbol export list.
- # Be careful not to strip the DATA tag left by newer dlltools.
- export_symbols_cmds='test -f $objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $0 > $objdir/$soname-ltdll.c~
- test -f $objdir/$soname-ltdll.$objext || (cd $objdir && $CC -c $soname-ltdll.c)~
- $DLLTOOL --export-all --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --output-def $objdir/$soname-def $objdir/$soname-ltdll.$objext $libobjs $convenience~
- sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]*//" -e "s/ *;.*$//" < $objdir/$soname-def > $export_symbols'
-
- # If DATA tags from a recent dlltool are present, honour them!
- archive_expsym_cmds='echo EXPORTS > $objdir/$soname-def~
- _lt_hint=1;
- cat $export_symbols | while read symbol; do
- set dummy \$symbol;
- case \$# in
- 2) echo " \$2 @ \$_lt_hint ; " >> $objdir/$soname-def;;
- *) echo " \$2 @ \$_lt_hint \$3 ; " >> $objdir/$soname-def;;
- esac;
- _lt_hint=`expr 1 + \$_lt_hint`;
- done~
- test -f $objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $0 > $objdir/$soname-ltdll.c~
- test -f $objdir/$soname-ltdll.$objext || (cd $objdir && $CC -c $soname-ltdll.c)~
- $CC -Wl,--base-file,$objdir/$soname-base -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts~
- $DLLTOOL --as=$AS --dllname $soname --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --def $objdir/$soname-def --base-file $objdir/$soname-base --output-exp $objdir/$soname-exp~
- $CC -Wl,--base-file,$objdir/$soname-base $objdir/$soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts~
- $DLLTOOL --as=$AS --dllname $soname --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --def $objdir/$soname-def --base-file $objdir/$soname-base --output-exp $objdir/$soname-exp~
- $CC $objdir/$soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts'
-
- old_archive_from_new_cmds='$DLLTOOL --as=$AS --dllname $soname --def $objdir/$soname-def --output-lib $objdir/$libname.a'
- ;;
-
- netbsd*)
- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
- archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib'
- archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- else
- archive_cmds='$LD -Bshareable $libobjs $deplibs $linkopts -o $lib'
- # can we support soname and/or expsyms with a.out? -oliva
- fi
- ;;
-
- solaris* | sysv5*)
- if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then
- ld_shlibs=no
- cat <<EOF 1>&2
-
-*** Warning: The releases 2.8.* of the GNU linker cannot reliably
-*** create shared libraries on Solaris systems. Therefore, libtool
-*** is disabling shared libraries support. We urge you to upgrade GNU
-*** binutils to release 2.9.1 or newer. Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-EOF
- elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
- archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib'
- archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- else
- ld_shlibs=no
- fi
- ;;
-
- sunos4*)
- archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linkopts'
- wlarc=
- hardcode_direct=yes
- hardcode_shlibpath_var=no
- ;;
-
- *)
- if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
- archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib'
- archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- else
- ld_shlibs=no
- fi
- ;;
- esac
-
- if test "$ld_shlibs" = yes; then
- runpath_var=LD_RUN_PATH
- hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir'
- export_dynamic_flag_spec='${wl}--export-dynamic'
- case $host_os in
- cygwin* | mingw*)
- # dlltool doesn't understand --whole-archive et. al.
- whole_archive_flag_spec=
- ;;
- *)
- # ancient GNU ld didn't support --whole-archive et. al.
- if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then
- whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
- else
- whole_archive_flag_spec=
- fi
- ;;
- esac
- fi
-else
- # PORTME fill in a description of your system's linker (not GNU ld)
- case "$host_os" in
- aix3*)
- allow_undefined_flag=unsupported
- always_export_symbols=yes
- archive_expsym_cmds='$LD -o $objdir/$soname $libobjs $deplibs $linkopts -bE:$export_symbols -T512 -H512 -bM:SRE~$AR cru $lib $objdir/$soname'
- # Note: this linker hardcodes the directories in LIBPATH if there
- # are no directories specified by -L.
- hardcode_minus_L=yes
- if test "$with_gcc" = yes && test -z "$link_static_flag"; then
- # Neither direct hardcoding nor static linking is supported with a
- # broken collect2.
- hardcode_direct=unsupported
- fi
- ;;
-
- aix4*)
- hardcode_libdir_flag_spec='${wl}-b ${wl}nolibpath ${wl}-b ${wl}libpath:$libdir:/usr/lib:/lib'
- hardcode_libdir_separator=':'
- if test "$with_gcc" = yes; then
- collect2name=`${CC} -print-prog-name=collect2`
- if test -f "$collect2name" && \
- strings "$collect2name" | grep resolve_lib_name >/dev/null
- then
- # We have reworked collect2
- hardcode_direct=yes
- else
- # We have old collect2
- hardcode_direct=unsupported
- # It fails to find uninstalled libraries when the uninstalled
- # path is not listed in the libpath. Setting hardcode_minus_L
- # to unsupported forces relinking
- hardcode_minus_L=yes
- hardcode_libdir_flag_spec='-L$libdir'
- hardcode_libdir_separator=
- fi
- shared_flag='-shared'
- else
- shared_flag='${wl}-bM:SRE'
- hardcode_direct=yes
- fi
- allow_undefined_flag=' ${wl}-berok'
- archive_cmds="\$CC $shared_flag"' -o $objdir/$soname $libobjs $deplibs $linkopts ${wl}-bexpall ${wl}-bnoentry${allow_undefined_flag}'
- archive_expsym_cmds="\$CC $shared_flag"' -o $objdir/$soname $libobjs $deplibs $linkopts ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}'
- #### local change for Sleepycat DB:
- # On AIX 4.3.2 (at least), -bexpall exports too much,
- # causing symbol conflicts. This was:
- # case "$host_os" in aix4.[01]|aix4.[01].*)
- case "$host_os" in aix4.*)
- # According to Greg Wooledge, -bexpall is only supported from AIX 4.2 on
- always_export_symbols=yes ;;
- esac
- ;;
-
- amigaos*)
- archive_cmds='$rm $objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data~$AR cru $lib $libobjs~$RANLIB $lib~(cd $objdir && a2ixlibrary -32)'
- hardcode_libdir_flag_spec='-L$libdir'
- hardcode_minus_L=yes
- # see comment about different semantics on the GNU ld section
- ld_shlibs=no
- ;;
-
- cygwin* | mingw*)
- # When not using gcc, we currently assume that we are using
- # Microsoft Visual C++.
- # hardcode_libdir_flag_spec is actually meaningless, as there is
- # no search path for DLLs.
- hardcode_libdir_flag_spec=' '
- allow_undefined_flag=unsupported
- # Tell ltmain to make .lib files, not .a files.
- libext=lib
- # FIXME: Setting linknames here is a bad hack.
- archive_cmds='$CC -o $lib $libobjs $linkopts `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames='
- # The linker will automatically build a .lib file if we build a DLL.
- old_archive_from_new_cmds='true'
- # FIXME: Should let the user specify the lib program.
- old_archive_cmds='lib /OUT:$oldlib$oldobjs'
- fix_srcfile_path='`cygpath -w $srcfile`'
- ;;
-
- freebsd1*)
- ld_shlibs=no
- ;;
-
- # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
- # support. Future versions do this automatically, but an explicit c++rt0.o
- # does not break anything, and helps significantly (at the cost of a little
- # extra space).
- freebsd2.2*)
- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts /usr/lib/c++rt0.o'
- hardcode_libdir_flag_spec='-R$libdir'
- hardcode_direct=yes
- hardcode_shlibpath_var=no
- ;;
-
- # Unfortunately, older versions of FreeBSD 2 do not have this feature.
- freebsd2*)
- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts'
- hardcode_direct=yes
- hardcode_minus_L=yes
- hardcode_shlibpath_var=no
- ;;
-
- # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
- freebsd*)
- archive_cmds='$CC -shared -o $lib $libobjs $deplibs $linkopts'
- hardcode_libdir_flag_spec='-R$libdir'
- hardcode_direct=yes
- hardcode_shlibpath_var=no
- ;;
-
- hpux9* | hpux10* | hpux11*)
- case "$host_os" in
- hpux9*) archive_cmds='$rm $objdir/$soname~$LD -b +b $install_libdir -o $objdir/$soname $libobjs $deplibs $linkopts~test $objdir/$soname = $lib || mv $objdir/$soname $lib' ;;
- *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linkopts' ;;
- esac
- hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
- hardcode_libdir_separator=:
- hardcode_direct=yes
- hardcode_minus_L=yes # Not in the search PATH, but as the default
- # location of the library.
- export_dynamic_flag_spec='${wl}-E'
- ;;
-
- irix5* | irix6*)
- if test "$with_gcc" = yes; then
- archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
- else
- archive_cmds='$LD -shared $libobjs $deplibs $linkopts -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
- fi
- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
- hardcode_libdir_separator=:
- ;;
-
- netbsd*)
- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts' # a.out
- else
- archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linkopts' # ELF
- fi
- hardcode_libdir_flag_spec='${wl}-R$libdir'
- hardcode_direct=yes
- hardcode_shlibpath_var=no
- ;;
-
- openbsd*)
- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts'
- hardcode_libdir_flag_spec='-R$libdir'
- hardcode_direct=yes
- hardcode_shlibpath_var=no
- ;;
-
- os2*)
- hardcode_libdir_flag_spec='-L$libdir'
- hardcode_minus_L=yes
- allow_undefined_flag=unsupported
- archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $objdir/$libname.def~$echo DATA >> $objdir/$libname.def~$echo " SINGLE NONSHARED" >> $objdir/$libname.def~$echo EXPORTS >> $objdir/$libname.def~emxexp $libobjs >> $objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $linkopts $objdir/$libname.def'
- old_archive_from_new_cmds='emximp -o $objdir/$libname.a $objdir/$libname.def'
- ;;
-
- osf3*)
- if test "$with_gcc" = yes; then
- allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $linkopts ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
- else
- allow_undefined_flag=' -expect_unresolved \*'
- archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linkopts -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
- fi
- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
- hardcode_libdir_separator=:
- ;;
-
- osf4* | osf5*) # As osf3* with the addition of the -msym flag
- if test "$with_gcc" = yes; then
- allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $linkopts ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
- else
- allow_undefined_flag=' -expect_unresolved \*'
- archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linkopts -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
- fi
- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
- hardcode_libdir_separator=:
- ;;
- rhapsody*)
- archive_cmds='$CC -bundle -undefined suppress -o $lib $libobjs $deplibs $linkopts'
- hardcode_libdir_flags_spec='-L$libdir'
- hardcode_direct=yes
- hardcode_shlibpath_var=no
- ;;
-
- sco3.2v5*)
- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
- hardcode_shlibpath_var=no
- runpath_var=LD_RUN_PATH
- hardcode_runpath_var=yes
- ;;
-
- solaris*)
- no_undefined_flag=' -z text'
- # $CC -shared without GNU ld will not create a library from C++
- # object files and a static libstdc++, better avoid it by now
- archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linkopts'
- archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linkopts~$rm $lib.exp'
- hardcode_libdir_flag_spec='-R$libdir'
- hardcode_shlibpath_var=no
- case "$host_os" in
- solaris2.[0-5] | solaris2.[0-5].*) ;;
- *) # Supported since Solaris 2.6 (maybe 2.5.1?)
- whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;;
- esac
- ;;
-
- sunos4*)
- archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linkopts'
- hardcode_libdir_flag_spec='-L$libdir'
- hardcode_direct=yes
- hardcode_minus_L=yes
- hardcode_shlibpath_var=no
- ;;
-
- sysv4)
- if test "x$host_vendor" = xsequent; then
- # Use $CC to link under sequent, because it throws in some extra .o
- # files that make .init and .fini sections work.
- archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $linkopts'
- else
- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
- fi
- runpath_var='LD_RUN_PATH'
- hardcode_shlibpath_var=no
- hardcode_direct=no #Motorola manual says yes, but my tests say they lie
- ;;
-
- sysv4.3*)
- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
- hardcode_shlibpath_var=no
- export_dynamic_flag_spec='-Bexport'
- ;;
-
- sysv5*)
- no_undefined_flag=' -z text'
- # $CC -shared without GNU ld will not create a library from C++
- # object files and a static libstdc++, better avoid it by now
- archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linkopts'
- archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linkopts~$rm $lib.exp'
- hardcode_libdir_flag_spec=
- hardcode_shlibpath_var=no
- runpath_var='LD_RUN_PATH'
- ;;
-
- uts4*)
- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
- hardcode_libdir_flag_spec='-L$libdir'
- hardcode_shlibpath_var=no
- ;;
-
- dgux*)
- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
- hardcode_libdir_flag_spec='-L$libdir'
- hardcode_shlibpath_var=no
- ;;
-
- sysv4*MP*)
- if test -d /usr/nec; then
- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
- hardcode_shlibpath_var=no
- runpath_var=LD_RUN_PATH
- hardcode_runpath_var=yes
- ld_shlibs=yes
- fi
- ;;
-
- sysv4.2uw2*)
- archive_cmds='$LD -G -o $lib $libobjs $deplibs $linkopts'
- hardcode_direct=yes
- hardcode_minus_L=no
- hardcode_shlibpath_var=no
- hardcode_runpath_var=yes
- runpath_var=LD_RUN_PATH
- ;;
-
- unixware7*)
- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
- runpath_var='LD_RUN_PATH'
- hardcode_shlibpath_var=no
- ;;
-
- *)
- ld_shlibs=no
- ;;
- esac
-fi
-echo "$ac_t$ld_shlibs" 1>&6
-test "$ld_shlibs" = no && can_build_shared=no
-
-if test -z "$NM"; then
- echo $ac_n "checking for BSD-compatible nm... $ac_c" 1>&6
- case "$NM" in
- [\\/]* | [A-Za-z]:[\\/]*) ;; # Let the user override the test with a path.
- *)
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
- for ac_dir in $PATH /usr/ucb /usr/ccs/bin /bin; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/nm || test -f $ac_dir/nm$ac_exeext; then
- # Check to see if the nm accepts a BSD-compat flag.
- # Adding the `sed 1q' prevents false positives on HP-UX, which says:
- # nm: unknown option "B" ignored
- if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
- NM="$ac_dir/nm -B"
- break
- elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
- NM="$ac_dir/nm -p"
- break
- else
- NM=${NM="$ac_dir/nm"} # keep the first match, but
- continue # so that we can try to find one that supports BSD flags
- fi
- fi
- done
- IFS="$ac_save_ifs"
- test -z "$NM" && NM=nm
- ;;
- esac
- echo "$ac_t$NM" 1>&6
-fi
-
-# Check for command to grab the raw symbol name followed by C symbol from nm.
-echo $ac_n "checking command to parse $NM output... $ac_c" 1>&6
-
-# These are sane defaults that work on at least a few old systems.
-# [They come from Ultrix. What could be older than Ultrix?!! ;)]
-
-# Character class describing NM global symbol codes.
-symcode='[BCDEGRST]'
-
-# Regexp to match symbols that can be accessed directly from C.
-sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
-
-# Transform the above into a raw symbol and a C symbol.
-symxfrm='\1 \2\3 \3'
-
-# Transform an extracted symbol line into a proper C declaration
-global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'"
-
-# Define system-specific variables.
-case "$host_os" in
-aix*)
- symcode='[BCDT]'
- ;;
-cygwin* | mingw*)
- symcode='[ABCDGISTW]'
- ;;
-hpux*) # Its linker distinguishes data from code symbols
- global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^. .* \(.*\)$/extern char \1;/p'"
- ;;
-irix*)
- symcode='[BCDEGRST]'
- ;;
-solaris*)
- symcode='[BDT]'
- ;;
-sysv4)
- symcode='[DFNSTU]'
- ;;
-esac
-
-# If we're using GNU nm, then use its standard symbol codes.
-if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then
- symcode='[ABCDGISTW]'
-fi
-
-# Try without a prefix undercore, then with it.
-for ac_symprfx in "" "_"; do
-
- # Write the raw and C identifiers.
- global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode\)[ ][ ]*\($ac_symprfx\)$sympat$/$symxfrm/p'"
-
- # Check to see that the pipe works correctly.
- pipe_works=no
- $rm conftest*
- cat > conftest.c <<EOF
-#ifdef __cplusplus
-extern "C" {
-#endif
-char nm_test_var;
-void nm_test_func(){}
-#ifdef __cplusplus
-}
-#endif
-main(){nm_test_var='a';nm_test_func();return(0);}
-EOF
-
- echo "$progname:1653: checking if global_symbol_pipe works" >&5
- if { (eval echo $progname:1654: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; } && test -s conftest.$objext; then
- # Now try to grab the symbols.
- nlist=conftest.nm
- if { echo "$progname:1657: eval \"$NM conftest.$objext | $global_symbol_pipe > $nlist\"" >&5; eval "$NM conftest.$objext | $global_symbol_pipe > $nlist 2>&5"; } && test -s "$nlist"; then
-
- # Try sorting and uniquifying the output.
- if sort "$nlist" | uniq > "$nlist"T; then
- mv -f "$nlist"T "$nlist"
- else
- rm -f "$nlist"T
- fi
-
- # Make sure that we snagged all the symbols we need.
- if egrep ' nm_test_var$' "$nlist" >/dev/null; then
- if egrep ' nm_test_func$' "$nlist" >/dev/null; then
- cat <<EOF > conftest.c
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-EOF
- # Now generate the symbol file.
- eval "$global_symbol_to_cdecl"' < "$nlist" >> conftest.c'
-
- cat <<EOF >> conftest.c
-#if defined (__STDC__) && __STDC__
-# define lt_ptr_t void *
-#else
-# define lt_ptr_t char *
-# define const
-#endif
-
-/* The mapping between symbol names and symbols. */
-const struct {
- const char *name;
- lt_ptr_t address;
-}
-lt_preloaded_symbols[] =
-{
-EOF
- sed 's/^. \(.*\) \(.*\)$/ {"\2", (lt_ptr_t) \&\2},/' < "$nlist" >> conftest.c
- cat <<\EOF >> conftest.c
- {0, (lt_ptr_t) 0}
-};
-
-#ifdef __cplusplus
-}
-#endif
-EOF
- # Now try linking the two files.
- mv conftest.$objext conftstm.$objext
- save_LIBS="$LIBS"
- save_CFLAGS="$CFLAGS"
- LIBS="conftstm.$objext"
- CFLAGS="$CFLAGS$no_builtin_flag"
- if { (eval echo $progname:1709: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
- pipe_works=yes
- else
- echo "$progname: failed program was:" >&5
- cat conftest.c >&5
- fi
- LIBS="$save_LIBS"
- else
- echo "cannot find nm_test_func in $nlist" >&5
- fi
- else
- echo "cannot find nm_test_var in $nlist" >&5
- fi
- else
- echo "cannot run $global_symbol_pipe" >&5
- fi
- else
- echo "$progname: failed program was:" >&5
- cat conftest.c >&5
- fi
- $rm conftest* conftst*
-
- # Do not use the global_symbol_pipe unless it works.
- if test "$pipe_works" = yes; then
- break
- else
- global_symbol_pipe=
- fi
-done
-if test "$pipe_works" = yes; then
- echo "${ac_t}ok" 1>&6
-else
- echo "${ac_t}failed" 1>&6
-fi
-
-if test -z "$global_symbol_pipe"; then
- global_symbol_to_cdecl=
-fi
-
-# Check hardcoding attributes.
-echo $ac_n "checking how to hardcode library paths into programs... $ac_c" 1>&6
-hardcode_action=
-if test -n "$hardcode_libdir_flag_spec" || \
- test -n "$runpath_var"; then
-
- # We can hardcode non-existant directories.
- if test "$hardcode_direct" != no &&
- # If the only mechanism to avoid hardcoding is shlibpath_var, we
- # have to relink, otherwise we might link with an installed library
- # when we should be linking with a yet-to-be-installed one
- ## test "$hardcode_shlibpath_var" != no &&
- test "$hardcode_minus_L" != no; then
- # Linking always hardcodes the temporary library directory.
- hardcode_action=relink
- else
- # We can link without hardcoding, and we can hardcode nonexisting dirs.
- hardcode_action=immediate
- fi
-else
- # We cannot hardcode anything, or else we can only hardcode existing
- # directories.
- hardcode_action=unsupported
-fi
-echo "$ac_t$hardcode_action" 1>&6
-
-
-reload_flag=
-reload_cmds='$LD$reload_flag -o $output$reload_objs'
-echo $ac_n "checking for $LD option to reload object files... $ac_c" 1>&6
-# PORTME Some linkers may need a different reload flag.
-reload_flag='-r'
-echo "$ac_t$reload_flag" 1>&6
-test -n "$reload_flag" && reload_flag=" $reload_flag"
-
-# PORTME Fill in your ld.so characteristics
-library_names_spec=
-libname_spec='lib$name'
-soname_spec=
-postinstall_cmds=
-postuninstall_cmds=
-finish_cmds=
-finish_eval=
-shlibpath_var=
-shlibpath_overrides_runpath=unknown
-version_type=none
-dynamic_linker="$host_os ld.so"
-sys_lib_dlsearch_path_spec="/lib /usr/lib"
-sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-file_magic_cmd=
-file_magic_test_file=
-deplibs_check_method='unknown'
-# Need to set the preceding variable on all platforms that support
-# interlibrary dependencies.
-# 'none' -- dependencies not supported.
-# `unknown' -- same as none, but documents that we really don't know.
-# 'pass_all' -- all dependencies passed with no checks.
-# 'test_compile' -- check by making test program.
-# 'file_magic [regex]' -- check by looking for files in library path
-# which responds to the $file_magic_cmd with a given egrep regex.
-# If you have `file' or equivalent on your system and you're not sure
-# whether `pass_all' will *always* work, you probably want this one.
-echo $ac_n "checking dynamic linker characteristics... $ac_c" 1>&6
-case "$host_os" in
-aix3*)
- version_type=linux
- library_names_spec='${libname}${release}.so$versuffix $libname.a'
- shlibpath_var=LIBPATH
-
- # AIX has no versioning support, so we append a major version to the name.
- soname_spec='${libname}${release}.so$major'
- ;;
-
-aix4*)
- version_type=linux
- # AIX has no versioning support, so currently we can not hardcode correct
- # soname into executable. Probably we can add versioning support to
- # collect2, so additional links can be useful in future.
- # We preserve .a as extension for shared libraries though AIX4.2
- # and later linker supports .so
- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.a'
- shlibpath_var=LIBPATH
- deplibs_check_method=pass_all
- ;;
-
-amigaos*)
- library_names_spec='$libname.ixlibrary $libname.a'
- # Create ${libname}_ixlibrary.a entries in /sys/libs.
- finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done'
- ;;
-
-beos*)
- library_names_spec='${libname}.so'
- dynamic_linker="$host_os ld.so"
- shlibpath_var=LIBRARY_PATH
- deplibs_check_method=pass_all
- lt_cv_dlopen="load_add_on"
- lt_cv_dlopen_libs=
- lt_cv_dlopen_self=yes
- ;;
-
-bsdi4*)
- version_type=linux
- need_version=no
- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
- soname_spec='${libname}${release}.so$major'
- finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
- shlibpath_var=LD_LIBRARY_PATH
- deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
- file_magic_cmd=/usr/bin/file
- file_magic_test_file=/shlib/libc.so
- sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
- sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
- export_dynamic_flag_spec=-rdynamic
- # the default ld.so.conf also contains /usr/contrib/lib and
- # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
- # libtool to hard-code these into programs
- ;;
-
-cygwin* | mingw*)
- version_type=windows
- need_version=no
- need_lib_prefix=no
- if test "$with_gcc" = yes; then
- library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.a'
- else
- library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.lib'
- fi
- dynamic_linker='Win32 ld.exe'
- deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
- file_magic_cmd='${OBJDUMP} -f'
- # FIXME: first we should search . and the directory the executable is in
- shlibpath_var=PATH
- lt_cv_dlopen="LoadLibrary"
- lt_cv_dlopen_libs=
- ;;
-
-freebsd1*)
- dynamic_linker=no
- ;;
-
-freebsd*)
- objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
- version_type=freebsd-$objformat
- case "$version_type" in
- freebsd-elf*)
- deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object'
- file_magic_cmd=/usr/bin/file
- file_magic_test_file=`echo /usr/lib/libc.so*`
- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so'
- need_version=no
- need_lib_prefix=no
- ;;
- freebsd-*)
- deplibs_check_method=unknown
- library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix'
- need_version=yes
- ;;
- esac
- shlibpath_var=LD_LIBRARY_PATH
- case "$host_os" in
- freebsd2* | freebsd3.[01]* | freebsdelf3.[01]*)
- shlibpath_overrides_runpath=yes
- ;;
- *) # from 3.2 on
- shlibpath_overrides_runpath=no
- ;;
- esac
- ;;
-
-gnu*)
- version_type=linux
- need_lib_prefix=no
- need_version=no
- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so'
- soname_spec='${libname}${release}.so$major'
- shlibpath_var=LD_LIBRARY_PATH
- ;;
-
-hpux9* | hpux10* | hpux11*)
- # Give a soname corresponding to the major version so that dld.sl refuses to
- # link against other versions.
- dynamic_linker="$host_os dld.sl"
- version_type=sunos
- need_lib_prefix=no
- need_version=no
- shlibpath_var=SHLIB_PATH
- shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
- library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl'
- soname_spec='${libname}${release}.sl$major'
- # HP-UX runs *really* slowly unless shared libraries are mode 555.
- postinstall_cmds='chmod 555 $lib'
-
- #### local change for Sleepycat DB: [#1990]
- # The following 3 lines added, otherwise dependent libraries are not allowed
- # on HP. We use dependent libraries in a very straightforward way, to
- # incorporate -lnsl into libtcl.sl, and for testing only.
- deplibs_check_method='file_magic PA-RISC[1-9][0-9.]* shared library'
- file_magic_cmd=/usr/bin/file
- file_magic_test_file=`echo /lib/libc.sl*`
- ;;
-
-irix5* | irix6*)
- version_type=irix
- need_lib_prefix=no
- need_version=no
- soname_spec='${libname}${release}.so.$major'
- library_names_spec='${libname}${release}.so.$versuffix ${libname}${release}.so.$major ${libname}${release}.so $libname.so'
- case "$host_os" in
- irix5*)
- libsuff= shlibsuff=
- # this will be overridden with pass_all, but let us keep it just in case
- deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1"
- ;;
- *)
- case "$LD" in # libtool.m4 will add one of these switches to LD
- *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;;
- *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;;
- *-64|*"-64 ") libsuff=64 shlibsuff=64 libmagic=64-bit;;
- *) libsuff= shlibsuff= libmagic=never-match;;
- esac
- ;;
- esac
- shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
- shlibpath_overrides_runpath=no
- sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
- sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
- file_magic_cmd=/usr/bin/file
- file_magic_test_file=`echo /lib${libsuff}/libc.so*`
- deplibs_check_method='pass_all'
- ;;
-
-# No shared lib support for Linux oldld, aout, or coff.
-linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*)
- dynamic_linker=no
- ;;
-
-# This must be Linux ELF.
-linux-gnu*)
- version_type=linux
- need_lib_prefix=no
- need_version=no
- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
- soname_spec='${libname}${release}.so$major'
- finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=no
- deplibs_check_method=pass_all
-
- if test -f /lib/ld.so.1; then
- dynamic_linker='GNU ld.so'
- else
- # Only the GNU ld.so supports shared libraries on MkLinux.
- case "$host_cpu" in
- powerpc*) dynamic_linker=no ;;
- *) dynamic_linker='Linux ld.so' ;;
- esac
- fi
- ;;
-
-netbsd*)
- version_type=sunos
- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
- library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
- dynamic_linker='NetBSD (a.out) ld.so'
- else
- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so'
- soname_spec='${libname}${release}.so$major'
- dynamic_linker='NetBSD ld.elf_so'
- fi
- shlibpath_var=LD_LIBRARY_PATH
- ;;
-
-openbsd*)
- version_type=sunos
- if test "$with_gnu_ld" = yes; then
- need_lib_prefix=no
- need_version=no
- fi
- library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
- shlibpath_var=LD_LIBRARY_PATH
- ;;
-
-os2*)
- libname_spec='$name'
- need_lib_prefix=no
- library_names_spec='$libname.dll $libname.a'
- dynamic_linker='OS/2 ld.exe'
- shlibpath_var=LIBPATH
- ;;
-
-osf3* | osf4* | osf5*)
- version_type=osf
- need_version=no
- soname_spec='${libname}${release}.so'
- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so'
- shlibpath_var=LD_LIBRARY_PATH
- # this will be overridden with pass_all, but let us keep it just in case
- deplibs_check_method='file_magic COFF format alpha shared library'
- file_magic_cmd=/usr/bin/file
- file_magic_test_file=/shlib/libc.so
- deplibs_check_method='pass_all'
- sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
- sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
- ;;
-
-rhapsody*)
- version_type=sunos
- library_names_spec='${libname}.so'
- soname_spec='${libname}.so'
- shlibpath_var=DYLD_LIBRARY_PATH
- deplibs_check_method=pass_all
- ;;
-
-sco3.2v5*)
- version_type=osf
- soname_spec='${libname}${release}.so$major'
- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
- shlibpath_var=LD_LIBRARY_PATH
- #### local change for Sleepycat DB:
- # The following line added, otherwise dependent libraries are not allowed
- # on SCO. We use dependent libraries in a very straightforward way.
- deplibs_check_method='pass_all'
- ;;
-
-solaris*)
- version_type=linux
- need_lib_prefix=no
- need_version=no
- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
- soname_spec='${libname}${release}.so$major'
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=yes
- # ldd complains unless libraries are executable
- postinstall_cmds='chmod +x $lib'
- deplibs_check_method="file_magic ELF [0-9][0-9]-bit [LM]SB dynamic lib"
- file_magic_cmd=/usr/bin/file
- file_magic_test_file=/lib/libc.so
- ;;
-
-sunos4*)
- version_type=sunos
- library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
- finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=yes
- if test "$with_gnu_ld" = yes; then
- need_lib_prefix=no
- fi
- need_version=yes
- ;;
-
-sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
- version_type=linux
- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
- soname_spec='${libname}${release}.so$major'
- shlibpath_var=LD_LIBRARY_PATH
- case "$host_vendor" in
- sequent)
- file_magic_cmd='/bin/file'
- deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
- ;;
- ncr)
- deplibs_check_method='pass_all'
- ;;
- motorola)
- need_lib_prefix=no
- need_version=no
- shlibpath_overrides_runpath=no
- sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
- deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
- file_magic_cmd=/usr/bin/file
- file_magic_test_file=`echo /usr/lib/libc.so*`
- ;;
- esac
- ;;
-
-uts4*)
- version_type=linux
- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
- soname_spec='${libname}${release}.so$major'
- shlibpath_var=LD_LIBRARY_PATH
- ;;
-
-dgux*)
- version_type=linux
- need_lib_prefix=no
- need_version=no
- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
- soname_spec='${libname}${release}.so$major'
- shlibpath_var=LD_LIBRARY_PATH
- ;;
-
-sysv4*MP*)
- if test -d /usr/nec ;then
- version_type=linux
- library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so'
- soname_spec='$libname.so.$major'
- shlibpath_var=LD_LIBRARY_PATH
- fi
- ;;
-
-#### local change for Sleepycat DB:
-# Add in the QNX support from QNX.
-nto-qnx)
- version_type=linux
- need_lib_prefix=no
- need_version=no
- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
- soname_spec='${libname}${release}.so$major'
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=yes
- deplibs_check_method='pass_all'
- ;;
-
-*)
- dynamic_linker=no
- ;;
-esac
-echo "$ac_t$dynamic_linker" 1>&6
-test "$dynamic_linker" = no && can_build_shared=no
-
-# Report the final consequences.
-echo "checking if libtool supports shared libraries... $can_build_shared" 1>&6
-
-# Only try to build win32 dlls if AC_LIBTOOL_WIN32_DLL was used in
-# configure.in, otherwise build static only libraries.
-case "$host_os" in
-cygwin* | mingw* | os2*)
- if test x$can_build_shared = xyes; then
- test x$enable_win32_dll = xno && can_build_shared=no
- echo "checking if package supports dlls... $can_build_shared" 1>&6
- fi
-;;
-esac
-
-if test -n "$file_magic_test_file" && test -n "$file_magic_cmd"; then
- case "$deplibs_check_method" in
- "file_magic "*)
- file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
- if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
- egrep "$file_magic_regex" > /dev/null; then
- :
- else
- cat <<EOF 1>&2
-
-*** Warning: the command libtool uses to detect shared libraries,
-*** $file_magic_cmd, produces output that libtool cannot recognize.
-*** The result is that libtool may fail to recognize shared libraries
-*** as such. This will affect the creation of libtool libraries that
-*** depend on shared libraries, but programs linked with such libtool
-*** libraries will work regardless of this problem. Nevertheless, you
-*** may want to report the problem to your system manager and/or to
-*** bug-libtool@gnu.org
-
-EOF
- fi ;;
- esac
-fi
-
-echo $ac_n "checking whether to build shared libraries... $ac_c" 1>&6
-test "$can_build_shared" = "no" && enable_shared=no
-
-# On AIX, shared libraries and static libraries use the same namespace, and
-# are all built from PIC.
-case "$host_os" in
-aix3*)
- test "$enable_shared" = yes && enable_static=no
- if test -n "$RANLIB"; then
- archive_cmds="$archive_cmds~\$RANLIB \$lib"
- postinstall_cmds='$RANLIB $lib'
- fi
- ;;
-
-aix4*)
- test "$enable_shared" = yes && enable_static=no
- ;;
-esac
-
-echo "$ac_t$enable_shared" 1>&6
-
-# Make sure either enable_shared or enable_static is yes.
-test "$enable_shared" = yes || enable_static=yes
-
-echo "checking whether to build static libraries... $enable_static" 1>&6
-
-if test "$hardcode_action" = relink; then
- # Fast installation is not supported
- enable_fast_install=no
-elif test "$shlibpath_overrides_runpath" = yes ||
- test "$enable_shared" = no; then
- # Fast installation is not necessary
- enable_fast_install=needless
-fi
-
-echo $ac_n "checking for objdir... $ac_c" 1>&6
-rm -f .libs 2>/dev/null
-mkdir .libs 2>/dev/null
-if test -d .libs; then
- objdir=.libs
-else
- # MS-DOS does not allow filenames that begin with a dot.
- objdir=_libs
-fi
-rmdir .libs 2>/dev/null
-echo "$ac_t$objdir" 1>&6
-
-if test "x$enable_dlopen" != xyes; then
- enable_dlopen=unknown
- enable_dlopen_self=unknown
- enable_dlopen_self_static=unknown
-else
-if eval "test \"`echo '$''{'lt_cv_dlopen'+set}'`\" != set"; then
- lt_cv_dlopen=no lt_cv_dlopen_libs=
-echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
-echo "$progname:2248: checking for dlopen in -ldl" >&5
-ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- ac_save_LIBS="$LIBS"
-LIBS="-ldl $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 2256 "ltconfig"
-/* Override any gcc2 internal prototype to avoid an error. */
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen();
-
-int main() {
-dlopen()
-; return 0; }
-EOF
-if { (eval echo $progname:2269: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
-else
- echo "$progname: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
-else
- echo "$ac_t""no" 1>&6
-echo $ac_n "checking for dlopen""... $ac_c" 1>&6
-echo "$progname:2288: checking for dlopen" >&5
-if eval "test \"`echo '$''{'ac_cv_func_dlopen'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.$ac_ext <<EOF
-#line 2293 "ltconfig"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char dlopen(); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined (__stub_dlopen) || defined (__stub___dlopen)
-choke me
-#else
-dlopen();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo $progname:2318: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_dlopen=yes"
-else
- echo "$progname: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_func_dlopen=no"
-fi
-rm -f conftest*
-fi
-if eval "test \"`echo '$ac_cv_func_'dlopen`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- lt_cv_dlopen="dlopen"
-else
- echo "$ac_t""no" 1>&6
-echo $ac_n "checking for dld_link in -ldld""... $ac_c" 1>&6
-echo "$progname:2335: checking for dld_link in -ldld" >&5
-ac_lib_var=`echo dld'_'dld_link | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- ac_save_LIBS="$LIBS"
-LIBS="-ldld $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 2343 "ltconfig"
-/* Override any gcc2 internal prototype to avoid an error. */
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dld_link();
-
-int main() {
-dld_link()
-; return 0; }
-EOF
-if { (eval echo $progname:2356: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
-else
- echo "$progname: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
-else
- echo "$ac_t""no" 1>&6
-echo $ac_n "checking for shl_load""... $ac_c" 1>&6
-echo "$progname:2375: checking for shl_load" >&5
-if eval "test \"`echo '$''{'ac_cv_func_shl_load'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.$ac_ext <<EOF
-#line 2380 "ltconfig"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char shl_load(); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char shl_load();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined (__stub_shl_load) || defined (__stub___shl_load)
-choke me
-#else
-shl_load();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo $progname:2405: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_shl_load=yes"
-else
- echo "$progname: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_func_shl_load=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'shl_load`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- lt_cv_dlopen="shl_load"
-else
- echo "$ac_t""no" 1>&6
-echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6
-echo "$progname:2423: checking for shl_load in -ldld" >&5
-ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- ac_save_LIBS="$LIBS"
-LIBS="-ldld $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 2431 "ltconfig"
-#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error. */
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char shl_load();
-
-int main() {
-shl_load()
-; return 0; }
-EOF
-if { (eval echo $progname:2445: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
-else
- echo "$progname: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"
-else
- echo "$ac_t""no" 1>&6
-fi
-
-
-fi
-
-
-fi
-
-
-fi
-
-
-fi
-
-fi
-
- if test "x$lt_cv_dlopen" != xno; then
- enable_dlopen=yes
- fi
-
- case "$lt_cv_dlopen" in
- dlopen)
-for ac_hdr in dlfcn.h; do
-ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
-echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "$progname:2488: checking for $ac_hdr" >&5
-if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.$ac_ext <<EOF
-#line 2493 "ltconfig"
-#include <$ac_hdr>
-int fnord = 0;
-EOF
-ac_try="$ac_compile >/dev/null 2>conftest.out"
-{ (eval echo $progname:2498: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
- rm -rf conftest*
- eval "ac_cv_header_$ac_safe=yes"
-else
- echo "$ac_err" >&5
- echo "$progname: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_header_$ac_safe=no"
-fi
-rm -f conftest*
-fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
- echo "$ac_t""yes" 1>&6
-else
- echo "$ac_t""no" 1>&6
-fi
-done
-
- if test "x$ac_cv_header_dlfcn_h" = xyes; then
- CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
- fi
- eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
- LIBS="$lt_cv_dlopen_libs $LIBS"
-
- echo $ac_n "checking whether a program can dlopen itself""... $ac_c" 1>&6
-echo "$progname:2526: checking whether a program can dlopen itself" >&5
-if test "${lt_cv_dlopen_self+set}" = set; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- if test "$cross_compiling" = yes; then
- lt_cv_dlopen_self=cross
- else
- cat > conftest.c <<EOF
-#line 2534 "ltconfig"
-
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
-
-#include <stdio.h>
-
-#ifdef RTLD_GLOBAL
-# define LTDL_GLOBAL RTLD_GLOBAL
-#else
-# ifdef DL_GLOBAL
-# define LTDL_GLOBAL DL_GLOBAL
-# else
-# define LTDL_GLOBAL 0
-# endif
-#endif
-
-/* We may have to define LTDL_LAZY_OR_NOW in the command line if we
- find out it does not work in some platform. */
-#ifndef LTDL_LAZY_OR_NOW
-# ifdef RTLD_LAZY
-# define LTDL_LAZY_OR_NOW RTLD_LAZY
-# else
-# ifdef DL_LAZY
-# define LTDL_LAZY_OR_NOW DL_LAZY
-# else
-# ifdef RTLD_NOW
-# define LTDL_LAZY_OR_NOW RTLD_NOW
-# else
-# ifdef DL_NOW
-# define LTDL_LAZY_OR_NOW DL_NOW
-# else
-# define LTDL_LAZY_OR_NOW 0
-# endif
-# endif
-# endif
-# endif
-#endif
-
-fnord() { int i=42;}
-main() { void *self, *ptr1, *ptr2; self=dlopen(0,LTDL_GLOBAL|LTDL_LAZY_OR_NOW);
- if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord");
- if(ptr1 || ptr2) { dlclose(self); exit(0); } } exit(1); }
-
-EOF
-if { (eval echo $progname:2580: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
-then
- lt_cv_dlopen_self=yes
-else
- echo "$progname: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -fr conftest*
- lt_cv_dlopen_self=no
-fi
-rm -fr conftest*
-fi
-
-fi
-
-echo "$ac_t""$lt_cv_dlopen_self" 1>&6
-
- if test "$lt_cv_dlopen_self" = yes; then
- LDFLAGS="$LDFLAGS $link_static_flag"
- echo $ac_n "checking whether a statically linked program can dlopen itself""... $ac_c" 1>&6
-echo "$progname:2599: checking whether a statically linked program can dlopen itself" >&5
-if test "${lt_cv_dlopen_self_static+set}" = set; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- if test "$cross_compiling" = yes; then
- lt_cv_dlopen_self_static=cross
- else
- cat > conftest.c <<EOF
-#line 2607 "ltconfig"
-
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
-
-#include <stdio.h>
-
-#ifdef RTLD_GLOBAL
-# define LTDL_GLOBAL RTLD_GLOBAL
-#else
-# ifdef DL_GLOBAL
-# define LTDL_GLOBAL DL_GLOBAL
-# else
-# define LTDL_GLOBAL 0
-# endif
-#endif
-
-/* We may have to define LTDL_LAZY_OR_NOW in the command line if we
- find out it does not work in some platform. */
-#ifndef LTDL_LAZY_OR_NOW
-# ifdef RTLD_LAZY
-# define LTDL_LAZY_OR_NOW RTLD_LAZY
-# else
-# ifdef DL_LAZY
-# define LTDL_LAZY_OR_NOW DL_LAZY
-# else
-# ifdef RTLD_NOW
-# define LTDL_LAZY_OR_NOW RTLD_NOW
-# else
-# ifdef DL_NOW
-# define LTDL_LAZY_OR_NOW DL_NOW
-# else
-# define LTDL_LAZY_OR_NOW 0
-# endif
-# endif
-# endif
-# endif
-#endif
-
-fnord() { int i=42;}
-main() { void *self, *ptr1, *ptr2; self=dlopen(0,LTDL_GLOBAL|LTDL_LAZY_OR_NOW);
- if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord");
- if(ptr1 || ptr2) { dlclose(self); exit(0); } } exit(1); }
-
-EOF
-if { (eval echo $progname:2653: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
-then
- lt_cv_dlopen_self_static=yes
-else
- echo "$progname: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -fr conftest*
- lt_cv_dlopen_self_static=no
-fi
-rm -fr conftest*
-fi
-
-fi
-
-echo "$ac_t""$lt_cv_dlopen_self_static" 1>&6
-fi
- ;;
- esac
-
- case "$lt_cv_dlopen_self" in
- yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
- *) enable_dlopen_self=unknown ;;
- esac
-
- case "$lt_cv_dlopen_self_static" in
- yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
- *) enable_dlopen_self_static=unknown ;;
- esac
-fi
-
-# Copy echo and quote the copy, instead of the original, because it is
-# used later.
-ltecho="$echo"
-if test "X$ltecho" = "X$CONFIG_SHELL $0 --fallback-echo"; then
- ltecho="$CONFIG_SHELL \$0 --fallback-echo"
-fi
-LTSHELL="$SHELL"
-
-LTCONFIG_VERSION="$VERSION"
-
-# Only quote variables if we're using ltmain.sh.
-case "$ltmain" in
-*.sh)
- # Now quote all the things that may contain metacharacters.
- for var in ltecho old_CC old_CFLAGS old_CPPFLAGS \
- old_LD old_LDFLAGS old_LIBS \
- old_NM old_RANLIB old_LN_S old_DLLTOOL old_OBJDUMP old_AS \
- AR CC LD LN_S NM LTSHELL LTCONFIG_VERSION \
- reload_flag reload_cmds wl \
- pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \
- thread_safe_flag_spec whole_archive_flag_spec libname_spec \
- library_names_spec soname_spec \
- RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \
- old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds postuninstall_cmds \
- file_magic_cmd export_symbols_cmds deplibs_check_method allow_undefined_flag no_undefined_flag \
- finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \
- hardcode_libdir_flag_spec hardcode_libdir_separator \
- sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
- compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do
-
- case "$var" in
- reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \
- old_postinstall_cmds | old_postuninstall_cmds | \
- export_symbols_cmds | archive_cmds | archive_expsym_cmds | \
- postinstall_cmds | postuninstall_cmds | \
- finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
- # Double-quote double-evaled strings.
- eval "$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
- ;;
- *)
- eval "$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
- ;;
- esac
- done
-
- case "$ltecho" in
- *'\$0 --fallback-echo"')
- ltecho=`$echo "X$ltecho" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
- ;;
- esac
-
- trap "$rm \"$ofile\"; exit 1" 1 2 15
- echo "creating $ofile"
- $rm "$ofile"
- cat <<EOF > "$ofile"
-#! $SHELL
-
-# `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
-# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
-# NOTE: Changes made to this file will be lost: look at ltconfig or ltmain.sh.
-#
-# Copyright (C) 1996-1999 Free Software Foundation, Inc.
-# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# Sed that helps us avoid accidentally triggering echo(1) options like -n.
-Xsed="sed -e s/^X//"
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
-
-### BEGIN LIBTOOL CONFIG
-EOF
- cfgfile="$ofile"
- ;;
-
-*)
- # Double-quote the variables that need it (for aesthetics).
- for var in old_CC old_CFLAGS old_CPPFLAGS \
- old_LD old_LDFLAGS old_LIBS \
- old_NM old_RANLIB old_LN_S old_DLLTOOL old_OBJDUMP old_AS; do
- eval "$var=\\\"\$var\\\""
- done
-
- # Just create a config file.
- cfgfile="$ofile.cfg"
- trap "$rm \"$cfgfile\"; exit 1" 1 2 15
- echo "creating $cfgfile"
- $rm "$cfgfile"
- cat <<EOF > "$cfgfile"
-# `$echo "$cfgfile" | sed 's%^.*/%%'` - Libtool configuration file.
-# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
-EOF
- ;;
-esac
-
-cat <<EOF >> "$cfgfile"
-# Libtool was configured as follows, on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-#
-# CC=$old_CC CFLAGS=$old_CFLAGS CPPFLAGS=$old_CPPFLAGS \\
-# LD=$old_LD LDFLAGS=$old_LDFLAGS LIBS=$old_LIBS \\
-# NM=$old_NM RANLIB=$old_RANLIB LN_S=$old_LN_S \\
-# DLLTOOL=$old_DLLTOOL OBJDUMP=$old_OBJDUMP AS=$old_AS \\
-# $0$ltconfig_args
-#
-# Compiler and other test output produced by $progname, useful for
-# debugging $progname, is in ./config.log if it exists.
-
-# The version of $progname that generated this script.
-LTCONFIG_VERSION=$LTCONFIG_VERSION
-
-# Shell to use when invoking shell scripts.
-SHELL=$LTSHELL
-
-# Whether or not to build shared libraries.
-build_libtool_libs=$enable_shared
-
-# Whether or not to build static libraries.
-build_old_libs=$enable_static
-
-# Whether or not to optimize for fast installation.
-fast_install=$enable_fast_install
-
-# The host system.
-host_alias=$host_alias
-host=$host
-
-# An echo program that does not interpret backslashes.
-echo=$ltecho
-
-# The archiver.
-AR=$AR
-
-# The default C compiler.
-CC=$CC
-
-# The linker used to build libraries.
-LD=$LD
-
-# Whether we need hard or soft links.
-LN_S=$LN_S
-
-# A BSD-compatible nm program.
-NM=$NM
-
-# Used on cygwin: DLL creation program.
-DLLTOOL="$DLLTOOL"
-
-# Used on cygwin: object dumper.
-OBJDUMP="$OBJDUMP"
-
-# Used on cygwin: assembler.
-AS="$AS"
-
-# The name of the directory that contains temporary libtool files.
-objdir=$objdir
-
-# How to create reloadable object files.
-reload_flag=$reload_flag
-reload_cmds=$reload_cmds
-
-# How to pass a linker flag through the compiler.
-wl=$wl
-
-# Object file suffix (normally "o").
-objext="$objext"
-
-# Old archive suffix (normally "a").
-libext="$libext"
-
-# Executable file suffix (normally "").
-exeext="$exeext"
-
-# Additional compiler flags for building library objects.
-pic_flag=$pic_flag
-
-# Does compiler simultaneously support -c and -o options?
-compiler_c_o=$compiler_c_o
-
-# Can we write directly to a .lo ?
-compiler_o_lo=$compiler_o_lo
-
-# Must we lock files when doing compilation ?
-need_locks=$need_locks
-
-# Do we need the lib prefix for modules?
-need_lib_prefix=$need_lib_prefix
-
-# Do we need a version for libraries?
-need_version=$need_version
-
-# Whether dlopen is supported.
-dlopen=$enable_dlopen
-
-# Whether dlopen of programs is supported.
-dlopen_self=$enable_dlopen_self
-
-# Whether dlopen of statically linked programs is supported.
-dlopen_self_static=$enable_dlopen_self_static
-
-# Compiler flag to prevent dynamic linking.
-link_static_flag=$link_static_flag
-
-# Compiler flag to turn off builtin functions.
-no_builtin_flag=$no_builtin_flag
-
-# Compiler flag to allow reflexive dlopens.
-export_dynamic_flag_spec=$export_dynamic_flag_spec
-
-# Compiler flag to generate shared objects directly from archives.
-whole_archive_flag_spec=$whole_archive_flag_spec
-
-# Compiler flag to generate thread-safe objects.
-thread_safe_flag_spec=$thread_safe_flag_spec
-
-# Library versioning type.
-version_type=$version_type
-
-# Format of library name prefix.
-libname_spec=$libname_spec
-
-# List of archive names. First name is the real one, the rest are links.
-# The last name is the one that the linker finds with -lNAME.
-library_names_spec=$library_names_spec
-
-# The coded name of the library, if different from the real name.
-soname_spec=$soname_spec
-
-# Commands used to build and install an old-style archive.
-RANLIB=$RANLIB
-old_archive_cmds=$old_archive_cmds
-old_postinstall_cmds=$old_postinstall_cmds
-old_postuninstall_cmds=$old_postuninstall_cmds
-
-# Create an old-style archive from a shared archive.
-old_archive_from_new_cmds=$old_archive_from_new_cmds
-
-# Commands used to build and install a shared archive.
-archive_cmds=$archive_cmds
-archive_expsym_cmds=$archive_expsym_cmds
-postinstall_cmds=$postinstall_cmds
-postuninstall_cmds=$postuninstall_cmds
-
-# Method to check whether dependent libraries are shared objects.
-deplibs_check_method=$deplibs_check_method
-
-# Command to use when deplibs_check_method == file_magic.
-file_magic_cmd=$file_magic_cmd
-
-# Flag that allows shared libraries with undefined symbols to be built.
-allow_undefined_flag=$allow_undefined_flag
-
-# Flag that forces no undefined symbols.
-no_undefined_flag=$no_undefined_flag
-
-# Commands used to finish a libtool library installation in a directory.
-finish_cmds=$finish_cmds
-
-# Same as above, but a single script fragment to be evaled but not shown.
-finish_eval=$finish_eval
-
-# Take the output of nm and produce a listing of raw symbols and C names.
-global_symbol_pipe=$global_symbol_pipe
-
-# Transform the output of nm in a proper C declaration
-global_symbol_to_cdecl=$global_symbol_to_cdecl
-
-# This is the shared library runtime path variable.
-runpath_var=$runpath_var
-
-# This is the shared library path variable.
-shlibpath_var=$shlibpath_var
-
-# Is shlibpath searched before the hard-coded library search path?
-shlibpath_overrides_runpath=$shlibpath_overrides_runpath
-
-# How to hardcode a shared library path into an executable.
-hardcode_action=$hardcode_action
-
-# Flag to hardcode \$libdir into a binary during linking.
-# This must work even if \$libdir does not exist.
-hardcode_libdir_flag_spec=$hardcode_libdir_flag_spec
-
-# Whether we need a single -rpath flag with a separated argument.
-hardcode_libdir_separator=$hardcode_libdir_separator
-
-# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
-# resulting binary.
-hardcode_direct=$hardcode_direct
-
-# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
-# resulting binary.
-hardcode_minus_L=$hardcode_minus_L
-
-# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
-# the resulting binary.
-hardcode_shlibpath_var=$hardcode_shlibpath_var
-
-# Compile-time system search path for libraries
-sys_lib_search_path_spec=$sys_lib_search_path_spec
-
-# Run-time system search path for libraries
-sys_lib_dlsearch_path_spec=$sys_lib_dlsearch_path_spec
-
-# Fix the shell variable \$srcfile for the compiler.
-fix_srcfile_path="$fix_srcfile_path"
-
-# Set to yes if exported symbols are required.
-always_export_symbols=$always_export_symbols
-
-# The commands to list exported symbols.
-export_symbols_cmds=$export_symbols_cmds
-
-# Symbols that should not be listed in the preloaded symbols.
-exclude_expsyms=$exclude_expsyms
-
-# Symbols that must always be exported.
-include_expsyms=$include_expsyms
-
-EOF
-
-case "$ltmain" in
-*.sh)
- echo '### END LIBTOOL CONFIG' >> "$ofile"
- echo >> "$ofile"
- case "$host_os" in
- aix3*)
- cat <<\EOF >> "$ofile"
-
-# AIX sometimes has problems with the GCC collect2 program. For some
-# reason, if we set the COLLECT_NAMES environment variable, the problems
-# vanish in a puff of smoke.
-if test "X${COLLECT_NAMES+set}" != Xset; then
- COLLECT_NAMES=
- export COLLECT_NAMES
-fi
-EOF
- ;;
- esac
-
- # Append the ltmain.sh script.
- sed '$q' "$ltmain" >> "$ofile" || (rm -f "$ofile"; exit 1)
- # We use sed instead of cat because bash on DJGPP gets confused if
- # if finds mixed CR/LF and LF-only lines. Since sed operates in
- # text mode, it properly converts lines to CR/LF. This bash problem
- # is reportedly fixed, but why not run on old versions too?
-
- chmod +x "$ofile"
- ;;
-
-*)
- # Compile the libtool program.
- echo "FIXME: would compile $ltmain"
- ;;
-esac
-
-test -n "$cache_file" || exit 0
-
-# AC_CACHE_SAVE
-trap '' 1 2 15
-cat > confcache <<\EOF
-# This file is a shell script that caches the results of configure
-# tests run on this system so they can be shared between configure
-# scripts and configure runs. It is not useful on other systems.
-# If it contains results you don't want to keep, you may remove or edit it.
-#
-# By default, configure uses ./config.cache as the cache file,
-# creating it if it does not exist already. You can give configure
-# the --cache-file=FILE option to use a different cache file; that is
-# what configure does when it calls configure scripts in
-# subdirectories, so they share the cache.
-# Giving --cache-file=/dev/null disables caching, for debugging configure.
-# config.status only pays attention to the cache file if you give it the
-# --recheck option to rerun configure.
-#
-EOF
-# The following way of writing the cache mishandles newlines in values,
-# but we know of no workaround that is simple, portable, and efficient.
-# So, don't put newlines in cache variables' values.
-# Ultrix sh set writes to stderr and can't be redirected directly,
-# and sets the high bit in the cache file unless we assign to the vars.
-(set) 2>&1 |
- case `(ac_space=' '; set | grep ac_space) 2>&1` in
- *ac_space=\ *)
- # `set' does not quote correctly, so add quotes (double-quote substitution
- # turns \\\\ into \\, and sed turns \\ into \).
- sed -n \
- -e "s/'/'\\\\''/g" \
- -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p"
- ;;
- *)
- # `set' quotes correctly as required by POSIX, so do not add quotes.
- sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p'
- ;;
- esac >> confcache
-if cmp -s $cache_file confcache; then
- :
-else
- if test -w $cache_file; then
- echo "updating cache $cache_file"
- cat confcache > $cache_file
- else
- echo "not updating unwritable cache $cache_file"
- fi
-fi
-rm -f confcache
-
-exit 0
-
-# Local Variables:
-# mode:shell-script
-# sh-indentation:2
-# End:
-#! /bin/bash
diff --git a/db/dist/pubdef.in b/db/dist/pubdef.in
index 67b222499..95af25d3c 100644
--- a/db/dist/pubdef.in
+++ b/db/dist/pubdef.in
@@ -1,4 +1,4 @@
-# $Id: pubdef.in,v 12.35 2006/09/13 14:53:38 mjc Exp $
+# $Id: pubdef.in,v 12.51 2007/07/06 00:22:52 mjc Exp $
#
# Name
# D == documentation
@@ -9,7 +9,6 @@ DB_AFTER D I J
DB_AGGRESSIVE D I J
DB_ALREADY_ABORTED * I *
DB_AM_CHKSUM * I *
-DB_AM_CL_WRITER * I *
DB_AM_COMPENSATE * I *
DB_AM_CREATED * I *
DB_AM_CREATED_MSTR * I *
@@ -54,6 +53,7 @@ DB_BTREEVERSION * I *
DB_BUFFER_SMALL D I N
DB_CDB_ALLDB D I J
DB_CHKSUM D I J
+DB_CKP_INTERNAL * I *
DB_COMPACT_FLAGS * I *
DB_CONFIG D * *
DB_CONSUME D I J
@@ -66,6 +66,7 @@ DB_DBT_APPMALLOC D I N
DB_DBT_DUPOK * I *
DB_DBT_ISSET * I *
DB_DBT_MALLOC D I J
+DB_DBT_MULTIPLE D I N
DB_DBT_PARTIAL D I J
DB_DBT_REALLOC D I N
DB_DBT_USERCOPY * I N
@@ -76,7 +77,7 @@ DB_DIRECT D I *
DB_DIRECT_DB D I J
DB_DIRECT_LOG D I J
DB_DIRTY_READ * I *
-DB_DONOTINDEX D I J
+DB_DONOTINDEX D I N
DB_DSYNC_DB D I J
DB_DSYNC_LOG D I J
DB_DUP D I J
@@ -89,13 +90,11 @@ DB_ENCRYPT_AES D I J
DB_ENV_AUTO_COMMIT * I *
DB_ENV_CDB * I *
DB_ENV_CDB_ALLDB * I *
-DB_ENV_CREATE * I *
DB_ENV_DBLOCAL * I *
DB_ENV_DIRECT_DB * I *
DB_ENV_DIRECT_LOG * I *
DB_ENV_DSYNC_DB * I *
DB_ENV_DSYNC_LOG * I *
-DB_ENV_FATAL * I *
DB_ENV_LOCKDOWN * I *
DB_ENV_LOG_AUTOREMOVE * I *
DB_ENV_LOG_INMEMORY * I *
@@ -103,9 +102,12 @@ DB_ENV_MULTIVERSION * I *
DB_ENV_NOLOCKING * I *
DB_ENV_NOMMAP * I *
DB_ENV_NOPANIC * I *
+DB_ENV_NO_OUTPUT_SET * I *
DB_ENV_OPEN_CALLED * I *
DB_ENV_OVERWRITE * I *
DB_ENV_PRIVATE * I *
+DB_ENV_RECOVER_FATAL * I *
+DB_ENV_REF_COUNTED * I *
DB_ENV_REGION_INIT * I *
DB_ENV_RPCCLIENT * I *
DB_ENV_RPCCLIENT_GIVEN * I *
@@ -113,16 +115,20 @@ DB_ENV_SYSTEM_MEM * I *
DB_ENV_THREAD * I *
DB_ENV_TIME_NOTGRANTED * I *
DB_ENV_TXN_NOSYNC * I *
+DB_ENV_TXN_NOWAIT * I *
DB_ENV_TXN_SNAPSHOT * I *
DB_ENV_TXN_WRITE_NOSYNC * I *
DB_ENV_YIELDCPU * I *
+DB_EVENT_NOT_HANDLED * I *
DB_EVENT_NO_SUCH_EVENT * I *
-DB_EVENT_PANIC D I J
-DB_EVENT_REP_CLIENT D I J
-DB_EVENT_REP_MASTER D I J
-DB_EVENT_REP_NEWMASTER D I J
-DB_EVENT_REP_STARTUPDONE D I J
-DB_EVENT_WRITE_FAILED D I J
+DB_EVENT_PANIC D I N
+DB_EVENT_REP_CLIENT D I N
+DB_EVENT_REP_ELECTED D I N
+DB_EVENT_REP_MASTER D I N
+DB_EVENT_REP_NEWMASTER D I N
+DB_EVENT_REP_PERM_FAILED D I N
+DB_EVENT_REP_STARTUPDONE D I N
+DB_EVENT_WRITE_FAILED D I N
DB_EXCL D I J
DB_EXTENT * I *
DB_FAST_STAT D I J
@@ -143,6 +149,7 @@ DB_HASHMAGIC * I *
DB_HASHOLDVER * I *
DB_HASHVERSION * I *
DB_HOME D * *
+DB_IGNORE_LEASE D I J
DB_IMMUTABLE_KEY D I J
DB_INIT_CDB D I J
DB_INIT_LOCK D I J
@@ -224,7 +231,7 @@ DB_MAX_PAGES * I *
DB_MAX_RECORDS * I *
DB_MPOOL_CREATE D I *
DB_MPOOL_DIRTY D I *
-DB_MPOOL_DISCARD D I *
+DB_MPOOL_DISCARD * I *
DB_MPOOL_EDIT D I *
DB_MPOOL_FREE * I *
DB_MPOOL_LAST D I *
@@ -273,11 +280,13 @@ DB_PAGE_NOTFOUND D I *
DB_PANIC_ENVIRONMENT D I J
DB_POSITION D I J
DB_PREV D I J
+DB_PREV_DUP D I J
DB_PREV_NODUP D I J
DB_PRINTABLE D I J
DB_PRIORITY_DEFAULT D I J
DB_PRIORITY_HIGH D I J
DB_PRIORITY_LOW D I J
+DB_PRIORITY_UNCHANGED D I *
DB_PRIORITY_VERY_HIGH D I J
DB_PRIORITY_VERY_LOW D I J
DB_PRIVATE D I J
@@ -302,6 +311,7 @@ DB_REGION_MAGIC * I *
DB_REGISTER D I J
DB_RENAMEMAGIC * I *
DB_RENUMBER D I J
+DB_REPFLAGS_MASK * I *
DB_REPMGR_ACKS_ALL D I J
DB_REPMGR_ACKS_ALL_PEERS D I J
DB_REPMGR_ACKS_NONE D I J
@@ -314,27 +324,31 @@ DB_REPMGR_PEER D I J
DB_REP_ACK_TIMEOUT D I J
DB_REP_ANYWHERE D I J
DB_REP_BULKOVF * I *
+DB_REP_CHECKPOINT_DELAY D I J
DB_REP_CLIENT D I J
DB_REP_CONF_BULK D I J
DB_REP_CONF_DELAYCLIENT D I J
DB_REP_CONF_NOAUTOINIT D I J
DB_REP_CONF_NOWAIT D I J
DB_REP_CONNECTION_RETRY D I J
+DB_REP_DEFAULT_PRIORITY * I J
DB_REP_DUPMASTER D I N
DB_REP_EGENCHG * I *
DB_REP_ELECTION D I J
DB_REP_ELECTION_RETRY D I J
DB_REP_ELECTION_TIMEOUT D I J
-DB_REP_FULL_ELECTION D I J
+DB_REP_FULL_ELECTION_TIMEOUT D I J
DB_REP_HANDLE_DEAD D I N
DB_REP_HOLDELECTION D I N
DB_REP_IGNORE D I J
DB_REP_ISPERM D I J
DB_REP_JOIN_FAILURE D I N
+DB_REP_LEASE_EXPIRED D I N
+DB_REP_LEASE_TIMEOUT D I N
DB_REP_LOCKOUT D I N
DB_REP_LOGREADY * I *
DB_REP_MASTER D I J
-DB_REP_NEWMASTER D I J
+DB_REP_NEWMASTER * I *
DB_REP_NEWSITE D I J
DB_REP_NOBUFFER D I J
DB_REP_NOTPERM D I J
@@ -363,6 +377,7 @@ DB_SET_TXN_LSNP * I *
DB_SET_TXN_NOW * I *
DB_SET_TXN_TIMEOUT D I J
DB_SNAPSHOT D I J
+DB_SPARE_FLAG * I *
DB_STAT_ALL D I *
DB_STAT_CLEAR D I J
DB_STAT_LOCK_CONF D I *
@@ -406,6 +421,7 @@ DB_TXN_POPENFILES * I *
DB_TXN_PRINT D I J
DB_TXN_SNAPSHOT D I J
DB_TXN_SYNC D I J
+DB_TXN_WAIT D I J
DB_TXN_WRITE_NOSYNC D I J
DB_UNDO * I *
DB_UNKNOWN D I J
@@ -417,6 +433,8 @@ DB_USERCOPY_SETDATA * I N
DB_USE_ENVIRON D I J
DB_USE_ENVIRON_ROOT D I J
DB_VERB_DEADLOCK D I J
+DB_VERB_FILEOPS D I J
+DB_VERB_FILEOPS_ALL D I J
DB_VERB_RECOVERY D I J
DB_VERB_REGISTER D I J
DB_VERB_REPLICATION D I J
diff --git a/db/dist/rec_ctemp b/db/dist/rec_ctemp
deleted file mode 100644
index 6be6d3166..000000000
--- a/db/dist/rec_ctemp
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * __PREF_FUNC_recover --
- * Recovery function for FUNC.
- *
- * PUBLIC: int __PREF_FUNC_recover
- * PUBLIC: __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
- */
-int
-__PREF_FUNC_recover(dbenv, dbtp, lsnp, op, info)
- DB_ENV *dbenv;
- DBT *dbtp;
- DB_LSN *lsnp;
- db_recops op;
- void *info;
-{
- __PREF_FUNC_args *argp;
- DB *file_dbp;
- DBC *dbc;
- DB_MPOOLFILE *mpf;
- PAGE *pagep;
- int cmp_n, cmp_p, modified, ret;
-
- REC_PRINT(__PREF_FUNC_print);
- REC_INTRO(__PREF_FUNC_read);
-
- if ((ret = memp_fget(mpf, &argp->pgno, 0, &pagep)) != 0)
- if (DB_REDO(op)) {
- if ((ret = memp_fget(mpf,
- &argp->pgno, DB_MPOOL_CREATE, &pagep)) != 0)
- goto out;
- } else {
- *lsnp = argp->prev_lsn;
- ret = 0;
- goto out;
- }
-
- modified = 0;
- cmp_n = log_compare(lsnp, &LSN(pagep));
-
- /*
- * Use this when there is something like "pagelsn" in the argp
- * structure. Sometimes, you might need to compare meta-data
- * lsn's instead.
- *
- * cmp_p = log_compare(&LSN(pagep), argp->pagelsn);
- */
- if (cmp_p == 0 && DB_REDO(op)) {
- /* Need to redo update described. */
- modified = 1;
- } else if (cmp_n == 0 && !DB_REDO(op)) {
- /* Need to undo update described. */
- modified = 1;
- }
- if (ret = memp_fput(mpf, pagep, modified ? DB_MPOOL_DIRTY : 0))
- goto out;
-
- *lsnp = argp->prev_lsn;
- ret = 0;
-
-out: REC_CLOSE;
-}
-
diff --git a/db/dist/s60/s60.mmp.1 b/db/dist/s60/s60.mmp.1
new file mode 100644
index 000000000..fb3e99640
--- /dev/null
+++ b/db/dist/s60/s60.mmp.1
@@ -0,0 +1,7 @@
+// bdb_s60.mmp
+// DO NOT EDIT: automatically built by dist/s_s60_mmp
+
+TARGET bdb_s60.lib
+TARGETTYPE lib
+UID 0x10004262 0xE8000016
+VENDORID 0x70000002
diff --git a/db/dist/s60/s60.mmp.2 b/db/dist/s60/s60.mmp.2
new file mode 100644
index 000000000..797301f27
--- /dev/null
+++ b/db/dist/s60/s60.mmp.2
@@ -0,0 +1,7 @@
+SYSTEMINCLUDE \epoc32\include\stdapis \epoc32\include
+USERINCLUDE .
+USERINCLUDE ..
+
+LIBRARY libc.lib libpthread.lib euser.lib libcrt0.lib
+
+nostrictdef
diff --git a/db/dist/s60/s60_config.in b/db/dist/s60/s60_config.in
new file mode 100644
index 000000000..b55ed7330
--- /dev/null
+++ b/db/dist/s60/s60_config.in
@@ -0,0 +1,547 @@
+/* db_config.h. Generated from config.hin by configure. */
+/* config.hin. Generated from configure.ac by autoheader. */
+
+/* Define to 1 if you want to build a version for running the test suite. */
+/* #undef CONFIG_TEST */
+
+/* We use DB_WIN32 much as one would use _WIN32 -- to specify that we're using
+ an operating system environment that supports Win32 calls and semantics. We
+ don't use _WIN32 because Cygwin/GCC also defines _WIN32, even though
+ Cygwin/GCC closely emulates the Unix environment. */
+/* #undef DB_WIN32 */
+
+/* Define to 1 if you want a debugging version. */
+/* #undef DEBUG */
+
+/* Define to 1 if you want a version that logs read operations. */
+/* #undef DEBUG_ROP */
+
+/* Define to 1 if you want a version that logs write operations. */
+/* #undef DEBUG_WOP */
+
+/* Define to 1 if you want a version with run-time diagnostic checking. */
+/* #undef DIAGNOSTIC */
+
+/* Define to 1 if 64-bit types are available. */
+/* #undef HAVE_64BIT_TYPES */
+
+/* Define to 1 if you have the `abort' function. */
+#define HAVE_ABORT 1
+
+/* Define to 1 if you have the `atoi' function. */
+#define HAVE_ATOI 1
+
+/* Define to 1 if you have the `atol' function. */
+#define HAVE_ATOL 1
+
+/* Define to 1 if building on BREW. */
+/* #undef HAVE_BREW */
+
+/* Define to 1 if building on BREW (SDK2). */
+/* #undef HAVE_BREW_SDK2 */
+
+/* Define to 1 if you have the `clock_gettime' function. */
+/* #undef HAVE_CLOCK_GETTIME */
+
+/* Define to 1 if Berkeley DB release includes strong cryptography. */
+/* #undef HAVE_CRYPTO */
+
+/* Define to 1 if you have the `ctime_r' function. */
+#define HAVE_CTIME_R 1
+
+/* Define to 1 if ctime_r takes a buffer length as a third argument. */
+/* #undef HAVE_CTIME_R_3ARG */
+
+/* Define to 1 if you have the `directio' function. */
+/* #undef HAVE_DIRECTIO */
+
+/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
+ */
+#define HAVE_DIRENT_H 1
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+/* #undef HAVE_DLFCN_H */
+
+/* Define to 1 if you have EXIT_SUCCESS/EXIT_FAILURE #defines. */
+#define HAVE_EXIT_SUCCESS 1
+
+/* Define to 1 if you have the `fchmod' function. */
+/* #undef HAVE_FCHMOD */
+
+/* Define to 1 if you have the `fclose' function. */
+#define HAVE_FCLOSE 1
+
+/* Define to 1 if you have the `fcntl' function. */
+#define HAVE_FCNTL 1
+
+/* Define to 1 if fcntl/F_SETFD denies child access to file descriptors. */
+/* #undef HAVE_FCNTL_F_SETFD */
+
+/* Define to 1 if you have the `fdatasync' function. */
+/* #undef HAVE_FDATASYNC */
+
+/* Define to 1 if you have the `fgetc' function. */
+#define HAVE_FGETC 1
+
+/* Define to 1 if you have the `fgets' function. */
+#define HAVE_FGETS 1
+
+/* Define to 1 if allocated filesystem blocks are not zeroed. */
+#define HAVE_FILESYSTEM_NOTZERO 1
+
+/* Define to 1 to build Berkeley DB with a fine-grained lock manager. */
+/* #undef HAVE_FINE_GRAINED_LOCK_MANAGER */
+
+/* Define to 1 if you have the `fopen' function. */
+#define HAVE_FOPEN 1
+
+/* Define to 1 if you have the `ftruncate' function. */
+/* #undef HAVE_FTRUNCATE */
+
+/* Define to 1 if you have the `fwrite' function. */
+#define HAVE_FWRITE 1
+
+/* Define to 1 if you have the `getaddrinfo' function. */
+/* #undef HAVE_GETADDRINFO */
+
+/* Define to 1 if you have the `getcwd' function. */
+#define HAVE_GETCWD 1
+
+/* Define to 1 if you have the `getenv' function. */
+/* #undef HAVE_GETENV */
+
+/* Define to 1 if you have the `getopt' function. */
+#define HAVE_GETOPT 1
+
+/* Define to 1 if you have the `getrusage' function. */
+/* #undef HAVE_GETRUSAGE */
+
+/* Define to 1 if you have the `gettimeofday' function. */
+/* #undef HAVE_GETTIMEOFDAY */
+
+/* Define to 1 if you have the `getuid' function. */
+/* #undef HAVE_GETUID */
+
+/* Define to 1 if building Hash access method. */
+/* #undef HAVE_HASH */
+
+/* Define to 1 if you have the `hstrerror' function. */
+/* #undef HAVE_HSTRERROR */
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define to 1 if you have the `isalpha' function. */
+#define HAVE_ISALPHA 1
+
+/* Define to 1 if you have the `isdigit' function. */
+#define HAVE_ISDIGIT 1
+
+/* Define to 1 if you have the `isprint' function. */
+#define HAVE_ISPRINT 1
+
+/* Define to 1 if you have the `isspace' function. */
+#define HAVE_ISSPACE 1
+
+/* Define to 1 if you have the `localtime' function. */
+#define HAVE_LOCALTIME 1
+
+/* Define to 1 if you have the `memcmp' function. */
+#define HAVE_MEMCMP 1
+
+/* Define to 1 if you have the `memcpy' function. */
+#define HAVE_MEMCPY 1
+
+/* Define to 1 if you have the `memmove' function. */
+#define HAVE_MEMMOVE 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+/* #undef HAVE_MEMORY_H */
+
+/* Define to 1 if you have the `mlock' function. */
+/* #undef HAVE_MLOCK */
+
+/* Define to 1 if you have the `mmap' function. */
+/* #undef HAVE_MMAP */
+
+/* Define to 1 if you have the `mprotect' function. */
+/* #undef HAVE_MPROTECT */
+
+/* Define to 1 if you have the `munlock' function. */
+/* #undef HAVE_MUNLOCK */
+
+/* Define to 1 if you have the `munmap' function. */
+#define HAVE_MUNMAP 1
+
+/* Define to 1 to use the GCC compiler and 68K assembly language mutexes. */
+/* #undef HAVE_MUTEX_68K_GCC_ASSEMBLY */
+
+/* Define to 1 to use the AIX _check_lock mutexes. */
+/* #undef HAVE_MUTEX_AIX_CHECK_LOCK */
+
+/* Define to 1 to use the GCC compiler and Alpha assembly language mutexes. */
+/* #undef HAVE_MUTEX_ALPHA_GCC_ASSEMBLY */
+
+/* Define to 1 to use the GCC compiler and ARM assembly language mutexes. */
+/* #undef HAVE_MUTEX_ARM_GCC_ASSEMBLY */
+
+/* Define to 1 to use the Apple/Darwin _spin_lock_try mutexes. */
+/* #undef HAVE_MUTEX_DARWIN_SPIN_LOCK_TRY */
+
+/* Define to 1 to use the UNIX fcntl system call mutexes. */
+/* #undef HAVE_MUTEX_FCNTL */
+
+/* Define to 1 to use the GCC compiler and PaRisc assembly language mutexes.
+ */
+/* #undef HAVE_MUTEX_HPPA_GCC_ASSEMBLY */
+
+/* Define to 1 to use the msem_XXX mutexes on HP-UX. */
+/* #undef HAVE_MUTEX_HPPA_MSEM_INIT */
+
+/* Define to 1 to use test-and-set mutexes with blocking mutexes. */
+/* #undef HAVE_MUTEX_HYBRID */
+
+/* Define to 1 to use the GCC compiler and IA64 assembly language mutexes. */
+/* #undef HAVE_MUTEX_IA64_GCC_ASSEMBLY */
+
+/* Define to 1 to use the GCC compiler and MIPS assembly language mutexes. */
+/* #undef HAVE_MUTEX_MIPS_GCC_ASSEMBLY */
+
+/* Define to 1 to use the msem_XXX mutexes on systems other than HP-UX. */
+/* #undef HAVE_MUTEX_MSEM_INIT */
+
+/* Define to 1 to use the GCC compiler and PowerPC assembly language mutexes.
+ */
+/* #undef HAVE_MUTEX_PPC_GCC_ASSEMBLY */
+
+/* Define to 1 to use POSIX 1003.1 pthread_XXX mutexes. */
+#define HAVE_MUTEX_PTHREADS 1
+
+/* Define to 1 to use Reliant UNIX initspin mutexes. */
+/* #undef HAVE_MUTEX_RELIANTUNIX_INITSPIN */
+
+/* Define to 1 to use the IBM C compiler and S/390 assembly language mutexes.
+ */
+/* #undef HAVE_MUTEX_S390_CC_ASSEMBLY */
+
+/* Define to 1 to use the GCC compiler and S/390 assembly language mutexes. */
+/* #undef HAVE_MUTEX_S390_GCC_ASSEMBLY */
+
+/* Define to 1 to use the SCO compiler and x86 assembly language mutexes. */
+/* #undef HAVE_MUTEX_SCO_X86_CC_ASSEMBLY */
+
+/* Define to 1 to use the obsolete POSIX 1003.1 sema_XXX mutexes. */
+/* #undef HAVE_MUTEX_SEMA_INIT */
+
+/* Define to 1 to use the SGI XXX_lock mutexes. */
+/* #undef HAVE_MUTEX_SGI_INIT_LOCK */
+
+/* Define to 1 to use the Solaris _lock_XXX mutexes. */
+/* #undef HAVE_MUTEX_SOLARIS_LOCK_TRY */
+
+/* Define to 1 to use the Solaris lwp threads mutexes. */
+/* #undef HAVE_MUTEX_SOLARIS_LWP */
+
+/* Define to 1 to use the GCC compiler and Sparc assembly language mutexes. */
+/* #undef HAVE_MUTEX_SPARC_GCC_ASSEMBLY */
+
+/* Define to 1 if the Berkeley DB library should support mutexes. */
+#define HAVE_MUTEX_SUPPORT 1
+
+/* Define to 1 if mutexes hold system resources. */
+#define HAVE_MUTEX_SYSTEM_RESOURCES 1
+
+/* Define to 1 to configure mutexes intra-process only. */
+#define HAVE_MUTEX_THREAD_ONLY 1
+
+/* Define to 1 to use the CC compiler and Tru64 assembly language mutexes. */
+/* #undef HAVE_MUTEX_TRU64_CC_ASSEMBLY */
+
+/* Define to 1 to use the UNIX International mutexes. */
+/* #undef HAVE_MUTEX_UI_THREADS */
+
+/* Define to 1 to use the UTS compiler and assembly language mutexes. */
+/* #undef HAVE_MUTEX_UTS_CC_ASSEMBLY */
+
+/* Define to 1 to use VMS mutexes. */
+/* #undef HAVE_MUTEX_VMS */
+
+/* Define to 1 to use VxWorks mutexes. */
+/* #undef HAVE_MUTEX_VXWORKS */
+
+/* Define to 1 to use the MSVC compiler and Windows mutexes. */
+/* #undef HAVE_MUTEX_WIN32 */
+
+/* Define to 1 to use the GCC compiler and Windows mutexes. */
+/* #undef HAVE_MUTEX_WIN32_GCC */
+
+/* Define to 1 to use the GCC compiler and 64-bit x86 assembly language
+ mutexes. */
+/* #undef HAVE_MUTEX_X86_64_GCC_ASSEMBLY */
+
+/* Define to 1 to use the GCC compiler and 32-bit x86 assembly language
+ mutexes. */
+/* #undef HAVE_MUTEX_X86_GCC_ASSEMBLY */
+
+/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
+/* #undef HAVE_NDIR_H */
+
+/* Define to 1 if you have the O_DIRECT flag. */
+/* #undef HAVE_O_DIRECT */
+
+/* Define to 1 if you have the `pread' function. */
+/* #undef HAVE_PREAD */
+
+/* Define to 1 if you have the `printf' function. */
+#define HAVE_PRINTF 1
+
+/* Define to 1 if you have the `pstat_getdynamic' function. */
+/* #undef HAVE_PSTAT_GETDYNAMIC */
+
+/* Define to 1 to configure Berkeley DB for POSIX pthread API. */
+/* #undef HAVE_PTHREAD_API */
+
+/* Define to 1 if you have the `pthread_yield' function. */
+/* #undef HAVE_PTHREAD_YIELD */
+
+/* Define to 1 if you have the `pwrite' function. */
+/* #undef HAVE_PWRITE */
+
+/* Define to 1 if building on QNX. */
+/* #undef HAVE_QNX */
+
+/* Define to 1 if you have the `qsort' function. */
+#define HAVE_QSORT 1
+
+/* Define to 1 if building Queue access method. */
+/* #undef HAVE_QUEUE */
+
+/* Define to 1 if you have the `raise' function. */
+#define HAVE_RAISE 1
+
+/* Define to 1 if you have the `rand' function. */
+#define HAVE_RAND 1
+
+/* Define to 1 if building replication support. */
+/* #undef HAVE_REPLICATION */
+
+/* Define to 1 if building the Berkeley DB replication framework. */
+/* #undef HAVE_REPLICATION_THREADS */
+
+/* Define to 1 if building RPC client/server. */
+/* #undef HAVE_RPC */
+
+/* Define to 1 if building on S60. */
+#define HAVE_S60 1
+
+/* Define to 1 if you have the `sched_yield' function. */
+#define HAVE_SCHED_YIELD 1
+
+/* Define to 1 if you have the `select' function. */
+#define HAVE_SELECT 1
+
+/* Define to 1 if you have the `shmget' function. */
+#define HAVE_SHMGET 1
+
+/* Define to 1 if you have the `sigaction' function. */
+/* #undef HAVE_SIGACTION */
+
+/* Define to 1 if thread identifier type db_threadid_t is integral. */
+#define HAVE_SIMPLE_THREAD_TYPE 1
+
+/* Define to 1 if you have the `snprintf' function. */
+#define HAVE_SNPRINTF 1
+
+/* Define to 1 if you have the `stat' function. */
+#define HAVE_STAT 1
+
+/* Define to 1 if building statistics support. */
+#define HAVE_STATISTICS 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the `strcasecmp' function. */
+#define HAVE_STRCASECMP 1
+
+/* Define to 1 if you have the `strcat' function. */
+#define HAVE_STRCAT 1
+
+/* Define to 1 if you have the `strchr' function. */
+#define HAVE_STRCHR 1
+
+/* Define to 1 if you have the `strdup' function. */
+#define HAVE_STRDUP 1
+
+/* Define to 1 if you have the `strerror' function. */
+#define HAVE_STRERROR 1
+
+/* Define to 1 if you have the `strftime' function. */
+#define HAVE_STRFTIME 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the `strncat' function. */
+#define HAVE_STRNCAT 1
+
+/* Define to 1 if you have the `strncmp' function. */
+#define HAVE_STRNCMP 1
+
+/* Define to 1 if you have the `strrchr' function. */
+#define HAVE_STRRCHR 1
+
+/* Define to 1 if you have the `strsep' function. */
+#define HAVE_STRSEP 1
+
+/* Define to 1 if you have the `strtol' function. */
+#define HAVE_STRTOL 1
+
+/* Define to 1 if you have the `strtoul' function. */
+#define HAVE_STRTOUL 1
+
+/* Define to 1 if `st_blksize' is member of `struct stat'. */
+/* #undef HAVE_STRUCT_STAT_ST_BLKSIZE */
+
+/* Define to 1 if you have the `sysconf' function. */
+#define HAVE_SYSCONF 1
+
+/* Define to 1 if port includes files in the Berkeley DB source code. */
+#define HAVE_SYSTEM_INCLUDE_FILES 1
+
+/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
+ */
+/* #undef HAVE_SYS_DIR_H */
+
+/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
+ */
+/* #undef HAVE_SYS_NDIR_H */
+
+/* Define to 1 if you have the <sys/select.h> header file. */
+#define HAVE_SYS_SELECT_H 1
+
+/* Define to 1 if you have the <sys/socket.h> header file. */
+/* #undef HAVE_SYS_SOCKET_H */
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#define HAVE_SYS_TIME_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the `time' function. */
+#define HAVE_TIME 1
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define to 1 if unlink of file with open file descriptors will fail. */
+/* #undef HAVE_UNLINK_WITH_OPEN_FAILURE */
+
+/* Define to 1 if port includes historic database upgrade support. */
+/* #undef HAVE_UPGRADE_SUPPORT */
+
+/* Define to 1 if building access method verification support. */
+/* #undef HAVE_VERIFY */
+
+/* Define to 1 if you have the `vsnprintf' function. */
+#define HAVE_VSNPRINTF 1
+
+/* Define to 1 if building on VxWorks. */
+/* #undef HAVE_VXWORKS */
+
+/* Define to 1 if you have the `yield' function. */
+/* #undef HAVE_YIELD */
+
+/* Define to 1 if you have the `_fstati64' function. */
+/* #undef HAVE__FSTATI64 */
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "Oracle Technology Network Berkeley DB forum"
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "Berkeley DB"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "Berkeley DB __EDIT_DB_VERSION__"
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME "db-__EDIT_DB_VERSION__"
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "__EDIT_DB_VERSION__"
+
+/* The size of `char', as computed by sizeof. */
+#define SIZEOF_CHAR 1
+
+/* The size of `char *', as computed by sizeof. */
+#define SIZEOF_CHAR_P 4
+
+/* The size of `int', as computed by sizeof. */
+#define SIZEOF_INT 4
+
+/* The size of `long', as computed by sizeof. */
+#define SIZEOF_LONG 4
+
+/* The size of `long long', as computed by sizeof. */
+/* #undef SIZEOF_LONG_LONG */
+
+/* The size of `short', as computed by sizeof. */
+#define SIZEOF_SHORT 2
+
+/* The size of `size_t', as computed by sizeof. */
+#define SIZEOF_SIZE_T 4
+
+/* The size of `unsigned char', as computed by sizeof. */
+#define SIZEOF_UNSIGNED_CHAR 1
+
+/* The size of `unsigned int', as computed by sizeof. */
+#define SIZEOF_UNSIGNED_INT 4
+
+/* The size of `unsigned long', as computed by sizeof. */
+#define SIZEOF_UNSIGNED_LONG 4
+
+/* The size of `unsigned long long', as computed by sizeof. */
+/* #undef SIZEOF_UNSIGNED_LONG_LONG */
+
+/* The size of `unsigned short', as computed by sizeof. */
+#define SIZEOF_UNSIGNED_SHORT 2
+
+/* Define to 1 if the `S_IS*' macros in <sys/stat.h> do not work properly. */
+/* #undef STAT_MACROS_BROKEN */
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
+/* #undef TIME_WITH_SYS_TIME */
+
+/* Define to 1 to mask harmless uninitialized memory read/writes. */
+/* #undef UMRW */
+
+/* Number of bits in a file offset, on hosts where this is settable. */
+/* #undef _FILE_OFFSET_BITS */
+
+/* Define for large files, on AIX-style hosts. */
+/* #undef _LARGE_FILES */
+
+/* Define to empty if `const' does not conform to ANSI C. */
+/* #undef const */
+
+/* Define to `__inline__' or `__inline' if that's what the C compiler
+ calls it, or to nothing if 'inline' is not supported under any name. */
+#ifndef __cplusplus
+/* #undef inline */
+#endif
+
+/* type to use in place of socklen_t if not defined */
+/* #undef socklen_t */
diff --git a/db/dist/s60/s60_make.in b/db/dist/s60/s60_make.in
new file mode 100644
index 000000000..00d82dfd5
--- /dev/null
+++ b/db/dist/s60/s60_make.in
@@ -0,0 +1,25 @@
+###################################################
+# EVERYTHING IN THIS FILE HEADER COPIED FROM dist/brew_makefile.in
+##################################################
+CC= cc
+CFLAGS= -c -g -W -Wall -Wpointer-arith -Wmissing-prototypes \
+ -I. -I.. -DDIAGNOSTIC
+
+.c.o:
+ $(CC) $(CFLAGS) $< -o $@
+
+a: t
+
+t: t.c libdb.a
+ $(CC) t.c -o t libdb.a -lpthread
+
+t.c:
+ echo '#include <sys/types.h>' > $@
+ echo '#include <stdio.h>' >> $@
+ echo '#define AEEApplet char' >> $@
+ echo '#include "db.h"' >> $@
+ echo 'int main() {' >> $@
+ echo ' DB_ENV *dbenv; db_env_create(&dbenv, 0); return (0); }' >> $@
+
+realclean distclean clean:
+ rm -f mklog t t.c tmp.c libdb.a *.o
diff --git a/db/dist/s_all b/db/dist/s_all
index 0891a713b..2de424704 100755
--- a/db/dist/s_all
+++ b/db/dist/s_all
@@ -1,5 +1,5 @@
#!/bin/sh -
-# $Id: s_all,v 12.2 2005/12/01 03:24:24 bostic Exp $
+# $Id: s_all,v 12.8 2007/07/06 16:29:16 bostic Exp $
sh s_perm # permissions.
sh s_symlink # symbolic links.
@@ -13,9 +13,18 @@ sh s_recover # logging/recovery files.
sh s_rpc # RPC files.
sh s_include # standard include files.
-sh s_windows # Windows include files.
-sh s_windows_dsp # Windows build environment.
-sh s_vxworks # VxWorks include files.
sh s_java # Java support.
sh s_test # Test suite support.
sh s_tags # Tags files.
+
+# We only build the Cscope file for releases, it's too big to commit
+# into the CVS tree.
+#sh s_cscope # Cscope files.
+
+sh s_brew # BREW support.
+sh s_brew_dsp # BREW support: build environment.
+sh s_s60 # S60 support.
+sh s_s60_mmp # S60 support: build environment.
+sh s_vxworks # VxWorks support.
+sh s_windows # Windows support.
+sh s_windows_dsp # Windows support: build environment.
diff --git a/db/dist/s_brew b/db/dist/s_brew
new file mode 100644
index 000000000..addd8c36f
--- /dev/null
+++ b/db/dist/s_brew
@@ -0,0 +1,142 @@
+#!/bin/sh -
+# $Id: s_brew,v 12.6 2007/05/24 13:16:50 bostic Exp $
+#
+# Build the BREW files.
+
+msgc="/* DO NOT EDIT: automatically built by dist/s_brew. */"
+
+. RELEASE
+
+s=/tmp/__db_a
+t=/tmp/__db_b
+
+trap 'rm -f $s $t ; exit 0' 0
+trap 'rm -f $s $t ; exit 1' 1 2 3 13 15
+
+# Build the BREW db.h.
+cat <<ENDOFSEDTEXT > $s
+/@inttypes_h_decl@/d
+/@stdint_h_decl@/d
+s/@stddef_h_decl@/#include <stddef.h>/
+/@unistd_h_decl@/d
+/@thread_h_decl@/d
+s/@u_int8_decl@/typedef unsigned char u_int8_t;/
+s/@int16_decl@/typedef short int16_t;/
+s/@u_int16_decl@/typedef unsigned short u_int16_t;/
+s/@int32_decl@/typedef int int32_t;/
+s/@u_int32_decl@/typedef unsigned int u_int32_t;/
+/@int64_decl@/d
+/@u_int64_decl@/d
+s/@u_char_decl@/typedef unsigned char u_char;/
+s/@u_int_decl@/typedef unsigned int u_int;/
+s/@u_long_decl@/typedef unsigned long u_long;/
+s/@u_short_decl@/typedef unsigned short u_short;/
+s/@uintmax_t_decl@/typedef unsigned long uintmax_t;/
+s/@uintptr_t_decl@/typedef unsigned long uintptr_t;/
+s/@FILE_t_decl@/typedef IFile FILE;/
+s/@off_t_decl@/typedef u_int32_t off_t;/
+s/@pid_t_decl@/typedef int pid_t;/
+s/@size_t_decl@/typedef unsigned int size_t;/
+s/@ssize_t_decl@/typedef int ssize_t;/
+s/@time_t_decl@/typedef long time_t;/
+s/@db_seq_decl@/typedef int32_t db_seq_t;/
+s/@db_threadid_t_decl@/typedef uintmax_t db_threadid_t;/
+s/@DB_VERSION_MAJOR@/$DB_VERSION_MAJOR/
+s/@DB_VERSION_MINOR@/$DB_VERSION_MINOR/
+s/@DB_VERSION_PATCH@/$DB_VERSION_PATCH/
+s/@DB_VERSION_STRING@/"$DB_VERSION_STRING"/
+s/@DB_VERSION_UNIQUE_NAME@//
+s/@DB_CONST@//
+s/@DB_PROTO1@/#undef __P/
+s/@DB_PROTO2@/#define __P(protos) protos/
+/@platform_header@/d
+/@platform_footer@/{
+ i\\
+typedef struct {\\
+\ AEEApplet a; /* AEEApplet must be listed first. */\\
+\ void *db_global_values;\\
+} BDBApp;\\
+int brew_bdb_begin __P((void));\\
+void brew_bdb_end __P((void));
+ d
+}
+/^#ifndef.__NO_SYSTEM_INCLUDES/i\\
+#include <AEEFile.h>
+/^#ifndef.__NO_SYSTEM_INCLUDES/,/^#endif/d
+ENDOFSEDTEXT
+(echo "$msgc" &&
+ sed -f $s ../dbinc/db.in &&
+ cat ../dbinc_auto/ext_prot.in) > $t
+test `egrep '@.*@' $t` && {
+ egrep '@.*@' $t
+ echo 'Unexpanded autoconf variables found in BREW db.h.'
+ exit 1
+}
+f=../build_brew/db.h
+cmp $t $f > /dev/null 2>&1 ||
+ (echo "Building $f" && rm -f $f && cp $t $f && chmod 444 $f)
+
+# Build the BREW db_int.h.
+cat <<ENDOFSEDTEXT > $s
+s/@PATH_SEPARATOR@/\\\\\\\\\/:/
+s/@db_int_def@//
+/#endif.*HAVE_SYSTEM_INCLUDE_FILES/a\\
+#include "brew_db.h"
+ENDOFSEDTEXT
+(echo "$msgc" && sed -f $s ../dbinc/db_int.in) > $t
+test `egrep '@.*@' $t` && {
+ egrep '@.*@' $t
+ echo 'Unexpanded autoconf variables found in BREW db_int.h.'
+ exit 1
+}
+f=../build_brew/db_int.h
+cmp $t $f > /dev/null 2>&1 ||
+ (echo "Building $f" && rm -f $f && cp $t $f && chmod 444 $f)
+
+# Build the BREW db_config.h
+# We don't fail, but we complain if the brew_config.in file isn't up-to-date.
+check_config()
+{
+ egrep '^#undef' config.hin | awk '{print $2}' | sort > $s
+ (egrep '#undef' $1 | awk '{print $3}'
+ egrep '^#define' $1 | awk '{print $2}') | sort > $t
+ cmp $s $t > /dev/null || {
+ echo "config.hin and $1 differ"
+ echo "<<< config.hin >>> $1"
+ diff $s $t
+ }
+}
+check_config brew/brew_config.in
+f=../build_brew/db_config.h
+(echo "$msgc" &&
+ sed "s/__EDIT_DB_VERSION__/$DB_VERSION/" brew/brew_config.in) > $t
+cmp $t $f > /dev/null 2>&1 ||
+ (echo "Building $f" && rm -f $f && cp $t $f && chmod 444 $f)
+
+# Build BREW's brew_db.h
+f=../build_brew/brew_db.h
+i=brew/brew_db.in
+cmp $i $f > /dev/null 2>&1 ||
+ (echo "Building $f" && rm -f $f && cp $i $f && chmod 444 $f)
+
+# Build the BREW clib_port.h.
+cat <<ENDOFSEDTEXT > $s
+/@INT64_FMT@/d
+/@UINT64_FMT@/d
+ENDOFSEDTEXT
+sed -f $s clib_port.in > $t
+test `egrep '@.*@' $t` && {
+ egrep '@.*@' $t
+ echo 'Unexpanded autoconf variables found in BREW clib_port.h.'
+ exit 1
+}
+f=../build_brew/clib_port.h
+cmp $t $f > /dev/null 2>&1 ||
+ (echo "Building $f" && rm -f $f && cp $t $f && chmod 444 $f)
+
+# Copy in errno.h.
+f=../build_brew/errno.h
+cmp errno.h $f > /dev/null 2>&1 ||
+ (echo "Building $f" && rm -f $f && cp errno.h $f && chmod 444 $f)
+
+exit 0
diff --git a/db/dist/s_brew_dsp b/db/dist/s_brew_dsp
new file mode 100644
index 000000000..60b70f4f1
--- /dev/null
+++ b/db/dist/s_brew_dsp
@@ -0,0 +1,65 @@
+#!/bin/sh -
+# $Id: s_brew_dsp,v 1.3 2007/02/22 17:03:24 bostic Exp $
+#
+# Build BREW .dsp files.
+
+. RELEASE
+
+SRCFILES=srcfiles.in
+
+s=/tmp/__db_a
+t=/tmp/__db_b
+
+trap 'rm -f $s $t; exit 0' 0
+trap 'rm -f $s $t; exit 1' 1 2 3 13 15
+
+# Build the bdb_brew.dsp file.
+dsp()
+{
+ grep -w brew $SRCFILES | awk '{print $1}' > $s
+
+ (cat brew/bdb_brew.dsp;
+ for i in `cat $s`; do
+ echo '# Begin Source File '
+ echo "SOURCE=..\\$i "
+ echo '# End Source File '
+ done | sed 's/\//\\/g'
+ echo '# End Group '
+ echo '# End Target '
+ echo '# End Project ') > $t
+
+ f=../build_brew/bdb_brew.dsp
+ cmp $t $f > /dev/null 2>&1 ||
+ (echo "Building $f" && rm -f $f && cp $t $f && chmod 444 $f)
+}
+
+# Build the bdbread.mak applet example file.
+mak()
+{
+ (echo -n 'OBJS =bdbread.o AEEModGen.o AEEAppGen.o'
+ grep -w brew $SRCFILES |
+ awk '{print $1}' |
+ sed -e 's/.*\///' \
+ -e 's/\.c/\.o/g' |
+ awk '{printf " %s", $1}'
+ echo " ") > $s
+
+ sed -e '/LIST OF OBJECT FILES/{' \
+ -e "r $s" \
+ -e 'd' \
+ -e '}' < brew/bdbread.mak > $t
+
+ for i in `grep -w brew $SRCFILES | awk '{print $1}'`; do
+ echo "`basename $i .c`.o: ../$i "
+ done |
+ sed 's/\//\\/g' >> $t
+
+ f=../build_brew/bdbread.mak
+ cmp $t $f > /dev/null 2>&1 ||
+ (echo "Building $f" && rm -f $f && cp $t $f && chmod 444 $f)
+}
+
+dsp
+mak
+
+exit 0
diff --git a/db/dist/s_brew_posix b/db/dist/s_brew_posix
new file mode 100644
index 000000000..dce2953ff
--- /dev/null
+++ b/db/dist/s_brew_posix
@@ -0,0 +1,107 @@
+#!/bin/sh -
+# $Id: s_brew_posix,v 12.2 2006/11/09 14:11:49 bostic Exp $
+#
+# Build the BREW files on a POSIX system.
+
+s=/tmp/__db_a
+t=/tmp/__db_b
+
+trap 'rm -f $s $t ; exit 0' 0
+trap 'rm -f $s $t ; exit 1' 1 2 3 13 15
+
+# Temporary directory to build in.
+test -d ../build_brew_x || mkdir ../build_brew_x
+
+# Copy in db_config.h.
+#
+# We do have system include files in the POSIX build.
+f=../build_brew_x/db_config.h
+cat <<ENDOFSEDTEXT > $s
+/HAVE_SYSTEM_INCLUDE_FILES/{
+ a\\
+#define HAVE_SYSTEM_INCLUDE_FILES 1
+}
+ENDOFSEDTEXT
+sed -f $s < ../build_brew/db_config.h > $t
+cmp $t $f > /dev/null 2>&1 ||
+ (echo "Building $f" && rm -f $f && cp $t $f && chmod 444 $f)
+
+# Copy in db.h.
+f=../build_brew_x/db.h
+sed -e '/typedef.*[ ]FILE;/s/.*/#define IFile FILE/' \
+ -e '/typedef.*[ ]off_t;/d' \
+ -e '/typedef.*[ ]time_t;/d' \
+ -e '/typedef.*[ ]uintptr_t;/d' \
+ -e '/#include.<AEEFile.h>/d' \
+ < ../build_brew/db.h > $t
+
+cmp $t $f > /dev/null 2>&1 ||
+ (echo "Building $f" && rm -f $f && cp $t $f && chmod 444 $f)
+
+# Copy in brew_db.h
+f=../build_brew_x/brew_db.h
+cmp brew/brew_posix.h $f > /dev/null 2>&1 ||
+ (echo "Building $f" && rm -f $f && cp brew/brew_posix.h $f && chmod 444 $f)
+
+# Copy in clib_port.h
+#
+# Delete all references to isalpha, isdigit, isprint, isspace.
+f=../build_brew_x/clib_port.h
+sed -e '/HAVE_ISALPHA/,/#endif/d' \
+ -e '/HAVE_ISDIGIT/,/#endif/d' \
+ -e '/HAVE_ISPRINT/,/#endif/d' \
+ -e '/HAVE_ISSPACE/,/#endif/d' < ../build_brew/clib_port.h > $t
+cmp $t $f > /dev/null 2>&1 ||
+ (echo "Building $f" && rm -f $f && cp $t $f && chmod 444 $f)
+
+# Copy in remaining files.
+for i in db_int.h errno.h; do
+ f=../build_brew_x/$i
+ cmp ../build_brew/$i $f > /dev/null 2>&1 ||
+ (echo "Building $f" &&
+ rm -f $f && cp ../build_brew/$i $f && chmod 444 $f)
+done
+
+# Build a Makefile for testing on a POSIX system.
+# $1 is srcfiles keyword
+# $2 is Makefile name
+build_make()
+{
+ f=../build_brew_x/$2
+
+ (cat brew/brew_make.in &&
+ echo &&
+ echo '###################################################' &&
+ echo '# EVERYTHING BELOW THIS LINE IS GENERATED BY s_brew' &&
+ echo '##################################################' &&
+ echo 'OBJS=\' &&
+ grep -w $1 srcfiles.in |
+ awk '{print $1}' |
+ sed -e '/isalpha/d' \
+ -e '/isdigit/d' \
+ -e '/isprint/d' \
+ -e '/isspace/d' \
+ -e 's/.*\// /' \
+ -e 's/\.c$/.o/' \
+ -e '$!s/$/\\/' &&
+ echo &&
+ grep -w $1 srcfiles.in |
+ awk '{print $1}' |
+ sed -e '/isalpha/d' \
+ -e '/isdigit/d' \
+ -e '/isprint/d' \
+ -e '/isspace/d' \
+ -e 's/\.c$//' \
+ -e 's/.*/&.o: ..\/&.c/' \
+ -e 's/^[^\/]*\///' &&
+ echo &&
+ echo 'libdb.a: $(OBJS)' &&
+ echo ' ar cr $@ $(OBJS)') > $t
+
+ cmp $t $f > /dev/null 2>&1 ||
+ (echo "Building $f" && rm -f $f && cp $t $f && chmod 444 $f)
+}
+
+build_make brew Makefile
+
+exit 0
diff --git a/db/dist/s_config b/db/dist/s_config
index 194df83a5..256ed3d38 100755
--- a/db/dist/s_config
+++ b/db/dist/s_config
@@ -1,5 +1,5 @@
#!/bin/sh -
-# $Id: s_config,v 12.1 2005/08/16 05:19:18 mjc Exp $
+# $Id: s_config,v 12.2 2007/04/18 14:47:26 bostic Exp $
#
# Build the autoconfiguration files.
@@ -8,7 +8,7 @@ trap 'rm -f aclocal.m4 ; exit 0' 0 1 2 3 13 15
. ./RELEASE
echo "autoconf: building aclocal.m4..."
-cat aclocal/*.ac aclocal_java/*.ac > aclocal.m4
+cat aclocal/*.m4 aclocal_java/*.m4 > aclocal.m4
echo "autoconf: running autoheader to build config.hin..."
rm -f config.hin
diff --git a/db/dist/s_crypto b/db/dist/s_crypto
index 8dc736207..12dabcfd0 100755
--- a/db/dist/s_crypto
+++ b/db/dist/s_crypto
@@ -1,5 +1,5 @@
#!/bin/sh -
-# $Id: s_crypto,v 12.1 2005/12/01 03:24:24 bostic Exp $
+# $Id: s_crypto,v 12.2 2007/06/13 20:16:04 bostic Exp $
# Remove crypto from the DB source tree.
@@ -37,9 +37,11 @@ chmod 664 $f
f=srcfiles.in
chmod 664 $f
+f=srcfiles.in
+r=`egrep crypto/crypto.c $f | awk 'BEGIN { FS="\t*" } { print $2 }'`
(echo 'g/^crypto\//d' &&
echo '/crypto_stub\.c/' &&
- echo 's/small/dynamic small static vx/' &&
+ echo "s/\$/ $r/" &&
echo 'w' &&
echo 'q') | ed $f
diff --git a/db/dist/s_cscope b/db/dist/s_cscope
new file mode 100644
index 000000000..619f104b5
--- /dev/null
+++ b/db/dist/s_cscope
@@ -0,0 +1,17 @@
+#!/bin/sh -
+# $Id: s_cscope,v 12.2 2007/04/20 18:32:27 bostic Exp $
+#
+# Build cscope files.
+
+(
+echo ../dbinc/*.in ../dbinc/*.h ../dbinc_auto/*.h;
+cat srcfiles.in |
+sed -e '/^#/d' \
+ -e '/^$/d' \
+ -e 's/^/..\//' \
+ -e '/\/db_server_clnt.c/d' \
+ -e '/\/db_server_svc.c/d' \
+ -e '/\/db_server_xdr.c/d' \
+ -e '/\/csv_local.c/d' \
+ -e '/\/gen_db_server.c/d' |
+awk '{print $1}') | cscope -bkUu -i-
diff --git a/db/dist/s_include b/db/dist/s_include
index 57a048ed8..b9859e2d5 100755
--- a/db/dist/s_include
+++ b/db/dist/s_include
@@ -1,5 +1,5 @@
#!/bin/sh -
-# $Id: s_include,v 12.3 2006/04/27 13:40:36 mjc Exp $
+# $Id: s_include,v 12.8 2007/02/22 17:52:51 bostic Exp $
#
# Build the automatically generated function prototype files.
@@ -77,11 +77,14 @@ for i in db btree clib common crypto dbreg env fileops hash hmac \
head "_${i}_ext_h_" > $i_pfile
if [ $i = os ] ; then
- f=`ls ../$i/*.c ../os_windows/*.c`
+ f=`ls ../$i/*.c \
+ ../os_brew/*.c ../os_qnx/*.c ../os_vxworks/*.c ../os_windows/*.c`
elif [ $i = rpc_server ] ; then
f=`ls ../$i/c/*.c`
elif [ $i = crypto ] ; then
f=`ls ../$i/*.c ../$i/*/*.c`
+ elif [ $i = env ] ; then
+ f=`ls ../$i/*.c ../repmgr/repmgr_stub.c`
else
f=`ls ../$i/*.c`
fi
diff --git a/db/dist/s_java_stat b/db/dist/s_java_stat
index 67fa917f8..54ce587ee 100755
--- a/db/dist/s_java_stat
+++ b/db/dist/s_java_stat
@@ -1,5 +1,5 @@
#!/bin/sh -
-# $Id: s_java_stat,v 12.14 2006/08/24 14:45:35 bostic Exp $
+# $Id: s_java_stat,v 12.20 2007/07/06 00:22:52 mjc Exp $
#
# Build the Java files.
@@ -8,8 +8,7 @@ msgjava="/*-
*
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*/"
s=/tmp/__java.sed
@@ -17,7 +16,7 @@ t=/tmp/__java
c=/tmp/__javajnic
u1=/tmp/__javautil1
u2=/tmp/__javautil2
-trap 'rm -f $t $c $u1 $u2; exit 0' 0 1 2 3 13 15
+trap 'rm -f $s $t $c $u1 $u2; exit 0' 0 1 2 3 13 15
# Script to convert DB C structure declarations into Java declarations.
jclass()
@@ -89,9 +88,9 @@ EOF
-e 's/_n([b-df-hj-np-tv-z]|upgrade)/_num_$1/;' \
-e 's/_(min|max)([a-z])/_$1_$2/;' \
-e 's/_mvcc/_multiversion/;' \
- -e 's/_cnt/_count_/;' \
+ -e 's/cnt/_count_/;' \
-e 's/_pg/_pages_/;' \
- -e 's/(count|flag|free|page|percent|size|timeout)/_$1/g;' \
+ -e 's/(count|flag|free|page|percent|size|sync|timeout)/_$1/g;' \
-e 's/([^p])(id\()/$1_$2/g;' \
-e 's/__*/_/g;' \
-e 's/_(.)/\U$1/g' \
@@ -320,6 +319,7 @@ stat_class mpool_stat CacheStats
stat_class mutex_stat MutexStats
stat_class qam_stat QueueStats " extends DatabaseStats"
stat_class rep_stat ReplicationStats
+stat_class repmgr_stat ReplicationManagerStats
stat_class seq_stat SequenceStats
# Build TransactionStats.java - special because of embedded Active class
diff --git a/db/dist/s_je2db b/db/dist/s_je2db
index a5c64197e..12fe822ce 100644
--- a/db/dist/s_je2db
+++ b/db/dist/s_je2db
@@ -66,7 +66,7 @@ done
cd "$JETEST"
for f in `find . -name '*.java' | grep $DIRMATCH | grep -v $EXCLUDETESTS` ; do
#echo $DBTEST/$f
- sed -e "$E1" < $f > $DBTEST/$f.sed.out
+ sed -e "$E1" -e "$E4" < $f > $DBTEST/$f.sed.out
diff -q -I "\$\Id:" $DBTEST/$f $DBTEST/$f.sed.out || \
mv -f $DBTEST/$f.sed.out $DBTEST/$f
rm -f $DBTEST/$f.sed.out
@@ -78,7 +78,7 @@ if [ $COPY_EXAMPLES -eq 1 ] ; then
cd "$JEEXAMPLES"
for f in `find . -name '*.java' | grep $DIRMATCH` ; do
#echo $DBEXAMPLES/$f
- sed -e "$E1" < $f > $DBEXAMPLES/$f.sed.out
+ sed -e "$E1" -e "$E4" < $f > $DBEXAMPLES/$f.sed.out
diff -q -I "\$\Id:" $DBEXAMPLES/$f $DBEXAMPLES/$f.sed.out || \
mv -f $DBEXAMPLES/$f.sed.out $DBEXAMPLES/$f
rm -f $DBEXAMPLES/$f.sed.out
diff --git a/db/dist/s_readme b/db/dist/s_readme
index afa8c5b60..cb3cbef2f 100755
--- a/db/dist/s_readme
+++ b/db/dist/s_readme
@@ -1,5 +1,5 @@
#!/bin/sh -
-# $Id: s_readme,v 12.1 2006/08/24 14:45:35 bostic Exp $
+# $Id: s_readme,v 12.2 2006/11/01 00:52:45 bostic Exp $
#
# Build the README.
@@ -15,9 +15,9 @@ trap 'rm -f $t; exit 0' 0 1 2 3 13 15
cat << END_OF_README>$t
$DB_VERSION_STRING
-This is version $DB_VERSION_MAJOR.$DB_VERSION_MINOR.$DB_VERSION_PATCH of Berkeley DB from Oracle Corporation. To view
-the release and installation documentation, load the distribution file
-docs/index.html into your web browser.
+This is version $DB_VERSION_MAJOR.$DB_VERSION_MINOR.$DB_VERSION_PATCH of Berkeley DB from Oracle. To view release and
+installation documentation, load the distribution file docs/index.html
+into your web browser.
END_OF_README
f=../README
diff --git a/db/dist/s_s60 b/db/dist/s_s60
new file mode 100644
index 000000000..7c1302826
--- /dev/null
+++ b/db/dist/s_s60
@@ -0,0 +1,117 @@
+#!/bin/sh -
+# $Id: s_s60,v 12.4 2007/07/06 16:29:16 bostic Exp $
+#
+# Build the S60 files.
+
+msgc="/* DO NOT EDIT: automatically built by dist/s_s60. */"
+
+. RELEASE
+
+s=/tmp/__db_a
+t=/tmp/__db_b
+
+trap 'rm -f $s $t ; exit 0' 0
+trap 'rm -f $s $t ; exit 1' 1 2 3 13 15
+
+# Build the S60 db.h.
+cat <<ENDOFSEDTEXT > $s
+/@inttypes_h_decl@/d
+/@stdint_h_decl@/d
+s/@stddef_h_decl@/#include <stddef.h>/
+/@unistd_h_decl@/d
+s/@thread_h_decl@/#include <pthread.h>/
+/@u_int8_decl@/d
+/@int16_decl@/d
+/@u_int16_decl@/d
+/@int32_decl@/d
+/@u_int32_decl@/d
+/@int64_decl@/d
+/@u_int64_decl@/d
+/@u_char_decl@/d
+/@u_int_decl@/d
+/@u_long_decl@/d
+/@u_short_decl@/d
+s/@uintmax_t_decl@/typedef unsigned long uintmax_t;/
+/@uintptr_t_decl@/d
+/@FILE_t_decl@/d
+/@off_t_decl@/d
+/@pid_t_decl@/d
+/@size_t_decl@/d
+/@ssize_t_decl@/d
+/@time_t_decl@/d
+s/@db_seq_decl@/typedef int32_t db_seq_t;/
+s/@db_threadid_t_decl@/typedef pthread_t db_threadid_t;/
+s/@DB_VERSION_MAJOR@/$DB_VERSION_MAJOR/
+s/@DB_VERSION_MINOR@/$DB_VERSION_MINOR/
+s/@DB_VERSION_PATCH@/$DB_VERSION_PATCH/
+s/@DB_VERSION_STRING@/"$DB_VERSION_STRING"/
+s/@DB_VERSION_UNIQUE_NAME@//
+s/@DB_CONST@//
+s/@DB_PROTO1@/#undef __P/
+s/@DB_PROTO2@/#define __P(protos) protos/
+/@platform_header@/d
+/@platform_footer@/d
+ENDOFSEDTEXT
+(echo "$msgc" &&
+ sed -f $s ../dbinc/db.in &&
+ cat ../dbinc_auto/ext_prot.in) > $t
+test `egrep '@.*@' $t` && {
+ egrep '@.*@' $t
+ echo 'Unexpanded autoconf variables found in S60 db.h.'
+ exit 1
+}
+f=../build_s60/db.h
+cmp $t $f > /dev/null 2>&1 ||
+ (echo "Building $f" && rm -f $f && cp $t $f && chmod 444 $f)
+
+# Build the S60 db_int.h.
+cat <<ENDOFSEDTEXT > $s
+s/@PATH_SEPARATOR@/\\\\\\\\\/:/
+s/@db_int_def@//
+ENDOFSEDTEXT
+(echo "$msgc" && sed -f $s ../dbinc/db_int.in) > $t
+test `egrep '@.*@' $t` && {
+ egrep '@.*@' $t
+ echo 'Unexpanded autoconf variables found in S60 db_int.h.'
+ exit 1
+}
+f=../build_s60/db_int.h
+cmp $t $f > /dev/null 2>&1 ||
+ (echo "Building $f" && rm -f $f && cp $t $f && chmod 444 $f)
+
+# Build the S60 db_config.h
+# We don't fail, but we complain if the s60_config.in file isn't up-to-date.
+check_config()
+{
+ egrep '^#undef' config.hin | awk '{print $2}' | sort > $s
+ (egrep '#undef' $1 | awk '{print $3}'
+ egrep '^#define' $1 | awk '{print $2}') | sort > $t
+ cmp $s $t > /dev/null || {
+ echo "config.hin and $1 differ"
+ echo "<<< config.hin >>> $1"
+ diff $s $t
+ }
+}
+check_config s60/s60_config.in
+f=../build_s60/db_config.h
+(echo "$msgc" &&
+ sed "s/__EDIT_DB_VERSION__/$DB_VERSION/" s60/s60_config.in) > $t
+cmp $t $f > /dev/null 2>&1 ||
+ (echo "Building $f" && rm -f $f && cp $t $f && chmod 444 $f)
+
+# Build the S60 clib_port.h.
+cat <<ENDOFSEDTEXT > $s
+/@INT64_FMT@/d
+/@UINT64_FMT@/d
+ENDOFSEDTEXT
+sed -f $s clib_port.in > $t
+test `egrep '@.*@' $t` && {
+ egrep '@.*@' $t
+ echo 'Unexpanded autoconf variables found in S60 clib_port.h.'
+ exit 1
+}
+f=../build_s60/clib_port.h
+cmp $t $f > /dev/null 2>&1 ||
+ (echo "Building $f" && rm -f $f && cp $t $f && chmod 444 $f)
+
+exit 0
diff --git a/db/dist/s_s60_mmp b/db/dist/s_s60_mmp
new file mode 100644
index 000000000..4fe05db3d
--- /dev/null
+++ b/db/dist/s_s60_mmp
@@ -0,0 +1,36 @@
+#!/bin/sh -
+# $Id: s_s60_mmp,v 12.3 2007/07/06 16:29:16 bostic Exp $
+#
+# Build BREW .dsp files.
+
+. RELEASE
+
+SRCFILES=srcfiles.in
+
+s=/tmp/__db_a
+t=/tmp/__db_b
+
+trap 'rm -f $s $t; exit 0' 0
+trap 'rm -f $s $t; exit 1' 1 2 3 13 15
+
+# Build the bdb_s60.mmp file.
+mmp()
+{
+
+ (cat s60/s60.mmp.1;
+ echo;
+ grep -w s60 $SRCFILES | awk '{print $1}' |
+ sed -e 's/^/SOURCE ..\\/' \
+ -e 's/\//\\/g' |
+ sort;
+ echo;
+ cat s60/s60.mmp.2) > $t
+
+ f=../build_s60/bdb_s60.mmp
+ cmp $t $f > /dev/null 2>&1 ||
+ (echo "Building $f" && rm -f $f && cp $t $f && chmod 444 $f)
+}
+
+mmp
+
+exit 0
diff --git a/db/dist/s_s60_posix b/db/dist/s_s60_posix
new file mode 100644
index 000000000..4ab74837d
--- /dev/null
+++ b/db/dist/s_s60_posix
@@ -0,0 +1,65 @@
+#!/bin/sh -
+# $Id: s_s60_posix,v 1.2 2007/07/06 16:29:16 bostic Exp $
+#
+# Build the S60 files on a POSIX system.
+
+s=/tmp/__db_a
+t=/tmp/__db_b
+
+trap 'rm -f $s $t ; exit 0' 0
+trap 'rm -f $s $t ; exit 1' 1 2 3 13 15
+
+# Temporary directory to build in.
+test -d ../build_s60_x || mkdir ../build_s60_x
+
+# Copy in db.h.
+f=../build_s60_x/db.h
+sed -e '/typedef.*[ ]off_t;/d' \
+ -e '/typedef.*[ ]time_t;/d' \
+ -e '/typedef.*[ ]uintptr_t;/d' \
+ < ../build_s60/db.h > $t
+cmp $t $f > /dev/null 2>&1 ||
+ (echo "Building $f" && rm -f $f && cp $t $f && chmod 444 $f)
+
+# Copy in common files.
+for i in clib_port.h db_config.h db_int.h; do
+ f=../build_s60_x/$i
+ cmp ../build_s60/$i $f > /dev/null 2>&1 ||
+ (echo "Building $f" &&
+ rm -f $f && cp ../build_s60/$i $f && chmod 444 $f)
+done
+
+# Build a Makefile for testing on a POSIX system.
+# $1 is srcfiles keyword
+# $2 is Makefile name
+build_make()
+{
+ (cat s60/s60_make.in &&
+ echo &&
+ echo '###################################################' &&
+ echo '# EVERYTHING BELOW THIS LINE GENERATED BY s_s60_posix' &&
+ echo '##################################################' &&
+ echo 'OBJS=\' &&
+ grep -w $1 srcfiles.in |
+ awk '{print $1}' |
+ sed -e 's/.*\// /' \
+ -e 's/\.c$/.o/' \
+ -e '$!s/$/\\/' &&
+ echo &&
+ grep -w $1 srcfiles.in |
+ awk '{print $1}' |
+ sed -e 's/\.c$//' \
+ -e 's/.*/&.o: ..\/&.c/' \
+ -e 's/^[^\/]*\///' &&
+ echo &&
+ echo 'libdb.a: $(OBJS)' &&
+ echo ' ar cr $@ $(OBJS)') > $t
+
+ f=../build_s60_x/$2
+ cmp $t $f > /dev/null 2>&1 ||
+ (echo "Building $f" && rm -f $f && cp $t $f && chmod 444 $f)
+}
+
+build_make s60 Makefile
+
+exit 0
diff --git a/db/dist/s_symlink b/db/dist/s_symlink
index 9625e0134..14124c283 100755
--- a/db/dist/s_symlink
+++ b/db/dist/s_symlink
@@ -1,5 +1,5 @@
#!/bin/sh -
-# $Id: s_symlink,v 12.5 2006/09/13 17:51:34 bostic Exp $
+# $Id: s_symlink,v 12.9 2007/07/06 16:29:16 bostic Exp $
echo 'Creating Berkeley DB source tree symbolic links...'
@@ -19,6 +19,7 @@ build db/tags ../dist/tags
build db185/tags ../dist/tags
build db_archive/tags ../dist/tags
build db_checkpoint/tags ../dist/tags
+build db_codegen/tags ../dist/tags
build db_deadlock/tags ../dist/tags
build db_dump/tags ../dist/tags
build db_dump185/tags ../dist/tags
@@ -47,6 +48,8 @@ build mp/tags ../dist/tags
build mutex/tags ../dist/tags
build os/tags ../dist/tags
build os_brew/tags ../dist/tags
+build os_qnx/tags ../dist/tags
+build os_s60/tags ../dist/tags
build os_vxworks/tags ../dist/tags
build os_windows/tags ../dist/tags
build qam/tags ../dist/tags
diff --git a/db/dist/s_tags b/db/dist/s_tags
index ff59d826e..430b59e44 100755
--- a/db/dist/s_tags
+++ b/db/dist/s_tags
@@ -1,5 +1,5 @@
#!/bin/sh -
-# $Id: s_tags,v 12.2 2006/04/23 15:58:33 bostic Exp $
+# $Id: s_tags,v 12.3 2006/12/21 14:21:40 bostic Exp $
#
# Build tags files.
@@ -25,6 +25,7 @@ files=`echo ../dbinc/*.h \
../mp/*.[ch] \
../mutex/*.[ch] \
../os/*.[ch] \
+ ../os_qnx/*.[ch] \
../qam/*.[ch] \
../rep/*.[ch] \
../repmgr/*.[ch] \
diff --git a/db/dist/s_tcl b/db/dist/s_tcl
deleted file mode 100755
index 7350e9a49..000000000
--- a/db/dist/s_tcl
+++ /dev/null
@@ -1,53 +0,0 @@
-#!/bin/sh -
-# $Id: s_tcl,v 1.14 2000/11/09 19:24:07 sue Exp $
-#
-# Build the Tcl test files.
-
-msgshb="# DO NOT EDIT BELOW THIS LINE: automatically built by dist/s_tcl."
-
-. RELEASE
-
-f=../test/include.tcl
-echo "Building $f"
-rm -f $f
-(echo "set tclsh_path @TCL_TCLSH@" && \
- echo "set tcllib .libs/libdb_tcl-@DB_VERSION_MAJOR@.@DB_VERSION_MINOR@.@SOSUFFIX@" && \
- echo "set rpc_server localhost" && \
- echo "set rpc_path ." && \
- echo "set test_path @srcdir@/../test" && \
- echo "" && \
- echo "set KILL \"@db_cv_path_kill@\"" && \
- echo "" && \
- echo "$msgshb" && \
- echo "" && \
- echo "global dict" && \
- echo "global testdir" && \
- echo "global util_path" && \
- echo "set testdir ./TESTDIR" && \
- echo "set rpc_testdir \$rpc_path/TESTDIR" && \
- echo "" && \
- echo "global is_hp_test" && \
- echo "global is_qnx_test" && \
- echo "global is_windows_test") > $f
-chmod 444 $f
-
-f=../build_win32/include.tcl
-echo "Building $f"
-rm -f $f
-(echo "set tclsh_path SET_YOUR_TCLSH_PATH" && \
- echo "set test_path ../test" && \
- echo "set tcllib ./Debug/libdb_tcl${DB_VERSION_MAJOR}${DB_VERSION_MINOR}d.dll" && \
- echo "" && \
- echo "set KILL ./dbkill.exe" && \
- echo "" && \
- echo "$msgshb" && \
- echo "" && \
- echo "global dict" && \
- echo "global testdir" && \
- echo "global util_path" && \
- echo "set testdir ./TESTDIR" && \
- echo "" && \
- echo "global is_hp_test" && \
- echo "global is_qnx_test" && \
- echo "global is_windows_test") > $f
-chmod 444 $f
diff --git a/db/dist/s_vxworks b/db/dist/s_vxworks
index ff974e676..814bfb448 100755
--- a/db/dist/s_vxworks
+++ b/db/dist/s_vxworks
@@ -1,5 +1,5 @@
#!/bin/sh -
-# $Id: s_vxworks,v 12.13 2006/09/13 16:57:49 bostic Exp $
+# $Id: s_vxworks,v 12.19 2007/05/24 13:16:50 bostic Exp $
#
# Build the VxWorks files.
@@ -16,7 +16,7 @@ vxsmallfiles=/tmp/__db_e
trap 'rm -f $s $t $u $vxfilelist $vxsmallfiles ; exit 0' 0
trap 'rm -f $s $t $u $vxfilelist $vxsmallfiles ; exit 1' 1 2 3 13 15
-# Build the VxWorks automatically generated files.
+# Build the VxWorks db.h.
cat <<ENDOFSEDTEXT > $s
/extern "C" {/{
n
@@ -41,14 +41,18 @@ s/@u_int32_decl@/typedef unsigned int u_int32_t;/
s/@int64_decl@//
s/@u_int64_decl@/typedef unsigned long long u_int64_t;/
/@u_char_decl@/d
-/@u_short_decl@/d
/@u_int_decl@/d
/@u_long_decl@/d
-/@ssize_t_decl@/d
+/@u_short_decl@/d
s/@uintmax_t_decl@/typedef unsigned long uintmax_t;/
s/@uintptr_t_decl@/typedef unsigned long uintptr_t;/
-s/@db_seq_decl@/typedef int db_seq_t;/
+/@FILE_t_decl@/d
+/@off_t_decl@/d
/@pid_t_decl@/d
+/@size_t_decl@/d
+/@ssize_t_decl@/d
+/@time_t_decl@/d
+s/@db_seq_decl@/typedef int db_seq_t;/
s/@db_threadid_t_decl@/typedef uintmax_t db_threadid_t;/
s/@DB_VERSION_MAJOR@/$DB_VERSION_MAJOR/
s/@DB_VERSION_MINOR@/$DB_VERSION_MINOR/
@@ -73,11 +77,15 @@ f=../build_vxworks/db.h
cmp $t $f > /dev/null 2>&1 ||
(echo "Building $f" && rm -f $f && cp $t $f && chmod 444 $f)
+# Build the VxWorks db_int.h.
cat <<ENDOFSEDTEXT > $s
-s/@INT64_FMT@/#define INT64_FMT "%lld"/
-s/@UINT64_FMT@/#define UINT64_FMT "%llu"/
s/@PATH_SEPARATOR@/\/\\\\\\\\/
s/@db_int_def@//
+/#ifdef.*HAVE_SYSTEM_INCLUDE_FILES/i\\
+#include "vxWorks.h"
+/#endif.*HAVE_SYSTEM_INCLUDE_FILES/a\\
+#include "clib_port.h"\\
+#include "db.h"
ENDOFSEDTEXT
(echo "$msgc" && sed -f $s ../dbinc/db_int.in) > $t
test `egrep '@.*@' $t` && {
@@ -89,15 +97,14 @@ f=../build_vxworks/db_int.h
cmp $t $f > /dev/null 2>&1 ||
(echo "Building $f" && rm -f $f && cp $t $f && chmod 444 $f)
-# Build the VxWorks db_config.h file.
+# Build the VxWorks db_config.h.
# We don't fail, but we complain if the vx_config.in file isn't up-to-date.
check_config()
{
- egrep '^#undef' config.hin |
- awk '{print $2}' | sed '/^SIZEOF_/d' | sort > $s
+ egrep '^#undef' config.hin | awk '{print $2}' | sort > $s
(egrep '#undef' $1 | awk '{print $3}'
egrep '^#define' $1 | awk '{print $2}') | sort > $t
- cmp $s $t || {
+ cmp $s $t > /dev/null || {
echo "config.hin and $1 differ"
echo "<<< config.hin >>> $1"
diff $s $t
@@ -109,6 +116,7 @@ f=../build_vxworks/db_config.h
cmp $t $f > /dev/null 2>&1 ||
(echo "Building $f" && rm -f $f && cp $t $f && chmod 444 $f)
+# Build the VxWorks db_config_small.h.
f=../build_vxworks/db_config_small.h
(echo "$msgc" &&
sed -e "s/__EDIT_DB_VERSION__/$DB_VERSION/" \
@@ -122,9 +130,20 @@ f=../build_vxworks/db_config_small.h
cmp $t $f > /dev/null 2>&1 ||
(echo "Building $f" && rm -f $f && cp $t $f && chmod 444 $f)
+# Build the VxWorks clib_port.h.
+cat <<ENDOFSEDTEXT > $s
+s/@INT64_FMT@/#define INT64_FMT "%lld"/
+s/@UINT64_FMT@/#define UINT64_FMT "%llu"/
+ENDOFSEDTEXT
+sed -f $s clib_port.in > $t
+test `egrep '@.*@' $t` && {
+ egrep '@.*@' $t
+ echo 'Unexpanded autoconf variables found in VxWorks clib_port.h.'
+ exit 1
+}
f=../build_vxworks/clib_port.h
-cmp clib_port.h $f > /dev/null 2>&1 ||
- (echo "Building $f" && rm -f $f && cp clib_port.h $f && chmod 444 $f)
+cmp $t $f > /dev/null 2>&1 ||
+ (echo "Building $f" && rm -f $f && cp $t $f && chmod 444 $f)
# Build a sed script that will change a "standard" DB utility into
# VxWorks-compatible code.
@@ -174,12 +193,14 @@ ENDOFSEDTEXT
echo "s/^\($k(\)/$1_\1/g"
done
- # There is a special case the rules above don't catch:
+ # There are special cases the rules above don't catch:
+ # a feedback function used as an argument to dbenv->set_feedback
+ # a print_app_record function used as an argument to
+ # dbenv->set_app_dispatch.
# a txn_compare function used as an argument to qsort(3).
- # a print_app_record function used as argument to
- # dbenv->set_app_dispatch).
- echo "s/, txn_compare);/, db_stat_txn_compare);/"
+ echo "s/, feedback);/, db_recover_feedback);/"
echo "s/, print_app_record)) /, db_printlog_print_app_record)) /"
+ echo "s/, txn_compare);/, db_stat_txn_compare);/"
# We convert the ex_access sample into dbdemo for VxWorks.
echo 's/progname = "ex_access";/progname = "dbdemo";/'
@@ -229,7 +250,7 @@ util_one()
i="\$(PRJ_DIR)/../../$i"
fi
o="<BEGIN> FILE_$i"
-
+
echo "${o}_dependDone"
echo "FALSE"
echo "<END>"
diff --git a/db/dist/s_win32 b/db/dist/s_win32
deleted file mode 100755
index acdb92249..000000000
--- a/db/dist/s_win32
+++ /dev/null
@@ -1,153 +0,0 @@
-#!/bin/sh -
-# $Id: s_win32,v 1.37 2004/10/15 18:28:21 bostic Exp $
-#
-# Build Windows/32 include files.
-
-msgc="/* DO NOT EDIT: automatically built by dist/s_win32. */"
-msgw="; DO NOT EDIT: automatically built by dist/s_win32."
-
-. RELEASE
-
-s=/tmp/__db_a$$
-t=/tmp/__db_b$$
-rm -f $s $t
-
-trap 'rm -f $s $t ; exit 1' 1 2 3 13 15
-
-# Build the Win32 automatically generated files.
-cat <<ENDOFSEDTEXT > $s
-/@inttypes_h_decl@/d
-/@stdint_h_decl@/d
-s/@stddef_h_decl@/#include <stddef.h>/
-s/@u_int8_decl@/typedef unsigned char u_int8_t;/
-s/@int16_decl@/typedef short int16_t;/
-s/@u_int16_decl@/typedef unsigned short u_int16_t;/
-s/@int32_decl@/typedef int int32_t;/
-s/@u_int32_decl@/typedef unsigned int u_int32_t;/
-s/@int64_decl@/typedef __int64 int64_t;/
-s/@u_int64_decl@/typedef unsigned __int64 u_int64_t;/
-s/@db_seq_decl@/typedef int64_t db_seq_t;/
-/@u_char_decl@/{
- i\\
-#ifndef _WINSOCKAPI_
- s/@u_char_decl@/typedef unsigned char u_char;/
-}
-s/@u_short_decl@/typedef unsigned short u_short;/
-s/@u_int_decl@/typedef unsigned int u_int;/
-/@u_long_decl@/{
- s/@u_long_decl@/typedef unsigned long u_long;/
- a\\
-#endif
-}
-/@ssize_t_decl@/{
- i\\
-#ifdef _WIN64\\
-typedef int64_t ssize_t;\\
-#else\\
-typedef int32_t ssize_t;\\
-#endif
- d
-}
-s/@uintmax_t_decl@/typedef u_int64_t uintmax_t;/
-/@uintptr_t_decl@/{
- i\\
-#ifdef _WIN64\\
-typedef u_int64_t uintptr_t;\\
-#else\\
-typedef u_int32_t uintptr_t;\\
-#endif
- d
-}
-s/@DB_VERSION_MAJOR@/$DB_VERSION_MAJOR/
-s/@DB_VERSION_MINOR@/$DB_VERSION_MINOR/
-s/@DB_VERSION_PATCH@/$DB_VERSION_PATCH/
-s/@DB_VERSION_STRING@/"$DB_VERSION_STRING"/
-s/@DB_VERSION_UNIQUE_NAME@//
-s/@DB_CONST@//
-s/@DB_PROTO1@/#undef __P/
-s/@DB_PROTO2@/#define __P(protos) protos/
-ENDOFSEDTEXT
-(echo "$msgc" &&
- sed -f $s ../dbinc/db.in &&
- cat ../dbinc_auto/ext_prot.in) > $t
-`egrep '@.*@' $t` && {
- echo 'Unexpanded autoconf variables found in Windows db.h.'
- exit 1
-}
-f=../build_win32/db.h
-cmp $t $f > /dev/null 2>&1 ||
- (echo "Building $f" && rm -f $f && cp $t $f && chmod 444 $f)
-f=../build_win64/db.h
-cmp $t $f > /dev/null 2>&1 ||
- (echo "Building $f" && rm -f $f && cp $t $f && chmod 444 $f)
-
-cat <<ENDOFSEDTEXT > $s
-s/@cxx_have_stdheaders@/#define HAVE_CXX_STDHEADERS 1/
-ENDOFSEDTEXT
-(echo "$msgc" && sed -f $s ../dbinc/db_cxx.in) > $t
-`egrep '@.*@' $t` && {
- echo 'Unexpanded autoconf variables found in Windows db_cxx.h.'
- exit 1
-}
-f=../build_win32/db_cxx.h
-cmp $t $f > /dev/null 2>&1 ||
- (echo "Building $f" && rm -f $f && cp $t $f && chmod 444 $f)
-f=../build_win64/db_cxx.h
-cmp $t $f > /dev/null 2>&1 ||
- (echo "Building $f" && rm -f $f && cp $t $f && chmod 444 $f)
-
-cat <<ENDOFSEDTEXT > $s
-s/@PATH_SEPARATOR@/\\\\\\\\\/:/
-s/@db_int_def@//
-ENDOFSEDTEXT
-(echo "$msgc" && sed -f $s ../dbinc/db_int.in) > $t
-`egrep '@.*@' $t` && {
- echo 'Unexpanded autoconf variables found in Windows db_int.h.'
- exit 1
-}
-f=../build_win32/db_int.h
-cmp $t $f > /dev/null 2>&1 ||
- (echo "Building $f" && rm -f $f && cp $t $f && chmod 444 $f)
-f=../build_win64/db_int.h
-cmp $t $f > /dev/null 2>&1 ||
- (echo "Building $f" && rm -f $f && cp $t $f && chmod 444 $f)
-
-f=../build_win32/db_config.h
-(echo "$msgc" && sed "s/__EDIT_DB_VERSION__/$DB_VERSION/" win_config.in) > $t
-cmp $t $f > /dev/null 2>&1 ||
- (echo "Building $f" && rm -f $f && cp $t $f && chmod 444 $f)
-f=../build_win64/db_config.h
-cmp $t $f > /dev/null 2>&1 ||
- (echo "Building $f" && rm -f $f && cp $t $f && chmod 444 $f)
-
-f=../build_win32/libdb.rc
-cat <<ENDOFSEDTEXT > $s
-s/%MAJOR%/$DB_VERSION_MAJOR/
-s/%MINOR%/$DB_VERSION_MINOR/
-s/%PATCH%/$DB_VERSION_PATCH/
-ENDOFSEDTEXT
-sed -f $s ../build_win32/libdbrc.src > $t
-cmp $t $f > /dev/null 2>&1 ||
- (echo "Building $f" && rm -f $f && cp $t $f && chmod 444 $f)
-
-f=../build_win32/libdb.def
-(echo $msgw &&
- echo &&
- echo EXPORTS;
-a=1
-for i in `sed -e '/^$/d' -e '/^#/d' win_exports.in`; do
- echo " $i @$a"
- a=`expr $a + 1`
-done) > $t
-cmp $t $f > /dev/null 2>&1 ||
- (echo "Building $f" && rm -f $f && cp $t $f && chmod 444 $f)
-
-f=../build_win32/win_db.h
-i=win_db.in
-cmp $i $f > /dev/null 2>&1 ||
- (echo "Building $f" && rm -f $f && cp $i $f && chmod 444 $f)
-f=../build_win64/win_db.h
-cmp $i $f > /dev/null 2>&1 ||
- (echo "Building $f" && rm -f $f && cp $i $f && chmod 444 $f)
-
-rm -f $s $t
diff --git a/db/dist/s_win32_dsp b/db/dist/s_win32_dsp
deleted file mode 100644
index 10e0ccc4b..000000000
--- a/db/dist/s_win32_dsp
+++ /dev/null
@@ -1,118 +0,0 @@
-#!/bin/sh -
-# $Id: s_win32_dsp,v 1.12 2004/08/20 15:01:06 mjc Exp $
-#
-# Build Windows/32 .dsp files.
-
-. RELEASE
-
-SRCFILES=srcfiles.in
-
-create_dsp()
-{
- projname="$1" # name of the .dsp file
- match="$2" # the string used to egrep the $sources file
- sources="$3" # a modified version of $SRCFILES to facilitate matches
- dsptemplate="$4" # overall template file for the .dsp
- srctemplate="$5" # template file for the src file fragments
-
- dspoutput=$BUILDDIR/$projname.dsp
-
- rm -f $dspoutput.insert
- for srcpath in `egrep "$match" $sources | sed -e 's/[ ].*//'`
- do
- # take the path name and break it up, converting / to \\.
- # so many backslashes needed because of shell quoting and
- # sed quoting -- we'll end up with two backslashes for every
- # forward slash, but we need that when feeding that to the
- # later sed command.
- set - `echo $srcpath | sed -e 's;\(.*\)/;../\\1 ;' \
- -e "s;$BUILDDIR;.;" \
- -e 's;/;\\\\\\\\;g'`
- srcdir="$1"
- srcfile="$2"
- sed -e "s/@srcdir@/$srcdir/g" \
- -e "s/@srcfile@/$srcfile/g" \
- < $srctemplate >> $dspoutput.insert
- done
- sed -e "/@SOURCE_FILES@/r$dspoutput.insert" \
- -e "/@SOURCE_FILES@/d" \
- -e "s/@project_name@/$projname/g" \
- -e "s/@DB_VERSION_MAJOR@/$DB_VERSION_MAJOR/g" \
- -e "s/@DB_VERSION_MINOR@/$DB_VERSION_MINOR/g" \
- < $dsptemplate > $dspoutput.new
-
- # Set the file mode to 644 because the VC++ IDE needs a writeable file
- # in our development environment.
- cmp $dspoutput.new $dspoutput > /dev/null 2>&1 ||
- (echo "Building $dspoutput" && rm -f $dspoutput &&
- cp $dspoutput.new $dspoutput && chmod 664 $dspoutput)
- rm -f $dspoutput.insert $dspoutput.new
-}
-
-TMPA=/tmp/swin32dsp$$a
-trap "rm -f $TMPA; exit 1" 1 2 3 15
-
-# create a copy of the srcfiles with comments and empty lines removed.
-# add a space at the end of each list of modules so that each module
-# can be unambiguously matched e.g. ' dynamic '
-sed -e "s/#.*$//" \
- -e "/^[ ]*$/d" \
- -e "s/[ ][ ]*/ /" \
- -e "s/[ ]*$//" \
- -e "/[ ]/!d" \
- -e "s/$/ /" < $SRCFILES > $TMPA
-
-# get a list of all modules mentioned
-#
-MODULES="`sed -e 's/^[^ ]* //' < $TMPA \
- | tr ' ' '\012' | sort | uniq`"
-
-for BUILDDIR in ../build_win32 ../build_win64
-do
- for module in $MODULES
- do
- case "$module" in
- dynamic )
- create_dsp db_dll " $module " $TMPA \
- $BUILDDIR/dynamic_dsp.src $BUILDDIR/srcfile_dsp.src
- ;;
- small )
- create_dsp db_small " $module " $TMPA \
- $BUILDDIR/small_dsp.src $BUILDDIR/srcfile_dsp.src
- ;;
- static )
- create_dsp db_static " $module " $TMPA \
- $BUILDDIR/static_dsp.src $BUILDDIR/srcfile_dsp.src
- ;;
- java )
- create_dsp db_java " $module " $TMPA \
- $BUILDDIR/java_dsp.src $BUILDDIR/srcfile_dsp.src
- ;;
- tcl )
- create_dsp db_tcl " $module " $TMPA \
- $BUILDDIR/tcl_dsp.src $BUILDDIR/srcfile_dsp.src
- ;;
- testutil )
- create_dsp db_test " $module " $TMPA \
- $BUILDDIR/db_test.src $BUILDDIR/srcfile_dsp.src
- ;;
- app=* )
- appname=`echo $module | sed -e 's/^app=//'`
- if [ -f $BUILDDIR/$appname.src ] ; then
- srcname=$BUILDDIR/$appname.src
- else
- srcname=$BUILDDIR/app_dsp.src
- fi
- create_dsp $appname " $module " $TMPA \
- $srcname $BUILDDIR/srcfile_dsp.src
- ;;
- vx|vxsmall )
- ;;
- * )
- echo "s_win32_dsp: module name $module in $SRCFILES is unknown type"
- ;;
- esac
- done
-done
-
-rm -f $TMPA
diff --git a/db/dist/s_windows b/db/dist/s_windows
index b5f46eabf..56f9f6ddf 100755
--- a/db/dist/s_windows
+++ b/db/dist/s_windows
@@ -1,5 +1,5 @@
#!/bin/sh -
-# $Id: s_windows,v 12.20 2006/07/13 06:19:45 mjc Exp $
+# $Id: s_windows,v 12.26 2007/05/24 13:16:50 bostic Exp $
#
# Build Windows include files.
@@ -14,7 +14,7 @@ rm -f $s $t
trap 'rm -f $s $t ; exit 1' 1 2 3 13 15
-# Build the Win32 automatically generated files.
+# Build the Windows db.h
cat <<ENDOFSEDTEXT > $s
/@inttypes_h_decl@/d
/@stdint_h_decl@/d
@@ -29,8 +29,8 @@ s/@u_int32_decl@/typedef unsigned int u_int32_t;/
s/@int64_decl@/typedef __int64 int64_t;/
s/@u_int64_decl@/typedef unsigned __int64 u_int64_t;/
s/@db_seq_decl@/typedef int64_t db_seq_t;/
-s/@pid_t_decl@/typedef int pid_t;/
s/@db_threadid_t_decl@/typedef u_int32_t db_threadid_t;/
+s/@pid_t_decl@/typedef int pid_t;/
/@u_char_decl@/{
i\\
#ifndef _WINSOCKAPI_
@@ -43,6 +43,8 @@ s/@u_int_decl@/typedef unsigned int u_int;/
a\\
#endif
}
+/@FILE_t_decl@/d
+/@size_t_decl@/d
/@ssize_t_decl@/{
i\\
#ifdef _WIN64\\
@@ -52,6 +54,7 @@ typedef int32_t ssize_t;\\
#endif
d
}
+/@time_t_decl@/d
s/@uintmax_t_decl@/typedef u_int64_t uintmax_t;/
/@uintptr_t_decl@/{
i\\
@@ -62,6 +65,16 @@ typedef u_int32_t uintptr_t;\\
#endif
d
}
+/@off_t_decl@/{
+ i\\
+/*\\
+\ * Windows defines off_t to long (i.e., 32 bits). We need to pass 64-bit\\
+\ * file offsets, so we declare our own.\\
+\ */\\
+#define off_t __db_off_t\\
+typedef int64_t off_t;
+ d
+}
/@platform_header@/{
i\\
/*\\
@@ -102,6 +115,11 @@ s/@DB_CONST@//
s/@DB_PROTO1@/#undef __P/
s/@DB_PROTO2@/#define __P(protos) protos/
ENDOFSEDTEXT
+# The db.h, db_int.h files are identical between Windows and WinCE.
+# This may change in the future, for now have the script copy
+# the headers into the build_wince directory.
+# WinCE does not support the C++ API, so don't need to copy db_cxx.h
+
(echo "$msgc" &&
sed -f $s ../dbinc/db.in &&
cat ../dbinc_auto/ext_prot.in) > $t
@@ -113,7 +131,11 @@ test `egrep '@.*@' $t` && {
f=../build_windows/db.h
cmp $t $f > /dev/null 2>&1 ||
(echo "Building $f" && rm -f $f && cp $t $f && chmod 444 $f)
+f=../build_wince/db.h
+cmp $t $f > /dev/null 2>&1 ||
+ (echo "Building $f" && rm -f $f && cp $t $f && chmod 444 $f)
+# Build the Windows db_cxx.h.
cat <<ENDOFSEDTEXT > $s
s/@cxx_have_stdheaders@/#define HAVE_CXX_STDHEADERS 1/
ENDOFSEDTEXT
@@ -127,9 +149,8 @@ f=../build_windows/db_cxx.h
cmp $t $f > /dev/null 2>&1 ||
(echo "Building $f" && rm -f $f && cp $t $f && chmod 444 $f)
+# Build the Windows db_int.h.
cat <<ENDOFSEDTEXT > $s
-s/@INT64_FMT@/#define INT64_FMT "%I64d"/
-s/@UINT64_FMT@/#define UINT64_FMT "%I64u"/
s/@PATH_SEPARATOR@/\\\\\\\\\/:/
s/@db_int_def@//
ENDOFSEDTEXT
@@ -142,16 +163,18 @@ test `egrep '@.*@' $t` && {
f=../build_windows/db_int.h
cmp $t $f > /dev/null 2>&1 ||
(echo "Building $f" && rm -f $f && cp $t $f && chmod 444 $f)
+f=../build_wince/db_int.h
+cmp $t $f > /dev/null 2>&1 ||
+ (echo "Building $f" && rm -f $f && cp $t $f && chmod 444 $f)
-# Build the Windows db_config.h file.
+# Build the Windows and WinCE db_config.h.
# We don't fail, but we complain if the win_config.in file isn't up-to-date.
check_config()
{
- egrep '^#undef' config.hin |
- awk '{print $2}' | sed '/^SIZEOF_/d' | sort > $s
+ egrep '^#undef' config.hin | awk '{print $2}' | sort > $s
(egrep '#undef' $1 | awk '{print $3}'
egrep '^#define' $1 | awk '{print $2}') | sed '/__STDC__/d' | sort > $t
- cmp $s $t || {
+ cmp $s $t > /dev/null || {
echo "config.hin and $1 differ"
echo "<<< config.hin >>> $1"
diff $s $t
@@ -162,7 +185,13 @@ f=../build_windows/db_config.h
(echo "$msgc" && sed "s/__EDIT_DB_VERSION__/$DB_VERSION/" win_config.in) > $t
cmp $t $f > /dev/null 2>&1 ||
(echo "Building $f" && rm -f $f && cp $t $f && chmod 444 $f)
+check_config wince_config.in
+f=../build_wince/db_config.h
+(echo "$msgc" && sed "s/__EDIT_DB_VERSION__/$DB_VERSION/" wince_config.in) > $t
+cmp $t $f > /dev/null 2>&1 ||
+ (echo "Building $f" && rm -f $f && cp $t $f && chmod 444 $f)
+# Build the Windows libdb.rc and libdb.def.
f=../build_windows/libdb.rc
cat <<ENDOFSEDTEXT > $s
s/%MAJOR%/$DB_VERSION_MAJOR/
@@ -172,7 +201,6 @@ ENDOFSEDTEXT
sed -f $s ../build_windows/libdbrc.src > $t
cmp $t $f > /dev/null 2>&1 ||
(echo "Building $f" && rm -f $f && cp $t $f && chmod 444 $f)
-
f=../build_windows/libdb.def
(echo $msgw &&
echo &&
@@ -185,13 +213,27 @@ done) > $t
cmp $t $f > /dev/null 2>&1 ||
(echo "Building $f" && rm -f $f && cp $t $f && chmod 444 $f)
-f=../build_windows/win_db.h
-i=win_db.in
-cmp $i $f > /dev/null 2>&1 ||
- (echo "Building $f" && rm -f $f && cp $i $f && chmod 444 $f)
-
+# Build the Windows clib_port.h.
+cat <<ENDOFSEDTEXT > $s
+s/@INT64_FMT@/#define INT64_FMT "%I64d"/
+s/@UINT64_FMT@/#define UINT64_FMT "%I64u"/
+ENDOFSEDTEXT
+sed -f $s clib_port.in > $t
+test `egrep '@.*@' $t` && {
+ egrep '@.*@' $t
+ echo 'Unexpanded autoconf variables found in Windows clib_port.h.'
+ exit 1
+}
f=../build_windows/clib_port.h
-cmp clib_port.h $f > /dev/null 2>&1 ||
- (echo "Building $f" && rm -f $f && cp clib_port.h $f && chmod 444 $f)
+cmp $t $f > /dev/null 2>&1 ||
+ (echo "Building $f" && rm -f $f && cp $t $f && chmod 444 $f)
+f=../build_wince/clib_port.h
+cmp $t $f > /dev/null 2>&1 ||
+ (echo "Building $f" && rm -f $f && cp $t $f && chmod 444 $f)
+
+# Copy in errno.h.
+f=../build_wince/errno.h
+cmp errno.h $f > /dev/null 2>&1 ||
+ (echo "Building $f" && rm -f $f && cp errno.h $f && chmod 444 $f)
rm -f $s $t
diff --git a/db/dist/s_windows_dsp b/db/dist/s_windows_dsp
index c7a94fe64..9fa4f35cc 100755
--- a/db/dist/s_windows_dsp
+++ b/db/dist/s_windows_dsp
@@ -1,5 +1,5 @@
-#!/bin/sh -
-# $Id: s_windows_dsp,v 12.9 2006/07/13 06:19:45 mjc Exp $
+#!/bin/bash -
+# $Id: s_windows_dsp,v 12.21 2007/07/06 16:29:16 bostic Exp $
#
# Build Windows/32 .dsp files.
@@ -17,10 +17,18 @@ create_dsp()
release_libs="$6" # libraries to link against in Release builds
debug_libs="$7" # libraries to link against in Debug builds
lib_suffix="$8" # the library name is libdb@lib_suffix@@VERSION@
+ proj_type="$9" # the project type dsp or vcp
+ proj_guid="${10}" # The project guid for VS2005 projects
- srctemplate="$BUILDDIR/srcfile_dsp.src" # template file for the src file fragments
- dspoutput=$BUILDDIR/$projname.dsp
+ # Set the default project type to be "dsp"
+ if [ ! "$proj_type" ] ; then
+ proj_type=dsp
+ fi
+ # template file for the src file fragments
+ srctemplate="$BUILDDIR/srcfile_$proj_type.src"
+ rsrctemplate="$BUILDDIR/rsrcfile_$proj_type.src"
+ dspoutput=$BUILDDIR/$projname.$proj_type
postbuild=$dspoutput.postbuild
if [ ! -f $postbuild ] ; then
@@ -40,9 +48,15 @@ create_dsp()
-e 's;/;\\\\\\\\;g'`
srcdir="$1"
srcfile="$2"
+ if [ "${srcfile##*.}" = "rc" -a "$proj_type" = "vcproj" ] ; then
+ inptemplate=$rsrctemplate
+ else
+ inptemplate=$srctemplate
+ fi
+
sed -e "s/@srcdir@/$srcdir/g" \
-e "s/@srcfile@/$srcfile/g" \
- < $srctemplate >> $dspoutput.insert
+ < $inptemplate >> $dspoutput.insert
done
sed -e "/@SOURCE_FILES@/r$dspoutput.insert" \
-e "/@SOURCE_FILES@/d" \
@@ -59,8 +73,14 @@ create_dsp()
-e "s,@lib_suffix@,$lib_suffix,g" \
-e "s/@DB_VERSION_MAJOR@/$DB_VERSION_MAJOR/g" \
-e "s/@DB_VERSION_MINOR@/$DB_VERSION_MINOR/g" \
+ -e "s/@PROJ_GUID@/$proj_guid/g" \
< $dsptemplate > $dspoutput.new
+ # We run this script on Windows (under Cygwin). Fix up the line-endings
+ # for the temporary files. We don't test the platform, just run unix2dos
+ # if the command exists, ignoring any not-found error message.
+ (unix2dos.exe $dspoutput.new) >/dev/null 2>&1
+
# Set the file mode to 644 because the VC++ IDE needs a writeable file
# in our development environment.
cmp $dspoutput.new $dspoutput > /dev/null 2>&1 ||
@@ -84,61 +104,107 @@ sed -e "s/#.*$//" \
# get a list of all modules mentioned
#
-MODULES="`sed -e 's/^[^ ]* //' < $TMPA \
- | tr ' ' '\012' | sort | uniq`"
+MODULES="`sed -e 's/^[^ ]* //' < $TMPA | tr ' ' '\012' | sort | uniq`"
-for BUILDDIR in ../build_windows
+for module in $MODULES
do
- for module in $MODULES
- do
- case "$module" in
- dynamic )
- create_dsp db_dll " $module " $TMPA $BUILDDIR/dynamic_dsp.src \
- '' 'ws2_32.lib' 'ws2_32.lib'
- ;;
- small )
- create_dsp db_small " $module " $TMPA $BUILDDIR/static_dsp.src \
- '/D "HAVE_SMALLBUILD"' '' '' _small
- ;;
- static )
- create_dsp db_static " $module " $TMPA $BUILDDIR/static_dsp.src
- ;;
- java )
- create_dsp db_java " $module " $TMPA $BUILDDIR/dynamic_dsp.src '' \
- 'libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@.lib' \
- 'libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@d.lib' _java
- ;;
- tcl )
- create_dsp db_tcl " $module " $TMPA $BUILDDIR/dynamic_dsp.src \
- '/D "DB_TCL_SUPPORT"' \
- 'libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@.lib tcl84.lib' \
- 'libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@d.lib tcl84g.lib' _tcl
- ;;
- testutil )
- create_dsp db_test " $module " $TMPA $BUILDDIR/app_dsp.src \
- '' '/out:"dbkill.exe"' '/out:"dbkill.exe"'
- ;;
- app=* )
- appname=`echo $module | sed -e 's/^app=//'`
- case "$appname" in
- ex_rep_base )
- libs='ws2_32.lib'
- ;;
- * )
- libs=''
- ;;
- esac
- create_dsp $appname " $module " $TMPA $BUILDDIR/app_dsp.src '' \
- $libs $libs
- ;;
- vx|vxsmall )
+ case "$module" in
+ dynamic )
+ BUILDDIR=../build_windows
+ create_dsp db_dll " $module " $TMPA $BUILDDIR/dynamic_dsp.src \
+ '' 'ws2_32.lib' 'ws2_32.lib'
+ ;;
+ small )
+ BUILDDIR=../build_windows
+ create_dsp db_small " $module " $TMPA $BUILDDIR/static_dsp.src \
+ '/D "HAVE_SMALLBUILD"' '' '' _small
+ ;;
+ static )
+ BUILDDIR=../build_windows
+ create_dsp db_static " $module " $TMPA $BUILDDIR/static_dsp.src
+ ;;
+ ce)
+ BUILDDIR=../build_wince
+ create_dsp db_static " $module " $TMPA \
+ ../build_wince/static_vcp.src '' '' '' '' vcp
+ # Build VS2005 projects.
+ # The GUID passed in must match that in the .sln workspace.
+ # It would be ideal to grab the GUID from there if this
+ # project is already included there.
+ create_dsp db_static " $module " $TMPA \
+ ../build_wince/static_vcproj.src '' '' '' '' vcproj \
+ "4AB4958F-8DD0-49B5-8C02-014B5637C59A"
+ ;;
+ ce_small)
+ BUILDDIR=../build_wince
+ create_dsp db_small " $module " $TMPA \
+ ../build_wince/static_vcp.src '/D "HAVE_SMALLBUILD"' \
+ '' '' _small vcp
+ # Build VS2005 projects.
+ # The GUID passed in must match that in the .sln workspace.
+ # It would be ideal to grab the GUID from there if this
+ # project is already included there.
+ create_dsp db_small " $module " $TMPA \
+ ../build_wince/static_vcproj.src 'HAVE_SMALLBUILD' \
+ '' '' _small vcproj "6A2849DA-8F7C-4B50-BDAE-AE7752EF8213"
+ ;;
+ java )
+ BUILDDIR=../build_windows
+ create_dsp db_java " $module " $TMPA $BUILDDIR/dynamic_dsp.src '' \
+ 'libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@.lib' \
+ 'libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@d.lib' _java
+ ;;
+ tcl )
+ BUILDDIR=../build_windows
+ create_dsp db_tcl " $module " $TMPA $BUILDDIR/dynamic_dsp.src \
+ '/D "DB_TCL_SUPPORT"' \
+ 'libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@.lib tcl84.lib' \
+ 'libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@d.lib tcl84g.lib' _tcl
+ ;;
+ testutil )
+ BUILDDIR=../build_windows
+ create_dsp db_test " $module " $TMPA $BUILDDIR/app_dsp.src \
+ '' '/out:"dbkill.exe"' '/out:"dbkill.exe"'
+ ;;
+ app=* )
+ BUILDDIR=../build_windows
+ appname=`echo $module | sed -e 's/^app=//'`
+ case "$appname" in
+ ex_rep_base )
+ libs='ws2_32.lib'
;;
* )
- echo \
- "s_windows_dsp: module name $module in $SRCFILES is unknown type"
+ libs=''
;;
esac
- done
+ # Split into Windows CE and Win32/64 project creation.
+ case "$appname" in
+ wce_tpcb )
+ BUILDDIR=../build_wince
+ create_dsp $appname " $module " $TMPA \
+ ../build_wince/app_vcp.src '/D "__NO_SYSTEM_INCLUDES"' \
+ '' '' '' vcp
+ # The GUID passed in must match that in the .sln workspace.
+ # It would be ideal to grab the GUID from there if this
+ # project is already included there.
+ create_dsp $appname " $module " $TMPA \
+ ../build_wince/app_vcproj.src '__NO_SYSTEM_INCLUDES' \
+ '' '' '' vcproj "F2CE670A-ABAE-414A-9A17-8079AB58613F"
+ BUILDDIR=../build_windows
+ ;;
+ * )
+ create_dsp $appname " $module " $TMPA $BUILDDIR/app_dsp.src \
+ '' $libs $libs
+ ;;
+ esac
+ ;;
+ brew|s60|vx|vxsmall )
+ ;;
+ * )
+ echo \
+ "s_windows_dsp: module name $module in $SRCFILES is unknown type"
+ ;;
+ esac
done
rm -f $TMPA
diff --git a/db/dist/srcfiles.in b/db/dist/srcfiles.in
index 870ab3be4..930e7a623 100644
--- a/db/dist/srcfiles.in
+++ b/db/dist/srcfiles.in
@@ -1,4 +1,4 @@
-# $Id: srcfiles.in,v 12.53 2006/09/09 14:08:39 bostic Exp $
+# $Id: srcfiles.in,v 12.84 2007/07/06 16:29:16 bostic Exp $
#
# This is an input file for the s_windows_dsp and s_vxworks scripts. It lists
# the source files in the Berkeley DB tree and notes which are used to build
@@ -21,26 +21,26 @@
# vx File is in the VxWorks library.
# vxsmall File is in the small VxWorks library.
-btree/bt_compact.c dynamic small static vx vxsmall
-btree/bt_compare.c dynamic small static vx vxsmall
-btree/bt_conv.c dynamic small static vx vxsmall
-btree/bt_curadj.c dynamic small static vx vxsmall
-btree/bt_cursor.c dynamic small static vx vxsmall
-btree/bt_delete.c dynamic small static vx vxsmall
-btree/bt_method.c dynamic small static vx vxsmall
-btree/bt_open.c dynamic small static vx vxsmall
-btree/bt_put.c dynamic small static vx vxsmall
-btree/bt_rec.c dynamic small static vx vxsmall
-btree/bt_reclaim.c dynamic small static vx vxsmall
-btree/bt_recno.c dynamic small static vx vxsmall
-btree/bt_rsearch.c dynamic small static vx vxsmall
-btree/bt_search.c dynamic small static vx vxsmall
-btree/bt_split.c dynamic small static vx vxsmall
-btree/bt_stat.c dynamic small static vx vxsmall
-btree/bt_upgrade.c dynamic small static vx vxsmall
-btree/bt_verify.c dynamic static vx
-btree/btree_auto.c dynamic small static vx vxsmall
-btree/btree_autop.c app=db_printlog
+btree/bt_compact.c brew ce ce_small dynamic small static s60 vx vxsmall
+btree/bt_compare.c brew ce ce_small dynamic small static s60 vx vxsmall
+btree/bt_conv.c brew ce ce_small dynamic small static s60 vx vxsmall
+btree/bt_curadj.c brew ce ce_small dynamic small static s60 vx vxsmall
+btree/bt_cursor.c brew ce ce_small dynamic small static s60 vx vxsmall
+btree/bt_delete.c brew ce ce_small dynamic small static s60 vx vxsmall
+btree/bt_method.c brew ce ce_small dynamic small static s60 vx vxsmall
+btree/bt_open.c brew ce ce_small dynamic small static s60 vx vxsmall
+btree/bt_put.c brew ce ce_small dynamic small static s60 vx vxsmall
+btree/bt_rec.c brew ce ce_small dynamic small static s60 vx vxsmall
+btree/bt_reclaim.c brew ce ce_small dynamic small static s60 vx vxsmall
+btree/bt_recno.c brew ce ce_small dynamic small static s60 vx vxsmall
+btree/bt_rsearch.c brew ce ce_small dynamic small static s60 vx vxsmall
+btree/bt_search.c brew ce ce_small dynamic small static s60 vx vxsmall
+btree/bt_split.c brew ce ce_small dynamic small static s60 vx vxsmall
+btree/bt_stat.c brew ce ce_small dynamic small static s60 vx vxsmall
+btree/bt_upgrade.c ce ce_small dynamic small static vx vxsmall
+btree/bt_verify.c ce ce_small dynamic static vx
+btree/btree_auto.c brew ce ce_small dynamic small static s60 vx vxsmall
+btree/btree_autop.c app=db_printlog
build_vxworks/db_archive/db_archive.c
build_vxworks/db_checkpoint/db_checkpoint.c
build_vxworks/db_deadlock/db_deadlock.c
@@ -53,366 +53,385 @@ build_vxworks/db_stat/db_stat.c
build_vxworks/db_upgrade/db_upgrade.c
build_vxworks/db_verify/db_verify.c
build_vxworks/dbdemo/dbdemo.c
-build_windows/dbkill.cpp testutil
-build_windows/libdb.def dynamic
-build_windows/libdb.rc dynamic
-build_windows/libdb_tcl.def tcl
-clib/abort.c
+build_windows/dbkill.cpp testutil
+build_windows/libdb.def dynamic
+build_windows/libdb.rc dynamic
+build_windows/libdb_tcl.def tcl
clib/atoi.c
-clib/atol.c
-clib/ctime.c dynamic small static vx vxsmall
-clib/getaddrinfo.c dynamic static
+clib/atol.c brew
+clib/ctime.c dynamic small static s60 vx vxsmall
+clib/getaddrinfo.c dynamic static
clib/getcwd.c
-clib/getopt.c vx vxsmall
-clib/isalpha.c
-clib/isdigit.c
-clib/isprint.c
-clib/isspace.c
+clib/getopt.c vx vxsmall
+clib/isalpha.c brew
+clib/isdigit.c brew
+clib/isprint.c brew
+clib/isspace.c brew
clib/memcmp.c
clib/memmove.c
-clib/printf.c
+clib/printf.c brew
+clib/qsort.c brew
clib/raise.c
-clib/rand.c
-clib/snprintf.c vx vxsmall
-clib/strcasecmp.c dynamic small static vx vxsmall
+clib/rand.c brew
+clib/snprintf.c s60 vx vxsmall
+clib/strcasecmp.c brew s60 vx vxsmall
clib/strcat.c
clib/strchr.c
-clib/strdup.c vx vxsmall
-clib/strerror.c
-clib/strncat.c
+clib/strdup.c ce ce_small vx vxsmall
+clib/strerror.c ce ce_small brew
+clib/strncat.c brew
clib/strncmp.c
clib/strrchr.c
-clib/strsep.c dynamic small static vx vxsmall
-clib/strtol.c
+clib/strsep.c brew ce ce_small dynamic small static s60 vx vxsmall
+clib/strtol.c brew
clib/strtoul.c
-common/crypto_stub.c small vxsmall
-common/db_byteorder.c dynamic small static vx vxsmall
-common/db_clock.c dynamic static vx
-common/db_err.c dynamic small static vx vxsmall
-common/db_getlong.c dynamic small static vx vxsmall
-common/db_idspace.c dynamic small static vx vxsmall
-common/db_log2.c dynamic small static vx vxsmall
-common/mkpath.c dynamic small static vx vxsmall
-common/util_arg.c vx vxsmall
-common/util_cache.c dynamic small static vx vxsmall
-common/util_log.c dynamic small static vx vxsmall
-common/util_sig.c dynamic small static vx vxsmall
-crypto/aes_method.c dynamic static vx
-crypto/crypto.c dynamic static vx
-crypto/mersenne/mt19937db.c dynamic static vx
-crypto/rijndael/rijndael-alg-fst.c dynamic static vx
-crypto/rijndael/rijndael-api-fst.c dynamic static vx
-cxx/cxx_db.cpp dynamic small static
-cxx/cxx_dbc.cpp dynamic small static
-cxx/cxx_dbt.cpp dynamic small static
-cxx/cxx_env.cpp dynamic small static
-cxx/cxx_except.cpp dynamic small static
-cxx/cxx_lock.cpp dynamic small static
-cxx/cxx_logc.cpp dynamic small static
-cxx/cxx_mpool.cpp dynamic small static
-cxx/cxx_multi.cpp dynamic small static
-cxx/cxx_seq.cpp dynamic small static
-cxx/cxx_txn.cpp dynamic small static
-db/crdel_auto.c dynamic small static vx vxsmall
-db/crdel_autop.c app=db_printlog
-db/crdel_rec.c dynamic small static vx vxsmall
-db/db.c dynamic small static vx vxsmall
-db/db_am.c dynamic small static vx vxsmall
-db/db_auto.c dynamic small static vx vxsmall
-db/db_autop.c app=db_printlog
-db/db_cam.c dynamic small static vx vxsmall
-db/db_cds.c dynamic small static vx vxsmall
-db/db_conv.c dynamic small static vx vxsmall
-db/db_dispatch.c dynamic small static vx vxsmall
-db/db_dup.c dynamic small static vx vxsmall
-db/db_iface.c dynamic small static vx vxsmall
-db/db_join.c dynamic small static vx vxsmall
-db/db_meta.c dynamic small static vx vxsmall
-db/db_method.c dynamic small static vx vxsmall
-db/db_open.c dynamic small static vx vxsmall
-db/db_overflow.c dynamic small static vx vxsmall
-db/db_ovfl_vrfy.c dynamic static vx
-db/db_pr.c dynamic small static vx vxsmall
-db/db_rec.c dynamic small static vx vxsmall
-db/db_reclaim.c dynamic small static vx vxsmall
-db/db_remove.c dynamic small static vx vxsmall
-db/db_rename.c dynamic small static vx vxsmall
-db/db_ret.c dynamic small static vx vxsmall
-db/db_setid.c dynamic small static vx vxsmall
-db/db_setlsn.c dynamic small static vx vxsmall
-db/db_stati.c dynamic small static vx vxsmall
-db/db_truncate.c dynamic small static vx vxsmall
-db/db_upg.c dynamic small static vx vxsmall
-db/db_upg_opd.c dynamic small static vx vxsmall
-db/db_vrfy.c dynamic static vx
-db/db_vrfy_stub.c small vxsmall
-db/db_vrfyutil.c dynamic static vx
+common/crypto_stub.c brew ce_small small s60 vxsmall
+common/db_byteorder.c brew ce ce_small dynamic small static s60 vx vxsmall
+common/db_err.c brew ce ce_small dynamic small static s60 vx vxsmall
+common/db_getlong.c brew ce ce_small dynamic small static s60 vx vxsmall
+common/db_idspace.c brew ce ce_small dynamic small static s60 vx vxsmall
+common/db_log2.c brew ce ce_small dynamic small static s60 vx vxsmall
+common/db_shash.c brew ce ce_small dynamic small static s60 vx vxsmall
+common/mkpath.c brew ce ce_small dynamic small static s60 vx vxsmall
+common/util_arg.c vx vxsmall
+common/util_cache.c ce ce_small dynamic small static vx vxsmall
+common/util_log.c ce ce_small dynamic small static vx vxsmall
+common/util_sig.c dynamic small static vx vxsmall
+crypto/aes_method.c ce dynamic static vx
+crypto/crypto.c ce dynamic static vx
+crypto/mersenne/mt19937db.c ce dynamic static vx
+crypto/rijndael/rijndael-alg-fst.c ce dynamic static vx
+crypto/rijndael/rijndael-api-fst.c ce dynamic static vx
+cxx/cxx_db.cpp dynamic small static
+cxx/cxx_dbc.cpp dynamic small static
+cxx/cxx_dbt.cpp dynamic small static
+cxx/cxx_env.cpp dynamic small static
+cxx/cxx_except.cpp dynamic small static
+cxx/cxx_lock.cpp dynamic small static
+cxx/cxx_logc.cpp dynamic small static
+cxx/cxx_mpool.cpp dynamic small static
+cxx/cxx_multi.cpp dynamic small static
+cxx/cxx_seq.cpp dynamic small static
+cxx/cxx_txn.cpp dynamic small static
+db/crdel_auto.c brew ce ce_small dynamic small static s60 vx vxsmall
+db/crdel_autop.c app=db_printlog
+db/crdel_rec.c brew ce ce_small dynamic small static s60 vx vxsmall
+db/db.c brew ce ce_small dynamic small static s60 vx vxsmall
+db/db_am.c brew ce ce_small dynamic small static s60 vx vxsmall
+db/db_auto.c brew ce ce_small dynamic small static s60 vx vxsmall
+db/db_autop.c app=db_printlog
+db/db_cam.c brew ce ce_small dynamic small static s60 vx vxsmall
+db/db_cds.c brew ce ce_small dynamic small static s60 vx vxsmall
+db/db_conv.c brew ce ce_small dynamic small static s60 vx vxsmall
+db/db_dispatch.c brew ce ce_small dynamic small static s60 vx vxsmall
+db/db_dup.c brew ce ce_small dynamic small static s60 vx vxsmall
+db/db_iface.c brew ce ce_small dynamic small static s60 vx vxsmall
+db/db_join.c brew ce ce_small dynamic small static s60 vx vxsmall
+db/db_meta.c brew ce ce_small dynamic small static s60 vx vxsmall
+db/db_method.c brew ce ce_small dynamic small static s60 vx vxsmall
+db/db_open.c brew ce ce_small dynamic small static s60 vx vxsmall
+db/db_overflow.c brew ce ce_small dynamic small static s60 vx vxsmall
+db/db_ovfl_vrfy.c ce dynamic static vx
+db/db_pr.c brew ce ce_small dynamic small static s60 vx vxsmall
+db/db_rec.c brew ce ce_small dynamic small static s60 vx vxsmall
+db/db_reclaim.c brew ce ce_small dynamic small static s60 vx vxsmall
+db/db_remove.c brew ce ce_small dynamic small static s60 vx vxsmall
+db/db_rename.c brew ce ce_small dynamic small static s60 vx vxsmall
+db/db_ret.c brew ce ce_small dynamic small static s60 vx vxsmall
+db/db_setid.c brew ce ce_small dynamic small static s60 vx vxsmall
+db/db_setlsn.c brew ce ce_small dynamic small static s60 vx vxsmall
+db/db_stati.c brew ce ce_small dynamic small static s60 vx vxsmall
+db/db_truncate.c brew ce ce_small dynamic small static s60 vx vxsmall
+db/db_upg.c brew ce ce_small dynamic small static s60 vx vxsmall
+db/db_upg_opd.c ce ce_small dynamic small static vx vxsmall
+db/db_vrfy.c ce dynamic static vx
+db/db_vrfy_stub.c brew ce_small small s60 vxsmall
+db/db_vrfyutil.c ce dynamic static vx
db185/db185.c
-db_archive/db_archive.c app=db_archive
-db_checkpoint/db_checkpoint.c app=db_checkpoint
-db_deadlock/db_deadlock.c app=db_deadlock
-db_dump/db_dump.c app=db_dump
+db_archive/db_archive.c app=db_archive
+db_checkpoint/db_checkpoint.c app=db_checkpoint
+db_codegen/code_capi.c app=db_codegen
+db_codegen/code_parse.c app=db_codegen
+db_codegen/db_codegen.c app=db_codegen
+db_deadlock/db_deadlock.c app=db_deadlock
+db_dump/db_dump.c app=db_dump
db_dump185/db_dump185.c
-db_hotbackup/db_hotbackup.c app=db_hotbackup
-db_load/db_load.c app=db_load
-db_printlog/db_printlog.c app=db_printlog
-db_recover/db_recover.c app=db_recover
+db_hotbackup/db_hotbackup.c app=db_hotbackup
+db_load/db_load.c app=db_load
+db_printlog/db_printlog.c app=db_printlog
+db_recover/db_recover.c app=db_recover
db_server_clnt.c
db_server_svc.c
db_server_xdr.c
-db_stat/db_stat.c app=db_stat
-db_upgrade/db_upgrade.c app=db_upgrade
-db_verify/db_verify.c app=db_verify
-dbm/dbm.c dynamic static
-dbreg/dbreg.c dynamic small static vx vxsmall
-dbreg/dbreg_auto.c dynamic small static vx vxsmall
-dbreg/dbreg_autop.c app=db_printlog
-dbreg/dbreg_rec.c dynamic small static vx vxsmall
-dbreg/dbreg_stat.c dynamic small static vx vxsmall
-dbreg/dbreg_util.c dynamic small static vx vxsmall
-env/db_salloc.c dynamic small static vx vxsmall
-env/db_shash.c dynamic small static vx vxsmall
-env/env_config.c dynamic small static vx vxsmall
-env/env_failchk.c dynamic small static vx vxsmall
-env/env_file.c dynamic small static vx vxsmall
-env/env_method.c dynamic small static vx vxsmall
-env/env_open.c dynamic small static vx vxsmall
-env/env_recover.c dynamic small static vx vxsmall
-env/env_region.c dynamic small static vx vxsmall
-env/env_register.c dynamic small static vx vxsmall
-env/env_stat.c dynamic small static vx vxsmall
+db_stat/db_stat.c app=db_stat
+db_upgrade/db_upgrade.c app=db_upgrade
+db_verify/db_verify.c app=db_verify
+dbm/dbm.c dynamic static
+dbreg/dbreg.c brew ce ce_small dynamic small static s60 vx vxsmall
+dbreg/dbreg_auto.c brew ce ce_small dynamic small static s60 vx vxsmall
+dbreg/dbreg_autop.c app=db_printlog
+dbreg/dbreg_rec.c brew ce ce_small dynamic small static s60 vx vxsmall
+dbreg/dbreg_stat.c brew ce ce_small dynamic small static s60 vx vxsmall
+dbreg/dbreg_util.c brew ce ce_small dynamic small static s60 vx vxsmall
+env/env_alloc.c brew ce ce_small dynamic small static s60 vx vxsmall
+env/env_config.c brew ce ce_small dynamic small static s60 vx vxsmall
+env/env_failchk.c brew ce ce_small dynamic small static s60 vx vxsmall
+env/env_file.c brew ce ce_small dynamic small static s60 vx vxsmall
+env/env_globals.c ce ce_small dynamic small static s60 vx vxsmall
+env/env_method.c brew ce ce_small dynamic small static s60 vx vxsmall
+env/env_name.c brew ce ce_small dynamic small static s60 vx vxsmall
+env/env_open.c brew ce ce_small dynamic small static s60 vx vxsmall
+env/env_recover.c brew ce ce_small dynamic small static s60 vx vxsmall
+env/env_region.c brew ce ce_small dynamic small static s60 vx vxsmall
+env/env_register.c brew ce ce_small dynamic small static s60 vx vxsmall
+env/env_stat.c brew ce ce_small dynamic small static s60 vx vxsmall
examples_c/bench_001.c
-examples_c/csv/DbRecord.c app=ex_csvload app=ex_csvquery
-examples_c/csv/code.c app=ex_csvcode
-examples_c/csv/csv_local.c app=ex_csvload app=ex_csvquery
-examples_c/csv/db.c app=ex_csvload app=ex_csvquery
-examples_c/csv/load.c app=ex_csvload
-examples_c/csv/load_main.c app=ex_csvload
-examples_c/csv/query.c app=ex_csvquery
-examples_c/csv/query_main.c app=ex_csvquery
-examples_c/csv/util.c app=ex_csvload app=ex_csvquery
-examples_c/ex_access.c app=ex_access
+examples_c/csv/DbRecord.c app=ex_csvload app=ex_csvquery
+examples_c/csv/code.c app=ex_csvcode
+examples_c/csv/csv_local.c app=ex_csvload app=ex_csvquery
+examples_c/csv/db.c app=ex_csvload app=ex_csvquery
+examples_c/csv/load.c app=ex_csvload
+examples_c/csv/load_main.c app=ex_csvload
+examples_c/csv/query.c app=ex_csvquery
+examples_c/csv/query_main.c app=ex_csvquery
+examples_c/csv/util.c app=ex_csvload app=ex_csvquery
+examples_c/ex_access.c app=ex_access
examples_c/ex_apprec/ex_apprec.c
examples_c/ex_apprec/ex_apprec_auto.c
examples_c/ex_apprec/ex_apprec_autop.c
examples_c/ex_apprec/ex_apprec_rec.c
-examples_c/ex_btrec.c app=ex_btrec
+examples_c/ex_btrec.c app=ex_btrec
examples_c/ex_dbclient.c
-examples_c/ex_env.c app=ex_env
-examples_c/ex_lock.c app=ex_lock
-examples_c/ex_mpool.c app=ex_mpool
-examples_c/ex_rep/base/rep_base.c app=ex_rep_base
-examples_c/ex_rep/base/rep_msg.c app=ex_rep_base
-examples_c/ex_rep/base/rep_net.c app=ex_rep_base
-examples_c/ex_rep/common/rep_common.c app=ex_rep_base app=ex_rep_mgr
-examples_c/ex_rep/mgr/rep_mgr.c app=ex_rep_mgr
-examples_c/ex_sequence.c app=ex_sequence
+examples_c/ex_env.c app=ex_env
+examples_c/ex_lock.c app=ex_lock
+examples_c/ex_mpool.c app=ex_mpool
+examples_c/ex_rep/base/rep_base.c app=ex_rep_base
+examples_c/ex_rep/base/rep_msg.c app=ex_rep_base
+examples_c/ex_rep/base/rep_net.c app=ex_rep_base
+examples_c/ex_rep/common/rep_common.c app=ex_rep_base app=ex_rep_mgr
+examples_c/ex_rep/mgr/rep_mgr.c app=ex_rep_mgr
+examples_c/ex_sequence.c app=ex_sequence
examples_c/ex_thread.c
-examples_c/ex_tpcb.c app=ex_tpcb
-examples_c/getting_started/example_database_load.c app=example_database_load
-examples_c/getting_started/example_database_read.c app=example_database_read
-examples_c/getting_started/gettingstarted_common.c app=example_database_load app=example_database_read
-examples_c/txn_guide/txn_guide.c app=ex_txnguide
-examples_c/txn_guide/txn_guide_inmemory.c app=ex_txnguide_inmem
-examples_cxx/AccessExample.cpp app=excxx_access
-examples_cxx/BtRecExample.cpp app=excxx_btrec
-examples_cxx/EnvExample.cpp app=excxx_env
-examples_cxx/LockExample.cpp app=excxx_lock
-examples_cxx/MpoolExample.cpp app=excxx_mpool
-examples_cxx/SequenceExample.cpp app=excxx_sequence
-examples_cxx/TpcbExample.cpp app=excxx_tpcb
-examples_cxx/excxx_repquote/RepConfigInfo.cpp app=excxx_repquote
-examples_cxx/excxx_repquote/RepQuoteExample.cpp app=excxx_repquote
-examples_cxx/getting_started/MyDb.cpp app=excxx_example_database_load app=excxx_example_database_read
+examples_c/ex_tpcb.c app=ex_tpcb
+examples_c/getting_started/example_database_load.c app=example_database_load
+examples_c/getting_started/example_database_read.c app=example_database_read
+examples_c/getting_started/gettingstarted_common.c app=example_database_load app=example_database_read
+examples_c/txn_guide/txn_guide.c app=ex_txnguide
+examples_c/txn_guide/txn_guide_inmemory.c app=ex_txnguide_inmem
+examples_cxx/AccessExample.cpp app=excxx_access
+examples_cxx/BtRecExample.cpp app=excxx_btrec
+examples_cxx/EnvExample.cpp app=excxx_env
+examples_cxx/LockExample.cpp app=excxx_lock
+examples_cxx/MpoolExample.cpp app=excxx_mpool
+examples_cxx/SequenceExample.cpp app=excxx_sequence
+examples_cxx/TpcbExample.cpp app=excxx_tpcb
+examples_cxx/excxx_repquote/RepConfigInfo.cpp app=excxx_repquote
+examples_cxx/excxx_repquote/RepQuoteExample.cpp app=excxx_repquote
+examples_cxx/getting_started/MyDb.cpp app=excxx_example_database_load app=excxx_example_database_read
examples_cxx/getting_started/excxx_example_database_load.cpp app=excxx_example_database_load
examples_cxx/getting_started/excxx_example_database_read.cpp app=excxx_example_database_read
-examples_cxx/txn_guide/TxnGuide.cpp app=excxx_txnguide
-examples_cxx/txn_guide/TxnGuideInMemory.cpp app=excxx_txnguide_inmem
-fileops/fileops_auto.c dynamic small static vx vxsmall
-fileops/fileops_autop.c app=db_printlog
-fileops/fop_basic.c dynamic small static vx vxsmall
-fileops/fop_rec.c dynamic small static vx vxsmall
-fileops/fop_util.c dynamic small static vx vxsmall
+examples_cxx/txn_guide/TxnGuide.cpp app=excxx_txnguide
+examples_cxx/txn_guide/TxnGuideInMemory.cpp app=excxx_txnguide_inmem
+examples_cxx/wce_tpcb/TpcbExample.cpp app=wce_tpcb
+examples_cxx/wce_tpcb/TpcbUI.cpp app=wce_tpcb
+examples_cxx/wce_tpcb/wce_tpcb.rc app=wce_tpcb
+fileops/fileops_auto.c brew ce ce_small dynamic small static s60 vx vxsmall
+fileops/fileops_autop.c app=db_printlog
+fileops/fop_basic.c brew ce ce_small dynamic small static s60 vx vxsmall
+fileops/fop_rec.c brew ce ce_small dynamic small static s60 vx vxsmall
+fileops/fop_util.c brew ce ce_small dynamic small static s60 vx vxsmall
gen_db_server.c
-hash/hash.c dynamic static vx
-hash/hash_auto.c dynamic static vx
-hash/hash_autop.c app=db_printlog
-hash/hash_conv.c dynamic static vx
-hash/hash_dup.c dynamic static vx
-hash/hash_func.c dynamic small static vx vxsmall
-hash/hash_meta.c dynamic static vx
-hash/hash_method.c dynamic static vx
-hash/hash_open.c dynamic static vx
-hash/hash_page.c dynamic static vx
-hash/hash_rec.c dynamic static vx
-hash/hash_reclaim.c dynamic static vx
-hash/hash_stat.c dynamic static vx
-hash/hash_stub.c small vxsmall
-hash/hash_upgrade.c dynamic static vx
-hash/hash_verify.c dynamic static vx
-hmac/hmac.c dynamic small static vx vxsmall
-hmac/sha1.c dynamic small static vx vxsmall
-hsearch/hsearch.c dynamic static vx
-libdb_java/db_java_wrap.c java
-lock/lock.c dynamic small static vx vxsmall
-lock/lock_deadlock.c dynamic small static vx vxsmall
-lock/lock_failchk.c dynamic small static vx vxsmall
-lock/lock_id.c dynamic small static vx vxsmall
-lock/lock_list.c dynamic small static vx vxsmall
-lock/lock_method.c dynamic small static vx vxsmall
-lock/lock_region.c dynamic small static vx vxsmall
-lock/lock_stat.c dynamic small static vx vxsmall
-lock/lock_timer.c dynamic small static vx vxsmall
-lock/lock_util.c dynamic small static vx vxsmall
-log/log.c dynamic small static vx vxsmall
-log/log_archive.c dynamic small static vx vxsmall
-log/log_compare.c dynamic small static vx vxsmall
-log/log_debug.c dynamic small static vx vxsmall
-log/log_get.c dynamic small static vx vxsmall
-log/log_method.c dynamic small static vx vxsmall
-log/log_put.c dynamic small static vx vxsmall
-log/log_stat.c dynamic small static vx vxsmall
-mp/mp_alloc.c dynamic small static vx vxsmall
-mp/mp_bh.c dynamic small static vx vxsmall
-mp/mp_fget.c dynamic small static vx vxsmall
-mp/mp_fmethod.c dynamic small static vx vxsmall
-mp/mp_fopen.c dynamic small static vx vxsmall
-mp/mp_fput.c dynamic small static vx vxsmall
-mp/mp_fset.c dynamic small static vx vxsmall
-mp/mp_method.c dynamic small static vx vxsmall
-mp/mp_mvcc.c dynamic small static vx vxsmall
-mp/mp_region.c dynamic small static vx vxsmall
-mp/mp_register.c dynamic small static vx vxsmall
-mp/mp_stat.c dynamic small static vx vxsmall
-mp/mp_sync.c dynamic small static vx vxsmall
-mp/mp_trickle.c dynamic small static vx vxsmall
-mutex/mut_alloc.c dynamic small static vx vxsmall
-mutex/mut_failchk.c dynamic small static vx vxsmall
+hash/hash.c ce dynamic static vx
+hash/hash_auto.c ce dynamic static vx
+hash/hash_autop.c app=db_printlog
+hash/hash_conv.c ce dynamic static vx
+hash/hash_dup.c ce dynamic static vx
+hash/hash_func.c brew ce ce_small dynamic small static s60 vx vxsmall
+hash/hash_meta.c ce dynamic static vx
+hash/hash_method.c ce dynamic static vx
+hash/hash_open.c ce dynamic static vx
+hash/hash_page.c ce dynamic static vx
+hash/hash_rec.c ce dynamic static vx
+hash/hash_reclaim.c ce dynamic static vx
+hash/hash_stat.c ce dynamic static vx
+hash/hash_stub.c brew ce_small small s60 vxsmall
+hash/hash_upgrade.c ce dynamic static vx
+hash/hash_verify.c ce dynamic static vx
+hmac/hmac.c brew ce ce_small dynamic small static s60 vx vxsmall
+hmac/sha1.c brew ce ce_small dynamic small static s60 vx vxsmall
+hsearch/hsearch.c ce dynamic static vx
+libdb_java/db_java_wrap.c java
+lock/lock.c ce ce_small dynamic small static s60 vx vxsmall
+lock/lock_deadlock.c ce ce_small dynamic small static s60 vx vxsmall
+lock/lock_failchk.c ce ce_small dynamic small static s60 vx vxsmall
+lock/lock_id.c ce ce_small dynamic small static s60 vx vxsmall
+lock/lock_list.c ce ce_small dynamic small static s60 vx vxsmall
+lock/lock_method.c ce ce_small dynamic small static s60 vx vxsmall
+lock/lock_region.c ce ce_small dynamic small static s60 vx vxsmall
+lock/lock_stat.c ce ce_small dynamic small static s60 vx vxsmall
+lock/lock_stub.c brew
+lock/lock_timer.c ce ce_small dynamic small static s60 vx vxsmall
+lock/lock_util.c ce ce_small dynamic small static s60 vx vxsmall
+log/log.c brew ce ce_small dynamic small static s60 vx vxsmall
+log/log_archive.c brew ce ce_small dynamic small static s60 vx vxsmall
+log/log_compare.c brew ce ce_small dynamic small static s60 vx vxsmall
+log/log_debug.c brew ce ce_small dynamic small static s60 vx vxsmall
+log/log_get.c brew ce ce_small dynamic small static s60 vx vxsmall
+log/log_method.c brew ce ce_small dynamic small static s60 vx vxsmall
+log/log_put.c brew ce ce_small dynamic small static s60 vx vxsmall
+log/log_stat.c brew ce ce_small dynamic small static s60 vx vxsmall
+mp/mp_alloc.c brew ce ce_small dynamic small static s60 vx vxsmall
+mp/mp_bh.c brew ce ce_small dynamic small static s60 vx vxsmall
+mp/mp_fget.c brew ce ce_small dynamic small static s60 vx vxsmall
+mp/mp_fmethod.c brew ce ce_small dynamic small static s60 vx vxsmall
+mp/mp_fopen.c brew ce ce_small dynamic small static s60 vx vxsmall
+mp/mp_fput.c brew ce ce_small dynamic small static s60 vx vxsmall
+mp/mp_fset.c brew ce ce_small dynamic small static s60 vx vxsmall
+mp/mp_method.c brew ce ce_small dynamic small static s60 vx vxsmall
+mp/mp_mvcc.c brew ce ce_small dynamic small static s60 vx vxsmall
+mp/mp_region.c brew ce ce_small dynamic small static s60 vx vxsmall
+mp/mp_register.c brew ce ce_small dynamic small static s60 vx vxsmall
+mp/mp_resize.c brew ce ce_small dynamic small static s60 vx vxsmall
+mp/mp_stat.c brew ce ce_small dynamic small static s60 vx vxsmall
+mp/mp_sync.c brew ce ce_small dynamic small static s60 vx vxsmall
+mp/mp_trickle.c brew ce ce_small dynamic small static s60 vx vxsmall
+mutex/mut_alloc.c ce ce_small dynamic small static s60 vx vxsmall
+mutex/mut_failchk.c ce ce_small dynamic small static s60 vx vxsmall
mutex/mut_fcntl.c
-mutex/mut_method.c dynamic small static vx vxsmall
-mutex/mut_pthread.c
-mutex/mut_region.c dynamic small static vx vxsmall
-mutex/mut_stat.c dynamic small static vx vxsmall
-mutex/mut_tas.c vx vxsmall
-mutex/mut_win32.c dynamic small static
-mutex/tm.c app=tm
-os/os_abs.c
-os/os_alloc.c dynamic small static vx vxsmall
-os/os_clock.c vx vxsmall
+mutex/mut_method.c ce ce_small dynamic small static s60 vx vxsmall
+mutex/mut_pthread.c s60
+mutex/mut_region.c ce ce_small dynamic small static s60 vx vxsmall
+mutex/mut_stat.c ce ce_small dynamic small static s60 vx vxsmall
+mutex/mut_stub.c brew
+mutex/mut_tas.c vx vxsmall
+mutex/mut_win32.c ce ce_small dynamic small static
+mutex/test_mutex.c app=test_mutex
+os/os_abort.c ce ce_small dynamic small static s60 vx vxsmall tcl
+os/os_abs.c s60
+os/os_alloc.c brew ce ce_small dynamic small static s60 vx vxsmall
+os/os_clock.c brew s60 vx vxsmall
os/os_config.c
-os/os_dir.c vx vxsmall
-os/os_errno.c vx vxsmall
-os/os_fid.c vx vxsmall
-os/os_flock.c vx vxsmall
-os/os_fsync.c vx vxsmall
-os/os_fzero.c dynamic small static vx vxsmall
-os/os_getenv.c vx vxsmall
-os/os_handle.c vx vxsmall
-os/os_map.c
-os/os_method.c vx vxsmall
-os/os_mkdir.c dynamic small static vx vxsmall
-os/os_oflags.c dynamic small static vx vxsmall
-os/os_open.c vx vxsmall
-os/os_pid.c dynamic small static vx vxsmall
-os/os_region.c dynamic small static vx vxsmall
-os/os_rename.c vx vxsmall
-os/os_root.c dynamic small static vx vxsmall
-os/os_rpath.c dynamic small static
-os/os_rw.c vx vxsmall
-os/os_seek.c vx vxsmall
-os/os_sleep.c vx vxsmall
-os/os_spin.c vx vxsmall
-os/os_stat.c vx vxsmall
-os/os_tmpdir.c dynamic small static vx vxsmall
-os/os_truncate.c vx vxsmall
-os/os_uid.c dynamic small static vx vxsmall
-os/os_unlink.c vx vxsmall
-os/os_yield.c vx vxsmall
-os_brew/abort.c
-os_brew/ctime.c
-os_brew/fclose.c
-os_brew/fgetc.c
-os_brew/fgets.c
-os_brew/fopen.c
-os_brew/fwrite.c
-os_brew/getcwd.c
-os_brew/localtime.c
-os_brew/os_abs.c
-os_brew/os_config.c
-os_brew/os_dir.c
-os_brew/os_errno.c
-os_brew/os_handle.c
-os_brew/os_mkdir.c
-os_brew/os_oflags.c
-os_brew/os_open.c
-os_brew/os_pid.c
-os_brew/os_rename.c
-os_brew/os_rw.c
-os_brew/os_seek.c
-os_brew/os_sleep.c
-os_brew/os_stat.c
-os_brew/os_truncate.c
-os_brew/os_unlink.c
-os_brew/time.c
-os_vxworks/os_vx_abs.c vx vxsmall
-os_vxworks/os_vx_config.c vx vxsmall
-os_vxworks/os_vx_map.c vx vxsmall
-os_vxworks/os_vx_rpath.c vx vxsmall
-os_windows/os_abs.c dynamic small static
-os_windows/os_clock.c dynamic small static
-os_windows/os_config.c dynamic small static
-os_windows/os_dir.c dynamic small static
-os_windows/os_errno.c dynamic small static
-os_windows/os_fid.c dynamic small static
-os_windows/os_flock.c dynamic small static
-os_windows/os_fsync.c dynamic small static
-os_windows/os_getenv.c dynamic small static
-os_windows/os_handle.c dynamic small static
-os_windows/os_map.c dynamic small static
-os_windows/os_open.c dynamic small static
-os_windows/os_rename.c dynamic small static
-os_windows/os_rw.c dynamic small static
-os_windows/os_seek.c dynamic small static
-os_windows/os_sleep.c dynamic small static
-os_windows/os_spin.c dynamic small static
-os_windows/os_stat.c dynamic small static
-os_windows/os_truncate.c dynamic small static
-os_windows/os_unlink.c dynamic small static
-os_windows/os_yield.c dynamic small static
-qam/qam.c dynamic static vx
-qam/qam_auto.c dynamic static vx
-qam/qam_autop.c app=db_printlog
-qam/qam_conv.c dynamic static vx
-qam/qam_files.c dynamic static vx
-qam/qam_method.c dynamic static vx
-qam/qam_open.c dynamic static vx
-qam/qam_rec.c dynamic static vx
-qam/qam_stat.c dynamic static vx
-qam/qam_stub.c small vxsmall
-qam/qam_upgrade.c dynamic static vx
-qam/qam_verify.c dynamic static vx
-rep/rep_auto.c dynamic static vx
-rep/rep_autop.c app=db_printlog
-rep/rep_backup.c dynamic static vx
-rep/rep_elect.c dynamic static vx
-rep/rep_log.c dynamic static vx
-rep/rep_method.c dynamic static vx
-rep/rep_record.c dynamic static vx
-rep/rep_region.c dynamic static vx
-rep/rep_stat.c dynamic static vx
-rep/rep_stub.c small vxsmall
-rep/rep_util.c dynamic static vx
-rep/rep_verify.c dynamic static vx
-repmgr/repmgr_elect.c dynamic static
-repmgr/repmgr_method.c dynamic static
-repmgr/repmgr_msg.c dynamic static
-repmgr/repmgr_net.c dynamic static
+os/os_dir.c s60 vx vxsmall
+os/os_errno.c s60 vx vxsmall
+os/os_fid.c brew s60 vx vxsmall
+os/os_flock.c brew s60 vx vxsmall
+os/os_fsync.c s60 vx vxsmall
+os/os_fzero.c brew ce ce_small dynamic small static s60 vx vxsmall
+os/os_getenv.c brew s60 vx vxsmall
+os/os_handle.c s60 vx vxsmall
+os/os_map.c brew s60
+os/os_method.c vx vxsmall
+os/os_mkdir.c s60 vx vxsmall
+os/os_oflags.c ce ce_small dynamic small static s60 vx vxsmall
+os/os_open.c s60 vx vxsmall
+os/os_pid.c ce ce_small dynamic small static s60 vx vxsmall
+os/os_region.c brew ce ce_small dynamic small static s60 vx vxsmall
+os/os_rename.c s60 vx vxsmall
+os/os_root.c brew ce ce_small dynamic small static s60 vx vxsmall
+os/os_rpath.c brew ce ce_small dynamic small static s60
+os/os_rw.c s60 vx vxsmall
+os/os_seek.c s60 vx vxsmall
+os/os_sleep.c s60 vx vxsmall
+os/os_spin.c s60 vx vxsmall
+os/os_stat.c s60 vx vxsmall
+os/os_tmpdir.c brew ce ce_small dynamic small static s60 vx vxsmall
+os/os_truncate.c s60 vx vxsmall
+os/os_uid.c brew ce ce_small dynamic small static s60 vx vxsmall
+os/os_unlink.c s60 vx vxsmall
+os/os_yield.c brew s60 vx vxsmall
+os_brew/ctime.c brew
+os_brew/fclose.c brew
+os_brew/fgetc.c brew
+os_brew/fgets.c brew
+os_brew/fopen.c brew
+os_brew/fwrite.c brew
+os_brew/getcwd.c brew
+os_brew/globals.c brew
+os_brew/localtime.c brew
+os_brew/os_abort.c brew
+os_brew/os_abs.c brew
+os_brew/os_config.c brew
+os_brew/os_dir.c brew
+os_brew/os_errno.c brew
+os_brew/os_handle.c brew
+os_brew/os_mkdir.c brew
+os_brew/os_oflags.c brew
+os_brew/os_open.c brew
+os_brew/os_pid.c brew
+os_brew/os_rename.c brew
+os_brew/os_rw.c brew
+os_brew/os_seek.c brew
+os_brew/os_sleep.c brew
+os_brew/os_stat.c brew
+os_brew/os_truncate.c brew
+os_brew/os_unlink.c brew
+os_brew/time.c brew
+os_qnx/os_qnx_open.c
+os_s60/os_config.c s60
+os_vxworks/os_vx_abs.c vx vxsmall
+os_vxworks/os_vx_config.c vx vxsmall
+os_vxworks/os_vx_map.c vx vxsmall
+os_vxworks/os_vx_rpath.c vx vxsmall
+os_windows/ce_ctime.c ce ce_small
+os_windows/ce_time.c ce ce_small
+os_windows/os_abs.c ce ce_small dynamic small static
+os_windows/os_clock.c ce ce_small dynamic small static
+os_windows/os_config.c ce ce_small dynamic small static
+os_windows/os_dir.c ce ce_small dynamic small static
+os_windows/os_errno.c ce ce_small dynamic small static
+os_windows/os_fid.c ce ce_small dynamic small static
+os_windows/os_flock.c ce ce_small dynamic small static
+os_windows/os_fsync.c ce ce_small dynamic small static
+os_windows/os_getenv.c ce ce_small dynamic small static
+os_windows/os_handle.c ce ce_small dynamic small static
+os_windows/os_map.c ce ce_small dynamic small static
+os_windows/os_mkdir.c ce ce_small dynamic small static
+os_windows/os_open.c ce ce_small dynamic small static
+os_windows/os_rename.c ce ce_small dynamic small static
+os_windows/os_rw.c ce ce_small dynamic small static
+os_windows/os_seek.c ce ce_small dynamic small static
+os_windows/os_sleep.c ce ce_small dynamic small static
+os_windows/os_spin.c ce ce_small dynamic small static
+os_windows/os_stat.c ce ce_small dynamic small static
+os_windows/os_truncate.c ce ce_small dynamic small static
+os_windows/os_unlink.c ce ce_small dynamic small static
+os_windows/os_yield.c ce ce_small dynamic small static
+qam/qam.c ce dynamic static vx
+qam/qam_auto.c ce dynamic static vx
+qam/qam_autop.c app=db_printlog
+qam/qam_conv.c ce dynamic static vx
+qam/qam_files.c ce dynamic static vx
+qam/qam_method.c ce dynamic static vx
+qam/qam_open.c ce dynamic static vx
+qam/qam_rec.c ce dynamic static vx
+qam/qam_stat.c ce dynamic static vx
+qam/qam_stub.c brew ce_small small s60 vxsmall
+qam/qam_upgrade.c ce dynamic static vx
+qam/qam_verify.c ce dynamic static vx
+rep/rep_auto.c dynamic static vx
+rep/rep_autop.c app=db_printlog
+rep/rep_backup.c dynamic static vx
+rep/rep_elect.c dynamic static vx
+rep/rep_lease.c dynamic static vx
+rep/rep_log.c dynamic static vx
+rep/rep_method.c dynamic static vx
+rep/rep_record.c dynamic static vx
+rep/rep_region.c dynamic static vx
+rep/rep_stat.c dynamic static vx
+rep/rep_stub.c brew ce ce_small small s60 vxsmall
+rep/rep_util.c dynamic static vx
+rep/rep_verify.c dynamic static vx
+repmgr/repmgr_elect.c dynamic static
+repmgr/repmgr_method.c dynamic static
+repmgr/repmgr_msg.c dynamic static
+repmgr/repmgr_net.c dynamic static
repmgr/repmgr_posix.c
-repmgr/repmgr_queue.c dynamic static
-repmgr/repmgr_sel.c dynamic static
-repmgr/repmgr_stat.c dynamic static
-repmgr/repmgr_util.c dynamic static
-repmgr/repmgr_windows.c dynamic static
+repmgr/repmgr_queue.c dynamic static
+repmgr/repmgr_sel.c dynamic static
+repmgr/repmgr_stat.c dynamic static
+repmgr/repmgr_stub.c brew ce ce_small small s60 vx vxsmall
+repmgr/repmgr_util.c dynamic static
+repmgr/repmgr_windows.c dynamic static
rpc_client/client.c
rpc_client/gen_client.c
rpc_client/gen_client_ret.c
@@ -420,76 +439,90 @@ rpc_server/c/db_server_proc.c
rpc_server/c/db_server_util.c
rpc_server/cxx/db_server_cxxproc.cpp
rpc_server/cxx/db_server_cxxutil.cpp
-sequence/seq_stat.c dynamic small static
-sequence/sequence.c dynamic small static
-tcl/tcl_compat.c tcl
-tcl/tcl_db.c tcl
-tcl/tcl_db_pkg.c tcl
-tcl/tcl_dbcursor.c tcl
-tcl/tcl_env.c tcl
-tcl/tcl_internal.c tcl
-tcl/tcl_lock.c tcl
-tcl/tcl_log.c tcl
-tcl/tcl_mp.c tcl
-tcl/tcl_rep.c tcl
-tcl/tcl_seq.c tcl
-tcl/tcl_txn.c tcl
-tcl/tcl_util.c tcl
-test_perf/db_perf.c app=db_perf
-test_perf/perf_checkpoint.c app=db_perf
-test_perf/perf_config.c app=db_perf
-test_perf/perf_dbs.c app=db_perf
-test_perf/perf_dead.c app=db_perf
-test_perf/perf_debug.c app=db_perf
-test_perf/perf_file.c app=db_perf
-test_perf/perf_key.c app=db_perf
-test_perf/perf_log.c app=db_perf
-test_perf/perf_misc.c app=db_perf
-test_perf/perf_op.c app=db_perf
-test_perf/perf_parse.c app=db_perf
-test_perf/perf_rand.c app=db_perf app=db_reptest
-test_perf/perf_spawn.c app=db_perf
-test_perf/perf_stat.c app=db_perf
-test_perf/perf_sync.c app=db_perf
-test_perf/perf_thread.c app=db_perf
-test_perf/perf_trickle.c app=db_perf
-test_perf/perf_txn.c app=db_perf
-test_perf/perf_util.c app=db_perf
+sequence/seq_stat.c ce ce_small dynamic small static
+sequence/sequence.c ce ce_small dynamic small static
+tcl/tcl_compat.c tcl
+tcl/tcl_db.c tcl
+tcl/tcl_db_pkg.c tcl
+tcl/tcl_dbcursor.c tcl
+tcl/tcl_env.c tcl
+tcl/tcl_internal.c tcl
+tcl/tcl_lock.c tcl
+tcl/tcl_log.c tcl
+tcl/tcl_mp.c tcl
+tcl/tcl_rep.c tcl
+tcl/tcl_seq.c tcl
+tcl/tcl_txn.c tcl
+tcl/tcl_util.c tcl
+test_micro/SOURCE/b_curalloc.c
+test_micro/SOURCE/b_curwalk.c
+test_micro/SOURCE/b_del.c
+test_micro/SOURCE/b_get.c
+test_micro/SOURCE/b_load.c
+test_micro/SOURCE/b_open.c
+test_micro/SOURCE/b_put.c
+test_micro/SOURCE/b_recover.c
+test_micro/SOURCE/b_txn.c
+test_micro/SOURCE/b_txn_write.c
+test_micro/SOURCE/b_workload.c
+test_micro/SOURCE/inmem.c
+test_micro/SOURCE/uname.c
+test_perf/db_perf.c app=db_perf
+test_perf/perf_checkpoint.c app=db_perf
+test_perf/perf_config.c app=db_perf
+test_perf/perf_dbs.c app=db_perf
+test_perf/perf_dead.c app=db_perf
+test_perf/perf_debug.c app=db_perf
+test_perf/perf_file.c app=db_perf
+test_perf/perf_key.c app=db_perf
+test_perf/perf_log.c app=db_perf
+test_perf/perf_misc.c app=db_perf
+test_perf/perf_op.c app=db_perf
+test_perf/perf_parse.c app=db_perf
+test_perf/perf_rand.c app=db_perf app=db_reptest
+test_perf/perf_spawn.c app=db_perf
+test_perf/perf_stat.c app=db_perf
+test_perf/perf_sync.c app=db_perf
+test_perf/perf_thread.c app=db_perf
+test_perf/perf_trickle.c app=db_perf
+test_perf/perf_txn.c app=db_perf
+test_perf/perf_util.c app=db_perf
test_perf/perf_vx.c
-test_rep/db_reptest.c app=db_reptest
-test_rep/reptest_accept.c app=db_reptest
-test_rep/reptest_client.c app=db_reptest
-test_rep/reptest_config.c app=db_reptest
-test_rep/reptest_dbs.c app=db_reptest
-test_rep/reptest_debug.c app=db_reptest
-test_rep/reptest_elect.c app=db_reptest
-test_rep/reptest_env.c app=db_reptest
-test_rep/reptest_exec.c app=db_reptest
-test_rep/reptest_file.c app=db_reptest
-test_rep/reptest_key.c app=db_reptest
-test_rep/reptest_master.c app=db_reptest
-test_rep/reptest_misc.c app=db_reptest
-test_rep/reptest_msg_thread.c app=db_reptest
-test_rep/reptest_op.c app=db_reptest
-test_rep/reptest_parse.c app=db_reptest
-test_rep/reptest_send.c app=db_reptest
-test_rep/reptest_site.c app=db_reptest
-test_rep/reptest_socket.c app=db_reptest
-test_rep/reptest_spawn.c app=db_reptest
-test_rep/reptest_thread.c app=db_reptest
-test_rep/reptest_txn.c app=db_reptest
-test_rep/reptest_util.c app=db_reptest
-txn/txn.c dynamic small static vx vxsmall
-txn/txn_auto.c dynamic small static vx vxsmall
-txn/txn_autop.c app=db_printlog
-txn/txn_chkpt.c dynamic small static vx vxsmall
-txn/txn_failchk.c dynamic small static vx vxsmall
-txn/txn_method.c dynamic small static vx vxsmall
-txn/txn_rec.c dynamic small static vx vxsmall
-txn/txn_recover.c dynamic small static vx vxsmall
-txn/txn_region.c dynamic small static vx vxsmall
-txn/txn_stat.c dynamic small static vx vxsmall
-txn/txn_util.c dynamic small static vx vxsmall
-xa/xa.c dynamic small static vx vxsmall
-xa/xa_db.c dynamic small static vx vxsmall
-xa/xa_map.c dynamic small static vx vxsmall
+test_rep/db_reptest.c app=db_reptest
+test_rep/reptest_accept.c app=db_reptest
+test_rep/reptest_client.c app=db_reptest
+test_rep/reptest_config.c app=db_reptest
+test_rep/reptest_dbs.c app=db_reptest
+test_rep/reptest_debug.c app=db_reptest
+test_rep/reptest_elect.c app=db_reptest
+test_rep/reptest_env.c app=db_reptest
+test_rep/reptest_exec.c app=db_reptest
+test_rep/reptest_file.c app=db_reptest
+test_rep/reptest_key.c app=db_reptest
+test_rep/reptest_master.c app=db_reptest
+test_rep/reptest_misc.c app=db_reptest
+test_rep/reptest_msg_thread.c app=db_reptest
+test_rep/reptest_op.c app=db_reptest
+test_rep/reptest_parse.c app=db_reptest
+test_rep/reptest_send.c app=db_reptest
+test_rep/reptest_site.c app=db_reptest
+test_rep/reptest_socket.c app=db_reptest
+test_rep/reptest_spawn.c app=db_reptest
+test_rep/reptest_thread.c app=db_reptest
+test_rep/reptest_txn.c app=db_reptest
+test_rep/reptest_util.c app=db_reptest
+txn/txn.c brew ce ce_small dynamic small static s60 vx vxsmall
+txn/txn_auto.c brew ce ce_small dynamic small static s60 vx vxsmall
+txn/txn_autop.c app=db_printlog
+txn/txn_chkpt.c brew ce ce_small dynamic small static s60 vx vxsmall
+txn/txn_failchk.c brew ce ce_small dynamic small static s60 vx vxsmall
+txn/txn_method.c brew ce ce_small dynamic small static s60 vx vxsmall
+txn/txn_rec.c brew ce ce_small dynamic small static s60 vx vxsmall
+txn/txn_recover.c brew ce ce_small dynamic small static s60 vx vxsmall
+txn/txn_region.c brew ce ce_small dynamic small static s60 vx vxsmall
+txn/txn_stat.c brew ce ce_small dynamic small static s60 vx vxsmall
+txn/txn_util.c brew ce ce_small dynamic small static s60 vx vxsmall
+xa/xa.c ce ce_small dynamic small static vx vxsmall
+xa/xa_db.c ce ce_small dynamic small static vx vxsmall
+xa/xa_map.c ce ce_small dynamic small static vx vxsmall
+xa/xa_stub.c brew s60
diff --git a/db/dist/tags b/db/dist/tags
index 46ff0c65d..2b272c77b 100644
--- a/db/dist/tags
+++ b/db/dist/tags
@@ -1,115 +1,102 @@
-ACK_WAITER ../repmgr/repmgr_windows.c /^} ACK_WAITER;$/
-ACK_WAITERS_TABLE ../dbinc/repmgr.h /^struct __ack_waiters_table;$/
+ACK_WAITERS_TABLE ../dbinc/repmgr.h 58
ACQUIRE ../btree/bt_cursor.c /^#define ACQUIRE(dbc, mode, lpgno, lock, fpgno, pag/
ACQUIRE_CUR ../btree/bt_cursor.c /^#define ACQUIRE_CUR(dbc, mode, p, flags, ret) do {/
ACQUIRE_WRITE_LOCK ../btree/bt_cursor.c /^#define ACQUIRE_WRITE_LOCK(dbc, ret) do { \\$/
-ACTION ../dbinc/db.in /^} ACTION;$/
+ACTION ../dbinc/db.in 2582
ACTIVATE_CTP ../dbinc/db_server_int.h /^#define ACTIVATE_CTP(ctp, id, type) { \\$/
-ADDRINFO ../dbinc/repmgr.h /^typedef struct addrinfo ADDRINFO;$/
+ADDRINFO ../dbinc/repmgr.h 214
ADDR_LIST_CURRENT ../dbinc/repmgr.h /^#define ADDR_LIST_CURRENT(na) ((na)->current)$/
ADDR_LIST_FIRST ../dbinc/repmgr.h /^#define ADDR_LIST_FIRST(na) ((na)->current = (na)-/
ADDR_LIST_NEXT ../dbinc/repmgr.h /^#define ADDR_LIST_NEXT(na) ((na)->current = (na)->/
ADD_CONFIG_NAME ../tcl/tcl_db_pkg.c /^#define ADD_CONFIG_NAME(name) \\$/
-AES_CIPHER ../dbinc/crypto.h /^} AES_CIPHER;$/
-AI_CANONNAME ../dbinc/repmgr.h /^#define AI_CANONNAME 0x02$/
-AI_NUMERICHOST ../dbinc/repmgr.h /^#define AI_NUMERICHOST 0x04$/
-AI_PASSIVE ../dbinc/repmgr.h /^#define AI_PASSIVE 0x01$/
-ALIGNP_DEC ../dbinc/db_int.in /^#define ALIGNP_DEC(p, bound) \\$/
+AI_CANONNAME ../dbinc/repmgr.h 225
+AI_NUMERICHOST ../dbinc/repmgr.h 227
+AI_PASSIVE ../dbinc/repmgr.h 223
ALIGNP_INC ../dbinc/db_int.in /^#define ALIGNP_INC(p, bound) \\$/
ALIVE_ON ../dbinc/db_int.in /^#define ALIVE_ON(dbenv) ((dbenv)->is_alive != NUL/
ALREADY_FLUSHED ../log/log_put.c /^#define ALREADY_FLUSHED(lp, lsnp) \\$/
ANYSITE ../rep/rep_record.c /^#define ANYSITE(rep)$/
-APPNAME ../dbinc/db_int.in /^} APPNAME;$/
-BACKUP_PREFIX ../db/db.c /^#define BACKUP_PREFIX "__db"$/
-BADARG ../clib/getopt.c /^#define BADARG (int)':'$/
-BADCH ../clib/getopt.c /^#define BADCH (int)'?'$/
-BAD_BLOCK_LENGTH ../crypto/rijndael/rijndael-api-fst.h /^#define BAD_BLOCK_LENGTH -6$/
-BAD_CIPHER_INSTANCE ../crypto/rijndael/rijndael-api-fst.h /^#define BAD_CIPHER_INSTANCE -7$/
-BAD_CIPHER_MODE ../crypto/rijndael/rijndael-api-fst.h /^#define BAD_CIPHER_MODE -4 \/* Params st/
-BAD_CIPHER_STATE ../crypto/rijndael/rijndael-api-fst.h /^#define BAD_CIPHER_STATE -5 \/* Cipher in/
-BAD_DATA ../crypto/rijndael/rijndael-api-fst.h /^#define BAD_DATA -8 \/* Data cont/
-BAD_KEY_DIR ../crypto/rijndael/rijndael-api-fst.h /^#define BAD_KEY_DIR -1 \/* Key direc/
-BAD_KEY_INSTANCE ../crypto/rijndael/rijndael-api-fst.h /^#define BAD_KEY_INSTANCE -3 \/* Key passe/
-BAD_KEY_MAT ../crypto/rijndael/rijndael-api-fst.h /^#define BAD_KEY_MAT -2 \/* Key mater/
-BAD_KILLID ../lock/lock_deadlock.c /^#define BAD_KILLID 0xffffffff$/
-BAD_OTHER ../crypto/rijndael/rijndael-api-fst.h /^#define BAD_OTHER -9 \/* Unknown e/
-BFMSG ../db185/db185.c /^#define BFMSG \\$/
-BH ../dbinc/mp.h /^struct __bh; typedef struct __bh BH;$/
-BH_CALLPGIN ../dbinc/mp.h /^#define BH_CALLPGIN 0x001 \/* Convert the page be/
-BH_DIRTY ../dbinc/mp.h /^#define BH_DIRTY 0x002 \/* Page is modified. *\/$/
-BH_DIRTY_CREATE ../dbinc/mp.h /^#define BH_DIRTY_CREATE 0x004 \/* Page is modifie/
-BH_DISCARD ../dbinc/mp.h /^#define BH_DISCARD 0x008 \/* Page is useless. *\//
-BH_FREED ../dbinc/mp.h /^#define BH_FREED 0x010 \/* Page was freed. *\/$/
-BH_FREE_FREEMEM ../dbinc/mp.h /^#define BH_FREE_FREEMEM 0x01$/
-BH_FREE_REUSE ../dbinc/mp.h /^#define BH_FREE_REUSE 0x02$/
-BH_FREE_UNLOCKED ../dbinc/mp.h /^#define BH_FREE_UNLOCKED 0x04$/
-BH_FROZEN ../dbinc/mp.h /^#define BH_FROZEN 0x020 \/* Frozen buffer: alloca/
-BH_FROZEN_ALLOC ../dbinc/mp.h /^struct __bh_frozen_a; typedef struct __bh_frozen_a/
-BH_FROZEN_PAGE ../dbinc/mp.h /^struct __bh_frozen; typedef struct __bh_frozen_p B/
-BH_LOCKED ../dbinc/mp.h /^#define BH_LOCKED 0x040 \/* Page is locked (I\/O /
+APPNAME ../dbinc/db_int.in 361
+BACKUP_PREFIX ../db/db.c 1193
+BADARG ../clib/getopt.c 52
+BADCH ../clib/getopt.c 50
+BAD_BLOCK_LENGTH ../crypto/rijndael/rijndael-api-fst.h 64
+BAD_CIPHER_INSTANCE ../crypto/rijndael/rijndael-api-fst.h 65
+BAD_CIPHER_MODE ../crypto/rijndael/rijndael-api-fst.h 62
+BAD_CIPHER_STATE ../crypto/rijndael/rijndael-api-fst.h 63
+BAD_DATA ../crypto/rijndael/rijndael-api-fst.h 66
+BAD_KEY_DIR ../crypto/rijndael/rijndael-api-fst.h 59
+BAD_KEY_INSTANCE ../crypto/rijndael/rijndael-api-fst.h 61
+BAD_KEY_MAT ../crypto/rijndael/rijndael-api-fst.h 60
+BAD_KILLID ../lock/lock_deadlock.c 32
+BAD_OTHER ../crypto/rijndael/rijndael-api-fst.h 67
+BFMSG ../db185/db185.c 173
+BH ../dbinc/mp.h 16
+BH_CALLPGIN ../dbinc/mp.h 487
+BH_DIRTY ../dbinc/mp.h 488
+BH_DIRTY_CREATE ../dbinc/mp.h 489
+BH_DISCARD ../dbinc/mp.h 490
+BH_FREED ../dbinc/mp.h 491
+BH_FREE_FREEMEM ../dbinc/mp.h 475
+BH_FREE_REUSE ../dbinc/mp.h 476
+BH_FREE_UNLOCKED ../dbinc/mp.h 477
+BH_FROZEN ../dbinc/mp.h 492
+BH_FROZEN_ALLOC ../dbinc/mp.h 18
+BH_FROZEN_PAGE ../dbinc/mp.h 17
+BH_LOCKED ../dbinc/mp.h 493
BH_OBSOLETE ../dbinc/mp.h /^#define BH_OBSOLETE(bhp, old_lsn) ((SH_CHAIN_HASNE/
BH_OWNED_BY ../dbinc/mp.h /^#define BH_OWNED_BY(dbenv, bhp, txn) ((txn) != NUL/
BH_OWNER ../dbinc/mp.h /^#define BH_OWNER(dbenv, bhp) \\$/
BH_PRIORITY ../dbinc/mp.h /^#define BH_PRIORITY(bhp) \\$/
-BH_TRACK ../mp/mp_sync.c /^} BH_TRACK;$/
-BH_TRASH ../dbinc/mp.h /^#define BH_TRASH 0x080 \/* Page is garbage. *\/$/
-BINTERNAL ../dbinc/db_page.h /^} BINTERNAL;$/
+BH_TRASH ../dbinc/mp.h 494
BINTERNAL_PSIZE ../dbinc/db_page.h /^#define BINTERNAL_PSIZE(len) \\$/
BINTERNAL_SIZE ../dbinc/db_page.h /^#define BINTERNAL_SIZE(len) \\$/
BITEM_PSIZE ../dbinc/db_page.h /^#define BITEM_PSIZE(bk) \\$/
BITEM_SIZE ../dbinc/db_page.h /^#define BITEM_SIZE(bk) \\$/
-BITSPERBLOCK ../crypto/rijndael/rijndael-api-fst.h /^#define BITSPERBLOCK 128 \/* Default nu/
-BI_DELETED ../dbinc/btree.h /^#define BI_DELETED 0x01 \/* Key\/data pair only p/
-BKEYDATA ../dbinc/db_page.h /^} BKEYDATA;$/
+BITSPERBLOCK ../crypto/rijndael/rijndael-api-fst.h 56
+BI_DELETED ../dbinc/btree.h 75
BKEYDATA_PSIZE ../dbinc/db_page.h /^#define BKEYDATA_PSIZE(len) \\$/
BKEYDATA_SIZE ../dbinc/db_page.h /^#define BKEYDATA_SIZE(len) \\$/
-BOVERFLOW ../dbinc/db_page.h /^} BOVERFLOW;$/
-BOVERFLOW_PSIZE ../dbinc/db_page.h /^#define BOVERFLOW_PSIZE \\$/
-BOVERFLOW_SIZE ../dbinc/db_page.h /^#define BOVERFLOW_SIZE \\$/
-BPI_NORECNUM ../dbinc/btree.h /^#define BPI_NORECNUM 0x02 \/* Not update the recn/
-BPI_SPACEONLY ../dbinc/btree.h /^#define BPI_SPACEONLY 0x01 \/* Only check for spa/
+BOVERFLOW_PSIZE ../dbinc/db_page.h 587
+BOVERFLOW_SIZE ../dbinc/db_page.h 585
+BPI_NORECNUM ../dbinc/btree.h 332
+BPI_SPACEONLY ../dbinc/btree.h 331
BS_TO_PAGE ../dbinc/hash.h /^#define BS_TO_PAGE(bucket, spares) \\$/
-BTMETA ../dbinc/db_page.h /^} BTMETA33, BTMETA;$/
-BTMETA2X ../dbinc/db_upgrade.h /^} BTMETA2X;$/
-BTMETA30 ../dbinc/db_upgrade.h /^} BTMETA30;$/
-BTMETA31 ../dbinc/db_upgrade.h /^} BTMETA31;$/
-BTM_DUP ../dbinc/db_page.h /^#define BTM_DUP 0x001 \/* Duplicates. *\/$/
-BTM_DUPSORT ../dbinc/db_page.h /^#define BTM_DUPSORT 0x040 \/* Duplicates are sor/
-BTM_FIXEDLEN ../dbinc/db_page.h /^#define BTM_FIXEDLEN 0x008 \/* Recno: fixed leng/
-BTM_MASK ../dbinc/db_page.h /^#define BTM_MASK 0x07f$/
-BTM_RECNO ../dbinc/db_page.h /^#define BTM_RECNO 0x002 \/* Recno tree. *\/$/
-BTM_RECNUM ../dbinc/db_page.h /^#define BTM_RECNUM 0x004 \/* Btree: maintain rec/
-BTM_RENUMBER ../dbinc/db_page.h /^#define BTM_RENUMBER 0x010 \/* Recno: renumber o/
-BTM_SUBDB ../dbinc/db_page.h /^#define BTM_SUBDB 0x020 \/* Subdatabases. *\/$/
-BTREE ../dbinc/btree.h /^struct __btree; typedef struct __btree BTREE;$/
-BTREEINFO ../dbinc/db_185.in /^} BTREEINFO;$/
-BTREEMAGIC ../dbinc/db_185.in /^#define BTREEMAGIC 0x053162$/
-BTREEVERSION ../dbinc/db_185.in /^#define BTREEVERSION 3$/
-BTREE_CURSOR ../dbinc/btree.h /^struct __cursor; typedef struct __cursor BTREE_CUR/
+BTM_DUP ../dbinc/db_page.h 95
+BTM_DUPSORT ../dbinc/db_page.h 101
+BTM_FIXEDLEN ../dbinc/db_page.h 98
+BTM_MASK ../dbinc/db_page.h 102
+BTM_RECNO ../dbinc/db_page.h 96
+BTM_RECNUM ../dbinc/db_page.h 97
+BTM_RENUMBER ../dbinc/db_page.h 99
+BTM_SUBDB ../dbinc/db_page.h 100
+BTREE ../dbinc/btree.h 51
+BTREEMAGIC ../dbinc/db_185.in 123
+BTREEVERSION ../dbinc/db_185.in 124
+BTREE_CURSOR ../dbinc/btree.h 52
BT_STK_CLR ../dbinc/btree.h /^#define BT_STK_CLR(c) do { \\$/
BT_STK_ENTER ../dbinc/btree.h /^#define BT_STK_ENTER(dbenv, c, pagep, page_indx, l/
BT_STK_NUM ../dbinc/btree.h /^#define BT_STK_NUM(dbenv, c, pagep, page_indx, ret/
BT_STK_NUMPUSH ../dbinc/btree.h /^#define BT_STK_NUMPUSH(dbenv, c, pagep, page_indx,/
BT_STK_POP ../dbinc/btree.h /^#define BT_STK_POP(c) \\$/
BT_STK_PUSH ../dbinc/btree.h /^#define BT_STK_PUSH(dbenv, c, pagep, page_indx, lo/
-BUCKET_INVALID ../dbinc/hash.h /^#define BUCKET_INVALID 0xFFFFFFFF$/
+BUCKET_INVALID ../dbinc/hash.h 115
BUCKET_TO_PAGE ../dbinc/hash.h /^#define BUCKET_TO_PAGE(I, B) (BS_TO_PAGE((B), (I)-/
-BULK_FORCE ../dbinc/rep.h /^#define BULK_FORCE 0x001 \/* Force buffer after t/
-BULK_XMIT ../dbinc/rep.h /^#define BULK_XMIT 0x002 \/* Buffer in transit. */
+BULK_XMIT ../dbinc/rep.h 639
B_DCLR ../dbinc/db_page.h /^#define B_DCLR(t) (t) &= ~B_DELETE$/
-B_DELETE ../dbinc/db_page.h /^#define B_DELETE (0x80)$/
+B_DELETE ../dbinc/db_page.h 531
B_DISSET ../dbinc/db_page.h /^#define B_DISSET(t) ((t) & B_DELETE)$/
B_DSET ../dbinc/db_page.h /^#define B_DSET(t) (t) |= B_DELETE$/
-B_DUPLICATE ../dbinc/db_page.h /^#define B_DUPLICATE 2 \/* Duplicate key\/data item/
-B_KEYDATA ../dbinc/db_page.h /^#define B_KEYDATA 1 \/* Key\/data item. *\/$/
+B_DUPLICATE ../dbinc/db_page.h 522
+B_KEYDATA ../dbinc/db_page.h 521
B_MAX ../dbinc/btree.h /^#define B_MAX(a,b) (((a) > (b)) ? (a) : (b))$/
B_MAXSIZEONPAGE ../dbinc/btree.h /^#define B_MAXSIZEONPAGE(ovflsize) \\$/
B_MINKEY_TO_OVFLSIZE ../dbinc/btree.h /^#define B_MINKEY_TO_OVFLSIZE(dbp, minkey, pgsize) /
-B_OVERFLOW ../dbinc/db_page.h /^#define B_OVERFLOW 3 \/* Overflow key\/data item. /
+B_OVERFLOW ../dbinc/db_page.h 523
B_TSET ../dbinc/db_page.h /^#define B_TSET(t, type) ((t) = B_TYPE(type))$/
B_TSET_DELETED ../dbinc/db_page.h /^#define B_TSET_DELETED(t, type) ((t) = (type) | B_/
B_TYPE ../dbinc/db_page.h /^#define B_TYPE(t) ((t) & ~B_DELETE)$/
-CAD_UPDATEROOT ../dbinc/btree.h /^#define CAD_UPDATEROOT 0x01 \/* Root page count w/
+CAD_UPDATEROOT ../dbinc/btree.h 69
CALC_QAM_RECNO_PER_PAGE ../dbinc/qam.h /^#define CALC_QAM_RECNO_PER_PAGE(dbp) \\$/
CDB_LOCKING ../dbinc/db_int.in /^#define CDB_LOCKING(dbenv) F_ISSET(dbenv, DB_ENV_C/
CDB_LOCKING_DONE ../db/db_cam.c /^#define CDB_LOCKING_DONE(dbenv, dbc) \\$/
@@ -117,738 +104,819 @@ CDB_LOCKING_INIT ../db/db_cam.c /^#define CDB_LOCKING_INIT(dbenv, dbc) \\$/
CD_CLR ../btree/bt_recno.c /^#define CD_CLR(cp) { \\$/
CD_ISSET ../btree/bt_recno.c /^#define CD_ISSET(cp) \\$/
CD_SET ../btree/bt_recno.c /^#define CD_SET(cp) { \\$/
-CHAR64LONG16 ../hmac/sha1.c /^} CHAR64LONG16;$/
-CHARKEY ../dbinc/hash.h /^#define CHARKEY "%$sniglet^&"$/
+CHARKEY ../dbinc/hash.h 96
CHECK_LSN ../dbinc/log.h /^#define CHECK_LSN(e, redo, cmp, lsn, prev) \\$/
CHECK_MTX_THREAD ../dbinc/db_int.in /^#define CHECK_MTX_THREAD(dbenv, mtx) do { \\$/
CHECK_THREAD ../dbinc/db_int.in /^#define CHECK_THREAD(dbenv) do { \\$/
-CIPHER ../dbinc/crypto.h /^} CIPHER;$/
-CIPHER_AES ../dbinc/crypto.h /^#define CIPHER_AES 1 \/* AES algorithm *\/$/
-CIPHER_ANY ../dbinc/crypto.h /^#define CIPHER_ANY 0x00000001 \/* Only for DB_CIPH/
-CKPLSN_CMP ../dbinc/log.h /^#define CKPLSN_CMP 0$/
-CLEAR_BYTE ../dbinc/debug.h /^#define CLEAR_BYTE 0xdb$/
+CIPHER_AES ../dbinc/crypto.h 48
+CIPHER_ANY ../dbinc/crypto.h 52
+CKPLSN_CMP ../dbinc/log.h 415
+CLEAR_BYTE ../dbinc/debug.h 27
CLEAR_MAP ../lock/lock_deadlock.c /^#define CLEAR_MAP(M, N) { \\$/
CLIENT_ONLY ../rep/rep_record.c /^#define CLIENT_ONLY(rep, rp) do { \\$/
-CLIENT_REREQ ../rep/rep_record.c /^#define CLIENT_REREQ do { \\$/
+CLIENT_REREQ ../rep/rep_record.c 74
CLOSE_HANDLE ../fileops/fop_util.c /^#define CLOSE_HANDLE(D, F) { \\$/
-CLR_MAP ../lock/lock_deadlock.c /^#define CLR_MAP(M, B) ((M)[(B) \/ 32] &= ~((u_int)/
+CLR_MAP ../lock/lock_deadlock.c /^#define CLR_MAP(M, B) ((M)[(B) \/ 32] &= ~((u_int)1/
COMPQUIET ../dbinc/debug.h /^#define COMPQUIET(n, v) do { \\$/
CONFIG_GET_INT ../env/env_config.c /^#define CONFIG_GET_INT(s, vp) do { \\$/
CONFIG_GET_LONG ../env/env_config.c /^#define CONFIG_GET_LONG(s, vp) do { \\$/
CONFIG_GET_UINT32 ../env/env_config.c /^#define CONFIG_GET_UINT32(s, vp) do { \\$/
CONFIG_INT ../env/env_config.c /^#define CONFIG_INT(s, f) do { \\$/
-CONFIG_SLOTS ../env/env_config.c /^#define CONFIG_SLOTS 10$/
+CONFIG_SLOTS ../env/env_config.c 110
CONFIG_UINT32 ../env/env_config.c /^#define CONFIG_UINT32(s, f) do { \\$/
CONFLICTS ../dbinc/lock.h /^#define CONFLICTS(T, R, HELD, WANTED) \\$/
-CONNECTION_LIST ../dbinc/repmgr.h /^typedef TAILQ_HEAD(__repmgr_conn_list, __repmgr_co/
-CONN_CONNECTING ../dbinc/repmgr.h /^#define CONN_CONNECTING 0x01 \/* nonblocking conne/
-CONN_DEFUNCT ../dbinc/repmgr.h /^#define CONN_DEFUNCT 0x02 \/* socket close pending/
+CONN_CONNECTING ../dbinc/repmgr.h 174
+CONN_DEFUNCT ../dbinc/repmgr.h 175
COPY_OBJ ../lock/lock_list.c /^#define COPY_OBJ(dp, obj) do { \\$/
COPY_RET_MEM ../dbinc/db_int.in /^#define COPY_RET_MEM(src, dest) \\$/
CRYPTO_ON ../dbinc/db_int.in /^#define CRYPTO_ON(dbenv) ((dbenv)->crypto_handle !/
CRYPTO_ONLY ../libdb_java/db_java_wrap.c /^#define CRYPTO_ONLY(x) (x);$/
-CS_DEL ../btree/bt_compact.c /^#define CS_DEL 4 \/* Get a stack to delete a page/
-CS_GETRECNO ../btree/bt_compact.c /^#define CS_GETRECNO 0x80 \/* Extract record nu/
-CS_NEXT ../btree/bt_compact.c /^#define CS_NEXT 2 \/* Get the next page. *\/$/
-CS_NEXT_WRITE ../btree/bt_compact.c /^#define CS_NEXT_WRITE 3 \/* Get the next page and /
-CS_PARENT ../btree/bt_compact.c /^#define CS_PARENT 1 \/* We want the parent too, wr/
-CS_READ ../btree/bt_compact.c /^#define CS_READ 0 \/* We are just reading. *\/$/
-CS_START ../btree/bt_compact.c /^#define CS_START 5 \/* Starting level for stack, w/
-CTIME_BUFLEN ../dbinc/os.h /^#define CTIME_BUFLEN 26$/
+CS_DEL ../btree/bt_compact.c 289
+CS_GETRECNO ../btree/bt_compact.c 291
+CS_NEXT ../btree/bt_compact.c 287
+CS_NEXT_WRITE ../btree/bt_compact.c 288
+CS_PARENT ../btree/bt_compact.c 286
+CS_READ ../btree/bt_compact.c 285
+CS_START ../btree/bt_compact.c 290
+CTIME_BUFLEN ../dbinc/os.h 133
CTRACE ../btree/bt_compact.c /^#define CTRACE(dbc, location, t, start, f) do { /
-CT_CURSOR ../dbinc/db_server_int.h /^#define CT_CURSOR 0x001 \/* Cursor *\/$/
-CT_DB ../dbinc/db_server_int.h /^#define CT_DB 0x002 \/* Database *\/$/
-CT_ENV ../dbinc/db_server_int.h /^#define CT_ENV 0x004 \/* Env *\/$/
-CT_JOIN ../dbinc/db_server_int.h /^#define CT_JOIN 0x10000000 \/* Join cursor compon/
-CT_JOINCUR ../dbinc/db_server_int.h /^#define CT_JOINCUR 0x20000000 \/* Join cursor *\/$/
-CT_TXN ../dbinc/db_server_int.h /^#define CT_TXN 0x008 \/* Txn *\/$/
+CT_CURSOR ../dbinc/db_server_int.h 35
+CT_DB ../dbinc/db_server_int.h 36
+CT_ENV ../dbinc/db_server_int.h 37
+CT_JOIN ../dbinc/db_server_int.h 40
+CT_JOINCUR ../dbinc/db_server_int.h 41
+CT_TXN ../dbinc/db_server_int.h 38
CURADJ_LOG ../btree/bt_recno.c /^#define CURADJ_LOG(dbc) \\$/
-C_DELETED ../dbinc/btree.h /^#define C_DELETED 0x0001 \/* Record was deleted. /
+C_DELETED ../dbinc/btree.h 225
C_EQUAL ../btree/bt_recno.c /^#define C_EQUAL(cp1, cp2) \\$/
C_LESSTHAN ../btree/bt_recno.c /^#define C_LESSTHAN(cp1, cp2) \\$/
-C_RECNUM ../dbinc/btree.h /^#define C_RECNUM 0x0002 \/* Tree requires record /
-C_RENUMBER ../dbinc/btree.h /^#define C_RENUMBER 0x0004 \/* Tree records are mu/
-DATA_INIT_CNT ../env/env_method.c /^#define DATA_INIT_CNT 20 \/* Start with 20 data /
-DB ../dbinc/db.in /^struct __db; typedef struct __db DB;$/
-DB2JDBENV ../libdb_java/db_java_wrap.c /^#define DB2JDBENV ((jobject)DB_ENV_INTERNAL(arg1->/
-DBC ../dbinc/db.in /^struct __dbc; typedef struct __dbc DBC;$/
-DBC2JDBENV ../libdb_java/db_java_wrap.c /^#define DBC2JDBENV ((jobject)DB_ENV_INTERNAL(arg1-/
-DBC_ACTIVE ../dbinc/db.in /^#define DBC_ACTIVE 0x0001 \/* Cursor in use. *\/$/
-DBC_DONTLOCK ../dbinc/db.in /^#define DBC_DONTLOCK 0x0002 \/* Don't lock on thi/
-DBC_INTERNAL ../dbinc/db.in /^struct __dbc_internal; typedef struct __dbc_intern/
+C_RECNUM ../dbinc/btree.h 231
+C_RENUMBER ../dbinc/btree.h 238
+DATA_INIT_CNT ../env/env_method.c 737
+DB ../dbinc/db.in 138
+DB2JDBENV ../libdb_java/db_java_wrap.c 1125
+DBC ../dbinc/db.in 178
+DBC2JDBENV ../libdb_java/db_java_wrap.c 1126
+DBC_ACTIVE ../dbinc/db.in 1961
+DBC_DONTLOCK ../dbinc/db.in 1962
+DBC_INTERNAL ../dbinc/db.in 179
DBC_LOGGING ../dbinc/db_int.in /^#define DBC_LOGGING(dbc) __dbc_logging(dbc)$/
-DBC_METHOD ../cxx/cxx_dbc.cpp /^\/\/ Helper macro for simple methods that pass thr/
-DBC_MULTIPLE ../dbinc/db.in /^#define DBC_MULTIPLE 0x0004 \/* Return Multiple d/
-DBC_MULTIPLE_KEY ../dbinc/db.in /^#define DBC_MULTIPLE_KEY 0x0008 \/* Return Multipl/
-DBC_OPD ../dbinc/db.in /^#define DBC_OPD 0x0010 \/* Cursor references off/
-DBC_OWN_LID ../dbinc/db.in /^#define DBC_OWN_LID 0x0020 \/* Free lock id on de/
-DBC_READ_COMMITTED ../dbinc/db.in /^#define DBC_READ_COMMITTED 0x0040 \/* Cursor has d/
-DBC_READ_UNCOMMITTED ../dbinc/db.in /^#define DBC_READ_UNCOMMITTED 0x0080 \/* Cursor has/
-DBC_RECOVER ../dbinc/db.in /^#define DBC_RECOVER 0x0100 \/* Recovery cursor; d/
-DBC_RMW ../dbinc/db.in /^#define DBC_RMW 0x0200 \/* Acquire write flag in/
-DBC_TRANSIENT ../dbinc/db.in /^#define DBC_TRANSIENT 0x0400 \/* Cursor is transi/
-DBC_WRITECURSOR ../dbinc/db.in /^#define DBC_WRITECURSOR 0x0800 \/* Cursor may be /
-DBC_WRITER ../dbinc/db.in /^#define DBC_WRITER 0x1000 \/* Cursor immediately /
+DBC_METHOD ../cxx/cxx_dbc.cpp /^#define DBC_METHOD(_name, _argspec, _arglist, _ret/
+DBC_MULTIPLE ../dbinc/db.in 1963
+DBC_MULTIPLE_KEY ../dbinc/db.in 1964
+DBC_OPD ../dbinc/db.in 1965
+DBC_OWN_LID ../dbinc/db.in 1966
+DBC_READ_COMMITTED ../dbinc/db.in 1967
+DBC_READ_UNCOMMITTED ../dbinc/db.in 1968
+DBC_RECOVER ../dbinc/db.in 1969
+DBC_RMW ../dbinc/db.in 1970
+DBC_TRANSIENT ../dbinc/db.in 1971
+DBC_WRITECURSOR ../dbinc/db.in 1972
+DBC_WRITER ../dbinc/db.in 1973
DBENV_LOGGING ../dbinc/db_int.in /^#define DBENV_LOGGING(dbenv) \\$/
DBENV_METHOD ../cxx/cxx_env.cpp /^#define DBENV_METHOD(_name, _argspec, _arglist) /
-DBENV_METHOD_ERR ../cxx/cxx_env.cpp /^\/\/ Helper macros for simple methods that pass th/
+DBENV_METHOD_ERR ../cxx/cxx_env.cpp /^#define DBENV_METHOD_ERR(_name, _argspec, _arglist/
DBENV_METHOD_QUIET ../cxx/cxx_env.cpp /^#define DBENV_METHOD_QUIET(_name, _argspec, _argli/
DBENV_METHOD_VOID ../cxx/cxx_env.cpp /^#define DBENV_METHOD_VOID(_name, _argspec, _arglis/
-DBLOG_FORCE_OPEN ../dbinc/log.h /^#define DBLOG_FORCE_OPEN 0x02 \/* Force the DB ope/
-DBLOG_RECOVER ../dbinc/log.h /^#define DBLOG_RECOVER 0x01 \/* We are in recovery/
-DBM ../dbinc/db.in /^typedef struct __db DBM;$/
-DBMETA ../dbinc/db_page.h /^} DBMETA33, DBMETA;$/
-DBMETA30 ../dbinc/db_upgrade.h /^} DBMETA30;$/
-DBMETA31 ../dbinc/db_upgrade.h /^} DBMETA31;$/
-DBMETASIZE ../dbinc/db_page.h /^#define DBMETASIZE 512$/
-DBMETA_CHKSUM ../dbinc/db_page.h /^#define DBMETA_CHKSUM 0x01$/
-DBM_INSERT ../dbinc/db.in /^#define DBM_INSERT 0 \/* Flags to dbm_store(). */
-DBM_REPLACE ../dbinc/db.in /^#define DBM_REPLACE 1$/
-DBM_SUFFIX ../dbinc/db.in /^#define DBM_SUFFIX ".db"$/
-DBREG_CHKPNT ../dbinc/log.h /^#define DBREG_CHKPNT 1 \/* Checkpoint: file name/
-DBREG_CLOSE ../dbinc/log.h /^#define DBREG_CLOSE 2 \/* File close. *\/$/
-DBREG_OPEN ../dbinc/log.h /^#define DBREG_OPEN 3 \/* File open. *\/$/
-DBREG_PREOPEN ../dbinc/log.h /^#define DBREG_PREOPEN 4 \/* Open in mpool only. */
-DBREG_RCLOSE ../dbinc/log.h /^#define DBREG_RCLOSE 5 \/* File close after recov/
-DBREG_REOPEN ../dbinc/log.h /^#define DBREG_REOPEN 6 \/* Open for in-memory dat/
-DBREP_OPENFILES ../dbinc/rep.h /^#define DBREP_OPENFILES 0x0001 \/* This handle ha/
-DBSEQ_METHOD ../cxx/cxx_seq.cpp /^\/\/ Helper macro for simple methods that pass thr/
-DBT ../dbinc/db.in /^struct __db_dbt; typedef struct __db_dbt DBT;$/
-DBTBUFLEN ../db/db_pr.c /^#define DBTBUFLEN 100$/
-DBTCL_DBM ../dbinc/tcl_db.h /^#define DBTCL_DBM 1$/
-DBTCL_GLOBAL ../dbinc/tcl_db.h /^} DBTCL_GLOBAL;$/
-DBTCL_INFO ../dbinc/tcl_db.h /^} DBTCL_INFO;$/
-DBTCL_NDBM ../dbinc/tcl_db.h /^#define DBTCL_NDBM 2$/
-DBTCL_PREP ../dbinc/tcl_db.h /^#define DBTCL_PREP 64 \/* Size of txn_recover prep/
-DBTXN_METHOD ../cxx/cxx_txn.cpp /^\/\/ Helper macro for simple methods that pass thr/
-DBTYPE ../dbinc/db.in /^} DBTYPE;$/
-DBT_LOCKED ../libdb_java/db_java_wrap.c /^} DBT_LOCKED;$/
-DB_ADDSTR ../env/env_open.c /^#define DB_ADDSTR(add) { \\$/
-DB_ADD_BIG ../dbinc/db_am.h /^#define DB_ADD_BIG 3$/
-DB_ADD_DUP ../dbinc/db_am.h /^#define DB_ADD_DUP 1$/
-DB_ADD_PAGE_COMPAT ../dbinc/db_am.h /^#define DB_ADD_PAGE_COMPAT 5 \/* Compatibility for/
-DB_AES_CHUNK ../dbinc/crypto.h /^#define DB_AES_CHUNK 16 \/* AES byte unit size *\//
-DB_AES_KEYLEN ../dbinc/crypto.h /^#define DB_AES_KEYLEN 128 \/* AES key length *\/$/
-DB_AFTER ../dbinc/db.in /^#define DB_AFTER 1 \/* c_put() *\/$/
-DB_AGGRESSIVE ../dbinc/db.in /^#define DB_AGGRESSIVE 0x0000001 \/* Salvage /
+DBLOG_FORCE_OPEN ../dbinc/log.h 122
+DBLOG_OPENFILES ../dbinc/log.h 124
+DBLOG_RECOVER ../dbinc/log.h 125
+DBM ../dbinc/db.in 2519
+DBMETASIZE ../dbinc/db_page.h 182
+DBMETA_CHKSUM ../dbinc/db_page.h 78
+DBM_INSERT ../dbinc/db.in 2521
+DBM_REPLACE ../dbinc/db.in 2522
+DBM_SUFFIX ../dbinc/db.in 2528
+DBREG_CHKPNT ../dbinc/log.h 62
+DBREG_CLOSE ../dbinc/log.h 63
+DBREG_OPEN ../dbinc/log.h 64
+DBREG_PREOPEN ../dbinc/log.h 65
+DBREG_RCLOSE ../dbinc/log.h 66
+DBREG_REOPEN ../dbinc/log.h 67
+DBREP_OPENFILES ../dbinc/rep.h 458
+DBSEQ_METHOD ../cxx/cxx_seq.cpp /^#define DBSEQ_METHOD(_name, _argspec, _arglist, _d/
+DBT ../dbinc/db.in 142
+DBTBUFLEN ../db/db_pr.c 1132
+DBTCL_DBM ../dbinc/tcl_db.h 24
+DBTCL_NDBM ../dbinc/tcl_db.h 25
+DBTCL_PREP ../dbinc/tcl_db.h 22
+DBTXN_METHOD ../cxx/cxx_txn.cpp /^#define DBTXN_METHOD(_name, _delete, _argspec, _ar/
+DBTYPE ../dbinc/db.in 1376
+DB_ADDSTR ../env/env_name.c /^#define DB_ADDSTR(add) { \\$/
+DB_ADD_BIG ../dbinc/db_am.h 41
+DB_ADD_DUP ../dbinc/db_am.h 39
+DB_ADD_PAGE_COMPAT ../dbinc/db_am.h 43
+DB_AES_CHUNK ../dbinc/crypto.h 71
+DB_AES_KEYLEN ../dbinc/crypto.h 70
+DB_AFTER ../dbinc/db.in 1399
+DB_AGGRESSIVE ../dbinc/db.in 408
DB_ALIGN ../dbinc/db_int.in /^#define DB_ALIGN(v, bound) \\$/
-DB_ALREADY_ABORTED ../dbinc/db.in /^#define DB_ALREADY_ABORTED (-30899)$/
-DB_AM_CHKSUM ../dbinc/db.in /^#define DB_AM_CHKSUM 0x00000001 \/* Checksumming /
-DB_AM_CL_WRITER ../dbinc/db.in /^#define DB_AM_CL_WRITER 0x00000002 \/* Allow writ/
-DB_AM_COMPENSATE ../dbinc/db.in /^#define DB_AM_COMPENSATE 0x00000004 \/* Created by/
-DB_AM_CREATED ../dbinc/db.in /^#define DB_AM_CREATED 0x00000008 \/* Database was/
-DB_AM_CREATED_MSTR ../dbinc/db.in /^#define DB_AM_CREATED_MSTR 0x00000010 \/* Encompas/
-DB_AM_DBM_ERROR ../dbinc/db.in /^#define DB_AM_DBM_ERROR 0x00000020 \/* Error in D/
-DB_AM_DELIMITER ../dbinc/db.in /^#define DB_AM_DELIMITER 0x00000040 \/* Variable l/
-DB_AM_DISCARD ../dbinc/db.in /^#define DB_AM_DISCARD 0x00000080 \/* Discard any /
-DB_AM_DUP ../dbinc/db.in /^#define DB_AM_DUP 0x00000100 \/* DB_DUP *\/$/
-DB_AM_DUPSORT ../dbinc/db.in /^#define DB_AM_DUPSORT 0x00000200 \/* DB_DUPSORT */
-DB_AM_ENCRYPT ../dbinc/db.in /^#define DB_AM_ENCRYPT 0x00000400 \/* Encryption */
-DB_AM_FIXEDLEN ../dbinc/db.in /^#define DB_AM_FIXEDLEN 0x00000800 \/* Fixed-lengt/
-DB_AM_INMEM ../dbinc/db.in /^#define DB_AM_INMEM 0x00001000 \/* In-memory; no /
-DB_AM_INORDER ../dbinc/db.in /^#define DB_AM_INORDER 0x00002000 \/* DB_INORDER */
-DB_AM_IN_RENAME ../dbinc/db.in /^#define DB_AM_IN_RENAME 0x00004000 \/* File is be/
-DB_AM_NOT_DURABLE ../dbinc/db.in /^#define DB_AM_NOT_DURABLE 0x00008000 \/* Do not lo/
-DB_AM_OPEN_CALLED ../dbinc/db.in /^#define DB_AM_OPEN_CALLED 0x00010000 \/* DB->open /
-DB_AM_PAD ../dbinc/db.in /^#define DB_AM_PAD 0x00020000 \/* Fixed-length rec/
-DB_AM_PGDEF ../dbinc/db.in /^#define DB_AM_PGDEF 0x00040000 \/* Page size was /
-DB_AM_RDONLY ../dbinc/db.in /^#define DB_AM_RDONLY 0x00080000 \/* Database is r/
-DB_AM_READ_UNCOMMITTED ../dbinc/db.in /^#define DB_AM_READ_UNCOMMITTED 0x00100000 \/* Supp/
-DB_AM_RECNUM ../dbinc/db.in /^#define DB_AM_RECNUM 0x00200000 \/* DB_RECNUM *\//
-DB_AM_RECOVER ../dbinc/db.in /^#define DB_AM_RECOVER 0x00400000 \/* DB opened by/
-DB_AM_RENUMBER ../dbinc/db.in /^#define DB_AM_RENUMBER 0x00800000 \/* DB_RENUMBER/
-DB_AM_REVSPLITOFF ../dbinc/db.in /^#define DB_AM_REVSPLITOFF 0x01000000 \/* DB_REVSPL/
-DB_AM_SECONDARY ../dbinc/db.in /^#define DB_AM_SECONDARY 0x02000000 \/* Database i/
-DB_AM_SNAPSHOT ../dbinc/db.in /^#define DB_AM_SNAPSHOT 0x04000000 \/* DB_SNAPSHOT/
-DB_AM_SUBDB ../dbinc/db.in /^#define DB_AM_SUBDB 0x08000000 \/* Subdatabases s/
-DB_AM_SWAP ../dbinc/db.in /^#define DB_AM_SWAP 0x10000000 \/* Pages need to b/
-DB_AM_TXN ../dbinc/db.in /^#define DB_AM_TXN 0x20000000 \/* Opened in a tran/
-DB_AM_VERIFYING ../dbinc/db.in /^#define DB_AM_VERIFYING 0x40000000 \/* DB handle /
-DB_APPEND ../dbinc/db.in /^#define DB_APPEND 2 \/* put() *\/$/
-DB_ARCH_ABS ../dbinc/db.in /^#define DB_ARCH_ABS 0x001 \/* Absolute pathnames./
-DB_ARCH_DATA ../dbinc/db.in /^#define DB_ARCH_DATA 0x002 \/* Data files. *\/$/
-DB_ARCH_LOG ../dbinc/db.in /^#define DB_ARCH_LOG 0x004 \/* Log files. *\/$/
-DB_ARCH_REMOVE ../dbinc/db.in /^#define DB_ARCH_REMOVE 0x008 \/* Remove log files./
+DB_ALLOC_SIZE ../env/env_alloc.c /^#define DB_ALLOC_SIZE(len) \\$/
+DB_ALREADY_ABORTED ../dbinc/db.in 1485
+DB_AM_CHKSUM ../dbinc/db.in 1777
+DB_AM_COMPENSATE ../dbinc/db.in 1778
+DB_AM_CREATED ../dbinc/db.in 1779
+DB_AM_CREATED_MSTR ../dbinc/db.in 1780
+DB_AM_DBM_ERROR ../dbinc/db.in 1781
+DB_AM_DELIMITER ../dbinc/db.in 1782
+DB_AM_DISCARD ../dbinc/db.in 1783
+DB_AM_DUP ../dbinc/db.in 1784
+DB_AM_DUPSORT ../dbinc/db.in 1785
+DB_AM_ENCRYPT ../dbinc/db.in 1786
+DB_AM_FIXEDLEN ../dbinc/db.in 1787
+DB_AM_INMEM ../dbinc/db.in 1788
+DB_AM_INORDER ../dbinc/db.in 1789
+DB_AM_IN_RENAME ../dbinc/db.in 1790
+DB_AM_NOT_DURABLE ../dbinc/db.in 1791
+DB_AM_OPEN_CALLED ../dbinc/db.in 1792
+DB_AM_PAD ../dbinc/db.in 1793
+DB_AM_PGDEF ../dbinc/db.in 1794
+DB_AM_RDONLY ../dbinc/db.in 1795
+DB_AM_READ_UNCOMMITTED ../dbinc/db.in 1796
+DB_AM_RECNUM ../dbinc/db.in 1797
+DB_AM_RECOVER ../dbinc/db.in 1798
+DB_AM_RENUMBER ../dbinc/db.in 1799
+DB_AM_REVSPLITOFF ../dbinc/db.in 1800
+DB_AM_SECONDARY ../dbinc/db.in 1801
+DB_AM_SNAPSHOT ../dbinc/db.in 1802
+DB_AM_SUBDB ../dbinc/db.in 1803
+DB_AM_SWAP ../dbinc/db.in 1804
+DB_AM_TXN ../dbinc/db.in 1805
+DB_AM_VERIFYING ../dbinc/db.in 1806
+DB_APPEND ../dbinc/db.in 1400
+DB_ARCH_ABS ../dbinc/db.in 645
+DB_ARCH_DATA ../dbinc/db.in 646
+DB_ARCH_LOG ../dbinc/db.in 647
+DB_ARCH_REMOVE ../dbinc/db.in 648
DB_ASSERT ../dbinc/debug.h /^#define DB_ASSERT(env, e) \\$/
-DB_ASSOC_IMMUTABLE_KEY ../dbinc/db.in /^#define DB_ASSOC_IMMUTABLE_KEY 0x00000001 \/* S/
-DB_AUTO_COMMIT ../dbinc/db.in /^#define DB_AUTO_COMMIT 0x02000000\/* Implied/
-DB_BEFORE ../dbinc/db.in /^#define DB_BEFORE 3 \/* c_put() *\/$/
-DB_BEGIN_SINGLE_THREAD ../dbinc/mutex.h /^#define DB_BEGIN_SINGLE_THREAD do { \\$/
-DB_BTREEMAGIC ../dbinc/db.in /^#define DB_BTREEMAGIC 0x053162$/
-DB_BTREEOLDVER ../dbinc/db.in /^#define DB_BTREEOLDVER 8 \/* Oldest btree version/
-DB_BTREEVERSION ../dbinc/db.in /^#define DB_BTREEVERSION 9 \/* Current btree versi/
-DB_BTREE_STAT ../dbinc/db.in /^struct __db_bt_stat; typedef struct __db_bt_stat D/
-DB_BUFFER_SMALL ../dbinc/db.in /^#define DB_BUFFER_SMALL (-30999)\/* User memory t/
-DB_CACHESIZE_MIN ../dbinc/mp.h /^#define DB_CACHESIZE_MIN (20 * 1024)$/
-DB_CACHE_PRIORITY ../dbinc/db.in /^} DB_CACHE_PRIORITY;$/
-DB_CDB_ALLDB ../dbinc/db.in /^#define DB_CDB_ALLDB 0x00004000\/* Set CDB l/
-DB_CHKSUM ../dbinc/db.in /^#define DB_CHKSUM 0x00004000 \/* Do checksum/
-DB_CIPHER ../dbinc/db.in /^struct __db_cipher; typedef struct __db_cipher DB_/
-DB_CLEARLEN_NOTSET ../dbinc/db_int.in /^#define DB_CLEARLEN_NOTSET UINT32_MAX \/* Not yet /
-DB_COMMIT_FLUSH ../dbinc/log.h /^#define DB_COMMIT_FLUSH 0x0001 \/* Flush the log /
-DB_COMPACT ../dbinc/db.in /^struct __db_compact; typedef struct __db_compact D/
-DB_COMPACT_FLAGS ../dbinc/db.in /^#define DB_COMPACT_FLAGS \\$/
-DB_CONSUME ../dbinc/db.in /^#define DB_CONSUME 4 \/* get() *\/$/
-DB_CONSUME_WAIT ../dbinc/db.in /^#define DB_CONSUME_WAIT 5 \/* get() *\/$/
-DB_CREATE ../dbinc/db.in /^#define DB_CREATE 0x0000001 \/* Create file /
-DB_CURRENT ../dbinc/db.in /^#define DB_CURRENT 6 \/* c_get(), c_put(), DB_LO/
-DB_CXX_NO_EXCEPTIONS ../dbinc/db.in /^#define DB_CXX_NO_EXCEPTIONS 0x0000001 \/* C++: r/
-DB_DBM_HSEARCH ../dbinc/db.in /^#define DB_DBM_HSEARCH 0 \/* No historic interfac/
-DB_DBT_APPMALLOC ../dbinc/db.in /^#define DB_DBT_APPMALLOC 0x001 \/* Callback alloca/
-DB_DBT_DUPOK ../dbinc/db.in /^#define DB_DBT_DUPOK 0x080 \/* Insert if duplicat/
-DB_DBT_ISSET ../dbinc/db.in /^#define DB_DBT_ISSET 0x002 \/* Lower level calls /
-DB_DBT_MALLOC ../dbinc/db.in /^#define DB_DBT_MALLOC 0x004 \/* Return in malloc'/
-DB_DBT_PARTIAL ../dbinc/db.in /^#define DB_DBT_PARTIAL 0x008 \/* Partial put\/get/
-DB_DBT_REALLOC ../dbinc/db.in /^#define DB_DBT_REALLOC 0x010 \/* Return in reallo/
-DB_DBT_USERCOPY ../dbinc/db.in /^#define DB_DBT_USERCOPY 0x020 \/* Use the user-su/
-DB_DBT_USERMEM ../dbinc/db.in /^#define DB_DBT_USERMEM 0x040 \/* Return in user's/
-DB_DEF_IOSIZE ../dbinc/db_int.in /^#define DB_DEF_IOSIZE (8 * 1024)$/
-DB_DEGREE_2 ../dbinc/db.in /^#define DB_DEGREE_2 0x04000000\/* Historic n/
-DB_DELETED ../dbinc/db.in /^#define DB_DELETED (-30898)\/* Recovery file mark/
+DB_ASSOC_IMMUTABLE_KEY ../dbinc/db.in 1643
+DB_AUTO_COMMIT ../dbinc/db.in 251
+DB_BEFORE ../dbinc/db.in 1401
+DB_BEGIN_SINGLE_THREAD ../dbinc/mutex.h 127
+DB_BINARY_SEARCH_FOR ../dbinc/db_am.h /^#define DB_BINARY_SEARCH_FOR(base, limit, page, ad/
+DB_BINARY_SEARCH_INCR ../dbinc/db_am.h /^#define DB_BINARY_SEARCH_INCR(index, base, limit, /
+DB_BINARY_SEARCH_SHIFT_BASE ../dbinc/db_am.h /^#define DB_BINARY_SEARCH_SHIFT_BASE(index, base, l/
+DB_BTREEMAGIC ../dbinc/db.in 1382
+DB_BTREEOLDVER ../dbinc/db.in 1381
+DB_BTREEVERSION ../dbinc/db.in 1380
+DB_BTREE_STAT ../dbinc/db.in 139
+DB_BUFFER_SMALL ../dbinc/db.in 1455
+DB_CACHESIZE_MIN ../dbinc/mp.h 24
+DB_CACHE_PRIORITY ../dbinc/db.in 784
+DB_CALLBACK_C_INTERCEPT ../cxx/cxx_db.cpp /^#define DB_CALLBACK_C_INTERCEPT(_name, _rettype, _/
+DB_CDB_ALLDB ../dbinc/db.in 332
+DB_CHKSUM ../dbinc/db.in 376
+DB_CHK_META ../dbinc/db_am.h 238
+DB_CHK_NOLSN ../dbinc/db_am.h 239
+DB_CIPHER ../dbinc/db.in 140
+DB_CKP_INTERNAL ../dbinc/db.in 322
+DB_CLEARLEN_NOTSET ../dbinc/db_int.in 603
+DB_COMMIT_FLUSH ../dbinc/log.h 342
+DB_COMPACT ../dbinc/db.in 141
+DB_COMPACT_FLAGS ../dbinc/db.in 363
+DB_CONSUME ../dbinc/db.in 1402
+DB_CONSUME_WAIT ../dbinc/db.in 1403
+DB_CREATE ../dbinc/db.in 213
+DB_CURRENT ../dbinc/db.in 1404
+DB_CXX_NO_EXCEPTIONS ../dbinc/db.in 264
+DB_CXX_PRIVATE_ENV ../dbinc/cxx_int.h 73
+DB_DBM_HSEARCH ../dbinc/db.in 2513
+DB_DBT_APPMALLOC ../dbinc/db.in 196
+DB_DBT_DUPOK ../dbinc/db.in 197
+DB_DBT_ISSET ../dbinc/db.in 198
+DB_DBT_MALLOC ../dbinc/db.in 199
+DB_DBT_MULTIPLE ../dbinc/db.in 200
+DB_DBT_PARTIAL ../dbinc/db.in 201
+DB_DBT_REALLOC ../dbinc/db.in 202
+DB_DBT_USERCOPY ../dbinc/db.in 203
+DB_DBT_USERMEM ../dbinc/db.in 204
+DB_DEF_IOSIZE ../dbinc/db_int.in 146
+DB_DEGREE_2 ../dbinc/db.in 254
+DB_DELETED ../dbinc/db.in 1486
DB_DESTRUCTOR ../cxx/cxx_db.cpp /^#define DB_DESTRUCTOR(_name, _argspec, _arglist, _/
-DB_DIRECT ../dbinc/db.in /^#define DB_DIRECT 0x0004000 \/* Don't buffer/
-DB_DIRECT_DB ../dbinc/db.in /^#define DB_DIRECT_DB 0x00008000\/* Don't buf/
-DB_DIRECT_LOG ../dbinc/db.in /^#define DB_DIRECT_LOG 0x00010000\/* Don't bu/
-DB_DIRTY_READ ../dbinc/db.in /^#define DB_DIRTY_READ 0x08000000\/* Historic/
-DB_DONOTINDEX ../dbinc/db.in /^#define DB_DONOTINDEX (-30998)\/* "Null" return f/
-DB_DSYNC_DB ../dbinc/db.in /^#define DB_DSYNC_DB 0x00020000\/* Set O_DSYN/
-DB_DSYNC_LOG ../dbinc/db.in /^#define DB_DSYNC_LOG 0x00040000\/* Set O_DSY/
-DB_DUP ../dbinc/db.in /^#define DB_DUP 0x00008000 \/* Btree, Hash: /
-DB_DUPSORT ../dbinc/db.in /^#define DB_DUPSORT 0x00010000 \/* Btree, Has/
-DB_DURABLE_UNKNOWN ../dbinc/db.in /^#define DB_DURABLE_UNKNOWN 0x0000002 \/* Durabi/
-DB_EID_BROADCAST ../dbinc/db.in /^#define DB_EID_BROADCAST -1$/
-DB_EID_INVALID ../dbinc/db.in /^#define DB_EID_INVALID -2$/
-DB_ENCRYPT ../dbinc/db.in /^#define DB_ENCRYPT 0x00020000 \/* Btree, Has/
-DB_ENCRYPT_AES ../dbinc/db.in /^#define DB_ENCRYPT_AES 0x0000001 \/* AES, as/
-DB_ENC_MAGIC ../dbinc/hmac.h /^#define DB_ENC_MAGIC "encryption and decryption ke/
-DB_END_SINGLE_THREAD ../dbinc/mutex.h /^#define DB_END_SINGLE_THREAD (void)semGive(DB_GLOB/
-DB_ENTRY ../dbinc/log.h /^} DB_ENTRY;$/
-DB_ENV ../dbinc/db.in /^struct __db_env; typedef struct __db_env DB_ENV;$/
-DB_ENV_AUTO_COMMIT ../dbinc/db.in /^#define DB_ENV_AUTO_COMMIT 0x00000001 \/* DB_AUTO_/
-DB_ENV_CDB ../dbinc/db.in /^#define DB_ENV_CDB 0x00000002 \/* DB_INIT_CDB. */
-DB_ENV_CDB_ALLDB ../dbinc/db.in /^#define DB_ENV_CDB_ALLDB 0x00000004 \/* CDB enviro/
-DB_ENV_CREATE ../dbinc/db.in /^#define DB_ENV_CREATE 0x00000008 \/* DB_CREATE se/
-DB_ENV_DBLOCAL ../dbinc/db.in /^#define DB_ENV_DBLOCAL 0x00000010 \/* Environment/
-DB_ENV_DIRECT_DB ../dbinc/db.in /^#define DB_ENV_DIRECT_DB 0x00000020 \/* DB_DIRECT_/
-DB_ENV_DIRECT_LOG ../dbinc/db.in /^#define DB_ENV_DIRECT_LOG 0x00000040 \/* DB_DIRECT/
-DB_ENV_DSYNC_DB ../dbinc/db.in /^#define DB_ENV_DSYNC_DB 0x00000080 \/* DB_DSYNC_D/
-DB_ENV_DSYNC_LOG ../dbinc/db.in /^#define DB_ENV_DSYNC_LOG 0x00000100 \/* DB_DSYNC_L/
-DB_ENV_FATAL ../dbinc/db.in /^#define DB_ENV_FATAL 0x00000200 \/* Doing fatal r/
+DB_DIRECT ../dbinc/db.in 369
+DB_DIRECT_DB ../dbinc/db.in 333
+DB_DIRECT_LOG ../dbinc/db.in 334
+DB_DIRTY_READ ../dbinc/db.in 257
+DB_DONOTINDEX ../dbinc/db.in 1456
+DB_DSYNC_DB ../dbinc/db.in 335
+DB_DSYNC_LOG ../dbinc/db.in 336
+DB_DUP ../dbinc/db.in 377
+DB_DUPSORT ../dbinc/db.in 378
+DB_DURABLE_UNKNOWN ../dbinc/db.in 214
+DB_EID_BROADCAST ../dbinc/db.in 1142
+DB_EID_INVALID ../dbinc/db.in 1143
+DB_ENCRYPT ../dbinc/db.in 379
+DB_ENCRYPT_AES ../dbinc/db.in 327
+DB_ENC_MAGIC ../dbinc/hmac.h 32
+DB_END_SINGLE_THREAD ../dbinc/mutex.h 145
+DB_ENV ../dbinc/db.in 143
+DB_ENV_AUTO_COMMIT ../dbinc/db.in 2477
+DB_ENV_CDB ../dbinc/db.in 2478
+DB_ENV_CDB_ALLDB ../dbinc/db.in 2479
+DB_ENV_DBLOCAL ../dbinc/db.in 2480
+DB_ENV_DIRECT_DB ../dbinc/db.in 2481
+DB_ENV_DIRECT_LOG ../dbinc/db.in 2482
+DB_ENV_DSYNC_DB ../dbinc/db.in 2483
+DB_ENV_DSYNC_LOG ../dbinc/db.in 2484
DB_ENV_INTERNAL ../libdb_java/db_java_wrap.c /^#define DB_ENV_INTERNAL(dbenv) ((dbenv)->api2_inte/
-DB_ENV_LOCKDOWN ../dbinc/db.in /^#define DB_ENV_LOCKDOWN 0x00000400 \/* DB_LOCKDOW/
-DB_ENV_LOG_AUTOREMOVE ../dbinc/db.in /^#define DB_ENV_LOG_AUTOREMOVE 0x00000800 \/* DB_/
-DB_ENV_LOG_INMEMORY ../dbinc/db.in /^#define DB_ENV_LOG_INMEMORY 0x00001000 \/* DB_/
-DB_ENV_MULTIVERSION ../dbinc/db.in /^#define DB_ENV_MULTIVERSION 0x00002000 \/* DB_MULT/
-DB_ENV_NOLOCKING ../dbinc/db.in /^#define DB_ENV_NOLOCKING 0x00004000 \/* DB_NOLOCKI/
-DB_ENV_NOMMAP ../dbinc/db.in /^#define DB_ENV_NOMMAP 0x00008000 \/* DB_NOMMAP se/
-DB_ENV_NOPANIC ../dbinc/db.in /^#define DB_ENV_NOPANIC 0x00010000 \/* Okay if pan/
-DB_ENV_OPEN_CALLED ../dbinc/db.in /^#define DB_ENV_OPEN_CALLED 0x00020000 \/* DB_ENV->/
-DB_ENV_OVERWRITE ../dbinc/db.in /^#define DB_ENV_OVERWRITE 0x00040000 \/* DB_OVERWRI/
-DB_ENV_PRIVATE ../dbinc/db.in /^#define DB_ENV_PRIVATE 0x00080000 \/* DB_PRIVATE /
-DB_ENV_REGION_INIT ../dbinc/db.in /^#define DB_ENV_REGION_INIT 0x00100000 \/* DB_REGIO/
-DB_ENV_RPCCLIENT ../dbinc/db.in /^#define DB_ENV_RPCCLIENT 0x00200000 \/* DB_RPCCLIE/
-DB_ENV_RPCCLIENT_GIVEN ../dbinc/db.in /^#define DB_ENV_RPCCLIENT_GIVEN 0x00400000 \/* User/
-DB_ENV_SYSTEM_MEM ../dbinc/db.in /^#define DB_ENV_SYSTEM_MEM 0x00800000 \/* DB_SYSTEM/
+DB_ENV_LOCKDOWN ../dbinc/db.in 2485
+DB_ENV_LOG_AUTOREMOVE ../dbinc/db.in 2486
+DB_ENV_LOG_INMEMORY ../dbinc/db.in 2487
+DB_ENV_MULTIVERSION ../dbinc/db.in 2488
+DB_ENV_NOLOCKING ../dbinc/db.in 2489
+DB_ENV_NOMMAP ../dbinc/db.in 2490
+DB_ENV_NOPANIC ../dbinc/db.in 2491
+DB_ENV_NO_OUTPUT_SET ../dbinc/db.in 2492
+DB_ENV_OPEN_CALLED ../dbinc/db.in 2493
+DB_ENV_OVERWRITE ../dbinc/db.in 2494
+DB_ENV_PRIVATE ../dbinc/db.in 2495
+DB_ENV_RECOVER_FATAL ../dbinc/db.in 2496
+DB_ENV_REF_COUNTED ../dbinc/db.in 2497
+DB_ENV_REGION_INIT ../dbinc/db.in 2498
+DB_ENV_RPCCLIENT ../dbinc/db.in 2499
+DB_ENV_RPCCLIENT_GIVEN ../dbinc/db.in 2500
+DB_ENV_SYSTEM_MEM ../dbinc/db.in 2501
DB_ENV_TEST_RECOVERY ../dbinc/debug.h /^#define DB_ENV_TEST_RECOVERY(env, val, ret, name) /
DB_ENV_TEST_RECYCLE ../dbinc/debug.h /^#define DB_ENV_TEST_RECYCLE(env, ret) do { \\$/
-DB_ENV_THREAD ../dbinc/db.in /^#define DB_ENV_THREAD 0x01000000 \/* DB_THREAD se/
-DB_ENV_TIME_NOTGRANTED ../dbinc/db.in /^#define DB_ENV_TIME_NOTGRANTED 0x02000000 \/* DB_T/
-DB_ENV_TXN_NOSYNC ../dbinc/db.in /^#define DB_ENV_TXN_NOSYNC 0x04000000 \/* DB_TXN_NO/
-DB_ENV_TXN_SNAPSHOT ../dbinc/db.in /^#define DB_ENV_TXN_SNAPSHOT 0x08000000 \/* DB_TXN_/
-DB_ENV_TXN_WRITE_NOSYNC ../dbinc/db.in /^#define DB_ENV_TXN_WRITE_NOSYNC 0x10000000 \/* DB_/
-DB_ENV_YIELDCPU ../dbinc/db.in /^#define DB_ENV_YIELDCPU 0x20000000 \/* DB_YIELDCP/
+DB_ENV_THREAD ../dbinc/db.in 2502
+DB_ENV_TIME_NOTGRANTED ../dbinc/db.in 2503
+DB_ENV_TXN_NOSYNC ../dbinc/db.in 2504
+DB_ENV_TXN_NOWAIT ../dbinc/db.in 2505
+DB_ENV_TXN_SNAPSHOT ../dbinc/db.in 2506
+DB_ENV_TXN_WRITE_NOSYNC ../dbinc/db.in 2507
+DB_ENV_YIELDCPU ../dbinc/db.in 2508
+DB_ERROR ../dbinc/cxx_int.h /^#define DB_ERROR(env, caller, ecode, policy) \\$/
+DB_ERROR_DBT ../dbinc/cxx_int.h /^#define DB_ERROR_DBT(env, caller, dbt, policy) \\$/
DB_EVENT ../dbinc/db_int.in /^#define DB_EVENT(dbenv, e, einfo) do { \\$/
-DB_EVENT_NO_SUCH_EVENT ../dbinc/db.in /^#define DB_EVENT_NO_SUCH_EVENT 0 \/* out-of-band /
-DB_EVENT_PANIC ../dbinc/db.in /^#define DB_EVENT_PANIC 1$/
-DB_EVENT_REP_CLIENT ../dbinc/db.in /^#define DB_EVENT_REP_CLIENT 2$/
-DB_EVENT_REP_MASTER ../dbinc/db.in /^#define DB_EVENT_REP_MASTER 3$/
-DB_EVENT_REP_NEWMASTER ../dbinc/db.in /^#define DB_EVENT_REP_NEWMASTER 4$/
-DB_EVENT_REP_STARTUPDONE ../dbinc/db.in /^#define DB_EVENT_REP_STARTUPDONE 5$/
-DB_EVENT_WRITE_FAILED ../dbinc/db.in /^#define DB_EVENT_WRITE_FAILED 6$/
-DB_EXCL ../dbinc/db.in /^#define DB_EXCL 0x0004000 \/* Exclusive ope/
-DB_EXTENT ../dbinc/db.in /^#define DB_EXTENT 0x0008000 \/* internal: de/
-DB_FAST_STAT ../dbinc/db.in /^#define DB_FAST_STAT 0x0000001 \/* Don't tra/
-DB_FCNTL_LOCKING ../dbinc/db.in /^#define DB_FCNTL_LOCKING 0x0008000 \/* UNDOC:/
-DB_FH ../dbinc/db.in /^struct __fh_t; typedef struct __fh_t DB_FH;$/
-DB_FH_NOSYNC ../dbinc/os.h /^#define DB_FH_NOSYNC 0x01 \/* Handle doesn't need/
-DB_FH_OPENED ../dbinc/os.h /^#define DB_FH_OPENED 0x02 \/* Handle is valid. */
-DB_FH_UNLINK ../dbinc/os.h /^#define DB_FH_UNLINK 0x04 \/* Unlink on close *\//
-DB_FILE_ID_LEN ../dbinc/db.in /^#define DB_FILE_ID_LEN 20 \/* Unique file ID leng/
-DB_FIRST ../dbinc/db.in /^#define DB_FIRST 7 \/* c_get(), DB_LOGC->get() */
-DB_FLUSH ../dbinc/db.in /^#define DB_FLUSH 0x001 \/* Flush data to disk (pu/
-DB_FNAME_DURABLE ../dbinc/log.h /^#define DB_FNAME_DURABLE 0x02 \/* File is durable./
-DB_FNAME_NOTLOGGED ../dbinc/log.h /^#define DB_FNAME_NOTLOGGED 0x01 \/* Log of close f/
-DB_FORCE ../dbinc/db.in /^#define DB_FORCE 0x0000004 \/* Force (anythi/
-DB_FREELIST_ONLY ../dbinc/db.in /^#define DB_FREELIST_ONLY 0x00004000 \/* Just /
-DB_FREEZER_MAGIC ../mp/mp_mvcc.c /^#define DB_FREEZER_MAGIC 0x06102002$/
-DB_FREE_SPACE ../dbinc/db.in /^#define DB_FREE_SPACE 0x00008000 \/* Free /
-DB_FTYPE_NOTSET ../dbinc/db_int.in /^#define DB_FTYPE_NOTSET 0 \/* Don't call... *\//
-DB_FTYPE_SET ../dbinc/db_int.in /^#define DB_FTYPE_SET -1 \/* Call pgin\/pgout fun/
-DB_GET_BOTH ../dbinc/db.in /^#define DB_GET_BOTH 8 \/* get(), c_get() *\/$/
-DB_GET_BOTHC ../dbinc/db.in /^#define DB_GET_BOTHC 9 \/* c_get() (internal) */
-DB_GET_BOTH_RANGE ../dbinc/db.in /^#define DB_GET_BOTH_RANGE 10 \/* get(), c_get() */
-DB_GET_RECNO ../dbinc/db.in /^#define DB_GET_RECNO 11 \/* c_get() *\/$/
-DB_GLOBAL ../dbinc/globals.h /^#define DB_GLOBAL(v) __db_global_values.v$/
-DB_GLOBALS ../dbinc/globals.h /^} DB_GLOBALS;$/
-DB_GROW_SIZE ../dbinc/log.h /^#define DB_GROW_SIZE 64$/
-DB_HANDLE_LOCK ../dbinc/db.in /^#define DB_HANDLE_LOCK 1$/
-DB_HASHMAGIC ../dbinc/db.in /^#define DB_HASHMAGIC 0x061561$/
-DB_HASHOLDVER ../dbinc/db.in /^#define DB_HASHOLDVER 7 \/* Oldest hash version s/
-DB_HASHTAB ../dbinc/db_int.in /^typedef SH_TAILQ_HEAD(__hash_head) DB_HASHTAB;$/
-DB_HASHVERSION ../dbinc/db.in /^#define DB_HASHVERSION 8 \/* Current hash version/
-DB_HASH_DUP ../dbinc/db_page.h /^#define DB_HASH_DUP 0x01 \/* Duplicates. *\/$/
-DB_HASH_DUPSORT ../dbinc/db_page.h /^#define DB_HASH_DUPSORT 0x04 \/* Duplicates are /
-DB_HASH_STAT ../dbinc/db.in /^struct __db_h_stat; typedef struct __db_h_stat DB_/
-DB_HASH_SUBDB ../dbinc/db_page.h /^#define DB_HASH_SUBDB 0x02 \/* Subdatabases. *\//
+DB_EVENT_NOT_HANDLED ../dbinc/db.in 1487
+DB_EVENT_NO_SUCH_EVENT ../dbinc/db.in 1184
+DB_EVENT_PANIC ../dbinc/db.in 1185
+DB_EVENT_REP_CLIENT ../dbinc/db.in 1186
+DB_EVENT_REP_ELECTED ../dbinc/db.in 1187
+DB_EVENT_REP_MASTER ../dbinc/db.in 1188
+DB_EVENT_REP_NEWMASTER ../dbinc/db.in 1189
+DB_EVENT_REP_PERM_FAILED ../dbinc/db.in 1190
+DB_EVENT_REP_STARTUPDONE ../dbinc/db.in 1191
+DB_EVENT_WRITE_FAILED ../dbinc/db.in 1192
+DB_EXCL ../dbinc/db.in 301
+DB_EXTENT ../dbinc/db.in 370
+DB_FAST_STAT ../dbinc/db.in 389
+DB_FCNTL_LOCKING ../dbinc/db.in 302
+DB_FH ../dbinc/db.in 180
+DB_FH_ENVLINK ../dbinc/os.h 122
+DB_FH_NOSYNC ../dbinc/os.h 123
+DB_FH_OPENED ../dbinc/os.h 124
+DB_FH_UNLINK ../dbinc/os.h 125
+DB_FILE_ID_LEN ../dbinc/db.in 470
+DB_FIRST ../dbinc/db.in 1405
+DB_FLUSH ../dbinc/db.in 651
+DB_FNAME_CLOSED ../dbinc/log.h 52
+DB_FNAME_DURABLE ../dbinc/log.h 53
+DB_FNAME_INMEM ../dbinc/log.h 54
+DB_FNAME_NOTLOGGED ../dbinc/log.h 55
+DB_FNAME_RECOVER ../dbinc/log.h 56
+DB_FNAME_RESTORED ../dbinc/log.h 57
+DB_FORCE ../dbinc/db.in 215
+DB_FREELIST_ONLY ../dbinc/db.in 361
+DB_FREEZER_MAGIC ../mp/mp_mvcc.c 195
+DB_FREE_SPACE ../dbinc/db.in 362
+DB_FTYPE_NOTSET ../dbinc/db_int.in 601
+DB_FTYPE_SET ../dbinc/db_int.in 600
+DB_GET_BOTH ../dbinc/db.in 1406
+DB_GET_BOTHC ../dbinc/db.in 1407
+DB_GET_BOTH_RANGE ../dbinc/db.in 1408
+DB_GET_RECNO ../dbinc/db.in 1409
+DB_GLOBAL ../dbinc/globals.h /^#define DB_GLOBAL(v) \\$/
+DB_GROW_SIZE ../dbinc/log.h 105
+DB_HANDLE_LOCK ../dbinc/db.in 609
+DB_HASHMAGIC ../dbinc/db.in 1386
+DB_HASHOLDVER ../dbinc/db.in 1385
+DB_HASHVERSION ../dbinc/db.in 1384
+DB_HASH_DUP ../dbinc/db_page.h 125
+DB_HASH_DUPSORT ../dbinc/db_page.h 127
+DB_HASH_STAT ../dbinc/db.in 144
+DB_HASH_SUBDB ../dbinc/db_page.h 126
DB_HTONL ../dbinc/db_swap.h /^#define DB_HTONL(p) do { \\$/
+DB_IGNORE_LEASE ../dbinc/db.in 250
DB_ILLEGAL_AFTER_OPEN ../dbinc/db_int.in /^#define DB_ILLEGAL_AFTER_OPEN(dbp, name) \\$/
DB_ILLEGAL_BEFORE_OPEN ../dbinc/db_int.in /^#define DB_ILLEGAL_BEFORE_OPEN(dbp, name) \\$/
DB_ILLEGAL_IN_ENV ../dbinc/db_int.in /^#define DB_ILLEGAL_IN_ENV(dbp, name) \\$/
DB_ILLEGAL_METHOD ../dbinc/db_int.in /^#define DB_ILLEGAL_METHOD(dbp, flags) { \\$/
-DB_IMMUTABLE_KEY ../dbinc/db.in /^#define DB_IMMUTABLE_KEY 0x0004000 \/* Second/
-DB_INITENV_CDB ../env/env_open.c /^#define DB_INITENV_CDB 0x0001 \/* DB_INIT_CDB *\//
-DB_INITENV_CDB_ALLDB ../env/env_open.c /^#define DB_INITENV_CDB_ALLDB 0x0002 \/* DB_INIT_CD/
-DB_INITENV_LOCK ../env/env_open.c /^#define DB_INITENV_LOCK 0x0004 \/* DB_INIT_LOCK */
-DB_INITENV_LOG ../env/env_open.c /^#define DB_INITENV_LOG 0x0008 \/* DB_INIT_LOG *\//
-DB_INITENV_MPOOL ../env/env_open.c /^#define DB_INITENV_MPOOL 0x0010 \/* DB_INIT_MPOOL /
-DB_INITENV_REP ../env/env_open.c /^#define DB_INITENV_REP 0x0020 \/* DB_INIT_REP *\//
-DB_INITENV_TXN ../env/env_open.c /^#define DB_INITENV_TXN 0x0040 \/* DB_INIT_TXN *\//
-DB_INITIALIZE_DB_GLOBALS ../env/env_method.c /^#define DB_INITIALIZE_DB_GLOBALS 1$/
-DB_INIT_CDB ../dbinc/db.in /^#define DB_INIT_CDB 0x0004000 \/* Concurrent/
+DB_IMMUTABLE_KEY ../dbinc/db.in 310
+DB_INITENV_CDB ../env/env_open.c 255
+DB_INITENV_CDB_ALLDB ../env/env_open.c 256
+DB_INITENV_LOCK ../env/env_open.c 257
+DB_INITENV_LOG ../env/env_open.c 258
+DB_INITENV_MPOOL ../env/env_open.c 259
+DB_INITENV_REP ../env/env_open.c 260
+DB_INITENV_TXN ../env/env_open.c 261
+DB_INITIALIZE_DB_GLOBALS ../env/env_globals.c 16
+DB_INIT_CDB ../dbinc/db.in 284
DB_INIT_DBT ../dbinc/db_int.in /^#define DB_INIT_DBT(dbt, d, s) do { \\$/
-DB_INIT_LOCK ../dbinc/db.in /^#define DB_INIT_LOCK 0x0008000 \/* Initializ/
-DB_INIT_LOG ../dbinc/db.in /^#define DB_INIT_LOG 0x0010000 \/* Initialize/
-DB_INIT_MPOOL ../dbinc/db.in /^#define DB_INIT_MPOOL 0x0020000 \/* Initiali/
-DB_INIT_REP ../dbinc/db.in /^#define DB_INIT_REP 0x0040000 \/* Initialize/
-DB_INIT_TXN ../dbinc/db.in /^#define DB_INIT_TXN 0x0080000 \/* Initialize/
-DB_INORDER ../dbinc/db.in /^#define DB_INORDER 0x00040000 \/* Queue: str/
+DB_INIT_LOCK ../dbinc/db.in 285
+DB_INIT_LOG ../dbinc/db.in 286
+DB_INIT_MPOOL ../dbinc/db.in 287
+DB_INIT_REP ../dbinc/db.in 288
+DB_INIT_TXN ../dbinc/db.in 289
+DB_INORDER ../dbinc/db.in 380
DB_INTERNAL ../libdb_java/db_java_wrap.c /^#define DB_INTERNAL(db) ((db)->api_internal)$/
-DB_IO_READ ../dbinc/os.h /^#define DB_IO_READ 1$/
-DB_IO_WRITE ../dbinc/os.h /^#define DB_IO_WRITE 2$/
+DB_IO_READ ../dbinc/os.h 83
+DB_IO_WRITE ../dbinc/os.h 84
DB_IS_READONLY ../dbinc/db_am.h /^#define DB_IS_READONLY(dbp) \\$/
DB_IS_THREADED ../dbinc/db_int.in /^#define DB_IS_THREADED(dbp) \\$/
-DB_IV_BYTES ../dbinc/db_int.in /^#define DB_IV_BYTES 16 \/* Bytes per IV *\/$/
-DB_JOINENV ../dbinc/db.in /^#define DB_JOINENV 0x0 \/* Compatibility. */
-DB_JOIN_ITEM ../dbinc/db.in /^#define DB_JOIN_ITEM 12 \/* c_get(); do not do pr/
-DB_JOIN_NOSORT ../dbinc/db.in /^#define DB_JOIN_NOSORT 0x0000001 \/* Don't t/
-DB_KEYEMPTY ../dbinc/db.in /^#define DB_KEYEMPTY (-30997)\/* Key\/data deleted/
-DB_KEYEXIST ../dbinc/db.in /^#define DB_KEYEXIST (-30996)\/* The key\/data pai/
-DB_KEYFIRST ../dbinc/db.in /^#define DB_KEYFIRST 13 \/* c_put() *\/$/
-DB_KEYLAST ../dbinc/db.in /^#define DB_KEYLAST 14 \/* c_put() *\/$/
-DB_KEY_RANGE ../dbinc/db.in /^struct __key_range; typedef struct __key_range DB_/
-DB_LAST ../dbinc/db.in /^#define DB_LAST 15 \/* c_get(), DB_LOGC->get() */
-DB_LOCK ../dbinc/db.in /^struct __db_lock_u; typedef struct __db_lock_u DB_/
-DB_LOCKDOWN ../dbinc/db.in /^#define DB_LOCKDOWN 0x0100000 \/* Lock memor/
-DB_LOCKER ../dbinc/lock.h /^} DB_LOCKER;$/
-DB_LOCKER_DELETED ../dbinc/lock.h /^#define DB_LOCKER_DELETED 0x0001$/
-DB_LOCKER_DIRTY ../dbinc/lock.h /^#define DB_LOCKER_DIRTY 0x0002$/
-DB_LOCKER_INABORT ../dbinc/lock.h /^#define DB_LOCKER_INABORT 0x0004$/
-DB_LOCKER_TIMEOUT ../dbinc/lock.h /^#define DB_LOCKER_TIMEOUT 0x0008$/
-DB_LOCKOBJ ../dbinc/lock.h /^} DB_LOCKOBJ;$/
-DB_LOCKREGION ../dbinc/lock.h /^} DB_LOCKREGION;$/
-DB_LOCKREQ ../dbinc/db.in /^struct __db_lockreq; typedef struct __db_lockreq D/
-DB_LOCKTAB ../dbinc/db.in /^struct __db_locktab; typedef struct __db_locktab D/
-DB_LOCKVERSION ../dbinc/db.in /^#define DB_LOCKVERSION 1$/
-DB_LOCK_ABORT ../dbinc/db.in /^#define DB_LOCK_ABORT 0x001 \/* Internal: Lock du/
-DB_LOCK_CDB_N ../lock/lock_region.c /^#define DB_LOCK_CDB_N 5$/
-DB_LOCK_DEADLOCK ../dbinc/db.in /^#define DB_LOCK_DEADLOCK (-30995)\/* Deadlock. *\//
-DB_LOCK_DEFAULT ../dbinc/db.in /^#define DB_LOCK_DEFAULT 1 \/* Default policy. *\//
-DB_LOCK_DEFAULT_N ../dbinc/lock.h /^#define DB_LOCK_DEFAULT_N 1000 \/* Default # of lo/
-DB_LOCK_DOALL ../dbinc/lock.h /^#define DB_LOCK_DOALL 0x010000$/
-DB_LOCK_EXPIRE ../dbinc/db.in /^#define DB_LOCK_EXPIRE 2 \/* Only expire locks, n/
-DB_LOCK_FREE ../dbinc/lock.h /^#define DB_LOCK_FREE 0x040000$/
-DB_LOCK_ILOCK ../dbinc/db.in /^struct __db_ilock; typedef struct __db_ilock DB_LO/
-DB_LOCK_INVALIDID ../dbinc/lock.h /^#define DB_LOCK_INVALIDID 0$/
-DB_LOCK_MAXID ../dbinc/lock.h /^#define DB_LOCK_MAXID 0x7fffffff$/
-DB_LOCK_MAXLOCKS ../dbinc/db.in /^#define DB_LOCK_MAXLOCKS 3 \/* Select locker with /
-DB_LOCK_MAXWRITE ../dbinc/db.in /^#define DB_LOCK_MAXWRITE 4 \/* Select locker with /
-DB_LOCK_MINLOCKS ../dbinc/db.in /^#define DB_LOCK_MINLOCKS 5 \/* Select locker with /
-DB_LOCK_MINWRITE ../dbinc/db.in /^#define DB_LOCK_MINWRITE 6 \/* Select locker with /
-DB_LOCK_NOPROMOTE ../dbinc/lock.h /^#define DB_LOCK_NOPROMOTE 0x080000$/
-DB_LOCK_NOREGION ../dbinc/lock.h /^#define DB_LOCK_NOREGION 0x200000$/
-DB_LOCK_NORUN ../dbinc/db.in /^#define DB_LOCK_NORUN 0$/
-DB_LOCK_NOTGRANTED ../dbinc/db.in /^#define DB_LOCK_NOTGRANTED (-30994)\/* Lock unavai/
-DB_LOCK_NOWAIT ../dbinc/db.in /^#define DB_LOCK_NOWAIT 0x002 \/* Don't wait on un/
-DB_LOCK_NOWAITERS ../dbinc/lock.h /^#define DB_LOCK_NOWAITERS 0x400000$/
-DB_LOCK_OLDEST ../dbinc/db.in /^#define DB_LOCK_OLDEST 7 \/* Select oldest locker/
-DB_LOCK_RANDOM ../dbinc/db.in /^#define DB_LOCK_RANDOM 8 \/* Select random locker/
-DB_LOCK_RECORD ../dbinc/db.in /^#define DB_LOCK_RECORD 0x004 \/* Internal: record/
-DB_LOCK_RIW_N ../lock/lock_region.c /^#define DB_LOCK_RIW_N 9$/
-DB_LOCK_SET_TIMEOUT ../dbinc/db.in /^#define DB_LOCK_SET_TIMEOUT 0x008 \/* Internal: se/
-DB_LOCK_STAT ../dbinc/db.in /^struct __db_lock_stat; typedef struct __db_lock_st/
-DB_LOCK_SWITCH ../dbinc/db.in /^#define DB_LOCK_SWITCH 0x010 \/* Internal: switch/
-DB_LOCK_UNLINK ../dbinc/lock.h /^#define DB_LOCK_UNLINK 0x100000$/
-DB_LOCK_UPGRADE ../dbinc/db.in /^#define DB_LOCK_UPGRADE 0x020 \/* Internal: upgra/
-DB_LOCK_YOUNGEST ../dbinc/db.in /^#define DB_LOCK_YOUNGEST 9 \/* Select youngest loc/
-DB_LOG ../dbinc/db.in /^struct __db_log; typedef struct __db_log DB_LOG;$/
-DB_LOGC ../dbinc/db.in /^struct __db_log_cursor; typedef struct __db_log_cu/
-DB_LOGFILEID_INVALID ../dbinc/db.in /^#define DB_LOGFILEID_INVALID -1$/
-DB_LOGMAGIC ../dbinc/db.in /^#define DB_LOGMAGIC 0x040988$/
-DB_LOGOLDVER ../dbinc/db.in /^#define DB_LOGOLDVER 8 \/* Oldest log version sup/
-DB_LOGVERSION ../dbinc/db.in /^#define DB_LOGVERSION 12 \/* Current log version./
-DB_LOGVERSION_42 ../dbinc/rep.h /^#define DB_LOGVERSION_42 8$/
-DB_LOGVERSION_43 ../dbinc/rep.h /^#define DB_LOGVERSION_43 10$/
-DB_LOGVERSION_44 ../dbinc/rep.h /^#define DB_LOGVERSION_44 11$/
-DB_LOGVERSION_45 ../dbinc/rep.h /^#define DB_LOGVERSION_45 12$/
-DB_LOG_AUTOREMOVE ../dbinc/db.in /^#define DB_LOG_AUTOREMOVE 0x00080000\/* Automa/
-DB_LOG_BUFFER_FULL ../dbinc/db.in /^#define DB_LOG_BUFFER_FULL (-30993)\/* In-memory l/
-DB_LOG_CHKPNT ../dbinc/db.in /^#define DB_LOG_CHKPNT 0x002 \/* Flush supports a /
-DB_LOG_COMMIT ../dbinc/db.in /^#define DB_LOG_COMMIT 0x004 \/* Flush supports a /
-DB_LOG_DISK ../dbinc/db.in /^#define DB_LOG_DISK 0x01 \/* Log record came from/
-DB_LOG_INMEMORY ../dbinc/db.in /^#define DB_LOG_INMEMORY 0x00100000\/* Store /
-DB_LOG_LOCKED ../dbinc/db.in /^#define DB_LOG_LOCKED 0x02 \/* Log region already/
-DB_LOG_NOCOPY ../dbinc/db.in /^#define DB_LOG_NOCOPY 0x008 \/* Don't copy data */
-DB_LOG_NOT_DURABLE ../dbinc/db.in /^#define DB_LOG_NOT_DURABLE 0x010 \/* Do not log; k/
-DB_LOG_PERM_42_44 ../dbinc/rep.h /^#define DB_LOG_PERM_42_44 0x20$/
-DB_LOG_RESEND_42_44 ../dbinc/rep.h /^#define DB_LOG_RESEND_42_44 0x40$/
-DB_LOG_SILENT_ERR ../dbinc/db.in /^#define DB_LOG_SILENT_ERR 0x04 \/* Turn-off error /
-DB_LOG_STAT ../dbinc/db.in /^struct __db_log_stat; typedef struct __db_log_stat/
-DB_LOG_WRNOSYNC ../dbinc/db.in /^#define DB_LOG_WRNOSYNC 0x020 \/* Write, don't sy/
-DB_LSN ../dbinc/db.in /^struct __db_lsn; typedef struct __db_lsn DB_LSN;$/
-DB_LSN_OFF_NOTSET ../dbinc/db_int.in /^#define DB_LSN_OFF_NOTSET -1 \/* Not yet set. *\//
-DB_LSN_STACK_SIZE ../dbinc/db_dispatch.h /^#define DB_LSN_STACK_SIZE 4$/
-DB_MAC_KEY ../dbinc/db_int.in /^#define DB_MAC_KEY 20 \/* Bytes per MAC checksum /
-DB_MAC_MAGIC ../dbinc/hmac.h /^#define DB_MAC_MAGIC "mac derivation key magic val/
-DB_MAXMMAPSIZE ../mp/mp_fopen.c /^#define DB_MAXMMAPSIZE (10 * 1024 * 1024) \/* 10 M/
-DB_MAXPATHLEN ../dbinc/db_int.in /^#define DB_MAXPATHLEN 1024$/
-DB_MAX_PAGES ../dbinc/db.in /^#define DB_MAX_PAGES 0xffffffff \/* >= # of pages /
-DB_MAX_PGSIZE ../dbinc/db_int.in /^#define DB_MAX_PGSIZE 0x010000 \/* Maximum page si/
-DB_MAX_RECORDS ../dbinc/db.in /^#define DB_MAX_RECORDS 0xffffffff \/* >= # of reco/
-DB_METHOD ../cxx/cxx_db.cpp /^\/\/ Helper macros for simple methods that pass th/
+DB_IV_BYTES ../dbinc/db_int.in 667
+DB_JOINENV ../dbinc/db.in 296
+DB_JOIN_ITEM ../dbinc/db.in 1410
+DB_JOIN_NOSORT ../dbinc/db.in 403
+DB_KEYEMPTY ../dbinc/db.in 1457
+DB_KEYEXIST ../dbinc/db.in 1458
+DB_KEYFIRST ../dbinc/db.in 1411
+DB_KEYLAST ../dbinc/db.in 1412
+DB_KEY_RANGE ../dbinc/db.in 182
+DB_LAST ../dbinc/db.in 1413
+DB_LOCK ../dbinc/db.in 148
+DB_LOCKDOWN ../dbinc/db.in 290
+DB_LOCKER ../dbinc/db.in 149
+DB_LOCKER_DELETED ../dbinc/lock.h 163
+DB_LOCKER_DIRTY ../dbinc/lock.h 164
+DB_LOCKER_INABORT ../dbinc/lock.h 165
+DB_LOCKER_TIMEOUT ../dbinc/lock.h 166
+DB_LOCKREQ ../dbinc/db.in 150
+DB_LOCKTAB ../dbinc/db.in 151
+DB_LOCKVERSION ../dbinc/db.in 468
+DB_LOCK_ABORT ../dbinc/db.in 488
+DB_LOCK_CDB_N ../lock/lock_region.c 41
+DB_LOCK_DEADLOCK ../dbinc/db.in 1459
+DB_LOCK_DEFAULT ../dbinc/db.in 477
+DB_LOCK_DEFAULT_N ../dbinc/lock.h 16
+DB_LOCK_DOALL ../dbinc/lock.h 225
+DB_LOCK_EXPIRE ../dbinc/db.in 478
+DB_LOCK_FREE ../dbinc/lock.h 226
+DB_LOCK_HSTAT ../dbinc/db.in 147
+DB_LOCK_ILOCK ../dbinc/db.in 145
+DB_LOCK_INVALIDID ../dbinc/lock.h 23
+DB_LOCK_MAXID ../dbinc/lock.h 24
+DB_LOCK_MAXLOCKS ../dbinc/db.in 479
+DB_LOCK_MAXWRITE ../dbinc/db.in 480
+DB_LOCK_MINLOCKS ../dbinc/db.in 481
+DB_LOCK_MINWRITE ../dbinc/db.in 482
+DB_LOCK_NOPROMOTE ../dbinc/lock.h 227
+DB_LOCK_NORUN ../dbinc/db.in 476
+DB_LOCK_NOTGRANTED ../dbinc/db.in 1460
+DB_LOCK_NOWAIT ../dbinc/db.in 489
+DB_LOCK_NOWAITERS ../dbinc/lock.h 229
+DB_LOCK_OLDEST ../dbinc/db.in 483
+DB_LOCK_RANDOM ../dbinc/db.in 484
+DB_LOCK_RECORD ../dbinc/db.in 490
+DB_LOCK_RIW_N ../lock/lock_region.c 22
+DB_LOCK_SET_TIMEOUT ../dbinc/db.in 491
+DB_LOCK_STAT ../dbinc/db.in 146
+DB_LOCK_SWITCH ../dbinc/db.in 492
+DB_LOCK_UNLINK ../dbinc/lock.h 228
+DB_LOCK_UPGRADE ../dbinc/db.in 493
+DB_LOCK_YOUNGEST ../dbinc/db.in 485
+DB_LOG ../dbinc/db.in 152
+DB_LOGC ../dbinc/db.in 153
+DB_LOGFILEID_INVALID ../dbinc/db.in 1534
+DB_LOGMAGIC ../dbinc/db.in 642
+DB_LOGOLDVER ../dbinc/db.in 641
+DB_LOGVERSION ../dbinc/db.in 640
+DB_LOGVERSION_42 ../dbinc/rep.h 95
+DB_LOGVERSION_43 ../dbinc/rep.h 96
+DB_LOGVERSION_44 ../dbinc/rep.h 97
+DB_LOGVERSION_45 ../dbinc/rep.h 98
+DB_LOGVERSION_46 ../dbinc/rep.h 99
+DB_LOG_AUTOREMOVE ../dbinc/db.in 337
+DB_LOG_BUFFER_FULL ../dbinc/db.in 1461
+DB_LOG_CHKPNT ../dbinc/db.in 652
+DB_LOG_COMMIT ../dbinc/db.in 653
+DB_LOG_DISK ../dbinc/db.in 713
+DB_LOG_INMEMORY ../dbinc/db.in 338
+DB_LOG_LOCKED ../dbinc/db.in 714
+DB_LOG_NOCOPY ../dbinc/db.in 654
+DB_LOG_NOT_DURABLE ../dbinc/db.in 655
+DB_LOG_PERM_42_44 ../dbinc/rep.h 535
+DB_LOG_RESEND_42_44 ../dbinc/rep.h 536
+DB_LOG_SILENT_ERR ../dbinc/db.in 715
+DB_LOG_STAT ../dbinc/db.in 154
+DB_LOG_WRNOSYNC ../dbinc/db.in 656
+DB_LSN ../dbinc/db.in 155
+DB_LSN_OFF_NOTSET ../dbinc/db_int.in 602
+DB_LSN_STACK_SIZE ../dbinc/db_dispatch.h 75
+DB_MAC_KEY ../dbinc/db_int.in 668
+DB_MAC_MAGIC ../dbinc/hmac.h 31
+DB_MAXMMAPSIZE ../mp/mp_fopen.c 489
+DB_MAXPATHLEN ../dbinc/db_int.in 346
+DB_MAX_PAGES ../dbinc/db.in 118
+DB_MAX_PGSIZE ../dbinc/db_int.in 135
+DB_MAX_RECORDS ../dbinc/db.in 121
+DB_MEMP_SUPPRESS_WRITE ../dbinc/mp.h 213
+DB_MEMP_SYNC_INTERRUPT ../dbinc/mp.h 214
+DB_METHOD ../cxx/cxx_db.cpp /^#define DB_METHOD(_name, _argspec, _arglist, _reto/
DB_METHOD_QUIET ../cxx/cxx_db.cpp /^#define DB_METHOD_QUIET(_name, _argspec, _arglist)/
DB_METHOD_VOID ../cxx/cxx_db.cpp /^#define DB_METHOD_VOID(_name, _argspec, _arglist) /
-DB_MINPAGECACHE ../dbinc/db_int.in /^#define DB_MINPAGECACHE 16$/
-DB_MIN_PGSIZE ../dbinc/db_int.in /^#define DB_MIN_PGSIZE 0x000200 \/* Minimum page si/
-DB_MPOOL ../dbinc/db.in /^struct __db_mpool; typedef struct __db_mpool DB_MP/
-DB_MPOOLFILE ../dbinc/db.in /^struct __db_mpoolfile; typedef struct __db_mpoolfi/
-DB_MPOOLFILE_METHOD ../cxx/cxx_mpool.cpp /^\/\/ Helper macros for simple methods that pass th/
+DB_MINPAGECACHE ../dbinc/db_int.in 140
+DB_MIN_PGSIZE ../dbinc/db_int.in 134
+DB_MPOOL ../dbinc/db.in 156
+DB_MPOOLFILE ../dbinc/db.in 159
+DB_MPOOLFILE_METHOD ../cxx/cxx_mpool.cpp /^#define DB_MPOOLFILE_METHOD(_name, _argspec, _argl/
DB_MPOOLFILE_METHOD_VOID ../cxx/cxx_mpool.cpp /^#define DB_MPOOLFILE_METHOD_VOID(_name, _argspec, /
-DB_MPOOL_CREATE ../dbinc/db.in /^#define DB_MPOOL_CREATE 0x001 \/* Create a page. /
-DB_MPOOL_DIRTY ../dbinc/db.in /^#define DB_MPOOL_DIRTY 0x002 \/* Get page for an /
-DB_MPOOL_DISCARD ../dbinc/db.in /^#define DB_MPOOL_DISCARD 0x001 \/* Don't cache the/
-DB_MPOOL_EDIT ../dbinc/db.in /^#define DB_MPOOL_EDIT 0x004 \/* Modify without co/
-DB_MPOOL_FREE ../dbinc/db.in /^#define DB_MPOOL_FREE 0x008 \/* Free page if pres/
-DB_MPOOL_FSTAT ../dbinc/db.in /^struct __db_mpool_fstat;typedef struct __db_mpool_/
-DB_MPOOL_HASH ../dbinc/mp.h /^struct __db_mpool_hash; typedef struct __db_mpool_/
-DB_MPOOL_LAST ../dbinc/db.in /^#define DB_MPOOL_LAST 0x010 \/* Return the last p/
-DB_MPOOL_NEW ../dbinc/db.in /^#define DB_MPOOL_NEW 0x020 \/* Create a new page./
-DB_MPOOL_NOFILE ../dbinc/db.in /^#define DB_MPOOL_NOFILE 0x001 \/* Never open a ba/
-DB_MPOOL_STAT ../dbinc/db.in /^struct __db_mpool_stat; typedef struct __db_mpool_/
-DB_MPOOL_UNLINK ../dbinc/db.in /^#define DB_MPOOL_UNLINK 0x002 \/* Unlink the file/
-DB_MPREG ../dbinc/mp.h /^struct __db_mpreg; typedef struct __db_mpreg DB_MP/
-DB_MSGBUF ../dbinc/db_int.in /^} DB_MSGBUF;$/
+DB_MPOOL_CREATE ../dbinc/db.in 762
+DB_MPOOL_DIRTY ../dbinc/db.in 763
+DB_MPOOL_DISCARD ../dbinc/db.in 770
+DB_MPOOL_EDIT ../dbinc/db.in 764
+DB_MPOOL_FREE ../dbinc/db.in 765
+DB_MPOOL_FSTAT ../dbinc/db.in 157
+DB_MPOOL_HASH ../dbinc/mp.h 19
+DB_MPOOL_LAST ../dbinc/db.in 766
+DB_MPOOL_NEW ../dbinc/db.in 767
+DB_MPOOL_NOFILE ../dbinc/db.in 773
+DB_MPOOL_STAT ../dbinc/db.in 158
+DB_MPOOL_UNLINK ../dbinc/db.in 774
+DB_MPREG ../dbinc/mp.h 20
DB_MSGBUF_FLUSH ../dbinc/db_int.in /^#define DB_MSGBUF_FLUSH(dbenv, a) do { \\$/
DB_MSGBUF_INIT ../dbinc/db_int.in /^#define DB_MSGBUF_INIT(a) do { \\$/
-DB_MULTIPLE ../dbinc/db.in /^#define DB_MULTIPLE 0x10000000 \/* Return multiple/
+DB_MULTIPLE ../dbinc/db.in 1442
DB_MULTIPLE_INIT ../dbinc/db.in /^#define DB_MULTIPLE_INIT(pointer, dbt) \\$/
-DB_MULTIPLE_KEY ../dbinc/db.in /^#define DB_MULTIPLE_KEY 0x20000000 \/* Return mult/
+DB_MULTIPLE_KEY ../dbinc/db.in 1443
DB_MULTIPLE_KEY_NEXT ../dbinc/db.in /^#define DB_MULTIPLE_KEY_NEXT(pointer, dbt, retkey,/
DB_MULTIPLE_NEXT ../dbinc/db.in /^#define DB_MULTIPLE_NEXT(pointer, dbt, retdata, re/
DB_MULTIPLE_RECNO_NEXT ../dbinc/db.in /^#define DB_MULTIPLE_RECNO_NEXT(pointer, dbt, recno/
-DB_MULTIVERSION ../dbinc/db.in /^#define DB_MULTIVERSION 0x0000008 \/* Multiv/
-DB_MUTEX ../dbinc/db.in /^struct __db_mutex_t; typedef struct __db_mutex_t D/
-DB_MUTEXMGR ../dbinc/db.in /^struct __db_mutexmgr; typedef struct __db_mutexmgr/
-DB_MUTEXREGION ../dbinc/mutex_int.h /^} DB_MUTEXREGION;$/
-DB_MUTEX_ALLOCATED ../dbinc/db.in /^#define DB_MUTEX_ALLOCATED 0x01 \/* Mutex currentl/
-DB_MUTEX_LOCKED ../dbinc/db.in /^#define DB_MUTEX_LOCKED 0x02 \/* Mutex currently /
-DB_MUTEX_LOGICAL_LOCK ../dbinc/db.in /^#define DB_MUTEX_LOGICAL_LOCK 0x04 \/* Mutex backs/
-DB_MUTEX_PROCESS_ONLY ../dbinc/db.in /^#define DB_MUTEX_PROCESS_ONLY 0x08 \/* Mutex priva/
-DB_MUTEX_SELF_BLOCK ../dbinc/db.in /^#define DB_MUTEX_SELF_BLOCK 0x10 \/* Must be able /
-DB_MUTEX_STAT ../dbinc/db.in /^struct __db_mutex_stat; typedef struct __db_mutex_/
-DB_NEEDSPLIT ../dbinc/db.in /^#define DB_NEEDSPLIT (-30897)\/* Page needs to be/
-DB_NEXT ../dbinc/db.in /^#define DB_NEXT 16 \/* c_get(), DB_LOGC->get() */
-DB_NEXT_DUP ../dbinc/db.in /^#define DB_NEXT_DUP 17 \/* c_get() *\/$/
-DB_NEXT_NODUP ../dbinc/db.in /^#define DB_NEXT_NODUP 18 \/* c_get() *\/$/
-DB_NODUPDATA ../dbinc/db.in /^#define DB_NODUPDATA 19 \/* put(), c_put() *\/$/
-DB_NOLOCKING ../dbinc/db.in /^#define DB_NOLOCKING 0x00200000\/* Set locki/
-DB_NOMMAP ../dbinc/db.in /^#define DB_NOMMAP 0x0000010 \/* Don't mmap u/
+DB_MULTIVERSION ../dbinc/db.in 216
+DB_MUTEX ../dbinc/db.in 161
+DB_MUTEXMGR ../dbinc/db.in 162
+DB_MUTEX_ALLOCATED ../dbinc/db.in 439
+DB_MUTEX_LOCKED ../dbinc/db.in 440
+DB_MUTEX_LOGICAL_LOCK ../dbinc/db.in 441
+DB_MUTEX_PROCESS_ONLY ../dbinc/db.in 442
+DB_MUTEX_SELF_BLOCK ../dbinc/db.in 443
+DB_MUTEX_STAT ../dbinc/db.in 160
+DB_NEEDSPLIT ../dbinc/db.in 1488
+DB_NEXT ../dbinc/db.in 1414
+DB_NEXT_DUP ../dbinc/db.in 1415
+DB_NEXT_NODUP ../dbinc/db.in 1416
+DB_NODUPDATA ../dbinc/db.in 1417
+DB_NOLOCKING ../dbinc/db.in 339
+DB_NOMMAP ../dbinc/db.in 217
DB_NONBLOCK ../dbinc/db_int.in /^#define DB_NONBLOCK(C) ((C)->txn != NULL && F_ISSE/
-DB_NOORDERCHK ../dbinc/db.in /^#define DB_NOORDERCHK 0x0000002 \/* Skip sor/
-DB_NOOVERWRITE ../dbinc/db.in /^#define DB_NOOVERWRITE 20 \/* put() *\/$/
-DB_NOPANIC ../dbinc/db.in /^#define DB_NOPANIC 0x00400000\/* Set panic s/
-DB_NOSERVER ../dbinc/db.in /^#define DB_NOSERVER (-30992)\/* Server panic retu/
-DB_NOSERVER_HOME ../dbinc/db.in /^#define DB_NOSERVER_HOME (-30991)\/* Bad home sent/
-DB_NOSERVER_ID ../dbinc/db.in /^#define DB_NOSERVER_ID (-30990)\/* Bad ID sent to/
-DB_NOSYNC ../dbinc/db.in /^#define DB_NOSYNC 21 \/* close() *\/$/
-DB_NOTFOUND ../dbinc/db.in /^#define DB_NOTFOUND (-30989)\/* Key\/data pair no/
-DB_NO_AUTO_COMMIT ../dbinc/db.in /^#define DB_NO_AUTO_COMMIT 0x0010000 \/* Overri/
+DB_NOORDERCHK ../dbinc/db.in 409
+DB_NOOVERWRITE ../dbinc/db.in 1418
+DB_NOPANIC ../dbinc/db.in 340
+DB_NOSERVER ../dbinc/db.in 1462
+DB_NOSERVER_HOME ../dbinc/db.in 1463
+DB_NOSERVER_ID ../dbinc/db.in 1464
+DB_NOSYNC ../dbinc/db.in 1419
+DB_NOTFOUND ../dbinc/db.in 1465
+DB_NO_AUTO_COMMIT ../dbinc/db.in 303
DB_NTOHL ../dbinc/db_swap.h /^#define DB_NTOHL(p) do { \\$/
-DB_ODDFILESIZE ../dbinc/db.in /^#define DB_ODDFILESIZE 0x0010000 \/* Truncat/
-DB_OK_BTREE ../dbinc/db.in /^#define DB_OK_BTREE 0x01$/
-DB_OK_HASH ../dbinc/db.in /^#define DB_OK_HASH 0x02$/
-DB_OK_QUEUE ../dbinc/db.in /^#define DB_OK_QUEUE 0x04$/
-DB_OK_RECNO ../dbinc/db.in /^#define DB_OK_RECNO 0x08$/
-DB_OLD_VERSION ../dbinc/db.in /^#define DB_OLD_VERSION (-30988)\/* Out-of-date ve/
-DB_OPFLAGS_MASK ../dbinc/db.in /^#define DB_OPFLAGS_MASK 0x000000ff \/* Mask for op/
-DB_OPNOTSUP ../dbinc/db_int.in /^#define DB_OPNOTSUP EOPNOTSUPP$/
-DB_ORDERCHKONLY ../dbinc/db.in /^#define DB_ORDERCHKONLY 0x0000004 \/* Only p/
-DB_OSO_ABSMODE ../dbinc/os.h /^#define DB_OSO_ABSMODE 0x0001 \/* Absolute mode s/
-DB_OSO_CREATE ../dbinc/os.h /^#define DB_OSO_CREATE 0x0002 \/* POSIX: O_CREAT */
-DB_OSO_DIRECT ../dbinc/os.h /^#define DB_OSO_DIRECT 0x0004 \/* Don't buffer the/
-DB_OSO_DSYNC ../dbinc/os.h /^#define DB_OSO_DSYNC 0x0008 \/* POSIX: O_DSYNC. */
-DB_OSO_EXCL ../dbinc/os.h /^#define DB_OSO_EXCL 0x0010 \/* POSIX: O_EXCL *\/$/
-DB_OSO_RDONLY ../dbinc/os.h /^#define DB_OSO_RDONLY 0x0020 \/* POSIX: O_RDONLY /
-DB_OSO_REGION ../dbinc/os.h /^#define DB_OSO_REGION 0x0040 \/* Opening a region/
-DB_OSO_SEQ ../dbinc/os.h /^#define DB_OSO_SEQ 0x0080 \/* Expected sequential/
-DB_OSO_TEMP ../dbinc/os.h /^#define DB_OSO_TEMP 0x0100 \/* Remove after last /
-DB_OSO_TRUNC ../dbinc/os.h /^#define DB_OSO_TRUNC 0x0200 \/* POSIX: O_TRUNC */
-DB_OVERWRITE ../dbinc/db.in /^#define DB_OVERWRITE 0x00800000\/* Overwrite/
-DB_PAGE_DB_LEN ../dbinc/db_page.h /^#define DB_PAGE_DB_LEN 32$/
-DB_PAGE_LOCK ../dbinc/db.in /^#define DB_PAGE_LOCK 3$/
-DB_PAGE_NOTFOUND ../dbinc/db.in /^#define DB_PAGE_NOTFOUND (-30987)\/* Requested pag/
-DB_PAGE_QUEUE_LEN ../dbinc/db_page.h /^#define DB_PAGE_QUEUE_LEN 0$/
-DB_PANIC_ENVIRONMENT ../dbinc/db.in /^#define DB_PANIC_ENVIRONMENT 0x01000000\/* Set pa/
+DB_ODDFILESIZE ../dbinc/db.in 371
+DB_OK_BTREE ../dbinc/db.in 1764
+DB_OK_HASH ../dbinc/db.in 1765
+DB_OK_QUEUE ../dbinc/db.in 1766
+DB_OK_RECNO ../dbinc/db.in 1767
+DB_OLD_VERSION ../dbinc/db.in 1466
+DB_OPFLAGS_MASK ../dbinc/db.in 1432
+DB_OPNOTSUP ../dbinc/db_int.in 329
+DB_ORDERCHKONLY ../dbinc/db.in 410
+DB_OSO_ABSMODE ../dbinc/os.h 68
+DB_OSO_CREATE ../dbinc/os.h 69
+DB_OSO_DIRECT ../dbinc/os.h 70
+DB_OSO_DSYNC ../dbinc/os.h 71
+DB_OSO_EXCL ../dbinc/os.h 72
+DB_OSO_RDONLY ../dbinc/os.h 73
+DB_OSO_REGION ../dbinc/os.h 74
+DB_OSO_SEQ ../dbinc/os.h 75
+DB_OSO_TEMP ../dbinc/os.h 76
+DB_OSO_TRUNC ../dbinc/os.h 77
+DB_OVERFLOWED_DBT ../dbinc/cxx_int.h /^#define DB_OVERFLOWED_DBT(dbt) \\$/
+DB_OVERWRITE ../dbinc/db.in 341
+DB_PAGE_DB_LEN ../dbinc/db_page.h 60
+DB_PAGE_LOCK ../dbinc/db.in 611
+DB_PAGE_NOTFOUND ../dbinc/db.in 1467
+DB_PAGE_QUEUE_LEN ../dbinc/db_page.h 61
+DB_PANIC_ENVIRONMENT ../dbinc/db.in 342
DB_PCT ../dbinc/db_int.in /^#define DB_PCT(v, total) \\$/
DB_PCT_PG ../dbinc/db_int.in /^#define DB_PCT_PG(v, total, pgsize) \\$/
-DB_PGINFO ../dbinc/db_int.in /^} DB_PGINFO;$/
-DB_PKG ../libdb_java/db_java_wrap.c /^#define DB_PKG "com\/sleepycat\/db\/"$/
-DB_POSITION ../dbinc/db.in /^#define DB_POSITION 22 \/* c_dup() *\/$/
-DB_PREPLIST ../dbinc/db.in /^struct __db_preplist; typedef struct __db_preplist/
-DB_PREV ../dbinc/db.in /^#define DB_PREV 23 \/* c_get(), DB_LOGC->get() */
-DB_PREV_NODUP ../dbinc/db.in /^#define DB_PREV_NODUP 24 \/* c_get(), DB_LOGC->ge/
-DB_PRINTABLE ../dbinc/db.in /^#define DB_PRINTABLE 0x0000020 \/* Use print/
-DB_PRIVATE ../dbinc/db.in /^#define DB_PRIVATE 0x0200000 \/* DB_ENV is p/
-DB_PR_PAGE ../dbinc/db.in /^#define DB_PR_PAGE 0x0000008 \/* Show page c/
-DB_PR_RECOVERYTEST ../dbinc/db.in /^#define DB_PR_RECOVERYTEST 0x0000010 \/* Recove/
-DB_QAMMAGIC ../dbinc/db.in /^#define DB_QAMMAGIC 0x042253$/
-DB_QAMOLDVER ../dbinc/db.in /^#define DB_QAMOLDVER 3 \/* Oldest queue version s/
-DB_QAMVERSION ../dbinc/db.in /^#define DB_QAMVERSION 4 \/* Current queue version/
-DB_QUEUE_STAT ../dbinc/db.in /^struct __db_qam_stat; typedef struct __db_qam_stat/
-DB_RDONLY ../dbinc/db.in /^#define DB_RDONLY 0x0000020 \/* Read-only (O/
-DB_RDWRMASTER ../dbinc/db.in /^#define DB_RDWRMASTER 0x0020000 \/* UNDOC: a/
-DB_READ_COMMITTED ../dbinc/db.in /^#define DB_READ_COMMITTED 0x04000000\/* Degree/
-DB_READ_UNCOMMITTED ../dbinc/db.in /^#define DB_READ_UNCOMMITTED 0x08000000\/* Degree/
-DB_REAL_ERR ../dbinc/debug.h /^#define DB_REAL_ERR(env, error, error_set, default/
+DB_PKG ../libdb_java/db_java_wrap.c 193
+DB_POSITION ../dbinc/db.in 1420
+DB_PREPLIST ../dbinc/db.in 163
+DB_PREV ../dbinc/db.in 1421
+DB_PREV_DUP ../dbinc/db.in 1422
+DB_PREV_NODUP ../dbinc/db.in 1423
+DB_PRINTABLE ../dbinc/db.in 413
+DB_PRIVATE ../dbinc/db.in 291
+DB_PR_PAGE ../dbinc/db.in 411
+DB_PR_RECOVERYTEST ../dbinc/db.in 412
+DB_QAMMAGIC ../dbinc/db.in 1390
+DB_QAMOLDVER ../dbinc/db.in 1389
+DB_QAMVERSION ../dbinc/db.in 1388
+DB_QUEUE_STAT ../dbinc/db.in 164
+DB_RDONLY ../dbinc/db.in 218
+DB_RDWRMASTER ../dbinc/db.in 304
+DB_READ_COMMITTED ../dbinc/db.in 253
+DB_READ_UNCOMMITTED ../dbinc/db.in 256
+DB_REAL_ERR ../dbinc/debug.h /^#define DB_REAL_ERR(env, error, error_set, app_cal/
DB_REAL_MSG ../dbinc/debug.h /^#define DB_REAL_MSG(env, fmt) { \\$/
-DB_RECNUM ../dbinc/db.in /^#define DB_RECNUM 0x00080000 \/* Btree: reco/
-DB_RECORD_LOCK ../dbinc/db.in /^#define DB_RECORD_LOCK 2$/
-DB_RECOVER ../dbinc/db.in /^#define DB_RECOVER 0x0000040 \/* Run normal /
-DB_RECOVER_FATAL ../dbinc/db.in /^#define DB_RECOVER_FATAL 0x0400000 \/* Run ca/
+DB_RECNUM ../dbinc/db.in 381
+DB_RECORD_LOCK ../dbinc/db.in 610
+DB_RECOVER ../dbinc/db.in 219
+DB_RECOVER_FATAL ../dbinc/db.in 292
DB_REDO ../dbinc/db.in /^#define DB_REDO(op) ((op) == DB_TXN_FORWARD_ROLL |/
-DB_REGENV_REPLOCKED ../dbinc/region.h /^#define DB_REGENV_REPLOCKED 0x0001 \/* Env locked /
-DB_REGENV_TIMEOUT ../dbinc/region.h /^#define DB_REGENV_TIMEOUT 30 \/* Backup timeout. */
-DB_REGION_ENV ../dbinc/region.h /^#define DB_REGION_ENV "__db.001" \/* Primary envi/
-DB_REGION_FMT ../dbinc/region.h /^#define DB_REGION_FMT "__db.%03d" \/* Region file/
-DB_REGION_INIT ../dbinc/db.in /^#define DB_REGION_INIT 0x20000000\/* Page-fa/
-DB_REGION_MAGIC ../dbinc/db.in /^#define DB_REGION_MAGIC 0x120897 \/* Environment m/
-DB_REGION_NAME_LENGTH ../dbinc/region.h /^#define DB_REGION_NAME_LENGTH 8 \/* Length of fil/
-DB_REGION_PREFIX ../dbinc/region.h /^#define DB_REGION_PREFIX "__db" \/* DB file name /
-DB_REGISTER ../dbinc/db.in /^#define DB_REGISTER 0x0800000 \/* Multi-proc/
-DB_REM_BIG ../dbinc/db_am.h /^#define DB_REM_BIG 4$/
-DB_REM_DUP ../dbinc/db_am.h /^#define DB_REM_DUP 2$/
-DB_REM_PAGE_COMPAT ../dbinc/db_am.h /^#define DB_REM_PAGE_COMPAT 6 \/* Compatibility for/
-DB_RENAMEMAGIC ../dbinc/db.in /^#define DB_RENAMEMAGIC 0x030800 \/* File has been /
-DB_RENUMBER ../dbinc/db.in /^#define DB_RENUMBER 0x00100000 \/* Recno: re/
-DB_REP ../dbinc/db.in /^struct __db_rep; typedef struct __db_rep DB_REP;$/
-DB_REPMGR_ACK ../dbinc/repmgr.h /^} DB_REPMGR_ACK;$/
-DB_REPMGR_ACKS_ALL ../dbinc/db.in /^#define DB_REPMGR_ACKS_ALL 1$/
-DB_REPMGR_ACKS_ALL_PEERS ../dbinc/db.in /^#define DB_REPMGR_ACKS_ALL_PEERS 2$/
-DB_REPMGR_ACKS_NONE ../dbinc/db.in /^#define DB_REPMGR_ACKS_NONE 3$/
-DB_REPMGR_ACKS_ONE ../dbinc/db.in /^#define DB_REPMGR_ACKS_ONE 4$/
-DB_REPMGR_ACKS_ONE_PEER ../dbinc/db.in /^#define DB_REPMGR_ACKS_ONE_PEER 5$/
-DB_REPMGR_ACKS_QUORUM ../dbinc/db.in /^#define DB_REPMGR_ACKS_QUORUM 6$/
-DB_REPMGR_CONNECTED ../dbinc/db.in /^#define DB_REPMGR_CONNECTED 0x01$/
-DB_REPMGR_DISCONNECTED ../dbinc/db.in /^#define DB_REPMGR_DISCONNECTED 0x02$/
-DB_REPMGR_HANDSHAKE ../dbinc/repmgr.h /^} DB_REPMGR_HANDSHAKE;$/
-DB_REPMGR_PEER ../dbinc/db.in /^#define DB_REPMGR_PEER 0x01$/
-DB_REPMGR_SITE ../dbinc/db.in /^ typedef struct __db_repmgr_site DB_REPMGR_SITE;/
-DB_REPMGR_VERSION ../dbinc/repmgr.h /^#define DB_REPMGR_VERSION 1$/
-DB_REPVERSION ../dbinc/rep.h /^#define DB_REPVERSION 3$/
-DB_REPVERSION_42 ../dbinc/rep.h /^#define DB_REPVERSION_42 1$/
-DB_REPVERSION_43 ../dbinc/rep.h /^#define DB_REPVERSION_43 2$/
-DB_REPVERSION_44 ../dbinc/rep.h /^#define DB_REPVERSION_44 3$/
-DB_REPVERSION_45 ../dbinc/rep.h /^#define DB_REPVERSION_45 3$/
-DB_REPVERSION_INVALID ../dbinc/rep.h /^#define DB_REPVERSION_INVALID 0$/
-DB_REP_ACK_TIMEOUT ../dbinc/db.in /^#define DB_REP_ACK_TIMEOUT 1$/
-DB_REP_ANYWHERE ../dbinc/db.in /^#define DB_REP_ANYWHERE 0x0000001 \/* Messag/
-DB_REP_BULKOVF ../dbinc/db.in /^#define DB_REP_BULKOVF (-30896)\/* Rep bulk buffe/
-DB_REP_CLIENT ../dbinc/db.in /^#define DB_REP_CLIENT 1$/
-DB_REP_CONF_BULK ../dbinc/db.in /^#define DB_REP_CONF_BULK 0x0001 \/* Bulk transfer./
-DB_REP_CONF_DELAYCLIENT ../dbinc/db.in /^#define DB_REP_CONF_DELAYCLIENT 0x0002 \/* Delay c/
-DB_REP_CONF_NOAUTOINIT ../dbinc/db.in /^#define DB_REP_CONF_NOAUTOINIT 0x0004 \/* No autom/
-DB_REP_CONF_NOWAIT ../dbinc/db.in /^#define DB_REP_CONF_NOWAIT 0x0008 \/* Don't wait, /
-DB_REP_CONNECTION_RETRY ../dbinc/db.in /^#define DB_REP_CONNECTION_RETRY 4$/
-DB_REP_DUPMASTER ../dbinc/db.in /^#define DB_REP_DUPMASTER (-30986)\/* There are two/
-DB_REP_EGENCHG ../dbinc/db.in /^#define DB_REP_EGENCHG (-30895)\/* Egen changed w/
-DB_REP_ELECTION ../dbinc/db.in /^#define DB_REP_ELECTION 2$/
-DB_REP_ELECTION_RETRY ../dbinc/db.in /^#define DB_REP_ELECTION_RETRY 3$/
-DB_REP_ELECTION_TIMEOUT ../dbinc/db.in /^#define DB_REP_ELECTION_TIMEOUT 2$/
-DB_REP_FULL_ELECTION ../dbinc/db.in /^#define DB_REP_FULL_ELECTION 3$/
-DB_REP_HANDLE_DEAD ../dbinc/db.in /^#define DB_REP_HANDLE_DEAD (-30985)\/* Rolled back/
-DB_REP_HOLDELECTION ../dbinc/db.in /^#define DB_REP_HOLDELECTION (-30984)\/* Time to ho/
-DB_REP_IGNORE ../dbinc/db.in /^#define DB_REP_IGNORE (-30983)\/* This msg should/
-DB_REP_ISPERM ../dbinc/db.in /^#define DB_REP_ISPERM (-30982)\/* Cached not writ/
-DB_REP_JOIN_FAILURE ../dbinc/db.in /^#define DB_REP_JOIN_FAILURE (-30981)\/* Unable to /
-DB_REP_LOCKOUT ../dbinc/db.in /^#define DB_REP_LOCKOUT (-30980)\/* API\/Replicati/
-DB_REP_LOGREADY ../dbinc/db.in /^#define DB_REP_LOGREADY (-30894)\/* Rep log ready/
-DB_REP_MASTER ../dbinc/db.in /^#define DB_REP_MASTER 4$/
-DB_REP_MAX_GAP ../dbinc/rep.h /^#define DB_REP_MAX_GAP 128$/
-DB_REP_NEWMASTER ../dbinc/db.in /^#define DB_REP_NEWMASTER (-30979)\/* We have learn/
-DB_REP_NEWSITE ../dbinc/db.in /^#define DB_REP_NEWSITE (-30978)\/* New site enter/
-DB_REP_NOBUFFER ../dbinc/db.in /^#define DB_REP_NOBUFFER 0x0000002 \/* Do not/
-DB_REP_NOTPERM ../dbinc/db.in /^#define DB_REP_NOTPERM (-30977)\/* Permanent log /
-DB_REP_PAGEDONE ../dbinc/db.in /^#define DB_REP_PAGEDONE (-30893)\/* This page was/
-DB_REP_PERMANENT ../dbinc/db.in /^#define DB_REP_PERMANENT 0x0000004 \/* Import/
-DB_REP_REQUEST_GAP ../dbinc/rep.h /^#define DB_REP_REQUEST_GAP 4$/
-DB_REP_REREQUEST ../dbinc/db.in /^#define DB_REP_REREQUEST 0x0000008 \/* This m/
-DB_REP_STAT ../dbinc/db.in /^struct __db_rep_stat; typedef struct __db_rep_stat/
-DB_REP_UNAVAIL ../dbinc/db.in /^#define DB_REP_UNAVAIL (-30976)\/* Site cannot cu/
+DB_REGENV_REPLOCKED ../dbinc/region.h 199
+DB_REGENV_TIMEOUT ../dbinc/region.h 201
+DB_REGION_ENV ../dbinc/region.h 117
+DB_REGION_FMT ../dbinc/region.h 116
+DB_REGION_INIT ../dbinc/db.in 347
+DB_REGION_MAGIC ../dbinc/db.in 2065
+DB_REGION_NAME_LENGTH ../dbinc/region.h 118
+DB_REGION_PREFIX ../dbinc/region.h 115
+DB_REGISTER ../dbinc/db.in 293
+DB_REM_BIG ../dbinc/db_am.h 42
+DB_REM_DUP ../dbinc/db_am.h 40
+DB_REM_PAGE_COMPAT ../dbinc/db_am.h 44
+DB_RENAMEMAGIC ../dbinc/db.in 1378
+DB_RENUMBER ../dbinc/db.in 382
+DB_REP ../dbinc/db.in 165
+DB_REPFLAGS_MASK ../dbinc/db.in 1162
+DB_REPMGR_ACKS_ALL ../dbinc/db.in 1167
+DB_REPMGR_ACKS_ALL_PEERS ../dbinc/db.in 1168
+DB_REPMGR_ACKS_NONE ../dbinc/db.in 1169
+DB_REPMGR_ACKS_ONE ../dbinc/db.in 1170
+DB_REPMGR_ACKS_ONE_PEER ../dbinc/db.in 1171
+DB_REPMGR_ACKS_QUORUM ../dbinc/db.in 1172
+DB_REPMGR_CONNECTED ../dbinc/db.in 1203
+DB_REPMGR_DISCONNECTED ../dbinc/db.in 1204
+DB_REPMGR_PEER ../dbinc/db.in 1195
+DB_REPMGR_SITE ../dbinc/db.in 168
+DB_REPMGR_STAT ../dbinc/db.in 170
+DB_REPMGR_VERSION ../dbinc/repmgr.h 291
+DB_REPVERSION ../dbinc/rep.h 106
+DB_REPVERSION_42 ../dbinc/rep.h 101
+DB_REPVERSION_43 ../dbinc/rep.h 102
+DB_REPVERSION_44 ../dbinc/rep.h 103
+DB_REPVERSION_45 ../dbinc/rep.h 104
+DB_REPVERSION_46 ../dbinc/rep.h 105
+DB_REPVERSION_INVALID ../dbinc/rep.h 100
+DB_REP_ACK_TIMEOUT ../dbinc/db.in 1175
+DB_REP_ANYWHERE ../dbinc/db.in 425
+DB_REP_BULKOVF ../dbinc/db.in 1489
+DB_REP_CHECKPOINT_DELAY ../dbinc/db.in 1176
+DB_REP_CLIENT ../dbinc/db.in 1158
+DB_REP_CONF_BULK ../dbinc/db.in 1146
+DB_REP_CONF_DELAYCLIENT ../dbinc/db.in 1147
+DB_REP_CONF_NOAUTOINIT ../dbinc/db.in 1148
+DB_REP_CONF_NOWAIT ../dbinc/db.in 1149
+DB_REP_CONNECTION_RETRY ../dbinc/db.in 1177
+DB_REP_DEFAULT_PRIORITY ../dbinc/db.in 1164
+DB_REP_DUPMASTER ../dbinc/db.in 1468
+DB_REP_EGENCHG ../dbinc/db.in 1490
+DB_REP_ELECTION ../dbinc/db.in 1159
+DB_REP_ELECTION_RETRY ../dbinc/db.in 1178
+DB_REP_ELECTION_TIMEOUT ../dbinc/db.in 1179
+DB_REP_FULL_ELECTION_TIMEOUT ../dbinc/db.in 1180
+DB_REP_HANDLE_DEAD ../dbinc/db.in 1469
+DB_REP_HOLDELECTION ../dbinc/db.in 1470
+DB_REP_IGNORE ../dbinc/db.in 1471
+DB_REP_ISPERM ../dbinc/db.in 1472
+DB_REP_JOIN_FAILURE ../dbinc/db.in 1473
+DB_REP_LEASE_EXPIRED ../dbinc/db.in 1474
+DB_REP_LEASE_TIMEOUT ../dbinc/db.in 1181
+DB_REP_LOCKOUT ../dbinc/db.in 1475
+DB_REP_LOGREADY ../dbinc/db.in 1491
+DB_REP_MASTER ../dbinc/db.in 1160
+DB_REP_MAX_GAP ../dbinc/rep.h 210
+DB_REP_NEWMASTER ../dbinc/db.in 1492
+DB_REP_NEWSITE ../dbinc/db.in 1476
+DB_REP_NOBUFFER ../dbinc/db.in 426
+DB_REP_NOTPERM ../dbinc/db.in 1477
+DB_REP_PAGEDONE ../dbinc/db.in 1493
+DB_REP_PERMANENT ../dbinc/db.in 427
+DB_REP_REQUEST_GAP ../dbinc/rep.h 209
+DB_REP_REREQUEST ../dbinc/db.in 428
+DB_REP_STAT ../dbinc/db.in 166
+DB_REP_UNAVAIL ../dbinc/db.in 1478
DB_RETOK_DBCDEL ../dbinc/db_int.in /^#define DB_RETOK_DBCDEL(ret) ((ret) == 0 || (ret) /
DB_RETOK_DBCGET ../dbinc/db_int.in /^#define DB_RETOK_DBCGET(ret) ((ret) == 0 || (ret) /
DB_RETOK_DBCPUT ../dbinc/db_int.in /^#define DB_RETOK_DBCPUT(ret) ((ret) == 0 || (ret) /
DB_RETOK_DBDEL ../dbinc/db_int.in /^#define DB_RETOK_DBDEL(ret) DB_RETOK_DBCDEL(ret)$/
DB_RETOK_DBGET ../dbinc/db_int.in /^#define DB_RETOK_DBGET(ret) DB_RETOK_DBCGET(ret)$/
DB_RETOK_DBPUT ../dbinc/db_int.in /^#define DB_RETOK_DBPUT(ret) ((ret) == 0 || (ret) =/
+DB_RETOK_EXISTS ../dbinc/db_int.in /^#define DB_RETOK_EXISTS(ret) DB_RETOK_DBCGET(ret)$/
DB_RETOK_LGGET ../dbinc/db_int.in /^#define DB_RETOK_LGGET(ret) ((ret) == 0 || (ret) =/
DB_RETOK_MPGET ../dbinc/db_int.in /^#define DB_RETOK_MPGET(ret) ((ret) == 0 || (ret) =/
DB_RETOK_REPPMSG ../dbinc/db_int.in /^#define DB_RETOK_REPPMSG(ret) ((ret) == 0 || \\$/
DB_RETOK_STD ../dbinc/db_int.in /^#define DB_RETOK_STD(ret) ((ret) == 0)$/
-DB_RETRY ../dbinc/os.h /^#define DB_RETRY 100$/
-DB_REVSPLITOFF ../dbinc/db.in /^#define DB_REVSPLITOFF 0x00200000 \/* Btree:/
-DB_RMW ../dbinc/db.in /^#define DB_RMW 0x40000000 \/* Acquire write lock /
-DB_RPC2ND_CONCATDATAKEY ../dbinc/db_int.in /^#define DB_RPC2ND_CONCATDATAKEY 0x00400000 \/* cal/
-DB_RPC2ND_CONCATKEYDATA ../dbinc/db_int.in /^#define DB_RPC2ND_CONCATKEYDATA 0x00300000 \/* cal/
-DB_RPC2ND_CONSTANT ../dbinc/db_int.in /^#define DB_RPC2ND_CONSTANT 0x00700000 \/* callback/
-DB_RPC2ND_GETNAME ../dbinc/db_int.in /^#define DB_RPC2ND_GETNAME 0x00900000 \/* sj_getnam/
-DB_RPC2ND_GETZIP ../dbinc/db_int.in /^#define DB_RPC2ND_GETZIP 0x00800000 \/* sj_getzip /
-DB_RPC2ND_MASK ../dbinc/db_int.in /^#define DB_RPC2ND_MASK 0x00f00000 \/* Reserved bi/
-DB_RPC2ND_NOOP ../dbinc/db_int.in /^#define DB_RPC2ND_NOOP 0x00200000 \/* callback_n(/
-DB_RPC2ND_REVERSECONCAT ../dbinc/db_int.in /^#define DB_RPC2ND_REVERSECONCAT 0x00500000 \/* cal/
-DB_RPC2ND_REVERSEDATA ../dbinc/db_int.in /^#define DB_RPC2ND_REVERSEDATA 0x00100000 \/* callb/
-DB_RPC2ND_TRUNCDATA ../dbinc/db_int.in /^#define DB_RPC2ND_TRUNCDATA 0x00600000 \/* callbac/
-DB_RPCCLIENT ../dbinc/db.in /^#define DB_RPCCLIENT 0x0000002 \/* An RPC cl/
-DB_RUNRECOVERY ../dbinc/db.in /^#define DB_RUNRECOVERY (-30975)\/* Panic return. /
-DB_SALVAGE ../dbinc/db.in /^#define DB_SALVAGE 0x0000040 \/* Salvage wha/
-DB_SECONDARY_BAD ../dbinc/db.in /^#define DB_SECONDARY_BAD (-30974)\/* Secondary ind/
-DB_SEQUENCE ../dbinc/db.in /^struct __db_sequence; typedef struct __db_sequence/
-DB_SEQUENCE_OLDVER ../dbinc/db.in /^#define DB_SEQUENCE_OLDVER 1 \/* Oldest sequence/
-DB_SEQUENCE_STAT ../dbinc/db.in /^struct __db_seq_stat; typedef struct __db_seq_stat/
-DB_SEQUENCE_VERSION ../dbinc/db.in /^#define DB_SEQUENCE_VERSION 2 \/* Current sequenc/
-DB_SEQ_DEC ../dbinc/db.in /^#define DB_SEQ_DEC 0x00000001 \/* Decrement seque/
-DB_SEQ_INC ../dbinc/db.in /^#define DB_SEQ_INC 0x00000002 \/* Increment seque/
-DB_SEQ_RANGE_SET ../dbinc/db.in /^#define DB_SEQ_RANGE_SET 0x00000004 \/* Range set /
-DB_SEQ_RECORD ../dbinc/db.in /^struct __db_seq_record; typedef struct __db_seq_re/
-DB_SEQ_WRAP ../dbinc/db.in /^#define DB_SEQ_WRAP 0x00000008 \/* Wrap sequence /
-DB_SEQ_WRAPPED ../dbinc/db.in /^#define DB_SEQ_WRAPPED 0x00000010 \/* Just wrappe/
-DB_SERVER_DBFLAGS ../dbinc/db_server_int.h /^#define DB_SERVER_DBFLAGS (DB_NOMMAP | DB_RDONLY /
-DB_SERVER_DBNOSHARE ../dbinc/db_server_int.h /^#define DB_SERVER_DBNOSHARE (DB_EXCL | DB_TRUNCAT/
-DB_SERVER_ENVFLAGS ../dbinc/db_server_int.h /^#define DB_SERVER_ENVFLAGS ( \\$/
-DB_SERVER_FLAGMASK ../dbinc/db_server_int.h /^#define DB_SERVER_FLAGMASK ( \\$/
-DB_SERVER_IDLETIMEOUT ../dbinc/db_server_int.h /^#define DB_SERVER_IDLETIMEOUT 86400 \/* 1 day *\/$/
-DB_SERVER_MAXTIMEOUT ../dbinc/db_server_int.h /^#define DB_SERVER_MAXTIMEOUT 1200 \/* 20 minutes */
-DB_SERVER_TIMEOUT ../dbinc/db_server_int.h /^#define DB_SERVER_TIMEOUT 300 \/* 5 minutes *\/$/
-DB_SET ../dbinc/db.in /^#define DB_SET 25 \/* c_get(), DB_LOGC->get() */
+DB_RETRY ../dbinc/os.h 17
+DB_REVSPLITOFF ../dbinc/db.in 383
+DB_RMW ../dbinc/db.in 1444
+DB_RPC2ND_CONCATDATAKEY ../dbinc/db_int.in 689
+DB_RPC2ND_CONCATKEYDATA ../dbinc/db_int.in 688
+DB_RPC2ND_CONSTANT ../dbinc/db_int.in 692
+DB_RPC2ND_GETNAME ../dbinc/db_int.in 694
+DB_RPC2ND_GETZIP ../dbinc/db_int.in 693
+DB_RPC2ND_MASK ../dbinc/db_int.in 684
+DB_RPC2ND_NOOP ../dbinc/db_int.in 687
+DB_RPC2ND_REVERSECONCAT ../dbinc/db_int.in 690
+DB_RPC2ND_REVERSEDATA ../dbinc/db_int.in 686
+DB_RPC2ND_TRUNCDATA ../dbinc/db_int.in 691
+DB_RPCCLIENT ../dbinc/db.in 269
+DB_RUNRECOVERY ../dbinc/db.in 1479
+DB_SALVAGE ../dbinc/db.in 414
+DB_SECONDARY_BAD ../dbinc/db.in 1480
+DB_SEQUENCE ../dbinc/db.in 173
+DB_SEQUENCE_OLDVER ../dbinc/db.in 1393
+DB_SEQUENCE_STAT ../dbinc/db.in 172
+DB_SEQUENCE_VERSION ../dbinc/db.in 1392
+DB_SEQ_DEC ../dbinc/db.in 1305
+DB_SEQ_INC ../dbinc/db.in 1306
+DB_SEQ_RANGE_SET ../dbinc/db.in 1307
+DB_SEQ_RECORD ../dbinc/db.in 171
+DB_SEQ_WRAP ../dbinc/db.in 1308
+DB_SEQ_WRAPPED ../dbinc/db.in 1309
+DB_SERVER_DBFLAGS ../dbinc/db_server_int.h 64
+DB_SERVER_DBNOSHARE ../dbinc/db_server_int.h 65
+DB_SERVER_ENVFLAGS ../dbinc/db_server_int.h 60
+DB_SERVER_FLAGMASK ../dbinc/db_server_int.h 31
+DB_SERVER_IDLETIMEOUT ../dbinc/db_server_int.h 18
+DB_SERVER_MAXTIMEOUT ../dbinc/db_server_int.h 17
+DB_SERVER_TIMEOUT ../dbinc/db_server_int.h 16
+DB_SET ../dbinc/db.in 1424
DB_SET_CALLBACK ../cxx/cxx_db.cpp /^#define DB_SET_CALLBACK(_cxxname, _name, _cxxargsp/
DB_SET_DBT ../dbinc/db_int.in /^#define DB_SET_DBT(dbt, d, s) do { \\$/
-DB_SET_LOCK_TIMEOUT ../dbinc/db.in /^#define DB_SET_LOCK_TIMEOUT 26 \/* set_timout() */
-DB_SET_RANGE ../dbinc/db.in /^#define DB_SET_RANGE 27 \/* c_get() *\/$/
-DB_SET_RECNO ../dbinc/db.in /^#define DB_SET_RECNO 28 \/* get(), c_get() *\/$/
+DB_SET_LOCK_TIMEOUT ../dbinc/db.in 496
+DB_SET_RANGE ../dbinc/db.in 1425
+DB_SET_RECNO ../dbinc/db.in 1426
DB_SET_TXN_LSNP ../dbinc/log.h /^#define DB_SET_TXN_LSNP(txn, blsnp, llsnp) do { /
-DB_SET_TXN_NOW ../dbinc/db.in /^#define DB_SET_TXN_NOW 29 \/* set_timout() (inter/
-DB_SET_TXN_TIMEOUT ../dbinc/db.in /^#define DB_SET_TXN_TIMEOUT 30 \/* set_timout() *\//
-DB_SNAPSHOT ../dbinc/db.in /^#define DB_SNAPSHOT 0x00400000 \/* Recno: sn/
-DB_STAT_ALL ../dbinc/db.in /^#define DB_STAT_ALL 0x0000002 \/* Print: Eve/
-DB_STAT_CLEAR ../dbinc/db.in /^#define DB_STAT_CLEAR 0x0000004 \/* Clear st/
-DB_STAT_LOCK_CONF ../dbinc/db.in /^#define DB_STAT_LOCK_CONF 0x0000008 \/* Print:/
-DB_STAT_LOCK_FLAGS ../lock/lock_stat.c /^#define DB_STAT_LOCK_FLAGS \\$/
-DB_STAT_LOCK_LOCKERS ../dbinc/db.in /^#define DB_STAT_LOCK_LOCKERS 0x0000010 \/* Print:/
-DB_STAT_LOCK_OBJECTS ../dbinc/db.in /^#define DB_STAT_LOCK_OBJECTS 0x0000020 \/* Print:/
-DB_STAT_LOCK_PARAMS ../dbinc/db.in /^#define DB_STAT_LOCK_PARAMS 0x0000040 \/* Print:/
-DB_STAT_MEMP_FLAGS ../mp/mp_stat.c /^#define DB_STAT_MEMP_FLAGS \\$/
-DB_STAT_MEMP_HASH ../dbinc/db.in /^#define DB_STAT_MEMP_HASH 0x0000080 \/* Print:/
-DB_STAT_NOERROR ../dbinc/db.in /^#define DB_STAT_NOERROR 0x0000100 \/* Intern/
-DB_STAT_SUBSYSTEM ../dbinc/db.in /^#define DB_STAT_SUBSYSTEM 0x0000200 \/* Print:/
-DB_SURPRISE_KID ../dbinc/db.in /^#define DB_SURPRISE_KID (-30892)\/* Child commit /
-DB_SWAPBYTES ../dbinc/db.in /^#define DB_SWAPBYTES (-30891)\/* Database needs b/
-DB_SYSTEM_MEM ../dbinc/db.in /^#define DB_SYSTEM_MEM 0x1000000 \/* Use syst/
-DB_TEST_ELECTINIT ../dbinc/db.in /^#define DB_TEST_ELECTINIT 1 \/* after __rep_elect/
-DB_TEST_ELECTVOTE1 ../dbinc/db.in /^#define DB_TEST_ELECTVOTE1 2 \/* after sending VO/
-DB_TEST_POSTDESTROY ../dbinc/db.in /^#define DB_TEST_POSTDESTROY 3 \/* after destroy o/
-DB_TEST_POSTLOG ../dbinc/db.in /^#define DB_TEST_POSTLOG 4 \/* after logging all /
-DB_TEST_POSTLOGMETA ../dbinc/db.in /^#define DB_TEST_POSTLOGMETA 5 \/* after logging m/
-DB_TEST_POSTOPEN ../dbinc/db.in /^#define DB_TEST_POSTOPEN 6 \/* after __os_open */
-DB_TEST_POSTSYNC ../dbinc/db.in /^#define DB_TEST_POSTSYNC 7 \/* after syncing the /
-DB_TEST_PREDESTROY ../dbinc/db.in /^#define DB_TEST_PREDESTROY 8 \/* before destroy o/
-DB_TEST_PREOPEN ../dbinc/db.in /^#define DB_TEST_PREOPEN 9 \/* before __os_open */
+DB_SET_TXN_NOW ../dbinc/db.in 497
+DB_SET_TXN_TIMEOUT ../dbinc/db.in 498
+DB_SNAPSHOT ../dbinc/db.in 384
+DB_SPARE_FLAG ../dbinc/db.in 226
+DB_STAT_ALL ../dbinc/db.in 390
+DB_STAT_CLEAR ../dbinc/db.in 391
+DB_STAT_LOCK_CONF ../dbinc/db.in 392
+DB_STAT_LOCK_FLAGS ../lock/lock_stat.c 169
+DB_STAT_LOCK_LOCKERS ../dbinc/db.in 393
+DB_STAT_LOCK_OBJECTS ../dbinc/db.in 394
+DB_STAT_LOCK_PARAMS ../dbinc/db.in 395
+DB_STAT_MEMP_FLAGS ../mp/mp_stat.c 362
+DB_STAT_MEMP_HASH ../dbinc/db.in 396
+DB_STAT_NOERROR ../dbinc/db.in 397
+DB_STAT_SUBSYSTEM ../dbinc/db.in 398
+DB_SURPRISE_KID ../dbinc/db.in 1494
+DB_SWAPBYTES ../dbinc/db.in 1496
+DB_SYNC_ALLOC ../dbinc/mp.h 40
+DB_SYNC_CACHE ../dbinc/mp.h 41
+DB_SYNC_CHECKPOINT ../dbinc/mp.h 42
+DB_SYNC_FILE ../dbinc/mp.h 43
+DB_SYNC_INTERRUPT_OK ../dbinc/mp.h 44
+DB_SYNC_QUEUE_EXTENT ../dbinc/mp.h 45
+DB_SYNC_SUPPRESS_WRITE ../dbinc/mp.h 46
+DB_SYNC_TRICKLE ../dbinc/mp.h 47
+DB_SYSTEM_MEM ../dbinc/db.in 294
+DB_TEMP_DIRECTORY ../os/os_tmpdir.c /^#define DB_TEMP_DIRECTORY(n) { \\$/
+DB_TEST_ELECTINIT ../dbinc/db.in 2462
+DB_TEST_ELECTVOTE1 ../dbinc/db.in 2463
+DB_TEST_POSTDESTROY ../dbinc/db.in 2464
+DB_TEST_POSTLOG ../dbinc/db.in 2465
+DB_TEST_POSTLOGMETA ../dbinc/db.in 2466
+DB_TEST_POSTOPEN ../dbinc/db.in 2467
+DB_TEST_POSTSYNC ../dbinc/db.in 2468
+DB_TEST_PREDESTROY ../dbinc/db.in 2469
+DB_TEST_PREOPEN ../dbinc/db.in 2470
DB_TEST_RECOVERY ../dbinc/debug.h /^#define DB_TEST_RECOVERY(dbp, val, ret, name) do {/
-DB_TEST_RECOVERY_LABEL ../dbinc/debug.h /^#define DB_TEST_RECOVERY_LABEL db_tr_err:$/
-DB_TEST_RECYCLE ../dbinc/db.in /^#define DB_TEST_RECYCLE 10 \/* test rep and txn_/
-DB_TEST_SUBDB_LOCKS ../dbinc/db.in /^#define DB_TEST_SUBDB_LOCKS 11 \/* subdb locking /
+DB_TEST_RECOVERY_LABEL ../dbinc/debug.h 264
+DB_TEST_RECYCLE ../dbinc/db.in 2471
+DB_TEST_SUBDB_LOCKS ../dbinc/db.in 2472
DB_TEST_SUBLOCKS ../dbinc/debug.h /^#define DB_TEST_SUBLOCKS(env, flags) do { \\$/
DB_TEST_WAIT ../dbinc/debug.h /^#define DB_TEST_WAIT(env, val) \\$/
-DB_THREAD ../dbinc/db.in /^#define DB_THREAD 0x0000080 \/* Applications/
-DB_THREADID_STRLEN ../dbinc/db.in /^#define DB_THREADID_STRLEN 128$/
-DB_THREAD_INFO ../dbinc/db_int.in /^} DB_THREAD_INFO;$/
-DB_THREAD_STATE ../dbinc/db_int.in /^} DB_THREAD_STATE;$/
-DB_TIMEOUT ../dbinc/db.in /^#define DB_TIMEOUT (-30890)\/* Timed out waiting /
-DB_TIME_NOTGRANTED ../dbinc/db.in /^#define DB_TIME_NOTGRANTED 0x40000000\/* Return/
-DB_TRAIL ../env/env_open.c /^#define DB_TRAIL "BDBXXXXX"$/
-DB_TRUNCATE ../dbinc/db.in /^#define DB_TRUNCATE 0x0000100 \/* Discard ex/
-DB_TXN ../dbinc/db.in /^struct __db_txn; typedef struct __db_txn DB_TXN;$/
-DB_TXNHEAD ../dbinc/db_int.in /^struct __db_txnhead; typedef struct __db_txnhead D/
-DB_TXNLIST ../dbinc/db_int.in /^struct __db_txnlist; typedef struct __db_txnlist D/
+DB_THREAD ../dbinc/db.in 220
+DB_THREADID_STRLEN ../dbinc/db.in 463
+DB_THREAD_STATE ../dbinc/db_int.in 484
+DB_TIMEOUT ../dbinc/db.in 1497
+DB_TIMEOUT_TO_TIMESPEC ../dbinc/clock.h /^#define DB_TIMEOUT_TO_TIMESPEC(t, vvp) \\$/
+DB_TIMESPEC_TO_TIMEOUT ../dbinc/clock.h /^#define DB_TIMESPEC_TO_TIMEOUT(t, vvp) \\$/
+DB_TIME_NOTGRANTED ../dbinc/db.in 348
+DB_TRAIL ../env/env_name.c 145
+DB_TRUNCATE ../dbinc/db.in 221
+DB_TXN ../dbinc/db.in 174
+DB_TXNHEAD ../dbinc/db_int.in 701
+DB_TXNLIST ../dbinc/db_int.in 702
DB_TXNLIST_MASK ../dbinc/db_dispatch.h /^#define DB_TXNLIST_MASK(hp, n) (n % hp->nslots)$/
-DB_TXNLIST_MAX_PGNO ../db/db_dispatch.c /^#define DB_TXNLIST_MAX_PGNO 8 \/* A nice even num/
-DB_TXNLOGREC ../dbinc/txn.h /^struct __txn_logrec; typedef struct __txn_logrec D/
-DB_TXNMGR ../dbinc/db.in /^struct __db_txnmgr; typedef struct __db_txnmgr DB_/
-DB_TXNREGION ../dbinc/txn.h /^struct __db_txnregion; typedef struct __db_txnregi/
-DB_TXNVERSION ../dbinc/db.in /^#define DB_TXNVERSION 1$/
-DB_TXN_ACTIVE ../dbinc/db.in /^struct __db_txn_active; typedef struct __db_txn_ac/
-DB_TXN_CKP ../dbinc/db.in /^#define DB_TXN_CKP (-30889)\/* Encountered ckp re/
-DB_TXN_NOSYNC ../dbinc/db.in /^#define DB_TXN_NOSYNC 0x0000200 \/* Do not s/
-DB_TXN_NOT_DURABLE ../dbinc/db.in /^#define DB_TXN_NOT_DURABLE 0x0000400 \/* Do not/
-DB_TXN_NOWAIT ../dbinc/db.in /^#define DB_TXN_NOWAIT 0x0004000 \/* Do not w/
-DB_TXN_SNAPSHOT ../dbinc/db.in /^#define DB_TXN_SNAPSHOT 0x10000000\/* Snapsh/
-DB_TXN_STAT ../dbinc/db.in /^struct __db_txn_stat; typedef struct __db_txn_stat/
-DB_TXN_SYNC ../dbinc/db.in /^#define DB_TXN_SYNC 0x0008000 \/* Always syn/
-DB_TXN_WRITE_NOSYNC ../dbinc/db.in /^#define DB_TXN_WRITE_NOSYNC 0x0000800 \/* Write /
+DB_TXNLIST_MAX_PGNO ../db/db_dispatch.c 1459
+DB_TXNLOGREC ../dbinc/txn.h 27
+DB_TXNMGR ../dbinc/db.in 177
+DB_TXNREGION ../dbinc/txn.h 26
+DB_TXNVERSION ../dbinc/db.in 940
+DB_TXN_ACTIVE ../dbinc/db.in 175
+DB_TXN_CKP ../dbinc/db.in 1498
+DB_TXN_NOSYNC ../dbinc/db.in 222
+DB_TXN_NOT_DURABLE ../dbinc/db.in 224
+DB_TXN_NOWAIT ../dbinc/db.in 223
+DB_TXN_SNAPSHOT ../dbinc/db.in 259
+DB_TXN_STAT ../dbinc/db.in 176
+DB_TXN_SYNC ../dbinc/db.in 316
+DB_TXN_WAIT ../dbinc/db.in 317
+DB_TXN_WRITE_NOSYNC ../dbinc/db.in 225
DB_UNDO ../dbinc/db.in /^#define DB_UNDO(op) ((op) == DB_TXN_ABORT || \\$/
-DB_UNREF ../dbinc/db.in /^#define DB_UNREF 0x0000080 \/* Report unrefe/
-DB_UPDATE_SECONDARY ../dbinc/db.in /^#define DB_UPDATE_SECONDARY 31 \/* c_get(), c_del(/
-DB_UPGRADE ../dbinc/db.in /^#define DB_UPGRADE 0x0000001 \/* Upgrading. /
-DB_USERCOPY_GETDATA ../dbinc/db.in /^#define DB_USERCOPY_GETDATA 0x0001$/
-DB_USERCOPY_SETDATA ../dbinc/db.in /^#define DB_USERCOPY_SETDATA 0x0002$/
-DB_USE_ENVIRON ../dbinc/db.in /^#define DB_USE_ENVIRON 0x0001000 \/* Use the/
-DB_USE_ENVIRON_ROOT ../dbinc/db.in /^#define DB_USE_ENVIRON_ROOT 0x0002000 \/* Use th/
-DB_VERB_DEADLOCK ../dbinc/db.in /^#define DB_VERB_DEADLOCK 0x0001 \/* Deadlock detec/
-DB_VERB_RECOVERY ../dbinc/db.in /^#define DB_VERB_RECOVERY 0x0002 \/* Recovery infor/
-DB_VERB_REGISTER ../dbinc/db.in /^#define DB_VERB_REGISTER 0x0004 \/* Dump waits-for/
-DB_VERB_REPLICATION ../dbinc/db.in /^#define DB_VERB_REPLICATION 0x0008 \/* Replication/
-DB_VERB_WAITSFOR ../dbinc/db.in /^#define DB_VERB_WAITSFOR 0x0010 \/* Dump waits-for/
-DB_VERIFY ../dbinc/db.in /^#define DB_VERIFY 0x0000002 \/* Verifying. */
-DB_VERIFY_BAD ../dbinc/db.in /^#define DB_VERIFY_BAD (-30973)\/* Verify failed; /
-DB_VERIFY_FATAL ../dbinc/db.in /^#define DB_VERIFY_FATAL (-30888)\/* DB->verify ca/
-DB_VERSION_MAJOR ../dbinc/db.in /^#define DB_VERSION_MAJOR @DB_VERSION_MAJOR@$/
-DB_VERSION_MINOR ../dbinc/db.in /^#define DB_VERSION_MINOR @DB_VERSION_MINOR@$/
-DB_VERSION_MISMATCH ../dbinc/db.in /^#define DB_VERSION_MISMATCH (-30972)\/* Environmen/
-DB_VERSION_PATCH ../dbinc/db.in /^#define DB_VERSION_PATCH @DB_VERSION_PATCH@$/
-DB_VERSION_STRING ../dbinc/db.in /^#define DB_VERSION_STRING @DB_VERSION_STRING@$/
-DB_WRITECURSOR ../dbinc/db.in /^#define DB_WRITECURSOR 32 \/* cursor() *\/$/
-DB_WRITELOCK ../dbinc/db.in /^#define DB_WRITELOCK 33 \/* cursor() (internal) */
-DB_WRITEOPEN ../dbinc/db.in /^#define DB_WRITEOPEN 0x0040000 \/* UNDOC: op/
-DB_XA_CREATE ../dbinc/db.in /^#define DB_XA_CREATE 0x0000002 \/* Open in a/
-DB_XIDDATASIZE ../dbinc/db.in /^#define DB_XIDDATASIZE 128$/
-DB_YIELDCPU ../dbinc/db.in /^#define DB_YIELDCPU 0x80000000\/* Yield the /
-DB_debug_FLAG ../dbinc/db.in /^#define DB_debug_FLAG 0x80000000$/
-DB_user_BEGIN ../dbinc/db.in /^#define DB_user_BEGIN 10000$/
+DB_UNREF ../dbinc/db.in 415
+DB_UPDATE_SECONDARY ../dbinc/db.in 1427
+DB_UPGRADE ../dbinc/db.in 354
+DB_USERCOPY_GETDATA ../dbinc/db.in 2092
+DB_USERCOPY_SETDATA ../dbinc/db.in 2093
+DB_USE_ENVIRON ../dbinc/db.in 279
+DB_USE_ENVIRON_ROOT ../dbinc/db.in 280
+DB_VERB_DEADLOCK ../dbinc/db.in 2102
+DB_VERB_FILEOPS ../dbinc/db.in 2103
+DB_VERB_FILEOPS_ALL ../dbinc/db.in 2104
+DB_VERB_RECOVERY ../dbinc/db.in 2105
+DB_VERB_REGISTER ../dbinc/db.in 2106
+DB_VERB_REPLICATION ../dbinc/db.in 2107
+DB_VERB_WAITSFOR ../dbinc/db.in 2108
+DB_VERIFY ../dbinc/db.in 355
+DB_VERIFY_BAD ../dbinc/db.in 1481
+DB_VERIFY_FATAL ../dbinc/db.in 1499
+DB_VERSION_MAJOR ../dbinc/db.in 45
+DB_VERSION_MINOR ../dbinc/db.in 46
+DB_VERSION_MISMATCH ../dbinc/db.in 1482
+DB_VERSION_PATCH ../dbinc/db.in 47
+DB_VERSION_STRING ../dbinc/db.in 48
+DB_WRITECURSOR ../dbinc/db.in 1428
+DB_WRITELOCK ../dbinc/db.in 1429
+DB_WRITEOPEN ../dbinc/db.in 305
+DB_XA_CREATE ../dbinc/db.in 274
+DB_XIDDATASIZE ../dbinc/db.in 1080
+DB_YIELDCPU ../dbinc/db.in 349
+DB_debug_FLAG ../dbinc/db.in 682
+DB_user_BEGIN ../dbinc/db.in 681
DCHARHASH ../hash/hash_func.c /^#define DCHARHASH(h, c) ((h) = 0x63c63cd9*(h) + 0x/
-DD_INVALID_ID ../lock/lock_deadlock.c /^#define DD_INVALID_ID ((u_int32_t) -1)$/
+DD_INVALID_ID ../lock/lock_deadlock.c 364
DEBUG_LREAD ../dbinc/debug.h /^#define DEBUG_LREAD(C, T, O, K, A, F) LOG_OP(C, T,/
DEBUG_LWRITE ../dbinc/debug.h /^#define DEBUG_LWRITE(C, T, O, K, A, F) LOG_OP(C, T/
-DEFMINKEYPAGE ../dbinc/btree.h /^#define DEFMINKEYPAGE (2)$/
-DEF_MAX_TXNS ../dbinc/txn.h /^#define DEF_MAX_TXNS 100 \/* Default max transact/
-DELOVFL ../dbinc/hash.h /^#define DELOVFL 0x50$/
-DELPAIR ../dbinc/hash.h /^#define DELPAIR 0x30$/
-DIR_DECRYPT ../crypto/rijndael/rijndael-api-fst.h /^#define DIR_DECRYPT 1 \/* Are we de/
-DIR_ENCRYPT ../crypto/rijndael/rijndael-api-fst.h /^#define DIR_ENCRYPT 0 \/* Are we en/
+DEFMINKEYPAGE ../dbinc/btree.h 56
+DEF_MAX_TXNS ../dbinc/txn.h 37
+DELOVFL ../dbinc/hash.h 133
+DELPAIR ../dbinc/hash.h 131
+DIR_DECRYPT ../crypto/rijndael/rijndael-api-fst.h 48
+DIR_ENCRYPT ../crypto/rijndael/rijndael-api-fst.h 47
DISCARD_CUR ../btree/bt_cursor.c /^#define DISCARD_CUR(dbc, ret) do { \\$/
DONT_NEED_LOCKS ../qam/qam.c /^#define DONT_NEED_LOCKS(dbc) ((dbc)->txn == NULL |/
DO_PREPLIST ../tcl/tcl_txn.c /^#define DO_PREPLIST(count) \\$/
-DO_TRADE ../txn/txn_util.c /^#define DO_TRADE do { \\$/
+DO_TRADE ../txn/txn_util.c 217
DUP_SIZE ../dbinc/hash.h /^#define DUP_SIZE(len) ((len) + 2 * sizeof(db_indx_/
-Db ../cxx/cxx_db.cpp /^\/\/ If the DB handle is still open, we close it. /
-DbDeadlockException ../cxx/cxx_except.cpp /^DbDeadlockException::~DbDeadlockException() throw(/
-DbEnv ../cxx/cxx_env.cpp /^\/\/ If the DB_ENV handle is still open, we close /
+Db ../libdb_java/db_java_wrap.c 2333
+Db::Db ../cxx/cxx_db.cpp /^Db::Db(DbEnv *env, u_int32_t flags)$/
+Db::cleanup ../cxx/cxx_db.cpp /^void Db::cleanup()$/
+Db::error_policy ../cxx/cxx_db.cpp /^int Db::error_policy()$/
+Db::errx ../cxx/cxx_db.cpp /^void Db::errx(const char *format, ...)$/
+Db::get_app_private ../cxx/cxx_db.cpp /^void *Db::get_app_private() const$/
+Db::get_byteswapped ../cxx/cxx_db.cpp /^int Db::get_byteswapped(int *isswapped)$/
+Db::get_env ../cxx/cxx_db.cpp /^DbEnv *Db::get_env()$/
+Db::get_mpf ../cxx/cxx_db.cpp /^DbMpoolFile *Db::get_mpf()$/
+Db::initialize ../cxx/cxx_db.cpp /^int Db::initialize()$/
+Db::pget ../cxx/cxx_db.cpp /^int Db::pget(DbTxn *txnid, Dbt *key, Dbt *pkey, Db/
+Db::set_app_private ../cxx/cxx_db.cpp /^void Db::set_app_private(void *value)$/
+Db::set_error_stream ../cxx/cxx_db.cpp /^void Db::set_error_stream(__DB_STD(ostream) *error/
+Db::set_message_stream ../cxx/cxx_db.cpp /^void Db::set_message_stream(__DB_STD(ostream) *mes/
+Db::set_msgcall ../cxx/cxx_db.cpp /^void Db::set_msgcall(void (*arg)(const DbEnv *, co/
+Db::verify ../cxx/cxx_db.cpp /^int Db::verify(const char *name, const char *subdb/
+Db::~Db ../cxx/cxx_db.cpp /^Db::~Db()$/
+DbDeadlockException::DbDeadlockException ../cxx/cxx_except.cpp /^DbDeadlockException::DbDeadlockException(const cha/
+DbDeadlockException::operator = ../cxx/cxx_except.cpp /^&DbDeadlockException::operator =(const DbDeadlockE/
+DbDeadlockException::~DbDeadlockException ../cxx/cxx_except.cpp /^DbDeadlockException::~DbDeadlockException() throw(/
+DbEnv ../libdb_java/db_java_wrap.c 2336
+DbEnv::DbEnv ../cxx/cxx_env.cpp /^DbEnv::DbEnv(u_int32_t flags)$/
+DbEnv::_app_dispatch_intercept ../cxx/cxx_env.cpp /^int DbEnv::_app_dispatch_intercept(DB_ENV *env, DB/
+DbEnv::_event_func_intercept ../cxx/cxx_env.cpp /^void DbEnv::_event_func_intercept($/
+DbEnv::_feedback_intercept ../cxx/cxx_env.cpp /^void DbEnv::_feedback_intercept(DB_ENV *env, int o/
+DbEnv::_isalive_intercept ../cxx/cxx_env.cpp /^int DbEnv::_isalive_intercept($/
+DbEnv::_paniccall_intercept ../cxx/cxx_env.cpp /^void DbEnv::_paniccall_intercept(DB_ENV *env, int /
+DbEnv::_rep_send_intercept ../cxx/cxx_env.cpp /^int DbEnv::_rep_send_intercept(DB_ENV *env, const /
+DbEnv::_stream_error_function ../cxx/cxx_env.cpp /^void DbEnv::_stream_error_function($/
+DbEnv::_stream_message_function ../cxx/cxx_env.cpp /^void DbEnv::_stream_message_function(const DB_ENV /
+DbEnv::_thread_id_intercept ../cxx/cxx_env.cpp /^void DbEnv::_thread_id_intercept(DB_ENV *env,$/
+DbEnv::_thread_id_string_intercept ../cxx/cxx_env.cpp /^char *DbEnv::_thread_id_string_intercept(DB_ENV *e/
+DbEnv::cdsgroup_begin ../cxx/cxx_env.cpp /^int DbEnv::cdsgroup_begin(DbTxn **tid)$/
+DbEnv::cleanup ../cxx/cxx_env.cpp /^void DbEnv::cleanup()$/
+DbEnv::close ../cxx/cxx_env.cpp /^int DbEnv::close(u_int32_t flags)$/
+DbEnv::error_policy ../cxx/cxx_env.cpp /^int DbEnv::error_policy()$/
+DbEnv::errx ../cxx/cxx_env.cpp /^void DbEnv::errx(const char *format, ...)$/
+DbEnv::get_app_private ../cxx/cxx_env.cpp /^void *DbEnv::get_app_private() const$/
+DbEnv::remove ../cxx/cxx_env.cpp /^int DbEnv::remove(const char *db_home, u_int32_t f/
+DbEnv::runtime_error ../cxx/cxx_env.cpp /^void DbEnv::runtime_error(DbEnv *env,$/
+DbEnv::runtime_error_dbt ../cxx/cxx_env.cpp /^void DbEnv::runtime_error_dbt(DbEnv *env,$/
+DbEnv::runtime_error_lock_get ../cxx/cxx_env.cpp /^void DbEnv::runtime_error_lock_get(DbEnv *env,$/
+DbEnv::set_error_stream ../cxx/cxx_env.cpp /^void DbEnv::set_error_stream(__DB_STD(ostream) *st/
+DbEnv::set_event_notify ../cxx/cxx_env.cpp /^int DbEnv::set_event_notify(void (*arg)(DbEnv *, u/
+DbEnv::set_feedback ../cxx/cxx_env.cpp /^int DbEnv::set_feedback(void (*arg)(DbEnv *, int, /
+DbEnv::set_isalive ../cxx/cxx_env.cpp /^int DbEnv::set_isalive$/
+DbEnv::set_message_stream ../cxx/cxx_env.cpp /^void DbEnv::set_message_stream(__DB_STD(ostream) */
+DbEnv::set_paniccall ../cxx/cxx_env.cpp /^int DbEnv::set_paniccall(void (*arg)(DbEnv *, int)/
+DbEnv::set_thread_id_string ../cxx/cxx_env.cpp /^int DbEnv::set_thread_id_string($/
+DbEnv::strerror ../cxx/cxx_env.cpp /^char *DbEnv::strerror(int error)$/
+DbEnv::txn_begin ../cxx/cxx_env.cpp /^int DbEnv::txn_begin(DbTxn *pid, DbTxn **tid, u_in/
+DbEnv::wrap_DB_ENV ../cxx/cxx_env.cpp /^DbEnv *DbEnv::wrap_DB_ENV(DB_ENV *dbenv)$/
+DbEnv::~DbEnv ../cxx/cxx_env.cpp /^DbEnv::~DbEnv()$/
DbEnv_cdsgroup_begin ../libdb_java/db_java_wrap.c /^SWIGINTERN DB_TXN *DbEnv_cdsgroup_begin(struct DbE/
DbEnv_close ../libdb_java/db_java_wrap.c /^SWIGINTERN db_ret_t DbEnv_close(struct DbEnv *self/
DbEnv_dbremove ../libdb_java/db_java_wrap.c /^SWIGINTERN db_ret_t DbEnv_dbremove(struct DbEnv *s/
@@ -856,6 +924,7 @@ DbEnv_dbrename ../libdb_java/db_java_wrap.c /^SWIGINTERN db_ret_t DbEnv_dbrename
DbEnv_err ../libdb_java/db_java_wrap.c /^SWIGINTERN void DbEnv_err(struct DbEnv *self,int e/
DbEnv_errx ../libdb_java/db_java_wrap.c /^SWIGINTERN void DbEnv_errx(struct DbEnv *self,char/
DbEnv_fileid_reset ../libdb_java/db_java_wrap.c /^SWIGINTERN db_ret_t DbEnv_fileid_reset(struct DbEn/
+DbEnv_get_cache_max ../libdb_java/db_java_wrap.c /^SWIGINTERN jlong DbEnv_get_cache_max(struct DbEnv /
DbEnv_get_cachesize ../libdb_java/db_java_wrap.c /^SWIGINTERN jlong DbEnv_get_cachesize(struct DbEnv /
DbEnv_get_cachesize_ncache ../libdb_java/db_java_wrap.c /^SWIGINTERN int DbEnv_get_cachesize_ncache(struct D/
DbEnv_get_data_dirs ../libdb_java/db_java_wrap.c /^SWIGINTERN char const **DbEnv_get_data_dirs(struct/
@@ -874,7 +943,7 @@ DbEnv_get_lk_max_locks ../libdb_java/db_java_wrap.c /^SWIGINTERN u_int32_t DbEnv
DbEnv_get_lk_max_objects ../libdb_java/db_java_wrap.c /^SWIGINTERN u_int32_t DbEnv_get_lk_max_objects(stru/
DbEnv_get_mp_max_openfd ../libdb_java/db_java_wrap.c /^SWIGINTERN int DbEnv_get_mp_max_openfd(struct DbEn/
DbEnv_get_mp_max_write ../libdb_java/db_java_wrap.c /^SWIGINTERN int DbEnv_get_mp_max_write(struct DbEnv/
-DbEnv_get_mp_max_write_sleep ../libdb_java/db_java_wrap.c /^SWIGINTERN int DbEnv_get_mp_max_write_sleep(struct/
+DbEnv_get_mp_max_write_sleep ../libdb_java/db_java_wrap.c /^SWIGINTERN db_timeout_t DbEnv_get_mp_max_write_sle/
DbEnv_get_mp_mmapsize ../libdb_java/db_java_wrap.c /^SWIGINTERN size_t DbEnv_get_mp_mmapsize(struct DbE/
DbEnv_get_open_flags ../libdb_java/db_java_wrap.c /^SWIGINTERN u_int32_t DbEnv_get_open_flags(struct D/
DbEnv_get_shm_key ../libdb_java/db_java_wrap.c /^SWIGINTERN long DbEnv_get_shm_key(struct DbEnv *se/
@@ -917,7 +986,7 @@ DbEnv_mutex_set_tas_spins ../libdb_java/db_java_wrap.c /^SWIGINTERN db_ret_t DbE
DbEnv_mutex_stat ../libdb_java/db_java_wrap.c /^SWIGINTERN DB_MUTEX_STAT *DbEnv_mutex_stat(struct /
DbEnv_open ../libdb_java/db_java_wrap.c /^SWIGINTERN db_ret_t DbEnv_open(struct DbEnv *self,/
DbEnv_remove ../libdb_java/db_java_wrap.c /^SWIGINTERN db_ret_t DbEnv_remove(struct DbEnv *sel/
-DbEnv_rep_elect ../libdb_java/db_java_wrap.c /^SWIGINTERN int DbEnv_rep_elect(struct DbEnv *self,/
+DbEnv_rep_elect ../libdb_java/db_java_wrap.c /^SWIGINTERN db_ret_t DbEnv_rep_elect(struct DbEnv */
DbEnv_rep_flush ../libdb_java/db_java_wrap.c /^SWIGINTERN db_ret_t DbEnv_rep_flush(struct DbEnv */
DbEnv_rep_get_config ../libdb_java/db_java_wrap.c /^SWIGINTERN int_bool DbEnv_rep_get_config(struct Db/
DbEnv_rep_get_limit ../libdb_java/db_java_wrap.c /^SWIGINTERN jlong DbEnv_rep_get_limit(struct DbEnv /
@@ -926,6 +995,7 @@ DbEnv_rep_get_priority ../libdb_java/db_java_wrap.c /^SWIGINTERN int DbEnv_rep_g
DbEnv_rep_get_timeout ../libdb_java/db_java_wrap.c /^SWIGINTERN u_int32_t DbEnv_rep_get_timeout(struct /
DbEnv_rep_process_message ../libdb_java/db_java_wrap.c /^SWIGINTERN int DbEnv_rep_process_message(struct Db/
DbEnv_rep_set_config ../libdb_java/db_java_wrap.c /^SWIGINTERN db_ret_t DbEnv_rep_set_config(struct Db/
+DbEnv_rep_set_lease ../libdb_java/db_java_wrap.c /^SWIGINTERN db_ret_t DbEnv_rep_set_lease(struct DbE/
DbEnv_rep_set_limit ../libdb_java/db_java_wrap.c /^SWIGINTERN db_ret_t DbEnv_rep_set_limit(struct DbE/
DbEnv_rep_set_nsites ../libdb_java/db_java_wrap.c /^SWIGINTERN db_ret_t DbEnv_rep_set_nsites(struct Db/
DbEnv_rep_set_priority ../libdb_java/db_java_wrap.c /^SWIGINTERN db_ret_t DbEnv_rep_set_priority(struct /
@@ -940,7 +1010,9 @@ DbEnv_repmgr_set_ack_policy ../libdb_java/db_java_wrap.c /^SWIGINTERN db_ret_t D
DbEnv_repmgr_set_local_site ../libdb_java/db_java_wrap.c /^SWIGINTERN db_ret_t DbEnv_repmgr_set_local_site(st/
DbEnv_repmgr_site_list ../libdb_java/db_java_wrap.c /^SWIGINTERN struct __db_repmgr_sites DbEnv_repmgr_s/
DbEnv_repmgr_start ../libdb_java/db_java_wrap.c /^SWIGINTERN db_ret_t DbEnv_repmgr_start(struct DbEn/
+DbEnv_repmgr_stat ../libdb_java/db_java_wrap.c /^SWIGINTERN DB_REPMGR_STAT *DbEnv_repmgr_stat(struc/
DbEnv_set_app_dispatch ../libdb_java/db_java_wrap.c /^SWIGINTERN db_ret_t DbEnv_set_app_dispatch(struct /
+DbEnv_set_cache_max ../libdb_java/db_java_wrap.c /^SWIGINTERN db_ret_t DbEnv_set_cache_max(struct DbE/
DbEnv_set_cachesize ../libdb_java/db_java_wrap.c /^SWIGINTERN db_ret_t DbEnv_set_cachesize(struct DbE/
DbEnv_set_data_dir ../libdb_java/db_java_wrap.c /^SWIGINTERN db_ret_t DbEnv_set_data_dir(struct DbEn/
DbEnv_set_encrypt ../libdb_java/db_java_wrap.c /^SWIGINTERN db_ret_t DbEnv_set_encrypt(struct DbEnv/
@@ -977,24 +1049,63 @@ DbEnv_txn_begin ../libdb_java/db_java_wrap.c /^SWIGINTERN DB_TXN *DbEnv_txn_begi
DbEnv_txn_checkpoint ../libdb_java/db_java_wrap.c /^SWIGINTERN db_ret_t DbEnv_txn_checkpoint(struct Db/
DbEnv_txn_recover ../libdb_java/db_java_wrap.c /^SWIGINTERN DB_PREPLIST *DbEnv_txn_recover(struct D/
DbEnv_txn_stat ../libdb_java/db_java_wrap.c /^SWIGINTERN DB_TXN_STAT *DbEnv_txn_stat(struct DbEn/
-DbException ../cxx/cxx_except.cpp /^DbException::~DbException() throw()$/
-DbLock ../cxx/cxx_lock.cpp /^DbLock::DbLock()$/
-DbLockNotGrantedException ../cxx/cxx_except.cpp /^DbLockNotGrantedException::~DbLockNotGrantedExcept/
-DbLogc ../cxx/cxx_logc.cpp /^\/\/ It's private, and should never be called,$/
+DbException::DbException ../cxx/cxx_except.cpp /^DbException::DbException(int err)$/
+DbException::describe ../cxx/cxx_except.cpp /^void DbException::describe(const char *prefix, con/
+DbException::get_env ../cxx/cxx_except.cpp /^DbEnv *DbException::get_env() const$/
+DbException::get_errno ../cxx/cxx_except.cpp /^int DbException::get_errno() const$/
+DbException::operator = ../cxx/cxx_except.cpp /^DbException &DbException::operator = (const DbExce/
+DbException::set_env ../cxx/cxx_except.cpp /^void DbException::set_env(DbEnv *env)$/
+DbException::what ../cxx/cxx_except.cpp /^const char *DbException::what() const throw()$/
+DbException::~DbException ../cxx/cxx_except.cpp /^DbException::~DbException() throw()$/
+DbLock ../libdb_java/db_java_wrap.c 2337
+DbLock::DbLock ../cxx/cxx_lock.cpp /^DbLock::DbLock(DB_LOCK value)$/
+DbLock::operator = ../cxx/cxx_lock.cpp /^DbLock &DbLock::operator = (const DbLock &that)$/
+DbLockNotGrantedException::DbLockNotGrantedException ../cxx/cxx_except.cpp /^DbLockNotGrantedException::DbLockNotGrantedExcepti/
+DbLockNotGrantedException::get_index ../cxx/cxx_except.cpp /^int DbLockNotGrantedException::get_index() const$/
+DbLockNotGrantedException::get_lock ../cxx/cxx_except.cpp /^DbLock* DbLockNotGrantedException::get_lock() cons/
+DbLockNotGrantedException::get_mode ../cxx/cxx_except.cpp /^db_lockmode_t DbLockNotGrantedException::get_mode(/
+DbLockNotGrantedException::get_obj ../cxx/cxx_except.cpp /^const Dbt* DbLockNotGrantedException::get_obj() co/
+DbLockNotGrantedException::get_op ../cxx/cxx_except.cpp /^db_lockop_t DbLockNotGrantedException::get_op() co/
+DbLockNotGrantedException::operator = ../cxx/cxx_except.cpp /^&DbLockNotGrantedException::operator =(const DbLoc/
+DbLockNotGrantedException::~DbLockNotGrantedException ../cxx/cxx_except.cpp /^DbLockNotGrantedException::~DbLockNotGrantedExcept/
+DbLogc ../libdb_java/db_java_wrap.c 2338
+DbLogc::close ../cxx/cxx_logc.cpp /^int DbLogc::close(u_int32_t _flags)$/
+DbLogc::get ../cxx/cxx_logc.cpp /^int DbLogc::get(DbLsn *get_lsn, Dbt *data, u_int32/
+DbLogc::version ../cxx/cxx_logc.cpp /^int DbLogc::version(u_int32_t *versionp, u_int32_t/
+DbLogc::~DbLogc ../cxx/cxx_logc.cpp /^DbLogc::~DbLogc()$/
DbLogc_close ../libdb_java/db_java_wrap.c /^SWIGINTERN db_ret_t DbLogc_close(struct DbLogc *se/
DbLogc_get ../libdb_java/db_java_wrap.c /^SWIGINTERN int DbLogc_get(struct DbLogc *self,DB_L/
-DbLsn ../libdb_java/db_java_wrap.c /^#define DbLsn __db_lsn$/
-DbMemoryException ../cxx/cxx_except.cpp /^DbMemoryException::~DbMemoryException() throw()$/
-DbMpoolFile ../cxx/cxx_mpool.cpp /^DbMpoolFile::~DbMpoolFile()$/
+DbLogc_version ../libdb_java/db_java_wrap.c /^SWIGINTERN u_int32_t DbLogc_version(struct DbLogc /
+DbLsn ../libdb_java/db_java_wrap.c 2339
+DbMemoryException::DbMemoryException ../cxx/cxx_except.cpp /^DbMemoryException::DbMemoryException(Dbt *dbt)$/
+DbMemoryException::get_dbt ../cxx/cxx_except.cpp /^Dbt *DbMemoryException::get_dbt() const$/
+DbMemoryException::operator = ../cxx/cxx_except.cpp /^&DbMemoryException::operator =(const DbMemoryExcep/
+DbMemoryException::~DbMemoryException ../cxx/cxx_except.cpp /^DbMemoryException::~DbMemoryException() throw()$/
+DbMpoolFile ../libdb_java/db_java_wrap.c 2340
+DbMpoolFile::DbMpoolFile ../cxx/cxx_mpool.cpp /^DbMpoolFile::DbMpoolFile()$/
+DbMpoolFile::close ../cxx/cxx_mpool.cpp /^int DbMpoolFile::close(u_int32_t flags)$/
+DbMpoolFile::~DbMpoolFile ../cxx/cxx_mpool.cpp /^DbMpoolFile::~DbMpoolFile()$/
DbMpoolFile_get_flags ../libdb_java/db_java_wrap.c /^SWIGINTERN u_int32_t DbMpoolFile_get_flags(struct /
DbMpoolFile_get_maxsize ../libdb_java/db_java_wrap.c /^SWIGINTERN jlong DbMpoolFile_get_maxsize(struct Db/
DbMpoolFile_get_priority ../libdb_java/db_java_wrap.c /^SWIGINTERN DB_CACHE_PRIORITY DbMpoolFile_get_prior/
DbMpoolFile_set_flags ../libdb_java/db_java_wrap.c /^SWIGINTERN db_ret_t DbMpoolFile_set_flags(struct D/
DbMpoolFile_set_maxsize ../libdb_java/db_java_wrap.c /^SWIGINTERN db_ret_t DbMpoolFile_set_maxsize(struct/
DbMpoolFile_set_priority ../libdb_java/db_java_wrap.c /^SWIGINTERN db_ret_t DbMpoolFile_set_priority(struc/
-DbRepHandleDeadException ../cxx/cxx_except.cpp /^DbRepHandleDeadException::~DbRepHandleDeadExceptio/
-DbRunRecoveryException ../cxx/cxx_except.cpp /^DbRunRecoveryException::~DbRunRecoveryException() /
-DbSequence ../cxx/cxx_seq.cpp /^DbSequence::~DbSequence()$/
+DbMultipleDataIterator::next ../cxx/cxx_multi.cpp /^bool DbMultipleDataIterator::next(Dbt &data)$/
+DbMultipleIterator::DbMultipleIterator ../cxx/cxx_multi.cpp /^DbMultipleIterator::DbMultipleIterator(const Dbt &/
+DbMultipleKeyDataIterator::next ../cxx/cxx_multi.cpp /^bool DbMultipleKeyDataIterator::next(Dbt &key, Dbt/
+DbMultipleRecnoDataIterator::next ../cxx/cxx_multi.cpp /^bool DbMultipleRecnoDataIterator::next(db_recno_t /
+DbRepHandleDeadException::DbRepHandleDeadException ../cxx/cxx_except.cpp /^DbRepHandleDeadException::DbRepHandleDeadException/
+DbRepHandleDeadException::operator = ../cxx/cxx_except.cpp /^&DbRepHandleDeadException::operator =(const DbRepH/
+DbRepHandleDeadException::~DbRepHandleDeadException ../cxx/cxx_except.cpp /^DbRepHandleDeadException::~DbRepHandleDeadExceptio/
+DbRunRecoveryException::DbRunRecoveryException ../cxx/cxx_except.cpp /^DbRunRecoveryException::DbRunRecoveryException(con/
+DbRunRecoveryException::operator = ../cxx/cxx_except.cpp /^&DbRunRecoveryException::operator =(const DbRunRec/
+DbRunRecoveryException::~DbRunRecoveryException ../cxx/cxx_except.cpp /^DbRunRecoveryException::~DbRunRecoveryException() /
+DbSequence ../libdb_java/db_java_wrap.c 2341
+DbSequence::DbSequence ../cxx/cxx_seq.cpp /^DbSequence::DbSequence(Db *db, u_int32_t flags)$/
+DbSequence::get_key ../cxx/cxx_seq.cpp /^Dbt *DbSequence::get_key()$/
+DbSequence::wrap_DB_SEQUENCE ../cxx/cxx_seq.cpp /^DbSequence *DbSequence::wrap_DB_SEQUENCE(DB_SEQUEN/
+DbSequence::~DbSequence ../cxx/cxx_seq.cpp /^DbSequence::~DbSequence()$/
DbSequence_close ../libdb_java/db_java_wrap.c /^SWIGINTERN db_ret_t DbSequence_close(struct DbSequ/
DbSequence_get ../libdb_java/db_java_wrap.c /^SWIGINTERN db_seq_t DbSequence_get(struct DbSequen/
DbSequence_get_cachesize ../libdb_java/db_java_wrap.c /^SWIGINTERN int32_t DbSequence_get_cachesize(struct/
@@ -1010,7 +1121,9 @@ DbSequence_set_cachesize ../libdb_java/db_java_wrap.c /^SWIGINTERN db_ret_t DbSe
DbSequence_set_flags ../libdb_java/db_java_wrap.c /^SWIGINTERN db_ret_t DbSequence_set_flags(struct Db/
DbSequence_set_range ../libdb_java/db_java_wrap.c /^SWIGINTERN db_ret_t DbSequence_set_range(struct Db/
DbSequence_stat ../libdb_java/db_java_wrap.c /^SWIGINTERN DB_SEQUENCE_STAT *DbSequence_stat(struc/
-DbTxn ../cxx/cxx_txn.cpp /^DbTxn::~DbTxn()$/
+DbTxn ../libdb_java/db_java_wrap.c 2342
+DbTxn::DbTxn ../cxx/cxx_txn.cpp /^DbTxn::DbTxn()$/
+DbTxn::~DbTxn ../cxx/cxx_txn.cpp /^DbTxn::~DbTxn()$/
DbTxn_abort ../libdb_java/db_java_wrap.c /^SWIGINTERN db_ret_t DbTxn_abort(struct DbTxn *self/
DbTxn_commit ../libdb_java/db_java_wrap.c /^SWIGINTERN db_ret_t DbTxn_commit(struct DbTxn *sel/
DbTxn_discard ../libdb_java/db_java_wrap.c /^SWIGINTERN db_ret_t DbTxn_discard(struct DbTxn *se/
@@ -1026,6 +1139,7 @@ Db_cursor ../libdb_java/db_java_wrap.c /^SWIGINTERN DBC *Db_cursor(struct Db *se
Db_del ../libdb_java/db_java_wrap.c /^SWIGINTERN int Db_del(struct Db *self,DB_TXN *txni/
Db_err ../libdb_java/db_java_wrap.c /^SWIGINTERN void Db_err(struct Db *self,int error,c/
Db_errx ../libdb_java/db_java_wrap.c /^SWIGINTERN void Db_errx(struct Db *self,char const/
+Db_exists ../libdb_java/db_java_wrap.c /^SWIGINTERN int Db_exists(struct Db *self,DB_TXN *t/
Db_get ../libdb_java/db_java_wrap.c /^SWIGINTERN int Db_get(struct Db *self,DB_TXN *txni/
Db_get_bt_minkey ../libdb_java/db_java_wrap.c /^SWIGINTERN u_int32_t Db_get_bt_minkey(struct Db *s/
Db_get_byteswapped ../libdb_java/db_java_wrap.c /^SWIGINTERN int_bool Db_get_byteswapped(struct Db */
@@ -1039,8 +1153,10 @@ Db_get_h_ffactor ../libdb_java/db_java_wrap.c /^SWIGINTERN u_int32_t Db_get_h_ff
Db_get_h_nelem ../libdb_java/db_java_wrap.c /^SWIGINTERN u_int32_t Db_get_h_nelem(struct Db *sel/
Db_get_lorder ../libdb_java/db_java_wrap.c /^SWIGINTERN int Db_get_lorder(struct Db *self){$/
Db_get_mpf ../libdb_java/db_java_wrap.c /^SWIGINTERN DB_MPOOLFILE *Db_get_mpf(struct Db *sel/
+Db_get_multiple ../libdb_java/db_java_wrap.c /^SWIGINTERN int_bool Db_get_multiple(struct Db *sel/
Db_get_open_flags ../libdb_java/db_java_wrap.c /^SWIGINTERN u_int32_t Db_get_open_flags(struct Db */
Db_get_pagesize ../libdb_java/db_java_wrap.c /^SWIGINTERN u_int32_t Db_get_pagesize(struct Db *se/
+Db_get_priority ../libdb_java/db_java_wrap.c /^SWIGINTERN DB_CACHE_PRIORITY Db_get_priority(struc/
Db_get_q_extentsize ../libdb_java/db_java_wrap.c /^SWIGINTERN u_int32_t Db_get_q_extentsize(struct Db/
Db_get_re_delim ../libdb_java/db_java_wrap.c /^SWIGINTERN int Db_get_re_delim(struct Db *self){$/
Db_get_re_len ../libdb_java/db_java_wrap.c /^SWIGINTERN u_int32_t Db_get_re_len(struct Db *self/
@@ -1064,11 +1180,13 @@ Db_set_dup_compare ../libdb_java/db_java_wrap.c /^SWIGINTERN db_ret_t Db_set_dup
Db_set_encrypt ../libdb_java/db_java_wrap.c /^SWIGINTERN db_ret_t Db_set_encrypt(struct Db *self/
Db_set_feedback ../libdb_java/db_java_wrap.c /^SWIGINTERN db_ret_t Db_set_feedback(struct Db *sel/
Db_set_flags ../libdb_java/db_java_wrap.c /^SWIGINTERN db_ret_t Db_set_flags(struct Db *self,u/
+Db_set_h_compare ../libdb_java/db_java_wrap.c /^SWIGINTERN db_ret_t Db_set_h_compare(struct Db *se/
Db_set_h_ffactor ../libdb_java/db_java_wrap.c /^SWIGINTERN db_ret_t Db_set_h_ffactor(struct Db *se/
Db_set_h_hash ../libdb_java/db_java_wrap.c /^SWIGINTERN db_ret_t Db_set_h_hash(struct Db *self,/
Db_set_h_nelem ../libdb_java/db_java_wrap.c /^SWIGINTERN db_ret_t Db_set_h_nelem(struct Db *self/
Db_set_lorder ../libdb_java/db_java_wrap.c /^SWIGINTERN db_ret_t Db_set_lorder(struct Db *self,/
Db_set_pagesize ../libdb_java/db_java_wrap.c /^SWIGINTERN db_ret_t Db_set_pagesize(struct Db *sel/
+Db_set_priority ../libdb_java/db_java_wrap.c /^SWIGINTERN db_ret_t Db_set_priority(struct Db *sel/
Db_set_q_extentsize ../libdb_java/db_java_wrap.c /^SWIGINTERN db_ret_t Db_set_q_extentsize(struct Db /
Db_set_re_delim ../libdb_java/db_java_wrap.c /^SWIGINTERN db_ret_t Db_set_re_delim(struct Db *sel/
Db_set_re_len ../libdb_java/db_java_wrap.c /^SWIGINTERN db_ret_t Db_set_re_len(struct Db *self,/
@@ -1080,53 +1198,64 @@ Db_tcl_Init ../tcl/tcl_db_pkg.c /^Db_tcl_Init(interp)$/
Db_truncate ../libdb_java/db_java_wrap.c /^SWIGINTERN int Db_truncate(struct Db *self,DB_TXN /
Db_upgrade ../libdb_java/db_java_wrap.c /^SWIGINTERN db_ret_t Db_upgrade(struct Db *self,cha/
Db_verify ../libdb_java/db_java_wrap.c /^SWIGINTERN int_bool Db_verify(struct Db *self,char/
-Dbc ../cxx/cxx_dbc.cpp /^\/\/ It's private, and should never be called, but/
+Dbc ../libdb_java/db_java_wrap.c 2334
+Dbc::get ../cxx/cxx_dbc.cpp /^int Dbc::get(Dbt* key, Dbt *data, u_int32_t _flags/
+Dbc::pget ../cxx/cxx_dbc.cpp /^int Dbc::pget(Dbt* key, Dbt *pkey, Dbt *data, u_in/
+Dbc::~Dbc ../cxx/cxx_dbc.cpp /^Dbc::~Dbc()$/
Dbc_close ../libdb_java/db_java_wrap.c /^SWIGINTERN db_ret_t Dbc_close(struct Dbc *self){$/
Dbc_count ../libdb_java/db_java_wrap.c /^SWIGINTERN db_recno_t Dbc_count(struct Dbc *self,u/
Dbc_del ../libdb_java/db_java_wrap.c /^SWIGINTERN int Dbc_del(struct Dbc *self,u_int32_t /
Dbc_dup ../libdb_java/db_java_wrap.c /^SWIGINTERN DBC *Dbc_dup(struct Dbc *self,u_int32_t/
Dbc_get ../libdb_java/db_java_wrap.c /^SWIGINTERN int Dbc_get(struct Dbc *self,DBT *key,D/
+Dbc_get_priority ../libdb_java/db_java_wrap.c /^SWIGINTERN DB_CACHE_PRIORITY Dbc_get_priority(stru/
Dbc_pget ../libdb_java/db_java_wrap.c /^SWIGINTERN int Dbc_pget(struct Dbc *self,DBT *key,/
Dbc_put ../libdb_java/db_java_wrap.c /^SWIGINTERN int Dbc_put(struct Dbc *self,DBT *key,D/
-Dbt ../cxx/cxx_dbt.cpp /^Dbt::Dbt()$/
+Dbc_set_priority ../libdb_java/db_java_wrap.c /^SWIGINTERN db_ret_t Dbc_set_priority(struct Dbc *s/
+Dbt ../libdb_java/db_java_wrap.c 2335
+Dbt::Dbt ../cxx/cxx_dbt.cpp /^Dbt::Dbt()$/
+Dbt::operator = ../cxx/cxx_dbt.cpp /^Dbt &Dbt::operator = (const Dbt &that)$/
+Dbt::~Dbt ../cxx/cxx_dbt.cpp /^Dbt::~Dbt()$/
EID_FROM_SITE ../dbinc/repmgr.h /^#define EID_FROM_SITE(s) ((int)((s) - (&db_rep->si/
ELECTION_MAJORITY ../dbinc/rep.h /^#define ELECTION_MAJORITY(n) (((n) \/ 2) + 1)$/
-ELECT_ELECTION ../dbinc/rep.h /^#define ELECT_ELECTION 1 \/* Call for an election./
-ELECT_FAILURE_ELECTION ../dbinc/rep.h /^#define ELECT_FAILURE_ELECTION 3 \/* Do election, /
-ELECT_REPSTART ../dbinc/rep.h /^#define ELECT_REPSTART 2 \/* Call rep_start(CLIENT/
-EMSG ../clib/getopt.c /^#define EMSG ""$/
-ENTRY ../dbinc/db.in /^} ENTRY;$/
+ELECT_ELECTION ../dbinc/rep.h 509
+ELECT_FAILURE_ELECTION ../dbinc/rep.h 510
+ELECT_REPSTART ../dbinc/rep.h 512
+ELECT_SEEK_MASTER ../dbinc/rep.h 513
+EMSG ../clib/getopt.c 54
ENV_ENTER ../dbinc/db_int.in /^#define ENV_ENTER(dbenv, ip) do { \\$/
ENV_ILLEGAL_AFTER_OPEN ../dbinc/db_int.in /^#define ENV_ILLEGAL_AFTER_OPEN(dbenv, name) \\$/
-ENV_ILLEGAL_BEFORE_OPEN ../dbinc/db_int.in /^#define ENV_ILLEGAL_BEFORE_OPEN(dbenv, name) \\/
+ENV_ILLEGAL_BEFORE_OPEN ../dbinc/db_int.in /^#define ENV_ILLEGAL_BEFORE_OPEN(dbenv, name) \\$/
ENV_LEAVE ../dbinc/db_int.in /^#define ENV_LEAVE(dbenv, ip) do { \\$/
ENV_NOT_CONFIGURED ../dbinc/db_int.in /^#define ENV_NOT_CONFIGURED(dbenv, handle, i, flags/
ENV_REQUIRES_CONFIG ../dbinc/db_int.in /^#define ENV_REQUIRES_CONFIG(dbenv, handle, i, flag/
ENV_REQUIRES_CONFIG_XX ../dbinc/db_int.in /^#define ENV_REQUIRES_CONFIG_XX(dbenv, handle, i, f/
-EPG ../dbinc/btree.h /^struct __epg; typedef struct __epg EPG;$/
+EPG ../dbinc/btree.h 53
EPRINT ../dbinc/db_verify.h /^#define EPRINT(x) do { \\$/
-FALSE ../dbinc/db_int.in /^#define FALSE 0$/
+ERRSTR ../clib/strerror.c /^#define ERRSTR(v, s) do { \\$/
+FALSE ../dbinc/db_int.in 113
FAST_HASH ../lock/lock_util.c /^#define FAST_HASH(P) { \\$/
FHASH ../dbinc/mp.h /^#define FHASH(id, len) __ham_func5(NULL, id, (u_in/
-FILE_EXTEND_IO_SIZE ../env/env_file.c /^#define FILE_EXTEND_IO_SIZE (8 * 1024)$/
-FILE_WRITE_IO_SIZE ../env/env_file.c /^#define FILE_WRITE_IO_SIZE (64 * 1024)$/
+FILE_EXTEND_IO_SIZE ../env/env_file.c 39
+FILE_WRITE_IO_SIZE ../env/env_file.c 114
FIND_FIRST_DB_MATCH ../dbinc/db_am.h /^#define FIND_FIRST_DB_MATCH(dbenv, dbp, tdbp) do {/
+FIND_GENERATION ../db/db_dispatch.c /^#define FIND_GENERATION(hp, txnid, gen) do { \\$/
FLAG_CHECK ../dbinc/tcl_db.h /^#define FLAG_CHECK(flag) do { \\$/
FLAG_CHECK2 ../dbinc/tcl_db.h /^#define FLAG_CHECK2(flag, val) do { \\$/
-FLAG_CHECK2_STDARG ../tcl/tcl_dbcursor.c /^#define FLAG_CHECK2_STDARG \\$/
+FLAG_CHECK2_STDARG ../tcl/tcl_dbcursor.c 487
FLD_CLR ../dbinc/db_int.in /^#define FLD_CLR(fld, f) (fld) &= ~(f)$/
FLD_ISSET ../dbinc/db_int.in /^#define FLD_ISSET(fld, f) ((fld) & (f))$/
FLD_SET ../dbinc/db_int.in /^#define FLD_SET(fld, f) (fld) |= (f)$/
-FMAP_ENTRIES ../mp/mp_stat.c /^#define FMAP_ENTRIES 200 \/* Files we map. *\/$/
-FN ../dbinc/db_int.in /^} FN;$/
-FNAME ../dbinc/db.in /^struct __fname; typedef struct __fname FNAME;$/
+FMAP_ENTRIES ../mp/mp_stat.c 374
+FNAME ../dbinc/db.in 181
FNBUCKET ../dbinc/mp.h /^#define FNBUCKET(id, len) \\$/
-FREE_IF_CHANGED ../dbinc/db_server_int.h /^#define FREE_IF_CHANGED(dbenv, p, orig) do { \\/
+FREE_IF_CHANGED ../dbinc/db_server_int.h /^#define FREE_IF_CHANGED(dbenv, p, orig) do { \\$/
FREE_IF_NEEDED ../dbinc/db_int.in /^#define FREE_IF_NEEDED(dbenv, dbt) \\$/
+FREE_STRING ../dbinc/win_db.h /^#define FREE_STRING(dbenv, s) do { \\$/
+FROM_TSTRING ../dbinc/win_db.h /^#define FROM_TSTRING(dbenv, ts, s, ret) { \\$/
F_CLR ../dbinc/db_int.in /^#define F_CLR(p, f) (p)->flags &= ~(f)$/
F_ISSET ../dbinc/db_int.in /^#define F_ISSET(p, f) ((p)->flags & (f))$/
F_SET ../dbinc/db_int.in /^#define F_SET(p, f) (p)->flags |= (f)$/
-GCC_HASCLASSVISIBILITY ../libdb_java/db_java_wrap.c /^# define GCC_HASCLASSVISIBILITY$/
+GCC_HASCLASSVISIBILITY ../libdb_java/db_java_wrap.c 75
GETU32 ../crypto/rijndael/rijndael-alg-fst.c /^#define GETU32(p) SWAP(*((u32 *)(p)))$/
GET_BINTERNAL ../dbinc/db_page.h /^#define GET_BINTERNAL(dbp, pg, indx) \\$/
GET_BKEYDATA ../dbinc/db_page.h /^#define GET_BKEYDATA(dbp, pg, indx) \\$/
@@ -1138,86 +1267,79 @@ GET_PCOUNT ../lock/lock_list.c /^#define GET_PCOUNT(dp, count) do { \\$/
GET_PGNO ../lock/lock_list.c /^#define GET_PGNO(dp, pgno) do { \\$/
GET_RINTERNAL ../dbinc/db_page.h /^#define GET_RINTERNAL(dbp, pg, indx) \\$/
GET_SIZE ../lock/lock_list.c /^#define GET_SIZE(dp, size) do { \\$/
-GIGABYTE ../dbinc/db_int.in /^#define GIGABYTE 1073741824$/
+GIGABYTE ../dbinc/db_int.in 118
GLOB_CHAR ../tcl/tcl_internal.c /^#define GLOB_CHAR(c) ((c) == '*' || (c) == '?')$/
-GUARD_BYTE ../dbinc/debug.h /^#define GUARD_BYTE 0xdc$/
-HASH ../dbinc/hash.h /^} HASH;$/
-HASH4 ../hash/hash_func.c /^#define HASH4 HASH4b$/
-HASH4a ../hash/hash_func.c /^#define HASH4a h = (h << 5) - h + *k++;$/
-HASH4b ../hash/hash_func.c /^#define HASH4b h = (h << 5) + h + *k++;$/
-HASHC ../hash/hash_func.c /^#define HASHC n = *k++ + 65599 * n$/
-HASHHDR ../dbinc/db_upgrade.h /^} HASHHDR;$/
-HASHINFO ../dbinc/db_185.in /^} HASHINFO;$/
-HASHMAGIC ../dbinc/db_185.in /^#define HASHMAGIC 0x061561$/
-HASHVERSION ../dbinc/db_185.in /^#define HASHVERSION 2$/
-HASH_CURSOR ../dbinc/hash.h /^} HASH_CURSOR;$/
-HASH_UNUSED1 ../dbinc/hash.h /^#define HASH_UNUSED1 0x60$/
-HASH_UNUSED2 ../dbinc/hash.h /^#define HASH_UNUSED2 0x70$/
-HDR ../dbinc/log.h /^struct __hdr; typedef struct __hdr HDR;$/
-HDR_CRYPTO_SZ ../dbinc/log.h /^#define HDR_CRYPTO_SZ 12 + DB_MAC_KEY + DB_IV_BYTE/
-HDR_NORMAL_SZ ../dbinc/log.h /^#define HDR_NORMAL_SZ 12$/
-HKEYDATA ../dbinc/db_page.h /^} HKEYDATA;$/
+GUARD_BYTE ../dbinc/debug.h 28
+HAM_DEL_NO_CURSOR ../dbinc/hash.h 141
+HAM_DEL_NO_RECLAIM ../dbinc/hash.h 142
+HASH4 ../hash/hash_func.c 161
+HASH4a ../hash/hash_func.c 159
+HASH4b ../hash/hash_func.c 160
+HASHC ../hash/hash_func.c 108
+HASHMAGIC ../dbinc/db_185.in 141
+HASHVERSION ../dbinc/db_185.in 142
+HASH_SIZE ../common/db_shash.c /^#define HASH_SIZE(power, prime) { \\$/
+HASH_UNUSED1 ../dbinc/hash.h 134
+HASH_UNUSED2 ../dbinc/hash.h 135
+HDR ../dbinc/log.h 73
+HDR_CRYPTO_SZ ../dbinc/log.h 167
+HDR_NORMAL_SZ ../dbinc/log.h 166
HKEYDATA_DATA ../dbinc/db_page.h /^#define HKEYDATA_DATA(p) (((u_int8_t *)p) + SSZA(H/
HKEYDATA_PSIZE ../dbinc/db_page.h /^#define HKEYDATA_PSIZE(len) \\$/
HKEYDATA_SIZE ../dbinc/db_page.h /^#define HKEYDATA_SIZE(len) \\$/
-HMAC_BLOCK_SIZE ../hmac/hmac.c /^#define HMAC_BLOCK_SIZE 64$/
-HMAC_OUTPUT_SIZE ../hmac/hmac.c /^#define HMAC_OUTPUT_SIZE 20$/
-HMETA ../dbinc/db_page.h /^} HMETA33, HMETA;$/
-HMETA30 ../dbinc/db_upgrade.h /^} HMETA30;$/
-HMETA31 ../dbinc/db_upgrade.h /^} HMETA31;$/
-HOFFDUP ../dbinc/db_page.h /^} HOFFDUP;$/
+HMAC_BLOCK_SIZE ../hmac/hmac.c 22
+HMAC_OUTPUT_SIZE ../hmac/hmac.c 21
HOFFDUP_PGNO ../dbinc/db_page.h /^#define HOFFDUP_PGNO(p) (((u_int8_t *)p) + SSZ(HO/
-HOFFDUP_SIZE ../dbinc/db_page.h /^#define HOFFDUP_SIZE (sizeof(HOFFDUP))$/
-HOFFPAGE ../dbinc/db_page.h /^} HOFFPAGE;$/
+HOFFDUP_SIZE ../dbinc/db_page.h 514
HOFFPAGE_PGNO ../dbinc/db_page.h /^#define HOFFPAGE_PGNO(p) (((u_int8_t *)p) + SSZ(HO/
-HOFFPAGE_PSIZE ../dbinc/db_page.h /^#define HOFFPAGE_PSIZE (HOFFPAGE_SIZE + sizeof(db/
-HOFFPAGE_SIZE ../dbinc/db_page.h /^#define HOFFPAGE_SIZE (sizeof(HOFFPAGE))$/
+HOFFPAGE_PSIZE ../dbinc/db_page.h 498
+HOFFPAGE_SIZE ../dbinc/db_page.h 497
HOFFPAGE_TLEN ../dbinc/db_page.h /^#define HOFFPAGE_TLEN(p) (((u_int8_t *)p) + SSZ(HO/
HOFFSET ../dbinc/db_page.h /^#define HOFFSET(p) (((PAGE *)p)->hf_offset)$/
HPAGE_PTYPE ../dbinc/db_page.h /^#define HPAGE_PTYPE(p) (*(u_int8_t *)p)$/
HPAGE_TYPE ../dbinc/db_page.h /^#define HPAGE_TYPE(dbp, pg, indx) (*P_ENTRY(dbp, p/
-H_CONTINUE ../dbinc/hash.h /^#define H_CONTINUE 0x0001 \/* Join--search strict/
+H_CONTINUE ../dbinc/hash.h 84
H_DATAINDEX ../dbinc/db_page.h /^#define H_DATAINDEX(indx) ((indx) + 1)$/
-H_DELETED ../dbinc/hash.h /^#define H_DELETED 0x0002 \/* Cursor item is delet/
-H_DUPLICATE ../dbinc/db_page.h /^#define H_DUPLICATE 2 \/* Duplicate key\/data item/
-H_DUPONLY ../dbinc/hash.h /^#define H_DUPONLY 0x0004 \/* Dups only; do not ch/
-H_EXPAND ../dbinc/hash.h /^#define H_EXPAND 0x0008 \/* Table expanded. *\/$/
-H_ISDUP ../dbinc/hash.h /^#define H_ISDUP 0x0010 \/* Cursor is within dupl/
-H_KEYDATA ../dbinc/db_page.h /^#define H_KEYDATA 1 \/* Key\/data item. *\/$/
+H_DELETED ../dbinc/hash.h 85
+H_DUPLICATE ../dbinc/db_page.h 399
+H_DUPONLY ../dbinc/hash.h 86
+H_EXPAND ../dbinc/hash.h 87
+H_ISDUP ../dbinc/hash.h 88
+H_KEYDATA ../dbinc/db_page.h 398
H_KEYINDEX ../dbinc/db_page.h /^#define H_KEYINDEX(indx) (indx)$/
-H_NEXT_NODUP ../dbinc/hash.h /^#define H_NEXT_NODUP 0x0020 \/* Get next non-dup /
-H_NOMORE ../dbinc/hash.h /^#define H_NOMORE 0x0040 \/* No more entries in bu/
+H_NEXT_NODUP ../dbinc/hash.h 89
+H_NOMORE ../dbinc/hash.h 90
H_NUMPAIRS ../dbinc/db_page.h /^#define H_NUMPAIRS(pg) (NUM_ENT(pg) \/ 2)$/
-H_OFFDUP ../dbinc/db_page.h /^#define H_OFFDUP 4 \/* Overflow page of duplicates/
-H_OFFPAGE ../dbinc/db_page.h /^#define H_OFFPAGE 3 \/* Overflow key\/data item. */
-H_OK ../dbinc/hash.h /^#define H_OK 0x0080 \/* Request succeeded. *\/$/
+H_OFFDUP ../dbinc/db_page.h 401
+H_OFFPAGE ../dbinc/db_page.h 400
+H_OK ../dbinc/hash.h 91
H_PAIRDATA ../dbinc/db_page.h /^#define H_PAIRDATA(dbp, pg, indx) P_ENTRY(dbp, pg,/
H_PAIRKEY ../dbinc/db_page.h /^#define H_PAIRKEY(dbp, pg, indx) P_ENTRY(dbp, pg, /
H_PAIRSIZE ../dbinc/db_page.h /^#define H_PAIRSIZE(dbp, pg, psize, indx) \\$/
-ILLEGAL_SIZE ../env/db_salloc.c /^#define ILLEGAL_SIZE 1 \/* An illegal size. *\/$/
-INFOTYPE ../dbinc/tcl_db.h /^enum INFOTYPE {$/
-INITIAL_ALLOCATION ../repmgr/repmgr_windows.c /^#define INITIAL_ALLOCATION 5 \/* arbitrary size */
-INITIAL_DEAD_ALLOC ../lock/lock_deadlock.c /^#define INITIAL_DEAD_ALLOC 8$/
-INITIAL_SITES_ALLOCATION ../repmgr/repmgr_util.c /^#define INITIAL_SITES_ALLOCATION 10 \/* Arbitrary/
+INADDR_NONE ../clib/getaddrinfo.c 62
+INITIAL_ALLOCATION ../repmgr/repmgr_windows.c 224
+INITIAL_DEAD_ALLOC ../lock/lock_deadlock.c 769
+INITIAL_SITES_ALLOCATION ../repmgr/repmgr_util.c 142
INIT_LSN ../dbinc/db_int.in /^#define INIT_LSN(LSN) do { \\$/
-INPROGRESS ../dbinc/repmgr.h /^#define INPROGRESS WSAEWOULDBLOCK$/
+INPROGRESS ../dbinc/repmgr.h 328
INP_OFFSET ../db/db_vrfy.c /^#define INP_OFFSET(dbp, h, i) \\$/
-INT64_MAX ../dbinc/db_int.in /^#define INT64_MAX _I64_MAX$/
-INT64_MIN ../dbinc/db_int.in /^#define INT64_MIN _I64_MIN$/
-INVALID_LSNMSG ../tcl/tcl_internal.c /^#define INVALID_LSNMSG "Invalid LSN with %d parts./
-INVALID_ORDER ../dbinc/btree.h /^#define INVALID_ORDER 0$/
-INVALID_REGION_ID ../dbinc/region.h /^#define INVALID_REGION_ID 0 \/* Out-of-band region/
-INVALID_REGION_SEGID ../dbinc/region.h /^#define INVALID_REGION_SEGID -1 \/* Segment IDs ar/
-INVALID_ROFF ../dbinc/region.h /^#define INVALID_ROFF 0$/
-INVALID_SOCKET ../dbinc/repmgr.h /^#define INVALID_SOCKET -1$/
+INVALID_FILE_ATTRIBUTES ../dbinc/win_db.h 146
+INVALID_HANDLE_VALUE ../dbinc/win_db.h 142
+INVALID_LSNMSG ../tcl/tcl_internal.c 612
+INVALID_ORDER ../dbinc/btree.h 62
+INVALID_REGION_ID ../dbinc/region.h 120
+INVALID_REGION_SEGID ../dbinc/region.h 132
+INVALID_ROFF ../dbinc/region.h 142
+INVALID_SET_FILE_POINTER ../dbinc/win_db.h 150
+INVALID_SOCKET ../dbinc/repmgr.h 342
IN_ELECTION ../dbinc/rep.h /^#define IN_ELECTION(R) \\$/
IN_ELECTION_TALLY ../dbinc/rep.h /^#define IN_ELECTION_TALLY(R) \\$/
-IO_WAITER ../dbinc/mp.h /^#define IO_WAITER 0x001 \/* Thread is waiting on /
+IO_WAITER ../dbinc/mp.h 335
ISBIG ../dbinc/hash.h /^#define ISBIG(I, N) (((N) > ((I)->hdr->dbmeta.page/
ISDOT ../clib/getcwd.c /^#define ISDOT(dp) \\$/
ISINTERNAL ../dbinc/btree.h /^#define ISINTERNAL(p) (TYPE(p) == P_IBTREE || TYPE/
ISLEAF ../dbinc/btree.h /^#define ISLEAF(p) (TYPE(p) == P_LBTREE || \\$/
-ISSET_MAP ../lock/lock_deadlock.c /^#define ISSET_MAP(M, N) ((M)[(N) \/ 32] & (1 << ((/
+ISSET_MAP ../lock/lock_deadlock.c /^#define ISSET_MAP(M, N) ((M)[(N) \/ 32] & (1 << ((N/
IS_BTREE_PAGE ../btree/bt_rec.c /^#define IS_BTREE_PAGE(pagep) \\$/
IS_CLIENT_PGRECOVER ../dbinc/rep.h /^#define IS_CLIENT_PGRECOVER(dbenv) \\$/
IS_CUR_DELETED ../btree/bt_cursor.c /^#define IS_CUR_DELETED(dbc) \\$/
@@ -1226,224 +1348,475 @@ IS_DB_AUTO_COMMIT ../dbinc/db_am.h /^#define IS_DB_AUTO_COMMIT(dbp, txn) \\$
IS_DELETED ../btree/bt_cursor.c /^#define IS_DELETED(dbp, page, indx) \\$/
IS_DIRTY ../dbinc/mp.h /^#define IS_DIRTY(p) \\$/
IS_DUPLICATE ../btree/bt_cursor.c /^#define IS_DUPLICATE(dbc, i1, i2) \\$/
-IS_ENV_AUTO_COMMIT ../dbinc/db_am.h /^#define IS_ENV_AUTO_COMMIT(dbenv, txn, flags) /
+IS_ENV_AUTO_COMMIT ../dbinc/db_am.h /^#define IS_ENV_AUTO_COMMIT(dbenv, txn, flags) \\/
IS_ENV_REPLICATED ../dbinc/rep.h /^#define IS_ENV_REPLICATED(dbenv) \\$/
IS_HELP ../dbinc/tcl_db.h /^#define IS_HELP(s) \\$/
IS_INITIALIZED ../dbinc/db_int.in /^#define IS_INITIALIZED(dbc) ((dbc)->internal->pgno/
IS_INIT_LSN ../dbinc/db_int.in /^#define IS_INIT_LSN(LSN) ((LSN).file == 1 && (LSN)/
-IS_IN_RESTORE ../qam/qam_rec.c /^#define IS_IN_RESTORE(dbenv) \\$/
IS_MAX_LSN ../dbinc/db_int.in /^#define IS_MAX_LSN(LSN) \\$/
IS_NOT_LOGGED_LSN ../dbinc/db_int.in /^#define IS_NOT_LOGGED_LSN(LSN) \\$/
IS_PEER_POLICY ../dbinc/repmgr.h /^#define IS_PEER_POLICY(p) ((p) == DB_REPMGR_ACKS_A/
-IS_PHASE1_DONE ../rep/rep_elect.c /^#define IS_PHASE1_DONE(rep) \\$/
+IS_PHASE1_DONE ../rep/rep_elect.c /^#define IS_PHASE1_DONE(rep) \\$/
IS_REAL_TXN ../dbinc/db_int.in /^#define IS_REAL_TXN(txn) \\$/
IS_RECOVERING ../dbinc/db_int.in /^#define IS_RECOVERING(dbenv) \\$/
IS_REP_CLIENT ../dbinc/rep.h /^#define IS_REP_CLIENT(dbenv) \\$/
IS_REP_MASTER ../dbinc/rep.h /^#define IS_REP_MASTER(dbenv) \\$/
IS_SUBTRANSACTION ../dbinc/db_int.in /^#define IS_SUBTRANSACTION(txn) \\$/
+IS_USING_LEASES ../dbinc/rep.h /^#define IS_USING_LEASES(dbenv) \\$/
IS_VALID_EID ../dbinc/repmgr.h /^#define IS_VALID_EID(e) ((e) >= 0)$/
IS_VALID_PAGESIZE ../dbinc/db_int.in /^#define IS_VALID_PAGESIZE(x) \\$/
IS_VALID_PGNO ../dbinc/db_verify.h /^#define IS_VALID_PGNO(x) ((x) <= vdp->last_pgno)$/
IS_WRITELOCK ../dbinc/lock.h /^#define IS_WRITELOCK(m) \\$/
IS_ZERO_LSN ../dbinc/db_int.in /^#define IS_ZERO_LSN(LSN) ((LSN).file == 0 && (LSN)/
-I_HAVE_WON ../rep/rep_elect.c /^#define I_HAVE_WON(rep, winner) \\$/
+I_HAVE_WON ../rep/rep_elect.c /^#define I_HAVE_WON(rep, winner) \\$/
JAVADB_STAT_ACTIVE ../libdb_java/db_java_wrap.c /^#define JAVADB_STAT_ACTIVE(jenv, cl, jobj, statp, /
JAVADB_STAT_INT ../libdb_java/db_java_wrap.c /^#define JAVADB_STAT_INT(jenv, jobj, fid, statp, na/
JAVADB_STAT_LONG ../libdb_java/db_java_wrap.c /^#define JAVADB_STAT_LONG(jenv, jobj, fid, statp, n/
JAVADB_STAT_LSN ../libdb_java/db_java_wrap.c /^#define JAVADB_STAT_LSN(jenv, jobj, fid, statp, na/
JAVADB_STAT_STRING ../libdb_java/db_java_wrap.c /^#define JAVADB_STAT_STRING(jenv, jobj, fid, statp,/
JAVADB_STAT_XID ../libdb_java/db_java_wrap.c /^#define JAVADB_STAT_XID(jenv, jobj, fid, statp, na/
-JDBENV ../libdb_java/db_java_wrap.c /^#define JDBENV (arg1 ? (jobject)DB_ENV_INTERNAL(ar/
-JOIN_CURSOR ../dbinc/db_join.h /^} JOIN_CURSOR;$/
-JOIN_RETRY ../dbinc/db_join.h /^#define JOIN_RETRY 0x01 \/* Error on primary get; /
+JDBENV ../libdb_java/db_java_wrap.c 1124
+JOIN_RETRY ../dbinc/db_join.h 30
Java_com_sleepycat_db_internal_DbUtil_is_1big_1endian ../libdb_java/db_java_wrap.c /^Java_com_sleepycat_db_internal_DbUtil_is_1big_1end/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1cdsgroup_1begin ../libdb_java/db_java_wrap.c /^JNIEXPORT jlong JNICALL Java_com_sleepycat_db_inte/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1close0 ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1dbremove ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1dbrename ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1err ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1errx ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1fileid_1reset ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1get_1cache_1max ../libdb_java/db_java_wrap.c /^JNIEXPORT jlong JNICALL Java_com_sleepycat_db_inte/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1get_1cachesize ../libdb_java/db_java_wrap.c /^JNIEXPORT jlong JNICALL Java_com_sleepycat_db_inte/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1get_1cachesize_1ncache ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1get_1data_1dirs ../libdb_java/db_java_wrap.c /^JNIEXPORT jobjectArray JNICALL Java_com_sleepycat_/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1get_1encrypt_1flags ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1get_1flags ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1get_1home ../libdb_java/db_java_wrap.c /^JNIEXPORT jstring JNICALL Java_com_sleepycat_db_in/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1get_1lg_1bsize ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1get_1lg_1dir ../libdb_java/db_java_wrap.c /^JNIEXPORT jstring JNICALL Java_com_sleepycat_db_in/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1get_1lg_1filemode ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1get_1lg_1max ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1get_1lg_1regionmax ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1get_1lk_1conflicts ../libdb_java/db_java_wrap.c /^JNIEXPORT jobjectArray JNICALL Java_com_sleepycat_/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1get_1lk_1detect ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1get_1lk_1max_1lockers ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1get_1lk_1max_1locks ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1get_1lk_1max_1objects ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1get_1mp_1max_1openfd ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1get_1mp_1max_1write ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1get_1mp_1max_1write_1sleep ../libdb_java/db_java_wrap.c /^JNIEXPORT jlong JNICALL Java_com_sleepycat_db_inte/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1get_1mp_1mmapsize ../libdb_java/db_java_wrap.c /^JNIEXPORT jlong JNICALL Java_com_sleepycat_db_inte/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1get_1open_1flags ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1get_1shm_1key ../libdb_java/db_java_wrap.c /^JNIEXPORT jlong JNICALL Java_com_sleepycat_db_inte/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1get_1timeout ../libdb_java/db_java_wrap.c /^JNIEXPORT jlong JNICALL Java_com_sleepycat_db_inte/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1get_1tmp_1dir ../libdb_java/db_java_wrap.c /^JNIEXPORT jstring JNICALL Java_com_sleepycat_db_in/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1get_1tx_1max ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1get_1tx_1timestamp ../libdb_java/db_java_wrap.c /^JNIEXPORT jlong JNICALL Java_com_sleepycat_db_inte/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1get_1verbose ../libdb_java/db_java_wrap.c /^JNIEXPORT jboolean JNICALL Java_com_sleepycat_db_i/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1get_1version_1major ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1get_1version_1minor ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1get_1version_1patch ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1get_1version_1string ../libdb_java/db_java_wrap.c /^JNIEXPORT jstring JNICALL Java_com_sleepycat_db_in/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1is_1bigendian ../libdb_java/db_java_wrap.c /^JNIEXPORT jboolean JNICALL Java_com_sleepycat_db_i/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1lock_1detect ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1lock_1get ../libdb_java/db_java_wrap.c /^JNIEXPORT jlong JNICALL Java_com_sleepycat_db_inte/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1lock_1id ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1lock_1id_1free ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1lock_1put ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1lock_1stat ../libdb_java/db_java_wrap.c /^JNIEXPORT jobject JNICALL Java_com_sleepycat_db_in/
Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1lock_1vec ../libdb_java/db_java_wrap.c /^Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1log_1archive ../libdb_java/db_java_wrap.c /^JNIEXPORT jobjectArray JNICALL Java_com_sleepycat_/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1log_1compare ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1log_1cursor ../libdb_java/db_java_wrap.c /^JNIEXPORT jlong JNICALL Java_com_sleepycat_db_inte/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1log_1file ../libdb_java/db_java_wrap.c /^JNIEXPORT jstring JNICALL Java_com_sleepycat_db_in/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1log_1flush ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1log_1print ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1log_1put ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1log_1stat ../libdb_java/db_java_wrap.c /^JNIEXPORT jobject JNICALL Java_com_sleepycat_db_in/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1lsn_1reset ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1memp_1fstat ../libdb_java/db_java_wrap.c /^JNIEXPORT jobjectArray JNICALL Java_com_sleepycat_/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1memp_1stat ../libdb_java/db_java_wrap.c /^JNIEXPORT jobject JNICALL Java_com_sleepycat_db_in/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1memp_1trickle ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1mutex_1get_1align ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1mutex_1get_1increment ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1mutex_1get_1max ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1mutex_1get_1tas_1spins ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1mutex_1set_1align ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1mutex_1set_1increment ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1mutex_1set_1max ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1mutex_1set_1tas_1spins ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1mutex_1stat ../libdb_java/db_java_wrap.c /^JNIEXPORT jobject JNICALL Java_com_sleepycat_db_in/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1open ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1remove0 ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1rep_1elect ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1rep_1flush ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1rep_1get_1config ../libdb_java/db_java_wrap.c /^JNIEXPORT jboolean JNICALL Java_com_sleepycat_db_i/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1rep_1get_1limit ../libdb_java/db_java_wrap.c /^JNIEXPORT jlong JNICALL Java_com_sleepycat_db_inte/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1rep_1get_1nsites ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1rep_1get_1priority ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1rep_1get_1timeout ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1rep_1process_1message ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1rep_1set_1config ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1rep_1set_1lease ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1rep_1set_1limit ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1rep_1set_1nsites ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1rep_1set_1priority ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1rep_1set_1timeout ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1rep_1set_1transport ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1rep_1start ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1rep_1stat ../libdb_java/db_java_wrap.c /^JNIEXPORT jobject JNICALL Java_com_sleepycat_db_in/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1rep_1sync ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1repmgr_1add_1remote_1site ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1repmgr_1get_1ack_1policy ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1repmgr_1set_1ack_1policy ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1repmgr_1set_1local_1site ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1repmgr_1site_1list ../libdb_java/db_java_wrap.c /^JNIEXPORT jobjectArray JNICALL Java_com_sleepycat_/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1repmgr_1start ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1repmgr_1stat ../libdb_java/db_java_wrap.c /^JNIEXPORT jobject JNICALL Java_com_sleepycat_db_in/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1app_1dispatch ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1cache_1max ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1cachesize ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1data_1dir ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1encrypt ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1errcall ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1event_1notify ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1feedback ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1flags ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1intermediate_1dir ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1lg_1bsize ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1lg_1dir ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1lg_1filemode ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1lg_1max ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1lg_1regionmax ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1lk_1conflicts ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1lk_1detect ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1lk_1max_1lockers ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1lk_1max_1locks ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1lk_1max_1objects ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1mp_1max_1openfd ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1mp_1max_1write ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1mp_1mmapsize ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1msgcall ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1paniccall ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1rep_1request ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1rpc_1server ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1shm_1key ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1timeout ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1tmp_1dir ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1tx_1max ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1tx_1timestamp0 ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1verbose ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1strerror ../libdb_java/db_java_wrap.c /^JNIEXPORT jstring JNICALL Java_com_sleepycat_db_in/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1txn_1begin ../libdb_java/db_java_wrap.c /^JNIEXPORT jlong JNICALL Java_com_sleepycat_db_inte/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1txn_1checkpoint ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1txn_1recover ../libdb_java/db_java_wrap.c /^JNIEXPORT jobjectArray JNICALL Java_com_sleepycat_/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1txn_1stat ../libdb_java/db_java_wrap.c /^JNIEXPORT jobject JNICALL Java_com_sleepycat_db_in/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbLogc_1close0 ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbLogc_1get ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbLogc_1version ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbMpoolFile_1get_1flags ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbMpoolFile_1get_1maxsize ../libdb_java/db_java_wrap.c /^JNIEXPORT jlong JNICALL Java_com_sleepycat_db_inte/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbMpoolFile_1get_1priority ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbMpoolFile_1set_1flags ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbMpoolFile_1set_1maxsize ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbMpoolFile_1set_1priority ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbSequence_1close0 ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbSequence_1get ../libdb_java/db_java_wrap.c /^JNIEXPORT jlong JNICALL Java_com_sleepycat_db_inte/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbSequence_1get_1cachesize ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbSequence_1get_1db ../libdb_java/db_java_wrap.c /^JNIEXPORT jlong JNICALL Java_com_sleepycat_db_inte/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbSequence_1get_1flags ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbSequence_1get_1key ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbSequence_1get_1range_1max ../libdb_java/db_java_wrap.c /^JNIEXPORT jlong JNICALL Java_com_sleepycat_db_inte/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbSequence_1get_1range_1min ../libdb_java/db_java_wrap.c /^JNIEXPORT jlong JNICALL Java_com_sleepycat_db_inte/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbSequence_1initial_1value ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbSequence_1open ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbSequence_1remove0 ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbSequence_1set_1cachesize ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbSequence_1set_1flags ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbSequence_1set_1range ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbSequence_1stat ../libdb_java/db_java_wrap.c /^JNIEXPORT jobject JNICALL Java_com_sleepycat_db_in/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbTxn_1abort0 ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbTxn_1commit0 ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbTxn_1discard0 ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbTxn_1get_1name ../libdb_java/db_java_wrap.c /^JNIEXPORT jstring JNICALL Java_com_sleepycat_db_in/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbTxn_1id ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbTxn_1prepare ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbTxn_1set_1name ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_DbTxn_1set_1timeout ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1associate ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1close0 ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1compact ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1cursor ../libdb_java/db_java_wrap.c /^JNIEXPORT jlong JNICALL Java_com_sleepycat_db_inte/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1del ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1err ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1errx ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1exists ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1get ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1get_1bt_1minkey ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1get_1byteswapped ../libdb_java/db_java_wrap.c /^JNIEXPORT jboolean JNICALL Java_com_sleepycat_db_i/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1get_1cachesize ../libdb_java/db_java_wrap.c /^JNIEXPORT jlong JNICALL Java_com_sleepycat_db_inte/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1get_1cachesize_1ncache ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1get_1dbname ../libdb_java/db_java_wrap.c /^JNIEXPORT jstring JNICALL Java_com_sleepycat_db_in/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1get_1encrypt_1flags ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1get_1filename ../libdb_java/db_java_wrap.c /^JNIEXPORT jstring JNICALL Java_com_sleepycat_db_in/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1get_1flags ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1get_1h_1ffactor ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1get_1h_1nelem ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1get_1lorder ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1get_1mpf ../libdb_java/db_java_wrap.c /^JNIEXPORT jlong JNICALL Java_com_sleepycat_db_inte/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1get_1multiple ../libdb_java/db_java_wrap.c /^JNIEXPORT jboolean JNICALL Java_com_sleepycat_db_i/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1get_1open_1flags ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1get_1pagesize ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1get_1priority ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1get_1q_1extentsize ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1get_1re_1delim ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1get_1re_1len ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1get_1re_1pad ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1get_1re_1source ../libdb_java/db_java_wrap.c /^JNIEXPORT jstring JNICALL Java_com_sleepycat_db_in/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1get_1transactional ../libdb_java/db_java_wrap.c /^JNIEXPORT jboolean JNICALL Java_com_sleepycat_db_i/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1get_1type ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1join ../libdb_java/db_java_wrap.c /^JNIEXPORT jlong JNICALL Java_com_sleepycat_db_inte/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1key_1range ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1open ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1pget ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1put ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1remove0 ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1rename0 ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1append_1recno ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1bt_1compare ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1bt_1minkey ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1bt_1prefix ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1cachesize ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1dup_1compare ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1encrypt ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1feedback ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1flags ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1h_1compare ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1h_1ffactor ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1h_1hash ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1h_1nelem ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1lorder ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1pagesize ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1priority ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1q_1extentsize ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1re_1delim ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1re_1len ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1re_1pad ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1re_1source ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1stat ../libdb_java/db_java_wrap.c /^JNIEXPORT jobject JNICALL Java_com_sleepycat_db_in/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1sync ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1truncate ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1upgrade ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Db_1verify0 ../libdb_java/db_java_wrap.c /^JNIEXPORT jboolean JNICALL Java_com_sleepycat_db_i/
+Java_com_sleepycat_db_internal_db_1javaJNI_Dbc_1close0 ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Dbc_1count ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Dbc_1del ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Dbc_1dup ../libdb_java/db_java_wrap.c /^JNIEXPORT jlong JNICALL Java_com_sleepycat_db_inte/
+Java_com_sleepycat_db_internal_db_1javaJNI_Dbc_1get ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Dbc_1get_1priority ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Dbc_1pget ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Dbc_1put ../libdb_java/db_java_wrap.c /^JNIEXPORT jint JNICALL Java_com_sleepycat_db_inter/
+Java_com_sleepycat_db_internal_db_1javaJNI_Dbc_1set_1priority ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
Java_com_sleepycat_db_internal_db_1javaJNI_deleteRef0 ../libdb_java/db_java_wrap.c /^Java_com_sleepycat_db_internal_db_1javaJNI_deleteR/
+Java_com_sleepycat_db_internal_db_1javaJNI_delete_1DbLock ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
Java_com_sleepycat_db_internal_db_1javaJNI_getDbEnv0 ../libdb_java/db_java_wrap.c /^Java_com_sleepycat_db_internal_db_1javaJNI_getDbEn/
Java_com_sleepycat_db_internal_db_1javaJNI_initDbEnvRef0 ../libdb_java/db_java_wrap.c /^Java_com_sleepycat_db_internal_db_1javaJNI_initDbE/
Java_com_sleepycat_db_internal_db_1javaJNI_initDbRef0 ../libdb_java/db_java_wrap.c /^Java_com_sleepycat_db_internal_db_1javaJNI_initDbR/
Java_com_sleepycat_db_internal_db_1javaJNI_initialize ../libdb_java/db_java_wrap.c /^JNIEXPORT void JNICALL Java_com_sleepycat_db_inter/
-LASTCKP_CMP ../dbinc/log.h /^#define LASTCKP_CMP 1$/
-LCK_ALWAYS ../dbinc/db_am.h /^#define LCK_ALWAYS 1 \/* Lock even for off page d/
-LCK_COUPLE ../dbinc/db_am.h /^#define LCK_COUPLE 2 \/* Lock Couple *\/$/
-LCK_COUPLE_ALWAYS ../dbinc/db_am.h /^#define LCK_COUPLE_ALWAYS 3 \/* Lock Couple even i/
-LCK_DOWNGRADE ../dbinc/db_am.h /^#define LCK_DOWNGRADE 4 \/* Downgrade the lock. (/
-LCK_ROLLBACK ../dbinc/db_am.h /^#define LCK_ROLLBACK 5 \/* Lock even if in rollba/
-LEAFLEVEL ../dbinc/db_page.h /^#define LEAFLEVEL 1$/
+Java_com_sleepycat_db_internal_db_1javaJNI_new_1Db ../libdb_java/db_java_wrap.c /^JNIEXPORT jlong JNICALL Java_com_sleepycat_db_inte/
+Java_com_sleepycat_db_internal_db_1javaJNI_new_1DbEnv ../libdb_java/db_java_wrap.c /^JNIEXPORT jlong JNICALL Java_com_sleepycat_db_inte/
+Java_com_sleepycat_db_internal_db_1javaJNI_new_1DbSequence ../libdb_java/db_java_wrap.c /^JNIEXPORT jlong JNICALL Java_com_sleepycat_db_inte/
+LASTCKP_CMP ../dbinc/log.h 416
+LCK_ALWAYS ../dbinc/db_am.h 142
+LCK_COUPLE ../dbinc/db_am.h 143
+LCK_COUPLE_ALWAYS ../dbinc/db_am.h 144
+LCK_DOWNGRADE ../dbinc/db_am.h 145
+LCK_ROLLBACK ../dbinc/db_am.h 146
+LEAFLEVEL ../dbinc/db_page.h 242
+LEASE_REFRESH_TRIES ../dbinc/rep.h 566
LEN_HDATA ../dbinc/db_page.h /^#define LEN_HDATA(dbp, p, psize, indx) \\$/
LEN_HITEM ../dbinc/db_page.h /^#define LEN_HITEM(dbp, pg, pgsize, indx) \\$/
LEN_HKEY ../dbinc/db_page.h /^#define LEN_HKEY(dbp, p, psize, indx) \\$/
LEN_HKEYDATA ../dbinc/db_page.h /^#define LEN_HKEYDATA(dbp, pg, psize, indx) \\$/
LEVEL ../dbinc/db_page.h /^#define LEVEL(p) (((PAGE *)p)->level)$/
-LFNAME ../dbinc/log.h /^#define LFNAME "log.%010d" \/* Log file name temp/
-LFNAME_V1 ../dbinc/log.h /^#define LFNAME_V1 "log.%05d" \/* Log file name tem/
-LFPREFIX ../dbinc/log.h /^#define LFPREFIX "log." \/* Log file name prefix./
+LFNAME ../dbinc/log.h 78
+LFNAME_V1 ../dbinc/log.h 79
+LFPREFIX ../dbinc/log.h 77
LF_CLR ../dbinc/db_int.in /^#define LF_CLR(f) ((flags) &= ~(f))$/
LF_ISSET ../dbinc/db_int.in /^#define LF_ISSET(f) ((flags) & (f))$/
LF_SET ../dbinc/db_int.in /^#define LF_SET(f) ((flags) |= (f))$/
-LG_BASE_REGION_SIZE ../dbinc/log.h /^#define LG_BASE_REGION_SIZE (65000) \/* 64KB - 53/
-LG_BSIZE_DEFAULT ../dbinc/log.h /^#define LG_BSIZE_DEFAULT (32000) \/* 32 KB - 768B/
-LG_BSIZE_INMEM ../dbinc/log.h /^#define LG_BSIZE_INMEM (1 * MEGABYTE) \/* 1 MB. */
-LG_CURSOR_BUF_SIZE ../dbinc/log.h /^#define LG_CURSOR_BUF_SIZE (32000) \/* 32KB - 768/
-LG_MAX_DEFAULT ../dbinc/log.h /^#define LG_MAX_DEFAULT (10 * MEGABYTE) \/* 10 MB./
-LG_MAX_INMEM ../dbinc/log.h /^#define LG_MAX_INMEM (256 * 1024) \/* 256 KB. *\//
+LG_BASE_REGION_SIZE ../dbinc/log.h 90
+LG_BSIZE_DEFAULT ../dbinc/log.h 91
+LG_BSIZE_INMEM ../dbinc/log.h 83
+LG_CURSOR_BUF_SIZE ../dbinc/log.h 92
+LG_MAX_DEFAULT ../dbinc/log.h 81
+LG_MAX_INMEM ../dbinc/log.h 82
LIST_EMPTY ../dbinc/queue.h /^#define LIST_EMPTY(head) ((head)->lh_first == NULL/
LIST_ENTRY ../dbinc/queue.h /^#define LIST_ENTRY(type) \\$/
LIST_FIRST ../dbinc/queue.h /^#define LIST_FIRST(head) ((head)->lh_first)$/
LIST_FOREACH ../dbinc/queue.h /^#define LIST_FOREACH(var, head, field) \\$/
LIST_HEAD ../dbinc/queue.h /^#define LIST_HEAD(name, type) \\$/
LIST_HEAD_INITIALIZER ../dbinc/queue.h /^#define LIST_HEAD_INITIALIZER(head) \\$/
-LIST_INCREMENT ../log/log_archive.c /^#define LIST_INCREMENT 64$/
+LIST_INCREMENT ../log/log_archive.c 179
LIST_INIT ../dbinc/queue.h /^#define LIST_INIT(head) do { \\$/
LIST_INSERT_AFTER ../dbinc/queue.h /^#define LIST_INSERT_AFTER(listelm, elm, field) do /
LIST_INSERT_BEFORE ../dbinc/queue.h /^#define LIST_INSERT_BEFORE(listelm, elm, field) do/
LIST_INSERT_HEAD ../dbinc/queue.h /^#define LIST_INSERT_HEAD(head, elm, field) do { /
LIST_NEXT ../dbinc/queue.h /^#define LIST_NEXT(elm, field) ((elm)->field.le_nex/
LIST_REMOVE ../dbinc/queue.h /^#define LIST_REMOVE(elm, field) do { \\$/
-LOAD_ACTUAL_MUTEX_CODE ../mutex/mut_tas.c /^#define LOAD_ACTUAL_MUTEX_CODE$/
-LOCKER_LOCK ../dbinc/lock.h /^#define LOCKER_LOCK(lt, reg, locker, ndx) \\$/
+LOAD_ACTUAL_MUTEX_CODE ../mutex/mut_pthread.c 16
+LOCKER_HASH ../dbinc/lock.h /^#define LOCKER_HASH(lt, reg, locker, ndx) \\$/
LOCKING_ON ../dbinc/db_int.in /^#define LOCKING_ON(dbenv) ((dbenv)->lk_handle != N/
LOCK_INIT ../dbinc/lock.h /^#define LOCK_INIT(lock) ((lock).off = LOCK_INVALI/
-LOCK_INVALID ../dbinc/lock.h /^#define LOCK_INVALID INVALID_ROFF$/
+LOCK_INVALID ../dbinc/lock.h 30
LOCK_ISSET ../dbinc/lock.h /^#define LOCK_ISSET(lock) ((lock).off != LOCK_INVAL/
+LOCK_LOCKERS ../dbinc/lock.h /^#define LOCK_LOCKERS(dbenv, region) \\$/
+LOCK_LOCKS ../dbinc/lock.h /^#define LOCK_LOCKS(dbenv, region) \\$/
LOCK_MUTEX ../dbinc/repmgr.h /^#define LOCK_MUTEX(m) do { \\$/
-LOCK_SET_TIME_INVALID ../dbinc/lock.h /^#define LOCK_SET_TIME_INVALID(time) ((time)->tv_se/
-LOCK_SET_TIME_MAX ../dbinc/lock.h /^#define LOCK_SET_TIME_MAX(time) ((time)->tv_sec =/
-LOCK_SYSTEM_LOCK ../dbinc/lock.h /^#define LOCK_SYSTEM_LOCK(dbenv) \\$/
-LOCK_SYSTEM_UNLOCK ../dbinc/lock.h /^#define LOCK_SYSTEM_UNLOCK(dbenv) \\$/
-LOCK_TIME_EQUAL ../dbinc/lock.h /^#define LOCK_TIME_EQUAL(t1, t2) \\$/
-LOCK_TIME_GREATER ../dbinc/lock.h /^#define LOCK_TIME_GREATER(t1, t2) \\$/
-LOCK_TIME_ISMAX ../dbinc/lock.h /^#define LOCK_TIME_ISMAX(time) ((time)->tv_sec == /
-LOCK_TIME_ISVALID ../dbinc/lock.h /^#define LOCK_TIME_ISVALID(time) ((time)->tv_sec !/
+LOCK_OBJECTS ../dbinc/lock.h /^#define LOCK_OBJECTS(dbenv, region) \\$/
+LOCK_REGION_LOCK ../dbinc/lock.h /^#define LOCK_REGION_LOCK(dbenv) \\$/
+LOCK_REGION_UNLOCK ../dbinc/lock.h /^#define LOCK_REGION_UNLOCK(dbenv) \\$/
+LOCK_SYSTEM_LOCK ../dbinc/lock.h /^#define LOCK_SYSTEM_LOCK(dbenv)$/
+LOCK_SYSTEM_UNLOCK ../dbinc/lock.h /^#define LOCK_SYSTEM_UNLOCK(dbenv)$/
LOFFSET ../dbinc/db_page.h /^#define LOFFSET(dbp, pg) \\$/
-LOG ../dbinc/log.h /^struct __log; typedef struct __log LOG;$/
+LOG ../dbinc/log.h 74
LOGGING_ON ../dbinc/db_int.in /^#define LOGGING_ON(dbenv) ((dbenv)->lg_handle != N/
-LOGP ../dbinc/log.h /^struct __log_persist; typedef struct __log_persist/
+LOGP ../dbinc/log.h 75
LOG_COMPARE ../dbinc/db_int.in /^#define LOG_COMPARE(lsn0, lsn1) \\$/
+LOG_FLAGS ../txn/txn.c /^#define LOG_FLAGS(txn) \\$/
LOG_HDR_SUM ../dbinc/log.h /^#define LOG_HDR_SUM(crypto, hdr, sum) do { \\$/
LOG_OP ../dbinc/debug.h /^#define LOG_OP(C, T, O, K, A, F) { \\$/
LOG_SYSTEM_LOCK ../dbinc/log.h /^#define LOG_SYSTEM_LOCK(dbenv) \\$/
LOG_SYSTEM_UNLOCK ../dbinc/log.h /^#define LOG_SYSTEM_UNLOCK(dbenv) \\$/
-LOWER_MASK ../crypto/mersenne/mt19937db.c /^#define LOWER_MASK 0x7fffffff \/* least significan/
+LOWER_MASK ../crypto/mersenne/mt19937db.c 41
LSN ../dbinc/db_page.h /^#define LSN(p) (((PAGE *)p)->lsn)$/
-LSN_COLLECTION ../dbinc/rep.h /^} LSN_COLLECTION;$/
LSN_NOT_LOGGED ../dbinc/db_int.in /^#define LSN_NOT_LOGGED(LSN) do { \\$/
-M ../crypto/mersenne/mt19937db.c /^#define M 397$/
+M ../crypto/mersenne/mt19937db.c 38
MAKE_INMEM ../dbinc/fop.h /^#define MAKE_INMEM(D) do { \\$/
MAKE_STAT_LIST ../dbinc/tcl_db.h /^#define MAKE_STAT_LIST(s, v) do { \\$/
MAKE_STAT_LSN ../dbinc/tcl_db.h /^#define MAKE_STAT_LSN(s, lsn) do { \\$/
MAKE_STAT_STRLIST ../dbinc/tcl_db.h /^#define MAKE_STAT_STRLIST(s,s1) do { \\$/
MAKE_WSTAT_LIST ../dbinc/tcl_db.h /^#define MAKE_WSTAT_LIST(s, v) do { \\$/
-MAP_FAILED ../mutex/tm.c /^#define MAP_FAILED (void *)-1$/
-MAP_FILE ../mutex/tm.c /^#define MAP_FILE 0$/
+MAP_FAILED ../os/os_map.c 424
MASTER_ONLY ../rep/rep_record.c /^#define MASTER_ONLY(rep, rp) do { \\$/
MASTER_UPDATE ../rep/rep_record.c /^#define MASTER_UPDATE(dbenv, renv) do { \\$/
-MATRIX_A ../crypto/mersenne/mt19937db.c /^#define MATRIX_A 0x9908b0df \/* constant vector /
-MAXARGS ../common/util_arg.c /^#define MAXARGS 25$/
-MAXBQUALSIZE ../dbinc/xa.h /^#define MAXBQUALSIZE 64 \/* maximum size in byte/
-MAXBTREELEVEL ../dbinc/db_page.h /^#define MAXBTREELEVEL 255$/
-MAXGTRIDSIZE ../dbinc/xa.h /^#define MAXGTRIDSIZE 64 \/* maximum size in byte/
-MAXHOSTNAMELEN ../dbinc/repmgr.h /^#define MAXHOSTNAMELEN 256$/
-MAXINFOSIZE ../dbinc/xa.h /^#define MAXINFOSIZE 256 \/* maximum size in bytes/
-MAXKB ../crypto/rijndael/rijndael-alg-fst.h /^#define MAXKB (256\/8)$/
-MAXKC ../crypto/rijndael/rijndael-alg-fst.h /^#define MAXKC (256\/32)$/
-MAXNR ../crypto/rijndael/rijndael-alg-fst.h /^#define MAXNR 14$/
-MAX_ID ../dbinc/tcl_db.h /^#define MAX_ID 8 \/* Maximum number of sub-id's w/
-MAX_IV_SIZE ../crypto/rijndael/rijndael-api-fst.h /^#define MAX_IV_SIZE 16 \/* # bytes ne/
-MAX_KEY_SIZE ../crypto/rijndael/rijndael-api-fst.h /^#define MAX_KEY_SIZE 64 \/* # of ASCII/
+MATRIX_A ../crypto/mersenne/mt19937db.c 39
+MAXARGS ../common/util_arg.c 29
+MAXBQUALSIZE ../dbinc/xa.h 25
+MAXBTREELEVEL ../dbinc/db_page.h 243
+MAXGTRIDSIZE ../dbinc/xa.h 24
+MAXHOSTNAMELEN ../dbinc/repmgr.h 43
+MAXINFOSIZE ../dbinc/xa.h 49
+MAXKB ../crypto/rijndael/rijndael-alg-fst.h 33
+MAXKC ../crypto/rijndael/rijndael-alg-fst.h 32
+MAXNR ../crypto/rijndael/rijndael-alg-fst.h 34
+MAX_ID ../dbinc/tcl_db.h 21
+MAX_INT_TO_HEX ../db/db.c 1196
+MAX_IV_SIZE ../crypto/rijndael/rijndael-api-fst.h 71
+MAX_KEY_SIZE ../crypto/rijndael/rijndael-api-fst.h 70
MAX_LSN ../dbinc/db_int.in /^#define MAX_LSN(LSN) do { \\$/
-MAX_LSN_TO_TEXT ../db/db.c /^#define MAX_LSN_TO_TEXT 17$/
-MAX_PAGE_NUMBER ../dbinc/db_185.in /^#define MAX_PAGE_NUMBER 0xffffffff \/* >= # of pag/
-MAX_PAGE_OFFSET ../dbinc/db_185.in /^#define MAX_PAGE_OFFSET 65535 \/* >= # of bytes i/
-MAX_PGNOS ../lock/lock_list.c /^#define MAX_PGNOS 0xffff$/
-MAX_REC_NUMBER ../dbinc/db_185.in /^#define MAX_REC_NUMBER 0xffffffff \/* >= # of reco/
-MAX_SITE_LOC_STRING ../dbinc/repmgr.h /^#define MAX_SITE_LOC_STRING (MAXHOSTNAMELEN+20)$/
-MEGABYTE ../dbinc/db_int.in /^#define MEGABYTE 1048576$/
-MEM_ALIGN ../repmgr/repmgr_sel.c /^#define MEM_ALIGN sizeof(double)$/
-MINFILL ../dbinc/hash.h /^#define MINFILL 4$/
-MODE_CBC ../crypto/rijndael/rijndael-api-fst.h /^#define MODE_CBC 2 \/* Are we ci/
-MODE_CFB1 ../crypto/rijndael/rijndael-api-fst.h /^#define MODE_CFB1 3 \/* Are we ci/
-MODE_ECB ../crypto/rijndael/rijndael-api-fst.h /^#define MODE_ECB 1 \/* Are we ci/
-MPFARRAY ../dbinc/qam.h /^} MPFARRAY;$/
+MAX_PAGE_NUMBER ../dbinc/db_185.in 82
+MAX_PAGE_OFFSET ../dbinc/db_185.in 84
+MAX_PGNOS ../lock/lock_list.c 45
+MAX_REC_NUMBER ../dbinc/db_185.in 86
+MAX_SITE_LOC_STRING ../dbinc/repmgr.h 47
+MEGABYTE ../dbinc/db_int.in 117
+MEM_ALIGN ../repmgr/repmgr_sel.c 508
+MINFILL ../dbinc/hash.h 110
+MODE_CBC ../crypto/rijndael/rijndael-api-fst.h 50
+MODE_CFB1 ../crypto/rijndael/rijndael-api-fst.h 51
+MODE_ECB ../crypto/rijndael/rijndael-api-fst.h 49
MPF_ILLEGAL_AFTER_OPEN ../dbinc/mp.h /^#define MPF_ILLEGAL_AFTER_OPEN(dbmfp, name) \\$/
-MPF_ILLEGAL_BEFORE_OPEN ../dbinc/mp.h /^#define MPF_ILLEGAL_BEFORE_OPEN(dbmfp, name) \\/
-MPOOL ../dbinc/mp.h /^struct __mpool; typedef struct __mpool MPOOL;$/
-MPOOLFILE ../dbinc/db.in /^struct __mpoolfile; typedef struct __mpoolfile MPO/
-MPOOL_BASE_DECREMENT ../dbinc/mp.h /^#define MPOOL_BASE_DECREMENT (UINT32_MAX - (UINT32/
-MPOOL_FILE_BUCKETS ../dbinc/mp.h /^#define MPOOL_FILE_BUCKETS 17$/
+MPF_ILLEGAL_BEFORE_OPEN ../dbinc/mp.h /^#define MPF_ILLEGAL_BEFORE_OPEN(dbmfp, name) \\$/
+MPOOL ../dbinc/mp.h 21
+MPOOLFILE ../dbinc/db.in 183
+MPOOL_BASE_DECREMENT ../dbinc/mp.h 344
+MPOOL_FILE_BUCKETS ../dbinc/mp.h 96
MPOOL_ON ../dbinc/db_int.in /^#define MPOOL_ON(dbenv) ((dbenv)->mp_handle != NU/
-MPOOL_PRI_DEFAULT ../dbinc/mp.h /^#define MPOOL_PRI_DEFAULT 0 \/* No adjustment -- s/
-MPOOL_PRI_DIRTY ../dbinc/mp.h /^#define MPOOL_PRI_DIRTY 10 \/* Dirty gets a 10% b/
-MPOOL_PRI_HIGH ../dbinc/mp.h /^#define MPOOL_PRI_HIGH 10 \/* With the dirty buff/
-MPOOL_PRI_LOW ../dbinc/mp.h /^#define MPOOL_PRI_LOW -2 \/* Low. *\/$/
-MPOOL_PRI_VERY_HIGH ../dbinc/mp.h /^#define MPOOL_PRI_VERY_HIGH 1 \/* Add number of bu/
-MPOOL_PRI_VERY_LOW ../dbinc/mp.h /^#define MPOOL_PRI_VERY_LOW -1 \/* Dead duck. Chec/
+MPOOL_PRI_DEFAULT ../dbinc/mp.h 352
+MPOOL_PRI_DIRTY ../dbinc/mp.h 354
+MPOOL_PRI_HIGH ../dbinc/mp.h 353
+MPOOL_PRI_LOW ../dbinc/mp.h 351
+MPOOL_PRI_VERY_HIGH ../dbinc/mp.h 355
+MPOOL_PRI_VERY_LOW ../dbinc/mp.h 350
MPOOL_REGION_LOCK ../dbinc/mp.h /^#define MPOOL_REGION_LOCK(dbenv, infop) \\$/
MPOOL_REGION_UNLOCK ../dbinc/mp.h /^#define MPOOL_REGION_UNLOCK(dbenv, infop) \\$/
MPOOL_SYSTEM_LOCK ../dbinc/mp.h /^#define MPOOL_SYSTEM_LOCK(dbenv) \\$/
MPOOL_SYSTEM_UNLOCK ../dbinc/mp.h /^#define MPOOL_SYSTEM_UNLOCK(dbenv) \\$/
-MP_CAN_MMAP ../dbinc/mp.h /^#define MP_CAN_MMAP 0x001 \/* If the file can be /
-MP_DIRECT ../dbinc/mp.h /^#define MP_DIRECT 0x002 \/* No OS buffering. *\/$/
-MP_DURABLE_UNKNOWN ../dbinc/mp.h /^#define MP_DURABLE_UNKNOWN 0x004 \/* We don't care/
-MP_EXTENT ../dbinc/mp.h /^#define MP_EXTENT 0x008 \/* Extent file. *\/$/
-MP_FAKE_DEADFILE ../dbinc/mp.h /^#define MP_FAKE_DEADFILE 0x010 \/* Deadfile field:/
-MP_FAKE_FILEWRITTEN ../dbinc/mp.h /^#define MP_FAKE_FILEWRITTEN 0x020 \/* File_written/
-MP_FAKE_NB ../dbinc/mp.h /^#define MP_FAKE_NB 0x040 \/* No_backing_file fiel/
-MP_FAKE_UOC ../dbinc/mp.h /^#define MP_FAKE_UOC 0x080 \/* Unlink_on_close fie/
-MP_FILEID_SET ../dbinc/db.in /^#define MP_FILEID_SET 0x001 \/* Application suppl/
-MP_FLUSH ../dbinc/db.in /^#define MP_FLUSH 0x002 \/* Was opened to flush a /
-MP_MULTIVERSION ../dbinc/db.in /^#define MP_MULTIVERSION 0x004 \/* Opened for mult/
-MP_NOT_DURABLE ../dbinc/mp.h /^#define MP_NOT_DURABLE 0x100 \/* File is not dura/
-MP_OPEN_CALLED ../dbinc/db.in /^#define MP_OPEN_CALLED 0x008 \/* File opened. *\//
-MP_READONLY ../dbinc/db.in /^#define MP_READONLY 0x010 \/* File is readonly. */
-MP_TEMP ../dbinc/mp.h /^#define MP_TEMP 0x200 \/* Backing file is a temp/
-MP_TRUNC_RECOVER ../dbinc/mp.h /^#define MP_TRUNC_RECOVER 0x01$/
-MSG_SIZE ../dbinc/tcl_db.h /^#define MSG_SIZE 100 \/* Message size *\/$/
-MS_PER_SEC ../dbinc/db_int.in /^#define MS_PER_SEC 1000 \/* Milliseconds in a sec/
-MTX_APPLICATION ../dbinc/mutex.h /^#define MTX_APPLICATION 1$/
-MTX_DB_HANDLE ../dbinc/mutex.h /^#define MTX_DB_HANDLE 2$/
-MTX_ENV_DBLIST ../dbinc/mutex.h /^#define MTX_ENV_DBLIST 3$/
-MTX_ENV_REGION ../dbinc/mutex.h /^#define MTX_ENV_REGION 4$/
-MTX_LOCK_REGION ../dbinc/mutex.h /^#define MTX_LOCK_REGION 5$/
-MTX_LOGICAL_LOCK ../dbinc/mutex.h /^#define MTX_LOGICAL_LOCK 6$/
-MTX_LOG_FILENAME ../dbinc/mutex.h /^#define MTX_LOG_FILENAME 7$/
-MTX_LOG_FLUSH ../dbinc/mutex.h /^#define MTX_LOG_FLUSH 8$/
-MTX_LOG_HANDLE ../dbinc/mutex.h /^#define MTX_LOG_HANDLE 9$/
-MTX_LOG_REGION ../dbinc/mutex.h /^#define MTX_LOG_REGION 10$/
-MTX_MAX_ENTRY ../dbinc/mutex.h /^#define MTX_MAX_ENTRY 28$/
-MTX_MPOOLFILE_HANDLE ../dbinc/mutex.h /^#define MTX_MPOOLFILE_HANDLE 11$/
-MTX_MPOOL_FH ../dbinc/mutex.h /^#define MTX_MPOOL_FH 12$/
-MTX_MPOOL_FILE_BUCKET ../dbinc/mutex.h /^#define MTX_MPOOL_FILE_BUCKET 13$/
-MTX_MPOOL_HANDLE ../dbinc/mutex.h /^#define MTX_MPOOL_HANDLE 14$/
-MTX_MPOOL_HASH_BUCKET ../dbinc/mutex.h /^#define MTX_MPOOL_HASH_BUCKET 15$/
-MTX_MPOOL_IO ../dbinc/mutex.h /^#define MTX_MPOOL_IO 16$/
-MTX_MPOOL_REGION ../dbinc/mutex.h /^#define MTX_MPOOL_REGION 17$/
-MTX_MUTEX_REGION ../dbinc/mutex.h /^#define MTX_MUTEX_REGION 18$/
-MTX_MUTEX_TEST ../dbinc/mutex.h /^#define MTX_MUTEX_TEST 19$/
-MTX_REP_DATABASE ../dbinc/mutex.h /^#define MTX_REP_DATABASE 20$/
-MTX_REP_REGION ../dbinc/mutex.h /^#define MTX_REP_REGION 21$/
-MTX_SEQUENCE ../dbinc/mutex.h /^#define MTX_SEQUENCE 22$/
-MTX_TWISTER ../dbinc/mutex.h /^#define MTX_TWISTER 23$/
-MTX_TXN_ACTIVE ../dbinc/mutex.h /^#define MTX_TXN_ACTIVE 24$/
-MTX_TXN_CHKPT ../dbinc/mutex.h /^#define MTX_TXN_CHKPT 25$/
-MTX_TXN_COMMIT ../dbinc/mutex.h /^#define MTX_TXN_COMMIT 26$/
-MTX_TXN_MVCC ../dbinc/mutex.h /^#define MTX_TXN_MVCC 27$/
-MTX_TXN_REGION ../dbinc/mutex.h /^#define MTX_TXN_REGION 28$/
-MT_FILE ../mutex/tm.c /^#define MT_FILE "TESTDIR\/mutex.file"$/
-MT_FILE_QUIT ../mutex/tm.c /^#define MT_FILE_QUIT "TESTDIR\/mutex.file.quit"$/
+MP_BUCKET ../dbinc/mp.h /^#define MP_BUCKET(mf_offset, pgno, nbuckets, bucke/
+MP_CAN_MMAP ../dbinc/mp.h 459
+MP_DIRECT ../dbinc/mp.h 460
+MP_DURABLE_UNKNOWN ../dbinc/mp.h 461
+MP_EXTENT ../dbinc/mp.h 462
+MP_FAKE_DEADFILE ../dbinc/mp.h 463
+MP_FAKE_FILEWRITTEN ../dbinc/mp.h 464
+MP_FAKE_NB ../dbinc/mp.h 465
+MP_FAKE_UOC ../dbinc/mp.h 466
+MP_FILEID_SET ../dbinc/db.in 869
+MP_FLUSH ../dbinc/db.in 870
+MP_GET_BUCKET ../dbinc/mp.h /^#define MP_GET_BUCKET(dbmfp, pgno, infopp, hp, ret/
+MP_GET_REGION ../dbinc/mp.h /^#define MP_GET_REGION(dbmfp, pgno, infopp, ret) do/
+MP_HASH ../dbinc/mp.h /^#define MP_HASH(mf_offset, pgno) \\$/
+MP_HASH_BUCKET ../dbinc/mp.h /^#define MP_HASH_BUCKET(hash, nbuckets, mask, bucke/
+MP_MASK ../dbinc/mp.h /^#define MP_MASK(nbuckets, mask) do { \\$/
+MP_MULTIVERSION ../dbinc/db.in 871
+MP_NOT_DURABLE ../dbinc/mp.h 467
+MP_OPEN_CALLED ../dbinc/db.in 872
+MP_READONLY ../dbinc/db.in 873
+MP_TEMP ../dbinc/mp.h 468
+MP_TRUNC_RECOVER ../dbinc/mp.h 625
+MSG_SIZE ../dbinc/tcl_db.h 16
+MS_PER_NS ../dbinc/db_int.in 125
+MS_PER_SEC ../dbinc/db_int.in 126
+MTX_APPLICATION ../dbinc/mutex.h 26
+MTX_DB_HANDLE ../dbinc/mutex.h 27
+MTX_ENV_DBLIST ../dbinc/mutex.h 28
+MTX_ENV_HANDLE ../dbinc/mutex.h 29
+MTX_ENV_REGION ../dbinc/mutex.h 30
+MTX_LOCK_REGION ../dbinc/mutex.h 31
+MTX_LOGICAL_LOCK ../dbinc/mutex.h 32
+MTX_LOG_FILENAME ../dbinc/mutex.h 33
+MTX_LOG_FLUSH ../dbinc/mutex.h 34
+MTX_LOG_HANDLE ../dbinc/mutex.h 35
+MTX_LOG_REGION ../dbinc/mutex.h 36
+MTX_MAX_ENTRY ../dbinc/mutex.h 58
+MTX_MPOOLFILE_HANDLE ../dbinc/mutex.h 37
+MTX_MPOOL_FH ../dbinc/mutex.h 38
+MTX_MPOOL_FILE_BUCKET ../dbinc/mutex.h 39
+MTX_MPOOL_HANDLE ../dbinc/mutex.h 40
+MTX_MPOOL_HASH_BUCKET ../dbinc/mutex.h 41
+MTX_MPOOL_IO ../dbinc/mutex.h 42
+MTX_MPOOL_REGION ../dbinc/mutex.h 43
+MTX_MUTEX_REGION ../dbinc/mutex.h 44
+MTX_MUTEX_TEST ../dbinc/mutex.h 45
+MTX_REP_CKP ../dbinc/mutex.h 46
+MTX_REP_DATABASE ../dbinc/mutex.h 47
+MTX_REP_EVENT ../dbinc/mutex.h 48
+MTX_REP_REGION ../dbinc/mutex.h 49
+MTX_SEQUENCE ../dbinc/mutex.h 50
+MTX_TWISTER ../dbinc/mutex.h 51
+MTX_TXN_ACTIVE ../dbinc/mutex.h 52
+MTX_TXN_CHKPT ../dbinc/mutex.h 53
+MTX_TXN_COMMIT ../dbinc/mutex.h 54
+MTX_TXN_MVCC ../dbinc/mutex.h 55
+MTX_TXN_REGION ../dbinc/mutex.h 56
+MT_FILE ../mutex/test_mutex.c 60
+MT_FILE_QUIT ../mutex/test_mutex.c 61
MULTIVERSION ../dbinc/mp.h /^#define MULTIVERSION(dbp) ((dbp)->mpf->mfp->multiv/
MUTEXP_SET ../dbinc/mutex_int.h /^#define MUTEXP_SET(indx) \\$/
-MUTEX_ALIGN ../dbinc/mutex_int.h /^#define MUTEX_ALIGN 16$/
+MUTEX_ALIGN ../dbinc/mutex_int.h 118
MUTEX_DESTROY ../dbinc/mutex_int.h /^#define MUTEX_DESTROY(x) sema_destroy(x)$/
-MUTEX_FIELDS ../dbinc/mutex_int.h /^#define MUTEX_FIELDS \\$/
+MUTEX_FIELDS ../dbinc/mutex_int.h 22
MUTEX_INIT ../dbinc/mutex_int.h /^#define MUTEX_INIT(x) 0$/
-MUTEX_INVALID ../dbinc/mutex.h /^#define MUTEX_INVALID 0$/
+MUTEX_INVALID ../dbinc/mutex.h 21
MUTEX_LOCK ../dbinc/mutex.h /^#define MUTEX_LOCK(dbenv, mutex) do { \\$/
+MUTEX_MEMBAR ../dbinc/mutex_int.h /^#define MUTEX_MEMBAR() membar_enter();$/
MUTEX_ON ../dbinc/db_int.in /^#define MUTEX_ON(dbenv) ((dbenv)->mutex_handle !=/
-MUTEX_PAUSE ../dbinc/mutex_int.h /^#define MUTEX_PAUSE {__asm{_emit 0xf3}; __asm{_em/
+MUTEX_PAUSE ../dbinc/mutex_int.h 301
MUTEX_SET ../dbinc/mutex_int.h /^#define MUTEX_SET(x) (!_check_lock(x, 0, 1))$/
MUTEX_SYSTEM_LOCK ../dbinc/mutex_int.h /^#define MUTEX_SYSTEM_LOCK(dbenv) \\$/
MUTEX_SYSTEM_UNLOCK ../dbinc/mutex_int.h /^#define MUTEX_SYSTEM_UNLOCK(dbenv) \\$/
+MUTEX_THREAD_TEST ../mutex/test_mutex.c 14
MUTEX_UNLOCK ../dbinc/mutex.h /^#define MUTEX_UNLOCK(dbenv, mutex) do { \\$/
MUTEX_UNSET ../dbinc/mutex_int.h /^#define MUTEX_UNSET(x) _clear_lock(x, 0)$/
MVCC_BHALIGN ../dbinc/mp.h /^#define MVCC_BHALIGN(mfp, p) do { \\$/
@@ -1454,8 +1827,8 @@ MVCC_SKIP_CURADJ ../dbinc/mp.h /^#define MVCC_SKIP_CURADJ(dbc, pgno) \\$/
M_16_SWAP ../dbinc/db_swap.h /^#define M_16_SWAP(a) { \\$/
M_32_SWAP ../dbinc/db_swap.h /^#define M_32_SWAP(a) { \\$/
M_64_SWAP ../dbinc/db_swap.h /^#define M_64_SWAP(a) { \\$/
-Mtm ../mutex/tm.c /^main(argc, argv)$/
-N ../crypto/mersenne/mt19937db.c /^#define N 624$/
+Mtest_mutex ../mutex/test_mutex.c /^main(argc, argv)$/
+N ../crypto/mersenne/mt19937db.c 37
NAME_TO_DB ../dbinc/tcl_db.h /^#define NAME_TO_DB(name) (DB *)_NameToPtr((name))$/
NAME_TO_DBC ../dbinc/tcl_db.h /^#define NAME_TO_DBC(name) (DBC *)_NameToPtr((name)/
NAME_TO_ENV ../dbinc/tcl_db.h /^#define NAME_TO_ENV(name) (DB_ENV *)_NameToPtr((na/
@@ -1463,67 +1836,76 @@ NAME_TO_LOCK ../dbinc/tcl_db.h /^#define NAME_TO_LOCK(name) (DB_LOCK *)_NameToPt
NAME_TO_MP ../dbinc/tcl_db.h /^#define NAME_TO_MP(name) (DB_MPOOLFILE *)_NameToPt/
NAME_TO_SEQUENCE ../dbinc/tcl_db.h /^#define NAME_TO_SEQUENCE(name) (DB_SEQUENCE *)_Nam/
NAME_TO_TXN ../dbinc/tcl_db.h /^#define NAME_TO_TXN(name) (DB_TXN *)_NameToPtr((na/
-NAMLEN ../clib/getcwd.c /^# define NAMLEN(dirent) strlen((dirent)->d_name)$/
-NBUCKET ../dbinc/mp.h /^#define NBUCKET(mc, mf_offset, pgno) \\$/
-NCACHE ../dbinc/mp.h /^#define NCACHE(mp, mf_offset, pgno) \\$/
-NCACHED ../dbinc/db_page.h /^#define NCACHED 32 \/* number of spare points *\//
-NCACHED2X ../dbinc/db_upgrade.h /^#define NCACHED2X 32 \/* number of spare points */
-NCACHED30 ../dbinc/db_upgrade.h /^#define NCACHED30 32 \/* number of spare points */
-NDX_INVALID ../dbinc/hash.h /^#define NDX_INVALID 0xFFFF$/
+NAMLEN ../dbinc/db_int.in /^# define NAMLEN(dirent) strlen((dirent)->d_name)$/
+NCACHED ../dbinc/db_page.h 136
+NCACHED2X ../dbinc/db_upgrade.h 234
+NCACHED30 ../dbinc/db_upgrade.h 155
+NDX_INVALID ../dbinc/hash.h 114
NELEM ../libdb_java/db_java_wrap.c /^#define NELEM(x) (sizeof (x) \/ sizeof (x[0]))$/
NEXT_PGNO ../dbinc/db_page.h /^#define NEXT_PGNO(p) (((PAGE *)p)->next_pgno)$/
NOWAIT_FLAG ../dbinc/db_int.in /^#define NOWAIT_FLAG(txn) \\$/
+NREGION ../dbinc/mp.h /^#define NREGION(mp, bucket) \\$/
+NS_PER_MS ../dbinc/db_int.in 120
+NS_PER_SEC ../dbinc/db_int.in 122
+NS_PER_US ../dbinc/db_int.in 121
NUM_ENT ../dbinc/db_page.h /^#define NUM_ENT(p) (((PAGE *)p)->entries)$/
NewStringObj ../dbinc/tcl_db.h /^#define NewStringObj(a, b) \\$/
-OBJECT_LOCK ../dbinc/lock.h /^#define OBJECT_LOCK(lt, reg, obj, ndx) \\$/
+OBJECT_LOCK ../dbinc/lock.h /^#define OBJECT_LOCK(lt, reg, obj, ndx) do { \\$/
+OBJECT_LOCK_NDX ../dbinc/lock.h /^#define OBJECT_LOCK_NDX(lt, ndx) \\$/
+OBJECT_UNLOCK ../dbinc/lock.h /^#define OBJECT_UNLOCK(lt, ndx) \\$/
OBJ_LINKS_VALID ../dbinc/lock.h /^#define OBJ_LINKS_VALID(L) ((L)->links.stqe_prev !/
-OKFLAGS ../db/db_iface.c /^#define OKFLAGS \\$/
-OKFLAGS_CDB ../env/env_open.c /^#define OKFLAGS_CDB \\$/
-OK_CRYPTO_FLAGS ../env/env_method.c /^#define OK_CRYPTO_FLAGS (DB_ENCRYPT_AES)$/
-OK_FLAGS ../env/env_method.c /^#define OK_FLAGS \\$/
+OKFLAGS ../db/db_iface.c 1210
+OKFLAGS_CDB ../env/env_open.c 64
+OK_CRYPTO_FLAGS ../env/env_method.c 461
+OK_FLAGS ../env/env_method.c 638
+ON_ERROR_RETURN ../dbinc/cxx_int.h 55
+ON_ERROR_THROW ../dbinc/cxx_int.h 54
+ON_ERROR_UNKNOWN ../dbinc/cxx_int.h 56
OPCODE_OF ../dbinc/hash.h /^#define OPCODE_OF(N) (N & ~PAIR_MASK)$/
OR_MAP ../lock/lock_deadlock.c /^#define OR_MAP(D, S, N) { \\$/
-OS_BAD_PID ../mutex/tm.c /^#define OS_BAD_PID (os_pid_t)-1$/
-OS_VMPAGESIZE ../os/os_region.c /^#define OS_VMPAGESIZE (8 * 1024)$/
+OS_BAD_PID ../mutex/test_mutex.c 57
+OS_VMPAGESIZE ../os/os_region.c 32
OS_VMROUNDOFF ../os/os_region.c /^#define OS_VMROUNDOFF(i) { \\$/
-OUT_QUEUE_LIMIT ../repmgr/repmgr_net.c /^#define OUT_QUEUE_LIMIT 10 \/* arbitrary, for now /
-OUT_Q_HEADER ../dbinc/repmgr.h /^typedef STAILQ_HEAD(__repmgr_out_q_head, __queued_/
-OVERFLOW_ERROR ../clib/snprintf.c /^#define OVERFLOW_ERROR "internal buffer overflow, /
+OUT_QUEUE_LIMIT ../repmgr/repmgr_net.c 330
+OVERFLOW_ERROR ../clib/snprintf.c 112
OV_LEN ../dbinc/db_page.h /^#define OV_LEN(p) (((PAGE *)p)->hf_offset)$/
OV_REF ../dbinc/db_page.h /^#define OV_REF(p) (((PAGE *)p)->entries)$/
-OWNER_RW ../dbinc/os.h /^#define OWNER_RW "rw-------"$/
-O_ACCMODE ../os/os_oflags.c /^#define O_ACCMODE (O_RDONLY | O_RDWR | O_WRONLY)$/
-O_INDX ../dbinc/db_page.h /^#define O_INDX 1$/
-PAGE ../dbinc/db_page.h /^} PAGE;$/
-PAIR_DATAMASK ../dbinc/hash.h /^#define PAIR_DATAMASK 0x2$/
-PAIR_DUPMASK ../dbinc/hash.h /^#define PAIR_DUPMASK 0x4$/
+OWNER_RW ../dbinc/os.h 130
+O_ACCMODE ../os/os_oflags.c 73
+O_CREAT ../os/os_oflags.c 24
+O_INDX ../dbinc/db_page.h 603
+O_RDONLY ../os/os_oflags.c 30
+O_RDWR ../os/os_oflags.c 33
+O_TRUNC ../os/os_oflags.c 27
+O_WRONLY ../os/os_oflags.c 36
+PAIR_DATAMASK ../dbinc/hash.h 122
+PAIR_DUPMASK ../dbinc/hash.h 123
PAIR_ISDATABIG ../dbinc/hash.h /^#define PAIR_ISDATABIG(N) (N & PAIR_DATAMASK)$/
PAIR_ISDATADUP ../dbinc/hash.h /^#define PAIR_ISDATADUP(N) (N & PAIR_DUPMASK)$/
PAIR_ISKEYBIG ../dbinc/hash.h /^#define PAIR_ISKEYBIG(N) (N & PAIR_KEYMASK)$/
-PAIR_KEYMASK ../dbinc/hash.h /^#define PAIR_KEYMASK 0x1$/
-PAIR_MASK ../dbinc/hash.h /^#define PAIR_MASK 0xf$/
+PAIR_KEYMASK ../dbinc/hash.h 121
+PAIR_MASK ../dbinc/hash.h 124
PANIC_CHECK ../dbinc/region.h /^#define PANIC_CHECK(dbenv) \\$/
-PATH_DOT ../dbinc/db_int.in /^#define PATH_DOT "." \/* Current working directory/
-PATH_SEPARATOR ../dbinc/db_int.in /^#define PATH_SEPARATOR "@PATH_SEPARATOR@"$/
+PANIC_ISSET ../dbinc/region.h /^#define PANIC_ISSET(dbenv) \\$/
+PATH_DOT ../dbinc/db_int.in 348
+PATH_SEPARATOR ../dbinc/db_int.in 350
PGNO ../dbinc/db_page.h /^#define PGNO(p) (((PAGE *)p)->pgno)$/
-PGNO_BASE_MD ../dbinc/db_page.h /^#define PGNO_BASE_MD 0 \/* Base database: metadata/
-PGNO_INVALID ../dbinc/db_page.h /^#define PGNO_INVALID 0 \/* Invalid page number in /
-PG_CHKSUM ../dbinc/db_page.h /^} PG_CHKSUM;$/
-PG_CRYPTO ../dbinc/db_page.h /^} PG_CRYPTO;$/
-PID_EMPTY ../env/env_register.c /^#define PID_EMPTY "X 0\\n" \//
-PID_FMT ../env/env_register.c /^#define PID_FMT "%24lu\\n" \/* PID entry format/
+PGNO_BASE_MD ../dbinc/db_page.h 33
+PGNO_INVALID ../dbinc/db_page.h 32
+PID_EMPTY ../env/env_register.c 15
+PID_FMT ../env/env_register.c 16
PID_ISEMPTY ../env/env_register.c /^#define PID_ISEMPTY(p) (memcmp(p, PID_EMPTY, PID_L/
-PID_LEN ../env/env_register.c /^#define PID_LEN (25) \/* PID entry length *\/$/
+PID_LEN ../env/env_register.c 19
POWER_OF_TWO ../dbinc/db_int.in /^#define POWER_OF_TWO(x) (((x) & ((x) - 1)) == 0)$/
-PREPLISTSIZE ../rep/rep_method.c /^#define PREPLISTSIZE 50$/
+PREPLISTSIZE ../rep/rep_method.c 785
PREV_PGNO ../dbinc/db_page.h /^#define PREV_PGNO(p) (((PAGE *)p)->prev_pgno)$/
-PTHREAD_UNLOCK_ATTEMPTS ../mutex/mut_pthread.c /^#define PTHREAD_UNLOCK_ATTEMPTS 5$/
+PTHREAD_UNLOCK_ATTEMPTS ../mutex/mut_pthread.c 38
PTRACE ../btree/bt_compact.c /^#define PTRACE(dbc, location, p, start, f) do { /
-PUTOVFL ../dbinc/hash.h /^#define PUTOVFL 0x40$/
-PUTPAIR ../dbinc/hash.h /^#define PUTPAIR 0x20$/
+PUTOVFL ../dbinc/hash.h 132
+PUTPAIR ../dbinc/hash.h 130
PUTU32 ../crypto/rijndael/rijndael-alg-fst.c /^#define PUTU32(ct, st) { *((u32 *)(ct)) = SWAP((st/
PUT_COUNT ../lock/lock_list.c /^#define PUT_COUNT(dp, count) do { u_int32_t *ip = /
-PUT_HKEYDATA ../dbinc/db_page.h /^#define PUT_HKEYDATA(pe, kd, len, type) { \\$/
+PUT_HKEYDATA ../dbinc/db_page.h /^#define PUT_HKEYDATA(pe, kd, len, etype) { \\$/
PUT_PAGE ../db/db_upg_opd.c /^#define PUT_PAGE(dbp, fhp, pgno, page) { \\$/
PUT_PCOUNT ../lock/lock_list.c /^#define PUT_PCOUNT(dp, count) do { u_int16_t *ip =/
PUT_PGNO ../lock/lock_list.c /^#define PUT_PGNO(dp, pgno) do { db_pgno_t *ip = (d/
@@ -1534,34 +1916,34 @@ P_32_COPY ../dbinc/db_swap.h /^#define P_32_COPY(a, b) { \\$/
P_32_SWAP ../dbinc/db_swap.h /^#define P_32_SWAP(a) { \\$/
P_64_COPY ../dbinc/db_swap.h /^#define P_64_COPY(a, b) { \\$/
P_64_SWAP ../dbinc/db_swap.h /^#define P_64_SWAP(a) { \\$/
-P_BTREEMETA ../dbinc/db_page.h /^#define P_BTREEMETA 9 \/* Btree metadata page. *\//
+P_BTREEMETA ../dbinc/db_page.h 45
P_CHKSUM ../dbinc/db_page.h /^#define P_CHKSUM(dbp, pg) \\$/
-P_DONTEXTEND ../dbinc/db_page.h /^#define P_DONTEXTEND 0x8000 \/* Don't allocate if /
+P_DONTEXTEND ../dbinc/db_page.h 52
P_ENTRY ../dbinc/db_page.h /^#define P_ENTRY(dbp, pg, indx) ((u_int8_t *)pg + P/
P_FREESPACE ../dbinc/db_page.h /^#define P_FREESPACE(dbp, pg) (HOFFSET(pg) - LOFFSE/
-P_HASH ../dbinc/db_page.h /^#define P_HASH 2 \/* Hash. *\/$/
-P_HASHMETA ../dbinc/db_page.h /^#define P_HASHMETA 8 \/* Hash metadata page. *\/$/
-P_IBTREE ../dbinc/db_page.h /^#define P_IBTREE 3 \/* Btree internal. *\/$/
-P_INDX ../dbinc/db_page.h /^#define P_INDX 2$/
+P_HASH ../dbinc/db_page.h 49
+P_HASHMETA ../dbinc/db_page.h 44
+P_HASH_UNSORTED ../dbinc/db_page.h 38
+P_IBTREE ../dbinc/db_page.h 39
+P_INDX ../dbinc/db_page.h 604
P_INIT ../dbinc/db_page.h /^#define P_INIT(pg, pg_size, n, pg_prev, pg_next, b/
P_INP ../dbinc/db_page.h /^#define P_INP(dbp, pg) \\$/
-P_INVALID ../dbinc/db_page.h /^#define P_INVALID 0 \/* Invalid page type. *\/$/
-P_IRECNO ../dbinc/db_page.h /^#define P_IRECNO 4 \/* Recno internal. *\/$/
+P_INVALID ../dbinc/db_page.h 36
+P_IRECNO ../dbinc/db_page.h 40
P_IV ../dbinc/db_page.h /^#define P_IV(dbp, pg) \\$/
-P_LBTREE ../dbinc/db_page.h /^#define P_LBTREE 5 \/* Btree leaf. *\/$/
-P_LDUP ../dbinc/db_page.h /^#define P_LDUP 12 \/* Off-page duplicate leaf. */
-P_LRECNO ../dbinc/db_page.h /^#define P_LRECNO 6 \/* Recno leaf. *\/$/
+P_LBTREE ../dbinc/db_page.h 41
+P_LDUP ../dbinc/db_page.h 48
+P_LRECNO ../dbinc/db_page.h 42
P_MAXSPACE ../dbinc/db_page.h /^#define P_MAXSPACE(dbp, psize) ((psize) - P_OVERHE/
-P_OVERFLOW ../dbinc/db_page.h /^#define P_OVERFLOW 7 \/* Overflow. *\/$/
+P_OVERFLOW ../dbinc/db_page.h 43
P_OVERHEAD ../dbinc/db_page.h /^#define P_OVERHEAD(dbp) P_TO_UINT16(P_INP(dbp, 0))/
P_OVFLSPACE ../dbinc/db_page.h /^#define P_OVFLSPACE(dbp, psize, pg) (P_MAXSPACE(db/
-P_PAGETYPE_MAX ../dbinc/db_page.h /^#define P_PAGETYPE_MAX 13$/
-P_QAMDATA ../dbinc/db_page.h /^#define P_QAMDATA 11 \/* Queue data page. *\/$/
-P_QAMMETA ../dbinc/db_page.h /^#define P_QAMMETA 10 \/* Queue metadata page. *\/$/
+P_PAGETYPE_MAX ../dbinc/db_page.h 50
+P_QAMDATA ../dbinc/db_page.h 47
+P_QAMMETA ../dbinc/db_page.h 46
P_TO_UINT16 ../dbinc/db_int.in /^#define P_TO_UINT16(p) ((u_int16_t)(uintptr_t)(p))/
P_TO_UINT32 ../dbinc/db_int.in /^#define P_TO_UINT32(p) ((u_int32_t)(uintptr_t)(p))/
P_TO_ULONG ../dbinc/db_int.in /^#define P_TO_ULONG(p) ((u_long)(uintptr_t)(p))$/
-QAMDATA ../dbinc/qam.h /^} QAMDATA;$/
QAM_AFTER_CURRENT ../dbinc/qam.h /^#define QAM_AFTER_CURRENT(meta, recno) \\$/
QAM_BEFORE_FIRST ../dbinc/qam.h /^#define QAM_BEFORE_FIRST(meta, recno) \\$/
QAM_DIRTY ../qam/qam_rec.c /^#define QAM_DIRTY(dbp, pgno, pagep) \\$/
@@ -1573,216 +1955,214 @@ QAM_RECNO_EXTENT ../dbinc/qam.h /^#define QAM_RECNO_EXTENT(dbp, recno) \\$/
QAM_RECNO_INDEX ../dbinc/qam.h /^#define QAM_RECNO_INDEX(dbp, pgno, recno) \\$/
QAM_RECNO_PAGE ../dbinc/qam.h /^#define QAM_RECNO_PAGE(dbp, recno) \\$/
QAM_RECNO_PER_PAGE ../dbinc/qam.h /^#define QAM_RECNO_PER_PAGE(dbp) (((QUEUE*)(dbp)->q/
-QAM_SET ../dbinc/qam.h /^#define QAM_SET 0x02$/
-QAM_SETCUR ../dbinc/qam.h /^#define QAM_SETCUR 0x02$/
-QAM_SETFIRST ../dbinc/qam.h /^#define QAM_SETFIRST 0x01$/
-QAM_TRUNCATE ../dbinc/qam.h /^#define QAM_TRUNCATE 0x04$/
-QAM_VALID ../dbinc/qam.h /^#define QAM_VALID 0x01$/
-QDEBUG ../qam/qam.c /^#define QDEBUG$/
+QAM_SET ../dbinc/qam.h 22
+QAM_SETCUR ../dbinc/qam.h 145
+QAM_SETFIRST ../dbinc/qam.h 144
+QAM_TRUNCATE ../dbinc/qam.h 146
+QAM_VALID ../dbinc/qam.h 21
+QDEBUG ../qam/qam.c 644
QMD_TRACE_ELEM ../dbinc/queue.h /^#define QMD_TRACE_ELEM(elem) do { \\$/
QMD_TRACE_HEAD ../dbinc/queue.h /^#define QMD_TRACE_HEAD(head) do { \\$/
-QMETA ../dbinc/db_page.h /^} QMETA33, QMETA;$/
-QMETA30 ../dbinc/db_upgrade.h /^} QMETA30;$/
-QMETA31 ../dbinc/db_upgrade.h /^} QMETA31;$/
-QMETA32 ../dbinc/db_upgrade.h /^} QMETA32;$/
-QPAGE ../dbinc/db_page.h /^} QPAGE;$/
-QPAGE_CHKSUM ../dbinc/db_page.h /^#define QPAGE_CHKSUM 48$/
-QPAGE_NORMAL ../dbinc/db_page.h /^#define QPAGE_NORMAL 28$/
-QPAGE_SEC ../dbinc/db_page.h /^#define QPAGE_SEC 64$/
+QPAGE_CHKSUM ../dbinc/db_page.h 295
+QPAGE_NORMAL ../dbinc/db_page.h 294
+QPAGE_SEC ../dbinc/db_page.h 296
QPAGE_SZ ../dbinc/db_page.h /^#define QPAGE_SZ(dbp) \\$/
-QUEUE ../dbinc/qam.h /^struct __queue; typedef struct __queue QUEUE;$/
-QUEUED_OUTPUT ../dbinc/repmgr.h /^struct __queued_output; typedef struct __queued_ou/
-QUEUE_CURSOR ../dbinc/qam.h /^struct __qcursor; typedef struct __qcursor QUEUE_C/
-QUEUE_EXTENT ../dbinc/qam.h /^#define QUEUE_EXTENT "%s%c__dbq.%s.%d"$/
-QUEUE_EXTENT_HEAD ../dbinc/qam.h /^#define QUEUE_EXTENT_HEAD "__dbq.%s."$/
-QUEUE_EXTENT_PREFIX ../dbinc/qam.h /^#define QUEUE_EXTENT_PREFIX "__dbq."$/
-QUEUE_FILELIST ../dbinc/qam.h /^} QUEUE_FILELIST;$/
-QUEUE_MACRO_DEBUG ../dbinc/queue.h /^#define QUEUE_MACRO_DEBUG 0$/
-R0 ../hmac/sha1.c /^#define R0(v,w,x,y,z,i) z+=((w&(x^y))^y)+blk0(i)+0/
-R1 ../hmac/sha1.c /^#define R1(v,w,x,y,z,i) z+=((w&(x^y))^y)+blk(i)+0x/
-R2 ../hmac/sha1.c /^#define R2(v,w,x,y,z,i) z+=(w^x^y)+blk(i)+0x6ED9EB/
-R3 ../hmac/sha1.c /^#define R3(v,w,x,y,z,i) z+=(((w|x)&y)|(w&x))+blk(i/
-R4 ../hmac/sha1.c /^#define R4(v,w,x,y,z,i) z+=(w^x^y)+blk(i)+0xCA62C1/
-RECNO ../dbinc/btree.h /^struct __recno; typedef struct __recno RECNO;$/
-RECNOINFO ../dbinc/db_185.in /^} RECNOINFO;$/
-RECNO_OOB ../dbinc/db_int.in /^#define RECNO_OOB 0 \/* Illegal record number. */
-RECOVERING_LOG_SKIP ../rep/rep_record.c /^#define RECOVERING_LOG_SKIP do { \\$/
-RECOVERING_SKIP ../rep/rep_record.c /^#define RECOVERING_SKIP do { \\$/
-REC_CLOSE ../dbinc/db_am.h /^#define REC_CLOSE { \\$/
-REC_DIRTY ../dbinc/db_am.h /^#define REC_DIRTY(mpf, pagep) \\$/
+QUEUE ../dbinc/qam.h 26
+QUEUED_OUTPUT ../dbinc/repmgr.h 53
+QUEUE_CURSOR ../dbinc/qam.h 27
+QUEUE_EXTENT ../dbinc/qam.h 75
+QUEUE_EXTENT_HEAD ../dbinc/qam.h 76
+QUEUE_EXTENT_PREFIX ../dbinc/qam.h 77
+QUEUE_MACRO_DEBUG ../dbinc/queue.h 182
+R0 ../hmac/sha1.c /^#define R0(v,w,x,y,z,i) z+=((w&(x^y))^y)+blk0(i)+0/
+R1 ../hmac/sha1.c /^#define R1(v,w,x,y,z,i) z+=((w&(x^y))^y)+blk(i)+0x/
+R2 ../hmac/sha1.c /^#define R2(v,w,x,y,z,i) z+=(w^x^y)+blk(i)+0x6ED9EB/
+R3 ../hmac/sha1.c /^#define R3(v,w,x,y,z,i) z+=(((w|x)&y)|(w&x))+blk(i/
+R4 ../hmac/sha1.c /^#define R4(v,w,x,y,z,i) z+=(w^x^y)+blk(i)+0xCA62C1/
+RECNO ../dbinc/btree.h 54
+RECNO_OOB ../dbinc/db_int.in 128
+RECOVERING_LOG_SKIP ../rep/rep_record.c 107
+RECOVERING_SKIP ../rep/rep_record.c 91
+REC_CLOSE ../dbinc/db_am.h 75
+REC_DIRTY ../dbinc/db_am.h /^#define REC_DIRTY(mpf, priority, pagep) \\$/
REC_FGET ../dbinc/db_am.h /^#define REC_FGET(mpf, pgno, pagep, cont) \\$/
REC_INTRO ../dbinc/db_am.h /^#define REC_INTRO(func, inc_count, do_cursor) do {/
-REC_NOOP_CLOSE ../dbinc/db_am.h /^#define REC_NOOP_CLOSE \\$/
+REC_NOOP_CLOSE ../dbinc/db_am.h 93
REC_NOOP_INTRO ../dbinc/db_am.h /^#define REC_NOOP_INTRO(func) do { \\$/
REC_PRINT ../dbinc/db_am.h /^#define REC_PRINT(func) \\$/
-REGENV ../dbinc/region.h /^} REGENV;$/
-REGENV_REF ../dbinc/region.h /^} REGENV_REF;$/
-REGINFO ../dbinc/db_int.in /^struct __db_reginfo_t; typedef struct __db_reginfo/
-REGION ../dbinc/region.h /^} REGION;$/
-REGION_CREATE ../dbinc/region.h /^#define REGION_CREATE 0x01 \/* Caller created reg/
-REGION_CREATE_OK ../dbinc/region.h /^#define REGION_CREATE_OK 0x02 \/* Caller willing t/
-REGION_ID_ENV ../dbinc/region.h /^#define REGION_ID_ENV 1 \/* Primary environment I/
-REGION_JOIN_OK ../dbinc/region.h /^#define REGION_JOIN_OK 0x04 \/* Caller is looking/
-REGISTER_FILE ../env/env_register.c /^#define REGISTER_FILE "__db.register"$/
+REGINFO ../dbinc/db_int.in 700
+REGION_CREATE ../dbinc/region.h 249
+REGION_CREATE_OK ../dbinc/region.h 250
+REGION_ID_ENV ../dbinc/region.h 121
+REGION_JOIN_OK ../dbinc/region.h 251
+REGISTER_FILE ../env/env_register.c 13
REGISTRY_EXCL_LOCK ../env/env_register.c /^#define REGISTRY_EXCL_LOCK(dbenv, nowait) \\$/
REGISTRY_EXCL_UNLOCK ../env/env_register.c /^#define REGISTRY_EXCL_UNLOCK(dbenv) \\$/
REGISTRY_LOCK ../env/env_register.c /^#define REGISTRY_LOCK(dbenv, pos, nowait) \\$/
REGISTRY_UNLOCK ../env/env_register.c /^#define REGISTRY_UNLOCK(dbenv, pos) \\$/
-REP ../dbinc/rep.h /^} REP;$/
-REPCTL_ELECTABLE ../dbinc/rep.h /^#define REPCTL_ELECTABLE 0x01 \/* Upgraded client /
-REPCTL_INIT ../dbinc/rep.h /^#define REPCTL_INIT 0x02 \/* Internal init messag/
-REPCTL_PERM ../dbinc/rep.h /^#define REPCTL_PERM DB_LOG_PERM_42_44$/
-REPCTL_RESEND ../dbinc/rep.h /^#define REPCTL_RESEND DB_LOG_RESEND_42_44$/
-REPDBNAME ../dbinc/rep.h /^#define REPDBNAME "__db.rep.db"$/
+REPCTL_ELECTABLE ../dbinc/rep.h 538
+REPCTL_FLUSH ../dbinc/rep.h 539
+REPCTL_GROUP_ESTD ../dbinc/rep.h 540
+REPCTL_INIT ../dbinc/rep.h 541
+REPCTL_LEASE ../dbinc/rep.h 542
+REPCTL_LOG_END ../dbinc/rep.h 547
+REPCTL_PERM ../dbinc/rep.h 548
+REPCTL_RESEND ../dbinc/rep.h 549
+REPDBNAME ../dbinc/rep.h 21
REPLICATION_WRAP ../dbinc/rep.h /^#define REPLICATION_WRAP(dbenv, func_call, ret) do/
-REPMGR_ACK ../dbinc/repmgr.h /^#define REPMGR_ACK 1 \/* Acknowledgement. *\/$/
-REPMGR_CONNECTION ../dbinc/repmgr.h /^struct __repmgr_connection;$/
-REPMGR_FLAT ../dbinc/repmgr.h /^} REPMGR_FLAT;$/
-REPMGR_HANDSHAKE ../dbinc/repmgr.h /^#define REPMGR_HANDSHAKE 2 \/* Connection establis/
-REPMGR_IOVECS ../dbinc/repmgr.h /^} REPMGR_IOVECS;$/
-REPMGR_MESSAGE ../dbinc/repmgr.h /^} REPMGR_MESSAGE;$/
-REPMGR_QUEUE ../dbinc/repmgr.h /^struct __repmgr_queue; typedef struct __repmgr_que/
-REPMGR_REP_MESSAGE ../dbinc/repmgr.h /^#define REPMGR_REP_MESSAGE 3 \/* Normal replicatio/
-REPMGR_RETRY ../dbinc/repmgr.h /^struct __repmgr_retry; typedef struct __repmgr_ret/
-REPMGR_RUNNABLE ../dbinc/repmgr.h /^struct __repmgr_runnable; typedef struct __repmgr_/
-REPMGR_SITE ../dbinc/repmgr.h /^struct __repmgr_site; typedef struct __repmgr_site/
+REPMGR_ACK ../dbinc/repmgr.h 20
+REPMGR_CONNECTION ../dbinc/repmgr.h 51
+REPMGR_HANDSHAKE ../dbinc/repmgr.h 21
+REPMGR_QUEUE ../dbinc/repmgr.h 52
+REPMGR_REP_MESSAGE ../dbinc/repmgr.h 22
+REPMGR_RETRY ../dbinc/repmgr.h 54
+REPMGR_RUNNABLE ../dbinc/repmgr.h 55
+REPMGR_SITE ../dbinc/repmgr.h 56
REPMGR_SYNC_INITED ../dbinc/repmgr.h /^#define REPMGR_SYNC_INITED(db_rep) (db_rep->waiter/
-REPPAGENAME ../dbinc/rep.h /^#define REPPAGENAME "__db.reppg.db"$/
-REP_ALIVE ../dbinc/rep.h /^#define REP_ALIVE 1 \/* I am alive message. *\/$/
-REP_ALIVE_REQ ../dbinc/rep.h /^#define REP_ALIVE_REQ 2 \/* Request for alive mess/
-REP_ALL_REQ ../dbinc/rep.h /^#define REP_ALL_REQ 3 \/* Request all log records /
-REP_BULK ../dbinc/rep.h /^} REP_BULK;$/
-REP_BULK_LOG ../dbinc/rep.h /^#define REP_BULK_LOG 4 \/* Bulk transfer of log re/
-REP_BULK_PAGE ../dbinc/rep.h /^#define REP_BULK_PAGE 5 \/* Bulk transfer of pages/
-REP_CONTROL ../dbinc/rep.h /^} REP_CONTROL;$/
-REP_C_BULK ../dbinc/rep.h /^#define REP_C_BULK 0x00001 \/* Bulk transfer. */
-REP_C_DELAYCLIENT ../dbinc/rep.h /^#define REP_C_DELAYCLIENT 0x00002 \/* Delay clien/
-REP_C_NOAUTOINIT ../dbinc/rep.h /^#define REP_C_NOAUTOINIT 0x00004 \/* No auto init/
-REP_C_NOWAIT ../dbinc/rep.h /^#define REP_C_NOWAIT 0x00008 \/* Immediate error/
-REP_DUPMASTER ../dbinc/rep.h /^#define REP_DUPMASTER 6 \/* Duplicate master detec/
-REP_EGENNAME ../dbinc/rep.h /^#define REP_EGENNAME "__db.rep.egen"$/
-REP_FILE ../dbinc/rep.h /^#define REP_FILE 7 \/* Page of a database file. NO/
-REP_FILE_FAIL ../dbinc/rep.h /^#define REP_FILE_FAIL 8 \/* File requested does no/
-REP_FILE_REQ ../dbinc/rep.h /^#define REP_FILE_REQ 9 \/* Request for a database /
-REP_F_CLIENT ../dbinc/rep.h /^#define REP_F_CLIENT 0x00001 \/* Client replica./
-REP_F_DELAY ../dbinc/rep.h /^#define REP_F_DELAY 0x00002 \/* Delaying client /
-REP_F_EPHASE1 ../dbinc/rep.h /^#define REP_F_EPHASE1 0x00004 \/* In phase 1 of /
-REP_F_EPHASE2 ../dbinc/rep.h /^#define REP_F_EPHASE2 0x00008 \/* In phase 2 of /
-REP_F_MASTER ../dbinc/rep.h /^#define REP_F_MASTER 0x00010 \/* Master replica./
-REP_F_MASTERELECT ../dbinc/rep.h /^#define REP_F_MASTERELECT 0x00020 \/* Master elec/
-REP_F_NOARCHIVE ../dbinc/rep.h /^#define REP_F_NOARCHIVE 0x00040 \/* Rep blocks l/
-REP_F_READY ../dbinc/rep.h /^#define REP_F_READY 0x00080 \/* Wait for txn_cnt/
-REP_F_RECOVER_LOG ../dbinc/rep.h /^#define REP_F_RECOVER_LOG 0x00100 \/* In recovery/
-REP_F_RECOVER_MASK ../dbinc/rep.h /^#define REP_F_RECOVER_MASK \\$/
-REP_F_RECOVER_PAGE ../dbinc/rep.h /^#define REP_F_RECOVER_PAGE 0x00200 \/* In recover/
-REP_F_RECOVER_UPDATE ../dbinc/rep.h /^#define REP_F_RECOVER_UPDATE 0x00400 \/* In recov/
-REP_F_RECOVER_VERIFY ../dbinc/rep.h /^#define REP_F_RECOVER_VERIFY 0x00800 \/* In recov/
-REP_F_TALLY ../dbinc/rep.h /^#define REP_F_TALLY 0x01000 \/* Tallied vote bef/
-REP_GAP_FORCE ../dbinc/rep.h /^#define REP_GAP_FORCE 0x001 \/* Force a request f/
-REP_GAP_REREQUEST ../dbinc/rep.h /^#define REP_GAP_REREQUEST 0x002 \/* Gap request is/
-REP_INVALID ../dbinc/rep.h /^#define REP_INVALID 0 \/* Invalid message type. */
-REP_LOG ../dbinc/rep.h /^#define REP_LOG 10 \/* Log record. *\/$/
-REP_LOG_MORE ../dbinc/rep.h /^#define REP_LOG_MORE 11 \/* There are more log rec/
-REP_LOG_REQ ../dbinc/rep.h /^#define REP_LOG_REQ 12 \/* Request for a log recor/
-REP_MASTER_REQ ../dbinc/rep.h /^#define REP_MASTER_REQ 13 \/* Who is the master */
-REP_MAX_MSG ../dbinc/rep.h /^#define REP_MAX_MSG 29$/
+REPPAGENAME ../dbinc/rep.h 22
+REP_ALIVE ../dbinc/rep.h 28
+REP_ALIVE_REQ ../dbinc/rep.h 29
+REP_ALL_REQ ../dbinc/rep.h 30
+REP_BULK_LOG ../dbinc/rep.h 31
+REP_BULK_PAGE ../dbinc/rep.h 32
+REP_C_BULK ../dbinc/rep.h 287
+REP_C_DELAYCLIENT ../dbinc/rep.h 288
+REP_C_LEASE ../dbinc/rep.h 289
+REP_C_NOAUTOINIT ../dbinc/rep.h 290
+REP_C_NOWAIT ../dbinc/rep.h 291
+REP_DEFAULT_THROTTLE ../dbinc/rep.h 206
+REP_DUPMASTER ../dbinc/rep.h 33
+REP_EGENNAME ../dbinc/rep.h 135
+REP_EVENT_LOCK ../dbinc/rep.h /^#define REP_EVENT_LOCK(dbenv) \\$/
+REP_EVENT_UNLOCK ../dbinc/rep.h /^#define REP_EVENT_UNLOCK(dbenv) \\$/
+REP_FILE ../dbinc/rep.h 34
+REP_FILE_FAIL ../dbinc/rep.h 35
+REP_FILE_REQ ../dbinc/rep.h 36
+REP_F_CLIENT ../dbinc/rep.h 294
+REP_F_DELAY ../dbinc/rep.h 295
+REP_F_EGENUPDATE ../dbinc/rep.h 296
+REP_F_EPHASE0 ../dbinc/rep.h 297
+REP_F_EPHASE1 ../dbinc/rep.h 298
+REP_F_EPHASE2 ../dbinc/rep.h 299
+REP_F_GROUP_ESTD ../dbinc/rep.h 300
+REP_F_INREPELECT ../dbinc/rep.h 301
+REP_F_INTERNAL_INIT_MASK ../dbinc/rep.h 344
+REP_F_MASTER ../dbinc/rep.h 302
+REP_F_MASTERELECT ../dbinc/rep.h 303
+REP_F_NEWFILE ../dbinc/rep.h 304
+REP_F_NOARCHIVE ../dbinc/rep.h 305
+REP_F_READY_API ../dbinc/rep.h 306
+REP_F_READY_APPLY ../dbinc/rep.h 307
+REP_F_READY_MSG ../dbinc/rep.h 308
+REP_F_READY_OP ../dbinc/rep.h 309
+REP_F_RECOVER_LOG ../dbinc/rep.h 310
+REP_F_RECOVER_MASK ../dbinc/rep.h 328
+REP_F_RECOVER_PAGE ../dbinc/rep.h 311
+REP_F_RECOVER_UPDATE ../dbinc/rep.h 312
+REP_F_RECOVER_VERIFY ../dbinc/rep.h 313
+REP_F_SKIPPED_APPLY ../dbinc/rep.h 314
+REP_F_START_CALLED ../dbinc/rep.h 315
+REP_F_TALLY ../dbinc/rep.h 316
+REP_GAP_FORCE ../dbinc/rep.h 376
+REP_GAP_REREQUEST ../dbinc/rep.h 377
+REP_GENNAME ../dbinc/rep.h 136
+REP_INITNAME ../dbinc/rep.h 152
+REP_INVALID ../dbinc/rep.h 27
+REP_LEASE_GRANT ../dbinc/rep.h 37
+REP_LOG ../dbinc/rep.h 38
+REP_LOG_MORE ../dbinc/rep.h 39
+REP_LOG_REQ ../dbinc/rep.h 40
+REP_MASTER_REQ ../dbinc/rep.h 41
+REP_MAX_MSG ../dbinc/rep.h 72
REP_MSG_REQ ../dbinc/rep.h /^#define REP_MSG_REQ(rectype) \\$/
-REP_NEWCLIENT ../dbinc/rep.h /^#define REP_NEWCLIENT 14 \/* Announces the presenc/
-REP_NEWFILE ../dbinc/rep.h /^#define REP_NEWFILE 15 \/* Announce a log file cha/
-REP_NEWMASTER ../dbinc/rep.h /^#define REP_NEWMASTER 16 \/* Announces who the mas/
-REP_NEWSITE ../dbinc/rep.h /^#define REP_NEWSITE 17 \/* Announces that a site h/
-REP_OLD_VOTE_INFO ../dbinc/rep.h /^} REP_OLD_VOTE_INFO;$/
+REP_NEWCLIENT ../dbinc/rep.h 42
+REP_NEWFILE ../dbinc/rep.h 43
+REP_NEWMASTER ../dbinc/rep.h 44
+REP_NEWSITE ../dbinc/rep.h 45
REP_ON ../dbinc/db_int.in /^#define REP_ON(dbenv) \\$/
-REP_PAGE ../dbinc/rep.h /^#define REP_PAGE 18 \/* Database page. *\/$/
-REP_PAGE_FAIL ../dbinc/rep.h /^#define REP_PAGE_FAIL 19 \/* Requested page does n/
-REP_PAGE_MORE ../dbinc/rep.h /^#define REP_PAGE_MORE 20 \/* There are more pages /
-REP_PAGE_REQ ../dbinc/rep.h /^#define REP_PAGE_REQ 21 \/* Request for a database/
+REP_PAGE ../dbinc/rep.h 51
+REP_PAGE_FAIL ../dbinc/rep.h 52
+REP_PAGE_MORE ../dbinc/rep.h 53
+REP_PAGE_REQ ../dbinc/rep.h 54
REP_PRINT_MESSAGE ../dbinc/rep.h /^#define REP_PRINT_MESSAGE(dbenv, eid, rp, str, fl)/
-REP_REREQUEST ../dbinc/rep.h /^#define REP_REREQUEST 22 \/* Force rerequest. *\/$/
+REP_REREQUEST ../dbinc/rep.h 55
+REP_START_SYNC ../dbinc/rep.h 56
REP_SYSTEM_LOCK ../dbinc/rep.h /^#define REP_SYSTEM_LOCK(dbenv) \\$/
REP_SYSTEM_UNLOCK ../dbinc/rep.h /^#define REP_SYSTEM_UNLOCK(dbenv) \\$/
-REP_THROTTLE ../dbinc/rep.h /^} REP_THROTTLE;$/
-REP_THROTTLE_ONLY ../dbinc/rep.h /^#define REP_THROTTLE_ONLY 0x0001 \/* Send _MORE me/
-REP_UPDATE ../dbinc/rep.h /^#define REP_UPDATE 23 \/* Environment hotcopy info/
-REP_UPDATE_REQ ../dbinc/rep.h /^#define REP_UPDATE_REQ 24 \/* Request for hotcopy /
-REP_VERIFY ../dbinc/rep.h /^#define REP_VERIFY 25 \/* A log record for verific/
-REP_VERIFY_FAIL ../dbinc/rep.h /^#define REP_VERIFY_FAIL 26 \/* The client is outda/
-REP_VERIFY_REQ ../dbinc/rep.h /^#define REP_VERIFY_REQ 27 \/* Request for a log re/
-REP_VOTE1 ../dbinc/rep.h /^#define REP_VOTE1 28 \/* Send out your information/
-REP_VOTE2 ../dbinc/rep.h /^#define REP_VOTE2 29 \/* Send a "you are master" v/
-REP_VOTE_INFO ../dbinc/rep.h /^} REP_VOTE_INFO;$/
-REP_VTALLY ../dbinc/rep.h /^} REP_VTALLY;$/
+REP_THROTTLE_ONLY ../dbinc/rep.h 614
+REP_UPDATE ../dbinc/rep.h 57
+REP_UPDATE_REQ ../dbinc/rep.h 58
+REP_VERIFY ../dbinc/rep.h 59
+REP_VERIFY_FAIL ../dbinc/rep.h 60
+REP_VERIFY_REQ ../dbinc/rep.h 61
+REP_VOTE1 ../dbinc/rep.h 62
+REP_VOTE2 ../dbinc/rep.h 63
RESET_MPF ../fileops/fop_util.c /^#define RESET_MPF(D, F) do { \\$/
RESET_RET_MEM ../dbinc/db_int.in /^#define RESET_RET_MEM(dbc) \\$/
-RESTORE_START ../btree/bt_compact.c /^#define RESTORE_START \\$/
+RESTORE_START ../btree/bt_compact.c 56
RETRY_CHK ../dbinc/os.h /^#define RETRY_CHK(op, ret) do { \\$/
RETRY_CHK_EINTR_ONLY ../dbinc/os.h /^#define RETRY_CHK_EINTR_ONLY(op, ret) do { \\$/
-RETRY_Q_HEADER ../dbinc/repmgr.h /^typedef TAILQ_HEAD(__repmgr_retry_q, __repmgr_retr/
-RET_ERROR ../dbinc/db_185.in /^#define RET_ERROR -1 \/* Return values. *\/$/
+RET_ERROR ../dbinc/db_185.in 61
RET_SET ../mutex/mut_pthread.c /^#define RET_SET(f, ret) do { \\$/
RET_SIZE ../lock/lock_list.c /^#define RET_SIZE(size, count) ((size) + \\$/
-RET_SPECIAL ../dbinc/db_185.in /^#define RET_SPECIAL 1$/
-RET_SUCCESS ../dbinc/db_185.in /^#define RET_SUCCESS 0$/
+RET_SPECIAL ../dbinc/db_185.in 63
+RET_SUCCESS ../dbinc/db_185.in 62
RE_NREC ../dbinc/db_page.h /^#define RE_NREC(p) \\$/
RE_NREC_ADJ ../dbinc/db_page.h /^#define RE_NREC_ADJ(p, adj) \\$/
RE_NREC_SET ../dbinc/db_page.h /^#define RE_NREC_SET(p, num) \\$/
RINGBUF_LEN ../dbinc/log.h /^#define RINGBUF_LEN(lp, start, end) \\$/
-RINTERNAL ../dbinc/db_page.h /^} RINTERNAL;$/
-RINTERNAL_PSIZE ../dbinc/db_page.h /^#define RINTERNAL_PSIZE \\$/
-RINTERNAL_SIZE ../dbinc/db_page.h /^#define RINTERNAL_SIZE \\$/
-RLOCK ../log/log_get.c /^typedef enum { L_ALREADY, L_ACQUIRED, L_NONE } RLO/
-RMNAMESZ ../dbinc/xa.h /^#define RMNAMESZ 32 \/* length of resource manage/
+RINTERNAL_PSIZE ../dbinc/db_page.h 657
+RINTERNAL_SIZE ../dbinc/db_page.h 655
+RLOCK ../log/log_get.c 18
+RMNAMESZ ../dbinc/xa.h 47
RPC_ON ../dbinc/db_int.in /^#define RPC_ON(dbenv) ((dbenv)->cl_handle != NULL/
-RPRINT ../dbinc/rep.h /^#define RPRINT(e, x) do { \\$/
-RSMSG ../db185/db185.c /^#define RSMSG \\$/
+RPRINT ../dbinc/rep.h /^#define RPRINT(dbenv, x) do { \\$/
+RSMSG ../db185/db185.c 519
R_ADDR ../dbinc/region.h /^#define R_ADDR(reginfop, offset) \\$/
-R_CURSOR ../dbinc/db_185.in /^#define R_CURSOR 1 \/* del, put, seq *\/$/
-R_DUP ../dbinc/db_185.in /^#define R_DUP 0x01 \/* duplicate keys *\/$/
-R_FIRST ../dbinc/db_185.in /^#define R_FIRST 3 \/* seq *\/$/
-R_FIXEDLEN ../dbinc/db_185.in /^#define R_FIXEDLEN 0x01 \/* fixed-length records */
-R_IAFTER ../dbinc/db_185.in /^#define R_IAFTER 4 \/* put (RECNO) *\/$/
-R_IBEFORE ../dbinc/db_185.in /^#define R_IBEFORE 5 \/* put (RECNO) *\/$/
-R_LAST ../dbinc/db_185.in /^#define R_LAST 6 \/* seq (BTREE, RECNO) *\/$/
-R_NEXT ../dbinc/db_185.in /^#define R_NEXT 7 \/* seq *\/$/
-R_NOKEY ../dbinc/db_185.in /^#define R_NOKEY 0x02 \/* key not required *\/$/
-R_NOOVERWRITE ../dbinc/db_185.in /^#define R_NOOVERWRITE 8 \/* put *\/$/
+R_CURSOR ../dbinc/db_185.in 96
+R_DUP ../dbinc/db_185.in 128
+R_FIRST ../dbinc/db_185.in 98
+R_FIXEDLEN ../dbinc/db_185.in 157
+R_IAFTER ../dbinc/db_185.in 99
+R_IBEFORE ../dbinc/db_185.in 100
+R_LAST ../dbinc/db_185.in 101
+R_NEXT ../dbinc/db_185.in 102
+R_NOKEY ../dbinc/db_185.in 158
+R_NOOVERWRITE ../dbinc/db_185.in 103
R_OFFSET ../dbinc/region.h /^#define R_OFFSET(reginfop, p) \\$/
-R_PREV ../dbinc/db_185.in /^#define R_PREV 9 \/* seq (BTREE, RECNO) *\/$/
-R_RECNOSYNC ../dbinc/db_185.in /^#define R_RECNOSYNC 11 \/* sync (RECNO) *\/$/
-R_SETCURSOR ../dbinc/db_185.in /^#define R_SETCURSOR 10 \/* put (RECNO) *\/$/
-R_SNAPSHOT ../dbinc/db_185.in /^#define R_SNAPSHOT 0x04 \/* snapshot the input *\//
-SALVAGE_HASH ../dbinc/db_verify.h /^#define SALVAGE_HASH 6$/
-SALVAGE_IGNORE ../dbinc/db_verify.h /^#define SALVAGE_IGNORE 1$/
-SALVAGE_INVALID ../dbinc/db_verify.h /^#define SALVAGE_INVALID 0$/
-SALVAGE_LBTREE ../dbinc/db_verify.h /^#define SALVAGE_LBTREE 5$/
-SALVAGE_LDUP ../dbinc/db_verify.h /^#define SALVAGE_LDUP 2$/
-SALVAGE_LRECNO ../dbinc/db_verify.h /^#define SALVAGE_LRECNO 7$/
-SALVAGE_LRECNODUP ../dbinc/db_verify.h /^#define SALVAGE_LRECNODUP 3$/
-SALVAGE_OVERFLOW ../dbinc/db_verify.h /^#define SALVAGE_OVERFLOW 4$/
-SALVAGE_PRINTABLE ../dbinc/db_verify.h /^#define SALVAGE_PRINTABLE 0x01 \/* Output printabl/
-SALVAGE_PRINTFOOTER ../dbinc/db_verify.h /^#define SALVAGE_PRINTFOOTER 0x04 \/* Print the unk/
-SALVAGE_PRINTHEADER ../dbinc/db_verify.h /^#define SALVAGE_PRINTHEADER 0x02 \/* Print the unk/
-SAVE_START ../btree/bt_compact.c /^#define SAVE_START \\$/
-SA_SKIPFIRSTKEY ../dbinc/db_verify.h /^#define SA_SKIPFIRSTKEY 0x00080000$/
-SELF_EID ../dbinc/repmgr.h /^#define SELF_EID INT_MAX$/
+R_PREV ../dbinc/db_185.in 104
+R_RECNOSYNC ../dbinc/db_185.in 106
+R_SETCURSOR ../dbinc/db_185.in 105
+R_SNAPSHOT ../dbinc/db_185.in 159
+SALVAGE_HASH ../dbinc/db_verify.h 106
+SALVAGE_IGNORE ../dbinc/db_verify.h 101
+SALVAGE_INVALID ../dbinc/db_verify.h 100
+SALVAGE_LBTREE ../dbinc/db_verify.h 105
+SALVAGE_LDUP ../dbinc/db_verify.h 102
+SALVAGE_LRECNO ../dbinc/db_verify.h 107
+SALVAGE_LRECNODUP ../dbinc/db_verify.h 103
+SALVAGE_OVERFLOW ../dbinc/db_verify.h 104
+SALVAGE_PRINTABLE ../dbinc/db_verify.h 133
+SALVAGE_PRINTFOOTER ../dbinc/db_verify.h 135
+SALVAGE_PRINTHEADER ../dbinc/db_verify.h 134
+SAVE_START ../btree/bt_compact.c 43
+SA_SKIPFIRSTKEY ../dbinc/db_verify.h 63
+SELF_EID ../dbinc/repmgr.h 307
SEQ_ILLEGAL_AFTER_OPEN ../sequence/sequence.c /^#define SEQ_ILLEGAL_AFTER_OPEN(seq, name) \\$/
SEQ_ILLEGAL_BEFORE_OPEN ../sequence/sequence.c /^#define SEQ_ILLEGAL_BEFORE_OPEN(seq, name) \\$/
SEQ_IS_OPEN ../sequence/sequence.c /^#define SEQ_IS_OPEN(seq) ((seq)->seq_key.data != N/
-SEQ_OPEN_FLAGS ../sequence/sequence.c /^#define SEQ_OPEN_FLAGS (DB_CREATE | DB_EXCL | DB_T/
-SEQ_SET_FLAGS ../sequence/sequence.c /^#define SEQ_SET_FLAGS (DB_SEQ_WRAP | DB_SEQ_INC | /
+SEQ_OPEN_FLAGS ../sequence/sequence.c 167
+SEQ_SET_FLAGS ../sequence/sequence.c 426
SEQ_SWAP ../sequence/sequence.c /^#define SEQ_SWAP(rp) \\$/
SEQ_SWAP_IN ../sequence/sequence.c /^#define SEQ_SWAP_IN(seq) \\$/
SEQ_SWAP_OUT ../sequence/sequence.c /^#define SEQ_SWAP_OUT(seq) \\$/
-SET_LOG_FLAGS ../txn/txn.c /^#define SET_LOG_FLAGS(dbenv, txn, lflags) \\$/
-SET_MAP ../lock/lock_deadlock.c /^#define SET_MAP(M, B) ((M)[(B) \/ 32] |= (1 << ((B/
+SET_MAP ../lock/lock_deadlock.c /^#define SET_MAP(M, B) ((M)[(B) \/ 32] |= (1 << ((B)/
SET_RET_MEM ../dbinc/db_int.in /^#define SET_RET_MEM(dbc, owner) \\$/
-SHA1HANDSOFF ../hmac/sha1.c /^#define SHA1HANDSOFF$/
-SHA1_CTX ../dbinc/hmac.h /^} SHA1_CTX;$/
-SHALLOC_FRAGMENT ../env/db_salloc.c /^#define SHALLOC_FRAGMENT 32$/
-SHM_R ../os/os_map.c /^#define SHM_R 0400$/
-SHM_W ../os/os_map.c /^#define SHM_W 0200$/
-SHOBJECT_LOCK ../dbinc/lock.h /^#define SHOBJECT_LOCK(lt, reg, shobj, ndx) \\$/
-SH_CHAIN_ENTRY ../dbinc/shqueue.h /^#define SH_CHAIN_ENTRY \\$/
+SHA1HANDSOFF ../hmac/sha1.c 79
+SHALLOC_FRAGMENT ../env/env_alloc.c 216
+SHM_R ../os/os_map.c 460
+SHM_W ../os/os_map.c 463
+SH_CHAIN_ENTRY ../dbinc/shqueue.h 43
SH_CHAIN_HASNEXT ../dbinc/shqueue.h /^#define SH_CHAIN_HASNEXT(elm, field) ((elm)->field/
SH_CHAIN_HASPREV ../dbinc/shqueue.h /^#define SH_CHAIN_HASPREV(elm, field) ((elm)->field/
SH_CHAIN_INIT ../dbinc/shqueue.h /^#define SH_CHAIN_INIT(elm, field) \\$/
@@ -1794,10 +2174,9 @@ SH_CHAIN_PREV ../dbinc/shqueue.h /^#define SH_CHAIN_PREV(elm, field, type) (SH_C
SH_CHAIN_PREVP ../dbinc/shqueue.h /^#define SH_CHAIN_PREVP(elm, field, type) \\$/
SH_CHAIN_REMOVE ../dbinc/shqueue.h /^#define SH_CHAIN_REMOVE(elm, field, type) do { /
SH_CHAIN_SINGLETON ../dbinc/shqueue.h /^#define SH_CHAIN_SINGLETON(elm, field) \\$/
-SH_DBT ../dbinc/lock.h /^} SH_DBT;$/
SH_DBT_PTR ../dbinc/lock.h /^#define SH_DBT_PTR(p) ((void *)(((u_int8_t *)(p)) /
SH_LIST_EMPTY ../dbinc/shqueue.h /^#define SH_LIST_EMPTY(head) \\$/
-SH_LIST_ENTRY ../dbinc/shqueue.h /^#define SH_LIST_ENTRY \\$/
+SH_LIST_ENTRY ../dbinc/shqueue.h 112
SH_LIST_FIRST ../dbinc/shqueue.h /^#define SH_LIST_FIRST(head, type) \\$/
SH_LIST_FIRSTP ../dbinc/shqueue.h /^#define SH_LIST_FIRSTP(head, type) \\$/
SH_LIST_FOREACH ../dbinc/shqueue.h /^#define SH_LIST_FOREACH(var, head, field, type) /
@@ -1811,11 +2190,11 @@ SH_LIST_NEXT ../dbinc/shqueue.h /^#define SH_LIST_NEXT(elm, field, type) \\$
SH_LIST_NEXTP ../dbinc/shqueue.h /^#define SH_LIST_NEXTP(elm, field, type) \\$/
SH_LIST_NEXT_TO_PREV ../dbinc/shqueue.h /^#define SH_LIST_NEXT_TO_PREV(elm, field) \\$/
SH_LIST_PREV ../dbinc/shqueue.h /^#define SH_LIST_PREV(elm, field, type) \\$/
-SH_LIST_REMOVE ../dbinc/shqueue.h /^#define SH_LIST_REMOVE(elm, field, type) do { /
+SH_LIST_REMOVE ../dbinc/shqueue.h /^#define SH_LIST_REMOVE(elm, field, type) do { \\/
SH_LIST_REMOVE_HEAD ../dbinc/shqueue.h /^#define SH_LIST_REMOVE_HEAD(head, field, type) do /
SH_PTR_TO_OFF ../dbinc/shqueue.h /^#define SH_PTR_TO_OFF(src, dest) \\$/
SH_TAILQ_EMPTY ../dbinc/shqueue.h /^#define SH_TAILQ_EMPTY(head) \\$/
-SH_TAILQ_ENTRY ../dbinc/shqueue.h /^#define SH_TAILQ_ENTRY \\$/
+SH_TAILQ_ENTRY ../dbinc/shqueue.h 238
SH_TAILQ_FIRST ../dbinc/shqueue.h /^#define SH_TAILQ_FIRST(head, type) \\$/
SH_TAILQ_FIRSTP ../dbinc/shqueue.h /^#define SH_TAILQ_FIRSTP(head, type) \\$/
SH_TAILQ_FOREACH ../dbinc/shqueue.h /^#define SH_TAILQ_FOREACH(var, head, field, type) /
@@ -1832,13 +2211,15 @@ SH_TAILQ_LASTP ../dbinc/shqueue.h /^#define SH_TAILQ_LASTP(head, field, type)
SH_TAILQ_NEXT ../dbinc/shqueue.h /^#define SH_TAILQ_NEXT(elm, field, type) \\$/
SH_TAILQ_NEXTP ../dbinc/shqueue.h /^#define SH_TAILQ_NEXTP(elm, field, type) \\$/
SH_TAILQ_NEXT_TO_PREV ../dbinc/shqueue.h /^#define SH_TAILQ_NEXT_TO_PREV(elm, field) \\$/
-SH_TAILQ_PREV ../dbinc/shqueue.h /^#define SH_TAILQ_PREV(head, elm, field, type) /
+SH_TAILQ_PREV ../dbinc/shqueue.h /^#define SH_TAILQ_PREV(head, elm, field, type) \\/
SH_TAILQ_PREVP ../dbinc/shqueue.h /^#define SH_TAILQ_PREVP(elm, field, type) \\$/
SH_TAILQ_REMOVE ../dbinc/shqueue.h /^#define SH_TAILQ_REMOVE(head, elm, field, type) do/
-SITE_CONNECTED ../dbinc/repmgr.h /^#define SITE_CONNECTED 2$/
+SITE_CONNECTED ../dbinc/repmgr.h 263
SITE_FROM_EID ../dbinc/repmgr.h /^#define SITE_FROM_EID(eid) (&db_rep->sites[eid])$/
-SITE_IDLE ../dbinc/repmgr.h /^#define SITE_IDLE 1 \/* Waiting til time to retry/
-SIZEOF_PAGE ../dbinc/db_page.h /^#define SIZEOF_PAGE 26$/
+SITE_IDLE ../dbinc/repmgr.h 262
+SITE_STRING_BUFFER ../dbinc/repmgr.h 48
+SIZEOF_PAGE ../dbinc/db_page.h 254
+SLEEPTIME ../rep/rep_elect.c /^#define SLEEPTIME(timeout) \\$/
SLIST_EMPTY ../dbinc/queue.h /^#define SLIST_EMPTY(head) ((head)->slh_first == NU/
SLIST_ENTRY ../dbinc/queue.h /^#define SLIST_ENTRY(type) \\$/
SLIST_FIRST ../dbinc/queue.h /^#define SLIST_FIRST(head) ((head)->slh_first)$/
@@ -1852,34 +2233,35 @@ SLIST_INSERT_HEAD ../dbinc/queue.h /^#define SLIST_INSERT_HEAD(head, elm, field)
SLIST_NEXT ../dbinc/queue.h /^#define SLIST_NEXT(elm, field) ((elm)->field.sle_n/
SLIST_REMOVE ../dbinc/queue.h /^#define SLIST_REMOVE(head, elm, type, field) do { /
SLIST_REMOVE_HEAD ../dbinc/queue.h /^#define SLIST_REMOVE_HEAD(head, field) do { \\$/
-SOCKET_ERROR ../dbinc/repmgr.h /^#define SOCKET_ERROR -1$/
+SOCKET_ERROR ../dbinc/repmgr.h 343
SORTED_SET ../db/db_join.c /^#define SORTED_SET(jc, n) ((jc)->j_curslist[(n)]/
-SPLITNEW ../dbinc/hash.h /^#define SPLITNEW 0x90$/
-SPLITOLD ../dbinc/hash.h /^#define SPLITOLD 0x80$/
-SPL_NRECS ../dbinc/btree.h /^#define SPL_NRECS 0x01 \/* Split tree has record /
-SR_APPEND ../dbinc/btree.h /^#define SR_APPEND 0x00040 \/* Append to the tree./
-SR_DEL ../dbinc/btree.h /^#define SR_DEL 0x40000 \/* Get the tree to delet/
-SR_DELETE ../dbinc/btree.h /^#define SR_DELETE \\$/
-SR_DELNO ../dbinc/btree.h /^#define SR_DELNO 0x00080 \/* Don't return deleted/
-SR_DUPFIRST ../dbinc/btree.h /^#define SR_DUPFIRST 0x00100 \/* Return first dupl/
-SR_DUPLAST ../dbinc/btree.h /^#define SR_DUPLAST 0x00200 \/* Return last duplic/
-SR_EXACT ../dbinc/btree.h /^#define SR_EXACT 0x00400 \/* Exact items only. */
-SR_FIND ../dbinc/btree.h /^#define SR_FIND (SR_READ | SR_DUPFIRST | SR_DELNO/
-SR_FIND_WR ../dbinc/btree.h /^#define SR_FIND_WR (SR_WRITE | SR_DUPFIRST | SR_DE/
-SR_INSERT ../dbinc/btree.h /^#define SR_INSERT (SR_WRITE | SR_DUPLAST | SR_PAST/
-SR_KEYFIRST ../dbinc/btree.h /^#define SR_KEYFIRST (SR_WRITE | SR_DUPFIRST | SR_P/
-SR_KEYLAST ../dbinc/btree.h /^#define SR_KEYLAST (SR_WRITE | SR_DUPLAST | SR_PAS/
-SR_MAX ../dbinc/btree.h /^#define SR_MAX 0x08000 \/* Get the right most ke/
-SR_MIN ../dbinc/btree.h /^#define SR_MIN 0x10000 \/* Get the left most key/
-SR_NEXT ../dbinc/btree.h /^#define SR_NEXT 0x20000 \/* Get the page after t/
-SR_PARENT ../dbinc/btree.h /^#define SR_PARENT 0x00800 \/* Lock page pair. *\//
-SR_PAST_EOF ../dbinc/btree.h /^#define SR_PAST_EOF 0x02000 \/* If doing insert s/
-SR_READ ../dbinc/btree.h /^#define SR_READ 0x00001 \/* Read locks. *\/$/
-SR_STACK ../dbinc/btree.h /^#define SR_STACK 0x01000 \/* Need a complete stac/
-SR_START ../dbinc/btree.h /^#define SR_START 0x80000 \/* Level to start stack/
-SR_STK_ONLY ../dbinc/btree.h /^#define SR_STK_ONLY 0x04000 \/* Just return info /
-SR_WRITE ../dbinc/btree.h /^#define SR_WRITE 0x00002 \/* Write locks. *\/$/
-SR_WRPAIR ../dbinc/btree.h /^#define SR_WRPAIR (SR_WRITE | SR_DUPLAST | SR_PAST/
+SORTPAGE ../dbinc/hash.h 138
+SPLITNEW ../dbinc/hash.h 137
+SPLITOLD ../dbinc/hash.h 136
+SPL_NRECS ../dbinc/btree.h 72
+SR_APPEND ../dbinc/btree.h 107
+SR_DEL ../dbinc/btree.h 123
+SR_DELETE ../dbinc/btree.h 126
+SR_DELNO ../dbinc/btree.h 108
+SR_DUPFIRST ../dbinc/btree.h 109
+SR_DUPLAST ../dbinc/btree.h 110
+SR_EXACT ../dbinc/btree.h 111
+SR_FIND ../dbinc/btree.h 128
+SR_FIND_WR ../dbinc/btree.h 129
+SR_INSERT ../dbinc/btree.h 130
+SR_KEYFIRST ../dbinc/btree.h 131
+SR_KEYLAST ../dbinc/btree.h 132
+SR_MAX ../dbinc/btree.h 120
+SR_MIN ../dbinc/btree.h 121
+SR_NEXT ../dbinc/btree.h 122
+SR_PARENT ../dbinc/btree.h 112
+SR_PAST_EOF ../dbinc/btree.h 114
+SR_READ ../dbinc/btree.h 104
+SR_STACK ../dbinc/btree.h 113
+SR_START ../dbinc/btree.h 124
+SR_STK_ONLY ../dbinc/btree.h 119
+SR_WRITE ../dbinc/btree.h 105
+SR_WRPAIR ../dbinc/btree.h 133
SSZ ../dbinc/db_int.in /^#define SSZ(name, field) P_TO_UINT16(&(((name *)0/
SSZA ../dbinc/db_int.in /^#define SSZA(name, field) P_TO_UINT16(&(((name *)0/
STACK_TO_CURSOR ../btree/bt_recno.c /^#define STACK_TO_CURSOR(cp, ret) { \\$/
@@ -1897,8 +2279,9 @@ STAILQ_INSERT_TAIL ../dbinc/queue.h /^#define STAILQ_INSERT_TAIL(head, elm, fiel
STAILQ_LAST ../dbinc/queue.h /^#define STAILQ_LAST(head, type, field) \\$/
STAILQ_NEXT ../dbinc/queue.h /^#define STAILQ_NEXT(elm, field) ((elm)->field.stqe/
STAILQ_REMOVE ../dbinc/queue.h /^#define STAILQ_REMOVE(head, elm, type, field) do {/
-STAILQ_REMOVE_HEAD ../dbinc/queue.h /^#define STAILQ_REMOVE_HEAD(head, field) do { \\/
+STAILQ_REMOVE_HEAD ../dbinc/queue.h /^#define STAILQ_REMOVE_HEAD(head, field) do { \\$/
STAILQ_REMOVE_HEAD_UNTIL ../dbinc/queue.h /^#define STAILQ_REMOVE_HEAD_UNTIL(head, elm, field)/
+STAT ../dbinc/db_int.in /^#define STAT(x) x$/
STAT_FMT ../dbinc/db_int.in /^#define STAT_FMT(msg, fmt, type, v) do { \\$/
STAT_HEX ../dbinc/db_int.in /^#define STAT_HEX(msg, v) \\$/
STAT_ISSET ../dbinc/db_int.in /^#define STAT_ISSET(msg, p) \\$/
@@ -1907,47 +2290,49 @@ STAT_LSN ../dbinc/db_int.in /^#define STAT_LSN(msg, lsnp) \\$/
STAT_POINTER ../dbinc/db_int.in /^#define STAT_POINTER(msg, v) \\$/
STAT_STRING ../dbinc/db_int.in /^#define STAT_STRING(msg, p) do { \\$/
STAT_ULONG ../dbinc/db_int.in /^#define STAT_ULONG(msg, v) \\$/
-STDERR_FILENO ../clib/snprintf.c /^#define STDERR_FILENO 2$/
+STDERR_FILENO ../clib/snprintf.c 114
STD_LOCKING ../dbinc/db_int.in /^#define STD_LOCKING(dbc) \\$/
-STK_CLRDBC ../dbinc/btree.h /^#define STK_CLRDBC 0x01 \/* Clear dbc->page refer/
-STK_NOLOCK ../dbinc/btree.h /^#define STK_NOLOCK 0x02 \/* Don't retain locks. */
-STK_PGONLY ../dbinc/btree.h /^#define STK_PGONLY 0x04$/
+STK_CLRDBC ../dbinc/btree.h 78
+STK_NOLOCK ../dbinc/btree.h 79
+STK_PGONLY ../dbinc/btree.h 80
STRIP_AUTO_COMMIT ../dbinc/db_am.h /^#define STRIP_AUTO_COMMIT(f) FLD_CLR((f), DB_AUTO_/
-ST_DUPOK ../dbinc/db_verify.h /^#define ST_DUPOK 0x00010000 \/* Duplicates are acc/
-ST_DUPSET ../dbinc/db_verify.h /^#define ST_DUPSET 0x00020000 \/* Subtree is in a d/
-ST_DUPSORT ../dbinc/db_verify.h /^#define ST_DUPSORT 0x00040000 \/* Duplicates are s/
-ST_IS_RECNO ../dbinc/db_verify.h /^#define ST_IS_RECNO 0x00080000 \/* Subtree is a re/
-ST_OVFL_LEAF ../dbinc/db_verify.h /^#define ST_OVFL_LEAF 0x00100000 \/* Overflow reffe/
-ST_RECNUM ../dbinc/db_verify.h /^#define ST_RECNUM 0x00200000 \/* Subtree has recor/
-ST_RELEN ../dbinc/db_verify.h /^#define ST_RELEN 0x00400000 \/* Subtree has fixed-/
-ST_TOPLEVEL ../dbinc/db_verify.h /^#define ST_TOPLEVEL 0x00800000 \/* Subtree == enti/
+ST_DUPOK ../dbinc/db_verify.h 49
+ST_DUPSET ../dbinc/db_verify.h 50
+ST_DUPSORT ../dbinc/db_verify.h 51
+ST_IS_RECNO ../dbinc/db_verify.h 52
+ST_OVFL_LEAF ../dbinc/db_verify.h 53
+ST_RECNUM ../dbinc/db_verify.h 54
+ST_RELEN ../dbinc/db_verify.h 55
+ST_TOPLEVEL ../dbinc/db_verify.h 56
SWAP ../crypto/rijndael/rijndael-alg-fst.c /^#define SWAP(x) (_lrotl(x, 8) & 0x00ff00ff | _lrot/
SWAP16 ../dbinc/db_swap.h /^#define SWAP16(p) { \\$/
SWAP32 ../dbinc/db_swap.h /^#define SWAP32(p) { \\$/
+SWAPINIT ../clib/qsort.c /^#define SWAPINIT(a, es) swaptype = ((char *)a - (c/
SWAP_IF_NEEDED ../dbinc/db_am.h /^#define SWAP_IF_NEEDED(sdbp, pkey) \\$/
-SWIGEXPORT ../libdb_java/db_java_wrap.c /^# define SWIGEXPORT$/
-SWIGINLINE ../libdb_java/db_java_wrap.c /^# define SWIGINLINE inline$/
-SWIGINTERN ../libdb_java/db_java_wrap.c /^# define SWIGINTERN static SWIGUNUSED$/
-SWIGINTERNINLINE ../libdb_java/db_java_wrap.c /^# define SWIGINTERNINLINE SWIGINTERN SWIGINLINE$/
-SWIGSTDCALL ../libdb_java/db_java_wrap.c /^# define SWIGSTDCALL __stdcall$/
-SWIGTEMPLATEDISAMBIGUATOR ../libdb_java/db_java_wrap.c /^# define SWIGTEMPLATEDISAMBIGUATOR template$/
-SWIGUNUSED ../libdb_java/db_java_wrap.c /^# define SWIGUNUSED __attribute__ ((__unused__/
+SWIGEXPORT ../libdb_java/db_java_wrap.c 82
+SWIGINLINE ../libdb_java/db_java_wrap.c 33
+SWIGINTERN ../libdb_java/db_java_wrap.c 64
+SWIGINTERNINLINE ../libdb_java/db_java_wrap.c 69
+SWIGSTDCALL ../libdb_java/db_java_wrap.c 98
+SWIGTEMPLATEDISAMBIGUATOR ../libdb_java/db_java_wrap.c 21
+SWIGUNUSED ../libdb_java/db_java_wrap.c 43
SWIGUNUSEDPARM ../libdb_java/db_java_wrap.c /^# define SWIGUNUSEDPARM(p)$/
-SWIG_JavaExceptionCodes ../libdb_java/db_java_wrap.c /^} SWIG_JavaExceptionCodes;$/
-SWIG_JavaExceptions_t ../libdb_java/db_java_wrap.c /^} SWIG_JavaExceptions_t;$/
+SWIG_JavaExceptionCodes ../libdb_java/db_java_wrap.c 139
SWIG_JavaThrowException ../libdb_java/db_java_wrap.c /^static void SWIGUNUSED SWIG_JavaThrowException(JNI/
-SWIG_NOINCLUDE ../libdb_java/db_java_wrap.c /^#define SWIG_NOINCLUDE 1$/
+SWIG_NOINCLUDE ../libdb_java/db_java_wrap.c 188
SWIG_contract_assert ../libdb_java/db_java_wrap.c /^#define SWIG_contract_assert(nullreturn, expr, msg/
-S_IRGRP ../os/os_oflags.c /^#define S_IRGRP 0 \/* R for group *\/$/
-S_IROTH ../os/os_oflags.c /^#define S_IROTH 0 \/* R for other *\/$/
-S_IRUSR ../os/os_oflags.c /^#define S_IRUSR S_IREAD \/* R for owner *\/$/
+S_IREAD ../os/os_oflags.c 40
+S_IRGRP ../os/os_oflags.c 97
+S_IROTH ../os/os_oflags.c 106
+S_IRUSR ../os/os_oflags.c 88
S_ISDIR ../os/os_stat.c /^#define S_ISDIR(m) (_S_IFDIR & (m))$/
-S_IWGRP ../os/os_oflags.c /^#define S_IWGRP 0 \/* W for group *\/$/
-S_IWOTH ../os/os_oflags.c /^#define S_IWOTH 0 \/* W for other *\/$/
-S_IWUSR ../os/os_oflags.c /^#define S_IWUSR S_IWRITE \/* W for owner *\/$/
-S_IXGRP ../os/os_oflags.c /^#define S_IXGRP 0 \/* X for group *\/$/
-S_IXOTH ../os/os_oflags.c /^#define S_IXOTH 0 \/* X for other *\/$/
-S_IXUSR ../os/os_oflags.c /^#define S_IXUSR 0 \/* X for owner *\/$/
+S_IWGRP ../os/os_oflags.c 100
+S_IWOTH ../os/os_oflags.c 109
+S_IWRITE ../os/os_oflags.c 43
+S_IWUSR ../os/os_oflags.c 91
+S_IXGRP ../os/os_oflags.c 103
+S_IXOTH ../os/os_oflags.c 112
+S_IXUSR ../os/os_oflags.c 94
TAILQ_CONCAT ../dbinc/queue.h /^#define TAILQ_CONCAT(head1, head2, field) do { /
TAILQ_EMPTY ../dbinc/queue.h /^#define TAILQ_EMPTY(head) ((head)->tqh_first == NU/
TAILQ_ENTRY ../dbinc/queue.h /^#define TAILQ_ENTRY(type) \\$/
@@ -1965,202 +2350,203 @@ TAILQ_LAST ../dbinc/queue.h /^#define TAILQ_LAST(head, headname) \\$/
TAILQ_NEXT ../dbinc/queue.h /^#define TAILQ_NEXT(elm, field) ((elm)->field.tqe_n/
TAILQ_PREV ../dbinc/queue.h /^#define TAILQ_PREV(elm, headname, field) \\$/
TAILQ_REMOVE ../dbinc/queue.h /^#define TAILQ_REMOVE(head, elm, field) do { \\$/
-TCLDB_EVENTITEMS ../tcl/tcl_internal.c /^#define TCLDB_EVENTITEMS 2 \/* Event name and any /
-TCLDB_MAXREPFLAGS ../tcl/tcl_db_pkg.c /^#define TCLDB_MAXREPFLAGS 32$/
-TCLDB_SENDEVENT ../tcl/tcl_internal.c /^#define TCLDB_SENDEVENT 2$/
-TCLDB_SENDITEMS ../tcl/tcl_db_pkg.c /^#define TCLDB_SENDITEMS 7$/
-TEMPERING_MASK_B ../crypto/mersenne/mt19937db.c /^#define TEMPERING_MASK_B 0x9d2c5680$/
-TEMPERING_MASK_C ../crypto/mersenne/mt19937db.c /^#define TEMPERING_MASK_C 0xefc60000$/
+TCLDB_EVENTITEMS ../tcl/tcl_internal.c 513
+TCLDB_MAXREPFLAGS ../tcl/tcl_db_pkg.c 3682
+TCLDB_SENDEVENT ../tcl/tcl_internal.c 514
+TCLDB_SENDITEMS ../tcl/tcl_db_pkg.c 3681
+TEMPERING_MASK_B ../crypto/mersenne/mt19937db.c 44
+TEMPERING_MASK_C ../crypto/mersenne/mt19937db.c 45
TEMPERING_SHIFT_L ../crypto/mersenne/mt19937db.c /^#define TEMPERING_SHIFT_L(y) (y >> 18)$/
TEMPERING_SHIFT_S ../crypto/mersenne/mt19937db.c /^#define TEMPERING_SHIFT_S(y) (y << 7)$/
TEMPERING_SHIFT_T ../crypto/mersenne/mt19937db.c /^#define TEMPERING_SHIFT_T(y) (y << 15)$/
TEMPERING_SHIFT_U ../crypto/mersenne/mt19937db.c /^#define TEMPERING_SHIFT_U(y) (y >> 11)$/
-TESTDIR ../mutex/tm.c /^#define TESTDIR "TESTDIR" \/* Working area *\/$/
-THREAD_INFO ../dbinc/db_int.in /^} THREAD_INFO;$/
-TIMESTAMP_CHECK ../rep/rep_util.c /^#define TIMESTAMP_CHECK(dbenv, ts, renv) do { /
+TESTDIR ../mutex/test_mutex.c 59
+TIMESTAMP_CHECK ../rep/rep_util.c /^#define TIMESTAMP_CHECK(dbenv, ts, renv) do { \\/
TLOOP ../clib/memmove.c /^#define TLOOP(s) if (t) TLOOP1(s)$/
TLOOP1 ../clib/memmove.c /^#define TLOOP1(s) do { s; } while (--t)$/
-TM ../mutex/tm.c /^} TM;$/
-TMASYNC ../dbinc/xa.h /^#define TMASYNC 0x80000000L \/* perform routine a/
-TMENDRSCAN ../dbinc/xa.h /^#define TMENDRSCAN 0x00800000L \/* end a recovery /
-TMER_INVAL ../dbinc/xa.h /^#define TMER_INVAL -2 \/* invalid arguments were /
-TMER_PROTO ../dbinc/xa.h /^#define TMER_PROTO -3 \/* routine invoked in an i/
-TMER_TMERR ../dbinc/xa.h /^#define TMER_TMERR -1 \/* an error occurred in th/
-TMFAIL ../dbinc/xa.h /^#define TMFAIL 0x20000000L \/* dissociates caller/
-TMJOIN ../dbinc/xa.h /^#define TMJOIN 0x00200000L \/* caller is joining /
-TMMIGRATE ../dbinc/xa.h /^#define TMMIGRATE 0x00100000L \/* caller intends t/
-TMMULTIPLE ../dbinc/xa.h /^#define TMMULTIPLE 0x00400000L \/* wait for any as/
-TMNOFLAGS ../dbinc/xa.h /^#define TMNOFLAGS 0x00000000L \/* no resource mana/
-TMNOMIGRATE ../dbinc/xa.h /^#define TMNOMIGRATE 0x00000002L \/* resource manag/
-TMNOWAIT ../dbinc/xa.h /^#define TMNOWAIT 0x10000000L \/* return if blockin/
-TMONEPHASE ../dbinc/xa.h /^#define TMONEPHASE 0x40000000L \/* caller is using/
-TMREGISTER ../dbinc/xa.h /^#define TMREGISTER 0x00000001L \/* resource manage/
-TMRESUME ../dbinc/xa.h /^#define TMRESUME 0x08000000L \/* caller is resumin/
-TMSTARTRSCAN ../dbinc/xa.h /^#define TMSTARTRSCAN 0x01000000L \/* start a recov/
-TMSUCCESS ../dbinc/xa.h /^#define TMSUCCESS 0x04000000L \/* dissociate calle/
-TMSUSPEND ../dbinc/xa.h /^#define TMSUSPEND 0x02000000L \/* caller is suspen/
-TMUSEASYNC ../dbinc/xa.h /^#define TMUSEASYNC 0x00000004L \/* resource manage/
-TM_JOIN ../dbinc/xa.h /^#define TM_JOIN 2 \/* caller is joining existing/
-TM_OK ../dbinc/xa.h /^#define TM_OK 0 \/* normal execution *\/$/
-TM_RESUME ../dbinc/xa.h /^#define TM_RESUME 1 \/* caller is resuming associ/
-TRACEBUF ../dbinc/queue.h /^#define TRACEBUF struct qm_trace trace;$/
+TMASYNC ../dbinc/xa.h 93
+TMENDRSCAN ../dbinc/xa.h 107
+TMER_INVAL ../dbinc/xa.h 125
+TMER_PROTO ../dbinc/xa.h 126
+TMER_TMERR ../dbinc/xa.h 123
+TMFAIL ../dbinc/xa.h 96
+TMJOIN ../dbinc/xa.h 110
+TMMIGRATE ../dbinc/xa.h 112
+TMMULTIPLE ../dbinc/xa.h 108
+TMNOFLAGS ../dbinc/xa.h 81
+TMNOMIGRATE ../dbinc/xa.h 85
+TMNOWAIT ../dbinc/xa.h 98
+TMONEPHASE ../dbinc/xa.h 94
+TMREGISTER ../dbinc/xa.h 83
+TMRESUME ../dbinc/xa.h 100
+TMSTARTRSCAN ../dbinc/xa.h 106
+TMSUCCESS ../dbinc/xa.h 102
+TMSUSPEND ../dbinc/xa.h 104
+TMUSEASYNC ../dbinc/xa.h 87
+TM_JOIN ../dbinc/xa.h 118
+TM_OK ../dbinc/xa.h 122
+TM_RESUME ../dbinc/xa.h 120
+TO_TSTRING ../dbinc/win_db.h /^#define TO_TSTRING(dbenv, s, ts, ret) do { \\$/
+TRACEBUF ../dbinc/queue.h 192
TRASHIT ../dbinc/queue.h /^#define TRASHIT(x) do {(x) = (void *)-1;} while (0/
-TRUE ../dbinc/db_int.in /^#define TRUE (!FALSE)$/
-TXN2JDBENV ../libdb_java/db_java_wrap.c /^#define TXN2JDBENV ((jobject)DB_ENV_INTERNAL(arg1-/
-TXN_ABORT ../dbinc/txn.h /^#define TXN_ABORT 3$/
-TXN_ABORTED ../dbinc/db.in /^#define TXN_ABORTED 1$/
-TXN_CDSGROUP ../dbinc/db.in /^#define TXN_CDSGROUP 0x0002 \/* CDS group handle./
-TXN_CHILDCOMMIT ../dbinc/db.in /^#define TXN_CHILDCOMMIT 0x0001 \/* Txn has commit/
-TXN_COMMIT ../dbinc/txn.h /^#define TXN_COMMIT 1$/
-TXN_COMMITTED ../dbinc/db.in /^#define TXN_COMMITTED 2$/
-TXN_COMPENSATE ../dbinc/db.in /^#define TXN_COMPENSATE 0x0004 \/* Compensating tr/
-TXN_DEADLOCK ../dbinc/db.in /^#define TXN_DEADLOCK 0x0008 \/* Txn has deadlocke/
-TXN_DETAIL ../dbinc/txn.h /^} TXN_DETAIL;$/
-TXN_DTL_COLLECTED ../dbinc/txn.h /^#define TXN_DTL_COLLECTED 0x1 \/* collected during/
-TXN_DTL_INMEMORY ../dbinc/txn.h /^#define TXN_DTL_INMEMORY 0x4 \/* uses in memory lo/
-TXN_DTL_RESTORED ../dbinc/txn.h /^#define TXN_DTL_RESTORED 0x2 \/* prepared txn rest/
-TXN_EVENT ../txn/txn_util.c /^typedef struct __txn_event TXN_EVENT;$/
-TXN_EVENT_T ../dbinc/txn.h /^} TXN_EVENT_T;$/
-TXN_EXPECTED ../dbinc/txn.h /^#define TXN_EXPECTED 5$/
-TXN_IGNORE ../dbinc/txn.h /^#define TXN_IGNORE 4$/
-TXN_INVALID ../dbinc/txn.h /^#define TXN_INVALID 0 \/* Invalid transaction ID./
-TXN_IN_RECOVERY ../dbinc/txn.h /^#define TXN_IN_RECOVERY 0x01 \/* environment is /
-TXN_LOCKTIMEOUT ../dbinc/db.in /^#define TXN_LOCKTIMEOUT 0x0010 \/* Txn has a lock/
-TXN_MALLOC ../dbinc/db.in /^#define TXN_MALLOC 0x0020 \/* Structure allocated/
-TXN_MAXIMUM ../dbinc/txn.h /^#define TXN_MAXIMUM 0xffffffff \/* Maximum number /
-TXN_MINIMUM ../dbinc/txn.h /^#define TXN_MINIMUM 0x80000000$/
-TXN_NOSYNC ../dbinc/db.in /^#define TXN_NOSYNC 0x0040 \/* Do not sync on prep/
-TXN_NOWAIT ../dbinc/db.in /^#define TXN_NOWAIT 0x0080 \/* Do not wait on lock/
-TXN_OK ../dbinc/txn.h /^#define TXN_OK 0$/
+TRUE ../dbinc/db_int.in 115
+TXN2JDBENV ../libdb_java/db_java_wrap.c 1127
+TXN_ABORT ../dbinc/txn.h 227
+TXN_ABORTED ../dbinc/db.in 1098
+TXN_CDSGROUP ../dbinc/db.in 1053
+TXN_CHILDCOMMIT ../dbinc/db.in 1052
+TXN_COMMIT ../dbinc/txn.h 225
+TXN_COMMITTED ../dbinc/db.in 1099
+TXN_COMPENSATE ../dbinc/db.in 1054
+TXN_DEADLOCK ../dbinc/db.in 1055
+TXN_DTL_COLLECTED ../dbinc/txn.h 71
+TXN_DTL_INMEMORY ../dbinc/txn.h 73
+TXN_DTL_RESTORED ../dbinc/txn.h 72
+TXN_EVENT ../txn/txn_util.c 19
+TXN_EVENT_T ../dbinc/txn.h 24
+TXN_EXPECTED ../dbinc/txn.h 229
+TXN_IGNORE ../dbinc/txn.h 228
+TXN_INVALID ../dbinc/txn.h 35
+TXN_IN_RECOVERY ../dbinc/txn.h 139
+TXN_LOCKTIMEOUT ../dbinc/db.in 1056
+TXN_MALLOC ../dbinc/db.in 1057
+TXN_MAXIMUM ../dbinc/txn.h 34
+TXN_MINIMUM ../dbinc/txn.h 33
+TXN_NOSYNC ../dbinc/db.in 1058
+TXN_NOWAIT ../dbinc/db.in 1059
+TXN_NSLOTS ../dbinc/txn.h 38
+TXN_OK ../dbinc/txn.h 224
TXN_ON ../dbinc/db_int.in /^#define TXN_ON(dbenv) ((dbenv)->tx_handle != NULL/
-TXN_PREPARE ../dbinc/txn.h /^#define TXN_PREPARE 2$/
-TXN_PREPARED ../dbinc/db.in /^#define TXN_PREPARED 3$/
-TXN_PRIVATE ../dbinc/db.in /^#define TXN_PRIVATE 0x0100 \/* Txn owned by curso/
-TXN_READ_COMMITTED ../dbinc/db.in /^#define TXN_READ_COMMITTED 0x0200 \/* Txn has degr/
-TXN_READ_UNCOMMITTED ../dbinc/db.in /^#define TXN_READ_UNCOMMITTED 0x0400 \/* Txn has de/
-TXN_RESTORED ../dbinc/db.in /^#define TXN_RESTORED 0x0800 \/* Txn has been rest/
-TXN_RUNNING ../dbinc/db.in /^#define TXN_RUNNING 4$/
-TXN_SNAPSHOT ../dbinc/db.in /^#define TXN_SNAPSHOT 0x1000 \/* Snapshot Isolatio/
-TXN_SYNC ../dbinc/db.in /^#define TXN_SYNC 0x2000 \/* Write and sync on pre/
-TXN_SYNC_FLAGS ../dbinc/db.in /^#define TXN_SYNC_FLAGS (TXN_SYNC | TXN_NOSYNC | TX/
+TXN_PREPARE ../dbinc/txn.h 226
+TXN_PREPARED ../dbinc/db.in 1100
+TXN_PRIVATE ../dbinc/db.in 1060
+TXN_READ_COMMITTED ../dbinc/db.in 1061
+TXN_READ_UNCOMMITTED ../dbinc/db.in 1062
+TXN_RESTORED ../dbinc/db.in 1063
+TXN_RUNNING ../dbinc/db.in 1101
+TXN_SNAPSHOT ../dbinc/db.in 1064
+TXN_SYNC ../dbinc/db.in 1065
+TXN_SYNC_FLAGS ../dbinc/db.in 1070
TXN_SYSTEM_LOCK ../dbinc/txn.h /^#define TXN_SYSTEM_LOCK(dbenv) \\$/
TXN_SYSTEM_UNLOCK ../dbinc/txn.h /^#define TXN_SYSTEM_UNLOCK(dbenv) \\$/
-TXN_UNEXPECTED ../dbinc/txn.h /^#define TXN_UNEXPECTED 6$/
-TXN_WRITE_NOSYNC ../dbinc/db.in /^#define TXN_WRITE_NOSYNC 0x4000 \/* Write only on /
-TXN_XA_ABORTED ../dbinc/db.in /^#define TXN_XA_ABORTED 1$/
-TXN_XA_DEADLOCKED ../dbinc/db.in /^#define TXN_XA_DEADLOCKED 2$/
-TXN_XA_ENDED ../dbinc/db.in /^#define TXN_XA_ENDED 3$/
-TXN_XA_PREPARED ../dbinc/db.in /^#define TXN_XA_PREPARED 4$/
-TXN_XA_STARTED ../dbinc/db.in /^#define TXN_XA_STARTED 5$/
-TXN_XA_SUSPENDED ../dbinc/db.in /^#define TXN_XA_SUSPENDED 6$/
+TXN_UNEXPECTED ../dbinc/txn.h 230
+TXN_WRITE_NOSYNC ../dbinc/db.in 1066
+TXN_XA_ABORTED ../dbinc/db.in 1104
+TXN_XA_DEADLOCKED ../dbinc/db.in 1105
+TXN_XA_ENDED ../dbinc/db.in 1106
+TXN_XA_PREPARED ../dbinc/db.in 1107
+TXN_XA_STARTED ../dbinc/db.in 1108
+TXN_XA_SUSPENDED ../dbinc/db.in 1109
TYPE ../dbinc/db_page.h /^#define TYPE(p) (((PAGE *)p)->type)$/
T_RESTORED ../db/db_dispatch.c /^#define T_RESTORED(txn) ((txn) != NULL && F_/
-UINT16_MAX ../dbinc/db_int.in /^#define UINT16_MAX 65535 \/* Maximum 16-bit unsig/
UINT32_CMP ../lock/lock_list.c /^#define UINT32_CMP(A, B) ((A) == (B) ? 0 : ((A) > /
-UINT32_MAX ../dbinc/db_int.in /^#define UINT32_MAX 4294967295U \/* Maximum 32-bit /
-UINT64_MAX ../dbinc/db_int.in /^#define UINT64_MAX _UI64_MAX$/
UMRW_SET ../dbinc/debug.h /^#define UMRW_SET(v) (v) = 0$/
+UNLOCK_LOCKERS ../dbinc/lock.h /^#define UNLOCK_LOCKERS(dbenv, region) \\$/
+UNLOCK_LOCKS ../dbinc/lock.h /^#define UNLOCK_LOCKS(dbenv, region) \\$/
UNLOCK_MUTEX ../dbinc/repmgr.h /^#define UNLOCK_MUTEX(m) do { \\$/
-UPPER_MASK ../crypto/mersenne/mt19937db.c /^#define UPPER_MASK 0x80000000 \/* most significant/
-USEC_PER_MS ../dbinc/db_int.in /^#define USEC_PER_MS 1000 \/* Microseconds in a mi/
-VERIFY_FLAGS ../db/db_vrfy.c /^#define VERIFY_FLAGS \\$/
+UNLOCK_OBJECTS ../dbinc/lock.h /^#define UNLOCK_OBJECTS(dbenv, region) \\$/
+UPPER_MASK ../crypto/mersenne/mt19937db.c 40
+US_PER_MS ../dbinc/db_int.in 123
+US_PER_SEC ../dbinc/db_int.in 124
+VERIFY_FLAGS ../db/db_vrfy.c 57
VISIBLE_LSN ../dbinc/mp.h /^#define VISIBLE_LSN(dbenv, bhp) \\$/
-VM_PAGESIZE ../dbinc/mp.h /^#define VM_PAGESIZE 4096$/
-VRFY_CHILDINFO ../dbinc/db_int.in /^struct __vrfy_childinfo;typedef struct __vrfy_chil/
-VRFY_DBINFO ../dbinc/db_int.in /^struct __vrfy_dbinfo; typedef struct __vrfy_dbin/
-VRFY_DUPS_UNSORTED ../dbinc/db_verify.h /^#define VRFY_DUPS_UNSORTED 0x0001 \/* Have to flag/
-VRFY_HAS_CHKSUM ../dbinc/db_verify.h /^#define VRFY_HAS_CHKSUM 0x0002$/
-VRFY_HAS_DUPS ../dbinc/db_verify.h /^#define VRFY_HAS_DUPS 0x0004$/
-VRFY_HAS_DUPSORT ../dbinc/db_verify.h /^#define VRFY_HAS_DUPSORT 0x0008 \/* Has the flag s/
-VRFY_HAS_RECNUMS ../dbinc/db_verify.h /^#define VRFY_HAS_RECNUMS 0x0010$/
-VRFY_HAS_SUBDBS ../dbinc/db_verify.h /^#define VRFY_HAS_SUBDBS 0x0020$/
-VRFY_INCOMPLETE ../dbinc/db_verify.h /^#define VRFY_INCOMPLETE 0x0040 \/* Meta or item o/
-VRFY_IS_ALLZEROES ../dbinc/db_verify.h /^#define VRFY_IS_ALLZEROES 0x0080 \/* Hash page we /
-VRFY_IS_FIXEDLEN ../dbinc/db_verify.h /^#define VRFY_IS_FIXEDLEN 0x0100$/
-VRFY_IS_RECNO ../dbinc/db_verify.h /^#define VRFY_IS_RECNO 0x0200$/
-VRFY_IS_RRECNO ../dbinc/db_verify.h /^#define VRFY_IS_RRECNO 0x0400$/
-VRFY_ITEM ../btree/bt_verify.c /^typedef enum { VRFY_ITEM_NOTSET=0, VRFY_ITEM_BEGIN/
-VRFY_LEAFCHAIN_BROKEN ../dbinc/db_verify.h /^#define VRFY_LEAFCHAIN_BROKEN 0x08 \/* Lost one or/
-VRFY_OVFL_LEAFSEEN ../dbinc/db_verify.h /^#define VRFY_OVFL_LEAFSEEN 0x0800$/
-VRFY_PAGEINFO ../dbinc/db_int.in /^struct __vrfy_pageinfo; typedef struct __vrfy_page/
-VRFY_QMETA_SET ../dbinc/db_verify.h /^#define VRFY_QMETA_SET 0x10 \/* We've seen a Q/
-V_DUPLICATE ../dbinc/db_verify.h /^#define V_DUPLICATE 1 \/* off-page dup metadata */
-V_OVERFLOW ../dbinc/db_verify.h /^#define V_OVERFLOW 2 \/* overflow page *\/$/
-V_RECNO ../dbinc/db_verify.h /^#define V_RECNO 3 \/* btree internal or leaf pag/
+VM_PAGESIZE ../dbinc/mp.h 567
+VRFY_CHILDINFO ../dbinc/db_int.in 703
+VRFY_DBINFO ../dbinc/db_int.in 704
+VRFY_DUPS_UNSORTED ../dbinc/db_verify.h 180
+VRFY_HAS_CHKSUM ../dbinc/db_verify.h 181
+VRFY_HAS_DUPS ../dbinc/db_verify.h 182
+VRFY_HAS_DUPSORT ../dbinc/db_verify.h 183
+VRFY_HAS_RECNUMS ../dbinc/db_verify.h 184
+VRFY_HAS_SUBDBS ../dbinc/db_verify.h 185
+VRFY_INCOMPLETE ../dbinc/db_verify.h 186
+VRFY_IS_ALLZEROES ../dbinc/db_verify.h 187
+VRFY_IS_FIXEDLEN ../dbinc/db_verify.h 188
+VRFY_IS_RECNO ../dbinc/db_verify.h 189
+VRFY_IS_RRECNO ../dbinc/db_verify.h 190
+VRFY_ITEM ../btree/bt_verify.c 490
+VRFY_LEAFCHAIN_BROKEN ../dbinc/db_verify.h 136
+VRFY_OVFL_LEAFSEEN ../dbinc/db_verify.h 191
+VRFY_PAGEINFO ../dbinc/db_int.in 705
+VRFY_QMETA_SET ../dbinc/db_verify.h 137
+V_DUPLICATE ../dbinc/db_verify.h 202
+V_OVERFLOW ../dbinc/db_verify.h 203
+V_RECNO ../dbinc/db_verify.h 204
WAITER_SLOT_IN_USE ../repmgr/repmgr_windows.c /^#define WAITER_SLOT_IN_USE(w) ((w)->lsnp != NULL)$/
-WOULDBLOCK ../dbinc/repmgr.h /^#define WOULDBLOCK WSAEWOULDBLOCK$/
-WRAPPED_CLASS ../dbinc/cxx_int.h /^\/\/$/
-XAER_ASYNC ../dbinc/xa.h /^#define XAER_ASYNC -2 \/* asynchronous operation /
-XAER_DUPID ../dbinc/xa.h /^#define XAER_DUPID -8 \/* the XID already exists /
-XAER_INVAL ../dbinc/xa.h /^#define XAER_INVAL -5 \/* invalid arguments were /
-XAER_NOTA ../dbinc/xa.h /^#define XAER_NOTA -4 \/* the XID is not valid *\//
-XAER_OUTSIDE ../dbinc/xa.h /^#define XAER_OUTSIDE -9 \/* resource manager doin/
-XAER_PROTO ../dbinc/xa.h /^#define XAER_PROTO -6 \/* routine invoked in an i/
-XAER_RMERR ../dbinc/xa.h /^#define XAER_RMERR -3 \/* a resource manager erro/
-XAER_RMFAIL ../dbinc/xa.h /^#define XAER_RMFAIL -7 \/* resource manager unava/
-XA_FLAGS ../xa/xa.c /^#define XA_FLAGS \\$/
-XA_HEURCOM ../dbinc/xa.h /^#define XA_HEURCOM 7 \/* the transaction branch h/
-XA_HEURHAZ ../dbinc/xa.h /^#define XA_HEURHAZ 8 \/* the transaction branch m/
-XA_HEURMIX ../dbinc/xa.h /^#define XA_HEURMIX 5 \/* the transaction branch h/
-XA_HEURRB ../dbinc/xa.h /^#define XA_HEURRB 6 \/* the transaction branch ha/
-XA_METHODS ../xa/xa_db.c /^} XA_METHODS;$/
-XA_NOMIGRATE ../dbinc/xa.h /^#define XA_NOMIGRATE 9 \/* resumption must occur /
-XA_OK ../dbinc/xa.h /^#define XA_OK 0 \/* normal execution *\/$/
-XA_RBBASE ../dbinc/xa.h /^#define XA_RBBASE 100 \/* The inclusive lower bou/
-XA_RBCOMMFAIL ../dbinc/xa.h /^#define XA_RBCOMMFAIL XA_RBBASE+1 \/* The rollback/
-XA_RBDEADLOCK ../dbinc/xa.h /^#define XA_RBDEADLOCK XA_RBBASE+2 \/* A deadlock w/
-XA_RBEND ../dbinc/xa.h /^#define XA_RBEND XA_RBTRANSIENT \/* The inclusive /
-XA_RBINTEGRITY ../dbinc/xa.h /^#define XA_RBINTEGRITY XA_RBBASE+3 \/* A condition/
-XA_RBOTHER ../dbinc/xa.h /^#define XA_RBOTHER XA_RBBASE+4 \/* The resource ma/
-XA_RBPROTO ../dbinc/xa.h /^#define XA_RBPROTO XA_RBBASE+5 \/* A protocol erro/
-XA_RBROLLBACK ../dbinc/xa.h /^#define XA_RBROLLBACK XA_RBBASE \/* The rollback w/
-XA_RBTIMEOUT ../dbinc/xa.h /^#define XA_RBTIMEOUT XA_RBBASE+6 \/* A transaction/
-XA_RBTRANSIENT ../dbinc/xa.h /^#define XA_RBTRANSIENT XA_RBBASE+7 \/* May retry t/
-XA_RDONLY ../dbinc/xa.h /^#define XA_RDONLY 3 \/* the transaction branch wa/
-XA_RETRY ../dbinc/xa.h /^#define XA_RETRY 4 \/* routine returned with no e/
-XID ../dbinc/xa.h /^typedef struct xid_t XID;$/
-XIDDATASIZE ../dbinc/xa.h /^#define XIDDATASIZE 128 \/* size in bytes *\/$/
+WIN32_LEAN_AND_MEAN ../dbinc/win_db.h 51
+WOULDBLOCK ../dbinc/repmgr.h 327
+WRAPPED_CLASS ../dbinc/cxx_int.h /^#define WRAPPED_CLASS(_WRAPPER_CLASS, _IMP_CLASS, /
+XAER_ASYNC ../dbinc/xa.h 167
+XAER_DUPID ../dbinc/xa.h 176
+XAER_INVAL ../dbinc/xa.h 172
+XAER_NOTA ../dbinc/xa.h 171
+XAER_OUTSIDE ../dbinc/xa.h 177
+XAER_PROTO ../dbinc/xa.h 173
+XAER_RMERR ../dbinc/xa.h 169
+XAER_RMFAIL ../dbinc/xa.h 175
+XA_FLAGS ../xa/xa.c 163
+XA_HEURCOM ../dbinc/xa.h 155
+XA_HEURHAZ ../dbinc/xa.h 153
+XA_HEURMIX ../dbinc/xa.h 159
+XA_HEURRB ../dbinc/xa.h 157
+XA_NOMIGRATE ../dbinc/xa.h 151
+XA_OK ../dbinc/xa.h 166
+XA_RBBASE ../dbinc/xa.h 132
+XA_RBCOMMFAIL ../dbinc/xa.h 136
+XA_RBDEADLOCK ../dbinc/xa.h 138
+XA_RBEND ../dbinc/xa.h 149
+XA_RBINTEGRITY ../dbinc/xa.h 139
+XA_RBOTHER ../dbinc/xa.h 142
+XA_RBPROTO ../dbinc/xa.h 145
+XA_RBROLLBACK ../dbinc/xa.h 134
+XA_RBTIMEOUT ../dbinc/xa.h 147
+XA_RBTRANSIENT ../dbinc/xa.h 148
+XA_RDONLY ../dbinc/xa.h 164
+XA_RETRY ../dbinc/xa.h 162
+XID ../dbinc/xa.h 33
+XIDDATASIZE ../dbinc/xa.h 23
XID_FIELD_IS_SET ../txn/txn_stat.c /^#define XID_FIELD_IS_SET(p) \\$/
ZEROPG_ERR_PRINT ../dbinc/db_verify.h /^#define ZEROPG_ERR_PRINT(dbenv, pgno, str) do { /
ZERO_LSN ../dbinc/db_int.in /^#define ZERO_LSN(LSN) do { \\$/
-ZF_LARGE_WRITE ../os/os_fzero.c /^#define ZF_LARGE_WRITE (64 * 1024)$/
-_CRT_SECURE_NO_DEPRECATE ../libdb_java/db_java_wrap.c /^# define _CRT_SECURE_NO_DEPRECATE$/
+ZF_LARGE_WRITE ../os/os_fzero.c 57
+_CRT_SECURE_NO_DEPRECATE ../dbinc/win_db.h 12
_CopyObjBytes ../tcl/tcl_internal.c /^_CopyObjBytes(interp, obj, newp, sizep, freep)$/
-_DB_185_H_ ../dbinc/db_185.in /^#define _DB_185_H_$/
-_DB_AM_H_ ../dbinc/db_am.h /^#define _DB_AM_H_$/
-_DB_BTREE_H_ ../dbinc/btree.h /^#define _DB_BTREE_H_$/
-_DB_CRYPTO_H_ ../dbinc/crypto.h /^#define _DB_CRYPTO_H_$/
-_DB_CXX_H_ ../dbinc/db_cxx.in /^#define _DB_CXX_H_$/
-_DB_CXX_INT_H_ ../dbinc/cxx_int.h /^#define _DB_CXX_INT_H_$/
-_DB_DEBUG_H_ ../dbinc/debug.h /^#define _DB_DEBUG_H_$/
-_DB_DISPATCH_H_ ../dbinc/db_dispatch.h /^#define _DB_DISPATCH_H_$/
-_DB_FOP_H_ ../dbinc/fop.h /^#define _DB_FOP_H_$/
-_DB_GLOBALS_H_ ../dbinc/globals.h /^#define _DB_GLOBALS_H_$/
-_DB_HASH_H_ ../dbinc/hash.h /^#define _DB_HASH_H_$/
-_DB_HMAC_H_ ../dbinc/hmac.h /^#define _DB_HMAC_H_$/
-_DB_H_ ../dbinc/db.in /^#define _DB_H_$/
-_DB_INT_H_ ../dbinc/db_int.in /^#define _DB_INT_H_$/
-_DB_JOIN_H_ ../dbinc/db_join.h /^#define _DB_JOIN_H_$/
-_DB_LOCK_H_ ../dbinc/lock.h /^#define _DB_LOCK_H_$/
-_DB_LOG_H_ ../dbinc/log.h /^#define _DB_LOG_H_$/
-_DB_MP_H_ ../dbinc/mp.h /^#define _DB_MP_H_$/
-_DB_MUTEX_H_ ../dbinc/mutex.h /^#define _DB_MUTEX_H_$/
-_DB_MUTEX_INT_H_ ../dbinc/mutex_int.h /^#define _DB_MUTEX_INT_H_$/
-_DB_OS_H_ ../dbinc/os.h /^#define _DB_OS_H_$/
-_DB_PAGE_H_ ../dbinc/db_page.h /^#define _DB_PAGE_H_$/
-_DB_QAM_H_ ../dbinc/qam.h /^#define _DB_QAM_H_$/
-_DB_QUEUE_H_ ../dbinc/queue.h /^#define _DB_QUEUE_H_$/
-_DB_REGION_H_ ../dbinc/region.h /^#define _DB_REGION_H_$/
-_DB_REPMGR_H_ ../dbinc/repmgr.h /^#define _DB_REPMGR_H_$/
-_DB_REP_H_ ../dbinc/rep.h /^#define _DB_REP_H_$/
-_DB_SERVER_INT_H_ ../dbinc/db_server_int.h /^#define _DB_SERVER_INT_H_$/
-_DB_SHQUEUE_H_ ../dbinc/shqueue.h /^#define _DB_SHQUEUE_H_$/
-_DB_SWAP_H_ ../dbinc/db_swap.h /^#define _DB_SWAP_H_$/
-_DB_TCL_DB_H_ ../dbinc/tcl_db.h /^#define _DB_TCL_DB_H_$/
-_DB_TXN_H_ ../dbinc/txn.h /^#define _DB_TXN_H_$/
-_DB_UPGRADE_H_ ../dbinc/db_upgrade.h /^#define _DB_UPGRADE_H_$/
-_DB_VERIFY_H_ ../dbinc/db_verify.h /^#define _DB_VERIFY_H_$/
-_DB_XA_H_ ../dbinc/xa.h /^#define _DB_XA_H_$/
+_DB_185_H_ ../dbinc/db_185.in 38
+_DB_AM_H_ ../dbinc/db_am.h 9
+_DB_BTREE_H_ ../dbinc/btree.h 44
+_DB_CLOCK_H_ ../dbinc/clock.h 41
+_DB_CRYPTO_H_ ../dbinc/crypto.h 10
+_DB_CXX_H_ ../dbinc/db_cxx.in 10
+_DB_CXX_INT_H_ ../dbinc/cxx_int.h 10
+_DB_DEBUG_H_ ../dbinc/debug.h 10
+_DB_DISPATCH_H_ ../dbinc/db_dispatch.h 38
+_DB_FOP_H_ ../dbinc/fop.h 10
+_DB_GLOBALS_H_ ../dbinc/globals.h 10
+_DB_HASH_H_ ../dbinc/hash.h 45
+_DB_HMAC_H_ ../dbinc/hmac.h 10
+_DB_H_ ../dbinc/db.in 21
+_DB_INT_H_ ../dbinc/db_int.in 10
+_DB_JOIN_H_ ../dbinc/db_join.h 10
+_DB_LOCK_H_ ../dbinc/lock.h 10
+_DB_LOG_H_ ../dbinc/log.h 10
+_DB_MP_H_ ../dbinc/mp.h 10
+_DB_MUTEX_H_ ../dbinc/mutex.h 10
+_DB_MUTEX_INT_H_ ../dbinc/mutex_int.h 10
+_DB_OS_H_ ../dbinc/os.h 10
+_DB_PAGE_H_ ../dbinc/db_page.h 10
+_DB_QAM_H_ ../dbinc/qam.h 10
+_DB_QUEUE_H_ ../dbinc/queue.h 38
+_DB_REGION_H_ ../dbinc/region.h 10
+_DB_REPMGR_H_ ../dbinc/repmgr.h 10
+_DB_REP_H_ ../dbinc/rep.h 10
+_DB_SERVER_INT_H_ ../dbinc/db_server_int.h 10
+_DB_SHQUEUE_H_ ../dbinc/shqueue.h 10
+_DB_SWAP_H_ ../dbinc/db_swap.h 38
+_DB_TCL_DB_H_ ../dbinc/tcl_db.h 10
+_DB_TXN_H_ ../dbinc/txn.h 10
+_DB_UPGRADE_H_ ../dbinc/db_upgrade.h 10
+_DB_VERIFY_H_ ../dbinc/db_verify.h 10
+_DB_XA_H_ ../dbinc/xa.h 14
_DbInfoDelete ../tcl/tcl_db.c /^_DbInfoDelete(interp, dbip)$/
_DeleteInfo ../tcl/tcl_internal.c /^_DeleteInfo(p)$/
_EnvInfoDelete ../tcl/tcl_env.c /^_EnvInfoDelete(interp, envip)$/
@@ -2188,24 +2574,26 @@ _SetListElemWideInt ../tcl/tcl_internal.c /^_SetListElemWideInt(interp, list, el
_SetListRecnoElem ../tcl/tcl_internal.c /^_SetListRecnoElem(interp, list, elem1, elem2, e2si/
_SetMultiList ../tcl/tcl_internal.c /^_SetMultiList(interp, list, key, data, type, flag)/
_TxnInfoDelete ../tcl/tcl_txn.c /^_TxnInfoDelete(interp, txnip)$/
-__BIT_TYPES_DEFINED__ ../dbinc/db.in /^#define __BIT_TYPES_DEFINED__$/
-__DBC_INTERNAL ../dbinc/db_int.in /^#define __DBC_INTERNAL \\$/
+_WIN32_WINNT ../dbinc/win_db.h 19
+__BIT_TYPES_DEFINED__ ../dbinc/db.in 64
+__DBC_INTERNAL ../dbinc/db_int.in 536
__DB_STD ../dbinc/db_cxx.in /^#define __DB_STD(x) std::x$/
__ENV_LPUT ../dbinc/db_am.h /^#define __ENV_LPUT(dbenv, lock) \\$/
-__INCLUDE_NETWORKING ../clib/getaddrinfo.c /^#define __INCLUDE_NETWORKING 1$/
-__INCLUDE_SELECT_H ../os/os_sleep.c /^#define __INCLUDE_SELECT_H 1$/
+__INCLUDE_DIRECTORY ../os/os_dir.c 11
+__INCLUDE_NETWORKING ../clib/getaddrinfo.c 11
+__INCLUDE_SELECT_H ../os/os_sleep.c 11
__LPUT ../dbinc/db_am.h /^#define __LPUT(dbc, lock) \\$/
-__P ../dbinc/db_185.in /^#define __P(protos) protos \/* ANSI C prototypes /
-__P_DUPLICATE ../dbinc/db_page.h /^#define __P_DUPLICATE 1 \/* Duplicate. DEPRECATED /
-__RIJNDAEL_ALG_FST_H ../crypto/rijndael/rijndael-alg-fst.h /^#define __RIJNDAEL_ALG_FST_H$/
-__RIJNDAEL_API_FST_H ../crypto/rijndael/rijndael-api-fst.h /^#define __RIJNDAEL_API_FST_H$/
-__R_UNUSED ../dbinc/db_185.in /^#define __R_UNUSED 2 \/* UNUSED *\/$/
+__P ../dbinc/db_185.in /^#define __P(protos) protos \/* ANSI C prototypes */
+__P_DUPLICATE ../dbinc/db_page.h 37
+__RIJNDAEL_ALG_FST_H ../crypto/rijndael/rijndael-alg-fst.h 30
+__RIJNDAEL_API_FST_H ../crypto/rijndael/rijndael-api-fst.h 42
+__R_UNUSED ../dbinc/db_185.in 97
__SH_LIST_PREV_OFF ../dbinc/shqueue.h /^#define __SH_LIST_PREV_OFF(elm, field) \\$/
__SH_TAILQ_LAST_OFF ../dbinc/shqueue.h /^#define __SH_TAILQ_LAST_OFF(head) \\$/
__SH_TAILQ_PREV_OFF ../dbinc/shqueue.h /^#define __SH_TAILQ_PREV_OFF(elm, field) \\$/
+__STDC__ ../dbinc/win_db.h 104
__TLPUT ../dbinc/db_am.h /^#define __TLPUT(dbc, lock) \\$/
__absname ../log/log_archive.c /^__absname(dbenv, pref, name, newnamep)$/
-__ack_waiters_table ../repmgr/repmgr_windows.c /^struct __ack_waiters_table {$/
__aes_adj_size ../crypto/aes_method.c /^__aes_adj_size(len)$/
__aes_close ../crypto/aes_method.c /^__aes_close(dbenv, data)$/
__aes_decrypt ../crypto/aes_method.c /^__aes_decrypt(dbenv, aes_data, iv, cipher, cipher_/
@@ -2224,27 +2612,11 @@ __bam_adj_read ../btree/btree_auto.c /^__bam_adj_read(dbenv, recbuf, argpp)$/
__bam_adj_recover ../btree/bt_rec.c /^__bam_adj_recover(dbenv, dbtp, lsnp, op, info)$/
__bam_adjindx ../btree/bt_delete.c /^__bam_adjindx(dbc, h, indx, indx_copy, is_insert)$/
__bam_adjust ../btree/bt_rsearch.c /^__bam_adjust(dbc, adjust)$/
-__bam_broot ../btree/bt_split.c /^__bam_broot(dbc, rootp, lp, rp)$/
+__bam_broot ../btree/bt_split.c /^__bam_broot(dbc, rootp, split, lp, rp)$/
__bam_build ../btree/bt_put.c /^__bam_build(dbc, op, dbt, h, indx, nbytes)$/
__bam_bulk ../btree/bt_cursor.c /^__bam_bulk(dbc, data, flags)$/
__bam_bulk_duplicates ../btree/bt_cursor.c /^__bam_bulk_duplicates(dbc, pgno, dbuf, keyoff, off/
__bam_bulk_overflow ../btree/bt_cursor.c /^__bam_bulk_overflow(dbc, len, pgno, dp)$/
-__bam_c_close ../btree/bt_cursor.c /^__bam_c_close(dbc, root_pgno, rmroot)$/
-__bam_c_count ../btree/bt_cursor.c /^__bam_c_count(dbc, recnop)$/
-__bam_c_del ../btree/bt_cursor.c /^__bam_c_del(dbc)$/
-__bam_c_destroy ../btree/bt_cursor.c /^__bam_c_destroy(dbc)$/
-__bam_c_dup ../btree/bt_cursor.c /^__bam_c_dup(orig_dbc, new_dbc)$/
-__bam_c_get ../btree/bt_cursor.c /^__bam_c_get(dbc, key, data, flags, pgnop)$/
-__bam_c_getstack ../btree/bt_cursor.c /^__bam_c_getstack(dbc)$/
-__bam_c_init ../btree/bt_cursor.c /^__bam_c_init(dbc, dbtype)$/
-__bam_c_next ../btree/bt_cursor.c /^__bam_c_next(dbc, initial_move, deleted_okay)$/
-__bam_c_physdel ../btree/bt_cursor.c /^__bam_c_physdel(dbc)$/
-__bam_c_prev ../btree/bt_cursor.c /^__bam_c_prev(dbc)$/
-__bam_c_put ../btree/bt_cursor.c /^__bam_c_put(dbc, key, data, flags, pgnop)$/
-__bam_c_refresh ../btree/bt_cursor.c /^__bam_c_refresh(dbc)$/
-__bam_c_rget ../btree/bt_cursor.c /^__bam_c_rget(dbc, data)$/
-__bam_c_search ../btree/bt_cursor.c /^__bam_c_search(dbc, root_pgno, key, flags, exactp)/
-__bam_c_writelock ../btree/bt_cursor.c /^__bam_c_writelock(dbc)$/
__bam_ca_delete ../btree/bt_curadj.c /^__bam_ca_delete(dbp, pgno, indx, delete, countp)$/
__bam_ca_di ../btree/bt_curadj.c /^__bam_ca_di(my_dbc, pgno, indx, adjust)$/
__bam_ca_dup ../btree/bt_curadj.c /^__bam_ca_dup(my_dbc, first, fpgno, fi, tpgno, ti)$/
@@ -2317,7 +2689,7 @@ __bam_pgno_print ../btree/btree_autop.c /^__bam_pgno_print(dbenv, dbtp, lsnp, no
__bam_pgno_read ../btree/btree_auto.c /^__bam_pgno_read(dbenv, recbuf, argpp)$/
__bam_pgno_recover ../btree/bt_rec.c /^__bam_pgno_recover(dbenv, dbtp, lsnp, op, info)$/
__bam_pgout ../btree/bt_conv.c /^__bam_pgout(dbenv, dummydbp, pg, pp, cookie)$/
-__bam_pinsert ../btree/bt_split.c /^__bam_pinsert(dbc, parent, lchild, rchild, flags)$/
+__bam_pinsert ../btree/bt_split.c /^__bam_pinsert(dbc, parent, split, lchild, rchild, /
__bam_print_cursor ../btree/bt_stat.c /^__bam_print_cursor(dbc)$/
__bam_psplit ../btree/bt_split.c /^__bam_psplit(dbc, cp, lp, rp, splitret)$/
__bam_pupdate ../btree/bt_delete.c /^__bam_pupdate(dbc, lpg)$/
@@ -2385,14 +2757,26 @@ __bam_vrfy_meta ../btree/bt_verify.c /^__bam_vrfy_meta(dbp, vdp, meta, pgno, fla
__bam_vrfy_structure ../btree/bt_verify.c /^__bam_vrfy_structure(dbp, vdp, meta_pgno, flags)$/
__bam_vrfy_subtree ../btree/bt_verify.c /^__bam_vrfy_subtree(dbp, vdp, pgno, l, r, flags, le/
__bam_vrfy_treeorder ../btree/bt_verify.c /^__bam_vrfy_treeorder(dbp, h, lp, rp, func, flags)$/
-__bh ../dbinc/mp.h /^struct __bh {$/
-__bh_frozen_a ../dbinc/mp.h /^struct __bh_frozen_a {$/
-__bh_frozen_p ../dbinc/mp.h /^struct __bh_frozen_p {$/
+__bamc_close ../btree/bt_cursor.c /^__bamc_close(dbc, root_pgno, rmroot)$/
+__bamc_count ../btree/bt_cursor.c /^__bamc_count(dbc, recnop)$/
+__bamc_del ../btree/bt_cursor.c /^__bamc_del(dbc)$/
+__bamc_destroy ../btree/bt_cursor.c /^__bamc_destroy(dbc)$/
+__bamc_dup ../btree/bt_cursor.c /^__bamc_dup(orig_dbc, new_dbc)$/
+__bamc_get ../btree/bt_cursor.c /^__bamc_get(dbc, key, data, flags, pgnop)$/
+__bamc_getstack ../btree/bt_cursor.c /^__bamc_getstack(dbc)$/
+__bamc_init ../btree/bt_cursor.c /^__bamc_init(dbc, dbtype)$/
+__bamc_next ../btree/bt_cursor.c /^__bamc_next(dbc, initial_move, deleted_okay)$/
+__bamc_physdel ../btree/bt_cursor.c /^__bamc_physdel(dbc)$/
+__bamc_prev ../btree/bt_cursor.c /^__bamc_prev(dbc)$/
+__bamc_put ../btree/bt_cursor.c /^__bamc_put(dbc, key, data, flags, pgnop)$/
+__bamc_refresh ../btree/bt_cursor.c /^__bamc_refresh(dbc)$/
+__bamc_rget ../btree/bt_cursor.c /^__bamc_rget(dbc, data)$/
+__bamc_search ../btree/bt_cursor.c /^__bamc_search(dbc, root_pgno, key, flags, exactp)$/
+__bamc_writelock ../btree/bt_cursor.c /^__bamc_writelock(dbc)$/
__bhcmp ../mp/mp_sync.c /^__bhcmp(p1, p2)$/
-__btree ../dbinc/btree.h /^struct __btree { \/* Btree access method. *\/$/
__build_data ../log/log_archive.c /^__build_data(dbenv, pref, listp)$/
__cdsgroup_abort ../db/db_cds.c /^static int __cdsgroup_abort(txn)$/
-__cdsgroup_begin ../db/db_cds.c /^int __cdsgroup_begin(dbenv, txnpp)$/
+__cdsgroup_begin ../db/db_cds.c /^__cdsgroup_begin(dbenv, txnpp)$/
__cdsgroup_commit ../db/db_cds.c /^static int __cdsgroup_commit(txn, flags)$/
__cdsgroup_discard ../db/db_cds.c /^static int __cdsgroup_discard(txn, flags)$/
__cdsgroup_id ../db/db_cds.c /^static u_int32_t __cdsgroup_id(txn)$/
@@ -2403,9 +2787,6 @@ __cdsgroup_set_timeout ../db/db_cds.c /^static int __cdsgroup_set_timeout(txn, t
__cmpfunc ../log/log_archive.c /^__cmpfunc(p1, p2)$/
__config_parse ../env/env_config.c /^__config_parse(dbenv, s, lc)$/
__config_split ../env/env_config.c /^__config_split(input, argv)$/
-__cq_aq ../dbinc/db.in /^ struct __cq_aq {$/
-__cq_fq ../dbinc/db.in /^ struct __cq_fq {$/
-__cq_jq ../dbinc/db.in /^ struct __cq_jq {$/
__crdel_init_print ../db/crdel_autop.c /^__crdel_init_print(dbenv, dtabp, dtabsizep)$/
__crdel_init_recover ../db/crdel_auto.c /^__crdel_init_recover(dbenv, dtabp, dtabsizep)$/
__crdel_inmem_create_log ../db/crdel_auto.c /^__crdel_inmem_create_log(dbenv, txnp, ret_lsnp, fl/
@@ -2425,14 +2806,11 @@ __crdel_metasub_print ../db/crdel_autop.c /^__crdel_metasub_print(dbenv, dbtp, l
__crdel_metasub_read ../db/crdel_auto.c /^__crdel_metasub_read(dbenv, recbuf, argpp)$/
__crdel_metasub_recover ../db/crdel_rec.c /^__crdel_metasub_recover(dbenv, dbtp, lsnp, op, inf/
__crypto_algsetup ../crypto/crypto.c /^__crypto_algsetup(dbenv, db_cipher, alg, do_init)$/
-__crypto_dbenv_close ../crypto/crypto.c /^__crypto_dbenv_close(dbenv)$/
__crypto_decrypt_meta ../crypto/crypto.c /^__crypto_decrypt_meta(dbenv, dbp, mbuf, do_metachk/
-__crypto_region_destroy ../crypto/crypto.c /^__crypto_region_destroy(dbenv)$/
+__crypto_env_close ../crypto/crypto.c /^__crypto_env_close(dbenv)$/
+__crypto_env_refresh ../crypto/crypto.c /^__crypto_env_refresh(dbenv)$/
__crypto_region_init ../crypto/crypto.c /^__crypto_region_init(dbenv)$/
__crypto_set_passwd ../crypto/crypto.c /^__crypto_set_passwd(dbenv_src, dbenv_dest)$/
-__cursor ../dbinc/btree.h /^struct __cursor {$/
-__data ../env/db_salloc.c /^struct __data {$/
-__db ../dbinc/db.in /^struct __db {$/
__db185_open ../db185/db185.c /^__db185_open(file, oflags, mode, type, openinfo)$/
__db_31_offdup ../db/db_upg_opd.c /^__db_31_offdup(dbp, real_name, fhp, sorted, pgnop)/
__db_SHA1Final ../hmac/sha1.c /^__db_SHA1Final(digest, context)$/
@@ -2446,9 +2824,8 @@ __db_addrem_log ../db/db_auto.c /^__db_addrem_log(dbp, txnp, ret_lsnp, flags,$/
__db_addrem_print ../db/db_autop.c /^__db_addrem_print(dbenv, dbtp, lsnp, notused2, not/
__db_addrem_read ../db/db_auto.c /^__db_addrem_read(dbenv, recbuf, argpp)$/
__db_addrem_recover ../db/db_rec.c /^__db_addrem_recover(dbenv, dbtp, lsnp, op, info)$/
-__db_allocinfo ../os/os_alloc.c /^union __db_allocinfo {$/
__db_append_primary ../db/db_am.c /^__db_append_primary(dbc, key, data)$/
-__db_appname ../env/env_open.c /^__db_appname(dbenv, appname, file, tmp_oflags, fhp/
+__db_appname ../env/env_name.c /^__db_appname(dbenv, appname, file, tmp_oflags, fhp/
__db_apprec ../env/env_recover.c /^__db_apprec(dbenv, max_lsn, trunclsn, update, flag/
__db_assert ../common/db_err.c /^__db_assert(dbenv, e, file, line)$/
__db_associate ../db/db_am.c /^__db_associate(dbp, txn, sdbp, callback, flags)$/
@@ -2463,45 +2840,17 @@ __db_big_recover ../db/db_rec.c /^__db_big_recover(dbenv, dbtp, lsnp, op, info)$
__db_blockDecrypt ../crypto/rijndael/rijndael-api-fst.c /^__db_blockDecrypt(cipher, key, input, inputLen, ou/
__db_blockEncrypt ../crypto/rijndael/rijndael-api-fst.c /^__db_blockEncrypt(cipher, key, input, inputLen, ou/
__db_bmeta ../db/db_pr.c /^__db_bmeta(dbp, h, flags)$/
-__db_bt_stat ../dbinc/db.in /^struct __db_bt_stat {$/
__db_build_bi ../db/db_upg_opd.c /^__db_build_bi(dbp, fhp, ipage, page, indx, nomemp)/
__db_build_ri ../db/db_upg_opd.c /^__db_build_ri(dbp, fhp, ipage, page, indx, nomemp)/
__db_buildpartial ../db/db_cam.c /^__db_buildpartial(dbp, oldrec, partial, newrec)$/
__db_byteorder ../common/db_byteorder.c /^__db_byteorder(dbenv, lorder)$/
__db_byteswap ../db/db_conv.c /^__db_byteswap(dbenv, dbp, pg, h, pagesize, pgin)$/
-__db_c_cleanup ../db/db_cam.c /^__db_c_cleanup(dbc, dbc_n, failed)$/
-__db_c_close ../db/db_cam.c /^__db_c_close(dbc)$/
-__db_c_close_pp ../db/db_iface.c /^__db_c_close_pp(dbc)$/
-__db_c_count ../db/db_cam.c /^__db_c_count(dbc, recnop)$/
-__db_c_count_pp ../db/db_iface.c /^__db_c_count_pp(dbc, recnop, flags)$/
-__db_c_del ../db/db_cam.c /^__db_c_del(dbc, flags)$/
-__db_c_del_arg ../db/db_iface.c /^__db_c_del_arg(dbc, flags)$/
-__db_c_del_oldskey ../db/db_cam.c /^__db_c_del_oldskey(sdbp, dbc_arg, skey, pkey, oldd/
-__db_c_del_pp ../db/db_iface.c /^__db_c_del_pp(dbc, flags)$/
-__db_c_del_primary ../db/db_cam.c /^__db_c_del_primary(dbc)$/
-__db_c_del_secondary ../db/db_cam.c /^__db_c_del_secondary(dbc)$/
-__db_c_destroy ../db/db_cam.c /^__db_c_destroy(dbc)$/
-__db_c_dup ../db/db_cam.c /^__db_c_dup(dbc_orig, dbcp, flags)$/
-__db_c_dup_pp ../db/db_iface.c /^__db_c_dup_pp(dbc, dbcp, flags)$/
-__db_c_get ../db/db_cam.c /^__db_c_get(dbc_arg, key, data, flags)$/
-__db_c_get_arg ../db/db_iface.c /^__db_c_get_arg(dbc, key, data, flags)$/
-__db_c_get_pp ../db/db_iface.c /^__db_c_get_pp(dbc, key, data, flags)$/
-__db_c_idup ../db/db_cam.c /^__db_c_idup(dbc_orig, dbcp, flags)$/
-__db_c_newopd ../db/db_cam.c /^__db_c_newopd(dbc_parent, root, oldopd, dbcp)$/
-__db_c_pget ../db/db_cam.c /^__db_c_pget(dbc, skey, pkey, data, flags)$/
-__db_c_pget_arg ../db/db_iface.c /^__db_c_pget_arg(dbc, pkey, flags)$/
-__db_c_pget_pp ../db/db_iface.c /^__db_c_pget_pp(dbc, skey, pkey, data, flags)$/
-__db_c_pget_recno ../db/db_cam.c /^__db_c_pget_recno(sdbc, pkey, data, flags)$/
-__db_c_put ../db/db_cam.c /^__db_c_put(dbc_arg, key, data, flags)$/
-__db_c_put_arg ../db/db_iface.c /^__db_c_put_arg(dbc, key, data, flags)$/
-__db_c_put_pp ../db/db_iface.c /^__db_c_put_pp(dbc, key, data, flags)$/
-__db_c_secondary_get_pp ../db/db_cam.c /^__db_c_secondary_get_pp(dbc, skey, data, flags)$/
__db_check_chksum ../hmac/hmac.c /^__db_check_chksum(dbenv, hdr, db_cipher, chksum, d/
__db_check_lsn ../common/db_err.c /^__db_check_lsn(dbenv, lsn, prev)$/
-__db_check_txn ../common/db_err.c /^__db_check_txn(dbp, txn, assoc_lid, read_op)$/
-__db_chk_meta ../db/db_open.c /^__db_chk_meta(dbenv, dbp, meta, do_metachk)$/
+__db_check_skeyset ../db/db_cam.c /^__db_check_skeyset(sdbp, skeyp)$/
+__db_check_txn ../common/db_err.c /^__db_check_txn(dbp, txn, assoc_locker, read_op)$/
+__db_chk_meta ../db/db_open.c /^__db_chk_meta(dbenv, dbp, meta, flags)$/
__db_chksum ../hmac/hmac.c /^__db_chksum(hdr, data, data_len, mac_key, store)$/
-__db_cipher ../dbinc/crypto.h /^struct __db_cipher {$/
__db_cipherInit ../crypto/rijndael/rijndael-api-fst.c /^__db_cipherInit(cipher, mode, IV)$/
__db_cipherUpdateRounds ../crypto/rijndael/rijndael-api-fst.c /^__db_cipherUpdateRounds(cipher, key, input, inputL/
__db_cksum_log ../db/db_auto.c /^__db_cksum_log(dbenv, txnp, ret_lsnp, flags)$/
@@ -2512,9 +2861,9 @@ __db_close ../db/db.c /^__db_close(dbp, txn, flags)$/
__db_close_int ../rpc_server/c/db_server_util.c /^__db_close_int(id, flags)$/
__db_close_pp ../db/db_iface.c /^__db_close_pp(dbp, flags)$/
__db_close_proc ../rpc_server/c/db_server_proc.c /^__db_close_proc(dbpcl_id, flags, replyp)$/
-__db_commit ../dbinc/log.h /^struct __db_commit {$/
-__db_compact ../dbinc/db.in /^struct __db_compact {$/
+__db_coff ../db/db_overflow.c /^__db_coff(dbp, txn, dbt, match, cmpfunc, cmpp)$/
__db_compact_pp ../db/db_iface.c /^__db_compact_pp(dbp, txn, start, stop, c_data, fla/
+__db_create_internal ../db/db_method.c /^__db_create_internal(dbpp, dbenv, flags)$/
__db_create_proc ../rpc_server/c/db_server_proc.c /^__db_create_proc(dbenvcl_id, flags, replyp)$/
__db_ctime ../clib/ctime.c /^__db_ctime(tod, time_buf)$/
__db_curinval ../db/db_iface.c /^__db_curinval(dbenv)$/
@@ -2524,55 +2873,57 @@ __db_cursor_check ../db/db_truncate.c /^__db_cursor_check(dbp)$/
__db_cursor_int ../db/db_am.c /^__db_cursor_int(dbp, txn, dbtype, root, is_opd, lo/
__db_cursor_pp ../db/db_iface.c /^__db_cursor_pp(dbp, txn, dbcp, flags)$/
__db_cursor_proc ../rpc_server/c/db_server_proc.c /^__db_cursor_proc(dbpcl_id, txnpcl_id, flags, reply/
-__db_db_associate_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_associate_4005__SVCSUFFIX__(msg, req)$/
-__db_db_close_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_close_4005__SVCSUFFIX__(msg, req)$/
-__db_db_create_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_create_4005__SVCSUFFIX__(msg, req)$/
-__db_db_cursor_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_cursor_4005__SVCSUFFIX__(msg, req)$/
-__db_db_del_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_del_4005__SVCSUFFIX__(msg, req)$/
-__db_db_get_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_get_4005__SVCSUFFIX__(msg, req)$/
-__db_db_get_bt_minkey_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_get_bt_minkey_4005__SVCSUFFIX__(msg, req)$/
-__db_db_get_dbname_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_get_dbname_4005__SVCSUFFIX__(msg, req)$/
-__db_db_get_encrypt_flags_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_get_encrypt_flags_4005__SVCSUFFIX__(msg, r/
-__db_db_get_flags_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_get_flags_4005__SVCSUFFIX__(msg, req)$/
-__db_db_get_h_ffactor_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_get_h_ffactor_4005__SVCSUFFIX__(msg, req)$/
-__db_db_get_h_nelem_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_get_h_nelem_4005__SVCSUFFIX__(msg, req)$/
-__db_db_get_lorder_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_get_lorder_4005__SVCSUFFIX__(msg, req)$/
-__db_db_get_open_flags_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_get_open_flags_4005__SVCSUFFIX__(msg, req)/
-__db_db_get_pagesize_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_get_pagesize_4005__SVCSUFFIX__(msg, req)$/
-__db_db_get_q_extentsize_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_get_q_extentsize_4005__SVCSUFFIX__(msg, re/
-__db_db_get_re_delim_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_get_re_delim_4005__SVCSUFFIX__(msg, req)$/
-__db_db_get_re_len_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_get_re_len_4005__SVCSUFFIX__(msg, req)$/
-__db_db_get_re_pad_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_get_re_pad_4005__SVCSUFFIX__(msg, req)$/
-__db_db_join_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_join_4005__SVCSUFFIX__(msg, req)$/
-__db_db_key_range_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_key_range_4005__SVCSUFFIX__(msg, req)$/
-__db_db_open_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_open_4005__SVCSUFFIX__(msg, req)$/
-__db_db_pget_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_pget_4005__SVCSUFFIX__(msg, req)$/
-__db_db_put_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_put_4005__SVCSUFFIX__(msg, req)$/
-__db_db_remove_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_remove_4005__SVCSUFFIX__(msg, req)$/
-__db_db_rename_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_rename_4005__SVCSUFFIX__(msg, req)$/
-__db_db_set_bt_minkey_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_set_bt_minkey_4005__SVCSUFFIX__(msg, req)$/
-__db_db_set_encrypt_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_set_encrypt_4005__SVCSUFFIX__(msg, req)$/
-__db_db_set_flags_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_set_flags_4005__SVCSUFFIX__(msg, req)$/
-__db_db_set_h_ffactor_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_set_h_ffactor_4005__SVCSUFFIX__(msg, req)$/
-__db_db_set_h_nelem_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_set_h_nelem_4005__SVCSUFFIX__(msg, req)$/
-__db_db_set_lorder_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_set_lorder_4005__SVCSUFFIX__(msg, req)$/
-__db_db_set_pagesize_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_set_pagesize_4005__SVCSUFFIX__(msg, req)$/
-__db_db_set_q_extentsize_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_set_q_extentsize_4005__SVCSUFFIX__(msg, re/
-__db_db_set_re_delim_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_set_re_delim_4005__SVCSUFFIX__(msg, req)$/
-__db_db_set_re_len_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_set_re_len_4005__SVCSUFFIX__(msg, req)$/
-__db_db_set_re_pad_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_set_re_pad_4005__SVCSUFFIX__(msg, req)$/
-__db_db_stat_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_stat_4005__SVCSUFFIX__(msg, req)$/
-__db_db_sync_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_sync_4005__SVCSUFFIX__(msg, req)$/
-__db_db_truncate_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_truncate_4005__SVCSUFFIX__(msg, req)$/
-__db_dbc_c_close_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_dbc_c_close_4005__SVCSUFFIX__(msg, req)$/
-__db_dbc_c_count_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_dbc_c_count_4005__SVCSUFFIX__(msg, req)$/
-__db_dbc_c_del_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_dbc_c_del_4005__SVCSUFFIX__(msg, req)$/
-__db_dbc_c_dup_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_dbc_c_dup_4005__SVCSUFFIX__(msg, req)$/
-__db_dbc_c_get_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_dbc_c_get_4005__SVCSUFFIX__(msg, req)$/
-__db_dbc_c_pget_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_dbc_c_pget_4005__SVCSUFFIX__(msg, req)$/
-__db_dbc_c_put_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_dbc_c_put_4005__SVCSUFFIX__(msg, req)$/
-__db_dbenv_mpool ../db/db.c /^__db_dbenv_mpool(dbp, fname, flags)$/
-__db_dbenv_setup ../db/db.c /^__db_dbenv_setup(dbp, txn, fname, dname, id, flags/
+__db_db_associate_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_associate_4006__SVCSUFFIX__(msg, req)$/
+__db_db_close_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_close_4006__SVCSUFFIX__(msg, req)$/
+__db_db_create_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_create_4006__SVCSUFFIX__(msg, req)$/
+__db_db_cursor_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_cursor_4006__SVCSUFFIX__(msg, req)$/
+__db_db_del_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_del_4006__SVCSUFFIX__(msg, req)$/
+__db_db_get_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_get_4006__SVCSUFFIX__(msg, req)$/
+__db_db_get_bt_minkey_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_get_bt_minkey_4006__SVCSUFFIX__(msg, req)$/
+__db_db_get_dbname_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_get_dbname_4006__SVCSUFFIX__(msg, req)$/
+__db_db_get_encrypt_flags_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_get_encrypt_flags_4006__SVCSUFFIX__(msg, r/
+__db_db_get_flags_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_get_flags_4006__SVCSUFFIX__(msg, req)$/
+__db_db_get_h_ffactor_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_get_h_ffactor_4006__SVCSUFFIX__(msg, req)$/
+__db_db_get_h_nelem_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_get_h_nelem_4006__SVCSUFFIX__(msg, req)$/
+__db_db_get_lorder_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_get_lorder_4006__SVCSUFFIX__(msg, req)$/
+__db_db_get_open_flags_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_get_open_flags_4006__SVCSUFFIX__(msg, req)/
+__db_db_get_pagesize_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_get_pagesize_4006__SVCSUFFIX__(msg, req)$/
+__db_db_get_priority_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_get_priority_4006__SVCSUFFIX__(msg, req)$/
+__db_db_get_q_extentsize_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_get_q_extentsize_4006__SVCSUFFIX__(msg, re/
+__db_db_get_re_delim_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_get_re_delim_4006__SVCSUFFIX__(msg, req)$/
+__db_db_get_re_len_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_get_re_len_4006__SVCSUFFIX__(msg, req)$/
+__db_db_get_re_pad_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_get_re_pad_4006__SVCSUFFIX__(msg, req)$/
+__db_db_join_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_join_4006__SVCSUFFIX__(msg, req)$/
+__db_db_key_range_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_key_range_4006__SVCSUFFIX__(msg, req)$/
+__db_db_open_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_open_4006__SVCSUFFIX__(msg, req)$/
+__db_db_pget_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_pget_4006__SVCSUFFIX__(msg, req)$/
+__db_db_put_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_put_4006__SVCSUFFIX__(msg, req)$/
+__db_db_remove_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_remove_4006__SVCSUFFIX__(msg, req)$/
+__db_db_rename_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_rename_4006__SVCSUFFIX__(msg, req)$/
+__db_db_set_bt_minkey_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_set_bt_minkey_4006__SVCSUFFIX__(msg, req)$/
+__db_db_set_encrypt_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_set_encrypt_4006__SVCSUFFIX__(msg, req)$/
+__db_db_set_flags_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_set_flags_4006__SVCSUFFIX__(msg, req)$/
+__db_db_set_h_ffactor_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_set_h_ffactor_4006__SVCSUFFIX__(msg, req)$/
+__db_db_set_h_nelem_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_set_h_nelem_4006__SVCSUFFIX__(msg, req)$/
+__db_db_set_lorder_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_set_lorder_4006__SVCSUFFIX__(msg, req)$/
+__db_db_set_pagesize_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_set_pagesize_4006__SVCSUFFIX__(msg, req)$/
+__db_db_set_priority_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_set_priority_4006__SVCSUFFIX__(msg, req)$/
+__db_db_set_q_extentsize_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_set_q_extentsize_4006__SVCSUFFIX__(msg, re/
+__db_db_set_re_delim_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_set_re_delim_4006__SVCSUFFIX__(msg, req)$/
+__db_db_set_re_len_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_set_re_len_4006__SVCSUFFIX__(msg, req)$/
+__db_db_set_re_pad_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_set_re_pad_4006__SVCSUFFIX__(msg, req)$/
+__db_db_stat_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_stat_4006__SVCSUFFIX__(msg, req)$/
+__db_db_sync_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_sync_4006__SVCSUFFIX__(msg, req)$/
+__db_db_truncate_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_db_truncate_4006__SVCSUFFIX__(msg, req)$/
+__db_dbc_close_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_dbc_close_4006__SVCSUFFIX__(msg, req)$/
+__db_dbc_count_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_dbc_count_4006__SVCSUFFIX__(msg, req)$/
+__db_dbc_del_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_dbc_del_4006__SVCSUFFIX__(msg, req)$/
+__db_dbc_dup_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_dbc_dup_4006__SVCSUFFIX__(msg, req)$/
+__db_dbc_get_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_dbc_get_4006__SVCSUFFIX__(msg, req)$/
+__db_dbc_get_priority_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_dbc_get_priority_4006__SVCSUFFIX__(msg, req)$/
+__db_dbc_pget_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_dbc_pget_4006__SVCSUFFIX__(msg, req)$/
+__db_dbc_put_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_dbc_put_4006__SVCSUFFIX__(msg, req)$/
+__db_dbc_set_priority_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_dbc_set_priority_4006__SVCSUFFIX__(msg, req)$/
__db_dbm_close ../dbm/dbm.c /^__db_dbm_close()$/
__db_dbm_delete ../dbm/dbm.c /^__db_dbm_delete(key)$/
__db_dbm_fetch ../dbm/dbm.c /^__db_dbm_fetch(key)$/
@@ -2580,21 +2931,18 @@ __db_dbm_firstkey ../dbm/dbm.c /^__db_dbm_firstkey()$/
__db_dbm_init ../dbm/dbm.c /^__db_dbm_init(file)$/
__db_dbm_nextkey ../dbm/dbm.c /^__db_dbm_nextkey(key)$/
__db_dbm_store ../dbm/dbm.c /^__db_dbm_store(key, dat)$/
-__db_dbt ../dbinc/db.in /^struct __db_dbt {$/
__db_dbtxn_remove ../db/db_remove.c /^__db_dbtxn_remove(dbp, txn, name, subdb)$/
__db_dbtype_to_string ../db/db_pr.c /^__db_dbtype_to_string(type)$/
__db_debug_log ../db/db_auto.c /^__db_debug_log(dbenv, txnp, ret_lsnp, flags,$/
__db_debug_print ../db/db_autop.c /^__db_debug_print(dbenv, dbtp, lsnp, notused2, notu/
__db_debug_read ../db/db_auto.c /^__db_debug_read(dbenv, recbuf, argpp)$/
__db_debug_recover ../db/db_rec.c /^__db_debug_recover(dbenv, dbtp, lsnp, op, info)$/
+__db_decrypt_pg ../db/db_conv.c /^__db_decrypt_pg (dbenv, dbp, pagep)$/
__db_del ../db/db_am.c /^__db_del(dbp, txn, key, flags)$/
__db_del_arg ../db/db_iface.c /^__db_del_arg(dbp, key, flags)$/
__db_del_pp ../db/db_iface.c /^__db_del_pp(dbp, txn, key, flags)$/
__db_del_proc ../rpc_server/c/db_server_proc.c /^__db_del_proc(dbpcl_id, txnpcl_id, keydlen, keydof/
__db_derive_mac ../hmac/hmac.c /^__db_derive_mac(passwd, plen, mac_key)$/
-__db_des_destroy ../env/env_region.c /^__db_des_destroy(dbenv, rp)$/
-__db_des_get ../env/env_region.c /^__db_des_get(dbenv, env_infop, infop, rpp)$/
-__db_difftime ../common/db_clock.c /^__db_difftime(ssec, esec, susec, eusec, secp, usec/
__db_disassociate ../db/db.c /^__db_disassociate(sdbp)$/
__db_dispatch ../db/db_dispatch.c /^__db_dispatch(dbenv, dtab, dtabsize, db, lsnp, red/
__db_ditem ../db/db_dup.c /^__db_ditem(dbc, pagep, indx, nbytes)$/
@@ -2607,37 +2955,34 @@ __db_dump ../db/db_pr.c /^__db_dump(dbp, subname, callback, handle, pflag, k/
__db_dump_pp ../db/db_pr.c /^__db_dump_pp(dbp, subname, callback, handle, pflag/
__db_dumptree ../db/db_pr.c /^__db_dumptree(dbp, txn, op, name)$/
__db_duperr ../db/db_cam.c /^__db_duperr(dbp, flags)$/
-__db_e_attach ../env/env_region.c /^__db_e_attach(dbenv, init_flagsp)$/
-__db_e_detach ../env/env_region.c /^__db_e_detach(dbenv, destroy)$/
-__db_e_golive ../env/env_region.c /^__db_e_golive(dbenv)$/
-__db_e_remfile ../env/env_region.c /^__db_e_remfile(dbenv)$/
-__db_e_remove ../env/env_region.c /^__db_e_remove(dbenv, flags)$/
-__db_env ../dbinc/db.in /^struct __db_env {$/
-__db_env_cdsgroup_begin_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_env_cdsgroup_begin_4005__SVCSUFFIX__(msg, req/
-__db_env_close_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_env_close_4005__SVCSUFFIX__(msg, req)$/
+__db_encrypt_and_checksum_pg ../db/db_conv.c /^__db_encrypt_and_checksum_pg (dbenv, dbp, pagep)$/
+__db_env_cdsgroup_begin_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_env_cdsgroup_begin_4006__SVCSUFFIX__(msg, req/
+__db_env_close_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_env_close_4006__SVCSUFFIX__(msg, req)$/
__db_env_config ../env/env_method.c /^__db_env_config(dbenv, i, flags)$/
-__db_env_create_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_env_create_4005__SVCSUFFIX__(msg, req)$/
-__db_env_dbremove_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_env_dbremove_4005__SVCSUFFIX__(msg, req)$/
-__db_env_dbrename_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_env_dbrename_4005__SVCSUFFIX__(msg, req)$/
+__db_env_create_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_env_create_4006__SVCSUFFIX__(msg, req)$/
+__db_env_dbremove_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_env_dbremove_4006__SVCSUFFIX__(msg, req)$/
+__db_env_dbrename_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_env_dbrename_4006__SVCSUFFIX__(msg, req)$/
__db_env_destroy ../env/env_method.c /^__db_env_destroy(dbenv)$/
-__db_env_get_cachesize_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_env_get_cachesize_4005__SVCSUFFIX__(msg, req)/
-__db_env_get_encrypt_flags_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_env_get_encrypt_flags_4005__SVCSUFFIX__(msg, /
-__db_env_get_flags_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_env_get_flags_4005__SVCSUFFIX__(msg, req)$/
-__db_env_get_home_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_env_get_home_4005__SVCSUFFIX__(msg, req)$/
-__db_env_get_open_flags_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_env_get_open_flags_4005__SVCSUFFIX__(msg, req/
-__db_env_open_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_env_open_4005__SVCSUFFIX__(msg, req)$/
-__db_env_remove_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_env_remove_4005__SVCSUFFIX__(msg, req)$/
-__db_env_set_cachesize_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_env_set_cachesize_4005__SVCSUFFIX__(msg, req)/
-__db_env_set_encrypt_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_env_set_encrypt_4005__SVCSUFFIX__(msg, req)$/
-__db_env_set_flags_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_env_set_flags_4005__SVCSUFFIX__(msg, req)$/
-__db_env_txn_begin_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_env_txn_begin_4005__SVCSUFFIX__(msg, req)$/
-__db_env_txn_recover_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_env_txn_recover_4005__SVCSUFFIX__(msg, req)$/
-__db_err ../common/db_err.c /^__db_err(dbenv, error fmt, va_alist)$/
+__db_env_get_cachesize_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_env_get_cachesize_4006__SVCSUFFIX__(msg, req)/
+__db_env_get_encrypt_flags_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_env_get_encrypt_flags_4006__SVCSUFFIX__(msg, /
+__db_env_get_flags_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_env_get_flags_4006__SVCSUFFIX__(msg, req)$/
+__db_env_get_home_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_env_get_home_4006__SVCSUFFIX__(msg, req)$/
+__db_env_get_open_flags_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_env_get_open_flags_4006__SVCSUFFIX__(msg, req/
+__db_env_mpool ../db/db.c /^__db_env_mpool(dbp, fname, flags)$/
+__db_env_open_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_env_open_4006__SVCSUFFIX__(msg, req)$/
+__db_env_remove_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_env_remove_4006__SVCSUFFIX__(msg, req)$/
+__db_env_set_cachesize_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_env_set_cachesize_4006__SVCSUFFIX__(msg, req)/
+__db_env_set_encrypt_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_env_set_encrypt_4006__SVCSUFFIX__(msg, req)$/
+__db_env_set_flags_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_env_set_flags_4006__SVCSUFFIX__(msg, req)$/
+__db_env_setup ../db/db.c /^__db_env_setup(dbp, txn, fname, dname, id, flags)$/
+__db_env_txn_begin_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_env_txn_begin_4006__SVCSUFFIX__(msg, req)$/
+__db_env_txn_recover_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_env_txn_recover_4006__SVCSUFFIX__(msg, req)$/
+__db_err ../common/db_err.c /^__db_err(const DB_ENV *dbenv, int error, const cha/
__db_errcall ../common/db_err.c /^__db_errcall(dbenv, error, error_set, fmt, ap)$/
__db_errfile ../common/db_err.c /^__db_errfile(dbenv, error, error_set, fmt, ap)$/
-__db_errx ../common/db_err.c /^__db_errx(dbenv, fmt, va_alist)$/
+__db_errx ../common/db_err.c /^__db_errx(const DB_ENV *dbenv, const char *fmt, ../
+__db_exists ../db/db_iface.c /^__db_exists(dbp, txn, key, flags)$/
__db_failed ../common/db_err.c /^__db_failed(dbenv, msg, pid, tid)$/
-__db_faultmem ../env/env_region.c /^__db_faultmem(dbenv, addr, size, created)$/
__db_fcchk ../common/db_err.c /^__db_fcchk(dbenv, name, flags, flag1, flag2)$/
__db_fchk ../common/db_err.c /^__db_fchk(dbenv, name, flags, ok_flags)$/
__db_fcntl_mutex_destroy ../mutex/mut_fcntl.c /^__db_fcntl_mutex_destroy(dbenv, mutex)$/
@@ -2649,7 +2994,6 @@ __db_ferr ../common/db_err.c /^__db_ferr(dbenv, name, iscombo)$/
__db_file_extend ../env/env_file.c /^__db_file_extend(dbenv, fhp, size)$/
__db_file_multi_write ../env/env_file.c /^__db_file_multi_write(dbenv, path)$/
__db_file_write ../env/env_file.c /^__db_file_write(dbenv, fhp, mbytes, bytes, pattern/
-__db_filestart ../dbinc/log.h /^struct __db_filestart {$/
__db_fnl ../common/db_err.c /^__db_fnl(dbenv, name)$/
__db_free ../db/db_meta.c /^__db_free(dbc, h)$/
__db_free_truncate ../db/db_meta.c /^__db_free_truncate(dbp, txn, flags, c_data, listp,/
@@ -2679,11 +3023,14 @@ __db_get_lorder ../db/db_method.c /^__db_get_lorder(dbp, db_lorderp)$/
__db_get_lorder_proc ../rpc_server/c/db_server_proc.c /^__db_get_lorder_proc(dbpcl_id, replyp)$/
__db_get_mpf ../db/db_method.c /^__db_get_mpf(dbp)$/
__db_get_msgfile ../db/db_method.c /^__db_get_msgfile(dbp, msgfilep)$/
+__db_get_multiple ../db/db_method.c /^__db_get_multiple(dbp)$/
__db_get_open_flags ../db/db_open.c /^__db_get_open_flags(dbp, flagsp)$/
__db_get_open_flags_proc ../rpc_server/c/db_server_proc.c /^__db_get_open_flags_proc(dbpcl_id, replyp)$/
__db_get_pagesize ../db/db_method.c /^__db_get_pagesize(dbp, db_pagesizep)$/
__db_get_pagesize_proc ../rpc_server/c/db_server_proc.c /^__db_get_pagesize_proc(dbpcl_id, replyp)$/
__db_get_pp ../db/db_iface.c /^__db_get_pp(dbp, txn, key, data, flags)$/
+__db_get_priority ../db/db_method.c /^__db_get_priority(dbp, priority)$/
+__db_get_priority_proc ../rpc_server/c/db_server_proc.c /^__db_get_priority_proc(dbpcl_id, replyp)$/
__db_get_proc ../rpc_server/c/db_server_proc.c /^__db_get_proc(dbpcl_id, txnpcl_id, keydlen, keydof/
__db_get_q_extentsize_proc ../rpc_server/c/db_server_proc.c /^__db_get_q_extentsize_proc(dbpcl_id, replyp)$/
__db_get_re_delim_proc ../rpc_server/c/db_server_proc.c /^__db_get_re_delim_proc(dbpcl_id, replyp)$/
@@ -2697,8 +3044,7 @@ __db_getlong ../common/db_getlong.c /^__db_getlong(dbenv, progname, p, min, max,
__db_getulong ../common/db_getlong.c /^__db_getulong(dbenv, progname, p, min, max, storep/
__db_goff ../db/db_overflow.c /^__db_goff(dbp, txn, dbt, tlen, pgno, bpp, bpsz)$/
__db_guesspgsize ../db/db_vrfy.c /^__db_guesspgsize(dbenv, fhp)$/
-__db_h_stat ../dbinc/db.in /^struct __db_h_stat {$/
-__db_hashinit ../env/db_shash.c /^__db_hashinit(begin, nelements)$/
+__db_hashinit ../common/db_shash.c /^__db_hashinit(begin, nelements)$/
__db_hcreate ../hsearch/hsearch.c /^__db_hcreate(nel)$/
__db_hdestroy ../hsearch/hsearch.c /^__db_hdestroy()$/
__db_hmac ../hmac/hmac.c /^__db_hmac(k, data, data_len, mac)$/
@@ -2706,9 +3052,8 @@ __db_hmeta ../db/db_pr.c /^__db_hmeta(dbp, h, flags)$/
__db_hsearch ../hsearch/hsearch.c /^__db_hsearch(item, action)$/
__db_idcmp ../common/db_idspace.c /^__db_idcmp(a, b)$/
__db_idspace ../common/db_idspace.c /^__db_idspace(inuse, n, minp, maxp)$/
-__db_ilock ../dbinc/db.in /^struct __db_ilock {$/
-__db_infohead ../dbinc/tcl_db.h /^#define __db_infohead __dbtcl_global.g_infohead$/
-__db_init ../db/db_method.c /^__db_init(dbenv, dbp, flags)$/
+__db_infohead ../dbinc/tcl_db.h 130
+__db_init ../db/db_method.c /^__db_init(dbp, flags)$/
__db_init_meta ../db/db_meta.c /^__db_init_meta(dbp, p, pgno, pgtype)$/
__db_init_print ../db/db_autop.c /^__db_init_print(dbenv, dtabp, dtabsizep)$/
__db_init_recover ../db/db_auto.c /^__db_init_recover(dbenv, dtabp, dtabsizep)$/
@@ -2727,7 +3072,7 @@ __db_join_get ../db/db_join.c /^__db_join_get(dbc, key_arg, data_arg, flags)$/
__db_join_get_pp ../db/db_join.c /^__db_join_get_pp(dbc, key, data, flags)$/
__db_join_getnext ../db/db_join.c /^__db_join_getnext(dbc, key, data, exhausted, opmod/
__db_join_pp ../db/db_iface.c /^__db_join_pp(primary, curslist, dbcp, flags)$/
-__db_join_primget ../db/db_join.c /^__db_join_primget(dbp, txn, lockerid, key, data, f/
+__db_join_primget ../db/db_join.c /^__db_join_primget(dbp, txn, locker, key, data, fla/
__db_join_proc ../rpc_server/c/db_server_proc.c /^__db_join_proc(dbpcl_id, curs, curslen, flags, rep/
__db_join_put ../db/db_join.c /^__db_join_put(dbc, key, data, flags)$/
__db_key_range_pp ../db/db_iface.c /^__db_key_range_pp(dbp, txn, key, kr, flags)$/
@@ -2738,25 +3083,15 @@ __db_limbo_bucket ../db/db_dispatch.c /^__db_limbo_bucket(dbenv, txn, elp, state
__db_limbo_fix ../db/db_dispatch.c /^__db_limbo_fix(dbp, ctxn, elp, lastp, meta, state)/
__db_limbo_move ../db/db_dispatch.c /^__db_limbo_move(dbenv, ptxn, txn, elp)$/
__db_limbo_prepare ../db/db_dispatch.c /^__db_limbo_prepare(dbp, txn, elp)$/
-__db_lk_conflicts ../libdb_java/db_java_wrap.c /^struct __db_lk_conflicts {$/
__db_loadme ../db/db_pr.c /^__db_loadme()$/
-__db_lock ../dbinc/lock.h /^struct __db_lock {$/
__db_lock_move ../db/db_dispatch.c /^__db_lock_move(dbenv, fileid, pgno, mode, ptxn, tx/
-__db_lock_stat ../dbinc/db.in /^struct __db_lock_stat {$/
-__db_lock_u ../dbinc/db.in /^struct __db_lock_u {$/
__db_lockmode_to_string ../db/db_pr.c /^__db_lockmode_to_string(mode)$/
-__db_lockreq ../dbinc/db.in /^struct __db_lockreq {$/
-__db_locktab ../dbinc/lock.h /^struct __db_locktab {$/
-__db_log ../dbinc/log.h /^struct __db_log {$/
__db_log2 ../common/db_log2.c /^__db_log2(num)$/
__db_log_corrupt ../env/env_recover.c /^__db_log_corrupt(dbenv, lsnp)$/
-__db_log_cursor ../dbinc/db.in /^struct __db_log_cursor {$/
__db_log_page ../db/db.c /^__db_log_page(dbp, txn, lsn, pgno, page)$/
-__db_log_stat ../dbinc/db.in /^struct __db_log_stat {$/
__db_lprint ../db/db_meta.c /^__db_lprint(dbc)$/
__db_lput ../db/db_meta.c /^__db_lput(dbc, lockp)$/
__db_lsgenrand ../crypto/mersenne/mt19937db.c /^__db_lsgenrand(seed_array, mt, mtip)$/
-__db_lsn ../dbinc/db.in /^struct __db_lsn {$/
__db_makeKey ../crypto/rijndael/rijndael-api-fst.c /^__db_makeKey(key, direction, keyLen, keyMaterial)$/
__db_makecopy ../db/db.c /^__db_makecopy(dbenv, src, dest)$/
__db_map_flags ../db/db_method.c /^__db_map_flags(dbp, inflagsp, outflagsp)$/
@@ -2766,25 +3101,17 @@ __db_master_open ../db/db.c /^__db_master_open(subdbp, txn, name, flags, mode, d
__db_master_update ../db/db.c /^__db_master_update(mdbp, sdbp, txn, subdb, type, a/
__db_meta ../db/db_pr.c /^__db_meta(dbp, dbmeta, fn, flags)$/
__db_meta2pgset ../db/db_vrfy.c /^__db_meta2pgset(dbp, vdp, pgno, flags, pgset)$/
-__db_meta_setup ../db/db_open.c /^__db_meta_setup(dbenv, dbp, name, meta, oflags, do/
+__db_meta_setup ../db/db_open.c /^__db_meta_setup(dbenv, dbp, name, meta, oflags, fl/
__db_metaswap ../db/db_conv.c /^__db_metaswap(pg)$/
__db_mi_env ../env/env_method.c /^__db_mi_env(dbenv, name)$/
__db_mi_open ../env/env_method.c /^__db_mi_open(dbenv, name, after)$/
__db_mkpath ../common/mkpath.c /^__db_mkpath(dbenv, name)$/
__db_moff ../db/db_overflow.c /^__db_moff(dbp, txn, dbt, pgno, tlen, cmpfunc, cmpp/
-__db_mpool ../dbinc/mp.h /^struct __db_mpool {$/
-__db_mpool_fstat ../dbinc/db.in /^struct __db_mpool_fstat {$/
-__db_mpool_hash ../dbinc/mp.h /^struct __db_mpool_hash {$/
-__db_mpool_stat ../dbinc/db.in /^struct __db_mpool_stat {$/
-__db_mpoolfile ../dbinc/db.in /^struct __db_mpoolfile {$/
-__db_mpreg ../dbinc/mp.h /^struct __db_mpreg {$/
-__db_msg ../common/db_err.c /^__db_msg(dbenv, fmt, va_alist)$/
-__db_msgadd ../common/db_err.c /^__db_msgadd(dbenv, mbp, fmt, va_alist)$/
+__db_msg ../common/db_err.c /^__db_msg(const DB_ENV *dbenv, const char *fmt, .../
+__db_msgadd ../common/db_err.c /^__db_msgadd(DB_ENV *dbenv, DB_MSGBUF *mbp, const c/
+__db_msgadd_ap ../common/db_err.c /^__db_msgadd_ap(dbenv, mbp, fmt, ap)$/
__db_msgcall ../common/db_err.c /^__db_msgcall(dbenv, fmt, ap)$/
__db_msgfile ../common/db_err.c /^__db_msgfile(dbenv, fmt, ap)$/
-__db_mutex_stat ../dbinc/db.in /^struct __db_mutex_stat {$/
-__db_mutex_t ../dbinc/mutex_int.h /^struct __db_mutex_t { \/* Mutex. *\/$/
-__db_mutexmgr ../dbinc/mutex_int.h /^struct __db_mutexmgr {$/
__db_ndbm_clearerr ../dbm/dbm.c /^__db_ndbm_clearerr(dbm)$/
__db_ndbm_close ../dbm/dbm.c /^__db_ndbm_close(dbm)$/
__db_ndbm_delete ../dbm/dbm.c /^__db_ndbm_delete(dbm, key)$/
@@ -2804,7 +3131,6 @@ __db_noop_log ../db/db_auto.c /^__db_noop_log(dbp, txnp, ret_lsnp, flags, pgno,
__db_noop_print ../db/db_autop.c /^__db_noop_print(dbenv, dbtp, lsnp, notused2, notus/
__db_noop_read ../db/db_auto.c /^__db_noop_read(dbenv, recbuf, argpp)$/
__db_noop_recover ../db/db_rec.c /^__db_noop_recover(dbenv, dbtp, lsnp, op, info)$/
-__db_norepmgr ../env/env_method.c /^__db_norepmgr(dbenv)$/
__db_not_txn_env ../common/db_err.c /^__db_not_txn_env(dbenv)$/
__db_oflags ../os/os_oflags.c /^__db_oflags(oflags)$/
__db_omode ../os/os_oflags.c /^__db_omode(perm)$/
@@ -2812,7 +3138,6 @@ __db_open ../db/db_open.c /^__db_open(dbp, txn, fname, dname, type, flags, mod/
__db_open_arg ../db/db_iface.c /^__db_open_arg(dbp, txn, fname, dname, type, flags)/
__db_open_pp ../db/db_iface.c /^__db_open_pp(dbp, txn, fname, dname, type, flags, /
__db_open_proc ../rpc_server/c/db_server_proc.c /^__db_open_proc(dbpcl_id, txnpcl_id, name, subdb, t/
-__db_out_stream ../libdb_java/db_java_wrap.c /^struct __db_out_stream {$/
__db_ovref ../db/db_overflow.c /^__db_ovref(dbc, pgno)$/
__db_ovref_log ../db/db_auto.c /^__db_ovref_log(dbp, txnp, ret_lsnp, flags, pgno, a/
__db_ovref_print ../db/db_autop.c /^__db_ovref_print(dbenv, dbtp, lsnp, notused2, notu/
@@ -2824,7 +3149,6 @@ __db_page_pass ../db/db_upg.c /^__db_page_pass(dbp, real_name, flags, fl, fhp)$/
__db_pagetype_to_string ../db/db_pr.c /^__db_pagetype_to_string(type)$/
__db_panic ../common/db_err.c /^__db_panic(dbenv, errval)$/
__db_panic_msg ../common/db_err.c /^__db_panic_msg(dbenv)$/
-__db_panic_set ../common/db_err.c /^__db_panic_set(dbenv, on)$/
__db_partsize ../db/db_cam.c /^__db_partsize(nbytes, data)$/
__db_pg_alloc_42_print ../db/db_autop.c /^__db_pg_alloc_42_print(dbenv, dbtp, lsnp, notused2/
__db_pg_alloc_42_read ../db/db_auto.c /^__db_pg_alloc_42_read(dbenv, recbuf, argpp)$/
@@ -2865,7 +3189,7 @@ __db_pg_sort_log ../db/db_auto.c /^__db_pg_sort_log(dbp, txnp, ret_lsnp, flags,
__db_pg_sort_print ../db/db_autop.c /^__db_pg_sort_print(dbenv, dbtp, lsnp, notused2, no/
__db_pg_sort_read ../db/db_auto.c /^__db_pg_sort_read(dbenv, recbuf, argpp)$/
__db_pg_sort_recover ../db/db_rec.c /^__db_pg_sort_recover(dbenv, dbtp, lsnp, op, info)$/
-__db_pg_truncate ../db/db_meta.c /^__db_pg_truncate(mpf, txn, list, c_data, nelemp, l/
+__db_pg_truncate ../db/db_meta.c /^__db_pg_truncate(dbp, txn, list, c_data, nelemp, l/
__db_pgerr ../common/db_err.c /^__db_pgerr(dbp, pgno, errval)$/
__db_pget ../db/db_iface.c /^__db_pget(dbp, txn, skey, pkey, data, flags)$/
__db_pget_arg ../db/db_iface.c /^__db_pget_arg(dbp, pkey, flags)$/
@@ -2881,16 +3205,15 @@ __db_pr ../db/db_pr.c /^__db_pr(dbenv, mbp, p, len)$/
__db_pr_callback ../db/db_pr.c /^__db_pr_callback(handle, str_arg)$/
__db_prdb ../db/db_pr.c /^__db_prdb(dbp, flags)$/
__db_prdbt ../db/db_pr.c /^__db_prdbt(dbtp, checkprint, prefix, handle, callb/
-__db_preplist ../dbinc/db.in /^struct __db_preplist {$/
__db_prflags ../db/db_pr.c /^__db_prflags(dbenv, mbp, flags, fn, prefix, suffix/
__db_prfooter ../db/db_pr.c /^__db_prfooter(handle, callback)$/
__db_prheader ../db/db_pr.c /^__db_prheader(dbp, subname, pflag, keyflag, handle/
__db_print_all ../db/db_stati.c /^__db_print_all(dbp, flags)$/
-__db_print_citem ../db/db_stati.c /^int __db_print_citem(dbc)$/
+__db_print_citem ../db/db_stati.c /^__db_print_citem(dbc)$/
__db_print_cursor ../db/db_stati.c /^__db_print_cursor(dbp)$/
__db_print_fh ../env/env_stat.c /^__db_print_fh(dbenv, tag, fh, flags)$/
__db_print_fileid ../env/env_stat.c /^__db_print_fileid(dbenv, id, suffix)$/
-__db_print_reginfo ../env/env_stat.c /^__db_print_reginfo(dbenv, infop, s)$/
+__db_print_reginfo ../env/env_stat.c /^__db_print_reginfo(dbenv, infop, s, flags)$/
__db_print_stats ../db/db_stati.c /^__db_print_stats(dbp, flags)$/
__db_prnpage ../db/db_pr.c /^__db_prnpage(dbp, txn, pgno)$/
__db_proff ../db/db_pr.c /^__db_proff(dbenv, mbp, vp)$/
@@ -2905,16 +3228,12 @@ __db_put ../db/db_am.c /^__db_put(dbp, txn, key, data, flags)$/
__db_put_arg ../db/db_iface.c /^__db_put_arg(dbp, key, data, flags)$/
__db_put_pp ../db/db_iface.c /^__db_put_pp(dbp, txn, key, data, flags)$/
__db_put_proc ../rpc_server/c/db_server_proc.c /^__db_put_proc(dbpcl_id, txnpcl_id, keydlen, keydof/
-__db_qam_stat ../dbinc/db.in /^struct __db_qam_stat {$/
__db_qmeta ../db/db_pr.c /^__db_qmeta(dbp, h, flags)$/
-__db_r_attach ../env/env_region.c /^__db_r_attach(dbenv, infop, size)$/
-__db_r_detach ../env/env_region.c /^__db_r_detach(dbenv, infop, destroy)$/
__db_rdonly ../common/db_err.c /^__db_rdonly(dbenv, name)$/
__db_rec_repl ../common/db_err.c /^__db_rec_repl(dbenv, data_size, data_dlen)$/
__db_rec_toobig ../common/db_err.c /^__db_rec_toobig(dbenv, data_len, fixed_rec_len)$/
__db_reclaim_callback ../db/db_reclaim.c /^__db_reclaim_callback(dbp, p, cookie, putp)$/
__db_refresh ../db/db.c /^__db_refresh(dbp, txn, flags, deferred_closep, reu/
-__db_reginfo_t ../dbinc/region.h /^struct __db_reginfo_t { \/* __db_r_attach IN para/
__db_relink_42_print ../db/db_autop.c /^__db_relink_42_print(dbenv, dbtp, lsnp, notused2, /
__db_relink_42_read ../db/db_auto.c /^__db_relink_42_read(dbenv, recbuf, argpp)$/
__db_relink_42_recover ../db/db_rec.c /^__db_relink_42_recover(dbenv, dbtp, lsnp, op, info/
@@ -2926,11 +3245,7 @@ __db_rename ../db/db_rename.c /^__db_rename(dbp, txn, name, subdb, newname)$/
__db_rename_int ../db/db_rename.c /^__db_rename_int(dbp, txn, name, subdb, newname)$/
__db_rename_pp ../db/db_rename.c /^__db_rename_pp(dbp, name, subdb, newname, flags)$/
__db_rename_proc ../rpc_server/c/db_server_proc.c /^__db_rename_proc(dbpcl_id, name, subdb, newname, f/
-__db_rep ../dbinc/rep.h /^struct __db_rep {$/
__db_rep_enter ../rep/rep_util.c /^__db_rep_enter(dbp, checkgen, checklock, return_no/
-__db_rep_stat ../dbinc/db.in /^struct __db_rep_stat {$/
-__db_repmgr_site ../dbinc/db.in /^struct __db_repmgr_site {$/
-__db_repmgr_sites ../libdb_java/db_java_wrap.c /^struct __db_repmgr_sites {$/
__db_ret ../db/db_ret.c /^__db_ret(dbp, txn, h, indx, dbt, memp, memsize)$/
__db_retcopy ../db/db_ret.c /^__db_retcopy(dbenv, dbt, data, len, memp, memsize)/
__db_rijndaelDecrypt ../crypto/rijndael/rijndael-alg-fst.c /^__db_rijndaelDecrypt(rk, Nr, ct, pt)$/
@@ -2942,9 +3257,9 @@ __db_rijndaelKeySetupEnc ../crypto/rijndael/rijndael-alg-fst.c /^__db_rijndaelKe
__db_rmid_to_env ../xa/xa_map.c /^__db_rmid_to_env(rmid, dbenvp)$/
__db_rpath ../os/os_rpath.c /^__db_rpath(path)$/
__db_s_count ../db/db_cam.c /^__db_s_count(pdbp)$/
-__db_s_done ../db/db_cam.c /^__db_s_done(sdbp)$/
+__db_s_done ../db/db_cam.c /^__db_s_done(sdbp, txn)$/
__db_s_first ../db/db_cam.c /^__db_s_first(pdbp, sdbpp)$/
-__db_s_next ../db/db_cam.c /^__db_s_next(sdbpp)$/
+__db_s_next ../db/db_cam.c /^__db_s_next(sdbpp, txn)$/
__db_safe_goff ../db/db_ovfl_vrfy.c /^__db_safe_goff(dbp, vdp, pgno, dbt, buf, flags)$/
__db_salvage ../db/db_vrfy.c /^__db_salvage(dbp, vdp, pgno, h, handle, callback, /
__db_salvage_destroy ../db/db_vrfyutil.c /^__db_salvage_destroy(vdp)$/
@@ -2961,9 +3276,6 @@ __db_secondary_close ../db/db_am.c /^__db_secondary_close(sdbp, flags)$/
__db_secondary_close_pp ../db/db_iface.c /^__db_secondary_close_pp(dbp, flags)$/
__db_secondary_corrupt ../db/db_join.c /^__db_secondary_corrupt(dbp)$/
__db_secondary_get ../db/db_am.c /^__db_secondary_get(sdbp, txn, skey, data, flags)$/
-__db_seq_record ../dbinc/db.in /^struct __db_seq_record {$/
-__db_seq_stat ../dbinc/db.in /^struct __db_seq_stat {$/
-__db_sequence ../dbinc/db.in /^struct __db_sequence {$/
__db_set_alloc ../db/db_method.c /^__db_set_alloc(dbp, mal_func, real_func, free_func/
__db_set_append_recno ../db/db_method.c /^__db_set_append_recno(dbp, func)$/
__db_set_bt_minkey_proc ../rpc_server/c/db_server_proc.c /^__db_set_bt_minkey_proc(dbpcl_id, minkey, replyp)$/
@@ -2987,16 +3299,13 @@ __db_set_msgfile ../db/db_method.c /^__db_set_msgfile(dbp, msgfile)$/
__db_set_pagesize ../db/db_method.c /^__db_set_pagesize(dbp, db_pagesize)$/
__db_set_pagesize_proc ../rpc_server/c/db_server_proc.c /^__db_set_pagesize_proc(dbpcl_id, pagesize, replyp)/
__db_set_paniccall ../db/db_method.c /^__db_set_paniccall(dbp, paniccall)$/
+__db_set_priority ../db/db_method.c /^__db_set_priority(dbp, priority)$/
+__db_set_priority_proc ../rpc_server/c/db_server_proc.c /^__db_set_priority_proc(dbpcl_id, priority, replyp)/
__db_set_q_extentsize_proc ../rpc_server/c/db_server_proc.c /^__db_set_q_extentsize_proc(dbpcl_id, extentsize, r/
__db_set_re_delim_proc ../rpc_server/c/db_server_proc.c /^__db_set_re_delim_proc(dbpcl_id, delim, replyp)$/
__db_set_re_len_proc ../rpc_server/c/db_server_proc.c /^__db_set_re_len_proc(dbpcl_id, len, replyp)$/
__db_set_re_pad_proc ../rpc_server/c/db_server_proc.c /^__db_set_re_pad_proc(dbpcl_id, pad, replyp)$/
__db_sgenrand ../crypto/mersenne/mt19937db.c /^__db_sgenrand(seed, mt, mtip)$/
-__db_shalloc ../env/db_salloc.c /^__db_shalloc(infop, len, align, retp)$/
-__db_shalloc_free ../env/db_salloc.c /^__db_shalloc_free(infop, ptr)$/
-__db_shalloc_init ../env/db_salloc.c /^__db_shalloc_init(infop, size)$/
-__db_shalloc_size ../env/db_salloc.c /^__db_shalloc_size(len, align)$/
-__db_shalloc_sizeof ../env/db_salloc.c /^__db_shalloc_sizeof(ptr)$/
__db_space_err ../common/db_err.c /^__db_space_err(dbp)$/
__db_stat ../db/db_stati.c /^__db_stat(dbp, txn, spp, flags)$/
__db_stat_arg ../db/db_stati.c /^__db_stat_arg(dbp, flags)$/
@@ -3011,34 +3320,28 @@ __db_subdb_rename ../db/db_rename.c /^__db_subdb_rename(dbp, txn, name, subdb, n
__db_sync ../db/db_am.c /^__db_sync(dbp)$/
__db_sync_pp ../db/db_iface.c /^__db_sync_pp(dbp, flags)$/
__db_sync_proc ../rpc_server/c/db_server_proc.c /^__db_sync_proc(dbpcl_id, flags, replyp)$/
-__db_syserr ../common/db_err.c /^__db_syserr(dbenv, error fmt, va_alist)$/
-__db_tablesize ../env/db_shash.c /^__db_tablesize(n_buckets)$/
+__db_syserr ../common/db_err.c /^__db_syserr(const DB_ENV *dbenv, int error, const /
+__db_tablesize ../common/db_shash.c /^__db_tablesize(n_buckets)$/
__db_tas_mutex_destroy ../mutex/mut_tas.c /^__db_tas_mutex_destroy(dbenv, mutex)$/
__db_tas_mutex_init ../mutex/mut_tas.c /^__db_tas_mutex_init(dbenv, mutex, flags)$/
__db_tas_mutex_lock ../mutex/mut_tas.c /^__db_tas_mutex_lock(dbenv, mutex)$/
__db_tas_mutex_unlock ../mutex/mut_tas.c /^__db_tas_mutex_unlock(dbenv, mutex)$/
__db_testcopy ../db/db.c /^__db_testcopy(dbenv, dbp, name)$/
__db_testdocopy ../db/db.c /^__db_testdocopy(dbenv, name)$/
-__db_threadid ../env/env_failchk.c /^struct __db_threadid {$/
-__db_tmp_open ../env/env_open.c /^__db_tmp_open(dbenv, tmp_oflags, path, fhpp)$/
+__db_tmp_open ../env/env_name.c /^__db_tmp_open(dbenv, tmp_oflags, path, fhpp)$/
__db_traverse_big ../db/db_reclaim.c /^__db_traverse_big(dbp, pgno, txn, callback, cookie/
__db_truncate ../db/db_truncate.c /^__db_truncate(dbp, txn, countp)$/
__db_truncate_callback ../db/db_reclaim.c /^__db_truncate_callback(dbp, p, cookie, putp)$/
__db_truncate_freelist ../db/db_meta.c /^__db_truncate_freelist(dbc, meta, h, list, start, /
__db_truncate_pp ../db/db_truncate.c /^__db_truncate_pp(dbp, txn, countp, flags)$/
__db_truncate_proc ../rpc_server/c/db_server_proc.c /^__db_truncate_proc(dbpcl_id, txnpcl_id, flags, rep/
-__db_txn ../dbinc/db.in /^struct __db_txn {$/
-__db_txn_abort_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_txn_abort_4005__SVCSUFFIX__(msg, req)$/
-__db_txn_active ../dbinc/db.in /^struct __db_txn_active {$/
+__db_txn_abort_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_txn_abort_4006__SVCSUFFIX__(msg, req)$/
__db_txn_auto_init ../db/db_iface.c /^__db_txn_auto_init(dbenv, txnidp)$/
__db_txn_auto_resolve ../db/db_iface.c /^__db_txn_auto_resolve(dbenv, txn, nosync, ret)$/
-__db_txn_commit_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_txn_commit_4005__SVCSUFFIX__(msg, req)$/
-__db_txn_deadlock_err ../common/db_err.c /^__db_txn_deadlock_err(dbenv)$/
-__db_txn_discard_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_txn_discard_4005__SVCSUFFIX__(msg, req)$/
-__db_txn_prepare_4005__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_txn_prepare_4005__SVCSUFFIX__(msg, req)$/
-__db_txn_stat ../dbinc/db.in /^struct __db_txn_stat {$/
-__db_txnhead ../dbinc/db_dispatch.h /^struct __db_txnhead {$/
-__db_txnlist ../dbinc/db_dispatch.h /^struct __db_txnlist {$/
+__db_txn_commit_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_txn_commit_4006__SVCSUFFIX__(msg, req)$/
+__db_txn_deadlock_err ../common/db_err.c /^__db_txn_deadlock_err(dbenv, txn)$/
+__db_txn_discard_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_txn_discard_4006__SVCSUFFIX__(msg, req)$/
+__db_txn_prepare_4006__SVCSUFFIX__ ../rpc_server/c/gen_db_server.c /^__db_txn_prepare_4006__SVCSUFFIX__(msg, req)$/
__db_txnlist_add ../db/db_dispatch.c /^__db_txnlist_add(dbenv, hp, txnid, status, lsn)$/
__db_txnlist_ckp ../db/db_dispatch.c /^__db_txnlist_ckp(dbenv, hp, ckp_lsn)$/
__db_txnlist_end ../db/db_dispatch.c /^__db_txnlist_end(dbenv, hp)$/
@@ -3053,8 +3356,6 @@ __db_txnlist_pgnoadd ../db/db_dispatch.c /^__db_txnlist_pgnoadd(dbenv, hp, filei
__db_txnlist_print ../db/db_dispatch.c /^__db_txnlist_print(hp)$/
__db_txnlist_remove ../db/db_dispatch.c /^__db_txnlist_remove(dbenv, hp, txnid)$/
__db_txnlist_update ../db/db_dispatch.c /^__db_txnlist_update(dbenv, hp, txnid, status, lsn,/
-__db_txnmgr ../dbinc/txn.h /^struct __db_txnmgr {$/
-__db_txnregion ../dbinc/txn.h /^struct __db_txnregion {$/
__db_unknown_error ../common/db_err.c /^__db_unknown_error(error)$/
__db_unknown_flag ../common/db_err.c /^__db_unknown_flag(dbenv, routine, flag)$/
__db_unknown_path ../common/db_err.c /^__db_unknown_path(dbenv, routine)$/
@@ -3122,17 +3423,46 @@ __db_xa_recover ../xa/xa.c /^__db_xa_recover(xids, count, rmid, flags)$/
__db_xa_rollback ../xa/xa.c /^__db_xa_rollback(xid, rmid, arg_flags)$/
__db_xa_start ../xa/xa.c /^__db_xa_start(xid, rmid, arg_flags)$/
__db_xid_to_txn ../xa/xa_map.c /^__db_xid_to_txn(dbenv, xid, offp)$/
-__dbc ../dbinc/db.in /^struct __dbc {$/
-__dbc_c_close_proc ../rpc_server/c/db_server_proc.c /^__dbc_c_close_proc(dbccl_id, replyp)$/
-__dbc_c_count_proc ../rpc_server/c/db_server_proc.c /^__dbc_c_count_proc(dbccl_id, flags, replyp)$/
-__dbc_c_del_proc ../rpc_server/c/db_server_proc.c /^__dbc_c_del_proc(dbccl_id, flags, replyp)$/
-__dbc_c_dup_proc ../rpc_server/c/db_server_proc.c /^__dbc_c_dup_proc(dbccl_id, flags, replyp)$/
-__dbc_c_get_proc ../rpc_server/c/db_server_proc.c /^__dbc_c_get_proc(dbccl_id, keydlen, keydoff, keyul/
-__dbc_c_pget_proc ../rpc_server/c/db_server_proc.c /^__dbc_c_pget_proc(dbccl_id, skeydlen, skeydoff, sk/
-__dbc_c_put_proc ../rpc_server/c/db_server_proc.c /^__dbc_c_put_proc(dbccl_id, keydlen, keydoff, keyul/
+__dbc_cleanup ../db/db_cam.c /^__dbc_cleanup(dbc, dbc_n, failed)$/
+__dbc_close ../db/db_cam.c /^__dbc_close(dbc)$/
__dbc_close_int ../rpc_server/c/db_server_util.c /^__dbc_close_int(dbc_ctp)$/
-__dbc_internal ../dbinc/db_int.in /^struct __dbc_internal {$/
+__dbc_close_pp ../db/db_iface.c /^__dbc_close_pp(dbc)$/
+__dbc_close_proc ../rpc_server/c/db_server_proc.c /^__dbc_close_proc(dbccl_id, replyp)$/
+__dbc_count ../db/db_cam.c /^__dbc_count(dbc, recnop)$/
+__dbc_count_pp ../db/db_iface.c /^__dbc_count_pp(dbc, recnop, flags)$/
+__dbc_count_proc ../rpc_server/c/db_server_proc.c /^__dbc_count_proc(dbccl_id, flags, replyp)$/
+__dbc_del ../db/db_cam.c /^__dbc_del(dbc, flags)$/
+__dbc_del_arg ../db/db_iface.c /^__dbc_del_arg(dbc, flags)$/
+__dbc_del_oldskey ../db/db_cam.c /^__dbc_del_oldskey(sdbp, dbc_arg, skey, pkey, oldda/
+__dbc_del_pp ../db/db_iface.c /^__dbc_del_pp(dbc, flags)$/
+__dbc_del_primary ../db/db_cam.c /^__dbc_del_primary(dbc)$/
+__dbc_del_proc ../rpc_server/c/db_server_proc.c /^__dbc_del_proc(dbccl_id, flags, replyp)$/
+__dbc_del_secondary ../db/db_cam.c /^__dbc_del_secondary(dbc)$/
+__dbc_destroy ../db/db_cam.c /^__dbc_destroy(dbc)$/
+__dbc_dup ../db/db_cam.c /^__dbc_dup(dbc_orig, dbcp, flags)$/
+__dbc_dup_pp ../db/db_iface.c /^__dbc_dup_pp(dbc, dbcp, flags)$/
+__dbc_dup_proc ../rpc_server/c/db_server_proc.c /^__dbc_dup_proc(dbccl_id, flags, replyp)$/
+__dbc_get ../db/db_cam.c /^__dbc_get(dbc_arg, key, data, flags)$/
+__dbc_get_arg ../db/db_iface.c /^__dbc_get_arg(dbc, key, data, flags)$/
+__dbc_get_pp ../db/db_iface.c /^__dbc_get_pp(dbc, key, data, flags)$/
+__dbc_get_priority ../db/db_am.c /^__dbc_get_priority(dbc, priority)$/
+__dbc_get_priority_proc ../rpc_server/c/db_server_proc.c /^__dbc_get_priority_proc(dbccl_id, replyp)$/
+__dbc_get_proc ../rpc_server/c/db_server_proc.c /^__dbc_get_proc(dbccl_id, keydlen, keydoff, keyulen/
+__dbc_idup ../db/db_cam.c /^__dbc_idup(dbc_orig, dbcp, flags)$/
__dbc_logging ../common/db_err.c /^__dbc_logging(dbc)$/
+__dbc_newopd ../db/db_cam.c /^__dbc_newopd(dbc_parent, root, oldopd, dbcp)$/
+__dbc_pget ../db/db_cam.c /^__dbc_pget(dbc, skey, pkey, data, flags)$/
+__dbc_pget_arg ../db/db_iface.c /^__dbc_pget_arg(dbc, pkey, flags)$/
+__dbc_pget_pp ../db/db_iface.c /^__dbc_pget_pp(dbc, skey, pkey, data, flags)$/
+__dbc_pget_proc ../rpc_server/c/db_server_proc.c /^__dbc_pget_proc(dbccl_id, skeydlen, skeydoff, skey/
+__dbc_pget_recno ../db/db_cam.c /^__dbc_pget_recno(sdbc, pkey, data, flags)$/
+__dbc_put ../db/db_cam.c /^__dbc_put(dbc_arg, key, data, flags)$/
+__dbc_put_arg ../db/db_iface.c /^__dbc_put_arg(dbc, key, data, flags)$/
+__dbc_put_pp ../db/db_iface.c /^__dbc_put_pp(dbc, key, data, flags)$/
+__dbc_put_proc ../rpc_server/c/db_server_proc.c /^__dbc_put_proc(dbccl_id, keydlen, keydoff, keyulen/
+__dbc_secondary_get_pp ../db/db_cam.c /^__dbc_secondary_get_pp(dbc, skey, data, flags)$/
+__dbc_set_priority ../db/db_am.c /^__dbc_set_priority(dbc, priority)$/
+__dbc_set_priority_proc ../rpc_server/c/db_server_proc.c /^__dbc_set_priority_proc(dbccl_id, priority, replyp/
__dbcl_c_destroy ../rpc_client/client.c /^__dbcl_c_destroy(dbc)$/
__dbcl_c_refresh ../rpc_client/client.c /^__dbcl_c_refresh(dbc)$/
__dbcl_c_setup ../rpc_client/client.c /^__dbcl_c_setup(cl_id, dbp, dbcp)$/
@@ -3154,6 +3484,7 @@ __dbcl_db_get_h_nelem ../rpc_client/gen_client.c /^__dbcl_db_get_h_nelem(dbp, ne
__dbcl_db_get_lorder ../rpc_client/gen_client.c /^__dbcl_db_get_lorder(dbp, lorderp)$/
__dbcl_db_get_open_flags ../rpc_client/gen_client.c /^__dbcl_db_get_open_flags(dbp, flagsp)$/
__dbcl_db_get_pagesize ../rpc_client/gen_client.c /^__dbcl_db_get_pagesize(dbp, pagesizep)$/
+__dbcl_db_get_priority ../rpc_client/gen_client.c /^__dbcl_db_get_priority(dbp, priorityp)$/
__dbcl_db_get_q_extentsize ../rpc_client/gen_client.c /^__dbcl_db_get_q_extentsize(dbp, extentsizep)$/
__dbcl_db_get_re_delim ../rpc_client/gen_client.c /^__dbcl_db_get_re_delim(dbp, delimp)$/
__dbcl_db_get_re_len ../rpc_client/gen_client.c /^__dbcl_db_get_re_len(dbp, lenp)$/
@@ -3181,6 +3512,7 @@ __dbcl_db_set_h_ffactor ../rpc_client/gen_client.c /^__dbcl_db_set_h_ffactor(dbp
__dbcl_db_set_h_nelem ../rpc_client/gen_client.c /^__dbcl_db_set_h_nelem(dbp, nelem)$/
__dbcl_db_set_lorder ../rpc_client/gen_client.c /^__dbcl_db_set_lorder(dbp, lorder)$/
__dbcl_db_set_pagesize ../rpc_client/gen_client.c /^__dbcl_db_set_pagesize(dbp, pagesize)$/
+__dbcl_db_set_priority ../rpc_client/gen_client.c /^__dbcl_db_set_priority(dbp, priority)$/
__dbcl_db_set_q_extentsize ../rpc_client/gen_client.c /^__dbcl_db_set_q_extentsize(dbp, extentsize)$/
__dbcl_db_set_re_delim ../rpc_client/gen_client.c /^__dbcl_db_set_re_delim(dbp, delim)$/
__dbcl_db_set_re_len ../rpc_client/gen_client.c /^__dbcl_db_set_re_len(dbp, len)$/
@@ -3190,20 +3522,22 @@ __dbcl_db_stat_ret ../rpc_client/gen_client_ret.c /^__dbcl_db_stat_ret(dbp, txnp
__dbcl_db_sync ../rpc_client/gen_client.c /^__dbcl_db_sync(dbp, flags)$/
__dbcl_db_truncate ../rpc_client/gen_client.c /^__dbcl_db_truncate(dbp, txnp, countp, flags)$/
__dbcl_db_truncate_ret ../rpc_client/gen_client_ret.c /^__dbcl_db_truncate_ret(dbp, txnp, countp, flags, r/
-__dbcl_dbc_c_close ../rpc_client/gen_client.c /^__dbcl_dbc_c_close(dbc)$/
-__dbcl_dbc_c_close_ret ../rpc_client/gen_client_ret.c /^__dbcl_dbc_c_close_ret(dbc, replyp)$/
-__dbcl_dbc_c_count ../rpc_client/gen_client.c /^__dbcl_dbc_c_count(dbc, countp, flags)$/
-__dbcl_dbc_c_count_ret ../rpc_client/gen_client_ret.c /^__dbcl_dbc_c_count_ret(dbc, countp, flags, replyp)/
-__dbcl_dbc_c_del ../rpc_client/gen_client.c /^__dbcl_dbc_c_del(dbc, flags)$/
-__dbcl_dbc_c_dup ../rpc_client/gen_client.c /^__dbcl_dbc_c_dup(dbc, dbcp, flags)$/
-__dbcl_dbc_c_dup_ret ../rpc_client/gen_client_ret.c /^__dbcl_dbc_c_dup_ret(dbc, dbcp, flags, replyp)$/
-__dbcl_dbc_c_get ../rpc_client/gen_client.c /^__dbcl_dbc_c_get(dbc, key, data, flags)$/
-__dbcl_dbc_c_get_ret ../rpc_client/gen_client_ret.c /^__dbcl_dbc_c_get_ret(dbc, key, data, flags, replyp/
-__dbcl_dbc_c_pget ../rpc_client/gen_client.c /^__dbcl_dbc_c_pget(dbc, skey, pkey, data, flags)$/
-__dbcl_dbc_c_pget_ret ../rpc_client/gen_client_ret.c /^__dbcl_dbc_c_pget_ret(dbc, skey, pkey, data, flags/
-__dbcl_dbc_c_put ../rpc_client/gen_client.c /^__dbcl_dbc_c_put(dbc, key, data, flags)$/
-__dbcl_dbc_c_put_ret ../rpc_client/gen_client_ret.c /^__dbcl_dbc_c_put_ret(dbc, key, data, flags, replyp/
+__dbcl_dbc_close ../rpc_client/gen_client.c /^__dbcl_dbc_close(dbc)$/
+__dbcl_dbc_close_ret ../rpc_client/gen_client_ret.c /^__dbcl_dbc_close_ret(dbc, replyp)$/
+__dbcl_dbc_count ../rpc_client/gen_client.c /^__dbcl_dbc_count(dbc, countp, flags)$/
+__dbcl_dbc_count_ret ../rpc_client/gen_client_ret.c /^__dbcl_dbc_count_ret(dbc, countp, flags, replyp)$/
+__dbcl_dbc_del ../rpc_client/gen_client.c /^__dbcl_dbc_del(dbc, flags)$/
+__dbcl_dbc_dup ../rpc_client/gen_client.c /^__dbcl_dbc_dup(dbc, dbcp, flags)$/
+__dbcl_dbc_dup_ret ../rpc_client/gen_client_ret.c /^__dbcl_dbc_dup_ret(dbc, dbcp, flags, replyp)$/
+__dbcl_dbc_get ../rpc_client/gen_client.c /^__dbcl_dbc_get(dbc, key, data, flags)$/
+__dbcl_dbc_get_priority ../rpc_client/gen_client.c /^__dbcl_dbc_get_priority(dbc, priorityp)$/
+__dbcl_dbc_get_ret ../rpc_client/gen_client_ret.c /^__dbcl_dbc_get_ret(dbc, key, data, flags, replyp)$/
__dbcl_dbc_init ../rpc_client/gen_client.c /^__dbcl_dbc_init(dbc)$/
+__dbcl_dbc_pget ../rpc_client/gen_client.c /^__dbcl_dbc_pget(dbc, skey, pkey, data, flags)$/
+__dbcl_dbc_pget_ret ../rpc_client/gen_client_ret.c /^__dbcl_dbc_pget_ret(dbc, skey, pkey, data, flags, /
+__dbcl_dbc_put ../rpc_client/gen_client.c /^__dbcl_dbc_put(dbc, key, data, flags)$/
+__dbcl_dbc_put_ret ../rpc_client/gen_client_ret.c /^__dbcl_dbc_put_ret(dbc, key, data, flags, replyp)$/
+__dbcl_dbc_set_priority ../rpc_client/gen_client.c /^__dbcl_dbc_set_priority(dbc, priority)$/
__dbcl_dbclose_common ../rpc_client/client.c /^__dbcl_dbclose_common(dbp)$/
__dbcl_dbenv_illegal ../rpc_client/gen_client.c /^__dbcl_dbenv_illegal(dbenv)$/
__dbcl_dbenv_init ../rpc_client/gen_client.c /^__dbcl_dbenv_init(dbenv)$/
@@ -3254,8 +3588,9 @@ __dbclear_child ../rpc_server/c/db_server_util.c /^__dbclear_child(parent)$/
__dbclear_ctp ../rpc_server/c/db_server_util.c /^__dbclear_ctp(ctp)$/
__dbdel_ctp ../rpc_server/c/db_server_util.c /^__dbdel_ctp(parent)$/
__dbh_am_chk ../db/db_method.c /^__dbh_am_chk(dbp, flags)$/
-__dbh_err ../db/db_method.c /^__dbh_err(dbp, error, fmt, va_alist)$/
-__dbh_errx ../db/db_method.c /^__dbh_errx(dbp, fmt, va_alist)$/
+__dbh_err ../db/db_method.c /^__dbh_err(DB *dbp, int error, const char *fmt, .../
+__dbh_errx ../db/db_method.c /^__dbh_errx(DB *dbp, const char *fmt, ...)$/
+__dbj_am_compare ../libdb_java/db_java_wrap.c /^static int __dbj_am_compare(DB *db, const DBT *dbt/
__dbj_app_dispatch ../libdb_java/db_java_wrap.c /^static int __dbj_app_dispatch(DB_ENV *dbenv,$/
__dbj_append_recno ../libdb_java/db_java_wrap.c /^static int __dbj_append_recno(DB *db, DBT *dbt, db/
__dbj_bt_compare ../libdb_java/db_java_wrap.c /^static int __dbj_bt_compare(DB *db, const DBT *dbt/
@@ -3279,11 +3614,13 @@ __dbj_fill_mpool_stat ../libdb_java/java_stat_auto.c /^static int __dbj_fill_mpo
__dbj_fill_mutex_stat ../libdb_java/java_stat_auto.c /^static int __dbj_fill_mutex_stat(JNIEnv *jnienv,$/
__dbj_fill_qam_stat ../libdb_java/java_stat_auto.c /^static int __dbj_fill_qam_stat(JNIEnv *jnienv,$/
__dbj_fill_rep_stat ../libdb_java/java_stat_auto.c /^static int __dbj_fill_rep_stat(JNIEnv *jnienv,$/
+__dbj_fill_repmgr_stat ../libdb_java/java_stat_auto.c /^static int __dbj_fill_repmgr_stat(JNIEnv *jnienv,$/
__dbj_fill_seq_stat ../libdb_java/java_stat_auto.c /^static int __dbj_fill_seq_stat(JNIEnv *jnienv,$/
__dbj_fill_txn_active ../libdb_java/java_stat_auto.c /^static int __dbj_fill_txn_active(JNIEnv *jnienv,$/
__dbj_fill_txn_stat ../libdb_java/java_stat_auto.c /^static int __dbj_fill_txn_stat(JNIEnv *jnienv,$/
__dbj_get_except ../libdb_java/db_java_wrap.c /^static jthrowable __dbj_get_except(JNIEnv *jenv,$/
__dbj_get_jnienv ../libdb_java/db_java_wrap.c /^static JNIEnv *__dbj_get_jnienv(void)$/
+__dbj_h_compare ../libdb_java/db_java_wrap.c /^static int __dbj_h_compare(DB *db, const DBT *dbt1/
__dbj_h_hash ../libdb_java/db_java_wrap.c /^static u_int32_t __dbj_h_hash(DB *db, const void */
__dbj_message ../libdb_java/db_java_wrap.c /^static void __dbj_message(const DB_ENV *dbenv, con/
__dbj_panic ../libdb_java/db_java_wrap.c /^static void __dbj_panic(DB_ENV *dbenv, int err)$/
@@ -3291,14 +3628,14 @@ __dbj_rep_transport ../libdb_java/db_java_wrap.c /^static int __dbj_rep_transpor
__dbj_seckey_create ../libdb_java/db_java_wrap.c /^static int __dbj_seckey_create(DB *db,$/
__dbj_throw ../libdb_java/db_java_wrap.c /^static int __dbj_throw(JNIEnv *jenv,$/
__dbj_verify_callback ../libdb_java/db_java_wrap.c /^static int __dbj_verify_callback(void *handle, con/
-__dbj_verify_data ../libdb_java/db_java_wrap.c /^struct __dbj_verify_data {$/
__dbj_wrap_DB_LSN ../libdb_java/db_java_wrap.c /^static jobject __dbj_wrap_DB_LSN(JNIEnv *jenv, DB_/
-__dblist ../dbinc/db.in /^ struct __dblist {$/
__dbreg_add_dbentry ../dbreg/dbreg_util.c /^__dbreg_add_dbentry(dbenv, dblp, dbp, ndx)$/
__dbreg_assign_id ../dbreg/dbreg.c /^__dbreg_assign_id(dbp, id)$/
__dbreg_check_master ../dbreg/dbreg_util.c /^__dbreg_check_master(dbenv, uid, name)$/
-__dbreg_close_files ../dbreg/dbreg_util.c /^__dbreg_close_files(dbenv)$/
+__dbreg_close_file ../dbreg/dbreg_util.c /^__dbreg_close_file(dbenv, fnp)$/
+__dbreg_close_files ../dbreg/dbreg_util.c /^__dbreg_close_files(dbenv, do_restored)$/
__dbreg_close_id ../dbreg/dbreg.c /^__dbreg_close_id(dbp, txn, op)$/
+__dbreg_close_id_int ../dbreg/dbreg.c /^__dbreg_close_id_int(dbenv, fnp, op, locked)$/
__dbreg_do_open ../dbreg/dbreg_util.c /^__dbreg_do_open(dbenv,$/
__dbreg_fid_to_fname ../dbreg/dbreg_util.c /^__dbreg_fid_to_fname(dblp, fid, have_lock, fnamep)/
__dbreg_get_id ../dbreg/dbreg.c /^__dbreg_get_id(dbp, txn, idp)$/
@@ -3308,27 +3645,30 @@ __dbreg_id_to_db_int ../dbreg/dbreg_util.c /^__dbreg_id_to_db_int(dbenv, txn, db
__dbreg_id_to_fname ../dbreg/dbreg_util.c /^__dbreg_id_to_fname(dblp, id, have_lock, fnamep)$/
__dbreg_init_print ../dbreg/dbreg_autop.c /^__dbreg_init_print(dbenv, dtabp, dtabsizep)$/
__dbreg_init_recover ../dbreg/dbreg_auto.c /^__dbreg_init_recover(dbenv, dtabp, dtabsizep)$/
-__dbreg_invalidate_files ../dbreg/dbreg_util.c /^__dbreg_invalidate_files(dbenv)$/
+__dbreg_invalidate_files ../dbreg/dbreg_util.c /^__dbreg_invalidate_files(dbenv, do_restored)$/
__dbreg_lazy_id ../dbreg/dbreg_util.c /^__dbreg_lazy_id(dbp)$/
__dbreg_log_close ../dbreg/dbreg.c /^__dbreg_log_close(dbenv, fnp, txn, op)$/
-__dbreg_log_files ../dbreg/dbreg_util.c /^__dbreg_log_files(dbenv)$/
+__dbreg_log_files ../dbreg/dbreg_util.c /^__dbreg_log_files(dbenv, opcode)$/
__dbreg_log_id ../dbreg/dbreg.c /^__dbreg_log_id(dbp, txn, id, needlock)$/
+__dbreg_mark_restored ../dbreg/dbreg_util.c /^__dbreg_mark_restored(dbenv)$/
__dbreg_new_id ../dbreg/dbreg.c /^__dbreg_new_id(dbp, txn)$/
__dbreg_open_file ../dbreg/dbreg_rec.c /^__dbreg_open_file(dbenv, txn, argp, info)$/
__dbreg_pluck_id ../dbreg/dbreg.c /^__dbreg_pluck_id(dbenv, id)$/
__dbreg_pop_id ../dbreg/dbreg.c /^__dbreg_pop_id(dbenv, id)$/
__dbreg_print_dblist ../dbreg/dbreg_stat.c /^__dbreg_print_dblist(dbenv, flags)$/
__dbreg_print_fname ../dbreg/dbreg_stat.c /^__dbreg_print_fname(dbenv, fnp)$/
-__dbreg_push_id ../dbreg/dbreg.c /^__dbreg_push_id(dbenv, dbp, id)$/
+__dbreg_push_id ../dbreg/dbreg.c /^__dbreg_push_id(dbenv, id)$/
__dbreg_register_log ../dbreg/dbreg_auto.c /^__dbreg_register_log(dbenv, txnp, ret_lsnp, flags,/
__dbreg_register_print ../dbreg/dbreg_autop.c /^__dbreg_register_print(dbenv, dbtp, lsnp, notused2/
__dbreg_register_read ../dbreg/dbreg_auto.c /^__dbreg_register_read(dbenv, recbuf, argpp)$/
__dbreg_register_recover ../dbreg/dbreg_rec.c /^__dbreg_register_recover(dbenv, dbtp, lsnp, op, in/
__dbreg_rem_dbentry ../dbreg/dbreg_util.c /^__dbreg_rem_dbentry(dblp, ndx)$/
__dbreg_revoke_id ../dbreg/dbreg.c /^__dbreg_revoke_id(dbp, have_lock, force_id)$/
+__dbreg_revoke_id_int ../dbreg/dbreg.c /^__dbreg_revoke_id_int(dbenv, fnp, have_lock, push,/
__dbreg_setup ../dbreg/dbreg.c /^__dbreg_setup(dbp, name, create_txnid)$/
__dbreg_stat_print ../dbreg/dbreg_stat.c /^__dbreg_stat_print(dbenv, flags)$/
__dbreg_teardown ../dbreg/dbreg.c /^__dbreg_teardown(dbp)$/
+__dbreg_teardown_int ../dbreg/dbreg.c /^__dbreg_teardown_int(dbenv, fnp)$/
__dbsrv_active ../rpc_server/c/db_server_util.c /^__dbsrv_active(ctp)$/
__dbsrv_settimeout ../rpc_server/c/db_server_util.c /^__dbsrv_settimeout(ctp, to)$/
__dbsrv_sharedb ../rpc_server/c/db_server_util.c /^__dbsrv_sharedb(db_ctp, name, subdb, type, flags)$/
@@ -3343,6 +3683,13 @@ __dd_debug ../lock/lock_deadlock.c /^__dd_debug(dbenv, idmap, bitmap, nlockers,
__dd_find ../lock/lock_deadlock.c /^__dd_find(dbenv, bmp, idmap, nlockers, nalloc, dea/
__dd_isolder ../lock/lock_deadlock.c /^__dd_isolder(a, b, lock_max, txn_max)$/
__dd_verify ../lock/lock_deadlock.c /^__dd_verify(idmap, deadmap, tmpmap, origmap, nlock/
+__env_alloc ../env/env_alloc.c /^__env_alloc(infop, len, retp)$/
+__env_alloc_free ../env/env_alloc.c /^__env_alloc_free(infop, ptr)$/
+__env_alloc_init ../env/env_alloc.c /^__env_alloc_init(infop, size)$/
+__env_alloc_overhead ../env/env_alloc.c /^__env_alloc_overhead()$/
+__env_alloc_print ../env/env_alloc.c /^__env_alloc_print(infop, flags)$/
+__env_alloc_size ../env/env_alloc.c /^__env_alloc_size(len)$/
+__env_attach ../env/env_region.c /^__env_attach(dbenv, init_flagsp, create_ok, retry_/
__env_cdsgroup_begin_proc ../rpc_server/c/db_server_proc.c /^__env_cdsgroup_begin_proc(dbenvcl_id, replyp)$/
__env_close ../env/env_open.c /^__env_close(dbenv, rep_check)$/
__env_close_int ../rpc_server/c/db_server_util.c /^__env_close_int(id, flags, force)$/
@@ -3355,9 +3702,13 @@ __env_dbremove_pp ../db/db_remove.c /^__env_dbremove_pp(dbenv, txn, name, subdb,
__env_dbremove_proc ../rpc_server/c/db_server_proc.c /^__env_dbremove_proc(dbenvcl_id, txnpcl_id, name, s/
__env_dbrename_pp ../db/db_rename.c /^__env_dbrename_pp(dbenv, txn, name, subdb, newname/
__env_dbrename_proc ../rpc_server/c/db_server_proc.c /^__env_dbrename_proc(dbenvcl_id, txnpcl_id, name, s/
-__env_err ../env/env_method.c /^__env_err(dbenv, error, fmt, va_alist)$/
-__env_errx ../env/env_method.c /^__env_errx(dbenv, fmt, va_alist)$/
+__env_des_destroy ../env/env_region.c /^__env_des_destroy(dbenv, rp)$/
+__env_des_get ../env/env_region.c /^__env_des_get(dbenv, env_infop, infop, rpp)$/
+__env_detach ../env/env_region.c /^__env_detach(dbenv, destroy)$/
+__env_err ../env/env_method.c /^__env_err(const DB_ENV *dbenv, int error, const ch/
+__env_errx ../env/env_method.c /^__env_errx(const DB_ENV *dbenv, const char *fmt, ./
__env_failchk_pp ../env/env_failchk.c /^__env_failchk_pp(dbenv, flags)$/
+__env_faultmem ../env/env_region.c /^__env_faultmem(dbenv, addr, size, created)$/
__env_fileid_reset ../db/db_setid.c /^__env_fileid_reset(dbenv, name, encrypted)$/
__env_fileid_reset_pp ../db/db_setid.c /^__env_fileid_reset_pp(dbenv, name, flags)$/
__env_get_cachesize_proc ../rpc_server/c/db_server_proc.c /^__env_get_cachesize_proc(dbenvcl_id, replyp)$/
@@ -3374,6 +3725,7 @@ __env_get_msgfile ../env/env_method.c /^__env_get_msgfile(dbenv, msgfilep)$/
__env_get_open_flags ../env/env_open.c /^__env_get_open_flags(dbenv, flagsp)$/
__env_get_open_flags_proc ../rpc_server/c/db_server_proc.c /^__env_get_open_flags_proc(dbenvcl_id, replyp)$/
__env_get_shm_key ../env/env_method.c /^__env_get_shm_key(dbenv, shm_keyp)$/
+__env_get_thread_count ../env/env_method.c /^__env_get_thread_count(dbenv, countp)$/
__env_get_tmp_dir ../env/env_method.c /^__env_get_tmp_dir(dbenv, dirp)$/
__env_get_verbose ../env/env_method.c /^__env_get_verbose(dbenv, which, onoffp)$/
__env_in_api ../env/env_failchk.c /^__env_in_api(dbenv)$/
@@ -3381,7 +3733,7 @@ __env_init ../env/env_method.c /^__env_init(dbenv)$/
__env_init_rec ../env/env_recover.c /^__env_init_rec(dbenv, version)$/
__env_init_rec_42 ../env/env_recover.c /^__env_init_rec_42(dbenv)$/
__env_init_rec_43 ../env/env_recover.c /^__env_init_rec_43(dbenv)$/
-__env_init_rec_45 ../env/env_recover.c /^__env_init_rec_45(dbenv)$/
+__env_init_rec_46 ../env/env_recover.c /^__env_init_rec_46(dbenv)$/
__env_lsn_reset ../db/db_setlsn.c /^__env_lsn_reset(dbenv, name, encrypted)$/
__env_lsn_reset_pp ../db/db_setlsn.c /^__env_lsn_reset_pp(dbenv, name, flags)$/
__env_map_flags ../env/env_method.c /^__env_map_flags(dbenv, inflagsp, outflagsp)$/
@@ -3389,12 +3741,19 @@ __env_open ../env/env_open.c /^__env_open(dbenv, db_home, flags, mode)$/
__env_open_pp ../env/env_open.c /^__env_open_pp(dbenv, db_home, flags, mode)$/
__env_open_proc ../rpc_server/c/db_server_proc.c /^__env_open_proc(dbenvcl_id, home, flags, mode, rep/
__env_openfiles ../env/env_recover.c /^__env_openfiles(dbenv, logc, txninfo,$/
+__env_panic_set ../env/env_region.c /^__env_panic_set(dbenv, on)$/
__env_print_all ../env/env_stat.c /^__env_print_all(dbenv, flags)$/
__env_print_stats ../env/env_stat.c /^__env_print_stats(dbenv, flags)$/
-__env_print_threads ../env/env_stat.c /^__env_print_threads(dbenv)$/
+__env_print_thread ../env/env_stat.c /^__env_print_thread(dbenv)$/
__env_read_db_config ../env/env_config.c /^__env_read_db_config(dbenv)$/
+__env_ref_decrement ../env/env_region.c /^__env_ref_decrement(dbenv)$/
+__env_ref_increment ../env/env_region.c /^__env_ref_increment(dbenv)$/
__env_refresh ../env/env_open.c /^__env_refresh(dbenv, orig_flags, rep_check)$/
+__env_region_attach ../env/env_region.c /^__env_region_attach(dbenv, infop, size)$/
+__env_region_detach ../env/env_region.c /^__env_region_detach(dbenv, infop, destroy)$/
__env_remove ../env/env_open.c /^__env_remove(dbenv, db_home, flags)$/
+__env_remove_env ../env/env_region.c /^__env_remove_env(dbenv)$/
+__env_remove_file ../env/env_region.c /^__env_remove_file(dbenv)$/
__env_remove_proc ../rpc_server/c/db_server_proc.c /^__env_remove_proc(dbenvcl_id, home, flags, replyp)/
__env_rep_enter ../rep/rep_util.c /^__env_rep_enter(dbenv, checklock)$/
__env_set_alloc ../env/env_method.c /^__env_set_alloc(dbenv, mal_func, real_func, free_f/
@@ -3426,17 +3785,17 @@ __env_set_verbose ../env/env_method.c /^__env_set_verbose(dbenv, which, on)$/
__env_stat_print ../env/env_stat.c /^__env_stat_print(dbenv, flags)$/
__env_stat_print_pp ../env/env_stat.c /^__env_stat_print_pp(dbenv, flags)$/
__env_thread_id_string ../env/env_failchk.c /^__env_thread_id_string(dbenv, pid, tid, buf)$/
-__env_thread_init ../env/env_failchk.c /^__env_thread_init(dbenv, created)$/
+__env_thread_init ../env/env_failchk.c /^__env_thread_init(dbenv, during_creation)$/
__env_thread_state_print ../env/env_stat.c /^__env_thread_state_print(state)$/
+__env_turn_off ../env/env_region.c /^__env_turn_off(dbenv, flags)$/
+__env_turn_on ../env/env_region.c /^__env_turn_on(dbenv)$/
__env_txn_begin_proc ../rpc_server/c/db_server_proc.c /^__env_txn_begin_proc(dbenvcl_id, parentcl_id, flag/
__env_txn_recover_proc ../rpc_server/c/db_server_proc.c /^__env_txn_recover_proc(dbenvcl_id, count, flags, r/
__envreg_add ../env/env_register.c /^__envreg_add(dbenv, need_recoveryp)$/
__envreg_register ../env/env_register.c /^__envreg_register(dbenv, need_recoveryp)$/
__envreg_unregister ../env/env_register.c /^__envreg_unregister(dbenv, recovery_failed)$/
__envreg_xunlock ../env/env_register.c /^__envreg_xunlock(dbenv)$/
-__epg ../dbinc/btree.h /^struct __epg {$/
-__fh_t ../dbinc/os.h /^struct __fh_t {$/
-__fname ../dbinc/log.h /^struct __fname {$/
+__file_handle_cleanup ../env/env_open.c /^__file_handle_cleanup(dbenv)$/
__fop_create ../fileops/fop_basic.c /^__fop_create(dbenv, txn, fhpp, name, appname, mode/
__fop_create_log ../fileops/fileops_auto.c /^__fop_create_log(dbenv, txnp, ret_lsnp, flags,$/
__fop_create_print ../fileops/fileops_autop.c /^__fop_create_print(dbenv, dbtp, lsnp, notused2, no/
@@ -3466,10 +3825,14 @@ __fop_remove_read ../fileops/fileops_auto.c /^__fop_remove_read(dbenv, recbuf, a
__fop_remove_recover ../fileops/fop_rec.c /^__fop_remove_recover(dbenv, dbtp, lsnp, op, info)$/
__fop_remove_setup ../fileops/fop_util.c /^__fop_remove_setup(dbp, txn, name, flags)$/
__fop_rename ../fileops/fop_basic.c /^__fop_rename(dbenv, txn, oldname, newname, fid, ap/
+__fop_rename_int_log ../fileops/fileops_auto.c /^__fop_rename_int_log(dbenv, txnp, ret_lsnp, flags,/
__fop_rename_log ../fileops/fileops_auto.c /^__fop_rename_log(dbenv, txnp, ret_lsnp, flags,$/
+__fop_rename_noundo_log ../fileops/fileops_auto.c /^__fop_rename_noundo_log(dbenv, txnp, ret_lsnp, fla/
+__fop_rename_noundo_recover ../fileops/fop_rec.c /^__fop_rename_noundo_recover(dbenv, dbtp, lsnp, op,/
__fop_rename_print ../fileops/fileops_autop.c /^__fop_rename_print(dbenv, dbtp, lsnp, notused2, no/
__fop_rename_read ../fileops/fileops_auto.c /^__fop_rename_read(dbenv, recbuf, argpp)$/
__fop_rename_recover ../fileops/fop_rec.c /^__fop_rename_recover(dbenv, dbtp, lsnp, op, info)$/
+__fop_rename_recover_int ../fileops/fop_rec.c /^__fop_rename_recover_int(dbenv, dbtp, lsnp, op, in/
__fop_set_pgsize ../fileops/fop_util.c /^__fop_set_pgsize(dbp, fhp, name)$/
__fop_subdb_setup ../fileops/fop_util.c /^__fop_subdb_setup(dbp, txn, mname, name, mode, fla/
__fop_write ../fileops/fop_basic.c /^__fop_write(dbenv,$/
@@ -3481,35 +3844,25 @@ __ham_30_hashmeta ../hash/hash_upgrade.c /^__ham_30_hashmeta(dbp, real_name, obu
__ham_30_sizefix ../hash/hash_upgrade.c /^__ham_30_sizefix(dbp, fhp, realname, metabuf)$/
__ham_31_hash ../hash/hash_upgrade.c /^__ham_31_hash(dbp, real_name, flags, fhp, h, dirty/
__ham_31_hashmeta ../hash/hash_upgrade.c /^__ham_31_hashmeta(dbp, real_name, flags, fhp, h, d/
+__ham_46_hash ../hash/hash_upgrade.c /^__ham_46_hash(dbp, real_name, flags, fhp, h, dirty/
+__ham_46_hashmeta ../hash/hash_upgrade.c /^__ham_46_hashmeta(dbp, real_name, flags, fhp, h, d/
__ham_add_dup ../hash/hash_dup.c /^__ham_add_dup(dbc, nval, flags, pgnop)$/
__ham_add_el ../hash/hash_page.c /^__ham_add_el(dbc, key, val, type)$/
__ham_add_ovflpage ../hash/hash_page.c /^__ham_add_ovflpage(dbc, pagep, release, pp)$/
__ham_alloc_pages ../hash/hash_rec.c /^__ham_alloc_pages(file_dbp, argp, lsnp)$/
__ham_alloc_pages_42 ../hash/hash_rec.c /^__ham_alloc_pages_42(dbp, argp, lsnp)$/
__ham_bulk ../hash/hash.c /^__ham_bulk(dbc, data, flags)$/
-__ham_c_chgpg ../hash/hash_dup.c /^__ham_c_chgpg(dbc, old_pgno, old_index, new_pgno, /
-__ham_c_close ../hash/hash.c /^__ham_c_close(dbc, root_pgno, rmroot)$/
-__ham_c_count ../hash/hash.c /^__ham_c_count(dbc, recnop)$/
-__ham_c_del ../hash/hash.c /^__ham_c_del(dbc)$/
-__ham_c_delpg ../hash/hash_page.c /^__ham_c_delpg(dbc, old_pgno, new_pgno, num_ent, op/
-__ham_c_destroy ../hash/hash.c /^__ham_c_destroy(dbc)$/
-__ham_c_dup ../hash/hash.c /^__ham_c_dup(orig_dbc, new_dbc)$/
-__ham_c_get ../hash/hash.c /^__ham_c_get(dbc, key, data, flags, pgnop)$/
-__ham_c_init ../hash/hash.c /^__ham_c_init(dbc)$/
-__ham_c_put ../hash/hash.c /^__ham_c_put(dbc, key, data, flags, pgnop)$/
-__ham_c_update ../hash/hash.c /^__ham_c_update(dbc, len, add, is_dup)$/
-__ham_c_writelock ../hash/hash.c /^__ham_c_writelock(dbc)$/
__ham_call_hash ../hash/hash.c /^__ham_call_hash(dbc, k, len)$/
__ham_check_move ../hash/hash_dup.c /^__ham_check_move(dbc, add_len)$/
__ham_chgpg_log ../hash/hash_auto.c /^__ham_chgpg_log(dbp, txnp, ret_lsnp, flags, mode, /
__ham_chgpg_print ../hash/hash_autop.c /^__ham_chgpg_print(dbenv, dbtp, lsnp, notused2, not/
__ham_chgpg_read ../hash/hash_auto.c /^__ham_chgpg_read(dbenv, recbuf, argpp)$/
__ham_chgpg_recover ../hash/hash_rec.c /^__ham_chgpg_recover(dbenv, dbtp, lsnp, op, info)$/
-__ham_copy_item ../hash/hash_page.c /^__ham_copy_item(dbp, src_page, src_ndx, dest_page)/
__ham_copypage_log ../hash/hash_auto.c /^__ham_copypage_log(dbp, txnp, ret_lsnp, flags, pgn/
__ham_copypage_print ../hash/hash_autop.c /^__ham_copypage_print(dbenv, dbtp, lsnp, notused2, /
__ham_copypage_read ../hash/hash_auto.c /^__ham_copypage_read(dbenv, recbuf, argpp)$/
__ham_copypage_recover ../hash/hash_rec.c /^__ham_copypage_recover(dbenv, dbtp, lsnp, op, info/
+__ham_copypair ../hash/hash_page.c /^__ham_copypair(dbp, txn, src_page, src_ndx, dest_p/
__ham_curadj_log ../hash/hash_auto.c /^__ham_curadj_log(dbp, txnp, ret_lsnp, flags, pgno,/
__ham_curadj_print ../hash/hash_autop.c /^__ham_curadj_print(dbenv, dbtp, lsnp, notused2, no/
__ham_curadj_read ../hash/hash_auto.c /^__ham_curadj_read(dbenv, recbuf, argpp)$/
@@ -3517,7 +3870,7 @@ __ham_curadj_recover ../hash/hash_rec.c /^__ham_curadj_recover(dbenv, dbtp, lsnp
__ham_db_close ../hash/hash_method.c /^__ham_db_close(dbp)$/
__ham_db_create ../hash/hash_method.c /^__ham_db_create(dbp)$/
__ham_dcursor ../hash/hash_dup.c /^__ham_dcursor(dbc, pgno, indx)$/
-__ham_del_pair ../hash/hash_page.c /^__ham_del_pair(dbc, reclaim_page)$/
+__ham_del_pair ../hash/hash_page.c /^__ham_del_pair(dbc, flags)$/
__ham_dirty_meta ../hash/hash_meta.c /^__ham_dirty_meta(dbc, flags)$/
__ham_dpair ../hash/hash_page.c /^__ham_dpair(dbp, p, indx)$/
__ham_dsearch ../hash/hash_dup.c /^__ham_dsearch(dbc, dbt, offp, cmpp, flags)$/
@@ -3534,6 +3887,9 @@ __ham_get_cpage ../hash/hash_page.c /^__ham_get_cpage(dbc, mode)$/
__ham_get_h_ffactor ../hash/hash_method.c /^__ham_get_h_ffactor(dbp, h_ffactorp)$/
__ham_get_h_nelem ../hash/hash_method.c /^__ham_get_h_nelem(dbp, h_nelemp)$/
__ham_get_meta ../hash/hash_meta.c /^__ham_get_meta(dbc)$/
+__ham_getindex ../hash/hash_page.c /^__ham_getindex(dbp, txn, p, key, key_type, match, /
+__ham_getindex_sorted ../hash/hash_page.c /^__ham_getindex_sorted(dbp, txn, p, key, key_type, /
+__ham_getindex_unsorted ../hash/hash_page.c /^__ham_getindex_unsorted(dbp, txn, p, key, match, i/
__ham_groupalloc_42_print ../hash/hash_autop.c /^__ham_groupalloc_42_print(dbenv, dbtp, lsnp, notus/
__ham_groupalloc_42_read ../hash/hash_auto.c /^__ham_groupalloc_42_read(dbenv, recbuf, argpp)$/
__ham_groupalloc_42_recover ../hash/hash_rec.c /^__ham_groupalloc_42_recover(dbenv, dbtp, lsnp, op,/
@@ -3549,6 +3905,7 @@ __ham_insdel_log ../hash/hash_auto.c /^__ham_insdel_log(dbp, txnp, ret_lsnp, fla
__ham_insdel_print ../hash/hash_autop.c /^__ham_insdel_print(dbenv, dbtp, lsnp, notused2, no/
__ham_insdel_read ../hash/hash_auto.c /^__ham_insdel_read(dbenv, recbuf, argpp)$/
__ham_insdel_recover ../hash/hash_rec.c /^__ham_insdel_recover(dbenv, dbtp, lsnp, op, info)$/
+__ham_insertpair ../hash/hash_page.c /^__ham_insertpair(dbp, txn, p, indxp, key_dbt, data/
__ham_item ../hash/hash_page.c /^__ham_item(dbc, mode, pgnop)$/
__ham_item_first ../hash/hash_page.c /^__ham_item_first(dbc, mode, pgnop)$/
__ham_item_init ../hash/hash_page.c /^__ham_item_init(dbc)$/
@@ -3583,7 +3940,6 @@ __ham_overwrite ../hash/hash.c /^__ham_overwrite(dbc, nval, flags)$/
__ham_pgin ../hash/hash_conv.c /^__ham_pgin(dbenv, dummydbp, pg, pp, cookie)$/
__ham_pgout ../hash/hash_conv.c /^__ham_pgout(dbenv, dummydbp, pg, pp, cookie)$/
__ham_print_cursor ../hash/hash_stat.c /^__ham_print_cursor(dbc)$/
-__ham_putitem ../hash/hash_page.c /^__ham_putitem(dbp, p, dbt, type)$/
__ham_quick_delete ../hash/hash.c /^__ham_quick_delete(dbc)$/
__ham_reclaim ../hash/hash_reclaim.c /^__ham_reclaim(dbp, txn)$/
__ham_release_meta ../hash/hash_meta.c /^__ham_release_meta(dbc)$/
@@ -3592,11 +3948,13 @@ __ham_replace_print ../hash/hash_autop.c /^__ham_replace_print(dbenv, dbtp, lsnp
__ham_replace_read ../hash/hash_auto.c /^__ham_replace_read(dbenv, recbuf, argpp)$/
__ham_replace_recover ../hash/hash_rec.c /^__ham_replace_recover(dbenv, dbtp, lsnp, op, info)/
__ham_replpair ../hash/hash_page.c /^__ham_replpair(dbc, dbt, make_dup)$/
-__ham_reputpair ../hash/hash_page.c /^__ham_reputpair(dbp, p, ndx, key, data)$/
__ham_salvage ../hash/hash_verify.c /^__ham_salvage(dbp, vdp, pgno, h, handle, callback,/
+__ham_set_h_compare ../hash/hash_method.c /^__ham_set_h_compare(dbp, func)$/
__ham_set_h_ffactor ../hash/hash_method.c /^__ham_set_h_ffactor(dbp, h_ffactor)$/
__ham_set_h_hash ../hash/hash_method.c /^__ham_set_h_hash(dbp, func)$/
__ham_set_h_nelem ../hash/hash_method.c /^__ham_set_h_nelem(dbp, h_nelem)$/
+__ham_sort_page ../hash/hash_page.c /^__ham_sort_page(dbp, txn, tmp_buf, page)$/
+__ham_sort_page_cursor ../hash/hash_page.c /^__ham_sort_page_cursor(dbc, page)$/
__ham_split_page ../hash/hash_page.c /^__ham_split_page(dbc, obucket, nbucket)$/
__ham_splitdata_log ../hash/hash_auto.c /^__ham_splitdata_log(dbp, txnp, ret_lsnp, flags, op/
__ham_splitdata_print ../hash/hash_autop.c /^__ham_splitdata_print(dbenv, dbtp, lsnp, notused2,/
@@ -3608,35 +3966,46 @@ __ham_stat_print ../hash/hash_stat.c /^__ham_stat_print(dbc, flags)$/
__ham_test ../hash/hash_func.c /^__ham_test(dbp, key, len)$/
__ham_traverse ../hash/hash_stat.c /^__ham_traverse(dbc, mode, callback, cookie, look_p/
__ham_truncate ../hash/hash_reclaim.c /^__ham_truncate(dbc, countp)$/
+__ham_verify_sorted_page ../hash/hash_page.c /^__ham_verify_sorted_page (dbp, txn, p)$/
__ham_vrfy ../hash/hash_verify.c /^__ham_vrfy(dbp, vdp, h, pgno, flags)$/
__ham_vrfy_bucket ../hash/hash_verify.c /^__ham_vrfy_bucket(dbp, vdp, m, bucket, flags)$/
__ham_vrfy_hashing ../hash/hash_verify.c /^__ham_vrfy_hashing(dbp, nentries, m, thisbucket, p/
__ham_vrfy_item ../hash/hash_verify.c /^__ham_vrfy_item(dbp, vdp, pgno, h, i, flags)$/
__ham_vrfy_meta ../hash/hash_verify.c /^__ham_vrfy_meta(dbp, vdp, m, pgno, flags)$/
__ham_vrfy_structure ../hash/hash_verify.c /^__ham_vrfy_structure(dbp, vdp, meta_pgno, flags)$/
-__hdr ../dbinc/log.h /^struct __hdr {$/
-__int64 ../libdb_java/db_java_wrap.c /^ typedef long long __int64;$/
-__key_range ../dbinc/db.in /^struct __key_range {$/
-__kids ../dbinc/db.in /^ struct __kids {$/
+__hamc_chgpg ../hash/hash_dup.c /^__hamc_chgpg(dbc, old_pgno, old_index, new_pgno, n/
+__hamc_close ../hash/hash.c /^__hamc_close(dbc, root_pgno, rmroot)$/
+__hamc_count ../hash/hash.c /^__hamc_count(dbc, recnop)$/
+__hamc_del ../hash/hash.c /^__hamc_del(dbc)$/
+__hamc_delpg ../hash/hash_page.c /^__hamc_delpg(dbc, old_pgno, new_pgno, num_ent, op,/
+__hamc_destroy ../hash/hash.c /^__hamc_destroy(dbc)$/
+__hamc_dup ../hash/hash.c /^__hamc_dup(orig_dbc, new_dbc)$/
+__hamc_get ../hash/hash.c /^__hamc_get(dbc, key, data, flags, pgnop)$/
+__hamc_init ../hash/hash.c /^__hamc_init(dbc)$/
+__hamc_put ../hash/hash.c /^__hamc_put(dbc, key, data, flags, pgnop)$/
+__hamc_update ../hash/hash.c /^__hamc_update(dbc, len, operation, is_dup)$/
+__hamc_writelock ../hash/hash.c /^__hamc_writelock(dbc)$/
+__int64 ../libdb_java/db_java_wrap.c 113
__lock_addfamilylocker ../lock/lock_id.c /^__lock_addfamilylocker(dbenv, pid, id)$/
-__lock_dbenv_create ../lock/lock_method.c /^__lock_dbenv_create(dbenv)$/
-__lock_dbenv_destroy ../lock/lock_method.c /^__lock_dbenv_destroy(dbenv)$/
-__lock_dbenv_refresh ../lock/lock_region.c /^__lock_dbenv_refresh(dbenv)$/
-__lock_detect ../lock/lock_deadlock.c /^__lock_detect(dbenv, atype, abortp)$/
-__lock_detect_pp ../lock/lock_deadlock.c /^__lock_detect_pp(dbenv, flags, atype, abortp)$/
+__lock_detect ../lock/lock_deadlock.c /^__lock_detect(dbenv, atype, rejectp)$/
+__lock_detect_pp ../lock/lock_deadlock.c /^__lock_detect_pp(dbenv, flags, atype, rejectp)$/
__lock_downgrade ../lock/lock.c /^__lock_downgrade(dbenv, lock, new_mode, flags)$/
__lock_dump_locker ../lock/lock_stat.c /^__lock_dump_locker(dbenv, mbp, lt, lip)$/
__lock_dump_object ../lock/lock_stat.c /^__lock_dump_object(lt, mbp, op)$/
-__lock_expired ../lock/lock_timer.c /^__lock_expired(dbenv, now, timevalp)$/
-__lock_expires ../lock/lock_timer.c /^__lock_expires(dbenv, timevalp, timeout)$/
+__lock_env_create ../lock/lock_method.c /^__lock_env_create(dbenv)$/
+__lock_env_destroy ../lock/lock_method.c /^__lock_env_destroy(dbenv)$/
+__lock_env_refresh ../lock/lock_region.c /^__lock_env_refresh(dbenv)$/
+__lock_expired ../lock/lock_timer.c /^__lock_expired(dbenv, now, timespecp)$/
+__lock_expires ../lock/lock_timer.c /^__lock_expires(dbenv, timespecp, timeout)$/
__lock_failchk ../lock/lock_failchk.c /^__lock_failchk(dbenv)$/
__lock_fix_list ../lock/lock_list.c /^__lock_fix_list(dbenv, list_dbt, nlocks)$/
-__lock_freefamilylocker ../lock/lock_id.c /^__lock_freefamilylocker(lt, locker)$/
-__lock_freelock ../lock/lock.c /^__lock_freelock(lt, lockp, locker, flags)$/
-__lock_freelocker ../lock/lock_id.c /^__lock_freelocker(lt, region, sh_locker, indx)$/
+__lock_freefamilylocker ../lock/lock_id.c /^__lock_freefamilylocker(lt, sh_locker)$/
+__lock_freelock ../lock/lock.c /^__lock_freelock(lt, lockp, sh_locker, flags)$/
+__lock_freelocker ../lock/lock_id.c /^__lock_freelocker(lt, region, sh_locker)$/
__lock_get ../lock/lock.c /^__lock_get(dbenv, locker, flags, obj, lock_mode, l/
+__lock_get_api ../lock/lock.c /^__lock_get_api(dbenv, locker, flags, obj, lock_mod/
__lock_get_env_timeout ../lock/lock_method.c /^__lock_get_env_timeout(dbenv, timeoutp, flag)$/
-__lock_get_internal ../lock/lock.c /^__lock_get_internal(lt, locker, flags, obj, lock_m/
+__lock_get_internal ../lock/lock.c /^__lock_get_internal(lt, sh_locker, flags, obj, loc/
__lock_get_list ../lock/lock_list.c /^__lock_get_list(dbenv, locker, flags, lock_mode, l/
__lock_get_lk_conflicts ../lock/lock_method.c /^__lock_get_lk_conflicts(dbenv, lk_conflictsp, lk_m/
__lock_get_lk_detect ../lock/lock_method.c /^__lock_get_lk_detect(dbenv, lk_detectp)$/
@@ -3644,23 +4013,24 @@ __lock_get_lk_max_lockers ../lock/lock_method.c /^__lock_get_lk_max_lockers(dben
__lock_get_lk_max_locks ../lock/lock_method.c /^__lock_get_lk_max_locks(dbenv, lk_maxp)$/
__lock_get_lk_max_objects ../lock/lock_method.c /^__lock_get_lk_max_objects(dbenv, lk_maxp)$/
__lock_get_pp ../lock/lock.c /^__lock_get_pp(dbenv, locker, flags, obj, lock_mode/
-__lock_getlocker ../lock/lock_id.c /^__lock_getlocker(lt, locker, indx, create, retp)$/
+__lock_getlocker ../lock/lock_id.c /^__lock_getlocker(lt, locker, create, retp)$/
+__lock_getlocker_int ../lock/lock_id.c /^__lock_getlocker_int(lt, locker, create, retp)$/
__lock_getobj ../lock/lock.c /^__lock_getobj(lt, obj, ndx, create, retp)$/
__lock_id ../lock/lock_id.c /^__lock_id(dbenv, idp, lkp)$/
-__lock_id_free ../lock/lock_id.c /^__lock_id_free(dbenv, id)$/
+__lock_id_free ../lock/lock_id.c /^__lock_id_free(dbenv, sh_locker)$/
__lock_id_free_pp ../lock/lock_id.c /^__lock_id_free_pp(dbenv, id)$/
__lock_id_pp ../lock/lock_id.c /^__lock_id_pp(dbenv, idp)$/
__lock_id_set ../lock/lock_id.c /^__lock_id_set(dbenv, cur_id, max_id)$/
-__lock_inherit_locks ../lock/lock.c /^__lock_inherit_locks(lt, locker, flags)$/
+__lock_inherit_locks ../lock/lock.c /^__lock_inherit_locks(lt, sh_locker, flags)$/
__lock_inherit_timeout ../lock/lock_timer.c /^__lock_inherit_timeout(dbenv, parent, locker)$/
-__lock_is_parent ../lock/lock.c /^__lock_is_parent(lt, locker, sh_locker)$/
+__lock_is_parent ../lock/lock.c /^__lock_is_parent(lt, l_off, sh_locker)$/
__lock_lhash ../lock/lock_util.c /^__lock_lhash(lock_obj)$/
__lock_list_print ../lock/lock_list.c /^__lock_list_print(dbenv, list)$/
__lock_locker_hash ../dbinc/lock.h /^#define __lock_locker_hash(locker) (locker)$/
__lock_locker_is_parent ../lock/lock.c /^__lock_locker_is_parent(dbenv, locker, child, retp/
__lock_nomem ../lock/lock_util.c /^__lock_nomem(dbenv, res)$/
__lock_ohash ../lock/lock_util.c /^__lock_ohash(dbt)$/
-__lock_open ../lock/lock_region.c /^__lock_open(dbenv)$/
+__lock_open ../lock/lock_region.c /^__lock_open(dbenv, create_ok)$/
__lock_print_all ../lock/lock_stat.c /^__lock_print_all(dbenv, flags)$/
__lock_print_header ../lock/lock_stat.c /^__lock_print_header(dbenv)$/
__lock_print_stats ../lock/lock_stat.c /^__lock_print_stats(dbenv, flags)$/
@@ -3680,46 +4050,32 @@ __lock_set_lk_detect ../lock/lock_method.c /^__lock_set_lk_detect(dbenv, lk_dete
__lock_set_lk_max_lockers ../lock/lock_method.c /^__lock_set_lk_max_lockers(dbenv, lk_max)$/
__lock_set_lk_max_locks ../lock/lock_method.c /^__lock_set_lk_max_locks(dbenv, lk_max)$/
__lock_set_lk_max_objects ../lock/lock_method.c /^__lock_set_lk_max_objects(dbenv, lk_max)$/
-__lock_set_thread_id ../lock/lock_id.c /^__lock_set_thread_id(lref, pid, tid)$/
+__lock_set_thread_id ../lock/lock_id.c /^__lock_set_thread_id(lref_arg, pid, tid)$/
__lock_set_timeout ../lock/lock_timer.c /^__lock_set_timeout(dbenv, locker, timeout, op)$/
-__lock_set_timeout_internal ../lock/lock_timer.c /^__lock_set_timeout_internal(dbenv, locker, timeout/
+__lock_set_timeout_internal ../lock/lock_timer.c /^__lock_set_timeout_internal(dbenv, sh_locker, time/
__lock_sort_cmp ../lock/lock_list.c /^__lock_sort_cmp(a, b)$/
__lock_stat ../lock/lock_stat.c /^__lock_stat(dbenv, statp, flags)$/
__lock_stat_pp ../lock/lock_stat.c /^__lock_stat_pp(dbenv, statp, flags)$/
__lock_stat_print ../lock/lock_stat.c /^__lock_stat_print(dbenv, flags)$/
__lock_stat_print_pp ../lock/lock_stat.c /^__lock_stat_print_pp(dbenv, flags)$/
__lock_trade ../lock/lock.c /^__lock_trade(dbenv, lock, new_locker)$/
-__lock_vec ../lock/lock.c /^__lock_vec(dbenv, locker, flags, list, nlist, elis/
-__lock_vec_pp ../lock/lock.c /^__lock_vec_pp(dbenv, locker, flags, list, nlist, e/
-__log ../dbinc/log.h /^struct __log {$/
+__lock_vec ../lock/lock.c /^__lock_vec(dbenv, sh_locker, flags, list, nlist, e/
+__lock_vec_api ../lock/lock.c /^__lock_vec_api(dbenv, lid, flags, list, nlist, eli/
+__lock_vec_pp ../lock/lock.c /^__lock_vec_pp(dbenv, lid, flags, list, nlist, elis/
__log_archive ../log/log_archive.c /^__log_archive(dbenv, listp, flags)$/
__log_archive_pp ../log/log_archive.c /^__log_archive_pp(dbenv, listp, flags)$/
__log_autoremove ../log/log_archive.c /^__log_autoremove(dbenv)$/
__log_backup ../env/env_recover.c /^__log_backup(dbenv, logc, max_lsn, start_lsn, cmp)/
-__log_c_close ../log/log_get.c /^__log_c_close(logc)$/
-__log_c_close_pp ../log/log_get.c /^__log_c_close_pp(logc, flags)$/
-__log_c_get ../log/log_get.c /^__log_c_get(logc, alsn, dbt, flags)$/
-__log_c_get_int ../log/log_get.c /^__log_c_get_int(logc, alsn, dbt, flags)$/
-__log_c_get_pp ../log/log_get.c /^__log_c_get_pp(logc, alsn, dbt, flags)$/
-__log_c_hdrchk ../log/log_get.c /^__log_c_hdrchk(logc, lsn, hdr, eofp)$/
-__log_c_incursor ../log/log_get.c /^__log_c_incursor(logc, lsn, hdr, pp)$/
-__log_c_inregion ../log/log_get.c /^__log_c_inregion(logc, lsn, rlockp, last_lsn, hdr,/
-__log_c_io ../log/log_get.c /^__log_c_io(logc, fnum, offset, p, nrp, eofp)$/
-__log_c_ondisk ../log/log_get.c /^__log_c_ondisk(logc, lsn, last_lsn, flags, hdr, pp/
-__log_c_set_maxrec ../log/log_get.c /^__log_c_set_maxrec(logc, np)$/
-__log_c_shortread ../log/log_get.c /^__log_c_shortread(logc, lsn, check_silent)$/
-__log_c_version ../log/log_get.c /^__log_c_version(logc, versionp)$/
-__log_c_version_pp ../log/log_get.c /^__log_c_version_pp(logc, versionp, flags)$/
__log_check_page_lsn ../log/log_compare.c /^__log_check_page_lsn(dbenv, dbp, lsnp)$/
__log_check_sizes ../log/log_method.c /^__log_check_sizes(dbenv, lg_max, lg_bsize)$/
__log_current_lsn ../log/log_put.c /^__log_current_lsn(dbenv, lsnp, mbytesp, bytesp)$/
__log_cursor ../log/log_get.c /^__log_cursor(dbenv, logcp)$/
__log_cursor_pp ../log/log_get.c /^__log_cursor_pp(dbenv, logcp, flags)$/
-__log_dbenv_create ../log/log_method.c /^__log_dbenv_create(dbenv)$/
-__log_dbenv_destroy ../log/log_method.c /^__log_dbenv_destroy(dbenv)$/
-__log_dbenv_refresh ../log/log.c /^__log_dbenv_refresh(dbenv)$/
__log_earliest ../env/env_recover.c /^__log_earliest(dbenv, logc, lowtime, lowlsn)$/
__log_encrypt_record ../log/log_put.c /^__log_encrypt_record(dbenv, dbt, hdr, orig)$/
+__log_env_create ../log/log_method.c /^__log_env_create(dbenv)$/
+__log_env_destroy ../log/log_method.c /^__log_env_destroy(dbenv)$/
+__log_env_refresh ../log/log.c /^__log_env_refresh(dbenv)$/
__log_file ../log/log_put.c /^__log_file(dbenv, lsn, namep, len)$/
__log_file_pp ../log/log_put.c /^__log_file_pp(dbenv, lsn, namep, len)$/
__log_fill ../log/log_put.c /^__log_fill(dblp, lsn, addr, len)$/
@@ -3747,12 +4103,11 @@ __log_is_outdated ../log/log.c /^__log_is_outdated(dbenv, fnum, outdatedp)$/
__log_name ../log/log_put.c /^__log_name(dblp, filenumber, namep, fhpp, flags)$/
__log_newfh ../log/log_put.c /^__log_newfh(dblp, create)$/
__log_newfile ../log/log_put.c /^__log_newfile(dblp, lsnp, logfile, version)$/
-__log_open ../log/log.c /^__log_open(dbenv)$/
-__log_persist ../dbinc/log.h /^struct __log_persist {$/
+__log_open ../log/log.c /^__log_open(dbenv, create_ok)$/
__log_print_all ../log/log_stat.c /^__log_print_all(dbenv, flags)$/
__log_print_stats ../log/log_stat.c /^__log_print_stats(dbenv, flags)$/
-__log_printf ../log/log_debug.c /^__log_printf(dbenv, txnid, fmt, va_alist)$/
-__log_printf_capi ../log/log_debug.c /^__log_printf_capi(dbenv, txnid, fmt, va_alist)$/
+__log_printf ../log/log_debug.c /^__log_printf(DB_ENV *dbenv, DB_TXN *txnid, const c/
+__log_printf_capi ../log/log_debug.c /^__log_printf_capi(DB_ENV *dbenv, DB_TXN *txnid, co/
__log_printf_int ../log/log_debug.c /^__log_printf_int(dbenv, txnid, fmt, ap)$/
__log_printf_pp ../log/log_debug.c /^__log_printf_pp(dbenv, txnid, fmt, ap)$/
__log_put ../log/log_put.c /^__log_put(dbenv, lsnp, udbt, flags)$/
@@ -3762,7 +4117,7 @@ __log_putr ../log/log_put.c /^__log_putr(dblp, lsn, dbt, prev, h)$/
__log_recover ../log/log.c /^__log_recover(dblp)$/
__log_region_mutex_count ../log/log.c /^__log_region_mutex_count(dbenv)$/
__log_region_size ../log/log.c /^__log_region_size(dbenv)$/
-__log_rep_put ../log/log_put.c /^__log_rep_put(dbenv, lsnp, rec)$/
+__log_rep_put ../log/log_put.c /^__log_rep_put(dbenv, lsnp, rec, flags)$/
__log_rep_split ../log/log_get.c /^__log_rep_split(dbenv, rp, rec, ret_lsnp, last_lsn/
__log_set_flags ../log/log_method.c /^__log_set_flags(dbenv, flags, on)$/
__log_set_lg_bsize ../log/log_method.c /^__log_set_lg_bsize(dbenv, lg_bsize)$/
@@ -3778,25 +4133,41 @@ __log_stat_print_pp ../log/log_stat.c /^__log_stat_print_pp(dbenv, flags)$/
__log_valid ../log/log.c /^__log_valid(dblp, number, set_persist, fhpp, flags/
__log_vtruncate ../log/log.c /^__log_vtruncate(dbenv, lsn, ckplsn, trunclsn)$/
__log_write ../log/log_put.c /^__log_write(dblp, addr, len)$/
-__log_zero ../log/log.c /^__log_zero(dbenv, from_lsn, to_lsn)$/
+__log_zero ../log/log.c /^__log_zero(dbenv, from_lsn)$/
+__logc_close ../log/log_get.c /^__logc_close(logc)$/
+__logc_close_pp ../log/log_get.c /^__logc_close_pp(logc, flags)$/
+__logc_get ../log/log_get.c /^__logc_get(logc, alsn, dbt, flags)$/
+__logc_get_int ../log/log_get.c /^__logc_get_int(logc, alsn, dbt, flags)$/
+__logc_get_pp ../log/log_get.c /^__logc_get_pp(logc, alsn, dbt, flags)$/
+__logc_hdrchk ../log/log_get.c /^__logc_hdrchk(logc, lsn, hdr, eofp)$/
+__logc_incursor ../log/log_get.c /^__logc_incursor(logc, lsn, hdr, pp)$/
+__logc_inregion ../log/log_get.c /^__logc_inregion(logc, lsn, rlockp, last_lsn, hdr, /
+__logc_io ../log/log_get.c /^__logc_io(logc, fnum, offset, p, nrp, eofp)$/
+__logc_ondisk ../log/log_get.c /^__logc_ondisk(logc, lsn, last_lsn, flags, hdr, pp,/
+__logc_set_maxrec ../log/log_get.c /^__logc_set_maxrec(logc, np)$/
+__logc_shortread ../log/log_get.c /^__logc_shortread(logc, lsn, check_silent)$/
+__logc_version ../log/log_get.c /^__logc_version(logc, versionp)$/
+__logc_version_pp ../log/log_get.c /^__logc_version_pp(logc, versionp, flags)$/
__lsn_diff ../env/env_recover.c /^__lsn_diff(low, high, current, max, is_forward)$/
+__memp_add_bucket ../mp/mp_resize.c /^__memp_add_bucket(dbmp)$/
+__memp_add_region ../mp/mp_resize.c /^__memp_add_region(dbmp)$/
__memp_alloc ../mp/mp_alloc.c /^__memp_alloc(dbmp, infop, mfp, len, offsetp, retp)/
__memp_alloc_freelist ../mp/mp_method.c /^__memp_alloc_freelist(dbmfp, nelems, listp)$/
__memp_bad_buffer ../mp/mp_alloc.c /^__memp_bad_buffer(dbenv, hp)$/
__memp_bh_freeze ../mp/mp_mvcc.c /^__memp_bh_freeze(dbmp, infop, hp, bhp, need_frozen/
__memp_bh_priority ../mp/mp_mvcc.c /^__memp_bh_priority(bhp)$/
-__memp_bh_settxn ../mp/mp_mvcc.c /^int __memp_bh_settxn(dbmp, mfp, bhp, vtd)$/
+__memp_bh_settxn ../mp/mp_mvcc.c /^__memp_bh_settxn(dbmp, mfp, bhp, vtd)$/
__memp_bh_thaw ../mp/mp_mvcc.c /^__memp_bh_thaw(dbmp, infop, hp, frozen_bhp, alloc_/
-__memp_bhfree ../mp/mp_bh.c /^__memp_bhfree(dbmp, hp, bhp, flags)$/
+__memp_bhfree ../mp/mp_bh.c /^__memp_bhfree(dbmp, infop, hp, bhp, flags)$/
__memp_bhwrite ../mp/mp_bh.c /^__memp_bhwrite(dbmp, hp, mfp, bhp, open_extents)$/
__memp_bucket_reorder ../mp/mp_mvcc.c /^__memp_bucket_reorder(dbenv, hp, bhp)$/
__memp_check_order ../mp/mp_alloc.c /^__memp_check_order(dbenv, hp)$/
-__memp_close_flush_files ../mp/mp_sync.c /^__memp_close_flush_files(dbenv, dbmp, dosync)$/
+__memp_close_flush_files ../mp/mp_sync.c /^__memp_close_flush_files(dbenv, dosync)$/
__memp_count_files ../mp/mp_stat.c /^__memp_count_files(dbenv, mfp, argp, countp, flags/
-__memp_dbenv_create ../mp/mp_method.c /^__memp_dbenv_create(dbenv)$/
-__memp_dbenv_destroy ../mp/mp_method.c /^__memp_dbenv_destroy(dbenv)$/
-__memp_dbenv_refresh ../mp/mp_region.c /^__memp_dbenv_refresh(dbenv)$/
-__memp_dirty ../mp/mp_fset.c /^__memp_dirty(dbmfp, addrp, txn, flags)$/
+__memp_dirty ../mp/mp_fset.c /^__memp_dirty(dbmfp, addrp, txn, priority, flags)$/
+__memp_env_create ../mp/mp_method.c /^__memp_env_create(dbenv)$/
+__memp_env_destroy ../mp/mp_method.c /^__memp_env_destroy(dbenv)$/
+__memp_env_refresh ../mp/mp_region.c /^__memp_env_refresh(dbenv)$/
__memp_extend_freelist ../mp/mp_method.c /^__memp_extend_freelist(dbmfp, count, listp)$/
__memp_fclose ../mp/mp_fopen.c /^__memp_fclose(dbmfp, flags)$/
__memp_fclose_pp ../mp/mp_fopen.c /^__memp_fclose_pp(dbmfp, flags)$/
@@ -3809,22 +4180,24 @@ __memp_fn ../mp/mp_fmethod.c /^__memp_fn(dbmfp)$/
__memp_fns ../mp/mp_fmethod.c /^__memp_fns(dbmp, mfp)$/
__memp_fopen ../mp/mp_fopen.c /^__memp_fopen(dbmfp, mfp, path, flags, mode, pgsize/
__memp_fopen_pp ../mp/mp_fopen.c /^__memp_fopen_pp(dbmfp, path, flags, mode, pagesize/
-__memp_fput ../mp/mp_fput.c /^__memp_fput(dbmfp, pgaddr, flags)$/
-__memp_fput_pp ../mp/mp_fput.c /^__memp_fput_pp(dbmfp, pgaddr, flags)$/
+__memp_fput ../mp/mp_fput.c /^__memp_fput(dbmfp, pgaddr, priority)$/
+__memp_fput_pp ../mp/mp_fput.c /^__memp_fput_pp(dbmfp, pgaddr, priority, flags)$/
__memp_free ../mp/mp_alloc.c /^__memp_free(infop, mfp, buf)$/
__memp_free_freelist ../mp/mp_method.c /^__memp_free_freelist(dbmfp)$/
-__memp_fset ../mp/mp_fset.c /^__memp_fset(dbmfp, pgaddr, flags)$/
-__memp_fset_pp ../mp/mp_fset.c /^__memp_fset_pp(dbmfp, pgaddr, flags)$/
__memp_fsync ../mp/mp_sync.c /^__memp_fsync(dbmfp)$/
__memp_fsync_pp ../mp/mp_sync.c /^__memp_fsync_pp(dbmfp)$/
__memp_ftruncate ../mp/mp_method.c /^__memp_ftruncate(dbmfp, pgno, flags)$/
+__memp_get_bucket ../mp/mp_resize.c /^__memp_get_bucket(dbmfp, pgno, infopp, hpp)$/
+__memp_get_cache_max ../mp/mp_resize.c /^__memp_get_cache_max(dbenv, max_gbytesp, max_bytes/
__memp_get_cachesize ../mp/mp_method.c /^__memp_get_cachesize(dbenv, gbytesp, bytesp, ncach/
__memp_get_clear_len ../mp/mp_fmethod.c /^__memp_get_clear_len(dbmfp, clear_lenp)$/
+__memp_get_config ../mp/mp_method.c /^__memp_get_config(dbenv, which, onp)$/
__memp_get_fileid ../mp/mp_fmethod.c /^__memp_get_fileid(dbmfp, fileid)$/
__memp_get_files ../mp/mp_stat.c /^__memp_get_files(dbenv, mfp, argp, countp, flags)$/
__memp_get_flags ../mp/mp_fmethod.c /^__memp_get_flags(dbmfp, flagsp)$/
__memp_get_freelist ../mp/mp_method.c /^__memp_get_freelist(dbmfp, nelemp, listp)$/
__memp_get_ftype ../mp/mp_fmethod.c /^__memp_get_ftype(dbmfp, ftypep)$/
+__memp_get_last_pgno ../mp/mp_fmethod.c /^__memp_get_last_pgno(dbmfp, pgnoaddr)$/
__memp_get_lsn_offset ../mp/mp_fmethod.c /^__memp_get_lsn_offset(dbmfp, lsn_offsetp)$/
__memp_get_maxsize ../mp/mp_fmethod.c /^__memp_get_maxsize(dbmfp, gbytesp, bytesp)$/
__memp_get_mp_max_openfd ../mp/mp_method.c /^__memp_get_mp_max_openfd(dbenv, maxopenfdp)$/
@@ -3835,12 +4208,15 @@ __memp_get_priority ../mp/mp_fmethod.c /^__memp_get_priority(dbmfp, priorityp)$/
__memp_init ../mp/mp_region.c /^__memp_init(dbenv, dbmp, reginfo_off, htab_buckets/
__memp_init_config ../mp/mp_region.c /^__memp_init_config(dbenv, mp)$/
__memp_inmemlist ../mp/mp_fopen.c /^__memp_inmemlist(dbenv, namesp, cntp)$/
-__memp_last_pgno ../mp/mp_fmethod.c /^__memp_last_pgno(dbmfp, pgnoaddr)$/
+__memp_map_regions ../mp/mp_resize.c /^__memp_map_regions(dbmp)$/
+__memp_max_regions ../mp/mp_region.c /^__memp_max_regions(dbenv)$/
+__memp_merge_buckets ../mp/mp_resize.c /^__memp_merge_buckets(dbmp, new_nbuckets, old_bucke/
__memp_mf_discard ../mp/mp_fopen.c /^__memp_mf_discard(dbmp, mfp)$/
-__memp_mf_sync ../mp/mp_sync.c /^__memp_mf_sync(dbmp, mfp, region_locked)$/
-__memp_mfp_alloc ../mp/mp_fopen.c /^__memp_mfp_alloc(dbmp, dbmfp, path, pagesize, flag/
+__memp_mf_sync ../mp/mp_sync.c /^__memp_mf_sync(dbmp, mfp, locked)$/
+__memp_mpf_alloc ../mp/mp_fopen.c /^__memp_mpf_alloc(dbmp, dbmfp, path, pagesize, flag/
+__memp_mpf_find ../mp/mp_fopen.c /^__memp_mpf_find(dbenv, dbmfp, hp, path, flags, mfp/
__memp_nameop ../mp/mp_method.c /^__memp_nameop(dbenv, fileid, newname, fullold, ful/
-__memp_open ../mp/mp_region.c /^__memp_open(dbenv)$/
+__memp_open ../mp/mp_region.c /^__memp_open(dbenv, create_ok)$/
__memp_pg ../mp/mp_bh.c /^__memp_pg(dbmfp, bhp, is_pgin)$/
__memp_pgread ../mp/mp_bh.c /^__memp_pgread(dbmfp, hp, bhp, can_create)$/
__memp_pgwrite ../mp/mp_bh.c /^__memp_pgwrite(dbenv, dbmfp, hp, bhp)$/
@@ -3853,9 +4229,14 @@ __memp_region_mutex_count ../mp/mp_region.c /^__memp_region_mutex_count(dbenv)$/
__memp_region_size ../mp/mp_region.c /^__memp_region_size(dbenv, reg_sizep, htab_bucketsp/
__memp_register ../mp/mp_register.c /^__memp_register(dbenv, ftype, pgin, pgout)$/
__memp_register_pp ../mp/mp_register.c /^__memp_register_pp(dbenv, ftype, pgin, pgout)$/
+__memp_remove_bucket ../mp/mp_resize.c /^__memp_remove_bucket(dbmp)$/
+__memp_remove_region ../mp/mp_resize.c /^__memp_remove_region(dbmp)$/
__memp_reset_lru ../mp/mp_fput.c /^__memp_reset_lru(dbenv, infop)$/
+__memp_resize ../mp/mp_resize.c /^__memp_resize(dbmp, gbytes, bytes)$/
+__memp_set_cache_max ../mp/mp_resize.c /^__memp_set_cache_max(dbenv, max_gbytes, max_bytes)/
__memp_set_cachesize ../mp/mp_method.c /^__memp_set_cachesize(dbenv, gbytes, bytes, arg_nca/
__memp_set_clear_len ../mp/mp_fmethod.c /^__memp_set_clear_len(dbmfp, clear_len)$/
+__memp_set_config ../mp/mp_method.c /^__memp_set_config(dbenv, which, on)$/
__memp_set_fileid ../mp/mp_fmethod.c /^__memp_set_fileid(dbmfp, fileid)$/
__memp_set_flags ../mp/mp_fmethod.c /^__memp_set_flags(dbmfp, flags, onoff)$/
__memp_set_ftype ../mp/mp_fmethod.c /^__memp_set_ftype(dbmfp, ftype)$/
@@ -3873,25 +4254,24 @@ __memp_stat_pp ../mp/mp_stat.c /^__memp_stat_pp(dbenv, gspp, fspp, flags)$/
__memp_stat_print ../mp/mp_stat.c /^__memp_stat_print(dbenv, flags)$/
__memp_stat_print_pp ../mp/mp_stat.c /^__memp_stat_print_pp(dbenv, flags)$/
__memp_stat_wait ../mp/mp_stat.c /^__memp_stat_wait(dbenv, reginfo, mp, mstat, flags)/
-__memp_sync ../mp/mp_sync.c /^__memp_sync(dbenv, lsnp)$/
+__memp_sync ../mp/mp_sync.c /^__memp_sync(dbenv, flags, lsnp)$/
__memp_sync_file ../mp/mp_sync.c /^__memp_sync_file(dbenv, mfp, argp, countp, flags)$/
-__memp_sync_files ../mp/mp_sync.c /^int __memp_sync_files(dbenv, dbmp)$/
-__memp_sync_int ../mp/mp_sync.c /^__memp_sync_int(dbenv, dbmfp, trickle_max, op, wro/
+__memp_sync_files ../mp/mp_sync.c /^__memp_sync_files(dbenv)$/
+__memp_sync_int ../mp/mp_sync.c /^__memp_sync_int(dbenv, dbmfp, trickle_max, flags, /
__memp_sync_pp ../mp/mp_sync.c /^__memp_sync_pp(dbenv, lsnp)$/
__memp_trickle ../mp/mp_trickle.c /^__memp_trickle(dbenv, pct, nwrotep)$/
__memp_trickle_pp ../mp/mp_trickle.c /^__memp_trickle_pp(dbenv, pct, nwrotep)$/
__memp_walk_files ../mp/mp_sync.c /^__memp_walk_files(dbenv, mp, func, arg, countp, fl/
__mp_xxx_fh ../mp/mp_sync.c /^__mp_xxx_fh(dbmfp, fhp)$/
__mpe_fsync ../os/os_fsync.c /^__mpe_fsync(fd)$/
-__mpool ../dbinc/mp.h /^struct __mpool {$/
-__mpoolfile ../dbinc/mp.h /^struct __mpoolfile {$/
__mut_failchk ../mutex/mut_failchk.c /^__mut_failchk(dbenv)$/
+__mutex_align_size ../mutex/mut_region.c /^__mutex_align_size(dbenv)$/
__mutex_alloc ../mutex/mut_alloc.c /^__mutex_alloc(dbenv, alloc_id, flags, indxp)$/
__mutex_alloc_int ../mutex/mut_alloc.c /^__mutex_alloc_int(dbenv, locksys, alloc_id, flags,/
__mutex_alloc_pp ../mutex/mut_method.c /^__mutex_alloc_pp(dbenv, flags, indxp)$/
__mutex_clear ../mutex/mut_stat.c /^__mutex_clear(dbenv, mutex)$/
-__mutex_dbenv_refresh ../mutex/mut_region.c /^__mutex_dbenv_refresh(dbenv)$/
__mutex_destroy ../dbinc/mutex.h /^#define __mutex_destroy(a, b) __db_pthread_mutex_/
+__mutex_env_refresh ../mutex/mut_region.c /^__mutex_env_refresh(dbenv)$/
__mutex_free ../mutex/mut_alloc.c /^__mutex_free(dbenv, indxp)$/
__mutex_free_int ../mutex/mut_alloc.c /^__mutex_free_int(dbenv, locksys, indxp)$/
__mutex_free_pp ../mutex/mut_method.c /^__mutex_free_pp(dbenv, indx)$/
@@ -3902,7 +4282,7 @@ __mutex_get_tas_spins ../mutex/mut_method.c /^__mutex_get_tas_spins(dbenv, tas_s
__mutex_init ../dbinc/mutex.h /^#define __mutex_init(a, b, c) __db_pthread_mutex_/
__mutex_lock ../dbinc/mutex.h /^#define __mutex_lock(a, b) __db_pthread_mutex_loc/
__mutex_lock_pp ../mutex/mut_method.c /^__mutex_lock_pp(dbenv, indx)$/
-__mutex_open ../mutex/mut_region.c /^__mutex_open(dbenv)$/
+__mutex_open ../mutex/mut_region.c /^__mutex_open(dbenv, create_ok)$/
__mutex_print_all ../mutex/mut_stat.c /^__mutex_print_all(dbenv, flags)$/
__mutex_print_debug_single ../mutex/mut_stat.c /^__mutex_print_debug_single(dbenv, tag, mutex, flag/
__mutex_print_debug_stats ../mutex/mut_stat.c /^__mutex_print_debug_stats(dbenv, mbp, mutex, flags/
@@ -3918,15 +4298,17 @@ __mutex_set_max ../mutex/mut_method.c /^__mutex_set_max(dbenv, max)$/
__mutex_set_tas_spins ../mutex/mut_method.c /^__mutex_set_tas_spins(dbenv, tas_spins)$/
__mutex_set_wait_info ../mutex/mut_stat.c /^__mutex_set_wait_info(dbenv, mutex, waitp, nowaitp/
__mutex_stat ../mutex/mut_stat.c /^__mutex_stat(dbenv, statp, flags)$/
+__mutex_stat_pp ../mutex/mut_stat.c /^__mutex_stat_pp(dbenv, statp, flags)$/
__mutex_stat_print ../mutex/mut_stat.c /^__mutex_stat_print(dbenv, flags)$/
+__mutex_stat_print_pp ../mutex/mut_stat.c /^__mutex_stat_print_pp(dbenv, flags)$/
__mutex_unlock ../dbinc/mutex.h /^#define __mutex_unlock(a, b) __db_pthread_mutex_u/
__mutex_unlock_pp ../mutex/mut_method.c /^__mutex_unlock_pp(dbenv, indx)$/
__no_system_mem ../os/os_map.c /^__no_system_mem(dbenv)$/
__op_rep_enter ../rep/rep_util.c /^__op_rep_enter(dbenv)$/
__op_rep_exit ../rep/rep_util.c /^__op_rep_exit(dbenv)$/
+__os_abort ../os/os_abort.c /^__os_abort()$/
__os_abspath ../os/os_abs.c /^__os_abspath(path)$/
__os_calloc ../os/os_alloc.c /^__os_calloc(dbenv, num, size, storep)$/
-__os_clock ../os/os_clock.c /^__os_clock(dbenv, secsp, usecsp)$/
__os_closehandle ../os/os_handle.c /^__os_closehandle(dbenv, fhp)$/
__os_dirfree ../os/os_dir.c /^__os_dirfree(dbenv, names, cnt)$/
__os_dirlist ../os/os_dir.c /^__os_dirlist(dbenv, dir, namesp, cntp)$/
@@ -3941,6 +4323,7 @@ __os_get_errno_ret_zero ../os/os_errno.c /^__os_get_errno_ret_zero()$/
__os_get_neterr ../os/os_errno.c /^__os_get_neterr()$/
__os_get_syserr ../os/os_errno.c /^__os_get_syserr()$/
__os_getenv ../os/os_getenv.c /^__os_getenv(dbenv, name, bpp, buflen)$/
+__os_gettime ../os/os_clock.c /^__os_gettime(dbenv, tp)$/
__os_guard ../os/os_alloc.c /^__os_guard(dbenv)$/
__os_id ../os/os_pid.c /^__os_id(dbenv, pidp, tidp)$/
__os_io ../os/os_rw.c /^__os_io(dbenv, op, fhp, pgno, pgsize, relative, io/
@@ -3950,13 +4333,13 @@ __os_malloc ../os/os_alloc.c /^__os_malloc(dbenv, size, storep)$/
__os_map ../os/os_map.c /^__os_map(dbenv, path, fhp, len, is_region, is_rdon/
__os_mapfile ../os/os_map.c /^__os_mapfile(dbenv, path, fhp, len, is_rdonly, add/
__os_mkdir ../os/os_mkdir.c /^__os_mkdir(dbenv, name, mode)$/
-__os_open ../os/os_open.c /^__os_open(dbenv, name, flags, mode, fhpp)$/
-__os_open_extend ../os/os_open.c /^__os_open_extend(dbenv, name, page_size, flags, mo/
+__os_open ../os/os_open.c /^__os_open(dbenv, name, page_size, flags, mode, fhp/
__os_openhandle ../os/os_handle.c /^__os_openhandle(dbenv, name, flags, mode, fhpp)$/
__os_physwrite ../os/os_rw.c /^__os_physwrite(dbenv, fhp, addr, len, nwp)$/
__os_posix_err ../os/os_errno.c /^__os_posix_err(error)$/
__os_pstat_getdynamic ../os/os_spin.c /^__os_pstat_getdynamic()$/
-__os_qnx_region_open ../os/os_open.c /^__os_qnx_region_open(dbenv, name, oflags, mode, fh/
+__os_qnx_region_open ../os_qnx/os_qnx_open.c /^__os_qnx_region_open(dbenv, name, oflags, mode, fh/
+__os_qnx_shmname ../os_qnx/os_qnx_open.c /^__os_qnx_shmname(dbenv, name, newnamep)$/
__os_r_attach ../os/os_region.c /^__os_r_attach(dbenv, infop, rp)$/
__os_r_detach ../os/os_region.c /^__os_r_detach(dbenv, infop, destroy)$/
__os_r_sysattach ../os/os_map.c /^__os_r_sysattach(dbenv, infop, rp)$/
@@ -3964,10 +4347,9 @@ __os_r_sysdetach ../os/os_map.c /^__os_r_sysdetach(dbenv, infop, destroy)$/
__os_read ../os/os_rw.c /^__os_read(dbenv, fhp, addr, len, nrp)$/
__os_realloc ../os/os_alloc.c /^__os_realloc(dbenv, size, storep)$/
__os_region_unlink ../os/os_unlink.c /^__os_region_unlink(dbenv, path)$/
-__os_rename ../os/os_rename.c /^__os_rename(dbenv, old, new, silent)$/
+__os_rename ../os/os_rename.c /^__os_rename(dbenv, oldname, newname, silent)$/
__os_seek ../os/os_seek.c /^__os_seek(dbenv, fhp, pgno, pgsize, relative)$/
__os_set_errno ../os/os_errno.c /^__os_set_errno(evalue)$/
-__os_shmname ../os/os_open.c /^__os_shmname(dbenv, name, newnamep)$/
__os_sleep ../os/os_sleep.c /^__os_sleep(dbenv, secs, usecs)$/
__os_spin ../os/os_spin.c /^__os_spin(dbenv)$/
__os_strdup ../os/os_alloc.c /^__os_strdup(dbenv, str, storep)$/
@@ -3996,13 +4378,6 @@ __qam_add_read ../qam/qam_auto.c /^__qam_add_read(dbenv, recbuf, argpp)$/
__qam_add_recover ../qam/qam_rec.c /^__qam_add_recover(dbenv, dbtp, lsnp, op, info)$/
__qam_append ../qam/qam.c /^__qam_append(dbc, key, data)$/
__qam_bulk ../qam/qam.c /^__qam_bulk(dbc, data, flags)$/
-__qam_c_close ../qam/qam.c /^__qam_c_close(dbc, root_pgno, rmroot)$/
-__qam_c_del ../qam/qam.c /^__qam_c_del(dbc)$/
-__qam_c_destroy ../qam/qam.c /^__qam_c_destroy(dbc)$/
-__qam_c_dup ../qam/qam.c /^__qam_c_dup(orig_dbc, new_dbc)$/
-__qam_c_get ../qam/qam.c /^__qam_c_get(dbc, key, data, flags, pgnop)$/
-__qam_c_init ../qam/qam.c /^__qam_c_init(dbc)$/
-__qam_c_put ../qam/qam.c /^__qam_c_put(dbc, key, data, flags, pgnop)$/
__qam_consume ../qam/qam.c /^__qam_consume(dbc, meta, first)$/
__qam_db_close ../qam/qam_method.c /^__qam_db_close(dbp, flags)$/
__qam_db_create ../qam/qam_method.c /^__qam_db_create(dbp)$/
@@ -4015,13 +4390,13 @@ __qam_delext_log ../qam/qam_auto.c /^__qam_delext_log(dbp, txnp, ret_lsnp, flags
__qam_delext_print ../qam/qam_autop.c /^__qam_delext_print(dbenv, dbtp, lsnp, notused2, no/
__qam_delext_read ../qam/qam_auto.c /^__qam_delext_read(dbenv, recbuf, argpp)$/
__qam_delext_recover ../qam/qam_rec.c /^__qam_delext_recover(dbenv, dbtp, lsnp, op, info)$/
-__qam_dirty ../dbinc/qam.h /^#define __qam_dirty(dbp, pgno, pagep, lsnp, flags)/
+__qam_dirty ../dbinc/qam.h /^#define __qam_dirty(dbp, pgno, pagep, lsnp, priori/
__qam_exid ../qam/qam_files.c /^__qam_exid(dbp, fidp, exnum)$/
__qam_extent_names ../qam/qam_files.c /^__qam_extent_names(dbenv, name, namelistp)$/
__qam_fclose ../qam/qam_files.c /^__qam_fclose(dbp, pgnoaddr)$/
__qam_fget ../dbinc/qam.h /^#define __qam_fget(dbp, pgnoaddr, lsnp, flags, add/
-__qam_fprobe ../qam/qam_files.c /^__qam_fprobe(dbp, pgno, txn, addrp, mode, flags)$/
-__qam_fput ../dbinc/qam.h /^#define __qam_fput(dbp, pgno, addrp, flags) \\$/
+__qam_fprobe ../qam/qam_files.c /^__qam_fprobe(dbp, pgno, txn, addrp, mode, priority/
+__qam_fput ../dbinc/qam.h /^#define __qam_fput(dbp, pgno, addrp, priority) \\$/
__qam_fremove ../qam/qam_files.c /^__qam_fremove(dbp, pgnoaddr)$/
__qam_gen_filelist ../qam/qam_files.c /^__qam_gen_filelist(dbp, filelistp)$/
__qam_get_extentsize ../qam/qam_method.c /^__qam_get_extentsize(dbp, q_extentsizep)$/
@@ -4040,7 +4415,7 @@ __qam_mvptr_log ../qam/qam_auto.c /^__qam_mvptr_log(dbp, txnp, ret_lsnp, flags,$
__qam_mvptr_print ../qam/qam_autop.c /^__qam_mvptr_print(dbenv, dbtp, lsnp, notused2, not/
__qam_mvptr_read ../qam/qam_auto.c /^__qam_mvptr_read(dbenv, recbuf, argpp)$/
__qam_mvptr_recover ../qam/qam_rec.c /^__qam_mvptr_recover(dbenv, dbtp, lsnp, op, info)$/
-__qam_nameop ../qam/qam_files.c /^int __qam_nameop(dbp, txn, newname, op)$/
+__qam_nameop ../qam/qam_files.c /^__qam_nameop(dbp, txn, newname, op)$/
__qam_new_file ../qam/qam_open.c /^__qam_new_file(dbp, txn, fhp, name)$/
__qam_open ../qam/qam_open.c /^__qam_open(dbp, txn, name, base_pgno, mode, flags)/
__qam_pgin_out ../qam/qam_conv.c /^__qam_pgin_out(dbenv, pg, pp, cookie)$/
@@ -4062,16 +4437,16 @@ __qam_vrfy_data ../qam/qam_verify.c /^__qam_vrfy_data(dbp, vdp, h, pgno, flags)$
__qam_vrfy_meta ../qam/qam_verify.c /^__qam_vrfy_meta(dbp, vdp, meta, pgno, flags)$/
__qam_vrfy_structure ../qam/qam_verify.c /^__qam_vrfy_structure(dbp, vdp, flags)$/
__qam_vrfy_walkqueue ../qam/qam_verify.c /^__qam_vrfy_walkqueue(dbp, vdp, handle, callback, f/
-__qcursor ../dbinc/qam.h /^struct __qcursor {$/
-__qmpf ../dbinc/qam.h /^ struct __qmpf {$/
-__queue ../dbinc/qam.h /^struct __queue {$/
+__qamc_close ../qam/qam.c /^__qamc_close(dbc, root_pgno, rmroot)$/
+__qamc_del ../qam/qam.c /^__qamc_del(dbc)$/
+__qamc_destroy ../qam/qam.c /^__qamc_destroy(dbc)$/
+__qamc_dup ../qam/qam.c /^__qamc_dup(orig_dbc, new_dbc)$/
+__qamc_get ../qam/qam.c /^__qamc_get(dbc, key, data, flags, pgnop)$/
+__qamc_init ../qam/qam.c /^__qamc_init(dbc)$/
+__qamc_put ../qam/qam.c /^__qamc_put(dbc, key, data, flags, pgnop)$/
__queue_pageinfo ../qam/qam_method.c /^__queue_pageinfo(dbp, firstp, lastp, emptyp, prpag/
-__queued_output ../dbinc/repmgr.h /^struct __queued_output {$/
__ram_add ../btree/bt_recno.c /^__ram_add(dbc, recnop, data, flags, bi_flags)$/
__ram_append ../btree/bt_recno.c /^__ram_append(dbc, key, data)$/
-__ram_c_del ../btree/bt_recno.c /^__ram_c_del(dbc)$/
-__ram_c_get ../btree/bt_recno.c /^__ram_c_get(dbc, key, data, flags, pgnop)$/
-__ram_c_put ../btree/bt_recno.c /^__ram_c_put(dbc, key, data, flags, pgnop)$/
__ram_ca ../btree/bt_recno.c /^__ram_ca(dbc_arg, op, foundp)$/
__ram_ca_delete ../btree/bt_curadj.c /^__ram_ca_delete(dbp, root_pgno, foundp)$/
__ram_get_re_delim ../btree/bt_method.c /^__ram_get_re_delim(dbp, re_delimp)$/
@@ -4093,6 +4468,9 @@ __ram_update ../btree/bt_recno.c /^__ram_update(dbc, recno, can_create)$/
__ram_vrfy_inp ../btree/bt_verify.c /^__ram_vrfy_inp(dbp, vdp, h, pgno, nentriesp, flags/
__ram_vrfy_leaf ../btree/bt_verify.c /^__ram_vrfy_leaf(dbp, vdp, h, pgno, flags)$/
__ram_writeback ../btree/bt_recno.c /^__ram_writeback(dbp)$/
+__ramc_del ../btree/bt_recno.c /^__ramc_del(dbc)$/
+__ramc_get ../btree/bt_recno.c /^__ramc_get(dbc, key, data, flags, pgnop)$/
+__ramc_put ../btree/bt_recno.c /^__ramc_put(dbc, key, data, flags, pgnop)$/
__reg_type ../env/env_stat.c /^__reg_type(t)$/
__rep_abort_prepared ../rep/rep_method.c /^__rep_abort_prepared(dbenv)$/
__rep_allreq ../rep/rep_log.c /^__rep_allreq(dbenv, rp, eid)$/
@@ -4107,31 +4485,37 @@ __rep_check_doreq ../rep/rep_record.c /^__rep_check_doreq(dbenv, rep)$/
__rep_check_uid ../rep/rep_backup.c /^__rep_check_uid(dbenv, fp, endfp, uid)$/
__rep_chk_newfile ../rep/rep_log.c /^__rep_chk_newfile(dbenv, logc, rep, rp, eid)$/
__rep_client_dbinit ../rep/rep_method.c /^__rep_client_dbinit(dbenv, startup, which)$/
-__rep_close ../rep/rep_region.c /^__rep_close(dbenv)$/
-__rep_closefiles ../rep/rep_region.c /^__rep_closefiles(dbenv)$/
+__rep_closefiles ../rep/rep_region.c /^__rep_closefiles(dbenv, do_restored)$/
__rep_cmp_vote ../rep/rep_elect.c /^__rep_cmp_vote(dbenv, rep, eid, lsnp, priority, ge/
__rep_collect_txn ../rep/rep_record.c /^__rep_collect_txn(dbenv, lsnp, lc)$/
__rep_config_map ../rep/rep_method.c /^__rep_config_map(dbenv, inflagsp, outflagsp)$/
__rep_conv_vers ../rep/rep_method.c /^__rep_conv_vers(dbenv, log_ver)$/
-__rep_dbenv_create ../rep/rep_method.c /^__rep_dbenv_create(dbenv)$/
-__rep_dbenv_destroy ../rep/rep_method.c /^__rep_dbenv_destroy(dbenv)$/
-__rep_dbenv_refresh ../rep/rep_region.c /^__rep_dbenv_refresh(dbenv)$/
__rep_do_ckp ../rep/rep_record.c /^__rep_do_ckp(dbenv, rec, rp)$/
__rep_dorecovery ../rep/rep_verify.c /^__rep_dorecovery(dbenv, lsnp, trunclsnp)$/
__rep_egen_init ../rep/rep_region.c /^__rep_egen_init(dbenv, rep)$/
-__rep_elect ../rep/rep_elect.c /^__rep_elect(dbenv, given_nsites, nvotes, eidp, fla/
+__rep_elect ../rep/rep_elect.c /^__rep_elect(dbenv, given_nsites, nvotes, flags)$/
__rep_elect_done ../rep/rep_util.c /^__rep_elect_done(dbenv, rep)$/
-__rep_elect_init ../rep/rep_elect.c /^__rep_elect_init(dbenv, lsnp, nsites, nvotes, begi/
-__rep_elect_master ../rep/rep_elect.c /^__rep_elect_master(dbenv, rep, eidp)$/
+__rep_elect_init ../rep/rep_elect.c /^__rep_elect_init(dbenv, nsites, nvotes, beginp, ot/
+__rep_elect_master ../rep/rep_elect.c /^__rep_elect_master(dbenv, rep)$/
+__rep_env_close ../rep/rep_region.c /^__rep_env_close(dbenv)$/
+__rep_env_create ../rep/rep_method.c /^__rep_env_create(dbenv)$/
+__rep_env_destroy ../rep/rep_method.c /^__rep_env_destroy(dbenv)$/
+__rep_env_refresh ../rep/rep_region.c /^__rep_env_refresh(dbenv)$/
__rep_filedone ../rep/rep_backup.c /^__rep_filedone(dbenv, eid, rep, msgfp, type)$/
__rep_fileinfo_buf ../rep/rep_auto.c /^__rep_fileinfo_buf(buf, max, lenp,$/
__rep_fileinfo_read ../rep/rep_auto.c /^__rep_fileinfo_read(dbenv, recbuf, nextp, argpp)$/
__rep_find_dbs ../rep/rep_backup.c /^__rep_find_dbs(dbenv, fp, fileszp, filelenp, filec/
+__rep_find_entry ../rep/rep_lease.c /^__rep_find_entry(dbenv, rep, eid, lep)$/
__rep_finfo_alloc ../rep/rep_backup.c /^__rep_finfo_alloc(dbenv, rfpsrc, rfpp)$/
+__rep_fire_elected ../rep/rep_elect.c /^__rep_fire_elected(dbenv, rep, egen)$/
+__rep_fire_event ../rep/rep_util.c /^__rep_fire_event(dbenv, event, info)$/
+__rep_fire_newmaster ../rep/rep_record.c /^__rep_fire_newmaster(dbenv, gen, master)$/
+__rep_fire_startupdone ../rep/rep_record.c /^__rep_fire_startupdone(dbenv, gen, master)$/
__rep_flush ../rep/rep_method.c /^__rep_flush(dbenv)$/
+__rep_gen_init ../rep/rep_region.c /^__rep_gen_init(dbenv, rep)$/
__rep_get_config ../rep/rep_method.c /^__rep_get_config(dbenv, which, onp)$/
+__rep_get_file_list ../rep/rep_backup.c /^__rep_get_file_list(dbenv, fhp, dbt)$/
__rep_get_fileinfo ../rep/rep_backup.c /^__rep_get_fileinfo(dbenv, file, subdb, rfp, uid, f/
-__rep_get_gen ../rep/rep_util.c /^__rep_get_gen(dbenv, genp)$/
__rep_get_limit ../rep/rep_method.c /^__rep_get_limit(dbenv, gbytesp, bytesp)$/
__rep_get_nsites ../rep/rep_method.c /^__rep_get_nsites(dbenv, n)$/
__rep_get_priority ../rep/rep_method.c /^__rep_get_priority(dbenv, priority)$/
@@ -4140,11 +4524,20 @@ __rep_get_timeout ../rep/rep_method.c /^__rep_get_timeout(dbenv, which, timeout)
__rep_getnext ../rep/rep_record.c /^__rep_getnext(dbenv)$/
__rep_grow_sites ../rep/rep_util.c /^__rep_grow_sites(dbenv, nsites)$/
__rep_init_cleanup ../rep/rep_backup.c /^__rep_init_cleanup(dbenv, rep, force)$/
+__rep_islease_granted ../rep/rep_lease.c /^__rep_islease_granted(dbenv)$/
+__rep_lease_check ../rep/rep_lease.c /^__rep_lease_check(dbenv, refresh)$/
+__rep_lease_expire ../rep/rep_lease.c /^__rep_lease_expire(dbenv, locked)$/
+__rep_lease_grant ../rep/rep_lease.c /^__rep_lease_grant(dbenv, rp, rec, eid)$/
+__rep_lease_refresh ../rep/rep_lease.c /^__rep_lease_refresh(dbenv)$/
+__rep_lease_table_alloc ../rep/rep_lease.c /^__rep_lease_table_alloc(dbenv, nsites)$/
+__rep_lease_waittime ../rep/rep_lease.c /^__rep_lease_waittime(dbenv)$/
__rep_lockout_api ../rep/rep_util.c /^__rep_lockout_api(dbenv, rep)$/
+__rep_lockout_apply ../rep/rep_util.c /^__rep_lockout_apply(dbenv, rep, apply_th)$/
+__rep_lockout_int ../rep/rep_util.c /^__rep_lockout_int(dbenv, rep, fieldp, field_val, m/
__rep_lockout_msg ../rep/rep_util.c /^__rep_lockout_msg(dbenv, rep, msg_th)$/
__rep_log ../rep/rep_log.c /^__rep_log(dbenv, rp, rec, savetime, ret_lsnp)$/
__rep_log_backup ../rep/rep_verify.c /^__rep_log_backup(dbenv, rep, logc, lsn)$/
-__rep_log_setup ../rep/rep_backup.c /^__rep_log_setup(dbenv, rep)$/
+__rep_log_setup ../rep/rep_backup.c /^__rep_log_setup(dbenv, rep, file, version, lsnp)$/
__rep_loggap_req ../rep/rep_log.c /^__rep_loggap_req(dbenv, rep, lsnp, gapflags)$/
__rep_logready ../rep/rep_log.c /^__rep_logready(dbenv, rep, savetime, last_lsnp)$/
__rep_logreq ../rep/rep_log.c /^__rep_logreq(dbenv, rp, rec, eid)$/
@@ -4153,8 +4546,9 @@ __rep_mpf_open ../rep/rep_backup.c /^__rep_mpf_open(dbenv, mpfp, rfp, flags)$/
__rep_msg_from_old ../rep/rep_util.c /^__rep_msg_from_old(version, rectype)$/
__rep_msg_to_old ../rep/rep_util.c /^__rep_msg_to_old(version, rectype)$/
__rep_new_master ../rep/rep_util.c /^__rep_new_master(dbenv, cntrl, eid)$/
-__rep_newfile ../rep/rep_record.c /^__rep_newfile(dbenv, rc, rec, lsnp)$/
-__rep_newmaster_empty ../rep/rep_util.c /^__rep_newmaster_empty(dbenv, lsnp, cntrl, eid)$/
+__rep_newfile ../rep/rep_record.c /^__rep_newfile(dbenv, rc, rec)$/
+__rep_newmaster_empty ../rep/rep_util.c /^__rep_newmaster_empty(dbenv, eid)$/
+__rep_nextfile ../rep/rep_backup.c /^__rep_nextfile(dbenv, eid, rep)$/
__rep_noarchive ../rep/rep_util.c /^__rep_noarchive(dbenv)$/
__rep_open ../rep/rep_region.c /^__rep_open(dbenv)$/
__rep_page ../rep/rep_backup.c /^__rep_page(dbenv, eid, rp, rec)$/
@@ -4164,25 +4558,31 @@ __rep_page_req ../rep/rep_backup.c /^__rep_page_req(dbenv, eid, rec)$/
__rep_page_sendpages ../rep/rep_backup.c /^__rep_page_sendpages(dbenv, eid, msgfp, mpf, dbp)$/
__rep_pggap_req ../rep/rep_backup.c /^__rep_pggap_req(dbenv, rep, reqfp, gapflags)$/
__rep_preclose ../rep/rep_region.c /^__rep_preclose(dbenv)$/
+__rep_print ../rep/rep_util.c /^__rep_print(DB_ENV *dbenv, const char *fmt, ...)$/
__rep_print_all ../rep/rep_stat.c /^__rep_print_all(dbenv, flags)$/
__rep_print_logmsg ../rep/rep_util.c /^__rep_print_logmsg(dbenv, logdbt, lsnp)$/
__rep_print_message ../rep/rep_util.c /^__rep_print_message(dbenv, eid, rp, str, flags)$/
__rep_print_stats ../rep/rep_stat.c /^__rep_print_stats(dbenv, flags)$/
-__rep_process_message ../rep/rep_record.c /^__rep_process_message(dbenv, control, rec, eidp, r/
-__rep_process_rec ../rep/rep_record.c /^__rep_process_rec(dbenv, rp, rec, typep, ret_lsnp)/
+__rep_process_message ../rep/rep_record.c /^__rep_process_message(dbenv, control, rec, eid, re/
+__rep_process_rec ../rep/rep_record.c /^__rep_process_rec(dbenv, rp, rec, ret_tsp, ret_lsn/
__rep_process_txn ../rep/rep_record.c /^__rep_process_txn(dbenv, rec)$/
__rep_queue_filedone ../rep/rep_backup.c /^__rep_queue_filedone(dbenv, rep, rfp)$/
-__rep_region_destroy ../rep/rep_region.c /^__rep_region_destroy(dbenv)$/
__rep_remfirst ../rep/rep_record.c /^__rep_remfirst(dbenv, cntrl, rec)$/
-__rep_remove_dbs ../rep/rep_backup.c /^__rep_remove_dbs(dbenv)$/
+__rep_remove_all ../rep/rep_backup.c /^__rep_remove_all(dbenv, rec)$/
+__rep_remove_by_list ../rep/rep_backup.c /^__rep_remove_by_list(dbenv, filelist, count)$/
+__rep_remove_by_prefix ../rep/rep_backup.c /^__rep_remove_by_prefix(dbenv, dir, prefix, pref_le/
+__rep_remove_file ../rep/rep_backup.c /^__rep_remove_file(dbenv, uid, name, type, flags)$/
+__rep_remove_init_file ../rep/rep_backup.c /^__rep_remove_init_file(dbenv)$/
__rep_remove_logs ../rep/rep_backup.c /^__rep_remove_logs(dbenv)$/
__rep_resend_req ../rep/rep_record.c /^__rep_resend_req(dbenv, rereq)$/
+__rep_reset_init ../rep/rep_backup.c /^__rep_reset_init(dbenv)$/
__rep_restore_prepared ../rep/rep_method.c /^__rep_restore_prepared(dbenv)$/
__rep_send_bulk ../rep/rep_util.c /^__rep_send_bulk(dbenv, bulkp, ctlflags)$/
__rep_send_message ../rep/rep_util.c /^__rep_send_message(dbenv, eid, rtype, lsnp, dbt, c/
-__rep_send_throttle ../rep/rep_util.c /^__rep_send_throttle(dbenv, eid, repth, flags)$/
+__rep_send_throttle ../rep/rep_util.c /^__rep_send_throttle(dbenv, eid, repth, flags, ctlf/
__rep_send_vote ../rep/rep_util.c /^__rep_send_vote(dbenv, lsnp, nsites, nvotes, pri, /
__rep_set_config ../rep/rep_method.c /^__rep_set_config(dbenv, which, on)$/
+__rep_set_lease ../rep/rep_method.c /^__rep_set_lease(dbenv, clock_scale_factor, flags)$/
__rep_set_limit ../rep/rep_method.c /^__rep_set_limit(dbenv, gbytes, bytes)$/
__rep_set_nsites ../rep/rep_method.c /^__rep_set_nsites(dbenv, n)$/
__rep_set_priority ../rep/rep_method.c /^__rep_set_priority(dbenv, priority)$/
@@ -4198,6 +4598,7 @@ __rep_stat_print_pp ../rep/rep_stat.c /^__rep_stat_print_pp(dbenv, flags)$/
__rep_sync ../rep/rep_method.c /^__rep_sync(dbenv, flags)$/
__rep_tally ../rep/rep_elect.c /^__rep_tally(dbenv, rep, eid, countp, egen, vtoff)$/
__rep_update_buf ../rep/rep_auto.c /^__rep_update_buf(buf, max, lenp,$/
+__rep_update_grant ../rep/rep_lease.c /^__rep_update_grant(dbenv, ts)$/
__rep_update_read ../rep/rep_auto.c /^__rep_update_read(dbenv, recbuf, nextp, argpp)$/
__rep_update_req ../rep/rep_backup.c /^__rep_update_req(dbenv, eid)$/
__rep_update_setup ../rep/rep_backup.c /^__rep_update_setup(dbenv, eid, rp, rec)$/
@@ -4205,11 +4606,12 @@ __rep_verify ../rep/rep_verify.c /^__rep_verify(dbenv, rp, rec, eid, savetime)$/
__rep_verify_fail ../rep/rep_verify.c /^__rep_verify_fail(dbenv, rp, eid)$/
__rep_verify_match ../rep/rep_verify.c /^__rep_verify_match(dbenv, reclsnp, savetime)$/
__rep_verify_req ../rep/rep_verify.c /^__rep_verify_req(dbenv, rp, eid)$/
-__rep_vote1 ../rep/rep_elect.c /^__rep_vote1(dbenv, rp, rec, eidp)$/
-__rep_vote2 ../rep/rep_elect.c /^__rep_vote2(dbenv, rec, eidp)$/
-__rep_wait ../rep/rep_elect.c /^__rep_wait(dbenv, timeout, eidp, flags)$/
+__rep_vote1 ../rep/rep_elect.c /^__rep_vote1(dbenv, rp, rec, eid)$/
+__rep_vote2 ../rep/rep_elect.c /^__rep_vote2(dbenv, rec, eid)$/
+__rep_wait ../rep/rep_elect.c /^__rep_wait(dbenv, timeoutp, eidp, full_elect, flag/
__rep_walk_dir ../rep/rep_backup.c /^__rep_walk_dir(dbenv, dir, fp, origfp, fileszp, fi/
__rep_write_egen ../rep/rep_region.c /^__rep_write_egen(dbenv, egen)$/
+__rep_write_gen ../rep/rep_region.c /^__rep_write_gen(dbenv, gen)$/
__rep_write_page ../rep/rep_backup.c /^__rep_write_page(dbenv, rep, msgfp)$/
__repmgr_accept ../repmgr/repmgr_sel.c /^__repmgr_accept(dbenv)$/
__repmgr_add_buffer ../repmgr/repmgr_util.c /^__repmgr_add_buffer(v, address, length)$/
@@ -4228,11 +4630,10 @@ __repmgr_close_sync ../repmgr/repmgr_posix.c /^__repmgr_close_sync(dbenv)$/
__repmgr_compute_wait_deadline ../repmgr/repmgr_posix.c /^__repmgr_compute_wait_deadline(dbenv, result, wait/
__repmgr_connect ../repmgr/repmgr_sel.c /^__repmgr_connect(dbenv, socket_result, site)$/
__repmgr_connect_site ../repmgr/repmgr_sel.c /^__repmgr_connect_site(dbenv, eid)$/
-__repmgr_connection ../dbinc/repmgr.h /^struct __repmgr_connection {$/
-__repmgr_dbenv_create ../repmgr/repmgr_method.c /^__repmgr_dbenv_create(dbenv, db_rep)$/
-__repmgr_dbenv_destroy ../repmgr/repmgr_method.c /^__repmgr_dbenv_destroy(dbenv, db_rep)$/
__repmgr_elect_main ../repmgr/repmgr_elect.c /^__repmgr_elect_main(dbenv)$/
__repmgr_elect_thread ../repmgr/repmgr_elect.c /^__repmgr_elect_thread(args)$/
+__repmgr_env_create ../repmgr/repmgr_method.c /^__repmgr_env_create(dbenv, db_rep)$/
+__repmgr_env_destroy ../repmgr/repmgr_method.c /^__repmgr_env_destroy(dbenv, db_rep)$/
__repmgr_find_site ../repmgr/repmgr_net.c /^__repmgr_find_site(dbenv, host, port)$/
__repmgr_first_try_connections ../repmgr/repmgr_sel.c /^__repmgr_first_try_connections(dbenv)$/
__repmgr_format_eid_loc ../repmgr/repmgr_util.c /^__repmgr_format_eid_loc(db_rep, eid, buffer)$/
@@ -4240,6 +4641,7 @@ __repmgr_format_site_loc ../repmgr/repmgr_util.c /^__repmgr_format_site_loc(site
__repmgr_get_ack_policy ../repmgr/repmgr_method.c /^__repmgr_get_ack_policy(dbenv, policy)$/
__repmgr_get_nsites ../repmgr/repmgr_util.c /^__repmgr_get_nsites(db_rep)$/
__repmgr_getaddr ../repmgr/repmgr_net.c /^__repmgr_getaddr(dbenv, host, port, flags, result)/
+__repmgr_handle_event ../repmgr/repmgr_msg.c /^__repmgr_handle_event(dbenv, event, info)$/
__repmgr_init_election ../repmgr/repmgr_elect.c /^__repmgr_init_election(dbenv, initial_operation)$/
__repmgr_init_sync ../repmgr/repmgr_posix.c /^__repmgr_init_sync(dbenv, db_rep)$/
__repmgr_iovec_init ../repmgr/repmgr_util.c /^__repmgr_iovec_init(v)$/
@@ -4256,7 +4658,9 @@ __repmgr_new_connection ../repmgr/repmgr_util.c /^__repmgr_new_connection(dbenv,
__repmgr_new_site ../repmgr/repmgr_util.c /^__repmgr_new_site(dbenv, sitep, addr, state)$/
__repmgr_pack_netaddr ../repmgr/repmgr_net.c /^__repmgr_pack_netaddr(dbenv, host, port, list, add/
__repmgr_prepare_my_addr ../repmgr/repmgr_util.c /^__repmgr_prepare_my_addr(dbenv, dbt)$/
-__repmgr_print_stats ../repmgr/repmgr_stat.c /^__repmgr_print_stats(dbenv)$/
+__repmgr_print_all ../repmgr/repmgr_stat.c /^__repmgr_print_all(dbenv, flags)$/
+__repmgr_print_sites ../repmgr/repmgr_stat.c /^__repmgr_print_sites(dbenv)$/
+__repmgr_print_stats ../repmgr/repmgr_stat.c /^__repmgr_print_stats(dbenv, flags)$/
__repmgr_queue_create ../repmgr/repmgr_queue.c /^__repmgr_queue_create(dbenv, db_rep)$/
__repmgr_queue_destroy ../repmgr/repmgr_queue.c /^__repmgr_queue_destroy(dbenv)$/
__repmgr_queue_get ../repmgr/repmgr_queue.c /^__repmgr_queue_get(dbenv, msgp)$/
@@ -4264,10 +4668,9 @@ __repmgr_queue_put ../repmgr/repmgr_queue.c /^__repmgr_queue_put(dbenv, msg)$/
__repmgr_queue_size ../repmgr/repmgr_queue.c /^__repmgr_queue_size(dbenv)$/
__repmgr_read_from_site ../repmgr/repmgr_sel.c /^__repmgr_read_from_site(dbenv, conn)$/
__repmgr_readv ../repmgr/repmgr_posix.c /^__repmgr_readv(fd, iovec, buf_count, byte_count_p)/
+__repmgr_repstart ../repmgr/repmgr_util.c /^__repmgr_repstart(dbenv, flags)$/
__repmgr_reset_for_reading ../repmgr/repmgr_util.c /^__repmgr_reset_for_reading(con)$/
-__repmgr_retry ../dbinc/repmgr.h /^struct __repmgr_retry {$/
__repmgr_retry_connections ../repmgr/repmgr_sel.c /^__repmgr_retry_connections(dbenv)$/
-__repmgr_runnable ../dbinc/repmgr.h /^struct __repmgr_runnable {$/
__repmgr_schedule_connection_attempt ../repmgr/repmgr_util.c /^__repmgr_schedule_connection_attempt(dbenv, eid, i/
__repmgr_select_loop ../repmgr/repmgr_posix.c /^__repmgr_select_loop(dbenv)$/
__repmgr_select_thread ../repmgr/repmgr_sel.c /^__repmgr_select_thread(args)$/
@@ -4278,18 +4681,21 @@ __repmgr_send_internal ../repmgr/repmgr_net.c /^__repmgr_send_internal(dbenv, co
__repmgr_send_one ../repmgr/repmgr_net.c /^__repmgr_send_one(dbenv, conn, msg_type, control, /
__repmgr_set_ack_policy ../repmgr/repmgr_method.c /^__repmgr_set_ack_policy(dbenv, policy)$/
__repmgr_set_local_site ../repmgr/repmgr_method.c /^__repmgr_set_local_site(dbenv, host, port, flags)$/
-__repmgr_set_nonblocking ../repmgr/repmgr_posix.c /^int __repmgr_set_nonblocking(fd)$/
+__repmgr_set_nonblocking ../repmgr/repmgr_posix.c /^__repmgr_set_nonblocking(fd)$/
__repmgr_signal ../repmgr/repmgr_posix.c /^__repmgr_signal(v)$/
-__repmgr_site ../dbinc/repmgr.h /^struct __repmgr_site {$/
__repmgr_site_list ../repmgr/repmgr_stat.c /^__repmgr_site_list(dbenv, countp, listp)$/
__repmgr_start ../repmgr/repmgr_method.c /^__repmgr_start(dbenv, nthreads, flags)$/
__repmgr_stash_generation ../repmgr/repmgr_msg.c /^__repmgr_stash_generation(dbenv)$/
+__repmgr_stat ../repmgr/repmgr_stat.c /^__repmgr_stat(dbenv, statp, flags)$/
+__repmgr_stat_pp ../repmgr/repmgr_stat.c /^__repmgr_stat_pp(dbenv, statp, flags)$/
+__repmgr_stat_print ../repmgr/repmgr_stat.c /^__repmgr_stat_print(dbenv, flags)$/
+__repmgr_stat_print_pp ../repmgr/repmgr_stat.c /^__repmgr_stat_print_pp(dbenv, flags)$/
__repmgr_stop_threads ../repmgr/repmgr_method.c /^__repmgr_stop_threads(dbenv)$/
__repmgr_thread_failure ../repmgr/repmgr_util.c /^__repmgr_thread_failure(dbenv, why)$/
__repmgr_thread_join ../repmgr/repmgr_posix.c /^__repmgr_thread_join(thread)$/
__repmgr_thread_start ../repmgr/repmgr_posix.c /^__repmgr_thread_start(dbenv, runnable)$/
-__repmgr_timeval_cmp ../repmgr/repmgr_util.c /^__repmgr_timeval_cmp(a, b)$/
-__repmgr_timeval_diff_current ../repmgr/repmgr_posix.c /^__repmgr_timeval_diff_current(dbenv, when, result)/
+__repmgr_timespec_diff_now ../repmgr/repmgr_util.c /^__repmgr_timespec_diff_now(dbenv, when, result)$/
+__repmgr_try_one ../repmgr/repmgr_sel.c /^__repmgr_try_one(dbenv, eid)$/
__repmgr_unlock_mutex ../repmgr/repmgr_posix.c /^__repmgr_unlock_mutex(mutex)$/
__repmgr_update_consumed ../repmgr/repmgr_util.c /^__repmgr_update_consumed(v, byte_count)$/
__repmgr_wake_main_thread ../repmgr/repmgr_posix.c /^__repmgr_wake_main_thread(dbenv)$/
@@ -4321,9 +4727,9 @@ __txn_abort ../txn/txn.c /^__txn_abort(txn)$/
__txn_abort_pp ../txn/txn.c /^__txn_abort_pp(txn)$/
__txn_abort_proc ../rpc_server/c/db_server_proc.c /^__txn_abort_proc(txnpcl_id, replyp)$/
__txn_activekids ../txn/txn.c /^__txn_activekids(dbenv, rectype, txn)$/
-__txn_add_buffer ../txn/txn_region.c /^int __txn_add_buffer(dbenv, td)$/
+__txn_add_buffer ../txn/txn_region.c /^__txn_add_buffer(dbenv, td)$/
__txn_begin ../txn/txn.c /^__txn_begin(dbenv, parent, txnpp, flags)$/
-__txn_begin_int ../txn/txn.c /^__txn_begin_int(txn, internal)$/
+__txn_begin_int ../txn/txn.c /^__txn_begin_int(txn)$/
__txn_begin_pp ../txn/txn.c /^__txn_begin_pp(dbenv, parent, txnpp, flags)$/
__txn_checkpoint ../txn/txn_chkpt.c /^__txn_checkpoint(dbenv, kbytes, minutes, flags)$/
__txn_checkpoint_pp ../txn/txn_chkpt.c /^__txn_checkpoint_pp(dbenv, kbytes, minutes, flags)/
@@ -4345,16 +4751,16 @@ __txn_commit_proc ../rpc_server/c/db_server_proc.c /^__txn_commit_proc(txnpcl_id
__txn_compare ../txn/txn_stat.c /^__txn_compare(a1, b1)$/
__txn_compensate_begin ../txn/txn.c /^__txn_compensate_begin(dbenv, txnpp)$/
__txn_continue ../txn/txn.c /^__txn_continue(env, txn, td)$/
-__txn_dbenv_create ../txn/txn_method.c /^__txn_dbenv_create(dbenv)$/
-__txn_dbenv_destroy ../txn/txn_method.c /^__txn_dbenv_destroy(dbenv)$/
-__txn_dbenv_refresh ../txn/txn_region.c /^__txn_dbenv_refresh(dbenv)$/
__txn_discard ../txn/txn.c /^__txn_discard(txn, flags)$/
__txn_discard_int ../txn/txn.c /^__txn_discard_int(txn, flags)$/
__txn_discard_proc ../rpc_server/c/db_server_proc.c /^__txn_discard_proc(txnpcl_id, flags, replyp)$/
__txn_dispatch_undo ../txn/txn.c /^__txn_dispatch_undo(dbenv, txn, rdbt, key_lsn, txn/
__txn_doevents ../txn/txn_util.c /^__txn_doevents(dbenv, txn, opcode, preprocess)$/
+__txn_dref_fname ../txn/txn_util.c /^__txn_dref_fname(dbenv, txn)$/
__txn_end ../txn/txn.c /^__txn_end(txn, is_commit)$/
-__txn_event ../txn/txn_util.c /^struct __txn_event {$/
+__txn_env_create ../txn/txn_method.c /^__txn_env_create(dbenv)$/
+__txn_env_destroy ../txn/txn_method.c /^__txn_env_destroy(dbenv)$/
+__txn_env_refresh ../txn/txn_region.c /^__txn_env_refresh(dbenv)$/
__txn_failchk ../txn/txn_failchk.c /^__txn_failchk(dbenv)$/
__txn_findlastckp ../txn/txn_region.c /^__txn_findlastckp(dbenv, lsnp, max_lsn)$/
__txn_force_abort ../txn/txn.c /^__txn_force_abort(dbenv, buffer)$/
@@ -4372,16 +4778,16 @@ __txn_init_print ../txn/txn_autop.c /^__txn_init_print(dbenv, dtabp, dtabsizep)$
__txn_init_recover ../txn/txn_auto.c /^__txn_init_recover(dbenv, dtabp, dtabsizep)$/
__txn_isvalid ../txn/txn.c /^__txn_isvalid(txn, op)$/
__txn_lockevent ../txn/txn_util.c /^__txn_lockevent(dbenv, txn, dbp, lock, locker)$/
-__txn_logrec ../dbinc/txn.h /^struct __txn_logrec {$/
__txn_map_gid ../txn/txn_recover.c /^__txn_map_gid(dbenv, gid, tdp, offp)$/
__txn_oldest_reader ../txn/txn_region.c /^__txn_oldest_reader(dbenv, lsnp)$/
-__txn_open ../txn/txn_region.c /^__txn_open(dbenv)$/
+__txn_open ../txn/txn_region.c /^__txn_open(dbenv, create_ok)$/
__txn_openfiles ../txn/txn_recover.c /^__txn_openfiles(dbenv, min, force)$/
__txn_preclose ../txn/txn.c /^__txn_preclose(dbenv)$/
__txn_prepare ../txn/txn.c /^__txn_prepare(txn, gid)$/
__txn_prepare_proc ../rpc_server/c/db_server_proc.c /^__txn_prepare_proc(txnpcl_id, gid, replyp)$/
__txn_print_all ../txn/txn_stat.c /^__txn_print_all(dbenv, flags)$/
__txn_print_stats ../txn/txn_stat.c /^__txn_print_stats(dbenv, flags)$/
+__txn_record_fname ../txn/txn_util.c /^__txn_record_fname(dbenv, txn, fname)$/
__txn_recover ../txn/txn_recover.c /^__txn_recover(dbenv, preplist, count, retp, flags)/
__txn_recover_pp ../txn/txn_recover.c /^__txn_recover_pp(dbenv, preplist, count, retp, fla/
__txn_recycle_id ../txn/txn.c /^__txn_recycle_id(dbenv)$/
@@ -4389,6 +4795,7 @@ __txn_recycle_log ../txn/txn_auto.c /^__txn_recycle_log(dbenv, txnp, ret_lsnp, f
__txn_recycle_print ../txn/txn_autop.c /^__txn_recycle_print(dbenv, dbtp, lsnp, notused2, n/
__txn_recycle_read ../txn/txn_auto.c /^__txn_recycle_read(dbenv, recbuf, argpp)$/
__txn_recycle_recover ../txn/txn_rec.c /^__txn_recycle_recover(dbenv, dbtp, lsnp, op, info)/
+__txn_region_mutex_count ../txn/txn_region.c /^__txn_region_mutex_count(dbenv)$/
__txn_region_size ../txn/txn_region.c /^__txn_region_size(dbenv)$/
__txn_regop_42_print ../txn/txn_autop.c /^__txn_regop_42_print(dbenv, dbtp, lsnp, notused2, /
__txn_regop_42_read ../txn/txn_auto.c /^__txn_regop_42_read(dbenv, recbuf, argpp)$/
@@ -4399,7 +4806,7 @@ __txn_regop_read ../txn/txn_auto.c /^__txn_regop_read(dbenv, recbuf, argpp)$/
__txn_regop_recover ../txn/txn_rec.c /^__txn_regop_recover(dbenv, dbtp, lsnp, op, info)$/
__txn_remevent ../txn/txn_util.c /^__txn_remevent(dbenv, txn, name, fileid, inmem)$/
__txn_remlock ../txn/txn_util.c /^__txn_remlock(dbenv, txn, lock, locker)$/
-__txn_remove_buffer ../txn/txn_region.c /^int __txn_remove_buffer(dbenv, td, hash_mtx)$/
+__txn_remove_buffer ../txn/txn_region.c /^__txn_remove_buffer(dbenv, td, hash_mtx)$/
__txn_remrem ../txn/txn_util.c /^__txn_remrem(dbenv, txn, name)$/
__txn_reset ../txn/txn.c /^__txn_reset(dbenv)$/
__txn_restore_txn ../txn/txn_rec.c /^__txn_restore_txn(dbenv, lsnp, argp)$/
@@ -4422,9 +4829,6 @@ __txn_xa_regop_read ../txn/txn_auto.c /^__txn_xa_regop_read(dbenv, recbuf, argpp
__txn_xa_regop_recover ../txn/txn_rec.c /^__txn_xa_regop_recover(dbenv, dbtp, lsnp, op, info/
__ua_memcpy ../os/os_alloc.c /^__ua_memcpy(dst, src, len)$/
__usermem ../log/log_archive.c /^__usermem(dbenv, listp)$/
-__vrfy_childinfo ../dbinc/db_verify.h /^struct __vrfy_childinfo {$/
-__vrfy_dbinfo ../dbinc/db_verify.h /^struct __vrfy_dbinfo {$/
-__vrfy_pageinfo ../dbinc/db_verify.h /^struct __vrfy_pageinfo {$/
__vx_fsync ../os/os_fsync.c /^__vx_fsync(fd)$/
__xa_close ../xa/xa_db.c /^__xa_close(dbp, flags)$/
__xa_cursor ../xa/xa_db.c /^__xa_cursor(dbp, txn, dbcp, flags)$/
@@ -4436,35 +4840,22 @@ __xa_put ../xa/xa_db.c /^__xa_put(dbp, txn, key, data, flags)$/
__xa_put_txn ../xa/xa.c /^__xa_put_txn(dbenv, txnp)$/
__xa_set_txn ../xa/xa_db.c /^__xa_set_txn(dbp, txnpp, no_xa_txn)$/
__xa_truncate ../xa/xa_db.c /^__xa_truncate(dbp, txn, countp, flags)$/
-__xa_txn ../dbinc/db.in /^ struct __xa_txn { \/* XA Active Transactions. *\//
-_app_dispatch_intercept ../cxx/cxx_env.cpp /^int DbEnv::_app_dispatch_intercept(DB_ENV *env, DB/
_app_dispatch_intercept_c ../cxx/cxx_env.cpp /^int _app_dispatch_intercept_c(DB_ENV *env, DBT *db/
_debug_check ../tcl/tcl_internal.c /^_debug_check()$/
-_event_func_intercept ../cxx/cxx_env.cpp /^void DbEnv::_event_func_intercept($/
_event_func_intercept_c ../cxx/cxx_env.cpp /^void _event_func_intercept_c(DB_ENV *env, u_int32_/
-_exported ../dbinc/db_cxx.in /^# define _exported __declspec(dllexport) /
-_feedback_intercept ../cxx/cxx_env.cpp /^void DbEnv::_feedback_intercept(DB_ENV *env, int o/
+_exported ../dbinc/db_cxx.in 131
_feedback_intercept_c ../cxx/cxx_env.cpp /^void _feedback_intercept_c(DB_ENV *env, int opcode/
-_isalive_intercept ../cxx/cxx_env.cpp /^int DbEnv::_isalive_intercept($/
_isalive_intercept_c ../cxx/cxx_env.cpp /^int _isalive_intercept_c($/
-_paniccall_intercept ../cxx/cxx_env.cpp /^void DbEnv::_paniccall_intercept(DB_ENV *env, int /
_paniccall_intercept_c ../cxx/cxx_env.cpp /^void _paniccall_intercept_c(DB_ENV *env, int errva/
-_rep_send_intercept ../cxx/cxx_env.cpp /^int DbEnv::_rep_send_intercept(DB_ENV *env, const /
_rep_send_intercept_c ../cxx/cxx_env.cpp /^int _rep_send_intercept_c(DB_ENV *env, const DBT */
-_stream_error_function ../cxx/cxx_env.cpp /^void DbEnv::_stream_error_function($/
_stream_error_function_c ../cxx/cxx_env.cpp /^void _stream_error_function_c(const DB_ENV *env,$/
-_stream_message_function ../cxx/cxx_env.cpp /^void DbEnv::_stream_message_function(const DB_ENV /
_stream_message_function_c ../cxx/cxx_env.cpp /^void _stream_message_function_c(const DB_ENV *env,/
-_thread_id_intercept ../cxx/cxx_env.cpp /^void DbEnv::_thread_id_intercept(DB_ENV *env,$/
_thread_id_intercept_c ../cxx/cxx_env.cpp /^void _thread_id_intercept_c(DB_ENV *env, pid_t *pi/
-_thread_id_string_intercept ../cxx/cxx_env.cpp /^char *DbEnv::_thread_id_string_intercept(DB_ENV *e/
_thread_id_string_intercept_c ../cxx/cxx_env.cpp /^char *_thread_id_string_intercept_c(DB_ENV *env, p/
-abort ../clib/abort.c /^abort()$/
ack_message ../repmgr/repmgr_msg.c /^ack_message(dbenv, generation, lsn)$/
add_home ../rpc_server/c/db_server_util.c /^add_home(home)$/
add_passwd ../rpc_server/c/db_server_util.c /^add_passwd(passwd)$/
allocate_wait_slot ../repmgr/repmgr_windows.c /^allocate_wait_slot(dbenv, resultp)$/
-archopts ../tcl/tcl_log.c /^ enum archopts {$/
atoi ../clib/atoi.c /^atoi(str)$/
atol ../clib/atol.c /^atol(str)$/
bdb_DbOpen ../tcl/tcl_db_pkg.c /^bdb_DbOpen(interp, objc, objv, ip, dbp)$/
@@ -4482,41 +4873,27 @@ bdb_NdbmOpen ../tcl/tcl_compat.c /^bdb_NdbmOpen(interp, objc, objv, dbpp)$/
bdb_RandCommand ../tcl/tcl_util.c /^bdb_RandCommand(interp, objc, objv)$/
bdb_SeqOpen ../tcl/tcl_db_pkg.c /^bdb_SeqOpen(interp, objc, objv, ip, seqp)$/
bdb_Version ../tcl/tcl_db_pkg.c /^bdb_Version(interp, objc, objv)$/
-bdbenvopen ../tcl/tcl_db_pkg.c /^ enum bdbenvopen {$/
-bdbmv ../tcl/tcl_db_pkg.c /^ enum bdbmv {$/
-bdbopen ../tcl/tcl_db_pkg.c /^ enum bdbopen {$/
-bdbrem ../tcl/tcl_db_pkg.c /^ enum bdbrem {$/
-bdbupg ../tcl/tcl_db_pkg.c /^ enum bdbupg {$/
-bdbver ../tcl/tcl_db_pkg.c /^ enum bdbver {$/
-bdbvrfy ../tcl/tcl_db_pkg.c /^ enum bdbvrfy {$/
berkdb_Cmd ../tcl/tcl_db_pkg.c /^berkdb_Cmd(notused, interp, objc, objv)$/
-berkdbcmds ../tcl/tcl_db_pkg.c /^ enum berkdbcmds {$/
-blk ../hmac/sha1.c /^#define blk(i) (block->l[i&15] = rol(block->l[(i+1/
-blk0 ../hmac/sha1.c /^#define blk0(i) is_bigendian ? block->l[i] : \\$/
-ca_recno_arg ../dbinc/btree.h /^} ca_recno_arg;$/
-cdsgroup_begin ../cxx/cxx_env.cpp /^int DbEnv::cdsgroup_begin(DbTxn **tid)$/
-cipherInstance ../crypto/rijndael/rijndael-api-fst.h /^} cipherInstance;$/
-cleanup ../cxx/cxx_db.cpp /^\/\/ private method to cleanup after destructor or/
-close ../cxx/cxx_env.cpp /^int DbEnv::close(u_int32_t flags)$/
+blk ../hmac/sha1.c /^#define blk(i) (block->l[i&15] = rol(block->l[(i+1/
+blk0 ../hmac/sha1.c /^#define blk0(i) is_bigendian ? block->l[i] : \\$/
+bt_compare_fcn_type ../dbinc/db_cxx.in 158
+bt_prefix_fcn_type ../dbinc/db_cxx.in 160
+ca_recno_arg ../dbinc/btree.h 88
closesocket ../dbinc/repmgr.h /^#define closesocket(fd) close(fd)$/
-commitopt ../tcl/tcl_txn.c /^ enum commitopt {$/
-cond_var_t ../dbinc/repmgr.h /^typedef HANDLE cond_var_t;$/
-confonoff ../tcl/tcl_rep.c /^ enum confonoff {$/
-confwhich ../tcl/tcl_rep.c /^ enum confwhich {$/
-const ../dbinc/db_185.in /^#define const$/
-ct_anyp ../dbinc/db_server_int.h /^#define ct_anyp handle_u.anyp$/
-ct_dbc ../dbinc/db_server_int.h /^#define ct_dbc handle_u.dbc$/
-ct_dbdata ../dbinc/db_server_int.h /^typedef struct ct_dbdata ct_dbdata;$/
-ct_dbdp ../dbinc/db_server_int.h /^#define ct_dbdp private_u.dbdp$/
-ct_dbp ../dbinc/db_server_int.h /^#define ct_dbp handle_u.dbp$/
-ct_entry ../dbinc/db_server_int.h /^typedef struct ct_entry ct_entry;$/
-ct_envdata ../dbinc/db_server_int.h /^typedef struct ct_envdata ct_envdata;$/
-ct_envdp ../dbinc/db_server_int.h /^#define ct_envdp private_u.envdp$/
-ct_envp ../dbinc/db_server_int.h /^#define ct_envp handle_u.envp$/
-ct_txnp ../dbinc/db_server_int.h /^#define ct_txnp handle_u.txnp$/
-data ../dbinc/tcl_db.h /^ union data {$/
-data2 ../dbinc/tcl_db.h /^ union data2 {$/
-datum ../dbinc/db.in /^} datum;$/
+cond_var_t ../dbinc/repmgr.h 28
+const ../dbinc/db_185.in 57
+ct_anyp ../dbinc/db_server_int.h 129
+ct_dbc ../dbinc/db_server_int.h 128
+ct_dbdata ../dbinc/db_server_int.h 68
+ct_dbdp ../dbinc/db_server_int.h 132
+ct_dbp ../dbinc/db_server_int.h 127
+ct_entry ../dbinc/db_server_int.h 92
+ct_envdata ../dbinc/db_server_int.h 67
+ct_envdp ../dbinc/db_server_int.h 131
+ct_envp ../dbinc/db_server_int.h 125
+ct_txnp ../dbinc/db_server_int.h 126
+data_off ../mutex/test_mutex.c /^data_off(addr, fhp)$/
+data_on ../mutex/test_mutex.c /^data_on(gm_addrp, tm_addrp, lm_addrp, fhpp, init)$/
db185_close ../db185/db185.c /^db185_close(db185p)$/
db185_compare ../db185/db185.c /^db185_compare(dbp, a, b)$/
db185_del ../db185/db185.c /^db185_del(db185p, key185, flags)$/
@@ -4528,7 +4905,7 @@ db185_put ../db185/db185.c /^db185_put(db185p, key185, data185, flags)$/
db185_seq ../db185/db185.c /^db185_seq(db185p, key185, data185, flags)$/
db185_sync ../db185/db185.c /^db185_sync(db185p, flags)$/
db_Cmd ../tcl/tcl_db.c /^db_Cmd(clientData, interp, objc, objv)$/
-db_ca_mode ../dbinc/btree.h /^} db_ca_mode;$/
+db_ca_mode ../dbinc/btree.h 326
db_create ../db/db_method.c /^db_create(dbpp, dbenv, flags)$/
db_env_create ../env/env_method.c /^db_env_create(dbenvpp, flags)$/
db_env_set_func_close ../os/os_method.c /^db_env_set_func_close(func_close)$/
@@ -4553,41 +4930,29 @@ db_env_set_func_unlink ../os/os_method.c /^db_env_set_func_unlink(func_unlink)$/
db_env_set_func_unmap ../os/os_method.c /^db_env_set_func_unmap(func_unmap)$/
db_env_set_func_write ../os/os_method.c /^db_env_set_func_write(func_write)$/
db_env_set_func_yield ../os/os_method.c /^db_env_set_func_yield(func_yield)$/
-db_error_set_t ../dbinc/debug.h /^} db_error_set_t;$/
-db_ham_mode ../dbinc/hash.h /^} db_ham_mode;$/
-db_indx_t ../dbinc/db.in /^typedef u_int16_t db_indx_t; \/* Page offset type./
-db_iovec_t ../dbinc/repmgr.h /^typedef WSABUF db_iovec_t;$/
-db_limbo_state ../dbinc/db_dispatch.h /^} db_limbo_state;$/
-db_lockmode_t ../dbinc/db.in /^} db_lockmode_t;$/
-db_lockop_t ../dbinc/db.in /^} db_lockop_t;$/
-db_mutex_t ../dbinc/db.in /^typedef u_int32_t db_mutex_t;$/
-db_pgno_t ../dbinc/db.in /^typedef u_int32_t db_pgno_t; \/* Page number type./
-db_recno_t ../dbinc/db.in /^typedef u_int32_t db_recno_t; \/* Record number ty/
-db_recops ../dbinc/db.in /^} db_recops;$/
-db_ret_t ../libdb_java/db_java_wrap.c /^typedef int db_ret_t;$/
+db_error_set_t ../dbinc/debug.h 73
+db_free_fcn_type ../dbinc/db_cxx.in 156
+db_ham_curadj ../dbinc/hash.h 149
+db_ham_mode ../dbinc/hash.h 158
+db_indx_t ../dbinc/db.in 117
+db_iovec_t ../dbinc/repmgr.h 29
+db_limbo_state ../dbinc/db_dispatch.h 111
+db_lockmode_t ../dbinc/db.in 518
+db_lockop_t ../dbinc/db.in 535
+db_malloc_fcn_type ../dbinc/db_cxx.in 152
+db_mutex_t ../dbinc/db.in 433
+db_pgno_t ../dbinc/db.in 116
+db_realloc_fcn_type ../dbinc/db_cxx.in 154
+db_recno_t ../dbinc/db.in 120
+db_recops ../dbinc/db.in 951
+db_ret_t ../libdb_java/db_java_wrap.c 2315
db_sequence_create ../sequence/sequence.c /^db_sequence_create(seqp, dbp, flags)$/
-db_status_t ../dbinc/db.in /^}db_status_t;$/
+db_status_t ../dbinc/db.in 549
db_strerror ../common/db_err.c /^db_strerror(error)$/
-db_sync_op ../dbinc/mp.h /^} db_sync_op;$/
-db_timeout_t ../dbinc/db.in /^typedef u_int32_t db_timeout_t; \/* Type of a time/
-db_timeval_t ../dbinc/lock.h /^} db_timeval_t;$/
-db_trunc_param ../dbinc/db_am.h /^} db_trunc_param;$/
-db_txnlist_type ../dbinc/db_dispatch.h /^} db_txnlist_type;$/
+db_timeout_t ../dbinc/db.in 123
+db_txnlist_type ../dbinc/db_dispatch.h 54
db_version ../env/env_open.c /^db_version(majverp, minverp, patchp)$/
-dbaopts ../tcl/tcl_db.c /^ enum dbaopts {$/
dbc_Cmd ../tcl/tcl_dbcursor.c /^dbc_Cmd(clientData, interp, objc, objv)$/
-dbccmds ../tcl/tcl_dbcursor.c /^ enum dbccmds {$/
-dbcdupopts ../tcl/tcl_dbcursor.c /^ enum dbcdupopts {$/
-dbcgetopts ../tcl/tcl_dbcursor.c /^ enum dbcgetopts {$/
-dbclose ../tcl/tcl_db.c /^ enum dbclose {$/
-dbcmds ../tcl/tcl_db.c /^ enum dbcmds {$/
-dbcuropts ../tcl/tcl_db.c /^ enum dbcuropts {$/
-dbcutopts ../tcl/tcl_dbcursor.c /^ enum dbcutopts {$/
-dbdelopts ../tcl/tcl_db.c /^ enum dbdelopts {$/
-dbgetjopts ../tcl/tcl_db.c /^ enum dbgetjopts {$/
-dbgetopts ../tcl/tcl_db.c /^ enum dbgetopts {$/
-dbjopts ../tcl/tcl_db.c /^ enum dbjopts {$/
-dbkeyropts ../tcl/tcl_db.c /^ enum dbkeyropts {$/
dbm_clearerr ../dbinc/db.in /^#define dbm_clearerr(a) __db_ndbm_clearerr@DB_VER/
dbm_close ../dbinc/db.in /^#define dbm_close(a) __db_ndbm_close@DB_VERSION_U/
dbm_delete ../dbinc/db.in /^#define dbm_delete(a, b) __db_ndbm_delete@DB_VERSI/
@@ -4600,23 +4965,17 @@ dbm_open ../dbinc/db.in /^#define dbm_open(a, b, c) __db_ndbm_open@DB_VERSIO/
dbm_pagfno ../dbinc/db.in /^#define dbm_pagfno(a) __db_ndbm_pagfno@DB_VERSION/
dbm_rdonly ../dbinc/db.in /^#define dbm_rdonly(a) __db_ndbm_rdonly@DB_VERSION/
dbm_store ../dbinc/db.in /^#define dbm_store(a, b, c, d) \\$/
-dbmclose ../dbinc/db.in /^#define dbmclose __db_dbm_close@DB_VERSION_UNIQUE_/
-dbmcmds ../tcl/tcl_compat.c /^ enum dbmcmds {$/
+dbmclose ../dbinc/db.in 2568
dbminit ../dbinc/db.in /^#define dbminit(a) __db_dbm_init@DB_VERSION_UNIQUE/
-dbopen ../dbinc/db_185.in /^#define dbopen __db185_open@DB_VERSION_UNIQUE_NAME/
-dbputapp ../tcl/tcl_db.c /^ enum dbputapp { DBPUT_APPEND0 };$/
-dbputopts ../tcl/tcl_db.c /^ enum dbputopts {$/
-dbstatopts ../tcl/tcl_db.c /^ enum dbstatopts {$/
-dbt_ ../cxx/cxx_except.cpp /^, dbt_(dbt)$/
+dbopen ../dbinc/db_185.in 170
delete ../dbinc/db.in /^#define delete(a) __db_dbm_delete@DB_VERSION_UNIQU/
delete_DbLock ../libdb_java/db_java_wrap.c /^SWIGINTERN void delete_DbLock(struct DbLock *self)/
-describe ../cxx/cxx_except.cpp /^void DbException::describe(const char *prefix, con/
-dirent ../clib/getcwd.c /^# define dirent direct$/
-dirfd ../clib/getcwd.c /^#define dirfd(dirp) ((dirp)->dd_fd)$/
+dirent ../dbinc/db_int.in 79
+dirfd ../clib/getcwd.c /^#define dirfd(dirp) ((dirp)->dd_fd)$/
dispatch_phase_completion ../repmgr/repmgr_sel.c /^dispatch_phase_completion(dbenv, conn)$/
-dupString ../cxx/cxx_except.cpp /^\/\/ Note: would not be needed if we can inherit f/
+dupString ../cxx/cxx_except.cpp /^static char *dupString(const char *s)$/
+dup_compare_fcn_type ../dbinc/db_cxx.in 162
enqueue_msg ../repmgr/repmgr_net.c /^enqueue_msg(dbenv, conn, msg, offset)$/
-env_ ../cxx/cxx_except.cpp /^, env_(0)$/
env_Cmd ../tcl/tcl_env.c /^env_Cmd(clientData, interp, objc, objv)$/
env_DbRemove ../tcl/tcl_env.c /^env_DbRemove(interp, objc, objv, dbenv)$/
env_DbRename ../tcl/tcl_env.c /^env_DbRename(interp, objc, objv, dbenv)$/
@@ -4626,225 +4985,162 @@ env_GetOpenFlag ../tcl/tcl_env.c /^env_GetOpenFlag(interp, objc, objv, dbenv)$/
env_GetTimeout ../tcl/tcl_env.c /^env_GetTimeout(interp, objc, objv, dbenv)$/
env_GetVerbose ../tcl/tcl_env.c /^env_GetVerbose(interp, objc, objv, dbenv)$/
env_recover ../rpc_server/c/db_server_util.c /^env_recover(progname)$/
-envcmds ../tcl/tcl_env.c /^ enum envcmds {$/
-envdbmv ../tcl/tcl_env.c /^ enum envdbmv {$/
-envdbrem ../tcl/tcl_env.c /^ enum envdbrem {$/
-envopen ../tcl/tcl_db_pkg.c /^ enum envopen {$/
-envremopts ../tcl/tcl_env.c /^ enum envremopts {$/
-envtestat ../tcl/tcl_env.c /^ enum envtestat {$/
-envtestcmd ../tcl/tcl_env.c /^ enum envtestcmd {$/
-error_policy ../cxx/cxx_db.cpp /^\/\/ Return a tristate value corresponding to whet/
-errx ../cxx/cxx_db.cpp /^void Db::errx(const char *format, ...)$/
fetch ../dbinc/db.in /^#define fetch(a) __db_dbm_fetch@DB_VERSION_UNIQUE_/
finish_connecting ../repmgr/repmgr_posix.c /^finish_connecting(dbenv, conn)$/
-firstkey ../dbinc/db.in /^#define firstkey __db_dbm_firstkey@DB_VERSION_UNIQ/
+firstkey ../dbinc/db.in 2573
flatten ../repmgr/repmgr_net.c /^flatten(dbenv, msg)$/
-fprintf ../clib/printf.c /^fprintf(fp, fmt, va_alist)$/
+fprintf ../clib/printf.c /^fprintf(FILE *fp, const char *fmt, ...)$/
free_wait_slot ../repmgr/repmgr_windows.c /^free_wait_slot(dbenv, slot)$/
-fsync ../os/os_fsync.c /^#define fsync(fd) __vx_fsync(fd)$/
-get ../cxx/cxx_dbc.cpp /^int Dbc::get(Dbt* key, Dbt *data, u_int32_t _flags/
-get_app_private ../cxx/cxx_env.cpp /^void *DbEnv::get_app_private() const$/
-get_byteswapped ../cxx/cxx_db.cpp /^int Db::get_byteswapped(int *isswapped)$/
-get_dbt ../cxx/cxx_except.cpp /^Dbt *DbMemoryException::get_dbt() const$/
-get_env ../cxx/cxx_db.cpp /^DbEnv *Db::get_env()$/
-get_errno ../cxx/cxx_except.cpp /^int DbException::get_errno() const$/
-get_error_stream ../cxx/cxx_env.cpp /^__DB_STD(ostream) *DbEnv::get_error_stream()$/
+fsync ../dbinc/win_db.h 68
get_fullhome ../rpc_server/c/db_server_util.c /^get_fullhome(name)$/
get_handle ../mutex/mut_win32.c /^static __inline int get_handle(dbenv, mutexp, even/
-get_index ../cxx/cxx_except.cpp /^int DbLockNotGrantedException::get_index() const$/
-get_key ../cxx/cxx_seq.cpp /^Dbt *DbSequence::get_key()$/
-get_lock ../cxx/cxx_except.cpp /^DbLock* DbLockNotGrantedException::get_lock() cons/
-get_message_stream ../cxx/cxx_env.cpp /^__DB_STD(ostream) *DbEnv::get_message_stream()$/
-get_mode ../cxx/cxx_except.cpp /^db_lockmode_t DbLockNotGrantedException::get_mode(/
-get_mpf ../cxx/cxx_db.cpp /^DbMpoolFile *Db::get_mpf()$/
-get_obj ../cxx/cxx_except.cpp /^const Dbt* DbLockNotGrantedException::get_obj() co/
-get_op ../cxx/cxx_except.cpp /^db_lockop_t DbLockNotGrantedException::get_op() co/
get_tableent ../rpc_server/c/db_server_util.c /^get_tableent(id)$/
-getcwd ../clib/getcwd.c /^getcwd(pt, size)$/
+getcwd ../dbinc/win_db.h /^#define getcwd(buf, size) _getcwd(buf, size)$/
getopt ../clib/getopt.c /^getopt(nargc, nargv, ostr)$/
-h_hash_callback_ ../cxx/cxx_db.cpp /^, h_hash_callback_(0)$/
+getpid ../dbinc/win_db.h 73
+h_compare_fcn_type ../dbinc/db_cxx.in 164
+h_errno ../dbinc/win_db.h 79
+h_hash_fcn_type ../dbinc/db_cxx.in 166
handle_completion ../repmgr/repmgr_windows.c /^handle_completion(dbenv, conn)$/
handle_newsite ../repmgr/repmgr_msg.c /^handle_newsite(dbenv, rec)$/
-hcmds ../tcl/tcl_compat.c /^ enum hcmds {$/
hcreate ../dbinc/db.in /^#define hcreate(a) __db_hcreate@DB_VERSION_UNIQUE_/
-hdestroy ../dbinc/db.in /^#define hdestroy __db_hdestroy@DB_VERSION_UNIQUE_N/
-header ../repmgr/repmgr_queue.c /^};$/
-home_entry ../dbinc/db_server_int.h /^typedef struct home_entry home_entry;$/
+hdestroy ../dbinc/db.in 2590
+home_entry ../dbinc/db_server_int.h 43
hsearch ../dbinc/db.in /^#define hsearch(a, b) __db_hsearch@DB_VERSION_UNIQ/
-i_anyp ../dbinc/tcl_db.h /^#define i_anyp un.anyp$/
-i_cdata ../dbinc/tcl_db.h /^#define i_cdata und2.c_data$/
-i_data ../dbinc/tcl_db.h /^#define i_data und.anydata$/
-i_data2 ../dbinc/tcl_db.h /^#define i_data2 und2.anydata$/
-i_dbcp ../dbinc/tcl_db.h /^#define i_dbcp un.dbcp$/
-i_dbdbcid ../dbinc/tcl_db.h /^#define i_dbdbcid i_otherid[0]$/
-i_dbp ../dbinc/tcl_db.h /^#define i_dbp un.dbp$/
-i_envlockid ../dbinc/tcl_db.h /^#define i_envlockid i_otherid[2]$/
-i_envlogcid ../dbinc/tcl_db.h /^#define i_envlogcid i_otherid[3]$/
-i_envmpid ../dbinc/tcl_db.h /^#define i_envmpid i_otherid[1]$/
-i_envp ../dbinc/tcl_db.h /^#define i_envp un.envp$/
-i_envtxnid ../dbinc/tcl_db.h /^#define i_envtxnid i_otherid[0]$/
-i_lock ../dbinc/tcl_db.h /^#define i_lock un.lock$/
-i_locker ../dbinc/tcl_db.h /^#define i_locker und.lockid$/
-i_logc ../dbinc/tcl_db.h /^#define i_logc un.logc$/
-i_mp ../dbinc/tcl_db.h /^#define i_mp un.mp$/
-i_mppgid ../dbinc/tcl_db.h /^#define i_mppgid i_otherid[0]$/
-i_pagep ../dbinc/tcl_db.h /^#define i_pagep un.anyp$/
-i_pgno ../dbinc/tcl_db.h /^#define i_pgno und.pgno$/
-i_pgsz ../dbinc/tcl_db.h /^#define i_pgsz und2.pagesz$/
-i_txnp ../dbinc/tcl_db.h /^#define i_txnp un.txnp$/
-idwhich ../tcl/tcl_env.c /^ enum idwhich {$/
-imp_ ../cxx/cxx_mpool.cpp /^: imp_(0)$/
-index_ ../cxx/cxx_except.cpp /^, index_(index)$/
-indx_t ../dbinc/db_185.in /^typedef u_int16_t indx_t;$/
-infop ../dbinc/tcl_db.h /^ union infop {$/
-initialize ../cxx/cxx_db.cpp /^\/\/ private method to initialize during construct/
-int ../db/db_upg.c /^static int (* const func_31_list[P_PAGETYPE_MAX])$/
-int_bool ../libdb_java/db_java_wrap.c /^typedef int int_bool;$/
-iov_base ../dbinc/repmgr.h /^#define iov_base buf$/
-iov_len ../dbinc/repmgr.h /^#define iov_len len$/
+i_anyp ../dbinc/tcl_db.h 99
+i_cdata ../dbinc/tcl_db.h 114
+i_data ../dbinc/tcl_db.h 109
+i_data2 ../dbinc/tcl_db.h 112
+i_dbcp ../dbinc/tcl_db.h 103
+i_dbdbcid ../dbinc/tcl_db.h 123
+i_dbp ../dbinc/tcl_db.h 102
+i_envlockid ../dbinc/tcl_db.h 118
+i_envlogcid ../dbinc/tcl_db.h 119
+i_envmpid ../dbinc/tcl_db.h 117
+i_envp ../dbinc/tcl_db.h 101
+i_envtxnid ../dbinc/tcl_db.h 116
+i_lock ../dbinc/tcl_db.h 106
+i_locker ../dbinc/tcl_db.h 111
+i_logc ../dbinc/tcl_db.h 107
+i_mp ../dbinc/tcl_db.h 105
+i_mppgid ../dbinc/tcl_db.h 121
+i_pagep ../dbinc/tcl_db.h 100
+i_pgno ../dbinc/tcl_db.h 110
+i_pgsz ../dbinc/tcl_db.h 113
+i_txnp ../dbinc/tcl_db.h 104
+indx_t ../dbinc/db_185.in 85
+int_bool ../libdb_java/db_java_wrap.c 2316
+iov_base ../dbinc/repmgr.h 335
+iov_len ../dbinc/repmgr.h 334
isalpha ../clib/isalpha.c /^isalpha(c)$/
isdigit ../clib/isdigit.c /^isdigit(c)$/
isprint ../clib/isprint.c /^isprint(c)$/
isspace ../clib/isspace.c /^isspace(c)$/
-keyInstance ../crypto/rijndael/rijndael-api-fst.h /^} keyInstance;$/
-ldopts ../tcl/tcl_lock.c /^ enum ldopts {$/
-lgopts ../tcl/tcl_lock.c /^ enum lgopts {$/
-linfo_t ../dbinc/rep.h /^} linfo_t;$/
-lkcmds ../tcl/tcl_lock.c /^ enum lkcmds {$/
-lkmode ../tcl/tcl_lock.c /^ enum lkmode {$/
-lkops ../tcl/tcl_lock.c /^ enum lkops {$/
-lock_ ../cxx/cxx_lock.cpp /^: lock_(value)$/
+item ../hsearch/hsearch.c /^ ENTRY item;$/
lock_Cmd ../tcl/tcl_lock.c /^lock_Cmd(clientData, interp, objc, objv)$/
-locker_info ../lock/lock_deadlock.c /^} locker_info;$/
-locker_start ../mutex/tm.c /^locker_start(id)$/
-locker_wait ../mutex/tm.c /^locker_wait()$/
+locker_start ../mutex/test_mutex.c /^locker_start(id)$/
+locker_wait ../mutex/test_mutex.c /^locker_wait()$/
log_compare ../log/log_compare.c /^log_compare(lsn0, lsn1)$/
logc_Cmd ../tcl/tcl_log.c /^logc_Cmd(clientData, interp, objc, objv)$/
-logccmds ../tcl/tcl_log.c /^ enum logccmds {$/
-logcgetopts ../tcl/tcl_log.c /^ enum logcgetopts {$/
-logfile_validity ../dbinc/log.h /^} logfile_validity;$/
-logputopts ../tcl/tcl_log.c /^ enum logputopts {$/
-lsnwhich ../tcl/tcl_env.c /^ enum lsnwhich {$/
-lvopts ../tcl/tcl_lock.c /^ enum lvopts {$/
-map_file ../mutex/tm.c /^map_file(gm_addrp, tm_addrp, lm_addrp, fhpp)$/
+logfile_validity ../dbinc/log.h 428
memcmp ../clib/memcmp.c /^memcmp(s1, s2, n)$/
+memcpy ../clib/memmove.c /^memcpy(dst0, src0, length)$/
message_loop ../repmgr/repmgr_msg.c /^message_loop(dbenv)$/
-mgr_mutex_t ../dbinc/repmgr.h /^typedef HANDLE mgr_mutex_t;$/
+mgr_mutex_t ../dbinc/repmgr.h 27
+min ../clib/qsort.c /^#define min(a, b) (a) < (b) ? a : b$/
mp_Cmd ../tcl/tcl_mp.c /^mp_Cmd(clientData, interp, objc, objv)$/
-mpcmds ../tcl/tcl_mp.c /^ enum mpcmds {$/
-mpget ../tcl/tcl_mp.c /^ enum mpget {$/
-mpopts ../tcl/tcl_mp.c /^ enum mpopts {$/
-mu_action ../dbinc/db_int.in /^typedef enum { MU_REMOVE, MU_RENAME, MU_OPEN } mu_/
-ndbcmds ../tcl/tcl_compat.c /^ enum ndbcmds {$/
+mu_action ../dbinc/db_int.in 552
ndbm_Cmd ../tcl/tcl_compat.c /^ndbm_Cmd(clientData, interp, objc, objv)$/
-ndbopen ../tcl/tcl_compat.c /^ enum ndbopen {$/
-net_errno ../dbinc/repmgr.h /^#define net_errno WSAGetLastError()$/
+net_errno ../dbinc/repmgr.h 330
new_Db ../libdb_java/db_java_wrap.c /^SWIGINTERN struct Db *new_Db(DB_ENV *dbenv,u_int32/
new_DbEnv ../libdb_java/db_java_wrap.c /^SWIGINTERN struct DbEnv *new_DbEnv(u_int32_t flags/
new_DbSequence ../libdb_java/db_java_wrap.c /^SWIGINTERN struct DbSequence *new_DbSequence(DB *d/
new_ct_ent ../rpc_server/c/db_server_util.c /^new_ct_ent(errp)$/
-next ../cxx/cxx_multi.cpp /^bool DbMultipleDataIterator::next(Dbt &data)$/
nextkey ../dbinc/db.in /^#define nextkey(a) __db_dbm_nextkey@DB_VERSION_UNI/
notify_handshake ../repmgr/repmgr_sel.c /^notify_handshake(dbenv, conn)$/
-op_is_remove ../mp/mp_method.c /^#define op_is_remove (newname == NULL)$/
-os_pid_t ../mutex/tm.c /^typedef HANDLE os_pid_t;$/
-os_spawn ../mutex/tm.c /^os_spawn(path, argv)$/
-os_thread_create ../mutex/tm.c /^#define os_thread_create(thrp, attr, func, arg) /
-os_thread_join ../mutex/tm.c /^#define os_thread_join(thr, statusp) \\$/
-os_thread_self ../mutex/tm.c /^#define os_thread_self() GetCurrentThreadId()$/
-os_thread_t ../mutex/tm.c /^typedef HANDLE os_thread_t;$/
-os_wait ../mutex/tm.c /^os_wait(procs, nprocs)$/
-p_ ../cxx/cxx_multi.cpp /^ p_((u_int32_t*)(data_ + dbt.get_ulen() - sizeof/
+op_is_remove ../mp/mp_method.c 438
+os_pid_t ../mutex/test_mutex.c 18
+os_spawn ../mutex/test_mutex.c /^os_spawn(path, argv)$/
+os_thread_create ../mutex/test_mutex.c /^#define os_thread_create(thrp, attr, func, arg) /
+os_thread_join ../mutex/test_mutex.c /^#define os_thread_join(thr, statusp) \\$/
+os_thread_self ../mutex/test_mutex.c /^#define os_thread_self() GetCurrentThreadId()$/
+os_thread_t ../mutex/test_mutex.c 19
+os_wait ../mutex/test_mutex.c /^os_wait(procs, n)$/
pg_Cmd ../tcl/tcl_mp.c /^pg_Cmd(clientData, interp, objc, objv)$/
-pgcmds ../tcl/tcl_mp.c /^ enum pgcmds {$/
-pgcookie ../dbinc/db_cxx.in /^ (DB_ENV *dbenv, db_pgno_t pgno, void *pgaddr, DB/
-pget ../cxx/cxx_db.cpp /^int Db::pget(DbTxn *txnid, Dbt *key, Dbt *pkey, Db/
-pglist ../dbinc/db_page.h /^struct pglist {$/
-pgno_t ../dbinc/db_185.in /^#define pgno_t db_pgno_t$/
-pgopt ../tcl/tcl_mp.c /^ enum pgopt {$/
-phase_t ../dbinc/repmgr.h /^} phase_t;$/
-printf ../clib/printf.c /^printf(fmt, va_alist)$/
+pgin_fcn_type ../dbinc/db_cxx.in 168
+pgno_t ../dbinc/db_185.in 79
+pgout_fcn_type ../dbinc/db_cxx.in 170
+phase_t ../dbinc/repmgr.h 154
+printf ../clib/printf.c /^printf(const char *fmt, ...)$/
process_message ../repmgr/repmgr_msg.c /^process_message(dbenv, control, rec, eid)$/
pthread_cond_destroy ../mutex/mut_pthread.c /^#define pthread_cond_destroy(x) 0$/
-pthread_cond_signal ../mutex/mut_pthread.c /^#define pthread_cond_signal _lwp_cond_signal$/
-pthread_cond_wait ../mutex/mut_pthread.c /^#define pthread_cond_wait _lwp_cond_wait$/
+pthread_cond_signal ../mutex/mut_pthread.c 21
+pthread_cond_wait ../mutex/mut_pthread.c 22
pthread_mutex_destroy ../mutex/mut_pthread.c /^#define pthread_mutex_destroy(x) 0$/
-pthread_mutex_lock ../mutex/mut_pthread.c /^#define pthread_mutex_lock _lwp_mutex_lock$/
-pthread_mutex_trylock ../mutex/mut_pthread.c /^#define pthread_mutex_trylock _lwp_mutex_trylock$/
-pthread_mutex_unlock ../mutex/mut_pthread.c /^#define pthread_mutex_unlock _lwp_mutex_unlock$/
-qam_name_op ../dbinc/qam.h /^} qam_name_op;$/
-qam_probe_mode ../dbinc/qam.h /^} qam_probe_mode;$/
-qm_trace ../dbinc/queue.h /^struct qm_trace {$/
+pthread_mutex_lock ../mutex/mut_pthread.c 24
+pthread_mutex_trylock ../mutex/mut_pthread.c 25
+pthread_mutex_unlock ../mutex/mut_pthread.c 26
+qam_name_op ../dbinc/qam.h 162
+qam_probe_mode ../dbinc/qam.h 153
+qsort ../clib/qsort.c /^qsort(a, n, es, cmp)$/
raise ../clib/raise.c /^raise(s)$/
-rand ../clib/rand.c /^int rand(void) \/* RAND_MAX assumed to be 32767 */
-rcmds ../tcl/tcl_util.c /^ enum rcmds {$/
-recno_t ../dbinc/db_185.in /^typedef u_int32_t recno_t;$/
+rand ../clib/rand.c /^int rand(void) \/* RAND_MAX assumed to be 32767 *\/$/
+recno_t ../dbinc/db_185.in 87
record_ack ../repmgr/repmgr_sel.c /^record_ack(dbenv, site, ack)$/
-reg_type_t ../dbinc/region.h /^ REGION_TYPE_TXN } reg_type_t;$/
-remove ../cxx/cxx_env.cpp /^int DbEnv::remove(const char *db_home, u_int32_t f/
-rep_send_callback_ ../cxx/cxx_env.cpp /^, rep_send_callback_(0)$/
-repdb_t ../dbinc/rep.h /^} repdb_t;$/
-repmgr_netaddr_t ../dbinc/repmgr.h /^} repmgr_netaddr_t;$/
-repmgr_timeval_t ../dbinc/repmgr.h /^} repmgr_timeval_t;$/
-rmgr ../tcl/tcl_rep.c /^ enum rmgr {$/
-roff_t ../dbinc/db.in /^typedef uintptr_t roff_t;$/
-rol ../hmac/sha1.c /^#define rol(value, bits) (((value) << (bits)) | ((/
-run_lthread ../mutex/tm.c /^run_lthread(arg)$/
-run_wthread ../mutex/tm.c /^run_wthread(arg)$/
-runtime_error ../cxx/cxx_env.cpp /^\/\/ Report an error associated with the DbEnv.$/
-runtime_error_dbt ../cxx/cxx_env.cpp /^\/\/ Like DbEnv::runtime_error, but issue a DbMemo/
-runtime_error_lock_get ../cxx/cxx_env.cpp /^\/\/ Like DbEnv::runtime_error, but issue a DbLock/
-select_timeout_t ../dbinc/repmgr.h /^typedef DWORD select_timeout_t;$/
-sending_msg ../repmgr/repmgr_net.c /^struct sending_msg {$/
+reg_type_t ../dbinc/region.h 130
+repdb_t ../dbinc/rep.h 160
+retval ../hsearch/hsearch.c /^static ENTRY retval;$/
+roff_t ../dbinc/db.in 132
+rol ../hmac/sha1.c /^#define rol(value, bits) (((value) << (bits)) | ((/
+run_lthread ../mutex/test_mutex.c /^run_lthread(arg)$/
+run_wthread ../mutex/test_mutex.c /^run_wthread(arg)$/
seq_Cmd ../tcl/tcl_seq.c /^seq_Cmd(clientData, interp, objc, objv)$/
-seqcmds ../tcl/tcl_seq.c /^ enum seqcmds {$/
-seqgetopts ../tcl/tcl_seq.c /^ enum seqgetopts {$/
-seqopen ../tcl/tcl_db_pkg.c /^ enum seqopen {$/
-set_env ../cxx/cxx_except.cpp /^void DbException::set_env(DbEnv *env)$/
-set_error_stream ../cxx/cxx_env.cpp /^void DbEnv::set_error_stream(__DB_STD(ostream) *st/
-set_event_notify ../cxx/cxx_env.cpp /^int DbEnv::set_event_notify(void (*arg)(DbEnv *, u/
-set_feedback ../cxx/cxx_env.cpp /^int DbEnv::set_feedback(void (*arg)(DbEnv *, int, /
-set_message_stream ../cxx/cxx_env.cpp /^void DbEnv::set_message_stream(__DB_STD(ostream) */
-set_paniccall ../cxx/cxx_env.cpp /^int DbEnv::set_paniccall(void (*arg)(DbEnv *, int)/
set_signal ../common/util_sig.c /^set_signal(s, is_dflt)$/
-set_thread_id_string ../cxx/cxx_env.cpp /^int DbEnv::set_thread_id_string($/
setup_sending_msg ../repmgr/repmgr_net.c /^setup_sending_msg(msg, type, control, rec)$/
-sfonoff ../tcl/tcl_env.c /^ enum sfonoff {$/
-sfwhich ../tcl/tcl_env.c /^ enum sfwhich {$/
signal_handler ../common/util_sig.c /^signal_handler(signo)$/
-size_t ../dbinc/db_cxx.in /^ (size_t);$/
-snprintf ../clib/snprintf.c /^snprintf(str, n, fmt, va_alist)$/
-socket_t ../dbinc/repmgr.h /^typedef SOCKET socket_t;$/
-socklen_t ../dbinc/repmgr.h /^typedef int socklen_t;$/
-sockopt_t ../dbinc/repmgr.h /^typedef char * sockopt_t;$/
-spawn_proc ../mutex/tm.c /^spawn_proc(id, tmpath, typearg)$/
+snprintf ../dbinc/win_db.h 74
+socket_t ../dbinc/repmgr.h 25
+socklen_t ../dbinc/repmgr.h 331
+sockopt_t ../dbinc/repmgr.h 332
+spawn_proc ../mutex/test_mutex.c /^spawn_proc(id, tmpath, typearg)$/
sprintf_overflow ../clib/snprintf.c /^sprintf_overflow()$/
sprintf_retcharpnt ../clib/snprintf.c /^sprintf_retcharpnt()$/
srand ../clib/rand.c /^void srand(unsigned int seed)$/
-srchacts ../tcl/tcl_compat.c /^ enum srchacts {$/
start_election_thread ../repmgr/repmgr_elect.c /^start_election_thread(dbenv)$/
-stflag ../tcl/tcl_compat.c /^ enum stflag {$/
store ../dbinc/db.in /^#define store(a, b) __db_dbm_store@DB_VERSION_UNIQ/
-strcasecmp ../clib/strcasecmp.c /^strcasecmp(s1, s2)$/
+strcasecmp ../dbinc/win_db.h 75
strcat ../clib/strcat.c /^strcat(char *s, const char *append)$/
strchr ../clib/strchr.c /^char *strchr(const char *p, int ch)$/
strdup ../clib/strdup.c /^strdup(str)$/
strerror ../clib/strerror.c /^strerror(num)$/
-strncasecmp ../clib/strcasecmp.c /^strncasecmp(s1, s2, n)$/
+strncasecmp ../dbinc/win_db.h 76
strncat ../clib/strncat.c /^strncat(char *dst, const char *src, size_t n)$/
strncmp ../clib/strncmp.c /^strncmp(s1, s2, n)$/
strrchr ../clib/strrchr.c /^char *strrchr(const char *p, int ch)$/
strsep ../clib/strsep.c /^strsep(stringp, delim)$/
strtol ../clib/strtol.c /^strtol(nptr, endptr, base)$/
strtoul ../clib/strtoul.c /^strtoul(nptr, endptr, base)$/
+swap ../clib/qsort.c /^#define swap(a, b) \\$/
+swapcode ../clib/qsort.c /^#define swapcode(TYPE, parmi, parmj, n) { \\$/
+swapfunc ../clib/qsort.c /^swapfunc(a, b, n, swaptype)$/
tcl_CDSGroup ../tcl/tcl_txn.c /^tcl_CDSGroup(interp, objc, objv, envp, envip)$/
+tcl_CompactStat ../tcl/tcl_db.c /^tcl_CompactStat(interp, ip)$/
tcl_DbAssociate ../tcl/tcl_db.c /^tcl_DbAssociate(interp, objc, objv, dbp)$/
tcl_DbClose ../tcl/tcl_db.c /^tcl_DbClose(interp, objc, objv, dbp, dbip)$/
+tcl_DbCompact ../tcl/tcl_db.c /^tcl_DbCompact(interp, objc, objv, dbp)$/
+tcl_DbCompactStat ../tcl/tcl_db.c /^tcl_DbCompactStat(interp, objc, objv, dbp)$/
+tcl_DbCount ../tcl/tcl_db.c /^tcl_DbCount(interp, objc, objv, dbp)$/
tcl_DbCursor ../tcl/tcl_db.c /^tcl_DbCursor(interp, objc, objv, dbp, dbcp)$/
tcl_DbDelete ../tcl/tcl_db.c /^tcl_DbDelete(interp, objc, objv, dbp)$/
tcl_DbGet ../tcl/tcl_db.c /^tcl_DbGet(interp, objc, objv, dbp, ispget)$/
+tcl_DbGetFlags ../tcl/tcl_db.c /^tcl_DbGetFlags(interp, objc, objv, dbp)$/
+tcl_DbGetOpenFlags ../tcl/tcl_db.c /^tcl_DbGetOpenFlags(interp, objc, objv, dbp)$/
+tcl_DbGetjoin ../tcl/tcl_db.c /^tcl_DbGetjoin(interp, objc, objv, dbp)$/
+tcl_DbJoin ../tcl/tcl_db.c /^tcl_DbJoin(interp, objc, objv, dbp, dbcp)$/
+tcl_DbKeyRange ../tcl/tcl_db.c /^tcl_DbKeyRange(interp, objc, objv, dbp)$/
tcl_DbPut ../tcl/tcl_db.c /^tcl_DbPut(interp, objc, objv, dbp)$/
tcl_DbStat ../tcl/tcl_db.c /^tcl_DbStat(interp, objc, objv, dbp)$/
+tcl_DbTruncate ../tcl/tcl_db.c /^tcl_DbTruncate(interp, objc, objv, dbp)$/
tcl_DbcDup ../tcl/tcl_dbcursor.c /^tcl_DbcDup(interp, objc, objv, dbc)$/
tcl_DbcGet ../tcl/tcl_dbcursor.c /^tcl_DbcGet(interp, objc, objv, dbc, ispget)$/
tcl_DbcPut ../tcl/tcl_dbcursor.c /^tcl_DbcPut(interp, objc, objv, dbc)$/
@@ -4877,15 +5173,18 @@ tcl_MpGet ../tcl/tcl_mp.c /^tcl_MpGet(interp, objc, objv, mp, mpip)$/
tcl_MpStat ../tcl/tcl_mp.c /^tcl_MpStat(interp, objc, objv, envp)$/
tcl_MpSync ../tcl/tcl_mp.c /^tcl_MpSync(interp, objc, objv, envp)$/
tcl_MpTrickle ../tcl/tcl_mp.c /^tcl_MpTrickle(interp, objc, objv, envp)$/
-tcl_Pg ../tcl/tcl_mp.c /^tcl_Pg(interp, objc, objv, page, mp, pgip, putop)$/
+tcl_Pg ../tcl/tcl_mp.c /^tcl_Pg(interp, objc, objv, page, mp, pgip)$/
tcl_PgInit ../tcl/tcl_mp.c /^tcl_PgInit(interp, objc, objv, page, pgip)$/
tcl_PgIsset ../tcl/tcl_mp.c /^tcl_PgIsset(interp, objc, objv, page, pgip)$/
tcl_RepConfig ../tcl/tcl_rep.c /^tcl_RepConfig(interp, dbenv, list)$/
tcl_RepElect ../tcl/tcl_rep.c /^tcl_RepElect(interp, objc, objv, dbenv)$/
tcl_RepFlush ../tcl/tcl_rep.c /^tcl_RepFlush(interp, objc, objv, dbenv)$/
tcl_RepGetConfig ../tcl/tcl_rep.c /^tcl_RepGetConfig(interp, dbenv, which)$/
+tcl_RepLease ../tcl/tcl_rep.c /^tcl_RepLease(interp, objc, objv, dbenv)$/
tcl_RepLimit ../tcl/tcl_rep.c /^tcl_RepLimit(interp, objc, objv, dbenv)$/
tcl_RepMgr ../tcl/tcl_rep.c /^tcl_RepMgr(interp, objc, objv, dbenv)$/
+tcl_RepMgrStat ../tcl/tcl_rep.c /^tcl_RepMgrStat(interp, objc, objv, dbenv)$/
+tcl_RepNoarchiveTimeout ../tcl/tcl_rep.c /^tcl_RepNoarchiveTimeout(interp, dbenv)$/
tcl_RepProcessMessage ../tcl/tcl_rep.c /^tcl_RepProcessMessage(interp, objc, objv, dbenv)$/
tcl_RepRequest ../tcl/tcl_rep.c /^tcl_RepRequest(interp, objc, objv, dbenv)$/
tcl_RepStart ../tcl/tcl_rep.c /^tcl_RepStart(interp, objc, objv, dbenv)$/
@@ -4911,41 +5210,32 @@ tcl_db_realloc ../tcl/tcl_db_pkg.c /^tcl_db_realloc(ptr, size)$/
tcl_dup_compare ../tcl/tcl_db_pkg.c /^tcl_dup_compare(dbp, dbta, dbtb)$/
tcl_h_hash ../tcl/tcl_db_pkg.c /^tcl_h_hash(dbp, buf, len)$/
tcl_rep_send ../tcl/tcl_db_pkg.c /^tcl_rep_send(dbenv, control, rec, lsnp, eid, flags/
-tclrpstrt ../tcl/tcl_rep.c /^ enum tclrpstrt {$/
-thread_id_t ../dbinc/repmgr.h /^typedef HANDLE thread_id_t;$/
-threadsync_timeout_t ../dbinc/repmgr.h /^typedef DWORD threadsync_timeout_t;$/
-tm_env_close ../mutex/tm.c /^tm_env_close()$/
-tm_env_init ../mutex/tm.c /^tm_env_init()$/
-tm_file_init ../mutex/tm.c /^tm_file_init()$/
-tm_mutex_destroy ../mutex/tm.c /^tm_mutex_destroy()$/
-tm_mutex_init ../mutex/tm.c /^tm_mutex_init()$/
-tm_mutex_stats ../mutex/tm.c /^tm_mutex_stats()$/
-tsl_t ../dbinc/mutex_int.h /^typedef int tsl_t;$/
+tcl_second_call ../tcl/tcl_db.c /^tcl_second_call(dbp, pkey, data, skey)$/
+thread_id_t ../dbinc/repmgr.h 26
+threadsync_timeout_t ../dbinc/repmgr.h 337
+timespecadd ../dbinc/clock.h /^#define timespecadd(vvp, uvp) \\$/
+timespecclear ../dbinc/clock.h /^#define timespecclear(tvp) ((tvp)->tv_sec = (tvp)-/
+timespeccmp ../dbinc/clock.h /^#define timespeccmp(tvp, uvp, cmp) \\$/
+timespecisset ../dbinc/clock.h /^#define timespecisset(tvp) ((tvp)->tv_sec || (tvp)/
+timespecsub ../dbinc/clock.h /^#define timespecsub(vvp, uvp) \\$/
+tm_env_close ../mutex/test_mutex.c /^tm_env_close()$/
+tm_env_init ../mutex/test_mutex.c /^tm_env_init()$/
+tm_mutex_destroy ../mutex/test_mutex.c /^tm_mutex_destroy()$/
+tm_mutex_init ../mutex/test_mutex.c /^tm_mutex_init()$/
+tm_mutex_stats ../mutex/test_mutex.c /^tm_mutex_stats()$/
+tsl_t ../dbinc/mutex_int.h 79
txn_Cmd ../tcl/tcl_txn.c /^txn_Cmd(clientData, interp, objc, objv)$/
-txn_begin ../cxx/cxx_env.cpp /^int DbEnv::txn_begin(DbTxn *pid, DbTxn **tid, u_in/
-txnckpopts ../tcl/tcl_txn.c /^ enum txnckpopts {$/
-txncmds ../tcl/tcl_txn.c /^ enum txncmds {$/
-txnop_t ../txn/txn.c /^} txnop_t;$/
-txnopts ../tcl/tcl_txn.c /^ enum txnopts {$/
-u16 ../crypto/rijndael/rijndael-alg-fst.h /^typedef u_int16_t u16;$/
-u32 ../crypto/rijndael/rijndael-alg-fst.h /^typedef u_int32_t u32;$/
-u8 ../crypto/rijndael/rijndael-alg-fst.h /^typedef u_int8_t u8;$/
-u_int32_t ../dbinc/db_cxx.in /^ (DB *, const void *, u_int32_t);$/
-unmap_file ../mutex/tm.c /^unmap_file(addr, fhp)$/
-usage ../mutex/tm.c /^usage()$/
-verbonoff ../tcl/tcl_env.c /^ enum verbonoff {$/
-verbwhich ../tcl/tcl_env.c /^ enum verbwhich {$/
+txnop_t ../txn/txn.c 67
+u16 ../crypto/rijndael/rijndael-alg-fst.h 37
+u32 ../crypto/rijndael/rijndael-alg-fst.h 38
+u8 ../crypto/rijndael/rijndael-alg-fst.h 36
+usage ../mutex/test_mutex.c /^usage()$/
+vecswap ../clib/qsort.c /^#define vecswap(a, b, n) if ((n) > 0) swapfunc(a,/
version_check ../rpc_server/c/db_server_util.c /^version_check()$/
vfprintf ../clib/printf.c /^vfprintf(fp, fmt, ap)$/
-void ../dbinc/db_cxx.in /^ (void *);$/
-vsnprintf ../clib/snprintf.c /^vsnprintf(str, n, fmt, ap)$/
-wakeup_start ../mutex/tm.c /^wakeup_start(id)$/
-wakeup_wait ../mutex/tm.c /^wakeup_wait()$/
-what ../cxx/cxx_except.cpp /^const char *DbException::what() const throw()$/
-wmask ../clib/memmove.c /^#define wmask (wsize - 1)$/
-word ../clib/memmove.c /^typedef int word; \/* "word" used for optimal cop/
-wrap_DB_ENV ../cxx/cxx_env.cpp /^\/\/ static method$/
-wrap_DB_SEQUENCE ../cxx/cxx_seq.cpp /^\/\/ static method$/
-wsize ../clib/memmove.c /^#define wsize sizeof(word)$/
-xa_switch_t ../dbinc/xa.h /^struct xa_switch_t {$/
-xid_t ../dbinc/xa.h /^struct xid_t {$/
+vsnprintf ../dbinc/win_db.h 77
+wakeup_start ../mutex/test_mutex.c /^wakeup_start(id)$/
+wakeup_wait ../mutex/test_mutex.c /^wakeup_wait()$/
+wmask ../clib/memmove.c 50
+word ../clib/memmove.c 45
+wsize ../clib/memmove.c 48
diff --git a/db/dist/template/db_server_proc b/db/dist/template/db_server_proc
index 04ada6b5d..83be08647 100644
--- a/db/dist/template/db_server_proc
+++ b/db/dist/template/db_server_proc
@@ -1,7 +1,7 @@
#include "db_config.h"
#include "db_int.h"
-#ifndef NO_SYSTEM_INCLUDES
+#ifdef HAVE_SYSTEM_INCLUDE_FILES
#include <rpc/rpc.h>
#endif
#include "db_server.h"
@@ -810,6 +810,28 @@ __db_get_pagesize_proc(dbpcl_id, replyp)
return;
}
+/* BEGIN __db_get_priority_proc */
+void
+__db_get_priority_proc(dbpcl_id, replyp)
+ unsigned int dbpcl_id;
+ __db_get_priority_reply *replyp;
+/* END __db_get_priority_proc */
+{
+ int ret;
+ DB * dbp;
+ ct_entry *dbp_ctp;
+
+ ACTIVATE_CTP(dbp_ctp, dbpcl_id, CT_DB);
+ dbp = (DB *)dbp_ctp->ct_anyp;
+
+ /*
+ * XXX Code goes here
+ */
+
+ replyp->status = ret;
+ return;
+}
+
/* BEGIN __db_get_q_extentsize_proc */
void
__db_get_q_extentsize_proc(dbpcl_id, replyp)
@@ -1304,6 +1326,29 @@ __db_set_pagesize_proc(dbpcl_id, pagesize, replyp)
return;
}
+/* BEGIN __db_set_priority_proc */
+void
+__db_set_priority_proc(dbpcl_id, priority, replyp)
+ unsigned int dbpcl_id;
+ u_int32_t priority;
+ __db_set_priority_reply *replyp;
+/* END __db_set_priority_proc */
+{
+ int ret;
+ DB * dbp;
+ ct_entry *dbp_ctp;
+
+ ACTIVATE_CTP(dbp_ctp, dbpcl_id, CT_DB);
+ dbp = (DB *)dbp_ctp->ct_anyp;
+
+ /*
+ * XXX Code goes here
+ */
+
+ replyp->status = ret;
+ return;
+}
+
/* BEGIN __db_set_q_extentsize_proc */
void
__db_set_q_extentsize_proc(dbpcl_id, extentsize, replyp)
@@ -1478,12 +1523,12 @@ __db_truncate_proc(dbpcl_id, txnpcl_id,
return;
}
-/* BEGIN __dbc_c_close_proc */
+/* BEGIN __dbc_close_proc */
void
-__dbc_c_close_proc(dbccl_id, replyp)
+__dbc_close_proc(dbccl_id, replyp)
unsigned int dbccl_id;
- __dbc_c_close_reply *replyp;
-/* END __dbc_c_close_proc */
+ __dbc_close_reply *replyp;
+/* END __dbc_close_proc */
{
int ret;
DBC * dbc;
@@ -1500,13 +1545,13 @@ __dbc_c_close_proc(dbccl_id, replyp)
return;
}
-/* BEGIN __dbc_c_count_proc */
+/* BEGIN __dbc_count_proc */
void
-__dbc_c_count_proc(dbccl_id, flags, replyp)
+__dbc_count_proc(dbccl_id, flags, replyp)
unsigned int dbccl_id;
u_int32_t flags;
- __dbc_c_count_reply *replyp;
-/* END __dbc_c_count_proc */
+ __dbc_count_reply *replyp;
+/* END __dbc_count_proc */
{
int ret;
DBC * dbc;
@@ -1523,13 +1568,13 @@ __dbc_c_count_proc(dbccl_id, flags, replyp)
return;
}
-/* BEGIN __dbc_c_del_proc */
+/* BEGIN __dbc_del_proc */
void
-__dbc_c_del_proc(dbccl_id, flags, replyp)
+__dbc_del_proc(dbccl_id, flags, replyp)
unsigned int dbccl_id;
u_int32_t flags;
- __dbc_c_del_reply *replyp;
-/* END __dbc_c_del_proc */
+ __dbc_del_reply *replyp;
+/* END __dbc_del_proc */
{
int ret;
DBC * dbc;
@@ -1546,13 +1591,13 @@ __dbc_c_del_proc(dbccl_id, flags, replyp)
return;
}
-/* BEGIN __dbc_c_dup_proc */
+/* BEGIN __dbc_dup_proc */
void
-__dbc_c_dup_proc(dbccl_id, flags, replyp)
+__dbc_dup_proc(dbccl_id, flags, replyp)
unsigned int dbccl_id;
u_int32_t flags;
- __dbc_c_dup_reply *replyp;
-/* END __dbc_c_dup_proc */
+ __dbc_dup_reply *replyp;
+/* END __dbc_dup_proc */
{
int ret;
DBC * dbc;
@@ -1569,9 +1614,9 @@ __dbc_c_dup_proc(dbccl_id, flags, replyp)
return;
}
-/* BEGIN __dbc_c_get_proc */
+/* BEGIN __dbc_get_proc */
void
-__dbc_c_get_proc(dbccl_id, keydlen, keydoff,
+__dbc_get_proc(dbccl_id, keydlen, keydoff,
keyulen, keyflags, keydata, keysize,
datadlen, datadoff, dataulen, dataflags,
datadata, datasize, flags, replyp, freep)
@@ -1589,9 +1634,9 @@ __dbc_c_get_proc(dbccl_id, keydlen, keydoff,
void *datadata;
u_int32_t datasize;
u_int32_t flags;
- __dbc_c_get_reply *replyp;
+ __dbc_get_reply *replyp;
int * freep;
-/* END __dbc_c_get_proc */
+/* END __dbc_get_proc */
{
int ret;
DBC * dbc;
@@ -1608,9 +1653,31 @@ __dbc_c_get_proc(dbccl_id, keydlen, keydoff,
return;
}
-/* BEGIN __dbc_c_pget_proc */
+/* BEGIN __dbc_get_priority_proc */
void
-__dbc_c_pget_proc(dbccl_id, skeydlen, skeydoff,
+__dbc_get_priority_proc(dbccl_id, replyp)
+ unsigned int dbccl_id;
+ __dbc_get_priority_reply *replyp;
+/* END __dbc_get_priority_proc */
+{
+ int ret;
+ DBC * dbc;
+ ct_entry *dbc_ctp;
+
+ ACTIVATE_CTP(dbc_ctp, dbccl_id, CT_CURSOR);
+ dbc = (DBC *)dbc_ctp->ct_anyp;
+
+ /*
+ * XXX Code goes here
+ */
+
+ replyp->status = ret;
+ return;
+}
+
+/* BEGIN __dbc_pget_proc */
+void
+__dbc_pget_proc(dbccl_id, skeydlen, skeydoff,
skeyulen, skeyflags, skeydata, skeysize,
pkeydlen, pkeydoff, pkeyulen, pkeyflags,
pkeydata, pkeysize, datadlen, datadoff,
@@ -1636,9 +1703,9 @@ __dbc_c_pget_proc(dbccl_id, skeydlen, skeydoff,
void *datadata;
u_int32_t datasize;
u_int32_t flags;
- __dbc_c_pget_reply *replyp;
+ __dbc_pget_reply *replyp;
int * freep;
-/* END __dbc_c_pget_proc */
+/* END __dbc_pget_proc */
{
int ret;
DBC * dbc;
@@ -1655,9 +1722,9 @@ __dbc_c_pget_proc(dbccl_id, skeydlen, skeydoff,
return;
}
-/* BEGIN __dbc_c_put_proc */
+/* BEGIN __dbc_put_proc */
void
-__dbc_c_put_proc(dbccl_id, keydlen, keydoff,
+__dbc_put_proc(dbccl_id, keydlen, keydoff,
keyulen, keyflags, keydata, keysize,
datadlen, datadoff, dataulen, dataflags,
datadata, datasize, flags, replyp, freep)
@@ -1675,9 +1742,32 @@ __dbc_c_put_proc(dbccl_id, keydlen, keydoff,
void *datadata;
u_int32_t datasize;
u_int32_t flags;
- __dbc_c_put_reply *replyp;
+ __dbc_put_reply *replyp;
int * freep;
-/* END __dbc_c_put_proc */
+/* END __dbc_put_proc */
+{
+ int ret;
+ DBC * dbc;
+ ct_entry *dbc_ctp;
+
+ ACTIVATE_CTP(dbc_ctp, dbccl_id, CT_CURSOR);
+ dbc = (DBC *)dbc_ctp->ct_anyp;
+
+ /*
+ * XXX Code goes here
+ */
+
+ replyp->status = ret;
+ return;
+}
+
+/* BEGIN __dbc_set_priority_proc */
+void
+__dbc_set_priority_proc(dbccl_id, priority, replyp)
+ unsigned int dbccl_id;
+ u_int32_t priority;
+ __dbc_set_priority_reply *replyp;
+/* END __dbc_set_priority_proc */
{
int ret;
DBC * dbc;
diff --git a/db/dist/template/gen_client_ret b/db/dist/template/gen_client_ret
index 8d679a749..3460a2ed3 100644
--- a/db/dist/template/gen_client_ret
+++ b/db/dist/template/gen_client_ret
@@ -522,12 +522,12 @@ __dbcl_db_truncate_ret(dbp, txnp, countp, flags, replyp)
}
/*
- * PUBLIC: int __dbcl_dbc_c_close_ret __P((DBC *, __dbc_c_close_reply *));
+ * PUBLIC: int __dbcl_dbc_close_ret __P((DBC *, __dbc_close_reply *));
*/
int
-__dbcl_dbc_c_close_ret(dbc, replyp)
+__dbcl_dbc_close_ret(dbc, replyp)
DBC * dbc;
- __dbc_c_close_reply *replyp;
+ __dbc_close_reply *replyp;
{
int ret;
@@ -542,15 +542,15 @@ __dbcl_dbc_c_close_ret(dbc, replyp)
}
/*
- * PUBLIC: int __dbcl_dbc_c_count_ret __P((DBC *, db_recno_t *, u_int32_t,
- * PUBLIC: __dbc_c_count_reply *));
+ * PUBLIC: int __dbcl_dbc_count_ret __P((DBC *, db_recno_t *, u_int32_t,
+ * PUBLIC: __dbc_count_reply *));
*/
int
-__dbcl_dbc_c_count_ret(dbc, countp, flags, replyp)
+__dbcl_dbc_count_ret(dbc, countp, flags, replyp)
DBC * dbc;
db_recno_t * countp;
u_int32_t flags;
- __dbc_c_count_reply *replyp;
+ __dbc_count_reply *replyp;
{
int ret;
db_recno_t dupcount;
@@ -567,15 +567,15 @@ __dbcl_dbc_c_count_ret(dbc, countp, flags, replyp)
}
/*
- * PUBLIC: int __dbcl_dbc_c_dup_ret __P((DBC *, DBC **, u_int32_t,
- * PUBLIC: __dbc_c_dup_reply *));
+ * PUBLIC: int __dbcl_dbc_dup_ret __P((DBC *, DBC **, u_int32_t,
+ * PUBLIC: __dbc_dup_reply *));
*/
int
-__dbcl_dbc_c_dup_ret(dbc, dbcp, flags, replyp)
+__dbcl_dbc_dup_ret(dbc, dbcp, flags, replyp)
DBC * dbc;
DBC ** dbcp;
u_int32_t flags;
- __dbc_c_dup_reply *replyp;
+ __dbc_dup_reply *replyp;
{
int ret;
long dbcid;
@@ -592,16 +592,16 @@ __dbcl_dbc_c_dup_ret(dbc, dbcp, flags, replyp)
}
/*
- * PUBLIC: int __dbcl_dbc_c_get_ret __P((DBC *, DBT *, DBT *, u_int32_t,
- * PUBLIC: __dbc_c_get_reply *));
+ * PUBLIC: int __dbcl_dbc_get_ret __P((DBC *, DBT *, DBT *, u_int32_t,
+ * PUBLIC: __dbc_get_reply *));
*/
int
-__dbcl_dbc_c_get_ret(dbc, key, data, flags, replyp)
+__dbcl_dbc_get_ret(dbc, key, data, flags, replyp)
DBC * dbc;
DBT * key;
DBT * data;
u_int32_t flags;
- __dbc_c_get_reply *replyp;
+ __dbc_get_reply *replyp;
{
int ret;
/* DBT key; */
@@ -620,17 +620,17 @@ __dbcl_dbc_c_get_ret(dbc, key, data, flags, replyp)
}
/*
- * PUBLIC: int __dbcl_dbc_c_pget_ret __P((DBC *, DBT *, DBT *, DBT *, u_int32_t,
- * PUBLIC: __dbc_c_pget_reply *));
+ * PUBLIC: int __dbcl_dbc_pget_ret __P((DBC *, DBT *, DBT *, DBT *, u_int32_t,
+ * PUBLIC: __dbc_pget_reply *));
*/
int
-__dbcl_dbc_c_pget_ret(dbc, skey, pkey, data, flags, replyp)
+__dbcl_dbc_pget_ret(dbc, skey, pkey, data, flags, replyp)
DBC * dbc;
DBT * skey;
DBT * pkey;
DBT * data;
u_int32_t flags;
- __dbc_c_pget_reply *replyp;
+ __dbc_pget_reply *replyp;
{
int ret;
/* DBT skey; */
@@ -651,16 +651,16 @@ __dbcl_dbc_c_pget_ret(dbc, skey, pkey, data, flags, replyp)
}
/*
- * PUBLIC: int __dbcl_dbc_c_put_ret __P((DBC *, DBT *, DBT *, u_int32_t,
- * PUBLIC: __dbc_c_put_reply *));
+ * PUBLIC: int __dbcl_dbc_put_ret __P((DBC *, DBT *, DBT *, u_int32_t,
+ * PUBLIC: __dbc_put_reply *));
*/
int
-__dbcl_dbc_c_put_ret(dbc, key, data, flags, replyp)
+__dbcl_dbc_put_ret(dbc, key, data, flags, replyp)
DBC * dbc;
DBT * key;
DBT * data;
u_int32_t flags;
- __dbc_c_put_reply *replyp;
+ __dbc_put_reply *replyp;
{
int ret;
/* DBT key; */
diff --git a/db/dist/template/rec_ctemp b/db/dist/template/rec_ctemp
index 2951189c5..2fbee2e74 100644
--- a/db/dist/template/rec_ctemp
+++ b/db/dist/template/rec_ctemp
@@ -13,15 +13,15 @@ PREF_FUNC_recover(dbenv, dbtp, lsnp, op, info)
db_recops op;
void *info;
{
- PREF_FUNC_args *argp;
+ PREF_DUP_args *argp;
DB *file_dbp;
DBC *dbc;
DB_MPOOLFILE *mpf;
PAGE *pagep;
int cmp_n, cmp_p, modified, ret;
- REC_PRINT(PREF_FUNC_print);
- REC_INTRO(PREF_FUNC_read, 1);
+ REC_PRINT(PREF_DUP_print);
+ REC_INTRO(PREF_DUP_read, 1);
if ((ret = mpf->get(mpf, &argp->pgno, 0, &pagep)) != 0)
if (DB_REDO(op)) {
diff --git a/db/dist/template/rec_fileops b/db/dist/template/rec_fileops
index 492208635..97e548018 100644
--- a/db/dist/template/rec_fileops
+++ b/db/dist/template/rec_fileops
@@ -206,15 +206,15 @@ __fop_rename_recover(dbenv, dbtp, lsnp, op, info)
db_recops op;
void *info;
{
- __fop_rename_args *argp;
+ __fop_rename_noundo_args *argp;
DB *file_dbp;
DBC *dbc;
DB_MPOOLFILE *mpf;
PAGE *pagep;
int cmp_n, cmp_p, modified, ret;
- REC_PRINT(__fop_rename_print);
- REC_INTRO(__fop_rename_read, 1);
+ REC_PRINT(__fop_rename_noundo_print);
+ REC_INTRO(__fop_rename_noundo_read, 1);
if ((ret = mpf->get(mpf, &argp->pgno, 0, &pagep)) != 0)
if (DB_REDO(op)) {
diff --git a/db/dist/template/rec_log b/db/dist/template/rec_log
deleted file mode 100644
index 1ce40b378..000000000
--- a/db/dist/template/rec_log
+++ /dev/null
@@ -1,137 +0,0 @@
-#include "db_config.h"
-
-#ifndef NO_SYSTEM_INCLUDES
-#include <sys/types.h>
-
-#include <string.h>
-#endif
-
-#include "db_int.h"
-#include "db_page.h"
-#include "log.h"
-#include "log.h"
-
-/*
- * __log_register1_recover --
- * Recovery function for register1.
- *
- * PUBLIC: int __log_register1_recover
- * PUBLIC: __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
- */
-int
-__log_register1_recover(dbenv, dbtp, lsnp, op, info)
- DB_ENV *dbenv;
- DBT *dbtp;
- DB_LSN *lsnp;
- db_recops op;
- void *info;
-{
- __log_register1_args *argp;
- DB *file_dbp;
- DBC *dbc;
- DB_MPOOLFILE *mpf;
- PAGE *pagep;
- int cmp_n, cmp_p, modified, ret;
-
- REC_PRINT(__log_register1_print);
- REC_INTRO(__log_register1_read);
-
- if ((ret = memp_fget(mpf, &argp->pgno, 0, &pagep)) != 0)
- if (DB_REDO(op)) {
- if ((ret = memp_fget(mpf,
- &argp->pgno, DB_MPOOL_CREATE, &pagep)) != 0)
- goto out;
- } else {
- *lsnp = argp->prev_lsn;
- ret = 0;
- goto out;
- }
-
- modified = 0;
- cmp_n = log_compare(lsnp, &LSN(pagep));
-
- /*
- * Use this when there is something like "pagelsn" in the argp
- * structure. Sometimes, you might need to compare meta-data
- * lsn's instead.
- *
- * cmp_p = log_compare(&LSN(pagep), argp->pagelsn);
- */
- if (cmp_p == 0 && DB_REDO(op)) {
- /* Need to redo update described. */
- modified = 1;
- } else if (cmp_n == 0 && !DB_REDO(op)) {
- /* Need to undo update described. */
- modified = 1;
- }
- if (ret = memp_fput(mpf, pagep, modified ? DB_MPOOL_DIRTY : 0))
- goto out;
-
- *lsnp = argp->prev_lsn;
- ret = 0;
-
-out: REC_CLOSE;
-}
-
-/*
- * __log_register_recover --
- * Recovery function for register.
- *
- * PUBLIC: int __log_register_recover
- * PUBLIC: __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
- */
-int
-__log_register_recover(dbenv, dbtp, lsnp, op, info)
- DB_ENV *dbenv;
- DBT *dbtp;
- DB_LSN *lsnp;
- db_recops op;
- void *info;
-{
- __log_register_args *argp;
- DB *file_dbp;
- DBC *dbc;
- DB_MPOOLFILE *mpf;
- PAGE *pagep;
- int cmp_n, cmp_p, modified, ret;
-
- REC_PRINT(__log_register_print);
- REC_INTRO(__log_register_read);
-
- if ((ret = memp_fget(mpf, &argp->pgno, 0, &pagep)) != 0)
- if (DB_REDO(op)) {
- if ((ret = memp_fget(mpf,
- &argp->pgno, DB_MPOOL_CREATE, &pagep)) != 0)
- goto out;
- } else {
- *lsnp = argp->prev_lsn;
- ret = 0;
- goto out;
- }
-
- modified = 0;
- cmp_n = log_compare(lsnp, &LSN(pagep));
-
- /*
- * Use this when there is something like "pagelsn" in the argp
- * structure. Sometimes, you might need to compare meta-data
- * lsn's instead.
- *
- * cmp_p = log_compare(&LSN(pagep), argp->pagelsn);
- */
- if (cmp_p == 0 && DB_REDO(op)) {
- /* Need to redo update described. */
- modified = 1;
- } else if (cmp_n == 0 && !DB_REDO(op)) {
- /* Need to undo update described. */
- modified = 1;
- }
- if (ret = memp_fput(mpf, pagep, modified ? DB_MPOOL_DIRTY : 0))
- goto out;
-
- *lsnp = argp->prev_lsn;
- ret = 0;
-
-out: REC_CLOSE;
-}
-
diff --git a/db/dist/vx_config.in b/db/dist/vx_config.in
index 2f9b7d1a0..eda74cd5c 100644
--- a/db/dist/vx_config.in
+++ b/db/dist/vx_config.in
@@ -43,6 +43,12 @@
/* Define to 1 if you have the `atol' function. */
#define HAVE_ATOL 1
+/* Define to 1 if building BREW. */
+/* #undef HAVE_BREW */
+
+/* Define to 1 if building on BREW (SDK2). */
+/* #undef HAVE_BREW_SDK2 */
+
/* Define to 1 if you have the `clock_gettime' function. */
#define HAVE_CLOCK_GETTIME 1
@@ -71,6 +77,9 @@
/* Define to 1 if you have the `fchmod' function. */
/* #undef HAVE_FCHMOD */
+/* Define to 1 if you have the `fclose' function. */
+#define HAVE_FCLOSE 1
+
/* Define to 1 if you have the `fcntl' function. */
/* #undef HAVE_FCNTL */
@@ -80,12 +89,27 @@
/* Define to 1 if you have the `fdatasync' function. */
/* #undef HAVE_FDATASYNC */
+/* Define to 1 if you have the `fgetc' function. */
+#define HAVE_FGETC 1
+
+/* Define to 1 if you have the `fgets' function. */
+#define HAVE_FGETS 1
+
/* Define to 1 if allocated filesystem blocks are not zeroed. */
#define HAVE_FILESYSTEM_NOTZERO 1
+/* Define to 1 to build Berkeley DB with a fine-grained lock manager. */
+/* #undef HAVE_FINE_GRAINED_LOCK_MANAGER */
+
+/* Define to 1 if you have the `fopen' function. */
+#define HAVE_FOPEN 1
+
/* Define to 1 if you have the `ftruncate' function. */
#define HAVE_FTRUNCATE 1
+/* Define to 1 if you have the `fwrite' function. */
+#define HAVE_FWRITE 1
+
/* Define to 1 if you have the `getaddrinfo' function. */
/* #undef HAVE_GETADDRINFO */
@@ -110,6 +134,9 @@
/* Define to 1 if building Hash access method. */
#define HAVE_HASH 1
+/* Define to 1 if you have the `hstrerror' function. */
+/* #undef HAVE_HSTRERROR */
+
/* Define to 1 if you have the <inttypes.h> header file. */
/* #undef HAVE_INTTYPES_H */
@@ -125,6 +152,9 @@
/* Define to 1 if you have the `isspace' function. */
#define HAVE_ISSPACE 1
+/* Define to 1 if you have the `localtime' function. */
+#define HAVE_LOCALTIME 1
+
/* Define to 1 if you have the `memcmp' function. */
#define HAVE_MEMCMP 1
@@ -177,6 +207,9 @@
/* Define to 1 to use the msem_XXX mutexes on HP-UX. */
/* #undef HAVE_MUTEX_HPPA_MSEM_INIT */
+/* Define to 1 to use test-and-set mutexes with blocking mutexes. */
+/* #undef HAVE_MUTEX_HYBRID */
+
/* Define to 1 to use the GCC compiler and IA64 assembly language mutexes. */
/* #undef HAVE_MUTEX_IA64_GCC_ASSEMBLY */
@@ -221,6 +254,9 @@
/* Define to 1 to use the GCC compiler and Sparc assembly language mutexes. */
/* #undef HAVE_MUTEX_SPARC_GCC_ASSEMBLY */
+/* Define to 1 if the Berkeley DB library should support mutexes. */
+#define HAVE_MUTEX_SUPPORT 1
+
/* Define to 1 if mutexes hold system resources. */
#define HAVE_MUTEX_SYSTEM_RESOURCES 1
@@ -248,10 +284,12 @@
/* Define to 1 to use the GCC compiler and Windows mutexes. */
/* #undef HAVE_MUTEX_WIN32_GCC */
-/* Define to 1 to use the GCC compiler and amd64 assembly language mutexes. */
+/* Define to 1 to use the GCC compiler and 64-bit x86 assembly language
+ mutexes. */
/* #undef HAVE_MUTEX_X86_64_GCC_ASSEMBLY */
-/* Define to 1 to use the GCC compiler and x86 assembly language mutexes. */
+/* Define to 1 to use the GCC compiler and 32-bit x86 assembly language
+ mutexes. */
/* #undef HAVE_MUTEX_X86_GCC_ASSEMBLY */
/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
@@ -281,6 +319,9 @@
/* Define to 1 if building on QNX. */
/* #undef HAVE_QNX */
+/* Define to 1 if you have the `qsort' function. */
+#define HAVE_QSORT 1
+
/* Define to 1 if building Queue access method. */
#define HAVE_QUEUE 1
@@ -299,6 +340,9 @@
/* Define to 1 if building RPC client/server. */
/* #undef HAVE_RPC */
+/* Define to 1 if building on S60. */
+/* #undef HAVE_S60 */
+
/* Define to 1 if you have the `sched_yield' function. */
#define HAVE_SCHED_YIELD 1
@@ -377,13 +421,13 @@
/* Define to 1 if you have the `sysconf' function. */
/* #undef HAVE_SYSCONF */
+/* Define to 1 if port includes files in the Berkeley DB source code. */
+#define HAVE_SYSTEM_INCLUDE_FILES 1
+
/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
*/
/* #undef HAVE_SYS_DIR_H */
-/* Define to 1 if you have the <sys/fcntl.h> header file. */
-/* #undef HAVE_SYS_FCNTL_H */
-
/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
*/
/* #undef HAVE_SYS_NDIR_H */
@@ -391,6 +435,9 @@
/* Define to 1 if you have the <sys/select.h> header file. */
/* #undef HAVE_SYS_SELECT_H */
+/* Define to 1 if you have the <sys/socket.h> header file. */
+/* #undef HAVE_SYS_SOCKET_H */
+
/* Define to 1 if you have the <sys/stat.h> header file. */
/* #undef HAVE_SYS_STAT_H */
@@ -400,12 +447,18 @@
/* Define to 1 if you have the <sys/types.h> header file. */
/* #undef HAVE_SYS_TYPES_H */
+/* Define to 1 if you have the `time' function. */
+#define HAVE_TIME 1
+
/* Define to 1 if you have the <unistd.h> header file. */
#define HAVE_UNISTD_H 1
/* Define to 1 if unlink of file with open file descriptors will fail. */
#define HAVE_UNLINK_WITH_OPEN_FAILURE 1
+/* Define to 1 if port includes historic database upgrade support. */
+#define HAVE_UPGRADE_SUPPORT 1
+
/* Define to 1 if building access method verification support. */
#define HAVE_VERIFY 1
@@ -436,6 +489,42 @@
/* Define to the version of this package. */
#define PACKAGE_VERSION "__EDIT_DB_VERSION__"
+/* The size of a `char', as computed by sizeof. */
+/* #undef SIZEOF_CHAR */
+
+/* The size of a `char *', as computed by sizeof. */
+/* #undef SIZEOF_CHAR_P */
+
+/* The size of a `int', as computed by sizeof. */
+/* #undef SIZEOF_INT */
+
+/* The size of a `long', as computed by sizeof. */
+/* #undef SIZEOF_LONG */
+
+/* The size of a `long long', as computed by sizeof. */
+/* #undef SIZEOF_LONG_LONG */
+
+/* The size of a `short', as computed by sizeof. */
+/* #undef SIZEOF_SHORT */
+
+/* The size of a `size_t', as computed by sizeof. */
+/* #undef SIZEOF_SIZE_T */
+
+/* The size of a `unsigned char', as computed by sizeof. */
+/* #undef SIZEOF_UNSIGNED_CHAR */
+
+/* The size of a `unsigned int', as computed by sizeof. */
+/* #undef SIZEOF_UNSIGNED_INT */
+
+/* The size of a `unsigned long', as computed by sizeof. */
+/* #undef SIZEOF_UNSIGNED_LONG */
+
+/* The size of a `unsigned long long', as computed by sizeof. */
+/* #undef SIZEOF_UNSIGNED_LONG_LONG */
+
+/* The size of a `unsigned short', as computed by sizeof. */
+/* #undef SIZEOF_UNSIGNED_SHORT */
+
/* Define to 1 if the `S_IS*' macros in <sys/stat.h> do not work properly. */
/* #undef STAT_MACROS_BROKEN */
@@ -457,5 +546,11 @@
/* Define to empty if `const' does not conform to ANSI C. */
/* #undef const */
-#include "clib_port.h"
-#include "vxWorks.h"
+/* Define to `__inline__' or `__inline' if that's what the C compiler
+ calls it, or to nothing if 'inline' is not supported under any name. */
+#ifndef __cplusplus
+#define inline
+#endif
+
+/* type to use in place of socklen_t if not defined */
+/* #undef socklen_t */
diff --git a/db/dist/vx_setup/LICENSE.TXT b/db/dist/vx_setup/LICENSE.TXT
index 7a7fe62bc..c219109c8 100644
--- a/db/dist/vx_setup/LICENSE.TXT
+++ b/db/dist/vx_setup/LICENSE.TXT
@@ -1,3 +1,2 @@
-Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+Copyright (c) 1996,2007 Oracle. All rights reserved.
See the file LICENSE for redistribution information.
diff --git a/db/dist/vx_setup/README.in b/db/dist/vx_setup/README.in
index c8cefacad..1b5312a09 100644
--- a/db/dist/vx_setup/README.in
+++ b/db/dist/vx_setup/README.in
@@ -1,7 +1,5 @@
-README.TXT: Oracle Corporation Berkeley DB @DB_VERSION_MAJOR@.@DB_VERSION_MINOR@ Release v@DB_VERSION_MAJOR@.@DB_VERSION_MINOR@.@DB_VERSION_PATCH@
+README.TXT: Oracle Berkeley DB @DB_VERSION_MAJOR@.@DB_VERSION_MINOR@ Release v@DB_VERSION_MAJOR@.@DB_VERSION_MINOR@.@DB_VERSION_PATCH@
Information on known problems, changes introduced with the
current revision of the CD-ROM, and other product bulletins
-can be obtained from the Oracle Corporation web site:
-
- http://www.sleepycat.com/
+can be obtained from the Oracle web site.
diff --git a/db/dist/vx_setup/vx_setup.in b/db/dist/vx_setup/vx_setup.in
index 24fbabc86..c1fc8dfc4 100644
--- a/db/dist/vx_setup/vx_setup.in
+++ b/db/dist/vx_setup/vx_setup.in
@@ -1,8 +1,8 @@
-Oracle Corporation BerkeleyDB @DB_VERSION_MAJOR@.@DB_VERSION_MINOR@.@DB_VERSION_PATCH@
+Oracle BerkeleyDB @DB_VERSION_MAJOR@.@DB_VERSION_MINOR@.@DB_VERSION_PATCH@
db@DB_VERSION_MAJOR@.@DB_VERSION_MINOR@.@DB_VERSION_PATCH@ demo-db@DB_VERSION_MAJOR@.@DB_VERSION_MINOR@.@DB_VERSION_PATCH@
BerkeleyDB.@DB_VERSION_MAJOR@.@DB_VERSION_MINOR@.@DB_VERSION_PATCH@
@DB_SETUP_DIR@
-Oracle Corporation BerkeleyDB @DB_VERSION_MAJOR@.@DB_VERSION_MINOR@.@DB_VERSION_PATCH@
+Oracle BerkeleyDB @DB_VERSION_MAJOR@.@DB_VERSION_MINOR@.@DB_VERSION_PATCH@
db@DB_VERSION_MAJOR@.@DB_VERSION_MINOR@.@DB_VERSION_PATCH@
@DB_SETUP_DIR@/filelist.all
BerkeleyDB.@DB_VERSION_MAJOR@.@DB_VERSION_MINOR@.@DB_VERSION_PATCH@-Demo
@@ -10,4 +10,4 @@ BerkeleyDB.@DB_VERSION_MAJOR@.@DB_VERSION_MINOR@.@DB_VERSION_PATCH@-Demo
BerkeleyDB @DB_VERSION_MAJOR@.@DB_VERSION_MINOR@.@DB_VERSION_PATCH@ Demo program
demo-db@DB_VERSION_MAJOR@.@DB_VERSION_MINOR@.@DB_VERSION_PATCH@
@DB_SETUP_DIR@/filelist.demo
-Oracle Corporation BerkeleyDB @DB_VERSION_MAJOR@.@DB_VERSION_MINOR@.@DB_VERSION_PATCH@
+Oracle BerkeleyDB @DB_VERSION_MAJOR@.@DB_VERSION_MINOR@.@DB_VERSION_PATCH@
diff --git a/db/dist/win_config.in b/db/dist/win_config.in
index 809b73b8e..07706fccc 100644
--- a/db/dist/win_config.in
+++ b/db/dist/win_config.in
@@ -35,6 +35,12 @@
/* Define to 1 if you have the `atol' function. */
#define HAVE_ATOL 1
+/* Define to 1 if building BREW. */
+/* #undef HAVE_BREW */
+
+/* Define to 1 if building on BREW (SDK2). */
+/* #undef HAVE_BREW_SDK2 */
+
/* Define to 1 if you have the `clock_gettime' function. */
/* #undef HAVE_CLOCK_GETTIME */
@@ -65,6 +71,9 @@
/* Define to 1 if you have the `fchmod' function. */
/* #undef HAVE_FCHMOD */
+/* Define to 1 if you have the `fclose' function. */
+#define HAVE_FCLOSE 1
+
/* Define to 1 if you have the `fcntl' function. */
/* #undef HAVE_FCNTL */
@@ -74,12 +83,27 @@
/* Define to 1 if you have the `fdatasync' function. */
/* #undef HAVE_FDATASYNC */
+/* Define to 1 if you have the `fgetc' function. */
+#define HAVE_FGETC 1
+
+/* Define to 1 if you have the `fgets' function. */
+#define HAVE_FGETS 1
+
/* Define to 1 if allocated filesystem blocks are not zeroed. */
#define HAVE_FILESYSTEM_NOTZERO 1
+/* Define to 1 to build Berkeley DB with a fine-grained lock manager. */
+/* #undef HAVE_FINE_GRAINED_LOCK_MANAGER */
+
+/* Define to 1 if you have the `fopen' function. */
+#define HAVE_FOPEN 1
+
/* Define to 1 if you have the `ftruncate' function. */
#define HAVE_FTRUNCATE 1
+/* Define to 1 if you have the `fwrite' function. */
+#define HAVE_FWRITE 1
+
/* Define to 1 if you have the `getaddrinfo' function. */
/* #undef HAVE_GETADDRINFO */
@@ -110,6 +134,9 @@
#define HAVE_HASH 1
#endif
+/* Define to 1 if you have the `hstrerror' function. */
+/* #undef HAVE_HSTRERROR */
+
/* Define to 1 if you have the <inttypes.h> header file. */
/* #undef HAVE_INTTYPES_H */
@@ -122,6 +149,9 @@
/* Define to 1 if you have the `isprint' function. */
#define HAVE_ISPRINT 1
+/* Define to 1 if you have the `localtime' function. */
+#define HAVE_LOCALTIME 1
+
/* Define to 1 if you have the `isspace' function. */
#define HAVE_ISSPACE 1
@@ -177,6 +207,9 @@
/* Define to 1 to use the msem_XXX mutexes on HP-UX. */
/* #undef HAVE_MUTEX_HPPA_MSEM_INIT */
+/* Define to 1 to use test-and-set mutexes with blocking mutexes. */
+/* #undef HAVE_MUTEX_HYBRID */
+
/* Define to 1 to use the GCC compiler and IA64 assembly language mutexes. */
/* #undef HAVE_MUTEX_IA64_GCC_ASSEMBLY */
@@ -221,6 +254,9 @@
/* Define to 1 to use the GCC compiler and Sparc assembly language mutexes. */
/* #undef HAVE_MUTEX_SPARC_GCC_ASSEMBLY */
+/* Define to 1 if the Berkeley DB library should support mutexes. */
+#define HAVE_MUTEX_SUPPORT 1
+
/* Define to 1 if mutexes hold system resources. */
/* #undef HAVE_MUTEX_SYSTEM_RESOURCES */
@@ -248,10 +284,12 @@
/* Define to 1 to use the GCC compiler and Windows mutexes. */
/* #undef HAVE_MUTEX_WIN32_GCC */
-/* Define to 1 to use the GCC compiler and amd64 assembly language mutexes. */
+/* Define to 1 to use the GCC compiler and 64-bit x86 assembly language
+ mutexes. */
/* #undef HAVE_MUTEX_X86_64_GCC_ASSEMBLY */
-/* Define to 1 to use the GCC compiler and x86 assembly language mutexes. */
+/* Define to 1 to use the GCC compiler and 32-bit x86 assembly language
+ mutexes. */
/* #undef HAVE_MUTEX_X86_GCC_ASSEMBLY */
/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
@@ -281,6 +319,9 @@
/* Define to 1 if building on QNX. */
/* #undef HAVE_QNX */
+/* Define to 1 if you have the `qsort' function. */
+#define HAVE_QSORT 1
+
/* Define to 1 if building Queue access method. */
#ifndef HAVE_SMALLBUILD
#define HAVE_QUEUE 1
@@ -305,6 +346,9 @@
/* Define to 1 if building RPC client/server. */
/* #undef HAVE_RPC */
+/* Define to 1 if building on S60. */
+/* #undef HAVE_S60 */
+
/* Define to 1 if you have the `sched_yield' function. */
/* #undef HAVE_SCHED_YIELD */
@@ -336,7 +380,7 @@
#define HAVE_STDLIB_H 1
/* Define to 1 if you have the `strcasecmp' function. */
-/* #undef HAVE_STRCASECMP */
+#define HAVE_STRCASECMP 1
/* Define to 1 if you have the `strcat' function. */
#define HAVE_STRCAT 1
@@ -383,13 +427,13 @@
/* Define to 1 if you have the `sysconf' function. */
/* #undef HAVE_SYSCONF */
+/* Define to 1 if port includes files in the Berkeley DB source code. */
+/* #undef HAVE_SYSTEM_INCLUDE_FILES */
+
/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
*/
/* #undef HAVE_SYS_DIR_H */
-/* Define to 1 if you have the <sys/fcntl.h> header file. */
-#define HAVE_SYS_FCNTL_H 1
-
/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
*/
/* #undef HAVE_SYS_NDIR_H */
@@ -397,6 +441,9 @@
/* Define to 1 if you have the <sys/select.h> header file. */
/* #undef HAVE_SYS_SELECT_H */
+/* Define to 1 if you have the <sys/socket.h> header file. */
+/* #undef HAVE_SYS_SOCKET_H */
+
/* Define to 1 if you have the <sys/stat.h> header file. */
#define HAVE_SYS_STAT_H 1
@@ -406,12 +453,18 @@
/* Define to 1 if you have the <sys/types.h> header file. */
#define HAVE_SYS_TYPES_H 1
+/* Define to 1 if you have the `time' function. */
+#define HAVE_TIME 1
+
/* Define to 1 if you have the <unistd.h> header file. */
/* #undef HAVE_UNISTD_H */
/* Define to 1 if unlink of file with open file descriptors will fail. */
/* #undef HAVE_UNLINK_WITH_OPEN_FAILURE */
+/* Define to 1 if port includes historic database upgrade support. */
+#define HAVE_UPGRADE_SUPPORT 1
+
/* Define to 1 if building access method verification support. */
#ifndef HAVE_SMALLBUILD
#define HAVE_VERIFY 1
@@ -444,6 +497,42 @@
/* Define to the version of this package. */
#define PACKAGE_VERSION "__EDIT_DB_VERSION__"
+/* The size of a `char', as computed by sizeof. */
+/* #undef SIZEOF_CHAR */
+
+/* The size of a `char *', as computed by sizeof. */
+/* #undef SIZEOF_CHAR_P */
+
+/* The size of a `int', as computed by sizeof. */
+/* #undef SIZEOF_INT */
+
+/* The size of a `long', as computed by sizeof. */
+/* #undef SIZEOF_LONG */
+
+/* The size of a `long long', as computed by sizeof. */
+/* #undef SIZEOF_LONG_LONG */
+
+/* The size of a `short', as computed by sizeof. */
+/* #undef SIZEOF_SHORT */
+
+/* The size of a `size_t', as computed by sizeof. */
+/* #undef SIZEOF_SIZE_T */
+
+/* The size of a `unsigned char', as computed by sizeof. */
+/* #undef SIZEOF_UNSIGNED_CHAR */
+
+/* The size of a `unsigned int', as computed by sizeof. */
+/* #undef SIZEOF_UNSIGNED_INT */
+
+/* The size of a `unsigned long', as computed by sizeof. */
+/* #undef SIZEOF_UNSIGNED_LONG */
+
+/* The size of a `unsigned long long', as computed by sizeof. */
+/* #undef SIZEOF_UNSIGNED_LONG_LONG */
+
+/* The size of a `unsigned short', as computed by sizeof. */
+/* #undef SIZEOF_UNSIGNED_SHORT */
+
/* Define to 1 if the `S_IS*' macros in <sys/stat.h> do not work properly. */
/* #undef STAT_MACROS_BROKEN */
@@ -465,14 +554,11 @@
/* Define to empty if `const' does not conform to ANSI C. */
/* #undef const */
-#include "clib_port.h"
-#include "win_db.h"
+/* Define to `__inline__' or `__inline' if that's what the C compiler
+ calls it, or to nothing if 'inline' is not supported under any name. */
+#ifndef __cplusplus
+#define inline __inline
+#endif
-/*
- * Microsoft's compiler _doesn't_ define __STDC__ unless you invoke it with
- * arguments turning OFF all vendor extensions. Even more unfortunately, if
- * we do that, it fails to parse windows.h!!!!! So, we define __STDC__ here,
- * after windows.h comes in. Note: the compiler knows we've defined it, and
- * starts enforcing strict ANSI compliance from this point on.
- */
-#define __STDC__ 1
+/* type to use in place of socklen_t if not defined */
+/* #undef socklen_t */
diff --git a/db/dist/win_db.in b/db/dist/win_db.in
deleted file mode 100644
index 7e0e6f15b..000000000
--- a/db/dist/win_db.in
+++ /dev/null
@@ -1,143 +0,0 @@
-/*-
- * $Id: win_db.in,v 12.19 2006/06/19 15:56:39 bostic Exp $
- *
- * The following provides the information necessary to build Berkeley
- * DB on native Windows, and other Windows environments such as MinGW.
- */
-
-/*
- * Avoid warnings with Visual Studio 8.
- */
-#define _CRT_SECURE_NO_DEPRECATE 1
-
-/*
- * Windows NT 4.0 and later required for the replication manager.
- */
-#ifdef HAVE_REPLICATION_THREADS
-#define _WIN32_WINNT 0x0400
-#endif
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/timeb.h>
-
-#include <direct.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <io.h>
-#include <limits.h>
-#include <memory.h>
-#include <process.h>
-#include <signal.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <tchar.h>
-#include <time.h>
-
-/*
- * To build Tcl interface libraries, the include path must be configured to
- * use the directory containing <tcl.h>, usually the include directory in
- * the Tcl distribution.
- */
-#ifdef DB_TCL_SUPPORT
-#include <tcl.h>
-#endif
-
-#define WIN32_LEAN_AND_MEAN
-#include <windows.h>
-#include <winsock2.h>
-
-#ifdef HAVE_GETADDRINFO
-/*
- * Need explicit includes for IPv6 support on Windows. Both are necessary to
- * ensure that pre WinXP versions have an implementation of the getaddrinfo API.
- */
-#include <ws2tcpip.h>
-#include <wspiapi.h>
-#endif
-
-/*
- * All of the necessary includes have been included, ignore the #includes
- * in the Berkeley DB source files.
- */
-#define NO_SYSTEM_INCLUDES
-
-/*
- * Microsoft's C runtime library has fsync, getcwd, getpid, snprintf and
- * vsnprintf, but under different names.
- */
-#define fsync _commit
-#define getcwd(buf, size) _getcwd(buf, size)
-#define getpid _getpid
-#define snprintf _snprintf
-#define vsnprintf _vsnprintf
-
-#define h_errno WSAGetLastError()
-
-/*
- * Windows defines off_t to long (i.e., 32 bits). We need to pass 64-bit
- * file offsets, so we declare our own.
- */
-#define off_t __db_off_t
-typedef __int64 off_t;
-
-/*
- * Win32 does not have getopt.
- *
- * The externs are here (instead of using db_config.h and clib_port.h),
- * because Berkeley DB example programs use getopt and they can't #include
- * those files.
- */
-#if defined(__cplusplus)
-extern "C" {
-#endif
-extern int getopt(int, char * const *, const char *);
-#if defined(__cplusplus)
-}
-#endif
-
-#ifdef _UNICODE
-#define TO_TSTRING(dbenv, s, ts, ret) do { \
- int __len = (int)strlen(s) + 1; \
- ts = NULL; \
- if ((ret = __os_malloc((dbenv), \
- __len * sizeof(_TCHAR), &(ts))) == 0 && \
- MultiByteToWideChar(CP_UTF8, 0, \
- (s), -1, (ts), __len) == 0) \
- ret = __os_posix_err(__os_get_syserr()); \
- } while (0)
-
-#define FROM_TSTRING(dbenv, ts, s, ret) { \
- int __len = WideCharToMultiByte(CP_UTF8, 0, ts, -1, \
- NULL, 0, NULL, NULL); \
- s = NULL; \
- if ((ret = __os_malloc((dbenv), __len, &(s))) == 0 && \
- WideCharToMultiByte(CP_UTF8, 0, \
- (ts), -1, (s), __len, NULL, NULL) == 0) \
- ret = __os_posix_err(__os_get_syserr()); \
- } while (0)
-
-#define FREE_STRING(dbenv, s) do { \
- if ((s) != NULL) { \
- __os_free((dbenv), (s)); \
- (s) = NULL; \
- } \
- } while (0)
-
-#else
-#define TO_TSTRING(dbenv, s, ts, ret) (ret) = 0, (ts) = (_TCHAR *)(s)
-#define FROM_TSTRING(dbenv, ts, s, ret) (ret) = 0, (s) = (char *)(ts)
-#define FREE_STRING(dbenv, ts)
-#endif
-
-#ifndef INVALID_HANDLE_VALUE
-#define INVALID_HANDLE_VALUE ((HANDLE)-1)
-#endif
-
-#ifndef INVALID_FILE_ATTRIBUTES
-#define INVALID_FILE_ATTRIBUTES ((DWORD)-1)
-#endif
-
-#ifndef INVALID_SET_FILE_POINTER
-#define INVALID_SET_FILE_POINTER ((DWORD)-1)
-#endif
diff --git a/db/dist/win_exports.in b/db/dist/win_exports.in
index e1d3023d7..80d1f8a89 100644
--- a/db/dist/win_exports.in
+++ b/db/dist/win_exports.in
@@ -1,4 +1,4 @@
-# $Id: win_exports.in,v 12.20 2006/08/10 08:21:51 alexg Exp $
+# $Id: win_exports.in,v 12.26 2007/06/29 14:11:26 alexg Exp $
# Standard interfaces.
db_create
@@ -39,8 +39,8 @@
__db_ndbm_rdonly
__db_ndbm_store
__db_panic
- __db_r_attach
- __db_r_detach
+ __db_win32_mutex_lock
+ __db_win32_mutex_unlock
__ham_func2
__ham_func3
__ham_func4
@@ -52,6 +52,7 @@
__os_dirfree
__os_dirlist
__os_free
+ __os_fsync
__os_get_syserr
__os_getenv
__os_ioinfo
@@ -62,6 +63,7 @@
__os_posix_err
__os_read
__os_realloc
+ __os_rename
__os_strdup
__os_umalloc
__os_unlink
@@ -84,6 +86,7 @@
__bam_root_read
__bam_rsplit_read
__bam_split_read
+ __config_split
__crdel_inmem_create_read
__crdel_inmem_remove_read
__crdel_inmem_rename_read
@@ -155,9 +158,9 @@
__log_stat_pp
__mutex_set_wait_info
__os_abspath
- __os_clock
__os_exists
__os_get_errno
+ __os_gettime
__os_id
__os_mapfile
__os_seek
diff --git a/db/dist/wince_config.in b/db/dist/wince_config.in
new file mode 100644
index 000000000..91c043dc6
--- /dev/null
+++ b/db/dist/wince_config.in
@@ -0,0 +1,560 @@
+/* Define to 1 if you want to build a version for running the test suite. */
+/* #undef CONFIG_TEST */
+
+/* We use DB_WIN32 much as one would use _WIN32 -- to specify that we're using
+ an operating system environment that supports Win32 calls and semantics. We
+ don't use _WIN32 because Cygwin/GCC also defines _WIN32, even though
+ Cygwin/GCC closely emulates the Unix environment. */
+#define DB_WIN32 1
+
+/* Define to 1 if you want a debugging version. */
+#if defined(_DEBUG)
+#if !defined(DEBUG)
+#define DEBUG 1
+#endif
+#endif
+
+/* Define to 1 if you want a version that logs read operations. */
+/* #undef DEBUG_ROP */
+
+/* Define to 1 if you want a version that logs write operations. */
+/* #undef DEBUG_WOP */
+
+/* Define to 1 if you want a version with run-time diagnostic checking. */
+/* #undef DIAGNOSTIC */
+
+/* Define to 1 if 64-bit types are available. */
+#define HAVE_64BIT_TYPES 1
+
+/* Define to 1 if you have the `abort' function. */
+/* #undef HAVE_ABORT */
+
+/* Define to 1 if you have the `atoi' function. */
+#define HAVE_ATOI 1
+
+/* Define to 1 if you have the `atol' function. */
+#define HAVE_ATOL 1
+
+/* Define to 1 if building BREW. */
+/* #undef HAVE_BREW */
+
+/* Define to 1 if building on BREW (SDK2). */
+/* #undef HAVE_BREW_SDK2 */
+
+/* Define to 1 if you have the `clock_gettime' function. */
+/* #undef HAVE_CLOCK_GETTIME */
+
+/* Define to 1 if Berkeley DB release includes strong cryptography. */
+#ifndef HAVE_SMALLBUILD
+#define HAVE_CRYPTO 1
+#endif
+
+/* Define to 1 if you have the `ctime_r' function. */
+/* #undef HAVE_CTIME_R */
+
+/* Define to 1 if ctime_r takes a buffer length as a third argument. */
+/* #undef HAVE_CTIME_R_3ARG */
+
+/* Define to 1 if you have the `directio' function. */
+/* #undef HAVE_DIRECTIO */
+
+/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
+ */
+/* #undef HAVE_DIRENT_H */
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+/* #undef HAVE_DLFCN_H */
+
+/* Define to 1 if you have EXIT_SUCCESS/EXIT_FAILURE #defines. */
+#define HAVE_EXIT_SUCCESS 1
+
+/* Define to 1 if you have the `fchmod' function. */
+/* #undef HAVE_FCHMOD */
+
+/* Define to 1 if you have the `fclose' function. */
+#define HAVE_FCLOSE 1
+
+/* Define to 1 if you have the `fcntl' function. */
+/* #undef HAVE_FCNTL */
+
+/* Define to 1 if fcntl/F_SETFD denies child access to file descriptors. */
+/* #undef HAVE_FCNTL_F_SETFD */
+
+/* Define to 1 if you have the `fdatasync' function. */
+/* #undef HAVE_FDATASYNC */
+
+/* Define to 1 if you have the `fgetc' function. */
+#define HAVE_FGETC 1
+
+/* Define to 1 if you have the `fgets' function. */
+#define HAVE_FGETS 1
+
+/* Define to 1 if allocated filesystem blocks are not zeroed. */
+#define HAVE_FILESYSTEM_NOTZERO 1
+
+/* Define to 1 to build Berkeley DB with a fine-grained lock manager. */
+/* #undef HAVE_FINE_GRAINED_LOCK_MANAGER */
+
+/* Define to 1 if you have the `fopen' function. */
+#define HAVE_FOPEN 1
+
+/* Define to 1 if you have the `ftruncate' function. */
+/* #undef HAVE_FTRUNCATE */
+
+/* Define to 1 if you have the `fwrite' function. */
+#define HAVE_FWRITE 1
+
+/* Define to 1 if you have the `getaddrinfo' function. */
+/* #undef HAVE_GETADDRINFO */
+
+/* Define to 1 if you have the `getcwd' function. */
+/* #undef HAVE_GETCWD */
+
+/* Define to 1 if you have the `getenv' function. */
+/* #undef HAVE_GETENV */
+
+/* Define to 1 if you have the `getopt' function. */
+/*
+ * Windows does not have the getopt function, but as Berkeley DB example
+ * programs require getopt, we handle it outside of this configuration.
+ */
+#define HAVE_GETOPT 1
+
+/* Define to 1 if you have the `getrusage' function. */
+/* #undef HAVE_GETRUSAGE */
+
+/* Define to 1 if you have the `gettimeofday' function. */
+/* #undef HAVE_GETTIMEOFDAY */
+
+/* Define to 1 if you have the `getuid' function. */
+/* #undef HAVE_GETUID */
+
+/* Define to 1 if building Hash access method. */
+#ifndef HAVE_SMALLBUILD
+#define HAVE_HASH 1
+#endif
+
+/* Define to 1 if you have the `hstrerror' function. */
+/* #undef HAVE_HSTRERROR */
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+/* #undef HAVE_INTTYPES_H */
+
+/* Define to 1 if you have the `isalpha' function. */
+#define HAVE_ISALPHA 1
+
+/* Define to 1 if you have the `isdigit' function. */
+#define HAVE_ISDIGIT 1
+
+/* Define to 1 if you have the `isprint' function. */
+#define HAVE_ISPRINT 1
+
+/* Define to 1 if you have the `localtime' function. */
+/* #undef HAVE_LOCALTIME */
+
+/* Define to 1 if you have the `isspace' function. */
+#define HAVE_ISSPACE 1
+
+/* Define to 1 if you have the `memcmp' function. */
+#define HAVE_MEMCMP 1
+
+/* Define to 1 if you have the `memcpy' function. */
+#define HAVE_MEMCPY 1
+
+/* Define to 1 if you have the `memmove' function. */
+#define HAVE_MEMMOVE 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have the `mlock' function. */
+/* #undef HAVE_MLOCK */
+
+/* Define to 1 if you have the `mmap' function. */
+/* #undef HAVE_MMAP */
+
+/* Define to 1 if you have the `mprotect' function. */
+/* #undef HAVE_MPROTECT */
+
+/* Define to 1 if you have the `munlock' function. */
+/* #undef HAVE_MUNLOCK */
+
+/* Define to 1 if you have the `munmap' function. */
+/* #undef HAVE_MUNMAP */
+
+/* Define to 1 to use the GCC compiler and 68K assembly language mutexes. */
+/* #undef HAVE_MUTEX_68K_GCC_ASSEMBLY */
+
+/* Define to 1 to use the AIX _check_lock mutexes. */
+/* #undef HAVE_MUTEX_AIX_CHECK_LOCK */
+
+/* Define to 1 to use the GCC compiler and Alpha assembly language mutexes. */
+/* #undef HAVE_MUTEX_ALPHA_GCC_ASSEMBLY */
+
+/* Define to 1 to use the GCC compiler and ARM assembly language mutexes. */
+/* #undef HAVE_MUTEX_ARM_GCC_ASSEMBLY */
+
+/* Define to 1 to use the Apple/Darwin _spin_lock_try mutexes. */
+/* #undef HAVE_MUTEX_DARWIN_SPIN_LOCK_TRY */
+
+/* Define to 1 to use the UNIX fcntl system call mutexes. */
+/* #undef HAVE_MUTEX_FCNTL */
+
+/* Define to 1 to use the GCC compiler and PaRisc assembly language mutexes.
+ */
+/* #undef HAVE_MUTEX_HPPA_GCC_ASSEMBLY */
+
+/* Define to 1 to use the msem_XXX mutexes on HP-UX. */
+/* #undef HAVE_MUTEX_HPPA_MSEM_INIT */
+
+/* Define to 1 to use test-and-set mutexes with blocking mutexes. */
+/* #undef HAVE_MUTEX_HYBRID */
+
+/* Define to 1 to use the GCC compiler and IA64 assembly language mutexes. */
+/* #undef HAVE_MUTEX_IA64_GCC_ASSEMBLY */
+
+/* Define to 1 to use the GCC compiler and MIPS assembly language mutexes. */
+/* #undef HAVE_MUTEX_MIPS_GCC_ASSEMBLY */
+
+/* Define to 1 to use the msem_XXX mutexes on systems other than HP-UX. */
+/* #undef HAVE_MUTEX_MSEM_INIT */
+
+/* Define to 1 to use the GCC compiler and PowerPC assembly language mutexes.
+ */
+/* #undef HAVE_MUTEX_PPC_GCC_ASSEMBLY */
+
+/* Define to 1 to use POSIX 1003.1 pthread_XXX mutexes. */
+/* #undef HAVE_MUTEX_PTHREADS */
+
+/* Define to 1 to use Reliant UNIX initspin mutexes. */
+/* #undef HAVE_MUTEX_RELIANTUNIX_INITSPIN */
+
+/* Define to 1 to use the IBM C compiler and S/390 assembly language mutexes.
+ */
+/* #undef HAVE_MUTEX_S390_CC_ASSEMBLY */
+
+/* Define to 1 to use the GCC compiler and S/390 assembly language mutexes. */
+/* #undef HAVE_MUTEX_S390_GCC_ASSEMBLY */
+
+/* Define to 1 to use the SCO compiler and x86 assembly language mutexes. */
+/* #undef HAVE_MUTEX_SCO_X86_CC_ASSEMBLY */
+
+/* Define to 1 to use the obsolete POSIX 1003.1 sema_XXX mutexes. */
+/* #undef HAVE_MUTEX_SEMA_INIT */
+
+/* Define to 1 to use the SGI XXX_lock mutexes. */
+/* #undef HAVE_MUTEX_SGI_INIT_LOCK */
+
+/* Define to 1 to use the Solaris _lock_XXX mutexes. */
+/* #undef HAVE_MUTEX_SOLARIS_LOCK_TRY */
+
+/* Define to 1 to use the Solaris lwp threads mutexes. */
+/* #undef HAVE_MUTEX_SOLARIS_LWP */
+
+/* Define to 1 to use the GCC compiler and Sparc assembly language mutexes. */
+/* #undef HAVE_MUTEX_SPARC_GCC_ASSEMBLY */
+
+/* Define to 1 if the Berkeley DB library should support mutexes. */
+#define HAVE_MUTEX_SUPPORT 1
+
+/* Define to 1 if mutexes hold system resources. */
+/* #undef HAVE_MUTEX_SYSTEM_RESOURCES */
+
+/* Define to 1 to configure mutexes intra-process only. */
+/* #undef HAVE_MUTEX_THREAD_ONLY */
+
+/* Define to 1 to use the CC compiler and Tru64 assembly language mutexes. */
+/* #undef HAVE_MUTEX_TRU64_CC_ASSEMBLY */
+
+/* Define to 1 to use the UNIX International mutexes. */
+/* #undef HAVE_MUTEX_UI_THREADS */
+
+/* Define to 1 to use the UTS compiler and assembly language mutexes. */
+/* #undef HAVE_MUTEX_UTS_CC_ASSEMBLY */
+
+/* Define to 1 to use VMS mutexes. */
+/* #undef HAVE_MUTEX_VMS */
+
+/* Define to 1 to use VxWorks mutexes. */
+/* #undef HAVE_MUTEX_VXWORKS */
+
+/* Define to 1 to use the MSVC compiler and Windows mutexes. */
+#define HAVE_MUTEX_WIN32 1
+
+/* Define to 1 to use the GCC compiler and Windows mutexes. */
+/* #undef HAVE_MUTEX_WIN32_GCC */
+
+/* Define to 1 to use the GCC compiler and 64-bit x86 assembly language
+ mutexes. */
+/* #undef HAVE_MUTEX_X86_64_GCC_ASSEMBLY */
+
+/* Define to 1 to use the GCC compiler and 32-bit x86 assembly language
+ mutexes. */
+/* #undef HAVE_MUTEX_X86_GCC_ASSEMBLY */
+
+/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
+/* #undef HAVE_NDIR_H */
+
+/* Define to 1 if you have the O_DIRECT flag. */
+/* #undef HAVE_O_DIRECT */
+
+/* Define to 1 if you have the `pread' function. */
+/* #undef HAVE_PREAD */
+
+/* Define to 1 if you have the `printf' function. */
+#define HAVE_PRINTF 1
+
+/* Define to 1 if you have the `pstat_getdynamic' function. */
+/* #undef HAVE_PSTAT_GETDYNAMIC */
+
+/* Define to 1 to configure Berkeley DB for POSIX pthread API. */
+/* #undef HAVE_PTHREAD_API */
+
+/* Define to 1 if you have the `pthread_yield' function. */
+/* #undef HAVE_PTHREAD_YIELD */
+
+/* Define to 1 if you have the `pwrite' function. */
+/* #undef HAVE_PWRITE */
+
+/* Define to 1 if building on QNX. */
+/* #undef HAVE_QNX */
+
+/* Define to 1 if you have the `qsort' function. */
+#define HAVE_QSORT 1
+
+/* Define to 1 if building Queue access method. */
+#ifndef HAVE_SMALLBUILD
+#define HAVE_QUEUE 1
+#endif
+
+/* Define to 1 if you have the `raise' function. */
+#define HAVE_RAISE 1
+
+/* Define to 1 if you have the `rand' function. */
+#define HAVE_RAND 1
+
+/* Define to 1 if building replication support. */
+/* #undef HAVE_REPLICATION */
+
+/* Define to 1 if building the Berkeley DB replication framework. */
+/* #undef HAVE_REPLICATION_THREADS */
+
+/* Define to 1 if building RPC client/server. */
+/* #undef HAVE_RPC */
+
+/* Define to 1 if building on S60. */
+/* #undef HAVE_S60 */
+
+/* Define to 1 if you have the `sched_yield' function. */
+/* #undef HAVE_SCHED_YIELD */
+
+/* Define to 1 if you have the `select' function. */
+/* #undef HAVE_SELECT */
+
+/* Define to 1 if you have the `shmget' function. */
+/* #undef HAVE_SHMGET */
+
+/* Define to 1 if you have the `sigaction' function. */
+/* #undef HAVE_SIGACTION */
+
+/* Define to 1 if thread identifier type db_threadid_t is integral. */
+#define HAVE_SIMPLE_THREAD_TYPE 1
+
+/* Define to 1 if you have the `snprintf' function. */
+#define HAVE_SNPRINTF 1
+
+/* Define to 1 if you have the `stat' function. */
+#define HAVE_STAT 1
+
+/* Define to 1 if building statistics support. */
+#define HAVE_STATISTICS 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+/* #undef HAVE_STDINT_H */
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the `strcasecmp' function. */
+#define HAVE_STRCASECMP 1
+
+/* Define to 1 if you have the `strcat' function. */
+#define HAVE_STRCAT 1
+
+/* Define to 1 if you have the `strchr' function. */
+#define HAVE_STRCHR 1
+
+/* Define to 1 if you have the `strdup' function. */
+/* #undef HAVE_STRDUP */
+
+/* Define to 1 if you have the `strerror' function. */
+/* #undef HAVE_STRERROR */
+
+/* Define to 1 if you have the `strftime' function. */
+/* #undef HAVE_STRFTIME */
+
+/* Define to 1 if you have the <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the `strncat' function. */
+#define HAVE_STRNCAT 1
+
+/* Define to 1 if you have the `strncmp' function. */
+#define HAVE_STRNCMP 1
+
+/* Define to 1 if you have the `strrchr' function. */
+#define HAVE_STRRCHR 1
+
+/* Define to 1 if you have the `strsep' function. */
+/* #undef HAVE_STRSEP */
+
+/* Define to 1 if you have the `strtol' function. */
+#define HAVE_STRTOL 1
+
+/* Define to 1 if you have the `strtoul' function. */
+#define HAVE_STRTOUL 1
+
+/* Define to 1 if `st_blksize' is member of `struct stat'. */
+/* #undef HAVE_STRUCT_STAT_ST_BLKSIZE */
+
+/* Define to 1 if you have the `sysconf' function. */
+/* #undef HAVE_SYSCONF */
+
+/* Define to 1 if port includes files in the Berkeley DB source code. */
+/* #undef HAVE_SYSTEM_INCLUDE_FILES */
+
+/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
+ */
+/* #undef HAVE_SYS_DIR_H */
+
+/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
+ */
+/* #undef HAVE_SYS_NDIR_H */
+
+/* Define to 1 if you have the <sys/select.h> header file. */
+/* #undef HAVE_SYS_SELECT_H */
+
+/* Define to 1 if you have the <sys/socket.h> header file. */
+/* #undef HAVE_SYS_SOCKET_H */
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+/* #undef HAVE_SYS_TIME_H */
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the `time' function. */
+/* #undef HAVE_TIME */
+
+/* Define to 1 if you have the <unistd.h> header file. */
+/* #undef HAVE_UNISTD_H */
+
+/* Define to 1 if unlink of file with open file descriptors will fail. */
+/* #undef HAVE_UNLINK_WITH_OPEN_FAILURE */
+
+/* Define to 1 if port includes historic database upgrade support. */
+/* #undef HAVE_UPGRADE_SUPPORT */
+
+/* Define to 1 if building access method verification support. */
+#ifndef HAVE_SMALLBUILD
+#define HAVE_VERIFY 1
+#endif
+
+/* Define to 1 if you have the `vsnprintf' function. */
+#define HAVE_VSNPRINTF 1
+
+/* Define to 1 if building VxWorks. */
+/* #undef HAVE_VXWORKS */
+
+/* Define to 1 if you have the `yield' function. */
+/* #undef HAVE_YIELD */
+
+/* Define to 1 if you have the `_fstati64' function. */
+#define HAVE__FSTATI64 1
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "Oracle Technology Network Berkeley DB forum"
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "Berkeley DB"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "Berkeley DB __EDIT_DB_VERSION__"
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME "db-__EDIT_DB_VERSION__"
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "__EDIT_DB_VERSION__"
+
+/* The size of a `char', as computed by sizeof. */
+/* #undef SIZEOF_CHAR */
+
+/* The size of a `char *', as computed by sizeof. */
+/* #undef SIZEOF_CHAR_P */
+
+/* The size of a `int', as computed by sizeof. */
+/* #undef SIZEOF_INT */
+
+/* The size of a `long', as computed by sizeof. */
+/* #undef SIZEOF_LONG */
+
+/* The size of a `long long', as computed by sizeof. */
+/* #undef SIZEOF_LONG_LONG */
+
+/* The size of a `short', as computed by sizeof. */
+/* #undef SIZEOF_SHORT */
+
+/* The size of a `size_t', as computed by sizeof. */
+/* #undef SIZEOF_SIZE_T */
+
+/* The size of a `unsigned char', as computed by sizeof. */
+/* #undef SIZEOF_UNSIGNED_CHAR */
+
+/* The size of a `unsigned int', as computed by sizeof. */
+/* #undef SIZEOF_UNSIGNED_INT */
+
+/* The size of a `unsigned long', as computed by sizeof. */
+/* #undef SIZEOF_UNSIGNED_LONG */
+
+/* The size of a `unsigned long long', as computed by sizeof. */
+/* #undef SIZEOF_UNSIGNED_LONG_LONG */
+
+/* The size of a `unsigned short', as computed by sizeof. */
+/* #undef SIZEOF_UNSIGNED_SHORT */
+
+/* Define to 1 if the `S_IS*' macros in <sys/stat.h> do not work properly. */
+/* #undef STAT_MACROS_BROKEN */
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
+/* #undef TIME_WITH_SYS_TIME */
+
+/* Define to 1 to mask harmless uninitialized memory read/writes. */
+/* #undef UMRW */
+
+/* Number of bits in a file offset, on hosts where this is settable. */
+/* #undef _FILE_OFFSET_BITS */
+
+/* Define for large files, on AIX-style hosts. */
+/* #undef _LARGE_FILES */
+
+/* Define to empty if `const' does not conform to ANSI C. */
+/* #undef const */
+
+/* Define to `__inline__' or `__inline' if that's what the C compiler
+ calls it, or to nothing if 'inline' is not supported under any name. */
+#ifndef __cplusplus
+#define inline __inline
+#endif
+
+/* type to use in place of socklen_t if not defined */
+/* #undef socklen_t */
diff --git a/db/dist/winmsi/files.in b/db/dist/winmsi/files.in
index 82bcbcdd2..03f163c0a 100644
--- a/db/dist/winmsi/files.in
+++ b/db/dist/winmsi/files.in
@@ -1,4 +1,4 @@
-# $Id: files.in,v 1.10 2006/09/14 15:50:50 mjc Exp $
+# $Id: files.in,v 1.11 2007/02/16 04:50:44 alexg Exp $
# Lists files needed to install particular
# features in Windows. Feature names must be
# listed in features.in .
@@ -49,6 +49,7 @@ CoreTools build_windows/Release/db_archive.exe /bin/ db_arc~1.exe
CoreTools build_windows/Release/db_checkpoint.exe /bin/ db_che~1.exe
CoreTools build_windows/Release/db_deadlock.exe /bin/ db_dea~1.exe
CoreTools build_windows/Release/db_dump.exe /bin/ db_dump.exe
+CoreTools build_windows/Release/db_hotbackup.exe /bin/ db_hot~1.exe
CoreTools build_windows/Release/db_load.exe /bin/ db_load.exe
CoreTools build_windows/Release/db_printlog.exe /bin/ db_pri~1.exe
CoreTools build_windows/Release/db_recover.exe /bin/ db_rec~1.exe
diff --git a/db/docs/.cvsignore b/db/docs/.cvsignore
new file mode 100644
index 000000000..c248967cb
--- /dev/null
+++ b/db/docs/.cvsignore
@@ -0,0 +1,9 @@
+api_c
+api_cxx
+api_tcl
+images
+index.html
+java
+license
+ref
+utility
diff --git a/db/docs/api_c/api_core.html b/db/docs/api_c/api_core.html
index a9049d318..9a143f320 100644
--- a/db/docs/api_c/api_core.html
+++ b/db/docs/api_c/api_core.html
@@ -1,15 +1,14 @@
<!--DO NOT EDIT: automatically built by build script.-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
-<title>Berkeley DB: Berkeley DB: C Handle Methods (version 4.5.20)</title>
+<title>Berkeley DB: Berkeley DB: C Handle Methods (version 4.6.18)</title>
<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
</head>
<body bgcolor=white>
-<h3 align=center>Berkeley DB: C Handle Methods (version 4.5.20)</h3>
+<h3 align=center>Berkeley DB: C Handle Methods (version 4.6.18)</h3>
<table border=1 align=center>
<tr><th>C Handle Methods</th><th>Description</th></tr>
<!--Db::--><tr><td><a href="../api_c/db_class.html">db_create</a></td><td>Create a database handle</td></tr>
@@ -19,6 +18,7 @@
<!--Db::cursor--><tr><td><a href="../api_c/db_cursor.html">DB-&gt;cursor</a></td><td>Create a cursor</td></tr>
<!--Db::del--><tr><td><a href="../api_c/db_del.html">DB-&gt;del</a></td><td>Delete items from a database</td></tr>
<!--Db::err--><tr><td><a href="../api_c/db_err.html">DB-&gt;err</a>, <a href="../api_c/db_err.html">DB-&gt;errx</a></td><td>Error message</td></tr>
+<!--Db::exists--><tr><td><a href="../api_c/db_exists.html">DB-&gt;exists</a></td><td>Return if an item appears in a database</td></tr>
<!--Db::fd--><tr><td><a href="../api_c/db_fd.html">DB-&gt;fd</a></td><td>Return a file descriptor from a database</td></tr>
<!--Db::get--><tr><td><a href="../api_c/db_get.html">DB-&gt;get</a>, <a href="../api_c/db_get.html">DB-&gt;pget</a></td><td>Get items from a database</td></tr>
<!--Db::get_byteswapped--><tr><td><a href="../api_c/db_get_byteswapped.html">DB-&gt;get_byteswapped</a></td><td>Return if the underlying database is in host order</td></tr>
@@ -45,11 +45,13 @@
<!--Db::set_errpfx--><tr><td><a href="../api_c/db_set_errpfx.html">DB-&gt;set_errpfx</a></td><td>Set error message prefix</td></tr>
<!--Db::set_feedback--><tr><td><a href="../api_c/db_set_feedback.html">DB-&gt;set_feedback</a></td><td>Set feedback callback</td></tr>
<!--Db::set_flags--><tr><td><a href="../api_c/db_set_flags.html">DB-&gt;set_flags</a></td><td>General database configuration</td></tr>
+<!--Db::set_h_compare--><tr><td><a href="../api_c/db_set_h_compare.html">DB-&gt;set_h_compare</a></td><td>Set a Hash comparison function</td></tr>
<!--Db::set_h_ffactor--><tr><td><a href="../api_c/db_set_h_ffactor.html">DB-&gt;set_h_ffactor</a></td><td>Set the Hash table density</td></tr>
<!--Db::set_h_hash--><tr><td><a href="../api_c/db_set_h_hash.html">DB-&gt;set_h_hash</a></td><td>Set a hashing function</td></tr>
<!--Db::set_h_nelem--><tr><td><a href="../api_c/db_set_h_nelem.html">DB-&gt;set_h_nelem</a></td><td>Set the Hash table size</td></tr>
<!--Db::set_lorder--><tr><td><a href="../api_c/db_set_lorder.html">DB-&gt;set_lorder</a></td><td>Set the database byte order</td></tr>
<!--Db::set_pagesize--><tr><td><a href="../api_c/db_set_pagesize.html">DB-&gt;set_pagesize</a></td><td>Set the underlying database page size</td></tr>
+<!--Db::set_priority--><tr><td><a href="../api_c/db_set_priority.html">DB-&gt;set_priority</a></td><td>Set cache page priority</td></tr>
<!--Db::set_q_extentsize--><tr><td><a href="../api_c/db_set_q_extentsize.html">DB-&gt;set_q_extentsize</a></td><td>Set Queue database extent size</td></tr>
<!--Db::set_re_delim--><tr><td><a href="../api_c/db_set_re_delim.html">DB-&gt;set_re_delim</a></td><td>Set the variable-length record delimiter</td></tr>
<!--Db::set_re_len--><tr><td><a href="../api_c/db_set_re_len.html">DB-&gt;set_re_len</a></td><td>Set the fixed-length record length</td></tr>
@@ -60,12 +62,13 @@
<!--Db::truncate--><tr><td><a href="../api_c/db_truncate.html">DB-&gt;truncate</a></td><td>Empty a database</td></tr>
<!--Db::upgrade--><tr><td><a href="../api_c/db_upgrade.html">DB-&gt;upgrade</a></td><td>Upgrade a database</td></tr>
<!--Db::verify--><tr><td><a href="../api_c/db_verify.html">DB-&gt;verify</a></td><td>Verify/salvage a database</td></tr>
-<!--DbCursor::close--><tr><td><a href="../api_c/dbc_close.html">DBcursor-&gt;c_close</a></td><td>Close a cursor</td></tr>
-<!--DbCursor::count--><tr><td><a href="../api_c/dbc_count.html">DBcursor-&gt;c_count</a></td><td>Return count of duplicates</td></tr>
-<!--DbCursor::del--><tr><td><a href="../api_c/dbc_del.html">DBcursor-&gt;c_del</a></td><td>Delete by cursor</td></tr>
-<!--DbCursor::dup--><tr><td><a href="../api_c/dbc_dup.html">DBcursor-&gt;c_dup</a></td><td>Duplicate a cursor</td></tr>
-<!--DbCursor::get--><tr><td><a href="../api_c/dbc_get.html">DBcursor-&gt;c_get</a>, <a href="../api_c/dbc_get.html">DBcursor-&gt;c_pget</a></td><td>Retrieve by cursor</td></tr>
-<!--DbCursor::put--><tr><td><a href="../api_c/dbc_put.html">DBcursor-&gt;c_put</a></td><td>Store by cursor</td></tr>
+<!--DbCursor::close--><tr><td><a href="../api_c/dbc_close.html">DBcursor-&gt;close</a></td><td>Close a cursor</td></tr>
+<!--DbCursor::count--><tr><td><a href="../api_c/dbc_count.html">DBcursor-&gt;count</a></td><td>Return count of duplicates</td></tr>
+<!--DbCursor::del--><tr><td><a href="../api_c/dbc_del.html">DBcursor-&gt;del</a></td><td>Delete by cursor</td></tr>
+<!--DbCursor::dup--><tr><td><a href="../api_c/dbc_dup.html">DBcursor-&gt;dup</a></td><td>Duplicate a cursor</td></tr>
+<!--DbCursor::get--><tr><td><a href="../api_c/dbc_get.html">DBcursor-&gt;get</a>, <a href="../api_c/dbc_get.html">DBcursor-&gt;pget</a></td><td>Retrieve by cursor</td></tr>
+<!--DbCursor::put--><tr><td><a href="../api_c/dbc_put.html">DBcursor-&gt;put</a></td><td>Store by cursor</td></tr>
+<!--DbCursor::set_priority--><tr><td><a href="../api_c/dbc_set_priority.html">DBcursor-&gt;set_priority</a></td><td>Set the cursor's cache priority</td></tr>
<!--DbDeadlockException-->
<!--DbEnv::--><tr><td><a href="../api_c/env_class.html">db_env_create</a></td><td>Create an environment handle</td></tr>
<!--DbEnv::cdsgroup_begin--><tr><td><a href="../api_c/env_cdsgroup_begin.html">DB_ENV-&gt;cdsgroup_begin</a></td><td>Get a locker ID in Berkeley DB Concurrent Data Store</td></tr>
@@ -113,6 +116,7 @@
<!--DbEnv::rep_set_limit--><tr><td><a href="../api_c/rep_limit.html">DB_ENV-&gt;rep_set_limit</a></td><td>Limit data sent in response to a single message</td></tr>
<!--DbEnv::rep_set_nsites--><tr><td><a href="../api_c/rep_nsites.html">DB_ENV-&gt;rep_set_nsites</a></td><td>Configure replication group site count</td></tr>
<!--DbEnv::rep_set_priority--><tr><td><a href="../api_c/rep_priority.html">DB_ENV-&gt;rep_set_priority</a></td><td>Configure replication site priority</td></tr>
+<!--DbEnv::rep_set_request--><tr><td><a href="../api_c/rep_request.html">DB_ENV-&gt;rep_set_request</a></td><td>Configure replication client retransmission requests</td></tr>
<!--DbEnv::rep_set_timeout--><tr><td><a href="../api_c/rep_timeout.html">DB_ENV-&gt;rep_set_timeout</a></td><td>Configure replication timeouts</td></tr>
<!--DbEnv::rep_set_transport--><tr><td><a href="../api_c/rep_transport.html">DB_ENV-&gt;rep_set_transport</a></td><td>Configure replication transport callback</td></tr>
<!--DbEnv::rep_start--><tr><td><a href="../api_c/rep_start.html">DB_ENV-&gt;rep_start</a></td><td>Configure an environment for replication</td></tr>
@@ -123,8 +127,10 @@
<!--DbEnv::repmgr_set_local_site--><tr><td><a href="../api_c/repmgr_local_site.html">DB_ENV-&gt;repmgr_set_local_site</a></td><td>Specify the replication manager's local site</td></tr>
<!--DbEnv::repmgr_site_list--><tr><td><a href="../api_c/repmgr_site_list.html">DB_ENV-&gt;repmgr_site_list</a></td><td>List the sites and their status</td></tr>
<!--DbEnv::repmgr_start--><tr><td><a href="../api_c/repmgr_start.html">DB_ENV-&gt;repmgr_start</a></td><td>Start the replication manager</td></tr>
+<!--DbEnv::repmgr_stat--><tr><td><a href="../api_c/repmgr_stat.html">DB_ENV-&gt;repmgr_stat</a></td><td>Replication manager statistics</td></tr>
<!--DbEnv::set_alloc--><tr><td><a href="../api_c/env_set_alloc.html">DB_ENV-&gt;set_alloc</a></td><td>Set local space allocation functions</td></tr>
<!--DbEnv::set_app_dispatch--><tr><td><a href="../api_c/env_set_app_dispatch.html">DB_ENV-&gt;set_app_dispatch</a></td><td>Configure application recovery</td></tr>
+<!--DbEnv::set_cache_max--><tr><td><a href="../api_c/env_set_cache_max.html">DB_ENV-&gt;set_cache_max</a></td><td>Set the maximum cache size</td></tr>
<!--DbEnv::set_cachesize--><tr><td><a href="../api_c/env_set_cachesize.html">DB_ENV-&gt;set_cachesize</a></td><td>Set the environment cache size</td></tr>
<!--DbEnv::set_data_dir--><tr><td><a href="../api_c/env_set_data_dir.html">DB_ENV-&gt;set_data_dir</a></td><td>Set the environment data directory</td></tr>
<!--DbEnv::set_encrypt--><tr><td><a href="../api_c/env_set_encrypt.html">DB_ENV-&gt;set_encrypt</a></td><td>Set the environment cryptographic key</td></tr>
@@ -177,7 +183,6 @@
<!--DbMpoolFile::get--><tr><td><a href="../api_c/memp_fget.html">DB_MPOOLFILE-&gt;get</a></td><td>Get page from a file in a memory pool</td></tr>
<!--DbMpoolFile::open--><tr><td><a href="../api_c/memp_fopen.html">DB_MPOOLFILE-&gt;open</a></td><td>Open a file in a memory pool</td></tr>
<!--DbMpoolFile::put--><tr><td><a href="../api_c/memp_fput.html">DB_MPOOLFILE-&gt;put</a></td><td>Return a page to a memory pool</td></tr>
-<!--DbMpoolFile::set--><tr><td><a href="../api_c/memp_fset.html">DB_MPOOLFILE-&gt;set</a></td><td>Set memory pool page attributes</td></tr>
<!--DbMpoolFile::set_clear_len--><tr><td><a href="../api_c/memp_set_clear_len.html">DB_MPOOLFILE-&gt;set_clear_len</a></td><td>Set file page bytes to be cleared</td></tr>
<!--DbMpoolFile::set_fileid--><tr><td><a href="../api_c/memp_set_fileid.html">DB_MPOOLFILE-&gt;set_fileid</a></td><td>Set file unique identifier</td></tr>
<!--DbMpoolFile::set_flags--><tr><td><a href="../api_c/memp_set_flags.html">DB_MPOOLFILE-&gt;set_flags</a></td><td>General memory pool file configuration</td></tr>
@@ -211,6 +216,6 @@
<!--db_version--><tr><td><a href="../api_c/env_version.html">db_version</a></td><td>Return version information</td></tr>
<!--log_compare--><tr><td><a href="../api_c/log_compare.html">log_compare</a></td><td>Compare two Log Sequence Numbers</td></tr>
</table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/c_pindex.html b/db/docs/api_c/c_pindex.html
index fe5a3539d..1bd7ff71e 100644
--- a/db/docs/api_c/c_pindex.html
+++ b/db/docs/api_c/c_pindex.html
@@ -25,6 +25,7 @@
<tr><td align=right>Configuring Berkeley DB </td><td>&nbsp;<a href="../ref/build_unix/conf.html#--enable-debug_wop">--enable-debug_wop</a></td></tr>
<tr><td align=right>Configuring Berkeley DB </td><td>&nbsp;<a href="../ref/build_unix/conf.html#--enable-diagnostic">--enable-diagnostic</a></td></tr>
<tr><td align=right>Configuring Berkeley DB </td><td>&nbsp;<a href="../ref/build_unix/conf.html#--enable-dump185">--enable-dump185</a></td></tr>
+<tr><td align=right>Configuring Berkeley DB </td><td>&nbsp;<a href="../ref/build_unix/conf.html#--enable-fine_grained_lock_manager">--enable-fine_grained_lock_manager</a></td></tr>
<tr><td align=right>Configuring Berkeley DB </td><td>&nbsp;<a href="../ref/build_unix/conf.html#--enable-java">--enable-java</a></td></tr>
<tr><td align=right>Configuring Berkeley DB </td><td>&nbsp;<a href="../ref/build_unix/conf.html#--enable-posixmutexes">--enable-posixmutexes</a></td></tr>
<tr><td align=right>Configuring Berkeley DB </td><td>&nbsp;<a href="../ref/build_unix/conf.html#--enable-pthread_api">--enable-pthread_api</a></td></tr>
@@ -56,13 +57,17 @@
<tr><td align=right>turn off system </td><td>&nbsp;<a href="../api_c/env_set_flags.html#5">buffering</a> for database files</td></tr>
<tr><td align=right>turn off system </td><td>&nbsp;<a href="../api_c/env_set_flags.html#4">buffering</a> for log files</td></tr>
<tr><td align=right>turn off system </td><td>&nbsp;<a href="../api_c/env_set_flags.html#6">buffering</a> for log files</td></tr>
+<tr><td align=right></td><td>&nbsp;<a href="../ref/build_brew/intro.html#2">building</a> for BREW</td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../ref/build_unix/intro.html#3">building</a> for QNX</td></tr>
+<tr><td align=right></td><td>&nbsp;<a href="../ref/build_s60/intro.html#2">building</a> for S60</td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../ref/build_unix/intro.html#2">building</a> for UNIX</td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../ref/build_unix/notes.html#2">building</a> for UNIX FAQ</td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../ref/build_vxworks/intro.html#2">building</a> for VxWorks</td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../ref/build_vxworks/introae.html#2">building</a> for VxWorks AE</td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../ref/build_vxworks/faq.html#2">building</a> for VxWorks FAQ</td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../ref/build_win/intro.html#2">building</a> for Windows</td></tr>
+<tr><td align=right></td><td>&nbsp;<a href="../ref/build_wince/intro.html#2">building</a> for Windows CE</td></tr>
+<tr><td align=right></td><td>&nbsp;<a href="../ref/build_wince/faq.html#2">building</a> for Windows CE FAQ</td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../ref/build_win/faq.html#2">building</a> for Windows FAQ</td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../api_c/dbt_bulk.html#2">bulk</a> retrieval</td></tr>
<tr><td align=right>selecting a </td><td>&nbsp;<a href="../ref/am_conf/byteorder.html#2">byte</a> order</td></tr>
@@ -80,6 +85,7 @@
<tr><td align=right></td><td>&nbsp;<a href="../ref/cam/intro.html#2">Concurrent</a> Data Store</td></tr>
<tr><td align=right>database environment </td><td>&nbsp;<a href="../ref/env/db_config.html#3">configuration</a></td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../ref/build_unix/conf.html#2">configuring</a> Berkeley DB for UNIX systems</td></tr>
+<tr><td align=right></td><td>&nbsp;<a href="../ref/build_unix/conf.html#11">configuring</a> the fine-grained lock manager</td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../ref/program/copy.html#2">copying</a> databases</td></tr>
<tr><td align=right>salvaging </td><td>&nbsp;<a href="../ref/am/verify.html#4">corrupted</a> databases</td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../ref/am/count.html#2">counting</a> data items for a key</td></tr>
@@ -92,7 +98,7 @@
<tr><td align=right></td><td>&nbsp;<a href="../ref/transapp/read.html#4">cursor</a> stability</td></tr>
<tr><td align=right>database </td><td>&nbsp;<a href="../ref/am/cursor.html#2">cursors</a></td></tr>
<tr><td align=right>DBT </td><td>&nbsp;<a href="../api_c/dbt_class.html#data">data</a></td></tr>
-<tr><td align=right>DBcursor-&gt;c_put </td><td>&nbsp;<a href="../api_c/dbc_put.html#DB_AFTER">DB_AFTER</a></td></tr>
+<tr><td align=right>DBcursor-&gt;put </td><td>&nbsp;<a href="../api_c/dbc_put.html#DB_AFTER">DB_AFTER</a></td></tr>
<tr><td align=right>DB-&gt;verify </td><td>&nbsp;<a href="../api_c/db_verify.html#DB_AGGRESSIVE">DB_AGGRESSIVE</a></td></tr>
<tr><td align=right>DB-&gt;put </td><td>&nbsp;<a href="../api_c/db_put.html#DB_APPEND">DB_APPEND</a></td></tr>
<tr><td align=right>DB_ENV-&gt;log_archive </td><td>&nbsp;<a href="../api_c/log_archive.html#DB_ARCH_ABS">DB_ARCH_ABS</a></td></tr>
@@ -103,7 +109,7 @@
<tr><td align=right>DB_ENV-&gt;dbremove </td><td>&nbsp;<a href="../api_c/env_dbremove.html#DB_AUTO_COMMIT">DB_AUTO_COMMIT</a></td></tr>
<tr><td align=right>DB_ENV-&gt;dbrename </td><td>&nbsp;<a href="../api_c/env_dbrename.html#DB_AUTO_COMMIT">DB_AUTO_COMMIT</a></td></tr>
<tr><td align=right>DB_ENV-&gt;set_flags </td><td>&nbsp;<a href="../api_c/env_set_flags.html#DB_AUTO_COMMIT">DB_AUTO_COMMIT</a></td></tr>
-<tr><td align=right>DBcursor-&gt;c_put </td><td>&nbsp;<a href="../api_c/dbc_put.html#DB_BEFORE">DB_BEFORE</a></td></tr>
+<tr><td align=right>DBcursor-&gt;put </td><td>&nbsp;<a href="../api_c/dbc_put.html#DB_BEFORE">DB_BEFORE</a></td></tr>
<tr><td align=right>DB-&gt;open </td><td>&nbsp;<a href="../api_c/db_open.html#DB_BTREE">DB_BTREE</a></td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../api_c/dbt_class.html#3">DB_BUFFER_SMALL</a></td></tr>
<tr><td align=right>DB_ENV-&gt;set_flags </td><td>&nbsp;<a href="../api_c/env_set_flags.html#DB_CDB_ALLDB">DB_CDB_ALLDB</a></td></tr>
@@ -116,18 +122,21 @@
<tr><td align=right>DB_ENV-&gt;open </td><td>&nbsp;<a href="../api_c/env_open.html#DB_CREATE">DB_CREATE</a></td></tr>
<tr><td align=right>DB_MPOOLFILE-&gt;open </td><td>&nbsp;<a href="../api_c/memp_fopen.html#DB_CREATE">DB_CREATE</a></td></tr>
<tr><td align=right>DB_SEQUENCE-&gt;open </td><td>&nbsp;<a href="../api_c/seq_open.html#DB_CREATE">DB_CREATE</a></td></tr>
-<tr><td align=right>DBcursor-&gt;c_get </td><td>&nbsp;<a href="../api_c/dbc_get.html#DB_CURRENT">DB_CURRENT</a></td></tr>
-<tr><td align=right>DBcursor-&gt;c_put </td><td>&nbsp;<a href="../api_c/dbc_put.html#DB_CURRENT">DB_CURRENT</a></td></tr>
+<tr><td align=right>DBcursor-&gt;get </td><td>&nbsp;<a href="../api_c/dbc_get.html#DB_CURRENT">DB_CURRENT</a></td></tr>
+<tr><td align=right>DBcursor-&gt;put </td><td>&nbsp;<a href="../api_c/dbc_put.html#DB_CURRENT">DB_CURRENT</a></td></tr>
<tr><td align=right>DB_LOGC-&gt;get </td><td>&nbsp;<a href="../api_c/logc_get.html#DB_CURRENT">DB_CURRENT</a></td></tr>
-<tr><td align=right></td><td>&nbsp;<a href="../api_c/db_associate.html#2">DB_DBT_APPMALLOC</a></td></tr>
+<tr><td align=right>DB-&gt;associate </td><td>&nbsp;<a href="../api_c/db_associate.html#DB_DBT_APPMALLOC">DB_DBT_APPMALLOC</a></td></tr>
+<tr><td align=right>DBT </td><td>&nbsp;<a href="../api_c/dbt_class.html#DB_DBT_APPMALLOC">DB_DBT_APPMALLOC</a></td></tr>
<tr><td align=right>DBT </td><td>&nbsp;<a href="../api_c/dbt_class.html#DB_DBT_MALLOC">DB_DBT_MALLOC</a></td></tr>
+<tr><td align=right>DB-&gt;associate </td><td>&nbsp;<a href="../api_c/db_associate.html#DB_DBT_MULTIPLE">DB_DBT_MULTIPLE</a></td></tr>
+<tr><td align=right>DBT </td><td>&nbsp;<a href="../api_c/dbt_class.html#DB_DBT_MULTIPLE">DB_DBT_MULTIPLE</a></td></tr>
<tr><td align=right>DBT </td><td>&nbsp;<a href="../api_c/dbt_class.html#DB_DBT_PARTIAL">DB_DBT_PARTIAL</a></td></tr>
<tr><td align=right>DBT </td><td>&nbsp;<a href="../api_c/dbt_class.html#DB_DBT_REALLOC">DB_DBT_REALLOC</a></td></tr>
<tr><td align=right>DBT </td><td>&nbsp;<a href="../api_c/dbt_class.html#DB_DBT_USERMEM">DB_DBT_USERMEM</a></td></tr>
<tr><td align=right>DB_MPOOLFILE-&gt;open </td><td>&nbsp;<a href="../api_c/memp_fopen.html#DB_DIRECT">DB_DIRECT</a></td></tr>
<tr><td align=right>DB_ENV-&gt;set_flags </td><td>&nbsp;<a href="../api_c/env_set_flags.html#DB_DIRECT_DB">DB_DIRECT_DB</a></td></tr>
<tr><td align=right>DB_ENV-&gt;set_flags </td><td>&nbsp;<a href="../api_c/env_set_flags.html#DB_DIRECT_LOG">DB_DIRECT_LOG</a></td></tr>
-<tr><td align=right></td><td>&nbsp;<a href="../api_c/db_associate.html#3">DB_DONOTINDEX</a></td></tr>
+<tr><td align=right>DB-&gt;associate </td><td>&nbsp;<a href="../api_c/db_associate.html#DB_DONOTINDEX">DB_DONOTINDEX</a></td></tr>
<tr><td align=right>DB_ENV-&gt;set_flags </td><td>&nbsp;<a href="../api_c/env_set_flags.html#DB_DSYNC_DB">DB_DSYNC_DB</a></td></tr>
<tr><td align=right>DB_ENV-&gt;set_flags </td><td>&nbsp;<a href="../api_c/env_set_flags.html#DB_DSYNC_LOG">DB_DSYNC_LOG</a></td></tr>
<tr><td align=right>DB-&gt;set_flags </td><td>&nbsp;<a href="../api_c/db_set_flags.html#DB_DUP">DB_DUP</a></td></tr>
@@ -139,14 +148,16 @@
<tr><td align=right>DB_ENV-&gt;set_encrypt </td><td>&nbsp;<a href="../api_c/env_set_encrypt.html#DB_ENCRYPT_AES">DB_ENCRYPT_AES</a></td></tr>
<tr><td align=right>DB_ENV-&gt;set_event_notify </td><td>&nbsp;<a href="../api_c/env_event_notify.html#DB_EVENT_PANIC">DB_EVENT_PANIC</a></td></tr>
<tr><td align=right>DB_ENV-&gt;set_event_notify </td><td>&nbsp;<a href="../api_c/env_event_notify.html#DB_EVENT_REP_CLIENT">DB_EVENT_REP_CLIENT</a></td></tr>
+<tr><td align=right>DB_ENV-&gt;set_event_notify </td><td>&nbsp;<a href="../api_c/env_event_notify.html#DB_EVENT_REP_ELECTED">DB_EVENT_REP_ELECTED</a></td></tr>
<tr><td align=right>DB_ENV-&gt;set_event_notify </td><td>&nbsp;<a href="../api_c/env_event_notify.html#DB_EVENT_REP_MASTER">DB_EVENT_REP_MASTER</a></td></tr>
<tr><td align=right>DB_ENV-&gt;set_event_notify </td><td>&nbsp;<a href="../api_c/env_event_notify.html#DB_EVENT_REP_NEWMASTER">DB_EVENT_REP_NEWMASTER</a></td></tr>
+<tr><td align=right>DB_ENV-&gt;set_event_notify </td><td>&nbsp;<a href="../api_c/env_event_notify.html#DB_EVENT_REP_PERM_FAILED">DB_EVENT_REP_PERM_FAILED</a></td></tr>
<tr><td align=right>DB_ENV-&gt;set_event_notify </td><td>&nbsp;<a href="../api_c/env_event_notify.html#DB_EVENT_REP_STARTUPDONE">DB_EVENT_REP_STARTUPDONE</a></td></tr>
<tr><td align=right>DB_ENV-&gt;set_event_notify </td><td>&nbsp;<a href="../api_c/env_event_notify.html#DB_EVENT_WRITE_FAILED">DB_EVENT_WRITE_FAILED</a></td></tr>
<tr><td align=right>DB-&gt;open </td><td>&nbsp;<a href="../api_c/db_open.html#DB_EXCL">DB_EXCL</a></td></tr>
<tr><td align=right>DB_SEQUENCE-&gt;open </td><td>&nbsp;<a href="../api_c/seq_open.html#DB_EXCL">DB_EXCL</a></td></tr>
<tr><td align=right>DB-&gt;stat </td><td>&nbsp;<a href="../api_c/db_stat.html#DB_FAST_STAT">DB_FAST_STAT</a></td></tr>
-<tr><td align=right>DBcursor-&gt;c_get </td><td>&nbsp;<a href="../api_c/dbc_get.html#DB_FIRST">DB_FIRST</a></td></tr>
+<tr><td align=right>DBcursor-&gt;get </td><td>&nbsp;<a href="../api_c/dbc_get.html#DB_FIRST">DB_FIRST</a></td></tr>
<tr><td align=right>DB_LOGC-&gt;get </td><td>&nbsp;<a href="../api_c/logc_get.html#DB_FIRST">DB_FIRST</a></td></tr>
<tr><td align=right>DB_ENV-&gt;txn_recover </td><td>&nbsp;<a href="../api_c/txn_recover.html#DB_FIRST">DB_FIRST</a></td></tr>
<tr><td align=right>DB_ENV-&gt;log_put </td><td>&nbsp;<a href="../api_c/log_put.html#DB_FLUSH">DB_FLUSH</a></td></tr>
@@ -155,9 +166,9 @@
<tr><td align=right>DB-&gt;compact </td><td>&nbsp;<a href="../api_c/db_compact.html#DB_FREELIST_ONLY">DB_FREELIST_ONLY</a></td></tr>
<tr><td align=right>DB-&gt;compact </td><td>&nbsp;<a href="../api_c/db_compact.html#DB_FREE_SPACE">DB_FREE_SPACE</a></td></tr>
<tr><td align=right>DB-&gt;get </td><td>&nbsp;<a href="../api_c/db_get.html#DB_GET_BOTH">DB_GET_BOTH</a></td></tr>
-<tr><td align=right>DBcursor-&gt;c_get </td><td>&nbsp;<a href="../api_c/dbc_get.html#DB_GET_BOTH">DB_GET_BOTH</a></td></tr>
-<tr><td align=right>DBcursor-&gt;c_get </td><td>&nbsp;<a href="../api_c/dbc_get.html#DB_GET_BOTH_RANGE">DB_GET_BOTH_RANGE</a></td></tr>
-<tr><td align=right>DBcursor-&gt;c_get </td><td>&nbsp;<a href="../api_c/dbc_get.html#DB_GET_RECNO">DB_GET_RECNO</a></td></tr>
+<tr><td align=right>DBcursor-&gt;get </td><td>&nbsp;<a href="../api_c/dbc_get.html#DB_GET_BOTH">DB_GET_BOTH</a></td></tr>
+<tr><td align=right>DBcursor-&gt;get </td><td>&nbsp;<a href="../api_c/dbc_get.html#DB_GET_BOTH_RANGE">DB_GET_BOTH_RANGE</a></td></tr>
+<tr><td align=right>DBcursor-&gt;get </td><td>&nbsp;<a href="../api_c/dbc_get.html#DB_GET_RECNO">DB_GET_RECNO</a></td></tr>
<tr><td align=right>DB-&gt;open </td><td>&nbsp;<a href="../api_c/db_open.html#DB_HASH">DB_HASH</a></td></tr>
<tr><td align=right>File naming </td><td>&nbsp;<a href="../ref/env/naming.html#DB_HOME">DB_HOME</a></td></tr>
<tr><td align=right>File naming </td><td>&nbsp;<a href="../ref/env/naming.html#db_home">db_home</a></td></tr>
@@ -170,13 +181,13 @@
<tr><td align=right>DB_ENV-&gt;open </td><td>&nbsp;<a href="../api_c/env_open.html#DB_INIT_TXN">DB_INIT_TXN</a></td></tr>
<tr><td align=right>DB-&gt;set_flags </td><td>&nbsp;<a href="../api_c/db_set_flags.html#DB_INORDER">DB_INORDER</a></td></tr>
<tr><td align=right>DB-&gt;join </td><td>&nbsp;<a href="../api_c/db_join.html#DB_JOIN_ITEM">DB_JOIN_ITEM</a></td></tr>
-<tr><td align=right>DBcursor-&gt;c_get </td><td>&nbsp;<a href="../api_c/dbc_get.html#DB_JOIN_ITEM">DB_JOIN_ITEM</a></td></tr>
+<tr><td align=right>DBcursor-&gt;get </td><td>&nbsp;<a href="../api_c/dbc_get.html#DB_JOIN_ITEM">DB_JOIN_ITEM</a></td></tr>
<tr><td align=right>DB-&gt;join </td><td>&nbsp;<a href="../api_c/db_join.html#DB_JOIN_NOSORT">DB_JOIN_NOSORT</a></td></tr>
<tr><td align=right>Error returns to applications </td><td>&nbsp;<a href="../ref/program/errorret.html#DB_KEYEMPTY">DB_KEYEMPTY</a></td></tr>
<tr><td align=right>Error returns to applications </td><td>&nbsp;<a href="../ref/program/errorret.html#DB_KEYEXIST">DB_KEYEXIST</a></td></tr>
-<tr><td align=right>DBcursor-&gt;c_put </td><td>&nbsp;<a href="../api_c/dbc_put.html#DB_KEYFIRST">DB_KEYFIRST</a></td></tr>
-<tr><td align=right>DBcursor-&gt;c_put </td><td>&nbsp;<a href="../api_c/dbc_put.html#DB_KEYLAST">DB_KEYLAST</a></td></tr>
-<tr><td align=right>DBcursor-&gt;c_get </td><td>&nbsp;<a href="../api_c/dbc_get.html#DB_LAST">DB_LAST</a></td></tr>
+<tr><td align=right>DBcursor-&gt;put </td><td>&nbsp;<a href="../api_c/dbc_put.html#DB_KEYFIRST">DB_KEYFIRST</a></td></tr>
+<tr><td align=right>DBcursor-&gt;put </td><td>&nbsp;<a href="../api_c/dbc_put.html#DB_KEYLAST">DB_KEYLAST</a></td></tr>
+<tr><td align=right>DBcursor-&gt;get </td><td>&nbsp;<a href="../api_c/dbc_get.html#DB_LAST">DB_LAST</a></td></tr>
<tr><td align=right>DB_LOGC-&gt;get </td><td>&nbsp;<a href="../api_c/logc_get.html#DB_LAST">DB_LAST</a></td></tr>
<tr><td align=right>DB_ENV-&gt;open </td><td>&nbsp;<a href="../api_c/env_open.html#DB_LOCKDOWN">DB_LOCKDOWN</a></td></tr>
<tr><td align=right>DB_ENV-&gt;txn_begin </td><td>&nbsp;<a href="../api_c/txn_begin.html#DB_LOCK_DEADLOCK">DB_LOCK_DEADLOCK</a></td></tr>
@@ -219,17 +230,15 @@
<tr><td align=right>DB_ENV-&gt;set_flags </td><td>&nbsp;<a href="../api_c/env_set_flags.html#DB_LOG_INMEMORY">DB_LOG_INMEMORY</a></td></tr>
<tr><td align=right>DB_MPOOLFILE-&gt;get </td><td>&nbsp;<a href="../api_c/memp_fget.html#DB_MPOOL_CREATE">DB_MPOOL_CREATE</a></td></tr>
<tr><td align=right>DB_MPOOLFILE-&gt;get </td><td>&nbsp;<a href="../api_c/memp_fget.html#DB_MPOOL_DIRTY">DB_MPOOL_DIRTY</a></td></tr>
-<tr><td align=right>DB_MPOOLFILE-&gt;put </td><td>&nbsp;<a href="../api_c/memp_fput.html#DB_MPOOL_DISCARD">DB_MPOOL_DISCARD</a></td></tr>
-<tr><td align=right>DB_MPOOLFILE-&gt;set </td><td>&nbsp;<a href="../api_c/memp_fset.html#DB_MPOOL_DISCARD">DB_MPOOL_DISCARD</a></td></tr>
<tr><td align=right>DB_MPOOLFILE-&gt;get </td><td>&nbsp;<a href="../api_c/memp_fget.html#DB_MPOOL_EDIT">DB_MPOOL_EDIT</a></td></tr>
<tr><td align=right>DB_MPOOLFILE-&gt;get </td><td>&nbsp;<a href="../api_c/memp_fget.html#DB_MPOOL_LAST">DB_MPOOL_LAST</a></td></tr>
<tr><td align=right>DB_MPOOLFILE-&gt;get </td><td>&nbsp;<a href="../api_c/memp_fget.html#DB_MPOOL_NEW">DB_MPOOL_NEW</a></td></tr>
<tr><td align=right>DB_MPOOLFILE-&gt;set_flags </td><td>&nbsp;<a href="../api_c/memp_set_flags.html#DB_MPOOL_NOFILE">DB_MPOOL_NOFILE</a></td></tr>
<tr><td align=right>DB_MPOOLFILE-&gt;set_flags </td><td>&nbsp;<a href="../api_c/memp_set_flags.html#DB_MPOOL_UNLINK">DB_MPOOL_UNLINK</a></td></tr>
<tr><td align=right>DB-&gt;get </td><td>&nbsp;<a href="../api_c/db_get.html#DB_MULTIPLE">DB_MULTIPLE</a></td></tr>
-<tr><td align=right>DBcursor-&gt;c_get </td><td>&nbsp;<a href="../api_c/dbc_get.html#DB_MULTIPLE">DB_MULTIPLE</a></td></tr>
+<tr><td align=right>DBcursor-&gt;get </td><td>&nbsp;<a href="../api_c/dbc_get.html#DB_MULTIPLE">DB_MULTIPLE</a></td></tr>
<tr><td align=right>DBT </td><td>&nbsp;<a href="../api_c/dbt_bulk.html#DB_MULTIPLE_INIT">DB_MULTIPLE_INIT</a></td></tr>
-<tr><td align=right>DBcursor-&gt;c_get </td><td>&nbsp;<a href="../api_c/dbc_get.html#DB_MULTIPLE_KEY">DB_MULTIPLE_KEY</a></td></tr>
+<tr><td align=right>DBcursor-&gt;get </td><td>&nbsp;<a href="../api_c/dbc_get.html#DB_MULTIPLE_KEY">DB_MULTIPLE_KEY</a></td></tr>
<tr><td align=right>DBT </td><td>&nbsp;<a href="../api_c/dbt_bulk.html#DB_MULTIPLE_KEY_NEXT">DB_MULTIPLE_KEY_NEXT</a></td></tr>
<tr><td align=right>DBT </td><td>&nbsp;<a href="../api_c/dbt_bulk.html#DB_MULTIPLE_NEXT">DB_MULTIPLE_NEXT</a></td></tr>
<tr><td align=right>DBT </td><td>&nbsp;<a href="../api_c/dbt_bulk.html#DB_MULTIPLE_RECNO_NEXT">DB_MULTIPLE_RECNO_NEXT</a></td></tr>
@@ -239,13 +248,13 @@
<tr><td align=right>DB_ENV-&gt;set_isalive </td><td>&nbsp;<a href="../api_c/env_set_isalive.html#DB_MUTEX_PROCESS_ONLY">DB_MUTEX_PROCESS_ONLY</a></td></tr>
<tr><td align=right>DB_ENV-&gt;mutex_alloc </td><td>&nbsp;<a href="../api_c/mutex_alloc.html#DB_MUTEX_PROCESS_ONLY">DB_MUTEX_PROCESS_ONLY</a></td></tr>
<tr><td align=right>DB_ENV-&gt;mutex_alloc </td><td>&nbsp;<a href="../api_c/mutex_alloc.html#DB_MUTEX_SELF_BLOCK">DB_MUTEX_SELF_BLOCK</a></td></tr>
-<tr><td align=right>DBcursor-&gt;c_get </td><td>&nbsp;<a href="../api_c/dbc_get.html#DB_NEXT">DB_NEXT</a></td></tr>
+<tr><td align=right>DBcursor-&gt;get </td><td>&nbsp;<a href="../api_c/dbc_get.html#DB_NEXT">DB_NEXT</a></td></tr>
<tr><td align=right>DB_LOGC-&gt;get </td><td>&nbsp;<a href="../api_c/logc_get.html#DB_NEXT">DB_NEXT</a></td></tr>
<tr><td align=right>DB_ENV-&gt;txn_recover </td><td>&nbsp;<a href="../api_c/txn_recover.html#DB_NEXT">DB_NEXT</a></td></tr>
-<tr><td align=right>DBcursor-&gt;c_get </td><td>&nbsp;<a href="../api_c/dbc_get.html#DB_NEXT_DUP">DB_NEXT_DUP</a></td></tr>
-<tr><td align=right>DBcursor-&gt;c_get </td><td>&nbsp;<a href="../api_c/dbc_get.html#DB_NEXT_NODUP">DB_NEXT_NODUP</a></td></tr>
+<tr><td align=right>DBcursor-&gt;get </td><td>&nbsp;<a href="../api_c/dbc_get.html#DB_NEXT_DUP">DB_NEXT_DUP</a></td></tr>
+<tr><td align=right>DBcursor-&gt;get </td><td>&nbsp;<a href="../api_c/dbc_get.html#DB_NEXT_NODUP">DB_NEXT_NODUP</a></td></tr>
<tr><td align=right>DB-&gt;put </td><td>&nbsp;<a href="../api_c/db_put.html#DB_NODUPDATA">DB_NODUPDATA</a></td></tr>
-<tr><td align=right>DBcursor-&gt;c_put </td><td>&nbsp;<a href="../api_c/dbc_put.html#DB_NODUPDATA">DB_NODUPDATA</a></td></tr>
+<tr><td align=right>DBcursor-&gt;put </td><td>&nbsp;<a href="../api_c/dbc_put.html#DB_NODUPDATA">DB_NODUPDATA</a></td></tr>
<tr><td align=right>DB_ENV-&gt;set_flags </td><td>&nbsp;<a href="../api_c/env_set_flags.html#DB_NOLOCKING">DB_NOLOCKING</a></td></tr>
<tr><td align=right>DB-&gt;open </td><td>&nbsp;<a href="../api_c/db_open.html#DB_NOMMAP">DB_NOMMAP</a></td></tr>
<tr><td align=right>DB_ENV-&gt;set_flags </td><td>&nbsp;<a href="../api_c/env_set_flags.html#DB_NOMMAP">DB_NOMMAP</a></td></tr>
@@ -267,30 +276,49 @@
<tr><td align=right>DB_ENV-&gt;set_flags </td><td>&nbsp;<a href="../api_c/env_set_flags.html#DB_OVERWRITE">DB_OVERWRITE</a></td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../api_c/memp_fget.html#2">DB_PAGE_NOTFOUND</a></td></tr>
<tr><td align=right>DB_ENV-&gt;set_flags </td><td>&nbsp;<a href="../api_c/env_set_flags.html#DB_PANIC_ENVIRONMENT">DB_PANIC_ENVIRONMENT</a></td></tr>
-<tr><td align=right>DBcursor-&gt;c_dup </td><td>&nbsp;<a href="../api_c/dbc_dup.html#DB_POSITION">DB_POSITION</a></td></tr>
-<tr><td align=right>DBcursor-&gt;c_get </td><td>&nbsp;<a href="../api_c/dbc_get.html#DB_PREV">DB_PREV</a></td></tr>
+<tr><td align=right>DBcursor-&gt;dup </td><td>&nbsp;<a href="../api_c/dbc_dup.html#DB_POSITION">DB_POSITION</a></td></tr>
+<tr><td align=right>DBcursor-&gt;get </td><td>&nbsp;<a href="../api_c/dbc_get.html#DB_PREV">DB_PREV</a></td></tr>
<tr><td align=right>DB_LOGC-&gt;get </td><td>&nbsp;<a href="../api_c/logc_get.html#DB_PREV">DB_PREV</a></td></tr>
-<tr><td align=right>DBcursor-&gt;c_get </td><td>&nbsp;<a href="../api_c/dbc_get.html#DB_PREV_NODUP">DB_PREV_NODUP</a></td></tr>
+<tr><td align=right>DBcursor-&gt;get </td><td>&nbsp;<a href="../api_c/dbc_get.html#DB_PREV_DUP">DB_PREV_DUP</a></td></tr>
+<tr><td align=right>DBcursor-&gt;get </td><td>&nbsp;<a href="../api_c/dbc_get.html#DB_PREV_NODUP">DB_PREV_NODUP</a></td></tr>
<tr><td align=right>DB-&gt;verify </td><td>&nbsp;<a href="../api_c/db_verify.html#DB_PRINTABLE">DB_PRINTABLE</a></td></tr>
+<tr><td align=right>DB-&gt;set_priority </td><td>&nbsp;<a href="../api_c/db_set_priority.html#DB_PRIORITY_DEFAULT">DB_PRIORITY_DEFAULT</a></td></tr>
+<tr><td align=right>DBcursor-&gt;set_priority </td><td>&nbsp;<a href="../api_c/dbc_set_priority.html#DB_PRIORITY_DEFAULT">DB_PRIORITY_DEFAULT</a></td></tr>
+<tr><td align=right>DB_MPOOLFILE-&gt;put </td><td>&nbsp;<a href="../api_c/memp_fput.html#DB_PRIORITY_DEFAULT">DB_PRIORITY_DEFAULT</a></td></tr>
<tr><td align=right>DB_MPOOLFILE-&gt;set_priority </td><td>&nbsp;<a href="../api_c/memp_set_priority.html#DB_PRIORITY_DEFAULT">DB_PRIORITY_DEFAULT</a></td></tr>
+<tr><td align=right>DB-&gt;set_priority </td><td>&nbsp;<a href="../api_c/db_set_priority.html#DB_PRIORITY_HIGH">DB_PRIORITY_HIGH</a></td></tr>
+<tr><td align=right>DBcursor-&gt;set_priority </td><td>&nbsp;<a href="../api_c/dbc_set_priority.html#DB_PRIORITY_HIGH">DB_PRIORITY_HIGH</a></td></tr>
+<tr><td align=right>DB_MPOOLFILE-&gt;put </td><td>&nbsp;<a href="../api_c/memp_fput.html#DB_PRIORITY_HIGH">DB_PRIORITY_HIGH</a></td></tr>
<tr><td align=right>DB_MPOOLFILE-&gt;set_priority </td><td>&nbsp;<a href="../api_c/memp_set_priority.html#DB_PRIORITY_HIGH">DB_PRIORITY_HIGH</a></td></tr>
+<tr><td align=right>DB-&gt;set_priority </td><td>&nbsp;<a href="../api_c/db_set_priority.html#DB_PRIORITY_LOW">DB_PRIORITY_LOW</a></td></tr>
+<tr><td align=right>DBcursor-&gt;set_priority </td><td>&nbsp;<a href="../api_c/dbc_set_priority.html#DB_PRIORITY_LOW">DB_PRIORITY_LOW</a></td></tr>
+<tr><td align=right>DB_MPOOLFILE-&gt;put </td><td>&nbsp;<a href="../api_c/memp_fput.html#DB_PRIORITY_LOW">DB_PRIORITY_LOW</a></td></tr>
<tr><td align=right>DB_MPOOLFILE-&gt;set_priority </td><td>&nbsp;<a href="../api_c/memp_set_priority.html#DB_PRIORITY_LOW">DB_PRIORITY_LOW</a></td></tr>
+<tr><td align=right>DB_MPOOLFILE-&gt;put </td><td>&nbsp;<a href="../api_c/memp_fput.html#DB_PRIORITY_UNCHANGED">DB_PRIORITY_UNCHANGED</a></td></tr>
+<tr><td align=right>DB-&gt;set_priority </td><td>&nbsp;<a href="../api_c/db_set_priority.html#DB_PRIORITY_VERY_HIGH">DB_PRIORITY_VERY_HIGH</a></td></tr>
+<tr><td align=right>DBcursor-&gt;set_priority </td><td>&nbsp;<a href="../api_c/dbc_set_priority.html#DB_PRIORITY_VERY_HIGH">DB_PRIORITY_VERY_HIGH</a></td></tr>
+<tr><td align=right>DB_MPOOLFILE-&gt;put </td><td>&nbsp;<a href="../api_c/memp_fput.html#DB_PRIORITY_VERY_HIGH">DB_PRIORITY_VERY_HIGH</a></td></tr>
<tr><td align=right>DB_MPOOLFILE-&gt;set_priority </td><td>&nbsp;<a href="../api_c/memp_set_priority.html#DB_PRIORITY_VERY_HIGH">DB_PRIORITY_VERY_HIGH</a></td></tr>
+<tr><td align=right>DB-&gt;set_priority </td><td>&nbsp;<a href="../api_c/db_set_priority.html#DB_PRIORITY_VERY_LOW">DB_PRIORITY_VERY_LOW</a></td></tr>
+<tr><td align=right>DBcursor-&gt;set_priority </td><td>&nbsp;<a href="../api_c/dbc_set_priority.html#DB_PRIORITY_VERY_LOW">DB_PRIORITY_VERY_LOW</a></td></tr>
+<tr><td align=right>DB_MPOOLFILE-&gt;put </td><td>&nbsp;<a href="../api_c/memp_fput.html#DB_PRIORITY_VERY_LOW">DB_PRIORITY_VERY_LOW</a></td></tr>
<tr><td align=right>DB_MPOOLFILE-&gt;set_priority </td><td>&nbsp;<a href="../api_c/memp_set_priority.html#DB_PRIORITY_VERY_LOW">DB_PRIORITY_VERY_LOW</a></td></tr>
<tr><td align=right>DB_ENV-&gt;open </td><td>&nbsp;<a href="../api_c/env_open.html#DB_PRIVATE">DB_PRIVATE</a></td></tr>
<tr><td align=right>DB-&gt;open </td><td>&nbsp;<a href="../api_c/db_open.html#DB_QUEUE">DB_QUEUE</a></td></tr>
<tr><td align=right>DB-&gt;open </td><td>&nbsp;<a href="../api_c/db_open.html#DB_RDONLY">DB_RDONLY</a></td></tr>
<tr><td align=right>DB_MPOOLFILE-&gt;open </td><td>&nbsp;<a href="../api_c/memp_fopen.html#DB_RDONLY">DB_RDONLY</a></td></tr>
<tr><td align=right>DB-&gt;cursor </td><td>&nbsp;<a href="../api_c/db_cursor.html#DB_READ_COMMITTED">DB_READ_COMMITTED</a></td></tr>
+<tr><td align=right>DB-&gt;exists </td><td>&nbsp;<a href="../api_c/db_exists.html#DB_READ_COMMITTED">DB_READ_COMMITTED</a></td></tr>
<tr><td align=right>DB-&gt;get </td><td>&nbsp;<a href="../api_c/db_get.html#DB_READ_COMMITTED">DB_READ_COMMITTED</a></td></tr>
<tr><td align=right>DB-&gt;stat </td><td>&nbsp;<a href="../api_c/db_stat.html#DB_READ_COMMITTED">DB_READ_COMMITTED</a></td></tr>
<tr><td align=right>DB_ENV-&gt;txn_begin </td><td>&nbsp;<a href="../api_c/txn_begin.html#DB_READ_COMMITTED">DB_READ_COMMITTED</a></td></tr>
<tr><td align=right>DB-&gt;cursor </td><td>&nbsp;<a href="../api_c/db_cursor.html#DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a></td></tr>
+<tr><td align=right>DB-&gt;exists </td><td>&nbsp;<a href="../api_c/db_exists.html#DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a></td></tr>
<tr><td align=right>DB-&gt;get </td><td>&nbsp;<a href="../api_c/db_get.html#DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a></td></tr>
<tr><td align=right>DB-&gt;join </td><td>&nbsp;<a href="../api_c/db_join.html#DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a></td></tr>
<tr><td align=right>DB-&gt;open </td><td>&nbsp;<a href="../api_c/db_open.html#DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a></td></tr>
<tr><td align=right>DB-&gt;stat </td><td>&nbsp;<a href="../api_c/db_stat.html#DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a></td></tr>
-<tr><td align=right>DBcursor-&gt;c_get </td><td>&nbsp;<a href="../api_c/dbc_get.html#DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a></td></tr>
+<tr><td align=right>DBcursor-&gt;get </td><td>&nbsp;<a href="../api_c/dbc_get.html#DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a></td></tr>
<tr><td align=right>DB_ENV-&gt;txn_begin </td><td>&nbsp;<a href="../api_c/txn_begin.html#DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a></td></tr>
<tr><td align=right>DB-&gt;open </td><td>&nbsp;<a href="../api_c/db_open.html#DB_RECNO">DB_RECNO</a></td></tr>
<tr><td align=right>DB-&gt;set_flags </td><td>&nbsp;<a href="../api_c/db_set_flags.html#DB_RECNUM">DB_RECNUM</a></td></tr>
@@ -311,6 +339,7 @@
<tr><td align=right>DB_ENV-&gt;repmgr_add_remote_site </td><td>&nbsp;<a href="../api_c/repmgr_remote_site.html#DB_REPMGR_PEER">DB_REPMGR_PEER</a></td></tr>
<tr><td align=right>DB_ENV-&gt;rep_set_timeout </td><td>&nbsp;<a href="../api_c/rep_timeout.html#DB_REP_ACK_TIMEOUT">DB_REP_ACK_TIMEOUT</a></td></tr>
<tr><td align=right>DB_ENV-&gt;rep_set_transport </td><td>&nbsp;<a href="../api_c/rep_transport.html#DB_REP_ANYWHERE">DB_REP_ANYWHERE</a></td></tr>
+<tr><td align=right>DB_ENV-&gt;rep_set_timeout </td><td>&nbsp;<a href="../api_c/rep_timeout.html#DB_REP_CHECKPOINT_DELAY">DB_REP_CHECKPOINT_DELAY</a></td></tr>
<tr><td align=right>DB_ENV-&gt;rep_start </td><td>&nbsp;<a href="../api_c/rep_start.html#DB_REP_CLIENT">DB_REP_CLIENT</a></td></tr>
<tr><td align=right>DB_ENV-&gt;repmgr_start </td><td>&nbsp;<a href="../api_c/repmgr_start.html#DB_REP_CLIENT">DB_REP_CLIENT</a></td></tr>
<tr><td align=right>DB_ENV-&gt;rep_set_config </td><td>&nbsp;<a href="../api_c/rep_config.html#DB_REP_CONF_BULK">DB_REP_CONF_BULK</a></td></tr>
@@ -322,7 +351,7 @@
<tr><td align=right>DB_ENV-&gt;repmgr_start </td><td>&nbsp;<a href="../api_c/repmgr_start.html#DB_REP_ELECTION">DB_REP_ELECTION</a></td></tr>
<tr><td align=right>DB_ENV-&gt;rep_set_timeout </td><td>&nbsp;<a href="../api_c/rep_timeout.html#DB_REP_ELECTION_RETRY">DB_REP_ELECTION_RETRY</a></td></tr>
<tr><td align=right>DB_ENV-&gt;rep_set_timeout </td><td>&nbsp;<a href="../api_c/rep_timeout.html#DB_REP_ELECTION_TIMEOUT">DB_REP_ELECTION_TIMEOUT</a></td></tr>
-<tr><td align=right>DB_ENV-&gt;repmgr_start </td><td>&nbsp;<a href="../api_c/repmgr_start.html#DB_REP_FULL_ELECTION">DB_REP_FULL_ELECTION</a></td></tr>
+<tr><td align=right>DB_ENV-&gt;rep_set_timeout </td><td>&nbsp;<a href="../api_c/rep_timeout.html#DB_REP_FULL_ELECTION_TIMEOUT">DB_REP_FULL_ELECTION_TIMEOUT</a></td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../api_c/db_put.html#2">DB_REP_HANDLE_DEAD</a></td></tr>
<tr><td align=right>DB_ENV-&gt;rep_process_message </td><td>&nbsp;<a href="../api_c/rep_message.html#DB_REP_HOLDELECTION">DB_REP_HOLDELECTION</a></td></tr>
<tr><td align=right>DB_ENV-&gt;rep_process_message </td><td>&nbsp;<a href="../api_c/rep_message.html#DB_REP_IGNORE">DB_REP_IGNORE</a></td></tr>
@@ -331,7 +360,6 @@
<tr><td align=right></td><td>&nbsp;<a href="../api_c/db_put.html#3">DB_REP_LOCKOUT</a></td></tr>
<tr><td align=right>DB_ENV-&gt;rep_start </td><td>&nbsp;<a href="../api_c/rep_start.html#DB_REP_MASTER">DB_REP_MASTER</a></td></tr>
<tr><td align=right>DB_ENV-&gt;repmgr_start </td><td>&nbsp;<a href="../api_c/repmgr_start.html#DB_REP_MASTER">DB_REP_MASTER</a></td></tr>
-<tr><td align=right>DB_ENV-&gt;rep_process_message </td><td>&nbsp;<a href="../api_c/rep_message.html#DB_REP_NEWMASTER">DB_REP_NEWMASTER</a></td></tr>
<tr><td align=right>DB_ENV-&gt;rep_process_message </td><td>&nbsp;<a href="../api_c/rep_message.html#DB_REP_NEWSITE">DB_REP_NEWSITE</a></td></tr>
<tr><td align=right>DB_ENV-&gt;rep_set_transport </td><td>&nbsp;<a href="../api_c/rep_transport.html#DB_REP_NOBUFFER">DB_REP_NOBUFFER</a></td></tr>
<tr><td align=right>DB_ENV-&gt;rep_process_message </td><td>&nbsp;<a href="../api_c/rep_message.html#DB_REP_NOTPERM">DB_REP_NOTPERM</a></td></tr>
@@ -339,22 +367,23 @@
<tr><td align=right>DB_ENV-&gt;rep_set_transport </td><td>&nbsp;<a href="../api_c/rep_transport.html#DB_REP_REREQUEST">DB_REP_REREQUEST</a></td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../api_c/rep_elect.html#2">DB_REP_UNAVAIL</a></td></tr>
<tr><td align=right>DB-&gt;set_flags </td><td>&nbsp;<a href="../api_c/db_set_flags.html#DB_REVSPLITOFF">DB_REVSPLITOFF</a></td></tr>
+<tr><td align=right>DB-&gt;exists </td><td>&nbsp;<a href="../api_c/db_exists.html#DB_RMW">DB_RMW</a></td></tr>
<tr><td align=right>DB-&gt;get </td><td>&nbsp;<a href="../api_c/db_get.html#DB_RMW">DB_RMW</a></td></tr>
<tr><td align=right>DB-&gt;join </td><td>&nbsp;<a href="../api_c/db_join.html#DB_RMW">DB_RMW</a></td></tr>
-<tr><td align=right>DBcursor-&gt;c_get </td><td>&nbsp;<a href="../api_c/dbc_get.html#DB_RMW">DB_RMW</a></td></tr>
+<tr><td align=right>DBcursor-&gt;get </td><td>&nbsp;<a href="../api_c/dbc_get.html#DB_RMW">DB_RMW</a></td></tr>
<tr><td align=right>db_env_create </td><td>&nbsp;<a href="../api_c/env_class.html#DB_RPCCLIENT">DB_RPCCLIENT</a></td></tr>
<tr><td align=right>Error returns to applications </td><td>&nbsp;<a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a></td></tr>
<tr><td align=right>DB-&gt;verify </td><td>&nbsp;<a href="../api_c/db_verify.html#DB_SALVAGE">DB_SALVAGE</a></td></tr>
<tr><td align=right>DB_SEQUENCE-&gt;set_flags </td><td>&nbsp;<a href="../api_c/seq_set_flags.html#DB_SEQ_DEC">DB_SEQ_DEC</a></td></tr>
<tr><td align=right>DB_SEQUENCE-&gt;set_flags </td><td>&nbsp;<a href="../api_c/seq_set_flags.html#DB_SEQ_INC">DB_SEQ_INC</a></td></tr>
<tr><td align=right>DB_SEQUENCE-&gt;set_flags </td><td>&nbsp;<a href="../api_c/seq_set_flags.html#DB_SEQ_WRAP">DB_SEQ_WRAP</a></td></tr>
-<tr><td align=right>DBcursor-&gt;c_get </td><td>&nbsp;<a href="../api_c/dbc_get.html#DB_SET">DB_SET</a></td></tr>
+<tr><td align=right>DBcursor-&gt;get </td><td>&nbsp;<a href="../api_c/dbc_get.html#DB_SET">DB_SET</a></td></tr>
<tr><td align=right>DB_LOGC-&gt;get </td><td>&nbsp;<a href="../api_c/logc_get.html#DB_SET">DB_SET</a></td></tr>
<tr><td align=right>DB_ENV-&gt;set_timeout </td><td>&nbsp;<a href="../api_c/env_set_timeout.html#DB_SET_LOCK_TIMEOUT">DB_SET_LOCK_TIMEOUT</a></td></tr>
<tr><td align=right>DB_TXN-&gt;set_timeout </td><td>&nbsp;<a href="../api_c/txn_set_timeout.html#DB_SET_LOCK_TIMEOUT">DB_SET_LOCK_TIMEOUT</a></td></tr>
-<tr><td align=right>DBcursor-&gt;c_get </td><td>&nbsp;<a href="../api_c/dbc_get.html#DB_SET_RANGE">DB_SET_RANGE</a></td></tr>
+<tr><td align=right>DBcursor-&gt;get </td><td>&nbsp;<a href="../api_c/dbc_get.html#DB_SET_RANGE">DB_SET_RANGE</a></td></tr>
<tr><td align=right>DB-&gt;get </td><td>&nbsp;<a href="../api_c/db_get.html#DB_SET_RECNO">DB_SET_RECNO</a></td></tr>
-<tr><td align=right>DBcursor-&gt;c_get </td><td>&nbsp;<a href="../api_c/dbc_get.html#DB_SET_RECNO">DB_SET_RECNO</a></td></tr>
+<tr><td align=right>DBcursor-&gt;get </td><td>&nbsp;<a href="../api_c/dbc_get.html#DB_SET_RECNO">DB_SET_RECNO</a></td></tr>
<tr><td align=right>DB_ENV-&gt;set_timeout </td><td>&nbsp;<a href="../api_c/env_set_timeout.html#DB_SET_TXN_TIMEOUT">DB_SET_TXN_TIMEOUT</a></td></tr>
<tr><td align=right>DB_TXN-&gt;set_timeout </td><td>&nbsp;<a href="../api_c/txn_set_timeout.html#DB_SET_TXN_TIMEOUT">DB_SET_TXN_TIMEOUT</a></td></tr>
<tr><td align=right>DB-&gt;set_flags </td><td>&nbsp;<a href="../api_c/db_set_flags.html#DB_SNAPSHOT">DB_SNAPSHOT</a></td></tr>
@@ -365,14 +394,15 @@
<tr><td align=right>DB_ENV-&gt;memp_stat </td><td>&nbsp;<a href="../api_c/memp_stat.html#DB_STAT_ALL">DB_STAT_ALL</a></td></tr>
<tr><td align=right>DB_ENV-&gt;mutex_stat </td><td>&nbsp;<a href="../api_c/mutex_stat.html#DB_STAT_ALL">DB_STAT_ALL</a></td></tr>
<tr><td align=right>DB_ENV-&gt;rep_stat </td><td>&nbsp;<a href="../api_c/rep_stat.html#DB_STAT_ALL">DB_STAT_ALL</a></td></tr>
+<tr><td align=right>DB_ENV-&gt;repmgr_stat </td><td>&nbsp;<a href="../api_c/repmgr_stat.html#DB_STAT_ALL">DB_STAT_ALL</a></td></tr>
<tr><td align=right>DB_ENV-&gt;txn_stat </td><td>&nbsp;<a href="../api_c/txn_stat.html#DB_STAT_ALL">DB_STAT_ALL</a></td></tr>
-<tr><td align=right>DB-&gt;stat </td><td>&nbsp;<a href="../api_c/db_stat.html#DB_STAT_CLEAR">DB_STAT_CLEAR</a></td></tr>
<tr><td align=right>DB_ENV-&gt;stat_print </td><td>&nbsp;<a href="../api_c/env_stat.html#DB_STAT_CLEAR">DB_STAT_CLEAR</a></td></tr>
<tr><td align=right>DB_ENV-&gt;lock_stat </td><td>&nbsp;<a href="../api_c/lock_stat.html#DB_STAT_CLEAR">DB_STAT_CLEAR</a></td></tr>
<tr><td align=right>DB_ENV-&gt;log_stat </td><td>&nbsp;<a href="../api_c/log_stat.html#DB_STAT_CLEAR">DB_STAT_CLEAR</a></td></tr>
<tr><td align=right>DB_ENV-&gt;memp_stat </td><td>&nbsp;<a href="../api_c/memp_stat.html#DB_STAT_CLEAR">DB_STAT_CLEAR</a></td></tr>
<tr><td align=right>DB_ENV-&gt;mutex_stat </td><td>&nbsp;<a href="../api_c/mutex_stat.html#DB_STAT_CLEAR">DB_STAT_CLEAR</a></td></tr>
<tr><td align=right>DB_ENV-&gt;rep_stat </td><td>&nbsp;<a href="../api_c/rep_stat.html#DB_STAT_CLEAR">DB_STAT_CLEAR</a></td></tr>
+<tr><td align=right>DB_ENV-&gt;repmgr_stat </td><td>&nbsp;<a href="../api_c/repmgr_stat.html#DB_STAT_CLEAR">DB_STAT_CLEAR</a></td></tr>
<tr><td align=right>DB_SEQUENCE-&gt;stat </td><td>&nbsp;<a href="../api_c/seq_stat.html#DB_STAT_CLEAR">DB_STAT_CLEAR</a></td></tr>
<tr><td align=right>DB_ENV-&gt;txn_stat </td><td>&nbsp;<a href="../api_c/txn_stat.html#DB_STAT_CLEAR">DB_STAT_CLEAR</a></td></tr>
<tr><td align=right>DB_ENV-&gt;lock_stat </td><td>&nbsp;<a href="../api_c/lock_stat.html#DB_STAT_LOCK_CONF">DB_STAT_LOCK_CONF</a></td></tr>
@@ -397,6 +427,7 @@
<tr><td align=right>DB_ENV-&gt;txn_begin </td><td>&nbsp;<a href="../api_c/txn_begin.html#DB_TXN_NOSYNC">DB_TXN_NOSYNC</a></td></tr>
<tr><td align=right>DB_TXN-&gt;commit </td><td>&nbsp;<a href="../api_c/txn_commit.html#DB_TXN_NOSYNC">DB_TXN_NOSYNC</a></td></tr>
<tr><td align=right>DB-&gt;set_flags </td><td>&nbsp;<a href="../api_c/db_set_flags.html#DB_TXN_NOT_DURABLE">DB_TXN_NOT_DURABLE</a></td></tr>
+<tr><td align=right>DB_ENV-&gt;set_flags </td><td>&nbsp;<a href="../api_c/env_set_flags.html#DB_TXN_NOWAIT">DB_TXN_NOWAIT</a></td></tr>
<tr><td align=right>DB_ENV-&gt;txn_begin </td><td>&nbsp;<a href="../api_c/txn_begin.html#DB_TXN_NOWAIT">DB_TXN_NOWAIT</a></td></tr>
<tr><td align=right>DB_ENV-&gt;set_app_dispatch </td><td>&nbsp;<a href="../api_c/env_set_app_dispatch.html#DB_TXN_PRINT">DB_TXN_PRINT</a></td></tr>
<tr><td align=right>DB-&gt;cursor </td><td>&nbsp;<a href="../api_c/db_cursor.html#DB_TXN_SNAPSHOT">DB_TXN_SNAPSHOT</a></td></tr>
@@ -404,7 +435,9 @@
<tr><td align=right>DB_ENV-&gt;txn_begin </td><td>&nbsp;<a href="../api_c/txn_begin.html#DB_TXN_SNAPSHOT">DB_TXN_SNAPSHOT</a></td></tr>
<tr><td align=right>DB_ENV-&gt;txn_begin </td><td>&nbsp;<a href="../api_c/txn_begin.html#DB_TXN_SYNC">DB_TXN_SYNC</a></td></tr>
<tr><td align=right>DB_TXN-&gt;commit </td><td>&nbsp;<a href="../api_c/txn_commit.html#DB_TXN_SYNC">DB_TXN_SYNC</a></td></tr>
+<tr><td align=right>DB_ENV-&gt;txn_begin </td><td>&nbsp;<a href="../api_c/txn_begin.html#DB_TXN_WAIT">DB_TXN_WAIT</a></td></tr>
<tr><td align=right>DB_ENV-&gt;set_flags </td><td>&nbsp;<a href="../api_c/env_set_flags.html#DB_TXN_WRITE_NOSYNC">DB_TXN_WRITE_NOSYNC</a></td></tr>
+<tr><td align=right>DB_ENV-&gt;txn_begin </td><td>&nbsp;<a href="../api_c/txn_begin.html#DB_TXN_WRITE_NOSYNC">DB_TXN_WRITE_NOSYNC</a></td></tr>
<tr><td align=right>DB-&gt;open </td><td>&nbsp;<a href="../api_c/db_open.html#DB_UNKNOWN">DB_UNKNOWN</a></td></tr>
<tr><td align=right>DB-&gt;set_feedback </td><td>&nbsp;<a href="../api_c/db_set_feedback.html#DB_UPGRADE">DB_UPGRADE</a></td></tr>
<tr><td align=right>DB_ENV-&gt;open </td><td>&nbsp;<a href="../api_c/env_open.html#DB_USE_ENVIRON">DB_USE_ENVIRON</a></td></tr>
@@ -412,6 +445,8 @@
<tr><td align=right>DB_ENV-&gt;open </td><td>&nbsp;<a href="../api_c/env_open.html#DB_USE_ENVIRON_ROOT">DB_USE_ENVIRON_ROOT</a></td></tr>
<tr><td align=right>DB_ENV-&gt;remove </td><td>&nbsp;<a href="../api_c/env_remove.html#DB_USE_ENVIRON_ROOT">DB_USE_ENVIRON_ROOT</a></td></tr>
<tr><td align=right>DB_ENV-&gt;set_verbose </td><td>&nbsp;<a href="../api_c/env_set_verbose.html#DB_VERB_DEADLOCK">DB_VERB_DEADLOCK</a></td></tr>
+<tr><td align=right>DB_ENV-&gt;set_verbose </td><td>&nbsp;<a href="../api_c/env_set_verbose.html#DB_VERB_FILEOPS">DB_VERB_FILEOPS</a></td></tr>
+<tr><td align=right>DB_ENV-&gt;set_verbose </td><td>&nbsp;<a href="../api_c/env_set_verbose.html#DB_VERB_FILEOPS_ALL">DB_VERB_FILEOPS_ALL</a></td></tr>
<tr><td align=right>DB_ENV-&gt;set_verbose </td><td>&nbsp;<a href="../api_c/env_set_verbose.html#DB_VERB_RECOVERY">DB_VERB_RECOVERY</a></td></tr>
<tr><td align=right>DB_ENV-&gt;set_verbose </td><td>&nbsp;<a href="../api_c/env_set_verbose.html#DB_VERB_REGISTER">DB_VERB_REGISTER</a></td></tr>
<tr><td align=right>DB_ENV-&gt;set_verbose </td><td>&nbsp;<a href="../api_c/env_set_verbose.html#DB_VERB_REPLICATION">DB_VERB_REPLICATION</a></td></tr>
@@ -425,7 +460,6 @@
<tr><td align=right>DB_ENV-&gt;set_flags </td><td>&nbsp;<a href="../api_c/env_set_flags.html#DB_YIELDCPU">DB_YIELDCPU</a></td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../ref/lock/dead.html#2">deadlocks</a></td></tr>
<tr><td align=right>introduction to </td><td>&nbsp;<a href="../ref/debug/intro.html#2">debugging</a></td></tr>
-<tr><td align=right></td><td>&nbsp;<a href="../ref/debug/common.html#2">debugging</a> applications</td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../ref/transapp/read.html#8">degree</a> 1 isolation</td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../ref/transapp/read.html#6">degree</a> 2 isolation</td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../ref/am_misc/stability.html#4">degrees</a> of isolation</td></tr>
@@ -468,7 +502,7 @@
<tr><td align=right>remote </td><td>&nbsp;<a href="../ref/env/remote.html#2">filesystems</a></td></tr>
<tr><td align=right>page </td><td>&nbsp;<a href="../ref/am_conf/h_ffactor.html#2">fill</a> factor</td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../ref/program/ram.html#2">Flash</a> memory configurations</td></tr>
-<tr><td align=right>configuring a small memory </td><td>&nbsp;<a href="../ref/build_unix/conf.html#12">footprint</a> library</td></tr>
+<tr><td align=right>configuring a small memory </td><td>&nbsp;<a href="../ref/build_unix/conf.html#13">footprint</a> library</td></tr>
<tr><td align=right>Berkeley DB </td><td>&nbsp;<a href="../ref/program/scope.html#3">free-threaded</a> handles</td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../ref/build_unix/freebsd.html#2">FreeBSD</a></td></tr>
<tr><td align=right>specifying a database </td><td>&nbsp;<a href="../ref/am_conf/h_hash.html#2">hash</a></td></tr>
@@ -559,7 +593,7 @@
<tr><td align=right></td><td>&nbsp;<a href="../ref/am/curget.html#2">retrieving</a> records with a cursor</td></tr>
<tr><td align=right>turn off </td><td>&nbsp;<a href="../api_c/db_set_flags.html#8">reverse</a> splits in Btree databases</td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../ref/rpc/client.html#2">RPC</a> client</td></tr>
-<tr><td align=right>configuring a </td><td>&nbsp;<a href="../ref/build_unix/conf.html#11">RPC</a> client/server</td></tr>
+<tr><td align=right>configuring a </td><td>&nbsp;<a href="../ref/build_unix/conf.html#12">RPC</a> client/server</td></tr>
<tr><td align=right>introduction to </td><td>&nbsp;<a href="../ref/rpc/intro.html#2">rpc</a> client/server</td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../ref/rpc/faq.html#2">RPC</a> FAQ</td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../ref/rpc/server.html#2">RPC</a> server</td></tr>
@@ -587,11 +621,11 @@
<tr><td align=right></td><td>&nbsp;<a href="../ref/build_unix/sunos.html#2">SunOS</a></td></tr>
<tr><td align=right>loading Berkeley DB with </td><td>&nbsp;<a href="../ref/tcl/intro.html#2">Tcl</a></td></tr>
<tr><td align=right>using Berkeley DB with </td><td>&nbsp;<a href="../ref/tcl/using.html#2">Tcl</a></td></tr>
-<tr><td align=right>configuring the </td><td>&nbsp;<a href="../ref/build_unix/conf.html#13">Tcl</a> API</td></tr>
+<tr><td align=right>configuring the </td><td>&nbsp;<a href="../ref/build_unix/conf.html#14">Tcl</a> API</td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../ref/tcl/program.html#2">Tcl</a> API programming notes</td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../ref/tcl/faq.html#3">Tcl</a> FAQ</td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../api_c/env_set_tmp_dir.html#2">temporary</a> files</td></tr>
-<tr><td align=right>configuring the </td><td>&nbsp;<a href="../ref/build_unix/conf.html#14">test</a> suite</td></tr>
+<tr><td align=right>configuring the </td><td>&nbsp;<a href="../ref/build_unix/conf.html#15">test</a> suite</td></tr>
<tr><td align=right>running the </td><td>&nbsp;<a href="../ref/test/run.html#2">test</a> suite</td></tr>
<tr><td align=right>running the </td><td>&nbsp;<a href="../ref/build_unix/test.html#2">test</a> suite under UNIX</td></tr>
<tr><td align=right>running the </td><td>&nbsp;<a href="../ref/build_win/test.html#2">test</a> suite under Windows</td></tr>
@@ -640,11 +674,14 @@
<tr><td align=right></td><td>&nbsp;<a href="../ref/upgrade.4.3/toc.html#2">Upgrading</a> to release 4.3</td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../ref/upgrade.4.4/toc.html#2">Upgrading</a> to release 4.4</td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../ref/upgrade.4.5/toc.html#2">Upgrading</a> to release 4.5</td></tr>
+<tr><td align=right></td><td>&nbsp;<a href="../ref/upgrade.4.6/toc.html#2">Upgrading</a> to release 4.6</td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../ref/arch/utilities.html#2">utilities</a></td></tr>
<tr><td align=right>database </td><td>&nbsp;<a href="../ref/am/verify.html#2">verification</a></td></tr>
<tr><td align=right>building for </td><td>&nbsp;<a href="../ref/build_vxworks/faq.html#3">VxWorks</a> FAQ</td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../ref/build_vxworks/notes.html#2">VxWorks</a> notes</td></tr>
<tr><td align=right>running the test suite under </td><td>&nbsp;<a href="../ref/build_win/test.html#3">Windows</a></td></tr>
+<tr><td align=right>building for </td><td>&nbsp;<a href="../ref/build_wince/faq.html#3">Windows</a> CE FAQ</td></tr>
+<tr><td align=right></td><td>&nbsp;<a href="../ref/build_wince/notes.html#2">Windows</a> CE notes</td></tr>
<tr><td align=right>building for </td><td>&nbsp;<a href="../ref/build_win/faq.html#3">Windows</a> FAQ</td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../ref/build_win/notes.html#2">Windows</a> notes</td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../ref/xa/faq.html#3">XA</a> FAQ</td></tr>
@@ -652,6 +689,6 @@
<tr><td align=right></td><td>&nbsp;<a href="../ref/env/region.html#2">__db.001</a></td></tr>
</table>
</center>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/db_associate.html b/db/docs/api_c/db_associate.html
index 80e629979..7520486be 100644
--- a/db/docs/api_c/db_associate.html
+++ b/db/docs/api_c/db_associate.html
@@ -1,6 +1,5 @@
-<!--$Id: db_associate.so,v 10.43 2006/05/17 20:47:46 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: db_associate.so,v 10.46 2007/03/19 19:45:47 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -44,8 +43,9 @@ and 0 on success.
</p>
<h3>Parameters</h3>
<dl compact>
-<dt><b>callback</b><dd>The <b>callback</b> parameter is a callback function that creates a
-secondary key from a given primary key and data pair.
+<dt><b>callback</b><dd>The <b>callback</b> parameter is a callback function that creates the
+set of secondary keys corresponding to a given primary key and data
+pair.
<p>The callback parameter may be NULL if both the primary and secondary
database handles were opened with the <a href="../api_c/db_open.html#DB_RDONLY">DB_RDONLY</a> flag.</p>
<p>The callback takes four arguments:</p>
@@ -56,21 +56,41 @@ database handles were opened with the <a href="../api_c/db_open.html#DB_RDONLY">
item.
<dt><b>result</b><dd>The <b>result</b> parameter is a zeroed <a href="../api_c/dbt_class.html">DBT</a> in which the callback
function should fill in <b>data</b> and <b>size</b> fields that describe
-the secondary key.
+the secondary key or keys.
</dl>
-<a name="2"><!--meow--></a>
-<p>If the callback function needs to allocate memory for the <b>data</b>
-field rather than simply pointing into the primary key or datum, the
-<b>flags</b> field of the returned <a href="../api_c/dbt_class.html">DBT</a> should be set to
-DB_DBT_APPMALLOC, which indicates that Berkeley DB should free the
-memory when it is done with it.</p>
-<a name="3"><!--meow--></a>
-<p>If any key/data pair in the primary yields a null secondary key and
+<p>The callback optionally returns some special values:</p>
+<dl compact>
+<dt><a name="DB_DBT_APPMALLOC">DB_DBT_APPMALLOC</a><dd>If the callback function needs to allocate memory for the <b>result</b>
+data field (rather than simply pointing into the primary key or datum),
+DB_DBT_APPMALLOC should be set in the <b>flags</b> field of the
+<b>result</b> <a href="../api_c/dbt_class.html">DBT</a>, which indicates that Berkeley DB should free the
+memory when it is done with it.
+<dt><a name="DB_DBT_MULTIPLE">DB_DBT_MULTIPLE</a><dd>To return multiple secondary keys, DB_DBT_MULTIPLE should be set
+in the <b>flags</b> field of the <b>result</b> <a href="../api_c/dbt_class.html">DBT</a>, which
+indicates Berkeley DB should treat the <b>size</b> field as the number of
+secondary keys (zero or more), and the <b>data</b> field as a pointer
+to an array of that number of <a href="../api_c/dbt_class.html">DBT</a>s describing the set of
+secondary keys.
+<p><b>When multiple secondary keys are returned, keys may not be repeated</b>.
+In other words, there must be no repeated record numbers in the array
+for Recno and Queue databases, and keys must not compare equally using
+the secondary database's comparison function for Btree and Hash
+databases. If keys are repeated, operations may fail and the secondary
+may become inconsistent with the primary.</p>
+<p>The DB_DBT_APPMALLOC flag may be set for any <a href="../api_c/dbt_class.html">DBT</a> in the
+array of returned <a href="../api_c/dbt_class.html">DBT</a>'s to indicate that Berkeley DB should free the
+memory referenced by that particular <a href="../api_c/dbt_class.html">DBT</a>'s data field when it
+is done with it.</p>
+<p>The DB_DBT_APPMALLOC flag may be combined with
+DB_DBT_MULTIPLE in the <b>result</b> <a href="../api_c/dbt_class.html">DBT</a>'s <b>flag</b>
+field to indicate that Berkeley DB should free the array once it is done with
+all of the returned keys.</p>
+<dt><a name="DB_DONOTINDEX">DB_DONOTINDEX</a><dd>If any key/data pair in the primary yields a null secondary key and
should be left out of the secondary index, the callback function may
optionally return DB_DONOTINDEX. Otherwise, the callback
function should return 0 in case of success or an error outside of the
Berkeley DB name space in case of failure; the error code will be returned
-from the Berkeley DB call that initiated the callback.</p>
+from the Berkeley DB call that initiated the callback.
<p>If the callback function returns DB_DONOTINDEX for any key/data
pairs in the primary database, the secondary index will not contain any
reference to those key/data pairs, and such operations as cursor
@@ -78,6 +98,10 @@ iterations and range queries will reflect only the corresponding subset
of the database. If this is not desirable, the application should
ensure that the callback function is well-defined for all possible
values and never returns DB_DONOTINDEX.</p>
+<p>Returning DB_DONOTINDEX is equivalent to setting
+DB_DBT_MULTIPLE on the <b>result</b> <a href="../api_c/dbt_class.html">DBT</a> and setting
+the <b>size</b> field to zero.</p>
+</dl>
<p>Berkeley DB is not re-entrant. Callback functions should not attempt to make
library calls (for example, to release locks or close open handles).
Re-entering Berkeley DB is not guaranteed to work correctly, and the results
@@ -124,15 +148,16 @@ with the <a href="../api_c/env_open.html#DB_THREAD">DB_THREAD</a> flag it is saf
of control after the DB-&gt;associate method has returned. Note also
that either secondary keys must be unique or the secondary database must
be configured with support for duplicate data items.
-<dt><b>txnid</b><dd>If the operation is part of an application-specified
-transaction, the <b>txnid</b> parameter is a transaction handle
-returned from <a href="../api_c/txn_begin.html">DB_ENV-&gt;txn_begin</a>; if the operation is part of a Berkeley DB Concurrent Data Store
-group, the <b>txnid</b> parameter is a handle returned from
-<a href="../api_c/env_cdsgroup_begin.html">DB_ENV-&gt;cdsgroup_begin</a>; otherwise NULL. If no transaction handle is
+<dt><b>txnid</b><dd>If the operation is part of an application-specified transaction, the
+<b>txnid</b> parameter is a transaction handle returned from
+<a href="../api_c/txn_begin.html">DB_ENV-&gt;txn_begin</a>; if the operation is part of a Berkeley DB Concurrent Data Store group, the
+<b>txnid</b> parameter is a handle returned from
+<a href="../api_c/env_cdsgroup_begin.html">DB_ENV-&gt;cdsgroup_begin</a>; otherwise NULL.
+If no transaction handle is
specified, but the
operation occurs in a transactional
database,
-the operation will be implicitly transaction protected.
+the operation will be implicitly transaction protected.
</dl>
<h3>Errors</h3>
<p>The DB-&gt;associate method
@@ -157,6 +182,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/db_class.html b/db/docs/api_c/db_class.html
index 04c525b81..7293c84cf 100644
--- a/db/docs/api_c/db_class.html
+++ b/db/docs/api_c/db_class.html
@@ -1,6 +1,5 @@
<!--$Id: db_class.so,v 10.52 2005/12/01 02:02:58 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -94,6 +93,6 @@ DB
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/db_close.html b/db/docs/api_c/db_close.html
index b510ee19c..edd2acd2c 100644
--- a/db/docs/api_c/db_close.html
+++ b/db/docs/api_c/db_close.html
@@ -1,6 +1,5 @@
<!--$Id: db_close.so,v 10.55 2004/08/13 03:38:55 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -88,6 +87,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/db_compact.html b/db/docs/api_c/db_compact.html
index 05fcb7609..10e3630c3 100644
--- a/db/docs/api_c/db_compact.html
+++ b/db/docs/api_c/db_compact.html
@@ -1,6 +1,5 @@
<!--$Id: db_compact.so,v 1.6 2006/09/08 18:36:02 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -135,6 +134,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/db_cursor.html b/db/docs/api_c/db_cursor.html
index ee39e73c2..72d142dda 100644
--- a/db/docs/api_c/db_cursor.html
+++ b/db/docs/api_c/db_cursor.html
@@ -1,6 +1,5 @@
-<!--$Id: db_cursor.so,v 10.53 2006/08/08 05:24:02 mjc Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: db_cursor.so,v 10.54 2007/05/31 18:52:36 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -42,18 +41,18 @@ a pointer to the allocated cursor is copied.
<dt><b>flags</b><dd>The <b>flags</b> parameter must be set to 0 or by bitwise inclusively <b>OR</b>'ing together one
or more of the following values:
<dl compact>
-<dt><a name="DB_READ_COMMITTED">DB_READ_COMMITTED</a><dd>This cursor will have degree 2 isolation. This ensures the stability
-of the current data item read by this cursor but permits data read by
-this cursor to be modified or deleted prior to the commit of the
+<dt><a name="DB_READ_COMMITTED">DB_READ_COMMITTED</a><dd>Configure a transactional cursor to have degree 2 isolation. This ensures
+the stability of the current data item read by this cursor but permits data
+read by this cursor to be modified or deleted prior to the commit of the
transaction for this cursor.
-<dt><a name="DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a><dd>This cursor will have degree 1 isolation. Read operations performed by
-the cursor may return modified but not yet committed data. Silently
-ignored if the <a href="../api_c/db_open.html#DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a> flag was not specified when
-the underlying database was opened.
+<dt><a name="DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a><dd>Configure a transactional cursor to have degree 1 isolation. Read
+operations performed by the cursor may return modified but not yet
+committed data. Silently ignored if the <a href="../api_c/db_open.html#DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a>
+flag was not specified when the underlying database was opened.
<dt><a name="DB_WRITECURSOR">DB_WRITECURSOR</a><dd>Specify that the cursor will be used to update the database. The
underlying database environment must have been opened using the
<a href="../api_c/env_open.html#DB_INIT_CDB">DB_INIT_CDB</a> flag.
-<dt><a name="DB_TXN_SNAPSHOT">DB_TXN_SNAPSHOT</a><dd>Specify that the cursor operate with read-only
+<dt><a name="DB_TXN_SNAPSHOT">DB_TXN_SNAPSHOT</a><dd>Configure a transactional cursor to operate with read-only
<a href="../ref/transapp/read.html">snapshot isolation</a>. For databases
with the <a href="../api_c/db_open.html#DB_MULTIVERSION">DB_MULTIVERSION</a> flag set, data values will be read as
they are when the cursor is opened, without taking read locks. This
@@ -92,6 +91,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/db_del.html b/db/docs/api_c/db_del.html
index df370a156..9cdb07d70 100644
--- a/db/docs/api_c/db_del.html
+++ b/db/docs/api_c/db_del.html
@@ -1,6 +1,5 @@
<!--$Id: db_del.so,v 10.49 2006/09/13 14:30:52 mjc Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -46,15 +45,16 @@ and 0 on success.
<dl compact>
<dt><b>flags</b><dd>The <b>flags</b> parameter is currently unused, and must be set to 0.
<dt><b>key</b><dd>The key <a href="../api_c/dbt_class.html">DBT</a> operated on.
-<dt><b>txnid</b><dd>If the operation is part of an application-specified
-transaction, the <b>txnid</b> parameter is a transaction handle
-returned from <a href="../api_c/txn_begin.html">DB_ENV-&gt;txn_begin</a>; if the operation is part of a Berkeley DB Concurrent Data Store
-group, the <b>txnid</b> parameter is a handle returned from
-<a href="../api_c/env_cdsgroup_begin.html">DB_ENV-&gt;cdsgroup_begin</a>; otherwise NULL. If no transaction handle is
+<dt><b>txnid</b><dd>If the operation is part of an application-specified transaction, the
+<b>txnid</b> parameter is a transaction handle returned from
+<a href="../api_c/txn_begin.html">DB_ENV-&gt;txn_begin</a>; if the operation is part of a Berkeley DB Concurrent Data Store group, the
+<b>txnid</b> parameter is a handle returned from
+<a href="../api_c/env_cdsgroup_begin.html">DB_ENV-&gt;cdsgroup_begin</a>; otherwise NULL.
+If no transaction handle is
specified, but the
operation occurs in a transactional
database,
-the operation will be implicitly transaction protected.
+the operation will be implicitly transaction protected.
</dl>
<h3>Errors</h3>
<p>The DB-&gt;del method
@@ -89,6 +89,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/db_err.html b/db/docs/api_c/db_err.html
index 660034861..ad9010a1a 100644
--- a/db/docs/api_c/db_err.html
+++ b/db/docs/api_c/db_err.html
@@ -1,7 +1,6 @@
<!--$Id: db_err.so,v 1.3 2002/08/18 21:15:48 bostic Exp $-->
<!--$Id: env_err.so,v 10.34 2006/04/27 20:17:47 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -79,6 +78,6 @@ string.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/db_exists.html b/db/docs/api_c/db_exists.html
new file mode 100644
index 000000000..3907c90e1
--- /dev/null
+++ b/db/docs/api_c/db_exists.html
@@ -0,0 +1,81 @@
+<!--$Id: db_exists.so,v 1.1 2007/07/12 18:27:42 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
+<!--See the file LICENSE for redistribution information.-->
+<html>
+<head>
+<title>Berkeley DB: DB-&gt;exists</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
+</head>
+<body bgcolor=white>
+<table width="100%"><tr valign=top>
+<td>
+<h3>DB-&gt;exists</h3>
+</td>
+<td align=right>
+<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a>
+<a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a></td>
+</tr></table>
+<hr size=1 noshade>
+<tt>
+<h3><pre>
+#include &lt;db.h&gt;
+<p>
+int
+DB-&gt;exists(DB *db, DB_TXN *txnid, DBT *key, u_int32_t flags);
+</pre></h3>
+<hr size=1 noshade>
+<h3>Description: DB-&gt;exists</h3>
+<p>The DB-&gt;exists method returns if the specified key appears in the
+database.</p>
+<p>The DB-&gt;exists method will return <a href="../ref/program/errorret.html#DB_NOTFOUND">DB_NOTFOUND</a> if the specified key is not in the database.
+The DB-&gt;exists method will return <a href="../ref/program/errorret.html#DB_KEYEMPTY">DB_KEYEMPTY</a> if the database is a Queue or Recno database and
+the specified key exists, but was never explicitly created by the
+application or was later deleted.
+Unless otherwise specified, the DB-&gt;exists method
+returns a non-zero error value on failure
+and 0 on success.
+</p>
+<h3>Parameters</h3>
+<dl compact>
+<dt><b>flags</b><dd>The <b>flags</b> parameter must be set to 0 or
+one of the following values:
+In addition, the following flags may be set by
+bitwise inclusively <b>OR</b>'ing them into the <b>flags</b> parameter:
+<dl compact>
+<dt><a name="DB_READ_COMMITTED">DB_READ_COMMITTED</a><dd>Configure a transactional read operation to have degree 2 isolation (the
+read is not repeatable).
+<dt><a name="DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a><dd>Configure a transactional read operation to have degree 1 isolation,
+reading modified but not yet committed data. Silently ignored if the
+<a href="../api_c/db_open.html#DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a> flag was not specified when the underlying
+database was opened.
+<dt><a name="DB_RMW">DB_RMW</a><dd>Acquire write locks instead of read locks when doing the read, if
+locking is configured. Setting this flag can eliminate deadlock during
+a read-modify-write cycle by acquiring the write lock during the read
+part of the cycle so that another thread of control acquiring a read
+lock for the same item, in its own read-modify-write cycle, will not
+result in deadlock.
+<p>Because the DB-&gt;exists method will not hold locks across
+Berkeley DB calls in non-transactional operations, the <a href="../api_c/dbc_get.html#DB_RMW">DB_RMW</a> flag to
+the DB-&gt;exists call is meaningful only in the presence of
+transactions.</p>
+</dl>
+<dt><b>key</b><dd>The key <a href="../api_c/dbt_class.html">DBT</a> operated on.
+<dt><b>txnid</b><dd>If the operation is part of an application-specified transaction, the
+<b>txnid</b> parameter is a transaction handle returned from
+<a href="../api_c/txn_begin.html">DB_ENV-&gt;txn_begin</a>; if the operation is part of a Berkeley DB Concurrent Data Store group, the
+<b>txnid</b> parameter is a handle returned from
+<a href="../api_c/env_cdsgroup_begin.html">DB_ENV-&gt;cdsgroup_begin</a>; otherwise NULL.
+</dl>
+<hr size=1 noshade>
+<h3>Class</h3>
+<a href="../api_c/db_class.html">DB</a>
+<h3>See Also</h3>
+<a href="../api_c/db_list.html">Databases and Related Methods</a>
+</tt>
+<table width="100%"><tr><td><br></td><td align=right>
+<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
+</body>
+</html>
diff --git a/db/docs/api_c/db_fd.html b/db/docs/api_c/db_fd.html
index 4a16f872c..ad4589e98 100644
--- a/db/docs/api_c/db_fd.html
+++ b/db/docs/api_c/db_fd.html
@@ -1,6 +1,5 @@
<!--$Id: db_fd.so,v 10.31 2005/06/14 14:06:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -53,6 +52,6 @@ and 0 on success.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/db_get.html b/db/docs/api_c/db_get.html
index ff73c65d6..448211a6a 100644
--- a/db/docs/api_c/db_get.html
+++ b/db/docs/api_c/db_get.html
@@ -1,6 +1,5 @@
-<!--$Id: db_get.so,v 10.89 2006/09/13 14:30:52 mjc Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: db_get.so,v 10.90 2007/05/31 18:52:36 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -39,7 +38,7 @@ are returned in the structure to which <b>data</b> refers.</p>
first data item for the designated key. Duplicates are sorted by insert
order, except where this order has been overridden by cursor operations.
<b>Retrieval of duplicates requires the use of cursor operations.</b>
-See <a href="../api_c/dbc_get.html">DBcursor-&gt;c_get</a> for details.</p>
+See <a href="../api_c/dbc_get.html">DBcursor-&gt;get</a> for details.</p>
<p>When called on a database that has been made into a secondary index
using the <a href="../api_c/db_associate.html">DB-&gt;associate</a> method, the DB-&gt;get and
DB-&gt;pget methods return the key from the secondary index and the data
@@ -121,17 +120,18 @@ into secondary indices using the <a href="../api_c/db_associate.html">DB-&gt;ass
<p>See
<a href="../api_c/dbt_bulk.html#DB_MULTIPLE_INIT">DB_MULTIPLE_INIT</a>
for more information.</p>
-<dt><a name="DB_READ_COMMITTED">DB_READ_COMMITTED</a><dd>Perform the get operation with degree 2 isolation. The read is not
-repeatable.
-<dt><a name="DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a><dd>Perform the get operation with degree 1 isolation, reading modified but
-not yet committed data. Silently ignored if the
+<dt><a name="DB_READ_COMMITTED">DB_READ_COMMITTED</a><dd>Configure a transactional get operation to have degree 2 isolation (the
+read is not repeatable).
+<dt><a name="DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a><dd>Configure a transactional get operation to have degree 1 isolation,
+reading modified but not yet committed data. Silently ignored if the
<a href="../api_c/db_open.html#DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a> flag was not specified when the underlying
database was opened.
-<dt><a name="DB_RMW">DB_RMW</a><dd>Acquire write locks instead of read locks when doing the retrieval.
-Setting this flag can eliminate deadlock during a read-modify-write
-cycle by acquiring the write lock during the read part of the cycle so
-that another thread of control acquiring a read lock for the same item,
-in its own read-modify-write cycle, will not result in deadlock.
+<dt><a name="DB_RMW">DB_RMW</a><dd>Acquire write locks instead of read locks when doing the read, if
+locking is configured. Setting this flag can eliminate deadlock during
+a read-modify-write cycle by acquiring the write lock during the read
+part of the cycle so that another thread of control acquiring a read
+lock for the same item, in its own read-modify-write cycle, will not
+result in deadlock.
<p>Because the DB-&gt;get method will not hold locks across
Berkeley DB calls in non-transactional operations, the <a href="../api_c/dbc_get.html#DB_RMW">DB_RMW</a> flag
to the DB-&gt;get call is meaningful only in the presence of
@@ -139,15 +139,16 @@ transactions.</p>
</dl>
<dt><b>key</b><dd>The key <a href="../api_c/dbt_class.html">DBT</a> operated on.
<dt><b>pkey</b><dd>The <b>pkey</b> parameter is the return key from the primary database.
-<dt><b>txnid</b><dd>If the operation is part of an application-specified
-transaction, the <b>txnid</b> parameter is a transaction handle
-returned from <a href="../api_c/txn_begin.html">DB_ENV-&gt;txn_begin</a>; if the operation is part of a Berkeley DB Concurrent Data Store
-group, the <b>txnid</b> parameter is a handle returned from
-<a href="../api_c/env_cdsgroup_begin.html">DB_ENV-&gt;cdsgroup_begin</a>; otherwise NULL. If no transaction handle is
+<dt><b>txnid</b><dd>If the operation is part of an application-specified transaction, the
+<b>txnid</b> parameter is a transaction handle returned from
+<a href="../api_c/txn_begin.html">DB_ENV-&gt;txn_begin</a>; if the operation is part of a Berkeley DB Concurrent Data Store group, the
+<b>txnid</b> parameter is a handle returned from
+<a href="../api_c/env_cdsgroup_begin.html">DB_ENV-&gt;cdsgroup_begin</a>; otherwise NULL.
+If no transaction handle is
specified, but the
operation occurs in a transactional
database,
-the operation will be implicitly transaction protected.
+the operation will be implicitly transaction protected.
</dl>
<h3>Errors</h3>
<p>The DB-&gt;get method
@@ -191,6 +192,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/db_get_byteswapped.html b/db/docs/api_c/db_get_byteswapped.html
index 73dae3fb3..1a616dae2 100644
--- a/db/docs/api_c/db_get_byteswapped.html
+++ b/db/docs/api_c/db_get_byteswapped.html
@@ -1,6 +1,5 @@
<!--$Id: db_get_byteswapped.so,v 10.23 2004/08/13 03:38:55 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -63,6 +62,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/db_get_mpf.html b/db/docs/api_c/db_get_mpf.html
index bf2a64f0e..84378293d 100644
--- a/db/docs/api_c/db_get_mpf.html
+++ b/db/docs/api_c/db_get_mpf.html
@@ -1,6 +1,5 @@
<!--$Id: db_get_mpf.so,v 1.8 2005/07/20 16:22:18 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -39,6 +38,6 @@ application.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/db_get_type.html b/db/docs/api_c/db_get_type.html
index 8860df9f6..83358633a 100644
--- a/db/docs/api_c/db_get_type.html
+++ b/db/docs/api_c/db_get_type.html
@@ -1,6 +1,5 @@
<!--$Id: db_get_type.so,v 10.27 2004/08/13 03:38:55 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -59,6 +58,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/db_getenv.html b/db/docs/api_c/db_getenv.html
index 68c891326..ed3398ff4 100644
--- a/db/docs/api_c/db_getenv.html
+++ b/db/docs/api_c/db_getenv.html
@@ -1,6 +1,5 @@
<!--$Id: db_getenv.so,v 10.9 2005/07/20 16:22:49 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -39,6 +38,6 @@ application.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/db_join.html b/db/docs/api_c/db_join.html
index f39fef408..a0bd26f6e 100644
--- a/db/docs/api_c/db_join.html
+++ b/db/docs/api_c/db_join.html
@@ -1,6 +1,5 @@
-<!--$Id: db_join.so,v 10.57 2005/02/10 20:02:28 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: db_join.so,v 10.58 2007/05/31 18:52:36 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -34,10 +33,10 @@ information on how to organize your data to use this functionality, see
<a href="../ref/am/join.html">Equality join</a>.</p>
<p>The DB-&gt;join method method is called using the <a href="../api_c/db_class.html">DB</a> handle of
the primary database.</p>
-<p>The join cursor supports only the <a href="../api_c/dbc_get.html">DBcursor-&gt;c_get</a> and <b>dbc_close</b>
+<p>The join cursor supports only the <a href="../api_c/dbc_get.html">DBcursor-&gt;get</a> and <b>dbc_close</b>
cursor functions:</p>
<dl compact>
-<dt><a href="../api_c/dbc_get.html">DBcursor-&gt;c_get</a><dd>Iterates over the values associated with the keys to which each item in
+<dt><a href="../api_c/dbc_get.html">DBcursor-&gt;get</a><dd>Iterates over the values associated with the keys to which each item in
<b>curslist</b> was initialized. Any data value that appears in all
items specified by the <b>curslist</b> parameter is then used as a key
into the <b>primary</b>, and the key/data pair found in the
@@ -52,16 +51,18 @@ The data parameter is left unchanged.
In addition, the following flag may be set by
bitwise inclusively <b>OR</b>'ing it into the <b>flags</b> parameter:
<dl compact>
-<dt><a name="DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a><dd>Read modified but not yet committed data. Silently ignored if the
+<dt><a name="DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a><dd>Configure a transactional join operation to have degree 1 isolation,
+reading modified but not yet committed data. Silently ignored if the
<a href="../api_c/db_open.html#DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a> flag was not specified when the underlying
database was opened.
-<dt><a name="DB_RMW">DB_RMW</a><dd>Acquire write locks instead of read locks when doing the retrieval.
-Setting this flag can eliminate deadlock during a read-modify-write
-cycle by acquiring the write lock during the read part of the cycle so
-that another thread of control acquiring a read lock for the same item,
-in its own read-modify-write cycle, will not result in deadlock.
+<dt><a name="DB_RMW">DB_RMW</a><dd>Acquire write locks instead of read locks when doing the read, if
+locking is configured. Setting this flag can eliminate deadlock during
+a read-modify-write cycle by acquiring the write lock during the read
+part of the cycle so that another thread of control acquiring a read
+lock for the same item, in its own read-modify-write cycle, will not
+result in deadlock.
</dl>
-<dt><a href="../api_c/dbc_close.html">DBcursor-&gt;c_close</a><dd>Close the returned cursor and release all resources. (Closing the cursors
+<dt><a href="../api_c/dbc_close.html">DBcursor-&gt;close</a><dd>Close the returned cursor and release all resources. (Closing the cursors
in <b>curslist</b> is the responsibility of the caller.)
</dl>
<p>The DB-&gt;join method
@@ -73,7 +74,7 @@ and 0 on success.
<dt><b>curslist</b><dd>The <b>curslist</b> parameter contains a NULL terminated array of cursors.
Each cursor must have been initialized to refer to the key on which the
underlying database should be joined. Typically, this initialization is done
-by a <a href="../api_c/dbc_get.html">DBcursor-&gt;c_get</a> call with the <a href="../api_c/dbc_get.html#DB_SET">DB_SET</a> flag specified. Once the
+by a <a href="../api_c/dbc_get.html">DBcursor-&gt;get</a> call with the <a href="../api_c/dbc_get.html#DB_SET">DB_SET</a> flag specified. Once the
cursors have been passed as part of a <b>curslist</b>, they should not
be accessed or modified until the newly created join cursor has been closed,
or else inconsistent results may be returned.
@@ -114,7 +115,7 @@ unrolled a committed transaction.
<dt>DB_SECONDARY_BAD<dd>A secondary index references a nonexistent primary key.
</dl>
<dl compact>
-<dt>EINVAL<dd>If cursor methods other than <a href="../api_c/dbc_get.html">DBcursor-&gt;c_get</a> or <a href="../api_c/dbc_close.html">DBcursor-&gt;c_close</a> were
+<dt>EINVAL<dd>If cursor methods other than <a href="../api_c/dbc_get.html">DBcursor-&gt;get</a> or <a href="../api_c/dbc_close.html">DBcursor-&gt;close</a> were
called; or if an
invalid flag value or parameter was specified.
</dl>
@@ -127,6 +128,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/db_key_range.html b/db/docs/api_c/db_key_range.html
index 5391d5dba..7c688809c 100644
--- a/db/docs/api_c/db_key_range.html
+++ b/db/docs/api_c/db_key_range.html
@@ -1,6 +1,5 @@
<!--$Id: db_key_range.so,v 10.23 2004/08/13 03:38:55 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -58,15 +57,17 @@ contains three elements of type double: <b>less</b>, <b>equal</b>, and
field <b>less</b> is 0.05, 5% of the keys in the database are less than
the <b>key</b> parameter. The value for <b>equal</b> will be zero if
there is no matching key, and will be non-zero otherwise.
-<dt><b>txnid</b><dd>If the operation is part of an application-specified
-transaction, the <b>txnid</b> parameter is a transaction handle
-returned from <a href="../api_c/txn_begin.html">DB_ENV-&gt;txn_begin</a>; if the operation is part of a Berkeley DB Concurrent Data Store
-group, the <b>txnid</b> parameter is a handle returned from
-<a href="../api_c/env_cdsgroup_begin.html">DB_ENV-&gt;cdsgroup_begin</a>; otherwise NULL. If no transaction handle is
+<dt><b>txnid</b><dd>If the operation is part of an application-specified transaction, the
+<b>txnid</b> parameter is a transaction handle returned from
+<a href="../api_c/txn_begin.html">DB_ENV-&gt;txn_begin</a>; if the operation is part of a Berkeley DB Concurrent Data Store group, the
+<b>txnid</b> parameter is a handle returned from
+<a href="../api_c/env_cdsgroup_begin.html">DB_ENV-&gt;cdsgroup_begin</a>; otherwise NULL.
+If no transaction handle is
specified, but the
operation occurs in a transactional
database,
-the operation will be implicitly transaction protected. The DB-&gt;key_range method does not retain the locks it acquires for the
+the operation will be implicitly transaction protected.
+The DB-&gt;key_range method does not retain the locks it acquires for the
life of the transaction, so estimates may not be repeatable.
<dt><b>flags</b><dd>The <b>flags</b> parameter is currently unused, and must be set to 0.
</dl>
@@ -97,6 +98,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/db_list.html b/db/docs/api_c/db_list.html
index 6b651793d..a0d105e2f 100644
--- a/db/docs/api_c/db_list.html
+++ b/db/docs/api_c/db_list.html
@@ -1,6 +1,5 @@
<!--$Id: db_list.so,v 1.1 2002/08/30 20:00:48 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -10,7 +9,7 @@
</head>
<body bgcolor=white>
<h3 align=center>Berkeley DB: Databases and Related Methods</h3>
-<!--$Id: m4.methods,v 1.11 2006/08/25 16:40:00 bostic Exp $-->
+<!--$Id: m4.methods,v 1.14 2007/07/12 18:27:42 bostic Exp $-->
<table border=1 align=center>
<tr><th>Database Operations</th><th>Description</th></tr>
<!--Db::--><tr><td><a href="../api_c/db_class.html">db_create</a></td><td>Create a database handle</td></tr>
@@ -20,6 +19,7 @@
<!--Db::cursor--><tr><td><a href="../api_c/db_cursor.html">DB-&gt;cursor</a></td><td>Create a cursor</td></tr>
<!--Db::del--><tr><td><a href="../api_c/db_del.html">DB-&gt;del</a></td><td>Delete items from a database</td></tr>
<!--Db::err--><tr><td><a href="../api_c/db_err.html">DB-&gt;err</a>, <a href="../api_c/db_err.html">DB-&gt;errx</a></td><td>Error message</td></tr>
+<!--Db::exists--><tr><td><a href="../api_c/db_exists.html">DB-&gt;exists</a></td><td>Return if an item appears in a database</td></tr>
<!--Db::fd--><tr><td><a href="../api_c/db_fd.html">DB-&gt;fd</a></td><td>Return a file descriptor from a database</td></tr>
<!--Db::get--><tr><td><a href="../api_c/db_get.html">DB-&gt;get</a>, <a href="../api_c/db_get.html">DB-&gt;pget</a></td><td>Get items from a database</td></tr>
<!--Db::get_byteswapped--><tr><td><a href="../api_c/db_get_byteswapped.html">DB-&gt;get_byteswapped</a></td><td>Return if the underlying database is in host order</td></tr>
@@ -30,6 +30,7 @@
<!--Db::put--><tr><td><a href="../api_c/db_put.html">DB-&gt;put</a></td><td>Store items into a database</td></tr>
<!--Db::remove--><tr><td><a href="../api_c/db_remove.html">DB-&gt;remove</a></td><td>Remove a database</td></tr>
<!--Db::rename--><tr><td><a href="../api_c/db_rename.html">DB-&gt;rename</a></td><td>Rename a database</td></tr>
+<!--Db::set_priority--><tr><td><a href="../api_c/db_set_priority.html">DB-&gt;set_priority</a></td><td>Set cache page priority</td></tr>
<!--Db::stat--><tr><td><a href="../api_c/db_stat.html">DB-&gt;stat</a>, <a href="../api_c/db_stat.html">DB-&gt;stat_print</a></td><td>Database statistics</td></tr>
<!--Db::sync--><tr><td><a href="../api_c/db_sync.html">DB-&gt;sync</a></td><td>Flush a database to stable storage</td></tr>
<!--Db::truncate--><tr><td><a href="../api_c/db_truncate.html">DB-&gt;truncate</a></td><td>Empty a database</td></tr>
@@ -58,12 +59,13 @@
<!--Db::set_re_pad--><tr><td><a href="../api_c/db_set_re_pad.html">DB-&gt;set_re_pad</a></td><td>Set the fixed-length record pad byte</td></tr>
<!--Db::set_re_source--><tr><td><a href="../api_c/db_set_re_source.html">DB-&gt;set_re_source</a></td><td>Set the backing Recno text file</td></tr>
<tr><th>Hash Configuration</th><th><br></th></tr>
+<!--Db::set_h_compare--><tr><td><a href="../api_c/db_set_h_compare.html">DB-&gt;set_h_compare</a></td><td>Set a Hash comparison function</td></tr>
<!--Db::set_h_ffactor--><tr><td><a href="../api_c/db_set_h_ffactor.html">DB-&gt;set_h_ffactor</a></td><td>Set the Hash table density</td></tr>
<!--Db::set_h_hash--><tr><td><a href="../api_c/db_set_h_hash.html">DB-&gt;set_h_hash</a></td><td>Set a hashing function</td></tr>
<!--Db::set_h_nelem--><tr><td><a href="../api_c/db_set_h_nelem.html">DB-&gt;set_h_nelem</a></td><td>Set the Hash table size</td></tr>
<tr><th>Queue Configuration</th><th><br></th></tr>
<!--Db::set_q_extentsize--><tr><td><a href="../api_c/db_set_q_extentsize.html">DB-&gt;set_q_extentsize</a></td><td>Set Queue database extent size</td></tr>
</table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/db_lsn.html b/db/docs/api_c/db_lsn.html
deleted file mode 100644
index 1fc62e5e6..000000000
--- a/db/docs/api_c/db_lsn.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!--$Id: db_lsn.so,v 10.7 1999/12/20 08:52:27 bostic Exp $-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB: DB_LSN</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
- <a name="2"><!--meow--></a>
-<table><tr valign=top>
-<td>
-<h1>DB_LSN</h1>
-</td>
-<td width="1%">
-<a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;db.h&gt;
-</pre></h3>
-<h1>Description</h1>
-<p>A <a href="../api_c/db_lsn.html">DB_LSN</a> is a <b>log sequence number</b>, which indicates a
-unique position in the log. The <a href="../api_c/db_lsn.html">DB_LSN</a> structure is completely
-opaque, and no application should ever need to look inside.
-<a href="../api_c/db_lsn.html">DB_LSN</a> structures are used by the logging and memory pool
-subsystems.
-</tt>
-<table><tr><td><br></td><td width="1%">
-<a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_c/db_open.html b/db/docs/api_c/db_open.html
index de5dfca30..744b0e875 100644
--- a/db/docs/api_c/db_open.html
+++ b/db/docs/api_c/db_open.html
@@ -1,6 +1,5 @@
-<!--$Id: db_open.so,v 10.119 2006/09/13 14:30:52 mjc Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: db_open.so,v 10.122 2007/05/31 18:52:36 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -30,6 +29,9 @@ int
DB-&gt;get_dbname(DB *db, const char **filenamep, const char **dbnamep);
<p>
int
+DB-&gt;get_multiple(DB *db);
+<p>
+int
DB-&gt;get_open_flags(DB *db, u_int32_t *flagsp);
<p>
int
@@ -108,11 +110,11 @@ not supported by the queue format.
<dt><a name="DB_RDONLY">DB_RDONLY</a><dd>Open the database for reading only. Any attempt to modify items in the
database will fail, regardless of the actual permissions of any
underlying files.
-<dt><a name="DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a><dd>Support read operations with degree 1 isolation. Read operations on the
-database may request the return of modified but not yet committed data.
-This flag must be specified on all <a href="../api_c/db_class.html">DB</a> handles used to perform
-dirty reads or database updates, otherwise requests for dirty reads may
-not be honored and the read may block.
+<dt><a name="DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a><dd>Support transactional read operations with degree 1 isolation. Read
+operations on the database may request the return of modified but not
+yet committed data. This flag must be specified on all <a href="../api_c/db_class.html">DB</a>
+handles used to perform dirty reads or database updates, otherwise
+requests for dirty reads may not be honored and the read may block.
<dt><a name="DB_THREAD">DB_THREAD</a><dd>Cause the <a href="../api_c/db_class.html">DB</a> handle returned by DB-&gt;open to be
<i>free-threaded</i>; that is, concurrently usable by multiple
threads in the address space.
@@ -134,14 +136,16 @@ defaults, and is not further specified by Berkeley DB. System shared memory
segments created by the database open are created with mode <b>mode</b>, unmodified
by the process' umask value. If <b>mode</b> is 0, the database open will use a
default mode of readable and writable by both owner and group.</p>
-<dt><b>txnid</b><dd>If the operation is part of an application-specified
-transaction, the <b>txnid</b> parameter is a transaction handle
-returned from <a href="../api_c/txn_begin.html">DB_ENV-&gt;txn_begin</a>; if the operation is part of a Berkeley DB Concurrent Data Store
-group, the <b>txnid</b> parameter is a handle returned from
-<a href="../api_c/env_cdsgroup_begin.html">DB_ENV-&gt;cdsgroup_begin</a>; otherwise NULL. If no transaction handle is
+<dt><b>txnid</b><dd>If the operation is part of an application-specified transaction, the
+<b>txnid</b> parameter is a transaction handle returned from
+<a href="../api_c/txn_begin.html">DB_ENV-&gt;txn_begin</a>; if the operation is part of a Berkeley DB Concurrent Data Store group, the
+<b>txnid</b> parameter is a handle returned from
+<a href="../api_c/env_cdsgroup_begin.html">DB_ENV-&gt;cdsgroup_begin</a>; otherwise NULL.
+If no transaction handle is
specified, but the
DB_AUTO_COMMIT flag is specified,
-the operation will be implicitly transaction protected. Note that transactionally protected operations on a <a href="../api_c/db_class.html">DB</a> handle
+the operation will be implicitly transaction protected.
+Note that transactionally protected operations on a <a href="../api_c/db_class.html">DB</a> handle
requires the <a href="../api_c/db_class.html">DB</a> handle itself be transactionally protected
during its open. Also note that the transaction must be committed before
the handle is closed; see <a href="../ref/program/scope.html">Berkeley DB
@@ -206,8 +210,8 @@ unrolled a committed transaction.
<dt>DB_REP_LOCKOUT<dd>The operation was blocked by client/master synchronization.
</dl>
<hr size=1 noshade>
-<h3>Description: DB-&gt;get_database</h3>
-<p>The DB-&gt;get_database method returns the current filename and database
+<h3>Description: DB-&gt;get_dbname</h3>
+<p>The DB-&gt;get_dbname method returns the current filename and database
name.</p>
<h3>Parameters</h3>
<dl compact>
@@ -216,13 +220,23 @@ a pointer to the current filename is copied.
<dt><b>dbnamep</b><dd>The <b>dbnamep</b> parameter references memory into which
a pointer to the current database name is copied.
</dl>
-<p>The DB-&gt;get_database method may be called at any time during the life of the
+<p>The DB-&gt;get_dbname method may be called at any time during the life of the
application.</p>
-<p>The DB-&gt;get_database method
+<p>The DB-&gt;get_dbname method
returns a non-zero error value on failure
and 0 on success.
</p>
<hr size=1 noshade>
+<h3>Description: <a href="../api_c/db_open.html">DB-&gt;get_multiple</a></h3>
+<p>The <a href="../api_c/db_open.html">DB-&gt;get_multiple</a> method returns non-zero if the <a href="../api_c/db_class.html">DB</a> handle
+references a physical file supporting multiple databases.</p>
+<p>In this case, the <a href="../api_c/db_class.html">DB</a> handle is a handle on a database whose key
+values are the names of the databases stored in the physical file and
+whose data values are opaque objects. No keys or data values may be
+modified or stored using the database handle.</p>
+<p>The <a href="../api_c/db_open.html">DB-&gt;get_multiple</a> method may not be called before the DB-&gt;open method has been
+called.</p>
+<hr size=1 noshade>
<h3>Description: DB-&gt;get_open_flags</h3>
<p>The DB-&gt;get_open_flags method returns the current open method flags.</p>
<p>The DB-&gt;get_open_flags method may not be called before the DB-&gt;open method has been
@@ -251,6 +265,6 @@ application.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/db_put.html b/db/docs/api_c/db_put.html
index 58f46cb3c..78c2b5ad7 100644
--- a/db/docs/api_c/db_put.html
+++ b/db/docs/api_c/db_put.html
@@ -1,6 +1,5 @@
<!--$Id: db_put.so,v 10.59 2006/09/13 14:30:52 mjc Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -73,15 +72,16 @@ database.
</dl>
<dt><b>data</b><dd>The data <a href="../api_c/dbt_class.html">DBT</a> operated on.
<dt><b>key</b><dd>The key <a href="../api_c/dbt_class.html">DBT</a> operated on.
-<dt><b>txnid</b><dd>If the operation is part of an application-specified
-transaction, the <b>txnid</b> parameter is a transaction handle
-returned from <a href="../api_c/txn_begin.html">DB_ENV-&gt;txn_begin</a>; if the operation is part of a Berkeley DB Concurrent Data Store
-group, the <b>txnid</b> parameter is a handle returned from
-<a href="../api_c/env_cdsgroup_begin.html">DB_ENV-&gt;cdsgroup_begin</a>; otherwise NULL. If no transaction handle is
+<dt><b>txnid</b><dd>If the operation is part of an application-specified transaction, the
+<b>txnid</b> parameter is a transaction handle returned from
+<a href="../api_c/txn_begin.html">DB_ENV-&gt;txn_begin</a>; if the operation is part of a Berkeley DB Concurrent Data Store group, the
+<b>txnid</b> parameter is a handle returned from
+<a href="../api_c/env_cdsgroup_begin.html">DB_ENV-&gt;cdsgroup_begin</a>; otherwise NULL.
+If no transaction handle is
specified, but the
operation occurs in a transactional
database,
-the operation will be implicitly transaction protected.
+the operation will be implicitly transaction protected.
</dl>
<a name="2"><!--meow--></a>
<a name="3"><!--meow--></a>
@@ -122,6 +122,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/db_remove.html b/db/docs/api_c/db_remove.html
index eb033b406..dc922bd77 100644
--- a/db/docs/api_c/db_remove.html
+++ b/db/docs/api_c/db_remove.html
@@ -1,7 +1,6 @@
<!--$Id: db_remove.so,v 10.3 2002/08/18 21:15:51 bostic Exp $-->
<!--$Id: env_dbremove.so,v 10.49 2004/12/16 19:13:01 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -88,6 +87,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/db_rename.html b/db/docs/api_c/db_rename.html
index cfc89c30b..11594d557 100644
--- a/db/docs/api_c/db_rename.html
+++ b/db/docs/api_c/db_rename.html
@@ -1,7 +1,6 @@
<!--$Id: db_rename.so,v 10.3 2002/08/18 21:15:51 bostic Exp $-->
<!--$Id: env_dbrename.so,v 10.37 2004/12/16 19:13:01 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -91,6 +90,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/db_set_alloc.html b/db/docs/api_c/db_set_alloc.html
index dd2ec4d7e..757535270 100644
--- a/db/docs/api_c/db_set_alloc.html
+++ b/db/docs/api_c/db_set_alloc.html
@@ -1,7 +1,6 @@
<!--$Id: db_set_alloc.so,v 10.3 2002/08/18 21:15:51 bostic Exp $-->
<!--$Id: env_set_alloc.so,v 1.22 2004/08/13 03:38:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -83,6 +82,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/db_set_append_recno.html b/db/docs/api_c/db_set_append_recno.html
index f20531277..2068b22fe 100644
--- a/db/docs/api_c/db_set_append_recno.html
+++ b/db/docs/api_c/db_set_append_recno.html
@@ -1,6 +1,5 @@
<!--$Id: db_set_append_recno.so,v 1.24 2006/05/17 20:47:46 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -80,6 +79,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/db_set_bt_compare.html b/db/docs/api_c/db_set_bt_compare.html
index fb2cb6f70..624c06702 100644
--- a/db/docs/api_c/db_set_bt_compare.html
+++ b/db/docs/api_c/db_set_bt_compare.html
@@ -1,6 +1,5 @@
-<!--$Id: db_set_bt_compare.so,v 10.49 2004/08/13 03:38:56 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: db_set_bt_compare.so,v 10.50 2006/10/26 20:59:24 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -86,6 +85,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/db_set_bt_minkey.html b/db/docs/api_c/db_set_bt_minkey.html
index 4ee6ce699..9dbe66985 100644
--- a/db/docs/api_c/db_set_bt_minkey.html
+++ b/db/docs/api_c/db_set_bt_minkey.html
@@ -1,6 +1,5 @@
<!--$Id: db_set_bt_minkey.so,v 10.38 2004/09/28 15:04:19 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -85,6 +84,6 @@ leaf page in <b>bt_minkeyp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/db_set_bt_prefix.html b/db/docs/api_c/db_set_bt_prefix.html
index 3f0bbecfe..597c29a14 100644
--- a/db/docs/api_c/db_set_bt_prefix.html
+++ b/db/docs/api_c/db_set_bt_prefix.html
@@ -1,6 +1,5 @@
<!--$Id: db_set_bt_prefix.so,v 10.48 2004/08/13 03:38:56 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -89,6 +88,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/db_set_cachesize.html b/db/docs/api_c/db_set_cachesize.html
index 91efa1707..7c535fb9d 100644
--- a/db/docs/api_c/db_set_cachesize.html
+++ b/db/docs/api_c/db_set_cachesize.html
@@ -1,7 +1,6 @@
<!--$Id: db_set_cachesize.so,v 10.21 2002/08/18 21:15:53 bostic Exp $-->
-<!--$Id: env_set_cachesize.so,v 10.50 2005/01/10 07:18:43 mjc Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: env_set_cachesize.so,v 10.51 2007/07/06 00:22:52 mjc Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -51,8 +50,9 @@ allocated contiguously on some architectures. For example, some
releases of Solaris limit the amount of memory that may be allocated
contiguously by a process. If <b>ncache</b> is 0 or 1, the cache will
be allocated contiguously in memory. If it is greater than 1, the cache
-will be broken up into <b>ncache</b> equally sized, separate pieces of
-memory.</p>
+will be split across <b>ncache</b> separate regions, where the
+<b>region size</b> is equal to the initial cache size divided by
+<b>ncache</b>.</p>
<p>Because databases opened within Berkeley DB environments use the cache
specified to the environment, it is an error to attempt to set a cache
in a database created within an environment.</p>
@@ -73,10 +73,8 @@ and 0 on success.
may fail and return one of the following non-zero errors:</p>
<dl compact>
<dt>EINVAL<dd>If the specified cache size was impossibly small;
-called in a database environment;
the method was called after
-<a href="../api_c/db_open.html">DB-&gt;open</a>
-was called; or if an
+<a href="../api_c/db_open.html">DB-&gt;open</a> was called; or if an
invalid flag value or parameter was specified.
</dl>
<hr size=1 noshade>
@@ -107,6 +105,6 @@ and 0 on success.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/db_set_dup_compare.html b/db/docs/api_c/db_set_dup_compare.html
index cabcf2e99..97f5114d6 100644
--- a/db/docs/api_c/db_set_dup_compare.html
+++ b/db/docs/api_c/db_set_dup_compare.html
@@ -1,6 +1,5 @@
<!--$Id: db_set_dup_compare.so,v 10.50 2004/08/13 03:38:56 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -84,6 +83,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/db_set_encrypt.html b/db/docs/api_c/db_set_encrypt.html
index 022dfbcee..b5a2688df 100644
--- a/db/docs/api_c/db_set_encrypt.html
+++ b/db/docs/api_c/db_set_encrypt.html
@@ -1,7 +1,6 @@
<!--$Id: db_set_encrypt.so,v 10.3 2002/08/18 21:15:54 bostic Exp $-->
<!--$Id: env_set_encrypt.so,v 10.23 2004/09/28 15:04:20 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -89,6 +88,6 @@ encryption flags in <b>flagsp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/db_set_errcall.html b/db/docs/api_c/db_set_errcall.html
index 8220992de..f7b50b2f3 100644
--- a/db/docs/api_c/db_set_errcall.html
+++ b/db/docs/api_c/db_set_errcall.html
@@ -1,7 +1,6 @@
<!--$Id: db_set_errcall.so,v 10.10 2002/08/18 21:15:54 bostic Exp $-->
<!--$Id: env_set_errcall.so,v 10.39 2006/05/17 20:47:46 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -78,6 +77,6 @@ are undefined.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/db_set_errfile.html b/db/docs/api_c/db_set_errfile.html
index 6b9edd696..3ba910549 100644
--- a/db/docs/api_c/db_set_errfile.html
+++ b/db/docs/api_c/db_set_errfile.html
@@ -1,7 +1,6 @@
<!--$Id: db_set_errfile.so,v 10.10 2002/08/18 21:15:54 bostic Exp $-->
-<!--$Id: env_set_errfile.so,v 10.36 2006/02/10 22:54:59 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: env_set_errfile.so,v 10.37 2006/10/26 15:33:59 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -32,9 +31,9 @@ DB-&gt;get_errfile(DB *db, FILE **errfilep);
<hr size=1 noshade>
<h3>Description: DB-&gt;set_errfile</h3>
When an error occurs in the Berkeley DB library, a Berkeley DB error or an error
-return value is returned by the interface. In some cases, however,
-the <b>errno</b> value may be insufficient to completely describe
-the cause of the error especially during initial application debugging.
+return value is returned by the interface. In some cases, however, the
+return value may be insufficient to completely describe the cause of the
+error especially during initial application debugging.
<p>The <a href="../api_c/env_set_errfile.html">DB_ENV-&gt;set_errfile</a> and DB-&gt;set_errfile methods are used to
enhance the mechanism for reporting error messages to the application
by setting a C library FILE * to be used for displaying additional Berkeley DB
@@ -44,7 +43,18 @@ an additional error message to the specified file reference.</p>
("<b>:</b>") (if a prefix string was previously specified using
<a href="../api_c/db_set_errpfx.html">DB-&gt;set_errpfx</a> or <a href="../api_c/env_set_errpfx.html">DB_ENV-&gt;set_errpfx</a>), an error string, and
a trailing &lt;newline&gt; character.</p>
-<p>Setting <b>errfile</b> to NULL unconfigures the interface.</p>
+<p>The default configuration when applications first create <a href="../api_c/db_class.html">DB</a> or
+<a href="../api_c/env_class.html">DB_ENV</a> handles is as if the <a href="../api_c/env_set_errfile.html">DB_ENV-&gt;set_errfile</a> or
+DB-&gt;set_errfile methods were called with the standard error output
+(stderr) specified as the FILE * argument. Applications wanting no
+output at all can turn off this default configuration by calling the
+<a href="../api_c/env_set_errfile.html">DB_ENV-&gt;set_errfile</a> or DB-&gt;set_errfile methods with NULL as the
+FILE * argument. Additionally, explicitly configuring the error output
+channel using any of the <a href="../api_c/env_set_errfile.html">DB_ENV-&gt;set_errfile</a>,
+DB-&gt;set_errfile, <a href="../api_c/env_set_errcall.html">DB_ENV-&gt;set_errcall</a>,
+<a href="../api_c/db_set_errcall.html">DB-&gt;set_errcall</a>, <a href="../api_cxx/env_set_error_stream.html">DbEnv::set_error_stream</a> or
+<a href="../api_cxx/db_set_error_stream.html">Db::set_error_stream</a> methods will also turn off this default output
+for the application.</p>
<p>This error logging enhancement does not slow performance or significantly
increase application size, and may be run during normal operation as well
as during application debugging.</p>
@@ -84,6 +94,6 @@ FILE * in <b>errfilep</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/db_set_errpfx.html b/db/docs/api_c/db_set_errpfx.html
index b7b9668ab..7effb6041 100644
--- a/db/docs/api_c/db_set_errpfx.html
+++ b/db/docs/api_c/db_set_errpfx.html
@@ -1,7 +1,6 @@
<!--$Id: db_set_errpfx.so,v 10.10 2002/08/18 21:15:55 bostic Exp $-->
<!--$Id: env_set_errpfx.so,v 10.34 2006/02/10 22:54:59 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -73,6 +72,6 @@ error prefix in <b>errpfxp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/db_set_feedback.html b/db/docs/api_c/db_set_feedback.html
index fad31a2ef..141b6fced 100644
--- a/db/docs/api_c/db_set_feedback.html
+++ b/db/docs/api_c/db_set_feedback.html
@@ -1,7 +1,6 @@
<!--$Id: db_set_feedback.so,v 10.29 2003/10/19 01:27:11 bostic Exp $-->
<!--$Id: env_set_feedback.so,v 10.43 2006/05/17 20:47:46 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -72,6 +71,6 @@ are undefined.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/db_set_flags.html b/db/docs/api_c/db_set_flags.html
index e686d824f..ffc5952b7 100644
--- a/db/docs/api_c/db_set_flags.html
+++ b/db/docs/api_c/db_set_flags.html
@@ -1,6 +1,5 @@
<!--$Id: db_set_flags.so,v 10.68 2004/09/28 15:04:19 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -130,7 +129,7 @@ will be returned.
<a name="7"><!--meow--></a>
<dt><a name="DB_RECNUM">DB_RECNUM</a><dd>Support retrieval from the Btree using record numbers. For more
information, see the <a href="../api_c/db_get.html#DB_SET_RECNO">DB_SET_RECNO</a> flag to the <a href="../api_c/db_get.html">DB-&gt;get</a>
-and <a href="../api_c/dbc_get.html">DBcursor-&gt;c_get</a> methods.
+and <a href="../api_c/dbc_get.html">DBcursor-&gt;get</a> methods.
<p>Logical record numbers in Btree databases are mutable in the face of
record insertion or deletion. See the DB_RENUMBER flag in the
Recno access method information for further discussion.</p>
@@ -229,7 +228,7 @@ refer to the new record number 4, if any such record exists, after the
deletion. If a cursor was positioned after record number 4 before the
deletion, it will be shifted downward one logical record, continuing to
refer to the same record as it did before.
-<p>Using the <a href="../api_c/db_put.html">DB-&gt;put</a> or <a href="../api_c/dbc_put.html">DBcursor-&gt;c_put</a> interfaces to create new
+<p>Using the <a href="../api_c/db_put.html">DB-&gt;put</a> or <a href="../api_c/dbc_put.html">DBcursor-&gt;put</a> interfaces to create new
records will cause the creation of multiple records if the record number
is more than one greater than the largest record currently in the
database. For example, creating record 28, when record 25 was previously
@@ -292,6 +291,6 @@ current flags in <b>flagsp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/db_set_h_compare.html b/db/docs/api_c/db_set_h_compare.html
new file mode 100644
index 000000000..f4d93068d
--- /dev/null
+++ b/db/docs/api_c/db_set_h_compare.html
@@ -0,0 +1,86 @@
+<!--$Id: db_set_h_compare.so,v 1.1 2006/10/27 00:28:44 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
+<!--See the file LICENSE for redistribution information.-->
+<html>
+<head>
+<title>Berkeley DB: DB-&gt;set_h_compare</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
+</head>
+<body bgcolor=white>
+<table width="100%"><tr valign=top>
+<td>
+<h3>DB-&gt;set_h_compare</h3>
+</td>
+<td align=right>
+<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a>
+<a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a></td>
+</tr></table>
+<hr size=1 noshade>
+<tt>
+<h3><pre>
+#include &lt;db.h&gt;
+<p>
+int
+DB-&gt;set_h_compare(DB *db,
+ int (*compare_fcn)(DB *db, const DBT *dbt1, const DBT *dbt2));
+</pre></h3>
+<hr size=1 noshade>
+<h3>Description: DB-&gt;set_h_compare</h3>
+<p>Set the Hash key comparison function. The comparison function is called
+whenever it is necessary to compare a key specified by the application
+with a key currently stored in the database.</p>
+<p>If no comparison function is specified, a byte-by-byte comparison is
+performed.</p>
+<p>The DB-&gt;set_h_compare method configures operations performed using the specified
+<a href="../api_c/db_class.html">DB</a> handle, not all operations performed on the underlying
+database.</p>
+<p>The DB-&gt;set_h_compare method may not be called after the <a href="../api_c/db_open.html">DB-&gt;open</a> method is called.
+If the database already exists when
+<a href="../api_c/db_open.html">DB-&gt;open</a> is called, the information specified to DB-&gt;set_h_compare must
+be the same as that historically used to create the database or
+corruption can occur.</p>
+<p>The DB-&gt;set_h_compare method
+returns a non-zero error value on failure
+and 0 on success.
+</p>
+<h3>Parameters</h3>
+<dl compact>
+<dt><b>compare_fcn</b><dd>The <b>compare_fcn</b> function is the application-specified Hash
+comparison function. The comparison function takes three parameters:
+<dl compact>
+<dt><b>db</b><dd>The <b>db</b> parameter is the enclosing database handle.
+<dt><b>dbt1</b><dd>The <b>dbt1</b> parameter is the <a href="../api_c/dbt_class.html">DBT</a> representing the
+application supplied key.
+<dt><b>dbt2</b><dd>The <b>dbt2</b> parameter is the <a href="../api_c/dbt_class.html">DBT</a> representing the
+current database's key.
+</dl>
+<p>The <b>compare_fcn</b> function must return an integer value less
+than, equal to, or greater than zero if the first key parameter is
+considered to be respectively less than, equal to, or greater than the
+second key parameter. The comparison function must correctly handle any
+key values used by the application (possibly including zero-length
+keys). The <b>data</b> and <b>size</b> fields of the <a href="../api_c/dbt_class.html">DBT</a> are
+the only fields that may be used for the purposes of this comparison,
+and no particular alignment of the memory to which by the <b>data</b>
+field refers may be assumed.</p>
+</dl>
+<h3>Errors</h3>
+<p>The DB-&gt;set_h_compare method
+may fail and return one of the following non-zero errors:</p>
+<dl compact>
+<dt>EINVAL<dd>If the method was called after <a href="../api_c/db_open.html">DB-&gt;open</a> was called; or if an
+invalid flag value or parameter was specified.
+</dl>
+<hr size=1 noshade>
+<h3>Class</h3>
+<a href="../api_c/db_class.html">DB</a>
+<h3>See Also</h3>
+<a href="../api_c/db_list.html">Databases and Related Methods</a>
+</tt>
+<table width="100%"><tr><td><br></td><td align=right>
+<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
+</body>
+</html>
diff --git a/db/docs/api_c/db_set_h_ffactor.html b/db/docs/api_c/db_set_h_ffactor.html
index e3df5935d..5136410f0 100644
--- a/db/docs/api_c/db_set_h_ffactor.html
+++ b/db/docs/api_c/db_set_h_ffactor.html
@@ -1,6 +1,5 @@
<!--$Id: db_set_h_ffactor.so,v 10.37 2004/09/28 15:04:19 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -84,6 +83,6 @@ hash table density in <b>h_ffactorp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/db_set_h_hash.html b/db/docs/api_c/db_set_h_hash.html
index 870eb2a4a..bb3295377 100644
--- a/db/docs/api_c/db_set_h_hash.html
+++ b/db/docs/api_c/db_set_h_hash.html
@@ -1,6 +1,5 @@
<!--$Id: db_set_h_hash.so,v 10.40 2004/08/13 03:38:56 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -70,6 +69,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/db_set_h_nelem.html b/db/docs/api_c/db_set_h_nelem.html
index 84f4f8935..bad0fb1ce 100644
--- a/db/docs/api_c/db_set_h_nelem.html
+++ b/db/docs/api_c/db_set_h_nelem.html
@@ -1,6 +1,5 @@
<!--$Id: db_set_h_nelem.so,v 10.36 2004/09/28 15:04:19 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -82,6 +81,6 @@ estimate of the final size of the hash table in <b>h_nelemp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/db_set_lorder.html b/db/docs/api_c/db_set_lorder.html
index 8bb2cda36..b8f8cf0f1 100644
--- a/db/docs/api_c/db_set_lorder.html
+++ b/db/docs/api_c/db_set_lorder.html
@@ -1,6 +1,5 @@
<!--$Id: db_set_lorder.so,v 10.38 2004/09/28 15:04:19 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -87,6 +86,6 @@ database byte order in <b>lorderp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/db_set_malloc.html b/db/docs/api_c/db_set_malloc.html
deleted file mode 100644
index 2d13196a3..000000000
--- a/db/docs/api_c/db_set_malloc.html
+++ /dev/null
@@ -1,98 +0,0 @@
-<!--$Id: db_set_malloc.so,v 10.18 2000/05/25 13:47:07 dda Exp $-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB: DB-&gt;set_malloc</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
- <a name="2"><!--meow--></a>
-<table><tr valign=top>
-<td>
-<h1>DB-&gt;set_malloc</h1>
-</td>
-<td width="1%">
-<a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;db.h&gt;
-<p>
-int
-DB-&gt;set_malloc(DB *db, void *(*db_malloc)(size_t size));
-</pre></h3>
-<h1>Description</h1>
-<p>Set the allocation function used by the DB methods to allocate
-memory in which to return key/data items to the application.
-<p>The <a href="../api_c/dbt.html#DB_DBT_MALLOC">DB_DBT_MALLOC</a> flag, when specified in the <a href="../api_c/dbt.html">DBT</a> object,
-will cause the DB methods to allocate and re-allocate memory which
-then becomes the responsibility of the calling application. See <a href="../api_c/dbt.html">DBT</a>
-for more information.
-<p>On systems where there may be multiple library versions of malloc (notably
-Windows NT), specifying the <a href="../api_c/dbt.html#DB_DBT_MALLOC">DB_DBT_MALLOC</a> flag will fail because
-the DB library will allocate memory from a different heap than
-the application will use to free it. To avoid this problem, the
-DB-&gt;set_malloc function can be used to pass Berkeley DB a reference to the
-application's allocation routine, in which case it will be used to
-allocate the memory returned when the <a href="../api_c/dbt.html#DB_DBT_MALLOC">DB_DBT_MALLOC</a> flag is set.
-<p>The function specified must match the calling conventions of the
-ANSI C X3.159-1989 (ANSI C) library routine of the same name.
-<p>The DB-&gt;set_malloc interface may only be used to configure Berkeley DB before
-the <a href="../api_c/db_open.html">DB-&gt;open</a> interface is called.
-<p>The DB-&gt;set_malloc function 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.
-</dl>
-<h1>See Also</h1>
-<a href="../api_c/db_create.html">db_create</a>,
-<a href="../api_c/db_close.html">DB-&gt;close</a>,
-<a href="../api_c/db_cursor.html">DB-&gt;cursor</a>,
-<a href="../api_c/db_del.html">DB-&gt;del</a>,
-<a href="../api_c/db_err.html">DB-&gt;err</a>,
-<a href="../api_c/db_fd.html">DB-&gt;fd</a>,
-<a href="../api_c/db_get.html">DB-&gt;get</a>,
-<a href="../api_c/db_get_byteswapped.html">DB-&gt;get_byteswapped</a>,
-<a href="../api_c/db_get_type.html">DB-&gt;get_type</a>,
-<a href="../api_c/db_join.html">DB-&gt;join</a>,
-<a href="../api_c/db_key_range.html">DB-&gt;key_range</a>,
-<a href="../api_c/db_open.html">DB-&gt;open</a>,
-<a href="../api_c/db_put.html">DB-&gt;put</a>,
-<a href="../api_c/db_remove.html">DB-&gt;remove</a>,
-<a href="../api_c/db_set_bt_compare.html">DB-&gt;set_bt_compare</a>,
-<a href="../api_c/db_set_bt_minkey.html">DB-&gt;set_bt_minkey</a>,
-<a href="../api_c/db_set_bt_prefix.html">DB-&gt;set_bt_prefix</a>,
-<a href="../api_c/db_set_cachesize.html">DB-&gt;set_cachesize</a>,
-<a href="../api_c/db_set_dup_compare.html">DB-&gt;set_dup_compare</a>,
-<a href="../api_c/db_set_errcall.html">DB-&gt;set_errcall</a>,
-<a href="../api_c/db_set_errfile.html">DB-&gt;set_errfile</a>,
-<a href="../api_c/db_set_errpfx.html">DB-&gt;set_errpfx</a>,
-<a href="../api_c/db_set_flags.html">DB-&gt;set_flags</a>,
-<a href="../api_c/db_set_h_ffactor.html">DB-&gt;set_h_ffactor</a>,
-<a href="../api_c/db_set_h_hash.html">DB-&gt;set_h_hash</a>,
-<a href="../api_c/db_set_h_nelem.html">DB-&gt;set_h_nelem</a>,
-<a href="../api_c/db_set_lorder.html">DB-&gt;set_lorder</a>,
-<a href="../api_c/db_set_malloc.html">DB-&gt;set_malloc</a>,
-<a href="../api_c/db_set_pagesize.html">DB-&gt;set_pagesize</a>,
-<a href="../api_c/db_set_paniccall.html">DB-&gt;set_paniccall</a>,
-<a href="../api_c/db_set_q_extentsize.html">DB-&gt;set_q_extentsize</a>,
-<a href="../api_c/db_set_realloc.html">DB-&gt;set_realloc</a>,
-<a href="../api_c/db_set_re_delim.html">DB-&gt;set_re_delim</a>,
-<a href="../api_c/db_set_re_len.html">DB-&gt;set_re_len</a>,
-<a href="../api_c/db_set_re_pad.html">DB-&gt;set_re_pad</a>,
-<a href="../api_c/db_set_re_source.html">DB-&gt;set_re_source</a>,
-<a href="../api_c/db_stat.html">DB-&gt;stat</a>,
-<a href="../api_c/db_sync.html">DB-&gt;sync</a>,
-<a href="../api_c/db_upgrade.html">DB-&gt;upgrade</a>
-and
-<a href="../api_c/db_verify.html">DB-&gt;verify</a>.
-</tt>
-<table><tr><td><br></td><td width="1%">
-<a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_c/db_set_msgcall.html b/db/docs/api_c/db_set_msgcall.html
index bcb76b949..998172ff8 100644
--- a/db/docs/api_c/db_set_msgcall.html
+++ b/db/docs/api_c/db_set_msgcall.html
@@ -1,7 +1,6 @@
<!--$Id: db_set_msgcall.so,v 10.1 2004/04/16 19:01:56 bostic Exp $-->
<!--$Id: env_set_msgcall.so,v 10.7 2006/05/17 20:47:46 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -71,6 +70,6 @@ are undefined.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/db_set_msgfile.html b/db/docs/api_c/db_set_msgfile.html
index 096b0338b..e23bdf97a 100644
--- a/db/docs/api_c/db_set_msgfile.html
+++ b/db/docs/api_c/db_set_msgfile.html
@@ -1,7 +1,6 @@
<!--$Id: db_set_msgfile.so,v 1.1 2004/07/14 19:30:39 bostic Exp $-->
<!--$Id: env_set_msgfile.so,v 10.7 2006/02/10 22:54:59 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -79,6 +78,6 @@ FILE * in <b>msgfilep</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/db_set_pagesize.html b/db/docs/api_c/db_set_pagesize.html
index 86ed71290..d70014493 100644
--- a/db/docs/api_c/db_set_pagesize.html
+++ b/db/docs/api_c/db_set_pagesize.html
@@ -1,6 +1,5 @@
<!--$Id: db_set_pagesize.so,v 10.40 2005/12/16 01:19:35 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -86,6 +85,6 @@ page size in <b>pagesizep</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/db_set_paniccall.html b/db/docs/api_c/db_set_paniccall.html
deleted file mode 100644
index f02526cf1..000000000
--- a/db/docs/api_c/db_set_paniccall.html
+++ /dev/null
@@ -1,73 +0,0 @@
-<!--$Id: db_set_paniccall.so,v 10.14 2002/08/18 21:15:57 bostic Exp $-->
-<!--$Id: env_set_paniccall.so,v 10.37 2004/08/13 03:38:57 bostic Exp $-->
-<!--Copyright 1997-2004 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: DB-&gt;set_paniccall</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
-</head>
-<body bgcolor=white>
-<table width="100%"><tr valign=top>
-<td>
-<h3>DB-&gt;set_paniccall</h3>
-</td>
-<td align=right>
-<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a>
-<a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a></td>
-</tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;db.h&gt;
-<p>
-int
-DB-&gt;set_paniccall(DB *db,
- void (*db_panic_fcn)(DB_ENV *dbenv, int errval));
-</pre></h3>
-<hr size=1 noshade>
-<h3>Description: DB-&gt;set_paniccall</h3>
-<p>Errors can occur in the Berkeley DB library where the only solution is to shut
-down the application and run recovery (for example, if Berkeley DB is unable
-to allocate heap memory). In such cases, the Berkeley DB methods will
-return <a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a>.
-It is often easier to simply exit the application when such errors occur
-rather than gracefully return up the stack. The DB-&gt;set_paniccall method
-specifies a function to be called when
-<a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a> is about to be returned
-from a Berkeley DB method.</p>
-<p>For <a href="../api_c/db_class.html">DB</a> handles opened inside of Berkeley DB environments, calling the
-DB-&gt;set_paniccall method affects the entire environment and is equivalent to calling
-the <a href="../api_c/env_set_paniccall.html">DB_ENV-&gt;set_paniccall</a> method.</p>
-<p>The DB-&gt;set_paniccall method may be called at any time during the life of the
-application.</p>
-<p>The DB-&gt;set_paniccall method
-returns a non-zero error value on failure
-and 0 on success.
-</p>
-<h3>Parameters</h3>
-<dl compact>
-<dt><b>db_panic_fcn</b><dd>The <b>db_panic_fcn</b> parameter is the application-specified function
-called in the case of a database environment panic. The function takes
-two arguments:
-<dl compact>
-<dt><b>dbenv</b><dd>The <b>dbenv</b> parameter is the enclosing database environment handle.
-<dt><b>errval</b><dd>The <b>errval</b> parameter is the error value that would have been
-returned to the caller if <a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a> were not going to be
-returned instead.
-</dl>
-</dl>
-<hr size=1 noshade>
-<h3>Class</h3>
-<a href="../api_c/db_class.html">DB</a>
-<h3>See Also</h3>
-<a href="../api_c/db_list.html">Databases and Related Methods</a>
-</tt>
-<table width="100%"><tr><td><br></td><td align=right>
-<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<p><font size=1><a href="../sleepycat/legal.html">Copyright (c) 1996-2004</a> <a href="http://www.sleepycat.com">Sleepycat Software, Inc.</a> - All rights reserved.</font>
-</body>
-</html>
diff --git a/db/docs/api_c/db_set_priority.html b/db/docs/api_c/db_set_priority.html
new file mode 100644
index 000000000..127c7adfe
--- /dev/null
+++ b/db/docs/api_c/db_set_priority.html
@@ -0,0 +1,88 @@
+<!--$Id: db_set_priority.so,v 1.1 2007/05/22 18:06:05 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
+<!--See the file LICENSE for redistribution information.-->
+<html>
+<head>
+<title>Berkeley DB: DB-&gt;set_priority</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
+</head>
+<body bgcolor=white>
+<table width="100%"><tr valign=top>
+<td>
+<h3>DB-&gt;set_priority</h3>
+</td>
+<td align=right>
+<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a>
+<a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a></td>
+</tr></table>
+<hr size=1 noshade>
+<tt>
+<h3><pre>
+#include &lt;db.h&gt;
+<p>
+int
+DB-&gt;set_priority(DB *db, DB_CACHE_PRIORITY priority);
+<p>
+int
+DB-&gt;get_priority(DB *db, DB_CACHE_PRIORITY *priorityp);
+</pre></h3>
+<hr size=1 noshade>
+<h3>Description: DB-&gt;set_priority</h3>
+<!--$Id: dbc_set_priority.so,v 1.3 2007/05/22 18:06:05 bostic Exp $-->
+<p>Set the cache priority for pages referenced by the
+<a href="../api_c/db_class.html">DB</a>
+handle.</p>
+<p>The priority of a page biases the replacement algorithm to be more or
+less likely to discard a page when space is needed in the buffer pool.
+The bias is temporary, and pages will eventually be discarded if they
+are not referenced again. The DB-&gt;set_priority method is only advisory, and does
+not guarantee pages will be treated in a specific way.</p>
+<p>The DB-&gt;set_priority method may be called at any time during the life of the
+application.</p>
+<p>The DB-&gt;set_priority method
+returns a non-zero error value on failure
+and 0 on success.
+</p>
+<h3>Parameters</h3>
+<dl compact>
+<dt><b>priority</b><dd>The <b>priority</b> parameter must be set to one of the following
+values:
+<dl compact>
+<dt><a name="DB_PRIORITY_VERY_LOW">DB_PRIORITY_VERY_LOW</a><dd>The lowest priority: pages are the most likely to be discarded.
+<dt><a name="DB_PRIORITY_LOW">DB_PRIORITY_LOW</a><dd>The next lowest priority.
+<dt><a name="DB_PRIORITY_DEFAULT">DB_PRIORITY_DEFAULT</a><dd>The default priority.
+<dt><a name="DB_PRIORITY_HIGH">DB_PRIORITY_HIGH</a><dd>The next highest priority.
+<dt><a name="DB_PRIORITY_VERY_HIGH">DB_PRIORITY_VERY_HIGH</a><dd>The highest priority: pages are the least likely to be discarded.
+</dl>
+</dl>
+<hr size=1 noshade>
+<h3>Description: DB-&gt;get_priority</h3>
+<p>The DB-&gt;get_priority method returns the cache priority for pages referenced by the
+<a href="../api_c/db_class.html">DB</a>
+handle.</p>
+<p>The DB-&gt;get_priority method may be called at any time during the life of the
+application.</p>
+<p>The DB-&gt;get_priority method
+returns a non-zero error value on failure
+and 0 on success.
+</p>
+<h3>Parameters</h3>
+<dl compact>
+<dt><b>priorityp</b><dd>The DB-&gt;get_priority method returns a reference to the
+cache priority for pages referenced by the
+<a href="../api_c/db_class.html">DB</a>
+handle in <b>priorityp</b>.
+</dl>
+<hr size=1 noshade>
+<h3>Class</h3>
+<a href="../api_c/db_class.html">DB</a>
+<h3>See Also</h3>
+<a href="../api_c/db_list.html">Databases and Related Methods</a>
+</tt>
+<table width="100%"><tr><td><br></td><td align=right>
+<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
+</body>
+</html>
diff --git a/db/docs/api_c/db_set_q_extentsize.html b/db/docs/api_c/db_set_q_extentsize.html
index 76cb6d4e5..c9423d0bf 100644
--- a/db/docs/api_c/db_set_q_extentsize.html
+++ b/db/docs/api_c/db_set_q_extentsize.html
@@ -1,6 +1,5 @@
<!--$Id: db_set_q_extentsize.so,v 1.23 2004/09/28 15:04:19 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -82,6 +81,6 @@ number of pages in an extent in <b>extentsizep</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/db_set_re_delim.html b/db/docs/api_c/db_set_re_delim.html
index 1a29e54ae..1221bc454 100644
--- a/db/docs/api_c/db_set_re_delim.html
+++ b/db/docs/api_c/db_set_re_delim.html
@@ -1,6 +1,5 @@
<!--$Id: db_set_re_delim.so,v 10.39 2004/09/28 15:04:19 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -82,6 +81,6 @@ delimiting byte in <b>delimp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/db_set_re_len.html b/db/docs/api_c/db_set_re_len.html
index e6b2b5e3d..7ebd790d0 100644
--- a/db/docs/api_c/db_set_re_len.html
+++ b/db/docs/api_c/db_set_re_len.html
@@ -1,6 +1,5 @@
<!--$Id: db_set_re_len.so,v 10.40 2004/09/28 15:04:19 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -89,6 +88,6 @@ record length in <b>re_lenp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/db_set_re_pad.html b/db/docs/api_c/db_set_re_pad.html
index de79cd924..e253de843 100644
--- a/db/docs/api_c/db_set_re_pad.html
+++ b/db/docs/api_c/db_set_re_pad.html
@@ -1,6 +1,5 @@
<!--$Id: db_set_re_pad.so,v 10.37 2004/09/28 15:04:19 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -80,6 +79,6 @@ pad character in <b>re_padp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/db_set_re_source.html b/db/docs/api_c/db_set_re_source.html
index 40e4ed195..5aef3159e 100644
--- a/db/docs/api_c/db_set_re_source.html
+++ b/db/docs/api_c/db_set_re_source.html
@@ -1,6 +1,5 @@
<!--$Id: db_set_re_source.so,v 10.42 2004/09/28 15:04:19 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -113,6 +112,6 @@ application.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/db_set_realloc.html b/db/docs/api_c/db_set_realloc.html
deleted file mode 100644
index b3d8a05f7..000000000
--- a/db/docs/api_c/db_set_realloc.html
+++ /dev/null
@@ -1,99 +0,0 @@
-<!--$Id: db_set_realloc.so,v 10.8 2000/05/25 13:47:07 dda Exp $-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB: DB-&gt;set_realloc</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
- <a name="2"><!--meow--></a>
-<table><tr valign=top>
-<td>
-<h1>DB-&gt;set_realloc</h1>
-</td>
-<td width="1%">
-<a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;db.h&gt;
-<p>
-int
-DB-&gt;set_realloc(DB *db,
- void *(*db_realloc_fcn)(void *ptr, size_t size));
-</pre></h3>
-<h1>Description</h1>
-<p>Set the realloc function used by the DB methods to allocate memory
-in which to return key/data items to the application.
-<p>The <a href="../api_c/dbt.html#DB_DBT_REALLOC">DB_DBT_REALLOC</a> flag, when specified in the <a href="../api_c/dbt.html">DBT</a> object,
-will cause the DB methods to allocate and re-allocate memory which
-then becomes the responsibility of the calling application. See <a href="../api_c/dbt.html">DBT</a>
-for more information.
-<p>On systems where there may be multiple library versions of realloc (notably
-Windows NT), specifying the <a href="../api_c/dbt.html#DB_DBT_REALLOC">DB_DBT_REALLOC</a> flag will fail because
-the DB library will allocate memory from a different heap than
-the application will use to free it. To avoid this problem, the
-DB-&gt;set_realloc function can be used to pass Berkeley DB a reference to the
-application's allocation routine, in which case it will be used to
-allocate the memory returned when the <a href="../api_c/dbt.html#DB_DBT_REALLOC">DB_DBT_REALLOC</a> flag is set.
-<p>The function specified must match the calling conventions of the
-ANSI C X3.159-1989 (ANSI C) library routine of the same name.
-<p>The DB-&gt;set_realloc interface may only be used to configure Berkeley DB before
-the <a href="../api_c/db_open.html">DB-&gt;open</a> interface is called.
-<p>The DB-&gt;set_realloc function 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.
-</dl>
-<h1>See Also</h1>
-<a href="../api_c/db_create.html">db_create</a>,
-<a href="../api_c/db_close.html">DB-&gt;close</a>,
-<a href="../api_c/db_cursor.html">DB-&gt;cursor</a>,
-<a href="../api_c/db_del.html">DB-&gt;del</a>,
-<a href="../api_c/db_err.html">DB-&gt;err</a>,
-<a href="../api_c/db_fd.html">DB-&gt;fd</a>,
-<a href="../api_c/db_get.html">DB-&gt;get</a>,
-<a href="../api_c/db_get_byteswapped.html">DB-&gt;get_byteswapped</a>,
-<a href="../api_c/db_get_type.html">DB-&gt;get_type</a>,
-<a href="../api_c/db_join.html">DB-&gt;join</a>,
-<a href="../api_c/db_key_range.html">DB-&gt;key_range</a>,
-<a href="../api_c/db_open.html">DB-&gt;open</a>,
-<a href="../api_c/db_put.html">DB-&gt;put</a>,
-<a href="../api_c/db_remove.html">DB-&gt;remove</a>,
-<a href="../api_c/db_set_bt_compare.html">DB-&gt;set_bt_compare</a>,
-<a href="../api_c/db_set_bt_minkey.html">DB-&gt;set_bt_minkey</a>,
-<a href="../api_c/db_set_bt_prefix.html">DB-&gt;set_bt_prefix</a>,
-<a href="../api_c/db_set_cachesize.html">DB-&gt;set_cachesize</a>,
-<a href="../api_c/db_set_dup_compare.html">DB-&gt;set_dup_compare</a>,
-<a href="../api_c/db_set_errcall.html">DB-&gt;set_errcall</a>,
-<a href="../api_c/db_set_errfile.html">DB-&gt;set_errfile</a>,
-<a href="../api_c/db_set_errpfx.html">DB-&gt;set_errpfx</a>,
-<a href="../api_c/db_set_flags.html">DB-&gt;set_flags</a>,
-<a href="../api_c/db_set_h_ffactor.html">DB-&gt;set_h_ffactor</a>,
-<a href="../api_c/db_set_h_hash.html">DB-&gt;set_h_hash</a>,
-<a href="../api_c/db_set_h_nelem.html">DB-&gt;set_h_nelem</a>,
-<a href="../api_c/db_set_lorder.html">DB-&gt;set_lorder</a>,
-<a href="../api_c/db_set_malloc.html">DB-&gt;set_malloc</a>,
-<a href="../api_c/db_set_pagesize.html">DB-&gt;set_pagesize</a>,
-<a href="../api_c/db_set_paniccall.html">DB-&gt;set_paniccall</a>,
-<a href="../api_c/db_set_q_extentsize.html">DB-&gt;set_q_extentsize</a>,
-<a href="../api_c/db_set_realloc.html">DB-&gt;set_realloc</a>,
-<a href="../api_c/db_set_re_delim.html">DB-&gt;set_re_delim</a>,
-<a href="../api_c/db_set_re_len.html">DB-&gt;set_re_len</a>,
-<a href="../api_c/db_set_re_pad.html">DB-&gt;set_re_pad</a>,
-<a href="../api_c/db_set_re_source.html">DB-&gt;set_re_source</a>,
-<a href="../api_c/db_stat.html">DB-&gt;stat</a>,
-<a href="../api_c/db_sync.html">DB-&gt;sync</a>,
-<a href="../api_c/db_upgrade.html">DB-&gt;upgrade</a>
-and
-<a href="../api_c/db_verify.html">DB-&gt;verify</a>.
-</tt>
-<table><tr><td><br></td><td width="1%">
-<a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_c/db_stat.html b/db/docs/api_c/db_stat.html
index f8a6eb7be..053259af2 100644
--- a/db/docs/api_c/db_stat.html
+++ b/db/docs/api_c/db_stat.html
@@ -1,6 +1,5 @@
-<!--$Id: db_stat.so,v 10.89 2005/02/10 20:02:28 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: db_stat.so,v 10.92 2007/06/22 16:57:15 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -43,24 +42,24 @@ one of the following values:
Among other things, this flag makes it possible for applications to
request key and record counts without incurring the performance penalty
of traversing the entire database.
-<dt><a name="DB_READ_COMMITTED">DB_READ_COMMITTED</a><dd>Database items read during this operation will have degree 2 isolation.
-This ensures the stability of the data items read during the stat
-operation but permits that data to be modified or deleted by other
+<dt><a name="DB_READ_COMMITTED">DB_READ_COMMITTED</a><dd>Database items read during a transactional call will have degree 2
+isolation. This ensures the stability of the data items read during the
+stat operation but permits that data to be modified or deleted by other
transactions prior to the commit of the specified transaction.
-<dt><a name="DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a><dd>Database items read during this operation will have degree 1 isolation,
-including modified but not yet committed data. Silently ignored if the
-<a href="../api_c/db_open.html#DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a> flag was not specified when the underlying
-database was opened.
-</dl>
-<dt><b>txnid</b><dd>If the operation is part of an application-specified
-transaction, the <b>txnid</b> parameter is a transaction handle
-returned from <a href="../api_c/txn_begin.html">DB_ENV-&gt;txn_begin</a>; if the operation is part of a Berkeley DB Concurrent Data Store
-group, the <b>txnid</b> parameter is a handle returned from
-<a href="../api_c/env_cdsgroup_begin.html">DB_ENV-&gt;cdsgroup_begin</a>; otherwise NULL. If no transaction handle is
+<dt><a name="DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a><dd>Database items read during a transactional call will have degree 1
+isolation, including modified but not yet committed data. Silently
+ignored if the <a href="../api_c/db_open.html#DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a> flag was not specified when
+the underlying database was opened. </dl>
+<dt><b>txnid</b><dd>If the operation is part of an application-specified transaction, the
+<b>txnid</b> parameter is a transaction handle returned from
+<a href="../api_c/txn_begin.html">DB_ENV-&gt;txn_begin</a>; if the operation is part of a Berkeley DB Concurrent Data Store group, the
+<b>txnid</b> parameter is a handle returned from
+<a href="../api_c/env_cdsgroup_begin.html">DB_ENV-&gt;cdsgroup_begin</a>; otherwise NULL.
+If no transaction handle is
specified, but the
operation occurs in a transactional
database,
-the operation will be implicitly transaction protected.
+the operation will be implicitly transaction protected.
</dl>
<p>Statistical structures are stored in allocated memory. If application-specific allocation
routines have been declared (see <a href="../api_c/env_set_alloc.html">DB_ENV-&gt;set_alloc</a> for more
@@ -78,6 +77,8 @@ database, the information returned by DB-&gt;stat may be out-of-date.</p>
<p>If the database was not opened read-only and the DB_FAST_STAT
flag was not specified, the cached key and record numbers will be
updated after the statistical information has been gathered.</p>
+<p>The DB-&gt;stat method may not be called before the <a href="../api_c/db_open.html">DB-&gt;open</a> method has been
+called.</p>
<p>The DB-&gt;stat method
returns a non-zero error value on failure
and 0 on success.
@@ -98,8 +99,10 @@ DB_FAST_STAT is set.
was specified the count will be the last saved value unless it has never
been calculated, in which case it will be 0. Returned if
DB_FAST_STAT is set.
-<dt>u_int32_t hash_pagesize;<dd>The underlying Hash database page (and bucket) size, in bytes.
-Returned if DB_FAST_STAT is set.
+<dt>u_int32_t hash_pagecnt;<dd>The number of pages in the database. Returned if DB_FAST_STAT
+is set.
+<dt>u_int32_t hash_pagesize;<dd>The underlying database page (and bucket) size, in bytes. Returned if
+DB_FAST_STAT is set.
<dt>u_int32_t hash_ffactor;<dd>The desired fill factor (number of items per bucket) specified at
database-creation time. Returned if DB_FAST_STAT is set.
<dt>u_int32_t hash_buckets;<dd>The number of hash buckets. Returned if DB_FAST_STAT is set.
@@ -146,8 +149,10 @@ DB_FAST_STAT flag is specified the count will be exact but will
include deleted and implicitly created records; if the
DB_FAST_STAT flag is not specified, the count will be exact and
will not include deleted or implicitly created records.</p>
-<p>Returned if DB_FAST_STAT is set.</p>
-<dt>u_int32_t bt_pagesize;<dd>Underlying database page size, in bytes. Returned if
+<p><dt>u_int32_t bt_pagecnt;<dd>The number of pages in the database. Returned if DB_FAST_STAT
+is set.
+Returned if DB_FAST_STAT is set.</p>
+<dt>u_int32_t bt_pagesize;<dd>The underlying database page size, in bytes. Returned if
DB_FAST_STAT is set.
<dt>u_int32_t bt_minkey;<dd>The minimum keys per page. Returned if DB_FAST_STAT is set.
<dt>u_int32_t bt_re_len;<dd>The length of fixed-length records. Returned if DB_FAST_STAT
@@ -232,7 +237,6 @@ Among other things, this flag makes it possible for applications to
request key and record counts without incurring the performance penalty
of traversing the entire database.
<dt><a name="DB_STAT_ALL">DB_STAT_ALL</a><dd>Display all available information.
-<dt><a name="DB_STAT_CLEAR">DB_STAT_CLEAR</a><dd>Reset statistics after displaying their values.
</dl>
</dl>
<hr size=1 noshade>
@@ -244,6 +248,6 @@ of traversing the entire database.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/db_sync.html b/db/docs/api_c/db_sync.html
index b64570e42..9d54213ae 100644
--- a/db/docs/api_c/db_sync.html
+++ b/db/docs/api_c/db_sync.html
@@ -1,6 +1,5 @@
<!--$Id: db_sync.so,v 10.36 2004/08/13 03:38:56 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -69,6 +68,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/db_truncate.html b/db/docs/api_c/db_truncate.html
index 04bf1e286..06d698392 100644
--- a/db/docs/api_c/db_truncate.html
+++ b/db/docs/api_c/db_truncate.html
@@ -1,6 +1,5 @@
<!--$Id: db_truncate.so,v 1.29 2006/09/13 14:30:52 mjc Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -46,15 +45,16 @@ and 0 on success.
<dt><b>countp</b><dd>The <b>countp</b> parameter references memory into which
the number of records discarded from the database is copied.
<dt><b>flags</b><dd>The <b>flags</b> parameter is currently unused, and must be set to 0.
-<dt><b>txnid</b><dd>If the operation is part of an application-specified
-transaction, the <b>txnid</b> parameter is a transaction handle
-returned from <a href="../api_c/txn_begin.html">DB_ENV-&gt;txn_begin</a>; if the operation is part of a Berkeley DB Concurrent Data Store
-group, the <b>txnid</b> parameter is a handle returned from
-<a href="../api_c/env_cdsgroup_begin.html">DB_ENV-&gt;cdsgroup_begin</a>; otherwise NULL. If no transaction handle is
+<dt><b>txnid</b><dd>If the operation is part of an application-specified transaction, the
+<b>txnid</b> parameter is a transaction handle returned from
+<a href="../api_c/txn_begin.html">DB_ENV-&gt;txn_begin</a>; if the operation is part of a Berkeley DB Concurrent Data Store group, the
+<b>txnid</b> parameter is a handle returned from
+<a href="../api_c/env_cdsgroup_begin.html">DB_ENV-&gt;cdsgroup_begin</a>; otherwise NULL.
+If no transaction handle is
specified, but the
operation occurs in a transactional
database,
-the operation will be implicitly transaction protected.
+the operation will be implicitly transaction protected.
</dl>
<h3>Errors</h3>
<p>The DB-&gt;truncate method
@@ -78,6 +78,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/db_upgrade.html b/db/docs/api_c/db_upgrade.html
index d51ef8c65..b0f812b80 100644
--- a/db/docs/api_c/db_upgrade.html
+++ b/db/docs/api_c/db_upgrade.html
@@ -1,6 +1,5 @@
<!--$Id: db_upgrade.so,v 10.37 2004/08/13 03:38:56 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -100,6 +99,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/db_verify.html b/db/docs/api_c/db_verify.html
index c4c3244d2..aa0e6f061 100644
--- a/db/docs/api_c/db_verify.html
+++ b/db/docs/api_c/db_verify.html
@@ -1,6 +1,5 @@
<!--$Id: db_verify.so,v 10.30 2005/03/08 16:29:34 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -143,6 +142,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/dbc_class.html b/db/docs/api_c/dbc_class.html
index e1489da31..b3cdaae32 100644
--- a/db/docs/api_c/dbc_class.html
+++ b/db/docs/api_c/dbc_class.html
@@ -1,6 +1,5 @@
<!--$Id: dbc_class.so,v 10.19 2004/08/13 03:38:56 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -32,12 +31,12 @@ threads, but only serially, that is, the application must serialize
access to the DBC handle.</p>
<p>If the cursor is to be used to perform operations on behalf of a
transaction, the cursor must be opened and closed within the context of
-that single transaction. Once <a href="../api_c/dbc_close.html">DBcursor-&gt;c_close</a> has been called, the
+that single transaction. Once <a href="../api_c/dbc_close.html">DBcursor-&gt;close</a> has been called, the
handle may not be accessed again, regardless of the method's return.</p>
</tt>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/dbc_close.html b/db/docs/api_c/dbc_close.html
index 016e23623..4be4d9e7e 100644
--- a/db/docs/api_c/dbc_close.html
+++ b/db/docs/api_c/dbc_close.html
@@ -1,17 +1,16 @@
-<!--$Id: dbc_close.so,v 10.34 2006/09/13 14:30:52 mjc Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: dbc_close.so,v 10.35 2006/10/24 13:26:50 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
-<title>Berkeley DB: DBcursor-&gt;c_close</title>
+<title>Berkeley DB: DBcursor-&gt;close</title>
<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
</head>
<body bgcolor=white>
<table width="100%"><tr valign=top>
<td>
-<h3>DBcursor-&gt;c_close</h3>
+<h3>DBcursor-&gt;close</h3>
</td>
<td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a>
@@ -23,24 +22,24 @@
#include &lt;db.h&gt;
<p>
int
-DBcursor-&gt;c_close(DBC *DBcursor);
+DBcursor-&gt;close(DBC *DBcursor);
</pre></h3>
<hr size=1 noshade>
-<h3>Description: DBcursor-&gt;c_close</h3>
-<p>The DBcursor-&gt;c_close method discards the cursor.</p>
-<p>It is possible for the DBcursor-&gt;c_close method to return
+<h3>Description: DBcursor-&gt;close</h3>
+<p>The DBcursor-&gt;close method discards the cursor.</p>
+<p>It is possible for the DBcursor-&gt;close method to return
<a href="../ref/program/errorret.html#DB_LOCK_DEADLOCK">DB_LOCK_DEADLOCK</a>, signaling that any enclosing transaction should
be aborted. If the application is already intending to abort the
transaction, this error should be ignored, and the application should
proceed.</p>
-<p>After DBcursor-&gt;c_close has been called, regardless of its return, the
+<p>After DBcursor-&gt;close has been called, regardless of its return, the
cursor handle may not be used again.</p>
-<p>The DBcursor-&gt;c_close method
+<p>The DBcursor-&gt;close method
returns a non-zero error value on failure
and 0 on success.
</p>
<h3>Errors</h3>
-<p>The DBcursor-&gt;c_close method
+<p>The DBcursor-&gt;close method
may fail and return one of the following non-zero errors:</p>
<dl compact>
<dt>DB_LOCK_DEADLOCK<dd>A transactional database environment operation was selected to resolve
@@ -61,6 +60,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/dbc_count.html b/db/docs/api_c/dbc_count.html
index 42eac1b51..51abb3ecb 100644
--- a/db/docs/api_c/dbc_count.html
+++ b/db/docs/api_c/dbc_count.html
@@ -1,17 +1,16 @@
-<!--$Id: dbc_count.so,v 10.25 2004/08/13 03:38:56 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: dbc_count.so,v 10.26 2006/10/24 13:26:50 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
-<title>Berkeley DB: DBcursor-&gt;c_count</title>
+<title>Berkeley DB: DBcursor-&gt;count</title>
<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
</head>
<body bgcolor=white>
<table width="100%"><tr valign=top>
<td>
-<h3>DBcursor-&gt;c_count</h3>
+<h3>DBcursor-&gt;count</h3>
</td>
<td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a>
@@ -23,13 +22,13 @@
#include &lt;db.h&gt;
<p>
int
-DBcursor-&gt;c_count(DBC *DBcursor, db_recno_t *countp, u_int32_t flags);
+DBcursor-&gt;count(DBC *DBcursor, db_recno_t *countp, u_int32_t flags);
</pre></h3>
<hr size=1 noshade>
-<h3>Description: DBcursor-&gt;c_count</h3>
-<p>The DBcursor-&gt;c_count method returns a count of the number of data items for
+<h3>Description: DBcursor-&gt;count</h3>
+<p>The DBcursor-&gt;count method returns a count of the number of data items for
the key to which the cursor refers.</p>
-<p>The DBcursor-&gt;c_count method
+<p>The DBcursor-&gt;count method
returns a non-zero error value on failure
and 0 on success.
</p>
@@ -40,7 +39,7 @@ and 0 on success.
<dt><b>flags</b><dd>The <b>flags</b> parameter is currently unused, and must be set to 0.
</dl>
<h3>Errors</h3>
-<p>The DBcursor-&gt;c_count method
+<p>The DBcursor-&gt;count method
may fail and return one of the following non-zero errors:</p>
<dl compact>
<dt>DB_REP_HANDLE_DEAD<dd>The database handle has been invalidated because a replication election
@@ -60,6 +59,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/dbc_del.html b/db/docs/api_c/dbc_del.html
index 9a8b6de92..ad7a5978a 100644
--- a/db/docs/api_c/dbc_del.html
+++ b/db/docs/api_c/dbc_del.html
@@ -1,17 +1,16 @@
-<!--$Id: dbc_del.so,v 10.46 2006/09/13 14:30:52 mjc Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: dbc_del.so,v 10.47 2006/10/24 13:26:50 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
-<title>Berkeley DB: DBcursor-&gt;c_del</title>
+<title>Berkeley DB: DBcursor-&gt;del</title>
<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
</head>
<body bgcolor=white>
<table width="100%"><tr valign=top>
<td>
-<h3>DBcursor-&gt;c_del</h3>
+<h3>DBcursor-&gt;del</h3>
</td>
<td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a>
@@ -23,11 +22,11 @@
#include &lt;db.h&gt;
<p>
int
-DBcursor-&gt;c_del(DBC *DBcursor, u_int32_t flags);
+DBcursor-&gt;del(DBC *DBcursor, u_int32_t flags);
</pre></h3>
<hr size=1 noshade>
-<h3>Description: DBcursor-&gt;c_del</h3>
-<p>The DBcursor-&gt;c_del method deletes the key/data pair to which the cursor
+<h3>Description: DBcursor-&gt;del</h3>
+<p>The DBcursor-&gt;del method deletes the key/data pair to which the cursor
refers.</p>
<p>When called on a cursor opened on a database that has been made into a
secondary index using the <a href="../api_c/db_associate.html">DB-&gt;associate</a> method, the <a href="../api_c/db_del.html">DB-&gt;del</a> method
@@ -36,8 +35,8 @@ indices.</p>
<p>The cursor position is unchanged after a delete, and subsequent calls to
cursor functions expecting the cursor to refer to an existing key will
fail.</p>
-<p>The DBcursor-&gt;c_del method will return <a href="../ref/program/errorret.html#DB_KEYEMPTY">DB_KEYEMPTY</a> if the element has already been deleted.
-Unless otherwise specified, the DBcursor-&gt;c_del method
+<p>The DBcursor-&gt;del method will return <a href="../ref/program/errorret.html#DB_KEYEMPTY">DB_KEYEMPTY</a> if the element has already been deleted.
+Unless otherwise specified, the DBcursor-&gt;del method
returns a non-zero error value on failure
and 0 on success.
</p>
@@ -46,7 +45,7 @@ and 0 on success.
<dt><b>flags</b><dd>The <b>flags</b> parameter is currently unused, and must be set to 0.
</dl>
<h3>Errors</h3>
-<p>The DBcursor-&gt;c_del method
+<p>The DBcursor-&gt;del method
may fail and return one of the following non-zero errors:</p>
<dl compact>
<dt>DB_LOCK_DEADLOCK<dd>A transactional database environment operation was selected to resolve
@@ -82,6 +81,6 @@ specified to <a href="../api_c/env_open.html">DB_ENV-&gt;open</a>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/dbc_dup.html b/db/docs/api_c/dbc_dup.html
index 0f670831a..b0ccf1e55 100644
--- a/db/docs/api_c/dbc_dup.html
+++ b/db/docs/api_c/dbc_dup.html
@@ -1,17 +1,16 @@
-<!--$Id: dbc_dup.so,v 10.32 2004/08/13 03:38:56 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: dbc_dup.so,v 10.33 2006/10/24 13:26:50 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
-<title>Berkeley DB: DBcursor-&gt;c_dup</title>
+<title>Berkeley DB: DBcursor-&gt;dup</title>
<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
</head>
<body bgcolor=white>
<table width="100%"><tr valign=top>
<td>
-<h3>DBcursor-&gt;c_dup</h3>
+<h3>DBcursor-&gt;dup</h3>
</td>
<td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a>
@@ -23,15 +22,15 @@
#include &lt;db.h&gt;
<p>
int
-DBcursor-&gt;c_dup(DBC *DBcursor, DBC **cursorp, u_int32_t flags);
+DBcursor-&gt;dup(DBC *DBcursor, DBC **cursorp, u_int32_t flags);
</pre></h3>
<hr size=1 noshade>
-<h3>Description: DBcursor-&gt;c_dup</h3>
-<p>The DBcursor-&gt;c_dup method creates a new cursor that uses the same transaction
+<h3>Description: DBcursor-&gt;dup</h3>
+<p>The DBcursor-&gt;dup method creates a new cursor that uses the same transaction
and locker ID as the original cursor. This is useful when an application
is using locking and requires two or more cursors in the same thread of
control.</p>
-<p>The DBcursor-&gt;c_dup method
+<p>The DBcursor-&gt;dup method
returns a non-zero error value on failure
and 0 on success.
</p>
@@ -49,7 +48,7 @@ using <a href="../api_c/db_cursor.html">DB-&gt;cursor</a>.
</dl>
</dl>
<h3>Errors</h3>
-<p>The DBcursor-&gt;c_dup method
+<p>The DBcursor-&gt;dup method
may fail and return one of the following non-zero errors:</p>
<dl compact>
<dt>DB_REP_HANDLE_DEAD<dd>The database handle has been invalidated because a replication election
@@ -69,6 +68,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/dbc_get.html b/db/docs/api_c/dbc_get.html
index 7fec70baa..dc445ae43 100644
--- a/db/docs/api_c/dbc_get.html
+++ b/db/docs/api_c/dbc_get.html
@@ -1,17 +1,16 @@
-<!--$Id: dbc_get.so,v 10.114 2005/02/10 20:02:31 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: dbc_get.so,v 10.117 2007/05/31 18:52:36 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
-<title>Berkeley DB: DBcursor-&gt;c_get</title>
+<title>Berkeley DB: DBcursor-&gt;get</title>
<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
</head>
<body bgcolor=white>
<table width="100%"><tr valign=top>
<td>
-<h3>DBcursor-&gt;c_get</h3>
+<h3>DBcursor-&gt;get</h3>
</td>
<td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a>
@@ -23,37 +22,37 @@
#include &lt;db.h&gt;
<p>
int
-DBcursor-&gt;c_get(DBC *DBcursor,
+DBcursor-&gt;get(DBC *DBcursor,
DBT *key, DBT *data, u_int32_t flags);
<p>
int
-DBcursor-&gt;c_pget(DBC *DBcursor,
+DBcursor-&gt;pget(DBC *DBcursor,
DBT *key, DBT *pkey, DBT *data, u_int32_t flags);
</pre></h3>
<hr size=1 noshade>
-<h3>Description: DBcursor-&gt;c_get</h3>
-<p>The DBcursor-&gt;c_get method retrieves key/data pairs from the database. The
+<h3>Description: DBcursor-&gt;get</h3>
+<p>The DBcursor-&gt;get method retrieves key/data pairs from the database. The
address and length of the key are returned in the object to which
<b>key</b> refers (except for the case of the DB_SET flag, in
which the <b>key</b> object is unchanged), and the address and length
of the data are returned in the object to which <b>data</b> refers.</p>
<p>When called on a cursor opened on a database that has been made into a
-secondary index using the <a href="../api_c/db_associate.html">DB-&gt;associate</a> method, the DBcursor-&gt;c_get
-and DBcursor-&gt;c_pget methods return the key from the secondary index and the
-data item from the primary database. In addition, the DBcursor-&gt;c_pget method
+secondary index using the <a href="../api_c/db_associate.html">DB-&gt;associate</a> method, the DBcursor-&gt;get
+and DBcursor-&gt;pget methods return the key from the secondary index and the
+data item from the primary database. In addition, the DBcursor-&gt;pget method
returns the key from the primary database. In databases that are not
-secondary indices, the DBcursor-&gt;c_pget method will always fail.</p>
+secondary indices, the DBcursor-&gt;pget method will always fail.</p>
<p>Modifications to the database during a sequential scan will be reflected
in the scan; that is, records inserted behind a cursor will not be
returned while records inserted in front of a cursor will be returned.</p>
<p>In Queue and Recno databases, missing entries (that is, entries that
were never explicitly created or that were created and then deleted)
will be skipped during a sequential scan.</p>
-<p>Unless otherwise specified, the DBcursor-&gt;c_get method
+<p>Unless otherwise specified, the DBcursor-&gt;get method
returns a non-zero error value on failure
and 0 on success.
</p>
-<p>If DBcursor-&gt;c_get fails for any reason, the state of the cursor will be
+<p>If DBcursor-&gt;get fails for any reason, the state of the cursor will be
unchanged.</p>
<h3>Parameters</h3>
<dl compact>
@@ -61,24 +60,24 @@ unchanged.</p>
<dt><b>flags</b><dd>The <b>flags</b> parameter must be set to one of the following values:
<dl compact>
<dt><a name="DB_CURRENT">DB_CURRENT</a><dd>Return the key/data pair to which the cursor refers.
-<p>The DBcursor-&gt;c_get method will return <a href="../ref/program/errorret.html#DB_KEYEMPTY">DB_KEYEMPTY</a> if DB_CURRENT is set and the cursor key/data pair was deleted.
+<p>The DBcursor-&gt;get method will return <a href="../ref/program/errorret.html#DB_KEYEMPTY">DB_KEYEMPTY</a> if DB_CURRENT is set and the cursor key/data pair was deleted.
</p>
<dt><a name="DB_FIRST">DB_FIRST</a><dd>The cursor is set to refer to the first key/data pair of the database,
and that pair is returned. If the first key has duplicate values, the
first data item in the set of duplicates is returned.
-<p>If the database is a Queue or Recno database, DBcursor-&gt;c_get using the
+<p>If the database is a Queue or Recno database, DBcursor-&gt;get using the
DB_FIRST flag will ignore any keys that exist but were never
explicitly created by the application, or were created and later
deleted.</p>
-<p>The DBcursor-&gt;c_get method will return <a href="../ref/program/errorret.html#DB_NOTFOUND">DB_NOTFOUND</a> if DB_FIRST is set and the database is empty.
+<p>The DBcursor-&gt;get method will return <a href="../ref/program/errorret.html#DB_NOTFOUND">DB_NOTFOUND</a> if DB_FIRST is set and the database is empty.
</p>
<dt><a name="DB_GET_BOTH">DB_GET_BOTH</a><dd>The DB_GET_BOTH flag is identical to the DB_SET flag,
except that both the key and the data parameters must be matched by the
key and data item in the database.
-<p>When used with the DBcursor-&gt;c_pget method version of this method on a
+<p>When used with the DBcursor-&gt;pget method version of this method on a
secondary index handle, both the secondary and primary keys must be
matched by the secondary and primary key item in the database. It is
-an error to use the DB_GET_BOTH flag with the DBcursor-&gt;c_get
+an error to use the DB_GET_BOTH flag with the DBcursor-&gt;get
version of this method and a cursor that has been opened on a secondary
index handle.</p>
<dt><a name="DB_GET_BOTH_RANGE">DB_GET_BOTH_RANGE</a><dd>The DB_GET_BOTH_RANGE flag is identical to the DB_GET_BOTH
@@ -94,9 +93,9 @@ will be returned in <b>data</b>, as described in <a href="../api_c/dbt_class.htm
of type Btree, and it must have been created with the <a href="../api_c/db_set_flags.html#DB_RECNUM">DB_RECNUM</a>
flag.</p>
<p>When called on a cursor opened on a database that has been made into a
-secondary index, the DBcursor-&gt;c_get and DBcursor-&gt;c_pget methods return the
+secondary index, the DBcursor-&gt;get and DBcursor-&gt;pget methods return the
record number of the primary database in <b>data</b>. In addition, the
-DBcursor-&gt;c_pget method returns the record number of the secondary index in
+DBcursor-&gt;pget method returns the record number of the secondary index in
<b>pkey</b>. If either underlying database is not of type Btree or is
not created with the <a href="../api_c/db_set_flags.html#DB_RECNUM">DB_RECNUM</a> flag, the out-of-band record
number of 0 is returned.</p>
@@ -108,68 +107,74 @@ been returned from the <a href="../api_c/db_join.html">DB-&gt;join</a> method.</
<dt><a name="DB_LAST">DB_LAST</a><dd>The cursor is set to refer to the last key/data pair of the database,
and that pair is returned. If the last key has duplicate values, the
last data item in the set of duplicates is returned.
-<p>If the database is a Queue or Recno database, DBcursor-&gt;c_get using the
+<p>If the database is a Queue or Recno database, DBcursor-&gt;get using the
DB_LAST flag will ignore any keys that exist but were never
explicitly created by the application, or were created and later
deleted.</p>
-<p>The DBcursor-&gt;c_get method will return <a href="../ref/program/errorret.html#DB_NOTFOUND">DB_NOTFOUND</a> if DB_LAST is set and the database is empty.
+<p>The DBcursor-&gt;get method will return <a href="../ref/program/errorret.html#DB_NOTFOUND">DB_NOTFOUND</a> if DB_LAST is set and the database is empty.
</p>
<dt><a name="DB_NEXT">DB_NEXT</a><dd>If the cursor is not yet initialized, DB_NEXT is identical to
DB_FIRST. Otherwise, the cursor is moved to the next key/data
pair of the database, and that pair is returned. In the presence of
duplicate key values, the value of the key may not change.
-<p>If the database is a Queue or Recno database, DBcursor-&gt;c_get using the
+<p>If the database is a Queue or Recno database, DBcursor-&gt;get using the
DB_NEXT flag will skip any keys that exist but were never
explicitly created by the application, or those that were created and
later deleted.</p>
-<p>The DBcursor-&gt;c_get method will return <a href="../ref/program/errorret.html#DB_NOTFOUND">DB_NOTFOUND</a> if DB_NEXT is set and the cursor is already on the last record
+<p>The DBcursor-&gt;get method will return <a href="../ref/program/errorret.html#DB_NOTFOUND">DB_NOTFOUND</a> if DB_NEXT is set and the cursor is already on the last record
in the database.
</p>
<dt><a name="DB_NEXT_DUP">DB_NEXT_DUP</a><dd>If the next key/data pair of the database is a duplicate data record for
the current key/data pair, the cursor is moved to the next key/data pair
of the database, and that pair is returned.
-<p>The DBcursor-&gt;c_get method will return <a href="../ref/program/errorret.html#DB_NOTFOUND">DB_NOTFOUND</a> if DB_NEXT_DUP is set and the next key/data pair of the
+<p>The DBcursor-&gt;get method will return <a href="../ref/program/errorret.html#DB_NOTFOUND">DB_NOTFOUND</a> if DB_NEXT_DUP is set and the next key/data pair of the
database is not a duplicate data record for the current key/data pair.
</p>
<dt><a name="DB_NEXT_NODUP">DB_NEXT_NODUP</a><dd>If the cursor is not yet initialized, DB_NEXT_NODUP is identical
to DB_FIRST. Otherwise, the cursor is moved to the next
non-duplicate key of the database, and that key/data pair is returned.
-<p>If the database is a Queue or Recno database, DBcursor-&gt;c_get using the
+<p>If the database is a Queue or Recno database, DBcursor-&gt;get using the
DB_NEXT_NODUP flag will ignore any keys that exist but were
never explicitly created by the application, or those that were created
and later deleted.</p>
-<p>The DBcursor-&gt;c_get method will return <a href="../ref/program/errorret.html#DB_NOTFOUND">DB_NOTFOUND</a> if DB_NEXT_NODUP is set and no non-duplicate key/data pairs
+<p>The DBcursor-&gt;get method will return <a href="../ref/program/errorret.html#DB_NOTFOUND">DB_NOTFOUND</a> if DB_NEXT_NODUP is set and no non-duplicate key/data pairs
occur after the cursor position in the database.
</p>
<dt><a name="DB_PREV">DB_PREV</a><dd>If the cursor is not yet initialized, DB_PREV is identical to
DB_LAST. Otherwise, the cursor is moved to the previous
key/data pair of the database, and that pair is returned. In the
presence of duplicate key values, the value of the key may not change.
-<p>If the database is a Queue or Recno database, DBcursor-&gt;c_get using the
+<p>If the database is a Queue or Recno database, DBcursor-&gt;get using the
DB_PREV flag will skip any keys that exist but were never
explicitly created by the application, or those that were created and
later deleted.</p>
-<p>The DBcursor-&gt;c_get method will return <a href="../ref/program/errorret.html#DB_NOTFOUND">DB_NOTFOUND</a> if DB_PREV is set and the cursor is already on the first record
+<p>The DBcursor-&gt;get method will return <a href="../ref/program/errorret.html#DB_NOTFOUND">DB_NOTFOUND</a> if DB_PREV is set and the cursor is already on the first record
in the database.
</p>
+<dt><a name="DB_PREV_DUP">DB_PREV_DUP</a><dd>If the previous key/data pair of the database is a duplicate data record
+for the current key/data pair, the cursor is moved to the previous key/data
+pair of the database, and that pair is returned.
+<p>The DBcursor-&gt;get method will return <a href="../ref/program/errorret.html#DB_NOTFOUND">DB_NOTFOUND</a> if DB_PREV_DUP is set and the previous key/data pair of the
+database is not a duplicate data record for the current key/data pair.
+</p>
<dt><a name="DB_PREV_NODUP">DB_PREV_NODUP</a><dd>If the cursor is not yet initialized, DB_PREV_NODUP is identical
to DB_LAST. Otherwise, the cursor is moved to the previous
non-duplicate key of the database, and that key/data pair is returned.
-<p>If the database is a Queue or Recno database, DBcursor-&gt;c_get using the
+<p>If the database is a Queue or Recno database, DBcursor-&gt;get using the
DB_PREV_NODUP flag will ignore any keys that exist but were
never explicitly created by the application, or those that were created
and later deleted.</p>
-<p>The DBcursor-&gt;c_get method will return <a href="../ref/program/errorret.html#DB_NOTFOUND">DB_NOTFOUND</a> if DB_PREV_NODUP is set and no non-duplicate key/data pairs
+<p>The DBcursor-&gt;get method will return <a href="../ref/program/errorret.html#DB_NOTFOUND">DB_NOTFOUND</a> if DB_PREV_NODUP is set and no non-duplicate key/data pairs
occur before the cursor position in the database.
</p>
<dt><a name="DB_SET">DB_SET</a><dd>Move the cursor to the specified key/data pair of the database, and
return the datum associated with the given key.
-<p>The DBcursor-&gt;c_get method will return <a href="../ref/program/errorret.html#DB_NOTFOUND">DB_NOTFOUND</a> if DB_SET is set and
+<p>The DBcursor-&gt;get method will return <a href="../ref/program/errorret.html#DB_NOTFOUND">DB_NOTFOUND</a> if DB_SET is set and
no matching keys are found.
-The DBcursor-&gt;c_get method will return <a href="../ref/program/errorret.html#DB_KEYEMPTY">DB_KEYEMPTY</a> if DB_SET is set and the database is a
+The DBcursor-&gt;get method will return <a href="../ref/program/errorret.html#DB_KEYEMPTY">DB_KEYEMPTY</a> if DB_SET is set and the database is a
Queue or Recno database, and the specified key exists, but was never
explicitly created by the application or was later deleted.
-In the presence of duplicate key values, DBcursor-&gt;c_get will return the
+In the presence of duplicate key values, DBcursor-&gt;get will return the
first data item for the given key.
</p>
<dt><a name="DB_SET_RANGE">DB_SET_RANGE</a><dd>The DB_SET_RANGE flag is identical to the DB_SET flag,
@@ -190,9 +195,10 @@ flag.</p>
In addition, the following flags may be set by
bitwise inclusively <b>OR</b>'ing them into the <b>flags</b> parameter:
<dl compact>
-<dt><a name="DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a><dd>Read modified but not yet committed data. Silently ignored if the
-<a href="../api_c/db_open.html#DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a> flag was not specified when the underlying
-database was opened.
+<dt><a name="DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a><dd>Database items read during a transactional call will have degree 1
+isolation, including modified but not yet committed data. Silently
+ignored if the <a href="../api_c/db_open.html#DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a> flag was not specified when
+the underlying database was opened.
<dt><a name="DB_MULTIPLE">DB_MULTIPLE</a><dd>Return multiple data items in the <b>data</b> parameter.
<p>In the case of Btree or Hash databases, duplicate data items for the
current key, starting at the current cursor position, are entered into
@@ -262,17 +268,18 @@ DB_NEXT_NODUP, DB_SET, DB_SET_RANGE, and
DB_SET_RECNO options. The DB_MULTIPLE_KEY flag may not
be used when accessing databases made into secondary indices using the
<a href="../api_c/db_associate.html">DB-&gt;associate</a> method.</p>
-<dt><a name="DB_RMW">DB_RMW</a><dd>Acquire write locks instead of read locks when doing the retrieval.
-Setting this flag can eliminate deadlock during a read-modify-write
-cycle by acquiring the write lock during the read part of the cycle so
-that another thread of control acquiring a read lock for the same item,
-in its own read-modify-write cycle, will not result in deadlock.
+<dt><a name="DB_RMW">DB_RMW</a><dd>Acquire write locks instead of read locks when doing the read, if
+locking is configured. Setting this flag can eliminate deadlock during
+a read-modify-write cycle by acquiring the write lock during the read
+part of the cycle so that another thread of control acquiring a read
+lock for the same item, in its own read-modify-write cycle, will not
+result in deadlock.
</dl>
<dt><b>key</b><dd>The key <a href="../api_c/dbt_class.html">DBT</a> operated on.
<dt><b>pkey</b><dd>The secondary index key <a href="../api_c/dbt_class.html">DBT</a> operated on.
</dl>
<h3>Errors</h3>
-<p>The DBcursor-&gt;c_get method
+<p>The DBcursor-&gt;get method
may fail and return one of the following non-zero errors:</p>
<dl compact>
<dt>DB_BUFFER_SMALL<dd>The requested item could not be returned due to undersized buffer.
@@ -292,9 +299,9 @@ unrolled a committed transaction.
<dt>DB_SECONDARY_BAD<dd>A secondary index references a nonexistent primary key.
</dl>
<dl compact>
-<dt>EINVAL<dd>If the DB_CURRENT or DB_NEXT_DUP flags were specified and
-the cursor has not been initialized;
-the DBcursor-&gt;c_pget method was called with a cursor that does not refer to a
+<dt>EINVAL<dd>If the DB_CURRENT, DB_NEXT_DUP or DB_PREV_DUP flags
+were specified and the cursor has not been initialized;
+the DBcursor-&gt;pget method was called with a cursor that does not refer to a
secondary index; or if an
invalid flag value or parameter was specified.
</dl>
@@ -307,6 +314,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/dbc_list.html b/db/docs/api_c/dbc_list.html
index 0f40200ae..ffcff7aa5 100644
--- a/db/docs/api_c/dbc_list.html
+++ b/db/docs/api_c/dbc_list.html
@@ -1,6 +1,5 @@
<!--$Id: dbc_list.so,v 1.1 2002/08/30 20:00:49 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -10,17 +9,18 @@
</head>
<body bgcolor=white>
<h3 align=center>Berkeley DB: Database Cursors and Related Methods</h3>
-<!--$Id: m4.methods,v 1.4 2005/02/09 13:11:05 bostic Exp $-->
+<!--$Id: m4.methods,v 1.5 2007/05/08 21:37:19 bostic Exp $-->
<table border=1 align=center>
<tr><th>Database Cursors and Related Methods</th><th>Description</th></tr>
<!--Db::cursor--><tr><td><a href="../api_c/db_cursor.html">DB-&gt;cursor</a></td><td>Create a cursor</td></tr>
-<!--DbCursor::close--><tr><td><a href="../api_c/dbc_close.html">DBcursor-&gt;c_close</a></td><td>Close a cursor</td></tr>
-<!--DbCursor::count--><tr><td><a href="../api_c/dbc_count.html">DBcursor-&gt;c_count</a></td><td>Return count of duplicates</td></tr>
-<!--DbCursor::del--><tr><td><a href="../api_c/dbc_del.html">DBcursor-&gt;c_del</a></td><td>Delete by cursor</td></tr>
-<!--DbCursor::dup--><tr><td><a href="../api_c/dbc_dup.html">DBcursor-&gt;c_dup</a></td><td>Duplicate a cursor</td></tr>
-<!--DbCursor::get--><tr><td><a href="../api_c/dbc_get.html">DBcursor-&gt;c_get</a>, <a href="../api_c/dbc_get.html">DBcursor-&gt;c_pget</a></td><td>Retrieve by cursor</td></tr>
-<!--DbCursor::put--><tr><td><a href="../api_c/dbc_put.html">DBcursor-&gt;c_put</a></td><td>Store by cursor</td></tr>
+<!--DbCursor::close--><tr><td><a href="../api_c/dbc_close.html">DBcursor-&gt;close</a></td><td>Close a cursor</td></tr>
+<!--DbCursor::count--><tr><td><a href="../api_c/dbc_count.html">DBcursor-&gt;count</a></td><td>Return count of duplicates</td></tr>
+<!--DbCursor::del--><tr><td><a href="../api_c/dbc_del.html">DBcursor-&gt;del</a></td><td>Delete by cursor</td></tr>
+<!--DbCursor::dup--><tr><td><a href="../api_c/dbc_dup.html">DBcursor-&gt;dup</a></td><td>Duplicate a cursor</td></tr>
+<!--DbCursor::get--><tr><td><a href="../api_c/dbc_get.html">DBcursor-&gt;get</a>, <a href="../api_c/dbc_get.html">DBcursor-&gt;pget</a></td><td>Retrieve by cursor</td></tr>
+<!--DbCursor::put--><tr><td><a href="../api_c/dbc_put.html">DBcursor-&gt;put</a></td><td>Store by cursor</td></tr>
+<!--DbCursor::set_priority--><tr><td><a href="../api_c/dbc_set_priority.html">DBcursor-&gt;set_priority</a></td><td>Set the cursor's cache priority</td></tr>
</table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/dbc_put.html b/db/docs/api_c/dbc_put.html
index d10555ed2..0b8e5ec6a 100644
--- a/db/docs/api_c/dbc_put.html
+++ b/db/docs/api_c/dbc_put.html
@@ -1,17 +1,16 @@
-<!--$Id: dbc_put.so,v 10.60 2006/09/13 14:30:52 mjc Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: dbc_put.so,v 10.63 2007/05/03 15:20:37 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
-<title>Berkeley DB: DBcursor-&gt;c_put</title>
+<title>Berkeley DB: DBcursor-&gt;put</title>
<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
</head>
<body bgcolor=white>
<table width="100%"><tr valign=top>
<td>
-<h3>DBcursor-&gt;c_put</h3>
+<h3>DBcursor-&gt;put</h3>
</td>
<td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a>
@@ -23,17 +22,17 @@
#include &lt;db.h&gt;
<p>
int
-DBcursor-&gt;c_put(DBC *DBcursor, DBT *key, DBT *data, u_int32_t flags);
+DBcursor-&gt;put(DBC *DBcursor, DBT *key, DBT *data, u_int32_t flags);
</pre></h3>
<hr size=1 noshade>
-<h3>Description: DBcursor-&gt;c_put</h3>
-<p>The DBcursor-&gt;c_put method stores key/data pairs into the database.</p>
-<p>Unless otherwise specified, the DBcursor-&gt;c_put method
+<h3>Description: DBcursor-&gt;put</h3>
+<p>The DBcursor-&gt;put method stores key/data pairs into the database.</p>
+<p>Unless otherwise specified, the DBcursor-&gt;put method
returns a non-zero error value on failure
and 0 on success.
</p>
-<p>If DBcursor-&gt;c_put fails for any reason, the state of the cursor will be
-unchanged. If DBcursor-&gt;c_put succeeds and an item is inserted into the
+<p>If DBcursor-&gt;put fails for any reason, the state of the cursor will be
+unchanged. If DBcursor-&gt;put succeeds and an item is inserted into the
database, the cursor is always positioned to refer to the newly inserted
item.</p>
<h3>Parameters</h3>
@@ -45,8 +44,8 @@ item.</p>
element as a duplicate element of the key to which the cursor refers.
The new element appears immediately after the current cursor position.
It is an error to specify DB_AFTER if the underlying Btree or
-Hash database does not support duplicate data items. The <b>key</b>
-parameter is ignored.
+Hash database is not configured for unsorted duplicate data items. The
+<b>key</b> parameter is ignored.
<p>In the case of the Recno access method, it is an error to specify
DB_AFTER if the underlying Recno database was not created with
the <a href="../api_c/db_set_flags.html#DB_RENUMBER">DB_RENUMBER</a> flag. If the <a href="../api_c/db_set_flags.html#DB_RENUMBER">DB_RENUMBER</a> flag was
@@ -56,15 +55,15 @@ in the structure to which the <b>key</b> parameter refers. The initial
value of the <b>key</b> parameter is ignored. See <a href="../api_c/db_open.html">DB-&gt;open</a>
for more information.</p>
<p>The DB_AFTER flag may not be specified to the Queue access method.</p>
-<p>The DBcursor-&gt;c_put method will return <a href="../ref/program/errorret.html#DB_NOTFOUND">DB_NOTFOUND</a> if the current cursor record has already been deleted and the
+<p>The DBcursor-&gt;put method will return <a href="../ref/program/errorret.html#DB_NOTFOUND">DB_NOTFOUND</a> if the current cursor record has already been deleted and the
underlying access method is Hash.
</p>
<dt><a name="DB_BEFORE">DB_BEFORE</a><dd>In the case of the Btree and Hash access methods, insert the data
element as a duplicate element of the key to which the cursor refers.
The new element appears immediately before the current cursor position.
-It is an error to specify DB_BEFORE if the underlying Btree or
-Hash database does not support duplicate data items. The <b>key</b>
-parameter is ignored.
+It is an error to specify DB_AFTER if the underlying Btree or
+Hash database is not configured for unsorted duplicate data items. The
+<b>key</b> parameter is ignored.
<p>In the case of the Recno access method, it is an error to specify
DB_BEFORE if the underlying Recno database was not created with
the <a href="../api_c/db_set_flags.html#DB_RENUMBER">DB_RENUMBER</a> flag. If the <a href="../api_c/db_set_flags.html#DB_RENUMBER">DB_RENUMBER</a> flag was
@@ -74,33 +73,27 @@ returned in the structure to which the <b>key</b> parameter refers.
The initial value of the <b>key</b> parameter is ignored. See
<a href="../api_c/db_open.html">DB-&gt;open</a> for more information.</p>
<p>The DB_BEFORE flag may not be specified to the Queue access method.</p>
-<p>The DBcursor-&gt;c_put method will return <a href="../ref/program/errorret.html#DB_NOTFOUND">DB_NOTFOUND</a> if the current cursor record has already been deleted and the underlying
+<p>The DBcursor-&gt;put method will return <a href="../ref/program/errorret.html#DB_NOTFOUND">DB_NOTFOUND</a> if the current cursor record has already been deleted and the underlying
access method is Hash.
</p>
<dt><a name="DB_CURRENT">DB_CURRENT</a><dd>Overwrite the data of the key/data pair to which the cursor refers with
the specified data item. The <b>key</b> parameter is ignored.
-<p>The DBcursor-&gt;c_put method will return <a href="../ref/program/errorret.html#DB_NOTFOUND">DB_NOTFOUND</a> if the current cursor record has already been deleted.
+<p>The DBcursor-&gt;put method will return <a href="../ref/program/errorret.html#DB_NOTFOUND">DB_NOTFOUND</a> if the current cursor record has already been deleted.
</p>
-<dt><a name="DB_KEYFIRST">DB_KEYFIRST</a><dd>In the case of the Btree and Hash access methods, insert the specified
-key/data pair into the database.
+<dt><a name="DB_KEYFIRST">DB_KEYFIRST</a><dd>Insert the specified key/data pair into the database.
<p>If the underlying database supports duplicate data items, and if the
key already exists in the database and a duplicate sort function has
been specified, the inserted data item is added in its sorted location.
If the key already exists in the database and no duplicate sort function
has been specified, the inserted data item is added as the first of the
data items for that key.</p>
-<p>The DB_KEYFIRST flag may not be specified to the Queue or Recno
-access methods.</p>
-<dt><a name="DB_KEYLAST">DB_KEYLAST</a><dd>In the case of the Btree and Hash access methods, insert the specified
-key/data pair into the database.
+<dt><a name="DB_KEYLAST">DB_KEYLAST</a><dd>Insert the specified key/data pair into the database.
<p>If the underlying database supports duplicate data items, and if the
key already exists in the database and a duplicate sort function has
been specified, the inserted data item is added in its sorted location.
If the key already exists in the database, and no duplicate sort
function has been specified, the inserted data item is added as the last
of the data items for that key.</p>
-<p>The DB_KEYLAST flag may not be specified to the Queue or Recno
-access methods.</p>
<dt><a name="DB_NODUPDATA">DB_NODUPDATA</a><dd>In the case of the Btree and Hash access methods, insert the specified
key/data pair into the database, unless a key/data pair comparing
equally to it already exists in the database. If a matching key/data
@@ -113,7 +106,7 @@ access methods.</p>
<dt><b>key</b><dd>The key <a href="../api_c/dbt_class.html">DBT</a> operated on.
</dl>
<h3>Errors</h3>
-<p>The DBcursor-&gt;c_put method
+<p>The DBcursor-&gt;put method
may fail and return one of the following non-zero errors:</p>
<dl compact>
<dt>DB_LOCK_DEADLOCK<dd>A transactional database environment operation was selected to resolve
@@ -157,6 +150,6 @@ specified to <a href="../api_c/env_open.html">DB_ENV-&gt;open</a>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/dbc_set_priority.html b/db/docs/api_c/dbc_set_priority.html
new file mode 100644
index 000000000..40678f2a2
--- /dev/null
+++ b/db/docs/api_c/dbc_set_priority.html
@@ -0,0 +1,87 @@
+<!--$Id: dbc_set_priority.so,v 1.3 2007/05/22 18:06:05 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
+<!--See the file LICENSE for redistribution information.-->
+<html>
+<head>
+<title>Berkeley DB: DBcursor-&gt;set_priority</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
+</head>
+<body bgcolor=white>
+<table width="100%"><tr valign=top>
+<td>
+<h3>DBcursor-&gt;set_priority</h3>
+</td>
+<td align=right>
+<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a>
+<a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a></td>
+</tr></table>
+<hr size=1 noshade>
+<tt>
+<h3><pre>
+#include &lt;db.h&gt;
+<p>
+int
+DbCursor-&gt;set_priority(DBC *DbCursor, DB_CACHE_PRIORITY priority);
+<p>
+int
+DbCursor-&gt;get_priority(DBC *DbCursor, DB_CACHE_PRIORITY *priorityp);
+</pre></h3>
+<hr size=1 noshade>
+<h3>Description: DBcursor-&gt;set_priority</h3>
+<p>Set the cache priority for pages referenced by the
+<a href="../api_c/dbc_class.html">DBC</a>
+handle.</p>
+<p>The priority of a page biases the replacement algorithm to be more or
+less likely to discard a page when space is needed in the buffer pool.
+The bias is temporary, and pages will eventually be discarded if they
+are not referenced again. The DBcursor-&gt;set_priority method is only advisory, and does
+not guarantee pages will be treated in a specific way.</p>
+<p>The DBcursor-&gt;set_priority method may be called at any time during the life of the
+application.</p>
+<p>The DBcursor-&gt;set_priority method
+returns a non-zero error value on failure
+and 0 on success.
+</p>
+<h3>Parameters</h3>
+<dl compact>
+<dt><b>priority</b><dd>The <b>priority</b> parameter must be set to one of the following
+values:
+<dl compact>
+<dt><a name="DB_PRIORITY_VERY_LOW">DB_PRIORITY_VERY_LOW</a><dd>The lowest priority: pages are the most likely to be discarded.
+<dt><a name="DB_PRIORITY_LOW">DB_PRIORITY_LOW</a><dd>The next lowest priority.
+<dt><a name="DB_PRIORITY_DEFAULT">DB_PRIORITY_DEFAULT</a><dd>The default priority.
+<dt><a name="DB_PRIORITY_HIGH">DB_PRIORITY_HIGH</a><dd>The next highest priority.
+<dt><a name="DB_PRIORITY_VERY_HIGH">DB_PRIORITY_VERY_HIGH</a><dd>The highest priority: pages are the least likely to be discarded.
+</dl>
+</dl>
+<hr size=1 noshade>
+<h3>Description: DBcursor-&gt;get_priority</h3>
+<p>The DBcursor-&gt;get_priority method returns the cache priority for pages referenced by the
+<a href="../api_c/dbc_class.html">DBC</a>
+handle.</p>
+<p>The DBcursor-&gt;get_priority method may be called at any time during the life of the
+application.</p>
+<p>The DBcursor-&gt;get_priority method
+returns a non-zero error value on failure
+and 0 on success.
+</p>
+<h3>Parameters</h3>
+<dl compact>
+<dt><b>priorityp</b><dd>The DBcursor-&gt;get_priority method returns a reference to the
+cache priority for pages referenced by the
+<a href="../api_c/dbc_class.html">DBC</a>
+handle in <b>priorityp</b>.
+</dl>
+<hr size=1 noshade>
+<h3>Class</h3>
+<a href="../api_c/dbc_class.html">DBC</a>
+<h3>See Also</h3>
+<a href="../api_c/dbc_list.html">Database Cursors and Related Methods</a>
+</tt>
+<table width="100%"><tr><td><br></td><td align=right>
+<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
+</body>
+</html>
diff --git a/db/docs/api_c/dbm.html b/db/docs/api_c/dbm.html
index e4eb56fb8..6970c6f88 100644
--- a/db/docs/api_c/dbm.html
+++ b/db/docs/api_c/dbm.html
@@ -1,6 +1,5 @@
<!--$Id: dbm.so,v 10.26 2003/10/18 19:15:48 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -217,6 +216,6 @@ specified for other Berkeley DB and C library or system functions.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/dbt.html b/db/docs/api_c/dbt.html
deleted file mode 100644
index a0c3e76db..000000000
--- a/db/docs/api_c/dbt.html
+++ /dev/null
@@ -1,158 +0,0 @@
-<!--$Id: dbt.so,v 10.37 2000/12/18 21:05:12 bostic Exp $-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB: DBT</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<tt>
- <a name="2"><!--meow--></a>
-<h3>Key/Data Pairs</h3>
-<p>Storage and retrieval for the Berkeley DB access methods are based on key/data
-pairs. Both key and data items are represented by the DBT data structure.
-(The name DBT is a mnemonic for <i>data base thang</i>, and was used
-because no one could think of a reasonable name that wasn't already in
-use somewhere else.) Key and data byte strings may reference strings of
-zero length up to strings of essentially unlimited length. See
-<a href="../ref/program/dbsizes.html">Database limits</a> for more
-information.
-<p><blockquote><pre>typedef struct {
- void *data;
- u_int32_t size;
- u_int32_t ulen;
- u_int32_t dlen;
- u_int32_t doff;
- u_int32_t flags;
-} DBT;</pre></blockquote>
-<p>In order to ensure compatibility with future releases of Berkeley DB, all fields
-of the DBT structure that are not explicitly set should be initialized to
-0 before the first time the structure is used. Do this by declaring the
-structure external or static, or by calling the C library routine
-<b>bzero</b>(3) or <b>memset</b>(3).
-<p>By default, the <b>flags</b> structure element is expected to be 0. In
-this default case, when the application is providing Berkeley DB a key or data
-item to store into the database, Berkeley DB expects the <b>data</b> structure
-element to point to a byte string of <b>size</b> bytes. When returning
-a key/data item to the application, Berkeley DB will store into the <b>data</b>
-structure element a pointer to a byte string of <b>size</b> bytes, and
-the memory referenced by the pointer will be allocated and managed by Berkeley DB.
-<p>The elements of the DBT structure are defined as follows:
-<p><dl compact>
-<p><dt>void *<a name="data">data</a>;<dd>A pointer to a byte string.
-<p><dt>u_int32_t <a name="size">size</a>;<dd>The length of <b>data</b>, in bytes.
-<p><dt>u_int32_t <a name="ulen">ulen</a>;<dd>The size of the user's buffer (referenced by <b>data</b>), in bytes.
-This location is not written by the Berkeley DB functions.
-<p>Note that applications can determine the length of a record by setting
-the <b>ulen</b> field to 0 and checking the return value in the
-<b>size</b> field. See the DB_DBT_USERMEM flag for more information.
-<p><dt>u_int32_t <a name="dlen">dlen</a>;<dd>The length of the partial record being read or written by the application,
-in bytes. See the DB_DBT_PARTIAL flag for more information.
-<p><dt>u_int32_t <a name="doff">doff</a>;<dd>The offset of the partial record being read or written by the application,
-in bytes. See the DB_DBT_PARTIAL flag for more information.
-<p><dt>u_int32_t flags;<dd>
-<p>The <b>flags</b> value must be set to 0 or by bitwise inclusively <b>OR</b>'ing together one or more
-of the following values.
-<p><dl compact>
-<p><dt><a name="DB_DBT_MALLOC">DB_DBT_MALLOC</a><dd>When this flag is set Berkeley DB will allocate memory for the returned key
-or data item (using <b>malloc</b>(3), or the user-specified malloc
-function) and return a pointer to it in the <b>data</b> field of the
-key or data DBT structure. As any allocated memory becomes the
-responsibility of the calling application, the caller must be able to
-determine if memory was allocated.
-<p>It is an error to specify more than one of DB_DBT_MALLOC,
-DB_DBT_REALLOC and DB_DBT_USERMEM.
-<p><dt><a name="DB_DBT_REALLOC">DB_DBT_REALLOC</a><dd>When this flag is set Berkeley DB will allocate memory for the returned key
-or data item (using <b>realloc</b>(3), or the user-specified realloc
-function) and return a pointer to it in the <b>data</b> field of the
-key or data DBT structure. As any allocated memory becomes the
-responsibility of the calling application, the caller must be able to
-determine if memory was allocated.
-<p>The difference between DB_DBT_MALLOC and DB_DBT_REALLOC
-is that the latter will call <b>realloc</b>(3) instead of
-<b>malloc</b>(3), so the allocated memory will be grown as necessary
-instead of the application doing repeated free/malloc calls.
-<p>It is an error to specify more than one of DB_DBT_MALLOC,
-DB_DBT_REALLOC and DB_DBT_USERMEM.
-<p><dt><a name="DB_DBT_USERMEM">DB_DBT_USERMEM</a><dd>The <b>data</b> field of the key or data structure must reference
-memory that is at least <b>ulen</b> bytes in length. If the length of
-the requested item is less than or equal to that number of bytes, the
-item is copied into the memory referenced by the <b>data</b> field.
-Otherwise, the <b>size</b> field is set to the length needed for the
-requested item, and the error ENOMEM is returned.
-<p>It is an error to specify more than one of DB_DBT_MALLOC,
-DB_DBT_REALLOC and DB_DBT_USERMEM.
-<p><dt><a name="DB_DBT_PARTIAL">DB_DBT_PARTIAL</a><dd>Do partial retrieval or storage of an item. If the calling application
-is doing a get, the <b>dlen</b> bytes starting <b>doff</b> bytes from
-the beginning of the retrieved data record are returned as if they
-comprised the entire record. If any or all of the specified bytes do
-not exist in the record, the get is successful and the existing bytes
-or nul bytes are returned.
-<p>For example, if the data portion of a retrieved record was 100 bytes,
-and a partial retrieval was done using a DBT having a <b>dlen</b>
-field of 20 and a <b>doff</b> field of 85, the get call would succeed,
-the <b>data</b> field would reference the last 15 bytes of the record,
-and the <b>size</b> field would be set to 15.
-<p>If the calling application is doing a put, the <b>dlen</b> bytes
-starting <b>doff</b> bytes from the beginning of the specified key's
-data record are replaced by the data specified by the <b>data</b>
-and <b>size</b> structure elements.
-If <b>dlen</b> is smaller than <b>size</b>, the record will grow,
-and if <b>dlen</b> is larger than <b>size</b>, the record will shrink.
-If the specified bytes do not exist, the record will be extended using
-nul bytes as necessary, and the put call will succeed.
-<p>It is an error to attempt a partial put using the <a href="../api_c/db_put.html">DB-&gt;put</a> function
-in a database that supports duplicate records.
-Partial puts in databases supporting duplicate records must be done
-using a <a href="../api_c/dbc_put.html">DBcursor-&gt;c_put</a> function.
-<p>It is an error to attempt a partial put with differing <b>dlen</b> and
-<b>size</b> values in Queue or Recno databases with fixed-length records.
-<p>For example, if the data portion of a retrieved record was 100 bytes,
-and a partial put was done using a DBT having a <b>dlen</b> field of 20,
-a <b>doff</b> field of 85, and a <b>size</b> field of 30, the resulting
-record would be 115 bytes in length, where the last 30 bytes would be
-those specified by the put call.
-</dl>
-</dl>
- <a name="3"><!--meow--></a> <a name="4"><!--meow--></a>
-<h3>Retrieved key/data permanence</h3>
-<p>When using the non-cursor Berkeley DB calls to retrieve key/data items (e.g.,
-<a href="../api_c/db_get.html">DB-&gt;get</a>), the memory referenced by the pointer stored into the
-Dbt is only valid until the next call to Berkeley DB using the Db
-handle returned by <a href="../api_c/db_open.html">DB-&gt;open</a>. (This includes <b>any</b> use of
-the returned Db handle, including by another thread of control
-within the process. For this reason, when multiple threads are using the
-returned Db handle concurrently, one of the DB_DBT_MALLOC,
-DB_DBT_REALLOC or DB_DBT_USERMEM flags must be specified
-with any non-cursor Dbt used for key or data retrieval.)
-<p>When using the cursor Berkeley DB calls to retrieve key/data items (e.g.,
-<a href="../api_c/dbc_get.html">DBcursor-&gt;c_get</a>), the memory referenced by the pointer into the
-Dbt is only valid until the next call to Berkeley DB using the
-DBC handle returned by <a href="../api_c/db_cursor.html">DB-&gt;cursor</a>.
- <a name="5"><!--meow--></a>
-<h3>Data alignment</h3>
-<p>The Berkeley DB access methods provide no guarantees about key/data byte string
-alignment, and applications are responsible for arranging any necessary
-alignment. The DB_DBT_MALLOC, DB_DBT_REALLOC and
-DB_DBT_USERMEM flags may be used to store returned items in memory
-of arbitrary alignment.
- <a name="6"><!--meow--></a>
-<h3>Logical Record Numbers</h3>
-<p>In all cases for the Queue and Recno access methods, and when calling the
-<a href="../api_c/db_get.html">DB-&gt;get</a> and <a href="../api_c/dbc_get.html">DBcursor-&gt;c_get</a> functions with the
-<a href="../api_c/db_get.html#DB_SET_RECNO">DB_SET_RECNO</a> flag specified, the <b>data</b> field of the key
-must be a pointer to a memory location of type <b>db_recno_t</b>, as
-typedef'd in the #include &lt;db.h&gt; include file. This type is a 32-bit
-unsigned type, (which limits the number of logical records in a Queue or
-Recno database, and the maximum logical record which may be directly
-retrieved from a Btree database, to 4,294,967,296). The <b>size</b>
-field of the key should be the size of that type, i.e., in the C
-programming language, <b>sizeof(db_recno_t)</b>.
-<p>Logical record numbers are 1-based, not 0-based, i.e., the first record
-in the database is record number 1.
-</tt>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_c/dbt_bulk.html b/db/docs/api_c/dbt_bulk.html
index 2141977d1..8815cc0f9 100644
--- a/db/docs/api_c/dbt_bulk.html
+++ b/db/docs/api_c/dbt_bulk.html
@@ -1,6 +1,5 @@
-<!--$Id: dbt_bulk.so,v 10.13 2005/12/01 02:27:35 mjc Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: dbt_bulk.so,v 10.14 2007/01/31 14:45:22 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -21,7 +20,7 @@
<tt>
<a name="2"><!--meow--></a>
<p>If either of 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
-were specified to the <a href="../api_c/db_get.html">DB-&gt;get</a> or <a href="../api_c/dbc_get.html">DBcursor-&gt;c_get</a> methods, the data
+were specified to the <a href="../api_c/db_get.html">DB-&gt;get</a> or <a href="../api_c/dbc_get.html">DBcursor-&gt;get</a> methods, the data
<a href="../api_c/dbt_class.html">DBT</a> returned by those interfaces will refer to a buffer that is
filled with data. Access to that data is through the following
macros:</p>
@@ -30,11 +29,11 @@ macros:</p>
<p>Initialize the retrieval. The <b>pointer</b> parameter is a variable
to be initialized. The <b>data</b> parameter is a <a href="../api_c/dbt_class.html">DBT</a>
structure returned from a successful call to <a href="../api_c/db_get.html">DB-&gt;get</a> or
-<a href="../api_c/dbc_get.html">DBcursor-&gt;c_get</a> for which one of the <a href="../api_c/dbc_get.html#DB_MULTIPLE">DB_MULTIPLE</a> or
+<a href="../api_c/dbc_get.html">DBcursor-&gt;get</a> for which one of 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 was specified.</p>
<dt><a name="DB_MULTIPLE_NEXT">DB_MULTIPLE_NEXT</a><dd><pre>DB_MULTIPLE_NEXT(void *pointer, <a href="../api_c/dbt_class.html">DBT</a> *data, void *retdata, size_t retdlen);</pre>
<p>The <b>data</b> parameter is a <a href="../api_c/dbt_class.html">DBT</a> structure returned from a
-successful call to <a href="../api_c/db_get.html">DB-&gt;get</a> or <a href="../api_c/dbc_get.html">DBcursor-&gt;c_get</a> for which the
+successful call to <a href="../api_c/db_get.html">DB-&gt;get</a> or <a href="../api_c/dbc_get.html">DBcursor-&gt;get</a> for which the
<a href="../api_c/dbc_get.html#DB_MULTIPLE">DB_MULTIPLE</a> flag was specified. The <b>pointer</b> and
<b>data</b> parameters must have been previously initialized by a call
to DB_MULTIPLE_INIT. The <b>retdata</b> parameter is set to
@@ -47,7 +46,7 @@ elements in the returned set.</p>
<dt><a name="DB_MULTIPLE_KEY_NEXT">DB_MULTIPLE_KEY_NEXT</a><dd><pre>DB_MULTIPLE_KEY_NEXT(void *pointer, <a href="../api_c/dbt_class.html">DBT</a> *data,
void *retkey, size_t retklen, void *retdata, size_t retdlen);</pre>
<p>The <b>data</b> parameter is a <a href="../api_c/dbt_class.html">DBT</a> structure returned from a
-successful call to <a href="../api_c/dbc_get.html">DBcursor-&gt;c_get</a> with the Btree or Hash access methods
+successful call to <a href="../api_c/dbc_get.html">DBcursor-&gt;get</a> with the Btree or Hash access methods
for which the <a href="../api_c/dbc_get.html#DB_MULTIPLE_KEY">DB_MULTIPLE_KEY</a> flag was specified. The
<b>pointer</b> and <b>data</b> parameters must have been previously
initialized by a call to DB_MULTIPLE_INIT. The <b>retkey</b>
@@ -61,7 +60,7 @@ pairs in the returned set.</p>
<dt><a name="DB_MULTIPLE_RECNO_NEXT">DB_MULTIPLE_RECNO_NEXT</a><dd><pre>DB_MULTIPLE_RECNO_NEXT(void *pointer, <a href="../api_c/dbt_class.html">DBT</a> *data,
db_recno_t recno, void * retdata, size_t retdlen);</pre>
<p>The <b>data</b> parameter is a <a href="../api_c/dbt_class.html">DBT</a> structure returned from a
-successful call to <a href="../api_c/dbc_get.html">DBcursor-&gt;c_get</a> with the Queue or Recno access
+successful call to <a href="../api_c/dbc_get.html">DBcursor-&gt;get</a> with the Queue or Recno access
methods for which the <a href="../api_c/dbc_get.html#DB_MULTIPLE_KEY">DB_MULTIPLE_KEY</a> flag was specified. The
<b>pointer</b> and <b>data</b> parameters must have been previously
initialized by a call to DB_MULTIPLE_INIT. The <b>recno</b>
@@ -72,10 +71,12 @@ the length, in bytes, of that data element. Deleted records are not
included in the results. The <b>pointer</b> parameter is set to NULL
if there are no more key/data pairs in the returned set.</p>
</dl>
+<p>These macros may be called multiple times, but DB_MULTIPLE_INIT
+must be called before each new access of the data.</p>
</tt>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/dbt_class.html b/db/docs/api_c/dbt_class.html
index 75518917c..c65ee3fc2 100644
--- a/db/docs/api_c/dbt_class.html
+++ b/db/docs/api_c/dbt_class.html
@@ -1,7 +1,6 @@
<!--$Id: dbt_class.so,v 10.1 2002/08/24 18:22:30 bostic Exp $-->
-<!--$Id: dbt_c.so,v 10.51 2004/10/14 15:58:42 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: dbt_c.so,v 10.52 2007/02/27 00:41:24 mjc Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -118,7 +117,7 @@ the put call will succeed.</p>
<p>It is an error to attempt a partial put using the <a href="../api_c/db_put.html">DB-&gt;put</a> function
in a database that supports duplicate records.
Partial puts in databases supporting duplicate records must be done
-using a <a href="../api_c/dbc_put.html">DBcursor-&gt;c_put</a> function.</p>
+using a <a href="../api_c/dbc_put.html">DBcursor-&gt;put</a> function.</p>
<p>It is an error to attempt a partial put with differing <b>dlen</b> and
<b>size</b> values in Queue or Recno databases with fixed-length records.</p>
<p>For example, if the data portion of a retrieved record was 100 bytes,
@@ -126,12 +125,28 @@ and a partial put was done using a DBT having a <b>dlen</b> field of 20,
a <b>doff</b> field of 85, and a <b>size</b> field of 30, the resulting
record would be 115 bytes in length, where the last 30 bytes would be
those specified by the put call.</p>
+<dt><a name="DB_DBT_APPMALLOC">DB_DBT_APPMALLOC</a><dd>After an application-supplied callback routine passed to either
+<a href="../api_c/db_associate.html">DB-&gt;associate</a> or <a href="../api_c/db_set_append_recno.html">DB-&gt;set_append_recno</a> is executed, the
+<b>data</b> field of a DBT may refer to memory allocated with
+<b>malloc</b>(3) or <b>realloc</b>(3). In that case, the
+callback sets the <a href="../api_c/dbt_class.html#DB_DBT_APPMALLOC">DB_DBT_APPMALLOC</a> flag in the DBT so
+that Berkeley DB will call <b>free</b>(3) to deallocate the memory when it
+is no longer required.
+<dt><a name="DB_DBT_MULTIPLE">DB_DBT_MULTIPLE</a><dd>Set in a secondary key creation callback routine passed to
+<a href="../api_c/db_associate.html">DB-&gt;associate</a> to indicate that multiple secondary keys should be
+associated with the given primary key/data pair. If set, the
+<b>size</b> field indicates the number of secondary keys and the
+<b>data</b> field refers to an array of that number of DBT
+structures.
+<p>The <a href="../api_c/dbt_class.html#DB_DBT_APPMALLOC">DB_DBT_APPMALLOC</a> flag may be set on any of the DBT
+structures to indicate that their <b>data</b> field needs to be
+freed.</p>
</dl>
</dl>
</tt>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/dbt_package.html b/db/docs/api_c/dbt_package.html
index 031fb49bf..a846b692d 100644
--- a/db/docs/api_c/dbt_package.html
+++ b/db/docs/api_c/dbt_package.html
@@ -1,6 +1,5 @@
<!--$Id: dbt_package.so,v 10.2 2004/08/29 14:00:03 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -18,6 +17,6 @@
<tr><td><a href="../api_c/dbt_bulk.html#DB_MULTIPLE_KEY_NEXT">DB_MULTIPLE_KEY_NEXT</a></td><td>Next bulk get retrieval</td></tr>
<tr><td><a href="../api_c/dbt_bulk.html#DB_MULTIPLE_RECNO_NEXT">DB_MULTIPLE_RECNO_NEXT</a></td><td>Next bulk get retrieval</td></tr>
</table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/env_cdsgroup_begin.html b/db/docs/api_c/env_cdsgroup_begin.html
index 3e961b135..4706684f9 100644
--- a/db/docs/api_c/env_cdsgroup_begin.html
+++ b/db/docs/api_c/env_cdsgroup_begin.html
@@ -1,6 +1,5 @@
<!--$Id: env_cdsgroup_begin.so,v 1.2 2006/08/24 19:02:06 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -55,6 +54,6 @@ may fail and return one of the following non-zero errors:</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/env_class.html b/db/docs/api_c/env_class.html
index 91e112c9c..0e2347ca9 100644
--- a/db/docs/api_c/env_class.html
+++ b/db/docs/api_c/env_class.html
@@ -1,6 +1,5 @@
<!--$Id: env_class.so,v 10.45 2005/11/30 19:09:47 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -74,6 +73,6 @@ DB_ENV
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/env_close.html b/db/docs/api_c/env_close.html
index 5fe2f2a9a..52f6da440 100644
--- a/db/docs/api_c/env_close.html
+++ b/db/docs/api_c/env_close.html
@@ -1,6 +1,5 @@
<!--$Id: env_close.so,v 10.38 2004/08/13 03:38:56 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -78,6 +77,6 @@ and 0 on success.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/env_dbremove.html b/db/docs/api_c/env_dbremove.html
index 1ac2676d0..0f48df629 100644
--- a/db/docs/api_c/env_dbremove.html
+++ b/db/docs/api_c/env_dbremove.html
@@ -1,6 +1,5 @@
<!--$Id: env_dbremove.so,v 10.49 2004/12/16 19:13:01 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -57,14 +56,15 @@ the following value:
changes made by the operation will be recoverable. If the call fails,
the operation will have made no changes.
</dl>
-<dt><b>txnid</b><dd>If the operation is part of an application-specified
-transaction, the <b>txnid</b> parameter is a transaction handle
-returned from <a href="../api_c/txn_begin.html">DB_ENV-&gt;txn_begin</a>; if the operation is part of a Berkeley DB Concurrent Data Store
-group, the <b>txnid</b> parameter is a handle returned from
-<a href="../api_c/env_cdsgroup_begin.html">DB_ENV-&gt;cdsgroup_begin</a>; otherwise NULL. If no transaction handle is
+<dt><b>txnid</b><dd>If the operation is part of an application-specified transaction, the
+<b>txnid</b> parameter is a transaction handle returned from
+<a href="../api_c/txn_begin.html">DB_ENV-&gt;txn_begin</a>; if the operation is part of a Berkeley DB Concurrent Data Store group, the
+<b>txnid</b> parameter is a handle returned from
+<a href="../api_c/env_cdsgroup_begin.html">DB_ENV-&gt;cdsgroup_begin</a>; otherwise NULL.
+If no transaction handle is
specified, but the
DB_AUTO_COMMIT flag is specified,
-the operation will be implicitly transaction protected.
+the operation will be implicitly transaction protected.
</dl>
<h3>Environment Variables</h3>
<p>The
@@ -98,6 +98,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/env_dbrename.html b/db/docs/api_c/env_dbrename.html
index 4c8177b10..758cc9984 100644
--- a/db/docs/api_c/env_dbrename.html
+++ b/db/docs/api_c/env_dbrename.html
@@ -1,6 +1,5 @@
<!--$Id: env_dbrename.so,v 10.37 2004/12/16 19:13:01 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -60,14 +59,15 @@ changes made by the operation will be recoverable. If the call fails,
the operation will have made no changes.
</dl>
<dt><b>newname</b><dd>The <b>newname</b> parameter is the new name of the database or file.
-<dt><b>txnid</b><dd>If the operation is part of an application-specified
-transaction, the <b>txnid</b> parameter is a transaction handle
-returned from <a href="../api_c/txn_begin.html">DB_ENV-&gt;txn_begin</a>; if the operation is part of a Berkeley DB Concurrent Data Store
-group, the <b>txnid</b> parameter is a handle returned from
-<a href="../api_c/env_cdsgroup_begin.html">DB_ENV-&gt;cdsgroup_begin</a>; otherwise NULL. If no transaction handle is
+<dt><b>txnid</b><dd>If the operation is part of an application-specified transaction, the
+<b>txnid</b> parameter is a transaction handle returned from
+<a href="../api_c/txn_begin.html">DB_ENV-&gt;txn_begin</a>; if the operation is part of a Berkeley DB Concurrent Data Store group, the
+<b>txnid</b> parameter is a handle returned from
+<a href="../api_c/env_cdsgroup_begin.html">DB_ENV-&gt;cdsgroup_begin</a>; otherwise NULL.
+If no transaction handle is
specified, but the
DB_AUTO_COMMIT flag is specified,
-the operation will be implicitly transaction protected.
+the operation will be implicitly transaction protected.
</dl>
<h3>Environment Variables</h3>
<p>The
@@ -101,6 +101,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/env_err.html b/db/docs/api_c/env_err.html
index 463f61269..cc3a749de 100644
--- a/db/docs/api_c/env_err.html
+++ b/db/docs/api_c/env_err.html
@@ -1,6 +1,5 @@
<!--$Id: env_err.so,v 10.34 2006/04/27 20:17:47 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -78,6 +77,6 @@ string.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/env_event_notify.html b/db/docs/api_c/env_event_notify.html
index c5471d823..2a97518b5 100644
--- a/db/docs/api_c/env_event_notify.html
+++ b/db/docs/api_c/env_event_notify.html
@@ -1,6 +1,5 @@
-<!--$Id: env_event_notify.so,v 10.9 2006/06/27 22:49:29 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: env_event_notify.so,v 10.13 2007/04/05 20:37:29 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -57,28 +56,41 @@ rather than gracefully return up the stack.
environment has failed. All threads of control in the database
environment should exit the environment, and recovery should be run.</p>
<dt><a name="DB_EVENT_REP_CLIENT">DB_EVENT_REP_CLIENT</a><dd>The local site is now a replication client.
+<dt><a name="DB_EVENT_REP_ELECTED">DB_EVENT_REP_ELECTED</a><dd>The local replication site has just won an election. An application using
+the Base replication API should arrange for a call to the <a href="../api_c/rep_start.html">DB_ENV-&gt;rep_start</a> method
+after receiving this event, to reconfigure the local environment as a
+replication master.
+<p>Replication Manager applications may safely ignore this event. The
+Replication Manager calls <a href="../api_c/rep_start.html">DB_ENV-&gt;rep_start</a> automatically on behalf of
+the application when appropriate (resulting in firing of the
+DB_EVENT_REP_MASTER event).</p>
<dt><a name="DB_EVENT_REP_MASTER">DB_EVENT_REP_MASTER</a><dd>The local site is now the master site of its replication group. It is
the application's responsibility to begin acting as the master environment.
<dt><a name="DB_EVENT_REP_NEWMASTER">DB_EVENT_REP_NEWMASTER</a><dd>The replication group of which this site is a member has just established a
new master; the local site is not the new master. The
<b>event_info</b> parameter points to an integer containing the
environment ID of the new master.
-<p>The DB_EVENT_REP_NEWMASTER event is provided only to applications using
-the replication manager support.</p>
+<dt><a name="DB_EVENT_REP_PERM_FAILED">DB_EVENT_REP_PERM_FAILED</a><dd>The replication manager did not receive enough acknowledgements (based on
+the acknowledgement policy configured with <a href="../api_c/repmgr_ack_policy.html">DB_ENV-&gt;repmgr_set_ack_policy</a>)
+to ensure a transaction's durability within the replication group. The
+transaction will be flushed to the master's local disk storage for
+durability.
+<p>The DB_EVENT_REP_PERM_FAILED event is provided only to applications
+configured for the replication manager.</p>
<dt><a name="DB_EVENT_REP_STARTUPDONE">DB_EVENT_REP_STARTUPDONE</a><dd>The client has completed startup synchronization and is now processing
live log records received from the master.
<dt><a name="DB_EVENT_WRITE_FAILED">DB_EVENT_WRITE_FAILED</a><dd>A Berkeley DB write to stable storage failed.
</dl>
-<p>Berkeley DB is not re-entrant. Callback functions should not attempt to make
-library calls (for example, to release locks or close open handles).
-Re-entering Berkeley DB is not guaranteed to work correctly, and the results
-are undefined.</p>
<dt>event_info<dd>The <b>event_info</b> parameter may reference memory which contains
additional information describing an event. By default,
<b>event_info</b> is NULL; specific events may pass non-NULL values,
in which case the event will also describe the memory's structure.
</dl>
</dl>
+<p>Berkeley DB is not re-entrant. Callback functions should not attempt to make
+library calls (for example, to release locks or close open handles).
+Re-entering Berkeley DB is not guaranteed to work correctly, and the results
+are undefined.</p>
<hr size=1 noshade>
<h3>Class</h3>
<a href="../api_c/env_class.html">DB_ENV</a>
@@ -88,6 +100,6 @@ in which case the event will also describe the memory's structure.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/env_failchk.html b/db/docs/api_c/env_failchk.html
index f1a8d8ba7..e0e3c28c7 100644
--- a/db/docs/api_c/env_failchk.html
+++ b/db/docs/api_c/env_failchk.html
@@ -1,6 +1,5 @@
-<!--$Id: env_failchk.so,v 10.5 2006/05/26 20:40:50 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: env_failchk.so,v 10.6 2006/10/12 21:37:42 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -23,7 +22,7 @@
#include &lt;db.h&gt;
<p>
int
-DB_ENV-&gt;dbenv_failchk(DB_ENV *dbenv, u_int32_t flags);
+DB_ENV-&gt;failchk(DB_ENV *dbenv, u_int32_t flags);
</pre></h3>
<hr size=1 noshade>
<h3>Description: DB_ENV-&gt;failchk</h3>
@@ -87,6 +86,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/env_fileid_reset.html b/db/docs/api_c/env_fileid_reset.html
index 4d463aedd..88de4f5ee 100644
--- a/db/docs/api_c/env_fileid_reset.html
+++ b/db/docs/api_c/env_fileid_reset.html
@@ -1,6 +1,5 @@
<!--$Id: env_fileid_reset.so,v 1.3 2005/12/13 16:48:01 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -67,6 +66,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/env_list.html b/db/docs/api_c/env_list.html
index e6ec0358c..a00d26bc7 100644
--- a/db/docs/api_c/env_list.html
+++ b/db/docs/api_c/env_list.html
@@ -1,6 +1,5 @@
<!--$Id: env_list.so,v 10.1 2002/08/30 20:00:50 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -52,6 +51,6 @@
<!--DbEnv::set_tmp_dir--><tr><td><a href="../api_c/env_set_tmp_dir.html">DB_ENV-&gt;set_tmp_dir</a></td><td>Set the environment temporary file directory</td></tr>
<!--DbEnv::set_verbose--><tr><td><a href="../api_c/env_set_verbose.html">DB_ENV-&gt;set_verbose</a></td><td>Set verbose messages</td></tr>
</table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/env_lsn_reset.html b/db/docs/api_c/env_lsn_reset.html
index 9ba115c25..08fd594e6 100644
--- a/db/docs/api_c/env_lsn_reset.html
+++ b/db/docs/api_c/env_lsn_reset.html
@@ -1,6 +1,5 @@
<!--$Id: env_lsn_reset.so,v 1.4 2005/12/13 16:48:01 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -73,6 +72,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/env_open.html b/db/docs/api_c/env_open.html
index 9d09bd8ab..0df8a0415 100644
--- a/db/docs/api_c/env_open.html
+++ b/db/docs/api_c/env_open.html
@@ -1,6 +1,5 @@
<!--$Id: env_open.so,v 10.111 2006/08/02 17:39:47 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -270,6 +269,6 @@ open method flags in <b>flagsp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/env_remove.html b/db/docs/api_c/env_remove.html
index fbfcf3b27..ba63095c5 100644
--- a/db/docs/api_c/env_remove.html
+++ b/db/docs/api_c/env_remove.html
@@ -1,6 +1,5 @@
-<!--$Id: env_remove.so,v 10.44 2004/08/13 03:38:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: env_remove.so,v 10.45 2006/12/08 16:22:45 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -102,10 +101,7 @@ example, users with a user-ID of 0 on UNIX systems).
<p>The DB_ENV-&gt;remove method
may fail and return one of the following non-zero errors:</p>
<dl compact>
-<dt>EBUSY <dd>The shared memory region was in use and the force flag was not set.
-</dl>
-<dl compact>
-<dt>ENOENT<dd>The file or directory does not exist.
+<dt>EBUSY<dd>The shared memory region was in use and the force flag was not set.
</dl>
<hr size=1 noshade>
<h3>Class</h3>
@@ -116,6 +112,6 @@ may fail and return one of the following non-zero errors:</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/env_set_alloc.html b/db/docs/api_c/env_set_alloc.html
index 41d20f753..20c1fe8ac 100644
--- a/db/docs/api_c/env_set_alloc.html
+++ b/db/docs/api_c/env_set_alloc.html
@@ -1,6 +1,5 @@
<!--$Id: env_set_alloc.so,v 1.22 2004/08/13 03:38:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -90,6 +89,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/env_set_app_dispatch.html b/db/docs/api_c/env_set_app_dispatch.html
index 1643eaac1..bcb77f071 100644
--- a/db/docs/api_c/env_set_app_dispatch.html
+++ b/db/docs/api_c/env_set_app_dispatch.html
@@ -1,6 +1,5 @@
<!--$Id: env_set_app_dispatch.so,v 10.54 2004/08/13 03:38:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -97,6 +96,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/env_set_cache_max.html b/db/docs/api_c/env_set_cache_max.html
new file mode 100644
index 000000000..e048733d0
--- /dev/null
+++ b/db/docs/api_c/env_set_cache_max.html
@@ -0,0 +1,91 @@
+<!--$Id: env_set_cache_max.so,v 1.2 2007/07/07 14:40:15 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
+<!--See the file LICENSE for redistribution information.-->
+<html>
+<head>
+<title>Berkeley DB: DB_ENV-&gt;set_cache_max</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
+</head>
+<body bgcolor=white>
+<table width="100%"><tr valign=top>
+<td>
+<h3>DB_ENV-&gt;set_cache_max</h3>
+</td>
+<td align=right>
+<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a>
+<a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a></td>
+</tr></table>
+<hr size=1 noshade>
+<tt>
+<h3><pre>
+#include &lt;db.h&gt;
+<p>
+int
+DB_ENV-&gt;set_cache_max(DB_ENV *dbenv, u_int32_t gbytes, u_int32_t bytes);
+<p>
+int
+DB_ENV-&gt;get_cache_max(DB_ENV *dbenv, u_int32_t *gbytesp, u_int32_t *bytesp);
+</pre></h3>
+<hr size=1 noshade>
+<h3>Description: DB_ENV-&gt;set_cache_max</h3>
+<p>The DB_ENV-&gt;set_cache_max method sets the maximum cache size, in bytes.
+The specified size is rounded to the nearest multiple of the cache
+region size, which is the initial cache size divided by the number of
+regions specified to the <a href="../api_c/env_set_cachesize.html">DB_ENV-&gt;set_cachesize</a> method. If no value is
+specified, it defaults to the initial cache size.</p>
+<p>The database environment's maximum cache size may also be configured using the
+environment's <b>DB_CONFIG</b> file. The syntax of the entry in that
+file is a single line with the string "set_cache_max", one or more whitespace
+characters, and the size in bytes.
+Because the <b>DB_CONFIG</b> file is read when the database
+environment is opened, it will silently overrule configuration done
+before that time.</p>
+<p>The DB_ENV-&gt;set_cache_max method configures a database environment, not only operations
+performed using the specified <a href="../api_c/env_class.html">DB_ENV</a> handle.</p>
+<p>The DB_ENV-&gt;set_cache_max method may be called at any time during the life of the
+application.</p>
+<p>The DB_ENV-&gt;set_cache_max method
+returns a non-zero error value on failure
+and 0 on success.
+</p>
+<h3>Parameters</h3>
+<dl compact>
+<dt><b>mp_mmapsize</b><dd>The <b>mp_mmapsize</b> parameter is the maximum file size, in bytes,
+for a file to be mapped into the process address space.
+</dl>
+<h3>Errors</h3>
+<p>The DB_ENV-&gt;set_cache_max method
+may fail and return one of the following non-zero errors:</p>
+<dl compact>
+<dt>EINVAL<dd>If the method was called after <a href="../api_c/env_open.html">DB_ENV-&gt;open</a> was called; or if an
+invalid flag value or parameter was specified.
+</dl>
+<hr size=1 noshade>
+<h3>Description: DB_ENV-&gt;get_cache_max</h3>
+<p>The DB_ENV-&gt;get_cache_max method returns the maximum size of the cache.</p>
+<p>The DB_ENV-&gt;get_cache_max method may be called at any time during the life of the
+application.</p>
+<p>The DB_ENV-&gt;get_cache_max method
+returns a non-zero error value on failure
+and 0 on success.
+</p>
+<h3>Parameters</h3>
+<dl compact>
+<dt><b>bytesp</b><dd>The <b>bytesp</b> parameter references memory into which
+ the additional bytes of memory in the cache is copied.
+<dt><b>gbytesp</b><dd>The <b>gbytesp</b> parameter references memory into which
+ the gigabytes of memory in the cache is copied.
+</dl>
+<hr size=1 noshade>
+<h3>Class</h3>
+<a href="../api_c/env_class.html">DB_ENV</a>
+<h3>See Also</h3>
+<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/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
+</body>
+</html>
diff --git a/db/docs/api_c/env_set_cachesize.html b/db/docs/api_c/env_set_cachesize.html
index 60093c69a..d3565d050 100644
--- a/db/docs/api_c/env_set_cachesize.html
+++ b/db/docs/api_c/env_set_cachesize.html
@@ -1,6 +1,5 @@
-<!--$Id: env_set_cachesize.so,v 10.50 2005/01/10 07:18:43 mjc Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: env_set_cachesize.so,v 10.51 2007/07/06 00:22:52 mjc Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -50,26 +49,29 @@ allocated contiguously on some architectures. For example, some
releases of Solaris limit the amount of memory that may be allocated
contiguously by a process. If <b>ncache</b> is 0 or 1, the cache will
be allocated contiguously in memory. If it is greater than 1, the cache
-will be broken up into <b>ncache</b> equally sized, separate pieces of
-memory.</p>
-<p>The database environment's cache size may also be configured using the
+will be split across <b>ncache</b> separate regions, where the
+<b>region size</b> is equal to the initial cache size divided by
+<b>ncache</b>.</p>
+<p>The memory pool may be resized by calling DB_ENV-&gt;set_cachesize
+after the environment is open. The supplied size will be rounded to
+the nearest multiple of the region size and may not be larger than the
+maximum size configured with <a href="../api_c/env_set_cache_max.html">DB_ENV-&gt;set_cache_max</a>. The
+<b>ncache</b> parameter is ignored when resizing the cache.</p>
+<p>The database environment's initial cache size may also be configured using the
environment's <b>DB_CONFIG</b> file. The syntax of the entry in that
file is a single line with the string "set_cachesize", one or more whitespace
-characters, and the cache size specified in three parts: the gigabytes of cache, the
-additional bytes of cache, and the number of caches, also separated by
-whitespace characters. For example, "set_cachesize 2 524288000 3" would
-create a 2.5GB logical cache, split between three physical caches.
+characters, and the initial cache size specified in three parts: the gigabytes of
+cache, the additional bytes of cache, and the number of caches, also
+separated by whitespace characters. For example, "set_cachesize 2
+524288000 3" would create a 2.5GB logical cache, split between three
+physical caches.
Because the <b>DB_CONFIG</b> file is read when the database
environment is opened, it will silently overrule configuration done
before that time.</p>
<p>The DB_ENV-&gt;set_cachesize method configures a database environment, not only operations
performed using the specified <a href="../api_c/env_class.html">DB_ENV</a> handle.</p>
-<p>The DB_ENV-&gt;set_cachesize method may not be called after the <a href="../api_c/env_open.html">DB_ENV-&gt;open</a> method is
-called.
-If the database environment already exists when
-<a href="../api_c/env_open.html">DB_ENV-&gt;open</a> is called, the information specified to DB_ENV-&gt;set_cachesize
-will be ignored.
-</p>
+<p>The DB_ENV-&gt;set_cachesize method may be called at any time during the life of the
+application.</p>
<p>The DB_ENV-&gt;set_cachesize method
returns a non-zero error value on failure
and 0 on success.
@@ -85,9 +87,7 @@ and 0 on success.
may fail and return one of the following non-zero errors:</p>
<dl compact>
<dt>EINVAL<dd>If the specified cache size was impossibly small;
-the method was called after
-<a href="../api_c/env_open.html">DB_ENV-&gt;open</a>
-was called; or if an
+; or if an
invalid flag value or parameter was specified.
</dl>
<hr size=1 noshade>
@@ -118,6 +118,6 @@ and 0 on success.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/env_set_data_dir.html b/db/docs/api_c/env_set_data_dir.html
index 3de0dc2cd..321ecbbbf 100644
--- a/db/docs/api_c/env_set_data_dir.html
+++ b/db/docs/api_c/env_set_data_dir.html
@@ -1,6 +1,5 @@
<!--$Id: env_set_data_dir.so,v 10.28 2004/09/28 15:04:20 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -97,6 +96,6 @@ NULL-terminated array of directories in <b>dirpp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/env_set_encrypt.html b/db/docs/api_c/env_set_encrypt.html
index ff7e63170..384cff35b 100644
--- a/db/docs/api_c/env_set_encrypt.html
+++ b/db/docs/api_c/env_set_encrypt.html
@@ -1,6 +1,5 @@
<!--$Id: env_set_encrypt.so,v 10.23 2004/09/28 15:04:20 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -92,6 +91,6 @@ encryption flags in <b>flagsp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/env_set_errcall.html b/db/docs/api_c/env_set_errcall.html
index 776359f91..2c2397ef9 100644
--- a/db/docs/api_c/env_set_errcall.html
+++ b/db/docs/api_c/env_set_errcall.html
@@ -1,6 +1,5 @@
<!--$Id: env_set_errcall.so,v 10.39 2006/05/17 20:47:46 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -74,6 +73,6 @@ are undefined.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/env_set_errfile.html b/db/docs/api_c/env_set_errfile.html
index 4336b62de..ec5ec2a41 100644
--- a/db/docs/api_c/env_set_errfile.html
+++ b/db/docs/api_c/env_set_errfile.html
@@ -1,6 +1,5 @@
-<!--$Id: env_set_errfile.so,v 10.36 2006/02/10 22:54:59 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: env_set_errfile.so,v 10.37 2006/10/26 15:33:59 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -31,9 +30,9 @@ DB_ENV-&gt;get_errfile(DB_ENV *dbenv, FILE **errfilep);
<hr size=1 noshade>
<h3>Description: DB_ENV-&gt;set_errfile</h3>
When an error occurs in the Berkeley DB library, a Berkeley DB error or an error
-return value is returned by the interface. In some cases, however,
-the <b>errno</b> value may be insufficient to completely describe
-the cause of the error especially during initial application debugging.
+return value is returned by the interface. In some cases, however, the
+return value may be insufficient to completely describe the cause of the
+error especially during initial application debugging.
<p>The DB_ENV-&gt;set_errfile and <a href="../api_c/db_set_errfile.html">DB-&gt;set_errfile</a> methods are used to
enhance the mechanism for reporting error messages to the application
by setting a C library FILE * to be used for displaying additional Berkeley DB
@@ -43,7 +42,18 @@ an additional error message to the specified file reference.</p>
("<b>:</b>") (if a prefix string was previously specified using
<a href="../api_c/db_set_errpfx.html">DB-&gt;set_errpfx</a> or <a href="../api_c/env_set_errpfx.html">DB_ENV-&gt;set_errpfx</a>), an error string, and
a trailing &lt;newline&gt; character.</p>
-<p>Setting <b>errfile</b> to NULL unconfigures the interface.</p>
+<p>The default configuration when applications first create <a href="../api_c/db_class.html">DB</a> or
+<a href="../api_c/env_class.html">DB_ENV</a> handles is as if the DB_ENV-&gt;set_errfile or
+<a href="../api_c/db_set_errfile.html">DB-&gt;set_errfile</a> methods were called with the standard error output
+(stderr) specified as the FILE * argument. Applications wanting no
+output at all can turn off this default configuration by calling the
+DB_ENV-&gt;set_errfile or <a href="../api_c/db_set_errfile.html">DB-&gt;set_errfile</a> methods with NULL as the
+FILE * argument. Additionally, explicitly configuring the error output
+channel using any of the DB_ENV-&gt;set_errfile,
+<a href="../api_c/db_set_errfile.html">DB-&gt;set_errfile</a>, <a href="../api_c/env_set_errcall.html">DB_ENV-&gt;set_errcall</a>,
+<a href="../api_c/db_set_errcall.html">DB-&gt;set_errcall</a>, <a href="../api_cxx/env_set_error_stream.html">DbEnv::set_error_stream</a> or
+<a href="../api_cxx/db_set_error_stream.html">Db::set_error_stream</a> methods will also turn off this default output
+for the application.</p>
<p>This error logging enhancement does not slow performance or significantly
increase application size, and may be run during normal operation as well
as during application debugging.</p>
@@ -80,6 +90,6 @@ FILE * in <b>errfilep</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/env_set_errpfx.html b/db/docs/api_c/env_set_errpfx.html
index 8da220984..e915c6448 100644
--- a/db/docs/api_c/env_set_errpfx.html
+++ b/db/docs/api_c/env_set_errpfx.html
@@ -1,6 +1,5 @@
<!--$Id: env_set_errpfx.so,v 10.34 2006/02/10 22:54:59 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -70,6 +69,6 @@ error prefix in <b>errpfxp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/env_set_feedback.html b/db/docs/api_c/env_set_feedback.html
index 5ae94d5c6..96f6a9a4b 100644
--- a/db/docs/api_c/env_set_feedback.html
+++ b/db/docs/api_c/env_set_feedback.html
@@ -1,6 +1,5 @@
<!--$Id: env_set_feedback.so,v 10.43 2006/05/17 20:47:46 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -73,6 +72,6 @@ are undefined.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/env_set_flags.html b/db/docs/api_c/env_set_flags.html
index c18435a1a..a21da3ac7 100644
--- a/db/docs/api_c/env_set_flags.html
+++ b/db/docs/api_c/env_set_flags.html
@@ -1,6 +1,5 @@
<!--$Id-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -137,8 +136,12 @@ file.</p>
the life of the application.</p>
<a name="7"><!--meow--></a>
<dt><a name="DB_LOG_AUTOREMOVE">DB_LOG_AUTOREMOVE</a><dd>If set, Berkeley DB will automatically remove log files that are no longer
-needed. Automatic log file removal is likely to make catastrophic
-recovery impossible.
+needed.
+<p>Automatic log file removal is likely to make catastrophic recovery
+impossible.</p>
+<p>Replication applications will rarely want to configure automatic log
+file removal as it increases the likelihood a master will be unable to
+satisfy a client's request for a recent log record.</p>
<p>Calling DB_ENV-&gt;set_flags with the DB_LOG_AUTOREMOVE flag affects the
database environment, including all threads of control accessing the
database environment.</p>
@@ -165,16 +168,6 @@ database environment, including all threads of control accessing the
database environment.</p>
<p>The DB_LOG_INMEMORY flag may be used to configure Berkeley DB only before the
<a href="../api_c/env_open.html">DB_ENV-&gt;open</a> method is called.</p>
-<a name="9"><!--meow--></a>
-<dt><a name="DB_NOLOCKING">DB_NOLOCKING</a><dd>If set, Berkeley DB will grant all requested mutual exclusion mutexes and
-database locks without regard for their actual availability. This
-functionality should never be used for purposes other than debugging.
-<p>Calling DB_ENV-&gt;set_flags with the DB_NOLOCKING flag only affects
-the specified <a href="../api_c/env_class.html">DB_ENV</a> handle (and any other Berkeley DB handles opened
-within the scope of that handle).
-</p>
-<p>The DB_NOLOCKING flag may be used to configure Berkeley DB at any time during
-the life of the application.</p>
<dt><a name="DB_MULTIVERSION">DB_MULTIVERSION</a><dd>If set, all databases in the environment will be opened as if
DB_MULTIVERSION is passed to <a href="../api_c/db_open.html">DB-&gt;open</a>. This flag will
be ignored for queue databases for which DB_MULTIVERSION is not
@@ -188,6 +181,16 @@ or the flag should be specified in the <b>DB_CONFIG</b> configuration
file.</p>
<p>The DB_MULTIVERSION flag may be used to configure Berkeley DB at any time during
the life of the application.</p>
+<a name="9"><!--meow--></a>
+<dt><a name="DB_NOLOCKING">DB_NOLOCKING</a><dd>If set, Berkeley DB will grant all requested mutual exclusion mutexes and
+database locks without regard for their actual availability. This
+functionality should never be used for purposes other than debugging.
+<p>Calling DB_ENV-&gt;set_flags with the DB_NOLOCKING flag only affects
+the specified <a href="../api_c/env_class.html">DB_ENV</a> handle (and any other Berkeley DB handles opened
+within the scope of that handle).
+</p>
+<p>The DB_NOLOCKING flag may be used to configure Berkeley DB at any time during
+the life of the application.</p>
<a name="10"><!--meow--></a>
<dt><a name="DB_NOMMAP">DB_NOMMAP</a><dd>If set, Berkeley DB will copy read-only database files into the local cache
instead of potentially mapping them into process memory (see the
@@ -229,14 +232,12 @@ the life of the application.</p>
<dt><a name="DB_PANIC_ENVIRONMENT">DB_PANIC_ENVIRONMENT</a><dd>If set, Berkeley DB will set the panic state for the database environment.
(Database environments in a panic state normally refuse all attempts to
call Berkeley DB functions, returning <a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a>.) This flag may
-not be specified using the environment's <b>DB_CONFIG</b> file. This
-flag may be used to configure Berkeley DB only after the <a href="../api_c/env_open.html">DB_ENV-&gt;open</a> method
-is called.
+not be specified using the environment's <b>DB_CONFIG</b> file.
<p>Calling DB_ENV-&gt;set_flags with the DB_PANIC_ENVIRONMENT flag affects the
database environment, including all threads of control accessing the
database environment.</p>
-<p>The DB_PANIC_ENVIRONMENT flag may be used to configure Berkeley DB at any time during
-the life of the application.</p>
+<p>The DB_PANIC_ENVIRONMENT flag may be used to configure Berkeley DB only after the
+<a href="../api_c/env_open.html">DB_ENV-&gt;open</a> method is called.</p>
<a name="13"><!--meow--></a>
<dt><a name="DB_REGION_INIT">DB_REGION_INIT</a><dd>In some applications, the expense of page-faulting the underlying shared
memory regions can affect performance. (For example, if the page-fault
@@ -281,13 +282,26 @@ may be undone during recovery. The number of transactions at risk is
governed by how many log updates can fit into the log buffer, how often
the operating system flushes dirty buffers to disk, and how often the
log is checkpointed.
-<p>Calling DB_ENV-&gt;set_flags with the DB_TXN_NOSYNC flag only affects
+<p>Calling DB_ENV-&gt;set_flags with the <a href="../api_c/env_set_flags.html#DB_TXN_NOSYNC">DB_TXN_NOSYNC</a> flag only affects
the specified <a href="../api_c/env_class.html">DB_ENV</a> handle (and any other Berkeley DB handles opened
within the scope of that handle).
For consistent behavior across the environment, all <a href="../api_c/env_class.html">DB_ENV</a>
-handles opened in the environment must either set the DB_TXN_NOSYNC flag
+handles opened in the environment must either set the <a href="../api_c/env_set_flags.html#DB_TXN_NOSYNC">DB_TXN_NOSYNC</a> flag
or the flag should be specified in the <b>DB_CONFIG</b> configuration
-file.</p> <p>The DB_TXN_NOSYNC flag may be used to configure Berkeley DB at any time during
+file.</p> <p>The <a href="../api_c/env_set_flags.html#DB_TXN_NOSYNC">DB_TXN_NOSYNC</a> flag may be used to configure Berkeley DB at any time during
+the life of the application.</p>
+<dt><a name="DB_TXN_NOWAIT">DB_TXN_NOWAIT</a><dd>If set and a lock is unavailable for any Berkeley DB operation performed in
+the context of a transaction, cause the operation to
+return <a href="../ref/program/errorret.html#DB_LOCK_DEADLOCK">DB_LOCK_DEADLOCK</a> (or <a href="../ref/program/errorret.html#DB_LOCK_NOTGRANTED">DB_LOCK_NOTGRANTED</a> if
+configured using the <a href="../api_c/env_set_flags.html#DB_TIME_NOTGRANTED">DB_TIME_NOTGRANTED</a> flag).
+<p>Calling DB_ENV-&gt;set_flags with the <a href="../api_c/txn_begin.html#DB_TXN_NOWAIT">DB_TXN_NOWAIT</a> flag only affects
+the specified <a href="../api_c/env_class.html">DB_ENV</a> handle (and any other Berkeley DB handles opened
+within the scope of that handle).
+For consistent behavior across the environment, all <a href="../api_c/env_class.html">DB_ENV</a>
+handles opened in the environment must either set the <a href="../api_c/txn_begin.html#DB_TXN_NOWAIT">DB_TXN_NOWAIT</a> flag
+or the flag should be specified in the <b>DB_CONFIG</b> configuration
+file.</p>
+<p>The <a href="../api_c/txn_begin.html#DB_TXN_NOWAIT">DB_TXN_NOWAIT</a> flag may be used to configure Berkeley DB at any time during
the life of the application.</p>
<dt><a name="DB_TXN_SNAPSHOT">DB_TXN_SNAPSHOT</a><dd>If set, all transactions in the environment will be started as if
DB_TXN_SNAPSHOT were passed to <a href="../api_c/txn_begin.html">DB_ENV-&gt;txn_begin</a>, and all
@@ -368,6 +382,6 @@ configuration flags in <b>flagsp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/env_set_isalive.html b/db/docs/api_c/env_set_isalive.html
index 72e5ea44a..d024ce7fc 100644
--- a/db/docs/api_c/env_set_isalive.html
+++ b/db/docs/api_c/env_set_isalive.html
@@ -1,6 +1,5 @@
<!--$Id: env_set_isalive.so,v 10.4 2006/01/27 16:13:48 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -78,6 +77,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/env_set_lg_bsize.html b/db/docs/api_c/env_set_lg_bsize.html
index 39d0d3bc6..1eaa8f40a 100644
--- a/db/docs/api_c/env_set_lg_bsize.html
+++ b/db/docs/api_c/env_set_lg_bsize.html
@@ -1,6 +1,5 @@
<!--$Id: env_set_lg_bsize.so,v 10.36 2006/08/30 10:04:48 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -104,6 +103,6 @@ size of the log buffer, in bytes in <b>lg_bsizep</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/env_set_lg_dir.html b/db/docs/api_c/env_set_lg_dir.html
index 03113b545..c592fa3f4 100644
--- a/db/docs/api_c/env_set_lg_dir.html
+++ b/db/docs/api_c/env_set_lg_dir.html
@@ -1,6 +1,5 @@
<!--$Id: env_set_lg_dir.so,v 10.25 2004/09/28 15:04:21 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -95,6 +94,6 @@ log directory in <b>dirp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/env_set_lg_max.html b/db/docs/api_c/env_set_lg_max.html
index aff55f831..aa8c1299f 100644
--- a/db/docs/api_c/env_set_lg_max.html
+++ b/db/docs/api_c/env_set_lg_max.html
@@ -1,6 +1,5 @@
<!--$Id: env_set_lg_max.so,v 10.45 2004/09/28 15:04:21 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -104,6 +103,6 @@ maximum log file size in <b>lg_maxp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/env_set_lg_mode.html b/db/docs/api_c/env_set_lg_mode.html
index 63b54011e..85d33cfb7 100644
--- a/db/docs/api_c/env_set_lg_mode.html
+++ b/db/docs/api_c/env_set_lg_mode.html
@@ -1,6 +1,5 @@
<!--$Id: env_set_lg_mode.so,v 1.1 2004/12/15 15:46:44 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -84,6 +83,6 @@ log file mode in <b>lg_modep</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/env_set_lg_regionmax.html b/db/docs/api_c/env_set_lg_regionmax.html
index be05ff5b0..d71075192 100644
--- a/db/docs/api_c/env_set_lg_regionmax.html
+++ b/db/docs/api_c/env_set_lg_regionmax.html
@@ -1,6 +1,5 @@
<!--$Id: env_set_lg_regionmax.so,v 10.23 2006/08/30 10:04:48 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -90,6 +89,6 @@ size of the underlying logging subsystem region in <b>lg_regionmaxp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/env_set_lk_conflicts.html b/db/docs/api_c/env_set_lk_conflicts.html
index 9bc2658ec..3f60c1fa2 100644
--- a/db/docs/api_c/env_set_lk_conflicts.html
+++ b/db/docs/api_c/env_set_lk_conflicts.html
@@ -1,6 +1,5 @@
<!--$Id: env_set_lk_conflicts.so,v 10.43 2004/09/28 15:04:20 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -93,6 +92,6 @@ a pointer to the current conflicts array is copied.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/env_set_lk_detect.html b/db/docs/api_c/env_set_lk_detect.html
index 4eb1375ca..9743cb7ac 100644
--- a/db/docs/api_c/env_set_lk_detect.html
+++ b/db/docs/api_c/env_set_lk_detect.html
@@ -1,6 +1,5 @@
<!--$Id: env_set_lk_detect.so,v 10.50 2006/02/27 14:51:30 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -100,6 +99,6 @@ deadlock detector configuration in <b>lk_detectp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/env_set_lk_max.html b/db/docs/api_c/env_set_lk_max.html
deleted file mode 100644
index 1e9832b59..000000000
--- a/db/docs/api_c/env_set_lk_max.html
+++ /dev/null
@@ -1,72 +0,0 @@
-<!--$Id: env_set_lk_max.so,v 10.21 2000/12/21 19:11:27 bostic Exp $-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB: DBENV-&gt;set_lk_max</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
- <a name="2"><!--meow--></a>
-<table><tr valign=top>
-<td>
-<h1>DBENV-&gt;set_lk_max</h1>
-</td>
-<td width="1%">
-<a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;db.h&gt;
-<p>
-int
-DBENV-&gt;set_lk_max(DB_ENV *dbenv, u_int32_t max);
-</pre></h3>
-<h1>Description</h1>
-<p><b>The DBENV-&gt;set_lk_max function interface has been deprecated in favor of
-the <a href="../api_c/env_set_lk_max_locks.html">DBENV-&gt;set_lk_max_locks</a>, <a href="../api_c/env_set_lk_max_lockers.html">DBENV-&gt;set_lk_max_lockers</a>,
-and <a href="../api_c/env_set_lk_max_objects.html">DBENV-&gt;set_lk_max_objects</a> functions. Please update your applications.</b>
-<p>Set each of the maximum number of locks, lockers and lock objects
-supported by the Berkeley DB lock subsystem to <b>max</b>. This value is
-used by <a href="../api_c/env_open.html">DBENV-&gt;open</a> to estimate how much space to allocate for
-various lock-table data structures. For specific information on
-configuring the size of the lock subsystem, see
-<a href="../ref/lock/max.html">Configuring locking: sizing the
-system</a>.
-<p>The DBENV-&gt;set_lk_max interface may only be used to configure Berkeley DB before
-the <a href="../api_c/env_open.html">DBENV-&gt;open</a> interface is called.
-<p>The DBENV-&gt;set_lk_max function returns a non-zero error value on failure and 0 on success.
-<p>The database environment's maximum number of locks may also be set using the environment's
-<b>DB_CONFIG</b> file. The syntax of the entry in that file is a
-single line with the string "set_lk_max", one or more whitespace characters,
-and the number of locks. Because the <b>DB_CONFIG</b> file is read when the database
-environment is opened, it will silently overrule configuration done
-before that time.
-<h1>Errors</h1>
-<p><dl compact>
-<p><dt>EINVAL<dd>An invalid flag value or parameter was specified.
-<p>Called after <a href="../api_c/env_open.html">DBENV-&gt;open</a> was called.
-</dl>
-<h1>See Also</h1>
-<a href="../api_c/env_set_lk_conflicts.html">DBENV-&gt;set_lk_conflicts</a>,
-<a href="../api_c/env_set_lk_detect.html">DBENV-&gt;set_lk_detect</a>,
-<a href="../api_c/env_set_lk_max_locks.html">DBENV-&gt;set_lk_max_locks</a>,
-<a href="../api_c/env_set_lk_max_lockers.html">DBENV-&gt;set_lk_max_lockers</a>,
-<a href="../api_c/env_set_lk_max_objects.html">DBENV-&gt;set_lk_max_objects</a>,
-<a href="../api_c/env_set_lk_max.html">DBENV-&gt;set_lk_max</a>,
-<a href="../api_c/lock_detect.html">lock_detect</a>,
-<a href="../api_c/lock_get.html">lock_get</a>,
-<a href="../api_c/lock_id.html">lock_id</a>,
-<a href="../api_c/lock_put.html">lock_put</a>,
-<a href="../api_c/lock_stat.html">lock_stat</a>
-and
-<a href="../api_c/lock_vec.html">lock_vec</a>.
-</tt>
-<table><tr><td><br></td><td width="1%">
-<a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_c/env_set_lk_max_lockers.html b/db/docs/api_c/env_set_lk_max_lockers.html
index 454faee43..244090764 100644
--- a/db/docs/api_c/env_set_lk_max_lockers.html
+++ b/db/docs/api_c/env_set_lk_max_lockers.html
@@ -1,6 +1,5 @@
<!--$Id: env_set_lk_max_lockers.so,v 1.23 2004/09/28 15:04:20 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -89,6 +88,6 @@ maximum number of lockers in <b>lk_maxp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/env_set_lk_max_locks.html b/db/docs/api_c/env_set_lk_max_locks.html
index 89278f8ad..35b3313b0 100644
--- a/db/docs/api_c/env_set_lk_max_locks.html
+++ b/db/docs/api_c/env_set_lk_max_locks.html
@@ -1,6 +1,5 @@
<!--$Id: env_set_lk_max_locks.so,v 10.23 2004/09/28 15:04:20 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -90,6 +89,6 @@ maximum number of locks in <b>lk_maxp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/env_set_lk_max_objects.html b/db/docs/api_c/env_set_lk_max_objects.html
index 81985ea97..aba66e615 100644
--- a/db/docs/api_c/env_set_lk_max_objects.html
+++ b/db/docs/api_c/env_set_lk_max_objects.html
@@ -1,6 +1,5 @@
<!--$Id: env_set_lk_max_objects.so,v 1.23 2004/09/28 15:04:20 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -89,6 +88,6 @@ maximum number of locked objects in <b>lk_maxp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/env_set_mp_mmapsize.html b/db/docs/api_c/env_set_mp_mmapsize.html
index 754b9b1f6..bc007953f 100644
--- a/db/docs/api_c/env_set_mp_mmapsize.html
+++ b/db/docs/api_c/env_set_mp_mmapsize.html
@@ -1,6 +1,5 @@
<!--$Id: env_set_mp_mmapsize.so,v 10.40 2004/09/28 15:04:21 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -91,6 +90,6 @@ maximum file map size in <b>mp_mmapsizep</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/env_set_msgcall.html b/db/docs/api_c/env_set_msgcall.html
index 0eaa2494b..69068a2a4 100644
--- a/db/docs/api_c/env_set_msgcall.html
+++ b/db/docs/api_c/env_set_msgcall.html
@@ -1,6 +1,5 @@
<!--$Id: env_set_msgcall.so,v 10.7 2006/05/17 20:47:46 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -67,6 +66,6 @@ are undefined.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/env_set_msgfile.html b/db/docs/api_c/env_set_msgfile.html
index 27d6dcfdb..135a780ac 100644
--- a/db/docs/api_c/env_set_msgfile.html
+++ b/db/docs/api_c/env_set_msgfile.html
@@ -1,6 +1,5 @@
<!--$Id: env_set_msgfile.so,v 10.7 2006/02/10 22:54:59 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -75,6 +74,6 @@ FILE * in <b>msgfilep</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/env_set_mutexlocks.html b/db/docs/api_c/env_set_mutexlocks.html
deleted file mode 100644
index a5fa2aa34..000000000
--- a/db/docs/api_c/env_set_mutexlocks.html
+++ /dev/null
@@ -1,59 +0,0 @@
-<!--$Id: env_set_mutexlocks.so,v 10.9 2000/11/17 19:56:52 bostic Exp $-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB: DBENV-&gt;set_mutexlocks</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
- <a name="2"><!--meow--></a>
-<table><tr valign=top>
-<td>
-<h1>DBENV-&gt;set_mutexlocks</h1>
-</td>
-<td width="1%">
-<a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;db.h&gt;
-<p>
-int
-DBENV-&gt;set_mutexlocks(DB_ENV *dbenv, int do_lock);
-</pre></h3>
-<h1>Description</h1>
-<p>Toggle mutex locks. Setting <b>do_lock</b> to a zero value causes
-Berkeley DB to grant all requested mutual exclusion mutexes without regard
-for their availability.
-<p>This functionality should never be used for any other purpose than
-debugging.
-<p>The DBENV-&gt;set_mutexlocks interface may be used to configure Berkeley DB at any time
-during the life of the application.
-<p>The DBENV-&gt;set_mutexlocks function returns a non-zero error value on failure and 0 on success.
-<h1>See Also</h1>
-<a href="../api_c/env_close.html">DBENV-&gt;close</a>,
-<a href="../api_c/env_create.html">db_env_create</a>,
-<a href="../api_c/env_open.html">DBENV-&gt;open</a>,
-<a href="../api_c/env_remove.html">DBENV-&gt;remove</a>,
-<a href="../api_c/db_err.html">DBENV-&gt;err</a>,
-<a href="../api_c/env_strerror.html">db_strerror</a>,
-<a href="../api_c/env_version.html">db_version</a>,
-<a href="../api_c/env_set_cachesize.html">DBENV-&gt;set_cachesize</a>,
-<a href="../api_c/env_set_errcall.html">DBENV-&gt;set_errcall</a>,
-<a href="../api_c/env_set_errfile.html">DBENV-&gt;set_errfile</a>,
-<a href="../api_c/env_set_errpfx.html">DBENV-&gt;set_errpfx</a>,
-<a href="../api_c/env_set_flags.html">DBENV-&gt;set_flags</a>,
-<a href="../api_c/env_set_mutexlocks.html">DBENV-&gt;set_mutexlocks</a>,
-<a href="../api_c/env_set_paniccall.html">DBENV-&gt;set_paniccall</a>,
-and
-<a href="../api_c/env_set_verbose.html">DBENV-&gt;set_verbose</a>.
-</tt>
-<table><tr><td><br></td><td width="1%">
-<a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_c/env_set_pageyield.html b/db/docs/api_c/env_set_pageyield.html
deleted file mode 100644
index 953724085..000000000
--- a/db/docs/api_c/env_set_pageyield.html
+++ /dev/null
@@ -1,68 +0,0 @@
-<!--$Id: env_set_pageyield.so,v 10.6 2000/05/31 15:10:00 bostic Exp $-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB: db_env_set_pageyield</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
- <a name="2"><!--meow--></a>
-<table><tr valign=top>
-<td>
-<h1>db_env_set_pageyield</h1>
-</td>
-<td width="1%">
-<a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;db.h&gt;
-<p>
-int
-db_env_set_pageyield(int pageyield);
-</pre></h3>
-<h1>Description</h1>
-<p>Yield the processor whenever requesting a page from the cache. Setting
-<b>pageyield</b> to a non-zero value causes Berkeley DB to yield the processor
-any time a thread requests a page from the cache.
-<p>The db_env_set_pageyield interface affects the entire application, not a single
-database or database environment.
-<p>While the db_env_set_pageyield interface may be used to configure Berkeley DB at any time
-during the life of the application, it should normally be called before
-making any calls to the <a href="../api_c/env_create.html">db_env_create</a> or <a href="../api_c/db_create.html">db_create</a> functions.
-<p>This functionality should never be used for any other purpose than stress
-testing.
-<p>The db_env_set_pageyield interface may be used to configure Berkeley DB at any time
-during the life of the application.
-<p>The db_env_set_pageyield function 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.
-</dl>
-<h1>See Also</h1>
-<a href="../api_c/env_close.html">DBENV-&gt;close</a>,
-<a href="../api_c/env_create.html">db_env_create</a>,
-<a href="../api_c/env_open.html">DBENV-&gt;open</a>,
-<a href="../api_c/env_remove.html">DBENV-&gt;remove</a>,
-<a href="../api_c/db_err.html">DBENV-&gt;err</a>,
-<a href="../api_c/env_strerror.html">db_strerror</a>,
-<a href="../api_c/env_version.html">db_version</a>,
-<a href="../api_c/env_set_cachesize.html">DBENV-&gt;set_cachesize</a>,
-<a href="../api_c/env_set_errcall.html">DBENV-&gt;set_errcall</a>,
-<a href="../api_c/env_set_errfile.html">DBENV-&gt;set_errfile</a>,
-<a href="../api_c/env_set_errpfx.html">DBENV-&gt;set_errpfx</a>,
-<a href="../api_c/env_set_flags.html">DBENV-&gt;set_flags</a>,
-<a href="../api_c/env_set_mutexlocks.html">DBENV-&gt;set_mutexlocks</a>,
-<a href="../api_c/env_set_paniccall.html">DBENV-&gt;set_paniccall</a>,
-and
-<a href="../api_c/env_set_verbose.html">DBENV-&gt;set_verbose</a>.
-</tt>
-<table><tr><td><br></td><td width="1%">
-<a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_c/env_set_paniccall.html b/db/docs/api_c/env_set_paniccall.html
deleted file mode 100644
index 3c27dd866..000000000
--- a/db/docs/api_c/env_set_paniccall.html
+++ /dev/null
@@ -1,69 +0,0 @@
-<!--$Id: env_set_paniccall.so,v 10.37 2004/08/13 03:38:57 bostic Exp $-->
-<!--Copyright 1997-2004 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: DB_ENV-&gt;set_paniccall</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
-</head>
-<body bgcolor=white>
-<table width="100%"><tr valign=top>
-<td>
-<h3>DB_ENV-&gt;set_paniccall</h3>
-</td>
-<td align=right>
-<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a>
-<a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a></td>
-</tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;db.h&gt;
-<p>
-int
-DB_ENV-&gt;set_paniccall(DB_ENV *dbenv,
- void (*db_panic_fcn)(DB_ENV *dbenv, int errval));
-</pre></h3>
-<hr size=1 noshade>
-<h3>Description: DB_ENV-&gt;set_paniccall</h3>
-<p>Errors can occur in the Berkeley DB library where the only solution is to shut
-down the application and run recovery (for example, if Berkeley DB is unable
-to allocate heap memory). In such cases, the Berkeley DB methods will
-return <a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a>.
-It is often easier to simply exit the application when such errors occur
-rather than gracefully return up the stack. The DB_ENV-&gt;set_paniccall method
-specifies a function to be called when
-<a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a> is about to be returned
-from a Berkeley DB method.</p>
-<p>The DB_ENV-&gt;set_paniccall method may be called at any time during the life of the
-application.</p>
-<p>The DB_ENV-&gt;set_paniccall method
-returns a non-zero error value on failure
-and 0 on success.
-</p>
-<h3>Parameters</h3>
-<dl compact>
-<dt><b>db_panic_fcn</b><dd>The <b>db_panic_fcn</b> parameter is the application-specified function
-called in the case of a database environment panic. The function takes
-two arguments:
-<dl compact>
-<dt><b>dbenv</b><dd>The <b>dbenv</b> parameter is the enclosing database environment handle.
-<dt><b>errval</b><dd>The <b>errval</b> parameter is the error value that would have been
-returned to the caller if <a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a> were not going to be
-returned instead.
-</dl>
-</dl>
-<hr size=1 noshade>
-<h3>Class</h3>
-<a href="../api_c/env_class.html">DB_ENV</a>
-<h3>See Also</h3>
-<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/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<p><font size=1><a href="../sleepycat/legal.html">Copyright (c) 1996-2004</a> <a href="http://www.sleepycat.com">Sleepycat Software, Inc.</a> - All rights reserved.</font>
-</body>
-</html>
diff --git a/db/docs/api_c/env_set_panicstate.html b/db/docs/api_c/env_set_panicstate.html
deleted file mode 100644
index 6168ad9af..000000000
--- a/db/docs/api_c/env_set_panicstate.html
+++ /dev/null
@@ -1,64 +0,0 @@
-<!--$Id: env_set_panicstate.so,v 10.2 2001/01/17 15:32:34 bostic Exp $-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB: db_env_set_panicstate</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
- <a name="2"><!--meow--></a>
-<table><tr valign=top>
-<td>
-<h1>db_env_set_panicstate</h1>
-</td>
-<td width="1%">
-<a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;db.h&gt;
-<p>
-int
-db_env_set_panicstate(int panic);
-</pre></h3>
-<h1>Description</h1>
-<p>Toggle the Berkeley DB panic state. Setting <b>panic</b> to a non-zero value
-causes Berkeley DB to refuse attempts to call Berkeley DB functions with the
-<a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a> error return.
-<p>The db_env_set_panicstate interface affects the entire application, not a single
-database or database environment.
-<p>While the db_env_set_panicstate interface may be used to configure Berkeley DB at any time
-during the life of the application, it should normally be called before
-making any calls to the <a href="../api_c/env_create.html">db_env_create</a> or <a href="../api_c/db_create.html">db_create</a> functions.
-<p>The db_env_set_panicstate function 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.
-</dl>
-<h1>See Also</h1>
-<a href="../api_c/env_close.html">DBENV-&gt;close</a>,
-<a href="../api_c/env_create.html">db_env_create</a>,
-<a href="../api_c/env_open.html">DBENV-&gt;open</a>,
-<a href="../api_c/env_remove.html">DBENV-&gt;remove</a>,
-<a href="../api_c/db_err.html">DBENV-&gt;err</a>,
-<a href="../api_c/env_strerror.html">db_strerror</a>,
-<a href="../api_c/env_version.html">db_version</a>,
-<a href="../api_c/env_set_cachesize.html">DBENV-&gt;set_cachesize</a>,
-<a href="../api_c/env_set_errcall.html">DBENV-&gt;set_errcall</a>,
-<a href="../api_c/env_set_errfile.html">DBENV-&gt;set_errfile</a>,
-<a href="../api_c/env_set_errpfx.html">DBENV-&gt;set_errpfx</a>,
-<a href="../api_c/env_set_flags.html">DBENV-&gt;set_flags</a>,
-<a href="../api_c/env_set_mutexlocks.html">DBENV-&gt;set_mutexlocks</a>,
-<a href="../api_c/env_set_paniccall.html">DBENV-&gt;set_paniccall</a>,
-and
-<a href="../api_c/env_set_verbose.html">DBENV-&gt;set_verbose</a>.
-</tt>
-<table><tr><td><br></td><td width="1%">
-<a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_c/env_set_rec_init.html b/db/docs/api_c/env_set_rec_init.html
deleted file mode 100644
index 056ec9b71..000000000
--- a/db/docs/api_c/env_set_rec_init.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<!--$Id: env_set_rec_init.so,v 10.9 2000/05/01 21:57:44 bostic Exp $-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB: DBENV-&gt;set_recovery_init</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
- <a name="2"><!--meow--></a>
-<table><tr valign=top>
-<td>
-<h1>DBENV-&gt;set_recovery_init</h1>
-</td>
-<td width="1%">
-<a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;db.h&gt;
-<p>
-int
-DBENV-&gt;set_recovery_init(DB_ENV *,
- int (*db_recovery_init_fcn)(DB_ENV *));
-</pre></h3>
-<h1>Description</h1>
-<p>Applications installing application-specific recovery functions need
-to be called before Berkeley DB performs recovery so they may add their recovery
-functions to Berkeley DB's.
-<p>The DBENV-&gt;set_recovery_init function supports this functionality. The
-<b>db_recovery_init_fcn</b> function must be declared with one
-argument, a reference to the enclosing Berkeley DB environment. This
-function will be called after the <a href="../api_c/env_open.html">DBENV-&gt;open</a> has been called,
-but before recovery is started.
-<p>If the <b>db_recovery_init_fcn</b> function returns a non-zero value,
-no recovery will be performed and <a href="../api_c/env_open.html">DBENV-&gt;open</a> will return the same
-value to its caller.
-<p>The DBENV-&gt;set_recovery_init interface may only be used to configure Berkeley DB before
-the <a href="../api_c/env_open.html">DBENV-&gt;open</a> interface is called.
-<p>The DBENV-&gt;set_recovery_init function 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>Called after <a href="../api_c/env_open.html">DBENV-&gt;open</a> was called.
-</dl>
-<h1>See Also</h1>
-<a href="../api_c/env_close.html">DBENV-&gt;close</a>,
-<a href="../api_c/env_create.html">db_env_create</a>,
-<a href="../api_c/env_open.html">DBENV-&gt;open</a>,
-<a href="../api_c/env_remove.html">DBENV-&gt;remove</a>,
-<a href="../api_c/db_err.html">DBENV-&gt;err</a>,
-<a href="../api_c/env_strerror.html">db_strerror</a>,
-<a href="../api_c/env_version.html">db_version</a>,
-<a href="../api_c/env_set_cachesize.html">DBENV-&gt;set_cachesize</a>,
-<a href="../api_c/env_set_errcall.html">DBENV-&gt;set_errcall</a>,
-<a href="../api_c/env_set_errfile.html">DBENV-&gt;set_errfile</a>,
-<a href="../api_c/env_set_errpfx.html">DBENV-&gt;set_errpfx</a>,
-<a href="../api_c/env_set_flags.html">DBENV-&gt;set_flags</a>,
-<a href="../api_c/env_set_mutexlocks.html">DBENV-&gt;set_mutexlocks</a>,
-<a href="../api_c/env_set_paniccall.html">DBENV-&gt;set_paniccall</a>,
-and
-<a href="../api_c/env_set_verbose.html">DBENV-&gt;set_verbose</a>.
-</tt>
-<table><tr><td><br></td><td width="1%">
-<a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_c/env_set_region_init.html b/db/docs/api_c/env_set_region_init.html
deleted file mode 100644
index 3c83680ad..000000000
--- a/db/docs/api_c/env_set_region_init.html
+++ /dev/null
@@ -1,77 +0,0 @@
-<!--$Id: env_set_region_init.so,v 10.10 2000/05/31 15:10:00 bostic Exp $-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB: db_env_set_region_init</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
- <a name="2"><!--meow--></a>
-<table><tr valign=top>
-<td>
-<h1>db_env_set_region_init</h1>
-</td>
-<td width="1%">
-<a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;db.h&gt;
-<p>
-int
-db_env_set_region_init(int region_init);
-</pre></h3>
-<h1>Description</h1>
-<p>Page-fault shared regions into memory when initially creating or joining
-a Berkeley DB environment. In some applications, the expense of page-faulting
-the shared memory regions can affect performance, e.g., when the
-page-fault occurs while holding a lock, other lock requests can convoy
-and overall throughput may decrease. Setting <b>region_init</b> to a
-non-zero value specifies that shared regions be read or written, as
-appropriate, when the region is joined by the application. This forces
-the underlying virtual memory and file systems to instantiate both the
-necessary memory and the necessary disk space. This can also avoid
-out-of-disk space failures later on.
-<p>The db_env_set_region_init interface affects the entire application, not a single
-database or database environment.
-<p>While the db_env_set_region_init interface may be used to configure Berkeley DB at any time
-during the life of the application, it should normally be called before
-making any calls to the <a href="../api_c/env_create.html">db_env_create</a> or <a href="../api_c/db_create.html">db_create</a> functions.
-<p>The db_env_set_region_init function returns a non-zero error value on failure and 0 on success.
-<p>The database environment's initial behavior with respect to shared memory regions may also be set using the environment's
-<b>DB_CONFIG</b> file. The syntax of the entry in that file is a
-single line with the string "set_region_init", one or more whitespace characters,
-and the string "1". Because the <b>DB_CONFIG</b> file is read when the database
-environment is opened, it will silently overrule configuration done
-before that time.
-<h1>Errors</h1>
-<p><dl compact>
-<p><dt>EINVAL<dd>An invalid flag value or parameter was specified.
-</dl>
-<h1>See Also</h1>
-<a href="../api_c/env_close.html">DBENV-&gt;close</a>,
-<a href="../api_c/env_create.html">db_env_create</a>,
-<a href="../api_c/env_open.html">DBENV-&gt;open</a>,
-<a href="../api_c/env_remove.html">DBENV-&gt;remove</a>,
-<a href="../api_c/db_err.html">DBENV-&gt;err</a>,
-<a href="../api_c/env_strerror.html">db_strerror</a>,
-<a href="../api_c/env_version.html">db_version</a>,
-<a href="../api_c/env_set_cachesize.html">DBENV-&gt;set_cachesize</a>,
-<a href="../api_c/env_set_errcall.html">DBENV-&gt;set_errcall</a>,
-<a href="../api_c/env_set_errfile.html">DBENV-&gt;set_errfile</a>,
-<a href="../api_c/env_set_errpfx.html">DBENV-&gt;set_errpfx</a>,
-<a href="../api_c/env_set_flags.html">DBENV-&gt;set_flags</a>,
-<a href="../api_c/env_set_mutexlocks.html">DBENV-&gt;set_mutexlocks</a>,
-<a href="../api_c/env_set_paniccall.html">DBENV-&gt;set_paniccall</a>,
-and
-<a href="../api_c/env_set_verbose.html">DBENV-&gt;set_verbose</a>.
-</tt>
-<table><tr><td><br></td><td width="1%">
-<a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_c/env_set_rpc_server.html b/db/docs/api_c/env_set_rpc_server.html
index 4ad810599..cfe8f9b91 100644
--- a/db/docs/api_c/env_set_rpc_server.html
+++ b/db/docs/api_c/env_set_rpc_server.html
@@ -1,6 +1,5 @@
<!--$Id: env_set_rpc_server.so,v 10.29 2004/08/13 03:38:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -82,6 +81,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/env_set_server.html b/db/docs/api_c/env_set_server.html
deleted file mode 100644
index 586887bfc..000000000
--- a/db/docs/api_c/env_set_server.html
+++ /dev/null
@@ -1,77 +0,0 @@
-<!--"@(#)env_set_server.so 10.13 (Sleepycat) 8/25/99"-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB: DBENV-&gt;set_server</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
- <a name="2"><!--meow--></a>
-<table><tr valign=top>
-<td>
-<h1>DBENV-&gt;set_server</h1>
-</td>
-<td width="1%">
-<a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;db.h&gt;
-<p>
-int
-DBENV-&gt;set_server(DB_ENV *dbenv, char *host,
- long cl_timeout, long sv_timeout, u_int32_t flags);
-</pre></h3>
-<h1>Description</h1>
-<p>Connects to the DB server on the indicated hostname and sets up a channel
-for communication.
-<p>The <b>cl_timeout</b> argument specifies the number of seconds the client
-should wait for results to come back from the server. Once the timeout
-has expired on any communication with the server, DB_NOSERVER will
-be returned. If this value is zero, a default timeout is used.
-<p>The <b>sv_timeout</b> argument specifies the number of seconds the server
-should allow a client connection to remain idle before assuming that
-client is gone. Once that timeout has been reached, the server releases
-all resources associated with that client connection. Subsequent attempts
-by that client to communicate with the server result in
-DB_NOSERVER_ID indicating that an invalid identifier has been
-given to the server. This value can be considered a hint to the server.
-The server may alter this value based on its own policies or allowed
-values. If this value is zero, a default timeout is used.
-<p>The <b>flags</b> parameter is currently unused, and must be set to 0.
-<p>When the DBENV-&gt;set_server function has been called, any subsequent calls
-to Berkeley DB library interfaces may return either <a name="DB_NOSERVER">DB_NOSERVER</a> or
-<a name="DB_NOSERVER_ID">DB_NOSERVER_ID</a>.
-<p>The DBENV-&gt;set_server function returns a non-zero error value on failure and 0 on success.
-<h3>Errors</h3>
-<p><dl compact>
-<p><dt>EINVAL<dd>An invalid flag value or parameter was specified.
-<p>dbenv_set_server
-</dl>
-<h1>See Also</h1>
-<a href="../api_c/env_close.html">DBENV-&gt;close</a>,
-<a href="../api_c/env_create.html">db_env_create</a>,
-<a href="../api_c/env_open.html">DBENV-&gt;open</a>,
-<a href="../api_c/env_remove.html">DBENV-&gt;remove</a>,
-<a href="../api_c/db_err.html">DBENV-&gt;err</a>,
-<a href="../api_c/env_strerror.html">db_strerror</a>,
-<a href="../api_c/env_version.html">db_version</a>,
-<a href="../api_c/env_set_cachesize.html">DBENV-&gt;set_cachesize</a>,
-<a href="../api_c/env_set_errcall.html">DBENV-&gt;set_errcall</a>,
-<a href="../api_c/env_set_errfile.html">DBENV-&gt;set_errfile</a>,
-<a href="../api_c/env_set_errpfx.html">DBENV-&gt;set_errpfx</a>,
-<a href="../api_c/env_set_flags.html">DBENV-&gt;set_flags</a>,
-<a href="../api_c/env_set_mutexlocks.html">DBENV-&gt;set_mutexlocks</a>,
-<a href="../api_c/env_set_paniccall.html">DBENV-&gt;set_paniccall</a>,
-and
-<a href="../api_c/env_set_verbose.html">DBENV-&gt;set_verbose</a>.
-</tt>
-<table><tr><td><br></td><td width="1%">
-<a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_c/env_set_shm_key.html b/db/docs/api_c/env_set_shm_key.html
index cfb852b3a..5b979931a 100644
--- a/db/docs/api_c/env_set_shm_key.html
+++ b/db/docs/api_c/env_set_shm_key.html
@@ -1,6 +1,5 @@
<!--$Id: env_set_shm_key.so,v 10.28 2004/09/28 15:04:20 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -107,6 +106,6 @@ base segment ID in <b>shm_keyp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/env_set_tas_spins.html b/db/docs/api_c/env_set_tas_spins.html
deleted file mode 100644
index bbbb7adbb..000000000
--- a/db/docs/api_c/env_set_tas_spins.html
+++ /dev/null
@@ -1,89 +0,0 @@
-<!--$Id: env_set_tas_spins.so,v 10.29 2004/09/28 15:04:20 bostic Exp $-->
-<!--Copyright 1997-2004 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: DB_ENV-&gt;set_tas_spins</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
-</head>
-<body bgcolor=white>
-<table width="100%"><tr valign=top>
-<td>
-<h3>DB_ENV-&gt;set_tas_spins</h3>
-</td>
-<td align=right>
-<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a>
-<a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a></td>
-</tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;db.h&gt;
-<p>
-int
-DB_ENV-&gt;set_tas_spins(DB_ENV *dbenv, u_int32_t tas_spins);
-<p>
-int
-DB_ENV-&gt;get_tas_spins(DB_ENV *dbenv, u_int32_t *tas_spinsp);
-</pre></h3>
-<hr size=1 noshade>
-<h3>Description: DB_ENV-&gt;set_tas_spins</h3>
-<p>Specify that test-and-set mutexes should spin <b>tas_spins</b> times
-without blocking. The value defaults to 1 on uniprocessor systems and
-to 50 times the number of processors on multiprocessor systems.</p>
-<p>The database environment's test-and-set spin count may also be set using the environment's
-<b>DB_CONFIG</b> file. The syntax of the entry in that file is a
-single line with the string "set_tas_spins", one or more whitespace characters,
-and the number of spins.
-Because the <b>DB_CONFIG</b> file is read when the database
-environment is opened, it will silently overrule configuration done
-before that time.</p>
-<p>The DB_ENV-&gt;set_tas_spins 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>
-<p>The DB_ENV-&gt;set_tas_spins method may be called at any time during the life of the
-application.</p>
-<p>The DB_ENV-&gt;set_tas_spins method
-returns a non-zero error value on failure
-and 0 on success.
-</p>
-<h3>Parameters</h3>
-<dl compact>
-<dt><b>tas_spins</b><dd>The <b>tas_spins</b> parameter is the number of spins test-and-set
-mutexes should execute before blocking.
-</dl>
-<h3>Errors</h3>
-<p>The DB_ENV-&gt;set_tas_spins method
-may fail and return one of the following non-zero errors:</p>
-<dl compact>
-<dt>EINVAL<dd>An
-invalid flag value or parameter was specified.
-</dl>
-<hr size=1 noshade>
-<h3>Description: DB_ENV-&gt;get_tas_spins</h3>
-<p>The DB_ENV-&gt;get_tas_spins method returns the test-and-set spin count.</p>
-<p>The DB_ENV-&gt;get_tas_spins method may be called at any time during the life of the
-application.</p>
-<p>The DB_ENV-&gt;get_tas_spins method
-returns a non-zero error value on failure
-and 0 on success.
-</p>
-<h3>Parameters</h3>
-<dl compact>
-<dt><b>tas_spinsp</b><dd>The DB_ENV-&gt;get_tas_spins method returns the
-test-and-set spin count in <b>tas_spinsp</b>.
-</dl>
-<hr size=1 noshade>
-<h3>Class</h3>
-<a href="../api_c/env_class.html">DB_ENV</a>
-<h3>See Also</h3>
-<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/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<p><font size=1><a href="../sleepycat/legal.html">Copyright (c) 1996-2004</a> <a href="http://www.sleepycat.com">Sleepycat Software, Inc.</a> - All rights reserved.</font>
-</body>
-</html>
diff --git a/db/docs/api_c/env_set_thread_count.html b/db/docs/api_c/env_set_thread_count.html
index 2f612f208..c7d326087 100644
--- a/db/docs/api_c/env_set_thread_count.html
+++ b/db/docs/api_c/env_set_thread_count.html
@@ -1,6 +1,5 @@
-<!--$Id: env_set_thread_count.so,v 10.1 2006/05/26 20:14:59 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: env_set_thread_count.so,v 10.3 2007/04/02 16:08:13 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -36,6 +35,18 @@ database environment if the <a href="../api_c/env_failchk.html">DB_ENV-&gt;failc
DB_ENV-&gt;set_thread_count method does not set the maximum number of
threads but is used to determine memory sizing and the thread control
block reclamation policy.</p>
+<p>If a process has not configured an <b>is_alive</b> function from the
+<a href="../api_c/env_set_isalive.html">DB_ENV-&gt;set_isalive</a> method, and then attempts to join a database
+environment configured for failure checking with the
+<a href="../api_c/env_failchk.html">DB_ENV-&gt;failchk</a>, <a href="../api_c/env_set_thread_id.html">DB_ENV-&gt;set_thread_id</a>,
+<a href="../api_c/env_set_isalive.html">DB_ENV-&gt;set_isalive</a> and DB_ENV-&gt;set_thread_count methods, the
+program may be unable to allocate a thread control block and fail to
+join the environment.
+<b>This is true of the standalone Berkeley DB utility programs.</b>
+To avoid problems when using the standalone Berkeley DB utility programs with
+environments configured for failure checking, incorporate the utility's
+functionality directly in the application, or call the
+<a href="../api_c/env_failchk.html">DB_ENV-&gt;failchk</a> method before running the utility.</p>
<p>The database environment's thread count may also be configured using the
environment's <b>DB_CONFIG</b> file. The syntax of the entry in that
file is a single line with the string "set_thread_count", one or more whitespace
@@ -88,6 +99,6 @@ thread count in <b>countp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/env_set_thread_id.html b/db/docs/api_c/env_set_thread_id.html
index 61f897353..c7770ac67 100644
--- a/db/docs/api_c/env_set_thread_id.html
+++ b/db/docs/api_c/env_set_thread_id.html
@@ -1,6 +1,5 @@
<!--$Id: env_set_thread_id.so,v 10.9 2006/08/24 16:32:23 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -118,6 +117,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/env_set_thread_id_string.html b/db/docs/api_c/env_set_thread_id_string.html
index 568b00e4f..87da829ba 100644
--- a/db/docs/api_c/env_set_thread_id_string.html
+++ b/db/docs/api_c/env_set_thread_id_string.html
@@ -1,6 +1,5 @@
<!--$Id: env_set_thread_id_string.so,v 10.1 2005/10/20 17:16:02 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -80,6 +79,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/env_set_timeout.html b/db/docs/api_c/env_set_timeout.html
index c3e12e905..9ecd96fa1 100644
--- a/db/docs/api_c/env_set_timeout.html
+++ b/db/docs/api_c/env_set_timeout.html
@@ -1,6 +1,5 @@
<!--$Id: env_set_timeout.so,v 10.24 2005/05/20 15:07:45 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -113,6 +112,6 @@ and 0 on success.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/env_set_tmp_dir.html b/db/docs/api_c/env_set_tmp_dir.html
index 967624864..49fe9bfd2 100644
--- a/db/docs/api_c/env_set_tmp_dir.html
+++ b/db/docs/api_c/env_set_tmp_dir.html
@@ -1,6 +1,5 @@
<!--$Id: env_set_tmp_dir.so,v 10.26 2004/09/28 15:04:20 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -113,6 +112,6 @@ database environment temporary file directory in <b>dirp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/env_set_tx_max.html b/db/docs/api_c/env_set_tx_max.html
index fd39bbc44..4b778d03f 100644
--- a/db/docs/api_c/env_set_tx_max.html
+++ b/db/docs/api_c/env_set_tx_max.html
@@ -1,6 +1,5 @@
<!--$Id: env_set_tx_max.so,v 10.47 2006/06/19 22:25:31 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -98,6 +97,6 @@ number of active transactions in <b>tx_maxp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/env_set_tx_recover.html b/db/docs/api_c/env_set_tx_recover.html
deleted file mode 100644
index 9295537b5..000000000
--- a/db/docs/api_c/env_set_tx_recover.html
+++ /dev/null
@@ -1,75 +0,0 @@
-<!--$Id: env_set_tx_recover.so,v 10.26 2000/07/09 19:13:19 bostic Exp $-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB: DBENV-&gt;set_tx_recover</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
- <a name="2"><!--meow--></a>
-<table><tr valign=top>
-<td>
-<h1>DBENV-&gt;set_tx_recover</h1>
-</td>
-<td width="1%">
-<a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;db.h&gt;
-<p>
-int
-DBENV-&gt;set_tx_recover(DB_ENV *dbenv,
- int (*tx_recover)(DB_ENV *dbenv,
- DBT *log_rec, DB_LSN *lsn, db_recops op));
-</pre></h3>
-<h1>Description</h1>
-<p>Set the application's function to be called during transaction abort
-and recovery. This function must return 0 on success and either
-<b>errno</b> or a value outside of the Berkeley DB error name space on
-failure. It takes four arguments:
-<p><dl compact>
-<p><dt>dbenv <dd>A Berkeley DB environment.
-<p><dt>log_rec<dd>A log record.
-<p><dt>lsn<dd>A log sequence number.
-<p><dt>op<dd>One of the following values:
-<p><dl compact>
-<p><dt><a name="DB_TXN_BACKWARD_ROLL">DB_TXN_BACKWARD_ROLL</a><dd>The log is being read backward to determine which transactions have been
-committed and to abort those operations that were not, undo the operation
-described by the log record.
-<p><dt><a name="DB_TXN_FORWARD_ROLL">DB_TXN_FORWARD_ROLL</a><dd>The log is being played forward, redo the operation described by the log
-record.
-<p><dt><a name="DB_TXN_ABORT">DB_TXN_ABORT</a><dd>The log is being read backwards during a transaction abort, undo the
-operation described by the log record.
-</dl>
-</dl>
-<p>The DBENV-&gt;set_tx_recover interface may only be used to configure Berkeley DB before
-the <a href="../api_c/env_open.html">DBENV-&gt;open</a> interface is called.
-<p>The DBENV-&gt;set_tx_recover function 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>Called after <a href="../api_c/env_open.html">DBENV-&gt;open</a> was called.
-</dl>
-<h1>See Also</h1>
-<a href="../api_c/env_set_tx_max.html">DBENV-&gt;set_tx_max</a>,
-<a href="../api_c/env_set_tx_recover.html">DBENV-&gt;set_tx_recover</a>,
-<a href="../api_c/env_set_tx_timestamp.html">DBENV-&gt;set_tx_timestamp</a>,
-<a href="../api_c/txn_abort.html">txn_abort</a>,
-<a href="../api_c/txn_begin.html">txn_begin</a>,
-<a href="../api_c/txn_checkpoint.html">txn_checkpoint</a>,
-<a href="../api_c/txn_commit.html">txn_commit</a>,
-<a href="../api_c/txn_id.html">txn_id</a>,
-<a href="../api_c/txn_prepare.html">txn_prepare</a>
-and
-<a href="../api_c/txn_stat.html">txn_stat</a>.
-</tt>
-<table><tr><td><br></td><td width="1%">
-<a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_c/env_set_tx_timestamp.html b/db/docs/api_c/env_set_tx_timestamp.html
index 837f955a6..73117ff21 100644
--- a/db/docs/api_c/env_set_tx_timestamp.html
+++ b/db/docs/api_c/env_set_tx_timestamp.html
@@ -1,6 +1,5 @@
<!--$Id: env_set_tx_timestamp.so,v 10.29 2004/09/28 15:04:23 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -84,6 +83,6 @@ recovery timestamp in <b>timestampp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/env_set_verbose.html b/db/docs/api_c/env_set_verbose.html
index aa19c4685..cdef6124a 100644
--- a/db/docs/api_c/env_set_verbose.html
+++ b/db/docs/api_c/env_set_verbose.html
@@ -1,6 +1,5 @@
-<!--$Id: env_set_verbose.so,v 10.52 2005/12/28 16:10:51 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: env_set_verbose.so,v 10.54 2006/10/20 15:32:29 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -59,14 +58,14 @@ messages are output.
<dt><b>which</b><dd>The <b>which</b> parameter must be set to one of the following values:
<dl compact>
<dt><a name="DB_VERB_DEADLOCK">DB_VERB_DEADLOCK</a><dd>Display additional information when doing deadlock detection.
+<dt><a name="DB_VERB_FILEOPS">DB_VERB_FILEOPS</a><dd>Display additional information when performing filesystem operations
+such as open, close or rename. May not be available on all platforms.
+<dt><a name="DB_VERB_FILEOPS_ALL">DB_VERB_FILEOPS_ALL</a><dd>Display additional information when performing all filesystem operations,
+including read and write. May not be available on all platforms.
<dt><a name="DB_VERB_RECOVERY">DB_VERB_RECOVERY</a><dd>Display additional information when performing recovery.
<dt><a name="DB_VERB_REGISTER">DB_VERB_REGISTER</a><dd>Display additional information concerning support for the
<a href="../api_c/env_open.html#DB_REGISTER">DB_REGISTER</a> flag to the <a href="../api_c/env_open.html">DB_ENV-&gt;open</a> method.
-<dt><a name="DB_VERB_REPLICATION">DB_VERB_REPLICATION</a><dd>Display additional information when processing replication messages.
-<p>To get complete replication logging when debugging replication
-applications, you must also configure and build the Berkeley DB library with
-the <a href="../ref/build_unix/conf.html">--enable-diagnostic</a>
-configuration option as well as call the DB_ENV-&gt;set_verbose method.</p>
+<dt><a name="DB_VERB_REPLICATION">DB_VERB_REPLICATION</a><dd>Display detailed information when processing replication messages.
<dt><a name="DB_VERB_WAITSFOR">DB_VERB_WAITSFOR</a><dd>Display the waits-for table when doing deadlock detection.
</dl>
</dl>
@@ -104,6 +103,6 @@ otherwise on.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/env_stat.html b/db/docs/api_c/env_stat.html
index 2992517bc..a6d5b429b 100644
--- a/db/docs/api_c/env_stat.html
+++ b/db/docs/api_c/env_stat.html
@@ -1,6 +1,5 @@
<!--$Id: env_stat.so,v 10.5 2004/08/13 03:38:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -58,6 +57,6 @@ or more of the following values:
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/env_strerror.html b/db/docs/api_c/env_strerror.html
index d2cf5f209..4f3e0e8f6 100644
--- a/db/docs/api_c/env_strerror.html
+++ b/db/docs/api_c/env_strerror.html
@@ -1,6 +1,5 @@
<!--$Id: env_strerror.so,v 8.13 2004/08/13 03:38:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -50,6 +49,6 @@ string is wanted.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/env_version.html b/db/docs/api_c/env_version.html
index 8f75e50aa..077213650 100644
--- a/db/docs/api_c/env_version.html
+++ b/db/docs/api_c/env_version.html
@@ -1,6 +1,5 @@
<!--$Id: env_version.so,v 10.26 2004/09/28 15:04:20 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -47,6 +46,6 @@ is copied to the memory to which it refers.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/frame.html b/db/docs/api_c/frame.html
index 3f1a25891..5b7cfc5bf 100644
--- a/db/docs/api_c/frame.html
+++ b/db/docs/api_c/frame.html
@@ -1,8 +1,8 @@
-<!--$Id: frame.so,v 10.8 2005/04/19 17:44:03 bostic Exp $-->
+<!--$Id: frame.so,v 10.9 2006/10/05 01:06:03 bostic Exp $-->
<html>
<head>
<title>
-Berkeley DB API (Version: 4.5.20)
+Berkeley DB API (Version: 4.6.18)
</title>
<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
@@ -10,9 +10,9 @@ Berkeley DB API (Version: 4.5.20)
<frameset cols="20%,80%">
<frame src="object.html" name="object" title="Objects">
<frame
+name="method"
src="api_core.html"
-name="method" title=
-"Berkeley DB API (Version: 4.5.20)">
+title="Berkeley DB API (Version: 4.6.18)">
<noframes>
<meta http-equiv="refresh" content="0;url=api_index.html">
</noframes>
diff --git a/db/docs/api_c/hsearch.html b/db/docs/api_c/hsearch.html
index 58a2d0c59..a20a2f89f 100644
--- a/db/docs/api_c/hsearch.html
+++ b/db/docs/api_c/hsearch.html
@@ -1,6 +1,5 @@
<!--$Id: hsearch.so,v 10.28 2004/09/28 15:04:20 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -97,6 +96,6 @@ system functions.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/lock_class.html b/db/docs/api_c/lock_class.html
index d4bb8753c..83ba7be24 100644
--- a/db/docs/api_c/lock_class.html
+++ b/db/docs/api_c/lock_class.html
@@ -1,6 +1,5 @@
<!--$Id: lock_class.so,v 10.21 2004/08/13 03:38:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -38,6 +37,6 @@ for a single lock, and has no methods of its own.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/lock_detect.html b/db/docs/api_c/lock_detect.html
index d19857f6c..bc254870c 100644
--- a/db/docs/api_c/lock_detect.html
+++ b/db/docs/api_c/lock_detect.html
@@ -1,6 +1,5 @@
-<!--$Id: lock_detect.so,v 10.49 2004/08/13 03:38:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: lock_detect.so,v 10.50 2006/12/13 17:57:23 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -24,7 +23,7 @@
<p>
int
DB_ENV-&gt;lock_detect(DB_ENV *env,
- u_int32_t flags, u_int32_t atype, int *aborted);
+ u_int32_t flags, u_int32_t atype, int *rejected);
</pre></h3>
<hr size=1 noshade>
<h3>Description: DB_ENV-&gt;lock_detect</h3>
@@ -40,7 +39,7 @@ and 0 on success.
</p>
<h3>Parameters</h3>
<dl compact>
-<dt><b>aborted</b><dd>If the <b>aborted</b> parameter is non-NULL, the memory location to
+<dt><b>rejected</b><dd>If the <b>rejected</b> parameter is non-NULL, the memory location to
which it refers will be set to the number of lock requests that were
rejected.
<dt><b>atype</b><dd>The <b>atype</b> parameter specifies which lock request(s) to reject.
@@ -77,6 +76,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/lock_get.html b/db/docs/api_c/lock_get.html
index 45b2a12e3..f7989be17 100644
--- a/db/docs/api_c/lock_get.html
+++ b/db/docs/api_c/lock_get.html
@@ -1,6 +1,5 @@
<!--$Id: lock_get.so,v 10.53 2004/08/13 03:38:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -94,6 +93,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/lock_id.html b/db/docs/api_c/lock_id.html
index 721d4a384..70eee4a8b 100644
--- a/db/docs/api_c/lock_id.html
+++ b/db/docs/api_c/lock_id.html
@@ -1,6 +1,5 @@
<!--$Id: lock_id.so,v 10.33 2004/08/13 03:38:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -50,6 +49,6 @@ and 0 on success.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/lock_id_free.html b/db/docs/api_c/lock_id_free.html
index 5d66f5196..4feed938f 100644
--- a/db/docs/api_c/lock_id_free.html
+++ b/db/docs/api_c/lock_id_free.html
@@ -1,6 +1,5 @@
<!--$Id: lock_id_free.so,v 10.14 2004/08/13 03:38:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -53,6 +52,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/lock_list.html b/db/docs/api_c/lock_list.html
index fd6a3f08f..a00e2a94a 100644
--- a/db/docs/api_c/lock_list.html
+++ b/db/docs/api_c/lock_list.html
@@ -1,6 +1,5 @@
<!--$Id: lock_list.so,v 1.1 2002/08/30 20:00:51 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -32,6 +31,6 @@
<!--DbEnv::set_lk_max_objects--><tr><td><a href="../api_c/env_set_lk_max_objects.html">DB_ENV-&gt;set_lk_max_objects</a></td><td>Set maximum number of lock objects</td></tr>
<!--DbEnv::set_timeout--><tr><td><a href="../api_c/env_set_timeout.html">DB_ENV-&gt;set_timeout</a></td><td>Set lock and transaction timeout</td></tr>
</table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/lock_put.html b/db/docs/api_c/lock_put.html
index f7c699029..63259f489 100644
--- a/db/docs/api_c/lock_put.html
+++ b/db/docs/api_c/lock_put.html
@@ -1,6 +1,5 @@
<!--$Id: lock_put.so,v 10.37 2004/08/13 03:38:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -52,6 +51,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/lock_stat.html b/db/docs/api_c/lock_stat.html
index c3cd8b55a..332efadc9 100644
--- a/db/docs/api_c/lock_stat.html
+++ b/db/docs/api_c/lock_stat.html
@@ -1,6 +1,5 @@
-<!--$Id: lock_stat.so,v 10.65 2005/07/20 16:26:38 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: lock_stat.so,v 10.68 2007/06/22 16:57:15 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -70,12 +69,27 @@ for which the thread of control did not wait.
<dt>u_int32_t st_ntxntimeouts;<dd>The number of transactions that have timed out. This value is also a
component of <b>st_ndeadlocks</b>, the total number of deadlocks
detected.
+<dt>u_int32_t st_objs_wait;<dd>The number of requests to allocate or deallocate an object
+for which the thread of control waited.
+<dt>u_int32_t st_objs_nowait;<dd>The number of requests to allocate or deallocate an object
+for which the thread of control did not wait.
+<dt>u_int32_t st_lockers_wait;<dd>The number of requests to allocate or deallocate a locker
+for which the thread of control waited.
+<dt>u_int32_t st_lockers_nowait;<dd>The number of requests to allocate or deallocate a locker
+for which the thread of control did not wait.
+<dt>u_int32_t st_locks_wait;<dd>The number of requests to allocate or deallocate a lock structure
+for which the thread of control waited.
+<dt>u_int32_t st_locks_nowait;<dd>The number of requests to allocate or deallocate a lock structure
+for which the thread of control did not wait.
+<dt>u_int32_t st_hash_len;<dd>Maximum length of a lock hash bucket.
<dt>roff_t st_regsize;<dd>The size of the lock region, in bytes.
<dt>u_int32_t st_region_wait;<dd>The number of times that a thread of control was forced to wait before
obtaining the lock region mutex.
<dt>u_int32_t st_region_nowait;<dd>The number of times that a thread of control was able to obtain
the lock region mutex without waiting.
</dl>
+<p>The DB_ENV-&gt;lock_stat method may not be called before the <a href="../api_c/env_open.html">DB_ENV-&gt;open</a> method has
+been called.</p>
<p>The DB_ENV-&gt;lock_stat method
returns a non-zero error value on failure
and 0 on success.
@@ -99,8 +113,12 @@ invalid flag value or parameter was specified.
</dl>
<hr size=1 noshade>
<h3>Description: DB_ENV-&gt;lock_stat_print</h3>
-<p>The DB_ENV-&gt;lock_stat_print method prints diagnostic information to the output
-channel described by the <a href="../api_c/env_set_msgfile.html">DB_ENV-&gt;set_msgfile</a> method.</p>
+<p>The DB_ENV-&gt;lock_stat_print method displays the
+locking subsystem statistical information, as described for the DB_ENV-&gt;lock_stat method.
+The information is printed to a specified output channel (see the
+<a href="../api_c/env_set_msgfile.html">DB_ENV-&gt;set_msgfile</a> method for more information), or passed to an
+application callback function (see the <a href="../api_c/env_set_msgcall.html">DB_ENV-&gt;set_msgcall</a> method for
+more information).</p>
<p>The DB_ENV-&gt;lock_stat_print method may not be called before the <a href="../api_c/env_open.html">DB_ENV-&gt;open</a> method has
been called.</p>
<p>The DB_ENV-&gt;lock_stat_print method
@@ -109,10 +127,11 @@ and 0 on success.
</p>
<h3>Parameters</h3>
<dl compact>
-<dt><b>flags</b><dd>The <b>flags</b> parameter must be set by bitwise inclusively <b>OR</b>'ing together one or more
-of the following values:
+<dt><b>flags</b><dd>The <b>flags</b> parameter must be set to 0 or by bitwise inclusively <b>OR</b>'ing together one
+or more of the following values:
<dl compact>
<dt><a name="DB_STAT_ALL">DB_STAT_ALL</a><dd>Display all available information.
+<dt><a name="DB_STAT_CLEAR">DB_STAT_CLEAR</a><dd>Reset statistics after displaying their values.
<dt><a name="DB_STAT_LOCK_CONF">DB_STAT_LOCK_CONF</a><dd>Display the lock conflict matrix.
<dt><a name="DB_STAT_LOCK_LOCKERS">DB_STAT_LOCK_LOCKERS</a><dd>Display the lockers within hash chains.
<dt><a name="DB_STAT_LOCK_OBJECTS">DB_STAT_LOCK_OBJECTS</a><dd>Display the lock objects within hash chains.
@@ -128,6 +147,6 @@ of the following values:
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/lock_vec.html b/db/docs/api_c/lock_vec.html
index 7265f4075..b05f865a7 100644
--- a/db/docs/api_c/lock_vec.html
+++ b/db/docs/api_c/lock_vec.html
@@ -1,6 +1,5 @@
<!--$Id: lock_vec.so,v 10.69 2004/08/13 03:38:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -153,6 +152,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/log_archive.html b/db/docs/api_c/log_archive.html
index f98246de1..5815301c1 100644
--- a/db/docs/api_c/log_archive.html
+++ b/db/docs/api_c/log_archive.html
@@ -1,6 +1,5 @@
<!--$Id: log_archive.so,v 10.49 2004/08/13 03:38:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -109,6 +108,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/log_compare.html b/db/docs/api_c/log_compare.html
index 7f870cfcc..c7585dff4 100644
--- a/db/docs/api_c/log_compare.html
+++ b/db/docs/api_c/log_compare.html
@@ -1,6 +1,5 @@
<!--$Id: log_compare.so,v 10.22 2004/08/13 03:38:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -49,6 +48,6 @@ to be compared.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/log_cursor.html b/db/docs/api_c/log_cursor.html
index a80fa59ab..337a74b46 100644
--- a/db/docs/api_c/log_cursor.html
+++ b/db/docs/api_c/log_cursor.html
@@ -1,6 +1,5 @@
<!--$Id: log_cursor.so,v 10.12 2004/08/13 03:38:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -54,6 +53,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/log_file.html b/db/docs/api_c/log_file.html
index f2ca9743a..07fe8b49d 100644
--- a/db/docs/api_c/log_file.html
+++ b/db/docs/api_c/log_file.html
@@ -1,6 +1,5 @@
<!--$Id: log_file.so,v 10.34 2004/08/13 03:38:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -71,6 +70,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/log_flush.html b/db/docs/api_c/log_flush.html
index 6d93c820a..20196e62c 100644
--- a/db/docs/api_c/log_flush.html
+++ b/db/docs/api_c/log_flush.html
@@ -1,6 +1,5 @@
<!--$Id: log_flush.so,v 10.31 2004/08/13 03:38:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -54,6 +53,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/log_get.html b/db/docs/api_c/log_get.html
deleted file mode 100644
index 05761e1ea..000000000
--- a/db/docs/api_c/log_get.html
+++ /dev/null
@@ -1,114 +0,0 @@
-<!--$Id: log_get.so,v 10.22 2000/03/17 01:53:59 bostic Exp $-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB: log_get</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
- <a name="2"><!--meow--></a>
-<table><tr valign=top>
-<td>
-<h1>log_get</h1>
-</td>
-<td width="1%">
-<a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;db.h&gt;
-<p>
-int
-log_get(DB_ENV *env, DB_LSN *lsn, DBT *data, u_int32_t flags);
-</pre></h3>
-<h1>Description</h1>
-<p>The log_get function implements a cursor inside of the log,
-retrieving 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. When multiple threads are using the returned log handle
-concurrently, one of 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> or
-<a href="../api_c/dbt.html#DB_DBT_USERMEM">DB_DBT_USERMEM</a> flags must be specified for any <a href="../api_c/dbt.html">DBT</a> used
-for data retrieval.
-<p>The <b>flags</b> argument must be set to exactly one of the following values:
-<p><dl compact>
-<p><dt><a name="DB_CHECKPOINT">DB_CHECKPOINT</a><dd>The last record written with the DB_CHECKPOINT flag specified to the
-<a href="../api_c/log_put.html">log_put</a> function 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
-returned. If no record has been previously written with the DB_CHECKPOINT
-flag specified, the first record in the log is returned.
-<p>If the log is empty, the log_get function will return <a href="../ref/program/errorret.html#DB_NOTFOUND">DB_NOTFOUND</a>.
-<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
-record returned.
-<p>If the log is empty, the log_get function will return <a href="../ref/program/errorret.html#DB_NOTFOUND">DB_NOTFOUND</a>.
-<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
-record returned.
-<p>If the log is empty, the log_get function will return <a href="../ref/program/errorret.html#DB_NOTFOUND">DB_NOTFOUND</a>.
-<p><dt><a name="DB_NEXT">DB_NEXT</a><dd>The current log position is advanced to the next 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 returned.
-<p>If the pointer has not been initialized via DB_FIRST, DB_LAST, DB_SET,
-DB_NEXT, or DB_PREV, log_get will return the first record in the log.
-If the last log record has already been returned or the log is empty, the
-log_get function will return <a href="../ref/program/errorret.html#DB_NOTFOUND">DB_NOTFOUND</a>.
-<p>If the log was opened with the DB_THREAD flag set, calls to
-log_get with the DB_NEXT flag set will return EINVAL.
-<p><dt><a name="DB_PREV">DB_PREV</a><dd>The current log position is moved to the 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 returned.
-<p>If the pointer has not been initialized via DB_FIRST, DB_LAST, DB_SET,
-DB_NEXT, or DB_PREV,
-log_get will return the last record in the log.
-If the first log record has already been returned or the log is empty, the
-log_get function will return <a href="../ref/program/errorret.html#DB_NOTFOUND">DB_NOTFOUND</a>.
-<p>If the log was opened with the DB_THREAD flag set, calls to
-log_get with the DB_PREV flag set will return EINVAL.
-<p><dt><a name="DB_CURRENT">DB_CURRENT</a><dd>Return the log record currently referenced by the log.
-<p>If the log pointer 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,
-log_get 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 (e.g., does not appear in the log)
-log_get will return EINVAL.
-</dl>
-<p>Otherwise, the log_get function returns a non-zero error value on failure and 0 on success.
-<h1>Errors</h1>
-<p>The log_get function 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_FIRST flag was specified and no log files were found.
-</dl>
-<p>The log_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 log_get function 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>See Also</h1>
-<a href="../api_c/env_set_lg_bsize.html">DBENV-&gt;set_lg_bsize</a>,
-<a href="../api_c/env_set_lg_max.html">DBENV-&gt;set_lg_max</a>,
-<a href="../api_c/log_archive.html">log_archive</a>,
-<a href="../api_c/log_compare.html">log_compare</a>,
-<a href="../api_c/log_file.html">log_file</a>,
-<a href="../api_c/log_flush.html">log_flush</a>,
-<a href="../api_c/log_get.html">log_get</a>,
-<a href="../api_c/log_put.html">log_put</a>,
-<a href="../api_c/log_register.html">log_register</a>,
-<a href="../api_c/log_stat.html">log_stat</a>
-and
-<a href="../api_c/log_unregister.html">log_unregister</a>.
-</tt>
-<table><tr><td><br></td><td width="1%">
-<a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_c/log_list.html b/db/docs/api_c/log_list.html
index 1e4fdf309..7f9e69e77 100644
--- a/db/docs/api_c/log_list.html
+++ b/db/docs/api_c/log_list.html
@@ -1,6 +1,5 @@
<!--$Id: log_list.so,v 1.1 2002/08/30 20:00:56 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -33,6 +32,6 @@
<!--DbEnv::set_lg_max--><tr><td><a href="../api_c/env_set_lg_max.html">DB_ENV-&gt;set_lg_max</a></td><td>Set log file size</td></tr>
<!--DbEnv::set_lg_regionmax--><tr><td><a href="../api_c/env_set_lg_regionmax.html">DB_ENV-&gt;set_lg_regionmax</a></td><td>Set logging region size</td></tr>
</table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/log_printf.html b/db/docs/api_c/log_printf.html
index c0264c6d0..2ebaf9a37 100644
--- a/db/docs/api_c/log_printf.html
+++ b/db/docs/api_c/log_printf.html
@@ -1,6 +1,5 @@
<!--$Id: log_printf.so,v 1.1 2005/09/30 19:00:24 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -64,6 +63,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/log_put.html b/db/docs/api_c/log_put.html
index 91241c6e9..aaffab66f 100644
--- a/db/docs/api_c/log_put.html
+++ b/db/docs/api_c/log_put.html
@@ -1,6 +1,5 @@
<!--$Id: log_put.so,v 10.41 2004/08/13 03:38:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -71,6 +70,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/log_register.html b/db/docs/api_c/log_register.html
deleted file mode 100644
index e993feabe..000000000
--- a/db/docs/api_c/log_register.html
+++ /dev/null
@@ -1,64 +0,0 @@
-<!--$Id: log_register.so,v 10.27 2000/05/09 14:46:45 bostic Exp $-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB: log_register</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
- <a name="2"><!--meow--></a>
-<table><tr valign=top>
-<td>
-<h1>log_register</h1>
-</td>
-<td width="1%">
-<a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;db.h&gt;
-<p>
-int
-log_register(DB_ENV *env, DB *dbp, const char *name);
-</pre></h3>
-<h1>Description</h1>
-<p>The log_register function registers a file name with the specified Berkeley DB
-environment's log manager. The log manager records all file name mappings
-at each checkpoint so that a recovery process can identify the file to
-which a record in the log refers.
-<p>The <b>dbp</b> argument should be a reference to the DB structure being
-registered. The <b>name</b> argument should be a file name appropriate
-for opening the file in the environment, during recovery.
-<p>The log_register function returns a non-zero error value on failure and 0 on success.
-<h1>Errors</h1>
-<p>The log_register function 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 log_register 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 log_register function 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>See Also</h1>
-<a href="../api_c/env_set_lg_bsize.html">DBENV-&gt;set_lg_bsize</a>,
-<a href="../api_c/env_set_lg_max.html">DBENV-&gt;set_lg_max</a>,
-<a href="../api_c/log_archive.html">log_archive</a>,
-<a href="../api_c/log_compare.html">log_compare</a>,
-<a href="../api_c/log_file.html">log_file</a>,
-<a href="../api_c/log_flush.html">log_flush</a>,
-<a href="../api_c/log_get.html">log_get</a>,
-<a href="../api_c/log_put.html">log_put</a>,
-<a href="../api_c/log_register.html">log_register</a>,
-<a href="../api_c/log_stat.html">log_stat</a>
-and
-<a href="../api_c/log_unregister.html">log_unregister</a>.
-</tt>
-<table><tr><td><br></td><td width="1%">
-<a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_c/log_stat.html b/db/docs/api_c/log_stat.html
index 05a01cd17..d4df55f1f 100644
--- a/db/docs/api_c/log_stat.html
+++ b/db/docs/api_c/log_stat.html
@@ -1,6 +1,5 @@
-<!--$Id: log_stat.so,v 10.57 2005/10/28 19:45:34 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: log_stat.so,v 10.58 2007/06/22 16:57:15 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -72,6 +71,8 @@ obtaining the log region mutex.
<dt>u_int32_t st_region_nowait;<dd>The number of times that a thread of control was able to obtain
the log region mutex without waiting.
</dl>
+<p>The DB_ENV-&gt;log_stat method may not be called before the <a href="../api_c/env_open.html">DB_ENV-&gt;open</a> method has
+been called.</p>
<p>The DB_ENV-&gt;log_stat method
returns a non-zero error value on failure
and 0 on success.
@@ -125,6 +126,6 @@ or more of the following values:
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/log_unregister.html b/db/docs/api_c/log_unregister.html
deleted file mode 100644
index cfc1e6f2e..000000000
--- a/db/docs/api_c/log_unregister.html
+++ /dev/null
@@ -1,59 +0,0 @@
-<!--$Id: log_unregister.so,v 10.21 2000/05/03 22:39:10 bostic Exp $-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB: log_unregister</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
- <a name="2"><!--meow--></a>
-<table><tr valign=top>
-<td>
-<h1>log_unregister</h1>
-</td>
-<td width="1%">
-<a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;db.h&gt;
-<p>
-int
-log_unregister(DB_ENV *env, DB *dbp);
-</pre></h3>
-<h1>Description</h1>
-<p>The log_unregister function function unregisters the file represented by
-the <b>dbp</b> parameter from the Berkeley DB environment's log manager.
-<p>The log_unregister function returns a non-zero error value on failure and 0 on success.
-<h1>Errors</h1>
-<p>The log_unregister function 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 log_unregister 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 log_unregister function 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>See Also</h1>
-<a href="../api_c/env_set_lg_bsize.html">DBENV-&gt;set_lg_bsize</a>,
-<a href="../api_c/env_set_lg_max.html">DBENV-&gt;set_lg_max</a>,
-<a href="../api_c/log_archive.html">log_archive</a>,
-<a href="../api_c/log_compare.html">log_compare</a>,
-<a href="../api_c/log_file.html">log_file</a>,
-<a href="../api_c/log_flush.html">log_flush</a>,
-<a href="../api_c/log_get.html">log_get</a>,
-<a href="../api_c/log_put.html">log_put</a>,
-<a href="../api_c/log_register.html">log_register</a>,
-<a href="../api_c/log_stat.html">log_stat</a>
-and
-<a href="../api_c/log_unregister.html">log_unregister</a>.
-</tt>
-<table><tr><td><br></td><td width="1%">
-<a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_c/logc_class.html b/db/docs/api_c/logc_class.html
index 67c981f9a..0803c0269 100644
--- a/db/docs/api_c/logc_class.html
+++ b/db/docs/api_c/logc_class.html
@@ -1,6 +1,5 @@
<!--$Id: logc_class.so,v 1.8 2004/08/13 03:38:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -40,6 +39,6 @@ return.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/logc_close.html b/db/docs/api_c/logc_close.html
index 4484867bd..9d70a8f3e 100644
--- a/db/docs/api_c/logc_close.html
+++ b/db/docs/api_c/logc_close.html
@@ -1,6 +1,5 @@
<!--$Id: logc_close.so,v 10.13 2004/08/13 03:38:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -54,6 +53,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/logc_get.html b/db/docs/api_c/logc_get.html
index 887dba5c6..386d234fc 100644
--- a/db/docs/api_c/logc_get.html
+++ b/db/docs/api_c/logc_get.html
@@ -1,6 +1,5 @@
<!--$Id: logc_get.so,v 10.48 2004/08/13 03:38:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -103,6 +102,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/lsn_class.html b/db/docs/api_c/lsn_class.html
index 96c4e9106..edf40401a 100644
--- a/db/docs/api_c/lsn_class.html
+++ b/db/docs/api_c/lsn_class.html
@@ -1,6 +1,5 @@
<!--$Id: lsn_class.so,v 10.21 2004/08/13 03:38:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -39,6 +38,6 @@ the other specifies an offset in the log file.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/memp_fclose.html b/db/docs/api_c/memp_fclose.html
index 7be4e8279..4131203df 100644
--- a/db/docs/api_c/memp_fclose.html
+++ b/db/docs/api_c/memp_fclose.html
@@ -1,6 +1,5 @@
<!--$Id: memp_fclose.so,v 10.33 2004/08/13 03:38:58 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -52,6 +51,6 @@ and 0 on success.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/memp_fcreate.html b/db/docs/api_c/memp_fcreate.html
index 2d846db77..95411147c 100644
--- a/db/docs/api_c/memp_fcreate.html
+++ b/db/docs/api_c/memp_fcreate.html
@@ -1,6 +1,5 @@
<!--$Id: memp_fcreate.so,v 10.12 2004/08/13 03:38:58 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -48,6 +47,6 @@ and 0 on success.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/memp_fget.html b/db/docs/api_c/memp_fget.html
index fa8e931b6..b2f9b8053 100644
--- a/db/docs/api_c/memp_fget.html
+++ b/db/docs/api_c/memp_fget.html
@@ -1,6 +1,5 @@
<!--$Id: memp_fget.so,v 10.48 2006/09/13 14:30:54 mjc Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -121,6 +120,6 @@ been modified since the transaction began.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/memp_fopen.html b/db/docs/api_c/memp_fopen.html
index f4a8d8ff0..277a6ebd4 100644
--- a/db/docs/api_c/memp_fopen.html
+++ b/db/docs/api_c/memp_fopen.html
@@ -1,6 +1,5 @@
<!--$Id: memp_fopen.so,v 10.53 2006/08/08 05:24:05 mjc Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -101,6 +100,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/memp_fput.html b/db/docs/api_c/memp_fput.html
index f2ffc9bfe..1702f5ad7 100644
--- a/db/docs/api_c/memp_fput.html
+++ b/db/docs/api_c/memp_fput.html
@@ -1,6 +1,5 @@
-<!--$Id: memp_fput.so,v 10.33 2006/09/11 23:31:27 mjc Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: memp_fput.so,v 10.34 2006/11/30 19:06:50 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -23,33 +22,39 @@
#include &lt;db.h&gt;
<p>
int
-DB_MPOOLFILE-&gt;put(DB_MPOOLFILE *mpf, void *pgaddr, u_int32_t flags);
+DB_MPOOLFILE-&gt;put(DB_MPOOLFILE *mpf,
+ void *pgaddr, DB_CACHE_PRIORITY priority, u_int32_t flags);
</pre></h3>
<hr size=1 noshade>
<h3>Description: DB_MPOOLFILE-&gt;put</h3>
-<p>The DB_MPOOLFILE-&gt;put method returns a page to the cache.</p>
+<p>The DB_MPOOLFILE-&gt;put method returns a reference to a page in the cache,
+setting the priority of the page as specified by the <b>priority</b>
+parameter.</p>
<p>The DB_MPOOLFILE-&gt;put method
returns a non-zero error value on failure
and 0 on success.
</p>
<h3>Parameters</h3>
<dl compact>
-<dt><b>pgaddr</b><dd>The <b>pgaddr</b> parameter is the address of the page to be
-returned to the cache. The <b>pgaddr</b> parameter must be an
-address previously returned by <a href="../api_c/memp_fget.html">DB_MPOOLFILE-&gt;get</a>.
-<dt><b>flags</b><dd>The <b>flags</b> parameter must be set to 0 or by bitwise inclusively <b>OR</b>'ing together one
-or more of the following values:
+<dt><b>flags</b><dd>The <b>flags</b> parameter is currently unused, and must be set to 0.
+<dt><b>pgaddr</b><dd>The <b>pgaddr</b> parameter is the address of the page to be returned
+to the cache. The <b>pgaddr</b> parameter must be a value previously
+returned by the <a href="../api_c/memp_fget.html">DB_MPOOLFILE-&gt;get</a> method.
+<dt><b>priority</b><dd>Set the page's <b>priority</b> as follows:
<dl compact>
-<dt><a name="DB_MPOOL_DISCARD">DB_MPOOL_DISCARD</a><dd>The page is unlikely to be useful in the near future, and should be
-discarded before other pages in the pool.
+<dt><a name="DB_PRIORITY_UNCHANGED">DB_PRIORITY_UNCHANGED</a><dd>The priority is unchanged.
+<dt><a name="DB_PRIORITY_VERY_LOW">DB_PRIORITY_VERY_LOW</a><dd>The lowest priority: pages are the most likely to be discarded.
+<dt><a name="DB_PRIORITY_LOW">DB_PRIORITY_LOW</a><dd>The next lowest priority.
+<dt><a name="DB_PRIORITY_DEFAULT">DB_PRIORITY_DEFAULT</a><dd>The default priority.
+<dt><a name="DB_PRIORITY_HIGH">DB_PRIORITY_HIGH</a><dd>The next highest priority.
+<dt><a name="DB_PRIORITY_VERY_HIGH">DB_PRIORITY_VERY_HIGH</a><dd>The highest priority: pages are the least likely to be discarded.
</dl>
</dl>
<h3>Errors</h3>
<p>The DB_MPOOLFILE-&gt;put method
may fail and return one of the following non-zero errors:</p>
<dl compact>
-<dt>EINVAL<dd>If the <b>pgaddr</b> parameter does not refer to a page returned by
-<a href="../api_c/memp_fget.html">DB_MPOOLFILE-&gt;get</a>; or if an
+<dt>EINVAL<dd>An
invalid flag value or parameter was specified.
</dl>
<hr size=1 noshade>
@@ -61,6 +66,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/memp_fset.html b/db/docs/api_c/memp_fset.html
deleted file mode 100644
index 651236d34..000000000
--- a/db/docs/api_c/memp_fset.html
+++ /dev/null
@@ -1,65 +0,0 @@
-<!--$Id: memp_fset.so,v 10.30 2004/08/13 03:38:58 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: DB_MPOOLFILE-&gt;set</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
-</head>
-<body bgcolor=white>
-<table width="100%"><tr valign=top>
-<td>
-<h3>DB_MPOOLFILE-&gt;set</h3>
-</td>
-<td align=right>
-<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a>
-<a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a></td>
-</tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;db.h&gt;
-<p>
-int
-DB_MPOOLFILE-&gt;set(DB_MPOOLFILE *mpf, void *pgaddr, u_int32_t flags);
-</pre></h3>
-<hr size=1 noshade>
-<h3>Description: DB_MPOOLFILE-&gt;set</h3>
-<p>The DB_MPOOLFILE-&gt;set method sets the attributes of a cache page.</p>
-<p>The DB_MPOOLFILE-&gt;set method
-returns a non-zero error value on failure
-and 0 on success.
-</p>
-<h3>Parameters</h3>
-<dl compact>
-<dt><b>pgaddr</b><dd>The <b>pgaddr</b> parameter is the address of the page for which
-attributes are to be set. he <b>pgaddr</b> parameter must be an
-address previously returned by <a href="../api_c/memp_fget.html">DB_MPOOLFILE-&gt;get</a>.
-<dt><b>flags</b><dd>The <b>flags</b> parameter must be set to 0 or by bitwise inclusively <b>OR</b>'ing together one
-or more of the following values:
-<dl compact>
-<dt><a name="DB_MPOOL_DISCARD">DB_MPOOL_DISCARD</a><dd>The page is unlikely to be useful in the near future, and should be
-discarded before other pages in the pool.
-</dl>
-</dl>
-<h3>Errors</h3>
-<p>The DB_MPOOLFILE-&gt;set method
-may fail and return one of the following non-zero errors:</p>
-<dl compact>
-<dt>EINVAL<dd>An
-invalid flag value or parameter was specified.
-</dl>
-<hr size=1 noshade>
-<h3>Class</h3>
-<a href="../api_c/env_class.html">DB_ENV</a>, <a href="../api_c/mempfile_class.html">DB_MPOOLFILE</a>
-<h3>See Also</h3>
-<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/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
-</body>
-</html>
diff --git a/db/docs/api_c/memp_fsync.html b/db/docs/api_c/memp_fsync.html
index a36f62551..7fd434cc6 100644
--- a/db/docs/api_c/memp_fsync.html
+++ b/db/docs/api_c/memp_fsync.html
@@ -1,6 +1,5 @@
-<!--$Id: memp_fsync.so,v 10.35 2004/08/13 03:38:58 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: memp_fsync.so,v 10.36 2006/11/30 19:06:50 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -27,10 +26,9 @@ DB_MPOOLFILE-&gt;sync(DB_MPOOLFILE *mpf);
</pre></h3>
<hr size=1 noshade>
<h3>Description: DB_MPOOLFILE-&gt;sync</h3>
-<p>The DB_MPOOLFILE-&gt;sync method writes all pages associated with the
-<a href="../api_c/mempfile_class.html">DB_MPOOLFILE</a>, which were marked as modified using
-<a href="../api_c/memp_fput.html">DB_MPOOLFILE-&gt;put</a> or <a href="../api_c/memp_fset.html">DB_MPOOLFILE-&gt;set</a>, back to the source file. If any
-of the modified pages are <i>pinned</i> (that is, currently in use),
+<p>The DB_MPOOLFILE-&gt;sync method writes all modified pages associated with the
+<a href="../api_c/mempfile_class.html">DB_MPOOLFILE</a> back to the source file. If any of the modified
+pages are <i>pinned</i> (that is, currently in use),
DB_MPOOLFILE-&gt;sync will ignore them.</p>
<p>The DB_MPOOLFILE-&gt;sync method
returns a non-zero error value on failure
@@ -45,6 +43,6 @@ and 0 on success.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/memp_list.html b/db/docs/api_c/memp_list.html
index 3fd62b851..d311ab29e 100644
--- a/db/docs/api_c/memp_list.html
+++ b/db/docs/api_c/memp_list.html
@@ -1,6 +1,5 @@
<!--$Id: memp_list.so,v 1.1 2002/08/30 20:01:28 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -10,7 +9,7 @@
</head>
<body bgcolor=white>
<h3 align=center>Berkeley DB: Memory Pools and Related Methods</h3>
-<!--$Id: m4.methods,v 1.9 2006/08/25 16:40:01 bostic Exp $-->
+<!--$Id: m4.methods,v 1.11 2007/07/06 00:22:53 mjc Exp $-->
<table border=1 align=center>
<tr><th>Memory Pools and Related Methods</th><th>Description</th></tr>
<!--Db::mpf--><tr><td><a href="../api_c/db_get_mpf.html">DB-&gt;get_mpf</a></td><td>Return <a href="../api_c/db_class.html">DB</a>'s underlying <a href="../api_c/mempfile_class.html">DB_MPOOLFILE</a> handle</td></tr>
@@ -21,6 +20,7 @@
<tr><th>Memory Pool Configuration</th><th><br></th></tr>
<!--DbEnv::memp_register--><tr><td><a href="../api_c/memp_register.html">DB_ENV-&gt;memp_register</a></td><td>Register input/output functions for a file in a memory pool</td></tr>
<!--DbEnv::set_cachesize--><tr><td><a href="../api_c/env_set_cachesize.html">DB_ENV-&gt;set_cachesize</a></td><td>Set the environment cache size</td></tr>
+<!--DbEnv::set_cache_max--><tr><td><a href="../api_c/env_set_cache_max.html">DB_ENV-&gt;set_cache_max</a></td><td>Set the maximum cache size</td></tr>
<!--DbEnv::set_mp_max_openfd--><tr><td><a href="../api_c/memp_openfd.html">DB_ENV-&gt;set_mp_max_openfd</a></td><td>Set the maximum number of open file descriptors</td></tr>
<!--DbEnv::set_mp_max_write--><tr><td><a href="../api_c/memp_maxwrite.html">DB_ENV-&gt;set_mp_max_write</a></td><td>Set the maximum number of sequential disk writes</td></tr>
<!--DbEnv::set_mp_mmapsize--><tr><td><a href="../api_c/env_set_mp_mmapsize.html">DB_ENV-&gt;set_mp_mmapsize</a></td><td>Set maximum mapped-in database file size</td></tr>
@@ -31,7 +31,6 @@
<!--DbMpoolFile::get--><tr><td><a href="../api_c/memp_fget.html">DB_MPOOLFILE-&gt;get</a></td><td>Get page from a file in a memory pool</td></tr>
<!--DbMpoolFile::open--><tr><td><a href="../api_c/memp_fopen.html">DB_MPOOLFILE-&gt;open</a></td><td>Open a file in a memory pool</td></tr>
<!--DbMpoolFile::put--><tr><td><a href="../api_c/memp_fput.html">DB_MPOOLFILE-&gt;put</a></td><td>Return a page to a memory pool</td></tr>
-<!--DbMpoolFile::set--><tr><td><a href="../api_c/memp_fset.html">DB_MPOOLFILE-&gt;set</a></td><td>Set memory pool page attributes</td></tr>
<!--DbMpoolFile::sync--><tr><td><a href="../api_c/memp_fsync.html">DB_MPOOLFILE-&gt;sync</a></td><td>Flush pages from a file in a memory pool</td></tr>
<tr><th>Memory Pool File Configuration</th><th><br></th></tr>
<!--DbMpoolFile::set_clear_len--><tr><td><a href="../api_c/memp_set_clear_len.html">DB_MPOOLFILE-&gt;set_clear_len</a></td><td>Set file page bytes to be cleared</td></tr>
@@ -43,6 +42,6 @@
<!--DbMpoolFile::set_pgcookie--><tr><td><a href="../api_c/memp_set_pgcookie.html">DB_MPOOLFILE-&gt;set_pgcookie</a></td><td>Set file cookie for pgin/pgout</td></tr>
<!--DbMpoolFile::set_priority--><tr><td><a href="../api_c/memp_set_priority.html">DB_MPOOLFILE-&gt;set_priority</a></td><td>Set memory pool file priority</td></tr>
</table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/memp_maxwrite.html b/db/docs/api_c/memp_maxwrite.html
index d074fe342..79c75e5f9 100644
--- a/db/docs/api_c/memp_maxwrite.html
+++ b/db/docs/api_c/memp_maxwrite.html
@@ -1,6 +1,5 @@
-<!--$Id: memp_maxwrite.so,v 10.4 2006/04/26 16:55:20 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: memp_maxwrite.so,v 10.5 2006/11/29 21:37:17 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -23,10 +22,10 @@
#include &lt;db.h&gt;
<p>
int
-DB_ENV-&gt;set_mp_max_write(DB_ENV *env, int maxwrite, int maxwrite_sleep);
+DB_ENV-&gt;set_mp_max_write(DB_ENV *env, int maxwrite, db_timeout_t maxwrite_sleep);
<p>
int
-DB_ENV-&gt;get_mp_max_write(DB_ENV *env, int *maxwritep, int *maxwrite_sleepp);
+DB_ENV-&gt;get_mp_max_write(DB_ENV *env, int *maxwritep, db_timeout_t *maxwrite_sleepp);
</pre></h3>
<hr size=1 noshade>
<h3>Description: DB_ENV-&gt;set_mp_max_write</h3>
@@ -43,7 +42,9 @@ and 0 on success.
library when flushing dirty pages from the cache, or 0 if there is
no limitation on the number of sequential write operations.
<dt><b>maxwrite_sleep</b><dd>The number of microseconds the thread of control should pause before
-scheduling further write operations.
+scheduling further write operations. It must be specified as an
+unsigned 32-bit number of microseconds, limiting the maximum pause to
+roughly 71 minutes.
</dl>
<h3>Errors</h3>
<p>The DB_ENV-&gt;set_mp_max_write method
@@ -78,6 +79,6 @@ and 0 on success.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/memp_openfd.html b/db/docs/api_c/memp_openfd.html
index 3f38d9239..e4481af38 100644
--- a/db/docs/api_c/memp_openfd.html
+++ b/db/docs/api_c/memp_openfd.html
@@ -1,6 +1,5 @@
<!--$Id: memp_openfd.so,v 10.3 2005/03/08 14:36:15 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -72,6 +71,6 @@ maximum number of file descriptors open in <b>maxopenfdp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/memp_register.html b/db/docs/api_c/memp_register.html
index 661cb7079..8eddf91ba 100644
--- a/db/docs/api_c/memp_register.html
+++ b/db/docs/api_c/memp_register.html
@@ -1,6 +1,5 @@
<!--$Id: memp_register.so,v 10.38 2004/08/13 03:38:58 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -76,6 +75,6 @@ the Berkeley DB library).</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/memp_set_clear_len.html b/db/docs/api_c/memp_set_clear_len.html
index 9e377a0bd..d95f8515a 100644
--- a/db/docs/api_c/memp_set_clear_len.html
+++ b/db/docs/api_c/memp_set_clear_len.html
@@ -1,6 +1,5 @@
<!--$Id: memp_set_clear_len.so,v 10.18 2005/11/30 19:46:21 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -77,6 +76,6 @@ bytes to be cleared in <b>lenp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/memp_set_fileid.html b/db/docs/api_c/memp_set_fileid.html
index eae255654..80aee0e92 100644
--- a/db/docs/api_c/memp_set_fileid.html
+++ b/db/docs/api_c/memp_set_fileid.html
@@ -1,6 +1,5 @@
<!--$Id: memp_set_fileid.so,v 10.14 2005/04/14 13:08:06 sue Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -88,6 +87,6 @@ application.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/memp_set_flags.html b/db/docs/api_c/memp_set_flags.html
index 5b2c1801a..c69f16004 100644
--- a/db/docs/api_c/memp_set_flags.html
+++ b/db/docs/api_c/memp_set_flags.html
@@ -1,6 +1,5 @@
-<!--$Id: memp_set_flags.so,v 1.18 2005/09/17 16:30:18 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: memp_set_flags.so,v 1.19 2007/06/07 15:30:46 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -43,9 +42,10 @@ and 0 on success.
<dt><b>flags</b><dd>The <b>flags</b> parameter must be set by bitwise inclusively <b>OR</b>'ing together one or more
of the following values:
<dl compact>
-<dt><a name="DB_MPOOL_NOFILE">DB_MPOOL_NOFILE</a><dd>If set, no backing temporary file will be opened for in-memory
-databases, even if they expand to fill the entire cache. Attempts to
-create new file pages after the cache has been filled will fail.
+<dt><a name="DB_MPOOL_NOFILE">DB_MPOOL_NOFILE</a><dd>If set, no backing temporary file will be opened for the specified
+in-memory database, even if it expands to fill the entire cache.
+Attempts to create new database pages after the cache has been filled
+will fail.
<p>The DB_MPOOL_NOFILE flag 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>
<p>The DB_MPOOL_NOFILE flag may be used to configure Berkeley DB at any time during
@@ -83,6 +83,6 @@ flags in <b>flagsp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/memp_set_ftype.html b/db/docs/api_c/memp_set_ftype.html
index 8065afada..ec0533220 100644
--- a/db/docs/api_c/memp_set_ftype.html
+++ b/db/docs/api_c/memp_set_ftype.html
@@ -1,6 +1,5 @@
<!--$Id: memp_set_ftype.so,v 10.17 2005/11/30 19:46:21 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -74,6 +73,6 @@ file type in <b>ftypep</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/memp_set_lsn_offset.html b/db/docs/api_c/memp_set_lsn_offset.html
index 68fdc863b..dca6ba9c3 100644
--- a/db/docs/api_c/memp_set_lsn_offset.html
+++ b/db/docs/api_c/memp_set_lsn_offset.html
@@ -1,6 +1,5 @@
<!--$Id: memp_set_lsn_offset.so,v 10.17 2005/04/14 17:57:54 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -75,6 +74,6 @@ log sequence number byte offset in <b>lsn_offsetp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/memp_set_maxsize.html b/db/docs/api_c/memp_set_maxsize.html
index 2c87a30d6..63f8553a6 100644
--- a/db/docs/api_c/memp_set_maxsize.html
+++ b/db/docs/api_c/memp_set_maxsize.html
@@ -1,6 +1,5 @@
<!--$Id: memp_set_maxsize.so,v 1.15 2005/09/17 16:30:18 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -78,6 +77,6 @@ application.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/memp_set_pgcookie.html b/db/docs/api_c/memp_set_pgcookie.html
index 78ac56582..e28f17056 100644
--- a/db/docs/api_c/memp_set_pgcookie.html
+++ b/db/docs/api_c/memp_set_pgcookie.html
@@ -1,6 +1,5 @@
<!--$Id: memp_set_pgcookie.so,v 10.17 2005/11/30 19:46:21 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -75,6 +74,6 @@ byte string in <b>dbt</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/memp_set_priority.html b/db/docs/api_c/memp_set_priority.html
index 99fc01d11..efa48eecd 100644
--- a/db/docs/api_c/memp_set_priority.html
+++ b/db/docs/api_c/memp_set_priority.html
@@ -1,6 +1,5 @@
-<!--$Id: memp_set_priority.so,v 10.23 2005/08/12 17:05:52 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: memp_set_priority.so,v 10.25 2007/05/22 18:06:06 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -30,15 +29,18 @@ DB_MPOOLFILE-&gt;get_priority(DB_MPOOLFILE *mpf, DB_CACHE_PRIORITY *priorityp);
</pre></h3>
<hr size=1 noshade>
<h3>Description: DB_MPOOLFILE-&gt;set_priority</h3>
-<p>Set the cache priority for pages from the specified file. The priority
-of a page biases the replacement algorithm to be more or less likely to
-discard a page when space is needed in the buffer pool. The bias is
-temporary, and pages will eventually be discarded if they are not
-referenced again. The DB_MPOOLFILE-&gt;set_priority method is only advisory, and
-does not guarantee pages will be treated in a specific way.</p>
+<!--$Id: dbc_set_priority.so,v 1.3 2007/05/22 18:06:05 bostic Exp $-->
+<p>Set the cache priority for pages referenced by the
+<a href="../api_c/mempfile_class.html">DB_MPOOLFILE</a>
+handle.</p>
+<p>The priority of a page biases the replacement algorithm to be more or
+less likely to discard a page when space is needed in the buffer pool.
+The bias is temporary, and pages will eventually be discarded if they
+are not referenced again. The DB_MPOOLFILE-&gt;set_priority method is only advisory, and does
+not guarantee pages will be treated in a specific way.</p>
<p>To set the priority for the pages belonging to a particular database,
-call the DB_MPOOLFILE-&gt;set_priority method using the <a href="../api_c/mempfile_class.html">DB_MPOOLFILE</a>
-handle stored in the <b>mpf</b> field of the <a href="../api_c/db_class.html">DB</a> handle.</p>
+call the DB_MPOOLFILE-&gt;set_priority method using the <a href="../api_c/mempfile_class.html">DB_MPOOLFILE</a> handle
+returned by the <a href="../api_c/db_get_mpf.html">DB-&gt;get_mpf</a> method.</p>
<p>The DB_MPOOLFILE-&gt;set_priority 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>
<p>The DB_MPOOLFILE-&gt;set_priority method may be called at any time during the life of the
@@ -61,7 +63,7 @@ values:
</dl>
<hr size=1 noshade>
<h3>Description: DB_MPOOLFILE-&gt;get_priority</h3>
-<p>The DB_MPOOLFILE-&gt;get_priority method returns the cache priority.</p>
+<p>The DB_MPOOLFILE-&gt;get_priority method returns the cache priority for the file referenced by the <a href="../api_c/mempfile_class.html">DB_MPOOLFILE</a> handle.</p>
<p>The DB_MPOOLFILE-&gt;get_priority method may be called at any time during the life of the
application.</p>
<p>The DB_MPOOLFILE-&gt;get_priority method
@@ -70,18 +72,18 @@ and 0 on success.
</p>
<h3>Parameters</h3>
<dl compact>
-<dt><b>priorityp</b><dd>The DB_MPOOLFILE-&gt;get_priority method returns the
-cache priority in <b>priorityp</b>.
+<dt><b>priorityp</b><dd>The DB_MPOOLFILE-&gt;get_priority method returns a reference to the
+cache priority for the file referenced by the <a href="../api_c/mempfile_class.html">DB_MPOOLFILE</a> handle in <b>priorityp</b>.
</dl>
<hr size=1 noshade>
<h3>Class</h3>
-<a href="../api_c/db_class.html">DB</a>
+<a href="../api_c/env_class.html">DB_ENV</a>, <a href="../api_c/mempfile_class.html">DB_MPOOLFILE</a>
<h3>See Also</h3>
-<a href="../api_c/db_list.html">Databases and Related Methods</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/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/memp_stat.html b/db/docs/api_c/memp_stat.html
index 776872db0..b87b955c1 100644
--- a/db/docs/api_c/memp_stat.html
+++ b/db/docs/api_c/memp_stat.html
@@ -1,6 +1,5 @@
-<!--$Id: memp_stat.so,v 10.67 2006/09/11 16:56:44 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: memp_stat.so,v 10.71 2007/07/06 00:22:53 mjc Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -51,11 +50,13 @@ The following DB_MPOOL_STAT fields will be filled in:</p>
<dt>size_t st_gbytes;<dd>Gigabytes of cache (total cache size is st_gbytes + st_bytes).
<dt>size_t st_bytes;<dd>Bytes of cache (total cache size is st_gbytes + st_bytes).
<dt>u_int32_t st_ncache;<dd>Number of caches.
+<dt>u_int32_t st_max_ncache;<dd>Maximum number of caches, as configured with the
+<a href="../api_c/env_set_cache_max.html">DB_ENV-&gt;set_cache_max</a> method.
<dt>roff_t st_regsize;<dd>Individual cache size, in bytes.
<dt>size_t st_mmapsize;<dd>Maximum memory-mapped file size.
<dt>int st_maxopenfd;<dd>Maximum open file descriptors.
<dt>int st_maxwrite;<dd>Maximum sequential buffer writes.
-<dt>int st_maxwrite_sleep;<dd>Sleep after writing maximum sequential buffers.
+<dt>db_timeout_t st_maxwrite_sleep;<dd>Microseconds to pause after writing maximum sequential buffers.
<dt>u_int32_t st_map;<dd>Requested pages mapped into the process' address space (there is no
available information about whether or not this request caused disk I/O,
although examining the application page fault rate may be helpful).
@@ -97,11 +98,6 @@ region mutex without waiting.
<dt>u_int32_t st_alloc_max_pages;<dd>Maximum number of pages checked during an allocation.
<dt>u_int32_t st_io_wait;<dd>Number of operations blocked waiting for I/O to complete.
</dl>
-The <b>flags</b> parameter must be set to 0 or
-the following value:
-<dl compact>
-<dt><a name="DB_STAT_CLEAR">DB_STAT_CLEAR</a><dd>Reset statistics after returning their values.
-</dl>
<p>If <b>fsp</b> is non-NULL, a pointer to a NULL-terminated
variable length array of statistics for individual files, in the cache
<b>mp</b>, is copied into the memory location to which it refers. If
@@ -120,6 +116,8 @@ the cache; that is, each element of the array:</p>
<dt>u_int32_t st_page_in;<dd>Pages read into the cache.
<dt>u_int32_t st_page_out;<dd>Pages written from the cache to the backing file.
</dl>
+<p>The DB_ENV-&gt;memp_stat method may not be called before the <a href="../api_c/env_open.html">DB_ENV-&gt;open</a> method has
+been called.</p>
<p>The DB_ENV-&gt;memp_stat method
returns a non-zero error value on failure
and 0 on success.
@@ -145,8 +143,12 @@ invalid flag value or parameter was specified.
</dl>
<hr size=1 noshade>
<h3>Description: DB_ENV-&gt;memp_stat_print</h3>
-<p>The DB_ENV-&gt;memp_stat_print method prints diagnostic information to the output
-channel described by the <a href="../api_c/env_set_msgfile.html">DB_ENV-&gt;set_msgfile</a> method.</p>
+<p>The DB_ENV-&gt;memp_stat_print method displays the
+memory pool subsystem statistical information, as described for the DB_ENV-&gt;memp_stat method.
+The information is printed to a specified output channel (see the
+<a href="../api_c/env_set_msgfile.html">DB_ENV-&gt;set_msgfile</a> method for more information), or passed to an
+application callback function (see the <a href="../api_c/env_set_msgcall.html">DB_ENV-&gt;set_msgcall</a> method for
+more information).</p>
<p>The DB_ENV-&gt;memp_stat_print method may not be called before the <a href="../api_c/env_open.html">DB_ENV-&gt;open</a> method has
been called.</p>
<p>The DB_ENV-&gt;memp_stat_print method
@@ -155,10 +157,11 @@ and 0 on success.
</p>
<h3>Parameters</h3>
<dl compact>
-<dt><b>flags</b><dd>The <b>flags</b> parameter must be set by bitwise inclusively <b>OR</b>'ing together one or more
-of the following values:
+<dt><b>flags</b><dd>The <b>flags</b> parameter must be set to 0 or by bitwise inclusively <b>OR</b>'ing together one
+or more of the following values:
<dl compact>
<dt><a name="DB_STAT_ALL">DB_STAT_ALL</a><dd>Display all available information.
+<dt><a name="DB_STAT_CLEAR">DB_STAT_CLEAR</a><dd>Reset statistics after displaying their values.
<dt><a name="DB_STAT_MEMP_HASH">DB_STAT_MEMP_HASH</a><dd>Display the buffers with hash chains.
</dl>
</dl>
@@ -171,6 +174,6 @@ of the following values:
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/memp_sync.html b/db/docs/api_c/memp_sync.html
index 39cfe91a9..b6efb60d6 100644
--- a/db/docs/api_c/memp_sync.html
+++ b/db/docs/api_c/memp_sync.html
@@ -1,6 +1,5 @@
-<!--$Id: memp_sync.so,v 10.42 2004/11/12 02:55:19 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: memp_sync.so,v 10.43 2007/02/27 19:23:07 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -33,11 +32,6 @@ backing files.</p>
example, pages that are currently in use by another thread of control)
are waited for and written to disk as soon as it is possible to do
so.</p>
-<p>To support the DB_ENV-&gt;memp_sync functionality, it is necessary that the
-pool functions know the location of the log sequence number on the page
-for each file type. This location should be specified when the file is
-opened using the <a href="../api_c/memp_set_lsn_offset.html">DB_MPOOLFILE-&gt;set_lsn_offset</a> method. It is not required that
-the log sequence number be aligned on the page in any way.</p>
<p>The DB_ENV-&gt;memp_sync method
returns a non-zero error value on failure
and 0 on success.
@@ -60,6 +54,6 @@ NULL, all modified pages in the pool are written to disk.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/memp_trickle.html b/db/docs/api_c/memp_trickle.html
index e2c0bb5ea..feb8d9ba5 100644
--- a/db/docs/api_c/memp_trickle.html
+++ b/db/docs/api_c/memp_trickle.html
@@ -1,6 +1,5 @@
<!--$Id: memp_trickle.so,v 10.36 2004/08/13 03:38:58 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -61,6 +60,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/mempfile_class.html b/db/docs/api_c/mempfile_class.html
index 4361cb352..434de5753 100644
--- a/db/docs/api_c/mempfile_class.html
+++ b/db/docs/api_c/mempfile_class.html
@@ -1,6 +1,5 @@
<!--$Id: mempfile_class.so,v 10.24 2004/08/13 03:38:58 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -53,6 +52,6 @@ method's return.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/mutex_alloc.html b/db/docs/api_c/mutex_alloc.html
index 344b85f23..e7fa906d2 100644
--- a/db/docs/api_c/mutex_alloc.html
+++ b/db/docs/api_c/mutex_alloc.html
@@ -1,6 +1,5 @@
<!--$Id: mutex_alloc.so,v 10.2 2006/01/27 16:13:49 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -69,6 +68,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/mutex_free.html b/db/docs/api_c/mutex_free.html
index 6bcdcfb8d..aa0155fbb 100644
--- a/db/docs/api_c/mutex_free.html
+++ b/db/docs/api_c/mutex_free.html
@@ -1,6 +1,5 @@
<!--$Id: mutex_free.so,v 10.1 2005/07/20 16:33:59 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -55,6 +54,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/mutex_list.html b/db/docs/api_c/mutex_list.html
index 520925f4f..2cf3341a6 100644
--- a/db/docs/api_c/mutex_list.html
+++ b/db/docs/api_c/mutex_list.html
@@ -1,6 +1,5 @@
<!--$Id: mutex_list.so,v 10.1 2005/07/20 16:33:59 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -24,6 +23,6 @@
<!--DbEnv::mutex_set_max--><tr><td><a href="../api_c/mutex_set_max.html">DB_ENV-&gt;mutex_set_max</a></td><td>Configure total number of mutexes</td></tr>
<!--DbEnv::mutex_set_tas_spins--><tr><td><a href="../api_c/mutex_set_tas_spins.html">DB_ENV-&gt;mutex_set_tas_spins</a></td><td>Configure test-and-set mutex spin count</td></tr>
</table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/mutex_lock.html b/db/docs/api_c/mutex_lock.html
index 2f3481780..19d60beb5 100644
--- a/db/docs/api_c/mutex_lock.html
+++ b/db/docs/api_c/mutex_lock.html
@@ -1,6 +1,5 @@
<!--$Id: mutex_lock.so,v 10.1 2005/07/20 16:33:59 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -57,6 +56,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/mutex_set_align.html b/db/docs/api_c/mutex_set_align.html
index b258971dd..2de15ceb5 100644
--- a/db/docs/api_c/mutex_set_align.html
+++ b/db/docs/api_c/mutex_set_align.html
@@ -1,6 +1,5 @@
<!--$Id: mutex_set_align.so,v 10.1 2005/07/20 16:34:00 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -89,6 +88,6 @@ mutex alignment, in bytes in <b>alignp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/mutex_set_max.html b/db/docs/api_c/mutex_set_max.html
index dc5d3dd24..ff0953e3e 100644
--- a/db/docs/api_c/mutex_set_max.html
+++ b/db/docs/api_c/mutex_set_max.html
@@ -1,6 +1,5 @@
<!--$Id: mutex_set_max.so,v 10.3 2005/08/03 21:24:59 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -153,6 +152,6 @@ number of additional mutexes to allocate in <b>incrementp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/mutex_set_tas_spins.html b/db/docs/api_c/mutex_set_tas_spins.html
index 5df720c79..0dfb6acdc 100644
--- a/db/docs/api_c/mutex_set_tas_spins.html
+++ b/db/docs/api_c/mutex_set_tas_spins.html
@@ -1,6 +1,5 @@
<!--$Id: mutex_set_tas_spins.so,v 10.30 2005/07/20 16:34:01 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -84,6 +83,6 @@ test-and-set spin count in <b>tas_spinsp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/mutex_stat.html b/db/docs/api_c/mutex_stat.html
index a60fcdce6..5b6f7b50d 100644
--- a/db/docs/api_c/mutex_stat.html
+++ b/db/docs/api_c/mutex_stat.html
@@ -1,6 +1,5 @@
-<!--$Id: mutex_stat.so,v 10.2 2005/11/08 11:43:55 mjc Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: mutex_stat.so,v 10.3 2007/06/22 16:57:16 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -55,6 +54,8 @@ obtaining the mutex region mutex.
<dt>u_int32_t st_region_nowait;<dd>The number of times that a thread of control was able to obtain
the mutex region mutex without waiting.
</dl>
+<p>The DB_ENV-&gt;mutex_stat method may not be called before the <a href="../api_c/env_open.html">DB_ENV-&gt;open</a> method has
+been called.</p>
<p>The DB_ENV-&gt;mutex_stat method
returns a non-zero error value on failure
and 0 on success.
@@ -108,6 +109,6 @@ or more of the following values:
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/mutex_unlock.html b/db/docs/api_c/mutex_unlock.html
index 5b3f85179..0b7d2fa21 100644
--- a/db/docs/api_c/mutex_unlock.html
+++ b/db/docs/api_c/mutex_unlock.html
@@ -1,6 +1,5 @@
<!--$Id: mutex_unlock.so,v 10.1 2005/07/20 16:34:02 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -56,6 +55,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/object.html b/db/docs/api_c/object.html
index 1aff307b0..cbedf8449 100644
--- a/db/docs/api_c/object.html
+++ b/db/docs/api_c/object.html
@@ -1,4 +1,4 @@
-<!--$Id: object.so,v 10.18 2005/09/13 19:23:43 gmf Exp $-->
+<!--$Id: object.so,v 10.19 2006/10/05 01:06:03 bostic Exp $-->
<html>
<head>
<title>Berkeley DB API</title>
diff --git a/db/docs/api_c/pindex.src b/db/docs/api_c/pindex.src
index 9df00c048..dbfc9cb64 100644
--- a/db/docs/api_c/pindex.src
+++ b/db/docs/api_c/pindex.src
@@ -1,32 +1,38 @@
-__APIREL__/api_c/db_associate.html__OCT__2 @DB_DBT_APPMALLOC
-__APIREL__/api_c/db_associate.html__OCT__3 @DB_DONOTINDEX
+__APIREL__/api_c/db_associate.html__OCT__DB_DBT_APPMALLOC DB-__GT__associate@DB_DBT_APPMALLOC
+__APIREL__/api_c/db_associate.html__OCT__DB_DBT_MULTIPLE DB-__GT__associate@DB_DBT_MULTIPLE
+__APIREL__/api_c/db_associate.html__OCT__DB_DONOTINDEX DB-__GT__associate@DB_DONOTINDEX
__APIREL__/api_c/db_associate.html__OCT__DB_CREATE DB-__GT__associate@DB_CREATE
-__APIREL__/api_c/db_associate.html__OCT__DB_AUTO_COMMIT DB-__GT__associate@DB_AUTO_COMMIT
+__APIREL__/api_c/db_associate.html__OCT__DB_IMMUTABLE_KEY DB-__GT__associate@DB_IMMUTABLE_KEY
__APIREL__/api_c/db_class.html__OCT__DB_XA_CREATE db_create@DB_XA_CREATE
__APIREL__/api_c/db_close.html__OCT__DB_NOSYNC DB-__GT__close@DB_NOSYNC
-__APIREL__/api_c/db_cursor.html__OCT__DB_DEGREE_2 DB-__GT__cursor@DB_DEGREE_2
-__APIREL__/api_c/db_cursor.html__OCT__DB_DIRTY_READ DB-__GT__cursor@DB_DIRTY_READ
+__APIREL__/api_c/db_compact.html__OCT__DB_FREELIST_ONLY DB-__GT__compact@DB_FREELIST_ONLY
+__APIREL__/api_c/db_compact.html__OCT__DB_FREE_SPACE DB-__GT__compact@DB_FREE_SPACE
+__APIREL__/api_c/db_cursor.html__OCT__DB_READ_COMMITTED DB-__GT__cursor@DB_READ_COMMITTED
+__APIREL__/api_c/db_cursor.html__OCT__DB_READ_UNCOMMITTED DB-__GT__cursor@DB_READ_UNCOMMITTED
__APIREL__/api_c/db_cursor.html__OCT__DB_WRITECURSOR DB-__GT__cursor@DB_WRITECURSOR
-__APIREL__/api_c/db_del.html__OCT__DB_AUTO_COMMIT DB-__GT__del@DB_AUTO_COMMIT
+__APIREL__/api_c/db_cursor.html__OCT__DB_TXN_SNAPSHOT DB-__GT__cursor@DB_TXN_SNAPSHOT
+__APIREL__/api_c/db_exists.html__OCT__DB_READ_COMMITTED DB-__GT__exists@DB_READ_COMMITTED
+__APIREL__/api_c/db_exists.html__OCT__DB_READ_UNCOMMITTED DB-__GT__exists@DB_READ_UNCOMMITTED
+__APIREL__/api_c/db_exists.html__OCT__DB_RMW DB-__GT__exists@DB_RMW
__APIREL__/api_c/db_get.html__OCT__DB_CONSUME DB-__GT__get@DB_CONSUME
__APIREL__/api_c/db_get.html__OCT__DB_CONSUME_WAIT DB-__GT__get@DB_CONSUME_WAIT
__APIREL__/api_c/db_get.html__OCT__DB_GET_BOTH DB-__GT__get@DB_GET_BOTH
__APIREL__/api_c/db_get.html__OCT__DB_SET_RECNO DB-__GT__get@DB_SET_RECNO
-__APIREL__/api_c/db_get.html__OCT__DB_AUTO_COMMIT DB-__GT__get@DB_AUTO_COMMIT
-__APIREL__/api_c/db_get.html__OCT__DB_DEGREE_2 DB-__GT__get@DB_DEGREE_2
-__APIREL__/api_c/db_get.html__OCT__DB_DIRTY_READ DB-__GT__get@DB_DIRTY_READ
__APIREL__/api_c/db_get.html__OCT__DB_MULTIPLE DB-__GT__get@DB_MULTIPLE
+__APIREL__/api_c/db_get.html__OCT__DB_READ_COMMITTED DB-__GT__get@DB_READ_COMMITTED
+__APIREL__/api_c/db_get.html__OCT__DB_READ_UNCOMMITTED DB-__GT__get@DB_READ_UNCOMMITTED
__APIREL__/api_c/db_get.html__OCT__DB_RMW DB-__GT__get@DB_RMW
__APIREL__/api_c/db_join.html__OCT__DB_JOIN_ITEM DB-__GT__join@DB_JOIN_ITEM
-__APIREL__/api_c/db_join.html__OCT__DB_DIRTY_READ DB-__GT__join@DB_DIRTY_READ
+__APIREL__/api_c/db_join.html__OCT__DB_READ_UNCOMMITTED DB-__GT__join@DB_READ_UNCOMMITTED
__APIREL__/api_c/db_join.html__OCT__DB_RMW DB-__GT__join@DB_RMW
__APIREL__/api_c/db_join.html__OCT__DB_JOIN_NOSORT DB-__GT__join@DB_JOIN_NOSORT
__APIREL__/api_c/db_open.html__OCT__DB_AUTO_COMMIT DB-__GT__open@DB_AUTO_COMMIT
__APIREL__/api_c/db_open.html__OCT__DB_CREATE DB-__GT__open@DB_CREATE
-__APIREL__/api_c/db_open.html__OCT__DB_DIRTY_READ DB-__GT__open@DB_DIRTY_READ
__APIREL__/api_c/db_open.html__OCT__DB_EXCL DB-__GT__open@DB_EXCL
+__APIREL__/api_c/db_open.html__OCT__DB_MULTIVERSION DB-__GT__open@DB_MULTIVERSION
__APIREL__/api_c/db_open.html__OCT__DB_NOMMAP DB-__GT__open@DB_NOMMAP
__APIREL__/api_c/db_open.html__OCT__DB_RDONLY DB-__GT__open@DB_RDONLY
+__APIREL__/api_c/db_open.html__OCT__DB_READ_UNCOMMITTED DB-__GT__open@DB_READ_UNCOMMITTED
__APIREL__/api_c/db_open.html__OCT__DB_THREAD DB-__GT__open@DB_THREAD
__APIREL__/api_c/db_open.html__OCT__DB_TRUNCATE DB-__GT__open@DB_TRUNCATE
__APIREL__/api_c/db_open.html__OCT__DB_BTREE DB-__GT__open@DB_BTREE
@@ -37,7 +43,8 @@ __APIREL__/api_c/db_open.html__OCT__DB_UNKNOWN DB-__GT__open@DB_UNKNOWN
__APIREL__/api_c/db_put.html__OCT__DB_APPEND DB-__GT__put@DB_APPEND
__APIREL__/api_c/db_put.html__OCT__DB_NODUPDATA DB-__GT__put@DB_NODUPDATA
__APIREL__/api_c/db_put.html__OCT__DB_NOOVERWRITE DB-__GT__put@DB_NOOVERWRITE
-__APIREL__/api_c/db_put.html__OCT__DB_AUTO_COMMIT DB-__GT__put@DB_AUTO_COMMIT
+__APIREL__/api_c/db_put.html__OCT__2 @DB_REP_HANDLE_DEAD
+__APIREL__/api_c/db_put.html__OCT__3 @DB_REP_LOCKOUT
__APIREL__/api_c/db_set_encrypt.html__OCT__DB_ENCRYPT_AES DB-__GT__set_encrypt@DB_ENCRYPT_AES
__APIREL__/api_c/db_set_feedback.html__OCT__DB_UPGRADE DB-__GT__set_feedback@DB_UPGRADE
__APIREL__/api_c/db_set_feedback.html__OCT__DB_VERIFY DB-__GT__set_feedback@DB_VERIFY
@@ -64,11 +71,16 @@ __APIREL__/api_c/db_set_flags.html__OCT__11 @renumbering records in Recno databa
__APIREL__/api_c/db_set_flags.html__OCT__DB_RENUMBER DB-__GT__set_flags@DB_RENUMBER
__APIREL__/api_c/db_set_flags.html__OCT__12 pre-loading @text files into Recno databases
__APIREL__/api_c/db_set_flags.html__OCT__DB_SNAPSHOT DB-__GT__set_flags@DB_SNAPSHOT
-__APIREL__/api_c/db_stat.html__OCT__DB_DEGREE_2 DB-__GT__stat@DB_DEGREE_2
-__APIREL__/api_c/db_stat.html__OCT__DB_DIRTY_READ DB-__GT__stat@DB_DIRTY_READ
+__APIREL__/api_c/db_set_priority.html__OCT__DB_PRIORITY_VERY_LOW DB-__GT__set_priority@DB_PRIORITY_VERY_LOW
+__APIREL__/api_c/db_set_priority.html__OCT__DB_PRIORITY_LOW DB-__GT__set_priority@DB_PRIORITY_LOW
+__APIREL__/api_c/db_set_priority.html__OCT__DB_PRIORITY_DEFAULT DB-__GT__set_priority@DB_PRIORITY_DEFAULT
+__APIREL__/api_c/db_set_priority.html__OCT__DB_PRIORITY_HIGH DB-__GT__set_priority@DB_PRIORITY_HIGH
+__APIREL__/api_c/db_set_priority.html__OCT__DB_PRIORITY_VERY_HIGH DB-__GT__set_priority@DB_PRIORITY_VERY_HIGH
+__APIREL__/api_c/db_stat.html__OCT__DB_FAST_STAT DB-__GT__stat@DB_FAST_STAT
+__APIREL__/api_c/db_stat.html__OCT__DB_READ_COMMITTED DB-__GT__stat@DB_READ_COMMITTED
+__APIREL__/api_c/db_stat.html__OCT__DB_READ_UNCOMMITTED DB-__GT__stat@DB_READ_UNCOMMITTED
__APIREL__/api_c/db_stat.html__OCT__DB_FAST_STAT DB-__GT__stat@DB_FAST_STAT
__APIREL__/api_c/db_stat.html__OCT__DB_STAT_ALL DB-__GT__stat@DB_STAT_ALL
-__APIREL__/api_c/db_truncate.html__OCT__DB_AUTO_COMMIT DB-__GT__truncate@DB_AUTO_COMMIT
__APIREL__/api_c/db_upgrade.html__OCT__DB_DUPSORT DB-__GT__upgrade@DB_DUPSORT
__APIREL__/api_c/db_upgrade.html__OCT__DB_OLD_VERSION DB-__GT__upgrade@DB_OLD_VERSION
__APIREL__/api_c/db_verify.html__OCT__2 @DB_VERIFY_BAD
@@ -88,41 +100,56 @@ __APIREL__/api_c/dbt_class.html__OCT__DB_DBT_REALLOC DBT@DB_DBT_REALLOC
__APIREL__/api_c/dbt_class.html__OCT__3 @DB_BUFFER_SMALL
__APIREL__/api_c/dbt_class.html__OCT__DB_DBT_USERMEM DBT@DB_DBT_USERMEM
__APIREL__/api_c/dbt_class.html__OCT__DB_DBT_PARTIAL DBT@DB_DBT_PARTIAL
+__APIREL__/api_c/dbt_class.html__OCT__DB_DBT_APPMALLOC DBT@DB_DBT_APPMALLOC
+__APIREL__/api_c/dbt_class.html__OCT__DB_DBT_MULTIPLE DBT@DB_DBT_MULTIPLE
__APIREL__/api_c/dbt_bulk.html__OCT__2 @bulk retrieval
__APIREL__/api_c/dbt_bulk.html__OCT__DB_MULTIPLE_INIT DBT@DB_MULTIPLE_INIT
__APIREL__/api_c/dbt_bulk.html__OCT__DB_MULTIPLE_NEXT DBT@DB_MULTIPLE_NEXT
__APIREL__/api_c/dbt_bulk.html__OCT__DB_MULTIPLE_KEY_NEXT DBT@DB_MULTIPLE_KEY_NEXT
__APIREL__/api_c/dbt_bulk.html__OCT__DB_MULTIPLE_RECNO_NEXT DBT@DB_MULTIPLE_RECNO_NEXT
-__APIREL__/api_c/dbc_dup.html__OCT__DB_POSITION DBcursor-__GT__c_dup@DB_POSITION
-__APIREL__/api_c/dbc_get.html__OCT__DB_CURRENT DBcursor-__GT__c_get@DB_CURRENT
-__APIREL__/api_c/dbc_get.html__OCT__DB_FIRST DBcursor-__GT__c_get@DB_FIRST
-__APIREL__/api_c/dbc_get.html__OCT__DB_GET_BOTH DBcursor-__GT__c_get@DB_GET_BOTH
-__APIREL__/api_c/dbc_get.html__OCT__DB_GET_BOTH_RANGE DBcursor-__GT__c_get@DB_GET_BOTH_RANGE
-__APIREL__/api_c/dbc_get.html__OCT__DB_GET_RECNO DBcursor-__GT__c_get@DB_GET_RECNO
-__APIREL__/api_c/dbc_get.html__OCT__DB_JOIN_ITEM DBcursor-__GT__c_get@DB_JOIN_ITEM
-__APIREL__/api_c/dbc_get.html__OCT__DB_LAST DBcursor-__GT__c_get@DB_LAST
-__APIREL__/api_c/dbc_get.html__OCT__DB_NEXT DBcursor-__GT__c_get@DB_NEXT
-__APIREL__/api_c/dbc_get.html__OCT__DB_NEXT_DUP DBcursor-__GT__c_get@DB_NEXT_DUP
-__APIREL__/api_c/dbc_get.html__OCT__DB_NEXT_NODUP DBcursor-__GT__c_get@DB_NEXT_NODUP
-__APIREL__/api_c/dbc_get.html__OCT__DB_PREV DBcursor-__GT__c_get@DB_PREV
-__APIREL__/api_c/dbc_get.html__OCT__DB_PREV_NODUP DBcursor-__GT__c_get@DB_PREV_NODUP
-__APIREL__/api_c/dbc_get.html__OCT__DB_SET DBcursor-__GT__c_get@DB_SET
-__APIREL__/api_c/dbc_get.html__OCT__DB_SET_RANGE DBcursor-__GT__c_get@DB_SET_RANGE
-__APIREL__/api_c/dbc_get.html__OCT__DB_SET_RECNO DBcursor-__GT__c_get@DB_SET_RECNO
-__APIREL__/api_c/dbc_get.html__OCT__DB_DIRTY_READ DBcursor-__GT__c_get@DB_DIRTY_READ
-__APIREL__/api_c/dbc_get.html__OCT__DB_MULTIPLE DBcursor-__GT__c_get@DB_MULTIPLE
-__APIREL__/api_c/dbc_get.html__OCT__DB_MULTIPLE_KEY DBcursor-__GT__c_get@DB_MULTIPLE_KEY
-__APIREL__/api_c/dbc_get.html__OCT__DB_RMW DBcursor-__GT__c_get@DB_RMW
-__APIREL__/api_c/dbc_put.html__OCT__DB_AFTER DBcursor-__GT__c_put@DB_AFTER
-__APIREL__/api_c/dbc_put.html__OCT__DB_BEFORE DBcursor-__GT__c_put@DB_BEFORE
-__APIREL__/api_c/dbc_put.html__OCT__DB_CURRENT DBcursor-__GT__c_put@DB_CURRENT
-__APIREL__/api_c/dbc_put.html__OCT__DB_KEYFIRST DBcursor-__GT__c_put@DB_KEYFIRST
-__APIREL__/api_c/dbc_put.html__OCT__DB_KEYLAST DBcursor-__GT__c_put@DB_KEYLAST
-__APIREL__/api_c/dbc_put.html__OCT__DB_NODUPDATA DBcursor-__GT__c_put@DB_NODUPDATA
+__APIREL__/api_c/dbc_dup.html__OCT__DB_POSITION DBcursor-__GT__dup@DB_POSITION
+__APIREL__/api_c/dbc_get.html__OCT__DB_CURRENT DBcursor-__GT__get@DB_CURRENT
+__APIREL__/api_c/dbc_get.html__OCT__DB_FIRST DBcursor-__GT__get@DB_FIRST
+__APIREL__/api_c/dbc_get.html__OCT__DB_GET_BOTH DBcursor-__GT__get@DB_GET_BOTH
+__APIREL__/api_c/dbc_get.html__OCT__DB_GET_BOTH_RANGE DBcursor-__GT__get@DB_GET_BOTH_RANGE
+__APIREL__/api_c/dbc_get.html__OCT__DB_GET_RECNO DBcursor-__GT__get@DB_GET_RECNO
+__APIREL__/api_c/dbc_get.html__OCT__DB_JOIN_ITEM DBcursor-__GT__get@DB_JOIN_ITEM
+__APIREL__/api_c/dbc_get.html__OCT__DB_LAST DBcursor-__GT__get@DB_LAST
+__APIREL__/api_c/dbc_get.html__OCT__DB_NEXT DBcursor-__GT__get@DB_NEXT
+__APIREL__/api_c/dbc_get.html__OCT__DB_NEXT_DUP DBcursor-__GT__get@DB_NEXT_DUP
+__APIREL__/api_c/dbc_get.html__OCT__DB_NEXT_NODUP DBcursor-__GT__get@DB_NEXT_NODUP
+__APIREL__/api_c/dbc_get.html__OCT__DB_PREV DBcursor-__GT__get@DB_PREV
+__APIREL__/api_c/dbc_get.html__OCT__DB_PREV_DUP DBcursor-__GT__get@DB_PREV_DUP
+__APIREL__/api_c/dbc_get.html__OCT__DB_PREV_NODUP DBcursor-__GT__get@DB_PREV_NODUP
+__APIREL__/api_c/dbc_get.html__OCT__DB_SET DBcursor-__GT__get@DB_SET
+__APIREL__/api_c/dbc_get.html__OCT__DB_SET_RANGE DBcursor-__GT__get@DB_SET_RANGE
+__APIREL__/api_c/dbc_get.html__OCT__DB_SET_RECNO DBcursor-__GT__get@DB_SET_RECNO
+__APIREL__/api_c/dbc_get.html__OCT__DB_READ_UNCOMMITTED DBcursor-__GT__get@DB_READ_UNCOMMITTED
+__APIREL__/api_c/dbc_get.html__OCT__DB_MULTIPLE DBcursor-__GT__get@DB_MULTIPLE
+__APIREL__/api_c/dbc_get.html__OCT__DB_MULTIPLE_KEY DBcursor-__GT__get@DB_MULTIPLE_KEY
+__APIREL__/api_c/dbc_get.html__OCT__DB_RMW DBcursor-__GT__get@DB_RMW
+__APIREL__/api_c/dbc_put.html__OCT__DB_AFTER DBcursor-__GT__put@DB_AFTER
+__APIREL__/api_c/dbc_put.html__OCT__DB_BEFORE DBcursor-__GT__put@DB_BEFORE
+__APIREL__/api_c/dbc_put.html__OCT__DB_CURRENT DBcursor-__GT__put@DB_CURRENT
+__APIREL__/api_c/dbc_put.html__OCT__DB_KEYFIRST DBcursor-__GT__put@DB_KEYFIRST
+__APIREL__/api_c/dbc_put.html__OCT__DB_KEYLAST DBcursor-__GT__put@DB_KEYLAST
+__APIREL__/api_c/dbc_put.html__OCT__DB_NODUPDATA DBcursor-__GT__put@DB_NODUPDATA
+__APIREL__/api_c/dbc_set_priority.html__OCT__DB_PRIORITY_VERY_LOW DBcursor-__GT__set_priority@DB_PRIORITY_VERY_LOW
+__APIREL__/api_c/dbc_set_priority.html__OCT__DB_PRIORITY_LOW DBcursor-__GT__set_priority@DB_PRIORITY_LOW
+__APIREL__/api_c/dbc_set_priority.html__OCT__DB_PRIORITY_DEFAULT DBcursor-__GT__set_priority@DB_PRIORITY_DEFAULT
+__APIREL__/api_c/dbc_set_priority.html__OCT__DB_PRIORITY_HIGH DBcursor-__GT__set_priority@DB_PRIORITY_HIGH
+__APIREL__/api_c/dbc_set_priority.html__OCT__DB_PRIORITY_VERY_HIGH DBcursor-__GT__set_priority@DB_PRIORITY_VERY_HIGH
__APIREL__/api_c/env_class.html__OCT__DB_RPCCLIENT db_env_create@DB_RPCCLIENT
__APIREL__/api_c/env_dbremove.html__OCT__DB_AUTO_COMMIT DB_ENV-__GT__dbremove@DB_AUTO_COMMIT
__APIREL__/api_c/env_dbrename.html__OCT__DB_AUTO_COMMIT DB_ENV-__GT__dbrename@DB_AUTO_COMMIT
-__APIREL__/api_c/env_open.html__OCT__DB_JOINENV DB_ENV-__GT__open@DB_JOINENV
+__APIREL__/api_c/env_event_notify.html__OCT__DB_EVENT_PANIC DB_ENV-__GT__set_event_notify@DB_EVENT_PANIC
+__APIREL__/api_c/env_event_notify.html__OCT__DB_EVENT_REP_CLIENT DB_ENV-__GT__set_event_notify@DB_EVENT_REP_CLIENT
+__APIREL__/api_c/env_event_notify.html__OCT__DB_EVENT_REP_ELECTED DB_ENV-__GT__set_event_notify@DB_EVENT_REP_ELECTED
+__APIREL__/api_c/env_event_notify.html__OCT__DB_EVENT_REP_MASTER DB_ENV-__GT__set_event_notify@DB_EVENT_REP_MASTER
+__APIREL__/api_c/env_event_notify.html__OCT__DB_EVENT_REP_NEWMASTER DB_ENV-__GT__set_event_notify@DB_EVENT_REP_NEWMASTER
+__APIREL__/api_c/env_event_notify.html__OCT__DB_EVENT_REP_PERM_FAILED DB_ENV-__GT__set_event_notify@DB_EVENT_REP_PERM_FAILED
+__APIREL__/api_c/env_event_notify.html__OCT__DB_EVENT_REP_STARTUPDONE DB_ENV-__GT__set_event_notify@DB_EVENT_REP_STARTUPDONE
+__APIREL__/api_c/env_event_notify.html__OCT__DB_EVENT_WRITE_FAILED DB_ENV-__GT__set_event_notify@DB_EVENT_WRITE_FAILED
__APIREL__/api_c/env_open.html__OCT__DB_INIT_CDB DB_ENV-__GT__open@DB_INIT_CDB
__APIREL__/api_c/env_open.html__OCT__DB_INIT_LOCK DB_ENV-__GT__open@DB_INIT_LOCK
__APIREL__/api_c/env_open.html__OCT__DB_INIT_LOG DB_ENV-__GT__open@DB_INIT_LOG
@@ -137,6 +164,7 @@ __APIREL__/api_c/env_open.html__OCT__DB_USE_ENVIRON_ROOT DB_ENV-__GT__open@DB_US
__APIREL__/api_c/env_open.html__OCT__DB_CREATE DB_ENV-__GT__open@DB_CREATE
__APIREL__/api_c/env_open.html__OCT__DB_LOCKDOWN DB_ENV-__GT__open@DB_LOCKDOWN
__APIREL__/api_c/env_open.html__OCT__DB_PRIVATE DB_ENV-__GT__open@DB_PRIVATE
+__APIREL__/api_c/env_open.html__OCT__DB_REGISTER DB_ENV-__GT__open@DB_REGISTER
__APIREL__/api_c/env_open.html__OCT__DB_SYSTEM_MEM DB_ENV-__GT__open@DB_SYSTEM_MEM
__APIREL__/api_c/env_open.html__OCT__DB_THREAD DB_ENV-__GT__open@DB_THREAD
__APIREL__/api_c/env_open.html__OCT__3 @DB_VERSION_MISMATCH
@@ -158,46 +186,57 @@ __APIREL__/api_c/env_set_flags.html__OCT__3 turn off system @buffering for datab
__APIREL__/api_c/env_set_flags.html__OCT__DB_DIRECT_DB DB_ENV-__GT__set_flags@DB_DIRECT_DB
__APIREL__/api_c/env_set_flags.html__OCT__4 turn off system @buffering for log files
__APIREL__/api_c/env_set_flags.html__OCT__DB_DIRECT_LOG DB_ENV-__GT__set_flags@DB_DIRECT_LOG
-__APIREL__/api_c/env_set_flags.html__OCT__5 turn off system @buffering for log files
+__APIREL__/api_c/env_set_flags.html__OCT__5 turn off system @buffering for database files
+__APIREL__/api_c/env_set_flags.html__OCT__DB_DSYNC_DB DB_ENV-__GT__set_flags@DB_DSYNC_DB
+__APIREL__/api_c/env_set_flags.html__OCT__6 turn off system @buffering for log files
__APIREL__/api_c/env_set_flags.html__OCT__DB_DSYNC_LOG DB_ENV-__GT__set_flags@DB_DSYNC_LOG
-__APIREL__/api_c/env_set_flags.html__OCT__6 automatic @log file removal
+__APIREL__/api_c/env_set_flags.html__OCT__7 automatic @log file removal
__APIREL__/api_c/env_set_flags.html__OCT__DB_LOG_AUTOREMOVE DB_ENV-__GT__set_flags@DB_LOG_AUTOREMOVE
-__APIREL__/api_c/env_set_flags.html__OCT__7 in memory @logs
+__APIREL__/api_c/env_set_flags.html__OCT__8 in memory @logs
__APIREL__/api_c/env_set_flags.html__OCT__DB_LOG_INMEMORY DB_ENV-__GT__set_flags@DB_LOG_INMEMORY
__APIREL__/api_c/env_set_flags.html__OCT__DB_LOG_BUFFER_FULL DB_ENV-__GT__set_flags@DB_LOG_BUFFER_FULL
-__APIREL__/api_c/env_set_flags.html__OCT__8 ignore @locking
+__APIREL__/api_c/env_set_flags.html__OCT__DB_MULTIVERSION DB_ENV-__GT__set_flags@DB_MULTIVERSION
+__APIREL__/api_c/env_set_flags.html__OCT__9 ignore @locking
__APIREL__/api_c/env_set_flags.html__OCT__DB_NOLOCKING DB_ENV-__GT__set_flags@DB_NOLOCKING
-__APIREL__/api_c/env_set_flags.html__OCT__9 turn off database file @memory mapping
+__APIREL__/api_c/env_set_flags.html__OCT__10 turn off database file @memory mapping
__APIREL__/api_c/env_set_flags.html__OCT__DB_NOMMAP DB_ENV-__GT__set_flags@DB_NOMMAP
-__APIREL__/api_c/env_set_flags.html__OCT__10 ignore database environment @panic
+__APIREL__/api_c/env_set_flags.html__OCT__11 ignore database environment @panic
__APIREL__/api_c/env_set_flags.html__OCT__DB_NOPANIC DB_ENV-__GT__set_flags@DB_NOPANIC
__APIREL__/api_c/env_set_flags.html__OCT__DB_OVERWRITE DB_ENV-__GT__set_flags@DB_OVERWRITE
-__APIREL__/api_c/env_set_flags.html__OCT__11 turn off access to a database @environment
+__APIREL__/api_c/env_set_flags.html__OCT__12 turn off access to a database @environment
__APIREL__/api_c/env_set_flags.html__OCT__DB_PANIC_ENVIRONMENT DB_ENV-__GT__set_flags@DB_PANIC_ENVIRONMENT
-__APIREL__/api_c/env_set_flags.html__OCT__12 fault database @environment in during open
+__APIREL__/api_c/env_set_flags.html__OCT__13 fault database @environment in during open
__APIREL__/api_c/env_set_flags.html__OCT__DB_REGION_INIT DB_ENV-__GT__set_flags@DB_REGION_INIT
__APIREL__/api_c/env_set_flags.html__OCT__DB_TIME_NOTGRANTED DB_ENV-__GT__set_flags@DB_TIME_NOTGRANTED
-__APIREL__/api_c/env_set_flags.html__OCT__13 turn off synchronous @transaction commit
-__APIREL__/api_c/env_set_flags.html__OCT__DB_TXN_NOSYNC DB_ENV-__GT__set_flags@DB_TXN_NOSYNC
__APIREL__/api_c/env_set_flags.html__OCT__14 turn off synchronous @transaction commit
+__APIREL__/api_c/env_set_flags.html__OCT__DB_TXN_NOSYNC DB_ENV-__GT__set_flags@DB_TXN_NOSYNC
+__APIREL__/api_c/env_set_flags.html__OCT__DB_TXN_NOWAIT DB_ENV-__GT__set_flags@DB_TXN_NOWAIT
+__APIREL__/api_c/env_set_flags.html__OCT__DB_TXN_SNAPSHOT DB_ENV-__GT__set_flags@DB_TXN_SNAPSHOT
+__APIREL__/api_c/env_set_flags.html__OCT__15 turn off synchronous @transaction commit
__APIREL__/api_c/env_set_flags.html__OCT__DB_TXN_WRITE_NOSYNC DB_ENV-__GT__set_flags@DB_TXN_WRITE_NOSYNC
-__APIREL__/api_c/env_set_flags.html__OCT__15 configure for @stress testing
+__APIREL__/api_c/env_set_flags.html__OCT__16 configure for @stress testing
__APIREL__/api_c/env_set_flags.html__OCT__DB_YIELDCPU DB_ENV-__GT__set_flags@DB_YIELDCPU
+__APIREL__/api_c/env_set_isalive.html__OCT__DB_MUTEX_PROCESS_ONLY DB_ENV-__GT__set_isalive@DB_MUTEX_PROCESS_ONLY
__APIREL__/api_c/env_set_rpc_server.html__OCT__DB_NOSERVER DB_ENV-__GT__set_rpc_server@DB_NOSERVER
__APIREL__/api_c/env_set_rpc_server.html__OCT__DB_NOSERVER_ID DB_ENV-__GT__set_rpc_server@DB_NOSERVER_ID
__APIREL__/api_c/env_set_rpc_server.html__OCT__DB_NOSERVER_HOME DB_ENV-__GT__set_rpc_server@DB_NOSERVER_HOME
__APIREL__/api_c/env_set_rpc_server.html__OCT__2 @DB_NOSERVER
__APIREL__/api_c/env_set_rpc_server.html__OCT__3 @DB_NOSERVER_ID
+__APIREL__/api_c/env_set_thread_id_string.html__OCT__2 @DB_NOSERVER
__APIREL__/api_c/env_set_timeout.html__OCT__DB_SET_LOCK_TIMEOUT DB_ENV-__GT__set_timeout@DB_SET_LOCK_TIMEOUT
__APIREL__/api_c/env_set_timeout.html__OCT__DB_SET_TXN_TIMEOUT DB_ENV-__GT__set_timeout@DB_SET_TXN_TIMEOUT
__APIREL__/api_c/env_set_timeout.html__OCT__DB_SET_LOCK_TIMEOUT DB_ENV-__GT__set_timeout@DB_SET_LOCK_TIMEOUT
__APIREL__/api_c/env_set_timeout.html__OCT__DB_SET_TXN_TIMEOUT DB_ENV-__GT__set_timeout@DB_SET_TXN_TIMEOUT
__APIREL__/api_c/env_set_tmp_dir.html__OCT__2 @temporary files
__APIREL__/api_c/env_set_verbose.html__OCT__DB_VERB_DEADLOCK DB_ENV-__GT__set_verbose@DB_VERB_DEADLOCK
+__APIREL__/api_c/env_set_verbose.html__OCT__DB_VERB_FILEOPS DB_ENV-__GT__set_verbose@DB_VERB_FILEOPS
+__APIREL__/api_c/env_set_verbose.html__OCT__DB_VERB_FILEOPS_ALL DB_ENV-__GT__set_verbose@DB_VERB_FILEOPS_ALL
__APIREL__/api_c/env_set_verbose.html__OCT__DB_VERB_RECOVERY DB_ENV-__GT__set_verbose@DB_VERB_RECOVERY
+__APIREL__/api_c/env_set_verbose.html__OCT__DB_VERB_REGISTER DB_ENV-__GT__set_verbose@DB_VERB_REGISTER
__APIREL__/api_c/env_set_verbose.html__OCT__DB_VERB_REPLICATION DB_ENV-__GT__set_verbose@DB_VERB_REPLICATION
__APIREL__/api_c/env_set_verbose.html__OCT__DB_VERB_WAITSFOR DB_ENV-__GT__set_verbose@DB_VERB_WAITSFOR
__APIREL__/api_c/env_stat.html__OCT__DB_STAT_ALL DB_ENV-__GT__stat_print@DB_STAT_ALL
+__APIREL__/api_c/env_stat.html__OCT__DB_STAT_CLEAR DB_ENV-__GT__stat_print@DB_STAT_CLEAR
__APIREL__/api_c/env_stat.html__OCT__DB_STAT_SUBSYSTEM DB_ENV-__GT__stat_print@DB_STAT_SUBSYSTEM
__APIREL__/api_c/env_set_lk_detect.html__OCT__DB_LOCK_DEFAULT DB_ENV-__GT__set_lk_detect@DB_LOCK_DEFAULT
__APIREL__/api_c/env_set_lk_detect.html__OCT__DB_LOCK_EXPIRE DB_ENV-__GT__set_lk_detect@DB_LOCK_EXPIRE
@@ -220,6 +259,7 @@ __APIREL__/api_c/lock_detect.html__OCT__DB_LOCK_YOUNGEST DB_ENV-__GT__lock_detec
__APIREL__/api_c/lock_get.html__OCT__DB_LOCK_NOWAIT DB_ENV-__GT__lock_get@DB_LOCK_NOWAIT
__APIREL__/api_c/lock_stat.html__OCT__DB_STAT_CLEAR DB_ENV-__GT__lock_stat@DB_STAT_CLEAR
__APIREL__/api_c/lock_stat.html__OCT__DB_STAT_ALL DB_ENV-__GT__lock_stat@DB_STAT_ALL
+__APIREL__/api_c/lock_stat.html__OCT__DB_STAT_CLEAR DB_ENV-__GT__lock_stat@DB_STAT_CLEAR
__APIREL__/api_c/lock_stat.html__OCT__DB_STAT_LOCK_CONF DB_ENV-__GT__lock_stat@DB_STAT_LOCK_CONF
__APIREL__/api_c/lock_stat.html__OCT__DB_STAT_LOCK_LOCKERS DB_ENV-__GT__lock_stat@DB_STAT_LOCK_LOCKERS
__APIREL__/api_c/lock_stat.html__OCT__DB_STAT_LOCK_OBJECTS DB_ENV-__GT__lock_stat@DB_STAT_LOCK_OBJECTS
@@ -247,6 +287,7 @@ __APIREL__/api_c/log_archive.html__OCT__DB_ARCH_REMOVE DB_ENV-__GT__log_archive@
__APIREL__/api_c/log_put.html__OCT__DB_FLUSH DB_ENV-__GT__log_put@DB_FLUSH
__APIREL__/api_c/log_stat.html__OCT__DB_STAT_CLEAR DB_ENV-__GT__log_stat@DB_STAT_CLEAR
__APIREL__/api_c/log_stat.html__OCT__DB_STAT_ALL DB_ENV-__GT__log_stat@DB_STAT_ALL
+__APIREL__/api_c/log_stat.html__OCT__DB_STAT_CLEAR DB_ENV-__GT__log_stat@DB_STAT_CLEAR
__APIREL__/api_c/logc_get.html__OCT__DB_CURRENT DB_LOGC-__GT__get@DB_CURRENT
__APIREL__/api_c/logc_get.html__OCT__DB_FIRST DB_LOGC-__GT__get@DB_FIRST
__APIREL__/api_c/logc_get.html__OCT__DB_LAST DB_LOGC-__GT__get@DB_LAST
@@ -255,20 +296,23 @@ __APIREL__/api_c/logc_get.html__OCT__DB_PREV DB_LOGC-__GT__get@DB_PREV
__APIREL__/api_c/logc_get.html__OCT__DB_SET DB_LOGC-__GT__get@DB_SET
__APIREL__/api_c/memp_fget.html__OCT__2 @DB_PAGE_NOTFOUND
__APIREL__/api_c/memp_fget.html__OCT__DB_MPOOL_CREATE DB_MPOOLFILE-__GT__get@DB_MPOOL_CREATE
+__APIREL__/api_c/memp_fget.html__OCT__DB_MPOOL_DIRTY DB_MPOOLFILE-__GT__get@DB_MPOOL_DIRTY
+__APIREL__/api_c/memp_fget.html__OCT__DB_MPOOL_EDIT DB_MPOOLFILE-__GT__get@DB_MPOOL_EDIT
__APIREL__/api_c/memp_fget.html__OCT__DB_MPOOL_LAST DB_MPOOLFILE-__GT__get@DB_MPOOL_LAST
__APIREL__/api_c/memp_fget.html__OCT__DB_MPOOL_NEW DB_MPOOLFILE-__GT__get@DB_MPOOL_NEW
__APIREL__/api_c/memp_fopen.html__OCT__DB_CREATE DB_MPOOLFILE-__GT__open@DB_CREATE
__APIREL__/api_c/memp_fopen.html__OCT__2 turn off system @buffering
__APIREL__/api_c/memp_fopen.html__OCT__DB_DIRECT DB_MPOOLFILE-__GT__open@DB_DIRECT
+__APIREL__/api_c/memp_fopen.html__OCT__DB_MULTIVERSION DB_MPOOLFILE-__GT__open@DB_MULTIVERSION
__APIREL__/api_c/memp_fopen.html__OCT__DB_NOMMAP DB_MPOOLFILE-__GT__open@DB_NOMMAP
__APIREL__/api_c/memp_fopen.html__OCT__DB_ODDFILESIZE DB_MPOOLFILE-__GT__open@DB_ODDFILESIZE
__APIREL__/api_c/memp_fopen.html__OCT__DB_RDONLY DB_MPOOLFILE-__GT__open@DB_RDONLY
-__APIREL__/api_c/memp_fput.html__OCT__DB_MPOOL_CLEAN DB_MPOOLFILE-__GT__put@DB_MPOOL_CLEAN
-__APIREL__/api_c/memp_fput.html__OCT__DB_MPOOL_DIRTY DB_MPOOLFILE-__GT__put@DB_MPOOL_DIRTY
-__APIREL__/api_c/memp_fput.html__OCT__DB_MPOOL_DISCARD DB_MPOOLFILE-__GT__put@DB_MPOOL_DISCARD
-__APIREL__/api_c/memp_fset.html__OCT__DB_MPOOL_CLEAN DB_MPOOLFILE-__GT__set@DB_MPOOL_CLEAN
-__APIREL__/api_c/memp_fset.html__OCT__DB_MPOOL_DIRTY DB_MPOOLFILE-__GT__set@DB_MPOOL_DIRTY
-__APIREL__/api_c/memp_fset.html__OCT__DB_MPOOL_DISCARD DB_MPOOLFILE-__GT__set@DB_MPOOL_DISCARD
+__APIREL__/api_c/memp_fput.html__OCT__DB_PRIORITY_UNCHANGED DB_MPOOLFILE-__GT__put@DB_PRIORITY_UNCHANGED
+__APIREL__/api_c/memp_fput.html__OCT__DB_PRIORITY_VERY_LOW DB_MPOOLFILE-__GT__put@DB_PRIORITY_VERY_LOW
+__APIREL__/api_c/memp_fput.html__OCT__DB_PRIORITY_LOW DB_MPOOLFILE-__GT__put@DB_PRIORITY_LOW
+__APIREL__/api_c/memp_fput.html__OCT__DB_PRIORITY_DEFAULT DB_MPOOLFILE-__GT__put@DB_PRIORITY_DEFAULT
+__APIREL__/api_c/memp_fput.html__OCT__DB_PRIORITY_HIGH DB_MPOOLFILE-__GT__put@DB_PRIORITY_HIGH
+__APIREL__/api_c/memp_fput.html__OCT__DB_PRIORITY_VERY_HIGH DB_MPOOLFILE-__GT__put@DB_PRIORITY_VERY_HIGH
__APIREL__/api_c/memp_set_flags.html__OCT__DB_MPOOL_NOFILE DB_MPOOLFILE-__GT__set_flags@DB_MPOOL_NOFILE
__APIREL__/api_c/memp_set_flags.html__OCT__DB_MPOOL_UNLINK DB_MPOOLFILE-__GT__set_flags@DB_MPOOL_UNLINK
__APIREL__/api_c/memp_set_priority.html__OCT__DB_PRIORITY_VERY_LOW DB_MPOOLFILE-__GT__set_priority@DB_PRIORITY_VERY_LOW
@@ -277,42 +321,77 @@ __APIREL__/api_c/memp_set_priority.html__OCT__DB_PRIORITY_DEFAULT DB_MPOOLFILE-_
__APIREL__/api_c/memp_set_priority.html__OCT__DB_PRIORITY_HIGH DB_MPOOLFILE-__GT__set_priority@DB_PRIORITY_HIGH
__APIREL__/api_c/memp_set_priority.html__OCT__DB_PRIORITY_VERY_HIGH DB_MPOOLFILE-__GT__set_priority@DB_PRIORITY_VERY_HIGH
__APIREL__/api_c/memp_stat.html__OCT__DB_STAT_CLEAR DB_ENV-__GT__memp_stat@DB_STAT_CLEAR
-__APIREL__/api_c/memp_stat.html__OCT__DB_STAT_CLEAR DB_ENV-__GT__memp_stat@DB_STAT_CLEAR
__APIREL__/api_c/memp_stat.html__OCT__DB_STAT_ALL DB_ENV-__GT__memp_stat@DB_STAT_ALL
+__APIREL__/api_c/memp_stat.html__OCT__DB_STAT_CLEAR DB_ENV-__GT__memp_stat@DB_STAT_CLEAR
__APIREL__/api_c/memp_stat.html__OCT__DB_STAT_MEMP_HASH DB_ENV-__GT__memp_stat@DB_STAT_MEMP_HASH
+__APIREL__/api_c/mutex_alloc.html__OCT__DB_MUTEX_PROCESS_ONLY DB_ENV-__GT__mutex_alloc@DB_MUTEX_PROCESS_ONLY
+__APIREL__/api_c/mutex_alloc.html__OCT__DB_MUTEX_SELF_BLOCK DB_ENV-__GT__mutex_alloc@DB_MUTEX_SELF_BLOCK
+__APIREL__/api_c/mutex_stat.html__OCT__DB_STAT_CLEAR DB_ENV-__GT__mutex_stat@DB_STAT_CLEAR
+__APIREL__/api_c/mutex_stat.html__OCT__DB_STAT_ALL DB_ENV-__GT__mutex_stat@DB_STAT_ALL
+__APIREL__/api_c/mutex_stat.html__OCT__DB_STAT_CLEAR DB_ENV-__GT__mutex_stat@DB_STAT_CLEAR
+__APIREL__/api_c/rep_config.html__OCT__DB_REP_CONF_BULK DB_ENV-__GT__rep_set_config@DB_REP_CONF_BULK
+__APIREL__/api_c/rep_config.html__OCT__DB_REP_CONF_DELAYCLIENT DB_ENV-__GT__rep_set_config@DB_REP_CONF_DELAYCLIENT
+__APIREL__/api_c/rep_config.html__OCT__DB_REP_CONF_NOAUTOINIT DB_ENV-__GT__rep_set_config@DB_REP_CONF_NOAUTOINIT
+__APIREL__/api_c/rep_config.html__OCT__DB_REP_CONF_NOWAIT DB_ENV-__GT__rep_set_config@DB_REP_CONF_NOWAIT
__APIREL__/api_c/rep_elect.html__OCT__2 @DB_REP_UNAVAIL
__APIREL__/api_c/rep_message.html__OCT__DB_REP_DUPMASTER DB_ENV-__GT__rep_process_message@DB_REP_DUPMASTER
__APIREL__/api_c/rep_message.html__OCT__DB_REP_HOLDELECTION DB_ENV-__GT__rep_process_message@DB_REP_HOLDELECTION
+__APIREL__/api_c/rep_message.html__OCT__DB_REP_IGNORE DB_ENV-__GT__rep_process_message@DB_REP_IGNORE
__APIREL__/api_c/rep_message.html__OCT__DB_REP_ISPERM DB_ENV-__GT__rep_process_message@DB_REP_ISPERM
-__APIREL__/api_c/rep_message.html__OCT__DB_REP_NEWMASTER DB_ENV-__GT__rep_process_message@DB_REP_NEWMASTER
+__APIREL__/api_c/rep_message.html__OCT__DB_REP_JOIN_FAILURE DB_ENV-__GT__rep_process_message@DB_REP_JOIN_FAILURE
__APIREL__/api_c/rep_message.html__OCT__DB_REP_NEWSITE DB_ENV-__GT__rep_process_message@DB_REP_NEWSITE
__APIREL__/api_c/rep_message.html__OCT__DB_REP_NOTPERM DB_ENV-__GT__rep_process_message@DB_REP_NOTPERM
-__APIREL__/api_c/rep_message.html__OCT__DB_REP_STARTUPDONE DB_ENV-__GT__rep_process_message@DB_REP_STARTUPDONE
__APIREL__/api_c/rep_start.html__OCT__DB_REP_CLIENT DB_ENV-__GT__rep_start@DB_REP_CLIENT
__APIREL__/api_c/rep_start.html__OCT__DB_REP_MASTER DB_ENV-__GT__rep_start@DB_REP_MASTER
__APIREL__/api_c/rep_stat.html__OCT__DB_STAT_CLEAR DB_ENV-__GT__rep_stat@DB_STAT_CLEAR
__APIREL__/api_c/rep_stat.html__OCT__DB_STAT_ALL DB_ENV-__GT__rep_stat@DB_STAT_ALL
+__APIREL__/api_c/rep_stat.html__OCT__DB_STAT_CLEAR DB_ENV-__GT__rep_stat@DB_STAT_CLEAR
+__APIREL__/api_c/rep_timeout.html__OCT__DB_REP_ACK_TIMEOUT DB_ENV-__GT__rep_set_timeout@DB_REP_ACK_TIMEOUT
+__APIREL__/api_c/rep_timeout.html__OCT__DB_REP_CHECKPOINT_DELAY DB_ENV-__GT__rep_set_timeout@DB_REP_CHECKPOINT_DELAY
+__APIREL__/api_c/rep_timeout.html__OCT__DB_REP_CONNECTION_RETRY DB_ENV-__GT__rep_set_timeout@DB_REP_CONNECTION_RETRY
+__APIREL__/api_c/rep_timeout.html__OCT__DB_REP_ELECTION_TIMEOUT DB_ENV-__GT__rep_set_timeout@DB_REP_ELECTION_TIMEOUT
+__APIREL__/api_c/rep_timeout.html__OCT__DB_REP_ELECTION_RETRY DB_ENV-__GT__rep_set_timeout@DB_REP_ELECTION_RETRY
+__APIREL__/api_c/rep_timeout.html__OCT__DB_REP_FULL_ELECTION_TIMEOUT DB_ENV-__GT__rep_set_timeout@DB_REP_FULL_ELECTION_TIMEOUT
__APIREL__/api_c/rep_transport.html__OCT__2 @DB_EID_BROADCAST
-__APIREL__/api_c/rep_transport.html__OCT__DB_REP_NOBUFFER DB_ENV-__GT__set_rep_transport@DB_REP_NOBUFFER
-__APIREL__/api_c/rep_transport.html__OCT__DB_REP_PERMANENT DB_ENV-__GT__set_rep_transport@DB_REP_PERMANENT
-__APIREL__/api_c/seq_get.html__OCT__DB_AUTO_COMMIT DB_SEQUENCE-__GT__get@DB_AUTO_COMMIT
+__APIREL__/api_c/rep_transport.html__OCT__DB_REP_ANYWHERE DB_ENV-__GT__rep_set_transport@DB_REP_ANYWHERE
+__APIREL__/api_c/rep_transport.html__OCT__DB_REP_NOBUFFER DB_ENV-__GT__rep_set_transport@DB_REP_NOBUFFER
+__APIREL__/api_c/rep_transport.html__OCT__DB_REP_PERMANENT DB_ENV-__GT__rep_set_transport@DB_REP_PERMANENT
+__APIREL__/api_c/rep_transport.html__OCT__DB_REP_REREQUEST DB_ENV-__GT__rep_set_transport@DB_REP_REREQUEST
+__APIREL__/api_c/repmgr_ack_policy.html__OCT__DB_REPMGR_ACKS_ALL DB_ENV-__GT__repmgr_set_ack_policy@DB_REPMGR_ACKS_ALL
+__APIREL__/api_c/repmgr_ack_policy.html__OCT__DB_REPMGR_ACKS_ALL_PEERS DB_ENV-__GT__repmgr_set_ack_policy@DB_REPMGR_ACKS_ALL_PEERS
+__APIREL__/api_c/repmgr_ack_policy.html__OCT__DB_REPMGR_ACKS_NONE DB_ENV-__GT__repmgr_set_ack_policy@DB_REPMGR_ACKS_NONE
+__APIREL__/api_c/repmgr_ack_policy.html__OCT__DB_REPMGR_ACKS_ONE DB_ENV-__GT__repmgr_set_ack_policy@DB_REPMGR_ACKS_ONE
+__APIREL__/api_c/repmgr_ack_policy.html__OCT__DB_REPMGR_ACKS_ONE_PEER DB_ENV-__GT__repmgr_set_ack_policy@DB_REPMGR_ACKS_ONE_PEER
+__APIREL__/api_c/repmgr_ack_policy.html__OCT__DB_REPMGR_ACKS_QUORUM DB_ENV-__GT__repmgr_set_ack_policy@DB_REPMGR_ACKS_QUORUM
+__APIREL__/api_c/repmgr_remote_site.html__OCT__DB_REPMGR_PEER DB_ENV-__GT__repmgr_add_remote_site@DB_REPMGR_PEER
+__APIREL__/api_c/repmgr_site_list.html__OCT__DB_REPMGR_CONNECTED DB_ENV-__GT__repmgr_site_list@DB_REPMGR_CONNECTED
+__APIREL__/api_c/repmgr_site_list.html__OCT__DB_REPMGR_DISCONNECTED DB_ENV-__GT__repmgr_site_list@DB_REPMGR_DISCONNECTED
+__APIREL__/api_c/repmgr_start.html__OCT__DB_REP_MASTER DB_ENV-__GT__repmgr_start@DB_REP_MASTER
+__APIREL__/api_c/repmgr_start.html__OCT__DB_REP_CLIENT DB_ENV-__GT__repmgr_start@DB_REP_CLIENT
+__APIREL__/api_c/repmgr_start.html__OCT__DB_REP_ELECTION DB_ENV-__GT__repmgr_start@DB_REP_ELECTION
+__APIREL__/api_c/repmgr_stat.html__OCT__DB_STAT_CLEAR DB_ENV-__GT__repmgr_stat@DB_STAT_CLEAR
+__APIREL__/api_c/repmgr_stat.html__OCT__DB_STAT_ALL DB_ENV-__GT__repmgr_stat@DB_STAT_ALL
+__APIREL__/api_c/repmgr_stat.html__OCT__DB_STAT_CLEAR DB_ENV-__GT__repmgr_stat@DB_STAT_CLEAR
__APIREL__/api_c/seq_get.html__OCT__DB_TXN_NOSYNC DB_SEQUENCE-__GT__get@DB_TXN_NOSYNC
-__APIREL__/api_c/seq_open.html__OCT__DB_AUTO_COMMIT DB_SEQUENCE-__GT__open@DB_AUTO_COMMIT
__APIREL__/api_c/seq_open.html__OCT__DB_CREATE DB_SEQUENCE-__GT__open@DB_CREATE
__APIREL__/api_c/seq_open.html__OCT__DB_EXCL DB_SEQUENCE-__GT__open@DB_EXCL
__APIREL__/api_c/seq_open.html__OCT__DB_THREAD DB_SEQUENCE-__GT__open@DB_THREAD
+__APIREL__/api_c/seq_open.html__OCT__DB_THREAD DB_SEQUENCE-__GT__open@DB_THREAD
+__APIREL__/api_c/seq_remove.html__OCT__DB_TXN_NOSYNC DB_SEQUENCE-__GT__remove@DB_TXN_NOSYNC
__APIREL__/api_c/seq_set_flags.html__OCT__DB_SEQ_DEC DB_SEQUENCE-__GT__set_flags@DB_SEQ_DEC
__APIREL__/api_c/seq_set_flags.html__OCT__DB_SEQ_INC DB_SEQUENCE-__GT__set_flags@DB_SEQ_INC
__APIREL__/api_c/seq_set_flags.html__OCT__DB_SEQ_WRAP DB_SEQUENCE-__GT__set_flags@DB_SEQ_WRAP
__APIREL__/api_c/seq_stat.html__OCT__DB_STAT_CLEAR DB_SEQUENCE-__GT__stat@DB_STAT_CLEAR
__APIREL__/api_c/seq_stat.html__OCT__DB_STAT_CLEAR DB_SEQUENCE-__GT__stat@DB_STAT_CLEAR
-__APIREL__/api_c/seq_remove.html__OCT__DB_AUTO_COMMIT DB_SEQUENCE-__GT__remove@DB_AUTO_COMMIT
-__APIREL__/api_c/seq_remove.html__OCT__DB_TXN_NOSYNC DB_SEQUENCE-__GT__remove@DB_TXN_NOSYNC
-__APIREL__/api_c/txn_begin.html__OCT__DB_DEGREE_2 DB_ENV-__GT__txn_begin@DB_DEGREE_2
-__APIREL__/api_c/txn_begin.html__OCT__DB_DIRTY_READ DB_ENV-__GT__txn_begin@DB_DIRTY_READ
+__APIREL__/api_c/txn_begin.html__OCT__DB_READ_COMMITTED DB_ENV-__GT__txn_begin@DB_READ_COMMITTED
+__APIREL__/api_c/txn_begin.html__OCT__DB_READ_UNCOMMITTED DB_ENV-__GT__txn_begin@DB_READ_UNCOMMITTED
__APIREL__/api_c/txn_begin.html__OCT__DB_TXN_NOSYNC DB_ENV-__GT__txn_begin@DB_TXN_NOSYNC
__APIREL__/api_c/txn_begin.html__OCT__DB_TXN_NOWAIT DB_ENV-__GT__txn_begin@DB_TXN_NOWAIT
+__APIREL__/api_c/txn_begin.html__OCT__DB_TXN_SNAPSHOT DB_ENV-__GT__txn_begin@DB_TXN_SNAPSHOT
+__APIREL__/api_c/txn_begin.html__OCT__DB_LOCK_DEADLOCK DB_ENV-__GT__txn_begin@DB_LOCK_DEADLOCK
__APIREL__/api_c/txn_begin.html__OCT__DB_TXN_SYNC DB_ENV-__GT__txn_begin@DB_TXN_SYNC
+__APIREL__/api_c/txn_begin.html__OCT__DB_TXN_WAIT DB_ENV-__GT__txn_begin@DB_TXN_WAIT
+__APIREL__/api_c/txn_begin.html__OCT__DB_TXN_WRITE_NOSYNC DB_ENV-__GT__txn_begin@DB_TXN_WRITE_NOSYNC
__APIREL__/api_c/txn_checkpoint.html__OCT__DB_FORCE DB_ENV-__GT__txn_checkpoint@DB_FORCE
__APIREL__/api_c/txn_commit.html__OCT__DB_TXN_NOSYNC DB_TXN-__GT__commit@DB_TXN_NOSYNC
__APIREL__/api_c/txn_commit.html__OCT__DB_TXN_SYNC DB_TXN-__GT__commit@DB_TXN_SYNC
@@ -323,6 +402,7 @@ __APIREL__/api_c/txn_set_timeout.html__OCT__DB_SET_LOCK_TIMEOUT DB_TXN-__GT__set
__APIREL__/api_c/txn_set_timeout.html__OCT__DB_SET_TXN_TIMEOUT DB_TXN-__GT__set_timeout@DB_SET_TXN_TIMEOUT
__APIREL__/api_c/txn_stat.html__OCT__DB_STAT_CLEAR DB_ENV-__GT__txn_stat@DB_STAT_CLEAR
__APIREL__/api_c/txn_stat.html__OCT__DB_STAT_ALL DB_ENV-__GT__txn_stat@DB_STAT_ALL
+__APIREL__/api_c/txn_stat.html__OCT__DB_STAT_CLEAR DB_ENV-__GT__txn_stat@DB_STAT_CLEAR
__APIREL__/ref/am/close.html__OCT__2 @closing a database
__APIREL__/ref/am/count.html__OCT__2 @counting data items for a key
__APIREL__/ref/am/curclose.html__OCT__2 @closing a cursor
@@ -375,9 +455,7 @@ __APIREL__/ref/am_misc/dbsizes.html__OCT__2 database @limits
__APIREL__/ref/am_misc/diskspace.html__OCT__2 @disk space requirements
__APIREL__/ref/am_misc/error.html__OCT__2 @error handling
__APIREL__/ref/am_misc/faq.html__OCT__2 @access method FAQ
-__APIREL__/ref/am_misc/faq.html__OCT__3 database @compaction
-__APIREL__/ref/am_misc/faq.html__OCT__4 returning pages to the @filesystem
-__APIREL__/ref/am_misc/faq.html__OCT__5 @double buffering
+__APIREL__/ref/am_misc/faq.html__OCT__3 @double buffering
__APIREL__/ref/am_misc/get_bulk.html__OCT__2 @retrieving records in bulk
__APIREL__/ref/am_misc/partial.html__OCT__2 @partial record storage and retrieval
__APIREL__/ref/am_misc/perm.html__OCT__2 retrieved key/data @permanence
@@ -390,6 +468,8 @@ __APIREL__/ref/am_misc/tune.html__OCT__2 @access method tuning
__APIREL__/ref/am_misc/tune.html__OCT__3 access method @tuning
__APIREL__/ref/arch/apis.html__OCT__2 programmatic @APIs
__APIREL__/ref/arch/utilities.html__OCT__2 @utilities
+__APIREL__/ref/build_brew/intro.html__OCT__2 @building for BREW
+__APIREL__/ref/build_s60/intro.html__OCT__2 @building for S60
__APIREL__/ref/build_unix/aix.html__OCT__2 @AIX
__APIREL__/ref/build_unix/conf.html__OCT__2 @configuring Berkeley DB for UNIX systems
__APIREL__/ref/build_unix/conf.html__OCT__3 configuring Berkeley DB for @UNIX systems
@@ -411,20 +491,21 @@ __APIREL__/ref/build_unix/conf.html__OCT__9 building a utility to dump Berkeley
__APIREL__/ref/build_unix/conf.html__OCT__--enable-dump185 Configuring Berkeley DB@--enable-dump185
__APIREL__/ref/build_unix/conf.html__OCT__10 configuring the @Java API
__APIREL__/ref/build_unix/conf.html__OCT__--enable-java Configuring Berkeley DB@--enable-java
+__APIREL__/ref/build_unix/conf.html__OCT__11 @configuring the fine-grained lock manager
+__APIREL__/ref/build_unix/conf.html__OCT__--enable-fine_grained_lock_manager Configuring Berkeley DB@--enable-fine_grained_lock_manager
__APIREL__/ref/build_unix/conf.html__OCT__--enable-posixmutexes Configuring Berkeley DB@--enable-posixmutexes
-__APIREL__/ref/build_unix/conf.html__OCT__11 configuring a @RPC client/server
+__APIREL__/ref/build_unix/conf.html__OCT__--enable-pthread_api Configuring Berkeley DB@--enable-pthread_api
+__APIREL__/ref/build_unix/conf.html__OCT__12 configuring a @RPC client/server
__APIREL__/ref/build_unix/conf.html__OCT__--enable-rpc Configuring Berkeley DB@--enable-rpc
-__APIREL__/ref/build_unix/conf.html__OCT__12 configuring a small memory @footprint library
+__APIREL__/ref/build_unix/conf.html__OCT__13 configuring a small memory @footprint library
__APIREL__/ref/build_unix/conf.html__OCT__--enable-smallbuild Configuring Berkeley DB@--enable-smallbuild
-__APIREL__/ref/build_unix/conf.html__OCT__13 configuring the @Tcl API
+__APIREL__/ref/build_unix/conf.html__OCT__14 configuring the @Tcl API
__APIREL__/ref/build_unix/conf.html__OCT__--enable-tcl Configuring Berkeley DB@--enable-tcl
-__APIREL__/ref/build_unix/conf.html__OCT__14 configuring the @test suite
+__APIREL__/ref/build_unix/conf.html__OCT__15 configuring the @test suite
__APIREL__/ref/build_unix/conf.html__OCT__--enable-test Configuring Berkeley DB@--enable-test
__APIREL__/ref/build_unix/conf.html__OCT__--enable-uimutexes Configuring Berkeley DB@--enable-uimutexes
__APIREL__/ref/build_unix/conf.html__OCT__--enable-umrw Configuring Berkeley DB@--enable-umrw
__APIREL__/ref/build_unix/conf.html__OCT__--with-mutex=MUTEX Configuring Berkeley DB@--with-mutex=MUTEX
-__APIREL__/ref/build_unix/conf.html__OCT__--with-mutexalign=ALIGNMENT Configuring Berkeley DB@--with-mutexalign=ALIGNMENT
-__APIREL__/ref/build_unix/conf.html__OCT__--with-rpm=ARCHIVE Configuring Berkeley DB@--with-rpm=ARCHIVE
__APIREL__/ref/build_unix/conf.html__OCT__--with-tcl=DIR Configuring Berkeley DB@--with-tcl=DIR
__APIREL__/ref/build_unix/conf.html__OCT__--with-uniquename=NAME Configuring Berkeley DB@--with-uniquename=NAME
__APIREL__/ref/build_unix/flags.html__OCT__2 changing @compile or load options
@@ -443,6 +524,7 @@ __APIREL__/ref/build_unix/notes.html__OCT__2 @building for UNIX FAQ
__APIREL__/ref/build_unix/notes.html__OCT__3 building for @UNIX FAQ
__APIREL__/ref/build_unix/osf1.html__OCT__2 @OSF/1
__APIREL__/ref/build_unix/qnx.html__OCT__2 @QNX
+__APIREL__/ref/build_unix/qnx.html__OCT__--disable-shared QNX@--disable-shared
__APIREL__/ref/build_unix/sco.html__OCT__2 @SCO
__APIREL__/ref/build_unix/shlib.html__OCT__2 @shared libraries
__APIREL__/ref/build_unix/small.html__OCT__--disable-cryptography Building a small memory footprint library@--disable-cryptography
@@ -464,14 +546,16 @@ __APIREL__/ref/build_vxworks/notes.html__OCT__2 @VxWorks notes
__APIREL__/ref/build_win/faq.html__OCT__2 @building for Windows FAQ
__APIREL__/ref/build_win/faq.html__OCT__3 building for @Windows FAQ
__APIREL__/ref/build_win/faq.html__OCT__4 configuring for @MinGW
-__APIREL__/ref/build_win/intro.html__OCT__2 @building for Win32
+__APIREL__/ref/build_win/intro.html__OCT__2 @building for Windows
__APIREL__/ref/build_win/notes.html__OCT__2 @Windows notes
__APIREL__/ref/build_win/test.html__OCT__2 running the @test suite under Windows
__APIREL__/ref/build_win/test.html__OCT__3 running the test suite under @Windows
-__APIREL__/ref/build_win/unicode.html__OCT__2 @Unicode
+__APIREL__/ref/build_wince/faq.html__OCT__2 @building for Windows CE FAQ
+__APIREL__/ref/build_wince/faq.html__OCT__3 building for @Windows CE FAQ
+__APIREL__/ref/build_wince/intro.html__OCT__2 @building for Windows CE
+__APIREL__/ref/build_wince/notes.html__OCT__2 @Windows CE notes
__APIREL__/ref/cam/intro.html__OCT__2 @Concurrent Data Store
__APIREL__/ref/debug/intro.html__OCT__2 introduction to @debugging
-__APIREL__/ref/debug/common.html__OCT__2 @debugging applications
__APIREL__/ref/distrib/layout.html__OCT__2 @source code layout
__APIREL__/ref/dumpload/text.html__OCT__2 loading @text into databases
__APIREL__/ref/dumpload/utility.html__OCT__2 dumping/loading @text to/from databases
@@ -494,7 +578,7 @@ __APIREL__/ref/ext/perl.html__OCT__2 @Perl
__APIREL__/ref/ext/php.html__OCT__2 @PHP
__APIREL__/ref/install/file.html__OCT__2 @/etc/magic
__APIREL__/ref/install/file.html__OCT__3 @file utility
-__APIREL__/ref/intro/products.html__OCT__2 Sleepycat Software's Berkeley DB @products
+__APIREL__/ref/intro/products.html__OCT__2 Berkeley DB @products
__APIREL__/ref/java/compat.html__OCT__2 @Java compatibility
__APIREL__/ref/java/conf.html__OCT__2 @Java configuration
__APIREL__/ref/java/faq.html__OCT__2 Java @FAQ
@@ -522,6 +606,8 @@ __APIREL__/ref/mp/intro.html__OCT__4 introduction to the @buffer pool subsystem
__APIREL__/ref/mp/config.html__OCT__2 @memory pool configuration
__APIREL__/ref/program/appsignals.html__OCT__2 @signal handling
__APIREL__/ref/program/compatible.html__OCT__2 @interface compatibility
+__APIREL__/ref/program/copy.html__OCT__2 @copying databases
+__APIREL__/ref/program/copy.html__OCT__3 @moving databases
__APIREL__/ref/program/environ.html__OCT__2 @environment variables
__APIREL__/ref/program/errorret.html__OCT__2 @error returns
__APIREL__/ref/program/errorret.html__OCT__3 @error name space
@@ -535,6 +621,7 @@ __APIREL__/ref/program/errorret.html__OCT__DB_RUNRECOVERY Error returns to appli
__APIREL__/ref/program/faq.html__OCT__2 task/thread @priority
__APIREL__/ref/program/mt.html__OCT__2 building @threaded applications
__APIREL__/ref/program/namespace.html__OCT__2 Berkeley DB library @name spaces
+__APIREL__/ref/program/ram.html__OCT__2 @Flash memory configurations
__APIREL__/ref/program/scope.html__OCT__2 Berkeley DB handle @scope
__APIREL__/ref/program/scope.html__OCT__3 Berkeley DB @free-threaded handles
__APIREL__/ref/rep/intro.html__OCT__2 introduction to @replication
@@ -561,13 +648,18 @@ __APIREL__/ref/transapp/hotfail.html__OCT__2 hot @failover
__APIREL__/ref/transapp/intro.html__OCT__2 @Transactional Data Store
__APIREL__/ref/transapp/logfile.html__OCT__2 @log file removal
__APIREL__/ref/transapp/nested.html__OCT__2 nested @transactions
-__APIREL__/ref/transapp/read.html__OCT__2 @repeatable read
-__APIREL__/ref/transapp/read.html__OCT__3 @cursor stability
-__APIREL__/ref/transapp/read.html__OCT__4 cursor @stability
-__APIREL__/ref/transapp/read.html__OCT__5 @degree 2 isolation
-__APIREL__/ref/transapp/read.html__OCT__6 degree 2 @isolation
-__APIREL__/ref/transapp/read.html__OCT__7 dirty @reads
-__APIREL__/ref/transapp/read.html__OCT__8 @dirty reads
+__APIREL__/ref/transapp/read.html__OCT__2 @repeatable reads
+__APIREL__/ref/transapp/read.html__OCT__3 cursor @stability
+__APIREL__/ref/transapp/read.html__OCT__4 @cursor stability
+__APIREL__/ref/transapp/read.html__OCT__5 degree 2 @isolation
+__APIREL__/ref/transapp/read.html__OCT__6 @degree 2 isolation
+__APIREL__/ref/transapp/read.html__OCT__7 degree 1 @isolation
+__APIREL__/ref/transapp/read.html__OCT__8 @degree 1 isolation
+__APIREL__/ref/transapp/read.html__OCT__9 dirty @reads
+__APIREL__/ref/transapp/read.html__OCT__10 @dirty reads
+__APIREL__/ref/transapp/read.html__OCT__11 @snapshot isolation
+__APIREL__/ref/transapp/read.html__OCT__12 @multiversion concurrency control
+__APIREL__/ref/transapp/read.html__OCT__13 @MVCC
__APIREL__/ref/transapp/reclimit.html__OCT__2 Berkeley DB @recoverability
__APIREL__/ref/transapp/recovery.html__OCT__2 recovery in @transaction protected applications
__APIREL__/ref/transapp/throughput.html__OCT__2 @transaction throughput
@@ -585,6 +677,9 @@ __APIREL__/ref/upgrade.4.0/toc.html__OCT__2 @Upgrading to release 4.0
__APIREL__/ref/upgrade.4.1/toc.html__OCT__2 @Upgrading to release 4.1
__APIREL__/ref/upgrade.4.2/toc.html__OCT__2 @Upgrading to release 4.2
__APIREL__/ref/upgrade.4.3/toc.html__OCT__2 @Upgrading to release 4.3
+__APIREL__/ref/upgrade.4.4/toc.html__OCT__2 @Upgrading to release 4.4
+__APIREL__/ref/upgrade.4.5/toc.html__OCT__2 @Upgrading to release 4.5
+__APIREL__/ref/upgrade.4.6/toc.html__OCT__2 @Upgrading to release 4.6
__APIREL__/ref/xa/build.html__OCT__2 @Transaction Manager
__APIREL__/ref/xa/intro.html__OCT__2 @Distributed Transactions
__APIREL__/ref/xa/intro.html__OCT__3 @Resource Manager
diff --git a/db/docs/api_c/rep_config.html b/db/docs/api_c/rep_config.html
index d6cd0aca5..b44ed4aa5 100644
--- a/db/docs/api_c/rep_config.html
+++ b/db/docs/api_c/rep_config.html
@@ -1,6 +1,5 @@
-<!--$Id: rep_config.so,v 1.3 2006/07/14 23:08:59 alanb Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: rep_config.so,v 1.4 2007/02/13 19:32:52 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -61,8 +60,6 @@ single network transfer (defaults to off).
unsynchronized until the application calls the <a href="../api_c/rep_sync.html">DB_ENV-&gt;rep_sync</a> method.
<dt><a name="DB_REP_CONF_NOAUTOINIT">DB_REP_CONF_NOAUTOINIT</a><dd>The replication master will not automatically re-initialize outdated
clients (defaults to off).
-<p>The DB_REP_CONF_NOAUTOINIT flag is not supported by Replication
-Manager.</p>
<dt><a name="DB_REP_CONF_NOWAIT">DB_REP_CONF_NOWAIT</a><dd>Berkeley DB method calls that would normally block while clients are in
recovery will return errors immediately (defaults to off).
</dl>
@@ -101,6 +98,6 @@ otherwise on.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/rep_elect.html b/db/docs/api_c/rep_elect.html
index d8dcf255a..2f2b5a1dc 100644
--- a/db/docs/api_c/rep_elect.html
+++ b/db/docs/api_c/rep_elect.html
@@ -1,6 +1,5 @@
-<!--$Id: rep_elect.so,v 1.24 2006/06/23 01:28:47 alanb Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: rep_elect.so,v 1.26 2007/03/20 20:20:26 alanb Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -24,7 +23,7 @@
<p>
int
DB_ENV-&gt;rep_elect(DB_ENV *env,
- int nsites, int nvotes, int *envid, u_int32_t flags);
+ int nsites, int nvotes, u_int32_t flags);
</pre></h3>
<hr size=1 noshade>
<h3>Description: DB_ENV-&gt;rep_elect</h3>
@@ -35,19 +34,19 @@ applications. It should only be called by applications implementing
their own network transport layer, explicitly holding replication group
elections and handling replication messages outside of the replication
manager framework.</p>
-<p>If the election is successful, the new master's ID may be the ID of the
-previous master, or the ID of the current replication site. The
+<p>If the election is successful, Berkeley DB will notify the application of
+the results of the election by means of either the
+<a href="../api_c/env_event_notify.html#DB_EVENT_REP_ELECTED">DB_EVENT_REP_ELECTED</a> or <a href="../api_c/env_event_notify.html#DB_EVENT_REP_NEWMASTER">DB_EVENT_REP_NEWMASTER</a> events
+(see <a href="../api_c/env_event_notify.html">DB_ENV-&gt;set_event_notify</a> method for more information). The
application is responsible for adjusting its relationship to the other
-database environments in the replication group, including directing all
-database updates to the newly selected master, in accordance with the
-results of this election.</p>
+database environments in the replication group, including directing
+all database updates to the newly selected master, in accordance with
+the results of the election.</p>
<p>The thread of control that calls the DB_ENV-&gt;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>
<h3>Parameters</h3>
<dl compact>
-<dt><b>envid</b><dd>The <b>envid</b> parameter references memory into which
- the newly elected master's ID is copied.
<dt><b>nsites</b><dd>The <b>nsites</b> parameter specifies the number of replication sites
expected to participate in the election. Once the current site has
election information from that many sites, it will short-circuit the
@@ -92,7 +91,10 @@ sites all restarting at the same time, it makes more sense to set
known missing site. Furthermore, in order to ensure the best choice
from among sites that may take longer to boot than the local site,
setting <b>nvotes</b> also to this same total number of sites will
-guarantee that every site in the group is considered. (See the
+guarantee that every site in the group is considered. Alternatively,
+using the special timeout for full elections allows full participation
+on restart but allows election of a master if one site does not
+reboot and rejoin the group in a reasonable amount of time. (See the
<a href="../ref/rep/elect.html">Elections</a>
section in the Berkeley DB Reference Guide for more information.)</p>
<p>Setting <b>nsites</b> to lower values can increase the speed of an
@@ -116,6 +118,6 @@ complete the election in the election timeout period (see
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/rep_limit.html b/db/docs/api_c/rep_limit.html
index 68d01cb67..d895d7f03 100644
--- a/db/docs/api_c/rep_limit.html
+++ b/db/docs/api_c/rep_limit.html
@@ -1,6 +1,5 @@
-<!--$Id: rep_limit.so,v 1.22 2006/03/15 19:39:22 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: rep_limit.so,v 1.25 2006/11/30 21:19:38 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -34,6 +33,10 @@ DB_ENV-&gt;rep_get_limit(DB_ENV *dbenv, u_int32_t *gbytesp, u_int32_t *bytesp);
that will be transmitted from a site in response to a single message
processed by the <a href="../api_c/rep_message.html">DB_ENV-&gt;rep_process_message</a> method. The limit is not a hard limit,
and the record that exceeds the limit is the last record to be sent.</p>
+<p>Record transmission throttling is turned on by default with a limit of
+10MB.</p>
+<p>If the values passed to the DB_ENV-&gt;rep_set_limit method are both zero, then
+the transmission limit is turned off.</p>
<p>The DB_ENV-&gt;rep_set_limit method configures a database environment, not only operations
performed using the specified <a href="../api_c/env_class.html">DB_ENV</a> handle.</p>
<p>The DB_ENV-&gt;rep_set_limit method may be called at any time during the life of the
@@ -73,6 +76,6 @@ and 0 on success.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/rep_list.html b/db/docs/api_c/rep_list.html
index 95c4f8bff..60fec036b 100644
--- a/db/docs/api_c/rep_list.html
+++ b/db/docs/api_c/rep_list.html
@@ -1,6 +1,5 @@
<!--$Id: rep_list.so,v 1.1 2002/08/30 20:02:36 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -10,7 +9,7 @@
</head>
<body bgcolor=white>
<h3 align=center>Berkeley DB: Replication and Related Methods</h3>
-<!--$Id: m4.methods,v 1.8 2006/09/07 16:17:58 bostic Exp $-->
+<!--$Id: m4.methods,v 1.10 2007/06/22 16:57:17 bostic Exp $-->
<table border=1 align=center>
<tr><th>Replication Manager Methods</th><th>Description</th></tr>
<!--DbEnv::repmgr_add_remote_site--><tr><td><a href="../api_c/repmgr_remote_site.html">DB_ENV-&gt;repmgr_add_remote_site</a></td><td>Specify the replication manager's remote sites</td></tr>
@@ -18,6 +17,7 @@
<!--DbEnv::repmgr_set_local_site--><tr><td><a href="../api_c/repmgr_local_site.html">DB_ENV-&gt;repmgr_set_local_site</a></td><td>Specify the replication manager's local site</td></tr>
<!--DbEnv::repmgr_site_list--><tr><td><a href="../api_c/repmgr_site_list.html">DB_ENV-&gt;repmgr_site_list</a></td><td>List the sites and their status</td></tr>
<!--DbEnv::repmgr_start--><tr><td><a href="../api_c/repmgr_start.html">DB_ENV-&gt;repmgr_start</a></td><td>Start the replication manager</td></tr>
+<!--DbEnv::repmgr_stat--><tr><td><a href="../api_c/repmgr_stat.html">DB_ENV-&gt;repmgr_stat</a></td><td>Replication manager statistics</td></tr>
<tr><th>Base Replication API</th><th><br></th></tr>
<!--DbEnv::rep_elect--><tr><td><a href="../api_c/rep_elect.html">DB_ENV-&gt;rep_elect</a></td><td>Hold a replication election</td></tr>
<!--DbEnv::rep_process_message--><tr><td><a href="../api_c/rep_message.html">DB_ENV-&gt;rep_process_message</a></td><td>Process a replication message</td></tr>
@@ -30,9 +30,10 @@
<!--DbEnv::rep_set_limit--><tr><td><a href="../api_c/rep_limit.html">DB_ENV-&gt;rep_set_limit</a></td><td>Limit data sent in response to a single message</td></tr>
<!--DbEnv::rep_set_nsites--><tr><td><a href="../api_c/rep_nsites.html">DB_ENV-&gt;rep_set_nsites</a></td><td>Configure replication group site count</td></tr>
<!--DbEnv::rep_set_priority--><tr><td><a href="../api_c/rep_priority.html">DB_ENV-&gt;rep_set_priority</a></td><td>Configure replication site priority</td></tr>
+<!--DbEnv::rep_set_request--><tr><td><a href="../api_c/rep_request.html">DB_ENV-&gt;rep_set_request</a></td><td>Configure replication client retransmission requests</td></tr>
<!--DbEnv::rep_set_timeout--><tr><td><a href="../api_c/rep_timeout.html">DB_ENV-&gt;rep_set_timeout</a></td><td>Configure replication timeouts</td></tr>
<!--DbEnv::rep_set_transport--><tr><td><a href="../api_c/rep_transport.html">DB_ENV-&gt;rep_set_transport</a></td><td>Configure replication transport callback</td></tr>
</table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/rep_message.html b/db/docs/api_c/rep_message.html
index 66f7c15dc..441df7705 100644
--- a/db/docs/api_c/rep_message.html
+++ b/db/docs/api_c/rep_message.html
@@ -1,6 +1,5 @@
-<!--$Id: rep_message.so,v 1.38 2006/06/24 00:33:22 alanb Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: rep_message.so,v 1.39 2007/03/20 20:20:26 alanb Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -24,7 +23,7 @@
<p>
int
DB_ENV-&gt;rep_process_message(DB_ENV *env,
- DBT *control, DBT *rec, int *envid, DB_LSN *ret_lsnp)
+ DBT *control, DBT *rec, int envid, DB_LSN *ret_lsnp)
</pre></h3>
<hr size=1 noshade>
<h3>Description: DB_ENV-&gt;rep_process_message</h3>
@@ -70,13 +69,6 @@ with the new master (possibly because the client has been configured
with the <a href="../api_c/rep_config.html#DB_REP_CONF_NOAUTOINIT">DB_REP_CONF_NOAUTOINIT</a> flag to turn-off automatic
internal initialization).
</p>
-<dt><a name="DB_REP_NEWMASTER">DB_REP_NEWMASTER</a><dd>
-<p>The DB_ENV-&gt;rep_process_message method will return DB_REP_NEWMASTER if a new master has been chosen.
-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>
<dt><a name="DB_REP_NEWSITE">DB_REP_NEWSITE</a><dd>
<p>The DB_ENV-&gt;rep_process_message method will return DB_REP_NEWSITE if the system received contact information from a new environment.
The <b>rec</b> parameter contains the opaque data specified in the
@@ -124,6 +116,6 @@ cases the value of <b>ret_lsnp</b> is undefined.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/rep_nsites.html b/db/docs/api_c/rep_nsites.html
index f6845b926..038b74047 100644
--- a/db/docs/api_c/rep_nsites.html
+++ b/db/docs/api_c/rep_nsites.html
@@ -1,6 +1,5 @@
<!--$Id: rep_nsites.so,v 1.2 2006/06/23 01:28:47 alanb Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -72,6 +71,6 @@ total number of sites in the replication group in <b>nsitesp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/rep_priority.html b/db/docs/api_c/rep_priority.html
index aa87e9125..40da94492 100644
--- a/db/docs/api_c/rep_priority.html
+++ b/db/docs/api_c/rep_priority.html
@@ -1,6 +1,5 @@
<!--$Id: rep_priority.so,v 1.1 2006/03/15 19:39:22 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -70,6 +69,6 @@ database environment priority in <b>priorityp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/rep_request.html b/db/docs/api_c/rep_request.html
new file mode 100644
index 000000000..cf2634256
--- /dev/null
+++ b/db/docs/api_c/rep_request.html
@@ -0,0 +1,93 @@
+<!--$Id: rep_request.so,v 1.2 2006/11/30 22:28:28 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
+<!--See the file LICENSE for redistribution information.-->
+<html>
+<head>
+<title>Berkeley DB: DB_ENV-&gt;rep_set_request</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
+</head>
+<body bgcolor=white>
+<table width="100%"><tr valign=top>
+<td>
+<h3>DB_ENV-&gt;rep_set_request</h3>
+</td>
+<td align=right>
+<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a>
+<a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a></td>
+</tr></table>
+<hr size=1 noshade>
+<tt>
+<h3><pre>
+#include &lt;db.h&gt;
+<p>
+int
+DB_ENV-&gt;rep_set_request(DB_ENV *env, u_int32_t min, u_int32_t max);
+<p>
+int
+DB_ENV-&gt;rep_get_request(DB_ENV *env, u_int32_t *minp, u_int32_t *maxp);
+</pre></h3>
+<hr size=1 noshade>
+<h3>Description: DB_ENV-&gt;rep_set_request</h3>
+<p>The DB_ENV-&gt;rep_set_request method sets the minimum and maximum number of
+missing log records that a client waits before requesting
+retransmission. Specifically, if a log record is missing, Berkeley DB will
+wait for <b>min</b> more records to arrive before requesting
+retransmission of the missing record. Berkeley DB will wait double that
+amount before requesting the same missing record again, and so on, up
+to a maximum wait of <b>max</b> records.</p>
+<p>By default the minimum is 4 and the maximum is 128, and applications
+rarely need to use values other than the defaults.</p>
+<p>The DB_ENV-&gt;rep_set_request method configures a database environment, not only operations
+performed using the specified <a href="../api_c/env_class.html">DB_ENV</a> handle.</p>
+<p>The DB_ENV-&gt;rep_set_request method may be called at any time during the life of the
+application.</p>
+<p>The DB_ENV-&gt;rep_set_request method
+returns a non-zero error value on failure
+and 0 on success.
+</p>
+<h3>Parameters</h3>
+<dl compact>
+<dt><b>max</b><dd>The maximum number of missing log records a client waits before
+requesting retransmission.
+<dt><b>min</b><dd>The minimum number of missing log records a client waits before
+requesting retransmission.
+</dl>
+<h3>Errors</h3>
+<p>The DB_ENV-&gt;rep_set_request method
+may fail and return one of the following non-zero errors:</p>
+<dl compact>
+<dt>EINVAL<dd>An
+invalid flag value or parameter was specified.
+</dl>
+<hr size=1 noshade>
+<h3>Description: DB_ENV-&gt;rep_get_request</h3>
+<p>The DB_ENV-&gt;rep_get_request method returns the minimum and maximum number of
+missing log records a client waits before requesting retransmission.</p>
+<p>The DB_ENV-&gt;rep_get_request method may be called at any time during the life of the
+application.</p>
+<p>The DB_ENV-&gt;rep_get_request method
+returns a non-zero error value on failure
+and 0 on success.
+</p>
+<h3>Parameters</h3>
+<dl compact>
+<dt><b>maxp</b><dd>The <b>maxp</b> parameter references memory into which
+ the maximum number of missing log records a client will wait before requesting
+retransmission is copied.
+<dt><b>minp</b><dd>The <b>minp</b> parameter references memory into which
+ the minimum number of missing log records a client will wait before requesting
+retransmission is copied.
+</dl>
+<hr size=1 noshade>
+<h3>Class</h3>
+<a href="../api_c/env_class.html">DB_ENV</a>
+<h3>See Also</h3>
+<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/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
+</body>
+</html>
diff --git a/db/docs/api_c/rep_start.html b/db/docs/api_c/rep_start.html
index b13ac31c7..6d8257fcd 100644
--- a/db/docs/api_c/rep_start.html
+++ b/db/docs/api_c/rep_start.html
@@ -1,6 +1,5 @@
<!--$Id: rep_start.so,v 1.17 2006/03/15 19:39:22 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -77,6 +76,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/rep_stat.html b/db/docs/api_c/rep_stat.html
index 5c38ed2ae..0a0fa3c23 100644
--- a/db/docs/api_c/rep_stat.html
+++ b/db/docs/api_c/rep_stat.html
@@ -1,6 +1,5 @@
-<!--$Id: rep_stat.so,v 10.39 2005/11/11 19:00:31 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: rep_stat.so,v 10.42 2007/06/22 16:57:17 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -87,7 +86,7 @@ time is <b>st_election_sec</b> plus <b>st_election_usec</b>).
<dt>u_int32_t st_log_queued_max;<dd>The maximum number of log records ever queued at once.
<dt>u_int32_t st_log_queued_total;<dd>The total number of log records queued.
<dt>u_int32_t st_log_records;<dd>The number of log records received and appended to the log.
-<dt>u_int32_t st_log_requested;<dd>The number of log records missed and requested.
+<dt>u_int32_t st_log_requested;<dd>The number of times log records were missed and requested.
<dt>u_int32_t st_master;<dd>The current master environment ID.
<dt>u_int32_t st_master_changes;<dd>The number of times the master has changed.
<dt>u_int32_t st_msgs_badgen;<dd>The number of messages received with a bad generation number.
@@ -107,6 +106,9 @@ to a single call to <a href="../api_c/rep_message.html">DB_ENV-&gt;rep_process_m
<dt>u_int32_t st_pg_duplicated;<dd>The number of duplicate pages received.
<dt>u_int32_t st_pg_records;<dd>The number of pages received and stored.
<dt>u_int32_t st_pg_requested;<dd>The number of pages missed and requested from the master.
+<dt>u_int32_t st_startsync_delayed;<dd>The number of times the client had to delay the start of a
+cache flush operation (initiated by the master for an impending
+checkpoint) because it was missing some previous log record(s).
<dt>u_int32_t st_startup_complete;<dd>The client site has completed its startup procedures and is now
handling live records from the master.
<dt>u_int32_t st_status;<dd>The current replication mode. Set to <a href="../api_c/repmgr_start.html#DB_REP_MASTER">DB_REP_MASTER</a> if the
@@ -119,6 +121,8 @@ being waited for, or 0 if no log records are currently missing.
<dt>u_int32_t st_waiting_pg;<dd>The page number of the first page we have after missing pages
being waited for, or 0 if no pages are currently missing.
</dl>
+<p>The DB_ENV-&gt;rep_stat method may not be called before the <a href="../api_c/env_open.html">DB_ENV-&gt;open</a> method has
+been called.</p>
<p>The DB_ENV-&gt;rep_stat method
returns a non-zero error value on failure
and 0 on success.
@@ -172,6 +176,6 @@ or more of the following values:
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/rep_sync.html b/db/docs/api_c/rep_sync.html
index e0d55abf5..6cc629c18 100644
--- a/db/docs/api_c/rep_sync.html
+++ b/db/docs/api_c/rep_sync.html
@@ -1,6 +1,5 @@
-<!--$Id: rep_sync.so,v 1.9 2006/07/12 20:32:35 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: rep_sync.so,v 1.10 2007/03/20 20:20:26 alanb Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -35,9 +34,8 @@ application must synchronize explicitly (otherwise the client will
remain out-of-date and will ignore all database changes forwarded from
the replication group master). The DB_ENV-&gt;rep_sync method may be called any
time after the client application learns that the new master has been
-established, either by receiving a <a href="../api_c/env_event_notify.html#DB_EVENT_REP_NEWMASTER">DB_EVENT_REP_NEWMASTER</a> event
-notification, or from a <a href="../api_c/rep_message.html#DB_REP_NEWMASTER">DB_REP_NEWMASTER</a> return code from
-<a href="../api_c/rep_message.html">DB_ENV-&gt;rep_process_message</a>.</p>
+established (by receiving a <a href="../api_c/env_event_notify.html#DB_EVENT_REP_NEWMASTER">DB_EVENT_REP_NEWMASTER</a> event
+notification).</p>
<p>The DB_ENV-&gt;rep_sync method may not be called before the <a href="../api_c/env_open.html">DB_ENV-&gt;open</a> method has
been called.</p>
<p>The DB_ENV-&gt;rep_sync method
@@ -57,6 +55,6 @@ and 0 on success.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/rep_timeout.html b/db/docs/api_c/rep_timeout.html
index c535cbff6..37ed03c99 100644
--- a/db/docs/api_c/rep_timeout.html
+++ b/db/docs/api_c/rep_timeout.html
@@ -1,6 +1,5 @@
-<!--$Id: rep_timeout.so,v 1.3 2006/06/30 23:05:16 alanb Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: rep_timeout.so,v 1.5 2007/03/02 18:46:41 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -48,12 +47,22 @@ and 0 on success.
function waits to collect enough acknowledgments from replication group
clients, before giving up and returning a failure indication. The
default wait time is 1 second.
-<dt><a name="DB_REP_ELECTION_TIMEOUT">DB_REP_ELECTION_TIMEOUT</a><dd>The timeout period for an election. The default timeout is 2 seconds.
-<dt><a name="DB_REP_ELECTION_RETRY">DB_REP_ELECTION_RETRY</a><dd>Configure the amount of time the replication manager will wait before
-retrying a failed election. The default wait time is 10 seconds.
+<dt><a name="DB_REP_CHECKPOINT_DELAY">DB_REP_CHECKPOINT_DELAY</a><dd>Configure the amount of time the replication manager will delay between
+completing a checkpoint and writing a checkpoint record into the log.
+This delay allows clients to complete their own checkpoints before the
+master requires completion of them. The default is 30 seconds.
<dt><a name="DB_REP_CONNECTION_RETRY">DB_REP_CONNECTION_RETRY</a><dd>Configure the amount of time the replication manager will wait before
trying to re-establish a connection to another site after a communication
failure. The default wait time is 30 seconds.
+<dt><a name="DB_REP_ELECTION_TIMEOUT">DB_REP_ELECTION_TIMEOUT</a><dd>The timeout period for an election. The default timeout is 2 seconds.
+<dt><a name="DB_REP_ELECTION_RETRY">DB_REP_ELECTION_RETRY</a><dd>Configure the amount of time the replication manager will wait before
+retrying a failed election. The default wait time is 10 seconds.
+<dt><a name="DB_REP_FULL_ELECTION_TIMEOUT">DB_REP_FULL_ELECTION_TIMEOUT</a><dd>An optional configuration timeout period to wait for full election
+participation the first time the replication group finds a master.
+By default this option is turned off and normal election
+timeouts are used.
+(See the <a href="../ref/rep/elect.html">Elections</a>
+section in the Berkeley DB Reference Guide for more information.)
</dl>
<dt><b>timeout</b><dd>The <b>timeout</b> parameter is the timeout value. It must be specified
as an unsigned 32-bit number of microseconds, limiting the maximum timeout
@@ -92,6 +101,6 @@ is being returned.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/rep_transport.html b/db/docs/api_c/rep_transport.html
index f6addcbd8..bce0b224d 100644
--- a/db/docs/api_c/rep_transport.html
+++ b/db/docs/api_c/rep_transport.html
@@ -1,6 +1,5 @@
<!--$Id: rep_transport.so,v 1.35 2006/06/05 23:03:53 alanb Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -120,6 +119,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/repmgr_ack_policy.html b/db/docs/api_c/repmgr_ack_policy.html
index b5688f6e8..7c6987557 100644
--- a/db/docs/api_c/repmgr_ack_policy.html
+++ b/db/docs/api_c/repmgr_ack_policy.html
@@ -1,6 +1,5 @@
<!--$Id: repmgr_ack_policy.so,v 1.5 2006/09/07 19:26:44 alanb Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -95,6 +94,6 @@ replication manager's client acknowledgment policy in <b>ack_policyp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/repmgr_local_site.html b/db/docs/api_c/repmgr_local_site.html
index 86ddf2f31..9f4732b09 100644
--- a/db/docs/api_c/repmgr_local_site.html
+++ b/db/docs/api_c/repmgr_local_site.html
@@ -1,6 +1,5 @@
<!--$Id: repmgr_local_site.so,v 1.2 2006/04/27 18:07:38 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -51,6 +50,6 @@ and 0 on success.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/repmgr_remote_site.html b/db/docs/api_c/repmgr_remote_site.html
index 7562086a2..65697b290 100644
--- a/db/docs/api_c/repmgr_remote_site.html
+++ b/db/docs/api_c/repmgr_remote_site.html
@@ -1,6 +1,5 @@
<!--$Id: repmgr_remote_site.so,v 1.5 2006/09/08 18:33:38 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -63,6 +62,6 @@ peer, and the last specified peer is used.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/repmgr_site_list.html b/db/docs/api_c/repmgr_site_list.html
index 654e798f6..02f1c05ba 100644
--- a/db/docs/api_c/repmgr_site_list.html
+++ b/db/docs/api_c/repmgr_site_list.html
@@ -1,6 +1,5 @@
<!--$Id: repmgr_site_list.so,v 1.7 2006/09/11 16:57:54 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -72,6 +71,6 @@ referenced by <b>listp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/repmgr_start.html b/db/docs/api_c/repmgr_start.html
index f9dc53205..a6589c611 100644
--- a/db/docs/api_c/repmgr_start.html
+++ b/db/docs/api_c/repmgr_start.html
@@ -1,6 +1,5 @@
-<!--$Id: repmgr_start.so,v 1.3 2006/07/14 23:08:18 alanb Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: repmgr_start.so,v 1.6 2006/11/30 21:19:38 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -71,11 +70,6 @@ only one site at a time should ever be started with the
DB_REP_MASTER flag specified.
<dt><a name="DB_REP_CLIENT">DB_REP_CLIENT</a><dd>Start as a client site, and do not call for an election.
<dt><a name="DB_REP_ELECTION">DB_REP_ELECTION</a><dd>Start as a client, and call for an election if no master is found.
-<dt><a name="DB_REP_FULL_ELECTION">DB_REP_FULL_ELECTION</a><dd>Start as a client, and call for an election if no master is found.
-<p>The <a href="../api_c/repmgr_start.html#DB_REP_FULL_ELECTION">DB_REP_FULL_ELECTION</a> flag configures a single special
-election on startup, where a master will only be confirmed if all
-members of the replication group vote. Subsequent elections will revert
-to only requiring a simple majority to elect a new master.</p>
</dl>
<dt><b>nthreads</b><dd>Specify the number of threads of control created and dedicated to processing
replication messages. In addition to these message processing threads,
@@ -91,6 +85,6 @@ control.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/repmgr_stat.html b/db/docs/api_c/repmgr_stat.html
new file mode 100644
index 000000000..c35dc69be
--- /dev/null
+++ b/db/docs/api_c/repmgr_stat.html
@@ -0,0 +1,116 @@
+<!--$Id: repmgr_stat.so,v 10.1 2007/06/22 16:57:17 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
+<!--See the file LICENSE for redistribution information.-->
+<html>
+<head>
+<title>Berkeley DB: DB_ENV-&gt;repmgr_stat</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
+</head>
+<body bgcolor=white>
+<table width="100%"><tr valign=top>
+<td>
+<h3>DB_ENV-&gt;repmgr_stat</h3>
+</td>
+<td align=right>
+<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a>
+<a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a></td>
+</tr></table>
+<hr size=1 noshade>
+<tt>
+<h3><pre>
+#include &lt;db.h&gt;
+<p>
+int
+DB_ENV-&gt;repmgr_stat(DB_ENV *env, DB_REPMGR_STAT **statp, u_int32_t flags);
+<p>
+int
+DB_ENV-&gt;repmgr_stat_print(DB_ENV *env, u_int32_t flags);
+</pre></h3>
+<hr size=1 noshade>
+<h3>Description: DB_ENV-&gt;repmgr_stat</h3>
+<p>The DB_ENV-&gt;repmgr_stat method returns the replication manager statistics.</p>
+<p>The DB_ENV-&gt;repmgr_stat method creates a statistical structure of type
+DB_REPMGR_STAT and copies a pointer to it into a user-specified memory
+location.</p>
+<p>Statistical structures are stored in allocated memory. If application-specific allocation
+routines have been declared (see <a href="../api_c/env_set_alloc.html">DB_ENV-&gt;set_alloc</a> for more
+information), they are used to allocate the memory; otherwise, the
+standard C library <b>malloc</b>(3) is used. The caller is
+responsible for deallocating the memory. To deallocate the memory, free
+the memory reference; references inside the returned memory need not be
+individually freed.</p>
+<p>The following DB_REPMGR_STAT fields will be filled in:</p>
+<dl compact>
+<dt>u_int32_t st_perm_failed;<dd>The number of times a message critical for maintaining database
+integrity (for example, a transaction commit), originating at this site,
+did not receive sufficient acknowledgement from clients, according to
+the configured acknowledgement policy and acknowledgement timeout.
+<dt>u_int32_t st_msgs_queued;<dd>The number of outgoing messages which could not be transmitted
+immediately, due to a full network buffer, and had to be queued for
+later delivery.
+<dt>u_int32_t st_msgs_dropped;<dd>The number of outgoing messages that were completely dropped, because
+the outgoing message queue was full. (Berkeley DB replication is tolerant of
+dropped messages, and will automatically request retransmission of any
+missing messages as needed.)
+<dt>u_int32_t st_connection_drop;<dd>The number of times an existing TCP/IP connection failed.
+<dt>u_int32_t st_connect_fail;<dd>The number of times an attempt to open a new TCP/IP connection failed.
+</dl>
+<p>The DB_ENV-&gt;repmgr_stat method may not be called before the <a href="../api_c/env_open.html">DB_ENV-&gt;open</a> method has
+been called.</p>
+<p>The DB_ENV-&gt;repmgr_stat method
+returns a non-zero error value on failure
+and 0 on success.
+</p>
+<h3>Parameters</h3>
+<dl compact>
+<dt><b>flags</b><dd>The <b>flags</b> parameter must be set to 0 or
+the following value:
+<dl compact>
+<dt><a name="DB_STAT_CLEAR">DB_STAT_CLEAR</a><dd>Reset statistics after returning their values.
+</dl>
+<dt><b>statp</b><dd>The <b>statp</b> parameter references memory into which
+a pointer to the allocated statistics structure is copied.
+</dl>
+<h3>Errors</h3>
+<p>The DB_ENV-&gt;repmgr_stat method
+may fail and return one of the following non-zero errors:</p>
+<dl compact>
+<dt>EINVAL<dd>An
+invalid flag value or parameter was specified.
+</dl>
+<hr size=1 noshade>
+<h3>Description: DB_ENV-&gt;repmgr_stat_print</h3>
+<p>The DB_ENV-&gt;repmgr_stat_print method displays the
+replication manager statistical information, as described for the DB_ENV-&gt;repmgr_stat method.
+The information is printed to a specified output channel (see the
+<a href="../api_c/env_set_msgfile.html">DB_ENV-&gt;set_msgfile</a> method for more information), or passed to an
+application callback function (see the <a href="../api_c/env_set_msgcall.html">DB_ENV-&gt;set_msgcall</a> method for
+more information).</p>
+<p>The DB_ENV-&gt;repmgr_stat_print method may not be called before the <a href="../api_c/env_open.html">DB_ENV-&gt;open</a> method has
+been called.</p>
+<p>The DB_ENV-&gt;repmgr_stat_print method
+returns a non-zero error value on failure
+and 0 on success.
+</p>
+<h3>Parameters</h3>
+<dl compact>
+<dt><b>flags</b><dd>The <b>flags</b> parameter must be set to 0 or by bitwise inclusively <b>OR</b>'ing together one
+or more of the following values:
+<dl compact>
+<dt><a name="DB_STAT_ALL">DB_STAT_ALL</a><dd>Display all available information.
+<dt><a name="DB_STAT_CLEAR">DB_STAT_CLEAR</a><dd>Reset statistics after displaying their values.
+</dl>
+</dl>
+<hr size=1 noshade>
+<h3>Class</h3>
+<a href="../api_c/env_class.html">DB_ENV</a>
+<h3>See Also</h3>
+<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/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
+</body>
+</html>
diff --git a/db/docs/api_c/seq_class.html b/db/docs/api_c/seq_class.html
index bdc006c49..8759ffe57 100644
--- a/db/docs/api_c/seq_class.html
+++ b/db/docs/api_c/seq_class.html
@@ -1,6 +1,5 @@
<!--$Id: seq_class.so,v 1.12 2004/10/18 19:46:31 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -73,6 +72,6 @@ DB_SEQUENCE
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/seq_close.html b/db/docs/api_c/seq_close.html
index 160b1c437..044f2eac5 100644
--- a/db/docs/api_c/seq_close.html
+++ b/db/docs/api_c/seq_close.html
@@ -1,6 +1,5 @@
<!--$Id: seq_close.so,v 1.2 2004/08/13 03:39:02 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -55,6 +54,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/seq_get.html b/db/docs/api_c/seq_get.html
index 01e63be09..6a75b2b58 100644
--- a/db/docs/api_c/seq_get.html
+++ b/db/docs/api_c/seq_get.html
@@ -1,6 +1,5 @@
<!--$Id: seq_get.so,v 1.11 2005/08/09 14:23:30 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -57,15 +56,17 @@ do not synchronously flush the log when the transaction commits.
</dl>
<dt><b>retp</b><dd><b>retp</b> points to the memory to hold the return value from
the sequence.
-<dt><b>txnid</b><dd>If the operation is part of an application-specified
-transaction, the <b>txnid</b> parameter is a transaction handle
-returned from <a href="../api_c/txn_begin.html">DB_ENV-&gt;txn_begin</a>; if the operation is part of a Berkeley DB Concurrent Data Store
-group, the <b>txnid</b> parameter is a handle returned from
-<a href="../api_c/env_cdsgroup_begin.html">DB_ENV-&gt;cdsgroup_begin</a>; otherwise NULL. If no transaction handle is
+<dt><b>txnid</b><dd>If the operation is part of an application-specified transaction, the
+<b>txnid</b> parameter is a transaction handle returned from
+<a href="../api_c/txn_begin.html">DB_ENV-&gt;txn_begin</a>; if the operation is part of a Berkeley DB Concurrent Data Store group, the
+<b>txnid</b> parameter is a handle returned from
+<a href="../api_c/env_cdsgroup_begin.html">DB_ENV-&gt;cdsgroup_begin</a>; otherwise NULL.
+If no transaction handle is
specified, but the
operation occurs in a transactional
database,
-the operation will be implicitly transaction protected. No <b>txnid</b> handle may be specified if the sequence handle was
+the operation will be implicitly transaction protected.
+No <b>txnid</b> handle may be specified if the sequence handle was
opened with a non-zero cache size.
<p>If the underlying database handle was opened in a transaction, calling
DB_SEQUENCE-&gt;get may result in changes to the sequence object; these
@@ -87,6 +88,6 @@ stored in their own database.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/seq_init_value.html b/db/docs/api_c/seq_init_value.html
deleted file mode 100644
index e04ee4ac4..000000000
--- a/db/docs/api_c/seq_init_value.html
+++ /dev/null
@@ -1,60 +0,0 @@
-<!--$Id: seq_init_value.so,v 1.5 2004/08/29 00:12:47 bostic Exp $-->
-<!--Copyright 1997-2004 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: DB_SEQUENCE-&gt;init_value</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
-</head>
-<body bgcolor=white>
-<table width="100%"><tr valign=top>
-<td>
-<h3>DB_SEQUENCE-&gt;init_value</h3>
-</td>
-<td align=right>
-<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a>
-<a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a></td>
-</tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;db.h&gt;
-<p>
-int
-DB_SEQUENCE-&gt;init_value(DB_SEQUENCE *seq, db_seq_t value);
-</pre></h3>
-<hr size=1 noshade>
-<h3>Description: DB_SEQUENCE-&gt;init_value</h3>
-<p>Set the initial value for a sequence. This call is only effective when
-the sequence is being created.</p>
-<p>The DB_SEQUENCE-&gt;init_value method may not be called after the <a href="../api_c/seq_open.html">DB_SEQUENCE-&gt;open</a>
-method is called.</p>
-<p>The DB_SEQUENCE-&gt;init_value method
-returns a non-zero error value on failure
-and 0 on success.
-</p>
-<h3>Parameters</h3>
-<dl compact>
-<dt><b>value</b><dd>The initial value to set.
-</dl>
-<h3>Errors</h3>
-<p>The DB_SEQUENCE-&gt;init_value method
-may fail and return one of the following non-zero errors:</p>
-<dl compact>
-<dt>EINVAL<dd>An
-invalid flag value or parameter was specified.
-</dl>
-<hr size=1 noshade>
-<h3>Class</h3>
-<a href="../api_c/seq_class.html">DB_SEQUENCE</a>
-<h3>See Also</h3>
-<a href="../api_c/seq_list.html">Sequences and Related Methods</a>
-</tt>
-<table width="100%"><tr><td><br></td><td align=right>
-<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<p><font size=1><a href="../sleepycat/legal.html">Copyright (c) 1996-2004</a> <a href="http://www.sleepycat.com">Sleepycat Software, Inc.</a> - All rights reserved.</font>
-</body>
-</html>
diff --git a/db/docs/api_c/seq_initial_value.html b/db/docs/api_c/seq_initial_value.html
index f5a8f89f0..078ad52db 100644
--- a/db/docs/api_c/seq_initial_value.html
+++ b/db/docs/api_c/seq_initial_value.html
@@ -1,6 +1,5 @@
<!--$Id: seq_initial_value.so,v 1.6 2004/11/29 15:30:23 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -55,6 +54,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/seq_list.html b/db/docs/api_c/seq_list.html
index 881d578cc..de88b25a2 100644
--- a/db/docs/api_c/seq_list.html
+++ b/db/docs/api_c/seq_list.html
@@ -1,6 +1,5 @@
<!--$Id: seq_list.so,v 1.2 2004/08/18 02:34:52 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -27,6 +26,6 @@
<!--DbSequence::set_flags--><tr><td><a href="../api_c/seq_set_flags.html">DB_SEQUENCE-&gt;set_flags</a></td><td>Set the flags for a sequence</td></tr>
<!--DbSequence::set_range--><tr><td><a href="../api_c/seq_set_range.html">DB_SEQUENCE-&gt;set_range</a></td><td>Set the range for a sequence</td></tr>
</table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/seq_open.html b/db/docs/api_c/seq_open.html
index 72acbfa9b..007fb7cbd 100644
--- a/db/docs/api_c/seq_open.html
+++ b/db/docs/api_c/seq_open.html
@@ -1,6 +1,5 @@
<!--$Id: seq_open.so,v 1.9 2005/01/20 01:15:15 ubell Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -56,15 +55,17 @@ single address space. Note that if multiple threads create multiple
sequences using the same database handle that handle must have been
opened specifying <a name="DB_THREAD">DB_THREAD</a>.
</dl>
-<dt><b>txnid</b><dd>If the operation is part of an application-specified
-transaction, the <b>txnid</b> parameter is a transaction handle
-returned from <a href="../api_c/txn_begin.html">DB_ENV-&gt;txn_begin</a>; if the operation is part of a Berkeley DB Concurrent Data Store
-group, the <b>txnid</b> parameter is a handle returned from
-<a href="../api_c/env_cdsgroup_begin.html">DB_ENV-&gt;cdsgroup_begin</a>; otherwise NULL. If no transaction handle is
+<dt><b>txnid</b><dd>If the operation is part of an application-specified transaction, the
+<b>txnid</b> parameter is a transaction handle returned from
+<a href="../api_c/txn_begin.html">DB_ENV-&gt;txn_begin</a>; if the operation is part of a Berkeley DB Concurrent Data Store group, the
+<b>txnid</b> parameter is a handle returned from
+<a href="../api_c/env_cdsgroup_begin.html">DB_ENV-&gt;cdsgroup_begin</a>; otherwise NULL.
+If no transaction handle is
specified, but the
operation occurs in a transactional
database,
-the operation will be implicitly transaction protected. Transactionally protected operations on a <a href="../api_c/seq_class.html">DB_SEQUENCE</a> handle
+the operation will be implicitly transaction protected.
+Transactionally protected operations on a <a href="../api_c/seq_class.html">DB_SEQUENCE</a> handle
require the <a href="../api_c/seq_class.html">DB_SEQUENCE</a> handle itself be transactionally
protected during its open if the open creates the sequence.
</dl>
@@ -105,6 +106,6 @@ and 0 on success.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/seq_remove.html b/db/docs/api_c/seq_remove.html
index 91c36093d..478d71fe8 100644
--- a/db/docs/api_c/seq_remove.html
+++ b/db/docs/api_c/seq_remove.html
@@ -1,6 +1,5 @@
<!--$Id: seq_remove.so,v 1.6 2004/12/16 19:13:04 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -45,15 +44,16 @@ or more of the following values:
argument is NULL but the operation occurs to a transactional database),
do not synchronously flush the log when the transaction commits.
</dl>
-<dt><b>txnid</b><dd>If the operation is part of an application-specified
-transaction, the <b>txnid</b> parameter is a transaction handle
-returned from <a href="../api_c/txn_begin.html">DB_ENV-&gt;txn_begin</a>; if the operation is part of a Berkeley DB Concurrent Data Store
-group, the <b>txnid</b> parameter is a handle returned from
-<a href="../api_c/env_cdsgroup_begin.html">DB_ENV-&gt;cdsgroup_begin</a>; otherwise NULL. If no transaction handle is
+<dt><b>txnid</b><dd>If the operation is part of an application-specified transaction, the
+<b>txnid</b> parameter is a transaction handle returned from
+<a href="../api_c/txn_begin.html">DB_ENV-&gt;txn_begin</a>; if the operation is part of a Berkeley DB Concurrent Data Store group, the
+<b>txnid</b> parameter is a handle returned from
+<a href="../api_c/env_cdsgroup_begin.html">DB_ENV-&gt;cdsgroup_begin</a>; otherwise NULL.
+If no transaction handle is
specified, but the
operation occurs in a transactional
database,
-the operation will be implicitly transaction protected.
+the operation will be implicitly transaction protected.
</dl>
<h3>Errors</h3>
<p>The DB_SEQUENCE-&gt;remove method
@@ -71,6 +71,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/seq_set_cachesize.html b/db/docs/api_c/seq_set_cachesize.html
index 020f65088..b38f734d4 100644
--- a/db/docs/api_c/seq_set_cachesize.html
+++ b/db/docs/api_c/seq_set_cachesize.html
@@ -1,6 +1,5 @@
<!--$Id: seq_set_cachesize.so,v 1.8 2004/09/07 15:37:41 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -71,6 +70,6 @@ current cache size in <b>sizep</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/seq_set_flags.html b/db/docs/api_c/seq_set_flags.html
index 8384d7242..c16b12c38 100644
--- a/db/docs/api_c/seq_set_flags.html
+++ b/db/docs/api_c/seq_set_flags.html
@@ -1,6 +1,5 @@
<!--$Id: seq_set_flags.so,v 1.7 2004/09/07 15:37:41 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -84,6 +83,6 @@ current flags in <b>flagsp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/seq_set_range.html b/db/docs/api_c/seq_set_range.html
index af814e2d5..56e959332 100644
--- a/db/docs/api_c/seq_set_range.html
+++ b/db/docs/api_c/seq_set_range.html
@@ -1,6 +1,5 @@
<!--$Id: seq_set_range.so,v 1.6 2004/09/07 15:37:41 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -74,6 +73,6 @@ and 0 on success.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/seq_stat.html b/db/docs/api_c/seq_stat.html
index 907b15a8f..89ebeed33 100644
--- a/db/docs/api_c/seq_stat.html
+++ b/db/docs/api_c/seq_stat.html
@@ -1,6 +1,5 @@
-<!--$Id: seq_stat.so,v 1.8 2004/09/07 15:37:41 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: seq_stat.so,v 1.9 2007/06/22 16:57:17 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -69,7 +68,9 @@ of the following values:
<dt><a name="DB_STAT_CLEAR">DB_STAT_CLEAR</a><dd>Reset statistics after printing their values.
</dl>
</dl>
-<p>The DB_SEQUENCE-&gt;stat_print method
+<p>The DB_SEQUENCE-&gt;stat method may not be called before the <a href="../api_c/seq_open.html">DB_SEQUENCE-&gt;open</a> method has
+been called.</p>
+<p>The DB_SEQUENCE-&gt;stat method
returns a non-zero error value on failure
and 0 on success.
</p>
@@ -94,6 +95,6 @@ of the following values:
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/set_func_close.html b/db/docs/api_c/set_func_close.html
index 41151bd0f..698e583a3 100644
--- a/db/docs/api_c/set_func_close.html
+++ b/db/docs/api_c/set_func_close.html
@@ -1,6 +1,5 @@
<!--$Id: set_func_close.so,v 10.14 2003/09/25 15:28:06 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -51,6 +50,6 @@ to the standard interface specification.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/set_func_dirfree.html b/db/docs/api_c/set_func_dirfree.html
index 8bcc7af23..5cb6d3de9 100644
--- a/db/docs/api_c/set_func_dirfree.html
+++ b/db/docs/api_c/set_func_dirfree.html
@@ -1,6 +1,5 @@
<!--$Id: set_func_dirfree.so,v 10.19 2004/08/13 03:39:02 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -54,6 +53,6 @@ function.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/set_func_dirlist.html b/db/docs/api_c/set_func_dirlist.html
index 96e939272..f84212724 100644
--- a/db/docs/api_c/set_func_dirlist.html
+++ b/db/docs/api_c/set_func_dirlist.html
@@ -1,6 +1,5 @@
<!--$Id: set_func_dirlist.so,v 10.19 2004/08/13 03:39:02 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -58,6 +57,6 @@ failure and 0 on success.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/set_func_exists.html b/db/docs/api_c/set_func_exists.html
index 3712b85f7..47fa88253 100644
--- a/db/docs/api_c/set_func_exists.html
+++ b/db/docs/api_c/set_func_exists.html
@@ -1,6 +1,5 @@
<!--$Id: set_func_exists.so,v 10.18 2004/08/13 03:39:02 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -56,6 +55,6 @@ failure and 0 on success.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/set_func_free.html b/db/docs/api_c/set_func_free.html
index ec8a6923c..d4ebbf0ab 100644
--- a/db/docs/api_c/set_func_free.html
+++ b/db/docs/api_c/set_func_free.html
@@ -1,6 +1,5 @@
<!--$Id: set_func_free.so,v 10.14 2003/09/25 15:28:07 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -51,6 +50,6 @@ to the standard interface specification.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/set_func_fsync.html b/db/docs/api_c/set_func_fsync.html
index bfed92e75..e569d4903 100644
--- a/db/docs/api_c/set_func_fsync.html
+++ b/db/docs/api_c/set_func_fsync.html
@@ -1,6 +1,5 @@
<!--$Id: set_func_fsync.so,v 10.14 2003/09/25 15:28:07 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -51,6 +50,6 @@ to the standard interface specification.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/set_func_ftruncate.html b/db/docs/api_c/set_func_ftruncate.html
index 491cabef0..77339819f 100644
--- a/db/docs/api_c/set_func_ftruncate.html
+++ b/db/docs/api_c/set_func_ftruncate.html
@@ -1,6 +1,5 @@
<!--$Id: set_func_ftruncate.so,v 1.3 2004/09/20 14:29:50 mjc Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -53,6 +52,6 @@ failure and 0 on success.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/set_func_ioinfo.html b/db/docs/api_c/set_func_ioinfo.html
index cadf0ee3e..82ebfd161 100644
--- a/db/docs/api_c/set_func_ioinfo.html
+++ b/db/docs/api_c/set_func_ioinfo.html
@@ -1,6 +1,5 @@
<!--$Id: set_func_ioinfo.so,v 10.17 2004/08/13 03:39:02 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -64,6 +63,6 @@ failure and 0 on success.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/set_func_malloc.html b/db/docs/api_c/set_func_malloc.html
index ac150fb79..794cfe18f 100644
--- a/db/docs/api_c/set_func_malloc.html
+++ b/db/docs/api_c/set_func_malloc.html
@@ -1,6 +1,5 @@
<!--$Id: set_func_malloc.so,v 10.14 2003/09/25 15:28:07 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -51,6 +50,6 @@ to the standard interface specification.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/set_func_map.html b/db/docs/api_c/set_func_map.html
index 6f264d66d..b2ae16c07 100644
--- a/db/docs/api_c/set_func_map.html
+++ b/db/docs/api_c/set_func_map.html
@@ -1,6 +1,5 @@
<!--$Id: set_func_map.so,v 10.20 2004/08/13 03:39:02 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -68,6 +67,6 @@ failure and 0 on success.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/set_func_open.html b/db/docs/api_c/set_func_open.html
index d669b5dde..d41359517 100644
--- a/db/docs/api_c/set_func_open.html
+++ b/db/docs/api_c/set_func_open.html
@@ -1,6 +1,5 @@
<!--$Id: set_func_open.so,v 10.14 2003/09/25 15:28:07 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -51,6 +50,6 @@ to the standard interface specification.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/set_func_pread.html b/db/docs/api_c/set_func_pread.html
index 903c54f00..45b51f162 100644
--- a/db/docs/api_c/set_func_pread.html
+++ b/db/docs/api_c/set_func_pread.html
@@ -1,6 +1,5 @@
<!--$Id: set_func_pread.so,v 1.1 2003/12/11 21:32:46 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -51,6 +50,6 @@ to the standard interface specification.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/set_func_pwrite.html b/db/docs/api_c/set_func_pwrite.html
index d62fdcf83..6f6ef3a57 100644
--- a/db/docs/api_c/set_func_pwrite.html
+++ b/db/docs/api_c/set_func_pwrite.html
@@ -1,6 +1,5 @@
<!--$Id: set_func_pwrite.so,v 1.1 2003/12/11 21:32:47 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -51,6 +50,6 @@ to the standard interface specification.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/set_func_read.html b/db/docs/api_c/set_func_read.html
index 336a98fc8..921b4a409 100644
--- a/db/docs/api_c/set_func_read.html
+++ b/db/docs/api_c/set_func_read.html
@@ -1,6 +1,5 @@
<!--$Id: set_func_read.so,v 10.14 2003/09/25 15:28:08 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -51,6 +50,6 @@ to the standard interface specification.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/set_func_realloc.html b/db/docs/api_c/set_func_realloc.html
index 8bac96017..9a35193ed 100644
--- a/db/docs/api_c/set_func_realloc.html
+++ b/db/docs/api_c/set_func_realloc.html
@@ -1,6 +1,5 @@
<!--$Id: set_func_realloc.so,v 10.14 2003/09/25 15:28:08 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -51,6 +50,6 @@ to the standard interface specification.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/set_func_rename.html b/db/docs/api_c/set_func_rename.html
index c417ccfc0..0db74b720 100644
--- a/db/docs/api_c/set_func_rename.html
+++ b/db/docs/api_c/set_func_rename.html
@@ -1,6 +1,5 @@
<!--$Id: set_func_rename.so,v 10.16 2003/09/25 15:28:08 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -51,6 +50,6 @@ to the standard interface specification.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/set_func_seek.html b/db/docs/api_c/set_func_seek.html
index d2be1904d..dee6a382a 100644
--- a/db/docs/api_c/set_func_seek.html
+++ b/db/docs/api_c/set_func_seek.html
@@ -1,6 +1,5 @@
<!--$Id: set_func_seek.so,v 10.19 2004/09/20 14:29:50 mjc Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -59,6 +58,6 @@ failure and 0 on success.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/set_func_sleep.html b/db/docs/api_c/set_func_sleep.html
index ece4db13a..ad718fa12 100644
--- a/db/docs/api_c/set_func_sleep.html
+++ b/db/docs/api_c/set_func_sleep.html
@@ -1,6 +1,5 @@
-<!--$Id: set_func_sleep.so,v 10.20 2004/08/13 03:39:02 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: set_func_sleep.so,v 10.21 2007/05/07 18:03:09 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -42,8 +41,8 @@ and 0 on success.
</p>
<h3>Parameters</h3>
<dl compact>
-<dt><b>func_sleep</b><dd>The <b>func_sleep</b> parameter is the function which seeks to a specific
-location in a file.
+<dt><b>func_sleep</b><dd>The <b>func_sleep</b> parameter is the function which suspends execution
+of a thread of control.
<p>The <b>seconds</b> and <b>microseconds</b> parameters specify the amount
of time to wait until the suspending thread of control should run again.</p>
<p>The <b>seconds</b> and <b>microseconds</b> parameters may not be
@@ -58,6 +57,6 @@ failure and 0 on success.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/set_func_unlink.html b/db/docs/api_c/set_func_unlink.html
index 5b67ed106..19c060c62 100644
--- a/db/docs/api_c/set_func_unlink.html
+++ b/db/docs/api_c/set_func_unlink.html
@@ -1,6 +1,5 @@
<!--$Id: set_func_unlink.so,v 10.14 2003/09/25 15:28:09 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -51,6 +50,6 @@ to the standard interface specification.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/set_func_unmap.html b/db/docs/api_c/set_func_unmap.html
index dd2ec61a8..a3b48166b 100644
--- a/db/docs/api_c/set_func_unmap.html
+++ b/db/docs/api_c/set_func_unmap.html
@@ -1,6 +1,5 @@
<!--$Id: set_func_unmap.so,v 10.18 2004/08/13 03:39:02 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -57,6 +56,6 @@ failure and 0 on success.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/set_func_write.html b/db/docs/api_c/set_func_write.html
index 78d876db1..c06fefeec 100644
--- a/db/docs/api_c/set_func_write.html
+++ b/db/docs/api_c/set_func_write.html
@@ -1,6 +1,5 @@
<!--$Id: set_func_write.so,v 10.14 2003/09/25 15:28:09 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -51,6 +50,6 @@ to the standard interface specification.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/set_func_yield.html b/db/docs/api_c/set_func_yield.html
index 3ac4f40ff..7a2c0e9c5 100644
--- a/db/docs/api_c/set_func_yield.html
+++ b/db/docs/api_c/set_func_yield.html
@@ -1,6 +1,5 @@
<!--$Id: set_func_yield.so,v 10.20 2004/08/13 03:39:02 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -65,6 +64,6 @@ failure and 0 on success.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/txn_abort.html b/db/docs/api_c/txn_abort.html
index 9000506bf..66067a097 100644
--- a/db/docs/api_c/txn_abort.html
+++ b/db/docs/api_c/txn_abort.html
@@ -1,6 +1,5 @@
<!--$Id: txn_abort.so,v 10.39 2004/08/13 03:39:03 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -51,6 +50,6 @@ and 0 on success.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/txn_begin.html b/db/docs/api_c/txn_begin.html
index b910a55f4..4223fbfec 100644
--- a/db/docs/api_c/txn_begin.html
+++ b/db/docs/api_c/txn_begin.html
@@ -1,6 +1,5 @@
-<!--$Id: txn_begin.so,v 10.78 2006/09/13 14:30:57 mjc Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: txn_begin.so,v 10.80 2006/12/13 18:09:09 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -59,7 +58,7 @@ previously read by this transaction may be deleted or modified by other
transactions before this transaction completes.
<dt><a name="DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a><dd>This transaction will have degree 1 isolation. Read operations
performed by the transaction may read modified but not yet committed
-data. Silently ignored if the <a href="../api_c/db_open.html#DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a> flag was not
+data. Silently ignored if the DB_READ_UNCOMMITTED flag was not
specified when the underlying database was opened.
<dt><a name="DB_TXN_NOSYNC">DB_TXN_NOSYNC</a><dd>Do not synchronously flush the log when this transaction commits or
prepares. This means the transaction will exhibit the ACI (atomicity,
@@ -67,12 +66,16 @@ consistency, and isolation) properties, but not D (durability); that is,
database integrity will be maintained but it is possible that this
transaction may be undone during recovery.
<p>This behavior may be set for a Berkeley DB environment using the
-<a href="../api_c/env_set_flags.html">DB_ENV-&gt;set_flags</a> method. Any value specified to this method
-overrides that setting.</p>
+<a href="../api_c/env_set_flags.html">DB_ENV-&gt;set_flags</a> method. Any value specified to this method overrides
+that setting.</p>
<dt><a name="DB_TXN_NOWAIT">DB_TXN_NOWAIT</a><dd>If a lock is unavailable for any Berkeley DB operation performed in the context
of this transaction, cause the operation to
-return DB_LOCK_DEADLOCK
-immediately instead of blocking on the lock.
+return <a href="../ref/program/errorret.html#DB_LOCK_DEADLOCK">DB_LOCK_DEADLOCK</a> (or <a href="../ref/program/errorret.html#DB_LOCK_NOTGRANTED">DB_LOCK_NOTGRANTED</a> if the
+database environment has been configured using the
+<a href="../api_c/env_set_flags.html#DB_TIME_NOTGRANTED">DB_TIME_NOTGRANTED</a> flag).
+<p>This behavior may be set for a Berkeley DB environment using the
+<a href="../api_c/env_set_flags.html">DB_ENV-&gt;set_flags</a> method. Any value specified to this method overrides
+that setting.</p>
<dt><a name="DB_TXN_SNAPSHOT">DB_TXN_SNAPSHOT</a><dd>This transaction will execute with <a href="../ref/transapp/read.html">snapshot isolation</a>. For databases with the <a href="../api_c/db_open.html#DB_MULTIVERSION">DB_MULTIVERSION</a>
flag set, data values will be read as they are when the transaction
begins, without taking read locks. Silently ignored for operations on
@@ -85,9 +88,26 @@ which was modified after the snapshot transaction read it.</p>
This means the transaction will exhibit all of the ACID (atomicity,
consistency, isolation, and durability) properties.
<p>This behavior is the default for Berkeley DB environments unless the
-<a href="../api_c/env_set_flags.html#DB_TXN_NOSYNC">DB_TXN_NOSYNC</a> flag was specified to the
-<a href="../api_c/env_set_flags.html">DB_ENV-&gt;set_flags</a> method. Any value specified to this method
-overrides that setting.</p>
+DB_TXN_NOSYNC flag was specified to the
+<a href="../api_c/env_set_flags.html">DB_ENV-&gt;set_flags</a> method. Any value specified to this method overrides
+that setting.</p>
+<dt><a name="DB_TXN_WAIT">DB_TXN_WAIT</a><dd>If a lock is unavailable for any Berkeley DB operation performed in the context
+of this transaction, wait for the lock.
+<p>This behavior is the default for Berkeley DB environments unless the
+DB_TXN_NOWAIT flag was specified to the
+<a href="../api_c/env_set_flags.html">DB_ENV-&gt;set_flags</a> method. Any value specified to this method overrides
+that setting.</p>
+<dt><a name="DB_TXN_WRITE_NOSYNC">DB_TXN_WRITE_NOSYNC</a><dd>Write, but do not synchronously flush, the log when this transaction
+commits. This means the transaction will exhibit the ACI (atomicity,
+consistency, and isolation) properties, but not D (durability); that is,
+database integrity will be maintained, but if the system fails, it is
+possible some number of the most recently committed transactions may be
+undone during recovery. The number of transactions at risk is governed
+by how often the system flushes dirty buffers to disk and how often the
+log is flushed or checkpointed.
+<p>This behavior may be set for a Berkeley DB environment using the
+<a href="../api_c/env_set_flags.html">DB_ENV-&gt;set_flags</a> method. Any value specified to this method overrides
+that setting.</p>
</dl>
<dt><b>parent</b><dd>If the <b>parent</b> parameter is non-NULL, the new transaction will
be a nested transaction, with the transaction indicated by
@@ -111,6 +131,6 @@ may fail and return one of the following non-zero errors:</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/txn_checkpoint.html b/db/docs/api_c/txn_checkpoint.html
index eadfb307e..ad1ec3dd4 100644
--- a/db/docs/api_c/txn_checkpoint.html
+++ b/db/docs/api_c/txn_checkpoint.html
@@ -1,6 +1,5 @@
<!--$Id: txn_checkpoint.so,v 10.49 2005/03/02 22:57:15 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -69,6 +68,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/txn_class.html b/db/docs/api_c/txn_class.html
index 4604b6e8f..d530de400 100644
--- a/db/docs/api_c/txn_class.html
+++ b/db/docs/api_c/txn_class.html
@@ -1,6 +1,5 @@
<!--$Id: txn_class.so,v 10.25 2005/05/17 15:25:50 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -48,6 +47,6 @@ and <a href="../api_c/txn_commit.html">DB_TXN-&gt;commit</a>.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/txn_commit.html b/db/docs/api_c/txn_commit.html
index 61d429f48..a7d9e56d8 100644
--- a/db/docs/api_c/txn_commit.html
+++ b/db/docs/api_c/txn_commit.html
@@ -1,6 +1,5 @@
<!--$Id: txn_commit.so,v 10.49 2004/08/13 03:39:03 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -79,6 +78,6 @@ method overrides both of those settings.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/txn_discard.html b/db/docs/api_c/txn_discard.html
index 3ce7e3da3..0e7e3788b 100644
--- a/db/docs/api_c/txn_discard.html
+++ b/db/docs/api_c/txn_discard.html
@@ -1,6 +1,5 @@
<!--$Id: txn_discard.so,v 10.16 2004/08/13 03:39:03 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -62,6 +61,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/txn_id.html b/db/docs/api_c/txn_id.html
index a27712446..64b33424f 100644
--- a/db/docs/api_c/txn_id.html
+++ b/db/docs/api_c/txn_id.html
@@ -1,6 +1,5 @@
<!--$Id: txn_id.so,v 10.21 2004/08/13 03:39:03 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -40,6 +39,6 @@ to the <a href="../api_c/lock_get.html">DB_ENV-&gt;lock_get</a> or <a href="../a
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/txn_list.html b/db/docs/api_c/txn_list.html
index 61eeae746..0f1549c57 100644
--- a/db/docs/api_c/txn_list.html
+++ b/db/docs/api_c/txn_list.html
@@ -1,6 +1,5 @@
<!--$Id: txn_list.so,v 1.3 2004/11/02 20:04:11 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -31,6 +30,6 @@
<!--DbTxn::set_name--><tr><td><a href="../api_c/txn_set_name.html">DB_TXN-&gt;set_name</a></td><td>Associate a string with a transaction</td></tr>
<!--DbTxn::set_timeout--><tr><td><a href="../api_c/txn_set_timeout.html">DB_TXN-&gt;set_timeout</a></td><td>Set transaction timeout</td></tr>
</table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/txn_prepare.html b/db/docs/api_c/txn_prepare.html
index cb2dea5aa..9e10f8dab 100644
--- a/db/docs/api_c/txn_prepare.html
+++ b/db/docs/api_c/txn_prepare.html
@@ -1,6 +1,5 @@
<!--$Id: txn_prepare.so,v 10.35 2004/08/13 03:39:03 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -61,6 +60,6 @@ transactions must be resolved.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/txn_recover.html b/db/docs/api_c/txn_recover.html
index 976905306..b6cb93cc4 100644
--- a/db/docs/api_c/txn_recover.html
+++ b/db/docs/api_c/txn_recover.html
@@ -1,6 +1,5 @@
-<!--$Id: txn_recover.so,v 10.25 2004/08/13 03:39:03 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: txn_recover.so,v 10.28 2007/05/30 17:24:41 margo Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -28,14 +27,18 @@ DB_ENV-&gt;txn_recover(DB_ENV *dbenv, DB_PREPLIST preplist[],
</pre></h3>
<hr size=1 noshade>
<h3>Description: DB_ENV-&gt;txn_recover</h3>
-<p>The DB_ENV-&gt;txn_recover method returns a list of prepared but not yet resolved
-transactions. The DB_ENV-&gt;txn_recover method should only be called after the
-environment has been recovered. Because database environment state must
-be preserved between recovery and the application calling
-DB_ENV-&gt;txn_recover, applications must either call DB_ENV-&gt;txn_recover
-using the same environment handle used when recovery is done, or the
-database environment must not be configured using the <a href="../api_c/env_open.html#DB_PRIVATE">DB_PRIVATE</a>
-flag.</p>
+<p>Database environment recovery restores transactions that were prepared,
+but not yet resolved at the time of the system shut down or crash, to
+their state prior to the shut down or crash, including any locks
+previously held. The DB_ENV-&gt;txn_recover method returns a list of those
+prepared transactions.</p>
+<p>The DB_ENV-&gt;txn_recover method should only be called after the environment has
+been recovered.</p>
+<p>Multiple threads of control may call DB_ENV-&gt;txn_recover, but only one
+thread of control may resolve each returned transaction, that is, only
+one thread of control may call <a href="../api_c/txn_commit.html">DB_TXN-&gt;commit</a> or <a href="../api_c/txn_abort.html">DB_TXN-&gt;abort</a>
+on each returned transaction. Callers of DB_ENV-&gt;txn_recover must call
+<a href="../api_c/txn_discard.html">DB_TXN-&gt;discard</a> to discard each transaction they do not resolve.</p>
<p>On return from DB_ENV-&gt;txn_recover, the <b>preplist</b> parameter will
be filled in with a list of transactions that must be resolved by the
application (committed, aborted or discarded). The <b>preplist</b>
@@ -48,9 +51,6 @@ ID is the one specified when the transaction was prepared. The
application is responsible for ensuring uniqueness among global
transaction IDs.
</dl>
-<p>The application must call <a href="../api_c/txn_abort.html">DB_TXN-&gt;abort</a>, <a href="../api_c/txn_commit.html">DB_TXN-&gt;commit</a> or
-<a href="../api_c/txn_discard.html">DB_TXN-&gt;discard</a> on each returned <a href="../api_c/txn_class.html">DB_TXN</a> handle before
-starting any new operations.</p>
<p>The DB_ENV-&gt;txn_recover method
returns a non-zero error value on failure
and 0 on success.
@@ -64,6 +64,11 @@ array.
<dt><b>flags</b><dd>The <b>flags</b> parameter must be set to one of the following values:
<dl compact>
<dt><a name="DB_FIRST">DB_FIRST</a><dd>Begin returning a list of prepared, but not yet resolved transactions.
+Specifying this flag begins a new pass over all prepared, but not yet
+completed transactions, regardless of whether they have already been returned
+in previous calls to DB_ENV-&gt;txn_recover.
+Calls to DB_ENV-&gt;txn_recover from different threads of control should not
+be intermixed in the same environment.
<dt><a name="DB_NEXT">DB_NEXT</a><dd>Continue returning a list of prepared, but not yet resolved transactions,
starting where the last call to DB_ENV-&gt;txn_recover left off.
</dl>
@@ -79,6 +84,6 @@ starting where the last call to DB_ENV-&gt;txn_recover left off.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/txn_set_name.html b/db/docs/api_c/txn_set_name.html
index df0e91376..f45aef951 100644
--- a/db/docs/api_c/txn_set_name.html
+++ b/db/docs/api_c/txn_set_name.html
@@ -1,6 +1,5 @@
<!--$Id: txn_set_name.so,v 10.2 2005/05/17 04:01:01 mjc Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -71,6 +70,6 @@ string associated with the transaction in <b>namep</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/txn_set_timeout.html b/db/docs/api_c/txn_set_timeout.html
index 45a21dc19..d770b326e 100644
--- a/db/docs/api_c/txn_set_timeout.html
+++ b/db/docs/api_c/txn_set_timeout.html
@@ -1,6 +1,5 @@
-<!--$Id: txn_set_timeout.so,v 10.21 2005/05/20 15:07:45 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: txn_set_timeout.so,v 10.22 2006/12/16 13:52:36 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -29,8 +28,8 @@ DB_TXN-&gt;set_timeout(DB_TXN *tid, db_timeout_t timeout, u_int32_t flags);
<h3>Description: DB_TXN-&gt;set_timeout</h3>
<p>The DB_TXN-&gt;set_timeout method sets timeout values for locks or
transactions for the specified transaction.</p>
-<p>All Timeouts are checked whenever a thread of control blocks on a lock
-or when deadlock detection is performed. In the case of
+<p>Timeouts are checked whenever a thread of control blocks on a lock or
+when deadlock detection is performed. In the case of
DB_SET_LOCK_TIMEOUT, the timeout is for any single lock request.
In the case of DB_SET_TXN_TIMEOUT, the timeout is for the life
of the transaction. As timeouts are only checked when the lock request
@@ -74,6 +73,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_c/txn_stat.html b/db/docs/api_c/txn_stat.html
index 3dc82f1ea..1dde92997 100644
--- a/db/docs/api_c/txn_stat.html
+++ b/db/docs/api_c/txn_stat.html
@@ -1,6 +1,5 @@
-<!--$Id: txn_stat.so,v 10.66 2006/08/22 14:28:22 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: txn_stat.so,v 10.67 2007/06/22 16:57:17 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -90,6 +89,8 @@ undefined.
of that name, followed by a nul termination byte.
</dl>
</dl>
+<p>The DB_ENV-&gt;txn_stat method may not be called before the <a href="../api_c/env_open.html">DB_ENV-&gt;open</a> method has
+been called.</p>
<p>The DB_ENV-&gt;txn_stat method
returns a non-zero error value on failure
and 0 on success.
@@ -143,6 +144,6 @@ or more of the following values:
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_c/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/api_core.html b/db/docs/api_cxx/api_core.html
index 93eea10ff..cb8a9f35a 100644
--- a/db/docs/api_cxx/api_core.html
+++ b/db/docs/api_cxx/api_core.html
@@ -1,15 +1,14 @@
<!--DO NOT EDIT: automatically built by build script.-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
-<title>Berkeley DB: Berkeley DB: C++ Handle Methods (version 4.5.20)</title>
+<title>Berkeley DB: Berkeley DB: C++ Handle Methods (version 4.6.18)</title>
<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
</head>
<body bgcolor=white>
-<h3 align=center>Berkeley DB: C++ Handle Methods (version 4.5.20)</h3>
+<h3 align=center>Berkeley DB: C++ Handle Methods (version 4.6.18)</h3>
<table border=1 align=center>
<tr><th>C++ Handle Methods</th><th>Description</th></tr>
<!--Db::--><tr><td><a href="../api_cxx/db_class.html">Db</a></td><td>Create a database handle</td></tr>
@@ -19,6 +18,7 @@
<!--Db::cursor--><tr><td><a href="../api_cxx/db_cursor.html">Db::cursor</a></td><td>Create a cursor</td></tr>
<!--Db::del--><tr><td><a href="../api_cxx/db_del.html">Db::del</a></td><td>Delete items from a database</td></tr>
<!--Db::err--><tr><td><a href="../api_cxx/db_err.html">Db::err</a>, <a href="../api_cxx/db_err.html">Db::errx</a></td><td>Error message</td></tr>
+<!--Db::exists--><tr><td><a href="../api_cxx/db_exists.html">Db::exists</a></td><td>Return if an item appears in a database</td></tr>
<!--Db::fd--><tr><td><a href="../api_cxx/db_fd.html">Db::fd</a></td><td>Return a file descriptor from a database</td></tr>
<!--Db::get--><tr><td><a href="../api_cxx/db_get.html">Db::get</a>, <a href="../api_cxx/db_get.html">Db::pget</a></td><td>Get items from a database</td></tr>
<!--Db::get_byteswapped--><tr><td><a href="../api_cxx/db_get_byteswapped.html">Db::get_byteswapped</a></td><td>Return if the underlying database is in host order</td></tr>
@@ -45,11 +45,13 @@
<!--Db::set_errpfx--><tr><td><a href="../api_cxx/db_set_errpfx.html">Db::set_errpfx</a></td><td>Set error message prefix</td></tr>
<!--Db::set_feedback--><tr><td><a href="../api_cxx/db_set_feedback.html">Db::set_feedback</a></td><td>Set feedback callback</td></tr>
<!--Db::set_flags--><tr><td><a href="../api_cxx/db_set_flags.html">Db::set_flags</a></td><td>General database configuration</td></tr>
+<!--Db::set_h_compare--><tr><td><a href="../api_cxx/db_set_h_compare.html">Db::set_h_compare</a></td><td>Set a Hash comparison function</td></tr>
<!--Db::set_h_ffactor--><tr><td><a href="../api_cxx/db_set_h_ffactor.html">Db::set_h_ffactor</a></td><td>Set the Hash table density</td></tr>
<!--Db::set_h_hash--><tr><td><a href="../api_cxx/db_set_h_hash.html">Db::set_h_hash</a></td><td>Set a hashing function</td></tr>
<!--Db::set_h_nelem--><tr><td><a href="../api_cxx/db_set_h_nelem.html">Db::set_h_nelem</a></td><td>Set the Hash table size</td></tr>
<!--Db::set_lorder--><tr><td><a href="../api_cxx/db_set_lorder.html">Db::set_lorder</a></td><td>Set the database byte order</td></tr>
<!--Db::set_pagesize--><tr><td><a href="../api_cxx/db_set_pagesize.html">Db::set_pagesize</a></td><td>Set the underlying database page size</td></tr>
+<!--Db::set_priority--><tr><td><a href="../api_cxx/db_set_priority.html">Db::set_priority</a></td><td>Set cache page priority</td></tr>
<!--Db::set_q_extentsize--><tr><td><a href="../api_cxx/db_set_q_extentsize.html">Db::set_q_extentsize</a></td><td>Set Queue database extent size</td></tr>
<!--Db::set_re_delim--><tr><td><a href="../api_cxx/db_set_re_delim.html">Db::set_re_delim</a></td><td>Set the variable-length record delimiter</td></tr>
<!--Db::set_re_len--><tr><td><a href="../api_cxx/db_set_re_len.html">Db::set_re_len</a></td><td>Set the fixed-length record length</td></tr>
@@ -66,6 +68,7 @@
<!--DbCursor::dup--><tr><td><a href="../api_cxx/dbc_dup.html">Dbc::dup</a></td><td>Duplicate a cursor</td></tr>
<!--DbCursor::get--><tr><td><a href="../api_cxx/dbc_get.html">Dbc::get</a>, <a href="../api_cxx/dbc_get.html">Dbc::pget</a></td><td>Retrieve by cursor</td></tr>
<!--DbCursor::put--><tr><td><a href="../api_cxx/dbc_put.html">Dbc::put</a></td><td>Store by cursor</td></tr>
+<!--DbCursor::set_priority--><tr><td><a href="../api_cxx/dbc_set_priority.html">Dbc::set_priority</a></td><td>Set the cursor's cache priority</td></tr>
<!--DbDeadlockException--><tr><td><a href="../api_cxx/deadlock_class.html">DbDeadlockException</a></td><td>Deadlock exception</td></tr>
<!--DbEnv::--><tr><td><a href="../api_cxx/env_class.html">DbEnv</a></td><td>Create an environment handle</td></tr>
<!--DbEnv::cdsgroup_begin--><tr><td><a href="../api_cxx/env_cdsgroup_begin.html">DbEnv::cdsgroup_begin</a></td><td>Get a locker ID in Berkeley DB Concurrent Data Store</td></tr>
@@ -113,6 +116,7 @@
<!--DbEnv::rep_set_limit--><tr><td><a href="../api_cxx/rep_limit.html">DbEnv::rep_set_limit</a></td><td>Limit data sent in response to a single message</td></tr>
<!--DbEnv::rep_set_nsites--><tr><td><a href="../api_cxx/rep_nsites.html">DbEnv::rep_set_nsites</a></td><td>Configure replication group site count</td></tr>
<!--DbEnv::rep_set_priority--><tr><td><a href="../api_cxx/rep_priority.html">DbEnv::rep_set_priority</a></td><td>Configure replication site priority</td></tr>
+<!--DbEnv::rep_set_request--><tr><td><a href="../api_cxx/rep_request.html">DbEnv::rep_set_request</a></td><td>Configure replication client retransmission requests</td></tr>
<!--DbEnv::rep_set_timeout--><tr><td><a href="../api_cxx/rep_timeout.html">DbEnv::rep_set_timeout</a></td><td>Configure replication timeouts</td></tr>
<!--DbEnv::rep_set_transport--><tr><td><a href="../api_cxx/rep_transport.html">DbEnv::rep_set_transport</a></td><td>Configure replication transport callback</td></tr>
<!--DbEnv::rep_start--><tr><td><a href="../api_cxx/rep_start.html">DbEnv::rep_start</a></td><td>Configure an environment for replication</td></tr>
@@ -123,8 +127,10 @@
<!--DbEnv::repmgr_set_local_site--><tr><td><a href="../api_cxx/repmgr_local_site.html">DbEnv::repmgr_set_local_site</a></td><td>Specify the replication manager's local site</td></tr>
<!--DbEnv::repmgr_site_list--><tr><td><a href="../api_cxx/repmgr_site_list.html">DbEnv::repmgr_site_list</a></td><td>List the sites and their status</td></tr>
<!--DbEnv::repmgr_start--><tr><td><a href="../api_cxx/repmgr_start.html">DbEnv::repmgr_start</a></td><td>Start the replication manager</td></tr>
+<!--DbEnv::repmgr_stat--><tr><td><a href="../api_cxx/repmgr_stat.html">DbEnv::repmgr_stat</a></td><td>Replication manager statistics</td></tr>
<!--DbEnv::set_alloc--><tr><td><a href="../api_cxx/env_set_alloc.html">DbEnv::set_alloc</a></td><td>Set local space allocation functions</td></tr>
<!--DbEnv::set_app_dispatch--><tr><td><a href="../api_cxx/env_set_app_dispatch.html">DbEnv::set_app_dispatch</a></td><td>Configure application recovery</td></tr>
+<!--DbEnv::set_cache_max--><tr><td><a href="../api_cxx/env_set_cache_max.html">DbEnv::set_cache_max</a></td><td>Set the maximum cache size</td></tr>
<!--DbEnv::set_cachesize--><tr><td><a href="../api_cxx/env_set_cachesize.html">DbEnv::set_cachesize</a></td><td>Set the environment cache size</td></tr>
<!--DbEnv::set_data_dir--><tr><td><a href="../api_cxx/env_set_data_dir.html">DbEnv::set_data_dir</a></td><td>Set the environment data directory</td></tr>
<!--DbEnv::set_encrypt--><tr><td><a href="../api_cxx/env_set_encrypt.html">DbEnv::set_encrypt</a></td><td>Set the environment cryptographic key</td></tr>
@@ -177,7 +183,6 @@
<!--DbMpoolFile::get--><tr><td><a href="../api_cxx/memp_fget.html">DbMpoolFile::get</a></td><td>Get page from a file in a memory pool</td></tr>
<!--DbMpoolFile::open--><tr><td><a href="../api_cxx/memp_fopen.html">DbMpoolFile::open</a></td><td>Open a file in a memory pool</td></tr>
<!--DbMpoolFile::put--><tr><td><a href="../api_cxx/memp_fput.html">DbMpoolFile::put</a></td><td>Return a page to a memory pool</td></tr>
-<!--DbMpoolFile::set--><tr><td><a href="../api_cxx/memp_fset.html">DbMpoolFile::set</a></td><td>Set memory pool page attributes</td></tr>
<!--DbMpoolFile::set_clear_len--><tr><td><a href="../api_cxx/memp_set_clear_len.html">DbMpoolFile::set_clear_len</a></td><td>Set file page bytes to be cleared</td></tr>
<!--DbMpoolFile::set_fileid--><tr><td><a href="../api_cxx/memp_set_fileid.html">DbMpoolFile::set_fileid</a></td><td>Set file unique identifier</td></tr>
<!--DbMpoolFile::set_flags--><tr><td><a href="../api_cxx/memp_set_flags.html">DbMpoolFile::set_flags</a></td><td>General memory pool file configuration</td></tr>
@@ -211,6 +216,6 @@
<!--db_version--><tr><td><a href="../api_cxx/env_version.html">DbEnv::version</a></td><td>Return version information</td></tr>
<!--log_compare--><tr><td><a href="../api_cxx/log_compare.html">DbEnv::log_compare</a></td><td>Compare two Log Sequence Numbers</td></tr>
</table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/cxx_index.html b/db/docs/api_cxx/cxx_index.html
deleted file mode 100644
index 1ba43a0f2..000000000
--- a/db/docs/api_cxx/cxx_index.html
+++ /dev/null
@@ -1,148 +0,0 @@
-<!--$Id: cxx_index.so,v 10.65 2000/12/21 19:11:27 bostic Exp $-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB: C++ Interface by Class</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<h1 align=center>C++ Interface by Class</h1>
-<p><table border=1 align=center>
-<tr><th>Class</th><th>Method</th><th>Description</th></tr>
-<tr><td><a href="../api_cxx/dbenv_class.html">DbEnv</a></td><td><br></td><td>Berkeley DB Environment Class</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/db_err.html">DbEnv::err</a></td><td>Error message with error string</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/db_err.html">DbEnv::errx</a></td><td>Error message</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/env_open.html">DbEnv::open</a></td><td>Open an environment</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/env_remove.html">DbEnv::remove</a></td><td>Remove an environment</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/env_set_cachesize.html">DbEnv::set_cachesize</a></td><td>Set the environment cache size</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/env_set_data_dir.html">DbEnv::set_data_dir</a></td><td>Set the environment data directory</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/env_set_errcall.html">DbEnv::set_errcall</a></td><td>Set error message callback</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/env_set_errfile.html">DbEnv::set_errfile</a></td><td>Set error message FILE *</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/env_set_error_stream.html">DbEnv::set_error_stream</a></td><td>Set error message output stream</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/env_set_errpfx.html">DbEnv::set_errpfx</a></td><td>Set error message prefix</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/env_set_feedback.html">DbEnv::set_feedback</a></td><td>Set feedback callback</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/env_set_flags.html">DbEnv::set_flags</a></td><td>Environment configuration</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/env_set_lg_bsize.html">DbEnv::set_lg_bsize</a></td><td>Set log buffer size</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/env_set_lg_dir.html">DbEnv::set_lg_dir</a></td><td>Set the environment logging directory</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/env_set_lg_max.html">DbEnv::set_lg_max</a></td><td>Set log file size</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/env_set_lk_conflicts.html">DbEnv::set_lk_conflicts</a></td><td>Set lock conflicts matrix</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/env_set_lk_detect.html">DbEnv::set_lk_detect</a></td><td>Set automatic deadlock detection</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/env_set_lk_max.html">DbEnv::set_lk_max</a></td><td>Set maximum number of locks (<b>Deprecated</b>)</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/env_set_lk_max_locks.html">DbEnv::set_lk_max_locks</a></td><td>Set maximum number of locks</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/env_set_lk_max_lockers.html">DbEnv::set_lk_max_lockers</a></td><td>Set maximum number of lockers</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/env_set_lk_max_objects.html">DbEnv::set_lk_max_objects</a></td><td>Set maximum number of lock objects</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/env_set_mp_mmapsize.html">DbEnv::set_mp_mmapsize</a></td><td>Set maximum mapped-in database file size</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/env_set_mutexlocks.html">DbEnv::set_mutexlocks</a></td><td>Turn off mutual exclusion locking</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/env_set_pageyield.html">DbEnv::set_pageyield</a></td><td>Yield the processor on each page access</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/env_set_paniccall.html">DbEnv::set_paniccall</a></td><td>Set panic callback</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/env_set_panicstate.html">DbEnv::set_panicstate</a></td><td>Reset panic state</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/env_set_rec_init.html">DbEnv::set_recovery_init</a></td><td>Set recovery initialization callback</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/env_set_region_init.html">DbEnv::set_region_init</a></td><td>Fault in shared regions on initial access</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/env_set_server.html">DbEnv::set_server</a></td><td>Establish 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_tx_max.html">DbEnv::set_tx_max</a></td><td>Set maximum number of transactions</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/env_set_tx_recover.html">DbEnv::set_tx_recover</a></td><td>Set transaction abort recover function</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/env_set_tx_timestamp.html">DbEnv::set_tx_timestamp</a></td><td>Set recovery timestamp</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><br></td><td><a href="../api_cxx/env_strerror.html">DbEnv::strerror</a></td><td>Error strings</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/lock_detect.html">DbEnv::lock_detect</a></td><td>Perform deadlock detection</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/lock_get.html">DbEnv::lock_get</a></td><td>Acquire a lock</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/lock_id.html">DbEnv::lock_id</a></td><td>Acquire a locker ID</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/lock_stat.html">DbEnv::lock_stat</a></td><td>Return lock subsystem statistics</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/lock_vec.html">DbEnv::lock_vec</a></td><td>Acquire/release locks</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/log_archive.html">DbEnv::log_archive</a></td><td>List log and database files</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/log_compare.html">DbEnv::log_compare</a></td><td>Compare two Log Sequence Numbers</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/log_file.html">DbEnv::log_file</a></td><td>Map Log Sequence Numbers to log files</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/log_flush.html">DbEnv::log_flush</a></td><td>Flush log records</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/log_get.html">DbEnv::log_get</a></td><td>Get a log record</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/log_put.html">DbEnv::log_put</a></td><td>Write a log record</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/log_register.html">DbEnv::log_register</a></td><td>Register a file name with the log manager</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/log_stat.html">DbEnv::log_stat</a></td><td>Return log subsystem statistics</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/log_unregister.html">DbEnv::log_unregister</a></td><td>Unregister a file name with the log manager</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/memp_register.html">DbEnv::memp_register</a></td><td>Register input/output functions for a file in a buffer pool.</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/memp_stat.html">DbEnv::memp_stat</a></td><td>Return buffer pool statistics</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/memp_sync.html">DbEnv::memp_sync</a></td><td>Flush pages from a buffer pool</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/memp_trickle.html">DbEnv::memp_trickle</a></td><td>Trickle flush pages from a buffer pool</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/txn_begin.html">DbEnv::txn_begin</a></td><td>Begin a transaction</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/txn_checkpoint.html">DbEnv::txn_checkpoint</a></td><td>Checkpoint the transaction subsystem</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/txn_stat.html">DbEnv::txn_stat</a></td><td>Return transaction subsystem statistics</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/env_version.html">DbEnv::version</a></td><td>Return version information</td></tr>
-<tr><td><a href="../api_cxx/db_class.html">Db</a></td><td><br></td><td>Berkeley DB Access Method Class</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/db_close.html">Db::close</a></td><td>Close a database</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/db_cursor.html">Db::cursor</a></td><td>Open a cursor into a database</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/db_del.html">Db::del</a></td><td>Delete items from a database</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/db_err.html">Db::err</a></td><td>Error message with error string</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/db_err.html">Db::errx</a></td><td>Error message</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/db_fd.html">Db::fd</a></td><td>Return a file descriptor from a database</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/db_get.html">Db::get</a></td><td>Get items from a database</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/db_get_byteswapped.html">Db::get_byteswapped</a></td><td>Return if the underlying database is in host order</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/db_get_type.html">Db::get_type</a></td><td>Return the database type</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/db_join.html">Db::join</a></td><td>Perform a database join on cursors</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/db_key_range.html">Db::key_range</a></td><td>Return estimate of key location</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/db_open.html">Db::open</a></td><td>Open a database</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/db_put.html">Db::put</a></td><td>Store items into a database</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/db_remove.html">Db::remove</a></td><td>Remove a database</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/db_rename.html">Db::rename</a></td><td>Rename a database</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/db_set_append_recno.html">Db::set_append_recno</a></td><td>Set record append callback</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/db_set_bt_compare.html">Db::set_bt_compare</a></td><td>Set a Btree comparison function</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/db_set_bt_minkey.html">Db::set_bt_minkey</a></td><td>Set the minimum number of keys per Btree page</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/db_set_bt_prefix.html">Db::set_bt_prefix</a></td><td>Set a Btree prefix comparison function</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/db_set_cachesize.html">Db::set_cachesize</a></td><td>Set the database cache size</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/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_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_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>
-<tr><td><br></td><td><a href="../api_cxx/db_set_h_ffactor.html">Db::set_h_ffactor</a></td><td>Set the Hash table density</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/db_set_h_hash.html">Db::set_h_hash</a></td><td>Set a hashing function</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/db_set_h_nelem.html">Db::set_h_nelem</a></td><td>Set the Hash table size</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/db_set_lorder.html">Db::set_lorder</a></td><td>Set the database byte order</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/db_set_malloc.html">Db::set_malloc</a></td><td>Set a local space allocation function</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/db_set_pagesize.html">Db::set_pagesize</a></td><td>Set the underlying database page size</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/db_set_paniccall.html">Db::set_paniccall</a></td><td>Set panic callback</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/db_set_q_extentsize.html">Db::set_q_extentsize</a></td><td>Set Queue database extent size</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/db_set_re_delim.html">Db::set_re_delim</a></td><td>Set the variable-length record delimiter</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/db_set_re_len.html">Db::set_re_len</a></td><td>Set the fixed-length record length</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/db_set_re_pad.html">Db::set_re_pad</a></td><td>Set the fixed-length record pad byte</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/db_set_re_source.html">Db::set_re_source</a></td><td>Set the backing Recno text file</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/db_set_realloc.html">Db::set_realloc</a></td><td>Set a local space allocation function</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/db_stat.html">Db::stat</a></td><td>Return database statistics</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/db_sync.html">Db::sync</a></td><td>Flush a database to stable storage</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/db_upgrade.html">Db::upgrade</a></td><td>Upgrade a database</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/db_verify.html">Db::verify</a></td><td>Verify/upgrade a database</td></tr>
-<tr><td><a href="../api_cxx/dbc_class.html">Dbc</a></td><td><br></td><td>Berkeley DB Cursor Class</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/dbc_close.html">Dbc::close</a></td><td>Close a cursor</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/dbc_count.html">Dbc::count</a></td><td>Return count of duplicates</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/dbc_del.html">Dbc::del</a></td><td>Delete by cursor</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/dbc_dup.html">Dbc::dup</a></td><td>Duplicate a cursor</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/dbc_get.html">Dbc::get</a></td><td>Retrieve by cursor</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/dbc_put.html">Dbc::put</a></td><td>Store by cursor</td></tr>
-<tr><td><a href="../api_cxx/dbt_class.html">Dbt</a></td><td><br></td><td>Key/Data Encoding Class</td></tr>
-<tr><td><a href="../api_cxx/lock_class.html">DbLock</a></td><td><br></td><td>Lock Class</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/lock_put.html">DbLock::put</a></td><td>Release a lock</td></tr>
-<tr><td><a href="../api_cxx/lsn_class.html">DbLsn</a></td><td><br></td><td>Log Sequence Number Class</td></tr>
-<tr><td><a href="../api_cxx/mempfile_class.html">DbMpoolFile</a></td><td><br></td><td>Memory Pool File Class</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/memp_fclose.html">DbMpoolFile::close</a></td><td>Close a file in a buffer pool</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/memp_fget.html">DbMpoolFile::get</a></td><td>Get page from a file in a buffer pool</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/memp_fopen.html">DbMpoolFile::open</a></td><td>Open a file in a buffer pool</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/memp_fput.html">DbMpoolFile::put</a></td><td>Return a page to a buffer pool</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/memp_fset.html">DbMpoolFile::set</a></td><td>Modify meta information for buffer pool page</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/memp_fsync.html">DbMpoolFile::sync</a></td><td>Flush pages from a file in a buffer pool</td></tr>
-<tr><td><a href="../api_cxx/txn_class.html">DbTxn</a></td><td><br></td><td>Transaction Class</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/txn_abort.html">DbTxn::abort</a></td><td>Abort a transaction</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/txn_commit.html">DbTxn::commit</a></td><td>Commit a transaction</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/txn_id.html">DbTxn::id</a></td><td>Return a transaction ID</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/txn_prepare.html">DbTxn::prepare</a></td><td>Prepare a transaction for commit</td></tr>
-<tr><td><a href="../api_cxx/except_class.html">DbException</a></td><td><br></td><td>Exception Class for Berkeley DB Activity</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>
-</table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/cxx_pindex.html b/db/docs/api_cxx/cxx_pindex.html
index 7bb989153..5b362d157 100644
--- a/db/docs/api_cxx/cxx_pindex.html
+++ b/db/docs/api_cxx/cxx_pindex.html
@@ -25,6 +25,7 @@
<tr><td align=right>Configuring Berkeley DB </td><td>&nbsp;<a href="../ref/build_unix/conf.html#--enable-debug_wop">--enable-debug_wop</a></td></tr>
<tr><td align=right>Configuring Berkeley DB </td><td>&nbsp;<a href="../ref/build_unix/conf.html#--enable-diagnostic">--enable-diagnostic</a></td></tr>
<tr><td align=right>Configuring Berkeley DB </td><td>&nbsp;<a href="../ref/build_unix/conf.html#--enable-dump185">--enable-dump185</a></td></tr>
+<tr><td align=right>Configuring Berkeley DB </td><td>&nbsp;<a href="../ref/build_unix/conf.html#--enable-fine_grained_lock_manager">--enable-fine_grained_lock_manager</a></td></tr>
<tr><td align=right>Configuring Berkeley DB </td><td>&nbsp;<a href="../ref/build_unix/conf.html#--enable-java">--enable-java</a></td></tr>
<tr><td align=right>Configuring Berkeley DB </td><td>&nbsp;<a href="../ref/build_unix/conf.html#--enable-posixmutexes">--enable-posixmutexes</a></td></tr>
<tr><td align=right>Configuring Berkeley DB </td><td>&nbsp;<a href="../ref/build_unix/conf.html#--enable-pthread_api">--enable-pthread_api</a></td></tr>
@@ -56,13 +57,17 @@
<tr><td align=right>turn off system </td><td>&nbsp;<a href="../api_cxx/env_set_flags.html#5">buffering</a> for database files</td></tr>
<tr><td align=right>turn off system </td><td>&nbsp;<a href="../api_cxx/env_set_flags.html#4">buffering</a> for log files</td></tr>
<tr><td align=right>turn off system </td><td>&nbsp;<a href="../api_cxx/env_set_flags.html#6">buffering</a> for log files</td></tr>
+<tr><td align=right></td><td>&nbsp;<a href="../ref/build_brew/intro.html#2">building</a> for BREW</td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../ref/build_unix/intro.html#3">building</a> for QNX</td></tr>
+<tr><td align=right></td><td>&nbsp;<a href="../ref/build_s60/intro.html#2">building</a> for S60</td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../ref/build_unix/intro.html#2">building</a> for UNIX</td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../ref/build_unix/notes.html#2">building</a> for UNIX FAQ</td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../ref/build_vxworks/intro.html#2">building</a> for VxWorks</td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../ref/build_vxworks/introae.html#2">building</a> for VxWorks AE</td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../ref/build_vxworks/faq.html#2">building</a> for VxWorks FAQ</td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../ref/build_win/intro.html#2">building</a> for Windows</td></tr>
+<tr><td align=right></td><td>&nbsp;<a href="../ref/build_wince/intro.html#2">building</a> for Windows CE</td></tr>
+<tr><td align=right></td><td>&nbsp;<a href="../ref/build_wince/faq.html#2">building</a> for Windows CE FAQ</td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../ref/build_win/faq.html#2">building</a> for Windows FAQ</td></tr>
<tr><td align=right>selecting a </td><td>&nbsp;<a href="../ref/am_conf/byteorder.html#2">byte</a> order</td></tr>
<tr><td align=right>configuring the </td><td>&nbsp;<a href="../ref/build_unix/conf.html#8">C++</a> API</td></tr>
@@ -79,6 +84,7 @@
<tr><td align=right></td><td>&nbsp;<a href="../ref/cam/intro.html#2">Concurrent</a> Data Store</td></tr>
<tr><td align=right>database environment </td><td>&nbsp;<a href="../ref/env/db_config.html#3">configuration</a></td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../ref/build_unix/conf.html#2">configuring</a> Berkeley DB for UNIX systems</td></tr>
+<tr><td align=right></td><td>&nbsp;<a href="../ref/build_unix/conf.html#11">configuring</a> the fine-grained lock manager</td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../ref/program/copy.html#2">copying</a> databases</td></tr>
<tr><td align=right>salvaging </td><td>&nbsp;<a href="../ref/am/verify.html#4">corrupted</a> databases</td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../ref/am/count.html#2">counting</a> data items for a key</td></tr>
@@ -104,7 +110,7 @@
<tr><td align=right>Dbc::put </td><td>&nbsp;<a href="../api_cxx/dbc_put.html#DB_BEFORE">DB_BEFORE</a></td></tr>
<tr><td align=right>Db::open </td><td>&nbsp;<a href="../api_cxx/db_open.html#DB_BTREE">DB_BTREE</a></td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../api_cxx/dbt_class.html#3">DB_BUFFER_SMALL</a></td></tr>
-<tr><td align=right>DbMemoryException </td><td>&nbsp;<a href="../api_cxx/memp_class.html#DB_BUFFER_SMALL">DB_BUFFER_SMALL</a></td></tr>
+<tr><td align=right></td><td>&nbsp;<a href="../api_cxx/memp_class.html#2">DB_BUFFER_SMALL</a></td></tr>
<tr><td align=right>DbEnv::set_flags </td><td>&nbsp;<a href="../api_cxx/env_set_flags.html#DB_CDB_ALLDB">DB_CDB_ALLDB</a></td></tr>
<tr><td align=right>Db::set_flags </td><td>&nbsp;<a href="../api_cxx/db_set_flags.html#DB_CHKSUM">DB_CHKSUM</a></td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../ref/env/db_config.html#2">DB_CONFIG</a></td></tr>
@@ -120,15 +126,18 @@
<tr><td align=right>DbLogc::get </td><td>&nbsp;<a href="../api_cxx/logc_get.html#DB_CURRENT">DB_CURRENT</a></td></tr>
<tr><td align=right>Db </td><td>&nbsp;<a href="../api_cxx/db_class.html#DB_CXX_NO_EXCEPTIONS">DB_CXX_NO_EXCEPTIONS</a></td></tr>
<tr><td align=right>DbEnv </td><td>&nbsp;<a href="../api_cxx/env_class.html#DB_CXX_NO_EXCEPTIONS">DB_CXX_NO_EXCEPTIONS</a></td></tr>
-<tr><td align=right></td><td>&nbsp;<a href="../api_cxx/db_associate.html#2">DB_DBT_APPMALLOC</a></td></tr>
+<tr><td align=right>Db::associate </td><td>&nbsp;<a href="../api_cxx/db_associate.html#DB_DBT_APPMALLOC">DB_DBT_APPMALLOC</a></td></tr>
+<tr><td align=right>Dbt </td><td>&nbsp;<a href="../api_cxx/dbt_class.html#DB_DBT_APPMALLOC">DB_DBT_APPMALLOC</a></td></tr>
<tr><td align=right>Dbt </td><td>&nbsp;<a href="../api_cxx/dbt_class.html#DB_DBT_MALLOC">DB_DBT_MALLOC</a></td></tr>
+<tr><td align=right>Db::associate </td><td>&nbsp;<a href="../api_cxx/db_associate.html#DB_DBT_MULTIPLE">DB_DBT_MULTIPLE</a></td></tr>
+<tr><td align=right>Dbt </td><td>&nbsp;<a href="../api_cxx/dbt_class.html#DB_DBT_MULTIPLE">DB_DBT_MULTIPLE</a></td></tr>
<tr><td align=right>Dbt </td><td>&nbsp;<a href="../api_cxx/dbt_class.html#DB_DBT_PARTIAL">DB_DBT_PARTIAL</a></td></tr>
<tr><td align=right>Dbt </td><td>&nbsp;<a href="../api_cxx/dbt_class.html#DB_DBT_REALLOC">DB_DBT_REALLOC</a></td></tr>
<tr><td align=right>Dbt </td><td>&nbsp;<a href="../api_cxx/dbt_class.html#DB_DBT_USERMEM">DB_DBT_USERMEM</a></td></tr>
<tr><td align=right>DbMpoolFile::open </td><td>&nbsp;<a href="../api_cxx/memp_fopen.html#DB_DIRECT">DB_DIRECT</a></td></tr>
<tr><td align=right>DbEnv::set_flags </td><td>&nbsp;<a href="../api_cxx/env_set_flags.html#DB_DIRECT_DB">DB_DIRECT_DB</a></td></tr>
<tr><td align=right>DbEnv::set_flags </td><td>&nbsp;<a href="../api_cxx/env_set_flags.html#DB_DIRECT_LOG">DB_DIRECT_LOG</a></td></tr>
-<tr><td align=right></td><td>&nbsp;<a href="../api_cxx/db_associate.html#3">DB_DONOTINDEX</a></td></tr>
+<tr><td align=right>Db::associate </td><td>&nbsp;<a href="../api_cxx/db_associate.html#DB_DONOTINDEX">DB_DONOTINDEX</a></td></tr>
<tr><td align=right>DbEnv::set_flags </td><td>&nbsp;<a href="../api_cxx/env_set_flags.html#DB_DSYNC_DB">DB_DSYNC_DB</a></td></tr>
<tr><td align=right>DbEnv::set_flags </td><td>&nbsp;<a href="../api_cxx/env_set_flags.html#DB_DSYNC_LOG">DB_DSYNC_LOG</a></td></tr>
<tr><td align=right>Db::set_flags </td><td>&nbsp;<a href="../api_cxx/db_set_flags.html#DB_DUP">DB_DUP</a></td></tr>
@@ -140,8 +149,10 @@
<tr><td align=right>DbEnv::set_encrypt </td><td>&nbsp;<a href="../api_cxx/env_set_encrypt.html#DB_ENCRYPT_AES">DB_ENCRYPT_AES</a></td></tr>
<tr><td align=right>DbEnv::set_event_notify </td><td>&nbsp;<a href="../api_cxx/env_event_notify.html#DB_EVENT_PANIC">DB_EVENT_PANIC</a></td></tr>
<tr><td align=right>DbEnv::set_event_notify </td><td>&nbsp;<a href="../api_cxx/env_event_notify.html#DB_EVENT_REP_CLIENT">DB_EVENT_REP_CLIENT</a></td></tr>
+<tr><td align=right>DbEnv::set_event_notify </td><td>&nbsp;<a href="../api_cxx/env_event_notify.html#DB_EVENT_REP_ELECTED">DB_EVENT_REP_ELECTED</a></td></tr>
<tr><td align=right>DbEnv::set_event_notify </td><td>&nbsp;<a href="../api_cxx/env_event_notify.html#DB_EVENT_REP_MASTER">DB_EVENT_REP_MASTER</a></td></tr>
<tr><td align=right>DbEnv::set_event_notify </td><td>&nbsp;<a href="../api_cxx/env_event_notify.html#DB_EVENT_REP_NEWMASTER">DB_EVENT_REP_NEWMASTER</a></td></tr>
+<tr><td align=right>DbEnv::set_event_notify </td><td>&nbsp;<a href="../api_cxx/env_event_notify.html#DB_EVENT_REP_PERM_FAILED">DB_EVENT_REP_PERM_FAILED</a></td></tr>
<tr><td align=right>DbEnv::set_event_notify </td><td>&nbsp;<a href="../api_cxx/env_event_notify.html#DB_EVENT_REP_STARTUPDONE">DB_EVENT_REP_STARTUPDONE</a></td></tr>
<tr><td align=right>DbEnv::set_event_notify </td><td>&nbsp;<a href="../api_cxx/env_event_notify.html#DB_EVENT_WRITE_FAILED">DB_EVENT_WRITE_FAILED</a></td></tr>
<tr><td align=right>Db::open </td><td>&nbsp;<a href="../api_cxx/db_open.html#DB_EXCL">DB_EXCL</a></td></tr>
@@ -220,8 +231,6 @@
<tr><td align=right>DbEnv::set_flags </td><td>&nbsp;<a href="../api_cxx/env_set_flags.html#DB_LOG_INMEMORY">DB_LOG_INMEMORY</a></td></tr>
<tr><td align=right>DbMpoolFile::get </td><td>&nbsp;<a href="../api_cxx/memp_fget.html#DB_MPOOL_CREATE">DB_MPOOL_CREATE</a></td></tr>
<tr><td align=right>DbMpoolFile::get </td><td>&nbsp;<a href="../api_cxx/memp_fget.html#DB_MPOOL_DIRTY">DB_MPOOL_DIRTY</a></td></tr>
-<tr><td align=right>DbMpoolFile::put </td><td>&nbsp;<a href="../api_cxx/memp_fput.html#DB_MPOOL_DISCARD">DB_MPOOL_DISCARD</a></td></tr>
-<tr><td align=right>DbMpoolFile::set </td><td>&nbsp;<a href="../api_cxx/memp_fset.html#DB_MPOOL_DISCARD">DB_MPOOL_DISCARD</a></td></tr>
<tr><td align=right>DbMpoolFile::get </td><td>&nbsp;<a href="../api_cxx/memp_fget.html#DB_MPOOL_EDIT">DB_MPOOL_EDIT</a></td></tr>
<tr><td align=right>DbMpoolFile::get </td><td>&nbsp;<a href="../api_cxx/memp_fget.html#DB_MPOOL_LAST">DB_MPOOL_LAST</a></td></tr>
<tr><td align=right>DbMpoolFile::get </td><td>&nbsp;<a href="../api_cxx/memp_fget.html#DB_MPOOL_NEW">DB_MPOOL_NEW</a></td></tr>
@@ -267,22 +276,41 @@
<tr><td align=right>Dbc::dup </td><td>&nbsp;<a href="../api_cxx/dbc_dup.html#DB_POSITION">DB_POSITION</a></td></tr>
<tr><td align=right>Dbc::get </td><td>&nbsp;<a href="../api_cxx/dbc_get.html#DB_PREV">DB_PREV</a></td></tr>
<tr><td align=right>DbLogc::get </td><td>&nbsp;<a href="../api_cxx/logc_get.html#DB_PREV">DB_PREV</a></td></tr>
+<tr><td align=right>Dbc::get </td><td>&nbsp;<a href="../api_cxx/dbc_get.html#DB_PREV_DUP">DB_PREV_DUP</a></td></tr>
<tr><td align=right>Dbc::get </td><td>&nbsp;<a href="../api_cxx/dbc_get.html#DB_PREV_NODUP">DB_PREV_NODUP</a></td></tr>
<tr><td align=right>Db::verify </td><td>&nbsp;<a href="../api_cxx/db_verify.html#DB_PRINTABLE">DB_PRINTABLE</a></td></tr>
+<tr><td align=right>Db::set_priority </td><td>&nbsp;<a href="../api_cxx/db_set_priority.html#DB_PRIORITY_DEFAULT">DB_PRIORITY_DEFAULT</a></td></tr>
+<tr><td align=right>Dbc::set_priority </td><td>&nbsp;<a href="../api_cxx/dbc_set_priority.html#DB_PRIORITY_DEFAULT">DB_PRIORITY_DEFAULT</a></td></tr>
+<tr><td align=right>DbMpoolFile::put </td><td>&nbsp;<a href="../api_cxx/memp_fput.html#DB_PRIORITY_DEFAULT">DB_PRIORITY_DEFAULT</a></td></tr>
<tr><td align=right>DbMpoolFile::set_priority </td><td>&nbsp;<a href="../api_cxx/memp_set_priority.html#DB_PRIORITY_DEFAULT">DB_PRIORITY_DEFAULT</a></td></tr>
+<tr><td align=right>Db::set_priority </td><td>&nbsp;<a href="../api_cxx/db_set_priority.html#DB_PRIORITY_HIGH">DB_PRIORITY_HIGH</a></td></tr>
+<tr><td align=right>Dbc::set_priority </td><td>&nbsp;<a href="../api_cxx/dbc_set_priority.html#DB_PRIORITY_HIGH">DB_PRIORITY_HIGH</a></td></tr>
+<tr><td align=right>DbMpoolFile::put </td><td>&nbsp;<a href="../api_cxx/memp_fput.html#DB_PRIORITY_HIGH">DB_PRIORITY_HIGH</a></td></tr>
<tr><td align=right>DbMpoolFile::set_priority </td><td>&nbsp;<a href="../api_cxx/memp_set_priority.html#DB_PRIORITY_HIGH">DB_PRIORITY_HIGH</a></td></tr>
+<tr><td align=right>Db::set_priority </td><td>&nbsp;<a href="../api_cxx/db_set_priority.html#DB_PRIORITY_LOW">DB_PRIORITY_LOW</a></td></tr>
+<tr><td align=right>Dbc::set_priority </td><td>&nbsp;<a href="../api_cxx/dbc_set_priority.html#DB_PRIORITY_LOW">DB_PRIORITY_LOW</a></td></tr>
+<tr><td align=right>DbMpoolFile::put </td><td>&nbsp;<a href="../api_cxx/memp_fput.html#DB_PRIORITY_LOW">DB_PRIORITY_LOW</a></td></tr>
<tr><td align=right>DbMpoolFile::set_priority </td><td>&nbsp;<a href="../api_cxx/memp_set_priority.html#DB_PRIORITY_LOW">DB_PRIORITY_LOW</a></td></tr>
+<tr><td align=right>DbMpoolFile::put </td><td>&nbsp;<a href="../api_cxx/memp_fput.html#DB_PRIORITY_UNCHANGED">DB_PRIORITY_UNCHANGED</a></td></tr>
+<tr><td align=right>Db::set_priority </td><td>&nbsp;<a href="../api_cxx/db_set_priority.html#DB_PRIORITY_VERY_HIGH">DB_PRIORITY_VERY_HIGH</a></td></tr>
+<tr><td align=right>Dbc::set_priority </td><td>&nbsp;<a href="../api_cxx/dbc_set_priority.html#DB_PRIORITY_VERY_HIGH">DB_PRIORITY_VERY_HIGH</a></td></tr>
+<tr><td align=right>DbMpoolFile::put </td><td>&nbsp;<a href="../api_cxx/memp_fput.html#DB_PRIORITY_VERY_HIGH">DB_PRIORITY_VERY_HIGH</a></td></tr>
<tr><td align=right>DbMpoolFile::set_priority </td><td>&nbsp;<a href="../api_cxx/memp_set_priority.html#DB_PRIORITY_VERY_HIGH">DB_PRIORITY_VERY_HIGH</a></td></tr>
+<tr><td align=right>Db::set_priority </td><td>&nbsp;<a href="../api_cxx/db_set_priority.html#DB_PRIORITY_VERY_LOW">DB_PRIORITY_VERY_LOW</a></td></tr>
+<tr><td align=right>Dbc::set_priority </td><td>&nbsp;<a href="../api_cxx/dbc_set_priority.html#DB_PRIORITY_VERY_LOW">DB_PRIORITY_VERY_LOW</a></td></tr>
+<tr><td align=right>DbMpoolFile::put </td><td>&nbsp;<a href="../api_cxx/memp_fput.html#DB_PRIORITY_VERY_LOW">DB_PRIORITY_VERY_LOW</a></td></tr>
<tr><td align=right>DbMpoolFile::set_priority </td><td>&nbsp;<a href="../api_cxx/memp_set_priority.html#DB_PRIORITY_VERY_LOW">DB_PRIORITY_VERY_LOW</a></td></tr>
<tr><td align=right>DbEnv::open </td><td>&nbsp;<a href="../api_cxx/env_open.html#DB_PRIVATE">DB_PRIVATE</a></td></tr>
<tr><td align=right>Db::open </td><td>&nbsp;<a href="../api_cxx/db_open.html#DB_QUEUE">DB_QUEUE</a></td></tr>
<tr><td align=right>Db::open </td><td>&nbsp;<a href="../api_cxx/db_open.html#DB_RDONLY">DB_RDONLY</a></td></tr>
<tr><td align=right>DbMpoolFile::open </td><td>&nbsp;<a href="../api_cxx/memp_fopen.html#DB_RDONLY">DB_RDONLY</a></td></tr>
<tr><td align=right>Db::cursor </td><td>&nbsp;<a href="../api_cxx/db_cursor.html#DB_READ_COMMITTED">DB_READ_COMMITTED</a></td></tr>
+<tr><td align=right>Db::exists </td><td>&nbsp;<a href="../api_cxx/db_exists.html#DB_READ_COMMITTED">DB_READ_COMMITTED</a></td></tr>
<tr><td align=right>Db::get </td><td>&nbsp;<a href="../api_cxx/db_get.html#DB_READ_COMMITTED">DB_READ_COMMITTED</a></td></tr>
<tr><td align=right>Db::stat </td><td>&nbsp;<a href="../api_cxx/db_stat.html#DB_READ_COMMITTED">DB_READ_COMMITTED</a></td></tr>
<tr><td align=right>DbEnv::txn_begin </td><td>&nbsp;<a href="../api_cxx/txn_begin.html#DB_READ_COMMITTED">DB_READ_COMMITTED</a></td></tr>
<tr><td align=right>Db::cursor </td><td>&nbsp;<a href="../api_cxx/db_cursor.html#DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a></td></tr>
+<tr><td align=right>Db::exists </td><td>&nbsp;<a href="../api_cxx/db_exists.html#DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a></td></tr>
<tr><td align=right>Db::get </td><td>&nbsp;<a href="../api_cxx/db_get.html#DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a></td></tr>
<tr><td align=right>Db::join </td><td>&nbsp;<a href="../api_cxx/db_join.html#DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a></td></tr>
<tr><td align=right>Db::open </td><td>&nbsp;<a href="../api_cxx/db_open.html#DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a></td></tr>
@@ -308,6 +336,7 @@
<tr><td align=right>DbEnv::repmgr_add_remote_site </td><td>&nbsp;<a href="../api_cxx/repmgr_remote_site.html#DB_REPMGR_PEER">DB_REPMGR_PEER</a></td></tr>
<tr><td align=right>DbEnv::rep_set_timeout </td><td>&nbsp;<a href="../api_cxx/rep_timeout.html#DB_REP_ACK_TIMEOUT">DB_REP_ACK_TIMEOUT</a></td></tr>
<tr><td align=right>DbEnv::rep_set_transport </td><td>&nbsp;<a href="../api_cxx/rep_transport.html#DB_REP_ANYWHERE">DB_REP_ANYWHERE</a></td></tr>
+<tr><td align=right>DbEnv::rep_set_timeout </td><td>&nbsp;<a href="../api_cxx/rep_timeout.html#DB_REP_CHECKPOINT_DELAY">DB_REP_CHECKPOINT_DELAY</a></td></tr>
<tr><td align=right>DbEnv::rep_start </td><td>&nbsp;<a href="../api_cxx/rep_start.html#DB_REP_CLIENT">DB_REP_CLIENT</a></td></tr>
<tr><td align=right>DbEnv::repmgr_start </td><td>&nbsp;<a href="../api_cxx/repmgr_start.html#DB_REP_CLIENT">DB_REP_CLIENT</a></td></tr>
<tr><td align=right>DbEnv::rep_set_config </td><td>&nbsp;<a href="../api_cxx/rep_config.html#DB_REP_CONF_BULK">DB_REP_CONF_BULK</a></td></tr>
@@ -319,7 +348,7 @@
<tr><td align=right>DbEnv::repmgr_start </td><td>&nbsp;<a href="../api_cxx/repmgr_start.html#DB_REP_ELECTION">DB_REP_ELECTION</a></td></tr>
<tr><td align=right>DbEnv::rep_set_timeout </td><td>&nbsp;<a href="../api_cxx/rep_timeout.html#DB_REP_ELECTION_RETRY">DB_REP_ELECTION_RETRY</a></td></tr>
<tr><td align=right>DbEnv::rep_set_timeout </td><td>&nbsp;<a href="../api_cxx/rep_timeout.html#DB_REP_ELECTION_TIMEOUT">DB_REP_ELECTION_TIMEOUT</a></td></tr>
-<tr><td align=right>DbEnv::repmgr_start </td><td>&nbsp;<a href="../api_cxx/repmgr_start.html#DB_REP_FULL_ELECTION">DB_REP_FULL_ELECTION</a></td></tr>
+<tr><td align=right>DbEnv::rep_set_timeout </td><td>&nbsp;<a href="../api_cxx/rep_timeout.html#DB_REP_FULL_ELECTION_TIMEOUT">DB_REP_FULL_ELECTION_TIMEOUT</a></td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../api_cxx/db_put.html#2">DB_REP_HANDLE_DEAD</a></td></tr>
<tr><td align=right>DbEnv::rep_process_message </td><td>&nbsp;<a href="../api_cxx/rep_message.html#DB_REP_HOLDELECTION">DB_REP_HOLDELECTION</a></td></tr>
<tr><td align=right>DbEnv::rep_process_message </td><td>&nbsp;<a href="../api_cxx/rep_message.html#DB_REP_IGNORE">DB_REP_IGNORE</a></td></tr>
@@ -328,7 +357,6 @@
<tr><td align=right></td><td>&nbsp;<a href="../api_cxx/db_put.html#3">DB_REP_LOCKOUT</a></td></tr>
<tr><td align=right>DbEnv::rep_start </td><td>&nbsp;<a href="../api_cxx/rep_start.html#DB_REP_MASTER">DB_REP_MASTER</a></td></tr>
<tr><td align=right>DbEnv::repmgr_start </td><td>&nbsp;<a href="../api_cxx/repmgr_start.html#DB_REP_MASTER">DB_REP_MASTER</a></td></tr>
-<tr><td align=right>DbEnv::rep_process_message </td><td>&nbsp;<a href="../api_cxx/rep_message.html#DB_REP_NEWMASTER">DB_REP_NEWMASTER</a></td></tr>
<tr><td align=right>DbEnv::rep_process_message </td><td>&nbsp;<a href="../api_cxx/rep_message.html#DB_REP_NEWSITE">DB_REP_NEWSITE</a></td></tr>
<tr><td align=right>DbEnv::rep_set_transport </td><td>&nbsp;<a href="../api_cxx/rep_transport.html#DB_REP_NOBUFFER">DB_REP_NOBUFFER</a></td></tr>
<tr><td align=right>DbEnv::rep_process_message </td><td>&nbsp;<a href="../api_cxx/rep_message.html#DB_REP_NOTPERM">DB_REP_NOTPERM</a></td></tr>
@@ -336,6 +364,7 @@
<tr><td align=right>DbEnv::rep_set_transport </td><td>&nbsp;<a href="../api_cxx/rep_transport.html#DB_REP_REREQUEST">DB_REP_REREQUEST</a></td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../api_cxx/rep_elect.html#2">DB_REP_UNAVAIL</a></td></tr>
<tr><td align=right>Db::set_flags </td><td>&nbsp;<a href="../api_cxx/db_set_flags.html#DB_REVSPLITOFF">DB_REVSPLITOFF</a></td></tr>
+<tr><td align=right>Db::exists </td><td>&nbsp;<a href="../api_cxx/db_exists.html#DB_RMW">DB_RMW</a></td></tr>
<tr><td align=right>Db::get </td><td>&nbsp;<a href="../api_cxx/db_get.html#DB_RMW">DB_RMW</a></td></tr>
<tr><td align=right>Db::join </td><td>&nbsp;<a href="../api_cxx/db_join.html#DB_RMW">DB_RMW</a></td></tr>
<tr><td align=right>Dbc::get </td><td>&nbsp;<a href="../api_cxx/dbc_get.html#DB_RMW">DB_RMW</a></td></tr>
@@ -362,14 +391,15 @@
<tr><td align=right>DbEnv::memp_stat </td><td>&nbsp;<a href="../api_cxx/memp_stat.html#DB_STAT_ALL">DB_STAT_ALL</a></td></tr>
<tr><td align=right>DbEnv::mutex_stat </td><td>&nbsp;<a href="../api_cxx/mutex_stat.html#DB_STAT_ALL">DB_STAT_ALL</a></td></tr>
<tr><td align=right>DbEnv::rep_stat </td><td>&nbsp;<a href="../api_cxx/rep_stat.html#DB_STAT_ALL">DB_STAT_ALL</a></td></tr>
+<tr><td align=right>DbEnv::repmgr_stat </td><td>&nbsp;<a href="../api_cxx/repmgr_stat.html#DB_STAT_ALL">DB_STAT_ALL</a></td></tr>
<tr><td align=right>DbEnv::txn_stat </td><td>&nbsp;<a href="../api_cxx/txn_stat.html#DB_STAT_ALL">DB_STAT_ALL</a></td></tr>
-<tr><td align=right>Db::stat </td><td>&nbsp;<a href="../api_cxx/db_stat.html#DB_STAT_CLEAR">DB_STAT_CLEAR</a></td></tr>
<tr><td align=right>DbEnv::stat_print </td><td>&nbsp;<a href="../api_cxx/env_stat.html#DB_STAT_CLEAR">DB_STAT_CLEAR</a></td></tr>
<tr><td align=right>DbEnv::lock_stat </td><td>&nbsp;<a href="../api_cxx/lock_stat.html#DB_STAT_CLEAR">DB_STAT_CLEAR</a></td></tr>
<tr><td align=right>DbEnv::log_stat </td><td>&nbsp;<a href="../api_cxx/log_stat.html#DB_STAT_CLEAR">DB_STAT_CLEAR</a></td></tr>
<tr><td align=right>DbEnv::memp_stat </td><td>&nbsp;<a href="../api_cxx/memp_stat.html#DB_STAT_CLEAR">DB_STAT_CLEAR</a></td></tr>
<tr><td align=right>DbEnv::mutex_stat </td><td>&nbsp;<a href="../api_cxx/mutex_stat.html#DB_STAT_CLEAR">DB_STAT_CLEAR</a></td></tr>
<tr><td align=right>DbEnv::rep_stat </td><td>&nbsp;<a href="../api_cxx/rep_stat.html#DB_STAT_CLEAR">DB_STAT_CLEAR</a></td></tr>
+<tr><td align=right>DbEnv::repmgr_stat </td><td>&nbsp;<a href="../api_cxx/repmgr_stat.html#DB_STAT_CLEAR">DB_STAT_CLEAR</a></td></tr>
<tr><td align=right>DbSequence::stat </td><td>&nbsp;<a href="../api_cxx/seq_stat.html#DB_STAT_CLEAR">DB_STAT_CLEAR</a></td></tr>
<tr><td align=right>DbEnv::txn_stat </td><td>&nbsp;<a href="../api_cxx/txn_stat.html#DB_STAT_CLEAR">DB_STAT_CLEAR</a></td></tr>
<tr><td align=right>DbEnv::lock_stat </td><td>&nbsp;<a href="../api_cxx/lock_stat.html#DB_STAT_LOCK_CONF">DB_STAT_LOCK_CONF</a></td></tr>
@@ -394,6 +424,7 @@
<tr><td align=right>DbEnv::txn_begin </td><td>&nbsp;<a href="../api_cxx/txn_begin.html#DB_TXN_NOSYNC">DB_TXN_NOSYNC</a></td></tr>
<tr><td align=right>DbTxn::commit </td><td>&nbsp;<a href="../api_cxx/txn_commit.html#DB_TXN_NOSYNC">DB_TXN_NOSYNC</a></td></tr>
<tr><td align=right>Db::set_flags </td><td>&nbsp;<a href="../api_cxx/db_set_flags.html#DB_TXN_NOT_DURABLE">DB_TXN_NOT_DURABLE</a></td></tr>
+<tr><td align=right>DbEnv::set_flags </td><td>&nbsp;<a href="../api_cxx/env_set_flags.html#DB_TXN_NOWAIT">DB_TXN_NOWAIT</a></td></tr>
<tr><td align=right>DbEnv::txn_begin </td><td>&nbsp;<a href="../api_cxx/txn_begin.html#DB_TXN_NOWAIT">DB_TXN_NOWAIT</a></td></tr>
<tr><td align=right>DbEnv::set_app_dispatch </td><td>&nbsp;<a href="../api_cxx/env_set_app_dispatch.html#DB_TXN_PRINT">DB_TXN_PRINT</a></td></tr>
<tr><td align=right>Db::cursor </td><td>&nbsp;<a href="../api_cxx/db_cursor.html#DB_TXN_SNAPSHOT">DB_TXN_SNAPSHOT</a></td></tr>
@@ -401,7 +432,9 @@
<tr><td align=right>DbEnv::txn_begin </td><td>&nbsp;<a href="../api_cxx/txn_begin.html#DB_TXN_SNAPSHOT">DB_TXN_SNAPSHOT</a></td></tr>
<tr><td align=right>DbEnv::txn_begin </td><td>&nbsp;<a href="../api_cxx/txn_begin.html#DB_TXN_SYNC">DB_TXN_SYNC</a></td></tr>
<tr><td align=right>DbTxn::commit </td><td>&nbsp;<a href="../api_cxx/txn_commit.html#DB_TXN_SYNC">DB_TXN_SYNC</a></td></tr>
+<tr><td align=right>DbEnv::txn_begin </td><td>&nbsp;<a href="../api_cxx/txn_begin.html#DB_TXN_WAIT">DB_TXN_WAIT</a></td></tr>
<tr><td align=right>DbEnv::set_flags </td><td>&nbsp;<a href="../api_cxx/env_set_flags.html#DB_TXN_WRITE_NOSYNC">DB_TXN_WRITE_NOSYNC</a></td></tr>
+<tr><td align=right>DbEnv::txn_begin </td><td>&nbsp;<a href="../api_cxx/txn_begin.html#DB_TXN_WRITE_NOSYNC">DB_TXN_WRITE_NOSYNC</a></td></tr>
<tr><td align=right>Db::open </td><td>&nbsp;<a href="../api_cxx/db_open.html#DB_UNKNOWN">DB_UNKNOWN</a></td></tr>
<tr><td align=right>Db::set_feedback </td><td>&nbsp;<a href="../api_cxx/db_set_feedback.html#DB_UPGRADE">DB_UPGRADE</a></td></tr>
<tr><td align=right>DbEnv::open </td><td>&nbsp;<a href="../api_cxx/env_open.html#DB_USE_ENVIRON">DB_USE_ENVIRON</a></td></tr>
@@ -409,6 +442,8 @@
<tr><td align=right>DbEnv::open </td><td>&nbsp;<a href="../api_cxx/env_open.html#DB_USE_ENVIRON_ROOT">DB_USE_ENVIRON_ROOT</a></td></tr>
<tr><td align=right>DbEnv::remove </td><td>&nbsp;<a href="../api_cxx/env_remove.html#DB_USE_ENVIRON_ROOT">DB_USE_ENVIRON_ROOT</a></td></tr>
<tr><td align=right>DbEnv::set_verbose </td><td>&nbsp;<a href="../api_cxx/env_set_verbose.html#DB_VERB_DEADLOCK">DB_VERB_DEADLOCK</a></td></tr>
+<tr><td align=right>DbEnv::set_verbose </td><td>&nbsp;<a href="../api_cxx/env_set_verbose.html#DB_VERB_FILEOPS">DB_VERB_FILEOPS</a></td></tr>
+<tr><td align=right>DbEnv::set_verbose </td><td>&nbsp;<a href="../api_cxx/env_set_verbose.html#DB_VERB_FILEOPS_ALL">DB_VERB_FILEOPS_ALL</a></td></tr>
<tr><td align=right>DbEnv::set_verbose </td><td>&nbsp;<a href="../api_cxx/env_set_verbose.html#DB_VERB_RECOVERY">DB_VERB_RECOVERY</a></td></tr>
<tr><td align=right>DbEnv::set_verbose </td><td>&nbsp;<a href="../api_cxx/env_set_verbose.html#DB_VERB_REGISTER">DB_VERB_REGISTER</a></td></tr>
<tr><td align=right>DbEnv::set_verbose </td><td>&nbsp;<a href="../api_cxx/env_set_verbose.html#DB_VERB_REPLICATION">DB_VERB_REPLICATION</a></td></tr>
@@ -422,7 +457,6 @@
<tr><td align=right>DbEnv::set_flags </td><td>&nbsp;<a href="../api_cxx/env_set_flags.html#DB_YIELDCPU">DB_YIELDCPU</a></td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../ref/lock/dead.html#2">deadlocks</a></td></tr>
<tr><td align=right>introduction to </td><td>&nbsp;<a href="../ref/debug/intro.html#2">debugging</a></td></tr>
-<tr><td align=right></td><td>&nbsp;<a href="../ref/debug/common.html#2">debugging</a> applications</td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../ref/transapp/read.html#8">degree</a> 1 isolation</td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../ref/transapp/read.html#6">degree</a> 2 isolation</td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../ref/am_misc/stability.html#4">degrees</a> of isolation</td></tr>
@@ -463,7 +497,7 @@
<tr><td align=right>remote </td><td>&nbsp;<a href="../ref/env/remote.html#2">filesystems</a></td></tr>
<tr><td align=right>page </td><td>&nbsp;<a href="../ref/am_conf/h_ffactor.html#2">fill</a> factor</td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../ref/program/ram.html#2">Flash</a> memory configurations</td></tr>
-<tr><td align=right>configuring a small memory </td><td>&nbsp;<a href="../ref/build_unix/conf.html#12">footprint</a> library</td></tr>
+<tr><td align=right>configuring a small memory </td><td>&nbsp;<a href="../ref/build_unix/conf.html#13">footprint</a> library</td></tr>
<tr><td align=right>Berkeley DB </td><td>&nbsp;<a href="../ref/program/scope.html#3">free-threaded</a> handles</td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../ref/build_unix/freebsd.html#2">FreeBSD</a></td></tr>
<tr><td align=right>specifying a database </td><td>&nbsp;<a href="../ref/am_conf/h_hash.html#2">hash</a></td></tr>
@@ -554,7 +588,7 @@
<tr><td align=right></td><td>&nbsp;<a href="../ref/am/curget.html#2">retrieving</a> records with a cursor</td></tr>
<tr><td align=right>turn off </td><td>&nbsp;<a href="../api_cxx/db_set_flags.html#8">reverse</a> splits in Btree databases</td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../ref/rpc/client.html#2">RPC</a> client</td></tr>
-<tr><td align=right>configuring a </td><td>&nbsp;<a href="../ref/build_unix/conf.html#11">RPC</a> client/server</td></tr>
+<tr><td align=right>configuring a </td><td>&nbsp;<a href="../ref/build_unix/conf.html#12">RPC</a> client/server</td></tr>
<tr><td align=right>introduction to </td><td>&nbsp;<a href="../ref/rpc/intro.html#2">rpc</a> client/server</td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../ref/rpc/faq.html#2">RPC</a> FAQ</td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../ref/rpc/server.html#2">RPC</a> server</td></tr>
@@ -581,11 +615,11 @@
<tr><td align=right></td><td>&nbsp;<a href="../ref/build_unix/sunos.html#2">SunOS</a></td></tr>
<tr><td align=right>loading Berkeley DB with </td><td>&nbsp;<a href="../ref/tcl/intro.html#2">Tcl</a></td></tr>
<tr><td align=right>using Berkeley DB with </td><td>&nbsp;<a href="../ref/tcl/using.html#2">Tcl</a></td></tr>
-<tr><td align=right>configuring the </td><td>&nbsp;<a href="../ref/build_unix/conf.html#13">Tcl</a> API</td></tr>
+<tr><td align=right>configuring the </td><td>&nbsp;<a href="../ref/build_unix/conf.html#14">Tcl</a> API</td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../ref/tcl/program.html#2">Tcl</a> API programming notes</td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../ref/tcl/faq.html#3">Tcl</a> FAQ</td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../api_cxx/env_set_tmp_dir.html#2">temporary</a> files</td></tr>
-<tr><td align=right>configuring the </td><td>&nbsp;<a href="../ref/build_unix/conf.html#14">test</a> suite</td></tr>
+<tr><td align=right>configuring the </td><td>&nbsp;<a href="../ref/build_unix/conf.html#15">test</a> suite</td></tr>
<tr><td align=right>running the </td><td>&nbsp;<a href="../ref/test/run.html#2">test</a> suite</td></tr>
<tr><td align=right>running the </td><td>&nbsp;<a href="../ref/build_unix/test.html#2">test</a> suite under UNIX</td></tr>
<tr><td align=right>running the </td><td>&nbsp;<a href="../ref/build_win/test.html#2">test</a> suite under Windows</td></tr>
@@ -633,11 +667,14 @@
<tr><td align=right></td><td>&nbsp;<a href="../ref/upgrade.4.3/toc.html#2">Upgrading</a> to release 4.3</td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../ref/upgrade.4.4/toc.html#2">Upgrading</a> to release 4.4</td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../ref/upgrade.4.5/toc.html#2">Upgrading</a> to release 4.5</td></tr>
+<tr><td align=right></td><td>&nbsp;<a href="../ref/upgrade.4.6/toc.html#2">Upgrading</a> to release 4.6</td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../ref/arch/utilities.html#2">utilities</a></td></tr>
<tr><td align=right>database </td><td>&nbsp;<a href="../ref/am/verify.html#2">verification</a></td></tr>
<tr><td align=right>building for </td><td>&nbsp;<a href="../ref/build_vxworks/faq.html#3">VxWorks</a> FAQ</td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../ref/build_vxworks/notes.html#2">VxWorks</a> notes</td></tr>
<tr><td align=right>running the test suite under </td><td>&nbsp;<a href="../ref/build_win/test.html#3">Windows</a></td></tr>
+<tr><td align=right>building for </td><td>&nbsp;<a href="../ref/build_wince/faq.html#3">Windows</a> CE FAQ</td></tr>
+<tr><td align=right></td><td>&nbsp;<a href="../ref/build_wince/notes.html#2">Windows</a> CE notes</td></tr>
<tr><td align=right>building for </td><td>&nbsp;<a href="../ref/build_win/faq.html#3">Windows</a> FAQ</td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../ref/build_win/notes.html#2">Windows</a> notes</td></tr>
<tr><td align=right></td><td>&nbsp;<a href="../ref/xa/faq.html#3">XA</a> FAQ</td></tr>
@@ -645,6 +682,6 @@
<tr><td align=right></td><td>&nbsp;<a href="../ref/env/region.html#2">__db.001</a></td></tr>
</table>
</center>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/db_associate.html b/db/docs/api_cxx/db_associate.html
index 967c68e5d..3663c332d 100644
--- a/db/docs/api_cxx/db_associate.html
+++ b/db/docs/api_cxx/db_associate.html
@@ -1,6 +1,5 @@
-<!--$Id: db_associate.so,v 10.43 2006/05/17 20:47:46 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: db_associate.so,v 10.46 2007/03/19 19:45:47 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -45,8 +44,9 @@ failure, and returns 0 on success.
</p>
<h3>Parameters</h3>
<dl compact>
-<dt><b>callback</b><dd>The <b>callback</b> parameter is a callback function that creates a
-secondary key from a given primary key and data pair.
+<dt><b>callback</b><dd>The <b>callback</b> parameter is a callback function that creates the
+set of secondary keys corresponding to a given primary key and data
+pair.
<p>The callback parameter may be NULL if both the primary and secondary
database handles were opened with the <a href="../api_cxx/db_open.html#DB_RDONLY">DB_RDONLY</a> flag.</p>
<p>The callback takes four arguments:</p>
@@ -57,21 +57,41 @@ database handles were opened with the <a href="../api_cxx/db_open.html#DB_RDONLY
item.
<dt><b>result</b><dd>The <b>result</b> parameter is a zeroed <a href="../api_cxx/dbt_class.html">Dbt</a> in which the callback
function should fill in <b>data</b> and <b>size</b> fields that describe
-the secondary key.
+the secondary key or keys.
</dl>
-<a name="2"><!--meow--></a>
-<p>If the callback function needs to allocate memory for the <b>data</b>
-field rather than simply pointing into the primary key or datum, the
-<b>flags</b> field of the returned <a href="../api_cxx/dbt_class.html">Dbt</a> should be set to
-DB_DBT_APPMALLOC, which indicates that Berkeley DB should free the
-memory when it is done with it.</p>
-<a name="3"><!--meow--></a>
-<p>If any key/data pair in the primary yields a null secondary key and
+<p>The callback optionally returns some special values:</p>
+<dl compact>
+<dt><a name="DB_DBT_APPMALLOC">DB_DBT_APPMALLOC</a><dd>If the callback function needs to allocate memory for the <b>result</b>
+data field (rather than simply pointing into the primary key or datum),
+DB_DBT_APPMALLOC should be set in the <b>flags</b> field of the
+<b>result</b> <a href="../api_cxx/dbt_class.html">Dbt</a>, which indicates that Berkeley DB should free the
+memory when it is done with it.
+<dt><a name="DB_DBT_MULTIPLE">DB_DBT_MULTIPLE</a><dd>To return multiple secondary keys, DB_DBT_MULTIPLE should be set
+in the <b>flags</b> field of the <b>result</b> <a href="../api_cxx/dbt_class.html">Dbt</a>, which
+indicates Berkeley DB should treat the <b>size</b> field as the number of
+secondary keys (zero or more), and the <b>data</b> field as a pointer
+to an array of that number of <a href="../api_cxx/dbt_class.html">Dbt</a>s describing the set of
+secondary keys.
+<p><b>When multiple secondary keys are returned, keys may not be repeated</b>.
+In other words, there must be no repeated record numbers in the array
+for Recno and Queue databases, and keys must not compare equally using
+the secondary database's comparison function for Btree and Hash
+databases. If keys are repeated, operations may fail and the secondary
+may become inconsistent with the primary.</p>
+<p>The DB_DBT_APPMALLOC flag may be set for any <a href="../api_cxx/dbt_class.html">Dbt</a> in the
+array of returned <a href="../api_cxx/dbt_class.html">Dbt</a>'s to indicate that Berkeley DB should free the
+memory referenced by that particular <a href="../api_cxx/dbt_class.html">Dbt</a>'s data field when it
+is done with it.</p>
+<p>The DB_DBT_APPMALLOC flag may be combined with
+DB_DBT_MULTIPLE in the <b>result</b> <a href="../api_cxx/dbt_class.html">Dbt</a>'s <b>flag</b>
+field to indicate that Berkeley DB should free the array once it is done with
+all of the returned keys.</p>
+<dt><a name="DB_DONOTINDEX">DB_DONOTINDEX</a><dd>If any key/data pair in the primary yields a null secondary key and
should be left out of the secondary index, the callback function may
optionally return DB_DONOTINDEX. Otherwise, the callback
function should return 0 in case of success or an error outside of the
Berkeley DB name space in case of failure; the error code will be returned
-from the Berkeley DB call that initiated the callback.</p>
+from the Berkeley DB call that initiated the callback.
<p>If the callback function returns DB_DONOTINDEX for any key/data
pairs in the primary database, the secondary index will not contain any
reference to those key/data pairs, and such operations as cursor
@@ -79,6 +99,10 @@ iterations and range queries will reflect only the corresponding subset
of the database. If this is not desirable, the application should
ensure that the callback function is well-defined for all possible
values and never returns DB_DONOTINDEX.</p>
+<p>Returning DB_DONOTINDEX is equivalent to setting
+DB_DBT_MULTIPLE on the <b>result</b> <a href="../api_cxx/dbt_class.html">Dbt</a> and setting
+the <b>size</b> field to zero.</p>
+</dl>
<p>Berkeley DB is not re-entrant. Callback functions should not attempt to make
library calls (for example, to release locks or close open handles).
Re-entering Berkeley DB is not guaranteed to work correctly, and the results
@@ -125,15 +149,16 @@ with the <a href="../api_cxx/env_open.html#DB_THREAD">DB_THREAD</a> flag it is s
of control after the Db::associate method has returned. Note also
that either secondary keys must be unique or the secondary database must
be configured with support for duplicate data items.
-<dt><b>txnid</b><dd>If the operation is part of an application-specified
-transaction, the <b>txnid</b> parameter is a transaction handle
-returned from <a href="../api_cxx/txn_begin.html">DbEnv::txn_begin</a>; if the operation is part of a Berkeley DB Concurrent Data Store
-group, the <b>txnid</b> parameter is a handle returned from
-<a href="../api_cxx/env_cdsgroup_begin.html">DbEnv::cdsgroup_begin</a>; otherwise NULL. If no transaction handle is
+<dt><b>txnid</b><dd>If the operation is part of an application-specified transaction, the
+<b>txnid</b> parameter is a transaction handle returned from
+<a href="../api_cxx/txn_begin.html">DbEnv::txn_begin</a>; if the operation is part of a Berkeley DB Concurrent Data Store group, the
+<b>txnid</b> parameter is a handle returned from
+<a href="../api_cxx/env_cdsgroup_begin.html">DbEnv::cdsgroup_begin</a>; otherwise NULL.
+If no transaction handle is
specified, but the
operation occurs in a transactional
database,
-the operation will be implicitly transaction protected.
+the operation will be implicitly transaction protected.
</dl>
<h3>Errors</h3>
<p>The Db::associate method
@@ -161,6 +186,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/db_class.html b/db/docs/api_cxx/db_class.html
index 61b611659..5103a661c 100644
--- a/db/docs/api_cxx/db_class.html
+++ b/db/docs/api_cxx/db_class.html
@@ -1,6 +1,5 @@
<!--$Id: db_class.so,v 10.52 2005/12/01 02:02:58 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -105,6 +104,6 @@ Db
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/db_close.html b/db/docs/api_cxx/db_close.html
index 90529a2d7..6b85a86cd 100644
--- a/db/docs/api_cxx/db_close.html
+++ b/db/docs/api_cxx/db_close.html
@@ -1,6 +1,5 @@
<!--$Id: db_close.so,v 10.55 2004/08/13 03:38:55 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -92,6 +91,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/db_compact.html b/db/docs/api_cxx/db_compact.html
index a3985945e..fe3b4a707 100644
--- a/db/docs/api_cxx/db_compact.html
+++ b/db/docs/api_cxx/db_compact.html
@@ -1,6 +1,5 @@
<!--$Id: db_compact.so,v 1.6 2006/09/08 18:36:02 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -141,6 +140,6 @@ throw a <a href="../api_cxx/lockng_class.html">DbLockNotGrantedException</a> exc
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/db_cursor.html b/db/docs/api_cxx/db_cursor.html
index 77709be8a..16ed07634 100644
--- a/db/docs/api_cxx/db_cursor.html
+++ b/db/docs/api_cxx/db_cursor.html
@@ -1,6 +1,5 @@
-<!--$Id: db_cursor.so,v 10.53 2006/08/08 05:24:02 mjc Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: db_cursor.so,v 10.54 2007/05/31 18:52:36 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -42,18 +41,18 @@ a pointer to the allocated cursor is copied.
<dt><b>flags</b><dd>The <b>flags</b> parameter must be set to 0 or by bitwise inclusively <b>OR</b>'ing together one
or more of the following values:
<dl compact>
-<dt><a name="DB_READ_COMMITTED">DB_READ_COMMITTED</a><dd>This cursor will have degree 2 isolation. This ensures the stability
-of the current data item read by this cursor but permits data read by
-this cursor to be modified or deleted prior to the commit of the
+<dt><a name="DB_READ_COMMITTED">DB_READ_COMMITTED</a><dd>Configure a transactional cursor to have degree 2 isolation. This ensures
+the stability of the current data item read by this cursor but permits data
+read by this cursor to be modified or deleted prior to the commit of the
transaction for this cursor.
-<dt><a name="DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a><dd>This cursor will have degree 1 isolation. Read operations performed by
-the cursor may return modified but not yet committed data. Silently
-ignored if the <a href="../api_cxx/db_open.html#DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a> flag was not specified when
-the underlying database was opened.
+<dt><a name="DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a><dd>Configure a transactional cursor to have degree 1 isolation. Read
+operations performed by the cursor may return modified but not yet
+committed data. Silently ignored if the <a href="../api_cxx/db_open.html#DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a>
+flag was not specified when the underlying database was opened.
<dt><a name="DB_WRITECURSOR">DB_WRITECURSOR</a><dd>Specify that the cursor will be used to update the database. The
underlying database environment must have been opened using the
<a href="../api_cxx/env_open.html#DB_INIT_CDB">DB_INIT_CDB</a> flag.
-<dt><a name="DB_TXN_SNAPSHOT">DB_TXN_SNAPSHOT</a><dd>Specify that the cursor operate with read-only
+<dt><a name="DB_TXN_SNAPSHOT">DB_TXN_SNAPSHOT</a><dd>Configure a transactional cursor to operate with read-only
<a href="../ref/transapp/read.html">snapshot isolation</a>. For databases
with the <a href="../api_cxx/db_open.html#DB_MULTIVERSION">DB_MULTIVERSION</a> flag set, data values will be read as
they are when the cursor is opened, without taking read locks. This
@@ -95,6 +94,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/db_del.html b/db/docs/api_cxx/db_del.html
index a9b0edacd..09affeba0 100644
--- a/db/docs/api_cxx/db_del.html
+++ b/db/docs/api_cxx/db_del.html
@@ -1,6 +1,5 @@
<!--$Id: db_del.so,v 10.49 2006/09/13 14:30:52 mjc Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -47,15 +46,16 @@ failure, and returns 0 on success.
<dl compact>
<dt><b>flags</b><dd>The <b>flags</b> parameter is currently unused, and must be set to 0.
<dt><b>key</b><dd>The key <a href="../api_cxx/dbt_class.html">Dbt</a> operated on.
-<dt><b>txnid</b><dd>If the operation is part of an application-specified
-transaction, the <b>txnid</b> parameter is a transaction handle
-returned from <a href="../api_cxx/txn_begin.html">DbEnv::txn_begin</a>; if the operation is part of a Berkeley DB Concurrent Data Store
-group, the <b>txnid</b> parameter is a handle returned from
-<a href="../api_cxx/env_cdsgroup_begin.html">DbEnv::cdsgroup_begin</a>; otherwise NULL. If no transaction handle is
+<dt><b>txnid</b><dd>If the operation is part of an application-specified transaction, the
+<b>txnid</b> parameter is a transaction handle returned from
+<a href="../api_cxx/txn_begin.html">DbEnv::txn_begin</a>; if the operation is part of a Berkeley DB Concurrent Data Store group, the
+<b>txnid</b> parameter is a handle returned from
+<a href="../api_cxx/env_cdsgroup_begin.html">DbEnv::cdsgroup_begin</a>; otherwise NULL.
+If no transaction handle is
specified, but the
operation occurs in a transactional
database,
-the operation will be implicitly transaction protected.
+the operation will be implicitly transaction protected.
</dl>
<h3>Errors</h3>
<p>The Db::del method
@@ -95,6 +95,6 @@ throw a <a href="../api_cxx/lockng_class.html">DbLockNotGrantedException</a> exc
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/db_err.html b/db/docs/api_cxx/db_err.html
index 1b083aab4..192c3a1c6 100644
--- a/db/docs/api_cxx/db_err.html
+++ b/db/docs/api_cxx/db_err.html
@@ -1,7 +1,6 @@
<!--$Id: db_err.so,v 1.3 2002/08/18 21:15:48 bostic Exp $-->
<!--$Id: env_err.so,v 10.34 2006/04/27 20:17:47 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -80,6 +79,6 @@ string.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/db_exists.html b/db/docs/api_cxx/db_exists.html
new file mode 100644
index 000000000..c2d74107c
--- /dev/null
+++ b/db/docs/api_cxx/db_exists.html
@@ -0,0 +1,82 @@
+<!--$Id: db_exists.so,v 1.1 2007/07/12 18:27:42 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
+<!--See the file LICENSE for redistribution information.-->
+<html>
+<head>
+<title>Berkeley DB: Db::exists</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
+</head>
+<body bgcolor=white>
+<table width="100%"><tr valign=top>
+<td>
+<h3>Db::exists</h3>
+</td>
+<td align=right>
+<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a>
+<a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a></td>
+</tr></table>
+<hr size=1 noshade>
+<tt>
+<h3><pre>
+#include &lt;db_cxx.h&gt;
+<p>
+int
+Db::exists(DbTxn *txnid, Dbt *key, u_int32_t flags);
+</pre></h3>
+<hr size=1 noshade>
+<h3>Description: Db::exists</h3>
+<p>The Db::exists method returns if the specified key appears in the
+database.</p>
+<p>The Db::exists method will return <a href="../ref/program/errorret.html#DB_NOTFOUND">DB_NOTFOUND</a> if the specified key is not in the database.
+The Db::exists method will return <a href="../ref/program/errorret.html#DB_KEYEMPTY">DB_KEYEMPTY</a> if the database is a Queue or Recno database and
+the specified key exists, but was never explicitly created by the
+application or was later deleted.
+Unless otherwise specified, the Db::exists 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.
+</p>
+<h3>Parameters</h3>
+<dl compact>
+<dt><b>flags</b><dd>The <b>flags</b> parameter must be set to 0 or
+one of the following values:
+In addition, the following flags may be set by
+bitwise inclusively <b>OR</b>'ing them into the <b>flags</b> parameter:
+<dl compact>
+<dt><a name="DB_READ_COMMITTED">DB_READ_COMMITTED</a><dd>Configure a transactional read operation to have degree 2 isolation (the
+read is not repeatable).
+<dt><a name="DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a><dd>Configure a transactional read operation to have degree 1 isolation,
+reading modified but not yet committed data. Silently ignored if the
+<a href="../api_cxx/db_open.html#DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a> flag was not specified when the underlying
+database was opened.
+<dt><a name="DB_RMW">DB_RMW</a><dd>Acquire write locks instead of read locks when doing the read, if
+locking is configured. Setting this flag can eliminate deadlock during
+a read-modify-write cycle by acquiring the write lock during the read
+part of the cycle so that another thread of control acquiring a read
+lock for the same item, in its own read-modify-write cycle, will not
+result in deadlock.
+<p>Because the Db::exists method will not hold locks across
+Berkeley DB calls in non-transactional operations, the <a href="../api_cxx/dbc_get.html#DB_RMW">DB_RMW</a> flag to
+the Db::exists call is meaningful only in the presence of
+transactions.</p>
+</dl>
+<dt><b>key</b><dd>The key <a href="../api_cxx/dbt_class.html">Dbt</a> operated on.
+<dt><b>txnid</b><dd>If the operation is part of an application-specified transaction, the
+<b>txnid</b> parameter is a transaction handle returned from
+<a href="../api_cxx/txn_begin.html">DbEnv::txn_begin</a>; if the operation is part of a Berkeley DB Concurrent Data Store group, the
+<b>txnid</b> parameter is a handle returned from
+<a href="../api_cxx/env_cdsgroup_begin.html">DbEnv::cdsgroup_begin</a>; otherwise NULL.
+</dl>
+<hr size=1 noshade>
+<h3>Class</h3>
+<a href="../api_cxx/db_class.html">Db</a>
+<h3>See Also</h3>
+<a href="../api_cxx/db_list.html">Databases and Related Methods</a>
+</tt>
+<table width="100%"><tr><td><br></td><td align=right>
+<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
+</body>
+</html>
diff --git a/db/docs/api_cxx/db_fd.html b/db/docs/api_cxx/db_fd.html
index b0440c39b..d9c740c29 100644
--- a/db/docs/api_cxx/db_fd.html
+++ b/db/docs/api_cxx/db_fd.html
@@ -1,6 +1,5 @@
<!--$Id: db_fd.so,v 10.31 2005/06/14 14:06:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -54,6 +53,6 @@ failure, and returns 0 on success.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/db_get.html b/db/docs/api_cxx/db_get.html
index 304b9e645..0b797fe9d 100644
--- a/db/docs/api_cxx/db_get.html
+++ b/db/docs/api_cxx/db_get.html
@@ -1,6 +1,5 @@
-<!--$Id: db_get.so,v 10.89 2006/09/13 14:30:52 mjc Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: db_get.so,v 10.90 2007/05/31 18:52:36 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -121,17 +120,18 @@ into secondary indices using the <a href="../api_cxx/db_associate.html">Db::asso
<p>See
<a href="../api_cxx/dbt_bulk_class.html">DbMultipleDataIterator</a>
for more information.</p>
-<dt><a name="DB_READ_COMMITTED">DB_READ_COMMITTED</a><dd>Perform the get operation with degree 2 isolation. The read is not
-repeatable.
-<dt><a name="DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a><dd>Perform the get operation with degree 1 isolation, reading modified but
-not yet committed data. Silently ignored if the
+<dt><a name="DB_READ_COMMITTED">DB_READ_COMMITTED</a><dd>Configure a transactional get operation to have degree 2 isolation (the
+read is not repeatable).
+<dt><a name="DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a><dd>Configure a transactional get operation to have degree 1 isolation,
+reading modified but not yet committed data. Silently ignored if the
<a href="../api_cxx/db_open.html#DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a> flag was not specified when the underlying
database was opened.
-<dt><a name="DB_RMW">DB_RMW</a><dd>Acquire write locks instead of read locks when doing the retrieval.
-Setting this flag can eliminate deadlock during a read-modify-write
-cycle by acquiring the write lock during the read part of the cycle so
-that another thread of control acquiring a read lock for the same item,
-in its own read-modify-write cycle, will not result in deadlock.
+<dt><a name="DB_RMW">DB_RMW</a><dd>Acquire write locks instead of read locks when doing the read, if
+locking is configured. Setting this flag can eliminate deadlock during
+a read-modify-write cycle by acquiring the write lock during the read
+part of the cycle so that another thread of control acquiring a read
+lock for the same item, in its own read-modify-write cycle, will not
+result in deadlock.
<p>Because the Db::get method will not hold locks across
Berkeley DB calls in non-transactional operations, the <a href="../api_cxx/dbc_get.html#DB_RMW">DB_RMW</a> flag
to the Db::get call is meaningful only in the presence of
@@ -139,15 +139,16 @@ transactions.</p>
</dl>
<dt><b>key</b><dd>The key <a href="../api_cxx/dbt_class.html">Dbt</a> operated on.
<dt><b>pkey</b><dd>The <b>pkey</b> parameter is the return key from the primary database.
-<dt><b>txnid</b><dd>If the operation is part of an application-specified
-transaction, the <b>txnid</b> parameter is a transaction handle
-returned from <a href="../api_cxx/txn_begin.html">DbEnv::txn_begin</a>; if the operation is part of a Berkeley DB Concurrent Data Store
-group, the <b>txnid</b> parameter is a handle returned from
-<a href="../api_cxx/env_cdsgroup_begin.html">DbEnv::cdsgroup_begin</a>; otherwise NULL. If no transaction handle is
+<dt><b>txnid</b><dd>If the operation is part of an application-specified transaction, the
+<b>txnid</b> parameter is a transaction handle returned from
+<a href="../api_cxx/txn_begin.html">DbEnv::txn_begin</a>; if the operation is part of a Berkeley DB Concurrent Data Store group, the
+<b>txnid</b> parameter is a handle returned from
+<a href="../api_cxx/env_cdsgroup_begin.html">DbEnv::cdsgroup_begin</a>; otherwise NULL.
+If no transaction handle is
specified, but the
operation occurs in a transactional
database,
-the operation will be implicitly transaction protected.
+the operation will be implicitly transaction protected.
</dl>
<h3>Errors</h3>
<p>The Db::get method
@@ -197,6 +198,6 @@ throw a <a href="../api_cxx/lockng_class.html">DbLockNotGrantedException</a> exc
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/db_get_byteswapped.html b/db/docs/api_cxx/db_get_byteswapped.html
index 50169a3d8..82075514f 100644
--- a/db/docs/api_cxx/db_get_byteswapped.html
+++ b/db/docs/api_cxx/db_get_byteswapped.html
@@ -1,6 +1,5 @@
<!--$Id: db_get_byteswapped.so,v 10.23 2004/08/13 03:38:55 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -67,6 +66,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/db_get_mpf.html b/db/docs/api_cxx/db_get_mpf.html
index b92c1074f..7419aaa70 100644
--- a/db/docs/api_cxx/db_get_mpf.html
+++ b/db/docs/api_cxx/db_get_mpf.html
@@ -1,6 +1,5 @@
<!--$Id: db_get_mpf.so,v 1.8 2005/07/20 16:22:18 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -39,6 +38,6 @@ application.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/db_get_type.html b/db/docs/api_cxx/db_get_type.html
index a519b8fb4..da16c3231 100644
--- a/db/docs/api_cxx/db_get_type.html
+++ b/db/docs/api_cxx/db_get_type.html
@@ -1,6 +1,5 @@
<!--$Id: db_get_type.so,v 10.27 2004/08/13 03:38:55 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -63,6 +62,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/db_getenv.html b/db/docs/api_cxx/db_getenv.html
index 2c501c008..2e36d41d4 100644
--- a/db/docs/api_cxx/db_getenv.html
+++ b/db/docs/api_cxx/db_getenv.html
@@ -1,6 +1,5 @@
<!--$Id: db_getenv.so,v 10.9 2005/07/20 16:22:49 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -39,6 +38,6 @@ application.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/db_join.html b/db/docs/api_cxx/db_join.html
index 08ca7c37f..f1fc2b85c 100644
--- a/db/docs/api_cxx/db_join.html
+++ b/db/docs/api_cxx/db_join.html
@@ -1,6 +1,5 @@
-<!--$Id: db_join.so,v 10.57 2005/02/10 20:02:28 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: db_join.so,v 10.58 2007/05/31 18:52:36 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -51,14 +50,16 @@ The data parameter is left unchanged.
In addition, the following flag may be set by
bitwise inclusively <b>OR</b>'ing it into the <b>flags</b> parameter:
<dl compact>
-<dt><a name="DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a><dd>Read modified but not yet committed data. Silently ignored if the
+<dt><a name="DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a><dd>Configure a transactional join operation to have degree 1 isolation,
+reading modified but not yet committed data. Silently ignored if the
<a href="../api_cxx/db_open.html#DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a> flag was not specified when the underlying
database was opened.
-<dt><a name="DB_RMW">DB_RMW</a><dd>Acquire write locks instead of read locks when doing the retrieval.
-Setting this flag can eliminate deadlock during a read-modify-write
-cycle by acquiring the write lock during the read part of the cycle so
-that another thread of control acquiring a read lock for the same item,
-in its own read-modify-write cycle, will not result in deadlock.
+<dt><a name="DB_RMW">DB_RMW</a><dd>Acquire write locks instead of read locks when doing the read, if
+locking is configured. Setting this flag can eliminate deadlock during
+a read-modify-write cycle by acquiring the write lock during the read
+part of the cycle so that another thread of control acquiring a read
+lock for the same item, in its own read-modify-write cycle, will not
+result in deadlock.
</dl>
<dt><a href="../api_cxx/dbc_close.html">Dbc::close</a><dd>Close the returned cursor and release all resources. (Closing the cursors
in <b>curslist</b> is the responsibility of the caller.)
@@ -130,6 +131,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/db_key_range.html b/db/docs/api_cxx/db_key_range.html
index 7db750f40..b6d45aa0e 100644
--- a/db/docs/api_cxx/db_key_range.html
+++ b/db/docs/api_cxx/db_key_range.html
@@ -1,6 +1,5 @@
<!--$Id: db_key_range.so,v 10.23 2004/08/13 03:38:55 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -59,15 +58,17 @@ contains three elements of type double: <b>less</b>, <b>equal</b>, and
field <b>less</b> is 0.05, 5% of the keys in the database are less than
the <b>key</b> parameter. The value for <b>equal</b> will be zero if
there is no matching key, and will be non-zero otherwise.
-<dt><b>txnid</b><dd>If the operation is part of an application-specified
-transaction, the <b>txnid</b> parameter is a transaction handle
-returned from <a href="../api_cxx/txn_begin.html">DbEnv::txn_begin</a>; if the operation is part of a Berkeley DB Concurrent Data Store
-group, the <b>txnid</b> parameter is a handle returned from
-<a href="../api_cxx/env_cdsgroup_begin.html">DbEnv::cdsgroup_begin</a>; otherwise NULL. If no transaction handle is
+<dt><b>txnid</b><dd>If the operation is part of an application-specified transaction, the
+<b>txnid</b> parameter is a transaction handle returned from
+<a href="../api_cxx/txn_begin.html">DbEnv::txn_begin</a>; if the operation is part of a Berkeley DB Concurrent Data Store group, the
+<b>txnid</b> parameter is a handle returned from
+<a href="../api_cxx/env_cdsgroup_begin.html">DbEnv::cdsgroup_begin</a>; otherwise NULL.
+If no transaction handle is
specified, but the
operation occurs in a transactional
database,
-the operation will be implicitly transaction protected. The Db::key_range method does not retain the locks it acquires for the
+the operation will be implicitly transaction protected.
+The Db::key_range method does not retain the locks it acquires for the
life of the transaction, so estimates may not be repeatable.
<dt><b>flags</b><dd>The <b>flags</b> parameter is currently unused, and must be set to 0.
</dl>
@@ -103,6 +104,6 @@ throw a <a href="../api_cxx/lockng_class.html">DbLockNotGrantedException</a> exc
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/db_list.html b/db/docs/api_cxx/db_list.html
index f3d3c5fa4..e768bbed8 100644
--- a/db/docs/api_cxx/db_list.html
+++ b/db/docs/api_cxx/db_list.html
@@ -1,6 +1,5 @@
<!--$Id: db_list.so,v 1.1 2002/08/30 20:00:48 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -10,7 +9,7 @@
</head>
<body bgcolor=white>
<h3 align=center>Berkeley DB: Databases and Related Methods</h3>
-<!--$Id: m4.methods,v 1.11 2006/08/25 16:40:00 bostic Exp $-->
+<!--$Id: m4.methods,v 1.14 2007/07/12 18:27:42 bostic Exp $-->
<table border=1 align=center>
<tr><th>Database Operations</th><th>Description</th></tr>
<!--Db::--><tr><td><a href="../api_cxx/db_class.html">Db</a></td><td>Create a database handle</td></tr>
@@ -20,6 +19,7 @@
<!--Db::cursor--><tr><td><a href="../api_cxx/db_cursor.html">Db::cursor</a></td><td>Create a cursor</td></tr>
<!--Db::del--><tr><td><a href="../api_cxx/db_del.html">Db::del</a></td><td>Delete items from a database</td></tr>
<!--Db::err--><tr><td><a href="../api_cxx/db_err.html">Db::err</a>, <a href="../api_cxx/db_err.html">Db::errx</a></td><td>Error message</td></tr>
+<!--Db::exists--><tr><td><a href="../api_cxx/db_exists.html">Db::exists</a></td><td>Return if an item appears in a database</td></tr>
<!--Db::fd--><tr><td><a href="../api_cxx/db_fd.html">Db::fd</a></td><td>Return a file descriptor from a database</td></tr>
<!--Db::get--><tr><td><a href="../api_cxx/db_get.html">Db::get</a>, <a href="../api_cxx/db_get.html">Db::pget</a></td><td>Get items from a database</td></tr>
<!--Db::get_byteswapped--><tr><td><a href="../api_cxx/db_get_byteswapped.html">Db::get_byteswapped</a></td><td>Return if the underlying database is in host order</td></tr>
@@ -30,6 +30,7 @@
<!--Db::put--><tr><td><a href="../api_cxx/db_put.html">Db::put</a></td><td>Store items into a database</td></tr>
<!--Db::remove--><tr><td><a href="../api_cxx/db_remove.html">Db::remove</a></td><td>Remove a database</td></tr>
<!--Db::rename--><tr><td><a href="../api_cxx/db_rename.html">Db::rename</a></td><td>Rename a database</td></tr>
+<!--Db::set_priority--><tr><td><a href="../api_cxx/db_set_priority.html">Db::set_priority</a></td><td>Set cache page priority</td></tr>
<!--Db::stat--><tr><td><a href="../api_cxx/db_stat.html">Db::stat</a>, <a href="../api_cxx/db_stat.html">Db::stat_print</a></td><td>Database statistics</td></tr>
<!--Db::sync--><tr><td><a href="../api_cxx/db_sync.html">Db::sync</a></td><td>Flush a database to stable storage</td></tr>
<!--Db::truncate--><tr><td><a href="../api_cxx/db_truncate.html">Db::truncate</a></td><td>Empty a database</td></tr>
@@ -58,12 +59,13 @@
<!--Db::set_re_pad--><tr><td><a href="../api_cxx/db_set_re_pad.html">Db::set_re_pad</a></td><td>Set the fixed-length record pad byte</td></tr>
<!--Db::set_re_source--><tr><td><a href="../api_cxx/db_set_re_source.html">Db::set_re_source</a></td><td>Set the backing Recno text file</td></tr>
<tr><th>Hash Configuration</th><th><br></th></tr>
+<!--Db::set_h_compare--><tr><td><a href="../api_cxx/db_set_h_compare.html">Db::set_h_compare</a></td><td>Set a Hash comparison function</td></tr>
<!--Db::set_h_ffactor--><tr><td><a href="../api_cxx/db_set_h_ffactor.html">Db::set_h_ffactor</a></td><td>Set the Hash table density</td></tr>
<!--Db::set_h_hash--><tr><td><a href="../api_cxx/db_set_h_hash.html">Db::set_h_hash</a></td><td>Set a hashing function</td></tr>
<!--Db::set_h_nelem--><tr><td><a href="../api_cxx/db_set_h_nelem.html">Db::set_h_nelem</a></td><td>Set the Hash table size</td></tr>
<tr><th>Queue Configuration</th><th><br></th></tr>
<!--Db::set_q_extentsize--><tr><td><a href="../api_cxx/db_set_q_extentsize.html">Db::set_q_extentsize</a></td><td>Set Queue database extent size</td></tr>
</table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/db_open.html b/db/docs/api_cxx/db_open.html
index 314095537..4d8ab1eca 100644
--- a/db/docs/api_cxx/db_open.html
+++ b/db/docs/api_cxx/db_open.html
@@ -1,6 +1,5 @@
-<!--$Id: db_open.so,v 10.119 2006/09/13 14:30:52 mjc Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: db_open.so,v 10.122 2007/05/31 18:52:36 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -30,6 +29,9 @@ int
Db::get_dbname(const char **filenamep, const char **dbnamep);
<p>
int
+Db::get_multiple()
+<p>
+int
Db::get_open_flags(u_int32_t *flagsp);
<p>
int
@@ -109,11 +111,11 @@ not supported by the queue format.
<dt><a name="DB_RDONLY">DB_RDONLY</a><dd>Open the database for reading only. Any attempt to modify items in the
database will fail, regardless of the actual permissions of any
underlying files.
-<dt><a name="DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a><dd>Support read operations with degree 1 isolation. Read operations on the
-database may request the return of modified but not yet committed data.
-This flag must be specified on all <a href="../api_cxx/db_class.html">Db</a> handles used to perform
-dirty reads or database updates, otherwise requests for dirty reads may
-not be honored and the read may block.
+<dt><a name="DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a><dd>Support transactional read operations with degree 1 isolation. Read
+operations on the database may request the return of modified but not
+yet committed data. This flag must be specified on all <a href="../api_cxx/db_class.html">Db</a>
+handles used to perform dirty reads or database updates, otherwise
+requests for dirty reads may not be honored and the read may block.
<dt><a name="DB_THREAD">DB_THREAD</a><dd>Cause the <a href="../api_cxx/db_class.html">Db</a> handle returned by Db::open to be
<i>free-threaded</i>; that is, concurrently usable by multiple
threads in the address space.
@@ -135,14 +137,16 @@ defaults, and is not further specified by Berkeley DB. System shared memory
segments created by the database open are created with mode <b>mode</b>, unmodified
by the process' umask value. If <b>mode</b> is 0, the database open will use a
default mode of readable and writable by both owner and group.</p>
-<dt><b>txnid</b><dd>If the operation is part of an application-specified
-transaction, the <b>txnid</b> parameter is a transaction handle
-returned from <a href="../api_cxx/txn_begin.html">DbEnv::txn_begin</a>; if the operation is part of a Berkeley DB Concurrent Data Store
-group, the <b>txnid</b> parameter is a handle returned from
-<a href="../api_cxx/env_cdsgroup_begin.html">DbEnv::cdsgroup_begin</a>; otherwise NULL. If no transaction handle is
+<dt><b>txnid</b><dd>If the operation is part of an application-specified transaction, the
+<b>txnid</b> parameter is a transaction handle returned from
+<a href="../api_cxx/txn_begin.html">DbEnv::txn_begin</a>; if the operation is part of a Berkeley DB Concurrent Data Store group, the
+<b>txnid</b> parameter is a handle returned from
+<a href="../api_cxx/env_cdsgroup_begin.html">DbEnv::cdsgroup_begin</a>; otherwise NULL.
+If no transaction handle is
specified, but the
DB_AUTO_COMMIT flag is specified,
-the operation will be implicitly transaction protected. Note that transactionally protected operations on a <a href="../api_cxx/db_class.html">Db</a> handle
+the operation will be implicitly transaction protected.
+Note that transactionally protected operations on a <a href="../api_cxx/db_class.html">Db</a> handle
requires the <a href="../api_cxx/db_class.html">Db</a> handle itself be transactionally protected
during its open. Also note that the transaction must be committed before
the handle is closed; see <a href="../ref/program/scope.html">Berkeley DB
@@ -212,8 +216,8 @@ to grant a lock in the allowed time, the Db::open method will fail and
either return <a href="../ref/program/errorret.html#DB_LOCK_NOTGRANTED">DB_LOCK_NOTGRANTED</a> or
throw a <a href="../api_cxx/lockng_class.html">DbLockNotGrantedException</a> exception.</p>
<hr size=1 noshade>
-<h3>Description: Db::get_database</h3>
-<p>The Db::get_database method returns the current filename and database
+<h3>Description: Db::get_dbname</h3>
+<p>The Db::get_dbname method returns the current filename and database
name.</p>
<h3>Parameters</h3>
<dl compact>
@@ -222,14 +226,24 @@ a pointer to the current filename is copied.
<dt><b>dbnamep</b><dd>The <b>dbnamep</b> parameter references memory into which
a pointer to the current database name is copied.
</dl>
-<p>The Db::get_database method may be called at any time during the life of the
+<p>The Db::get_dbname method may be called at any time during the life of the
application.</p>
-<p>The Db::get_database method
+<p>The Db::get_dbname 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.
</p>
<hr size=1 noshade>
+<h3>Description: <a href="../api_cxx/db_open.html">Db::get_multiple</a></h3>
+<p>The <a href="../api_cxx/db_open.html">Db::get_multiple</a> method returns non-zero if the <a href="../api_cxx/db_class.html">Db</a> handle
+references a physical file supporting multiple databases.</p>
+<p>In this case, the <a href="../api_cxx/db_class.html">Db</a> handle is a handle on a database whose key
+values are the names of the databases stored in the physical file and
+whose data values are opaque objects. No keys or data values may be
+modified or stored using the database handle.</p>
+<p>The <a href="../api_cxx/db_open.html">Db::get_multiple</a> method may not be called before the Db::open method has been
+called.</p>
+<hr size=1 noshade>
<h3>Description: Db::get_open_flags</h3>
<p>The Db::get_open_flags method returns the current open method flags.</p>
<p>The Db::get_open_flags method may not be called before the Db::open method has been
@@ -259,6 +273,6 @@ application.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/db_put.html b/db/docs/api_cxx/db_put.html
index aa948d33e..7697154bd 100644
--- a/db/docs/api_cxx/db_put.html
+++ b/db/docs/api_cxx/db_put.html
@@ -1,6 +1,5 @@
<!--$Id: db_put.so,v 10.59 2006/09/13 14:30:52 mjc Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -73,15 +72,16 @@ database.
</dl>
<dt><b>data</b><dd>The data <a href="../api_cxx/dbt_class.html">Dbt</a> operated on.
<dt><b>key</b><dd>The key <a href="../api_cxx/dbt_class.html">Dbt</a> operated on.
-<dt><b>txnid</b><dd>If the operation is part of an application-specified
-transaction, the <b>txnid</b> parameter is a transaction handle
-returned from <a href="../api_cxx/txn_begin.html">DbEnv::txn_begin</a>; if the operation is part of a Berkeley DB Concurrent Data Store
-group, the <b>txnid</b> parameter is a handle returned from
-<a href="../api_cxx/env_cdsgroup_begin.html">DbEnv::cdsgroup_begin</a>; otherwise NULL. If no transaction handle is
+<dt><b>txnid</b><dd>If the operation is part of an application-specified transaction, the
+<b>txnid</b> parameter is a transaction handle returned from
+<a href="../api_cxx/txn_begin.html">DbEnv::txn_begin</a>; if the operation is part of a Berkeley DB Concurrent Data Store group, the
+<b>txnid</b> parameter is a handle returned from
+<a href="../api_cxx/env_cdsgroup_begin.html">DbEnv::cdsgroup_begin</a>; otherwise NULL.
+If no transaction handle is
specified, but the
operation occurs in a transactional
database,
-the operation will be implicitly transaction protected.
+the operation will be implicitly transaction protected.
</dl>
<a name="2"><!--meow--></a>
<a name="3"><!--meow--></a>
@@ -127,6 +127,6 @@ throw a <a href="../api_cxx/lockng_class.html">DbLockNotGrantedException</a> exc
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/db_remove.html b/db/docs/api_cxx/db_remove.html
index 37c96adb9..b1cc3a3d9 100644
--- a/db/docs/api_cxx/db_remove.html
+++ b/db/docs/api_cxx/db_remove.html
@@ -1,7 +1,6 @@
<!--$Id: db_remove.so,v 10.3 2002/08/18 21:15:51 bostic Exp $-->
<!--$Id: env_dbremove.so,v 10.49 2004/12/16 19:13:01 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -91,6 +90,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/db_rename.html b/db/docs/api_cxx/db_rename.html
index e46e6253f..b1a06cafc 100644
--- a/db/docs/api_cxx/db_rename.html
+++ b/db/docs/api_cxx/db_rename.html
@@ -1,7 +1,6 @@
<!--$Id: db_rename.so,v 10.3 2002/08/18 21:15:51 bostic Exp $-->
<!--$Id: env_dbrename.so,v 10.37 2004/12/16 19:13:01 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -95,6 +94,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/db_set_alloc.html b/db/docs/api_cxx/db_set_alloc.html
index 6f8197a29..8d331afe0 100644
--- a/db/docs/api_cxx/db_set_alloc.html
+++ b/db/docs/api_cxx/db_set_alloc.html
@@ -1,7 +1,6 @@
<!--$Id: db_set_alloc.so,v 10.3 2002/08/18 21:15:51 bostic Exp $-->
<!--$Id: env_set_alloc.so,v 1.22 2004/08/13 03:38:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -92,6 +91,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/db_set_append_recno.html b/db/docs/api_cxx/db_set_append_recno.html
index 814c1cee0..f0df7797a 100644
--- a/db/docs/api_cxx/db_set_append_recno.html
+++ b/db/docs/api_cxx/db_set_append_recno.html
@@ -1,6 +1,5 @@
<!--$Id: db_set_append_recno.so,v 1.24 2006/05/17 20:47:46 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -83,6 +82,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/db_set_bt_compare.html b/db/docs/api_cxx/db_set_bt_compare.html
index fd65aaf14..0305d8134 100644
--- a/db/docs/api_cxx/db_set_bt_compare.html
+++ b/db/docs/api_cxx/db_set_bt_compare.html
@@ -1,6 +1,5 @@
-<!--$Id: db_set_bt_compare.so,v 10.49 2004/08/13 03:38:56 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: db_set_bt_compare.so,v 10.50 2006/10/26 20:59:24 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -92,6 +91,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/db_set_bt_minkey.html b/db/docs/api_cxx/db_set_bt_minkey.html
index 7eb5a136a..b27bb8220 100644
--- a/db/docs/api_cxx/db_set_bt_minkey.html
+++ b/db/docs/api_cxx/db_set_bt_minkey.html
@@ -1,6 +1,5 @@
<!--$Id: db_set_bt_minkey.so,v 10.38 2004/09/28 15:04:19 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -90,6 +89,6 @@ leaf page in <b>bt_minkeyp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/db_set_bt_prefix.html b/db/docs/api_cxx/db_set_bt_prefix.html
index eec5af02f..95288ceb0 100644
--- a/db/docs/api_cxx/db_set_bt_prefix.html
+++ b/db/docs/api_cxx/db_set_bt_prefix.html
@@ -1,6 +1,5 @@
<!--$Id: db_set_bt_prefix.so,v 10.48 2004/08/13 03:38:56 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -95,6 +94,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/db_set_cachesize.html b/db/docs/api_cxx/db_set_cachesize.html
index 4321c99e7..df8fd493d 100644
--- a/db/docs/api_cxx/db_set_cachesize.html
+++ b/db/docs/api_cxx/db_set_cachesize.html
@@ -1,7 +1,6 @@
<!--$Id: db_set_cachesize.so,v 10.21 2002/08/18 21:15:53 bostic Exp $-->
-<!--$Id: env_set_cachesize.so,v 10.50 2005/01/10 07:18:43 mjc Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: env_set_cachesize.so,v 10.51 2007/07/06 00:22:52 mjc Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -48,8 +47,9 @@ allocated contiguously on some architectures. For example, some
releases of Solaris limit the amount of memory that may be allocated
contiguously by a process. If <b>ncache</b> is 0 or 1, the cache will
be allocated contiguously in memory. If it is greater than 1, the cache
-will be broken up into <b>ncache</b> equally sized, separate pieces of
-memory.</p>
+will be split across <b>ncache</b> separate regions, where the
+<b>region size</b> is equal to the initial cache size divided by
+<b>ncache</b>.</p>
<p>Because databases opened within Berkeley DB environments use the cache
specified to the environment, it is an error to attempt to set a cache
in a database created within an environment.</p>
@@ -74,10 +74,8 @@ encapsulating one of the following non-zero errors, or return one of
the following non-zero errors:</p>
<dl compact>
<dt>EINVAL<dd>If the specified cache size was impossibly small;
-called in a database environment;
the method was called after
-<a href="../api_cxx/db_open.html">Db::open</a>
-was called; or if an
+<a href="../api_cxx/db_open.html">Db::open</a> was called; or if an
invalid flag value or parameter was specified.
</dl>
<hr size=1 noshade>
@@ -109,6 +107,6 @@ failure, and returns 0 on success.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/db_set_dup_compare.html b/db/docs/api_cxx/db_set_dup_compare.html
index 6a5e30a0d..c39636db5 100644
--- a/db/docs/api_cxx/db_set_dup_compare.html
+++ b/db/docs/api_cxx/db_set_dup_compare.html
@@ -1,6 +1,5 @@
<!--$Id: db_set_dup_compare.so,v 10.50 2004/08/13 03:38:56 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -90,6 +89,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/db_set_encrypt.html b/db/docs/api_cxx/db_set_encrypt.html
index 75597da1d..cb7f8fd50 100644
--- a/db/docs/api_cxx/db_set_encrypt.html
+++ b/db/docs/api_cxx/db_set_encrypt.html
@@ -1,7 +1,6 @@
<!--$Id: db_set_encrypt.so,v 10.3 2002/08/18 21:15:54 bostic Exp $-->
<!--$Id: env_set_encrypt.so,v 10.23 2004/09/28 15:04:20 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -94,6 +93,6 @@ encryption flags in <b>flagsp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/db_set_errcall.html b/db/docs/api_cxx/db_set_errcall.html
index 770975cf8..82c93b4c9 100644
--- a/db/docs/api_cxx/db_set_errcall.html
+++ b/db/docs/api_cxx/db_set_errcall.html
@@ -1,7 +1,6 @@
<!--$Id: db_set_errcall.so,v 10.10 2002/08/18 21:15:54 bostic Exp $-->
<!--$Id: env_set_errcall.so,v 10.39 2006/05/17 20:47:46 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -80,6 +79,6 @@ are undefined.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/db_set_errfile.html b/db/docs/api_cxx/db_set_errfile.html
index 47f457961..084204a1d 100644
--- a/db/docs/api_cxx/db_set_errfile.html
+++ b/db/docs/api_cxx/db_set_errfile.html
@@ -1,7 +1,6 @@
<!--$Id: db_set_errfile.so,v 10.10 2002/08/18 21:15:54 bostic Exp $-->
-<!--$Id: env_set_errfile.so,v 10.36 2006/02/10 22:54:59 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: env_set_errfile.so,v 10.37 2006/10/26 15:33:59 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -31,9 +30,9 @@ void Db::get_errfile(FILE **errfilep);
<h3>Description: Db::set_errfile</h3>
When an error occurs in the Berkeley DB library, an exception is thrown or an
error return value is returned by the interface. In some cases,
-however, the <b>errno</b> value may be insufficient to completely
-describe the cause of the error, especially during initial application
-debugging.
+however, the exception or returned value may be insufficient to
+completely describe the cause of the error, especially during initial
+application debugging.
<p>The <a href="../api_cxx/env_set_errcall.html">DbEnv::set_errcall</a> and <a href="../api_cxx/db_set_errcall.html">Db::set_errcall</a> methods are used to
enhance the mechanism for reporting error messages to the application
by setting a C library FILE * to be used for displaying additional Berkeley DB
@@ -48,7 +47,18 @@ should not mix these approaches.</p>
("<b>:</b>") (if a prefix string was previously specified using
<a href="../api_cxx/db_set_errpfx.html">Db::set_errpfx</a> or <a href="../api_cxx/env_set_errpfx.html">DbEnv::set_errpfx</a>), an error string, and
a trailing &lt;newline&gt; character.</p>
-<p>Setting <b>errfile</b> to NULL unconfigures the interface.</p>
+<p>The default configuration when applications first create <a href="../api_cxx/db_class.html">Db</a> or
+<a href="../api_cxx/env_class.html">DbEnv</a> handles is as if the <a href="../api_cxx/env_set_errfile.html">DbEnv::set_errfile</a> or
+Db::set_errfile methods were called with the standard error output
+(stderr) specified as the FILE * argument. Applications wanting no
+output at all can turn off this default configuration by calling the
+<a href="../api_cxx/env_set_errfile.html">DbEnv::set_errfile</a> or Db::set_errfile methods with NULL as the
+FILE * argument. Additionally, explicitly configuring the error output
+channel using any of the <a href="../api_cxx/env_set_errfile.html">DbEnv::set_errfile</a>,
+Db::set_errfile, <a href="../api_cxx/env_set_errcall.html">DbEnv::set_errcall</a>,
+<a href="../api_cxx/db_set_errcall.html">Db::set_errcall</a>, <a href="../api_cxx/env_set_error_stream.html">DbEnv::set_error_stream</a> or
+<a href="../api_cxx/db_set_error_stream.html">Db::set_error_stream</a> methods will also turn off this default output
+for the application.</p>
<p>This error logging enhancement does not slow performance or significantly
increase application size, and may be run during normal operation as well
as during application debugging.</p>
@@ -89,6 +99,6 @@ FILE * in <b>errfilep</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/db_set_error_stream.html b/db/docs/api_cxx/db_set_error_stream.html
index c4bb79d52..d34b06f34 100644
--- a/db/docs/api_cxx/db_set_error_stream.html
+++ b/db/docs/api_cxx/db_set_error_stream.html
@@ -1,7 +1,6 @@
<!--$Id: db_set_error_stream.so,v 10.2 2002/08/18 21:15:54 bostic Exp $-->
<!--$Id: env_set_error_stream.so,v 10.30 2006/02/10 22:54:59 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -73,6 +72,6 @@ be used for additional error information.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/db_set_errpfx.html b/db/docs/api_cxx/db_set_errpfx.html
index ef8101b2b..88d9452ae 100644
--- a/db/docs/api_cxx/db_set_errpfx.html
+++ b/db/docs/api_cxx/db_set_errpfx.html
@@ -1,7 +1,6 @@
<!--$Id: db_set_errpfx.so,v 10.10 2002/08/18 21:15:55 bostic Exp $-->
<!--$Id: env_set_errpfx.so,v 10.34 2006/02/10 22:54:59 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -73,6 +72,6 @@ error prefix in <b>errpfxp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/db_set_feedback.html b/db/docs/api_cxx/db_set_feedback.html
index 5f37e396b..40265c7cc 100644
--- a/db/docs/api_cxx/db_set_feedback.html
+++ b/db/docs/api_cxx/db_set_feedback.html
@@ -1,7 +1,6 @@
<!--$Id: db_set_feedback.so,v 10.29 2003/10/19 01:27:11 bostic Exp $-->
<!--$Id: env_set_feedback.so,v 10.43 2006/05/17 20:47:46 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -72,6 +71,6 @@ are undefined.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/db_set_flags.html b/db/docs/api_cxx/db_set_flags.html
index 5067b3462..5541ea716 100644
--- a/db/docs/api_cxx/db_set_flags.html
+++ b/db/docs/api_cxx/db_set_flags.html
@@ -1,6 +1,5 @@
<!--$Id: db_set_flags.so,v 10.68 2004/09/28 15:04:19 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -296,6 +295,6 @@ current flags in <b>flagsp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/db_set_h_compare.html b/db/docs/api_cxx/db_set_h_compare.html
new file mode 100644
index 000000000..053fc3e57
--- /dev/null
+++ b/db/docs/api_cxx/db_set_h_compare.html
@@ -0,0 +1,92 @@
+<!--$Id: db_set_h_compare.so,v 1.1 2006/10/27 00:28:44 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
+<!--See the file LICENSE for redistribution information.-->
+<html>
+<head>
+<title>Berkeley DB: Db::set_h_compare</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
+</head>
+<body bgcolor=white>
+<table width="100%"><tr valign=top>
+<td>
+<h3>Db::set_h_compare</h3>
+</td>
+<td align=right>
+<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a>
+<a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a></td>
+</tr></table>
+<hr size=1 noshade>
+<tt>
+<h3><pre>
+#include &lt;db_cxx.h&gt;
+<p>
+extern "C" {
+ typedef int (*compare_fcn_type)(DB *db, const DBT *dbt1, const DBT *dbt2);
+};
+int
+Db::set_h_compare(compare_fcn_type compare_fcn);
+</pre></h3>
+<hr size=1 noshade>
+<h3>Description: Db::set_h_compare</h3>
+<p>Set the Hash key comparison function. The comparison function is called
+whenever it is necessary to compare a key specified by the application
+with a key currently stored in the database.</p>
+<p>If no comparison function is specified, a byte-by-byte comparison is
+performed.</p>
+<p>The Db::set_h_compare method configures operations performed using the specified
+<a href="../api_cxx/db_class.html">Db</a> handle, not all operations performed on the underlying
+database.</p>
+<p>The Db::set_h_compare method may not be called after the <a href="../api_cxx/db_open.html">Db::open</a> method is called.
+If the database already exists when
+<a href="../api_cxx/db_open.html">Db::open</a> is called, the information specified to Db::set_h_compare must
+be the same as that historically used to create the database or
+corruption can occur.</p>
+<p>The Db::set_h_compare 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.
+</p>
+<h3>Parameters</h3>
+<dl compact>
+<dt><b>compare_fcn</b><dd>The <b>compare_fcn</b> function is the application-specified Hash
+comparison function. The comparison function takes three parameters:
+<dl compact>
+<dt><b>db</b><dd>The <b>db</b> parameter is the enclosing database handle.
+<dt><b>dbt1</b><dd>The <b>dbt1</b> parameter is the <a href="../api_cxx/dbt_class.html">Dbt</a> representing the
+application supplied key.
+<dt><b>dbt2</b><dd>The <b>dbt2</b> parameter is the <a href="../api_cxx/dbt_class.html">Dbt</a> representing the
+current database's key.
+</dl>
+<p>The <b>compare_fcn</b> function must return an integer value less
+than, equal to, or greater than zero if the first key parameter is
+considered to be respectively less than, equal to, or greater than the
+second key parameter. The comparison function must correctly handle any
+key values used by the application (possibly including zero-length
+keys). The <b>data</b> and <b>size</b> fields of the <a href="../api_cxx/dbt_class.html">Dbt</a> are
+the only fields that may be used for the purposes of this comparison,
+and no particular alignment of the memory to which by the <b>data</b>
+field refers may be assumed.</p>
+</dl>
+<h3>Errors</h3>
+<p>The Db::set_h_compare method
+may fail and throw
+<a href="../api_cxx/except_class.html">DbException</a>,
+encapsulating one of the following non-zero errors, or return one of
+the following non-zero errors:</p>
+<dl compact>
+<dt>EINVAL<dd>If the method was called after <a href="../api_cxx/db_open.html">Db::open</a> was called; or if an
+invalid flag value or parameter was specified.
+</dl>
+<hr size=1 noshade>
+<h3>Class</h3>
+<a href="../api_cxx/db_class.html">Db</a>
+<h3>See Also</h3>
+<a href="../api_cxx/db_list.html">Databases and Related Methods</a>
+</tt>
+<table width="100%"><tr><td><br></td><td align=right>
+<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
+</body>
+</html>
diff --git a/db/docs/api_cxx/db_set_h_ffactor.html b/db/docs/api_cxx/db_set_h_ffactor.html
index 0475e217d..e4db844d2 100644
--- a/db/docs/api_cxx/db_set_h_ffactor.html
+++ b/db/docs/api_cxx/db_set_h_ffactor.html
@@ -1,6 +1,5 @@
<!--$Id: db_set_h_ffactor.so,v 10.37 2004/09/28 15:04:19 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -88,6 +87,6 @@ hash table density in <b>h_ffactorp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/db_set_h_hash.html b/db/docs/api_cxx/db_set_h_hash.html
index 98537b5c1..2e6befb81 100644
--- a/db/docs/api_cxx/db_set_h_hash.html
+++ b/db/docs/api_cxx/db_set_h_hash.html
@@ -1,6 +1,5 @@
<!--$Id: db_set_h_hash.so,v 10.40 2004/08/13 03:38:56 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -77,6 +76,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/db_set_h_nelem.html b/db/docs/api_cxx/db_set_h_nelem.html
index d4da2c4f6..7c873410e 100644
--- a/db/docs/api_cxx/db_set_h_nelem.html
+++ b/db/docs/api_cxx/db_set_h_nelem.html
@@ -1,6 +1,5 @@
<!--$Id: db_set_h_nelem.so,v 10.36 2004/09/28 15:04:19 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -87,6 +86,6 @@ estimate of the final size of the hash table in <b>h_nelemp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/db_set_lorder.html b/db/docs/api_cxx/db_set_lorder.html
index add3c5d17..7bcc389ba 100644
--- a/db/docs/api_cxx/db_set_lorder.html
+++ b/db/docs/api_cxx/db_set_lorder.html
@@ -1,6 +1,5 @@
<!--$Id: db_set_lorder.so,v 10.38 2004/09/28 15:04:19 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -92,6 +91,6 @@ database byte order in <b>lorderp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/db_set_malloc.html b/db/docs/api_cxx/db_set_malloc.html
deleted file mode 100644
index e38092fcb..000000000
--- a/db/docs/api_cxx/db_set_malloc.html
+++ /dev/null
@@ -1,103 +0,0 @@
-<!--$Id: db_set_malloc.so,v 10.18 2000/05/25 13:47:07 dda Exp $-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB: Db::set_malloc</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
- <a name="2"><!--meow--></a>
-<table><tr valign=top>
-<td>
-<h1>Db::set_malloc</h1>
-</td>
-<td width="1%">
-<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;db_cxx.h&gt;
-<p>
-extern "C" {
- typedef void *(*db_malloc_fcn_type)(size_t);
-};
-int
-Db::set_malloc(db_malloc_fcn_type db_malloc);
-</pre></h3>
-<h1>Description</h1>
-<p>Set the allocation function used by the <a href="../api_cxx/db_class.html">Db</a> methods to allocate
-memory in which to return key/data items to the application.
-<p>The <a href="../api_cxx/dbt_class.html#DB_DBT_MALLOC">DB_DBT_MALLOC</a> flag, when specified in the <a href="../api_cxx/dbt_class.html">Dbt</a> object,
-will cause the <a href="../api_cxx/db_class.html">Db</a> methods to allocate and re-allocate memory which
-then becomes the responsibility of the calling application. See <a href="../api_cxx/dbt_class.html">Dbt</a>
-for more information.
-<p>On systems where there may be multiple library versions of malloc (notably
-Windows NT), specifying the <a href="../api_cxx/dbt_class.html#DB_DBT_MALLOC">DB_DBT_MALLOC</a> flag will fail because
-the <a href="../api_cxx/db_class.html">Db</a> library will allocate memory from a different heap than
-the application will use to free it. To avoid this problem, the
-Db::set_malloc method can be used to pass Berkeley DB a reference to the
-application's allocation routine, in which case it will be used to
-allocate the memory returned when the <a href="../api_cxx/dbt_class.html#DB_DBT_MALLOC">DB_DBT_MALLOC</a> flag is set.
-<p>The method specified must match the calling conventions of the
-ANSI C X3.159-1989 (ANSI C) library routine of the same name.
-<p>The Db::set_malloc interface may only be used to configure Berkeley DB before
-the <a href="../api_cxx/db_open.html">Db::open</a> interface is called.
-<p>The Db::set_malloc 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>
-<p><dl compact>
-<p><dt>EINVAL<dd>An invalid flag value or parameter was specified.
-</dl>
-<h3>Class</h3>
-<a href="../api_cxx/db_class.html">Db</a>
-<h1>See Also</h1>
-<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_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_put.html">Db::put</a>,
-<a href="../api_cxx/db_remove.html">Db::remove</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_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_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_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_malloc.html">Db::set_malloc</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_realloc.html">Db::set_realloc</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_upgrade.html">Db::upgrade</a>
-and
-<a href="../api_cxx/db_verify.html">Db::verify</a>.
-</tt>
-<table><tr><td><br></td><td width="1%">
-<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/db_set_msg_stream.html b/db/docs/api_cxx/db_set_msg_stream.html
index 6f75880d9..3eb61fe4c 100644
--- a/db/docs/api_cxx/db_set_msg_stream.html
+++ b/db/docs/api_cxx/db_set_msg_stream.html
@@ -1,7 +1,6 @@
<!--$Id: db_set_msg_stream.so,v 1.1 2004/07/14 19:30:39 bostic Exp $-->
<!--$Id: env_set_msg_stream.so,v 10.5 2006/02/10 22:54:59 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -64,6 +63,6 @@ be used for additional message information.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/db_set_msgcall.html b/db/docs/api_cxx/db_set_msgcall.html
index 73d5acc7c..6c4198885 100644
--- a/db/docs/api_cxx/db_set_msgcall.html
+++ b/db/docs/api_cxx/db_set_msgcall.html
@@ -1,7 +1,6 @@
<!--$Id: db_set_msgcall.so,v 10.1 2004/04/16 19:01:56 bostic Exp $-->
<!--$Id: env_set_msgcall.so,v 10.7 2006/05/17 20:47:46 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -71,6 +70,6 @@ are undefined.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/db_set_msgfile.html b/db/docs/api_cxx/db_set_msgfile.html
index 787ce7e65..5a14a4b82 100644
--- a/db/docs/api_cxx/db_set_msgfile.html
+++ b/db/docs/api_cxx/db_set_msgfile.html
@@ -1,7 +1,6 @@
<!--$Id: db_set_msgfile.so,v 1.1 2004/07/14 19:30:39 bostic Exp $-->
<!--$Id: env_set_msgfile.so,v 10.7 2006/02/10 22:54:59 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -80,6 +79,6 @@ FILE * in <b>msgfilep</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/db_set_pagesize.html b/db/docs/api_cxx/db_set_pagesize.html
index de4c2f96f..77402a59c 100644
--- a/db/docs/api_cxx/db_set_pagesize.html
+++ b/db/docs/api_cxx/db_set_pagesize.html
@@ -1,6 +1,5 @@
<!--$Id: db_set_pagesize.so,v 10.40 2005/12/16 01:19:35 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -91,6 +90,6 @@ page size in <b>pagesizep</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/db_set_paniccall.html b/db/docs/api_cxx/db_set_paniccall.html
deleted file mode 100644
index 677f3fc98..000000000
--- a/db/docs/api_cxx/db_set_paniccall.html
+++ /dev/null
@@ -1,75 +0,0 @@
-<!--$Id: db_set_paniccall.so,v 10.14 2002/08/18 21:15:57 bostic Exp $-->
-<!--$Id: env_set_paniccall.so,v 10.37 2004/08/13 03:38:57 bostic Exp $-->
-<!--Copyright 1997-2004 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: Db::set_paniccall</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
-</head>
-<body bgcolor=white>
-<table width="100%"><tr valign=top>
-<td>
-<h3>Db::set_paniccall</h3>
-</td>
-<td align=right>
-<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a>
-<a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a></td>
-</tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;db_cxx.h&gt;
-<p>
-int
-Db::set_paniccall(void (*db_panic_fcn)(DbEnv *dbenv, int errval));
-</pre></h3>
-<hr size=1 noshade>
-<h3>Description: Db::set_paniccall</h3>
-<p>Errors can occur in the Berkeley DB library where the only solution is to shut
-down the application and run recovery (for example, if Berkeley DB is unable
-to allocate heap memory). In such cases, the Berkeley DB methods will
-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>,
-depending on the API configuration.
-It is often easier to simply exit the application when such errors occur
-rather than gracefully return up the stack. The Db::set_paniccall method
-specifies a function to be called when
-<a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a> is about to be returned or <a href="../api_cxx/runrec_class.html">DbRunRecoveryException</a>
-is about to be thrown
-from a Berkeley DB method.</p>
-<p>For <a href="../api_cxx/db_class.html">Db</a> handles opened inside of Berkeley DB environments, calling the
-Db::set_paniccall method affects the entire environment and is equivalent to calling
-the <a href="../api_cxx/env_set_paniccall.html">DbEnv::set_paniccall</a> method.</p>
-<p>The Db::set_paniccall method may be called at any time during the life of the
-application.</p>
-<p>The Db::set_paniccall 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.
-</p>
-<h3>Parameters</h3>
-<dl compact>
-<dt><b>db_panic_fcn</b><dd>The <b>db_panic_fcn</b> parameter is the application-specified function
-called in the case of a database environment panic. The function takes
-two arguments:
-<dl compact>
-<dt><b>dbenv</b><dd>The <b>dbenv</b> parameter is the enclosing database environment handle.
-<dt><b>errval</b><dd>The <b>errval</b> parameter is the error value that would have been
-returned to the caller if <a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a> were not going to be
-returned instead.
-</dl>
-</dl>
-<hr size=1 noshade>
-<h3>Class</h3>
-<a href="../api_cxx/db_class.html">Db</a>
-<h3>See Also</h3>
-<a href="../api_cxx/db_list.html">Databases and Related Methods</a>
-</tt>
-<table width="100%"><tr><td><br></td><td align=right>
-<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<p><font size=1><a href="../sleepycat/legal.html">Copyright (c) 1996-2004</a> <a href="http://www.sleepycat.com">Sleepycat Software, Inc.</a> - All rights reserved.</font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/db_set_priority.html b/db/docs/api_cxx/db_set_priority.html
new file mode 100644
index 000000000..e0348590d
--- /dev/null
+++ b/db/docs/api_cxx/db_set_priority.html
@@ -0,0 +1,71 @@
+<!--$Id: db_set_priority.so,v 1.1 2007/05/22 18:06:05 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
+<!--See the file LICENSE for redistribution information.-->
+<html>
+<head>
+<title>Berkeley DB: Db::set_priority</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
+</head>
+<body bgcolor=white>
+<table width="100%"><tr valign=top>
+<td>
+<h3>Db::set_priority</h3>
+</td>
+<td align=right>
+<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a>
+<a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a></td>
+</tr></table>
+<hr size=1 noshade>
+<tt>
+<h3><pre>
+#include &lt;db_cxx.h&gt;
+<p>
+int
+Db::set_priority(DB_CACHE_PRIORITY priority);
+<p>
+int
+Db::get_priority(DB_CACHE_PRIORITY *priorityp);
+</pre></h3>
+<hr size=1 noshade>
+<h3>Description: Db::set_priority</h3>
+<!--$Id: dbc_set_priority.so,v 1.3 2007/05/22 18:06:05 bostic Exp $-->
+<p>Set the cache priority for pages referenced by the
+<a href="../api_cxx/db_class.html">Db</a>
+handle.</p>
+<p>The priority of a page biases the replacement algorithm to be more or
+less likely to discard a page when space is needed in the buffer pool.
+The bias is temporary, and pages will eventually be discarded if they
+are not referenced again. The Db::set_priority method is only advisory, and does
+not guarantee pages will be treated in a specific way.</p>
+<p>The Db::set_priority method may be called at any time during the life of the
+application.</p>
+<p>The Db::set_priority 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.
+</p>
+<h3>Parameters</h3>
+<dl compact>
+<dt><b>priority</b><dd>The <b>priority</b> parameter must be set to one of the following
+values:
+<dl compact>
+<dt><a name="DB_PRIORITY_VERY_LOW">DB_PRIORITY_VERY_LOW</a><dd>The lowest priority: pages are the most likely to be discarded.
+<dt><a name="DB_PRIORITY_LOW">DB_PRIORITY_LOW</a><dd>The next lowest priority.
+<dt><a name="DB_PRIORITY_DEFAULT">DB_PRIORITY_DEFAULT</a><dd>The default priority.
+<dt><a name="DB_PRIORITY_HIGH">DB_PRIORITY_HIGH</a><dd>The next highest priority.
+<dt><a name="DB_PRIORITY_VERY_HIGH">DB_PRIORITY_VERY_HIGH</a><dd>The highest priority: pages are the least likely to be discarded.
+</dl>
+</dl>
+<hr size=1 noshade>
+<h3>Class</h3>
+<a href="../api_cxx/db_class.html">Db</a>
+<h3>See Also</h3>
+<a href="../api_cxx/db_list.html">Databases and Related Methods</a>
+</tt>
+<table width="100%"><tr><td><br></td><td align=right>
+<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
+</body>
+</html>
diff --git a/db/docs/api_cxx/db_set_q_extentsize.html b/db/docs/api_cxx/db_set_q_extentsize.html
index 63f24adda..3a63aff85 100644
--- a/db/docs/api_cxx/db_set_q_extentsize.html
+++ b/db/docs/api_cxx/db_set_q_extentsize.html
@@ -1,6 +1,5 @@
<!--$Id: db_set_q_extentsize.so,v 1.23 2004/09/28 15:04:19 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -87,6 +86,6 @@ number of pages in an extent in <b>extentsizep</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/db_set_re_delim.html b/db/docs/api_cxx/db_set_re_delim.html
index 85d7173ed..1220e0ada 100644
--- a/db/docs/api_cxx/db_set_re_delim.html
+++ b/db/docs/api_cxx/db_set_re_delim.html
@@ -1,6 +1,5 @@
<!--$Id: db_set_re_delim.so,v 10.39 2004/09/28 15:04:19 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -87,6 +86,6 @@ delimiting byte in <b>delimp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/db_set_re_len.html b/db/docs/api_cxx/db_set_re_len.html
index 61fca4731..cdc84c23d 100644
--- a/db/docs/api_cxx/db_set_re_len.html
+++ b/db/docs/api_cxx/db_set_re_len.html
@@ -1,6 +1,5 @@
<!--$Id: db_set_re_len.so,v 10.40 2004/09/28 15:04:19 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -94,6 +93,6 @@ record length in <b>re_lenp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/db_set_re_pad.html b/db/docs/api_cxx/db_set_re_pad.html
index c099776d7..36e9d142e 100644
--- a/db/docs/api_cxx/db_set_re_pad.html
+++ b/db/docs/api_cxx/db_set_re_pad.html
@@ -1,6 +1,5 @@
<!--$Id: db_set_re_pad.so,v 10.37 2004/09/28 15:04:19 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -85,6 +84,6 @@ pad character in <b>re_padp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/db_set_re_source.html b/db/docs/api_cxx/db_set_re_source.html
index a6234502a..00bbc3dca 100644
--- a/db/docs/api_cxx/db_set_re_source.html
+++ b/db/docs/api_cxx/db_set_re_source.html
@@ -1,6 +1,5 @@
<!--$Id: db_set_re_source.so,v 10.42 2004/09/28 15:04:19 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -117,6 +116,6 @@ application.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/db_set_realloc.html b/db/docs/api_cxx/db_set_realloc.html
deleted file mode 100644
index e163a889c..000000000
--- a/db/docs/api_cxx/db_set_realloc.html
+++ /dev/null
@@ -1,103 +0,0 @@
-<!--$Id: db_set_realloc.so,v 10.8 2000/05/25 13:47:07 dda Exp $-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB: Db::set_realloc</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
- <a name="2"><!--meow--></a>
-<table><tr valign=top>
-<td>
-<h1>Db::set_realloc</h1>
-</td>
-<td width="1%">
-<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;db_cxx.h&gt;
-<p>
-extern "C" {
- typedef void *(*db_realloc_fcn_type)(void *, size_t);
-};
-int
-Db::set_realloc(db_realloc_fcn_type db_realloc_fcn);
-</pre></h3>
-<h1>Description</h1>
-<p>Set the realloc function used by the <a href="../api_cxx/db_class.html">Db</a> methods to allocate memory
-in which to return key/data items to the application.
-<p>The <a href="../api_cxx/dbt_class.html#DB_DBT_REALLOC">DB_DBT_REALLOC</a> flag, when specified in the <a href="../api_cxx/dbt_class.html">Dbt</a> object,
-will cause the <a href="../api_cxx/db_class.html">Db</a> methods to allocate and re-allocate memory which
-then becomes the responsibility of the calling application. See <a href="../api_cxx/dbt_class.html">Dbt</a>
-for more information.
-<p>On systems where there may be multiple library versions of realloc (notably
-Windows NT), specifying the <a href="../api_cxx/dbt_class.html#DB_DBT_REALLOC">DB_DBT_REALLOC</a> flag will fail because
-the <a href="../api_cxx/db_class.html">Db</a> library will allocate memory from a different heap than
-the application will use to free it. To avoid this problem, the
-Db::set_realloc method can be used to pass Berkeley DB a reference to the
-application's allocation routine, in which case it will be used to
-allocate the memory returned when the <a href="../api_cxx/dbt_class.html#DB_DBT_REALLOC">DB_DBT_REALLOC</a> flag is set.
-<p>The method specified must match the calling conventions of the
-ANSI C X3.159-1989 (ANSI C) library routine of the same name.
-<p>The Db::set_realloc interface may only be used to configure Berkeley DB before
-the <a href="../api_cxx/db_open.html">Db::open</a> interface is called.
-<p>The Db::set_realloc 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>
-<p><dl compact>
-<p><dt>EINVAL<dd>An invalid flag value or parameter was specified.
-</dl>
-<h3>Class</h3>
-<a href="../api_cxx/db_class.html">Db</a>
-<h1>See Also</h1>
-<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_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_put.html">Db::put</a>,
-<a href="../api_cxx/db_remove.html">Db::remove</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_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_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_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_malloc.html">Db::set_malloc</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_realloc.html">Db::set_realloc</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_upgrade.html">Db::upgrade</a>
-and
-<a href="../api_cxx/db_verify.html">Db::verify</a>.
-</tt>
-<table><tr><td><br></td><td width="1%">
-<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/db_stat.html b/db/docs/api_cxx/db_stat.html
index 8a3f19326..eb4177176 100644
--- a/db/docs/api_cxx/db_stat.html
+++ b/db/docs/api_cxx/db_stat.html
@@ -1,6 +1,5 @@
-<!--$Id: db_stat.so,v 10.89 2005/02/10 20:02:28 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: db_stat.so,v 10.92 2007/06/22 16:57:15 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -43,24 +42,24 @@ one of the following values:
Among other things, this flag makes it possible for applications to
request key and record counts without incurring the performance penalty
of traversing the entire database.
-<dt><a name="DB_READ_COMMITTED">DB_READ_COMMITTED</a><dd>Database items read during this operation will have degree 2 isolation.
-This ensures the stability of the data items read during the stat
-operation but permits that data to be modified or deleted by other
+<dt><a name="DB_READ_COMMITTED">DB_READ_COMMITTED</a><dd>Database items read during a transactional call will have degree 2
+isolation. This ensures the stability of the data items read during the
+stat operation but permits that data to be modified or deleted by other
transactions prior to the commit of the specified transaction.
-<dt><a name="DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a><dd>Database items read during this operation will have degree 1 isolation,
-including modified but not yet committed data. Silently ignored if the
-<a href="../api_cxx/db_open.html#DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a> flag was not specified when the underlying
-database was opened.
-</dl>
-<dt><b>txnid</b><dd>If the operation is part of an application-specified
-transaction, the <b>txnid</b> parameter is a transaction handle
-returned from <a href="../api_cxx/txn_begin.html">DbEnv::txn_begin</a>; if the operation is part of a Berkeley DB Concurrent Data Store
-group, the <b>txnid</b> parameter is a handle returned from
-<a href="../api_cxx/env_cdsgroup_begin.html">DbEnv::cdsgroup_begin</a>; otherwise NULL. If no transaction handle is
+<dt><a name="DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a><dd>Database items read during a transactional call will have degree 1
+isolation, including modified but not yet committed data. Silently
+ignored if the <a href="../api_cxx/db_open.html#DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a> flag was not specified when
+the underlying database was opened. </dl>
+<dt><b>txnid</b><dd>If the operation is part of an application-specified transaction, the
+<b>txnid</b> parameter is a transaction handle returned from
+<a href="../api_cxx/txn_begin.html">DbEnv::txn_begin</a>; if the operation is part of a Berkeley DB Concurrent Data Store group, the
+<b>txnid</b> parameter is a handle returned from
+<a href="../api_cxx/env_cdsgroup_begin.html">DbEnv::cdsgroup_begin</a>; otherwise NULL.
+If no transaction handle is
specified, but the
operation occurs in a transactional
database,
-the operation will be implicitly transaction protected.
+the operation will be implicitly transaction protected.
</dl>
<p>Statistical structures are stored in allocated memory. If application-specific allocation
routines have been declared (see <a href="../api_cxx/env_set_alloc.html">DbEnv::set_alloc</a> for more
@@ -78,6 +77,8 @@ database, the information returned by Db::stat may be out-of-date.</p>
<p>If the database was not opened read-only and the DB_FAST_STAT
flag was not specified, the cached key and record numbers will be
updated after the statistical information has been gathered.</p>
+<p>The Db::stat method may not be called before the <a href="../api_cxx/db_open.html">Db::open</a> method has been
+called.</p>
<p>The Db::stat method
either returns a non-zero error value
or throws an exception that encapsulates a non-zero error value on
@@ -99,8 +100,10 @@ DB_FAST_STAT is set.
was specified the count will be the last saved value unless it has never
been calculated, in which case it will be 0. Returned if
DB_FAST_STAT is set.
-<dt>u_int32_t hash_pagesize;<dd>The underlying Hash database page (and bucket) size, in bytes.
-Returned if DB_FAST_STAT is set.
+<dt>u_int32_t hash_pagecnt;<dd>The number of pages in the database. Returned if DB_FAST_STAT
+is set.
+<dt>u_int32_t hash_pagesize;<dd>The underlying database page (and bucket) size, in bytes. Returned if
+DB_FAST_STAT is set.
<dt>u_int32_t hash_ffactor;<dd>The desired fill factor (number of items per bucket) specified at
database-creation time. Returned if DB_FAST_STAT is set.
<dt>u_int32_t hash_buckets;<dd>The number of hash buckets. Returned if DB_FAST_STAT is set.
@@ -147,8 +150,10 @@ DB_FAST_STAT flag is specified the count will be exact but will
include deleted and implicitly created records; if the
DB_FAST_STAT flag is not specified, the count will be exact and
will not include deleted or implicitly created records.</p>
-<p>Returned if DB_FAST_STAT is set.</p>
-<dt>u_int32_t bt_pagesize;<dd>Underlying database page size, in bytes. Returned if
+<p><dt>u_int32_t bt_pagecnt;<dd>The number of pages in the database. Returned if DB_FAST_STAT
+is set.
+Returned if DB_FAST_STAT is set.</p>
+<dt>u_int32_t bt_pagesize;<dd>The underlying database page size, in bytes. Returned if
DB_FAST_STAT is set.
<dt>u_int32_t bt_minkey;<dd>The minimum keys per page. Returned if DB_FAST_STAT is set.
<dt>u_int32_t bt_re_len;<dd>The length of fixed-length records. Returned if DB_FAST_STAT
@@ -237,7 +242,6 @@ Among other things, this flag makes it possible for applications to
request key and record counts without incurring the performance penalty
of traversing the entire database.
<dt><a name="DB_STAT_ALL">DB_STAT_ALL</a><dd>Display all available information.
-<dt><a name="DB_STAT_CLEAR">DB_STAT_CLEAR</a><dd>Reset statistics after displaying their values.
</dl>
</dl>
<hr size=1 noshade>
@@ -249,6 +253,6 @@ of traversing the entire database.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/db_sync.html b/db/docs/api_cxx/db_sync.html
index 7d1e41679..719c22de9 100644
--- a/db/docs/api_cxx/db_sync.html
+++ b/db/docs/api_cxx/db_sync.html
@@ -1,6 +1,5 @@
<!--$Id: db_sync.so,v 10.36 2004/08/13 03:38:56 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -73,6 +72,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/db_truncate.html b/db/docs/api_cxx/db_truncate.html
index 0a182abe5..daad87353 100644
--- a/db/docs/api_cxx/db_truncate.html
+++ b/db/docs/api_cxx/db_truncate.html
@@ -1,6 +1,5 @@
<!--$Id: db_truncate.so,v 1.29 2006/09/13 14:30:52 mjc Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -46,15 +45,16 @@ failure, and returns 0 on success.
<dt><b>countp</b><dd>The <b>countp</b> parameter references memory into which
the number of records discarded from the database is copied.
<dt><b>flags</b><dd>The <b>flags</b> parameter is currently unused, and must be set to 0.
-<dt><b>txnid</b><dd>If the operation is part of an application-specified
-transaction, the <b>txnid</b> parameter is a transaction handle
-returned from <a href="../api_cxx/txn_begin.html">DbEnv::txn_begin</a>; if the operation is part of a Berkeley DB Concurrent Data Store
-group, the <b>txnid</b> parameter is a handle returned from
-<a href="../api_cxx/env_cdsgroup_begin.html">DbEnv::cdsgroup_begin</a>; otherwise NULL. If no transaction handle is
+<dt><b>txnid</b><dd>If the operation is part of an application-specified transaction, the
+<b>txnid</b> parameter is a transaction handle returned from
+<a href="../api_cxx/txn_begin.html">DbEnv::txn_begin</a>; if the operation is part of a Berkeley DB Concurrent Data Store group, the
+<b>txnid</b> parameter is a handle returned from
+<a href="../api_cxx/env_cdsgroup_begin.html">DbEnv::cdsgroup_begin</a>; otherwise NULL.
+If no transaction handle is
specified, but the
operation occurs in a transactional
database,
-the operation will be implicitly transaction protected.
+the operation will be implicitly transaction protected.
</dl>
<h3>Errors</h3>
<p>The Db::truncate method
@@ -83,6 +83,6 @@ throw a <a href="../api_cxx/lockng_class.html">DbLockNotGrantedException</a> exc
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/db_upgrade.html b/db/docs/api_cxx/db_upgrade.html
index 7e3243101..a2eb67885 100644
--- a/db/docs/api_cxx/db_upgrade.html
+++ b/db/docs/api_cxx/db_upgrade.html
@@ -1,6 +1,5 @@
<!--$Id: db_upgrade.so,v 10.37 2004/08/13 03:38:56 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -101,6 +100,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/db_verify.html b/db/docs/api_cxx/db_verify.html
index 621cc6309..3a6797612 100644
--- a/db/docs/api_cxx/db_verify.html
+++ b/db/docs/api_cxx/db_verify.html
@@ -1,6 +1,5 @@
<!--$Id: db_verify.so,v 10.30 2005/03/08 16:29:34 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -144,6 +143,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/dbc_class.html b/db/docs/api_cxx/dbc_class.html
index fc4cbb09a..2db254c07 100644
--- a/db/docs/api_cxx/dbc_class.html
+++ b/db/docs/api_cxx/dbc_class.html
@@ -1,6 +1,5 @@
<!--$Id: dbc_class.so,v 10.19 2004/08/13 03:38:56 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -38,6 +37,6 @@ handle may not be accessed again, regardless of the method's return.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/dbc_close.html b/db/docs/api_cxx/dbc_close.html
index 2664ca9b5..596fa0fbd 100644
--- a/db/docs/api_cxx/dbc_close.html
+++ b/db/docs/api_cxx/dbc_close.html
@@ -1,6 +1,5 @@
-<!--$Id: dbc_close.so,v 10.34 2006/09/13 14:30:52 mjc Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: dbc_close.so,v 10.35 2006/10/24 13:26:50 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -67,6 +66,6 @@ throw a <a href="../api_cxx/lockng_class.html">DbLockNotGrantedException</a> exc
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/dbc_count.html b/db/docs/api_cxx/dbc_count.html
index f9f717496..ccc4c319f 100644
--- a/db/docs/api_cxx/dbc_count.html
+++ b/db/docs/api_cxx/dbc_count.html
@@ -1,6 +1,5 @@
-<!--$Id: dbc_count.so,v 10.25 2004/08/13 03:38:56 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: dbc_count.so,v 10.26 2006/10/24 13:26:50 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -64,6 +63,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/dbc_del.html b/db/docs/api_cxx/dbc_del.html
index bd735bf7a..c3521dab5 100644
--- a/db/docs/api_cxx/dbc_del.html
+++ b/db/docs/api_cxx/dbc_del.html
@@ -1,6 +1,5 @@
-<!--$Id: dbc_del.so,v 10.46 2006/09/13 14:30:52 mjc Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: dbc_del.so,v 10.47 2006/10/24 13:26:50 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -88,6 +87,6 @@ throw a <a href="../api_cxx/lockng_class.html">DbLockNotGrantedException</a> exc
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/dbc_dup.html b/db/docs/api_cxx/dbc_dup.html
index 9c4eb6de2..0dd162dbb 100644
--- a/db/docs/api_cxx/dbc_dup.html
+++ b/db/docs/api_cxx/dbc_dup.html
@@ -1,6 +1,5 @@
-<!--$Id: dbc_dup.so,v 10.32 2004/08/13 03:38:56 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: dbc_dup.so,v 10.33 2006/10/24 13:26:50 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -73,6 +72,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/dbc_get.html b/db/docs/api_cxx/dbc_get.html
index 68bed52f6..0c42f4171 100644
--- a/db/docs/api_cxx/dbc_get.html
+++ b/db/docs/api_cxx/dbc_get.html
@@ -1,6 +1,5 @@
-<!--$Id: dbc_get.so,v 10.114 2005/02/10 20:02:31 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: dbc_get.so,v 10.117 2007/05/31 18:52:36 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -151,6 +150,12 @@ later deleted.</p>
<p>The Dbc::get method will return <a href="../ref/program/errorret.html#DB_NOTFOUND">DB_NOTFOUND</a> if DB_PREV is set and the cursor is already on the first record
in the database.
</p>
+<dt><a name="DB_PREV_DUP">DB_PREV_DUP</a><dd>If the previous key/data pair of the database is a duplicate data record
+for the current key/data pair, the cursor is moved to the previous key/data
+pair of the database, and that pair is returned.
+<p>The Dbc::get method will return <a href="../ref/program/errorret.html#DB_NOTFOUND">DB_NOTFOUND</a> if DB_PREV_DUP is set and the previous key/data pair of the
+database is not a duplicate data record for the current key/data pair.
+</p>
<dt><a name="DB_PREV_NODUP">DB_PREV_NODUP</a><dd>If the cursor is not yet initialized, DB_PREV_NODUP is identical
to DB_LAST. Otherwise, the cursor is moved to the previous
non-duplicate key of the database, and that key/data pair is returned.
@@ -189,9 +194,10 @@ flag.</p>
In addition, the following flags may be set by
bitwise inclusively <b>OR</b>'ing them into the <b>flags</b> parameter:
<dl compact>
-<dt><a name="DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a><dd>Read modified but not yet committed data. Silently ignored if the
-<a href="../api_cxx/db_open.html#DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a> flag was not specified when the underlying
-database was opened.
+<dt><a name="DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a><dd>Database items read during a transactional call will have degree 1
+isolation, including modified but not yet committed data. Silently
+ignored if the <a href="../api_cxx/db_open.html#DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a> flag was not specified when
+the underlying database was opened.
<dt><a name="DB_MULTIPLE">DB_MULTIPLE</a><dd>Return multiple data items in the <b>data</b> parameter.
<p>In the case of Btree or Hash databases, duplicate data items for the
current key, starting at the current cursor position, are entered into
@@ -261,11 +267,12 @@ DB_NEXT_NODUP, DB_SET, DB_SET_RANGE, and
DB_SET_RECNO options. The DB_MULTIPLE_KEY flag may not
be used when accessing databases made into secondary indices using the
<a href="../api_cxx/db_associate.html">Db::associate</a> method.</p>
-<dt><a name="DB_RMW">DB_RMW</a><dd>Acquire write locks instead of read locks when doing the retrieval.
-Setting this flag can eliminate deadlock during a read-modify-write
-cycle by acquiring the write lock during the read part of the cycle so
-that another thread of control acquiring a read lock for the same item,
-in its own read-modify-write cycle, will not result in deadlock.
+<dt><a name="DB_RMW">DB_RMW</a><dd>Acquire write locks instead of read locks when doing the read, if
+locking is configured. Setting this flag can eliminate deadlock during
+a read-modify-write cycle by acquiring the write lock during the read
+part of the cycle so that another thread of control acquiring a read
+lock for the same item, in its own read-modify-write cycle, will not
+result in deadlock.
</dl>
<dt><b>key</b><dd>The key <a href="../api_cxx/dbt_class.html">Dbt</a> operated on.
<dt><b>pkey</b><dd>The secondary index key <a href="../api_cxx/dbt_class.html">Dbt</a> operated on.
@@ -285,8 +292,8 @@ unrolled a committed transaction.
<dt>DB_SECONDARY_BAD<dd>A secondary index references a nonexistent primary key.
</dl>
<dl compact>
-<dt>EINVAL<dd>If the DB_CURRENT or DB_NEXT_DUP flags were specified and
-the cursor has not been initialized;
+<dt>EINVAL<dd>If the DB_CURRENT, DB_NEXT_DUP or DB_PREV_DUP flags
+were specified and the cursor has not been initialized;
the Dbc::pget method was called with a cursor that does not refer to a
secondary index; or if an
invalid flag value or parameter was specified.
@@ -311,6 +318,6 @@ throw a <a href="../api_cxx/lockng_class.html">DbLockNotGrantedException</a> exc
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/dbc_list.html b/db/docs/api_cxx/dbc_list.html
index e3772cc00..9250667e0 100644
--- a/db/docs/api_cxx/dbc_list.html
+++ b/db/docs/api_cxx/dbc_list.html
@@ -1,6 +1,5 @@
<!--$Id: dbc_list.so,v 1.1 2002/08/30 20:00:49 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -10,7 +9,7 @@
</head>
<body bgcolor=white>
<h3 align=center>Berkeley DB: Database Cursors and Related Methods</h3>
-<!--$Id: m4.methods,v 1.4 2005/02/09 13:11:05 bostic Exp $-->
+<!--$Id: m4.methods,v 1.5 2007/05/08 21:37:19 bostic Exp $-->
<table border=1 align=center>
<tr><th>Database Cursors and Related Methods</th><th>Description</th></tr>
<!--Db::cursor--><tr><td><a href="../api_cxx/db_cursor.html">Db::cursor</a></td><td>Create a cursor</td></tr>
@@ -20,7 +19,8 @@
<!--DbCursor::dup--><tr><td><a href="../api_cxx/dbc_dup.html">Dbc::dup</a></td><td>Duplicate a cursor</td></tr>
<!--DbCursor::get--><tr><td><a href="../api_cxx/dbc_get.html">Dbc::get</a>, <a href="../api_cxx/dbc_get.html">Dbc::pget</a></td><td>Retrieve by cursor</td></tr>
<!--DbCursor::put--><tr><td><a href="../api_cxx/dbc_put.html">Dbc::put</a></td><td>Store by cursor</td></tr>
+<!--DbCursor::set_priority--><tr><td><a href="../api_cxx/dbc_set_priority.html">Dbc::set_priority</a></td><td>Set the cursor's cache priority</td></tr>
</table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/dbc_put.html b/db/docs/api_cxx/dbc_put.html
index b9a952dc2..ffbc1a040 100644
--- a/db/docs/api_cxx/dbc_put.html
+++ b/db/docs/api_cxx/dbc_put.html
@@ -1,6 +1,5 @@
-<!--$Id: dbc_put.so,v 10.60 2006/09/13 14:30:52 mjc Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: dbc_put.so,v 10.63 2007/05/03 15:20:37 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -46,8 +45,8 @@ item.</p>
element as a duplicate element of the key to which the cursor refers.
The new element appears immediately after the current cursor position.
It is an error to specify DB_AFTER if the underlying Btree or
-Hash database does not support duplicate data items. The <b>key</b>
-parameter is ignored.
+Hash database is not configured for unsorted duplicate data items. The
+<b>key</b> parameter is ignored.
<p>In the case of the Recno access method, it is an error to specify
DB_AFTER if the underlying Recno database was not created with
the <a href="../api_cxx/db_set_flags.html#DB_RENUMBER">DB_RENUMBER</a> flag. If the <a href="../api_cxx/db_set_flags.html#DB_RENUMBER">DB_RENUMBER</a> flag was
@@ -63,9 +62,9 @@ underlying access method is Hash.
<dt><a name="DB_BEFORE">DB_BEFORE</a><dd>In the case of the Btree and Hash access methods, insert the data
element as a duplicate element of the key to which the cursor refers.
The new element appears immediately before the current cursor position.
-It is an error to specify DB_BEFORE if the underlying Btree or
-Hash database does not support duplicate data items. The <b>key</b>
-parameter is ignored.
+It is an error to specify DB_AFTER if the underlying Btree or
+Hash database is not configured for unsorted duplicate data items. The
+<b>key</b> parameter is ignored.
<p>In the case of the Recno access method, it is an error to specify
DB_BEFORE if the underlying Recno database was not created with
the <a href="../api_cxx/db_set_flags.html#DB_RENUMBER">DB_RENUMBER</a> flag. If the <a href="../api_cxx/db_set_flags.html#DB_RENUMBER">DB_RENUMBER</a> flag was
@@ -82,26 +81,20 @@ access method is Hash.
the specified data item. The <b>key</b> parameter is ignored.
<p>The Dbc::put method will return <a href="../ref/program/errorret.html#DB_NOTFOUND">DB_NOTFOUND</a> if the current cursor record has already been deleted.
</p>
-<dt><a name="DB_KEYFIRST">DB_KEYFIRST</a><dd>In the case of the Btree and Hash access methods, insert the specified
-key/data pair into the database.
+<dt><a name="DB_KEYFIRST">DB_KEYFIRST</a><dd>Insert the specified key/data pair into the database.
<p>If the underlying database supports duplicate data items, and if the
key already exists in the database and a duplicate sort function has
been specified, the inserted data item is added in its sorted location.
If the key already exists in the database and no duplicate sort function
has been specified, the inserted data item is added as the first of the
data items for that key.</p>
-<p>The DB_KEYFIRST flag may not be specified to the Queue or Recno
-access methods.</p>
-<dt><a name="DB_KEYLAST">DB_KEYLAST</a><dd>In the case of the Btree and Hash access methods, insert the specified
-key/data pair into the database.
+<dt><a name="DB_KEYLAST">DB_KEYLAST</a><dd>Insert the specified key/data pair into the database.
<p>If the underlying database supports duplicate data items, and if the
key already exists in the database and a duplicate sort function has
been specified, the inserted data item is added in its sorted location.
If the key already exists in the database, and no duplicate sort
function has been specified, the inserted data item is added as the last
of the data items for that key.</p>
-<p>The DB_KEYLAST flag may not be specified to the Queue or Recno
-access methods.</p>
<dt><a name="DB_NODUPDATA">DB_NODUPDATA</a><dd>In the case of the Btree and Hash access methods, insert the specified
key/data pair into the database, unless a key/data pair comparing
equally to it already exists in the database. If a matching key/data
@@ -163,6 +156,6 @@ throw a <a href="../api_cxx/lockng_class.html">DbLockNotGrantedException</a> exc
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/dbc_set_priority.html b/db/docs/api_cxx/dbc_set_priority.html
new file mode 100644
index 000000000..ce9b54488
--- /dev/null
+++ b/db/docs/api_cxx/dbc_set_priority.html
@@ -0,0 +1,70 @@
+<!--$Id: dbc_set_priority.so,v 1.3 2007/05/22 18:06:05 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
+<!--See the file LICENSE for redistribution information.-->
+<html>
+<head>
+<title>Berkeley DB: Dbc::set_priority</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
+</head>
+<body bgcolor=white>
+<table width="100%"><tr valign=top>
+<td>
+<h3>Dbc::set_priority</h3>
+</td>
+<td align=right>
+<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a>
+<a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a></td>
+</tr></table>
+<hr size=1 noshade>
+<tt>
+<h3><pre>
+#include &lt;db_cxx.h&gt;
+<p>
+int
+Dbc::set_priority(DB_CACHE_PRIORITY priority);
+<p>
+int
+Dbc::get_priority(DB_CACHE_PRIORITY *priorityp);
+</pre></h3>
+<hr size=1 noshade>
+<h3>Description: Dbc::set_priority</h3>
+<p>Set the cache priority for pages referenced by the
+<a href="../api_cxx/dbc_class.html">Dbc</a>
+handle.</p>
+<p>The priority of a page biases the replacement algorithm to be more or
+less likely to discard a page when space is needed in the buffer pool.
+The bias is temporary, and pages will eventually be discarded if they
+are not referenced again. The Dbc::set_priority method is only advisory, and does
+not guarantee pages will be treated in a specific way.</p>
+<p>The Dbc::set_priority method may be called at any time during the life of the
+application.</p>
+<p>The Dbc::set_priority 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.
+</p>
+<h3>Parameters</h3>
+<dl compact>
+<dt><b>priority</b><dd>The <b>priority</b> parameter must be set to one of the following
+values:
+<dl compact>
+<dt><a name="DB_PRIORITY_VERY_LOW">DB_PRIORITY_VERY_LOW</a><dd>The lowest priority: pages are the most likely to be discarded.
+<dt><a name="DB_PRIORITY_LOW">DB_PRIORITY_LOW</a><dd>The next lowest priority.
+<dt><a name="DB_PRIORITY_DEFAULT">DB_PRIORITY_DEFAULT</a><dd>The default priority.
+<dt><a name="DB_PRIORITY_HIGH">DB_PRIORITY_HIGH</a><dd>The next highest priority.
+<dt><a name="DB_PRIORITY_VERY_HIGH">DB_PRIORITY_VERY_HIGH</a><dd>The highest priority: pages are the least likely to be discarded.
+</dl>
+</dl>
+<hr size=1 noshade>
+<h3>Class</h3>
+<a href="../api_cxx/dbc_class.html">Dbc</a>
+<h3>See Also</h3>
+<a href="../api_cxx/dbc_list.html">Database Cursors and Related Methods</a>
+</tt>
+<table width="100%"><tr><td><br></td><td align=right>
+<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
+</body>
+</html>
diff --git a/db/docs/api_cxx/dbenv_class.html b/db/docs/api_cxx/dbenv_class.html
deleted file mode 100644
index 1c59dcbf1..000000000
--- a/db/docs/api_cxx/dbenv_class.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!--$Id: dbenv_class.so,v 10.20 2000/07/27 13:10:54 bostic Exp $-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB: DbEnv</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
- <a name="2"><!--meow--></a>
-<table><tr valign=top>
-<td>
-<h1>DbEnv</h1>
-</td>
-<td width="1%">
-<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;db_cxx.h&gt;
-<p>
-class DbEnv {
-public:
- DbEnv(u_int32 flags);
- ~DbEnv();
- ...
-};
-</pre></h3>
-<h1>Description</h1>
-<p>This manual page describes the specific details of the DbEnv
-class, which is the center of the Berkeley DB environment.
-<p>The following <b>flags</b> value may be specified:
-<p><dl compact>
-<p><dt><a name="DB_CLIENT">DB_CLIENT</a><dd>Create a client environment to connect to a server.
-<p>The DB_CLIENT flag indicates to the system that this environment
-is remote on a server. The use of this flag causes the environment
-methods to use functions that call a server instead of local functions.
-Prior to making any environment or database method calls, the
-application must call the <a href="../api_cxx/env_set_server.html">DbEnv::set_server</a> function to establish
-the connection to the server.
-<p><dt><a name="DB_CXX_NO_EXCEPTIONS">DB_CXX_NO_EXCEPTIONS</a><dd>The Berkeley DB C++ API supports two different error behaviors. By default,
-whenever an error occurs an exception is thrown that encapsulates the
-error information. This generally allows for cleaner logic for
-transaction processing, as a try block can surround a single
-transaction. However, if DB_CXX_NO_EXCEPTIONS is specified,
-exceptions are not thrown, instead each individual function returns an
-error code.
-</dl>
-<h3>Class</h3>
-<a href="../api_cxx/dbenv_class.html">DbEnv</a>
-<h1>See Also</h1>
-<a href="../api_cxx/env_close.html">DbEnv::close</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/db_err.html">DbEnv::err</a>,
-<a href="../api_cxx/env_strerror.html">DbEnv::strerror</a>,
-<a href="../api_cxx/env_version.html">DbEnv::version</a>,
-<a href="../api_cxx/env_set_cachesize.html">DbEnv::set_cachesize</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_flags.html">DbEnv::set_flags</a>,
-<a href="../api_cxx/env_set_mutexlocks.html">DbEnv::set_mutexlocks</a>,
-<a href="../api_cxx/env_set_paniccall.html">DbEnv::set_paniccall</a>,
-and
-<a href="../api_cxx/env_set_verbose.html">DbEnv::set_verbose</a>.
-</tt>
-<table><tr><td><br></td><td width="1%">
-<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/dbt_bulk_class.html b/db/docs/api_cxx/dbt_bulk_class.html
index 9acd12223..b8c010bb7 100644
--- a/db/docs/api_cxx/dbt_bulk_class.html
+++ b/db/docs/api_cxx/dbt_bulk_class.html
@@ -1,6 +1,5 @@
<!--$Id: dbt_bulk_class.so,v 1.15 2004/08/13 03:38:56 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -158,6 +157,6 @@ original bulk retrieval buffer.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/dbt_class.html b/db/docs/api_cxx/dbt_class.html
index b0638fa78..ede675134 100644
--- a/db/docs/api_cxx/dbt_class.html
+++ b/db/docs/api_cxx/dbt_class.html
@@ -1,7 +1,6 @@
<!--$Id: dbt_class.so,v 10.1 2002/08/24 18:22:30 bostic Exp $-->
-<!--$Id: dbt_cxx.so,v 10.71 2005/04/01 01:53:16 mjc Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: dbt_cxx.so,v 10.72 2007/02/27 00:41:24 mjc Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -117,8 +116,8 @@ content for the Dbt.
<p>Initialize the data array from a logical record number. Recno database
records are ordered by integer keys starting at 1. When the
Dbt::set_recno_key_data method is called, the data, size and offset
-fields in the Dbt are implicitly set to hold a byte array representation
-of the integer key.</p>
+fields in the Dbt are implicitly set to hold a byte array
+representation of the integer key.</p>
<h3>Parameters</h3>
<dl compact>
<dt><b>recno</b><dd>The <b>recno</b> parameter logical record number used to initialize the
@@ -269,6 +268,22 @@ and a partial put was done using a Dbt having a <b>dlen</b>
field of 20, a <b>doff</b> field of 85, and a <b>size</b> field of 30,
the resulting record would be 115 bytes in length, where the last 30
bytes would be those specified by the put call.</p>
+<dt><a name="DB_DBT_APPMALLOC">DB_DBT_APPMALLOC</a><dd>After an application-supplied callback routine passed to either
+<a href="../api_cxx/db_associate.html">Db::associate</a> or <a href="../api_cxx/db_set_append_recno.html">Db::set_append_recno</a> is executed, the
+<b>data</b> field of a Dbt may refer to memory allocated with
+<b>malloc</b>(3) or <b>realloc</b>(3). In that case, the
+callback sets the DB_DBT_APPMALLOC flag in the Dbt so
+that Berkeley DB will call <b>free</b>(3) to deallocate the memory when it
+is no longer required.
+<dt><a name="DB_DBT_MULTIPLE">DB_DBT_MULTIPLE</a><dd>Set in a secondary key creation callback routine passed to
+<a href="../api_cxx/db_associate.html">Db::associate</a> to indicate that multiple secondary keys should be
+associated with the given primary key/data pair. If set, the
+<b>size</b> field indicates the number of secondary keys and the
+<b>data</b> field refers to an array of that number of Dbt
+structures.
+<p>The DB_DBT_APPMALLOC flag may be set on any of the Dbt
+structures to indicate that their <b>data</b> field needs to be
+freed.</p>
</dl>
</dl>
<hr size=1 noshade>
@@ -278,6 +293,6 @@ bytes would be those specified by the put call.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/dbt_package.html b/db/docs/api_cxx/dbt_package.html
index 88bcfb497..d0f372c3e 100644
--- a/db/docs/api_cxx/dbt_package.html
+++ b/db/docs/api_cxx/dbt_package.html
@@ -1,6 +1,5 @@
<!--$Id: dbt_package.so,v 10.2 2004/08/29 14:00:03 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -17,6 +16,6 @@
<tr><td><a href="../api_cxx/dbt_bulk_class.html">DbMultipleKeyDataIterator</a></td><td>Next bulk get retrieval</td></tr>
<tr><td><a href="../api_cxx/dbt_bulk_class.html">DbMultipleRecnoDataIterator</a></td><td>Next bulk get retrieval</td></tr>
</table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/deadlock_class.html b/db/docs/api_cxx/deadlock_class.html
index b55697a1f..672750f85 100644
--- a/db/docs/api_cxx/deadlock_class.html
+++ b/db/docs/api_cxx/deadlock_class.html
@@ -1,6 +1,5 @@
<!--$Id: deadlock_class.so,v 10.17 2004/08/13 03:38:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -38,6 +37,6 @@ termination, and a DbDeadlockException is thrown to that thread.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/env_cdsgroup_begin.html b/db/docs/api_cxx/env_cdsgroup_begin.html
index 1cc8af4cd..a8aa1e252 100644
--- a/db/docs/api_cxx/env_cdsgroup_begin.html
+++ b/db/docs/api_cxx/env_cdsgroup_begin.html
@@ -1,6 +1,5 @@
<!--$Id: env_cdsgroup_begin.so,v 1.2 2006/08/24 19:02:06 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -54,6 +53,6 @@ throw a DbMemoryException.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/env_class.html b/db/docs/api_cxx/env_class.html
index d4c6a47d4..18c8e22bb 100644
--- a/db/docs/api_cxx/env_class.html
+++ b/db/docs/api_cxx/env_class.html
@@ -1,6 +1,5 @@
<!--$Id: env_class.so,v 10.45 2005/11/30 19:09:47 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -93,6 +92,6 @@ DbEnv
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/env_close.html b/db/docs/api_cxx/env_close.html
index ceb0e6d62..ffab8f10f 100644
--- a/db/docs/api_cxx/env_close.html
+++ b/db/docs/api_cxx/env_close.html
@@ -1,6 +1,5 @@
<!--$Id: env_close.so,v 10.38 2004/08/13 03:38:56 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -78,6 +77,6 @@ failure, and returns 0 on success.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/env_dbremove.html b/db/docs/api_cxx/env_dbremove.html
index 14219f092..635ce2520 100644
--- a/db/docs/api_cxx/env_dbremove.html
+++ b/db/docs/api_cxx/env_dbremove.html
@@ -1,6 +1,5 @@
<!--$Id: env_dbremove.so,v 10.49 2004/12/16 19:13:01 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -58,14 +57,15 @@ the following value:
changes made by the operation will be recoverable. If the call fails,
the operation will have made no changes.
</dl>
-<dt><b>txnid</b><dd>If the operation is part of an application-specified
-transaction, the <b>txnid</b> parameter is a transaction handle
-returned from <a href="../api_cxx/txn_begin.html">DbEnv::txn_begin</a>; if the operation is part of a Berkeley DB Concurrent Data Store
-group, the <b>txnid</b> parameter is a handle returned from
-<a href="../api_cxx/env_cdsgroup_begin.html">DbEnv::cdsgroup_begin</a>; otherwise NULL. If no transaction handle is
+<dt><b>txnid</b><dd>If the operation is part of an application-specified transaction, the
+<b>txnid</b> parameter is a transaction handle returned from
+<a href="../api_cxx/txn_begin.html">DbEnv::txn_begin</a>; if the operation is part of a Berkeley DB Concurrent Data Store group, the
+<b>txnid</b> parameter is a handle returned from
+<a href="../api_cxx/env_cdsgroup_begin.html">DbEnv::cdsgroup_begin</a>; otherwise NULL.
+If no transaction handle is
specified, but the
DB_AUTO_COMMIT flag is specified,
-the operation will be implicitly transaction protected.
+the operation will be implicitly transaction protected.
</dl>
<h3>Environment Variables</h3>
<p>The
@@ -104,6 +104,6 @@ throw a <a href="../api_cxx/lockng_class.html">DbLockNotGrantedException</a> exc
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/env_dbrename.html b/db/docs/api_cxx/env_dbrename.html
index 4ecdd706c..c71872ac3 100644
--- a/db/docs/api_cxx/env_dbrename.html
+++ b/db/docs/api_cxx/env_dbrename.html
@@ -1,6 +1,5 @@
<!--$Id: env_dbrename.so,v 10.37 2004/12/16 19:13:01 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -61,14 +60,15 @@ changes made by the operation will be recoverable. If the call fails,
the operation will have made no changes.
</dl>
<dt><b>newname</b><dd>The <b>newname</b> parameter is the new name of the database or file.
-<dt><b>txnid</b><dd>If the operation is part of an application-specified
-transaction, the <b>txnid</b> parameter is a transaction handle
-returned from <a href="../api_cxx/txn_begin.html">DbEnv::txn_begin</a>; if the operation is part of a Berkeley DB Concurrent Data Store
-group, the <b>txnid</b> parameter is a handle returned from
-<a href="../api_cxx/env_cdsgroup_begin.html">DbEnv::cdsgroup_begin</a>; otherwise NULL. If no transaction handle is
+<dt><b>txnid</b><dd>If the operation is part of an application-specified transaction, the
+<b>txnid</b> parameter is a transaction handle returned from
+<a href="../api_cxx/txn_begin.html">DbEnv::txn_begin</a>; if the operation is part of a Berkeley DB Concurrent Data Store group, the
+<b>txnid</b> parameter is a handle returned from
+<a href="../api_cxx/env_cdsgroup_begin.html">DbEnv::cdsgroup_begin</a>; otherwise NULL.
+If no transaction handle is
specified, but the
DB_AUTO_COMMIT flag is specified,
-the operation will be implicitly transaction protected.
+the operation will be implicitly transaction protected.
</dl>
<h3>Environment Variables</h3>
<p>The
@@ -107,6 +107,6 @@ throw a <a href="../api_cxx/lockng_class.html">DbLockNotGrantedException</a> exc
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/env_err.html b/db/docs/api_cxx/env_err.html
index 638d6e0e6..e1a5e60da 100644
--- a/db/docs/api_cxx/env_err.html
+++ b/db/docs/api_cxx/env_err.html
@@ -1,6 +1,5 @@
<!--$Id: env_err.so,v 10.34 2006/04/27 20:17:47 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -79,6 +78,6 @@ string.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/env_event_notify.html b/db/docs/api_cxx/env_event_notify.html
index e0b28313e..11020c3d0 100644
--- a/db/docs/api_cxx/env_event_notify.html
+++ b/db/docs/api_cxx/env_event_notify.html
@@ -1,6 +1,5 @@
-<!--$Id: env_event_notify.so,v 10.9 2006/06/27 22:49:29 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: env_event_notify.so,v 10.13 2007/04/05 20:37:29 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -58,28 +57,41 @@ rather than gracefully return up the stack.
environment has failed. All threads of control in the database
environment should exit the environment, and recovery should be run.</p>
<dt><a name="DB_EVENT_REP_CLIENT">DB_EVENT_REP_CLIENT</a><dd>The local site is now a replication client.
+<dt><a name="DB_EVENT_REP_ELECTED">DB_EVENT_REP_ELECTED</a><dd>The local replication site has just won an election. An application using
+the Base replication API should arrange for a call to the <a href="../api_cxx/rep_start.html">DbEnv::rep_start</a> method
+after receiving this event, to reconfigure the local environment as a
+replication master.
+<p>Replication Manager applications may safely ignore this event. The
+Replication Manager calls <a href="../api_cxx/rep_start.html">DbEnv::rep_start</a> automatically on behalf of
+the application when appropriate (resulting in firing of the
+DB_EVENT_REP_MASTER event).</p>
<dt><a name="DB_EVENT_REP_MASTER">DB_EVENT_REP_MASTER</a><dd>The local site is now the master site of its replication group. It is
the application's responsibility to begin acting as the master environment.
<dt><a name="DB_EVENT_REP_NEWMASTER">DB_EVENT_REP_NEWMASTER</a><dd>The replication group of which this site is a member has just established a
new master; the local site is not the new master. The
<b>event_info</b> parameter points to an integer containing the
environment ID of the new master.
-<p>The DB_EVENT_REP_NEWMASTER event is provided only to applications using
-the replication manager support.</p>
+<dt><a name="DB_EVENT_REP_PERM_FAILED">DB_EVENT_REP_PERM_FAILED</a><dd>The replication manager did not receive enough acknowledgements (based on
+the acknowledgement policy configured with <a href="../api_cxx/repmgr_ack_policy.html">DbEnv::repmgr_set_ack_policy</a>)
+to ensure a transaction's durability within the replication group. The
+transaction will be flushed to the master's local disk storage for
+durability.
+<p>The DB_EVENT_REP_PERM_FAILED event is provided only to applications
+configured for the replication manager.</p>
<dt><a name="DB_EVENT_REP_STARTUPDONE">DB_EVENT_REP_STARTUPDONE</a><dd>The client has completed startup synchronization and is now processing
live log records received from the master.
<dt><a name="DB_EVENT_WRITE_FAILED">DB_EVENT_WRITE_FAILED</a><dd>A Berkeley DB write to stable storage failed.
</dl>
-<p>Berkeley DB is not re-entrant. Callback functions should not attempt to make
-library calls (for example, to release locks or close open handles).
-Re-entering Berkeley DB is not guaranteed to work correctly, and the results
-are undefined.</p>
<dt>event_info<dd>The <b>event_info</b> parameter may reference memory which contains
additional information describing an event. By default,
<b>event_info</b> is NULL; specific events may pass non-NULL values,
in which case the event will also describe the memory's structure.
</dl>
</dl>
+<p>Berkeley DB is not re-entrant. Callback functions should not attempt to make
+library calls (for example, to release locks or close open handles).
+Re-entering Berkeley DB is not guaranteed to work correctly, and the results
+are undefined.</p>
<hr size=1 noshade>
<h3>Class</h3>
<a href="../api_cxx/env_class.html">DbEnv</a>
@@ -89,6 +101,6 @@ in which case the event will also describe the memory's structure.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/env_failchk.html b/db/docs/api_cxx/env_failchk.html
index 83acfd93a..ca6407a1a 100644
--- a/db/docs/api_cxx/env_failchk.html
+++ b/db/docs/api_cxx/env_failchk.html
@@ -1,6 +1,5 @@
-<!--$Id: env_failchk.so,v 10.5 2006/05/26 20:40:50 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: env_failchk.so,v 10.6 2006/10/12 21:37:42 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -23,7 +22,7 @@
#include &lt;db_cxx.h&gt;
<p>
int
-DbEnv::dbenv_failchk(u_int32_t flags);
+DbEnv::failchk(u_int32_t flags);
</pre></h3>
<hr size=1 noshade>
<h3>Description: DbEnv::failchk</h3>
@@ -91,6 +90,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/env_fileid_reset.html b/db/docs/api_cxx/env_fileid_reset.html
index b366b68cf..1fa1d9a62 100644
--- a/db/docs/api_cxx/env_fileid_reset.html
+++ b/db/docs/api_cxx/env_fileid_reset.html
@@ -1,6 +1,5 @@
<!--$Id: env_fileid_reset.so,v 1.3 2005/12/13 16:48:01 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -71,6 +70,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/env_list.html b/db/docs/api_cxx/env_list.html
index 58486c7d0..b66984f0e 100644
--- a/db/docs/api_cxx/env_list.html
+++ b/db/docs/api_cxx/env_list.html
@@ -1,6 +1,5 @@
<!--$Id: env_list.so,v 10.1 2002/08/30 20:00:50 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -52,6 +51,6 @@
<!--DbEnv::set_tmp_dir--><tr><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>
<!--DbEnv::set_verbose--><tr><td><a href="../api_cxx/env_set_verbose.html">DbEnv::set_verbose</a></td><td>Set verbose messages</td></tr>
</table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/env_lsn_reset.html b/db/docs/api_cxx/env_lsn_reset.html
index edbfe38ca..3e1fa5a83 100644
--- a/db/docs/api_cxx/env_lsn_reset.html
+++ b/db/docs/api_cxx/env_lsn_reset.html
@@ -1,6 +1,5 @@
<!--$Id: env_lsn_reset.so,v 1.4 2005/12/13 16:48:01 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -77,6 +76,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/env_open.html b/db/docs/api_cxx/env_open.html
index 4958414b7..1bf4aec8e 100644
--- a/db/docs/api_cxx/env_open.html
+++ b/db/docs/api_cxx/env_open.html
@@ -1,6 +1,5 @@
<!--$Id: env_open.so,v 10.111 2006/08/02 17:39:47 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -275,6 +274,6 @@ open method flags in <b>flagsp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/env_remove.html b/db/docs/api_cxx/env_remove.html
index ea4474377..e10be5d79 100644
--- a/db/docs/api_cxx/env_remove.html
+++ b/db/docs/api_cxx/env_remove.html
@@ -1,6 +1,5 @@
-<!--$Id: env_remove.so,v 10.44 2004/08/13 03:38:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: env_remove.so,v 10.45 2006/12/08 16:22:45 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -106,10 +105,7 @@ may fail and throw
encapsulating one of the following non-zero errors, or return one of
the following non-zero errors:</p>
<dl compact>
-<dt>EBUSY <dd>The shared memory region was in use and the force flag was not set.
-</dl>
-<dl compact>
-<dt>ENOENT<dd>The file or directory does not exist.
+<dt>EBUSY<dd>The shared memory region was in use and the force flag was not set.
</dl>
<hr size=1 noshade>
<h3>Class</h3>
@@ -120,6 +116,6 @@ the following non-zero errors:</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/env_set_alloc.html b/db/docs/api_cxx/env_set_alloc.html
index 0fc20ffcc..6a43dc6aa 100644
--- a/db/docs/api_cxx/env_set_alloc.html
+++ b/db/docs/api_cxx/env_set_alloc.html
@@ -1,6 +1,5 @@
<!--$Id: env_set_alloc.so,v 1.22 2004/08/13 03:38:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -99,6 +98,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/env_set_app_dispatch.html b/db/docs/api_cxx/env_set_app_dispatch.html
index 6d643330e..f995870cc 100644
--- a/db/docs/api_cxx/env_set_app_dispatch.html
+++ b/db/docs/api_cxx/env_set_app_dispatch.html
@@ -1,6 +1,5 @@
<!--$Id: env_set_app_dispatch.so,v 10.54 2004/08/13 03:38:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -100,6 +99,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/env_set_cache_max.html b/db/docs/api_cxx/env_set_cache_max.html
new file mode 100644
index 000000000..db3850ef6
--- /dev/null
+++ b/db/docs/api_cxx/env_set_cache_max.html
@@ -0,0 +1,96 @@
+<!--$Id: env_set_cache_max.so,v 1.2 2007/07/07 14:40:15 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
+<!--See the file LICENSE for redistribution information.-->
+<html>
+<head>
+<title>Berkeley DB: DbEnv::set_cache_max</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
+</head>
+<body bgcolor=white>
+<table width="100%"><tr valign=top>
+<td>
+<h3>DbEnv::set_cache_max</h3>
+</td>
+<td align=right>
+<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a>
+<a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a></td>
+</tr></table>
+<hr size=1 noshade>
+<tt>
+<h3><pre>
+#include &lt;db_cxx.h&gt;
+<p>
+int
+DbEnv::set_cache_max(u_int32_t gbytes, u_int32_t bytes);
+<p>
+int
+DbEnv::get_cache_max(u_int32_t *gbytesp, u_int32_t *bytesp);
+</pre></h3>
+<hr size=1 noshade>
+<h3>Description: DbEnv::set_cache_max</h3>
+<p>The DbEnv::set_cache_max method sets the maximum cache size, in bytes.
+The specified size is rounded to the nearest multiple of the cache
+region size, which is the initial cache size divided by the number of
+regions specified to the <a href="../api_cxx/env_set_cachesize.html">DbEnv::set_cachesize</a> method. If no value is
+specified, it defaults to the initial cache size.</p>
+<p>The database environment's maximum cache size may also be configured using the
+environment's <b>DB_CONFIG</b> file. The syntax of the entry in that
+file is a single line with the string "set_cache_max", one or more whitespace
+characters, and the size in bytes.
+Because the <b>DB_CONFIG</b> file is read when the database
+environment is opened, it will silently overrule configuration done
+before that time.</p>
+<p>The DbEnv::set_cache_max method configures a database environment, not only operations
+performed using the specified <a href="../api_cxx/env_class.html">DbEnv</a> handle.</p>
+<p>The DbEnv::set_cache_max method may be called at any time during the life of the
+application.</p>
+<p>The DbEnv::set_cache_max 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.
+</p>
+<h3>Parameters</h3>
+<dl compact>
+<dt><b>mp_mmapsize</b><dd>The <b>mp_mmapsize</b> parameter is the maximum file size, in bytes,
+for a file to be mapped into the process address space.
+</dl>
+<h3>Errors</h3>
+<p>The DbEnv::set_cache_max method
+may fail and throw
+<a href="../api_cxx/except_class.html">DbException</a>,
+encapsulating one of the following non-zero errors, or return one of
+the following non-zero errors:</p>
+<dl compact>
+<dt>EINVAL<dd>If the method was called after <a href="../api_cxx/env_open.html">DbEnv::open</a> was called; or if an
+invalid flag value or parameter was specified.
+</dl>
+<hr size=1 noshade>
+<h3>Description: DbEnv::get_cache_max</h3>
+<p>The DbEnv::get_cache_max method returns the maximum size of the cache.</p>
+<p>The DbEnv::get_cache_max method may be called at any time during the life of the
+application.</p>
+<p>The DbEnv::get_cache_max 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.
+</p>
+<h3>Parameters</h3>
+<dl compact>
+<dt><b>bytesp</b><dd>The <b>bytesp</b> parameter references memory into which
+ the additional bytes of memory in the cache is copied.
+<dt><b>gbytesp</b><dd>The <b>gbytesp</b> parameter references memory into which
+ the gigabytes of memory in the cache is copied.
+</dl>
+<hr size=1 noshade>
+<h3>Class</h3>
+<a href="../api_cxx/env_class.html">DbEnv</a>
+<h3>See Also</h3>
+<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/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
+</body>
+</html>
diff --git a/db/docs/api_cxx/env_set_cachesize.html b/db/docs/api_cxx/env_set_cachesize.html
index 74692e0a6..451c8ac2a 100644
--- a/db/docs/api_cxx/env_set_cachesize.html
+++ b/db/docs/api_cxx/env_set_cachesize.html
@@ -1,6 +1,5 @@
-<!--$Id: env_set_cachesize.so,v 10.50 2005/01/10 07:18:43 mjc Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: env_set_cachesize.so,v 10.51 2007/07/06 00:22:52 mjc Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -48,26 +47,29 @@ allocated contiguously on some architectures. For example, some
releases of Solaris limit the amount of memory that may be allocated
contiguously by a process. If <b>ncache</b> is 0 or 1, the cache will
be allocated contiguously in memory. If it is greater than 1, the cache
-will be broken up into <b>ncache</b> equally sized, separate pieces of
-memory.</p>
-<p>The database environment's cache size may also be configured using the
+will be split across <b>ncache</b> separate regions, where the
+<b>region size</b> is equal to the initial cache size divided by
+<b>ncache</b>.</p>
+<p>The memory pool may be resized by calling DbEnv::set_cachesize
+after the environment is open. The supplied size will be rounded to
+the nearest multiple of the region size and may not be larger than the
+maximum size configured with <a href="../api_cxx/env_set_cache_max.html">DbEnv::set_cache_max</a>. The
+<b>ncache</b> parameter is ignored when resizing the cache.</p>
+<p>The database environment's initial cache size may also be configured using the
environment's <b>DB_CONFIG</b> file. The syntax of the entry in that
file is a single line with the string "set_cachesize", one or more whitespace
-characters, and the cache size specified in three parts: the gigabytes of cache, the
-additional bytes of cache, and the number of caches, also separated by
-whitespace characters. For example, "set_cachesize 2 524288000 3" would
-create a 2.5GB logical cache, split between three physical caches.
+characters, and the initial cache size specified in three parts: the gigabytes of
+cache, the additional bytes of cache, and the number of caches, also
+separated by whitespace characters. For example, "set_cachesize 2
+524288000 3" would create a 2.5GB logical cache, split between three
+physical caches.
Because the <b>DB_CONFIG</b> file is read when the database
environment is opened, it will silently overrule configuration done
before that time.</p>
<p>The DbEnv::set_cachesize method configures a database environment, not only operations
performed using the specified <a href="../api_cxx/env_class.html">DbEnv</a> handle.</p>
-<p>The DbEnv::set_cachesize method may not be called after the <a href="../api_cxx/env_open.html">DbEnv::open</a> method is
-called.
-If the database environment already exists when
-<a href="../api_cxx/env_open.html">DbEnv::open</a> is called, the information specified to DbEnv::set_cachesize
-will be ignored.
-</p>
+<p>The DbEnv::set_cachesize method may be called at any time during the life of the
+application.</p>
<p>The DbEnv::set_cachesize method
either returns a non-zero error value
or throws an exception that encapsulates a non-zero error value on
@@ -87,9 +89,7 @@ encapsulating one of the following non-zero errors, or return one of
the following non-zero errors:</p>
<dl compact>
<dt>EINVAL<dd>If the specified cache size was impossibly small;
-the method was called after
-<a href="../api_cxx/env_open.html">DbEnv::open</a>
-was called; or if an
+; or if an
invalid flag value or parameter was specified.
</dl>
<hr size=1 noshade>
@@ -121,6 +121,6 @@ failure, and returns 0 on success.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/env_set_data_dir.html b/db/docs/api_cxx/env_set_data_dir.html
index 11823c1dc..87581a9cc 100644
--- a/db/docs/api_cxx/env_set_data_dir.html
+++ b/db/docs/api_cxx/env_set_data_dir.html
@@ -1,6 +1,5 @@
<!--$Id: env_set_data_dir.so,v 10.28 2004/09/28 15:04:20 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -102,6 +101,6 @@ NULL-terminated array of directories in <b>dirpp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/env_set_encrypt.html b/db/docs/api_cxx/env_set_encrypt.html
index 05f5be827..25ec28214 100644
--- a/db/docs/api_cxx/env_set_encrypt.html
+++ b/db/docs/api_cxx/env_set_encrypt.html
@@ -1,6 +1,5 @@
<!--$Id: env_set_encrypt.so,v 10.23 2004/09/28 15:04:20 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -97,6 +96,6 @@ encryption flags in <b>flagsp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/env_set_errcall.html b/db/docs/api_cxx/env_set_errcall.html
index a1bf2730a..dbe4a0fde 100644
--- a/db/docs/api_cxx/env_set_errcall.html
+++ b/db/docs/api_cxx/env_set_errcall.html
@@ -1,6 +1,5 @@
<!--$Id: env_set_errcall.so,v 10.39 2006/05/17 20:47:46 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -76,6 +75,6 @@ are undefined.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/env_set_errfile.html b/db/docs/api_cxx/env_set_errfile.html
index 46370d6d3..bfdaf593a 100644
--- a/db/docs/api_cxx/env_set_errfile.html
+++ b/db/docs/api_cxx/env_set_errfile.html
@@ -1,6 +1,5 @@
-<!--$Id: env_set_errfile.so,v 10.36 2006/02/10 22:54:59 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: env_set_errfile.so,v 10.37 2006/10/26 15:33:59 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -32,9 +31,9 @@ DbEnv::get_errfile(FILE **errfilep);
<h3>Description: DbEnv::set_errfile</h3>
When an error occurs in the Berkeley DB library, an exception is thrown or an
error return value is returned by the interface. In some cases,
-however, the <b>errno</b> value may be insufficient to completely
-describe the cause of the error, especially during initial application
-debugging.
+however, the exception or returned value may be insufficient to
+completely describe the cause of the error, especially during initial
+application debugging.
<p>The <a href="../api_cxx/env_set_errcall.html">DbEnv::set_errcall</a> and <a href="../api_cxx/db_set_errcall.html">Db::set_errcall</a> methods are used to
enhance the mechanism for reporting error messages to the application
by setting a C library FILE * to be used for displaying additional Berkeley DB
@@ -49,7 +48,18 @@ should not mix these approaches.</p>
("<b>:</b>") (if a prefix string was previously specified using
<a href="../api_cxx/db_set_errpfx.html">Db::set_errpfx</a> or <a href="../api_cxx/env_set_errpfx.html">DbEnv::set_errpfx</a>), an error string, and
a trailing &lt;newline&gt; character.</p>
-<p>Setting <b>errfile</b> to NULL unconfigures the interface.</p>
+<p>The default configuration when applications first create <a href="../api_cxx/db_class.html">Db</a> or
+<a href="../api_cxx/env_class.html">DbEnv</a> handles is as if the DbEnv::set_errfile or
+<a href="../api_cxx/db_set_errfile.html">Db::set_errfile</a> methods were called with the standard error output
+(stderr) specified as the FILE * argument. Applications wanting no
+output at all can turn off this default configuration by calling the
+DbEnv::set_errfile or <a href="../api_cxx/db_set_errfile.html">Db::set_errfile</a> methods with NULL as the
+FILE * argument. Additionally, explicitly configuring the error output
+channel using any of the DbEnv::set_errfile,
+<a href="../api_cxx/db_set_errfile.html">Db::set_errfile</a>, <a href="../api_cxx/env_set_errcall.html">DbEnv::set_errcall</a>,
+<a href="../api_cxx/db_set_errcall.html">Db::set_errcall</a>, <a href="../api_cxx/env_set_error_stream.html">DbEnv::set_error_stream</a> or
+<a href="../api_cxx/db_set_error_stream.html">Db::set_error_stream</a> methods will also turn off this default output
+for the application.</p>
<p>This error logging enhancement does not slow performance or significantly
increase application size, and may be run during normal operation as well
as during application debugging.</p>
@@ -87,6 +97,6 @@ FILE * in <b>errfilep</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/env_set_error_stream.html b/db/docs/api_cxx/env_set_error_stream.html
index 85f0b1733..7d05d02c0 100644
--- a/db/docs/api_cxx/env_set_error_stream.html
+++ b/db/docs/api_cxx/env_set_error_stream.html
@@ -1,6 +1,5 @@
<!--$Id: env_set_error_stream.so,v 10.30 2006/02/10 22:54:59 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -69,6 +68,6 @@ be used for additional error information.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/env_set_errpfx.html b/db/docs/api_cxx/env_set_errpfx.html
index 952f72a9c..b94fc8244 100644
--- a/db/docs/api_cxx/env_set_errpfx.html
+++ b/db/docs/api_cxx/env_set_errpfx.html
@@ -1,6 +1,5 @@
<!--$Id: env_set_errpfx.so,v 10.34 2006/02/10 22:54:59 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -71,6 +70,6 @@ error prefix in <b>errpfxp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/env_set_feedback.html b/db/docs/api_cxx/env_set_feedback.html
index 02f0f6d0d..22c39c14f 100644
--- a/db/docs/api_cxx/env_set_feedback.html
+++ b/db/docs/api_cxx/env_set_feedback.html
@@ -1,6 +1,5 @@
<!--$Id: env_set_feedback.so,v 10.43 2006/05/17 20:47:46 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -73,6 +72,6 @@ are undefined.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/env_set_flags.html b/db/docs/api_cxx/env_set_flags.html
index ffe93f00a..7d9f242d8 100644
--- a/db/docs/api_cxx/env_set_flags.html
+++ b/db/docs/api_cxx/env_set_flags.html
@@ -1,6 +1,5 @@
<!--$Id-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -138,8 +137,12 @@ file.</p>
the life of the application.</p>
<a name="7"><!--meow--></a>
<dt><a name="DB_LOG_AUTOREMOVE">DB_LOG_AUTOREMOVE</a><dd>If set, Berkeley DB will automatically remove log files that are no longer
-needed. Automatic log file removal is likely to make catastrophic
-recovery impossible.
+needed.
+<p>Automatic log file removal is likely to make catastrophic recovery
+impossible.</p>
+<p>Replication applications will rarely want to configure automatic log
+file removal as it increases the likelihood a master will be unable to
+satisfy a client's request for a recent log record.</p>
<p>Calling DbEnv::set_flags with the DB_LOG_AUTOREMOVE flag affects the
database environment, including all threads of control accessing the
database environment.</p>
@@ -166,16 +169,6 @@ database environment, including all threads of control accessing the
database environment.</p>
<p>The DB_LOG_INMEMORY flag may be used to configure Berkeley DB only before the
<a href="../api_cxx/env_open.html">DbEnv::open</a> method is called.</p>
-<a name="9"><!--meow--></a>
-<dt><a name="DB_NOLOCKING">DB_NOLOCKING</a><dd>If set, Berkeley DB will grant all requested mutual exclusion mutexes and
-database locks without regard for their actual availability. This
-functionality should never be used for purposes other than debugging.
-<p>Calling DbEnv::set_flags with the DB_NOLOCKING flag only affects
-the specified <a href="../api_cxx/env_class.html">DbEnv</a> handle (and any other Berkeley DB handles opened
-within the scope of that handle).
-</p>
-<p>The DB_NOLOCKING flag may be used to configure Berkeley DB at any time during
-the life of the application.</p>
<dt><a name="DB_MULTIVERSION">DB_MULTIVERSION</a><dd>If set, all databases in the environment will be opened as if
DB_MULTIVERSION is passed to <a href="../api_cxx/db_open.html">Db::open</a>. This flag will
be ignored for queue databases for which DB_MULTIVERSION is not
@@ -189,6 +182,16 @@ or the flag should be specified in the <b>DB_CONFIG</b> configuration
file.</p>
<p>The DB_MULTIVERSION flag may be used to configure Berkeley DB at any time during
the life of the application.</p>
+<a name="9"><!--meow--></a>
+<dt><a name="DB_NOLOCKING">DB_NOLOCKING</a><dd>If set, Berkeley DB will grant all requested mutual exclusion mutexes and
+database locks without regard for their actual availability. This
+functionality should never be used for purposes other than debugging.
+<p>Calling DbEnv::set_flags with the DB_NOLOCKING flag only affects
+the specified <a href="../api_cxx/env_class.html">DbEnv</a> handle (and any other Berkeley DB handles opened
+within the scope of that handle).
+</p>
+<p>The DB_NOLOCKING flag may be used to configure Berkeley DB at any time during
+the life of the application.</p>
<a name="10"><!--meow--></a>
<dt><a name="DB_NOMMAP">DB_NOMMAP</a><dd>If set, Berkeley DB will copy read-only database files into the local cache
instead of potentially mapping them into process memory (see the
@@ -230,14 +233,12 @@ the life of the application.</p>
<dt><a name="DB_PANIC_ENVIRONMENT">DB_PANIC_ENVIRONMENT</a><dd>If set, Berkeley DB will set the panic state for the database environment.
(Database environments in a panic state normally refuse all attempts to
call Berkeley DB functions, returning <a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a>.) This flag may
-not be specified using the environment's <b>DB_CONFIG</b> file. This
-flag may be used to configure Berkeley DB only after the <a href="../api_cxx/env_open.html">DbEnv::open</a> method
-is called.
+not be specified using the environment's <b>DB_CONFIG</b> file.
<p>Calling DbEnv::set_flags with the DB_PANIC_ENVIRONMENT flag affects the
database environment, including all threads of control accessing the
database environment.</p>
-<p>The DB_PANIC_ENVIRONMENT flag may be used to configure Berkeley DB at any time during
-the life of the application.</p>
+<p>The DB_PANIC_ENVIRONMENT flag may be used to configure Berkeley DB only after the
+<a href="../api_cxx/env_open.html">DbEnv::open</a> method is called.</p>
<a name="13"><!--meow--></a>
<dt><a name="DB_REGION_INIT">DB_REGION_INIT</a><dd>In some applications, the expense of page-faulting the underlying shared
memory regions can affect performance. (For example, if the page-fault
@@ -283,13 +284,28 @@ may be undone during recovery. The number of transactions at risk is
governed by how many log updates can fit into the log buffer, how often
the operating system flushes dirty buffers to disk, and how often the
log is checkpointed.
-<p>Calling DbEnv::set_flags with the DB_TXN_NOSYNC flag only affects
+<p>Calling DbEnv::set_flags with the <a href="../api_cxx/env_set_flags.html#DB_TXN_NOSYNC">DB_TXN_NOSYNC</a> flag only affects
the specified <a href="../api_cxx/env_class.html">DbEnv</a> handle (and any other Berkeley DB handles opened
within the scope of that handle).
For consistent behavior across the environment, all <a href="../api_cxx/env_class.html">DbEnv</a>
-handles opened in the environment must either set the DB_TXN_NOSYNC flag
+handles opened in the environment must either set the <a href="../api_cxx/env_set_flags.html#DB_TXN_NOSYNC">DB_TXN_NOSYNC</a> flag
or the flag should be specified in the <b>DB_CONFIG</b> configuration
-file.</p> <p>The DB_TXN_NOSYNC flag may be used to configure Berkeley DB at any time during
+file.</p> <p>The <a href="../api_cxx/env_set_flags.html#DB_TXN_NOSYNC">DB_TXN_NOSYNC</a> flag may be used to configure Berkeley DB at any time during
+the life of the application.</p>
+<dt><a name="DB_TXN_NOWAIT">DB_TXN_NOWAIT</a><dd>If set and a lock is unavailable for any Berkeley DB operation performed in
+the context of a transaction, cause the operation to
+either return <a href="../ref/program/errorret.html#DB_LOCK_DEADLOCK">DB_LOCK_DEADLOCK</a> or throw a
+<a href="../api_cxx/deadlock_class.html">DbDeadlockException</a> exception (or return
+<a href="../ref/program/errorret.html#DB_LOCK_NOTGRANTED">DB_LOCK_NOTGRANTED</a> or throw a <a href="../api_cxx/lockng_class.html">DbLockNotGrantedException</a>
+exception if configured using the <a href="../api_cxx/env_set_flags.html#DB_TIME_NOTGRANTED">DB_TIME_NOTGRANTED</a> flag).
+<p>Calling DbEnv::set_flags with the <a href="../api_cxx/txn_begin.html#DB_TXN_NOWAIT">DB_TXN_NOWAIT</a> flag only affects
+the specified <a href="../api_cxx/env_class.html">DbEnv</a> handle (and any other Berkeley DB handles opened
+within the scope of that handle).
+For consistent behavior across the environment, all <a href="../api_cxx/env_class.html">DbEnv</a>
+handles opened in the environment must either set the <a href="../api_cxx/txn_begin.html#DB_TXN_NOWAIT">DB_TXN_NOWAIT</a> flag
+or the flag should be specified in the <b>DB_CONFIG</b> configuration
+file.</p>
+<p>The <a href="../api_cxx/txn_begin.html#DB_TXN_NOWAIT">DB_TXN_NOWAIT</a> flag may be used to configure Berkeley DB at any time during
the life of the application.</p>
<dt><a name="DB_TXN_SNAPSHOT">DB_TXN_SNAPSHOT</a><dd>If set, all transactions in the environment will be started as if
DB_TXN_SNAPSHOT were passed to <a href="../api_cxx/txn_begin.html">DbEnv::txn_begin</a>, and all
@@ -374,6 +390,6 @@ configuration flags in <b>flagsp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/env_set_isalive.html b/db/docs/api_cxx/env_set_isalive.html
index b92e780c3..76c1795eb 100644
--- a/db/docs/api_cxx/env_set_isalive.html
+++ b/db/docs/api_cxx/env_set_isalive.html
@@ -1,6 +1,5 @@
<!--$Id: env_set_isalive.so,v 10.4 2006/01/27 16:13:48 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -81,6 +80,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/env_set_lg_bsize.html b/db/docs/api_cxx/env_set_lg_bsize.html
index 4354a787e..aadabc1db 100644
--- a/db/docs/api_cxx/env_set_lg_bsize.html
+++ b/db/docs/api_cxx/env_set_lg_bsize.html
@@ -1,6 +1,5 @@
<!--$Id: env_set_lg_bsize.so,v 10.36 2006/08/30 10:04:48 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -109,6 +108,6 @@ size of the log buffer, in bytes in <b>lg_bsizep</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/env_set_lg_dir.html b/db/docs/api_cxx/env_set_lg_dir.html
index d695f3192..414ded6e0 100644
--- a/db/docs/api_cxx/env_set_lg_dir.html
+++ b/db/docs/api_cxx/env_set_lg_dir.html
@@ -1,6 +1,5 @@
<!--$Id: env_set_lg_dir.so,v 10.25 2004/09/28 15:04:21 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -100,6 +99,6 @@ log directory in <b>dirp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/env_set_lg_max.html b/db/docs/api_cxx/env_set_lg_max.html
index 0025b4aaa..f430554f3 100644
--- a/db/docs/api_cxx/env_set_lg_max.html
+++ b/db/docs/api_cxx/env_set_lg_max.html
@@ -1,6 +1,5 @@
<!--$Id: env_set_lg_max.so,v 10.45 2004/09/28 15:04:21 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -109,6 +108,6 @@ maximum log file size in <b>lg_maxp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/env_set_lg_mode.html b/db/docs/api_cxx/env_set_lg_mode.html
index 6f8eec36b..b24344f36 100644
--- a/db/docs/api_cxx/env_set_lg_mode.html
+++ b/db/docs/api_cxx/env_set_lg_mode.html
@@ -1,6 +1,5 @@
<!--$Id: env_set_lg_mode.so,v 1.1 2004/12/15 15:46:44 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -86,6 +85,6 @@ log file mode in <b>lg_modep</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/env_set_lg_regionmax.html b/db/docs/api_cxx/env_set_lg_regionmax.html
index 3643ec74e..649d55281 100644
--- a/db/docs/api_cxx/env_set_lg_regionmax.html
+++ b/db/docs/api_cxx/env_set_lg_regionmax.html
@@ -1,6 +1,5 @@
<!--$Id: env_set_lg_regionmax.so,v 10.23 2006/08/30 10:04:48 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -95,6 +94,6 @@ size of the underlying logging subsystem region in <b>lg_regionmaxp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/env_set_lk_conflicts.html b/db/docs/api_cxx/env_set_lk_conflicts.html
index 35570cc96..0a1941934 100644
--- a/db/docs/api_cxx/env_set_lk_conflicts.html
+++ b/db/docs/api_cxx/env_set_lk_conflicts.html
@@ -1,6 +1,5 @@
<!--$Id: env_set_lk_conflicts.so,v 10.43 2004/09/28 15:04:20 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -96,6 +95,6 @@ a pointer to the current conflicts array is copied.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/env_set_lk_detect.html b/db/docs/api_cxx/env_set_lk_detect.html
index fbde86a08..0c9bfe891 100644
--- a/db/docs/api_cxx/env_set_lk_detect.html
+++ b/db/docs/api_cxx/env_set_lk_detect.html
@@ -1,6 +1,5 @@
<!--$Id: env_set_lk_detect.so,v 10.50 2006/02/27 14:51:30 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -105,6 +104,6 @@ deadlock detector configuration in <b>lk_detectp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/env_set_lk_max.html b/db/docs/api_cxx/env_set_lk_max.html
deleted file mode 100644
index 7e614d4ac..000000000
--- a/db/docs/api_cxx/env_set_lk_max.html
+++ /dev/null
@@ -1,75 +0,0 @@
-<!--$Id: env_set_lk_max.so,v 10.21 2000/12/21 19:11:27 bostic Exp $-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB: DbEnv::set_lk_max</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
- <a name="2"><!--meow--></a>
-<table><tr valign=top>
-<td>
-<h1>DbEnv::set_lk_max</h1>
-</td>
-<td width="1%">
-<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;db_cxx.h&gt;
-<p>
-int
-DbEnv::set_lk_max(u_int32_t max);
-</pre></h3>
-<h1>Description</h1>
-<p><b>The DbEnv::set_lk_max method interface has been deprecated in favor of
-the <a href="../api_cxx/env_set_lk_max_locks.html">DbEnv::set_lk_max_locks</a>, <a href="../api_cxx/env_set_lk_max_lockers.html">DbEnv::set_lk_max_lockers</a>,
-and <a href="../api_cxx/env_set_lk_max_objects.html">DbEnv::set_lk_max_objects</a> methods. Please update your applications.</b>
-<p>Set each of the maximum number of locks, lockers and lock objects
-supported by the Berkeley DB lock subsystem to <b>max</b>. This value is
-used by <a href="../api_cxx/env_open.html">DbEnv::open</a> to estimate how much space to allocate for
-various lock-table data structures. For specific information on
-configuring the size of the lock subsystem, see
-<a href="../ref/lock/max.html">Configuring locking: sizing the
-system</a>.
-<p>The DbEnv::set_lk_max interface may only be used to configure Berkeley DB before
-the <a href="../api_cxx/env_open.html">DbEnv::open</a> interface is called.
-<p>The DbEnv::set_lk_max 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.
-<p>The database environment's maximum number of locks may also be set using the environment's
-<b>DB_CONFIG</b> file. The syntax of the entry in that file is a
-single line with the string "set_lk_max", one or more whitespace characters,
-and the number of locks. Because the <b>DB_CONFIG</b> file is read when the database
-environment is opened, it will silently overrule configuration done
-before that time.
-<h1>Errors</h1>
-<p><dl compact>
-<p><dt>EINVAL<dd>An invalid flag value or parameter was specified.
-<p>Called after <a href="../api_cxx/env_open.html">DbEnv::open</a> was called.
-</dl>
-<h3>Classes</h3>
-<a href="../api_cxx/dbenv_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_locks.html">DbEnv::set_lk_max_locks</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_objects.html">DbEnv::set_lk_max_objects</a>,
-<a href="../api_cxx/env_set_lk_max.html">DbEnv::set_lk_max</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_put.html">DbLock::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>.
-</tt>
-<table><tr><td><br></td><td width="1%">
-<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/env_set_lk_max_lockers.html b/db/docs/api_cxx/env_set_lk_max_lockers.html
index f4a06a486..c25abca32 100644
--- a/db/docs/api_cxx/env_set_lk_max_lockers.html
+++ b/db/docs/api_cxx/env_set_lk_max_lockers.html
@@ -1,6 +1,5 @@
<!--$Id: env_set_lk_max_lockers.so,v 1.23 2004/09/28 15:04:20 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -94,6 +93,6 @@ maximum number of lockers in <b>lk_maxp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/env_set_lk_max_locks.html b/db/docs/api_cxx/env_set_lk_max_locks.html
index e72170586..e258cc84a 100644
--- a/db/docs/api_cxx/env_set_lk_max_locks.html
+++ b/db/docs/api_cxx/env_set_lk_max_locks.html
@@ -1,6 +1,5 @@
<!--$Id: env_set_lk_max_locks.so,v 10.23 2004/09/28 15:04:20 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -95,6 +94,6 @@ maximum number of locks in <b>lk_maxp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/env_set_lk_max_objects.html b/db/docs/api_cxx/env_set_lk_max_objects.html
index 17069d8df..a4e9b7df0 100644
--- a/db/docs/api_cxx/env_set_lk_max_objects.html
+++ b/db/docs/api_cxx/env_set_lk_max_objects.html
@@ -1,6 +1,5 @@
<!--$Id: env_set_lk_max_objects.so,v 1.23 2004/09/28 15:04:20 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -94,6 +93,6 @@ maximum number of locked objects in <b>lk_maxp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/env_set_mp_mmapsize.html b/db/docs/api_cxx/env_set_mp_mmapsize.html
index ac2577d2d..29411ac7c 100644
--- a/db/docs/api_cxx/env_set_mp_mmapsize.html
+++ b/db/docs/api_cxx/env_set_mp_mmapsize.html
@@ -1,6 +1,5 @@
<!--$Id: env_set_mp_mmapsize.so,v 10.40 2004/09/28 15:04:21 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -96,6 +95,6 @@ maximum file map size in <b>mp_mmapsizep</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/env_set_msg_stream.html b/db/docs/api_cxx/env_set_msg_stream.html
index cd5815394..4e3c2af12 100644
--- a/db/docs/api_cxx/env_set_msg_stream.html
+++ b/db/docs/api_cxx/env_set_msg_stream.html
@@ -1,6 +1,5 @@
<!--$Id: env_set_msg_stream.so,v 10.5 2006/02/10 22:54:59 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -60,6 +59,6 @@ be used for additional message information.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/env_set_msgcall.html b/db/docs/api_cxx/env_set_msgcall.html
index 4da39490b..7f1714a77 100644
--- a/db/docs/api_cxx/env_set_msgcall.html
+++ b/db/docs/api_cxx/env_set_msgcall.html
@@ -1,6 +1,5 @@
<!--$Id: env_set_msgcall.so,v 10.7 2006/05/17 20:47:46 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -67,6 +66,6 @@ are undefined.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/env_set_msgfile.html b/db/docs/api_cxx/env_set_msgfile.html
index fdcc4a8a5..eb7d05cbf 100644
--- a/db/docs/api_cxx/env_set_msgfile.html
+++ b/db/docs/api_cxx/env_set_msgfile.html
@@ -1,6 +1,5 @@
<!--$Id: env_set_msgfile.so,v 10.7 2006/02/10 22:54:59 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -78,6 +77,6 @@ FILE * in <b>msgfilep</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/env_set_mutexlocks.html b/db/docs/api_cxx/env_set_mutexlocks.html
deleted file mode 100644
index b728927a2..000000000
--- a/db/docs/api_cxx/env_set_mutexlocks.html
+++ /dev/null
@@ -1,62 +0,0 @@
-<!--$Id: env_set_mutexlocks.so,v 10.9 2000/11/17 19:56:52 bostic Exp $-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB: DbEnv::set_mutexlocks</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
- <a name="2"><!--meow--></a>
-<table><tr valign=top>
-<td>
-<h1>DbEnv::set_mutexlocks</h1>
-</td>
-<td width="1%">
-<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;db_cxx.h&gt;
-<p>
-int
-DbEnv::set_mutexlocks(int do_lock);
-</pre></h3>
-<h1>Description</h1>
-<p>Toggle mutex locks. Setting <b>do_lock</b> to a zero value causes
-Berkeley DB to grant all requested mutual exclusion mutexes without regard
-for their availability.
-<p>This functionality should never be used for any other purpose than
-debugging.
-<p>The DbEnv::set_mutexlocks interface may be used to configure Berkeley DB at any time
-during the life of the application.
-<p>The DbEnv::set_mutexlocks 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.
-<h3>Class</h3>
-<a href="../api_cxx/dbenv_class.html">DbEnv</a>
-<h1>See Also</h1>
-<a href="../api_cxx/env_close.html">DbEnv::close</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/db_err.html">DbEnv::err</a>,
-<a href="../api_cxx/env_strerror.html">DbEnv::strerror</a>,
-<a href="../api_cxx/env_version.html">DbEnv::version</a>,
-<a href="../api_cxx/env_set_cachesize.html">DbEnv::set_cachesize</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_flags.html">DbEnv::set_flags</a>,
-<a href="../api_cxx/env_set_mutexlocks.html">DbEnv::set_mutexlocks</a>,
-<a href="../api_cxx/env_set_paniccall.html">DbEnv::set_paniccall</a>,
-and
-<a href="../api_cxx/env_set_verbose.html">DbEnv::set_verbose</a>.
-</tt>
-<table><tr><td><br></td><td width="1%">
-<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/env_set_pageyield.html b/db/docs/api_cxx/env_set_pageyield.html
deleted file mode 100644
index 01247edc5..000000000
--- a/db/docs/api_cxx/env_set_pageyield.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<!--$Id: env_set_pageyield.so,v 10.6 2000/05/31 15:10:00 bostic Exp $-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB: DbEnv::set_pageyield</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
- <a name="2"><!--meow--></a>
-<table><tr valign=top>
-<td>
-<h1>DbEnv::set_pageyield</h1>
-</td>
-<td width="1%">
-<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;db_cxx.h&gt;
-<p>
-static int
-DbEnv::set_pageyield(int pageyield);
-</pre></h3>
-<h1>Description</h1>
-<p>Yield the processor whenever requesting a page from the cache. Setting
-<b>pageyield</b> to a non-zero value causes Berkeley DB to yield the processor
-any time a thread requests a page from the cache.
-<p>The DbEnv::set_pageyield interface affects the entire application, not a single
-database or database environment.
-<p>While the DbEnv::set_pageyield interface may be used to configure Berkeley DB at any time
-during the life of the application, it should normally be called before
-making any calls to the <a href="../api_c/env_create.html">db_env_create</a> or <a href="../api_c/db_create.html">db_create</a> methods.
-<p>This functionality should never be used for any other purpose than stress
-testing.
-<p>The DbEnv::set_pageyield interface may be used to configure Berkeley DB at any time
-during the life of the application.
-<p>The DbEnv::set_pageyield 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>
-<p><dl compact>
-<p><dt>EINVAL<dd>An invalid flag value or parameter was specified.
-</dl>
-<h3>Class</h3>
-<a href="../api_cxx/dbenv_class.html">DbEnv</a>
-<h1>See Also</h1>
-<a href="../api_cxx/env_close.html">DbEnv::close</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/db_err.html">DbEnv::err</a>,
-<a href="../api_cxx/env_strerror.html">DbEnv::strerror</a>,
-<a href="../api_cxx/env_version.html">DbEnv::version</a>,
-<a href="../api_cxx/env_set_cachesize.html">DbEnv::set_cachesize</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_flags.html">DbEnv::set_flags</a>,
-<a href="../api_cxx/env_set_mutexlocks.html">DbEnv::set_mutexlocks</a>,
-<a href="../api_cxx/env_set_paniccall.html">DbEnv::set_paniccall</a>,
-and
-<a href="../api_cxx/env_set_verbose.html">DbEnv::set_verbose</a>.
-</tt>
-<table><tr><td><br></td><td width="1%">
-<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/env_set_paniccall.html b/db/docs/api_cxx/env_set_paniccall.html
deleted file mode 100644
index 6b477c9e9..000000000
--- a/db/docs/api_cxx/env_set_paniccall.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<!--$Id: env_set_paniccall.so,v 10.37 2004/08/13 03:38:57 bostic Exp $-->
-<!--Copyright 1997-2004 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: DbEnv::set_paniccall</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
-</head>
-<body bgcolor=white>
-<table width="100%"><tr valign=top>
-<td>
-<h3>DbEnv::set_paniccall</h3>
-</td>
-<td align=right>
-<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a>
-<a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a></td>
-</tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;db_cxx.h&gt;
-<p>
-int
-DbEnv::set_paniccall(void (*db_panic_fcn)(DbEnv *dbenv, int errval));
-</pre></h3>
-<hr size=1 noshade>
-<h3>Description: DbEnv::set_paniccall</h3>
-<p>Errors can occur in the Berkeley DB library where the only solution is to shut
-down the application and run recovery (for example, if Berkeley DB is unable
-to allocate heap memory). In such cases, the Berkeley DB methods will
-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>,
-depending on the API configuration.
-It is often easier to simply exit the application when such errors occur
-rather than gracefully return up the stack. The DbEnv::set_paniccall method
-specifies a function to be called when
-<a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a> is about to be returned or <a href="../api_cxx/runrec_class.html">DbRunRecoveryException</a>
-is about to be thrown
-from a Berkeley DB method.</p>
-<p>The DbEnv::set_paniccall method may be called at any time during the life of the
-application.</p>
-<p>The DbEnv::set_paniccall 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.
-</p>
-<h3>Parameters</h3>
-<dl compact>
-<dt><b>db_panic_fcn</b><dd>The <b>db_panic_fcn</b> parameter is the application-specified function
-called in the case of a database environment panic. The function takes
-two arguments:
-<dl compact>
-<dt><b>dbenv</b><dd>The <b>dbenv</b> parameter is the enclosing database environment handle.
-<dt><b>errval</b><dd>The <b>errval</b> parameter is the error value that would have been
-returned to the caller if <a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a> were not going to be
-returned instead.
-</dl>
-</dl>
-<hr size=1 noshade>
-<h3>Class</h3>
-<a href="../api_cxx/env_class.html">DbEnv</a>
-<h3>See Also</h3>
-<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/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<p><font size=1><a href="../sleepycat/legal.html">Copyright (c) 1996-2004</a> <a href="http://www.sleepycat.com">Sleepycat Software, Inc.</a> - All rights reserved.</font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/env_set_panicstate.html b/db/docs/api_cxx/env_set_panicstate.html
deleted file mode 100644
index 6655003cc..000000000
--- a/db/docs/api_cxx/env_set_panicstate.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!--$Id: env_set_panicstate.so,v 10.2 2001/01/17 15:32:34 bostic Exp $-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB: DbEnv::set_panicstate</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
- <a name="2"><!--meow--></a>
-<table><tr valign=top>
-<td>
-<h1>DbEnv::set_panicstate</h1>
-</td>
-<td width="1%">
-<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;db_cxx.h&gt;
-<p>
-static int
-DbEnv::set_panicstate(int panic);
-</pre></h3>
-<h1>Description</h1>
-<p>Toggle the Berkeley DB panic state. Setting <b>panic</b> to a non-zero value
-causes Berkeley DB to refuse attempts to call Berkeley DB functions with the
-<a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a> error return.
-<p>The DbEnv::set_panicstate interface affects the entire application, not a single
-database or database environment.
-<p>While the DbEnv::set_panicstate interface may be used to configure Berkeley DB at any time
-during the life of the application, it should normally be called before
-making any calls to the <a href="../api_c/env_create.html">db_env_create</a> or <a href="../api_c/db_create.html">db_create</a> methods.
-<p>The DbEnv::set_panicstate 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>
-<p><dl compact>
-<p><dt>EINVAL<dd>An invalid flag value or parameter was specified.
-</dl>
-<h3>Class</h3>
-<a href="../api_cxx/dbenv_class.html">DbEnv</a>
-<h1>See Also</h1>
-<a href="../api_cxx/env_close.html">DbEnv::close</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/db_err.html">DbEnv::err</a>,
-<a href="../api_cxx/env_strerror.html">DbEnv::strerror</a>,
-<a href="../api_cxx/env_version.html">DbEnv::version</a>,
-<a href="../api_cxx/env_set_cachesize.html">DbEnv::set_cachesize</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_flags.html">DbEnv::set_flags</a>,
-<a href="../api_cxx/env_set_mutexlocks.html">DbEnv::set_mutexlocks</a>,
-<a href="../api_cxx/env_set_paniccall.html">DbEnv::set_paniccall</a>,
-and
-<a href="../api_cxx/env_set_verbose.html">DbEnv::set_verbose</a>.
-</tt>
-<table><tr><td><br></td><td width="1%">
-<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/env_set_rec_init.html b/db/docs/api_cxx/env_set_rec_init.html
deleted file mode 100644
index 96af59485..000000000
--- a/db/docs/api_cxx/env_set_rec_init.html
+++ /dev/null
@@ -1,73 +0,0 @@
-<!--$Id: env_set_rec_init.so,v 10.9 2000/05/01 21:57:44 bostic Exp $-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB: DbEnv::set_recovery_init</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
- <a name="2"><!--meow--></a>
-<table><tr valign=top>
-<td>
-<h1>DbEnv::set_recovery_init</h1>
-</td>
-<td width="1%">
-<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;db_cxx.h&gt;
-<p>
-int
-DbEnv::set_recovery_init(int (*db_recovery_init_fcn)(DbEnv *));
-</pre></h3>
-<h1>Description</h1>
-<p>Applications installing application-specific recovery methods need
-to be called before Berkeley DB performs recovery so they may add their recovery
-methods to Berkeley DB's.
-<p>The DbEnv::set_recovery_init method supports this functionality. The
-<b>db_recovery_init_fcn</b> method must be declared with one
-argument, a reference to the enclosing Berkeley DB environment. This
-method will be called after the <a href="../api_cxx/env_open.html">DbEnv::open</a> has been called,
-but before recovery is started.
-<p>If the <b>db_recovery_init_fcn</b> method returns a non-zero value,
-no recovery will be performed and <a href="../api_cxx/env_open.html">DbEnv::open</a> will return the same
-value to its caller.
-<p>The DbEnv::set_recovery_init interface may only be used to configure Berkeley DB before
-the <a href="../api_cxx/env_open.html">DbEnv::open</a> interface is called.
-<p>The DbEnv::set_recovery_init 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>
-<p><dl compact>
-<p><dt>EINVAL<dd>An invalid flag value or parameter was specified.
-<p>Called after <a href="../api_cxx/env_open.html">DbEnv::open</a> was called.
-</dl>
-<h3>Class</h3>
-<a href="../api_cxx/dbenv_class.html">DbEnv</a>
-<h1>See Also</h1>
-<a href="../api_cxx/env_close.html">DbEnv::close</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/db_err.html">DbEnv::err</a>,
-<a href="../api_cxx/env_strerror.html">DbEnv::strerror</a>,
-<a href="../api_cxx/env_version.html">DbEnv::version</a>,
-<a href="../api_cxx/env_set_cachesize.html">DbEnv::set_cachesize</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_flags.html">DbEnv::set_flags</a>,
-<a href="../api_cxx/env_set_mutexlocks.html">DbEnv::set_mutexlocks</a>,
-<a href="../api_cxx/env_set_paniccall.html">DbEnv::set_paniccall</a>,
-and
-<a href="../api_cxx/env_set_verbose.html">DbEnv::set_verbose</a>.
-</tt>
-<table><tr><td><br></td><td width="1%">
-<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/env_set_region_init.html b/db/docs/api_cxx/env_set_region_init.html
deleted file mode 100644
index f052adaf6..000000000
--- a/db/docs/api_cxx/env_set_region_init.html
+++ /dev/null
@@ -1,80 +0,0 @@
-<!--$Id: env_set_region_init.so,v 10.10 2000/05/31 15:10:00 bostic Exp $-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB: DbEnv::set_region_init</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
- <a name="2"><!--meow--></a>
-<table><tr valign=top>
-<td>
-<h1>DbEnv::set_region_init</h1>
-</td>
-<td width="1%">
-<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;db_cxx.h&gt;
-<p>
-static int
-DbEnv::set_region_init(int region_init);
-</pre></h3>
-<h1>Description</h1>
-<p>Page-fault shared regions into memory when initially creating or joining
-a Berkeley DB environment. In some applications, the expense of page-faulting
-the shared memory regions can affect performance, e.g., when the
-page-fault occurs while holding a lock, other lock requests can convoy
-and overall throughput may decrease. Setting <b>region_init</b> to a
-non-zero value specifies that shared regions be read or written, as
-appropriate, when the region is joined by the application. This forces
-the underlying virtual memory and file systems to instantiate both the
-necessary memory and the necessary disk space. This can also avoid
-out-of-disk space failures later on.
-<p>The DbEnv::set_region_init interface affects the entire application, not a single
-database or database environment.
-<p>While the DbEnv::set_region_init interface may be used to configure Berkeley DB at any time
-during the life of the application, it should normally be called before
-making any calls to the <a href="../api_c/env_create.html">db_env_create</a> or <a href="../api_c/db_create.html">db_create</a> methods.
-<p>The DbEnv::set_region_init 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.
-<p>The database environment's initial behavior with respect to shared memory regions may also be set using the environment's
-<b>DB_CONFIG</b> file. The syntax of the entry in that file is a
-single line with the string "set_region_init", one or more whitespace characters,
-and the string "1". Because the <b>DB_CONFIG</b> file is read when the database
-environment is opened, it will silently overrule configuration done
-before that time.
-<h1>Errors</h1>
-<p><dl compact>
-<p><dt>EINVAL<dd>An invalid flag value or parameter was specified.
-</dl>
-<h3>Class</h3>
-<a href="../api_cxx/dbenv_class.html">DbEnv</a>
-<h1>See Also</h1>
-<a href="../api_cxx/env_close.html">DbEnv::close</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/db_err.html">DbEnv::err</a>,
-<a href="../api_cxx/env_strerror.html">DbEnv::strerror</a>,
-<a href="../api_cxx/env_version.html">DbEnv::version</a>,
-<a href="../api_cxx/env_set_cachesize.html">DbEnv::set_cachesize</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_flags.html">DbEnv::set_flags</a>,
-<a href="../api_cxx/env_set_mutexlocks.html">DbEnv::set_mutexlocks</a>,
-<a href="../api_cxx/env_set_paniccall.html">DbEnv::set_paniccall</a>,
-and
-<a href="../api_cxx/env_set_verbose.html">DbEnv::set_verbose</a>.
-</tt>
-<table><tr><td><br></td><td width="1%">
-<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/env_set_rpc_server.html b/db/docs/api_cxx/env_set_rpc_server.html
index da69cd9bd..b8550f3ac 100644
--- a/db/docs/api_cxx/env_set_rpc_server.html
+++ b/db/docs/api_cxx/env_set_rpc_server.html
@@ -1,6 +1,5 @@
<!--$Id: env_set_rpc_server.so,v 10.29 2004/08/13 03:38:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -86,6 +85,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/env_set_server.html b/db/docs/api_cxx/env_set_server.html
deleted file mode 100644
index 208c9cc9c..000000000
--- a/db/docs/api_cxx/env_set_server.html
+++ /dev/null
@@ -1,80 +0,0 @@
-<!--"@(#)env_set_server.so 10.13 (Sleepycat) 8/25/99"-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB: DbEnv::set_server</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
- <a name="2"><!--meow--></a>
-<table><tr valign=top>
-<td>
-<h1>DbEnv::set_server</h1>
-</td>
-<td width="1%">
-<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;db_cxx.h&gt;
-<p>
-int
-DbEnv::set_server(char *host,
- long cl_timeout, long sv_timeout, u_int32_t flags);
-</pre></h3>
-<h1>Description</h1>
-<p>Connects to the DB server on the indicated hostname and sets up a channel
-for communication.
-<p>The <b>cl_timeout</b> argument specifies the number of seconds the client
-should wait for results to come back from the server. Once the timeout
-has expired on any communication with the server, DB_NOSERVER will
-be returned. If this value is zero, a default timeout is used.
-<p>The <b>sv_timeout</b> argument specifies the number of seconds the server
-should allow a client connection to remain idle before assuming that
-client is gone. Once that timeout has been reached, the server releases
-all resources associated with that client connection. Subsequent attempts
-by that client to communicate with the server result in
-DB_NOSERVER_ID indicating that an invalid identifier has been
-given to the server. This value can be considered a hint to the server.
-The server may alter this value based on its own policies or allowed
-values. If this value is zero, a default timeout is used.
-<p>The <b>flags</b> parameter is currently unused, and must be set to 0.
-<p>When the DbEnv::set_server method has been called, any subsequent calls
-to Berkeley DB library interfaces may return either <a name="DB_NOSERVER">DB_NOSERVER</a> or
-<a name="DB_NOSERVER_ID">DB_NOSERVER_ID</a>.
-<p>The DbEnv::set_server 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.
-<h3>Errors</h3>
-<p><dl compact>
-<p><dt>EINVAL<dd>An invalid flag value or parameter was specified.
-<p>dbenv_set_server
-</dl>
-<h3>Class</h3>
-<a href="../api_cxx/dbenv_class.html">DbEnv</a>
-<h1>See Also</h1>
-<a href="../api_cxx/env_close.html">DbEnv::close</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/db_err.html">DbEnv::err</a>,
-<a href="../api_cxx/env_strerror.html">DbEnv::strerror</a>,
-<a href="../api_cxx/env_version.html">DbEnv::version</a>,
-<a href="../api_cxx/env_set_cachesize.html">DbEnv::set_cachesize</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_flags.html">DbEnv::set_flags</a>,
-<a href="../api_cxx/env_set_mutexlocks.html">DbEnv::set_mutexlocks</a>,
-<a href="../api_cxx/env_set_paniccall.html">DbEnv::set_paniccall</a>,
-and
-<a href="../api_cxx/env_set_verbose.html">DbEnv::set_verbose</a>.
-</tt>
-<table><tr><td><br></td><td width="1%">
-<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/env_set_shm_key.html b/db/docs/api_cxx/env_set_shm_key.html
index 3245f6fd8..c200d2936 100644
--- a/db/docs/api_cxx/env_set_shm_key.html
+++ b/db/docs/api_cxx/env_set_shm_key.html
@@ -1,6 +1,5 @@
<!--$Id: env_set_shm_key.so,v 10.28 2004/09/28 15:04:20 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -112,6 +111,6 @@ base segment ID in <b>shm_keyp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/env_set_tas_spins.html b/db/docs/api_cxx/env_set_tas_spins.html
deleted file mode 100644
index 342aab2ab..000000000
--- a/db/docs/api_cxx/env_set_tas_spins.html
+++ /dev/null
@@ -1,94 +0,0 @@
-<!--$Id: env_set_tas_spins.so,v 10.29 2004/09/28 15:04:20 bostic Exp $-->
-<!--Copyright 1997-2004 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: DbEnv::set_tas_spins</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
-</head>
-<body bgcolor=white>
-<table width="100%"><tr valign=top>
-<td>
-<h3>DbEnv::set_tas_spins</h3>
-</td>
-<td align=right>
-<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a>
-<a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a></td>
-</tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;db_cxx.h&gt;
-<p>
-int
-DbEnv::set_tas_spins(u_int32_t tas_spins);
-<p>
-int
-DbEnv::get_tas_spins(u_int32_t *, tas_spinsp);
-</pre></h3>
-<hr size=1 noshade>
-<h3>Description: DbEnv::set_tas_spins</h3>
-<p>Specify that test-and-set mutexes should spin <b>tas_spins</b> times
-without blocking. The value defaults to 1 on uniprocessor systems and
-to 50 times the number of processors on multiprocessor systems.</p>
-<p>The database environment's test-and-set spin count may also be set using the environment's
-<b>DB_CONFIG</b> file. The syntax of the entry in that file is a
-single line with the string "set_tas_spins", one or more whitespace characters,
-and the number of spins.
-Because the <b>DB_CONFIG</b> file is read when the database
-environment is opened, it will silently overrule configuration done
-before that time.</p>
-<p>The DbEnv::set_tas_spins method configures operations performed using the specified
-<a href="../api_cxx/env_class.html">DbEnv</a> handle, not all operations performed on the underlying
-database environment.</p>
-<p>The DbEnv::set_tas_spins method may be called at any time during the life of the
-application.</p>
-<p>The DbEnv::set_tas_spins 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.
-</p>
-<h3>Parameters</h3>
-<dl compact>
-<dt><b>tas_spins</b><dd>The <b>tas_spins</b> parameter is the number of spins test-and-set
-mutexes should execute before blocking.
-</dl>
-<h3>Errors</h3>
-<p>The DbEnv::set_tas_spins method
-may fail and throw
-<a href="../api_cxx/except_class.html">DbException</a>,
-encapsulating one of the following non-zero errors, or return one of
-the following non-zero errors:</p>
-<dl compact>
-<dt>EINVAL<dd>An
-invalid flag value or parameter was specified.
-</dl>
-<hr size=1 noshade>
-<h3>Description: DbEnv::get_tas_spins</h3>
-<p>The DbEnv::get_tas_spins method returns the test-and-set spin count.</p>
-<p>The DbEnv::get_tas_spins method may be called at any time during the life of the
-application.</p>
-<p>The DbEnv::get_tas_spins 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.
-</p>
-<h3>Parameters</h3>
-<dl compact>
-<dt><b>tas_spinsp</b><dd>The DbEnv::get_tas_spins method returns the
-test-and-set spin count in <b>tas_spinsp</b>.
-</dl>
-<hr size=1 noshade>
-<h3>Class</h3>
-<a href="../api_cxx/env_class.html">DbEnv</a>
-<h3>See Also</h3>
-<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/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<p><font size=1><a href="../sleepycat/legal.html">Copyright (c) 1996-2004</a> <a href="http://www.sleepycat.com">Sleepycat Software, Inc.</a> - All rights reserved.</font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/env_set_thread_count.html b/db/docs/api_cxx/env_set_thread_count.html
index 39bd833e6..7aafa7562 100644
--- a/db/docs/api_cxx/env_set_thread_count.html
+++ b/db/docs/api_cxx/env_set_thread_count.html
@@ -1,6 +1,5 @@
-<!--$Id: env_set_thread_count.so,v 10.1 2006/05/26 20:14:59 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: env_set_thread_count.so,v 10.3 2007/04/02 16:08:13 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -36,6 +35,18 @@ database environment if the <a href="../api_cxx/env_failchk.html">DbEnv::failchk
DbEnv::set_thread_count method does not set the maximum number of
threads but is used to determine memory sizing and the thread control
block reclamation policy.</p>
+<p>If a process has not configured an <b>is_alive</b> function from the
+<a href="../api_cxx/env_set_isalive.html">DbEnv::set_isalive</a> method, and then attempts to join a database
+environment configured for failure checking with the
+<a href="../api_cxx/env_failchk.html">DbEnv::failchk</a>, <a href="../api_cxx/env_set_thread_id.html">DbEnv::set_thread_id</a>,
+<a href="../api_cxx/env_set_isalive.html">DbEnv::set_isalive</a> and DbEnv::set_thread_count methods, the
+program may be unable to allocate a thread control block and fail to
+join the environment.
+<b>This is true of the standalone Berkeley DB utility programs.</b>
+To avoid problems when using the standalone Berkeley DB utility programs with
+environments configured for failure checking, incorporate the utility's
+functionality directly in the application, or call the
+<a href="../api_cxx/env_failchk.html">DbEnv::failchk</a> method before running the utility.</p>
<p>The database environment's thread count may also be configured using the
environment's <b>DB_CONFIG</b> file. The syntax of the entry in that
file is a single line with the string "set_thread_count", one or more whitespace
@@ -93,6 +104,6 @@ thread count in <b>countp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/env_set_thread_id.html b/db/docs/api_cxx/env_set_thread_id.html
index 54a0feb64..5a2af6641 100644
--- a/db/docs/api_cxx/env_set_thread_id.html
+++ b/db/docs/api_cxx/env_set_thread_id.html
@@ -1,6 +1,5 @@
<!--$Id: env_set_thread_id.so,v 10.9 2006/08/24 16:32:23 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -121,6 +120,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/env_set_thread_id_string.html b/db/docs/api_cxx/env_set_thread_id_string.html
index 87eb34c57..e1e05a11e 100644
--- a/db/docs/api_cxx/env_set_thread_id_string.html
+++ b/db/docs/api_cxx/env_set_thread_id_string.html
@@ -1,6 +1,5 @@
<!--$Id: env_set_thread_id_string.so,v 10.1 2005/10/20 17:16:02 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -83,6 +82,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/env_set_timeout.html b/db/docs/api_cxx/env_set_timeout.html
index 7f42abccb..7a8fb29b6 100644
--- a/db/docs/api_cxx/env_set_timeout.html
+++ b/db/docs/api_cxx/env_set_timeout.html
@@ -1,6 +1,5 @@
<!--$Id: env_set_timeout.so,v 10.24 2005/05/20 15:07:45 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -118,6 +117,6 @@ failure, and returns 0 on success.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/env_set_tmp_dir.html b/db/docs/api_cxx/env_set_tmp_dir.html
index c6678fcba..9953e587d 100644
--- a/db/docs/api_cxx/env_set_tmp_dir.html
+++ b/db/docs/api_cxx/env_set_tmp_dir.html
@@ -1,6 +1,5 @@
<!--$Id: env_set_tmp_dir.so,v 10.26 2004/09/28 15:04:20 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -118,6 +117,6 @@ database environment temporary file directory in <b>dirp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/env_set_tx_max.html b/db/docs/api_cxx/env_set_tx_max.html
index 08c310f50..51ff1cc29 100644
--- a/db/docs/api_cxx/env_set_tx_max.html
+++ b/db/docs/api_cxx/env_set_tx_max.html
@@ -1,6 +1,5 @@
<!--$Id: env_set_tx_max.so,v 10.47 2006/06/19 22:25:31 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -103,6 +102,6 @@ number of active transactions in <b>tx_maxp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/env_set_tx_recover.html b/db/docs/api_cxx/env_set_tx_recover.html
deleted file mode 100644
index 08ceec64d..000000000
--- a/db/docs/api_cxx/env_set_tx_recover.html
+++ /dev/null
@@ -1,77 +0,0 @@
-<!--$Id: env_set_tx_recover.so,v 10.26 2000/07/09 19:13:19 bostic Exp $-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB: DbEnv::set_tx_recover</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
- <a name="2"><!--meow--></a>
-<table><tr valign=top>
-<td>
-<h1>DbEnv::set_tx_recover</h1>
-</td>
-<td width="1%">
-<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;db_cxx.h&gt;
-<p>
-int
-DbEnv::set_tx_recover(int (*)(DbEnv *dbenv,
- Dbt *log_rec, DbLsn *lsn, db_recops op));
-</pre></h3>
-<h1>Description</h1>
-<p>Set the application's method to be called during transaction abort
-and recovery. This method must return 0 on success and either
-<b>errno</b> or a value outside of the Berkeley DB error name space on
-failure. It takes four arguments:
-<p><dl compact>
-<p><dt>dbenv <dd>A Berkeley DB environment.
-<p><dt>log_rec<dd>A log record.
-<p><dt>lsn<dd>A log sequence number.
-<p><dt>op<dd>One of the following values:
-<p><dl compact>
-<p><dt><a name="DB_TXN_BACKWARD_ROLL">DB_TXN_BACKWARD_ROLL</a><dd>The log is being read backward to determine which transactions have been
-committed and to abort those operations that were not, undo the operation
-described by the log record.
-<p><dt><a name="DB_TXN_FORWARD_ROLL">DB_TXN_FORWARD_ROLL</a><dd>The log is being played forward, redo the operation described by the log
-record.
-<p><dt><a name="DB_TXN_ABORT">DB_TXN_ABORT</a><dd>The log is being read backwards during a transaction abort, undo the
-operation described by the log record.
-</dl>
-</dl>
-<p>The DbEnv::set_tx_recover interface may only be used to configure Berkeley DB before
-the <a href="../api_cxx/env_open.html">DbEnv::open</a> interface is called.
-<p>The DbEnv::set_tx_recover 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>
-<p><dl compact>
-<p><dt>EINVAL<dd>An invalid flag value or parameter was specified.
-<p>Called after <a href="../api_cxx/env_open.html">DbEnv::open</a> was called.
-</dl>
-<h3>Classes</h3>
-<a href="../api_cxx/dbenv_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_recover.html">DbEnv::set_tx_recover</a>,
-<a href="../api_cxx/env_set_tx_timestamp.html">DbEnv::set_tx_timestamp</a>,
-<a href="../api_cxx/txn_abort.html">DbTxn::abort</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_commit.html">DbTxn::commit</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_stat.html">DbEnv::txn_stat</a>.
-</tt>
-<table><tr><td><br></td><td width="1%">
-<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/env_set_tx_timestamp.html b/db/docs/api_cxx/env_set_tx_timestamp.html
index 790ab5c6c..ffd038293 100644
--- a/db/docs/api_cxx/env_set_tx_timestamp.html
+++ b/db/docs/api_cxx/env_set_tx_timestamp.html
@@ -1,6 +1,5 @@
<!--$Id: env_set_tx_timestamp.so,v 10.29 2004/09/28 15:04:23 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -89,6 +88,6 @@ recovery timestamp in <b>timestampp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/env_set_verbose.html b/db/docs/api_cxx/env_set_verbose.html
index 54f303b35..56fe3f249 100644
--- a/db/docs/api_cxx/env_set_verbose.html
+++ b/db/docs/api_cxx/env_set_verbose.html
@@ -1,6 +1,5 @@
-<!--$Id: env_set_verbose.so,v 10.52 2005/12/28 16:10:51 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: env_set_verbose.so,v 10.54 2006/10/20 15:32:29 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -60,14 +59,14 @@ messages are output.
<dt><b>which</b><dd>The <b>which</b> parameter must be set to one of the following values:
<dl compact>
<dt><a name="DB_VERB_DEADLOCK">DB_VERB_DEADLOCK</a><dd>Display additional information when doing deadlock detection.
+<dt><a name="DB_VERB_FILEOPS">DB_VERB_FILEOPS</a><dd>Display additional information when performing filesystem operations
+such as open, close or rename. May not be available on all platforms.
+<dt><a name="DB_VERB_FILEOPS_ALL">DB_VERB_FILEOPS_ALL</a><dd>Display additional information when performing all filesystem operations,
+including read and write. May not be available on all platforms.
<dt><a name="DB_VERB_RECOVERY">DB_VERB_RECOVERY</a><dd>Display additional information when performing recovery.
<dt><a name="DB_VERB_REGISTER">DB_VERB_REGISTER</a><dd>Display additional information concerning support for the
<a href="../api_cxx/env_open.html#DB_REGISTER">DB_REGISTER</a> flag to the <a href="../api_cxx/env_open.html">DbEnv::open</a> method.
-<dt><a name="DB_VERB_REPLICATION">DB_VERB_REPLICATION</a><dd>Display additional information when processing replication messages.
-<p>To get complete replication logging when debugging replication
-applications, you must also configure and build the Berkeley DB library with
-the <a href="../ref/build_unix/conf.html">--enable-diagnostic</a>
-configuration option as well as call the DbEnv::set_verbose method.</p>
+<dt><a name="DB_VERB_REPLICATION">DB_VERB_REPLICATION</a><dd>Display detailed information when processing replication messages.
<dt><a name="DB_VERB_WAITSFOR">DB_VERB_WAITSFOR</a><dd>Display the waits-for table when doing deadlock detection.
</dl>
</dl>
@@ -109,6 +108,6 @@ otherwise on.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/env_stat.html b/db/docs/api_cxx/env_stat.html
index 34583a0ad..8c452bf63 100644
--- a/db/docs/api_cxx/env_stat.html
+++ b/db/docs/api_cxx/env_stat.html
@@ -1,6 +1,5 @@
<!--$Id: env_stat.so,v 10.5 2004/08/13 03:38:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -59,6 +58,6 @@ or more of the following values:
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/env_strerror.html b/db/docs/api_cxx/env_strerror.html
index eb9cfea1d..b87084ba9 100644
--- a/db/docs/api_cxx/env_strerror.html
+++ b/db/docs/api_cxx/env_strerror.html
@@ -1,6 +1,5 @@
<!--$Id: env_strerror.so,v 8.13 2004/08/13 03:38:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -50,6 +49,6 @@ string is wanted.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/env_version.html b/db/docs/api_cxx/env_version.html
index 8e867a5d5..909128f0f 100644
--- a/db/docs/api_cxx/env_version.html
+++ b/db/docs/api_cxx/env_version.html
@@ -1,6 +1,5 @@
<!--$Id: env_version.so,v 10.26 2004/09/28 15:04:20 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -47,6 +46,6 @@ is copied to the memory to which it refers.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/exc_package.html b/db/docs/api_cxx/exc_package.html
index 4861a717c..ea739e089 100644
--- a/db/docs/api_cxx/exc_package.html
+++ b/db/docs/api_cxx/exc_package.html
@@ -1,6 +1,5 @@
<!--$Id: exc_package.so,v 10.1 2004/08/27 13:49:28 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -18,6 +17,6 @@
<tr><td><a href="../api_cxx/memp_class.html">DbMemoryException</a></td><td>Exception Class for insufficient memory</td></tr>
<tr><td><a href="../api_cxx/runrec_class.html">DbRunRecoveryException</a></td><td>Exception Class for failures requiring recovery</td></tr>
</table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/except_class.html b/db/docs/api_cxx/except_class.html
index 756595b57..95f90a64b 100644
--- a/db/docs/api_cxx/except_class.html
+++ b/db/docs/api_cxx/except_class.html
@@ -1,6 +1,5 @@
<!--$Id: except_class.so,v 10.38 2004/09/28 15:04:19 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -60,6 +59,6 @@ not appear in the database.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/frame.html b/db/docs/api_cxx/frame.html
index 3f1a25891..5b7cfc5bf 100644
--- a/db/docs/api_cxx/frame.html
+++ b/db/docs/api_cxx/frame.html
@@ -1,8 +1,8 @@
-<!--$Id: frame.so,v 10.8 2005/04/19 17:44:03 bostic Exp $-->
+<!--$Id: frame.so,v 10.9 2006/10/05 01:06:03 bostic Exp $-->
<html>
<head>
<title>
-Berkeley DB API (Version: 4.5.20)
+Berkeley DB API (Version: 4.6.18)
</title>
<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
@@ -10,9 +10,9 @@ Berkeley DB API (Version: 4.5.20)
<frameset cols="20%,80%">
<frame src="object.html" name="object" title="Objects">
<frame
+name="method"
src="api_core.html"
-name="method" title=
-"Berkeley DB API (Version: 4.5.20)">
+title="Berkeley DB API (Version: 4.6.18)">
<noframes>
<meta http-equiv="refresh" content="0;url=api_index.html">
</noframes>
diff --git a/db/docs/api_cxx/get_dbt.html b/db/docs/api_cxx/get_dbt.html
deleted file mode 100644
index 29e2567f9..000000000
--- a/db/docs/api_cxx/get_dbt.html
+++ /dev/null
@@ -1,43 +0,0 @@
-<!--Id: get_dbt.so,v 1.1 2001/04/06 13:24:51 bostic Exp -->
-<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB: DbMemoryException::get_dbt</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
- <a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>DbMemoryException::get_dbt</h1>
-</td>
-<td align=right>
-<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;db_cxx.h&gt;
-<p>
-Dbt *
-DbMemoryException::get_dbt() const;
-</pre></h3>
-<h1>Description</h1>
-<p>Return the <a href="../api_cxx/dbt_class.html">Dbt</a> that has insufficient memory to complete the
-operation, causing the <a href="../api_cxx/mem_class.html">DbMemoryException</a> to be thrown.
-<h1>Class</h1>
-<a href="../api_cxx/except_class.html">DbException</a>
-<h1>See Also</h1>
-<a href="../api_cxx/get_errno.html">DbException::get_errno</a>,
-<a href="../api_cxx/what.html">DbException::what</a>,
-and
-<a href="../api_cxx/mem_class.html">DbMemoryException</a>
-</tt>
-<table width="100%"><tr><td><br></td><td align=right>
-<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/get_errno.html b/db/docs/api_cxx/get_errno.html
deleted file mode 100644
index 25c639ac2..000000000
--- a/db/docs/api_cxx/get_errno.html
+++ /dev/null
@@ -1,43 +0,0 @@
-<!--$Id: get_errno.so,v 10.8 1999/12/20 08:52:33 bostic Exp $-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB: DbException::get_errno</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
- <a name="2"><!--meow--></a>
-<table><tr valign=top>
-<td>
-<h1>DbException::get_errno</h1>
-</td>
-<td width="1%">
-<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;db_cxx.h&gt;
-<p>
-const int
-DbException::get_errno();
-</pre></h3>
-<h1>Description</h1>
-<p>A DbException object contains an informational string and an errno.
-The errno can be obtained by using DbException::get_errno.
-The informational string can be obtained by using <a href="../api_cxx/what.html">DbException::what</a>.
-<h3>Class</h3>
-<a href="../api_cxx/except_class.html">DbException</a>
-<h1>See Also</h1>
-<a href="../api_cxx/get_errno.html">DbException::get_errno</a>
-and
-<a href="../api_cxx/what.html">DbException::what</a>.
-</tt>
-<table><tr><td><br></td><td width="1%">
-<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/lock_class.html b/db/docs/api_cxx/lock_class.html
index 37abbbbde..637bf5a1b 100644
--- a/db/docs/api_cxx/lock_class.html
+++ b/db/docs/api_cxx/lock_class.html
@@ -1,6 +1,5 @@
<!--$Id: lock_class.so,v 10.21 2004/08/13 03:38:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -44,6 +43,6 @@ for a single lock, and has no methods of its own.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/lock_detect.html b/db/docs/api_cxx/lock_detect.html
index b1b945d97..1e2aceebd 100644
--- a/db/docs/api_cxx/lock_detect.html
+++ b/db/docs/api_cxx/lock_detect.html
@@ -1,6 +1,5 @@
-<!--$Id: lock_detect.so,v 10.49 2004/08/13 03:38:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: lock_detect.so,v 10.50 2006/12/13 17:57:23 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -23,7 +22,7 @@
#include &lt;db_cxx.h&gt;
<p>
int
-DbEnv::lock_detect(u_int32_t flags, u_int32_t atype, int *aborted);
+DbEnv::lock_detect(u_int32_t flags, u_int32_t atype, int *rejected);
</pre></h3>
<hr size=1 noshade>
<h3>Description: DbEnv::lock_detect</h3>
@@ -37,7 +36,7 @@ failure, and returns 0 on success.
</p>
<h3>Parameters</h3>
<dl compact>
-<dt><b>aborted</b><dd>If the <b>aborted</b> parameter is non-NULL, the memory location to
+<dt><b>rejected</b><dd>If the <b>rejected</b> parameter is non-NULL, the memory location to
which it refers will be set to the number of lock requests that were
rejected.
<dt><b>atype</b><dd>The <b>atype</b> parameter specifies which lock request(s) to reject.
@@ -77,6 +76,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/lock_get.html b/db/docs/api_cxx/lock_get.html
index ff6c2f16f..fbc0b75fd 100644
--- a/db/docs/api_cxx/lock_get.html
+++ b/db/docs/api_cxx/lock_get.html
@@ -1,6 +1,5 @@
<!--$Id: lock_get.so,v 10.53 2004/08/13 03:38:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -101,6 +100,6 @@ throw a DbMemoryException.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/lock_id.html b/db/docs/api_cxx/lock_id.html
index 67510468e..179106304 100644
--- a/db/docs/api_cxx/lock_id.html
+++ b/db/docs/api_cxx/lock_id.html
@@ -1,6 +1,5 @@
<!--$Id: lock_id.so,v 10.33 2004/08/13 03:38:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -51,6 +50,6 @@ failure, and returns 0 on success.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/lock_id_free.html b/db/docs/api_cxx/lock_id_free.html
index 2910fc160..96c02c997 100644
--- a/db/docs/api_cxx/lock_id_free.html
+++ b/db/docs/api_cxx/lock_id_free.html
@@ -1,6 +1,5 @@
<!--$Id: lock_id_free.so,v 10.14 2004/08/13 03:38:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -57,6 +56,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/lock_list.html b/db/docs/api_cxx/lock_list.html
index a0720601f..1d7f8a1b0 100644
--- a/db/docs/api_cxx/lock_list.html
+++ b/db/docs/api_cxx/lock_list.html
@@ -1,6 +1,5 @@
<!--$Id: lock_list.so,v 1.1 2002/08/30 20:00:51 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -32,6 +31,6 @@
<!--DbEnv::set_lk_max_objects--><tr><td><a href="../api_cxx/env_set_lk_max_objects.html">DbEnv::set_lk_max_objects</a></td><td>Set maximum number of lock objects</td></tr>
<!--DbEnv::set_timeout--><tr><td><a href="../api_cxx/env_set_timeout.html">DbEnv::set_timeout</a></td><td>Set lock and transaction timeout</td></tr>
</table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/lock_put.html b/db/docs/api_cxx/lock_put.html
index 9a6412019..242b99aa6 100644
--- a/db/docs/api_cxx/lock_put.html
+++ b/db/docs/api_cxx/lock_put.html
@@ -1,6 +1,5 @@
<!--$Id: lock_put.so,v 10.37 2004/08/13 03:38:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -56,6 +55,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/lock_stat.html b/db/docs/api_cxx/lock_stat.html
index de730af45..b53badf5c 100644
--- a/db/docs/api_cxx/lock_stat.html
+++ b/db/docs/api_cxx/lock_stat.html
@@ -1,6 +1,5 @@
-<!--$Id: lock_stat.so,v 10.65 2005/07/20 16:26:38 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: lock_stat.so,v 10.68 2007/06/22 16:57:15 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -70,12 +69,27 @@ for which the thread of control did not wait.
<dt>u_int32_t st_ntxntimeouts;<dd>The number of transactions that have timed out. This value is also a
component of <b>st_ndeadlocks</b>, the total number of deadlocks
detected.
+<dt>u_int32_t st_objs_wait;<dd>The number of requests to allocate or deallocate an object
+for which the thread of control waited.
+<dt>u_int32_t st_objs_nowait;<dd>The number of requests to allocate or deallocate an object
+for which the thread of control did not wait.
+<dt>u_int32_t st_lockers_wait;<dd>The number of requests to allocate or deallocate a locker
+for which the thread of control waited.
+<dt>u_int32_t st_lockers_nowait;<dd>The number of requests to allocate or deallocate a locker
+for which the thread of control did not wait.
+<dt>u_int32_t st_locks_wait;<dd>The number of requests to allocate or deallocate a lock structure
+for which the thread of control waited.
+<dt>u_int32_t st_locks_nowait;<dd>The number of requests to allocate or deallocate a lock structure
+for which the thread of control did not wait.
+<dt>u_int32_t st_hash_len;<dd>Maximum length of a lock hash bucket.
<dt>roff_t st_regsize;<dd>The size of the lock region, in bytes.
<dt>u_int32_t st_region_wait;<dd>The number of times that a thread of control was forced to wait before
obtaining the lock region mutex.
<dt>u_int32_t st_region_nowait;<dd>The number of times that a thread of control was able to obtain
the lock region mutex without waiting.
</dl>
+<p>The DbEnv::lock_stat method may not be called before the <a href="../api_cxx/env_open.html">DbEnv::open</a> method has
+been called.</p>
<p>The DbEnv::lock_stat method
either returns a non-zero error value
or throws an exception that encapsulates a non-zero error value on
@@ -103,8 +117,12 @@ invalid flag value or parameter was specified.
</dl>
<hr size=1 noshade>
<h3>Description: DbEnv::lock_stat_print</h3>
-<p>The DbEnv::lock_stat_print method prints diagnostic information to the output
-channel described by the <a href="../api_cxx/env_set_msgfile.html">DbEnv::set_msgfile</a> method.</p>
+<p>The DbEnv::lock_stat_print method displays the
+locking subsystem statistical information, as described for the DbEnv::lock_stat method.
+The information is printed to a specified output channel (see the
+<a href="../api_cxx/env_set_msgfile.html">DbEnv::set_msgfile</a> method for more information), or passed to an
+application callback function (see the <a href="../api_cxx/env_set_msgcall.html">DbEnv::set_msgcall</a> method for
+more information).</p>
<p>The DbEnv::lock_stat_print method may not be called before the <a href="../api_cxx/env_open.html">DbEnv::open</a> method has
been called.</p>
<p>The DbEnv::lock_stat_print method
@@ -114,10 +132,11 @@ failure, and returns 0 on success.
</p>
<h3>Parameters</h3>
<dl compact>
-<dt><b>flags</b><dd>The <b>flags</b> parameter must be set by bitwise inclusively <b>OR</b>'ing together one or more
-of the following values:
+<dt><b>flags</b><dd>The <b>flags</b> parameter must be set to 0 or by bitwise inclusively <b>OR</b>'ing together one
+or more of the following values:
<dl compact>
<dt><a name="DB_STAT_ALL">DB_STAT_ALL</a><dd>Display all available information.
+<dt><a name="DB_STAT_CLEAR">DB_STAT_CLEAR</a><dd>Reset statistics after displaying their values.
<dt><a name="DB_STAT_LOCK_CONF">DB_STAT_LOCK_CONF</a><dd>Display the lock conflict matrix.
<dt><a name="DB_STAT_LOCK_LOCKERS">DB_STAT_LOCK_LOCKERS</a><dd>Display the lockers within hash chains.
<dt><a name="DB_STAT_LOCK_OBJECTS">DB_STAT_LOCK_OBJECTS</a><dd>Display the lock objects within hash chains.
@@ -133,6 +152,6 @@ of the following values:
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/lock_vec.html b/db/docs/api_cxx/lock_vec.html
index 746587ff5..5a051578c 100644
--- a/db/docs/api_cxx/lock_vec.html
+++ b/db/docs/api_cxx/lock_vec.html
@@ -1,6 +1,5 @@
<!--$Id: lock_vec.so,v 10.69 2004/08/13 03:38:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -163,6 +162,6 @@ throw a DbMemoryException.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/lockng_class.html b/db/docs/api_cxx/lockng_class.html
index 8fc73e26f..dfbe49132 100644
--- a/db/docs/api_cxx/lockng_class.html
+++ b/db/docs/api_cxx/lockng_class.html
@@ -1,6 +1,5 @@
<!--$Id: lockng_class.so,v 1.14 2004/08/13 03:38:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -70,6 +69,6 @@ called, and returns the index of the failed DB_LOCKREQ when
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/log_archive.html b/db/docs/api_cxx/log_archive.html
index 8ce3120b3..07a3eddd6 100644
--- a/db/docs/api_cxx/log_archive.html
+++ b/db/docs/api_cxx/log_archive.html
@@ -1,6 +1,5 @@
<!--$Id: log_archive.so,v 10.49 2004/08/13 03:38:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -110,6 +109,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/log_compare.html b/db/docs/api_cxx/log_compare.html
index 5b0ef3ab5..13cd3640e 100644
--- a/db/docs/api_cxx/log_compare.html
+++ b/db/docs/api_cxx/log_compare.html
@@ -1,6 +1,5 @@
<!--$Id: log_compare.so,v 10.22 2004/08/13 03:38:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -49,6 +48,6 @@ to be compared.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/log_cursor.html b/db/docs/api_cxx/log_cursor.html
index 205e81a0b..44cbb9c1a 100644
--- a/db/docs/api_cxx/log_cursor.html
+++ b/db/docs/api_cxx/log_cursor.html
@@ -1,6 +1,5 @@
<!--$Id: log_cursor.so,v 10.12 2004/08/13 03:38:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -58,6 +57,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/log_file.html b/db/docs/api_cxx/log_file.html
index ab48e1c80..0960fe51b 100644
--- a/db/docs/api_cxx/log_file.html
+++ b/db/docs/api_cxx/log_file.html
@@ -1,6 +1,5 @@
<!--$Id: log_file.so,v 10.34 2004/08/13 03:38:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -74,6 +73,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/log_flush.html b/db/docs/api_cxx/log_flush.html
index 9e3717f37..d0693adce 100644
--- a/db/docs/api_cxx/log_flush.html
+++ b/db/docs/api_cxx/log_flush.html
@@ -1,6 +1,5 @@
<!--$Id: log_flush.so,v 10.31 2004/08/13 03:38:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -58,6 +57,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/log_get.html b/db/docs/api_cxx/log_get.html
deleted file mode 100644
index 37a8c497b..000000000
--- a/db/docs/api_cxx/log_get.html
+++ /dev/null
@@ -1,118 +0,0 @@
-<!--$Id: log_get.so,v 10.22 2000/03/17 01:53:59 bostic Exp $-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB: DbEnv::log_get</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
- <a name="2"><!--meow--></a>
-<table><tr valign=top>
-<td>
-<h1>DbEnv::log_get</h1>
-</td>
-<td width="1%">
-<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;db_cxx.h&gt;
-<p>
-int
-DbEnv::log_get(DbLsn *lsn, Dbt *data, u_int32_t flags);
-</pre></h3>
-<h1>Description</h1>
-<p>The DbEnv::log_get method implements a cursor inside of the log,
-retrieving 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_cxx/dbt_class.html">Dbt</a> for a description of other fields in the <b>data</b>
-structure. When multiple threads are using the returned log handle
-concurrently, one of the <a href="../api_cxx/dbt_class.html#DB_DBT_MALLOC">DB_DBT_MALLOC</a>, <a href="../api_cxx/dbt_class.html#DB_DBT_REALLOC">DB_DBT_REALLOC</a> or
-<a href="../api_cxx/dbt_class.html#DB_DBT_USERMEM">DB_DBT_USERMEM</a> flags must be specified for any <a href="../api_cxx/dbt_class.html">Dbt</a> used
-for data retrieval.
-<p>The <b>flags</b> argument must be set to exactly one of the following values:
-<p><dl compact>
-<p><dt><a name="DB_CHECKPOINT">DB_CHECKPOINT</a><dd>The last record written with the DB_CHECKPOINT flag specified to the
-<a href="../api_cxx/log_put.html">DbEnv::log_put</a> method is returned in the <b>data</b> argument. The
-<b>lsn</b> argument is overwritten with the <a href="../api_cxx/lsn_class.html">DbLsn</a> of the record
-returned. If no record has been previously written with the DB_CHECKPOINT
-flag specified, the first record in the log is returned.
-<p>If the log is empty, the DbEnv::log_get method will return <a href="../ref/program/errorret.html#DB_NOTFOUND">DB_NOTFOUND</a>.
-<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_cxx/lsn_class.html">DbLsn</a> of the
-record returned.
-<p>If the log is empty, the DbEnv::log_get method will return <a href="../ref/program/errorret.html#DB_NOTFOUND">DB_NOTFOUND</a>.
-<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_cxx/lsn_class.html">DbLsn</a> of the
-record returned.
-<p>If the log is empty, the DbEnv::log_get method will return <a href="../ref/program/errorret.html#DB_NOTFOUND">DB_NOTFOUND</a>.
-<p><dt><a name="DB_NEXT">DB_NEXT</a><dd>The current log position is advanced to the next 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_cxx/lsn_class.html">DbLsn</a> of the
-record returned.
-<p>If the pointer has not been initialized via DB_FIRST, DB_LAST, DB_SET,
-DB_NEXT, or DB_PREV, DbEnv::log_get will return the first record in the log.
-If the last log record has already been returned or the log is empty, the
-DbEnv::log_get method will return <a href="../ref/program/errorret.html#DB_NOTFOUND">DB_NOTFOUND</a>.
-<p>If the log was opened with the DB_THREAD flag set, calls to
-DbEnv::log_get with the DB_NEXT flag set will return EINVAL.
-<p><dt><a name="DB_PREV">DB_PREV</a><dd>The current log position is moved to the 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_cxx/lsn_class.html">DbLsn</a> of the
-record returned.
-<p>If the pointer has not been initialized via DB_FIRST, DB_LAST, DB_SET,
-DB_NEXT, or DB_PREV,
-DbEnv::log_get will return the last record in the log.
-If the first log record has already been returned or the log is empty, the
-DbEnv::log_get method will return <a href="../ref/program/errorret.html#DB_NOTFOUND">DB_NOTFOUND</a>.
-<p>If the log was opened with the DB_THREAD flag set, calls to
-DbEnv::log_get with the DB_PREV flag set will return EINVAL.
-<p><dt><a name="DB_CURRENT">DB_CURRENT</a><dd>Return the log record currently referenced by the log.
-<p>If the log pointer 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,
-DbEnv::log_get 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_cxx/lsn_class.html">DbLsn</a> is invalid (e.g., does not appear in the log)
-DbEnv::log_get will return EINVAL.
-</dl>
-<p>Otherwise, the DbEnv::log_get 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>
-<p>The DbEnv::log_get method may fail and throw an exception or 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_FIRST flag was specified and no log files were found.
-</dl>
-<p>The DbEnv::log_get method may fail and throw an exception or return a non-zero error for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the DbEnv::log_get method may fail and either
-return <a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a> or throw an exception encapsulating
-<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.
-<h3>Class</h3>
-<a href="../api_cxx/dbenv_class.html">DbEnv</a>
-<h1>See Also</h1>
-<a href="../api_cxx/env_set_lg_bsize.html">DbEnv::set_lg_bsize</a>,
-<a href="../api_cxx/env_set_lg_max.html">DbEnv::set_lg_max</a>,
-<a href="../api_cxx/log_archive.html">DbEnv::log_archive</a>,
-<a href="../api_cxx/log_compare.html">DbEnv::log_compare</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_get.html">DbEnv::log_get</a>,
-<a href="../api_cxx/log_put.html">DbEnv::log_put</a>,
-<a href="../api_cxx/log_register.html">DbEnv::log_register</a>,
-<a href="../api_cxx/log_stat.html">DbEnv::log_stat</a>
-and
-<a href="../api_cxx/log_unregister.html">DbEnv::log_unregister</a>.
-</tt>
-<table><tr><td><br></td><td width="1%">
-<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/log_list.html b/db/docs/api_cxx/log_list.html
index 1804953c1..edbcae133 100644
--- a/db/docs/api_cxx/log_list.html
+++ b/db/docs/api_cxx/log_list.html
@@ -1,6 +1,5 @@
<!--$Id: log_list.so,v 1.1 2002/08/30 20:00:56 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -33,6 +32,6 @@
<!--DbEnv::set_lg_max--><tr><td><a href="../api_cxx/env_set_lg_max.html">DbEnv::set_lg_max</a></td><td>Set log file size</td></tr>
<!--DbEnv::set_lg_regionmax--><tr><td><a href="../api_cxx/env_set_lg_regionmax.html">DbEnv::set_lg_regionmax</a></td><td>Set logging region size</td></tr>
</table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/log_printf.html b/db/docs/api_cxx/log_printf.html
index f9333cd6b..de7c89a78 100644
--- a/db/docs/api_cxx/log_printf.html
+++ b/db/docs/api_cxx/log_printf.html
@@ -1,6 +1,5 @@
<!--$Id: log_printf.so,v 1.1 2005/09/30 19:00:24 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -68,6 +67,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/log_put.html b/db/docs/api_cxx/log_put.html
index 737e2e6fb..cfbfc4599 100644
--- a/db/docs/api_cxx/log_put.html
+++ b/db/docs/api_cxx/log_put.html
@@ -1,6 +1,5 @@
<!--$Id: log_put.so,v 10.41 2004/08/13 03:38:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -74,6 +73,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/log_register.html b/db/docs/api_cxx/log_register.html
deleted file mode 100644
index b837a60b3..000000000
--- a/db/docs/api_cxx/log_register.html
+++ /dev/null
@@ -1,68 +0,0 @@
-<!--$Id: log_register.so,v 10.27 2000/05/09 14:46:45 bostic Exp $-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB: DbEnv::log_register</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
- <a name="2"><!--meow--></a>
-<table><tr valign=top>
-<td>
-<h1>DbEnv::log_register</h1>
-</td>
-<td width="1%">
-<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;db_cxx.h&gt;
-<p>
-int
-DbEnv::log_register(Db *dbp, const char *name);
-</pre></h3>
-<h1>Description</h1>
-<p>The DbEnv::log_register method registers a file name with the specified Berkeley DB
-environment's log manager. The log manager records all file name mappings
-at each checkpoint so that a recovery process can identify the file to
-which a record in the log refers.
-<p>The <b>dbp</b> argument should be a reference to the <a href="../api_cxx/db_class.html">Db</a> object being
-registered. The <b>name</b> argument should be a file name appropriate
-for opening the file in the environment, during recovery.
-<p>The DbEnv::log_register 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>
-<p>The DbEnv::log_register method may fail and throw an exception or 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 DbEnv::log_register method may fail and throw an exception or return a non-zero error for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the DbEnv::log_register method may fail and either
-return <a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a> or throw an exception encapsulating
-<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.
-<h3>Class</h3>
-<a href="../api_cxx/dbenv_class.html">DbEnv</a>
-<h1>See Also</h1>
-<a href="../api_cxx/env_set_lg_bsize.html">DbEnv::set_lg_bsize</a>,
-<a href="../api_cxx/env_set_lg_max.html">DbEnv::set_lg_max</a>,
-<a href="../api_cxx/log_archive.html">DbEnv::log_archive</a>,
-<a href="../api_cxx/log_compare.html">DbEnv::log_compare</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_get.html">DbEnv::log_get</a>,
-<a href="../api_cxx/log_put.html">DbEnv::log_put</a>,
-<a href="../api_cxx/log_register.html">DbEnv::log_register</a>,
-<a href="../api_cxx/log_stat.html">DbEnv::log_stat</a>
-and
-<a href="../api_cxx/log_unregister.html">DbEnv::log_unregister</a>.
-</tt>
-<table><tr><td><br></td><td width="1%">
-<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/log_stat.html b/db/docs/api_cxx/log_stat.html
index 32d0cdab6..085b8e14c 100644
--- a/db/docs/api_cxx/log_stat.html
+++ b/db/docs/api_cxx/log_stat.html
@@ -1,6 +1,5 @@
-<!--$Id: log_stat.so,v 10.57 2005/10/28 19:45:34 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: log_stat.so,v 10.58 2007/06/22 16:57:15 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -72,6 +71,8 @@ obtaining the log region mutex.
<dt>u_int32_t st_region_nowait;<dd>The number of times that a thread of control was able to obtain
the log region mutex without waiting.
</dl>
+<p>The DbEnv::log_stat method may not be called before the <a href="../api_cxx/env_open.html">DbEnv::open</a> method has
+been called.</p>
<p>The DbEnv::log_stat method
either returns a non-zero error value
or throws an exception that encapsulates a non-zero error value on
@@ -130,6 +131,6 @@ or more of the following values:
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/log_unregister.html b/db/docs/api_cxx/log_unregister.html
deleted file mode 100644
index 364e62259..000000000
--- a/db/docs/api_cxx/log_unregister.html
+++ /dev/null
@@ -1,63 +0,0 @@
-<!--$Id: log_unregister.so,v 10.21 2000/05/03 22:39:10 bostic Exp $-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB: DbEnv::log_unregister</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
- <a name="2"><!--meow--></a>
-<table><tr valign=top>
-<td>
-<h1>DbEnv::log_unregister</h1>
-</td>
-<td width="1%">
-<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;db_cxx.h&gt;
-<p>
-int
-DbEnv::log_unregister(int32_t DB *dbp);
-</pre></h3>
-<h1>Description</h1>
-<p>The DbEnv::log_unregister method function unregisters the file represented by
-the <b>dbp</b> parameter from the Berkeley DB environment's log manager.
-<p>The DbEnv::log_unregister 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>
-<p>The DbEnv::log_unregister method may fail and throw an exception or 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 DbEnv::log_unregister method may fail and throw an exception or return a non-zero error for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the DbEnv::log_unregister method may fail and either
-return <a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a> or throw an exception encapsulating
-<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.
-<h3>Class</h3>
-<a href="../api_cxx/dbenv_class.html">DbEnv</a>
-<h1>See Also</h1>
-<a href="../api_cxx/env_set_lg_bsize.html">DbEnv::set_lg_bsize</a>,
-<a href="../api_cxx/env_set_lg_max.html">DbEnv::set_lg_max</a>,
-<a href="../api_cxx/log_archive.html">DbEnv::log_archive</a>,
-<a href="../api_cxx/log_compare.html">DbEnv::log_compare</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_get.html">DbEnv::log_get</a>,
-<a href="../api_cxx/log_put.html">DbEnv::log_put</a>,
-<a href="../api_cxx/log_register.html">DbEnv::log_register</a>,
-<a href="../api_cxx/log_stat.html">DbEnv::log_stat</a>
-and
-<a href="../api_cxx/log_unregister.html">DbEnv::log_unregister</a>.
-</tt>
-<table><tr><td><br></td><td width="1%">
-<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/logc_class.html b/db/docs/api_cxx/logc_class.html
index e118ce2df..c9ac1c110 100644
--- a/db/docs/api_cxx/logc_class.html
+++ b/db/docs/api_cxx/logc_class.html
@@ -1,6 +1,5 @@
<!--$Id: logc_class.so,v 1.8 2004/08/13 03:38:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -40,6 +39,6 @@ return.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/logc_close.html b/db/docs/api_cxx/logc_close.html
index 51e871000..93b316e47 100644
--- a/db/docs/api_cxx/logc_close.html
+++ b/db/docs/api_cxx/logc_close.html
@@ -1,6 +1,5 @@
<!--$Id: logc_close.so,v 10.13 2004/08/13 03:38:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -58,6 +57,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/logc_get.html b/db/docs/api_cxx/logc_get.html
index ae4d6d836..74a29ce1c 100644
--- a/db/docs/api_cxx/logc_get.html
+++ b/db/docs/api_cxx/logc_get.html
@@ -1,6 +1,5 @@
<!--$Id: logc_get.so,v 10.48 2004/08/13 03:38:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -107,6 +106,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/lsn_class.html b/db/docs/api_cxx/lsn_class.html
index 93a0a00c3..042b14974 100644
--- a/db/docs/api_cxx/lsn_class.html
+++ b/db/docs/api_cxx/lsn_class.html
@@ -1,6 +1,5 @@
<!--$Id: lsn_class.so,v 10.21 2004/08/13 03:38:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -39,6 +38,6 @@ the other specifies an offset in the log file.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/mem_class.html b/db/docs/api_cxx/mem_class.html
deleted file mode 100644
index dbdbfccb4..000000000
--- a/db/docs/api_cxx/mem_class.html
+++ /dev/null
@@ -1,54 +0,0 @@
-<!--Id: mem_class.so,v 10.6 2001/04/26 13:31:24 dda Exp -->
-<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB: DbMemoryException</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
- <a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>DbMemoryException</h1>
-</td>
-<td align=right>
-<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;db_cxx.h&gt;
-<p>
-class DbMemoryException : public DbException {
- DbMemoryException(Dbt *dbt);
- DbMemoryException(const char *description);
- DbMemoryException(const char *prefix, Dbt *dbt);
- DbMemoryException(const char *prefix1, const char *prefix2, Dbt *dbt);
- Dbt *get_dbt() const;
-};
-</pre></h3>
-<h1>Description</h1>
-<p>This manual page describes the DbMemoryException class and how
-it is used by the various Db* classes.
-<p>A DbMemoryException is thrown when there is insufficient memory
-to complete an operation, and there is the possibility of recovering.
-An example is during a <a href="../api_cxx/db_get.html">Db::get</a> or <a href="../api_cxx/dbc_get.html">Dbc::get</a> operation with
-the <a href="../api_cxx/dbt_class.html">Dbt</a> flags set to <a href="../api_cxx/dbt_class.html#DB_DBT_USERMEM">DB_DBT_USERMEM</a>. In this case, the
-<a href="../api_cxx/get_dbt.html">DbMemoryException::get_dbt</a> method returns the problematic <a href="../api_cxx/dbt_class.html">Dbt</a>, and the
-operation can be retried with a larger buffer.
-<h1>Class</h1>
-<a href="../api_cxx/except_class.html">DbException</a>
-<h1>See Also</h1>
-<a href="../api_cxx/get_errno.html">DbException::get_errno</a>,
-<a href="../api_cxx/what.html">DbException::what</a>,
-and
-<a href="../api_cxx/mem_class.html">DbMemoryException</a>
-</tt>
-<table width="100%"><tr><td><br></td><td align=right>
-<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/memp_class.html b/db/docs/api_cxx/memp_class.html
index 24183716a..bb6679c8c 100644
--- a/db/docs/api_cxx/memp_class.html
+++ b/db/docs/api_cxx/memp_class.html
@@ -1,6 +1,5 @@
-<!--$Id: memp_class.so,v 10.20 2004/10/14 15:58:43 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: memp_class.so,v 10.21 2006/10/24 15:47:59 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -35,7 +34,7 @@ it is used by the various Db* classes.</p>
to complete an operation, and there is the possibility of recovering.
An example is during a <a href="../api_cxx/db_get.html">Db::get</a> or <a href="../api_cxx/dbc_get.html">Dbc::get</a> operation with
the <a href="../api_cxx/dbt_class.html">Dbt</a> flags set to <a href="../api_cxx/dbt_class.html#DB_DBT_USERMEM">DB_DBT_USERMEM</a>.</p>
-<a name="DB_BUFFER_SMALL">DB_BUFFER_SMALL</a>
+<a name="2"><!--meow--></a>
<p>The <a href="../api_cxx/except_class.html">DbException</a> errno value is set to <a href="../api_cxx/dbt_class.html#DB_BUFFER_SMALL">DB_BUFFER_SMALL</a>
or ENOMEM.</p>
<p>The <b>get_dbt</b> method returns the <a href="../api_cxx/dbt_class.html">Dbt</a> with insufficient
@@ -48,6 +47,6 @@ is still in scope and has not been deleted.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/memp_fclose.html b/db/docs/api_cxx/memp_fclose.html
index bd79adc89..592bf3365 100644
--- a/db/docs/api_cxx/memp_fclose.html
+++ b/db/docs/api_cxx/memp_fclose.html
@@ -1,6 +1,5 @@
<!--$Id: memp_fclose.so,v 10.33 2004/08/13 03:38:58 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -53,6 +52,6 @@ failure, and returns 0 on success.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/memp_fcreate.html b/db/docs/api_cxx/memp_fcreate.html
index 0e0e34907..9a7c39444 100644
--- a/db/docs/api_cxx/memp_fcreate.html
+++ b/db/docs/api_cxx/memp_fcreate.html
@@ -1,6 +1,5 @@
<!--$Id: memp_fcreate.so,v 10.12 2004/08/13 03:38:58 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -49,6 +48,6 @@ failure, and returns 0 on success.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/memp_fget.html b/db/docs/api_cxx/memp_fget.html
index 7d3e33458..ad15e828d 100644
--- a/db/docs/api_cxx/memp_fget.html
+++ b/db/docs/api_cxx/memp_fget.html
@@ -1,6 +1,5 @@
<!--$Id: memp_fget.so,v 10.48 2006/09/13 14:30:54 mjc Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -126,6 +125,6 @@ throw a DbMemoryException.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/memp_fopen.html b/db/docs/api_cxx/memp_fopen.html
index b10470969..bb686b06a 100644
--- a/db/docs/api_cxx/memp_fopen.html
+++ b/db/docs/api_cxx/memp_fopen.html
@@ -1,6 +1,5 @@
<!--$Id: memp_fopen.so,v 10.53 2006/08/08 05:24:05 mjc Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -104,6 +103,6 @@ throw a DbMemoryException.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/memp_fput.html b/db/docs/api_cxx/memp_fput.html
index 4c3f9ae9f..89d636b4d 100644
--- a/db/docs/api_cxx/memp_fput.html
+++ b/db/docs/api_cxx/memp_fput.html
@@ -1,6 +1,5 @@
-<!--$Id: memp_fput.so,v 10.33 2006/09/11 23:31:27 mjc Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: memp_fput.so,v 10.34 2006/11/30 19:06:50 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -23,11 +22,13 @@
#include &lt;db_cxx.h&gt;
<p>
int
-DbMpoolFile::put(void *pgaddr, u_int32_t flags);
+DbMpoolFile::put(void *pgaddr, DB_CACHE_PRIORITY priority, u_int32_t flags);
</pre></h3>
<hr size=1 noshade>
<h3>Description: DbMpoolFile::put</h3>
-<p>The DbMpoolFile::put method returns a page to the cache.</p>
+<p>The DbMpoolFile::put method returns a reference to a page in the cache,
+setting the priority of the page as specified by the <b>priority</b>
+parameter.</p>
<p>The DbMpoolFile::put method
either returns a non-zero error value
or throws an exception that encapsulates a non-zero error value on
@@ -35,14 +36,18 @@ failure, and returns 0 on success.
</p>
<h3>Parameters</h3>
<dl compact>
-<dt><b>pgaddr</b><dd>The <b>pgaddr</b> parameter is the address of the page to be
-returned to the cache. The <b>pgaddr</b> parameter must be an
-address previously returned by <a href="../api_cxx/memp_fget.html">DbMpoolFile::get</a>.
-<dt><b>flags</b><dd>The <b>flags</b> parameter must be set to 0 or by bitwise inclusively <b>OR</b>'ing together one
-or more of the following values:
+<dt><b>flags</b><dd>The <b>flags</b> parameter is currently unused, and must be set to 0.
+<dt><b>pgaddr</b><dd>The <b>pgaddr</b> parameter is the address of the page to be returned
+to the cache. The <b>pgaddr</b> parameter must be a value previously
+returned by the <a href="../api_cxx/memp_fget.html">DbMpoolFile::get</a> method.
+<dt><b>priority</b><dd>Set the page's <b>priority</b> as follows:
<dl compact>
-<dt><a name="DB_MPOOL_DISCARD">DB_MPOOL_DISCARD</a><dd>The page is unlikely to be useful in the near future, and should be
-discarded before other pages in the pool.
+<dt><a name="DB_PRIORITY_UNCHANGED">DB_PRIORITY_UNCHANGED</a><dd>The priority is unchanged.
+<dt><a name="DB_PRIORITY_VERY_LOW">DB_PRIORITY_VERY_LOW</a><dd>The lowest priority: pages are the most likely to be discarded.
+<dt><a name="DB_PRIORITY_LOW">DB_PRIORITY_LOW</a><dd>The next lowest priority.
+<dt><a name="DB_PRIORITY_DEFAULT">DB_PRIORITY_DEFAULT</a><dd>The default priority.
+<dt><a name="DB_PRIORITY_HIGH">DB_PRIORITY_HIGH</a><dd>The next highest priority.
+<dt><a name="DB_PRIORITY_VERY_HIGH">DB_PRIORITY_VERY_HIGH</a><dd>The highest priority: pages are the least likely to be discarded.
</dl>
</dl>
<h3>Errors</h3>
@@ -52,8 +57,7 @@ may fail and throw
encapsulating one of the following non-zero errors, or return one of
the following non-zero errors:</p>
<dl compact>
-<dt>EINVAL<dd>If the <b>pgaddr</b> parameter does not refer to a page returned by
-<a href="../api_cxx/memp_fget.html">DbMpoolFile::get</a>; or if an
+<dt>EINVAL<dd>An
invalid flag value or parameter was specified.
</dl>
<hr size=1 noshade>
@@ -65,6 +69,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/memp_fset.html b/db/docs/api_cxx/memp_fset.html
deleted file mode 100644
index 4c1bc1033..000000000
--- a/db/docs/api_cxx/memp_fset.html
+++ /dev/null
@@ -1,69 +0,0 @@
-<!--$Id: memp_fset.so,v 10.30 2004/08/13 03:38:58 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: DbMpoolFile::set</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
-</head>
-<body bgcolor=white>
-<table width="100%"><tr valign=top>
-<td>
-<h3>DbMpoolFile::set</h3>
-</td>
-<td align=right>
-<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a>
-<a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a></td>
-</tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;db_cxx.h&gt;
-<p>
-int
-DbMpoolFile::set(void *pgaddr, u_int32_t flags);
-</pre></h3>
-<hr size=1 noshade>
-<h3>Description: DbMpoolFile::set</h3>
-<p>The DbMpoolFile::set method sets the attributes of a cache page.</p>
-<p>The DbMpoolFile::set 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.
-</p>
-<h3>Parameters</h3>
-<dl compact>
-<dt><b>pgaddr</b><dd>The <b>pgaddr</b> parameter is the address of the page for which
-attributes are to be set. he <b>pgaddr</b> parameter must be an
-address previously returned by <a href="../api_cxx/memp_fget.html">DbMpoolFile::get</a>.
-<dt><b>flags</b><dd>The <b>flags</b> parameter must be set to 0 or by bitwise inclusively <b>OR</b>'ing together one
-or more of the following values:
-<dl compact>
-<dt><a name="DB_MPOOL_DISCARD">DB_MPOOL_DISCARD</a><dd>The page is unlikely to be useful in the near future, and should be
-discarded before other pages in the pool.
-</dl>
-</dl>
-<h3>Errors</h3>
-<p>The DbMpoolFile::set method
-may fail and throw
-<a href="../api_cxx/except_class.html">DbException</a>,
-encapsulating one of the following non-zero errors, or return one of
-the following non-zero errors:</p>
-<dl compact>
-<dt>EINVAL<dd>An
-invalid flag value or parameter was specified.
-</dl>
-<hr size=1 noshade>
-<h3>Class</h3>
-<a href="../api_cxx/env_class.html">DbEnv</a>, <a href="../api_cxx/mempfile_class.html">DbMpoolFile</a>
-<h3>See Also</h3>
-<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/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/memp_fsync.html b/db/docs/api_cxx/memp_fsync.html
index c33dc840c..4c84adb40 100644
--- a/db/docs/api_cxx/memp_fsync.html
+++ b/db/docs/api_cxx/memp_fsync.html
@@ -1,6 +1,5 @@
-<!--$Id: memp_fsync.so,v 10.35 2004/08/13 03:38:58 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: memp_fsync.so,v 10.36 2006/11/30 19:06:50 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -27,10 +26,9 @@ DbMpoolFile::sync();
</pre></h3>
<hr size=1 noshade>
<h3>Description: DbMpoolFile::sync</h3>
-<p>The DbMpoolFile::sync method writes all pages associated with the
-<a href="../api_cxx/mempfile_class.html">DbMpoolFile</a>, which were marked as modified using
-<a href="../api_cxx/memp_fput.html">DbMpoolFile::put</a> or <a href="../api_cxx/memp_fset.html">DbMpoolFile::set</a>, back to the source file. If any
-of the modified pages are <i>pinned</i> (that is, currently in use),
+<p>The DbMpoolFile::sync method writes all modified pages associated with the
+<a href="../api_cxx/mempfile_class.html">DbMpoolFile</a> back to the source file. If any of the modified
+pages are <i>pinned</i> (that is, currently in use),
DbMpoolFile::sync will ignore them.</p>
<p>The DbMpoolFile::sync method
either returns a non-zero error value
@@ -46,6 +44,6 @@ failure, and returns 0 on success.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/memp_list.html b/db/docs/api_cxx/memp_list.html
index d300fad59..ee0c3cf7a 100644
--- a/db/docs/api_cxx/memp_list.html
+++ b/db/docs/api_cxx/memp_list.html
@@ -1,6 +1,5 @@
<!--$Id: memp_list.so,v 1.1 2002/08/30 20:01:28 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -10,7 +9,7 @@
</head>
<body bgcolor=white>
<h3 align=center>Berkeley DB: Memory Pools and Related Methods</h3>
-<!--$Id: m4.methods,v 1.9 2006/08/25 16:40:01 bostic Exp $-->
+<!--$Id: m4.methods,v 1.11 2007/07/06 00:22:53 mjc Exp $-->
<table border=1 align=center>
<tr><th>Memory Pools and Related Methods</th><th>Description</th></tr>
<!--Db::mpf--><tr><td><a href="../api_cxx/db_get_mpf.html">Db::get_mpf</a></td><td>Return <a href="../api_cxx/db_class.html">Db</a>'s underlying <a href="../api_cxx/mempfile_class.html">DbMpoolFile</a> handle</td></tr>
@@ -21,6 +20,7 @@
<tr><th>Memory Pool Configuration</th><th><br></th></tr>
<!--DbEnv::memp_register--><tr><td><a href="../api_cxx/memp_register.html">DbEnv::memp_register</a></td><td>Register input/output functions for a file in a memory pool</td></tr>
<!--DbEnv::set_cachesize--><tr><td><a href="../api_cxx/env_set_cachesize.html">DbEnv::set_cachesize</a></td><td>Set the environment cache size</td></tr>
+<!--DbEnv::set_cache_max--><tr><td><a href="../api_cxx/env_set_cache_max.html">DbEnv::set_cache_max</a></td><td>Set the maximum cache size</td></tr>
<!--DbEnv::set_mp_max_openfd--><tr><td><a href="../api_cxx/memp_openfd.html">DbEnv::set_mp_max_openfd</a></td><td>Set the maximum number of open file descriptors</td></tr>
<!--DbEnv::set_mp_max_write--><tr><td><a href="../api_cxx/memp_maxwrite.html">DbEnv::set_mp_max_write</a></td><td>Set the maximum number of sequential disk writes</td></tr>
<!--DbEnv::set_mp_mmapsize--><tr><td><a href="../api_cxx/env_set_mp_mmapsize.html">DbEnv::set_mp_mmapsize</a></td><td>Set maximum mapped-in database file size</td></tr>
@@ -31,7 +31,6 @@
<!--DbMpoolFile::get--><tr><td><a href="../api_cxx/memp_fget.html">DbMpoolFile::get</a></td><td>Get page from a file in a memory pool</td></tr>
<!--DbMpoolFile::open--><tr><td><a href="../api_cxx/memp_fopen.html">DbMpoolFile::open</a></td><td>Open a file in a memory pool</td></tr>
<!--DbMpoolFile::put--><tr><td><a href="../api_cxx/memp_fput.html">DbMpoolFile::put</a></td><td>Return a page to a memory pool</td></tr>
-<!--DbMpoolFile::set--><tr><td><a href="../api_cxx/memp_fset.html">DbMpoolFile::set</a></td><td>Set memory pool page attributes</td></tr>
<!--DbMpoolFile::sync--><tr><td><a href="../api_cxx/memp_fsync.html">DbMpoolFile::sync</a></td><td>Flush pages from a file in a memory pool</td></tr>
<tr><th>Memory Pool File Configuration</th><th><br></th></tr>
<!--DbMpoolFile::set_clear_len--><tr><td><a href="../api_cxx/memp_set_clear_len.html">DbMpoolFile::set_clear_len</a></td><td>Set file page bytes to be cleared</td></tr>
@@ -43,6 +42,6 @@
<!--DbMpoolFile::set_pgcookie--><tr><td><a href="../api_cxx/memp_set_pgcookie.html">DbMpoolFile::set_pgcookie</a></td><td>Set file cookie for pgin/pgout</td></tr>
<!--DbMpoolFile::set_priority--><tr><td><a href="../api_cxx/memp_set_priority.html">DbMpoolFile::set_priority</a></td><td>Set memory pool file priority</td></tr>
</table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/memp_maxwrite.html b/db/docs/api_cxx/memp_maxwrite.html
index 0c54e094a..535a36239 100644
--- a/db/docs/api_cxx/memp_maxwrite.html
+++ b/db/docs/api_cxx/memp_maxwrite.html
@@ -1,6 +1,5 @@
-<!--$Id: memp_maxwrite.so,v 10.4 2006/04/26 16:55:20 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: memp_maxwrite.so,v 10.5 2006/11/29 21:37:17 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -23,10 +22,10 @@
#include &lt;db_cxx.h&gt;
<p>
int
-DbEnv::set_mp_max_write(int maxwrite, int maxwrite_sleep);
+DbEnv::set_mp_max_write(int maxwrite, db_timeout_t maxwrite_sleep);
<p>
int
-DbEnv::get_mp_max_write(int *maxwritep, int *maxwrite_sleepp);
+DbEnv::get_mp_max_write(int *maxwritep, db_timeout_t *maxwrite_sleepp);
</pre></h3>
<hr size=1 noshade>
<h3>Description: DbEnv::set_mp_max_write</h3>
@@ -44,7 +43,9 @@ failure, and returns 0 on success.
library when flushing dirty pages from the cache, or 0 if there is
no limitation on the number of sequential write operations.
<dt><b>maxwrite_sleep</b><dd>The number of microseconds the thread of control should pause before
-scheduling further write operations.
+scheduling further write operations. It must be specified as an
+unsigned 32-bit number of microseconds, limiting the maximum pause to
+roughly 71 minutes.
</dl>
<h3>Errors</h3>
<p>The DbEnv::set_mp_max_write method
@@ -83,6 +84,6 @@ failure, and returns 0 on success.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/memp_openfd.html b/db/docs/api_cxx/memp_openfd.html
index bc45eeb99..a8643cefc 100644
--- a/db/docs/api_cxx/memp_openfd.html
+++ b/db/docs/api_cxx/memp_openfd.html
@@ -1,6 +1,5 @@
<!--$Id: memp_openfd.so,v 10.3 2005/03/08 14:36:15 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -77,6 +76,6 @@ maximum number of file descriptors open in <b>maxopenfdp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/memp_register.html b/db/docs/api_cxx/memp_register.html
index 1feaf0bdf..aad039ac6 100644
--- a/db/docs/api_cxx/memp_register.html
+++ b/db/docs/api_cxx/memp_register.html
@@ -1,6 +1,5 @@
<!--$Id: memp_register.so,v 10.38 2004/08/13 03:38:58 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -82,6 +81,6 @@ the Berkeley DB library).</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/memp_set_clear_len.html b/db/docs/api_cxx/memp_set_clear_len.html
index e970073e2..016086e7a 100644
--- a/db/docs/api_cxx/memp_set_clear_len.html
+++ b/db/docs/api_cxx/memp_set_clear_len.html
@@ -1,6 +1,5 @@
<!--$Id: memp_set_clear_len.so,v 10.18 2005/11/30 19:46:21 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -79,6 +78,6 @@ bytes to be cleared in <b>lenp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/memp_set_fileid.html b/db/docs/api_cxx/memp_set_fileid.html
index 3bab6f092..a4ce4f924 100644
--- a/db/docs/api_cxx/memp_set_fileid.html
+++ b/db/docs/api_cxx/memp_set_fileid.html
@@ -1,6 +1,5 @@
<!--$Id: memp_set_fileid.so,v 10.14 2005/04/14 13:08:06 sue Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -89,6 +88,6 @@ application.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/memp_set_flags.html b/db/docs/api_cxx/memp_set_flags.html
index 0742e8f1a..78f36ce52 100644
--- a/db/docs/api_cxx/memp_set_flags.html
+++ b/db/docs/api_cxx/memp_set_flags.html
@@ -1,6 +1,5 @@
-<!--$Id: memp_set_flags.so,v 1.18 2005/09/17 16:30:18 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: memp_set_flags.so,v 1.19 2007/06/07 15:30:46 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -44,9 +43,10 @@ failure, and returns 0 on success.
<dt><b>flags</b><dd>The <b>flags</b> parameter must be set by bitwise inclusively <b>OR</b>'ing together one or more
of the following values:
<dl compact>
-<dt><a name="DB_MPOOL_NOFILE">DB_MPOOL_NOFILE</a><dd>If set, no backing temporary file will be opened for in-memory
-databases, even if they expand to fill the entire cache. Attempts to
-create new file pages after the cache has been filled will fail.
+<dt><a name="DB_MPOOL_NOFILE">DB_MPOOL_NOFILE</a><dd>If set, no backing temporary file will be opened for the specified
+in-memory database, even if it expands to fill the entire cache.
+Attempts to create new database pages after the cache has been filled
+will fail.
<p>The DB_MPOOL_NOFILE flag configures a file in the memory pool, not only
operations performed using the specified <a href="../api_cxx/mempfile_class.html">DbMpoolFile</a> handle.</p>
<p>The DB_MPOOL_NOFILE flag may be used to configure Berkeley DB at any time during
@@ -85,6 +85,6 @@ flags in <b>flagsp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/memp_set_ftype.html b/db/docs/api_cxx/memp_set_ftype.html
index 464f67dbf..ab09e5fad 100644
--- a/db/docs/api_cxx/memp_set_ftype.html
+++ b/db/docs/api_cxx/memp_set_ftype.html
@@ -1,6 +1,5 @@
<!--$Id: memp_set_ftype.so,v 10.17 2005/11/30 19:46:21 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -76,6 +75,6 @@ file type in <b>ftypep</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/memp_set_lsn_offset.html b/db/docs/api_cxx/memp_set_lsn_offset.html
index 09f42311c..55b81b507 100644
--- a/db/docs/api_cxx/memp_set_lsn_offset.html
+++ b/db/docs/api_cxx/memp_set_lsn_offset.html
@@ -1,6 +1,5 @@
<!--$Id: memp_set_lsn_offset.so,v 10.17 2005/04/14 17:57:54 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -77,6 +76,6 @@ log sequence number byte offset in <b>lsn_offsetp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/memp_set_maxsize.html b/db/docs/api_cxx/memp_set_maxsize.html
index 102053a6f..6475f492b 100644
--- a/db/docs/api_cxx/memp_set_maxsize.html
+++ b/db/docs/api_cxx/memp_set_maxsize.html
@@ -1,6 +1,5 @@
<!--$Id: memp_set_maxsize.so,v 1.15 2005/09/17 16:30:18 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -78,6 +77,6 @@ application.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/memp_set_pgcookie.html b/db/docs/api_cxx/memp_set_pgcookie.html
index 8d8b7ab4d..5d448d65e 100644
--- a/db/docs/api_cxx/memp_set_pgcookie.html
+++ b/db/docs/api_cxx/memp_set_pgcookie.html
@@ -1,6 +1,5 @@
<!--$Id: memp_set_pgcookie.so,v 10.17 2005/11/30 19:46:21 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -77,6 +76,6 @@ byte string in <b>dbt</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/memp_set_priority.html b/db/docs/api_cxx/memp_set_priority.html
index cde1c365b..175828c52 100644
--- a/db/docs/api_cxx/memp_set_priority.html
+++ b/db/docs/api_cxx/memp_set_priority.html
@@ -1,6 +1,5 @@
-<!--$Id: memp_set_priority.so,v 10.23 2005/08/12 17:05:52 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: memp_set_priority.so,v 10.25 2007/05/22 18:06:06 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -30,15 +29,18 @@ DbMpoolFile::get_priority(DB_CACHE_PRIORITY *priorityp);
</pre></h3>
<hr size=1 noshade>
<h3>Description: DbMpoolFile::set_priority</h3>
-<p>Set the cache priority for pages from the specified file. The priority
-of a page biases the replacement algorithm to be more or less likely to
-discard a page when space is needed in the buffer pool. The bias is
-temporary, and pages will eventually be discarded if they are not
-referenced again. The DbMpoolFile::set_priority method is only advisory, and
-does not guarantee pages will be treated in a specific way.</p>
+<!--$Id: dbc_set_priority.so,v 1.3 2007/05/22 18:06:05 bostic Exp $-->
+<p>Set the cache priority for pages referenced by the
+<a href="../api_cxx/mempfile_class.html">DbMpoolFile</a>
+handle.</p>
+<p>The priority of a page biases the replacement algorithm to be more or
+less likely to discard a page when space is needed in the buffer pool.
+The bias is temporary, and pages will eventually be discarded if they
+are not referenced again. The DbMpoolFile::set_priority method is only advisory, and does
+not guarantee pages will be treated in a specific way.</p>
<p>To set the priority for the pages belonging to a particular database,
-call the DbMpoolFile::set_priority method using the <a href="../api_cxx/mempfile_class.html">DbMpoolFile</a>
-handle returned by calling the <a href="../api_cxx/db_get_mpf.html">Db::get_mpf</a> method.</p>
+call the DbMpoolFile::set_priority method using the <a href="../api_cxx/mempfile_class.html">DbMpoolFile</a> handle
+returned by the <a href="../api_cxx/db_get_mpf.html">Db::get_mpf</a> method.</p>
<p>The DbMpoolFile::set_priority method configures a file in the memory pool, not only
operations performed using the specified <a href="../api_cxx/mempfile_class.html">DbMpoolFile</a> handle.</p>
<p>The DbMpoolFile::set_priority method may be called at any time during the life of the
@@ -62,28 +64,22 @@ values:
</dl>
<hr size=1 noshade>
<h3>Description: DbMpoolFile::get_priority</h3>
-<p>The DbMpoolFile::get_priority method returns the cache priority.</p>
+<p>The DbMpoolFile::get_priority method returns the cache priority for the file referenced by the <a href="../api_cxx/mempfile_class.html">DbMpoolFile</a> handle.</p>
<p>The DbMpoolFile::get_priority method may be called at any time during the life of the
application.</p>
<p>The DbMpoolFile::get_priority 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.
-</p>
-<h3>Parameters</h3>
-<dl compact>
-<dt><b>priorityp</b><dd>The DbMpoolFile::get_priority method returns the
-cache priority in <b>priorityp</b>.
-</dl>
+failure
<hr size=1 noshade>
<h3>Class</h3>
-<a href="../api_cxx/db_class.html">Db</a>
+<a href="../api_cxx/env_class.html">DbEnv</a>, <a href="../api_cxx/mempfile_class.html">DbMpoolFile</a>
<h3>See Also</h3>
-<a href="../api_cxx/db_list.html">Databases and Related Methods</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/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/memp_stat.html b/db/docs/api_cxx/memp_stat.html
index 0d0651621..a5455c675 100644
--- a/db/docs/api_cxx/memp_stat.html
+++ b/db/docs/api_cxx/memp_stat.html
@@ -1,6 +1,5 @@
-<!--$Id: memp_stat.so,v 10.67 2006/09/11 16:56:44 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: memp_stat.so,v 10.71 2007/07/06 00:22:53 mjc Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -51,11 +50,13 @@ The following DB_MPOOL_STAT fields will be filled in:</p>
<dt>size_t st_gbytes;<dd>Gigabytes of cache (total cache size is st_gbytes + st_bytes).
<dt>size_t st_bytes;<dd>Bytes of cache (total cache size is st_gbytes + st_bytes).
<dt>u_int32_t st_ncache;<dd>Number of caches.
+<dt>u_int32_t st_max_ncache;<dd>Maximum number of caches, as configured with the
+<a href="../api_cxx/env_set_cache_max.html">DbEnv::set_cache_max</a> method.
<dt>roff_t st_regsize;<dd>Individual cache size, in bytes.
<dt>size_t st_mmapsize;<dd>Maximum memory-mapped file size.
<dt>int st_maxopenfd;<dd>Maximum open file descriptors.
<dt>int st_maxwrite;<dd>Maximum sequential buffer writes.
-<dt>int st_maxwrite_sleep;<dd>Sleep after writing maximum sequential buffers.
+<dt>db_timeout_t st_maxwrite_sleep;<dd>Microseconds to pause after writing maximum sequential buffers.
<dt>u_int32_t st_map;<dd>Requested pages mapped into the process' address space (there is no
available information about whether or not this request caused disk I/O,
although examining the application page fault rate may be helpful).
@@ -97,11 +98,6 @@ region mutex without waiting.
<dt>u_int32_t st_alloc_max_pages;<dd>Maximum number of pages checked during an allocation.
<dt>u_int32_t st_io_wait;<dd>Number of operations blocked waiting for I/O to complete.
</dl>
-The <b>flags</b> parameter must be set to 0 or
-the following value:
-<dl compact>
-<dt><a name="DB_STAT_CLEAR">DB_STAT_CLEAR</a><dd>Reset statistics after returning their values.
-</dl>
<p>If <b>fsp</b> is non-NULL, a pointer to a NULL-terminated
variable length array of statistics for individual files, in the cache
<b>mp</b>, is copied into the memory location to which it refers. If
@@ -120,6 +116,8 @@ the cache; that is, each element of the array:</p>
<dt>u_int32_t st_page_in;<dd>Pages read into the cache.
<dt>u_int32_t st_page_out;<dd>Pages written from the cache to the backing file.
</dl>
+<p>The DbEnv::memp_stat method may not be called before the <a href="../api_cxx/env_open.html">DbEnv::open</a> method has
+been called.</p>
<p>The DbEnv::memp_stat method
either returns a non-zero error value
or throws an exception that encapsulates a non-zero error value on
@@ -149,8 +147,12 @@ invalid flag value or parameter was specified.
</dl>
<hr size=1 noshade>
<h3>Description: DbEnv::memp_stat_print</h3>
-<p>The DbEnv::memp_stat_print method prints diagnostic information to the output
-channel described by the <a href="../api_cxx/env_set_msgfile.html">DbEnv::set_msgfile</a> method.</p>
+<p>The DbEnv::memp_stat_print method displays the
+memory pool subsystem statistical information, as described for the DbEnv::memp_stat method.
+The information is printed to a specified output channel (see the
+<a href="../api_cxx/env_set_msgfile.html">DbEnv::set_msgfile</a> method for more information), or passed to an
+application callback function (see the <a href="../api_cxx/env_set_msgcall.html">DbEnv::set_msgcall</a> method for
+more information).</p>
<p>The DbEnv::memp_stat_print method may not be called before the <a href="../api_cxx/env_open.html">DbEnv::open</a> method has
been called.</p>
<p>The DbEnv::memp_stat_print method
@@ -160,10 +162,11 @@ failure, and returns 0 on success.
</p>
<h3>Parameters</h3>
<dl compact>
-<dt><b>flags</b><dd>The <b>flags</b> parameter must be set by bitwise inclusively <b>OR</b>'ing together one or more
-of the following values:
+<dt><b>flags</b><dd>The <b>flags</b> parameter must be set to 0 or by bitwise inclusively <b>OR</b>'ing together one
+or more of the following values:
<dl compact>
<dt><a name="DB_STAT_ALL">DB_STAT_ALL</a><dd>Display all available information.
+<dt><a name="DB_STAT_CLEAR">DB_STAT_CLEAR</a><dd>Reset statistics after displaying their values.
<dt><a name="DB_STAT_MEMP_HASH">DB_STAT_MEMP_HASH</a><dd>Display the buffers with hash chains.
</dl>
</dl>
@@ -176,6 +179,6 @@ of the following values:
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/memp_sync.html b/db/docs/api_cxx/memp_sync.html
index f2d7c8065..8043b2f27 100644
--- a/db/docs/api_cxx/memp_sync.html
+++ b/db/docs/api_cxx/memp_sync.html
@@ -1,6 +1,5 @@
-<!--$Id: memp_sync.so,v 10.42 2004/11/12 02:55:19 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: memp_sync.so,v 10.43 2007/02/27 19:23:07 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -33,11 +32,6 @@ backing files.</p>
example, pages that are currently in use by another thread of control)
are waited for and written to disk as soon as it is possible to do
so.</p>
-<p>To support the DbEnv::memp_sync functionality, it is necessary that the
-pool functions know the location of the log sequence number on the page
-for each file type. This location should be specified when the file is
-opened using the <a href="../api_cxx/memp_set_lsn_offset.html">DbMpoolFile::set_lsn_offset</a> method. It is not required that
-the log sequence number be aligned on the page in any way.</p>
<p>The DbEnv::memp_sync method
either returns a non-zero error value
or throws an exception that encapsulates a non-zero error value on
@@ -61,6 +55,6 @@ NULL, all modified pages in the pool are written to disk.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/memp_trickle.html b/db/docs/api_cxx/memp_trickle.html
index 45378320e..c7370722d 100644
--- a/db/docs/api_cxx/memp_trickle.html
+++ b/db/docs/api_cxx/memp_trickle.html
@@ -1,6 +1,5 @@
<!--$Id: memp_trickle.so,v 10.36 2004/08/13 03:38:58 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -65,6 +64,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/mempfile_class.html b/db/docs/api_cxx/mempfile_class.html
index 70c412804..8fcba5893 100644
--- a/db/docs/api_cxx/mempfile_class.html
+++ b/db/docs/api_cxx/mempfile_class.html
@@ -1,6 +1,5 @@
<!--$Id: mempfile_class.so,v 10.24 2004/08/13 03:38:58 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -67,6 +66,6 @@ calls in a purely C++ application.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/mutex_alloc.html b/db/docs/api_cxx/mutex_alloc.html
index b42d72cf6..f4dbba4b5 100644
--- a/db/docs/api_cxx/mutex_alloc.html
+++ b/db/docs/api_cxx/mutex_alloc.html
@@ -1,6 +1,5 @@
<!--$Id: mutex_alloc.so,v 10.2 2006/01/27 16:13:49 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -73,6 +72,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/mutex_free.html b/db/docs/api_cxx/mutex_free.html
index b6c8bfd05..4404bcbd4 100644
--- a/db/docs/api_cxx/mutex_free.html
+++ b/db/docs/api_cxx/mutex_free.html
@@ -1,6 +1,5 @@
<!--$Id: mutex_free.so,v 10.1 2005/07/20 16:33:59 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -59,6 +58,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/mutex_list.html b/db/docs/api_cxx/mutex_list.html
index 0b09b1b06..49867612c 100644
--- a/db/docs/api_cxx/mutex_list.html
+++ b/db/docs/api_cxx/mutex_list.html
@@ -1,6 +1,5 @@
<!--$Id: mutex_list.so,v 10.1 2005/07/20 16:33:59 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -24,6 +23,6 @@
<!--DbEnv::mutex_set_max--><tr><td><a href="../api_cxx/mutex_set_max.html">DbEnv::mutex_set_max</a></td><td>Configure total number of mutexes</td></tr>
<!--DbEnv::mutex_set_tas_spins--><tr><td><a href="../api_cxx/mutex_set_tas_spins.html">DbEnv::mutex_set_tas_spins</a></td><td>Configure test-and-set mutex spin count</td></tr>
</table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/mutex_lock.html b/db/docs/api_cxx/mutex_lock.html
index b1b70816a..2ee5dd565 100644
--- a/db/docs/api_cxx/mutex_lock.html
+++ b/db/docs/api_cxx/mutex_lock.html
@@ -1,6 +1,5 @@
<!--$Id: mutex_lock.so,v 10.1 2005/07/20 16:33:59 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -61,6 +60,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/mutex_set_align.html b/db/docs/api_cxx/mutex_set_align.html
index a8f659d4c..e04919a01 100644
--- a/db/docs/api_cxx/mutex_set_align.html
+++ b/db/docs/api_cxx/mutex_set_align.html
@@ -1,6 +1,5 @@
<!--$Id: mutex_set_align.so,v 10.1 2005/07/20 16:34:00 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -94,6 +93,6 @@ mutex alignment, in bytes in <b>alignp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/mutex_set_max.html b/db/docs/api_cxx/mutex_set_max.html
index c65040152..c2e6ecfb8 100644
--- a/db/docs/api_cxx/mutex_set_max.html
+++ b/db/docs/api_cxx/mutex_set_max.html
@@ -1,6 +1,5 @@
<!--$Id: mutex_set_max.so,v 10.3 2005/08/03 21:24:59 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -162,6 +161,6 @@ number of additional mutexes to allocate in <b>incrementp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/mutex_set_tas_spins.html b/db/docs/api_cxx/mutex_set_tas_spins.html
index b8f688d87..90969629f 100644
--- a/db/docs/api_cxx/mutex_set_tas_spins.html
+++ b/db/docs/api_cxx/mutex_set_tas_spins.html
@@ -1,6 +1,5 @@
<!--$Id: mutex_set_tas_spins.so,v 10.30 2005/07/20 16:34:01 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -89,6 +88,6 @@ test-and-set spin count in <b>tas_spinsp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/mutex_stat.html b/db/docs/api_cxx/mutex_stat.html
index ca82a24f0..cd09a1111 100644
--- a/db/docs/api_cxx/mutex_stat.html
+++ b/db/docs/api_cxx/mutex_stat.html
@@ -1,6 +1,5 @@
-<!--$Id: mutex_stat.so,v 10.2 2005/11/08 11:43:55 mjc Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: mutex_stat.so,v 10.3 2007/06/22 16:57:16 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -55,6 +54,8 @@ obtaining the mutex region mutex.
<dt>u_int32_t st_region_nowait;<dd>The number of times that a thread of control was able to obtain
the mutex region mutex without waiting.
</dl>
+<p>The DbEnv::mutex_stat method may not be called before the <a href="../api_cxx/env_open.html">DbEnv::open</a> method has
+been called.</p>
<p>The DbEnv::mutex_stat method
either returns a non-zero error value
or throws an exception that encapsulates a non-zero error value on
@@ -113,6 +114,6 @@ or more of the following values:
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/mutex_unlock.html b/db/docs/api_cxx/mutex_unlock.html
index 8c2244199..189aa1b5a 100644
--- a/db/docs/api_cxx/mutex_unlock.html
+++ b/db/docs/api_cxx/mutex_unlock.html
@@ -1,6 +1,5 @@
<!--$Id: mutex_unlock.so,v 10.1 2005/07/20 16:34:02 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -60,6 +59,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/object.html b/db/docs/api_cxx/object.html
index e1b081b0d..338e980d2 100644
--- a/db/docs/api_cxx/object.html
+++ b/db/docs/api_cxx/object.html
@@ -1,4 +1,4 @@
-<!--$Id: object.so,v 10.18 2005/09/13 19:23:43 gmf Exp $-->
+<!--$Id: object.so,v 10.19 2006/10/05 01:06:03 bostic Exp $-->
<html>
<head>
<title>Berkeley DB API</title>
diff --git a/db/docs/api_cxx/pindex.src b/db/docs/api_cxx/pindex.src
index 1f012c39e..10e0dfb1e 100644
--- a/db/docs/api_cxx/pindex.src
+++ b/db/docs/api_cxx/pindex.src
@@ -1,5 +1,6 @@
-__APIREL__/api_cxx/db_associate.html__OCT__2 @DB_DBT_APPMALLOC
-__APIREL__/api_cxx/db_associate.html__OCT__3 @DB_DONOTINDEX
+__APIREL__/api_cxx/db_associate.html__OCT__DB_DBT_APPMALLOC Db::associate@DB_DBT_APPMALLOC
+__APIREL__/api_cxx/db_associate.html__OCT__DB_DBT_MULTIPLE Db::associate@DB_DBT_MULTIPLE
+__APIREL__/api_cxx/db_associate.html__OCT__DB_DONOTINDEX Db::associate@DB_DONOTINDEX
__APIREL__/api_cxx/db_associate.html__OCT__DB_CREATE Db::associate@DB_CREATE
__APIREL__/api_cxx/db_associate.html__OCT__DB_IMMUTABLE_KEY Db::associate@DB_IMMUTABLE_KEY
__APIREL__/api_cxx/db_class.html__OCT__DB_CXX_NO_EXCEPTIONS Db@DB_CXX_NO_EXCEPTIONS
@@ -11,6 +12,9 @@ __APIREL__/api_cxx/db_cursor.html__OCT__DB_READ_COMMITTED Db::cursor@DB_READ_COM
__APIREL__/api_cxx/db_cursor.html__OCT__DB_READ_UNCOMMITTED Db::cursor@DB_READ_UNCOMMITTED
__APIREL__/api_cxx/db_cursor.html__OCT__DB_WRITECURSOR Db::cursor@DB_WRITECURSOR
__APIREL__/api_cxx/db_cursor.html__OCT__DB_TXN_SNAPSHOT Db::cursor@DB_TXN_SNAPSHOT
+__APIREL__/api_cxx/db_exists.html__OCT__DB_READ_COMMITTED Db::exists@DB_READ_COMMITTED
+__APIREL__/api_cxx/db_exists.html__OCT__DB_READ_UNCOMMITTED Db::exists@DB_READ_UNCOMMITTED
+__APIREL__/api_cxx/db_exists.html__OCT__DB_RMW Db::exists@DB_RMW
__APIREL__/api_cxx/db_get.html__OCT__DB_CONSUME Db::get@DB_CONSUME
__APIREL__/api_cxx/db_get.html__OCT__DB_CONSUME_WAIT Db::get@DB_CONSUME_WAIT
__APIREL__/api_cxx/db_get.html__OCT__DB_GET_BOTH Db::get@DB_GET_BOTH
@@ -68,12 +72,16 @@ __APIREL__/api_cxx/db_set_flags.html__OCT__11 @renumbering records in Recno data
__APIREL__/api_cxx/db_set_flags.html__OCT__DB_RENUMBER Db::set_flags@DB_RENUMBER
__APIREL__/api_cxx/db_set_flags.html__OCT__12 pre-loading @text files into Recno databases
__APIREL__/api_cxx/db_set_flags.html__OCT__DB_SNAPSHOT Db::set_flags@DB_SNAPSHOT
+__APIREL__/api_cxx/db_set_priority.html__OCT__DB_PRIORITY_VERY_LOW Db::set_priority@DB_PRIORITY_VERY_LOW
+__APIREL__/api_cxx/db_set_priority.html__OCT__DB_PRIORITY_LOW Db::set_priority@DB_PRIORITY_LOW
+__APIREL__/api_cxx/db_set_priority.html__OCT__DB_PRIORITY_DEFAULT Db::set_priority@DB_PRIORITY_DEFAULT
+__APIREL__/api_cxx/db_set_priority.html__OCT__DB_PRIORITY_HIGH Db::set_priority@DB_PRIORITY_HIGH
+__APIREL__/api_cxx/db_set_priority.html__OCT__DB_PRIORITY_VERY_HIGH Db::set_priority@DB_PRIORITY_VERY_HIGH
__APIREL__/api_cxx/db_stat.html__OCT__DB_FAST_STAT Db::stat@DB_FAST_STAT
__APIREL__/api_cxx/db_stat.html__OCT__DB_READ_COMMITTED Db::stat@DB_READ_COMMITTED
__APIREL__/api_cxx/db_stat.html__OCT__DB_READ_UNCOMMITTED Db::stat@DB_READ_UNCOMMITTED
__APIREL__/api_cxx/db_stat.html__OCT__DB_FAST_STAT Db::stat@DB_FAST_STAT
__APIREL__/api_cxx/db_stat.html__OCT__DB_STAT_ALL Db::stat@DB_STAT_ALL
-__APIREL__/api_cxx/db_stat.html__OCT__DB_STAT_CLEAR Db::stat@DB_STAT_CLEAR
__APIREL__/api_cxx/db_upgrade.html__OCT__DB_DUPSORT Db::upgrade@DB_DUPSORT
__APIREL__/api_cxx/db_upgrade.html__OCT__DB_OLD_VERSION Db::upgrade@DB_OLD_VERSION
__APIREL__/api_cxx/db_verify.html__OCT__2 @DB_VERIFY_BAD
@@ -88,6 +96,8 @@ __APIREL__/api_cxx/dbt_class.html__OCT__DB_DBT_REALLOC Dbt@DB_DBT_REALLOC
__APIREL__/api_cxx/dbt_class.html__OCT__3 @DB_BUFFER_SMALL
__APIREL__/api_cxx/dbt_class.html__OCT__DB_DBT_USERMEM Dbt@DB_DBT_USERMEM
__APIREL__/api_cxx/dbt_class.html__OCT__DB_DBT_PARTIAL Dbt@DB_DBT_PARTIAL
+__APIREL__/api_cxx/dbt_class.html__OCT__DB_DBT_APPMALLOC Dbt@DB_DBT_APPMALLOC
+__APIREL__/api_cxx/dbt_class.html__OCT__DB_DBT_MULTIPLE Dbt@DB_DBT_MULTIPLE
__APIREL__/api_cxx/dbc_dup.html__OCT__DB_POSITION Dbc::dup@DB_POSITION
__APIREL__/api_cxx/dbc_get.html__OCT__DB_CURRENT Dbc::get@DB_CURRENT
__APIREL__/api_cxx/dbc_get.html__OCT__DB_FIRST Dbc::get@DB_FIRST
@@ -100,6 +110,7 @@ __APIREL__/api_cxx/dbc_get.html__OCT__DB_NEXT Dbc::get@DB_NEXT
__APIREL__/api_cxx/dbc_get.html__OCT__DB_NEXT_DUP Dbc::get@DB_NEXT_DUP
__APIREL__/api_cxx/dbc_get.html__OCT__DB_NEXT_NODUP Dbc::get@DB_NEXT_NODUP
__APIREL__/api_cxx/dbc_get.html__OCT__DB_PREV Dbc::get@DB_PREV
+__APIREL__/api_cxx/dbc_get.html__OCT__DB_PREV_DUP Dbc::get@DB_PREV_DUP
__APIREL__/api_cxx/dbc_get.html__OCT__DB_PREV_NODUP Dbc::get@DB_PREV_NODUP
__APIREL__/api_cxx/dbc_get.html__OCT__DB_SET Dbc::get@DB_SET
__APIREL__/api_cxx/dbc_get.html__OCT__DB_SET_RANGE Dbc::get@DB_SET_RANGE
@@ -114,14 +125,21 @@ __APIREL__/api_cxx/dbc_put.html__OCT__DB_CURRENT Dbc::put@DB_CURRENT
__APIREL__/api_cxx/dbc_put.html__OCT__DB_KEYFIRST Dbc::put@DB_KEYFIRST
__APIREL__/api_cxx/dbc_put.html__OCT__DB_KEYLAST Dbc::put@DB_KEYLAST
__APIREL__/api_cxx/dbc_put.html__OCT__DB_NODUPDATA Dbc::put@DB_NODUPDATA
+__APIREL__/api_cxx/dbc_set_priority.html__OCT__DB_PRIORITY_VERY_LOW Dbc::set_priority@DB_PRIORITY_VERY_LOW
+__APIREL__/api_cxx/dbc_set_priority.html__OCT__DB_PRIORITY_LOW Dbc::set_priority@DB_PRIORITY_LOW
+__APIREL__/api_cxx/dbc_set_priority.html__OCT__DB_PRIORITY_DEFAULT Dbc::set_priority@DB_PRIORITY_DEFAULT
+__APIREL__/api_cxx/dbc_set_priority.html__OCT__DB_PRIORITY_HIGH Dbc::set_priority@DB_PRIORITY_HIGH
+__APIREL__/api_cxx/dbc_set_priority.html__OCT__DB_PRIORITY_VERY_HIGH Dbc::set_priority@DB_PRIORITY_VERY_HIGH
__APIREL__/api_cxx/env_class.html__OCT__DB_CXX_NO_EXCEPTIONS DbEnv@DB_CXX_NO_EXCEPTIONS
__APIREL__/api_cxx/env_class.html__OCT__DB_RPCCLIENT DbEnv@DB_RPCCLIENT
__APIREL__/api_cxx/env_dbremove.html__OCT__DB_AUTO_COMMIT DbEnv::dbremove@DB_AUTO_COMMIT
__APIREL__/api_cxx/env_dbrename.html__OCT__DB_AUTO_COMMIT DbEnv::dbrename@DB_AUTO_COMMIT
__APIREL__/api_cxx/env_event_notify.html__OCT__DB_EVENT_PANIC DbEnv::set_event_notify@DB_EVENT_PANIC
__APIREL__/api_cxx/env_event_notify.html__OCT__DB_EVENT_REP_CLIENT DbEnv::set_event_notify@DB_EVENT_REP_CLIENT
+__APIREL__/api_cxx/env_event_notify.html__OCT__DB_EVENT_REP_ELECTED DbEnv::set_event_notify@DB_EVENT_REP_ELECTED
__APIREL__/api_cxx/env_event_notify.html__OCT__DB_EVENT_REP_MASTER DbEnv::set_event_notify@DB_EVENT_REP_MASTER
__APIREL__/api_cxx/env_event_notify.html__OCT__DB_EVENT_REP_NEWMASTER DbEnv::set_event_notify@DB_EVENT_REP_NEWMASTER
+__APIREL__/api_cxx/env_event_notify.html__OCT__DB_EVENT_REP_PERM_FAILED DbEnv::set_event_notify@DB_EVENT_REP_PERM_FAILED
__APIREL__/api_cxx/env_event_notify.html__OCT__DB_EVENT_REP_STARTUPDONE DbEnv::set_event_notify@DB_EVENT_REP_STARTUPDONE
__APIREL__/api_cxx/env_event_notify.html__OCT__DB_EVENT_WRITE_FAILED DbEnv::set_event_notify@DB_EVENT_WRITE_FAILED
__APIREL__/api_cxx/env_open.html__OCT__DB_INIT_CDB DbEnv::open@DB_INIT_CDB
@@ -169,9 +187,9 @@ __APIREL__/api_cxx/env_set_flags.html__OCT__DB_LOG_AUTOREMOVE DbEnv::set_flags@D
__APIREL__/api_cxx/env_set_flags.html__OCT__8 in memory @logs
__APIREL__/api_cxx/env_set_flags.html__OCT__DB_LOG_INMEMORY DbEnv::set_flags@DB_LOG_INMEMORY
__APIREL__/api_cxx/env_set_flags.html__OCT__DB_LOG_BUFFER_FULL DbEnv::set_flags@DB_LOG_BUFFER_FULL
+__APIREL__/api_cxx/env_set_flags.html__OCT__DB_MULTIVERSION DbEnv::set_flags@DB_MULTIVERSION
__APIREL__/api_cxx/env_set_flags.html__OCT__9 ignore @locking
__APIREL__/api_cxx/env_set_flags.html__OCT__DB_NOLOCKING DbEnv::set_flags@DB_NOLOCKING
-__APIREL__/api_cxx/env_set_flags.html__OCT__DB_MULTIVERSION DbEnv::set_flags@DB_MULTIVERSION
__APIREL__/api_cxx/env_set_flags.html__OCT__10 turn off database file @memory mapping
__APIREL__/api_cxx/env_set_flags.html__OCT__DB_NOMMAP DbEnv::set_flags@DB_NOMMAP
__APIREL__/api_cxx/env_set_flags.html__OCT__11 ignore database environment @panic
@@ -184,6 +202,7 @@ __APIREL__/api_cxx/env_set_flags.html__OCT__DB_REGION_INIT DbEnv::set_flags@DB_R
__APIREL__/api_cxx/env_set_flags.html__OCT__DB_TIME_NOTGRANTED DbEnv::set_flags@DB_TIME_NOTGRANTED
__APIREL__/api_cxx/env_set_flags.html__OCT__14 turn off synchronous @transaction commit
__APIREL__/api_cxx/env_set_flags.html__OCT__DB_TXN_NOSYNC DbEnv::set_flags@DB_TXN_NOSYNC
+__APIREL__/api_cxx/env_set_flags.html__OCT__DB_TXN_NOWAIT DbEnv::set_flags@DB_TXN_NOWAIT
__APIREL__/api_cxx/env_set_flags.html__OCT__DB_TXN_SNAPSHOT DbEnv::set_flags@DB_TXN_SNAPSHOT
__APIREL__/api_cxx/env_set_flags.html__OCT__15 turn off synchronous @transaction commit
__APIREL__/api_cxx/env_set_flags.html__OCT__DB_TXN_WRITE_NOSYNC DbEnv::set_flags@DB_TXN_WRITE_NOSYNC
@@ -202,6 +221,8 @@ __APIREL__/api_cxx/env_set_timeout.html__OCT__DB_SET_LOCK_TIMEOUT DbEnv::set_tim
__APIREL__/api_cxx/env_set_timeout.html__OCT__DB_SET_TXN_TIMEOUT DbEnv::set_timeout@DB_SET_TXN_TIMEOUT
__APIREL__/api_cxx/env_set_tmp_dir.html__OCT__2 @temporary files
__APIREL__/api_cxx/env_set_verbose.html__OCT__DB_VERB_DEADLOCK DbEnv::set_verbose@DB_VERB_DEADLOCK
+__APIREL__/api_cxx/env_set_verbose.html__OCT__DB_VERB_FILEOPS DbEnv::set_verbose@DB_VERB_FILEOPS
+__APIREL__/api_cxx/env_set_verbose.html__OCT__DB_VERB_FILEOPS_ALL DbEnv::set_verbose@DB_VERB_FILEOPS_ALL
__APIREL__/api_cxx/env_set_verbose.html__OCT__DB_VERB_RECOVERY DbEnv::set_verbose@DB_VERB_RECOVERY
__APIREL__/api_cxx/env_set_verbose.html__OCT__DB_VERB_REGISTER DbEnv::set_verbose@DB_VERB_REGISTER
__APIREL__/api_cxx/env_set_verbose.html__OCT__DB_VERB_REPLICATION DbEnv::set_verbose@DB_VERB_REPLICATION
@@ -230,6 +251,7 @@ __APIREL__/api_cxx/lock_detect.html__OCT__DB_LOCK_YOUNGEST DbEnv::lock_detect@DB
__APIREL__/api_cxx/lock_get.html__OCT__DB_LOCK_NOWAIT DbEnv::lock_get@DB_LOCK_NOWAIT
__APIREL__/api_cxx/lock_stat.html__OCT__DB_STAT_CLEAR DbEnv::lock_stat@DB_STAT_CLEAR
__APIREL__/api_cxx/lock_stat.html__OCT__DB_STAT_ALL DbEnv::lock_stat@DB_STAT_ALL
+__APIREL__/api_cxx/lock_stat.html__OCT__DB_STAT_CLEAR DbEnv::lock_stat@DB_STAT_CLEAR
__APIREL__/api_cxx/lock_stat.html__OCT__DB_STAT_LOCK_CONF DbEnv::lock_stat@DB_STAT_LOCK_CONF
__APIREL__/api_cxx/lock_stat.html__OCT__DB_STAT_LOCK_LOCKERS DbEnv::lock_stat@DB_STAT_LOCK_LOCKERS
__APIREL__/api_cxx/lock_stat.html__OCT__DB_STAT_LOCK_OBJECTS DbEnv::lock_stat@DB_STAT_LOCK_OBJECTS
@@ -277,8 +299,12 @@ __APIREL__/api_cxx/memp_fopen.html__OCT__DB_MULTIVERSION DbMpoolFile::open@DB_MU
__APIREL__/api_cxx/memp_fopen.html__OCT__DB_NOMMAP DbMpoolFile::open@DB_NOMMAP
__APIREL__/api_cxx/memp_fopen.html__OCT__DB_ODDFILESIZE DbMpoolFile::open@DB_ODDFILESIZE
__APIREL__/api_cxx/memp_fopen.html__OCT__DB_RDONLY DbMpoolFile::open@DB_RDONLY
-__APIREL__/api_cxx/memp_fput.html__OCT__DB_MPOOL_DISCARD DbMpoolFile::put@DB_MPOOL_DISCARD
-__APIREL__/api_cxx/memp_fset.html__OCT__DB_MPOOL_DISCARD DbMpoolFile::set@DB_MPOOL_DISCARD
+__APIREL__/api_cxx/memp_fput.html__OCT__DB_PRIORITY_UNCHANGED DbMpoolFile::put@DB_PRIORITY_UNCHANGED
+__APIREL__/api_cxx/memp_fput.html__OCT__DB_PRIORITY_VERY_LOW DbMpoolFile::put@DB_PRIORITY_VERY_LOW
+__APIREL__/api_cxx/memp_fput.html__OCT__DB_PRIORITY_LOW DbMpoolFile::put@DB_PRIORITY_LOW
+__APIREL__/api_cxx/memp_fput.html__OCT__DB_PRIORITY_DEFAULT DbMpoolFile::put@DB_PRIORITY_DEFAULT
+__APIREL__/api_cxx/memp_fput.html__OCT__DB_PRIORITY_HIGH DbMpoolFile::put@DB_PRIORITY_HIGH
+__APIREL__/api_cxx/memp_fput.html__OCT__DB_PRIORITY_VERY_HIGH DbMpoolFile::put@DB_PRIORITY_VERY_HIGH
__APIREL__/api_cxx/memp_set_flags.html__OCT__DB_MPOOL_NOFILE DbMpoolFile::set_flags@DB_MPOOL_NOFILE
__APIREL__/api_cxx/memp_set_flags.html__OCT__DB_MPOOL_UNLINK DbMpoolFile::set_flags@DB_MPOOL_UNLINK
__APIREL__/api_cxx/memp_set_priority.html__OCT__DB_PRIORITY_VERY_LOW DbMpoolFile::set_priority@DB_PRIORITY_VERY_LOW
@@ -287,10 +313,10 @@ __APIREL__/api_cxx/memp_set_priority.html__OCT__DB_PRIORITY_DEFAULT DbMpoolFile:
__APIREL__/api_cxx/memp_set_priority.html__OCT__DB_PRIORITY_HIGH DbMpoolFile::set_priority@DB_PRIORITY_HIGH
__APIREL__/api_cxx/memp_set_priority.html__OCT__DB_PRIORITY_VERY_HIGH DbMpoolFile::set_priority@DB_PRIORITY_VERY_HIGH
__APIREL__/api_cxx/memp_stat.html__OCT__DB_STAT_CLEAR DbEnv::memp_stat@DB_STAT_CLEAR
-__APIREL__/api_cxx/memp_stat.html__OCT__DB_STAT_CLEAR DbEnv::memp_stat@DB_STAT_CLEAR
__APIREL__/api_cxx/memp_stat.html__OCT__DB_STAT_ALL DbEnv::memp_stat@DB_STAT_ALL
+__APIREL__/api_cxx/memp_stat.html__OCT__DB_STAT_CLEAR DbEnv::memp_stat@DB_STAT_CLEAR
__APIREL__/api_cxx/memp_stat.html__OCT__DB_STAT_MEMP_HASH DbEnv::memp_stat@DB_STAT_MEMP_HASH
-__APIREL__/api_cxx/memp_class.html__OCT__DB_BUFFER_SMALL DbMemoryException@DB_BUFFER_SMALL
+__APIREL__/api_cxx/memp_class.html__OCT__2 @DB_BUFFER_SMALL
__APIREL__/api_cxx/mutex_alloc.html__OCT__DB_MUTEX_PROCESS_ONLY DbEnv::mutex_alloc@DB_MUTEX_PROCESS_ONLY
__APIREL__/api_cxx/mutex_alloc.html__OCT__DB_MUTEX_SELF_BLOCK DbEnv::mutex_alloc@DB_MUTEX_SELF_BLOCK
__APIREL__/api_cxx/mutex_stat.html__OCT__DB_STAT_CLEAR DbEnv::mutex_stat@DB_STAT_CLEAR
@@ -306,7 +332,6 @@ __APIREL__/api_cxx/rep_message.html__OCT__DB_REP_HOLDELECTION DbEnv::rep_process
__APIREL__/api_cxx/rep_message.html__OCT__DB_REP_IGNORE DbEnv::rep_process_message@DB_REP_IGNORE
__APIREL__/api_cxx/rep_message.html__OCT__DB_REP_ISPERM DbEnv::rep_process_message@DB_REP_ISPERM
__APIREL__/api_cxx/rep_message.html__OCT__DB_REP_JOIN_FAILURE DbEnv::rep_process_message@DB_REP_JOIN_FAILURE
-__APIREL__/api_cxx/rep_message.html__OCT__DB_REP_NEWMASTER DbEnv::rep_process_message@DB_REP_NEWMASTER
__APIREL__/api_cxx/rep_message.html__OCT__DB_REP_NEWSITE DbEnv::rep_process_message@DB_REP_NEWSITE
__APIREL__/api_cxx/rep_message.html__OCT__DB_REP_NOTPERM DbEnv::rep_process_message@DB_REP_NOTPERM
__APIREL__/api_cxx/rep_start.html__OCT__DB_REP_CLIENT DbEnv::rep_start@DB_REP_CLIENT
@@ -315,9 +340,11 @@ __APIREL__/api_cxx/rep_stat.html__OCT__DB_STAT_CLEAR DbEnv::rep_stat@DB_STAT_CLE
__APIREL__/api_cxx/rep_stat.html__OCT__DB_STAT_ALL DbEnv::rep_stat@DB_STAT_ALL
__APIREL__/api_cxx/rep_stat.html__OCT__DB_STAT_CLEAR DbEnv::rep_stat@DB_STAT_CLEAR
__APIREL__/api_cxx/rep_timeout.html__OCT__DB_REP_ACK_TIMEOUT DbEnv::rep_set_timeout@DB_REP_ACK_TIMEOUT
+__APIREL__/api_cxx/rep_timeout.html__OCT__DB_REP_CHECKPOINT_DELAY DbEnv::rep_set_timeout@DB_REP_CHECKPOINT_DELAY
+__APIREL__/api_cxx/rep_timeout.html__OCT__DB_REP_CONNECTION_RETRY DbEnv::rep_set_timeout@DB_REP_CONNECTION_RETRY
__APIREL__/api_cxx/rep_timeout.html__OCT__DB_REP_ELECTION_TIMEOUT DbEnv::rep_set_timeout@DB_REP_ELECTION_TIMEOUT
__APIREL__/api_cxx/rep_timeout.html__OCT__DB_REP_ELECTION_RETRY DbEnv::rep_set_timeout@DB_REP_ELECTION_RETRY
-__APIREL__/api_cxx/rep_timeout.html__OCT__DB_REP_CONNECTION_RETRY DbEnv::rep_set_timeout@DB_REP_CONNECTION_RETRY
+__APIREL__/api_cxx/rep_timeout.html__OCT__DB_REP_FULL_ELECTION_TIMEOUT DbEnv::rep_set_timeout@DB_REP_FULL_ELECTION_TIMEOUT
__APIREL__/api_cxx/rep_transport.html__OCT__2 @DB_EID_BROADCAST
__APIREL__/api_cxx/rep_transport.html__OCT__DB_REP_ANYWHERE DbEnv::rep_set_transport@DB_REP_ANYWHERE
__APIREL__/api_cxx/rep_transport.html__OCT__DB_REP_NOBUFFER DbEnv::rep_set_transport@DB_REP_NOBUFFER
@@ -335,7 +362,9 @@ __APIREL__/api_cxx/repmgr_site_list.html__OCT__DB_REPMGR_DISCONNECTED DbEnv::rep
__APIREL__/api_cxx/repmgr_start.html__OCT__DB_REP_MASTER DbEnv::repmgr_start@DB_REP_MASTER
__APIREL__/api_cxx/repmgr_start.html__OCT__DB_REP_CLIENT DbEnv::repmgr_start@DB_REP_CLIENT
__APIREL__/api_cxx/repmgr_start.html__OCT__DB_REP_ELECTION DbEnv::repmgr_start@DB_REP_ELECTION
-__APIREL__/api_cxx/repmgr_start.html__OCT__DB_REP_FULL_ELECTION DbEnv::repmgr_start@DB_REP_FULL_ELECTION
+__APIREL__/api_cxx/repmgr_stat.html__OCT__DB_STAT_CLEAR DbEnv::repmgr_stat@DB_STAT_CLEAR
+__APIREL__/api_cxx/repmgr_stat.html__OCT__DB_STAT_ALL DbEnv::repmgr_stat@DB_STAT_ALL
+__APIREL__/api_cxx/repmgr_stat.html__OCT__DB_STAT_CLEAR DbEnv::repmgr_stat@DB_STAT_CLEAR
__APIREL__/api_cxx/seq_get.html__OCT__DB_TXN_NOSYNC DbSequence::get@DB_TXN_NOSYNC
__APIREL__/api_cxx/seq_open.html__OCT__DB_CREATE DbSequence::open@DB_CREATE
__APIREL__/api_cxx/seq_open.html__OCT__DB_EXCL DbSequence::open@DB_EXCL
@@ -354,6 +383,8 @@ __APIREL__/api_cxx/txn_begin.html__OCT__DB_TXN_NOWAIT DbEnv::txn_begin@DB_TXN_NO
__APIREL__/api_cxx/txn_begin.html__OCT__DB_TXN_SNAPSHOT DbEnv::txn_begin@DB_TXN_SNAPSHOT
__APIREL__/api_cxx/txn_begin.html__OCT__DB_LOCK_DEADLOCK DbEnv::txn_begin@DB_LOCK_DEADLOCK
__APIREL__/api_cxx/txn_begin.html__OCT__DB_TXN_SYNC DbEnv::txn_begin@DB_TXN_SYNC
+__APIREL__/api_cxx/txn_begin.html__OCT__DB_TXN_WAIT DbEnv::txn_begin@DB_TXN_WAIT
+__APIREL__/api_cxx/txn_begin.html__OCT__DB_TXN_WRITE_NOSYNC DbEnv::txn_begin@DB_TXN_WRITE_NOSYNC
__APIREL__/api_cxx/txn_checkpoint.html__OCT__DB_FORCE DbEnv::txn_checkpoint@DB_FORCE
__APIREL__/api_cxx/txn_commit.html__OCT__DB_TXN_NOSYNC DbTxn::commit@DB_TXN_NOSYNC
__APIREL__/api_cxx/txn_commit.html__OCT__DB_TXN_SYNC DbTxn::commit@DB_TXN_SYNC
diff --git a/db/docs/api_cxx/rep_config.html b/db/docs/api_cxx/rep_config.html
index ceaeb0d77..6661e50b4 100644
--- a/db/docs/api_cxx/rep_config.html
+++ b/db/docs/api_cxx/rep_config.html
@@ -1,6 +1,5 @@
-<!--$Id: rep_config.so,v 1.3 2006/07/14 23:08:59 alanb Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: rep_config.so,v 1.4 2007/02/13 19:32:52 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -62,8 +61,6 @@ single network transfer (defaults to off).
unsynchronized until the application calls the <a href="../api_cxx/rep_sync.html">DbEnv::rep_sync</a> method.
<dt><a name="DB_REP_CONF_NOAUTOINIT">DB_REP_CONF_NOAUTOINIT</a><dd>The replication master will not automatically re-initialize outdated
clients (defaults to off).
-<p>The DB_REP_CONF_NOAUTOINIT flag is not supported by Replication
-Manager.</p>
<dt><a name="DB_REP_CONF_NOWAIT">DB_REP_CONF_NOWAIT</a><dd>Berkeley DB method calls that would normally block while clients are in
recovery will return errors immediately (defaults to off).
</dl>
@@ -106,6 +103,6 @@ otherwise on.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/rep_elect.html b/db/docs/api_cxx/rep_elect.html
index 673c62bce..d0784b46b 100644
--- a/db/docs/api_cxx/rep_elect.html
+++ b/db/docs/api_cxx/rep_elect.html
@@ -1,6 +1,5 @@
-<!--$Id: rep_elect.so,v 1.24 2006/06/23 01:28:47 alanb Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: rep_elect.so,v 1.26 2007/03/20 20:20:26 alanb Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -23,7 +22,7 @@
#include &lt;db_cxx.h&gt;
<p>
int
-DbEnv::rep_elect(int nsites, int nvotes, int *envid, u_int32_t flags);
+DbEnv::rep_elect(int nsites, int nvotes, u_int32_t flags);
</pre></h3>
<hr size=1 noshade>
<h3>Description: DbEnv::rep_elect</h3>
@@ -34,19 +33,19 @@ applications. It should only be called by applications implementing
their own network transport layer, explicitly holding replication group
elections and handling replication messages outside of the replication
manager framework.</p>
-<p>If the election is successful, the new master's ID may be the ID of the
-previous master, or the ID of the current replication site. The
+<p>If the election is successful, Berkeley DB will notify the application of
+the results of the election by means of either the
+<a href="../api_cxx/env_event_notify.html#DB_EVENT_REP_ELECTED">DB_EVENT_REP_ELECTED</a> or <a href="../api_cxx/env_event_notify.html#DB_EVENT_REP_NEWMASTER">DB_EVENT_REP_NEWMASTER</a> events
+(see <a href="../api_cxx/env_event_notify.html">DbEnv::set_event_notify</a> method for more information). The
application is responsible for adjusting its relationship to the other
-database environments in the replication group, including directing all
-database updates to the newly selected master, in accordance with the
-results of this election.</p>
+database environments in the replication group, including directing
+all database updates to the newly selected master, in accordance with
+the results of the election.</p>
<p>The thread of control that calls the DbEnv::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>
<h3>Parameters</h3>
<dl compact>
-<dt><b>envid</b><dd>The <b>envid</b> parameter references memory into which
- the newly elected master's ID is copied.
<dt><b>nsites</b><dd>The <b>nsites</b> parameter specifies the number of replication sites
expected to participate in the election. Once the current site has
election information from that many sites, it will short-circuit the
@@ -91,7 +90,10 @@ sites all restarting at the same time, it makes more sense to set
known missing site. Furthermore, in order to ensure the best choice
from among sites that may take longer to boot than the local site,
setting <b>nvotes</b> also to this same total number of sites will
-guarantee that every site in the group is considered. (See the
+guarantee that every site in the group is considered. Alternatively,
+using the special timeout for full elections allows full participation
+on restart but allows election of a master if one site does not
+reboot and rejoin the group in a reasonable amount of time. (See the
<a href="../ref/rep/elect.html">Elections</a>
section in the Berkeley DB Reference Guide for more information.)</p>
<p>Setting <b>nsites</b> to lower values can increase the speed of an
@@ -118,6 +120,6 @@ complete the election in the election timeout period (see
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/rep_limit.html b/db/docs/api_cxx/rep_limit.html
index de5b162f8..fbfc2ff05 100644
--- a/db/docs/api_cxx/rep_limit.html
+++ b/db/docs/api_cxx/rep_limit.html
@@ -1,6 +1,5 @@
-<!--$Id: rep_limit.so,v 1.22 2006/03/15 19:39:22 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: rep_limit.so,v 1.25 2006/11/30 21:19:38 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -34,6 +33,10 @@ DbEnv::rep_get_limit(u_int32_t *gbytesp, u_int32_t *bytesp);
that will be transmitted from a site in response to a single message
processed by the <a href="../api_cxx/rep_message.html">DbEnv::rep_process_message</a> method. The limit is not a hard limit,
and the record that exceeds the limit is the last record to be sent.</p>
+<p>Record transmission throttling is turned on by default with a limit of
+10MB.</p>
+<p>If the values passed to the DbEnv::rep_set_limit method are both zero, then
+the transmission limit is turned off.</p>
<p>The DbEnv::rep_set_limit method configures a database environment, not only operations
performed using the specified <a href="../api_cxx/env_class.html">DbEnv</a> handle.</p>
<p>The DbEnv::rep_set_limit method may be called at any time during the life of the
@@ -75,6 +78,6 @@ failure, and returns 0 on success.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/rep_list.html b/db/docs/api_cxx/rep_list.html
index f9cc9ebe5..8045d8266 100644
--- a/db/docs/api_cxx/rep_list.html
+++ b/db/docs/api_cxx/rep_list.html
@@ -1,6 +1,5 @@
<!--$Id: rep_list.so,v 1.1 2002/08/30 20:02:36 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -10,7 +9,7 @@
</head>
<body bgcolor=white>
<h3 align=center>Berkeley DB: Replication and Related Methods</h3>
-<!--$Id: m4.methods,v 1.8 2006/09/07 16:17:58 bostic Exp $-->
+<!--$Id: m4.methods,v 1.10 2007/06/22 16:57:17 bostic Exp $-->
<table border=1 align=center>
<tr><th>Replication Manager Methods</th><th>Description</th></tr>
<!--DbEnv::repmgr_add_remote_site--><tr><td><a href="../api_cxx/repmgr_remote_site.html">DbEnv::repmgr_add_remote_site</a></td><td>Specify the replication manager's remote sites</td></tr>
@@ -18,6 +17,7 @@
<!--DbEnv::repmgr_set_local_site--><tr><td><a href="../api_cxx/repmgr_local_site.html">DbEnv::repmgr_set_local_site</a></td><td>Specify the replication manager's local site</td></tr>
<!--DbEnv::repmgr_site_list--><tr><td><a href="../api_cxx/repmgr_site_list.html">DbEnv::repmgr_site_list</a></td><td>List the sites and their status</td></tr>
<!--DbEnv::repmgr_start--><tr><td><a href="../api_cxx/repmgr_start.html">DbEnv::repmgr_start</a></td><td>Start the replication manager</td></tr>
+<!--DbEnv::repmgr_stat--><tr><td><a href="../api_cxx/repmgr_stat.html">DbEnv::repmgr_stat</a></td><td>Replication manager statistics</td></tr>
<tr><th>Base Replication API</th><th><br></th></tr>
<!--DbEnv::rep_elect--><tr><td><a href="../api_cxx/rep_elect.html">DbEnv::rep_elect</a></td><td>Hold a replication election</td></tr>
<!--DbEnv::rep_process_message--><tr><td><a href="../api_cxx/rep_message.html">DbEnv::rep_process_message</a></td><td>Process a replication message</td></tr>
@@ -30,9 +30,10 @@
<!--DbEnv::rep_set_limit--><tr><td><a href="../api_cxx/rep_limit.html">DbEnv::rep_set_limit</a></td><td>Limit data sent in response to a single message</td></tr>
<!--DbEnv::rep_set_nsites--><tr><td><a href="../api_cxx/rep_nsites.html">DbEnv::rep_set_nsites</a></td><td>Configure replication group site count</td></tr>
<!--DbEnv::rep_set_priority--><tr><td><a href="../api_cxx/rep_priority.html">DbEnv::rep_set_priority</a></td><td>Configure replication site priority</td></tr>
+<!--DbEnv::rep_set_request--><tr><td><a href="../api_cxx/rep_request.html">DbEnv::rep_set_request</a></td><td>Configure replication client retransmission requests</td></tr>
<!--DbEnv::rep_set_timeout--><tr><td><a href="../api_cxx/rep_timeout.html">DbEnv::rep_set_timeout</a></td><td>Configure replication timeouts</td></tr>
<!--DbEnv::rep_set_transport--><tr><td><a href="../api_cxx/rep_transport.html">DbEnv::rep_set_transport</a></td><td>Configure replication transport callback</td></tr>
</table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/rep_message.html b/db/docs/api_cxx/rep_message.html
index d05a31b3a..c327e0c20 100644
--- a/db/docs/api_cxx/rep_message.html
+++ b/db/docs/api_cxx/rep_message.html
@@ -1,6 +1,5 @@
-<!--$Id: rep_message.so,v 1.38 2006/06/24 00:33:22 alanb Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: rep_message.so,v 1.39 2007/03/20 20:20:26 alanb Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -23,7 +22,7 @@
#include &lt;db_cxx.h&gt;
<p>
int
-DbEnv::rep_process_message(Dbt *control, Dbt *rec, int *envid, DbLsn *ret_lsnp)
+DbEnv::rep_process_message(Dbt *control, Dbt *rec, int envid, DbLsn *ret_lsnp)
</pre></h3>
<hr size=1 noshade>
<h3>Description: DbEnv::rep_process_message</h3>
@@ -71,13 +70,6 @@ with the new master (possibly because the client has been configured
with the <a href="../api_cxx/rep_config.html#DB_REP_CONF_NOAUTOINIT">DB_REP_CONF_NOAUTOINIT</a> flag to turn-off automatic
internal initialization).
</p>
-<dt><a name="DB_REP_NEWMASTER">DB_REP_NEWMASTER</a><dd>
-<p>The DbEnv::rep_process_message method will return DB_REP_NEWMASTER if a new master has been chosen.
-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>
<dt><a name="DB_REP_NEWSITE">DB_REP_NEWSITE</a><dd>
<p>The DbEnv::rep_process_message method will return DB_REP_NEWSITE if the system received contact information from a new environment.
The <b>rec</b> parameter contains the opaque data specified in the
@@ -126,6 +118,6 @@ cases the value of <b>ret_lsnp</b> is undefined.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/rep_nsites.html b/db/docs/api_cxx/rep_nsites.html
index bfdc3c35e..e2fefd353 100644
--- a/db/docs/api_cxx/rep_nsites.html
+++ b/db/docs/api_cxx/rep_nsites.html
@@ -1,6 +1,5 @@
<!--$Id: rep_nsites.so,v 1.2 2006/06/23 01:28:47 alanb Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -74,6 +73,6 @@ total number of sites in the replication group in <b>nsitesp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/rep_priority.html b/db/docs/api_cxx/rep_priority.html
index 98e464bbf..6a3d8fdda 100644
--- a/db/docs/api_cxx/rep_priority.html
+++ b/db/docs/api_cxx/rep_priority.html
@@ -1,6 +1,5 @@
<!--$Id: rep_priority.so,v 1.1 2006/03/15 19:39:22 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -72,6 +71,6 @@ database environment priority in <b>priorityp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/rep_request.html b/db/docs/api_cxx/rep_request.html
new file mode 100644
index 000000000..759526c5f
--- /dev/null
+++ b/db/docs/api_cxx/rep_request.html
@@ -0,0 +1,98 @@
+<!--$Id: rep_request.so,v 1.2 2006/11/30 22:28:28 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
+<!--See the file LICENSE for redistribution information.-->
+<html>
+<head>
+<title>Berkeley DB: DbEnv::rep_set_request</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
+</head>
+<body bgcolor=white>
+<table width="100%"><tr valign=top>
+<td>
+<h3>DbEnv::rep_set_request</h3>
+</td>
+<td align=right>
+<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a>
+<a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a></td>
+</tr></table>
+<hr size=1 noshade>
+<tt>
+<h3><pre>
+#include &lt;db_cxx.h&gt;
+<p>
+int
+DbEnv::rep_set_request(u_int32_t min, u_int32_t max);
+<p>
+int
+DbEnv::rep_get_request(u_int32_t *minp, u_int32_t *maxp);
+</pre></h3>
+<hr size=1 noshade>
+<h3>Description: DbEnv::rep_set_request</h3>
+<p>The DbEnv::rep_set_request method sets the minimum and maximum number of
+missing log records that a client waits before requesting
+retransmission. Specifically, if a log record is missing, Berkeley DB will
+wait for <b>min</b> more records to arrive before requesting
+retransmission of the missing record. Berkeley DB will wait double that
+amount before requesting the same missing record again, and so on, up
+to a maximum wait of <b>max</b> records.</p>
+<p>By default the minimum is 4 and the maximum is 128, and applications
+rarely need to use values other than the defaults.</p>
+<p>The DbEnv::rep_set_request method configures a database environment, not only operations
+performed using the specified <a href="../api_cxx/env_class.html">DbEnv</a> handle.</p>
+<p>The DbEnv::rep_set_request method may be called at any time during the life of the
+application.</p>
+<p>The DbEnv::rep_set_request 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.
+</p>
+<h3>Parameters</h3>
+<dl compact>
+<dt><b>max</b><dd>The maximum number of missing log records a client waits before
+requesting retransmission.
+<dt><b>min</b><dd>The minimum number of missing log records a client waits before
+requesting retransmission.
+</dl>
+<h3>Errors</h3>
+<p>The DbEnv::rep_set_request method
+may fail and throw
+<a href="../api_cxx/except_class.html">DbException</a>,
+encapsulating one of the following non-zero errors, or return one of
+the following non-zero errors:</p>
+<dl compact>
+<dt>EINVAL<dd>An
+invalid flag value or parameter was specified.
+</dl>
+<hr size=1 noshade>
+<h3>Description: DbEnv::rep_get_request</h3>
+<p>The DbEnv::rep_get_request method returns the minimum and maximum number of
+missing log records a client waits before requesting retransmission.</p>
+<p>The DbEnv::rep_get_request method may be called at any time during the life of the
+application.</p>
+<p>The DbEnv::rep_get_request 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.
+</p>
+<h3>Parameters</h3>
+<dl compact>
+<dt><b>maxp</b><dd>The <b>maxp</b> parameter references memory into which
+ the maximum number of missing log records a client will wait before requesting
+retransmission is copied.
+<dt><b>minp</b><dd>The <b>minp</b> parameter references memory into which
+ the minimum number of missing log records a client will wait before requesting
+retransmission is copied.
+</dl>
+<hr size=1 noshade>
+<h3>Class</h3>
+<a href="../api_cxx/env_class.html">DbEnv</a>
+<h3>See Also</h3>
+<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/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
+</body>
+</html>
diff --git a/db/docs/api_cxx/rep_start.html b/db/docs/api_cxx/rep_start.html
index c9dc432f0..d8f8ed95e 100644
--- a/db/docs/api_cxx/rep_start.html
+++ b/db/docs/api_cxx/rep_start.html
@@ -1,6 +1,5 @@
<!--$Id: rep_start.so,v 1.17 2006/03/15 19:39:22 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -81,6 +80,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/rep_stat.html b/db/docs/api_cxx/rep_stat.html
index 0844a45de..b99e5b88e 100644
--- a/db/docs/api_cxx/rep_stat.html
+++ b/db/docs/api_cxx/rep_stat.html
@@ -1,6 +1,5 @@
-<!--$Id: rep_stat.so,v 10.39 2005/11/11 19:00:31 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: rep_stat.so,v 10.42 2007/06/22 16:57:17 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -87,7 +86,7 @@ time is <b>st_election_sec</b> plus <b>st_election_usec</b>).
<dt>u_int32_t st_log_queued_max;<dd>The maximum number of log records ever queued at once.
<dt>u_int32_t st_log_queued_total;<dd>The total number of log records queued.
<dt>u_int32_t st_log_records;<dd>The number of log records received and appended to the log.
-<dt>u_int32_t st_log_requested;<dd>The number of log records missed and requested.
+<dt>u_int32_t st_log_requested;<dd>The number of times log records were missed and requested.
<dt>u_int32_t st_master;<dd>The current master environment ID.
<dt>u_int32_t st_master_changes;<dd>The number of times the master has changed.
<dt>u_int32_t st_msgs_badgen;<dd>The number of messages received with a bad generation number.
@@ -107,6 +106,9 @@ to a single call to <a href="../api_cxx/rep_message.html">DbEnv::rep_process_mes
<dt>u_int32_t st_pg_duplicated;<dd>The number of duplicate pages received.
<dt>u_int32_t st_pg_records;<dd>The number of pages received and stored.
<dt>u_int32_t st_pg_requested;<dd>The number of pages missed and requested from the master.
+<dt>u_int32_t st_startsync_delayed;<dd>The number of times the client had to delay the start of a
+cache flush operation (initiated by the master for an impending
+checkpoint) because it was missing some previous log record(s).
<dt>u_int32_t st_startup_complete;<dd>The client site has completed its startup procedures and is now
handling live records from the master.
<dt>u_int32_t st_status;<dd>The current replication mode. Set to <a href="../api_cxx/repmgr_start.html#DB_REP_MASTER">DB_REP_MASTER</a> if the
@@ -119,6 +121,8 @@ being waited for, or 0 if no log records are currently missing.
<dt>u_int32_t st_waiting_pg;<dd>The page number of the first page we have after missing pages
being waited for, or 0 if no pages are currently missing.
</dl>
+<p>The DbEnv::rep_stat method may not be called before the <a href="../api_cxx/env_open.html">DbEnv::open</a> method has
+been called.</p>
<p>The DbEnv::rep_stat method
either returns a non-zero error value
or throws an exception that encapsulates a non-zero error value on
@@ -177,6 +181,6 @@ or more of the following values:
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/rep_sync.html b/db/docs/api_cxx/rep_sync.html
index 23bc82f79..87c63a245 100644
--- a/db/docs/api_cxx/rep_sync.html
+++ b/db/docs/api_cxx/rep_sync.html
@@ -1,6 +1,5 @@
-<!--$Id: rep_sync.so,v 1.9 2006/07/12 20:32:35 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: rep_sync.so,v 1.10 2007/03/20 20:20:26 alanb Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -35,9 +34,8 @@ application must synchronize explicitly (otherwise the client will
remain out-of-date and will ignore all database changes forwarded from
the replication group master). The DbEnv::rep_sync method may be called any
time after the client application learns that the new master has been
-established, either by receiving a <a href="../api_cxx/env_event_notify.html#DB_EVENT_REP_NEWMASTER">DB_EVENT_REP_NEWMASTER</a> event
-notification, or from a <a href="../api_cxx/rep_message.html#DB_REP_NEWMASTER">DB_REP_NEWMASTER</a> return code from
-<a href="../api_cxx/rep_message.html">DbEnv::rep_process_message</a>.</p>
+established (by receiving a <a href="../api_cxx/env_event_notify.html#DB_EVENT_REP_NEWMASTER">DB_EVENT_REP_NEWMASTER</a> event
+notification).</p>
<p>The DbEnv::rep_sync method may not be called before the <a href="../api_cxx/env_open.html">DbEnv::open</a> method has
been called.</p>
<p>The DbEnv::rep_sync method
@@ -58,6 +56,6 @@ failure, and returns 0 on success.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/rep_timeout.html b/db/docs/api_cxx/rep_timeout.html
index ebe203f09..459ca3a16 100644
--- a/db/docs/api_cxx/rep_timeout.html
+++ b/db/docs/api_cxx/rep_timeout.html
@@ -1,6 +1,5 @@
-<!--$Id: rep_timeout.so,v 1.3 2006/06/30 23:05:16 alanb Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: rep_timeout.so,v 1.5 2007/03/02 18:46:41 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -49,12 +48,22 @@ failure, and returns 0 on success.
function waits to collect enough acknowledgments from replication group
clients, before giving up and returning a failure indication. The
default wait time is 1 second.
-<dt><a name="DB_REP_ELECTION_TIMEOUT">DB_REP_ELECTION_TIMEOUT</a><dd>The timeout period for an election. The default timeout is 2 seconds.
-<dt><a name="DB_REP_ELECTION_RETRY">DB_REP_ELECTION_RETRY</a><dd>Configure the amount of time the replication manager will wait before
-retrying a failed election. The default wait time is 10 seconds.
+<dt><a name="DB_REP_CHECKPOINT_DELAY">DB_REP_CHECKPOINT_DELAY</a><dd>Configure the amount of time the replication manager will delay between
+completing a checkpoint and writing a checkpoint record into the log.
+This delay allows clients to complete their own checkpoints before the
+master requires completion of them. The default is 30 seconds.
<dt><a name="DB_REP_CONNECTION_RETRY">DB_REP_CONNECTION_RETRY</a><dd>Configure the amount of time the replication manager will wait before
trying to re-establish a connection to another site after a communication
failure. The default wait time is 30 seconds.
+<dt><a name="DB_REP_ELECTION_TIMEOUT">DB_REP_ELECTION_TIMEOUT</a><dd>The timeout period for an election. The default timeout is 2 seconds.
+<dt><a name="DB_REP_ELECTION_RETRY">DB_REP_ELECTION_RETRY</a><dd>Configure the amount of time the replication manager will wait before
+retrying a failed election. The default wait time is 10 seconds.
+<dt><a name="DB_REP_FULL_ELECTION_TIMEOUT">DB_REP_FULL_ELECTION_TIMEOUT</a><dd>An optional configuration timeout period to wait for full election
+participation the first time the replication group finds a master.
+By default this option is turned off and normal election
+timeouts are used.
+(See the <a href="../ref/rep/elect.html">Elections</a>
+section in the Berkeley DB Reference Guide for more information.)
</dl>
<dt><b>timeout</b><dd>The <b>timeout</b> parameter is the timeout value. It must be specified
as an unsigned 32-bit number of microseconds, limiting the maximum timeout
@@ -97,6 +106,6 @@ is being returned.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/rep_transport.html b/db/docs/api_cxx/rep_transport.html
index 8b6928618..809af571e 100644
--- a/db/docs/api_cxx/rep_transport.html
+++ b/db/docs/api_cxx/rep_transport.html
@@ -1,6 +1,5 @@
<!--$Id: rep_transport.so,v 1.35 2006/06/05 23:03:53 alanb Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -124,6 +123,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/repmgr_ack_policy.html b/db/docs/api_cxx/repmgr_ack_policy.html
index 25dda52a5..a7fdf9e71 100644
--- a/db/docs/api_cxx/repmgr_ack_policy.html
+++ b/db/docs/api_cxx/repmgr_ack_policy.html
@@ -1,6 +1,5 @@
<!--$Id: repmgr_ack_policy.so,v 1.5 2006/09/07 19:26:44 alanb Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -97,6 +96,6 @@ replication manager's client acknowledgment policy in <b>ack_policyp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/repmgr_local_site.html b/db/docs/api_cxx/repmgr_local_site.html
index 98059f90d..30a21468b 100644
--- a/db/docs/api_cxx/repmgr_local_site.html
+++ b/db/docs/api_cxx/repmgr_local_site.html
@@ -1,6 +1,5 @@
<!--$Id: repmgr_local_site.so,v 1.2 2006/04/27 18:07:38 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -51,6 +50,6 @@ failure, and returns 0 on success.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/repmgr_remote_site.html b/db/docs/api_cxx/repmgr_remote_site.html
index 7bf3e0782..35acc62ab 100644
--- a/db/docs/api_cxx/repmgr_remote_site.html
+++ b/db/docs/api_cxx/repmgr_remote_site.html
@@ -1,6 +1,5 @@
<!--$Id: repmgr_remote_site.so,v 1.5 2006/09/08 18:33:38 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -63,6 +62,6 @@ peer, and the last specified peer is used.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/repmgr_site_list.html b/db/docs/api_cxx/repmgr_site_list.html
index 1217cb903..9d920496a 100644
--- a/db/docs/api_cxx/repmgr_site_list.html
+++ b/db/docs/api_cxx/repmgr_site_list.html
@@ -1,6 +1,5 @@
<!--$Id: repmgr_site_list.so,v 1.7 2006/09/11 16:57:54 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -72,6 +71,6 @@ referenced by <b>listp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/repmgr_start.html b/db/docs/api_cxx/repmgr_start.html
index 9d34984a9..55a64639c 100644
--- a/db/docs/api_cxx/repmgr_start.html
+++ b/db/docs/api_cxx/repmgr_start.html
@@ -1,6 +1,5 @@
-<!--$Id: repmgr_start.so,v 1.3 2006/07/14 23:08:18 alanb Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: repmgr_start.so,v 1.6 2006/11/30 21:19:38 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -72,11 +71,6 @@ only one site at a time should ever be started with the
DB_REP_MASTER flag specified.
<dt><a name="DB_REP_CLIENT">DB_REP_CLIENT</a><dd>Start as a client site, and do not call for an election.
<dt><a name="DB_REP_ELECTION">DB_REP_ELECTION</a><dd>Start as a client, and call for an election if no master is found.
-<dt><a name="DB_REP_FULL_ELECTION">DB_REP_FULL_ELECTION</a><dd>Start as a client, and call for an election if no master is found.
-<p>The <a href="../api_cxx/repmgr_start.html#DB_REP_FULL_ELECTION">DB_REP_FULL_ELECTION</a> flag configures a single special
-election on startup, where a master will only be confirmed if all
-members of the replication group vote. Subsequent elections will revert
-to only requiring a simple majority to elect a new master.</p>
</dl>
<dt><b>nthreads</b><dd>Specify the number of threads of control created and dedicated to processing
replication messages. In addition to these message processing threads,
@@ -92,6 +86,6 @@ control.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/repmgr_stat.html b/db/docs/api_cxx/repmgr_stat.html
new file mode 100644
index 000000000..8c7dbab43
--- /dev/null
+++ b/db/docs/api_cxx/repmgr_stat.html
@@ -0,0 +1,121 @@
+<!--$Id: repmgr_stat.so,v 10.1 2007/06/22 16:57:17 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
+<!--See the file LICENSE for redistribution information.-->
+<html>
+<head>
+<title>Berkeley DB: DbEnv::repmgr_stat</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
+</head>
+<body bgcolor=white>
+<table width="100%"><tr valign=top>
+<td>
+<h3>DbEnv::repmgr_stat</h3>
+</td>
+<td align=right>
+<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a>
+<a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a></td>
+</tr></table>
+<hr size=1 noshade>
+<tt>
+<h3><pre>
+#include &lt;db_cxx.h&gt;
+<p>
+int
+DbEnv::repmgr_stat(DB_REPMGR_STAT **statp, u_int32_t flags);
+<p>
+int
+DbEnv::repmgr_stat_print(u_int32_t flags);
+</pre></h3>
+<hr size=1 noshade>
+<h3>Description: DbEnv::repmgr_stat</h3>
+<p>The DbEnv::repmgr_stat method returns the replication manager statistics.</p>
+<p>The DbEnv::repmgr_stat method creates a statistical structure of type
+DB_REPMGR_STAT and copies a pointer to it into a user-specified memory
+location.</p>
+<p>Statistical structures are stored in allocated memory. If application-specific allocation
+routines have been declared (see <a href="../api_cxx/env_set_alloc.html">DbEnv::set_alloc</a> for more
+information), they are used to allocate the memory; otherwise, the
+standard C library <b>malloc</b>(3) is used. The caller is
+responsible for deallocating the memory. To deallocate the memory, free
+the memory reference; references inside the returned memory need not be
+individually freed.</p>
+<p>The following DB_REPMGR_STAT fields will be filled in:</p>
+<dl compact>
+<dt>u_int32_t st_perm_failed;<dd>The number of times a message critical for maintaining database
+integrity (for example, a transaction commit), originating at this site,
+did not receive sufficient acknowledgement from clients, according to
+the configured acknowledgement policy and acknowledgement timeout.
+<dt>u_int32_t st_msgs_queued;<dd>The number of outgoing messages which could not be transmitted
+immediately, due to a full network buffer, and had to be queued for
+later delivery.
+<dt>u_int32_t st_msgs_dropped;<dd>The number of outgoing messages that were completely dropped, because
+the outgoing message queue was full. (Berkeley DB replication is tolerant of
+dropped messages, and will automatically request retransmission of any
+missing messages as needed.)
+<dt>u_int32_t st_connection_drop;<dd>The number of times an existing TCP/IP connection failed.
+<dt>u_int32_t st_connect_fail;<dd>The number of times an attempt to open a new TCP/IP connection failed.
+</dl>
+<p>The DbEnv::repmgr_stat method may not be called before the <a href="../api_cxx/env_open.html">DbEnv::open</a> method has
+been called.</p>
+<p>The DbEnv::repmgr_stat 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.
+</p>
+<h3>Parameters</h3>
+<dl compact>
+<dt><b>flags</b><dd>The <b>flags</b> parameter must be set to 0 or
+the following value:
+<dl compact>
+<dt><a name="DB_STAT_CLEAR">DB_STAT_CLEAR</a><dd>Reset statistics after returning their values.
+</dl>
+<dt><b>statp</b><dd>The <b>statp</b> parameter references memory into which
+a pointer to the allocated statistics structure is copied.
+</dl>
+<h3>Errors</h3>
+<p>The DbEnv::repmgr_stat method
+may fail and throw
+<a href="../api_cxx/except_class.html">DbException</a>,
+encapsulating one of the following non-zero errors, or return one of
+the following non-zero errors:</p>
+<dl compact>
+<dt>EINVAL<dd>An
+invalid flag value or parameter was specified.
+</dl>
+<hr size=1 noshade>
+<h3>Description: DbEnv::repmgr_stat_print</h3>
+<p>The DbEnv::repmgr_stat_print method displays the
+replication manager statistical information, as described for the DbEnv::repmgr_stat method.
+The information is printed to a specified output channel (see the
+<a href="../api_cxx/env_set_msgfile.html">DbEnv::set_msgfile</a> method for more information), or passed to an
+application callback function (see the <a href="../api_cxx/env_set_msgcall.html">DbEnv::set_msgcall</a> method for
+more information).</p>
+<p>The DbEnv::repmgr_stat_print method may not be called before the <a href="../api_cxx/env_open.html">DbEnv::open</a> method has
+been called.</p>
+<p>The DbEnv::repmgr_stat_print 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.
+</p>
+<h3>Parameters</h3>
+<dl compact>
+<dt><b>flags</b><dd>The <b>flags</b> parameter must be set to 0 or by bitwise inclusively <b>OR</b>'ing together one
+or more of the following values:
+<dl compact>
+<dt><a name="DB_STAT_ALL">DB_STAT_ALL</a><dd>Display all available information.
+<dt><a name="DB_STAT_CLEAR">DB_STAT_CLEAR</a><dd>Reset statistics after displaying their values.
+</dl>
+</dl>
+<hr size=1 noshade>
+<h3>Class</h3>
+<a href="../api_cxx/env_class.html">DbEnv</a>
+<h3>See Also</h3>
+<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/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
+</body>
+</html>
diff --git a/db/docs/api_cxx/runrec_class.html b/db/docs/api_cxx/runrec_class.html
index b10d2a956..975151c9f 100644
--- a/db/docs/api_cxx/runrec_class.html
+++ b/db/docs/api_cxx/runrec_class.html
@@ -1,6 +1,5 @@
<!--$Id: runrec_class.so,v 10.19 2004/08/13 03:38:56 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -39,6 +38,6 @@ occurs, recovery should be performed.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/seq_class.html b/db/docs/api_cxx/seq_class.html
index 8cfbfca06..96fcee860 100644
--- a/db/docs/api_cxx/seq_class.html
+++ b/db/docs/api_cxx/seq_class.html
@@ -1,6 +1,5 @@
<!--$Id: seq_class.so,v 1.12 2004/10/18 19:46:31 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -67,6 +66,6 @@ DbSequence
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/seq_close.html b/db/docs/api_cxx/seq_close.html
index 42f64fc64..449394d25 100644
--- a/db/docs/api_cxx/seq_close.html
+++ b/db/docs/api_cxx/seq_close.html
@@ -1,6 +1,5 @@
<!--$Id: seq_close.so,v 1.2 2004/08/13 03:39:02 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -59,6 +58,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/seq_get.html b/db/docs/api_cxx/seq_get.html
index bc8efc2da..1e0c39d72 100644
--- a/db/docs/api_cxx/seq_get.html
+++ b/db/docs/api_cxx/seq_get.html
@@ -1,6 +1,5 @@
<!--$Id: seq_get.so,v 1.11 2005/08/09 14:23:30 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -56,15 +55,17 @@ do not synchronously flush the log when the transaction commits.
</dl>
<dt><b>retp</b><dd><b>retp</b> points to the memory to hold the return value from
the sequence.
-<dt><b>txnid</b><dd>If the operation is part of an application-specified
-transaction, the <b>txnid</b> parameter is a transaction handle
-returned from <a href="../api_cxx/txn_begin.html">DbEnv::txn_begin</a>; if the operation is part of a Berkeley DB Concurrent Data Store
-group, the <b>txnid</b> parameter is a handle returned from
-<a href="../api_cxx/env_cdsgroup_begin.html">DbEnv::cdsgroup_begin</a>; otherwise NULL. If no transaction handle is
+<dt><b>txnid</b><dd>If the operation is part of an application-specified transaction, the
+<b>txnid</b> parameter is a transaction handle returned from
+<a href="../api_cxx/txn_begin.html">DbEnv::txn_begin</a>; if the operation is part of a Berkeley DB Concurrent Data Store group, the
+<b>txnid</b> parameter is a handle returned from
+<a href="../api_cxx/env_cdsgroup_begin.html">DbEnv::cdsgroup_begin</a>; otherwise NULL.
+If no transaction handle is
specified, but the
operation occurs in a transactional
database,
-the operation will be implicitly transaction protected. No <b>txnid</b> handle may be specified if the sequence handle was
+the operation will be implicitly transaction protected.
+No <b>txnid</b> handle may be specified if the sequence handle was
opened with a non-zero cache size.
<p>If the underlying database handle was opened in a transaction, calling
DbSequence::get may result in changes to the sequence object; these
@@ -86,6 +87,6 @@ stored in their own database.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/seq_init_value.html b/db/docs/api_cxx/seq_init_value.html
deleted file mode 100644
index 0b3a72474..000000000
--- a/db/docs/api_cxx/seq_init_value.html
+++ /dev/null
@@ -1,64 +0,0 @@
-<!--$Id: seq_init_value.so,v 1.5 2004/08/29 00:12:47 bostic Exp $-->
-<!--Copyright 1997-2004 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: DbSequence::init_value</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
-</head>
-<body bgcolor=white>
-<table width="100%"><tr valign=top>
-<td>
-<h3>DbSequence::init_value</h3>
-</td>
-<td align=right>
-<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a>
-<a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a></td>
-</tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;db_cxx.h&gt;
-<p>
-int
-DbSequence::init_value(db_seq_t value);
-</pre></h3>
-<hr size=1 noshade>
-<h3>Description: DbSequence::init_value</h3>
-<p>Set the initial value for a sequence. This call is only effective when
-the sequence is being created.</p>
-<p>The DbSequence::init_value method may not be called after the <a href="../api_cxx/seq_open.html">DbSequence::open</a>
-method is called.</p>
-<p>The DbSequence::init_value 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.
-</p>
-<h3>Parameters</h3>
-<dl compact>
-<dt><b>value</b><dd>The initial value to set.
-</dl>
-<h3>Errors</h3>
-<p>The DbSequence::init_value method
-may fail and throw
-<a href="../api_cxx/except_class.html">DbException</a>,
-encapsulating one of the following non-zero errors, or return one of
-the following non-zero errors:</p>
-<dl compact>
-<dt>EINVAL<dd>An
-invalid flag value or parameter was specified.
-</dl>
-<hr size=1 noshade>
-<h3>Class</h3>
-<a href="../api_cxx/seq_class.html">DbSequence</a>
-<h3>See Also</h3>
-<a href="../api_cxx/seq_list.html">Sequences and Related Methods</a>
-</tt>
-<table width="100%"><tr><td><br></td><td align=right>
-<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<p><font size=1><a href="../sleepycat/legal.html">Copyright (c) 1996-2004</a> <a href="http://www.sleepycat.com">Sleepycat Software, Inc.</a> - All rights reserved.</font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/seq_initial_value.html b/db/docs/api_cxx/seq_initial_value.html
index 95af3518e..b3ee13d50 100644
--- a/db/docs/api_cxx/seq_initial_value.html
+++ b/db/docs/api_cxx/seq_initial_value.html
@@ -1,6 +1,5 @@
<!--$Id: seq_initial_value.so,v 1.6 2004/11/29 15:30:23 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -59,6 +58,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/seq_list.html b/db/docs/api_cxx/seq_list.html
index 72430a117..6d488f3db 100644
--- a/db/docs/api_cxx/seq_list.html
+++ b/db/docs/api_cxx/seq_list.html
@@ -1,6 +1,5 @@
<!--$Id: seq_list.so,v 1.2 2004/08/18 02:34:52 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -27,6 +26,6 @@
<!--DbSequence::set_flags--><tr><td><a href="../api_cxx/seq_set_flags.html">DbSequence::set_flags</a></td><td>Set the flags for a sequence</td></tr>
<!--DbSequence::set_range--><tr><td><a href="../api_cxx/seq_set_range.html">DbSequence::set_range</a></td><td>Set the range for a sequence</td></tr>
</table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/seq_open.html b/db/docs/api_cxx/seq_open.html
index bfee02ecc..dbfd413b0 100644
--- a/db/docs/api_cxx/seq_open.html
+++ b/db/docs/api_cxx/seq_open.html
@@ -1,6 +1,5 @@
<!--$Id: seq_open.so,v 1.9 2005/01/20 01:15:15 ubell Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -55,15 +54,17 @@ single address space. Note that if multiple threads create multiple
sequences using the same database handle that handle must have been
opened specifying <a name="DB_THREAD">DB_THREAD</a>.
</dl>
-<dt><b>txnid</b><dd>If the operation is part of an application-specified
-transaction, the <b>txnid</b> parameter is a transaction handle
-returned from <a href="../api_cxx/txn_begin.html">DbEnv::txn_begin</a>; if the operation is part of a Berkeley DB Concurrent Data Store
-group, the <b>txnid</b> parameter is a handle returned from
-<a href="../api_cxx/env_cdsgroup_begin.html">DbEnv::cdsgroup_begin</a>; otherwise NULL. If no transaction handle is
+<dt><b>txnid</b><dd>If the operation is part of an application-specified transaction, the
+<b>txnid</b> parameter is a transaction handle returned from
+<a href="../api_cxx/txn_begin.html">DbEnv::txn_begin</a>; if the operation is part of a Berkeley DB Concurrent Data Store group, the
+<b>txnid</b> parameter is a handle returned from
+<a href="../api_cxx/env_cdsgroup_begin.html">DbEnv::cdsgroup_begin</a>; otherwise NULL.
+If no transaction handle is
specified, but the
operation occurs in a transactional
database,
-the operation will be implicitly transaction protected. Transactionally protected operations on a <a href="../api_cxx/seq_class.html">DbSequence</a> handle
+the operation will be implicitly transaction protected.
+Transactionally protected operations on a <a href="../api_cxx/seq_class.html">DbSequence</a> handle
require the <a href="../api_cxx/seq_class.html">DbSequence</a> handle itself be transactionally
protected during its open if the open creates the sequence.
</dl>
@@ -106,6 +107,6 @@ failure, and returns 0 on success.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/seq_remove.html b/db/docs/api_cxx/seq_remove.html
index 3c79239de..1c260feae 100644
--- a/db/docs/api_cxx/seq_remove.html
+++ b/db/docs/api_cxx/seq_remove.html
@@ -1,6 +1,5 @@
<!--$Id: seq_remove.so,v 1.6 2004/12/16 19:13:04 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -46,15 +45,16 @@ or more of the following values:
argument is NULL but the operation occurs to a transactional database),
do not synchronously flush the log when the transaction commits.
</dl>
-<dt><b>txnid</b><dd>If the operation is part of an application-specified
-transaction, the <b>txnid</b> parameter is a transaction handle
-returned from <a href="../api_cxx/txn_begin.html">DbEnv::txn_begin</a>; if the operation is part of a Berkeley DB Concurrent Data Store
-group, the <b>txnid</b> parameter is a handle returned from
-<a href="../api_cxx/env_cdsgroup_begin.html">DbEnv::cdsgroup_begin</a>; otherwise NULL. If no transaction handle is
+<dt><b>txnid</b><dd>If the operation is part of an application-specified transaction, the
+<b>txnid</b> parameter is a transaction handle returned from
+<a href="../api_cxx/txn_begin.html">DbEnv::txn_begin</a>; if the operation is part of a Berkeley DB Concurrent Data Store group, the
+<b>txnid</b> parameter is a handle returned from
+<a href="../api_cxx/env_cdsgroup_begin.html">DbEnv::cdsgroup_begin</a>; otherwise NULL.
+If no transaction handle is
specified, but the
operation occurs in a transactional
database,
-the operation will be implicitly transaction protected.
+the operation will be implicitly transaction protected.
</dl>
<h3>Errors</h3>
<p>The DbSequence::remove method
@@ -75,6 +75,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/seq_set_cachesize.html b/db/docs/api_cxx/seq_set_cachesize.html
index effe7d110..2b8814228 100644
--- a/db/docs/api_cxx/seq_set_cachesize.html
+++ b/db/docs/api_cxx/seq_set_cachesize.html
@@ -1,6 +1,5 @@
<!--$Id: seq_set_cachesize.so,v 1.8 2004/09/07 15:37:41 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -75,6 +74,6 @@ current cache size in <b>sizep</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/seq_set_flags.html b/db/docs/api_cxx/seq_set_flags.html
index 67070d33f..31fe5cada 100644
--- a/db/docs/api_cxx/seq_set_flags.html
+++ b/db/docs/api_cxx/seq_set_flags.html
@@ -1,6 +1,5 @@
<!--$Id: seq_set_flags.so,v 1.7 2004/09/07 15:37:41 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -88,6 +87,6 @@ current flags in <b>flagsp</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/seq_set_range.html b/db/docs/api_cxx/seq_set_range.html
index 1f38d71ed..e8b27af6e 100644
--- a/db/docs/api_cxx/seq_set_range.html
+++ b/db/docs/api_cxx/seq_set_range.html
@@ -1,6 +1,5 @@
<!--$Id: seq_set_range.so,v 1.6 2004/09/07 15:37:41 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -78,6 +77,6 @@ failure, and returns 0 on success.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/seq_stat.html b/db/docs/api_cxx/seq_stat.html
index 7e385c2eb..9857c5019 100644
--- a/db/docs/api_cxx/seq_stat.html
+++ b/db/docs/api_cxx/seq_stat.html
@@ -1,6 +1,5 @@
-<!--$Id: seq_stat.so,v 1.8 2004/09/07 15:37:41 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: seq_stat.so,v 1.9 2007/06/22 16:57:17 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -69,7 +68,9 @@ of the following values:
<dt><a name="DB_STAT_CLEAR">DB_STAT_CLEAR</a><dd>Reset statistics after printing their values.
</dl>
</dl>
-<p>The DbSequence::stat_print method
+<p>The DbSequence::stat method may not be called before the <a href="../api_cxx/seq_open.html">DbSequence::open</a> method has
+been called.</p>
+<p>The DbSequence::stat 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.
@@ -95,6 +96,6 @@ of the following values:
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/txn_abort.html b/db/docs/api_cxx/txn_abort.html
index f768d09ee..2ebf0d3c0 100644
--- a/db/docs/api_cxx/txn_abort.html
+++ b/db/docs/api_cxx/txn_abort.html
@@ -1,6 +1,5 @@
<!--$Id: txn_abort.so,v 10.39 2004/08/13 03:39:03 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -52,6 +51,6 @@ failure, and returns 0 on success.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/txn_begin.html b/db/docs/api_cxx/txn_begin.html
index 08c49fbfe..29d622372 100644
--- a/db/docs/api_cxx/txn_begin.html
+++ b/db/docs/api_cxx/txn_begin.html
@@ -1,6 +1,5 @@
-<!--$Id: txn_begin.so,v 10.78 2006/09/13 14:30:57 mjc Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: txn_begin.so,v 10.80 2006/12/13 18:09:09 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -59,7 +58,7 @@ previously read by this transaction may be deleted or modified by other
transactions before this transaction completes.
<dt><a name="DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a><dd>This transaction will have degree 1 isolation. Read operations
performed by the transaction may read modified but not yet committed
-data. Silently ignored if the <a href="../api_cxx/db_open.html#DB_READ_UNCOMMITTED">DB_READ_UNCOMMITTED</a> flag was not
+data. Silently ignored if the DB_READ_UNCOMMITTED flag was not
specified when the underlying database was opened.
<dt><a name="DB_TXN_NOSYNC">DB_TXN_NOSYNC</a><dd>Do not synchronously flush the log when this transaction commits or
prepares. This means the transaction will exhibit the ACI (atomicity,
@@ -67,12 +66,18 @@ consistency, and isolation) properties, but not D (durability); that is,
database integrity will be maintained but it is possible that this
transaction may be undone during recovery.
<p>This behavior may be set for a Berkeley DB environment using the
-<a href="../api_cxx/env_set_flags.html">DbEnv::set_flags</a> method. Any value specified to this method
-overrides that setting.</p>
+<a href="../api_cxx/env_set_flags.html">DbEnv::set_flags</a> method. Any value specified to this method overrides
+that setting.</p>
<dt><a name="DB_TXN_NOWAIT">DB_TXN_NOWAIT</a><dd>If a lock is unavailable for any Berkeley DB operation performed in the context
of this transaction, cause the operation to
-return DB_LOCK_DEADLOCK or throw a <a href="../api_cxx/deadlock_class.html">DbDeadlockException</a>
-immediately instead of blocking on the lock.
+either return <a href="../ref/program/errorret.html#DB_LOCK_DEADLOCK">DB_LOCK_DEADLOCK</a> or throw a
+<a href="../api_cxx/deadlock_class.html">DbDeadlockException</a> exception (or return
+<a href="../ref/program/errorret.html#DB_LOCK_NOTGRANTED">DB_LOCK_NOTGRANTED</a> or throw a <a href="../api_cxx/lockng_class.html">DbLockNotGrantedException</a>
+exception if the database environment has been configured using the
+<a href="../api_cxx/env_set_flags.html#DB_TIME_NOTGRANTED">DB_TIME_NOTGRANTED</a> flag).
+<p>This behavior may be set for a Berkeley DB environment using the
+<a href="../api_cxx/env_set_flags.html">DbEnv::set_flags</a> method. Any value specified to this method overrides
+that setting.</p>
<dt><a name="DB_TXN_SNAPSHOT">DB_TXN_SNAPSHOT</a><dd>This transaction will execute with <a href="../ref/transapp/read.html">snapshot isolation</a>. For databases with the <a href="../api_cxx/db_open.html#DB_MULTIVERSION">DB_MULTIVERSION</a>
flag set, data values will be read as they are when the transaction
begins, without taking read locks. Silently ignored for operations on
@@ -85,9 +90,26 @@ which was modified after the snapshot transaction read it.</p>
This means the transaction will exhibit all of the ACID (atomicity,
consistency, isolation, and durability) properties.
<p>This behavior is the default for Berkeley DB environments unless the
-<a href="../api_cxx/env_set_flags.html#DB_TXN_NOSYNC">DB_TXN_NOSYNC</a> flag was specified to the
-<a href="../api_cxx/env_set_flags.html">DbEnv::set_flags</a> method. Any value specified to this method
-overrides that setting.</p>
+DB_TXN_NOSYNC flag was specified to the
+<a href="../api_cxx/env_set_flags.html">DbEnv::set_flags</a> method. Any value specified to this method overrides
+that setting.</p>
+<dt><a name="DB_TXN_WAIT">DB_TXN_WAIT</a><dd>If a lock is unavailable for any Berkeley DB operation performed in the context
+of this transaction, wait for the lock.
+<p>This behavior is the default for Berkeley DB environments unless the
+DB_TXN_NOWAIT flag was specified to the
+<a href="../api_cxx/env_set_flags.html">DbEnv::set_flags</a> method. Any value specified to this method overrides
+that setting.</p>
+<dt><a name="DB_TXN_WRITE_NOSYNC">DB_TXN_WRITE_NOSYNC</a><dd>Write, but do not synchronously flush, the log when this transaction
+commits. This means the transaction will exhibit the ACI (atomicity,
+consistency, and isolation) properties, but not D (durability); that is,
+database integrity will be maintained, but if the system fails, it is
+possible some number of the most recently committed transactions may be
+undone during recovery. The number of transactions at risk is governed
+by how often the system flushes dirty buffers to disk and how often the
+log is flushed or checkpointed.
+<p>This behavior may be set for a Berkeley DB environment using the
+<a href="../api_cxx/env_set_flags.html">DbEnv::set_flags</a> method. Any value specified to this method overrides
+that setting.</p>
</dl>
<dt><b>parent</b><dd>If the <b>parent</b> parameter is non-NULL, the new transaction will
be a nested transaction, with the transaction indicated by
@@ -109,6 +131,6 @@ throw a DbMemoryException.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/txn_checkpoint.html b/db/docs/api_cxx/txn_checkpoint.html
index d5038f0c2..90bbdeb38 100644
--- a/db/docs/api_cxx/txn_checkpoint.html
+++ b/db/docs/api_cxx/txn_checkpoint.html
@@ -1,6 +1,5 @@
<!--$Id: txn_checkpoint.so,v 10.49 2005/03/02 22:57:15 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -69,6 +68,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/txn_class.html b/db/docs/api_cxx/txn_class.html
index 73311cb46..819886143 100644
--- a/db/docs/api_cxx/txn_class.html
+++ b/db/docs/api_cxx/txn_class.html
@@ -1,6 +1,5 @@
<!--$Id: txn_class.so,v 10.25 2005/05/17 15:25:50 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -70,6 +69,6 @@ calls in a purely C++ application.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/txn_commit.html b/db/docs/api_cxx/txn_commit.html
index be53f7096..86456c6b4 100644
--- a/db/docs/api_cxx/txn_commit.html
+++ b/db/docs/api_cxx/txn_commit.html
@@ -1,6 +1,5 @@
<!--$Id: txn_commit.so,v 10.49 2004/08/13 03:39:03 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -80,6 +79,6 @@ method overrides both of those settings.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/txn_discard.html b/db/docs/api_cxx/txn_discard.html
index c3f743bec..c35793427 100644
--- a/db/docs/api_cxx/txn_discard.html
+++ b/db/docs/api_cxx/txn_discard.html
@@ -1,6 +1,5 @@
<!--$Id: txn_discard.so,v 10.16 2004/08/13 03:39:03 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -66,6 +65,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/txn_id.html b/db/docs/api_cxx/txn_id.html
index 9f2da7876..c61d4ce3b 100644
--- a/db/docs/api_cxx/txn_id.html
+++ b/db/docs/api_cxx/txn_id.html
@@ -1,6 +1,5 @@
<!--$Id: txn_id.so,v 10.21 2004/08/13 03:39:03 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -40,6 +39,6 @@ to the <a href="../api_cxx/lock_get.html">DbEnv::lock_get</a> or <a href="../api
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/txn_list.html b/db/docs/api_cxx/txn_list.html
index f25365c96..d0f8ad983 100644
--- a/db/docs/api_cxx/txn_list.html
+++ b/db/docs/api_cxx/txn_list.html
@@ -1,6 +1,5 @@
<!--$Id: txn_list.so,v 1.3 2004/11/02 20:04:11 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -31,6 +30,6 @@
<!--DbTxn::set_name--><tr><td><a href="../api_cxx/txn_set_name.html">DbTxn::set_name</a></td><td>Associate a string with a transaction</td></tr>
<!--DbTxn::set_timeout--><tr><td><a href="../api_cxx/txn_set_timeout.html">DbTxn::set_timeout</a></td><td>Set transaction timeout</td></tr>
</table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/txn_prepare.html b/db/docs/api_cxx/txn_prepare.html
index 0fba00631..355097988 100644
--- a/db/docs/api_cxx/txn_prepare.html
+++ b/db/docs/api_cxx/txn_prepare.html
@@ -1,6 +1,5 @@
<!--$Id: txn_prepare.so,v 10.35 2004/08/13 03:39:03 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -62,6 +61,6 @@ transactions must be resolved.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/txn_recover.html b/db/docs/api_cxx/txn_recover.html
index 9fa7649f9..9a923afac 100644
--- a/db/docs/api_cxx/txn_recover.html
+++ b/db/docs/api_cxx/txn_recover.html
@@ -1,6 +1,5 @@
-<!--$Id: txn_recover.so,v 10.25 2004/08/13 03:39:03 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: txn_recover.so,v 10.28 2007/05/30 17:24:41 margo Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -28,14 +27,18 @@ DbEnv::txn_recover(DB_PREPLIST preplist[],
</pre></h3>
<hr size=1 noshade>
<h3>Description: DbEnv::txn_recover</h3>
-<p>The DbEnv::txn_recover method returns a list of prepared but not yet resolved
-transactions. The DbEnv::txn_recover method should only be called after the
-environment has been recovered. Because database environment state must
-be preserved between recovery and the application calling
-DbEnv::txn_recover, applications must either call DbEnv::txn_recover
-using the same environment handle used when recovery is done, or the
-database environment must not be configured using the <a href="../api_cxx/env_open.html#DB_PRIVATE">DB_PRIVATE</a>
-flag.</p>
+<p>Database environment recovery restores transactions that were prepared,
+but not yet resolved at the time of the system shut down or crash, to
+their state prior to the shut down or crash, including any locks
+previously held. The DbEnv::txn_recover method returns a list of those
+prepared transactions.</p>
+<p>The DbEnv::txn_recover method should only be called after the environment has
+been recovered.</p>
+<p>Multiple threads of control may call DbEnv::txn_recover, but only one
+thread of control may resolve each returned transaction, that is, only
+one thread of control may call <a href="../api_cxx/txn_commit.html">DbTxn::commit</a> or <a href="../api_cxx/txn_abort.html">DbTxn::abort</a>
+on each returned transaction. Callers of DbEnv::txn_recover must call
+<a href="../api_cxx/txn_discard.html">DbTxn::discard</a> to discard each transaction they do not resolve.</p>
<p>On return from DbEnv::txn_recover, the <b>preplist</b> parameter will
be filled in with a list of transactions that must be resolved by the
application (committed, aborted or discarded). The <b>preplist</b>
@@ -48,9 +51,6 @@ ID is the one specified when the transaction was prepared. The
application is responsible for ensuring uniqueness among global
transaction IDs.
</dl>
-<p>The application must call <a href="../api_cxx/txn_abort.html">DbTxn::abort</a>, <a href="../api_cxx/txn_commit.html">DbTxn::commit</a> or
-<a href="../api_cxx/txn_discard.html">DbTxn::discard</a> on each returned <a href="../api_cxx/txn_class.html">DbTxn</a> handle before
-starting any new operations.</p>
<p>The DbEnv::txn_recover method
either returns a non-zero error value
or throws an exception that encapsulates a non-zero error value on
@@ -65,6 +65,11 @@ array.
<dt><b>flags</b><dd>The <b>flags</b> parameter must be set to one of the following values:
<dl compact>
<dt><a name="DB_FIRST">DB_FIRST</a><dd>Begin returning a list of prepared, but not yet resolved transactions.
+Specifying this flag begins a new pass over all prepared, but not yet
+completed transactions, regardless of whether they have already been returned
+in previous calls to DbEnv::txn_recover.
+Calls to DbEnv::txn_recover from different threads of control should not
+be intermixed in the same environment.
<dt><a name="DB_NEXT">DB_NEXT</a><dd>Continue returning a list of prepared, but not yet resolved transactions,
starting where the last call to DbEnv::txn_recover left off.
</dl>
@@ -80,6 +85,6 @@ starting where the last call to DbEnv::txn_recover left off.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/txn_set_name.html b/db/docs/api_cxx/txn_set_name.html
index ab365560a..6dbbd9727 100644
--- a/db/docs/api_cxx/txn_set_name.html
+++ b/db/docs/api_cxx/txn_set_name.html
@@ -1,6 +1,5 @@
<!--$Id: txn_set_name.so,v 10.2 2005/05/17 04:01:01 mjc Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -73,6 +72,6 @@ string associated with the transaction in <b>namep</b>.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/txn_set_timeout.html b/db/docs/api_cxx/txn_set_timeout.html
index 3e1efa18e..3bbd9ed86 100644
--- a/db/docs/api_cxx/txn_set_timeout.html
+++ b/db/docs/api_cxx/txn_set_timeout.html
@@ -1,6 +1,5 @@
-<!--$Id: txn_set_timeout.so,v 10.21 2005/05/20 15:07:45 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: txn_set_timeout.so,v 10.22 2006/12/16 13:52:36 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -29,8 +28,8 @@ DbTxn::set_timeout(db_timeout_t timeout, u_int32_t flags);
<h3>Description: DbTxn::set_timeout</h3>
<p>The DbTxn::set_timeout method sets timeout values for locks or
transactions for the specified transaction.</p>
-<p>All Timeouts are checked whenever a thread of control blocks on a lock
-or when deadlock detection is performed. In the case of
+<p>Timeouts are checked whenever a thread of control blocks on a lock or
+when deadlock detection is performed. In the case of
DB_SET_LOCK_TIMEOUT, the timeout is for any single lock request.
In the case of DB_SET_TXN_TIMEOUT, the timeout is for the life
of the transaction. As timeouts are only checked when the lock request
@@ -78,6 +77,6 @@ invalid flag value or parameter was specified.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/txn_stat.html b/db/docs/api_cxx/txn_stat.html
index d2da587ed..9ac149c88 100644
--- a/db/docs/api_cxx/txn_stat.html
+++ b/db/docs/api_cxx/txn_stat.html
@@ -1,6 +1,5 @@
-<!--$Id: txn_stat.so,v 10.66 2006/08/22 14:28:22 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: txn_stat.so,v 10.67 2007/06/22 16:57:17 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -90,6 +89,8 @@ undefined.
of that name, followed by a nul termination byte.
</dl>
</dl>
+<p>The DbEnv::txn_stat method may not be called before the <a href="../api_cxx/env_open.html">DbEnv::open</a> method has
+been called.</p>
<p>The DbEnv::txn_stat method
either returns a non-zero error value
or throws an exception that encapsulates a non-zero error value on
@@ -148,6 +149,6 @@ or more of the following values:
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_cxx/api_core.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_cxx/what.html b/db/docs/api_cxx/what.html
deleted file mode 100644
index 9e0410c76..000000000
--- a/db/docs/api_cxx/what.html
+++ /dev/null
@@ -1,43 +0,0 @@
-<!--$Id: what.so,v 10.8 1999/12/20 08:52:33 bostic Exp $-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB: DbException::what</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
- <a name="2"><!--meow--></a>
-<table><tr valign=top>
-<td>
-<h1>DbException::what</h1>
-</td>
-<td width="1%">
-<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;db_cxx.h&gt;
-<p>
-virtual const char *
-DbException::what() const;
-</pre></h3>
-<h1>Description</h1>
-<p>A DbException object contains an informational string and an errno.
-The errno can be obtained by using <a href="../api_cxx/get_errno.html">DbException::get_errno</a>.
-The informational string can be obtained by using DbException::what.
-<h3>Class</h3>
-<a href="../api_cxx/except_class.html">DbException</a>
-<h1>See Also</h1>
-<a href="../api_cxx/get_errno.html">DbException::get_errno</a>
-and
-<a href="../api_cxx/what.html">DbException::what</a>.
-</tt>
-<table><tr><td><br></td><td width="1%">
-<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/xml_close.html b/db/docs/api_cxx/xml_close.html
deleted file mode 100644
index 9ca24cb9c..000000000
--- a/db/docs/api_cxx/xml_close.html
+++ /dev/null
@@ -1,86 +0,0 @@
-<!--Id: xml_close.so,v 10.5 2002/07/30 16:57:43 merrells Exp -->
-<!--Id: m4.db_close,v 10.1 2002/06/19 19:31:15 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlContainer::close</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlContainer::close</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;DbXml.hpp&gt;
-<p>
-void
-XmlContainer::close(u_int32_t flags);
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlContainer::close method closes the specified container.
-
-<p>The <a href="../api_cxx/xmlcontainer_class.html">XmlContainer</a> must be in the open state for the
-call to succeed. The container is only open after a successful
-call to the <a href="../api_cxx/xml_open.html">XmlContainer::open</a> method. Note that it is allowable
-to re-open a container after it has been closed.
-
-<p><dl compact>
-
-<p><dt><a name="DB_NOSYNC">DB_NOSYNC</a><dd>Do not flush cached information to disk. The <a href="../api_cxx/db_close.html#DB_NOSYNC">DB_NOSYNC</a> flag is
-a dangerous option. It should be set only if the application is doing
-logging (with transactions) so that the database is recoverable after
-a system or application crash, or if the database is always generated
-from scratch after any system or application crash.
-<p><b>It is important to understand that flushing cached information to disk
-only minimizes the window of opportunity for corrupted data.</b> Although
-unlikely, it is possible for database corruption to happen if a system
-or application crash occurs while writing data to the database. To
-ensure that database corruption never occurs, applications must either:
-use transactions and logging with automatic recovery; use logging and
-application-specific recovery; or edit a copy of the database, and once
-all applications using the database have successfully called
-UNREF==xm_close, atomically replace the original database with the
-updated copy.
-
-</dl>
-<p>When multiple threads are using the <a href="../api_cxx/xmlcontainer_class.html">XmlContainer</a> concurrently,
-only a single thread may call the XmlContainer::close method.
-<h1>Class</h1>
-<a href="../api_cxx/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_cxx/xmldocument_class.html">XmlDocument</a>, <a href="../api_cxx/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_cxx/xml_close.html">XmlContainer::close</a>,
-<a href="../api_cxx/xml_declare.html">XmlContainer::declareIndex</a>,
-<a href="../api_cxx/xml_del.html">XmlContainer::deleteDocument</a>,
-<a href="../api_cxx/xml_get.html">XmlContainer::getDocument</a>,
-<a href="../api_cxx/xml_getname.html">XmlContainer::getName</a>,
-<a href="../api_cxx/xml_open.html">XmlContainer::open</a>,
-<a href="../api_cxx/xml_put.html">XmlContainer::putDocument</a>
-and
-<a href="../api_cxx/xml_xpath.html">XmlContainer::queryWithXPath</a>.
-<p>
-<a href="../api_cxx/xmldoc_getattr.html">XmlDocument::getAttributeValue</a>,
-<a href="../api_cxx/xmldoc_getcont.html">XmlDocument::getContent</a>,
-<a href="../api_cxx/xmldoc_getid.html">XmlDocument::getID</a>,
-<a href="../api_cxx/xmldoc_getname.html">XmlDocument::getName</a>,
-<a href="../api_cxx/xmldoc_gettype.html">XmlDocument::getType</a>,
-<a href="../api_cxx/xmldoc_setcont.html">XmlDocument::setContent</a>,
-<a href="../api_cxx/xmldoc_setname.html">XmlDocument::setName</a>,
-and
-<a href="../api_cxx/xmldoc_settype.html">XmlDocument::setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/xml_declare.html b/db/docs/api_cxx/xml_declare.html
deleted file mode 100644
index 965f4a9a9..000000000
--- a/db/docs/api_cxx/xml_declare.html
+++ /dev/null
@@ -1,121 +0,0 @@
-<!--Id: xml_declare.so,v 10.8 2002/08/07 15:14:58 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlContainer::declareIndex</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlContainer::declareIndex</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;DbXml.hpp&gt;
-<p>
-void
-XmlContainer::declareIndex(DbTxn *txnid,
- const std::string &node, const std::string &index, u_int32_t flags);
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlContainer::declareIndex method declares the indexing required for a
-particular node. The node may be an element or attribute.
-<p>The <b>node</b> parameter provides the name of the node
-to be indexed. Attribute node names are prefixed with the '@' character
-to distinguish them from element node names. For example, within the
-following XML document fragment the element name is 'fruit', and the
-attribute name is '@color',
-"&lt;fruit color='red'&gt;apple&lt;/fruit&gt;".
-<p>A fully qualified node name is a node name that includes its full
-namespace specification. In the following fragment from the
-<a href="http://www.w3.org/TR/1999/REC-xml-names-19990114/">W3C XML Namespaces specification</a>, the fully qualified name of
-the "price units" element is "http://ecommerce.org/schema:price units":
-<p><blockquote><pre>&lt;x xmlns:edi='http://ecommerce.org/schema'&gt;
- &lt;!-- the 'price' element's namespace is http://ecommerce.org/schema --&gt;
- &lt;edi:price units='Euro'&gt;32.18&lt;/edi:price&gt;
-&lt;/x&gt;</pre></blockquote>
-<p>The index string is a comma separated list of one or more of the
-following indexing strategy names:
-<p><ul type=disc>
-<li>none-none-none-none
-<li>node-element-presence
-<li>node-attribute-presence
-<li>node-element-equality-string
-<li>node-element-equality-number
-<li>node-element-substring-string
-<li>node-attribute-equality-string
-<li>node-attribute-equality-number
-<li>node-attribute-substring-string
-<li>edge-element-presence
-<li>edge-attribute-presence
-<li>edge-element-equality-string
-<li>edge-element-equality-number
-<li>edge-element-substring-string
-<li>edge-attribute-equality-string
-<li>edge-attribute-equality-number
-<li>edge-attribute-substring-string
-</ul>
-<p>Indices may only be declared for empty containers. Once documents have
-been added to a container the indexing specification for the container
-may not be changed.
-<p>If the operation is to be transaction-protected, the <b>txnid</b>
-parameter is a transaction handle returned from <a href="../api_cxx/txn_begin.html">DbEnv::txn_begin</a>;
-otherwise, NULL.
-<p>The <b>flags</b> parameter is currently unused, and must be set to 0.
-<p>The XmlContainer::declareIndex method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>The XmlContainer::declareIndex method may fail and throw an UNREF==xmlexception_class
-exception with the following exception code:
-<p><dl compact>
-<p><dt>CONTAINER_NOT_EMPTY<dd>Indexes may only be declared for empty containers.
-</dl>
-<p><dl compact>
-<p><dt>CONTAINER_CLOSED<dd>Indexes may only be declared on open containers.
-</dl>
-<p><dl compact>
-<p><dt>DATABASE_ERROR<dd>An error occurred in an underlying Berkeley DB database.
-UNREF==xml_getdberror method returns the error code for the error.
-</dl>
-<p>The XmlContainer::declareIndex method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XmlContainer::declareIndex method may fail and
-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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_cxx/xmldocument_class.html">XmlDocument</a>, <a href="../api_cxx/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_cxx/xml_close.html">XmlContainer::close</a>,
-<a href="../api_cxx/xml_declare.html">XmlContainer::declareIndex</a>,
-<a href="../api_cxx/xml_del.html">XmlContainer::deleteDocument</a>,
-<a href="../api_cxx/xml_get.html">XmlContainer::getDocument</a>,
-<a href="../api_cxx/xml_getname.html">XmlContainer::getName</a>,
-<a href="../api_cxx/xml_open.html">XmlContainer::open</a>,
-<a href="../api_cxx/xml_put.html">XmlContainer::putDocument</a>
-and
-<a href="../api_cxx/xml_xpath.html">XmlContainer::queryWithXPath</a>.
-<p>
-<a href="../api_cxx/xmldoc_getattr.html">XmlDocument::getAttributeValue</a>,
-<a href="../api_cxx/xmldoc_getcont.html">XmlDocument::getContent</a>,
-<a href="../api_cxx/xmldoc_getid.html">XmlDocument::getID</a>,
-<a href="../api_cxx/xmldoc_getname.html">XmlDocument::getName</a>,
-<a href="../api_cxx/xmldoc_gettype.html">XmlDocument::getType</a>,
-<a href="../api_cxx/xmldoc_setcont.html">XmlDocument::setContent</a>,
-<a href="../api_cxx/xmldoc_setname.html">XmlDocument::setName</a>,
-and
-<a href="../api_cxx/xmldoc_settype.html">XmlDocument::setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/xml_del.html b/db/docs/api_cxx/xml_del.html
deleted file mode 100644
index 97caf9aba..000000000
--- a/db/docs/api_cxx/xml_del.html
+++ /dev/null
@@ -1,81 +0,0 @@
-<!--Id: xml_del.so,v 10.5 2002/07/01 16:46:15 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlContainer::deleteDocument</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlContainer::deleteDocument</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;DbXml.hpp&gt;
-<p>
-void
-XmlContainer::deleteDocument(DbTxn *txnid, u_int32_t id, u_int32_t flags);
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlContainer::deleteDocument method removes the document identified by the <b>id</b>
-parameter from the container.
-<p>If the operation is to be transaction-protected (other than by specifying
-the DB_AUTO_COMMIT flag), the <b>txnid</b> parameter is a
-transaction handle returned from <a href="../api_cxx/txn_begin.html">DbEnv::txn_begin</a>; otherwise, NULL.
-<p>The <b>flags</b> value must be set to 0 or
-the following value:
-<p><dl compact>
-<p><dt><a name="DB_AUTO_COMMIT">DB_AUTO_COMMIT</a><dd>Enclose the XmlContainer::deleteDocument call within a transaction. If the call succeeds,
-changes made by the operation will be recoverable. If the call fails,
-the operation will have made no changes.
-</dl>
-<p>
-If the specified document is not in the container, the XmlContainer::deleteDocument method will return DB_NOTFOUND.
-Otherwise, the XmlContainer::deleteDocument method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>If the operation was selected to resolve a deadlock, the
-XmlContainer::deleteDocument method will fail and
-throw a <a href="../api_cxx/deadlock_class.html">DbDeadlockException</a> exception.
-<p>The XmlContainer::deleteDocument method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XmlContainer::deleteDocument method may fail and
-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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_cxx/xmldocument_class.html">XmlDocument</a>, <a href="../api_cxx/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_cxx/xml_close.html">XmlContainer::close</a>,
-<a href="../api_cxx/xml_declare.html">XmlContainer::declareIndex</a>,
-<a href="../api_cxx/xml_del.html">XmlContainer::deleteDocument</a>,
-<a href="../api_cxx/xml_get.html">XmlContainer::getDocument</a>,
-<a href="../api_cxx/xml_getname.html">XmlContainer::getName</a>,
-<a href="../api_cxx/xml_open.html">XmlContainer::open</a>,
-<a href="../api_cxx/xml_put.html">XmlContainer::putDocument</a>
-and
-<a href="../api_cxx/xml_xpath.html">XmlContainer::queryWithXPath</a>.
-<p>
-<a href="../api_cxx/xmldoc_getattr.html">XmlDocument::getAttributeValue</a>,
-<a href="../api_cxx/xmldoc_getcont.html">XmlDocument::getContent</a>,
-<a href="../api_cxx/xmldoc_getid.html">XmlDocument::getID</a>,
-<a href="../api_cxx/xmldoc_getname.html">XmlDocument::getName</a>,
-<a href="../api_cxx/xmldoc_gettype.html">XmlDocument::getType</a>,
-<a href="../api_cxx/xmldoc_setcont.html">XmlDocument::setContent</a>,
-<a href="../api_cxx/xmldoc_setname.html">XmlDocument::setName</a>,
-and
-<a href="../api_cxx/xmldoc_settype.html">XmlDocument::setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/xml_get.html b/db/docs/api_cxx/xml_get.html
deleted file mode 100644
index 6ef4c0ba8..000000000
--- a/db/docs/api_cxx/xml_get.html
+++ /dev/null
@@ -1,90 +0,0 @@
-<!--Id: xml_get.so,v 10.5 2002/07/01 16:46:15 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlContainer::getDocument</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlContainer::getDocument</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;DbXml.hpp&gt;
-<p>
-XmlDocument
-XmlContainer::getDocument(DbTxn *txnid, u_int32_t id, u_int32_t flags);
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlContainer::getDocument method returns the document identified by the <b>id</b>
-parameter.
-<p>If the operation is to be transaction-protected, the <b>txnid</b>
-parameter is a transaction handle returned from <a href="../api_cxx/txn_begin.html">DbEnv::txn_begin</a>;
-otherwise, NULL.
-<p>The <b>flags</b> value must be set to 0 or by bitwise inclusively <b>OR</b>'ing together one or
-more of the following values:
-<p><dl compact>
-<p><dt><a name="DB_DIRTY_READ">DB_DIRTY_READ</a><dd>Read modified but not yet committed data. Silently ignored if the
-<a href="../api_cxx/db_open.html#DB_DIRTY_READ">DB_DIRTY_READ</a> flag was not specified when the underlying
-<a href="../api_cxx/xmlcontainer_class.html">XmlContainer</a> was opened.
-<p><dt><a name="DB_RMW">DB_RMW</a><dd>Acquire write locks instead of read locks when doing the retrieval.
-Setting this flag can eliminate deadlock during a read-modify-write
-cycle by acquiring the write lock during the read part of the cycle so
-that another thread of control acquiring a read lock for the same item,
-in its own read-modify-write cycle, will not result in deadlock.
-<p>Because the XmlContainer::getDocument interface will not hold locks
-across Berkeley DB interface calls in non-transactional environments, the
-<a href="../api_cxx/dbc_get.html#DB_RMW">DB_RMW</a> flag to the XmlContainer::getDocument call is meaningful only in
-the presence of transactions.
-</dl>
-<p>
-If the specified document is not in the container, the XmlContainer::getDocument method will return DB_NOTFOUND.
-Otherwise, the XmlContainer::getDocument method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>If the operation was selected to resolve a deadlock, the
-XmlContainer::getDocument method will fail and
-throw a <a href="../api_cxx/deadlock_class.html">DbDeadlockException</a> exception.
-<p>The XmlContainer::getDocument method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XmlContainer::getDocument method may fail and
-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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_cxx/xmldocument_class.html">XmlDocument</a>, <a href="../api_cxx/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_cxx/xml_close.html">XmlContainer::close</a>,
-<a href="../api_cxx/xml_declare.html">XmlContainer::declareIndex</a>,
-<a href="../api_cxx/xml_del.html">XmlContainer::deleteDocument</a>,
-<a href="../api_cxx/xml_get.html">XmlContainer::getDocument</a>,
-<a href="../api_cxx/xml_getname.html">XmlContainer::getName</a>,
-<a href="../api_cxx/xml_open.html">XmlContainer::open</a>,
-<a href="../api_cxx/xml_put.html">XmlContainer::putDocument</a>
-and
-<a href="../api_cxx/xml_xpath.html">XmlContainer::queryWithXPath</a>.
-<p>
-<a href="../api_cxx/xmldoc_getattr.html">XmlDocument::getAttributeValue</a>,
-<a href="../api_cxx/xmldoc_getcont.html">XmlDocument::getContent</a>,
-<a href="../api_cxx/xmldoc_getid.html">XmlDocument::getID</a>,
-<a href="../api_cxx/xmldoc_getname.html">XmlDocument::getName</a>,
-<a href="../api_cxx/xmldoc_gettype.html">XmlDocument::getType</a>,
-<a href="../api_cxx/xmldoc_setcont.html">XmlDocument::setContent</a>,
-<a href="../api_cxx/xmldoc_setname.html">XmlDocument::setName</a>,
-and
-<a href="../api_cxx/xmldoc_settype.html">XmlDocument::setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/xml_getname.html b/db/docs/api_cxx/xml_getname.html
deleted file mode 100644
index 721e60741..000000000
--- a/db/docs/api_cxx/xml_getname.html
+++ /dev/null
@@ -1,73 +0,0 @@
-<!--Id: xml_getname.so,v 10.4 2002/06/24 14:49:37 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlContainer::getName</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlContainer::getName</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;DbXml.hpp&gt;
-<p>
-std::string
-XmlContainer::getName() const;
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlContainer::getName method returns the name of the container.
-<p>The XmlContainer::getName method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>The XmlContainer::getName method may fail and throw an exception encapsulating 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 container has not yet been opened.
-</dl>
-<p>If the requested item could not be returned due to insufficient memory,
-the XmlContainer::getName method will fail and
-throw a <a href="../api_cxx/mem_class.html">DbMemoryException</a> exception.
-<p>The XmlContainer::getName method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XmlContainer::getName method may fail and
-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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_cxx/xmldocument_class.html">XmlDocument</a>, <a href="../api_cxx/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_cxx/xml_close.html">XmlContainer::close</a>,
-<a href="../api_cxx/xml_declare.html">XmlContainer::declareIndex</a>,
-<a href="../api_cxx/xml_del.html">XmlContainer::deleteDocument</a>,
-<a href="../api_cxx/xml_get.html">XmlContainer::getDocument</a>,
-<a href="../api_cxx/xml_getname.html">XmlContainer::getName</a>,
-<a href="../api_cxx/xml_open.html">XmlContainer::open</a>,
-<a href="../api_cxx/xml_put.html">XmlContainer::putDocument</a>
-and
-<a href="../api_cxx/xml_xpath.html">XmlContainer::queryWithXPath</a>.
-<p>
-<a href="../api_cxx/xmldoc_getattr.html">XmlDocument::getAttributeValue</a>,
-<a href="../api_cxx/xmldoc_getcont.html">XmlDocument::getContent</a>,
-<a href="../api_cxx/xmldoc_getid.html">XmlDocument::getID</a>,
-<a href="../api_cxx/xmldoc_getname.html">XmlDocument::getName</a>,
-<a href="../api_cxx/xmldoc_gettype.html">XmlDocument::getType</a>,
-<a href="../api_cxx/xmldoc_setcont.html">XmlDocument::setContent</a>,
-<a href="../api_cxx/xmldoc_setname.html">XmlDocument::setName</a>,
-and
-<a href="../api_cxx/xmldoc_settype.html">XmlDocument::setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/xml_index.html b/db/docs/api_cxx/xml_index.html
deleted file mode 100644
index 68d9c6282..000000000
--- a/db/docs/api_cxx/xml_index.html
+++ /dev/null
@@ -1,56 +0,0 @@
-<!--Id: xml_index.so,v 10.5 2002/06/25 17:17:40 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: Berkeley DB XML: C++ Interface</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<h1 align=center>Berkeley DB XML: C++ Interface</h1>
-<p><table border=1 align=center>
-<tr><th>Section</th><th>Class/Method</th><th>Description</th></tr>
-<tr><td><b>DbXML Operations</b></td><td><a href="../api_cxx/xmlcontainer_class.html">XmlContainer</a></td><td>Create a XML container handle</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/xml_close.html">XmlContainer::close</a></td><td>Close a XML container</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/xml_declare.html">XmlContainer::declareIndex</a></td><td>Declare an index</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/xml_del.html">XmlContainer::deleteDocument</a></td><td>Delete a document from a container</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/xml_get.html">XmlContainer::getDocument</a></td><td>Retrieve a document from a container</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/xml_getname.html">XmlContainer::getName</a></td><td>Return a container name</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/xml_open.html">XmlContainer::open</a></td><td>Open a XML container</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/xml_xparse.html">XmlContainer::parseXPathExpression</a></td><td>Parse an XPath 1.0 expression</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/xml_put.html">XmlContainer::putDocument</a></td><td>Store a document in a container</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/xml_xpath.html">XmlContainer::queryWithXPath</a></td><td>Query a container using XPath 1.0</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/xmldocument_class.html">XmlDocument</a></td><td>Create a XML document handle</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/xmldoc_getattr.html">XmlDocument::getAttributeValue</a></td><td>Get the document annotation attributes</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/xmldoc_getcont.html">XmlDocument::getContent</a></td><td>Get the document content</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/xmldoc_getcontlen.html">XmlDocument::getContentLength</a></td><td>Return the document's length</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/xmldoc_getdom.html">XmlDocument::getDOM</a></td><td>Return the document as a DOM</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/xmldoc_getenc.html">XmlDocument::getEncoding</a></td><td>Return the document's encoding</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/xmldoc_getid.html">XmlDocument::getID</a></td><td>Get the document ID</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/xmldoc_getname.html">XmlDocument::getName</a></td><td>Get the document name</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/xmldoc_gettype.html">XmlDocument::getType</a></td><td>Get the document type</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/xmldoc_setattr.html">XmlDocument::setAttributeValue</a></td><td>Set the document annotation attributes</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/xmldoc_setcont.html">XmlDocument::setContent</a></td><td>Set the document content</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/xmldoc_setname.html">XmlDocument::setName</a></td><td>Set the document name</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/xmldoc_settype.html">XmlDocument::setType</a></td><td>Set the document type</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/xmlquery_class.html">XmlQueryContext</a></td><td>Create a XPath query context</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/xmlq_clearname.html">XmlQueryContext::clearNamespaces</a></td><td>Delete all namespace mappings</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/xmlq_getname.html">XmlQueryContext::getNamespace</a></td><td>Return the namespace URI</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/xmlq_getvar.html">XmlQueryContext::getVariableValue</a></td><td>Return the value bound to a variable</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/xmlq_remname.html">XmlQueryContext::removeNamespace</a></td><td>Delete the namespace URI</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/xmlq_seteval.html">XmlQueryContext::setEvaluationType</a></td><td>Set the query evaluation type</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/xmlq_setname.html">XmlQueryContext::setNamespace</a></td><td>Set the namespace URI</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/xmlq_setret.html">XmlQueryContext::setReturnType</a></td><td>Set the query return type</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/xmlq_setvar.html">XmlQueryContext::setVariableValue</a></td><td>Bind a value to a variable</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/xmlresults_class.html">XmlResults</a></td><td>Encapsulate XPath query results</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/xmlr_next.html">XmlResults::next</a></td><td>Return the next result</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/xmlr_reset.html">XmlResults::reset</a></td><td>Reset the results iterator</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/xmlvalue_class.html">XmlValue</a></td><td>Encapsulate the value of a document node</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/xmlxpathexp_class.html">XPathExpression</a></td><td>Encapsulate a parsed XPath expression</td></tr>
-<tr><td><br></td><td><a href="../api_cxx/xmlxpe_get.html">XPathExpression::getXPathQuery</a></td><td>Return the XPath query</td></tr>
-</table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/xml_open.html b/db/docs/api_cxx/xml_open.html
deleted file mode 100644
index baa9b2704..000000000
--- a/db/docs/api_cxx/xml_open.html
+++ /dev/null
@@ -1,145 +0,0 @@
-<!--Id: xml_open.so,v 10.5 2002/07/30 16:57:43 merrells Exp -->
-<!--Id: m4.db_open,v 10.2 2002/06/20 03:47:44 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlContainer::open</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlContainer::open</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;DbXml.hpp&gt;
-<p>
-void
-XmlContainer::open(DbTxn *txnid,
- u_int32_t flags, int mode);
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlContainer::open method opens the <a href="../api_cxx/xmlcontainer_class.html">XmlContainer</a>
-for both reading and writing. The container name, passed
-through the constructor, is used as the base name for a set of
-underlying Berkeley DB databases that are used to back the
-container.
-
-<p>The XmlContainer::open method may only be called on a closed
-container. A container is in the closed state after construction,
-and after the <a href="../api_cxx/xml_close.html">XmlContainer::close</a> method has been called. Note
-that it is allowable to re-open a container after it has been
-closed.
-
-<p>An open <a href="../api_cxx/xmlcontainer_class.html">XmlContainer</a> must be closed, by calling the
-<a href="../api_cxx/xml_close.html">XmlContainer::close</a> method, before the <a href="../api_cxx/xmlcontainer_class.html">XmlContainer</a>
-object is destroyed. Otherwise the underlying database
-resources will not be released.
-<p>If the operation is to be transaction-protected (other than by specifying
-the DB_AUTO_COMMIT flag), the <b>txnid</b> parameter is a
-transaction handle returned from <a href="../api_cxx/txn_begin.html">DbEnv::txn_begin</a>; otherwise, NULL.
-<p>The <b>flags</b> and <b>mode</b> arguments specify how files will be opened
-and/or created if they do not already exist.
-<p>The <b>flags</b> value must be set to 0 or by bitwise inclusively <b>OR</b>'ing together one or
-more of the following values:
-<p><dl compact>
-<p><dt><a name="DB_AUTO_COMMIT">DB_AUTO_COMMIT</a><dd>Enclose the XmlContainer::open call within a transaction. If the call succeeds,
-the open operation will be recoverable. If the call fails, no container will
-have been created.
-<p><dt><a name="DB_CREATE">DB_CREATE</a><dd>Create the container. If the container does not already exist and the DB_CREATE
-flag is not specified, the XmlContainer::open will fail.
-<p><dt><a name="DB_DIRTY_READ">DB_DIRTY_READ</a><dd>Support dirty reads; that is, read operations on the container may request the
-return of modified but not yet committed data.
-<p><dt><a name="DB_EXCL">DB_EXCL</a><dd>Return an error if the container already exists. The <a href="../api_cxx/db_open.html#DB_EXCL">DB_EXCL</a> flag is
-only meaningful when specified with the <a href="../api_cxx/env_open.html#DB_CREATE">DB_CREATE</a> flag.
-<p><dt><a name="DB_NOMMAP">DB_NOMMAP</a><dd>Do not map this container into process memory (see the description of the
-<a href="../api_cxx/env_set_mp_mmapsize.html">DbEnv::set_mp_mmapsize</a> method for further information).
-<p><dt><a name="DB_RDONLY">DB_RDONLY</a><dd>Open the container for reading only. Any attempt to modify items in the container
-will fail, regardless of the actual permissions of any underlying files.
-<p><dt><a name="DB_THREAD">DB_THREAD</a><dd>Cause the <a href="../api_cxx/xmlcontainer_class.html">XmlContainer</a> handle returned by XmlContainer::open to be
-<i>free-threaded</i>; that is, usable by multiple threads within a
-single address space.
-</dl>
-<p>On UNIX systems or in IEEE/ANSI Std 1003.1 (POSIX) environments, all files created by
-the container open are created with mode <b>mode</b> (as described in <b>chmod</b>(2)) and modified by the process' umask value at the time of creation
-(see <b>umask</b>(2)). If <b>mode</b> is 0, the container open will use a default
-mode of readable and writable by both owner and group. On Windows
-systems, the mode argument is ignored. The group ownership of created
-files is based on the system and directory defaults, and is not further
-specified by Berkeley DB.
-<p>Calling XmlContainer::open is a reasonably expensive operation, and maintaining
-a set of open containers will normally be preferable to repeatedly opening
-and closing the container for each new query.
-<p>The XmlContainer::open method throws an exception that encapsulates a non-zero error value on
-failure.
-If XmlContainer::open fails, the <a href="../api_cxx/xml_close.html">XmlContainer::close</a> method should be called to discard the
-<a href="../api_cxx/xmlcontainer_class.html">XmlContainer</a> handle.
-<h1>Environment Variables</h1>
-<p><dl compact>
-<p><dt>DB_HOME<dd>If a <b>dbenv</b> argument to <a href="../api_c/db_create.html">db_create</a> was specified, the
-environment variable <b>DB_HOME</b> may be used as the path of the
-database environment home.
-<p>XmlContainer::open is affected by any database directory specified using the
-<a href="../api_cxx/env_set_data_dir.html">DbEnv::set_data_dir</a> method, or by setting the "set_data_dir" string
-in the environment's <b>DB_CONFIG</b> file.
-</dl>
-<p><dl compact>
-<p><dt>TMPDIR<dd>If the <b>file</b> and <b>dbenv</b> arguments to XmlContainer::open are
-NULL, the environment variable <b>TMPDIR</b> may be used as a
-directory in which to create temporary backing files
-</dl>
-<h1>Errors</h1>
-<p>The XmlContainer::open method may fail and throw an exception encapsulating a non-zero error for the following conditions:
-<p><dl compact>
-<p><dt><a name="DB_OLD_VERSION">DB_OLD_VERSION</a><dd>The container cannot be opened without being first upgraded.
-<p><dt>EEXIST<dd>DB_CREATE and DB_EXCL were specified and the container exists.
-<p><dt>EINVAL<dd>An invalid flag value or parameter was specified.
-<p>
-The <a href="../api_cxx/env_open.html#DB_THREAD">DB_THREAD</a> flag was specified and fast mutexes are not
-available for this architecture.
-<p>The <a href="../api_cxx/env_open.html#DB_THREAD">DB_THREAD</a> flag was specified to XmlContainer::open, but was not
-specified to the <a href="../api_cxx/env_open.html">DbEnv::open</a> call for the environment in which the
-<a href="../api_cxx/xmlcontainer_class.html">XmlContainer</a> handle was created.
-</dl>
-<p>The XmlContainer::open method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XmlContainer::open method may fail and
-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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_cxx/xmldocument_class.html">XmlDocument</a>, <a href="../api_cxx/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_cxx/xml_close.html">XmlContainer::close</a>,
-<a href="../api_cxx/xml_declare.html">XmlContainer::declareIndex</a>,
-<a href="../api_cxx/xml_del.html">XmlContainer::deleteDocument</a>,
-<a href="../api_cxx/xml_get.html">XmlContainer::getDocument</a>,
-<a href="../api_cxx/xml_getname.html">XmlContainer::getName</a>,
-<a href="../api_cxx/xml_open.html">XmlContainer::open</a>,
-<a href="../api_cxx/xml_put.html">XmlContainer::putDocument</a>
-and
-<a href="../api_cxx/xml_xpath.html">XmlContainer::queryWithXPath</a>.
-<p>
-<a href="../api_cxx/xmldoc_getattr.html">XmlDocument::getAttributeValue</a>,
-<a href="../api_cxx/xmldoc_getcont.html">XmlDocument::getContent</a>,
-<a href="../api_cxx/xmldoc_getid.html">XmlDocument::getID</a>,
-<a href="../api_cxx/xmldoc_getname.html">XmlDocument::getName</a>,
-<a href="../api_cxx/xmldoc_gettype.html">XmlDocument::getType</a>,
-<a href="../api_cxx/xmldoc_setcont.html">XmlDocument::setContent</a>,
-<a href="../api_cxx/xmldoc_setname.html">XmlDocument::setName</a>,
-and
-<a href="../api_cxx/xmldoc_settype.html">XmlDocument::setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/xml_put.html b/db/docs/api_cxx/xml_put.html
deleted file mode 100644
index 9e48a3824..000000000
--- a/db/docs/api_cxx/xml_put.html
+++ /dev/null
@@ -1,90 +0,0 @@
-<!--Id: xml_put.so,v 10.6 2002/06/24 14:49:37 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlContainer::putDocument</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlContainer::putDocument</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;DbXml.hpp&gt;
-<p>
-u_int32_t
-XmlContainer::putDocument(DbTxn *txnid, XmlDocument &xmldoc, u_int32_t flags);
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlContainer::putDocument method stores a XML document into the container and
-returns the document ID. The contents of an <a href="../api_cxx/xmldocument_class.html">XmlDocument</a> may be
-of type <a href="../api_cxx/xmldoc_settype.html#XmlDocument::BYTES">XmlDocument::BYTES</a> or <a href="../api_cxx/xmldoc_settype.html#XmlDocument::XML">XmlDocument::XML</a>. XML
-content is parsed and indexed as per the container indexing
-specification. Non-XML (<a href="../api_cxx/xmldoc_settype.html#XmlDocument::BYTES">XmlDocument::BYTES</a>) content is not
-indexed.
-<p>Regardless of the content type the document annotation attributes
-are always indexed.]
-<p>The XML indexer expects XML content to be encoded as UTF-8. The indexer
-also expects the XML content to be
-<a href="http://www.w3.org/TR/2000/REC-xml-20001006.html#dt-wellformed">well-formed</a>, but the content need not be
-<a href="http://www.w3.org/TR/2000/REC-xml-20001006.html#dt-valid">valid</a>.
-<p>If the operation is to be transaction-protected (other than by specifying
-the DB_AUTO_COMMIT flag), the <b>txnid</b> parameter is a
-transaction handle returned from <a href="../api_cxx/txn_begin.html">DbEnv::txn_begin</a>; otherwise, NULL.
-<p>The <b>flags</b> value must be set to 0 or
-the following value:
-<p><dl compact>
-<p><dt><a name="DB_AUTO_COMMIT">DB_AUTO_COMMIT</a><dd>Enclose the XmlContainer::putDocument call within a transaction. If the call succeeds,
-changes made by the operation will be recoverable. If the call fails,
-the operation will have made no changes.
-</dl>
-<p>The XmlContainer::putDocument method returns a document ID on success.
-Otherwise, the XmlContainer::putDocument method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>If the operation was selected to resolve a deadlock, the
-XmlContainer::putDocument method will fail and
-throw a <a href="../api_cxx/deadlock_class.html">DbDeadlockException</a> exception.
-<p>The XmlContainer::putDocument method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XmlContainer::putDocument method may fail and
-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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_cxx/xmldocument_class.html">XmlDocument</a>, <a href="../api_cxx/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_cxx/xml_close.html">XmlContainer::close</a>,
-<a href="../api_cxx/xml_declare.html">XmlContainer::declareIndex</a>,
-<a href="../api_cxx/xml_del.html">XmlContainer::deleteDocument</a>,
-<a href="../api_cxx/xml_get.html">XmlContainer::getDocument</a>,
-<a href="../api_cxx/xml_getname.html">XmlContainer::getName</a>,
-<a href="../api_cxx/xml_open.html">XmlContainer::open</a>,
-<a href="../api_cxx/xml_put.html">XmlContainer::putDocument</a>
-and
-<a href="../api_cxx/xml_xpath.html">XmlContainer::queryWithXPath</a>.
-<p>
-<a href="../api_cxx/xmldoc_getattr.html">XmlDocument::getAttributeValue</a>,
-<a href="../api_cxx/xmldoc_getcont.html">XmlDocument::getContent</a>,
-<a href="../api_cxx/xmldoc_getid.html">XmlDocument::getID</a>,
-<a href="../api_cxx/xmldoc_getname.html">XmlDocument::getName</a>,
-<a href="../api_cxx/xmldoc_gettype.html">XmlDocument::getType</a>,
-<a href="../api_cxx/xmldoc_setcont.html">XmlDocument::setContent</a>,
-<a href="../api_cxx/xmldoc_setname.html">XmlDocument::setName</a>,
-and
-<a href="../api_cxx/xmldoc_settype.html">XmlDocument::setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/xml_xparse.html b/db/docs/api_cxx/xml_xparse.html
deleted file mode 100644
index 8300f9a78..000000000
--- a/db/docs/api_cxx/xml_xparse.html
+++ /dev/null
@@ -1,77 +0,0 @@
-<!--Id: xml_xparse.so,v 10.5 2002/06/24 14:49:38 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlContainer::parseXPathExpression</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlContainer::parseXPathExpression</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;DbXml.hpp&gt;
-<p>
-XPathExpression
-XmlContainer::parseXPathExpression(
- const std::string &xpath, XmlQueryContext *context, u_int32_t flags);
-</pre></h3>
-<h1>Description</h1>
-<p>Return a pre-parsed XPath 1.0 version query for later use with the
-<a href="../api_cxx/xml_xpath.html">XmlContainer::queryWithXPath</a> method. The query is provided as a string and is expected
-to be in the syntax defined in the
-<a href="http://www.w3c.org/TR/xpath">W3C XPath 1.0
-specification</a>.
-<p>The query may optionally be done within the execution context
-<b>context</b>, which describes how the query is to be performed.
-<p>The <b>flags</b> parameter is currently unused, and must be set to 0.
-<p>The XmlContainer::parseXPathExpression method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>The XmlContainer::parseXPathExpression method may fail and throw an exception encapsulating 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 XmlContainer::parseXPathExpression method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XmlContainer::parseXPathExpression method may fail and
-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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_cxx/xmldocument_class.html">XmlDocument</a>, <a href="../api_cxx/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_cxx/xml_close.html">XmlContainer::close</a>,
-<a href="../api_cxx/xml_declare.html">XmlContainer::declareIndex</a>,
-<a href="../api_cxx/xml_del.html">XmlContainer::deleteDocument</a>,
-<a href="../api_cxx/xml_get.html">XmlContainer::getDocument</a>,
-<a href="../api_cxx/xml_getname.html">XmlContainer::getName</a>,
-<a href="../api_cxx/xml_open.html">XmlContainer::open</a>,
-<a href="../api_cxx/xml_put.html">XmlContainer::putDocument</a>
-and
-<a href="../api_cxx/xml_xpath.html">XmlContainer::queryWithXPath</a>.
-<p>
-<a href="../api_cxx/xmldoc_getattr.html">XmlDocument::getAttributeValue</a>,
-<a href="../api_cxx/xmldoc_getcont.html">XmlDocument::getContent</a>,
-<a href="../api_cxx/xmldoc_getid.html">XmlDocument::getID</a>,
-<a href="../api_cxx/xmldoc_getname.html">XmlDocument::getName</a>,
-<a href="../api_cxx/xmldoc_gettype.html">XmlDocument::getType</a>,
-<a href="../api_cxx/xmldoc_setcont.html">XmlDocument::setContent</a>,
-<a href="../api_cxx/xmldoc_setname.html">XmlDocument::setName</a>,
-and
-<a href="../api_cxx/xmldoc_settype.html">XmlDocument::setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/xml_xpath.html b/db/docs/api_cxx/xml_xpath.html
deleted file mode 100644
index 12cdc2b55..000000000
--- a/db/docs/api_cxx/xml_xpath.html
+++ /dev/null
@@ -1,102 +0,0 @@
-<!--Id: xml_xpath.so,v 10.5 2002/06/24 14:49:38 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlContainer::queryWithXPath</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlContainer::queryWithXPath</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;DbXml.hpp&gt;
-<p>
-XmlResults
-XmlContainer::queryWithXPath(DbTxn *txnid,
- XPathExpression &expression, u_int32_t flags) const;
-<p>
-XmlResults
-XmlContainer::queryWithXPath(DbTxn *txnid,
- const std::string &query, XmlQueryContext *context, u_int32_t flags);
-</pre></h3>
-<h1>Description</h1>
-<p>Return the results of an XPath 1.0 version query against the container.
-In the first variant, <b>expression</b> is provided as the results of
-a call to the <a href="../api_cxx/xml_xparse.html">XmlContainer::parseXPathExpression</a> method.
-<p>In the second variant, <b>query</b> is provided as a string (expected
-to be in the syntax defined in the
-<a href="http://www.w3c.org/TR/xpath">W3C XPath 1.0 specification</a>).
-In this case, the query may optionally be done within the execution
-context <b>context</b>, which describes how the query is to be
-performed. If no context is specified, the query will retrieve the set
-of <a href="../api_cxx/xmldocument_class.html">XmlDocument</a>s matching the XPath expression.
-<p>If the operation is to be transaction-protected, the <b>txnid</b>
-parameter is a transaction handle returned from <a href="../api_cxx/txn_begin.html">DbEnv::txn_begin</a>;
-otherwise, NULL.
-<p>The <b>flags</b> value must be set to 0 or by bitwise inclusively <b>OR</b>'ing together one or
-more of the following values:
-<p><dl compact>
-<p><dt><a name="DB_DIRTY_READ">DB_DIRTY_READ</a><dd>Read modified but not yet committed data. Silently ignored if the
-<a href="../api_cxx/db_open.html#DB_DIRTY_READ">DB_DIRTY_READ</a> flag was not specified when the underlying
-<a href="../api_cxx/xmlcontainer_class.html">XmlContainer</a> was opened.
-<p><dt><a name="DB_RMW">DB_RMW</a><dd>Acquire write locks instead of read locks when doing the retrieval.
-Setting this flag can eliminate deadlock during a read-modify-write
-cycle by acquiring the write lock during the read part of the cycle so
-that another thread of control acquiring a read lock for the same item,
-in its own read-modify-write cycle, will not result in deadlock.
-<p>Because the <a href="../api_cxx/xml_get.html">XmlContainer::getDocument</a> interface will not hold locks
-across Berkeley DB interface calls in non-transactional environments, the
-<a href="../api_cxx/dbc_get.html#DB_RMW">DB_RMW</a> flag to the <a href="../api_cxx/xml_get.html">XmlContainer::getDocument</a> call is meaningful only in
-the presence of transactions.
-</dl>
-<p>The XmlContainer::queryWithXPath method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>The XmlContainer::queryWithXPath method may fail and throw an exception encapsulating 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 XmlContainer::queryWithXPath method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XmlContainer::queryWithXPath method may fail and
-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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_cxx/xmldocument_class.html">XmlDocument</a>, <a href="../api_cxx/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_cxx/xml_close.html">XmlContainer::close</a>,
-<a href="../api_cxx/xml_declare.html">XmlContainer::declareIndex</a>,
-<a href="../api_cxx/xml_del.html">XmlContainer::deleteDocument</a>,
-<a href="../api_cxx/xml_get.html">XmlContainer::getDocument</a>,
-<a href="../api_cxx/xml_getname.html">XmlContainer::getName</a>,
-<a href="../api_cxx/xml_open.html">XmlContainer::open</a>,
-<a href="../api_cxx/xml_put.html">XmlContainer::putDocument</a>
-and
-<a href="../api_cxx/xml_xpath.html">XmlContainer::queryWithXPath</a>.
-<p>
-<a href="../api_cxx/xmldoc_getattr.html">XmlDocument::getAttributeValue</a>,
-<a href="../api_cxx/xmldoc_getcont.html">XmlDocument::getContent</a>,
-<a href="../api_cxx/xmldoc_getid.html">XmlDocument::getID</a>,
-<a href="../api_cxx/xmldoc_getname.html">XmlDocument::getName</a>,
-<a href="../api_cxx/xmldoc_gettype.html">XmlDocument::getType</a>,
-<a href="../api_cxx/xmldoc_setcont.html">XmlDocument::setContent</a>,
-<a href="../api_cxx/xmldoc_setname.html">XmlDocument::setName</a>,
-and
-<a href="../api_cxx/xmldoc_settype.html">XmlDocument::setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/xmlcontainer_class.html b/db/docs/api_cxx/xmlcontainer_class.html
deleted file mode 100644
index c26d3a58d..000000000
--- a/db/docs/api_cxx/xmlcontainer_class.html
+++ /dev/null
@@ -1,85 +0,0 @@
-<!--Id: xmlcontainer_class.so,v 1.8 2002/07/30 16:57:44 merrells Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlContainer</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlContainer</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;DbXml.hpp&gt;
-<p>
-class DbXml::XmlContainer {
-public:
- XmlContainer(DbEnv *dbenv, const string &name, u_int32_t flags);
- ~XmlContainer();
- ...
-};
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlContainer class provides methods for managing the storage and
-retrieval of XmlDocuments. The constructor creates an XmlContainer
-object that is the handle for an XML Container.
-<p>If no <b>dbenv</b> value is specified, the container is standalone; that
-is, it is not part of any Berkeley DB environment.
-<p>If a <b>dbenv</b> value is specified, the container is created within
-the specified Berkeley DB environment and all operations are performed within
-the context of that environment. The container methods automatically
-make calls to the other subsystems in Berkeley DB based on the enclosing
-environment. For example, if the environment has been configured to use
-locking, the container methods will automatically acquire the correct
-locks when reading and writing pages of the underlying databases that
-support the container. The user is expected to suitably configure the
-environment for their particular application.
-<p>The <b>flags</b> value must be set to 0 or
-the following value:
-<p><dl compact>
-<p><dt><a name="DB_XA_CREATE">DB_XA_CREATE</a><dd>Instead of creating a standalone database, create a database intended to
-be accessed via applications running under a X/Open conformant Transaction
-Manager. The database will be opened in the environment specified by the
-OPENINFO parameter of the GROUPS section of the ubbconfig file. See the
-<a href="../ref/xa/intro.html">XA Resource Manager</a> chapter in the
-Reference Guide for more information.
-</dl>
-<h1>Class</h1>
-<a href="../api_cxx/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_cxx/xmldocument_class.html">XmlDocument</a>, <a href="../api_cxx/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_cxx/xml_close.html">XmlContainer::close</a>,
-<a href="../api_cxx/xml_declare.html">XmlContainer::declareIndex</a>,
-<a href="../api_cxx/xml_del.html">XmlContainer::deleteDocument</a>,
-<a href="../api_cxx/xml_get.html">XmlContainer::getDocument</a>,
-<a href="../api_cxx/xml_getname.html">XmlContainer::getName</a>,
-<a href="../api_cxx/xml_open.html">XmlContainer::open</a>,
-<a href="../api_cxx/xml_put.html">XmlContainer::putDocument</a>
-and
-<a href="../api_cxx/xml_xpath.html">XmlContainer::queryWithXPath</a>.
-<p>
-<a href="../api_cxx/xmldoc_getattr.html">XmlDocument::getAttributeValue</a>,
-<a href="../api_cxx/xmldoc_getcont.html">XmlDocument::getContent</a>,
-<a href="../api_cxx/xmldoc_getid.html">XmlDocument::getID</a>,
-<a href="../api_cxx/xmldoc_getname.html">XmlDocument::getName</a>,
-<a href="../api_cxx/xmldoc_gettype.html">XmlDocument::getType</a>,
-<a href="../api_cxx/xmldoc_setcont.html">XmlDocument::setContent</a>,
-<a href="../api_cxx/xmldoc_setname.html">XmlDocument::setName</a>,
-and
-<a href="../api_cxx/xmldoc_settype.html">XmlDocument::setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/xmldoc_getattr.html b/db/docs/api_cxx/xmldoc_getattr.html
deleted file mode 100644
index 6ce082d71..000000000
--- a/db/docs/api_cxx/xmldoc_getattr.html
+++ /dev/null
@@ -1,72 +0,0 @@
-<!--Id: xmldoc_getattr.so,v 10.6 2002/07/01 16:46:15 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlDocument::getAttributeValue</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlDocument::getAttributeValue</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;DbXml.hpp&gt;
-<p>
-XmlValue
-XmlDocument::getAttributeValue(const std::string &attr) const;
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlDocument::getAttributeValue method returns the value of the <b>attr</b>
-annotation attribute.
-<p>
-If the specified attribute is not in the document, the XmlDocument::getAttributeValue method will return DB_NOTFOUND.
-Otherwise, the XmlDocument::getAttributeValue method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>The XmlDocument::getAttributeValue method may fail and throw an exception encapsulating a non-zero error for the following conditions:
-<p>If the requested item could not be returned due to insufficient memory,
-the XmlDocument::getAttributeValue method will fail and
-throw a <a href="../api_cxx/mem_class.html">DbMemoryException</a> exception.
-<p>The XmlDocument::getAttributeValue method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XmlDocument::getAttributeValue method may fail and
-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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_cxx/xmldocument_class.html">XmlDocument</a>, <a href="../api_cxx/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_cxx/xml_close.html">XmlContainer::close</a>,
-<a href="../api_cxx/xml_declare.html">XmlContainer::declareIndex</a>,
-<a href="../api_cxx/xml_del.html">XmlContainer::deleteDocument</a>,
-<a href="../api_cxx/xml_get.html">XmlContainer::getDocument</a>,
-<a href="../api_cxx/xml_getname.html">XmlContainer::getName</a>,
-<a href="../api_cxx/xml_open.html">XmlContainer::open</a>,
-<a href="../api_cxx/xml_put.html">XmlContainer::putDocument</a>
-and
-<a href="../api_cxx/xml_xpath.html">XmlContainer::queryWithXPath</a>.
-<p>
-<a href="../api_cxx/xmldoc_getattr.html">XmlDocument::getAttributeValue</a>,
-<a href="../api_cxx/xmldoc_getcont.html">XmlDocument::getContent</a>,
-<a href="../api_cxx/xmldoc_getid.html">XmlDocument::getID</a>,
-<a href="../api_cxx/xmldoc_getname.html">XmlDocument::getName</a>,
-<a href="../api_cxx/xmldoc_gettype.html">XmlDocument::getType</a>,
-<a href="../api_cxx/xmldoc_setcont.html">XmlDocument::setContent</a>,
-<a href="../api_cxx/xmldoc_setname.html">XmlDocument::setName</a>,
-and
-<a href="../api_cxx/xmldoc_settype.html">XmlDocument::setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/xmldoc_getcont.html b/db/docs/api_cxx/xmldoc_getcont.html
deleted file mode 100644
index b5fc3a10d..000000000
--- a/db/docs/api_cxx/xmldoc_getcont.html
+++ /dev/null
@@ -1,70 +0,0 @@
-<!--Id: xmldoc_getcont.so,v 10.5 2002/06/24 14:49:39 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlDocument::getContent</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlDocument::getContent</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;DbXml.hpp&gt;
-<p>
-const char *
-XmlDocument::getContent() const;
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlDocument::getContent method returns the document content.
-<p>The XmlDocument::getContent method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>The XmlDocument::getContent method may fail and throw an exception encapsulating 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 document has no content stored in it.
-</dl>
-<p>The XmlDocument::getContent method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XmlDocument::getContent method may fail and
-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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_cxx/xmldocument_class.html">XmlDocument</a>, <a href="../api_cxx/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_cxx/xml_close.html">XmlContainer::close</a>,
-<a href="../api_cxx/xml_declare.html">XmlContainer::declareIndex</a>,
-<a href="../api_cxx/xml_del.html">XmlContainer::deleteDocument</a>,
-<a href="../api_cxx/xml_get.html">XmlContainer::getDocument</a>,
-<a href="../api_cxx/xml_getname.html">XmlContainer::getName</a>,
-<a href="../api_cxx/xml_open.html">XmlContainer::open</a>,
-<a href="../api_cxx/xml_put.html">XmlContainer::putDocument</a>
-and
-<a href="../api_cxx/xml_xpath.html">XmlContainer::queryWithXPath</a>.
-<p>
-<a href="../api_cxx/xmldoc_getattr.html">XmlDocument::getAttributeValue</a>,
-<a href="../api_cxx/xmldoc_getcont.html">XmlDocument::getContent</a>,
-<a href="../api_cxx/xmldoc_getid.html">XmlDocument::getID</a>,
-<a href="../api_cxx/xmldoc_getname.html">XmlDocument::getName</a>,
-<a href="../api_cxx/xmldoc_gettype.html">XmlDocument::getType</a>,
-<a href="../api_cxx/xmldoc_setcont.html">XmlDocument::setContent</a>,
-<a href="../api_cxx/xmldoc_setname.html">XmlDocument::setName</a>,
-and
-<a href="../api_cxx/xmldoc_settype.html">XmlDocument::setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/xmldoc_getcontlen.html b/db/docs/api_cxx/xmldoc_getcontlen.html
deleted file mode 100644
index 1a84fd948..000000000
--- a/db/docs/api_cxx/xmldoc_getcontlen.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<!--Id: xmldoc_getcontlen.so,v 10.4 2002/06/24 14:49:39 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlDocument::getContentLength</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlDocument::getContentLength</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;DbXml.hpp&gt;
-<p>
-size_t
-XmlDocument::getContentLength() const;
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlDocument::getContentLength method returns the length of the document's
-content, in bytes.
-<p>The XmlDocument::getContentLength method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>The XmlDocument::getContentLength method may fail and throw an exception encapsulating 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 document has no content stored in it.
-</dl>
-<p>The XmlDocument::getContentLength method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XmlDocument::getContentLength method may fail and
-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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_cxx/xmldocument_class.html">XmlDocument</a>, <a href="../api_cxx/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_cxx/xml_close.html">XmlContainer::close</a>,
-<a href="../api_cxx/xml_declare.html">XmlContainer::declareIndex</a>,
-<a href="../api_cxx/xml_del.html">XmlContainer::deleteDocument</a>,
-<a href="../api_cxx/xml_get.html">XmlContainer::getDocument</a>,
-<a href="../api_cxx/xml_getname.html">XmlContainer::getName</a>,
-<a href="../api_cxx/xml_open.html">XmlContainer::open</a>,
-<a href="../api_cxx/xml_put.html">XmlContainer::putDocument</a>
-and
-<a href="../api_cxx/xml_xpath.html">XmlContainer::queryWithXPath</a>.
-<p>
-<a href="../api_cxx/xmldoc_getattr.html">XmlDocument::getAttributeValue</a>,
-<a href="../api_cxx/xmldoc_getcont.html">XmlDocument::getContent</a>,
-<a href="../api_cxx/xmldoc_getid.html">XmlDocument::getID</a>,
-<a href="../api_cxx/xmldoc_getname.html">XmlDocument::getName</a>,
-<a href="../api_cxx/xmldoc_gettype.html">XmlDocument::getType</a>,
-<a href="../api_cxx/xmldoc_setcont.html">XmlDocument::setContent</a>,
-<a href="../api_cxx/xmldoc_setname.html">XmlDocument::setName</a>,
-and
-<a href="../api_cxx/xmldoc_settype.html">XmlDocument::setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/xmldoc_getdom.html b/db/docs/api_cxx/xmldoc_getdom.html
deleted file mode 100644
index e668b801f..000000000
--- a/db/docs/api_cxx/xmldoc_getdom.html
+++ /dev/null
@@ -1,78 +0,0 @@
-<!--Id: xmldoc_getdom.so,v 10.6 2002/06/24 14:49:39 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlDocument::getDOM</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlDocument::getDOM</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;DbXml.hpp&gt;
-<p>
-void *
-XmlDocument::getDOM(bool withAnnotationAttributes) const;
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlDocument::getDOM method returns the document as a
-Xerces
-Document Object Model (DOM).
-<p>The <b>flags</b> value must be set to 0 or
-the following value:
-<p><dl compact>
-<p><dt><a name="DB_WITHATTRIBUTES">DB_WITHATTRIBUTES</a><dd>The document annotation attributes are added as attributes of the
-document's root element.
-</dl>
-<p>The XmlDocument::getDOM method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>The XmlDocument::getDOM method may fail and throw an exception encapsulating 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 document has no content stored in it.
-</dl>
-<p>The XmlDocument::getDOM method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XmlDocument::getDOM method may fail and
-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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_cxx/xmldocument_class.html">XmlDocument</a>, <a href="../api_cxx/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_cxx/xml_close.html">XmlContainer::close</a>,
-<a href="../api_cxx/xml_declare.html">XmlContainer::declareIndex</a>,
-<a href="../api_cxx/xml_del.html">XmlContainer::deleteDocument</a>,
-<a href="../api_cxx/xml_get.html">XmlContainer::getDocument</a>,
-<a href="../api_cxx/xml_getname.html">XmlContainer::getName</a>,
-<a href="../api_cxx/xml_open.html">XmlContainer::open</a>,
-<a href="../api_cxx/xml_put.html">XmlContainer::putDocument</a>
-and
-<a href="../api_cxx/xml_xpath.html">XmlContainer::queryWithXPath</a>.
-<p>
-<a href="../api_cxx/xmldoc_getattr.html">XmlDocument::getAttributeValue</a>,
-<a href="../api_cxx/xmldoc_getcont.html">XmlDocument::getContent</a>,
-<a href="../api_cxx/xmldoc_getid.html">XmlDocument::getID</a>,
-<a href="../api_cxx/xmldoc_getname.html">XmlDocument::getName</a>,
-<a href="../api_cxx/xmldoc_gettype.html">XmlDocument::getType</a>,
-<a href="../api_cxx/xmldoc_setcont.html">XmlDocument::setContent</a>,
-<a href="../api_cxx/xmldoc_setname.html">XmlDocument::setName</a>,
-and
-<a href="../api_cxx/xmldoc_settype.html">XmlDocument::setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/xmldoc_getenc.html b/db/docs/api_cxx/xmldoc_getenc.html
deleted file mode 100644
index 9e3996021..000000000
--- a/db/docs/api_cxx/xmldoc_getenc.html
+++ /dev/null
@@ -1,86 +0,0 @@
-<!--Id: xmldoc_getenc.so,v 10.6 2002/06/24 14:49:39 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlDocument::getEncoding</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlDocument::getEncoding</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;DbXml.hpp&gt;
-<p>
-Encoding
-XmlDocument::getEncoding() const;
-<p>
-std::string
-XmlDocument::getEncodingName() const;
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlDocument::getEncoding method returns the document encoding as one of the
-following types:
-<p><ul type=disc>
-<li><a name="XmlDocument::EBCDIC">XmlDocument::EBCDIC</a>
-<li><a name="XmlDocument::NONE">XmlDocument::NONE</a>
-<li><a name="XmlDocument::UCS4">XmlDocument::UCS4</a>
-<li><a name="XmlDocument::UCS4_ASCII">XmlDocument::UCS4_ASCII</a>
-<li><a name="XmlDocument::UTF16">XmlDocument::UTF16</a>
-<li><a name="XmlDocument::UTF8">XmlDocument::UTF8</a>
-</ul>
-<p>The <a href="../api_cxx/xmldoc_getenc.html">XmlDocument::getEncodingName</a> method returns the document encoding as a string.
-<p>The XmlDocument::getEncoding method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>The XmlDocument::getEncoding method may fail and throw an exception encapsulating 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 document has no content stored in it.
-</dl>
-<p>If the requested item could not be returned due to insufficient memory,
-the XmlDocument::getEncoding method will fail and
-throw a <a href="../api_cxx/mem_class.html">DbMemoryException</a> exception.
-<p>The XmlDocument::getEncoding method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XmlDocument::getEncoding method may fail and
-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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_cxx/xmldocument_class.html">XmlDocument</a>, <a href="../api_cxx/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_cxx/xml_close.html">XmlContainer::close</a>,
-<a href="../api_cxx/xml_declare.html">XmlContainer::declareIndex</a>,
-<a href="../api_cxx/xml_del.html">XmlContainer::deleteDocument</a>,
-<a href="../api_cxx/xml_get.html">XmlContainer::getDocument</a>,
-<a href="../api_cxx/xml_getname.html">XmlContainer::getName</a>,
-<a href="../api_cxx/xml_open.html">XmlContainer::open</a>,
-<a href="../api_cxx/xml_put.html">XmlContainer::putDocument</a>
-and
-<a href="../api_cxx/xml_xpath.html">XmlContainer::queryWithXPath</a>.
-<p>
-<a href="../api_cxx/xmldoc_getattr.html">XmlDocument::getAttributeValue</a>,
-<a href="../api_cxx/xmldoc_getcont.html">XmlDocument::getContent</a>,
-<a href="../api_cxx/xmldoc_getid.html">XmlDocument::getID</a>,
-<a href="../api_cxx/xmldoc_getname.html">XmlDocument::getName</a>,
-<a href="../api_cxx/xmldoc_gettype.html">XmlDocument::getType</a>,
-<a href="../api_cxx/xmldoc_setcont.html">XmlDocument::setContent</a>,
-<a href="../api_cxx/xmldoc_setname.html">XmlDocument::setName</a>,
-and
-<a href="../api_cxx/xmldoc_settype.html">XmlDocument::setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/xmldoc_getid.html b/db/docs/api_cxx/xmldoc_getid.html
deleted file mode 100644
index fe7831997..000000000
--- a/db/docs/api_cxx/xmldoc_getid.html
+++ /dev/null
@@ -1,73 +0,0 @@
-<!--Id: xmldoc_getid.so,v 10.5 2002/06/24 14:49:39 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlDocument::getID</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlDocument::getID</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;DbXml.hpp&gt;
-<p>
-u_int32_t
-XmlDocument::getID() const;
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlDocument::getID method returns the document ID. The document ID will
-be zero if the document has not yet been assigned any content, or the
-document has not yet been added to a container.
-<p>The <b>flags</b> parameter is currently unused, and must be set to 0.
-<p>The XmlDocument::getID method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>The XmlDocument::getID method may fail and throw an exception encapsulating 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 document does not have an ID.
-</dl>
-<p>The XmlDocument::getID method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XmlDocument::getID method may fail and
-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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_cxx/xmldocument_class.html">XmlDocument</a>, <a href="../api_cxx/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_cxx/xml_close.html">XmlContainer::close</a>,
-<a href="../api_cxx/xml_declare.html">XmlContainer::declareIndex</a>,
-<a href="../api_cxx/xml_del.html">XmlContainer::deleteDocument</a>,
-<a href="../api_cxx/xml_get.html">XmlContainer::getDocument</a>,
-<a href="../api_cxx/xml_getname.html">XmlContainer::getName</a>,
-<a href="../api_cxx/xml_open.html">XmlContainer::open</a>,
-<a href="../api_cxx/xml_put.html">XmlContainer::putDocument</a>
-and
-<a href="../api_cxx/xml_xpath.html">XmlContainer::queryWithXPath</a>.
-<p>
-<a href="../api_cxx/xmldoc_getattr.html">XmlDocument::getAttributeValue</a>,
-<a href="../api_cxx/xmldoc_getcont.html">XmlDocument::getContent</a>,
-<a href="../api_cxx/xmldoc_getid.html">XmlDocument::getID</a>,
-<a href="../api_cxx/xmldoc_getname.html">XmlDocument::getName</a>,
-<a href="../api_cxx/xmldoc_gettype.html">XmlDocument::getType</a>,
-<a href="../api_cxx/xmldoc_setcont.html">XmlDocument::setContent</a>,
-<a href="../api_cxx/xmldoc_setname.html">XmlDocument::setName</a>,
-and
-<a href="../api_cxx/xmldoc_settype.html">XmlDocument::setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/xmldoc_getname.html b/db/docs/api_cxx/xmldoc_getname.html
deleted file mode 100644
index c799e8ecb..000000000
--- a/db/docs/api_cxx/xmldoc_getname.html
+++ /dev/null
@@ -1,73 +0,0 @@
-<!--Id: xmldoc_getname.so,v 10.5 2002/06/24 14:49:39 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlDocument::getName</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlDocument::getName</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;DbXml.hpp&gt;
-<p>
-std::string
-XmlDocument::getName() const;
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlDocument::getName method returns the document name.
-<p>The XmlDocument::getName method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>The XmlDocument::getName method may fail and throw an exception encapsulating 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 document does not have a name.
-</dl>
-<p>If the requested item could not be returned due to insufficient memory,
-the XmlDocument::getName method will fail and
-throw a <a href="../api_cxx/mem_class.html">DbMemoryException</a> exception.
-<p>The XmlDocument::getName method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XmlDocument::getName method may fail and
-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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_cxx/xmldocument_class.html">XmlDocument</a>, <a href="../api_cxx/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_cxx/xml_close.html">XmlContainer::close</a>,
-<a href="../api_cxx/xml_declare.html">XmlContainer::declareIndex</a>,
-<a href="../api_cxx/xml_del.html">XmlContainer::deleteDocument</a>,
-<a href="../api_cxx/xml_get.html">XmlContainer::getDocument</a>,
-<a href="../api_cxx/xml_getname.html">XmlContainer::getName</a>,
-<a href="../api_cxx/xml_open.html">XmlContainer::open</a>,
-<a href="../api_cxx/xml_put.html">XmlContainer::putDocument</a>
-and
-<a href="../api_cxx/xml_xpath.html">XmlContainer::queryWithXPath</a>.
-<p>
-<a href="../api_cxx/xmldoc_getattr.html">XmlDocument::getAttributeValue</a>,
-<a href="../api_cxx/xmldoc_getcont.html">XmlDocument::getContent</a>,
-<a href="../api_cxx/xmldoc_getid.html">XmlDocument::getID</a>,
-<a href="../api_cxx/xmldoc_getname.html">XmlDocument::getName</a>,
-<a href="../api_cxx/xmldoc_gettype.html">XmlDocument::getType</a>,
-<a href="../api_cxx/xmldoc_setcont.html">XmlDocument::setContent</a>,
-<a href="../api_cxx/xmldoc_setname.html">XmlDocument::setName</a>,
-and
-<a href="../api_cxx/xmldoc_settype.html">XmlDocument::setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/xmldoc_gettype.html b/db/docs/api_cxx/xmldoc_gettype.html
deleted file mode 100644
index a2c690b62..000000000
--- a/db/docs/api_cxx/xmldoc_gettype.html
+++ /dev/null
@@ -1,72 +0,0 @@
-<!--Id: xmldoc_gettype.so,v 10.4 2002/06/24 14:49:40 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlDocument::getType</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlDocument::getType</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;DbXml.hpp&gt;
-<p>
-Type
-XmlDocument::getType() const;
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlDocument::getType method returns the document type, either
-<a href="../api_cxx/xmldoc_settype.html#XmlDocument::BYTES">XmlDocument::BYTES</a>, <a href="../api_cxx/xmldoc_gettype.html#XmlDocument::UNKNOWN">XmlDocument::UNKNOWN</a>, or
-<a href="../api_cxx/xmldoc_settype.html#XmlDocument::XML">XmlDocument::XML</a>.
-<p>The XmlDocument::getType method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>The XmlDocument::getType method may fail and throw an exception encapsulating 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 document does not have a type.
-</dl>
-<p>The XmlDocument::getType method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XmlDocument::getType method may fail and
-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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_cxx/xmldocument_class.html">XmlDocument</a>, <a href="../api_cxx/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_cxx/xml_close.html">XmlContainer::close</a>,
-<a href="../api_cxx/xml_declare.html">XmlContainer::declareIndex</a>,
-<a href="../api_cxx/xml_del.html">XmlContainer::deleteDocument</a>,
-<a href="../api_cxx/xml_get.html">XmlContainer::getDocument</a>,
-<a href="../api_cxx/xml_getname.html">XmlContainer::getName</a>,
-<a href="../api_cxx/xml_open.html">XmlContainer::open</a>,
-<a href="../api_cxx/xml_put.html">XmlContainer::putDocument</a>
-and
-<a href="../api_cxx/xml_xpath.html">XmlContainer::queryWithXPath</a>.
-<p>
-<a href="../api_cxx/xmldoc_getattr.html">XmlDocument::getAttributeValue</a>,
-<a href="../api_cxx/xmldoc_getcont.html">XmlDocument::getContent</a>,
-<a href="../api_cxx/xmldoc_getid.html">XmlDocument::getID</a>,
-<a href="../api_cxx/xmldoc_getname.html">XmlDocument::getName</a>,
-<a href="../api_cxx/xmldoc_gettype.html">XmlDocument::getType</a>,
-<a href="../api_cxx/xmldoc_setcont.html">XmlDocument::setContent</a>,
-<a href="../api_cxx/xmldoc_setname.html">XmlDocument::setName</a>,
-and
-<a href="../api_cxx/xmldoc_settype.html">XmlDocument::setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/xmldoc_setattr.html b/db/docs/api_cxx/xmldoc_setattr.html
deleted file mode 100644
index 53bc5a639..000000000
--- a/db/docs/api_cxx/xmldoc_setattr.html
+++ /dev/null
@@ -1,75 +0,0 @@
-<!--Id: xmldoc_setattr.so,v 10.4 2002/06/24 14:49:40 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlDocument::setAttributeValue</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlDocument::setAttributeValue</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;DbXml.hpp&gt;
-<p>
-void
-XmlDocument::setAttributeValue(const std::string &attr,
- const std::string &value, u_int32_t flags);
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlDocument::setAttributeValue method sets the value of the specified <b>attr</b>
-annotation attribute. The only values supported are Strings.
-<p>The <b>flags</b> parameter is currently unused, and must be set to 0.
-<p>The XmlDocument::setAttributeValue method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>The XmlDocument::setAttributeValue method may fail and throw an exception encapsulating 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>If the requested item could not be returned due to insufficient memory,
-the XmlDocument::setAttributeValue method will fail and
-throw a <a href="../api_cxx/mem_class.html">DbMemoryException</a> exception.
-<p>The XmlDocument::setAttributeValue method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XmlDocument::setAttributeValue method may fail and
-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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_cxx/xmldocument_class.html">XmlDocument</a>, <a href="../api_cxx/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_cxx/xml_close.html">XmlContainer::close</a>,
-<a href="../api_cxx/xml_declare.html">XmlContainer::declareIndex</a>,
-<a href="../api_cxx/xml_del.html">XmlContainer::deleteDocument</a>,
-<a href="../api_cxx/xml_get.html">XmlContainer::getDocument</a>,
-<a href="../api_cxx/xml_getname.html">XmlContainer::getName</a>,
-<a href="../api_cxx/xml_open.html">XmlContainer::open</a>,
-<a href="../api_cxx/xml_put.html">XmlContainer::putDocument</a>
-and
-<a href="../api_cxx/xml_xpath.html">XmlContainer::queryWithXPath</a>.
-<p>
-<a href="../api_cxx/xmldoc_getattr.html">XmlDocument::getAttributeValue</a>,
-<a href="../api_cxx/xmldoc_getcont.html">XmlDocument::getContent</a>,
-<a href="../api_cxx/xmldoc_getid.html">XmlDocument::getID</a>,
-<a href="../api_cxx/xmldoc_getname.html">XmlDocument::getName</a>,
-<a href="../api_cxx/xmldoc_gettype.html">XmlDocument::getType</a>,
-<a href="../api_cxx/xmldoc_setcont.html">XmlDocument::setContent</a>,
-<a href="../api_cxx/xmldoc_setname.html">XmlDocument::setName</a>,
-and
-<a href="../api_cxx/xmldoc_settype.html">XmlDocument::setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/xmldoc_setcont.html b/db/docs/api_cxx/xmldoc_setcont.html
deleted file mode 100644
index 187c8dcc5..000000000
--- a/db/docs/api_cxx/xmldoc_setcont.html
+++ /dev/null
@@ -1,70 +0,0 @@
-<!--Id: xmldoc_setcont.so,v 10.4 2002/06/24 14:49:40 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlDocument::setContent</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlDocument::setContent</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;DbXml.hpp&gt;
-<p>
-void
-XmlDocument::setContent(const void *content, size_t len, u_int32_t flags);
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlDocument::setContent method sets the document content.
-<p>The <b>flags</b> parameter is currently unused, and must be set to 0.
-<p>The XmlDocument::setContent method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>The XmlDocument::setContent method may fail and throw an exception encapsulating 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 XmlDocument::setContent method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XmlDocument::setContent method may fail and
-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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_cxx/xmldocument_class.html">XmlDocument</a>, <a href="../api_cxx/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_cxx/xml_close.html">XmlContainer::close</a>,
-<a href="../api_cxx/xml_declare.html">XmlContainer::declareIndex</a>,
-<a href="../api_cxx/xml_del.html">XmlContainer::deleteDocument</a>,
-<a href="../api_cxx/xml_get.html">XmlContainer::getDocument</a>,
-<a href="../api_cxx/xml_getname.html">XmlContainer::getName</a>,
-<a href="../api_cxx/xml_open.html">XmlContainer::open</a>,
-<a href="../api_cxx/xml_put.html">XmlContainer::putDocument</a>
-and
-<a href="../api_cxx/xml_xpath.html">XmlContainer::queryWithXPath</a>.
-<p>
-<a href="../api_cxx/xmldoc_getattr.html">XmlDocument::getAttributeValue</a>,
-<a href="../api_cxx/xmldoc_getcont.html">XmlDocument::getContent</a>,
-<a href="../api_cxx/xmldoc_getid.html">XmlDocument::getID</a>,
-<a href="../api_cxx/xmldoc_getname.html">XmlDocument::getName</a>,
-<a href="../api_cxx/xmldoc_gettype.html">XmlDocument::getType</a>,
-<a href="../api_cxx/xmldoc_setcont.html">XmlDocument::setContent</a>,
-<a href="../api_cxx/xmldoc_setname.html">XmlDocument::setName</a>,
-and
-<a href="../api_cxx/xmldoc_settype.html">XmlDocument::setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/xmldoc_setname.html b/db/docs/api_cxx/xmldoc_setname.html
deleted file mode 100644
index 09dbe10d0..000000000
--- a/db/docs/api_cxx/xmldoc_setname.html
+++ /dev/null
@@ -1,69 +0,0 @@
-<!--Id: xmldoc_setname.so,v 10.4 2002/06/24 14:49:40 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlDocument::setName</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlDocument::setName</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;DbXml.hpp&gt;
-<p>
-void
-XmlDocument::setName(const std::string &name);
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlDocument::setName method sets the name of the document.
-<p>The XmlDocument::setName method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>The XmlDocument::setName method may fail and throw an exception encapsulating a non-zero error for the following conditions:
-<p>If the requested item could not be returned due to insufficient memory,
-the XmlDocument::setName method will fail and
-throw a <a href="../api_cxx/mem_class.html">DbMemoryException</a> exception.
-<p>The XmlDocument::setName method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XmlDocument::setName method may fail and
-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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_cxx/xmldocument_class.html">XmlDocument</a>, <a href="../api_cxx/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_cxx/xml_close.html">XmlContainer::close</a>,
-<a href="../api_cxx/xml_declare.html">XmlContainer::declareIndex</a>,
-<a href="../api_cxx/xml_del.html">XmlContainer::deleteDocument</a>,
-<a href="../api_cxx/xml_get.html">XmlContainer::getDocument</a>,
-<a href="../api_cxx/xml_getname.html">XmlContainer::getName</a>,
-<a href="../api_cxx/xml_open.html">XmlContainer::open</a>,
-<a href="../api_cxx/xml_put.html">XmlContainer::putDocument</a>
-and
-<a href="../api_cxx/xml_xpath.html">XmlContainer::queryWithXPath</a>.
-<p>
-<a href="../api_cxx/xmldoc_getattr.html">XmlDocument::getAttributeValue</a>,
-<a href="../api_cxx/xmldoc_getcont.html">XmlDocument::getContent</a>,
-<a href="../api_cxx/xmldoc_getid.html">XmlDocument::getID</a>,
-<a href="../api_cxx/xmldoc_getname.html">XmlDocument::getName</a>,
-<a href="../api_cxx/xmldoc_gettype.html">XmlDocument::getType</a>,
-<a href="../api_cxx/xmldoc_setcont.html">XmlDocument::setContent</a>,
-<a href="../api_cxx/xmldoc_setname.html">XmlDocument::setName</a>,
-and
-<a href="../api_cxx/xmldoc_settype.html">XmlDocument::setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/xmldoc_settype.html b/db/docs/api_cxx/xmldoc_settype.html
deleted file mode 100644
index 11b8e4674..000000000
--- a/db/docs/api_cxx/xmldoc_settype.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<!--Id: xmldoc_settype.so,v 10.4 2002/06/24 14:49:40 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlDocument::setType</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlDocument::setType</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;DbXml.hpp&gt;
-<p>
-void
-XmlDocument::setType(Type type);
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlDocument::setType method sets the document type. The document type
-must be set to one of the following values:
-<p><dl compact>
-<p><dt>XmlDocument::BYTES<dd>Untyped input, which cannot be indexed.
-<p><dt>XmlDocument::XML<dd>XML input.
-</dl>
-<p>The XmlDocument::setType method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>The XmlDocument::setType method may fail and throw an exception encapsulating a non-zero error for the following conditions:
-<p>The XmlDocument::setType method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XmlDocument::setType method may fail and
-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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_cxx/xmldocument_class.html">XmlDocument</a>, <a href="../api_cxx/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_cxx/xml_close.html">XmlContainer::close</a>,
-<a href="../api_cxx/xml_declare.html">XmlContainer::declareIndex</a>,
-<a href="../api_cxx/xml_del.html">XmlContainer::deleteDocument</a>,
-<a href="../api_cxx/xml_get.html">XmlContainer::getDocument</a>,
-<a href="../api_cxx/xml_getname.html">XmlContainer::getName</a>,
-<a href="../api_cxx/xml_open.html">XmlContainer::open</a>,
-<a href="../api_cxx/xml_put.html">XmlContainer::putDocument</a>
-and
-<a href="../api_cxx/xml_xpath.html">XmlContainer::queryWithXPath</a>.
-<p>
-<a href="../api_cxx/xmldoc_getattr.html">XmlDocument::getAttributeValue</a>,
-<a href="../api_cxx/xmldoc_getcont.html">XmlDocument::getContent</a>,
-<a href="../api_cxx/xmldoc_getid.html">XmlDocument::getID</a>,
-<a href="../api_cxx/xmldoc_getname.html">XmlDocument::getName</a>,
-<a href="../api_cxx/xmldoc_gettype.html">XmlDocument::getType</a>,
-<a href="../api_cxx/xmldoc_setcont.html">XmlDocument::setContent</a>,
-<a href="../api_cxx/xmldoc_setname.html">XmlDocument::setName</a>,
-and
-<a href="../api_cxx/xmldoc_settype.html">XmlDocument::setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/xmldocument_class.html b/db/docs/api_cxx/xmldocument_class.html
deleted file mode 100644
index 7487562e7..000000000
--- a/db/docs/api_cxx/xmldocument_class.html
+++ /dev/null
@@ -1,75 +0,0 @@
-<!--Id: xmldocument_class.so,v 1.9 2002/07/29 04:20:27 mjc Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlDocument</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlDocument</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;DbXml.hpp&gt;
-<p>
-class DbXml::XmlDocument {
-public:
- XmlDocument();
- XmlDocument(const XmlDocument &);
- ~XmlDocument();
- XmlDocument &operator = (const XmlDocument &)
- ...
-};
-</pre></h3>
-<h1>Description</h1>
-<p>An XmlDocument is the unit of storage within a <a href="../api_cxx/xmlcontainer_class.html">XmlContainer</a>.
-<p>A XmlDocument contains a stream of bytes that may be of type
-XML or BYTES. The <a href="../api_cxx/xmlcontainer_class.html">XmlContainer</a> will only index the content of
-XmlDocuments that contain XML. The BYTES type is supported to
-allow the storage of arbitrary content along with XML content.
-<p>All documents objects stored within a container are assigned a document
-ID, at 32-bit unsigned integral value. This ID uniquely identifies a
-document within a container. The ID is assigned by the container when
-the document is first added to the container.
-<p>The XmlDocument class supports annotation attributes. The user
-may annotate their documents with meta-information to be stored with
-their document, but not within their document.
-<h1>Class</h1>
-<a href="../api_cxx/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_cxx/xmldocument_class.html">XmlDocument</a>, <a href="../api_cxx/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_cxx/xml_close.html">XmlContainer::close</a>,
-<a href="../api_cxx/xml_declare.html">XmlContainer::declareIndex</a>,
-<a href="../api_cxx/xml_del.html">XmlContainer::deleteDocument</a>,
-<a href="../api_cxx/xml_get.html">XmlContainer::getDocument</a>,
-<a href="../api_cxx/xml_getname.html">XmlContainer::getName</a>,
-<a href="../api_cxx/xml_open.html">XmlContainer::open</a>,
-<a href="../api_cxx/xml_put.html">XmlContainer::putDocument</a>
-and
-<a href="../api_cxx/xml_xpath.html">XmlContainer::queryWithXPath</a>.
-<p>
-<a href="../api_cxx/xmldoc_getattr.html">XmlDocument::getAttributeValue</a>,
-<a href="../api_cxx/xmldoc_getcont.html">XmlDocument::getContent</a>,
-<a href="../api_cxx/xmldoc_getid.html">XmlDocument::getID</a>,
-<a href="../api_cxx/xmldoc_getname.html">XmlDocument::getName</a>,
-<a href="../api_cxx/xmldoc_gettype.html">XmlDocument::getType</a>,
-<a href="../api_cxx/xmldoc_setcont.html">XmlDocument::setContent</a>,
-<a href="../api_cxx/xmldoc_setname.html">XmlDocument::setName</a>,
-and
-<a href="../api_cxx/xmldoc_settype.html">XmlDocument::setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/xmlq_clearname.html b/db/docs/api_cxx/xmlq_clearname.html
deleted file mode 100644
index 2ce9f095a..000000000
--- a/db/docs/api_cxx/xmlq_clearname.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!--Id: xmlq_clearname.so,v 10.3 2002/06/24 14:49:40 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlQueryContext::clearNamespaces</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlQueryContext::clearNamespaces</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;DbXml.hpp&gt;
-<p>
-void
-XmlQueryContext::clearNamespaces();
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlQueryContext::clearNamespaces method removes all current namespace prefix to URI
-mappings.
-<p>The XmlQueryContext::clearNamespaces method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>The XmlQueryContext::clearNamespaces method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XmlQueryContext::clearNamespaces method may fail and
-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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_cxx/xmldocument_class.html">XmlDocument</a>, <a href="../api_cxx/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_cxx/xml_close.html">XmlContainer::close</a>,
-<a href="../api_cxx/xml_declare.html">XmlContainer::declareIndex</a>,
-<a href="../api_cxx/xml_del.html">XmlContainer::deleteDocument</a>,
-<a href="../api_cxx/xml_get.html">XmlContainer::getDocument</a>,
-<a href="../api_cxx/xml_getname.html">XmlContainer::getName</a>,
-<a href="../api_cxx/xml_open.html">XmlContainer::open</a>,
-<a href="../api_cxx/xml_put.html">XmlContainer::putDocument</a>
-and
-<a href="../api_cxx/xml_xpath.html">XmlContainer::queryWithXPath</a>.
-<p>
-<a href="../api_cxx/xmldoc_getattr.html">XmlDocument::getAttributeValue</a>,
-<a href="../api_cxx/xmldoc_getcont.html">XmlDocument::getContent</a>,
-<a href="../api_cxx/xmldoc_getid.html">XmlDocument::getID</a>,
-<a href="../api_cxx/xmldoc_getname.html">XmlDocument::getName</a>,
-<a href="../api_cxx/xmldoc_gettype.html">XmlDocument::getType</a>,
-<a href="../api_cxx/xmldoc_setcont.html">XmlDocument::setContent</a>,
-<a href="../api_cxx/xmldoc_setname.html">XmlDocument::setName</a>,
-and
-<a href="../api_cxx/xmldoc_settype.html">XmlDocument::setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/xmlq_getname.html b/db/docs/api_cxx/xmlq_getname.html
deleted file mode 100644
index c28884082..000000000
--- a/db/docs/api_cxx/xmlq_getname.html
+++ /dev/null
@@ -1,75 +0,0 @@
-<!--Id: xmlq_getname.so,v 10.5 2002/07/01 16:46:15 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlQueryContext::getNamespace</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlQueryContext::getNamespace</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;DbXml.hpp&gt;
-<p>
-std::string
-XmlQueryContext::getNamespace(const std::string &prefix);
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlQueryContext::getNamespace method returns the namespace prefix to URI mapping
-for <b>prefix</b>.
-<p>
-If no mapping is found, the XmlQueryContext::getNamespace method will return DB_NOTFOUND.
-Otherwise, the XmlQueryContext::getNamespace method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>The XmlQueryContext::getNamespace method may fail and throw an exception encapsulating 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>If the requested item could not be returned due to insufficient memory,
-the XmlQueryContext::getNamespace method will fail and
-throw a <a href="../api_cxx/mem_class.html">DbMemoryException</a> exception.
-<p>The XmlQueryContext::getNamespace method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XmlQueryContext::getNamespace method may fail and
-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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_cxx/xmldocument_class.html">XmlDocument</a>, <a href="../api_cxx/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_cxx/xml_close.html">XmlContainer::close</a>,
-<a href="../api_cxx/xml_declare.html">XmlContainer::declareIndex</a>,
-<a href="../api_cxx/xml_del.html">XmlContainer::deleteDocument</a>,
-<a href="../api_cxx/xml_get.html">XmlContainer::getDocument</a>,
-<a href="../api_cxx/xml_getname.html">XmlContainer::getName</a>,
-<a href="../api_cxx/xml_open.html">XmlContainer::open</a>,
-<a href="../api_cxx/xml_put.html">XmlContainer::putDocument</a>
-and
-<a href="../api_cxx/xml_xpath.html">XmlContainer::queryWithXPath</a>.
-<p>
-<a href="../api_cxx/xmldoc_getattr.html">XmlDocument::getAttributeValue</a>,
-<a href="../api_cxx/xmldoc_getcont.html">XmlDocument::getContent</a>,
-<a href="../api_cxx/xmldoc_getid.html">XmlDocument::getID</a>,
-<a href="../api_cxx/xmldoc_getname.html">XmlDocument::getName</a>,
-<a href="../api_cxx/xmldoc_gettype.html">XmlDocument::getType</a>,
-<a href="../api_cxx/xmldoc_setcont.html">XmlDocument::setContent</a>,
-<a href="../api_cxx/xmldoc_setname.html">XmlDocument::setName</a>,
-and
-<a href="../api_cxx/xmldoc_settype.html">XmlDocument::setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/xmlq_getvar.html b/db/docs/api_cxx/xmlq_getvar.html
deleted file mode 100644
index 2aa7f2ab7..000000000
--- a/db/docs/api_cxx/xmlq_getvar.html
+++ /dev/null
@@ -1,72 +0,0 @@
-<!--Id: xmlq_getvar.so,v 10.5 2002/07/01 16:46:16 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlQueryContext::getVariableValue</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlQueryContext::getVariableValue</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;DbXml.hpp&gt;
-<p>
-XmlValue
-XmlQueryContext::getVariableValue(const std::string &name);
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlQueryContext::getVariableValue method returns the value bound to the variable
-<b>name</b>.
-<p>
-If there is no value, the XmlQueryContext::getVariableValue method will return DB_NOTFOUND.
-Otherwise, the XmlQueryContext::getVariableValue method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>The XmlQueryContext::getVariableValue method may fail and throw an exception encapsulating 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 XmlQueryContext::getVariableValue method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XmlQueryContext::getVariableValue method may fail and
-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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_cxx/xmldocument_class.html">XmlDocument</a>, <a href="../api_cxx/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_cxx/xml_close.html">XmlContainer::close</a>,
-<a href="../api_cxx/xml_declare.html">XmlContainer::declareIndex</a>,
-<a href="../api_cxx/xml_del.html">XmlContainer::deleteDocument</a>,
-<a href="../api_cxx/xml_get.html">XmlContainer::getDocument</a>,
-<a href="../api_cxx/xml_getname.html">XmlContainer::getName</a>,
-<a href="../api_cxx/xml_open.html">XmlContainer::open</a>,
-<a href="../api_cxx/xml_put.html">XmlContainer::putDocument</a>
-and
-<a href="../api_cxx/xml_xpath.html">XmlContainer::queryWithXPath</a>.
-<p>
-<a href="../api_cxx/xmldoc_getattr.html">XmlDocument::getAttributeValue</a>,
-<a href="../api_cxx/xmldoc_getcont.html">XmlDocument::getContent</a>,
-<a href="../api_cxx/xmldoc_getid.html">XmlDocument::getID</a>,
-<a href="../api_cxx/xmldoc_getname.html">XmlDocument::getName</a>,
-<a href="../api_cxx/xmldoc_gettype.html">XmlDocument::getType</a>,
-<a href="../api_cxx/xmldoc_setcont.html">XmlDocument::setContent</a>,
-<a href="../api_cxx/xmldoc_setname.html">XmlDocument::setName</a>,
-and
-<a href="../api_cxx/xmldoc_settype.html">XmlDocument::setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/xmlq_remname.html b/db/docs/api_cxx/xmlq_remname.html
deleted file mode 100644
index 5d9b457da..000000000
--- a/db/docs/api_cxx/xmlq_remname.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!--Id: xmlq_remname.so,v 10.3 2002/06/24 14:49:41 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlQueryContext::removeNamespace</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlQueryContext::removeNamespace</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;DbXml.hpp&gt;
-<p>
-void
-XmlQueryContext::removeNamespace(const std::string &prefix);
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlQueryContext::removeNamespace method removes the namespace prefix to URI mapping
-for <b>prefix</b>. A prefix with no mapping is ignored.
-<p>The XmlQueryContext::removeNamespace method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>The XmlQueryContext::removeNamespace method may fail and throw an exception encapsulating a non-zero error for the following conditions:
-<p>The XmlQueryContext::removeNamespace method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XmlQueryContext::removeNamespace method may fail and
-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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_cxx/xmldocument_class.html">XmlDocument</a>, <a href="../api_cxx/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_cxx/xml_close.html">XmlContainer::close</a>,
-<a href="../api_cxx/xml_declare.html">XmlContainer::declareIndex</a>,
-<a href="../api_cxx/xml_del.html">XmlContainer::deleteDocument</a>,
-<a href="../api_cxx/xml_get.html">XmlContainer::getDocument</a>,
-<a href="../api_cxx/xml_getname.html">XmlContainer::getName</a>,
-<a href="../api_cxx/xml_open.html">XmlContainer::open</a>,
-<a href="../api_cxx/xml_put.html">XmlContainer::putDocument</a>
-and
-<a href="../api_cxx/xml_xpath.html">XmlContainer::queryWithXPath</a>.
-<p>
-<a href="../api_cxx/xmldoc_getattr.html">XmlDocument::getAttributeValue</a>,
-<a href="../api_cxx/xmldoc_getcont.html">XmlDocument::getContent</a>,
-<a href="../api_cxx/xmldoc_getid.html">XmlDocument::getID</a>,
-<a href="../api_cxx/xmldoc_getname.html">XmlDocument::getName</a>,
-<a href="../api_cxx/xmldoc_gettype.html">XmlDocument::getType</a>,
-<a href="../api_cxx/xmldoc_setcont.html">XmlDocument::setContent</a>,
-<a href="../api_cxx/xmldoc_setname.html">XmlDocument::setName</a>,
-and
-<a href="../api_cxx/xmldoc_settype.html">XmlDocument::setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/xmlq_seteval.html b/db/docs/api_cxx/xmlq_seteval.html
deleted file mode 100644
index e02977224..000000000
--- a/db/docs/api_cxx/xmlq_seteval.html
+++ /dev/null
@@ -1,80 +0,0 @@
-<!--Id: xmlq_seteval.so,v 10.3 2002/06/24 14:49:41 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlQueryContext::setEvaluationType</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlQueryContext::setEvaluationType</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;DbXml.hpp&gt;
-<p>
-void
-XmlQueryContext::setEvaluationType(EvaluationType type);
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlQueryContext::setEvaluationType method sets the query evaluation type. This option
-is provided as large result sets could consume large amounts of memory.
-By electing lazy evaluation the caller can read documents into memory
-as needed. The <b>type</b> must be set to one of the following
-values:
-<p><dl compact>
-<p><dt>XmlQueryContext::Eager<dd>The whole query is executed and its restultant values derived and stored
-in-memory before the call to <a href="../api_cxx/xml_xpath.html">XmlContainer::queryWithXPath</a> returns.
-<p><dt>XmlQueryContext::Lazy<dd>Perform as little up-front processing as possible, deferring all
-processing to results iteration. This means that as each call to
-<a href="../api_cxx/xmlr_next.html">XmlResults::next</a> is called the next resultant value is determined.
-</dl>
-<p>The XmlQueryContext::setEvaluationType method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>The XmlQueryContext::setEvaluationType method may fail and throw an exception encapsulating 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 XmlQueryContext::setEvaluationType method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XmlQueryContext::setEvaluationType method may fail and
-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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_cxx/xmldocument_class.html">XmlDocument</a>, <a href="../api_cxx/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_cxx/xml_close.html">XmlContainer::close</a>,
-<a href="../api_cxx/xml_declare.html">XmlContainer::declareIndex</a>,
-<a href="../api_cxx/xml_del.html">XmlContainer::deleteDocument</a>,
-<a href="../api_cxx/xml_get.html">XmlContainer::getDocument</a>,
-<a href="../api_cxx/xml_getname.html">XmlContainer::getName</a>,
-<a href="../api_cxx/xml_open.html">XmlContainer::open</a>,
-<a href="../api_cxx/xml_put.html">XmlContainer::putDocument</a>
-and
-<a href="../api_cxx/xml_xpath.html">XmlContainer::queryWithXPath</a>.
-<p>
-<a href="../api_cxx/xmldoc_getattr.html">XmlDocument::getAttributeValue</a>,
-<a href="../api_cxx/xmldoc_getcont.html">XmlDocument::getContent</a>,
-<a href="../api_cxx/xmldoc_getid.html">XmlDocument::getID</a>,
-<a href="../api_cxx/xmldoc_getname.html">XmlDocument::getName</a>,
-<a href="../api_cxx/xmldoc_gettype.html">XmlDocument::getType</a>,
-<a href="../api_cxx/xmldoc_setcont.html">XmlDocument::setContent</a>,
-<a href="../api_cxx/xmldoc_setname.html">XmlDocument::setName</a>,
-and
-<a href="../api_cxx/xmldoc_settype.html">XmlDocument::setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/xmlq_setname.html b/db/docs/api_cxx/xmlq_setname.html
deleted file mode 100644
index 7195577fb..000000000
--- a/db/docs/api_cxx/xmlq_setname.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!--Id: xmlq_setname.so,v 10.3 2002/06/24 14:49:41 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlQueryContext::setNamespace</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlQueryContext::setNamespace</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;DbXml.hpp&gt;
-<p>
-void
-XmlQueryContext::setNamespace(
- const std::string &prefix, const std::string &uri);
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlQueryContext::setNamespace method defines the namespace prefix to URI mapping
-for <b>prefix</b> and <b>uri</b>.
-<p>The XmlQueryContext::setNamespace method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>The XmlQueryContext::setNamespace method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XmlQueryContext::setNamespace method may fail and
-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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_cxx/xmldocument_class.html">XmlDocument</a>, <a href="../api_cxx/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_cxx/xml_close.html">XmlContainer::close</a>,
-<a href="../api_cxx/xml_declare.html">XmlContainer::declareIndex</a>,
-<a href="../api_cxx/xml_del.html">XmlContainer::deleteDocument</a>,
-<a href="../api_cxx/xml_get.html">XmlContainer::getDocument</a>,
-<a href="../api_cxx/xml_getname.html">XmlContainer::getName</a>,
-<a href="../api_cxx/xml_open.html">XmlContainer::open</a>,
-<a href="../api_cxx/xml_put.html">XmlContainer::putDocument</a>
-and
-<a href="../api_cxx/xml_xpath.html">XmlContainer::queryWithXPath</a>.
-<p>
-<a href="../api_cxx/xmldoc_getattr.html">XmlDocument::getAttributeValue</a>,
-<a href="../api_cxx/xmldoc_getcont.html">XmlDocument::getContent</a>,
-<a href="../api_cxx/xmldoc_getid.html">XmlDocument::getID</a>,
-<a href="../api_cxx/xmldoc_getname.html">XmlDocument::getName</a>,
-<a href="../api_cxx/xmldoc_gettype.html">XmlDocument::getType</a>,
-<a href="../api_cxx/xmldoc_setcont.html">XmlDocument::setContent</a>,
-<a href="../api_cxx/xmldoc_setname.html">XmlDocument::setName</a>,
-and
-<a href="../api_cxx/xmldoc_settype.html">XmlDocument::setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/xmlq_setret.html b/db/docs/api_cxx/xmlq_setret.html
deleted file mode 100644
index 938f340f2..000000000
--- a/db/docs/api_cxx/xmlq_setret.html
+++ /dev/null
@@ -1,86 +0,0 @@
-<!--Id: xmlq_setret.so,v 10.4 2002/06/24 14:49:41 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlQueryContext::setReturnType</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlQueryContext::setReturnType</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;DbXml.hpp&gt;
-<p>
-void
-XmlQueryContext::setReturnType(ReturnType type);
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlQueryContext::setReturnType method sets the query return type. The query can
-return candidate documents, result documents, or result values. A
-candidate document is a document that may match the XPath expression,
-a result document is a document that does match the XPath expression,
-and a result value is the result of executing the XPath expression
-against the result document.
-<p>For some expressions it might be known that the candidate set is in fact
-equivalent to the result set. For these expressions there is no need to
-pass the candidate documents through a filter to eliminate false
-positives. The query processor can detect some expressions of this
-nature, but not all. The user application may know better, or may want
-to do its own false positive elimination.
-<p>The <b>type</b> must be set to one of the following values:
-<p><dl compact>
-<p><dt>XmlQueryContext::CandidateDocuments<dd>Return documents that may match the XPath expression.
-<p><dt>XmlQueryContext::ResultDocuments<dd>Return documents that match the XPath expression.
-<p><dt>XmlQueryContext::ResultValues<dd>Project the XPath expression over the matching document.
-</dl>
-<p>The XmlQueryContext::setReturnType method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>The XmlQueryContext::setReturnType method may fail and throw an exception encapsulating 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 XmlQueryContext::setReturnType method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XmlQueryContext::setReturnType method may fail and
-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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_cxx/xmldocument_class.html">XmlDocument</a>, <a href="../api_cxx/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_cxx/xml_close.html">XmlContainer::close</a>,
-<a href="../api_cxx/xml_declare.html">XmlContainer::declareIndex</a>,
-<a href="../api_cxx/xml_del.html">XmlContainer::deleteDocument</a>,
-<a href="../api_cxx/xml_get.html">XmlContainer::getDocument</a>,
-<a href="../api_cxx/xml_getname.html">XmlContainer::getName</a>,
-<a href="../api_cxx/xml_open.html">XmlContainer::open</a>,
-<a href="../api_cxx/xml_put.html">XmlContainer::putDocument</a>
-and
-<a href="../api_cxx/xml_xpath.html">XmlContainer::queryWithXPath</a>.
-<p>
-<a href="../api_cxx/xmldoc_getattr.html">XmlDocument::getAttributeValue</a>,
-<a href="../api_cxx/xmldoc_getcont.html">XmlDocument::getContent</a>,
-<a href="../api_cxx/xmldoc_getid.html">XmlDocument::getID</a>,
-<a href="../api_cxx/xmldoc_getname.html">XmlDocument::getName</a>,
-<a href="../api_cxx/xmldoc_gettype.html">XmlDocument::getType</a>,
-<a href="../api_cxx/xmldoc_setcont.html">XmlDocument::setContent</a>,
-<a href="../api_cxx/xmldoc_setname.html">XmlDocument::setName</a>,
-and
-<a href="../api_cxx/xmldoc_settype.html">XmlDocument::setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/xmlq_setvar.html b/db/docs/api_cxx/xmlq_setvar.html
deleted file mode 100644
index 0d605d32e..000000000
--- a/db/docs/api_cxx/xmlq_setvar.html
+++ /dev/null
@@ -1,65 +0,0 @@
-<!--Id: xmlq_setvar.so,v 10.3 2002/06/24 14:49:41 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlQueryContext::setVariableValue</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlQueryContext::setVariableValue</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;DbXml.hpp&gt;
-<p>
-void
-XmlQueryContext::setVariableValue(
- const std::string &name, const XmlValue &value);
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlQueryContext::setVariableValue method binds the variable <b>name</b> to the value
-<b>value</b>.
-<h1>Errors</h1>
-<p>The XmlQueryContext::setVariableValue method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XmlQueryContext::setVariableValue method may fail and
-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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_cxx/xmldocument_class.html">XmlDocument</a>, <a href="../api_cxx/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_cxx/xml_close.html">XmlContainer::close</a>,
-<a href="../api_cxx/xml_declare.html">XmlContainer::declareIndex</a>,
-<a href="../api_cxx/xml_del.html">XmlContainer::deleteDocument</a>,
-<a href="../api_cxx/xml_get.html">XmlContainer::getDocument</a>,
-<a href="../api_cxx/xml_getname.html">XmlContainer::getName</a>,
-<a href="../api_cxx/xml_open.html">XmlContainer::open</a>,
-<a href="../api_cxx/xml_put.html">XmlContainer::putDocument</a>
-and
-<a href="../api_cxx/xml_xpath.html">XmlContainer::queryWithXPath</a>.
-<p>
-<a href="../api_cxx/xmldoc_getattr.html">XmlDocument::getAttributeValue</a>,
-<a href="../api_cxx/xmldoc_getcont.html">XmlDocument::getContent</a>,
-<a href="../api_cxx/xmldoc_getid.html">XmlDocument::getID</a>,
-<a href="../api_cxx/xmldoc_getname.html">XmlDocument::getName</a>,
-<a href="../api_cxx/xmldoc_gettype.html">XmlDocument::getType</a>,
-<a href="../api_cxx/xmldoc_setcont.html">XmlDocument::setContent</a>,
-<a href="../api_cxx/xmldoc_setname.html">XmlDocument::setName</a>,
-and
-<a href="../api_cxx/xmldoc_settype.html">XmlDocument::setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/xmlquery_class.html b/db/docs/api_cxx/xmlquery_class.html
deleted file mode 100644
index f88096e1b..000000000
--- a/db/docs/api_cxx/xmlquery_class.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!--Id: xmlquery_class.so,v 1.9 2002/07/29 04:20:27 mjc Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlQueryContext</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlQueryContext</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;DbXml.hpp&gt;
-<p>
-class DbXml::XmlQueryContext {
-public:
- XmlQueryContext();
- XmlQueryContext(const XmlQueryContext &);
- ~XmlQueryContext();
- XmlQueryContext &operator = (const XmlQueryContext &)
- ...
-};
-</pre></h3>
-<h1>Description</h1>
-<p>An XmlQueryContext is the context within which a query is
-performed against an <a href="../api_cxx/xmlcontainer_class.html">XmlContainer</a>. This context includes a
-namespace mapping, variable bindings, and flags that determine how the
-query result set should be determined and returned to the caller.
-<p>The XPath syntax permits expressions to refer to namespace prefixes,
-but not to define them. The XmlQueryContext class provides
-namespace management methods so the caller may manage the namespace
-prefix to URI mapping. The XPath syntax also permits expressions to
-refer to variables, but not to define them. The XmlQueryContext class
-provides methods so the caller may manage the variable to value
-bindings.
-<h1>Class</h1>
-<a href="../api_cxx/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_cxx/xmldocument_class.html">XmlDocument</a>, <a href="../api_cxx/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_cxx/xml_close.html">XmlContainer::close</a>,
-<a href="../api_cxx/xml_declare.html">XmlContainer::declareIndex</a>,
-<a href="../api_cxx/xml_del.html">XmlContainer::deleteDocument</a>,
-<a href="../api_cxx/xml_get.html">XmlContainer::getDocument</a>,
-<a href="../api_cxx/xml_getname.html">XmlContainer::getName</a>,
-<a href="../api_cxx/xml_open.html">XmlContainer::open</a>,
-<a href="../api_cxx/xml_put.html">XmlContainer::putDocument</a>
-and
-<a href="../api_cxx/xml_xpath.html">XmlContainer::queryWithXPath</a>.
-<p>
-<a href="../api_cxx/xmldoc_getattr.html">XmlDocument::getAttributeValue</a>,
-<a href="../api_cxx/xmldoc_getcont.html">XmlDocument::getContent</a>,
-<a href="../api_cxx/xmldoc_getid.html">XmlDocument::getID</a>,
-<a href="../api_cxx/xmldoc_getname.html">XmlDocument::getName</a>,
-<a href="../api_cxx/xmldoc_gettype.html">XmlDocument::getType</a>,
-<a href="../api_cxx/xmldoc_setcont.html">XmlDocument::setContent</a>,
-<a href="../api_cxx/xmldoc_setname.html">XmlDocument::setName</a>,
-and
-<a href="../api_cxx/xmldoc_settype.html">XmlDocument::setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/xmlr_next.html b/db/docs/api_cxx/xmlr_next.html
deleted file mode 100644
index 498e3390a..000000000
--- a/db/docs/api_cxx/xmlr_next.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<!--Id: xmlr_next.so,v 10.3 2002/06/24 14:49:41 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlResults::next</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlResults::next</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;DbXml.hpp&gt;
-<p>
-void
-XmlResults::next(DbTxn *txnid, XmlValue &value);
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlResults::next method returns the next value in the results into the
-memory referenced by <b>value</b>. When no more values remain in the
-result set, XmlResults::next will return a value with an empty pointer,
-so that UNREF==xmlv_get will return 0.
-<p>The XmlResults::next method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>If the requested item could not be returned due to insufficient memory,
-the XmlResults::next method will fail and
-throw a <a href="../api_cxx/mem_class.html">DbMemoryException</a> exception.
-<p>The XmlResults::next method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XmlResults::next method may fail and
-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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_cxx/xmldocument_class.html">XmlDocument</a>, <a href="../api_cxx/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_cxx/xml_close.html">XmlContainer::close</a>,
-<a href="../api_cxx/xml_declare.html">XmlContainer::declareIndex</a>,
-<a href="../api_cxx/xml_del.html">XmlContainer::deleteDocument</a>,
-<a href="../api_cxx/xml_get.html">XmlContainer::getDocument</a>,
-<a href="../api_cxx/xml_getname.html">XmlContainer::getName</a>,
-<a href="../api_cxx/xml_open.html">XmlContainer::open</a>,
-<a href="../api_cxx/xml_put.html">XmlContainer::putDocument</a>
-and
-<a href="../api_cxx/xml_xpath.html">XmlContainer::queryWithXPath</a>.
-<p>
-<a href="../api_cxx/xmldoc_getattr.html">XmlDocument::getAttributeValue</a>,
-<a href="../api_cxx/xmldoc_getcont.html">XmlDocument::getContent</a>,
-<a href="../api_cxx/xmldoc_getid.html">XmlDocument::getID</a>,
-<a href="../api_cxx/xmldoc_getname.html">XmlDocument::getName</a>,
-<a href="../api_cxx/xmldoc_gettype.html">XmlDocument::getType</a>,
-<a href="../api_cxx/xmldoc_setcont.html">XmlDocument::setContent</a>,
-<a href="../api_cxx/xmldoc_setname.html">XmlDocument::setName</a>,
-and
-<a href="../api_cxx/xmldoc_settype.html">XmlDocument::setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/xmlr_reset.html b/db/docs/api_cxx/xmlr_reset.html
deleted file mode 100644
index a1cffe91c..000000000
--- a/db/docs/api_cxx/xmlr_reset.html
+++ /dev/null
@@ -1,72 +0,0 @@
-<!--Id: xmlr_reset.so,v 10.2 2002/06/24 14:49:42 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlResults::reset</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlResults::reset</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;DbXml.hpp&gt;
-<p>
-void
-XmlResults::reset()
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlResults::reset method reset the results iterator, for eager
-evaluation. If the query was processed with eager evaluation then reset
-will reset the iterator so a subsequent call to <a href="../api_cxx/xmlr_next.html">XmlResults::next</a> method will
-return the first value in the result set. If the query was processed
-with lazy evaluation then XmlResults::reset will have no effect.
-<p>The XmlResults::reset method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>If the requested item could not be returned due to insufficient memory,
-the XmlResults::reset method will fail and
-throw a <a href="../api_cxx/mem_class.html">DbMemoryException</a> exception.
-<p>The XmlResults::reset method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XmlResults::reset method may fail and
-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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_cxx/xmldocument_class.html">XmlDocument</a>, <a href="../api_cxx/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_cxx/xml_close.html">XmlContainer::close</a>,
-<a href="../api_cxx/xml_declare.html">XmlContainer::declareIndex</a>,
-<a href="../api_cxx/xml_del.html">XmlContainer::deleteDocument</a>,
-<a href="../api_cxx/xml_get.html">XmlContainer::getDocument</a>,
-<a href="../api_cxx/xml_getname.html">XmlContainer::getName</a>,
-<a href="../api_cxx/xml_open.html">XmlContainer::open</a>,
-<a href="../api_cxx/xml_put.html">XmlContainer::putDocument</a>
-and
-<a href="../api_cxx/xml_xpath.html">XmlContainer::queryWithXPath</a>.
-<p>
-<a href="../api_cxx/xmldoc_getattr.html">XmlDocument::getAttributeValue</a>,
-<a href="../api_cxx/xmldoc_getcont.html">XmlDocument::getContent</a>,
-<a href="../api_cxx/xmldoc_getid.html">XmlDocument::getID</a>,
-<a href="../api_cxx/xmldoc_getname.html">XmlDocument::getName</a>,
-<a href="../api_cxx/xmldoc_gettype.html">XmlDocument::getType</a>,
-<a href="../api_cxx/xmldoc_setcont.html">XmlDocument::setContent</a>,
-<a href="../api_cxx/xmldoc_setname.html">XmlDocument::setName</a>,
-and
-<a href="../api_cxx/xmldoc_settype.html">XmlDocument::setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/xmlresults_class.html b/db/docs/api_cxx/xmlresults_class.html
deleted file mode 100644
index 3e7d95b3e..000000000
--- a/db/docs/api_cxx/xmlresults_class.html
+++ /dev/null
@@ -1,79 +0,0 @@
-<!--Id: xmlresults_class.so,v 1.8 2002/07/29 04:20:27 mjc Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlResults</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlResults</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;DbXml.hpp&gt;
-<p>
-class DbXml::XmlResults {
-public:
- XmlResults(const XmlResults &);
- ~XmlResults();
- XmlResults &operator = (const XmlResults &)
- ...
-};
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlResults class encapsulates the results of a query against
-an <a href="../api_cxx/xmlcontainer_class.html">XmlContainer</a>.
-<p>The results of a query are a collection of <a href="../api_cxx/xmlvalue_class.html">XmlValue</a>s. The
-<a href="../api_cxx/xmlvalue_class.html">XmlValue</a>s may be either documents or nodesets. If the query
-context selected a return type of <a href="../api_cxx/xmlq_setret.html#XmlQueryContext::ResultValues">XmlQueryContext::ResultValues</a>
-then the values will be of type NodeListValue, otherwise they will be
-of type DocumentValue.
-<p>An XmlResults object is created by calling <a href="../api_cxx/xml_xpath.html">XmlContainer::queryWithXPath</a>.
-If the query context called for lazy expression evaluation then the
-resultant values will be computed as needed. If eager evaluation was
-selected the resultant values are stored within the XmlResults
-object.
-<p>XmlResults provides an iteration interface through its next()
-method. When there are no more values available the passed back value
-pointer will be zero. If eager evaluation was selected then the reset
-method can be called to reset the iterator, and the next call to next()
-will return the first value of the results.
-<h1>Class</h1>
-<a href="../api_cxx/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_cxx/xmldocument_class.html">XmlDocument</a>, <a href="../api_cxx/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_cxx/xml_close.html">XmlContainer::close</a>,
-<a href="../api_cxx/xml_declare.html">XmlContainer::declareIndex</a>,
-<a href="../api_cxx/xml_del.html">XmlContainer::deleteDocument</a>,
-<a href="../api_cxx/xml_get.html">XmlContainer::getDocument</a>,
-<a href="../api_cxx/xml_getname.html">XmlContainer::getName</a>,
-<a href="../api_cxx/xml_open.html">XmlContainer::open</a>,
-<a href="../api_cxx/xml_put.html">XmlContainer::putDocument</a>
-and
-<a href="../api_cxx/xml_xpath.html">XmlContainer::queryWithXPath</a>.
-<p>
-<a href="../api_cxx/xmldoc_getattr.html">XmlDocument::getAttributeValue</a>,
-<a href="../api_cxx/xmldoc_getcont.html">XmlDocument::getContent</a>,
-<a href="../api_cxx/xmldoc_getid.html">XmlDocument::getID</a>,
-<a href="../api_cxx/xmldoc_getname.html">XmlDocument::getName</a>,
-<a href="../api_cxx/xmldoc_gettype.html">XmlDocument::getType</a>,
-<a href="../api_cxx/xmldoc_setcont.html">XmlDocument::setContent</a>,
-<a href="../api_cxx/xmldoc_setname.html">XmlDocument::setName</a>,
-and
-<a href="../api_cxx/xmldoc_settype.html">XmlDocument::setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/xmlvalue_class.html b/db/docs/api_cxx/xmlvalue_class.html
deleted file mode 100644
index 981a59c72..000000000
--- a/db/docs/api_cxx/xmlvalue_class.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!--Id: xmlvalue_class.so,v 1.4 2002/07/29 04:20:28 mjc Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlValue</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlValue</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;DbXml.hpp&gt;
-<p>
-class DbXml::XmlValue {
-public:
- XmlValue ()
- XmlValue (const std::string &v)
- XmlValue (const char *v)
- XmlValue (double v)
- XmlValue (bool v)
- XmlValue (XmlDocument &v)
- XmlValue (DOM_NodeList &v)
- XmlValue (Type type, const std::string &v)
- virtual ~XmlValue ()
- XmlValue (const XmlValue &)
- XmlValue & operator= (const XmlValue &)
- ...
-};
-</pre></h3>
-<h1>Description</h1>
-<p>An XmlValue is the value of a node in an XML document.
-<p>The value types XmlValue::BOOLEAN, XmlValue::NUMBER, and
-XmlValue::STRING are defined in the W3C XPath 1.0 specification.
-This implementation adds the value types XmlValue::DOCUMENT,
-XmlValue::NODELIST, and XmlValue::VARIABLE.
-<p>The query context is passed though each of the XmlValue methods as the
-value of an XmlValue object of type Variable is taken from the context.
-If no context is provided and a lookup is performed then
-XmlException::NO_VARIABLE_BINDING will be thrown. This exception is also
-thrown if a context is provided, but a value is not bound to the
-variable referred to in the XmlValue object.
-<p><dl compact>
-<p><dt>DOM_NodeList asNodeList (const XmlQueryContext *context) const<dd>Return the value as a NodeList.
-<dt>XmlDocument asDocument (const XmlQueryContext *context) const<dd>Return the value as a Document.
-<dt>XmlValue::Type getType (const XmlQueryContext *context) const<dd>Return the type of the value.
-<dt>bool asBoolean (const XmlQueryContext *context) const<dd>Return the value as a Boolean.
-<dt>bool equals (const XmlValue &v, const XmlQueryContext *context) const<dd>Compare two values for equality.
-<dt>bool isBoolean (const XmlQueryContext *context) const<dd>Return if the value is a Boolean.
-<dt>bool isDocument (const XmlQueryContext *context) const<dd>Return if the value is a Document.
-<dt>bool isNull () const<dd>Return if the value has no value.
-<dt>bool isNumber (const XmlQueryContext *context) const<dd>Return if the value is a Number.
-<dt>bool isString (const XmlQueryContext *context) const<dd>Return if the value is a String.
-<dt>bool isVariable (const XmlQueryContext *context) const<dd>Return if the value is a Variable.
-<dt>double asNumber (const XmlQueryContext *context) const<dd>Return the value as a Number.
-<dt>isNodeList (const XmlQueryContext *context) const<dd>Return if the value is a NodeList.
-<dt>std::string asString (const XmlQueryContext *context) const<dd>Return the value as a String.
-</dl>
-<h1>Class</h1>
-<a href="../api_cxx/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_cxx/xmldocument_class.html">XmlDocument</a>, <a href="../api_cxx/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_cxx/xml_close.html">XmlContainer::close</a>,
-<a href="../api_cxx/xml_declare.html">XmlContainer::declareIndex</a>,
-<a href="../api_cxx/xml_del.html">XmlContainer::deleteDocument</a>,
-<a href="../api_cxx/xml_get.html">XmlContainer::getDocument</a>,
-<a href="../api_cxx/xml_getname.html">XmlContainer::getName</a>,
-<a href="../api_cxx/xml_open.html">XmlContainer::open</a>,
-<a href="../api_cxx/xml_put.html">XmlContainer::putDocument</a>
-and
-<a href="../api_cxx/xml_xpath.html">XmlContainer::queryWithXPath</a>.
-<p>
-<a href="../api_cxx/xmldoc_getattr.html">XmlDocument::getAttributeValue</a>,
-<a href="../api_cxx/xmldoc_getcont.html">XmlDocument::getContent</a>,
-<a href="../api_cxx/xmldoc_getid.html">XmlDocument::getID</a>,
-<a href="../api_cxx/xmldoc_getname.html">XmlDocument::getName</a>,
-<a href="../api_cxx/xmldoc_gettype.html">XmlDocument::getType</a>,
-<a href="../api_cxx/xmldoc_setcont.html">XmlDocument::setContent</a>,
-<a href="../api_cxx/xmldoc_setname.html">XmlDocument::setName</a>,
-and
-<a href="../api_cxx/xmldoc_settype.html">XmlDocument::setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/xmlxpathexp_class.html b/db/docs/api_cxx/xmlxpathexp_class.html
deleted file mode 100644
index c8f528d9b..000000000
--- a/db/docs/api_cxx/xmlxpathexp_class.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!--Id: xmlxpathexp_class.so,v 1.3 2002/07/29 04:20:28 mjc Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XPathExpression</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XPathExpression</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;DbXml.hpp&gt;
-<p>
-class DbXml::XPathExpression {
-public:
- XPathExpression ()
- virtual ~XPathExpression ()
- XPathExpression (const XPathExpression &)
- XPathExpression & operator= (const XPathExpression &)
- ...
-};
-</pre></h3>
-<h1>Description</h1>
-<p>An XPathExpression represents a parsed XPath expression. They
-are created with <a href="../api_cxx/xml_xparse.html">XmlContainer::parseXPathExpression</a> and evaluated with <a href="../api_cxx/xml_xpath.html">XmlContainer::queryWithXPath</a>.
-<p>Parsed XPath expressions are useful as the cost of the expression
-parsing and optimization can be amortized over many evaluations.
-<h1>Class</h1>
-<a href="../api_cxx/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_cxx/xmldocument_class.html">XmlDocument</a>, <a href="../api_cxx/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_cxx/xml_close.html">XmlContainer::close</a>,
-<a href="../api_cxx/xml_declare.html">XmlContainer::declareIndex</a>,
-<a href="../api_cxx/xml_del.html">XmlContainer::deleteDocument</a>,
-<a href="../api_cxx/xml_get.html">XmlContainer::getDocument</a>,
-<a href="../api_cxx/xml_getname.html">XmlContainer::getName</a>,
-<a href="../api_cxx/xml_open.html">XmlContainer::open</a>,
-<a href="../api_cxx/xml_put.html">XmlContainer::putDocument</a>
-and
-<a href="../api_cxx/xml_xpath.html">XmlContainer::queryWithXPath</a>.
-<p>
-<a href="../api_cxx/xmldoc_getattr.html">XmlDocument::getAttributeValue</a>,
-<a href="../api_cxx/xmldoc_getcont.html">XmlDocument::getContent</a>,
-<a href="../api_cxx/xmldoc_getid.html">XmlDocument::getID</a>,
-<a href="../api_cxx/xmldoc_getname.html">XmlDocument::getName</a>,
-<a href="../api_cxx/xmldoc_gettype.html">XmlDocument::getType</a>,
-<a href="../api_cxx/xmldoc_setcont.html">XmlDocument::setContent</a>,
-<a href="../api_cxx/xmldoc_setname.html">XmlDocument::setName</a>,
-and
-<a href="../api_cxx/xmldoc_settype.html">XmlDocument::setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_cxx/xmlxpe_get.html b/db/docs/api_cxx/xmlxpe_get.html
deleted file mode 100644
index 7c8d5c989..000000000
--- a/db/docs/api_cxx/xmlxpe_get.html
+++ /dev/null
@@ -1,65 +0,0 @@
-<!--Id: xmlxpe_get.so,v 10.1 2002/06/25 17:17:40 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XPathExpression::getXPathQuery</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XPathExpression::getXPathQuery</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-#include &lt;DbXml.hpp&gt;
-<p>
-std::string
-XPathExpression::getXPathQuery() const
-</pre></h3>
-<h1>Description</h1>
-<p>The XPathExpression::getXPathQuery method returns the Xpath query as a string.
-<p>The XPathExpression::getXPathQuery method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>The XPathExpression::getXPathQuery method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XPathExpression::getXPathQuery method may fail and
-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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_cxx/xmldocument_class.html">XmlDocument</a>, <a href="../api_cxx/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_cxx/xml_close.html">XmlContainer::close</a>,
-<a href="../api_cxx/xml_declare.html">XmlContainer::declareIndex</a>,
-<a href="../api_cxx/xml_del.html">XmlContainer::deleteDocument</a>,
-<a href="../api_cxx/xml_get.html">XmlContainer::getDocument</a>,
-<a href="../api_cxx/xml_getname.html">XmlContainer::getName</a>,
-<a href="../api_cxx/xml_open.html">XmlContainer::open</a>,
-<a href="../api_cxx/xml_put.html">XmlContainer::putDocument</a>
-and
-<a href="../api_cxx/xml_xpath.html">XmlContainer::queryWithXPath</a>.
-<p>
-<a href="../api_cxx/xmldoc_getattr.html">XmlDocument::getAttributeValue</a>,
-<a href="../api_cxx/xmldoc_getcont.html">XmlDocument::getContent</a>,
-<a href="../api_cxx/xmldoc_getid.html">XmlDocument::getID</a>,
-<a href="../api_cxx/xmldoc_getname.html">XmlDocument::getName</a>,
-<a href="../api_cxx/xmldoc_gettype.html">XmlDocument::getType</a>,
-<a href="../api_cxx/xmldoc_setcont.html">XmlDocument::setContent</a>,
-<a href="../api_cxx/xmldoc_setname.html">XmlDocument::setName</a>,
-and
-<a href="../api_cxx/xmldoc_settype.html">XmlDocument::setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_java/dbenv_class.html b/db/docs/api_java/dbenv_class.html
deleted file mode 100644
index f610cf670..000000000
--- a/db/docs/api_java/dbenv_class.html
+++ /dev/null
@@ -1,65 +0,0 @@
-<!--$Id: dbenv_class.so,v 10.20 2000/07/27 13:10:54 bostic Exp $-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB: DbEnv</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
- <a name="2"><!--meow--></a>
-<table><tr valign=top>
-<td>
-<h1>DbEnv</h1>
-</td>
-<td width="1%">
-<a href="../api_java/java_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-import com.sleepycat.db.*;
-<p>
-public class DbEnv extends Object
-{
- public DbEnv(int flags);
- ...
-}
-</pre></h3>
-<h1>Description</h1>
-<p>This manual page describes the specific details of the DbEnv
-class, which is the center of the Berkeley DB environment.
-<p>The following <b>flags</b> value may be specified:
-<p><dl compact>
-<p><dt><a name="Db.DB_CLIENT">Db.DB_CLIENT</a><dd>Create a client environment to connect to a server.
-<p>The Db.DB_CLIENT flag indicates to the system that this environment
-is remote on a server. The use of this flag causes the environment
-methods to use functions that call a server instead of local functions.
-Prior to making any environment or database method calls, the
-application must call the <a href="../api_java/env_set_server.html">DbEnv.set_server</a> function to establish
-the connection to the server.
-</dl>
-<h3>Class</h3>
-<a href="../api_java/dbenv_class.html">DbEnv</a>
-<h1>See Also</h1>
-<a href="../api_java/env_close.html">DbEnv.close</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_strerror.html">DbEnv.strerror</a>,
-<a href="../api_java/env_version.html">DbEnv.get_version_string</a>
-<a href="../api_java/env_set_cachesize.html">DbEnv.set_cachesize</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_flags.html">DbEnv.set_flags</a>,
-<a href="../api_java/env_set_mutexlocks.html">DbEnv.set_mutexlocks</a>,
-and
-<a href="../api_java/env_set_verbose.html">DbEnv.set_verbose</a>.
-</tt>
-<table><tr><td><br></td><td width="1%">
-<a href="../api_java/java_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_java/env_set_lk_max.html b/db/docs/api_java/env_set_lk_max.html
deleted file mode 100644
index 1e2a92890..000000000
--- a/db/docs/api_java/env_set_lk_max.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!--$Id: env_set_lk_max.so,v 10.21 2000/12/21 19:11:27 bostic Exp $-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB: DbEnv.set_lk_max</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
- <a name="2"><!--meow--></a>
-<table><tr valign=top>
-<td>
-<h1>DbEnv.set_lk_max</h1>
-</td>
-<td width="1%">
-<a href="../api_java/java_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-import com.sleepycat.db.*;
-<p>
-public void set_lk_max(int max)
- throws DbException;
-</pre></h3>
-<h1>Description</h1>
-<p><b>The DbEnv.set_lk_max method interface has been deprecated in favor of
-the <a href="../api_java/env_set_lk_max_locks.html">DbEnv.set_lk_max_locks</a>, <a href="../api_java/env_set_lk_max_lockers.html">DbEnv.set_lk_max_lockers</a>,
-and <a href="../api_java/env_set_lk_max_objects.html">DbEnv.set_lk_max_objects</a> methods. Please update your applications.</b>
-<p>Set each of the maximum number of locks, lockers and lock objects
-supported by the Berkeley DB lock subsystem to <b>max</b>. This value is
-used by <a href="../api_java/env_open.html">DbEnv.open</a> to estimate how much space to allocate for
-various lock-table data structures. For specific information on
-configuring the size of the lock subsystem, see
-<a href="../ref/lock/max.html">Configuring locking: sizing the
-system</a>.
-<p>The DbEnv.set_lk_max interface may only be used to configure Berkeley DB before
-the <a href="../api_java/env_open.html">DbEnv.open</a> interface is called.
-<p>The DbEnv.set_lk_max method throws an exception that encapsulates a non-zero error value on
-failure.
-<p>The database environment's maximum number of locks may also be set using the environment's
-<b>DB_CONFIG</b> file. The syntax of the entry in that file is a
-single line with the string "set_lk_max", one or more whitespace characters,
-and the number of locks. Because the <b>DB_CONFIG</b> file is read when the database
-environment is opened, it will silently overrule configuration done
-before that time.
-<h1>Errors</h1>
-<p><dl compact>
-<p><dt>EINVAL<dd>An invalid flag value or parameter was specified.
-<p>Called after <a href="../api_java/env_open.html">DbEnv.open</a> was called.
-</dl>
-<h3>Classes</h3>
-<a href="../api_java/dbenv_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_locks.html">DbEnv.set_lk_max_locks</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_objects.html">DbEnv.set_lk_max_objects</a>,
-<a href="../api_java/env_set_lk_max.html">DbEnv.set_lk_max</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_put.html">DbLock.put</a>
-and
-<a href="../api_java/lock_stat.html">DbEnv.lock_stat</a>.
-</tt>
-<table><tr><td><br></td><td width="1%">
-<a href="../api_java/java_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_java/env_set_mutexlocks.html b/db/docs/api_java/env_set_mutexlocks.html
deleted file mode 100644
index e09898770..000000000
--- a/db/docs/api_java/env_set_mutexlocks.html
+++ /dev/null
@@ -1,59 +0,0 @@
-<!--$Id: env_set_mutexlocks.so,v 10.9 2000/11/17 19:56:52 bostic Exp $-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB: DbEnv.set_mutexlocks</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
- <a name="2"><!--meow--></a>
-<table><tr valign=top>
-<td>
-<h1>DbEnv.set_mutexlocks</h1>
-</td>
-<td width="1%">
-<a href="../api_java/java_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-import com.sleepycat.db.*;
-<p>
-public void set_mutexlocks(int do_lock)
- throws DbException;
-</pre></h3>
-<h1>Description</h1>
-<p>Toggle mutex locks. Setting <b>do_lock</b> to a false value causes
-Berkeley DB to grant all requested mutual exclusion mutexes without regard
-for their availability.
-<p>This functionality should never be used for any other purpose than
-debugging.
-<p>The DbEnv.set_mutexlocks interface may be used to configure Berkeley DB at any time
-during the life of the application.
-<p>The DbEnv.set_mutexlocks method throws an exception that encapsulates a non-zero error value on
-failure.
-<h3>Class</h3>
-<a href="../api_java/dbenv_class.html">DbEnv</a>
-<h1>See Also</h1>
-<a href="../api_java/env_close.html">DbEnv.close</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_strerror.html">DbEnv.strerror</a>,
-<a href="../api_java/env_version.html">DbEnv.get_version_string</a>
-<a href="../api_java/env_set_cachesize.html">DbEnv.set_cachesize</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_flags.html">DbEnv.set_flags</a>,
-<a href="../api_java/env_set_mutexlocks.html">DbEnv.set_mutexlocks</a>,
-and
-<a href="../api_java/env_set_verbose.html">DbEnv.set_verbose</a>.
-</tt>
-<table><tr><td><br></td><td width="1%">
-<a href="../api_java/java_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_java/env_set_pageyield.html b/db/docs/api_java/env_set_pageyield.html
deleted file mode 100644
index f67f3a888..000000000
--- a/db/docs/api_java/env_set_pageyield.html
+++ /dev/null
@@ -1,69 +0,0 @@
-<!--$Id: env_set_pageyield.so,v 10.6 2000/05/31 15:10:00 bostic Exp $-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB: DbEnv.set_pageyield</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
- <a name="2"><!--meow--></a>
-<table><tr valign=top>
-<td>
-<h1>DbEnv.set_pageyield</h1>
-</td>
-<td width="1%">
-<a href="../api_java/java_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-import com.sleepycat.db.*;
-<p>
-static int
-DbEnv.set_pageyield(int pageyield);
- throws DbException;
-</pre></h3>
-<h1>Description</h1>
-<p>Yield the processor whenever requesting a page from the cache. Setting
-<b>pageyield</b> to a true value causes Berkeley DB to yield the processor
-any time a thread requests a page from the cache.
-<p>The DbEnv.set_pageyield interface affects the entire application, not a single
-database or database environment.
-<p>While the DbEnv.set_pageyield interface may be used to configure Berkeley DB at any time
-during the life of the application, it should normally be called before
-making any calls to the <a href="../api_c/env_create.html">db_env_create</a> or <a href="../api_c/db_create.html">db_create</a> methods.
-<p>This functionality should never be used for any other purpose than stress
-testing.
-<p>The DbEnv.set_pageyield interface may be used to configure Berkeley DB at any time
-during the life of the application.
-<p>The DbEnv.set_pageyield method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p><dl compact>
-<p><dt>EINVAL<dd>An invalid flag value or parameter was specified.
-</dl>
-<h3>Class</h3>
-<a href="../api_java/dbenv_class.html">DbEnv</a>
-<h1>See Also</h1>
-<a href="../api_java/env_close.html">DbEnv.close</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_strerror.html">DbEnv.strerror</a>,
-<a href="../api_java/env_version.html">DbEnv.get_version_string</a>
-<a href="../api_java/env_set_cachesize.html">DbEnv.set_cachesize</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_flags.html">DbEnv.set_flags</a>,
-<a href="../api_java/env_set_mutexlocks.html">DbEnv.set_mutexlocks</a>,
-and
-<a href="../api_java/env_set_verbose.html">DbEnv.set_verbose</a>.
-</tt>
-<table><tr><td><br></td><td width="1%">
-<a href="../api_java/java_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_java/env_set_panicstate.html b/db/docs/api_java/env_set_panicstate.html
deleted file mode 100644
index d8b38ee2f..000000000
--- a/db/docs/api_java/env_set_panicstate.html
+++ /dev/null
@@ -1,65 +0,0 @@
-<!--$Id: env_set_panicstate.so,v 10.2 2001/01/17 15:32:34 bostic Exp $-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB: DbEnv.set_panicstate</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
- <a name="2"><!--meow--></a>
-<table><tr valign=top>
-<td>
-<h1>DbEnv.set_panicstate</h1>
-</td>
-<td width="1%">
-<a href="../api_java/java_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-import com.sleepycat.db.*;
-<p>
-static int
-DbEnv.set_panicstate(int panic);
- throws DbException;
-</pre></h3>
-<h1>Description</h1>
-<p>Toggle the Berkeley DB panic state. Setting <b>panic</b> to a true value
-causes Berkeley DB to refuse attempts to call Berkeley DB functions with the
-<a href="../ref/program/errorret.html#DB_RUNRECOVERY">Db.DB_RUNRECOVERY</a> error return.
-<p>The DbEnv.set_panicstate interface affects the entire application, not a single
-database or database environment.
-<p>While the DbEnv.set_panicstate interface may be used to configure Berkeley DB at any time
-during the life of the application, it should normally be called before
-making any calls to the <a href="../api_c/env_create.html">db_env_create</a> or <a href="../api_c/db_create.html">db_create</a> methods.
-<p>The DbEnv.set_panicstate method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p><dl compact>
-<p><dt>EINVAL<dd>An invalid flag value or parameter was specified.
-</dl>
-<h3>Class</h3>
-<a href="../api_java/dbenv_class.html">DbEnv</a>
-<h1>See Also</h1>
-<a href="../api_java/env_close.html">DbEnv.close</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_strerror.html">DbEnv.strerror</a>,
-<a href="../api_java/env_version.html">DbEnv.get_version_string</a>
-<a href="../api_java/env_set_cachesize.html">DbEnv.set_cachesize</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_flags.html">DbEnv.set_flags</a>,
-<a href="../api_java/env_set_mutexlocks.html">DbEnv.set_mutexlocks</a>,
-and
-<a href="../api_java/env_set_verbose.html">DbEnv.set_verbose</a>.
-</tt>
-<table><tr><td><br></td><td width="1%">
-<a href="../api_java/java_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_java/env_set_rec_init.html b/db/docs/api_java/env_set_rec_init.html
deleted file mode 100644
index 430c33a02..000000000
--- a/db/docs/api_java/env_set_rec_init.html
+++ /dev/null
@@ -1,78 +0,0 @@
-<!--$Id: env_set_rec_init.so,v 10.9 2000/05/01 21:57:44 bostic Exp $-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB: DbEnv.set_recovery_init</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
- <a name="2"><!--meow--></a>
-<table><tr valign=top>
-<td>
-<h1>DbEnv.set_recovery_init</h1>
-</td>
-<td width="1%">
-<a href="../api_java/java_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-import com.sleepycat.db.*;
-<p>
-public interface DbRecoveryInit
-{
- public abstract int db_recovery_init_fcn(DbEnv dbenv);
-}
-public class DbEnv
-{
- public void set_recovery_init(DbRecoveryInit db_recovery_init_fcn)
- throws DbException;
- ...
-}
-</pre></h3>
-<h1>Description</h1>
-<p>Applications installing application-specific recovery methods need
-to be called before Berkeley DB performs recovery so they may add their recovery
-methods to Berkeley DB's.
-<p>The DbEnv.set_recovery_init method supports this functionality. The
-<b>db_recovery_init_fcn</b> method must be declared with one
-argument, a reference to the enclosing Berkeley DB environment. This
-method will be called after the <a href="../api_java/env_open.html">DbEnv.open</a> has been called,
-but before recovery is started.
-<p>If the <b>db_recovery_init_fcn</b> method returns a non-zero value,
-no recovery will be performed and <a href="../api_java/env_open.html">DbEnv.open</a> will return the same
-value to its caller.
-<p>The DbEnv.set_recovery_init interface may only be used to configure Berkeley DB before
-the <a href="../api_java/env_open.html">DbEnv.open</a> interface is called.
-<p>The DbEnv.set_recovery_init method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p><dl compact>
-<p><dt>EINVAL<dd>An invalid flag value or parameter was specified.
-<p>Called after <a href="../api_java/env_open.html">DbEnv.open</a> was called.
-</dl>
-<h3>Class</h3>
-<a href="../api_java/dbenv_class.html">DbEnv</a>
-<h1>See Also</h1>
-<a href="../api_java/env_close.html">DbEnv.close</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_strerror.html">DbEnv.strerror</a>,
-<a href="../api_java/env_version.html">DbEnv.get_version_string</a>
-<a href="../api_java/env_set_cachesize.html">DbEnv.set_cachesize</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_flags.html">DbEnv.set_flags</a>,
-<a href="../api_java/env_set_mutexlocks.html">DbEnv.set_mutexlocks</a>,
-and
-<a href="../api_java/env_set_verbose.html">DbEnv.set_verbose</a>.
-</tt>
-<table><tr><td><br></td><td width="1%">
-<a href="../api_java/java_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_java/env_set_region_init.html b/db/docs/api_java/env_set_region_init.html
deleted file mode 100644
index f4f5d2562..000000000
--- a/db/docs/api_java/env_set_region_init.html
+++ /dev/null
@@ -1,78 +0,0 @@
-<!--$Id: env_set_region_init.so,v 10.10 2000/05/31 15:10:00 bostic Exp $-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB: DbEnv.set_region_init</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
- <a name="2"><!--meow--></a>
-<table><tr valign=top>
-<td>
-<h1>DbEnv.set_region_init</h1>
-</td>
-<td width="1%">
-<a href="../api_java/java_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-import com.sleepycat.db.*;
-<p>
-static int
-DbEnv.set_region_init(int region_init);
- throws DbException;
-</pre></h3>
-<h1>Description</h1>
-<p>Page-fault shared regions into memory when initially creating or joining
-a Berkeley DB environment. In some applications, the expense of page-faulting
-the shared memory regions can affect performance, e.g., when the
-page-fault occurs while holding a lock, other lock requests can convoy
-and overall throughput may decrease. Setting <b>region_init</b> to a
-true value specifies that shared regions be read or written, as
-appropriate, when the region is joined by the application. This forces
-the underlying virtual memory and file systems to instantiate both the
-necessary memory and the necessary disk space. This can also avoid
-out-of-disk space failures later on.
-<p>The DbEnv.set_region_init interface affects the entire application, not a single
-database or database environment.
-<p>While the DbEnv.set_region_init interface may be used to configure Berkeley DB at any time
-during the life of the application, it should normally be called before
-making any calls to the <a href="../api_c/env_create.html">db_env_create</a> or <a href="../api_c/db_create.html">db_create</a> methods.
-<p>The DbEnv.set_region_init method throws an exception that encapsulates a non-zero error value on
-failure.
-<p>The database environment's initial behavior with respect to shared memory regions may also be set using the environment's
-<b>DB_CONFIG</b> file. The syntax of the entry in that file is a
-single line with the string "set_region_init", one or more whitespace characters,
-and the string "1". Because the <b>DB_CONFIG</b> file is read when the database
-environment is opened, it will silently overrule configuration done
-before that time.
-<h1>Errors</h1>
-<p><dl compact>
-<p><dt>EINVAL<dd>An invalid flag value or parameter was specified.
-</dl>
-<h3>Class</h3>
-<a href="../api_java/dbenv_class.html">DbEnv</a>
-<h1>See Also</h1>
-<a href="../api_java/env_close.html">DbEnv.close</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_strerror.html">DbEnv.strerror</a>,
-<a href="../api_java/env_version.html">DbEnv.get_version_string</a>
-<a href="../api_java/env_set_cachesize.html">DbEnv.set_cachesize</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_flags.html">DbEnv.set_flags</a>,
-<a href="../api_java/env_set_mutexlocks.html">DbEnv.set_mutexlocks</a>,
-and
-<a href="../api_java/env_set_verbose.html">DbEnv.set_verbose</a>.
-</tt>
-<table><tr><td><br></td><td width="1%">
-<a href="../api_java/java_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_java/env_set_server.html b/db/docs/api_java/env_set_server.html
deleted file mode 100644
index a0ffeefe3..000000000
--- a/db/docs/api_java/env_set_server.html
+++ /dev/null
@@ -1,77 +0,0 @@
-<!--"@(#)env_set_server.so 10.13 (Sleepycat) 8/25/99"-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB: DbEnv.set_server</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
- <a name="2"><!--meow--></a>
-<table><tr valign=top>
-<td>
-<h1>DbEnv.set_server</h1>
-</td>
-<td width="1%">
-<a href="../api_java/java_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-import com.sleepycat.db.*;
-<p>
-public void set_server(String host,
- long cl_timeout, long sv_timeout, int flags)
- throws DbException;
-</pre></h3>
-<h1>Description</h1>
-<p>Connects to the DB server on the indicated hostname and sets up a channel
-for communication.
-<p>The <b>cl_timeout</b> argument specifies the number of seconds the client
-should wait for results to come back from the server. Once the timeout
-has expired on any communication with the server, Db.DB_NOSERVER will
-be returned. If this value is zero, a default timeout is used.
-<p>The <b>sv_timeout</b> argument specifies the number of seconds the server
-should allow a client connection to remain idle before assuming that
-client is gone. Once that timeout has been reached, the server releases
-all resources associated with that client connection. Subsequent attempts
-by that client to communicate with the server result in
-Db.DB_NOSERVER_ID indicating that an invalid identifier has been
-given to the server. This value can be considered a hint to the server.
-The server may alter this value based on its own policies or allowed
-values. If this value is zero, a default timeout is used.
-<p>The <b>flags</b> parameter is currently unused, and must be set to 0.
-<p>When the DbEnv.set_server method has been called, any subsequent calls
-to Berkeley DB library interfaces may return either <a name="DB_NOSERVER">DB_NOSERVER</a> or
-<a name="DB_NOSERVER_ID">DB_NOSERVER_ID</a>.
-<p>The DbEnv.set_server method throws an exception that encapsulates a non-zero error value on
-failure.
-<h3>Errors</h3>
-<p><dl compact>
-<p><dt>EINVAL<dd>An invalid flag value or parameter was specified.
-<p>dbenv_set_server
-</dl>
-<h3>Class</h3>
-<a href="../api_java/dbenv_class.html">DbEnv</a>
-<h1>See Also</h1>
-<a href="../api_java/env_close.html">DbEnv.close</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_strerror.html">DbEnv.strerror</a>,
-<a href="../api_java/env_version.html">DbEnv.get_version_string</a>
-<a href="../api_java/env_set_cachesize.html">DbEnv.set_cachesize</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_flags.html">DbEnv.set_flags</a>,
-<a href="../api_java/env_set_mutexlocks.html">DbEnv.set_mutexlocks</a>,
-and
-<a href="../api_java/env_set_verbose.html">DbEnv.set_verbose</a>.
-</tt>
-<table><tr><td><br></td><td width="1%">
-<a href="../api_java/java_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_java/env_set_tx_recover.html b/db/docs/api_java/env_set_tx_recover.html
deleted file mode 100644
index c3c71e9ba..000000000
--- a/db/docs/api_java/env_set_tx_recover.html
+++ /dev/null
@@ -1,84 +0,0 @@
-<!--$Id: env_set_tx_recover.so,v 10.26 2000/07/09 19:13:19 bostic Exp $-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB: DbEnv.set_tx_recover</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
- <a name="2"><!--meow--></a>
-<table><tr valign=top>
-<td>
-<h1>DbEnv.set_tx_recover</h1>
-</td>
-<td width="1%">
-<a href="../api_java/java_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-import com.sleepycat.db.*;
-<p>
-public interface DbTxnRecover
-{
- public abstract int
- tx_recover(DbEnv dbenv, Dbt log_rec, DbLsn lsn, int op);
-}
-public class DbEnv
-{
- public void set_tx_recover(DbTxnRecover tx_recover)
- throws DbException;
- ...
-}
-</pre></h3>
-<h1>Description</h1>
-<p>Set the application's method to be called during transaction abort
-and recovery. This method must return 0 on success and either
-<b>errno</b> or a value outside of the Berkeley DB error name space on
-failure. It takes four arguments:
-<p><dl compact>
-<p><dt>dbenv <dd>A Berkeley DB environment.
-<p><dt>log_rec<dd>A log record.
-<p><dt>lsn<dd>A log sequence number.
-<p><dt>op<dd>One of the following values:
-<p><dl compact>
-<p><dt><a name="Db.DB_TXN_BACKWARD_ROLL">Db.DB_TXN_BACKWARD_ROLL</a><dd>The log is being read backward to determine which transactions have been
-committed and to abort those operations that were not, undo the operation
-described by the log record.
-<p><dt><a name="Db.DB_TXN_FORWARD_ROLL">Db.DB_TXN_FORWARD_ROLL</a><dd>The log is being played forward, redo the operation described by the log
-record.
-<p><dt><a name="Db.DB_TXN_ABORT">Db.DB_TXN_ABORT</a><dd>The log is being read backwards during a transaction abort, undo the
-operation described by the log record.
-</dl>
-</dl>
-<p>The DbEnv.set_tx_recover interface may only be used to configure Berkeley DB before
-the <a href="../api_java/env_open.html">DbEnv.open</a> interface is called.
-<p>The DbEnv.set_tx_recover method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p><dl compact>
-<p><dt>EINVAL<dd>An invalid flag value or parameter was specified.
-<p>Called after <a href="../api_java/env_open.html">DbEnv.open</a> was called.
-</dl>
-<h3>Classes</h3>
-<a href="../api_java/dbenv_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_abort.html">DbTxn.abort</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_commit.html">DbTxn.commit</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_stat.html">DbEnv.txn_stat</a>.
-</tt>
-<table><tr><td><br></td><td width="1%">
-<a href="../api_java/java_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_java/get_dbt.html b/db/docs/api_java/get_dbt.html
deleted file mode 100644
index cb1ea69f3..000000000
--- a/db/docs/api_java/get_dbt.html
+++ /dev/null
@@ -1,43 +0,0 @@
-<!--Id: get_dbt.so,v 1.1 2001/04/06 13:24:51 bostic Exp -->
-<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB: DbMemoryException.get_dbt</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
- <a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>DbMemoryException.get_dbt</h1>
-</td>
-<td align=right>
-<a href="../api_java/java_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-import com.sleepycat.db.*;
-<p>
-public Dbt get_dbt();
-</pre></h3>
-<h1>Description</h1>
-<p>Return the <a href="../api_java/dbt_class.html">Dbt</a> that has insufficient memory to complete the
-operation, causing the <a href="../api_java/mem_class.html">DbMemoryException</a> to be thrown.
-<h1>Class</h1>
-<a href="../api_java/except_class.html">DbException</a>
-<h1>See Also</h1>
-<a href="../api_java/get_errno.html">DbException.get_errno</a>,
-<a href="../api_java/deadlock_class.html">DbDeadlockException</a>,
-<a href="../api_java/mem_class.html">DbMemoryException</a>,
-and
-<a href="../api_java/runrec_class.html">DbRunRecoveryException</a>.
-</tt>
-<table width="100%"><tr><td><br></td><td align=right>
-<a href="../api_java/java_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_java/get_errno.html b/db/docs/api_java/get_errno.html
deleted file mode 100644
index 5d3850d1f..000000000
--- a/db/docs/api_java/get_errno.html
+++ /dev/null
@@ -1,46 +0,0 @@
-<!--$Id: get_errno.so,v 10.8 1999/12/20 08:52:33 bostic Exp $-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB: DbException.get_errno</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
- <a name="2"><!--meow--></a>
-<table><tr valign=top>
-<td>
-<h1>DbException.get_errno</h1>
-</td>
-<td width="1%">
-<a href="../api_java/java_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-import com.sleepycat.db.*;
-<p>
-public int get_errno();
-</pre></h3>
-<h1>Description</h1>
-<p>Most methods in the Db classes throw an exception when an error occurs.
-A DbException object contains an informational string and an errno.
-The errno can be obtained using DbException.get_errno.
-Since DbException inherits from the java.Exception, the string
-portion is available using toString().
-<h3>Class</h3>
-<a href="../api_java/except_class.html">DbException</a>
-<h1>See Also</h1>
-<a href="../api_java/get_errno.html">DbException.get_errno</a>,
-<a href="../api_java/deadlock_class.html">DbDeadlockException</a>,
-<a href="../api_java/mem_class.html">DbMemoryException</a>
-and
-<a href="../api_java/runrec_class.html">DbRunRecoveryException</a>.
-</tt>
-<table><tr><td><br></td><td width="1%">
-<a href="../api_java/java_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_java/java_index.html b/db/docs/api_java/java_index.html
deleted file mode 100644
index c36227ede..000000000
--- a/db/docs/api_java/java_index.html
+++ /dev/null
@@ -1,131 +0,0 @@
-<!--$Id: cxx_index.so,v 10.65 2000/12/21 19:11:27 bostic Exp $-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB: Java Interface by Class</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<h1 align=center>Java Interface by Class</h1>
-<p><table border=1 align=center>
-<tr><th>Class</th><th>Method</th><th>Description</th></tr>
-<tr><td><a href="../api_java/dbenv_class.html">DbEnv</a></td><td><br></td><td>Berkeley DB Environment Class</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_open.html">DbEnv.open</a></td><td>Open an environment</td></tr>
-<tr><td><br></td><td><a href="../api_java/env_remove.html">DbEnv.remove</a></td><td>Remove an environment</td></tr>
-<tr><td><br></td><td><a href="../api_java/env_set_cachesize.html">DbEnv.set_cachesize</a></td><td>Set the environment cache size</td></tr>
-<tr><td><br></td><td><a href="../api_java/env_set_data_dir.html">DbEnv.set_data_dir</a></td><td>Set the environment data directory</td></tr>
-<tr><td><br></td><td><a href="../api_java/env_set_errcall.html">DbEnv.set_errcall</a></td><td>Set error message callback</td></tr>
-<tr><td><br></td><td><a href="../api_java/env_set_error_stream.html">DbEnv.set_error_stream</a></td><td>Set error message output stream</td></tr>
-<tr><td><br></td><td><a href="../api_java/env_set_errpfx.html">DbEnv.set_errpfx</a></td><td>Set error message prefix</td></tr>
-<tr><td><br></td><td><a href="../api_java/env_set_feedback.html">DbEnv.set_feedback</a></td><td>Set feedback callback</td></tr>
-<tr><td><br></td><td><a href="../api_java/env_set_flags.html">DbEnv.set_flags</a></td><td>Environment configuration</td></tr>
-<tr><td><br></td><td><a href="../api_java/env_set_lg_bsize.html">DbEnv.set_lg_bsize</a></td><td>Set log buffer size</td></tr>
-<tr><td><br></td><td><a href="../api_java/env_set_lg_dir.html">DbEnv.set_lg_dir</a></td><td>Set the environment logging directory</td></tr>
-<tr><td><br></td><td><a href="../api_java/env_set_lg_max.html">DbEnv.set_lg_max</a></td><td>Set log file size</td></tr>
-<tr><td><br></td><td><a href="../api_java/env_set_lk_conflicts.html">DbEnv.set_lk_conflicts</a></td><td>Set lock conflicts matrix</td></tr>
-<tr><td><br></td><td><a href="../api_java/env_set_lk_detect.html">DbEnv.set_lk_detect</a></td><td>Set automatic deadlock detection</td></tr>
-<tr><td><br></td><td><a href="../api_java/env_set_lk_max.html">DbEnv.set_lk_max</a></td><td>Set maximum number of locks (<b>Deprecated</b>)</td></tr>
-<tr><td><br></td><td><a href="../api_java/env_set_lk_max_locks.html">DbEnv.set_lk_max_locks</a></td><td>Set maximum number of locks</td></tr>
-<tr><td><br></td><td><a href="../api_java/env_set_lk_max_lockers.html">DbEnv.set_lk_max_lockers</a></td><td>Set maximum number of lockers</td></tr>
-<tr><td><br></td><td><a href="../api_java/env_set_lk_max_objects.html">DbEnv.set_lk_max_objects</a></td><td>Set maximum number of lock objects</td></tr>
-<tr><td><br></td><td><a href="../api_java/env_set_mp_mmapsize.html">DbEnv.set_mp_mmapsize</a></td><td>Set maximum mapped-in database file size</td></tr>
-<tr><td><br></td><td><a href="../api_java/env_set_mutexlocks.html">DbEnv.set_mutexlocks</a></td><td>Turn off mutual exclusion locking</td></tr>
-<tr><td><br></td><td><a href="../api_java/env_set_pageyield.html">DbEnv.set_pageyield</a></td><td>Yield the processor on each page access</td></tr>
-<tr><td><br></td><td><a href="../api_java/env_set_panicstate.html">DbEnv.set_panicstate</a></td><td>Reset panic state</td></tr>
-<tr><td><br></td><td><a href="../api_java/env_set_rec_init.html">DbEnv.set_recovery_init</a></td><td>Set recovery initialization callback</td></tr>
-<tr><td><br></td><td><a href="../api_java/env_set_region_init.html">DbEnv.set_region_init</a></td><td>Fault in shared regions on initial access</td></tr>
-<tr><td><br></td><td><a href="../api_java/env_set_server.html">DbEnv.set_server</a></td><td>Establish 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_tx_max.html">DbEnv.set_tx_max</a></td><td>Set maximum number of transactions</td></tr>
-<tr><td><br></td><td><a href="../api_java/env_set_tx_recover.html">DbEnv.set_tx_recover</a></td><td>Set transaction abort recover function</td></tr>
-<tr><td><br></td><td><a href="../api_java/env_set_tx_timestamp.html">DbEnv.set_tx_timestamp</a></td><td>Set recovery timestamp</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><br></td><td><a href="../api_java/env_strerror.html">DbEnv.strerror</a></td><td>Error strings</td></tr>
-<tr><td><br></td><td><a href="../api_java/lock_detect.html">DbEnv.lock_detect</a></td><td>Perform deadlock detection</td></tr>
-<tr><td><br></td><td><a href="../api_java/lock_get.html">DbEnv.lock_get</a></td><td>Acquire a lock</td></tr>
-<tr><td><br></td><td><a href="../api_java/lock_id.html">DbEnv.lock_id</a></td><td>Acquire a locker ID</td></tr>
-<tr><td><br></td><td><a href="../api_java/lock_stat.html">DbEnv.lock_stat</a></td><td>Return lock subsystem statistics</td></tr>
-<tr><td><br></td><td><a href="../api_java/log_archive.html">DbEnv.log_archive</a></td><td>List log and database files</td></tr>
-<tr><td><br></td><td><a href="../api_java/log_compare.html">DbEnv.log_compare</a></td><td>Compare two Log Sequence Numbers</td></tr>
-<tr><td><br></td><td><a href="../api_java/log_file.html">DbEnv.log_file</a></td><td>Map Log Sequence Numbers to log files</td></tr>
-<tr><td><br></td><td><a href="../api_java/log_flush.html">DbEnv.log_flush</a></td><td>Flush log records</td></tr>
-<tr><td><br></td><td><a href="../api_java/log_get.html">DbEnv.log_get</a></td><td>Get a log record</td></tr>
-<tr><td><br></td><td><a href="../api_java/log_put.html">DbEnv.log_put</a></td><td>Write a log record</td></tr>
-<tr><td><br></td><td><a href="../api_java/log_register.html">DbEnv.log_register</a></td><td>Register a file name with the log manager</td></tr>
-<tr><td><br></td><td><a href="../api_java/log_stat.html">DbEnv.log_stat</a></td><td>Return log subsystem statistics</td></tr>
-<tr><td><br></td><td><a href="../api_java/log_unregister.html">DbEnv.log_unregister</a></td><td>Unregister a file name with the log manager</td></tr>
-<tr><td><br></td><td><a href="../api_java/memp_stat.html">DbEnv.memp_fstat</a></td><td>Return buffer pool statistics.</td></tr>
-<tr><td><br></td><td><a href="../api_java/memp_stat.html">DbEnv.memp_stat</a></td><td>Return buffer pool statistics</td></tr>
-<tr><td><br></td><td><a href="../api_java/memp_trickle.html">DbEnv.memp_trickle</a></td><td>Trickle flush pages from a buffer pool</td></tr>
-<tr><td><br></td><td><a href="../api_java/txn_begin.html">DbEnv.txn_begin</a></td><td>Begin a transaction</td></tr>
-<tr><td><br></td><td><a href="../api_java/txn_checkpoint.html">DbEnv.txn_checkpoint</a></td><td>Checkpoint the transaction subsystem</td></tr>
-<tr><td><br></td><td><a href="../api_java/txn_stat.html">DbEnv.txn_stat</a></td><td>Return transaction subsystem statistics</td></tr>
-<tr><td><br></td><td><a href="../api_java/env_version.html">DbEnv.version</a></td><td>Return version information</td></tr>
-<tr><td><a href="../api_java/db_class.html">Db</a></td><td><br></td><td>Berkeley DB Access Method Class</td></tr>
-<tr><td><br></td><td><a href="../api_java/db_close.html">Db.close</a></td><td>Close a database</td></tr>
-<tr><td><br></td><td><a href="../api_java/db_cursor.html">Db.cursor</a></td><td>Open a cursor into a database</td></tr>
-<tr><td><br></td><td><a href="../api_java/db_del.html">Db.del</a></td><td>Delete items from a database</td></tr>
-<tr><td><br></td><td><a href="../api_java/db_fd.html">Db.fd</a></td><td>Return a file descriptor from a database</td></tr>
-<tr><td><br></td><td><a href="../api_java/db_get.html">Db.get</a></td><td>Get items from a database</td></tr>
-<tr><td><br></td><td><a href="../api_java/db_get_byteswapped.html">Db.get_byteswapped</a></td><td>Return if the underlying database is in host order</td></tr>
-<tr><td><br></td><td><a href="../api_java/db_get_type.html">Db.get_type</a></td><td>Return the database type</td></tr>
-<tr><td><br></td><td><a href="../api_java/db_join.html">Db.join</a></td><td>Perform a database join on cursors</td></tr>
-<tr><td><br></td><td><a href="../api_java/db_key_range.html">Db.key_range</a></td><td>Return estimate of key location</td></tr>
-<tr><td><br></td><td><a href="../api_java/db_open.html">Db.open</a></td><td>Open a database</td></tr>
-<tr><td><br></td><td><a href="../api_java/db_put.html">Db.put</a></td><td>Store items into a database</td></tr>
-<tr><td><br></td><td><a href="../api_java/db_remove.html">Db.remove</a></td><td>Remove a database</td></tr>
-<tr><td><br></td><td><a href="../api_java/db_rename.html">Db.rename</a></td><td>Rename a database</td></tr>
-<tr><td><br></td><td><a href="../api_java/db_set_append_recno.html">Db.set_append_recno</a></td><td>Set record append callback</td></tr>
-<tr><td><br></td><td><a href="../api_java/db_set_bt_compare.html">Db.set_bt_compare</a></td><td>Set a Btree comparison function</td></tr>
-<tr><td><br></td><td><a href="../api_java/db_set_bt_minkey.html">Db.set_bt_minkey</a></td><td>Set the minimum number of keys per Btree page</td></tr>
-<tr><td><br></td><td><a href="../api_java/db_set_bt_prefix.html">Db.set_bt_prefix</a></td><td>Set a Btree prefix comparison function</td></tr>
-<tr><td><br></td><td><a href="../api_java/db_set_cachesize.html">Db.set_cachesize</a></td><td>Set the database cache size</td></tr>
-<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_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_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>
-<tr><td><br></td><td><a href="../api_java/db_set_h_ffactor.html">Db.set_h_ffactor</a></td><td>Set the Hash table density</td></tr>
-<tr><td><br></td><td><a href="../api_java/db_set_h_hash.html">Db.set_h_hash</a></td><td>Set a hashing function</td></tr>
-<tr><td><br></td><td><a href="../api_java/db_set_h_nelem.html">Db.set_h_nelem</a></td><td>Set the Hash table size</td></tr>
-<tr><td><br></td><td><a href="../api_java/db_set_lorder.html">Db.set_lorder</a></td><td>Set the database byte order</td></tr>
-<tr><td><br></td><td><a href="../api_java/db_set_pagesize.html">Db.set_pagesize</a></td><td>Set the underlying database page size</td></tr>
-<tr><td><br></td><td><a href="../api_java/db_set_q_extentsize.html">Db.set_q_extentsize</a></td><td>Set Queue database extent size</td></tr>
-<tr><td><br></td><td><a href="../api_java/db_set_re_delim.html">Db.set_re_delim</a></td><td>Set the variable-length record delimiter</td></tr>
-<tr><td><br></td><td><a href="../api_java/db_set_re_len.html">Db.set_re_len</a></td><td>Set the fixed-length record length</td></tr>
-<tr><td><br></td><td><a href="../api_java/db_set_re_pad.html">Db.set_re_pad</a></td><td>Set the fixed-length record pad byte</td></tr>
-<tr><td><br></td><td><a href="../api_java/db_set_re_source.html">Db.set_re_source</a></td><td>Set the backing Recno text file</td></tr>
-<tr><td><br></td><td><a href="../api_java/db_stat.html">Db.stat</a></td><td>Return database statistics</td></tr>
-<tr><td><br></td><td><a href="../api_java/db_sync.html">Db.sync</a></td><td>Flush a database to stable storage</td></tr>
-<tr><td><br></td><td><a href="../api_java/db_upgrade.html">Db.upgrade</a></td><td>Upgrade a database</td></tr>
-<tr><td><br></td><td><a href="../api_java/db_verify.html">Db.verify</a></td><td>Verify/upgrade a database</td></tr>
-<tr><td><a href="../api_java/dbc_class.html">Dbc</a></td><td><br></td><td>Berkeley DB Cursor Class</td></tr>
-<tr><td><br></td><td><a href="../api_java/dbc_close.html">Dbc.close</a></td><td>Close a cursor</td></tr>
-<tr><td><br></td><td><a href="../api_java/dbc_count.html">Dbc.count</a></td><td>Return count of duplicates</td></tr>
-<tr><td><br></td><td><a href="../api_java/dbc_del.html">Dbc.del</a></td><td>Delete by cursor</td></tr>
-<tr><td><br></td><td><a href="../api_java/dbc_dup.html">Dbc.dup</a></td><td>Duplicate a cursor</td></tr>
-<tr><td><br></td><td><a href="../api_java/dbc_get.html">Dbc.get</a></td><td>Retrieve by cursor</td></tr>
-<tr><td><br></td><td><a href="../api_java/dbc_put.html">Dbc.put</a></td><td>Store by cursor</td></tr>
-<tr><td><a href="../api_java/dbt_class.html">Dbt</a></td><td><br></td><td>Key/Data Encoding Class</td></tr>
-<tr><td><a href="../api_java/lock_class.html">DbLock</a></td><td><br></td><td>Lock Class</td></tr>
-<tr><td><br></td><td><a href="../api_java/lock_put.html">DbLock.put</a></td><td>Release a lock</td></tr>
-<tr><td><a href="../api_java/lsn_class.html">DbLsn</a></td><td><br></td><td>Log Sequence Number Class</td></tr>
-<tr><td><a href="../api_java/txn_class.html">DbTxn</a></td><td><br></td><td>Transaction Class</td></tr>
-<tr><td><br></td><td><a href="../api_java/txn_abort.html">DbTxn.abort</a></td><td>Abort a transaction</td></tr>
-<tr><td><br></td><td><a href="../api_java/txn_commit.html">DbTxn.commit</a></td><td>Commit a transaction</td></tr>
-<tr><td><br></td><td><a href="../api_java/txn_id.html">DbTxn.id</a></td><td>Return a transaction ID</td></tr>
-<tr><td><br></td><td><a href="../api_java/txn_prepare.html">DbTxn.prepare</a></td><td>Prepare a transaction for commit</td></tr>
-<tr><td><a href="../api_java/except_class.html">DbException</a></td><td><br></td><td>Exception Class for Berkeley DB Activity</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><a href="../api_java/deadlock_class.html">DbDeadlockException</a></td><td><br></td><td>Exception Class for deadlocks</td></tr>
-<tr><td><a href="../api_java/mem_class.html">DbMemoryException</a></td><td><br></td><td>Exception Class for insufficient memory</td></tr>
-<tr><td><a href="../api_java/runrec_class.html">DbRunRecoveryException</a></td><td><br></td><td>Exception Class for failures requiring recovery</td></tr>
-</table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_java/log_get.html b/db/docs/api_java/log_get.html
deleted file mode 100644
index 94eed0134..000000000
--- a/db/docs/api_java/log_get.html
+++ /dev/null
@@ -1,117 +0,0 @@
-<!--$Id: log_get.so,v 10.22 2000/03/17 01:53:59 bostic Exp $-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB: DbEnv.log_get</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
- <a name="2"><!--meow--></a>
-<table><tr valign=top>
-<td>
-<h1>DbEnv.log_get</h1>
-</td>
-<td width="1%">
-<a href="../api_java/java_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-import com.sleepycat.db.*;
-<p>
-public void log_get(DbLsn lsn, Dbt data, int flags)
- throws DbException;
-</pre></h3>
-<h1>Description</h1>
-<p>The DbEnv.log_get method implements a cursor inside of the log,
-retrieving 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_java/dbt_class.html">Dbt</a> for a description of other fields in the <b>data</b>
-structure. When multiple threads are using the returned log handle
-concurrently, one of the <a href="../api_java/dbt_class.html#DB_DBT_MALLOC">Db.DB_DBT_MALLOC</a>, <a href="../api_java/dbt_class.html#DB_DBT_REALLOC">Db.DB_DBT_REALLOC</a> or
-<a href="../api_java/dbt_class.html#DB_DBT_USERMEM">Db.DB_DBT_USERMEM</a> flags must be specified for any <a href="../api_java/dbt_class.html">Dbt</a> used
-for data retrieval.
-<p>The <b>flags</b> argument must be set to exactly one of the following values:
-<p><dl compact>
-<p><dt><a name="Db.DB_CHECKPOINT">Db.DB_CHECKPOINT</a><dd>The last record written with the DB_CHECKPOINT flag specified to the
-<a href="../api_java/log_put.html">DbEnv.log_put</a> method is returned in the <b>data</b> argument. The
-<b>lsn</b> argument is overwritten with the <a href="../api_java/lsn_class.html">DbLsn</a> of the record
-returned. If no record has been previously written with the DB_CHECKPOINT
-flag specified, the first record in the log is returned.
-<p>If the log is empty, the DbEnv.log_get method will return <a href="../ref/program/errorret.html#DB_NOTFOUND">Db.DB_NOTFOUND</a>.
-<p><dt><a name="Db.DB_FIRST">Db.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_java/lsn_class.html">DbLsn</a> of the
-record returned.
-<p>If the log is empty, the DbEnv.log_get method will return <a href="../ref/program/errorret.html#DB_NOTFOUND">Db.DB_NOTFOUND</a>.
-<p><dt><a name="Db.DB_LAST">Db.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_java/lsn_class.html">DbLsn</a> of the
-record returned.
-<p>If the log is empty, the DbEnv.log_get method will return <a href="../ref/program/errorret.html#DB_NOTFOUND">Db.DB_NOTFOUND</a>.
-<p><dt><a name="Db.DB_NEXT">Db.DB_NEXT</a><dd>The current log position is advanced to the next 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_java/lsn_class.html">DbLsn</a> of the
-record returned.
-<p>If the pointer has not been initialized via DB_FIRST, DB_LAST, DB_SET,
-DB_NEXT, or DB_PREV, DbEnv.log_get will return the first record in the log.
-If the last log record has already been returned or the log is empty, the
-DbEnv.log_get method will return <a href="../ref/program/errorret.html#DB_NOTFOUND">Db.DB_NOTFOUND</a>.
-<p>If the log was opened with the DB_THREAD flag set, calls to
-DbEnv.log_get with the DB_NEXT flag set will return EINVAL.
-<p><dt><a name="Db.DB_PREV">Db.DB_PREV</a><dd>The current log position is moved to the 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_java/lsn_class.html">DbLsn</a> of the
-record returned.
-<p>If the pointer has not been initialized via DB_FIRST, DB_LAST, DB_SET,
-DB_NEXT, or DB_PREV,
-DbEnv.log_get will return the last record in the log.
-If the first log record has already been returned or the log is empty, the
-DbEnv.log_get method will return <a href="../ref/program/errorret.html#DB_NOTFOUND">Db.DB_NOTFOUND</a>.
-<p>If the log was opened with the DB_THREAD flag set, calls to
-DbEnv.log_get with the DB_PREV flag set will return EINVAL.
-<p><dt><a name="Db.DB_CURRENT">Db.DB_CURRENT</a><dd>Return the log record currently referenced by the log.
-<p>If the log pointer 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,
-DbEnv.log_get will return EINVAL.
-<p><dt><a name="Db.DB_SET">Db.DB_SET</a><dd>Retrieve the record specified by the <b>lsn</b> argument. If the
-specified <a href="../api_java/lsn_class.html">DbLsn</a> is invalid (e.g., does not appear in the log)
-DbEnv.log_get will return EINVAL.
-</dl>
-<p>Otherwise, the DbEnv.log_get method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>The DbEnv.log_get method may fail and throw an exception encapsulating 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_FIRST flag was specified and no log files were found.
-</dl>
-<p>The DbEnv.log_get method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the DbEnv.log_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.
-<h3>Class</h3>
-<a href="../api_java/dbenv_class.html">DbEnv</a>
-<h1>See Also</h1>
-<a href="../api_java/env_set_lg_bsize.html">DbEnv.set_lg_bsize</a>,
-<a href="../api_java/env_set_lg_max.html">DbEnv.set_lg_max</a>,
-<a href="../api_java/log_archive.html">DbEnv.log_archive</a>,
-<a href="../api_java/log_compare.html">DbEnv.log_compare</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_get.html">DbEnv.log_get</a>,
-<a href="../api_java/log_put.html">DbEnv.log_put</a>,
-<a href="../api_java/log_register.html">DbEnv.log_register</a>,
-<a href="../api_java/log_stat.html">DbEnv.log_stat</a>
-and
-<a href="../api_java/log_unregister.html">DbEnv.log_unregister</a>.
-</tt>
-<table><tr><td><br></td><td width="1%">
-<a href="../api_java/java_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_java/log_register.html b/db/docs/api_java/log_register.html
deleted file mode 100644
index 7d4833c3c..000000000
--- a/db/docs/api_java/log_register.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!--$Id: log_register.so,v 10.27 2000/05/09 14:46:45 bostic Exp $-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB: DbEnv.log_register</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
- <a name="2"><!--meow--></a>
-<table><tr valign=top>
-<td>
-<h1>DbEnv.log_register</h1>
-</td>
-<td width="1%">
-<a href="../api_java/java_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-import com.sleepycat.db.*;
-<p>
-public int log_register(Db dbp, String name)
- throws DbException;
-</pre></h3>
-<h1>Description</h1>
-<p>The DbEnv.log_register method registers a file name with the specified Berkeley DB
-environment's log manager. The log manager records all file name mappings
-at each checkpoint so that a recovery process can identify the file to
-which a record in the log refers.
-<p>The <b>dbp</b> argument should be a reference to the <a href="../api_java/db_class.html">Db</a> object being
-registered. The <b>name</b> argument should be a file name appropriate
-for opening the file in the environment, during recovery.
-<p>The DbEnv.log_register method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>The DbEnv.log_register method may fail and throw an exception encapsulating 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 DbEnv.log_register method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the DbEnv.log_register 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.
-<h3>Class</h3>
-<a href="../api_java/dbenv_class.html">DbEnv</a>
-<h1>See Also</h1>
-<a href="../api_java/env_set_lg_bsize.html">DbEnv.set_lg_bsize</a>,
-<a href="../api_java/env_set_lg_max.html">DbEnv.set_lg_max</a>,
-<a href="../api_java/log_archive.html">DbEnv.log_archive</a>,
-<a href="../api_java/log_compare.html">DbEnv.log_compare</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_get.html">DbEnv.log_get</a>,
-<a href="../api_java/log_put.html">DbEnv.log_put</a>,
-<a href="../api_java/log_register.html">DbEnv.log_register</a>,
-<a href="../api_java/log_stat.html">DbEnv.log_stat</a>
-and
-<a href="../api_java/log_unregister.html">DbEnv.log_unregister</a>.
-</tt>
-<table><tr><td><br></td><td width="1%">
-<a href="../api_java/java_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_java/log_unregister.html b/db/docs/api_java/log_unregister.html
deleted file mode 100644
index c79c324ee..000000000
--- a/db/docs/api_java/log_unregister.html
+++ /dev/null
@@ -1,62 +0,0 @@
-<!--$Id: log_unregister.so,v 10.21 2000/05/03 22:39:10 bostic Exp $-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB: DbEnv.log_unregister</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
- <a name="2"><!--meow--></a>
-<table><tr valign=top>
-<td>
-<h1>DbEnv.log_unregister</h1>
-</td>
-<td width="1%">
-<a href="../api_java/java_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-import com.sleepycat.db.*;
-<p>
-public void log_unregister(Db dbp)
- throws DbException;
-</pre></h3>
-<h1>Description</h1>
-<p>The DbEnv.log_unregister method function unregisters the file represented by
-the <b>dbp</b> parameter from the Berkeley DB environment's log manager.
-<p>The DbEnv.log_unregister method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>The DbEnv.log_unregister method may fail and throw an exception encapsulating 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 DbEnv.log_unregister method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the DbEnv.log_unregister 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.
-<h3>Class</h3>
-<a href="../api_java/dbenv_class.html">DbEnv</a>
-<h1>See Also</h1>
-<a href="../api_java/env_set_lg_bsize.html">DbEnv.set_lg_bsize</a>,
-<a href="../api_java/env_set_lg_max.html">DbEnv.set_lg_max</a>,
-<a href="../api_java/log_archive.html">DbEnv.log_archive</a>,
-<a href="../api_java/log_compare.html">DbEnv.log_compare</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_get.html">DbEnv.log_get</a>,
-<a href="../api_java/log_put.html">DbEnv.log_put</a>,
-<a href="../api_java/log_register.html">DbEnv.log_register</a>,
-<a href="../api_java/log_stat.html">DbEnv.log_stat</a>
-and
-<a href="../api_java/log_unregister.html">DbEnv.log_unregister</a>.
-</tt>
-<table><tr><td><br></td><td width="1%">
-<a href="../api_java/java_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_java/mem_class.html b/db/docs/api_java/mem_class.html
deleted file mode 100644
index be9239def..000000000
--- a/db/docs/api_java/mem_class.html
+++ /dev/null
@@ -1,48 +0,0 @@
-<!--$Id: mem_class.so,v 10.4 2000/09/21 19:58:54 bostic Exp $-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB: DbMemoryException</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
- <a name="2"><!--meow--></a>
-<table><tr valign=top>
-<td>
-<h1>DbMemoryException</h1>
-</td>
-<td width="1%">
-<a href="../api_java/java_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-import com.sleepycat.db.*;
-<p>
-public class DbMemoryException extends DbException { ... }
-</pre></h3>
-<h1>Description</h1>
-<p>This manual page describes the DbMemoryException class and
-how it is used by the various Db* classes.
-<p>A DbMemoryException is thrown when there is insufficient memory
-to complete an operation.
-<p>This may or may not be recoverable. An example of where it would be
-recoverable is during a <a href="../api_java/db_get.html">Db.get</a> or <a href="../api_java/dbc_get.html">Dbc.get</a> operation
-with the <a href="../api_java/dbt_class.html">Dbt</a> flags set to <a href="../api_java/dbt_class.html#DB_DBT_USERMEM">Db.DB_DBT_USERMEM</a>.
-<h3>Class</h3>
-<a href="../api_java/except_class.html">DbException</a>
-<h1>See Also</h1>
-<a href="../api_java/get_errno.html">DbException.get_errno</a>,
-<a href="../api_java/deadlock_class.html">DbDeadlockException</a>,
-<a href="../api_java/mem_class.html">DbMemoryException</a>
-and
-<a href="../api_java/runrec_class.html">DbRunRecoveryException</a>.
-</tt>
-<table><tr><td><br></td><td width="1%">
-<a href="../api_java/java_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_java/memp_fget.html b/db/docs/api_java/memp_fget.html
deleted file mode 100644
index a59b4bbe8..000000000
--- a/db/docs/api_java/memp_fget.html
+++ /dev/null
@@ -1,33 +0,0 @@
-<!--$Id: memp_fget.so,v 10.23 2000/12/04 18:05:39 bostic Exp $-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB: DbMpoolFile.get</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
- <a name="2"><!--meow--></a>
-<table><tr valign=top>
-<td>
-<h1>DbMpoolFile.get</h1>
-</td>
-<td width="1%">
-<a href="../api_java/java_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-import com.sleepycat.db.*;
-</pre></h3>
-<h1>Description</h1>
-<p>A DbMpoolFile.get method is not available in the Berkeley DB
-Java API.
-</tt>
-<table><tr><td><br></td><td width="1%">
-<a href="../api_java/java_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_java/memp_fput.html b/db/docs/api_java/memp_fput.html
deleted file mode 100644
index 64cb4732a..000000000
--- a/db/docs/api_java/memp_fput.html
+++ /dev/null
@@ -1,33 +0,0 @@
-<!--$Id: memp_fput.so,v 10.18 2000/03/01 21:41:30 bostic Exp $-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB: DbMpoolFile.put</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
- <a name="2"><!--meow--></a>
-<table><tr valign=top>
-<td>
-<h1>DbMpoolFile.put</h1>
-</td>
-<td width="1%">
-<a href="../api_java/java_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-import com.sleepycat.db.*;
-</pre></h3>
-<h1>Description</h1>
-<p>A DbMpoolFile.put method is not available in the Berkeley DB
-Java API.
-</tt>
-<table><tr><td><br></td><td width="1%">
-<a href="../api_java/java_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_java/memp_fset.html b/db/docs/api_java/memp_fset.html
deleted file mode 100644
index 3ab3ed0ee..000000000
--- a/db/docs/api_java/memp_fset.html
+++ /dev/null
@@ -1,33 +0,0 @@
-<!--$Id: memp_fset.so,v 10.18 2000/03/01 21:41:30 bostic Exp $-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB: DbMpoolFile.set</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
- <a name="2"><!--meow--></a>
-<table><tr valign=top>
-<td>
-<h1>DbMpoolFile.set</h1>
-</td>
-<td width="1%">
-<a href="../api_java/java_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-import com.sleepycat.db.*;
-</pre></h3>
-<h1>Description</h1>
-<p>A DbMpoolFile.set method is not available in the Berkeley DB
-Java API.
-</tt>
-<table><tr><td><br></td><td width="1%">
-<a href="../api_java/java_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_java/xml_close.html b/db/docs/api_java/xml_close.html
deleted file mode 100644
index f391866a0..000000000
--- a/db/docs/api_java/xml_close.html
+++ /dev/null
@@ -1,86 +0,0 @@
-<!--Id: xml_close.so,v 10.5 2002/07/30 16:57:43 merrells Exp -->
-<!--Id: m4.db_close,v 10.1 2002/06/19 19:31:15 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlContainer.close</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlContainer.close</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-import com.sleepycat.dbxml.*;
-<p>
-public void close(int flags)
- throws XmlException;
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlContainer.close method closes the specified container.
-
-<p>The <a href="../api_java/xmlcontainer_class.html">XmlContainer</a> must be in the open state for the
-call to succeed. The container is only open after a successful
-call to the <a href="../api_java/xml_open.html">XmlContainer.open</a> method. Note that it is allowable
-to re-open a container after it has been closed.
-
-<p><dl compact>
-
-<p><dt><a name="Db.DB_NOSYNC">Db.DB_NOSYNC</a><dd>Do not flush cached information to disk. The <a href="../api_java/db_close.html#DB_NOSYNC">Db.DB_NOSYNC</a> flag is
-a dangerous option. It should be set only if the application is doing
-logging (with transactions) so that the database is recoverable after
-a system or application crash, or if the database is always generated
-from scratch after any system or application crash.
-<p><b>It is important to understand that flushing cached information to disk
-only minimizes the window of opportunity for corrupted data.</b> Although
-unlikely, it is possible for database corruption to happen if a system
-or application crash occurs while writing data to the database. To
-ensure that database corruption never occurs, applications must either:
-use transactions and logging with automatic recovery; use logging and
-application-specific recovery; or edit a copy of the database, and once
-all applications using the database have successfully called
-UNREF==xm_close, atomically replace the original database with the
-updated copy.
-
-</dl>
-<p>When multiple threads are using the <a href="../api_java/xmlcontainer_class.html">XmlContainer</a> concurrently,
-only a single thread may call the XmlContainer.close method.
-<h1>Class</h1>
-<a href="../api_java/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_java/xmldocument_class.html">XmlDocument</a>, <a href="../api_java/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_java/xml_close.html">XmlContainer.close</a>,
-<a href="../api_java/xml_declare.html">XmlContainer.declareIndex</a>,
-<a href="../api_java/xml_del.html">XmlContainer.deleteDocument</a>,
-<a href="../api_java/xml_get.html">XmlContainer.getDocument</a>,
-<a href="../api_java/xml_getname.html">XmlContainer.getName</a>,
-<a href="../api_java/xml_open.html">XmlContainer.open</a>,
-<a href="../api_java/xml_put.html">XmlContainer.putDocument</a>
-and
-<a href="../api_java/xml_xpath.html">XmlContainer.queryWithXPath</a>.
-<p>
-<a href="../api_java/xmldoc_getattr.html">XmlDocument.getAttributeValue</a>,
-<a href="../api_java/xmldoc_getcont.html">XmlDocument.getContent</a>,
-<a href="../api_java/xmldoc_getid.html">XmlDocument.getID</a>,
-<a href="../api_java/xmldoc_getname.html">XmlDocument.getName</a>,
-<a href="../api_java/xmldoc_gettype.html">XmlDocument.getType</a>,
-<a href="../api_java/xmldoc_setcont.html">XmlDocument.setContent</a>,
-<a href="../api_java/xmldoc_setname.html">XmlDocument.setName</a>,
-and
-<a href="../api_java/xmldoc_settype.html">XmlDocument.setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_java/xml_declare.html b/db/docs/api_java/xml_declare.html
deleted file mode 100644
index bae121b5b..000000000
--- a/db/docs/api_java/xml_declare.html
+++ /dev/null
@@ -1,121 +0,0 @@
-<!--Id: xml_declare.so,v 10.8 2002/08/07 15:14:58 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlContainer.declareIndex</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlContainer.declareIndex</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-import com.sleepycat.dbxml.*;
-<p>
-public void declareIndex(DbTxn txnid,
- String node, String index, int flags)
- throws XmlException;
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlContainer.declareIndex method declares the indexing required for a
-particular node. The node may be an element or attribute.
-<p>The <b>node</b> parameter provides the name of the node
-to be indexed. Attribute node names are prefixed with the '@' character
-to distinguish them from element node names. For example, within the
-following XML document fragment the element name is 'fruit', and the
-attribute name is '@color',
-"&lt;fruit color='red'&gt;apple&lt;/fruit&gt;".
-<p>A fully qualified node name is a node name that includes its full
-namespace specification. In the following fragment from the
-<a href="http://www.w3.org/TR/1999/REC-xml-names-19990114/">W3C XML Namespaces specification</a>, the fully qualified name of
-the "price units" element is "http://ecommerce.org/schema:price units":
-<p><blockquote><pre>&lt;x xmlns:edi='http://ecommerce.org/schema'&gt;
- &lt;!-- the 'price' element's namespace is http://ecommerce.org/schema --&gt;
- &lt;edi:price units='Euro'&gt;32.18&lt;/edi:price&gt;
-&lt;/x&gt;</pre></blockquote>
-<p>The index string is a comma separated list of one or more of the
-following indexing strategy names:
-<p><ul type=disc>
-<li>none-none-none-none
-<li>node-element-presence
-<li>node-attribute-presence
-<li>node-element-equality-string
-<li>node-element-equality-number
-<li>node-element-substring-string
-<li>node-attribute-equality-string
-<li>node-attribute-equality-number
-<li>node-attribute-substring-string
-<li>edge-element-presence
-<li>edge-attribute-presence
-<li>edge-element-equality-string
-<li>edge-element-equality-number
-<li>edge-element-substring-string
-<li>edge-attribute-equality-string
-<li>edge-attribute-equality-number
-<li>edge-attribute-substring-string
-</ul>
-<p>Indices may only be declared for empty containers. Once documents have
-been added to a container the indexing specification for the container
-may not be changed.
-<p>If the operation is to be transaction-protected, the <b>txnid</b>
-parameter is a transaction handle returned from <a href="../api_java/txn_begin.html">DbEnv.txn_begin</a>;
-otherwise, null.
-<p>The <b>flags</b> parameter is currently unused, and must be set to 0.
-<p>The XmlContainer.declareIndex method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>The XmlContainer.declareIndex method may fail and throw an UNREF==xmlexception_class
-exception with the following exception code:
-<p><dl compact>
-<p><dt>CONTAINER_NOT_EMPTY<dd>Indexes may only be declared for empty containers.
-</dl>
-<p><dl compact>
-<p><dt>CONTAINER_CLOSED<dd>Indexes may only be declared on open containers.
-</dl>
-<p><dl compact>
-<p><dt>DATABASE_ERROR<dd>An error occurred in an underlying Berkeley DB database.
-UNREF==xml_getdberror method returns the error code for the error.
-</dl>
-<p>The XmlContainer.declareIndex method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XmlContainer.declareIndex 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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_java/xmldocument_class.html">XmlDocument</a>, <a href="../api_java/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_java/xml_close.html">XmlContainer.close</a>,
-<a href="../api_java/xml_declare.html">XmlContainer.declareIndex</a>,
-<a href="../api_java/xml_del.html">XmlContainer.deleteDocument</a>,
-<a href="../api_java/xml_get.html">XmlContainer.getDocument</a>,
-<a href="../api_java/xml_getname.html">XmlContainer.getName</a>,
-<a href="../api_java/xml_open.html">XmlContainer.open</a>,
-<a href="../api_java/xml_put.html">XmlContainer.putDocument</a>
-and
-<a href="../api_java/xml_xpath.html">XmlContainer.queryWithXPath</a>.
-<p>
-<a href="../api_java/xmldoc_getattr.html">XmlDocument.getAttributeValue</a>,
-<a href="../api_java/xmldoc_getcont.html">XmlDocument.getContent</a>,
-<a href="../api_java/xmldoc_getid.html">XmlDocument.getID</a>,
-<a href="../api_java/xmldoc_getname.html">XmlDocument.getName</a>,
-<a href="../api_java/xmldoc_gettype.html">XmlDocument.getType</a>,
-<a href="../api_java/xmldoc_setcont.html">XmlDocument.setContent</a>,
-<a href="../api_java/xmldoc_setname.html">XmlDocument.setName</a>,
-and
-<a href="../api_java/xmldoc_settype.html">XmlDocument.setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_java/xml_del.html b/db/docs/api_java/xml_del.html
deleted file mode 100644
index 13356586a..000000000
--- a/db/docs/api_java/xml_del.html
+++ /dev/null
@@ -1,81 +0,0 @@
-<!--Id: xml_del.so,v 10.5 2002/07/01 16:46:15 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlContainer.deleteDocument</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlContainer.deleteDocument</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-import com.sleepycat.dbxml.*;
-<p>
-public void deleteDocument(DbTxn txnid, int id, int flags)
- throws DbException;
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlContainer.deleteDocument method removes the document identified by the <b>id</b>
-parameter from the container.
-<p>If the operation is to be transaction-protected (other than by specifying
-the Db.DB_AUTO_COMMIT flag), the <b>txnid</b> parameter is a
-transaction handle returned from <a href="../api_java/txn_begin.html">DbEnv.txn_begin</a>; otherwise, null.
-<p>The <b>flags</b> value must be set to 0 or
-the following value:
-<p><dl compact>
-<p><dt><a name="Db.DB_AUTO_COMMIT">Db.DB_AUTO_COMMIT</a><dd>Enclose the XmlContainer.deleteDocument call within a transaction. If the call succeeds,
-changes made by the operation will be recoverable. If the call fails,
-the operation will have made no changes.
-</dl>
-<p>
-If the specified document is not in the container, the XmlContainer.deleteDocument method will return Db.DB_NOTFOUND.
-Otherwise, the XmlContainer.deleteDocument method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>If the operation was selected to resolve a deadlock, the
-XmlContainer.deleteDocument method will fail and
-throw a <a href="../api_java/deadlock_class.html">DbDeadlockException</a> exception.
-<p>The XmlContainer.deleteDocument method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XmlContainer.deleteDocument 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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_java/xmldocument_class.html">XmlDocument</a>, <a href="../api_java/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_java/xml_close.html">XmlContainer.close</a>,
-<a href="../api_java/xml_declare.html">XmlContainer.declareIndex</a>,
-<a href="../api_java/xml_del.html">XmlContainer.deleteDocument</a>,
-<a href="../api_java/xml_get.html">XmlContainer.getDocument</a>,
-<a href="../api_java/xml_getname.html">XmlContainer.getName</a>,
-<a href="../api_java/xml_open.html">XmlContainer.open</a>,
-<a href="../api_java/xml_put.html">XmlContainer.putDocument</a>
-and
-<a href="../api_java/xml_xpath.html">XmlContainer.queryWithXPath</a>.
-<p>
-<a href="../api_java/xmldoc_getattr.html">XmlDocument.getAttributeValue</a>,
-<a href="../api_java/xmldoc_getcont.html">XmlDocument.getContent</a>,
-<a href="../api_java/xmldoc_getid.html">XmlDocument.getID</a>,
-<a href="../api_java/xmldoc_getname.html">XmlDocument.getName</a>,
-<a href="../api_java/xmldoc_gettype.html">XmlDocument.getType</a>,
-<a href="../api_java/xmldoc_setcont.html">XmlDocument.setContent</a>,
-<a href="../api_java/xmldoc_setname.html">XmlDocument.setName</a>,
-and
-<a href="../api_java/xmldoc_settype.html">XmlDocument.setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_java/xml_get.html b/db/docs/api_java/xml_get.html
deleted file mode 100644
index fc7c6656b..000000000
--- a/db/docs/api_java/xml_get.html
+++ /dev/null
@@ -1,90 +0,0 @@
-<!--Id: xml_get.so,v 10.5 2002/07/01 16:46:15 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlContainer.getDocument</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlContainer.getDocument</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-import com.sleepycat.dbxml.*;
-<p>
-public XmlDocument getDocument(DbTxn txnid, int id, int flags)
- throws DbException;
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlContainer.getDocument method returns the document identified by the <b>id</b>
-parameter.
-<p>If the operation is to be transaction-protected, the <b>txnid</b>
-parameter is a transaction handle returned from <a href="../api_java/txn_begin.html">DbEnv.txn_begin</a>;
-otherwise, null.
-<p>The <b>flags</b> value must be set to 0 or by bitwise inclusively <b>OR</b>'ing together one or
-more of the following values:
-<p><dl compact>
-<p><dt><a name="Db.DB_DIRTY_READ">Db.DB_DIRTY_READ</a><dd>Read modified but not yet committed data. Silently ignored if the
-<a href="../api_java/db_open.html#DB_DIRTY_READ">Db.DB_DIRTY_READ</a> flag was not specified when the underlying
-<a href="../api_java/xmlcontainer_class.html">XmlContainer</a> was opened.
-<p><dt><a name="Db.DB_RMW">Db.DB_RMW</a><dd>Acquire write locks instead of read locks when doing the retrieval.
-Setting this flag can eliminate deadlock during a read-modify-write
-cycle by acquiring the write lock during the read part of the cycle so
-that another thread of control acquiring a read lock for the same item,
-in its own read-modify-write cycle, will not result in deadlock.
-<p>Because the XmlContainer.getDocument interface will not hold locks
-across Berkeley DB interface calls in non-transactional environments, the
-<a href="../api_java/dbc_get.html#DB_RMW">Db.DB_RMW</a> flag to the XmlContainer.getDocument call is meaningful only in
-the presence of transactions.
-</dl>
-<p>
-If the specified document is not in the container, the XmlContainer.getDocument method will return Db.DB_NOTFOUND.
-Otherwise, the XmlContainer.getDocument method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>If the operation was selected to resolve a deadlock, the
-XmlContainer.getDocument method will fail and
-throw a <a href="../api_java/deadlock_class.html">DbDeadlockException</a> exception.
-<p>The XmlContainer.getDocument method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XmlContainer.getDocument 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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_java/xmldocument_class.html">XmlDocument</a>, <a href="../api_java/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_java/xml_close.html">XmlContainer.close</a>,
-<a href="../api_java/xml_declare.html">XmlContainer.declareIndex</a>,
-<a href="../api_java/xml_del.html">XmlContainer.deleteDocument</a>,
-<a href="../api_java/xml_get.html">XmlContainer.getDocument</a>,
-<a href="../api_java/xml_getname.html">XmlContainer.getName</a>,
-<a href="../api_java/xml_open.html">XmlContainer.open</a>,
-<a href="../api_java/xml_put.html">XmlContainer.putDocument</a>
-and
-<a href="../api_java/xml_xpath.html">XmlContainer.queryWithXPath</a>.
-<p>
-<a href="../api_java/xmldoc_getattr.html">XmlDocument.getAttributeValue</a>,
-<a href="../api_java/xmldoc_getcont.html">XmlDocument.getContent</a>,
-<a href="../api_java/xmldoc_getid.html">XmlDocument.getID</a>,
-<a href="../api_java/xmldoc_getname.html">XmlDocument.getName</a>,
-<a href="../api_java/xmldoc_gettype.html">XmlDocument.getType</a>,
-<a href="../api_java/xmldoc_setcont.html">XmlDocument.setContent</a>,
-<a href="../api_java/xmldoc_setname.html">XmlDocument.setName</a>,
-and
-<a href="../api_java/xmldoc_settype.html">XmlDocument.setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_java/xml_getname.html b/db/docs/api_java/xml_getname.html
deleted file mode 100644
index 821bd543a..000000000
--- a/db/docs/api_java/xml_getname.html
+++ /dev/null
@@ -1,73 +0,0 @@
-<!--Id: xml_getname.so,v 10.4 2002/06/24 14:49:37 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlContainer.getName</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlContainer.getName</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-import com.sleepycat.dbxml.*;
-<p>
-public String getName()
- throws XmlException;
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlContainer.getName method returns the name of the container.
-<p>The XmlContainer.getName method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>The XmlContainer.getName method may fail and throw an exception encapsulating 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 container has not yet been opened.
-</dl>
-<p>If the requested item could not be returned due to insufficient memory,
-the XmlContainer.getName method will fail and
-throw a <a href="../api_java/mem_class.html">DbMemoryException</a> exception.
-<p>The XmlContainer.getName method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XmlContainer.getName 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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_java/xmldocument_class.html">XmlDocument</a>, <a href="../api_java/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_java/xml_close.html">XmlContainer.close</a>,
-<a href="../api_java/xml_declare.html">XmlContainer.declareIndex</a>,
-<a href="../api_java/xml_del.html">XmlContainer.deleteDocument</a>,
-<a href="../api_java/xml_get.html">XmlContainer.getDocument</a>,
-<a href="../api_java/xml_getname.html">XmlContainer.getName</a>,
-<a href="../api_java/xml_open.html">XmlContainer.open</a>,
-<a href="../api_java/xml_put.html">XmlContainer.putDocument</a>
-and
-<a href="../api_java/xml_xpath.html">XmlContainer.queryWithXPath</a>.
-<p>
-<a href="../api_java/xmldoc_getattr.html">XmlDocument.getAttributeValue</a>,
-<a href="../api_java/xmldoc_getcont.html">XmlDocument.getContent</a>,
-<a href="../api_java/xmldoc_getid.html">XmlDocument.getID</a>,
-<a href="../api_java/xmldoc_getname.html">XmlDocument.getName</a>,
-<a href="../api_java/xmldoc_gettype.html">XmlDocument.getType</a>,
-<a href="../api_java/xmldoc_setcont.html">XmlDocument.setContent</a>,
-<a href="../api_java/xmldoc_setname.html">XmlDocument.setName</a>,
-and
-<a href="../api_java/xmldoc_settype.html">XmlDocument.setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_java/xml_index.html b/db/docs/api_java/xml_index.html
deleted file mode 100644
index 0867ad133..000000000
--- a/db/docs/api_java/xml_index.html
+++ /dev/null
@@ -1,56 +0,0 @@
-<!--Id: xml_index.so,v 10.5 2002/06/25 17:17:40 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: Berkeley DB XML: Java Interface</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<h1 align=center>Berkeley DB XML: Java Interface</h1>
-<p><table border=1 align=center>
-<tr><th>Section</th><th>Class/Method</th><th>Description</th></tr>
-<tr><td><b>DbXML Operations</b></td><td><a href="../api_java/xmlcontainer_class.html">XmlContainer</a></td><td>Create a XML container handle</td></tr>
-<tr><td><br></td><td><a href="../api_java/xml_close.html">XmlContainer.close</a></td><td>Close a XML container</td></tr>
-<tr><td><br></td><td><a href="../api_java/xml_declare.html">XmlContainer.declareIndex</a></td><td>Declare an index</td></tr>
-<tr><td><br></td><td><a href="../api_java/xml_del.html">XmlContainer.deleteDocument</a></td><td>Delete a document from a container</td></tr>
-<tr><td><br></td><td><a href="../api_java/xml_get.html">XmlContainer.getDocument</a></td><td>Retrieve a document from a container</td></tr>
-<tr><td><br></td><td><a href="../api_java/xml_getname.html">XmlContainer.getName</a></td><td>Return a container name</td></tr>
-<tr><td><br></td><td><a href="../api_java/xml_open.html">XmlContainer.open</a></td><td>Open a XML container</td></tr>
-<tr><td><br></td><td><a href="../api_java/xml_xparse.html">XmlContainer.parseXPathExpression</a></td><td>Parse an XPath 1.0 expression</td></tr>
-<tr><td><br></td><td><a href="../api_java/xml_put.html">XmlContainer.putDocument</a></td><td>Store a document in a container</td></tr>
-<tr><td><br></td><td><a href="../api_java/xml_xpath.html">XmlContainer.queryWithXPath</a></td><td>Query a container using XPath 1.0</td></tr>
-<tr><td><br></td><td><a href="../api_java/xmldocument_class.html">XmlDocument</a></td><td>Create a XML document handle</td></tr>
-<tr><td><br></td><td><a href="../api_java/xmldoc_getattr.html">XmlDocument.getAttributeValue</a></td><td>Get the document annotation attributes</td></tr>
-<tr><td><br></td><td><a href="../api_java/xmldoc_getcont.html">XmlDocument.getContent</a></td><td>Get the document content</td></tr>
-<tr><td><br></td><td><a href="../api_java/xmldoc_getcontlen.html">XmlDocument.getContentLength</a></td><td>Return the document's length</td></tr>
-<tr><td><br></td><td><a href="../api_java/xmldoc_getdom.html">XmlDocument.getDOM</a></td><td>Return the document as a DOM</td></tr>
-<tr><td><br></td><td><a href="../api_java/xmldoc_getenc.html">XmlDocument.getEncoding</a></td><td>Return the document's encoding</td></tr>
-<tr><td><br></td><td><a href="../api_java/xmldoc_getid.html">XmlDocument.getID</a></td><td>Get the document ID</td></tr>
-<tr><td><br></td><td><a href="../api_java/xmldoc_getname.html">XmlDocument.getName</a></td><td>Get the document name</td></tr>
-<tr><td><br></td><td><a href="../api_java/xmldoc_gettype.html">XmlDocument.getType</a></td><td>Get the document type</td></tr>
-<tr><td><br></td><td><a href="../api_java/xmldoc_setattr.html">XmlDocument.setAttributeValue</a></td><td>Set the document annotation attributes</td></tr>
-<tr><td><br></td><td><a href="../api_java/xmldoc_setcont.html">XmlDocument.setContent</a></td><td>Set the document content</td></tr>
-<tr><td><br></td><td><a href="../api_java/xmldoc_setname.html">XmlDocument.setName</a></td><td>Set the document name</td></tr>
-<tr><td><br></td><td><a href="../api_java/xmldoc_settype.html">XmlDocument.setType</a></td><td>Set the document type</td></tr>
-<tr><td><br></td><td><a href="../api_java/xmlquery_class.html">XmlQueryContext</a></td><td>Create a XPath query context</td></tr>
-<tr><td><br></td><td><a href="../api_java/xmlq_clearname.html">XmlQueryContext.clearNamespaces</a></td><td>Delete all namespace mappings</td></tr>
-<tr><td><br></td><td><a href="../api_java/xmlq_getname.html">XmlQueryContext.getNamespace</a></td><td>Return the namespace URI</td></tr>
-<tr><td><br></td><td><a href="../api_java/xmlq_getvar.html">XmlQueryContext.getVariableValue</a></td><td>Return the value bound to a variable</td></tr>
-<tr><td><br></td><td><a href="../api_java/xmlq_remname.html">XmlQueryContext.removeNamespace</a></td><td>Delete the namespace URI</td></tr>
-<tr><td><br></td><td><a href="../api_java/xmlq_seteval.html">XmlQueryContext.setEvaluationType</a></td><td>Set the query evaluation type</td></tr>
-<tr><td><br></td><td><a href="../api_java/xmlq_setname.html">XmlQueryContext.setNamespace</a></td><td>Set the namespace URI</td></tr>
-<tr><td><br></td><td><a href="../api_java/xmlq_setret.html">XmlQueryContext.setReturnType</a></td><td>Set the query return type</td></tr>
-<tr><td><br></td><td><a href="../api_java/xmlq_setvar.html">XmlQueryContext.setVariableValue</a></td><td>Bind a value to a variable</td></tr>
-<tr><td><br></td><td><a href="../api_java/xmlresults_class.html">XmlResults</a></td><td>Encapsulate XPath query results</td></tr>
-<tr><td><br></td><td><a href="../api_java/xmlr_next.html">XmlResults.next</a></td><td>Return the next result</td></tr>
-<tr><td><br></td><td><a href="../api_java/xmlr_reset.html">XmlResults.reset</a></td><td>Reset the results iterator</td></tr>
-<tr><td><br></td><td><a href="../api_java/xmlvalue_class.html">XmlValue</a></td><td>Encapsulate the value of a document node</td></tr>
-<tr><td><br></td><td><a href="../api_java/xmlxpathexp_class.html">XPathExpression</a></td><td>Encapsulate a parsed XPath expression</td></tr>
-<tr><td><br></td><td><a href="../api_java/xmlxpe_get.html">XPathExpression.getXPathQuery</a></td><td>Return the XPath query</td></tr>
-</table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_java/xml_open.html b/db/docs/api_java/xml_open.html
deleted file mode 100644
index 474da8e95..000000000
--- a/db/docs/api_java/xml_open.html
+++ /dev/null
@@ -1,148 +0,0 @@
-<!--Id: xml_open.so,v 10.5 2002/07/30 16:57:43 merrells Exp -->
-<!--Id: m4.db_open,v 10.2 2002/06/20 03:47:44 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlContainer.open</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlContainer.open</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-import com.sleepycat.db.*;
-import java.io.FileNotFoundException;
-<p>
-public void open(DbTxn txnid, int flags, int mode)
- throws DbException, FileNotFoundException;
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlContainer.open method opens the <a href="../api_java/xmlcontainer_class.html">XmlContainer</a>
-for both reading and writing. The container name, passed
-through the constructor, is used as the base name for a set of
-underlying Berkeley DB databases that are used to back the
-container.
-
-<p>The XmlContainer.open method may only be called on a closed
-container. A container is in the closed state after construction,
-and after the <a href="../api_java/xml_close.html">XmlContainer.close</a> method has been called. Note
-that it is allowable to re-open a container after it has been
-closed.
-
-<p>An open <a href="../api_java/xmlcontainer_class.html">XmlContainer</a> must be closed, by calling the
-<a href="../api_java/xml_close.html">XmlContainer.close</a> method, before the <a href="../api_java/xmlcontainer_class.html">XmlContainer</a>
-object is destroyed. Otherwise the underlying database
-resources will not be released.
-<p>If the operation is to be transaction-protected (other than by specifying
-the Db.DB_AUTO_COMMIT flag), the <b>txnid</b> parameter is a
-transaction handle returned from <a href="../api_java/txn_begin.html">DbEnv.txn_begin</a>; otherwise, null.
-<p>The <b>flags</b> and <b>mode</b> arguments specify how files will be opened
-and/or created if they do not already exist.
-<p>The <b>flags</b> value must be set to 0 or by bitwise inclusively <b>OR</b>'ing together one or
-more of the following values:
-<p><dl compact>
-<p><dt><a name="Db.DB_AUTO_COMMIT">Db.DB_AUTO_COMMIT</a><dd>Enclose the XmlContainer.open call within a transaction. If the call succeeds,
-the open operation will be recoverable. If the call fails, no container will
-have been created.
-<p><dt><a name="Db.DB_CREATE">Db.DB_CREATE</a><dd>Create the container. If the container does not already exist and the Db.DB_CREATE
-flag is not specified, the XmlContainer.open will fail.
-<p><dt><a name="Db.DB_DIRTY_READ">Db.DB_DIRTY_READ</a><dd>Support dirty reads; that is, read operations on the container may request the
-return of modified but not yet committed data.
-<p><dt><a name="Db.DB_EXCL">Db.DB_EXCL</a><dd>Return an error if the container already exists. The <a href="../api_java/db_open.html#DB_EXCL">Db.DB_EXCL</a> flag is
-only meaningful when specified with the <a href="../api_java/env_open.html#DB_CREATE">Db.DB_CREATE</a> flag.
-<p><dt><a name="Db.DB_NOMMAP">Db.DB_NOMMAP</a><dd>Do not map this container into process memory (see the description of the
-<a href="../api_java/env_set_mp_mmapsize.html">DbEnv.set_mp_mmapsize</a> method for further information).
-<p><dt><a name="Db.DB_RDONLY">Db.DB_RDONLY</a><dd>Open the container for reading only. Any attempt to modify items in the container
-will fail, regardless of the actual permissions of any underlying files.
-<p><dt><a name="Db.DB_THREAD">Db.DB_THREAD</a><dd>Cause the <a href="../api_java/xmlcontainer_class.html">XmlContainer</a> handle returned by XmlContainer.open to be
-<i>free-threaded</i>; that is, usable by multiple threads within a
-single address space.
-<p>Threading is always assumed in the Java API, so no special flags are
-required, and Berkeley DB functions will always behave as if the
-<a href="../api_java/env_open.html#DB_THREAD">Db.DB_THREAD</a> flag was specified.
-</dl>
-<p>On UNIX systems or in IEEE/ANSI Std 1003.1 (POSIX) environments, all files created by
-the container open are created with mode <b>mode</b> (as described in <b>chmod</b>(2)) and modified by the process' umask value at the time of creation
-(see <b>umask</b>(2)). If <b>mode</b> is 0, the container open will use a default
-mode of readable and writable by both owner and group. On Windows
-systems, the mode argument is ignored. The group ownership of created
-files is based on the system and directory defaults, and is not further
-specified by Berkeley DB.
-<p>Calling XmlContainer.open is a reasonably expensive operation, and maintaining
-a set of open containers will normally be preferable to repeatedly opening
-and closing the container for each new query.
-<p>The XmlContainer.open method throws an exception that encapsulates a non-zero error value on
-failure.
-If XmlContainer.open fails, the <a href="../api_java/xml_close.html">XmlContainer.close</a> method should be called to discard the
-<a href="../api_java/xmlcontainer_class.html">XmlContainer</a> handle.
-<h1>Environment Variables</h1>
-<p><dl compact>
-<p><dt>DB_HOME<dd>If a <b>dbenv</b> argument to <a href="../api_c/db_create.html">db_create</a> was specified, the
-environment variable <b>DB_HOME</b> may be used as the path of the
-database environment home.
-<p>XmlContainer.open is affected by any database directory specified using the
-<a href="../api_java/env_set_data_dir.html">DbEnv.set_data_dir</a> method, or by setting the "set_data_dir" string
-in the environment's <b>DB_CONFIG</b> file.
-</dl>
-<p><dl compact>
-<p><dt>TMPDIR<dd>If the <b>file</b> and <b>dbenv</b> arguments to XmlContainer.open are
-null, the environment variable <b>TMPDIR</b> may be used as a
-directory in which to create temporary backing files
-</dl>
-<h1>Errors</h1>
-<p>The XmlContainer.open method may fail and throw an exception encapsulating a non-zero error for the following conditions:
-<p><dl compact>
-<p><dt><a name="Db.DB_OLD_VERSION">Db.DB_OLD_VERSION</a><dd>The container cannot be opened without being first upgraded.
-<p><dt>EEXIST<dd>DB_CREATE and DB_EXCL were specified and the container exists.
-<p><dt>EINVAL<dd>An invalid flag value or parameter was specified.
-<p>
-The <a href="../api_java/env_open.html#DB_THREAD">Db.DB_THREAD</a> flag was specified and fast mutexes are not
-available for this architecture.
-<p>The <a href="../api_java/env_open.html#DB_THREAD">Db.DB_THREAD</a> flag was specified to XmlContainer.open, but was not
-specified to the <a href="../api_java/env_open.html">DbEnv.open</a> call for the environment in which the
-<a href="../api_java/xmlcontainer_class.html">XmlContainer</a> handle was created.
-</dl>
-<p>The XmlContainer.open method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XmlContainer.open 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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_java/xmldocument_class.html">XmlDocument</a>, <a href="../api_java/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_java/xml_close.html">XmlContainer.close</a>,
-<a href="../api_java/xml_declare.html">XmlContainer.declareIndex</a>,
-<a href="../api_java/xml_del.html">XmlContainer.deleteDocument</a>,
-<a href="../api_java/xml_get.html">XmlContainer.getDocument</a>,
-<a href="../api_java/xml_getname.html">XmlContainer.getName</a>,
-<a href="../api_java/xml_open.html">XmlContainer.open</a>,
-<a href="../api_java/xml_put.html">XmlContainer.putDocument</a>
-and
-<a href="../api_java/xml_xpath.html">XmlContainer.queryWithXPath</a>.
-<p>
-<a href="../api_java/xmldoc_getattr.html">XmlDocument.getAttributeValue</a>,
-<a href="../api_java/xmldoc_getcont.html">XmlDocument.getContent</a>,
-<a href="../api_java/xmldoc_getid.html">XmlDocument.getID</a>,
-<a href="../api_java/xmldoc_getname.html">XmlDocument.getName</a>,
-<a href="../api_java/xmldoc_gettype.html">XmlDocument.getType</a>,
-<a href="../api_java/xmldoc_setcont.html">XmlDocument.setContent</a>,
-<a href="../api_java/xmldoc_setname.html">XmlDocument.setName</a>,
-and
-<a href="../api_java/xmldoc_settype.html">XmlDocument.setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_java/xml_put.html b/db/docs/api_java/xml_put.html
deleted file mode 100644
index 5a7b16cd0..000000000
--- a/db/docs/api_java/xml_put.html
+++ /dev/null
@@ -1,90 +0,0 @@
-<!--Id: xml_put.so,v 10.6 2002/06/24 14:49:37 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlContainer.putDocument</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlContainer.putDocument</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-import com.sleepycat.dbxml.*;
-<p>
-public int putDocument(DbTxn txnid, XmlDocument xmldoc, int flags)
- throws DbException;
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlContainer.putDocument method stores a XML document into the container and
-returns the document ID. The contents of an <a href="../api_java/xmldocument_class.html">XmlDocument</a> may be
-of type <a href="../api_java/xmldoc_settype.html#XmlDocument::BYTES">Db.XmlDocument::BYTES</a> or <a href="../api_java/xmldoc_settype.html#XmlDocument::XML">Db.XmlDocument::XML</a>. XML
-content is parsed and indexed as per the container indexing
-specification. Non-XML (<a href="../api_java/xmldoc_settype.html#XmlDocument::BYTES">Db.XmlDocument::BYTES</a>) content is not
-indexed.
-<p>Regardless of the content type the document annotation attributes
-are always indexed.]
-<p>The XML indexer expects XML content to be encoded as UTF-8. The indexer
-also expects the XML content to be
-<a href="http://www.w3.org/TR/2000/REC-xml-20001006.html#dt-wellformed">well-formed</a>, but the content need not be
-<a href="http://www.w3.org/TR/2000/REC-xml-20001006.html#dt-valid">valid</a>.
-<p>If the operation is to be transaction-protected (other than by specifying
-the Db.DB_AUTO_COMMIT flag), the <b>txnid</b> parameter is a
-transaction handle returned from <a href="../api_java/txn_begin.html">DbEnv.txn_begin</a>; otherwise, null.
-<p>The <b>flags</b> value must be set to 0 or
-the following value:
-<p><dl compact>
-<p><dt><a name="Db.DB_AUTO_COMMIT">Db.DB_AUTO_COMMIT</a><dd>Enclose the XmlContainer.putDocument call within a transaction. If the call succeeds,
-changes made by the operation will be recoverable. If the call fails,
-the operation will have made no changes.
-</dl>
-<p>The XmlContainer.putDocument method returns a document ID on success.
-Otherwise, the XmlContainer.putDocument method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>If the operation was selected to resolve a deadlock, the
-XmlContainer.putDocument method will fail and
-throw a <a href="../api_java/deadlock_class.html">DbDeadlockException</a> exception.
-<p>The XmlContainer.putDocument method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XmlContainer.putDocument 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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_java/xmldocument_class.html">XmlDocument</a>, <a href="../api_java/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_java/xml_close.html">XmlContainer.close</a>,
-<a href="../api_java/xml_declare.html">XmlContainer.declareIndex</a>,
-<a href="../api_java/xml_del.html">XmlContainer.deleteDocument</a>,
-<a href="../api_java/xml_get.html">XmlContainer.getDocument</a>,
-<a href="../api_java/xml_getname.html">XmlContainer.getName</a>,
-<a href="../api_java/xml_open.html">XmlContainer.open</a>,
-<a href="../api_java/xml_put.html">XmlContainer.putDocument</a>
-and
-<a href="../api_java/xml_xpath.html">XmlContainer.queryWithXPath</a>.
-<p>
-<a href="../api_java/xmldoc_getattr.html">XmlDocument.getAttributeValue</a>,
-<a href="../api_java/xmldoc_getcont.html">XmlDocument.getContent</a>,
-<a href="../api_java/xmldoc_getid.html">XmlDocument.getID</a>,
-<a href="../api_java/xmldoc_getname.html">XmlDocument.getName</a>,
-<a href="../api_java/xmldoc_gettype.html">XmlDocument.getType</a>,
-<a href="../api_java/xmldoc_setcont.html">XmlDocument.setContent</a>,
-<a href="../api_java/xmldoc_setname.html">XmlDocument.setName</a>,
-and
-<a href="../api_java/xmldoc_settype.html">XmlDocument.setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_java/xml_xparse.html b/db/docs/api_java/xml_xparse.html
deleted file mode 100644
index ad8091b74..000000000
--- a/db/docs/api_java/xml_xparse.html
+++ /dev/null
@@ -1,77 +0,0 @@
-<!--Id: xml_xparse.so,v 10.5 2002/06/24 14:49:38 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlContainer.parseXPathExpression</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlContainer.parseXPathExpression</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-import com.sleepycat.dbxml.*;
-<p>
-public XPathExpression parseXPathExpression(
- String xpath, XmlQueryContext context, int flags)
- throws XmlException;
-</pre></h3>
-<h1>Description</h1>
-<p>Return a pre-parsed XPath 1.0 version query for later use with the
-<a href="../api_java/xml_xpath.html">XmlContainer.queryWithXPath</a> method. The query is provided as a string and is expected
-to be in the syntax defined in the
-<a href="http://www.w3c.org/TR/xpath">W3C XPath 1.0
-specification</a>.
-<p>The query may optionally be done within the execution context
-<b>context</b>, which describes how the query is to be performed.
-<p>The <b>flags</b> parameter is currently unused, and must be set to 0.
-<p>The XmlContainer.parseXPathExpression method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>The XmlContainer.parseXPathExpression method may fail and throw an exception encapsulating 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 XmlContainer.parseXPathExpression method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XmlContainer.parseXPathExpression 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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_java/xmldocument_class.html">XmlDocument</a>, <a href="../api_java/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_java/xml_close.html">XmlContainer.close</a>,
-<a href="../api_java/xml_declare.html">XmlContainer.declareIndex</a>,
-<a href="../api_java/xml_del.html">XmlContainer.deleteDocument</a>,
-<a href="../api_java/xml_get.html">XmlContainer.getDocument</a>,
-<a href="../api_java/xml_getname.html">XmlContainer.getName</a>,
-<a href="../api_java/xml_open.html">XmlContainer.open</a>,
-<a href="../api_java/xml_put.html">XmlContainer.putDocument</a>
-and
-<a href="../api_java/xml_xpath.html">XmlContainer.queryWithXPath</a>.
-<p>
-<a href="../api_java/xmldoc_getattr.html">XmlDocument.getAttributeValue</a>,
-<a href="../api_java/xmldoc_getcont.html">XmlDocument.getContent</a>,
-<a href="../api_java/xmldoc_getid.html">XmlDocument.getID</a>,
-<a href="../api_java/xmldoc_getname.html">XmlDocument.getName</a>,
-<a href="../api_java/xmldoc_gettype.html">XmlDocument.getType</a>,
-<a href="../api_java/xmldoc_setcont.html">XmlDocument.setContent</a>,
-<a href="../api_java/xmldoc_setname.html">XmlDocument.setName</a>,
-and
-<a href="../api_java/xmldoc_settype.html">XmlDocument.setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_java/xml_xpath.html b/db/docs/api_java/xml_xpath.html
deleted file mode 100644
index f998cab9b..000000000
--- a/db/docs/api_java/xml_xpath.html
+++ /dev/null
@@ -1,102 +0,0 @@
-<!--Id: xml_xpath.so,v 10.5 2002/06/24 14:49:38 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlContainer.queryWithXPath</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlContainer.queryWithXPath</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-import com.sleepycat.dbxml.*;
-<p>
-public XmlResults queryWithXPath(DbTxn txnid,
- XPathExpression expression, int flags)
- throws XmlException;
-<p>
-public XmlResults queryWithXPath(DbTxn txnid,
- String query, XmlQueryContext context, int flags)
- throws XmlException;
-</pre></h3>
-<h1>Description</h1>
-<p>Return the results of an XPath 1.0 version query against the container.
-In the first variant, <b>expression</b> is provided as the results of
-a call to the <a href="../api_java/xml_xparse.html">XmlContainer.parseXPathExpression</a> method.
-<p>In the second variant, <b>query</b> is provided as a string (expected
-to be in the syntax defined in the
-<a href="http://www.w3c.org/TR/xpath">W3C XPath 1.0 specification</a>).
-In this case, the query may optionally be done within the execution
-context <b>context</b>, which describes how the query is to be
-performed. If no context is specified, the query will retrieve the set
-of <a href="../api_java/xmldocument_class.html">XmlDocument</a>s matching the XPath expression.
-<p>If the operation is to be transaction-protected, the <b>txnid</b>
-parameter is a transaction handle returned from <a href="../api_java/txn_begin.html">DbEnv.txn_begin</a>;
-otherwise, null.
-<p>The <b>flags</b> value must be set to 0 or by bitwise inclusively <b>OR</b>'ing together one or
-more of the following values:
-<p><dl compact>
-<p><dt><a name="Db.DB_DIRTY_READ">Db.DB_DIRTY_READ</a><dd>Read modified but not yet committed data. Silently ignored if the
-<a href="../api_java/db_open.html#DB_DIRTY_READ">Db.DB_DIRTY_READ</a> flag was not specified when the underlying
-<a href="../api_java/xmlcontainer_class.html">XmlContainer</a> was opened.
-<p><dt><a name="Db.DB_RMW">Db.DB_RMW</a><dd>Acquire write locks instead of read locks when doing the retrieval.
-Setting this flag can eliminate deadlock during a read-modify-write
-cycle by acquiring the write lock during the read part of the cycle so
-that another thread of control acquiring a read lock for the same item,
-in its own read-modify-write cycle, will not result in deadlock.
-<p>Because the <a href="../api_java/xml_get.html">XmlContainer.getDocument</a> interface will not hold locks
-across Berkeley DB interface calls in non-transactional environments, the
-<a href="../api_java/dbc_get.html#DB_RMW">Db.DB_RMW</a> flag to the <a href="../api_java/xml_get.html">XmlContainer.getDocument</a> call is meaningful only in
-the presence of transactions.
-</dl>
-<p>The XmlContainer.queryWithXPath method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>The XmlContainer.queryWithXPath method may fail and throw an exception encapsulating 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 XmlContainer.queryWithXPath method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XmlContainer.queryWithXPath 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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_java/xmldocument_class.html">XmlDocument</a>, <a href="../api_java/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_java/xml_close.html">XmlContainer.close</a>,
-<a href="../api_java/xml_declare.html">XmlContainer.declareIndex</a>,
-<a href="../api_java/xml_del.html">XmlContainer.deleteDocument</a>,
-<a href="../api_java/xml_get.html">XmlContainer.getDocument</a>,
-<a href="../api_java/xml_getname.html">XmlContainer.getName</a>,
-<a href="../api_java/xml_open.html">XmlContainer.open</a>,
-<a href="../api_java/xml_put.html">XmlContainer.putDocument</a>
-and
-<a href="../api_java/xml_xpath.html">XmlContainer.queryWithXPath</a>.
-<p>
-<a href="../api_java/xmldoc_getattr.html">XmlDocument.getAttributeValue</a>,
-<a href="../api_java/xmldoc_getcont.html">XmlDocument.getContent</a>,
-<a href="../api_java/xmldoc_getid.html">XmlDocument.getID</a>,
-<a href="../api_java/xmldoc_getname.html">XmlDocument.getName</a>,
-<a href="../api_java/xmldoc_gettype.html">XmlDocument.getType</a>,
-<a href="../api_java/xmldoc_setcont.html">XmlDocument.setContent</a>,
-<a href="../api_java/xmldoc_setname.html">XmlDocument.setName</a>,
-and
-<a href="../api_java/xmldoc_settype.html">XmlDocument.setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_java/xmlcontainer_class.html b/db/docs/api_java/xmlcontainer_class.html
deleted file mode 100644
index 8a02ded46..000000000
--- a/db/docs/api_java/xmlcontainer_class.html
+++ /dev/null
@@ -1,85 +0,0 @@
-<!--Id: xmlcontainer_class.so,v 1.8 2002/07/30 16:57:44 merrells Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlContainer</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlContainer</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-import com.sleepycat.dbxml.*;
-<p>
-public class XmlContainer extends Object
-{
- XmlContainer(DbEnv dbenv, String name, int flags)
- throws DbException;
- ...
-}
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlContainer class provides methods for managing the storage and
-retrieval of XmlDocuments. The constructor creates an XmlContainer
-object that is the handle for an XML Container.
-<p>If no <b>dbenv</b> value is specified, the container is standalone; that
-is, it is not part of any Berkeley DB environment.
-<p>If a <b>dbenv</b> value is specified, the container is created within
-the specified Berkeley DB environment and all operations are performed within
-the context of that environment. The container methods automatically
-make calls to the other subsystems in Berkeley DB based on the enclosing
-environment. For example, if the environment has been configured to use
-locking, the container methods will automatically acquire the correct
-locks when reading and writing pages of the underlying databases that
-support the container. The user is expected to suitably configure the
-environment for their particular application.
-<p>The <b>flags</b> value must be set to 0 or
-the following value:
-<p><dl compact>
-<p><dt><a name="Db.DB_XA_CREATE">Db.DB_XA_CREATE</a><dd>Instead of creating a standalone database, create a database intended to
-be accessed via applications running under a X/Open conformant Transaction
-Manager. The database will be opened in the environment specified by the
-OPENINFO parameter of the GROUPS section of the ubbconfig file. See the
-<a href="../ref/xa/intro.html">XA Resource Manager</a> chapter in the
-Reference Guide for more information.
-</dl>
-<h1>Class</h1>
-<a href="../api_java/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_java/xmldocument_class.html">XmlDocument</a>, <a href="../api_java/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_java/xml_close.html">XmlContainer.close</a>,
-<a href="../api_java/xml_declare.html">XmlContainer.declareIndex</a>,
-<a href="../api_java/xml_del.html">XmlContainer.deleteDocument</a>,
-<a href="../api_java/xml_get.html">XmlContainer.getDocument</a>,
-<a href="../api_java/xml_getname.html">XmlContainer.getName</a>,
-<a href="../api_java/xml_open.html">XmlContainer.open</a>,
-<a href="../api_java/xml_put.html">XmlContainer.putDocument</a>
-and
-<a href="../api_java/xml_xpath.html">XmlContainer.queryWithXPath</a>.
-<p>
-<a href="../api_java/xmldoc_getattr.html">XmlDocument.getAttributeValue</a>,
-<a href="../api_java/xmldoc_getcont.html">XmlDocument.getContent</a>,
-<a href="../api_java/xmldoc_getid.html">XmlDocument.getID</a>,
-<a href="../api_java/xmldoc_getname.html">XmlDocument.getName</a>,
-<a href="../api_java/xmldoc_gettype.html">XmlDocument.getType</a>,
-<a href="../api_java/xmldoc_setcont.html">XmlDocument.setContent</a>,
-<a href="../api_java/xmldoc_setname.html">XmlDocument.setName</a>,
-and
-<a href="../api_java/xmldoc_settype.html">XmlDocument.setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_java/xmldoc_getattr.html b/db/docs/api_java/xmldoc_getattr.html
deleted file mode 100644
index f3e0127f4..000000000
--- a/db/docs/api_java/xmldoc_getattr.html
+++ /dev/null
@@ -1,72 +0,0 @@
-<!--Id: xmldoc_getattr.so,v 10.6 2002/07/01 16:46:15 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlDocument.getAttributeValue</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlDocument.getAttributeValue</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-import com.sleepycat.dbxml.*;
-<p>
-public XmlValue getAttributeValue(String attr)
- throws XmlException;
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlDocument.getAttributeValue method returns the value of the <b>attr</b>
-annotation attribute.
-<p>
-If the specified attribute is not in the document, the XmlDocument.getAttributeValue method will return Db.DB_NOTFOUND.
-Otherwise, the XmlDocument.getAttributeValue method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>The XmlDocument.getAttributeValue method may fail and throw an exception encapsulating a non-zero error for the following conditions:
-<p>If the requested item could not be returned due to insufficient memory,
-the XmlDocument.getAttributeValue method will fail and
-throw a <a href="../api_java/mem_class.html">DbMemoryException</a> exception.
-<p>The XmlDocument.getAttributeValue method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XmlDocument.getAttributeValue 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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_java/xmldocument_class.html">XmlDocument</a>, <a href="../api_java/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_java/xml_close.html">XmlContainer.close</a>,
-<a href="../api_java/xml_declare.html">XmlContainer.declareIndex</a>,
-<a href="../api_java/xml_del.html">XmlContainer.deleteDocument</a>,
-<a href="../api_java/xml_get.html">XmlContainer.getDocument</a>,
-<a href="../api_java/xml_getname.html">XmlContainer.getName</a>,
-<a href="../api_java/xml_open.html">XmlContainer.open</a>,
-<a href="../api_java/xml_put.html">XmlContainer.putDocument</a>
-and
-<a href="../api_java/xml_xpath.html">XmlContainer.queryWithXPath</a>.
-<p>
-<a href="../api_java/xmldoc_getattr.html">XmlDocument.getAttributeValue</a>,
-<a href="../api_java/xmldoc_getcont.html">XmlDocument.getContent</a>,
-<a href="../api_java/xmldoc_getid.html">XmlDocument.getID</a>,
-<a href="../api_java/xmldoc_getname.html">XmlDocument.getName</a>,
-<a href="../api_java/xmldoc_gettype.html">XmlDocument.getType</a>,
-<a href="../api_java/xmldoc_setcont.html">XmlDocument.setContent</a>,
-<a href="../api_java/xmldoc_setname.html">XmlDocument.setName</a>,
-and
-<a href="../api_java/xmldoc_settype.html">XmlDocument.setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_java/xmldoc_getcont.html b/db/docs/api_java/xmldoc_getcont.html
deleted file mode 100644
index eb62821e2..000000000
--- a/db/docs/api_java/xmldoc_getcont.html
+++ /dev/null
@@ -1,70 +0,0 @@
-<!--Id: xmldoc_getcont.so,v 10.5 2002/06/24 14:49:39 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlDocument.getContent</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlDocument.getContent</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-import com.sleepycat.dbxml.*;
-<p>
-public String getContent()
- throws XmlException;
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlDocument.getContent method returns the document content.
-<p>The XmlDocument.getContent method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>The XmlDocument.getContent method may fail and throw an exception encapsulating 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 document has no content stored in it.
-</dl>
-<p>The XmlDocument.getContent method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XmlDocument.getContent 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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_java/xmldocument_class.html">XmlDocument</a>, <a href="../api_java/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_java/xml_close.html">XmlContainer.close</a>,
-<a href="../api_java/xml_declare.html">XmlContainer.declareIndex</a>,
-<a href="../api_java/xml_del.html">XmlContainer.deleteDocument</a>,
-<a href="../api_java/xml_get.html">XmlContainer.getDocument</a>,
-<a href="../api_java/xml_getname.html">XmlContainer.getName</a>,
-<a href="../api_java/xml_open.html">XmlContainer.open</a>,
-<a href="../api_java/xml_put.html">XmlContainer.putDocument</a>
-and
-<a href="../api_java/xml_xpath.html">XmlContainer.queryWithXPath</a>.
-<p>
-<a href="../api_java/xmldoc_getattr.html">XmlDocument.getAttributeValue</a>,
-<a href="../api_java/xmldoc_getcont.html">XmlDocument.getContent</a>,
-<a href="../api_java/xmldoc_getid.html">XmlDocument.getID</a>,
-<a href="../api_java/xmldoc_getname.html">XmlDocument.getName</a>,
-<a href="../api_java/xmldoc_gettype.html">XmlDocument.getType</a>,
-<a href="../api_java/xmldoc_setcont.html">XmlDocument.setContent</a>,
-<a href="../api_java/xmldoc_setname.html">XmlDocument.setName</a>,
-and
-<a href="../api_java/xmldoc_settype.html">XmlDocument.setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_java/xmldoc_getcontlen.html b/db/docs/api_java/xmldoc_getcontlen.html
deleted file mode 100644
index 745e7f5a8..000000000
--- a/db/docs/api_java/xmldoc_getcontlen.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<!--Id: xmldoc_getcontlen.so,v 10.4 2002/06/24 14:49:39 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlDocument.getContentLength</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlDocument.getContentLength</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-import com.sleepycat.dbxml.*;
-<p>
-public size_t getContentLength()
- throws XmlException;
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlDocument.getContentLength method returns the length of the document's
-content, in bytes.
-<p>The XmlDocument.getContentLength method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>The XmlDocument.getContentLength method may fail and throw an exception encapsulating 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 document has no content stored in it.
-</dl>
-<p>The XmlDocument.getContentLength method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XmlDocument.getContentLength 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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_java/xmldocument_class.html">XmlDocument</a>, <a href="../api_java/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_java/xml_close.html">XmlContainer.close</a>,
-<a href="../api_java/xml_declare.html">XmlContainer.declareIndex</a>,
-<a href="../api_java/xml_del.html">XmlContainer.deleteDocument</a>,
-<a href="../api_java/xml_get.html">XmlContainer.getDocument</a>,
-<a href="../api_java/xml_getname.html">XmlContainer.getName</a>,
-<a href="../api_java/xml_open.html">XmlContainer.open</a>,
-<a href="../api_java/xml_put.html">XmlContainer.putDocument</a>
-and
-<a href="../api_java/xml_xpath.html">XmlContainer.queryWithXPath</a>.
-<p>
-<a href="../api_java/xmldoc_getattr.html">XmlDocument.getAttributeValue</a>,
-<a href="../api_java/xmldoc_getcont.html">XmlDocument.getContent</a>,
-<a href="../api_java/xmldoc_getid.html">XmlDocument.getID</a>,
-<a href="../api_java/xmldoc_getname.html">XmlDocument.getName</a>,
-<a href="../api_java/xmldoc_gettype.html">XmlDocument.getType</a>,
-<a href="../api_java/xmldoc_setcont.html">XmlDocument.setContent</a>,
-<a href="../api_java/xmldoc_setname.html">XmlDocument.setName</a>,
-and
-<a href="../api_java/xmldoc_settype.html">XmlDocument.setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_java/xmldoc_getdom.html b/db/docs/api_java/xmldoc_getdom.html
deleted file mode 100644
index 98483a903..000000000
--- a/db/docs/api_java/xmldoc_getdom.html
+++ /dev/null
@@ -1,78 +0,0 @@
-<!--Id: xmldoc_getdom.so,v 10.6 2002/06/24 14:49:39 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlDocument.getDOM</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlDocument.getDOM</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-import com.sleepycat.dbxml.*;
-<p>
-public void * getDOM(bool withAnnotationAttributes)
- throws XmlException;
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlDocument.getDOM method returns the document as a
-W3C Level 3
-Document Object Model (DOM).
-<p>The <b>flags</b> value must be set to 0 or
-the following value:
-<p><dl compact>
-<p><dt><a name="Db.DB_WITHATTRIBUTES">Db.DB_WITHATTRIBUTES</a><dd>The document annotation attributes are added as attributes of the
-document's root element.
-</dl>
-<p>The XmlDocument.getDOM method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>The XmlDocument.getDOM method may fail and throw an exception encapsulating 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 document has no content stored in it.
-</dl>
-<p>The XmlDocument.getDOM method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XmlDocument.getDOM 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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_java/xmldocument_class.html">XmlDocument</a>, <a href="../api_java/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_java/xml_close.html">XmlContainer.close</a>,
-<a href="../api_java/xml_declare.html">XmlContainer.declareIndex</a>,
-<a href="../api_java/xml_del.html">XmlContainer.deleteDocument</a>,
-<a href="../api_java/xml_get.html">XmlContainer.getDocument</a>,
-<a href="../api_java/xml_getname.html">XmlContainer.getName</a>,
-<a href="../api_java/xml_open.html">XmlContainer.open</a>,
-<a href="../api_java/xml_put.html">XmlContainer.putDocument</a>
-and
-<a href="../api_java/xml_xpath.html">XmlContainer.queryWithXPath</a>.
-<p>
-<a href="../api_java/xmldoc_getattr.html">XmlDocument.getAttributeValue</a>,
-<a href="../api_java/xmldoc_getcont.html">XmlDocument.getContent</a>,
-<a href="../api_java/xmldoc_getid.html">XmlDocument.getID</a>,
-<a href="../api_java/xmldoc_getname.html">XmlDocument.getName</a>,
-<a href="../api_java/xmldoc_gettype.html">XmlDocument.getType</a>,
-<a href="../api_java/xmldoc_setcont.html">XmlDocument.setContent</a>,
-<a href="../api_java/xmldoc_setname.html">XmlDocument.setName</a>,
-and
-<a href="../api_java/xmldoc_settype.html">XmlDocument.setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_java/xmldoc_getenc.html b/db/docs/api_java/xmldoc_getenc.html
deleted file mode 100644
index 430bbb4b5..000000000
--- a/db/docs/api_java/xmldoc_getenc.html
+++ /dev/null
@@ -1,86 +0,0 @@
-<!--Id: xmldoc_getenc.so,v 10.6 2002/06/24 14:49:39 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlDocument.getEncoding</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlDocument.getEncoding</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-import com.sleepycat.dbxml.*;
-<p>
-public int getEncoding()
- throws XmlException;
-<p>
-public String getEncodingName()
- throws XmlException;
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlDocument.getEncoding method returns the document encoding as one of the
-following types:
-<p><ul type=disc>
-<li><a name="Db.XmlDocument::EBCDIC">Db.XmlDocument::EBCDIC</a>
-<li><a name="Db.XmlDocument::NONE">Db.XmlDocument::NONE</a>
-<li><a name="Db.XmlDocument::UCS4">Db.XmlDocument::UCS4</a>
-<li><a name="Db.XmlDocument::UCS4_ASCII">Db.XmlDocument::UCS4_ASCII</a>
-<li><a name="Db.XmlDocument::UTF16">Db.XmlDocument::UTF16</a>
-<li><a name="Db.XmlDocument::UTF8">Db.XmlDocument::UTF8</a>
-</ul>
-<p>The <a href="../api_java/xmldoc_getenc.html">XmlDocument.getEncodingName</a> method returns the document encoding as a string.
-<p>The XmlDocument.getEncoding method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>The XmlDocument.getEncoding method may fail and throw an exception encapsulating 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 document has no content stored in it.
-</dl>
-<p>If the requested item could not be returned due to insufficient memory,
-the XmlDocument.getEncoding method will fail and
-throw a <a href="../api_java/mem_class.html">DbMemoryException</a> exception.
-<p>The XmlDocument.getEncoding method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XmlDocument.getEncoding 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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_java/xmldocument_class.html">XmlDocument</a>, <a href="../api_java/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_java/xml_close.html">XmlContainer.close</a>,
-<a href="../api_java/xml_declare.html">XmlContainer.declareIndex</a>,
-<a href="../api_java/xml_del.html">XmlContainer.deleteDocument</a>,
-<a href="../api_java/xml_get.html">XmlContainer.getDocument</a>,
-<a href="../api_java/xml_getname.html">XmlContainer.getName</a>,
-<a href="../api_java/xml_open.html">XmlContainer.open</a>,
-<a href="../api_java/xml_put.html">XmlContainer.putDocument</a>
-and
-<a href="../api_java/xml_xpath.html">XmlContainer.queryWithXPath</a>.
-<p>
-<a href="../api_java/xmldoc_getattr.html">XmlDocument.getAttributeValue</a>,
-<a href="../api_java/xmldoc_getcont.html">XmlDocument.getContent</a>,
-<a href="../api_java/xmldoc_getid.html">XmlDocument.getID</a>,
-<a href="../api_java/xmldoc_getname.html">XmlDocument.getName</a>,
-<a href="../api_java/xmldoc_gettype.html">XmlDocument.getType</a>,
-<a href="../api_java/xmldoc_setcont.html">XmlDocument.setContent</a>,
-<a href="../api_java/xmldoc_setname.html">XmlDocument.setName</a>,
-and
-<a href="../api_java/xmldoc_settype.html">XmlDocument.setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_java/xmldoc_getid.html b/db/docs/api_java/xmldoc_getid.html
deleted file mode 100644
index f2c7b811e..000000000
--- a/db/docs/api_java/xmldoc_getid.html
+++ /dev/null
@@ -1,73 +0,0 @@
-<!--Id: xmldoc_getid.so,v 10.5 2002/06/24 14:49:39 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlDocument.getID</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlDocument.getID</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-import com.sleepycat.dbxml.*;
-<p>
-public u_int32_t getID()
- throws XmlException;
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlDocument.getID method returns the document ID. The document ID will
-be zero if the document has not yet been assigned any content, or the
-document has not yet been added to a container.
-<p>The <b>flags</b> parameter is currently unused, and must be set to 0.
-<p>The XmlDocument.getID method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>The XmlDocument.getID method may fail and throw an exception encapsulating 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 document does not have an ID.
-</dl>
-<p>The XmlDocument.getID method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XmlDocument.getID 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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_java/xmldocument_class.html">XmlDocument</a>, <a href="../api_java/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_java/xml_close.html">XmlContainer.close</a>,
-<a href="../api_java/xml_declare.html">XmlContainer.declareIndex</a>,
-<a href="../api_java/xml_del.html">XmlContainer.deleteDocument</a>,
-<a href="../api_java/xml_get.html">XmlContainer.getDocument</a>,
-<a href="../api_java/xml_getname.html">XmlContainer.getName</a>,
-<a href="../api_java/xml_open.html">XmlContainer.open</a>,
-<a href="../api_java/xml_put.html">XmlContainer.putDocument</a>
-and
-<a href="../api_java/xml_xpath.html">XmlContainer.queryWithXPath</a>.
-<p>
-<a href="../api_java/xmldoc_getattr.html">XmlDocument.getAttributeValue</a>,
-<a href="../api_java/xmldoc_getcont.html">XmlDocument.getContent</a>,
-<a href="../api_java/xmldoc_getid.html">XmlDocument.getID</a>,
-<a href="../api_java/xmldoc_getname.html">XmlDocument.getName</a>,
-<a href="../api_java/xmldoc_gettype.html">XmlDocument.getType</a>,
-<a href="../api_java/xmldoc_setcont.html">XmlDocument.setContent</a>,
-<a href="../api_java/xmldoc_setname.html">XmlDocument.setName</a>,
-and
-<a href="../api_java/xmldoc_settype.html">XmlDocument.setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_java/xmldoc_getname.html b/db/docs/api_java/xmldoc_getname.html
deleted file mode 100644
index 7f10c7ec7..000000000
--- a/db/docs/api_java/xmldoc_getname.html
+++ /dev/null
@@ -1,73 +0,0 @@
-<!--Id: xmldoc_getname.so,v 10.5 2002/06/24 14:49:39 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlDocument.getName</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlDocument.getName</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-import com.sleepycat.dbxml.*;
-<p>
-public String getName()
- throws XmlException;
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlDocument.getName method returns the document name.
-<p>The XmlDocument.getName method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>The XmlDocument.getName method may fail and throw an exception encapsulating 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 document does not have a name.
-</dl>
-<p>If the requested item could not be returned due to insufficient memory,
-the XmlDocument.getName method will fail and
-throw a <a href="../api_java/mem_class.html">DbMemoryException</a> exception.
-<p>The XmlDocument.getName method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XmlDocument.getName 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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_java/xmldocument_class.html">XmlDocument</a>, <a href="../api_java/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_java/xml_close.html">XmlContainer.close</a>,
-<a href="../api_java/xml_declare.html">XmlContainer.declareIndex</a>,
-<a href="../api_java/xml_del.html">XmlContainer.deleteDocument</a>,
-<a href="../api_java/xml_get.html">XmlContainer.getDocument</a>,
-<a href="../api_java/xml_getname.html">XmlContainer.getName</a>,
-<a href="../api_java/xml_open.html">XmlContainer.open</a>,
-<a href="../api_java/xml_put.html">XmlContainer.putDocument</a>
-and
-<a href="../api_java/xml_xpath.html">XmlContainer.queryWithXPath</a>.
-<p>
-<a href="../api_java/xmldoc_getattr.html">XmlDocument.getAttributeValue</a>,
-<a href="../api_java/xmldoc_getcont.html">XmlDocument.getContent</a>,
-<a href="../api_java/xmldoc_getid.html">XmlDocument.getID</a>,
-<a href="../api_java/xmldoc_getname.html">XmlDocument.getName</a>,
-<a href="../api_java/xmldoc_gettype.html">XmlDocument.getType</a>,
-<a href="../api_java/xmldoc_setcont.html">XmlDocument.setContent</a>,
-<a href="../api_java/xmldoc_setname.html">XmlDocument.setName</a>,
-and
-<a href="../api_java/xmldoc_settype.html">XmlDocument.setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_java/xmldoc_gettype.html b/db/docs/api_java/xmldoc_gettype.html
deleted file mode 100644
index e5e680c87..000000000
--- a/db/docs/api_java/xmldoc_gettype.html
+++ /dev/null
@@ -1,72 +0,0 @@
-<!--Id: xmldoc_gettype.so,v 10.4 2002/06/24 14:49:40 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlDocument.getType</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlDocument.getType</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-import com.sleepycat.dbxml.*;
-<p>
-public Type getType()
- throws XmlException;
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlDocument.getType method returns the document type, either
-<a href="../api_java/xmldoc_settype.html#XmlDocument::BYTES">Db.XmlDocument::BYTES</a>, <a href="../api_java/xmldoc_gettype.html#XmlDocument::UNKNOWN">Db.XmlDocument::UNKNOWN</a>, or
-<a href="../api_java/xmldoc_settype.html#XmlDocument::XML">Db.XmlDocument::XML</a>.
-<p>The XmlDocument.getType method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>The XmlDocument.getType method may fail and throw an exception encapsulating 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 document does not have a type.
-</dl>
-<p>The XmlDocument.getType method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XmlDocument.getType 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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_java/xmldocument_class.html">XmlDocument</a>, <a href="../api_java/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_java/xml_close.html">XmlContainer.close</a>,
-<a href="../api_java/xml_declare.html">XmlContainer.declareIndex</a>,
-<a href="../api_java/xml_del.html">XmlContainer.deleteDocument</a>,
-<a href="../api_java/xml_get.html">XmlContainer.getDocument</a>,
-<a href="../api_java/xml_getname.html">XmlContainer.getName</a>,
-<a href="../api_java/xml_open.html">XmlContainer.open</a>,
-<a href="../api_java/xml_put.html">XmlContainer.putDocument</a>
-and
-<a href="../api_java/xml_xpath.html">XmlContainer.queryWithXPath</a>.
-<p>
-<a href="../api_java/xmldoc_getattr.html">XmlDocument.getAttributeValue</a>,
-<a href="../api_java/xmldoc_getcont.html">XmlDocument.getContent</a>,
-<a href="../api_java/xmldoc_getid.html">XmlDocument.getID</a>,
-<a href="../api_java/xmldoc_getname.html">XmlDocument.getName</a>,
-<a href="../api_java/xmldoc_gettype.html">XmlDocument.getType</a>,
-<a href="../api_java/xmldoc_setcont.html">XmlDocument.setContent</a>,
-<a href="../api_java/xmldoc_setname.html">XmlDocument.setName</a>,
-and
-<a href="../api_java/xmldoc_settype.html">XmlDocument.setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_java/xmldoc_setattr.html b/db/docs/api_java/xmldoc_setattr.html
deleted file mode 100644
index f9de10c8e..000000000
--- a/db/docs/api_java/xmldoc_setattr.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!--Id: xmldoc_setattr.so,v 10.4 2002/06/24 14:49:40 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlDocument.setAttributeValue</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlDocument.setAttributeValue</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-import com.sleepycat.dbxml.*;
-<p>
-public void setAttributeValue(String attr, String value, int flags)
- throws XmlException;
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlDocument.setAttributeValue method sets the value of the specified <b>attr</b>
-annotation attribute. The only values supported are Strings.
-<p>The <b>flags</b> parameter is currently unused, and must be set to 0.
-<p>The XmlDocument.setAttributeValue method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>The XmlDocument.setAttributeValue method may fail and throw an exception encapsulating 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>If the requested item could not be returned due to insufficient memory,
-the XmlDocument.setAttributeValue method will fail and
-throw a <a href="../api_java/mem_class.html">DbMemoryException</a> exception.
-<p>The XmlDocument.setAttributeValue method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XmlDocument.setAttributeValue 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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_java/xmldocument_class.html">XmlDocument</a>, <a href="../api_java/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_java/xml_close.html">XmlContainer.close</a>,
-<a href="../api_java/xml_declare.html">XmlContainer.declareIndex</a>,
-<a href="../api_java/xml_del.html">XmlContainer.deleteDocument</a>,
-<a href="../api_java/xml_get.html">XmlContainer.getDocument</a>,
-<a href="../api_java/xml_getname.html">XmlContainer.getName</a>,
-<a href="../api_java/xml_open.html">XmlContainer.open</a>,
-<a href="../api_java/xml_put.html">XmlContainer.putDocument</a>
-and
-<a href="../api_java/xml_xpath.html">XmlContainer.queryWithXPath</a>.
-<p>
-<a href="../api_java/xmldoc_getattr.html">XmlDocument.getAttributeValue</a>,
-<a href="../api_java/xmldoc_getcont.html">XmlDocument.getContent</a>,
-<a href="../api_java/xmldoc_getid.html">XmlDocument.getID</a>,
-<a href="../api_java/xmldoc_getname.html">XmlDocument.getName</a>,
-<a href="../api_java/xmldoc_gettype.html">XmlDocument.getType</a>,
-<a href="../api_java/xmldoc_setcont.html">XmlDocument.setContent</a>,
-<a href="../api_java/xmldoc_setname.html">XmlDocument.setName</a>,
-and
-<a href="../api_java/xmldoc_settype.html">XmlDocument.setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_java/xmldoc_setcont.html b/db/docs/api_java/xmldoc_setcont.html
deleted file mode 100644
index 7927d3b06..000000000
--- a/db/docs/api_java/xmldoc_setcont.html
+++ /dev/null
@@ -1,70 +0,0 @@
-<!--Id: xmldoc_setcont.so,v 10.4 2002/06/24 14:49:40 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlDocument.setContent</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlDocument.setContent</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-import com.sleepycat.dbxml.*;
-<p>
-public void setContent(String content, int flags)
- throws XmlException;
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlDocument.setContent method sets the document content.
-<p>The <b>flags</b> parameter is currently unused, and must be set to 0.
-<p>The XmlDocument.setContent method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>The XmlDocument.setContent method may fail and throw an exception encapsulating 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 XmlDocument.setContent method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XmlDocument.setContent 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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_java/xmldocument_class.html">XmlDocument</a>, <a href="../api_java/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_java/xml_close.html">XmlContainer.close</a>,
-<a href="../api_java/xml_declare.html">XmlContainer.declareIndex</a>,
-<a href="../api_java/xml_del.html">XmlContainer.deleteDocument</a>,
-<a href="../api_java/xml_get.html">XmlContainer.getDocument</a>,
-<a href="../api_java/xml_getname.html">XmlContainer.getName</a>,
-<a href="../api_java/xml_open.html">XmlContainer.open</a>,
-<a href="../api_java/xml_put.html">XmlContainer.putDocument</a>
-and
-<a href="../api_java/xml_xpath.html">XmlContainer.queryWithXPath</a>.
-<p>
-<a href="../api_java/xmldoc_getattr.html">XmlDocument.getAttributeValue</a>,
-<a href="../api_java/xmldoc_getcont.html">XmlDocument.getContent</a>,
-<a href="../api_java/xmldoc_getid.html">XmlDocument.getID</a>,
-<a href="../api_java/xmldoc_getname.html">XmlDocument.getName</a>,
-<a href="../api_java/xmldoc_gettype.html">XmlDocument.getType</a>,
-<a href="../api_java/xmldoc_setcont.html">XmlDocument.setContent</a>,
-<a href="../api_java/xmldoc_setname.html">XmlDocument.setName</a>,
-and
-<a href="../api_java/xmldoc_settype.html">XmlDocument.setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_java/xmldoc_setname.html b/db/docs/api_java/xmldoc_setname.html
deleted file mode 100644
index 16f0d3109..000000000
--- a/db/docs/api_java/xmldoc_setname.html
+++ /dev/null
@@ -1,69 +0,0 @@
-<!--Id: xmldoc_setname.so,v 10.4 2002/06/24 14:49:40 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlDocument.setName</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlDocument.setName</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-import com.sleepycat.dbxml.*;
-<p>
-public void setName(String name)
- throws XmlException;
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlDocument.setName method sets the name of the document.
-<p>The XmlDocument.setName method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>The XmlDocument.setName method may fail and throw an exception encapsulating a non-zero error for the following conditions:
-<p>If the requested item could not be returned due to insufficient memory,
-the XmlDocument.setName method will fail and
-throw a <a href="../api_java/mem_class.html">DbMemoryException</a> exception.
-<p>The XmlDocument.setName method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XmlDocument.setName 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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_java/xmldocument_class.html">XmlDocument</a>, <a href="../api_java/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_java/xml_close.html">XmlContainer.close</a>,
-<a href="../api_java/xml_declare.html">XmlContainer.declareIndex</a>,
-<a href="../api_java/xml_del.html">XmlContainer.deleteDocument</a>,
-<a href="../api_java/xml_get.html">XmlContainer.getDocument</a>,
-<a href="../api_java/xml_getname.html">XmlContainer.getName</a>,
-<a href="../api_java/xml_open.html">XmlContainer.open</a>,
-<a href="../api_java/xml_put.html">XmlContainer.putDocument</a>
-and
-<a href="../api_java/xml_xpath.html">XmlContainer.queryWithXPath</a>.
-<p>
-<a href="../api_java/xmldoc_getattr.html">XmlDocument.getAttributeValue</a>,
-<a href="../api_java/xmldoc_getcont.html">XmlDocument.getContent</a>,
-<a href="../api_java/xmldoc_getid.html">XmlDocument.getID</a>,
-<a href="../api_java/xmldoc_getname.html">XmlDocument.getName</a>,
-<a href="../api_java/xmldoc_gettype.html">XmlDocument.getType</a>,
-<a href="../api_java/xmldoc_setcont.html">XmlDocument.setContent</a>,
-<a href="../api_java/xmldoc_setname.html">XmlDocument.setName</a>,
-and
-<a href="../api_java/xmldoc_settype.html">XmlDocument.setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_java/xmldoc_settype.html b/db/docs/api_java/xmldoc_settype.html
deleted file mode 100644
index 9853c12f2..000000000
--- a/db/docs/api_java/xmldoc_settype.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<!--Id: xmldoc_settype.so,v 10.4 2002/06/24 14:49:40 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlDocument.setType</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlDocument.setType</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-import com.sleepycat.dbxml.*;
-<p>
-public void setType(Type type)
- throws XmlException;
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlDocument.setType method sets the document type. The document type
-must be set to one of the following values:
-<p><dl compact>
-<p><dt>Db.XmlDocument::BYTES<dd>Untyped input, which cannot be indexed.
-<p><dt>Db.XmlDocument::XML<dd>XML input.
-</dl>
-<p>The XmlDocument.setType method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>The XmlDocument.setType method may fail and throw an exception encapsulating a non-zero error for the following conditions:
-<p>The XmlDocument.setType method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XmlDocument.setType 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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_java/xmldocument_class.html">XmlDocument</a>, <a href="../api_java/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_java/xml_close.html">XmlContainer.close</a>,
-<a href="../api_java/xml_declare.html">XmlContainer.declareIndex</a>,
-<a href="../api_java/xml_del.html">XmlContainer.deleteDocument</a>,
-<a href="../api_java/xml_get.html">XmlContainer.getDocument</a>,
-<a href="../api_java/xml_getname.html">XmlContainer.getName</a>,
-<a href="../api_java/xml_open.html">XmlContainer.open</a>,
-<a href="../api_java/xml_put.html">XmlContainer.putDocument</a>
-and
-<a href="../api_java/xml_xpath.html">XmlContainer.queryWithXPath</a>.
-<p>
-<a href="../api_java/xmldoc_getattr.html">XmlDocument.getAttributeValue</a>,
-<a href="../api_java/xmldoc_getcont.html">XmlDocument.getContent</a>,
-<a href="../api_java/xmldoc_getid.html">XmlDocument.getID</a>,
-<a href="../api_java/xmldoc_getname.html">XmlDocument.getName</a>,
-<a href="../api_java/xmldoc_gettype.html">XmlDocument.getType</a>,
-<a href="../api_java/xmldoc_setcont.html">XmlDocument.setContent</a>,
-<a href="../api_java/xmldoc_setname.html">XmlDocument.setName</a>,
-and
-<a href="../api_java/xmldoc_settype.html">XmlDocument.setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_java/xmldocument_class.html b/db/docs/api_java/xmldocument_class.html
deleted file mode 100644
index c7a98942d..000000000
--- a/db/docs/api_java/xmldocument_class.html
+++ /dev/null
@@ -1,73 +0,0 @@
-<!--Id: xmldocument_class.so,v 1.9 2002/07/29 04:20:27 mjc Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlDocument</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlDocument</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-import com.sleepycat.dbxml.*;
-<p>
-public class XmlDocument extends Object
-{
- XmlDocument()
- throws DbException;
- ...
-}
-</pre></h3>
-<h1>Description</h1>
-<p>An XmlDocument is the unit of storage within a <a href="../api_java/xmlcontainer_class.html">XmlContainer</a>.
-<p>A XmlDocument contains a stream of bytes that may be of type
-XML or BYTES. The <a href="../api_java/xmlcontainer_class.html">XmlContainer</a> will only index the content of
-XmlDocuments that contain XML. The BYTES type is supported to
-allow the storage of arbitrary content along with XML content.
-<p>All documents objects stored within a container are assigned a document
-ID, at 32-bit unsigned integral value. This ID uniquely identifies a
-document within a container. The ID is assigned by the container when
-the document is first added to the container.
-<p>The XmlDocument class supports annotation attributes. The user
-may annotate their documents with meta-information to be stored with
-their document, but not within their document.
-<h1>Class</h1>
-<a href="../api_java/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_java/xmldocument_class.html">XmlDocument</a>, <a href="../api_java/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_java/xml_close.html">XmlContainer.close</a>,
-<a href="../api_java/xml_declare.html">XmlContainer.declareIndex</a>,
-<a href="../api_java/xml_del.html">XmlContainer.deleteDocument</a>,
-<a href="../api_java/xml_get.html">XmlContainer.getDocument</a>,
-<a href="../api_java/xml_getname.html">XmlContainer.getName</a>,
-<a href="../api_java/xml_open.html">XmlContainer.open</a>,
-<a href="../api_java/xml_put.html">XmlContainer.putDocument</a>
-and
-<a href="../api_java/xml_xpath.html">XmlContainer.queryWithXPath</a>.
-<p>
-<a href="../api_java/xmldoc_getattr.html">XmlDocument.getAttributeValue</a>,
-<a href="../api_java/xmldoc_getcont.html">XmlDocument.getContent</a>,
-<a href="../api_java/xmldoc_getid.html">XmlDocument.getID</a>,
-<a href="../api_java/xmldoc_getname.html">XmlDocument.getName</a>,
-<a href="../api_java/xmldoc_gettype.html">XmlDocument.getType</a>,
-<a href="../api_java/xmldoc_setcont.html">XmlDocument.setContent</a>,
-<a href="../api_java/xmldoc_setname.html">XmlDocument.setName</a>,
-and
-<a href="../api_java/xmldoc_settype.html">XmlDocument.setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_java/xmlq_clearname.html b/db/docs/api_java/xmlq_clearname.html
deleted file mode 100644
index 99c07abb1..000000000
--- a/db/docs/api_java/xmlq_clearname.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!--Id: xmlq_clearname.so,v 10.3 2002/06/24 14:49:40 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlQueryContext.clearNamespaces</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlQueryContext.clearNamespaces</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-import com.sleepycat.dbxml.*;
-<p>
-public void clearNamespaces()
- throws XmlException;
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlQueryContext.clearNamespaces method removes all current namespace prefix to URI
-mappings.
-<p>The XmlQueryContext.clearNamespaces method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>The XmlQueryContext.clearNamespaces method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XmlQueryContext.clearNamespaces 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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_java/xmldocument_class.html">XmlDocument</a>, <a href="../api_java/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_java/xml_close.html">XmlContainer.close</a>,
-<a href="../api_java/xml_declare.html">XmlContainer.declareIndex</a>,
-<a href="../api_java/xml_del.html">XmlContainer.deleteDocument</a>,
-<a href="../api_java/xml_get.html">XmlContainer.getDocument</a>,
-<a href="../api_java/xml_getname.html">XmlContainer.getName</a>,
-<a href="../api_java/xml_open.html">XmlContainer.open</a>,
-<a href="../api_java/xml_put.html">XmlContainer.putDocument</a>
-and
-<a href="../api_java/xml_xpath.html">XmlContainer.queryWithXPath</a>.
-<p>
-<a href="../api_java/xmldoc_getattr.html">XmlDocument.getAttributeValue</a>,
-<a href="../api_java/xmldoc_getcont.html">XmlDocument.getContent</a>,
-<a href="../api_java/xmldoc_getid.html">XmlDocument.getID</a>,
-<a href="../api_java/xmldoc_getname.html">XmlDocument.getName</a>,
-<a href="../api_java/xmldoc_gettype.html">XmlDocument.getType</a>,
-<a href="../api_java/xmldoc_setcont.html">XmlDocument.setContent</a>,
-<a href="../api_java/xmldoc_setname.html">XmlDocument.setName</a>,
-and
-<a href="../api_java/xmldoc_settype.html">XmlDocument.setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_java/xmlq_getname.html b/db/docs/api_java/xmlq_getname.html
deleted file mode 100644
index e0ecbce4b..000000000
--- a/db/docs/api_java/xmlq_getname.html
+++ /dev/null
@@ -1,75 +0,0 @@
-<!--Id: xmlq_getname.so,v 10.5 2002/07/01 16:46:15 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlQueryContext.getNamespace</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlQueryContext.getNamespace</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-import com.sleepycat.dbxml.*;
-<p>
-public String getNamespace(String prefix)
- throws XmlException;
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlQueryContext.getNamespace method returns the namespace prefix to URI mapping
-for <b>prefix</b>.
-<p>
-If no mapping is found, the XmlQueryContext.getNamespace method will return Db.DB_NOTFOUND.
-Otherwise, the XmlQueryContext.getNamespace method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>The XmlQueryContext.getNamespace method may fail and throw an exception encapsulating 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>If the requested item could not be returned due to insufficient memory,
-the XmlQueryContext.getNamespace method will fail and
-throw a <a href="../api_java/mem_class.html">DbMemoryException</a> exception.
-<p>The XmlQueryContext.getNamespace method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XmlQueryContext.getNamespace 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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_java/xmldocument_class.html">XmlDocument</a>, <a href="../api_java/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_java/xml_close.html">XmlContainer.close</a>,
-<a href="../api_java/xml_declare.html">XmlContainer.declareIndex</a>,
-<a href="../api_java/xml_del.html">XmlContainer.deleteDocument</a>,
-<a href="../api_java/xml_get.html">XmlContainer.getDocument</a>,
-<a href="../api_java/xml_getname.html">XmlContainer.getName</a>,
-<a href="../api_java/xml_open.html">XmlContainer.open</a>,
-<a href="../api_java/xml_put.html">XmlContainer.putDocument</a>
-and
-<a href="../api_java/xml_xpath.html">XmlContainer.queryWithXPath</a>.
-<p>
-<a href="../api_java/xmldoc_getattr.html">XmlDocument.getAttributeValue</a>,
-<a href="../api_java/xmldoc_getcont.html">XmlDocument.getContent</a>,
-<a href="../api_java/xmldoc_getid.html">XmlDocument.getID</a>,
-<a href="../api_java/xmldoc_getname.html">XmlDocument.getName</a>,
-<a href="../api_java/xmldoc_gettype.html">XmlDocument.getType</a>,
-<a href="../api_java/xmldoc_setcont.html">XmlDocument.setContent</a>,
-<a href="../api_java/xmldoc_setname.html">XmlDocument.setName</a>,
-and
-<a href="../api_java/xmldoc_settype.html">XmlDocument.setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_java/xmlq_getvar.html b/db/docs/api_java/xmlq_getvar.html
deleted file mode 100644
index 2fe1295bc..000000000
--- a/db/docs/api_java/xmlq_getvar.html
+++ /dev/null
@@ -1,72 +0,0 @@
-<!--Id: xmlq_getvar.so,v 10.5 2002/07/01 16:46:16 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlQueryContext.getVariableValue</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlQueryContext.getVariableValue</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-import com.sleepycat.dbxml.*;
-<p>
-public XmlValue getVariableValue(String name)
- throws XmlException;
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlQueryContext.getVariableValue method returns the value bound to the variable
-<b>name</b>.
-<p>
-If there is no value, the XmlQueryContext.getVariableValue method will return Db.DB_NOTFOUND.
-Otherwise, the XmlQueryContext.getVariableValue method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>The XmlQueryContext.getVariableValue method may fail and throw an exception encapsulating 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 XmlQueryContext.getVariableValue method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XmlQueryContext.getVariableValue 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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_java/xmldocument_class.html">XmlDocument</a>, <a href="../api_java/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_java/xml_close.html">XmlContainer.close</a>,
-<a href="../api_java/xml_declare.html">XmlContainer.declareIndex</a>,
-<a href="../api_java/xml_del.html">XmlContainer.deleteDocument</a>,
-<a href="../api_java/xml_get.html">XmlContainer.getDocument</a>,
-<a href="../api_java/xml_getname.html">XmlContainer.getName</a>,
-<a href="../api_java/xml_open.html">XmlContainer.open</a>,
-<a href="../api_java/xml_put.html">XmlContainer.putDocument</a>
-and
-<a href="../api_java/xml_xpath.html">XmlContainer.queryWithXPath</a>.
-<p>
-<a href="../api_java/xmldoc_getattr.html">XmlDocument.getAttributeValue</a>,
-<a href="../api_java/xmldoc_getcont.html">XmlDocument.getContent</a>,
-<a href="../api_java/xmldoc_getid.html">XmlDocument.getID</a>,
-<a href="../api_java/xmldoc_getname.html">XmlDocument.getName</a>,
-<a href="../api_java/xmldoc_gettype.html">XmlDocument.getType</a>,
-<a href="../api_java/xmldoc_setcont.html">XmlDocument.setContent</a>,
-<a href="../api_java/xmldoc_setname.html">XmlDocument.setName</a>,
-and
-<a href="../api_java/xmldoc_settype.html">XmlDocument.setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_java/xmlq_remname.html b/db/docs/api_java/xmlq_remname.html
deleted file mode 100644
index 1598bd9c0..000000000
--- a/db/docs/api_java/xmlq_remname.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!--Id: xmlq_remname.so,v 10.3 2002/06/24 14:49:41 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlQueryContext.removeNamespace</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlQueryContext.removeNamespace</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-import com.sleepycat.dbxml.*;
-<p>
-public void removeNamespace(String prefix)
- throws XmlException;
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlQueryContext.removeNamespace method removes the namespace prefix to URI mapping
-for <b>prefix</b>. A prefix with no mapping is ignored.
-<p>The XmlQueryContext.removeNamespace method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>The XmlQueryContext.removeNamespace method may fail and throw an exception encapsulating a non-zero error for the following conditions:
-<p>The XmlQueryContext.removeNamespace method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XmlQueryContext.removeNamespace 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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_java/xmldocument_class.html">XmlDocument</a>, <a href="../api_java/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_java/xml_close.html">XmlContainer.close</a>,
-<a href="../api_java/xml_declare.html">XmlContainer.declareIndex</a>,
-<a href="../api_java/xml_del.html">XmlContainer.deleteDocument</a>,
-<a href="../api_java/xml_get.html">XmlContainer.getDocument</a>,
-<a href="../api_java/xml_getname.html">XmlContainer.getName</a>,
-<a href="../api_java/xml_open.html">XmlContainer.open</a>,
-<a href="../api_java/xml_put.html">XmlContainer.putDocument</a>
-and
-<a href="../api_java/xml_xpath.html">XmlContainer.queryWithXPath</a>.
-<p>
-<a href="../api_java/xmldoc_getattr.html">XmlDocument.getAttributeValue</a>,
-<a href="../api_java/xmldoc_getcont.html">XmlDocument.getContent</a>,
-<a href="../api_java/xmldoc_getid.html">XmlDocument.getID</a>,
-<a href="../api_java/xmldoc_getname.html">XmlDocument.getName</a>,
-<a href="../api_java/xmldoc_gettype.html">XmlDocument.getType</a>,
-<a href="../api_java/xmldoc_setcont.html">XmlDocument.setContent</a>,
-<a href="../api_java/xmldoc_setname.html">XmlDocument.setName</a>,
-and
-<a href="../api_java/xmldoc_settype.html">XmlDocument.setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_java/xmlq_seteval.html b/db/docs/api_java/xmlq_seteval.html
deleted file mode 100644
index 235489fb5..000000000
--- a/db/docs/api_java/xmlq_seteval.html
+++ /dev/null
@@ -1,80 +0,0 @@
-<!--Id: xmlq_seteval.so,v 10.3 2002/06/24 14:49:41 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlQueryContext.setEvaluationType</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlQueryContext.setEvaluationType</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-import com.sleepycat.dbxml.*;
-<p>
-public void setEvaluationType(EvaluationType type)
- throws XmlException;
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlQueryContext.setEvaluationType method sets the query evaluation type. This option
-is provided as large result sets could consume large amounts of memory.
-By electing lazy evaluation the caller can read documents into memory
-as needed. The <b>type</b> must be set to one of the following
-values:
-<p><dl compact>
-<p><dt>Db.XmlQueryContext::Eager<dd>The whole query is executed and its restultant values derived and stored
-in-memory before the call to <a href="../api_java/xml_xpath.html">XmlContainer.queryWithXPath</a> returns.
-<p><dt>Db.XmlQueryContext::Lazy<dd>Perform as little up-front processing as possible, deferring all
-processing to results iteration. This means that as each call to
-<a href="../api_java/xmlr_next.html">XmlResults.next</a> is called the next resultant value is determined.
-</dl>
-<p>The XmlQueryContext.setEvaluationType method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>The XmlQueryContext.setEvaluationType method may fail and throw an exception encapsulating 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 XmlQueryContext.setEvaluationType method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XmlQueryContext.setEvaluationType 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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_java/xmldocument_class.html">XmlDocument</a>, <a href="../api_java/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_java/xml_close.html">XmlContainer.close</a>,
-<a href="../api_java/xml_declare.html">XmlContainer.declareIndex</a>,
-<a href="../api_java/xml_del.html">XmlContainer.deleteDocument</a>,
-<a href="../api_java/xml_get.html">XmlContainer.getDocument</a>,
-<a href="../api_java/xml_getname.html">XmlContainer.getName</a>,
-<a href="../api_java/xml_open.html">XmlContainer.open</a>,
-<a href="../api_java/xml_put.html">XmlContainer.putDocument</a>
-and
-<a href="../api_java/xml_xpath.html">XmlContainer.queryWithXPath</a>.
-<p>
-<a href="../api_java/xmldoc_getattr.html">XmlDocument.getAttributeValue</a>,
-<a href="../api_java/xmldoc_getcont.html">XmlDocument.getContent</a>,
-<a href="../api_java/xmldoc_getid.html">XmlDocument.getID</a>,
-<a href="../api_java/xmldoc_getname.html">XmlDocument.getName</a>,
-<a href="../api_java/xmldoc_gettype.html">XmlDocument.getType</a>,
-<a href="../api_java/xmldoc_setcont.html">XmlDocument.setContent</a>,
-<a href="../api_java/xmldoc_setname.html">XmlDocument.setName</a>,
-and
-<a href="../api_java/xmldoc_settype.html">XmlDocument.setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_java/xmlq_setname.html b/db/docs/api_java/xmlq_setname.html
deleted file mode 100644
index 8dbc42f89..000000000
--- a/db/docs/api_java/xmlq_setname.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!--Id: xmlq_setname.so,v 10.3 2002/06/24 14:49:41 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlQueryContext.setNamespace</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlQueryContext.setNamespace</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-import com.sleepycat.dbxml.*;
-<p>
-public void setNamespace(String prefix, String uri)
- throws XmlException;
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlQueryContext.setNamespace method defines the namespace prefix to URI mapping
-for <b>prefix</b> and <b>uri</b>.
-<p>The XmlQueryContext.setNamespace method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>The XmlQueryContext.setNamespace method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XmlQueryContext.setNamespace 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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_java/xmldocument_class.html">XmlDocument</a>, <a href="../api_java/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_java/xml_close.html">XmlContainer.close</a>,
-<a href="../api_java/xml_declare.html">XmlContainer.declareIndex</a>,
-<a href="../api_java/xml_del.html">XmlContainer.deleteDocument</a>,
-<a href="../api_java/xml_get.html">XmlContainer.getDocument</a>,
-<a href="../api_java/xml_getname.html">XmlContainer.getName</a>,
-<a href="../api_java/xml_open.html">XmlContainer.open</a>,
-<a href="../api_java/xml_put.html">XmlContainer.putDocument</a>
-and
-<a href="../api_java/xml_xpath.html">XmlContainer.queryWithXPath</a>.
-<p>
-<a href="../api_java/xmldoc_getattr.html">XmlDocument.getAttributeValue</a>,
-<a href="../api_java/xmldoc_getcont.html">XmlDocument.getContent</a>,
-<a href="../api_java/xmldoc_getid.html">XmlDocument.getID</a>,
-<a href="../api_java/xmldoc_getname.html">XmlDocument.getName</a>,
-<a href="../api_java/xmldoc_gettype.html">XmlDocument.getType</a>,
-<a href="../api_java/xmldoc_setcont.html">XmlDocument.setContent</a>,
-<a href="../api_java/xmldoc_setname.html">XmlDocument.setName</a>,
-and
-<a href="../api_java/xmldoc_settype.html">XmlDocument.setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_java/xmlq_setret.html b/db/docs/api_java/xmlq_setret.html
deleted file mode 100644
index 3cc7d8a73..000000000
--- a/db/docs/api_java/xmlq_setret.html
+++ /dev/null
@@ -1,86 +0,0 @@
-<!--Id: xmlq_setret.so,v 10.4 2002/06/24 14:49:41 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlQueryContext.setReturnType</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlQueryContext.setReturnType</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-import com.sleepycat.dbxml.*;
-<p>
-public void setReturnType(ReturnType type)
- throws XmlException;
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlQueryContext.setReturnType method sets the query return type. The query can
-return candidate documents, result documents, or result values. A
-candidate document is a document that may match the XPath expression,
-a result document is a document that does match the XPath expression,
-and a result value is the result of executing the XPath expression
-against the result document.
-<p>For some expressions it might be known that the candidate set is in fact
-equivalent to the result set. For these expressions there is no need to
-pass the candidate documents through a filter to eliminate false
-positives. The query processor can detect some expressions of this
-nature, but not all. The user application may know better, or may want
-to do its own false positive elimination.
-<p>The <b>type</b> must be set to one of the following values:
-<p><dl compact>
-<p><dt>Db.Db.XmlQueryContext::CandidateDocuments<dd>Return documents that may match the XPath expression.
-<p><dt>Db.Db.XmlQueryContext::ResultDocuments<dd>Return documents that match the XPath expression.
-<p><dt>Db.Db.XmlQueryContext::ResultValues<dd>Project the XPath expression over the matching document.
-</dl>
-<p>The XmlQueryContext.setReturnType method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>The XmlQueryContext.setReturnType method may fail and throw an exception encapsulating 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 XmlQueryContext.setReturnType method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XmlQueryContext.setReturnType 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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_java/xmldocument_class.html">XmlDocument</a>, <a href="../api_java/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_java/xml_close.html">XmlContainer.close</a>,
-<a href="../api_java/xml_declare.html">XmlContainer.declareIndex</a>,
-<a href="../api_java/xml_del.html">XmlContainer.deleteDocument</a>,
-<a href="../api_java/xml_get.html">XmlContainer.getDocument</a>,
-<a href="../api_java/xml_getname.html">XmlContainer.getName</a>,
-<a href="../api_java/xml_open.html">XmlContainer.open</a>,
-<a href="../api_java/xml_put.html">XmlContainer.putDocument</a>
-and
-<a href="../api_java/xml_xpath.html">XmlContainer.queryWithXPath</a>.
-<p>
-<a href="../api_java/xmldoc_getattr.html">XmlDocument.getAttributeValue</a>,
-<a href="../api_java/xmldoc_getcont.html">XmlDocument.getContent</a>,
-<a href="../api_java/xmldoc_getid.html">XmlDocument.getID</a>,
-<a href="../api_java/xmldoc_getname.html">XmlDocument.getName</a>,
-<a href="../api_java/xmldoc_gettype.html">XmlDocument.getType</a>,
-<a href="../api_java/xmldoc_setcont.html">XmlDocument.setContent</a>,
-<a href="../api_java/xmldoc_setname.html">XmlDocument.setName</a>,
-and
-<a href="../api_java/xmldoc_settype.html">XmlDocument.setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_java/xmlq_setvar.html b/db/docs/api_java/xmlq_setvar.html
deleted file mode 100644
index ee78ab414..000000000
--- a/db/docs/api_java/xmlq_setvar.html
+++ /dev/null
@@ -1,64 +0,0 @@
-<!--Id: xmlq_setvar.so,v 10.3 2002/06/24 14:49:41 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlQueryContext.setVariableValue</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlQueryContext.setVariableValue</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-import com.sleepycat.dbxml.*;
-<p>
-public void setVariableValue(String name, XmlValue value)
- throws XmlException;
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlQueryContext.setVariableValue method binds the variable <b>name</b> to the value
-<b>value</b>.
-<h1>Errors</h1>
-<p>The XmlQueryContext.setVariableValue method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XmlQueryContext.setVariableValue 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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_java/xmldocument_class.html">XmlDocument</a>, <a href="../api_java/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_java/xml_close.html">XmlContainer.close</a>,
-<a href="../api_java/xml_declare.html">XmlContainer.declareIndex</a>,
-<a href="../api_java/xml_del.html">XmlContainer.deleteDocument</a>,
-<a href="../api_java/xml_get.html">XmlContainer.getDocument</a>,
-<a href="../api_java/xml_getname.html">XmlContainer.getName</a>,
-<a href="../api_java/xml_open.html">XmlContainer.open</a>,
-<a href="../api_java/xml_put.html">XmlContainer.putDocument</a>
-and
-<a href="../api_java/xml_xpath.html">XmlContainer.queryWithXPath</a>.
-<p>
-<a href="../api_java/xmldoc_getattr.html">XmlDocument.getAttributeValue</a>,
-<a href="../api_java/xmldoc_getcont.html">XmlDocument.getContent</a>,
-<a href="../api_java/xmldoc_getid.html">XmlDocument.getID</a>,
-<a href="../api_java/xmldoc_getname.html">XmlDocument.getName</a>,
-<a href="../api_java/xmldoc_gettype.html">XmlDocument.getType</a>,
-<a href="../api_java/xmldoc_setcont.html">XmlDocument.setContent</a>,
-<a href="../api_java/xmldoc_setname.html">XmlDocument.setName</a>,
-and
-<a href="../api_java/xmldoc_settype.html">XmlDocument.setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_java/xmlquery_class.html b/db/docs/api_java/xmlquery_class.html
deleted file mode 100644
index c5c57e60e..000000000
--- a/db/docs/api_java/xmlquery_class.html
+++ /dev/null
@@ -1,72 +0,0 @@
-<!--Id: xmlquery_class.so,v 1.9 2002/07/29 04:20:27 mjc Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlQueryContext</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlQueryContext</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-import com.sleepycat.dbxml.*;
-<p>
-public class XmlQueryContext extends Object
-{
- XmlQueryContext(int flags)
- throws DbException;
- ...
-}
-</pre></h3>
-<h1>Description</h1>
-<p>An XmlQueryContext is the context within which a query is
-performed against an <a href="../api_java/xmlcontainer_class.html">XmlContainer</a>. This context includes a
-namespace mapping, variable bindings, and flags that determine how the
-query result set should be determined and returned to the caller.
-<p>The XPath syntax permits expressions to refer to namespace prefixes,
-but not to define them. The XmlQueryContext class provides
-namespace management methods so the caller may manage the namespace
-prefix to URI mapping. The XPath syntax also permits expressions to
-refer to variables, but not to define them. The XmlQueryContext class
-provides methods so the caller may manage the variable to value
-bindings.
-<h1>Class</h1>
-<a href="../api_java/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_java/xmldocument_class.html">XmlDocument</a>, <a href="../api_java/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_java/xml_close.html">XmlContainer.close</a>,
-<a href="../api_java/xml_declare.html">XmlContainer.declareIndex</a>,
-<a href="../api_java/xml_del.html">XmlContainer.deleteDocument</a>,
-<a href="../api_java/xml_get.html">XmlContainer.getDocument</a>,
-<a href="../api_java/xml_getname.html">XmlContainer.getName</a>,
-<a href="../api_java/xml_open.html">XmlContainer.open</a>,
-<a href="../api_java/xml_put.html">XmlContainer.putDocument</a>
-and
-<a href="../api_java/xml_xpath.html">XmlContainer.queryWithXPath</a>.
-<p>
-<a href="../api_java/xmldoc_getattr.html">XmlDocument.getAttributeValue</a>,
-<a href="../api_java/xmldoc_getcont.html">XmlDocument.getContent</a>,
-<a href="../api_java/xmldoc_getid.html">XmlDocument.getID</a>,
-<a href="../api_java/xmldoc_getname.html">XmlDocument.getName</a>,
-<a href="../api_java/xmldoc_gettype.html">XmlDocument.getType</a>,
-<a href="../api_java/xmldoc_setcont.html">XmlDocument.setContent</a>,
-<a href="../api_java/xmldoc_setname.html">XmlDocument.setName</a>,
-and
-<a href="../api_java/xmldoc_settype.html">XmlDocument.setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_java/xmlr_next.html b/db/docs/api_java/xmlr_next.html
deleted file mode 100644
index 6e809759d..000000000
--- a/db/docs/api_java/xmlr_next.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<!--Id: xmlr_next.so,v 10.3 2002/06/24 14:49:41 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlResults.next</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlResults.next</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-import com.sleepycat.dbxml.*;
-<p>
-public void next(DbTxn txnid, XmlValue value)
- throws XmlException;
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlResults.next method returns the next value in the results into the
-memory referenced by <b>value</b>. When no more values remain in the
-result set, XmlResults.next will return a value with an empty pointer,
-so that UNREF==xmlv_get will return 0.
-<p>The XmlResults.next method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>If the requested item could not be returned due to insufficient memory,
-the XmlResults.next method will fail and
-throw a <a href="../api_java/mem_class.html">DbMemoryException</a> exception.
-<p>The XmlResults.next method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XmlResults.next 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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_java/xmldocument_class.html">XmlDocument</a>, <a href="../api_java/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_java/xml_close.html">XmlContainer.close</a>,
-<a href="../api_java/xml_declare.html">XmlContainer.declareIndex</a>,
-<a href="../api_java/xml_del.html">XmlContainer.deleteDocument</a>,
-<a href="../api_java/xml_get.html">XmlContainer.getDocument</a>,
-<a href="../api_java/xml_getname.html">XmlContainer.getName</a>,
-<a href="../api_java/xml_open.html">XmlContainer.open</a>,
-<a href="../api_java/xml_put.html">XmlContainer.putDocument</a>
-and
-<a href="../api_java/xml_xpath.html">XmlContainer.queryWithXPath</a>.
-<p>
-<a href="../api_java/xmldoc_getattr.html">XmlDocument.getAttributeValue</a>,
-<a href="../api_java/xmldoc_getcont.html">XmlDocument.getContent</a>,
-<a href="../api_java/xmldoc_getid.html">XmlDocument.getID</a>,
-<a href="../api_java/xmldoc_getname.html">XmlDocument.getName</a>,
-<a href="../api_java/xmldoc_gettype.html">XmlDocument.getType</a>,
-<a href="../api_java/xmldoc_setcont.html">XmlDocument.setContent</a>,
-<a href="../api_java/xmldoc_setname.html">XmlDocument.setName</a>,
-and
-<a href="../api_java/xmldoc_settype.html">XmlDocument.setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_java/xmlr_reset.html b/db/docs/api_java/xmlr_reset.html
deleted file mode 100644
index 379b73695..000000000
--- a/db/docs/api_java/xmlr_reset.html
+++ /dev/null
@@ -1,72 +0,0 @@
-<!--Id: xmlr_reset.so,v 10.2 2002/06/24 14:49:42 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlResults.reset</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlResults.reset</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-import com.sleepycat.dbxml.*;
-<p>
-public void reset()
- throws XmlException;
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlResults.reset method reset the results iterator, for eager
-evaluation. If the query was processed with eager evaluation then reset
-will reset the iterator so a subsequent call to <a href="../api_java/xmlr_next.html">XmlResults.next</a> method will
-return the first value in the result set. If the query was processed
-with lazy evaluation then XmlResults.reset will have no effect.
-<p>The XmlResults.reset method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>If the requested item could not be returned due to insufficient memory,
-the XmlResults.reset method will fail and
-throw a <a href="../api_java/mem_class.html">DbMemoryException</a> exception.
-<p>The XmlResults.reset method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XmlResults.reset 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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_java/xmldocument_class.html">XmlDocument</a>, <a href="../api_java/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_java/xml_close.html">XmlContainer.close</a>,
-<a href="../api_java/xml_declare.html">XmlContainer.declareIndex</a>,
-<a href="../api_java/xml_del.html">XmlContainer.deleteDocument</a>,
-<a href="../api_java/xml_get.html">XmlContainer.getDocument</a>,
-<a href="../api_java/xml_getname.html">XmlContainer.getName</a>,
-<a href="../api_java/xml_open.html">XmlContainer.open</a>,
-<a href="../api_java/xml_put.html">XmlContainer.putDocument</a>
-and
-<a href="../api_java/xml_xpath.html">XmlContainer.queryWithXPath</a>.
-<p>
-<a href="../api_java/xmldoc_getattr.html">XmlDocument.getAttributeValue</a>,
-<a href="../api_java/xmldoc_getcont.html">XmlDocument.getContent</a>,
-<a href="../api_java/xmldoc_getid.html">XmlDocument.getID</a>,
-<a href="../api_java/xmldoc_getname.html">XmlDocument.getName</a>,
-<a href="../api_java/xmldoc_gettype.html">XmlDocument.getType</a>,
-<a href="../api_java/xmldoc_setcont.html">XmlDocument.setContent</a>,
-<a href="../api_java/xmldoc_setname.html">XmlDocument.setName</a>,
-and
-<a href="../api_java/xmldoc_settype.html">XmlDocument.setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_java/xmlresults_class.html b/db/docs/api_java/xmlresults_class.html
deleted file mode 100644
index 7c46b5a25..000000000
--- a/db/docs/api_java/xmlresults_class.html
+++ /dev/null
@@ -1,73 +0,0 @@
-<!--Id: xmlresults_class.so,v 1.8 2002/07/29 04:20:27 mjc Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlResults</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlResults</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-import com.sleepycat.dbxml.*;
-<p>
-public class XmlResults extends Object { ... }
-</pre></h3>
-<h1>Description</h1>
-<p>The XmlResults class encapsulates the results of a query against
-an <a href="../api_java/xmlcontainer_class.html">XmlContainer</a>.
-<p>The results of a query are a collection of <a href="../api_java/xmlvalue_class.html">XmlValue</a>s. The
-<a href="../api_java/xmlvalue_class.html">XmlValue</a>s may be either documents or nodesets. If the query
-context selected a return type of <a href="../api_java/xmlq_setret.html#XmlQueryContext::ResultValues">Db.XmlQueryContext::ResultValues</a>
-then the values will be of type NodeListValue, otherwise they will be
-of type DocumentValue.
-<p>An XmlResults object is created by calling <a href="../api_java/xml_xpath.html">XmlContainer.queryWithXPath</a>.
-If the query context called for lazy expression evaluation then the
-resultant values will be computed as needed. If eager evaluation was
-selected the resultant values are stored within the XmlResults
-object.
-<p>XmlResults provides an iteration interface through its next()
-method. When there are no more values available the passed back value
-pointer will be zero. If eager evaluation was selected then the reset
-method can be called to reset the iterator, and the next call to next()
-will return the first value of the results.
-<h1>Class</h1>
-<a href="../api_java/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_java/xmldocument_class.html">XmlDocument</a>, <a href="../api_java/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_java/xml_close.html">XmlContainer.close</a>,
-<a href="../api_java/xml_declare.html">XmlContainer.declareIndex</a>,
-<a href="../api_java/xml_del.html">XmlContainer.deleteDocument</a>,
-<a href="../api_java/xml_get.html">XmlContainer.getDocument</a>,
-<a href="../api_java/xml_getname.html">XmlContainer.getName</a>,
-<a href="../api_java/xml_open.html">XmlContainer.open</a>,
-<a href="../api_java/xml_put.html">XmlContainer.putDocument</a>
-and
-<a href="../api_java/xml_xpath.html">XmlContainer.queryWithXPath</a>.
-<p>
-<a href="../api_java/xmldoc_getattr.html">XmlDocument.getAttributeValue</a>,
-<a href="../api_java/xmldoc_getcont.html">XmlDocument.getContent</a>,
-<a href="../api_java/xmldoc_getid.html">XmlDocument.getID</a>,
-<a href="../api_java/xmldoc_getname.html">XmlDocument.getName</a>,
-<a href="../api_java/xmldoc_gettype.html">XmlDocument.getType</a>,
-<a href="../api_java/xmldoc_setcont.html">XmlDocument.setContent</a>,
-<a href="../api_java/xmldoc_setname.html">XmlDocument.setName</a>,
-and
-<a href="../api_java/xmldoc_settype.html">XmlDocument.setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_java/xmlvalue_class.html b/db/docs/api_java/xmlvalue_class.html
deleted file mode 100644
index 64ff42c28..000000000
--- a/db/docs/api_java/xmlvalue_class.html
+++ /dev/null
@@ -1,88 +0,0 @@
-<!--Id: xmlvalue_class.so,v 1.4 2002/07/29 04:20:28 mjc Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XmlValue</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XmlValue</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-import com.sleepycat.dbxml.*;
-<p>
-public class XmlValue extends Object
-{
- XmlValue(int flags)
- throws DbException;
- ...
-}
-</pre></h3>
-<h1>Description</h1>
-<p>An XmlValue is the value of a node in an XML document.
-<p>The value types Db.XmlValue::BOOLEAN, Db.XmlValue::NUMBER, and
-Db.XmlValue::STRING are defined in the W3C XPath 1.0 specification.
-This implementation adds the value types Db.XmlValue::DOCUMENT,
-Db.XmlValue::NODELIST, and Db.XmlValue::VARIABLE.
-<p>The query context is passed though each of the XmlValue methods as the
-value of an XmlValue object of type Variable is taken from the context.
-If no context is provided and a lookup is performed then
-XmlException::NO_VARIABLE_BINDING will be thrown. This exception is also
-thrown if a context is provided, but a value is not bound to the
-variable referred to in the XmlValue object.
-<p><dl compact>
-<p><dt>DOM_NodeList asNodeList (const XmlQueryContext *context) const<dd>Return the value as a NodeList.
-<dt>XmlDocument asDocument (const XmlQueryContext *context) const<dd>Return the value as a Document.
-<dt>XmlValue::Type getType (const XmlQueryContext *context) const<dd>Return the type of the value.
-<dt>bool asBoolean (const XmlQueryContext *context) const<dd>Return the value as a Boolean.
-<dt>bool equals (const XmlValue &v, const XmlQueryContext *context) const<dd>Compare two values for equality.
-<dt>bool isBoolean (const XmlQueryContext *context) const<dd>Return if the value is a Boolean.
-<dt>bool isDocument (const XmlQueryContext *context) const<dd>Return if the value is a Document.
-<dt>bool isNull () const<dd>Return if the value has no value.
-<dt>bool isNumber (const XmlQueryContext *context) const<dd>Return if the value is a Number.
-<dt>bool isString (const XmlQueryContext *context) const<dd>Return if the value is a String.
-<dt>bool isVariable (const XmlQueryContext *context) const<dd>Return if the value is a Variable.
-<dt>double asNumber (const XmlQueryContext *context) const<dd>Return the value as a Number.
-<dt>isNodeList (const XmlQueryContext *context) const<dd>Return if the value is a NodeList.
-<dt>std::string asString (const XmlQueryContext *context) const<dd>Return the value as a String.
-</dl>
-<h1>Class</h1>
-<a href="../api_java/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_java/xmldocument_class.html">XmlDocument</a>, <a href="../api_java/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_java/xml_close.html">XmlContainer.close</a>,
-<a href="../api_java/xml_declare.html">XmlContainer.declareIndex</a>,
-<a href="../api_java/xml_del.html">XmlContainer.deleteDocument</a>,
-<a href="../api_java/xml_get.html">XmlContainer.getDocument</a>,
-<a href="../api_java/xml_getname.html">XmlContainer.getName</a>,
-<a href="../api_java/xml_open.html">XmlContainer.open</a>,
-<a href="../api_java/xml_put.html">XmlContainer.putDocument</a>
-and
-<a href="../api_java/xml_xpath.html">XmlContainer.queryWithXPath</a>.
-<p>
-<a href="../api_java/xmldoc_getattr.html">XmlDocument.getAttributeValue</a>,
-<a href="../api_java/xmldoc_getcont.html">XmlDocument.getContent</a>,
-<a href="../api_java/xmldoc_getid.html">XmlDocument.getID</a>,
-<a href="../api_java/xmldoc_getname.html">XmlDocument.getName</a>,
-<a href="../api_java/xmldoc_gettype.html">XmlDocument.getType</a>,
-<a href="../api_java/xmldoc_setcont.html">XmlDocument.setContent</a>,
-<a href="../api_java/xmldoc_setname.html">XmlDocument.setName</a>,
-and
-<a href="../api_java/xmldoc_settype.html">XmlDocument.setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_java/xmlxpathexp_class.html b/db/docs/api_java/xmlxpathexp_class.html
deleted file mode 100644
index efd37fc9b..000000000
--- a/db/docs/api_java/xmlxpathexp_class.html
+++ /dev/null
@@ -1,65 +0,0 @@
-<!--Id: xmlxpathexp_class.so,v 1.3 2002/07/29 04:20:28 mjc Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XPathExpression</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XPathExpression</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-import com.sleepycat.dbxml.*;
-<p>
-public class XPathExpression extends Object
-{
- XPathExpression(int flags)
- throws DbException;
- ...
-}
-</pre></h3>
-<h1>Description</h1>
-<p>An XPathExpression represents a parsed XPath expression. They
-are created with <a href="../api_java/xml_xparse.html">XmlContainer.parseXPathExpression</a> and evaluated with <a href="../api_java/xml_xpath.html">XmlContainer.queryWithXPath</a>.
-<p>Parsed XPath expressions are useful as the cost of the expression
-parsing and optimization can be amortized over many evaluations.
-<h1>Class</h1>
-<a href="../api_java/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_java/xmldocument_class.html">XmlDocument</a>, <a href="../api_java/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_java/xml_close.html">XmlContainer.close</a>,
-<a href="../api_java/xml_declare.html">XmlContainer.declareIndex</a>,
-<a href="../api_java/xml_del.html">XmlContainer.deleteDocument</a>,
-<a href="../api_java/xml_get.html">XmlContainer.getDocument</a>,
-<a href="../api_java/xml_getname.html">XmlContainer.getName</a>,
-<a href="../api_java/xml_open.html">XmlContainer.open</a>,
-<a href="../api_java/xml_put.html">XmlContainer.putDocument</a>
-and
-<a href="../api_java/xml_xpath.html">XmlContainer.queryWithXPath</a>.
-<p>
-<a href="../api_java/xmldoc_getattr.html">XmlDocument.getAttributeValue</a>,
-<a href="../api_java/xmldoc_getcont.html">XmlDocument.getContent</a>,
-<a href="../api_java/xmldoc_getid.html">XmlDocument.getID</a>,
-<a href="../api_java/xmldoc_getname.html">XmlDocument.getName</a>,
-<a href="../api_java/xmldoc_gettype.html">XmlDocument.getType</a>,
-<a href="../api_java/xmldoc_setcont.html">XmlDocument.setContent</a>,
-<a href="../api_java/xmldoc_setname.html">XmlDocument.setName</a>,
-and
-<a href="../api_java/xmldoc_settype.html">XmlDocument.setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_java/xmlxpe_get.html b/db/docs/api_java/xmlxpe_get.html
deleted file mode 100644
index c9f14fe5c..000000000
--- a/db/docs/api_java/xmlxpe_get.html
+++ /dev/null
@@ -1,65 +0,0 @@
-<!--Id: xmlxpe_get.so,v 10.1 2002/06/25 17:17:40 bostic Exp -->
-<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: XPathExpression.getXPathQuery</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td>
-<h1>XPathExpression.getXPathQuery</h1>
-</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>
-</td></tr></table>
-<hr size=1 noshade>
-<tt>
-<h3><pre>
-import com.sleepycat.dbxml.*;
-<p>
-public String getXPathQuery()
- throws XmlException;
-</pre></h3>
-<h1>Description</h1>
-<p>The XPathExpression.getXPathQuery method returns the Xpath query as a string.
-<p>The XPathExpression.getXPathQuery method throws an exception that encapsulates a non-zero error value on
-failure.
-<h1>Errors</h1>
-<p>The XPathExpression.getXPathQuery method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
-If a catastrophic error has occurred, the XPathExpression.getXPathQuery 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/xmlcontainer_class.html">XmlContainer</a>, <a href="../api_java/xmldocument_class.html">XmlDocument</a>, <a href="../api_java/xmlquery_class.html">XmlQueryContext</a>
-<h1>See Also</h1>
-<a href="../api_java/xml_close.html">XmlContainer.close</a>,
-<a href="../api_java/xml_declare.html">XmlContainer.declareIndex</a>,
-<a href="../api_java/xml_del.html">XmlContainer.deleteDocument</a>,
-<a href="../api_java/xml_get.html">XmlContainer.getDocument</a>,
-<a href="../api_java/xml_getname.html">XmlContainer.getName</a>,
-<a href="../api_java/xml_open.html">XmlContainer.open</a>,
-<a href="../api_java/xml_put.html">XmlContainer.putDocument</a>
-and
-<a href="../api_java/xml_xpath.html">XmlContainer.queryWithXPath</a>.
-<p>
-<a href="../api_java/xmldoc_getattr.html">XmlDocument.getAttributeValue</a>,
-<a href="../api_java/xmldoc_getcont.html">XmlDocument.getContent</a>,
-<a href="../api_java/xmldoc_getid.html">XmlDocument.getID</a>,
-<a href="../api_java/xmldoc_getname.html">XmlDocument.getName</a>,
-<a href="../api_java/xmldoc_gettype.html">XmlDocument.getType</a>,
-<a href="../api_java/xmldoc_setcont.html">XmlDocument.setContent</a>,
-<a href="../api_java/xmldoc_setname.html">XmlDocument.setName</a>,
-and
-<a href="../api_java/xmldoc_settype.html">XmlDocument.setType</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>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>
diff --git a/db/docs/api_tcl/api_tcl.html b/db/docs/api_tcl/api_tcl.html
index bc7caf3b4..e72db926d 100644
--- a/db/docs/api_tcl/api_tcl.html
+++ b/db/docs/api_tcl/api_tcl.html
@@ -1,6 +1,5 @@
<!--$Id: api_tcl.so,v 11.21 2003/10/18 19:16:23 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -49,6 +48,6 @@
<tr><td><br></td><td><br></td></tr>
<tr><td><a href="../api_tcl/version.html"><b>berkdb version</b></a></td><td>Return version information</td></tr>
</table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_tcl/db_close.html b/db/docs/api_tcl/db_close.html
index a6b0abd40..dd992e512 100644
--- a/db/docs/api_tcl/db_close.html
+++ b/db/docs/api_tcl/db_close.html
@@ -1,7 +1,6 @@
<!--$Id: db_close.so,v 11.15 2002/08/18 21:17:23 bostic Exp $-->
<!--$Id: m4.tcl,v 11.28 2004/12/16 19:13:05 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -55,6 +54,6 @@ is thrown.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_tcl/api_tcl.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_tcl/db_count.html b/db/docs/api_tcl/db_count.html
index 4f3a06000..6b2d5477d 100644
--- a/db/docs/api_tcl/db_count.html
+++ b/db/docs/api_tcl/db_count.html
@@ -1,7 +1,6 @@
<!--$Id: db_count.so,v 11.4 2002/08/18 21:17:24 bostic Exp $-->
<!--$Id: m4.tcl,v 11.28 2004/12/16 19:13:05 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -33,6 +32,6 @@ Tcl error is thrown.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_tcl/api_tcl.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_tcl/db_cursor.html b/db/docs/api_tcl/db_cursor.html
index f164eaf31..f412eb703 100644
--- a/db/docs/api_tcl/db_cursor.html
+++ b/db/docs/api_tcl/db_cursor.html
@@ -1,7 +1,6 @@
<!--$Id: db_cursor.so,v 11.13 2002/08/18 21:17:25 bostic Exp $-->
<!--$Id: m4.tcl,v 11.28 2004/12/16 19:13:05 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -43,6 +42,6 @@ the operation will be implicitly transaction protected.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_tcl/api_tcl.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_tcl/db_del.html b/db/docs/api_tcl/db_del.html
index c464070d4..42f57a13e 100644
--- a/db/docs/api_tcl/db_del.html
+++ b/db/docs/api_tcl/db_del.html
@@ -1,7 +1,6 @@
<!--$Id: db_del.so,v 11.15 2004/12/16 19:13:04 bostic Exp $-->
<!--$Id: m4.tcl,v 11.28 2004/12/16 19:13:05 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -48,6 +47,6 @@ is thrown.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_tcl/api_tcl.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_tcl/db_get.html b/db/docs/api_tcl/db_get.html
index ddaddd147..bc253a1bf 100644
--- a/db/docs/api_tcl/db_get.html
+++ b/db/docs/api_tcl/db_get.html
@@ -1,7 +1,6 @@
<!--$Id: db_get.so,v 11.20 2004/12/16 19:13:04 bostic Exp $-->
<!--$Id: m4.tcl,v 11.28 2004/12/16 19:13:05 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -99,6 +98,6 @@ is thrown.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_tcl/api_tcl.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_tcl/db_get_join.html b/db/docs/api_tcl/db_get_join.html
index 43ebe9d8e..10be491e1 100644
--- a/db/docs/api_tcl/db_get_join.html
+++ b/db/docs/api_tcl/db_get_join.html
@@ -1,7 +1,6 @@
<!--$Id: db_get_join.so,v 11.18 2002/08/18 21:17:25 bostic Exp $-->
<!--$Id: m4.tcl,v 11.28 2004/12/16 19:13:05 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -45,6 +44,6 @@ the operation will be implicitly transaction protected.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_tcl/api_tcl.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_tcl/db_get_type.html b/db/docs/api_tcl/db_get_type.html
index 166a32c4b..a3e2b0ce3 100644
--- a/db/docs/api_tcl/db_get_type.html
+++ b/db/docs/api_tcl/db_get_type.html
@@ -1,7 +1,6 @@
<!--$Id: db_get_type.so,v 11.11 2002/08/18 21:17:25 bostic Exp $-->
<!--$Id: m4.tcl,v 11.28 2004/12/16 19:13:05 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -30,6 +29,6 @@ returning one of "btree", "hash", "queue" or "recno".</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_tcl/api_tcl.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_tcl/db_is_byteswapped.html b/db/docs/api_tcl/db_is_byteswapped.html
index d94cbbe2b..868830d58 100644
--- a/db/docs/api_tcl/db_is_byteswapped.html
+++ b/db/docs/api_tcl/db_is_byteswapped.html
@@ -1,7 +1,6 @@
<!--$Id: db_is_byteswapped.so,v 11.15 2003/10/13 19:57:26 bostic Exp $-->
<!--$Id: m4.tcl,v 11.28 2004/12/16 19:13:05 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -34,6 +33,6 @@ or not.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_tcl/api_tcl.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_tcl/db_join.html b/db/docs/api_tcl/db_join.html
index 821700c25..bad1c18a0 100644
--- a/db/docs/api_tcl/db_join.html
+++ b/db/docs/api_tcl/db_join.html
@@ -1,7 +1,6 @@
<!--$Id: db_join.so,v 11.22 2002/08/18 21:17:26 bostic Exp $-->
<!--$Id: m4.tcl,v 11.28 2004/12/16 19:13:05 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -44,6 +43,6 @@ been created within the same transaction.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_tcl/api_tcl.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_tcl/db_open.html b/db/docs/api_tcl/db_open.html
index a713cf275..1a61d5ab9 100644
--- a/db/docs/api_tcl/db_open.html
+++ b/db/docs/api_tcl/db_open.html
@@ -1,7 +1,6 @@
<!--$Id: db_open.so,v 11.34 2004/12/16 19:13:04 bostic Exp $-->
<!--$Id: m4.tcl,v 11.28 2004/12/16 19:13:05 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -310,6 +309,6 @@ file</a> for more information.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_tcl/api_tcl.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_tcl/db_put.html b/db/docs/api_tcl/db_put.html
index 04ec31ee2..a3a93faa3 100644
--- a/db/docs/api_tcl/db_put.html
+++ b/db/docs/api_tcl/db_put.html
@@ -1,7 +1,6 @@
<!--$Id: db_put.so,v 11.14 2004/12/16 19:13:05 bostic Exp $-->
<!--$Id: m4.tcl,v 11.28 2004/12/16 19:13:05 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -73,6 +72,6 @@ types, the key is interpreted by Tcl as a byte array.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_tcl/api_tcl.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_tcl/db_remove.html b/db/docs/api_tcl/db_remove.html
index d513426c8..f7482e400 100644
--- a/db/docs/api_tcl/db_remove.html
+++ b/db/docs/api_tcl/db_remove.html
@@ -1,7 +1,6 @@
<!--$Id: db_remove.so,v 11.12 2002/09/26 17:34:02 bostic Exp $-->
<!--$Id: m4.tcl,v 11.28 2004/12/16 19:13:05 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -56,6 +55,6 @@ is thrown.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_tcl/api_tcl.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_tcl/db_rename.html b/db/docs/api_tcl/db_rename.html
index e293672e5..b2ff6339a 100644
--- a/db/docs/api_tcl/db_rename.html
+++ b/db/docs/api_tcl/db_rename.html
@@ -1,7 +1,6 @@
<!--$Id: db_rename.so,v 11.7 2002/09/26 17:34:02 bostic Exp $-->
<!--$Id: m4.tcl,v 11.28 2004/12/16 19:13:05 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -57,6 +56,6 @@ is thrown.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_tcl/api_tcl.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_tcl/db_stat.html b/db/docs/api_tcl/db_stat.html
index d2a0f5edb..ac3aec419 100644
--- a/db/docs/api_tcl/db_stat.html
+++ b/db/docs/api_tcl/db_stat.html
@@ -1,7 +1,6 @@
<!--$Id: db_stat.so,v 11.12 2002/08/18 21:17:27 bostic Exp $-->
<!--$Id: m4.tcl,v 11.28 2004/12/16 19:13:05 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -36,6 +35,6 @@ of the database.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_tcl/api_tcl.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_tcl/db_sync.html b/db/docs/api_tcl/db_sync.html
index 68f6d70ef..defc10e89 100644
--- a/db/docs/api_tcl/db_sync.html
+++ b/db/docs/api_tcl/db_sync.html
@@ -1,7 +1,6 @@
<!--$Id: db_sync.so,v 11.12 2004/12/02 18:21:08 bostic Exp $-->
<!--$Id: m4.tcl,v 11.28 2004/12/16 19:13:05 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -32,6 +31,6 @@ is thrown.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_tcl/api_tcl.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_tcl/db_truncate.html b/db/docs/api_tcl/db_truncate.html
index edd721ddb..0c0a48fc8 100644
--- a/db/docs/api_tcl/db_truncate.html
+++ b/db/docs/api_tcl/db_truncate.html
@@ -1,7 +1,6 @@
<!--$Id: db_truncate.so,v 11.6 2004/12/16 19:13:05 bostic Exp $-->
<!--$Id: m4.tcl,v 11.28 2004/12/16 19:13:05 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -41,6 +40,6 @@ from the database on success.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_tcl/api_tcl.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_tcl/dbc_close.html b/db/docs/api_tcl/dbc_close.html
index dd42aa71e..0b4ad54e8 100644
--- a/db/docs/api_tcl/dbc_close.html
+++ b/db/docs/api_tcl/dbc_close.html
@@ -1,7 +1,6 @@
<!--$Id: dbc_close.so,v 11.14 2004/12/02 18:21:08 bostic Exp $-->
<!--$Id: m4.tcl,v 11.28 2004/12/16 19:13:05 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -32,6 +31,6 @@ is thrown.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_tcl/api_tcl.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_tcl/dbc_del.html b/db/docs/api_tcl/dbc_del.html
index f4c2c1fd5..fe4c04e1a 100644
--- a/db/docs/api_tcl/dbc_del.html
+++ b/db/docs/api_tcl/dbc_del.html
@@ -1,7 +1,6 @@
<!--$Id: dbc_del.so,v 11.13 2002/08/18 21:17:28 bostic Exp $-->
<!--$Id: m4.tcl,v 11.28 2004/12/16 19:13:05 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -34,6 +33,6 @@ is thrown.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_tcl/api_tcl.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_tcl/dbc_dup.html b/db/docs/api_tcl/dbc_dup.html
index 172a50e6c..005da42a2 100644
--- a/db/docs/api_tcl/dbc_dup.html
+++ b/db/docs/api_tcl/dbc_dup.html
@@ -1,7 +1,6 @@
<!--$Id: dbc_dup.so,v 11.8 2002/08/18 21:17:28 bostic Exp $-->
<!--$Id: m4.tcl,v 11.28 2004/12/16 19:13:05 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -42,6 +41,6 @@ is thrown.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_tcl/api_tcl.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_tcl/dbc_get.html b/db/docs/api_tcl/dbc_get.html
index 1542f106a..7e08d52ae 100644
--- a/db/docs/api_tcl/dbc_get.html
+++ b/db/docs/api_tcl/dbc_get.html
@@ -1,7 +1,6 @@
<!--$Id: dbc_get.so,v 11.22 2004/12/02 18:21:08 bostic Exp $-->
<!--$Id: m4.tcl,v 11.28 2004/12/16 19:13:05 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -163,6 +162,6 @@ exist an empty list is returned.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_tcl/api_tcl.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_tcl/dbc_put.html b/db/docs/api_tcl/dbc_put.html
index a77e36fd4..6a2556d49 100644
--- a/db/docs/api_tcl/dbc_put.html
+++ b/db/docs/api_tcl/dbc_put.html
@@ -1,7 +1,6 @@
<!--$Id: dbc_put.so,v 11.18 2004/12/02 18:21:08 bostic Exp $-->
<!--$Id: m4.tcl,v 11.28 2004/12/16 19:13:05 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -129,6 +128,6 @@ is thrown.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_tcl/api_tcl.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_tcl/env_close.html b/db/docs/api_tcl/env_close.html
index 12026e042..42e4f06e6 100644
--- a/db/docs/api_tcl/env_close.html
+++ b/db/docs/api_tcl/env_close.html
@@ -1,7 +1,6 @@
<!--$Id: env_close.so,v 11.14 2002/08/18 21:17:29 bostic Exp $-->
<!--$Id: m4.tcl,v 11.28 2004/12/16 19:13:05 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -38,6 +37,6 @@ is thrown.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_tcl/api_tcl.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_tcl/env_dbremove.html b/db/docs/api_tcl/env_dbremove.html
index d79915022..229b3daf2 100644
--- a/db/docs/api_tcl/env_dbremove.html
+++ b/db/docs/api_tcl/env_dbremove.html
@@ -1,7 +1,6 @@
<!--$Id: env_dbremove.so,v 11.4 2004/12/16 19:13:05 bostic Exp $-->
<!--$Id: m4.tcl,v 11.28 2004/12/16 19:13:05 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -45,6 +44,6 @@ is thrown.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_tcl/api_tcl.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_tcl/env_dbrename.html b/db/docs/api_tcl/env_dbrename.html
index b8d519ee3..00cc2ce01 100644
--- a/db/docs/api_tcl/env_dbrename.html
+++ b/db/docs/api_tcl/env_dbrename.html
@@ -1,7 +1,6 @@
<!--$Id: env_dbrename.so,v 11.4 2004/12/16 19:13:05 bostic Exp $-->
<!--$Id: m4.tcl,v 11.28 2004/12/16 19:13:05 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -46,6 +45,6 @@ is thrown.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_tcl/api_tcl.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_tcl/env_open.html b/db/docs/api_tcl/env_open.html
index 98ad6ac3f..52795e63f 100644
--- a/db/docs/api_tcl/env_open.html
+++ b/db/docs/api_tcl/env_open.html
@@ -1,7 +1,6 @@
<!--$Id: env_open.so,v 11.29 2002/12/22 21:11:07 bostic Exp $-->
<!--$Id: m4.tcl,v 11.28 2004/12/16 19:13:05 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -170,6 +169,6 @@ systems).
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_tcl/api_tcl.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_tcl/env_remove.html b/db/docs/api_tcl/env_remove.html
index f7b3abe7e..d9d3d32a7 100644
--- a/db/docs/api_tcl/env_remove.html
+++ b/db/docs/api_tcl/env_remove.html
@@ -1,7 +1,6 @@
<!--$Id: env_remove.so,v 11.17 2002/08/18 21:17:29 bostic Exp $-->
<!--$Id: m4.tcl,v 11.28 2004/12/16 19:13:05 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -68,6 +67,6 @@ is thrown.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_tcl/api_tcl.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_tcl/txn.html b/db/docs/api_tcl/txn.html
index 65e5ffc01..13767a849 100644
--- a/db/docs/api_tcl/txn.html
+++ b/db/docs/api_tcl/txn.html
@@ -1,7 +1,6 @@
<!--$Id: txn.so,v 11.17 2003/10/18 19:16:24 bostic Exp $-->
<!--$Id: m4.tcl,v 11.28 2004/12/16 19:13:05 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -59,6 +58,6 @@ consistency, isolation, and durability) properties.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_tcl/api_tcl.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_tcl/txn_abort.html b/db/docs/api_tcl/txn_abort.html
index 7e91f12ed..03e9fa166 100644
--- a/db/docs/api_tcl/txn_abort.html
+++ b/db/docs/api_tcl/txn_abort.html
@@ -1,7 +1,6 @@
<!--$Id: txn_abort.so,v 11.15 2002/08/18 21:17:30 bostic Exp $-->
<!--$Id: m4.tcl,v 11.28 2004/12/16 19:13:05 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -41,6 +40,6 @@ is thrown.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_tcl/api_tcl.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_tcl/txn_checkpoint.html b/db/docs/api_tcl/txn_checkpoint.html
index 8634fc2c4..5f2fb92c3 100644
--- a/db/docs/api_tcl/txn_checkpoint.html
+++ b/db/docs/api_tcl/txn_checkpoint.html
@@ -1,7 +1,6 @@
<!--$Id: txn_checkpoint.so,v 11.1 2003/09/02 14:38:51 sue Exp $-->
<!--$Id: m4.tcl,v 11.28 2004/12/16 19:13:05 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -40,6 +39,6 @@ of minutes has passed since the last checkpoint.
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_tcl/api_tcl.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_tcl/txn_commit.html b/db/docs/api_tcl/txn_commit.html
index 833ff9b19..4e3a47184 100644
--- a/db/docs/api_tcl/txn_commit.html
+++ b/db/docs/api_tcl/txn_commit.html
@@ -1,7 +1,6 @@
<!--$Id: txn_commit.so,v 11.20 2004/12/02 18:21:08 bostic Exp $-->
<!--$Id: m4.tcl,v 11.28 2004/12/16 19:13:05 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -65,6 +64,6 @@ is thrown.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_tcl/api_tcl.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/api_tcl/version.html b/db/docs/api_tcl/version.html
index d5478226f..250ec95f7 100644
--- a/db/docs/api_tcl/version.html
+++ b/db/docs/api_tcl/version.html
@@ -1,7 +1,6 @@
<!--$Id: version.so,v 11.12 2002/08/18 21:17:30 bostic Exp $-->
<!--$Id: m4.tcl,v 11.28 2004/12/16 19:13:05 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -35,6 +34,6 @@ patch levels of the underlying Berkeley DB release.</p>
<table width="100%"><tr><td><br></td><td align=right>
<a href="../api_tcl/api_tcl.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/articles/inmemory/C/InMemoryDBApplication.pdf b/db/docs/articles/inmemory/C/InMemoryDBApplication.pdf
new file mode 100644
index 000000000..a26e0bd7c
--- /dev/null
+++ b/db/docs/articles/inmemory/C/InMemoryDBApplication.pdf
Binary files differ
diff --git a/db/docs/articles/inmemory/C/gettingStarted.css b/db/docs/articles/inmemory/C/gettingStarted.css
new file mode 100644
index 000000000..c1b4c86b7
--- /dev/null
+++ b/db/docs/articles/inmemory/C/gettingStarted.css
@@ -0,0 +1,41 @@
+body { width: 45em;
+ margin-left: 3em;
+ font-family: Arial, Helvetica, sans-serif;
+ font-size: 11pt;
+ }
+
+h2.title { margin-left: -1em;
+ font-family: Verdana, serif;
+ font-size: 16pt;
+ }
+
+h3.title { font-family: Verdana, serif;
+ font-size: 14pt;
+ }
+
+pre.programlisting {
+ font-family: monospace;
+ background-color: #eae8e9;
+}
+
+div.navheader { font-size: 9pt;
+ width: 60em;
+ margin-left: -2em;
+ }
+
+div.navheader table tr td { font-size: 9pt; }
+
+div.navfooter { font-size: 9pt;
+ width: 60em;
+ margin-left: -2em;
+ }
+div.navfooter table tr td { font-size: 9pt; }
+
+span.emphasis { font-style: italic; font-size: 9pt;}
+
+div.appendix div.informaltable { font-size: 9pt; }
+div.appendix div.informaltable td { vertical-align: top; }
+div.appendix div.informaltable p { margin-top: .25em; }
+div.appendix div.informaltable p { margin-bottom: .25em; }
+
+
diff --git a/db/docs/articles/inmemory/C/index.html b/db/docs/articles/inmemory/C/index.html
new file mode 100644
index 000000000..68e4db031
--- /dev/null
+++ b/db/docs/articles/inmemory/C/index.html
@@ -0,0 +1,1165 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Writing In-Memory Berkeley DB Applications</title>
+ <link rel="stylesheet" href="gettingStarted.css" type="text/css" />
+ <meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
+ <link rel="home" href="index.html" title="Writing In-Memory Berkeley DB Applications" />
+ </head>
+ <body>
+ <div class="navheader">
+ <table width="100%" summary="Navigation header">
+ <tr>
+ <th colspan="3" align="center">Writing In-Memory Berkeley DB Applications</th>
+ </tr>
+ </table>
+ <hr />
+ </div>
+ <div class="article" lang="en" xml:lang="en">
+ <div class="titlepage">
+ <div>
+ <div>
+ <h1 class="title"><a id="id793395"></a>Writing In-Memory Berkeley DB Applications</h1>
+ </div>
+ <div>
+ <div class="legalnotice">
+ <p class="legalnotice-title">
+ <b>Legal Notice</b>
+ </p>
+ <p>
+ This documentation is distributed under an open source license.
+ You may review the terms of this license at:
+ <a href="http://www.oracle.com/technology/software/products/berkeley-db/htdocs/oslicense.html" target="_top">http://www.oracle.com/technology/software/products/berkeley-db/htdocs/oslicense.html</a>
+
+
+ </p>
+ <p>
+ Oracle, Berkeley DB,
+
+
+ and
+ Sleepycat are trademarks or registered trademarks of
+ Oracle. All rights to these marks are reserved.
+ No third-party use is permitted without the
+ express prior written consent of Oracle.
+ </p>
+ <p>
+ To obtain a copy of this document's original source code, please
+ submit a request to the Oracle Technology Network forum at:
+ <a href="http://forums.oracle.com/forums/forum.jspa?forumID=271" target="_top">http://forums.oracle.com/forums/forum.jspa?forumID=271</a>
+
+
+ </p>
+ </div>
+ </div>
+ <div>
+ <p class="pubdate">7/5/2007</p>
+ </div>
+ </div>
+ <div></div>
+ <hr />
+ </div>
+ <div class="toc">
+ <p>
+ <b>Table of Contents</b>
+ </p>
+ <dl>
+ <dt>
+ <span class="sect1">
+ <a href="index.html#intro">Introduction</a>
+ </span>
+ </dt>
+ <dt>
+ <span class="sect1">
+ <a href="index.html#resources">Resources to be Managed</a>
+ </span>
+ </dt>
+ <dt>
+ <span class="sect1">
+ <a href="index.html#strategies">Strategies</a>
+ </span>
+ </dt>
+ <dt>
+ <span class="sect1">
+ <a href="index.html#dbfiles">Keeping the Database in Memory</a>
+ </span>
+ </dt>
+ <dt>
+ <span class="sect1">
+ <a href="index.html#env">Keeping Environments in Memory</a>
+ </span>
+ </dt>
+ <dt>
+ <span class="sect1">
+ <a href="index.html#cachesize">Sizing the Cache</a>
+ </span>
+ </dt>
+ <dd>
+ <dl>
+ <dt>
+ <span class="sect2">
+ <a href="index.html#dbcachesize-db">Specifying a Cache Size using the
+ Database Handle</a>
+ </span>
+ </dt>
+ <dt>
+ <span class="sect2">
+ <a href="index.html#dbcachesize-env">Specifying a Cache Size using the
+ Environment Handle</a>
+ </span>
+ </dt>
+ </dl>
+ </dd>
+ <dt>
+ <span class="sect1">
+ <a href="index.html#mpool-nofile">Keeping Temporary Overflow Pages in Memory</a>
+ </span>
+ </dt>
+ <dt>
+ <span class="sect1">
+ <a href="index.html#logs">Keeping Logs in Memory</a>
+ </span>
+ </dt>
+ <dt>
+ <span class="sect1">
+ <a href="index.html#example_in-mem">Example In-Memory Application</a>
+ </span>
+ </dt>
+ </dl>
+ </div>
+ <div class="sect1" lang="en" xml:lang="en">
+ <div class="titlepage">
+ <div>
+ <div>
+ <h2 class="title" style="clear: both"><a id="intro"></a>Introduction</h2>
+ </div>
+ </div>
+ <div></div>
+ </div>
+ <p>
+ This document describes how to write a DB application
+ that keeps its data entirely in memory. That is, the
+ application writes no data to disk. For this reason,
+ in-memory only applications typically discard all
+ data durability guarantees.
+ </p>
+ <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
+ <h3 class="title">Note</h3>
+ <p>
+ This document assume familiarity with the
+ <i class="citetitle">Getting Started with Berkeley DB</i> guide. If
+ you are using environments or transactions, then
+ you should also have an understanding of the
+ concepts in <i class="citetitle">Berkeley DB Getting Started with Transaction Processing</i>
+ guide.
+ </p>
+ </div>
+ <p>
+ There are several reasons why you might want to write an
+ in-memory only DB application. For platforms on which a
+ disk drive is available to back your data, an in-memory
+ application might be desirable from a performance
+ perspective. In this case, the data that your application
+ manages might be generated during run-time and so is of no
+ interest across application startups.
+ </p>
+ <p>
+ Other platforms are disk-less. In this case, an in-memory only
+ configuration is the only possible choice. Note that this
+ document's primary focus is disk-less systems for which an
+ on-disk filesystem is not available.
+ </p>
+ </div>
+ <div class="sect1" lang="en" xml:lang="en">
+ <div class="titlepage">
+ <div>
+ <div>
+ <h2 class="title" style="clear: both"><a id="resources"></a>Resources to be Managed</h2>
+ </div>
+ </div>
+ <div></div>
+ </div>
+ <p>
+ Before continuing, it is worthwhile to briefly
+ describe the DB resources that must be managed
+ if you are going to configure an in-memory only
+ DB application. These are resources that are by
+ default persisted on disk, or backed by a
+ filesystem on disk. Some configuration is therefore
+ required to keep these resources in-memory only.
+ </p>
+ <p>
+ Note that you can configure only some of these
+ resources to be held in-memory, and allow others to
+ be backed by disk. This might be desireable for
+ some applications that wish to improve application
+ performance by, for example, eliminating disk I/O
+ for some, but not all, of these resources. However,
+ for the purpose of this document, we assume you
+ want to configure all of these resources to be held
+ in memory.
+ </p>
+ <p>
+ Managing these resources for an in-memory
+ application is described in detail later in this
+ article.
+ </p>
+ <div class="itemizedlist">
+ <ul type="disc">
+ <li>
+ <p>
+ Database files
+ </p>
+ <p>
+ Normally, DB stores your
+ database data within on-disk files.
+ For an entirely in-memory
+ application, you are required to turn
+ off this behavior.
+ </p>
+ </li>
+ <li>
+ <p>
+ Environment region files
+ </p>
+ <p>
+ DB environments manage region
+ files for a variety of purposes.
+ Normally these are backed by the
+ filesystem, but by using the
+ appropriate configuration option
+ you can cause region files to
+ reside in memory only.
+ </p>
+ </li>
+ <li>
+ <p>
+ Database cache
+ </p>
+ <p>
+ The DB cache must be configured
+ large enough to hold all your data
+ in memory. If you do not size your
+ cache large enough, then DB
+ will attempt to write pages to
+ disk. In a disk-less system, this
+ will result in an abnormal
+ termination of your program.
+ </p>
+ </li>
+ <li>
+ <p>
+ Logs
+ </p>
+ <p>
+ DB logs describe the write activity
+ that has occurred in your application.
+ They are used for a number of purposes,
+ such as recovery operations for
+ applications that are seeking data
+ durability guarantees.
+ </p>
+ <p>
+ For in-memory applications that do not
+ care about durability guarantees, logs
+ are still required if you want
+ transactional benefits other than
+ durability (such as isolation
+ and atomicity). This is because DB's
+ transactional subsystem requires logs,
+ even if you want to discard all data
+ durability guarantees.
+ </p>
+ <p>
+ If this describes your application, you
+ must enable logs but configure them to
+ reside only within memory.
+ </p>
+ </li>
+ <li>
+ <p>
+ Temporary overflow pages
+ </p>
+ <p>
+ You must disallow backing temporary
+ database files with the
+ filesystem. This is mostly a
+ configuration option, but it is
+ also dependent upon sizing your
+ cache correctly.
+ </p>
+ </li>
+ </ul>
+ </div>
+ </div>
+ <div class="sect1" lang="en" xml:lang="en">
+ <div class="titlepage">
+ <div>
+ <div>
+ <h2 class="title" style="clear: both"><a id="strategies"></a>Strategies</h2>
+ </div>
+ </div>
+ <div></div>
+ </div>
+ <p>
+ DB is an extremely flexible product that can be
+ adapted to suit almost any data management
+ requirements. This means that you can configure
+ DB to operate entirely within memory, but still
+ retain some data durability guarantees or even
+ throw away all durability guarantees.
+ </p>
+ <p>
+ Data durability guarantees describe how persistent
+ your data is. That is, once you have made a change
+ to the data stored in your database, how much of a
+ guarantee do you require that that modification
+ will persist (not be lost)? There are a great many
+ options here. For the absolute best durability guarantee, you
+ should fully transaction-protect your data and
+ allow your data to be written to disk upon each
+ transaction commit. Of course, this guarantee is
+ not available for disk-less systems.
+ </p>
+ <p>
+ At the opposite end of the spectrum, you can throw
+ away all your data once your application is done
+ with it (for example, at application shutdown).
+ This is a good option if you are using DB only
+ as a kind of caching mechanism. In this case, you
+ obviously must either generate your data entirely
+ during runtime, or obtain it from some remote
+ location during application startup.
+ </p>
+ <p>
+ There are also durability options that exist somewhere in
+ between these two extremes. For example, disk-less
+ systems are sometimes backed by some kind of flash
+ memory (e.g. compact flash cards). These
+ platforms may want to limit the number of writes
+ applied to the backing media because it is capable
+ of accepting only a limited number of writes before it must
+ be replaced. For this reason, you might want to
+ limit data writes to the flash media only during
+ specific moments during your application's
+ runtime; for example, only at application shutdown.
+ </p>
+ <p>
+ The point here is to be aware that a great many
+ options are available to you when writing an
+ in-memory only application. That said, the focus of
+ this document is strictly disk-less systems; that
+ is, systems that provide no means by which
+ data can be written to persistent media.
+ </p>
+ </div>
+ <div class="sect1" lang="en" xml:lang="en">
+ <div class="titlepage">
+ <div>
+ <div>
+ <h2 class="title" style="clear: both"><a id="dbfiles"></a>Keeping the Database in Memory</h2>
+ </div>
+ </div>
+ <div></div>
+ </div>
+ <p>
+ Normally DB databases are backed by the
+ filesystem. For in-memory applications, such as
+ is required on disk-less systems, you can cause your
+ database to only reside in-memory. That is,
+ their contents are stored entirely within DB's
+ cache.
+ </p>
+ <p>
+ There are two requirements for keeping your
+ database(s) in-memory.
+ The first is to size your cache such that it is big
+ enough to hold all your data in-memory. If your
+ cache fills up, then your application will
+ encounter an unpredictable but almost certainly
+ fatal condition.
+ </p>
+ <p>
+ For information on setting the cache size, see
+ <a href="index.html#cachesize">Sizing the Cache</a>.
+ </p>
+ <p>
+ Beyond cache sizing, you also must tell DB not
+ to back your database with an on-disk file. You do
+ this by NOT providing a database file name
+ when you open the database. Note that the database
+ file name is different from the database name; you
+ can name your in-memory databases even if you
+ are not storing them in an on-disk file.
+ </p>
+ <p>
+ For example:
+ </p>
+ <pre class="programlisting">#include "db.h"
+
+...
+
+ int ret, ret_c;
+ const char *db_name = "in_mem_db1";
+ u_int32_t db_flags; /* For open flags */
+ DB *dbp; /* Database handle */
+
+...
+
+ /* Initialize the DB handle */
+ ret = db_create(&amp;dbp, NULL, 0);
+ if (ret != 0) {
+ fprintf(stderr, "Error creating database handle: %s\n",
+ db_strerror(ret));
+ goto err;
+ }
+
+ db_flags = DB_CREATE; /* If it doesn't exist, create it */
+
+ /*
+ * Open the database. Note that the file name is NULL.
+ * This forces the database to be stored in the cache only.
+ * Also note that the database has a name, even though its
+ * file name is NULL.
+ */
+ ret = dbp-&gt;open(dbp, /* Pointer to the database */
+ NULL, /* Txn pointer */
+ <b class="userinput"><tt>NULL,</tt></b> /* File name is not specified on purpose */
+ db_name, /* Logical db name. */
+ DB_BTREE, /* Database type (using btree) */
+ db_flags, /* Open flags */
+ 0); /* File mode. Using defaults */
+ if (ret != 0) {
+ dbp-&gt;err(dbp, ret, "Database open failed");
+ goto err;
+ }
+
+err:
+ /* Close the database */
+ if (dbp != NULL) {
+ ret_c = dbp-&gt;close(dbp, 0);
+ if (ret_c != 0) {
+ fprintf(stderr, "%s database close failed.\n",
+ db_strerror(ret_c));
+ ret = ret_c
+ }
+ } </pre>
+ </div>
+ <div class="sect1" lang="en" xml:lang="en">
+ <div class="titlepage">
+ <div>
+ <div>
+ <h2 class="title" style="clear: both"><a id="env"></a>Keeping Environments in Memory</h2>
+ </div>
+ </div>
+ <div></div>
+ </div>
+ <p>
+ Like databases, DB environments are usually backed by the filesystem. In
+ fact, a big part of what environments do is identify the location on disk
+ where resources (such as log and database files) are kept.
+ </p>
+ <p>
+ However, environments are also used for managing resources, such as
+ obtaining new transactions, so they are useful even when building an
+ in-memory application. Therefore, if you are going to use an environment for
+ your in-memory DB application, you must configure it such that it does
+ not want to use the filesystem. There are two things you need to do here.
+ </p>
+ <p>
+ First, when you open your environment, do NOT identify a home directory. To
+ accomplish this, you must:
+ </p>
+ <div class="itemizedlist">
+ <ul type="disc">
+ <li>
+ <p>
+ NOT provide a value for the <tt class="literal">db_home</tt>
+ parameter on the
+ <tt class="methodname">DB_ENV-&gt;open()</tt>
+ method.
+ </p>
+ </li>
+ <li>
+ <p>
+ NOT have a DB_HOME environment variable set.
+ </p>
+ </li>
+ <li>
+ <p>
+ NOT call any of the methods that affect file naming
+ (<tt class="methodname">DB_ENV-&gt;set_data_dir()</tt>,
+ <tt class="methodname">DB_ENV-&gt;set_lg_dir()</tt>, or
+ <tt class="methodname">DB_ENV-&gt;set_tmp_dir()</tt>).
+ </p>
+ </li>
+ </ul>
+ </div>
+ <p>
+ Beyond this, you must also ensure that regions are
+ backed by heap memory
+ instead of by the filesystem or system shared memory. You do this when you
+ open your environment by specifying the <tt class="literal">DB_PRIVATE</tt> flag.
+ Note that the use of <tt class="literal">DB_PRIVATE</tt> means that other processes
+ cannot share the environment. Consequently, your in-memory only application
+ must be a single-process, although it can be multi-threaded.
+ </p>
+ <p>
+ For example:
+ </p>
+ <pre class="programlisting">#include "db.h"
+
+...
+
+ int ret, ret_c;
+ u_int32_t env_flags; /* For open flags */
+ DB_ENV *envp; /* Environment handle */
+
+...
+
+ /* Initialize the ENV handle */
+ ret = db_env_create(&amp;envp, 0);
+ if (ret != 0) {
+ fprintf(stderr, "Error creating environment handle: %s\n",
+ db_strerror(ret));
+ goto err;
+ }
+
+
+ /*
+ * Environment flags. These are for a non-threaded
+ * in-memory application.
+ */
+ env_flags =
+ DB_CREATE | /* Create the environment if it does not exist */
+ DB_INIT_LOCK | /* Initialize the locking subsystem */
+ DB_INIT_LOG | /* Initialize the logging subsystem */
+ DB_INIT_TXN | /* Initialize the transactional subsystem. This
+ * also turns on logging. */
+ DB_INIT_MPOOL | /* Initialize the memory pool (in-memory cache) */
+ <b class="userinput"><tt>DB_PRIVATE | /* Region files are not backed by the filesystem.
+ * Instead, they are backed by heap memory. */</tt></b>
+
+ /*
+ * Now open the environment. Notice that we do not provide a location
+ * for the environment's home directory. This is required for an
+ * in-memory only application.
+ */
+ ret = envp-&gt;open(envp, <b class="userinput"><tt>NULL</tt></b>, env_flags, 0);
+ if (ret != 0) {
+ fprintf(stderr, "Error opening environment: %s\n",
+ db_strerror(ret));
+ goto err;
+ }
+
+err:
+ /* Close the environment */
+ if (envp != NULL) {
+ ret_c = envp-&gt;close(envp, 0);
+ if (ret_c != 0) {
+ fprintf(stderr, "environment close failed: %s\n",
+ db_strerror(ret_c));
+ ret = ret_c
+ }
+ }</pre>
+ </div>
+ <div class="sect1" lang="en" xml:lang="en">
+ <div class="titlepage">
+ <div>
+ <div>
+ <h2 class="title" style="clear: both"><a id="cachesize"></a>Sizing the Cache</h2>
+ </div>
+ </div>
+ <div></div>
+ </div>
+ <p>
+ One of the most important considerations for an
+ in-memory application is to ensure that your
+ database cache is large enough. In a normal
+ application that is not in-memory, the cache
+ provides a mechanism by which frequently-used
+ data can be accessed without resorting to disk I/O.
+ For an in-memory application, the cache is the only
+ location your data can exist so it is critical that
+ you make the cache large enough for your data set.
+ </p>
+ <p>
+ You specify the size of your cache at application
+ startup. Obviously you should not specify a size
+ that is larger than available memory. Note that the
+ size you specify for your cache is actually a
+ <span class="emphasis"><em>maximum</em></span> size; DB will only
+ use memory as required so if you specify a cache
+ size of 1 GB but your data set is only ever 10 MB
+ in size, then 10 MB is what DB will use.
+ </p>
+ <p>
+ Note that if you specify a cache size less than
+ 500 MB, then the cache size is automatically
+ increased by 25% to account for internal overhead
+ purposes.
+ </p>
+ <p>
+ There are two ways to specify a cache size,
+ depending on whether you are using a database
+ environment.
+ </p>
+ <div class="sect2" lang="en" xml:lang="en">
+ <div class="titlepage">
+ <div>
+ <div>
+ <h3 class="title"><a id="dbcachesize-db"></a>Specifying a Cache Size using the
+ Database Handle</h3>
+ </div>
+ </div>
+ <div></div>
+ </div>
+ <p>
+ To select a cache size using the database
+ handle, use the
+ <tt class="methodname">DB-&gt;set_cachesize()</tt>
+ method. Note that you cannot use this
+ method after the database has been opened.
+ </p>
+ <p>
+ Also, if you are using a database environment,
+ it is an error to use this method. See
+ the next section for details on
+ selecting your cache size.
+ </p>
+ <p>
+ The following code fragment creates a
+ database handle, sets the cache size to
+ 10 MB and then opens the database:
+ </p>
+ <pre class="programlisting">#include "db.h"
+
+...
+
+ int ret, ret_c;
+ const char *db_name = "in_mem_db1";
+ u_int32_t db_flags; /* For open flags */
+ DB *dbp; /* Database handle */
+
+...
+
+ /* Initialize the DB handle */
+ ret = db_create(&amp;dbp, NULL, 0);
+ if (ret != 0) {
+ fprintf(stderr, "Error creating database handle: %s\n",
+ db_strerror(ret));
+ goto err;
+ }
+
+ <b class="userinput"><tt>/*************************************************************/
+ /*************************************************************/
+ /************* Set the cache size here **********************/
+ /*************************************************************/
+ /*************************************************************/
+
+ ret = dbp-&gt;set_cachesize(dbp,
+ 0, /* 0 gigabytes */
+ 10 * 1024 * 1024, /* 10 megabytes */
+ 1); /* Create 1 cache. All memory will
+ * be allocated contiguously. */
+ if (ret != 0) {
+ dbp-&gt;err(dbp, ret, "Database open failed");
+ goto err;
+ }</tt></b>
+
+
+ db_flags = DB_CREATE; /* If it doesn't exist, create it */
+ ret = dbp-&gt;open(dbp, /* Pointer to the database */
+ NULL, /* Txn pointer */
+ NULL, /* File name is not specified on purpose */
+ db_name, /* Logical db name */
+ DB_BTREE, /* Database type (using btree) */
+ db_flags, /* Open flags */
+ 0); /* File mode. Using defaults */
+ if (ret != 0) {
+ dbp-&gt;err(dbp, ret, "Database open failed");
+ goto err;
+ }
+
+err:
+ /* Close the database */
+ if (dbp != NULL) {
+ ret_c = dbp-&gt;close(dbp, 0);
+ if (ret_c != 0) {
+ fprintf(stderr, "%s database close failed.\n",
+ db_strerror(ret_c));
+ ret = ret_c
+ }
+ } </pre>
+ </div>
+ <div class="sect2" lang="en" xml:lang="en">
+ <div class="titlepage">
+ <div>
+ <div>
+ <h3 class="title"><a id="dbcachesize-env"></a>Specifying a Cache Size using the
+ Environment Handle</h3>
+ </div>
+ </div>
+ <div></div>
+ </div>
+ <p>
+ To select a cache size using the
+ environment handle, use the
+ <tt class="methodname">ENV-&gt;set_cachesize()</tt>
+ method. Note that you cannot use this
+ method after the environment has been opened.
+ </p>
+ <p>
+ The following code fragment creates an
+ environment handle, sets the cache size to
+ 10 MB and then opens the environment: Once
+ opened, you can use the environment when
+ you open your database(s). This means all
+ your databases will use the same
+ cache.
+ </p>
+ <pre class="programlisting">#include "db.h"
+
+...
+
+ int ret, ret_c;
+ u_int32_t env_flags; /* For open flags */
+ DB_ENV *envp; /* Environment handle */
+
+...
+
+ /* Initialize the ENV handle */
+ ret = db_env_create(&amp;envp, 0);
+ if (ret != 0) {
+ fprintf(stderr, "Error creating environment handle: %s\n",
+ db_strerror(ret));
+ goto err;
+ }
+
+ <b class="userinput"><tt>/*************************************************************/
+ /*************************************************************/
+ /************* Set the cache size here **********************/
+ /*************************************************************/
+ /*************************************************************/
+
+ ret =
+ envp-&gt;set_cachesize(envp,
+ 0, /* 0 gigabytes */
+ 10 * 1024 * 1024, /* 10 megabytes */
+ 1); /* Create 1 cache. All memory will
+ * be allocated contiguously. */
+ if (ret != 0) {
+ envp-&gt;err(envp, ret, "Environment open failed");
+ goto err;
+ }</tt></b>
+
+ /*
+ * Environment flags. These are for a non-threaded
+ * in-memory application.
+ */
+ env_flags =
+ DB_CREATE | /* Create the environment if it does not exist */
+ DB_INIT_LOCK | /* Initialize the locking subsystem */
+ DB_INIT_LOG | /* Initialize the logging subsystem */
+ DB_INIT_TXN | /* Initialize the transactional subsystem. This
+ * also turns on logging. */
+ DB_INIT_MPOOL | /* Initialize the memory pool (in-memory cache) */
+ DB_PRIVATE | /* Region files are not backed by the filesystem.
+ * Instead, they are backed by heap memory. */
+
+ /*
+ * Now open the environment. Notice that we do not provide a location
+ * for the environment's home directory. This is required for an
+ * in-memory only application.
+ */
+ ret = envp-&gt;open(envp, NULL, env_flags, 0);
+ if (ret != 0) {
+ fprintf(stderr, "Error opening environment: %s\n",
+ db_strerror(ret));
+ goto err;
+ }
+
+err:
+ /* Close the environment */
+ if (envp != NULL) {
+ ret_c = envp-&gt;close(envp, 0);
+ if (ret_c != 0) {
+ fprintf(stderr, "environment close failed: %s\n",
+ db_strerror(ret_c));
+ ret = ret_c
+ }
+ } </pre>
+ </div>
+ </div>
+ <div class="sect1" lang="en" xml:lang="en">
+ <div class="titlepage">
+ <div>
+ <div>
+ <h2 class="title" style="clear: both"><a id="mpool-nofile"></a>Keeping Temporary Overflow Pages in Memory</h2>
+ </div>
+ </div>
+ <div></div>
+ </div>
+ <p>
+ Normally, when a database is opened, a temporary
+ file is opened on-disk to back the database. This
+ file is used if the database grows so large that it
+ fills the entire cache. At that time, database
+ pages that do not fit into the in-memory cache file
+ are written temporarily to this file.
+ </p>
+ <p>
+ For disk-less systems, you should configure your
+ databases so that this temporary file is not
+ created. When you do this, any attempt to create
+ new database pages once the cache is full will
+ fail.
+ </p>
+ <p>
+ You configure this option on a per-database handle
+ basis. That means you must configure this for every
+ in-memory database that your application uses.
+ </p>
+ <p>
+ To set this option, obtain the
+ <tt class="literal">DB_MPOOLFILE</tt> field from you
+ <tt class="literal">DB</tt> and then configure
+ <tt class="literal">DB_MPOOL_NOFILE</tt> using the
+ <tt class="methodname">DB_MPOOLFILE-&gt;set_flags()</tt>
+ method.
+ </p>
+ <p>
+ For example:
+ </p>
+ <pre class="programlisting">#include "db.h"
+
+...
+
+ int ret, ret_c;
+ u_int32_t env_flags; /* For open flags */
+ DB_ENV *envp; /* Environment handle */
+
+...
+
+ /*
+ * Configure the cache file. This can be done
+ * at any point in the application's life once the
+ * DB handle has been created.
+ */
+ mpf = dbp-&gt;get_mpf(dbp);
+ ret = mpf-&gt;set_flags(mpf, DB_MPOOL_NOFILE, 1);
+
+ if (ret != 0) {
+ fprintf(stderr,
+ "Attempt failed to configure for no backing of temp files: %s\n",
+ db_strerror(ret));
+ goto err;
+ } </pre>
+ </div>
+ <div class="sect1" lang="en" xml:lang="en">
+ <div class="titlepage">
+ <div>
+ <div>
+ <h2 class="title" style="clear: both"><a id="logs"></a>Keeping Logs in Memory</h2>
+ </div>
+ </div>
+ <div></div>
+ </div>
+ <p>
+ DB logs describe the write activity that has occurred in
+ your application. For a purely in-memory application, logs
+ should be used only if you wish to transaction-protect your
+ database writes as logs are required by the DB
+ transactional subsystem.
+ </p>
+ <p>
+ Note that transactions provide a number of guarantees. One
+ of these is not interesting to a purely in-memory
+ application (data durability). However, other transaction
+ guarantees such as isolation and atomicity might be of
+ interest to your application.
+ </p>
+ <p>
+ If this is the case for your application, then you must
+ configure your logs to be kept entirely in-memory. You
+ do this by setting a configuration option that prevents
+ DB from writing log data to disk.
+ Do this by setting the <tt class="literal">DB_LOG_INMEMORY</tt> flag using the
+ <tt class="methodname">DB_ENV-&gt;set_flags()</tt> method.
+ </p>
+ <p>
+ In addition, you must configure your log buffer size so that it is capable
+ of holding all log information that can accumulate during your longest
+ running transaction. That is, make sure the in-memory log buffer is large
+ enough that no transaction will ever span the entire buffer. Also, avoid a
+ state where the in-memory buffer is full and no space can be freed because a
+ transaction that started the first log "file" is still active.
+ </p>
+ <p>
+ How much log buffer space is required is a function of the number of
+ transactions you have running concurrently, how long they last, and how much
+ write activity occurs within them. When in-memory logging is configured, the
+ default log buffer space is 1 MB.
+ </p>
+ <p>
+ You set your log buffer space using the
+ <tt class="methodname">DB_ENV-&gt;set_lg_bsize()</tt>.
+ </p>
+ <p>
+ For example, the following code fragment configure in-memory log usage, and
+ it configures the log buffer size to 10 MB:
+ </p>
+ <pre class="programlisting">#include "db.h"
+
+...
+
+ int ret, ret_c;
+ u_int32_t env_flags; /* For open flags */
+ DB_ENV *envp; /* Environment handle */
+
+...
+
+ /* Initialize the ENV handle */
+ ret = db_env_create(&amp;envp, 0);
+ if (ret != 0) {
+ fprintf(stderr, "Error creating environment handle: %s\n",
+ db_strerror(ret));
+ goto err;
+ }
+
+ /*
+ * Environment flags. These are for a non-threaded
+ * in-memory application.
+ */
+ env_flags =
+ DB_CREATE | /* Create the environment if it does not exist */
+ DB_INIT_LOCK | /* Initialize the locking subsystem */
+ DB_INIT_LOG | /* Initialize the logging subsystem */
+ DB_INIT_TXN | /* Initialize the transactional subsystem. This
+ * also turns on logging. */
+ DB_INIT_MPOOL | /* Initialize the memory pool (in-memory cache) */
+ DB_PRIVATE | /* Region files are not backed by the filesystem.
+ * Instead, they are backed by heap memory. */
+
+
+ <b class="userinput"><tt>/* Specify in-memory logging */
+ ret = envp-&gt;set_flags(envp, DB_LOG_INMEMORY, 1);
+ if (ret != 0) {
+ fprintf(stderr, "Error setting log subsystem to in-memory: %s\n",
+ db_strerror(ret));
+ goto err;
+ }
+
+ /*
+ * Specify the size of the in-memory log buffer.
+ */
+ ret = envp-&gt;set_lg_bsize(envp, 10 * 1024 * 1024);
+ if (ret != 0) {
+ fprintf(stderr, "Error increasing the log buffer size: %s\n",
+ db_strerror(ret));
+ goto err;
+ }</tt></b>
+
+ /*
+ * Now open the environment. Notice that we do not provide a location
+ * for the environment's home directory. This is required for an
+ * in-memory only application.
+ */
+ ret = envp-&gt;open(envp, NULL, env_flags, 0);
+ if (ret != 0) {
+ fprintf(stderr, "Error opening environment: %s\n",
+ db_strerror(ret));
+ goto err;
+ }
+
+err:
+ /* Close the environment */
+ if (envp != NULL) {
+ ret_c = envp-&gt;close(envp, 0);
+ if (ret_c != 0) {
+ fprintf(stderr, "environment close failed: %s\n",
+ db_strerror(ret_c));
+ ret = ret_c
+ }
+ } </pre>
+ </div>
+ <div class="sect1" lang="en" xml:lang="en">
+ <div class="titlepage">
+ <div>
+ <div>
+ <h2 class="title" style="clear: both"><a id="example_in-mem"></a>Example In-Memory Application</h2>
+ </div>
+ </div>
+ <div></div>
+ </div>
+ <p>
+ The following brief example illustrates how to open
+ an application that is entirely in-memory. The
+ application opens an environment and a single
+ database, and does this in a way that the database
+ is transaction-protected.
+ </p>
+ <p>
+ Transactions can be
+ desirable for an in-memory application even though
+ you discard your durability guarantees, because of
+ the other things that transactions offer such as
+ atomicity and isolation.
+ </p>
+ <p>
+ Notice that the example does nothing other than
+ open and close the environment and database. DB
+ database reads and writes work identically between
+ in-memory-only and durable applications (that is,
+ applications that write database application to
+ durable storage). Consequently, there is no point
+ in illustrating those actions here.
+ </p>
+ <pre class="programlisting">/* We assume an ANSI-compatible compiler */
+#include &lt;stdio.h&gt;
+#include &lt;stdlib.h&gt;
+#include &lt;string.h&gt;
+#include &lt;db.h&gt;
+
+
+int
+main(void)
+{
+ /* Initialize our handles */
+ DB *dbp = NULL;
+ DB_ENV *envp = NULL;
+ DB_MPOOLFILE *mpf = NULL;
+
+ int ret, ret_t;
+ const char *db_name = "in_mem_db1";
+ u_int32_t open_flags;
+
+ /* Create the environment */
+ ret = db_env_create(&amp;envp, 0);
+ if (ret != 0) {
+ fprintf(stderr, "Error creating environment handle: %s\n",
+ db_strerror(ret));
+ goto err;
+ }
+
+ open_flags =
+ DB_CREATE | /* Create the environment if it does not exist */
+ DB_INIT_LOCK | /* Initialize the locking subsystem */
+ DB_INIT_LOG | /* Initialize the logging subsystem */
+ DB_INIT_MPOOL | /* Initialize the memory pool (in-memory cache) */
+ DB_INIT_TXN |
+ DB_PRIVATE; /* Region files are not backed by the filesystem.
+ * Instead, they are backed by heap memory. */
+
+ /* Specify in-memory logging */
+ ret = envp-&gt;set_flags(envp, DB_LOG_INMEMORY, 1);
+ if (ret != 0) {
+ fprintf(stderr, "Error setting log subsystem to in-memory: %s\n",
+ db_strerror(ret));
+ goto err;
+ }
+ /*
+ * Specify the size of the in-memory log buffer.
+ */
+ ret = envp-&gt;set_lg_bsize(envp, 10 * 1024 * 1024);
+ if (ret != 0) {
+ fprintf(stderr, "Error increasing the log buffer size: %s\n",
+ db_strerror(ret));
+ goto err;
+ }
+
+ /*
+ * Specify the size of the in-memory cache.
+ */
+ ret = envp-&gt;set_cachesize(envp, 0, 10 * 1024 * 1024, 1);
+ if (ret != 0) {
+ fprintf(stderr, "Error increasing the cache size: %s\n",
+ db_strerror(ret));
+ goto err;
+ }
+
+ /*
+ * Now actually open the environment. Notice that the environment home
+ * directory is NULL. This is required for an in-memory only
+ * application.
+ */
+ ret = envp-&gt;open(envp, NULL, open_flags, 0);
+ if (ret != 0) {
+ fprintf(stderr, "Error opening environment: %s\n",
+ db_strerror(ret));
+ goto err;
+ }
+
+
+ /* Initialize the DB handle */
+ ret = db_create(&amp;dbp, envp, 0);
+ if (ret != 0) {
+ envp-&gt;err(envp, ret,
+ "Attempt to create db handle failed.");
+ goto err;
+ }
+
+
+ /*
+ * Set the database open flags. Autocommit is used because we are
+ * transactional.
+ */
+ open_flags = DB_CREATE | DB_AUTO_COMMIT;
+ ret = dbp-&gt;open(dbp, /* Pointer to the database */
+ NULL, /* Txn pointer */
+ NULL, /* File name -- Must be NULL for inmemory! */
+ db_name, /* Logical db name */
+ DB_BTREE, /* Database type (using btree) */
+ open_flags, /* Open flags */
+ 0); /* File mode. Using defaults */
+
+ if (ret != 0) {
+ envp-&gt;err(envp, ret,
+ "Attempt to open db failed.");
+ goto err;
+ }
+
+ /* Configure the cache file */
+ mpf = dbp-&gt;get_mpf(dbp);
+ ret = mpf-&gt;set_flags(mpf, DB_MPOOL_NOFILE, 1);
+
+ if (ret != 0) {
+ envp-&gt;err(envp, ret,
+ "Attempt failed to configure for no backing of temp files.");
+ goto err;
+ }
+
+err:
+ /* Close our database handle, if it was opened. */
+ if (dbp != NULL) {
+ ret_t = dbp-&gt;close(dbp, 0);
+ if (ret_t != 0) {
+ fprintf(stderr, "%s database close failed.\n",
+ db_strerror(ret_t));
+ ret = ret_t;
+ }
+ }
+
+ /* Close our environment, if it was opened. */
+ if (envp != NULL) {
+ ret_t = envp-&gt;close(envp, 0);
+ if (ret_t != 0) {
+ fprintf(stderr, "environment close failed: %s\n",
+ db_strerror(ret_t));
+ ret = ret_t;
+ }
+ }
+
+ /* Final status message and return. */
+ printf("I'm all done.\n");
+ return (ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE);
+} </pre>
+ </div>
+ </div>
+ <div class="navfooter">
+ <hr />
+ </div>
+ </body>
+</html>
diff --git a/db/docs/collections/tutorial/BasicProgram.html b/db/docs/collections/tutorial/BasicProgram.html
index b1e276e8b..def1a5bd6 100644
--- a/db/docs/collections/tutorial/BasicProgram.html
+++ b/db/docs/collections/tutorial/BasicProgram.html
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <title>Chapter 2. 
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Chapter 2. 
The Basic Program
</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
@@ -17,14 +17,14 @@
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
- <th colspan="3" align="center">Chapter 2. 
+ <th colspan="3" align="center">Chapter 2. 
The Basic Program
</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="tutorialintroduction.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="opendbenvironment.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="tutorialintroduction.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="opendbenvironment.html">Next</a></td>
</tr>
</table>
<hr />
@@ -33,7 +33,7 @@
<div class="titlepage">
<div>
<div>
- <h2 class="title"><a id="BasicProgram"></a>Chapter 2. 
+ <h2 class="title"><a id="BasicProgram"></a>Chapter 2. 
The Basic Program
</h2>
</div>
@@ -138,8 +138,8 @@
<div></div>
</div>
<p>
- The key and value classes for each type of shipment record &#8212;
- Parts, Suppliers and Shipments &#8212; are defined as ordinary Java
+ The key and value classes for each type of shipment record —
+ Parts, Suppliers and Shipments — are defined as ordinary Java
classes. In this example the serialized form of the key and value
objects is stored directly in the database. Therefore these classes
must implement the standard Java java.io.Serializable interface. A
@@ -207,7 +207,7 @@ public class PartKey implements Serializable
}
public String toString() {
- return &quot;[PartKey: number=&quot; + number + ']';
+ return "[PartKey: number=" + number + ']';
}
}</tt></b> </pre>
<p>
@@ -254,10 +254,10 @@ public class PartData implements Serializable
public String toString()
{
- return &quot;[PartData: name=&quot; + name +
- &quot; color=&quot; + color +
- &quot; weight=&quot; + weight +
- &quot; city=&quot; + city + ']';
+ return "[PartData: name=" + name +
+ " color=" + color +
+ " weight=" + weight +
+ " city=" + city + ']';
}
}</tt></b> </pre>
<p>
@@ -271,8 +271,8 @@ public class PartData implements Serializable
public class Weight implements Serializable
{
- public final static String GRAMS = &quot;grams&quot;;
- public final static String OUNCES = &quot;ounces&quot;;
+ public final static String GRAMS = "grams";
+ public final static String OUNCES = "ounces";
private double amount;
private String units;
@@ -295,7 +295,7 @@ public class Weight implements Serializable
public String toString()
{
- return &quot;[&quot; + amount + ' ' + units + ']';
+ return "[" + amount + ' ' + units + ']';
}
}</tt></b> </pre>
<p>
@@ -321,7 +321,7 @@ public class SupplierKey implements Serializable
public String toString()
{
- return &quot;[SupplierKey: number=&quot; + number + ']';
+ return "[SupplierKey: number=" + number + ']';
}
}</tt></b> </pre>
<p>
@@ -361,9 +361,9 @@ public class SupplierData implements Serializable
public String toString()
{
- return &quot;[SupplierData: name=&quot; + name +
- &quot; status=&quot; + status +
- &quot; city=&quot; + city + ']';
+ return "[SupplierData: name=" + name +
+ " status=" + status +
+ " city=" + city + ']';
}
}</tt></b>
</pre>
@@ -397,8 +397,8 @@ public class ShipmentKey implements Serializable
public String toString()
{
- return &quot;[ShipmentKey: supplier=&quot; + supplierNumber +
- &quot; part=&quot; + partNumber + ']';
+ return "[ShipmentKey: supplier=" + supplierNumber +
+ " part=" + partNumber + ']';
}
}</tt></b> </pre>
<p>
@@ -427,7 +427,7 @@ public class ShipmentData implements Serializable
public String toString()
{
- return &quot;[ShipmentData: quantity=&quot; + quantity + ']';
+ return "[ShipmentData: quantity=" + quantity + ']';
}
}</tt></b> </pre>
</div>
@@ -436,18 +436,18 @@ public class ShipmentData implements Serializable
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="tutorialintroduction.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="tutorialintroduction.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="opendbenvironment.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="opendbenvironment.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Tutorial Introduction </td>
+ <td width="40%" align="left" valign="top">Tutorial Introduction </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> 
+ <td width="40%" align="right" valign="top"> 
Opening and Closing the Database Environment
</td>
</tr>
diff --git a/db/docs/collections/tutorial/BerkeleyDB-Java-Collections.pdf b/db/docs/collections/tutorial/BerkeleyDB-Java-Collections.pdf
index 1858c36f0..cc6998479 100644
--- a/db/docs/collections/tutorial/BerkeleyDB-Java-Collections.pdf
+++ b/db/docs/collections/tutorial/BerkeleyDB-Java-Collections.pdf
Binary files differ
diff --git a/db/docs/collections/tutorial/Entity.html b/db/docs/collections/tutorial/Entity.html
index 57ec58187..c085ea785 100644
--- a/db/docs/collections/tutorial/Entity.html
+++ b/db/docs/collections/tutorial/Entity.html
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <title>Chapter 4. 
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Chapter 4. 
Using Entity Classes
</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
@@ -17,14 +17,14 @@
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
- <th colspan="3" align="center">Chapter 4. 
+ <th colspan="3" align="center">Chapter 4. 
Using Entity Classes
</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="retrievingbyindexkey.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="creatingentitybindings.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="retrievingbyindexkey.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="creatingentitybindings.html">Next</a></td>
</tr>
</table>
<hr />
@@ -33,7 +33,7 @@
<div class="titlepage">
<div>
<div>
- <h2 class="title"><a id="Entity"></a>Chapter 4. 
+ <h2 class="title"><a id="Entity"></a>Chapter 4. 
Using Entity Classes
</h2>
</div>
@@ -118,10 +118,10 @@
before writing it to a collection. But this would detract from the
convenience of the using the Java collections API. It is convenient
to obtain a <tt class="classname">Part</tt> object directly from
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#get" target="_top">Map.get</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#get" target="_top">Map.get</a>
and to add a <tt class="classname">Part</tt> object using
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#add" target="_top">Set.add</a>.
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#add" target="_top">Set.add</a>.
Collections having entity bindings can be used naturally without
combining and splitting objects each time a collection method is
called; however, an entity binding class must be defined by the
@@ -136,7 +136,7 @@
bindings, but the <tt class="classname">SampleDatabase</tt> class was not changed at
all. In fact, the Entity program and the Index program can be used
interchangeably to access the same physical database files. This
- demonstrates that bindings are only a &quot;view&quot; onto the physical
+ demonstrates that bindings are only a "view" onto the physical
stored data.
</p>
<p>
@@ -183,7 +183,7 @@
An important difference between the entity classes defined here
and the key and value classes defined earlier is that the entity
classes are not serializable (do not implement the
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/io/Serializable.html" target="_top">Serializable</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Serializable.html" target="_top">Serializable</a>
interface). This is because the entity classes are not directly
stored. The entity binding decomposes an entity object into key and
@@ -243,11 +243,11 @@
public String toString()
{
- return &quot;Part: number=&quot; + number +
- &quot; name=&quot; + name +
- &quot; color=&quot; + color +
- &quot; weight=&quot; + weight +
- &quot; city=&quot; + city + '.';
+ return "Part: number=" + number +
+ " name=" + name +
+ " color=" + color +
+ " weight=" + weight +
+ " city=" + city + '.';
}
}</tt></b> </pre>
<a id="entity_supplier"></a>
@@ -288,10 +288,10 @@
public String toString()
{
- return &quot;Supplier: number=&quot; + number +
- &quot; name=&quot; + name +
- &quot; status=&quot; + status +
- &quot; city=&quot; + city + '.';
+ return "Supplier: number=" + number +
+ " name=" + name +
+ " status=" + status +
+ " city=" + city + '.';
}
} </tt></b> </pre>
<a id="entity_shipment"></a>
@@ -325,9 +325,9 @@
public String toString()
{
- return &quot;Shipment: part=&quot; + partNumber +
- &quot; supplier=&quot; + supplierNumber +
- &quot; quantity=&quot; + quantity + '.';
+ return "Shipment: part=" + partNumber +
+ " supplier=" + supplierNumber +
+ " quantity=" + quantity + '.';
}
} </tt></b> </pre>
</div>
@@ -336,20 +336,20 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="retrievingbyindexkey.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="retrievingbyindexkey.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="creatingentitybindings.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="creatingentitybindings.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">
Retrieving Items by Index Key
-  </td>
+  </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> 
+ <td width="40%" align="right" valign="top"> 
Creating Entity Bindings
</td>
</tr>
diff --git a/db/docs/collections/tutorial/SerializableEntity.html b/db/docs/collections/tutorial/SerializableEntity.html
index a9221e202..939ba38f5 100644
--- a/db/docs/collections/tutorial/SerializableEntity.html
+++ b/db/docs/collections/tutorial/SerializableEntity.html
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <title>Chapter 6. 
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Chapter 6. 
Using Serializable Entities
</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
@@ -17,14 +17,14 @@
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
- <th colspan="3" align="center">Chapter 6. 
+ <th colspan="3" align="center">Chapter 6. 
Using Serializable Entities
</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="sortedcollections.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="transientfieldsinbinding.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="sortedcollections.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="transientfieldsinbinding.html">Next</a></td>
</tr>
</table>
<hr />
@@ -33,7 +33,7 @@
<div class="titlepage">
<div>
<div>
- <h2 class="title"><a id="SerializableEntity"></a>Chapter 6. 
+ <h2 class="title"><a id="SerializableEntity"></a>Chapter 6. 
Using Serializable Entities
</h2>
</div>
@@ -220,11 +220,11 @@ public class Part <b class="userinput"><tt>implements Serializable</tt></b>
public String toString()
{
- return &quot;Part: number=&quot; + number +
- &quot; name=&quot; + name +
- &quot; color=&quot; + color +
- &quot; weight=&quot; + weight +
- &quot; city=&quot; + city + '.';
+ return "Part: number=" + number +
+ " name=" + name +
+ " color=" + color +
+ " weight=" + weight +
+ " city=" + city + '.';
}
}
...
@@ -270,10 +270,10 @@ public class Supplier <b class="userinput"><tt>implements Serializable</tt></b>
public String toString()
{
- return &quot;Supplier: number=&quot; + number +
- &quot; name=&quot; + name +
- &quot; status=&quot; + status +
- &quot; city=&quot; + city + '.';
+ return "Supplier: number=" + number +
+ " name=" + name +
+ " status=" + status +
+ " city=" + city + '.';
}
}
...
@@ -313,9 +313,9 @@ public class Shipment <b class="userinput"><tt>implements Serializable</tt></b>
public String toString()
{
- return &quot;Shipment: part=&quot; + partNumber +
- &quot; supplier=&quot; + supplierNumber +
- &quot; quantity=&quot; + quantity + '.';
+ return "Shipment: part=" + partNumber +
+ " supplier=" + supplierNumber +
+ " quantity=" + quantity + '.';
}
}
</pre>
@@ -325,20 +325,20 @@ public class Shipment <b class="userinput"><tt>implements Serializable</tt></b>
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="sortedcollections.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="sortedcollections.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="transientfieldsinbinding.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="transientfieldsinbinding.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">
Using Sorted Collections
-  </td>
+  </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> 
+ <td width="40%" align="right" valign="top"> 
Using Transient Fields in an Entity Binding
</td>
</tr>
diff --git a/db/docs/collections/tutorial/SerializedObjectStorage.html b/db/docs/collections/tutorial/SerializedObjectStorage.html
index bb088dae7..e29772171 100644
--- a/db/docs/collections/tutorial/SerializedObjectStorage.html
+++ b/db/docs/collections/tutorial/SerializedObjectStorage.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>
Serialized Object Storage
</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Berkeley DB Collections Tutorial" />
- <link rel="up" href="collectionOverview.html" title="Appendix A. &#10; API Notes and Details&#10; " />
+ <link rel="up" href="collectionOverview.html" title="Appendix A. &#10; API Notes and Details&#10; " />
<link rel="previous" href="UsingStoredCollections.html" title="&#10; Using Stored Collections&#10; " />
</head>
<body>
@@ -21,11 +21,11 @@
</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="UsingStoredCollections.html">Prev</a> </td>
- <th width="60%" align="center">Appendix A. 
+ <td width="20%" align="left"><a accesskey="p" href="UsingStoredCollections.html">Prev</a> </td>
+ <th width="60%" align="center">Appendix A. 
API Notes and Details
</th>
- <td width="20%" align="right"> </td>
+ <td width="20%" align="right"> </td>
</tr>
</table>
<hr />
@@ -63,20 +63,20 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="UsingStoredCollections.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="UsingStoredCollections.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="collectionOverview.html">Up</a>
</td>
- <td width="40%" align="right"> </td>
+ <td width="40%" align="right"> </td>
</tr>
<tr>
<td width="40%" align="left" valign="top">
Using Stored Collections
-  </td>
+  </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> </td>
+ <td width="40%" align="right" valign="top"> </td>
</tr>
</table>
</div>
diff --git a/db/docs/collections/tutorial/Summary.html b/db/docs/collections/tutorial/Summary.html
index 529e0fef4..c33f880e1 100644
--- a/db/docs/collections/tutorial/Summary.html
+++ b/db/docs/collections/tutorial/Summary.html
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <title>Chapter 7. 
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Chapter 7. 
Summary
</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
@@ -11,20 +11,20 @@
<link rel="home" href="index.html" title="Berkeley DB Collections Tutorial" />
<link rel="up" href="index.html" title="Berkeley DB Collections Tutorial" />
<link rel="previous" href="removingredundantvalueclasses.html" title="&#10;&#9;&#9;Removing the Redundant Value Classes&#10;&#9;" />
- <link rel="next" href="collectionOverview.html" title="Appendix A. &#10; API Notes and Details&#10; " />
+ <link rel="next" href="collectionOverview.html" title="Appendix A. &#10; API Notes and Details&#10; " />
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
- <th colspan="3" align="center">Chapter 7. 
+ <th colspan="3" align="center">Chapter 7. 
Summary
</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="removingredundantvalueclasses.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="collectionOverview.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="removingredundantvalueclasses.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="collectionOverview.html">Next</a></td>
</tr>
</table>
<hr />
@@ -33,7 +33,7 @@
<div class="titlepage">
<div>
<div>
- <h2 class="title"><a id="Summary"></a>Chapter 7. 
+ <h2 class="title"><a id="Summary"></a>Chapter 7. 
Summary
</h2>
</div>
@@ -41,9 +41,9 @@
<div></div>
</div>
<p>
- In summary, the Java Collections API tutorial has
+ In summary, the DB Java Collections API tutorial has
demonstrated how to create different types of bindings, as well as
- how to use the basic facilities of the Java Collections API:
+ how to use the basic facilities of the DB Java Collections API:
the environment, databases, secondary indices, collections, and
transactions. The final approach illustrated by the last example
program, Serializable Entity, uses tuple keys and serial entity
@@ -142,7 +142,7 @@
</p>
<p>
Internal bindings are called <span class="emphasis"><em>marshalled bindings</em></span> in the
- Java Collections API, and in this model each data class
+ DB Java Collections API, and in this model each data class
implements a marshalling interface. A single external binding class
that understands the marshalling interface is used to call the
internal bindings of each data object, and therefore the overall
@@ -170,20 +170,20 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="removingredundantvalueclasses.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="removingredundantvalueclasses.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="collectionOverview.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="collectionOverview.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">
Removing the Redundant Value Classes
-  </td>
+  </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Appendix A. 
+ <td width="40%" align="right" valign="top"> Appendix A. 
API Notes and Details
</td>
</tr>
diff --git a/db/docs/collections/tutorial/Tuple.html b/db/docs/collections/tutorial/Tuple.html
index d5965430b..c057d5521 100644
--- a/db/docs/collections/tutorial/Tuple.html
+++ b/db/docs/collections/tutorial/Tuple.html
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <title>Chapter 5. 
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Chapter 5. 
Using Tuples
</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
@@ -17,14 +17,14 @@
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
- <th colspan="3" align="center">Chapter 5. 
+ <th colspan="3" align="center">Chapter 5. 
Using Tuples
</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="entitieswithcollections.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="tupleswithkeycreators.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="entitieswithcollections.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="tupleswithkeycreators.html">Next</a></td>
</tr>
</table>
<hr />
@@ -33,7 +33,7 @@
<div class="titlepage">
<div>
<div>
- <h2 class="title"><a id="Tuple"></a>Chapter 5. 
+ <h2 class="title"><a id="Tuple"></a>Chapter 5. 
Using Tuples
</h2>
</div>
@@ -83,7 +83,7 @@ Creating Tuple-Serial Entity Bindings
</dl>
</div>
<p>
- Java Collections API <span class="emphasis"><em>tuples</em></span> are sequences of
+ DB Java Collections API <span class="emphasis"><em>tuples</em></span> are sequences of
primitive Java data types, for example, integers and strings. The
<span class="emphasis"><em>tuple format</em></span> is a binary format for tuples that can be used
to store keys and/or values.
@@ -141,17 +141,17 @@ Creating Tuple-Serial Entity Bindings
Tuples are sequences of primitive Java values that can be
written to, and read from, the raw data bytes of a stored record.
The primitive values are written or read one at a time in sequence,
- using the Java Collections API
+ using the DB Java Collections API
<a href="../../java/com/sleepycat/bind/tuple/TupleInput.html" target="_top">TupleInput</a>
and
<a href="../../java/com/sleepycat/bind/tuple/TupleOutput.html" target="_top">TupleOutput</a>
classes. These classes are very similar to the standard Java
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/io/DataInput.html" target="_top">DataInput</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/io/DataInput.html" target="_top">DataInput</a>
and
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/io/DataOutput.html" target="_top">DataOutput</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/io/DataOutput.html" target="_top">DataOutput</a>
interfaces. The primary difference is the binary format of the
data, which is designed for sorting in the case of tuples.
@@ -189,20 +189,20 @@ output.writeString(supplierNumber); </tt></b> </pre>
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="entitieswithcollections.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="entitieswithcollections.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="tupleswithkeycreators.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="tupleswithkeycreators.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">
Using Entities with Collections
-  </td>
+  </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> 
+ <td width="40%" align="right" valign="top"> 
Using Tuples with Key Creators
</td>
</tr>
diff --git a/db/docs/collections/tutorial/UsingCollectionsAPI.html b/db/docs/collections/tutorial/UsingCollectionsAPI.html
index 34236b7bd..2ac358002 100644
--- a/db/docs/collections/tutorial/UsingCollectionsAPI.html
+++ b/db/docs/collections/tutorial/UsingCollectionsAPI.html
@@ -1,16 +1,16 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>
- Using the Java Collections API
+ Using the DB Java Collections API
</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Berkeley DB Collections Tutorial" />
- <link rel="up" href="collectionOverview.html" title="Appendix A. &#10; API Notes and Details&#10; " />
- <link rel="previous" href="collectionOverview.html" title="Appendix A. &#10; API Notes and Details&#10; " />
+ <link rel="up" href="collectionOverview.html" title="Appendix A. &#10; API Notes and Details&#10; " />
+ <link rel="previous" href="collectionOverview.html" title="Appendix A. &#10; API Notes and Details&#10; " />
<link rel="next" href="UsingStoredCollections.html" title="&#10; Using Stored Collections&#10; " />
</head>
<body>
@@ -18,15 +18,15 @@
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">
- Using the Java Collections API
+ Using the DB Java Collections API
</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="collectionOverview.html">Prev</a> </td>
- <th width="60%" align="center">Appendix A. 
+ <td width="20%" align="left"><a accesskey="p" href="collectionOverview.html">Prev</a> </td>
+ <th width="60%" align="center">Appendix A. 
API Notes and Details
</th>
- <td width="20%" align="right"> <a accesskey="n" href="UsingStoredCollections.html">Next</a></td>
+ <td width="20%" align="right"> <a accesskey="n" href="UsingStoredCollections.html">Next</a></td>
</tr>
</table>
<hr />
@@ -36,7 +36,7 @@
<div>
<div>
<h2 class="title" style="clear: both"><a id="UsingCollectionsAPI"></a>
- Using the Java Collections API
+ Using the DB Java Collections API
</h2>
</div>
</div>
@@ -86,7 +86,7 @@
more stored collections, you are ready to access (read and write)
stored data. For a transactional environment, a transaction must be
started before accessing data, and must be committed or aborted
- after access is complete. The Java Collections API provides several
+ after access is complete. The DB Java Collections API provides several
ways of managing transactions.
</p>
<p>
@@ -175,7 +175,7 @@
environment.
</p>
<p>
- The Java Collections API supports nested transactions. If
+ The DB Java Collections API supports nested transactions. If
<a href="../../java/com/sleepycat/collections/TransactionRunner.html#run(com.sleepycat.collections.TransactionWorker)" target="_top">TransactionRunner.run(com.sleepycat.collections.TransactionWorker)</a>
or
@@ -197,12 +197,12 @@
is active.
</p>
<p>
- The Java Collections API supports transaction auto-commit.
+ The DB Java Collections API supports transaction auto-commit.
If no transaction is active and a write operation is requested for
a transactional database, auto-commit is used automatically.
</p>
<p>
- The Java Collections API also supports transaction
+ The DB Java Collections API also supports transaction
dirty-read via the
<a href="../../java/com/sleepycat/collections/StoredCollections.html" target="_top">StoredCollections</a>
@@ -230,9 +230,9 @@
<p>
When a transaction is aborted (or rolled back) the application
is responsible for discarding references to any data objects that
- were modified during the transaction. Since the Java Collections API
+ were modified during the transaction. Since the DB Java Collections API
treats data by value, not by reference, neither the data
- objects nor the Java Collections API objects contain status
+ objects nor the DB Java Collections API objects contain status
information indicating whether the data objects are 1- in sync with
the database, 2- dirty (contain changes that have not been written
to the database), 3- stale (were read previously but have become
@@ -553,7 +553,7 @@
<p>
If duplicates are allowed then more than one value may be
associated with the same key. This means that the data store cannot
- be strictly considered a map &#8212; it is really a multi-map. See
+ be strictly considered a map — it is really a multi-map. See
<a href="UsingStoredCollections.html">
Using Stored Collections
</a>
@@ -569,7 +569,7 @@
<li>
<p>
For secondary indices with duplicates, the duplicates must be
- sorted. This restriction is imposed by the Java Collections API.
+ sorted. This restriction is imposed by the DB Java Collections API.
</p>
</li>
<li>
@@ -613,20 +613,20 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="collectionOverview.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="collectionOverview.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="collectionOverview.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="UsingStoredCollections.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="UsingStoredCollections.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Appendix A. 
+ <td width="40%" align="left" valign="top">Appendix A. 
API Notes and Details
-  </td>
+  </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> 
+ <td width="40%" align="right" valign="top"> 
Using Stored Collections
</td>
</tr>
diff --git a/db/docs/collections/tutorial/UsingSecondaries.html b/db/docs/collections/tutorial/UsingSecondaries.html
index 35fb50ef7..4bddc9f45 100644
--- a/db/docs/collections/tutorial/UsingSecondaries.html
+++ b/db/docs/collections/tutorial/UsingSecondaries.html
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <title>Chapter 3. 
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Chapter 3. 
Using Secondary Indices
</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
@@ -17,14 +17,14 @@
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
- <th colspan="3" align="center">Chapter 3. 
+ <th colspan="3" align="center">Chapter 3. 
Using Secondary Indices
</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="handlingexceptions.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="openingforeignkeys.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="handlingexceptions.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="openingforeignkeys.html">Next</a></td>
</tr>
</table>
<hr />
@@ -33,7 +33,7 @@
<div class="titlepage">
<div>
<div>
- <h2 class="title"><a id="UsingSecondaries"></a>Chapter 3. 
+ <h2 class="title"><a id="UsingSecondaries"></a>Chapter 3. 
Using Secondary Indices
</h2>
</div>
@@ -201,7 +201,7 @@ import com.sleepycat.db.SecondaryDatabase;</tt></b>
public class SampleDatabase
{
...
-<b class="userinput"><tt> private static final String SUPPLIER_CITY_INDEX = &quot;supplier_city_index&quot;;
+<b class="userinput"><tt> private static final String SUPPLIER_CITY_INDEX = "supplier_city_index";
...
private SecondaryDatabase supplierByCityDb;
...</tt></b>
@@ -357,7 +357,7 @@ public class SampleDatabase
base class is used because the database record uses the serial
format for both its key and its value. The abstract methods of this
class have key and value parameters of type
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" target="_top">Object</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" target="_top">Object</a>
which are automatically converted to and from the raw record data
by the base class.
@@ -433,20 +433,20 @@ public class SampleDatabase
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="handlingexceptions.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="handlingexceptions.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="openingforeignkeys.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="openingforeignkeys.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">
Handling Exceptions
-  </td>
+  </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> 
+ <td width="40%" align="right" valign="top"> 
More Secondary Key Indices
</td>
diff --git a/db/docs/collections/tutorial/UsingStoredCollections.html b/db/docs/collections/tutorial/UsingStoredCollections.html
index 37fdc6096..f79826d3b 100644
--- a/db/docs/collections/tutorial/UsingStoredCollections.html
+++ b/db/docs/collections/tutorial/UsingStoredCollections.html
@@ -1,16 +1,16 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>
Using Stored Collections
</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Berkeley DB Collections Tutorial" />
- <link rel="up" href="collectionOverview.html" title="Appendix A. &#10; API Notes and Details&#10; " />
- <link rel="previous" href="UsingCollectionsAPI.html" title="&#10; Using the Java Collections API&#10; " />
+ <link rel="up" href="collectionOverview.html" title="Appendix A. &#10; API Notes and Details&#10; " />
+ <link rel="previous" href="UsingCollectionsAPI.html" title="&#10; Using the DB Java Collections API&#10; " />
<link rel="next" href="SerializedObjectStorage.html" title="&#10; Serialized Object Storage&#10; " />
</head>
<body>
@@ -22,11 +22,11 @@
</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="UsingCollectionsAPI.html">Prev</a> </td>
- <th width="60%" align="center">Appendix A. 
+ <td width="20%" align="left"><a accesskey="p" href="UsingCollectionsAPI.html">Prev</a> </td>
+ <th width="60%" align="center">Appendix A. 
API Notes and Details
</th>
- <td width="20%" align="right"> <a accesskey="n" href="SerializedObjectStorage.html">Next</a></td>
+ <td width="20%" align="right"> <a accesskey="n" href="SerializedObjectStorage.html">Next</a></td>
</tr>
</table>
<hr />
@@ -74,10 +74,10 @@
described below.
<span>
Most of these restrictions have to do with
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html" target="_top">List</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" target="_top">List</a>
interfaces; for
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html" target="_top">Map</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" target="_top">Map</a>
interfaces, most all access modes are fully supported since the
Berkeley DB model is map-like.
@@ -87,10 +87,10 @@
<ul type="disc">
<li>
<p>
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" target="_top">SortedSet</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" target="_top">SortedSet</a>
and
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap.html" target="_top">SortedMap</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedMap.html" target="_top">SortedMap</a>
interfaces may only be used if keys are ordered. This means ordered keys are required for creating a
@@ -104,21 +104,21 @@
<li>
<p>
All iterators for stored collections implement the
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/ListIterator.html" target="_top">ListIterator</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/ListIterator.html" target="_top">ListIterator</a>
interface as well as the
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Iterator.html" target="_top">Iterator</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Iterator.html" target="_top">Iterator</a>
interface.
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/ListIterator.html#hasPrevious()" target="_top">ListIterator.hasPrevious()</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/ListIterator.html#hasPrevious()" target="_top">ListIterator.hasPrevious()</a>
and
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/ListIterator.html#previous()" target="_top">ListIterator.previous()</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/ListIterator.html#previous()" target="_top">ListIterator.previous()</a>
work in all cases.
<span>
However, the following
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/ListIterator.html" target="_top">ListIterator</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/ListIterator.html" target="_top">ListIterator</a>
method behavior is dependent on the access method.
</span>
@@ -127,20 +127,20 @@
<ul type="circle">
<li>
<p>
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/ListIterator.html#nextIndex()" target="_top">ListIterator.nextIndex()</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/ListIterator.html#nextIndex()" target="_top">ListIterator.nextIndex()</a>
and
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/ListIterator.html#previousIndex()" target="_top">ListIterator.previousIndex()</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/ListIterator.html#previousIndex()" target="_top">ListIterator.previousIndex()</a>
only work when record number keys are used, and throw
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/lang/UnsupportedOperationException.html" target="_top">UnsupportedOperationException</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/UnsupportedOperationException.html" target="_top">UnsupportedOperationException</a>
otherwise.
</p>
</li>
<li>
<p>
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/ListIterator.html#add()" target="_top">ListIterator.add()</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/ListIterator.html#add()" target="_top">ListIterator.add()</a>
inserts before the current position and renumbers following keys if the RECNO-RENUMBER
access method is used.
@@ -154,17 +154,17 @@
<ul type="disc">
<li>
<p>
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/ListIterator.html#add()" target="_top">ListIterator.add()</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/ListIterator.html#add()" target="_top">ListIterator.add()</a>
throws
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/lang/UnsupportedOperationException.html" target="_top">UnsupportedOperationException</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/UnsupportedOperationException.html" target="_top">UnsupportedOperationException</a>
if duplicates are not allowed.
</p>
</li>
<li>
<p>
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/ListIterator.html#add()" target="_top">ListIterator.add()</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/ListIterator.html#add()" target="_top">ListIterator.add()</a>
inserts a duplicate before the current position
if duplicates are unsorted.
@@ -172,7 +172,7 @@
</li>
<li>
<p>
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/ListIterator.html#add()" target="_top">ListIterator.add()</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/ListIterator.html#add()" target="_top">ListIterator.add()</a>
inserts a duplicate in sorted order if
duplicates are sorted.
@@ -183,10 +183,10 @@
</li>
<li>
<p>
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/ListIterator.html#set()" target="_top">ListIterator.set()</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/ListIterator.html#set()" target="_top">ListIterator.set()</a>
throws
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/lang/UnsupportedOperationException.html" target="_top">UnsupportedOperationException</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/UnsupportedOperationException.html" target="_top">UnsupportedOperationException</a>
if sorted duplicates are configured, since updating with sorted duplicates would change the
iterator position.
@@ -197,10 +197,10 @@
</li>
<li>
<p>
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.Entry.html#setValue()" target="_top">Map.Entry.setValue()</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.Entry.html#setValue()" target="_top">Map.Entry.setValue()</a>
throws
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/lang/UnsupportedOperationException.html" target="_top">UnsupportedOperationException</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/UnsupportedOperationException.html" target="_top">UnsupportedOperationException</a>
if duplicates are sorted.
</p>
@@ -209,7 +209,7 @@
<p>
Only the access methods that use a record number key may be used
with a
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html" target="_top">List</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" target="_top">List</a>
<tt class="classname">List</tt>
view.
</p>
@@ -217,7 +217,7 @@
<li>
<p>
To create a stored List that supports the
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html#add()" target="_top">List.add()</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html#add()" target="_top">List.add()</a>
<tt class="methodname">List.add()</tt>
method, only the RECNO-RENUMBER access method may be used.
</p>
@@ -225,7 +225,7 @@
<li>
<p>
For List access methods that do not support
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html#add()" target="_top">List.add()</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html#add()" target="_top">List.add()</a>
<tt class="methodname">List.add()</tt>
(RECNO, QUEUE, and BTREE-RECNUM):
</p>
@@ -233,21 +233,21 @@
<ul type="circle">
<li>
<p>
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html#add()" target="_top">List.add()</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html#add()" target="_top">List.add()</a>
<tt class="methodname">List.add()</tt>
and
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/ListIterator.html#add()" target="_top">ListIterator.add()</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/ListIterator.html#add()" target="_top">ListIterator.add()</a>
<tt class="methodname">ListIterator.add()</tt>
always throw
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/lang/UnsupportedOperationException.html" target="_top">UnsupportedOperationException</a> .
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/UnsupportedOperationException.html" target="_top">UnsupportedOperationException</a> .
</p>
</li>
<li>
<p>
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html#remove()" target="_top">List.remove()</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html#remove()" target="_top">List.remove()</a>
<tt class="methodname">List.remove()</tt>
and
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/ListIterator.html#remove()" target="_top">ListIterator.remove()</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/ListIterator.html#remove()" target="_top">ListIterator.remove()</a>
<tt class="methodname">ListIterator.remove()</tt>
do not cause list indices to be renumbered. However, iterators will skip
the removed values.
@@ -264,7 +264,7 @@
<li>
<p>
When duplicates are allowed the
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" target="_top">Collection</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" target="_top">Collection</a>
interfaces are modified in several ways as described in the next
section.
@@ -298,24 +298,24 @@
<ul type="disc">
<li>
<p>
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#entrySet()" target="_top">Map.entrySet()</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#entrySet()" target="_top">Map.entrySet()</a>
may contain multiple
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.Entry.html" target="_top">Map.Entry</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.Entry.html" target="_top">Map.Entry</a>
objects with the same key.
</p>
</li>
<li>
<p>
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#keySet()" target="_top">Map.keySet()</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#keySet()" target="_top">Map.keySet()</a>
always contains unique keys, it does not contain duplicates.
</p>
</li>
<li>
<p>
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#values()" target="_top">Map.values()</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#values()" target="_top">Map.values()</a>
contains all values including the values
associated with duplicate keys.
@@ -323,7 +323,7 @@
</li>
<li>
<p>
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#put()" target="_top">Map.put()</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#put()" target="_top">Map.put()</a>
appends a duplicate if the key already exists rather than replacing
the existing value, and always returns null.
@@ -331,14 +331,14 @@
</li>
<li>
<p>
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#remove()" target="_top">Map.remove()</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#remove()" target="_top">Map.remove()</a>
removes all duplicates for the specified key.
</p>
</li>
<li>
<p>
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#get()" target="_top">Map.get()</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#get()" target="_top">Map.get()</a>
returns the first duplicate for the specified key.
</p>
@@ -348,7 +348,7 @@
<a href="../../java/com/sleepycat/collections/StoredMap.html#duplicates(java.lang.Object)" target="_top">StoredMap.duplicates()</a>
is an additional method for returning the values for a given key as a
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" target="_top">Collection</a>.
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" target="_top">Collection</a>.
</p>
</li>
</ul>
@@ -360,22 +360,8 @@
<ul type="disc">
<li>
<p>
- All iterators for stored collections must be explicitly closed with
- <a href="../../java/com/sleepycat/collections/StoredIterator.html#close(java.util.Iterator)" target="_top">StoredIterator.close()</a>.
- The static method
- <a href="../../java/com/sleepycat/collections/StoredIterator.html#close(java.util.Iterator)" target="_top">StoredIterator.close()</a>
-
- allows calling close
- for all iterators without harm to iterators that are not from
- stored collections, and also avoids casting. If a stored iterator
- is not closed, unpredictable behavior including process death may
- result.
- </p>
- </li>
- <li>
- <p>
Collection.size() and Map.size() always throws
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/lang/UnsupportedOperationException.html" target="_top">UnsupportedOperationException</a>.
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/UnsupportedOperationException.html" target="_top">UnsupportedOperationException</a>.
This is because the number of
records in a database cannot be determined reliably or
cheaply.
@@ -409,16 +395,16 @@
</li>
<li>
<p>
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Comparator.html" target="_top">Comparator</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Comparator.html" target="_top">Comparator</a>
objects cannot be used and the
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap.html#comparator()" target="_top">SortedMap.comparator()</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedMap.html#comparator()" target="_top">SortedMap.comparator()</a>
and
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html#comparator()" target="_top">SortedSet.comparator()</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html#comparator()" target="_top">SortedSet.comparator()</a>
methods always return null. The
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/lang/Comparable.html" target="_top">Comparable</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Comparable.html" target="_top">Comparable</a>
interface is not supported. However, Comparators that operate on
byte arrays may be specified using
@@ -431,7 +417,7 @@
<li>
<p>
The
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals()" target="_top">Object.equals()</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals()" target="_top">Object.equals()</a>
method is not used to determine whether a key
or value is contained in a collection, to locate a value by key,
@@ -462,7 +448,7 @@
<p>
The following characteristics of stored collections are
extensions of the definitions in the
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/package-summary.html" target="_top">java.util</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/package-summary.html" target="_top">java.util</a>
package. These differences do not violate the Java
collections interface contract.
@@ -480,7 +466,7 @@
Locking is handled by the Berkeley DB
environment. To access a collection from multiple threads, creation
of synchronized collections using the
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Collections.html" target="_top">Collections</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collections.html" target="_top">Collections</a>
class is not necessary
<span>
@@ -494,7 +480,7 @@
All stored collections may be read-only if desired by passing
false for the writeAllowed parameter of their constructor. Creation
of immutable collections using the
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Collections.html" target="_top">Collections</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collections.html" target="_top">Collections</a>
class is not necessary.
</p>
@@ -504,48 +490,48 @@
A stored collection is partially read-only if a secondary
index is used. Specifically, values may be removed but may not be
added or updated. The following methods will throw
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/lang/UnsupportedOperationException.html" target="_top">UnsupportedOperationException</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/UnsupportedOperationException.html" target="_top">UnsupportedOperationException</a>
when an index is used:
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html#add()" target="_top">Collection.add()</a>,
- <span><a href="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html#set()" target="_top">List.set()</a>,</span>
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/ListIterator.html#set()" target="_top">ListIterator.set()</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html#add()" target="_top">Collection.add()</a>,
+ <span><a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html#set()" target="_top">List.set()</a>,</span>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/ListIterator.html#set()" target="_top">ListIterator.set()</a>
and
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.Entry.html#setValue()" target="_top">Map.Entry.setValue()</a>.
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.Entry.html#setValue()" target="_top">Map.Entry.setValue()</a>.
</p>
</li>
<li>
<p>
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap.html#entrySet()" target="_top">SortedMap.entrySet()</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedMap.html#entrySet()" target="_top">SortedMap.entrySet()</a>
and
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap.html#keySet()" target="_top">SortedMap.keySet()</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedMap.html#keySet()" target="_top">SortedMap.keySet()</a>
return a
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" target="_top">SortedSet</a>,
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" target="_top">SortedSet</a>,
not just a
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html" target="_top">Set</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html" target="_top">Set</a>
as specified in Java collections interface. This allows using the
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" target="_top">SortedSet</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" target="_top">SortedSet</a>
methods on the returned collection.
</p>
</li>
<li>
<p>
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap.html#values()" target="_top">SortedMap.values()</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedMap.html#values()" target="_top">SortedMap.values()</a>
returns a
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" target="_top">SortedSet</a>,
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" target="_top">SortedSet</a>,
not just a
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" target="_top">Collection</a>,
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" target="_top">Collection</a>,
whenever the keys of the map can be derived from the values using
an entity binding. Note that the sorted set returned is not really
a set if duplicates are allowed, since it is technically a
collection; however, the
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" target="_top">SortedSet</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" target="_top">SortedSet</a>
methods (for example, subSet()), can still be used.
</p>
@@ -553,10 +539,10 @@
<li>
<p>
For
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" target="_top">SortedSet</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" target="_top">SortedSet</a>
and
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap.html" target="_top">SortedMap</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedMap.html" target="_top">SortedMap</a>
views, additional subSet() and subMap() methods are provided that
allow control over whether keys are treated as inclusive or
@@ -588,16 +574,16 @@
<li>
<p>
All iterators for stored collections implement the
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/ListIterator.html" target="_top">ListIterator</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/ListIterator.html" target="_top">ListIterator</a>
interface as well as the
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Iterator.html" target="_top">Iterator</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Iterator.html" target="_top">Iterator</a>
interface. This is to allow use of the
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/ListIterator.html#hasPrevious()" target="_top">ListIterator.hasPrevious()</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/ListIterator.html#hasPrevious()" target="_top">ListIterator.hasPrevious()</a>
and
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/ListIterator.html#previous()" target="_top">ListIterator.previous()</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/ListIterator.html#previous()" target="_top">ListIterator.previous()</a>
methods, which work for all collections
since Berkeley DB provides bidirectional cursors.
@@ -610,7 +596,7 @@
method that allows creating
a read-only iterator for a writable collection. For the standard
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html#iterator()" target="_top">Collection.iterator()</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html#iterator()" target="_top">Collection.iterator()</a>
method, the iterator is read-only only
when the collection is read-only.
@@ -633,18 +619,18 @@
When an entity binding is used, updating (setting) a value is
not allowed if the key in the entity is not equal to the original
key. For example, calling
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#put()" target="_top">Map.put()</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#put()" target="_top">Map.put()</a>
is not allowed when the key parameter is not equal to the key of
the entity parameter.
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#put()" target="_top">Map.put()</a>,
- <span><a href="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html#set()" target="_top">List.set()</a>,</span>
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/ListIterator.html#set()" target="_top">ListIterator.set()</a>,
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#put()" target="_top">Map.put()</a>,
+ <span><a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html#set()" target="_top">List.set()</a>,</span>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/ListIterator.html#set()" target="_top">ListIterator.set()</a>,
and
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.Entry.html#setValue()" target="_top">Map.Entry.setValue()</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.Entry.html#setValue()" target="_top">Map.Entry.setValue()</a>
will throw
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" target="_top">IllegalArgumentException</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" target="_top">IllegalArgumentException</a>
in this situation.
</p>
@@ -655,13 +641,13 @@
sublists. This is simply an unimplemented feature and may be
changed in the future. Currently for sublists the following
methods throw
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/lang/UnsupportedOperationException.html" target="_top">UnsupportedOperationException</a>:
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html#add()" target="_top">List.add()</a><tt class="methodname">List.add()</tt>,
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html#remove()" target="_top">List.remove()</a><tt class="methodname">List.remove()</tt>,
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/ListIterator.html#add()" target="_top">ListIterator.add()</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/UnsupportedOperationException.html" target="_top">UnsupportedOperationException</a>:
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html#add()" target="_top">List.add()</a><tt class="methodname">List.add()</tt>,
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html#remove()" target="_top">List.remove()</a><tt class="methodname">List.remove()</tt>,
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/ListIterator.html#add()" target="_top">ListIterator.add()</a>
and
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/ListIterator.html#remove()" target="_top">ListIterator.remove()</a><tt class="methodname">ListIterator.remove()</tt>.
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/ListIterator.html#remove()" target="_top">ListIterator.remove()</a><tt class="methodname">ListIterator.remove()</tt>.
</p>
</li>
<li>
@@ -781,20 +767,20 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="UsingCollectionsAPI.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="UsingCollectionsAPI.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="collectionOverview.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="SerializedObjectStorage.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="SerializedObjectStorage.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">
- Using the Java Collections API
-  </td>
+ Using the DB Java Collections API
+  </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> 
+ <td width="40%" align="right" valign="top"> 
Serialized Object Storage
</td>
</tr>
diff --git a/db/docs/collections/tutorial/addingdatabaseitems.html b/db/docs/collections/tutorial/addingdatabaseitems.html
index 53b3b8e84..77a62f71f 100644
--- a/db/docs/collections/tutorial/addingdatabaseitems.html
+++ b/db/docs/collections/tutorial/addingdatabaseitems.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>
Adding Database Items
</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Berkeley DB Collections Tutorial" />
- <link rel="up" href="BasicProgram.html" title="Chapter 2. &#10;&#9;&#9;The Basic Program&#10;&#9;" />
+ <link rel="up" href="BasicProgram.html" title="Chapter 2. &#10;&#9;&#9;The Basic Program&#10;&#9;" />
<link rel="previous" href="usingtransactions.html" title="&#10;&#9;&#9;Using Transactions&#10;&#9;" />
<link rel="next" href="retrievingdatabaseitems.html" title="&#10;&#9;&#9;Retrieving Database Items&#10;&#9;" />
</head>
@@ -22,11 +22,11 @@
</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="usingtransactions.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 2. 
+ <td width="20%" align="left"><a accesskey="p" href="usingtransactions.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 2. 
The Basic Program
</th>
- <td width="20%" align="right"> <a accesskey="n" href="retrievingdatabaseitems.html">Next</a></td>
+ <td width="20%" align="right"> <a accesskey="n" href="retrievingdatabaseitems.html">Next</a></td>
</tr>
</table>
<hr />
@@ -46,10 +46,10 @@
Adding (as well as updating, removing, and deleting) information
in the database is accomplished via the standard Java collections
API. In the example, the
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#put" target="_top">Map.put</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#put" target="_top">Map.put</a>
method is used to add objects. All standard Java methods for
- modifying a collection may be used with the Java Collections API.
+ modifying a collection may be used with the DB Java Collections API.
</p>
<p>
The <tt class="methodname">PopulateDatabase.doWork()</tt> method calls private methods
@@ -96,7 +96,7 @@ public class Sample
The <tt class="methodname">addSuppliers()</tt>, <tt class="methodname">addParts()</tt> and <tt class="methodname">addShipments()</tt>
methods add objects to the Suppliers, Parts and Shipments stores.
The
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html" target="_top">Map</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" target="_top">Map</a>
for each store is obtained from the <tt class="classname">SampleViews</tt> object.
</p>
@@ -106,17 +106,17 @@ public class Sample
<b class="userinput"><tt> Map suppliers = views.getSupplierMap();
if (suppliers.isEmpty())
{
- System.out.println(&quot;Adding Suppliers&quot;);
- suppliers.put(new SupplierKey(&quot;S1&quot;),
- new SupplierData(&quot;Smith&quot;, 20, &quot;London&quot;));
- suppliers.put(new SupplierKey(&quot;S2&quot;),
- new SupplierData(&quot;Jones&quot;, 10, &quot;Paris&quot;));
- suppliers.put(new SupplierKey(&quot;S3&quot;),
- new SupplierData(&quot;Blake&quot;, 30, &quot;Paris&quot;));
- suppliers.put(new SupplierKey(&quot;S4&quot;),
- new SupplierData(&quot;Clark&quot;, 20, &quot;London&quot;));
- suppliers.put(new SupplierKey(&quot;S5&quot;),
- new SupplierData(&quot;Adams&quot;, 30, &quot;Athens&quot;));
+ System.out.println("Adding Suppliers");
+ suppliers.put(new SupplierKey("S1"),
+ new SupplierData("Smith", 20, "London"));
+ suppliers.put(new SupplierKey("S2"),
+ new SupplierData("Jones", 10, "Paris"));
+ suppliers.put(new SupplierKey("S3"),
+ new SupplierData("Blake", 30, "Paris"));
+ suppliers.put(new SupplierKey("S4"),
+ new SupplierData("Clark", 20, "London"));
+ suppliers.put(new SupplierKey("S5"),
+ new SupplierData("Adams", 30, "Athens"));
}</tt></b>
}
@@ -125,31 +125,31 @@ public class Sample
<b class="userinput"><tt> Map parts = views.getPartMap();
if (parts.isEmpty())
{
- System.out.println(&quot;Adding Parts&quot;);
- parts.put(new PartKey(&quot;P1&quot;),
- new PartData(&quot;Nut&quot;, &quot;Red&quot;,
+ System.out.println("Adding Parts");
+ parts.put(new PartKey("P1"),
+ new PartData("Nut", "Red",
new Weight(12.0, Weight.GRAMS),
- &quot;London&quot;));
- parts.put(new PartKey(&quot;P2&quot;),
- new PartData(&quot;Bolt&quot;, &quot;Green&quot;,
+ "London"));
+ parts.put(new PartKey("P2"),
+ new PartData("Bolt", "Green",
new Weight(17.0, Weight.GRAMS),
- &quot;Paris&quot;));
- parts.put(new PartKey(&quot;P3&quot;),
- new PartData(&quot;Screw&quot;, &quot;Blue&quot;,
+ "Paris"));
+ parts.put(new PartKey("P3"),
+ new PartData("Screw", "Blue",
new Weight(17.0, Weight.GRAMS),
- &quot;Rome&quot;));
- parts.put(new PartKey(&quot;P4&quot;),
- new PartData(&quot;Screw&quot;, &quot;Red&quot;,
+ "Rome"));
+ parts.put(new PartKey("P4"),
+ new PartData("Screw", "Red",
new Weight(14.0, Weight.GRAMS),
- &quot;London&quot;));
- parts.put(new PartKey(&quot;P5&quot;),
- new PartData(&quot;Cam&quot;, &quot;Blue&quot;,
+ "London"));
+ parts.put(new PartKey("P5"),
+ new PartData("Cam", "Blue",
new Weight(12.0, Weight.GRAMS),
- &quot;Paris&quot;));
- parts.put(new PartKey(&quot;P6&quot;),
- new PartData(&quot;Cog&quot;, &quot;Red&quot;,
+ "Paris"));
+ parts.put(new PartKey("P6"),
+ new PartData("Cog", "Red",
new Weight(19.0, Weight.GRAMS),
- &quot;London&quot;));
+ "London"));
}</tt></b>
}
@@ -158,30 +158,30 @@ public class Sample
<b class="userinput"><tt> Map shipments = views.getShipmentMap();
if (shipments.isEmpty())
{
- System.out.println(&quot;Adding Shipments&quot;);
- shipments.put(new ShipmentKey(&quot;P1&quot;, &quot;S1&quot;),
+ System.out.println("Adding Shipments");
+ shipments.put(new ShipmentKey("P1", "S1"),
new ShipmentData(300));
- shipments.put(new ShipmentKey(&quot;P2&quot;, &quot;S1&quot;),
+ shipments.put(new ShipmentKey("P2", "S1"),
new ShipmentData(200));
- shipments.put(new ShipmentKey(&quot;P3&quot;, &quot;S1&quot;),
+ shipments.put(new ShipmentKey("P3", "S1"),
new ShipmentData(400));
- shipments.put(new ShipmentKey(&quot;P4&quot;, &quot;S1&quot;),
+ shipments.put(new ShipmentKey("P4", "S1"),
new ShipmentData(200));
- shipments.put(new ShipmentKey(&quot;P5&quot;, &quot;S1&quot;),
+ shipments.put(new ShipmentKey("P5", "S1"),
new ShipmentData(100));
- shipments.put(new ShipmentKey(&quot;P6&quot;, &quot;S1&quot;),
+ shipments.put(new ShipmentKey("P6", "S1"),
new ShipmentData(100));
- shipments.put(new ShipmentKey(&quot;P1&quot;, &quot;S2&quot;),
+ shipments.put(new ShipmentKey("P1", "S2"),
new ShipmentData(300));
- shipments.put(new ShipmentKey(&quot;P2&quot;, &quot;S2&quot;),
+ shipments.put(new ShipmentKey("P2", "S2"),
new ShipmentData(400));
- shipments.put(new ShipmentKey(&quot;P2&quot;, &quot;S3&quot;),
+ shipments.put(new ShipmentKey("P2", "S3"),
new ShipmentData(200));
- shipments.put(new ShipmentKey(&quot;P2&quot;, &quot;S4&quot;),
+ shipments.put(new ShipmentKey("P2", "S4"),
new ShipmentData(200));
- shipments.put(new ShipmentKey(&quot;P4&quot;, &quot;S4&quot;),
+ shipments.put(new ShipmentKey("P4", "S4"),
new ShipmentData(300));
- shipments.put(new ShipmentKey(&quot;P5&quot;, &quot;S4&quot;),
+ shipments.put(new ShipmentKey("P5", "S4"),
new ShipmentData(400));
}</tt></b>
}
@@ -195,31 +195,31 @@ public class Sample
<p>
In each method above, objects are added only if the map is not
empty. This is a simple way of allowing the example program to be
- run repeatedly. In real-life applications another technique &#8212;
+ run repeatedly. In real-life applications another technique —
checking the
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#containsKey" target="_top">Map.containsKey</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#containsKey" target="_top">Map.containsKey</a>
- method, for example &#8212; might be used.
+ method, for example — might be used.
</p>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="usingtransactions.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="usingtransactions.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="BasicProgram.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="retrievingdatabaseitems.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="retrievingdatabaseitems.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">
Using Transactions
-  </td>
+  </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> 
+ <td width="40%" align="right" valign="top"> 
Retrieving Database Items
</td>
</tr>
diff --git a/db/docs/collections/tutorial/collectionOverview.html b/db/docs/collections/tutorial/collectionOverview.html
index 02ac86e91..6e9a0326d 100644
--- a/db/docs/collections/tutorial/collectionOverview.html
+++ b/db/docs/collections/tutorial/collectionOverview.html
@@ -1,30 +1,30 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <title>Appendix A. 
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Appendix A. 
API Notes and Details
</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Berkeley DB Collections Tutorial" />
<link rel="up" href="index.html" title="Berkeley DB Collections Tutorial" />
- <link rel="previous" href="Summary.html" title="Chapter 7. &#10;&#9;&#9;Summary&#10;&#9;" />
- <link rel="next" href="UsingCollectionsAPI.html" title="&#10; Using the Java Collections API&#10; " />
+ <link rel="previous" href="Summary.html" title="Chapter 7. &#10;&#9;&#9;Summary&#10;&#9;" />
+ <link rel="next" href="UsingCollectionsAPI.html" title="&#10; Using the DB Java Collections API&#10; " />
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
- <th colspan="3" align="center">Appendix A. 
+ <th colspan="3" align="center">Appendix A. 
API Notes and Details
</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="Summary.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="UsingCollectionsAPI.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="Summary.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="UsingCollectionsAPI.html">Next</a></td>
</tr>
</table>
<hr />
@@ -33,7 +33,7 @@
<div class="titlepage">
<div>
<div>
- <h2 class="title"><a id="collectionOverview"></a>Appendix A. 
+ <h2 class="title"><a id="collectionOverview"></a>Appendix A. 
API Notes and Details
</h2>
</div>
@@ -57,7 +57,7 @@
<li>
<p>
<a href="UsingCollectionsAPI.html">
- Using the Java Collections API
+ Using the DB Java Collections API
</a>
</p>
</li>
@@ -250,8 +250,8 @@
in other cases will create a database that is not portable
between platforms. When constructing the stored collection,
- the Java Collections API will throw an
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" target="_top">IllegalArgumentException</a>
+ the DB Java Collections API will throw an
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" target="_top">IllegalArgumentException</a>
in such cases.
</p>
@@ -315,7 +315,7 @@
Note that even when an entity binding is used a key binding is
also usually needed. For example, a key binding is used to create
key objects that are passed to the
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.get().html" target="_top">Map.get()</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#get" target="_top">Map.get()</a>
method. A key object is passed to this method even though it may
return an entity that also contains the key.
@@ -450,21 +450,21 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="Summary.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="Summary.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="UsingCollectionsAPI.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="UsingCollectionsAPI.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Chapter 7. 
+ <td width="40%" align="left" valign="top">Chapter 7. 
Summary
-  </td>
+  </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> 
- Using the Java Collections API
+ <td width="40%" align="right" valign="top"> 
+ Using the DB Java Collections API
</td>
</tr>
</table>
diff --git a/db/docs/collections/tutorial/collectionswithentities.html b/db/docs/collections/tutorial/collectionswithentities.html
index 74f5774c8..231fa7ca8 100644
--- a/db/docs/collections/tutorial/collectionswithentities.html
+++ b/db/docs/collections/tutorial/collectionswithentities.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>
Creating Collections with Entity Bindings
</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Berkeley DB Collections Tutorial" />
- <link rel="up" href="Entity.html" title="Chapter 4. &#10; Using Entity Classes&#9;&#10;&#9;" />
+ <link rel="up" href="Entity.html" title="Chapter 4. &#10; Using Entity Classes&#9;&#10;&#9;" />
<link rel="previous" href="creatingentitybindings.html" title="&#10;&#9;&#9;Creating Entity Bindings&#10;&#9;" />
<link rel="next" href="entitieswithcollections.html" title="&#10;&#9;&#9;Using Entities with Collections&#10;&#9;" />
</head>
@@ -22,11 +22,11 @@
</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="creatingentitybindings.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 4. 
+ <td width="20%" align="left"><a accesskey="p" href="creatingentitybindings.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 4. 
Using Entity Classes
</th>
- <td width="20%" align="right"> <a accesskey="n" href="entitieswithcollections.html">Next</a></td>
+ <td width="20%" align="right"> <a accesskey="n" href="entitieswithcollections.html">Next</a></td>
</tr>
</table>
<hr />
@@ -89,9 +89,9 @@
The following getter methods are defined for use by other
classes in the example program. Instead of returning the map's
entry set
- (<a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#entrySet" target="_top">Map.entrySet</a>),
+ (<a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#entrySet" target="_top">Map.entrySet</a>),
the map's value set
- (<a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#values" target="_top">Map.values</a>)
+ (<a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#values" target="_top">Map.values</a>)
is returned. The entry set was convenient in prior examples because
it allowed enumerating all key/value pairs in the collection. Since
an entity contains the key and the value, enumerating the value set
@@ -127,10 +127,10 @@ public class SampleViews
<a href="../../java/com/sleepycat/collections/StoredValueSet.html" target="_top">StoredValueSet</a>
and not just a
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" target="_top">Collection</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" target="_top">Collection</a>
as defined by the
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#values" target="_top">Map.values</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#values" target="_top">Map.values</a>
interface. As long as duplicate keys are not allowed, this
collection will behave as a true set and will disallow the addition
@@ -141,20 +141,20 @@ public class SampleViews
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="creatingentitybindings.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="creatingentitybindings.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="Entity.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="entitieswithcollections.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="entitieswithcollections.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">
Creating Entity Bindings
-  </td>
+  </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> 
+ <td width="40%" align="right" valign="top"> 
Using Entities with Collections
</td>
</tr>
diff --git a/db/docs/collections/tutorial/createbindingscollections.html b/db/docs/collections/tutorial/createbindingscollections.html
index aa0c46253..eb1384cd2 100644
--- a/db/docs/collections/tutorial/createbindingscollections.html
+++ b/db/docs/collections/tutorial/createbindingscollections.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>
Creating Bindings and Collections
</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Berkeley DB Collections Tutorial" />
- <link rel="up" href="BasicProgram.html" title="Chapter 2. &#10;&#9;&#9;The Basic Program&#10;&#9;" />
+ <link rel="up" href="BasicProgram.html" title="Chapter 2. &#10;&#9;&#9;The Basic Program&#10;&#9;" />
<link rel="previous" href="opendatabases.html" title="&#10;&#9;&#9;Opening and Closing Databases&#10;&#9;" />
<link rel="next" href="implementingmain.html" title="&#10;&#9;&#9;Implementing the Main Program&#10;&#9;" />
</head>
@@ -22,11 +22,11 @@
</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="opendatabases.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 2. 
+ <td width="20%" align="left"><a accesskey="p" href="opendatabases.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 2. 
The Basic Program
</th>
- <td width="20%" align="right"> <a accesskey="n" href="implementingmain.html">Next</a></td>
+ <td width="20%" align="right"> <a accesskey="n" href="implementingmain.html">Next</a></td>
</tr>
</table>
<hr />
@@ -46,9 +46,9 @@
<span class="emphasis"><em>Bindings</em></span> translate between stored records and Java objects.
In this example, Java serialization bindings are used. Serial
bindings are the simplest type of bindings because no mapping of
- fields or type conversion is needed. Tuple bindings &#8212; which are
+ fields or type conversion is needed. Tuple bindings — which are
more difficult to create than serial bindings but have some
- advantages &#8212; will be introduced later in the Tuple example
+ advantages — will be introduced later in the Tuple example
program.
</p>
<p>
@@ -99,19 +99,19 @@ public class SampleViews
field is used for each database. The StoredMap class implements the
standard Java
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html" target="_top">Map</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" target="_top">Map</a>
interface, which has methods for obtaining a
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html" target="_top">Set</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html" target="_top">Set</a>
of keys, a
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" target="_top">Collection</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" target="_top">Collection</a>
of values, or a
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html" target="_top">Set</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html" target="_top">Set</a>
of
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.Entry.html" target="_top">Map.Entry</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.Entry.html" target="_top">Map.Entry</a>
key/value pairs. Because databases contain key/value pairs, any
Berkeley DB database may be represented as a Java map.
@@ -251,7 +251,7 @@ public class SampleViews
follows.
</p>
<a id="cb_sampleviews_usage"></a>
- <pre class="programlisting"><b class="userinput"><tt> SampleDatabase sd = new SampleDatabase(new String(&quot;/home&quot;));
+ <pre class="programlisting"><b class="userinput"><tt> SampleDatabase sd = new SampleDatabase(new String("/home"));
SampleViews views = new SampleViews(sd);
Map partMap = views.getPartMap();
Set supplierEntries = views.getSupplierEntrySet();</tt></b> </pre>
@@ -260,20 +260,20 @@ public class SampleViews
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="opendatabases.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="opendatabases.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="BasicProgram.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="implementingmain.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="implementingmain.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">
Opening and Closing Databases
-  </td>
+  </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> 
+ <td width="40%" align="right" valign="top"> 
Implementing the Main Program
</td>
</tr>
diff --git a/db/docs/collections/tutorial/creatingentitybindings.html b/db/docs/collections/tutorial/creatingentitybindings.html
index adf98ba17..84eb931f3 100644
--- a/db/docs/collections/tutorial/creatingentitybindings.html
+++ b/db/docs/collections/tutorial/creatingentitybindings.html
@@ -1,16 +1,16 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>
Creating Entity Bindings
</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Berkeley DB Collections Tutorial" />
- <link rel="up" href="Entity.html" title="Chapter 4. &#10; Using Entity Classes&#9;&#10;&#9;" />
- <link rel="previous" href="Entity.html" title="Chapter 4. &#10; Using Entity Classes&#9;&#10;&#9;" />
+ <link rel="up" href="Entity.html" title="Chapter 4. &#10; Using Entity Classes&#9;&#10;&#9;" />
+ <link rel="previous" href="Entity.html" title="Chapter 4. &#10; Using Entity Classes&#9;&#10;&#9;" />
<link rel="next" href="collectionswithentities.html" title="&#10;&#9;&#9;Creating Collections with Entity Bindings&#10;&#9;" />
</head>
<body>
@@ -22,11 +22,11 @@
</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="Entity.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 4. 
+ <td width="20%" align="left"><a accesskey="p" href="Entity.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 4. 
Using Entity Classes
</th>
- <td width="20%" align="right"> <a accesskey="n" href="collectionswithentities.html">Next</a></td>
+ <td width="20%" align="right"> <a accesskey="n" href="collectionswithentities.html">Next</a></td>
</tr>
</table>
<hr />
@@ -245,20 +245,20 @@ public class SampleViews
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="Entity.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="Entity.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="Entity.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="collectionswithentities.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="collectionswithentities.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Chapter 4. 
+ <td width="40%" align="left" valign="top">Chapter 4. 
Using Entity Classes
-  </td>
+  </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> 
+ <td width="40%" align="right" valign="top"> 
Creating Collections with Entity Bindings
</td>
</tr>
diff --git a/db/docs/collections/tutorial/developing.html b/db/docs/collections/tutorial/developing.html
index f8787ef3c..e12180f56 100644
--- a/db/docs/collections/tutorial/developing.html
+++ b/db/docs/collections/tutorial/developing.html
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Developing a DB Collections Application</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Berkeley DB Collections Tutorial" />
- <link rel="up" href="intro.html" title="Chapter 1. &#10; Introduction&#10; " />
- <link rel="previous" href="intro.html" title="Chapter 1. &#10; Introduction&#10; " />
+ <link rel="up" href="intro.html" title="Chapter 1. &#10; Introduction&#10; " />
+ <link rel="previous" href="intro.html" title="Chapter 1. &#10; Introduction&#10; " />
<link rel="next" href="tutorialintroduction.html" title="Tutorial Introduction" />
</head>
<body>
@@ -18,11 +18,11 @@
<th colspan="3" align="center">Developing a DB Collections Application</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="intro.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 1. 
+ <td width="20%" align="left"><a accesskey="p" href="intro.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 1. 
Introduction
</th>
- <td width="20%" align="right"> <a accesskey="n" href="tutorialintroduction.html">Next</a></td>
+ <td width="20%" align="right"> <a accesskey="n" href="tutorialintroduction.html">Next</a></td>
</tr>
</table>
<hr />
@@ -38,7 +38,7 @@
</div>
<p>
There are several important choices to make when developing an
- application using the Java Collections API.
+ application using the DB Java Collections API.
</p>
<div class="orderedlist">
<ol type="1">
@@ -61,7 +61,7 @@
</p>
<p>
For each Berkeley DB datastore, you may choose from any of the
- four Berkeley DB access methods &#8212; BTREE, HASH, RECNO, or
+ four Berkeley DB access methods — BTREE, HASH, RECNO, or
QUEUE
<span class="html">
(<a href="../../java/com/sleepycat/db/DatabaseType.html#BTREE" target="_top">DatabaseType.BTREE</a>,
@@ -70,7 +70,7 @@
or
<a href="../../java/com/sleepycat/db/DatabaseType.html#QUEUE" target="_top">DatabaseType.QUEUE</a>.)
</span>
- &#8212; and a number of other database options. Your choice
+ — and a number of other database options. Your choice
depends on several factors such as whether you need ordered
keys, unique keys, record number access, and so forth. For more
information on access methods, see the
@@ -173,17 +173,17 @@
It is sometimes desirable to use a Java class that encapsulates
both a data key and a data value. For example, a Part object might
contain both the part number (key) and the part name (value). Using
- the Java Collections API this type of object is called an
- &quot;entity&quot;. An entity binding is used to translate between the Java
+ the DB Java Collections API this type of object is called an
+ "entity". An entity binding is used to translate between the Java
object and the stored data key and value. Entity bindings may be
used with all Collection types.
</p>
<p>
- Please be aware that the provided Java Collections API collection classes
+ Please be aware that the provided DB Java Collections API collection classes
do not conform completely to the interface contracts
defined in the <tt class="literal">java.util</tt> package. For example, all
iterators must be explicitly closed and the <tt class="methodname">size()</tt>
- method is not available. The differences between the Java Collections API
+ method is not available. The differences between the DB Java Collections API
collections and the standard Java collections are
documented in
<a href="UsingStoredCollections.html#StoredVersusStandardCollections">
@@ -195,20 +195,20 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="intro.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="intro.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="intro.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="tutorialintroduction.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="tutorialintroduction.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Chapter 1. 
+ <td width="40%" align="left" valign="top">Chapter 1. 
Introduction
-  </td>
+  </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Tutorial Introduction</td>
+ <td width="40%" align="right" valign="top"> Tutorial Introduction</td>
</tr>
</table>
</div>
diff --git a/db/docs/collections/tutorial/entitieswithcollections.html b/db/docs/collections/tutorial/entitieswithcollections.html
index 592d4ea8b..b72a0a33f 100644
--- a/db/docs/collections/tutorial/entitieswithcollections.html
+++ b/db/docs/collections/tutorial/entitieswithcollections.html
@@ -1,17 +1,17 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>
Using Entities with Collections
</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Berkeley DB Collections Tutorial" />
- <link rel="up" href="Entity.html" title="Chapter 4. &#10; Using Entity Classes&#9;&#10;&#9;" />
+ <link rel="up" href="Entity.html" title="Chapter 4. &#10; Using Entity Classes&#9;&#10;&#9;" />
<link rel="previous" href="collectionswithentities.html" title="&#10;&#9;&#9;Creating Collections with Entity Bindings&#10;&#9;" />
- <link rel="next" href="Tuple.html" title="Chapter 5. &#10;&#9;&#9;Using Tuples&#10;&#9;" />
+ <link rel="next" href="Tuple.html" title="Chapter 5. &#10;&#9;&#9;Using Tuples&#10;&#9;" />
</head>
<body>
<div class="navheader">
@@ -22,11 +22,11 @@
</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="collectionswithentities.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 4. 
+ <td width="20%" align="left"><a accesskey="p" href="collectionswithentities.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 4. 
Using Entity Classes
</th>
- <td width="20%" align="right"> <a accesskey="n" href="Tuple.html">Next</a></td>
+ <td width="20%" align="right"> <a accesskey="n" href="Tuple.html">Next</a></td>
</tr>
</table>
<hr />
@@ -52,7 +52,7 @@
<p>
For adding and iterating entities, the collection of entities
returned by
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#values" target="_top">Map.values</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#values" target="_top">Map.values</a>
is used. In general, when using an entity binding, all Java
collection methods that are passed or returned a value object will
@@ -61,14 +61,14 @@
<p>
The <tt class="classname">Sample</tt> class has been changed in this example to add
objects using the
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#add" target="_top">Set.add</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#add" target="_top">Set.add</a>
method rather than the
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#put" target="_top">Map.put</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#put" target="_top">Map.put</a>
method that was used in the prior examples. Entity objects are
constructed and passed to
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#add" target="_top">Set.add</a>.
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#add" target="_top">Set.add</a>.
</p>
<a id="entity_addsuppliers"></a>
<pre class="programlisting">import java.util.Set;
@@ -81,12 +81,12 @@ public class Sample
<b class="userinput"><tt> Set suppliers = views.getSupplierSet();
if (suppliers.isEmpty())
{
- System.out.println(&quot;Adding Suppliers&quot;);
- suppliers.add(new Supplier(&quot;S1&quot;, &quot;Smith&quot;, 20, &quot;London&quot;));
- suppliers.add(new Supplier(&quot;S2&quot;, &quot;Jones&quot;, 10, &quot;Paris&quot;));
- suppliers.add(new Supplier(&quot;S3&quot;, &quot;Blake&quot;, 30, &quot;Paris&quot;));
- suppliers.add(new Supplier(&quot;S4&quot;, &quot;Clark&quot;, 20, &quot;London&quot;));
- suppliers.add(new Supplier(&quot;S5&quot;, &quot;Adams&quot;, 30, &quot;Athens&quot;));
+ System.out.println("Adding Suppliers");
+ suppliers.add(new Supplier("S1", "Smith", 20, "London"));
+ suppliers.add(new Supplier("S2", "Jones", 10, "Paris"));
+ suppliers.add(new Supplier("S3", "Blake", 30, "Paris"));
+ suppliers.add(new Supplier("S4", "Clark", 20, "London"));
+ suppliers.add(new Supplier("S5", "Adams", 30, "Athens"));
}</tt></b>
}
@@ -95,19 +95,19 @@ public class Sample
<b class="userinput"><tt> Set parts = views.getPartSet();
if (parts.isEmpty())
{
- System.out.println(&quot;Adding Parts&quot;);
- parts.add(new Part(&quot;P1&quot;, &quot;Nut&quot;, &quot;Red&quot;,
- new Weight(12.0, Weight.GRAMS), &quot;London&quot;));
- parts.add(new Part(&quot;P2&quot;, &quot;Bolt&quot;, &quot;Green&quot;,
- new Weight(17.0, Weight.GRAMS), &quot;Paris&quot;));
- parts.add(new Part(&quot;P3&quot;, &quot;Screw&quot;, &quot;Blue&quot;,
- new Weight(17.0, Weight.GRAMS), &quot;Rome&quot;));
- parts.add(new Part(&quot;P4&quot;, &quot;Screw&quot;, &quot;Red&quot;,
- new Weight(14.0, Weight.GRAMS), &quot;London&quot;));
- parts.add(new Part(&quot;P5&quot;, &quot;Cam&quot;, &quot;Blue&quot;,
- new Weight(12.0, Weight.GRAMS), &quot;Paris&quot;));
- parts.add(new Part(&quot;P6&quot;, &quot;Cog&quot;, &quot;Red&quot;,
- new Weight(19.0, Weight.GRAMS), &quot;London&quot;));
+ System.out.println("Adding Parts");
+ parts.add(new Part("P1", "Nut", "Red",
+ new Weight(12.0, Weight.GRAMS), "London"));
+ parts.add(new Part("P2", "Bolt", "Green",
+ new Weight(17.0, Weight.GRAMS), "Paris"));
+ parts.add(new Part("P3", "Screw", "Blue",
+ new Weight(17.0, Weight.GRAMS), "Rome"));
+ parts.add(new Part("P4", "Screw", "Red",
+ new Weight(14.0, Weight.GRAMS), "London"));
+ parts.add(new Part("P5", "Cam", "Blue",
+ new Weight(12.0, Weight.GRAMS), "Paris"));
+ parts.add(new Part("P6", "Cog", "Red",
+ new Weight(19.0, Weight.GRAMS), "London"));
}</tt></b>
}
@@ -116,34 +116,33 @@ public class Sample
<b class="userinput"><tt> Set shipments = views.getShipmentSet();
if (shipments.isEmpty())
{
- System.out.println(&quot;Adding Shipments&quot;);
- shipments.add(new Shipment(&quot;P1&quot;, &quot;S1&quot;, 300));
- shipments.add(new Shipment(&quot;P2&quot;, &quot;S1&quot;, 200));
- shipments.add(new Shipment(&quot;P3&quot;, &quot;S1&quot;, 400));
- shipments.add(new Shipment(&quot;P4&quot;, &quot;S1&quot;, 200));
- shipments.add(new Shipment(&quot;P5&quot;, &quot;S1&quot;, 100));
- shipments.add(new Shipment(&quot;P6&quot;, &quot;S1&quot;, 100));
- shipments.add(new Shipment(&quot;P1&quot;, &quot;S2&quot;, 300));
- shipments.add(new Shipment(&quot;P2&quot;, &quot;S2&quot;, 400));
- shipments.add(new Shipment(&quot;P2&quot;, &quot;S3&quot;, 200));
- shipments.add(new Shipment(&quot;P2&quot;, &quot;S4&quot;, 200));
- shipments.add(new Shipment(&quot;P4&quot;, &quot;S4&quot;, 300));
- shipments.add(new Shipment(&quot;P5&quot;, &quot;S4&quot;, 400));
+ System.out.println("Adding Shipments");
+ shipments.add(new Shipment("P1", "S1", 300));
+ shipments.add(new Shipment("P2", "S1", 200));
+ shipments.add(new Shipment("P3", "S1", 400));
+ shipments.add(new Shipment("P4", "S1", 200));
+ shipments.add(new Shipment("P5", "S1", 100));
+ shipments.add(new Shipment("P6", "S1", 100));
+ shipments.add(new Shipment("P1", "S2", 300));
+ shipments.add(new Shipment("P2", "S2", 400));
+ shipments.add(new Shipment("P2", "S3", 200));
+ shipments.add(new Shipment("P2", "S4", 200));
+ shipments.add(new Shipment("P4", "S4", 300));
+ shipments.add(new Shipment("P5", "S4", 400));
}</tt></b>
} </pre>
<p>
Instead of printing the key/value pairs by iterating over the
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#entrySet" target="_top">Map.entrySet</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#entrySet" target="_top">Map.entrySet</a>
as done in the prior example, this example
iterates over the entities in the
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#values" target="_top">Map.values</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#values" target="_top">Map.values</a>
collection.
</p>
<a id="entity_printdatabase"></a>
- <pre class="programlisting">import com.sleepycat.collections.StoredIterator;
-import java.util.Iterator;
+ <pre class="programlisting">import java.util.Iterator;
import java.util.Set;
...
public class Sample
@@ -154,21 +153,21 @@ public class Sample
public void doWork()
throws Exception
{
-<b class="userinput"><tt> printValues(&quot;Parts&quot;,
+<b class="userinput"><tt> printValues("Parts",
views.getPartSet().iterator());
- printValues(&quot;Suppliers&quot;,
+ printValues("Suppliers",
views.getSupplierSet().iterator());</tt></b>
- printValues(&quot;Suppliers for City Paris&quot;,
+ printValues("Suppliers for City Paris",
views.getSupplierByCityMap().duplicates(
- &quot;Paris&quot;).iterator());
-<b class="userinput"><tt> printValues(&quot;Shipments&quot;,
+ "Paris").iterator());
+<b class="userinput"><tt> printValues("Shipments",
views.getShipmentSet().iterator());</tt></b>
- printValues(&quot;Shipments for Part P1&quot;,
+ printValues("Shipments for Part P1",
views.getShipmentByPartMap().duplicates(
- new PartKey(&quot;P1&quot;)).iterator());
- printValues(&quot;Shipments for Supplier S1&quot;,
+ new PartKey("P1")).iterator());
+ printValues("Shipments for Supplier S1",
views.getShipmentBySupplierMap().duplicates(
- new SupplierKey(&quot;S1&quot;)).iterator());
+ new SupplierKey("S1")).iterator());
}
}
...
@@ -229,20 +228,20 @@ Shipment: part=P6 supplier=S1 quantity=100 </pre>
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="collectionswithentities.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="collectionswithentities.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="Entity.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="Tuple.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="Tuple.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">
Creating Collections with Entity Bindings
-  </td>
+  </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Chapter 5. 
+ <td width="40%" align="right" valign="top"> Chapter 5. 
Using Tuples
</td>
</tr>
diff --git a/db/docs/collections/tutorial/handlingexceptions.html b/db/docs/collections/tutorial/handlingexceptions.html
index 8222563ab..161e09224 100644
--- a/db/docs/collections/tutorial/handlingexceptions.html
+++ b/db/docs/collections/tutorial/handlingexceptions.html
@@ -1,17 +1,17 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>
Handling Exceptions
</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Berkeley DB Collections Tutorial" />
- <link rel="up" href="BasicProgram.html" title="Chapter 2. &#10;&#9;&#9;The Basic Program&#10;&#9;" />
+ <link rel="up" href="BasicProgram.html" title="Chapter 2. &#10;&#9;&#9;The Basic Program&#10;&#9;" />
<link rel="previous" href="retrievingdatabaseitems.html" title="&#10;&#9;&#9;Retrieving Database Items&#10;&#9;" />
- <link rel="next" href="UsingSecondaries.html" title="Chapter 3. &#10;&#9;&#9;Using Secondary Indices&#10;&#9;" />
+ <link rel="next" href="UsingSecondaries.html" title="Chapter 3. &#10;&#9;&#9;Using Secondary Indices&#10;&#9;" />
</head>
<body>
<div class="navheader">
@@ -22,11 +22,11 @@
</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="retrievingdatabaseitems.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 2. 
+ <td width="20%" align="left"><a accesskey="p" href="retrievingdatabaseitems.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 2. 
The Basic Program
</th>
- <td width="20%" align="right"> <a accesskey="n" href="UsingSecondaries.html">Next</a></td>
+ <td width="20%" align="right"> <a accesskey="n" href="UsingSecondaries.html">Next</a></td>
</tr>
</table>
<hr />
@@ -51,7 +51,7 @@
<a href="usingtransactions.html">
Using Transactions
</a>
- exception handling in a Java Collections API application in
+ exception handling in a DB Java Collections API application in
more detail.
</p>
<p>
@@ -81,7 +81,7 @@
is thrown, the application should normally retry the operation. If
a deadlock continues to occur for some maximum number of retries,
the application should give up and try again later or take other
- corrective actions. The Java Collections API provides two APIs
+ corrective actions. The DB Java Collections API provides two APIs
for transaction execution.
</p>
<div class="itemizedlist">
@@ -192,20 +192,20 @@ import com.sleepycat.util.ExceptionUnwrapper;
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="retrievingdatabaseitems.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="retrievingdatabaseitems.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="BasicProgram.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="UsingSecondaries.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="UsingSecondaries.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">
Retrieving Database Items
-  </td>
+  </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Chapter 3. 
+ <td width="40%" align="right" valign="top"> Chapter 3. 
Using Secondary Indices
</td>
</tr>
diff --git a/db/docs/collections/tutorial/implementingmain.html b/db/docs/collections/tutorial/implementingmain.html
index 02a64e271..43c43169e 100644
--- a/db/docs/collections/tutorial/implementingmain.html
+++ b/db/docs/collections/tutorial/implementingmain.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>
Implementing the Main Program
</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Berkeley DB Collections Tutorial" />
- <link rel="up" href="BasicProgram.html" title="Chapter 2. &#10;&#9;&#9;The Basic Program&#10;&#9;" />
+ <link rel="up" href="BasicProgram.html" title="Chapter 2. &#10;&#9;&#9;The Basic Program&#10;&#9;" />
<link rel="previous" href="createbindingscollections.html" title="&#10;&#9;&#9;Creating Bindings and Collections&#10;&#9;" />
<link rel="next" href="usingtransactions.html" title="&#10;&#9;&#9;Using Transactions&#10;&#9;" />
</head>
@@ -22,11 +22,11 @@
</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="createbindingscollections.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 2. 
+ <td width="20%" align="left"><a accesskey="p" href="createbindingscollections.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 2. 
The Basic Program
</th>
- <td width="20%" align="right"> <a accesskey="n" href="usingtransactions.html">Next</a></td>
+ <td width="20%" align="right"> <a accesskey="n" href="usingtransactions.html">Next</a></td>
</tr>
</table>
<hr />
@@ -96,21 +96,21 @@ public class Sample
<a id="cb_main"></a>
<pre class="programlisting"> public static void main(String[] args)
{
-<b class="userinput"><tt> System.out.println(&quot;\nRunning sample: &quot; + Sample.class);
- String homeDir = &quot;./tmp&quot;;
+<b class="userinput"><tt> System.out.println("\nRunning sample: " + Sample.class);
+ String homeDir = "./tmp";
for (int i = 0; i &lt; args.length; i += 1)
{
String arg = args[i];
- if (args[i].equals(&quot;-h&quot;) &amp;&amp; i &lt; args.length - 1)
+ if (args[i].equals("-h") &amp;&amp; i &lt; args.length - 1)
{
i += 1;
homeDir = args[i];
}
else
{
- System.err.println(&quot;Usage:\n java &quot; +
+ System.err.println("Usage:\n java " +
Sample.class.getName() +
- &quot;\n [-h &lt;home-directory&gt;]&quot;);
+ "\n [-h &lt;home-directory&gt;]");
System.exit(2);
}
}</tt></b>
@@ -128,7 +128,7 @@ public class Sample
to configure their database environment home directory.
</p>
<p>
- The default for the home directory is <tt class="filename">./tmp</tt> &#8212; the tmp
+ The default for the home directory is <tt class="filename">./tmp</tt> — the tmp
subdirectory of the current directory where the sample is run. The
home directory must exist before running the sample. To re-create
the sample database from scratch, delete all files in the home
@@ -174,7 +174,7 @@ public class Sample
}
catch (Exception e)
{
- System.err.println(&quot;Exception during database close:&quot;);
+ System.err.println("Exception during database close:");
e.printStackTrace();
}
}
@@ -230,20 +230,20 @@ public class Sample
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="createbindingscollections.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="createbindingscollections.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="BasicProgram.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="usingtransactions.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="usingtransactions.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">
Creating Bindings and Collections
-  </td>
+  </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> 
+ <td width="40%" align="right" valign="top"> 
Using Transactions
</td>
</tr>
diff --git a/db/docs/collections/tutorial/index.html b/db/docs/collections/tutorial/index.html
index a3d4c201b..0b47e9bfb 100644
--- a/db/docs/collections/tutorial/index.html
+++ b/db/docs/collections/tutorial/index.html
@@ -1,8 +1,8 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Berkeley DB Collections Tutorial</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
@@ -16,9 +16,9 @@
<th colspan="3" align="center">Berkeley DB Collections Tutorial</th>
</tr>
<tr>
- <td width="20%" align="left"> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="preface.html">Next</a></td>
+ <td width="20%" align="left"> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="preface.html">Next</a></td>
</tr>
</table>
<hr />
@@ -27,7 +27,7 @@
<div class="titlepage">
<div>
<div>
- <h1 class="title"><a id="id650925"></a>Berkeley DB Collections Tutorial</h1>
+ <h1 class="title"><a id="id613741"></a>Berkeley DB Collections Tutorial</h1>
</div>
<div>
<div class="legalnotice">
@@ -37,7 +37,7 @@
<p>
This documentation is distributed under an open source license.
You may review the terms of this license at:
- <a href="http://www.oracle.com/technology/software/products/berkeley-db/htdocs/oslicensing.html" target="_top">http://www.oracle.com/technology/software/products/berkeley-db/htdocs/oslicensing.html</a>
+ <a href="http://www.oracle.com/technology/software/products/berkeley-db/htdocs/oslicense.html" target="_top">http://www.oracle.com/technology/software/products/berkeley-db/htdocs/oslicense.html</a>
</p>
@@ -47,12 +47,12 @@
and
Sleepycat are trademarks or registered trademarks of
- Oracle Corporation. All rights to these marks are reserved.
+ Oracle. All rights to these marks are reserved.
No third-party use is permitted without the
- express prior written consent of Oracle Corporation.
+ express prior written consent of Oracle.
</p>
<p>
- <span class="trademark">Java</span>&#8482; and all Java-based marks are a trademark
+ <span class="trademark">Java</span>â„¢ and all Java-based marks are a trademark
or registered trademark of Sun Microsystems,
Inc, in the United States and other countries.
</p>
@@ -66,7 +66,7 @@
</div>
</div>
<div>
- <p class="pubdate">9/20/2006</p>
+ <p class="pubdate">6/30/2007</p>
</div>
</div>
<div></div>
@@ -430,7 +430,7 @@ Creating Tuple-Serial Entity Bindings
<dt>
<span class="sect1">
<a href="UsingCollectionsAPI.html">
- Using the Java Collections API
+ Using the DB Java Collections API
</a>
</span>
</dt>
@@ -519,14 +519,14 @@ Creating Tuple-Serial Entity Bindings
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"> </td>
- <td width="20%" align="center"> </td>
- <td width="40%" align="right"> <a accesskey="n" href="preface.html">Next</a></td>
+ <td width="40%" align="left"> </td>
+ <td width="20%" align="center"> </td>
+ <td width="40%" align="right"> <a accesskey="n" href="preface.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top"> </td>
- <td width="20%" align="center"> </td>
- <td width="40%" align="right" valign="top"> Preface</td>
+ <td width="40%" align="left" valign="top"> </td>
+ <td width="20%" align="center"> </td>
+ <td width="40%" align="right" valign="top"> Preface</td>
</tr>
</table>
</div>
diff --git a/db/docs/collections/tutorial/indexedcollections.html b/db/docs/collections/tutorial/indexedcollections.html
index 9be8495ac..2e32b63e4 100644
--- a/db/docs/collections/tutorial/indexedcollections.html
+++ b/db/docs/collections/tutorial/indexedcollections.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>
Creating Indexed Collections
</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Berkeley DB Collections Tutorial" />
- <link rel="up" href="UsingSecondaries.html" title="Chapter 3. &#10;&#9;&#9;Using Secondary Indices&#10;&#9;" />
+ <link rel="up" href="UsingSecondaries.html" title="Chapter 3. &#10;&#9;&#9;Using Secondary Indices&#10;&#9;" />
<link rel="previous" href="openingforeignkeys.html" title="&#10;&#9;&#9;&#10;&#9;&#9;More Secondary Key Indices&#10;&#9;" />
<link rel="next" href="retrievingbyindexkey.html" title="&#10;&#9;&#9;Retrieving Items by Index Key&#10;&#9;" />
</head>
@@ -22,11 +22,11 @@
</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="openingforeignkeys.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 3. 
+ <td width="20%" align="left"><a accesskey="p" href="openingforeignkeys.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 3. 
Using Secondary Indices
</th>
- <td width="20%" align="right"> <a accesskey="n" href="retrievingbyindexkey.html">Next</a></td>
+ <td width="20%" align="right"> <a accesskey="n" href="retrievingbyindexkey.html">Next</a></td>
</tr>
</table>
<hr />
@@ -48,7 +48,7 @@
example, bindings and collections are added for accessing the same
databases via their index keys. As in the prior example, serial
bindings and the Java
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html" target="_top">Map</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" target="_top">Map</a>
class are used.
</p>
@@ -68,10 +68,10 @@
be used to access the Supplier database. When a map is created
using the <tt class="methodname">supplierByCityDb()</tt> method, the key to the map will be the
City field, a
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" target="_top">String</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" target="_top">String</a>
object. When
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#get" target="_top">Map.get</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#get" target="_top">Map.get</a>
is called passing the City as the key parameter, a
<tt class="classname">SupplierData</tt>
@@ -158,7 +158,7 @@ public class SampleViews
<a href="../../java/com/sleepycat/bind/serial/SerialBinding.html" target="_top">SerialBinding</a>.
Unlike the bindings created earlier, it is an example of creating a
binding for a built-in Java class,
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" target="_top">String</a>,
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" target="_top">String</a>,
instead of an application-defined class. Any serializable class may
be used.
</p>
@@ -170,8 +170,8 @@ public class SampleViews
and <tt class="literal">supplierMap</tt>.
</p>
<p>
- The value bindings &#8212; <tt class="literal">supplierValueBinding</tt> and
- <tt class="literal">shipmentValueBinding</tt> &#8212; were also created in the Basic
+ The value bindings — <tt class="literal">supplierValueBinding</tt> and
+ <tt class="literal">shipmentValueBinding</tt> — were also created in the Basic
example.
</p>
<p>
@@ -224,21 +224,21 @@ public class SampleViews
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="openingforeignkeys.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="openingforeignkeys.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="UsingSecondaries.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="retrievingbyindexkey.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="retrievingbyindexkey.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">
More Secondary Key Indices
-  </td>
+  </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> 
+ <td width="40%" align="right" valign="top"> 
Retrieving Items by Index Key
</td>
</tr>
diff --git a/db/docs/collections/tutorial/intro.html b/db/docs/collections/tutorial/intro.html
index ec0d79ca8..4eb5d4d7f 100644
--- a/db/docs/collections/tutorial/intro.html
+++ b/db/docs/collections/tutorial/intro.html
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <title>Chapter 1. 
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Chapter 1. 
Introduction
</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
@@ -17,14 +17,14 @@
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
- <th colspan="3" align="center">Chapter 1. 
+ <th colspan="3" align="center">Chapter 1. 
Introduction
</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="moreinfo.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="developing.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="moreinfo.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="developing.html">Next</a></td>
</tr>
</table>
<hr />
@@ -33,7 +33,7 @@
<div class="titlepage">
<div>
<div>
- <h2 class="title"><a id="intro"></a>Chapter 1. 
+ <h2 class="title"><a id="intro"></a>Chapter 1. 
Introduction
</h2>
</div>
@@ -63,20 +63,20 @@
</dl>
</div>
<p>
- The Java Collections API is a Java framework that extends
+ The DB Java Collections API is a Java framework that extends
the well known
- <a href="http://java.sun.com/j2se/1.3/docs/guide/collections/" target="_top">Java Collections</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/guide/collections/" target="_top">Java Collections</a>
design pattern such that collections can now be
stored, updated and queried in a transactional manner. The
- Java Collections API is a layer on top of DB.
+ DB Java Collections API is a layer on top of DB.
</p>
<p>
- Together the Java Collections API and Berkeley DB provide an
+ Together the DB Java Collections API and Berkeley DB provide an
embedded data management solution with all the benefits of a full
transactional storage and the simplicity of a well known Java API.
Java programmers who need fast, scalable, transactional data
management for their projects can quickly adopt and deploy the
- Java Collections API with confidence.
+ DB Java Collections API with confidence.
</p>
<p>
This framework was first known as
@@ -107,7 +107,7 @@
- The Java Collections API is a layer on top of
+ The DB Java Collections API is a layer on top of
<span>that
thin JNI mapping of the C API to Berkeley DB.</span>
@@ -170,7 +170,7 @@
</li>
<li>
<p>
- The Java Collections API insulates the application
+ The DB Java Collections API insulates the application
from minor differences in the use of the Berkeley DB Data Store,
Concurrent Data Store, and Transactional Data Store products.
This allows for development with one and deployment with another
@@ -180,17 +180,17 @@
</ul>
</div>
<p>
- Note that the Java Collections API does not support caching
+ Note that the DB Java Collections API does not support caching
of programming language objects nor does it keep track of their stored
- status. This is in contrast to &quot;persistent object&quot; approaches such
+ status. This is in contrast to "persistent object" approaches such
as those defined by
<a href="http://www.odmg.org/" target="_top">ODMG</a>
and JDO
(<a href="http://www.jcp.org/en/jsr/detail?id=12" target="_top">JSR 12</a>).
Such approaches have benefits but also require sophisticated object
- caching. For simplicity the Java Collections API treats data
+ caching. For simplicity the DB Java Collections API treats data
objects by value, not by reference, and does not perform object
- caching of any kind. Since the Java Collections API is a thin
+ caching of any kind. Since the DB Java Collections API is a thin
layer, its reliability and performance characteristics are roughly
equivalent to those of Berkeley DB, and database tuning is
accomplished in the same way as for any Berkeley DB database.
@@ -201,18 +201,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="moreinfo.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="moreinfo.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="developing.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="developing.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">For More Information </td>
+ <td width="40%" align="left" valign="top">For More Information </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Developing a DB Collections Application</td>
+ <td width="40%" align="right" valign="top"> Developing a DB Collections Application</td>
</tr>
</table>
</div>
diff --git a/db/docs/collections/tutorial/moreinfo.html b/db/docs/collections/tutorial/moreinfo.html
index 9a98b5bbc..aa88b7a7d 100644
--- a/db/docs/collections/tutorial/moreinfo.html
+++ b/db/docs/collections/tutorial/moreinfo.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>For More Information</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Berkeley DB Collections Tutorial" />
<link rel="up" href="preface.html" title="Preface" />
<link rel="previous" href="preface.html" title="Preface" />
- <link rel="next" href="intro.html" title="Chapter 1. &#10; Introduction&#10; " />
+ <link rel="next" href="intro.html" title="Chapter 1. &#10; Introduction&#10; " />
</head>
<body>
<div class="navheader">
@@ -18,9 +18,9 @@
<th colspan="3" align="center">For More Information</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="preface.html">Prev</a> </td>
+ <td width="20%" align="left"><a accesskey="p" href="preface.html">Prev</a> </td>
<th width="60%" align="center">Preface</th>
- <td width="20%" align="right"> <a accesskey="n" href="intro.html">Next</a></td>
+ <td width="20%" align="right"> <a accesskey="n" href="intro.html">Next</a></td>
</tr>
</table>
<hr />
@@ -87,18 +87,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="preface.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="preface.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="preface.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="intro.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="intro.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Preface </td>
+ <td width="40%" align="left" valign="top">Preface </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Chapter 1. 
+ <td width="40%" align="right" valign="top"> Chapter 1. 
Introduction
</td>
</tr>
diff --git a/db/docs/collections/tutorial/openclasscatalog.html b/db/docs/collections/tutorial/openclasscatalog.html
index b68f6abdf..6e42824f3 100644
--- a/db/docs/collections/tutorial/openclasscatalog.html
+++ b/db/docs/collections/tutorial/openclasscatalog.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>
Opening and Closing the Class Catalog
</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Berkeley DB Collections Tutorial" />
- <link rel="up" href="BasicProgram.html" title="Chapter 2. &#10;&#9;&#9;The Basic Program&#10;&#9;" />
+ <link rel="up" href="BasicProgram.html" title="Chapter 2. &#10;&#9;&#9;The Basic Program&#10;&#9;" />
<link rel="previous" href="opendbenvironment.html" title="&#10;&#9;&#9;Opening and Closing the Database Environment&#10;&#9;" />
<link rel="next" href="opendatabases.html" title="&#10;&#9;&#9;Opening and Closing Databases&#10;&#9;" />
</head>
@@ -22,11 +22,11 @@
</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="opendbenvironment.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 2. 
+ <td width="20%" align="left"><a accesskey="p" href="opendbenvironment.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 2. 
The Basic Program
</th>
- <td width="20%" align="right"> <a accesskey="n" href="opendatabases.html">Next</a></td>
+ <td width="20%" align="right"> <a accesskey="n" href="opendatabases.html">Next</a></td>
</tr>
</table>
<hr />
@@ -72,7 +72,7 @@ import java.io.FileNotFoundException;
public class SampleDatabase
{
private Environment env;
-<b class="userinput"><tt> private static final String CLASS_CATALOG = &quot;java_class_catalog&quot;;</tt></b>
+<b class="userinput"><tt> private static final String CLASS_CATALOG = "java_class_catalog";</tt></b>
...
<b class="userinput"><tt> private StoredClassCatalog javaCatalog;</tt></b>
...
@@ -80,7 +80,7 @@ public class SampleDatabase
<p>
While the class catalog is itself a database, it contains
metadata for other databases and is therefore treated specially by
- the Java Collections API. The
+ the DB Java Collections API. The
<a href="../../java/com/sleepycat/bind/serial/StoredClassCatalog.html" target="_top">StoredClassCatalog</a>
class encapsulates the catalog store and implements this special
@@ -117,8 +117,8 @@ public class SampleDatabase
<a href="../../java/com/sleepycat/db/DatabaseConfig.html" target="_top">DatabaseConfig</a>
class is used to specify configuration parameters when opening a
- database. The first configuration option specified &#8212;
- <tt class="methodname">setTransactional()</tt> &#8212; is set to true to create a transactional
+ database. The first configuration option specified —
+ <tt class="methodname">setTransactional()</tt> — is set to true to create a transactional
database. While non-transactional databases can also be created,
the examples in this tutorial use transactional databases.
</p>
@@ -185,20 +185,20 @@ public class SampleDatabase
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="opendbenvironment.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="opendbenvironment.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="BasicProgram.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="opendatabases.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="opendatabases.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">
Opening and Closing the Database Environment
-  </td>
+  </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> 
+ <td width="40%" align="right" valign="top"> 
Opening and Closing Databases
</td>
</tr>
diff --git a/db/docs/collections/tutorial/opendatabases.html b/db/docs/collections/tutorial/opendatabases.html
index 811b8f54f..eb25b0e60 100644
--- a/db/docs/collections/tutorial/opendatabases.html
+++ b/db/docs/collections/tutorial/opendatabases.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>
Opening and Closing Databases
</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Berkeley DB Collections Tutorial" />
- <link rel="up" href="BasicProgram.html" title="Chapter 2. &#10;&#9;&#9;The Basic Program&#10;&#9;" />
+ <link rel="up" href="BasicProgram.html" title="Chapter 2. &#10;&#9;&#9;The Basic Program&#10;&#9;" />
<link rel="previous" href="openclasscatalog.html" title="&#10;&#9;&#9;Opening and Closing the Class Catalog&#10;&#9;" />
<link rel="next" href="createbindingscollections.html" title="&#10;&#9;&#9;Creating Bindings and Collections&#10;&#9;" />
</head>
@@ -22,11 +22,11 @@
</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="openclasscatalog.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 2. 
+ <td width="20%" align="left"><a accesskey="p" href="openclasscatalog.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 2. 
The Basic Program
</th>
- <td width="20%" align="right"> <a accesskey="n" href="createbindingscollections.html">Next</a></td>
+ <td width="20%" align="right"> <a accesskey="n" href="createbindingscollections.html">Next</a></td>
</tr>
</table>
<hr />
@@ -60,9 +60,9 @@
<pre class="programlisting">public class SampleDatabase
{
...
-<b class="userinput"><tt> private static final String SUPPLIER_STORE = &quot;supplier_store&quot;;
- private static final String PART_STORE = &quot;part_store&quot;;
- private static final String SHIPMENT_STORE = &quot;shipment_store&quot;;</tt></b>
+<b class="userinput"><tt> private static final String SUPPLIER_STORE = "supplier_store";
+ private static final String PART_STORE = "part_store";
+ private static final String SHIPMENT_STORE = "shipment_store";</tt></b>
...
<b class="userinput"><tt> private Database supplierDb;
private Database partDb;
@@ -145,20 +145,20 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="openclasscatalog.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="openclasscatalog.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="BasicProgram.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="createbindingscollections.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="createbindingscollections.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">
Opening and Closing the Class Catalog
-  </td>
+  </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> 
+ <td width="40%" align="right" valign="top"> 
Creating Bindings and Collections
</td>
</tr>
diff --git a/db/docs/collections/tutorial/opendbenvironment.html b/db/docs/collections/tutorial/opendbenvironment.html
index 28edafb2b..50bf22d38 100644
--- a/db/docs/collections/tutorial/opendbenvironment.html
+++ b/db/docs/collections/tutorial/opendbenvironment.html
@@ -1,16 +1,16 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>
Opening and Closing the Database Environment
</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Berkeley DB Collections Tutorial" />
- <link rel="up" href="BasicProgram.html" title="Chapter 2. &#10;&#9;&#9;The Basic Program&#10;&#9;" />
- <link rel="previous" href="BasicProgram.html" title="Chapter 2. &#10;&#9;&#9;The Basic Program&#10;&#9;" />
+ <link rel="up" href="BasicProgram.html" title="Chapter 2. &#10;&#9;&#9;The Basic Program&#10;&#9;" />
+ <link rel="previous" href="BasicProgram.html" title="Chapter 2. &#10;&#9;&#9;The Basic Program&#10;&#9;" />
<link rel="next" href="openclasscatalog.html" title="&#10;&#9;&#9;Opening and Closing the Class Catalog&#10;&#9;" />
</head>
<body>
@@ -22,11 +22,11 @@
</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="BasicProgram.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 2. 
+ <td width="20%" align="left"><a accesskey="p" href="BasicProgram.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 2. 
The Basic Program
</th>
- <td width="20%" align="right"> <a accesskey="n" href="openclasscatalog.html">Next</a></td>
+ <td width="20%" align="right"> <a accesskey="n" href="openclasscatalog.html">Next</a></td>
</tr>
</table>
<hr />
@@ -94,7 +94,7 @@ public class SampleDatabase
<span>com.sleepycat.db</span>
package. Both packages are needed to create a complete application
- based on the Java Collections API.
+ based on the DB Java Collections API.
</p>
<p>
The following statements create an
@@ -107,7 +107,7 @@ public class SampleDatabase
<pre class="programlisting">public SampleDatabase(String homeDirectory)
throws DatabaseException, FileNotFoundException
{
-<b class="userinput"><tt> System.out.println(&quot;Opening environment in: &quot; + homeDirectory);
+<b class="userinput"><tt> System.out.println("Opening environment in: " + homeDirectory);
EnvironmentConfig envConfig = new EnvironmentConfig();
envConfig.setTransactional(true);
@@ -123,7 +123,7 @@ public class SampleDatabase
<a href="../../java/com/sleepycat/db/EnvironmentConfig.html" target="_top">EnvironmentConfig</a>
class is used to specify environment configuration parameters. The
- first configuration option specified &#8212; <tt class="methodname">setTransactional()</tt> &#8212;
+ first configuration option specified — <tt class="methodname">setTransactional()</tt> —
is set to true to create an environment where transactional (and
non-transactional) databases may be opened. While non-transactional
environments can also be created, the examples in this tutorial use
@@ -177,20 +177,20 @@ public class SampleDatabase
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="BasicProgram.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="BasicProgram.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="BasicProgram.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="openclasscatalog.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="openclasscatalog.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Chapter 2. 
+ <td width="40%" align="left" valign="top">Chapter 2. 
The Basic Program
-  </td>
+  </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> 
+ <td width="40%" align="right" valign="top"> 
Opening and Closing the Class Catalog
</td>
</tr>
diff --git a/db/docs/collections/tutorial/openingforeignkeys.html b/db/docs/collections/tutorial/openingforeignkeys.html
index 0e274a98a..690bc8453 100644
--- a/db/docs/collections/tutorial/openingforeignkeys.html
+++ b/db/docs/collections/tutorial/openingforeignkeys.html
@@ -1,8 +1,8 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>
More Secondary Key Indices
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Berkeley DB Collections Tutorial" />
- <link rel="up" href="UsingSecondaries.html" title="Chapter 3. &#10;&#9;&#9;Using Secondary Indices&#10;&#9;" />
- <link rel="previous" href="UsingSecondaries.html" title="Chapter 3. &#10;&#9;&#9;Using Secondary Indices&#10;&#9;" />
+ <link rel="up" href="UsingSecondaries.html" title="Chapter 3. &#10;&#9;&#9;Using Secondary Indices&#10;&#9;" />
+ <link rel="previous" href="UsingSecondaries.html" title="Chapter 3. &#10;&#9;&#9;Using Secondary Indices&#10;&#9;" />
<link rel="next" href="indexedcollections.html" title="&#10;&#9;&#9;Creating Indexed Collections&#10;&#9;" />
</head>
<body>
@@ -24,11 +24,11 @@
</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="UsingSecondaries.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 3. 
+ <td width="20%" align="left"><a accesskey="p" href="UsingSecondaries.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 3. 
Using Secondary Indices
</th>
- <td width="20%" align="right"> <a accesskey="n" href="indexedcollections.html">Next</a></td>
+ <td width="20%" align="right"> <a accesskey="n" href="indexedcollections.html">Next</a></td>
</tr>
</table>
<hr />
@@ -63,9 +63,9 @@ import com.sleepycat.db.SecondaryDatabase;</tt></b>
public class SampleDatabase
{
...
-<b class="userinput"><tt> private static final String SHIPMENT_PART_INDEX = &quot;shipment_part_index&quot;;
+<b class="userinput"><tt> private static final String SHIPMENT_PART_INDEX = "shipment_part_index";
private static final String SHIPMENT_SUPPLIER_INDEX =
- &quot;shipment_supplier_index&quot;;
+ "shipment_supplier_index";
...
private SecondaryDatabase shipmentByPartDb;
private SecondaryDatabase shipmentBySupplierDb;
@@ -214,20 +214,20 @@ public class SampleDatabase
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="UsingSecondaries.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="UsingSecondaries.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="UsingSecondaries.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="indexedcollections.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="indexedcollections.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Chapter 3. 
+ <td width="40%" align="left" valign="top">Chapter 3. 
Using Secondary Indices
-  </td>
+  </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> 
+ <td width="40%" align="right" valign="top"> 
Creating Indexed Collections
</td>
</tr>
diff --git a/db/docs/collections/tutorial/preface.html b/db/docs/collections/tutorial/preface.html
index 4a2f8a93d..331f16789 100644
--- a/db/docs/collections/tutorial/preface.html
+++ b/db/docs/collections/tutorial/preface.html
@@ -1,8 +1,8 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Preface</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Preface</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="index.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="moreinfo.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="index.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="moreinfo.html">Next</a></td>
</tr>
</table>
<hr />
@@ -74,12 +74,12 @@
</p>
<p>
Class names are represented in <tt class="classname">monospaced font</tt>, as are <tt class="methodname">method
- names</tt>. For example: &quot;The <tt class="methodname">Environment.openDatabase()</tt> method
- returns a <tt class="classname">Database</tt> class object.&quot;
+ names</tt>. For example: "The <tt class="methodname">Environment.openDatabase()</tt> method
+ returns a <tt class="classname">Database</tt> class object."
</p>
<p>
- Variable or non-literal text is presented in <span class="emphasis"><em>italics</em></span>. For example: &quot;Go to your
- <span class="emphasis"><em>DB_INSTALLATION_HOME</em></span> directory.&quot;
+ Variable or non-literal text is presented in <span class="emphasis"><em>italics</em></span>. For example: "Go to your
+ <span class="emphasis"><em>DB_INSTALLATION_HOME</em></span> directory."
</p>
<p>
Program examples are displayed in a monospaced font on a shaded background. For example:
@@ -106,25 +106,25 @@ import java.io.File;
<b class="userinput"><tt>Environment myDbEnv;
EnvironmentConfig envConfig = new EnvironmentConfig();
envConfig.setAllowCreate(true);
-myDbEnv = new Environment(new File(&quot;/export/dbEnv&quot;), envConfig);</tt></b> </pre>
+myDbEnv = new Environment(new File("/export/dbEnv"), envConfig);</tt></b> </pre>
</div>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="index.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="index.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="moreinfo.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="moreinfo.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Berkeley DB Collections Tutorial </td>
+ <td width="40%" align="left" valign="top">Berkeley DB Collections Tutorial </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> For More Information</td>
+ <td width="40%" align="right" valign="top"> For More Information</td>
</tr>
</table>
</div>
diff --git a/db/docs/collections/tutorial/removingredundantvalueclasses.html b/db/docs/collections/tutorial/removingredundantvalueclasses.html
index 828b177b0..bca571440 100644
--- a/db/docs/collections/tutorial/removingredundantvalueclasses.html
+++ b/db/docs/collections/tutorial/removingredundantvalueclasses.html
@@ -1,17 +1,17 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>
Removing the Redundant Value Classes
</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Berkeley DB Collections Tutorial" />
- <link rel="up" href="SerializableEntity.html" title="Chapter 6. &#10;&#9;&#9;Using Serializable Entities&#10;&#9;" />
+ <link rel="up" href="SerializableEntity.html" title="Chapter 6. &#10;&#9;&#9;Using Serializable Entities&#10;&#9;" />
<link rel="previous" href="transientfieldsinbinding.html" title="&#10;&#9;&#9;Using Transient Fields in an Entity Binding&#10;&#9;" />
- <link rel="next" href="Summary.html" title="Chapter 7. &#10;&#9;&#9;Summary&#10;&#9;" />
+ <link rel="next" href="Summary.html" title="Chapter 7. &#10;&#9;&#9;Summary&#10;&#9;" />
</head>
<body>
<div class="navheader">
@@ -22,11 +22,11 @@
</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="transientfieldsinbinding.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 6. 
+ <td width="20%" align="left"><a accesskey="p" href="transientfieldsinbinding.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 6. 
Using Serializable Entities
</th>
- <td width="20%" align="right"> <a accesskey="n" href="Summary.html">Next</a></td>
+ <td width="20%" align="right"> <a accesskey="n" href="Summary.html">Next</a></td>
</tr>
</table>
<hr />
@@ -107,20 +107,20 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="transientfieldsinbinding.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="transientfieldsinbinding.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="SerializableEntity.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="Summary.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="Summary.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">
Using Transient Fields in an Entity Binding
-  </td>
+  </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Chapter 7. 
+ <td width="40%" align="right" valign="top"> Chapter 7. 
Summary
</td>
</tr>
diff --git a/db/docs/collections/tutorial/retrievingbyindexkey.html b/db/docs/collections/tutorial/retrievingbyindexkey.html
index 96731060e..ab07e6d5a 100644
--- a/db/docs/collections/tutorial/retrievingbyindexkey.html
+++ b/db/docs/collections/tutorial/retrievingbyindexkey.html
@@ -1,17 +1,17 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>
Retrieving Items by Index Key
</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Berkeley DB Collections Tutorial" />
- <link rel="up" href="UsingSecondaries.html" title="Chapter 3. &#10;&#9;&#9;Using Secondary Indices&#10;&#9;" />
+ <link rel="up" href="UsingSecondaries.html" title="Chapter 3. &#10;&#9;&#9;Using Secondary Indices&#10;&#9;" />
<link rel="previous" href="indexedcollections.html" title="&#10;&#9;&#9;Creating Indexed Collections&#10;&#9;" />
- <link rel="next" href="Entity.html" title="Chapter 4. &#10; Using Entity Classes&#9;&#10;&#9;" />
+ <link rel="next" href="Entity.html" title="Chapter 4. &#10; Using Entity Classes&#9;&#10;&#9;" />
</head>
<body>
<div class="navheader">
@@ -22,11 +22,11 @@
</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="indexedcollections.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 3. 
+ <td width="20%" align="left"><a accesskey="p" href="indexedcollections.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 3. 
Using Secondary Indices
</th>
- <td width="20%" align="right"> <a accesskey="n" href="Entity.html">Next</a></td>
+ <td width="20%" align="right"> <a accesskey="n" href="Entity.html">Next</a></td>
</tr>
</table>
<hr />
@@ -65,7 +65,7 @@
</p>
<p>
Using the standard Java collections API, the
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#get" target="_top">Map.get</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#get" target="_top">Map.get</a>
method for a stored collection with duplicate keys will return only
the first value for a given key. To obtain all values for a given
@@ -73,7 +73,7 @@
<a href="../../java/com/sleepycat/collections/StoredMap.html#duplicates(java.lang.Object)" target="_top">StoredMap.duplicates</a>
method may be called. This returns a
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" target="_top">Collection</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" target="_top">Collection</a>
of values for the given key. If duplicate keys are not allowed, the
returned collection will have at most one value. If the key is not
@@ -84,8 +84,7 @@
specific index keys that are present in the database.
</p>
<a id="index_sampleviewsprintdatabase"></a>
- <pre class="programlisting">import com.sleepycat.collections.StoredIterator;
-import java.util.Iterator;
+ <pre class="programlisting">import java.util.Iterator;
...
public class Sample
{
@@ -97,40 +96,33 @@ public class Sample
public void doWork()
throws Exception
{
- printEntries(&quot;Parts&quot;,
+ printEntries("Parts",
views.getPartEntrySet().iterator());
- printEntries(&quot;Suppliers&quot;,
+ printEntries("Suppliers",
views.getSupplierEntrySet().iterator());
-<b class="userinput"><tt> printValues(&quot;Suppliers for City Paris&quot;,
+<b class="userinput"><tt> printValues("Suppliers for City Paris",
views.getSupplierByCityMap().duplicates(
- &quot;Paris&quot;).iterator());</tt></b>
- printEntries(&quot;Shipments&quot;,
+ "Paris").iterator());</tt></b>
+ printEntries("Shipments",
views.getShipmentEntrySet().iterator());
-<b class="userinput"><tt> printValues(&quot;Shipments for Part P1&quot;,
+<b class="userinput"><tt> printValues("Shipments for Part P1",
views.getShipmentByPartMap().duplicates(
- new PartKey(&quot;P1&quot;)).iterator());
- printValues(&quot;Shipments for Supplier S1&quot;,
+ new PartKey("P1")).iterator());
+ printValues("Shipments for Supplier S1",
views.getShipmentBySupplierMap().duplicates(
new
- SupplierKey(&quot;S1&quot;)).iterator());</tt></b>
+ SupplierKey("S1")).iterator());</tt></b>
}
}
<b class="userinput"><tt> private void printValues(String label, Iterator iterator)
{
- System.out.println(&quot;\n--- &quot; + label + &quot; ---&quot;);
- try
+ System.out.println("\n--- " + label + " ---");
+ while (iterator.hasNext())
{
- while (iterator.hasNext())
- {
System.out.println(iterator.next().toString());
- }
}
- finally
- {
- StoredIterator.close(iterator);
- }
- }</tt></b>
+ } </tt></b>
...
} </pre>
<p>
@@ -139,10 +131,10 @@ public class Sample
method is called passing the desired key. The returned value is a
standard Java
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" target="_top">Collection</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" target="_top">Collection</a>
containing the values for the specified key. A standard Java
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Iterator.html" target="_top">Iterator</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Iterator.html" target="_top">Iterator</a>
is then obtained for this collection and all values returned by
that iterator are printed.
@@ -150,9 +142,9 @@ public class Sample
<p>
Another technique for retrieving duplicates is to use the
collection returned by
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#entrySet" target="_top">Map.entrySet</a>.
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#entrySet" target="_top">Map.entrySet</a>.
When duplicate keys are present, a
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.Entry.html" target="_top">Map.Entry</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.Entry.html" target="_top">Map.Entry</a>
object will be present in this collection for each duplicate. This
collection can then be iterated or a subset can be created from it,
@@ -168,22 +160,22 @@ public class Sample
<p>
While not shown in the example program, it is also possible to
create a store with duplicate keys in the same way as an index with
- duplicate keys &#8212; by calling
+ duplicate keys — by calling
<tt class="methodname">DatabaseConfig.setSortedDuplicates()</tt> method. In that case,
calling
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#put" target="_top">Map.put</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#put" target="_top">Map.put</a>
will add duplicate keys. To remove all duplicate keys, call
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#remove" target="_top">Map.remove</a>.
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#remove" target="_top">Map.remove</a>.
To remove a specific duplicate key, call
<a href="../../java/com/sleepycat/collections/StoredMap.html#duplicates(java.lang.Object)" target="_top">StoredMap.duplicates</a>
and then call
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html#remove" target="_top">Collection.remove</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html#remove" target="_top">Collection.remove</a>
using the returned collection. Duplicate
values may also be added to this collection using
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html#add" target="_top"> Collection.add</a>.
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html#add" target="_top"> Collection.add</a>.
</p>
<p>
The output of the example program is shown below.
@@ -264,20 +256,20 @@ ShipmentData: quantity=100</tt></b> </pre>
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="indexedcollections.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="indexedcollections.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="UsingSecondaries.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="Entity.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="Entity.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">
Creating Indexed Collections
-  </td>
+  </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Chapter 4. 
+ <td width="40%" align="right" valign="top"> Chapter 4. 
Using Entity Classes
</td>
</tr>
diff --git a/db/docs/collections/tutorial/retrievingdatabaseitems.html b/db/docs/collections/tutorial/retrievingdatabaseitems.html
index d73e93b72..3ad57f5da 100644
--- a/db/docs/collections/tutorial/retrievingdatabaseitems.html
+++ b/db/docs/collections/tutorial/retrievingdatabaseitems.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>
Retrieving Database Items
</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Berkeley DB Collections Tutorial" />
- <link rel="up" href="BasicProgram.html" title="Chapter 2. &#10;&#9;&#9;The Basic Program&#10;&#9;" />
+ <link rel="up" href="BasicProgram.html" title="Chapter 2. &#10;&#9;&#9;The Basic Program&#10;&#9;" />
<link rel="previous" href="addingdatabaseitems.html" title="&#10;&#9;&#9;Adding Database Items&#10;&#9;" />
<link rel="next" href="handlingexceptions.html" title="&#10;&#9;&#9;Handling Exceptions&#10;&#9;" />
</head>
@@ -22,11 +22,11 @@
</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="addingdatabaseitems.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 2. 
+ <td width="20%" align="left"><a accesskey="p" href="addingdatabaseitems.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 2. 
The Basic Program
</th>
- <td width="20%" align="right"> <a accesskey="n" href="handlingexceptions.html">Next</a></td>
+ <td width="20%" align="right"> <a accesskey="n" href="handlingexceptions.html">Next</a></td>
</tr>
</table>
<hr />
@@ -45,13 +45,13 @@
<p>
Retrieving information from the database is accomplished via the
standard Java collections API. In the example, the
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#iterator" target="_top">Set.iterator</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#iterator" target="_top">Set.iterator</a>
method is used to iterate all
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.Entry.html" target="_top">Map.Entry</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.Entry.html" target="_top">Map.Entry</a>
objects for each store. All standard Java methods for retrieving
- objects from a collection may be used with the Java Collections API.
+ objects from a collection may be used with the DB Java Collections API.
</p>
<p>
The <tt class="methodname">PrintDatabase.doWork()</tt> method calls
@@ -63,8 +63,7 @@
class and was outlined in the previous section.
</p>
<a id="cb_printdatabase"></a>
- <pre class="programlisting">import com.sleepycat.collections.StoredIterator;
-import java.util.Iterator;
+ <pre class="programlisting">import java.util.Iterator;
...
public class Sample
{
@@ -76,11 +75,11 @@ public class Sample
public void doWork()
throws Exception
{
-<b class="userinput"><tt> printEntries(&quot;Parts&quot;,
+<b class="userinput"><tt> printEntries("Parts",
views.getPartEntrySet().iterator());
- printEntries(&quot;Suppliers&quot;,
+ printEntries("Suppliers",
views.getSupplierEntrySet().iterator());
- printEntries(&quot;Shipments&quot;,
+ printEntries("Shipments",
views.getShipmentEntrySet().iterator());</tt></b>
}
}
@@ -93,21 +92,21 @@ public class Sample
} </pre>
<p>
The
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html" target="_top">Set</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html" target="_top">Set</a>
of
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.Entry.html" target="_top">Map.Entry</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.Entry.html" target="_top">Map.Entry</a>
objects for each store is obtained from the <tt class="classname">SampleViews</tt>
object. This set can also be obtained by calling the
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#entrySet" target="_top">Map.entrySet</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#entrySet" target="_top">Map.entrySet</a>
method of a stored map.
</p>
<p>
The <tt class="methodname">printEntries()</tt> prints the map entries for any stored
map. The
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString" target="_top">Object.toString</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString" target="_top">Object.toString</a>
method of each key and value is called to
obtain a printable representation of each object.
@@ -115,46 +114,15 @@ public class Sample
<a id="cb_printentries"></a>
<pre class="programlisting"> private void printEntries(String label, Iterator iterator)
{
-<b class="userinput"><tt> System.out.println(&quot;\n--- &quot; + label + &quot; ---&quot;);
- try
+<b class="userinput"><tt> System.out.println("\n--- " + label + " ---");
+ while (iterator.hasNext())
{
- while (iterator.hasNext())
- {
- Map.Entry entry = (Map.Entry) iterator.next();
- System.out.println(entry.getKey().toString());
- System.out.println(entry.getValue().toString());
- }
- }
- finally
- {
- StoredIterator.close(iterator);
+ Map.Entry entry = (Map.Entry) iterator.next();
+ System.out.println(entry.getKey().toString());
+ System.out.println(entry.getValue().toString());
}</tt></b>
} </pre>
<p>
- It is very important that all iterators for stored collections
- are explicitly closed. To ensure they are closed, a <tt class="literal">finally</tt>
- clause should be used as shown above. If the iterator is not
- closed, the underlying Berkeley DB cursor is not closed either and
- the store may become unusable.
-</p>
- <p>
- If the iterator is cast to
- <a href="../../java/com/sleepycat/collections/StoredIterator.html" target="_top">StoredIterator</a>
-
- then its
- <a href="../../java/com/sleepycat/collections/StoredIterator.html#close()" target="_top">StoredIterator.close()</a>
-
- method can be called. Or, as shown above, the static
- <a href="../../java/com/sleepycat/collections/StoredIterator.html#close(java.util.Iterator)" target="_top">StoredIterator.close()</a>
-
- method can be called
- to avoid casting. The static form of this method can be called
- safely for any
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Iterator.html" target="_top">Iterator</a>.
- If an iterator for a non-stored collection is passed, it is simply
- ignored.
-</p>
- <p>
This is one of a small number of behavioral differences between
standard Java collections and stored collections. For a complete
list see
@@ -225,20 +193,20 @@ ShipmentData: quantity=100 </pre>
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="addingdatabaseitems.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="addingdatabaseitems.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="BasicProgram.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="handlingexceptions.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="handlingexceptions.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">
Adding Database Items
-  </td>
+  </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> 
+ <td width="40%" align="right" valign="top"> 
Handling Exceptions
</td>
</tr>
diff --git a/db/docs/collections/tutorial/sortedcollections.html b/db/docs/collections/tutorial/sortedcollections.html
index 13ba7467c..dae4ffb94 100644
--- a/db/docs/collections/tutorial/sortedcollections.html
+++ b/db/docs/collections/tutorial/sortedcollections.html
@@ -1,17 +1,17 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>
Using Sorted Collections
</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Berkeley DB Collections Tutorial" />
- <link rel="up" href="Tuple.html" title="Chapter 5. &#10;&#9;&#9;Using Tuples&#10;&#9;" />
+ <link rel="up" href="Tuple.html" title="Chapter 5. &#10;&#9;&#9;Using Tuples&#10;&#9;" />
<link rel="previous" href="tuple-serialentitybindings.html" title="&#10;Creating Tuple-Serial Entity Bindings&#10;" />
- <link rel="next" href="SerializableEntity.html" title="Chapter 6. &#10;&#9;&#9;Using Serializable Entities&#10;&#9;" />
+ <link rel="next" href="SerializableEntity.html" title="Chapter 6. &#10;&#9;&#9;Using Serializable Entities&#10;&#9;" />
</head>
<body>
<div class="navheader">
@@ -22,11 +22,11 @@
</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="tuple-serialentitybindings.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 5. 
+ <td width="20%" align="left"><a accesskey="p" href="tuple-serialentitybindings.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 5. 
Using Tuples
</th>
- <td width="20%" align="right"> <a accesskey="n" href="SerializableEntity.html">Next</a></td>
+ <td width="20%" align="right"> <a accesskey="n" href="SerializableEntity.html">Next</a></td>
</tr>
</table>
<hr />
@@ -61,10 +61,10 @@
</p>
<p>
Although not shown in the example, all methods of the
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap.html" target="_top">SortedMap</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedMap.html" target="_top">SortedMap</a>
and
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" target="_top">SortedSet</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" target="_top">SortedSet</a>
interfaces may be used with sorted collections. For example,
submaps and subsets may be created.
@@ -126,20 +126,20 @@ Shipment: part=P6 supplier=S1 quantity=100 </pre>
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="tuple-serialentitybindings.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="tuple-serialentitybindings.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="Tuple.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="SerializableEntity.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="SerializableEntity.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">
Creating Tuple-Serial Entity Bindings
- </td>
+ </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Chapter 6. 
+ <td width="40%" align="right" valign="top"> Chapter 6. 
Using Serializable Entities
</td>
</tr>
diff --git a/db/docs/collections/tutorial/transientfieldsinbinding.html b/db/docs/collections/tutorial/transientfieldsinbinding.html
index add369ec3..6470bfa58 100644
--- a/db/docs/collections/tutorial/transientfieldsinbinding.html
+++ b/db/docs/collections/tutorial/transientfieldsinbinding.html
@@ -1,16 +1,16 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>
Using Transient Fields in an Entity Binding
</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Berkeley DB Collections Tutorial" />
- <link rel="up" href="SerializableEntity.html" title="Chapter 6. &#10;&#9;&#9;Using Serializable Entities&#10;&#9;" />
- <link rel="previous" href="SerializableEntity.html" title="Chapter 6. &#10;&#9;&#9;Using Serializable Entities&#10;&#9;" />
+ <link rel="up" href="SerializableEntity.html" title="Chapter 6. &#10;&#9;&#9;Using Serializable Entities&#10;&#9;" />
+ <link rel="previous" href="SerializableEntity.html" title="Chapter 6. &#10;&#9;&#9;Using Serializable Entities&#10;&#9;" />
<link rel="next" href="removingredundantvalueclasses.html" title="&#10;&#9;&#9;Removing the Redundant Value Classes&#10;&#9;" />
</head>
<body>
@@ -22,11 +22,11 @@
</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="SerializableEntity.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 6. 
+ <td width="20%" align="left"><a accesskey="p" href="SerializableEntity.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 6. 
Using Serializable Entities
</th>
- <td width="20%" align="right"> <a accesskey="n" href="removingredundantvalueclasses.html">Next</a></td>
+ <td width="20%" align="right"> <a accesskey="n" href="removingredundantvalueclasses.html">Next</a></td>
</tr>
</table>
<hr />
@@ -154,20 +154,20 @@ public class SampleViews
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="SerializableEntity.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="SerializableEntity.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="SerializableEntity.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="removingredundantvalueclasses.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="removingredundantvalueclasses.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Chapter 6. 
+ <td width="40%" align="left" valign="top">Chapter 6. 
Using Serializable Entities
-  </td>
+  </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> 
+ <td width="40%" align="right" valign="top"> 
Removing the Redundant Value Classes
</td>
</tr>
diff --git a/db/docs/collections/tutorial/tuple-serialentitybindings.html b/db/docs/collections/tutorial/tuple-serialentitybindings.html
index 649e3770c..553f0ed78 100644
--- a/db/docs/collections/tutorial/tuple-serialentitybindings.html
+++ b/db/docs/collections/tutorial/tuple-serialentitybindings.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>
Creating Tuple-Serial Entity Bindings
</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Berkeley DB Collections Tutorial" />
- <link rel="up" href="Tuple.html" title="Chapter 5. &#10;&#9;&#9;Using Tuples&#10;&#9;" />
+ <link rel="up" href="Tuple.html" title="Chapter 5. &#10;&#9;&#9;Using Tuples&#10;&#9;" />
<link rel="previous" href="tuplekeybindings.html" title="&#10;&#9;&#9;Creating Tuple Key Bindings&#10;&#9;" />
<link rel="next" href="sortedcollections.html" title="&#10;&#9;&#9;Using Sorted Collections&#10;&#9;" />
</head>
@@ -22,11 +22,11 @@ Creating Tuple-Serial Entity Bindings
</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="tuplekeybindings.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 5. 
+ <td width="20%" align="left"><a accesskey="p" href="tuplekeybindings.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 5. 
Using Tuples
</th>
- <td width="20%" align="right"> <a accesskey="n" href="sortedcollections.html">Next</a></td>
+ <td width="20%" align="right"> <a accesskey="n" href="sortedcollections.html">Next</a></td>
</tr>
</table>
<hr />
@@ -174,20 +174,20 @@ public class SampleViews
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="tuplekeybindings.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="tuplekeybindings.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="Tuple.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="sortedcollections.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="sortedcollections.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">
Creating Tuple Key Bindings
-  </td>
+  </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> 
+ <td width="40%" align="right" valign="top"> 
Using Sorted Collections
</td>
</tr>
diff --git a/db/docs/collections/tutorial/tuplekeybindings.html b/db/docs/collections/tutorial/tuplekeybindings.html
index 3a3b80633..ce7939996 100644
--- a/db/docs/collections/tutorial/tuplekeybindings.html
+++ b/db/docs/collections/tutorial/tuplekeybindings.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>
Creating Tuple Key Bindings
</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Berkeley DB Collections Tutorial" />
- <link rel="up" href="Tuple.html" title="Chapter 5. &#10;&#9;&#9;Using Tuples&#10;&#9;" />
+ <link rel="up" href="Tuple.html" title="Chapter 5. &#10;&#9;&#9;Using Tuples&#10;&#9;" />
<link rel="previous" href="tupleswithkeycreators.html" title="&#10;&#9;&#9;Using Tuples with Key Creators&#10;&#9;" />
<link rel="next" href="tuple-serialentitybindings.html" title="&#10;Creating Tuple-Serial Entity Bindings&#10;" />
</head>
@@ -22,11 +22,11 @@
</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="tupleswithkeycreators.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 5. 
+ <td width="20%" align="left"><a accesskey="p" href="tupleswithkeycreators.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 5. 
Using Tuples
</th>
- <td width="20%" align="right"> <a accesskey="n" href="tuple-serialentitybindings.html">Next</a></td>
+ <td width="20%" align="right"> <a accesskey="n" href="tuple-serialentitybindings.html">Next</a></td>
</tr>
</table>
<hr />
@@ -49,7 +49,7 @@
Because keys are no longer stored as serialized objects, the
<tt class="classname">PartKey</tt>, <tt class="classname">SupplierKey</tt> and <tt class="classname">ShipmentKey</tt> classes
no longer implement the
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/io/Serializable.html" target="_top">Serializable</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Serializable.html" target="_top">Serializable</a>
interface (this is the only change to these classes and is not
shown below).
@@ -95,7 +95,7 @@ public class SampleViews
<p>
For the City key, however, a custom binding class is not needed
because the key class is a primitive Java type,
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" target="_top">String</a>.
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" target="_top">String</a>.
For any primitive Java type, a tuple binding may be created using the
<a href="../../java/com/sleepycat/bind/tuple/TupleBinding.html#getPrimitiveBinding(java.lang.Class)" target="_top">TupleBinding.getPrimitiveBinding</a>
@@ -197,20 +197,20 @@ public class SampleViews
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="tupleswithkeycreators.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="tupleswithkeycreators.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="Tuple.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="tuple-serialentitybindings.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="tuple-serialentitybindings.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">
Using Tuples with Key Creators
-  </td>
+  </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> 
+ <td width="40%" align="right" valign="top"> 
Creating Tuple-Serial Entity Bindings
</td>
</tr>
diff --git a/db/docs/collections/tutorial/tupleswithkeycreators.html b/db/docs/collections/tutorial/tupleswithkeycreators.html
index 57cb10fcc..2df0a5cee 100644
--- a/db/docs/collections/tutorial/tupleswithkeycreators.html
+++ b/db/docs/collections/tutorial/tupleswithkeycreators.html
@@ -1,16 +1,16 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>
Using Tuples with Key Creators
</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Berkeley DB Collections Tutorial" />
- <link rel="up" href="Tuple.html" title="Chapter 5. &#10;&#9;&#9;Using Tuples&#10;&#9;" />
- <link rel="previous" href="Tuple.html" title="Chapter 5. &#10;&#9;&#9;Using Tuples&#10;&#9;" />
+ <link rel="up" href="Tuple.html" title="Chapter 5. &#10;&#9;&#9;Using Tuples&#10;&#9;" />
+ <link rel="previous" href="Tuple.html" title="Chapter 5. &#10;&#9;&#9;Using Tuples&#10;&#9;" />
<link rel="next" href="tuplekeybindings.html" title="&#10;&#9;&#9;Creating Tuple Key Bindings&#10;&#9;" />
</head>
<body>
@@ -22,11 +22,11 @@
</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="Tuple.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 5. 
+ <td width="20%" align="left"><a accesskey="p" href="Tuple.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 5. 
Using Tuples
</th>
- <td width="20%" align="right"> <a accesskey="n" href="tuplekeybindings.html">Next</a></td>
+ <td width="20%" align="right"> <a accesskey="n" href="tuplekeybindings.html">Next</a></td>
</tr>
</table>
<hr />
@@ -72,7 +72,7 @@
<a href="../../java/com/sleepycat/bind/tuple/TupleOutput.html" target="_top">TupleOutput</a>
classes are used instead of
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" target="_top">Object</a>
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" target="_top">Object</a>
(representing a deserialized object).
</p>
@@ -183,20 +183,20 @@ public class SampleDatabase
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="Tuple.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="Tuple.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="Tuple.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="tuplekeybindings.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="tuplekeybindings.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Chapter 5. 
+ <td width="40%" align="left" valign="top">Chapter 5. 
Using Tuples
-  </td>
+  </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> 
+ <td width="40%" align="right" valign="top"> 
Creating Tuple Key Bindings
</td>
</tr>
diff --git a/db/docs/collections/tutorial/tutorialintroduction.html b/db/docs/collections/tutorial/tutorialintroduction.html
index 39c1c349a..36d66bc55 100644
--- a/db/docs/collections/tutorial/tutorialintroduction.html
+++ b/db/docs/collections/tutorial/tutorialintroduction.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Tutorial Introduction</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Berkeley DB Collections Tutorial" />
- <link rel="up" href="intro.html" title="Chapter 1. &#10; Introduction&#10; " />
+ <link rel="up" href="intro.html" title="Chapter 1. &#10; Introduction&#10; " />
<link rel="previous" href="developing.html" title="Developing a DB Collections Application" />
- <link rel="next" href="BasicProgram.html" title="Chapter 2. &#10;&#9;&#9;The Basic Program&#10;&#9;" />
+ <link rel="next" href="BasicProgram.html" title="Chapter 2. &#10;&#9;&#9;The Basic Program&#10;&#9;" />
</head>
<body>
<div class="navheader">
@@ -18,11 +18,11 @@
<th colspan="3" align="center">Tutorial Introduction</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="developing.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 1. 
+ <td width="20%" align="left"><a accesskey="p" href="developing.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 1. 
Introduction
</th>
- <td width="20%" align="right"> <a accesskey="n" href="BasicProgram.html">Next</a></td>
+ <td width="20%" align="right"> <a accesskey="n" href="BasicProgram.html">Next</a></td>
</tr>
</table>
<hr />
@@ -38,12 +38,12 @@
</div>
<p>
Most of the remainder of this document illustrates the use of the
- Java Collections API by presenting a tutorial that describes usage of the API.
+ DB Java Collections API by presenting a tutorial that describes usage of the API.
This tutorial builds a shipment database, a familiar example from classic
database texts.
</p>
<p>
- The examples illustrate the following concepts of the Java Collections API:
+ The examples illustrate the following concepts of the DB Java Collections API:
</p>
<div class="itemizedlist">
<ul type="disc">
@@ -172,12 +172,12 @@
<tt class="classname">SupplierData</tt>,
<tt class="classname">ShipmentKey</tt> and <tt class="classname">ShipmentData</tt>. In
addition, because the Part's Weight field is itself composed of two
- fields &#8212; the weight value and the unit of measure &#8212; it is
+ fields — the weight value and the unit of measure — it is
represented by a separate <tt class="classname">Weight</tt> class. These classes will
be defined in the first example program.
</p>
<p>
- In general the Java Collections API uses bindings to
+ In general the DB Java Collections API uses bindings to
describe how Java objects are stored. A binding defines the stored
data syntax and the mapping between a Java object and the stored
data. The example programs show how to create different types of
@@ -387,18 +387,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="developing.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="developing.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="intro.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="BasicProgram.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="BasicProgram.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Developing a DB Collections Application </td>
+ <td width="40%" align="left" valign="top">Developing a DB Collections Application </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Chapter 2. 
+ <td width="40%" align="right" valign="top"> Chapter 2. 
The Basic Program
</td>
</tr>
diff --git a/db/docs/collections/tutorial/usingtransactions.html b/db/docs/collections/tutorial/usingtransactions.html
index 36c7a3594..c58dc1508 100644
--- a/db/docs/collections/tutorial/usingtransactions.html
+++ b/db/docs/collections/tutorial/usingtransactions.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>
Using Transactions
</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Berkeley DB Collections Tutorial" />
- <link rel="up" href="BasicProgram.html" title="Chapter 2. &#10;&#9;&#9;The Basic Program&#10;&#9;" />
+ <link rel="up" href="BasicProgram.html" title="Chapter 2. &#10;&#9;&#9;The Basic Program&#10;&#9;" />
<link rel="previous" href="implementingmain.html" title="&#10;&#9;&#9;Implementing the Main Program&#10;&#9;" />
<link rel="next" href="addingdatabaseitems.html" title="&#10;&#9;&#9;Adding Database Items&#10;&#9;" />
</head>
@@ -22,11 +22,11 @@
</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="implementingmain.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 2. 
+ <td width="20%" align="left"><a accesskey="p" href="implementingmain.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 2. 
The Basic Program
</th>
- <td width="20%" align="right"> <a accesskey="n" href="addingdatabaseitems.html">Next</a></td>
+ <td width="20%" align="right"> <a accesskey="n" href="addingdatabaseitems.html">Next</a></td>
</tr>
</table>
<hr />
@@ -46,7 +46,7 @@
DB transactional applications have standard
transactional characteristics: recoverability, atomicity and
integrity (this is sometimes also referred to generically as <span class="emphasis"><em>ACID
- properties</em></span>). The Java Collections API provides these
+ properties</em></span>). The DB Java Collections API provides these
transactional capabilities using a <span class="emphasis"><em>transaction-per-thread</em></span>
model. Once a transaction is begun, it is implicitly associated
with the current thread until it is committed or aborted. This
@@ -65,13 +65,13 @@
Since the Java collections API is used for data access, there
is no way to pass a transaction object to methods such
as
- <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#put" target="_top">Map.put</a>.
+ <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#put" target="_top">Map.put</a>.
</p>
</li>
</ul>
</div>
<p>
- The Java Collections API provides two transaction APIs. The
+ The DB Java Collections API provides two transaction APIs. The
lower-level API is the
<a href="../../java/com/sleepycat/collections/CurrentTransaction.html" target="_top">CurrentTransaction</a>
@@ -179,8 +179,8 @@ public class Sample
<p>
For each call to <tt class="methodname">TransactionRunner.run()</tt>, a separate
transaction will be performed. The use of two transactions in the
- example &#8212; one for populating the database and another for printing
- its contents &#8212; is arbitrary. A real-life application should be
+ example — one for populating the database and another for printing
+ its contents — is arbitrary. A real-life application should be
designed to create transactions for each group of operations that
should have ACID properties, while also
taking into account the impact of transactions on performance.
@@ -198,20 +198,20 @@ public class Sample
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="implementingmain.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="implementingmain.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="BasicProgram.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="addingdatabaseitems.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="addingdatabaseitems.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">
Implementing the Main Program
-  </td>
+  </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> 
+ <td width="40%" align="right" valign="top"> 
Adding Database Items
</td>
</tr>
diff --git a/db/docs/gsg/C/BerkeleyDB-Core-C-GSG.pdf b/db/docs/gsg/C/BerkeleyDB-Core-C-GSG.pdf
index c6abf15f1..f141a3fa8 100644
--- a/db/docs/gsg/C/BerkeleyDB-Core-C-GSG.pdf
+++ b/db/docs/gsg/C/BerkeleyDB-Core-C-GSG.pdf
Binary files differ
diff --git a/db/docs/gsg/C/CoreCursorUsage.html b/db/docs/gsg/C/CoreCursorUsage.html
index e7263ef2e..7d4351d9f 100644
--- a/db/docs/gsg/C/CoreCursorUsage.html
+++ b/db/docs/gsg/C/CoreCursorUsage.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Cursor Example</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="Cursors.html" title="Chapter 4. Using Cursors" />
+ <link rel="up" href="Cursors.html" title="Chapter 4. Using Cursors" />
<link rel="previous" href="ReplacingEntryWCursor.html" title="Replacing Records Using Cursors" />
- <link rel="next" href="indexes.html" title="Chapter 5. Secondary Databases" />
+ <link rel="next" href="indexes.html" title="Chapter 5. Secondary Databases" />
</head>
<body>
<div class="navheader">
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Cursor Example</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="ReplacingEntryWCursor.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 4. Using Cursors</th>
- <td width="20%" align="right"> <a accesskey="n" href="indexes.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="ReplacingEntryWCursor.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 4. Using Cursors</th>
+ <td width="20%" align="right"> <a accesskey="n" href="indexes.html">Next</a></td>
</tr>
</table>
<hr />
@@ -109,7 +109,7 @@
<a id="c_cursor10"></a>
<pre class="programlisting">/* File: example_database_read.c */
/* gettingstarted_common.h includes db.h for us */
-#include &quot;gettingstarted_common.h&quot;
+#include "gettingstarted_common.h"
/* Forward declarations */
char * show_inventory_item(void *);
@@ -149,9 +149,9 @@ main(int argc, char *argv[])
set_db_filenames(&amp;my_stock);
/* Open all databases */
- ret = databases_setup(&amp;my_stock, &quot;example_database_read&quot;, stderr);
+ ret = databases_setup(&amp;my_stock, "example_database_read", stderr);
if (ret != 0) {
- fprintf(stderr, &quot;Error opening databases\n&quot;);
+ fprintf(stderr, "Error opening databases\n");
databases_close(&amp;my_stock);
return (ret);
}
@@ -192,7 +192,7 @@ main(int argc, char *argv[])
*/
exit_value = 0;
while ((ret =
- cursorp-&gt;c_get(cursorp, &amp;key, &amp;data, DB_NEXT))
+ cursorp-&gt;get(cursorp, &amp;key, &amp;data, DB_NEXT))
== 0)
{
the_vendor = show_inventory_item(data.data);
@@ -204,7 +204,7 @@ main(int argc, char *argv[])
}
/* Close the cursor */
- cursorp-&gt;c_close(cursorp);
+ cursorp-&gt;close(cursorp);
return(exit_value);
} </pre>
<p>
@@ -258,12 +258,12 @@ show_inventory_item(void *vBuf)
vendor_name = buf + buf_pos;
/* Display all this information */
- printf(&quot;name: %s\n&quot;, name);
- printf(&quot;\tSKU: %s\n&quot;, sku);
- printf(&quot;\tCategory: %s\n&quot;, category);
- printf(&quot;\tPrice: %.2f\n&quot;, price);
- printf(&quot;\tQuantity: %i\n&quot;, quantity);
- printf(&quot;\tVendor:\n&quot;);
+ printf("name: %s\n", name);
+ printf("\tSKU: %s\n", sku);
+ printf("\tCategory: %s\n", category);
+ printf("\tPrice: %.2f\n", price);
+ printf("\tQuantity: %i\n", quantity);
+ printf("\tVendor:\n");
/* Return the vendor's name */
return(vendor_name);
@@ -311,17 +311,17 @@ show_vendor_record(char *vendor_name, DB *vendor_dbp)
/* Get the record */
ret = vendor_dbp-&gt;get(vendor_dbp, 0, &amp;key, &amp;data, 0);
if (ret != 0) {
- vendor_dbp-&gt;err(vendor_dbp, ret, &quot;Error searching for vendor: '%s'&quot;,
+ vendor_dbp-&gt;err(vendor_dbp, ret, "Error searching for vendor: '%s'",
vendor_name);
return(ret);
} else {
- printf(&quot;\t\t%s\n&quot;, my_vendor.name);
- printf(&quot;\t\t%s\n&quot;, my_vendor.street);
- printf(&quot;\t\t%s, %s\n&quot;, my_vendor.city, my_vendor.state);
- printf(&quot;\t\t%s\n\n&quot;, my_vendor.zipcode);
- printf(&quot;\t\t%s\n\n&quot;, my_vendor.phone_number);
- printf(&quot;\t\tContact: %s\n&quot;, my_vendor.sales_rep);
- printf(&quot;\t\t%s\n&quot;, my_vendor.sales_rep_phone);
+ printf("\t\t%s\n", my_vendor.name);
+ printf("\t\t%s\n", my_vendor.street);
+ printf("\t\t%s, %s\n", my_vendor.city, my_vendor.state);
+ printf("\t\t%s\n\n", my_vendor.zipcode);
+ printf("\t\t%s\n\n", my_vendor.phone_number);
+ printf("\t\tContact: %s\n", my_vendor.sales_rep);
+ printf("\t\t%s\n", my_vendor.sales_rep_phone);
}
return(0);
} </pre>
@@ -337,18 +337,18 @@ show_vendor_record(char *vendor_name, DB *vendor_dbp)
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="ReplacingEntryWCursor.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="ReplacingEntryWCursor.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="Cursors.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="indexes.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="indexes.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Replacing Records Using Cursors </td>
+ <td width="40%" align="left" valign="top">Replacing Records Using Cursors </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Chapter 5. Secondary Databases</td>
+ <td width="40%" align="right" valign="top"> Chapter 5. Secondary Databases</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/C/CoreDBAdmin.html b/db/docs/gsg/C/CoreDBAdmin.html
index 65f102a61..b7b2e53d0 100644
--- a/db/docs/gsg/C/CoreDBAdmin.html
+++ b/db/docs/gsg/C/CoreDBAdmin.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Administrative Methods</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="DB.html" title="Chapter 2. Databases" />
+ <link rel="up" href="DB.html" title="Chapter 2. Databases" />
<link rel="previous" href="DBOpenFlags.html" title="Database Open Flags" />
<link rel="next" href="dbErrorReporting.html" title="Error Reporting Functions" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Administrative Methods</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="DBOpenFlags.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 2. Databases</th>
- <td width="20%" align="right"> <a accesskey="n" href="dbErrorReporting.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="DBOpenFlags.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 2. Databases</th>
+ <td width="20%" align="right"> <a accesskey="n" href="dbErrorReporting.html">Next</a></td>
</tr>
</table>
<hr />
@@ -82,10 +82,10 @@ dbp-&gt;get_open_flags(dbp, &amp;open_flags); </pre>
...
DB *dbp;
-/* Database open and subsequent operations omitted for clarity */
+/* Database handle creation omitted for clarity */
dbp-&gt;remove(dbp, /* Database pointer */
- &quot;mydb.db&quot;, /* Database file to remove */
+ "mydb.db", /* Database file to remove */
NULL, /* Database to remove. This is
* NULL so the entire file is
* removed. */
@@ -110,14 +110,14 @@ dbp-&gt;remove(dbp, /* Database pointer */
...
DB *dbp;
-/* Database open and subsequent operations omitted for clarity */
+/* Database handle creation omitted for clarity */
dbp-&gt;rename(dbp, /* Database pointer */
- &quot;mydb.db&quot;, /* Database file to rename */
+ "mydb.db", /* Database file to rename */
NULL, /* Database to rename. This is
* NULL so the entire file is
* renamed. */
- &quot;newdb.db&quot;, /* New database file name */
+ "newdb.db", /* New database file name */
0); /* Flags. None used. */</pre>
</li>
</ul>
@@ -130,18 +130,18 @@ dbp-&gt;rename(dbp, /* Database pointer */
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="DBOpenFlags.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="DBOpenFlags.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="DB.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="dbErrorReporting.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="dbErrorReporting.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Database Open Flags </td>
+ <td width="40%" align="left" valign="top">Database Open Flags </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Error Reporting Functions</td>
+ <td width="40%" align="right" valign="top"> Error Reporting Functions</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/C/CoreDbUsage.html b/db/docs/gsg/C/CoreDbUsage.html
index 729090baa..8dfdf050f 100644
--- a/db/docs/gsg/C/CoreDbUsage.html
+++ b/db/docs/gsg/C/CoreDbUsage.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Database Example</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="DB.html" title="Chapter 2. Databases" />
+ <link rel="up" href="DB.html" title="Chapter 2. Databases" />
<link rel="previous" href="CoreEnvUsage.html" title="Managing Databases in Environments" />
- <link rel="next" href="DBEntry.html" title="Chapter 3. Database Records" />
+ <link rel="next" href="DBEntry.html" title="Chapter 3. Database Records" />
</head>
<body>
<div class="navheader">
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Database Example</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="CoreEnvUsage.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 2. Databases</th>
- <td width="20%" align="right"> <a accesskey="n" href="DBEntry.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="CoreEnvUsage.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 2. Databases</th>
+ <td width="20%" align="right"> <a accesskey="n" href="DBEntry.html">Next</a></td>
</tr>
</table>
<hr />
@@ -101,7 +101,7 @@ void set_db_filenames(STOCK_DBS *my_stock); </pre>
</p>
<a id="c_db12"></a>
<pre class="programlisting">/* File: gettingstarted_common.c */
-#include &quot;gettingstarted_common.h&quot;
+#include "gettingstarted_common.h"
/* Initializes the STOCK_DBS struct.*/
void
@@ -124,13 +124,13 @@ set_db_filenames(STOCK_DBS *my_stock)
/* Create the Inventory DB file name */
size = strlen(my_stock-&gt;db_home_dir) + strlen(INVENTORYDB) + 1;
my_stock-&gt;inventory_db_name = malloc(size);
- snprintf(my_stock-&gt;inventory_db_name, size, &quot;%s%s&quot;,
+ snprintf(my_stock-&gt;inventory_db_name, size, "%s%s",
my_stock-&gt;db_home_dir, INVENTORYDB);
/* Create the Vendor DB file name */
size = strlen(my_stock-&gt;db_home_dir) + strlen(VENDORDB) + 1;
my_stock-&gt;vendor_db_name = malloc(size);
- snprintf(my_stock-&gt;vendor_db_name, size, &quot;%s%s&quot;,
+ snprintf(my_stock-&gt;vendor_db_name, size, "%s%s",
my_stock-&gt;db_home_dir, VENDORDB);
} </pre>
</div>
@@ -163,7 +163,7 @@ open_database(DB **dbpp, /* The DB handle that we are opening */
/* Initialize the DB handle */
ret = db_create(&amp;dbp, NULL, 0);
if (ret != 0) {
- fprintf(error_file_pointer, &quot;%s: %s\n&quot;, program_name,
+ fprintf(error_file_pointer, "%s: %s\n", program_name,
db_strerror(ret));
return(ret);
}
@@ -187,7 +187,7 @@ open_database(DB **dbpp, /* The DB handle that we are opening */
open_flags, /* Open flags */
0); /* File mode. Using defaults */
if (ret != 0) {
- dbp-&gt;err(dbp, ret, &quot;Database '%s' open failed.&quot;, file_name);
+ dbp-&gt;err(dbp, ret, "Database '%s' open failed.", file_name);
return(ret);
}
@@ -234,7 +234,7 @@ databases_setup(STOCK_DBS *my_stock, const char *program_name,
*/
return (ret);
- printf(&quot;databases opened successfully\n&quot;);
+ printf("databases opened successfully\n");
return (0);
}</pre>
</div>
@@ -260,18 +260,18 @@ databases_close(STOCK_DBS *my_stock)
if (my_stock-&gt;inventory_dbp != NULL) {
ret = my_stock-&gt;inventory_dbp-&gt;close(my_stock-&gt;inventory_dbp, 0);
if (ret != 0)
- fprintf(stderr, &quot;Inventory database close failed: %s\n&quot;,
+ fprintf(stderr, "Inventory database close failed: %s\n",
db_strerror(ret));
}
if (my_stock-&gt;vendor_dbp != NULL) {
ret = my_stock-&gt;vendor_dbp-&gt;close(my_stock-&gt;vendor_dbp, 0);
if (ret != 0)
- fprintf(stderr, &quot;Vendor database close failed: %s\n&quot;,
+ fprintf(stderr, "Vendor database close failed: %s\n",
db_strerror(ret));
}
- printf(&quot;databases closed.\n&quot;);
+ printf("databases closed.\n");
return (0);
} </pre>
</div>
@@ -280,18 +280,18 @@ databases_close(STOCK_DBS *my_stock)
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="CoreEnvUsage.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="CoreEnvUsage.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="DB.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="DBEntry.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="DBEntry.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Managing Databases in Environments </td>
+ <td width="40%" align="left" valign="top">Managing Databases in Environments </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Chapter 3. Database Records</td>
+ <td width="40%" align="right" valign="top"> Chapter 3. Database Records</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/C/CoreEnvUsage.html b/db/docs/gsg/C/CoreEnvUsage.html
index 07a411400..8979f74f8 100644
--- a/db/docs/gsg/C/CoreEnvUsage.html
+++ b/db/docs/gsg/C/CoreEnvUsage.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Managing Databases in Environments</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="DB.html" title="Chapter 2. Databases" />
+ <link rel="up" href="DB.html" title="Chapter 2. Databases" />
<link rel="previous" href="dbErrorReporting.html" title="Error Reporting Functions" />
<link rel="next" href="CoreDbUsage.html" title="Database Example" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Managing Databases in Environments</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="dbErrorReporting.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 2. Databases</th>
- <td width="20%" align="right"> <a accesskey="n" href="CoreDbUsage.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="dbErrorReporting.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 2. Databases</th>
+ <td width="20%" align="right"> <a accesskey="n" href="CoreDbUsage.html">Next</a></td>
</tr>
</table>
<hr />
@@ -73,7 +73,7 @@ int ret; /* function return value */
*/
ret = db_env_create(&amp;myEnv, 0);
if (ret != 0) {
- fprintf(stderr, &quot;Error creating env handle: %s\n&quot;, db_strerror(ret));
+ fprintf(stderr, "Error creating env handle: %s\n", db_strerror(ret));
return -1;
}
@@ -83,11 +83,11 @@ env_flags = DB_CREATE | /* If the environment does not exist,
DB_INIT_MPOOL; /* Initialize the in-memory cache. */
ret = myEnv-&gt;open(myEnv, /* DB_ENV ptr */
- &quot;/export1/testEnv&quot;, /* env home directory */
+ "/export1/testEnv", /* env home directory */
env_flags, /* Open flags */
0); /* File mode (default) */
if (ret != 0) {
- fprintf(stderr, &quot;Environment open failed: %s&quot;, db_strerror(ret));
+ fprintf(stderr, "Environment open failed: %s", db_strerror(ret));
return -1;
} </pre>
<p>
@@ -112,7 +112,7 @@ db_flags = DB_CREATE; /* If the database does not exist,
/* open the database */
ret = dbp-&gt;open(dbp, /* DB structure pointer */
NULL, /* Transaction pointer */
- &quot;my_db.db&quot;, /* On-disk file that holds the database. */
+ "my_db.db", /* On-disk file that holds the database. */
NULL, /* Optional logical database name */
DB_BTREE, /* Database access method */
db_flags, /* Open flags */
@@ -141,18 +141,18 @@ if (myEnv != NULL) {
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="dbErrorReporting.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="dbErrorReporting.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="DB.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="CoreDbUsage.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="CoreDbUsage.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Error Reporting Functions </td>
+ <td width="40%" align="left" valign="top">Error Reporting Functions </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Database Example</td>
+ <td width="40%" align="right" valign="top"> Database Example</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/C/Cursors.html b/db/docs/gsg/C/Cursors.html
index 0f8b696e9..8d8e35ae2 100644
--- a/db/docs/gsg/C/Cursors.html
+++ b/db/docs/gsg/C/Cursors.html
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <title>Chapter 4. Using Cursors</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Chapter 4. Using Cursors</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
@@ -15,12 +15,12 @@
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
- <th colspan="3" align="center">Chapter 4. Using Cursors</th>
+ <th colspan="3" align="center">Chapter 4. Using Cursors</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="DbUsage.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="Positioning.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="DbUsage.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="Positioning.html">Next</a></td>
</tr>
</table>
<hr />
@@ -29,7 +29,7 @@
<div class="titlepage">
<div>
<div>
- <h2 class="title"><a id="Cursors"></a>Chapter 4. Using Cursors</h2>
+ <h2 class="title"><a id="Cursors"></a>Chapter 4. Using Cursors</h2>
</div>
</div>
<div></div>
@@ -133,7 +133,7 @@ my_database-&gt;cursor(my_database, NULL, &amp;cursorp, 0); </pre>
<p>
When you are done with the cursor, you should close it. To close a
cursor, call the
- <tt class="methodname">DBC-&gt;c_close()</tt>
+ <tt class="methodname">DBC-&gt;close()</tt>
method. Note that closing your database while cursors are still opened
within the scope of the DB handle, especially if those cursors are
@@ -151,7 +151,7 @@ DBC *cursorp;
/* Database and cursor open omitted for clarity */
if (cursorp != NULL)
- cursorp-&gt;c_close(cursorp);
+ cursorp-&gt;close(cursorp);
if (my_database != NULL)
my_database-&gt;close(my_database, 0); </pre>
@@ -161,18 +161,18 @@ if (my_database != NULL)
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="DbUsage.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="DbUsage.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="Positioning.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="Positioning.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Database Usage Example </td>
+ <td width="40%" align="left" valign="top">Database Usage Example </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Getting Records Using the Cursor</td>
+ <td width="40%" align="right" valign="top"> Getting Records Using the Cursor</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/C/DB.html b/db/docs/gsg/C/DB.html
index 08b5724a0..ce78ae0d1 100644
--- a/db/docs/gsg/C/DB.html
+++ b/db/docs/gsg/C/DB.html
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <title>Chapter 2. Databases</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Chapter 2. Databases</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
@@ -15,12 +15,12 @@
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
- <th colspan="3" align="center">Chapter 2. Databases</th>
+ <th colspan="3" align="center">Chapter 2. Databases</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="gettingit.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="coredbclose.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="gettingit.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="coredbclose.html">Next</a></td>
</tr>
</table>
<hr />
@@ -29,7 +29,7 @@
<div class="titlepage">
<div>
<div>
- <h2 class="title"><a id="DB"></a>Chapter 2. Databases</h2>
+ <h2 class="title"><a id="DB"></a>Chapter 2. Databases</h2>
</div>
</div>
<div></div>
@@ -158,7 +158,7 @@ flags = DB_CREATE; /* If the database does not exist,
/* open the database */
ret = dbp-&gt;open(dbp, /* DB structure pointer */
NULL, /* Transaction pointer */
- &quot;my_db.db&quot;, /* On-disk file that holds the database. */
+ "my_db.db", /* On-disk file that holds the database. */
NULL, /* Optional logical database name */
DB_BTREE, /* Database access method */
flags, /* Open flags */
@@ -172,18 +172,18 @@ if (ret != 0) {
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="gettingit.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="gettingit.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="coredbclose.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="coredbclose.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Getting and Using DB  </td>
+ <td width="40%" align="left" valign="top">Getting and Using DB  </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Closing Databases</td>
+ <td width="40%" align="right" valign="top"> Closing Databases</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/C/DBEntry.html b/db/docs/gsg/C/DBEntry.html
index 321148040..d3e162aba 100644
--- a/db/docs/gsg/C/DBEntry.html
+++ b/db/docs/gsg/C/DBEntry.html
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <title>Chapter 3. Database Records</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Chapter 3. Database Records</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
@@ -15,12 +15,12 @@
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
- <th colspan="3" align="center">Chapter 3. Database Records</th>
+ <th colspan="3" align="center">Chapter 3. Database Records</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="CoreDbUsage.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="usingDbt.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="CoreDbUsage.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="usingDbt.html">Next</a></td>
</tr>
</table>
<hr />
@@ -29,7 +29,7 @@
<div class="titlepage">
<div>
<div>
- <h2 class="title"><a id="DBEntry"></a>Chapter 3. Database Records</h2>
+ <h2 class="title"><a id="DBEntry"></a>Chapter 3. Database Records</h2>
</div>
</div>
<div></div>
@@ -95,7 +95,7 @@
</dl>
</div>
<p>
- DB records contain two parts &#8212; a key and some data. Both the key
+ DB records contain two parts — a key and some data. Both the key
and its corresponding data are
encapsulated in
@@ -134,7 +134,7 @@
<span><tt class="classname">DBT</tt> structures</span>
- &#8212; one for the key and another for the data.
+ — one for the key and another for the data.
</p>
@@ -153,7 +153,7 @@
DBT key, data;
float money = 122.45;
-char *description = &quot;Grocery bill.&quot;;
+char *description = "Grocery bill.";
/* Zero out the DBTs before using them. */
memset(&amp;key, 0, sizeof(DBT));
@@ -211,18 +211,18 @@ description = data.data;</pre>
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="CoreDbUsage.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="CoreDbUsage.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="usingDbt.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="usingDbt.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Database Example </td>
+ <td width="40%" align="left" valign="top">Database Example </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Reading and Writing Database Records</td>
+ <td width="40%" align="right" valign="top"> Reading and Writing Database Records</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/C/DBOpenFlags.html b/db/docs/gsg/C/DBOpenFlags.html
index fccbb1831..c8cc1751d 100644
--- a/db/docs/gsg/C/DBOpenFlags.html
+++ b/db/docs/gsg/C/DBOpenFlags.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Database Open Flags</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="DB.html" title="Chapter 2. Databases" />
+ <link rel="up" href="DB.html" title="Chapter 2. Databases" />
<link rel="previous" href="coredbclose.html" title="Closing Databases" />
<link rel="next" href="CoreDBAdmin.html" title="Administrative Methods" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Database Open Flags</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="coredbclose.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 2. Databases</th>
- <td width="20%" align="right"> <a accesskey="n" href="CoreDBAdmin.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="coredbclose.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 2. Databases</th>
+ <td width="20%" align="right"> <a accesskey="n" href="CoreDBAdmin.html">Next</a></td>
</tr>
</table>
<hr />
@@ -36,7 +36,7 @@
</div>
<p>
The following are the flags that you may want to use at database open time.
- Note that this list is not exhaustive &#8212; it includes only those flags likely
+ Note that this list is not exhaustive — it includes only those flags likely
to be of interest for introductory, single-threaded
database applications. For a complete list of the flags available to you, see the
<i class="citetitle">Berkeley DB C API guide.</i>
@@ -99,18 +99,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="coredbclose.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="coredbclose.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="DB.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="CoreDBAdmin.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="CoreDBAdmin.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Closing Databases </td>
+ <td width="40%" align="left" valign="top">Closing Databases </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Administrative Methods</td>
+ <td width="40%" align="right" valign="top"> Administrative Methods</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/C/DbUsage.html b/db/docs/gsg/C/DbUsage.html
index a1d35b612..6bcfd44fa 100644
--- a/db/docs/gsg/C/DbUsage.html
+++ b/db/docs/gsg/C/DbUsage.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Database Usage Example</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="DBEntry.html" title="Chapter 3. Database Records" />
+ <link rel="up" href="DBEntry.html" title="Chapter 3. Database Records" />
<link rel="previous" href="cstructs.html" title="Using C Structures with DB" />
- <link rel="next" href="Cursors.html" title="Chapter 4. Using Cursors" />
+ <link rel="next" href="Cursors.html" title="Chapter 4. Using Cursors" />
</head>
<body>
<div class="navheader">
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Database Usage Example</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="cstructs.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 3. Database Records</th>
- <td width="20%" align="right"> <a accesskey="n" href="Cursors.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="cstructs.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 3. Database Records</th>
+ <td width="20%" align="right"> <a accesskey="n" href="Cursors.html">Next</a></td>
</tr>
</table>
<hr />
@@ -113,7 +113,7 @@
</p>
<a id="c_dbt11"></a>
<pre class="programlisting">/* example_database_load.c */
-#include &quot;gettingstarted_common.h&quot;
+#include "gettingstarted_common.h"
/* Forward declarations */
@@ -145,7 +145,7 @@ main(int argc, char *argv[])
* identify the location of the flat-text data
* input files.
*/
- basename = &quot;./&quot;;
+ basename = "./";
/*
* Parse the command line arguments here and determine
@@ -164,29 +164,29 @@ main(int argc, char *argv[])
/* Find our input files */
size = strlen(basename) + strlen(INVENTORY_FILE) + 1;
inventory_file = malloc(size);
- snprintf(inventory_file, size, &quot;%s%s&quot;, basename, INVENTORY_FILE);
+ snprintf(inventory_file, size, "%s%s", basename, INVENTORY_FILE);
size = strlen(basename) + strlen(VENDORS_FILE) + 1;
vendor_file = malloc(size);
- snprintf(vendor_file, size, &quot;%s%s&quot;, basename, VENDORS_FILE);
+ snprintf(vendor_file, size, "%s%s", basename, VENDORS_FILE);
/* Open all databases */
- ret = databases_setup(&amp;my_stock, &quot;example_database_load&quot;, stderr);
+ ret = databases_setup(&amp;my_stock, "example_database_load", stderr);
if (ret != 0) {
- fprintf(stderr, &quot;Error opening databases\n&quot;);
+ fprintf(stderr, "Error opening databases\n");
databases_close(&amp;my_stock);
return (ret);
}
ret = load_vendors_database(my_stock, vendor_file);
if (!ret) {
- fprintf(stderr, &quot;Error loading vendors database.\n&quot;);
+ fprintf(stderr, "Error loading vendors database.\n");
databases_close(&amp;my_stock);
return (ret);
}
ret = load_inventory_database(my_stock, inventory_file);
if (!ret) {
- fprintf(stderr, &quot;Error loading inventory database.\n&quot;);
+ fprintf(stderr, "Error loading inventory database.\n");
databases_close(&amp;my_stock);
return (ret);
}
@@ -194,7 +194,7 @@ main(int argc, char *argv[])
/* close our environment and databases */
databases_close(&amp;my_stock);
- printf(&quot;Done loading databases.\n&quot;);
+ printf("Done loading databases.\n");
return (0);
}</pre>
<p>
@@ -233,9 +233,9 @@ load_vendors_database(STOCK_DBS my_stock, char *vendor_file)
char buf[MAXLINE];
/* Open the vendor file for read access */
- ifp = fopen(vendor_file, &quot;r&quot;);
+ ifp = fopen(vendor_file, "r");
if (ifp == NULL) {
- fprintf(stderr, &quot;Error opening file '%s'\n&quot;, vendor_file);
+ fprintf(stderr, "Error opening file '%s'\n", vendor_file);
return(-1);
}
@@ -254,7 +254,7 @@ load_vendors_database(STOCK_DBS my_stock, char *vendor_file)
* defensive code here.
*/
sscanf(buf,
- &quot;%20[^#]#%20[^#]#%20[^#]#%3[^#]#%6[^#]#%13[^#]#%20[^#]#%20[^\n]&quot;,
+ "%20[^#]#%20[^#]#%20[^#]#%3[^#]#%6[^#]#%13[^#]#%20[^#]#%20[^\n]",
my_vendor.name, my_vendor.street,
my_vendor.city, my_vendor.state,
my_vendor.zipcode, my_vendor.phone_number,
@@ -362,9 +362,9 @@ load_inventory_database(STOCK_DBS my_stock, char *inventory_file)
char vendor[MAXFIELD], sku[MAXFIELD];
/* Load the inventory database */
- ifp = fopen(inventory_file, &quot;r&quot;);
+ ifp = fopen(inventory_file, "r");
if (ifp == NULL) {
- fprintf(stderr, &quot;Error opening file '%s'\n&quot;, inventory_file);
+ fprintf(stderr, "Error opening file '%s'\n", inventory_file);
return(-1);
}
@@ -382,7 +382,7 @@ load_inventory_database(STOCK_DBS my_stock, char *inventory_file)
* program, there would be a lot more defensive code here.
*/
sscanf(buf,
- &quot;%20[^#]#%20[^#]#%f#%i#%20[^#]#%20[^\n]&quot;,
+ "%20[^#]#%20[^#]#%f#%i#%20[^#]#%20[^\n]",
name, sku, &amp;price, &amp;quantity, category, vendor);
/*
@@ -459,18 +459,18 @@ load_inventory_database(STOCK_DBS my_stock, char *inventory_file)
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="cstructs.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="cstructs.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="DBEntry.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="Cursors.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="Cursors.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Using C Structures with DB </td>
+ <td width="40%" align="left" valign="top">Using C Structures with DB </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Chapter 4. Using Cursors</td>
+ <td width="40%" align="right" valign="top"> Chapter 4. Using Cursors</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/C/DeleteEntryWCursor.html b/db/docs/gsg/C/DeleteEntryWCursor.html
index c3e8a68cb..229a05fae 100644
--- a/db/docs/gsg/C/DeleteEntryWCursor.html
+++ b/db/docs/gsg/C/DeleteEntryWCursor.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Deleting Records Using Cursors</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="Cursors.html" title="Chapter 4. Using Cursors" />
+ <link rel="up" href="Cursors.html" title="Chapter 4. Using Cursors" />
<link rel="previous" href="PutEntryWCursor.html" title="Putting Records Using Cursors" />
<link rel="next" href="ReplacingEntryWCursor.html" title="Replacing Records Using Cursors" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Deleting Records Using Cursors</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="PutEntryWCursor.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 4. Using Cursors</th>
- <td width="20%" align="right"> <a accesskey="n" href="ReplacingEntryWCursor.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="PutEntryWCursor.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 4. Using Cursors</th>
+ <td width="20%" align="right"> <a accesskey="n" href="ReplacingEntryWCursor.html">Next</a></td>
</tr>
</table>
<hr />
@@ -42,7 +42,7 @@
<span>
- <span><tt class="methodname">DBC-&gt;c_del()</tt>.</span>
+ <span><tt class="methodname">DBC-&gt;del()</tt>.</span>
</span>
@@ -57,31 +57,31 @@
DB *dbp;
DBC *cursorp;
DBT key, data;
-char *key1str = &quot;My first string&quot;;
+char *key1str = "My first string";
int ret;
+/* Database open omitted */
+
+/* Initialize our DBTs. */
+memset(&amp;key, 0, sizeof(DBT));
+memset(&amp;data, 0, sizeof(DBT));
+
/* Set up our DBTs */
key.data = key1str;
key.size = strlen(key1str) + 1;
-/* Database open omitted */
-
/* Get the cursor */
dbp-&gt;cursor(dbp, NULL, &amp;cursorp, 0);
-/* Initialize our DBTs. */
-memset(&amp;key, 0, sizeof(DBT));
-memset(&amp;data, 0, sizeof(DBT));
-
/* Iterate over the database, deleting each record in turn. */
-while ((ret = cursorp-&gt;c_get(cursorp, &amp;key,
+while ((ret = cursorp-&gt;get(cursorp, &amp;key,
&amp;data, DB_SET)) == 0) {
- cursorp-&gt;c_del(cursorp, 0);
+ cursorp-&gt;del(cursorp, 0);
}
/* Cursors must be closed */
if (cursorp != NULL)
- cursorp-&gt;c_close(cursorp);
+ cursorp-&gt;close(cursorp);
if (dbp != NULL)
dbp-&gt;close(dbp, 0);</pre>
@@ -90,18 +90,18 @@ if (dbp != NULL)
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="PutEntryWCursor.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="PutEntryWCursor.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="Cursors.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="ReplacingEntryWCursor.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="ReplacingEntryWCursor.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Putting Records Using Cursors </td>
+ <td width="40%" align="left" valign="top">Putting Records Using Cursors </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Replacing Records Using Cursors</td>
+ <td width="40%" align="right" valign="top"> Replacing Records Using Cursors</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/C/Positioning.html b/db/docs/gsg/C/Positioning.html
index f0d88fb44..6e1441fdb 100644
--- a/db/docs/gsg/C/Positioning.html
+++ b/db/docs/gsg/C/Positioning.html
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Getting Records Using the Cursor</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="Cursors.html" title="Chapter 4. Using Cursors" />
- <link rel="previous" href="Cursors.html" title="Chapter 4. Using Cursors" />
+ <link rel="up" href="Cursors.html" title="Chapter 4. Using Cursors" />
+ <link rel="previous" href="Cursors.html" title="Chapter 4. Using Cursors" />
<link rel="next" href="PutEntryWCursor.html" title="Putting Records Using Cursors" />
</head>
<body>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Getting Records Using the Cursor</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="Cursors.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 4. Using Cursors</th>
- <td width="20%" align="right"> <a accesskey="n" href="PutEntryWCursor.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="Cursors.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 4. Using Cursors</th>
+ <td width="20%" align="right"> <a accesskey="n" href="PutEntryWCursor.html">Next</a></td>
</tr>
</table>
<hr />
@@ -38,7 +38,7 @@
To iterate over database records, from the first record to
the last, simply open the cursor and then use the
- <tt class="methodname">DBC-&gt;c_get()</tt>
+ <tt class="methodname">DBC-&gt;get()</tt>
method.
<span>Note that you need to supply the
@@ -66,7 +66,7 @@ memset(&amp;key, 0, sizeof(DBT));
memset(&amp;data, 0, sizeof(DBT));
/* Iterate over the database, retrieving each record in turn. */
-while ((ret = cursorp-&gt;c_get(cursorp, &amp;key, &amp;data, DB_NEXT)) == 0) {
+while ((ret = cursorp-&gt;get(cursorp, &amp;key, &amp;data, DB_NEXT)) == 0) {
/* Do interesting things with the DBTs here. */
}
if (ret != DB_NOTFOUND) {
@@ -75,7 +75,7 @@ if (ret != DB_NOTFOUND) {
/* Cursors must be closed */
if (cursorp != NULL)
- cursorp-&gt;c_close(cursorp);
+ cursorp-&gt;close(cursorp);
if (my_database != NULL)
my_database-&gt;close(my_database, 0);</pre>
@@ -104,7 +104,7 @@ memset(&amp;key, 0, sizeof(DBT));
memset(&amp;data, 0, sizeof(DBT));
/* Iterate over the database, retrieving each record in turn. */
-while ((ret = cursorp-&gt;c_get(cursorp, &amp;key,
+while ((ret = cursorp-&gt;get(cursorp, &amp;key,
&amp;data, DB_PREV)) == 0) {
/* Do interesting things with the DBTs here. */
}
@@ -114,7 +114,7 @@ if (ret != DB_NOTFOUND) {
// Cursors must be closed
if (cursorp != NULL)
- cursorp-&gt;c_close(cursorp);
+ cursorp-&gt;close(cursorp);
if (my_database != NULL)
my_database-&gt;close(my_database, 0);</pre>
@@ -146,7 +146,7 @@ if (my_database != NULL)
</p>
<p>
To use a cursor to search for a record, use
- <span>DBT-&gt;c_get()<tt class="methodname"></tt>.</span>
+ <span>DBT-&gt;get()<tt class="methodname"></tt>.</span>
When you use this method, you can provide the following flags:
</p>
@@ -190,7 +190,7 @@ if (my_database != NULL)
<p>
<span>Identical to
<tt class="literal">DB_SET</tt>
- <tt class="methodname">Cursor.getSearchKey()</tt>
+
unless you are using the BTree access. In this case, the cursor
moves</span>
@@ -318,8 +318,8 @@ DBC *cursorp;
DBT key, data;
DB *dbp;
int ret;
-char *search_data = &quot;Fa&quot;;
-char *search_key = &quot;Alaska&quot;;
+char *search_data = "Fa";
+char *search_key = "Alaska";
/* database open omitted for clarity */
@@ -337,7 +337,7 @@ data.size = strlen(search_data) + 1;
* key matches the search key and whose data begins with the
* search data.
*/
-ret = cursorp-&gt;c_get(cursorp, &amp;key, &amp;data, DB_GET_BOTH_RANGE);
+ret = cursorp-&gt;get(cursorp, &amp;key, &amp;data, DB_GET_BOTH_RANGE);
if (!ret) {
/* Do something with the data */
} else {
@@ -346,7 +346,7 @@ if (!ret) {
/* Close the cursor */
if (cursorp != NULL)
- cursorp-&gt;c_close(cursorp);
+ cursorp-&gt;close(cursorp);
/* Close the database */
if (dbp != NULL)
@@ -384,7 +384,7 @@ if (dbp != NULL)
The following
- <span><tt class="methodname">DBC-&gt;c_get()</tt> flags</span>
+ <span><tt class="methodname">DBC-&gt;get()</tt> flags</span>
are interesting when working with databases that support duplicate records:
</p>
@@ -429,7 +429,7 @@ if (dbp != NULL)
records. If you call
<span>
- <tt class="methodname">c_get()</tt>
+ <tt class="methodname">DBC-&gt;get()</tt>
with <tt class="literal">DB_PREV_NODUP</tt>,
</span>
@@ -448,7 +448,7 @@ Arizona/Florence</pre>
and you then call
<span>
- <tt class="methodname">c_get()</tt>
+ <tt class="methodname">DBC-&gt;get()</tt>
with <tt class="literal">DB_PREV_NODUP</tt>,
</span>
@@ -456,7 +456,7 @@ Arizona/Florence</pre>
you call
<span>
- <tt class="methodname">c_get()</tt>
+ <tt class="methodname">DBC-&gt;get()</tt>
with <tt class="literal">DB_NEXT_NODUP</tt>,
</span>
@@ -486,7 +486,7 @@ Arizona/Florence</pre>
you call
<span>
- <tt class="methodname">DBC-&gt;c_get()</tt>
+ <tt class="methodname">DBC-&gt;get()</tt>
with <tt class="literal">DB_NEXT_DUP</tt>,
</span>
@@ -520,7 +520,7 @@ DB *dbp;
DBC *cursorp;
DBT key, data;
int ret;
-char *search_key = &quot;Al&quot;;
+char *search_key = "Al";
/* database open omitted for clarity */
@@ -535,15 +535,15 @@ key.size = strlen(search_key) + 1;
* Position the cursor to the first record in the database whose
* key and data begin with the correct strings.
*/
-ret = cursorp-&gt;c_get(cursorp, &amp;key, &amp;data, DB_SET);
+ret = cursorp-&gt;get(cursorp, &amp;key, &amp;data, DB_SET);
while (ret != DB_NOTFOUND) {
- printf(&quot;key: %s, data: %s\n&quot;, (char *)key.data, (char *)data.data);
- ret = cursorp-&gt;c_get(cursorp, &amp;key, &amp;data, DB_NEXT_DUP);
+ printf("key: %s, data: %s\n", (char *)key.data, (char *)data.data);
+ ret = cursorp-&gt;get(cursorp, &amp;key, &amp;data, DB_NEXT_DUP);
}
/* Close the cursor */
if (cursorp != NULL)
- cursorp-&gt;c_close(cursorp);
+ cursorp-&gt;close(cursorp);
/* Close the database */
if (dbp != NULL)
@@ -554,18 +554,18 @@ if (dbp != NULL)
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="Cursors.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="Cursors.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="Cursors.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="PutEntryWCursor.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="PutEntryWCursor.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Chapter 4. Using Cursors </td>
+ <td width="40%" align="left" valign="top">Chapter 4. Using Cursors </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Putting Records Using Cursors</td>
+ <td width="40%" align="right" valign="top"> Putting Records Using Cursors</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/C/PutEntryWCursor.html b/db/docs/gsg/C/PutEntryWCursor.html
index c3c12e812..3a5da9c96 100644
--- a/db/docs/gsg/C/PutEntryWCursor.html
+++ b/db/docs/gsg/C/PutEntryWCursor.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Putting Records Using Cursors</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="Cursors.html" title="Chapter 4. Using Cursors" />
+ <link rel="up" href="Cursors.html" title="Chapter 4. Using Cursors" />
<link rel="previous" href="Positioning.html" title="Getting Records Using the Cursor" />
<link rel="next" href="DeleteEntryWCursor.html" title="Deleting Records Using Cursors" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Putting Records Using Cursors</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="Positioning.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 4. Using Cursors</th>
- <td width="20%" align="right"> <a accesskey="n" href="DeleteEntryWCursor.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="Positioning.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 4. Using Cursors</th>
+ <td width="20%" align="right"> <a accesskey="n" href="DeleteEntryWCursor.html">Next</a></td>
</tr>
</table>
<hr />
@@ -46,7 +46,7 @@
</p>
<p>
You use
- <tt class="methodname">DBC-&gt;c_put()</tt>
+ <tt class="methodname">DBC-&gt;put()</tt>
to put (write) records to the database. You can use the following flags
@@ -140,11 +140,11 @@ DB *dbp;
DBC *cursorp;
DBT data1, data2, data3;
DBT key1, key2;
-char *key1str = &quot;My first string&quot;;
-char *data1str = &quot;My first data&quot;;
-char *key2str = &quot;A second string&quot;;
-char *data2str = &quot;My second data&quot;;
-char *data3str = &quot;My third data&quot;;
+char *key1str = "My first string";
+char *data1str = "My first data";
+char *key2str = "A second string";
+char *data2str = "My second data";
+char *data3str = "My third data";
int ret;
/* Set up our DBTs */
@@ -167,31 +167,31 @@ dbp-&gt;cursor(dbp, NULL, &amp;cursorp, 0);
/*
* Assuming an empty database, this first put places
- * &quot;My first string&quot;/&quot;My first data&quot; in the first
+ * "My first string"/"My first data" in the first
* position in the database
*/
-ret = cursorp-&gt;c_put(cursorp, &amp;key1,
+ret = cursorp-&gt;put(cursorp, &amp;key1,
&amp;data1, DB_KEYFIRST);
/*
- * This put places &quot;A second string&quot;/&quot;My second data&quot; in the
+ * This put places "A second string"/"My second data" in the
* the database according to its key sorts against the key
* used for the currently existing database record. Most likely
* this record would appear first in the database.
*/
-ret = cursorp-&gt;c_put(cursorp, &amp;key2,
+ret = cursorp-&gt;put(cursorp, &amp;key2,
&amp;data2, DB_KEYFIRST); /* Added according to sort order */
/*
* If duplicates are not allowed, the currently existing record that
- * uses &quot;key2&quot; is overwritten with the data provided on this put.
- * That is, the record &quot;A second string&quot;/&quot;My second data&quot; becomes
- * &quot;A second string&quot;/&quot;My third data&quot;
+ * uses "key2" is overwritten with the data provided on this put.
+ * That is, the record "A second string"/"My second data" becomes
+ * "A second string"/"My third data"
*
- * If duplicates are allowed, then &quot;My third data&quot; is placed in the
- * duplicates list according to how it sorts against &quot;My second data&quot;.
+ * If duplicates are allowed, then "My third data" is placed in the
+ * duplicates list according to how it sorts against "My second data".
*/
-ret = cursorp-&gt;c_put(cursorp, &amp;key2,
+ret = cursorp-&gt;put(cursorp, &amp;key2,
&amp;data3, DB_KEYFIRST); /* If duplicates are not allowed, record
* is overwritten with new data. Otherwise,
* the record is added to the beginning of
@@ -202,18 +202,18 @@ ret = cursorp-&gt;c_put(cursorp, &amp;key2,
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="Positioning.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="Positioning.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="Cursors.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="DeleteEntryWCursor.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="DeleteEntryWCursor.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Getting Records Using the Cursor </td>
+ <td width="40%" align="left" valign="top">Getting Records Using the Cursor </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Deleting Records Using Cursors</td>
+ <td width="40%" align="right" valign="top"> Deleting Records Using Cursors</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/C/ReplacingEntryWCursor.html b/db/docs/gsg/C/ReplacingEntryWCursor.html
index 52a1c2984..44d560304 100644
--- a/db/docs/gsg/C/ReplacingEntryWCursor.html
+++ b/db/docs/gsg/C/ReplacingEntryWCursor.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Replacing Records Using Cursors</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="Cursors.html" title="Chapter 4. Using Cursors" />
+ <link rel="up" href="Cursors.html" title="Chapter 4. Using Cursors" />
<link rel="previous" href="DeleteEntryWCursor.html" title="Deleting Records Using Cursors" />
<link rel="next" href="CoreCursorUsage.html" title="Cursor Example" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Replacing Records Using Cursors</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="DeleteEntryWCursor.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 4. Using Cursors</th>
- <td width="20%" align="right"> <a accesskey="n" href="CoreCursorUsage.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="DeleteEntryWCursor.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 4. Using Cursors</th>
+ <td width="20%" align="right"> <a accesskey="n" href="CoreCursorUsage.html">Next</a></td>
</tr>
</table>
<hr />
@@ -41,7 +41,7 @@
<span>
- <tt class="methodname">DBC-&gt;c_put()</tt>
+ <tt class="methodname">DBC-&gt;put()</tt>
with the <tt class="literal">DB_CURRENT</tt> flag.
</span>
@@ -56,14 +56,14 @@
DB *dbp;
DBC *cursorp;
DBT key, data;
-char *key1str = &quot;My first string&quot;;
-char *replacement_data = &quot;replace me&quot;;
+char *key1str = "My first string";
+char *replacement_data = "replace me";
int ret;
/* Initialize our DBTs. */
memset(&amp;key, 0, sizeof(DBT));
memset(&amp;data, 0, sizeof(DBT));
-
+
/* Set up our DBTs */
key.data = key1str;
key.size = strlen(key1str) + 1;
@@ -74,16 +74,16 @@ key.size = strlen(key1str) + 1;
dbp-&gt;cursor(dbp, NULL, &amp;cursorp, 0);
/* Position the cursor */
-ret = cursorp-&gt;c_get(cursorp, &amp;key, &amp;data, DB_SET);
+ret = cursorp-&gt;get(cursorp, &amp;key, &amp;data, DB_SET);
if (ret == 0) {
data.data = replacement_data;
data.size = strlen(replacement_data) + 1;
- cursorp-&gt;c_put(cursorp, &amp;key, &amp;data, DB_CURRENT);
+ cursorp-&gt;put(cursorp, &amp;key, &amp;data, DB_CURRENT);
}
/* Cursors must be closed */
if (cursorp != NULL)
- cursorp-&gt;c_close(cursorp);
+ cursorp-&gt;close(cursorp);
if (dbp != NULL)
dbp-&gt;close(dbp, 0);</pre>
@@ -118,18 +118,18 @@ if (dbp != NULL)
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="DeleteEntryWCursor.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="DeleteEntryWCursor.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="Cursors.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="CoreCursorUsage.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="CoreCursorUsage.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Deleting Records Using Cursors </td>
+ <td width="40%" align="left" valign="top">Deleting Records Using Cursors </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Cursor Example</td>
+ <td width="40%" align="right" valign="top"> Cursor Example</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/C/accessmethods.html b/db/docs/gsg/C/accessmethods.html
index dcbd74844..cbcc86fcb 100644
--- a/db/docs/gsg/C/accessmethods.html
+++ b/db/docs/gsg/C/accessmethods.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Access Methods</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="introduction.html" title="Chapter 1. Introduction to Berkeley DB " />
+ <link rel="up" href="introduction.html" title="Chapter 1. Introduction to Berkeley DB " />
<link rel="previous" href="concepts.html" title="Berkeley DB Concepts" />
<link rel="next" href="databaseLimits.html" title="Database Limits and Portability" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Access Methods</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="concepts.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 1. Introduction to Berkeley DB </th>
- <td width="20%" align="right"> <a accesskey="n" href="databaseLimits.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="concepts.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 1. Introduction to Berkeley DB </th>
+ <td width="20%" align="right"> <a accesskey="n" href="databaseLimits.html">Next</a></td>
</tr>
</table>
<hr />
@@ -262,18 +262,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="concepts.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="concepts.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="introduction.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="databaseLimits.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="databaseLimits.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Berkeley DB Concepts </td>
+ <td width="40%" align="left" valign="top">Berkeley DB Concepts </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Database Limits and Portability</td>
+ <td width="40%" align="right" valign="top"> Database Limits and Portability</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/C/btree.html b/db/docs/gsg/C/btree.html
index 27de59365..6b941340e 100644
--- a/db/docs/gsg/C/btree.html
+++ b/db/docs/gsg/C/btree.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>BTree Configuration</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="dbconfig.html" title="Chapter 6. Database Configuration" />
+ <link rel="up" href="dbconfig.html" title="Chapter 6. Database Configuration" />
<link rel="previous" href="cachesize.html" title="Selecting the Cache Size" />
</head>
<body>
@@ -17,9 +17,9 @@
<th colspan="3" align="center">BTree Configuration</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="cachesize.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 6. Database Configuration</th>
- <td width="20%" align="right"> </td>
+ <td width="20%" align="left"><a accesskey="p" href="cachesize.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 6. Database Configuration</th>
+ <td width="20%" align="right"> </td>
</tr>
</table>
<hr />
@@ -179,7 +179,7 @@
If a cursor is used to put the duplicate record to the database,
then the new record is placed in the duplicate set according to the
flags that are provided on the
- <tt class="methodname">DBC-&gt;c_put()</tt>
+ <tt class="methodname">DBC-&gt;put()</tt>
method. The relevant flags are:
</p>
@@ -194,7 +194,7 @@
The data
<span>
provided on the call to
- <tt class="methodname">DBC-&gt;c_put()</tt>
+ <tt class="methodname">DBC-&gt;put()</tt>
</span>
is placed into the database
@@ -204,7 +204,7 @@
<span>
to
- <tt class="methodname">DBC-&gt;c_put()</tt>
+ <tt class="methodname">DBC-&gt;put()</tt>
</span>
@@ -242,7 +242,7 @@
If the key
<span>
provided on the call to
- <tt class="methodname">DBC-&gt;c_put()</tt>
+ <tt class="methodname">DBC-&gt;put()</tt>
</span>
already exists in the
@@ -329,15 +329,15 @@
DB *dbp;
FILE *error_file_pointer;
int ret;
-char *program_name = &quot;my_prog&quot;;
-char *file_name = &quot;mydb.db&quot;;
+char *program_name = "my_prog";
+char *file_name = "mydb.db";
/* Variable assignments omitted for brevity */
/* Initialize the DB handle */
ret = db_create(&amp;dbp, NULL, 0);
if (ret != 0) {
- fprintf(error_file_pointer, &quot;%s: %s\n&quot;, program_name,
+ fprintf(error_file_pointer, "%s: %s\n", program_name,
db_strerror(ret));
return(ret);
}
@@ -351,7 +351,7 @@ dbp-&gt;set_errpfx(dbp, program_name);
*/
ret = dbp-&gt;set_flags(dbp, DB_DUPSORT);
if (ret != 0) {
- dbp-&gt;err(dbp, ret, &quot;Attempt to set DUPSORT flag failed.&quot;);
+ dbp-&gt;err(dbp, ret, "Attempt to set DUPSORT flag failed.");
dbp-&gt;close(dbp, 0);
return(ret);
}
@@ -365,7 +365,7 @@ ret = dbp-&gt;open(dbp, /* Pointer to the database */
DB_CREATE, /* Open flags */
0); /* File mode. Using defaults */
if (ret != 0) {
- dbp-&gt;err(dbp, ret, &quot;Database '%s' open failed.&quot;, file_name);
+ dbp-&gt;err(dbp, ret, "Database '%s' open failed.", file_name);
dbp-&gt;close(dbp, 0);
return(ret);
} </pre>
@@ -537,7 +537,7 @@ int ret;
/* Create a database */
ret = db_create(&amp;dbp, NULL, 0);
if (ret != 0) {
- fprintf(stderr, &quot;%s: %s\n&quot;, &quot;my_program&quot;,
+ fprintf(stderr, "%s: %s\n", "my_program",
db_strerror(ret));
return(-1);
}
@@ -553,18 +553,18 @@ dbp-&gt;set_bt_compare(dbp, compare_int);
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="cachesize.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="cachesize.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="dbconfig.html">Up</a>
</td>
- <td width="40%" align="right"> </td>
+ <td width="40%" align="right"> </td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Selecting the Cache Size </td>
+ <td width="40%" align="left" valign="top">Selecting the Cache Size </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> </td>
+ <td width="40%" align="right" valign="top"> </td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/C/cachesize.html b/db/docs/gsg/C/cachesize.html
index 21faf2439..2276a5971 100644
--- a/db/docs/gsg/C/cachesize.html
+++ b/db/docs/gsg/C/cachesize.html
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Selecting the Cache Size</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="dbconfig.html" title="Chapter 6. Database Configuration" />
- <link rel="previous" href="dbconfig.html" title="Chapter 6. Database Configuration" />
+ <link rel="up" href="dbconfig.html" title="Chapter 6. Database Configuration" />
+ <link rel="previous" href="dbconfig.html" title="Chapter 6. Database Configuration" />
<link rel="next" href="btree.html" title="BTree Configuration" />
</head>
<body>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Selecting the Cache Size</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="dbconfig.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 6. Database Configuration</th>
- <td width="20%" align="right"> <a accesskey="n" href="btree.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="dbconfig.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 6. Database Configuration</th>
+ <td width="20%" align="right"> <a accesskey="n" href="btree.html">Next</a></td>
</tr>
</table>
<hr />
@@ -56,14 +56,14 @@
available memory and performance considerations.
</p>
<p>
- Selecting a cache size is something of an art, but fortunately it is
- selected at database (or environment) open time, so it can be easily
- tuned to your application's data requirements as they change over time.
- The best way to determine how large your cache needs to be is to put
- your application into a production environment and watch to see how much
- disk I/O is occurring. If your application is going to disk quite a lot
- to retrieve database records, then you should increase the size of your
- cache (provided that you have enough memory to do so).
+ Selecting a cache size is something of an art, but fortunately you
+ can change it any time, so it can be easily tuned to your
+ application's changing data requirements. The best way to
+ determine how large your cache needs to be is to put your
+ application into a production environment and watch to see how much
+ disk I/O is occurring. If your application is going to disk quite a
+ lot to retrieve database records, then you should increase the size
+ of your cache (provided that you have enough memory to do so).
</p>
<p>
You can use the <tt class="literal">db_stat</tt> command line utility with the
@@ -79,18 +79,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="dbconfig.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="dbconfig.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="dbconfig.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="btree.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="btree.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Chapter 6. Database Configuration </td>
+ <td width="40%" align="left" valign="top">Chapter 6. Database Configuration </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> BTree Configuration</td>
+ <td width="40%" align="right" valign="top"> BTree Configuration</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/C/concepts.html b/db/docs/gsg/C/concepts.html
index 161e6a25b..53cababbe 100644
--- a/db/docs/gsg/C/concepts.html
+++ b/db/docs/gsg/C/concepts.html
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Berkeley DB Concepts</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="introduction.html" title="Chapter 1. Introduction to Berkeley DB " />
- <link rel="previous" href="introduction.html" title="Chapter 1. Introduction to Berkeley DB " />
+ <link rel="up" href="introduction.html" title="Chapter 1. Introduction to Berkeley DB " />
+ <link rel="previous" href="introduction.html" title="Chapter 1. Introduction to Berkeley DB " />
<link rel="next" href="accessmethods.html" title="Access Methods" />
</head>
<body>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Berkeley DB Concepts</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="introduction.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 1. Introduction to Berkeley DB </th>
- <td width="20%" align="right"> <a accesskey="n" href="accessmethods.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="introduction.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 1. Introduction to Berkeley DB </th>
+ <td width="20%" align="right"> <a accesskey="n" href="accessmethods.html">Next</a></td>
</tr>
</table>
<hr />
@@ -149,18 +149,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="introduction.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="introduction.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="introduction.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="accessmethods.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="accessmethods.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Chapter 1. Introduction to Berkeley DB  </td>
+ <td width="40%" align="left" valign="top">Chapter 1. Introduction to Berkeley DB  </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Access Methods</td>
+ <td width="40%" align="right" valign="top"> Access Methods</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/C/coredbclose.html b/db/docs/gsg/C/coredbclose.html
index 55f99ffb3..02e294e82 100644
--- a/db/docs/gsg/C/coredbclose.html
+++ b/db/docs/gsg/C/coredbclose.html
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Closing Databases</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="DB.html" title="Chapter 2. Databases" />
- <link rel="previous" href="DB.html" title="Chapter 2. Databases" />
+ <link rel="up" href="DB.html" title="Chapter 2. Databases" />
+ <link rel="previous" href="DB.html" title="Chapter 2. Databases" />
<link rel="next" href="DBOpenFlags.html" title="Database Open Flags" />
</head>
<body>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Closing Databases</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="DB.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 2. Databases</th>
- <td width="20%" align="right"> <a accesskey="n" href="DBOpenFlags.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="DB.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 2. Databases</th>
+ <td width="20%" align="right"> <a accesskey="n" href="DBOpenFlags.html">Next</a></td>
</tr>
</table>
<hr />
@@ -87,18 +87,18 @@ if (dbp != NULL)
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="DB.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="DB.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="DB.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="DBOpenFlags.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="DBOpenFlags.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Chapter 2. Databases </td>
+ <td width="40%" align="left" valign="top">Chapter 2. Databases </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Database Open Flags</td>
+ <td width="40%" align="right" valign="top"> Database Open Flags</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/C/coreindexusage.html b/db/docs/gsg/C/coreindexusage.html
index fd59043e2..91680d243 100644
--- a/db/docs/gsg/C/coreindexusage.html
+++ b/db/docs/gsg/C/coreindexusage.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Secondary Database Example</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="indexes.html" title="Chapter 5. Secondary Databases" />
+ <link rel="up" href="indexes.html" title="Chapter 5. Secondary Databases" />
<link rel="previous" href="joins.html" title="Database Joins" />
- <link rel="next" href="dbconfig.html" title="Chapter 6. Database Configuration" />
+ <link rel="next" href="dbconfig.html" title="Chapter 6. Database Configuration" />
</head>
<body>
<div class="navheader">
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Secondary Database Example</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="joins.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 5. Secondary Databases</th>
- <td width="20%" align="right"> <a accesskey="n" href="dbconfig.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="joins.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 5. Secondary Databases</th>
+ <td width="20%" align="right"> <a accesskey="n" href="dbconfig.html">Next</a></td>
</tr>
</table>
<hr />
@@ -175,7 +175,7 @@ void set_db_filenames(STOCK_DBS *my_stock);
</p>
<a id="c_index11"></a>
<pre class="programlisting">/* file: gettingstarted_common.c */
-#include &quot;gettingstarted_common.h&quot;
+#include "gettingstarted_common.h"
<b class="userinput"><tt>/*
* Used to extract an inventory item's name from an
@@ -219,7 +219,6 @@ get_item_name(DB *dbp, const DBT *pkey, const DBT *pdata, DBT *skey)
new secondary databases that our application will now use.
These functions were originally introduced in
<a href="CoreDbUsage.html#stock-db-functions">The stock_db Utility Functions</a>.
-
</p>
<a id="c_index11.1"></a>
<pre class="programlisting">
@@ -246,19 +245,19 @@ set_db_filenames(STOCK_DBS *my_stock)
/* Create the Inventory DB file name */
size = strlen(my_stock-&gt;db_home_dir) + strlen(INVENTORYDB) + 1;
my_stock-&gt;inventory_db_name = malloc(size);
- snprintf(my_stock-&gt;inventory_db_name, size, &quot;%s%s&quot;,
+ snprintf(my_stock-&gt;inventory_db_name, size, "%s%s",
my_stock-&gt;db_home_dir, INVENTORYDB);
/* Create the Vendor DB file name */
size = strlen(my_stock-&gt;db_home_dir) + strlen(VENDORDB) + 1;
my_stock-&gt;vendor_db_name = malloc(size);
- snprintf(my_stock-&gt;vendor_db_name, size, &quot;%s%s&quot;,
+ snprintf(my_stock-&gt;vendor_db_name, size, "%s%s",
my_stock-&gt;db_home_dir, VENDORDB);
<b class="userinput"><tt>/* Create the itemname DB file name */
size = strlen(my_stock-&gt;db_home_dir) + strlen(ITEMNAMEDB) + 1;
my_stock-&gt;itemname_db_name = malloc(size);
- snprintf(my_stock-&gt;itemname_db_name, size, &quot;%s%s&quot;,
+ snprintf(my_stock-&gt;itemname_db_name, size, "%s%s",
my_stock-&gt;db_home_dir, ITEMNAMEDB);</tt></b>
} </pre>
<p>
@@ -298,7 +297,7 @@ open_database(DB **dbpp, /* The DB handle that we are opening */
/* Initialize the DB handle */
ret = db_create(&amp;dbp, NULL, 0);
if (ret != 0) {
- fprintf(error_file_pointer, &quot;%s: %s\n&quot;, program_name,
+ fprintf(error_file_pointer, "%s: %s\n", program_name,
db_strerror(ret));
return (ret);
}
@@ -317,7 +316,7 @@ open_database(DB **dbpp, /* The DB handle that we are opening */
if (is_secondary) {
ret = dbp-&gt;set_flags(dbp, DB_DUPSORT);
if (ret != 0) {
- dbp-&gt;err(dbp, ret, &quot;Attempt to set DUPSORT flag failed.&quot;,
+ dbp-&gt;err(dbp, ret, "Attempt to set DUPSORT flag failed.",
file_name);
return (ret);
}
@@ -335,7 +334,7 @@ open_database(DB **dbpp, /* The DB handle that we are opening */
open_flags, /* Open flags */
0); /* File mode. Using defaults */
if (ret != 0) {
- dbp-&gt;err(dbp, ret, &quot;Database '%s' open failed.&quot;, file_name);
+ dbp-&gt;err(dbp, ret, "Database '%s' open failed.", file_name);
return (ret);
}
@@ -416,7 +415,7 @@ databases_setup(STOCK_DBS *my_stock, const char *program_name,
0); /* Flags */
</tt></b>
- printf(&quot;databases opened successfully\n&quot;);
+ printf("databases opened successfully\n");
return (0);
}</pre>
<p>
@@ -441,25 +440,25 @@ databases_close(STOCK_DBS *my_stock)
<b class="userinput"><tt>if (my_stock-&gt;itemname_sdbp != NULL) {
ret = my_stock-&gt;itemname_sdbp-&gt;close(my_stock-&gt;itemname_sdbp, 0);
if (ret != 0)
- fprintf(stderr, &quot;Itemname database close failed: %s\n&quot;,
+ fprintf(stderr, "Itemname database close failed: %s\n",
db_strerror(ret));
}</tt></b>
if (my_stock-&gt;inventory_dbp != NULL) {
ret = my_stock-&gt;inventory_dbp-&gt;close(my_stock-&gt;inventory_dbp, 0);
if (ret != 0)
- fprintf(stderr, &quot;Inventory database close failed: %s\n&quot;,
+ fprintf(stderr, "Inventory database close failed: %s\n",
db_strerror(ret));
}
if (my_stock-&gt;vendor_dbp != NULL) {
ret = my_stock-&gt;vendor_dbp-&gt;close(my_stock-&gt;vendor_dbp, 0);
if (ret != 0)
- fprintf(stderr, &quot;Vendor database close failed: %s\n&quot;,
+ fprintf(stderr, "Vendor database close failed: %s\n",
db_strerror(ret));
}
- printf(&quot;databases closed.\n&quot;);
+ printf("databases closed.\n");
return (0);
} </pre>
<p>
@@ -508,7 +507,7 @@ databases_close(STOCK_DBS *my_stock)
<a id="c_index15"></a>
<pre class="programlisting">/* File: example_database_read.c */
/* gettingstarted_common.h includes db.h for us */
-#include &quot;gettingstarted_common.h&quot;
+#include "gettingstarted_common.h"
/* Forward declarations */
char * show_inventory_item(void *);
@@ -557,9 +556,9 @@ main(int argc, char *argv[])
set_db_filenames(&amp;my_stock);
/* Open all databases */
- ret = databases_setup(&amp;my_stock, &quot;example_database_read&quot;, stderr);
+ ret = databases_setup(&amp;my_stock, "example_database_read", stderr);
if (ret != 0) {
- fprintf(stderr, &quot;Error opening databases\n&quot;);
+ fprintf(stderr, "Error opening databases\n");
databases_close(&amp;my_stock);
return (ret);
}</pre>
@@ -640,7 +639,7 @@ show_records(STOCK_DBS *my_stock, char *itemname)
* database that has the appropriate key.
*/
exit_value = 0;
- ret = itemname_cursorp-&gt;c_get(itemname_cursorp, &amp;key, &amp;data, DB_SET);
+ ret = itemname_cursorp-&gt;get(itemname_cursorp, &amp;key, &amp;data, DB_SET);
if (!ret) {
do {
/*
@@ -658,14 +657,14 @@ show_records(STOCK_DBS *my_stock, char *itemname)
* the next duplicate records and show them all. This is done
* because an inventory item's name is not a unique value.
*/
- } while(itemname_cursorp-&gt;c_get(itemname_cursorp, &amp;key, &amp;data,
+ } while(itemname_cursorp-&gt;get(itemname_cursorp, &amp;key, &amp;data,
DB_NEXT_DUP) == 0);
} else {
- printf(&quot;No records found for '%s'\n&quot;, itemname);
+ printf("No records found for '%s'\n", itemname);
}
/* Close the cursor */
- itemname_cursorp-&gt;c_close(itemname_cursorp);
+ itemname_cursorp-&gt;close(itemname_cursorp);
return (exit_value);
} </pre>
@@ -675,25 +674,25 @@ show_records(STOCK_DBS *my_stock, char *itemname)
can now search for and show all inventory items that match a particular
name. For example:
</p>
- <pre class="programlisting"> example_inventory_read -i &quot;Zulu Nut&quot;</pre>
+ <pre class="programlisting"> example_inventory_read -i "Zulu Nut"</pre>
</div>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="joins.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="joins.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="indexes.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="dbconfig.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="dbconfig.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Database Joins </td>
+ <td width="40%" align="left" valign="top">Database Joins </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Chapter 6. Database Configuration</td>
+ <td width="40%" align="right" valign="top"> Chapter 6. Database Configuration</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/C/cstructs.html b/db/docs/gsg/C/cstructs.html
index 14d06a246..bdcdee964 100644
--- a/db/docs/gsg/C/cstructs.html
+++ b/db/docs/gsg/C/cstructs.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Using C Structures with DB</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="DBEntry.html" title="Chapter 3. Database Records" />
+ <link rel="up" href="DBEntry.html" title="Chapter 3. Database Records" />
<link rel="previous" href="usingDbt.html" title="Reading and Writing Database Records" />
<link rel="next" href="DbUsage.html" title="Database Usage Example" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Using C Structures with DB</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="usingDbt.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 3. Database Records</th>
- <td width="20%" align="right"> <a accesskey="n" href="DbUsage.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="usingDbt.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 3. Database Records</th>
+ <td width="20%" align="right"> <a accesskey="n" href="DbUsage.html">Next</a></td>
</tr>
</table>
<hr />
@@ -62,8 +62,8 @@ typedef struct my_struct {
DBT key, data;
DB *my_database;
MY_STRUCT user;
-char *fname = &quot;David&quot;;
-char *sname = &quot;Rider&quot;;
+char *fname = "David";
+char *sname = "Rider";
/* Database open omitted for clarity */
@@ -119,8 +119,8 @@ data.flags = DB_DBT_USERMEM;
my_database-&gt;get(my_database, NULL, &amp;key, &amp;data, 0);
-printf(&quot;Familiar name: %s\n&quot;, user.familiar_name);
-printf(&quot;Surname: %s\n&quot;, user.surname); </pre>
+printf("Familiar name: %s\n", user.familiar_name);
+printf("Surname: %s\n", user.surname); </pre>
<p>
Be aware that while this is the easiest way to manage structures stored
in DB databases, this approach does suffer from causing your
@@ -204,11 +204,11 @@ DBT key, data;
DB *my_database;
MY_STRUCT user;
int buffsize, bufflen;
-char fname[ ] = &quot;Pete&quot;;
+char fname[ ] = "Pete";
char sname[10];
char *databuff;
-strncpy(sname, &quot;Oar&quot;, strlen(&quot;Oar&quot;)+1);
+strncpy(sname, "Oar", strlen("Oar")+1);
/* Database open omitted for clarity */
@@ -305,18 +305,18 @@ user.surname = buffer + sizeof(int) + strlen(user.familiar_name) + 1; </pre>
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="usingDbt.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="usingDbt.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="DBEntry.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="DbUsage.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="DbUsage.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Reading and Writing Database Records </td>
+ <td width="40%" align="left" valign="top">Reading and Writing Database Records </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Database Usage Example</td>
+ <td width="40%" align="right" valign="top"> Database Usage Example</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/C/databaseLimits.html b/db/docs/gsg/C/databaseLimits.html
index 15c23a81c..abf321bdc 100644
--- a/db/docs/gsg/C/databaseLimits.html
+++ b/db/docs/gsg/C/databaseLimits.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Database Limits and Portability</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="introduction.html" title="Chapter 1. Introduction to Berkeley DB " />
+ <link rel="up" href="introduction.html" title="Chapter 1. Introduction to Berkeley DB " />
<link rel="previous" href="accessmethods.html" title="Access Methods" />
<link rel="next" href="environments.html" title="Environments" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Database Limits and Portability</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="accessmethods.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 1. Introduction to Berkeley DB </th>
- <td width="20%" align="right"> <a accesskey="n" href="environments.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="accessmethods.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 1. Introduction to Berkeley DB </th>
+ <td width="20%" align="right"> <a accesskey="n" href="environments.html">Next</a></td>
</tr>
</table>
<hr />
@@ -50,7 +50,7 @@
</p>
<p>
Also, DB's databases and data structures are designed for concurrent
- access &#8212; they are thread-safe, and they share well across multiple
+ access — they are thread-safe, and they share well across multiple
processes. That said, in order to allow multiple processes to share
databases and the cache, DB makes use of mechanisms that do not work
well on network-shared drives (NFS or Windows networks shares, for
@@ -62,18 +62,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="accessmethods.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="accessmethods.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="introduction.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="environments.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="environments.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Access Methods </td>
+ <td width="40%" align="left" valign="top">Access Methods </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Environments</td>
+ <td width="40%" align="right" valign="top"> Environments</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/C/dbErrorReporting.html b/db/docs/gsg/C/dbErrorReporting.html
index dc6646baa..b9ee6a3e0 100644
--- a/db/docs/gsg/C/dbErrorReporting.html
+++ b/db/docs/gsg/C/dbErrorReporting.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Error Reporting Functions</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="DB.html" title="Chapter 2. Databases" />
+ <link rel="up" href="DB.html" title="Chapter 2. Databases" />
<link rel="previous" href="CoreDBAdmin.html" title="Administrative Methods" />
<link rel="next" href="CoreEnvUsage.html" title="Managing Databases in Environments" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Error Reporting Functions</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="CoreDBAdmin.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 2. Databases</th>
- <td width="20%" align="right"> <a accesskey="n" href="CoreEnvUsage.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="CoreDBAdmin.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 2. Databases</th>
+ <td width="20%" align="right"> <a accesskey="n" href="CoreEnvUsage.html">Next</a></td>
</tr>
</table>
<hr />
@@ -153,28 +153,28 @@ int ret;
*/
ret = db_create(&amp;dbp, NULL, 0);
if (ret != 0) {
- fprintf(stderr, &quot;%s: %s\n&quot;, &quot;my_program&quot;,
+ fprintf(stderr, "%s: %s\n", "my_program",
db_strerror(ret));
return(ret);
}
/* Set up error handling for this database */
dbp-&gt;set_errcall(dbp, my_error_handler);
-dbp-&gt;set_errpfx(dbp, &quot;my_example_program&quot;); </pre>
+dbp-&gt;set_errpfx(dbp, "my_example_program"); </pre>
<p>
And to issue an error message:
</p>
<a id="c_db10"></a>
<pre class="programlisting">ret = dbp-&gt;open(dbp,
NULL,
- &quot;mydb.db&quot;,
+ "mydb.db",
NULL,
DB_BTREE,
DB_CREATE,
0);
if (ret != 0) {
dbp-&gt;err(dbp, ret,
- &quot;Database open failed: %s&quot;, &quot;mydb.db&quot;);
+ "Database open failed: %s", "mydb.db");
return(ret);
}</pre>
<span>
@@ -185,18 +185,18 @@ if (ret != 0) {
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="CoreDBAdmin.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="CoreDBAdmin.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="DB.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="CoreEnvUsage.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="CoreEnvUsage.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Administrative Methods </td>
+ <td width="40%" align="left" valign="top">Administrative Methods </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Managing Databases in Environments</td>
+ <td width="40%" align="right" valign="top"> Managing Databases in Environments</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/C/dbconfig.html b/db/docs/gsg/C/dbconfig.html
index 47eefc20e..31140d500 100644
--- a/db/docs/gsg/C/dbconfig.html
+++ b/db/docs/gsg/C/dbconfig.html
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <title>Chapter 6. Database Configuration</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Chapter 6. Database Configuration</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
@@ -15,12 +15,12 @@
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
- <th colspan="3" align="center">Chapter 6. Database Configuration</th>
+ <th colspan="3" align="center">Chapter 6. Database Configuration</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="coreindexusage.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="cachesize.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="coreindexusage.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="cachesize.html">Next</a></td>
</tr>
</table>
<hr />
@@ -29,7 +29,7 @@
<div class="titlepage">
<div>
<div>
- <h2 class="title"><a id="dbconfig"></a>Chapter 6. Database Configuration</h2>
+ <h2 class="title"><a id="dbconfig"></a>Chapter 6. Database Configuration</h2>
</div>
</div>
<div></div>
@@ -381,18 +381,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="coreindexusage.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="coreindexusage.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="cachesize.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="cachesize.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Secondary Database Example </td>
+ <td width="40%" align="left" valign="top">Secondary Database Example </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Selecting the Cache Size</td>
+ <td width="40%" align="right" valign="top"> Selecting the Cache Size</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/C/environments.html b/db/docs/gsg/C/environments.html
index 4fc6267d8..bf1e9a9f3 100644
--- a/db/docs/gsg/C/environments.html
+++ b/db/docs/gsg/C/environments.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Environments</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="introduction.html" title="Chapter 1. Introduction to Berkeley DB " />
+ <link rel="up" href="introduction.html" title="Chapter 1. Introduction to Berkeley DB " />
<link rel="previous" href="databaseLimits.html" title="Database Limits and Portability" />
<link rel="next" href="returns.html" title="Error Returns" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Environments</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="databaseLimits.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 1. Introduction to Berkeley DB </th>
- <td width="20%" align="right"> <a accesskey="n" href="returns.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="databaseLimits.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 1. Introduction to Berkeley DB </th>
+ <td width="20%" align="right"> <a accesskey="n" href="returns.html">Next</a></td>
</tr>
</table>
<hr />
@@ -116,7 +116,7 @@
obtain a high-degree of recoverability in the face of an
application or system crash. Once enabled, the logging subsystem
allows the application to perform two kinds of recovery
- (&quot;normal&quot; and &quot;catastrophic&quot;) through the use of the information
+ ("normal" and "catastrophic") through the use of the information
contained in the log files.
</p>
</li>
@@ -132,18 +132,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="databaseLimits.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="databaseLimits.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="introduction.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="returns.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="returns.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Database Limits and Portability </td>
+ <td width="40%" align="left" valign="top">Database Limits and Portability </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Error Returns</td>
+ <td width="40%" align="right" valign="top"> Error Returns</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/C/gettingit.html b/db/docs/gsg/C/gettingit.html
index c84496093..a04c82710 100644
--- a/db/docs/gsg/C/gettingit.html
+++ b/db/docs/gsg/C/gettingit.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Getting and Using DB </title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="introduction.html" title="Chapter 1. Introduction to Berkeley DB " />
+ <link rel="up" href="introduction.html" title="Chapter 1. Introduction to Berkeley DB " />
<link rel="previous" href="returns.html" title="Error Returns" />
- <link rel="next" href="DB.html" title="Chapter 2. Databases" />
+ <link rel="next" href="DB.html" title="Chapter 2. Databases" />
</head>
<body>
<div class="navheader">
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Getting and Using DB </th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="returns.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 1. Introduction to Berkeley DB </th>
- <td width="20%" align="right"> <a accesskey="n" href="DB.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="returns.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 1. Introduction to Berkeley DB </th>
+ <td width="20%" align="right"> <a accesskey="n" href="DB.html">Next</a></td>
</tr>
</table>
<hr />
@@ -58,18 +58,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="returns.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="returns.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="introduction.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="DB.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="DB.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Error Returns </td>
+ <td width="40%" align="left" valign="top">Error Returns </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Chapter 2. Databases</td>
+ <td width="40%" align="right" valign="top"> Chapter 2. Databases</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/C/index.html b/db/docs/gsg/C/index.html
index c77c5f886..dd010d38d 100644
--- a/db/docs/gsg/C/index.html
+++ b/db/docs/gsg/C/index.html
@@ -1,8 +1,8 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Getting Started with Berkeley DB</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
@@ -16,9 +16,9 @@
<th colspan="3" align="center">Getting Started with Berkeley DB</th>
</tr>
<tr>
- <td width="20%" align="left"> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="preface.html">Next</a></td>
+ <td width="20%" align="left"> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="preface.html">Next</a></td>
</tr>
</table>
<hr />
@@ -27,7 +27,7 @@
<div class="titlepage">
<div>
<div>
- <h1 class="title"><a id="id650925"></a>Getting Started with Berkeley DB</h1>
+ <h1 class="title"><a id="id613741"></a>Getting Started with Berkeley DB</h1>
</div>
<div>
<div class="legalnotice">
@@ -37,7 +37,7 @@
<p>
This documentation is distributed under an open source license.
You may review the terms of this license at:
- <a href="http://www.oracle.com/technology/software/products/berkeley-db/htdocs/oslicensing.html" target="_top">http://www.oracle.com/technology/software/products/berkeley-db/htdocs/oslicensing.html</a>
+ <a href="http://www.oracle.com/technology/software/products/berkeley-db/htdocs/oslicense.html" target="_top">http://www.oracle.com/technology/software/products/berkeley-db/htdocs/oslicense.html</a>
</p>
@@ -47,9 +47,9 @@
and
Sleepycat are trademarks or registered trademarks of
- Oracle Corporation. All rights to these marks are reserved.
+ Oracle. All rights to these marks are reserved.
No third-party use is permitted without the
- express prior written consent of Oracle Corporation.
+ express prior written consent of Oracle.
</p>
<p>
To obtain a copy of this document's original source code, please
@@ -61,7 +61,7 @@
</div>
</div>
<div>
- <p class="pubdate">9/20/2006</p>
+ <p class="pubdate">6/30/2007</p>
</div>
</div>
<div></div>
@@ -337,6 +337,15 @@
</a>
</span>
</dt>
+ <dd>
+ <dl>
+ <dt>
+ <span class="sect2">
+ <a href="keyCreator.html#multikeys">Working with Multiple Keys</a>
+ </span>
+ </dt>
+ </dl>
+ </dd>
<dt>
<span class="sect1">
<a href="readSecondary.html">Reading Secondary Databases</a>
@@ -474,14 +483,14 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"> </td>
- <td width="20%" align="center"> </td>
- <td width="40%" align="right"> <a accesskey="n" href="preface.html">Next</a></td>
+ <td width="40%" align="left"> </td>
+ <td width="20%" align="center"> </td>
+ <td width="40%" align="right"> <a accesskey="n" href="preface.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top"> </td>
- <td width="20%" align="center"> </td>
- <td width="40%" align="right" valign="top"> Preface</td>
+ <td width="40%" align="left" valign="top"> </td>
+ <td width="20%" align="center"> </td>
+ <td width="40%" align="right" valign="top"> Preface</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/C/indexes.html b/db/docs/gsg/C/indexes.html
index 1c21ea2cf..26ebc1e79 100644
--- a/db/docs/gsg/C/indexes.html
+++ b/db/docs/gsg/C/indexes.html
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <title>Chapter 5. Secondary Databases</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Chapter 5. Secondary Databases</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
@@ -15,12 +15,12 @@
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
- <th colspan="3" align="center">Chapter 5. Secondary Databases</th>
+ <th colspan="3" align="center">Chapter 5. Secondary Databases</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="CoreCursorUsage.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="keyCreator.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="CoreCursorUsage.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="keyCreator.html">Next</a></td>
</tr>
</table>
<hr />
@@ -29,7 +29,7 @@
<div class="titlepage">
<div>
<div>
- <h2 class="title"><a id="indexes"></a>Chapter 5. Secondary Databases</h2>
+ <h2 class="title"><a id="indexes"></a>Chapter 5. Secondary Databases</h2>
</div>
</div>
<div></div>
@@ -52,6 +52,15 @@
</a>
</span>
</dt>
+ <dd>
+ <dl>
+ <dt>
+ <span class="sect2">
+ <a href="keyCreator.html#multikeys">Working with Multiple Keys</a>
+ </span>
+ </dt>
+ </dl>
+ </dd>
<dt>
<span class="sect1">
<a href="readSecondary.html">Reading Secondary Databases</a>
@@ -118,7 +127,7 @@
people such as names, addresses, phone numbers, and so forth.
While your application may frequently want to query a person by user
ID (that is, by the information stored in the key), it may also on occasion
- want to location people by, say, their name.
+ want to locate people by, say, their name.
</p>
<p>
Rather than iterate through all of the records in your database, examining
@@ -284,7 +293,7 @@ flags = DB_CREATE; /* If the database does not exist,
/* open the primary database */
ret = dbp-&gt;open(dbp, /* DB structure pointer */
NULL, /* Transaction pointer */
- &quot;my_db.db&quot;, /* On-disk file that holds the database. */
+ "my_db.db", /* On-disk file that holds the database. */
NULL, /* Optional logical database name */
DB_BTREE, /* Database access method */
flags, /* Open flags */
@@ -296,7 +305,7 @@ if (ret != 0) {
/* open the secondary database */
ret = sdbp-&gt;open(sdbp, /* DB structure pointer */
NULL, /* Transaction pointer */
- &quot;my_secdb.db&quot;, /* On-disk file that holds the database. */
+ "my_secdb.db", /* On-disk file that holds the database. */
NULL, /* Optional logical database name */
DB_BTREE, /* Database access method */
flags, /* Open flags */
@@ -329,18 +338,18 @@ if (dbp != NULL)
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="CoreCursorUsage.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="CoreCursorUsage.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="keyCreator.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="keyCreator.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Cursor Example </td>
+ <td width="40%" align="left" valign="top">Cursor Example </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Implementing Key
+ <td width="40%" align="right" valign="top"> Implementing Key
Extractors
</td>
diff --git a/db/docs/gsg/C/introduction.html b/db/docs/gsg/C/introduction.html
index 36e417ff1..887336b41 100644
--- a/db/docs/gsg/C/introduction.html
+++ b/db/docs/gsg/C/introduction.html
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <title>Chapter 1. Introduction to Berkeley DB </title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Chapter 1. Introduction to Berkeley DB </title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
@@ -15,12 +15,12 @@
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
- <th colspan="3" align="center">Chapter 1. Introduction to Berkeley DB </th>
+ <th colspan="3" align="center">Chapter 1. Introduction to Berkeley DB </th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="preface.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="concepts.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="preface.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="concepts.html">Next</a></td>
</tr>
</table>
<hr />
@@ -29,7 +29,7 @@
<div class="titlepage">
<div>
<div>
- <h2 class="title"><a id="introduction"></a>Chapter 1. Introduction to Berkeley DB </h2>
+ <h2 class="title"><a id="introduction"></a>Chapter 1. Introduction to Berkeley DB </h2>
</div>
</div>
<div></div>
@@ -210,18 +210,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="preface.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="preface.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="concepts.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="concepts.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Preface </td>
+ <td width="40%" align="left" valign="top">Preface </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Berkeley DB Concepts</td>
+ <td width="40%" align="right" valign="top"> Berkeley DB Concepts</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/C/joins.html b/db/docs/gsg/C/joins.html
index 8b3464328..122c105d6 100644
--- a/db/docs/gsg/C/joins.html
+++ b/db/docs/gsg/C/joins.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Database Joins</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="indexes.html" title="Chapter 5. Secondary Databases" />
+ <link rel="up" href="indexes.html" title="Chapter 5. Secondary Databases" />
<link rel="previous" href="secondaryCursor.html" title="&#10; &#10; Using Cursors with Secondary Databases&#10; " />
<link rel="next" href="coreindexusage.html" title="Secondary Database Example" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Database Joins</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="secondaryCursor.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 5. Secondary Databases</th>
- <td width="20%" align="right"> <a accesskey="n" href="coreindexusage.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="secondaryCursor.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 5. Secondary Databases</th>
+ <td width="20%" align="right"> <a accesskey="n" href="coreindexusage.html">Next</a></td>
</tr>
</table>
<hr />
@@ -98,9 +98,6 @@
using a
<span>join cursor.</span>
- <span>
-
- </span>
</p>
<div class="sect2" lang="en" xml:lang="en">
<div class="titlepage">
@@ -179,7 +176,6 @@
</div>
<p>
For example:
-
</p>
<a id="c_index9"></a>
<pre class="programlisting">#include &lt;db.h&gt;
@@ -196,9 +192,9 @@ DBC *carray[4];
DBT key, data;
int ret;
-char *the_color = &quot;red&quot;;
-char *the_type = &quot;minivan&quot;;
-char *the_make = &quot;Toyota&quot;;
+char *the_color = "red";
+char *the_type = "minivan";
+char *the_make = "Toyota";
/* Database and secondary database opens omitted for brevity.
* Assume a primary database handle:
@@ -240,17 +236,17 @@ if (( ret =
/* Position the cursors */
key.data = the_color;
key.size = strlen(the_color) + 1;
-if ((ret = color_curs-&gt;c_get(color_curs, &amp;key, &amp;data, DB_SET)) != 0)
+if ((ret = color_curs-&gt;get(color_curs, &amp;key, &amp;data, DB_SET)) != 0)
/* Error handling goes here */
key.data = the_make;
key.size = strlen(the_make) + 1;
-if ((ret = make_curs-&gt;c_get(make_curs, &amp;key, &amp;data, DB_SET)) != 0)
+if ((ret = make_curs-&gt;get(make_curs, &amp;key, &amp;data, DB_SET)) != 0)
/* Error handling goes here */
key.data = the_type;
key.size = strlen(the_type) + 1;
-if ((ret = type_curs-&gt;c_get(type_curs, &amp;key, &amp;data, DB_SET)) != 0)
+if ((ret = type_curs-&gt;get(type_curs, &amp;key, &amp;data, DB_SET)) != 0)
/* Error handling goes here */
/* Set up the cursor array */
@@ -264,7 +260,7 @@ if ((ret = automotiveDB-&gt;join(automotiveDB, carray, &amp;join_curs, 0)) != 0)
/* Error handling goes here */
/* Iterate using the join cursor */
-while ((ret = join_curs-&gt;c_get(join_curs, &amp;key, &amp;data, 0)) == 0) {
+while ((ret = join_curs-&gt;get(join_curs, &amp;key, &amp;data, 0)) == 0) {
/* Do interesting things with the key and data */
}
@@ -284,21 +280,21 @@ if (ret == DB_NOTFOUND) {
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="secondaryCursor.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="secondaryCursor.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="indexes.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="coreindexusage.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="coreindexusage.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">
Using Cursors with Secondary Databases
-  </td>
+  </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Secondary Database Example</td>
+ <td width="40%" align="right" valign="top"> Secondary Database Example</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/C/keyCreator.html b/db/docs/gsg/C/keyCreator.html
index 906f4d832..bd7e2e7e9 100644
--- a/db/docs/gsg/C/keyCreator.html
+++ b/db/docs/gsg/C/keyCreator.html
@@ -1,8 +1,8 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Implementing Key
Extractors
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="indexes.html" title="Chapter 5. Secondary Databases" />
- <link rel="previous" href="indexes.html" title="Chapter 5. Secondary Databases" />
+ <link rel="up" href="indexes.html" title="Chapter 5. Secondary Databases" />
+ <link rel="previous" href="indexes.html" title="Chapter 5. Secondary Databases" />
<link rel="next" href="readSecondary.html" title="Reading Secondary Databases" />
</head>
<body>
@@ -24,9 +24,9 @@
</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="indexes.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 5. Secondary Databases</th>
- <td width="20%" align="right"> <a accesskey="n" href="readSecondary.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="indexes.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 5. Secondary Databases</th>
+ <td width="20%" align="right"> <a accesskey="n" href="readSecondary.html">Next</a></td>
</tr>
</table>
<hr />
@@ -125,23 +125,130 @@ get_sales_rep(DB *sdbp, /* secondary db handle */
sdbp, /* Secondary database */
get_sales_rep, /* Callback used for key creation. */
0); /* Flags */</pre>
+ <div class="sect2" lang="en" xml:lang="en">
+ <div class="titlepage">
+ <div>
+ <div>
+ <h3 class="title"><a id="multikeys"></a>Working with Multiple Keys</h3>
+ </div>
+ </div>
+ <div></div>
+ </div>
+ <p>
+ Until now we have only discussed indexes as if there is
+ a one-to-one relationship between the secondary key and
+ the primary database record. In fact, it is possible to
+ generate multiple keys for any given record, provided
+ that you take appropriate steps in your key creator
+ to do so.
+ </p>
+ <p>
+ For example, suppose you had a database that contained
+ information about books. Suppose further that you
+ sometimes want to look up books by author. Because
+ sometimes books have multiple authors, you may want to
+ return multiple secondary keys for every book that you
+ index.
+ </p>
+ <p>
+ To do this, you write a key extractor that returns a
+ <span>DBT</span>
+
+ whose <tt class="literal">data</tt> member points to an array of
+ <span>DBTs.</span>
+
+ Each such member of this array contains a single secondary key.
+ In addition, the
+ <span>DBT</span>
+
+ returned by your key extractor must have a size field
+ equal to the number of elements contained in the
+ <span>DBT</span>
+
+ array. Also, the flag field for the
+ <span>DBT</span>
+
+ returned by the callback must include
+ <tt class="literal">DB_DBT_MULTIPLE</tt>. For example:
+ </p>
+ <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
+ <h3 class="title">Note</h3>
+ <p>
+ It is important that the array of secondary
+ keys created by your callback not contain
+ repeats. That is, every element in the array
+ must be unique. If the array does not contain
+ a unique set, then the secondary can get out
+ of sync with the primary.
+ </p>
+ </div>
+ <pre class="programlisting">int
+my_callback(DB *dbp, const DBT *pkey, const DBT *pdata, DBT *skey)
+{
+ DBT *tmpdbt;
+ char *tmpdata1, tmpdata2;
+
+ /*
+ * This example skips the step of extracting the data you
+ * want to use for building your secondary keys from the
+ * pkey or pdata DBT.
+ *
+ * Assume for the purpose of this example that the data
+ * is temporarily stored in two variables,
+ * tmpdata1 and tmpdata2.
+ */
+
+ /*
+ * Create an array of DBTs that is large enough for the
+ * number of keys that you want to return. In this case,
+ * we go with an array of size two.
+ */
+
+ tmpdbt = malloc(sizeof(DBT) * 2);
+ memset(tmpdbt, 0, sizeof(DBT) * 2);
+
+ /* Now assign secondary keys to each element of the array. */
+ tmpdbt[0].data = tmpdata1;
+ tmpdbt[0].size = (u_int32_t)strlen(tmpdbt[0].data) + 1;
+ tmpdbt[1].data = tmpdata2;
+ tmpdbt[1].size = (u_int32_t)strlen(tmpdbt[1].data) + 1;
+
+ /*
+ * Now we set flags for the returned DBT. DB_DBT_MULTIPLE is
+ * required in order for DB to know that the DBT references an
+ * array. In addition, we set DB_DBT_APPMALLOC because we
+ * dynamically allocated memory for the DBT's data field.
+ * DB_DBT_APPMALLOC causes DB to release that memory once it
+ * is done with the returned DBT.
+ */
+ skey-&gt;flags = DB_DBT_MULTIPLE | DB_DBT_APPMALLOC;
+
+ /* Point the results data field to the arrays of DBTs */
+ skey-&gt;data = tmpdbt;
+
+ /* Indicate the returned array is of size 2 */
+ skey-&gt;size = 2;
+
+ return (0);
+} </pre>
+ </div>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="indexes.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="indexes.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="indexes.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="readSecondary.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="readSecondary.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Chapter 5. Secondary Databases </td>
+ <td width="40%" align="left" valign="top">Chapter 5. Secondary Databases </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Reading Secondary Databases</td>
+ <td width="40%" align="right" valign="top"> Reading Secondary Databases</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/C/preface.html b/db/docs/gsg/C/preface.html
index 1b74e4636..ac6d83896 100644
--- a/db/docs/gsg/C/preface.html
+++ b/db/docs/gsg/C/preface.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Preface</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
<link rel="up" href="index.html" title="Getting Started with Berkeley DB" />
<link rel="previous" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="next" href="introduction.html" title="Chapter 1. Introduction to Berkeley DB " />
+ <link rel="next" href="introduction.html" title="Chapter 1. Introduction to Berkeley DB " />
</head>
<body>
<div class="navheader">
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Preface</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="index.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="introduction.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="index.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="introduction.html">Next</a></td>
</tr>
</table>
<hr />
@@ -58,15 +58,21 @@
<p>
Welcome to Berkeley DB (DB). This document introduces
- <span>DB, version 4.5. </span>
+ <span>DB, version 4.6. </span>
+
It is intended
to provide a rapid introduction to the DB API set and related concepts. The goal of this document is
to provide you with an efficient mechanism
with which you can evaluate DB against your project's technical requirements. As such, this document is
- intended for
+ intended for
+
<span>C</span> developers and senior software architects who are
- looking for an in-process data management solution. No prior
- experience with Berkeley DB is expected or required.
+ looking for an
+ <span>
+ in-process data management solution.
+ </span>
+
+ No prior experience with Berkeley DB is expected or required.
</p>
<div class="sect1" lang="en" xml:lang="en">
<div class="titlepage">
@@ -82,12 +88,15 @@
</p>
<p>
Structure names are represented in <tt class="classname">monospaced font</tt>, as are <tt class="methodname">method
- names</tt>. For example: &quot;<tt class="methodname">DB-&gt;open()</tt> is a method
- on a <tt class="classname">DB</tt> handle.&quot;
+ names</tt>. For example: "<tt class="methodname">DB-&gt;open()</tt> is a method
+ on a <tt class="classname">DB</tt> handle."
</p>
<p>
- Variable or non-literal text is presented in <span class="emphasis"><em>italics</em></span>. For example: &quot;Go to your
- <span class="emphasis"><em>DB_INSTALL</em></span> directory.&quot;
+ Variable or non-literal text is presented in <span class="emphasis"><em>italics</em></span>. For example: "Go to your
+
+ <span class="emphasis"><em>DB_INSTALL</em></span>
+
+ directory."
</p>
<p>
Program examples are displayed in a <tt class="classname">monospaced font</tt> on a shaded background.
@@ -146,6 +155,8 @@ typedef struct stock_dbs {
</a>
+
+
</p>
</li>
<li>
@@ -172,6 +183,8 @@ typedef struct stock_dbs {
+
+
</p>
</li>
</ul>
@@ -183,18 +196,18 @@ typedef struct stock_dbs {
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="index.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="index.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="introduction.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="introduction.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Getting Started with Berkeley DB </td>
+ <td width="40%" align="left" valign="top">Getting Started with Berkeley DB </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Chapter 1. Introduction to Berkeley DB </td>
+ <td width="40%" align="right" valign="top"> Chapter 1. Introduction to Berkeley DB </td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/C/readSecondary.html b/db/docs/gsg/C/readSecondary.html
index 69f4ebf73..0f76e2806 100644
--- a/db/docs/gsg/C/readSecondary.html
+++ b/db/docs/gsg/C/readSecondary.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Reading Secondary Databases</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="indexes.html" title="Chapter 5. Secondary Databases" />
+ <link rel="up" href="indexes.html" title="Chapter 5. Secondary Databases" />
<link rel="previous" href="keyCreator.html" title="Implementing Key &#10; &#10; Extractors&#10; " />
<link rel="next" href="secondaryDelete.html" title="Deleting Secondary Database Records" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Reading Secondary Databases</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="keyCreator.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 5. Secondary Databases</th>
- <td width="20%" align="right"> <a accesskey="n" href="secondaryDelete.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="keyCreator.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 5. Secondary Databases</th>
+ <td width="20%" align="right"> <a accesskey="n" href="secondaryDelete.html">Next</a></td>
</tr>
</table>
<hr />
@@ -68,7 +68,7 @@
DB *my_secondary_database;
DBT key; /* Used for the search key */
DBT pkey, pdata; /* Used to return the primary key and data */
-char *search_name = &quot;John Doe&quot;;
+char *search_name = "John Doe";
/* Primary and secondary database opens omitted for brevity */
@@ -118,21 +118,21 @@ my_secondary_database-&gt;pget(my_secondary_database, NULL,
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="keyCreator.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="keyCreator.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="indexes.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="secondaryDelete.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="secondaryDelete.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">Implementing Key
Extractors
-  </td>
+  </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Deleting Secondary Database Records</td>
+ <td width="40%" align="right" valign="top"> Deleting Secondary Database Records</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/C/returns.html b/db/docs/gsg/C/returns.html
index 020e384dd..e5938abf6 100644
--- a/db/docs/gsg/C/returns.html
+++ b/db/docs/gsg/C/returns.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Error Returns</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="introduction.html" title="Chapter 1. Introduction to Berkeley DB " />
+ <link rel="up" href="introduction.html" title="Chapter 1. Introduction to Berkeley DB " />
<link rel="previous" href="environments.html" title="Environments" />
<link rel="next" href="gettingit.html" title="Getting and Using DB " />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Error Returns</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="environments.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 1. Introduction to Berkeley DB </th>
- <td width="20%" align="right"> <a accesskey="n" href="gettingit.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="environments.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 1. Introduction to Berkeley DB </th>
+ <td width="20%" align="right"> <a accesskey="n" href="gettingit.html">Next</a></td>
</tr>
</table>
<hr />
@@ -82,18 +82,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="environments.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="environments.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="introduction.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="gettingit.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="gettingit.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Environments </td>
+ <td width="40%" align="left" valign="top">Environments </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Getting and Using DB </td>
+ <td width="40%" align="right" valign="top"> Getting and Using DB </td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/C/secondaryCursor.html b/db/docs/gsg/C/secondaryCursor.html
index fc4820f8e..00a0df841 100644
--- a/db/docs/gsg/C/secondaryCursor.html
+++ b/db/docs/gsg/C/secondaryCursor.html
@@ -1,8 +1,8 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>
Using Cursors with Secondary Databases
@@ -10,7 +10,7 @@
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="indexes.html" title="Chapter 5. Secondary Databases" />
+ <link rel="up" href="indexes.html" title="Chapter 5. Secondary Databases" />
<link rel="previous" href="secondaryDelete.html" title="Deleting Secondary Database Records" />
<link rel="next" href="joins.html" title="Database Joins" />
</head>
@@ -24,9 +24,9 @@
</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="secondaryDelete.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 5. Secondary Databases</th>
- <td width="20%" align="right"> <a accesskey="n" href="joins.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="secondaryDelete.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 5. Secondary Databases</th>
+ <td width="20%" align="right"> <a accesskey="n" href="joins.html">Next</a></td>
</tr>
</table>
<hr />
@@ -77,13 +77,13 @@
<li>
<p>
You cannot use <tt class="literal">DB_GET_BOTH</tt> and related flags with
- <tt class="methodname">DB-&gt;c_get()</tt>
+ <tt class="methodname">DB-&gt;get()</tt>
and a secondary database. Instead, you must use
- <span><tt class="methodname">DB-&gt;c_pget()</tt>.</span>
+ <span><tt class="methodname">DB-&gt;pget()</tt>.</span>
Also, in that case the primary and secondary key given on the call to
- <tt class="methodname">DB-&gt;c_pget()</tt>
+ <tt class="methodname">DB-&gt;pget()</tt>
must match the secondary key and associated primary record key in
order for that primary record to be returned as a result of the
@@ -113,7 +113,7 @@
DB *sdbp; /* Secondary DB handle */
DBC *cursorp; /* Cursor */
DBT key, data; /* DBTs used for the delete */
-char *search_name = &quot;John Doe&quot;; /* Name to delete */
+char *search_name = "John Doe"; /* Name to delete */
/* Primary and secondary database opens omitted for brevity. */
@@ -131,25 +131,25 @@ key.size = strlen(search_name) + 1;
/* Position the cursor */
-while (cursorp-&gt;c_get(cursorp, &amp;key, &amp;data, DB_SET) == 0)
- cursorp-&gt;c_del(cursorp, 0); </pre>
+while (cursorp-&gt;get(cursorp, &amp;key, &amp;data, DB_SET) == 0)
+ cursorp-&gt;del(cursorp, 0); </pre>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="secondaryDelete.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="secondaryDelete.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="indexes.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="joins.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="joins.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Deleting Secondary Database Records </td>
+ <td width="40%" align="left" valign="top">Deleting Secondary Database Records </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Database Joins</td>
+ <td width="40%" align="right" valign="top"> Database Joins</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/C/secondaryDelete.html b/db/docs/gsg/C/secondaryDelete.html
index d39ebdab5..f77a4ba1a 100644
--- a/db/docs/gsg/C/secondaryDelete.html
+++ b/db/docs/gsg/C/secondaryDelete.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Deleting Secondary Database Records</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="indexes.html" title="Chapter 5. Secondary Databases" />
+ <link rel="up" href="indexes.html" title="Chapter 5. Secondary Databases" />
<link rel="previous" href="readSecondary.html" title="Reading Secondary Databases" />
<link rel="next" href="secondaryCursor.html" title="&#10; &#10; Using Cursors with Secondary Databases&#10; " />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Deleting Secondary Database Records</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="readSecondary.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 5. Secondary Databases</th>
- <td width="20%" align="right"> <a accesskey="n" href="secondaryCursor.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="readSecondary.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 5. Secondary Databases</th>
+ <td width="20%" align="right"> <a accesskey="n" href="secondaryCursor.html">Next</a></td>
</tr>
</table>
<hr />
@@ -90,7 +90,7 @@
DB *dbp, *sdbp; /* Primary and secondary DB handles */
DBT key; /* DBTs used for the delete */
int ret; /* Function return value */
-char *search_name = &quot;John Doe&quot;; /* Name to delete */
+char *search_name = "John Doe"; /* Name to delete */
/* Primary */
ret = db_create(&amp;dbp, NULL, 0);
@@ -113,7 +113,7 @@ if (ret != 0) {
/* open the primary database */
ret = dbp-&gt;open(dbp, /* DB structure pointer */
NULL, /* Transaction pointer */
- &quot;my_db.db&quot;, /* On-disk file that holds the database.
+ "my_db.db", /* On-disk file that holds the database.
* Required. */
NULL, /* Optional logical database name */
DB_BTREE, /* Database access method */
@@ -126,7 +126,7 @@ if (ret != 0) {
/* open the secondary database */
ret = sdbp-&gt;open(sdbp, /* DB structure pointer */
NULL, /* Transaction pointer */
- &quot;my_secdb.db&quot;, /* On-disk file that holds the database.
+ "my_secdb.db", /* On-disk file that holds the database.
* Required. */
NULL, /* Optional logical database name */
DB_BTREE, /* Database access method */
@@ -162,18 +162,18 @@ key.size = strlen(search_name) + 1;
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="readSecondary.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="readSecondary.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="indexes.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="secondaryCursor.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="secondaryCursor.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Reading Secondary Databases </td>
+ <td width="40%" align="left" valign="top">Reading Secondary Databases </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> 
+ <td width="40%" align="right" valign="top"> 
Using Cursors with Secondary Databases
</td>
diff --git a/db/docs/gsg/C/usingDbt.html b/db/docs/gsg/C/usingDbt.html
index bea353a9c..f9cee5d62 100644
--- a/db/docs/gsg/C/usingDbt.html
+++ b/db/docs/gsg/C/usingDbt.html
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Reading and Writing Database Records</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="DBEntry.html" title="Chapter 3. Database Records" />
- <link rel="previous" href="DBEntry.html" title="Chapter 3. Database Records" />
+ <link rel="up" href="DBEntry.html" title="Chapter 3. Database Records" />
+ <link rel="previous" href="DBEntry.html" title="Chapter 3. Database Records" />
<link rel="next" href="cstructs.html" title="Using C Structures with DB" />
</head>
<body>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Reading and Writing Database Records</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="DBEntry.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 3. Database Records</th>
- <td width="20%" align="right"> <a accesskey="n" href="cstructs.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="DBEntry.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 3. Database Records</th>
+ <td width="20%" align="right"> <a accesskey="n" href="cstructs.html">Next</a></td>
</tr>
</table>
<hr />
@@ -127,7 +127,7 @@
...
-char *description = &quot;Grocery bill.&quot;;
+char *description = "Grocery bill.";
DBT key, data;
DB *my_database;
int ret;
@@ -150,7 +150,7 @@ data.size = strlen(description) +1;
ret = my_database-&gt;put(my_database, NULL, &amp;key, &amp;data, DB_NOOVERWRITE);
if (ret == DB_KEYEXIST) {
my_database-&gt;err(my_database, ret,
- &quot;Put failed because key %f already exists&quot;, money);
+ "Put failed because key %f already exists", money);
}</pre>
</div>
<div class="sect2" lang="en" xml:lang="en">
@@ -206,7 +206,7 @@ if (ret == DB_KEYEXIST) {
DBT key, data;
DB *my_database;
float money;
-char *description[DESCRIPTION_SIZE + 1];
+char description[DESCRIPTION_SIZE + 1];
/* Database open omitted for clarity */
@@ -217,11 +217,11 @@ memset(&amp;key, 0, sizeof(DBT));
memset(&amp;data, 0, sizeof(DBT));
key.data = &amp;money;
-key.ulen = sizeof(float);
+key.size = sizeof(float);
-data.set_data(&amp;description);
-data.set_ulen(DESCRIPTION_SIZE + 1);
-data.set_flags(DB_DBT_USERMEM);
+data.data = description;
+data.ulen = DESCRIPTION_SIZE + 1;
+data.flags = DB_DBT_USERMEM;
my_database-&gt;get(my_database, NULL, &amp;key, &amp;data, 0);
/*
@@ -378,18 +378,18 @@ my_database-&gt;del(my_database, NULL, &amp;key, 0);</pre>
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="DBEntry.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="DBEntry.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="DBEntry.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="cstructs.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="cstructs.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Chapter 3. Database Records </td>
+ <td width="40%" align="left" valign="top">Chapter 3. Database Records </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Using C Structures with DB</td>
+ <td width="40%" align="right" valign="top"> Using C Structures with DB</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/CXX/BerkeleyDB-Core-Cxx-GSG.pdf b/db/docs/gsg/CXX/BerkeleyDB-Core-Cxx-GSG.pdf
index 4c140dd09..74ec2d8f3 100644
--- a/db/docs/gsg/CXX/BerkeleyDB-Core-Cxx-GSG.pdf
+++ b/db/docs/gsg/CXX/BerkeleyDB-Core-Cxx-GSG.pdf
Binary files differ
diff --git a/db/docs/gsg/CXX/CoreCursorUsage.html b/db/docs/gsg/CXX/CoreCursorUsage.html
index 4795904e1..8cbe19863 100644
--- a/db/docs/gsg/CXX/CoreCursorUsage.html
+++ b/db/docs/gsg/CXX/CoreCursorUsage.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Cursor Example</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="Cursors.html" title="Chapter 4. Using Cursors" />
+ <link rel="up" href="Cursors.html" title="Chapter 4. Using Cursors" />
<link rel="previous" href="ReplacingEntryWCursor.html" title="Replacing Records Using Cursors" />
- <link rel="next" href="indexes.html" title="Chapter 5. Secondary Databases" />
+ <link rel="next" href="indexes.html" title="Chapter 5. Secondary Databases" />
</head>
<body>
<div class="navheader">
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Cursor Example</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="ReplacingEntryWCursor.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 4. Using Cursors</th>
- <td width="20%" align="right"> <a accesskey="n" href="indexes.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="ReplacingEntryWCursor.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 4. Using Cursors</th>
+ <td width="20%" align="right"> <a accesskey="n" href="indexes.html">Next</a></td>
</tr>
</table>
<hr />
@@ -113,8 +113,8 @@
#include &lt;fstream&gt;
#include &lt;cstdlib&gt;
-#include &quot;MyDb.hpp&quot;
-#include &quot;gettingStartedCommon.hpp&quot;
+#include "MyDb.hpp"
+#include "gettingStartedCommon.hpp"
// Forward declarations
int show_all_records(MyDb &amp;inventoryDB, MyDb &amp;vendorDB);
@@ -130,11 +130,11 @@ int
main (int argc, char *argv[])
{
// Initialize the path to the database files
- std::string databaseHome(&quot;./&quot;);
+ std::string databaseHome("./");
// Database names
- std::string vDbName(&quot;vendordb.db&quot;);
- std::string iDbName(&quot;inventorydb.db&quot;);
+ std::string vDbName("vendordb.db");
+ std::string iDbName("inventorydb.db");
// Parse the command line arguments
// Omitted for brevity
@@ -147,11 +147,11 @@ main (int argc, char *argv[])
show_all_records(inventoryDB, vendorDB);
} catch(DbException &amp;e) {
- std::cerr &lt;&lt; &quot;Error reading databases. &quot; &lt;&lt; std::endl;
+ std::cerr &lt;&lt; "Error reading databases. " &lt;&lt; std::endl;
std::cerr &lt;&lt; e.what() &lt;&lt; std::endl;
return(e.get_errno());
} catch(std::exception &amp;e) {
- std::cerr &lt;&lt; &quot;Error reading databases. &quot; &lt;&lt; std::endl;
+ std::cerr &lt;&lt; "Error reading databases. " &lt;&lt; std::endl;
std::cerr &lt;&lt; e.what() &lt;&lt; std::endl;
return(-1);
}
@@ -189,7 +189,7 @@ show_all_records(MyDb &amp;inventoryDB, MyDb &amp;vendorDB)
show_vendor(vendorDB, inventoryItem.getVendor().c_str());
}
} catch(DbException &amp;e) {
- inventoryDB.getDb().err(e.get_errno(), &quot;Error in show_all_records&quot;);
+ inventoryDB.getDb().err(e.get_errno(), "Error in show_all_records");
cursorp-&gt;close();
throw e;
} catch(std::exception &amp;e) {
@@ -241,17 +241,17 @@ show_vendor(MyDb &amp;vendorDB, const char *vendor)
// Get the record
vendorDB.getDb().get(NULL, &amp;key, &amp;data, 0);
- std::cout &lt;&lt; &quot; &quot; &lt;&lt; my_vendor.street &lt;&lt; &quot;\n&quot;
- &lt;&lt; &quot; &quot; &lt;&lt; my_vendor.city &lt;&lt; &quot;, &quot;
- &lt;&lt; my_vendor.state &lt;&lt; &quot;\n&quot;
- &lt;&lt; &quot; &quot; &lt;&lt; my_vendor.zipcode &lt;&lt; &quot;\n&quot;
- &lt;&lt; &quot; &quot; &lt;&lt; my_vendor.phone_number &lt;&lt; &quot;\n&quot;
- &lt;&lt; &quot; Contact: &quot; &lt;&lt; my_vendor.sales_rep &lt;&lt; &quot;\n&quot;
- &lt;&lt; &quot; &quot; &lt;&lt; my_vendor.sales_rep_phone
+ std::cout &lt;&lt; " " &lt;&lt; my_vendor.street &lt;&lt; "\n"
+ &lt;&lt; " " &lt;&lt; my_vendor.city &lt;&lt; ", "
+ &lt;&lt; my_vendor.state &lt;&lt; "\n"
+ &lt;&lt; " " &lt;&lt; my_vendor.zipcode &lt;&lt; "\n"
+ &lt;&lt; " " &lt;&lt; my_vendor.phone_number &lt;&lt; "\n"
+ &lt;&lt; " Contact: " &lt;&lt; my_vendor.sales_rep &lt;&lt; "\n"
+ &lt;&lt; " " &lt;&lt; my_vendor.sales_rep_phone
&lt;&lt; std::endl;
} catch(DbException &amp;e) {
- vendorDB.getDb().err(e.get_errno(), &quot;Error in show_vendor&quot;);
+ vendorDB.getDb().err(e.get_errno(), "Error in show_vendor");
throw e;
} catch(std::exception &amp;e) {
throw e;
@@ -270,18 +270,18 @@ show_vendor(MyDb &amp;vendorDB, const char *vendor)
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="ReplacingEntryWCursor.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="ReplacingEntryWCursor.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="Cursors.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="indexes.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="indexes.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Replacing Records Using Cursors </td>
+ <td width="40%" align="left" valign="top">Replacing Records Using Cursors </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Chapter 5. Secondary Databases</td>
+ <td width="40%" align="right" valign="top"> Chapter 5. Secondary Databases</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/CXX/CoreDBAdmin.html b/db/docs/gsg/CXX/CoreDBAdmin.html
index 1bec126a7..49d69febe 100644
--- a/db/docs/gsg/CXX/CoreDBAdmin.html
+++ b/db/docs/gsg/CXX/CoreDBAdmin.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Administrative Methods</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="DB.html" title="Chapter 2. Databases" />
+ <link rel="up" href="DB.html" title="Chapter 2. Databases" />
<link rel="previous" href="DBOpenFlags.html" title="Database Open Flags" />
<link rel="next" href="dbErrorReporting.html" title="Error Reporting Functions" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Administrative Methods</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="DBOpenFlags.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 2. Databases</th>
- <td width="20%" align="right"> <a accesskey="n" href="dbErrorReporting.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="DBOpenFlags.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 2. Databases</th>
+ <td width="20%" align="right"> <a accesskey="n" href="dbErrorReporting.html">Next</a></td>
</tr>
</table>
<hr />
@@ -82,9 +82,9 @@ db.get_open_flags(&amp;open_flags); </pre>
...
Db db(NULL, 0);
-// Database open and subsequent operations omitted for clarity
+// Database handle creation omitted for clarity
-db.remove(&quot;mydb.db&quot;, // Database file to remove
+db.remove("mydb.db", // Database file to remove
NULL, // Database to remove. This is
// NULL so the entire file is
// removed.
@@ -109,13 +109,13 @@ db.remove(&quot;mydb.db&quot;, // Database file to remove
...
Db db(NULL, 0);
-// Database open and subsequent operations omitted for clarity
+// Database handle creation omitted for clarity
-db.rename(&quot;mydb.db&quot;, // Database file to rename
+db.rename("mydb.db", // Database file to rename
NULL, // Database to rename. This is
// NULL so the entire file is
// renamed.
- &quot;newdb.db&quot;, // New database file name
+ "newdb.db", // New database file name
0); // Flags. None used.</pre>
</li>
</ul>
@@ -128,18 +128,18 @@ db.rename(&quot;mydb.db&quot;, // Database file to rename
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="DBOpenFlags.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="DBOpenFlags.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="DB.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="dbErrorReporting.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="dbErrorReporting.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Database Open Flags </td>
+ <td width="40%" align="left" valign="top">Database Open Flags </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Error Reporting Functions</td>
+ <td width="40%" align="right" valign="top"> Error Reporting Functions</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/CXX/CoreDbCXXUsage.html b/db/docs/gsg/CXX/CoreDbCXXUsage.html
index a40416c0e..580674333 100644
--- a/db/docs/gsg/CXX/CoreDbCXXUsage.html
+++ b/db/docs/gsg/CXX/CoreDbCXXUsage.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Database Example</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="DB.html" title="Chapter 2. Databases" />
+ <link rel="up" href="DB.html" title="Chapter 2. Databases" />
<link rel="previous" href="CoreEnvUsage.html" title="Managing Databases in Environments" />
- <link rel="next" href="DBEntry.html" title="Chapter 3. Database Records" />
+ <link rel="next" href="DBEntry.html" title="Chapter 3. Database Records" />
</head>
<body>
<div class="navheader">
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Database Example</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="CoreEnvUsage.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 2. Databases</th>
- <td width="20%" align="right"> <a accesskey="n" href="DBEntry.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="CoreEnvUsage.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 2. Databases</th>
+ <td width="20%" align="right"> <a accesskey="n" href="DBEntry.html">Next</a></td>
</tr>
</table>
<hr />
@@ -106,7 +106,7 @@ private:
</p>
<a id="cxx_db12"></a>
<pre class="programlisting">// File: MyDb.cpp
-#include &quot;MyDb.hpp&quot;
+#include "MyDb.hpp"
// Class constructor. Requires a path to the location
// where the database is located, and a database name
@@ -128,12 +128,12 @@ MyDb::MyDb(std::string &amp;path, std::string &amp;dbName)
// need to catch them both.
catch(DbException &amp;e)
{
- std::cerr &lt;&lt; &quot;Error opening database: &quot; &lt;&lt; dbFileName_ &lt;&lt; &quot;\n&quot;;
+ std::cerr &lt;&lt; "Error opening database: " &lt;&lt; dbFileName_ &lt;&lt; "\n";
std::cerr &lt;&lt; e.what() &lt;&lt; std::endl;
}
catch(std::exception &amp;e)
{
- std::cerr &lt;&lt; &quot;Error opening database: &quot; &lt;&lt; dbFileName_ &lt;&lt; &quot;\n&quot;;
+ std::cerr &lt;&lt; "Error opening database: " &lt;&lt; dbFileName_ &lt;&lt; "\n";
std::cerr &lt;&lt; e.what() &lt;&lt; std::endl;
}
}</pre>
@@ -152,17 +152,17 @@ MyDb::close()
try
{
db_.close(0);
- std::cout &lt;&lt; &quot;Database &quot; &lt;&lt; dbFileName_
- &lt;&lt; &quot; is closed.&quot; &lt;&lt; std::endl;
+ std::cout &lt;&lt; "Database " &lt;&lt; dbFileName_
+ &lt;&lt; " is closed." &lt;&lt; std::endl;
}
catch(DbException &amp;e)
{
- std::cerr &lt;&lt; &quot;Error closing database: &quot; &lt;&lt; dbFileName_ &lt;&lt; &quot;\n&quot;;
+ std::cerr &lt;&lt; "Error closing database: " &lt;&lt; dbFileName_ &lt;&lt; "\n";
std::cerr &lt;&lt; e.what() &lt;&lt; std::endl;
}
catch(std::exception &amp;e)
{
- std::cerr &lt;&lt; &quot;Error closing database: &quot; &lt;&lt; dbFileName_ &lt;&lt; &quot;\n&quot;;
+ std::cerr &lt;&lt; "Error closing database: " &lt;&lt; dbFileName_ &lt;&lt; "\n";
std::cerr &lt;&lt; e.what() &lt;&lt; std::endl;
}
} </pre>
@@ -172,18 +172,18 @@ MyDb::close()
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="CoreEnvUsage.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="CoreEnvUsage.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="DB.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="DBEntry.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="DBEntry.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Managing Databases in Environments </td>
+ <td width="40%" align="left" valign="top">Managing Databases in Environments </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Chapter 3. Database Records</td>
+ <td width="40%" align="right" valign="top"> Chapter 3. Database Records</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/CXX/CoreEnvUsage.html b/db/docs/gsg/CXX/CoreEnvUsage.html
index cc8196954..2ad775edf 100644
--- a/db/docs/gsg/CXX/CoreEnvUsage.html
+++ b/db/docs/gsg/CXX/CoreEnvUsage.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Managing Databases in Environments</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="DB.html" title="Chapter 2. Databases" />
+ <link rel="up" href="DB.html" title="Chapter 2. Databases" />
<link rel="previous" href="dbErrorReporting.html" title="Error Reporting Functions" />
<link rel="next" href="CoreDbCXXUsage.html" title="Database Example" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Managing Databases in Environments</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="dbErrorReporting.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 2. Databases</th>
- <td width="20%" align="right"> <a accesskey="n" href="CoreDbCXXUsage.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="dbErrorReporting.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 2. Databases</th>
+ <td width="20%" align="right"> <a accesskey="n" href="CoreDbCXXUsage.html">Next</a></td>
</tr>
</table>
<hr />
@@ -63,18 +63,18 @@ u_int32_t env_flags = DB_CREATE | // If the environment does not
// exist, create it.
DB_INIT_MPOOL; // Initialize the in-memory cache.
-std::string envHome(&quot;/export1/testEnv&quot;);
+std::string envHome("/export1/testEnv");
DbEnv myEnv(0);
try {
myEnv.open(envHome.c_str(), env_flags, 0);
} catch(DbException &amp;e) {
- std::cerr &lt;&lt; &quot;Error opening database environment: &quot;
+ std::cerr &lt;&lt; "Error opening database environment: "
&lt;&lt; envHome &lt;&lt; std::endl;
std::cerr &lt;&lt; e.what() &lt;&lt; std::endl;
exit( -1 );
} catch(std::exception &amp;e) {
- std::cerr &lt;&lt; &quot;Error opening database environment: &quot;
+ std::cerr &lt;&lt; "Error opening database environment: "
&lt;&lt; envHome &lt;&lt; std::endl;
std::cerr &lt;&lt; e.what() &lt;&lt; std::endl;
exit( -1 );
@@ -87,12 +87,14 @@ try {
<a id="cxx_env2"></a>
<pre class="programlisting">#include &lt;db_cxx.h&gt;
...
-u_int32_t env_flags = DB_CREATE; // If the environment does not
+u_int32_t env_flags = DB_CREATE | // If the environment does not
// exist, create it.
+ DB_INIT_MPOOL; // Initialize the in-memory cache.
+std::string envHome("/export1/testEnv");
+
<b class="userinput"><tt>u_int32_t db_flags = DB_CREATE; // If the database does not
// exist, create it.</tt></b>
-std::string envHome(&quot;/export1/testEnv&quot;);
-<b class="userinput"><tt>std::string dbName(&quot;mydb.db&quot;);</tt></b>
+<b class="userinput"><tt>std::string dbName("mydb.db");</tt></b>
DbEnv myEnv(0);
<b class="userinput"><tt>Db *myDb;</tt></b>
@@ -106,16 +108,16 @@ try {
db_flags,
0);</tt></b>
} catch(DbException &amp;e) {
- std::cerr &lt;&lt; &quot;Error opening database environment: &quot;
+ std::cerr &lt;&lt; "Error opening database environment: "
&lt;&lt; envHome
- &lt;&lt; &quot; and database &quot;
+ &lt;&lt; " and database "
&lt;&lt; dbName &lt;&lt; std::endl;
std::cerr &lt;&lt; e.what() &lt;&lt; std::endl;
exit( -1 );
} catch(std::exception &amp;e) {
- std::cerr &lt;&lt; &quot;Error opening database environment: &quot;
+ std::cerr &lt;&lt; "Error opening database environment: "
&lt;&lt; envHome
- &lt;&lt; &quot; and database &quot;
+ &lt;&lt; " and database "
&lt;&lt; dbName &lt;&lt; std::endl;
std::cerr &lt;&lt; e.what() &lt;&lt; std::endl;
exit( -1 );
@@ -132,16 +134,16 @@ try {
myEnv.close(0);
} catch(DbException &amp;e) {
- std::cerr &lt;&lt; &quot;Error closing database environment: &quot;
+ std::cerr &lt;&lt; "Error closing database environment: "
&lt;&lt; envHome
- &lt;&lt; &quot; or database &quot;
+ &lt;&lt; " or database "
&lt;&lt; dbName &lt;&lt; std::endl;
std::cerr &lt;&lt; e.what() &lt;&lt; std::endl;
exit( -1 );
} catch(std::exception &amp;e) {
- std::cerr &lt;&lt; &quot;Error closing database environment: &quot;
+ std::cerr &lt;&lt; "Error closing database environment: "
&lt;&lt; envHome
- &lt;&lt; &quot; or database &quot;
+ &lt;&lt; " or database "
&lt;&lt; dbName &lt;&lt; std::endl;
std::cerr &lt;&lt; e.what() &lt;&lt; std::endl;
exit( -1 );
@@ -151,18 +153,18 @@ try {
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="dbErrorReporting.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="dbErrorReporting.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="DB.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="CoreDbCXXUsage.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="CoreDbCXXUsage.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Error Reporting Functions </td>
+ <td width="40%" align="left" valign="top">Error Reporting Functions </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Database Example</td>
+ <td width="40%" align="right" valign="top"> Database Example</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/CXX/Cursors.html b/db/docs/gsg/CXX/Cursors.html
index 7b657c03e..bceef8149 100644
--- a/db/docs/gsg/CXX/Cursors.html
+++ b/db/docs/gsg/CXX/Cursors.html
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <title>Chapter 4. Using Cursors</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Chapter 4. Using Cursors</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
@@ -15,12 +15,12 @@
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
- <th colspan="3" align="center">Chapter 4. Using Cursors</th>
+ <th colspan="3" align="center">Chapter 4. Using Cursors</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="DbCXXUsage.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="Positioning.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="DbCXXUsage.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="Positioning.html">Next</a></td>
</tr>
</table>
<hr />
@@ -29,7 +29,7 @@
<div class="titlepage">
<div>
<div>
- <h2 class="title"><a id="Cursors"></a>Chapter 4. Using Cursors</h2>
+ <h2 class="title"><a id="Cursors"></a>Chapter 4. Using Cursors</h2>
</div>
</div>
<div></div>
@@ -160,18 +160,18 @@ my_database.close(0);</pre>
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="DbCXXUsage.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="DbCXXUsage.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="Positioning.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="Positioning.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Database Usage Example </td>
+ <td width="40%" align="left" valign="top">Database Usage Example </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Getting Records Using the Cursor</td>
+ <td width="40%" align="right" valign="top"> Getting Records Using the Cursor</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/CXX/DB.html b/db/docs/gsg/CXX/DB.html
index 73718a1e5..6a39c4cad 100644
--- a/db/docs/gsg/CXX/DB.html
+++ b/db/docs/gsg/CXX/DB.html
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <title>Chapter 2. Databases</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Chapter 2. Databases</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
@@ -15,12 +15,12 @@
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
- <th colspan="3" align="center">Chapter 2. Databases</th>
+ <th colspan="3" align="center">Chapter 2. Databases</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="gettingit.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="coredbclose.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="gettingit.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="coredbclose.html">Next</a></td>
</tr>
</table>
<hr />
@@ -29,7 +29,7 @@
<div class="titlepage">
<div>
<div>
- <h2 class="title"><a id="DB"></a>Chapter 2. Databases</h2>
+ <h2 class="title"><a id="DB"></a>Chapter 2. Databases</h2>
</div>
</div>
<div></div>
@@ -144,7 +144,7 @@ u_int32_t oFlags = DB_CREATE; // Open flags;
try {
// Open the database
db.open(NULL, // Transaction pointer
- &quot;my_db.db&quot;, // Database file name
+ "my_db.db", // Database file name
NULL, // Optional logical database name
DB_BTREE, // Database access method
oFlags, // Open flags
@@ -162,18 +162,18 @@ try {
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="gettingit.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="gettingit.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="coredbclose.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="coredbclose.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Getting and Using DB  </td>
+ <td width="40%" align="left" valign="top">Getting and Using DB  </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Closing Databases</td>
+ <td width="40%" align="right" valign="top"> Closing Databases</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/CXX/DBEntry.html b/db/docs/gsg/CXX/DBEntry.html
index 07dc492d3..f040284ad 100644
--- a/db/docs/gsg/CXX/DBEntry.html
+++ b/db/docs/gsg/CXX/DBEntry.html
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <title>Chapter 3. Database Records</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Chapter 3. Database Records</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
@@ -15,12 +15,12 @@
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
- <th colspan="3" align="center">Chapter 3. Database Records</th>
+ <th colspan="3" align="center">Chapter 3. Database Records</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="CoreDbCXXUsage.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="usingDbt.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="CoreDbCXXUsage.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="usingDbt.html">Next</a></td>
</tr>
</table>
<hr />
@@ -29,7 +29,7 @@
<div class="titlepage">
<div>
<div>
- <h2 class="title"><a id="DBEntry"></a>Chapter 3. Database Records</h2>
+ <h2 class="title"><a id="DBEntry"></a>Chapter 3. Database Records</h2>
</div>
</div>
<div></div>
@@ -81,7 +81,7 @@
</dl>
</div>
<p>
- DB records contain two parts &#8212; a key and some data. Both the key
+ DB records contain two parts — a key and some data. Both the key
and its corresponding data are
encapsulated in
@@ -120,7 +120,7 @@
<span><tt class="classname">Dbt</tt> objects</span>
- &#8212; one for the key and another for the data.
+ — one for the key and another for the data.
</p>
@@ -131,7 +131,7 @@
...
float money = 122.45;
-char *description = &quot;Grocery bill.&quot;;
+char *description = "Grocery bill.";
Dbt key(&amp;money, sizeof(float));
Dbt data(description, strlen(description)+1); </pre>
@@ -170,18 +170,18 @@ description = (char *)data.get_data();</pre>
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="CoreDbCXXUsage.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="CoreDbCXXUsage.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="usingDbt.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="usingDbt.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Database Example </td>
+ <td width="40%" align="left" valign="top">Database Example </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Reading and Writing Database Records</td>
+ <td width="40%" align="right" valign="top"> Reading and Writing Database Records</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/CXX/DBOpenFlags.html b/db/docs/gsg/CXX/DBOpenFlags.html
index 5cc47eefb..388270a1f 100644
--- a/db/docs/gsg/CXX/DBOpenFlags.html
+++ b/db/docs/gsg/CXX/DBOpenFlags.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Database Open Flags</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="DB.html" title="Chapter 2. Databases" />
+ <link rel="up" href="DB.html" title="Chapter 2. Databases" />
<link rel="previous" href="coredbclose.html" title="Closing Databases" />
<link rel="next" href="CoreDBAdmin.html" title="Administrative Methods" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Database Open Flags</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="coredbclose.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 2. Databases</th>
- <td width="20%" align="right"> <a accesskey="n" href="CoreDBAdmin.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="coredbclose.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 2. Databases</th>
+ <td width="20%" align="right"> <a accesskey="n" href="CoreDBAdmin.html">Next</a></td>
</tr>
</table>
<hr />
@@ -36,7 +36,7 @@
</div>
<p>
The following are the flags that you may want to use at database open time.
- Note that this list is not exhaustive &#8212; it includes only those flags likely
+ Note that this list is not exhaustive — it includes only those flags likely
to be of interest for introductory, single-threaded
database applications. For a complete list of the flags available to you, see the
@@ -99,18 +99,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="coredbclose.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="coredbclose.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="DB.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="CoreDBAdmin.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="CoreDBAdmin.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Closing Databases </td>
+ <td width="40%" align="left" valign="top">Closing Databases </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Administrative Methods</td>
+ <td width="40%" align="right" valign="top"> Administrative Methods</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/CXX/DbCXXUsage.html b/db/docs/gsg/CXX/DbCXXUsage.html
index 34ca01e17..449852bd1 100644
--- a/db/docs/gsg/CXX/DbCXXUsage.html
+++ b/db/docs/gsg/CXX/DbCXXUsage.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Database Usage Example</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="DBEntry.html" title="Chapter 3. Database Records" />
+ <link rel="up" href="DBEntry.html" title="Chapter 3. Database Records" />
<link rel="previous" href="usingDbt.html" title="Reading and Writing Database Records" />
- <link rel="next" href="Cursors.html" title="Chapter 4. Using Cursors" />
+ <link rel="next" href="Cursors.html" title="Chapter 4. Using Cursors" />
</head>
<body>
<div class="navheader">
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Database Usage Example</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="usingDbt.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 3. Database Records</th>
- <td width="20%" align="right"> <a accesskey="n" href="Cursors.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="usingDbt.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 3. Database Records</th>
+ <td width="20%" align="right"> <a accesskey="n" href="Cursors.html">Next</a></td>
</tr>
</table>
<hr />
@@ -226,12 +226,12 @@ public:
<pre class="programlisting"> // Utility function used to show the contents of this class
void
show() {
- std::cout &lt;&lt; &quot;\nName: &quot; &lt;&lt; name_ &lt;&lt; std::endl;
- std::cout &lt;&lt; &quot; SKU: &quot; &lt;&lt; sku_ &lt;&lt; std::endl;
- std::cout &lt;&lt; &quot; Price: &quot; &lt;&lt; price_ &lt;&lt; std::endl;
- std::cout &lt;&lt; &quot; Quantity: &quot; &lt;&lt; quantity_ &lt;&lt; std::endl;
- std::cout &lt;&lt; &quot; Category: &quot; &lt;&lt; category_ &lt;&lt; std::endl;
- std::cout &lt;&lt; &quot; Vendor: &quot; &lt;&lt; vendor_ &lt;&lt; std::endl;
+ std::cout &lt;&lt; "\nName: " &lt;&lt; name_ &lt;&lt; std::endl;
+ std::cout &lt;&lt; " SKU: " &lt;&lt; sku_ &lt;&lt; std::endl;
+ std::cout &lt;&lt; " Price: " &lt;&lt; price_ &lt;&lt; std::endl;
+ std::cout &lt;&lt; " Quantity: " &lt;&lt; quantity_ &lt;&lt; std::endl;
+ std::cout &lt;&lt; " Category: " &lt;&lt; category_ &lt;&lt; std::endl;
+ std::cout &lt;&lt; " Vendor: " &lt;&lt; vendor_ &lt;&lt; std::endl;
} </pre>
<p>
Finally, we provide a private method that is used to help us pack data
@@ -283,8 +283,8 @@ public:
#include &lt;fstream&gt;
#include &lt;cstdlib&gt;
-#include &quot;MyDb.hpp&quot;
-#include &quot;gettingStartedCommon.hpp&quot;
+#include "MyDb.hpp"
+#include "gettingStartedCommon.hpp"
// Forward declarations
void loadVendorDB(MyDb&amp;, std::string&amp;);
@@ -302,12 +302,12 @@ int
main(int argc, char *argv[])
{
// Initialize the path to the database files
- std::string basename(&quot;./&quot;);
- std::string databaseHome(&quot;./&quot;);
+ std::string basename("./");
+ std::string databaseHome("./");
// Database names
- std::string vDbName(&quot;vendordb.db&quot;);
- std::string iDbName(&quot;inventorydb.db&quot;);
+ std::string vDbName("vendordb.db");
+ std::string iDbName("inventorydb.db");
// Parse the command line arguments here and determine
// the location of the flat text files containing the
@@ -315,8 +315,8 @@ main(int argc, char *argv[])
// Identify the full name for our input files, which should
// also include some path information.
- std::string inventoryFile = basename + &quot;inventory.txt&quot;;
- std::string vendorFile = basename + &quot;vendors.txt&quot;;
+ std::string inventoryFile = basename + "inventory.txt";
+ std::string vendorFile = basename + "vendors.txt";
try
{
@@ -330,11 +330,11 @@ main(int argc, char *argv[])
// Load the inventory database
loadInventoryDB(inventoryDB, inventoryFile);
} catch(DbException &amp;e) {
- std::cerr &lt;&lt; &quot;Error loading databases. &quot; &lt;&lt; std::endl;
+ std::cerr &lt;&lt; "Error loading databases. " &lt;&lt; std::endl;
std::cerr &lt;&lt; e.what() &lt;&lt; std::endl;
return(e.get_errno());
} catch(std::exception &amp;e) {
- std::cerr &lt;&lt; &quot;Error loading databases. &quot; &lt;&lt; std::endl;
+ std::cerr &lt;&lt; "Error loading databases. " &lt;&lt; std::endl;
std::cerr &lt;&lt; e.what() &lt;&lt; std::endl;
return(-1);
}
@@ -374,8 +374,8 @@ loadVendorDB(MyDb &amp;vendorDB, std::string &amp;vendorFile)
std::ifstream inFile(vendorFile.c_str(), std::ios::in);
if ( !inFile )
{
- std::cerr &lt;&lt; &quot;Could not open file '&quot; &lt;&lt; vendorFile
- &lt;&lt; &quot;'. Giving up.&quot; &lt;&lt; std::endl;
+ std::cerr &lt;&lt; "Could not open file '" &lt;&lt; vendorFile
+ &lt;&lt; "'. Giving up." &lt;&lt; std::endl;
throw std::exception();
}
@@ -391,7 +391,7 @@ loadVendorDB(MyDb &amp;vendorDB, std::string &amp;vendorFile)
// In a real program, there would be a lot more
// defensive code here.
sscanf(stringBuf.c_str(),
- &quot;%20[^#]#%20[^#]#%20[^#]#%3[^#]#%6[^#]#%13[^#]#%20[^#]#%20[^\n]&quot;,
+ "%20[^#]#%20[^#]#%20[^#]#%3[^#]#%6[^#]#%13[^#]#%20[^#]#%20[^\n]",
my_vendor.name, my_vendor.street,
my_vendor.city, my_vendor.state,
my_vendor.zipcode, my_vendor.phone_number,
@@ -438,7 +438,7 @@ loadVendorDB(MyDb &amp;vendorDB, std::string &amp;vendorFile)
int
getNextPound(std::string &amp;theString, std::string &amp;substring)
{
- int pos = theString.find(&quot;#&quot;);
+ int pos = theString.find("#");
substring.assign(theString, 0, pos);
theString.assign(theString, pos + 1, theString.size());
return (pos);
@@ -456,8 +456,8 @@ loadInventoryDB(MyDb &amp;inventoryDB, std::string &amp;inventoryFile)
std::ifstream inFile(inventoryFile.c_str(), std::ios::in);
if (!inFile)
{
- std::cerr &lt;&lt; &quot;Could not open file '&quot; &lt;&lt; inventoryFile
- &lt;&lt; &quot;'. Giving up.&quot; &lt;&lt; std::endl;
+ std::cerr &lt;&lt; "Could not open file '" &lt;&lt; inventoryFile
+ &lt;&lt; "'. Giving up." &lt;&lt; std::endl;
throw std::exception();
}
@@ -511,18 +511,18 @@ loadInventoryDB(MyDb &amp;inventoryDB, std::string &amp;inventoryFile)
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="usingDbt.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="usingDbt.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="DBEntry.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="Cursors.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="Cursors.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Reading and Writing Database Records </td>
+ <td width="40%" align="left" valign="top">Reading and Writing Database Records </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Chapter 4. Using Cursors</td>
+ <td width="40%" align="right" valign="top"> Chapter 4. Using Cursors</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/CXX/DeleteEntryWCursor.html b/db/docs/gsg/CXX/DeleteEntryWCursor.html
index 482f1dfa0..e4f4564f6 100644
--- a/db/docs/gsg/CXX/DeleteEntryWCursor.html
+++ b/db/docs/gsg/CXX/DeleteEntryWCursor.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Deleting Records Using Cursors</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="Cursors.html" title="Chapter 4. Using Cursors" />
+ <link rel="up" href="Cursors.html" title="Chapter 4. Using Cursors" />
<link rel="previous" href="PutEntryWCursor.html" title="Putting Records Using Cursors" />
<link rel="next" href="ReplacingEntryWCursor.html" title="Replacing Records Using Cursors" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Deleting Records Using Cursors</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="PutEntryWCursor.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 4. Using Cursors</th>
- <td width="20%" align="right"> <a accesskey="n" href="ReplacingEntryWCursor.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="PutEntryWCursor.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 4. Using Cursors</th>
+ <td width="20%" align="right"> <a accesskey="n" href="ReplacingEntryWCursor.html">Next</a></td>
</tr>
</table>
<hr />
@@ -54,7 +54,7 @@
...
-char *key1str = &quot;My first string&quot;;
+char *key1str = "My first string";
Db my_database(NULL, 0);
Dbc *cursorp;
@@ -76,9 +76,9 @@ try {
}
} catch(DbException &amp;e) {
- my_database.err(e.get_errno(), &quot;Error!&quot;);
+ my_database.err(e.get_errno(), "Error!");
} catch(std::exception &amp;e) {
- my_database.errx(&quot;Error! %s&quot;, e.what());
+ my_database.errx("Error! %s", e.what());
}
// Cursors must be closed
@@ -91,18 +91,18 @@ my_database.close(0);</pre>
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="PutEntryWCursor.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="PutEntryWCursor.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="Cursors.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="ReplacingEntryWCursor.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="ReplacingEntryWCursor.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Putting Records Using Cursors </td>
+ <td width="40%" align="left" valign="top">Putting Records Using Cursors </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Replacing Records Using Cursors</td>
+ <td width="40%" align="right" valign="top"> Replacing Records Using Cursors</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/CXX/Positioning.html b/db/docs/gsg/CXX/Positioning.html
index 6c0001657..329fafe40 100644
--- a/db/docs/gsg/CXX/Positioning.html
+++ b/db/docs/gsg/CXX/Positioning.html
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Getting Records Using the Cursor</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="Cursors.html" title="Chapter 4. Using Cursors" />
- <link rel="previous" href="Cursors.html" title="Chapter 4. Using Cursors" />
+ <link rel="up" href="Cursors.html" title="Chapter 4. Using Cursors" />
+ <link rel="previous" href="Cursors.html" title="Chapter 4. Using Cursors" />
<link rel="next" href="PutEntryWCursor.html" title="Putting Records Using Cursors" />
</head>
<body>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Getting Records Using the Cursor</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="Cursors.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 4. Using Cursors</th>
- <td width="20%" align="right"> <a accesskey="n" href="PutEntryWCursor.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="Cursors.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 4. Using Cursors</th>
+ <td width="20%" align="right"> <a accesskey="n" href="PutEntryWCursor.html">Next</a></td>
</tr>
</table>
<hr />
@@ -73,9 +73,9 @@ try {
// can never be reached.
}
} catch(DbException &amp;e) {
- my_database.err(e.get_errno(), &quot;Error!&quot;);
+ my_database.err(e.get_errno(), "Error!");
} catch(std::exception &amp;e) {
- my_database.errx(&quot;Error! %s&quot;, e.what());
+ my_database.errx("Error! %s", e.what());
}
// Cursors must be closed
@@ -114,9 +114,9 @@ try {
// can never be reached.
}
} catch(DbException &amp;e) {
- my_database.err(e.get_errno(), &quot;Error!&quot;);
+ my_database.err(e.get_errno(), "Error!");
} catch(std::exception &amp;e) {
- my_database.errx(&quot;Error! %s&quot;, e.what());
+ my_database.errx("Error! %s", e.what());
}
// Cursors must be closed
@@ -196,7 +196,7 @@ my_database.close(0);</pre>
<p>
<span>Identical to
<tt class="literal">DB_SET</tt>
- <tt class="methodname">Cursor.getSearchKey()</tt>
+
unless you are using the BTree access. In this case, the cursor
moves</span>
@@ -330,8 +330,8 @@ try {
my_database.cursor(NULL, &amp;cursorp, 0);
// Search criteria
- char *search_key = &quot;Alaska&quot;;
- char *search_data = &quot;Fa&quot;;
+ char *search_key = "Alaska";
+ char *search_data = "Fa";
// Set up our DBTs
Dbt key(search_key, strlen(search_key) + 1);
@@ -345,9 +345,9 @@ try {
// Do something with the data
}
} catch(DbException &amp;e) {
- my_database.err(e.get_errno(), &quot;Error!&quot;);
+ my_database.err(e.get_errno(), "Error!");
} catch(std::exception &amp;e) {
- my_database.errx(&quot;Error! %s&quot;, e.what());
+ my_database.errx("Error! %s", e.what());
}
// Close the cursor
@@ -453,7 +453,7 @@ Arizona/Florence</pre>
and you then call
<span>
-
+
<tt class="methodname">Dbc::get()</tt>
with <tt class="literal">DB_PREV_NODUP</tt>,
</span>
@@ -521,7 +521,7 @@ Arizona/Florence</pre>
...
-char *search_key = &quot;Al&quot;;
+char *search_key = "Al";
Db my_database(NULL, 0);
Dbc *cursorp;
@@ -540,14 +540,14 @@ try {
// key and data begin with the correct strings.
int ret = cursorp-&gt;get(&amp;key, &amp;data, DB_SET);
while (ret != DB_NOTFOUND) {
- std::cout &lt;&lt; &quot;key: &quot; &lt;&lt; (char *)key.get_data()
- &lt;&lt; &quot;data: &quot; &lt;&lt; (char *)data.get_data()&lt;&lt; std::endl;
+ std::cout &lt;&lt; "key: " &lt;&lt; (char *)key.get_data()
+ &lt;&lt; "data: " &lt;&lt; (char *)data.get_data()&lt;&lt; std::endl;
ret = cursorp-&gt;get(&amp;key, &amp;data, DB_NEXT_DUP);
}
} catch(DbException &amp;e) {
- my_database.err(e.get_errno(), &quot;Error!&quot;);
+ my_database.err(e.get_errno(), "Error!");
} catch(std::exception &amp;e) {
- my_database.errx(&quot;Error! %s&quot;, e.what());
+ my_database.errx("Error! %s", e.what());
}
// Close the cursor
@@ -562,18 +562,18 @@ my_database.close(0); </pre>
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="Cursors.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="Cursors.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="Cursors.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="PutEntryWCursor.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="PutEntryWCursor.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Chapter 4. Using Cursors </td>
+ <td width="40%" align="left" valign="top">Chapter 4. Using Cursors </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Putting Records Using Cursors</td>
+ <td width="40%" align="right" valign="top"> Putting Records Using Cursors</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/CXX/PutEntryWCursor.html b/db/docs/gsg/CXX/PutEntryWCursor.html
index 1374295e9..8a68d920c 100644
--- a/db/docs/gsg/CXX/PutEntryWCursor.html
+++ b/db/docs/gsg/CXX/PutEntryWCursor.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Putting Records Using Cursors</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="Cursors.html" title="Chapter 4. Using Cursors" />
+ <link rel="up" href="Cursors.html" title="Chapter 4. Using Cursors" />
<link rel="previous" href="Positioning.html" title="Getting Records Using the Cursor" />
<link rel="next" href="DeleteEntryWCursor.html" title="Deleting Records Using Cursors" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Putting Records Using Cursors</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="Positioning.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 4. Using Cursors</th>
- <td width="20%" align="right"> <a accesskey="n" href="DeleteEntryWCursor.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="Positioning.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 4. Using Cursors</th>
+ <td width="20%" align="right"> <a accesskey="n" href="DeleteEntryWCursor.html">Next</a></td>
</tr>
</table>
<hr />
@@ -136,11 +136,11 @@
...
-char *key1str = &quot;My first string&quot;;
-char *data1str = &quot;My first data&quot;;
-char *key2str = &quot;A second string&quot;;
-char *data2str = &quot;My second data&quot;;
-char *data3str = &quot;My third data&quot;;
+char *key1str = "My first string";
+char *data1str = "My first data";
+char *key2str = "A second string";
+char *data2str = "My second data";
+char *data3str = "My third data";
Db my_database(NULL, 0);
@@ -161,11 +161,11 @@ try {
my_database.cursor(NULL, &amp;cursorp, 0);
// Assuming an empty database, this first put places
- // &quot;My first string&quot;/&quot;My first data&quot; in the first
+ // "My first string"/"My first data" in the first
// position in the database
int ret = cursorp-&gt;put(&amp;key1, &amp;data1, DB_KEYFIRST);
- // This put places &quot;A second string&quot;/&quot;My second data&quot; in the
+ // This put places "A second string"/"My second data" in the
// the database according to its key sorts against the key
// used for the currently existing database record. Most likely
// this record would appear first in the database.
@@ -173,21 +173,21 @@ try {
DB_KEYFIRST); /* Added according to sort order */
// If duplicates are not allowed, the currently existing record that
- // uses &quot;key2&quot; is overwritten with the data provided on this put.
- // That is, the record &quot;A second string&quot;/&quot;My second data&quot; becomes
- // &quot;A second string&quot;/&quot;My third data&quot;
+ // uses "key2" is overwritten with the data provided on this put.
+ // That is, the record "A second string"/"My second data" becomes
+ // "A second string"/"My third data"
//
- // If duplicates are allowed, then &quot;My third data&quot; is placed in the
- // duplicates list according to how it sorts against &quot;My second data&quot;.
+ // If duplicates are allowed, then "My third data" is placed in the
+ // duplicates list according to how it sorts against "My second data".
ret = cursorp-&gt;put(&amp;key2, &amp;data3,
DB_KEYFIRST); // If duplicates are not allowed, record
// is overwritten with new data. Otherwise,
// the record is added to the beginning of
// the duplicates list.
} catch(DbException &amp;e) {
- my_database.err(e.get_errno(), &quot;Error!&quot;);
+ my_database.err(e.get_errno(), "Error!");
} catch(std::exception &amp;e) {
- my_database.errx(&quot;Error! %s&quot;, e.what());
+ my_database.errx("Error! %s", e.what());
}
// Cursors must be closed
@@ -200,18 +200,18 @@ my_database.close(0);</pre>
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="Positioning.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="Positioning.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="Cursors.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="DeleteEntryWCursor.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="DeleteEntryWCursor.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Getting Records Using the Cursor </td>
+ <td width="40%" align="left" valign="top">Getting Records Using the Cursor </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Deleting Records Using Cursors</td>
+ <td width="40%" align="right" valign="top"> Deleting Records Using Cursors</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/CXX/ReplacingEntryWCursor.html b/db/docs/gsg/CXX/ReplacingEntryWCursor.html
index 5d6bd4dd7..e231ace99 100644
--- a/db/docs/gsg/CXX/ReplacingEntryWCursor.html
+++ b/db/docs/gsg/CXX/ReplacingEntryWCursor.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Replacing Records Using Cursors</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="Cursors.html" title="Chapter 4. Using Cursors" />
+ <link rel="up" href="Cursors.html" title="Chapter 4. Using Cursors" />
<link rel="previous" href="DeleteEntryWCursor.html" title="Deleting Records Using Cursors" />
<link rel="next" href="CoreCursorUsage.html" title="Cursor Example" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Replacing Records Using Cursors</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="DeleteEntryWCursor.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 4. Using Cursors</th>
- <td width="20%" align="right"> <a accesskey="n" href="CoreCursorUsage.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="DeleteEntryWCursor.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 4. Using Cursors</th>
+ <td width="20%" align="right"> <a accesskey="n" href="CoreCursorUsage.html">Next</a></td>
</tr>
</table>
<hr />
@@ -57,8 +57,8 @@ Db my_database(NULL, 0);
Dbc *cursorp;
int ret;
-char *key1str = &quot;My first string&quot;;
-char *replacement_data = &quot;replace me&quot;;
+char *key1str = "My first string";
+char *replacement_data = "replace me";
try {
// Database open omitted
@@ -78,9 +78,9 @@ try {
cursorp-&gt;put(&amp;key, &amp;data, DB_CURRENT);
}
} catch(DbException &amp;e) {
- my_database.err(e.get_errno(), &quot;Error!&quot;);
+ my_database.err(e.get_errno(), "Error!");
} catch(std::exception &amp;e) {
- my_database.errx(&quot;Error! %s&quot;, e.what());
+ my_database.errx("Error! %s", e.what());
}
// Cursors must be closed
@@ -119,18 +119,18 @@ my_database.close(0);</pre>
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="DeleteEntryWCursor.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="DeleteEntryWCursor.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="Cursors.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="CoreCursorUsage.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="CoreCursorUsage.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Deleting Records Using Cursors </td>
+ <td width="40%" align="left" valign="top">Deleting Records Using Cursors </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Cursor Example</td>
+ <td width="40%" align="right" valign="top"> Cursor Example</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/CXX/accessmethods.html b/db/docs/gsg/CXX/accessmethods.html
index dcbd74844..cbcc86fcb 100644
--- a/db/docs/gsg/CXX/accessmethods.html
+++ b/db/docs/gsg/CXX/accessmethods.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Access Methods</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="introduction.html" title="Chapter 1. Introduction to Berkeley DB " />
+ <link rel="up" href="introduction.html" title="Chapter 1. Introduction to Berkeley DB " />
<link rel="previous" href="concepts.html" title="Berkeley DB Concepts" />
<link rel="next" href="databaseLimits.html" title="Database Limits and Portability" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Access Methods</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="concepts.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 1. Introduction to Berkeley DB </th>
- <td width="20%" align="right"> <a accesskey="n" href="databaseLimits.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="concepts.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 1. Introduction to Berkeley DB </th>
+ <td width="20%" align="right"> <a accesskey="n" href="databaseLimits.html">Next</a></td>
</tr>
</table>
<hr />
@@ -262,18 +262,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="concepts.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="concepts.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="introduction.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="databaseLimits.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="databaseLimits.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Berkeley DB Concepts </td>
+ <td width="40%" align="left" valign="top">Berkeley DB Concepts </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Database Limits and Portability</td>
+ <td width="40%" align="right" valign="top"> Database Limits and Portability</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/CXX/btree.html b/db/docs/gsg/CXX/btree.html
index 6e34d7bbc..ce42b565b 100644
--- a/db/docs/gsg/CXX/btree.html
+++ b/db/docs/gsg/CXX/btree.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>BTree Configuration</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="dbconfig.html" title="Chapter 6. Database Configuration" />
+ <link rel="up" href="dbconfig.html" title="Chapter 6. Database Configuration" />
<link rel="previous" href="cachesize.html" title="Selecting the Cache Size" />
</head>
<body>
@@ -17,9 +17,9 @@
<th colspan="3" align="center">BTree Configuration</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="cachesize.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 6. Database Configuration</th>
- <td width="20%" align="right"> </td>
+ <td width="20%" align="left"><a accesskey="p" href="cachesize.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 6. Database Configuration</th>
+ <td width="20%" align="right"> </td>
</tr>
</table>
<hr />
@@ -327,7 +327,7 @@
...
Db db(NULL, 0);
-const char *file_name = &quot;myd.db&quot;;
+const char *file_name = "myd.db";
try {
// Configure the database for sorted duplicates
@@ -341,9 +341,9 @@ try {
DB_CREATE, // Open flags
0); // File mode. Using defaults
} catch(DbException &amp;e) {
- db.err(e.get_errno(), &quot;Database '%s' open failed.&quot;, file_name);
+ db.err(e.get_errno(), "Database '%s' open failed.", file_name);
} catch(std::exception &amp;e) {
- db.errx(&quot;Error opening database: %s : %s\n&quot;, file_name, e.what());
+ db.errx("Error opening database: %s : %s\n", file_name, e.what());
}
...
@@ -351,9 +351,9 @@ try {
try {
db.close(0);
} catch(DbException &amp;e) {
- db.err(e.get_errno(), &quot;Database '%s' close failed.&quot;, file_name);
+ db.err(e.get_errno(), "Database '%s' close failed.", file_name);
} catch(std::exception &amp;e) {
- db.errx(&quot;Error closing database: %s : %s\n&quot;, file_name, e.what());
+ db.errx("Error closing database: %s : %s\n", file_name, e.what());
}
</pre>
@@ -528,18 +528,18 @@ db.set_bt_compare(compare_int);
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="cachesize.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="cachesize.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="dbconfig.html">Up</a>
</td>
- <td width="40%" align="right"> </td>
+ <td width="40%" align="right"> </td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Selecting the Cache Size </td>
+ <td width="40%" align="left" valign="top">Selecting the Cache Size </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> </td>
+ <td width="40%" align="right" valign="top"> </td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/CXX/cachesize.html b/db/docs/gsg/CXX/cachesize.html
index 8b95477a8..426308cf6 100644
--- a/db/docs/gsg/CXX/cachesize.html
+++ b/db/docs/gsg/CXX/cachesize.html
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Selecting the Cache Size</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="dbconfig.html" title="Chapter 6. Database Configuration" />
- <link rel="previous" href="dbconfig.html" title="Chapter 6. Database Configuration" />
+ <link rel="up" href="dbconfig.html" title="Chapter 6. Database Configuration" />
+ <link rel="previous" href="dbconfig.html" title="Chapter 6. Database Configuration" />
<link rel="next" href="btree.html" title="BTree Configuration" />
</head>
<body>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Selecting the Cache Size</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="dbconfig.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 6. Database Configuration</th>
- <td width="20%" align="right"> <a accesskey="n" href="btree.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="dbconfig.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 6. Database Configuration</th>
+ <td width="20%" align="right"> <a accesskey="n" href="btree.html">Next</a></td>
</tr>
</table>
<hr />
@@ -56,14 +56,14 @@
available memory and performance considerations.
</p>
<p>
- Selecting a cache size is something of an art, but fortunately it is
- selected at database (or environment) open time, so it can be easily
- tuned to your application's data requirements as they change over time.
- The best way to determine how large your cache needs to be is to put
- your application into a production environment and watch to see how much
- disk I/O is occurring. If your application is going to disk quite a lot
- to retrieve database records, then you should increase the size of your
- cache (provided that you have enough memory to do so).
+ Selecting a cache size is something of an art, but fortunately you
+ can change it any time, so it can be easily tuned to your
+ application's changing data requirements. The best way to
+ determine how large your cache needs to be is to put your
+ application into a production environment and watch to see how much
+ disk I/O is occurring. If your application is going to disk quite a
+ lot to retrieve database records, then you should increase the size
+ of your cache (provided that you have enough memory to do so).
</p>
<p>
You can use the <tt class="literal">db_stat</tt> command line utility with the
@@ -79,18 +79,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="dbconfig.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="dbconfig.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="dbconfig.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="btree.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="btree.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Chapter 6. Database Configuration </td>
+ <td width="40%" align="left" valign="top">Chapter 6. Database Configuration </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> BTree Configuration</td>
+ <td width="40%" align="right" valign="top"> BTree Configuration</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/CXX/concepts.html b/db/docs/gsg/CXX/concepts.html
index 161e6a25b..53cababbe 100644
--- a/db/docs/gsg/CXX/concepts.html
+++ b/db/docs/gsg/CXX/concepts.html
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Berkeley DB Concepts</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="introduction.html" title="Chapter 1. Introduction to Berkeley DB " />
- <link rel="previous" href="introduction.html" title="Chapter 1. Introduction to Berkeley DB " />
+ <link rel="up" href="introduction.html" title="Chapter 1. Introduction to Berkeley DB " />
+ <link rel="previous" href="introduction.html" title="Chapter 1. Introduction to Berkeley DB " />
<link rel="next" href="accessmethods.html" title="Access Methods" />
</head>
<body>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Berkeley DB Concepts</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="introduction.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 1. Introduction to Berkeley DB </th>
- <td width="20%" align="right"> <a accesskey="n" href="accessmethods.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="introduction.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 1. Introduction to Berkeley DB </th>
+ <td width="20%" align="right"> <a accesskey="n" href="accessmethods.html">Next</a></td>
</tr>
</table>
<hr />
@@ -149,18 +149,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="introduction.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="introduction.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="introduction.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="accessmethods.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="accessmethods.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Chapter 1. Introduction to Berkeley DB  </td>
+ <td width="40%" align="left" valign="top">Chapter 1. Introduction to Berkeley DB  </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Access Methods</td>
+ <td width="40%" align="right" valign="top"> Access Methods</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/CXX/coreExceptions.html b/db/docs/gsg/CXX/coreExceptions.html
index eec772f92..979a56cf6 100644
--- a/db/docs/gsg/CXX/coreExceptions.html
+++ b/db/docs/gsg/CXX/coreExceptions.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Exception Handling</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="introduction.html" title="Chapter 1. Introduction to Berkeley DB " />
+ <link rel="up" href="introduction.html" title="Chapter 1. Introduction to Berkeley DB " />
<link rel="previous" href="environments.html" title="Environments" />
<link rel="next" href="returns.html" title="Error Returns" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Exception Handling</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="environments.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 1. Introduction to Berkeley DB </th>
- <td width="20%" align="right"> <a accesskey="n" href="returns.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="environments.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 1. Introduction to Berkeley DB </th>
+ <td width="20%" align="right"> <a accesskey="n" href="returns.html">Next</a></td>
</tr>
</table>
<hr />
@@ -97,18 +97,18 @@ catch(std::exception &amp;e)
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="environments.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="environments.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="introduction.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="returns.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="returns.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Environments </td>
+ <td width="40%" align="left" valign="top">Environments </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Error Returns</td>
+ <td width="40%" align="right" valign="top"> Error Returns</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/CXX/coredbclose.html b/db/docs/gsg/CXX/coredbclose.html
index 2f88f3123..1f4f134f5 100644
--- a/db/docs/gsg/CXX/coredbclose.html
+++ b/db/docs/gsg/CXX/coredbclose.html
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Closing Databases</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="DB.html" title="Chapter 2. Databases" />
- <link rel="previous" href="DB.html" title="Chapter 2. Databases" />
+ <link rel="up" href="DB.html" title="Chapter 2. Databases" />
+ <link rel="previous" href="DB.html" title="Chapter 2. Databases" />
<link rel="next" href="DBOpenFlags.html" title="Database Open Flags" />
</head>
<body>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Closing Databases</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="DB.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 2. Databases</th>
- <td width="20%" align="right"> <a accesskey="n" href="DBOpenFlags.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="DB.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 2. Databases</th>
+ <td width="20%" align="right"> <a accesskey="n" href="DBOpenFlags.html">Next</a></td>
</tr>
</table>
<hr />
@@ -90,18 +90,18 @@ try {
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="DB.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="DB.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="DB.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="DBOpenFlags.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="DBOpenFlags.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Chapter 2. Databases </td>
+ <td width="40%" align="left" valign="top">Chapter 2. Databases </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Database Open Flags</td>
+ <td width="40%" align="right" valign="top"> Database Open Flags</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/CXX/coreindexusage.html b/db/docs/gsg/CXX/coreindexusage.html
index 7fdffdd47..3547a57e3 100644
--- a/db/docs/gsg/CXX/coreindexusage.html
+++ b/db/docs/gsg/CXX/coreindexusage.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Secondary Database Example</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="indexes.html" title="Chapter 5. Secondary Databases" />
+ <link rel="up" href="indexes.html" title="Chapter 5. Secondary Databases" />
<link rel="previous" href="joins.html" title="Database Joins" />
- <link rel="next" href="dbconfig.html" title="Chapter 6. Database Configuration" />
+ <link rel="next" href="dbconfig.html" title="Chapter 6. Database Configuration" />
</head>
<body>
<div class="navheader">
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Secondary Database Example</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="joins.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 5. Secondary Databases</th>
- <td width="20%" align="right"> <a accesskey="n" href="dbconfig.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="joins.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 5. Secondary Databases</th>
+ <td width="20%" align="right"> <a accesskey="n" href="dbconfig.html">Next</a></td>
</tr>
</table>
<hr />
@@ -149,7 +149,7 @@ get_item_name(Db *dbp, const Dbt *pkey, const Dbt *pdata, Dbt *skey)
// programming error in how the buffer is marshalled/unmarshalled.
// This should never happen!
if ((u_int32_t)id.getBufferSize() != pdata-&gt;get_size()) {
- dbp-&gt;errx(&quot;get_item_name: buffer sizes do not match!&quot;);
+ dbp-&gt;errx("get_item_name: buffer sizes do not match!");
// When we return non-zero, the index record is not
// added/updated.
return (-1);
@@ -213,7 +213,7 @@ private:
</p>
<a id="cxx_index12"></a>
<pre class="programlisting">// File: MyDb.cpp
-#include &quot;MyDb.hpp&quot;
+#include "MyDb.hpp"
// Class constructor. Requires a path to the location
// where the database is located, and a database name
@@ -241,12 +241,12 @@ MyDb::MyDb(std::string &amp;path, std::string &amp;dbName,
// need to catch them both.
catch(DbException &amp;e)
{
- std::cerr &lt;&lt; &quot;Error opening database: &quot; &lt;&lt; dbFileName_ &lt;&lt; &quot;\n&quot;;
+ std::cerr &lt;&lt; "Error opening database: " &lt;&lt; dbFileName_ &lt;&lt; "\n";
std::cerr &lt;&lt; e.what() &lt;&lt; std::endl;
}
catch(std::exception &amp;e)
{
- std::cerr &lt;&lt; &quot;Error opening database: &quot; &lt;&lt; dbFileName_ &lt;&lt; &quot;\n&quot;;
+ std::cerr &lt;&lt; "Error opening database: " &lt;&lt; dbFileName_ &lt;&lt; "\n";
std::cerr &lt;&lt; e.what() &lt;&lt; std::endl;
}
} </pre>
@@ -269,13 +269,13 @@ int
main(int argc, char *argv[])
{
// Initialize the path to the database files
- std::string basename(&quot;./&quot;);
- std::string databaseHome(&quot;./&quot;);
+ std::string basename("./");
+ std::string databaseHome("./");
// Database names
- std::string vDbName(&quot;vendordb.db&quot;);
- std::string iDbName(&quot;inventorydb.db&quot;);
- <b class="userinput"><tt>std::string itemSDbName(&quot;itemname.sdb&quot;);</tt></b>
+ std::string vDbName("vendordb.db");
+ std::string iDbName("inventorydb.db");
+ <b class="userinput"><tt>std::string itemSDbName("itemname.sdb");</tt></b>
// Parse the command line arguments here and determine
// the location of the flat text files containing the
@@ -283,8 +283,8 @@ main(int argc, char *argv[])
// Identify the full name for our input files, which should
// also include some path information.
- std::string inventoryFile = basename + &quot;inventory.txt&quot;;
- std::string vendorFile = basename + &quot;vendors.txt&quot;;
+ std::string inventoryFile = basename + "inventory.txt";
+ std::string vendorFile = basename + "vendors.txt";
try
{
@@ -305,11 +305,11 @@ main(int argc, char *argv[])
// Load the inventory database
loadInventoryDB(inventoryDB, inventoryFile);
} catch(DbException &amp;e) {
- std::cerr &lt;&lt; &quot;Error loading databases. &quot; &lt;&lt; std::endl;
+ std::cerr &lt;&lt; "Error loading databases. " &lt;&lt; std::endl;
std::cerr &lt;&lt; e.what() &lt;&lt; std::endl;
return(e.get_errno());
} catch(std::exception &amp;e) {
- std::cerr &lt;&lt; &quot;Error loading databases. &quot; &lt;&lt; std::endl;
+ std::cerr &lt;&lt; "Error loading databases. " &lt;&lt; std::endl;
std::cerr &lt;&lt; e.what() &lt;&lt; std::endl;
return(-1);
}
@@ -372,8 +372,8 @@ main(int argc, char *argv[])
#include &lt;fstream&gt;
#include &lt;cstdlib&gt;
-#include &quot;MyDb.hpp&quot;
-#include &quot;gettingStartedCommon.hpp&quot;
+#include "MyDb.hpp"
+#include "gettingStartedCommon.hpp"
// Forward declarations
int show_all_records(MyDb &amp;inventoryDB, MyDb &amp;vendorDB);
@@ -397,13 +397,13 @@ int
main (int argc, char *argv[])
{
// Initialize the path to the database files
- std::string databaseHome(&quot;./&quot;);
+ std::string databaseHome("./");
<b class="userinput"><tt>std::string itemName;</tt></b>
// Database names
- std::string vDbName(&quot;vendordb.db&quot;);
- std::string iDbName(&quot;inventorydb.db&quot;);
- <b class="userinput"><tt>std::string itemSDbName(&quot;itemname.sdb&quot;);</tt></b>
+ std::string vDbName("vendordb.db");
+ std::string iDbName("inventorydb.db");
+ <b class="userinput"><tt>std::string itemSDbName("itemname.sdb");</tt></b>
// Parse the command line arguments
// Omitted for brevity
@@ -428,11 +428,11 @@ main (int argc, char *argv[])
show_item(itemnameSDB, vendorDB, itemName);
}</tt></b>
} catch(DbException &amp;e) {
- std::cerr &lt;&lt; &quot;Error reading databases. &quot; &lt;&lt; std::endl;
+ std::cerr &lt;&lt; "Error reading databases. " &lt;&lt; std::endl;
std::cerr &lt;&lt; e.what() &lt;&lt; std::endl;
return(e.get_errno());
} catch(std::exception &amp;e) {
- std::cerr &lt;&lt; &quot;Error reading databases. &quot; &lt;&lt; std::endl;
+ std::cerr &lt;&lt; "Error reading databases. " &lt;&lt; std::endl;
std::cerr &lt;&lt; e.what() &lt;&lt; std::endl;
return(-1);
}
@@ -477,7 +477,7 @@ show_item(MyDb &amp;itemnameSDB, MyDb &amp;vendorDB, std::string &amp;itemName)
// Get the search key. This is the name on the inventory
// record that we want to examine.
- std::cout &lt;&lt; &quot;Looking for &quot; &lt;&lt; itemName &lt;&lt; std::endl;
+ std::cout &lt;&lt; "Looking for " &lt;&lt; itemName &lt;&lt; std::endl;
Dbt key((void *)itemName.c_str(), itemName.length() + 1);
Dbt data;
@@ -493,15 +493,15 @@ show_item(MyDb &amp;itemnameSDB, MyDb &amp;vendorDB, std::string &amp;itemName)
} while(cursorp-&gt;get(&amp;key, &amp;data, DB_NEXT_DUP) == 0);
} else {
- std::cerr &lt;&lt; &quot;No records found for '&quot; &lt;&lt; itemName
- &lt;&lt; &quot;'&quot; &lt;&lt; std::endl;
+ std::cerr &lt;&lt; "No records found for '" &lt;&lt; itemName
+ &lt;&lt; "'" &lt;&lt; std::endl;
}
} catch(DbException &amp;e) {
- itemnameSDB.getDb().err(e.get_errno(), &quot;Error in show_item&quot;);
+ itemnameSDB.getDb().err(e.get_errno(), "Error in show_item");
cursorp-&gt;close();
throw e;
} catch(std::exception &amp;e) {
- itemnameSDB.getDb().errx(&quot;Error in show_item: %s&quot;, e.what());
+ itemnameSDB.getDb().errx("Error in show_item: %s", e.what());
cursorp-&gt;close();
throw e;
}
@@ -517,25 +517,25 @@ show_item(MyDb &amp;itemnameSDB, MyDb &amp;vendorDB, std::string &amp;itemName)
can now search for and show all inventory items that match a particular
name. For example:
</p>
- <pre class="programlisting"> example_inventory_read -i &quot;Zulu Nut&quot;</pre>
+ <pre class="programlisting"> example_inventory_read -i "Zulu Nut"</pre>
</div>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="joins.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="joins.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="indexes.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="dbconfig.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="dbconfig.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Database Joins </td>
+ <td width="40%" align="left" valign="top">Database Joins </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Chapter 6. Database Configuration</td>
+ <td width="40%" align="right" valign="top"> Chapter 6. Database Configuration</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/CXX/databaseLimits.html b/db/docs/gsg/CXX/databaseLimits.html
index 15c23a81c..abf321bdc 100644
--- a/db/docs/gsg/CXX/databaseLimits.html
+++ b/db/docs/gsg/CXX/databaseLimits.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Database Limits and Portability</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="introduction.html" title="Chapter 1. Introduction to Berkeley DB " />
+ <link rel="up" href="introduction.html" title="Chapter 1. Introduction to Berkeley DB " />
<link rel="previous" href="accessmethods.html" title="Access Methods" />
<link rel="next" href="environments.html" title="Environments" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Database Limits and Portability</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="accessmethods.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 1. Introduction to Berkeley DB </th>
- <td width="20%" align="right"> <a accesskey="n" href="environments.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="accessmethods.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 1. Introduction to Berkeley DB </th>
+ <td width="20%" align="right"> <a accesskey="n" href="environments.html">Next</a></td>
</tr>
</table>
<hr />
@@ -50,7 +50,7 @@
</p>
<p>
Also, DB's databases and data structures are designed for concurrent
- access &#8212; they are thread-safe, and they share well across multiple
+ access — they are thread-safe, and they share well across multiple
processes. That said, in order to allow multiple processes to share
databases and the cache, DB makes use of mechanisms that do not work
well on network-shared drives (NFS or Windows networks shares, for
@@ -62,18 +62,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="accessmethods.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="accessmethods.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="introduction.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="environments.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="environments.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Access Methods </td>
+ <td width="40%" align="left" valign="top">Access Methods </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Environments</td>
+ <td width="40%" align="right" valign="top"> Environments</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/CXX/dbErrorReporting.html b/db/docs/gsg/CXX/dbErrorReporting.html
index b1d0a11ef..a114a3a6d 100644
--- a/db/docs/gsg/CXX/dbErrorReporting.html
+++ b/db/docs/gsg/CXX/dbErrorReporting.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Error Reporting Functions</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="DB.html" title="Chapter 2. Databases" />
+ <link rel="up" href="DB.html" title="Chapter 2. Databases" />
<link rel="previous" href="CoreDBAdmin.html" title="Administrative Methods" />
<link rel="next" href="CoreEnvUsage.html" title="Managing Databases in Environments" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Error Reporting Functions</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="CoreDBAdmin.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 2. Databases</th>
- <td width="20%" align="right"> <a accesskey="n" href="CoreEnvUsage.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="CoreDBAdmin.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 2. Databases</th>
+ <td width="20%" align="right"> <a accesskey="n" href="CoreEnvUsage.html">Next</a></td>
</tr>
</table>
<hr />
@@ -157,13 +157,13 @@ my_error_handler(const char *error_prefix, char *msg)
...
Db db(NULL, 0);
-std::string dbFileName(&quot;my_db.db&quot;);
+std::string dbFileName("my_db.db");
try
{
// Set up error handling for this database
db.set_errcall(my_error_handler);
- db.set_errpfx(&quot;my_example_program&quot;); </pre>
+ db.set_errpfx("my_example_program"); </pre>
<p>
And to issue an error message:
</p>
@@ -174,14 +174,14 @@ try
// Must catch both DbException and std::exception
catch(DbException &amp;e)
{
- db.err(e.get_errno(), &quot;Database open failed %s&quot;,
+ db.err(e.get_errno(), "Database open failed %s",
dbFileName.c_str());
throw e;
}
catch(std::exception &amp;e)
{
// No DB error number available, so use errx
- db.errx(&quot;Error opening database: %s&quot;, e.what());
+ db.errx("Error opening database: %s", e.what());
throw e;
} </pre>
<span>
@@ -192,18 +192,18 @@ try
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="CoreDBAdmin.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="CoreDBAdmin.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="DB.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="CoreEnvUsage.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="CoreEnvUsage.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Administrative Methods </td>
+ <td width="40%" align="left" valign="top">Administrative Methods </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Managing Databases in Environments</td>
+ <td width="40%" align="right" valign="top"> Managing Databases in Environments</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/CXX/dbconfig.html b/db/docs/gsg/CXX/dbconfig.html
index 3de67dc92..e86d5aaf2 100644
--- a/db/docs/gsg/CXX/dbconfig.html
+++ b/db/docs/gsg/CXX/dbconfig.html
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <title>Chapter 6. Database Configuration</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Chapter 6. Database Configuration</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
@@ -15,12 +15,12 @@
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
- <th colspan="3" align="center">Chapter 6. Database Configuration</th>
+ <th colspan="3" align="center">Chapter 6. Database Configuration</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="coreindexusage.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="cachesize.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="coreindexusage.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="cachesize.html">Next</a></td>
</tr>
</table>
<hr />
@@ -29,7 +29,7 @@
<div class="titlepage">
<div>
<div>
- <h2 class="title"><a id="dbconfig"></a>Chapter 6. Database Configuration</h2>
+ <h2 class="title"><a id="dbconfig"></a>Chapter 6. Database Configuration</h2>
</div>
</div>
<div></div>
@@ -381,18 +381,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="coreindexusage.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="coreindexusage.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="cachesize.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="cachesize.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Secondary Database Example </td>
+ <td width="40%" align="left" valign="top">Secondary Database Example </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Selecting the Cache Size</td>
+ <td width="40%" align="right" valign="top"> Selecting the Cache Size</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/CXX/environments.html b/db/docs/gsg/CXX/environments.html
index 95107b29c..b75813c6b 100644
--- a/db/docs/gsg/CXX/environments.html
+++ b/db/docs/gsg/CXX/environments.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Environments</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="introduction.html" title="Chapter 1. Introduction to Berkeley DB " />
+ <link rel="up" href="introduction.html" title="Chapter 1. Introduction to Berkeley DB " />
<link rel="previous" href="databaseLimits.html" title="Database Limits and Portability" />
<link rel="next" href="coreExceptions.html" title="Exception Handling" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Environments</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="databaseLimits.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 1. Introduction to Berkeley DB </th>
- <td width="20%" align="right"> <a accesskey="n" href="coreExceptions.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="databaseLimits.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 1. Introduction to Berkeley DB </th>
+ <td width="20%" align="right"> <a accesskey="n" href="coreExceptions.html">Next</a></td>
</tr>
</table>
<hr />
@@ -116,7 +116,7 @@
obtain a high-degree of recoverability in the face of an
application or system crash. Once enabled, the logging subsystem
allows the application to perform two kinds of recovery
- (&quot;normal&quot; and &quot;catastrophic&quot;) through the use of the information
+ ("normal" and "catastrophic") through the use of the information
contained in the log files.
</p>
</li>
@@ -132,18 +132,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="databaseLimits.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="databaseLimits.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="introduction.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="coreExceptions.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="coreExceptions.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Database Limits and Portability </td>
+ <td width="40%" align="left" valign="top">Database Limits and Portability </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Exception Handling</td>
+ <td width="40%" align="right" valign="top"> Exception Handling</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/CXX/gettingit.html b/db/docs/gsg/CXX/gettingit.html
index c84496093..a04c82710 100644
--- a/db/docs/gsg/CXX/gettingit.html
+++ b/db/docs/gsg/CXX/gettingit.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Getting and Using DB </title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="introduction.html" title="Chapter 1. Introduction to Berkeley DB " />
+ <link rel="up" href="introduction.html" title="Chapter 1. Introduction to Berkeley DB " />
<link rel="previous" href="returns.html" title="Error Returns" />
- <link rel="next" href="DB.html" title="Chapter 2. Databases" />
+ <link rel="next" href="DB.html" title="Chapter 2. Databases" />
</head>
<body>
<div class="navheader">
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Getting and Using DB </th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="returns.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 1. Introduction to Berkeley DB </th>
- <td width="20%" align="right"> <a accesskey="n" href="DB.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="returns.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 1. Introduction to Berkeley DB </th>
+ <td width="20%" align="right"> <a accesskey="n" href="DB.html">Next</a></td>
</tr>
</table>
<hr />
@@ -58,18 +58,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="returns.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="returns.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="introduction.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="DB.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="DB.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Error Returns </td>
+ <td width="40%" align="left" valign="top">Error Returns </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Chapter 2. Databases</td>
+ <td width="40%" align="right" valign="top"> Chapter 2. Databases</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/CXX/index.html b/db/docs/gsg/CXX/index.html
index 68eb40022..d1800c1cd 100644
--- a/db/docs/gsg/CXX/index.html
+++ b/db/docs/gsg/CXX/index.html
@@ -1,8 +1,8 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Getting Started with Berkeley DB</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
@@ -16,9 +16,9 @@
<th colspan="3" align="center">Getting Started with Berkeley DB</th>
</tr>
<tr>
- <td width="20%" align="left"> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="preface.html">Next</a></td>
+ <td width="20%" align="left"> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="preface.html">Next</a></td>
</tr>
</table>
<hr />
@@ -27,7 +27,7 @@
<div class="titlepage">
<div>
<div>
- <h1 class="title"><a id="id650925"></a>Getting Started with Berkeley DB</h1>
+ <h1 class="title"><a id="id613741"></a>Getting Started with Berkeley DB</h1>
</div>
<div>
<div class="legalnotice">
@@ -37,7 +37,7 @@
<p>
This documentation is distributed under an open source license.
You may review the terms of this license at:
- <a href="http://www.oracle.com/technology/software/products/berkeley-db/htdocs/oslicensing.html" target="_top">http://www.oracle.com/technology/software/products/berkeley-db/htdocs/oslicensing.html</a>
+ <a href="http://www.oracle.com/technology/software/products/berkeley-db/htdocs/oslicense.html" target="_top">http://www.oracle.com/technology/software/products/berkeley-db/htdocs/oslicense.html</a>
</p>
@@ -47,9 +47,9 @@
and
Sleepycat are trademarks or registered trademarks of
- Oracle Corporation. All rights to these marks are reserved.
+ Oracle. All rights to these marks are reserved.
No third-party use is permitted without the
- express prior written consent of Oracle Corporation.
+ express prior written consent of Oracle.
</p>
<p>
To obtain a copy of this document's original source code, please
@@ -61,7 +61,7 @@
</div>
</div>
<div>
- <p class="pubdate">9/20/2006</p>
+ <p class="pubdate">6/30/2007</p>
</div>
</div>
<div></div>
@@ -328,6 +328,15 @@
</a>
</span>
</dt>
+ <dd>
+ <dl>
+ <dt>
+ <span class="sect2">
+ <a href="keyCreator.html#multikeys">Working with Multiple Keys</a>
+ </span>
+ </dt>
+ </dl>
+ </dd>
<dt>
<span class="sect1">
<a href="readSecondary.html">Reading Secondary Databases</a>
@@ -462,14 +471,14 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"> </td>
- <td width="20%" align="center"> </td>
- <td width="40%" align="right"> <a accesskey="n" href="preface.html">Next</a></td>
+ <td width="40%" align="left"> </td>
+ <td width="20%" align="center"> </td>
+ <td width="40%" align="right"> <a accesskey="n" href="preface.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top"> </td>
- <td width="20%" align="center"> </td>
- <td width="40%" align="right" valign="top"> Preface</td>
+ <td width="40%" align="left" valign="top"> </td>
+ <td width="20%" align="center"> </td>
+ <td width="40%" align="right" valign="top"> Preface</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/CXX/indexes.html b/db/docs/gsg/CXX/indexes.html
index 8e7c0a1e6..9ba125ac5 100644
--- a/db/docs/gsg/CXX/indexes.html
+++ b/db/docs/gsg/CXX/indexes.html
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <title>Chapter 5. Secondary Databases</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Chapter 5. Secondary Databases</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
@@ -15,12 +15,12 @@
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
- <th colspan="3" align="center">Chapter 5. Secondary Databases</th>
+ <th colspan="3" align="center">Chapter 5. Secondary Databases</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="CoreCursorUsage.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="keyCreator.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="CoreCursorUsage.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="keyCreator.html">Next</a></td>
</tr>
</table>
<hr />
@@ -29,7 +29,7 @@
<div class="titlepage">
<div>
<div>
- <h2 class="title"><a id="indexes"></a>Chapter 5. Secondary Databases</h2>
+ <h2 class="title"><a id="indexes"></a>Chapter 5. Secondary Databases</h2>
</div>
</div>
<div></div>
@@ -52,6 +52,15 @@
</a>
</span>
</dt>
+ <dd>
+ <dl>
+ <dt>
+ <span class="sect2">
+ <a href="keyCreator.html#multikeys">Working with Multiple Keys</a>
+ </span>
+ </dt>
+ </dl>
+ </dd>
<dt>
<span class="sect1">
<a href="readSecondary.html">Reading Secondary Databases</a>
@@ -118,7 +127,7 @@
people such as names, addresses, phone numbers, and so forth.
While your application may frequently want to query a person by user
ID (that is, by the information stored in the key), it may also on occasion
- want to location people by, say, their name.
+ want to locate people by, say, their name.
</p>
<p>
Rather than iterate through all of the records in your database, examining
@@ -259,7 +268,7 @@ Db my_index(NULL, 0); // Secondary
// Open the primary
my_database.open(NULL, // Transaction pointer
- &quot;my_db.db&quot;, // On-disk file that holds the database.
+ "my_db.db", // On-disk file that holds the database.
NULL, // Optional logical database name
DB_BTREE, // Database access method
DB_CREATE, // Open flags
@@ -271,7 +280,7 @@ my_index.set_flags(DB_DUPSORT);
// Open the secondary
my_index.open(NULL, // Transaction pointer
- &quot;my_secondary.db&quot;, // On-disk file that holds the database.
+ "my_secondary.db", // On-disk file that holds the database.
NULL, // Optional logical database name
DB_BTREE, // Database access method
DB_CREATE, // Open flags.
@@ -299,18 +308,18 @@ my_database.close(0);</pre>
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="CoreCursorUsage.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="CoreCursorUsage.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="keyCreator.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="keyCreator.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Cursor Example </td>
+ <td width="40%" align="left" valign="top">Cursor Example </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Implementing Key
+ <td width="40%" align="right" valign="top"> Implementing Key
Extractors
</td>
diff --git a/db/docs/gsg/CXX/introduction.html b/db/docs/gsg/CXX/introduction.html
index 2a6941eaf..6676202b3 100644
--- a/db/docs/gsg/CXX/introduction.html
+++ b/db/docs/gsg/CXX/introduction.html
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <title>Chapter 1. Introduction to Berkeley DB </title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Chapter 1. Introduction to Berkeley DB </title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
@@ -15,12 +15,12 @@
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
- <th colspan="3" align="center">Chapter 1. Introduction to Berkeley DB </th>
+ <th colspan="3" align="center">Chapter 1. Introduction to Berkeley DB </th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="preface.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="concepts.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="preface.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="concepts.html">Next</a></td>
</tr>
</table>
<hr />
@@ -29,7 +29,7 @@
<div class="titlepage">
<div>
<div>
- <h2 class="title"><a id="introduction"></a>Chapter 1. Introduction to Berkeley DB </h2>
+ <h2 class="title"><a id="introduction"></a>Chapter 1. Introduction to Berkeley DB </h2>
</div>
</div>
<div></div>
@@ -215,18 +215,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="preface.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="preface.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="concepts.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="concepts.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Preface </td>
+ <td width="40%" align="left" valign="top">Preface </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Berkeley DB Concepts</td>
+ <td width="40%" align="right" valign="top"> Berkeley DB Concepts</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/CXX/joins.html b/db/docs/gsg/CXX/joins.html
index 8a96e7b40..b822402b2 100644
--- a/db/docs/gsg/CXX/joins.html
+++ b/db/docs/gsg/CXX/joins.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Database Joins</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="indexes.html" title="Chapter 5. Secondary Databases" />
+ <link rel="up" href="indexes.html" title="Chapter 5. Secondary Databases" />
<link rel="previous" href="secondaryCursor.html" title="&#10; &#10; Using Cursors with Secondary Databases&#10; " />
<link rel="next" href="coreindexusage.html" title="Secondary Database Example" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Database Joins</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="secondaryCursor.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 5. Secondary Databases</th>
- <td width="20%" align="right"> <a accesskey="n" href="coreindexusage.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="secondaryCursor.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 5. Secondary Databases</th>
+ <td width="20%" align="right"> <a accesskey="n" href="coreindexusage.html">Next</a></td>
</tr>
</table>
<hr />
@@ -98,7 +98,6 @@
using a
<span>join cursor.</span>
-
</p>
<div class="sect2" lang="en" xml:lang="en">
<div class="titlepage">
@@ -177,9 +176,6 @@
</div>
<p>
For example:
- <span>
-
- </span>
</p>
<a id="cxx_index9"></a>
<pre class="programlisting">#include &lt;db_cxx.h&gt;
@@ -207,7 +203,7 @@ Db automotiveTypeDB(NULL, 0);
// Position the cursors
Dbc *color_curs;
automotiveColorDB.cursor(NULL, &amp;color_curs, 0);
-char *the_color = &quot;red&quot;;
+char *the_color = "red";
Dbt key(the_color, strlen(the_color) + 1);
Dbt data;
if ((ret = color_curs-&gt;get(&amp;key, &amp;data, DB_SET)) != 0) {
@@ -216,7 +212,7 @@ if ((ret = color_curs-&gt;get(&amp;key, &amp;data, DB_SET)) != 0) {
Dbc *make_curs;
automotiveMakeDB.cursor(NULL, &amp;make_curs, 0);
-char *the_make = &quot;Toyota&quot;;
+char *the_make = "Toyota";
key.set_data(the_make);
key.set_size(strlen(the_make) + 1);
if ((ret = make_curs-&gt;get(&amp;key, &amp;data, DB_SET)) != 0) {
@@ -225,7 +221,7 @@ if ((ret = make_curs-&gt;get(&amp;key, &amp;data, DB_SET)) != 0) {
Dbc *type_curs;
automotiveTypeDB.cursor(NULL, &amp;type_curs, 0);
-char *the_type = &quot;minivan&quot;;
+char *the_type = "minivan";
key.set_data(the_type);
key.set_size(strlen(the_type) + 1);
if ((ret = type_curs-&gt;get(&amp;key, &amp;data, DB_SET)) != 0) {
@@ -262,21 +258,21 @@ if (ret == DB_NOTFOUND) {
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="secondaryCursor.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="secondaryCursor.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="indexes.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="coreindexusage.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="coreindexusage.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">
Using Cursors with Secondary Databases
-  </td>
+  </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Secondary Database Example</td>
+ <td width="40%" align="right" valign="top"> Secondary Database Example</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/CXX/keyCreator.html b/db/docs/gsg/CXX/keyCreator.html
index 604a7befc..e1e6462f3 100644
--- a/db/docs/gsg/CXX/keyCreator.html
+++ b/db/docs/gsg/CXX/keyCreator.html
@@ -1,8 +1,8 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Implementing Key
Extractors
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="indexes.html" title="Chapter 5. Secondary Databases" />
- <link rel="previous" href="indexes.html" title="Chapter 5. Secondary Databases" />
+ <link rel="up" href="indexes.html" title="Chapter 5. Secondary Databases" />
+ <link rel="previous" href="indexes.html" title="Chapter 5. Secondary Databases" />
<link rel="next" href="readSecondary.html" title="Reading Secondary Databases" />
</head>
<body>
@@ -24,9 +24,9 @@
</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="indexes.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 5. Secondary Databases</th>
- <td width="20%" align="right"> <a accesskey="n" href="readSecondary.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="indexes.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 5. Secondary Databases</th>
+ <td width="20%" align="right"> <a accesskey="n" href="readSecondary.html">Next</a></td>
</tr>
</table>
<hr />
@@ -123,23 +123,124 @@ get_sales_rep(Db *sdbp, // secondary db handle
&amp;sdb, // Secondary database
get_sales_rep, // Callback used for key creation.
0); // Flags</pre>
+ <div class="sect2" lang="en" xml:lang="en">
+ <div class="titlepage">
+ <div>
+ <div>
+ <h3 class="title"><a id="multikeys"></a>Working with Multiple Keys</h3>
+ </div>
+ </div>
+ <div></div>
+ </div>
+ <p>
+ Until now we have only discussed indexes as if there is
+ a one-to-one relationship between the secondary key and
+ the primary database record. In fact, it is possible to
+ generate multiple keys for any given record, provided
+ that you take appropriate steps in your key creator
+ to do so.
+ </p>
+ <p>
+ For example, suppose you had a database that contained
+ information about books. Suppose further that you
+ sometimes want to look up books by author. Because
+ sometimes books have multiple authors, you may want to
+ return multiple secondary keys for every book that you
+ index.
+ </p>
+ <p>
+ To do this, you write a key extractor that returns a
+
+ <span>Dbt</span>
+ whose <tt class="literal">data</tt> member points to an array of
+
+ <span>Dbts.</span>
+ Each such member of this array contains a single secondary key.
+ In addition, the
+
+ <span>Dbt</span>
+ returned by your key extractor must have a size field
+ equal to the number of elements contained in the
+
+ <span>Dbt</span>
+ array. Also, the flag field for the
+
+ <span>Dbt</span>
+ returned by the callback must include
+ <tt class="literal">DB_DBT_MULTIPLE</tt>. For example:
+ </p>
+ <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
+ <h3 class="title">Note</h3>
+ <p>
+ It is important that the array of secondary
+ keys created by your callback not contain
+ repeats. That is, every element in the array
+ must be unique. If the array does not contain
+ a unique set, then the secondary can get out
+ of sync with the primary.
+ </p>
+ </div>
+ <pre class="programlisting">int
+my_callback(Db *dbp, const Dbt *pkey, const Dbt *pdata, Dbt *skey)
+{
+ Dbt *tmpdbt;
+ char *tmpdata1, tmpdata2;
+
+ // This example skips the step of extracting the data you
+ // want to use for building your secondary keys from the
+ // pkey or pdata Dbt.
+
+ // Assume for the purpose of this example that the data
+ // is temporarily stored in two variables,
+ // tmpdata1 and tmpdata2.
+
+ // Create an array of Dbts that is large enough for the
+ // number of keys that you want to return. In this case,
+ // we go with an array of size two.
+
+ tmpdbt = malloc(sizeof(Dbt) * 2);
+ memset(tmpdbt, 0, sizeof(Dbt) * 2);
+
+ // Now assign secondary keys to each element of the array.
+ tmpdbt[0].set_data(tmpdata1);
+ tmpdbt[0].set_size((u_int32_t)strlen(tmpdbt[0].data) + 1);
+ tmpdbt[1].set_data(tmpdata2);
+ tmpdbt[1].set_size((u_int32_t)strlen(tmpdbt[1].data) + 1);
+
+ // Now we set flags for the returned Dbt. DB_DBT_MULTIPLE is
+ // required in order for DB to know that the Dbt references an
+ // array. In addition, we set DB_DBT_APPMALLOC because we
+ // dynamically allocated memory for the Dbt's data field.
+ // DB_DBT_APPMALLOC causes DB to release that memory once it
+ // is done with the returned Dbt.
+ skey-&gt;set_flags(DB_DBT_MULTIPLE | DB_DBT_APPMALLOC);
+
+ // Point the results data field to the arrays of Dbts
+ skey-&gt;set_data(tmpdbt);
+
+ // Indicate the returned array is of size 2
+ skey-&gt;size = 2;
+
+ return (0);
+} </pre>
+ </div>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="indexes.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="indexes.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="indexes.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="readSecondary.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="readSecondary.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Chapter 5. Secondary Databases </td>
+ <td width="40%" align="left" valign="top">Chapter 5. Secondary Databases </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Reading Secondary Databases</td>
+ <td width="40%" align="right" valign="top"> Reading Secondary Databases</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/CXX/preface.html b/db/docs/gsg/CXX/preface.html
index 83219a76e..4cd7bab6f 100644
--- a/db/docs/gsg/CXX/preface.html
+++ b/db/docs/gsg/CXX/preface.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Preface</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
<link rel="up" href="index.html" title="Getting Started with Berkeley DB" />
<link rel="previous" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="next" href="introduction.html" title="Chapter 1. Introduction to Berkeley DB " />
+ <link rel="next" href="introduction.html" title="Chapter 1. Introduction to Berkeley DB " />
</head>
<body>
<div class="navheader">
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Preface</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="index.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="introduction.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="index.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="introduction.html">Next</a></td>
</tr>
</table>
<hr />
@@ -58,15 +58,21 @@
<p>
Welcome to Berkeley DB (DB). This document introduces
- <span>DB, version 4.5. </span>
+ <span>DB, version 4.6. </span>
+
It is intended
to provide a rapid introduction to the DB API set and related concepts. The goal of this document is
to provide you with an efficient mechanism
with which you can evaluate DB against your project's technical requirements. As such, this document is
- intended for <span>C++</span>
+ intended for
+ <span>C++</span>
developers and senior software architects who are
- looking for an in-process data management solution. No prior
- experience with Berkeley DB is expected or required.
+ looking for an
+ <span>
+ in-process data management solution.
+ </span>
+
+ No prior experience with Berkeley DB is expected or required.
</p>
<div class="sect1" lang="en" xml:lang="en">
<div class="titlepage">
@@ -88,12 +94,17 @@
- <span>&quot;<tt class="methodname">Db::open()</tt> is a
- <tt class="classname">Db</tt> class method.&quot;</span>
+ <span>"<tt class="methodname">Db::open()</tt> is a
+ <tt class="classname">Db</tt> class method."</span>
+
+
</p>
<p>
- Variable or non-literal text is presented in <span class="emphasis"><em>italics</em></span>. For example: &quot;Go to your
- <span class="emphasis"><em>DB_INSTALL</em></span> directory.&quot;
+ Variable or non-literal text is presented in <span class="emphasis"><em>italics</em></span>. For example: "Go to your
+
+ <span class="emphasis"><em>DB_INSTALL</em></span>
+
+ directory."
</p>
<p>
Program examples are displayed in a <tt class="classname">monospaced font</tt> on a shaded background.
@@ -152,6 +163,8 @@
Getting Started with Transaction Processing for C++
</a>
+
+
</p>
</li>
<li>
@@ -178,6 +191,8 @@
</a>
+
+
</p>
</li>
</ul>
@@ -189,18 +204,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="index.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="index.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="introduction.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="introduction.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Getting Started with Berkeley DB </td>
+ <td width="40%" align="left" valign="top">Getting Started with Berkeley DB </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Chapter 1. Introduction to Berkeley DB </td>
+ <td width="40%" align="right" valign="top"> Chapter 1. Introduction to Berkeley DB </td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/CXX/readSecondary.html b/db/docs/gsg/CXX/readSecondary.html
index 8c286935c..a628449f5 100644
--- a/db/docs/gsg/CXX/readSecondary.html
+++ b/db/docs/gsg/CXX/readSecondary.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Reading Secondary Databases</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="indexes.html" title="Chapter 5. Secondary Databases" />
+ <link rel="up" href="indexes.html" title="Chapter 5. Secondary Databases" />
<link rel="previous" href="keyCreator.html" title="Implementing Key &#10; &#10; Extractors&#10; " />
<link rel="next" href="secondaryDelete.html" title="Deleting Secondary Database Records" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Reading Secondary Databases</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="keyCreator.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 5. Secondary Databases</th>
- <td width="20%" align="right"> <a accesskey="n" href="secondaryDelete.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="keyCreator.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 5. Secondary Databases</th>
+ <td width="20%" align="right"> <a accesskey="n" href="secondaryDelete.html">Next</a></td>
</tr>
</table>
<hr />
@@ -67,7 +67,7 @@
// The string to search for
-char *search_name = &quot;John Doe&quot;;
+char *search_name = "John Doe";
// Instantiate our Dbt's
Dbt key(search_name, strlen(search_name) + 1);
@@ -111,21 +111,21 @@ my_secondary_database.pget(NULL, &amp;key, &amp;pkey, &amp;pdata, 0);</pre>
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="keyCreator.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="keyCreator.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="indexes.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="secondaryDelete.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="secondaryDelete.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">Implementing Key
Extractors
-  </td>
+  </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Deleting Secondary Database Records</td>
+ <td width="40%" align="right" valign="top"> Deleting Secondary Database Records</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/CXX/returns.html b/db/docs/gsg/CXX/returns.html
index 46433419f..ecec87fed 100644
--- a/db/docs/gsg/CXX/returns.html
+++ b/db/docs/gsg/CXX/returns.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Error Returns</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="introduction.html" title="Chapter 1. Introduction to Berkeley DB " />
+ <link rel="up" href="introduction.html" title="Chapter 1. Introduction to Berkeley DB " />
<link rel="previous" href="coreExceptions.html" title="Exception Handling" />
<link rel="next" href="gettingit.html" title="Getting and Using DB " />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Error Returns</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="coreExceptions.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 1. Introduction to Berkeley DB </th>
- <td width="20%" align="right"> <a accesskey="n" href="gettingit.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="coreExceptions.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 1. Introduction to Berkeley DB </th>
+ <td width="20%" align="right"> <a accesskey="n" href="gettingit.html">Next</a></td>
</tr>
</table>
<hr />
@@ -62,18 +62,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="coreExceptions.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="coreExceptions.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="introduction.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="gettingit.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="gettingit.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Exception Handling </td>
+ <td width="40%" align="left" valign="top">Exception Handling </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Getting and Using DB </td>
+ <td width="40%" align="right" valign="top"> Getting and Using DB </td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/CXX/secondaryCursor.html b/db/docs/gsg/CXX/secondaryCursor.html
index cc2e40522..d03ae85bb 100644
--- a/db/docs/gsg/CXX/secondaryCursor.html
+++ b/db/docs/gsg/CXX/secondaryCursor.html
@@ -1,8 +1,8 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>
Using Cursors with Secondary Databases
@@ -10,7 +10,7 @@
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="indexes.html" title="Chapter 5. Secondary Databases" />
+ <link rel="up" href="indexes.html" title="Chapter 5. Secondary Databases" />
<link rel="previous" href="secondaryDelete.html" title="Deleting Secondary Database Records" />
<link rel="next" href="joins.html" title="Database Joins" />
</head>
@@ -24,9 +24,9 @@
</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="secondaryDelete.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 5. Secondary Databases</th>
- <td width="20%" align="right"> <a accesskey="n" href="joins.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="secondaryDelete.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 5. Secondary Databases</th>
+ <td width="20%" align="right"> <a accesskey="n" href="joins.html">Next</a></td>
</tr>
</table>
<hr />
@@ -78,13 +78,13 @@
<p>
You cannot use <tt class="literal">DB_GET_BOTH</tt> and related flags with
- <tt class="methodname">DB::c_get()</tt>
+ <tt class="methodname">Db::get()</tt>
and a secondary database. Instead, you must use
- <span><tt class="methodname">DB::c_pget()</tt>.</span>
+ <span><tt class="methodname">Db::pget()</tt>.</span>
Also, in that case the primary and secondary key given on the call to
- <tt class="methodname">DB::c_pget()</tt>
+ <tt class="methodname">Db::pget()</tt>
must match the secondary key and associated primary record key in
order for that primary record to be returned as a result of the
call.
@@ -119,7 +119,7 @@ my_index.cursor(NULL, &amp;cursorp, 0);
// Name to delete
-char *search_name = &quot;John Doe&quot;;
+char *search_name = "John Doe";
// Instantiate Dbts as normal
Dbt key(search_name, strlen(search_name) + 1);
@@ -134,18 +134,18 @@ while (cursorp-&gt;get(&amp;key, &amp;data, DB_SET) == 0)
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="secondaryDelete.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="secondaryDelete.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="indexes.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="joins.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="joins.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Deleting Secondary Database Records </td>
+ <td width="40%" align="left" valign="top">Deleting Secondary Database Records </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Database Joins</td>
+ <td width="40%" align="right" valign="top"> Database Joins</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/CXX/secondaryDelete.html b/db/docs/gsg/CXX/secondaryDelete.html
index d9b54f1f7..3d4b11b29 100644
--- a/db/docs/gsg/CXX/secondaryDelete.html
+++ b/db/docs/gsg/CXX/secondaryDelete.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Deleting Secondary Database Records</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="indexes.html" title="Chapter 5. Secondary Databases" />
+ <link rel="up" href="indexes.html" title="Chapter 5. Secondary Databases" />
<link rel="previous" href="readSecondary.html" title="Reading Secondary Databases" />
<link rel="next" href="secondaryCursor.html" title="&#10; &#10; Using Cursors with Secondary Databases&#10; " />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Deleting Secondary Database Records</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="readSecondary.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 5. Secondary Databases</th>
- <td width="20%" align="right"> <a accesskey="n" href="secondaryCursor.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="readSecondary.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 5. Secondary Databases</th>
+ <td width="20%" align="right"> <a accesskey="n" href="secondaryCursor.html">Next</a></td>
</tr>
</table>
<hr />
@@ -92,7 +92,7 @@ Db my_index(NULL, 0); // Secondary
// Open the primary
my_database.open(NULL, // Transaction pointer
- &quot;my_db.db&quot;, // On-disk file that holds the database.
+ "my_db.db", // On-disk file that holds the database.
NULL, // Optional logical database name
DB_BTREE, // Database access method
DB_CREATE, // Open flags
@@ -104,7 +104,7 @@ my_index.set_flags(DB_DUPSORT);
// Open the secondary
my_index.open(NULL, // Transaction pointer
- &quot;my_secondary.db&quot;, // On-disk file that holds the database.
+ "my_secondary.db", // On-disk file that holds the database.
NULL, // Optional logical database name
DB_BTREE, // Database access method
DB_CREATE, // Open flags.
@@ -118,7 +118,7 @@ my_database.associate(NULL, // Txn id
0); // Flags
// Name to delete
-char *search_name = &quot;John Doe&quot;;
+char *search_name = "John Doe";
// Get a search key
Dbt key(search_name, strlen(search_name) + 1);
@@ -133,18 +133,18 @@ my_index.del(NULL, &amp;key, 0); </pre>
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="readSecondary.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="readSecondary.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="indexes.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="secondaryCursor.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="secondaryCursor.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Reading Secondary Databases </td>
+ <td width="40%" align="left" valign="top">Reading Secondary Databases </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> 
+ <td width="40%" align="right" valign="top"> 
Using Cursors with Secondary Databases
</td>
diff --git a/db/docs/gsg/CXX/usingDbt.html b/db/docs/gsg/CXX/usingDbt.html
index 8ac226a1d..4cbeb4b19 100644
--- a/db/docs/gsg/CXX/usingDbt.html
+++ b/db/docs/gsg/CXX/usingDbt.html
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Reading and Writing Database Records</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="DBEntry.html" title="Chapter 3. Database Records" />
- <link rel="previous" href="DBEntry.html" title="Chapter 3. Database Records" />
+ <link rel="up" href="DBEntry.html" title="Chapter 3. Database Records" />
+ <link rel="previous" href="DBEntry.html" title="Chapter 3. Database Records" />
<link rel="next" href="DbCXXUsage.html" title="Database Usage Example" />
</head>
<body>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Reading and Writing Database Records</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="DBEntry.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 3. Database Records</th>
- <td width="20%" align="right"> <a accesskey="n" href="DbCXXUsage.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="DBEntry.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 3. Database Records</th>
+ <td width="20%" align="right"> <a accesskey="n" href="DbCXXUsage.html">Next</a></td>
</tr>
</table>
<hr />
@@ -127,7 +127,7 @@
...
-char *description = &quot;Grocery bill.&quot;;
+char *description = "Grocery bill.";
float money = 122.45;
Db my_database(NULL, 0);
@@ -138,7 +138,7 @@ Dbt data(description, strlen(description) + 1);
int ret = my_database.put(NULL, &amp;key, &amp;data, DB_NOOVERWRITE);
if (ret == DB_KEYEXIST) {
- my_database.err(ret, &quot;Put failed because key %f already exists&quot;, money);
+ my_database.err(ret, "Put failed because key %f already exists", money);
}</pre>
</div>
<div class="sect2" lang="en" xml:lang="en">
@@ -192,7 +192,7 @@ if (ret == DB_KEYEXIST) {
...
float money;
-char *description[DESCRIPTION_SIZE + 1];
+char description[DESCRIPTION_SIZE + 1];
Db my_database(NULL, 0);
// Database open omitted for clarity
@@ -202,9 +202,9 @@ money = 122.45;
Dbt key, data;
key.set_data(&amp;money);
-key.set_ulen(sizeof(float));
+key.set_size(sizeof(float));
-data.set_data(&amp;description);
+data.set_data(description);
data.set_ulen(DESCRIPTION_SIZE + 1);
data.set_flags(DB_DBT_USERMEM);
@@ -355,18 +355,18 @@ my_database.del(NULL, &amp;key, 0);</pre>
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="DBEntry.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="DBEntry.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="DBEntry.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="DbCXXUsage.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="DbCXXUsage.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Chapter 3. Database Records </td>
+ <td width="40%" align="left" valign="top">Chapter 3. Database Records </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Database Usage Example</td>
+ <td width="40%" align="right" valign="top"> Database Usage Example</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/JAVA/BerkeleyDB-Core-JAVA-GSG.pdf b/db/docs/gsg/JAVA/BerkeleyDB-Core-JAVA-GSG.pdf
index af17d1e46..6cad2fe05 100644
--- a/db/docs/gsg/JAVA/BerkeleyDB-Core-JAVA-GSG.pdf
+++ b/db/docs/gsg/JAVA/BerkeleyDB-Core-JAVA-GSG.pdf
Binary files differ
diff --git a/db/docs/gsg/JAVA/CoreEnvUsage.html b/db/docs/gsg/JAVA/CoreEnvUsage.html
index abe675a6a..7a7dc17d1 100644
--- a/db/docs/gsg/JAVA/CoreEnvUsage.html
+++ b/db/docs/gsg/JAVA/CoreEnvUsage.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Managing Databases in Environments</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="DB.html" title="Chapter 2. Databases" />
+ <link rel="up" href="DB.html" title="Chapter 2. Databases" />
<link rel="previous" href="dbErrorReporting.html" title="Error Reporting Functions" />
<link rel="next" href="CoreJavaUsage.html" title="Database Example" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Managing Databases in Environments</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="dbErrorReporting.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 2. Databases</th>
- <td width="20%" align="right"> <a accesskey="n" href="CoreJavaUsage.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="dbErrorReporting.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 2. Databases</th>
+ <td width="20%" align="right"> <a accesskey="n" href="CoreJavaUsage.html">Next</a></td>
</tr>
</table>
<hr />
@@ -69,7 +69,7 @@ import java.io.FileNotFoundException;
...
Environment myEnv = null;
-File envHome = new File(&quot;/export1/testEnv&quot;);
+File envHome = new File("/export1/testEnv");
try {
EnvironmentConfig envConf = new EnvironmentConfig();
envConf.setAllowCreate(true); // If the environment does not
@@ -105,8 +105,8 @@ import java.io.FileNotFoundException;
Environment myEnv = null;
Database myDb = null;
-File envHome = new File(&quot;/export1/testEnv&quot;);
-String dbFileName = new String(&quot;mydb.db&quot;, &quot;UTF-8&quot;);
+File envHome = new File("/export1/testEnv");
+String dbFileName = new String("mydb.db", "UTF-8");
try {
EnvironmentConfig envConf = new EnvironmentConfig();
@@ -145,18 +145,18 @@ try {
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="dbErrorReporting.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="dbErrorReporting.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="DB.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="CoreJavaUsage.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="CoreJavaUsage.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Error Reporting Functions </td>
+ <td width="40%" align="left" valign="top">Error Reporting Functions </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Database Example</td>
+ <td width="40%" align="right" valign="top"> Database Example</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/JAVA/CoreJavaUsage.html b/db/docs/gsg/JAVA/CoreJavaUsage.html
index 36c50f694..adc1ed4fc 100644
--- a/db/docs/gsg/JAVA/CoreJavaUsage.html
+++ b/db/docs/gsg/JAVA/CoreJavaUsage.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Database Example</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="DB.html" title="Chapter 2. Databases" />
+ <link rel="up" href="DB.html" title="Chapter 2. Databases" />
<link rel="previous" href="CoreEnvUsage.html" title="Managing Databases in Environments" />
- <link rel="next" href="DBEntry.html" title="Chapter 3. Database Records" />
+ <link rel="next" href="DBEntry.html" title="Chapter 3. Database Records" />
</head>
<body>
<div class="navheader">
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Database Example</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="CoreEnvUsage.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 2. Databases</th>
- <td width="20%" align="right"> <a accesskey="n" href="DBEntry.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="CoreEnvUsage.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 2. Databases</th>
+ <td width="20%" align="right"> <a accesskey="n" href="DBEntry.html">Next</a></td>
</tr>
</table>
<hr />
@@ -89,8 +89,8 @@ import java.io.FileNotFoundException; </pre>
private Database vendorDb = null;
private Database inventoryDb = null;
- private String vendordb = &quot;VendorDB.db&quot;;
- private String inventorydb = &quot;InventoryDB.db&quot;;
+ private String vendordb = "VendorDB.db";
+ private String inventorydb = "InventoryDB.db";
// Our constructor does nothing
public MyDbs() {} </pre>
@@ -107,24 +107,24 @@ import java.io.FileNotFoundException; </pre>
DatabaseConfig myDbConfig = new DatabaseConfig();
myDbConfig.setErrorStream(System.err);
- myDbConfig.setErrorPrefix(&quot;MyDbs&quot;);
+ myDbConfig.setErrorPrefix("MyDbs");
myDbConfig.setType(DatabaseType.BTREE);
myDbConfig.setAllowCreate(true);
// Now open, or create and open, our databases
// Open the vendors and inventory databases
try {
- vendordb = databasesHome + &quot;/&quot; + vendordb;
+ vendordb = databasesHome + "/" + vendordb;
vendorDb = new Database(vendordb,
null,
myDbConfig);
- inventorydb = databasesHome + &quot;/&quot; + inventorydb;
+ inventorydb = databasesHome + "/" + inventorydb;
inventoryDb = new Database(inventorydb,
null,
myDbConfig);
} catch(FileNotFoundException fnfe) {
- System.err.println(&quot;MyDbs: &quot; + fnfe.toString());
+ System.err.println("MyDbs: " + fnfe.toString());
System.exit(-1);
}
} </pre>
@@ -152,7 +152,7 @@ import java.io.FileNotFoundException; </pre>
inventoryDb.close();
}
} catch(DatabaseException dbe) {
- System.err.println(&quot;Error closing MyDbs: &quot; +
+ System.err.println("Error closing MyDbs: " +
dbe.toString());
System.exit(-1);
}
@@ -164,18 +164,18 @@ import java.io.FileNotFoundException; </pre>
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="CoreEnvUsage.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="CoreEnvUsage.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="DB.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="DBEntry.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="DBEntry.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Managing Databases in Environments </td>
+ <td width="40%" align="left" valign="top">Managing Databases in Environments </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Chapter 3. Database Records</td>
+ <td width="40%" align="right" valign="top"> Chapter 3. Database Records</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/JAVA/Cursors.html b/db/docs/gsg/JAVA/Cursors.html
index 6359918ac..070c19d3d 100644
--- a/db/docs/gsg/JAVA/Cursors.html
+++ b/db/docs/gsg/JAVA/Cursors.html
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <title>Chapter 4. Using Cursors</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Chapter 4. Using Cursors</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
@@ -15,12 +15,12 @@
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
- <th colspan="3" align="center">Chapter 4. Using Cursors</th>
+ <th colspan="3" align="center">Chapter 4. Using Cursors</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="dbtJavaUsage.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="Positioning.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="dbtJavaUsage.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="Positioning.html">Next</a></td>
</tr>
</table>
<hr />
@@ -29,7 +29,7 @@
<div class="titlepage">
<div>
<div>
- <h2 class="title"><a id="Cursors"></a>Chapter 4. Using Cursors</h2>
+ <h2 class="title"><a id="Cursors"></a>Chapter 4. Using Cursors</h2>
</div>
</div>
<div></div>
@@ -131,7 +131,7 @@ Database myDatabase = null;
Cursor myCursor = null;
try {
- myDatabase = new Database(&quot;myDB&quot;, null, null);
+ myDatabase = new Database("myDB", null, null);
myCursor = myDatabase.openCursor(null, null);
} catch (FileNotFoundException fnfe) {
@@ -167,7 +167,7 @@ try {
myDatabase.close();
}
} catch(DatabaseException dbe) {
- System.err.println(&quot;Error in close: &quot; + dbe.toString());
+ System.err.println("Error in close: " + dbe.toString());
}
} </pre>
</div>
@@ -176,18 +176,18 @@ try {
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="dbtJavaUsage.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="dbtJavaUsage.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="Positioning.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="Positioning.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Database Usage Example </td>
+ <td width="40%" align="left" valign="top">Database Usage Example </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Getting Records Using the Cursor</td>
+ <td width="40%" align="right" valign="top"> Getting Records Using the Cursor</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/JAVA/DB.html b/db/docs/gsg/JAVA/DB.html
index c7b87085c..06b0fc89a 100644
--- a/db/docs/gsg/JAVA/DB.html
+++ b/db/docs/gsg/JAVA/DB.html
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <title>Chapter 2. Databases</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Chapter 2. Databases</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
@@ -15,12 +15,12 @@
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
- <th colspan="3" align="center">Chapter 2. Databases</th>
+ <th colspan="3" align="center">Chapter 2. Databases</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="gettingit.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="coredbclose.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="gettingit.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="coredbclose.html">Next</a></td>
</tr>
</table>
<hr />
@@ -29,7 +29,7 @@
<div class="titlepage">
<div>
<div>
- <h2 class="title"><a id="DB"></a>Chapter 2. Databases</h2>
+ <h2 class="title"><a id="DB"></a>Chapter 2. Databases</h2>
</div>
</div>
<div></div>
@@ -148,7 +148,7 @@ try {
// Open the database. Create it if it does not already exist.
DatabaseConfig dbConfig = new DatabaseConfig();
dbConfig.setAllowCreate(true);
- myDatabase = new Database (&quot;sampleDatabase.db&quot;,
+ myDatabase = new Database ("sampleDatabase.db",
null,
dbConfig);
} catch (DatabaseException dbe) {
@@ -162,18 +162,18 @@ try {
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="gettingit.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="gettingit.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="coredbclose.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="coredbclose.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Getting and Using DB  </td>
+ <td width="40%" align="left" valign="top">Getting and Using DB  </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Closing Databases</td>
+ <td width="40%" align="right" valign="top"> Closing Databases</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/JAVA/DBAdmin.html b/db/docs/gsg/JAVA/DBAdmin.html
index e5b5aba01..5f3e0f85f 100644
--- a/db/docs/gsg/JAVA/DBAdmin.html
+++ b/db/docs/gsg/JAVA/DBAdmin.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Administrative Methods</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="DB.html" title="Chapter 2. Databases" />
+ <link rel="up" href="DB.html" title="Chapter 2. Databases" />
<link rel="previous" href="DBConfig.html" title="Database Properties" />
<link rel="next" href="dbErrorReporting.html" title="Error Reporting Functions" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Administrative Methods</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="DBConfig.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 2. Databases</th>
- <td width="20%" align="right"> <a accesskey="n" href="dbErrorReporting.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="DBConfig.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 2. Databases</th>
+ <td width="20%" align="right"> <a accesskey="n" href="dbErrorReporting.html">Next</a></td>
</tr>
</table>
<hr />
@@ -67,10 +67,10 @@
...
myDatabase.close();
try {
- myDatabase.rename(&quot;mydb.db&quot;, // Database file to rename
+ myDatabase.rename("mydb.db", // Database file to rename
null, // Database to rename. Not used so
// the entire file is renamed.
- &quot;newdb.db&quot;, // New name to use.
+ "newdb.db", // New name to use.
null); // DatabaseConfig object.
// None provided.
} catch (FileNotFoundException fnfe) {
@@ -94,8 +94,8 @@ try {
true); // If true, then the
// number of records
// deleted are counted.
-System.out.println(&quot;Discarded &quot; + numDiscarded +
- &quot; records from database &quot; +
+System.out.println("Discarded " + numDiscarded +
+ " records from database " +
myDatabase.getDatabaseName()); </pre>
</li>
</ul>
@@ -105,18 +105,18 @@ System.out.println(&quot;Discarded &quot; + numDiscarded +
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="DBConfig.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="DBConfig.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="DB.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="dbErrorReporting.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="dbErrorReporting.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Database Properties </td>
+ <td width="40%" align="left" valign="top">Database Properties </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Error Reporting Functions</td>
+ <td width="40%" align="right" valign="top"> Error Reporting Functions</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/JAVA/DBEntry.html b/db/docs/gsg/JAVA/DBEntry.html
index 9986b8494..43946cbc4 100644
--- a/db/docs/gsg/JAVA/DBEntry.html
+++ b/db/docs/gsg/JAVA/DBEntry.html
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <title>Chapter 3. Database Records</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Chapter 3. Database Records</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
@@ -15,12 +15,12 @@
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
- <th colspan="3" align="center">Chapter 3. Database Records</th>
+ <th colspan="3" align="center">Chapter 3. Database Records</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="CoreJavaUsage.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="usingDbt.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="CoreJavaUsage.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="usingDbt.html">Next</a></td>
</tr>
</table>
<hr />
@@ -29,7 +29,7 @@
<div class="titlepage">
<div>
<div>
- <h2 class="title"><a id="DBEntry"></a>Chapter 3. Database Records</h2>
+ <h2 class="title"><a id="DBEntry"></a>Chapter 3. Database Records</h2>
</div>
</div>
<div></div>
@@ -105,7 +105,7 @@
</dl>
</div>
<p>
- DB records contain two parts &#8212; a key and some data. Both the key
+ DB records contain two parts — a key and some data. Both the key
and its corresponding data are
encapsulated in
<span><tt class="classname">DatabaseEntry</tt> class objects.</span>
@@ -147,7 +147,7 @@
<span><tt class="classname">DatabaseEntry</tt> objects</span>
- &#8212; one for the key and another for the data.
+ — one for the key and another for the data.
<span>The key and data information are passed to-
and returned from DB using
@@ -170,12 +170,12 @@ import com.sleepycat.db.DatabaseEntry;
...
-String aKey = &quot;key&quot;;
-String aData = &quot;data&quot;;
+String aKey = "key";
+String aData = "data";
try {
- DatabaseEntry theKey = new DatabaseEntry(aKey.getBytes(&quot;UTF-8&quot;));
- DatabaseEntry theData = new DatabaseEntry(aData.getBytes(&quot;UTF-8&quot;));
+ DatabaseEntry theKey = new DatabaseEntry(aKey.getBytes("UTF-8"));
+ DatabaseEntry theData = new DatabaseEntry(aData.getBytes("UTF-8"));
} catch (Exception e) {
// Exception handling goes here
}
@@ -216,8 +216,8 @@ import com.sleepycat.db.DatabaseEntry;
byte[] myKey = theKey.getData();
byte[] myData = theData.getData();
-String key = new String(myKey, &quot;UTF-8&quot;);
-String data = new String(myData, &quot;UTF-8&quot;); </pre>
+String key = new String(myKey, "UTF-8");
+String data = new String(myData, "UTF-8"); </pre>
<p>
There are a large number of mechanisms that you can use to move data in
and out of <tt class="literal">byte</tt> arrays. To help you with this
@@ -237,18 +237,18 @@ String data = new String(myData, &quot;UTF-8&quot;); </pre>
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="CoreJavaUsage.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="CoreJavaUsage.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="usingDbt.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="usingDbt.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Database Example </td>
+ <td width="40%" align="left" valign="top">Database Example </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Reading and Writing Database Records</td>
+ <td width="40%" align="right" valign="top"> Reading and Writing Database Records</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/JAVA/DeleteEntryWCursor.html b/db/docs/gsg/JAVA/DeleteEntryWCursor.html
index 28348f7df..6f57dc623 100644
--- a/db/docs/gsg/JAVA/DeleteEntryWCursor.html
+++ b/db/docs/gsg/JAVA/DeleteEntryWCursor.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Deleting Records Using Cursors</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="Cursors.html" title="Chapter 4. Using Cursors" />
+ <link rel="up" href="Cursors.html" title="Chapter 4. Using Cursors" />
<link rel="previous" href="PutEntryWCursor.html" title="Putting Records Using Cursors" />
<link rel="next" href="ReplacingEntryWCursor.html" title="Replacing Records Using Cursors" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Deleting Records Using Cursors</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="PutEntryWCursor.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 4. Using Cursors</th>
- <td width="20%" align="right"> <a accesskey="n" href="ReplacingEntryWCursor.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="PutEntryWCursor.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 4. Using Cursors</th>
+ <td width="20%" align="right"> <a accesskey="n" href="ReplacingEntryWCursor.html">Next</a></td>
</tr>
</table>
<hr />
@@ -63,7 +63,7 @@ try {
...
// Create DatabaseEntry objects
// searchKey is some String.
- DatabaseEntry theKey = new DatabaseEntry(searchKey.getBytes(&quot;UTF-8&quot;));
+ DatabaseEntry theKey = new DatabaseEntry(searchKey.getBytes("UTF-8"));
DatabaseEntry theData = new DatabaseEntry();
// Open a cursor using a database handle
@@ -76,10 +76,10 @@ try {
// Count the number of records using the given key. If there is only
// one, delete that record.
if (cursor.count() == 1) {
- System.out.println(&quot;Deleting &quot; +
- new String(theKey.getData(), &quot;UTF-8&quot;) +
- &quot;|&quot; +
- new String(theData.getData(), &quot;UTF-8&quot;));
+ System.out.println("Deleting " +
+ new String(theKey.getData(), "UTF-8") +
+ "|" +
+ new String(theData.getData(), "UTF-8"));
cursor.delete();
}
} catch (Exception e) {
@@ -93,18 +93,18 @@ try {
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="PutEntryWCursor.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="PutEntryWCursor.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="Cursors.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="ReplacingEntryWCursor.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="ReplacingEntryWCursor.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Putting Records Using Cursors </td>
+ <td width="40%" align="left" valign="top">Putting Records Using Cursors </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Replacing Records Using Cursors</td>
+ <td width="40%" align="right" valign="top"> Replacing Records Using Cursors</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/JAVA/Positioning.html b/db/docs/gsg/JAVA/Positioning.html
index 124446528..4f225806f 100644
--- a/db/docs/gsg/JAVA/Positioning.html
+++ b/db/docs/gsg/JAVA/Positioning.html
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Getting Records Using the Cursor</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="Cursors.html" title="Chapter 4. Using Cursors" />
- <link rel="previous" href="Cursors.html" title="Chapter 4. Using Cursors" />
+ <link rel="up" href="Cursors.html" title="Chapter 4. Using Cursors" />
+ <link rel="previous" href="Cursors.html" title="Chapter 4. Using Cursors" />
<link rel="next" href="PutEntryWCursor.html" title="Putting Records Using Cursors" />
</head>
<body>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Getting Records Using the Cursor</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="Cursors.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 4. Using Cursors</th>
- <td width="20%" align="right"> <a accesskey="n" href="PutEntryWCursor.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="Cursors.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 4. Using Cursors</th>
+ <td width="20%" align="right"> <a accesskey="n" href="PutEntryWCursor.html">Next</a></td>
</tr>
</table>
<hr />
@@ -81,13 +81,13 @@ try {
// DatabaseEntry held a byte array representation of some other data
// type (such as a complex object) then this operation would look
// considerably different.
- String keyString = new String(foundKey.getData(), &quot;UTF-8&quot;);
- String dataString = new String(foundData.getData(), &quot;UTF-8&quot;);
- System.out.println(&quot;Key | Data : &quot; + keyString + &quot; | &quot; +
- dataString + &quot;&quot;);
+ String keyString = new String(foundKey.getData(), "UTF-8");
+ String dataString = new String(foundData.getData(), "UTF-8");
+ System.out.println("Key | Data : " + keyString + " | " +
+ dataString + "");
}
} catch (DatabaseException de) {
- System.err.println(&quot;Error accessing database.&quot; + de);
+ System.err.println("Error accessing database." + de);
} finally {
// Cursors must be closed.
cursor.close();
@@ -128,12 +128,12 @@ try {
while (cursor.getPrev(foundKey, foundData, LockMode.DEFAULT) ==
OperationStatus.SUCCESS) {
- String theKey = new String(foundKey.getData(), &quot;UTF-8&quot;);
- String theData = new String(foundData.getData(), &quot;UTF-8&quot;);
- System.out.println(&quot;Key | Data : &quot; + theKey + &quot; | &quot; + theData + &quot;&quot;);
+ String theKey = new String(foundKey.getData(), "UTF-8");
+ String theData = new String(foundData.getData(), "UTF-8");
+ System.out.println("Key | Data : " + theKey + " | " + theData + "");
}
} catch (DatabaseException de) {
- System.err.println(&quot;Error accessing database.&quot; + de);
+ System.err.println("Error accessing database." + de);
} finally {
// Cursors must be closed.
cursor.close();
@@ -188,7 +188,7 @@ try {
<p>
<span>Identical to
-
+ <tt class="methodname">Cursor.getSearchKey()</tt>
unless you are using the BTree access. In this case, the cursor
moves</span>
@@ -319,8 +319,8 @@ import com.sleepycat.db.OperationStatus;
...
// For this example, hard code the search key and data
-String searchKey = &quot;Alaska&quot;;
-String searchData = &quot;Fa&quot;;
+String searchKey = "Alaska";
+String searchData = "Fa";
Cursor cursor = null;
Database myDatabase = null;
@@ -333,9 +333,9 @@ try {
cursor = myDatabase.openCursor(null, null);
DatabaseEntry theKey =
- new DatabaseEntry(searchKey.getBytes(&quot;UTF-8&quot;));
+ new DatabaseEntry(searchKey.getBytes("UTF-8"));
DatabaseEntry theData =
- new DatabaseEntry(searchData.getBytes(&quot;UTF-8&quot;));
+ new DatabaseEntry(searchData.getBytes("UTF-8"));
// Open a cursor using a database handle
cursor = myDatabase.openCursor(null, null);
@@ -346,18 +346,18 @@ try {
// NOTFOUND is returned if a record cannot be found whose key
// matches the search key AND whose data begins with the search data.
if (retVal == OperationStatus.NOTFOUND) {
- System.out.println(searchKey + &quot;/&quot; + searchData +
- &quot; not matched in database &quot; +
+ System.out.println(searchKey + "/" + searchData +
+ " not matched in database " +
myDatabase.getDatabaseName());
} else {
// Upon completing a search, the key and data DatabaseEntry
// parameters for getSearchBothRange() are populated with the
// key/data values of the found record.
- String foundKey = new String(theKey.getData(), &quot;UTF-8&quot;);
- String foundData = new String(theData.getData(), &quot;UTF-8&quot;);
- System.out.println(&quot;Found record &quot; + foundKey + &quot;/&quot; + foundData +
- &quot;for search key/data: &quot; + searchKey +
- &quot;/&quot; + searchData);
+ String foundKey = new String(theKey.getData(), "UTF-8");
+ String foundData = new String(theData.getData(), "UTF-8");
+ System.out.println("Found record " + foundKey + "/" + foundData +
+ "for search key/data: " + searchKey +
+ "/" + searchData);
}
} catch (Exception e) {
@@ -543,7 +543,7 @@ try {
// Create DatabaseEntry objects
// searchKey is some String.
- DatabaseEntry theKey = new DatabaseEntry(searchKey.getBytes(&quot;UTF-8&quot;));
+ DatabaseEntry theKey = new DatabaseEntry(searchKey.getBytes("UTF-8"));
DatabaseEntry theData = new DatabaseEntry();
// Open a cursor using a database handle
@@ -558,10 +558,10 @@ try {
// print the duplicates.
if (cursor.count() &gt; 1) {
while (retVal == OperationStatus.SUCCESS) {
- String keyString = new String(theKey.getData(), &quot;UTF-8&quot;);
- String dataString = new String(theData.getData(), &quot;UTF-8&quot;);
- System.out.println(&quot;Key | Data : &quot; + keyString + &quot; | &quot; +
- dataString + &quot;&quot;);
+ String keyString = new String(theKey.getData(), "UTF-8");
+ String dataString = new String(theData.getData(), "UTF-8");
+ System.out.println("Key | Data : " + keyString + " | " +
+ dataString + "");
retVal = cursor.getNextDup(theKey, theData, LockMode.DEFAULT);
}
@@ -578,18 +578,18 @@ try {
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="Cursors.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="Cursors.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="Cursors.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="PutEntryWCursor.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="PutEntryWCursor.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Chapter 4. Using Cursors </td>
+ <td width="40%" align="left" valign="top">Chapter 4. Using Cursors </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Putting Records Using Cursors</td>
+ <td width="40%" align="right" valign="top"> Putting Records Using Cursors</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/JAVA/PutEntryWCursor.html b/db/docs/gsg/JAVA/PutEntryWCursor.html
index cbad1a7ec..92e886419 100644
--- a/db/docs/gsg/JAVA/PutEntryWCursor.html
+++ b/db/docs/gsg/JAVA/PutEntryWCursor.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Putting Records Using Cursors</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="Cursors.html" title="Chapter 4. Using Cursors" />
+ <link rel="up" href="Cursors.html" title="Chapter 4. Using Cursors" />
<link rel="previous" href="Positioning.html" title="Getting Records Using the Cursor" />
<link rel="next" href="DeleteEntryWCursor.html" title="Deleting Records Using Cursors" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Putting Records Using Cursors</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="Positioning.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 4. Using Cursors</th>
- <td width="20%" align="right"> <a accesskey="n" href="DeleteEntryWCursor.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="Positioning.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 4. Using Cursors</th>
+ <td width="20%" align="right"> <a accesskey="n" href="DeleteEntryWCursor.html">Next</a></td>
</tr>
</table>
<hr />
@@ -147,11 +147,11 @@ import com.sleepycat.db.OperationStatus;
...
// Create the data to put into the database
-String key1str = &quot;My first string&quot;;
-String data1str = &quot;My first data&quot;;
-String key2str = &quot;My second string&quot;;
-String data2str = &quot;My second data&quot;;
-String data3str = &quot;My third data&quot;;
+String key1str = "My first string";
+String data1str = "My first data";
+String key2str = "My second string";
+String data2str = "My second data";
+String data3str = "My third data";
Cursor cursor = null;
Database myDatabase = null;
@@ -160,11 +160,11 @@ try {
// Database open omitted for brevity
...
- DatabaseEntry key1 = new DatabaseEntry(key1str.getBytes(&quot;UTF-8&quot;));
- DatabaseEntry data1 = new DatabaseEntry(data1str.getBytes(&quot;UTF-8&quot;));
- DatabaseEntry key2 = new DatabaseEntry(key2str.getBytes(&quot;UTF-8&quot;));
- DatabaseEntry data2 = new DatabaseEntry(data2str.getBytes(&quot;UTF-8&quot;));
- DatabaseEntry data3 = new DatabaseEntry(data3str.getBytes(&quot;UTF-8&quot;));
+ DatabaseEntry key1 = new DatabaseEntry(key1str.getBytes("UTF-8"));
+ DatabaseEntry data1 = new DatabaseEntry(data1str.getBytes("UTF-8"));
+ DatabaseEntry key2 = new DatabaseEntry(key2str.getBytes("UTF-8"));
+ DatabaseEntry data2 = new DatabaseEntry(data2str.getBytes("UTF-8"));
+ DatabaseEntry data3 = new DatabaseEntry(data3str.getBytes("UTF-8"));
// Open a cursor using a database handle
cursor = myDatabase.openCursor(null, null);
@@ -187,18 +187,18 @@ try {
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="Positioning.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="Positioning.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="Cursors.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="DeleteEntryWCursor.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="DeleteEntryWCursor.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Getting Records Using the Cursor </td>
+ <td width="40%" align="left" valign="top">Getting Records Using the Cursor </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Deleting Records Using Cursors</td>
+ <td width="40%" align="right" valign="top"> Deleting Records Using Cursors</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/JAVA/ReplacingEntryWCursor.html b/db/docs/gsg/JAVA/ReplacingEntryWCursor.html
index beb492675..f7f787f5d 100644
--- a/db/docs/gsg/JAVA/ReplacingEntryWCursor.html
+++ b/db/docs/gsg/JAVA/ReplacingEntryWCursor.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Replacing Records Using Cursors</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="Cursors.html" title="Chapter 4. Using Cursors" />
+ <link rel="up" href="Cursors.html" title="Chapter 4. Using Cursors" />
<link rel="previous" href="DeleteEntryWCursor.html" title="Deleting Records Using Cursors" />
<link rel="next" href="cursorJavaUsage.html" title="Cursor Example" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Replacing Records Using Cursors</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="DeleteEntryWCursor.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 4. Using Cursors</th>
- <td width="20%" align="right"> <a accesskey="n" href="cursorJavaUsage.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="DeleteEntryWCursor.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 4. Using Cursors</th>
+ <td width="20%" align="right"> <a accesskey="n" href="cursorJavaUsage.html">Next</a></td>
</tr>
</table>
<hr />
@@ -61,7 +61,7 @@ try {
...
// Create DatabaseEntry objects
// searchKey is some String.
- DatabaseEntry theKey = new DatabaseEntry(searchKey.getBytes(&quot;UTF-8&quot;));
+ DatabaseEntry theKey = new DatabaseEntry(searchKey.getBytes("UTF-8"));
DatabaseEntry theData = new DatabaseEntry();
// Open a cursor using a database handle
@@ -72,9 +72,9 @@ try {
LockMode.DEFAULT);
// Replacement data
- String replaceStr = &quot;My replacement string&quot;;
+ String replaceStr = "My replacement string";
DatabaseEntry replacementData =
- new DatabaseEntry(replaceStr.getBytes(&quot;UTF-8&quot;));
+ new DatabaseEntry(replaceStr.getBytes("UTF-8"));
cursor.putCurrent(replacementData);
} catch (Exception e) {
// Exception handling goes here
@@ -113,18 +113,18 @@ try {
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="DeleteEntryWCursor.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="DeleteEntryWCursor.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="Cursors.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="cursorJavaUsage.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="cursorJavaUsage.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Deleting Records Using Cursors </td>
+ <td width="40%" align="left" valign="top">Deleting Records Using Cursors </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Cursor Example</td>
+ <td width="40%" align="right" valign="top"> Cursor Example</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/JAVA/accessmethods.html b/db/docs/gsg/JAVA/accessmethods.html
index dcbd74844..cbcc86fcb 100644
--- a/db/docs/gsg/JAVA/accessmethods.html
+++ b/db/docs/gsg/JAVA/accessmethods.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Access Methods</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="introduction.html" title="Chapter 1. Introduction to Berkeley DB " />
+ <link rel="up" href="introduction.html" title="Chapter 1. Introduction to Berkeley DB " />
<link rel="previous" href="concepts.html" title="Berkeley DB Concepts" />
<link rel="next" href="databaseLimits.html" title="Database Limits and Portability" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Access Methods</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="concepts.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 1. Introduction to Berkeley DB </th>
- <td width="20%" align="right"> <a accesskey="n" href="databaseLimits.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="concepts.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 1. Introduction to Berkeley DB </th>
+ <td width="20%" align="right"> <a accesskey="n" href="databaseLimits.html">Next</a></td>
</tr>
</table>
<hr />
@@ -262,18 +262,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="concepts.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="concepts.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="introduction.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="databaseLimits.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="databaseLimits.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Berkeley DB Concepts </td>
+ <td width="40%" align="left" valign="top">Berkeley DB Concepts </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Database Limits and Portability</td>
+ <td width="40%" align="right" valign="top"> Database Limits and Portability</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/JAVA/bindAPI.html b/db/docs/gsg/JAVA/bindAPI.html
index b8ce535ef..b9d0226b8 100644
--- a/db/docs/gsg/JAVA/bindAPI.html
+++ b/db/docs/gsg/JAVA/bindAPI.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Using the BIND APIs</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="DBEntry.html" title="Chapter 3. Database Records" />
+ <link rel="up" href="DBEntry.html" title="Chapter 3. Database Records" />
<link rel="previous" href="usingDbt.html" title="Reading and Writing Database Records" />
<link rel="next" href="dbtJavaUsage.html" title="Database Usage Example" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Using the BIND APIs</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="usingDbt.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 3. Database Records</th>
- <td width="20%" align="right"> <a accesskey="n" href="dbtJavaUsage.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="usingDbt.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 3. Database Records</th>
+ <td width="20%" align="right"> <a accesskey="n" href="dbtJavaUsage.html">Next</a></td>
</tr>
</table>
<hr />
@@ -161,8 +161,8 @@ Database myDatabase = null;
// Need a key for the put.
try {
- String aKey = &quot;myLong&quot;;
- DatabaseEntry theKey = new DatabaseEntry(aKey.getBytes(&quot;UTF-8&quot;));
+ String aKey = "myLong";
+ DatabaseEntry theKey = new DatabaseEntry(aKey.getBytes("UTF-8"));
// Now build the DatabaseEntry using a TupleBinding
Long myLong = new Long(123456789l);
@@ -194,8 +194,8 @@ Database myDatabase = null;
try {
// Need a key for the get
- String aKey = &quot;myLong&quot;;
- DatabaseEntry theKey = new DatabaseEntry(aKey.getBytes(&quot;UTF-8&quot;));
+ String aKey = "myLong";
+ DatabaseEntry theKey = new DatabaseEntry(aKey.getBytes("UTF-8"));
// Need a DatabaseEntry to hold the associated data.
DatabaseEntry theData = new DatabaseEntry();
@@ -212,11 +212,11 @@ try {
// Use the binding to convert the byte array contained in theData
// to a Long type.
Long theLong = (Long) myBinding.entryToObject(theData);
- retKey = new String(theKey.getData(), &quot;UTF-8&quot;);
- System.out.println(&quot;For key: '&quot; + retKey + &quot;' found Long: '&quot; +
- theLong + &quot;'.&quot;);
+ retKey = new String(theKey.getData(), "UTF-8");
+ System.out.println("For key: '" + retKey + "' found Long: '" +
+ theLong + "'.");
} else {
- System.out.println(&quot;No record found for key '&quot; + retKey + &quot;'.&quot;);
+ System.out.println("No record found for key '" + retKey + "'.");
}
} catch (Exception e) {
// Exception handling goes here
@@ -247,7 +247,7 @@ try {
serialization. While this is functionally a correct solution, the result
is poor space-performance because this causes the class information
to be stored on every such database record. This information can be quite large
- and it is redundant &#8212; the class information does not vary for serialized objects of the same type.
+ and it is redundant — the class information does not vary for serialized objects of the same type.
</p>
<p>
In other words, directly using serialization to place your objects into byte
@@ -412,13 +412,13 @@ import com.sleepycat.db.DatabaseType;
...
// The key data.
-String aKey = &quot;myData&quot;;
+String aKey = "myData";
// The data data
MyData data2Store = new MyData();
data2Store.setLong(123456789l);
data2Store.setDouble(1234.9876543);
-data2Store.setDescription(&quot;A test instance of this class&quot;);
+data2Store.setDescription("A test instance of this class");
try {
// Open the database that you will use to store your data
@@ -426,13 +426,13 @@ try {
myDbConfig.setAllowCreate(true);
myDbConfig.setSortedDuplicates(true);
myDbConfig.setType(DatabaseType.BTREE);
- Database myDatabase = new Database(&quot;myDb&quot;, null, myDbConfig);
+ Database myDatabase = new Database("myDb", null, myDbConfig);
// Open the database that you use to store your class information.
// The db used to store class information does not require duplicates
// support.
myDbConfig.setSortedDuplicates(false);
- Database myClassDb = new Database(&quot;classDb&quot;, null, myDbConfig);
+ Database myClassDb = new Database("classDb", null, myDbConfig);
// Instantiate the class catalog
StoredClassCatalog classCatalog = new StoredClassCatalog(myClassDb);
@@ -442,7 +442,7 @@ try {
MyData.class);
// Create the DatabaseEntry for the key
- DatabaseEntry theKey = new DatabaseEntry(aKey.getBytes(&quot;UTF-8&quot;));
+ DatabaseEntry theKey = new DatabaseEntry(aKey.getBytes("UTF-8"));
// Create the DatabaseEntry for the data. Use the EntryBinding object
// that was just created to populate the DatabaseEntry
@@ -485,17 +485,17 @@ import com.sleepycat.db.LockMode;
...
// The key data.
-String aKey = &quot;myData&quot;;
+String aKey = "myData";
try {
// Open the database that stores your data
DatabaseConfig myDbConfig = new DatabaseConfig();
myDbConfig.setAllowCreate(false);
myDbConfig.setType(DatabaseType.BTREE);
- Database myDatabase = new Database(&quot;myDb&quot;, null, myDbConfig);
+ Database myDatabase = new Database("myDb", null, myDbConfig);
// Open the database that stores your class information.
- Database myClassDb = new Database(&quot;classDb&quot;, null, myDbConfig);
+ Database myClassDb = new Database("classDb", null, myDbConfig);
// Instantiate the class catalog
StoredClassCatalog classCatalog = new StoredClassCatalog(myClassDb);
@@ -505,7 +505,7 @@ try {
MyData.class);
// Create DatabaseEntry objects for the key and data
- DatabaseEntry theKey = new DatabaseEntry(aKey.getBytes(&quot;UTF-8&quot;));
+ DatabaseEntry theKey = new DatabaseEntry(aKey.getBytes("UTF-8"));
DatabaseEntry theData = new DatabaseEntry();
// Do the get as normal
@@ -585,7 +585,7 @@ public class MyData2 {
public MyData2() {
longData = 0;
doubleData = new Double(0.0);
- description = &quot;&quot;;
+ description = "";
}
public void setLong(long data) {
@@ -724,7 +724,7 @@ TupleBinding keyBinding = new MyTupleBinding();
MyData2 theKeyData = new MyData2();
theKeyData.setLong(123456789l);
theKeyData.setDouble(new Double(12345.6789));
-theKeyData.setString(&quot;My key data&quot;);
+theKeyData.setString("My key data");
DatabaseEntry myKey = new DatabaseEntry();
@@ -747,18 +747,18 @@ try {
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="usingDbt.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="usingDbt.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="DBEntry.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="dbtJavaUsage.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="dbtJavaUsage.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Reading and Writing Database Records </td>
+ <td width="40%" align="left" valign="top">Reading and Writing Database Records </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Database Usage Example</td>
+ <td width="40%" align="right" valign="top"> Database Usage Example</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/JAVA/btree.html b/db/docs/gsg/JAVA/btree.html
index fc2545ee2..4bec710fd 100644
--- a/db/docs/gsg/JAVA/btree.html
+++ b/db/docs/gsg/JAVA/btree.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>BTree Configuration</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="dbconfig.html" title="Chapter 6. Database Configuration" />
+ <link rel="up" href="dbconfig.html" title="Chapter 6. Database Configuration" />
<link rel="previous" href="cachesize.html" title="Selecting the Cache Size" />
</head>
<body>
@@ -17,9 +17,9 @@
<th colspan="3" align="center">BTree Configuration</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="cachesize.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 6. Database Configuration</th>
- <td width="20%" align="right"> </td>
+ <td width="20%" align="left"><a accesskey="p" href="cachesize.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 6. Database Configuration</th>
+ <td width="20%" align="right"> </td>
</tr>
</table>
<hr />
@@ -328,12 +328,12 @@ try {
myDbConfig.setSortedDuplicates(true);
// Open the database
- myDb = new Database(&quot;mydb.db&quot;, null, myDbConfig);
+ myDb = new Database("mydb.db", null, myDbConfig);
} catch(DatabaseException dbe) {
- System.err.println(&quot;MyDbs: &quot; + dbe.toString());
+ System.err.println("MyDbs: " + dbe.toString());
System.exit(-1);
} catch(FileNotFoundException fnfe) {
- System.err.println(&quot;MyDbs: &quot; + fnfe.toString());
+ System.err.println("MyDbs: " + fnfe.toString());
System.exit(-1);
} </pre>
</div>
@@ -458,7 +458,7 @@ try {
comparator that uses <tt class="methodname">String.compareTo()</tt>,
which performs a Unicode comparison of two strings (note that for
single-byte roman characters, Unicode comparison and UTF-8
- byte-by-byte comparisons are identical &#8211; this is something you
+ byte-by-byte comparisons are identical – this is something you
would only want to do if you were using multibyte unicode characters
with DB). In this case, your comparator would look like the
following:
@@ -508,7 +508,7 @@ try {
// Open the database that you will use to store your data
myDbConfig.setSortedDuplicates(true);
- myDatabase = new Database(&quot;myDb&quot;, null, myDbConfig);
+ myDatabase = new Database("myDb", null, myDbConfig);
} catch (DatabaseException dbe) {
// Exception handling goes here
} catch (FileNotFoundException fnfe) {
@@ -521,18 +521,18 @@ try {
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="cachesize.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="cachesize.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="dbconfig.html">Up</a>
</td>
- <td width="40%" align="right"> </td>
+ <td width="40%" align="right"> </td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Selecting the Cache Size </td>
+ <td width="40%" align="left" valign="top">Selecting the Cache Size </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> </td>
+ <td width="40%" align="right" valign="top"> </td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/JAVA/cachesize.html b/db/docs/gsg/JAVA/cachesize.html
index ace996d76..0590e5c10 100644
--- a/db/docs/gsg/JAVA/cachesize.html
+++ b/db/docs/gsg/JAVA/cachesize.html
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Selecting the Cache Size</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="dbconfig.html" title="Chapter 6. Database Configuration" />
- <link rel="previous" href="dbconfig.html" title="Chapter 6. Database Configuration" />
+ <link rel="up" href="dbconfig.html" title="Chapter 6. Database Configuration" />
+ <link rel="previous" href="dbconfig.html" title="Chapter 6. Database Configuration" />
<link rel="next" href="btree.html" title="BTree Configuration" />
</head>
<body>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Selecting the Cache Size</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="dbconfig.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 6. Database Configuration</th>
- <td width="20%" align="right"> <a accesskey="n" href="btree.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="dbconfig.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 6. Database Configuration</th>
+ <td width="20%" align="right"> <a accesskey="n" href="btree.html">Next</a></td>
</tr>
</table>
<hr />
@@ -56,14 +56,14 @@
available memory and performance considerations.
</p>
<p>
- Selecting a cache size is something of an art, but fortunately it is
- selected at database (or environment) open time, so it can be easily
- tuned to your application's data requirements as they change over time.
- The best way to determine how large your cache needs to be is to put
- your application into a production environment and watch to see how much
- disk I/O is occurring. If your application is going to disk quite a lot
- to retrieve database records, then you should increase the size of your
- cache (provided that you have enough memory to do so).
+ Selecting a cache size is something of an art, but fortunately you
+ can change it any time, so it can be easily tuned to your
+ application's changing data requirements. The best way to
+ determine how large your cache needs to be is to put your
+ application into a production environment and watch to see how much
+ disk I/O is occurring. If your application is going to disk quite a
+ lot to retrieve database records, then you should increase the size
+ of your cache (provided that you have enough memory to do so).
</p>
<p>
You can use the <tt class="literal">db_stat</tt> command line utility with the
@@ -79,18 +79,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="dbconfig.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="dbconfig.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="dbconfig.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="btree.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="btree.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Chapter 6. Database Configuration </td>
+ <td width="40%" align="left" valign="top">Chapter 6. Database Configuration </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> BTree Configuration</td>
+ <td width="40%" align="right" valign="top"> BTree Configuration</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/JAVA/concepts.html b/db/docs/gsg/JAVA/concepts.html
index 161e6a25b..53cababbe 100644
--- a/db/docs/gsg/JAVA/concepts.html
+++ b/db/docs/gsg/JAVA/concepts.html
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Berkeley DB Concepts</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="introduction.html" title="Chapter 1. Introduction to Berkeley DB " />
- <link rel="previous" href="introduction.html" title="Chapter 1. Introduction to Berkeley DB " />
+ <link rel="up" href="introduction.html" title="Chapter 1. Introduction to Berkeley DB " />
+ <link rel="previous" href="introduction.html" title="Chapter 1. Introduction to Berkeley DB " />
<link rel="next" href="accessmethods.html" title="Access Methods" />
</head>
<body>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Berkeley DB Concepts</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="introduction.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 1. Introduction to Berkeley DB </th>
- <td width="20%" align="right"> <a accesskey="n" href="accessmethods.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="introduction.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 1. Introduction to Berkeley DB </th>
+ <td width="20%" align="right"> <a accesskey="n" href="accessmethods.html">Next</a></td>
</tr>
</table>
<hr />
@@ -149,18 +149,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="introduction.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="introduction.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="introduction.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="accessmethods.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="accessmethods.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Chapter 1. Introduction to Berkeley DB  </td>
+ <td width="40%" align="left" valign="top">Chapter 1. Introduction to Berkeley DB  </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Access Methods</td>
+ <td width="40%" align="right" valign="top"> Access Methods</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/JAVA/coreExceptions.html b/db/docs/gsg/JAVA/coreExceptions.html
index f3b8ae4b2..9d830e40d 100644
--- a/db/docs/gsg/JAVA/coreExceptions.html
+++ b/db/docs/gsg/JAVA/coreExceptions.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Exception Handling</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="introduction.html" title="Chapter 1. Introduction to Berkeley DB " />
+ <link rel="up" href="introduction.html" title="Chapter 1. Introduction to Berkeley DB " />
<link rel="previous" href="environments.html" title="Environments" />
<link rel="next" href="returns.html" title="Error Returns" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Exception Handling</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="environments.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 1. Introduction to Berkeley DB </th>
- <td width="20%" align="right"> <a accesskey="n" href="returns.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="environments.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 1. Introduction to Berkeley DB </th>
+ <td width="20%" align="right"> <a accesskey="n" href="returns.html">Next</a></td>
</tr>
</table>
<hr />
@@ -83,18 +83,18 @@ catch(DatabaseException e)
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="environments.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="environments.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="introduction.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="returns.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="returns.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Environments </td>
+ <td width="40%" align="left" valign="top">Environments </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Error Returns</td>
+ <td width="40%" align="right" valign="top"> Error Returns</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/JAVA/coredbclose.html b/db/docs/gsg/JAVA/coredbclose.html
index 6ded493dc..45996d414 100644
--- a/db/docs/gsg/JAVA/coredbclose.html
+++ b/db/docs/gsg/JAVA/coredbclose.html
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Closing Databases</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="DB.html" title="Chapter 2. Databases" />
- <link rel="previous" href="DB.html" title="Chapter 2. Databases" />
+ <link rel="up" href="DB.html" title="Chapter 2. Databases" />
+ <link rel="previous" href="DB.html" title="Chapter 2. Databases" />
<link rel="next" href="DBConfig.html" title="Database Properties" />
</head>
<body>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Closing Databases</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="DB.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 2. Databases</th>
- <td width="20%" align="right"> <a accesskey="n" href="DBConfig.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="DB.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 2. Databases</th>
+ <td width="20%" align="right"> <a accesskey="n" href="DBConfig.html">Next</a></td>
</tr>
</table>
<hr />
@@ -84,18 +84,18 @@ try {
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="DB.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="DB.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="DB.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="DBConfig.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="DBConfig.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Chapter 2. Databases </td>
+ <td width="40%" align="left" valign="top">Chapter 2. Databases </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Database Properties</td>
+ <td width="40%" align="right" valign="top"> Database Properties</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/JAVA/cursorJavaUsage.html b/db/docs/gsg/JAVA/cursorJavaUsage.html
index c75134a34..dd485c8a8 100644
--- a/db/docs/gsg/JAVA/cursorJavaUsage.html
+++ b/db/docs/gsg/JAVA/cursorJavaUsage.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Cursor Example</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="Cursors.html" title="Chapter 4. Using Cursors" />
+ <link rel="up" href="Cursors.html" title="Chapter 4. Using Cursors" />
<link rel="previous" href="ReplacingEntryWCursor.html" title="Replacing Records Using Cursors" />
- <link rel="next" href="indexes.html" title="Chapter 5. Secondary Databases" />
+ <link rel="next" href="indexes.html" title="Chapter 5. Secondary Databases" />
</head>
<body>
<div class="navheader">
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Cursor Example</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="ReplacingEntryWCursor.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 4. Using Cursors</th>
- <td width="20%" align="right"> <a accesskey="n" href="indexes.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="ReplacingEntryWCursor.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 4. Using Cursors</th>
+ <td width="20%" align="right"> <a accesskey="n" href="indexes.html">Next</a></td>
</tr>
</table>
<hr />
@@ -113,7 +113,7 @@ import com.sleepycat.db.OperationStatus;</pre>
<a id="java_cursor11"></a>
<pre class="programlisting">public class ExampleDatabaseRead {
- private static String myDbsPath = &quot;./&quot;;
+ private static String myDbsPath = "./";
// Encapsulates the database environment and databases.
private static MyDbs myDbs = new MyDbs();
@@ -129,8 +129,8 @@ import com.sleepycat.db.OperationStatus;</pre>
</p>
<a id="java_cursor12"></a>
<pre class="programlisting"> private static void usage() {
- System.out.println(&quot;ExampleDatabaseRead [-h &lt;env directory&gt;]&quot; +
- &quot;[-s &lt;item to locate&gt;]&quot;);
+ System.out.println("ExampleDatabaseRead [-h &lt;env directory&gt;]" +
+ "[-s &lt;item to locate&gt;]");
System.exit(-1);
}
@@ -139,12 +139,12 @@ import com.sleepycat.db.OperationStatus;</pre>
try {
edr.run(args);
} catch (DatabaseException dbe) {
- System.err.println(&quot;ExampleDatabaseRead: &quot; + dbe.toString());
+ System.err.println("ExampleDatabaseRead: " + dbe.toString());
dbe.printStackTrace();
} finally {
myDbs.close();
}
- System.out.println(&quot;All done.&quot;);
+ System.out.println("All done.");
}</pre>
<p>In <tt class="methodname">ExampleDatabaseRead.run()</tt>, we call <tt class="methodname">MyDbs.setup()</tt> to
open our databases. Then we create the bindings that we need for using our data objects with
@@ -187,7 +187,7 @@ import com.sleepycat.db.OperationStatus;</pre>
displayInventoryRecord(foundKey, theInventory);
}
} catch (Exception e) {
- System.err.println(&quot;Error on inventory cursor:&quot;);
+ System.err.println("Error on inventory cursor:");
System.err.println(e.toString());
e.printStackTrace();
} finally {
@@ -206,40 +206,40 @@ import com.sleepycat.db.OperationStatus;</pre>
Inventory theInventory)
throws DatabaseException {
- String theSKU = new String(theKey.getData(), &quot;UTF-8&quot;);
- System.out.println(theSKU + &quot;:&quot;);
- System.out.println(&quot;\t &quot; + theInventory.getItemName());
- System.out.println(&quot;\t &quot; + theInventory.getCategory());
- System.out.println(&quot;\t &quot; + theInventory.getVendor());
- System.out.println(&quot;\t\tNumber in stock: &quot; +
+ String theSKU = new String(theKey.getData(), "UTF-8");
+ System.out.println(theSKU + ":");
+ System.out.println("\t " + theInventory.getItemName());
+ System.out.println("\t " + theInventory.getCategory());
+ System.out.println("\t " + theInventory.getVendor());
+ System.out.println("\t\tNumber in stock: " +
theInventory.getVendorInventory());
- System.out.println(&quot;\t\tPrice per unit: &quot; +
+ System.out.println("\t\tPrice per unit: " +
theInventory.getVendorPrice());
- System.out.println(&quot;\t\tContact: &quot;);
+ System.out.println("\t\tContact: ");
DatabaseEntry searchKey = null;
try {
searchKey =
- new DatabaseEntry(theInventory.getVendor().getBytes(&quot;UTF-8&quot;));
+ new DatabaseEntry(theInventory.getVendor().getBytes("UTF-8"));
} catch (IOException willNeverOccur) {}
DatabaseEntry foundVendor = new DatabaseEntry();
if (myDbs.getVendorDB().get(null, searchKey, foundVendor,
LockMode.DEFAULT) != OperationStatus.SUCCESS) {
- System.out.println(&quot;Could not find vendor: &quot; +
- theInventory.getVendor() + &quot;.&quot;);
+ System.out.println("Could not find vendor: " +
+ theInventory.getVendor() + ".");
System.exit(-1);
} else {
Vendor theVendor =
(Vendor)vendorBinding.entryToObject(foundVendor);
- System.out.println(&quot;\t\t &quot; + theVendor.getAddress());
- System.out.println(&quot;\t\t &quot; + theVendor.getCity() + &quot;, &quot; +
- theVendor.getState() + &quot; &quot; + theVendor.getZipcode());
- System.out.println(&quot;\t\t Business Phone: &quot; +
+ System.out.println("\t\t " + theVendor.getAddress());
+ System.out.println("\t\t " + theVendor.getCity() + ", " +
+ theVendor.getState() + " " + theVendor.getZipcode());
+ System.out.println("\t\t Business Phone: " +
theVendor.getBusinessPhoneNumber());
- System.out.println(&quot;\t\t Sales Rep: &quot; +
+ System.out.println("\t\t Sales Rep: " +
theVendor.getRepName());
- System.out.println(&quot;\t\t &quot; +
+ System.out.println("\t\t " +
theVendor.getRepPhoneNumber());
}
}</pre>
@@ -259,18 +259,18 @@ import com.sleepycat.db.OperationStatus;</pre>
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="ReplacingEntryWCursor.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="ReplacingEntryWCursor.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="Cursors.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="indexes.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="indexes.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Replacing Records Using Cursors </td>
+ <td width="40%" align="left" valign="top">Replacing Records Using Cursors </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Chapter 5. Secondary Databases</td>
+ <td width="40%" align="right" valign="top"> Chapter 5. Secondary Databases</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/JAVA/databaseLimits.html b/db/docs/gsg/JAVA/databaseLimits.html
index 15c23a81c..abf321bdc 100644
--- a/db/docs/gsg/JAVA/databaseLimits.html
+++ b/db/docs/gsg/JAVA/databaseLimits.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Database Limits and Portability</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="introduction.html" title="Chapter 1. Introduction to Berkeley DB " />
+ <link rel="up" href="introduction.html" title="Chapter 1. Introduction to Berkeley DB " />
<link rel="previous" href="accessmethods.html" title="Access Methods" />
<link rel="next" href="environments.html" title="Environments" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Database Limits and Portability</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="accessmethods.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 1. Introduction to Berkeley DB </th>
- <td width="20%" align="right"> <a accesskey="n" href="environments.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="accessmethods.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 1. Introduction to Berkeley DB </th>
+ <td width="20%" align="right"> <a accesskey="n" href="environments.html">Next</a></td>
</tr>
</table>
<hr />
@@ -50,7 +50,7 @@
</p>
<p>
Also, DB's databases and data structures are designed for concurrent
- access &#8212; they are thread-safe, and they share well across multiple
+ access — they are thread-safe, and they share well across multiple
processes. That said, in order to allow multiple processes to share
databases and the cache, DB makes use of mechanisms that do not work
well on network-shared drives (NFS or Windows networks shares, for
@@ -62,18 +62,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="accessmethods.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="accessmethods.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="introduction.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="environments.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="environments.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Access Methods </td>
+ <td width="40%" align="left" valign="top">Access Methods </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Environments</td>
+ <td width="40%" align="right" valign="top"> Environments</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/JAVA/dbErrorReporting.html b/db/docs/gsg/JAVA/dbErrorReporting.html
index 261db41fb..c609ee23a 100644
--- a/db/docs/gsg/JAVA/dbErrorReporting.html
+++ b/db/docs/gsg/JAVA/dbErrorReporting.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Error Reporting Functions</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="DB.html" title="Chapter 2. Databases" />
+ <link rel="up" href="DB.html" title="Chapter 2. Databases" />
<link rel="previous" href="DBAdmin.html" title="Administrative Methods" />
<link rel="next" href="CoreEnvUsage.html" title="Managing Databases in Environments" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Error Reporting Functions</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="DBAdmin.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 2. Databases</th>
- <td width="20%" align="right"> <a accesskey="n" href="CoreEnvUsage.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="DBAdmin.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 2. Databases</th>
+ <td width="20%" align="right"> <a accesskey="n" href="CoreEnvUsage.html">Next</a></td>
</tr>
</table>
<hr />
@@ -128,18 +128,18 @@ myDbConfig.setMessageHandler(mmh); </pre>
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="DBAdmin.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="DBAdmin.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="DB.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="CoreEnvUsage.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="CoreEnvUsage.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Administrative Methods </td>
+ <td width="40%" align="left" valign="top">Administrative Methods </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Managing Databases in Environments</td>
+ <td width="40%" align="right" valign="top"> Managing Databases in Environments</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/JAVA/dbconfig.html b/db/docs/gsg/JAVA/dbconfig.html
index cf7d93bbe..f45dbce5d 100644
--- a/db/docs/gsg/JAVA/dbconfig.html
+++ b/db/docs/gsg/JAVA/dbconfig.html
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <title>Chapter 6. Database Configuration</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Chapter 6. Database Configuration</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
@@ -15,12 +15,12 @@
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
- <th colspan="3" align="center">Chapter 6. Database Configuration</th>
+ <th colspan="3" align="center">Chapter 6. Database Configuration</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="javaindexusage.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="cachesize.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="javaindexusage.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="cachesize.html">Next</a></td>
</tr>
</table>
<hr />
@@ -29,7 +29,7 @@
<div class="titlepage">
<div>
<div>
- <h2 class="title"><a id="dbconfig"></a>Chapter 6. Database Configuration</h2>
+ <h2 class="title"><a id="dbconfig"></a>Chapter 6. Database Configuration</h2>
</div>
</div>
<div></div>
@@ -379,18 +379,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="javaindexusage.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="javaindexusage.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="cachesize.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="cachesize.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Secondary Database Example </td>
+ <td width="40%" align="left" valign="top">Secondary Database Example </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Selecting the Cache Size</td>
+ <td width="40%" align="right" valign="top"> Selecting the Cache Size</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/JAVA/dbtJavaUsage.html b/db/docs/gsg/JAVA/dbtJavaUsage.html
index 69d46266d..a3ed65a53 100644
--- a/db/docs/gsg/JAVA/dbtJavaUsage.html
+++ b/db/docs/gsg/JAVA/dbtJavaUsage.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Database Usage Example</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="DBEntry.html" title="Chapter 3. Database Records" />
+ <link rel="up" href="DBEntry.html" title="Chapter 3. Database Records" />
<link rel="previous" href="bindAPI.html" title="Using the BIND APIs" />
- <link rel="next" href="Cursors.html" title="Chapter 4. Using Cursors" />
+ <link rel="next" href="Cursors.html" title="Chapter 4. Using Cursors" />
</head>
<body>
<div class="navheader">
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Database Usage Example</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="bindAPI.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 3. Database Records</th>
- <td width="20%" align="right"> <a accesskey="n" href="Cursors.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="bindAPI.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 3. Database Records</th>
+ <td width="20%" align="right"> <a accesskey="n" href="Cursors.html">Next</a></td>
</tr>
</table>
<hr />
@@ -345,9 +345,9 @@ import java.io.FileNotFoundException; </pre>
// Needed for object serialization
private StoredClassCatalog classCatalog;</tt></b>
- private String vendordb = &quot;VendorDB.db&quot;;
- private String inventorydb = &quot;InventoryDB.db&quot;;
- <b class="userinput"><tt>private String classcatalogdb = &quot;ClassCatalogDB.db&quot;;</tt></b>
+ private String vendordb = "VendorDB.db";
+ private String inventorydb = "InventoryDB.db";
+ <b class="userinput"><tt>private String classcatalogdb = "ClassCatalogDB.db";</tt></b>
// Our constructor does nothing
public MyDbs() {} </pre>
@@ -370,31 +370,31 @@ import java.io.FileNotFoundException; </pre>
// Now open, or create and open, our databases
// Open the vendors and inventory databases
try {
- vendordb = databasesHome + &quot;/&quot; + vendordb;
+ vendordb = databasesHome + "/" + vendordb;
vendorDb = new Database(vendordb,
null,
myDbConfig);
- inventorydb = databasesHome + &quot;/&quot; + inventorydb;
+ inventorydb = databasesHome + "/" + inventorydb;
inventoryDb = new Database(inventorydb,
null,
myDbConfig);
<b class="userinput"><tt>// Open the class catalog db. This is used to
// optimize class serialization.
- classcatalogdb = databasesHome + &quot;/&quot; + classcatalogdb;
+ classcatalogdb = databasesHome + "/" + classcatalogdb;
classCatalogDb = new Database(classcatalogdb,
null,
myDbConfig); </tt></b>
} catch(FileNotFoundException fnfe) {
- System.err.println(&quot;MyDbs: &quot; + fnfe.toString());
+ System.err.println("MyDbs: " + fnfe.toString());
System.exit(-1);
}
} </pre>
<p>
Finally we need a getter method to return the class catalog. Note that we do not provide a getter for
- the catalog database itself &#8211; our application has no need for that.
+ the catalog database itself – our application has no need for that.
</p>
<p>
We also update our <tt class="methodname">close()</tt> to close our class catalog.
@@ -434,7 +434,7 @@ import java.io.FileNotFoundException; </pre>
classCatalogDb.close();
}</tt></b>
} catch(DatabaseException dbe) {
- System.err.println(&quot;Error closing MyDbs: &quot; +
+ System.err.println("Error closing MyDbs: " +
dbe.toString());
System.exit(-1);
}
@@ -491,9 +491,9 @@ import com.sleepycat.db.DatabaseException; </pre>
<a id="java_dbt25"></a>
<pre class="programlisting">public class ExampleDatabaseLoad {
- private static String myDbsPath = &quot;./&quot;;
- private static File inventoryFile = new File(&quot;./inventory.txt&quot;);
- private static File vendorsFile = new File(&quot;./vendors.txt&quot;);
+ private static String myDbsPath = "./";
+ private static File inventoryFile = new File("./inventory.txt");
+ private static File vendorsFile = new File("./vendors.txt");
// DatabaseEntries used for loading records
private static DatabaseEntry theKey = new DatabaseEntry();
@@ -517,8 +517,8 @@ import com.sleepycat.db.DatabaseException; </pre>
handles for you.</p>
<a id="java_dbt26"></a>
<pre class="programlisting"> private static void usage() {
- System.out.println(&quot;ExampleDatabaseLoad [-h &lt;database home&gt;]&quot;);
- System.out.println(&quot; [-s &lt;selections file&gt;] [-v &lt;vendors file&gt;]&quot;);
+ System.out.println("ExampleDatabaseLoad [-h &lt;database home&gt;]");
+ System.out.println(" [-s &lt;selections file&gt;] [-v &lt;vendors file&gt;]");
System.exit(-1);
}
@@ -527,15 +527,15 @@ import com.sleepycat.db.DatabaseException; </pre>
try {
edl.run(args);
} catch (DatabaseException dbe) {
- System.err.println(&quot;ExampleDatabaseLoad: &quot; + dbe.toString());
+ System.err.println("ExampleDatabaseLoad: " + dbe.toString());
dbe.printStackTrace();
} catch (Exception e) {
- System.out.println(&quot;Exception: &quot; + e.toString());
+ System.out.println("Exception: " + e.toString());
e.printStackTrace();
} finally {
myDbs.close();
}
- System.out.println(&quot;All done.&quot;);
+ System.out.println("All done.");
} </pre>
<p>Next we write the <tt class="methodname">ExampleDatabaseLoad.run()</tt>
method. This method is responsible for initializing all objects.
@@ -551,9 +551,9 @@ import com.sleepycat.db.DatabaseException; </pre>
myDbs.setup(myDbsPath); // path to the environment home
- System.out.println(&quot;loading vendors db.&quot;);
+ System.out.println("loading vendors db.");
loadVendorsDb();
- System.out.println(&quot;loading inventory db.&quot;);
+ System.out.println("loading inventory db.");
loadInventoryDb();
} </pre>
<p>This next method loads the vendor database. This method
@@ -592,7 +592,7 @@ import com.sleepycat.db.DatabaseException; </pre>
// ASSUMES THE VENDOR'S NAME IS UNIQUE!
String vendorName = theVendor.getVendorName();
try {
- theKey = new DatabaseEntry(vendorName.getBytes(&quot;UTF-8&quot;));
+ theKey = new DatabaseEntry(vendorName.getBytes("UTF-8"));
} catch (IOException willNeverOccur) {}
// Convert the Vendor object to a DatabaseEntry object
@@ -626,7 +626,7 @@ import com.sleepycat.db.DatabaseException; </pre>
String[] sArray = (String[])inventoryArray.get(i);
String sku = sArray[1];
try {
- theKey = new DatabaseEntry(sku.getBytes(&quot;UTF-8&quot;));
+ theKey = new DatabaseEntry(sku.getBytes("UTF-8"));
} catch (IOException willNeverOccur) {}
Inventory theInventory = new Inventory();
@@ -684,18 +684,18 @@ import com.sleepycat.db.DatabaseException; </pre>
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="bindAPI.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="bindAPI.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="DBEntry.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="Cursors.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="Cursors.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Using the BIND APIs </td>
+ <td width="40%" align="left" valign="top">Using the BIND APIs </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Chapter 4. Using Cursors</td>
+ <td width="40%" align="right" valign="top"> Chapter 4. Using Cursors</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/JAVA/environments.html b/db/docs/gsg/JAVA/environments.html
index 95107b29c..b75813c6b 100644
--- a/db/docs/gsg/JAVA/environments.html
+++ b/db/docs/gsg/JAVA/environments.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Environments</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="introduction.html" title="Chapter 1. Introduction to Berkeley DB " />
+ <link rel="up" href="introduction.html" title="Chapter 1. Introduction to Berkeley DB " />
<link rel="previous" href="databaseLimits.html" title="Database Limits and Portability" />
<link rel="next" href="coreExceptions.html" title="Exception Handling" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Environments</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="databaseLimits.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 1. Introduction to Berkeley DB </th>
- <td width="20%" align="right"> <a accesskey="n" href="coreExceptions.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="databaseLimits.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 1. Introduction to Berkeley DB </th>
+ <td width="20%" align="right"> <a accesskey="n" href="coreExceptions.html">Next</a></td>
</tr>
</table>
<hr />
@@ -116,7 +116,7 @@
obtain a high-degree of recoverability in the face of an
application or system crash. Once enabled, the logging subsystem
allows the application to perform two kinds of recovery
- (&quot;normal&quot; and &quot;catastrophic&quot;) through the use of the information
+ ("normal" and "catastrophic") through the use of the information
contained in the log files.
</p>
</li>
@@ -132,18 +132,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="databaseLimits.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="databaseLimits.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="introduction.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="coreExceptions.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="coreExceptions.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Database Limits and Portability </td>
+ <td width="40%" align="left" valign="top">Database Limits and Portability </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Exception Handling</td>
+ <td width="40%" align="right" valign="top"> Exception Handling</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/JAVA/gettingit.html b/db/docs/gsg/JAVA/gettingit.html
index c84496093..a04c82710 100644
--- a/db/docs/gsg/JAVA/gettingit.html
+++ b/db/docs/gsg/JAVA/gettingit.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Getting and Using DB </title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="introduction.html" title="Chapter 1. Introduction to Berkeley DB " />
+ <link rel="up" href="introduction.html" title="Chapter 1. Introduction to Berkeley DB " />
<link rel="previous" href="returns.html" title="Error Returns" />
- <link rel="next" href="DB.html" title="Chapter 2. Databases" />
+ <link rel="next" href="DB.html" title="Chapter 2. Databases" />
</head>
<body>
<div class="navheader">
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Getting and Using DB </th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="returns.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 1. Introduction to Berkeley DB </th>
- <td width="20%" align="right"> <a accesskey="n" href="DB.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="returns.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 1. Introduction to Berkeley DB </th>
+ <td width="20%" align="right"> <a accesskey="n" href="DB.html">Next</a></td>
</tr>
</table>
<hr />
@@ -58,18 +58,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="returns.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="returns.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="introduction.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="DB.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="DB.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Error Returns </td>
+ <td width="40%" align="left" valign="top">Error Returns </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Chapter 2. Databases</td>
+ <td width="40%" align="right" valign="top"> Chapter 2. Databases</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/JAVA/index.html b/db/docs/gsg/JAVA/index.html
index 8e7bfdf61..fbd9b617e 100644
--- a/db/docs/gsg/JAVA/index.html
+++ b/db/docs/gsg/JAVA/index.html
@@ -1,8 +1,8 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Getting Started with Berkeley DB</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
@@ -16,9 +16,9 @@
<th colspan="3" align="center">Getting Started with Berkeley DB</th>
</tr>
<tr>
- <td width="20%" align="left"> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="preface.html">Next</a></td>
+ <td width="20%" align="left"> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="preface.html">Next</a></td>
</tr>
</table>
<hr />
@@ -27,7 +27,7 @@
<div class="titlepage">
<div>
<div>
- <h1 class="title"><a id="id650925"></a>Getting Started with Berkeley DB</h1>
+ <h1 class="title"><a id="id613741"></a>Getting Started with Berkeley DB</h1>
</div>
<div>
<div class="legalnotice">
@@ -37,7 +37,7 @@
<p>
This documentation is distributed under an open source license.
You may review the terms of this license at:
- <a href="http://www.oracle.com/technology/software/products/berkeley-db/htdocs/oslicensing.html" target="_top">http://www.oracle.com/technology/software/products/berkeley-db/htdocs/oslicensing.html</a>
+ <a href="http://www.oracle.com/technology/software/products/berkeley-db/htdocs/oslicense.html" target="_top">http://www.oracle.com/technology/software/products/berkeley-db/htdocs/oslicense.html</a>
</p>
@@ -47,12 +47,12 @@
and
Sleepycat are trademarks or registered trademarks of
- Oracle Corporation. All rights to these marks are reserved.
+ Oracle. All rights to these marks are reserved.
No third-party use is permitted without the
- express prior written consent of Oracle Corporation.
+ express prior written consent of Oracle.
</p>
<p>
- <span class="trademark">Java</span>&#8482; and all Java-based marks are a trademark
+ <span class="trademark">Java</span>â„¢ and all Java-based marks are a trademark
or registered trademark of Sun Microsystems,
Inc, in the United States and other countries.
</p>
@@ -66,7 +66,7 @@
</div>
</div>
<div>
- <p class="pubdate">9/20/2006</p>
+ <p class="pubdate">6/30/2007</p>
</div>
</div>
<div></div>
@@ -357,6 +357,15 @@
</a>
</span>
</dt>
+ <dd>
+ <dl>
+ <dt>
+ <span class="sect2">
+ <a href="keyCreator.html#multikeys">Working with Multiple Keys</a>
+ </span>
+ </dt>
+ </dl>
+ </dd>
<dt>
<span class="sect1">
<a href="secondaryProps.html">Secondary Database Properties</a>
@@ -506,14 +515,14 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"> </td>
- <td width="20%" align="center"> </td>
- <td width="40%" align="right"> <a accesskey="n" href="preface.html">Next</a></td>
+ <td width="40%" align="left"> </td>
+ <td width="20%" align="center"> </td>
+ <td width="40%" align="right"> <a accesskey="n" href="preface.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top"> </td>
- <td width="20%" align="center"> </td>
- <td width="40%" align="right" valign="top"> Preface</td>
+ <td width="40%" align="left" valign="top"> </td>
+ <td width="20%" align="center"> </td>
+ <td width="40%" align="right" valign="top"> Preface</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/JAVA/indexes.html b/db/docs/gsg/JAVA/indexes.html
index 59182ab2e..3b6c3e94b 100644
--- a/db/docs/gsg/JAVA/indexes.html
+++ b/db/docs/gsg/JAVA/indexes.html
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <title>Chapter 5. Secondary Databases</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Chapter 5. Secondary Databases</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
@@ -15,12 +15,12 @@
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
- <th colspan="3" align="center">Chapter 5. Secondary Databases</th>
+ <th colspan="3" align="center">Chapter 5. Secondary Databases</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="cursorJavaUsage.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="keyCreator.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="cursorJavaUsage.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="keyCreator.html">Next</a></td>
</tr>
</table>
<hr />
@@ -29,7 +29,7 @@
<div class="titlepage">
<div>
<div>
- <h2 class="title"><a id="indexes"></a>Chapter 5. Secondary Databases</h2>
+ <h2 class="title"><a id="indexes"></a>Chapter 5. Secondary Databases</h2>
</div>
</div>
<div></div>
@@ -52,6 +52,15 @@
</a>
</span>
</dt>
+ <dd>
+ <dl>
+ <dt>
+ <span class="sect2">
+ <a href="keyCreator.html#multikeys">Working with Multiple Keys</a>
+ </span>
+ </dt>
+ </dl>
+ </dd>
<dt>
<span class="sect1">
<a href="secondaryProps.html">Secondary Database Properties</a>
@@ -128,7 +137,7 @@
people such as names, addresses, phone numbers, and so forth.
While your application may frequently want to query a person by user
ID (that is, by the information stored in the key), it may also on occasion
- want to location people by, say, their name.
+ want to locate people by, say, their name.
</p>
<p>
Rather than iterate through all of the records in your database, examining
@@ -318,7 +327,7 @@ mySecConfig.setSortedDuplicates(true);
Database myDb = null;
SecondaryDatabase mySecDb = null;
try {
- String dbName = &quot;myPrimaryDatabase&quot;;
+ String dbName = "myPrimaryDatabase";
myDb = new Database(dbName, null, myDbConfig);
@@ -335,7 +344,7 @@ try {
mySecConfig.setKeyCreator(keyCreator);
// Perform the actual open
- String secDbName = &quot;mySecondaryDatabase&quot;;
+ String secDbName = "mySecondaryDatabase";
mySecDb = new SecondaryDatabase(secDbName, null, myDb, mySecConfig);
} catch (DatabaseException de) {
// Exception handling goes here ...
@@ -364,18 +373,18 @@ try {
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="cursorJavaUsage.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="cursorJavaUsage.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="keyCreator.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="keyCreator.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Cursor Example </td>
+ <td width="40%" align="left" valign="top">Cursor Example </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Implementing Key
+ <td width="40%" align="right" valign="top"> Implementing Key
Creators
</td>
diff --git a/db/docs/gsg/JAVA/introduction.html b/db/docs/gsg/JAVA/introduction.html
index fad63309c..7969e765b 100644
--- a/db/docs/gsg/JAVA/introduction.html
+++ b/db/docs/gsg/JAVA/introduction.html
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <title>Chapter 1. Introduction to Berkeley DB </title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Chapter 1. Introduction to Berkeley DB </title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
@@ -15,12 +15,12 @@
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
- <th colspan="3" align="center">Chapter 1. Introduction to Berkeley DB </th>
+ <th colspan="3" align="center">Chapter 1. Introduction to Berkeley DB </th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="preface.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="concepts.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="preface.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="concepts.html">Next</a></td>
</tr>
</table>
<hr />
@@ -29,7 +29,7 @@
<div class="titlepage">
<div>
<div>
- <h2 class="title"><a id="introduction"></a>Chapter 1. Introduction to Berkeley DB </h2>
+ <h2 class="title"><a id="introduction"></a>Chapter 1. Introduction to Berkeley DB </h2>
</div>
</div>
<div></div>
@@ -215,18 +215,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="preface.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="preface.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="concepts.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="concepts.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Preface </td>
+ <td width="40%" align="left" valign="top">Preface </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Berkeley DB Concepts</td>
+ <td width="40%" align="right" valign="top"> Berkeley DB Concepts</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/JAVA/javaindexusage.html b/db/docs/gsg/JAVA/javaindexusage.html
index ddb17114d..897d83c13 100644
--- a/db/docs/gsg/JAVA/javaindexusage.html
+++ b/db/docs/gsg/JAVA/javaindexusage.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Secondary Database Example</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="indexes.html" title="Chapter 5. Secondary Databases" />
+ <link rel="up" href="indexes.html" title="Chapter 5. Secondary Databases" />
<link rel="previous" href="joins.html" title="Database Joins" />
- <link rel="next" href="dbconfig.html" title="Chapter 6. Database Configuration" />
+ <link rel="next" href="dbconfig.html" title="Chapter 6. Database Configuration" />
</head>
<body>
<div class="navheader">
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Secondary Database Example</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="joins.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 5. Secondary Databases</th>
- <td width="20%" align="right"> <a accesskey="n" href="dbconfig.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="joins.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 5. Secondary Databases</th>
+ <td width="20%" align="right"> <a accesskey="n" href="dbconfig.html">Next</a></td>
</tr>
</table>
<hr />
@@ -110,7 +110,7 @@ public class ItemNameKeyCreator implements SecondaryKeyCreator {
(Inventory) theBinding.entryToObject(dataEntry);
// Get the item name and use that as the key
String theItem = inventoryItem.getItemName();
- resultEntry.setData(theItem.getBytes(&quot;UTF-8&quot;));
+ resultEntry.setData(theItem.getBytes("UTF-8"));
} catch (IOException willNeverOccur) {}
return true;
@@ -170,10 +170,10 @@ public class MyDbs {
private Database classCatalogDb = null;
<b class="userinput"><tt>private SecondaryDatabase itemNameIndexDb = null;</tt></b>
- private String vendordb = &quot;VendorDB.db&quot;;
- private String inventorydb = &quot;InventoryDB.db&quot;;
- private String classcatalogdb = &quot;ClassCatalogDB.db&quot;;
- <b class="userinput"><tt>private String itemnameindexdb = &quot;ItemNameIndexDB.db&quot;;</tt></b>
+ private String vendordb = "VendorDB.db";
+ private String inventorydb = "InventoryDB.db";
+ private String classcatalogdb = "ClassCatalogDB.db";
+ <b class="userinput"><tt>private String itemnameindexdb = "ItemNameIndexDB.db";</tt></b>
// Needed for object serialization
private StoredClassCatalog classCatalog;
@@ -197,8 +197,8 @@ public class MyDbs {
myDbConfig.setErrorStream(System.err);
<b class="userinput"><tt>mySecConfig.setErrorStream(System.err);</tt></b>
- myDbConfig.setErrorPrefix(&quot;MyDbs&quot;);
- <b class="userinput"><tt>mySecConfig.setErrorPrefix(&quot;MyDbs&quot;);</tt></b>
+ myDbConfig.setErrorPrefix("MyDbs");
+ <b class="userinput"><tt>mySecConfig.setErrorPrefix("MyDbs");</tt></b>
myDbConfig.setType(DatabaseType.BTREE);
<b class="userinput"><tt>mySecConfig.setType(DatabaseType.BTREE);</tt></b>
myDbConfig.setAllowCreate(true);
@@ -207,24 +207,24 @@ public class MyDbs {
// Now open, or create and open, our databases
// Open the vendors and inventory databases
try {
- vendordb = databasesHome + &quot;/&quot; + vendordb;
+ vendordb = databasesHome + "/" + vendordb;
vendorDb = new Database(vendordb,
null,
myDbConfig);
- inventorydb = databasesHome + &quot;/&quot; + inventorydb;
+ inventorydb = databasesHome + "/" + inventorydb;
inventoryDb = new Database(inventorydb,
null,
myDbConfig);
// Open the class catalog db. This is used to
// optimize class serialization.
- classcatalogdb = databasesHome + &quot;/&quot; + classcatalogdb;
+ classcatalogdb = databasesHome + "/" + classcatalogdb;
classCatalogDb = new Database(classcatalogdb,
null,
myDbConfig);
} catch(FileNotFoundException fnfe) {
- System.err.println(&quot;MyDbs: &quot; + fnfe.toString());
+ System.err.println("MyDbs: " + fnfe.toString());
System.exit(-1);
}
@@ -252,13 +252,13 @@ public class MyDbs {
mySecConfig.setKeyCreator(keyCreator);
// Now open it
try {
- itemnameindexdb = databasesHome + &quot;/&quot; + itemnameindexdb;
+ itemnameindexdb = databasesHome + "/" + itemnameindexdb;
itemNameIndexDb = new SecondaryDatabase(itemnameindexdb,
null,
inventoryDb,
mySecConfig);
} catch(FileNotFoundException fnfe) {
- System.err.println(&quot;MyDbs: &quot; + fnfe.toString());
+ System.err.println("MyDbs: " + fnfe.toString());
System.exit(-1);
}</tt></b>
}
@@ -295,7 +295,7 @@ public class MyDbs {
}
} catch(DatabaseException dbe) {
- System.err.println(&quot;Error closing MyDbs: &quot; +
+ System.err.println("Error closing MyDbs: " +
dbe.toString());
System.exit(-1);
}
@@ -374,7 +374,7 @@ import com.sleepycat.db.OperationStatus;
<a id="java_index17"></a>
<pre class="programlisting"> public class ExampleDatabaseRead {
- private static String myDbsPath = &quot;./&quot;;
+ private static String myDbsPath = "./";
// Encapsulates the database environment and databases.
private static MyDbs myDbs = new MyDbs();
@@ -421,7 +421,7 @@ import com.sleepycat.db.OperationStatus;
// searchKey is the key that we want to find in the
// secondary db.
DatabaseEntry searchKey =
- new DatabaseEntry(locateItem.getBytes(&quot;UTF-8&quot;));
+ new DatabaseEntry(locateItem.getBytes("UTF-8"));
// foundKey and foundData are populated from the primary
// entry that is associated with the secondary db key.
@@ -447,7 +447,7 @@ import com.sleepycat.db.OperationStatus;
foundData, LockMode.DEFAULT);
}
} catch (Exception e) {
- System.err.println(&quot;Error on inventory secondary cursor:&quot;);
+ System.err.println("Error on inventory secondary cursor:");
System.err.println(e.toString());
e.printStackTrace();
} finally {
@@ -474,18 +474,18 @@ import com.sleepycat.db.OperationStatus;
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="joins.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="joins.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="indexes.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="dbconfig.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="dbconfig.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Database Joins </td>
+ <td width="40%" align="left" valign="top">Database Joins </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Chapter 6. Database Configuration</td>
+ <td width="40%" align="right" valign="top"> Chapter 6. Database Configuration</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/JAVA/joins.html b/db/docs/gsg/JAVA/joins.html
index 15a0654e3..d43f9e6e1 100644
--- a/db/docs/gsg/JAVA/joins.html
+++ b/db/docs/gsg/JAVA/joins.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Database Joins</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="indexes.html" title="Chapter 5. Secondary Databases" />
+ <link rel="up" href="indexes.html" title="Chapter 5. Secondary Databases" />
<link rel="previous" href="secondaryCursor.html" title="&#10; Using Secondary Cursors&#10; &#10; " />
<link rel="next" href="javaindexusage.html" title="Secondary Database Example" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Database Joins</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="secondaryCursor.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 5. Secondary Databases</th>
- <td width="20%" align="right"> <a accesskey="n" href="javaindexusage.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="secondaryCursor.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 5. Secondary Databases</th>
+ <td width="20%" align="right"> <a accesskey="n" href="javaindexusage.html">Next</a></td>
</tr>
</table>
<hr />
@@ -104,7 +104,6 @@
using a
<span><tt class="classname">JoinCursor</tt> class instance.</span>
-
</p>
<div class="sect2" lang="en" xml:lang="en">
<div class="titlepage">
@@ -183,7 +182,6 @@
</div>
<p>
For example:
-
</p>
<a id="java_index9"></a>
<pre class="programlisting">package db.GettingStarted;
@@ -212,9 +210,9 @@ SecondaryDatabase automotiveTypeDB = null;
SecondaryDatabase automotiveMakeDB = null;
// Query strings:
-String theColor = &quot;red&quot;;
-String theType = &quot;minivan&quot;;
-String theMake = &quot;Toyota&quot;;
+String theColor = "red";
+String theType = "minivan";
+String theMake = "Toyota";
// Secondary cursors used for the query:
SecondaryCursor colorSecCursor = null;
@@ -233,9 +231,9 @@ DatabaseEntry foundData = new DatabaseEntry();
try {
// Database entries used for the query:
- DatabaseEntry color = new DatabaseEntry(theColor.getBytes(&quot;UTF-8&quot;));
- DatabaseEntry type = new DatabaseEntry(theType.getBytes(&quot;UTF-8&quot;));
- DatabaseEntry make = new DatabaseEntry(theMake.getBytes(&quot;UTF-8&quot;));
+ DatabaseEntry color = new DatabaseEntry(theColor.getBytes("UTF-8"));
+ DatabaseEntry type = new DatabaseEntry(theType.getBytes("UTF-8"));
+ DatabaseEntry make = new DatabaseEntry(theMake.getBytes("UTF-8"));
colorSecCursor = automotiveColorDB.openSecondaryCursor(null, null);
typeSecCursor = automotiveTypeDB.openSecondaryCursor(null, null);
@@ -346,21 +344,21 @@ JoinCursor joinCursor = myDb.join(cursorArray, config); </pre>
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="secondaryCursor.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="secondaryCursor.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="indexes.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="javaindexusage.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="javaindexusage.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">
Using Secondary Cursors
-  </td>
+  </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Secondary Database Example</td>
+ <td width="40%" align="right" valign="top"> Secondary Database Example</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/JAVA/keyCreator.html b/db/docs/gsg/JAVA/keyCreator.html
index 09f087522..3ea8f0239 100644
--- a/db/docs/gsg/JAVA/keyCreator.html
+++ b/db/docs/gsg/JAVA/keyCreator.html
@@ -1,8 +1,8 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Implementing Key
Creators
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="indexes.html" title="Chapter 5. Secondary Databases" />
- <link rel="previous" href="indexes.html" title="Chapter 5. Secondary Databases" />
+ <link rel="up" href="indexes.html" title="Chapter 5. Secondary Databases" />
+ <link rel="previous" href="indexes.html" title="Chapter 5. Secondary Databases" />
<link rel="next" href="secondaryProps.html" title="Secondary Database Properties" />
</head>
<body>
@@ -24,9 +24,9 @@
</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="indexes.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 5. Secondary Databases</th>
- <td width="20%" align="right"> <a accesskey="n" href="secondaryProps.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="indexes.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 5. Secondary Databases</th>
+ <td width="20%" align="right"> <a accesskey="n" href="secondaryProps.html">Next</a></td>
</tr>
</table>
<hr />
@@ -159,9 +159,9 @@ public class FullNameKeyCreator implements SecondaryKeyCreator {
try {
PersonData pd =
(PersonData) theBinding.entryToObject(dataEntry);
- String fullName = pd.getFamiliarName() + &quot; &quot; +
+ String fullName = pd.getFamiliarName() + " " +
pd.getSurname();
- resultEntry.setData(fullName.getBytes(&quot;UTF-8&quot;));
+ resultEntry.setData(fullName.getBytes("UTF-8"));
} catch (IOException willNeverOccur) {}
return true;
}
@@ -195,7 +195,7 @@ try {
mySecConfig.setType(DatabaseType.BTREE);
//Perform the actual open
- String secDbName = &quot;mySecondaryDatabase&quot;;
+ String secDbName = "mySecondaryDatabase";
mySecDb = new SecondaryDatabase(secDbName, null, myDb, mySecConfig);
} catch (DatabaseException de) {
// Exception handling goes here
@@ -214,23 +214,108 @@ try {
// Exception handling goes here
}
}</pre>
+ <div class="sect2" lang="en" xml:lang="en">
+ <div class="titlepage">
+ <div>
+ <div>
+ <h3 class="title"><a id="multikeys"></a>Working with Multiple Keys</h3>
+ </div>
+ </div>
+ <div></div>
+ </div>
+ <p>
+ Until now we have only discussed indexes as if there is
+ a one-to-one relationship between the secondary key and
+ the primary database record. In fact, it is possible to
+ generate multiple keys for any given record, provided
+ that you take appropriate steps in your key creator
+ to do so.
+ </p>
+ <p>
+ For example, suppose you had a database that contained
+ information about books. Suppose further that you
+ sometimes want to look up books by author. Because
+ sometimes books have multiple authors, you may want to
+ return multiple secondary keys for every book that you
+ index.
+ </p>
+ <p>
+ To do this, you write a key creator that implements
+ <tt class="classname">SecondaryMultiKeyCreator</tt>
+ instead of
+ <tt class="classname">SecondaryKeyCreator</tt>. The key
+ difference between the two is that
+ <tt class="classname">SecondaryKeyCreator</tt>
+ uses a single <tt class="classname">DatabaseEntry</tt>
+ object as the result, while
+ <tt class="classname">SecondaryMultiKeyCreator</tt>
+ returns a set of <tt class="classname">DatabaseEntry</tt>
+ objects (using <tt class="classname">java.util.Set</tt>).
+ Also, you assign the
+ <tt class="classname">SecondaryMultiKeyCreator</tt>
+ implementation using
+ <tt class="methodname">SecondaryConfig.setMultiKeyCreator()</tt>
+ instead of
+ <tt class="methodname">SecondaryConfig.setKeyCreator()</tt>.
+ </p>
+ <p>
+ For example:
+ </p>
+ <pre class="programlisting">package db.GettingStarted;
+
+import com.sleepycat.db.DatabaseEntry;
+import com.sleepycat.db.DatabaseException;
+import com.sleepycat.db.SecondaryDatabase;
+import com.sleepycat.db.SecondaryMultiKeyCreator;
+
+import java.util.HashSet;
+import java.util.Set;
+
+public class MyMultiKeyCreator implements SecondaryMultiKeyCreator {
+
+ // Constructor not implemented. How this is implemented depends on
+ // how you want to extract the data for your keys.
+ MyMultiKeyCreator() {
+ ...
+ }
+
+ // Abstract method that we must implement
+ public void createSecondaryKeys(SecondaryDatabase secDb,
+ DatabaseEntry keyEntry, // From the primary
+ DatabaseEntry dataEntry, // From the primary
+ Set results) // Results set
+ throws DatabaseException {
+
+ try {
+ // Create your keys, adding each to the set
+
+ // Creation of key 'a' not shown
+ results.add(a)
+
+ // Creation of key 'b' not shown
+ results.add(b)
+
+ } catch (IOException willNeverOccur) {}
+ }
+} </pre>
+ </div>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="indexes.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="indexes.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="indexes.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="secondaryProps.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="secondaryProps.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Chapter 5. Secondary Databases </td>
+ <td width="40%" align="left" valign="top">Chapter 5. Secondary Databases </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Secondary Database Properties</td>
+ <td width="40%" align="right" valign="top"> Secondary Database Properties</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/JAVA/preface.html b/db/docs/gsg/JAVA/preface.html
index afd10d9f0..f32ee8247 100644
--- a/db/docs/gsg/JAVA/preface.html
+++ b/db/docs/gsg/JAVA/preface.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Preface</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
<link rel="up" href="index.html" title="Getting Started with Berkeley DB" />
<link rel="previous" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="next" href="introduction.html" title="Chapter 1. Introduction to Berkeley DB " />
+ <link rel="next" href="introduction.html" title="Chapter 1. Introduction to Berkeley DB " />
</head>
<body>
<div class="navheader">
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Preface</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="index.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="introduction.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="index.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="introduction.html">Next</a></td>
</tr>
</table>
<hr />
@@ -58,15 +58,21 @@
<p>
Welcome to Berkeley DB (DB). This document introduces
- <span>DB, version 4.5. </span>
+ <span>DB, version 4.6. </span>
+
It is intended
to provide a rapid introduction to the DB API set and related concepts. The goal of this document is
to provide you with an efficient mechanism
with which you can evaluate DB against your project's technical requirements. As such, this document is
- intended for <span>Java</span>
+ intended for <span>Java</span>
+
developers and senior software architects who are
- looking for an in-process data management solution. No prior
- experience with Berkeley DB is expected or required.
+ looking for an
+ <span>
+ in-process data management solution.
+ </span>
+
+ No prior experience with Berkeley DB is expected or required.
</p>
<div class="sect1" lang="en" xml:lang="en">
<div class="titlepage">
@@ -86,14 +92,19 @@
- <span>&quot;The <tt class="methodname">Database()</tt>
- constructor returns a <tt class="classname">Database</tt> class object.&quot;</span>
+ <span>"The <tt class="methodname">Database()</tt>
+ constructor returns a <tt class="classname">Database</tt> class object."</span>
+
+
</p>
<p>
- Variable or non-literal text is presented in <span class="emphasis"><em>italics</em></span>. For example: &quot;Go to your
- <span class="emphasis"><em>DB_INSTALL</em></span> directory.&quot;
+ Variable or non-literal text is presented in <span class="emphasis"><em>italics</em></span>. For example: "Go to your
+
+ <span class="emphasis"><em>DB_INSTALL</em></span>
+
+ directory."
</p>
<p>
Program examples are displayed in a <tt class="classname">monospaced font</tt> on a shaded background.
@@ -118,7 +129,7 @@ import com.sleepycat.db.DatabaseConfig;
// Allow the database to be created.
DatabaseConfig myDbConfig = new DatabaseConfig();
myDbConfig.setAllowCreate(true);
-<b class="userinput"><tt>Database myDb = new Database(&quot;mydb.db&quot;, null, myDbConfig);</tt></b> </pre>
+<b class="userinput"><tt>Database myDb = new Database("mydb.db", null, myDbConfig);</tt></b> </pre>
<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
<h3 class="title">Note</h3>
<p>
@@ -150,6 +161,8 @@ myDbConfig.setAllowCreate(true);
<a href="http://www.oracle.com/technology/documentation/berkeley-db/db/gsg_txn/JAVA/index.html" target="_top">
Getting Started with Transaction Processing for Java
</a>
+
+
</p>
</li>
<li>
@@ -176,6 +189,8 @@ myDbConfig.setAllowCreate(true);
Berkeley DB Javadoc
</a>
+
+
</p>
</li>
<li>
@@ -195,18 +210,18 @@ myDbConfig.setAllowCreate(true);
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="index.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="index.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="introduction.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="introduction.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Getting Started with Berkeley DB </td>
+ <td width="40%" align="left" valign="top">Getting Started with Berkeley DB </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Chapter 1. Introduction to Berkeley DB </td>
+ <td width="40%" align="right" valign="top"> Chapter 1. Introduction to Berkeley DB </td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/JAVA/readSecondary.html b/db/docs/gsg/JAVA/readSecondary.html
index e50d31a5f..dd93b1e23 100644
--- a/db/docs/gsg/JAVA/readSecondary.html
+++ b/db/docs/gsg/JAVA/readSecondary.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Reading Secondary Databases</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="indexes.html" title="Chapter 5. Secondary Databases" />
+ <link rel="up" href="indexes.html" title="Chapter 5. Secondary Databases" />
<link rel="previous" href="secondaryProps.html" title="Secondary Database Properties" />
<link rel="next" href="secondaryDelete.html" title="Deleting Secondary Database Records" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Reading Secondary Databases</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="secondaryProps.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 5. Secondary Databases</th>
- <td width="20%" align="right"> <a accesskey="n" href="secondaryDelete.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="secondaryProps.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 5. Secondary Databases</th>
+ <td width="20%" align="right"> <a accesskey="n" href="secondaryDelete.html">Next</a></td>
</tr>
</table>
<hr />
@@ -68,9 +68,9 @@ try {
// Omitting all database opens
...
- String searchName = &quot;John Doe&quot;;
+ String searchName = "John Doe";
DatabaseEntry searchKey =
- new DatabaseEntry(searchName.getBytes(&quot;UTF-8&quot;));
+ new DatabaseEntry(searchName.getBytes("UTF-8"));
DatabaseEntry primaryKey = new DatabaseEntry();
DatabaseEntry primaryData = new DatabaseEntry();
@@ -105,18 +105,18 @@ try {
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="secondaryProps.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="secondaryProps.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="indexes.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="secondaryDelete.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="secondaryDelete.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Secondary Database Properties </td>
+ <td width="40%" align="left" valign="top">Secondary Database Properties </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Deleting Secondary Database Records</td>
+ <td width="40%" align="right" valign="top"> Deleting Secondary Database Records</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/JAVA/returns.html b/db/docs/gsg/JAVA/returns.html
index 46433419f..ecec87fed 100644
--- a/db/docs/gsg/JAVA/returns.html
+++ b/db/docs/gsg/JAVA/returns.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Error Returns</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="introduction.html" title="Chapter 1. Introduction to Berkeley DB " />
+ <link rel="up" href="introduction.html" title="Chapter 1. Introduction to Berkeley DB " />
<link rel="previous" href="coreExceptions.html" title="Exception Handling" />
<link rel="next" href="gettingit.html" title="Getting and Using DB " />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Error Returns</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="coreExceptions.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 1. Introduction to Berkeley DB </th>
- <td width="20%" align="right"> <a accesskey="n" href="gettingit.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="coreExceptions.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 1. Introduction to Berkeley DB </th>
+ <td width="20%" align="right"> <a accesskey="n" href="gettingit.html">Next</a></td>
</tr>
</table>
<hr />
@@ -62,18 +62,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="coreExceptions.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="coreExceptions.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="introduction.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="gettingit.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="gettingit.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Exception Handling </td>
+ <td width="40%" align="left" valign="top">Exception Handling </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Getting and Using DB </td>
+ <td width="40%" align="right" valign="top"> Getting and Using DB </td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/JAVA/secondaryCursor.html b/db/docs/gsg/JAVA/secondaryCursor.html
index 49bfa6662..87e2d976e 100644
--- a/db/docs/gsg/JAVA/secondaryCursor.html
+++ b/db/docs/gsg/JAVA/secondaryCursor.html
@@ -1,8 +1,8 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>
Using Secondary Cursors
@@ -10,7 +10,7 @@
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="indexes.html" title="Chapter 5. Secondary Databases" />
+ <link rel="up" href="indexes.html" title="Chapter 5. Secondary Databases" />
<link rel="previous" href="secondaryDelete.html" title="Deleting Secondary Database Records" />
<link rel="next" href="joins.html" title="Database Joins" />
</head>
@@ -24,9 +24,9 @@
</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="secondaryDelete.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 5. Secondary Databases</th>
- <td width="20%" align="right"> <a accesskey="n" href="joins.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="secondaryDelete.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 5. Secondary Databases</th>
+ <td width="20%" align="right"> <a accesskey="n" href="joins.html">Next</a></td>
</tr>
</table>
<hr />
@@ -112,9 +112,9 @@ try {
// Database opens omitted for brevity
...
- String secondaryName = &quot;John Doe&quot;;
+ String secondaryName = "John Doe";
DatabaseEntry secondaryKey =
- new DatabaseEntry(secondaryName.getBytes(&quot;UTF-8&quot;));
+ new DatabaseEntry(secondaryName.getBytes("UTF-8"));
DatabaseEntry foundData = new DatabaseEntry();
@@ -138,18 +138,18 @@ try {
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="secondaryDelete.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="secondaryDelete.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="indexes.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="joins.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="joins.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Deleting Secondary Database Records </td>
+ <td width="40%" align="left" valign="top">Deleting Secondary Database Records </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Database Joins</td>
+ <td width="40%" align="right" valign="top"> Database Joins</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/JAVA/secondaryDelete.html b/db/docs/gsg/JAVA/secondaryDelete.html
index 115b65e99..52bf5e7e4 100644
--- a/db/docs/gsg/JAVA/secondaryDelete.html
+++ b/db/docs/gsg/JAVA/secondaryDelete.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Deleting Secondary Database Records</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="indexes.html" title="Chapter 5. Secondary Databases" />
+ <link rel="up" href="indexes.html" title="Chapter 5. Secondary Databases" />
<link rel="previous" href="readSecondary.html" title="Reading Secondary Databases" />
<link rel="next" href="secondaryCursor.html" title="&#10; Using Secondary Cursors&#10; &#10; " />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Deleting Secondary Database Records</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="readSecondary.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 5. Secondary Databases</th>
- <td width="20%" align="right"> <a accesskey="n" href="secondaryCursor.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="readSecondary.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 5. Secondary Databases</th>
+ <td width="20%" align="right"> <a accesskey="n" href="secondaryCursor.html">Next</a></td>
</tr>
</table>
<hr />
@@ -94,11 +94,11 @@ try {
// Omitting all database opens
...
- String searchName = &quot;John Doe&quot;;
+ String searchName = "John Doe";
DatabaseEntry searchKey =
- new DatabaseEntry(searchName.getBytes(&quot;UTF-8&quot;));
+ new DatabaseEntry(searchName.getBytes("UTF-8"));
- // Delete the first secondary record that uses &quot;John Doe&quot; as
+ // Delete the first secondary record that uses "John Doe" as
// a key. This causes the primary record referenced by this secondary
// record to be deleted.
OperationStatus retVal = mySecondaryDatabase.delete(null, searchKey);
@@ -110,18 +110,18 @@ try {
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="readSecondary.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="readSecondary.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="indexes.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="secondaryCursor.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="secondaryCursor.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Reading Secondary Databases </td>
+ <td width="40%" align="left" valign="top">Reading Secondary Databases </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> 
+ <td width="40%" align="right" valign="top"> 
Using Secondary Cursors
</td>
diff --git a/db/docs/gsg/JAVA/secondaryProps.html b/db/docs/gsg/JAVA/secondaryProps.html
index 986d9f97d..cc4132cec 100644
--- a/db/docs/gsg/JAVA/secondaryProps.html
+++ b/db/docs/gsg/JAVA/secondaryProps.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Secondary Database Properties</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="indexes.html" title="Chapter 5. Secondary Databases" />
+ <link rel="up" href="indexes.html" title="Chapter 5. Secondary Databases" />
<link rel="previous" href="keyCreator.html" title="Implementing Key &#10; Creators&#10; &#10; " />
<link rel="next" href="readSecondary.html" title="Reading Secondary Databases" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Secondary Database Properties</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="keyCreator.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 5. Secondary Databases</th>
- <td width="20%" align="right"> <a accesskey="n" href="readSecondary.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="keyCreator.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 5. Secondary Databases</th>
+ <td width="20%" align="right"> <a accesskey="n" href="readSecondary.html">Next</a></td>
</tr>
</table>
<hr />
@@ -70,21 +70,21 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="keyCreator.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="keyCreator.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="indexes.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="readSecondary.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="readSecondary.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">Implementing Key
Creators
-  </td>
+  </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Reading Secondary Databases</td>
+ <td width="40%" align="right" valign="top"> Reading Secondary Databases</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg/JAVA/usingDbt.html b/db/docs/gsg/JAVA/usingDbt.html
index 6d6253699..5339e3042 100644
--- a/db/docs/gsg/JAVA/usingDbt.html
+++ b/db/docs/gsg/JAVA/usingDbt.html
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Reading and Writing Database Records</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
- <link rel="up" href="DBEntry.html" title="Chapter 3. Database Records" />
- <link rel="previous" href="DBEntry.html" title="Chapter 3. Database Records" />
+ <link rel="up" href="DBEntry.html" title="Chapter 3. Database Records" />
+ <link rel="previous" href="DBEntry.html" title="Chapter 3. Database Records" />
<link rel="next" href="bindAPI.html" title="Using the BIND APIs" />
</head>
<body>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Reading and Writing Database Records</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="DBEntry.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 3. Database Records</th>
- <td width="20%" align="right"> <a accesskey="n" href="bindAPI.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="DBEntry.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 3. Database Records</th>
+ <td width="20%" align="right"> <a accesskey="n" href="bindAPI.html">Next</a></td>
</tr>
</table>
<hr />
@@ -157,12 +157,12 @@ import com.sleepycat.db.Database;
// Database opens omitted for clarity.
// Databases must NOT be opened read-only.
-String aKey = &quot;myFirstKey&quot;;
-String aData = &quot;myFirstData&quot;;
+String aKey = "myFirstKey";
+String aData = "myFirstData";
try {
- DatabaseEntry theKey = new DatabaseEntry(aKey.getBytes(&quot;UTF-8&quot;));
- DatabaseEntry theData = new DatabaseEntry(aData.getBytes(&quot;UTF-8&quot;));
+ DatabaseEntry theKey = new DatabaseEntry(aKey.getBytes("UTF-8"));
+ DatabaseEntry theData = new DatabaseEntry(aData.getBytes("UTF-8"));
myDatabase.put(null, theKey, theData);
} catch (Exception e) {
// Exception handling goes here
@@ -232,13 +232,13 @@ Database myDatabase = null;
// Database opens omitted for clarity.
// Database may be opened read-only.
-String aKey = &quot;myFirstKey&quot;;
+String aKey = "myFirstKey";
try {
// Create a pair of DatabaseEntry objects. theKey
// is used to perform the search. theData is used
// to store the data returned by the get() operation.
- DatabaseEntry theKey = new DatabaseEntry(aKey.getBytes(&quot;UTF-8&quot;));
+ DatabaseEntry theKey = new DatabaseEntry(aKey.getBytes("UTF-8"));
DatabaseEntry theData = new DatabaseEntry();
// Perform the get.
@@ -247,11 +247,11 @@ try {
// Recreate the data String.
byte[] retData = theData.getData();
- String foundData = new String(retData, &quot;UTF-8&quot;);
- System.out.println(&quot;For key: '&quot; + aKey + &quot;' found data: '&quot; +
- foundData + &quot;'.&quot;);
+ String foundData = new String(retData, "UTF-8");
+ System.out.println("For key: '" + aKey + "' found data: '" +
+ foundData + "'.");
} else {
- System.out.println(&quot;No record found for key '&quot; + aKey + &quot;'.&quot;);
+ System.out.println("No record found for key '" + aKey + "'.");
}
} catch (Exception e) {
// Exception handling goes here
@@ -298,8 +298,8 @@ Database myDatabase = null;
// Database can NOT be opened read-only.
try {
- String aKey = &quot;myFirstKey&quot;;
- DatabaseEntry theKey = new DatabaseEntry(aKey.getBytes(&quot;UTF-8&quot;));
+ String aKey = "myFirstKey";
+ DatabaseEntry theKey = new DatabaseEntry(aKey.getBytes("UTF-8"));
// Perform the deletion. All records that use this key are
// deleted.
@@ -405,18 +405,18 @@ try {
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="DBEntry.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="DBEntry.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="DBEntry.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="bindAPI.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="bindAPI.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Chapter 3. Database Records </td>
+ <td width="40%" align="left" valign="top">Chapter 3. Database Records </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Using the BIND APIs</td>
+ <td width="40%" align="right" valign="top"> Using the BIND APIs</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/C/Replication-C-GSG.pdf b/db/docs/gsg_db_rep/C/Replication-C-GSG.pdf
index 85cdab4d0..a81b85500 100644
--- a/db/docs/gsg_db_rep/C/Replication-C-GSG.pdf
+++ b/db/docs/gsg_db_rep/C/Replication-C-GSG.pdf
Binary files differ
diff --git a/db/docs/gsg_db_rep/C/addfeatures.html b/db/docs/gsg_db_rep/C/addfeatures.html
index 117a07589..679f365bd 100644
--- a/db/docs/gsg_db_rep/C/addfeatures.html
+++ b/db/docs/gsg_db_rep/C/addfeatures.html
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <title>Chapter 5. Additional Features</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Chapter 5. Additional Features</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
@@ -15,12 +15,12 @@
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
- <th colspan="3" align="center">Chapter 5. Additional Features</th>
+ <th colspan="3" align="center">Chapter 5. Additional Features</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="exampledoloop.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="manageblock.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="exampledoloop.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="manageblock.html">Next</a></td>
</tr>
</table>
<hr />
@@ -29,7 +29,7 @@
<div class="titlepage">
<div>
<div>
- <h2 class="title"><a id="addfeatures"></a>Chapter 5. Additional Features</h2>
+ <h2 class="title"><a id="addfeatures"></a>Chapter 5. Additional Features</h2>
</div>
</div>
<div></div>
@@ -172,18 +172,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="exampledoloop.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="exampledoloop.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="manageblock.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="manageblock.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Example Processing Loop </td>
+ <td width="40%" align="left" valign="top">Example Processing Loop </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Managing Blocking Operations</td>
+ <td width="40%" align="right" valign="top"> Managing Blocking Operations</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/C/apioverview.html b/db/docs/gsg_db_rep/C/apioverview.html
index 4b201d88c..172a8d180 100644
--- a/db/docs/gsg_db_rep/C/apioverview.html
+++ b/db/docs/gsg_db_rep/C/apioverview.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>The Replication APIs</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
- <link rel="up" href="introduction.html" title="Chapter 1. Introduction" />
+ <link rel="up" href="introduction.html" title="Chapter 1. Introduction" />
<link rel="previous" href="repadvantage.html" title="Replication Benefits" />
<link rel="next" href="elections.html" title="Holding Elections" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">The Replication APIs</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="repadvantage.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 1. Introduction</th>
- <td width="20%" align="right"> <a accesskey="n" href="elections.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="repadvantage.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 1. Introduction</th>
+ <td width="20%" align="right"> <a accesskey="n" href="elections.html">Next</a></td>
</tr>
</table>
<hr />
@@ -206,18 +206,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="repadvantage.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="repadvantage.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="introduction.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="elections.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="elections.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Replication Benefits </td>
+ <td width="40%" align="left" valign="top">Replication Benefits </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Holding Elections</td>
+ <td width="40%" align="right" valign="top"> Holding Elections</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/C/bulk.html b/db/docs/gsg_db_rep/C/bulk.html
index b339aa6c8..517619400 100644
--- a/db/docs/gsg_db_rep/C/bulk.html
+++ b/db/docs/gsg_db_rep/C/bulk.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Bulk Transfers</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
- <link rel="up" href="addfeatures.html" title="Chapter 5. Additional Features" />
+ <link rel="up" href="addfeatures.html" title="Chapter 5. Additional Features" />
<link rel="previous" href="c2ctransfer.html" title="Client to Client Transfer" />
</head>
<body>
@@ -17,9 +17,9 @@
<th colspan="3" align="center">Bulk Transfers</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="c2ctransfer.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 5. Additional Features</th>
- <td width="20%" align="right"> </td>
+ <td width="20%" align="left"><a accesskey="p" href="c2ctransfer.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 5. Additional Features</th>
+ <td width="20%" align="right"> </td>
</tr>
</table>
<hr />
@@ -120,18 +120,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="c2ctransfer.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="c2ctransfer.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="addfeatures.html">Up</a>
</td>
- <td width="40%" align="right"> </td>
+ <td width="40%" align="right"> </td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Client to Client Transfer </td>
+ <td width="40%" align="left" valign="top">Client to Client Transfer </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> </td>
+ <td width="40%" align="right" valign="top"> </td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/C/c2ctransfer.html b/db/docs/gsg_db_rep/C/c2ctransfer.html
index 8145d4000..8dfc8ce29 100644
--- a/db/docs/gsg_db_rep/C/c2ctransfer.html
+++ b/db/docs/gsg_db_rep/C/c2ctransfer.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Client to Client Transfer</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
- <link rel="up" href="addfeatures.html" title="Chapter 5. Additional Features" />
+ <link rel="up" href="addfeatures.html" title="Chapter 5. Additional Features" />
<link rel="previous" href="noautoinit.html" title="Stop Auto-Initialization" />
<link rel="next" href="bulk.html" title="Bulk Transfers" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Client to Client Transfer</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="noautoinit.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 5. Additional Features</th>
- <td width="20%" align="right"> <a accesskey="n" href="bulk.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="noautoinit.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 5. Additional Features</th>
+ <td width="20%" align="right"> <a accesskey="n" href="bulk.html">Next</a></td>
</tr>
</table>
<hr />
@@ -112,18 +112,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="noautoinit.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="noautoinit.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="addfeatures.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="bulk.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="bulk.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Stop Auto-Initialization </td>
+ <td width="40%" align="left" valign="top">Stop Auto-Initialization </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Bulk Transfers</td>
+ <td width="40%" align="right" valign="top"> Bulk Transfers</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/C/elections.html b/db/docs/gsg_db_rep/C/elections.html
index 8157cf14a..5d67963fe 100644
--- a/db/docs/gsg_db_rep/C/elections.html
+++ b/db/docs/gsg_db_rep/C/elections.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Holding Elections</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
- <link rel="up" href="introduction.html" title="Chapter 1. Introduction" />
+ <link rel="up" href="introduction.html" title="Chapter 1. Introduction" />
<link rel="previous" href="apioverview.html" title="The Replication APIs" />
<link rel="next" href="permmessages.html" title="Permanent Message Handling" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Holding Elections</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="apioverview.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 1. Introduction</th>
- <td width="20%" align="right"> <a accesskey="n" href="permmessages.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="apioverview.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 1. Introduction</th>
+ <td width="20%" align="right"> <a accesskey="n" href="permmessages.html">Next</a></td>
</tr>
</table>
<hr />
@@ -208,18 +208,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="apioverview.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="apioverview.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="introduction.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="permmessages.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="permmessages.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">The Replication APIs </td>
+ <td width="40%" align="left" valign="top">The Replication APIs </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Permanent Message Handling</td>
+ <td width="40%" align="right" valign="top"> Permanent Message Handling</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/C/electiontimes.html b/db/docs/gsg_db_rep/C/electiontimes.html
index 8f6a2cf9e..213165dee 100644
--- a/db/docs/gsg_db_rep/C/electiontimes.html
+++ b/db/docs/gsg_db_rep/C/electiontimes.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Managing Election Times</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
- <link rel="up" href="repapp.html" title="Chapter 3. The DB Replication Framework" />
+ <link rel="up" href="repapp.html" title="Chapter 3. The DB Replication Framework" />
<link rel="previous" href="fwrkpermmessage.html" title="Permanent Message Handling" />
<link rel="next" href="fmwrkconnectretry.html" title="Managing Connection Retries" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Managing Election Times</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="fwrkpermmessage.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 3. The DB Replication Framework</th>
- <td width="20%" align="right"> <a accesskey="n" href="fmwrkconnectretry.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="fwrkpermmessage.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 3. The DB Replication Framework</th>
+ <td width="20%" align="right"> <a accesskey="n" href="fmwrkconnectretry.html">Next</a></td>
</tr>
</table>
<hr />
@@ -133,18 +133,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="fwrkpermmessage.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="fwrkpermmessage.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="repapp.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="fmwrkconnectretry.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="fmwrkconnectretry.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Permanent Message Handling </td>
+ <td width="40%" align="left" valign="top">Permanent Message Handling </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Managing Connection Retries</td>
+ <td width="40%" align="right" valign="top"> Managing Connection Retries</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/C/exampledoloop.html b/db/docs/gsg_db_rep/C/exampledoloop.html
index 859f4a837..743eeba57 100644
--- a/db/docs/gsg_db_rep/C/exampledoloop.html
+++ b/db/docs/gsg_db_rep/C/exampledoloop.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Example Processing Loop</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
- <link rel="up" href="fwrkmasterreplica.html" title="Chapter 4. Replica versus Master Processes" />
+ <link rel="up" href="fwrkmasterreplica.html" title="Chapter 4. Replica versus Master Processes" />
<link rel="previous" href="processingloop.html" title="Processing Loop" />
- <link rel="next" href="addfeatures.html" title="Chapter 5. Additional Features" />
+ <link rel="next" href="addfeatures.html" title="Chapter 5. Additional Features" />
</head>
<body>
<div class="navheader">
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Example Processing Loop</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="processingloop.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 4. Replica versus Master Processes</th>
- <td width="20%" align="right"> <a accesskey="n" href="addfeatures.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="processingloop.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 4. Replica versus Master Processes</th>
+ <td width="20%" align="right"> <a accesskey="n" href="addfeatures.html">Next</a></td>
</tr>
</table>
<hr />
@@ -89,10 +89,10 @@ extern int getopt(int, char * const *, const char *);
#define CACHESIZE (10 * 1024 * 1024)
-#define DATABASE &quot;quote.db&quot;
+#define DATABASE "quote.db"
<b class="userinput"><tt>#define SLEEPTIME 3</tt></b>
-const char *progname = &quot;rep_mgr&quot;;
+const char *progname = "rep_mgr";
<b class="userinput"><tt>typedef struct {
int is_master;
@@ -143,37 +143,37 @@ main(int argc, char *argv[])
dbenv-&gt;rep_set_priority(dbenv, 100);
/* Collect the command line options */
- while ((ch = getopt(argc, argv, &quot;h:m:o:p:&quot;)) != EOF)
+ while ((ch = getopt(argc, argv, "h:m:o:p:")) != EOF)
switch (ch) {
case 'h':
home = optarg;
break;
/* Set the host and port used by this environment */
case 'm':
- host = strtok(optarg, &quot;:&quot;);
- if ((portstr = strtok(NULL, &quot;:&quot;)) == NULL) {
- fprintf(stderr, &quot;Bad host specification.\n&quot;);
+ host = strtok(optarg, ":");
+ if ((portstr = strtok(NULL, ":")) == NULL) {
+ fprintf(stderr, "Bad host specification.\n");
goto err;
}
port = (unsigned short)atoi(portstr);
if (dbenv-&gt;repmgr_set_local_site(dbenv, host, port, 0) != 0) {
fprintf(stderr,
- &quot;Could not set local address %s.\n&quot;, host);
+ "Could not set local address %s.\n", host);
goto err;
}
local_is_set = 1;
break;
/* Identify another site in the replication group */
case 'o':
- host = strtok(optarg, &quot;:&quot;);
- if ((portstr = strtok(NULL, &quot;:&quot;)) == NULL) {
- fprintf(stderr, &quot;Bad host specification.\n&quot;);
+ host = strtok(optarg, ":");
+ if ((portstr = strtok(NULL, ":")) == NULL) {
+ fprintf(stderr, "Bad host specification.\n");
goto err;
}
port = (unsigned short)atoi(portstr);
if (dbenv-&gt;repmgr_add_remote_site(dbenv, host, port, 0) != 0) {
fprintf(stderr,
- &quot;Could not add site %s.\n&quot;, host);
+ "Could not add site %s.\n", host);
goto err;
}
break;
@@ -181,7 +181,7 @@ main(int argc, char *argv[])
case 'n':
totalsites = atoi(optarg);
if ((ret = dbenv-&gt;rep_set_nsites(dbenv, totalsites)) != 0)
- dbenv-&gt;err(dbenv, ret, &quot;set_nsites&quot;);
+ dbenv-&gt;err(dbenv, ret, "set_nsites");
break;
/* Set this replica's election priority */
case 'p':
@@ -206,7 +206,7 @@ main(int argc, char *argv[])
sleep(5);
if ((ret = doloop(dbenv)) != 0) {
- dbenv-&gt;err(dbenv, ret, &quot;Application failed&quot;);
+ dbenv-&gt;err(dbenv, ret, "Application failed");
goto err;
}
@@ -230,7 +230,7 @@ create_env(char *progname, DB_ENV **dbenvp)
int ret;
if ((ret = db_env_create(&amp;dbenv, 0)) != 0) {
- fprintf(stderr, &quot;can't create env handle: %s\n&quot;,
+ fprintf(stderr, "can't create env handle: %s\n",
db_strerror(ret));
return (ret);
}
@@ -261,7 +261,7 @@ env_init(DB_ENV *dbenv, const char *home)
DB_THREAD |
DB_RECOVER;
if ((ret = dbenv-&gt;open(dbenv, home, flags, 0)) != 0)
- dbenv-&gt;err(dbenv, ret, &quot;can't open environment&quot;);
+ dbenv-&gt;err(dbenv, ret, "can't open environment");
return (ret);
}</pre>
<p>
@@ -300,7 +300,7 @@ event_callback(DB_ENV *dbenv, u_int32_t which, void *info)
break;
default:
- dbenv-&gt;errx(dbenv, &quot;ignoring event %d&quot;, which);
+ dbenv-&gt;errx(dbenv, "ignoring event %d", which);
}
}</tt>
</b>
@@ -378,17 +378,17 @@ doloop(DB_ENV *dbenv)
NULL, DATABASE, NULL, DB_BTREE, flags, 0)) != 0) {
<b class="userinput"><tt>if (ret == ENOENT) {
printf(
- &quot;No stock database yet available.\n&quot;);
+ "No stock database yet available.\n");
if ((ret = dbp-&gt;close(dbp, 0)) != 0) {
dbenv-&gt;err(dbenv, ret,
- &quot;DB-&gt;close&quot;);
+ "DB-&gt;close");
goto err;
}
dbp = NULL;
sleep(SLEEPTIME);
continue;
}</tt></b>
- dbenv-&gt;err(dbenv, ret, &quot;DB-&gt;open&quot;);
+ dbenv-&gt;err(dbenv, ret, "DB-&gt;open");
goto err;
}
} </pre>
@@ -397,8 +397,8 @@ doloop(DB_ENV *dbenv)
as a replica, we can tell from the shell that the prompt is for a
read-only process.
</p>
- <pre class="programlisting"> printf(&quot;QUOTESERVER<b class="userinput"><tt>%s</tt></b>&gt; &quot;,
- <b class="userinput"><tt>app_data-&gt;is_master ? &quot;&quot; : &quot; (read-only)&quot;);</tt></b>
+ <pre class="programlisting"> printf("QUOTESERVER<b class="userinput"><tt>%s</tt></b>&gt; ",
+ <b class="userinput"><tt>app_data-&gt;is_master ? "" : " (read-only)");</tt></b>
fflush(stdout); </pre>
<p>
When we collect data from the prompt, there is a case that says
@@ -432,26 +432,26 @@ doloop(DB_ENV *dbenv)
</p>
<pre class="programlisting"> if (fgets(buf, sizeof(buf), stdin) == NULL)
break;
- if (strtok(&amp;buf[0], &quot; \t\n&quot;) == NULL) {
+ if (strtok(&amp;buf[0], " \t\n") == NULL) {
switch ((ret = print_stocks(dbp))) {
case 0:
continue;
<b class="userinput"><tt>case DB_REP_HANDLE_DEAD:
(void)dbp-&gt;close(dbp, DB_NOSYNC);
dbp = NULL;
- dbenv-&gt;errx(dbenv, &quot;Got a dead replication handle&quot;);
+ dbenv-&gt;errx(dbenv, "Got a dead replication handle");
continue; </tt></b>
default:
- dbp-&gt;err(dbp, ret, &quot;Error traversing data&quot;);
+ dbp-&gt;err(dbp, ret, "Error traversing data");
goto err;
}
}
- rbuf = strtok(NULL, &quot; \t\n&quot;);
+ rbuf = strtok(NULL, " \t\n");
if (rbuf == NULL || rbuf[0] == '\0') {
- if (strncmp(buf, &quot;exit&quot;, 4) == 0 ||
- strncmp(buf, &quot;quit&quot;, 4) == 0)
+ if (strncmp(buf, "exit", 4) == 0 ||
+ strncmp(buf, "quit", 4) == 0)
break;
- dbenv-&gt;errx(dbenv, &quot;Format: TICKER VALUE&quot;);
+ dbenv-&gt;errx(dbenv, "Format: TICKER VALUE");
continue;
}</pre>
<p>
@@ -462,7 +462,7 @@ doloop(DB_ENV *dbenv)
that happening due to user input at the prompt.
</p>
<pre class="programlisting"> <b class="userinput"><tt>if (!app_data-&gt;is_master) {
- dbenv-&gt;errx(dbenv, &quot;Can't update at client&quot;);
+ dbenv-&gt;errx(dbenv, "Can't update at client");
continue;
}</tt></b>
key.data = buf;
@@ -473,7 +473,7 @@ doloop(DB_ENV *dbenv)
if ((ret = dbp-&gt;put(dbp,
NULL, &amp;key, &amp;data, 0)) != 0) {
- dbp-&gt;err(dbp, ret, &quot;DB-&gt;put&quot;);
+ dbp-&gt;err(dbp, ret, "DB-&gt;put");
goto err;
}
}
@@ -624,18 +624,18 @@ QUOTESERVER (read-only)&gt; </pre>
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="processingloop.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="processingloop.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="fwrkmasterreplica.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="addfeatures.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="addfeatures.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Processing Loop </td>
+ <td width="40%" align="left" valign="top">Processing Loop </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Chapter 5. Additional Features</td>
+ <td width="40%" align="right" valign="top"> Chapter 5. Additional Features</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/C/fmwrkconnectretry.html b/db/docs/gsg_db_rep/C/fmwrkconnectretry.html
index c86b01c37..e1ff4ab1e 100644
--- a/db/docs/gsg_db_rep/C/fmwrkconnectretry.html
+++ b/db/docs/gsg_db_rep/C/fmwrkconnectretry.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Managing Connection Retries</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
- <link rel="up" href="repapp.html" title="Chapter 3. The DB Replication Framework" />
+ <link rel="up" href="repapp.html" title="Chapter 3. The DB Replication Framework" />
<link rel="previous" href="electiontimes.html" title="Managing Election Times" />
- <link rel="next" href="fwrkmasterreplica.html" title="Chapter 4. Replica versus Master Processes" />
+ <link rel="next" href="fwrkmasterreplica.html" title="Chapter 4. Replica versus Master Processes" />
</head>
<body>
<div class="navheader">
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Managing Connection Retries</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="electiontimes.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 3. The DB Replication Framework</th>
- <td width="20%" align="right"> <a accesskey="n" href="fwrkmasterreplica.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="electiontimes.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 3. The DB Replication Framework</th>
+ <td width="20%" align="right"> <a accesskey="n" href="fwrkmasterreplica.html">Next</a></td>
</tr>
</table>
<hr />
@@ -57,18 +57,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="electiontimes.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="electiontimes.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="repapp.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="fwrkmasterreplica.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="fwrkmasterreplica.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Managing Election Times </td>
+ <td width="40%" align="left" valign="top">Managing Election Times </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Chapter 4. Replica versus Master Processes</td>
+ <td width="40%" align="right" valign="top"> Chapter 4. Replica versus Master Processes</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/C/fwrkmasterreplica.html b/db/docs/gsg_db_rep/C/fwrkmasterreplica.html
index 975bdd027..3951204cd 100644
--- a/db/docs/gsg_db_rep/C/fwrkmasterreplica.html
+++ b/db/docs/gsg_db_rep/C/fwrkmasterreplica.html
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <title>Chapter 4. Replica versus Master Processes</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Chapter 4. Replica versus Master Processes</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
@@ -15,12 +15,12 @@
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
- <th colspan="3" align="center">Chapter 4. Replica versus Master Processes</th>
+ <th colspan="3" align="center">Chapter 4. Replica versus Master Processes</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="fmwrkconnectretry.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="processingloop.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="fmwrkconnectretry.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="processingloop.html">Next</a></td>
</tr>
</table>
<hr />
@@ -29,7 +29,7 @@
<div class="titlepage">
<div>
<div>
- <h2 class="title"><a id="fwrkmasterreplica"></a>Chapter 4. Replica versus Master Processes</h2>
+ <h2 class="title"><a id="fwrkmasterreplica"></a>Chapter 4. Replica versus Master Processes</h2>
</div>
</div>
<div></div>
@@ -218,7 +218,7 @@ my_app_data.is_master = 0; /* Assume we start as a replica */
* to it's app_private member.
*/
if ((ret = db_env_create(&amp;dbenv, 0)) != 0 ) {
- fprintf(stderr, &quot;Error creating handles: %s\n&quot;,
+ fprintf(stderr, "Error creating handles: %s\n",
db_strerror(ret));
goto err;
}
@@ -259,7 +259,7 @@ event_callback(DB_ENV *dbenv, u_int32_t which, void *info)
break;
default:
- dbenv-&gt;errx(dbenv, &quot;ignoring event %d&quot;, which);
+ dbenv-&gt;errx(dbenv, "ignoring event %d", which);
}
} </pre>
<p>
@@ -282,18 +282,18 @@ event_callback(DB_ENV *dbenv, u_int32_t which, void *info)
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="fmwrkconnectretry.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="fmwrkconnectretry.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="processingloop.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="processingloop.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Managing Connection Retries </td>
+ <td width="40%" align="left" valign="top">Managing Connection Retries </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Processing Loop</td>
+ <td width="40%" align="right" valign="top"> Processing Loop</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/C/fwrkpermmessage.html b/db/docs/gsg_db_rep/C/fwrkpermmessage.html
index ecb3b882c..409ad618e 100644
--- a/db/docs/gsg_db_rep/C/fwrkpermmessage.html
+++ b/db/docs/gsg_db_rep/C/fwrkpermmessage.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Permanent Message Handling</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
- <link rel="up" href="repapp.html" title="Chapter 3. The DB Replication Framework" />
+ <link rel="up" href="repapp.html" title="Chapter 3. The DB Replication Framework" />
<link rel="previous" href="repmgr_init_example_c.html" title="Adding the Replication Framework to&#10; simple_txn&#10; &#10; " />
<link rel="next" href="electiontimes.html" title="Managing Election Times" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Permanent Message Handling</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="repmgr_init_example_c.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 3. The DB Replication Framework</th>
- <td width="20%" align="right"> <a accesskey="n" href="electiontimes.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="repmgr_init_example_c.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 3. The DB Replication Framework</th>
+ <td width="20%" align="right"> <a accesskey="n" href="electiontimes.html">Next</a></td>
</tr>
</table>
<hr />
@@ -111,7 +111,7 @@
<p>
No permanent message acknowledgments are required. If
this policy is selected, permanent message handling is
- essentially &quot;turned off.&quot; That is, the master will
+ essentially "turned off." That is, the master will
never wait for replica acknowledgments. In this case,
transaction log data is either flushed or not strictly
depending on the type of commit that is being performed
@@ -306,7 +306,7 @@
* Create and configure the environment handle.
*/
if ((ret = db_env_create(&amp;dbenv, 0)) != 0 ) {
- fprintf(stderr, &quot;Error creating handles: %s\n&quot;,
+ fprintf(stderr, "Error creating handles: %s\n",
db_strerror(ret));
goto err;
}
@@ -324,7 +324,7 @@
dbenv-&gt;rep_set_timeout(dbenv, DB_REP_ACK_TIMEOUT, 500);</tt></b>
/* Collect the command line options */
- while ((ch = getopt(argc, argv, &quot;h:<b class="userinput"><tt>m:o:p:</tt></b>&quot;)) != EOF)
+ while ((ch = getopt(argc, argv, "h:<b class="userinput"><tt>m:o:p:</tt></b>")) != EOF)
... </pre>
</div>
@@ -333,21 +333,21 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="repmgr_init_example_c.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="repmgr_init_example_c.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="repapp.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="electiontimes.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="electiontimes.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">Adding the Replication Framework to
simple_txn
-  </td>
+  </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Managing Election Times</td>
+ <td width="40%" align="right" valign="top"> Managing Election Times</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/C/index.html b/db/docs/gsg_db_rep/C/index.html
index 4fe9dc3af..0d1b9208e 100644
--- a/db/docs/gsg_db_rep/C/index.html
+++ b/db/docs/gsg_db_rep/C/index.html
@@ -1,8 +1,8 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Getting Started with Replicated Berkeley DB Applications</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
@@ -16,9 +16,9 @@
<th colspan="3" align="center">Getting Started with Replicated Berkeley DB Applications</th>
</tr>
<tr>
- <td width="20%" align="left"> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="preface.html">Next</a></td>
+ <td width="20%" align="left"> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="preface.html">Next</a></td>
</tr>
</table>
<hr />
@@ -27,7 +27,7 @@
<div class="titlepage">
<div>
<div>
- <h1 class="title"><a id="id650925"></a>Getting Started with Replicated Berkeley DB Applications</h1>
+ <h1 class="title"><a id="id613740"></a>Getting Started with Replicated Berkeley DB Applications</h1>
</div>
<div>
<div class="legalnotice">
@@ -37,7 +37,7 @@
<p>
This documentation is distributed under an open source license.
You may review the terms of this license at:
- <a href="http://www.oracle.com/technology/software/products/berkeley-db/htdocs/oslicensing.html" target="_top">http://www.oracle.com/technology/software/products/berkeley-db/htdocs/oslicensing.html</a>
+ <a href="http://www.oracle.com/technology/software/products/berkeley-db/htdocs/oslicense.html" target="_top">http://www.oracle.com/technology/software/products/berkeley-db/htdocs/oslicense.html</a>
</p>
@@ -47,9 +47,9 @@
and
Sleepycat are trademarks or registered trademarks of
- Oracle Corporation. All rights to these marks are reserved.
+ Oracle. All rights to these marks are reserved.
No third-party use is permitted without the
- express prior written consent of Oracle Corporation.
+ express prior written consent of Oracle.
</p>
<p>
To obtain a copy of this document's original source code, please
@@ -61,7 +61,7 @@
</div>
</div>
<div>
- <p class="pubdate">9/20/2006</p>
+ <p class="pubdate">6/30/2007</p>
</div>
</div>
<div></div>
@@ -432,14 +432,14 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"> </td>
- <td width="20%" align="center"> </td>
- <td width="40%" align="right"> <a accesskey="n" href="preface.html">Next</a></td>
+ <td width="40%" align="left"> </td>
+ <td width="20%" align="center"> </td>
+ <td width="40%" align="right"> <a accesskey="n" href="preface.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top"> </td>
- <td width="20%" align="center"> </td>
- <td width="40%" align="right" valign="top"> Preface</td>
+ <td width="40%" align="left" valign="top"> </td>
+ <td width="20%" align="center"> </td>
+ <td width="40%" align="right" valign="top"> Preface</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/C/introduction.html b/db/docs/gsg_db_rep/C/introduction.html
index e3368a9c3..6d0059d98 100644
--- a/db/docs/gsg_db_rep/C/introduction.html
+++ b/db/docs/gsg_db_rep/C/introduction.html
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <title>Chapter 1. Introduction</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Chapter 1. Introduction</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
@@ -15,12 +15,12 @@
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
- <th colspan="3" align="center">Chapter 1. Introduction</th>
+ <th colspan="3" align="center">Chapter 1. Introduction</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="preface.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="repadvantage.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="preface.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="repadvantage.html">Next</a></td>
</tr>
</table>
<hr />
@@ -29,7 +29,7 @@
<div class="titlepage">
<div>
<div>
- <h2 class="title"><a id="introduction"></a>Chapter 1. Introduction</h2>
+ <h2 class="title"><a id="introduction"></a>Chapter 1. Introduction</h2>
</div>
</div>
<div></div>
@@ -250,7 +250,7 @@
<p>
There is no DB-specified limit to the number of
environments which can participate in a replication group.
- The only limitation here is one of resources &#8212;
+ The only limitation here is one of resources —
network bandwidth, for example.
</p>
<p>
@@ -356,7 +356,7 @@
implement them.
</p>
<p>
- When holding an election, replicas &quot;vote&quot; on who should
+ When holding an election, replicas "vote" on who should
be the master. Among replicas participating in the
election, the one with the most up-to-date set of log
records will win the election. Note that it's possible
@@ -376,18 +376,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="preface.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="preface.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="repadvantage.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="repadvantage.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Preface </td>
+ <td width="40%" align="left" valign="top">Preface </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Replication Benefits</td>
+ <td width="40%" align="right" valign="top"> Replication Benefits</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/C/manageblock.html b/db/docs/gsg_db_rep/C/manageblock.html
index 230d1a3db..18de6a130 100644
--- a/db/docs/gsg_db_rep/C/manageblock.html
+++ b/db/docs/gsg_db_rep/C/manageblock.html
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Managing Blocking Operations</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
- <link rel="up" href="addfeatures.html" title="Chapter 5. Additional Features" />
- <link rel="previous" href="addfeatures.html" title="Chapter 5. Additional Features" />
+ <link rel="up" href="addfeatures.html" title="Chapter 5. Additional Features" />
+ <link rel="previous" href="addfeatures.html" title="Chapter 5. Additional Features" />
<link rel="next" href="noautoinit.html" title="Stop Auto-Initialization" />
</head>
<body>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Managing Blocking Operations</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="addfeatures.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 5. Additional Features</th>
- <td width="20%" align="right"> <a accesskey="n" href="noautoinit.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="addfeatures.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 5. Additional Features</th>
+ <td width="20%" align="right"> <a accesskey="n" href="noautoinit.html">Next</a></td>
</tr>
</table>
<hr />
@@ -69,18 +69,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="addfeatures.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="addfeatures.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="addfeatures.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="noautoinit.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="noautoinit.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Chapter 5. Additional Features </td>
+ <td width="40%" align="left" valign="top">Chapter 5. Additional Features </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Stop Auto-Initialization</td>
+ <td width="40%" align="right" valign="top"> Stop Auto-Initialization</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/C/noautoinit.html b/db/docs/gsg_db_rep/C/noautoinit.html
index 85771bd35..87b0fed6d 100644
--- a/db/docs/gsg_db_rep/C/noautoinit.html
+++ b/db/docs/gsg_db_rep/C/noautoinit.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Stop Auto-Initialization</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
- <link rel="up" href="addfeatures.html" title="Chapter 5. Additional Features" />
+ <link rel="up" href="addfeatures.html" title="Chapter 5. Additional Features" />
<link rel="previous" href="manageblock.html" title="Managing Blocking Operations" />
<link rel="next" href="c2ctransfer.html" title="Client to Client Transfer" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Stop Auto-Initialization</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="manageblock.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 5. Additional Features</th>
- <td width="20%" align="right"> <a accesskey="n" href="c2ctransfer.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="manageblock.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 5. Additional Features</th>
+ <td width="20%" align="right"> <a accesskey="n" href="c2ctransfer.html">Next</a></td>
</tr>
</table>
<hr />
@@ -69,18 +69,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="manageblock.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="manageblock.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="addfeatures.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="c2ctransfer.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="c2ctransfer.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Managing Blocking Operations </td>
+ <td width="40%" align="left" valign="top">Managing Blocking Operations </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Client to Client Transfer</td>
+ <td width="40%" align="right" valign="top"> Client to Client Transfer</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/C/permmessages.html b/db/docs/gsg_db_rep/C/permmessages.html
index c2ed56f92..d2e2b8d0f 100644
--- a/db/docs/gsg_db_rep/C/permmessages.html
+++ b/db/docs/gsg_db_rep/C/permmessages.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Permanent Message Handling</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
- <link rel="up" href="introduction.html" title="Chapter 1. Introduction" />
+ <link rel="up" href="introduction.html" title="Chapter 1. Introduction" />
<link rel="previous" href="elections.html" title="Holding Elections" />
- <link rel="next" href="txnapp.html" title="Chapter 2. Transactional Application" />
+ <link rel="next" href="txnapp.html" title="Chapter 2. Transactional Application" />
</head>
<body>
<div class="navheader">
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Permanent Message Handling</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="elections.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 1. Introduction</th>
- <td width="20%" align="right"> <a accesskey="n" href="txnapp.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="elections.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 1. Introduction</th>
+ <td width="20%" align="right"> <a accesskey="n" href="txnapp.html">Next</a></td>
</tr>
</table>
<hr />
@@ -81,8 +81,8 @@
</p>
<p>
If the master does not
- receive message acknowledgments &#8212; or, more likely, it does not receive
- <span class="emphasis"><em>enough</em></span> acknowledgments &#8212; the
+ receive message acknowledgments — or, more likely, it does not receive
+ <span class="emphasis"><em>enough</em></span> acknowledgments — the
committing thread flushes its log data to disk and then
continues operations as normal. The master application can
do this because replicas that fail to handle a message, for
@@ -371,18 +371,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="elections.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="elections.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="introduction.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="txnapp.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="txnapp.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Holding Elections </td>
+ <td width="40%" align="left" valign="top">Holding Elections </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Chapter 2. Transactional Application</td>
+ <td width="40%" align="right" valign="top"> Chapter 2. Transactional Application</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/C/preface.html b/db/docs/gsg_db_rep/C/preface.html
index db9d98bdc..41d4726ac 100644
--- a/db/docs/gsg_db_rep/C/preface.html
+++ b/db/docs/gsg_db_rep/C/preface.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Preface</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
<link rel="up" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
<link rel="previous" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
- <link rel="next" href="introduction.html" title="Chapter 1. Introduction" />
+ <link rel="next" href="introduction.html" title="Chapter 1. Introduction" />
</head>
<body>
<div class="navheader">
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Preface</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="index.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="introduction.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="index.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="introduction.html">Next</a></td>
</tr>
</table>
<hr />
@@ -86,12 +86,12 @@
</p>
<p>
Structure names are represented in <tt class="classname">monospaced font</tt>, as are <tt class="methodname">method
- names</tt>. For example: &quot;<tt class="methodname">DB-&gt;open()</tt> is a method
- on a <tt class="classname">DB</tt> handle.&quot;
+ names</tt>. For example: "<tt class="methodname">DB-&gt;open()</tt> is a method
+ on a <tt class="classname">DB</tt> handle."
</p>
<p>
- Variable or non-literal text is presented in <span class="emphasis"><em>italics</em></span>. For example: &quot;Go to your
- <span class="emphasis"><em>DB_INSTALL</em></span> directory.&quot;
+ Variable or non-literal text is presented in <span class="emphasis"><em>italics</em></span>. For example: "Go to your
+ <span class="emphasis"><em>DB_INSTALL</em></span> directory."
</p>
<p>
Program examples are displayed in a <tt class="classname">monospaced font</tt> on a shaded background.
@@ -193,18 +193,18 @@ typedef struct stock_dbs {
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="index.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="index.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="introduction.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="introduction.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Getting Started with Replicated Berkeley DB Applications </td>
+ <td width="40%" align="left" valign="top">Getting Started with Replicated Berkeley DB Applications </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Chapter 1. Introduction</td>
+ <td width="40%" align="right" valign="top"> Chapter 1. Introduction</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/C/processingloop.html b/db/docs/gsg_db_rep/C/processingloop.html
index 94c0035a9..e6eecfe03 100644
--- a/db/docs/gsg_db_rep/C/processingloop.html
+++ b/db/docs/gsg_db_rep/C/processingloop.html
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Processing Loop</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
- <link rel="up" href="fwrkmasterreplica.html" title="Chapter 4. Replica versus Master Processes" />
- <link rel="previous" href="fwrkmasterreplica.html" title="Chapter 4. Replica versus Master Processes" />
+ <link rel="up" href="fwrkmasterreplica.html" title="Chapter 4. Replica versus Master Processes" />
+ <link rel="previous" href="fwrkmasterreplica.html" title="Chapter 4. Replica versus Master Processes" />
<link rel="next" href="exampledoloop.html" title="Example Processing Loop" />
</head>
<body>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Processing Loop</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="fwrkmasterreplica.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 4. Replica versus Master Processes</th>
- <td width="20%" align="right"> <a accesskey="n" href="exampledoloop.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="fwrkmasterreplica.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 4. Replica versus Master Processes</th>
+ <td width="20%" align="right"> <a accesskey="n" href="exampledoloop.html">Next</a></td>
</tr>
</table>
<hr />
@@ -236,18 +236,18 @@ for (;;) {
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="fwrkmasterreplica.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="fwrkmasterreplica.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="fwrkmasterreplica.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="exampledoloop.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="exampledoloop.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Chapter 4. Replica versus Master Processes </td>
+ <td width="40%" align="left" valign="top">Chapter 4. Replica versus Master Processes </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Example Processing Loop</td>
+ <td width="40%" align="right" valign="top"> Example Processing Loop</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/C/repadvantage.html b/db/docs/gsg_db_rep/C/repadvantage.html
index c7ab72c1a..3e001b900 100644
--- a/db/docs/gsg_db_rep/C/repadvantage.html
+++ b/db/docs/gsg_db_rep/C/repadvantage.html
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Replication Benefits</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
- <link rel="up" href="introduction.html" title="Chapter 1. Introduction" />
- <link rel="previous" href="introduction.html" title="Chapter 1. Introduction" />
+ <link rel="up" href="introduction.html" title="Chapter 1. Introduction" />
+ <link rel="previous" href="introduction.html" title="Chapter 1. Introduction" />
<link rel="next" href="apioverview.html" title="The Replication APIs" />
</head>
<body>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Replication Benefits</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="introduction.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 1. Introduction</th>
- <td width="20%" align="right"> <a accesskey="n" href="apioverview.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="introduction.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 1. Introduction</th>
+ <td width="20%" align="right"> <a accesskey="n" href="apioverview.html">Next</a></td>
</tr>
</table>
<hr />
@@ -150,7 +150,7 @@
one or more replicas before continuing with the next
operation. This will obviously impact your
application's write performance to some degree
- &#8212; with the performance penalty being largely dependent
+ — with the performance penalty being largely dependent
upon the speed and stability of the network connecting
your replication group.
</p>
@@ -165,18 +165,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="introduction.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="introduction.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="introduction.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="apioverview.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="apioverview.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Chapter 1. Introduction </td>
+ <td width="40%" align="left" valign="top">Chapter 1. Introduction </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> The Replication APIs</td>
+ <td width="40%" align="right" valign="top"> The Replication APIs</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/C/repapp.html b/db/docs/gsg_db_rep/C/repapp.html
index d46f167d9..391f322fa 100644
--- a/db/docs/gsg_db_rep/C/repapp.html
+++ b/db/docs/gsg_db_rep/C/repapp.html
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <title>Chapter 3. The DB Replication Framework</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Chapter 3. The DB Replication Framework</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
@@ -15,12 +15,12 @@
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
- <th colspan="3" align="center">Chapter 3. The DB Replication Framework</th>
+ <th colspan="3" align="center">Chapter 3. The DB Replication Framework</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="simpleprogramlisting.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="repmgr_init_example_c.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="simpleprogramlisting.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="repmgr_init_example_c.html">Next</a></td>
</tr>
</table>
<hr />
@@ -29,7 +29,7 @@
<div class="titlepage">
<div>
<div>
- <h2 class="title"><a id="repapp"></a>Chapter 3. The DB Replication Framework</h2>
+ <h2 class="title"><a id="repapp"></a>Chapter 3. The DB Replication Framework</h2>
</div>
</div>
<div></div>
@@ -295,20 +295,6 @@
stops and starts replication. Note that other replication
activities are omitted for brevity.
</p>
- <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
- <h3 class="title">Note</h3>
- <p>
- Note that the following code fragment would be part of a larger
- class that must implement
- <tt class="classname">com.sleepycat.db.EventHandler</tt>. This
- class is used to track state changes between master and
- replica. We put off that implementation for the moment, but the
- point remains that the following code fragment would be
- contained in a method or two that you would include in your
- <tt class="classname">com.sleepycat.db.EventHandler</tt>
- implementation.
- </p>
- </div>
<pre class="programlisting">#include &lt;db.h&gt;
/* Use a 10mb cache */
@@ -327,17 +313,17 @@
/* Initialize variables */
dbenv = NULL;
- progname = &quot;example_replication&quot;;
- envHome = &quot;ENVIRONMENT_HOME&quot;;
- listen_host = &quot;mymachine.sleepycat.com&quot;;
+ progname = "example_replication";
+ envHome = "ENVIRONMENT_HOME";
+ listen_host = "mymachine.sleepycat.com";
listen_port = 5001;
- other_host = &quot;anothermachine.sleepycat.com&quot;;
+ other_host = "anothermachine.sleepycat.com";
other_port = 4555;
ret = 0;
/* Create the environment handle */
if ((ret = db_env_create(&amp;dbenv, 0)) != 0 ) {
- fprintf(stderr, &quot;Error creating environment handle: %s\n&quot;,
+ fprintf(stderr, "Error creating environment handle: %s\n",
db_strerror(ret));
goto err;
}
@@ -360,7 +346,7 @@
*/
if ((ret = dbenv-&gt;repmgr_set_local_site(dbenv, listen_host,
listen_port, 0)) != 0) {
- fprintf(stderr, &quot;Could not set local address (%d).\n&quot;, ret);
+ fprintf(stderr, "Could not set local address (%d).\n", ret);
goto err;
}
@@ -377,7 +363,7 @@
* application.
*/
if (dbenv-&gt;repmgr_add_remote_site(dbenv, other_host, other_port) != 0) {
- fprintf(stderr, &quot;Could not add site %s.\n&quot;, other_host);
+ fprintf(stderr, "Could not add site %s.\n", other_host);
goto err;
}
@@ -387,7 +373,7 @@
* performed correctly.
*/
if (dbenv-&gt;repmgr_add_nsites(dbenv, 2) != 0) {
- fprintf(stderr, &quot;Could not set the number of sites.\n&quot;;
+ fprintf(stderr, "Could not set the number of sites.\n";
goto err;
}
@@ -556,7 +542,7 @@ err: /*
of duplicate masters, because once a master is
selected, the environment that loses the election will
have to roll back any transactions committed
- until it is in sync with the &quot;real&quot; master.
+ until it is in sync with the "real" master.
</p>
</td>
</tr>
@@ -698,18 +684,18 @@ err: /*
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="simpleprogramlisting.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="simpleprogramlisting.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="repmgr_init_example_c.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="repmgr_init_example_c.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Program Listing </td>
+ <td width="40%" align="left" valign="top">Program Listing </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Adding the Replication Framework to
+ <td width="40%" align="right" valign="top"> Adding the Replication Framework to
simple_txn
</td>
diff --git a/db/docs/gsg_db_rep/C/repmgr_init_example_c.html b/db/docs/gsg_db_rep/C/repmgr_init_example_c.html
index c3b850cd1..eae67e9f7 100644
--- a/db/docs/gsg_db_rep/C/repmgr_init_example_c.html
+++ b/db/docs/gsg_db_rep/C/repmgr_init_example_c.html
@@ -1,8 +1,8 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Adding the Replication Framework to
simple_txn
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
- <link rel="up" href="repapp.html" title="Chapter 3. The DB Replication Framework" />
- <link rel="previous" href="repapp.html" title="Chapter 3. The DB Replication Framework" />
+ <link rel="up" href="repapp.html" title="Chapter 3. The DB Replication Framework" />
+ <link rel="previous" href="repapp.html" title="Chapter 3. The DB Replication Framework" />
<link rel="next" href="fwrkpermmessage.html" title="Permanent Message Handling" />
</head>
<body>
@@ -24,9 +24,9 @@
</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="repapp.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 3. The DB Replication Framework</th>
- <td width="20%" align="right"> <a accesskey="n" href="fwrkpermmessage.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="repapp.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 3. The DB Replication Framework</th>
+ <td width="20%" align="right"> <a accesskey="n" href="fwrkpermmessage.html">Next</a></td>
</tr>
</table>
<hr />
@@ -120,9 +120,9 @@ extern int getopt(int, char * const *, const char *);
#endif
#define CACHESIZE (10 * 1024 * 1024)
-#define DATABASE &quot;quote.db&quot;
+#define DATABASE "quote.db"
-const char *progname = <b class="userinput"><tt>&quot;rep_mgr&quot;;</tt></b>
+const char *progname = <b class="userinput"><tt>"rep_mgr";</tt></b>
int create_env(const char *, DB_ENV **);
int env_init(DB_ENV *, const char *);
@@ -169,19 +169,19 @@ int print_stocks(DBC *); </pre>
static void
usage()
{
- fprintf(stderr, &quot;usage: %s &quot;, progname);
- fprintf(stderr, &quot;[-h home] <b class="userinput"><tt>-m host:port [-o host:port]</tt></b>\n&quot;);
- <b class="userinput"><tt>fprintf(stderr, &quot;\t\t[-p priority]\n&quot;);</tt></b>
- fprintf(stderr, &quot;where:\n&quot;);
- fprintf(stderr, &quot;\t-h identifies the environment home directory\n&quot;);
- <b class="userinput"><tt>fprintf(stderr, &quot;\t-o identifies another site participating in &quot;);
- fprintf(stderr, &quot;this replication group\n&quot;);
- fprintf(stderr, &quot;\t-m identifies the host and port used by this &quot;);
- fprintf(stderr, &quot;site (required).\n&quot;);
- fprintf(stderr, &quot;\t-n identifies the number of sites in this &quot;);
- fprintf(stderr, &quot;replication group (required).\n&quot;);
- fprintf(stderr, &quot;\t-p identifies the election priority used by &quot;);
- fprintf(stderr, &quot;this replica.\n&quot;);</tt></b>
+ fprintf(stderr, "usage: %s ", progname);
+ fprintf(stderr, "[-h home] <b class="userinput"><tt>-m host:port [-o host:port]</tt></b>\n");
+ <b class="userinput"><tt>fprintf(stderr, "\t\t[-p priority]\n");</tt></b>
+ fprintf(stderr, "where:\n");
+ fprintf(stderr, "\t-h identifies the environment home directory\n");
+ <b class="userinput"><tt>fprintf(stderr, "\t-o identifies another site participating in ");
+ fprintf(stderr, "this replication group\n");
+ fprintf(stderr, "\t-m identifies the host and port used by this ");
+ fprintf(stderr, "site (required).\n");
+ fprintf(stderr, "\t-n identifies the number of sites in this ");
+ fprintf(stderr, "replication group (required).\n");
+ fprintf(stderr, "\t-p identifies the election priority used by ");
+ fprintf(stderr, "this replica.\n");</tt></b>
exit(EXIT_FAILURE);
} </pre>
<p>
@@ -229,37 +229,37 @@ main(int argc, char *argv[])
configure the application's election priority if necessary.
</p>
<pre class="programlisting"> /* Collect the command line options */
- while ((ch = getopt(argc, argv, &quot;h:<b class="userinput"><tt>m:o:p:</tt></b>&quot;)) != EOF)
+ while ((ch = getopt(argc, argv, "h:<b class="userinput"><tt>m:o:p:</tt></b>")) != EOF)
switch (ch) {
case 'h':
home = optarg;
break;
<b class="userinput"><tt>/* Set the host and port used by this environment */
case 'm':
- host = strtok(optarg, &quot;:&quot;);
- if ((portstr = strtok(NULL, &quot;:&quot;)) == NULL) {
- fprintf(stderr, &quot;Bad host specification.\n&quot;);
+ host = strtok(optarg, ":");
+ if ((portstr = strtok(NULL, ":")) == NULL) {
+ fprintf(stderr, "Bad host specification.\n");
goto err;
}
port = (unsigned short)atoi(portstr);
if (dbenv-&gt;repmgr_set_local_site(dbenv, host, port, 0) != 0) {
fprintf(stderr,
- &quot;Could not set local address %s.\n&quot;, host);
+ "Could not set local address %s.\n", host);
goto err;
}
local_is_set = 1;
break;
/* Identify another site in the replication group */
case 'o':
- host = strtok(optarg, &quot;:&quot;);
- if ((portstr = strtok(NULL, &quot;:&quot;)) == NULL) {
- fprintf(stderr, &quot;Bad host specification.\n&quot;);
+ host = strtok(optarg, ":");
+ if ((portstr = strtok(NULL, ":")) == NULL) {
+ fprintf(stderr, "Bad host specification.\n");
goto err;
}
port = (unsigned short)atoi(portstr);
if (dbenv-&gt;repmgr_add_remote_site(dbenv, host, port, 0) != 0) {
fprintf(stderr,
- &quot;Could not add site %s.\n&quot;, host);
+ "Could not add site %s.\n", host);
goto err;
}
break;
@@ -267,7 +267,7 @@ main(int argc, char *argv[])
case 'n':
totalsites = atoi(optarg);
if ((ret = dbenv-&gt;rep_set_nsites(dbenv, totalsites)) != 0)
- dbenv-&gt;err(dbenv, ret, &quot;set_nsites&quot;);
+ dbenv-&gt;err(dbenv, ret, "set_nsites");
break;
/* Set this replica's election priority */
case 'p':
@@ -298,7 +298,7 @@ main(int argc, char *argv[])
goto err; </tt></b>
if ((ret = doloop(dbenv)) != 0) {
- dbenv-&gt;err(dbenv, ret, &quot;Application failed&quot;);
+ dbenv-&gt;err(dbenv, ret, "Application failed");
goto err;
}
@@ -349,7 +349,7 @@ env_init(DB_ENV *dbenv, const char *home)
DB_THREAD |</tt></b>
DB_RECOVER;
if ((ret = dbenv-&gt;open(dbenv, home, flags, 0)) != 0)
- dbenv-&gt;err(dbenv, ret, &quot;can't open environment&quot;);
+ dbenv-&gt;err(dbenv, ret, "can't open environment");
return (ret);
}</pre>
<p>
@@ -364,18 +364,18 @@ env_init(DB_ENV *dbenv, const char *home)
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="repapp.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="repapp.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="repapp.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="fwrkpermmessage.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="fwrkpermmessage.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Chapter 3. The DB Replication Framework </td>
+ <td width="40%" align="left" valign="top">Chapter 3. The DB Replication Framework </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Permanent Message Handling</td>
+ <td width="40%" align="right" valign="top"> Permanent Message Handling</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/C/simpleprogramlisting.html b/db/docs/gsg_db_rep/C/simpleprogramlisting.html
index 2df5281f9..ba1c916ae 100644
--- a/db/docs/gsg_db_rep/C/simpleprogramlisting.html
+++ b/db/docs/gsg_db_rep/C/simpleprogramlisting.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Program Listing</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
- <link rel="up" href="txnapp.html" title="Chapter 2. Transactional Application" />
- <link rel="previous" href="txnapp.html" title="Chapter 2. Transactional Application" />
- <link rel="next" href="repapp.html" title="Chapter 3. The DB Replication Framework" />
+ <link rel="up" href="txnapp.html" title="Chapter 2. Transactional Application" />
+ <link rel="previous" href="txnapp.html" title="Chapter 2. Transactional Application" />
+ <link rel="next" href="repapp.html" title="Chapter 3. The DB Replication Framework" />
</head>
<body>
<div class="navheader">
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Program Listing</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="txnapp.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 2. Transactional Application</th>
- <td width="20%" align="right"> <a accesskey="n" href="repapp.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="txnapp.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 2. Transactional Application</th>
+ <td width="20%" align="right"> <a accesskey="n" href="repapp.html">Next</a></td>
</tr>
</table>
<hr />
@@ -104,9 +104,9 @@ extern int getopt(int, char * const *, const char *);
error reporting later on.
</p>
<pre class="programlisting">#define CACHESIZE (10 * 1024 * 1024)
-#define DATABASE &quot;quote.db&quot;
+#define DATABASE "quote.db"
-const char *progname = &quot;simple_txn&quot;; </pre>
+const char *progname = "simple_txn"; </pre>
<p>
Then we perform a couple of forward declarations. The first
of these, <tt class="function">create_env()</tt> and
@@ -138,8 +138,8 @@ int print_stocks(DBC *); </pre>
static void
usage()
{
- fprintf(stderr, &quot;usage: %s &quot;, progname);
- fprintf(stderr, &quot;[-h home]\n&quot;);
+ fprintf(stderr, "usage: %s ", progname);
+ fprintf(stderr, "[-h home]\n");
exit(EXIT_FAILURE);
} </pre>
<p>
@@ -173,7 +173,7 @@ main(int argc, char *argv[])
<p>
Then we parse the command line arguments:
</p>
- <pre class="programlisting"> while ((ch = getopt(argc, argv, &quot;h:&quot;)) != EOF)
+ <pre class="programlisting"> while ((ch = getopt(argc, argv, "h:")) != EOF)
switch (ch) {
case 'h':
home = optarg;
@@ -205,7 +205,7 @@ main(int argc, char *argv[])
here.
</p>
<pre class="programlisting"> if ((ret = doloop(dbenv)) != 0) {
- dbenv-&gt;err(dbenv, ret, &quot;Application failed&quot;);
+ dbenv-&gt;err(dbenv, ret, "Application failed");
goto err;
} </pre>
<p>
@@ -245,7 +245,7 @@ create_env(char *progname, DB_ENV **dbenvp)
int ret;
if ((ret = db_env_create(&amp;dbenv, 0)) != 0) {
- fprintf(stderr, &quot;can't create env handle: %s\n&quot;,
+ fprintf(stderr, "can't create env handle: %s\n",
db_strerror(ret));
return (ret);
}
@@ -290,7 +290,7 @@ env_init(DB_ENV *dbenv, const char *home)
DB_INIT_TXN |
DB_RECOVER;
if ((ret = dbenv-&gt;open(dbenv, home, flags, 0)) != 0)
- dbenv-&gt;err(dbenv, ret, &quot;can't open environment&quot;);
+ dbenv-&gt;err(dbenv, ret, "can't open environment");
return (ret);
} </pre>
</div>
@@ -366,7 +366,7 @@ doloop(DB_ENV *dbenv)
if ((ret = dbp-&gt;open(dbp, NULL, DATABASE,
NULL, DB_BTREE, db_flags, 0)) != 0) {
- dbenv-&gt;err(dbenv, ret, &quot;DB-&gt;open&quot;);
+ dbenv-&gt;err(dbenv, ret, "DB-&gt;open");
goto err;
}
} </pre>
@@ -392,26 +392,26 @@ doloop(DB_ENV *dbenv)
However, in order to keep this example code as simple as
possible, we refrain from implementing a thorough user interface.
</p>
- <pre class="programlisting"> printf(&quot;QUOTESERVER &gt; &quot;);
+ <pre class="programlisting"> printf("QUOTESERVER &gt; ");
fflush(stdout);
if (fgets(buf, sizeof(buf), stdin) == NULL)
break;
- if (strtok(&amp;buf[0], &quot; \t\n&quot;) == NULL) {
+ if (strtok(&amp;buf[0], " \t\n") == NULL) {
switch ((ret = print_stocks(dbp))) {
case 0:
continue;
default:
- dbp-&gt;err(dbp, ret, &quot;Error traversing data&quot;);
+ dbp-&gt;err(dbp, ret, "Error traversing data");
goto err;
}
}
- rbuf = strtok(NULL, &quot; \t\n&quot;);
+ rbuf = strtok(NULL, " \t\n");
if (rbuf == NULL || rbuf[0] == '\0') {
- if (strncmp(buf, &quot;exit&quot;, 4) == 0 ||
- strncmp(buf, &quot;quit&quot;, 4) == 0)
+ if (strncmp(buf, "exit", 4) == 0 ||
+ strncmp(buf, "quit", 4) == 0)
break;
- dbenv-&gt;errx(dbenv, &quot;Format: TICKER VALUE&quot;);
+ dbenv-&gt;errx(dbenv, "Format: TICKER VALUE");
continue;
} </pre>
<p>
@@ -430,12 +430,12 @@ doloop(DB_ENV *dbenv)
the database is not configured for duplicate records, so
the data portion of a record is overwritten if the provided
key already exists in the database. However, in this case
- DB returns <tt class="literal">DB_KEYEXIST</tt> &#8212; which
+ DB returns <tt class="literal">DB_KEYEXIST</tt> — which
we ignore.
</p>
<pre class="programlisting"> if ((ret = dbp-&gt;put(dbp, NULL, &amp;key, &amp;data, 0)) != 0)
{
- dbp-&gt;err(dbp, ret, &quot;DB-&gt;put&quot;);
+ dbp-&gt;err(dbp, ret, "DB-&gt;put");
if (ret != DB_KEYEXIST)
goto err;
}
@@ -495,19 +495,19 @@ print_stocks(DB *dbp)
u_int32_t keysize, datasize;
if ((ret = dbp-&gt;cursor(dbp, NULL, &amp;dbc, 0)) != 0) {
- dbp-&gt;err(dbp, ret, &quot;can't open cursor&quot;);
+ dbp-&gt;err(dbp, ret, "can't open cursor");
return (ret);
}
memset(&amp;key, 0, sizeof(key));
memset(&amp;data, 0, sizeof(data));
- printf(&quot;\tSymbol\tPrice\n&quot;);
- printf(&quot;\t======\t=====\n&quot;);
+ printf("\tSymbol\tPrice\n");
+ printf("\t======\t=====\n");
- for (ret = dbc-&gt;c_get(dbc, &amp;key, &amp;data, DB_FIRST);
+ for (ret = dbc-&gt;get(dbc, &amp;key, &amp;data, DB_FIRST);
ret == 0;
- ret = dbc-&gt;c_get(dbc, &amp;key, &amp;data, DB_NEXT)) {
+ ret = dbc-&gt;get(dbc, &amp;key, &amp;data, DB_NEXT)) {
keysize = key.size &gt; MAXKEYSIZE ? MAXKEYSIZE : key.size;
memcpy(keybuf, key.data, keysize);
keybuf[keysize] = '\0';
@@ -516,12 +516,12 @@ print_stocks(DB *dbp)
memcpy(databuf, data.data, datasize);
databuf[datasize] = '\0';
- printf(&quot;\t%s\t%s\n&quot;, keybuf, databuf);
+ printf("\t%s\t%s\n", keybuf, databuf);
}
- printf(&quot;\n&quot;);
+ printf("\n");
fflush(stdout);
- if ((t_ret = dbc-&gt;c_close(dbc)) != 0 &amp;&amp; ret == 0)
+ if ((t_ret = dbc-&gt;close(dbc)) != 0 &amp;&amp; ret == 0)
ret = t_ret;
switch (ret) {
@@ -538,18 +538,18 @@ print_stocks(DB *dbp)
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="txnapp.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="txnapp.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="txnapp.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="repapp.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="repapp.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Chapter 2. Transactional Application </td>
+ <td width="40%" align="left" valign="top">Chapter 2. Transactional Application </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Chapter 3. The DB Replication Framework</td>
+ <td width="40%" align="right" valign="top"> Chapter 3. The DB Replication Framework</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/C/txnapp.html b/db/docs/gsg_db_rep/C/txnapp.html
index 5f3fe1446..b39bebdcb 100644
--- a/db/docs/gsg_db_rep/C/txnapp.html
+++ b/db/docs/gsg_db_rep/C/txnapp.html
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <title>Chapter 2. Transactional Application</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Chapter 2. Transactional Application</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
@@ -15,12 +15,12 @@
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
- <th colspan="3" align="center">Chapter 2. Transactional Application</th>
+ <th colspan="3" align="center">Chapter 2. Transactional Application</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="permmessages.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="simpleprogramlisting.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="permmessages.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="simpleprogramlisting.html">Next</a></td>
</tr>
</table>
<hr />
@@ -29,7 +29,7 @@
<div class="titlepage">
<div>
<div>
- <h2 class="title"><a id="txnapp"></a>Chapter 2. Transactional Application</h2>
+ <h2 class="title"><a id="txnapp"></a>Chapter 2. Transactional Application</h2>
</div>
</div>
<div></div>
@@ -155,18 +155,18 @@ QUOTESERVER&gt; quit
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="permmessages.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="permmessages.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="simpleprogramlisting.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="simpleprogramlisting.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Permanent Message Handling </td>
+ <td width="40%" align="left" valign="top">Permanent Message Handling </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Program Listing</td>
+ <td width="40%" align="right" valign="top"> Program Listing</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/CXX/Replication-CXX-GSG.pdf b/db/docs/gsg_db_rep/CXX/Replication-CXX-GSG.pdf
index 0ee3ce3ab..45ad3db68 100644
--- a/db/docs/gsg_db_rep/CXX/Replication-CXX-GSG.pdf
+++ b/db/docs/gsg_db_rep/CXX/Replication-CXX-GSG.pdf
Binary files differ
diff --git a/db/docs/gsg_db_rep/CXX/addfeatures.html b/db/docs/gsg_db_rep/CXX/addfeatures.html
index 1adee537f..f50219a8e 100644
--- a/db/docs/gsg_db_rep/CXX/addfeatures.html
+++ b/db/docs/gsg_db_rep/CXX/addfeatures.html
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <title>Chapter 5. Additional Features</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Chapter 5. Additional Features</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
@@ -15,12 +15,12 @@
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
- <th colspan="3" align="center">Chapter 5. Additional Features</th>
+ <th colspan="3" align="center">Chapter 5. Additional Features</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="exampledoloop.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="manageblock.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="exampledoloop.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="manageblock.html">Next</a></td>
</tr>
</table>
<hr />
@@ -29,7 +29,7 @@
<div class="titlepage">
<div>
<div>
- <h2 class="title"><a id="addfeatures"></a>Chapter 5. Additional Features</h2>
+ <h2 class="title"><a id="addfeatures"></a>Chapter 5. Additional Features</h2>
</div>
</div>
<div></div>
@@ -172,18 +172,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="exampledoloop.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="exampledoloop.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="manageblock.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="manageblock.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Example Processing Loop </td>
+ <td width="40%" align="left" valign="top">Example Processing Loop </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Managing Blocking Operations</td>
+ <td width="40%" align="right" valign="top"> Managing Blocking Operations</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/CXX/apioverview.html b/db/docs/gsg_db_rep/CXX/apioverview.html
index 5b713eb23..d18df6f98 100644
--- a/db/docs/gsg_db_rep/CXX/apioverview.html
+++ b/db/docs/gsg_db_rep/CXX/apioverview.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>The Replication APIs</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
- <link rel="up" href="introduction.html" title="Chapter 1. Introduction" />
+ <link rel="up" href="introduction.html" title="Chapter 1. Introduction" />
<link rel="previous" href="repadvantage.html" title="Replication Benefits" />
<link rel="next" href="elections.html" title="Holding Elections" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">The Replication APIs</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="repadvantage.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 1. Introduction</th>
- <td width="20%" align="right"> <a accesskey="n" href="elections.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="repadvantage.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 1. Introduction</th>
+ <td width="20%" align="right"> <a accesskey="n" href="elections.html">Next</a></td>
</tr>
</table>
<hr />
@@ -206,18 +206,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="repadvantage.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="repadvantage.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="introduction.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="elections.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="elections.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Replication Benefits </td>
+ <td width="40%" align="left" valign="top">Replication Benefits </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Holding Elections</td>
+ <td width="40%" align="right" valign="top"> Holding Elections</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/CXX/bulk.html b/db/docs/gsg_db_rep/CXX/bulk.html
index 25646dc08..1fe9c1edb 100644
--- a/db/docs/gsg_db_rep/CXX/bulk.html
+++ b/db/docs/gsg_db_rep/CXX/bulk.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Bulk Transfers</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
- <link rel="up" href="addfeatures.html" title="Chapter 5. Additional Features" />
+ <link rel="up" href="addfeatures.html" title="Chapter 5. Additional Features" />
<link rel="previous" href="c2ctransfer.html" title="Client to Client Transfer" />
</head>
<body>
@@ -17,9 +17,9 @@
<th colspan="3" align="center">Bulk Transfers</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="c2ctransfer.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 5. Additional Features</th>
- <td width="20%" align="right"> </td>
+ <td width="20%" align="left"><a accesskey="p" href="c2ctransfer.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 5. Additional Features</th>
+ <td width="20%" align="right"> </td>
</tr>
</table>
<hr />
@@ -120,18 +120,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="c2ctransfer.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="c2ctransfer.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="addfeatures.html">Up</a>
</td>
- <td width="40%" align="right"> </td>
+ <td width="40%" align="right"> </td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Client to Client Transfer </td>
+ <td width="40%" align="left" valign="top">Client to Client Transfer </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> </td>
+ <td width="40%" align="right" valign="top"> </td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/CXX/c2ctransfer.html b/db/docs/gsg_db_rep/CXX/c2ctransfer.html
index 13b479d0e..d9bae4e6d 100644
--- a/db/docs/gsg_db_rep/CXX/c2ctransfer.html
+++ b/db/docs/gsg_db_rep/CXX/c2ctransfer.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Client to Client Transfer</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
- <link rel="up" href="addfeatures.html" title="Chapter 5. Additional Features" />
+ <link rel="up" href="addfeatures.html" title="Chapter 5. Additional Features" />
<link rel="previous" href="noautoinit.html" title="Stop Auto-Initialization" />
<link rel="next" href="bulk.html" title="Bulk Transfers" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Client to Client Transfer</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="noautoinit.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 5. Additional Features</th>
- <td width="20%" align="right"> <a accesskey="n" href="bulk.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="noautoinit.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 5. Additional Features</th>
+ <td width="20%" align="right"> <a accesskey="n" href="bulk.html">Next</a></td>
</tr>
</table>
<hr />
@@ -112,18 +112,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="noautoinit.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="noautoinit.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="addfeatures.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="bulk.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="bulk.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Stop Auto-Initialization </td>
+ <td width="40%" align="left" valign="top">Stop Auto-Initialization </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Bulk Transfers</td>
+ <td width="40%" align="right" valign="top"> Bulk Transfers</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/CXX/elections.html b/db/docs/gsg_db_rep/CXX/elections.html
index 8157cf14a..5d67963fe 100644
--- a/db/docs/gsg_db_rep/CXX/elections.html
+++ b/db/docs/gsg_db_rep/CXX/elections.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Holding Elections</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
- <link rel="up" href="introduction.html" title="Chapter 1. Introduction" />
+ <link rel="up" href="introduction.html" title="Chapter 1. Introduction" />
<link rel="previous" href="apioverview.html" title="The Replication APIs" />
<link rel="next" href="permmessages.html" title="Permanent Message Handling" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Holding Elections</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="apioverview.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 1. Introduction</th>
- <td width="20%" align="right"> <a accesskey="n" href="permmessages.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="apioverview.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 1. Introduction</th>
+ <td width="20%" align="right"> <a accesskey="n" href="permmessages.html">Next</a></td>
</tr>
</table>
<hr />
@@ -208,18 +208,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="apioverview.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="apioverview.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="introduction.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="permmessages.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="permmessages.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">The Replication APIs </td>
+ <td width="40%" align="left" valign="top">The Replication APIs </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Permanent Message Handling</td>
+ <td width="40%" align="right" valign="top"> Permanent Message Handling</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/CXX/electiontimes.html b/db/docs/gsg_db_rep/CXX/electiontimes.html
index c7c0318cf..27ec13afb 100644
--- a/db/docs/gsg_db_rep/CXX/electiontimes.html
+++ b/db/docs/gsg_db_rep/CXX/electiontimes.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Managing Election Times</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
- <link rel="up" href="repapp.html" title="Chapter 3. The DB Replication Framework" />
+ <link rel="up" href="repapp.html" title="Chapter 3. The DB Replication Framework" />
<link rel="previous" href="fwrkpermmessage.html" title="Permanent Message Handling" />
<link rel="next" href="fmwrkconnectretry.html" title="Managing Connection Retries" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Managing Election Times</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="fwrkpermmessage.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 3. The DB Replication Framework</th>
- <td width="20%" align="right"> <a accesskey="n" href="fmwrkconnectretry.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="fwrkpermmessage.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 3. The DB Replication Framework</th>
+ <td width="20%" align="right"> <a accesskey="n" href="fmwrkconnectretry.html">Next</a></td>
</tr>
</table>
<hr />
@@ -133,18 +133,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="fwrkpermmessage.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="fwrkpermmessage.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="repapp.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="fmwrkconnectretry.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="fmwrkconnectretry.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Permanent Message Handling </td>
+ <td width="40%" align="left" valign="top">Permanent Message Handling </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Managing Connection Retries</td>
+ <td width="40%" align="right" valign="top"> Managing Connection Retries</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/CXX/exampledoloop.html b/db/docs/gsg_db_rep/CXX/exampledoloop.html
index 77c3c0780..e5374fedd 100644
--- a/db/docs/gsg_db_rep/CXX/exampledoloop.html
+++ b/db/docs/gsg_db_rep/CXX/exampledoloop.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Example Processing Loop</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
- <link rel="up" href="fwrkmasterreplica.html" title="Chapter 4. Replica versus Master Processes" />
+ <link rel="up" href="fwrkmasterreplica.html" title="Chapter 4. Replica versus Master Processes" />
<link rel="previous" href="processingloop.html" title="Processing Loop" />
- <link rel="next" href="addfeatures.html" title="Chapter 5. Additional Features" />
+ <link rel="next" href="addfeatures.html" title="Chapter 5. Additional Features" />
</head>
<body>
<div class="navheader">
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Example Processing Loop</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="processingloop.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 4. Replica versus Master Processes</th>
- <td width="20%" align="right"> <a accesskey="n" href="addfeatures.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="processingloop.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 4. Replica versus Master Processes</th>
+ <td width="20%" align="right"> <a accesskey="n" href="addfeatures.html">Next</a></td>
</tr>
</table>
<hr />
@@ -87,10 +87,10 @@ using std::endl;
using std::flush;
#define CACHESIZE (10 * 1024 * 1024)
-#define DATABASE &quot;quote.db&quot;
+#define DATABASE "quote.db"
<b class="userinput"><tt>#define SLEEPTIME 3</tt></b>
-const char *progname = &quot;RepMgr&quot;;
+const char *progname = "RepMgr";
<b class="userinput"><tt>// Struct used to store information in Db app_private field.
typedef struct {
@@ -204,7 +204,7 @@ void RepMgr::event_callback(DbEnv *dbenv, u_int32_t which, void *info)
break;
default:
- dbenv-&gt;errx(dbenv, &quot;ignoring event %d&quot;, which);
+ dbenv-&gt;errx(dbenv, "ignoring event %d", which);
}
}</tt>
</b>
@@ -268,12 +268,12 @@ int RepMgr::doloop()
* and synced, and no DB will be available until then.
*/
if (dbe.get_errno() == ENOENT) {
- cout &lt;&lt; &quot;No stock db available yet - retrying.&quot; &lt;&lt; endl;
+ cout &lt;&lt; "No stock db available yet - retrying." &lt;&lt; endl;
try {
dbp-&gt;close(0);
} catch (DbException dbe2) {
- cout &lt;&lt; &quot;Unexpected error closing after failed&quot;
- &lt;&lt; &quot; open, message: &quot; &lt;&lt; dbe2.what() &lt;&lt; endl;
+ cout &lt;&lt; "Unexpected error closing after failed"
+ &lt;&lt; " open, message: " &lt;&lt; dbe2.what() &lt;&lt; endl;
dbp = NULL;
goto err;
}
@@ -281,7 +281,7 @@ int RepMgr::doloop()
sleep(SLEEPTIME);
continue;
} else {</tt></b>
- dbenv.err(ret, &quot;DB-&gt;open&quot;);
+ dbenv.err(ret, "DB-&gt;open");
throw dbe;
<b class="userinput"><tt>}</tt></b>
}
@@ -291,10 +291,10 @@ int RepMgr::doloop()
as a replica, we can tell from the shell that the prompt is for a
read-only process.
</p>
- <pre class="programlisting"> <b class="userinput"><tt>cout &lt;&lt; &quot;QUOTESERVER&quot; ;
+ <pre class="programlisting"> <b class="userinput"><tt>cout &lt;&lt; "QUOTESERVER" ;
if (!app_data.is_master)
- cout &lt;&lt; &quot;(read-only)&quot;;
- cout &lt;&lt; &quot;&gt; &quot; &lt;&lt; flush; </tt></b></pre>
+ cout &lt;&lt; "(read-only)";
+ cout &lt;&lt; "&gt; " &lt;&lt; flush; </tt></b></pre>
<p>
When we collect data from the prompt, there is a case that says
if no data is entered then show the entire stocks database.
@@ -328,26 +328,26 @@ int RepMgr::doloop()
<pre class="programlisting">
if (fgets(buf, sizeof(buf), stdin) == NULL)
break;
- if (strtok(&amp;buf[0], &quot; \t\n&quot;) == NULL) {
+ if (strtok(&amp;buf[0], " \t\n") == NULL) {
switch ((ret = print_stocks(dbp))) {
case 0:
continue;
<b class="userinput"><tt>case DB_REP_HANDLE_DEAD:
(void)dbp-&gt;close(DB_NOSYNC);
- cout &lt;&lt; &quot;closing db handle due to rep handle dead&quot; &lt;&lt; endl;
+ cout &lt;&lt; "closing db handle due to rep handle dead" &lt;&lt; endl;
dbp = NULL;
continue;</tt></b>
default:
- dbp-&gt;err(ret, &quot;Error traversing data&quot;);
+ dbp-&gt;err(ret, "Error traversing data");
goto err;
}
}
- rbuf = strtok(NULL, &quot; \t\n&quot;);
+ rbuf = strtok(NULL, " \t\n");
if (rbuf == NULL || rbuf[0] == '\0') {
- if (strncmp(buf, &quot;exit&quot;, 4) == 0 ||
- strncmp(buf, &quot;quit&quot;, 4) == 0)
+ if (strncmp(buf, "exit", 4) == 0 ||
+ strncmp(buf, "quit", 4) == 0)
break;
- dbenv.errx(&quot;Format: TICKER VALUE&quot;);
+ dbenv.errx("Format: TICKER VALUE");
continue;
} </pre>
<p>
@@ -358,7 +358,7 @@ int RepMgr::doloop()
that happening due to user input at the prompt.
</p>
<pre class="programlisting"> <b class="userinput"><tt>if (!app_data.is_master) {
- dbenv-&gt;errx(dbenv, &quot;Can't update at client&quot;);
+ dbenv-&gt;errx(dbenv, "Can't update at client");
continue;
}</tt></b>
@@ -370,7 +370,7 @@ int RepMgr::doloop()
if ((ret = dbp-&gt;put(NULL, &amp;key, &amp;data, 0)) != 0)
{
- dbp-&gt;err(ret, &quot;DB-&gt;put&quot;);
+ dbp-&gt;err(ret, "DB-&gt;put");
if (ret != DB_KEYEXIST)
goto err;
}
@@ -522,18 +522,18 @@ QUOTESERVER (read-only)&gt; </pre>
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="processingloop.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="processingloop.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="fwrkmasterreplica.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="addfeatures.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="addfeatures.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Processing Loop </td>
+ <td width="40%" align="left" valign="top">Processing Loop </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Chapter 5. Additional Features</td>
+ <td width="40%" align="right" valign="top"> Chapter 5. Additional Features</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/CXX/fmwrkconnectretry.html b/db/docs/gsg_db_rep/CXX/fmwrkconnectretry.html
index 3d3890613..d0739789e 100644
--- a/db/docs/gsg_db_rep/CXX/fmwrkconnectretry.html
+++ b/db/docs/gsg_db_rep/CXX/fmwrkconnectretry.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Managing Connection Retries</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
- <link rel="up" href="repapp.html" title="Chapter 3. The DB Replication Framework" />
+ <link rel="up" href="repapp.html" title="Chapter 3. The DB Replication Framework" />
<link rel="previous" href="electiontimes.html" title="Managing Election Times" />
- <link rel="next" href="fwrkmasterreplica.html" title="Chapter 4. Replica versus Master Processes" />
+ <link rel="next" href="fwrkmasterreplica.html" title="Chapter 4. Replica versus Master Processes" />
</head>
<body>
<div class="navheader">
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Managing Connection Retries</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="electiontimes.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 3. The DB Replication Framework</th>
- <td width="20%" align="right"> <a accesskey="n" href="fwrkmasterreplica.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="electiontimes.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 3. The DB Replication Framework</th>
+ <td width="20%" align="right"> <a accesskey="n" href="fwrkmasterreplica.html">Next</a></td>
</tr>
</table>
<hr />
@@ -57,18 +57,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="electiontimes.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="electiontimes.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="repapp.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="fwrkmasterreplica.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="fwrkmasterreplica.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Managing Election Times </td>
+ <td width="40%" align="left" valign="top">Managing Election Times </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Chapter 4. Replica versus Master Processes</td>
+ <td width="40%" align="right" valign="top"> Chapter 4. Replica versus Master Processes</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/CXX/fwrkmasterreplica.html b/db/docs/gsg_db_rep/CXX/fwrkmasterreplica.html
index dc04d0f66..a53fb2c5e 100644
--- a/db/docs/gsg_db_rep/CXX/fwrkmasterreplica.html
+++ b/db/docs/gsg_db_rep/CXX/fwrkmasterreplica.html
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <title>Chapter 4. Replica versus Master Processes</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Chapter 4. Replica versus Master Processes</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
@@ -15,12 +15,12 @@
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
- <th colspan="3" align="center">Chapter 4. Replica versus Master Processes</th>
+ <th colspan="3" align="center">Chapter 4. Replica versus Master Processes</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="fmwrkconnectretry.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="processingloop.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="fmwrkconnectretry.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="processingloop.html">Next</a></td>
</tr>
</table>
<hr />
@@ -29,7 +29,7 @@
<div class="titlepage">
<div>
<div>
- <h2 class="title"><a id="fwrkmasterreplica"></a>Chapter 4. Replica versus Master Processes</h2>
+ <h2 class="title"><a id="fwrkmasterreplica"></a>Chapter 4. Replica versus Master Processes</h2>
</div>
</div>
<div></div>
@@ -255,7 +255,7 @@ event_callback(DbEnv *dbenv, u_int32_t which, void *info)
break;
default:
- dbenv-&gt;errx(dbenv, &quot;ignoring event %d&quot;, which);
+ dbenv-&gt;errx(dbenv, "ignoring event %d", which);
}
} </pre>
<p>
@@ -278,18 +278,18 @@ event_callback(DbEnv *dbenv, u_int32_t which, void *info)
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="fmwrkconnectretry.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="fmwrkconnectretry.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="processingloop.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="processingloop.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Managing Connection Retries </td>
+ <td width="40%" align="left" valign="top">Managing Connection Retries </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Processing Loop</td>
+ <td width="40%" align="right" valign="top"> Processing Loop</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/CXX/fwrkpermmessage.html b/db/docs/gsg_db_rep/CXX/fwrkpermmessage.html
index b5fa7c4ab..649756f0d 100644
--- a/db/docs/gsg_db_rep/CXX/fwrkpermmessage.html
+++ b/db/docs/gsg_db_rep/CXX/fwrkpermmessage.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Permanent Message Handling</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
- <link rel="up" href="repapp.html" title="Chapter 3. The DB Replication Framework" />
+ <link rel="up" href="repapp.html" title="Chapter 3. The DB Replication Framework" />
<link rel="previous" href="repmgr_init_example_c.html" title="Adding the Replication Framework to&#10; &#10; SimpleTxn&#10; " />
<link rel="next" href="electiontimes.html" title="Managing Election Times" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Permanent Message Handling</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="repmgr_init_example_c.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 3. The DB Replication Framework</th>
- <td width="20%" align="right"> <a accesskey="n" href="electiontimes.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="repmgr_init_example_c.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 3. The DB Replication Framework</th>
+ <td width="20%" align="right"> <a accesskey="n" href="electiontimes.html">Next</a></td>
</tr>
</table>
<hr />
@@ -107,7 +107,7 @@
<p>
No permanent message acknowledgments are required. If
this policy is selected, permanent message handling is
- essentially &quot;turned off.&quot; That is, the master will
+ essentially "turned off." That is, the master will
never wait for replica acknowledgments. In this case,
transaction log data is either flushed or not strictly
depending on the type of commit that is being performed
@@ -310,26 +310,26 @@
if ((ret = dbenv.repmgr_set_local_site(app_config-&gt;this_host.host,
app_config-&gt;this_host.port, 0)) != 0) {
- cerr &lt;&lt; &quot;Could not set listen address to host:port &quot;
- &lt;&lt; app_config-&gt;this_host.host &lt;&lt; &quot;:&quot;
+ cerr &lt;&lt; "Could not set listen address to host:port "
+ &lt;&lt; app_config-&gt;this_host.host &lt;&lt; ":"
&lt;&lt; app_config-&gt;this_host.port
- &lt;&lt; &quot;error: &quot; &lt;&lt; ret &lt;&lt; endl;
+ &lt;&lt; "error: " &lt;&lt; ret &lt;&lt; endl;
}
for ( REP_HOST_INFO *cur = app_config-&gt;other_hosts; cur != NULL;
cur = cur-&gt;next) {
if ((ret = dbenv.repmgr_add_remote_site(cur-&gt;host, cur-&gt;port,
0)) != 0) {
- cerr &lt;&lt; &quot;could not add site.&quot; &lt;&lt; endl
+ cerr &lt;&lt; "could not add site." &lt;&lt; endl
}
}
if (app_config-&gt;totalsites &gt; 0) {
try {
if ((ret = dbenv.rep_set_nsites(app_config-&gt;totalsites)) != 0)
- dbenv.err(ret, &quot;set_nsites&quot;);
+ dbenv.err(ret, "set_nsites");
} catch (DbException dbe) {
- cerr &lt;&lt; &quot;rep_set_nsites call failed. Continuing.&quot; &lt;&lt; endl;
+ cerr &lt;&lt; "rep_set_nsites call failed. Continuing." &lt;&lt; endl;
}
}
@@ -350,21 +350,21 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="repmgr_init_example_c.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="repmgr_init_example_c.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="repapp.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="electiontimes.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="electiontimes.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">Adding the Replication Framework to
SimpleTxn
-  </td>
+  </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Managing Election Times</td>
+ <td width="40%" align="right" valign="top"> Managing Election Times</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/CXX/index.html b/db/docs/gsg_db_rep/CXX/index.html
index 8d9affd41..cddcc4bff 100644
--- a/db/docs/gsg_db_rep/CXX/index.html
+++ b/db/docs/gsg_db_rep/CXX/index.html
@@ -1,8 +1,8 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Getting Started with Replicated Berkeley DB Applications</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
@@ -16,9 +16,9 @@
<th colspan="3" align="center">Getting Started with Replicated Berkeley DB Applications</th>
</tr>
<tr>
- <td width="20%" align="left"> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="preface.html">Next</a></td>
+ <td width="20%" align="left"> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="preface.html">Next</a></td>
</tr>
</table>
<hr />
@@ -27,7 +27,7 @@
<div class="titlepage">
<div>
<div>
- <h1 class="title"><a id="id650925"></a>Getting Started with Replicated Berkeley DB Applications</h1>
+ <h1 class="title"><a id="id613740"></a>Getting Started with Replicated Berkeley DB Applications</h1>
</div>
<div>
<div class="legalnotice">
@@ -37,7 +37,7 @@
<p>
This documentation is distributed under an open source license.
You may review the terms of this license at:
- <a href="http://www.oracle.com/technology/software/products/berkeley-db/htdocs/oslicensing.html" target="_top">http://www.oracle.com/technology/software/products/berkeley-db/htdocs/oslicensing.html</a>
+ <a href="http://www.oracle.com/technology/software/products/berkeley-db/htdocs/oslicense.html" target="_top">http://www.oracle.com/technology/software/products/berkeley-db/htdocs/oslicense.html</a>
</p>
@@ -47,9 +47,9 @@
and
Sleepycat are trademarks or registered trademarks of
- Oracle Corporation. All rights to these marks are reserved.
+ Oracle. All rights to these marks are reserved.
No third-party use is permitted without the
- express prior written consent of Oracle Corporation.
+ express prior written consent of Oracle.
</p>
<p>
To obtain a copy of this document's original source code, please
@@ -61,7 +61,7 @@
</div>
</div>
<div>
- <p class="pubdate">9/20/2006</p>
+ <p class="pubdate">6/30/2007</p>
</div>
</div>
<div></div>
@@ -445,14 +445,14 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"> </td>
- <td width="20%" align="center"> </td>
- <td width="40%" align="right"> <a accesskey="n" href="preface.html">Next</a></td>
+ <td width="40%" align="left"> </td>
+ <td width="20%" align="center"> </td>
+ <td width="40%" align="right"> <a accesskey="n" href="preface.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top"> </td>
- <td width="20%" align="center"> </td>
- <td width="40%" align="right" valign="top"> Preface</td>
+ <td width="40%" align="left" valign="top"> </td>
+ <td width="20%" align="center"> </td>
+ <td width="40%" align="right" valign="top"> Preface</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/CXX/introduction.html b/db/docs/gsg_db_rep/CXX/introduction.html
index e23296295..de7e3d144 100644
--- a/db/docs/gsg_db_rep/CXX/introduction.html
+++ b/db/docs/gsg_db_rep/CXX/introduction.html
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <title>Chapter 1. Introduction</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Chapter 1. Introduction</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
@@ -15,12 +15,12 @@
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
- <th colspan="3" align="center">Chapter 1. Introduction</th>
+ <th colspan="3" align="center">Chapter 1. Introduction</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="preface.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="repadvantage.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="preface.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="repadvantage.html">Next</a></td>
</tr>
</table>
<hr />
@@ -29,7 +29,7 @@
<div class="titlepage">
<div>
<div>
- <h2 class="title"><a id="introduction"></a>Chapter 1. Introduction</h2>
+ <h2 class="title"><a id="introduction"></a>Chapter 1. Introduction</h2>
</div>
</div>
<div></div>
@@ -250,7 +250,7 @@
<p>
There is no DB-specified limit to the number of
environments which can participate in a replication group.
- The only limitation here is one of resources &#8212;
+ The only limitation here is one of resources —
network bandwidth, for example.
</p>
<p>
@@ -356,7 +356,7 @@
implement them.
</p>
<p>
- When holding an election, replicas &quot;vote&quot; on who should
+ When holding an election, replicas "vote" on who should
be the master. Among replicas participating in the
election, the one with the most up-to-date set of log
records will win the election. Note that it's possible
@@ -376,18 +376,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="preface.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="preface.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="repadvantage.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="repadvantage.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Preface </td>
+ <td width="40%" align="left" valign="top">Preface </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Replication Benefits</td>
+ <td width="40%" align="right" valign="top"> Replication Benefits</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/CXX/manageblock.html b/db/docs/gsg_db_rep/CXX/manageblock.html
index baeb8ed90..6aaeebcef 100644
--- a/db/docs/gsg_db_rep/CXX/manageblock.html
+++ b/db/docs/gsg_db_rep/CXX/manageblock.html
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Managing Blocking Operations</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
- <link rel="up" href="addfeatures.html" title="Chapter 5. Additional Features" />
- <link rel="previous" href="addfeatures.html" title="Chapter 5. Additional Features" />
+ <link rel="up" href="addfeatures.html" title="Chapter 5. Additional Features" />
+ <link rel="previous" href="addfeatures.html" title="Chapter 5. Additional Features" />
<link rel="next" href="noautoinit.html" title="Stop Auto-Initialization" />
</head>
<body>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Managing Blocking Operations</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="addfeatures.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 5. Additional Features</th>
- <td width="20%" align="right"> <a accesskey="n" href="noautoinit.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="addfeatures.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 5. Additional Features</th>
+ <td width="20%" align="right"> <a accesskey="n" href="noautoinit.html">Next</a></td>
</tr>
</table>
<hr />
@@ -69,18 +69,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="addfeatures.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="addfeatures.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="addfeatures.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="noautoinit.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="noautoinit.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Chapter 5. Additional Features </td>
+ <td width="40%" align="left" valign="top">Chapter 5. Additional Features </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Stop Auto-Initialization</td>
+ <td width="40%" align="right" valign="top"> Stop Auto-Initialization</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/CXX/noautoinit.html b/db/docs/gsg_db_rep/CXX/noautoinit.html
index a3aaa2145..a9044c6a5 100644
--- a/db/docs/gsg_db_rep/CXX/noautoinit.html
+++ b/db/docs/gsg_db_rep/CXX/noautoinit.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Stop Auto-Initialization</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
- <link rel="up" href="addfeatures.html" title="Chapter 5. Additional Features" />
+ <link rel="up" href="addfeatures.html" title="Chapter 5. Additional Features" />
<link rel="previous" href="manageblock.html" title="Managing Blocking Operations" />
<link rel="next" href="c2ctransfer.html" title="Client to Client Transfer" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Stop Auto-Initialization</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="manageblock.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 5. Additional Features</th>
- <td width="20%" align="right"> <a accesskey="n" href="c2ctransfer.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="manageblock.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 5. Additional Features</th>
+ <td width="20%" align="right"> <a accesskey="n" href="c2ctransfer.html">Next</a></td>
</tr>
</table>
<hr />
@@ -69,18 +69,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="manageblock.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="manageblock.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="addfeatures.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="c2ctransfer.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="c2ctransfer.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Managing Blocking Operations </td>
+ <td width="40%" align="left" valign="top">Managing Blocking Operations </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Client to Client Transfer</td>
+ <td width="40%" align="right" valign="top"> Client to Client Transfer</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/CXX/permmessages.html b/db/docs/gsg_db_rep/CXX/permmessages.html
index b404585b8..889ba69b8 100644
--- a/db/docs/gsg_db_rep/CXX/permmessages.html
+++ b/db/docs/gsg_db_rep/CXX/permmessages.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Permanent Message Handling</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
- <link rel="up" href="introduction.html" title="Chapter 1. Introduction" />
+ <link rel="up" href="introduction.html" title="Chapter 1. Introduction" />
<link rel="previous" href="elections.html" title="Holding Elections" />
- <link rel="next" href="txnapp.html" title="Chapter 2. Transactional Application" />
+ <link rel="next" href="txnapp.html" title="Chapter 2. Transactional Application" />
</head>
<body>
<div class="navheader">
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Permanent Message Handling</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="elections.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 1. Introduction</th>
- <td width="20%" align="right"> <a accesskey="n" href="txnapp.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="elections.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 1. Introduction</th>
+ <td width="20%" align="right"> <a accesskey="n" href="txnapp.html">Next</a></td>
</tr>
</table>
<hr />
@@ -81,8 +81,8 @@
</p>
<p>
If the master does not
- receive message acknowledgments &#8212; or, more likely, it does not receive
- <span class="emphasis"><em>enough</em></span> acknowledgments &#8212; the
+ receive message acknowledgments — or, more likely, it does not receive
+ <span class="emphasis"><em>enough</em></span> acknowledgments — the
committing thread flushes its log data to disk and then
continues operations as normal. The master application can
do this because replicas that fail to handle a message, for
@@ -371,18 +371,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="elections.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="elections.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="introduction.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="txnapp.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="txnapp.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Holding Elections </td>
+ <td width="40%" align="left" valign="top">Holding Elections </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Chapter 2. Transactional Application</td>
+ <td width="40%" align="right" valign="top"> Chapter 2. Transactional Application</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/CXX/preface.html b/db/docs/gsg_db_rep/CXX/preface.html
index e384eee45..0807bcc6c 100644
--- a/db/docs/gsg_db_rep/CXX/preface.html
+++ b/db/docs/gsg_db_rep/CXX/preface.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Preface</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
<link rel="up" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
<link rel="previous" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
- <link rel="next" href="introduction.html" title="Chapter 1. Introduction" />
+ <link rel="next" href="introduction.html" title="Chapter 1. Introduction" />
</head>
<body>
<div class="navheader">
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Preface</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="index.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="introduction.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="index.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="introduction.html">Next</a></td>
</tr>
</table>
<hr />
@@ -90,12 +90,12 @@
- <span>&quot;<tt class="methodname">DbEnv::open()</tt> is a
- <tt class="classname">DbEnv</tt> class method.&quot;</span>
+ <span>"<tt class="methodname">DbEnv::open()</tt> is a
+ <tt class="classname">DbEnv</tt> class method."</span>
</p>
<p>
- Variable or non-literal text is presented in <span class="emphasis"><em>italics</em></span>. For example: &quot;Go to your
- <span class="emphasis"><em>DB_INSTALL</em></span> directory.&quot;
+ Variable or non-literal text is presented in <span class="emphasis"><em>italics</em></span>. For example: "Go to your
+ <span class="emphasis"><em>DB_INSTALL</em></span> directory."
</p>
<p>
Program examples are displayed in a <tt class="classname">monospaced font</tt> on a shaded background.
@@ -197,18 +197,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="index.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="index.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="introduction.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="introduction.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Getting Started with Replicated Berkeley DB Applications </td>
+ <td width="40%" align="left" valign="top">Getting Started with Replicated Berkeley DB Applications </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Chapter 1. Introduction</td>
+ <td width="40%" align="right" valign="top"> Chapter 1. Introduction</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/CXX/processingloop.html b/db/docs/gsg_db_rep/CXX/processingloop.html
index 3f18d2310..072d1bca0 100644
--- a/db/docs/gsg_db_rep/CXX/processingloop.html
+++ b/db/docs/gsg_db_rep/CXX/processingloop.html
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Processing Loop</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
- <link rel="up" href="fwrkmasterreplica.html" title="Chapter 4. Replica versus Master Processes" />
- <link rel="previous" href="fwrkmasterreplica.html" title="Chapter 4. Replica versus Master Processes" />
+ <link rel="up" href="fwrkmasterreplica.html" title="Chapter 4. Replica versus Master Processes" />
+ <link rel="previous" href="fwrkmasterreplica.html" title="Chapter 4. Replica versus Master Processes" />
<link rel="next" href="exampledoloop.html" title="Example Processing Loop" />
</head>
<body>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Processing Loop</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="fwrkmasterreplica.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 4. Replica versus Master Processes</th>
- <td width="20%" align="right"> <a accesskey="n" href="exampledoloop.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="fwrkmasterreplica.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 4. Replica versus Master Processes</th>
+ <td width="20%" align="right"> <a accesskey="n" href="exampledoloop.html">Next</a></td>
</tr>
</table>
<hr />
@@ -199,12 +199,12 @@ for (;;) {
DB_AUTO_COMMIT, 0);
} catch(DbException dbe) {
if (dbe.get_errno() == ENOENT) {
- cout &lt;&lt; &quot;No stock db available yet - retrying.&quot; &lt;&lt; endl;
+ cout &lt;&lt; "No stock db available yet - retrying." &lt;&lt; endl;
try {
dbp-&gt;close(0);
} catch (DbException dbe2) {
- cout &lt;&lt; &quot;Unexpected error closing after failed&quot; &lt;&lt;
- &quot; open, message: &quot; &lt;&lt; dbe2.what() &lt;&lt; endl;
+ cout &lt;&lt; "Unexpected error closing after failed" &lt;&lt;
+ " open, message: " &lt;&lt; dbe2.what() &lt;&lt; endl;
dbp = NULL;
goto err;
}
@@ -212,7 +212,7 @@ for (;;) {
sleep(SLEEPTIME);
continue;
} else {
- dbenv.err(ret, &quot;DB-&gt;open&quot;);
+ dbenv.err(ret, "DB-&gt;open");
throw dbe;
}
}
@@ -240,18 +240,18 @@ for (;;) {
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="fwrkmasterreplica.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="fwrkmasterreplica.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="fwrkmasterreplica.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="exampledoloop.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="exampledoloop.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Chapter 4. Replica versus Master Processes </td>
+ <td width="40%" align="left" valign="top">Chapter 4. Replica versus Master Processes </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Example Processing Loop</td>
+ <td width="40%" align="right" valign="top"> Example Processing Loop</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/CXX/repadvantage.html b/db/docs/gsg_db_rep/CXX/repadvantage.html
index c7ab72c1a..3e001b900 100644
--- a/db/docs/gsg_db_rep/CXX/repadvantage.html
+++ b/db/docs/gsg_db_rep/CXX/repadvantage.html
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Replication Benefits</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
- <link rel="up" href="introduction.html" title="Chapter 1. Introduction" />
- <link rel="previous" href="introduction.html" title="Chapter 1. Introduction" />
+ <link rel="up" href="introduction.html" title="Chapter 1. Introduction" />
+ <link rel="previous" href="introduction.html" title="Chapter 1. Introduction" />
<link rel="next" href="apioverview.html" title="The Replication APIs" />
</head>
<body>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Replication Benefits</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="introduction.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 1. Introduction</th>
- <td width="20%" align="right"> <a accesskey="n" href="apioverview.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="introduction.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 1. Introduction</th>
+ <td width="20%" align="right"> <a accesskey="n" href="apioverview.html">Next</a></td>
</tr>
</table>
<hr />
@@ -150,7 +150,7 @@
one or more replicas before continuing with the next
operation. This will obviously impact your
application's write performance to some degree
- &#8212; with the performance penalty being largely dependent
+ — with the performance penalty being largely dependent
upon the speed and stability of the network connecting
your replication group.
</p>
@@ -165,18 +165,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="introduction.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="introduction.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="introduction.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="apioverview.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="apioverview.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Chapter 1. Introduction </td>
+ <td width="40%" align="left" valign="top">Chapter 1. Introduction </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> The Replication APIs</td>
+ <td width="40%" align="right" valign="top"> The Replication APIs</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/CXX/repapp.html b/db/docs/gsg_db_rep/CXX/repapp.html
index 240383791..403d00b96 100644
--- a/db/docs/gsg_db_rep/CXX/repapp.html
+++ b/db/docs/gsg_db_rep/CXX/repapp.html
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <title>Chapter 3. The DB Replication Framework</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Chapter 3. The DB Replication Framework</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
@@ -15,12 +15,12 @@
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
- <th colspan="3" align="center">Chapter 3. The DB Replication Framework</th>
+ <th colspan="3" align="center">Chapter 3. The DB Replication Framework</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="simpleprogramlisting.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="repmgr_init_example_c.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="simpleprogramlisting.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="repmgr_init_example_c.html">Next</a></td>
</tr>
</table>
<hr />
@@ -29,7 +29,7 @@
<div class="titlepage">
<div>
<div>
- <h2 class="title"><a id="repapp"></a>Chapter 3. The DB Replication Framework</h2>
+ <h2 class="title"><a id="repapp"></a>Chapter 3. The DB Replication Framework</h2>
</div>
</div>
<div></div>
@@ -295,20 +295,6 @@
stops and starts replication. Note that other replication
activities are omitted for brevity.
</p>
- <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
- <h3 class="title">Note</h3>
- <p>
- Note that the following code fragment would be part of a larger
- class that must implement
- <tt class="classname">com.sleepycat.db.EventHandler</tt>. This
- class is used to track state changes between master and
- replica. We put off that implementation for the moment, but the
- point remains that the following code fragment would be
- contained in a method or two that you would include in your
- <tt class="classname">com.sleepycat.db.EventHandler</tt>
- implementation.
- </p>
- </div>
<pre class="programlisting">#include &lt;db_cxx.h&gt;
/* Use a 10mb cache */
@@ -326,11 +312,11 @@
/* Initialize variables */
dbenv = NULL;
- progname = &quot;example_replication&quot;;
- envHome = &quot;ENVIRONMENT_HOME&quot;;
- listen_host = &quot;mymachine.sleepycat.com&quot;;
+ progname = "example_replication";
+ envHome = "ENVIRONMENT_HOME";
+ listen_host = "mymachine.sleepycat.com";
listen_port = 5001;
- other_host = &quot;anothermachine.sleepycat.com&quot;;
+ other_host = "anothermachine.sleepycat.com";
other_port = 4555;
try {
@@ -547,7 +533,7 @@
of duplicate masters, because once a master is
selected, the environment that loses the election will
have to roll back any transactions committed
- until it is in sync with the &quot;real&quot; master.
+ until it is in sync with the "real" master.
</p>
</td>
</tr>
@@ -689,18 +675,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="simpleprogramlisting.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="simpleprogramlisting.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="repmgr_init_example_c.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="repmgr_init_example_c.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Program Listing </td>
+ <td width="40%" align="left" valign="top">Program Listing </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Adding the Replication Framework to
+ <td width="40%" align="right" valign="top"> Adding the Replication Framework to
SimpleTxn
</td>
diff --git a/db/docs/gsg_db_rep/CXX/repmgr_init_example_c.html b/db/docs/gsg_db_rep/CXX/repmgr_init_example_c.html
index 42be987b1..2cdea5323 100644
--- a/db/docs/gsg_db_rep/CXX/repmgr_init_example_c.html
+++ b/db/docs/gsg_db_rep/CXX/repmgr_init_example_c.html
@@ -1,8 +1,8 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Adding the Replication Framework to
SimpleTxn
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
- <link rel="up" href="repapp.html" title="Chapter 3. The DB Replication Framework" />
- <link rel="previous" href="repapp.html" title="Chapter 3. The DB Replication Framework" />
+ <link rel="up" href="repapp.html" title="Chapter 3. The DB Replication Framework" />
+ <link rel="previous" href="repapp.html" title="Chapter 3. The DB Replication Framework" />
<link rel="next" href="fwrkpermmessage.html" title="Permanent Message Handling" />
</head>
<body>
@@ -24,9 +24,9 @@
</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="repapp.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 3. The DB Replication Framework</th>
- <td width="20%" align="right"> <a accesskey="n" href="fwrkpermmessage.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="repapp.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 3. The DB Replication Framework</th>
+ <td width="20%" align="right"> <a accesskey="n" href="fwrkpermmessage.html">Next</a></td>
</tr>
</table>
<hr />
@@ -110,7 +110,7 @@
<p>
First, we create a new structure,
<tt class="literal">RepHostInfoObj</tt>, which we use to store
- host and port information for all &quot;other&quot; servers
+ host and port information for all "other" servers
identified to the application via the
<tt class="literal">-o</tt> command line option. This structure
is chain-able, which makes cleaning up at program shutdown
@@ -123,7 +123,7 @@
typedef struct RepHostInfoObj{
char* host;
int port;
- RepHostInfoObj* next; // used for chaining multiple &quot;other&quot; hosts.
+ RepHostInfoObj* next; // used for chaining multiple "other" hosts.
} REP_HOST_INFO; </tt></b></pre>
<p>
Next, we update our <tt class="classname">RepConfigInfo</tt> class
@@ -151,7 +151,7 @@ public:
<pre class="programlisting">RepConfigInfo::RepConfigInfo()
{
<b class="userinput"><tt>start_policy = DB_REP_ELECTION;</tt></b>
- home = &quot;TESTDIR&quot;;
+ home = "TESTDIR";
<b class="userinput"><tt>got_listen_address = false;
totalsites = 0;
priority = 100;
@@ -160,7 +160,7 @@ public:
<p>
Next, we implement our new method, <tt class="methodname">RepConfigInfo::addOtherHost</tt>,
which is used to create <tt class="literal">RepHostInfoObj</tt> instances and add them to
- the chain of &quot;other&quot; hosts.
+ the chain of "other" hosts.
</p>
<pre class="programlisting">
<b class="userinput">
@@ -214,9 +214,9 @@ using std::endl;
using std::flush;
#define CACHESIZE (10 * 1024 * 1024)
-#define DATABASE &quot;quote.db&quot;
+#define DATABASE "quote.db"
-<b class="userinput"><tt>const char *progname = &quot;RepMgr&quot;;</tt></b> </pre>
+<b class="userinput"><tt>const char *progname = "RepMgr";</tt></b> </pre>
<p>
Next we update our usage function. The application will continue to
accept the <tt class="literal">-h</tt> parameter so that we can identify
@@ -282,20 +282,20 @@ private:
static void usage()
{
- cerr &lt;&lt; &quot;usage: &quot; &lt;&lt; progname &lt;&lt; endl
- &lt;&lt; &quot;[-h home]<b class="userinput"><tt>[-o host:port][-m host:port]</tt></b>&quot;
- <b class="userinput"><tt>&lt;&lt; &quot;[-n nsites][-p priority]&quot; &lt;&lt; endl;</tt></b>
+ cerr &lt;&lt; "usage: " &lt;&lt; progname &lt;&lt; endl
+ &lt;&lt; "[-h home]<b class="userinput"><tt>[-o host:port][-m host:port]</tt></b>"
+ <b class="userinput"><tt>&lt;&lt; "[-n nsites][-p priority]" &lt;&lt; endl;</tt></b>
- cerr <b class="userinput"><tt>&lt;&lt; &quot;\t -m host:port (required; m stands for me)&quot; &lt;&lt; endl
- &lt;&lt; &quot;\t -o host:port (optional; o stands for other; any &quot;
- &lt;&lt; &quot;number of these may be specified)&quot; &lt;&lt; endl</tt></b>
- &lt;&lt; &quot;\t -h home directory&quot; &lt;&lt; endl
- <b class="userinput"><tt>&lt;&lt; &quot;\t -n nsites (optional; number of sites in replication &quot;
- &lt;&lt; &quot;group; defaults to 0&quot; &lt;&lt; endl
- &lt;&lt; &quot;\t in which case we try to dynamically compute the &quot;
- &lt;&lt; &quot;number of sites in&quot; &lt;&lt; endl
- &lt;&lt; &quot;\t the replication group)&quot; &lt;&lt; endl
- &lt;&lt; &quot;\t -p priority (optional: defaults to 100)&quot; &lt;&lt; endl;</tt></b>
+ cerr <b class="userinput"><tt>&lt;&lt; "\t -m host:port (required; m stands for me)" &lt;&lt; endl
+ &lt;&lt; "\t -o host:port (optional; o stands for other; any "
+ &lt;&lt; "number of these may be specified)" &lt;&lt; endl</tt></b>
+ &lt;&lt; "\t -h home directory" &lt;&lt; endl
+ <b class="userinput"><tt>&lt;&lt; "\t -n nsites (optional; number of sites in replication "
+ &lt;&lt; "group; defaults to 0" &lt;&lt; endl
+ &lt;&lt; "\t in which case we try to dynamically compute the "
+ &lt;&lt; "number of sites in" &lt;&lt; endl
+ &lt;&lt; "\t the replication group)" &lt;&lt; endl
+ &lt;&lt; "\t -p priority (optional: defaults to 100)" &lt;&lt; endl;</tt></b>
exit(EXIT_FAILURE);
} </pre>
@@ -319,15 +319,15 @@ static void usage()
configure the application's election priority if necessary.
</p>
<pre class="programlisting"> // Extract the command line parameters
- while ((ch = getopt(argc, argv, &quot;h:<b class="userinput"><tt>m:n:o:p:</tt></b>&quot;)) != EOF) {
+ while ((ch = getopt(argc, argv, "h:<b class="userinput"><tt>m:n:o:p:</tt></b>")) != EOF) {
switch (ch) {
case 'h':
config.home = optarg;
break;
<b class="userinput"><tt>case 'm':
- config.this_host.host = strtok(optarg, &quot;:&quot;);
- if ((portstr = strtok(NULL, &quot;:&quot;)) == NULL) {
- cerr &lt;&lt; &quot;Bad host specification.&quot; &lt;&lt; endl;
+ config.this_host.host = strtok(optarg, ":");
+ if ((portstr = strtok(NULL, ":")) == NULL) {
+ cerr &lt;&lt; "Bad host specification." &lt;&lt; endl;
usage();
}
config.this_host.port = (unsigned short)atoi(portstr);
@@ -337,9 +337,9 @@ static void usage()
config.totalsites = atoi(optarg);
break;
case 'o':
- tmphost = strtok(optarg, &quot;:&quot;);
- if ((portstr = strtok(NULL, &quot;:&quot;)) == NULL) {
- cerr &lt;&lt; &quot;Bad host specification.&quot; &lt;&lt; endl;
+ tmphost = strtok(optarg, ":");
+ if ((portstr = strtok(NULL, ":")) == NULL) {
+ cerr &lt;&lt; "Bad host specification." &lt;&lt; endl;
usage();
}
tmpport = (unsigned short)atoi(portstr);
@@ -368,8 +368,8 @@ static void usage()
if((ret = runner.doloop()) != 0)
goto err;
} catch (DbException dbe) {
- cerr &lt;&lt; &quot;Caught an exception during initialization or&quot;
- &lt;&lt; &quot; processing: &quot; &lt;&lt; dbe.what() &lt;&lt; endl;
+ cerr &lt;&lt; "Caught an exception during initialization or"
+ &lt;&lt; " processing: " &lt;&lt; dbe.what() &lt;&lt; endl;
}
err:
runner.terminate();
@@ -399,15 +399,15 @@ int RepMgr::init(RepConfigInfo *config)
<b class="userinput"><tt>if ((ret = dbenv.repmgr_set_local_site(app_config-&gt;this_host.host,
app_config-&gt;this_host.port, 0)) != 0) {
- cerr &lt;&lt; &quot;Could not set listen address to host:port &quot;
- &lt;&lt; app_config-&gt;this_host.host &lt;&lt; &quot;:&quot;
+ cerr &lt;&lt; "Could not set listen address to host:port "
+ &lt;&lt; app_config-&gt;this_host.host &lt;&lt; ":"
&lt;&lt; app_config-&gt;this_host.port
- &lt;&lt; &quot;error: &quot; &lt;&lt; ret &lt;&lt; endl;
+ &lt;&lt; "error: " &lt;&lt; ret &lt;&lt; endl;
}</tt></b> </pre>
<p>
- And we also add code to allow us to identify &quot;other&quot; sites to the environment handle (that is,
+ And we also add code to allow us to identify "other" sites to the environment handle (that is,
the sites that we identify using the <tt class="literal">-o</tt> command line
-option). To do this, we iterate over each of the &quot;other&quot; sites provided to
+option). To do this, we iterate over each of the "other" sites provided to
us using the <tt class="literal">-o</tt> command line option, and we add each one
individually in turn:
</p>
@@ -415,7 +415,7 @@ individually in turn:
cur = cur-&gt;next) {
if ((ret = dbenv.repmgr_add_remote_site(cur-&gt;host, cur-&gt;port,
0)) != 0) {
- cerr &lt;&lt; &quot;could not add site.&quot; &lt;&lt; endl
+ cerr &lt;&lt; "could not add site." &lt;&lt; endl
}
} </tt></b> </pre>
<p>
@@ -425,9 +425,9 @@ individually in turn:
<pre class="programlisting"> <b class="userinput"><tt>if (app_config-&gt;totalsites &gt; 0) {
try {
if ((ret = dbenv.rep_set_nsites(app_config-&gt;totalsites)) != 0)
- dbenv.err(ret, &quot;set_nsites&quot;);
+ dbenv.err(ret, "set_nsites");
} catch (DbException dbe) {
- cerr &lt;&lt; &quot;rep_set_nsites call failed. Continuing.&quot; &lt;&lt; endl;
+ cerr &lt;&lt; "rep_set_nsites call failed. Continuing." &lt;&lt; endl;
}
}
dbenv.rep_set_priority(app_config-&gt;priority); </tt></b> </pre>
@@ -467,9 +467,9 @@ individually in turn:
DB_INIT_TXN,
0);
} catch(DbException dbe) {
- cerr &lt;&lt; &quot;Caught an exception during DB environment open.&quot; &lt;&lt; endl
- &lt;&lt; &quot;Ensure that the home directory is created prior to starting&quot;
- &lt;&lt; &quot; the application.&quot; &lt;&lt; endl;
+ cerr &lt;&lt; "Caught an exception during DB environment open." &lt;&lt; endl
+ &lt;&lt; "Ensure that the home directory is created prior to starting"
+ &lt;&lt; " the application." &lt;&lt; endl;
ret = ENOENT;
goto err;
}</pre>
@@ -501,18 +501,18 @@ err:
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="repapp.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="repapp.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="repapp.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="fwrkpermmessage.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="fwrkpermmessage.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Chapter 3. The DB Replication Framework </td>
+ <td width="40%" align="left" valign="top">Chapter 3. The DB Replication Framework </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Permanent Message Handling</td>
+ <td width="40%" align="right" valign="top"> Permanent Message Handling</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/CXX/simpleprogramlisting.html b/db/docs/gsg_db_rep/CXX/simpleprogramlisting.html
index 40e395005..fd0df785b 100644
--- a/db/docs/gsg_db_rep/CXX/simpleprogramlisting.html
+++ b/db/docs/gsg_db_rep/CXX/simpleprogramlisting.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Program Listing</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
- <link rel="up" href="txnapp.html" title="Chapter 2. Transactional Application" />
- <link rel="previous" href="txnapp.html" title="Chapter 2. Transactional Application" />
- <link rel="next" href="repapp.html" title="Chapter 3. The DB Replication Framework" />
+ <link rel="up" href="txnapp.html" title="Chapter 2. Transactional Application" />
+ <link rel="previous" href="txnapp.html" title="Chapter 2. Transactional Application" />
+ <link rel="next" href="repapp.html" title="Chapter 3. The DB Replication Framework" />
</head>
<body>
<div class="navheader">
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Program Listing</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="txnapp.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 2. Transactional Application</th>
- <td width="20%" align="right"> <a accesskey="n" href="repapp.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="txnapp.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 2. Transactional Application</th>
+ <td width="20%" align="right"> <a accesskey="n" href="repapp.html">Next</a></td>
</tr>
</table>
<hr />
@@ -113,7 +113,7 @@ public:
RepConfigInfo::RepConfigInfo()
{
- home = &quot;TESTDIR&quot;;
+ home = "TESTDIR";
}
RepConfigInfo::~RepConfigInfo()
@@ -150,9 +150,9 @@ using std::endl;
using std::flush;
#define CACHESIZE (10 * 1024 * 1024)
-#define DATABASE &quot;quote.db&quot;
+#define DATABASE "quote.db"
-const char *progname = &quot;SimpleTxn&quot;; </pre>
+const char *progname = "SimpleTxn"; </pre>
<p>
And then we define our <tt class="classname">RepMgr</tt> class:
</p>
@@ -204,8 +204,8 @@ private:
</p>
<pre class="programlisting">static void usage()
{
- cerr &lt;&lt; &quot;usage: &quot; &lt;&lt; progname &lt;&lt; endl
- &lt;&lt; &quot;-h home&quot; &lt;&lt; endl;
+ cerr &lt;&lt; "usage: " &lt;&lt; progname &lt;&lt; endl
+ &lt;&lt; "-h home" &lt;&lt; endl;
exit(EXIT_FAILURE);
} </pre>
@@ -244,7 +244,7 @@ private:
this point fairly trivial:
</p>
<pre class="programlisting"> // Extract the command line parameters
- while ((ch = getopt(argc, argv, &quot;h:&quot;)) != EOF) {
+ while ((ch = getopt(argc, argv, "h:")) != EOF) {
switch (ch) {
case 'h':
config.home = optarg;
@@ -279,8 +279,8 @@ private:
Finally, catch exceptions and terminate the program:
</p>
<pre class="programlisting"> } catch (DbException dbe) {
- cerr &lt;&lt; &quot;Caught an exception during initialization or&quot;
- &lt;&lt; &quot; processing: &quot; &lt;&lt; dbe.what() &lt;&lt; endl;
+ cerr &lt;&lt; "Caught an exception during initialization or"
+ &lt;&lt; " processing: " &lt;&lt; dbe.what() &lt;&lt; endl;
}
err:
runner.terminate();
@@ -344,9 +344,9 @@ err:
DB_INIT_TXN,
0);
} catch(DbException dbe) {
- cerr &lt;&lt; &quot;Caught an exception during DB environment open.&quot; &lt;&lt; endl
- &lt;&lt; &quot;Ensure that the home directory is created prior to starting&quot;
- &lt;&lt; &quot; the application.&quot; &lt;&lt; endl;
+ cerr &lt;&lt; "Caught an exception during DB environment open." &lt;&lt; endl
+ &lt;&lt; "Ensure that the home directory is created prior to starting"
+ &lt;&lt; " the application." &lt;&lt; endl;
ret = ENOENT;
goto err;
}
@@ -365,7 +365,7 @@ err:
try {
dbenv.close(0);
} catch (DbException dbe) {
- cerr &lt;&lt; &quot;error closing environment: &quot; &lt;&lt; dbe.what() &lt;&lt; endl;
+ cerr &lt;&lt; "error closing environment: " &lt;&lt; dbe.what() &lt;&lt; endl;
}
return 0;
} </pre>
@@ -438,7 +438,7 @@ int RepMgr::doloop()
dbp-&gt;open(NULL, DATABASE, NULL, DB_BTREE,
DB_CREATE | DB_AUTO_COMMIT, 0);
} catch(DbException dbe) {
- dbenv.err(ret, &quot;DB-&gt;open&quot;);
+ dbenv.err(ret, "DB-&gt;open");
throw dbe;
}
} </pre>
@@ -464,26 +464,26 @@ int RepMgr::doloop()
However, in order to keep this example code as simple as
possible, we refrain from implementing a thorough user interface.
</p>
- <pre class="programlisting"> cout &lt;&lt; &quot;QUOTESERVER&quot; ;
- cout &lt;&lt; &quot;&gt; &quot; &lt;&lt; flush;
+ <pre class="programlisting"> cout &lt;&lt; "QUOTESERVER" ;
+ cout &lt;&lt; "&gt; " &lt;&lt; flush;
if (fgets(buf, sizeof(buf), stdin) == NULL)
break;
- if (strtok(&amp;buf[0], &quot; \t\n&quot;) == NULL) {
+ if (strtok(&amp;buf[0], " \t\n") == NULL) {
switch ((ret = print_stocks(dbp))) {
case 0:
continue;
default:
- dbp-&gt;err(ret, &quot;Error traversing data&quot;);
+ dbp-&gt;err(ret, "Error traversing data");
goto err;
}
}
- rbuf = strtok(NULL, &quot; \t\n&quot;);
+ rbuf = strtok(NULL, " \t\n");
if (rbuf == NULL || rbuf[0] == '\0') {
- if (strncmp(buf, &quot;exit&quot;, 4) == 0 ||
- strncmp(buf, &quot;quit&quot;, 4) == 0)
+ if (strncmp(buf, "exit", 4) == 0 ||
+ strncmp(buf, "quit", 4) == 0)
break;
- dbenv.errx(&quot;Format: TICKER VALUE&quot;);
+ dbenv.errx("Format: TICKER VALUE");
continue;
} </pre>
<p>
@@ -502,12 +502,12 @@ int RepMgr::doloop()
the database is not configured for duplicate records, so
the data portion of a record is overwritten if the provided
key already exists in the database. However, in this case
- DB returns <tt class="literal">DB_KEYEXIST</tt> &#8212; which
+ DB returns <tt class="literal">DB_KEYEXIST</tt> — which
we ignore.
</p>
<pre class="programlisting"> if ((ret = dbp-&gt;put(NULL, &amp;key, &amp;data, 0)) != 0)
{
- dbp-&gt;err(ret, &quot;DB-&gt;put&quot;);
+ dbp-&gt;err(ret, "DB-&gt;put");
if (ret != DB_KEYEXIST)
goto err;
}
@@ -518,7 +518,7 @@ int RepMgr::doloop()
</p>
<pre class="programlisting">err: if (dbp != NULL) {
(void)dbp-&gt;close(DB_NOSYNC);
- cout &lt;&lt; &quot;database closed&quot; &lt;&lt; endl;
+ cout &lt;&lt; "database closed" &lt;&lt; endl;
}
return (ret);
@@ -564,15 +564,15 @@ int RepMgr::doloop()
u_int32_t keysize, datasize;
if ((ret = dbp-&gt;cursor(NULL, &amp;dbc, 0)) != 0) {
- dbp-&gt;err(ret, &quot;can't open cursor&quot;);
+ dbp-&gt;err(ret, "can't open cursor");
return (ret);
}
memset(&amp;key, 0, sizeof(key));
memset(&amp;data, 0, sizeof(data));
- cout &lt;&lt; &quot;\tSymbol\tPrice&quot; &lt;&lt; endl
- &lt;&lt; &quot;\t======\t=====&quot; &lt;&lt; endl;
+ cout &lt;&lt; "\tSymbol\tPrice" &lt;&lt; endl
+ &lt;&lt; "\t======\t=====" &lt;&lt; endl;
for (ret = dbc-&gt;get(&amp;key, &amp;data, DB_FIRST);
ret == 0;
@@ -586,12 +586,12 @@ int RepMgr::doloop()
memcpy(databuf, data.get_data(), datasize);
databuf[datasize] = '\0';
- cout &lt;&lt; &quot;\t&quot; &lt;&lt; keybuf &lt;&lt; &quot;\t&quot; &lt;&lt; databuf &lt;&lt; endl;
+ cout &lt;&lt; "\t" &lt;&lt; keybuf &lt;&lt; "\t" &lt;&lt; databuf &lt;&lt; endl;
}
cout &lt;&lt; endl &lt;&lt; flush;
if ((t_ret = dbc-&gt;close()) != 0 &amp;&amp; ret == 0) {
- cout &lt;&lt; &quot;closed cursor&quot; &lt;&lt; endl;
+ cout &lt;&lt; "closed cursor" &lt;&lt; endl;
ret = t_ret;
}
@@ -609,18 +609,18 @@ int RepMgr::doloop()
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="txnapp.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="txnapp.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="txnapp.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="repapp.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="repapp.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Chapter 2. Transactional Application </td>
+ <td width="40%" align="left" valign="top">Chapter 2. Transactional Application </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Chapter 3. The DB Replication Framework</td>
+ <td width="40%" align="right" valign="top"> Chapter 3. The DB Replication Framework</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/CXX/txnapp.html b/db/docs/gsg_db_rep/CXX/txnapp.html
index c8b12fa93..13e428d07 100644
--- a/db/docs/gsg_db_rep/CXX/txnapp.html
+++ b/db/docs/gsg_db_rep/CXX/txnapp.html
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <title>Chapter 2. Transactional Application</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Chapter 2. Transactional Application</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
@@ -15,12 +15,12 @@
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
- <th colspan="3" align="center">Chapter 2. Transactional Application</th>
+ <th colspan="3" align="center">Chapter 2. Transactional Application</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="permmessages.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="simpleprogramlisting.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="permmessages.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="simpleprogramlisting.html">Next</a></td>
</tr>
</table>
<hr />
@@ -29,7 +29,7 @@
<div class="titlepage">
<div>
<div>
- <h2 class="title"><a id="txnapp"></a>Chapter 2. Transactional Application</h2>
+ <h2 class="title"><a id="txnapp"></a>Chapter 2. Transactional Application</h2>
</div>
</div>
<div></div>
@@ -168,18 +168,18 @@ QUOTESERVER&gt; quit
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="permmessages.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="permmessages.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="simpleprogramlisting.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="simpleprogramlisting.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Permanent Message Handling </td>
+ <td width="40%" align="left" valign="top">Permanent Message Handling </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Program Listing</td>
+ <td width="40%" align="right" valign="top"> Program Listing</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/JAVA/Replication-JAVA-GSG.pdf b/db/docs/gsg_db_rep/JAVA/Replication-JAVA-GSG.pdf
index 6c612292a..eb85948f2 100644
--- a/db/docs/gsg_db_rep/JAVA/Replication-JAVA-GSG.pdf
+++ b/db/docs/gsg_db_rep/JAVA/Replication-JAVA-GSG.pdf
Binary files differ
diff --git a/db/docs/gsg_db_rep/JAVA/addfeatures.html b/db/docs/gsg_db_rep/JAVA/addfeatures.html
index 223d1d985..c10d244b0 100644
--- a/db/docs/gsg_db_rep/JAVA/addfeatures.html
+++ b/db/docs/gsg_db_rep/JAVA/addfeatures.html
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <title>Chapter 5. Additional Features</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Chapter 5. Additional Features</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
@@ -15,12 +15,12 @@
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
- <th colspan="3" align="center">Chapter 5. Additional Features</th>
+ <th colspan="3" align="center">Chapter 5. Additional Features</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="exampledoloop.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="manageblock.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="exampledoloop.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="manageblock.html">Next</a></td>
</tr>
</table>
<hr />
@@ -29,7 +29,7 @@
<div class="titlepage">
<div>
<div>
- <h2 class="title"><a id="addfeatures"></a>Chapter 5. Additional Features</h2>
+ <h2 class="title"><a id="addfeatures"></a>Chapter 5. Additional Features</h2>
</div>
</div>
<div></div>
@@ -173,18 +173,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="exampledoloop.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="exampledoloop.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="manageblock.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="manageblock.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Example Processing Loop </td>
+ <td width="40%" align="left" valign="top">Example Processing Loop </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Managing Blocking Operations</td>
+ <td width="40%" align="right" valign="top"> Managing Blocking Operations</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/JAVA/apioverview.html b/db/docs/gsg_db_rep/JAVA/apioverview.html
index 938a33c1f..fcc9d151e 100644
--- a/db/docs/gsg_db_rep/JAVA/apioverview.html
+++ b/db/docs/gsg_db_rep/JAVA/apioverview.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>The Replication APIs</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
- <link rel="up" href="introduction.html" title="Chapter 1. Introduction" />
+ <link rel="up" href="introduction.html" title="Chapter 1. Introduction" />
<link rel="previous" href="repadvantage.html" title="Replication Benefits" />
<link rel="next" href="elections.html" title="Holding Elections" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">The Replication APIs</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="repadvantage.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 1. Introduction</th>
- <td width="20%" align="right"> <a accesskey="n" href="elections.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="repadvantage.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 1. Introduction</th>
+ <td width="20%" align="right"> <a accesskey="n" href="elections.html">Next</a></td>
</tr>
</table>
<hr />
@@ -208,18 +208,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="repadvantage.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="repadvantage.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="introduction.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="elections.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="elections.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Replication Benefits </td>
+ <td width="40%" align="left" valign="top">Replication Benefits </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Holding Elections</td>
+ <td width="40%" align="right" valign="top"> Holding Elections</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/JAVA/bulk.html b/db/docs/gsg_db_rep/JAVA/bulk.html
index a2515ef18..005b198f2 100644
--- a/db/docs/gsg_db_rep/JAVA/bulk.html
+++ b/db/docs/gsg_db_rep/JAVA/bulk.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Bulk Transfers</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
- <link rel="up" href="addfeatures.html" title="Chapter 5. Additional Features" />
+ <link rel="up" href="addfeatures.html" title="Chapter 5. Additional Features" />
<link rel="previous" href="c2ctransfer.html" title="Client to Client Transfer" />
</head>
<body>
@@ -17,9 +17,9 @@
<th colspan="3" align="center">Bulk Transfers</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="c2ctransfer.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 5. Additional Features</th>
- <td width="20%" align="right"> </td>
+ <td width="20%" align="left"><a accesskey="p" href="c2ctransfer.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 5. Additional Features</th>
+ <td width="20%" align="right"> </td>
</tr>
</table>
<hr />
@@ -121,18 +121,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="c2ctransfer.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="c2ctransfer.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="addfeatures.html">Up</a>
</td>
- <td width="40%" align="right"> </td>
+ <td width="40%" align="right"> </td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Client to Client Transfer </td>
+ <td width="40%" align="left" valign="top">Client to Client Transfer </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> </td>
+ <td width="40%" align="right" valign="top"> </td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/JAVA/c2ctransfer.html b/db/docs/gsg_db_rep/JAVA/c2ctransfer.html
index 4491d318b..dbf3a1f33 100644
--- a/db/docs/gsg_db_rep/JAVA/c2ctransfer.html
+++ b/db/docs/gsg_db_rep/JAVA/c2ctransfer.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Client to Client Transfer</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
- <link rel="up" href="addfeatures.html" title="Chapter 5. Additional Features" />
+ <link rel="up" href="addfeatures.html" title="Chapter 5. Additional Features" />
<link rel="previous" href="noautoinit.html" title="Stop Auto-Initialization" />
<link rel="next" href="bulk.html" title="Bulk Transfers" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Client to Client Transfer</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="noautoinit.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 5. Additional Features</th>
- <td width="20%" align="right"> <a accesskey="n" href="bulk.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="noautoinit.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 5. Additional Features</th>
+ <td width="20%" align="right"> <a accesskey="n" href="bulk.html">Next</a></td>
</tr>
</table>
<hr />
@@ -116,18 +116,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="noautoinit.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="noautoinit.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="addfeatures.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="bulk.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="bulk.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Stop Auto-Initialization </td>
+ <td width="40%" align="left" valign="top">Stop Auto-Initialization </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Bulk Transfers</td>
+ <td width="40%" align="right" valign="top"> Bulk Transfers</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/JAVA/elections.html b/db/docs/gsg_db_rep/JAVA/elections.html
index 8157cf14a..5d67963fe 100644
--- a/db/docs/gsg_db_rep/JAVA/elections.html
+++ b/db/docs/gsg_db_rep/JAVA/elections.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Holding Elections</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
- <link rel="up" href="introduction.html" title="Chapter 1. Introduction" />
+ <link rel="up" href="introduction.html" title="Chapter 1. Introduction" />
<link rel="previous" href="apioverview.html" title="The Replication APIs" />
<link rel="next" href="permmessages.html" title="Permanent Message Handling" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Holding Elections</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="apioverview.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 1. Introduction</th>
- <td width="20%" align="right"> <a accesskey="n" href="permmessages.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="apioverview.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 1. Introduction</th>
+ <td width="20%" align="right"> <a accesskey="n" href="permmessages.html">Next</a></td>
</tr>
</table>
<hr />
@@ -208,18 +208,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="apioverview.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="apioverview.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="introduction.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="permmessages.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="permmessages.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">The Replication APIs </td>
+ <td width="40%" align="left" valign="top">The Replication APIs </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Permanent Message Handling</td>
+ <td width="40%" align="right" valign="top"> Permanent Message Handling</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/JAVA/electiontimes.html b/db/docs/gsg_db_rep/JAVA/electiontimes.html
index 7a39ac11a..8ba719e55 100644
--- a/db/docs/gsg_db_rep/JAVA/electiontimes.html
+++ b/db/docs/gsg_db_rep/JAVA/electiontimes.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Managing Election Times</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
- <link rel="up" href="repapp.html" title="Chapter 3. The DB Replication Framework" />
+ <link rel="up" href="repapp.html" title="Chapter 3. The DB Replication Framework" />
<link rel="previous" href="fwrkpermmessage.html" title="Permanent Message Handling" />
<link rel="next" href="fmwrkconnectretry.html" title="Managing Connection Retries" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Managing Election Times</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="fwrkpermmessage.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 3. The DB Replication Framework</th>
- <td width="20%" align="right"> <a accesskey="n" href="fmwrkconnectretry.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="fwrkpermmessage.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 3. The DB Replication Framework</th>
+ <td width="20%" align="right"> <a accesskey="n" href="fmwrkconnectretry.html">Next</a></td>
</tr>
</table>
<hr />
@@ -127,18 +127,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="fwrkpermmessage.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="fwrkpermmessage.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="repapp.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="fmwrkconnectretry.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="fmwrkconnectretry.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Permanent Message Handling </td>
+ <td width="40%" align="left" valign="top">Permanent Message Handling </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Managing Connection Retries</td>
+ <td width="40%" align="right" valign="top"> Managing Connection Retries</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/JAVA/exampledoloop.html b/db/docs/gsg_db_rep/JAVA/exampledoloop.html
index d1da6e978..bc2bdc75e 100644
--- a/db/docs/gsg_db_rep/JAVA/exampledoloop.html
+++ b/db/docs/gsg_db_rep/JAVA/exampledoloop.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Example Processing Loop</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
- <link rel="up" href="fwrkmasterreplica.html" title="Chapter 4. Replica versus Master Processes" />
+ <link rel="up" href="fwrkmasterreplica.html" title="Chapter 4. Replica versus Master Processes" />
<link rel="previous" href="processingloop.html" title="Processing Loop" />
- <link rel="next" href="addfeatures.html" title="Chapter 5. Additional Features" />
+ <link rel="next" href="addfeatures.html" title="Chapter 5. Additional Features" />
</head>
<body>
<div class="navheader">
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Example Processing Loop</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="processingloop.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 4. Replica versus Master Processes</th>
- <td width="20%" align="right"> <a accesskey="n" href="addfeatures.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="processingloop.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 4. Replica versus Master Processes</th>
+ <td width="20%" align="right"> <a accesskey="n" href="addfeatures.html">Next</a></td>
</tr>
</table>
<hr />
@@ -204,9 +204,9 @@ public class RepQuoteExample <b class="userinput"><tt> implements EventHandler</
try {
dbenv = new <b class="userinput"><tt>RepQuoteEnvironment</tt></b>(appConfig.getHome(), envConfig);
} catch(FileNotFoundException e) {
- System.err.println(&quot;FileNotFound exception: &quot; + e.toString());
+ System.err.println("FileNotFound exception: " + e.toString());
System.err.println(
- &quot;Ensure that the environment directory is pre-created.&quot;);
+ "Ensure that the environment directory is pre-created.");
ret = 1;
}
@@ -231,7 +231,7 @@ public class RepQuoteExample <b class="userinput"><tt> implements EventHandler</
else if (event == EventType.REP_NEW_MASTER) {
// ignored for now.
} else {
- System.err.println(&quot;Unknown event callback received.\n&quot;);
+ System.err.println("Unknown event callback received.\n");
ret = 1;
}
return ret;
@@ -283,7 +283,7 @@ public class RepQuoteExample <b class="userinput"><tt> implements EventHandler</
db = dbenv.openDatabase
(null, RepConfig.progname, null, dbconf);
} catch (java.io.FileNotFoundException e) {
- <b class="userinput"><tt>System.err.println(&quot;no stock database available yet.&quot;);
+ <b class="userinput"><tt>System.err.println("no stock database available yet.");
if (db != null) {
db.close(true);
db = null;
@@ -303,19 +303,19 @@ public class RepQuoteExample <b class="userinput"><tt> implements EventHandler</
new BufferedReader(new InputStreamReader(System.in));
// listen for input, and add it to the database.
- System.out.print(&quot;QUOTESERVER&quot;);
+ System.out.print("QUOTESERVER");
<b class="userinput"><tt>if (!dbenv.getIsMaster())
- System.out.print(&quot;(read-only)&quot;);
- System.out.print(&quot;&gt; &quot;);</tt></b>
+ System.out.print("(read-only)");
+ System.out.print("&gt; ");</tt></b>
System.out.flush();
String nextline = null;
try {
nextline = stdin.readLine();
} catch (IOException ioe) {
- System.err.println(&quot;Unable to get data from stdin&quot;);
+ System.err.println("Unable to get data from stdin");
break;
}
- String[] words = nextline.split(&quot;\\s&quot;); </pre>
+ String[] words = nextline.split("\\s"); </pre>
<p>
When we collect data from the prompt, there is a case that says
if no data is entered then show the entire stocks database.
@@ -361,19 +361,19 @@ public class RepQuoteExample <b class="userinput"><tt> implements EventHandler</
db = null;
continue;</tt></b>
} catch (DatabaseException e) {
- System.err.println(&quot;Got db exception reading &quot; +
- &quot;replication DB: &quot; + e.toString());
+ System.err.println("Got db exception reading " +
+ "replication DB: " + e.toString());
break;
}
continue;
}
if (words.length == 1 &amp;&amp;
- (words[0].compareToIgnoreCase(&quot;quit&quot;) == 0 ||
- words[0].compareToIgnoreCase(&quot;exit&quot;) == 0)) {
+ (words[0].compareToIgnoreCase("quit") == 0 ||
+ words[0].compareToIgnoreCase("exit") == 0)) {
break;
} else if (words.length != 2) {
- System.err.println(&quot;Format: TICKER VALUE&quot;);
+ System.err.println("Format: TICKER VALUE");
continue;
} </pre>
<p>
@@ -384,7 +384,7 @@ public class RepQuoteExample <b class="userinput"><tt> implements EventHandler</
that happening due to user input at the prompt.
</p>
<pre class="programlisting"> <b class="userinput"><tt>if (!dbenv.getIsMaster()) {
- System.err.println(&quot;Can't update client.&quot;);
+ System.err.println("Can't update client.");
continue;
}</tt></b>
@@ -540,18 +540,18 @@ QUOTESERVER (read-only)&gt; </pre>
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="processingloop.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="processingloop.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="fwrkmasterreplica.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="addfeatures.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="addfeatures.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Processing Loop </td>
+ <td width="40%" align="left" valign="top">Processing Loop </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Chapter 5. Additional Features</td>
+ <td width="40%" align="right" valign="top"> Chapter 5. Additional Features</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/JAVA/fmwrkconnectretry.html b/db/docs/gsg_db_rep/JAVA/fmwrkconnectretry.html
index 6fe429ade..717ef4af8 100644
--- a/db/docs/gsg_db_rep/JAVA/fmwrkconnectretry.html
+++ b/db/docs/gsg_db_rep/JAVA/fmwrkconnectretry.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Managing Connection Retries</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
- <link rel="up" href="repapp.html" title="Chapter 3. The DB Replication Framework" />
+ <link rel="up" href="repapp.html" title="Chapter 3. The DB Replication Framework" />
<link rel="previous" href="electiontimes.html" title="Managing Election Times" />
- <link rel="next" href="fwrkmasterreplica.html" title="Chapter 4. Replica versus Master Processes" />
+ <link rel="next" href="fwrkmasterreplica.html" title="Chapter 4. Replica versus Master Processes" />
</head>
<body>
<div class="navheader">
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Managing Connection Retries</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="electiontimes.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 3. The DB Replication Framework</th>
- <td width="20%" align="right"> <a accesskey="n" href="fwrkmasterreplica.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="electiontimes.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 3. The DB Replication Framework</th>
+ <td width="20%" align="right"> <a accesskey="n" href="fwrkmasterreplica.html">Next</a></td>
</tr>
</table>
<hr />
@@ -62,18 +62,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="electiontimes.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="electiontimes.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="repapp.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="fwrkmasterreplica.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="fwrkmasterreplica.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Managing Election Times </td>
+ <td width="40%" align="left" valign="top">Managing Election Times </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Chapter 4. Replica versus Master Processes</td>
+ <td width="40%" align="right" valign="top"> Chapter 4. Replica versus Master Processes</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/JAVA/fwrkmasterreplica.html b/db/docs/gsg_db_rep/JAVA/fwrkmasterreplica.html
index d7694c2c6..47f644622 100644
--- a/db/docs/gsg_db_rep/JAVA/fwrkmasterreplica.html
+++ b/db/docs/gsg_db_rep/JAVA/fwrkmasterreplica.html
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <title>Chapter 4. Replica versus Master Processes</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Chapter 4. Replica versus Master Processes</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
@@ -15,12 +15,12 @@
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
- <th colspan="3" align="center">Chapter 4. Replica versus Master Processes</th>
+ <th colspan="3" align="center">Chapter 4. Replica versus Master Processes</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="fmwrkconnectretry.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="processingloop.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="fmwrkconnectretry.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="processingloop.html">Next</a></td>
</tr>
</table>
<hr />
@@ -29,7 +29,7 @@
<div class="titlepage">
<div>
<div>
- <h2 class="title"><a id="fwrkmasterreplica"></a>Chapter 4. Replica versus Master Processes</h2>
+ <h2 class="title"><a id="fwrkmasterreplica"></a>Chapter 4. Replica versus Master Processes</h2>
</div>
</div>
<div></div>
@@ -218,7 +218,7 @@ isMaster = false;
// we must identify the class that is the event handler. In this
// example, we are performing this from within the class that
// implements com.sleepycat.db.EventHandler so we identify
-// &quot;this&quot; class as the event handler
+// "this" class as the event handler
envConfig.setEventHandler(this); </pre>
<p>
That done, we still need to implement the <tt class="methodname">handleEvent</tt>
@@ -234,7 +234,7 @@ envConfig.setEventHandler(this); </pre>
else if (event == EventType.REP_NEW_MASTER) {
// ignored for now.
} else {
- System.err.println(&quot;Unknown event callback received.\n&quot;);
+ System.err.println("Unknown event callback received.\n");
ret = 1;
}
return ret;
@@ -251,18 +251,18 @@ envConfig.setEventHandler(this); </pre>
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="fmwrkconnectretry.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="fmwrkconnectretry.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="processingloop.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="processingloop.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Managing Connection Retries </td>
+ <td width="40%" align="left" valign="top">Managing Connection Retries </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Processing Loop</td>
+ <td width="40%" align="right" valign="top"> Processing Loop</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/JAVA/fwrkpermmessage.html b/db/docs/gsg_db_rep/JAVA/fwrkpermmessage.html
index 7eda5259f..d7b5cab6f 100644
--- a/db/docs/gsg_db_rep/JAVA/fwrkpermmessage.html
+++ b/db/docs/gsg_db_rep/JAVA/fwrkpermmessage.html
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Permanent Message Handling</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
- <link rel="up" href="repapp.html" title="Chapter 3. The DB Replication Framework" />
- <link rel="previous" href="repmgr_init_example_c.html" title="Adding the Replication Framework to&#10; &#10; &#10; " />
+ <link rel="up" href="repapp.html" title="Chapter 3. The DB Replication Framework" />
+ <link rel="previous" href="repmgr_init_example_c.html" title="Adding the Replication Framework to&#10; &#10; SimpleTxn&#10; " />
<link rel="next" href="electiontimes.html" title="Managing Election Times" />
</head>
<body>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Permanent Message Handling</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="repmgr_init_example_c.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 3. The DB Replication Framework</th>
- <td width="20%" align="right"> <a accesskey="n" href="electiontimes.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="repmgr_init_example_c.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 3. The DB Replication Framework</th>
+ <td width="20%" align="right"> <a accesskey="n" href="electiontimes.html">Next</a></td>
</tr>
</table>
<hr />
@@ -113,7 +113,7 @@
<p>
No permanent message acknowledgments are required. If
this policy is selected, permanent message handling is
- essentially &quot;turned off.&quot; That is, the master will
+ essentially "turned off." That is, the master will
never wait for replica acknowledgments. In this case,
transaction log data is either flushed or not strictly
depending on the type of commit that is being performed
@@ -336,21 +336,21 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="repmgr_init_example_c.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="repmgr_init_example_c.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="repapp.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="electiontimes.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="electiontimes.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">Adding the Replication Framework to
-
-  </td>
+ SimpleTxn
+  </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Managing Election Times</td>
+ <td width="40%" align="right" valign="top"> Managing Election Times</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/JAVA/index.html b/db/docs/gsg_db_rep/JAVA/index.html
index 07402f6b2..d57f61962 100644
--- a/db/docs/gsg_db_rep/JAVA/index.html
+++ b/db/docs/gsg_db_rep/JAVA/index.html
@@ -1,8 +1,8 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Getting Started with Replicated Berkeley DB Applications</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
@@ -16,9 +16,9 @@
<th colspan="3" align="center">Getting Started with Replicated Berkeley DB Applications</th>
</tr>
<tr>
- <td width="20%" align="left"> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="preface.html">Next</a></td>
+ <td width="20%" align="left"> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="preface.html">Next</a></td>
</tr>
</table>
<hr />
@@ -27,7 +27,7 @@
<div class="titlepage">
<div>
<div>
- <h1 class="title"><a id="id650925"></a>Getting Started with Replicated Berkeley DB Applications</h1>
+ <h1 class="title"><a id="id613740"></a>Getting Started with Replicated Berkeley DB Applications</h1>
</div>
<div>
<div class="legalnotice">
@@ -37,7 +37,7 @@
<p>
This documentation is distributed under an open source license.
You may review the terms of this license at:
- <a href="http://www.oracle.com/technology/software/products/berkeley-db/htdocs/oslicensing.html" target="_top">http://www.oracle.com/technology/software/products/berkeley-db/htdocs/oslicensing.html</a>
+ <a href="http://www.oracle.com/technology/software/products/berkeley-db/htdocs/oslicense.html" target="_top">http://www.oracle.com/technology/software/products/berkeley-db/htdocs/oslicense.html</a>
</p>
@@ -47,12 +47,12 @@
and
Sleepycat are trademarks or registered trademarks of
- Oracle Corporation. All rights to these marks are reserved.
+ Oracle. All rights to these marks are reserved.
No third-party use is permitted without the
- express prior written consent of Oracle Corporation.
+ express prior written consent of Oracle.
</p>
<p>
- <span class="trademark">Java</span>&#8482; and all Java-based marks are a trademark
+ <span class="trademark">Java</span>â„¢ and all Java-based marks are a trademark
or registered trademark of Sun Microsystems,
Inc, in the United States and other countries.
</p>
@@ -66,7 +66,7 @@
</div>
</div>
<div>
- <p class="pubdate">9/20/2006</p>
+ <p class="pubdate">6/30/2007</p>
</div>
</div>
<div></div>
@@ -304,7 +304,7 @@
<span class="sect1">
<a href="repmgr_init_example_c.html">Adding the Replication Framework to
-
+ SimpleTxn
</a>
</span>
</dt>
@@ -445,14 +445,14 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"> </td>
- <td width="20%" align="center"> </td>
- <td width="40%" align="right"> <a accesskey="n" href="preface.html">Next</a></td>
+ <td width="40%" align="left"> </td>
+ <td width="20%" align="center"> </td>
+ <td width="40%" align="right"> <a accesskey="n" href="preface.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top"> </td>
- <td width="20%" align="center"> </td>
- <td width="40%" align="right" valign="top"> Preface</td>
+ <td width="40%" align="left" valign="top"> </td>
+ <td width="20%" align="center"> </td>
+ <td width="40%" align="right" valign="top"> Preface</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/JAVA/introduction.html b/db/docs/gsg_db_rep/JAVA/introduction.html
index dce03b363..47da0c3eb 100644
--- a/db/docs/gsg_db_rep/JAVA/introduction.html
+++ b/db/docs/gsg_db_rep/JAVA/introduction.html
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <title>Chapter 1. Introduction</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Chapter 1. Introduction</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
@@ -15,12 +15,12 @@
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
- <th colspan="3" align="center">Chapter 1. Introduction</th>
+ <th colspan="3" align="center">Chapter 1. Introduction</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="preface.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="repadvantage.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="preface.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="repadvantage.html">Next</a></td>
</tr>
</table>
<hr />
@@ -29,7 +29,7 @@
<div class="titlepage">
<div>
<div>
- <h2 class="title"><a id="introduction"></a>Chapter 1. Introduction</h2>
+ <h2 class="title"><a id="introduction"></a>Chapter 1. Introduction</h2>
</div>
</div>
<div></div>
@@ -250,7 +250,7 @@
<p>
There is no DB-specified limit to the number of
environments which can participate in a replication group.
- The only limitation here is one of resources &#8212;
+ The only limitation here is one of resources —
network bandwidth, for example.
</p>
<p>
@@ -356,7 +356,7 @@
implement them.
</p>
<p>
- When holding an election, replicas &quot;vote&quot; on who should
+ When holding an election, replicas "vote" on who should
be the master. Among replicas participating in the
election, the one with the most up-to-date set of log
records will win the election. Note that it's possible
@@ -376,18 +376,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="preface.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="preface.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="repadvantage.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="repadvantage.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Preface </td>
+ <td width="40%" align="left" valign="top">Preface </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Replication Benefits</td>
+ <td width="40%" align="right" valign="top"> Replication Benefits</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/JAVA/manageblock.html b/db/docs/gsg_db_rep/JAVA/manageblock.html
index 620562e2c..067caf454 100644
--- a/db/docs/gsg_db_rep/JAVA/manageblock.html
+++ b/db/docs/gsg_db_rep/JAVA/manageblock.html
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Managing Blocking Operations</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
- <link rel="up" href="addfeatures.html" title="Chapter 5. Additional Features" />
- <link rel="previous" href="addfeatures.html" title="Chapter 5. Additional Features" />
+ <link rel="up" href="addfeatures.html" title="Chapter 5. Additional Features" />
+ <link rel="previous" href="addfeatures.html" title="Chapter 5. Additional Features" />
<link rel="next" href="noautoinit.html" title="Stop Auto-Initialization" />
</head>
<body>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Managing Blocking Operations</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="addfeatures.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 5. Additional Features</th>
- <td width="20%" align="right"> <a accesskey="n" href="noautoinit.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="addfeatures.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 5. Additional Features</th>
+ <td width="20%" align="right"> <a accesskey="n" href="noautoinit.html">Next</a></td>
</tr>
</table>
<hr />
@@ -72,18 +72,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="addfeatures.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="addfeatures.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="addfeatures.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="noautoinit.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="noautoinit.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Chapter 5. Additional Features </td>
+ <td width="40%" align="left" valign="top">Chapter 5. Additional Features </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Stop Auto-Initialization</td>
+ <td width="40%" align="right" valign="top"> Stop Auto-Initialization</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/JAVA/noautoinit.html b/db/docs/gsg_db_rep/JAVA/noautoinit.html
index 1a6decd6e..64209e424 100644
--- a/db/docs/gsg_db_rep/JAVA/noautoinit.html
+++ b/db/docs/gsg_db_rep/JAVA/noautoinit.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Stop Auto-Initialization</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
- <link rel="up" href="addfeatures.html" title="Chapter 5. Additional Features" />
+ <link rel="up" href="addfeatures.html" title="Chapter 5. Additional Features" />
<link rel="previous" href="manageblock.html" title="Managing Blocking Operations" />
<link rel="next" href="c2ctransfer.html" title="Client to Client Transfer" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Stop Auto-Initialization</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="manageblock.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 5. Additional Features</th>
- <td width="20%" align="right"> <a accesskey="n" href="c2ctransfer.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="manageblock.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 5. Additional Features</th>
+ <td width="20%" align="right"> <a accesskey="n" href="c2ctransfer.html">Next</a></td>
</tr>
</table>
<hr />
@@ -70,18 +70,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="manageblock.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="manageblock.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="addfeatures.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="c2ctransfer.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="c2ctransfer.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Managing Blocking Operations </td>
+ <td width="40%" align="left" valign="top">Managing Blocking Operations </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Client to Client Transfer</td>
+ <td width="40%" align="right" valign="top"> Client to Client Transfer</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/JAVA/permmessages.html b/db/docs/gsg_db_rep/JAVA/permmessages.html
index 9a8747053..3a08a8f68 100644
--- a/db/docs/gsg_db_rep/JAVA/permmessages.html
+++ b/db/docs/gsg_db_rep/JAVA/permmessages.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Permanent Message Handling</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
- <link rel="up" href="introduction.html" title="Chapter 1. Introduction" />
+ <link rel="up" href="introduction.html" title="Chapter 1. Introduction" />
<link rel="previous" href="elections.html" title="Holding Elections" />
- <link rel="next" href="txnapp.html" title="Chapter 2. Transactional Application" />
+ <link rel="next" href="txnapp.html" title="Chapter 2. Transactional Application" />
</head>
<body>
<div class="navheader">
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Permanent Message Handling</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="elections.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 1. Introduction</th>
- <td width="20%" align="right"> <a accesskey="n" href="txnapp.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="elections.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 1. Introduction</th>
+ <td width="20%" align="right"> <a accesskey="n" href="txnapp.html">Next</a></td>
</tr>
</table>
<hr />
@@ -81,8 +81,8 @@
</p>
<p>
If the master does not
- receive message acknowledgments &#8212; or, more likely, it does not receive
- <span class="emphasis"><em>enough</em></span> acknowledgments &#8212; the
+ receive message acknowledgments — or, more likely, it does not receive
+ <span class="emphasis"><em>enough</em></span> acknowledgments — the
committing thread flushes its log data to disk and then
continues operations as normal. The master application can
do this because replicas that fail to handle a message, for
@@ -371,18 +371,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="elections.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="elections.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="introduction.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="txnapp.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="txnapp.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Holding Elections </td>
+ <td width="40%" align="left" valign="top">Holding Elections </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Chapter 2. Transactional Application</td>
+ <td width="40%" align="right" valign="top"> Chapter 2. Transactional Application</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/JAVA/preface.html b/db/docs/gsg_db_rep/JAVA/preface.html
index 909206faa..894d26171 100644
--- a/db/docs/gsg_db_rep/JAVA/preface.html
+++ b/db/docs/gsg_db_rep/JAVA/preface.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Preface</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
<link rel="up" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
<link rel="previous" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
- <link rel="next" href="introduction.html" title="Chapter 1. Introduction" />
+ <link rel="next" href="introduction.html" title="Chapter 1. Introduction" />
</head>
<body>
<div class="navheader">
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Preface</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="index.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="introduction.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="index.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="introduction.html">Next</a></td>
</tr>
</table>
<hr />
@@ -88,14 +88,14 @@
Class names are represented in <tt class="classname">monospaced font</tt>, as are <tt class="methodname">method
names</tt>. For example:
- <span>&quot;The <tt class="methodname">Environment()</tt>
- constructor returns an <tt class="classname">Environment</tt> class object.&quot;</span>
+ <span>"The <tt class="methodname">Environment()</tt>
+ constructor returns an <tt class="classname">Environment</tt> class object."</span>
</p>
<p>
- Variable or non-literal text is presented in <span class="emphasis"><em>italics</em></span>. For example: &quot;Go to your
- <span class="emphasis"><em>DB_INSTALL</em></span> directory.&quot;
+ Variable or non-literal text is presented in <span class="emphasis"><em>italics</em></span>. For example: "Go to your
+ <span class="emphasis"><em>DB_INSTALL</em></span> directory."
</p>
<p>
Program examples are displayed in a <tt class="classname">monospaced font</tt> on a shaded background.
@@ -120,7 +120,7 @@ import com.sleepycat.db.DatabaseConfig;
// Allow the database to be created.
DatabaseConfig myDbConfig = new DatabaseConfig();
myDbConfig.setAllowCreate(true);
-<b class="userinput"><tt>Database myDb = new Database(&quot;mydb.db&quot;, null, myDbConfig);</tt></b> </pre>
+<b class="userinput"><tt>Database myDb = new Database("mydb.db", null, myDbConfig);</tt></b> </pre>
<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
<h3 class="title">Note</h3>
<p>
@@ -204,18 +204,18 @@ myDbConfig.setAllowCreate(true);
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="index.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="index.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="introduction.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="introduction.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Getting Started with Replicated Berkeley DB Applications </td>
+ <td width="40%" align="left" valign="top">Getting Started with Replicated Berkeley DB Applications </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Chapter 1. Introduction</td>
+ <td width="40%" align="right" valign="top"> Chapter 1. Introduction</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/JAVA/processingloop.html b/db/docs/gsg_db_rep/JAVA/processingloop.html
index 72ee804ad..65b4e62ae 100644
--- a/db/docs/gsg_db_rep/JAVA/processingloop.html
+++ b/db/docs/gsg_db_rep/JAVA/processingloop.html
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Processing Loop</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
- <link rel="up" href="fwrkmasterreplica.html" title="Chapter 4. Replica versus Master Processes" />
- <link rel="previous" href="fwrkmasterreplica.html" title="Chapter 4. Replica versus Master Processes" />
+ <link rel="up" href="fwrkmasterreplica.html" title="Chapter 4. Replica versus Master Processes" />
+ <link rel="previous" href="fwrkmasterreplica.html" title="Chapter 4. Replica versus Master Processes" />
<link rel="next" href="exampledoloop.html" title="Example Processing Loop" />
</head>
<body>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Processing Loop</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="fwrkmasterreplica.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 4. Replica versus Master Processes</th>
- <td width="20%" align="right"> <a accesskey="n" href="exampledoloop.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="fwrkmasterreplica.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 4. Replica versus Master Processes</th>
+ <td width="20%" align="right"> <a accesskey="n" href="exampledoloop.html">Next</a></td>
</tr>
</table>
<hr />
@@ -196,18 +196,18 @@ for (;;) {
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="fwrkmasterreplica.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="fwrkmasterreplica.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="fwrkmasterreplica.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="exampledoloop.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="exampledoloop.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Chapter 4. Replica versus Master Processes </td>
+ <td width="40%" align="left" valign="top">Chapter 4. Replica versus Master Processes </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Example Processing Loop</td>
+ <td width="40%" align="right" valign="top"> Example Processing Loop</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/JAVA/repadvantage.html b/db/docs/gsg_db_rep/JAVA/repadvantage.html
index c7ab72c1a..3e001b900 100644
--- a/db/docs/gsg_db_rep/JAVA/repadvantage.html
+++ b/db/docs/gsg_db_rep/JAVA/repadvantage.html
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Replication Benefits</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
- <link rel="up" href="introduction.html" title="Chapter 1. Introduction" />
- <link rel="previous" href="introduction.html" title="Chapter 1. Introduction" />
+ <link rel="up" href="introduction.html" title="Chapter 1. Introduction" />
+ <link rel="previous" href="introduction.html" title="Chapter 1. Introduction" />
<link rel="next" href="apioverview.html" title="The Replication APIs" />
</head>
<body>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Replication Benefits</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="introduction.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 1. Introduction</th>
- <td width="20%" align="right"> <a accesskey="n" href="apioverview.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="introduction.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 1. Introduction</th>
+ <td width="20%" align="right"> <a accesskey="n" href="apioverview.html">Next</a></td>
</tr>
</table>
<hr />
@@ -150,7 +150,7 @@
one or more replicas before continuing with the next
operation. This will obviously impact your
application's write performance to some degree
- &#8212; with the performance penalty being largely dependent
+ — with the performance penalty being largely dependent
upon the speed and stability of the network connecting
your replication group.
</p>
@@ -165,18 +165,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="introduction.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="introduction.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="introduction.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="apioverview.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="apioverview.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Chapter 1. Introduction </td>
+ <td width="40%" align="left" valign="top">Chapter 1. Introduction </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> The Replication APIs</td>
+ <td width="40%" align="right" valign="top"> The Replication APIs</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/JAVA/repapp.html b/db/docs/gsg_db_rep/JAVA/repapp.html
index 63d48f58a..2ac003cc2 100644
--- a/db/docs/gsg_db_rep/JAVA/repapp.html
+++ b/db/docs/gsg_db_rep/JAVA/repapp.html
@@ -1,26 +1,26 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <title>Chapter 3. The DB Replication Framework</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Chapter 3. The DB Replication Framework</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
<link rel="up" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
<link rel="previous" href="simpleprogramlisting.html" title="Program Listing" />
- <link rel="next" href="repmgr_init_example_c.html" title="Adding the Replication Framework to&#10; &#10; &#10; " />
+ <link rel="next" href="repmgr_init_example_c.html" title="Adding the Replication Framework to&#10; &#10; SimpleTxn&#10; " />
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
- <th colspan="3" align="center">Chapter 3. The DB Replication Framework</th>
+ <th colspan="3" align="center">Chapter 3. The DB Replication Framework</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="simpleprogramlisting.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="repmgr_init_example_c.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="simpleprogramlisting.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="repmgr_init_example_c.html">Next</a></td>
</tr>
</table>
<hr />
@@ -29,7 +29,7 @@
<div class="titlepage">
<div>
<div>
- <h2 class="title"><a id="repapp"></a>Chapter 3. The DB Replication Framework</h2>
+ <h2 class="title"><a id="repapp"></a>Chapter 3. The DB Replication Framework</h2>
</div>
</div>
<div></div>
@@ -64,7 +64,7 @@
<span class="sect1">
<a href="repmgr_init_example_c.html">Adding the Replication Framework to
-
+ SimpleTxn
</a>
</span>
</dt>
@@ -318,17 +318,17 @@ import com.sleepycat.db.ReplicationHostAddress;
import com.sleepycat.db.ReplicationManagerStartPolicy;
...
- String progname = &quot;example_replication&quot;;
- String envHome = &quot;TESTDIR&quot;;
+ String progname = "example_replication";
+ String envHome = "TESTDIR";
int cachesize = 10 * 1024 * 1024;
Environment dbenv;
ReplicationHostAddress thisHost;
- String listenHost = &quot;mymachine.sleepycat.com&quot;;
+ String listenHost = "mymachine.sleepycat.com";
int listenPort = 8080;
ReplicationHostAddress otherReplica;
- String otherHost = &quot;anothermachine.sleepycat.com&quot;;
+ String otherHost = "anothermachine.sleepycat.com";
int otherPort = 8081;
@@ -381,9 +381,9 @@ try {
try {
dbenv = new Environment(envHome, envConfig);
} catch(FileNotFoundException e) {
- System.err.println(&quot;FileNotFound exception: &quot; + e.toString());
+ System.err.println("FileNotFound exception: " + e.toString());
System.err.println(
- &quot;Ensure that the environment directory is pre-created.&quot;);
+ "Ensure that the environment directory is pre-created.");
}
// Start the replication framework such that it has three threads.
@@ -541,7 +541,7 @@ try {
of duplicate masters, because once a master is
selected, the environment that loses the election will
have to roll back any transactions committed
- until it is in sync with the &quot;real&quot; master.
+ until it is in sync with the "real" master.
</p>
</td>
</tr>
@@ -683,20 +683,20 @@ try {
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="simpleprogramlisting.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="simpleprogramlisting.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="repmgr_init_example_c.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="repmgr_init_example_c.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Program Listing </td>
+ <td width="40%" align="left" valign="top">Program Listing </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Adding the Replication Framework to
-
+ <td width="40%" align="right" valign="top"> Adding the Replication Framework to
+ SimpleTxn
</td>
</tr>
</table>
diff --git a/db/docs/gsg_db_rep/JAVA/repmgr_init_example_c.html b/db/docs/gsg_db_rep/JAVA/repmgr_init_example_c.html
index cc5a06bc4..62c63d9b0 100644
--- a/db/docs/gsg_db_rep/JAVA/repmgr_init_example_c.html
+++ b/db/docs/gsg_db_rep/JAVA/repmgr_init_example_c.html
@@ -1,17 +1,17 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Adding the Replication Framework to
-
+ SimpleTxn
</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
- <link rel="up" href="repapp.html" title="Chapter 3. The DB Replication Framework" />
- <link rel="previous" href="repapp.html" title="Chapter 3. The DB Replication Framework" />
+ <link rel="up" href="repapp.html" title="Chapter 3. The DB Replication Framework" />
+ <link rel="previous" href="repapp.html" title="Chapter 3. The DB Replication Framework" />
<link rel="next" href="fwrkpermmessage.html" title="Permanent Message Handling" />
</head>
<body>
@@ -20,13 +20,13 @@
<tr>
<th colspan="3" align="center">Adding the Replication Framework to
-
+ SimpleTxn
</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="repapp.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 3. The DB Replication Framework</th>
- <td width="20%" align="right"> <a accesskey="n" href="fwrkpermmessage.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="repapp.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 3. The DB Replication Framework</th>
+ <td width="20%" align="right"> <a accesskey="n" href="fwrkpermmessage.html">Next</a></td>
</tr>
</table>
<hr />
@@ -37,7 +37,7 @@
<div>
<h2 class="title" style="clear: both"><a id="repmgr_init_example_c"></a>Adding the Replication Framework to
-
+ <span>SimpleTxn</span>
</h2>
</div>
</div>
@@ -47,7 +47,7 @@
We now use the methods described above to add partial
support to the
-
+ <tt class="literal">SimpleTxn</tt>
example that we presented in
<a href="txnapp.html">Transactional Application</a>.
That is, in this section we will:
@@ -99,7 +99,7 @@
<p>
We begin by changing our package name and then importing a few new
classes. <tt class="classname">java.util.Vector</tt> is used to
- organize a list of &quot;other host&quot; definitions (that is, the host and
+ organize a list of "other host" definitions (that is, the host and
port information for the other replication participants known to
this application). We also need a couple of classes used to manage
individual host and port information, as well as replication
@@ -122,13 +122,13 @@ public class RepConfig
application a little later in this description.
</p>
<pre class="programlisting"> // Constant values used in the RepQuote application.
- public static final String progname = <b class="userinput"><tt>&quot;RepQuoteExample&quot;;</tt></b>
+ public static final String progname = <b class="userinput"><tt>"RepQuoteExample";</tt></b>
public static final int CACHESIZE = 10 * 1024 * 1024;
<b class="userinput"><tt>public static final int SLEEPTIME = 5000;</tt></b>
// member variables containing configuration information
public String home; // String specifying the home directory for rep files.
- <b class="userinput"><tt>public Vector otherHosts; // stores an optional set of &quot;other&quot; hosts.
+ <b class="userinput"><tt>public Vector otherHosts; // stores an optional set of "other" hosts.
public int priority; // priority within the replication group.
public ReplicationManagerStartPolicy startPolicy;
public ReplicationHostAddress thisHost; // The host address to listen to.
@@ -145,7 +145,7 @@ public class RepConfig
<pre class="programlisting"> public RepConfig()
{
<b class="userinput"><tt>startPolicy = ReplicationManagerStartPolicy.REP_ELECTION;</tt></b>
- home = &quot;TESTDIR&quot;;
+ home = "TESTDIR";
<b class="userinput"><tt>gotListenAddress = false;
totalSites = 0;
priority = 100;
@@ -174,8 +174,8 @@ public class RepConfig
public ReplicationHostAddress getThisHost()
{
if (!gotListenAddress) {
- System.err.println(&quot;Warning: no host specified.&quot;);
- System.err.println(&quot;Returning default.&quot;);
+ System.err.println("Warning: no host specified.");
+ System.err.println("Returning default.");
}
return thisHost;
}
@@ -296,20 +296,20 @@ public class <b class="userinput"><tt>RepQuoteExample</tt></b>
public static void usage()
{
- System.err.println(&quot;usage: &quot; + repConfig.progname);
- System.err.println(&quot;[-h home]<b class="userinput"><tt>[-o host:port][-m host:port]&quot; +
- &quot;[-f host:port][-n nsites][-p priority]</tt></b>&quot;);
+ System.err.println("usage: " + repConfig.progname);
+ System.err.println("[-h home]<b class="userinput"><tt>[-o host:port][-m host:port]" +
+ "[-f host:port][-n nsites][-p priority]</tt></b>");
- System.err.println(<b class="userinput"><tt>&quot;\t -m host:port (required; m stands for me)\n&quot; +
- &quot;\t -o host:port (optional; o stands for other; any &quot; +
- &quot;number of these may be specified)\n&quot; +</tt></b>
- &quot;\t -h home directory\n&quot; +
- <b class="userinput"><tt>&quot;\t -n nsites (optional; number of sites in replication &quot; +
- &quot;group; defaults to 0\n&quot; +
- &quot;\t in which case we try to dynamically compute the &quot; +
- &quot;number of sites in\n&quot; +
- &quot;\t the replication group)\n&quot; +
- &quot;\t -p priority (optional: defaults to 100)\n&quot;);</tt></b>
+ System.err.println(<b class="userinput"><tt>"\t -m host:port (required; m stands for me)\n" +
+ "\t -o host:port (optional; o stands for other; any " +
+ "number of these may be specified)\n" +</tt></b>
+ "\t -h home directory\n" +
+ <b class="userinput"><tt>"\t -n nsites (optional; number of sites in replication " +
+ "group; defaults to 0\n" +
+ "\t in which case we try to dynamically compute the " +
+ "number of sites in\n" +
+ "\t the replication group)\n" +
+ "\t -p priority (optional: defaults to 100)\n");</tt></b>
System.exit(1);
} </pre>
@@ -335,51 +335,51 @@ public class <b class="userinput"><tt>RepQuoteExample</tt></b>
<pre class="programlisting"> // Extract the command line parameters
for (int i = 0; i &lt; argv.length; i++)
{
- if (argv[i].compareTo(&quot;-h&quot;) == 0) {
+ if (argv[i].compareTo("-h") == 0) {
// home - a string arg.
i++;
config.home = argv[i];
- <b class="userinput"><tt>} else if (argv[i].compareTo(&quot;-m&quot;) == 0) {
- // &quot;me&quot; should be host:port
+ <b class="userinput"><tt>} else if (argv[i].compareTo("-m") == 0) {
+ // "me" should be host:port
i++;
- String[] words = argv[i].split(&quot;:&quot;);
+ String[] words = argv[i].split(":");
if (words.length != 2) {
System.err.println(
- &quot;Invalid host specification host:port needed.&quot;);
+ "Invalid host specification host:port needed.");
usage();
}
try {
tmpPort = Integer.parseInt(words[1]);
} catch (NumberFormatException nfe) {
- System.err.println(&quot;Invalid host specification, &quot; +
- &quot;could not parse port number.&quot;);
+ System.err.println("Invalid host specification, " +
+ "could not parse port number.");
usage();
}
config.setThisHost(words[0], tmpPort);
- } else if (argv[i].compareTo(&quot;-n&quot;) == 0) {
+ } else if (argv[i].compareTo("-n") == 0) {
i++;
config.totalSites = Integer.parseInt(argv[i]);
- } else if (argv[i].compareTo(&quot;-o&quot;) == 0) {
+ } else if (argv[i].compareTo("-o") == 0) {
i++;
- String[] words = argv[i].split(&quot;:&quot;);
+ String[] words = argv[i].split(":");
if (words.length != 2) {
System.err.println(
- &quot;Invalid host specification host:port needed.&quot;);
+ "Invalid host specification host:port needed.");
usage();
}
try {
tmpPort = Integer.parseInt(words[1]);
} catch (NumberFormatException nfe) {
- System.err.println(&quot;Invalid host specification, &quot; +
- &quot;could not parse port number.&quot;);
+ System.err.println("Invalid host specification, " +
+ "could not parse port number.");
usage();
}
config.addOtherHost(words[0], tmpPort, isPeer);
- } else if (argv[i].compareTo(&quot;-p&quot;) == 0) {
+ } else if (argv[i].compareTo("-p") == 0) {
i++;
config.priority = Integer.parseInt(argv[i]);
}</tt></b> else {
- System.err.println(&quot;Unrecognized option: &quot; + argv[i]);
+ System.err.println("Unrecognized option: " + argv[i]);
usage();
}
}
@@ -400,8 +400,8 @@ public class <b class="userinput"><tt>RepQuoteExample</tt></b>
runner.doloop();
runner.terminate();
} catch (DatabaseException dbe) {
- System.err.println(&quot;Caught an exception during &quot; +
- &quot;initialization or processing: &quot; + dbe.toString());
+ System.err.println("Caught an exception during " +
+ "initialization or processing: " + dbe.toString());
if (runner != null)
runner.terminate();
}
@@ -427,9 +427,9 @@ public class <b class="userinput"><tt>RepQuoteExample</tt></b>
<b class="userinput"><tt>envConfig.setReplicationManagerLocalSite(appConfig.getThisHost());</tt></b> </pre>
<p>
- And we also add code to allow us to identify &quot;other&quot; sites to the environment handle (that is,
+ And we also add code to allow us to identify "other" sites to the environment handle (that is,
the sites that we identify using the <tt class="literal">-o</tt> command line
-option). To do this, we iterate over each of the &quot;other&quot; sites provided to
+option). To do this, we iterate over each of the "other" sites provided to
us using the <tt class="literal">-o</tt> command line option, and we add each one
individually in turn:
</p>
@@ -479,9 +479,9 @@ individually in turn:
try {
dbenv = new Environment(appConfig.getHome(), envConfig);
} catch(FileNotFoundException e) {
- System.err.println(&quot;FileNotFound exception: &quot; + e.toString());
+ System.err.println("FileNotFound exception: " + e.toString());
System.err.println(
- &quot;Ensure that the environment directory is pre-created.&quot;);
+ "Ensure that the environment directory is pre-created.");
ret = 1;
} </pre>
<p>
@@ -510,18 +510,18 @@ individually in turn:
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="repapp.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="repapp.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="repapp.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="fwrkpermmessage.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="fwrkpermmessage.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Chapter 3. The DB Replication Framework </td>
+ <td width="40%" align="left" valign="top">Chapter 3. The DB Replication Framework </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Permanent Message Handling</td>
+ <td width="40%" align="right" valign="top"> Permanent Message Handling</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/JAVA/simpleprogramlisting.html b/db/docs/gsg_db_rep/JAVA/simpleprogramlisting.html
index f106a191f..d067236e4 100644
--- a/db/docs/gsg_db_rep/JAVA/simpleprogramlisting.html
+++ b/db/docs/gsg_db_rep/JAVA/simpleprogramlisting.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Program Listing</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
- <link rel="up" href="txnapp.html" title="Chapter 2. Transactional Application" />
- <link rel="previous" href="txnapp.html" title="Chapter 2. Transactional Application" />
- <link rel="next" href="repapp.html" title="Chapter 3. The DB Replication Framework" />
+ <link rel="up" href="txnapp.html" title="Chapter 2. Transactional Application" />
+ <link rel="previous" href="txnapp.html" title="Chapter 2. Transactional Application" />
+ <link rel="next" href="repapp.html" title="Chapter 3. The DB Replication Framework" />
</head>
<body>
<div class="navheader">
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Program Listing</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="txnapp.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 2. Transactional Application</th>
- <td width="20%" align="right"> <a accesskey="n" href="repapp.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="txnapp.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 2. Transactional Application</th>
+ <td width="20%" align="right"> <a accesskey="n" href="repapp.html">Next</a></td>
</tr>
</table>
<hr />
@@ -103,7 +103,7 @@
public class RepConfig
{
// Constant values used in the RepQuote application.
- public static final String progname = &quot;SimpleTxn&quot;;
+ public static final String progname = "SimpleTxn";
public static final int CACHESIZE = 10 * 1024 * 1024;
// member variables containing configuration information
@@ -112,7 +112,7 @@ public class RepConfig
public RepConfig()
{
- home = &quot;TESTDIR&quot;;
+ home = "TESTDIR";
}
public java.io.File getHome()
@@ -182,10 +182,10 @@ public class SimpleTxn
</p>
<pre class="programlisting"> public static void usage()
{
- System.err.println(&quot;usage: &quot; + repConfig.progname);
- System.err.println(&quot;[-h home]&quot;);
+ System.err.println("usage: " + repConfig.progname);
+ System.err.println("[-h home]");
- System.err.println(&quot;\t -h home directory\n&quot;);
+ System.err.println("\t -h home directory\n");
System.exit(1);
} </pre>
@@ -218,12 +218,12 @@ public class SimpleTxn
// Extract the command line parameters
for (int i = 0; i &lt; argv.length; i++)
{
- if (argv[i].compareTo(&quot;-h&quot;) == 0) {
+ if (argv[i].compareTo("-h") == 0) {
// home - a string arg.
i++;
config.home = argv[i];
} else {
- System.err.println(&quot;Unrecognized option: &quot; + argv[i]);
+ System.err.println("Unrecognized option: " + argv[i]);
usage();
}
} </pre>
@@ -256,8 +256,8 @@ public class SimpleTxn
</p>
<pre class="programlisting"> runner.terminate();
} catch (DatabaseException dbe) {
- System.err.println(&quot;Caught an exception during &quot; +
- &quot;initialization or processing: &quot; + dbe.toString());
+ System.err.println("Caught an exception during " +
+ "initialization or processing: " + dbe.toString());
if (runner != null)
runner.terminate();
}
@@ -308,9 +308,9 @@ public class SimpleTxn
try {
dbenv = new Environment(repConfig.getHome(), envConfig);
} catch(FileNotFoundException e) {
- System.err.println(&quot;FileNotFound exception: &quot; + e.toString());
+ System.err.println("FileNotFound exception: " + e.toString());
System.err.println(
- &quot;Ensure that the environment directory is pre-created.&quot;);
+ "Ensure that the environment directory is pre-created.");
ret = 1;
}
@@ -376,7 +376,7 @@ public class SimpleTxn
null, // db name
dbconf);
} catch (FileNotFoundException fnfe) {
- System.err.println(&quot;File not found exception&quot; + fnfe.toString());
+ System.err.println("File not found exception" + fnfe.toString());
// Get here only if the environment home directory
// somehow does not exist.
}
@@ -407,16 +407,16 @@ public class SimpleTxn
new BufferedReader(new InputStreamReader(System.in));
// listen for input, and add it to the database.
- System.out.print(&quot;QUOTESERVER&gt; &quot;);
+ System.out.print("QUOTESERVER&gt; ");
System.out.flush();
String nextline = null;
try {
nextline = stdin.readLine();
} catch (IOException ioe) {
- System.err.println(&quot;Unable to get data from stdin&quot;);
+ System.err.println("Unable to get data from stdin");
break;
}
- String[] words = nextline.split(&quot;\\s&quot;);
+ String[] words = nextline.split("\\s");
// A blank line causes the DB to be dumped to stdout.
if (words.length == 0 ||
@@ -424,19 +424,19 @@ public class SimpleTxn
try {
printStocks(db);
} catch (DatabaseException e) {
- System.err.println(&quot;Got db exception reading &quot; +
- &quot;DB: &quot; + e.toString());
+ System.err.println("Got db exception reading " +
+ "DB: " + e.toString());
break;
}
continue;
}
if (words.length == 1 &amp;&amp;
- (words[0].compareToIgnoreCase(&quot;quit&quot;) == 0 ||
- words[0].compareToIgnoreCase(&quot;exit&quot;) == 0)) {
+ (words[0].compareToIgnoreCase("quit") == 0 ||
+ words[0].compareToIgnoreCase("exit") == 0)) {
break;
} else if (words.length != 2) {
- System.err.println(&quot;Format: TICKER VALUE&quot;);
+ System.err.println("Format: TICKER VALUE");
continue;
} </pre>
<p>
@@ -444,9 +444,9 @@ public class SimpleTxn
classes that we will use to write the new information to the database.
</p>
<pre class="programlisting"> DatabaseEntry key =
- new DatabaseEntry(words[0].getBytes(&quot;UTF-8&quot;));
+ new DatabaseEntry(words[0].getBytes("UTF-8"));
DatabaseEntry data =
- new DatabaseEntry(words[1].getBytes(&quot;UTF-8&quot;)); </pre>
+ new DatabaseEntry(words[1].getBytes("UTF-8")); </pre>
<p>
Having done that, we can write the new information to the
database. Remember that because a transaction handle is not
@@ -462,7 +462,7 @@ public class SimpleTxn
Also, the database is not configured for duplicate records, so
the data portion of a record is overwritten if the provided
key already exists in the database. However, in this case
- DB returns <tt class="methodname">OperationStatus.KEYEXIST</tt> &#8212; which
+ DB returns <tt class="methodname">OperationStatus.KEYEXIST</tt> — which
we ignore.
</p>
<pre class="programlisting"> db.put(null, key, data); </pre>
@@ -520,8 +520,8 @@ public class SimpleTxn
{
Cursor dbc = db.openCursor(null, null);
- System.out.println(&quot;\tSymbol\tPrice&quot;);
- System.out.println(&quot;\t======\t=====&quot;);
+ System.out.println("\tSymbol\tPrice");
+ System.out.println("\t======\t=====");
DatabaseEntry key = new DatabaseEntry();
DatabaseEntry data = new DatabaseEntry();
@@ -533,7 +533,7 @@ public class SimpleTxn
(key.getData(), key.getOffset(), key.getSize());
String datastr = new String
(data.getData(), data.getOffset(), data.getSize());
- System.out.println(&quot;\t&quot;+keystr+&quot;\t&quot;+datastr);
+ System.out.println("\t"+keystr+"\t"+datastr);
}
dbc.close();
@@ -545,18 +545,18 @@ public class SimpleTxn
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="txnapp.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="txnapp.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="txnapp.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="repapp.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="repapp.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Chapter 2. Transactional Application </td>
+ <td width="40%" align="left" valign="top">Chapter 2. Transactional Application </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Chapter 3. The DB Replication Framework</td>
+ <td width="40%" align="right" valign="top"> Chapter 3. The DB Replication Framework</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_db_rep/JAVA/txnapp.html b/db/docs/gsg_db_rep/JAVA/txnapp.html
index 58e675765..667ec42e7 100644
--- a/db/docs/gsg_db_rep/JAVA/txnapp.html
+++ b/db/docs/gsg_db_rep/JAVA/txnapp.html
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <title>Chapter 2. Transactional Application</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Chapter 2. Transactional Application</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
@@ -15,12 +15,12 @@
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
- <th colspan="3" align="center">Chapter 2. Transactional Application</th>
+ <th colspan="3" align="center">Chapter 2. Transactional Application</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="permmessages.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="simpleprogramlisting.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="permmessages.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="simpleprogramlisting.html">Next</a></td>
</tr>
</table>
<hr />
@@ -29,7 +29,7 @@
<div class="titlepage">
<div>
<div>
- <h2 class="title"><a id="txnapp"></a>Chapter 2. Transactional Application</h2>
+ <h2 class="title"><a id="txnapp"></a>Chapter 2. Transactional Application</h2>
</div>
</div>
<div></div>
@@ -163,18 +163,18 @@ QUOTESERVER&gt; quit
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="permmessages.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="permmessages.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="simpleprogramlisting.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="simpleprogramlisting.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Permanent Message Handling </td>
+ <td width="40%" align="left" valign="top">Permanent Message Handling </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Program Listing</td>
+ <td width="40%" align="right" valign="top"> Program Listing</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/C/BerkeleyDB-Core-C-Txn.pdf b/db/docs/gsg_txn/C/BerkeleyDB-Core-C-Txn.pdf
index 622ee100b..56f25b756 100644
--- a/db/docs/gsg_txn/C/BerkeleyDB-Core-C-Txn.pdf
+++ b/db/docs/gsg_txn/C/BerkeleyDB-Core-C-Txn.pdf
Binary files differ
diff --git a/db/docs/gsg_txn/C/abortresults.html b/db/docs/gsg_txn/C/abortresults.html
index abf4a86e9..0dd7b9931 100644
--- a/db/docs/gsg_txn/C/abortresults.html
+++ b/db/docs/gsg_txn/C/abortresults.html
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Aborting a Transaction</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="usingtxns.html" title="Chapter 3. Transaction Basics" />
- <link rel="previous" href="usingtxns.html" title="Chapter 3. Transaction Basics" />
+ <link rel="up" href="usingtxns.html" title="Chapter 3. Transaction Basics" />
+ <link rel="previous" href="usingtxns.html" title="Chapter 3. Transaction Basics" />
<link rel="next" href="autocommit.html" title="Auto Commit" />
</head>
<body>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Aborting a Transaction</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="usingtxns.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 3. Transaction Basics</th>
- <td width="20%" align="right"> <a accesskey="n" href="autocommit.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="usingtxns.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 3. Transaction Basics</th>
+ <td width="20%" align="right"> <a accesskey="n" href="autocommit.html">Next</a></td>
</tr>
</table>
<hr />
@@ -76,18 +76,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="usingtxns.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="usingtxns.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="usingtxns.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="autocommit.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="autocommit.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Chapter 3. Transaction Basics </td>
+ <td width="40%" align="left" valign="top">Chapter 3. Transaction Basics </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Auto Commit</td>
+ <td width="40%" align="right" valign="top"> Auto Commit</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/C/architectrecovery.html b/db/docs/gsg_txn/C/architectrecovery.html
index d461d9194..e9e61116e 100644
--- a/db/docs/gsg_txn/C/architectrecovery.html
+++ b/db/docs/gsg_txn/C/architectrecovery.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Designing Your Application for Recovery</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="filemanagement.html" title="Chapter 5. Managing DB Files" />
+ <link rel="up" href="filemanagement.html" title="Chapter 5. Managing DB Files" />
<link rel="previous" href="recovery.html" title="Recovery Procedures" />
<link rel="next" href="hotfailover.html" title="Using Hot Failovers" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Designing Your Application for Recovery</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="recovery.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 5. Managing DB Files</th>
- <td width="20%" align="right"> <a accesskey="n" href="hotfailover.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="recovery.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 5. Managing DB Files</th>
+ <td width="20%" align="right"> <a accesskey="n" href="hotfailover.html">Next</a></td>
</tr>
</table>
<hr />
@@ -155,7 +155,7 @@
handles. Recovery should be single threaded because when
recovery is run against an environment, it is
deleted and then recreated. This will cause all
- other processes and threads to &quot;fail&quot; when they
+ other processes and threads to "fail" when they
attempt operations against the newly recovered
environment. If all threads run recovery
when they start up, then it is likely that some
@@ -258,7 +258,7 @@
<div></div>
</div>
<p>
- One way to handle multi-process recovery is for every process to &quot;register&quot; its environment. In
+ One way to handle multi-process recovery is for every process to "register" its environment. In
doing so, the process gains the ability to see if any other applications are using the
environment and, if so, whether they have suffered an abnormal termination. If an abnormal
termination is detected, the process runs recovery; otherwise, it does not.
@@ -427,18 +427,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="recovery.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="recovery.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="filemanagement.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="hotfailover.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="hotfailover.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Recovery Procedures </td>
+ <td width="40%" align="left" valign="top">Recovery Procedures </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Using Hot Failovers</td>
+ <td width="40%" align="right" valign="top"> Using Hot Failovers</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/C/autocommit.html b/db/docs/gsg_txn/C/autocommit.html
index 4ae0787f0..11fbf1128 100644
--- a/db/docs/gsg_txn/C/autocommit.html
+++ b/db/docs/gsg_txn/C/autocommit.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Auto Commit</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="usingtxns.html" title="Chapter 3. Transaction Basics" />
+ <link rel="up" href="usingtxns.html" title="Chapter 3. Transaction Basics" />
<link rel="previous" href="abortresults.html" title="Aborting a Transaction" />
<link rel="next" href="nestedtxn.html" title="Nested Transactions" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Auto Commit</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="abortresults.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 3. Transaction Basics</th>
- <td width="20%" align="right"> <a accesskey="n" href="nestedtxn.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="abortresults.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 3. Transaction Basics</th>
+ <td width="20%" align="right"> <a accesskey="n" href="nestedtxn.html">Next</a></td>
</tr>
</table>
<hr />
@@ -91,7 +91,7 @@
<pre class="programlisting">#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
-#include &quot;db.h&quot;
+#include "db.h"
int
main(void)
@@ -101,10 +101,10 @@ main(void)
DB *dbp;
DB_ENV *envp;
DBT key, data;
- const char *db_home_dir = &quot;/tmp/myEnvironment&quot;;
- const char *file_name = &quot;mydb.db&quot;;
- const char *keystr =&quot;thekey&quot;;
- const char *datastr = &quot;thedata&quot;;
+ const char *db_home_dir = "/tmp/myEnvironment";
+ const char *file_name = "mydb.db";
+ const char *keystr ="thekey";
+ const char *datastr = "thedata";
dbp = NULL;
envp = NULL;
@@ -112,7 +112,7 @@ main(void)
/* Open the environment */
ret = db_env_create(&amp;envp, 0);
if (ret != 0) {
- fprintf(stderr, &quot;Error creating environment handle: %s\n&quot;,
+ fprintf(stderr, "Error creating environment handle: %s\n",
db_strerror(ret));
return (EXIT_FAILURE);
}
@@ -126,7 +126,7 @@ main(void)
ret = envp-&gt;open(envp, db_home_dir, env_flags, 0);
if (ret != 0) {
- fprintf(stderr, &quot;Error opening environment: %s\n&quot;,
+ fprintf(stderr, "Error opening environment: %s\n",
db_strerror(ret));
goto err;
}
@@ -134,7 +134,7 @@ main(void)
/* Initialize the DB handle */
ret = db_create(&amp;dbp, envp, 0);
if (ret != 0) {
- envp-&gt;err(envp, ret, &quot;Database creation failed&quot;);
+ envp-&gt;err(envp, ret, "Database creation failed");
goto err;
}
@@ -151,7 +151,7 @@ main(void)
db_flags, /* Open flags */
0); /* File mode. Using defaults */
if (ret != 0) {
- envp-&gt;err(envp, ret, &quot;Database '%s' open failed&quot;,
+ envp-&gt;err(envp, ret, "Database '%s' open failed",
file_name);
goto err;
}
@@ -172,7 +172,7 @@ main(void)
*/
ret = dbp-&gt;put(dbp, NULL, &amp;key, &amp;data, 0);
if (ret != 0) {
- envp-&gt;err(envp, ret, &quot;Database put failed.&quot;);
+ envp-&gt;err(envp, ret, "Database put failed.");
goto err;
}
@@ -181,7 +181,7 @@ err:
if (dbp != NULL) {
ret_c = dbp-&gt;close(dbp, 0);
if (ret_c != 0) {
- envp-&gt;err(envp, ret_c, &quot;Database close failed.&quot;);
+ envp-&gt;err(envp, ret_c, "Database close failed.");
ret = ret_c
}
}
@@ -191,7 +191,7 @@ err:
if (envp != NULL) {
ret_c = envp-&gt;close(envp, 0);
if (ret_c != 0) {
- fprintf(stderr, &quot;environment close failed: %s\n&quot;,
+ fprintf(stderr, "environment close failed: %s\n",
db_strerror(ret_c));
ret = ret_c;
}
@@ -204,18 +204,18 @@ err:
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="abortresults.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="abortresults.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="usingtxns.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="nestedtxn.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="nestedtxn.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Aborting a Transaction </td>
+ <td width="40%" align="left" valign="top">Aborting a Transaction </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Nested Transactions</td>
+ <td width="40%" align="right" valign="top"> Nested Transactions</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/C/backuprestore.html b/db/docs/gsg_txn/C/backuprestore.html
index f9ae32bd7..a60dab54f 100644
--- a/db/docs/gsg_txn/C/backuprestore.html
+++ b/db/docs/gsg_txn/C/backuprestore.html
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Backup Procedures</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="filemanagement.html" title="Chapter 5. Managing DB Files" />
- <link rel="previous" href="filemanagement.html" title="Chapter 5. Managing DB Files" />
+ <link rel="up" href="filemanagement.html" title="Chapter 5. Managing DB Files" />
+ <link rel="previous" href="filemanagement.html" title="Chapter 5. Managing DB Files" />
<link rel="next" href="recovery.html" title="Recovery Procedures" />
</head>
<body>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Backup Procedures</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="filemanagement.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 5. Managing DB Files</th>
- <td width="20%" align="right"> <a accesskey="n" href="recovery.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="filemanagement.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 5. Managing DB Files</th>
+ <td width="20%" align="right"> <a accesskey="n" href="recovery.html">Next</a></td>
</tr>
</table>
<hr />
@@ -322,18 +322,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="filemanagement.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="filemanagement.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="filemanagement.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="recovery.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="recovery.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Chapter 5. Managing DB Files </td>
+ <td width="40%" align="left" valign="top">Chapter 5. Managing DB Files </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Recovery Procedures</td>
+ <td width="40%" align="right" valign="top"> Recovery Procedures</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/C/blocking_deadlocks.html b/db/docs/gsg_txn/C/blocking_deadlocks.html
index cc7712aeb..733fe70ae 100644
--- a/db/docs/gsg_txn/C/blocking_deadlocks.html
+++ b/db/docs/gsg_txn/C/blocking_deadlocks.html
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Locks, Blocks, and Deadlocks</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="txnconcurrency.html" title="Chapter 4. Concurrency" />
- <link rel="previous" href="txnconcurrency.html" title="Chapter 4. Concurrency" />
+ <link rel="up" href="txnconcurrency.html" title="Chapter 4. Concurrency" />
+ <link rel="previous" href="txnconcurrency.html" title="Chapter 4. Concurrency" />
<link rel="next" href="lockingsubsystem.html" title="The Locking Subsystem" />
</head>
<body>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Locks, Blocks, and Deadlocks</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="txnconcurrency.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 4. Concurrency</th>
- <td width="20%" align="right"> <a accesskey="n" href="lockingsubsystem.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="txnconcurrency.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 4. Concurrency</th>
+ <td width="20%" align="right"> <a accesskey="n" href="lockingsubsystem.html">Next</a></td>
</tr>
</table>
<hr />
@@ -440,7 +440,7 @@
minimize the time you keep
transactional cursors
opened, or reduce your isolation
- levels &#8211; see below.
+ levels – see below.
</p>
</li>
<li>
@@ -655,18 +655,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="txnconcurrency.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="txnconcurrency.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="txnconcurrency.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="lockingsubsystem.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="lockingsubsystem.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Chapter 4. Concurrency </td>
+ <td width="40%" align="left" valign="top">Chapter 4. Concurrency </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> The Locking Subsystem</td>
+ <td width="40%" align="right" valign="top"> The Locking Subsystem</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/C/enabletxn.html b/db/docs/gsg_txn/C/enabletxn.html
index 719fba4bc..80aeb216c 100644
--- a/db/docs/gsg_txn/C/enabletxn.html
+++ b/db/docs/gsg_txn/C/enabletxn.html
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <title>Chapter 2. Enabling Transactions</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Chapter 2. Enabling Transactions</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
@@ -15,12 +15,12 @@
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
- <th colspan="3" align="center">Chapter 2. Enabling Transactions</th>
+ <th colspan="3" align="center">Chapter 2. Enabling Transactions</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="perftune-intro.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="envopen.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="perftune-intro.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="envopen.html">Next</a></td>
</tr>
</table>
<hr />
@@ -29,7 +29,7 @@
<div class="titlepage">
<div>
<div>
- <h2 class="title"><a id="enabletxn"></a>Chapter 2. Enabling Transactions</h2>
+ <h2 class="title"><a id="enabletxn"></a>Chapter 2. Enabling Transactions</h2>
</div>
</div>
<div></div>
@@ -230,6 +230,7 @@
<span><a href="inmem_txnexample_c.html">In-Memory Transaction Example</a>.</span>
+
</p>
<div class="sect2" lang="en" xml:lang="en">
<div class="titlepage">
@@ -245,7 +246,7 @@
locate its database files, log files, and region files. If these
are stored in the filesystem, then you must tell DB where
they are located (a number of mechanisms exist that allow you to
- identify the location of these files &#8211; see below). Otherwise,
+ identify the location of these files – see below). Otherwise,
by default they are located in the current working directory.
</p>
<div class="sect3" lang="en" xml:lang="en">
@@ -693,6 +694,7 @@
</span>
+
</p>
</div>
<div class="sect3" lang="en" xml:lang="en">
@@ -854,7 +856,7 @@
for the environment open. And, of course, if you must
use <tt class="literal">setuid</tt>, then make sure you use
- the weakest uid possible &#8211; preferably one that is
+ the weakest uid possible – preferably one that is
used only by the application itself.
</p>
</li>
@@ -906,18 +908,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="perftune-intro.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="perftune-intro.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="envopen.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="envopen.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Performance Tuning </td>
+ <td width="40%" align="left" valign="top">Performance Tuning </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Opening a Transactional Environment and
+ <td width="40%" align="right" valign="top"> Opening a Transactional Environment and
Database
</td>
diff --git a/db/docs/gsg_txn/C/envopen.html b/db/docs/gsg_txn/C/envopen.html
index 46fc26bc8..ea1160e16 100644
--- a/db/docs/gsg_txn/C/envopen.html
+++ b/db/docs/gsg_txn/C/envopen.html
@@ -1,8 +1,8 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Opening a Transactional Environment and
Database
@@ -10,9 +10,9 @@
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="enabletxn.html" title="Chapter 2. Enabling Transactions" />
- <link rel="previous" href="enabletxn.html" title="Chapter 2. Enabling Transactions" />
- <link rel="next" href="usingtxns.html" title="Chapter 3. Transaction Basics" />
+ <link rel="up" href="enabletxn.html" title="Chapter 2. Enabling Transactions" />
+ <link rel="previous" href="enabletxn.html" title="Chapter 2. Enabling Transactions" />
+ <link rel="next" href="usingtxns.html" title="Chapter 3. Transaction Basics" />
</head>
<body>
<div class="navheader">
@@ -24,9 +24,9 @@
</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="enabletxn.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 2. Enabling Transactions</th>
- <td width="20%" align="right"> <a accesskey="n" href="usingtxns.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="enabletxn.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 2. Enabling Transactions</th>
+ <td width="20%" align="right"> <a accesskey="n" href="usingtxns.html">Next</a></td>
</tr>
</table>
<hr />
@@ -58,7 +58,7 @@
<pre class="programlisting">#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
-#include &quot;db.h&quot;
+#include "db.h"
int
main(void)
@@ -66,14 +66,14 @@ main(void)
int ret, ret_c;
u_int32_t env_flags;
DB_ENV *envp;
- const char *db_home_dir = &quot;/tmp/myEnvironment&quot;;
+ const char *db_home_dir = "/tmp/myEnvironment";
envp = NULL;
/* Open the environment */
ret = db_env_create(&amp;envp, 0);
if (ret != 0) {
- fprintf(stderr, &quot;Error creating environment handle: %s\n&quot;,
+ fprintf(stderr, "Error creating environment handle: %s\n",
db_strerror(ret));
return (EXIT_FAILURE);
}
@@ -87,7 +87,7 @@ main(void)
ret = envp-&gt;open(envp, db_home_dir, env_flags, 0);
if (ret != 0) {
- fprintf(stderr, &quot;Error opening environment: %s\n&quot;,
+ fprintf(stderr, "Error opening environment: %s\n",
db_strerror(ret));
goto err;
}
@@ -97,7 +97,7 @@ err:
if (envp != NULL) {
ret_c = envp-&gt;close(envp, 0);
if (ret_c != 0) {
- fprintf(stderr, &quot;environment close failed: %s\n&quot;,
+ fprintf(stderr, "environment close failed: %s\n",
db_strerror(ret_c));
ret = ret_c;
}
@@ -127,7 +127,7 @@ err:
<pre class="programlisting">#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
-#include &quot;db.h&quot;
+#include "db.h"
int
main(void)
@@ -136,8 +136,8 @@ main(void)
u_int32_t <b class="userinput"><tt>db_flags,</tt></b> env_flags;
<b class="userinput"><tt>DB *dbp;</tt></b>
DB_ENV *envp;
- const char *db_home_dir = &quot;/tmp/myEnvironment&quot;;
- <b class="userinput"><tt>const char *file_name = &quot;mydb.db&quot;;
+ const char *db_home_dir = "/tmp/myEnvironment";
+ <b class="userinput"><tt>const char *file_name = "mydb.db";
dbp = NULL;</tt></b>
envp = NULL;
@@ -145,7 +145,7 @@ main(void)
/* Open the environment */
ret = db_env_create(&amp;envp, 0);
if (ret != 0) {
- fprintf(stderr, &quot;Error creating environment handle: %s\n&quot;,
+ fprintf(stderr, "Error creating environment handle: %s\n",
db_strerror(ret));
return (EXIT_FAILURE);
}
@@ -159,7 +159,7 @@ main(void)
ret = envp-&gt;open(envp, db_home_dir, env_flags, 0);
if (ret != 0) {
- fprintf(stderr, &quot;Error opening environment: %s\n&quot;,
+ fprintf(stderr, "Error opening environment: %s\n",
db_strerror(ret));
goto err;
}
@@ -167,7 +167,7 @@ main(void)
<b class="userinput"><tt>/* Initialize the DB handle */
ret = db_create(&amp;dbp, envp, 0);
if (ret != 0) {
- envp-&gt;err(envp, ret, &quot;Database creation failed&quot;);
+ envp-&gt;err(envp, ret, "Database creation failed");
goto err;
}
@@ -180,7 +180,7 @@ main(void)
db_flags, /* Open flags */
0); /* File mode. Using defaults */
if (ret != 0) {
- envp-&gt;err(envp, ret, &quot;Database '%s' open failed&quot;,
+ envp-&gt;err(envp, ret, "Database '%s' open failed",
file_name);
goto err;
}</tt></b>
@@ -191,7 +191,7 @@ err:
if (dbp != NULL) {
ret_c = dbp-&gt;close(dbp, 0);
if (ret_c != 0) {
- envp-&gt;err(envp, ret_c, &quot;Database close failed.&quot;);
+ envp-&gt;err(envp, ret_c, "Database close failed.");
ret = ret_c
}
}</tt></b>
@@ -201,7 +201,7 @@ err:
if (envp != NULL) {
ret_c = envp-&gt;close(envp, 0);
if (ret_c != 0) {
- fprintf(stderr, &quot;environment close failed: %s\n&quot;,
+ fprintf(stderr, "environment close failed: %s\n",
db_strerror(ret_c));
ret = ret_c;
}
@@ -222,18 +222,18 @@ err:
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="enabletxn.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="enabletxn.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="enabletxn.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="usingtxns.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="usingtxns.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Chapter 2. Enabling Transactions </td>
+ <td width="40%" align="left" valign="top">Chapter 2. Enabling Transactions </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Chapter 3. Transaction Basics</td>
+ <td width="40%" align="right" valign="top"> Chapter 3. Transaction Basics</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/C/filemanagement.html b/db/docs/gsg_txn/C/filemanagement.html
index 57c5a0b66..00b796fec 100644
--- a/db/docs/gsg_txn/C/filemanagement.html
+++ b/db/docs/gsg_txn/C/filemanagement.html
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <title>Chapter 5. Managing DB Files</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Chapter 5. Managing DB Files</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
@@ -15,12 +15,12 @@
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
- <th colspan="3" align="center">Chapter 5. Managing DB Files</th>
+ <th colspan="3" align="center">Chapter 5. Managing DB Files</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="reversesplit.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="backuprestore.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="reversesplit.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="backuprestore.html">Next</a></td>
</tr>
</table>
<hr />
@@ -29,7 +29,7 @@
<div class="titlepage">
<div>
<div>
- <h2 class="title"><a id="filemanagement"></a>Chapter 5. Managing DB Files</h2>
+ <h2 class="title"><a id="filemanagement"></a>Chapter 5. Managing DB Files</h2>
</div>
</div>
<div></div>
@@ -304,7 +304,7 @@
<pre class="programlisting">#include &lt;stdio.h&gt;
#include &lt;pthread.h&gt;
#include &lt;stdlib.h&gt;
-#include &quot;db.h&quot;
+#include "db.h"
void *checkpoint_thread(void *);
@@ -314,7 +314,7 @@ main(void)
int ret;
u_int32_t env_flags;
DB_ENV *envp;
- const char *db_home_dir = &quot;/tmp/myEnvironment&quot;;
+ const char *db_home_dir = "/tmp/myEnvironment";
pthread_t ptid;
envp = NULL;
@@ -322,7 +322,7 @@ main(void)
/* Open the environment */
ret = db_env_create(&amp;envp, 0);
if (ret != 0) {
- fprintf(stderr, &quot;Error creating environment handle: %s\n&quot;,
+ fprintf(stderr, "Error creating environment handle: %s\n",
db_strerror(ret));
return (EXIT_FAILURE);
}
@@ -338,7 +338,7 @@ main(void)
/* Open the environment. */
ret = envp-&gt;open(envp, db_home_dir, env_flags, 0);
if (ret != 0) {
- fprintf(stderr, &quot;Error opening environment: %s\n&quot;,
+ fprintf(stderr, "Error opening environment: %s\n",
db_strerror(ret));
goto err;
}
@@ -348,7 +348,7 @@ main(void)
if ((ret = pthread_create(
&amp;ptid, NULL, checkpoint_thread, (void *)envp)) != 0) {
fprintf(stderr,
- &quot;txnapp: failed spawning checkpoint thread: %s\n&quot;,
+ "txnapp: failed spawning checkpoint thread: %s\n",
strerror(ret));
goto err;
}
@@ -372,7 +372,7 @@ checkpoint_thread(void *arg) {
/* Checkpoint once a minute. */
for (;; sleep(60))
if ((ret = dbenv-&gt;txn_checkpoint(dbenv, 0, 0, 0)) != 0) {
- dbenv-&gt;err(dbenv, ret, &quot;checkpoint thread&quot;);
+ dbenv-&gt;err(dbenv, ret, "checkpoint thread");
exit (1);
}
@@ -384,18 +384,18 @@ checkpoint_thread(void *arg) {
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="reversesplit.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="reversesplit.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="backuprestore.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="backuprestore.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Reverse BTree Splits </td>
+ <td width="40%" align="left" valign="top">Reverse BTree Splits </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Backup Procedures</td>
+ <td width="40%" align="right" valign="top"> Backup Procedures</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/C/hotfailover.html b/db/docs/gsg_txn/C/hotfailover.html
index fa3dcc152..9c6258f5f 100644
--- a/db/docs/gsg_txn/C/hotfailover.html
+++ b/db/docs/gsg_txn/C/hotfailover.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Using Hot Failovers</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="filemanagement.html" title="Chapter 5. Managing DB Files" />
+ <link rel="up" href="filemanagement.html" title="Chapter 5. Managing DB Files" />
<link rel="previous" href="architectrecovery.html" title="Designing Your Application for Recovery" />
<link rel="next" href="logfileremoval.html" title="Removing Log Files" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Using Hot Failovers</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="architectrecovery.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 5. Managing DB Files</th>
- <td width="20%" align="right"> <a accesskey="n" href="logfileremoval.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="architectrecovery.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 5. Managing DB Files</th>
+ <td width="20%" align="right"> <a accesskey="n" href="logfileremoval.html">Next</a></td>
</tr>
</table>
<hr />
@@ -191,18 +191,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="architectrecovery.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="architectrecovery.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="filemanagement.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="logfileremoval.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="logfileremoval.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Designing Your Application for Recovery </td>
+ <td width="40%" align="left" valign="top">Designing Your Application for Recovery </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Removing Log Files</td>
+ <td width="40%" align="right" valign="top"> Removing Log Files</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/C/index.html b/db/docs/gsg_txn/C/index.html
index e43890ce3..40883f92a 100644
--- a/db/docs/gsg_txn/C/index.html
+++ b/db/docs/gsg_txn/C/index.html
@@ -1,8 +1,8 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Getting Started with Berkeley DB Transaction Processing</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
@@ -16,9 +16,9 @@
<th colspan="3" align="center">Getting Started with Berkeley DB Transaction Processing</th>
</tr>
<tr>
- <td width="20%" align="left"> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="preface.html">Next</a></td>
+ <td width="20%" align="left"> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="preface.html">Next</a></td>
</tr>
</table>
<hr />
@@ -27,7 +27,7 @@
<div class="titlepage">
<div>
<div>
- <h1 class="title"><a id="id650934"></a>Getting Started with Berkeley DB Transaction Processing</h1>
+ <h1 class="title"><a id="id614000"></a>Getting Started with Berkeley DB Transaction Processing</h1>
</div>
<div>
<div class="legalnotice">
@@ -37,7 +37,7 @@
<p>
This documentation is distributed under an open source license.
You may review the terms of this license at:
- <a href="http://www.oracle.com/technology/software/products/berkeley-db/htdocs/oslicensing.html" target="_top">http://www.oracle.com/technology/software/products/berkeley-db/htdocs/oslicensing.html</a>
+ <a href="http://www.oracle.com/technology/software/products/berkeley-db/htdocs/oslicense.html" target="_top">http://www.oracle.com/technology/software/products/berkeley-db/htdocs/oslicense.html</a>
</p>
@@ -47,9 +47,9 @@
and
Sleepycat are trademarks or registered trademarks of
- Oracle Corporation. All rights to these marks are reserved.
+ Oracle. All rights to these marks are reserved.
No third-party use is permitted without the
- express prior written consent of Oracle Corporation.
+ express prior written consent of Oracle.
</p>
<p>
To obtain a copy of this document's original source code, please
@@ -61,7 +61,7 @@
</div>
</div>
<div>
- <p class="pubdate">9/20/2006</p>
+ <p class="pubdate">6/30/2007</p>
</div>
</div>
<div></div>
@@ -510,14 +510,14 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"> </td>
- <td width="20%" align="center"> </td>
- <td width="40%" align="right"> <a accesskey="n" href="preface.html">Next</a></td>
+ <td width="40%" align="left"> </td>
+ <td width="20%" align="center"> </td>
+ <td width="40%" align="right"> <a accesskey="n" href="preface.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top"> </td>
- <td width="20%" align="center"> </td>
- <td width="40%" align="right" valign="top"> Preface</td>
+ <td width="40%" align="left" valign="top"> </td>
+ <td width="20%" align="center"> </td>
+ <td width="40%" align="right" valign="top"> Preface</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/C/inmem_txnexample_c.html b/db/docs/gsg_txn/C/inmem_txnexample_c.html
index 591032c09..038c66d99 100644
--- a/db/docs/gsg_txn/C/inmem_txnexample_c.html
+++ b/db/docs/gsg_txn/C/inmem_txnexample_c.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>In-Memory Transaction Example</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="wrapup.html" title="Chapter 6. Summary and Examples" />
+ <link rel="up" href="wrapup.html" title="Chapter 6. Summary and Examples" />
<link rel="previous" href="txnexample_c.html" title="Transaction Example" />
</head>
<body>
@@ -17,9 +17,9 @@
<th colspan="3" align="center">In-Memory Transaction Example</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="txnexample_c.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 6. Summary and Examples</th>
- <td width="20%" align="right"> </td>
+ <td width="20%" align="left"><a accesskey="p" href="txnexample_c.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 6. Summary and Examples</th>
+ <td width="20%" align="right"> </td>
</tr>
</table>
<hr />
@@ -54,7 +54,7 @@
<p>
Refrain from specifying a home directory when you open your
environment. The exception to this is if you are using the
- <tt class="literal">DB_CONFIG</tt> configuration file &#8212; in
+ <tt class="literal">DB_CONFIG</tt> configuration file — in
that case you must identify the environment's home
directory so that the configuration file can be found.
</p>
@@ -165,7 +165,7 @@ main(void)
u_int32_t env_flags;
/* Application name */
- const char *prog_name = &quot;txn_guide_inmemory&quot;; </pre>
+ const char *prog_name = "txn_guide_inmemory"; </pre>
<p>
Next we create our environment as always. However, we add
<tt class="literal">DB_PRIVATE</tt> to our environment open flags. This
@@ -185,7 +185,7 @@ main(void)
<pre class="programlisting"> /* Create the environment */
ret = db_env_create(&amp;envp, 0);
if (ret != 0) {
- fprintf(stderr, &quot;Error creating environment handle: %s\n&quot;,
+ fprintf(stderr, "Error creating environment handle: %s\n",
db_strerror(ret));
goto err;
}
@@ -211,7 +211,7 @@ main(void)
<tt> /* Specify in-memory logging */
ret = envp-&gt;set_flags(envp, DB_LOG_INMEMORY, 1);
if (ret != 0) {
- fprintf(stderr, &quot;Error setting log subsystem to in-memory: %s\n&quot;,
+ fprintf(stderr, "Error setting log subsystem to in-memory: %s\n",
db_strerror(ret));
goto err;
}
@@ -221,7 +221,7 @@ main(void)
*/
ret = envp-&gt;set_lg_bsize(envp, 10 * 1024 * 1024);
if (ret != 0) {
- fprintf(stderr, &quot;Error increasing the log buffer size: %s\n&quot;,
+ fprintf(stderr, "Error increasing the log buffer size: %s\n",
db_strerror(ret));
goto err;
}
@@ -232,7 +232,7 @@ main(void)
ret = envp-&gt;set_cachesize(envp, 0,
10 * 1024 * 1024, 1);
if (ret != 0) {
- fprintf(stderr, &quot;Error increasing the cache size: %s\n&quot;,
+ fprintf(stderr, "Error increasing the cache size: %s\n",
db_strerror(ret));
goto err;
}</tt>
@@ -251,7 +251,7 @@ main(void)
*/
ret = envp-&gt;set_lk_detect(envp, DB_LOCK_MINWRITE);
if (ret != 0) {
- fprintf(stderr, &quot;Error setting lock detect: %s\n&quot;,
+ fprintf(stderr, "Error setting lock detect: %s\n",
db_strerror(ret));
goto err;
}
@@ -259,7 +259,7 @@ main(void)
/* Now actually open the environment */
ret = envp-&gt;open(envp, <b class="userinput"><tt>NULL</tt></b>, env_flags, 0);
if (ret != 0) {
- fprintf(stderr, &quot;Error opening environment: %s\n&quot;,
+ fprintf(stderr, "Error opening environment: %s\n",
db_strerror(ret));
goto err;
} </pre>
@@ -308,7 +308,7 @@ err:
if (dbp != NULL) {
ret_t = dbp-&gt;close(dbp, 0);
if (ret_t != 0) {
- <b class="userinput"><tt>fprintf(stderr, &quot;%s database close failed.\n&quot;,
+ <b class="userinput"><tt>fprintf(stderr, "%s database close failed.\n",
db_strerror(ret_t));</tt></b>
ret = ret_t;
}
@@ -318,14 +318,14 @@ err:
if (envp != NULL) {
ret_t = envp-&gt;close(envp, 0);
if (ret_t != 0) {
- fprintf(stderr, &quot;environment close failed: %s\n&quot;,
+ fprintf(stderr, "environment close failed: %s\n",
db_strerror(ret_t));
ret = ret_t;
}
}
/* Final status message and return. */
- printf(&quot;I'm all done.\n&quot;);
+ printf("I'm all done.\n");
return (ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE);
} </pre>
<p>
@@ -353,9 +353,9 @@ writer_thread(void *args)
DB_TXN *txn;
int i, j, payload, ret, thread_num;
int retry_count, max_retries = 20; /* Max retry on a deadlock */
- char *key_strings[] = {&quot;key 1&quot;, &quot;key 2&quot;, &quot;key 3&quot;, &quot;key 4&quot;,
- &quot;key 5&quot;, &quot;key 6&quot;, &quot;key 7&quot;, &quot;key 8&quot;,
- &quot;key 9&quot;, &quot;key 10&quot;};
+ char *key_strings[] = {"key 1", "key 2", "key 3", "key 4",
+ "key 5", "key 6", "key 7", "key 8",
+ "key 9", "key 10"};
DB *dbp = (DB *)args;
DB_ENV *envp = dbp-&gt;get_env(dbp);
@@ -376,7 +376,7 @@ writer_thread(void *args)
retry:
ret = envp-&gt;txn_begin(envp, NULL, &amp;txn, 0);
if (ret != 0) {
- envp-&gt;err(envp, ret, &quot;txn_begin failed&quot;);
+ envp-&gt;err(envp, ret, "txn_begin failed");
return (EXIT_FAILURE);
}
for (j = 0; j &lt; 10; j++) {
@@ -414,9 +414,9 @@ retry:
* increment the retry count and goto retry.
*/
if (retry_count &lt; max_retries) {
- printf(&quot;Writer %i: Got DB_LOCK_DEADLOCK.\n&quot;,
+ printf("Writer %i: Got DB_LOCK_DEADLOCK.\n",
thread_num);
- printf(&quot;Writer %i: Retrying write operation.\n&quot;,
+ printf("Writer %i: Retrying write operation.\n",
thread_num);
retry_count++;
goto retry;
@@ -424,19 +424,19 @@ retry:
/*
* Otherwise, just give up.
*/
- printf(&quot;Writer %i: &quot;, thread_num);
- printf(&quot;Got DB_LOCK_DEADLOCK and out of retries.\n&quot;);
- printf(&quot;Writer %i: Giving up.\n&quot;, thread_num);
+ printf("Writer %i: ", thread_num);
+ printf("Got DB_LOCK_DEADLOCK and out of retries.\n");
+ printf("Writer %i: Giving up.\n", thread_num);
return (EXIT_FAILURE);
/*
* If a generic error occurs, we simply abort the
* transaction and exit the thread completely.
*/
default:
- envp-&gt;err(envp, ret, &quot;db put failed&quot;);
+ envp-&gt;err(envp, ret, "db put failed");
ret = txn-&gt;abort(txn);
if (ret != 0)
- envp-&gt;err(envp, ret, &quot;txn abort failed&quot;);
+ envp-&gt;err(envp, ret, "txn abort failed");
return (EXIT_FAILURE);
} /** End case statement **/
@@ -456,7 +456,7 @@ retry:
* print the number of records found in the database.
* See count_records() for usage information.
*/
- printf(&quot;Thread %i. Record count: %i\n&quot;, thread_num,
+ printf("Thread %i. Record count: %i\n", thread_num,
count_records(dbp, <b class="userinput"><tt>txn</tt></b>));
/*
@@ -465,7 +465,7 @@ retry:
*/
ret = txn-&gt;commit(txn, 0);
if (ret != 0) {
- envp-&gt;err(envp, ret, &quot;txn commit failed&quot;);
+ envp-&gt;err(envp, ret, "txn commit failed");
return (EXIT_FAILURE);
}
}
@@ -496,7 +496,7 @@ count_records(DB *dbp, DB_TXN *txn)
/* Get the cursor */
ret = dbp-&gt;cursor(dbp, txn, &amp;cursorp, <b class="userinput"><tt>0</tt></b>);
if (ret != 0) {
- dbp-&gt;err(dbp, ret, &quot;count_records: cursor open failed.&quot;);
+ dbp-&gt;err(dbp, ret, "count_records: cursor open failed.");
goto cursor_err;
}
@@ -504,7 +504,7 @@ count_records(DB *dbp, DB_TXN *txn)
memset(&amp;key, 0, sizeof(DBT));
memset(&amp;value, 0, sizeof(DBT));
do {
- ret = cursorp-&gt;c_get(cursorp, &amp;key, &amp;value, DB_NEXT);
+ ret = cursorp-&gt;get(cursorp, &amp;key, &amp;value, DB_NEXT);
switch (ret) {
case 0:
count++;
@@ -513,17 +513,17 @@ count_records(DB *dbp, DB_TXN *txn)
break;
default:
dbp-&gt;err(envp, ret,
- &quot;Count records unspecified error&quot;);
+ "Count records unspecified error");
goto cursor_err;
}
} while (ret == 0);
cursor_err:
if (cursorp != NULL) {
- ret = cursorp-&gt;c_close(cursorp);
+ ret = cursorp-&gt;close(cursorp);
if (ret != 0) {
dbp-&gt;err(dbp, ret,
- &quot;count_records: cursor close failed.&quot;);
+ "count_records: cursor close failed.");
}
}
@@ -553,7 +553,7 @@ open_db(DB **dbpp, const char *progname, const char *file_name,
/* Initialize the DB handle */
ret = db_create(&amp;dbp, envp, 0);
if (ret != 0) {
- fprintf(stderr, &quot;%s: %s\n&quot;, progname,
+ fprintf(stderr, "%s: %s\n", progname,
db_strerror(ret));
return (EXIT_FAILURE);
}
@@ -565,7 +565,7 @@ open_db(DB **dbpp, const char *progname, const char *file_name,
ret = dbp-&gt;set_flags(dbp, extra_flags);
if (ret != 0) {
dbp-&gt;err(dbp, ret,
- &quot;open_db: Attempt to set extra flags failed.&quot;);
+ "open_db: Attempt to set extra flags failed.");
return (EXIT_FAILURE);
}
}
@@ -583,7 +583,7 @@ open_db(DB **dbpp, const char *progname, const char *file_name,
open_flags, /* Open flags */
0); /* File mode. Using defaults */
if (ret != 0) {
- <b class="userinput"><tt>dbp-&gt;err(dbp, ret, &quot;Database open failed&quot;);
+ <b class="userinput"><tt>dbp-&gt;err(dbp, ret, "Database open failed");
return (EXIT_FAILURE);</tt></b>
}
return (EXIT_SUCCESS);
@@ -599,18 +599,18 @@ open_db(DB **dbpp, const char *progname, const char *file_name,
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="txnexample_c.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="txnexample_c.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="wrapup.html">Up</a>
</td>
- <td width="40%" align="right"> </td>
+ <td width="40%" align="right"> </td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Transaction Example </td>
+ <td width="40%" align="left" valign="top">Transaction Example </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> </td>
+ <td width="40%" align="right" valign="top"> </td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/C/introduction.html b/db/docs/gsg_txn/C/introduction.html
index 0cd478d9a..d4e9419a4 100644
--- a/db/docs/gsg_txn/C/introduction.html
+++ b/db/docs/gsg_txn/C/introduction.html
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <title>Chapter 1. Introduction</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Chapter 1. Introduction</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
@@ -15,12 +15,12 @@
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
- <th colspan="3" align="center">Chapter 1. Introduction</th>
+ <th colspan="3" align="center">Chapter 1. Introduction</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="preface.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="recovery-intro.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="preface.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="recovery-intro.html">Next</a></td>
</tr>
</table>
<hr />
@@ -29,7 +29,7 @@
<div class="titlepage">
<div>
<div>
- <h2 class="title"><a id="introduction"></a>Chapter 1. Introduction</h2>
+ <h2 class="title"><a id="introduction"></a>Chapter 1. Introduction</h2>
</div>
</div>
<div></div>
@@ -213,9 +213,27 @@
lose whatever data you were committing at the
time of the failure, but your databases will be otherwise unaffected.
</p>
+ <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
+ <h3 class="title">Note</h3>
+ <p>
+ Be aware that many disks have a disk write cache and on
+ some systems it is enabled by default. This means that
+ a transaction can have committed, and to your
+ application the data may appear to reside on disk, but
+ the data may in fact reside only in the write cache at
+ that time. This means that if the disk write cache is
+ enabled and there is no battery backup for it, data can
+ be lost after an OS crash even when maximum durability
+ mode is in use. For maximum durability, disable the
+ disk write cache or use a disk write cache with a
+ battery backup.
+ </p>
+ </div>
<p>
Of course, if your <span class="emphasis"><em>disk</em></span> fails, then the transactional benefits described in this book
are only as good as the backups you have taken.
+
+
<span>
By spreading your data and log files across separate disks,
you can minimize the risk of data loss due to a disk failure, but even in this case it is possible to
@@ -356,7 +374,7 @@
include code for detecting and responding to deadlocks.
Note that this requirement is not
<span class="emphasis"><em>specific</em></span> to transactions
- &#8211; you can certainly write concurrent
+ – you can certainly write concurrent
non-transactional DB applications. Further, not
every transactional application uses concurrency and
so not every transactional application must
@@ -404,7 +422,7 @@
you can configure your application to see uncommitted reads, which means
that one transaction can see data that has been modified but not yet
committed by another transaction. Doing this might mean your
- transaction reads data &quot;dirtied&quot; by another transaction,
+ transaction reads data "dirtied" by another transaction,
but which subsequently might change before that
other transaction commits its changes.
On the other hand, lowering your isolation
@@ -422,18 +440,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="preface.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="preface.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="recovery-intro.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="recovery-intro.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Preface </td>
+ <td width="40%" align="left" valign="top">Preface </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Recoverability</td>
+ <td width="40%" align="right" valign="top"> Recoverability</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/C/isolation.html b/db/docs/gsg_txn/C/isolation.html
index 610e02b02..25ee70bc0 100644
--- a/db/docs/gsg_txn/C/isolation.html
+++ b/db/docs/gsg_txn/C/isolation.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Isolation</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="txnconcurrency.html" title="Chapter 4. Concurrency" />
+ <link rel="up" href="txnconcurrency.html" title="Chapter 4. Concurrency" />
<link rel="previous" href="lockingsubsystem.html" title="The Locking Subsystem" />
<link rel="next" href="txn_ccursor.html" title="Transactional Cursors and Concurrent Applications" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Isolation</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="lockingsubsystem.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 4. Concurrency</th>
- <td width="20%" align="right"> <a accesskey="n" href="txn_ccursor.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="lockingsubsystem.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 4. Concurrency</th>
+ <td width="20%" align="right"> <a accesskey="n" href="txn_ccursor.html">Next</a></td>
</tr>
</table>
<hr />
@@ -239,7 +239,7 @@
<pre class="programlisting">#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
-#include &quot;db.h&quot;
+#include "db.h"
int
main(void)
@@ -249,10 +249,10 @@ main(void)
DB *dbp;
DB_ENV *envp;
DB_TXN *txn;
- const char *db_home_dir = &quot;/tmp/myEnvironment&quot;;
- const char *file_name = &quot;mydb.db&quot;;
- const char *keystr =&quot;thekey&quot;;
- const char *datastr = &quot;thedata&quot;;
+ const char *db_home_dir = "/tmp/myEnvironment";
+ const char *file_name = "mydb.db";
+ const char *keystr ="thekey";
+ const char *datastr = "thedata";
dbp = NULL;
envp = NULL;
@@ -260,7 +260,7 @@ main(void)
/* Open the environment */
ret = db_env_create(&amp;envp, 0);
if (ret != 0) {
- fprintf(stderr, &quot;Error creating environment handle: %s\n&quot;,
+ fprintf(stderr, "Error creating environment handle: %s\n",
db_strerror(ret));
return (EXIT_FAILURE);
}
@@ -275,7 +275,7 @@ main(void)
ret = envp-&gt;open(envp, db_home_dir, env_flags, 0);
if (ret != 0) {
- fprintf(stderr, &quot;Error opening environment: %s\n&quot;,
+ fprintf(stderr, "Error opening environment: %s\n",
db_strerror(ret));
goto err;
}
@@ -283,7 +283,7 @@ main(void)
/* Initialize the DB handle */
ret = db_create(&amp;dbp, envp, 0);
if (ret != 0) {
- envp-&gt;err(envp, ret, &quot;Database creation failed&quot;);
+ envp-&gt;err(envp, ret, "Database creation failed");
goto err;
}
@@ -300,7 +300,7 @@ main(void)
db_flags, /* Open flags */
0); /* File mode. Using defaults */
if (ret != 0) {
- envp-&gt;err(envp, ret, &quot;Database '%s' open failed&quot;,
+ envp-&gt;err(envp, ret, "Database '%s' open failed",
file_name);
goto err;
}
@@ -309,7 +309,7 @@ main(void)
txn = NULL;
ret = envp-&gt;txn_begin(envp, NULL, &amp;txn, DB_READ_UNCOMMITTED);
if (ret != 0) {
- envp-&gt;err(envp, ret, &quot;Transaction begin failed.&quot;);
+ envp-&gt;err(envp, ret, "Transaction begin failed.");
goto err;
}
@@ -399,7 +399,7 @@ main(void)
<pre class="programlisting">#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
-#include &quot;db.h&quot;
+#include "db.h"
int
main(void)
@@ -409,8 +409,8 @@ main(void)
DB *dbp;
DB_ENV *envp;
DB_TXN *txn;
- const char *db_home_dir = &quot;/tmp/myEnvironment&quot;;
- const char *file_name = &quot;mydb.db&quot;;
+ const char *db_home_dir = "/tmp/myEnvironment";
+ const char *file_name = "mydb.db";
dbp = NULL;
envp = NULL;
@@ -418,7 +418,7 @@ main(void)
/* Open the environment */
ret = db_env_create(&amp;envp, 0);
if (ret != 0) {
- fprintf(stderr, &quot;Error creating environment handle: %s\n&quot;,
+ fprintf(stderr, "Error creating environment handle: %s\n",
db_strerror(ret));
return (EXIT_FAILURE);
}
@@ -433,7 +433,7 @@ main(void)
ret = envp-&gt;open(envp, db_home_dir, env_flags, 0);
if (ret != 0) {
- fprintf(stderr, &quot;Error opening environment: %s\n&quot;,
+ fprintf(stderr, "Error opening environment: %s\n",
db_strerror(ret));
goto err;
}
@@ -441,7 +441,7 @@ main(void)
/* Initialize the DB handle */
ret = db_create(&amp;dbp, envp, 0);
if (ret != 0) {
- envp-&gt;err(envp, ret, &quot;Database creation failed&quot;);
+ envp-&gt;err(envp, ret, "Database creation failed");
goto err;
}
@@ -459,7 +459,7 @@ main(void)
db_flags, /* Open flags */
0); /* File mode. Using defaults */
if (ret != 0) {
- envp-&gt;err(envp, ret, &quot;Database '%s' open failed&quot;,
+ envp-&gt;err(envp, ret, "Database '%s' open failed",
file_name);
goto err;
}
@@ -472,7 +472,7 @@ main(void)
*/
ret = envp-&gt;txn_begin(envp, NULL, &amp;txn, DB_READ_COMMITTED);
if (ret != 0) {
- envp-&gt;err(envp, ret, &quot;Transaction begin failed.&quot;);
+ envp-&gt;err(envp, ret, "Transaction begin failed.");
goto err;
}
@@ -501,11 +501,15 @@ main(void)
important side effect of this isolation level is that
read operations obtain read locks on database pages,
and then hold those locks until the read operation is
- completed. When you are using transactional cursors, this
+ completed.
+
+ <span>
+ When you are using transactional cursors, this
means that read locks are held until the transaction commits or
aborts. In that case, over time a transactional cursor
can gradually block all other transactions from writing
to the database.
+ </span>
</p>
<p>
You can avoid this by using snapshot isolation.
@@ -513,7 +517,7 @@ main(void)
concurrency control</em></span> to guarantee
repeatable reads. What this means is that every time a
writer would take a read lock on a page, instead a copy of
- the page is made and the writer operations on that page
+ the page is made and the writer operates on that page
copy. This frees other writers from blocking due to a
read lock held on the page.
</p>
@@ -536,7 +540,7 @@ main(void)
<p>
If the cache becomes full of page copies before old
copies can be discarded, additional I/O will occur as
- pages are written to temporary &quot;freezer&quot; files on disk.
+ pages are written to temporary "freezer" files on disk.
This can substantially reduce throughput, and should be
avoided if possible by configuring a large cache and
keeping snapshot isolation transactions short.
@@ -565,170 +569,7 @@ main(void)
In addition to an increased cache size, you may also
need to increase the maximum number of transactions
that your application supports. (See
- <a href="maxtxns.html"><p>
- Most of the configuration activities that you need to perform
- for your transactional DB application will involve the
- locking and logging subsystems. See
- <a href="txnconcurrency.html"></a>Concurrency
- and
- <a href="filemanagement.html"></a>Managing DB Files
- for details.
- </p><p>
- However, there are a couple of things that you can do to
- configure your transaction subsystem directly. These things
- are:
- </p><div class="itemizedlist"><ul type="disc"><li><p>
- Configure the maximum number of simultaneous
- transactions needed by your application.
- In general, you should not need to do this unless you
- use deeply nested transactions or you have many threads all
- of which have active transactions. In addition, you may
- need to a higher maximum number of transactions if you
- are using snapshot isolation. See
- <a href="isolation.html#sisolation_maxtxn"></a>Snapshot Isolation Transactional Requirements
- for details.
- </p><p>
- By default, your application can support 20 active
- transactions.
- </p><p>
- You can set the maximum number of simultaneous
- transactions supported by your application using
- <span>
- the
- <tt class="methodname">DB_ENV-&gt;set_tx_max()</tt>
-
- method. Note that this method must be called
- before the environment has been opened.
- </span>
-
- </p><p>
- If your application has exceeded this maximum value,
- then any attempt to begin a new transaction will fail.
- </p><p>
- This value can also be set using the
- <tt class="literal">DB_CONFIG</tt> file's
- <tt class="literal">set_tx_max</tt> parameter. Remember that
- the <tt class="literal">DB_CONFIG</tt> must reside in your
- environment home directory.
- </p></li><li><span>
- <p>
- <span>
- Configure the timeout value for your transactions.
- </span>
-
-
- This value represents the longest period of time a
- transaction can be active. Note, however, that
- transaction timeouts are checked only when DB
- examines its lock tables for blocked locks
- (see <a href="blocking_deadlocks.html"></a>Locks, Blocks, and Deadlocks
- for more information). Therefore, a transaction's timeout can
- have expired, but the application will not be notified until DB
- has a reason to examine its lock tables.
- </p>
- <p>
- Be aware that some transactions may be
- inappropriately timed out before the transaction has a
- chance to complete. You should therefore use this
- mechanism only if you know your application
- might have unacceptably long transactions and
- you want to make sure your application will
- not stall during their execution.
- (This might happen if, for example, your
- transaction blocks or requests too much
- data.)
- </p>
- <p>
- Note that by default transaction timeouts are set to 0 seconds, which means that they never time
- out.
- </p>
- <p>
- To set the maximum timeout value for your transactions,
- use the
- <span><tt class="methodname">DB_ENV-&gt;set_timeout()</tt></span>
-
-
- method. This method configures the entire
- environment; not just the handle used to set the
- configuration. Further, this value may
- be set at any time during the application's
- lifetime.
- </p>
- <p>
- This value can also be set using the
- <tt class="literal">DB_CONFIG</tt> file's
- <tt class="literal">set_txn_timeout</tt> parameter.
- </p>
-
-</span></li></ul></div><p>
- For example:
- </p><pre class="programlisting">#include &lt;stdio.h&gt;
-#include &lt;stdlib.h&gt;
-
-#include &quot;db.h&quot;
-
-int
-main(void)
-{
- int ret, ret_c;
- u_int32_t db_flags, env_flags;
- DB *dbp;
- DB_ENV *envp;
- DB_TXN *txn;
- const char *db_home_dir = &quot;/tmp/myEnvironment&quot;;
- const char *file_name = &quot;mydb.db&quot;;
-
- envp = NULL;
-
- /* Open the environment */
- ret = db_env_create(&amp;envp, 0);
- if (ret != 0) {
- fprintf(stderr, &quot;Error creating environment handle: %s\n&quot;,
- db_strerror(ret));
- return (EXIT_FAILURE);
- }
-
- env_flags = DB_CREATE | /* If the environment does not
- * exist, create it. */
- DB_INIT_LOCK | /* Initialize locking */
- DB_INIT_LOG | /* Initialize logging */
- DB_INIT_MPOOL | /* Initialize the cache */
- DB_THREAD | /* Free-thread the env handle. */
- DB_INIT_TXN; /* Initialize transactions */
-
- /*
- * Configure a maximum transaction timeout of 1 second.
- */
- ret = envp-&gt;set_timeout(envp, DB_SET_TXN_TIMEOUT, 1000000);
- if (ret != 0) {
- fprintf(stderr, &quot;Error setting txn timeout: %s\n&quot;,
- db_strerror(ret));
- goto err;
- }
-
- /*
- * Configure 40 maximum transactions.
- */
- ret = envp-&gt;set_tx_max(envp, 40);
- if (ret != 0) {
- fprintf(stderr, &quot;Error setting max txns: %s\n&quot;,
- db_strerror(ret));
- goto err;
- }
-
- ret = envp-&gt;open(envp, db_home_dir, env_flags, 0);
- if (ret != 0) {
- fprintf(stderr, &quot;Error opening environment: %s\n&quot;,
- db_strerror(ret));
- goto err;
- }
-
- /*
- * From here, you open your databases, proceed with your
- * database operations, and respond to deadlocks as
- * is normal (omitted for brevity).
- */
- ... </pre></a>
+ <a href="maxtxns.html">Configuring the Transaction Subsystem</a>
for details on how to set this.)
In the worst case scenario, you might need to configure your application for one
more transaction for every page in the cache. This is
@@ -814,9 +655,8 @@ main(void)
</li>
<li>
<p>
- Configure your cursor or
- transaction to use snapshot
- isolation.
+ Configure your <span>cursor or</span>
+ transaction to use snapshot isolation.
</p>
<p>
To do this,
@@ -824,13 +664,23 @@ main(void)
<span>
pass the
<tt class="literal">DB_TXN_SNAPSHOT</tt> flag
- when you open the cursor or
- create the transaction. If
+ when you
+
+ <span>
+ open the cursor or
+ </span>
+
+ create the transaction.
+
+ <span>
+ If
configured for the transaction,
then this flag is not required
when the cursor is opened.
</span>
+ </span>
+
</p>
</li>
@@ -864,7 +714,7 @@ main(void)
<pre class="programlisting">#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
-#include &quot;db.h&quot;
+#include "db.h"
int
main(void)
@@ -873,8 +723,8 @@ main(void)
u_int32_t db_flags, env_flags;
DB *dbp;
DB_ENV *envp;
- const char *db_home_dir = &quot;/tmp/myEnvironment&quot;;
- const char *file_name = &quot;mydb.db&quot;;
+ const char *db_home_dir = "/tmp/myEnvironment";
+ const char *file_name = "mydb.db";
dbp = NULL;
envp = NULL;
@@ -882,7 +732,7 @@ main(void)
/* Open the environment */
ret = db_env_create(&amp;envp, 0);
if (ret != 0) {
- fprintf(stderr, &quot;Error creating environment handle: %s\n&quot;,
+ fprintf(stderr, "Error creating environment handle: %s\n",
db_strerror(ret));
return (EXIT_FAILURE);
}
@@ -897,7 +747,7 @@ main(void)
ret = envp-&gt;open(envp, db_home_dir, env_flags, 0);
if (ret != 0) {
- fprintf(stderr, &quot;Error opening environment: %s\n&quot;,
+ fprintf(stderr, "Error opening environment: %s\n",
db_strerror(ret));
goto err;
}
@@ -905,7 +755,7 @@ main(void)
/* Initialize the DB handle */
ret = db_create(&amp;dbp, envp, 0);
if (ret != 0) {
- envp-&gt;err(envp, ret, &quot;Database creation failed&quot;);
+ envp-&gt;err(envp, ret, "Database creation failed");
goto err;
}
@@ -922,7 +772,7 @@ main(void)
db_flags, /* Open flags */
0); /* File mode. Using defaults */
if (ret != 0) {
- envp-&gt;err(envp, ret, &quot;Database '%s' open failed&quot;,
+ envp-&gt;err(envp, ret, "Database '%s' open failed",
file_name);
goto err;
}
@@ -942,18 +792,18 @@ main(void)
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="lockingsubsystem.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="lockingsubsystem.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="txnconcurrency.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="txn_ccursor.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="txn_ccursor.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">The Locking Subsystem </td>
+ <td width="40%" align="left" valign="top">The Locking Subsystem </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Transactional Cursors and Concurrent Applications</td>
+ <td width="40%" align="right" valign="top"> Transactional Cursors and Concurrent Applications</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/C/lockingsubsystem.html b/db/docs/gsg_txn/C/lockingsubsystem.html
index 8311ce3b0..944fe9b2c 100644
--- a/db/docs/gsg_txn/C/lockingsubsystem.html
+++ b/db/docs/gsg_txn/C/lockingsubsystem.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>The Locking Subsystem</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="txnconcurrency.html" title="Chapter 4. Concurrency" />
+ <link rel="up" href="txnconcurrency.html" title="Chapter 4. Concurrency" />
<link rel="previous" href="blocking_deadlocks.html" title="Locks, Blocks, and Deadlocks" />
<link rel="next" href="isolation.html" title="Isolation" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">The Locking Subsystem</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="blocking_deadlocks.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 4. Concurrency</th>
- <td width="20%" align="right"> <a accesskey="n" href="isolation.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="blocking_deadlocks.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 4. Concurrency</th>
+ <td width="20%" align="right"> <a accesskey="n" href="isolation.html">Next</a></td>
</tr>
</table>
<hr />
@@ -163,7 +163,7 @@
<pre class="programlisting">#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
-#include &quot;db.h&quot;
+#include "db.h"
int
main(void)
@@ -171,14 +171,14 @@ main(void)
int ret, ret_c;
u_int32_t env_flags;
DB_ENV *envp;
- const char *db_home_dir = &quot;/tmp/myEnvironment&quot;;
+ const char *db_home_dir = "/tmp/myEnvironment";
envp = NULL;
/* Open the environment */
ret = db_env_create(&amp;envp, 0);
if (ret != 0) {
- fprintf(stderr, &quot;Error creating environment handle: %s\n&quot;,
+ fprintf(stderr, "Error creating environment handle: %s\n",
db_strerror(ret));
return (EXIT_FAILURE);
}
@@ -194,7 +194,7 @@ main(void)
/* Configure max locks */
ret = envp-&gt;set_lk_max_locks(envp, 5000);
if (ret != 0) {
- fprintf(stderr, &quot;Error configuring locks: %s\n&quot;,
+ fprintf(stderr, "Error configuring locks: %s\n",
db_strerror(ret));
goto err;
}
@@ -202,7 +202,7 @@ main(void)
/* Open the environment. */
ret = envp-&gt;open(envp, db_home_dir, env_flags, 0);
if (ret != 0) {
- fprintf(stderr, &quot;Error opening environment: %s\n&quot;,
+ fprintf(stderr, "Error opening environment: %s\n",
db_strerror(ret));
goto err;
}
@@ -212,7 +212,7 @@ err:
if (envp != NULL) {
ret_c = envp-&gt;close(envp, 0);
if (ret_c != 0) {
- fprintf(stderr, &quot;environment close failed: %s\n&quot;,
+ fprintf(stderr, "environment close failed: %s\n",
db_strerror(ret_c));
ret = ret_c;
}
@@ -354,7 +354,7 @@ err:
<pre class="programlisting">#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
-#include &quot;db.h&quot;
+#include "db.h"
int
main(void)
@@ -364,15 +364,15 @@ main(void)
DB *dbp;
DB_ENV *envp;
DB_TXN *txn;
- const char *db_home_dir = &quot;/tmp/myEnvironment&quot;;
- const char *file_name = &quot;mydb.db&quot;;
+ const char *db_home_dir = "/tmp/myEnvironment";
+ const char *file_name = "mydb.db";
envp = NULL;
/* Open the environment */
ret = db_env_create(&amp;envp, 0);
if (ret != 0) {
- fprintf(stderr, &quot;Error creating environment handle: %s\n&quot;,
+ fprintf(stderr, "Error creating environment handle: %s\n",
db_strerror(ret));
return (EXIT_FAILURE);
}
@@ -392,14 +392,14 @@ main(void)
*/
ret = envp-&gt;set_lk_detect(envp, DB_LOCK_MINWRITE);
if (ret != 0) {
- fprintf(stderr, &quot;Error setting lk detect: %s\n&quot;,
+ fprintf(stderr, "Error setting lk detect: %s\n",
db_strerror(ret));
goto err;
}
ret = envp-&gt;open(envp, db_home_dir, env_flags, 0);
if (ret != 0) {
- fprintf(stderr, &quot;Error opening environment: %s\n&quot;,
+ fprintf(stderr, "Error opening environment: %s\n",
db_strerror(ret));
goto err;
}
@@ -487,7 +487,7 @@ main(void)
<pre class="programlisting">retry:
ret = envp-&gt;txn_begin(envp, NULL, &amp;txn, 0);
if (ret != 0) {
- envp-&gt;err(envp, ret, &quot;txn_begin failed&quot;);
+ envp-&gt;err(envp, ret, "txn_begin failed");
return (EXIT_FAILURE);
}
...
@@ -508,27 +508,27 @@ main(void)
* MAX_DEADLOCK_RETRIES times.
*/
if (retry_count &lt; MAX_DEADLOCK_RETRIES) {
- printf(&quot;Got DB_LOCK_DEADLOCK.\n&quot;);
- printf(&quot;Retrying write operation.\n&quot;);
+ printf("Got DB_LOCK_DEADLOCK.\n");
+ printf("Retrying write operation.\n");
retry_count++;
goto retry;
}
- printf(&quot;Got DB_LOCK_DEADLOCK and out of retries.&quot;);
- printf(&quot;Giving up.\n&quot;);
+ printf("Got DB_LOCK_DEADLOCK and out of retries.");
+ printf("Giving up.\n");
return (EXIT_FAILURE);
default:
/* If some random database error occurs, we just give up */
- envp-&gt;err(envp, ret, &quot;db put failed&quot;);
+ envp-&gt;err(envp, ret, "db put failed");
ret = txn-&gt;abort(txn);
if (ret != 0) {
- envp-&gt;err(envp, ret, &quot;txn abort failed&quot;);
+ envp-&gt;err(envp, ret, "txn abort failed");
return (EXIT_FAILURE);
}
}
/* If all goes well, commit the transaction */
ret = txn-&gt;commit(txn, 0);
if (ret != 0) {
- envp-&gt;err(envp, ret, &quot;txn commit failed&quot;);
+ envp-&gt;err(envp, ret, "txn commit failed");
return (EXIT_FAILURE);
}
@@ -539,18 +539,18 @@ main(void)
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="blocking_deadlocks.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="blocking_deadlocks.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="txnconcurrency.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="isolation.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="isolation.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Locks, Blocks, and Deadlocks </td>
+ <td width="40%" align="left" valign="top">Locks, Blocks, and Deadlocks </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Isolation</td>
+ <td width="40%" align="right" valign="top"> Isolation</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/C/logconfig.html b/db/docs/gsg_txn/C/logconfig.html
index 3a5485ca8..c27b9de66 100644
--- a/db/docs/gsg_txn/C/logconfig.html
+++ b/db/docs/gsg_txn/C/logconfig.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Configuring the Logging Subsystem</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="filemanagement.html" title="Chapter 5. Managing DB Files" />
+ <link rel="up" href="filemanagement.html" title="Chapter 5. Managing DB Files" />
<link rel="previous" href="logfileremoval.html" title="Removing Log Files" />
- <link rel="next" href="wrapup.html" title="Chapter 6. Summary and Examples" />
+ <link rel="next" href="wrapup.html" title="Chapter 6. Summary and Examples" />
</head>
<body>
<div class="navheader">
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Configuring the Logging Subsystem</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="logfileremoval.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 5. Managing DB Files</th>
- <td width="20%" align="right"> <a accesskey="n" href="wrapup.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="logfileremoval.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 5. Managing DB Files</th>
+ <td width="20%" align="right"> <a accesskey="n" href="wrapup.html">Next</a></td>
</tr>
</table>
<hr />
@@ -275,7 +275,7 @@
<pre class="programlisting">#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
-#include &quot;db.h&quot;
+#include "db.h"
int
main(void)
@@ -283,14 +283,14 @@ main(void)
int ret, ret_c;
u_int32_t db_flags, env_flags;
DB_ENV *envp;
- const char *db_home_dir = &quot;/tmp/myEnvironment&quot;;
+ const char *db_home_dir = "/tmp/myEnvironment";
envp = NULL;
/* Create the environment */
ret = db_env_create(&amp;envp, 0);
if (ret != 0) {
- fprintf(stderr, &quot;Error creating environment handle: %s\n&quot;,
+ fprintf(stderr, "Error creating environment handle: %s\n",
db_strerror(ret));
return (EXIT_FAILURE);
}
@@ -312,7 +312,7 @@ main(void)
*/
ret = envp-&gt;set_lg_bsize(envp, 5 * 1024 * 1024);
if (ret != 0) {
- fprintf(stderr, &quot;Error setting log buffer size: %s\n&quot;,
+ fprintf(stderr, "Error setting log buffer size: %s\n",
db_strerror(ret));
goto err;
}
@@ -335,7 +335,7 @@ main(void)
/* Open the environment as normal */
ret = envp-&gt;open(envp, db_home_dir, env_flags, 0);
if (ret != 0) {
- fprintf(stderr, &quot;Error opening environment: %s\n&quot;,
+ fprintf(stderr, "Error opening environment: %s\n",
db_strerror(ret));
goto err;
}
@@ -358,7 +358,7 @@ err:
if (envp != NULL) {
ret_c = envp-&gt;close(envp, 0);
if (ret_c != 0) {
- fprintf(stderr, &quot;environment close failed: %s\n&quot;,
+ fprintf(stderr, "environment close failed: %s\n",
db_strerror(ret_c));
ret = ret_c;
}
@@ -400,7 +400,7 @@ err:
large enough that no transaction will ever span the entire
buffer. You must also avoid a state where the in-memory
buffer is full and no space can be freed because a
- transaction that started the first log &quot;file&quot; is still
+ transaction that started the first log "file" is still
active.
</p>
<p>
@@ -425,18 +425,18 @@ err:
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="logfileremoval.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="logfileremoval.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="filemanagement.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="wrapup.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="wrapup.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Removing Log Files </td>
+ <td width="40%" align="left" valign="top">Removing Log Files </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Chapter 6. Summary and Examples</td>
+ <td width="40%" align="right" valign="top"> Chapter 6. Summary and Examples</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/C/logfileremoval.html b/db/docs/gsg_txn/C/logfileremoval.html
index 0ed044eb3..248a5a5a7 100644
--- a/db/docs/gsg_txn/C/logfileremoval.html
+++ b/db/docs/gsg_txn/C/logfileremoval.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Removing Log Files</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="filemanagement.html" title="Chapter 5. Managing DB Files" />
+ <link rel="up" href="filemanagement.html" title="Chapter 5. Managing DB Files" />
<link rel="previous" href="hotfailover.html" title="Using Hot Failovers" />
<link rel="next" href="logconfig.html" title="Configuring the Logging Subsystem" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Removing Log Files</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="hotfailover.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 5. Managing DB Files</th>
- <td width="20%" align="right"> <a accesskey="n" href="logconfig.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="hotfailover.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 5. Managing DB Files</th>
+ <td width="20%" align="right"> <a accesskey="n" href="logconfig.html">Next</a></td>
</tr>
</table>
<hr />
@@ -187,18 +187,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="hotfailover.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="hotfailover.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="filemanagement.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="logconfig.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="logconfig.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Using Hot Failovers </td>
+ <td width="40%" align="left" valign="top">Using Hot Failovers </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Configuring the Logging Subsystem</td>
+ <td width="40%" align="right" valign="top"> Configuring the Logging Subsystem</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/C/maxtxns.html b/db/docs/gsg_txn/C/maxtxns.html
index 311587dbf..f8515aa5d 100644
--- a/db/docs/gsg_txn/C/maxtxns.html
+++ b/db/docs/gsg_txn/C/maxtxns.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Configuring the Transaction Subsystem</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="usingtxns.html" title="Chapter 3. Transaction Basics" />
+ <link rel="up" href="usingtxns.html" title="Chapter 3. Transaction Basics" />
<link rel="previous" href="txnindices.html" title="Secondary Indices with Transaction Applications" />
- <link rel="next" href="txnconcurrency.html" title="Chapter 4. Concurrency" />
+ <link rel="next" href="txnconcurrency.html" title="Chapter 4. Concurrency" />
</head>
<body>
<div class="navheader">
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Configuring the Transaction Subsystem</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="txnindices.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 3. Transaction Basics</th>
- <td width="20%" align="right"> <a accesskey="n" href="txnconcurrency.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="txnindices.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 3. Transaction Basics</th>
+ <td width="20%" align="right"> <a accesskey="n" href="txnconcurrency.html">Next</a></td>
</tr>
</table>
<hr />
@@ -151,7 +151,7 @@
<pre class="programlisting">#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
-#include &quot;db.h&quot;
+#include "db.h"
int
main(void)
@@ -161,15 +161,15 @@ main(void)
DB *dbp;
DB_ENV *envp;
DB_TXN *txn;
- const char *db_home_dir = &quot;/tmp/myEnvironment&quot;;
- const char *file_name = &quot;mydb.db&quot;;
+ const char *db_home_dir = "/tmp/myEnvironment";
+ const char *file_name = "mydb.db";
envp = NULL;
/* Open the environment */
ret = db_env_create(&amp;envp, 0);
if (ret != 0) {
- fprintf(stderr, &quot;Error creating environment handle: %s\n&quot;,
+ fprintf(stderr, "Error creating environment handle: %s\n",
db_strerror(ret));
return (EXIT_FAILURE);
}
@@ -187,7 +187,7 @@ main(void)
*/
ret = envp-&gt;set_timeout(envp, DB_SET_TXN_TIMEOUT, 1000000);
if (ret != 0) {
- fprintf(stderr, &quot;Error setting txn timeout: %s\n&quot;,
+ fprintf(stderr, "Error setting txn timeout: %s\n",
db_strerror(ret));
goto err;
}
@@ -197,14 +197,14 @@ main(void)
*/
ret = envp-&gt;set_tx_max(envp, 40);
if (ret != 0) {
- fprintf(stderr, &quot;Error setting max txns: %s\n&quot;,
+ fprintf(stderr, "Error setting max txns: %s\n",
db_strerror(ret));
goto err;
}
ret = envp-&gt;open(envp, db_home_dir, env_flags, 0);
if (ret != 0) {
- fprintf(stderr, &quot;Error opening environment: %s\n&quot;,
+ fprintf(stderr, "Error opening environment: %s\n",
db_strerror(ret));
goto err;
}
@@ -220,18 +220,18 @@ main(void)
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="txnindices.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="txnindices.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="usingtxns.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="txnconcurrency.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="txnconcurrency.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Secondary Indices with Transaction Applications </td>
+ <td width="40%" align="left" valign="top">Secondary Indices with Transaction Applications </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Chapter 4. Concurrency</td>
+ <td width="40%" align="right" valign="top"> Chapter 4. Concurrency</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/C/nestedtxn.html b/db/docs/gsg_txn/C/nestedtxn.html
index c202d794d..0151466c7 100644
--- a/db/docs/gsg_txn/C/nestedtxn.html
+++ b/db/docs/gsg_txn/C/nestedtxn.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Nested Transactions</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="usingtxns.html" title="Chapter 3. Transaction Basics" />
+ <link rel="up" href="usingtxns.html" title="Chapter 3. Transaction Basics" />
<link rel="previous" href="autocommit.html" title="Auto Commit" />
<link rel="next" href="txncursor.html" title="Transactional Cursors" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Nested Transactions</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="autocommit.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 3. Transaction Basics</th>
- <td width="20%" align="right"> <a accesskey="n" href="txncursor.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="autocommit.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 3. Transaction Basics</th>
+ <td width="20%" align="right"> <a accesskey="n" href="txncursor.html">Next</a></td>
</tr>
</table>
<hr />
@@ -121,18 +121,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="autocommit.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="autocommit.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="usingtxns.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="txncursor.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="txncursor.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Auto Commit </td>
+ <td width="40%" align="left" valign="top">Auto Commit </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Transactional Cursors</td>
+ <td width="40%" align="right" valign="top"> Transactional Cursors</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/C/perftune-intro.html b/db/docs/gsg_txn/C/perftune-intro.html
index e9dff26fc..5a31485c0 100644
--- a/db/docs/gsg_txn/C/perftune-intro.html
+++ b/db/docs/gsg_txn/C/perftune-intro.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Performance Tuning</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="introduction.html" title="Chapter 1. Introduction" />
+ <link rel="up" href="introduction.html" title="Chapter 1. Introduction" />
<link rel="previous" href="recovery-intro.html" title="Recoverability" />
- <link rel="next" href="enabletxn.html" title="Chapter 2. Enabling Transactions" />
+ <link rel="next" href="enabletxn.html" title="Chapter 2. Enabling Transactions" />
</head>
<body>
<div class="navheader">
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Performance Tuning</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="recovery-intro.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 1. Introduction</th>
- <td width="20%" align="right"> <a accesskey="n" href="enabletxn.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="recovery-intro.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 1. Introduction</th>
+ <td width="20%" align="right"> <a accesskey="n" href="enabletxn.html">Next</a></td>
</tr>
</table>
<hr />
@@ -69,18 +69,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="recovery-intro.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="recovery-intro.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="introduction.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="enabletxn.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="enabletxn.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Recoverability </td>
+ <td width="40%" align="left" valign="top">Recoverability </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Chapter 2. Enabling Transactions</td>
+ <td width="40%" align="right" valign="top"> Chapter 2. Enabling Transactions</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/C/preface.html b/db/docs/gsg_txn/C/preface.html
index e0a70ee9f..691118326 100644
--- a/db/docs/gsg_txn/C/preface.html
+++ b/db/docs/gsg_txn/C/preface.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Preface</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
<link rel="up" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
<link rel="previous" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="next" href="introduction.html" title="Chapter 1. Introduction" />
+ <link rel="next" href="introduction.html" title="Chapter 1. Introduction" />
</head>
<body>
<div class="navheader">
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Preface</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="index.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="introduction.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="index.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="introduction.html">Next</a></td>
</tr>
</table>
<hr />
@@ -91,12 +91,12 @@
</p>
<p>
Structure names are represented in <tt class="classname">monospaced font</tt>, as are <tt class="methodname">method
- names</tt>. For example: &quot;<tt class="methodname">DB-&gt;open()</tt> is a method
- on a <tt class="classname">DB</tt> handle.&quot;
+ names</tt>. For example: "<tt class="methodname">DB-&gt;open()</tt> is a method
+ on a <tt class="classname">DB</tt> handle."
</p>
<p>
- Variable or non-literal text is presented in <span class="emphasis"><em>italics</em></span>. For example: &quot;Go to your
- <span class="emphasis"><em>DB_INSTALL</em></span> directory.&quot;
+ Variable or non-literal text is presented in <span class="emphasis"><em>italics</em></span>. For example: "Go to your
+ <span class="emphasis"><em>DB_INSTALL</em></span> directory."
</p>
<p>
Program examples are displayed in a <tt class="classname">monospaced font</tt> on a shaded background.
@@ -196,18 +196,18 @@ typedef struct stock_dbs {
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="index.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="index.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="introduction.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="introduction.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Getting Started with Berkeley DB Transaction Processing </td>
+ <td width="40%" align="left" valign="top">Getting Started with Berkeley DB Transaction Processing </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Chapter 1. Introduction</td>
+ <td width="40%" align="right" valign="top"> Chapter 1. Introduction</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/C/readmodifywrite.html b/db/docs/gsg_txn/C/readmodifywrite.html
index 4d6241614..abfb41cd6 100644
--- a/db/docs/gsg_txn/C/readmodifywrite.html
+++ b/db/docs/gsg_txn/C/readmodifywrite.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Read/Modify/Write</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="txnconcurrency.html" title="Chapter 4. Concurrency" />
+ <link rel="up" href="txnconcurrency.html" title="Chapter 4. Concurrency" />
<link rel="previous" href="txn_ccursor.html" title="Transactional Cursors and Concurrent Applications" />
<link rel="next" href="txnnowait.html" title="No Wait on Blocks" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Read/Modify/Write</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="txn_ccursor.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 4. Concurrency</th>
- <td width="20%" align="right"> <a accesskey="n" href="txnnowait.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="txn_ccursor.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 4. Concurrency</th>
+ <td width="20%" align="right"> <a accesskey="n" href="txnnowait.html">Next</a></td>
</tr>
</table>
<hr />
@@ -77,7 +77,7 @@
/* Get the transaction */
ret = envp-&gt;txn_begin(envp, NULL, &amp;txn, 0);
if (ret != 0) {
- envp-&gt;err(envp, ret, &quot;txn_begin failed&quot;);
+ envp-&gt;err(envp, ret, "txn_begin failed");
return (EXIT_FAILURE);
}
...
@@ -103,18 +103,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="txn_ccursor.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="txn_ccursor.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="txnconcurrency.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="txnnowait.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="txnnowait.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Transactional Cursors and Concurrent Applications </td>
+ <td width="40%" align="left" valign="top">Transactional Cursors and Concurrent Applications </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> No Wait on Blocks</td>
+ <td width="40%" align="right" valign="top"> No Wait on Blocks</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/C/recovery-intro.html b/db/docs/gsg_txn/C/recovery-intro.html
index ee490b9ba..e971eef93 100644
--- a/db/docs/gsg_txn/C/recovery-intro.html
+++ b/db/docs/gsg_txn/C/recovery-intro.html
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Recoverability</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="introduction.html" title="Chapter 1. Introduction" />
- <link rel="previous" href="introduction.html" title="Chapter 1. Introduction" />
+ <link rel="up" href="introduction.html" title="Chapter 1. Introduction" />
+ <link rel="previous" href="introduction.html" title="Chapter 1. Introduction" />
<link rel="next" href="perftune-intro.html" title="Performance Tuning" />
</head>
<body>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Recoverability</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="introduction.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 1. Introduction</th>
- <td width="20%" align="right"> <a accesskey="n" href="perftune-intro.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="introduction.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 1. Introduction</th>
+ <td width="20%" align="right"> <a accesskey="n" href="perftune-intro.html">Next</a></td>
</tr>
</table>
<hr />
@@ -85,18 +85,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="introduction.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="introduction.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="introduction.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="perftune-intro.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="perftune-intro.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Chapter 1. Introduction </td>
+ <td width="40%" align="left" valign="top">Chapter 1. Introduction </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Performance Tuning</td>
+ <td width="40%" align="right" valign="top"> Performance Tuning</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/C/recovery.html b/db/docs/gsg_txn/C/recovery.html
index fdf872d9e..b2da339ae 100644
--- a/db/docs/gsg_txn/C/recovery.html
+++ b/db/docs/gsg_txn/C/recovery.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Recovery Procedures</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="filemanagement.html" title="Chapter 5. Managing DB Files" />
+ <link rel="up" href="filemanagement.html" title="Chapter 5. Managing DB Files" />
<link rel="previous" href="backuprestore.html" title="Backup Procedures" />
<link rel="next" href="architectrecovery.html" title="Designing Your Application for Recovery" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Recovery Procedures</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="backuprestore.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 5. Managing DB Files</th>
- <td width="20%" align="right"> <a accesskey="n" href="architectrecovery.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="backuprestore.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 5. Managing DB Files</th>
+ <td width="20%" align="right"> <a accesskey="n" href="architectrecovery.html">Next</a></td>
</tr>
</table>
<hr />
@@ -143,7 +143,7 @@
</p>
<pre class="programlisting">#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
-#include &quot;db.h&quot;
+#include "db.h"
int
main(void)
@@ -151,14 +151,14 @@ main(void)
int ret;
u_int32_t env_flags;
DB_ENV *envp;
- const char *db_home_dir = &quot;/tmp/myEnvironment&quot;;
+ const char *db_home_dir = "/tmp/myEnvironment";
envp = NULL;
/* Open the environment */
ret = db_env_create(&amp;envp, 0);
if (ret != 0) {
- fprintf(stderr, &quot;Error creating environment handle: %s\n&quot;,
+ fprintf(stderr, "Error creating environment handle: %s\n",
db_strerror(ret));
return (EXIT_FAILURE);
}
@@ -176,7 +176,7 @@ main(void)
/* Open the environment. */
ret = envp-&gt;open(envp, db_home_dir, env_flags, 0);
if (ret != 0) {
- fprintf(stderr, &quot;Error opening environment: %s\n&quot;,
+ fprintf(stderr, "Error opening environment: %s\n",
db_strerror(ret));
goto err;
}
@@ -241,7 +241,7 @@ main(void)
</p>
<p>
Note that catastrophic recovery examines every available
- log file &#8212; not just those log files created since the
+ log file — not just those log files created since the
last checkpoint as is the case for normal recovery. For this reason,
catastrophic recovery is likely to take longer than does
normal recovery.
@@ -251,7 +251,7 @@ main(void)
</p>
<pre class="programlisting">#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
-#include &quot;db.h&quot;
+#include "db.h"
int
main(void)
@@ -259,14 +259,14 @@ main(void)
int ret;
u_int32_t env_flags;
DB_ENV *envp;
- const char *db_home_dir = &quot;/tmp/myEnvironment&quot;;
+ const char *db_home_dir = "/tmp/myEnvironment";
envp = NULL;
/* Open the environment */
ret = db_env_create(&amp;envp, 0);
if (ret != 0) {
- fprintf(stderr, &quot;Error creating environment handle: %s\n&quot;,
+ fprintf(stderr, "Error creating environment handle: %s\n",
db_strerror(ret));
return (EXIT_FAILURE);
}
@@ -284,7 +284,7 @@ main(void)
/* Open the environment. */
ret = envp-&gt;open(envp, db_home_dir, env_flags, 0);
if (ret != 0) {
- fprintf(stderr, &quot;Error opening environment: %s\n&quot;,
+ fprintf(stderr, "Error opening environment: %s\n",
db_strerror(ret));
goto err;
}
@@ -303,18 +303,18 @@ main(void)
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="backuprestore.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="backuprestore.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="filemanagement.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="architectrecovery.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="architectrecovery.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Backup Procedures </td>
+ <td width="40%" align="left" valign="top">Backup Procedures </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Designing Your Application for Recovery</td>
+ <td width="40%" align="right" valign="top"> Designing Your Application for Recovery</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/C/reversesplit.html b/db/docs/gsg_txn/C/reversesplit.html
index b35db1a81..e55dc0b4d 100644
--- a/db/docs/gsg_txn/C/reversesplit.html
+++ b/db/docs/gsg_txn/C/reversesplit.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Reverse BTree Splits</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="txnconcurrency.html" title="Chapter 4. Concurrency" />
+ <link rel="up" href="txnconcurrency.html" title="Chapter 4. Concurrency" />
<link rel="previous" href="txnnowait.html" title="No Wait on Blocks" />
- <link rel="next" href="filemanagement.html" title="Chapter 5. Managing DB Files" />
+ <link rel="next" href="filemanagement.html" title="Chapter 5. Managing DB Files" />
</head>
<body>
<div class="navheader">
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Reverse BTree Splits</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="txnnowait.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 4. Concurrency</th>
- <td width="20%" align="right"> <a accesskey="n" href="filemanagement.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="txnnowait.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 4. Concurrency</th>
+ <td width="20%" align="right"> <a accesskey="n" href="filemanagement.html">Next</a></td>
</tr>
</table>
<hr />
@@ -82,7 +82,7 @@
<pre class="programlisting">#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
-#include &quot;db.h&quot;
+#include "db.h"
int
main(void)
@@ -91,8 +91,8 @@ main(void)
u_int32_t db_flags, env_flags;
DB *dbp;
DB_ENV *envp;
- const char *db_home_dir = &quot;/tmp/myEnvironment&quot;;
- const char *file_name = &quot;mydb.db&quot;;
+ const char *db_home_dir = "/tmp/myEnvironment";
+ const char *file_name = "mydb.db";
dbp = NULL;
envp = NULL;
@@ -100,7 +100,7 @@ main(void)
/* Open the environment */
ret = db_env_create(&amp;envp, 0);
if (ret != 0) {
- fprintf(stderr, &quot;Error creating environment handle: %s\n&quot;,
+ fprintf(stderr, "Error creating environment handle: %s\n",
db_strerror(ret));
return (EXIT_FAILURE);
}
@@ -114,7 +114,7 @@ main(void)
ret = envp-&gt;open(envp, db_home_dir, env_flags, 0);
if (ret != 0) {
- fprintf(stderr, &quot;Error opening environment: %s\n&quot;,
+ fprintf(stderr, "Error opening environment: %s\n",
db_strerror(ret));
goto err;
}
@@ -122,14 +122,14 @@ main(void)
/* Initialize the DB handle */
ret = db_create(&amp;dbp, envp, 0);
if (ret != 0) {
- envp-&gt;err(envp, ret, &quot;Database creation failed&quot;);
+ envp-&gt;err(envp, ret, "Database creation failed");
goto err;
}
/* Set btree reverse split to off */
ret = db-&gt;set_flags(&amp;db, DB_REVSPLITOFF);
if (ret != 0) {
- envp-&gt;err(envp, ret, &quot;Turning off Btree reverse split failed&quot;);
+ envp-&gt;err(envp, ret, "Turning off Btree reverse split failed");
goto err;
}
@@ -142,7 +142,7 @@ main(void)
db_flags, /* Open flags */
0); /* File mode. Using defaults */
if (ret != 0) {
- envp-&gt;err(envp, ret, &quot;Database '%s' open failed&quot;,
+ envp-&gt;err(envp, ret, "Database '%s' open failed",
file_name);
goto err;
}
@@ -153,7 +153,7 @@ err:
if (dbp != NULL) {
ret_c = dbp-&gt;close(dbp, 0);
if (ret_c != 0) {
- envp-&gt;err(envp, ret_c, &quot;Database close failed.&quot;);
+ envp-&gt;err(envp, ret_c, "Database close failed.");
ret = ret_c
}
}
@@ -163,7 +163,7 @@ err:
if (envp != NULL) {
ret_c = envp-&gt;close(envp, 0);
if (ret_c != 0) {
- fprintf(stderr, &quot;environment close failed: %s\n&quot;,
+ fprintf(stderr, "environment close failed: %s\n",
db_strerror(ret_c));
ret = ret_c;
}
@@ -176,18 +176,18 @@ err:
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="txnnowait.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="txnnowait.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="txnconcurrency.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="filemanagement.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="filemanagement.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">No Wait on Blocks </td>
+ <td width="40%" align="left" valign="top">No Wait on Blocks </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Chapter 5. Managing DB Files</td>
+ <td width="40%" align="right" valign="top"> Chapter 5. Managing DB Files</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/C/txn_ccursor.html b/db/docs/gsg_txn/C/txn_ccursor.html
index a7e040d9c..10c897e79 100644
--- a/db/docs/gsg_txn/C/txn_ccursor.html
+++ b/db/docs/gsg_txn/C/txn_ccursor.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Transactional Cursors and Concurrent Applications</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="txnconcurrency.html" title="Chapter 4. Concurrency" />
+ <link rel="up" href="txnconcurrency.html" title="Chapter 4. Concurrency" />
<link rel="previous" href="isolation.html" title="Isolation" />
<link rel="next" href="readmodifywrite.html" title="Read/Modify/Write" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Transactional Cursors and Concurrent Applications</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="isolation.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 4. Concurrency</th>
- <td width="20%" align="right"> <a accesskey="n" href="readmodifywrite.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="isolation.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 4. Concurrency</th>
+ <td width="20%" align="right"> <a accesskey="n" href="readmodifywrite.html">Next</a></td>
</tr>
</table>
<hr />
@@ -89,7 +89,7 @@
<pre class="programlisting">#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
-#include &quot;db.h&quot;
+#include "db.h"
int
main(void)
@@ -99,7 +99,7 @@ main(void)
DB_ENV *envp;
DB_TXN *txn;
int ret, c_ret;
- char *replacementString = &quot;new string&quot;;
+ char *replacementString = "new string";
dbp = NULL;
envp = NULL;
@@ -108,7 +108,7 @@ main(void)
/* Open the environment */
ret = db_env_create(&amp;envp, 0);
if (ret != 0) {
- fprintf(stderr, &quot;Error creating environment handle: %s\n&quot;,
+ fprintf(stderr, "Error creating environment handle: %s\n",
db_strerror(ret));
return (EXIT_FAILURE);
}
@@ -122,7 +122,7 @@ main(void)
ret = envp-&gt;open(envp, db_home_dir, env_flags, 0);
if (ret != 0) {
- fprintf(stderr, &quot;Error opening environment: %s\n&quot;,
+ fprintf(stderr, "Error opening environment: %s\n",
db_strerror(ret));
goto err;
}
@@ -130,7 +130,7 @@ main(void)
/* Initialize the DB handle */
ret = db_create(&amp;dbp, envp, 0);
if (ret != 0) {
- envp-&gt;err(envp, ret, &quot;Database creation failed&quot;);
+ envp-&gt;err(envp, ret, "Database creation failed");
goto err;
}
@@ -147,7 +147,7 @@ main(void)
db_flags, /* Open flags */
0); /* File mode. Using defaults */
if (ret != 0) {
- envp-&gt;err(envp, ret, &quot;Database '%s' open failed&quot;,
+ envp-&gt;err(envp, ret, "Database '%s' open failed",
file_name);
goto err;
}
@@ -156,7 +156,7 @@ main(void)
/* Note that this is a degree 3 transaction */
ret = envp-&gt;txn_begin(envp, NULL, &amp;txn, 0);
if (ret != 0) {
- envp-&gt;err(envp, ret, &quot;Transaction begin failed.&quot;);
+ envp-&gt;err(envp, ret, "Transaction begin failed.");
goto err;
}
@@ -164,7 +164,7 @@ main(void)
/* Cause the cursor to perform uncommitted reads */
ret = dbp-&gt;cursor(dbp, txn, &amp;cursorp, DB_READ_UNCOMMITTED);
if (ret != 0) {
- envp-&gt;err(envp, ret, &quot;Cursor open failed.&quot;);
+ envp-&gt;err(envp, ret, "Cursor open failed.");
txn-&gt;abort(txn);
goto err;
}
@@ -182,18 +182,18 @@ main(void)
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="isolation.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="isolation.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="txnconcurrency.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="readmodifywrite.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="readmodifywrite.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Isolation </td>
+ <td width="40%" align="left" valign="top">Isolation </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Read/Modify/Write</td>
+ <td width="40%" align="right" valign="top"> Read/Modify/Write</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/C/txnconcurrency.html b/db/docs/gsg_txn/C/txnconcurrency.html
index ed0de1bff..ecb81939c 100644
--- a/db/docs/gsg_txn/C/txnconcurrency.html
+++ b/db/docs/gsg_txn/C/txnconcurrency.html
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <title>Chapter 4. Concurrency</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Chapter 4. Concurrency</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
@@ -15,12 +15,12 @@
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
- <th colspan="3" align="center">Chapter 4. Concurrency</th>
+ <th colspan="3" align="center">Chapter 4. Concurrency</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="maxtxns.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="blocking_deadlocks.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="maxtxns.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="blocking_deadlocks.html">Next</a></td>
</tr>
</table>
<hr />
@@ -29,7 +29,7 @@
<div class="titlepage">
<div>
<div>
- <h2 class="title"><a id="txnconcurrency"></a>Chapter 4. Concurrency</h2>
+ <h2 class="title"><a id="txnconcurrency"></a>Chapter 4. Concurrency</h2>
</div>
</div>
<div></div>
@@ -185,7 +185,7 @@
</p>
<p>
Note that this term can also be taken to mean a separate process
- that is performing work &#8212; DB supports multi-process
+ that is performing work — DB supports multi-process
operations on your databases.
</p>
<p>
@@ -341,18 +341,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="maxtxns.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="maxtxns.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="blocking_deadlocks.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="blocking_deadlocks.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Configuring the Transaction Subsystem </td>
+ <td width="40%" align="left" valign="top">Configuring the Transaction Subsystem </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Locks, Blocks, and Deadlocks</td>
+ <td width="40%" align="right" valign="top"> Locks, Blocks, and Deadlocks</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/C/txncursor.html b/db/docs/gsg_txn/C/txncursor.html
index 593048353..c16d08ebd 100644
--- a/db/docs/gsg_txn/C/txncursor.html
+++ b/db/docs/gsg_txn/C/txncursor.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Transactional Cursors</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="usingtxns.html" title="Chapter 3. Transaction Basics" />
+ <link rel="up" href="usingtxns.html" title="Chapter 3. Transaction Basics" />
<link rel="previous" href="nestedtxn.html" title="Nested Transactions" />
<link rel="next" href="txnindices.html" title="Secondary Indices with Transaction Applications" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Transactional Cursors</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="nestedtxn.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 3. Transaction Basics</th>
- <td width="20%" align="right"> <a accesskey="n" href="txnindices.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="nestedtxn.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 3. Transaction Basics</th>
+ <td width="20%" align="right"> <a accesskey="n" href="txnindices.html">Next</a></td>
</tr>
</table>
<hr />
@@ -48,7 +48,7 @@
<pre class="programlisting">#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
-#include &quot;db.h&quot;
+#include "db.h"
int
main(void)
@@ -57,7 +57,7 @@ main(void)
DBC *cursorp;
DB_TXN *txn = NULL;
int ret, c_ret;
- char *replacementString = &quot;new string&quot;;
+ char *replacementString = "new string";
...
/* environment and db handle creation omitted */
@@ -67,14 +67,14 @@ main(void)
txn = NULL;
ret = envp-&gt;txn_begin(envp, NULL, &amp;txn, 0);
if (ret != 0) {
- envp-&gt;err(envp, ret, &quot;Transaction begin failed.&quot;);
+ envp-&gt;err(envp, ret, "Transaction begin failed.");
goto err;
}
/* Get the cursor, supply the txn handle at that time */
ret = dbp-&gt;cursor(dbp, txn, &amp;cursorp, 0);
if (ret != 0) {
- envp-&gt;err(envp, ret, &quot;Cursor open failed.&quot;);
+ envp-&gt;err(envp, ret, "Cursor open failed.");
txn-&gt;abort(txn);
goto err;
}
@@ -86,14 +86,14 @@ main(void)
/* Prepare the DBTs */
memset(&amp;key, 0, sizeof(DBT));
memset(&amp;data, 0, sizeof(DBT));
- while (cursor-&gt;c_get(&amp;key, &amp;data, DB_NEXT) == 0) {
+ while (cursor-&gt;get(&amp;key, &amp;data, DB_NEXT) == 0) {
data-&gt;data = (void *)replacementString;
data-&gt;size = (strlen(replacementString) + 1) * sizeof(char);
- c_ret = cursor-&gt;c_put(cursor, &amp;key, &amp;data, DB_CURRENT);
+ c_ret = cursor-&gt;put(cursor, &amp;key, &amp;data, DB_CURRENT);
if (c_ret != 0) {
/* abort the transaction and goto error */
- envp-&gt;err(envp, ret, &quot;Cursor put failed.&quot;);
- cursorp-&gt;c_close(cursorp);
+ envp-&gt;err(envp, ret, "Cursor put failed.");
+ cursorp-&gt;close(cursorp);
cursorp = NULL;
txn-&gt;abort(txn);
goto err;
@@ -104,15 +104,15 @@ main(void)
* Commit the transaction. Note that the transaction handle
* can no longer be used.
*/
- ret = cursorp-&gt;c_close(cursorp);
+ ret = cursorp-&gt;close(cursorp);
if (ret != 0) {
- envp-&gt;err(envp, ret, &quot;Cursor close failed.&quot;);
+ envp-&gt;err(envp, ret, "Cursor close failed.");
txn-&gt;abort(txn);
goto err;
}
ret = txn-&gt;commit(txn, 0);
if (ret != 0) {
- envp-&gt;err(envp, ret, &quot;Transaction commit failed.&quot;);
+ envp-&gt;err(envp, ret, "Transaction commit failed.");
goto err;
}
@@ -136,18 +136,18 @@ err:
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="nestedtxn.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="nestedtxn.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="usingtxns.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="txnindices.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="txnindices.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Nested Transactions </td>
+ <td width="40%" align="left" valign="top">Nested Transactions </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Secondary Indices with Transaction Applications</td>
+ <td width="40%" align="right" valign="top"> Secondary Indices with Transaction Applications</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/C/txnexample_c.html b/db/docs/gsg_txn/C/txnexample_c.html
index 4f414bd19..f8702e0a3 100644
--- a/db/docs/gsg_txn/C/txnexample_c.html
+++ b/db/docs/gsg_txn/C/txnexample_c.html
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Transaction Example</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="wrapup.html" title="Chapter 6. Summary and Examples" />
- <link rel="previous" href="wrapup.html" title="Chapter 6. Summary and Examples" />
+ <link rel="up" href="wrapup.html" title="Chapter 6. Summary and Examples" />
+ <link rel="previous" href="wrapup.html" title="Chapter 6. Summary and Examples" />
<link rel="next" href="inmem_txnexample_c.html" title="In-Memory Transaction Example" />
</head>
<body>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Transaction Example</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="wrapup.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 6. Summary and Examples</th>
- <td width="20%" align="right"> <a accesskey="n" href="inmem_txnexample_c.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="wrapup.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 6. Summary and Examples</th>
+ <td width="20%" align="right"> <a accesskey="n" href="inmem_txnexample_c.html">Next</a></td>
</tr>
</table>
<hr />
@@ -110,7 +110,7 @@ void *writer_thread(void *); </pre>
int
usage()
{
- fprintf(stderr, &quot; [-h &lt;database_home_directory&gt;]\n&quot;);
+ fprintf(stderr, " [-h &lt;database_home_directory&gt;]\n");
return (EXIT_FAILURE);
} </pre>
<p>
@@ -131,9 +131,9 @@ main(int argc, char *argv[])
u_int32_t env_flags;
char *db_home_dir;
/* Application name */
- const char *prog_name = &quot;txn_guide&quot;;
+ const char *prog_name = "txn_guide";
/* Database file name */
- const char *file_name = &quot;mydb.db&quot;; </pre>
+ const char *file_name = "mydb.db"; </pre>
<p>
Now we need to parse our command line. In this case, all we want is to
know where our environment directory is. If the <tt class="literal">-h</tt>
@@ -142,11 +142,11 @@ main(int argc, char *argv[])
</p>
<pre class="programlisting"> /* Parse the command line arguments */
#ifdef _WIN32
- db_home_dir = &quot;.\\&quot;;
+ db_home_dir = ".\\";
#else
- db_home_dir = &quot;./&quot;;
+ db_home_dir = "./";
#endif
- while ((ch = getopt(argc, argv, &quot;h:&quot;)) != EOF)
+ while ((ch = getopt(argc, argv, "h:")) != EOF)
switch (ch) {
case 'h':
db_home_dir = optarg;
@@ -182,7 +182,7 @@ main(int argc, char *argv[])
<pre class="programlisting"> /* Create the environment */
ret = db_env_create(&amp;envp, 0);
if (ret != 0) {
- fprintf(stderr, &quot;Error creating environment handle: %s\n&quot;,
+ fprintf(stderr, "Error creating environment handle: %s\n",
db_strerror(ret));
goto err;
}
@@ -222,7 +222,7 @@ main(int argc, char *argv[])
*/
ret = envp-&gt;set_lk_detect(envp, DB_LOCK_MINWRITE);
if (ret != 0) {
- fprintf(stderr, &quot;Error setting lock detect: %s\n&quot;,
+ fprintf(stderr, "Error setting lock detect: %s\n",
db_strerror(ret));
goto err;
} </pre>
@@ -239,7 +239,7 @@ main(int argc, char *argv[])
/* Now actually open the environment */
ret = envp-&gt;open(envp, db_home_dir, env_flags, 0);
if (ret != 0) {
- fprintf(stderr, &quot;Error opening environment: %s\n&quot;,
+ fprintf(stderr, "Error opening environment: %s\n",
db_strerror(ret));
goto err;
} </pre>
@@ -296,7 +296,7 @@ main(int argc, char *argv[])
if (dbp != NULL) {
ret_t = dbp-&gt;close(dbp, 0);
if (ret_t != 0) {
- fprintf(stderr, &quot;%s database close failed: %s\n&quot;,
+ fprintf(stderr, "%s database close failed: %s\n",
file_name, db_strerror(ret_t));
ret = ret_t;
}
@@ -306,14 +306,14 @@ main(int argc, char *argv[])
if (envp != NULL) {
ret_t = envp-&gt;close(envp, 0);
if (ret_t != 0) {
- fprintf(stderr, &quot;environment close failed: %s\n&quot;,
+ fprintf(stderr, "environment close failed: %s\n",
db_strerror(ret_t));
ret = ret_t;
}
}
/* Final status message and return. */
- printf(&quot;I'm all done.\n&quot;);
+ printf("I'm all done.\n");
return (ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE);
} </pre>
<p>
@@ -338,9 +338,9 @@ writer_thread(void *args)
DB_TXN *txn;
int i, j, payload, ret, thread_num;
int retry_count, max_retries = 20; /* Max retry on a deadlock */
- char *key_strings[] = {&quot;key 1&quot;, &quot;key 2&quot;, &quot;key 3&quot;, &quot;key 4&quot;,
- &quot;key 5&quot;, &quot;key 6&quot;, &quot;key 7&quot;, &quot;key 8&quot;,
- &quot;key 9&quot;, &quot;key 10&quot;};
+ char *key_strings[] = {"key 1", "key 2", "key 3", "key 4",
+ "key 5", "key 6", "key 7", "key 8",
+ "key 9", "key 10"};
DB *dbp = (DB *)args;
DB_ENV *envp = dbp-&gt;get_env(dbp); </pre>
@@ -413,7 +413,7 @@ retry:
/* Begin our transaction. */
ret = envp-&gt;txn_begin(envp, NULL, &amp;txn, 0);
if (ret != 0) {
- envp-&gt;err(envp, ret, &quot;txn_begin failed&quot;);
+ envp-&gt;err(envp, ret, "txn_begin failed");
return ((void *)EXIT_FAILURE);
} </pre>
<p>
@@ -448,7 +448,7 @@ retry:
* have run this program at least once.
*/
case DB_KEYEXIST:
- printf(&quot;Got keyexists.\n&quot;);
+ printf("Got keyexists.\n");
break;
/*
* Here's where we perform deadlock detection. If
@@ -469,9 +469,9 @@ retry:
* increment the retry count and goto retry.
*/
if (retry_count &lt; max_retries) {
- printf(&quot;Writer %i: Got DB_LOCK_DEADLOCK.\n&quot;,
+ printf("Writer %i: Got DB_LOCK_DEADLOCK.\n",
thread_num);
- printf(&quot;Writer %i: Retrying write operation.\n&quot;,
+ printf("Writer %i: Retrying write operation.\n",
thread_num);
retry_count++;
goto retry;
@@ -479,19 +479,19 @@ retry:
/*
* Otherwise, just give up.
*/
- printf(&quot;Writer %i: &quot;, thread_num);
- printf(&quot;Got DB_LOCK_DEADLOCK and out of retries.\n&quot;);
- printf(&quot;Writer %i: Giving up.\n&quot;, thread_num);
+ printf("Writer %i: ", thread_num);
+ printf("Got DB_LOCK_DEADLOCK and out of retries.\n");
+ printf("Writer %i: Giving up.\n", thread_num);
return ((void *)EXIT_FAILURE);
/*
* If a generic error occurs, we simply abort the
* transaction and exit the thread completely.
*/
default:
- envp-&gt;err(envp, ret, &quot;db put failed&quot;);
+ envp-&gt;err(envp, ret, "db put failed");
ret = txn-&gt;abort(txn);
if (ret != 0)
- envp-&gt;err(envp, ret, &quot;txn abort failed&quot;);
+ envp-&gt;err(envp, ret, "txn abort failed");
return ((void *)EXIT_FAILURE);
} /** End case statement **/
@@ -516,7 +516,7 @@ retry:
* print the number of records found in the database.
* See count_records() for usage information.
*/
- printf(&quot;Thread %i. Record count: %i\n&quot;, thread_num,
+ printf("Thread %i. Record count: %i\n", thread_num,
count_records(dbp, NULL));
/*
@@ -525,7 +525,7 @@ retry:
*/
ret = txn-&gt;commit(txn, 0);
if (ret != 0) {
- envp-&gt;err(envp, ret, &quot;txn commit failed&quot;);
+ envp-&gt;err(envp, ret, "txn commit failed");
return ((void *)EXIT_FAILURE);
}
}
@@ -633,7 +633,7 @@ count_records(DB *dbp, DB_TXN *txn)
/* Get the cursor */
ret = dbp-&gt;cursor(dbp, txn, &amp;cursorp, DB_READ_UNCOMMITTED);
if (ret != 0) {
- dbp-&gt;err(dbp, ret, &quot;count_records: cursor open failed.&quot;);
+ dbp-&gt;err(dbp, ret, "count_records: cursor open failed.");
goto cursor_err;
}
@@ -641,7 +641,7 @@ count_records(DB *dbp, DB_TXN *txn)
memset(&amp;key, 0, sizeof(DBT));
memset(&amp;value, 0, sizeof(DBT));
do {
- ret = cursorp-&gt;c_get(cursorp, &amp;key, &amp;value, DB_NEXT);
+ ret = cursorp-&gt;get(cursorp, &amp;key, &amp;value, DB_NEXT);
switch (ret) {
case 0:
count++;
@@ -649,17 +649,17 @@ count_records(DB *dbp, DB_TXN *txn)
case DB_NOTFOUND:
break;
default:
- dbp-&gt;err(envp, ret, &quot;Count records unspecified error&quot;);
+ dbp-&gt;err(envp, ret, "Count records unspecified error");
goto cursor_err;
}
} while (ret == 0);
cursor_err:
if (cursorp != NULL) {
- ret = cursorp-&gt;c_close(cursorp);
+ ret = cursorp-&gt;close(cursorp);
if (ret != 0) {
dbp-&gt;err(dbp, ret,
- &quot;count_records: cursor close failed.&quot;);
+ "count_records: cursor close failed.");
}
}
@@ -691,7 +691,7 @@ open_db(DB **dbpp, const char *progname, const char *file_name,
/* Initialize the DB handle */
ret = db_create(&amp;dbp, envp, 0);
if (ret != 0) {
- fprintf(stderr, &quot;%s: %s\n&quot;, progname,
+ fprintf(stderr, "%s: %s\n", progname,
db_strerror(ret));
return (EXIT_FAILURE);
}
@@ -703,7 +703,7 @@ open_db(DB **dbpp, const char *progname, const char *file_name,
ret = dbp-&gt;set_flags(dbp, extra_flags);
if (ret != 0) {
dbp-&gt;err(dbp, ret,
- &quot;open_db: Attempt to set extra flags failed.&quot;);
+ "open_db: Attempt to set extra flags failed.");
return (EXIT_FAILURE);
}
}
@@ -721,7 +721,7 @@ open_db(DB **dbpp, const char *progname, const char *file_name,
open_flags, /* Open flags */
0); /* File mode. Using defaults */
if (ret != 0) {
- dbp-&gt;err(dbp, ret, &quot;Database '%s' open failed&quot;,
+ dbp-&gt;err(dbp, ret, "Database '%s' open failed",
file_name);
return (EXIT_FAILURE);
}
@@ -738,18 +738,18 @@ open_db(DB **dbpp, const char *progname, const char *file_name,
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="wrapup.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="wrapup.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="wrapup.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="inmem_txnexample_c.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="inmem_txnexample_c.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Chapter 6. Summary and Examples </td>
+ <td width="40%" align="left" valign="top">Chapter 6. Summary and Examples </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> In-Memory Transaction Example</td>
+ <td width="40%" align="right" valign="top"> In-Memory Transaction Example</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/C/txnindices.html b/db/docs/gsg_txn/C/txnindices.html
index 97d5746f2..3d84b60f3 100644
--- a/db/docs/gsg_txn/C/txnindices.html
+++ b/db/docs/gsg_txn/C/txnindices.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Secondary Indices with Transaction Applications</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="usingtxns.html" title="Chapter 3. Transaction Basics" />
+ <link rel="up" href="usingtxns.html" title="Chapter 3. Transaction Basics" />
<link rel="previous" href="txncursor.html" title="Transactional Cursors" />
<link rel="next" href="maxtxns.html" title="Configuring the Transaction Subsystem" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Secondary Indices with Transaction Applications</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="txncursor.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 3. Transaction Basics</th>
- <td width="20%" align="right"> <a accesskey="n" href="maxtxns.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="txncursor.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 3. Transaction Basics</th>
+ <td width="20%" align="right"> <a accesskey="n" href="maxtxns.html">Next</a></td>
</tr>
</table>
<hr />
@@ -89,7 +89,7 @@ if (ret != 0) {
/* open the secondary database */
ret = sdbp-&gt;open(sdbp, /* DB structure pointer */
NULL, /* Transaction pointer */
- &quot;my_secdb.db&quot;, /* On-disk file that holds the database. */
+ "my_secdb.db", /* On-disk file that holds the database. */
NULL, /* Optional logical database name */
DB_BTREE, /* Database access method */
DB_AUTO_COMMIT, /* Open flags */
@@ -111,18 +111,18 @@ dbp-&gt;associate(dbp, /* Primary database */
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="txncursor.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="txncursor.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="usingtxns.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="maxtxns.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="maxtxns.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Transactional Cursors </td>
+ <td width="40%" align="left" valign="top">Transactional Cursors </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Configuring the Transaction Subsystem</td>
+ <td width="40%" align="right" valign="top"> Configuring the Transaction Subsystem</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/C/txnnowait.html b/db/docs/gsg_txn/C/txnnowait.html
index 3f88f5794..159f0f4bb 100644
--- a/db/docs/gsg_txn/C/txnnowait.html
+++ b/db/docs/gsg_txn/C/txnnowait.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>No Wait on Blocks</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="txnconcurrency.html" title="Chapter 4. Concurrency" />
+ <link rel="up" href="txnconcurrency.html" title="Chapter 4. Concurrency" />
<link rel="previous" href="readmodifywrite.html" title="Read/Modify/Write" />
<link rel="next" href="reversesplit.html" title="Reverse BTree Splits" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">No Wait on Blocks</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="readmodifywrite.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 4. Concurrency</th>
- <td width="20%" align="right"> <a accesskey="n" href="reversesplit.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="readmodifywrite.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 4. Concurrency</th>
+ <td width="20%" align="right"> <a accesskey="n" href="reversesplit.html">Next</a></td>
</tr>
</table>
<hr />
@@ -62,7 +62,7 @@
DB_TXN *txn = NULL;
ret = envp-&gt;txn_begin(envp, NULL, &amp;txn, DB_TXN_NOWAIT);
if (ret != 0) {
- envp-&gt;err(envp, ret, &quot;txn_begin failed&quot;);
+ envp-&gt;err(envp, ret, "txn_begin failed");
return (EXIT_FAILURE);
}
....
@@ -72,18 +72,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="readmodifywrite.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="readmodifywrite.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="txnconcurrency.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="reversesplit.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="reversesplit.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Read/Modify/Write </td>
+ <td width="40%" align="left" valign="top">Read/Modify/Write </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Reverse BTree Splits</td>
+ <td width="40%" align="right" valign="top"> Reverse BTree Splits</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/C/usingtxns.html b/db/docs/gsg_txn/C/usingtxns.html
index 828b21263..d95563598 100644
--- a/db/docs/gsg_txn/C/usingtxns.html
+++ b/db/docs/gsg_txn/C/usingtxns.html
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <title>Chapter 3. Transaction Basics</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Chapter 3. Transaction Basics</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
@@ -15,12 +15,12 @@
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
- <th colspan="3" align="center">Chapter 3. Transaction Basics</th>
+ <th colspan="3" align="center">Chapter 3. Transaction Basics</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="envopen.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="abortresults.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="envopen.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="abortresults.html">Next</a></td>
</tr>
</table>
<hr />
@@ -29,7 +29,7 @@
<div class="titlepage">
<div>
<div>
- <h2 class="title"><a id="usingtxns"></a>Chapter 3. Transaction Basics</h2>
+ <h2 class="title"><a id="usingtxns"></a>Chapter 3. Transaction Basics</h2>
</div>
</div>
<div></div>
@@ -146,7 +146,7 @@
<pre class="programlisting">#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
-#include &quot;db.h&quot;
+#include "db.h"
int
main(void)
@@ -157,10 +157,10 @@ main(void)
DB_ENV *envp;
DBT key, data;
DB_TXN *txn;
- const char *db_home_dir = &quot;/tmp/myEnvironment&quot;;
- const char *file_name = &quot;mydb.db&quot;;
- const char *keystr =&quot;thekey&quot;;
- const char *datastr = &quot;thedata&quot;;
+ const char *db_home_dir = "/tmp/myEnvironment";
+ const char *file_name = "mydb.db";
+ const char *keystr ="thekey";
+ const char *datastr = "thedata";
dbp = NULL;
envp = NULL;
@@ -168,7 +168,7 @@ main(void)
/* Open the environment */
ret = db_env_create(&amp;envp, 0);
if (ret != 0) {
- fprintf(stderr, &quot;Error creating environment handle: %s\n&quot;,
+ fprintf(stderr, "Error creating environment handle: %s\n",
db_strerror(ret));
return (EXIT_FAILURE);
}
@@ -182,7 +182,7 @@ main(void)
ret = envp-&gt;open(envp, db_home_dir, env_flags, 0);
if (ret != 0) {
- fprintf(stderr, &quot;Error opening environment: %s\n&quot;,
+ fprintf(stderr, "Error opening environment: %s\n",
db_strerror(ret));
goto err;
}
@@ -190,7 +190,7 @@ main(void)
/* Initialize the DB handle */
ret = db_create(&amp;dbp, envp, 0);
if (ret != 0) {
- envp-&gt;err(envp, ret, &quot;Database creation failed&quot;);
+ envp-&gt;err(envp, ret, "Database creation failed");
goto err;
}
@@ -207,7 +207,7 @@ main(void)
db_flags, /* Open flags */
0); /* File mode. Using defaults */
if (ret != 0) {
- envp-&gt;err(envp, ret, &quot;Database '%s' open failed&quot;,
+ envp-&gt;err(envp, ret, "Database '%s' open failed",
file_name);
goto err;
}
@@ -225,7 +225,7 @@ main(void)
txn = NULL;
ret = envp-&gt;txn_begin(envp, NULL, &amp;txn, 0);
if (ret != 0) {
- envp-&gt;err(envp, ret, &quot;Transaction begin failed.&quot;);
+ envp-&gt;err(envp, ret, "Transaction begin failed.");
goto err;
}
@@ -234,7 +234,7 @@ main(void)
*/
ret = dbp-&gt;put(dbp, txn, &amp;key, &amp;data, 0);
if (ret != 0) {
- envp-&gt;err(envp, ret, &quot;Database put failed.&quot;);
+ envp-&gt;err(envp, ret, "Database put failed.");
txn-&gt;abort(txn);
goto err;
}
@@ -245,7 +245,7 @@ main(void)
*/
ret = txn-&gt;commit(txn, 0);
if (ret != 0) {
- envp-&gt;err(envp, ret, &quot;Transaction commit failed.&quot;);
+ envp-&gt;err(envp, ret, "Transaction commit failed.");
goto err;
}
@@ -254,7 +254,7 @@ err:
if (dbp != NULL) {
ret_c = dbp-&gt;close(dbp, 0);
if (ret_c != 0) {
- envp-&gt;err(envp, ret_c, &quot;Database close failed.&quot;);
+ envp-&gt;err(envp, ret_c, "Database close failed.");
ret = ret_c
}
}
@@ -264,7 +264,7 @@ err:
if (envp != NULL) {
ret_c = envp-&gt;close(envp, 0);
if (ret_c != 0) {
- fprintf(stderr, &quot;environment close failed: %s\n&quot;,
+ fprintf(stderr, "environment close failed: %s\n",
db_strerror(ret_c));
ret = ret_c;
}
@@ -402,7 +402,7 @@ err:
<p>
Be aware that because your transaction commit caused database
modifications recorded in your logs to be forced to disk, your modifications
- are by default &quot;persistent&quot; in that they can be recovered in the event of
+ are by default "persistent" in that they can be recovered in the event of
an application or system failure. However, recovery time is
gated by how much data has been modified since the last
checkpoint, so for applications that perform a lot of writes,
@@ -568,21 +568,21 @@ err:
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="envopen.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="envopen.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="abortresults.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="abortresults.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">Opening a Transactional Environment and
Database
-  </td>
+  </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Aborting a Transaction</td>
+ <td width="40%" align="right" valign="top"> Aborting a Transaction</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/C/wrapup.html b/db/docs/gsg_txn/C/wrapup.html
index 32370c29f..b7e945fe3 100644
--- a/db/docs/gsg_txn/C/wrapup.html
+++ b/db/docs/gsg_txn/C/wrapup.html
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <title>Chapter 6. Summary and Examples</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Chapter 6. Summary and Examples</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
@@ -15,12 +15,12 @@
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
- <th colspan="3" align="center">Chapter 6. Summary and Examples</th>
+ <th colspan="3" align="center">Chapter 6. Summary and Examples</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="logconfig.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="txnexample_c.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="logconfig.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="txnexample_c.html">Next</a></td>
</tr>
</table>
<hr />
@@ -29,7 +29,7 @@
<div class="titlepage">
<div>
<div>
- <h2 class="title"><a id="wrapup"></a>Chapter 6. Summary and Examples</h2>
+ <h2 class="title"><a id="wrapup"></a>Chapter 6. Summary and Examples</h2>
</div>
</div>
<div></div>
@@ -264,18 +264,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="logconfig.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="logconfig.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="txnexample_c.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="txnexample_c.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Configuring the Logging Subsystem </td>
+ <td width="40%" align="left" valign="top">Configuring the Logging Subsystem </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Transaction Example</td>
+ <td width="40%" align="right" valign="top"> Transaction Example</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/CXX/BerkeleyDB-Core-Cxx-Txn.pdf b/db/docs/gsg_txn/CXX/BerkeleyDB-Core-Cxx-Txn.pdf
index 27b08a31c..d16f34311 100644
--- a/db/docs/gsg_txn/CXX/BerkeleyDB-Core-Cxx-Txn.pdf
+++ b/db/docs/gsg_txn/CXX/BerkeleyDB-Core-Cxx-Txn.pdf
Binary files differ
diff --git a/db/docs/gsg_txn/CXX/abortresults.html b/db/docs/gsg_txn/CXX/abortresults.html
index 6f28eb125..c6793e1fb 100644
--- a/db/docs/gsg_txn/CXX/abortresults.html
+++ b/db/docs/gsg_txn/CXX/abortresults.html
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Aborting a Transaction</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="usingtxns.html" title="Chapter 3. Transaction Basics" />
- <link rel="previous" href="usingtxns.html" title="Chapter 3. Transaction Basics" />
+ <link rel="up" href="usingtxns.html" title="Chapter 3. Transaction Basics" />
+ <link rel="previous" href="usingtxns.html" title="Chapter 3. Transaction Basics" />
<link rel="next" href="autocommit.html" title="Auto Commit" />
</head>
<body>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Aborting a Transaction</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="usingtxns.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 3. Transaction Basics</th>
- <td width="20%" align="right"> <a accesskey="n" href="autocommit.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="usingtxns.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 3. Transaction Basics</th>
+ <td width="20%" align="right"> <a accesskey="n" href="autocommit.html">Next</a></td>
</tr>
</table>
<hr />
@@ -76,18 +76,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="usingtxns.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="usingtxns.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="usingtxns.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="autocommit.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="autocommit.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Chapter 3. Transaction Basics </td>
+ <td width="40%" align="left" valign="top">Chapter 3. Transaction Basics </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Auto Commit</td>
+ <td width="40%" align="right" valign="top"> Auto Commit</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/CXX/architectrecovery.html b/db/docs/gsg_txn/CXX/architectrecovery.html
index 8d785bc30..2881ab94e 100644
--- a/db/docs/gsg_txn/CXX/architectrecovery.html
+++ b/db/docs/gsg_txn/CXX/architectrecovery.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Designing Your Application for Recovery</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="filemanagement.html" title="Chapter 5. Managing DB Files" />
+ <link rel="up" href="filemanagement.html" title="Chapter 5. Managing DB Files" />
<link rel="previous" href="recovery.html" title="Recovery Procedures" />
<link rel="next" href="hotfailover.html" title="Using Hot Failovers" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Designing Your Application for Recovery</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="recovery.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 5. Managing DB Files</th>
- <td width="20%" align="right"> <a accesskey="n" href="hotfailover.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="recovery.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 5. Managing DB Files</th>
+ <td width="20%" align="right"> <a accesskey="n" href="hotfailover.html">Next</a></td>
</tr>
</table>
<hr />
@@ -155,7 +155,7 @@
handles. Recovery should be single threaded because when
recovery is run against an environment, it is
deleted and then recreated. This will cause all
- other processes and threads to &quot;fail&quot; when they
+ other processes and threads to "fail" when they
attempt operations against the newly recovered
environment. If all threads run recovery
when they start up, then it is likely that some
@@ -258,7 +258,7 @@
<div></div>
</div>
<p>
- One way to handle multi-process recovery is for every process to &quot;register&quot; its environment. In
+ One way to handle multi-process recovery is for every process to "register" its environment. In
doing so, the process gains the ability to see if any other applications are using the
environment and, if so, whether they have suffered an abnormal termination. If an abnormal
termination is detected, the process runs recovery; otherwise, it does not.
@@ -427,18 +427,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="recovery.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="recovery.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="filemanagement.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="hotfailover.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="hotfailover.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Recovery Procedures </td>
+ <td width="40%" align="left" valign="top">Recovery Procedures </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Using Hot Failovers</td>
+ <td width="40%" align="right" valign="top"> Using Hot Failovers</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/CXX/autocommit.html b/db/docs/gsg_txn/CXX/autocommit.html
index 7150c437a..58a7d02a8 100644
--- a/db/docs/gsg_txn/CXX/autocommit.html
+++ b/db/docs/gsg_txn/CXX/autocommit.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Auto Commit</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="usingtxns.html" title="Chapter 3. Transaction Basics" />
+ <link rel="up" href="usingtxns.html" title="Chapter 3. Transaction Basics" />
<link rel="previous" href="abortresults.html" title="Aborting a Transaction" />
<link rel="next" href="nestedtxn.html" title="Nested Transactions" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Auto Commit</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="abortresults.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 3. Transaction Basics</th>
- <td width="20%" align="right"> <a accesskey="n" href="nestedtxn.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="abortresults.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 3. Transaction Basics</th>
+ <td width="20%" align="right"> <a accesskey="n" href="nestedtxn.html">Next</a></td>
</tr>
</table>
<hr />
@@ -88,7 +88,7 @@
<p>
For example, the following uses auto commit to perform the database write operation:
</p>
- <pre class="programlisting">#include &quot;db_cxx.h&quot;
+ <pre class="programlisting">#include "db_cxx.h"
...
@@ -103,11 +103,11 @@ int main(void)
u_int32_t db_flags = DB_CREATE | DB_AUTO_COMMIT;
Db *dbp = NULL;
- const char *file_name = &quot;mydb.db&quot;;
- const char *keystr =&quot;thekey&quot;;
- const char *datastr = &quot;thedata&quot;;
+ const char *file_name = "mydb.db";
+ const char *keystr ="thekey";
+ const char *datastr = "thedata";
- std::string envHome(&quot;/export1/testEnv&quot;);
+ std::string envHome("/export1/testEnv");
DbEnv myEnv(0);
try {
@@ -135,8 +135,8 @@ int main(void)
db-&gt;put(NULL, &amp;key, &amp;data, 0);
} catch(DbException &amp;e) {
- std::cerr &lt;&lt; &quot;Error opening database and environment: &quot;
- &lt;&lt; file_name &lt;&lt; &quot;, &quot;
+ std::cerr &lt;&lt; "Error opening database and environment: "
+ &lt;&lt; file_name &lt;&lt; ", "
&lt;&lt; envHome &lt;&lt; std::endl;
std::cerr &lt;&lt; e.what() &lt;&lt; std::endl;
}
@@ -146,8 +146,8 @@ int main(void)
dbp-&gt;close(0);
myEnv.close(0);
} catch(DbException &amp;e) {
- std::cerr &lt;&lt; &quot;Error closing database and environment: &quot;
- &lt;&lt; file_name &lt;&lt; &quot;, &quot;
+ std::cerr &lt;&lt; "Error closing database and environment: "
+ &lt;&lt; file_name &lt;&lt; ", "
&lt;&lt; envHome &lt;&lt; std::endl;
std::cerr &lt;&lt; e.what() &lt;&lt; std::endl;
return (EXIT_FAILURE);
@@ -160,18 +160,18 @@ int main(void)
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="abortresults.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="abortresults.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="usingtxns.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="nestedtxn.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="nestedtxn.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Aborting a Transaction </td>
+ <td width="40%" align="left" valign="top">Aborting a Transaction </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Nested Transactions</td>
+ <td width="40%" align="right" valign="top"> Nested Transactions</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/CXX/backuprestore.html b/db/docs/gsg_txn/CXX/backuprestore.html
index 711e8b181..dbce73536 100644
--- a/db/docs/gsg_txn/CXX/backuprestore.html
+++ b/db/docs/gsg_txn/CXX/backuprestore.html
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Backup Procedures</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="filemanagement.html" title="Chapter 5. Managing DB Files" />
- <link rel="previous" href="filemanagement.html" title="Chapter 5. Managing DB Files" />
+ <link rel="up" href="filemanagement.html" title="Chapter 5. Managing DB Files" />
+ <link rel="previous" href="filemanagement.html" title="Chapter 5. Managing DB Files" />
<link rel="next" href="recovery.html" title="Recovery Procedures" />
</head>
<body>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Backup Procedures</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="filemanagement.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 5. Managing DB Files</th>
- <td width="20%" align="right"> <a accesskey="n" href="recovery.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="filemanagement.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 5. Managing DB Files</th>
+ <td width="20%" align="right"> <a accesskey="n" href="recovery.html">Next</a></td>
</tr>
</table>
<hr />
@@ -322,18 +322,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="filemanagement.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="filemanagement.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="filemanagement.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="recovery.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="recovery.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Chapter 5. Managing DB Files </td>
+ <td width="40%" align="left" valign="top">Chapter 5. Managing DB Files </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Recovery Procedures</td>
+ <td width="40%" align="right" valign="top"> Recovery Procedures</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/CXX/blocking_deadlocks.html b/db/docs/gsg_txn/CXX/blocking_deadlocks.html
index 69c14830f..5a7d5d858 100644
--- a/db/docs/gsg_txn/CXX/blocking_deadlocks.html
+++ b/db/docs/gsg_txn/CXX/blocking_deadlocks.html
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Locks, Blocks, and Deadlocks</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="txnconcurrency.html" title="Chapter 4. Concurrency" />
- <link rel="previous" href="txnconcurrency.html" title="Chapter 4. Concurrency" />
+ <link rel="up" href="txnconcurrency.html" title="Chapter 4. Concurrency" />
+ <link rel="previous" href="txnconcurrency.html" title="Chapter 4. Concurrency" />
<link rel="next" href="lockingsubsystem.html" title="The Locking Subsystem" />
</head>
<body>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Locks, Blocks, and Deadlocks</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="txnconcurrency.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 4. Concurrency</th>
- <td width="20%" align="right"> <a accesskey="n" href="lockingsubsystem.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="txnconcurrency.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 4. Concurrency</th>
+ <td width="20%" align="right"> <a accesskey="n" href="lockingsubsystem.html">Next</a></td>
</tr>
</table>
<hr />
@@ -440,7 +440,7 @@
minimize the time you keep
transactional cursors
opened, or reduce your isolation
- levels &#8211; see below.
+ levels – see below.
</p>
</li>
<li>
@@ -655,18 +655,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="txnconcurrency.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="txnconcurrency.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="txnconcurrency.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="lockingsubsystem.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="lockingsubsystem.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Chapter 4. Concurrency </td>
+ <td width="40%" align="left" valign="top">Chapter 4. Concurrency </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> The Locking Subsystem</td>
+ <td width="40%" align="right" valign="top"> The Locking Subsystem</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/CXX/enabletxn.html b/db/docs/gsg_txn/CXX/enabletxn.html
index 19ab65b21..bb0086698 100644
--- a/db/docs/gsg_txn/CXX/enabletxn.html
+++ b/db/docs/gsg_txn/CXX/enabletxn.html
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <title>Chapter 2. Enabling Transactions</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Chapter 2. Enabling Transactions</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
@@ -15,12 +15,12 @@
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
- <th colspan="3" align="center">Chapter 2. Enabling Transactions</th>
+ <th colspan="3" align="center">Chapter 2. Enabling Transactions</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="perftune-intro.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="envopen.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="perftune-intro.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="envopen.html">Next</a></td>
</tr>
</table>
<hr />
@@ -29,7 +29,7 @@
<div class="titlepage">
<div>
<div>
- <h2 class="title"><a id="enabletxn"></a>Chapter 2. Enabling Transactions</h2>
+ <h2 class="title"><a id="enabletxn"></a>Chapter 2. Enabling Transactions</h2>
</div>
</div>
<div></div>
@@ -230,6 +230,7 @@
<span><a href="inmem_txnexample_c.html">In-Memory Transaction Example</a>.</span>
+
</p>
<div class="sect2" lang="en" xml:lang="en">
<div class="titlepage">
@@ -245,7 +246,7 @@
locate its database files, log files, and region files. If these
are stored in the filesystem, then you must tell DB where
they are located (a number of mechanisms exist that allow you to
- identify the location of these files &#8211; see below). Otherwise,
+ identify the location of these files – see below). Otherwise,
by default they are located in the current working directory.
</p>
<div class="sect3" lang="en" xml:lang="en">
@@ -707,6 +708,7 @@
</span>
+
</p>
</div>
<div class="sect3" lang="en" xml:lang="en">
@@ -868,7 +870,7 @@
for the environment open. And, of course, if you must
use <tt class="literal">setuid</tt>, then make sure you use
- the weakest uid possible &#8211; preferably one that is
+ the weakest uid possible – preferably one that is
used only by the application itself.
</p>
</li>
@@ -920,18 +922,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="perftune-intro.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="perftune-intro.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="envopen.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="envopen.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Performance Tuning </td>
+ <td width="40%" align="left" valign="top">Performance Tuning </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Opening a Transactional Environment and
+ <td width="40%" align="right" valign="top"> Opening a Transactional Environment and
Database
</td>
diff --git a/db/docs/gsg_txn/CXX/envopen.html b/db/docs/gsg_txn/CXX/envopen.html
index 69028ca87..7216315d9 100644
--- a/db/docs/gsg_txn/CXX/envopen.html
+++ b/db/docs/gsg_txn/CXX/envopen.html
@@ -1,8 +1,8 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Opening a Transactional Environment and
Database
@@ -10,9 +10,9 @@
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="enabletxn.html" title="Chapter 2. Enabling Transactions" />
- <link rel="previous" href="enabletxn.html" title="Chapter 2. Enabling Transactions" />
- <link rel="next" href="usingtxns.html" title="Chapter 3. Transaction Basics" />
+ <link rel="up" href="enabletxn.html" title="Chapter 2. Enabling Transactions" />
+ <link rel="previous" href="enabletxn.html" title="Chapter 2. Enabling Transactions" />
+ <link rel="next" href="usingtxns.html" title="Chapter 3. Transaction Basics" />
</head>
<body>
<div class="navheader">
@@ -24,9 +24,9 @@
</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="enabletxn.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 2. Enabling Transactions</th>
- <td width="20%" align="right"> <a accesskey="n" href="usingtxns.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="enabletxn.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 2. Enabling Transactions</th>
+ <td width="20%" align="right"> <a accesskey="n" href="usingtxns.html">Next</a></td>
</tr>
</table>
<hr />
@@ -50,7 +50,7 @@
(in-memory cache). Frequently, but not always, you will also
initialize the locking subsystem. For example:
</p>
- <pre class="programlisting">#include &quot;db_cxx.h&quot;
+ <pre class="programlisting">#include "db_cxx.h"
...
@@ -63,7 +63,7 @@ int main(void)
DB_INIT_MPOOL | // Initialize the cache
DB_INIT_TXN; // Initialize transactions
- std::string envHome(&quot;/export1/testEnv&quot;);
+ std::string envHome("/export1/testEnv");
DbEnv myEnv(0);
try {
@@ -71,7 +71,7 @@ int main(void)
myEnv.open(envHome.c_str(), env_flags, 0);
} catch(DbException &amp;e) {
- std::cerr &lt;&lt; &quot;Error opening database environment: &quot;
+ std::cerr &lt;&lt; "Error opening database environment: "
&lt;&lt; envHome &lt;&lt; std::endl;
std::cerr &lt;&lt; e.what() &lt;&lt; std::endl;
return (EXIT_FAILURE);
@@ -80,7 +80,7 @@ int main(void)
try {
myEnv.close(0);
} catch(DbException &amp;e) {
- std::cerr &lt;&lt; &quot;Error closing database environment: &quot;
+ std::cerr &lt;&lt; "Error closing database environment: "
&lt;&lt; envHome &lt;&lt; std::endl;
std::cerr &lt;&lt; e.what() &lt;&lt; std::endl;
return (EXIT_FAILURE);
@@ -107,7 +107,7 @@ int main(void)
</p>
- <pre class="programlisting">#include &quot;db_cxx.h&quot;
+ <pre class="programlisting">#include "db_cxx.h"
...
@@ -122,9 +122,9 @@ int main(void)
<b class="userinput"><tt>u_int32_t db_flags = DB_CREATE | DB_AUTO_COMMIT;
Db *dbp = NULL;
- const char *file_name = &quot;mydb.db&quot;;</tt></b>
+ const char *file_name = "mydb.db";</tt></b>
- std::string envHome(&quot;/export1/testEnv&quot;);
+ std::string envHome("/export1/testEnv");
DbEnv myEnv(0);
try {
@@ -139,8 +139,8 @@ int main(void)
0); // File mode. Using defaults </tt></b>
} catch(DbException &amp;e) {
- std::cerr &lt;&lt; &quot;Error opening database and environment: &quot;
- &lt;&lt; file_name &lt;&lt; &quot;, &quot;
+ std::cerr &lt;&lt; "Error opening database and environment: "
+ &lt;&lt; file_name &lt;&lt; ", "
&lt;&lt; envHome &lt;&lt; std::endl;
std::cerr &lt;&lt; e.what() &lt;&lt; std::endl;
}
@@ -149,8 +149,8 @@ int main(void)
<b class="userinput"><tt>dbp-&gt;close(0);</tt></b>
myEnv.close(0);
} catch(DbException &amp;e) {
- std::cerr &lt;&lt; &quot;Error closing database and environment: &quot;
- &lt;&lt; file_name &lt;&lt; &quot;, &quot;
+ std::cerr &lt;&lt; "Error closing database and environment: "
+ &lt;&lt; file_name &lt;&lt; ", "
&lt;&lt; envHome &lt;&lt; std::endl;
std::cerr &lt;&lt; e.what() &lt;&lt; std::endl;
return (EXIT_FAILURE);
@@ -171,18 +171,18 @@ int main(void)
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="enabletxn.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="enabletxn.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="enabletxn.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="usingtxns.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="usingtxns.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Chapter 2. Enabling Transactions </td>
+ <td width="40%" align="left" valign="top">Chapter 2. Enabling Transactions </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Chapter 3. Transaction Basics</td>
+ <td width="40%" align="right" valign="top"> Chapter 3. Transaction Basics</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/CXX/filemanagement.html b/db/docs/gsg_txn/CXX/filemanagement.html
index f22698eaf..1f9078f68 100644
--- a/db/docs/gsg_txn/CXX/filemanagement.html
+++ b/db/docs/gsg_txn/CXX/filemanagement.html
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <title>Chapter 5. Managing DB Files</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Chapter 5. Managing DB Files</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
@@ -15,12 +15,12 @@
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
- <th colspan="3" align="center">Chapter 5. Managing DB Files</th>
+ <th colspan="3" align="center">Chapter 5. Managing DB Files</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="reversesplit.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="backuprestore.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="reversesplit.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="backuprestore.html">Next</a></td>
</tr>
</table>
<hr />
@@ -29,7 +29,7 @@
<div class="titlepage">
<div>
<div>
- <h2 class="title"><a id="filemanagement"></a>Chapter 5. Managing DB Files</h2>
+ <h2 class="title"><a id="filemanagement"></a>Chapter 5. Managing DB Files</h2>
</div>
</div>
<div></div>
@@ -302,7 +302,7 @@
For example, to run a checkpoint from a separate thread of control:
</p>
<pre class="programlisting">#include &lt;pthread.h&gt;
-#include &quot;db_cxx.h&quot;
+#include "db_cxx.h"
...
@@ -318,7 +318,7 @@ int main(void)
DB_THREAD | // Free-thread the env handle
DB_INIT_TXN; // Initialize transactions
- std::string envHome(&quot;/export1/testEnv&quot;);
+ std::string envHome("/export1/testEnv");
DbEnv myEnv(0);
try {
@@ -331,7 +331,7 @@ int main(void)
if ((ret = pthread_create(
&amp;ptid, NULL, checkpoint_thread, (void *)&amp;myEnv)) != 0) {
fprintf(stderr,
- &quot;txnapp: failed spawning checkpoint thread: %s\n&quot;,
+ "txnapp: failed spawning checkpoint thread: %s\n",
strerror(errno));
myEnv.close(0);
exit (1);
@@ -352,7 +352,7 @@ checkpoint_thread(void *arg) {
try {
dbenv-&gt;txn_checkpoint(0, 0, 0));
} catch(DbException &amp;e) {
- dbenv-&gt;err(e.get_errno(), &quot;checkpoint thread&quot;);
+ dbenv-&gt;err(e.get_errno(), "checkpoint thread");
exit (e.get_errno());
}
}
@@ -365,18 +365,18 @@ checkpoint_thread(void *arg) {
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="reversesplit.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="reversesplit.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="backuprestore.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="backuprestore.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Reverse BTree Splits </td>
+ <td width="40%" align="left" valign="top">Reverse BTree Splits </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Backup Procedures</td>
+ <td width="40%" align="right" valign="top"> Backup Procedures</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/CXX/hotfailover.html b/db/docs/gsg_txn/CXX/hotfailover.html
index fa3dcc152..9c6258f5f 100644
--- a/db/docs/gsg_txn/CXX/hotfailover.html
+++ b/db/docs/gsg_txn/CXX/hotfailover.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Using Hot Failovers</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="filemanagement.html" title="Chapter 5. Managing DB Files" />
+ <link rel="up" href="filemanagement.html" title="Chapter 5. Managing DB Files" />
<link rel="previous" href="architectrecovery.html" title="Designing Your Application for Recovery" />
<link rel="next" href="logfileremoval.html" title="Removing Log Files" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Using Hot Failovers</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="architectrecovery.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 5. Managing DB Files</th>
- <td width="20%" align="right"> <a accesskey="n" href="logfileremoval.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="architectrecovery.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 5. Managing DB Files</th>
+ <td width="20%" align="right"> <a accesskey="n" href="logfileremoval.html">Next</a></td>
</tr>
</table>
<hr />
@@ -191,18 +191,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="architectrecovery.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="architectrecovery.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="filemanagement.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="logfileremoval.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="logfileremoval.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Designing Your Application for Recovery </td>
+ <td width="40%" align="left" valign="top">Designing Your Application for Recovery </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Removing Log Files</td>
+ <td width="40%" align="right" valign="top"> Removing Log Files</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/CXX/index.html b/db/docs/gsg_txn/CXX/index.html
index e43890ce3..40883f92a 100644
--- a/db/docs/gsg_txn/CXX/index.html
+++ b/db/docs/gsg_txn/CXX/index.html
@@ -1,8 +1,8 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Getting Started with Berkeley DB Transaction Processing</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
@@ -16,9 +16,9 @@
<th colspan="3" align="center">Getting Started with Berkeley DB Transaction Processing</th>
</tr>
<tr>
- <td width="20%" align="left"> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="preface.html">Next</a></td>
+ <td width="20%" align="left"> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="preface.html">Next</a></td>
</tr>
</table>
<hr />
@@ -27,7 +27,7 @@
<div class="titlepage">
<div>
<div>
- <h1 class="title"><a id="id650934"></a>Getting Started with Berkeley DB Transaction Processing</h1>
+ <h1 class="title"><a id="id614000"></a>Getting Started with Berkeley DB Transaction Processing</h1>
</div>
<div>
<div class="legalnotice">
@@ -37,7 +37,7 @@
<p>
This documentation is distributed under an open source license.
You may review the terms of this license at:
- <a href="http://www.oracle.com/technology/software/products/berkeley-db/htdocs/oslicensing.html" target="_top">http://www.oracle.com/technology/software/products/berkeley-db/htdocs/oslicensing.html</a>
+ <a href="http://www.oracle.com/technology/software/products/berkeley-db/htdocs/oslicense.html" target="_top">http://www.oracle.com/technology/software/products/berkeley-db/htdocs/oslicense.html</a>
</p>
@@ -47,9 +47,9 @@
and
Sleepycat are trademarks or registered trademarks of
- Oracle Corporation. All rights to these marks are reserved.
+ Oracle. All rights to these marks are reserved.
No third-party use is permitted without the
- express prior written consent of Oracle Corporation.
+ express prior written consent of Oracle.
</p>
<p>
To obtain a copy of this document's original source code, please
@@ -61,7 +61,7 @@
</div>
</div>
<div>
- <p class="pubdate">9/20/2006</p>
+ <p class="pubdate">6/30/2007</p>
</div>
</div>
<div></div>
@@ -510,14 +510,14 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"> </td>
- <td width="20%" align="center"> </td>
- <td width="40%" align="right"> <a accesskey="n" href="preface.html">Next</a></td>
+ <td width="40%" align="left"> </td>
+ <td width="20%" align="center"> </td>
+ <td width="40%" align="right"> <a accesskey="n" href="preface.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top"> </td>
- <td width="20%" align="center"> </td>
- <td width="40%" align="right" valign="top"> Preface</td>
+ <td width="40%" align="left" valign="top"> </td>
+ <td width="20%" align="center"> </td>
+ <td width="40%" align="right" valign="top"> Preface</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/CXX/inmem_txnexample_c.html b/db/docs/gsg_txn/CXX/inmem_txnexample_c.html
index 5e5dd5f0a..9363d8300 100644
--- a/db/docs/gsg_txn/CXX/inmem_txnexample_c.html
+++ b/db/docs/gsg_txn/CXX/inmem_txnexample_c.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>In-Memory Transaction Example</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="wrapup.html" title="Chapter 6. Summary and Examples" />
+ <link rel="up" href="wrapup.html" title="Chapter 6. Summary and Examples" />
<link rel="previous" href="txnexample_c.html" title="Transaction Example" />
</head>
<body>
@@ -17,9 +17,9 @@
<th colspan="3" align="center">In-Memory Transaction Example</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="txnexample_c.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 6. Summary and Examples</th>
- <td width="20%" align="right"> </td>
+ <td width="20%" align="left"><a accesskey="p" href="txnexample_c.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 6. Summary and Examples</th>
+ <td width="20%" align="right"> </td>
</tr>
</table>
<hr />
@@ -54,7 +54,7 @@
<p>
Refrain from specifying a home directory when you open your
environment. The exception to this is if you are using the
- <tt class="literal">DB_CONFIG</tt> configuration file &#8212; in
+ <tt class="literal">DB_CONFIG</tt> configuration file — in
that case you must identify the environment's home
directory so that the configuration file can be found.
</p>
@@ -162,7 +162,7 @@ main(void)
u_int32_t envFlags;
// Application name
- const char *progName = &quot;TxnGuideInMemory&quot;; </pre>
+ const char *progName = "TxnGuideInMemory"; </pre>
<p>
Next we create our environment as always. However, we add
<tt class="literal">DB_PRIVATE</tt> to our environment open flags. This
@@ -265,7 +265,7 @@ main(void)
(void)pthread_join(writerThreads[i], NULL);
} catch(DbException &amp;e) {
- <b class="userinput"><tt>std::cerr &lt;&lt; &quot;Error opening database environment: &quot;</tt></b>
+ <b class="userinput"><tt>std::cerr &lt;&lt; "Error opening database environment: "</tt></b>
&lt;&lt; std::endl;
std::cerr &lt;&lt; e.what() &lt;&lt; std::endl;
return (EXIT_FAILURE);
@@ -280,7 +280,7 @@ main(void)
if (envp != NULL)
envp-&gt;close(0);
} catch(DbException &amp;e) {
- std::cerr &lt;&lt; &quot;Error closing database and environment.&quot;
+ std::cerr &lt;&lt; "Error closing database and environment."
&lt;&lt; std::endl;
std::cerr &lt;&lt; e.what() &lt;&lt; std::endl;
return (EXIT_FAILURE);
@@ -288,7 +288,7 @@ main(void)
// Final status message and return.
- std::cout &lt;&lt; &quot;I'm all done.&quot; &lt;&lt; std::endl;
+ std::cout &lt;&lt; "I'm all done." &lt;&lt; std::endl;
return (EXIT_SUCCESS);
} </pre>
<p>
@@ -316,9 +316,9 @@ writerThread(void *args)
int j, thread_num;
int max_retries = 20; // Max retry on a deadlock
- char *key_strings[] = {&quot;key 1&quot;, &quot;key 2&quot;, &quot;key 3&quot;, &quot;key 4&quot;,
- &quot;key 5&quot;, &quot;key 6&quot;, &quot;key 7&quot;, &quot;key 8&quot;,
- &quot;key 9&quot;, &quot;key 10&quot;};
+ char *key_strings[] = {"key 1", "key 2", "key 3", "key 4",
+ "key 5", "key 6", "key 7", "key 8",
+ "key 9", "key 10"};
// Get the thread number
(void)pthread_mutex_lock(&amp;thread_num_lock);
@@ -351,7 +351,7 @@ writerThread(void *args)
// deadlocks, so for this workload the correct thing
// would be to perform our puts with auto commit. But
// that would excessively simplify our example, so we
- // do the &quot;wrong&quot; thing here instead.
+ // do the "wrong" thing here instead.
txn = NULL;
envp-&gt;txn_begin(NULL, &amp;txn, 0);
// Perform the database write for this transaction.
@@ -371,11 +371,11 @@ writerThread(void *args)
// countRecords runs a cursor over the entire database.
// We do this to illustrate issues of deadlocking
- std::cout &lt;&lt; thread_num &lt;&lt; &quot; : Found &quot;
+ std::cout &lt;&lt; thread_num &lt;&lt; " : Found "
&lt;&lt; countRecords(dbp, <b class="userinput"><tt>txn</tt></b>)
- &lt;&lt; &quot; records in the database.&quot; &lt;&lt; std::endl;
+ &lt;&lt; " records in the database." &lt;&lt; std::endl;
- std::cout &lt;&lt; thread_num &lt;&lt; &quot; : committing txn : &quot; &lt;&lt; i
+ std::cout &lt;&lt; thread_num &lt;&lt; " : committing txn : " &lt;&lt; i
&lt;&lt; std::endl;
// commit
@@ -384,7 +384,7 @@ writerThread(void *args)
retry = false;
txn = NULL;
} catch (DbException &amp;e) {
- std::cout &lt;&lt; &quot;Error on txn commit: &quot;
+ std::cout &lt;&lt; "Error on txn commit: "
&lt;&lt; e.what() &lt;&lt; std::endl;
}
} catch (DbDeadlockException &amp;de) {
@@ -396,27 +396,27 @@ writerThread(void *args)
// If we have retried less than max_retries,
// increment the retry count and goto retry.
if (retry_count &lt; max_retries) {
- std::cout &lt;&lt; &quot;############### Writer &quot; &lt;&lt; thread_num
- &lt;&lt; &quot;: Got DB_LOCK_DEADLOCK.\n&quot;
- &lt;&lt; &quot;Retrying write operation.&quot;
+ std::cout &lt;&lt; "############### Writer " &lt;&lt; thread_num
+ &lt;&lt; ": Got DB_LOCK_DEADLOCK.\n"
+ &lt;&lt; "Retrying write operation."
&lt;&lt; std::endl;
retry_count++;
retry = true;
} else {
// Otherwise, just give up.
- std::cerr &lt;&lt; &quot;Writer &quot; &lt;&lt; thread_num
- &lt;&lt; &quot;: Got DeadLockException and out of &quot;
- &lt;&lt; &quot;retries. Giving up.&quot; &lt;&lt; std::endl;
+ std::cerr &lt;&lt; "Writer " &lt;&lt; thread_num
+ &lt;&lt; ": Got DeadLockException and out of "
+ &lt;&lt; "retries. Giving up." &lt;&lt; std::endl;
retry = false;
}
} catch (DbException &amp;e) {
- std::cerr &lt;&lt; &quot;db put failed&quot; &lt;&lt; std::endl;
+ std::cerr &lt;&lt; "db put failed" &lt;&lt; std::endl;
std::cerr &lt;&lt; e.what() &lt;&lt; std::endl;
if (txn != NULL)
txn-&gt;abort();
retry = false;
} catch (std::exception &amp;ee) {
- std::cerr &lt;&lt; &quot;Unknown exception: &quot; &lt;&lt; ee.what() &lt;&lt; std::endl;
+ std::cerr &lt;&lt; "Unknown exception: " &lt;&lt; ee.what() &lt;&lt; std::endl;
return (0);
}
}
@@ -451,11 +451,11 @@ countRecords(Db *dbp, DbTxn *txn)
count++;
}
} catch (DbDeadlockException &amp;de) {
- std::cerr &lt;&lt; &quot;countRecords: got deadlock&quot; &lt;&lt; std::endl;
+ std::cerr &lt;&lt; "countRecords: got deadlock" &lt;&lt; std::endl;
cursorp-&gt;close();
throw de;
} catch (DbException &amp;e) {
- std::cerr &lt;&lt; &quot;countRecords error:&quot; &lt;&lt; std::endl;
+ std::cerr &lt;&lt; "countRecords error:" &lt;&lt; std::endl;
std::cerr &lt;&lt; e.what() &lt;&lt; std::endl;
}
@@ -463,7 +463,7 @@ countRecords(Db *dbp, DbTxn *txn)
try {
cursorp-&gt;close();
} catch (DbException &amp;e) {
- std::cerr &lt;&lt; &quot;countRecords: cursor close failed:&quot; &lt;&lt; std::endl;
+ std::cerr &lt;&lt; "countRecords: cursor close failed:" &lt;&lt; std::endl;
std::cerr &lt;&lt; e.what() &lt;&lt; std::endl;
}
}
@@ -509,7 +509,7 @@ openDb(Db **dbpp, const char *progname, const char *fileName,
openFlags, // Open flags
0); // File mode. Using defaults
} catch (DbException &amp;e) {
- std::cerr &lt;&lt; progname &lt;&lt; &quot;: openDb: db open failed:&quot; &lt;&lt; std::endl;
+ std::cerr &lt;&lt; progname &lt;&lt; ": openDb: db open failed:" &lt;&lt; std::endl;
std::cerr &lt;&lt; e.what() &lt;&lt; std::endl;
return (EXIT_FAILURE);
}
@@ -527,18 +527,18 @@ openDb(Db **dbpp, const char *progname, const char *fileName,
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="txnexample_c.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="txnexample_c.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="wrapup.html">Up</a>
</td>
- <td width="40%" align="right"> </td>
+ <td width="40%" align="right"> </td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Transaction Example </td>
+ <td width="40%" align="left" valign="top">Transaction Example </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> </td>
+ <td width="40%" align="right" valign="top"> </td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/CXX/introduction.html b/db/docs/gsg_txn/CXX/introduction.html
index 9d03afe4e..744f7cfce 100644
--- a/db/docs/gsg_txn/CXX/introduction.html
+++ b/db/docs/gsg_txn/CXX/introduction.html
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <title>Chapter 1. Introduction</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Chapter 1. Introduction</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
@@ -15,12 +15,12 @@
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
- <th colspan="3" align="center">Chapter 1. Introduction</th>
+ <th colspan="3" align="center">Chapter 1. Introduction</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="preface.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="recovery-intro.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="preface.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="recovery-intro.html">Next</a></td>
</tr>
</table>
<hr />
@@ -29,7 +29,7 @@
<div class="titlepage">
<div>
<div>
- <h2 class="title"><a id="introduction"></a>Chapter 1. Introduction</h2>
+ <h2 class="title"><a id="introduction"></a>Chapter 1. Introduction</h2>
</div>
</div>
<div></div>
@@ -213,9 +213,27 @@
lose whatever data you were committing at the
time of the failure, but your databases will be otherwise unaffected.
</p>
+ <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
+ <h3 class="title">Note</h3>
+ <p>
+ Be aware that many disks have a disk write cache and on
+ some systems it is enabled by default. This means that
+ a transaction can have committed, and to your
+ application the data may appear to reside on disk, but
+ the data may in fact reside only in the write cache at
+ that time. This means that if the disk write cache is
+ enabled and there is no battery backup for it, data can
+ be lost after an OS crash even when maximum durability
+ mode is in use. For maximum durability, disable the
+ disk write cache or use a disk write cache with a
+ battery backup.
+ </p>
+ </div>
<p>
Of course, if your <span class="emphasis"><em>disk</em></span> fails, then the transactional benefits described in this book
are only as good as the backups you have taken.
+
+
<span>
By spreading your data and log files across separate disks,
you can minimize the risk of data loss due to a disk failure, but even in this case it is possible to
@@ -356,7 +374,7 @@
include code for detecting and responding to deadlocks.
Note that this requirement is not
<span class="emphasis"><em>specific</em></span> to transactions
- &#8211; you can certainly write concurrent
+ – you can certainly write concurrent
non-transactional DB applications. Further, not
every transactional application uses concurrency and
so not every transactional application must
@@ -404,7 +422,7 @@
you can configure your application to see uncommitted reads, which means
that one transaction can see data that has been modified but not yet
committed by another transaction. Doing this might mean your
- transaction reads data &quot;dirtied&quot; by another transaction,
+ transaction reads data "dirtied" by another transaction,
but which subsequently might change before that
other transaction commits its changes.
On the other hand, lowering your isolation
@@ -422,18 +440,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="preface.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="preface.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="recovery-intro.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="recovery-intro.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Preface </td>
+ <td width="40%" align="left" valign="top">Preface </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Recoverability</td>
+ <td width="40%" align="right" valign="top"> Recoverability</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/CXX/isolation.html b/db/docs/gsg_txn/CXX/isolation.html
index f8bc69fab..a8f5f123a 100644
--- a/db/docs/gsg_txn/CXX/isolation.html
+++ b/db/docs/gsg_txn/CXX/isolation.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Isolation</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="txnconcurrency.html" title="Chapter 4. Concurrency" />
+ <link rel="up" href="txnconcurrency.html" title="Chapter 4. Concurrency" />
<link rel="previous" href="lockingsubsystem.html" title="The Locking Subsystem" />
<link rel="next" href="txn_ccursor.html" title="Transactional Cursors and Concurrent Applications" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Isolation</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="lockingsubsystem.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 4. Concurrency</th>
- <td width="20%" align="right"> <a accesskey="n" href="txn_ccursor.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="lockingsubsystem.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 4. Concurrency</th>
+ <td width="20%" align="right"> <a accesskey="n" href="txn_ccursor.html">Next</a></td>
</tr>
</table>
<hr />
@@ -236,7 +236,7 @@
the database to support uncommitted reads is not enough; you must also declare your read operations to be
performed using uncommitted reads.
</p>
- <pre class="programlisting">#include &quot;db_cxx.h&quot;
+ <pre class="programlisting">#include "db_cxx.h"
...
@@ -256,11 +256,11 @@ int main(void)
DB_READ_UNCOMMITTED; // Enable uncommitted reads
Db *dbp = NULL;
- const char *file_name = &quot;mydb.db&quot;;
- const char *keystr =&quot;thekey&quot;;
- const char *datastr = &quot;thedata&quot;;
+ const char *file_name = "mydb.db";
+ const char *keystr ="thekey";
+ const char *datastr = "thedata";
- std::string envHome(&quot;/export1/testEnv&quot;);
+ std::string envHome("/export1/testEnv");
DbEnv myEnv(0);
try {
@@ -358,7 +358,7 @@ int main(void)
<p>
For example, the following creates a transaction that allows committed reads:
</p>
- <pre class="programlisting">#include &quot;db_cxx.h&quot;
+ <pre class="programlisting">#include "db_cxx.h"
...
@@ -377,9 +377,9 @@ int main(void)
// where we DO have to specify a flag on the database open.
u_int32_t db_flags = DB_CREATE | DB_AUTO_COMMIT;
Db *dbp = NULL;
- const char *file_name = &quot;mydb.db&quot;;
+ const char *file_name = "mydb.db";
- std::string envHome(&quot;/export1/testEnv&quot;);
+ std::string envHome("/export1/testEnv");
DbEnv myEnv(0);
try {
@@ -423,11 +423,15 @@ int main(void)
important side effect of this isolation level is that
read operations obtain read locks on database pages,
and then hold those locks until the read operation is
- completed. When you are using transactional cursors, this
+ completed.
+
+ <span>
+ When you are using transactional cursors, this
means that read locks are held until the transaction commits or
aborts. In that case, over time a transactional cursor
can gradually block all other transactions from writing
to the database.
+ </span>
</p>
<p>
You can avoid this by using snapshot isolation.
@@ -435,7 +439,7 @@ int main(void)
concurrency control</em></span> to guarantee
repeatable reads. What this means is that every time a
writer would take a read lock on a page, instead a copy of
- the page is made and the writer operations on that page
+ the page is made and the writer operates on that page
copy. This frees other writers from blocking due to a
read lock held on the page.
</p>
@@ -458,7 +462,7 @@ int main(void)
<p>
If the cache becomes full of page copies before old
copies can be discarded, additional I/O will occur as
- pages are written to temporary &quot;freezer&quot; files on disk.
+ pages are written to temporary "freezer" files on disk.
This can substantially reduce throughput, and should be
avoided if possible by configuring a large cache and
keeping snapshot isolation transactions short.
@@ -487,134 +491,7 @@ int main(void)
In addition to an increased cache size, you may also
need to increase the maximum number of transactions
that your application supports. (See
- <a href="maxtxns.html"><p>
- Most of the configuration activities that you need to perform
- for your transactional DB application will involve the
- locking and logging subsystems. See
- <a href="txnconcurrency.html"></a>Concurrency
- and
- <a href="filemanagement.html"></a>Managing DB Files
- for details.
- </p><p>
- However, there are a couple of things that you can do to
- configure your transaction subsystem directly. These things
- are:
- </p><div class="itemizedlist"><ul type="disc"><li><p>
- Configure the maximum number of simultaneous
- transactions needed by your application.
- In general, you should not need to do this unless you
- use deeply nested transactions or you have many threads all
- of which have active transactions. In addition, you may
- need to a higher maximum number of transactions if you
- are using snapshot isolation. See
- <a href="isolation.html#sisolation_maxtxn"></a>Snapshot Isolation Transactional Requirements
- for details.
- </p><p>
- By default, your application can support 20 active
- transactions.
- </p><p>
- You can set the maximum number of simultaneous
- transactions supported by your application using
- <span>
- the
-
- <tt class="methodname">DbEnv::set_tx_max()</tt>
- method. Note that this method must be called
- before the environment has been opened.
- </span>
-
- </p><p>
- If your application has exceeded this maximum value,
- then any attempt to begin a new transaction will fail.
- </p><p>
- This value can also be set using the
- <tt class="literal">DB_CONFIG</tt> file's
- <tt class="literal">set_tx_max</tt> parameter. Remember that
- the <tt class="literal">DB_CONFIG</tt> must reside in your
- environment home directory.
- </p></li><li><span>
- <p>
- <span>
- Configure the timeout value for your transactions.
- </span>
-
-
- This value represents the longest period of time a
- transaction can be active. Note, however, that
- transaction timeouts are checked only when DB
- examines its lock tables for blocked locks
- (see <a href="blocking_deadlocks.html"></a>Locks, Blocks, and Deadlocks
- for more information). Therefore, a transaction's timeout can
- have expired, but the application will not be notified until DB
- has a reason to examine its lock tables.
- </p>
- <p>
- Be aware that some transactions may be
- inappropriately timed out before the transaction has a
- chance to complete. You should therefore use this
- mechanism only if you know your application
- might have unacceptably long transactions and
- you want to make sure your application will
- not stall during their execution.
- (This might happen if, for example, your
- transaction blocks or requests too much
- data.)
- </p>
- <p>
- Note that by default transaction timeouts are set to 0 seconds, which means that they never time
- out.
- </p>
- <p>
- To set the maximum timeout value for your transactions,
- use the
-
- <span><tt class="methodname">DbEnv::set_timeout()</tt></span>
-
- method. This method configures the entire
- environment; not just the handle used to set the
- configuration. Further, this value may
- be set at any time during the application's
- lifetime.
- </p>
- <p>
- This value can also be set using the
- <tt class="literal">DB_CONFIG</tt> file's
- <tt class="literal">set_txn_timeout</tt> parameter.
- </p>
-
-</span></li></ul></div><p>
- For example:
- </p><pre class="programlisting">#include &quot;db_cxx.h&quot;
-
-...
-
-int main(void)
-{
- u_int32_t env_flags = DB_CREATE | // If the environment does not
- // exist, create it.
- DB_INIT_LOCK | // Initialize locking
- DB_INIT_LOG | // Initialize logging
- DB_INIT_MPOOL | // Initialize the cache
- DB_THREAD | // Free-thread the env handle
- DB_INIT_TXN; // Initialize transactions
-
- std::string envHome(&quot;/export1/testEnv&quot;);
- DbEnv myEnv(0);
-
- try {
-
- // Configure a maximum transaction timeout of 1 second.
- myEnv.set_timeout(1000000, DB_SET_TXN_TIMEOUT);
- // Configure 40 maximum transactions.
- myEnv.set_tx_max(40);
- myEnv.open(envHome.c_str(), env_flags, 0);
-
- // From here, you open your databases, proceed with your
- // database operations, and respond to deadlocks as
- // is normal (omitted for brevity).
-
-
- ...</pre></a>
+ <a href="maxtxns.html">Configuring the Transaction Subsystem</a>
for details on how to set this.)
In the worst case scenario, you might need to configure your application for one
more transaction for every page in the cache. This is
@@ -700,9 +577,8 @@ int main(void)
</li>
<li>
<p>
- Configure your cursor or
- transaction to use snapshot
- isolation.
+ Configure your <span>cursor or</span>
+ transaction to use snapshot isolation.
</p>
<p>
To do this,
@@ -710,13 +586,23 @@ int main(void)
<span>
pass the
<tt class="literal">DB_TXN_SNAPSHOT</tt> flag
- when you open the cursor or
- create the transaction. If
+ when you
+
+ <span>
+ open the cursor or
+ </span>
+
+ create the transaction.
+
+ <span>
+ If
configured for the transaction,
then this flag is not required
when the cursor is opened.
</span>
+ </span>
+
</p>
</li>
@@ -747,7 +633,7 @@ int main(void)
The following code fragment turns
on snapshot isolation for a transaction:
</p>
- <pre class="programlisting">#include &quot;db_cxx.h&quot;
+ <pre class="programlisting">#include "db_cxx.h"
...
@@ -765,9 +651,9 @@ int main(void)
// This is because it is already enabled at the environment level.
u_int32_t db_flags = DB_CREATE | DB_AUTO_COMMIT;
Db *dbp = NULL;
- const char *file_name = &quot;mydb.db&quot;;
+ const char *file_name = "mydb.db";
- std::string envHome(&quot;/export1/testEnv&quot;);
+ std::string envHome("/export1/testEnv");
DbEnv myEnv(0);
try {
@@ -782,8 +668,8 @@ int main(void)
0); // File mode. Using defaults
} catch(DbException &amp;e) {
- std::cerr &lt;&lt; &quot;Error opening database and environment: &quot;
- &lt;&lt; file_name &lt;&lt; &quot;, &quot;
+ std::cerr &lt;&lt; "Error opening database and environment: "
+ &lt;&lt; file_name &lt;&lt; ", "
&lt;&lt; envHome &lt;&lt; std::endl;
std::cerr &lt;&lt; e.what() &lt;&lt; std::endl;
}
@@ -802,18 +688,18 @@ int main(void)
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="lockingsubsystem.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="lockingsubsystem.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="txnconcurrency.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="txn_ccursor.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="txn_ccursor.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">The Locking Subsystem </td>
+ <td width="40%" align="left" valign="top">The Locking Subsystem </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Transactional Cursors and Concurrent Applications</td>
+ <td width="40%" align="right" valign="top"> Transactional Cursors and Concurrent Applications</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/CXX/lockingsubsystem.html b/db/docs/gsg_txn/CXX/lockingsubsystem.html
index 81631cb28..d4925ab8d 100644
--- a/db/docs/gsg_txn/CXX/lockingsubsystem.html
+++ b/db/docs/gsg_txn/CXX/lockingsubsystem.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>The Locking Subsystem</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="txnconcurrency.html" title="Chapter 4. Concurrency" />
+ <link rel="up" href="txnconcurrency.html" title="Chapter 4. Concurrency" />
<link rel="previous" href="blocking_deadlocks.html" title="Locks, Blocks, and Deadlocks" />
<link rel="next" href="isolation.html" title="Isolation" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">The Locking Subsystem</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="blocking_deadlocks.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 4. Concurrency</th>
- <td width="20%" align="right"> <a accesskey="n" href="isolation.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="blocking_deadlocks.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 4. Concurrency</th>
+ <td width="20%" align="right"> <a accesskey="n" href="isolation.html">Next</a></td>
</tr>
</table>
<hr />
@@ -160,7 +160,7 @@
For example, to configure the maximum number of locks that your
environment can use:
</p>
- <pre class="programlisting">#include &quot;db_cxx.h&quot;
+ <pre class="programlisting">#include "db_cxx.h"
...
@@ -174,7 +174,7 @@ int main(void)
DB_THREAD | // Free-thread the env handle.
DB_INIT_TXN; // Initialize transactions
- std::string envHome(&quot;/export1/testEnv&quot;);
+ std::string envHome("/export1/testEnv");
DbEnv myEnv(0);
try {
@@ -185,7 +185,7 @@ int main(void)
myEnv.open(envHome.c_str(), env_flags, 0);
} catch(DbException &amp;e) {
- std::cerr &lt;&lt; &quot;Error opening database environment: &quot;
+ std::cerr &lt;&lt; "Error opening database environment: "
&lt;&lt; envHome &lt;&lt; std::endl;
std::cerr &lt;&lt; e.what() &lt;&lt; std::endl;
return (EXIT_FAILURE);
@@ -194,7 +194,7 @@ int main(void)
try {
myEnv.close(0);
} catch(DbException &amp;e) {
- std::cerr &lt;&lt; &quot;Error closing database environment: &quot;
+ std::cerr &lt;&lt; "Error closing database environment: "
&lt;&lt; envHome &lt;&lt; std::endl;
std::cerr &lt;&lt; e.what() &lt;&lt; std::endl;
return (EXIT_FAILURE);
@@ -333,7 +333,7 @@ int main(void)
checks the lock table for deadlocks every time a lock
request is blocked:
</p>
- <pre class="programlisting">#include &quot;db_cxx.h&quot;
+ <pre class="programlisting">#include "db_cxx.h"
...
@@ -347,7 +347,7 @@ int main(void)
DB_THREAD | // Free-thread the env handle
DB_INIT_TXN; // Initialize transactions
- std::string envHome(&quot;/export1/testEnv&quot;);
+ std::string envHome("/export1/testEnv");
DbEnv myEnv(0);
try {
@@ -459,20 +459,20 @@ while (retry_count &lt; MAX_DEADLOCK_RETRIES) {
retry_count++;
// If we've retried too many times, log it and exit
if (retry_count &gt;= MAX_DEADLOCK_RETRIES) {
- envp-&gt;errx(&quot;Exceeded retry limit. Giving up.&quot;);
+ envp-&gt;errx("Exceeded retry limit. Giving up.");
return (EXIT_FAILURE);
}
} catch (DbException &amp;ae) {
- envp-&gt;err(ae.get_errno(), &quot;txn abort failed.&quot;);
+ envp-&gt;err(ae.get_errno(), "txn abort failed.");
return (EXIT_FAILURE);
}
} catch (DbException &amp;e) {
try {
// For a generic error, log it and abort.
- envp-&gt;err(e.get_errno(), &quot;Error putting data.&quot;);
+ envp-&gt;err(e.get_errno(), "Error putting data.");
txn-&gt;abort();
} catch (DbException &amp;ae) {
- envp-&gt;err(ae.get_errno(), &quot;txn abort failed.&quot;);
+ envp-&gt;err(ae.get_errno(), "txn abort failed.");
return (EXIT_FAILURE);
}
}
@@ -483,18 +483,18 @@ while (retry_count &lt; MAX_DEADLOCK_RETRIES) {
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="blocking_deadlocks.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="blocking_deadlocks.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="txnconcurrency.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="isolation.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="isolation.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Locks, Blocks, and Deadlocks </td>
+ <td width="40%" align="left" valign="top">Locks, Blocks, and Deadlocks </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Isolation</td>
+ <td width="40%" align="right" valign="top"> Isolation</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/CXX/logconfig.html b/db/docs/gsg_txn/CXX/logconfig.html
index ec3268ae7..690a50bce 100644
--- a/db/docs/gsg_txn/CXX/logconfig.html
+++ b/db/docs/gsg_txn/CXX/logconfig.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Configuring the Logging Subsystem</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="filemanagement.html" title="Chapter 5. Managing DB Files" />
+ <link rel="up" href="filemanagement.html" title="Chapter 5. Managing DB Files" />
<link rel="previous" href="logfileremoval.html" title="Removing Log Files" />
- <link rel="next" href="wrapup.html" title="Chapter 6. Summary and Examples" />
+ <link rel="next" href="wrapup.html" title="Chapter 6. Summary and Examples" />
</head>
<body>
<div class="navheader">
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Configuring the Logging Subsystem</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="logfileremoval.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 5. Managing DB Files</th>
- <td width="20%" align="right"> <a accesskey="n" href="wrapup.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="logfileremoval.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 5. Managing DB Files</th>
+ <td width="20%" align="right"> <a accesskey="n" href="wrapup.html">Next</a></td>
</tr>
</table>
<hr />
@@ -272,7 +272,7 @@
<p>
For example:
</p>
- <pre class="programlisting">#include &quot;db_cxx.h&quot;
+ <pre class="programlisting">#include "db_cxx.h"
...
@@ -288,7 +288,7 @@ int main(void)
DB_THREAD | // Free-thread the env handle
DB_INIT_TXN; // Initialize transactions
- std::string envHome(&quot;/export1/testEnv&quot;);
+ std::string envHome("/export1/testEnv");
DbEnv myEnv(0);
try {
@@ -310,8 +310,8 @@ int main(void)
myEnv.open(envHome.c_str(), env_flags, 0);
} catch(DbException &amp;e) {
- std::cerr &lt;&lt; &quot;Error opening database and environment: &quot;
- &lt;&lt; file_name &lt;&lt; &quot;, &quot;
+ std::cerr &lt;&lt; "Error opening database and environment: "
+ &lt;&lt; file_name &lt;&lt; ", "
&lt;&lt; envHome &lt;&lt; std::endl;
std::cerr &lt;&lt; e.what() &lt;&lt; std::endl;
}
@@ -353,7 +353,7 @@ int main(void)
large enough that no transaction will ever span the entire
buffer. You must also avoid a state where the in-memory
buffer is full and no space can be freed because a
- transaction that started the first log &quot;file&quot; is still
+ transaction that started the first log "file" is still
active.
</p>
<p>
@@ -378,18 +378,18 @@ int main(void)
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="logfileremoval.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="logfileremoval.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="filemanagement.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="wrapup.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="wrapup.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Removing Log Files </td>
+ <td width="40%" align="left" valign="top">Removing Log Files </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Chapter 6. Summary and Examples</td>
+ <td width="40%" align="right" valign="top"> Chapter 6. Summary and Examples</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/CXX/logfileremoval.html b/db/docs/gsg_txn/CXX/logfileremoval.html
index dae151e87..038930537 100644
--- a/db/docs/gsg_txn/CXX/logfileremoval.html
+++ b/db/docs/gsg_txn/CXX/logfileremoval.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Removing Log Files</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="filemanagement.html" title="Chapter 5. Managing DB Files" />
+ <link rel="up" href="filemanagement.html" title="Chapter 5. Managing DB Files" />
<link rel="previous" href="hotfailover.html" title="Using Hot Failovers" />
<link rel="next" href="logconfig.html" title="Configuring the Logging Subsystem" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Removing Log Files</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="hotfailover.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 5. Managing DB Files</th>
- <td width="20%" align="right"> <a accesskey="n" href="logconfig.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="hotfailover.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 5. Managing DB Files</th>
+ <td width="20%" align="right"> <a accesskey="n" href="logconfig.html">Next</a></td>
</tr>
</table>
<hr />
@@ -187,18 +187,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="hotfailover.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="hotfailover.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="filemanagement.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="logconfig.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="logconfig.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Using Hot Failovers </td>
+ <td width="40%" align="left" valign="top">Using Hot Failovers </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Configuring the Logging Subsystem</td>
+ <td width="40%" align="right" valign="top"> Configuring the Logging Subsystem</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/CXX/maxtxns.html b/db/docs/gsg_txn/CXX/maxtxns.html
index 1a815c290..e8fee2075 100644
--- a/db/docs/gsg_txn/CXX/maxtxns.html
+++ b/db/docs/gsg_txn/CXX/maxtxns.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Configuring the Transaction Subsystem</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="usingtxns.html" title="Chapter 3. Transaction Basics" />
+ <link rel="up" href="usingtxns.html" title="Chapter 3. Transaction Basics" />
<link rel="previous" href="txnindices.html" title="Secondary Indices with Transaction Applications" />
- <link rel="next" href="txnconcurrency.html" title="Chapter 4. Concurrency" />
+ <link rel="next" href="txnconcurrency.html" title="Chapter 4. Concurrency" />
</head>
<body>
<div class="navheader">
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Configuring the Transaction Subsystem</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="txnindices.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 3. Transaction Basics</th>
- <td width="20%" align="right"> <a accesskey="n" href="txnconcurrency.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="txnindices.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 3. Transaction Basics</th>
+ <td width="20%" align="right"> <a accesskey="n" href="txnconcurrency.html">Next</a></td>
</tr>
</table>
<hr />
@@ -148,7 +148,7 @@
<p>
For example:
</p>
- <pre class="programlisting">#include &quot;db_cxx.h&quot;
+ <pre class="programlisting">#include "db_cxx.h"
...
@@ -162,7 +162,7 @@ int main(void)
DB_THREAD | // Free-thread the env handle
DB_INIT_TXN; // Initialize transactions
- std::string envHome(&quot;/export1/testEnv&quot;);
+ std::string envHome("/export1/testEnv");
DbEnv myEnv(0);
try {
@@ -184,18 +184,18 @@ int main(void)
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="txnindices.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="txnindices.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="usingtxns.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="txnconcurrency.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="txnconcurrency.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Secondary Indices with Transaction Applications </td>
+ <td width="40%" align="left" valign="top">Secondary Indices with Transaction Applications </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Chapter 4. Concurrency</td>
+ <td width="40%" align="right" valign="top"> Chapter 4. Concurrency</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/CXX/nestedtxn.html b/db/docs/gsg_txn/CXX/nestedtxn.html
index f15aafb9c..75fa0bcf5 100644
--- a/db/docs/gsg_txn/CXX/nestedtxn.html
+++ b/db/docs/gsg_txn/CXX/nestedtxn.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Nested Transactions</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="usingtxns.html" title="Chapter 3. Transaction Basics" />
+ <link rel="up" href="usingtxns.html" title="Chapter 3. Transaction Basics" />
<link rel="previous" href="autocommit.html" title="Auto Commit" />
<link rel="next" href="txncursor.html" title="Transactional Cursors" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Nested Transactions</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="autocommit.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 3. Transaction Basics</th>
- <td width="20%" align="right"> <a accesskey="n" href="txncursor.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="autocommit.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 3. Transaction Basics</th>
+ <td width="20%" align="right"> <a accesskey="n" href="txncursor.html">Next</a></td>
</tr>
</table>
<hr />
@@ -121,18 +121,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="autocommit.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="autocommit.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="usingtxns.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="txncursor.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="txncursor.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Auto Commit </td>
+ <td width="40%" align="left" valign="top">Auto Commit </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Transactional Cursors</td>
+ <td width="40%" align="right" valign="top"> Transactional Cursors</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/CXX/perftune-intro.html b/db/docs/gsg_txn/CXX/perftune-intro.html
index e9dff26fc..5a31485c0 100644
--- a/db/docs/gsg_txn/CXX/perftune-intro.html
+++ b/db/docs/gsg_txn/CXX/perftune-intro.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Performance Tuning</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="introduction.html" title="Chapter 1. Introduction" />
+ <link rel="up" href="introduction.html" title="Chapter 1. Introduction" />
<link rel="previous" href="recovery-intro.html" title="Recoverability" />
- <link rel="next" href="enabletxn.html" title="Chapter 2. Enabling Transactions" />
+ <link rel="next" href="enabletxn.html" title="Chapter 2. Enabling Transactions" />
</head>
<body>
<div class="navheader">
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Performance Tuning</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="recovery-intro.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 1. Introduction</th>
- <td width="20%" align="right"> <a accesskey="n" href="enabletxn.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="recovery-intro.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 1. Introduction</th>
+ <td width="20%" align="right"> <a accesskey="n" href="enabletxn.html">Next</a></td>
</tr>
</table>
<hr />
@@ -69,18 +69,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="recovery-intro.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="recovery-intro.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="introduction.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="enabletxn.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="enabletxn.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Recoverability </td>
+ <td width="40%" align="left" valign="top">Recoverability </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Chapter 2. Enabling Transactions</td>
+ <td width="40%" align="right" valign="top"> Chapter 2. Enabling Transactions</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/CXX/preface.html b/db/docs/gsg_txn/CXX/preface.html
index 37929aed5..58c4749be 100644
--- a/db/docs/gsg_txn/CXX/preface.html
+++ b/db/docs/gsg_txn/CXX/preface.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Preface</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
<link rel="up" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
<link rel="previous" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="next" href="introduction.html" title="Chapter 1. Introduction" />
+ <link rel="next" href="introduction.html" title="Chapter 1. Introduction" />
</head>
<body>
<div class="navheader">
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Preface</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="index.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="introduction.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="index.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="introduction.html">Next</a></td>
</tr>
</table>
<hr />
@@ -97,12 +97,12 @@
- <span>&quot;<tt class="methodname">DbEnv::open()</tt> is a
- <tt class="classname">DbEnv</tt> class method.&quot;</span>
+ <span>"<tt class="methodname">DbEnv::open()</tt> is a
+ <tt class="classname">DbEnv</tt> class method."</span>
</p>
<p>
- Variable or non-literal text is presented in <span class="emphasis"><em>italics</em></span>. For example: &quot;Go to your
- <span class="emphasis"><em>DB_INSTALL</em></span> directory.&quot;
+ Variable or non-literal text is presented in <span class="emphasis"><em>italics</em></span>. For example: "Go to your
+ <span class="emphasis"><em>DB_INSTALL</em></span> directory."
</p>
<p>
Program examples are displayed in a <tt class="classname">monospaced font</tt> on a shaded background.
@@ -202,18 +202,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="index.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="index.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="introduction.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="introduction.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Getting Started with Berkeley DB Transaction Processing </td>
+ <td width="40%" align="left" valign="top">Getting Started with Berkeley DB Transaction Processing </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Chapter 1. Introduction</td>
+ <td width="40%" align="right" valign="top"> Chapter 1. Introduction</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/CXX/readmodifywrite.html b/db/docs/gsg_txn/CXX/readmodifywrite.html
index 62375dc3a..1f396b9c3 100644
--- a/db/docs/gsg_txn/CXX/readmodifywrite.html
+++ b/db/docs/gsg_txn/CXX/readmodifywrite.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Read/Modify/Write</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="txnconcurrency.html" title="Chapter 4. Concurrency" />
+ <link rel="up" href="txnconcurrency.html" title="Chapter 4. Concurrency" />
<link rel="previous" href="txn_ccursor.html" title="Transactional Cursors and Concurrent Applications" />
<link rel="next" href="txnnowait.html" title="No Wait on Blocks" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Read/Modify/Write</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="txn_ccursor.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 4. Concurrency</th>
- <td width="20%" align="right"> <a accesskey="n" href="txnnowait.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="txn_ccursor.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 4. Concurrency</th>
+ <td width="20%" align="right"> <a accesskey="n" href="txnnowait.html">Next</a></td>
</tr>
</table>
<hr />
@@ -105,18 +105,18 @@ while (retry_count &lt; MAX_DEADLOCK_RETRIES) {
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="txn_ccursor.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="txn_ccursor.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="txnconcurrency.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="txnnowait.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="txnnowait.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Transactional Cursors and Concurrent Applications </td>
+ <td width="40%" align="left" valign="top">Transactional Cursors and Concurrent Applications </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> No Wait on Blocks</td>
+ <td width="40%" align="right" valign="top"> No Wait on Blocks</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/CXX/recovery-intro.html b/db/docs/gsg_txn/CXX/recovery-intro.html
index ee490b9ba..e971eef93 100644
--- a/db/docs/gsg_txn/CXX/recovery-intro.html
+++ b/db/docs/gsg_txn/CXX/recovery-intro.html
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Recoverability</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="introduction.html" title="Chapter 1. Introduction" />
- <link rel="previous" href="introduction.html" title="Chapter 1. Introduction" />
+ <link rel="up" href="introduction.html" title="Chapter 1. Introduction" />
+ <link rel="previous" href="introduction.html" title="Chapter 1. Introduction" />
<link rel="next" href="perftune-intro.html" title="Performance Tuning" />
</head>
<body>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Recoverability</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="introduction.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 1. Introduction</th>
- <td width="20%" align="right"> <a accesskey="n" href="perftune-intro.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="introduction.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 1. Introduction</th>
+ <td width="20%" align="right"> <a accesskey="n" href="perftune-intro.html">Next</a></td>
</tr>
</table>
<hr />
@@ -85,18 +85,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="introduction.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="introduction.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="introduction.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="perftune-intro.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="perftune-intro.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Chapter 1. Introduction </td>
+ <td width="40%" align="left" valign="top">Chapter 1. Introduction </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Performance Tuning</td>
+ <td width="40%" align="right" valign="top"> Performance Tuning</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/CXX/recovery.html b/db/docs/gsg_txn/CXX/recovery.html
index 546326ad7..16595702b 100644
--- a/db/docs/gsg_txn/CXX/recovery.html
+++ b/db/docs/gsg_txn/CXX/recovery.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Recovery Procedures</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="filemanagement.html" title="Chapter 5. Managing DB Files" />
+ <link rel="up" href="filemanagement.html" title="Chapter 5. Managing DB Files" />
<link rel="previous" href="backuprestore.html" title="Backup Procedures" />
<link rel="next" href="architectrecovery.html" title="Designing Your Application for Recovery" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Recovery Procedures</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="backuprestore.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 5. Managing DB Files</th>
- <td width="20%" align="right"> <a accesskey="n" href="architectrecovery.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="backuprestore.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 5. Managing DB Files</th>
+ <td width="20%" align="right"> <a accesskey="n" href="architectrecovery.html">Next</a></td>
</tr>
</table>
<hr />
@@ -141,7 +141,7 @@
<p>
For example:
</p>
- <pre class="programlisting">#include &quot;db_cxx.h&quot;
+ <pre class="programlisting">#include "db_cxx.h"
...
@@ -158,7 +158,7 @@ int main(void)
DB_THREAD | // Free-thread the env handle
DB_RECOVER; // Run normal recovery
- std::string envHome(&quot;/export1/testEnv&quot;);
+ std::string envHome("/export1/testEnv");
DbEnv myEnv(0);
try {
@@ -224,7 +224,7 @@ int main(void)
</p>
<p>
Note that catastrophic recovery examines every available
- log file &#8212; not just those log files created since the
+ log file — not just those log files created since the
last checkpoint as is the case for normal recovery. For this reason,
catastrophic recovery is likely to take longer than does
normal recovery.
@@ -232,7 +232,7 @@ int main(void)
<p>
For example:
</p>
- <pre class="programlisting">#include &quot;db_cxx.h&quot;
+ <pre class="programlisting">#include "db_cxx.h"
...
@@ -249,7 +249,7 @@ int main(void)
DB_THREAD | // Free-thread the env handle
<b class="userinput"><tt>DB_RECOVER_FATAL; // Run catastrophic recovery</tt></b>
- std::string envHome(&quot;/export1/testEnv&quot;);
+ std::string envHome("/export1/testEnv");
DbEnv myEnv(0);
try {
@@ -269,18 +269,18 @@ int main(void)
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="backuprestore.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="backuprestore.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="filemanagement.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="architectrecovery.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="architectrecovery.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Backup Procedures </td>
+ <td width="40%" align="left" valign="top">Backup Procedures </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Designing Your Application for Recovery</td>
+ <td width="40%" align="right" valign="top"> Designing Your Application for Recovery</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/CXX/reversesplit.html b/db/docs/gsg_txn/CXX/reversesplit.html
index 9c06afcec..a0ad62960 100644
--- a/db/docs/gsg_txn/CXX/reversesplit.html
+++ b/db/docs/gsg_txn/CXX/reversesplit.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Reverse BTree Splits</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="txnconcurrency.html" title="Chapter 4. Concurrency" />
+ <link rel="up" href="txnconcurrency.html" title="Chapter 4. Concurrency" />
<link rel="previous" href="txnnowait.html" title="No Wait on Blocks" />
- <link rel="next" href="filemanagement.html" title="Chapter 5. Managing DB Files" />
+ <link rel="next" href="filemanagement.html" title="Chapter 5. Managing DB Files" />
</head>
<body>
<div class="navheader">
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Reverse BTree Splits</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="txnnowait.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 4. Concurrency</th>
- <td width="20%" align="right"> <a accesskey="n" href="filemanagement.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="txnnowait.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 4. Concurrency</th>
+ <td width="20%" align="right"> <a accesskey="n" href="filemanagement.html">Next</a></td>
</tr>
</table>
<hr />
@@ -79,7 +79,7 @@
<p>
For example:
</p>
- <pre class="programlisting">#include &quot;db_cxx.h&quot;
+ <pre class="programlisting">#include "db_cxx.h"
...
@@ -95,9 +95,9 @@ int main(void)
u_int32_t db_flags = DB_CREATE | DB_AUTO_COMMIT;
Db *dbp = NULL;
- const char *file_name = &quot;mydb.db&quot;;
+ const char *file_name = "mydb.db";
- std::string envHome(&quot;/export1/testEnv&quot;);
+ std::string envHome("/export1/testEnv");
DbEnv myEnv(0);
try {
@@ -117,8 +117,8 @@ int main(void)
0); // File mode. Using defaults
} catch(DbException &amp;e) {
- std::cerr &lt;&lt; &quot;Error opening database and environment: &quot;
- &lt;&lt; file_name &lt;&lt; &quot;, &quot; &lt;&lt; envHome &lt;&lt; std::endl;
+ std::cerr &lt;&lt; "Error opening database and environment: "
+ &lt;&lt; file_name &lt;&lt; ", " &lt;&lt; envHome &lt;&lt; std::endl;
std::cerr &lt;&lt; e.what() &lt;&lt; std::endl;
}
@@ -126,8 +126,8 @@ int main(void)
dbp-&gt;close(dbp, 0);
myEnv.close(0);
} catch(DbException &amp;e) {
- std::cerr &lt;&lt; &quot;Error closing database and environment: &quot;
- &lt;&lt; file_name &lt;&lt; &quot;, &quot; &lt;&lt; envHome &lt;&lt; std::endl;
+ std::cerr &lt;&lt; "Error closing database and environment: "
+ &lt;&lt; file_name &lt;&lt; ", " &lt;&lt; envHome &lt;&lt; std::endl;
std::cerr &lt;&lt; e.what() &lt;&lt; std::endl;
return (EXIT_FAILURE);
}
@@ -139,18 +139,18 @@ int main(void)
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="txnnowait.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="txnnowait.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="txnconcurrency.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="filemanagement.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="filemanagement.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">No Wait on Blocks </td>
+ <td width="40%" align="left" valign="top">No Wait on Blocks </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Chapter 5. Managing DB Files</td>
+ <td width="40%" align="right" valign="top"> Chapter 5. Managing DB Files</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/CXX/txn_ccursor.html b/db/docs/gsg_txn/CXX/txn_ccursor.html
index be89a3dc8..e6ccb1443 100644
--- a/db/docs/gsg_txn/CXX/txn_ccursor.html
+++ b/db/docs/gsg_txn/CXX/txn_ccursor.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Transactional Cursors and Concurrent Applications</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="txnconcurrency.html" title="Chapter 4. Concurrency" />
+ <link rel="up" href="txnconcurrency.html" title="Chapter 4. Concurrency" />
<link rel="previous" href="isolation.html" title="Isolation" />
<link rel="next" href="readmodifywrite.html" title="Read/Modify/Write" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Transactional Cursors and Concurrent Applications</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="isolation.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 4. Concurrency</th>
- <td width="20%" align="right"> <a accesskey="n" href="readmodifywrite.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="isolation.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 4. Concurrency</th>
+ <td width="20%" align="right"> <a accesskey="n" href="readmodifywrite.html">Next</a></td>
</tr>
</table>
<hr />
@@ -86,7 +86,7 @@
configuring a transaction to perform uncommitted reads in
general, see <a href="isolation.html#dirtyreads">Reading Uncommitted Data</a>.
</p>
- <pre class="programlisting">#include &quot;db_cxx.h&quot;
+ <pre class="programlisting">#include "db_cxx.h"
...
@@ -105,9 +105,9 @@ int main(void)
DB_READ_UNCOMMITTED; // Enable uncommitted reads
Db *dbp = NULL;
- const char *file_name = &quot;mydb.db&quot;;
+ const char *file_name = "mydb.db";
- std::string envHome(&quot;/export1/testEnv&quot;);
+ std::string envHome("/export1/testEnv");
DbEnv myEnv(0);
Dbc *cursorp = NULL;
@@ -144,18 +144,18 @@ int main(void)
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="isolation.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="isolation.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="txnconcurrency.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="readmodifywrite.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="readmodifywrite.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Isolation </td>
+ <td width="40%" align="left" valign="top">Isolation </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Read/Modify/Write</td>
+ <td width="40%" align="right" valign="top"> Read/Modify/Write</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/CXX/txnconcurrency.html b/db/docs/gsg_txn/CXX/txnconcurrency.html
index 570a0d0ee..864b57fbc 100644
--- a/db/docs/gsg_txn/CXX/txnconcurrency.html
+++ b/db/docs/gsg_txn/CXX/txnconcurrency.html
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <title>Chapter 4. Concurrency</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Chapter 4. Concurrency</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
@@ -15,12 +15,12 @@
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
- <th colspan="3" align="center">Chapter 4. Concurrency</th>
+ <th colspan="3" align="center">Chapter 4. Concurrency</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="maxtxns.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="blocking_deadlocks.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="maxtxns.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="blocking_deadlocks.html">Next</a></td>
</tr>
</table>
<hr />
@@ -29,7 +29,7 @@
<div class="titlepage">
<div>
<div>
- <h2 class="title"><a id="txnconcurrency"></a>Chapter 4. Concurrency</h2>
+ <h2 class="title"><a id="txnconcurrency"></a>Chapter 4. Concurrency</h2>
</div>
</div>
<div></div>
@@ -185,7 +185,7 @@
</p>
<p>
Note that this term can also be taken to mean a separate process
- that is performing work &#8212; DB supports multi-process
+ that is performing work — DB supports multi-process
operations on your databases.
</p>
<p>
@@ -341,18 +341,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="maxtxns.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="maxtxns.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="blocking_deadlocks.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="blocking_deadlocks.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Configuring the Transaction Subsystem </td>
+ <td width="40%" align="left" valign="top">Configuring the Transaction Subsystem </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Locks, Blocks, and Deadlocks</td>
+ <td width="40%" align="right" valign="top"> Locks, Blocks, and Deadlocks</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/CXX/txncursor.html b/db/docs/gsg_txn/CXX/txncursor.html
index 83bc93bda..eb2289a68 100644
--- a/db/docs/gsg_txn/CXX/txncursor.html
+++ b/db/docs/gsg_txn/CXX/txncursor.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Transactional Cursors</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="usingtxns.html" title="Chapter 3. Transaction Basics" />
+ <link rel="up" href="usingtxns.html" title="Chapter 3. Transaction Basics" />
<link rel="previous" href="nestedtxn.html" title="Nested Transactions" />
<link rel="next" href="txnindices.html" title="Secondary Indices with Transaction Applications" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Transactional Cursors</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="nestedtxn.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 3. Transaction Basics</th>
- <td width="20%" align="right"> <a accesskey="n" href="txnindices.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="nestedtxn.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 3. Transaction Basics</th>
+ <td width="20%" align="right"> <a accesskey="n" href="txnindices.html">Next</a></td>
</tr>
</table>
<hr />
@@ -45,7 +45,7 @@
make sure that the cursor is closed before you either commit or
abort the transaction. For example:
</p>
- <pre class="programlisting">#include &quot;db_cxx.h&quot;
+ <pre class="programlisting">#include "db_cxx.h"
...
@@ -73,7 +73,7 @@ int main(void)
// Perform our operations. Note that we do not pass a transaction
// handle here.
- char *replacementString = &quot;new string&quot;;
+ char *replacementString = "new string";
while (cursor-&gt;get(&amp;key, &amp;data, DB_NEXT) == 0) {
data.set_data(void *)replacementString);
data.set_size((strlen(replacementString) + 1) * sizeof(char));
@@ -84,15 +84,15 @@ int main(void)
cursor-&gt;close();
txn-&gt;commit(0);
} catch (DbException &amp;e) {
- std::cerr &lt;&lt; &quot;Error in transaction: &quot;
+ std::cerr &lt;&lt; "Error in transaction: "
&lt;&lt; e.what() &lt;&lt; std::endl;
cursor-&gt;close();
txn-&gt;abort();
}
} catch(DbException &amp;e) {
- std::cerr &lt;&lt; &quot;Error opening database and environment: &quot;
- &lt;&lt; file_name &lt;&lt; &quot;, &quot;
+ std::cerr &lt;&lt; "Error opening database and environment: "
+ &lt;&lt; file_name &lt;&lt; ", "
&lt;&lt; envHome &lt;&lt; std::endl;
std::cerr &lt;&lt; e.what() &lt;&lt; std::endl;
}
@@ -105,18 +105,18 @@ int main(void)
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="nestedtxn.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="nestedtxn.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="usingtxns.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="txnindices.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="txnindices.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Nested Transactions </td>
+ <td width="40%" align="left" valign="top">Nested Transactions </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Secondary Indices with Transaction Applications</td>
+ <td width="40%" align="right" valign="top"> Secondary Indices with Transaction Applications</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/CXX/txnexample_c.html b/db/docs/gsg_txn/CXX/txnexample_c.html
index 1e1c9419c..756560432 100644
--- a/db/docs/gsg_txn/CXX/txnexample_c.html
+++ b/db/docs/gsg_txn/CXX/txnexample_c.html
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Transaction Example</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="wrapup.html" title="Chapter 6. Summary and Examples" />
- <link rel="previous" href="wrapup.html" title="Chapter 6. Summary and Examples" />
+ <link rel="up" href="wrapup.html" title="Chapter 6. Summary and Examples" />
+ <link rel="previous" href="wrapup.html" title="Chapter 6. Summary and Examples" />
<link rel="next" href="inmem_txnexample_c.html" title="In-Memory Transaction Example" />
</head>
<body>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Transaction Example</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="wrapup.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 6. Summary and Examples</th>
- <td width="20%" align="right"> <a accesskey="n" href="inmem_txnexample_c.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="wrapup.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 6. Summary and Examples</th>
+ <td width="20%" align="right"> <a accesskey="n" href="inmem_txnexample_c.html">Next</a></td>
</tr>
</table>
<hr />
@@ -106,7 +106,7 @@ void *writerThread(void *); </pre>
int
usage()
{
- std::cerr &lt;&lt; &quot; [-h &lt;database_home_directory&gt;]&quot; &lt;&lt; std::endl;
+ std::cerr &lt;&lt; " [-h &lt;database_home_directory&gt;]" &lt;&lt; std::endl;
return (EXIT_FAILURE);
} </pre>
<p>
@@ -128,10 +128,10 @@ main(int argc, char *argv[])
char *dbHomeDir;
// Application name
- const char *progName = &quot;TxnGuide&quot;;
+ const char *progName = "TxnGuide";
// Database file name
- const char *fileName = &quot;mydb.db&quot;; </pre>
+ const char *fileName = "mydb.db"; </pre>
<p>
Now we need to parse our command line. In this case, all we want is to
know where our environment directory is. If the <tt class="literal">-h</tt>
@@ -140,11 +140,11 @@ main(int argc, char *argv[])
</p>
<pre class="programlisting"> // Parse the command line arguments
#ifdef _WIN32
- dbHomeDir = &quot;.\\&quot;;
+ dbHomeDir = ".\\";
#else
- dbHomeDir = &quot;./&quot;;
+ dbHomeDir = "./";
#endif
- while ((ch = getopt(argc, argv, &quot;h:&quot;)) != EOF)
+ while ((ch = getopt(argc, argv, "h:")) != EOF)
switch (ch) {
case 'h':
dbHomeDir = optarg;
@@ -247,7 +247,7 @@ The implementation of <tt class="function">open_db()</tt> is described
(void)pthread_join(writerThreads[i], NULL);
} catch(DbException &amp;e) {
- std::cerr &lt;&lt; &quot;Error opening database environment: &quot;
+ std::cerr &lt;&lt; "Error opening database environment: "
&lt;&lt; dbHomeDir &lt;&lt; std::endl;
std::cerr &lt;&lt; e.what() &lt;&lt; std::endl;
return (EXIT_FAILURE);
@@ -270,7 +270,7 @@ The implementation of <tt class="function">open_db()</tt> is described
if (envp != NULL)
envp-&gt;close(0);
} catch(DbException &amp;e) {
- std::cerr &lt;&lt; &quot;Error closing database and environment.&quot;
+ std::cerr &lt;&lt; "Error closing database and environment."
&lt;&lt; std::endl;
std::cerr &lt;&lt; e.what() &lt;&lt; std::endl;
return (EXIT_FAILURE);
@@ -278,7 +278,7 @@ The implementation of <tt class="function">open_db()</tt> is described
// Final status message and return.
- std::cout &lt;&lt; &quot;I'm all done.&quot; &lt;&lt; std::endl;
+ std::cout &lt;&lt; "I'm all done." &lt;&lt; std::endl;
return (EXIT_SUCCESS);
} </pre>
<p>
@@ -299,9 +299,9 @@ writerThread(void *args)
{
int j, thread_num;
int max_retries = 20; // Max retry on a deadlock
- char *key_strings[] = {&quot;key 1&quot;, &quot;key 2&quot;, &quot;key 3&quot;, &quot;key 4&quot;,
- &quot;key 5&quot;, &quot;key 6&quot;, &quot;key 7&quot;, &quot;key 8&quot;,
- &quot;key 9&quot;, &quot;key 10&quot;};
+ char *key_strings[] = {"key 1", "key 2", "key 3", "key 4",
+ "key 5", "key 6", "key 7", "key 8",
+ "key 9", "key 10"};
Db *dbp = (Db *)args;
DbEnv *envp = dbp-&gt;get_env(); </pre>
@@ -374,7 +374,7 @@ writerThread(void *args)
// deadlocks, so for this workload the correct thing
// would be to perform our puts with auto commit. But
// that would excessively simplify our example, so we
- // do the &quot;wrong&quot; thing here instead.
+ // do the "wrong" thing here instead.
txn = NULL;
envp-&gt;txn_begin(NULL, &amp;txn, 0); </pre>
<p>
@@ -413,11 +413,11 @@ writerThread(void *args)
</p>
<pre class="programlisting"> // countRecords runs a cursor over the entire database.
// We do this to illustrate issues of deadlocking
- std::cout &lt;&lt; thread_num &lt;&lt; &quot; : Found &quot;
+ std::cout &lt;&lt; thread_num &lt;&lt; " : Found "
&lt;&lt; countRecords(dbp, NULL)
- &lt;&lt; &quot; records in the database.&quot; &lt;&lt; std::endl;
+ &lt;&lt; " records in the database." &lt;&lt; std::endl;
- std::cout &lt;&lt; thread_num &lt;&lt; &quot; : committing txn : &quot; &lt;&lt; i
+ std::cout &lt;&lt; thread_num &lt;&lt; " : committing txn : " &lt;&lt; i
&lt;&lt; std::endl;
// commit
@@ -426,7 +426,7 @@ writerThread(void *args)
retry = false;
txn = NULL;
} catch (DbException &amp;e) {
- std::cout &lt;&lt; &quot;Error on txn commit: &quot;
+ std::cout &lt;&lt; "Error on txn commit: "
&lt;&lt; e.what() &lt;&lt; std::endl;
} </pre>
<p>
@@ -444,27 +444,27 @@ writerThread(void *args)
// If we have retried less than max_retries,
// increment the retry count and goto retry.
if (retry_count &lt; max_retries) {
- std::cout &lt;&lt; &quot;############### Writer &quot; &lt;&lt; thread_num
- &lt;&lt; &quot;: Got DB_LOCK_DEADLOCK.\n&quot;
- &lt;&lt; &quot;Retrying write operation.&quot;
+ std::cout &lt;&lt; "############### Writer " &lt;&lt; thread_num
+ &lt;&lt; ": Got DB_LOCK_DEADLOCK.\n"
+ &lt;&lt; "Retrying write operation."
&lt;&lt; std::endl;
retry_count++;
retry = true;
} else {
// Otherwise, just give up.
- std::cerr &lt;&lt; &quot;Writer &quot; &lt;&lt; thread_num
- &lt;&lt; &quot;: Got DeadLockException and out of &quot;
- &lt;&lt; &quot;retries. Giving up.&quot; &lt;&lt; std::endl;
+ std::cerr &lt;&lt; "Writer " &lt;&lt; thread_num
+ &lt;&lt; ": Got DeadLockException and out of "
+ &lt;&lt; "retries. Giving up." &lt;&lt; std::endl;
retry = false;
}
} catch (DbException &amp;e) {
- std::cerr &lt;&lt; &quot;db put failed&quot; &lt;&lt; std::endl;
+ std::cerr &lt;&lt; "db put failed" &lt;&lt; std::endl;
std::cerr &lt;&lt; e.what() &lt;&lt; std::endl;
if (txn != NULL)
txn-&gt;abort();
retry = false;
} catch (std::exception &amp;ee) {
- std::cerr &lt;&lt; &quot;Unknown exception: &quot; &lt;&lt; ee.what() &lt;&lt; std::endl;
+ std::cerr &lt;&lt; "Unknown exception: " &lt;&lt; ee.what() &lt;&lt; std::endl;
return (0);
}
}
@@ -575,11 +575,11 @@ countRecords(Db *dbp, DbTxn *txn)
count++;
}
} catch (DbDeadlockException &amp;de) {
- std::cerr &lt;&lt; &quot;countRecords: got deadlock&quot; &lt;&lt; std::endl;
+ std::cerr &lt;&lt; "countRecords: got deadlock" &lt;&lt; std::endl;
cursorp-&gt;close();
throw de;
} catch (DbException &amp;e) {
- std::cerr &lt;&lt; &quot;countRecords error:&quot; &lt;&lt; std::endl;
+ std::cerr &lt;&lt; "countRecords error:" &lt;&lt; std::endl;
std::cerr &lt;&lt; e.what() &lt;&lt; std::endl;
}
@@ -587,7 +587,7 @@ countRecords(Db *dbp, DbTxn *txn)
try {
cursorp-&gt;close();
} catch (DbException &amp;e) {
- std::cerr &lt;&lt; &quot;countRecords: cursor close failed:&quot; &lt;&lt; std::endl;
+ std::cerr &lt;&lt; "countRecords: cursor close failed:" &lt;&lt; std::endl;
std::cerr &lt;&lt; e.what() &lt;&lt; std::endl;
}
}
@@ -637,7 +637,7 @@ openDb(Db **dbpp, const char *progname, const char *fileName,
openFlags, // Open flags
0); // File mode. Using defaults
} catch (DbException &amp;e) {
- std::cerr &lt;&lt; progname &lt;&lt; &quot;open_db: db open failed:&quot; &lt;&lt; std::endl;
+ std::cerr &lt;&lt; progname &lt;&lt; "open_db: db open failed:" &lt;&lt; std::endl;
std::cerr &lt;&lt; e.what() &lt;&lt; std::endl;
return (EXIT_FAILURE);
}
@@ -655,18 +655,18 @@ openDb(Db **dbpp, const char *progname, const char *fileName,
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="wrapup.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="wrapup.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="wrapup.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="inmem_txnexample_c.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="inmem_txnexample_c.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Chapter 6. Summary and Examples </td>
+ <td width="40%" align="left" valign="top">Chapter 6. Summary and Examples </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> In-Memory Transaction Example</td>
+ <td width="40%" align="right" valign="top"> In-Memory Transaction Example</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/CXX/txnindices.html b/db/docs/gsg_txn/CXX/txnindices.html
index e4e8502f7..b56d17ae0 100644
--- a/db/docs/gsg_txn/CXX/txnindices.html
+++ b/db/docs/gsg_txn/CXX/txnindices.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Secondary Indices with Transaction Applications</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="usingtxns.html" title="Chapter 3. Transaction Basics" />
+ <link rel="up" href="usingtxns.html" title="Chapter 3. Transaction Basics" />
<link rel="previous" href="txncursor.html" title="Transactional Cursors" />
<link rel="next" href="maxtxns.html" title="Configuring the Transaction Subsystem" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Secondary Indices with Transaction Applications</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="txncursor.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 3. Transaction Basics</th>
- <td width="20%" align="right"> <a accesskey="n" href="maxtxns.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="txncursor.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 3. Transaction Basics</th>
+ <td width="20%" align="right"> <a accesskey="n" href="maxtxns.html">Next</a></td>
</tr>
</table>
<hr />
@@ -81,7 +81,7 @@ Db my_index(&amp;envp, 0); // Secondary
// Open the secondary
my_index.open(NULL, // Transaction pointer
- &quot;my_secondary.db&quot;, // On-disk file that holds the database.
+ "my_secondary.db", // On-disk file that holds the database.
NULL, // Optional logical database name
DB_BTREE, // Database access method
DB_AUTO_COMMIT, // Open flags.
@@ -99,18 +99,18 @@ my_database.associate(NULL, // Txn id
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="txncursor.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="txncursor.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="usingtxns.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="maxtxns.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="maxtxns.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Transactional Cursors </td>
+ <td width="40%" align="left" valign="top">Transactional Cursors </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Configuring the Transaction Subsystem</td>
+ <td width="40%" align="right" valign="top"> Configuring the Transaction Subsystem</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/CXX/txnnowait.html b/db/docs/gsg_txn/CXX/txnnowait.html
index c47f486fd..3c58513ed 100644
--- a/db/docs/gsg_txn/CXX/txnnowait.html
+++ b/db/docs/gsg_txn/CXX/txnnowait.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>No Wait on Blocks</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="txnconcurrency.html" title="Chapter 4. Concurrency" />
+ <link rel="up" href="txnconcurrency.html" title="Chapter 4. Concurrency" />
<link rel="previous" href="readmodifywrite.html" title="Read/Modify/Write" />
<link rel="next" href="reversesplit.html" title="Reverse BTree Splits" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">No Wait on Blocks</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="readmodifywrite.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 4. Concurrency</th>
- <td width="20%" align="right"> <a accesskey="n" href="reversesplit.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="readmodifywrite.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 4. Concurrency</th>
+ <td width="20%" align="right"> <a accesskey="n" href="reversesplit.html">Next</a></td>
</tr>
</table>
<hr />
@@ -72,18 +72,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="readmodifywrite.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="readmodifywrite.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="txnconcurrency.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="reversesplit.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="reversesplit.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Read/Modify/Write </td>
+ <td width="40%" align="left" valign="top">Read/Modify/Write </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Reverse BTree Splits</td>
+ <td width="40%" align="right" valign="top"> Reverse BTree Splits</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/CXX/usingtxns.html b/db/docs/gsg_txn/CXX/usingtxns.html
index 906664f44..9afefac19 100644
--- a/db/docs/gsg_txn/CXX/usingtxns.html
+++ b/db/docs/gsg_txn/CXX/usingtxns.html
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <title>Chapter 3. Transaction Basics</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Chapter 3. Transaction Basics</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
@@ -15,12 +15,12 @@
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
- <th colspan="3" align="center">Chapter 3. Transaction Basics</th>
+ <th colspan="3" align="center">Chapter 3. Transaction Basics</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="envopen.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="abortresults.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="envopen.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="abortresults.html">Next</a></td>
</tr>
</table>
<hr />
@@ -29,7 +29,7 @@
<div class="titlepage">
<div>
<div>
- <h2 class="title"><a id="usingtxns"></a>Chapter 3. Transaction Basics</h2>
+ <h2 class="title"><a id="usingtxns"></a>Chapter 3. Transaction Basics</h2>
</div>
</div>
<div></div>
@@ -143,7 +143,7 @@
write operation, the transaction is aborted and the database is left in a
state as if no operations had ever been attempted in the first place.
</p>
- <pre class="programlisting">#include &quot;db_cxx.h&quot;
+ <pre class="programlisting">#include "db_cxx.h"
...
@@ -158,11 +158,11 @@ int main(void)
u_int32_t db_flags = DB_CREATE | DB_AUTO_COMMIT;
Db *dbp = NULL;
- const char *file_name = &quot;mydb.db&quot;;
- const char *keystr =&quot;thekey&quot;;
- const char *datastr = &quot;thedata&quot;;
+ const char *file_name = "mydb.db";
+ const char *keystr ="thekey";
+ const char *datastr = "thedata";
- std::string envHome(&quot;/export1/testEnv&quot;);
+ std::string envHome("/export1/testEnv");
DbEnv myEnv(0);
try {
@@ -191,14 +191,14 @@ int main(void)
db-&gt;put(txn, &amp;key, &amp;data, 0);
txn-&gt;commit(0);
} catch (DbException &amp;e) {
- std::cerr &lt;&lt; &quot;Error in transaction: &quot;
+ std::cerr &lt;&lt; "Error in transaction: "
&lt;&lt; e.what() &lt;&lt; std::endl;
txn-&gt;abort();
}
} catch(DbException &amp;e) {
- std::cerr &lt;&lt; &quot;Error opening database and environment: &quot;
- &lt;&lt; file_name &lt;&lt; &quot;, &quot;
+ std::cerr &lt;&lt; "Error opening database and environment: "
+ &lt;&lt; file_name &lt;&lt; ", "
&lt;&lt; envHome &lt;&lt; std::endl;
std::cerr &lt;&lt; e.what() &lt;&lt; std::endl;
}
@@ -208,8 +208,8 @@ int main(void)
dbp-&gt;close(0);
myEnv.close(0);
} catch(DbException &amp;e) {
- std::cerr &lt;&lt; &quot;Error closing database and environment: &quot;
- &lt;&lt; file_name &lt;&lt; &quot;, &quot;
+ std::cerr &lt;&lt; "Error closing database and environment: "
+ &lt;&lt; file_name &lt;&lt; ", "
&lt;&lt; envHome &lt;&lt; std::endl;
std::cerr &lt;&lt; e.what() &lt;&lt; std::endl;
return (EXIT_FAILURE);
@@ -347,7 +347,7 @@ int main(void)
<p>
Be aware that because your transaction commit caused database
modifications recorded in your logs to be forced to disk, your modifications
- are by default &quot;persistent&quot; in that they can be recovered in the event of
+ are by default "persistent" in that they can be recovered in the event of
an application or system failure. However, recovery time is
gated by how much data has been modified since the last
checkpoint, so for applications that perform a lot of writes,
@@ -513,21 +513,21 @@ int main(void)
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="envopen.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="envopen.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="abortresults.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="abortresults.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">Opening a Transactional Environment and
Database
-  </td>
+  </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Aborting a Transaction</td>
+ <td width="40%" align="right" valign="top"> Aborting a Transaction</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/CXX/wrapup.html b/db/docs/gsg_txn/CXX/wrapup.html
index 32370c29f..b7e945fe3 100644
--- a/db/docs/gsg_txn/CXX/wrapup.html
+++ b/db/docs/gsg_txn/CXX/wrapup.html
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <title>Chapter 6. Summary and Examples</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Chapter 6. Summary and Examples</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
@@ -15,12 +15,12 @@
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
- <th colspan="3" align="center">Chapter 6. Summary and Examples</th>
+ <th colspan="3" align="center">Chapter 6. Summary and Examples</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="logconfig.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="txnexample_c.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="logconfig.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="txnexample_c.html">Next</a></td>
</tr>
</table>
<hr />
@@ -29,7 +29,7 @@
<div class="titlepage">
<div>
<div>
- <h2 class="title"><a id="wrapup"></a>Chapter 6. Summary and Examples</h2>
+ <h2 class="title"><a id="wrapup"></a>Chapter 6. Summary and Examples</h2>
</div>
</div>
<div></div>
@@ -264,18 +264,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="logconfig.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="logconfig.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="txnexample_c.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="txnexample_c.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Configuring the Logging Subsystem </td>
+ <td width="40%" align="left" valign="top">Configuring the Logging Subsystem </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Transaction Example</td>
+ <td width="40%" align="right" valign="top"> Transaction Example</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/JAVA/BerkeleyDB-Core-JAVA-Txn.pdf b/db/docs/gsg_txn/JAVA/BerkeleyDB-Core-JAVA-Txn.pdf
index b6ade1d95..4e1f5cd57 100644
--- a/db/docs/gsg_txn/JAVA/BerkeleyDB-Core-JAVA-Txn.pdf
+++ b/db/docs/gsg_txn/JAVA/BerkeleyDB-Core-JAVA-Txn.pdf
Binary files differ
diff --git a/db/docs/gsg_txn/JAVA/abortresults.html b/db/docs/gsg_txn/JAVA/abortresults.html
index 6a1b87c22..86dcfba3c 100644
--- a/db/docs/gsg_txn/JAVA/abortresults.html
+++ b/db/docs/gsg_txn/JAVA/abortresults.html
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Aborting a Transaction</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="usingtxns.html" title="Chapter 3. Transaction Basics" />
- <link rel="previous" href="usingtxns.html" title="Chapter 3. Transaction Basics" />
+ <link rel="up" href="usingtxns.html" title="Chapter 3. Transaction Basics" />
+ <link rel="previous" href="usingtxns.html" title="Chapter 3. Transaction Basics" />
<link rel="next" href="autocommit.html" title="Auto Commit" />
</head>
<body>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Aborting a Transaction</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="usingtxns.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 3. Transaction Basics</th>
- <td width="20%" align="right"> <a accesskey="n" href="autocommit.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="usingtxns.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 3. Transaction Basics</th>
+ <td width="20%" align="right"> <a accesskey="n" href="autocommit.html">Next</a></td>
</tr>
</table>
<hr />
@@ -76,18 +76,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="usingtxns.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="usingtxns.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="usingtxns.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="autocommit.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="autocommit.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Chapter 3. Transaction Basics </td>
+ <td width="40%" align="left" valign="top">Chapter 3. Transaction Basics </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Auto Commit</td>
+ <td width="40%" align="right" valign="top"> Auto Commit</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/JAVA/architectrecovery.html b/db/docs/gsg_txn/JAVA/architectrecovery.html
index d5bc9a712..3d8157d1f 100644
--- a/db/docs/gsg_txn/JAVA/architectrecovery.html
+++ b/db/docs/gsg_txn/JAVA/architectrecovery.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Designing Your Application for Recovery</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="filemanagement.html" title="Chapter 5. Managing DB Files" />
+ <link rel="up" href="filemanagement.html" title="Chapter 5. Managing DB Files" />
<link rel="previous" href="recovery.html" title="Recovery Procedures" />
<link rel="next" href="hotfailover.html" title="Using Hot Failovers" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Designing Your Application for Recovery</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="recovery.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 5. Managing DB Files</th>
- <td width="20%" align="right"> <a accesskey="n" href="hotfailover.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="recovery.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 5. Managing DB Files</th>
+ <td width="20%" align="right"> <a accesskey="n" href="hotfailover.html">Next</a></td>
</tr>
</table>
<hr />
@@ -155,7 +155,7 @@
handles. Recovery should be single threaded because when
recovery is run against an environment, it is
deleted and then recreated. This will cause all
- other processes and threads to &quot;fail&quot; when they
+ other processes and threads to "fail" when they
attempt operations against the newly recovered
environment. If all threads run recovery
when they start up, then it is likely that some
@@ -258,7 +258,7 @@
<div></div>
</div>
<p>
- One way to handle multi-process recovery is for every process to &quot;register&quot; its environment. In
+ One way to handle multi-process recovery is for every process to "register" its environment. In
doing so, the process gains the ability to see if any other applications are using the
environment and, if so, whether they have suffered an abnormal termination. If an abnormal
termination is detected, the process runs recovery; otherwise, it does not.
@@ -318,18 +318,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="recovery.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="recovery.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="filemanagement.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="hotfailover.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="hotfailover.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Recovery Procedures </td>
+ <td width="40%" align="left" valign="top">Recovery Procedures </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Using Hot Failovers</td>
+ <td width="40%" align="right" valign="top"> Using Hot Failovers</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/JAVA/autocommit.html b/db/docs/gsg_txn/JAVA/autocommit.html
index 22d75ac0f..e77df5ea2 100644
--- a/db/docs/gsg_txn/JAVA/autocommit.html
+++ b/db/docs/gsg_txn/JAVA/autocommit.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Auto Commit</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="usingtxns.html" title="Chapter 3. Transaction Basics" />
+ <link rel="up" href="usingtxns.html" title="Chapter 3. Transaction Basics" />
<link rel="previous" href="abortresults.html" title="Aborting a Transaction" />
<link rel="next" href="nestedtxn.html" title="Nested Transactions" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Auto Commit</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="abortresults.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 3. Transaction Basics</th>
- <td width="20%" align="right"> <a accesskey="n" href="nestedtxn.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="abortresults.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 3. Transaction Basics</th>
+ <td width="20%" align="right"> <a accesskey="n" href="nestedtxn.html">Next</a></td>
</tr>
</table>
<hr />
@@ -95,7 +95,7 @@ try {
myEnvConfig.setInitializeLogging(true);
myEnvConfig.setTransactional(true);
- myEnv = new Environment(new File(&quot;/my/env/home&quot;),
+ myEnv = new Environment(new File("/my/env/home"),
myEnvConfig);
// Open the database.
@@ -103,15 +103,15 @@ try {
dbConfig.setTransactional(true);
dbConfig.setType(DatabaseType.BTREE);
myDatabase = myEnv.openDatabase(null, // txn handle
- &quot;sampleDatabase&quot;, // db file name
+ "sampleDatabase", // db file name
null, // db name
dbConfig);
- String keyString = &quot;thekey&quot;;
- String dataString = &quot;thedata&quot;;
+ String keyString = "thekey";
+ String dataString = "thedata";
DatabaseEntry key =
- new DatabaseEntry(keyString.getBytes(&quot;UTF-8&quot;));
+ new DatabaseEntry(keyString.getBytes("UTF-8"));
DatabaseEntry data =
- new DatabaseEntry(dataString.getBytes(&quot;UTF-8&quot;));
+ new DatabaseEntry(dataString.getBytes("UTF-8"));
// Perform the write. Because the database was opened to
// support transactions, this write is performed using auto commit.
@@ -125,18 +125,18 @@ try {
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="abortresults.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="abortresults.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="usingtxns.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="nestedtxn.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="nestedtxn.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Aborting a Transaction </td>
+ <td width="40%" align="left" valign="top">Aborting a Transaction </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Nested Transactions</td>
+ <td width="40%" align="right" valign="top"> Nested Transactions</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/JAVA/backuprestore.html b/db/docs/gsg_txn/JAVA/backuprestore.html
index efc75c030..0e082eb5b 100644
--- a/db/docs/gsg_txn/JAVA/backuprestore.html
+++ b/db/docs/gsg_txn/JAVA/backuprestore.html
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Backup Procedures</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="filemanagement.html" title="Chapter 5. Managing DB Files" />
- <link rel="previous" href="filemanagement.html" title="Chapter 5. Managing DB Files" />
+ <link rel="up" href="filemanagement.html" title="Chapter 5. Managing DB Files" />
+ <link rel="previous" href="filemanagement.html" title="Chapter 5. Managing DB Files" />
<link rel="next" href="recovery.html" title="Recovery Procedures" />
</head>
<body>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Backup Procedures</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="filemanagement.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 5. Managing DB Files</th>
- <td width="20%" align="right"> <a accesskey="n" href="recovery.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="filemanagement.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 5. Managing DB Files</th>
+ <td width="20%" align="right"> <a accesskey="n" href="recovery.html">Next</a></td>
</tr>
</table>
<hr />
@@ -317,18 +317,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="filemanagement.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="filemanagement.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="filemanagement.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="recovery.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="recovery.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Chapter 5. Managing DB Files </td>
+ <td width="40%" align="left" valign="top">Chapter 5. Managing DB Files </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Recovery Procedures</td>
+ <td width="40%" align="right" valign="top"> Recovery Procedures</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/JAVA/blocking_deadlocks.html b/db/docs/gsg_txn/JAVA/blocking_deadlocks.html
index 4677860bd..e06806df2 100644
--- a/db/docs/gsg_txn/JAVA/blocking_deadlocks.html
+++ b/db/docs/gsg_txn/JAVA/blocking_deadlocks.html
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Locks, Blocks, and Deadlocks</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="txnconcurrency.html" title="Chapter 4. Concurrency" />
- <link rel="previous" href="txnconcurrency.html" title="Chapter 4. Concurrency" />
+ <link rel="up" href="txnconcurrency.html" title="Chapter 4. Concurrency" />
+ <link rel="previous" href="txnconcurrency.html" title="Chapter 4. Concurrency" />
<link rel="next" href="lockingsubsystem.html" title="The Locking Subsystem" />
</head>
<body>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Locks, Blocks, and Deadlocks</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="txnconcurrency.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 4. Concurrency</th>
- <td width="20%" align="right"> <a accesskey="n" href="lockingsubsystem.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="txnconcurrency.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 4. Concurrency</th>
+ <td width="20%" align="right"> <a accesskey="n" href="lockingsubsystem.html">Next</a></td>
</tr>
</table>
<hr />
@@ -440,7 +440,7 @@
minimize the time you keep
transactional cursors
opened, or reduce your isolation
- levels &#8211; see below.
+ levels – see below.
</p>
</li>
<li>
@@ -655,18 +655,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="txnconcurrency.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="txnconcurrency.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="txnconcurrency.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="lockingsubsystem.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="lockingsubsystem.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Chapter 4. Concurrency </td>
+ <td width="40%" align="left" valign="top">Chapter 4. Concurrency </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> The Locking Subsystem</td>
+ <td width="40%" align="right" valign="top"> The Locking Subsystem</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/JAVA/enabletxn.html b/db/docs/gsg_txn/JAVA/enabletxn.html
index 77ed3f571..4fab809cb 100644
--- a/db/docs/gsg_txn/JAVA/enabletxn.html
+++ b/db/docs/gsg_txn/JAVA/enabletxn.html
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <title>Chapter 2. Enabling Transactions</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Chapter 2. Enabling Transactions</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
@@ -15,12 +15,12 @@
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
- <th colspan="3" align="center">Chapter 2. Enabling Transactions</th>
+ <th colspan="3" align="center">Chapter 2. Enabling Transactions</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="perftune-intro.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="envopen.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="perftune-intro.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="envopen.html">Next</a></td>
</tr>
</table>
<hr />
@@ -29,7 +29,7 @@
<div class="titlepage">
<div>
<div>
- <h2 class="title"><a id="enabletxn"></a>Chapter 2. Enabling Transactions</h2>
+ <h2 class="title"><a id="enabletxn"></a>Chapter 2. Enabling Transactions</h2>
</div>
</div>
<div></div>
@@ -204,6 +204,7 @@
<span><a href="inmem_txnexample_java.html">In-Memory Transaction Example</a>.</span>
+
</p>
<div class="sect2" lang="en" xml:lang="en">
<div class="titlepage">
@@ -219,7 +220,7 @@
locate its database files, log files, and region files. If these
are stored in the filesystem, then you must tell DB where
they are located (a number of mechanisms exist that allow you to
- identify the location of these files &#8211; see below). Otherwise,
+ identify the location of these files – see below). Otherwise,
by default they are located in the current working directory.
</p>
<div class="sect3" lang="en" xml:lang="en">
@@ -638,6 +639,7 @@
<a href="inmem_txnexample_java.html">In-Memory Transaction Example</a>.)
</span>
+
</p>
</div>
<div class="sect3" lang="en" xml:lang="en">
@@ -801,7 +803,7 @@
</span>
for the environment open. And, of course, if you must
use <tt class="literal">setuid</tt>, then make sure you use
- the weakest uid possible &#8211; preferably one that is
+ the weakest uid possible – preferably one that is
used only by the application itself.
</p>
</li>
@@ -853,18 +855,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="perftune-intro.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="perftune-intro.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="envopen.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="envopen.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Performance Tuning </td>
+ <td width="40%" align="left" valign="top">Performance Tuning </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Opening a Transactional Environment and
+ <td width="40%" align="right" valign="top"> Opening a Transactional Environment and
Database
</td>
diff --git a/db/docs/gsg_txn/JAVA/envopen.html b/db/docs/gsg_txn/JAVA/envopen.html
index 1e207c1f7..ee0ac651a 100644
--- a/db/docs/gsg_txn/JAVA/envopen.html
+++ b/db/docs/gsg_txn/JAVA/envopen.html
@@ -1,8 +1,8 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Opening a Transactional Environment and
Database
@@ -10,9 +10,9 @@
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="enabletxn.html" title="Chapter 2. Enabling Transactions" />
- <link rel="previous" href="enabletxn.html" title="Chapter 2. Enabling Transactions" />
- <link rel="next" href="usingtxns.html" title="Chapter 3. Transaction Basics" />
+ <link rel="up" href="enabletxn.html" title="Chapter 2. Enabling Transactions" />
+ <link rel="previous" href="enabletxn.html" title="Chapter 2. Enabling Transactions" />
+ <link rel="next" href="usingtxns.html" title="Chapter 3. Transaction Basics" />
</head>
<body>
<div class="navheader">
@@ -24,9 +24,9 @@
</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="enabletxn.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 2. Enabling Transactions</th>
- <td width="20%" align="right"> <a accesskey="n" href="usingtxns.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="enabletxn.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 2. Enabling Transactions</th>
+ <td width="20%" align="right"> <a accesskey="n" href="usingtxns.html">Next</a></td>
</tr>
</table>
<hr />
@@ -69,7 +69,7 @@ try {
myEnvConfig.setInitializeLogging(true);
myEnvConfig.setTransactional(true);
- myEnv = new Environment(new File(&quot;/my/env/home&quot;),
+ myEnv = new Environment(new File("/my/env/home"),
myEnvConfig);
} catch (DatabaseException de) {
@@ -111,7 +111,7 @@ try {
myEnvConfig.setInitializeLogging(true);
myEnvConfig.setTransactional(true);
- myEnv = new Environment(new File(&quot;/my/env/home&quot;),
+ myEnv = new Environment(new File("/my/env/home"),
myEnvConfig);
<b class="userinput"><tt>// Open the database.
@@ -119,7 +119,7 @@ try {
dbConfig.setTransactional(true);
dbConfig.setType(DatabaseType.BTREE);
myDatabase = myEnv.openDatabase(null, // txn handle
- &quot;sampleDatabase&quot;, // db file name
+ "sampleDatabase", // db file name
null, // db name
dbConfig);</tt></b>
} catch (DatabaseException de) {
@@ -140,18 +140,18 @@ try {
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="enabletxn.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="enabletxn.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="enabletxn.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="usingtxns.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="usingtxns.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Chapter 2. Enabling Transactions </td>
+ <td width="40%" align="left" valign="top">Chapter 2. Enabling Transactions </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Chapter 3. Transaction Basics</td>
+ <td width="40%" align="right" valign="top"> Chapter 3. Transaction Basics</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/JAVA/filemanagement.html b/db/docs/gsg_txn/JAVA/filemanagement.html
index ab748bffa..2184a809b 100644
--- a/db/docs/gsg_txn/JAVA/filemanagement.html
+++ b/db/docs/gsg_txn/JAVA/filemanagement.html
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <title>Chapter 5. Managing DB Files</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Chapter 5. Managing DB Files</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
@@ -15,12 +15,12 @@
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
- <th colspan="3" align="center">Chapter 5. Managing DB Files</th>
+ <th colspan="3" align="center">Chapter 5. Managing DB Files</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="reversesplit.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="backuprestore.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="reversesplit.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="backuprestore.html">Next</a></td>
</tr>
</table>
<hr />
@@ -29,7 +29,7 @@
<div class="titlepage">
<div>
<div>
- <h2 class="title"><a id="filemanagement"></a>Chapter 5. Managing DB Files</h2>
+ <h2 class="title"><a id="filemanagement"></a>Chapter 5. Managing DB Files</h2>
</div>
</div>
<div></div>
@@ -331,11 +331,11 @@ public class CheckPointer extends Thread
myEnv.checkpoint(cpc);
sleep(60000);
} catch (DatabaseException de) {
- System.err.println(&quot;Checkpoint error: &quot; +
+ System.err.println("Checkpoint error: " +
de.toString());
} catch (InterruptedException e) {
// Should never get here
- System.err.println(&quot;got interrupted exception&quot;);
+ System.err.println("got interrupted exception");
}
}
}
@@ -360,13 +360,13 @@ import java.io.FileNotFoundException;
public class TryCheckPoint {
- private static String myEnvPath = &quot;./&quot;;
+ private static String myEnvPath = "./";
private static Environment myEnv = null;
private static void usage() {
- System.out.println(&quot;TxnGuide [-h &lt;env directory&gt;]&quot;);
+ System.out.println("TxnGuide [-h &lt;env directory&gt;]");
System.exit(-1);
}
@@ -394,17 +394,17 @@ public class TryCheckPoint {
cp.join();
} catch (Exception e) {
- System.err.println(&quot;TryCheckPoint: &quot; + e.toString());
+ System.err.println("TryCheckPoint: " + e.toString());
e.printStackTrace();
} finally {
closeEnv();
}
- System.out.println(&quot;All done.&quot;);
+ System.out.println("All done.");
}
// Open an environment and databases
private static void openEnv() throws DatabaseException {
- System.out.println(&quot;opening env&quot;);
+ System.out.println("opening env");
// Set up the environment.
EnvironmentConfig myEnvConfig = new EnvironmentConfig();
@@ -425,19 +425,19 @@ public class TryCheckPoint {
// Skipping the database opens and closes for brevity
} catch (FileNotFoundException fnfe) {
- System.err.println(&quot;openEnv: &quot; + fnfe.toString());
+ System.err.println("openEnv: " + fnfe.toString());
System.exit(-1);
}
}
// Close the environment and databases
private static void closeEnv() {
- System.out.println(&quot;Closing env&quot;);
+ System.out.println("Closing env");
if (myEnv != null ) {
try {
myEnv.close();
} catch (DatabaseException e) {
- System.err.println(&quot;closeEnv: &quot; + e.toString());
+ System.err.println("closeEnv: " + e.toString());
e.printStackTrace();
}
}
@@ -447,7 +447,7 @@ public class TryCheckPoint {
private static void parseArgs(String args[]) {
for(int i = 0; i &lt; args.length; ++i) {
- if (args[i].startsWith(&quot;-&quot;)) {
+ if (args[i].startsWith("-")) {
switch(args[i].charAt(1)) {
case 'h':
myEnvPath = new String(args[++i]);
@@ -465,18 +465,18 @@ public class TryCheckPoint {
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="reversesplit.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="reversesplit.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="backuprestore.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="backuprestore.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Reverse BTree Splits </td>
+ <td width="40%" align="left" valign="top">Reverse BTree Splits </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Backup Procedures</td>
+ <td width="40%" align="right" valign="top"> Backup Procedures</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/JAVA/hotfailover.html b/db/docs/gsg_txn/JAVA/hotfailover.html
index fa3dcc152..9c6258f5f 100644
--- a/db/docs/gsg_txn/JAVA/hotfailover.html
+++ b/db/docs/gsg_txn/JAVA/hotfailover.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Using Hot Failovers</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="filemanagement.html" title="Chapter 5. Managing DB Files" />
+ <link rel="up" href="filemanagement.html" title="Chapter 5. Managing DB Files" />
<link rel="previous" href="architectrecovery.html" title="Designing Your Application for Recovery" />
<link rel="next" href="logfileremoval.html" title="Removing Log Files" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Using Hot Failovers</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="architectrecovery.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 5. Managing DB Files</th>
- <td width="20%" align="right"> <a accesskey="n" href="logfileremoval.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="architectrecovery.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 5. Managing DB Files</th>
+ <td width="20%" align="right"> <a accesskey="n" href="logfileremoval.html">Next</a></td>
</tr>
</table>
<hr />
@@ -191,18 +191,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="architectrecovery.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="architectrecovery.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="filemanagement.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="logfileremoval.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="logfileremoval.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Designing Your Application for Recovery </td>
+ <td width="40%" align="left" valign="top">Designing Your Application for Recovery </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Removing Log Files</td>
+ <td width="40%" align="right" valign="top"> Removing Log Files</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/JAVA/index.html b/db/docs/gsg_txn/JAVA/index.html
index e5d1857d4..f284d7e45 100644
--- a/db/docs/gsg_txn/JAVA/index.html
+++ b/db/docs/gsg_txn/JAVA/index.html
@@ -1,8 +1,8 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Getting Started with Berkeley DB Transaction Processing</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
@@ -16,9 +16,9 @@
<th colspan="3" align="center">Getting Started with Berkeley DB Transaction Processing</th>
</tr>
<tr>
- <td width="20%" align="left"> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="preface.html">Next</a></td>
+ <td width="20%" align="left"> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="preface.html">Next</a></td>
</tr>
</table>
<hr />
@@ -27,7 +27,7 @@
<div class="titlepage">
<div>
<div>
- <h1 class="title"><a id="id650934"></a>Getting Started with Berkeley DB Transaction Processing</h1>
+ <h1 class="title"><a id="id614000"></a>Getting Started with Berkeley DB Transaction Processing</h1>
</div>
<div>
<div class="legalnotice">
@@ -37,7 +37,7 @@
<p>
This documentation is distributed under an open source license.
You may review the terms of this license at:
- <a href="http://www.oracle.com/technology/software/products/berkeley-db/htdocs/oslicensing.html" target="_top">http://www.oracle.com/technology/software/products/berkeley-db/htdocs/oslicensing.html</a>
+ <a href="http://www.oracle.com/technology/software/products/berkeley-db/htdocs/oslicense.html" target="_top">http://www.oracle.com/technology/software/products/berkeley-db/htdocs/oslicense.html</a>
</p>
@@ -47,12 +47,12 @@
and
Sleepycat are trademarks or registered trademarks of
- Oracle Corporation. All rights to these marks are reserved.
+ Oracle. All rights to these marks are reserved.
No third-party use is permitted without the
- express prior written consent of Oracle Corporation.
+ express prior written consent of Oracle.
</p>
<p>
- <span class="trademark">Java</span>&#8482; and all Java-based marks are a trademark
+ <span class="trademark">Java</span>â„¢ and all Java-based marks are a trademark
or registered trademark of Sun Microsystems,
Inc, in the United States and other countries.
</p>
@@ -66,7 +66,7 @@
</div>
</div>
<div>
- <p class="pubdate">9/20/2006</p>
+ <p class="pubdate">6/30/2007</p>
</div>
</div>
<div></div>
@@ -534,14 +534,14 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"> </td>
- <td width="20%" align="center"> </td>
- <td width="40%" align="right"> <a accesskey="n" href="preface.html">Next</a></td>
+ <td width="40%" align="left"> </td>
+ <td width="20%" align="center"> </td>
+ <td width="40%" align="right"> <a accesskey="n" href="preface.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top"> </td>
- <td width="20%" align="center"> </td>
- <td width="40%" align="right" valign="top"> Preface</td>
+ <td width="40%" align="left" valign="top"> </td>
+ <td width="20%" align="center"> </td>
+ <td width="40%" align="right" valign="top"> Preface</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/JAVA/inmem_txnexample_java.html b/db/docs/gsg_txn/JAVA/inmem_txnexample_java.html
index 3cc8bb0d9..865132a43 100644
--- a/db/docs/gsg_txn/JAVA/inmem_txnexample_java.html
+++ b/db/docs/gsg_txn/JAVA/inmem_txnexample_java.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>In-Memory Transaction Example</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="wrapup.html" title="Chapter 6. Summary and Examples" />
+ <link rel="up" href="wrapup.html" title="Chapter 6. Summary and Examples" />
<link rel="previous" href="txnexample_java.html" title="Transaction Example" />
</head>
<body>
@@ -17,9 +17,9 @@
<th colspan="3" align="center">In-Memory Transaction Example</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="txnexample_java.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 6. Summary and Examples</th>
- <td width="20%" align="right"> </td>
+ <td width="20%" align="left"><a accesskey="p" href="txnexample_java.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 6. Summary and Examples</th>
+ <td width="20%" align="right"> </td>
</tr>
</table>
<hr />
@@ -54,7 +54,7 @@
<p>
Refrain from specifying a home directory when you open your
environment. The exception to this is if you are using the
- <tt class="literal">DB_CONFIG</tt> configuration file &#8212; in
+ <tt class="literal">DB_CONFIG</tt> configuration file — in
that case you must identify the environment's home
directory so that the configuration file can be found.
</p>
@@ -112,7 +112,7 @@
</p>
<p>
To begin, we simplify the beginning of the class a bit. We eliminate some variables that the example no longer
- needs &#8212; specifically variables having to do with the location of the environment and the names of the
+ needs — specifically variables having to do with the location of the environment and the names of the
database files.
We can also remove our <tt class="function">usage()</tt> method because we no
longer require any command line arguments.
@@ -170,12 +170,12 @@ import java.io.FileNotFoundException;
threadArray[i].join();
}
} catch (Exception e) {
- System.err.println(&quot;<b class="userinput"><tt>TxnGuideInMemory</tt></b>: &quot; + e.toString());
+ System.err.println("<b class="userinput"><tt>TxnGuideInMemory</tt></b>: " + e.toString());
e.printStackTrace();
} finally {
closeEnv();
}
- System.out.println(&quot;All done.&quot;);
+ System.out.println("All done.");
} </pre>
<p>
Next we open our environment as always. However, in doing so we:
@@ -203,7 +203,7 @@ import java.io.FileNotFoundException;
</ul>
</div>
<pre class="programlisting"> private static void openEnv() throws DatabaseException {
- System.out.println(&quot;opening env&quot;);
+ System.out.println("opening env");
// Set up the environment.
EnvironmentConfig myEnvConfig = new EnvironmentConfig();
@@ -288,7 +288,7 @@ import java.io.FileNotFoundException;
null, // Database name,
myDbConfig);
} catch (FileNotFoundException fnfe) {
- System.err.println(&quot;openEnv: &quot; + fnfe.toString());
+ System.err.println("openEnv: " + fnfe.toString());
System.exit(-1);
}
} </pre>
@@ -298,12 +298,12 @@ import java.io.FileNotFoundException;
method from the application, because we no longer need it.
</p>
<pre class="programlisting"> private static void closeEnv() {
- System.out.println(&quot;Closing env&quot;);
+ System.out.println("Closing env");
if (myDb != null ) {
try {
myDb.close();
} catch (DatabaseException e) {
- System.err.println(&quot;closeEnv: myDb: &quot; +
+ System.err.println("closeEnv: myDb: " +
e.toString());
e.printStackTrace();
}
@@ -313,7 +313,7 @@ import java.io.FileNotFoundException;
try {
myClassDb.close();
} catch (DatabaseException e) {
- System.err.println(&quot;closeEnv: myClassDb: &quot; +
+ System.err.println("closeEnv: myClassDb: " +
e.toString());
e.printStackTrace();
}
@@ -323,7 +323,7 @@ import java.io.FileNotFoundException;
try {
myEnv.close();
} catch (DatabaseException e) {
- System.err.println(&quot;closeEnv: &quot; + e.toString());
+ System.err.println("closeEnv: " + e.toString());
e.printStackTrace();
}
}
@@ -378,10 +378,10 @@ public class DBWriter extends Thread
private static final int MAX_RETRY = 20;
- private static String[] keys = {&quot;key 1&quot;, &quot;key 2&quot;, &quot;key 3&quot;,
- &quot;key 4&quot;, &quot;key 5&quot;, &quot;key 6&quot;,
- &quot;key 7&quot;, &quot;key 8&quot;, &quot;key 9&quot;,
- &quot;key 10&quot;};
+ private static String[] keys = {"key 1", "key 2", "key 3",
+ "key 4", "key 5", "key 6",
+ "key 7", "key 8", "key 9",
+ "key 10"};
// Constructor. Get our DB handles from here
@@ -431,40 +431,40 @@ public class DBWriter extends Thread
// commit
System.out.println(getName() +
- &quot; : committing txn : &quot; + i);
+ " : committing txn : " + i);
- System.out.println(getName() + &quot; : Found &quot; +
- countRecords(<b class="userinput"><tt>txn</tt></b>) + &quot; records in the database.&quot;);
+ System.out.println(getName() + " : Found " +
+ countRecords(<b class="userinput"><tt>txn</tt></b>) + " records in the database.");
try {
txn.commit();
txn = null;
} catch (DatabaseException e) {
- System.err.println(&quot;Error on txn commit: &quot; +
+ System.err.println("Error on txn commit: " +
e.toString());
}
retry = false;
} catch (DeadlockException de) {
- System.out.println(&quot;################# &quot; + getName() +
- &quot; : caught deadlock&quot;);
+ System.out.println("################# " + getName() +
+ " : caught deadlock");
// retry if necessary
if (retry_count &lt; MAX_RETRY) {
System.err.println(getName() +
- &quot; : Retrying operation.&quot;);
+ " : Retrying operation.");
retry = true;
retry_count++;
} else {
System.err.println(getName() +
- &quot; : out of retries. Giving up.&quot;);
+ " : out of retries. Giving up.");
retry = false;
}
} catch (DatabaseException e) {
// abort and don't retry
retry = false;
System.err.println(getName() +
- &quot; : caught exception: &quot; + e.toString());
+ " : caught exception: " + e.toString());
System.err.println(getName() +
- &quot; : errno: &quot; + e.getErrno());
+ " : errno: " + e.getErrno());
e.printStackTrace();
} finally {
if (txn != null) {
@@ -472,7 +472,7 @@ public class DBWriter extends Thread
txn.abort();
} catch (Exception e) {
System.err.println(
- &quot;Error aborting transaction: &quot; +
+ "Error aborting transaction: " +
e.toString());
e.printStackTrace();
}
@@ -542,18 +542,18 @@ public class DBWriter extends Thread
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="txnexample_java.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="txnexample_java.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="wrapup.html">Up</a>
</td>
- <td width="40%" align="right"> </td>
+ <td width="40%" align="right"> </td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Transaction Example </td>
+ <td width="40%" align="left" valign="top">Transaction Example </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> </td>
+ <td width="40%" align="right" valign="top"> </td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/JAVA/introduction.html b/db/docs/gsg_txn/JAVA/introduction.html
index d2315cd21..949c78eb7 100644
--- a/db/docs/gsg_txn/JAVA/introduction.html
+++ b/db/docs/gsg_txn/JAVA/introduction.html
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <title>Chapter 1. Introduction</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Chapter 1. Introduction</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
@@ -15,12 +15,12 @@
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
- <th colspan="3" align="center">Chapter 1. Introduction</th>
+ <th colspan="3" align="center">Chapter 1. Introduction</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="preface.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="recovery-intro.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="preface.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="recovery-intro.html">Next</a></td>
</tr>
</table>
<hr />
@@ -29,7 +29,7 @@
<div class="titlepage">
<div>
<div>
- <h2 class="title"><a id="introduction"></a>Chapter 1. Introduction</h2>
+ <h2 class="title"><a id="introduction"></a>Chapter 1. Introduction</h2>
</div>
</div>
<div></div>
@@ -213,9 +213,27 @@
lose whatever data you were committing at the
time of the failure, but your databases will be otherwise unaffected.
</p>
+ <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
+ <h3 class="title">Note</h3>
+ <p>
+ Be aware that many disks have a disk write cache and on
+ some systems it is enabled by default. This means that
+ a transaction can have committed, and to your
+ application the data may appear to reside on disk, but
+ the data may in fact reside only in the write cache at
+ that time. This means that if the disk write cache is
+ enabled and there is no battery backup for it, data can
+ be lost after an OS crash even when maximum durability
+ mode is in use. For maximum durability, disable the
+ disk write cache or use a disk write cache with a
+ battery backup.
+ </p>
+ </div>
<p>
Of course, if your <span class="emphasis"><em>disk</em></span> fails, then the transactional benefits described in this book
are only as good as the backups you have taken.
+
+
<span>
By spreading your data and log files across separate disks,
you can minimize the risk of data loss due to a disk failure, but even in this case it is possible to
@@ -356,7 +374,7 @@
include code for detecting and responding to deadlocks.
Note that this requirement is not
<span class="emphasis"><em>specific</em></span> to transactions
- &#8211; you can certainly write concurrent
+ – you can certainly write concurrent
non-transactional DB applications. Further, not
every transactional application uses concurrency and
so not every transactional application must
@@ -404,7 +422,7 @@
you can configure your application to see uncommitted reads, which means
that one transaction can see data that has been modified but not yet
committed by another transaction. Doing this might mean your
- transaction reads data &quot;dirtied&quot; by another transaction,
+ transaction reads data "dirtied" by another transaction,
but which subsequently might change before that
other transaction commits its changes.
On the other hand, lowering your isolation
@@ -422,18 +440,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="preface.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="preface.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="recovery-intro.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="recovery-intro.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Preface </td>
+ <td width="40%" align="left" valign="top">Preface </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Recoverability</td>
+ <td width="40%" align="right" valign="top"> Recoverability</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/JAVA/isolation.html b/db/docs/gsg_txn/JAVA/isolation.html
index 3e4a7bc2a..9992cd3e3 100644
--- a/db/docs/gsg_txn/JAVA/isolation.html
+++ b/db/docs/gsg_txn/JAVA/isolation.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Isolation</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="txnconcurrency.html" title="Chapter 4. Concurrency" />
+ <link rel="up" href="txnconcurrency.html" title="Chapter 4. Concurrency" />
<link rel="previous" href="lockingsubsystem.html" title="The Locking Subsystem" />
<link rel="next" href="txn_ccursor.html" title="Transactional Cursors and Concurrent Applications" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Isolation</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="lockingsubsystem.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 4. Concurrency</th>
- <td width="20%" align="right"> <a accesskey="n" href="txn_ccursor.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="lockingsubsystem.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 4. Concurrency</th>
+ <td width="20%" align="right"> <a accesskey="n" href="txn_ccursor.html">Next</a></td>
</tr>
</table>
<hr />
@@ -270,7 +270,7 @@ try {
myEnvConfig.setInitializeLocking(true);
myEnvConfig.setInitializeLogging(true);
- myEnv = new Environment(new File(&quot;/my/env/home&quot;),
+ myEnv = new Environment(new File("/my/env/home"),
myEnvConfig);
// Open the database.
@@ -279,7 +279,7 @@ try {
dbConfig.setType(DatabaseType.BTREE);
dbConfig.setReadUncommitted(true); // Enable uncommitted reads.
myDatabase = myEnv.openDatabase(null, // txn handle
- &quot;sampleDatabase&quot;, // db file name
+ "sampleDatabase", // db file name
null, // db name
dbConfig);
TransactionConfig txnConfig = new TransactionConfig();
@@ -319,7 +319,7 @@ try {
txn = myEnv.beginTransaction(null, null);
DatabaseEntry theKey =
- new DatabaseEntry((new String(&quot;theKey&quot;)).getBytes(&quot;UTF-8&quot;));
+ new DatabaseEntry((new String("theKey")).getBytes("UTF-8"));
DatabaseEntry theData = new DatabaseEntry();
myDb.get(txn, theKey, theData, LockMode.READ_UNCOMMITTED);
@@ -427,7 +427,7 @@ try {
myEnvConfig.setInitializeLocking(true);
myEnvConfig.setInitializeLogging(true);
- myEnv = new Environment(new File(&quot;/my/env/home&quot;),
+ myEnv = new Environment(new File("/my/env/home"),
myEnvConfig);
// Open the database.
@@ -440,15 +440,15 @@ try {
dbConfig.setType(DatabaseType.BTREE);
myDatabase = myEnv.openDatabase(null, // txn handle
- &quot;sampleDatabase&quot;, // db file name
+ "sampleDatabase", // db file name
null, // db name
dbConfig);
- String keyString = &quot;thekey&quot;;
- String dataString = &quot;thedata&quot;;
+ String keyString = "thekey";
+ String dataString = "thedata";
DatabaseEntry key =
- new DatabaseEntry(keyString.getBytes(&quot;UTF-8&quot;));
+ new DatabaseEntry(keyString.getBytes("UTF-8"));
DatabaseEntry data =
- new DatabaseEntry(dataString.getBytes(&quot;UTF-8&quot;));
+ new DatabaseEntry(dataString.getBytes("UTF-8"));
TransactionConfig txnConfig = new TransactionConfig();
@@ -492,7 +492,7 @@ try {
txn = myEnv.beginTransaction(null, null);
DatabaseEntry theKey =
- new DatabaseEntry((new String(&quot;theKey&quot;)).getBytes(&quot;UTF-8&quot;));
+ new DatabaseEntry((new String("theKey")).getBytes("UTF-8"));
DatabaseEntry theData = new DatabaseEntry();
myDb.get(txn, theKey, theData, LockMode.READ_COMMITTED);
@@ -514,11 +514,15 @@ try {
important side effect of this isolation level is that
read operations obtain read locks on database pages,
and then hold those locks until the read operation is
- completed. When you are using transactional cursors, this
+ completed.
+
+ <span>
+ When you are using transactional cursors, this
means that read locks are held until the transaction commits or
aborts. In that case, over time a transactional cursor
can gradually block all other transactions from writing
to the database.
+ </span>
</p>
<p>
You can avoid this by using snapshot isolation.
@@ -526,7 +530,7 @@ try {
concurrency control</em></span> to guarantee
repeatable reads. What this means is that every time a
writer would take a read lock on a page, instead a copy of
- the page is made and the writer operations on that page
+ the page is made and the writer operates on that page
copy. This frees other writers from blocking due to a
read lock held on the page.
</p>
@@ -549,7 +553,7 @@ try {
<p>
If the cache becomes full of page copies before old
copies can be discarded, additional I/O will occur as
- pages are written to temporary &quot;freezer&quot; files on disk.
+ pages are written to temporary "freezer" files on disk.
This can substantially reduce throughput, and should be
avoided if possible by configuring a large cache and
keeping snapshot isolation transactions short.
@@ -578,133 +582,7 @@ try {
In addition to an increased cache size, you may also
need to increase the maximum number of transactions
that your application supports. (See
- <a href="maxtxns.html"><p>
- Most of the configuration activities that you need to perform
- for your transactional DB application will involve the
- locking and logging subsystems. See
- <a href="txnconcurrency.html"></a>Concurrency
- and
- <a href="filemanagement.html"></a>Managing DB Files
- for details.
- </p><p>
- However, there are a couple of things that you can do to
- configure your transaction subsystem directly. These things
- are:
- </p><div class="itemizedlist"><ul type="disc"><li><p>
- Configure the maximum number of simultaneous
- transactions needed by your application.
- In general, you should not need to do this unless you
- use deeply nested transactions or you have many threads all
- of which have active transactions. In addition, you may
- need to a higher maximum number of transactions if you
- are using snapshot isolation. See
- <a href="isolation.html#sisolation_maxtxn"></a>Snapshot Isolation Transactional Requirements
- for details.
- </p><p>
- By default, your application can support 20 active
- transactions.
- </p><p>
- You can set the maximum number of simultaneous
- transactions supported by your application using
-
- <span>
- <tt class="methodname">EnvironmentConfig.setTxnMaxActive()</tt>.
- </span>
- </p><p>
- If your application has exceeded this maximum value,
- then any attempt to begin a new transaction will fail.
- </p><p>
- This value can also be set using the
- <tt class="literal">DB_CONFIG</tt> file's
- <tt class="literal">set_tx_max</tt> parameter. Remember that
- the <tt class="literal">DB_CONFIG</tt> must reside in your
- environment home directory.
- </p></li><li><span>
- <p>
- <span>
- Configure the timeout value for your transactions.
- </span>
-
-
- This value represents the longest period of time a
- transaction can be active. Note, however, that
- transaction timeouts are checked only when DB
- examines its lock tables for blocked locks
- (see <a href="blocking_deadlocks.html"></a>Locks, Blocks, and Deadlocks
- for more information). Therefore, a transaction's timeout can
- have expired, but the application will not be notified until DB
- has a reason to examine its lock tables.
- </p>
- <p>
- Be aware that some transactions may be
- inappropriately timed out before the transaction has a
- chance to complete. You should therefore use this
- mechanism only if you know your application
- might have unacceptably long transactions and
- you want to make sure your application will
- not stall during their execution.
- (This might happen if, for example, your
- transaction blocks or requests too much
- data.)
- </p>
- <p>
- Note that by default transaction timeouts are set to 0 seconds, which means that they never time
- out.
- </p>
- <p>
- To set the maximum timeout value for your transactions,
- use the
-
-
- <span><tt class="methodname">EnvironmentConfig.setTxnTimeout()</tt></span>
- method. This method configures the entire
- environment; not just the handle used to set the
- configuration. Further, this value may
- be set at any time during the application's
- lifetime. <span>(Use
- <tt class="methodname">Environment.setConfig()</tt> to
- set this value after the environment has been
- opened.)</span>
- </p>
- <p>
- This value can also be set using the
- <tt class="literal">DB_CONFIG</tt> file's
- <tt class="literal">set_txn_timeout</tt> parameter.
- </p>
-
-</span></li></ul></div><p>
- For example:
- </p><pre class="programlisting">package db.txn;
-
-import com.sleepycat.db.Environment;
-import com.sleepycat.db.EnvironmentConfig;
-import com.sleepycat.db.LockDetectMode;
-
-import java.io.File;
-
-...
-
-Environment myEnv = null;
-try {
- EnvironmentConfig myEnvConfig = new EnvironmentConfig();
- myEnvConfig.setTransactional(true);
- myEnvConfig.setInitializeCache(true);
- myEnvConfig.setInitializeLocking(true);
- myEnvConfig.setInitializeLogging(true);
-
- // Configure a maximum transaction timeout of 1 second.
- myEnvConfig.setTxnTimeout(1000000);
- // Configure 40 maximum transactions.
- myEnv.setTxnMaxActive(40);
-
- myEnv = new Environment(new File(&quot;/my/env/home&quot;),
- myEnvConfig);
-
- // From here, you open your databases, proceed with your
- // database operations, and respond to deadlocks as
- // is normal (omitted for brevity).
-
- ...</pre></a>
+ <a href="maxtxns.html">Configuring the Transaction Subsystem</a>
for details on how to set this.)
In the worst case scenario, you might need to configure your application for one
more transaction for every page in the cache. This is
@@ -790,6 +668,7 @@ try {
<tt class="methodname">EnvironmentConfig.setMultiversion()</tt>
or the
<tt class="methodname">DatabaseConfig.setMultiversion()</tt>
+
option to configure
this support.
</span>
@@ -797,9 +676,8 @@ try {
</li>
<li>
<p>
- Configure your cursor or
- transaction to use snapshot
- isolation.
+ Configure your <span>cursor or</span>
+ transaction to use snapshot isolation.
</p>
<p>
To do this,
@@ -809,8 +687,7 @@ try {
<span>
specify the
<tt class="methodname">TransactionConfig.setSnapshot()</tt>
- option when you configure
- your transaction.
+ option when you configure your transaction.
</span>
</p>
</li>
@@ -842,7 +719,7 @@ try {
on snapshot isolation for a transaction:
</p>
<pre class="programlisting">package db.txn;
-
+
import com.sleepycat.db.Database;
import com.sleepycat.db.DatabaseType;
import com.sleepycat.db.DatabaseConfig;
@@ -852,9 +729,9 @@ import com.sleepycat.db.EnvironmentConfig;
import java.io.File;
import java.io.FileNotFoundException;
-
+
...
-
+
Database myDatabase = null;
Environment myEnv = null;
try {
@@ -865,7 +742,7 @@ try {
myEnvConfig.setTransactional(true);
<b class="userinput"><tt>myEnvConfig.setMultiversion(true);</tt></b>
- myEnv = new Environment(new File(&quot;/my/env/home&quot;),
+ myEnv = new Environment(new File("/my/env/home"),
myEnvConfig);
// Open the database.
@@ -873,15 +750,14 @@ try {
dbConfig.setTransactional(true);
dbConfig.setType(DatabaseType.BTREE);
myDatabase = myEnv.openDatabase(null, // txn handle
- &quot;sampleDatabase&quot;, // db file name
+ "sampleDatabase", // db file name
null, // db name
dbConfig);
-
...
<b class="userinput"><tt>TransactionConfig txnConfig = new TransactionConfig();
- tnxConfig.setSnapshot(true);</tt></b>
+ txnConfig.setSnapshot(true);</tt></b>
txn = myEnv.beginTransaction(null, <b class="userinput"><tt>txnConfig</tt></b>);
...
@@ -898,18 +774,18 @@ try {
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="lockingsubsystem.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="lockingsubsystem.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="txnconcurrency.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="txn_ccursor.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="txn_ccursor.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">The Locking Subsystem </td>
+ <td width="40%" align="left" valign="top">The Locking Subsystem </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Transactional Cursors and Concurrent Applications</td>
+ <td width="40%" align="right" valign="top"> Transactional Cursors and Concurrent Applications</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/JAVA/lockingsubsystem.html b/db/docs/gsg_txn/JAVA/lockingsubsystem.html
index 0d86ff00e..8a6a05f34 100644
--- a/db/docs/gsg_txn/JAVA/lockingsubsystem.html
+++ b/db/docs/gsg_txn/JAVA/lockingsubsystem.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>The Locking Subsystem</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="txnconcurrency.html" title="Chapter 4. Concurrency" />
+ <link rel="up" href="txnconcurrency.html" title="Chapter 4. Concurrency" />
<link rel="previous" href="blocking_deadlocks.html" title="Locks, Blocks, and Deadlocks" />
<link rel="next" href="isolation.html" title="Isolation" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">The Locking Subsystem</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="blocking_deadlocks.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 4. Concurrency</th>
- <td width="20%" align="right"> <a accesskey="n" href="isolation.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="blocking_deadlocks.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 4. Concurrency</th>
+ <td width="20%" align="right"> <a accesskey="n" href="isolation.html">Next</a></td>
</tr>
</table>
<hr />
@@ -173,7 +173,7 @@ try {
myEnvConfig.setTransactional(true);
myEnvConfig.setMaxLocks(5000);
- myEnv = new Environment(new File(&quot;/my/env/home&quot;),
+ myEnv = new Environment(new File("/my/env/home"),
myEnvConfig);
} catch (DatabaseException de) {
@@ -336,7 +336,7 @@ try {
// is detected.
envConfig.setLockDetectMode(LockDetectMode.MINWRITE);
- myEnv = new Environment(new File(&quot;/my/env/home&quot;),
+ myEnv = new Environment(new File("/my/env/home"),
myEnvConfig);
// From here, you open your databases, proceed with your
@@ -437,11 +437,11 @@ while (retry_count &lt; MAX_DEADLOCK_RETRIES) {
txn.abort();
retry_count++;
if (retry_count &gt;= MAX_DEADLOCK_RETRIES) {
- System.err.println(&quot;Exceeded retry limit. Giving up.&quot;);
+ System.err.println("Exceeded retry limit. Giving up.");
return -1;
}
} catch (DatabaseException ae) {
- System.err.println(&quot;txn abort failed: &quot; + ae.toString());
+ System.err.println("txn abort failed: " + ae.toString());
return -1;
}
} catch (DatabaseException e) {
@@ -449,7 +449,7 @@ while (retry_count &lt; MAX_DEADLOCK_RETRIES) {
// Abort the transaction.
txn.abort();
} catch (DatabaseException ae) {
- System.err.println(&quot;txn abort failed: &quot; + ae.toString());
+ System.err.println("txn abort failed: " + ae.toString());
return -1;
}
}
@@ -460,18 +460,18 @@ while (retry_count &lt; MAX_DEADLOCK_RETRIES) {
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="blocking_deadlocks.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="blocking_deadlocks.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="txnconcurrency.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="isolation.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="isolation.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Locks, Blocks, and Deadlocks </td>
+ <td width="40%" align="left" valign="top">Locks, Blocks, and Deadlocks </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Isolation</td>
+ <td width="40%" align="right" valign="top"> Isolation</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/JAVA/logconfig.html b/db/docs/gsg_txn/JAVA/logconfig.html
index 85a711782..52238d3b1 100644
--- a/db/docs/gsg_txn/JAVA/logconfig.html
+++ b/db/docs/gsg_txn/JAVA/logconfig.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Configuring the Logging Subsystem</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="filemanagement.html" title="Chapter 5. Managing DB Files" />
+ <link rel="up" href="filemanagement.html" title="Chapter 5. Managing DB Files" />
<link rel="previous" href="logfileremoval.html" title="Removing Log Files" />
- <link rel="next" href="wrapup.html" title="Chapter 6. Summary and Examples" />
+ <link rel="next" href="wrapup.html" title="Chapter 6. Summary and Examples" />
</head>
<body>
<div class="navheader">
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Configuring the Logging Subsystem</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="logfileremoval.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 5. Managing DB Files</th>
- <td width="20%" align="right"> <a accesskey="n" href="wrapup.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="logfileremoval.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 5. Managing DB Files</th>
+ <td width="20%" align="right"> <a accesskey="n" href="wrapup.html">Next</a></td>
</tr>
</table>
<hr />
@@ -298,7 +298,7 @@ try {
// Specify the in-memory log buffer size.
myEnvConfig.setLogBufferSize(10 * 1024 * 1024);
- myEnv = new Environment(new File(&quot;/my/env/home&quot;),
+ myEnv = new Environment(new File("/my/env/home"),
myEnvConfig);
// From here, you open databases, create transactions and
@@ -338,7 +338,7 @@ try {
large enough that no transaction will ever span the entire
buffer. You must also avoid a state where the in-memory
buffer is full and no space can be freed because a
- transaction that started the first log &quot;file&quot; is still
+ transaction that started the first log "file" is still
active.
</p>
<p>
@@ -362,18 +362,18 @@ try {
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="logfileremoval.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="logfileremoval.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="filemanagement.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="wrapup.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="wrapup.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Removing Log Files </td>
+ <td width="40%" align="left" valign="top">Removing Log Files </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Chapter 6. Summary and Examples</td>
+ <td width="40%" align="right" valign="top"> Chapter 6. Summary and Examples</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/JAVA/logfileremoval.html b/db/docs/gsg_txn/JAVA/logfileremoval.html
index 231b164f4..c82ccc2f3 100644
--- a/db/docs/gsg_txn/JAVA/logfileremoval.html
+++ b/db/docs/gsg_txn/JAVA/logfileremoval.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Removing Log Files</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="filemanagement.html" title="Chapter 5. Managing DB Files" />
+ <link rel="up" href="filemanagement.html" title="Chapter 5. Managing DB Files" />
<link rel="previous" href="hotfailover.html" title="Using Hot Failovers" />
<link rel="next" href="logconfig.html" title="Configuring the Logging Subsystem" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Removing Log Files</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="hotfailover.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 5. Managing DB Files</th>
- <td width="20%" align="right"> <a accesskey="n" href="logconfig.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="hotfailover.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 5. Managing DB Files</th>
+ <td width="20%" align="right"> <a accesskey="n" href="logconfig.html">Next</a></td>
</tr>
</table>
<hr />
@@ -183,18 +183,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="hotfailover.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="hotfailover.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="filemanagement.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="logconfig.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="logconfig.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Using Hot Failovers </td>
+ <td width="40%" align="left" valign="top">Using Hot Failovers </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Configuring the Logging Subsystem</td>
+ <td width="40%" align="right" valign="top"> Configuring the Logging Subsystem</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/JAVA/maxtxns.html b/db/docs/gsg_txn/JAVA/maxtxns.html
index 30994a5d5..633caf606 100644
--- a/db/docs/gsg_txn/JAVA/maxtxns.html
+++ b/db/docs/gsg_txn/JAVA/maxtxns.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Configuring the Transaction Subsystem</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="usingtxns.html" title="Chapter 3. Transaction Basics" />
+ <link rel="up" href="usingtxns.html" title="Chapter 3. Transaction Basics" />
<link rel="previous" href="txnindices.html" title="Secondary Indices with Transaction Applications" />
- <link rel="next" href="txnconcurrency.html" title="Chapter 4. Concurrency" />
+ <link rel="next" href="txnconcurrency.html" title="Chapter 4. Concurrency" />
</head>
<body>
<div class="navheader">
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Configuring the Transaction Subsystem</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="txnindices.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 3. Transaction Basics</th>
- <td width="20%" align="right"> <a accesskey="n" href="txnconcurrency.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="txnindices.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 3. Transaction Basics</th>
+ <td width="20%" align="right"> <a accesskey="n" href="txnconcurrency.html">Next</a></td>
</tr>
</table>
<hr />
@@ -170,7 +170,7 @@ try {
// Configure 40 maximum transactions.
myEnv.setTxnMaxActive(40);
- myEnv = new Environment(new File(&quot;/my/env/home&quot;),
+ myEnv = new Environment(new File("/my/env/home"),
myEnvConfig);
// From here, you open your databases, proceed with your
@@ -183,18 +183,18 @@ try {
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="txnindices.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="txnindices.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="usingtxns.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="txnconcurrency.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="txnconcurrency.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Secondary Indices with Transaction Applications </td>
+ <td width="40%" align="left" valign="top">Secondary Indices with Transaction Applications </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Chapter 4. Concurrency</td>
+ <td width="40%" align="right" valign="top"> Chapter 4. Concurrency</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/JAVA/nestedtxn.html b/db/docs/gsg_txn/JAVA/nestedtxn.html
index 2ff64399a..39e2ef0bf 100644
--- a/db/docs/gsg_txn/JAVA/nestedtxn.html
+++ b/db/docs/gsg_txn/JAVA/nestedtxn.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Nested Transactions</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="usingtxns.html" title="Chapter 3. Transaction Basics" />
+ <link rel="up" href="usingtxns.html" title="Chapter 3. Transaction Basics" />
<link rel="previous" href="autocommit.html" title="Auto Commit" />
<link rel="next" href="txncursor.html" title="Transactional Cursors" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Nested Transactions</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="autocommit.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 3. Transaction Basics</th>
- <td width="20%" align="right"> <a accesskey="n" href="txncursor.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="autocommit.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 3. Transaction Basics</th>
+ <td width="20%" align="right"> <a accesskey="n" href="txncursor.html">Next</a></td>
</tr>
</table>
<hr />
@@ -120,18 +120,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="autocommit.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="autocommit.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="usingtxns.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="txncursor.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="txncursor.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Auto Commit </td>
+ <td width="40%" align="left" valign="top">Auto Commit </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Transactional Cursors</td>
+ <td width="40%" align="right" valign="top"> Transactional Cursors</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/JAVA/perftune-intro.html b/db/docs/gsg_txn/JAVA/perftune-intro.html
index e9dff26fc..5a31485c0 100644
--- a/db/docs/gsg_txn/JAVA/perftune-intro.html
+++ b/db/docs/gsg_txn/JAVA/perftune-intro.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Performance Tuning</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="introduction.html" title="Chapter 1. Introduction" />
+ <link rel="up" href="introduction.html" title="Chapter 1. Introduction" />
<link rel="previous" href="recovery-intro.html" title="Recoverability" />
- <link rel="next" href="enabletxn.html" title="Chapter 2. Enabling Transactions" />
+ <link rel="next" href="enabletxn.html" title="Chapter 2. Enabling Transactions" />
</head>
<body>
<div class="navheader">
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Performance Tuning</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="recovery-intro.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 1. Introduction</th>
- <td width="20%" align="right"> <a accesskey="n" href="enabletxn.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="recovery-intro.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 1. Introduction</th>
+ <td width="20%" align="right"> <a accesskey="n" href="enabletxn.html">Next</a></td>
</tr>
</table>
<hr />
@@ -69,18 +69,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="recovery-intro.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="recovery-intro.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="introduction.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="enabletxn.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="enabletxn.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Recoverability </td>
+ <td width="40%" align="left" valign="top">Recoverability </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Chapter 2. Enabling Transactions</td>
+ <td width="40%" align="right" valign="top"> Chapter 2. Enabling Transactions</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/JAVA/preface.html b/db/docs/gsg_txn/JAVA/preface.html
index 6f0601ca8..628b0da5a 100644
--- a/db/docs/gsg_txn/JAVA/preface.html
+++ b/db/docs/gsg_txn/JAVA/preface.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Preface</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
<link rel="up" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
<link rel="previous" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="next" href="introduction.html" title="Chapter 1. Introduction" />
+ <link rel="next" href="introduction.html" title="Chapter 1. Introduction" />
</head>
<body>
<div class="navheader">
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Preface</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="index.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="introduction.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="index.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="introduction.html">Next</a></td>
</tr>
</table>
<hr />
@@ -95,14 +95,14 @@
- <span>&quot;The <tt class="methodname">Environment()</tt>
- constructor returns an <tt class="classname">Environment</tt> class object.&quot;</span>
+ <span>"The <tt class="methodname">Environment()</tt>
+ constructor returns an <tt class="classname">Environment</tt> class object."</span>
</p>
<p>
- Variable or non-literal text is presented in <span class="emphasis"><em>italics</em></span>. For example: &quot;Go to your
- <span class="emphasis"><em>DB_INSTALL</em></span> directory.&quot;
+ Variable or non-literal text is presented in <span class="emphasis"><em>italics</em></span>. For example: "Go to your
+ <span class="emphasis"><em>DB_INSTALL</em></span> directory."
</p>
<p>
Program examples are displayed in a <tt class="classname">monospaced font</tt> on a shaded background.
@@ -127,7 +127,7 @@ import com.sleepycat.db.DatabaseConfig;
// Allow the database to be created.
DatabaseConfig myDbConfig = new DatabaseConfig();
myDbConfig.setAllowCreate(true);
-<b class="userinput"><tt>Database myDb = new Database(&quot;mydb.db&quot;, null, myDbConfig);</tt></b> </pre>
+<b class="userinput"><tt>Database myDb = new Database("mydb.db", null, myDbConfig);</tt></b> </pre>
<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
<h3 class="title">Note</h3>
<p>
@@ -208,18 +208,18 @@ myDbConfig.setAllowCreate(true);
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="index.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="index.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="introduction.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="introduction.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Getting Started with Berkeley DB Transaction Processing </td>
+ <td width="40%" align="left" valign="top">Getting Started with Berkeley DB Transaction Processing </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Chapter 1. Introduction</td>
+ <td width="40%" align="right" valign="top"> Chapter 1. Introduction</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/JAVA/readmodifywrite.html b/db/docs/gsg_txn/JAVA/readmodifywrite.html
index eea954d10..1c59bf852 100644
--- a/db/docs/gsg_txn/JAVA/readmodifywrite.html
+++ b/db/docs/gsg_txn/JAVA/readmodifywrite.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Read/Modify/Write</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="txnconcurrency.html" title="Chapter 4. Concurrency" />
+ <link rel="up" href="txnconcurrency.html" title="Chapter 4. Concurrency" />
<link rel="previous" href="txn_ccursor.html" title="Transactional Cursors and Concurrent Applications" />
<link rel="next" href="txnnowait.html" title="No Wait on Blocks" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Read/Modify/Write</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="txn_ccursor.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 4. Concurrency</th>
- <td width="20%" align="right"> <a accesskey="n" href="txnnowait.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="txn_ccursor.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 4. Concurrency</th>
+ <td width="20%" align="right"> <a accesskey="n" href="txnnowait.html">Next</a></td>
</tr>
</table>
<hr />
@@ -101,18 +101,18 @@ while (retry_count &lt; MAX_DEADLOCK_RETRIES) {
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="txn_ccursor.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="txn_ccursor.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="txnconcurrency.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="txnnowait.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="txnnowait.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Transactional Cursors and Concurrent Applications </td>
+ <td width="40%" align="left" valign="top">Transactional Cursors and Concurrent Applications </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> No Wait on Blocks</td>
+ <td width="40%" align="right" valign="top"> No Wait on Blocks</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/JAVA/recovery-intro.html b/db/docs/gsg_txn/JAVA/recovery-intro.html
index ee490b9ba..e971eef93 100644
--- a/db/docs/gsg_txn/JAVA/recovery-intro.html
+++ b/db/docs/gsg_txn/JAVA/recovery-intro.html
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Recoverability</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="introduction.html" title="Chapter 1. Introduction" />
- <link rel="previous" href="introduction.html" title="Chapter 1. Introduction" />
+ <link rel="up" href="introduction.html" title="Chapter 1. Introduction" />
+ <link rel="previous" href="introduction.html" title="Chapter 1. Introduction" />
<link rel="next" href="perftune-intro.html" title="Performance Tuning" />
</head>
<body>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Recoverability</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="introduction.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 1. Introduction</th>
- <td width="20%" align="right"> <a accesskey="n" href="perftune-intro.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="introduction.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 1. Introduction</th>
+ <td width="20%" align="right"> <a accesskey="n" href="perftune-intro.html">Next</a></td>
</tr>
</table>
<hr />
@@ -85,18 +85,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="introduction.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="introduction.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="introduction.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="perftune-intro.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="perftune-intro.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Chapter 1. Introduction </td>
+ <td width="40%" align="left" valign="top">Chapter 1. Introduction </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Performance Tuning</td>
+ <td width="40%" align="right" valign="top"> Performance Tuning</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/JAVA/recovery.html b/db/docs/gsg_txn/JAVA/recovery.html
index 62ce76220..facbf6801 100644
--- a/db/docs/gsg_txn/JAVA/recovery.html
+++ b/db/docs/gsg_txn/JAVA/recovery.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Recovery Procedures</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="filemanagement.html" title="Chapter 5. Managing DB Files" />
+ <link rel="up" href="filemanagement.html" title="Chapter 5. Managing DB Files" />
<link rel="previous" href="backuprestore.html" title="Backup Procedures" />
<link rel="next" href="architectrecovery.html" title="Designing Your Application for Recovery" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Recovery Procedures</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="backuprestore.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 5. Managing DB Files</th>
- <td width="20%" align="right"> <a accesskey="n" href="architectrecovery.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="backuprestore.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 5. Managing DB Files</th>
+ <td width="20%" align="right"> <a accesskey="n" href="architectrecovery.html">Next</a></td>
</tr>
</table>
<hr />
@@ -166,7 +166,7 @@ try {
// Run normal recovery
myEnvConfig.setRunRecovery(true);
- myEnv = new Environment(new File(&quot;/my/env/home&quot;),
+ myEnv = new Environment(new File("/my/env/home"),
myEnvConfig);
// All other operations are identical from here. Notice, however,
@@ -233,7 +233,7 @@ try {
</p>
<p>
Note that catastrophic recovery examines every available
- log file &#8212; not just those log files created since the
+ log file — not just those log files created since the
last checkpoint as is the case for normal recovery. For this reason,
catastrophic recovery is likely to take longer than does
normal recovery.
@@ -265,7 +265,7 @@ try {
// Run catastrophic recovery
<b class="userinput"><tt>myEnvConfig.setRunFatalRecovery(true);</tt></b>
- myEnv = new Environment(new File(&quot;/my/env/home&quot;),
+ myEnv = new Environment(new File("/my/env/home"),
myEnvConfig);
} catch (DatabaseException de) {
@@ -279,18 +279,18 @@ try {
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="backuprestore.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="backuprestore.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="filemanagement.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="architectrecovery.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="architectrecovery.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Backup Procedures </td>
+ <td width="40%" align="left" valign="top">Backup Procedures </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Designing Your Application for Recovery</td>
+ <td width="40%" align="right" valign="top"> Designing Your Application for Recovery</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/JAVA/reversesplit.html b/db/docs/gsg_txn/JAVA/reversesplit.html
index bade30c43..22d24ffbd 100644
--- a/db/docs/gsg_txn/JAVA/reversesplit.html
+++ b/db/docs/gsg_txn/JAVA/reversesplit.html
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Reverse BTree Splits</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="txnconcurrency.html" title="Chapter 4. Concurrency" />
+ <link rel="up" href="txnconcurrency.html" title="Chapter 4. Concurrency" />
<link rel="previous" href="txnnowait.html" title="No Wait on Blocks" />
- <link rel="next" href="filemanagement.html" title="Chapter 5. Managing DB Files" />
+ <link rel="next" href="filemanagement.html" title="Chapter 5. Managing DB Files" />
</head>
<body>
<div class="navheader">
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Reverse BTree Splits</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="txnnowait.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 4. Concurrency</th>
- <td width="20%" align="right"> <a accesskey="n" href="filemanagement.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="txnnowait.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 4. Concurrency</th>
+ <td width="20%" align="right"> <a accesskey="n" href="filemanagement.html">Next</a></td>
</tr>
</table>
<hr />
@@ -100,7 +100,7 @@ try {
myEnvConfig.setInitializeLogging(true);
myEnvConfig.setTransactional(true);
- myEnv = new Environment(new File(&quot;/my/env/home&quot;),
+ myEnv = new Environment(new File("/my/env/home"),
myEnvConfig);
// Open the database.
@@ -112,8 +112,8 @@ try {
dbConfig.setReverseSplitOff(true);
myDatabase = myEnv.openDatabase(null, // txn handle
- &quot;sampleDatabase&quot;, // db file name
- &quot;null&quot;, // db name
+ "sampleDatabase", // db file name
+ "null", // db name
dbConfig);
} catch (DatabaseException de) {
// Exception handling goes here
@@ -125,18 +125,18 @@ try {
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="txnnowait.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="txnnowait.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="txnconcurrency.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="filemanagement.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="filemanagement.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">No Wait on Blocks </td>
+ <td width="40%" align="left" valign="top">No Wait on Blocks </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Chapter 5. Managing DB Files</td>
+ <td width="40%" align="right" valign="top"> Chapter 5. Managing DB Files</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/JAVA/txn_ccursor.html b/db/docs/gsg_txn/JAVA/txn_ccursor.html
index 69caaca20..b1abbd43a 100644
--- a/db/docs/gsg_txn/JAVA/txn_ccursor.html
+++ b/db/docs/gsg_txn/JAVA/txn_ccursor.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Transactional Cursors and Concurrent Applications</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="txnconcurrency.html" title="Chapter 4. Concurrency" />
+ <link rel="up" href="txnconcurrency.html" title="Chapter 4. Concurrency" />
<link rel="previous" href="isolation.html" title="Isolation" />
<link rel="next" href="readmodifywrite.html" title="Read/Modify/Write" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Transactional Cursors and Concurrent Applications</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="isolation.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 4. Concurrency</th>
- <td width="20%" align="right"> <a accesskey="n" href="readmodifywrite.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="isolation.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 4. Concurrency</th>
+ <td width="20%" align="right"> <a accesskey="n" href="readmodifywrite.html">Next</a></td>
</tr>
</table>
<hr />
@@ -109,7 +109,7 @@ try {
myEnvConfig.setInitializeLocking(true);
myEnvConfig.setInitializeLogging(true);
- myEnv = new Environment(new File(&quot;/my/env/home&quot;),
+ myEnv = new Environment(new File("/my/env/home"),
myEnvConfig);
// Open the database.
@@ -118,7 +118,7 @@ try {
dbConfig.setType(DatabaseType.BTREE);
dbConfig.setReadUncommitted(true); // Enable uncommitted reads.
myDatabase = myEnv.openDatabase(null, // txn handle
- &quot;sampleDatabase&quot;, // db file name
+ "sampleDatabase", // db file name
null, // db name
dbConfig);
@@ -147,18 +147,18 @@ try {
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="isolation.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="isolation.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="txnconcurrency.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="readmodifywrite.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="readmodifywrite.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Isolation </td>
+ <td width="40%" align="left" valign="top">Isolation </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Read/Modify/Write</td>
+ <td width="40%" align="right" valign="top"> Read/Modify/Write</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/JAVA/txnconcurrency.html b/db/docs/gsg_txn/JAVA/txnconcurrency.html
index f9a2e52b5..207fafcbb 100644
--- a/db/docs/gsg_txn/JAVA/txnconcurrency.html
+++ b/db/docs/gsg_txn/JAVA/txnconcurrency.html
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <title>Chapter 4. Concurrency</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Chapter 4. Concurrency</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
@@ -15,12 +15,12 @@
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
- <th colspan="3" align="center">Chapter 4. Concurrency</th>
+ <th colspan="3" align="center">Chapter 4. Concurrency</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="maxtxns.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="blocking_deadlocks.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="maxtxns.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="blocking_deadlocks.html">Next</a></td>
</tr>
</table>
<hr />
@@ -29,7 +29,7 @@
<div class="titlepage">
<div>
<div>
- <h2 class="title"><a id="txnconcurrency"></a>Chapter 4. Concurrency</h2>
+ <h2 class="title"><a id="txnconcurrency"></a>Chapter 4. Concurrency</h2>
</div>
</div>
<div></div>
@@ -185,7 +185,7 @@
</p>
<p>
Note that this term can also be taken to mean a separate process
- that is performing work &#8212; DB supports multi-process
+ that is performing work — DB supports multi-process
operations on your databases.
</p>
</li>
@@ -350,18 +350,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="maxtxns.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="maxtxns.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="blocking_deadlocks.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="blocking_deadlocks.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Configuring the Transaction Subsystem </td>
+ <td width="40%" align="left" valign="top">Configuring the Transaction Subsystem </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Locks, Blocks, and Deadlocks</td>
+ <td width="40%" align="right" valign="top"> Locks, Blocks, and Deadlocks</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/JAVA/txncursor.html b/db/docs/gsg_txn/JAVA/txncursor.html
index ca8bf7d11..b65e76c91 100644
--- a/db/docs/gsg_txn/JAVA/txncursor.html
+++ b/db/docs/gsg_txn/JAVA/txncursor.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Transactional Cursors</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="usingtxns.html" title="Chapter 3. Transaction Basics" />
+ <link rel="up" href="usingtxns.html" title="Chapter 3. Transaction Basics" />
<link rel="previous" href="nestedtxn.html" title="Nested Transactions" />
<link rel="next" href="txnindices.html" title="Secondary Indices with Transaction Applications" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Transactional Cursors</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="nestedtxn.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 3. Transaction Basics</th>
- <td width="20%" align="right"> <a accesskey="n" href="txnindices.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="nestedtxn.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 3. Transaction Basics</th>
+ <td width="20%" align="right"> <a accesskey="n" href="txnindices.html">Next</a></td>
</tr>
</table>
<hr />
@@ -68,7 +68,7 @@ try {
// Database and environment opens omitted
- String replacementData = &quot;new data&quot;;
+ String replacementData = "new data";
Transaction txn = myEnv.beginTransaction(null, null);
Cursor cursor = null;
@@ -81,7 +81,7 @@ try {
while(cursor.getNext(key, data, LockMode.DEFAULT) ==
OperationStatus.SUCCESS) {
- data.setData(replacementData.getBytes(&quot;UTF-8&quot;));
+ data.setData(replacementData.getBytes("UTF-8"));
// No transaction handle is used on the cursor read or write
// methods.
cursor.putCurrent(data);
@@ -109,18 +109,18 @@ try {
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="nestedtxn.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="nestedtxn.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="usingtxns.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="txnindices.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="txnindices.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Nested Transactions </td>
+ <td width="40%" align="left" valign="top">Nested Transactions </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Secondary Indices with Transaction Applications</td>
+ <td width="40%" align="right" valign="top"> Secondary Indices with Transaction Applications</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/JAVA/txnexample_java.html b/db/docs/gsg_txn/JAVA/txnexample_java.html
index 74ff5e153..df467f12e 100644
--- a/db/docs/gsg_txn/JAVA/txnexample_java.html
+++ b/db/docs/gsg_txn/JAVA/txnexample_java.html
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Transaction Example</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="wrapup.html" title="Chapter 6. Summary and Examples" />
- <link rel="previous" href="wrapup.html" title="Chapter 6. Summary and Examples" />
+ <link rel="up" href="wrapup.html" title="Chapter 6. Summary and Examples" />
+ <link rel="previous" href="wrapup.html" title="Chapter 6. Summary and Examples" />
<link rel="next" href="inmem_txnexample_java.html" title="In-Memory Transaction Example" />
</head>
<body>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Transaction Example</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="wrapup.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 6. Summary and Examples</th>
- <td width="20%" align="right"> <a accesskey="n" href="inmem_txnexample_java.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="wrapup.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 6. Summary and Examples</th>
+ <td width="20%" align="right"> <a accesskey="n" href="inmem_txnexample_java.html">Next</a></td>
</tr>
</table>
<hr />
@@ -140,9 +140,9 @@ public class TxnGuide { </pre>
the number of threads that we are spawning. However, we also declare
our environment and database handles here.
</p>
- <pre class="programlisting"> private static String myEnvPath = &quot;./&quot;;
- private static String dbName = &quot;mydb.db&quot;;
- private static String cdbName = &quot;myclassdb.db&quot;;
+ <pre class="programlisting"> private static String myEnvPath = "./";
+ private static String dbName = "mydb.db";
+ private static String cdbName = "myclassdb.db";
// DB handles
private static Database myDb = null;
@@ -156,7 +156,7 @@ public class TxnGuide { </pre>
used to identify the environment home directory.
</p>
<pre class="programlisting"> private static void usage() {
- System.out.println(&quot;TxnGuide [-h &lt;env directory&gt;]&quot;);
+ System.out.println("TxnGuide [-h &lt;env directory&gt;]");
System.exit(-1);
} </pre>
<p>
@@ -191,12 +191,12 @@ public class TxnGuide { </pre>
threadArray[i].join();
}
} catch (Exception e) {
- System.err.println(&quot;TxnGuide: &quot; + e.toString());
+ System.err.println("TxnGuide: " + e.toString());
e.printStackTrace();
} finally {
closeEnv();
}
- System.out.println(&quot;All done.&quot;);
+ System.out.println("All done.");
} </pre>
<p>
Next we implement <tt class="function">openEnv()</tt>. This method is used
@@ -231,7 +231,7 @@ public class TxnGuide { </pre>
on the cursor open would, in fact, be silently ignored).
</p>
<pre class="programlisting"> private static void openEnv() throws DatabaseException {
- System.out.println(&quot;opening env&quot;);
+ System.out.println("opening env");
// Set up the environment.
EnvironmentConfig myEnvConfig = new EnvironmentConfig();
@@ -283,7 +283,7 @@ public class TxnGuide { </pre>
null, // Database name,
myDbConfig);
} catch (FileNotFoundException fnfe) {
- System.err.println(&quot;openEnv: &quot; + fnfe.toString());
+ System.err.println("openEnv: " + fnfe.toString());
System.exit(-1);
}
} </pre>
@@ -295,12 +295,12 @@ public class TxnGuide { </pre>
purely for the purpose of completeness.
</p>
<pre class="programlisting"> private static void closeEnv() {
- System.out.println(&quot;Closing env and databases&quot;);
+ System.out.println("Closing env and databases");
if (myDb != null ) {
try {
myDb.close();
} catch (DatabaseException e) {
- System.err.println(&quot;closeEnv: myDb: &quot; +
+ System.err.println("closeEnv: myDb: " +
e.toString());
e.printStackTrace();
}
@@ -310,7 +310,7 @@ public class TxnGuide { </pre>
try {
myClassDb.close();
} catch (DatabaseException e) {
- System.err.println(&quot;closeEnv: myClassDb: &quot; +
+ System.err.println("closeEnv: myClassDb: " +
e.toString());
e.printStackTrace();
}
@@ -320,7 +320,7 @@ public class TxnGuide { </pre>
try {
myEnv.close();
} catch (DatabaseException e) {
- System.err.println(&quot;closeEnv: &quot; + e.toString());
+ System.err.println("closeEnv: " + e.toString());
e.printStackTrace();
}
}
@@ -330,7 +330,7 @@ public class TxnGuide { </pre>
private static void parseArgs(String args[]) {
for(int i = 0; i &lt; args.length; ++i) {
- if (args[i].startsWith(&quot;-&quot;)) {
+ if (args[i].startsWith("-")) {
switch(args[i].charAt(1)) {
case 'h':
myEnvPath = new String(args[++i]);
@@ -490,10 +490,10 @@ public class DBWriter extends Thread
private static final int MAX_RETRY = 20;
- private static String[] keys = {&quot;key 1&quot;, &quot;key 2&quot;, &quot;key 3&quot;,
- &quot;key 4&quot;, &quot;key 5&quot;, &quot;key 6&quot;,
- &quot;key 7&quot;, &quot;key 8&quot;, &quot;key 9&quot;,
- &quot;key 10&quot;}; </pre>
+ private static String[] keys = {"key 1", "key 2", "key 3",
+ "key 4", "key 5", "key 6",
+ "key 7", "key 8", "key 9",
+ "key 10"}; </pre>
<p>
Next we implement our class constructor. The most interesting thing
we do here is instantiate a serial binding for serializing
@@ -660,13 +660,13 @@ public class DBWriter extends Thread
as is used for the thread's writes.
</p>
<pre class="programlisting"> // commit
- System.out.println(getName() + &quot; : committing txn : &quot;
+ System.out.println(getName() + " : committing txn : "
+ i);
// Using uncommitted reads to avoid the deadlock, so null
// is passed for the transaction here.
- System.out.println(getName() + &quot; : Found &quot; +
- countRecords(null) + &quot; records in the database.&quot;); </pre>
+ System.out.println(getName() + " : Found " +
+ countRecords(null) + " records in the database."); </pre>
<p>
Having performed this somewhat inelegant counting of the records in the
database, we can now commit the transaction.
@@ -675,7 +675,7 @@ public class DBWriter extends Thread
txn.commit();
txn = null;
} catch (DatabaseException e) {
- System.err.println(&quot;Error on txn commit: &quot; +
+ System.err.println("Error on txn commit: " +
e.toString());
}
retry = false; </pre>
@@ -688,17 +688,17 @@ public class DBWriter extends Thread
exceeded our retry limit for this transaction.
</p>
<pre class="programlisting"> } catch (DeadlockException de) {
- System.out.println(&quot;################# &quot; + getName() +
- &quot; : caught deadlock&quot;);
+ System.out.println("################# " + getName() +
+ " : caught deadlock");
// retry if necessary
if (retry_count &lt; MAX_RETRY) {
System.err.println(getName() +
- &quot; : Retrying operation.&quot;);
+ " : Retrying operation.");
retry = true;
retry_count++;
} else {
System.err.println(getName() +
- &quot; : out of retries. Giving up.&quot;);
+ " : out of retries. Giving up.");
retry = false;
} </pre>
<p>
@@ -709,9 +709,9 @@ public class DBWriter extends Thread
// abort and don't retry
retry = false;
System.err.println(getName() +
- &quot; : caught exception: &quot; + e.toString());
+ " : caught exception: " + e.toString());
System.err.println(getName() +
- &quot; : errno: &quot; + e.getErrno());
+ " : errno: " + e.getErrno());
e.printStackTrace(); </pre>
<p>
And, finally, we always abort the transaction if the transaction handle
@@ -724,7 +724,7 @@ public class DBWriter extends Thread
try {
txn.abort();
} catch (Exception e) {
- System.err.println(&quot;Error aborting txn: &quot; +
+ System.err.println("Error aborting txn: " +
e.toString());
e.printStackTrace();
}
@@ -782,18 +782,18 @@ public class DBWriter extends Thread
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="wrapup.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="wrapup.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="wrapup.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="inmem_txnexample_java.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="inmem_txnexample_java.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Chapter 6. Summary and Examples </td>
+ <td width="40%" align="left" valign="top">Chapter 6. Summary and Examples </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> In-Memory Transaction Example</td>
+ <td width="40%" align="right" valign="top"> In-Memory Transaction Example</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/JAVA/txnindices.html b/db/docs/gsg_txn/JAVA/txnindices.html
index ace15812a..3ba83c712 100644
--- a/db/docs/gsg_txn/JAVA/txnindices.html
+++ b/db/docs/gsg_txn/JAVA/txnindices.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Secondary Indices with Transaction Applications</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="usingtxns.html" title="Chapter 3. Transaction Basics" />
+ <link rel="up" href="usingtxns.html" title="Chapter 3. Transaction Basics" />
<link rel="previous" href="txncursor.html" title="Transactional Cursors" />
<link rel="next" href="maxtxns.html" title="Configuring the Transaction Subsystem" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">Secondary Indices with Transaction Applications</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="txncursor.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 3. Transaction Basics</th>
- <td width="20%" align="right"> <a accesskey="n" href="maxtxns.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="txncursor.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 3. Transaction Basics</th>
+ <td width="20%" align="right"> <a accesskey="n" href="maxtxns.html">Next</a></td>
</tr>
</table>
<hr />
@@ -50,7 +50,7 @@
<span>
secondary cursors is performed just as you protect normal
- cursors &#8212; you simply have to make sure the cursor is
+ cursors — you simply have to make sure the cursor is
opened using a transaction handle, and that the cursor is
closed before the handle is either either committed or
aborted.
@@ -105,7 +105,7 @@ try {
// transactional, the open is automatically wrapped in a transaction.
// - myEnv is the environment handle.
// - myDb is the primary database handle.
- String secDbName = &quot;mySecondaryDatabase&quot;;
+ String secDbName = "mySecondaryDatabase";
mySecDb = myEnv.openSecondary(null, secDbName, null, myDb, mySecConfig);
} catch (DatabaseException de) {
// Exception handling goes here ...
@@ -117,18 +117,18 @@ try {
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="txncursor.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="txncursor.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="usingtxns.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="maxtxns.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="maxtxns.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Transactional Cursors </td>
+ <td width="40%" align="left" valign="top">Transactional Cursors </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Configuring the Transaction Subsystem</td>
+ <td width="40%" align="right" valign="top"> Configuring the Transaction Subsystem</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/JAVA/txnnowait.html b/db/docs/gsg_txn/JAVA/txnnowait.html
index 4636f75b1..40a691f11 100644
--- a/db/docs/gsg_txn/JAVA/txnnowait.html
+++ b/db/docs/gsg_txn/JAVA/txnnowait.html
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>No Wait on Blocks</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
- <link rel="up" href="txnconcurrency.html" title="Chapter 4. Concurrency" />
+ <link rel="up" href="txnconcurrency.html" title="Chapter 4. Concurrency" />
<link rel="previous" href="readmodifywrite.html" title="Read/Modify/Write" />
<link rel="next" href="reversesplit.html" title="Reverse BTree Splits" />
</head>
@@ -18,9 +18,9 @@
<th colspan="3" align="center">No Wait on Blocks</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="readmodifywrite.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 4. Concurrency</th>
- <td width="20%" align="right"> <a accesskey="n" href="reversesplit.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="readmodifywrite.html">Prev</a> </td>
+ <th width="60%" align="center">Chapter 4. Concurrency</th>
+ <td width="20%" align="right"> <a accesskey="n" href="reversesplit.html">Next</a></td>
</tr>
</table>
<hr />
@@ -72,18 +72,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="readmodifywrite.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="readmodifywrite.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="txnconcurrency.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="reversesplit.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="reversesplit.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Read/Modify/Write </td>
+ <td width="40%" align="left" valign="top">Read/Modify/Write </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Reverse BTree Splits</td>
+ <td width="40%" align="right" valign="top"> Reverse BTree Splits</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/JAVA/usingtxns.html b/db/docs/gsg_txn/JAVA/usingtxns.html
index 38fe7a16b..5ee4aa54e 100644
--- a/db/docs/gsg_txn/JAVA/usingtxns.html
+++ b/db/docs/gsg_txn/JAVA/usingtxns.html
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <title>Chapter 3. Transaction Basics</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Chapter 3. Transaction Basics</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
@@ -15,12 +15,12 @@
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
- <th colspan="3" align="center">Chapter 3. Transaction Basics</th>
+ <th colspan="3" align="center">Chapter 3. Transaction Basics</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="envopen.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="abortresults.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="envopen.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="abortresults.html">Next</a></td>
</tr>
</table>
<hr />
@@ -29,7 +29,7 @@
<div class="titlepage">
<div>
<div>
- <h2 class="title"><a id="usingtxns"></a>Chapter 3. Transaction Basics</h2>
+ <h2 class="title"><a id="usingtxns"></a>Chapter 3. Transaction Basics</h2>
</div>
</div>
<div></div>
@@ -166,7 +166,7 @@ try {
myEnvConfig.setInitializeLogging(true);
myEnvConfig.setTransactional(true);
- myEnv = new Environment(new File(&quot;/my/env/home&quot;),
+ myEnv = new Environment(new File("/my/env/home"),
myEnvConfig);
// Open the database.
@@ -174,15 +174,15 @@ try {
dbConfig.setTransactional(true);
dbConfig.setType(DatabaseType.BTREE);
myDatabase = myEnv.openDatabase(null, // txn handle
- &quot;sampleDatabase&quot;, // db file name
+ "sampleDatabase", // db file name
null, // db name
dbConfig);
- String keyString = &quot;thekey&quot;;
- String dataString = &quot;thedata&quot;;
+ String keyString = "thekey";
+ String dataString = "thedata";
DatabaseEntry key =
- new DatabaseEntry(keyString.getBytes(&quot;UTF-8&quot;));
+ new DatabaseEntry(keyString.getBytes("UTF-8"));
DatabaseEntry data =
- new DatabaseEntry(dataString.getBytes(&quot;UTF-8&quot;));
+ new DatabaseEntry(dataString.getBytes("UTF-8"));
Transaction txn = myEnv.beginTransaction(null, null);
@@ -329,7 +329,7 @@ try {
<p>
Be aware that because your transaction commit caused database
modifications recorded in your logs to be forced to disk, your modifications
- are by default &quot;persistent&quot; in that they can be recovered in the event of
+ are by default "persistent" in that they can be recovered in the event of
an application or system failure. However, recovery time is
gated by how much data has been modified since the last
checkpoint, so for applications that perform a lot of writes,
@@ -503,21 +503,21 @@ try {
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="envopen.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="envopen.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="abortresults.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="abortresults.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">Opening a Transactional Environment and
Database
-  </td>
+  </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Aborting a Transaction</td>
+ <td width="40%" align="right" valign="top"> Aborting a Transaction</td>
</tr>
</table>
</div>
diff --git a/db/docs/gsg_txn/JAVA/wrapup.html b/db/docs/gsg_txn/JAVA/wrapup.html
index 698bbbd88..c1070df31 100644
--- a/db/docs/gsg_txn/JAVA/wrapup.html
+++ b/db/docs/gsg_txn/JAVA/wrapup.html
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <title>Chapter 6. Summary and Examples</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Chapter 6. Summary and Examples</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
@@ -15,12 +15,12 @@
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
- <th colspan="3" align="center">Chapter 6. Summary and Examples</th>
+ <th colspan="3" align="center">Chapter 6. Summary and Examples</th>
</tr>
<tr>
- <td width="20%" align="left"><a accesskey="p" href="logconfig.html">Prev</a> </td>
- <th width="60%" align="center"> </th>
- <td width="20%" align="right"> <a accesskey="n" href="txnexample_java.html">Next</a></td>
+ <td width="20%" align="left"><a accesskey="p" href="logconfig.html">Prev</a> </td>
+ <th width="60%" align="center"> </th>
+ <td width="20%" align="right"> <a accesskey="n" href="txnexample_java.html">Next</a></td>
</tr>
</table>
<hr />
@@ -29,7 +29,7 @@
<div class="titlepage">
<div>
<div>
- <h2 class="title"><a id="wrapup"></a>Chapter 6. Summary and Examples</h2>
+ <h2 class="title"><a id="wrapup"></a>Chapter 6. Summary and Examples</h2>
</div>
</div>
<div></div>
@@ -283,18 +283,18 @@
<hr />
<table width="100%" summary="Navigation footer">
<tr>
- <td width="40%" align="left"><a accesskey="p" href="logconfig.html">Prev</a> </td>
+ <td width="40%" align="left"><a accesskey="p" href="logconfig.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="index.html">Up</a>
</td>
- <td width="40%" align="right"> <a accesskey="n" href="txnexample_java.html">Next</a></td>
+ <td width="40%" align="right"> <a accesskey="n" href="txnexample_java.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Configuring the Logging Subsystem </td>
+ <td width="40%" align="left" valign="top">Configuring the Logging Subsystem </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
- <td width="40%" align="right" valign="top"> Transaction Example</td>
+ <td width="40%" align="right" valign="top"> Transaction Example</td>
</tr>
</table>
</div>
diff --git a/db/docs/images/Oracle_BerkeleyDB_clr.bmp b/db/docs/images/Oracle_BerkeleyDB_clr.bmp
deleted file mode 100644
index 1b79293d0..000000000
--- a/db/docs/images/Oracle_BerkeleyDB_clr.bmp
+++ /dev/null
Binary files differ
diff --git a/db/docs/images/sleepycat.gif b/db/docs/images/sleepycat.gif
deleted file mode 100644
index 852703742..000000000
--- a/db/docs/images/sleepycat.gif
+++ /dev/null
Binary files differ
diff --git a/db/docs/index.html b/db/docs/index.html
index ddde46b03..b8af93f23 100644
--- a/db/docs/index.html
+++ b/db/docs/index.html
@@ -1,72 +1,210 @@
-<!--$Id: index_db.html,v 1.81 2006/09/20 20:07:21 bostic Exp $-->
+<!--$Id: index_db.html,v 1.99 2007/07/12 17:17:57 bostic Exp $-->
<html>
<head>
-<title>Berkeley DB (Version: 4.5.20)</title>
+<title>Berkeley DB (Version: 4.6.18)</title>
+<style type="text/css">
+ body {width: 75%;}
+ p {Color:#000000;Font-Family:Arial, Helvetica;Font-Size:9pt; }
+ li {Color:#000000;Font-Family:Arial, Helvetica;Font-Size:9pt; }
+ td {Color:#000000;Font-Family:Arial, Helvetica;Font-Size:9pt; width: 50%;}
+ a:visited {Color:gray;}
+ a:link {Color:#000000;}
+</style>
<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
</head>
<body bgcolor=white>
-<p align=center>
-<img src="images/Oracle_BerkeleyDB_clr.bmp" alt="Oracle Corporation">
-</p>
+<!-- REMOVE EVERYTHING ABOVE THIS LINE TO POST TO ORACLE OTN -->
+
+<center>
+<h2>Oracle Berkeley DB</h2>
+<b>
+Version 4.6.18, July 17, 2007
+</b>
+</center>
+
+<p>
+<b>Getting Started Guides</b><br>
+Get started with Berkeley DB today. If you are new to Berkeley DB, the
+following documents will help you learn about important concepts and
+guide you through how to get started.
+<p>
+Getting Started with Data Storage
+<ul>
+<table>
+<tr>
+<td>
+<li>C</li>
+</td>
+<td>
+<a href="gsg/C/BerkeleyDB-Core-C-GSG.pdf">PDF</a>&nbsp;|&nbsp;<a href="gsg/C/index.html">HTML</a>
+</td>
+</tr>
+<tr>
+<td>
+<li>C++</li>
+</td>
+<td>
+<a href="gsg/CXX/BerkeleyDB-Core-Cxx-GSG.pdf">PDF</a>&nbsp;|&nbsp;<a href="gsg/CXX/index.html">HTML</a>
+</td>
+</tr>
+<tr>
+<td>
+<li>Java</li>
+</td>
+<td>
+<a href="gsg/JAVA/BerkeleyDB-Core-JAVA-GSG.pdf">PDF</a>&nbsp;|&nbsp;<a href="gsg/JAVA/index.html">HTML</a>
+</td>
+</tr>
+</table>
+</ul>
+
+<p>
+Getting Started with Transaction Processing
+<ul>
+<table>
+<tr>
+<td>
+<li>C</li>
+</td>
+<td>
+<a href="gsg_txn/C/BerkeleyDB-Core-C-Txn.pdf">PDF</a>&nbsp;|&nbsp;<a href="gsg_txn/C/index.html">HTML</a>
+</td>
+</tr>
+<tr>
+<td>
+<li>C++</li>
+</td>
+<td>
+<a href="gsg_txn/CXX/BerkeleyDB-Core-Cxx-Txn.pdf">PDF</a>&nbsp;|&nbsp;<a href="gsg_txn/CXX/index.html">HTML</a>
+</td>
+</tr>
+<tr>
+<td>
+<li>Java</li>
+</td>
+<td>
+<a href="gsg_txn/JAVA/BerkeleyDB-Core-JAVA-Txn.pdf">PDF</a>&nbsp;|&nbsp;<a href="gsg_txn/JAVA/index.html">HTML</a>
+</td>
+</tr>
+</table>
+</ul>
+
+<p>
+Getting Started with Transactional Java Collections
+<ul>
+<table>
+<tr>
+<td>
+<li>Tutorial</li>
+</td>
+<td>
+<a href="collections/tutorial/BerkeleyDB-Java-Collections.pdf">PDF</a>&nbsp;|&nbsp;<a href="collections/tutorial/index.html">HTML</a>
+</td>
+</tr>
+</table>
+</ul>
<p>
-<table align=center cellpadding=4 border=2>
+Getting Started with Replication
+<ul>
+<table>
+<tr>
+<td>
+<li>C</li>
+</td>
+<td>
+<a href="gsg_db_rep/C/Replication-C-GSG.pdf">PDF</a>&nbsp;|&nbsp;<a href="gsg_db_rep/C/index.html">HTML</a>
+</td>
+</tr>
+<tr>
+<td>
+<li>C++</li>
+</td>
+<td>
+<a href="gsg_db_rep/CXX/Replication-CXX-GSG.pdf">PDF</a>&nbsp;|&nbsp;<a href="gsg_db_rep/CXX/index.html">HTML</a>
+</td>
+</tr>
<tr>
- <th align=center width="50%">Berkeley DB Documentation</th>
- <th align=center width="50%">Building Berkeley DB</th>
-</tr><tr valign=top>
- <td>
- <a href="api_c/frame.html">C API</a><br>
- C Getting Started Guide: <a href="gsg/C/BerkeleyDB-Core-C-GSG.pdf">PDF</a>, <a href="gsg/C/index.html">HTML</a><br>
- C Transaction Processing Guide: <a href="gsg_txn/C/BerkeleyDB-Core-C-Txn.pdf">PDF</a>, <a href="gsg_txn/C/index.html">HTML</a><br>
- C Replication Guide: <a href="gsg_db_rep/C/Replication-C-GSG.pdf">PDF</a>, <a href="gsg_db_rep/C/index.html">HTML</a>
- <p>
- <a href="api_cxx/frame.html">C++ API</a><br>
- C++ Getting Started Guide: <a href="gsg/CXX/BerkeleyDB-Core-Cxx-GSG.pdf">PDF</a>, <a href="gsg/CXX/index.html">HTML</a><br>
- C++ Transaction Processing Guide: <a href="gsg_txn/CXX/BerkeleyDB-Core-Cxx-Txn.pdf">PDF</a>, <a href="gsg_txn/CXX/index.html">HTML</a><br>
- C++ Replication Guide: <a href="gsg_db_rep/CXX/Replication-CXX-GSG.pdf">PDF</a>, <a href="gsg_db_rep/CXX/index.html">HTML</a>
- <p>
- <a href="java/index.html">Javadoc</a><br>
- Java Getting Started Guide: <a href="gsg/JAVA/BerkeleyDB-Core-JAVA-GSG.pdf">PDF</a>, <a href="gsg/JAVA/index.html">HTML</a><br>
- Java Transaction Processing Guide: <a href="gsg_txn/JAVA/BerkeleyDB-Core-JAVA-Txn.pdf">PDF</a>, <a href="gsg_txn/JAVA/index.html">HTML</a><br>
- Java Replication Guide: <a href="gsg_db_rep/JAVA/Replication-JAVA-GSG.pdf">PDF</a>, <a href="gsg_db_rep/JAVA/index.html">HTML</a><br>
- Java Collections Tutorial: <a href="collections/tutorial/BerkeleyDB-Java-Collections.pdf">PDF</a>, <a href="collections/tutorial/index.html">HTML</a>
- <p>
- <a href="api_tcl/api_tcl.html">Tcl API</a><br>
- <p>
- <a href="utility/index.html">Supporting Utilities</a><br>
- <p>
- <a href="ref/toc.html">Berkeley DB Programmer's Reference Guide</a><br>
- </td><td>
- <a href="ref/build_unix/intro.html">Building for UNIX/POSIX systems</a>
- <p>
- <a href="ref/build_vxworks/intro.html">Building for VxWorks</a>
- <p>
- <a href="ref/build_win/intro.html">Building for Windows</a>
- <p>
- <a href="ref/upgrade.4.5/toc.html">Upgrading Applications to the 4.5 release</a>
- <p>
- <a href="http://www.oracle.com/technology/software/products/berkeley-db/db/index.html">Berkeley DB Change Logs and Release Patches</a>
- <p><br><p>
- <a href="ref/debug/common.html">Troubleshooting common Berkeley DB problems</a>
- <p>
- Oracle Technology Network support forums:<br>
- &nbsp;&nbsp;&nbsp;&nbsp;<a href="http://forums.oracle.com/forums/forum.jspa?forumID=271">Berkeley DB</a><br>
- &nbsp;&nbsp;&nbsp;&nbsp;<a href="http://forums.oracle.com/forums/forum.jspa?forumID=272">Berkeley DB High Availability (Replication)</a><br>
- <p><br><p>
- <a href="license/license_db.html">Berkeley DB License</a>
- </td>
+<td>
+<li>Java</li>
+</td>
+<td>
+<a href="gsg_db_rep/JAVA/Replication-JAVA-GSG.pdf">PDF</a>&nbsp;|&nbsp;<a href="gsg_db_rep/JAVA/index.html">HTML</a>
+</td>
</tr>
+</table>
+</ul>
+
+<p>
+<b>References</b><br>
+The programmatic reference guide provides detailed information to help
+you during application design and implementation. This definitive
+reference document is organized by concept, rather than by API.
+<ul>
+<li><a href="ref/toc.html">Reference Guide for Berkeley DB</a>
+</ul>
+<p>
+<b>Programmatic APIs</b><br>
+These fully-detailed references cover every public interface for
+Berkeley DB. For each interface, the documentation lists arguments and
+return values, and covers pre- and post-conditions.
+<ul>
+<li><a href="api_c/frame.html">C</a></li>
+<li><a href="api_cxx/frame.html">C++</a></li>
+<li><a href="java/index.html">Javadoc</a></li>
+<li><a href="api_tcl/api_tcl.html">Tcl</a></li>
+</ul>
+
+<p>
+<b>Build, Installation, and Upgrading Guides</b><br>
+These guides contain helpful hints, step-by-step instructions, and
+information on platform-specific details of the build, installation, and
+upgrade processes.
+<ul>
+<li><a href="ref/build_brew/intro.html">BREW</a></li>
+<li><a href="ref/build_s60/intro.html">S60</a></li>
+<li><a href="ref/build_unix/intro.html">UNIX/POSIX</a></li>
+<li><a href="ref/build_vxworks/intro.html">VxWorks</a></li>
+<li><a href="ref/build_win/intro.html">Windows</a></li>
+<li><a href="ref/build_wince/intro.html">Windows CE</a></li>
+<p>
+<li><a href="ref/changelog/4.6.html">Berkeley DB 4.6 Change Log</a></li>
+<li><a href="ref/upgrade.4.6/toc.html">Upgrading Applications to the 4.6 release</a></li>
+<p>
+<li><a href="http://www.oracle.com/technology/software/products/berkeley-db/db/index.html">Berkeley DB Release History and Patches</a></li>
+</ul>
+
+<p>
+<b>Additional Booklets</b><br>
+<ul>
+<table>
+<tr>
+<td>
+<li>Writing In-Memory Berkeley DB Applications</li>
+</td>
+<td>
+<a href="articles/inmemory/C/InMemoryDBApplication.pdf">PDF</a>&nbsp;|&nbsp;<a href="articles/inmemory/C/index.html">HTML</a>
+</td>
+</tr>
</table>
+</ul>
<p>
-<center><b>
-Version 4.5.20, September 20, 2006<br>
-Copyright 1997-2006 Oracle Corporation. All Rights Reserved
-</b></center>
+<b>Additional Information</b><br>
+<ul>
+<li><a href="utility/index.html">Standalone utilities</a></li>
+<li><a href="http://www.oracle.com/technology/products/berkeley-db/faq/db_faq.html">Berkeley DB FAQ</a></li>
+<p>
+<li><a href="http://forums.oracle.com/forums/forum.jspa?forumID=271">Oracle Technology Support Forums -- Berkeley DB</a></li>
+<li><a href="http://forums.oracle.com/forums/forum.jspa?forumID=272">Oracle Technology Support Forums -- Berkeley DB High Availability (Replication)</a></li>
+<p>
+<li><a href="license/license_db.html">Berkeley DB License</a></li>
+</ul>
+
+<!-- REMOVE EVERYTHING BELOW THIS LINE TO POST TO ORACLE OTN -->
<p>
<hr size=1 noshade>
@@ -82,5 +220,8 @@ apply to you when you import a release of Berkeley DB including
cryptography to your country or re-distribute source code from
it in any way.
+<p>
+Copyright (c) 1997,2007 Oracle. All rights reserved.
+
</body>
</html>
diff --git a/db/docs/java/allclasses-frame.html b/db/docs/java/allclasses-frame.html
index 5cdf2b548..4b958fe7d 100644
--- a/db/docs/java/allclasses-frame.html
+++ b/db/docs/java/allclasses-frame.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:50 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:57:00 EDT 2007 -->
<TITLE>
-All Classes (Oracle Corporation - Berkeley DB Java API)
+All Classes (Oracle - Berkeley DB Java API)
</TITLE>
@@ -20,7 +20,9 @@ All Classes (Oracle Corporation - Berkeley DB Java API)
<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
<TR>
-<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="com/sleepycat/bind/tuple/BooleanBinding.html" title="class in com.sleepycat.bind.tuple" target="classFrame">BooleanBinding</A>
+<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="com/sleepycat/bind/tuple/BigIntegerBinding.html" title="class in com.sleepycat.bind.tuple" target="classFrame">BigIntegerBinding</A>
+<BR>
+<A HREF="com/sleepycat/bind/tuple/BooleanBinding.html" title="class in com.sleepycat.bind.tuple" target="classFrame">BooleanBinding</A>
<BR>
<A HREF="com/sleepycat/db/BtreePrefixCalculator.html" title="interface in com.sleepycat.db" target="classFrame"><I>BtreePrefixCalculator</I></A>
<BR>
@@ -82,7 +84,7 @@ All Classes (Oracle Corporation - Berkeley DB Java API)
<BR>
<A HREF="com/sleepycat/db/EventHandler.html" title="interface in com.sleepycat.db" target="classFrame"><I>EventHandler</I></A>
<BR>
-<A HREF="com/sleepycat/db/EventType.html" title="class in com.sleepycat.db" target="classFrame">EventType</A>
+<A HREF="com/sleepycat/db/EventHandlerAdapter.html" title="class in com.sleepycat.db" target="classFrame">EventHandlerAdapter</A>
<BR>
<A HREF="com/sleepycat/util/ExceptionUnwrapper.html" title="class in com.sleepycat.util" target="classFrame">ExceptionUnwrapper</A>
<BR>
@@ -192,12 +194,18 @@ All Classes (Oracle Corporation - Berkeley DB Java API)
<BR>
<A HREF="com/sleepycat/db/ReplicationJoinFailureException.html" title="class in com.sleepycat.db" target="classFrame">ReplicationJoinFailureException</A>
<BR>
+<A HREF="com/sleepycat/db/ReplicationLeaseExpiredException.html" title="class in com.sleepycat.db" target="classFrame">ReplicationLeaseExpiredException</A>
+<BR>
+<A HREF="com/sleepycat/db/ReplicationLeaseTimeoutException.html" title="class in com.sleepycat.db" target="classFrame">ReplicationLeaseTimeoutException</A>
+<BR>
<A HREF="com/sleepycat/db/ReplicationLockoutException.html" title="class in com.sleepycat.db" target="classFrame">ReplicationLockoutException</A>
<BR>
<A HREF="com/sleepycat/db/ReplicationManagerAckPolicy.html" title="class in com.sleepycat.db" target="classFrame">ReplicationManagerAckPolicy</A>
<BR>
<A HREF="com/sleepycat/db/ReplicationManagerStartPolicy.html" title="class in com.sleepycat.db" target="classFrame">ReplicationManagerStartPolicy</A>
<BR>
+<A HREF="com/sleepycat/db/ReplicationManagerStats.html" title="class in com.sleepycat.db" target="classFrame">ReplicationManagerStats</A>
+<BR>
<A HREF="com/sleepycat/db/ReplicationSiteUnavailableException.html" title="class in com.sleepycat.db" target="classFrame">ReplicationSiteUnavailableException</A>
<BR>
<A HREF="com/sleepycat/db/ReplicationStats.html" title="class in com.sleepycat.db" target="classFrame">ReplicationStats</A>
@@ -220,6 +228,8 @@ All Classes (Oracle Corporation - Berkeley DB Java API)
<BR>
<A HREF="com/sleepycat/db/SecondaryKeyCreator.html" title="interface in com.sleepycat.db" target="classFrame"><I>SecondaryKeyCreator</I></A>
<BR>
+<A HREF="com/sleepycat/db/SecondaryMultiKeyCreator.html" title="interface in com.sleepycat.db" target="classFrame"><I>SecondaryMultiKeyCreator</I></A>
+<BR>
<A HREF="com/sleepycat/db/Sequence.html" title="class in com.sleepycat.db" target="classFrame">Sequence</A>
<BR>
<A HREF="com/sleepycat/db/SequenceConfig.html" title="class in com.sleepycat.db" target="classFrame">SequenceConfig</A>
@@ -318,10 +328,10 @@ All Classes (Oracle Corporation - Berkeley DB Java API)
<BR>
<A HREF="com/sleepycat/bind/tuple/TupleTupleMarshalledKeyCreator.html" title="class in com.sleepycat.bind.tuple" target="classFrame">TupleTupleMarshalledKeyCreator</A>
<BR>
-<A HREF="com/sleepycat/db/UpdateConflictException.html" title="class in com.sleepycat.db" target="classFrame">UpdateConflictException</A>
-<BR>
<A HREF="com/sleepycat/util/UtfOps.html" title="class in com.sleepycat.util" target="classFrame">UtfOps</A>
<BR>
+<A HREF="com/sleepycat/db/VerboseConfig.html" title="class in com.sleepycat.db" target="classFrame">VerboseConfig</A>
+<BR>
<A HREF="com/sleepycat/db/VerifyConfig.html" title="class in com.sleepycat.db" target="classFrame">VerifyConfig</A>
<BR>
<A HREF="com/sleepycat/db/VersionMismatchException.html" title="class in com.sleepycat.db" target="classFrame">VersionMismatchException</A>
diff --git a/db/docs/java/allclasses-noframe.html b/db/docs/java/allclasses-noframe.html
index 525722e29..027dcae40 100644
--- a/db/docs/java/allclasses-noframe.html
+++ b/db/docs/java/allclasses-noframe.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:50 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:57:00 EDT 2007 -->
<TITLE>
-All Classes (Oracle Corporation - Berkeley DB Java API)
+All Classes (Oracle - Berkeley DB Java API)
</TITLE>
@@ -20,7 +20,9 @@ All Classes (Oracle Corporation - Berkeley DB Java API)
<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
<TR>
-<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="com/sleepycat/bind/tuple/BooleanBinding.html" title="class in com.sleepycat.bind.tuple">BooleanBinding</A>
+<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="com/sleepycat/bind/tuple/BigIntegerBinding.html" title="class in com.sleepycat.bind.tuple">BigIntegerBinding</A>
+<BR>
+<A HREF="com/sleepycat/bind/tuple/BooleanBinding.html" title="class in com.sleepycat.bind.tuple">BooleanBinding</A>
<BR>
<A HREF="com/sleepycat/db/BtreePrefixCalculator.html" title="interface in com.sleepycat.db"><I>BtreePrefixCalculator</I></A>
<BR>
@@ -82,7 +84,7 @@ All Classes (Oracle Corporation - Berkeley DB Java API)
<BR>
<A HREF="com/sleepycat/db/EventHandler.html" title="interface in com.sleepycat.db"><I>EventHandler</I></A>
<BR>
-<A HREF="com/sleepycat/db/EventType.html" title="class in com.sleepycat.db">EventType</A>
+<A HREF="com/sleepycat/db/EventHandlerAdapter.html" title="class in com.sleepycat.db">EventHandlerAdapter</A>
<BR>
<A HREF="com/sleepycat/util/ExceptionUnwrapper.html" title="class in com.sleepycat.util">ExceptionUnwrapper</A>
<BR>
@@ -192,12 +194,18 @@ All Classes (Oracle Corporation - Berkeley DB Java API)
<BR>
<A HREF="com/sleepycat/db/ReplicationJoinFailureException.html" title="class in com.sleepycat.db">ReplicationJoinFailureException</A>
<BR>
+<A HREF="com/sleepycat/db/ReplicationLeaseExpiredException.html" title="class in com.sleepycat.db">ReplicationLeaseExpiredException</A>
+<BR>
+<A HREF="com/sleepycat/db/ReplicationLeaseTimeoutException.html" title="class in com.sleepycat.db">ReplicationLeaseTimeoutException</A>
+<BR>
<A HREF="com/sleepycat/db/ReplicationLockoutException.html" title="class in com.sleepycat.db">ReplicationLockoutException</A>
<BR>
<A HREF="com/sleepycat/db/ReplicationManagerAckPolicy.html" title="class in com.sleepycat.db">ReplicationManagerAckPolicy</A>
<BR>
<A HREF="com/sleepycat/db/ReplicationManagerStartPolicy.html" title="class in com.sleepycat.db">ReplicationManagerStartPolicy</A>
<BR>
+<A HREF="com/sleepycat/db/ReplicationManagerStats.html" title="class in com.sleepycat.db">ReplicationManagerStats</A>
+<BR>
<A HREF="com/sleepycat/db/ReplicationSiteUnavailableException.html" title="class in com.sleepycat.db">ReplicationSiteUnavailableException</A>
<BR>
<A HREF="com/sleepycat/db/ReplicationStats.html" title="class in com.sleepycat.db">ReplicationStats</A>
@@ -220,6 +228,8 @@ All Classes (Oracle Corporation - Berkeley DB Java API)
<BR>
<A HREF="com/sleepycat/db/SecondaryKeyCreator.html" title="interface in com.sleepycat.db"><I>SecondaryKeyCreator</I></A>
<BR>
+<A HREF="com/sleepycat/db/SecondaryMultiKeyCreator.html" title="interface in com.sleepycat.db"><I>SecondaryMultiKeyCreator</I></A>
+<BR>
<A HREF="com/sleepycat/db/Sequence.html" title="class in com.sleepycat.db">Sequence</A>
<BR>
<A HREF="com/sleepycat/db/SequenceConfig.html" title="class in com.sleepycat.db">SequenceConfig</A>
@@ -318,10 +328,10 @@ All Classes (Oracle Corporation - Berkeley DB Java API)
<BR>
<A HREF="com/sleepycat/bind/tuple/TupleTupleMarshalledKeyCreator.html" title="class in com.sleepycat.bind.tuple">TupleTupleMarshalledKeyCreator</A>
<BR>
-<A HREF="com/sleepycat/db/UpdateConflictException.html" title="class in com.sleepycat.db">UpdateConflictException</A>
-<BR>
<A HREF="com/sleepycat/util/UtfOps.html" title="class in com.sleepycat.util">UtfOps</A>
<BR>
+<A HREF="com/sleepycat/db/VerboseConfig.html" title="class in com.sleepycat.db">VerboseConfig</A>
+<BR>
<A HREF="com/sleepycat/db/VerifyConfig.html" title="class in com.sleepycat.db">VerifyConfig</A>
<BR>
<A HREF="com/sleepycat/db/VersionMismatchException.html" title="class in com.sleepycat.db">VersionMismatchException</A>
diff --git a/db/docs/java/com/sleepycat/bind/ByteArrayBinding.html b/db/docs/java/com/sleepycat/bind/ByteArrayBinding.html
index 7b9c7d5d6..80f36da18 100644
--- a/db/docs/java/com/sleepycat/bind/ByteArrayBinding.html
+++ b/db/docs/java/com/sleepycat/bind/ByteArrayBinding.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-ByteArrayBinding (Oracle Corporation - Berkeley DB Java API)
+ByteArrayBinding (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.bind.ByteArrayBinding class">
@@ -14,7 +14,7 @@ ByteArrayBinding (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="ByteArrayBinding (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="ByteArrayBinding (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,7 +89,7 @@ com.sleepycat.bind</FONT>
<BR>
Class ByteArrayBinding</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.bind.ByteArrayBinding</B>
</PRE>
<DL>
@@ -97,7 +97,7 @@ Class ByteArrayBinding</H2>
</DL>
<HR>
<DL>
-<DT><PRE>public class <B>ByteArrayBinding</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A><DT>implements <A HREF="../../../com/sleepycat/bind/EntryBinding.html" title="interface in com.sleepycat.bind">EntryBinding</A></DL>
+<DT><PRE>public class <B>ByteArrayBinding</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A><DT>implements <A HREF="../../../com/sleepycat/bind/EntryBinding.html" title="interface in com.sleepycat.bind">EntryBinding</A></DL>
</PRE>
<P>
@@ -136,7 +136,7 @@ A pass-through <code>EntryBinding</code> that uses the entry's byte array as
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/bind/ByteArrayBinding.html#entryToObject(com.sleepycat.db.DatabaseEntry)">entryToObject</A></B>(<A HREF="../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;entry)</CODE>
<BR>
@@ -145,7 +145,7 @@ A pass-through <code>EntryBinding</code> that uses the entry's byte array as
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/bind/ByteArrayBinding.html#objectToEntry(java.lang.Object, com.sleepycat.db.DatabaseEntry)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B><A HREF="../../../com/sleepycat/bind/ByteArrayBinding.html#objectToEntry(java.lang.Object, com.sleepycat.db.DatabaseEntry)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;entry)</CODE>
<BR>
@@ -155,10 +155,10 @@ A pass-through <code>EntryBinding</code> that uses the entry's byte array as
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -196,7 +196,7 @@ public <B>ByteArrayBinding</B>()</PRE>
<A NAME="entryToObject(com.sleepycat.db.DatabaseEntry)"><!-- --></A><H3>
entryToObject</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>entryToObject</B>(<A HREF="../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;entry)</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>entryToObject</B>(<A HREF="../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;entry)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../com/sleepycat/bind/EntryBinding.html#entryToObject(com.sleepycat.db.DatabaseEntry)">EntryBinding</A></CODE></B></DD>
<DD>Converts a entry buffer into an Object.
@@ -214,7 +214,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" tit
<A NAME="objectToEntry(java.lang.Object, com.sleepycat.db.DatabaseEntry)"><!-- --></A><H3>
objectToEntry</H3>
<PRE>
-public void <B>objectToEntry</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+public void <B>objectToEntry</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;entry)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../com/sleepycat/bind/EntryBinding.html#objectToEntry(java.lang.Object, com.sleepycat.db.DatabaseEntry)">EntryBinding</A></CODE></B></DD>
@@ -252,7 +252,7 @@ public void <B>objectToEntry</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -288,6 +288,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&n
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/EntityBinding.html b/db/docs/java/com/sleepycat/bind/EntityBinding.html
index af2ead9d0..9030e1715 100644
--- a/db/docs/java/com/sleepycat/bind/EntityBinding.html
+++ b/db/docs/java/com/sleepycat/bind/EntityBinding.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-EntityBinding (Oracle Corporation - Berkeley DB Java API)
+EntityBinding (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.bind.EntityBinding interface">
@@ -14,7 +14,7 @@ EntityBinding (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="EntityBinding (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="EntityBinding (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -115,7 +115,7 @@ A binding between a key-value entry pair and an entity object.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/bind/EntityBinding.html#entryToObject(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry)">entryToObject</A></B>(<A HREF="../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;key,
<A HREF="../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;data)</CODE>
@@ -125,7 +125,7 @@ A binding between a key-value entry pair and an entity object.
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/bind/EntityBinding.html#objectToData(java.lang.Object, com.sleepycat.db.DatabaseEntry)">objectToData</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B><A HREF="../../../com/sleepycat/bind/EntityBinding.html#objectToData(java.lang.Object, com.sleepycat.db.DatabaseEntry)">objectToData</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;data)</CODE>
<BR>
@@ -134,7 +134,7 @@ A binding between a key-value entry pair and an entity object.
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/bind/EntityBinding.html#objectToKey(java.lang.Object, com.sleepycat.db.DatabaseEntry)">objectToKey</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B><A HREF="../../../com/sleepycat/bind/EntityBinding.html#objectToKey(java.lang.Object, com.sleepycat.db.DatabaseEntry)">objectToKey</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;key)</CODE>
<BR>
@@ -157,7 +157,7 @@ A binding between a key-value entry pair and an entity object.
<A NAME="entryToObject(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry)"><!-- --></A><H3>
entryToObject</H3>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>entryToObject</B>(<A HREF="../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;key,
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>entryToObject</B>(<A HREF="../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;key,
<A HREF="../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;data)</PRE>
<DL>
<DD>Converts key and data entry buffers into an entity Object.
@@ -172,7 +172,7 @@ entryToObject</H3>
<A NAME="objectToKey(java.lang.Object, com.sleepycat.db.DatabaseEntry)"><!-- --></A><H3>
objectToKey</H3>
<PRE>
-void <B>objectToKey</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+void <B>objectToKey</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;key)</PRE>
<DL>
<DD>Extracts the key entry from an entity Object.
@@ -186,7 +186,7 @@ void <B>objectToKey</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang
<A NAME="objectToData(java.lang.Object, com.sleepycat.db.DatabaseEntry)"><!-- --></A><H3>
objectToData</H3>
<PRE>
-void <B>objectToData</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+void <B>objectToData</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;data)</PRE>
<DL>
<DD>Extracts the data entry from an entity Object.
@@ -220,7 +220,7 @@ void <B>objectToData</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lan
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -256,6 +256,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHO
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/EntryBinding.html b/db/docs/java/com/sleepycat/bind/EntryBinding.html
index b015ebd98..f585df523 100644
--- a/db/docs/java/com/sleepycat/bind/EntryBinding.html
+++ b/db/docs/java/com/sleepycat/bind/EntryBinding.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-EntryBinding (Oracle Corporation - Berkeley DB Java API)
+EntryBinding (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.bind.EntryBinding interface">
@@ -14,7 +14,7 @@ EntryBinding (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="EntryBinding (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="EntryBinding (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,7 +89,7 @@ com.sleepycat.bind</FONT>
<BR>
Interface EntryBinding</H2>
<DL>
-<DT><B>All Known Implementing Classes:</B> <DD><A HREF="../../../com/sleepycat/bind/tuple/BooleanBinding.html" title="class in com.sleepycat.bind.tuple">BooleanBinding</A>, <A HREF="../../../com/sleepycat/bind/ByteArrayBinding.html" title="class in com.sleepycat.bind">ByteArrayBinding</A>, <A HREF="../../../com/sleepycat/bind/tuple/ByteBinding.html" title="class in com.sleepycat.bind.tuple">ByteBinding</A>, <A HREF="../../../com/sleepycat/bind/tuple/CharacterBinding.html" title="class in com.sleepycat.bind.tuple">CharacterBinding</A>, <A HREF="../../../com/sleepycat/bind/tuple/DoubleBinding.html" title="class in com.sleepycat.bind.tuple">DoubleBinding</A>, <A HREF="../../../com/sleepycat/bind/tuple/FloatBinding.html" title="class in com.sleepycat.bind.tuple">FloatBinding</A>, <A HREF="../../../com/sleepycat/bind/tuple/IntegerBinding.html" title="class in com.sleepycat.bind.tuple">IntegerBinding</A>, <A HREF="../../../com/sleepycat/bind/tuple/LongBinding.html" title="class in com.sleepycat.bind.tuple">LongBinding</A>, <A HREF="../../../com/sleepycat/bind/RecordNumberBinding.html" title="class in com.sleepycat.bind">RecordNumberBinding</A>, <A HREF="../../../com/sleepycat/bind/serial/SerialBinding.html" title="class in com.sleepycat.bind.serial">SerialBinding</A>, <A HREF="../../../com/sleepycat/bind/tuple/ShortBinding.html" title="class in com.sleepycat.bind.tuple">ShortBinding</A>, <A HREF="../../../com/sleepycat/bind/tuple/SortedDoubleBinding.html" title="class in com.sleepycat.bind.tuple">SortedDoubleBinding</A>, <A HREF="../../../com/sleepycat/bind/tuple/SortedFloatBinding.html" title="class in com.sleepycat.bind.tuple">SortedFloatBinding</A>, <A HREF="../../../com/sleepycat/bind/tuple/StringBinding.html" title="class in com.sleepycat.bind.tuple">StringBinding</A>, <A HREF="../../../com/sleepycat/bind/tuple/TupleBinding.html" title="class in com.sleepycat.bind.tuple">TupleBinding</A>, <A HREF="../../../com/sleepycat/bind/tuple/TupleInputBinding.html" title="class in com.sleepycat.bind.tuple">TupleInputBinding</A>, <A HREF="../../../com/sleepycat/bind/tuple/TupleMarshalledBinding.html" title="class in com.sleepycat.bind.tuple">TupleMarshalledBinding</A></DD>
+<DT><B>All Known Implementing Classes:</B> <DD><A HREF="../../../com/sleepycat/bind/tuple/BigIntegerBinding.html" title="class in com.sleepycat.bind.tuple">BigIntegerBinding</A>, <A HREF="../../../com/sleepycat/bind/tuple/BooleanBinding.html" title="class in com.sleepycat.bind.tuple">BooleanBinding</A>, <A HREF="../../../com/sleepycat/bind/ByteArrayBinding.html" title="class in com.sleepycat.bind">ByteArrayBinding</A>, <A HREF="../../../com/sleepycat/bind/tuple/ByteBinding.html" title="class in com.sleepycat.bind.tuple">ByteBinding</A>, <A HREF="../../../com/sleepycat/bind/tuple/CharacterBinding.html" title="class in com.sleepycat.bind.tuple">CharacterBinding</A>, <A HREF="../../../com/sleepycat/bind/tuple/DoubleBinding.html" title="class in com.sleepycat.bind.tuple">DoubleBinding</A>, <A HREF="../../../com/sleepycat/bind/tuple/FloatBinding.html" title="class in com.sleepycat.bind.tuple">FloatBinding</A>, <A HREF="../../../com/sleepycat/bind/tuple/IntegerBinding.html" title="class in com.sleepycat.bind.tuple">IntegerBinding</A>, <A HREF="../../../com/sleepycat/bind/tuple/LongBinding.html" title="class in com.sleepycat.bind.tuple">LongBinding</A>, <A HREF="../../../com/sleepycat/bind/RecordNumberBinding.html" title="class in com.sleepycat.bind">RecordNumberBinding</A>, <A HREF="../../../com/sleepycat/bind/serial/SerialBinding.html" title="class in com.sleepycat.bind.serial">SerialBinding</A>, <A HREF="../../../com/sleepycat/bind/tuple/ShortBinding.html" title="class in com.sleepycat.bind.tuple">ShortBinding</A>, <A HREF="../../../com/sleepycat/bind/tuple/SortedDoubleBinding.html" title="class in com.sleepycat.bind.tuple">SortedDoubleBinding</A>, <A HREF="../../../com/sleepycat/bind/tuple/SortedFloatBinding.html" title="class in com.sleepycat.bind.tuple">SortedFloatBinding</A>, <A HREF="../../../com/sleepycat/bind/tuple/StringBinding.html" title="class in com.sleepycat.bind.tuple">StringBinding</A>, <A HREF="../../../com/sleepycat/bind/tuple/TupleBinding.html" title="class in com.sleepycat.bind.tuple">TupleBinding</A>, <A HREF="../../../com/sleepycat/bind/tuple/TupleInputBinding.html" title="class in com.sleepycat.bind.tuple">TupleInputBinding</A>, <A HREF="../../../com/sleepycat/bind/tuple/TupleMarshalledBinding.html" title="class in com.sleepycat.bind.tuple">TupleMarshalledBinding</A></DD>
</DL>
<HR>
<DL>
@@ -115,7 +115,7 @@ A binding between a key or data entry and a key or data object.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/bind/EntryBinding.html#entryToObject(com.sleepycat.db.DatabaseEntry)">entryToObject</A></B>(<A HREF="../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;entry)</CODE>
<BR>
@@ -124,7 +124,7 @@ A binding between a key or data entry and a key or data object.
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/bind/EntryBinding.html#objectToEntry(java.lang.Object, com.sleepycat.db.DatabaseEntry)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B><A HREF="../../../com/sleepycat/bind/EntryBinding.html#objectToEntry(java.lang.Object, com.sleepycat.db.DatabaseEntry)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;entry)</CODE>
<BR>
@@ -147,7 +147,7 @@ A binding between a key or data entry and a key or data object.
<A NAME="entryToObject(com.sleepycat.db.DatabaseEntry)"><!-- --></A><H3>
entryToObject</H3>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>entryToObject</B>(<A HREF="../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;entry)</PRE>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>entryToObject</B>(<A HREF="../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;entry)</PRE>
<DL>
<DD>Converts a entry buffer into an Object.
<P>
@@ -161,7 +161,7 @@ entryToObject</H3>
<A NAME="objectToEntry(java.lang.Object, com.sleepycat.db.DatabaseEntry)"><!-- --></A><H3>
objectToEntry</H3>
<PRE>
-void <B>objectToEntry</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+void <B>objectToEntry</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;entry)</PRE>
<DL>
<DD>Converts an Object into a entry buffer.
@@ -195,7 +195,7 @@ void <B>objectToEntry</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/la
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -231,6 +231,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHO
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/RecordNumberBinding.html b/db/docs/java/com/sleepycat/bind/RecordNumberBinding.html
index 94a37d104..96537b425 100644
--- a/db/docs/java/com/sleepycat/bind/RecordNumberBinding.html
+++ b/db/docs/java/com/sleepycat/bind/RecordNumberBinding.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-RecordNumberBinding (Oracle Corporation - Berkeley DB Java API)
+RecordNumberBinding (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.bind.RecordNumberBinding class">
@@ -14,7 +14,7 @@ RecordNumberBinding (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="RecordNumberBinding (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="RecordNumberBinding (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,7 +89,7 @@ com.sleepycat.bind</FONT>
<BR>
Class RecordNumberBinding</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.bind.RecordNumberBinding</B>
</PRE>
<DL>
@@ -97,7 +97,7 @@ Class RecordNumberBinding</H2>
</DL>
<HR>
<DL>
-<DT><PRE>public class <B>RecordNumberBinding</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A><DT>implements <A HREF="../../../com/sleepycat/bind/EntryBinding.html" title="interface in com.sleepycat.bind">EntryBinding</A></DL>
+<DT><PRE>public class <B>RecordNumberBinding</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A><DT>implements <A HREF="../../../com/sleepycat/bind/EntryBinding.html" title="interface in com.sleepycat.bind">EntryBinding</A></DL>
</PRE>
<P>
@@ -139,7 +139,7 @@ An <code>EntryBinding</code> that treats a record number key entry as a
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/bind/RecordNumberBinding.html#entryToObject(com.sleepycat.db.DatabaseEntry)">entryToObject</A></B>(<A HREF="../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;entry)</CODE>
<BR>
@@ -157,7 +157,7 @@ An <code>EntryBinding</code> that treats a record number key entry as a
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/bind/RecordNumberBinding.html#objectToEntry(java.lang.Object, com.sleepycat.db.DatabaseEntry)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B><A HREF="../../../com/sleepycat/bind/RecordNumberBinding.html#objectToEntry(java.lang.Object, com.sleepycat.db.DatabaseEntry)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;entry)</CODE>
<BR>
@@ -177,10 +177,10 @@ An <code>EntryBinding</code> that treats a record number key entry as a
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -218,7 +218,7 @@ public <B>RecordNumberBinding</B>()</PRE>
<A NAME="entryToObject(com.sleepycat.db.DatabaseEntry)"><!-- --></A><H3>
entryToObject</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>entryToObject</B>(<A HREF="../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;entry)</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>entryToObject</B>(<A HREF="../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;entry)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../com/sleepycat/bind/EntryBinding.html#entryToObject(com.sleepycat.db.DatabaseEntry)">EntryBinding</A></CODE></B></DD>
<DD>Converts a entry buffer into an Object.
@@ -236,7 +236,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" tit
<A NAME="objectToEntry(java.lang.Object, com.sleepycat.db.DatabaseEntry)"><!-- --></A><H3>
objectToEntry</H3>
<PRE>
-public void <B>objectToEntry</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+public void <B>objectToEntry</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;entry)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../com/sleepycat/bind/EntryBinding.html#objectToEntry(java.lang.Object, com.sleepycat.db.DatabaseEntry)">EntryBinding</A></CODE></B></DD>
@@ -310,7 +310,7 @@ public static void <B>recordNumberToEntry</B>(long&nbsp;recordNumber,
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -346,6 +346,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&n
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/class-use/ByteArrayBinding.html b/db/docs/java/com/sleepycat/bind/class-use/ByteArrayBinding.html
index f6c538346..dff14bc79 100644
--- a/db/docs/java/com/sleepycat/bind/class-use/ByteArrayBinding.html
+++ b/db/docs/java/com/sleepycat/bind/class-use/ByteArrayBinding.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.bind.ByteArrayBinding (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.bind.ByteArrayBinding (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.bind.ByteArrayBinding (Oracle Corporation - Berkeley
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.bind.ByteArrayBinding (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.bind.ByteArrayBinding (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -105,7 +105,7 @@ No usage of com.sleepycat.bind.ByteArrayBinding
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -135,6 +135,6 @@ No usage of com.sleepycat.bind.ByteArrayBinding
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/class-use/EntityBinding.html b/db/docs/java/com/sleepycat/bind/class-use/EntityBinding.html
index faf162767..6c9ba70ca 100644
--- a/db/docs/java/com/sleepycat/bind/class-use/EntityBinding.html
+++ b/db/docs/java/com/sleepycat/bind/class-use/EntityBinding.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Interface com.sleepycat.bind.EntityBinding (Oracle Corporation - Berkeley DB Java API)
+Uses of Interface com.sleepycat.bind.EntityBinding (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Interface com.sleepycat.bind.EntityBinding (Oracle Corporation - Berkele
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Interface com.sleepycat.bind.EntityBinding (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Interface com.sleepycat.bind.EntityBinding (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -289,7 +289,7 @@ Uses of <A HREF="../../../../com/sleepycat/bind/EntityBinding.html" title="inter
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -319,6 +319,6 @@ Uses of <A HREF="../../../../com/sleepycat/bind/EntityBinding.html" title="inter
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/class-use/EntryBinding.html b/db/docs/java/com/sleepycat/bind/class-use/EntryBinding.html
index e744daadb..6366f3c62 100644
--- a/db/docs/java/com/sleepycat/bind/class-use/EntryBinding.html
+++ b/db/docs/java/com/sleepycat/bind/class-use/EntryBinding.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Interface com.sleepycat.bind.EntryBinding (Oracle Corporation - Berkeley DB Java API)
+Uses of Interface com.sleepycat.bind.EntryBinding (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Interface com.sleepycat.bind.EntryBinding (Oracle Corporation - Berkeley
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Interface com.sleepycat.bind.EntryBinding (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Interface com.sleepycat.bind.EntryBinding (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -182,6 +182,14 @@ Uses of <A HREF="../../../../com/sleepycat/bind/EntryBinding.html" title="interf
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;class</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/BigIntegerBinding.html" title="class in com.sleepycat.bind.tuple">BigIntegerBinding</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A concrete <code>TupleBinding</code> for a <code>BigInteger</code> value.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;class</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/BooleanBinding.html" title="class in com.sleepycat.bind.tuple">BooleanBinding</A></B></CODE>
<BR>
@@ -323,8 +331,8 @@ Uses of <A HREF="../../../../com/sleepycat/bind/EntryBinding.html" title="interf
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A></CODE></FONT></TD>
-<TD><CODE><B>StoredMap.</B><B><A HREF="../../../../com/sleepycat/collections/StoredMap.html#duplicatesMap(java.lang.Object, com.sleepycat.bind.EntryBinding)">duplicatesMap</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;secondaryKey,
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A></CODE></FONT></TD>
+<TD><CODE><B>StoredMap.</B><B><A HREF="../../../../com/sleepycat/collections/StoredMap.html#duplicatesMap(java.lang.Object, com.sleepycat.bind.EntryBinding)">duplicatesMap</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;secondaryKey,
<A HREF="../../../../com/sleepycat/bind/EntryBinding.html" title="interface in com.sleepycat.bind">EntryBinding</A>&nbsp;primaryKeyBinding)</CODE>
<BR>
@@ -478,7 +486,7 @@ Uses of <A HREF="../../../../com/sleepycat/bind/EntryBinding.html" title="interf
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -508,6 +516,6 @@ Uses of <A HREF="../../../../com/sleepycat/bind/EntryBinding.html" title="interf
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/class-use/RecordNumberBinding.html b/db/docs/java/com/sleepycat/bind/class-use/RecordNumberBinding.html
index f7ab1494c..4cbd24594 100644
--- a/db/docs/java/com/sleepycat/bind/class-use/RecordNumberBinding.html
+++ b/db/docs/java/com/sleepycat/bind/class-use/RecordNumberBinding.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.bind.RecordNumberBinding (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.bind.RecordNumberBinding (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.bind.RecordNumberBinding (Oracle Corporation - Berke
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.bind.RecordNumberBinding (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.bind.RecordNumberBinding (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -105,7 +105,7 @@ No usage of com.sleepycat.bind.RecordNumberBinding
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -135,6 +135,6 @@ No usage of com.sleepycat.bind.RecordNumberBinding
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/package-frame.html b/db/docs/java/com/sleepycat/bind/package-frame.html
index b0b69199d..09447221f 100644
--- a/db/docs/java/com/sleepycat/bind/package-frame.html
+++ b/db/docs/java/com/sleepycat/bind/package-frame.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:48 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-com.sleepycat.bind (Oracle Corporation - Berkeley DB Java API)
+com.sleepycat.bind (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.bind package">
diff --git a/db/docs/java/com/sleepycat/bind/package-summary.html b/db/docs/java/com/sleepycat/bind/package-summary.html
index 1b45c2fb3..aed0cad56 100644
--- a/db/docs/java/com/sleepycat/bind/package-summary.html
+++ b/db/docs/java/com/sleepycat/bind/package-summary.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:48 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-com.sleepycat.bind (Oracle Corporation - Berkeley DB Java API)
+com.sleepycat.bind (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.bind package">
@@ -14,7 +14,7 @@ com.sleepycat.bind (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="com.sleepycat.bind (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="com.sleepycat.bind (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -158,7 +158,7 @@ Bindings between database entries and Java objects.
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -188,6 +188,6 @@ Bindings between database entries and Java objects.
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/package-tree.html b/db/docs/java/com/sleepycat/bind/package-tree.html
index f0d5cb73b..48b95fe8a 100644
--- a/db/docs/java/com/sleepycat/bind/package-tree.html
+++ b/db/docs/java/com/sleepycat/bind/package-tree.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:48 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-com.sleepycat.bind Class Hierarchy (Oracle Corporation - Berkeley DB Java API)
+com.sleepycat.bind Class Hierarchy (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ com.sleepycat.bind Class Hierarchy (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="com.sleepycat.bind Class Hierarchy (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="com.sleepycat.bind Class Hierarchy (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -87,7 +87,7 @@ Hierarchy For Package com.sleepycat.bind
Class Hierarchy
</H2>
<UL>
-<LI TYPE="circle">java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang"><B>Object</B></A><UL>
+<LI TYPE="circle">java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang"><B>Object</B></A><UL>
<LI TYPE="circle">com.sleepycat.bind.<A HREF="../../../com/sleepycat/bind/ByteArrayBinding.html" title="class in com.sleepycat.bind"><B>ByteArrayBinding</B></A> (implements com.sleepycat.bind.<A HREF="../../../com/sleepycat/bind/EntryBinding.html" title="interface in com.sleepycat.bind">EntryBinding</A>)
<LI TYPE="circle">com.sleepycat.bind.<A HREF="../../../com/sleepycat/bind/RecordNumberBinding.html" title="class in com.sleepycat.bind"><B>RecordNumberBinding</B></A> (implements com.sleepycat.bind.<A HREF="../../../com/sleepycat/bind/EntryBinding.html" title="interface in com.sleepycat.bind">EntryBinding</A>)
</UL>
@@ -121,7 +121,7 @@ Interface Hierarchy
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -151,6 +151,6 @@ Interface Hierarchy
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/package-use.html b/db/docs/java/com/sleepycat/bind/package-use.html
index 71d3b3561..3b87ebd46 100644
--- a/db/docs/java/com/sleepycat/bind/package-use.html
+++ b/db/docs/java/com/sleepycat/bind/package-use.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:57:00 EDT 2007 -->
<TITLE>
-Uses of Package com.sleepycat.bind (Oracle Corporation - Berkeley DB Java API)
+Uses of Package com.sleepycat.bind (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Package com.sleepycat.bind (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Package com.sleepycat.bind (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Package com.sleepycat.bind (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -206,7 +206,7 @@ Classes in <A HREF="../../../com/sleepycat/bind/package-summary.html">com.sleepy
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -236,6 +236,6 @@ Classes in <A HREF="../../../com/sleepycat/bind/package-summary.html">com.sleepy
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/serial/ClassCatalog.html b/db/docs/java/com/sleepycat/bind/serial/ClassCatalog.html
index dea30aef4..c5077f349 100644
--- a/db/docs/java/com/sleepycat/bind/serial/ClassCatalog.html
+++ b/db/docs/java/com/sleepycat/bind/serial/ClassCatalog.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-ClassCatalog (Oracle Corporation - Berkeley DB Java API)
+ClassCatalog (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.bind.serial.ClassCatalog interface">
@@ -14,7 +14,7 @@ ClassCatalog (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="ClassCatalog (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="ClassCatalog (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -136,7 +136,7 @@ A catalog of class description information for use during object
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamClass.html" title="class or interface in java.io">ObjectStreamClass</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamClass.html" title="class or interface in java.io">ObjectStreamClass</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/ClassCatalog.html#getClassFormat(byte[])">getClassFormat</A></B>(byte[]&nbsp;classID)</CODE>
<BR>
@@ -145,7 +145,7 @@ A catalog of class description information for use during object
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;byte[]</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/ClassCatalog.html#getClassID(java.io.ObjectStreamClass)">getClassID</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamClass.html" title="class or interface in java.io">ObjectStreamClass</A>&nbsp;classDesc)</CODE>
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/ClassCatalog.html#getClassID(java.io.ObjectStreamClass)">getClassID</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamClass.html" title="class or interface in java.io">ObjectStreamClass</A>&nbsp;classDesc)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the class ID for the current version of the given class
@@ -184,9 +184,9 @@ void <B>close</B>()
<A NAME="getClassID(java.io.ObjectStreamClass)"><!-- --></A><H3>
getClassID</H3>
<PRE>
-byte[] <B>getClassID</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamClass.html" title="class or interface in java.io">ObjectStreamClass</A>&nbsp;classDesc)
+byte[] <B>getClassID</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamClass.html" title="class or interface in java.io">ObjectStreamClass</A>&nbsp;classDesc)
throws <A HREF="../../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A>,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/ClassNotFoundException.html" title="class or interface in java.lang">ClassNotFoundException</A></PRE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/ClassNotFoundException.html" title="class or interface in java.lang">ClassNotFoundException</A></PRE>
<DL>
<DD>Return the class ID for the current version of the given class
description.
@@ -202,7 +202,7 @@ byte[] <B>getClassID</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/
<DT><B>Returns:</B><DD>The class ID for the current version of the class.
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/ClassNotFoundException.html" title="class or interface in java.lang">ClassNotFoundException</A></CODE></DL>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/ClassNotFoundException.html" title="class or interface in java.lang">ClassNotFoundException</A></CODE></DL>
</DD>
</DL>
<HR>
@@ -210,9 +210,9 @@ byte[] <B>getClassID</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/
<A NAME="getClassFormat(byte[])"><!-- --></A><H3>
getClassFormat</H3>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamClass.html" title="class or interface in java.io">ObjectStreamClass</A> <B>getClassFormat</B>(byte[]&nbsp;classID)
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamClass.html" title="class or interface in java.io">ObjectStreamClass</A> <B>getClassFormat</B>(byte[]&nbsp;classID)
throws <A HREF="../../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A>,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/ClassNotFoundException.html" title="class or interface in java.lang">ClassNotFoundException</A></PRE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/ClassNotFoundException.html" title="class or interface in java.lang">ClassNotFoundException</A></PRE>
<DL>
<DD>Return the ObjectStreamClass for the given class ID. This may or may
not be the current class format, depending on whether the class has
@@ -224,7 +224,7 @@ getClassFormat</H3>
represent the current version of the class.
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/ClassNotFoundException.html" title="class or interface in java.lang">ClassNotFoundException</A></CODE></DL>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/ClassNotFoundException.html" title="class or interface in java.lang">ClassNotFoundException</A></CODE></DL>
</DD>
</DL>
<!-- ========= END OF CLASS DATA ========= -->
@@ -252,7 +252,7 @@ getClassFormat</H3>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -288,6 +288,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHO
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/serial/SerialBase.html b/db/docs/java/com/sleepycat/bind/serial/SerialBase.html
index dacd18c1a..17d60ed86 100644
--- a/db/docs/java/com/sleepycat/bind/serial/SerialBase.html
+++ b/db/docs/java/com/sleepycat/bind/serial/SerialBase.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-SerialBase (Oracle Corporation - Berkeley DB Java API)
+SerialBase (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.bind.serial.SerialBase class">
@@ -14,7 +14,7 @@ SerialBase (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="SerialBase (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="SerialBase (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,7 +89,7 @@ com.sleepycat.bind.serial</FONT>
<BR>
Class SerialBase</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.bind.serial.SerialBase</B>
</PRE>
<DL>
@@ -97,7 +97,7 @@ Class SerialBase</H2>
</DL>
<HR>
<DL>
-<DT><PRE>public class <B>SerialBase</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
+<DT><PRE>public class <B>SerialBase</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
</PRE>
<P>
@@ -152,7 +152,7 @@ A base class for serial bindings creators that provides control over the
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../../com/sleepycat/util/FastOutputStream.html" title="class in com.sleepycat.util">FastOutputStream</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/SerialBase.html#getSerialOutput(java.lang.Object)">getSerialOutput</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/SerialBase.html#getSerialOutput(java.lang.Object)">getSerialOutput</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns an empty SerialOutput instance that will be used by the serial
@@ -171,10 +171,10 @@ A base class for serial bindings creators that provides control over the
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -245,7 +245,7 @@ public int <B>getSerialBufferSize</B>()</PRE>
<A NAME="getSerialOutput(java.lang.Object)"><!-- --></A><H3>
getSerialOutput</H3>
<PRE>
-protected <A HREF="../../../../com/sleepycat/util/FastOutputStream.html" title="class in com.sleepycat.util">FastOutputStream</A> <B>getSerialOutput</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</PRE>
+protected <A HREF="../../../../com/sleepycat/util/FastOutputStream.html" title="class in com.sleepycat.util">FastOutputStream</A> <B>getSerialOutput</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</PRE>
<DL>
<DD>Returns an empty SerialOutput instance that will be used by the serial
binding or key creator.
@@ -289,7 +289,7 @@ protected <A HREF="../../../../com/sleepycat/util/FastOutputStream.html" title="
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -325,6 +325,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&n
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/serial/SerialBinding.html b/db/docs/java/com/sleepycat/bind/serial/SerialBinding.html
index b1823e55f..861996350 100644
--- a/db/docs/java/com/sleepycat/bind/serial/SerialBinding.html
+++ b/db/docs/java/com/sleepycat/bind/serial/SerialBinding.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-SerialBinding (Oracle Corporation - Berkeley DB Java API)
+SerialBinding (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.bind.serial.SerialBinding class">
@@ -14,7 +14,7 @@ SerialBinding (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="SerialBinding (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="SerialBinding (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,7 +89,7 @@ com.sleepycat.bind.serial</FONT>
<BR>
Class SerialBinding</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../../com/sleepycat/bind/serial/SerialBase.html" title="class in com.sleepycat.bind.serial">com.sleepycat.bind.serial.SerialBase</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.bind.serial.SerialBinding</B>
</PRE>
@@ -138,7 +138,7 @@ A concrete <code>EntryBinding</code> that treats a key or data entry as
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/SerialBinding.html#SerialBinding(com.sleepycat.bind.serial.ClassCatalog, java.lang.Class)">SerialBinding</A></B>(<A HREF="../../../../com/sleepycat/bind/serial/ClassCatalog.html" title="interface in com.sleepycat.bind.serial">ClassCatalog</A>&nbsp;classCatalog,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;baseClass)</CODE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;baseClass)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a serial binding.</TD>
@@ -155,7 +155,7 @@ A concrete <code>EntryBinding</code> that treats a key or data entry as
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/SerialBinding.html#entryToObject(com.sleepycat.db.DatabaseEntry)">entryToObject</A></B>(<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;entry)</CODE>
<BR>
@@ -163,7 +163,7 @@ A concrete <code>EntryBinding</code> that treats a key or data entry as
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/SerialBinding.html#getBaseClass()">getBaseClass</A></B>()</CODE>
<BR>
@@ -171,7 +171,7 @@ A concrete <code>EntryBinding</code> that treats a key or data entry as
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/ClassLoader.html" title="class or interface in java.lang">ClassLoader</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/ClassLoader.html" title="class or interface in java.lang">ClassLoader</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/SerialBinding.html#getClassLoader()">getClassLoader</A></B>()</CODE>
<BR>
@@ -181,7 +181,7 @@ A concrete <code>EntryBinding</code> that treats a key or data entry as
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/SerialBinding.html#objectToEntry(java.lang.Object, com.sleepycat.db.DatabaseEntry)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/SerialBinding.html#objectToEntry(java.lang.Object, com.sleepycat.db.DatabaseEntry)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;entry)</CODE>
<BR>
@@ -200,10 +200,10 @@ A concrete <code>EntryBinding</code> that treats a key or data entry as
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -223,7 +223,7 @@ A concrete <code>EntryBinding</code> that treats a key or data entry as
SerialBinding</H3>
<PRE>
public <B>SerialBinding</B>(<A HREF="../../../../com/sleepycat/bind/serial/ClassCatalog.html" title="interface in com.sleepycat.bind.serial">ClassCatalog</A>&nbsp;classCatalog,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;baseClass)</PRE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;baseClass)</PRE>
<DL>
<DD>Creates a serial binding.
<P>
@@ -247,7 +247,7 @@ public <B>SerialBinding</B>(<A HREF="../../../../com/sleepycat/bind/serial/Class
<A NAME="getBaseClass()"><!-- --></A><H3>
getBaseClass</H3>
<PRE>
-public final <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A> <B>getBaseClass</B>()</PRE>
+public final <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A> <B>getBaseClass</B>()</PRE>
<DL>
<DD>Returns the base class for this binding.
<P>
@@ -264,7 +264,7 @@ public final <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html
<A NAME="getClassLoader()"><!-- --></A><H3>
getClassLoader</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/ClassLoader.html" title="class or interface in java.lang">ClassLoader</A> <B>getClassLoader</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/ClassLoader.html" title="class or interface in java.lang">ClassLoader</A> <B>getClassLoader</B>()</PRE>
<DL>
<DD>Returns the class loader to be used during deserialization, or null if
a default class loader should be used. The default implementation of
@@ -294,7 +294,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/ClassLoader.html
<A NAME="entryToObject(com.sleepycat.db.DatabaseEntry)"><!-- --></A><H3>
entryToObject</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>entryToObject</B>(<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;entry)</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>entryToObject</B>(<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;entry)</PRE>
<DL>
<DD>Deserialize an object from an entry buffer. May only be called for data
that was serialized using <A HREF="../../../../com/sleepycat/bind/serial/SerialBinding.html#objectToEntry(java.lang.Object, com.sleepycat.db.DatabaseEntry)"><CODE>objectToEntry(java.lang.Object, com.sleepycat.db.DatabaseEntry)</CODE></A>, since the fixed
@@ -314,7 +314,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" tit
<A NAME="objectToEntry(java.lang.Object, com.sleepycat.db.DatabaseEntry)"><!-- --></A><H3>
objectToEntry</H3>
<PRE>
-public void <B>objectToEntry</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+public void <B>objectToEntry</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;entry)</PRE>
<DL>
<DD>Serialize an object into an entry buffer. The fixed serialization
@@ -332,7 +332,7 @@ public void <B>objectToEntry</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>object</CODE> - is the input deserialized object.<DD><CODE>entry</CODE> - is the output serialized entry.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if the object is not an instance of the
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if the object is not an instance of the
base class for this binding.</DL>
</DD>
</DL>
@@ -361,7 +361,7 @@ public void <B>objectToEntry</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -397,6 +397,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&n
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/serial/SerialInput.html b/db/docs/java/com/sleepycat/bind/serial/SerialInput.html
index 71d19b976..1d01b085f 100644
--- a/db/docs/java/com/sleepycat/bind/serial/SerialInput.html
+++ b/db/docs/java/com/sleepycat/bind/serial/SerialInput.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-SerialInput (Oracle Corporation - Berkeley DB Java API)
+SerialInput (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.bind.serial.SerialInput class">
@@ -14,7 +14,7 @@ SerialInput (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="SerialInput (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="SerialInput (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,17 +89,17 @@ com.sleepycat.bind.serial</FONT>
<BR>
Class SerialInput</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
- <IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/InputStream.html" title="class or interface in java.io">java.io.InputStream</A>
- <IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectInputStream.html" title="class or interface in java.io">java.io.ObjectInputStream</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+ <IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/InputStream.html" title="class or interface in java.io">java.io.InputStream</A>
+ <IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectInputStream.html" title="class or interface in java.io">java.io.ObjectInputStream</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.bind.serial.SerialInput</B>
</PRE>
<DL>
-<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/Closeable.html" title="class or interface in java.io">Closeable</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/DataInput.html" title="class or interface in java.io">DataInput</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectInput.html" title="class or interface in java.io">ObjectInput</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html" title="class or interface in java.io">ObjectStreamConstants</A></DD>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Closeable.html" title="class or interface in java.io">Closeable</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/DataInput.html" title="class or interface in java.io">DataInput</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectInput.html" title="class or interface in java.io">ObjectInput</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html" title="class or interface in java.io">ObjectStreamConstants</A></DD>
</DL>
<HR>
<DL>
-<DT><PRE>public class <B>SerialInput</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectInputStream.html" title="class or interface in java.io">ObjectInputStream</A></DL>
+<DT><PRE>public class <B>SerialInput</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectInputStream.html" title="class or interface in java.io">ObjectInputStream</A></DL>
</PRE>
<P>
@@ -107,10 +107,10 @@ A specialized <code>ObjectInputStream</code> that gets class description
information from a <code>ClassCatalog</code>. It is used by
<code>SerialBinding</code>.
- <p>This class is used instead of an <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectInputStream.html" title="class or interface in java.io"><CODE>ObjectInputStream</CODE></A>, which it
+ <p>This class is used instead of an <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectInputStream.html" title="class or interface in java.io"><CODE>ObjectInputStream</CODE></A>, which it
extends, to read an object stream written by the <A HREF="../../../../com/sleepycat/bind/serial/SerialOutput.html" title="class in com.sleepycat.bind.serial"><CODE>SerialOutput</CODE></A> class.
For reading objects from a database normally one of the serial binding
- classes is used. <A HREF="../../../../com/sleepycat/bind/serial/SerialInput.html" title="class in com.sleepycat.bind.serial"><CODE>SerialInput</CODE></A> is used when an <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectInputStream.html" title="class or interface in java.io"><CODE>ObjectInputStream</CODE></A> is needed along with compact storage. A <A HREF="../../../../com/sleepycat/bind/serial/ClassCatalog.html" title="interface in com.sleepycat.bind.serial"><CODE>ClassCatalog</CODE></A> must be supplied, however, to stored shared class
+ classes is used. <A HREF="../../../../com/sleepycat/bind/serial/SerialInput.html" title="class in com.sleepycat.bind.serial"><CODE>SerialInput</CODE></A> is used when an <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectInputStream.html" title="class or interface in java.io"><CODE>ObjectInputStream</CODE></A> is needed along with compact storage. A <A HREF="../../../../com/sleepycat/bind/serial/ClassCatalog.html" title="interface in com.sleepycat.bind.serial"><CODE>ClassCatalog</CODE></A> must be supplied, however, to stored shared class
descriptions.</p>
<P>
@@ -130,10 +130,10 @@ A specialized <code>ObjectInputStream</code> that gets class description
&nbsp;<A NAME="nested_classes_inherited_from_class_java.io.ObjectInputStream"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Nested classes/interfaces inherited from class java.io.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectInputStream.html" title="class or interface in java.io">ObjectInputStream</A></B></TH>
+<TH ALIGN="left"><B>Nested classes/interfaces inherited from class java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectInputStream.html" title="class or interface in java.io">ObjectInputStream</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectInputStream.GetField.html" title="class or interface in java.io">ObjectInputStream.GetField</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectInputStream.GetField.html" title="class or interface in java.io">ObjectInputStream.GetField</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -149,10 +149,10 @@ A specialized <code>ObjectInputStream</code> that gets class description
&nbsp;<A NAME="fields_inherited_from_class_java.io.ObjectStreamConstants"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Fields inherited from interface java.io.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html" title="class or interface in java.io">ObjectStreamConstants</A></B></TH>
+<TH ALIGN="left"><B>Fields inherited from interface java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html" title="class or interface in java.io">ObjectStreamConstants</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html#baseWireHandle" title="class or interface in java.io">baseWireHandle</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html#PROTOCOL_VERSION_1" title="class or interface in java.io">PROTOCOL_VERSION_1</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html#PROTOCOL_VERSION_2" title="class or interface in java.io">PROTOCOL_VERSION_2</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html#SC_BLOCK_DATA" title="class or interface in java.io">SC_BLOCK_DATA</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html#SC_ENUM" title="class or interface in java.io">SC_ENUM</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html#SC_EXTERNALIZABLE" title="class or interface in java.io">SC_EXTERNALIZABLE</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html#SC_SERIALIZABLE" title="class or interface in java.io">SC_SERIALIZABLE</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html#SC_WRITE_METHOD" title="class or interface in java.io">SC_WRITE_METHOD</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html#STREAM_MAGIC" title="class or interface in java.io">STREAM_MAGIC</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html#STREAM_VERSION" title="class or interface in java.io">STREAM_VERSION</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html#SUBCLASS_IMPLEMENTATION_PERMISSION" title="class or interface in java.io">SUBCLASS_IMPLEMENTATION_PERMISSION</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html#SUBSTITUTION_PERMISSION" title="class or interface in java.io">SUBSTITUTION_PERMISSION</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html#TC_ARRAY" title="class or interface in java.io">TC_ARRAY</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html#TC_BASE" title="class or interface in java.io">TC_BASE</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html#TC_BLOCKDATA" title="class or interface in java.io">TC_BLOCKDATA</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html#TC_BLOCKDATALONG" title="class or interface in java.io">TC_BLOCKDATALONG</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html#TC_CLASS" title="class or interface in java.io">TC_CLASS</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html#TC_CLASSDESC" title="class or interface in java.io">TC_CLASSDESC</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html#TC_ENDBLOCKDATA" title="class or interface in java.io">TC_ENDBLOCKDATA</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html#TC_ENUM" title="class or interface in java.io">TC_ENUM</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html#TC_EXCEPTION" title="class or interface in java.io">TC_EXCEPTION</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html#TC_LONGSTRING" title="class or interface in java.io">TC_LONGSTRING</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html#TC_MAX" title="class or interface in java.io">TC_MAX</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html#TC_NULL" title="class or interface in java.io">TC_NULL</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html#TC_OBJECT" title="class or interface in java.io">TC_OBJECT</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html#TC_PROXYCLASSDESC" title="class or interface in java.io">TC_PROXYCLASSDESC</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html#TC_REFERENCE" title="class or interface in java.io">TC_REFERENCE</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html#TC_RESET" title="class or interface in java.io">TC_RESET</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html#TC_STRING" title="class or interface in java.io">TC_STRING</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html#baseWireHandle" title="class or interface in java.io">baseWireHandle</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html#PROTOCOL_VERSION_1" title="class or interface in java.io">PROTOCOL_VERSION_1</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html#PROTOCOL_VERSION_2" title="class or interface in java.io">PROTOCOL_VERSION_2</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html#SC_BLOCK_DATA" title="class or interface in java.io">SC_BLOCK_DATA</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html#SC_ENUM" title="class or interface in java.io">SC_ENUM</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html#SC_EXTERNALIZABLE" title="class or interface in java.io">SC_EXTERNALIZABLE</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html#SC_SERIALIZABLE" title="class or interface in java.io">SC_SERIALIZABLE</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html#SC_WRITE_METHOD" title="class or interface in java.io">SC_WRITE_METHOD</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html#STREAM_MAGIC" title="class or interface in java.io">STREAM_MAGIC</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html#STREAM_VERSION" title="class or interface in java.io">STREAM_VERSION</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html#SUBCLASS_IMPLEMENTATION_PERMISSION" title="class or interface in java.io">SUBCLASS_IMPLEMENTATION_PERMISSION</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html#SUBSTITUTION_PERMISSION" title="class or interface in java.io">SUBSTITUTION_PERMISSION</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html#TC_ARRAY" title="class or interface in java.io">TC_ARRAY</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html#TC_BASE" title="class or interface in java.io">TC_BASE</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html#TC_BLOCKDATA" title="class or interface in java.io">TC_BLOCKDATA</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html#TC_BLOCKDATALONG" title="class or interface in java.io">TC_BLOCKDATALONG</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html#TC_CLASS" title="class or interface in java.io">TC_CLASS</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html#TC_CLASSDESC" title="class or interface in java.io">TC_CLASSDESC</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html#TC_ENDBLOCKDATA" title="class or interface in java.io">TC_ENDBLOCKDATA</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html#TC_ENUM" title="class or interface in java.io">TC_ENUM</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html#TC_EXCEPTION" title="class or interface in java.io">TC_EXCEPTION</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html#TC_LONGSTRING" title="class or interface in java.io">TC_LONGSTRING</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html#TC_MAX" title="class or interface in java.io">TC_MAX</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html#TC_NULL" title="class or interface in java.io">TC_NULL</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html#TC_OBJECT" title="class or interface in java.io">TC_OBJECT</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html#TC_PROXYCLASSDESC" title="class or interface in java.io">TC_PROXYCLASSDESC</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html#TC_REFERENCE" title="class or interface in java.io">TC_REFERENCE</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html#TC_RESET" title="class or interface in java.io">TC_RESET</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html#TC_STRING" title="class or interface in java.io">TC_STRING</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -165,16 +165,16 @@ A specialized <code>ObjectInputStream</code> that gets class description
<B>Constructor Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/SerialInput.html#SerialInput(java.io.InputStream, com.sleepycat.bind.serial.ClassCatalog)">SerialInput</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/InputStream.html" title="class or interface in java.io">InputStream</A>&nbsp;in,
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/SerialInput.html#SerialInput(java.io.InputStream, com.sleepycat.bind.serial.ClassCatalog)">SerialInput</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/InputStream.html" title="class or interface in java.io">InputStream</A>&nbsp;in,
<A HREF="../../../../com/sleepycat/bind/serial/ClassCatalog.html" title="interface in com.sleepycat.bind.serial">ClassCatalog</A>&nbsp;classCatalog)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a serial input stream.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/SerialInput.html#SerialInput(java.io.InputStream, com.sleepycat.bind.serial.ClassCatalog, java.lang.ClassLoader)">SerialInput</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/InputStream.html" title="class or interface in java.io">InputStream</A>&nbsp;in,
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/SerialInput.html#SerialInput(java.io.InputStream, com.sleepycat.bind.serial.ClassCatalog, java.lang.ClassLoader)">SerialInput</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/InputStream.html" title="class or interface in java.io">InputStream</A>&nbsp;in,
<A HREF="../../../../com/sleepycat/bind/serial/ClassCatalog.html" title="interface in com.sleepycat.bind.serial">ClassCatalog</A>&nbsp;classCatalog,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/ClassLoader.html" title="class or interface in java.lang">ClassLoader</A>&nbsp;classLoader)</CODE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/ClassLoader.html" title="class or interface in java.lang">ClassLoader</A>&nbsp;classLoader)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a serial input stream.</TD>
@@ -191,7 +191,7 @@ A specialized <code>ObjectInputStream</code> that gets class description
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>protected &nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamClass.html" title="class or interface in java.io">ObjectStreamClass</A></CODE></FONT></TD>
+<CODE>protected &nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamClass.html" title="class or interface in java.io">ObjectStreamClass</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/SerialInput.html#readClassDescriptor()">readClassDescriptor</A></B>()</CODE>
<BR>
@@ -199,8 +199,8 @@ A specialized <code>ObjectInputStream</code> that gets class description
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>protected &nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/SerialInput.html#resolveClass(java.io.ObjectStreamClass)">resolveClass</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamClass.html" title="class or interface in java.io">ObjectStreamClass</A>&nbsp;desc)</CODE>
+<CODE>protected &nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/SerialInput.html#resolveClass(java.io.ObjectStreamClass)">resolveClass</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamClass.html" title="class or interface in java.io">ObjectStreamClass</A>&nbsp;desc)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
@@ -209,37 +209,37 @@ A specialized <code>ObjectInputStream</code> that gets class description
&nbsp;<A NAME="methods_inherited_from_class_java.io.ObjectInputStream"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.io.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectInputStream.html" title="class or interface in java.io">ObjectInputStream</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectInputStream.html" title="class or interface in java.io">ObjectInputStream</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectInputStream.html#available()" title="class or interface in java.io">available</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectInputStream.html#close()" title="class or interface in java.io">close</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectInputStream.html#defaultReadObject()" title="class or interface in java.io">defaultReadObject</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectInputStream.html#enableResolveObject(boolean)" title="class or interface in java.io">enableResolveObject</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectInputStream.html#read()" title="class or interface in java.io">read</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectInputStream.html#read(byte[], int, int)" title="class or interface in java.io">read</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectInputStream.html#readBoolean()" title="class or interface in java.io">readBoolean</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectInputStream.html#readByte()" title="class or interface in java.io">readByte</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectInputStream.html#readChar()" title="class or interface in java.io">readChar</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectInputStream.html#readDouble()" title="class or interface in java.io">readDouble</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectInputStream.html#readFields()" title="class or interface in java.io">readFields</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectInputStream.html#readFloat()" title="class or interface in java.io">readFloat</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectInputStream.html#readFully(byte[])" title="class or interface in java.io">readFully</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectInputStream.html#readFully(byte[], int, int)" title="class or interface in java.io">readFully</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectInputStream.html#readInt()" title="class or interface in java.io">readInt</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectInputStream.html#readLine()" title="class or interface in java.io">readLine</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectInputStream.html#readLong()" title="class or interface in java.io">readLong</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectInputStream.html#readObject()" title="class or interface in java.io">readObject</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectInputStream.html#readObjectOverride()" title="class or interface in java.io">readObjectOverride</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectInputStream.html#readShort()" title="class or interface in java.io">readShort</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectInputStream.html#readStreamHeader()" title="class or interface in java.io">readStreamHeader</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectInputStream.html#readUnshared()" title="class or interface in java.io">readUnshared</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectInputStream.html#readUnsignedByte()" title="class or interface in java.io">readUnsignedByte</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectInputStream.html#readUnsignedShort()" title="class or interface in java.io">readUnsignedShort</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectInputStream.html#readUTF()" title="class or interface in java.io">readUTF</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectInputStream.html#registerValidation(java.io.ObjectInputValidation, int)" title="class or interface in java.io">registerValidation</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectInputStream.html#resolveObject(java.lang.Object)" title="class or interface in java.io">resolveObject</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectInputStream.html#resolveProxyClass(java.lang.String[])" title="class or interface in java.io">resolveProxyClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectInputStream.html#skipBytes(int)" title="class or interface in java.io">skipBytes</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectInputStream.html#available()" title="class or interface in java.io">available</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectInputStream.html#close()" title="class or interface in java.io">close</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectInputStream.html#defaultReadObject()" title="class or interface in java.io">defaultReadObject</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectInputStream.html#enableResolveObject(boolean)" title="class or interface in java.io">enableResolveObject</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectInputStream.html#read()" title="class or interface in java.io">read</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectInputStream.html#read(byte[], int, int)" title="class or interface in java.io">read</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectInputStream.html#readBoolean()" title="class or interface in java.io">readBoolean</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectInputStream.html#readByte()" title="class or interface in java.io">readByte</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectInputStream.html#readChar()" title="class or interface in java.io">readChar</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectInputStream.html#readDouble()" title="class or interface in java.io">readDouble</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectInputStream.html#readFields()" title="class or interface in java.io">readFields</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectInputStream.html#readFloat()" title="class or interface in java.io">readFloat</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectInputStream.html#readFully(byte[])" title="class or interface in java.io">readFully</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectInputStream.html#readFully(byte[], int, int)" title="class or interface in java.io">readFully</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectInputStream.html#readInt()" title="class or interface in java.io">readInt</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectInputStream.html#readLine()" title="class or interface in java.io">readLine</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectInputStream.html#readLong()" title="class or interface in java.io">readLong</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectInputStream.html#readObject()" title="class or interface in java.io">readObject</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectInputStream.html#readObjectOverride()" title="class or interface in java.io">readObjectOverride</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectInputStream.html#readShort()" title="class or interface in java.io">readShort</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectInputStream.html#readStreamHeader()" title="class or interface in java.io">readStreamHeader</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectInputStream.html#readUnshared()" title="class or interface in java.io">readUnshared</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectInputStream.html#readUnsignedByte()" title="class or interface in java.io">readUnsignedByte</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectInputStream.html#readUnsignedShort()" title="class or interface in java.io">readUnsignedShort</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectInputStream.html#readUTF()" title="class or interface in java.io">readUTF</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectInputStream.html#registerValidation(java.io.ObjectInputValidation, int)" title="class or interface in java.io">registerValidation</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectInputStream.html#resolveObject(java.lang.Object)" title="class or interface in java.io">resolveObject</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectInputStream.html#resolveProxyClass(java.lang.String[])" title="class or interface in java.io">resolveProxyClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectInputStream.html#skipBytes(int)" title="class or interface in java.io">skipBytes</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.io.InputStream"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.io.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/InputStream.html" title="class or interface in java.io">InputStream</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/InputStream.html" title="class or interface in java.io">InputStream</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/InputStream.html#mark(int)" title="class or interface in java.io">mark</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/InputStream.html#markSupported()" title="class or interface in java.io">markSupported</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/InputStream.html#read(byte[])" title="class or interface in java.io">read</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/InputStream.html#reset()" title="class or interface in java.io">reset</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/InputStream.html#skip(long)" title="class or interface in java.io">skip</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/InputStream.html#mark(int)" title="class or interface in java.io">mark</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/InputStream.html#markSupported()" title="class or interface in java.io">markSupported</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/InputStream.html#read(byte[])" title="class or interface in java.io">read</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/InputStream.html#reset()" title="class or interface in java.io">reset</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/InputStream.html#skip(long)" title="class or interface in java.io">skip</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.io.ObjectInput"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from interface java.io.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectInput.html" title="class or interface in java.io">ObjectInput</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from interface java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectInput.html" title="class or interface in java.io">ObjectInput</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectInput.html#read(byte[])" title="class or interface in java.io">read</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectInput.html#skip(long)" title="class or interface in java.io">skip</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectInput.html#read(byte[])" title="class or interface in java.io">read</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectInput.html#skip(long)" title="class or interface in java.io">skip</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -258,9 +258,9 @@ A specialized <code>ObjectInputStream</code> that gets class description
<A NAME="SerialInput(java.io.InputStream, com.sleepycat.bind.serial.ClassCatalog)"><!-- --></A><H3>
SerialInput</H3>
<PRE>
-public <B>SerialInput</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/InputStream.html" title="class or interface in java.io">InputStream</A>&nbsp;in,
+public <B>SerialInput</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/InputStream.html" title="class or interface in java.io">InputStream</A>&nbsp;in,
<A HREF="../../../../com/sleepycat/bind/serial/ClassCatalog.html" title="interface in com.sleepycat.bind.serial">ClassCatalog</A>&nbsp;classCatalog)
- throws <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></PRE>
+ throws <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></PRE>
<DL>
<DD>Creates a serial input stream.
<P>
@@ -269,17 +269,17 @@ public <B>SerialInput</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io
be read.<DD><CODE>classCatalog</CODE> - is the catalog containing the class descriptions
for the serialized objects.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></CODE></DL>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></CODE></DL>
</DL>
<HR>
<A NAME="SerialInput(java.io.InputStream, com.sleepycat.bind.serial.ClassCatalog, java.lang.ClassLoader)"><!-- --></A><H3>
SerialInput</H3>
<PRE>
-public <B>SerialInput</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/InputStream.html" title="class or interface in java.io">InputStream</A>&nbsp;in,
+public <B>SerialInput</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/InputStream.html" title="class or interface in java.io">InputStream</A>&nbsp;in,
<A HREF="../../../../com/sleepycat/bind/serial/ClassCatalog.html" title="interface in com.sleepycat.bind.serial">ClassCatalog</A>&nbsp;classCatalog,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/ClassLoader.html" title="class or interface in java.lang">ClassLoader</A>&nbsp;classLoader)
- throws <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></PRE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/ClassLoader.html" title="class or interface in java.lang">ClassLoader</A>&nbsp;classLoader)
+ throws <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></PRE>
<DL>
<DD>Creates a serial input stream.
<P>
@@ -289,7 +289,7 @@ public <B>SerialInput</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io
for the serialized objects.<DD><CODE>classLoader</CODE> - is the class loader to use, or null if a default
class loader should be used.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></CODE></DL>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></CODE></DL>
</DL>
<!-- ============ METHOD DETAIL ========== -->
@@ -305,18 +305,18 @@ public <B>SerialInput</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io
<A NAME="readClassDescriptor()"><!-- --></A><H3>
readClassDescriptor</H3>
<PRE>
-protected <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamClass.html" title="class or interface in java.io">ObjectStreamClass</A> <B>readClassDescriptor</B>()
- throws <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A>,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/ClassNotFoundException.html" title="class or interface in java.lang">ClassNotFoundException</A></PRE>
+protected <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamClass.html" title="class or interface in java.io">ObjectStreamClass</A> <B>readClassDescriptor</B>()
+ throws <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A>,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/ClassNotFoundException.html" title="class or interface in java.lang">ClassNotFoundException</A></PRE>
<DL>
<DD><DL>
-<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectInputStream.html#readClassDescriptor()" title="class or interface in java.io">readClassDescriptor</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectInputStream.html" title="class or interface in java.io">ObjectInputStream</A></CODE></DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectInputStream.html#readClassDescriptor()" title="class or interface in java.io">readClassDescriptor</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectInputStream.html" title="class or interface in java.io">ObjectInputStream</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></CODE>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/ClassNotFoundException.html" title="class or interface in java.lang">ClassNotFoundException</A></CODE></DL>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></CODE>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/ClassNotFoundException.html" title="class or interface in java.lang">ClassNotFoundException</A></CODE></DL>
</DD>
</DL>
<HR>
@@ -324,18 +324,18 @@ protected <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamCla
<A NAME="resolveClass(java.io.ObjectStreamClass)"><!-- --></A><H3>
resolveClass</H3>
<PRE>
-protected <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A> <B>resolveClass</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamClass.html" title="class or interface in java.io">ObjectStreamClass</A>&nbsp;desc)
- throws <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A>,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/ClassNotFoundException.html" title="class or interface in java.lang">ClassNotFoundException</A></PRE>
+protected <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A> <B>resolveClass</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamClass.html" title="class or interface in java.io">ObjectStreamClass</A>&nbsp;desc)
+ throws <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A>,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/ClassNotFoundException.html" title="class or interface in java.lang">ClassNotFoundException</A></PRE>
<DL>
<DD><DL>
-<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectInputStream.html#resolveClass(java.io.ObjectStreamClass)" title="class or interface in java.io">resolveClass</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectInputStream.html" title="class or interface in java.io">ObjectInputStream</A></CODE></DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectInputStream.html#resolveClass(java.io.ObjectStreamClass)" title="class or interface in java.io">resolveClass</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectInputStream.html" title="class or interface in java.io">ObjectInputStream</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></CODE>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/ClassNotFoundException.html" title="class or interface in java.lang">ClassNotFoundException</A></CODE></DL>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></CODE>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/ClassNotFoundException.html" title="class or interface in java.lang">ClassNotFoundException</A></CODE></DL>
</DD>
</DL>
<!-- ========= END OF CLASS DATA ========= -->
@@ -363,7 +363,7 @@ protected <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html" t
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -399,6 +399,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&n
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/serial/SerialOutput.html b/db/docs/java/com/sleepycat/bind/serial/SerialOutput.html
index a2674d6a2..6918ff55d 100644
--- a/db/docs/java/com/sleepycat/bind/serial/SerialOutput.html
+++ b/db/docs/java/com/sleepycat/bind/serial/SerialOutput.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-SerialOutput (Oracle Corporation - Berkeley DB Java API)
+SerialOutput (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.bind.serial.SerialOutput class">
@@ -14,7 +14,7 @@ SerialOutput (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="SerialOutput (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="SerialOutput (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,17 +89,17 @@ com.sleepycat.bind.serial</FONT>
<BR>
Class SerialOutput</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
- <IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/OutputStream.html" title="class or interface in java.io">java.io.OutputStream</A>
- <IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectOutputStream.html" title="class or interface in java.io">java.io.ObjectOutputStream</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+ <IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/OutputStream.html" title="class or interface in java.io">java.io.OutputStream</A>
+ <IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectOutputStream.html" title="class or interface in java.io">java.io.ObjectOutputStream</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.bind.serial.SerialOutput</B>
</PRE>
<DL>
-<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/Closeable.html" title="class or interface in java.io">Closeable</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/DataOutput.html" title="class or interface in java.io">DataOutput</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/Flushable.html" title="class or interface in java.io">Flushable</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectOutput.html" title="class or interface in java.io">ObjectOutput</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html" title="class or interface in java.io">ObjectStreamConstants</A></DD>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Closeable.html" title="class or interface in java.io">Closeable</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/DataOutput.html" title="class or interface in java.io">DataOutput</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Flushable.html" title="class or interface in java.io">Flushable</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectOutput.html" title="class or interface in java.io">ObjectOutput</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html" title="class or interface in java.io">ObjectStreamConstants</A></DD>
</DL>
<HR>
<DL>
-<DT><PRE>public class <B>SerialOutput</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectOutputStream.html" title="class or interface in java.io">ObjectOutputStream</A></DL>
+<DT><PRE>public class <B>SerialOutput</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectOutputStream.html" title="class or interface in java.io">ObjectOutputStream</A></DL>
</PRE>
<P>
@@ -107,9 +107,9 @@ A specialized <code>ObjectOutputStream</code> that stores class description
information in a <code>ClassCatalog</code>. It is used by
<code>SerialBinding</code>.
- <p>This class is used instead of an <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectOutputStream.html" title="class or interface in java.io"><CODE>ObjectOutputStream</CODE></A>, which it
+ <p>This class is used instead of an <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectOutputStream.html" title="class or interface in java.io"><CODE>ObjectOutputStream</CODE></A>, which it
extends, to write a compact object stream. For writing objects to a
- database normally one of the serial binding classes is used. <A HREF="../../../../com/sleepycat/bind/serial/SerialOutput.html" title="class in com.sleepycat.bind.serial"><CODE>SerialOutput</CODE></A> is used when an <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectOutputStream.html" title="class or interface in java.io"><CODE>ObjectOutputStream</CODE></A> is needed along
+ database normally one of the serial binding classes is used. <A HREF="../../../../com/sleepycat/bind/serial/SerialOutput.html" title="class in com.sleepycat.bind.serial"><CODE>SerialOutput</CODE></A> is used when an <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectOutputStream.html" title="class or interface in java.io"><CODE>ObjectOutputStream</CODE></A> is needed along
with compact storage. A <A HREF="../../../../com/sleepycat/bind/serial/ClassCatalog.html" title="interface in com.sleepycat.bind.serial"><CODE>ClassCatalog</CODE></A> must be supplied, however, to
stored shared class descriptions.</p>
@@ -134,10 +134,10 @@ A specialized <code>ObjectOutputStream</code> that stores class description
&nbsp;<A NAME="nested_classes_inherited_from_class_java.io.ObjectOutputStream"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Nested classes/interfaces inherited from class java.io.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectOutputStream.html" title="class or interface in java.io">ObjectOutputStream</A></B></TH>
+<TH ALIGN="left"><B>Nested classes/interfaces inherited from class java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectOutputStream.html" title="class or interface in java.io">ObjectOutputStream</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectOutputStream.PutField.html" title="class or interface in java.io">ObjectOutputStream.PutField</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectOutputStream.PutField.html" title="class or interface in java.io">ObjectOutputStream.PutField</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -153,10 +153,10 @@ A specialized <code>ObjectOutputStream</code> that stores class description
&nbsp;<A NAME="fields_inherited_from_class_java.io.ObjectStreamConstants"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Fields inherited from interface java.io.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html" title="class or interface in java.io">ObjectStreamConstants</A></B></TH>
+<TH ALIGN="left"><B>Fields inherited from interface java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html" title="class or interface in java.io">ObjectStreamConstants</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html#baseWireHandle" title="class or interface in java.io">baseWireHandle</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html#PROTOCOL_VERSION_1" title="class or interface in java.io">PROTOCOL_VERSION_1</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html#PROTOCOL_VERSION_2" title="class or interface in java.io">PROTOCOL_VERSION_2</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html#SC_BLOCK_DATA" title="class or interface in java.io">SC_BLOCK_DATA</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html#SC_ENUM" title="class or interface in java.io">SC_ENUM</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html#SC_EXTERNALIZABLE" title="class or interface in java.io">SC_EXTERNALIZABLE</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html#SC_SERIALIZABLE" title="class or interface in java.io">SC_SERIALIZABLE</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html#SC_WRITE_METHOD" title="class or interface in java.io">SC_WRITE_METHOD</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html#STREAM_MAGIC" title="class or interface in java.io">STREAM_MAGIC</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html#STREAM_VERSION" title="class or interface in java.io">STREAM_VERSION</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html#SUBCLASS_IMPLEMENTATION_PERMISSION" title="class or interface in java.io">SUBCLASS_IMPLEMENTATION_PERMISSION</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html#SUBSTITUTION_PERMISSION" title="class or interface in java.io">SUBSTITUTION_PERMISSION</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html#TC_ARRAY" title="class or interface in java.io">TC_ARRAY</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html#TC_BASE" title="class or interface in java.io">TC_BASE</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html#TC_BLOCKDATA" title="class or interface in java.io">TC_BLOCKDATA</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html#TC_BLOCKDATALONG" title="class or interface in java.io">TC_BLOCKDATALONG</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html#TC_CLASS" title="class or interface in java.io">TC_CLASS</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html#TC_CLASSDESC" title="class or interface in java.io">TC_CLASSDESC</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html#TC_ENDBLOCKDATA" title="class or interface in java.io">TC_ENDBLOCKDATA</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html#TC_ENUM" title="class or interface in java.io">TC_ENUM</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html#TC_EXCEPTION" title="class or interface in java.io">TC_EXCEPTION</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html#TC_LONGSTRING" title="class or interface in java.io">TC_LONGSTRING</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html#TC_MAX" title="class or interface in java.io">TC_MAX</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html#TC_NULL" title="class or interface in java.io">TC_NULL</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html#TC_OBJECT" title="class or interface in java.io">TC_OBJECT</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html#TC_PROXYCLASSDESC" title="class or interface in java.io">TC_PROXYCLASSDESC</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html#TC_REFERENCE" title="class or interface in java.io">TC_REFERENCE</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html#TC_RESET" title="class or interface in java.io">TC_RESET</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html#TC_STRING" title="class or interface in java.io">TC_STRING</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html#baseWireHandle" title="class or interface in java.io">baseWireHandle</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html#PROTOCOL_VERSION_1" title="class or interface in java.io">PROTOCOL_VERSION_1</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html#PROTOCOL_VERSION_2" title="class or interface in java.io">PROTOCOL_VERSION_2</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html#SC_BLOCK_DATA" title="class or interface in java.io">SC_BLOCK_DATA</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html#SC_ENUM" title="class or interface in java.io">SC_ENUM</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html#SC_EXTERNALIZABLE" title="class or interface in java.io">SC_EXTERNALIZABLE</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html#SC_SERIALIZABLE" title="class or interface in java.io">SC_SERIALIZABLE</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html#SC_WRITE_METHOD" title="class or interface in java.io">SC_WRITE_METHOD</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html#STREAM_MAGIC" title="class or interface in java.io">STREAM_MAGIC</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html#STREAM_VERSION" title="class or interface in java.io">STREAM_VERSION</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html#SUBCLASS_IMPLEMENTATION_PERMISSION" title="class or interface in java.io">SUBCLASS_IMPLEMENTATION_PERMISSION</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html#SUBSTITUTION_PERMISSION" title="class or interface in java.io">SUBSTITUTION_PERMISSION</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html#TC_ARRAY" title="class or interface in java.io">TC_ARRAY</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html#TC_BASE" title="class or interface in java.io">TC_BASE</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html#TC_BLOCKDATA" title="class or interface in java.io">TC_BLOCKDATA</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html#TC_BLOCKDATALONG" title="class or interface in java.io">TC_BLOCKDATALONG</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html#TC_CLASS" title="class or interface in java.io">TC_CLASS</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html#TC_CLASSDESC" title="class or interface in java.io">TC_CLASSDESC</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html#TC_ENDBLOCKDATA" title="class or interface in java.io">TC_ENDBLOCKDATA</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html#TC_ENUM" title="class or interface in java.io">TC_ENUM</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html#TC_EXCEPTION" title="class or interface in java.io">TC_EXCEPTION</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html#TC_LONGSTRING" title="class or interface in java.io">TC_LONGSTRING</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html#TC_MAX" title="class or interface in java.io">TC_MAX</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html#TC_NULL" title="class or interface in java.io">TC_NULL</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html#TC_OBJECT" title="class or interface in java.io">TC_OBJECT</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html#TC_PROXYCLASSDESC" title="class or interface in java.io">TC_PROXYCLASSDESC</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html#TC_REFERENCE" title="class or interface in java.io">TC_REFERENCE</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html#TC_RESET" title="class or interface in java.io">TC_RESET</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html#TC_STRING" title="class or interface in java.io">TC_STRING</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -169,7 +169,7 @@ A specialized <code>ObjectOutputStream</code> that stores class description
<B>Constructor Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/SerialOutput.html#SerialOutput(java.io.OutputStream, com.sleepycat.bind.serial.ClassCatalog)">SerialOutput</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/OutputStream.html" title="class or interface in java.io">OutputStream</A>&nbsp;out,
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/SerialOutput.html#SerialOutput(java.io.OutputStream, com.sleepycat.bind.serial.ClassCatalog)">SerialOutput</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/OutputStream.html" title="class or interface in java.io">OutputStream</A>&nbsp;out,
<A HREF="../../../../com/sleepycat/bind/serial/ClassCatalog.html" title="interface in com.sleepycat.bind.serial">ClassCatalog</A>&nbsp;classCatalog)</CODE>
<BR>
@@ -197,7 +197,7 @@ A specialized <code>ObjectOutputStream</code> that stores class description
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/SerialOutput.html#writeClassDescriptor(java.io.ObjectStreamClass)">writeClassDescriptor</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamClass.html" title="class or interface in java.io">ObjectStreamClass</A>&nbsp;classdesc)</CODE>
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/SerialOutput.html#writeClassDescriptor(java.io.ObjectStreamClass)">writeClassDescriptor</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamClass.html" title="class or interface in java.io">ObjectStreamClass</A>&nbsp;classdesc)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
@@ -206,19 +206,19 @@ A specialized <code>ObjectOutputStream</code> that stores class description
&nbsp;<A NAME="methods_inherited_from_class_java.io.ObjectOutputStream"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.io.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectOutputStream.html" title="class or interface in java.io">ObjectOutputStream</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectOutputStream.html" title="class or interface in java.io">ObjectOutputStream</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectOutputStream.html#annotateClass(java.lang.Class)" title="class or interface in java.io">annotateClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectOutputStream.html#annotateProxyClass(java.lang.Class)" title="class or interface in java.io">annotateProxyClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectOutputStream.html#close()" title="class or interface in java.io">close</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectOutputStream.html#defaultWriteObject()" title="class or interface in java.io">defaultWriteObject</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectOutputStream.html#drain()" title="class or interface in java.io">drain</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectOutputStream.html#enableReplaceObject(boolean)" title="class or interface in java.io">enableReplaceObject</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectOutputStream.html#flush()" title="class or interface in java.io">flush</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectOutputStream.html#putFields()" title="class or interface in java.io">putFields</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectOutputStream.html#replaceObject(java.lang.Object)" title="class or interface in java.io">replaceObject</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectOutputStream.html#reset()" title="class or interface in java.io">reset</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectOutputStream.html#useProtocolVersion(int)" title="class or interface in java.io">useProtocolVersion</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectOutputStream.html#write(byte[])" title="class or interface in java.io">write</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectOutputStream.html#write(byte[], int, int)" title="class or interface in java.io">write</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectOutputStream.html#write(int)" title="class or interface in java.io">write</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectOutputStream.html#writeBoolean(boolean)" title="class or interface in java.io">writeBoolean</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectOutputStream.html#writeByte(int)" title="class or interface in java.io">writeByte</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectOutputStream.html#writeBytes(java.lang.String)" title="class or interface in java.io">writeBytes</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectOutputStream.html#writeChar(int)" title="class or interface in java.io">writeChar</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectOutputStream.html#writeChars(java.lang.String)" title="class or interface in java.io">writeChars</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectOutputStream.html#writeDouble(double)" title="class or interface in java.io">writeDouble</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectOutputStream.html#writeFields()" title="class or interface in java.io">writeFields</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectOutputStream.html#writeFloat(float)" title="class or interface in java.io">writeFloat</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectOutputStream.html#writeInt(int)" title="class or interface in java.io">writeInt</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectOutputStream.html#writeLong(long)" title="class or interface in java.io">writeLong</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectOutputStream.html#writeObject(java.lang.Object)" title="class or interface in java.io">writeObject</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectOutputStream.html#writeObjectOverride(java.lang.Object)" title="class or interface in java.io">writeObjectOverride</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectOutputStream.html#writeShort(int)" title="class or interface in java.io">writeShort</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectOutputStream.html#writeStreamHeader()" title="class or interface in java.io">writeStreamHeader</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectOutputStream.html#writeUnshared(java.lang.Object)" title="class or interface in java.io">writeUnshared</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectOutputStream.html#writeUTF(java.lang.String)" title="class or interface in java.io">writeUTF</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectOutputStream.html#annotateClass(java.lang.Class)" title="class or interface in java.io">annotateClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectOutputStream.html#annotateProxyClass(java.lang.Class)" title="class or interface in java.io">annotateProxyClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectOutputStream.html#close()" title="class or interface in java.io">close</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectOutputStream.html#defaultWriteObject()" title="class or interface in java.io">defaultWriteObject</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectOutputStream.html#drain()" title="class or interface in java.io">drain</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectOutputStream.html#enableReplaceObject(boolean)" title="class or interface in java.io">enableReplaceObject</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectOutputStream.html#flush()" title="class or interface in java.io">flush</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectOutputStream.html#putFields()" title="class or interface in java.io">putFields</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectOutputStream.html#replaceObject(java.lang.Object)" title="class or interface in java.io">replaceObject</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectOutputStream.html#reset()" title="class or interface in java.io">reset</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectOutputStream.html#useProtocolVersion(int)" title="class or interface in java.io">useProtocolVersion</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectOutputStream.html#write(byte[])" title="class or interface in java.io">write</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectOutputStream.html#write(byte[], int, int)" title="class or interface in java.io">write</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectOutputStream.html#write(int)" title="class or interface in java.io">write</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectOutputStream.html#writeBoolean(boolean)" title="class or interface in java.io">writeBoolean</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectOutputStream.html#writeByte(int)" title="class or interface in java.io">writeByte</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectOutputStream.html#writeBytes(java.lang.String)" title="class or interface in java.io">writeBytes</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectOutputStream.html#writeChar(int)" title="class or interface in java.io">writeChar</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectOutputStream.html#writeChars(java.lang.String)" title="class or interface in java.io">writeChars</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectOutputStream.html#writeDouble(double)" title="class or interface in java.io">writeDouble</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectOutputStream.html#writeFields()" title="class or interface in java.io">writeFields</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectOutputStream.html#writeFloat(float)" title="class or interface in java.io">writeFloat</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectOutputStream.html#writeInt(int)" title="class or interface in java.io">writeInt</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectOutputStream.html#writeLong(long)" title="class or interface in java.io">writeLong</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectOutputStream.html#writeObject(java.lang.Object)" title="class or interface in java.io">writeObject</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectOutputStream.html#writeObjectOverride(java.lang.Object)" title="class or interface in java.io">writeObjectOverride</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectOutputStream.html#writeShort(int)" title="class or interface in java.io">writeShort</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectOutputStream.html#writeStreamHeader()" title="class or interface in java.io">writeStreamHeader</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectOutputStream.html#writeUnshared(java.lang.Object)" title="class or interface in java.io">writeUnshared</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectOutputStream.html#writeUTF(java.lang.String)" title="class or interface in java.io">writeUTF</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -237,9 +237,9 @@ A specialized <code>ObjectOutputStream</code> that stores class description
<A NAME="SerialOutput(java.io.OutputStream, com.sleepycat.bind.serial.ClassCatalog)"><!-- --></A><H3>
SerialOutput</H3>
<PRE>
-public <B>SerialOutput</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/OutputStream.html" title="class or interface in java.io">OutputStream</A>&nbsp;out,
+public <B>SerialOutput</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/OutputStream.html" title="class or interface in java.io">OutputStream</A>&nbsp;out,
<A HREF="../../../../com/sleepycat/bind/serial/ClassCatalog.html" title="interface in com.sleepycat.bind.serial">ClassCatalog</A>&nbsp;classCatalog)
- throws <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></PRE>
+ throws <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></PRE>
<DL>
<DD>Creates a serial output stream.
<P>
@@ -248,7 +248,7 @@ public <B>SerialOutput</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/i
will be written.<DD><CODE>classCatalog</CODE> - is the catalog to which the class descriptions for
the serialized objects will be written.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></CODE></DL>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></CODE></DL>
</DL>
<!-- ============ METHOD DETAIL ========== -->
@@ -264,16 +264,16 @@ public <B>SerialOutput</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/i
<A NAME="writeClassDescriptor(java.io.ObjectStreamClass)"><!-- --></A><H3>
writeClassDescriptor</H3>
<PRE>
-protected void <B>writeClassDescriptor</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamClass.html" title="class or interface in java.io">ObjectStreamClass</A>&nbsp;classdesc)
- throws <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></PRE>
+protected void <B>writeClassDescriptor</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamClass.html" title="class or interface in java.io">ObjectStreamClass</A>&nbsp;classdesc)
+ throws <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></PRE>
<DL>
<DD><DL>
-<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectOutputStream.html#writeClassDescriptor(java.io.ObjectStreamClass)" title="class or interface in java.io">writeClassDescriptor</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectOutputStream.html" title="class or interface in java.io">ObjectOutputStream</A></CODE></DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectOutputStream.html#writeClassDescriptor(java.io.ObjectStreamClass)" title="class or interface in java.io">writeClassDescriptor</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectOutputStream.html" title="class or interface in java.io">ObjectOutputStream</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></CODE></DL>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></CODE></DL>
</DD>
</DL>
<HR>
@@ -320,7 +320,7 @@ public static byte[] <B>getStreamHeader</B>()</PRE>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -356,6 +356,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&n
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/serial/SerialSerialBinding.html b/db/docs/java/com/sleepycat/bind/serial/SerialSerialBinding.html
index c8fb98c0b..2eb034584 100644
--- a/db/docs/java/com/sleepycat/bind/serial/SerialSerialBinding.html
+++ b/db/docs/java/com/sleepycat/bind/serial/SerialSerialBinding.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-SerialSerialBinding (Oracle Corporation - Berkeley DB Java API)
+SerialSerialBinding (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.bind.serial.SerialSerialBinding class">
@@ -14,7 +14,7 @@ SerialSerialBinding (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="SerialSerialBinding (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="SerialSerialBinding (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,7 +89,7 @@ com.sleepycat.bind.serial</FONT>
<BR>
Class SerialSerialBinding</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.bind.serial.SerialSerialBinding</B>
</PRE>
<DL>
@@ -97,7 +97,7 @@ Class SerialSerialBinding</H2>
</DL>
<HR>
<DL>
-<DT><PRE>public abstract class <B>SerialSerialBinding</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A><DT>implements <A HREF="../../../../com/sleepycat/bind/EntityBinding.html" title="interface in com.sleepycat.bind">EntityBinding</A></DL>
+<DT><PRE>public abstract class <B>SerialSerialBinding</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A><DT>implements <A HREF="../../../../com/sleepycat/bind/EntityBinding.html" title="interface in com.sleepycat.bind">EntityBinding</A></DL>
</PRE>
<P>
@@ -130,8 +130,8 @@ An abstract <code>EntityBinding</code> that treats an entity's key entry and
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/SerialSerialBinding.html#SerialSerialBinding(com.sleepycat.bind.serial.ClassCatalog, java.lang.Class, java.lang.Class)">SerialSerialBinding</A></B>(<A HREF="../../../../com/sleepycat/bind/serial/ClassCatalog.html" title="interface in com.sleepycat.bind.serial">ClassCatalog</A>&nbsp;classCatalog,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;keyClass,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;dataClass)</CODE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;keyClass,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;dataClass)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a serial-serial entity binding.</TD>
@@ -155,7 +155,7 @@ An abstract <code>EntityBinding</code> that treats an entity's key entry and
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/SerialSerialBinding.html#entryToObject(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry)">entryToObject</A></B>(<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;key,
<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;data)</CODE>
@@ -164,17 +164,17 @@ An abstract <code>EntityBinding</code> that treats an entity's key entry and
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>abstract &nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/SerialSerialBinding.html#entryToObject(java.lang.Object, java.lang.Object)">entryToObject</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;keyInput,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;dataInput)</CODE>
+<CODE>abstract &nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/SerialSerialBinding.html#entryToObject(java.lang.Object, java.lang.Object)">entryToObject</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;keyInput,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;dataInput)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs an entity object from deserialized key and data objects.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>abstract &nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/SerialSerialBinding.html#objectToData(java.lang.Object)">objectToData</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
+<CODE>abstract &nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/SerialSerialBinding.html#objectToData(java.lang.Object)">objectToData</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Extracts a data object from an entity object.</TD>
@@ -182,7 +182,7 @@ An abstract <code>EntityBinding</code> that treats an entity's key entry and
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/SerialSerialBinding.html#objectToData(java.lang.Object, com.sleepycat.db.DatabaseEntry)">objectToData</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/SerialSerialBinding.html#objectToData(java.lang.Object, com.sleepycat.db.DatabaseEntry)">objectToData</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;data)</CODE>
<BR>
@@ -190,8 +190,8 @@ An abstract <code>EntityBinding</code> that treats an entity's key entry and
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>abstract &nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/SerialSerialBinding.html#objectToKey(java.lang.Object)">objectToKey</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
+<CODE>abstract &nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/SerialSerialBinding.html#objectToKey(java.lang.Object)">objectToKey</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Extracts a key object from an entity object.</TD>
@@ -199,7 +199,7 @@ An abstract <code>EntityBinding</code> that treats an entity's key entry and
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/SerialSerialBinding.html#objectToKey(java.lang.Object, com.sleepycat.db.DatabaseEntry)">objectToKey</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/SerialSerialBinding.html#objectToKey(java.lang.Object, com.sleepycat.db.DatabaseEntry)">objectToKey</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;key)</CODE>
<BR>
@@ -209,10 +209,10 @@ An abstract <code>EntityBinding</code> that treats an entity's key entry and
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -232,8 +232,8 @@ An abstract <code>EntityBinding</code> that treats an entity's key entry and
SerialSerialBinding</H3>
<PRE>
public <B>SerialSerialBinding</B>(<A HREF="../../../../com/sleepycat/bind/serial/ClassCatalog.html" title="interface in com.sleepycat.bind.serial">ClassCatalog</A>&nbsp;classCatalog,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;keyClass,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;dataClass)</PRE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;keyClass,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;dataClass)</PRE>
<DL>
<DD>Creates a serial-serial entity binding.
<P>
@@ -268,7 +268,7 @@ public <B>SerialSerialBinding</B>(<A HREF="../../../../com/sleepycat/bind/serial
<A NAME="entryToObject(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry)"><!-- --></A><H3>
entryToObject</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>entryToObject</B>(<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;key,
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>entryToObject</B>(<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;key,
<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;data)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../com/sleepycat/bind/EntityBinding.html#entryToObject(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry)">EntityBinding</A></CODE></B></DD>
@@ -287,7 +287,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" tit
<A NAME="objectToKey(java.lang.Object, com.sleepycat.db.DatabaseEntry)"><!-- --></A><H3>
objectToKey</H3>
<PRE>
-public void <B>objectToKey</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+public void <B>objectToKey</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;key)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../com/sleepycat/bind/EntityBinding.html#objectToKey(java.lang.Object, com.sleepycat.db.DatabaseEntry)">EntityBinding</A></CODE></B></DD>
@@ -305,7 +305,7 @@ public void <B>objectToKey</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/ja
<A NAME="objectToData(java.lang.Object, com.sleepycat.db.DatabaseEntry)"><!-- --></A><H3>
objectToData</H3>
<PRE>
-public void <B>objectToData</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+public void <B>objectToData</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;data)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../com/sleepycat/bind/EntityBinding.html#objectToData(java.lang.Object, com.sleepycat.db.DatabaseEntry)">EntityBinding</A></CODE></B></DD>
@@ -323,8 +323,8 @@ public void <B>objectToData</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/j
<A NAME="entryToObject(java.lang.Object, java.lang.Object)"><!-- --></A><H3>
entryToObject</H3>
<PRE>
-public abstract <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>entryToObject</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;keyInput,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;dataInput)</PRE>
+public abstract <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>entryToObject</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;keyInput,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;dataInput)</PRE>
<DL>
<DD>Constructs an entity object from deserialized key and data objects.
<P>
@@ -341,7 +341,7 @@ public abstract <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.
<A NAME="objectToKey(java.lang.Object)"><!-- --></A><H3>
objectToKey</H3>
<PRE>
-public abstract <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>objectToKey</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</PRE>
+public abstract <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>objectToKey</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</PRE>
<DL>
<DD>Extracts a key object from an entity object.
<P>
@@ -358,7 +358,7 @@ public abstract <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.
<A NAME="objectToData(java.lang.Object)"><!-- --></A><H3>
objectToData</H3>
<PRE>
-public abstract <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>objectToData</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</PRE>
+public abstract <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>objectToData</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</PRE>
<DL>
<DD>Extracts a data object from an entity object.
<P>
@@ -395,7 +395,7 @@ public abstract <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -431,6 +431,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&n
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/serial/SerialSerialKeyCreator.html b/db/docs/java/com/sleepycat/bind/serial/SerialSerialKeyCreator.html
index 21796851f..b56fbd2a1 100644
--- a/db/docs/java/com/sleepycat/bind/serial/SerialSerialKeyCreator.html
+++ b/db/docs/java/com/sleepycat/bind/serial/SerialSerialKeyCreator.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-SerialSerialKeyCreator (Oracle Corporation - Berkeley DB Java API)
+SerialSerialKeyCreator (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.bind.serial.SerialSerialKeyCreator class">
@@ -14,7 +14,7 @@ SerialSerialKeyCreator (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="SerialSerialKeyCreator (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="SerialSerialKeyCreator (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,7 +89,7 @@ com.sleepycat.bind.serial</FONT>
<BR>
Class SerialSerialKeyCreator</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.bind.serial.SerialSerialKeyCreator</B>
</PRE>
<DL>
@@ -97,7 +97,7 @@ Class SerialSerialKeyCreator</H2>
</DL>
<HR>
<DL>
-<DT><PRE>public abstract class <B>SerialSerialKeyCreator</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A><DT>implements <A HREF="../../../../com/sleepycat/db/SecondaryKeyCreator.html" title="interface in com.sleepycat.db">SecondaryKeyCreator</A></DL>
+<DT><PRE>public abstract class <B>SerialSerialKeyCreator</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A><DT>implements <A HREF="../../../../com/sleepycat/db/SecondaryKeyCreator.html" title="interface in com.sleepycat.db">SecondaryKeyCreator</A></DL>
</PRE>
<P>
@@ -159,9 +159,9 @@ A abstract key creator that uses a serial key and a serial data entry.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/SerialSerialKeyCreator.html#SerialSerialKeyCreator(com.sleepycat.bind.serial.ClassCatalog, java.lang.Class, java.lang.Class, java.lang.Class)">SerialSerialKeyCreator</A></B>(<A HREF="../../../../com/sleepycat/bind/serial/ClassCatalog.html" title="interface in com.sleepycat.bind.serial">ClassCatalog</A>&nbsp;classCatalog,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;primaryKeyClass,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;dataClass,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;indexKeyClass)</CODE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;primaryKeyClass,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;dataClass,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;indexKeyClass)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a serial-serial key creator.</TD>
@@ -186,9 +186,9 @@ A abstract key creator that uses a serial key and a serial data entry.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>abstract &nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/SerialSerialKeyCreator.html#createSecondaryKey(java.lang.Object, java.lang.Object)">createSecondaryKey</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;primaryKey,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;data)</CODE>
+<CODE>abstract &nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/SerialSerialKeyCreator.html#createSecondaryKey(java.lang.Object, java.lang.Object)">createSecondaryKey</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;primaryKey,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;data)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates the index key object from primary key and entry objects.</TD>
@@ -206,8 +206,8 @@ A abstract key creator that uses a serial key and a serial data entry.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/SerialSerialKeyCreator.html#nullifyForeignKey(java.lang.Object)">nullifyForeignKey</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;data)</CODE>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/SerialSerialKeyCreator.html#nullifyForeignKey(java.lang.Object)">nullifyForeignKey</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;data)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Clears the index key in a data object.</TD>
@@ -225,10 +225,10 @@ A abstract key creator that uses a serial key and a serial data entry.
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -287,9 +287,9 @@ protected <A HREF="../../../../com/sleepycat/bind/serial/SerialBinding.html" tit
SerialSerialKeyCreator</H3>
<PRE>
public <B>SerialSerialKeyCreator</B>(<A HREF="../../../../com/sleepycat/bind/serial/ClassCatalog.html" title="interface in com.sleepycat.bind.serial">ClassCatalog</A>&nbsp;classCatalog,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;primaryKeyClass,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;dataClass,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;indexKeyClass)</PRE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;primaryKeyClass,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;dataClass,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;indexKeyClass)</PRE>
<DL>
<DD>Creates a serial-serial key creator.
<P>
@@ -386,8 +386,8 @@ public boolean <B>nullifyForeignKey</B>(<A HREF="../../../../com/sleepycat/db/Se
<A NAME="createSecondaryKey(java.lang.Object, java.lang.Object)"><!-- --></A><H3>
createSecondaryKey</H3>
<PRE>
-public abstract <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>createSecondaryKey</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;primaryKey,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;data)</PRE>
+public abstract <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>createSecondaryKey</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;primaryKey,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;data)</PRE>
<DL>
<DD>Creates the index key object from primary key and entry objects.
<P>
@@ -407,7 +407,7 @@ public abstract <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.
<A NAME="nullifyForeignKey(java.lang.Object)"><!-- --></A><H3>
nullifyForeignKey</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>nullifyForeignKey</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;data)</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>nullifyForeignKey</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;data)</PRE>
<DL>
<DD>Clears the index key in a data object.
@@ -452,7 +452,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" tit
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -488,6 +488,6 @@ DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/serial/StoredClassCatalog.html b/db/docs/java/com/sleepycat/bind/serial/StoredClassCatalog.html
index 12d13921d..779b6dff9 100644
--- a/db/docs/java/com/sleepycat/bind/serial/StoredClassCatalog.html
+++ b/db/docs/java/com/sleepycat/bind/serial/StoredClassCatalog.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:47 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-StoredClassCatalog (Oracle Corporation - Berkeley DB Java API)
+StoredClassCatalog (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.bind.serial.StoredClassCatalog class">
@@ -14,7 +14,7 @@ StoredClassCatalog (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="StoredClassCatalog (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="StoredClassCatalog (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,7 +89,7 @@ com.sleepycat.bind.serial</FONT>
<BR>
Class StoredClassCatalog</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.bind.serial.StoredClassCatalog</B>
</PRE>
<DL>
@@ -97,7 +97,7 @@ Class StoredClassCatalog</H2>
</DL>
<HR>
<DL>
-<DT><PRE>public class <B>StoredClassCatalog</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A><DT>implements <A HREF="../../../../com/sleepycat/bind/serial/ClassCatalog.html" title="interface in com.sleepycat.bind.serial">ClassCatalog</A></DL>
+<DT><PRE>public class <B>StoredClassCatalog</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A><DT>implements <A HREF="../../../../com/sleepycat/bind/serial/ClassCatalog.html" title="interface in com.sleepycat.bind.serial">ClassCatalog</A></DL>
</PRE>
<P>
@@ -146,7 +146,7 @@ A <code>ClassCatalog</code> that is stored in a <code>Database</code>.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamClass.html" title="class or interface in java.io">ObjectStreamClass</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamClass.html" title="class or interface in java.io">ObjectStreamClass</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/StoredClassCatalog.html#getClassFormat(byte[])">getClassFormat</A></B>(byte[]&nbsp;classID)</CODE>
<BR>
@@ -155,7 +155,7 @@ A <code>ClassCatalog</code> that is stored in a <code>Database</code>.
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;byte[]</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/StoredClassCatalog.html#getClassID(java.io.ObjectStreamClass)">getClassID</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamClass.html" title="class or interface in java.io">ObjectStreamClass</A>&nbsp;classFormat)</CODE>
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/StoredClassCatalog.html#getClassID(java.io.ObjectStreamClass)">getClassID</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamClass.html" title="class or interface in java.io">ObjectStreamClass</A>&nbsp;classFormat)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the class ID for the current version of the given class
@@ -165,10 +165,10 @@ A <code>ClassCatalog</code> that is stored in a <code>Database</code>.
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -189,7 +189,7 @@ StoredClassCatalog</H3>
<PRE>
public <B>StoredClassCatalog</B>(<A HREF="../../../../com/sleepycat/db/Database.html" title="class in com.sleepycat.db">Database</A>&nbsp;database)
throws <A HREF="../../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A>,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></PRE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></PRE>
<DL>
<DD>Creates a catalog based on a given database. To save resources, only a
single catalog object should be used for each unique catalog database.
@@ -199,7 +199,7 @@ public <B>StoredClassCatalog</B>(<A HREF="../../../../com/sleepycat/db/Database.
be a BTREE database and must not allow duplicates.
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if an error occurs accessing the database.
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if the database is not a BTREE database
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if the database is not a BTREE database
or if it configured to allow duplicates.</DL>
</DL>
@@ -236,9 +236,9 @@ public void <B>close</B>()
<A NAME="getClassID(java.io.ObjectStreamClass)"><!-- --></A><H3>
getClassID</H3>
<PRE>
-public byte[] <B>getClassID</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamClass.html" title="class or interface in java.io">ObjectStreamClass</A>&nbsp;classFormat)
+public byte[] <B>getClassID</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamClass.html" title="class or interface in java.io">ObjectStreamClass</A>&nbsp;classFormat)
throws <A HREF="../../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A>,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/ClassNotFoundException.html" title="class or interface in java.lang">ClassNotFoundException</A></PRE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/ClassNotFoundException.html" title="class or interface in java.lang">ClassNotFoundException</A></PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../com/sleepycat/bind/serial/ClassCatalog.html#getClassID(java.io.ObjectStreamClass)">ClassCatalog</A></CODE></B></DD>
<DD>Return the class ID for the current version of the given class
@@ -258,7 +258,7 @@ public byte[] <B>getClassID</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/j
<DT><B>Returns:</B><DD>The class ID for the current version of the class.
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/ClassNotFoundException.html" title="class or interface in java.lang">ClassNotFoundException</A></CODE></DL>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/ClassNotFoundException.html" title="class or interface in java.lang">ClassNotFoundException</A></CODE></DL>
</DD>
</DL>
<HR>
@@ -266,9 +266,9 @@ public byte[] <B>getClassID</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/j
<A NAME="getClassFormat(byte[])"><!-- --></A><H3>
getClassFormat</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamClass.html" title="class or interface in java.io">ObjectStreamClass</A> <B>getClassFormat</B>(byte[]&nbsp;classID)
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamClass.html" title="class or interface in java.io">ObjectStreamClass</A> <B>getClassFormat</B>(byte[]&nbsp;classID)
throws <A HREF="../../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A>,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/ClassNotFoundException.html" title="class or interface in java.lang">ClassNotFoundException</A></PRE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/ClassNotFoundException.html" title="class or interface in java.lang">ClassNotFoundException</A></PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../com/sleepycat/bind/serial/ClassCatalog.html#getClassFormat(byte[])">ClassCatalog</A></CODE></B></DD>
<DD>Return the ObjectStreamClass for the given class ID. This may or may
@@ -284,7 +284,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamClass.
represent the current version of the class.
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/ClassNotFoundException.html" title="class or interface in java.lang">ClassNotFoundException</A></CODE></DL>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/ClassNotFoundException.html" title="class or interface in java.lang">ClassNotFoundException</A></CODE></DL>
</DD>
</DL>
<!-- ========= END OF CLASS DATA ========= -->
@@ -312,7 +312,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamClass.
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -348,6 +348,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&n
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/serial/TupleSerialBinding.html b/db/docs/java/com/sleepycat/bind/serial/TupleSerialBinding.html
index ab97b166a..328e61b2d 100644
--- a/db/docs/java/com/sleepycat/bind/serial/TupleSerialBinding.html
+++ b/db/docs/java/com/sleepycat/bind/serial/TupleSerialBinding.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:47 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-TupleSerialBinding (Oracle Corporation - Berkeley DB Java API)
+TupleSerialBinding (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.bind.serial.TupleSerialBinding class">
@@ -14,7 +14,7 @@ TupleSerialBinding (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="TupleSerialBinding (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="TupleSerialBinding (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,7 +89,7 @@ com.sleepycat.bind.serial</FONT>
<BR>
Class TupleSerialBinding</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../../com/sleepycat/bind/tuple/TupleBase.html" title="class in com.sleepycat.bind.tuple">com.sleepycat.bind.tuple.TupleBase</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.bind.serial.TupleSerialBinding</B>
</PRE>
@@ -150,7 +150,7 @@ An abstract <code>EntityBinding</code> that treats an entity's key entry as
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/TupleSerialBinding.html#TupleSerialBinding(com.sleepycat.bind.serial.ClassCatalog, java.lang.Class)">TupleSerialBinding</A></B>(<A HREF="../../../../com/sleepycat/bind/serial/ClassCatalog.html" title="interface in com.sleepycat.bind.serial">ClassCatalog</A>&nbsp;classCatalog,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;baseClass)</CODE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;baseClass)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a tuple-serial entity binding.</TD>
@@ -173,7 +173,7 @@ An abstract <code>EntityBinding</code> that treats an entity's key entry as
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/TupleSerialBinding.html#entryToObject(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry)">entryToObject</A></B>(<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;key,
<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;data)</CODE>
@@ -182,9 +182,9 @@ An abstract <code>EntityBinding</code> that treats an entity's key entry as
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>abstract &nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>abstract &nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/TupleSerialBinding.html#entryToObject(com.sleepycat.bind.tuple.TupleInput, java.lang.Object)">entryToObject</A></B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;keyInput,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;dataInput)</CODE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;dataInput)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs an entity object from <A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple"><CODE>TupleInput</CODE></A> key entry and
@@ -192,8 +192,8 @@ An abstract <code>EntityBinding</code> that treats an entity's key entry as
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>abstract &nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/TupleSerialBinding.html#objectToData(java.lang.Object)">objectToData</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
+<CODE>abstract &nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/TupleSerialBinding.html#objectToData(java.lang.Object)">objectToData</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Extracts a data object from an entity object.</TD>
@@ -201,7 +201,7 @@ An abstract <code>EntityBinding</code> that treats an entity's key entry as
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/TupleSerialBinding.html#objectToData(java.lang.Object, com.sleepycat.db.DatabaseEntry)">objectToData</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/TupleSerialBinding.html#objectToData(java.lang.Object, com.sleepycat.db.DatabaseEntry)">objectToData</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;data)</CODE>
<BR>
@@ -210,7 +210,7 @@ An abstract <code>EntityBinding</code> that treats an entity's key entry as
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/TupleSerialBinding.html#objectToKey(java.lang.Object, com.sleepycat.db.DatabaseEntry)">objectToKey</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/TupleSerialBinding.html#objectToKey(java.lang.Object, com.sleepycat.db.DatabaseEntry)">objectToKey</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;key)</CODE>
<BR>
@@ -219,7 +219,7 @@ An abstract <code>EntityBinding</code> that treats an entity's key entry as
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>abstract &nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/TupleSerialBinding.html#objectToKey(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToKey</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/TupleSerialBinding.html#objectToKey(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToKey</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;keyOutput)</CODE>
<BR>
@@ -238,10 +238,10 @@ An abstract <code>EntityBinding</code> that treats an entity's key entry as
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -280,7 +280,7 @@ protected <A HREF="../../../../com/sleepycat/bind/serial/SerialBinding.html" tit
TupleSerialBinding</H3>
<PRE>
public <B>TupleSerialBinding</B>(<A HREF="../../../../com/sleepycat/bind/serial/ClassCatalog.html" title="interface in com.sleepycat.bind.serial">ClassCatalog</A>&nbsp;classCatalog,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;baseClass)</PRE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;baseClass)</PRE>
<DL>
<DD>Creates a tuple-serial entity binding.
<P>
@@ -314,7 +314,7 @@ public <B>TupleSerialBinding</B>(<A HREF="../../../../com/sleepycat/bind/serial/
<A NAME="entryToObject(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry)"><!-- --></A><H3>
entryToObject</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>entryToObject</B>(<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;key,
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>entryToObject</B>(<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;key,
<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;data)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../com/sleepycat/bind/EntityBinding.html#entryToObject(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry)">EntityBinding</A></CODE></B></DD>
@@ -333,7 +333,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" tit
<A NAME="objectToKey(java.lang.Object, com.sleepycat.db.DatabaseEntry)"><!-- --></A><H3>
objectToKey</H3>
<PRE>
-public void <B>objectToKey</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+public void <B>objectToKey</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;key)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../com/sleepycat/bind/EntityBinding.html#objectToKey(java.lang.Object, com.sleepycat.db.DatabaseEntry)">EntityBinding</A></CODE></B></DD>
@@ -351,7 +351,7 @@ public void <B>objectToKey</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/ja
<A NAME="objectToData(java.lang.Object, com.sleepycat.db.DatabaseEntry)"><!-- --></A><H3>
objectToData</H3>
<PRE>
-public void <B>objectToData</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+public void <B>objectToData</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;data)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../com/sleepycat/bind/EntityBinding.html#objectToData(java.lang.Object, com.sleepycat.db.DatabaseEntry)">EntityBinding</A></CODE></B></DD>
@@ -369,8 +369,8 @@ public void <B>objectToData</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/j
<A NAME="entryToObject(com.sleepycat.bind.tuple.TupleInput, java.lang.Object)"><!-- --></A><H3>
entryToObject</H3>
<PRE>
-public abstract <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>entryToObject</B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;keyInput,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;dataInput)</PRE>
+public abstract <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>entryToObject</B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;keyInput,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;dataInput)</PRE>
<DL>
<DD>Constructs an entity object from <A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple"><CODE>TupleInput</CODE></A> key entry and
deserialized data entry objects.
@@ -388,7 +388,7 @@ public abstract <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.
<A NAME="objectToKey(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)"><!-- --></A><H3>
objectToKey</H3>
<PRE>
-public abstract void <B>objectToKey</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+public abstract void <B>objectToKey</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;keyOutput)</PRE>
<DL>
<DD>Extracts a key tuple from an entity object.
@@ -406,7 +406,7 @@ public abstract void <B>objectToKey</B>(<A HREF="http://java.sun.com/j2se/1.3/do
<A NAME="objectToData(java.lang.Object)"><!-- --></A><H3>
objectToData</H3>
<PRE>
-public abstract <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>objectToData</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</PRE>
+public abstract <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>objectToData</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</PRE>
<DL>
<DD>Extracts a data object from an entity object.
<P>
@@ -443,7 +443,7 @@ public abstract <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -479,6 +479,6 @@ DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/serial/TupleSerialKeyCreator.html b/db/docs/java/com/sleepycat/bind/serial/TupleSerialKeyCreator.html
index d2ddb9493..5316222a6 100644
--- a/db/docs/java/com/sleepycat/bind/serial/TupleSerialKeyCreator.html
+++ b/db/docs/java/com/sleepycat/bind/serial/TupleSerialKeyCreator.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:47 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-TupleSerialKeyCreator (Oracle Corporation - Berkeley DB Java API)
+TupleSerialKeyCreator (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.bind.serial.TupleSerialKeyCreator class">
@@ -14,7 +14,7 @@ TupleSerialKeyCreator (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="TupleSerialKeyCreator (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="TupleSerialKeyCreator (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,7 +89,7 @@ com.sleepycat.bind.serial</FONT>
<BR>
Class TupleSerialKeyCreator</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../../com/sleepycat/bind/tuple/TupleBase.html" title="class in com.sleepycat.bind.tuple">com.sleepycat.bind.tuple.TupleBase</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.bind.serial.TupleSerialKeyCreator</B>
</PRE>
@@ -148,7 +148,7 @@ A abstract key creator that uses a tuple key and a serial data entry. This
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/TupleSerialKeyCreator.html#TupleSerialKeyCreator(com.sleepycat.bind.serial.ClassCatalog, java.lang.Class)">TupleSerialKeyCreator</A></B>(<A HREF="../../../../com/sleepycat/bind/serial/ClassCatalog.html" title="interface in com.sleepycat.bind.serial">ClassCatalog</A>&nbsp;classCatalog,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;dataClass)</CODE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;dataClass)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a tuple-serial key creator.</TD>
@@ -184,7 +184,7 @@ A abstract key creator that uses a tuple key and a serial data entry. This
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>abstract &nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/TupleSerialKeyCreator.html#createSecondaryKey(com.sleepycat.bind.tuple.TupleInput, java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">createSecondaryKey</A></B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;primaryKeyInput,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;dataInput,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;dataInput,
<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;indexKeyOutput)</CODE>
<BR>
@@ -193,8 +193,8 @@ A abstract key creator that uses a tuple key and a serial data entry. This
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/TupleSerialKeyCreator.html#nullifyForeignKey(java.lang.Object)">nullifyForeignKey</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;data)</CODE>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/TupleSerialKeyCreator.html#nullifyForeignKey(java.lang.Object)">nullifyForeignKey</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;data)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Clears the index key in the deserialized data entry.</TD>
@@ -221,10 +221,10 @@ A abstract key creator that uses a tuple key and a serial data entry. This
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -263,7 +263,7 @@ protected <A HREF="../../../../com/sleepycat/bind/serial/SerialBinding.html" tit
TupleSerialKeyCreator</H3>
<PRE>
public <B>TupleSerialKeyCreator</B>(<A HREF="../../../../com/sleepycat/bind/serial/ClassCatalog.html" title="interface in com.sleepycat.bind.serial">ClassCatalog</A>&nbsp;classCatalog,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;dataClass)</PRE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;dataClass)</PRE>
<DL>
<DD>Creates a tuple-serial key creator.
<P>
@@ -359,7 +359,7 @@ public boolean <B>nullifyForeignKey</B>(<A HREF="../../../../com/sleepycat/db/Se
createSecondaryKey</H3>
<PRE>
public abstract boolean <B>createSecondaryKey</B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;primaryKeyInput,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;dataInput,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;dataInput,
<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;indexKeyOutput)</PRE>
<DL>
<DD>Creates the index key entry from primary key tuple entry and
@@ -384,7 +384,7 @@ public abstract boolean <B>createSecondaryKey</B>(<A HREF="../../../../com/sleep
<A NAME="nullifyForeignKey(java.lang.Object)"><!-- --></A><H3>
nullifyForeignKey</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>nullifyForeignKey</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;data)</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>nullifyForeignKey</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;data)</PRE>
<DL>
<DD>Clears the index key in the deserialized data entry.
@@ -430,7 +430,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" tit
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -466,6 +466,6 @@ DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/serial/TupleSerialMarshalledBinding.html b/db/docs/java/com/sleepycat/bind/serial/TupleSerialMarshalledBinding.html
index 3f6a4a643..93c6ba49f 100644
--- a/db/docs/java/com/sleepycat/bind/serial/TupleSerialMarshalledBinding.html
+++ b/db/docs/java/com/sleepycat/bind/serial/TupleSerialMarshalledBinding.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:47 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-TupleSerialMarshalledBinding (Oracle Corporation - Berkeley DB Java API)
+TupleSerialMarshalledBinding (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.bind.serial.TupleSerialMarshalledBinding class">
@@ -14,7 +14,7 @@ TupleSerialMarshalledBinding (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="TupleSerialMarshalledBinding (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="TupleSerialMarshalledBinding (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,7 +89,7 @@ com.sleepycat.bind.serial</FONT>
<BR>
Class TupleSerialMarshalledBinding</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../../com/sleepycat/bind/tuple/TupleBase.html" title="class in com.sleepycat.bind.tuple">com.sleepycat.bind.tuple.TupleBase</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../../com/sleepycat/bind/serial/TupleSerialBinding.html" title="class in com.sleepycat.bind.serial">com.sleepycat.bind.serial.TupleSerialBinding</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.bind.serial.TupleSerialMarshalledBinding</B>
@@ -105,7 +105,7 @@ Class TupleSerialMarshalledBinding</H2>
<P>
A concrete <code>TupleSerialBinding</code> that delegates to the
<code>MarshalledTupleKeyEntity</code> interface of the entity class.
-
+
<p>The <A HREF="../../../../com/sleepycat/bind/tuple/MarshalledTupleKeyEntity.html" title="interface in com.sleepycat.bind.tuple"><CODE>MarshalledTupleKeyEntity</CODE></A> interface must be implemented by the
entity class to convert between the key/data entry and entity object.</p>
@@ -151,7 +151,7 @@ A concrete <code>TupleSerialBinding</code> that delegates to the
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/TupleSerialMarshalledBinding.html#TupleSerialMarshalledBinding(com.sleepycat.bind.serial.ClassCatalog, java.lang.Class)">TupleSerialMarshalledBinding</A></B>(<A HREF="../../../../com/sleepycat/bind/serial/ClassCatalog.html" title="interface in com.sleepycat.bind.serial">ClassCatalog</A>&nbsp;classCatalog,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;baseClass)</CODE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;baseClass)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a tuple-serial marshalled binding object.</TD>
@@ -174,9 +174,9 @@ A concrete <code>TupleSerialBinding</code> that delegates to the
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/TupleSerialMarshalledBinding.html#entryToObject(com.sleepycat.bind.tuple.TupleInput, java.lang.Object)">entryToObject</A></B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;tupleInput,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;javaInput)</CODE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;javaInput)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs an entity object from <A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple"><CODE>TupleInput</CODE></A> key entry and
@@ -184,8 +184,8 @@ A concrete <code>TupleSerialBinding</code> that delegates to the
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/TupleSerialMarshalledBinding.html#objectToData(java.lang.Object)">objectToData</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/TupleSerialMarshalledBinding.html#objectToData(java.lang.Object)">objectToData</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Extracts a data object from an entity object.</TD>
@@ -193,7 +193,7 @@ A concrete <code>TupleSerialBinding</code> that delegates to the
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/TupleSerialMarshalledBinding.html#objectToKey(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToKey</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/TupleSerialMarshalledBinding.html#objectToKey(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToKey</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;output)</CODE>
<BR>
@@ -221,10 +221,10 @@ A concrete <code>TupleSerialBinding</code> that delegates to the
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -244,7 +244,7 @@ A concrete <code>TupleSerialBinding</code> that delegates to the
TupleSerialMarshalledBinding</H3>
<PRE>
public <B>TupleSerialMarshalledBinding</B>(<A HREF="../../../../com/sleepycat/bind/serial/ClassCatalog.html" title="interface in com.sleepycat.bind.serial">ClassCatalog</A>&nbsp;classCatalog,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;baseClass)</PRE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;baseClass)</PRE>
<DL>
<DD>Creates a tuple-serial marshalled binding object.
<P>
@@ -281,8 +281,8 @@ public <B>TupleSerialMarshalledBinding</B>(<A HREF="../../../../com/sleepycat/bi
<A NAME="entryToObject(com.sleepycat.bind.tuple.TupleInput, java.lang.Object)"><!-- --></A><H3>
entryToObject</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>entryToObject</B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;tupleInput,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;javaInput)</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>entryToObject</B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;tupleInput,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;javaInput)</PRE>
<DL>
<DD><B>Description copied from class: <CODE><A HREF="../../../../com/sleepycat/bind/serial/TupleSerialBinding.html#entryToObject(com.sleepycat.bind.tuple.TupleInput, java.lang.Object)">TupleSerialBinding</A></CODE></B></DD>
<DD>Constructs an entity object from <A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple"><CODE>TupleInput</CODE></A> key entry and
@@ -301,7 +301,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" tit
<A NAME="objectToKey(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)"><!-- --></A><H3>
objectToKey</H3>
<PRE>
-public void <B>objectToKey</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+public void <B>objectToKey</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;output)</PRE>
<DL>
<DD><B>Description copied from class: <CODE><A HREF="../../../../com/sleepycat/bind/serial/TupleSerialBinding.html#objectToKey(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">TupleSerialBinding</A></CODE></B></DD>
@@ -320,7 +320,7 @@ public void <B>objectToKey</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/ja
<A NAME="objectToData(java.lang.Object)"><!-- --></A><H3>
objectToData</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>objectToData</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>objectToData</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</PRE>
<DL>
<DD><B>Description copied from class: <CODE><A HREF="../../../../com/sleepycat/bind/serial/TupleSerialBinding.html#objectToData(java.lang.Object)">TupleSerialBinding</A></CODE></B></DD>
<DD>Extracts a data object from an entity object.
@@ -358,7 +358,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" tit
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -394,6 +394,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&n
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/serial/TupleSerialMarshalledKeyCreator.html b/db/docs/java/com/sleepycat/bind/serial/TupleSerialMarshalledKeyCreator.html
index 3c1723b56..3cc38ca26 100644
--- a/db/docs/java/com/sleepycat/bind/serial/TupleSerialMarshalledKeyCreator.html
+++ b/db/docs/java/com/sleepycat/bind/serial/TupleSerialMarshalledKeyCreator.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:47 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-TupleSerialMarshalledKeyCreator (Oracle Corporation - Berkeley DB Java API)
+TupleSerialMarshalledKeyCreator (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.bind.serial.TupleSerialMarshalledKeyCreator class">
@@ -14,7 +14,7 @@ TupleSerialMarshalledKeyCreator (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="TupleSerialMarshalledKeyCreator (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="TupleSerialMarshalledKeyCreator (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,7 +89,7 @@ com.sleepycat.bind.serial</FONT>
<BR>
Class TupleSerialMarshalledKeyCreator</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../../com/sleepycat/bind/tuple/TupleBase.html" title="class in com.sleepycat.bind.tuple">com.sleepycat.bind.tuple.TupleBase</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../../com/sleepycat/bind/serial/TupleSerialKeyCreator.html" title="class in com.sleepycat.bind.serial">com.sleepycat.bind.serial.TupleSerialKeyCreator</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.bind.serial.TupleSerialMarshalledKeyCreator</B>
@@ -141,7 +141,7 @@ A concrete key creator that works in conjunction with a <A HREF="../../../../com
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/TupleSerialMarshalledKeyCreator.html#TupleSerialMarshalledKeyCreator(com.sleepycat.bind.serial.TupleSerialMarshalledBinding, java.lang.String)">TupleSerialMarshalledKeyCreator</A></B>(<A HREF="../../../../com/sleepycat/bind/serial/TupleSerialMarshalledBinding.html" title="class in com.sleepycat.bind.serial">TupleSerialMarshalledBinding</A>&nbsp;binding,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;keyName)</CODE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;keyName)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a tuple-serial marshalled key creator.</TD>
@@ -160,7 +160,7 @@ A concrete key creator that works in conjunction with a <A HREF="../../../../com
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/TupleSerialMarshalledKeyCreator.html#createSecondaryKey(com.sleepycat.bind.tuple.TupleInput, java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">createSecondaryKey</A></B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;primaryKeyInput,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;dataInput,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;dataInput,
<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;indexKeyOutput)</CODE>
<BR>
@@ -169,8 +169,8 @@ A concrete key creator that works in conjunction with a <A HREF="../../../../com
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/TupleSerialMarshalledKeyCreator.html#nullifyForeignKey(java.lang.Object)">nullifyForeignKey</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;dataInput)</CODE>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/serial/TupleSerialMarshalledKeyCreator.html#nullifyForeignKey(java.lang.Object)">nullifyForeignKey</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;dataInput)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Clears the index key in the deserialized data entry.</TD>
@@ -197,10 +197,10 @@ A concrete key creator that works in conjunction with a <A HREF="../../../../com
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -220,7 +220,7 @@ A concrete key creator that works in conjunction with a <A HREF="../../../../com
TupleSerialMarshalledKeyCreator</H3>
<PRE>
public <B>TupleSerialMarshalledKeyCreator</B>(<A HREF="../../../../com/sleepycat/bind/serial/TupleSerialMarshalledBinding.html" title="class in com.sleepycat.bind.serial">TupleSerialMarshalledBinding</A>&nbsp;binding,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;keyName)</PRE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;keyName)</PRE>
<DL>
<DD>Creates a tuple-serial marshalled key creator.
<P>
@@ -243,7 +243,7 @@ public <B>TupleSerialMarshalledKeyCreator</B>(<A HREF="../../../../com/sleepycat
createSecondaryKey</H3>
<PRE>
public boolean <B>createSecondaryKey</B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;primaryKeyInput,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;dataInput,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;dataInput,
<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;indexKeyOutput)</PRE>
<DL>
<DD><B>Description copied from class: <CODE><A HREF="../../../../com/sleepycat/bind/serial/TupleSerialKeyCreator.html#createSecondaryKey(com.sleepycat.bind.tuple.TupleInput, java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">TupleSerialKeyCreator</A></CODE></B></DD>
@@ -269,7 +269,7 @@ public boolean <B>createSecondaryKey</B>(<A HREF="../../../../com/sleepycat/bind
<A NAME="nullifyForeignKey(java.lang.Object)"><!-- --></A><H3>
nullifyForeignKey</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>nullifyForeignKey</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;dataInput)</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>nullifyForeignKey</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;dataInput)</PRE>
<DL>
<DD><B>Description copied from class: <CODE><A HREF="../../../../com/sleepycat/bind/serial/TupleSerialKeyCreator.html#nullifyForeignKey(java.lang.Object)">TupleSerialKeyCreator</A></CODE></B></DD>
<DD>Clears the index key in the deserialized data entry.
@@ -316,7 +316,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" tit
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -352,6 +352,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&n
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/serial/class-use/ClassCatalog.html b/db/docs/java/com/sleepycat/bind/serial/class-use/ClassCatalog.html
index d835ac3bb..054dbf064 100644
--- a/db/docs/java/com/sleepycat/bind/serial/class-use/ClassCatalog.html
+++ b/db/docs/java/com/sleepycat/bind/serial/class-use/ClassCatalog.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Interface com.sleepycat.bind.serial.ClassCatalog (Oracle Corporation - Berkeley DB Java API)
+Uses of Interface com.sleepycat.bind.serial.ClassCatalog (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Interface com.sleepycat.bind.serial.ClassCatalog (Oracle Corporation - B
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Interface com.sleepycat.bind.serial.ClassCatalog (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Interface com.sleepycat.bind.serial.ClassCatalog (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -128,28 +128,28 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/serial/ClassCatalog.html" tit
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../../com/sleepycat/bind/serial/SerialBinding.html#SerialBinding(com.sleepycat.bind.serial.ClassCatalog, java.lang.Class)">SerialBinding</A></B>(<A HREF="../../../../../com/sleepycat/bind/serial/ClassCatalog.html" title="interface in com.sleepycat.bind.serial">ClassCatalog</A>&nbsp;classCatalog,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;baseClass)</CODE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;baseClass)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a serial binding.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><B><A HREF="../../../../../com/sleepycat/bind/serial/SerialInput.html#SerialInput(java.io.InputStream, com.sleepycat.bind.serial.ClassCatalog)">SerialInput</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/InputStream.html" title="class or interface in java.io">InputStream</A>&nbsp;in,
+<TD><CODE><B><A HREF="../../../../../com/sleepycat/bind/serial/SerialInput.html#SerialInput(java.io.InputStream, com.sleepycat.bind.serial.ClassCatalog)">SerialInput</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/InputStream.html" title="class or interface in java.io">InputStream</A>&nbsp;in,
<A HREF="../../../../../com/sleepycat/bind/serial/ClassCatalog.html" title="interface in com.sleepycat.bind.serial">ClassCatalog</A>&nbsp;classCatalog)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a serial input stream.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><B><A HREF="../../../../../com/sleepycat/bind/serial/SerialInput.html#SerialInput(java.io.InputStream, com.sleepycat.bind.serial.ClassCatalog, java.lang.ClassLoader)">SerialInput</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/InputStream.html" title="class or interface in java.io">InputStream</A>&nbsp;in,
+<TD><CODE><B><A HREF="../../../../../com/sleepycat/bind/serial/SerialInput.html#SerialInput(java.io.InputStream, com.sleepycat.bind.serial.ClassCatalog, java.lang.ClassLoader)">SerialInput</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/InputStream.html" title="class or interface in java.io">InputStream</A>&nbsp;in,
<A HREF="../../../../../com/sleepycat/bind/serial/ClassCatalog.html" title="interface in com.sleepycat.bind.serial">ClassCatalog</A>&nbsp;classCatalog,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/ClassLoader.html" title="class or interface in java.lang">ClassLoader</A>&nbsp;classLoader)</CODE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/ClassLoader.html" title="class or interface in java.lang">ClassLoader</A>&nbsp;classLoader)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a serial input stream.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><B><A HREF="../../../../../com/sleepycat/bind/serial/SerialOutput.html#SerialOutput(java.io.OutputStream, com.sleepycat.bind.serial.ClassCatalog)">SerialOutput</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/OutputStream.html" title="class or interface in java.io">OutputStream</A>&nbsp;out,
+<TD><CODE><B><A HREF="../../../../../com/sleepycat/bind/serial/SerialOutput.html#SerialOutput(java.io.OutputStream, com.sleepycat.bind.serial.ClassCatalog)">SerialOutput</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/OutputStream.html" title="class or interface in java.io">OutputStream</A>&nbsp;out,
<A HREF="../../../../../com/sleepycat/bind/serial/ClassCatalog.html" title="interface in com.sleepycat.bind.serial">ClassCatalog</A>&nbsp;classCatalog)</CODE>
<BR>
@@ -157,38 +157,38 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/serial/ClassCatalog.html" tit
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../../com/sleepycat/bind/serial/SerialSerialBinding.html#SerialSerialBinding(com.sleepycat.bind.serial.ClassCatalog, java.lang.Class, java.lang.Class)">SerialSerialBinding</A></B>(<A HREF="../../../../../com/sleepycat/bind/serial/ClassCatalog.html" title="interface in com.sleepycat.bind.serial">ClassCatalog</A>&nbsp;classCatalog,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;keyClass,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;dataClass)</CODE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;keyClass,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;dataClass)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a serial-serial entity binding.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../../com/sleepycat/bind/serial/SerialSerialKeyCreator.html#SerialSerialKeyCreator(com.sleepycat.bind.serial.ClassCatalog, java.lang.Class, java.lang.Class, java.lang.Class)">SerialSerialKeyCreator</A></B>(<A HREF="../../../../../com/sleepycat/bind/serial/ClassCatalog.html" title="interface in com.sleepycat.bind.serial">ClassCatalog</A>&nbsp;classCatalog,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;primaryKeyClass,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;dataClass,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;indexKeyClass)</CODE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;primaryKeyClass,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;dataClass,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;indexKeyClass)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a serial-serial key creator.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../../com/sleepycat/bind/serial/TupleSerialBinding.html#TupleSerialBinding(com.sleepycat.bind.serial.ClassCatalog, java.lang.Class)">TupleSerialBinding</A></B>(<A HREF="../../../../../com/sleepycat/bind/serial/ClassCatalog.html" title="interface in com.sleepycat.bind.serial">ClassCatalog</A>&nbsp;classCatalog,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;baseClass)</CODE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;baseClass)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a tuple-serial entity binding.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../../com/sleepycat/bind/serial/TupleSerialKeyCreator.html#TupleSerialKeyCreator(com.sleepycat.bind.serial.ClassCatalog, java.lang.Class)">TupleSerialKeyCreator</A></B>(<A HREF="../../../../../com/sleepycat/bind/serial/ClassCatalog.html" title="interface in com.sleepycat.bind.serial">ClassCatalog</A>&nbsp;classCatalog,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;dataClass)</CODE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;dataClass)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a tuple-serial key creator.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../../com/sleepycat/bind/serial/TupleSerialMarshalledBinding.html#TupleSerialMarshalledBinding(com.sleepycat.bind.serial.ClassCatalog, java.lang.Class)">TupleSerialMarshalledBinding</A></B>(<A HREF="../../../../../com/sleepycat/bind/serial/ClassCatalog.html" title="interface in com.sleepycat.bind.serial">ClassCatalog</A>&nbsp;classCatalog,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;baseClass)</CODE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;baseClass)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a tuple-serial marshalled binding object.</TD>
@@ -259,7 +259,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/serial/ClassCatalog.html" tit
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -289,6 +289,6 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/serial/ClassCatalog.html" tit
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/serial/class-use/SerialBase.html b/db/docs/java/com/sleepycat/bind/serial/class-use/SerialBase.html
index f5dcf2eff..675efe237 100644
--- a/db/docs/java/com/sleepycat/bind/serial/class-use/SerialBase.html
+++ b/db/docs/java/com/sleepycat/bind/serial/class-use/SerialBase.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.bind.serial.SerialBase (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.bind.serial.SerialBase (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.bind.serial.SerialBase (Oracle Corporation - Berkele
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.bind.serial.SerialBase (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.bind.serial.SerialBase (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -142,7 +142,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/serial/SerialBase.html" title
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -172,6 +172,6 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/serial/SerialBase.html" title
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/serial/class-use/SerialBinding.html b/db/docs/java/com/sleepycat/bind/serial/class-use/SerialBinding.html
index ea592116c..96fb5122a 100644
--- a/db/docs/java/com/sleepycat/bind/serial/class-use/SerialBinding.html
+++ b/db/docs/java/com/sleepycat/bind/serial/class-use/SerialBinding.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.bind.serial.SerialBinding (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.bind.serial.SerialBinding (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.bind.serial.SerialBinding (Oracle Corporation - Berk
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.bind.serial.SerialBinding (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.bind.serial.SerialBinding (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -214,7 +214,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/serial/SerialBinding.html" ti
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -244,6 +244,6 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/serial/SerialBinding.html" ti
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/serial/class-use/SerialInput.html b/db/docs/java/com/sleepycat/bind/serial/class-use/SerialInput.html
index 0807424fe..3e8e3d7eb 100644
--- a/db/docs/java/com/sleepycat/bind/serial/class-use/SerialInput.html
+++ b/db/docs/java/com/sleepycat/bind/serial/class-use/SerialInput.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.bind.serial.SerialInput (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.bind.serial.SerialInput (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.bind.serial.SerialInput (Oracle Corporation - Berkel
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.bind.serial.SerialInput (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.bind.serial.SerialInput (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -105,7 +105,7 @@ No usage of com.sleepycat.bind.serial.SerialInput
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -135,6 +135,6 @@ No usage of com.sleepycat.bind.serial.SerialInput
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/serial/class-use/SerialOutput.html b/db/docs/java/com/sleepycat/bind/serial/class-use/SerialOutput.html
index 3ef060871..cb98b3128 100644
--- a/db/docs/java/com/sleepycat/bind/serial/class-use/SerialOutput.html
+++ b/db/docs/java/com/sleepycat/bind/serial/class-use/SerialOutput.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.bind.serial.SerialOutput (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.bind.serial.SerialOutput (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.bind.serial.SerialOutput (Oracle Corporation - Berke
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.bind.serial.SerialOutput (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.bind.serial.SerialOutput (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -105,7 +105,7 @@ No usage of com.sleepycat.bind.serial.SerialOutput
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -135,6 +135,6 @@ No usage of com.sleepycat.bind.serial.SerialOutput
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/serial/class-use/SerialSerialBinding.html b/db/docs/java/com/sleepycat/bind/serial/class-use/SerialSerialBinding.html
index 521c3b89d..0e42e1c64 100644
--- a/db/docs/java/com/sleepycat/bind/serial/class-use/SerialSerialBinding.html
+++ b/db/docs/java/com/sleepycat/bind/serial/class-use/SerialSerialBinding.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.bind.serial.SerialSerialBinding (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.bind.serial.SerialSerialBinding (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.bind.serial.SerialSerialBinding (Oracle Corporation
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.bind.serial.SerialSerialBinding (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.bind.serial.SerialSerialBinding (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -105,7 +105,7 @@ No usage of com.sleepycat.bind.serial.SerialSerialBinding
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -135,6 +135,6 @@ No usage of com.sleepycat.bind.serial.SerialSerialBinding
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/serial/class-use/SerialSerialKeyCreator.html b/db/docs/java/com/sleepycat/bind/serial/class-use/SerialSerialKeyCreator.html
index a3a4f5007..c10d06b6f 100644
--- a/db/docs/java/com/sleepycat/bind/serial/class-use/SerialSerialKeyCreator.html
+++ b/db/docs/java/com/sleepycat/bind/serial/class-use/SerialSerialKeyCreator.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.bind.serial.SerialSerialKeyCreator (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.bind.serial.SerialSerialKeyCreator (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.bind.serial.SerialSerialKeyCreator (Oracle Corporati
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.bind.serial.SerialSerialKeyCreator (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.bind.serial.SerialSerialKeyCreator (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -105,7 +105,7 @@ No usage of com.sleepycat.bind.serial.SerialSerialKeyCreator
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -135,6 +135,6 @@ No usage of com.sleepycat.bind.serial.SerialSerialKeyCreator
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/serial/class-use/StoredClassCatalog.html b/db/docs/java/com/sleepycat/bind/serial/class-use/StoredClassCatalog.html
index 28086446d..937791733 100644
--- a/db/docs/java/com/sleepycat/bind/serial/class-use/StoredClassCatalog.html
+++ b/db/docs/java/com/sleepycat/bind/serial/class-use/StoredClassCatalog.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.bind.serial.StoredClassCatalog (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.bind.serial.StoredClassCatalog (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.bind.serial.StoredClassCatalog (Oracle Corporation -
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.bind.serial.StoredClassCatalog (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.bind.serial.StoredClassCatalog (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -105,7 +105,7 @@ No usage of com.sleepycat.bind.serial.StoredClassCatalog
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -135,6 +135,6 @@ No usage of com.sleepycat.bind.serial.StoredClassCatalog
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/serial/class-use/TupleSerialBinding.html b/db/docs/java/com/sleepycat/bind/serial/class-use/TupleSerialBinding.html
index 89d24a844..9b9acd2a1 100644
--- a/db/docs/java/com/sleepycat/bind/serial/class-use/TupleSerialBinding.html
+++ b/db/docs/java/com/sleepycat/bind/serial/class-use/TupleSerialBinding.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.bind.serial.TupleSerialBinding (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.bind.serial.TupleSerialBinding (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.bind.serial.TupleSerialBinding (Oracle Corporation -
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.bind.serial.TupleSerialBinding (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.bind.serial.TupleSerialBinding (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -142,7 +142,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/serial/TupleSerialBinding.htm
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -172,6 +172,6 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/serial/TupleSerialBinding.htm
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/serial/class-use/TupleSerialKeyCreator.html b/db/docs/java/com/sleepycat/bind/serial/class-use/TupleSerialKeyCreator.html
index f6e047b36..345281fca 100644
--- a/db/docs/java/com/sleepycat/bind/serial/class-use/TupleSerialKeyCreator.html
+++ b/db/docs/java/com/sleepycat/bind/serial/class-use/TupleSerialKeyCreator.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.bind.serial.TupleSerialKeyCreator (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.bind.serial.TupleSerialKeyCreator (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.bind.serial.TupleSerialKeyCreator (Oracle Corporatio
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.bind.serial.TupleSerialKeyCreator (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.bind.serial.TupleSerialKeyCreator (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -141,7 +141,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/serial/TupleSerialKeyCreator.
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -171,6 +171,6 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/serial/TupleSerialKeyCreator.
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/serial/class-use/TupleSerialMarshalledBinding.html b/db/docs/java/com/sleepycat/bind/serial/class-use/TupleSerialMarshalledBinding.html
index 9c681df00..5e03945ca 100644
--- a/db/docs/java/com/sleepycat/bind/serial/class-use/TupleSerialMarshalledBinding.html
+++ b/db/docs/java/com/sleepycat/bind/serial/class-use/TupleSerialMarshalledBinding.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.bind.serial.TupleSerialMarshalledBinding (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.bind.serial.TupleSerialMarshalledBinding (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.bind.serial.TupleSerialMarshalledBinding (Oracle Cor
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.bind.serial.TupleSerialMarshalledBinding (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.bind.serial.TupleSerialMarshalledBinding (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -108,7 +108,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/serial/TupleSerialMarshalledB
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../../com/sleepycat/bind/serial/TupleSerialMarshalledKeyCreator.html#TupleSerialMarshalledKeyCreator(com.sleepycat.bind.serial.TupleSerialMarshalledBinding, java.lang.String)">TupleSerialMarshalledKeyCreator</A></B>(<A HREF="../../../../../com/sleepycat/bind/serial/TupleSerialMarshalledBinding.html" title="class in com.sleepycat.bind.serial">TupleSerialMarshalledBinding</A>&nbsp;binding,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;keyName)</CODE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;keyName)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a tuple-serial marshalled key creator.</TD>
@@ -140,7 +140,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/serial/TupleSerialMarshalledB
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -170,6 +170,6 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/serial/TupleSerialMarshalledB
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/serial/class-use/TupleSerialMarshalledKeyCreator.html b/db/docs/java/com/sleepycat/bind/serial/class-use/TupleSerialMarshalledKeyCreator.html
index 015756813..21031447b 100644
--- a/db/docs/java/com/sleepycat/bind/serial/class-use/TupleSerialMarshalledKeyCreator.html
+++ b/db/docs/java/com/sleepycat/bind/serial/class-use/TupleSerialMarshalledKeyCreator.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.bind.serial.TupleSerialMarshalledKeyCreator (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.bind.serial.TupleSerialMarshalledKeyCreator (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.bind.serial.TupleSerialMarshalledKeyCreator (Oracle
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.bind.serial.TupleSerialMarshalledKeyCreator (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.bind.serial.TupleSerialMarshalledKeyCreator (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -109,8 +109,8 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/serial/TupleSerialMarshalledK
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../../com/sleepycat/bind/serial/TupleSerialMarshalledKeyCreator.html" title="class in com.sleepycat.bind.serial">TupleSerialMarshalledKeyCreator</A></CODE></FONT></TD>
-<TD><CODE><B>TupleSerialFactory.</B><B><A HREF="../../../../../com/sleepycat/collections/TupleSerialFactory.html#getKeyCreator(java.lang.Class, java.lang.String)">getKeyCreator</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;valueBaseClass,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;keyName)</CODE>
+<TD><CODE><B>TupleSerialFactory.</B><B><A HREF="../../../../../com/sleepycat/collections/TupleSerialFactory.html#getKeyCreator(java.lang.Class, java.lang.String)">getKeyCreator</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;valueBaseClass,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;keyName)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a <code>SecondaryKeyCreator</code> object for use in configuring
@@ -143,7 +143,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/serial/TupleSerialMarshalledK
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -173,6 +173,6 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/serial/TupleSerialMarshalledK
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/serial/package-frame.html b/db/docs/java/com/sleepycat/bind/serial/package-frame.html
index 9b1be1eab..800eef986 100644
--- a/db/docs/java/com/sleepycat/bind/serial/package-frame.html
+++ b/db/docs/java/com/sleepycat/bind/serial/package-frame.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:48 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-com.sleepycat.bind.serial (Oracle Corporation - Berkeley DB Java API)
+com.sleepycat.bind.serial (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.bind.serial package">
diff --git a/db/docs/java/com/sleepycat/bind/serial/package-summary.html b/db/docs/java/com/sleepycat/bind/serial/package-summary.html
index 55da403bd..24177b439 100644
--- a/db/docs/java/com/sleepycat/bind/serial/package-summary.html
+++ b/db/docs/java/com/sleepycat/bind/serial/package-summary.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:48 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-com.sleepycat.bind.serial (Oracle Corporation - Berkeley DB Java API)
+com.sleepycat.bind.serial (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.bind.serial package">
@@ -14,7 +14,7 @@ com.sleepycat.bind.serial (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="com.sleepycat.bind.serial (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="com.sleepycat.bind.serial (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -196,7 +196,7 @@ Bindings that use Java serialization.
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -226,6 +226,6 @@ Bindings that use Java serialization.
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/serial/package-tree.html b/db/docs/java/com/sleepycat/bind/serial/package-tree.html
index ebcc9ec45..c2d2fc945 100644
--- a/db/docs/java/com/sleepycat/bind/serial/package-tree.html
+++ b/db/docs/java/com/sleepycat/bind/serial/package-tree.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:48 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-com.sleepycat.bind.serial Class Hierarchy (Oracle Corporation - Berkeley DB Java API)
+com.sleepycat.bind.serial Class Hierarchy (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ com.sleepycat.bind.serial Class Hierarchy (Oracle Corporation - Berkeley DB Java
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="com.sleepycat.bind.serial Class Hierarchy (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="com.sleepycat.bind.serial Class Hierarchy (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -87,16 +87,16 @@ Hierarchy For Package com.sleepycat.bind.serial
Class Hierarchy
</H2>
<UL>
-<LI TYPE="circle">java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang"><B>Object</B></A><UL>
-<LI TYPE="circle">java.io.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/InputStream.html" title="class or interface in java.io"><B>InputStream</B></A> (implements java.io.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/Closeable.html" title="class or interface in java.io">Closeable</A>)
+<LI TYPE="circle">java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang"><B>Object</B></A><UL>
+<LI TYPE="circle">java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/InputStream.html" title="class or interface in java.io"><B>InputStream</B></A> (implements java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Closeable.html" title="class or interface in java.io">Closeable</A>)
<UL>
-<LI TYPE="circle">java.io.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectInputStream.html" title="class or interface in java.io"><B>ObjectInputStream</B></A> (implements java.io.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectInput.html" title="class or interface in java.io">ObjectInput</A>, java.io.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html" title="class or interface in java.io">ObjectStreamConstants</A>)
+<LI TYPE="circle">java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectInputStream.html" title="class or interface in java.io"><B>ObjectInputStream</B></A> (implements java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectInput.html" title="class or interface in java.io">ObjectInput</A>, java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html" title="class or interface in java.io">ObjectStreamConstants</A>)
<UL>
<LI TYPE="circle">com.sleepycat.bind.serial.<A HREF="../../../../com/sleepycat/bind/serial/SerialInput.html" title="class in com.sleepycat.bind.serial"><B>SerialInput</B></A></UL>
</UL>
-<LI TYPE="circle">java.io.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/OutputStream.html" title="class or interface in java.io"><B>OutputStream</B></A> (implements java.io.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/Closeable.html" title="class or interface in java.io">Closeable</A>, java.io.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/Flushable.html" title="class or interface in java.io">Flushable</A>)
+<LI TYPE="circle">java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/OutputStream.html" title="class or interface in java.io"><B>OutputStream</B></A> (implements java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Closeable.html" title="class or interface in java.io">Closeable</A>, java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Flushable.html" title="class or interface in java.io">Flushable</A>)
<UL>
-<LI TYPE="circle">java.io.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectOutputStream.html" title="class or interface in java.io"><B>ObjectOutputStream</B></A> (implements java.io.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectOutput.html" title="class or interface in java.io">ObjectOutput</A>, java.io.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html" title="class or interface in java.io">ObjectStreamConstants</A>)
+<LI TYPE="circle">java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectOutputStream.html" title="class or interface in java.io"><B>ObjectOutputStream</B></A> (implements java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectOutput.html" title="class or interface in java.io">ObjectOutput</A>, java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html" title="class or interface in java.io">ObjectStreamConstants</A>)
<UL>
<LI TYPE="circle">com.sleepycat.bind.serial.<A HREF="../../../../com/sleepycat/bind/serial/SerialOutput.html" title="class in com.sleepycat.bind.serial"><B>SerialOutput</B></A></UL>
</UL>
@@ -145,7 +145,7 @@ Interface Hierarchy
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -175,6 +175,6 @@ Interface Hierarchy
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/serial/package-use.html b/db/docs/java/com/sleepycat/bind/serial/package-use.html
index 9267e42ef..0352dcba6 100644
--- a/db/docs/java/com/sleepycat/bind/serial/package-use.html
+++ b/db/docs/java/com/sleepycat/bind/serial/package-use.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:57:00 EDT 2007 -->
<TITLE>
-Uses of Package com.sleepycat.bind.serial (Oracle Corporation - Berkeley DB Java API)
+Uses of Package com.sleepycat.bind.serial (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Package com.sleepycat.bind.serial (Oracle Corporation - Berkeley DB Java
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Package com.sleepycat.bind.serial (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Package com.sleepycat.bind.serial (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -192,7 +192,7 @@ Classes in <A HREF="../../../../com/sleepycat/bind/serial/package-summary.html">
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -222,6 +222,6 @@ Classes in <A HREF="../../../../com/sleepycat/bind/serial/package-summary.html">
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/tuple/BigIntegerBinding.html b/db/docs/java/com/sleepycat/bind/tuple/BigIntegerBinding.html
new file mode 100644
index 000000000..44e83096e
--- /dev/null
+++ b/db/docs/java/com/sleepycat/bind/tuple/BigIntegerBinding.html
@@ -0,0 +1,394 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
+<TITLE>
+BigIntegerBinding (Oracle - Berkeley DB Java API)
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.sleepycat.bind.tuple.BigIntegerBinding class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../style.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+ parent.document.title="BigIntegerBinding (Oracle - Berkeley DB Java API)";
+}
+</SCRIPT>
+<NOSCRIPT>
+</NOSCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+ <TR ALIGN="center" VALIGN="top">
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/BigIntegerBinding.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+ </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../com/sleepycat/bind/tuple/BooleanBinding.html" title="class in com.sleepycat.bind.tuple"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ <A HREF="../../../../index.html?com/sleepycat/bind/tuple/BigIntegerBinding.html" target="_top"><B>FRAMES</B></A> &nbsp;
+&nbsp;<A HREF="BigIntegerBinding.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+ <!--
+ if(window==top) {
+ document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+ }
+ //-->
+</SCRIPT>
+<NOSCRIPT>
+ <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+ SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.sleepycat.bind.tuple</FONT>
+<BR>
+Class BigIntegerBinding</H2>
+<PRE>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+ <IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../../com/sleepycat/bind/tuple/TupleBase.html" title="class in com.sleepycat.bind.tuple">com.sleepycat.bind.tuple.TupleBase</A>
+ <IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html" title="class in com.sleepycat.bind.tuple">com.sleepycat.bind.tuple.TupleBinding</A>
+ <IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.bind.tuple.BigIntegerBinding</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../../com/sleepycat/bind/EntryBinding.html" title="interface in com.sleepycat.bind">EntryBinding</A></DD>
+</DL>
+<HR>
+<DL>
+<DT><PRE>public class <B>BigIntegerBinding</B><DT>extends <A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html" title="class in com.sleepycat.bind.tuple">TupleBinding</A></DL>
+</PRE>
+
+<P>
+A concrete <code>TupleBinding</code> for a <code>BigInteger</code> value.
+<P>
+
+<P>
+<HR>
+
+<P>
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/BigIntegerBinding.html#BigIntegerBinding()">BigIntegerBinding</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/BigIntegerBinding.html#bigIntegerToEntry(java.math.BigInteger, com.sleepycat.db.DatabaseEntry)">bigIntegerToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/math/BigInteger.html" title="class or interface in java.math">BigInteger</A>&nbsp;val,
+ <A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;entry)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Converts a <code>BigInteger</code> value into an entry buffer.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/math/BigInteger.html" title="class or interface in java.math">BigInteger</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/BigIntegerBinding.html#entryToBigInteger(com.sleepycat.db.DatabaseEntry)">entryToBigInteger</A></B>(<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;entry)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Converts an entry buffer into a <code>BigInteger</code> value.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/BigIntegerBinding.html#entryToObject(com.sleepycat.bind.tuple.TupleInput)">entryToObject</A></B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;input)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs a key or data object from a <A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple"><CODE>TupleInput</CODE></A> entry.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/BigIntegerBinding.html#getTupleOutput(java.lang.Object)">getTupleOutput</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns an empty TupleOutput instance that will be used by the tuple
+ binding or key creator.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/BigIntegerBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+ <A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;output)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Converts a key or data object to a tuple entry.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_com.sleepycat.bind.tuple.TupleBinding"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Methods inherited from class com.sleepycat.bind.tuple.<A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html" title="class in com.sleepycat.bind.tuple">TupleBinding</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html#entryToObject(com.sleepycat.db.DatabaseEntry)">entryToObject</A>, <A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html#getPrimitiveBinding(java.lang.Class)">getPrimitiveBinding</A>, <A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html#objectToEntry(java.lang.Object, com.sleepycat.db.DatabaseEntry)">objectToEntry</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_com.sleepycat.bind.tuple.TupleBase"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Methods inherited from class com.sleepycat.bind.tuple.<A HREF="../../../../com/sleepycat/bind/tuple/TupleBase.html" title="class in com.sleepycat.bind.tuple">TupleBase</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../com/sleepycat/bind/tuple/TupleBase.html#entryToInput(com.sleepycat.db.DatabaseEntry)">entryToInput</A>, <A HREF="../../../../com/sleepycat/bind/tuple/TupleBase.html#getTupleBufferSize()">getTupleBufferSize</A>, <A HREF="../../../../com/sleepycat/bind/tuple/TupleBase.html#inputToEntry(com.sleepycat.bind.tuple.TupleInput, com.sleepycat.db.DatabaseEntry)">inputToEntry</A>, <A HREF="../../../../com/sleepycat/bind/tuple/TupleBase.html#newOutput()">newOutput</A>, <A HREF="../../../../com/sleepycat/bind/tuple/TupleBase.html#newOutput(byte[])">newOutput</A>, <A HREF="../../../../com/sleepycat/bind/tuple/TupleBase.html#outputToEntry(com.sleepycat.bind.tuple.TupleOutput, com.sleepycat.db.DatabaseEntry)">outputToEntry</A>, <A HREF="../../../../com/sleepycat/bind/tuple/TupleBase.html#setTupleBufferSize(int)">setTupleBufferSize</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TH>
+</TR>
+</TABLE>
+
+<A NAME="BigIntegerBinding()"><!-- --></A><H3>
+BigIntegerBinding</H3>
+<PRE>
+public <B>BigIntegerBinding</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TH>
+</TR>
+</TABLE>
+
+<A NAME="entryToObject(com.sleepycat.bind.tuple.TupleInput)"><!-- --></A><H3>
+entryToObject</H3>
+<PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>entryToObject</B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;input)</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html#entryToObject(com.sleepycat.bind.tuple.TupleInput)">TupleBinding</A></CODE></B></DD>
+<DD>Constructs a key or data object from a <A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple"><CODE>TupleInput</CODE></A> entry.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html#entryToObject(com.sleepycat.bind.tuple.TupleInput)">entryToObject</A></CODE> in class <CODE><A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html" title="class in com.sleepycat.bind.tuple">TupleBinding</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>input</CODE> - is the tuple key or data entry.
+<DT><B>Returns:</B><DD>the key or data object constructed from the entry.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)"><!-- --></A><H3>
+objectToEntry</H3>
+<PRE>
+public void <B>objectToEntry</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+ <A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;output)</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">TupleBinding</A></CODE></B></DD>
+<DD>Converts a key or data object to a tuple entry.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToEntry</A></CODE> in class <CODE><A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html" title="class in com.sleepycat.bind.tuple">TupleBinding</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>object</CODE> - is the key or data object.<DD><CODE>output</CODE> - is the tuple entry to which the key or data should be
+ written.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getTupleOutput(java.lang.Object)"><!-- --></A><H3>
+getTupleOutput</H3>
+<PRE>
+protected <A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A> <B>getTupleOutput</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</PRE>
+<DL>
+<DD><B>Description copied from class: <CODE><A HREF="../../../../com/sleepycat/bind/tuple/TupleBase.html#getTupleOutput(java.lang.Object)">TupleBase</A></CODE></B></DD>
+<DD>Returns an empty TupleOutput instance that will be used by the tuple
+ binding or key creator.
+
+ <p>The default implementation of this method creates a new TupleOutput
+ with an initial buffer size that can be changed using the <A HREF="../../../../com/sleepycat/bind/tuple/TupleBase.html#setTupleBufferSize(int)"><CODE>TupleBase.setTupleBufferSize(int)</CODE></A> method.</p>
+
+ <p>This method may be overridden to return a TupleOutput instance. For
+ example, an instance per thread could be created and returned by this
+ method. If a TupleOutput instance is reused, be sure to call its
+ <A HREF="../../../../com/sleepycat/util/FastOutputStream.html#reset()"><CODE>FastOutputStream.reset()</CODE></A> method before each
+ use.</p>
+<P>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../com/sleepycat/bind/tuple/TupleBase.html#getTupleOutput(java.lang.Object)">getTupleOutput</A></CODE> in class <CODE><A HREF="../../../../com/sleepycat/bind/tuple/TupleBase.html" title="class in com.sleepycat.bind.tuple">TupleBase</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>object</CODE> - is the object to be written to the tuple output, and may
+ be used by subclasses to determine the size of the output buffer.
+<DT><B>Returns:</B><DD>an empty TupleOutput instance.<DT><B>See Also:</B><DD><A HREF="../../../../com/sleepycat/bind/tuple/TupleBase.html#setTupleBufferSize(int)"><CODE>TupleBase.setTupleBufferSize(int)</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="entryToBigInteger(com.sleepycat.db.DatabaseEntry)"><!-- --></A><H3>
+entryToBigInteger</H3>
+<PRE>
+public static <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/math/BigInteger.html" title="class or interface in java.math">BigInteger</A> <B>entryToBigInteger</B>(<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;entry)</PRE>
+<DL>
+<DD>Converts an entry buffer into a <code>BigInteger</code> value.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>entry</CODE> - is the source entry buffer.
+<DT><B>Returns:</B><DD>the resulting value.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="bigIntegerToEntry(java.math.BigInteger, com.sleepycat.db.DatabaseEntry)"><!-- --></A><H3>
+bigIntegerToEntry</H3>
+<PRE>
+public static void <B>bigIntegerToEntry</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/math/BigInteger.html" title="class or interface in java.math">BigInteger</A>&nbsp;val,
+ <A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;entry)</PRE>
+<DL>
+<DD>Converts a <code>BigInteger</code> value into an entry buffer.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>val</CODE> - is the source value.<DD><CODE>entry</CODE> - is the destination entry buffer.</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+ <TR ALIGN="center" VALIGN="top">
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/BigIntegerBinding.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+ </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../com/sleepycat/bind/tuple/BooleanBinding.html" title="class in com.sleepycat.bind.tuple"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ <A HREF="../../../../index.html?com/sleepycat/bind/tuple/BigIntegerBinding.html" target="_top"><B>FRAMES</B></A> &nbsp;
+&nbsp;<A HREF="BigIntegerBinding.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+ <!--
+ if(window==top) {
+ document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+ }
+ //-->
+</SCRIPT>
+<NOSCRIPT>
+ <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+ SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
+</BODY>
+</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/tuple/BooleanBinding.html b/db/docs/java/com/sleepycat/bind/tuple/BooleanBinding.html
index 5336318a5..662de93d8 100644
--- a/db/docs/java/com/sleepycat/bind/tuple/BooleanBinding.html
+++ b/db/docs/java/com/sleepycat/bind/tuple/BooleanBinding.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:47 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-BooleanBinding (Oracle Corporation - Berkeley DB Java API)
+BooleanBinding (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.bind.tuple.BooleanBinding class">
@@ -14,7 +14,7 @@ BooleanBinding (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="BooleanBinding (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="BooleanBinding (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,13 +46,13 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
-&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../com/sleepycat/bind/tuple/BigIntegerBinding.html" title="class in com.sleepycat.bind.tuple"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../com/sleepycat/bind/tuple/ByteBinding.html" title="class in com.sleepycat.bind.tuple"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../../index.html?com/sleepycat/bind/tuple/BooleanBinding.html" target="_top"><B>FRAMES</B></A> &nbsp;
@@ -89,7 +89,7 @@ com.sleepycat.bind.tuple</FONT>
<BR>
Class BooleanBinding</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../../com/sleepycat/bind/tuple/TupleBase.html" title="class in com.sleepycat.bind.tuple">com.sleepycat.bind.tuple.TupleBase</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html" title="class in com.sleepycat.bind.tuple">com.sleepycat.bind.tuple.TupleBinding</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.bind.tuple.BooleanBinding</B>
@@ -165,7 +165,7 @@ A concrete <code>TupleBinding</code> for a <code>Boolean</code> primitive
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/BooleanBinding.html#entryToObject(com.sleepycat.bind.tuple.TupleInput)">entryToObject</A></B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;input)</CODE>
<BR>
@@ -174,7 +174,7 @@ A concrete <code>TupleBinding</code> for a <code>Boolean</code> primitive
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/BooleanBinding.html#getTupleOutput(java.lang.Object)">getTupleOutput</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/BooleanBinding.html#getTupleOutput(java.lang.Object)">getTupleOutput</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns an empty TupleOutput instance that will be used by the tuple
@@ -183,7 +183,7 @@ A concrete <code>TupleBinding</code> for a <code>Boolean</code> primitive
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/BooleanBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/BooleanBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;output)</CODE>
<BR>
@@ -211,10 +211,10 @@ A concrete <code>TupleBinding</code> for a <code>Boolean</code> primitive
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -250,7 +250,7 @@ public <B>BooleanBinding</B>()</PRE>
<A NAME="entryToObject(com.sleepycat.bind.tuple.TupleInput)"><!-- --></A><H3>
entryToObject</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>entryToObject</B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;input)</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>entryToObject</B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;input)</PRE>
<DL>
<DD><B>Description copied from class: <CODE><A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html#entryToObject(com.sleepycat.bind.tuple.TupleInput)">TupleBinding</A></CODE></B></DD>
<DD>Constructs a key or data object from a <A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple"><CODE>TupleInput</CODE></A> entry.
@@ -268,7 +268,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" tit
<A NAME="objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)"><!-- --></A><H3>
objectToEntry</H3>
<PRE>
-public void <B>objectToEntry</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+public void <B>objectToEntry</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;output)</PRE>
<DL>
<DD><B>Description copied from class: <CODE><A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">TupleBinding</A></CODE></B></DD>
@@ -287,7 +287,7 @@ public void <B>objectToEntry</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/
<A NAME="getTupleOutput(java.lang.Object)"><!-- --></A><H3>
getTupleOutput</H3>
<PRE>
-protected <A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A> <B>getTupleOutput</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</PRE>
+protected <A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A> <B>getTupleOutput</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</PRE>
<DL>
<DD><B>Description copied from class: <CODE><A HREF="../../../../com/sleepycat/bind/tuple/TupleBase.html#getTupleOutput(java.lang.Object)">TupleBase</A></CODE></B></DD>
<DD>Returns an empty TupleOutput instance that will be used by the tuple
@@ -364,13 +364,13 @@ public static void <B>booleanToEntry</B>(boolean&nbsp;val,
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
-&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../../../../com/sleepycat/bind/tuple/BigIntegerBinding.html" title="class in com.sleepycat.bind.tuple"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../com/sleepycat/bind/tuple/ByteBinding.html" title="class in com.sleepycat.bind.tuple"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../../index.html?com/sleepycat/bind/tuple/BooleanBinding.html" target="_top"><B>FRAMES</B></A> &nbsp;
@@ -400,6 +400,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&n
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/tuple/ByteBinding.html b/db/docs/java/com/sleepycat/bind/tuple/ByteBinding.html
index cfc6406ea..9d3497384 100644
--- a/db/docs/java/com/sleepycat/bind/tuple/ByteBinding.html
+++ b/db/docs/java/com/sleepycat/bind/tuple/ByteBinding.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:47 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-ByteBinding (Oracle Corporation - Berkeley DB Java API)
+ByteBinding (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.bind.tuple.ByteBinding class">
@@ -14,7 +14,7 @@ ByteBinding (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="ByteBinding (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="ByteBinding (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,7 +89,7 @@ com.sleepycat.bind.tuple</FONT>
<BR>
Class ByteBinding</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../../com/sleepycat/bind/tuple/TupleBase.html" title="class in com.sleepycat.bind.tuple">com.sleepycat.bind.tuple.TupleBase</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html" title="class in com.sleepycat.bind.tuple">com.sleepycat.bind.tuple.TupleBinding</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.bind.tuple.ByteBinding</B>
@@ -165,7 +165,7 @@ A concrete <code>TupleBinding</code> for a <code>Byte</code> primitive
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/ByteBinding.html#entryToObject(com.sleepycat.bind.tuple.TupleInput)">entryToObject</A></B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;input)</CODE>
<BR>
@@ -174,7 +174,7 @@ A concrete <code>TupleBinding</code> for a <code>Byte</code> primitive
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/ByteBinding.html#getTupleOutput(java.lang.Object)">getTupleOutput</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/ByteBinding.html#getTupleOutput(java.lang.Object)">getTupleOutput</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns an empty TupleOutput instance that will be used by the tuple
@@ -183,7 +183,7 @@ A concrete <code>TupleBinding</code> for a <code>Byte</code> primitive
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/ByteBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/ByteBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;output)</CODE>
<BR>
@@ -211,10 +211,10 @@ A concrete <code>TupleBinding</code> for a <code>Byte</code> primitive
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -250,7 +250,7 @@ public <B>ByteBinding</B>()</PRE>
<A NAME="entryToObject(com.sleepycat.bind.tuple.TupleInput)"><!-- --></A><H3>
entryToObject</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>entryToObject</B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;input)</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>entryToObject</B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;input)</PRE>
<DL>
<DD><B>Description copied from class: <CODE><A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html#entryToObject(com.sleepycat.bind.tuple.TupleInput)">TupleBinding</A></CODE></B></DD>
<DD>Constructs a key or data object from a <A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple"><CODE>TupleInput</CODE></A> entry.
@@ -268,7 +268,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" tit
<A NAME="objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)"><!-- --></A><H3>
objectToEntry</H3>
<PRE>
-public void <B>objectToEntry</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+public void <B>objectToEntry</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;output)</PRE>
<DL>
<DD><B>Description copied from class: <CODE><A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">TupleBinding</A></CODE></B></DD>
@@ -287,7 +287,7 @@ public void <B>objectToEntry</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/
<A NAME="getTupleOutput(java.lang.Object)"><!-- --></A><H3>
getTupleOutput</H3>
<PRE>
-protected <A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A> <B>getTupleOutput</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</PRE>
+protected <A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A> <B>getTupleOutput</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</PRE>
<DL>
<DD><B>Description copied from class: <CODE><A HREF="../../../../com/sleepycat/bind/tuple/TupleBase.html#getTupleOutput(java.lang.Object)">TupleBase</A></CODE></B></DD>
<DD>Returns an empty TupleOutput instance that will be used by the tuple
@@ -364,7 +364,7 @@ public static void <B>byteToEntry</B>(byte&nbsp;val,
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -400,6 +400,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&n
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/tuple/CharacterBinding.html b/db/docs/java/com/sleepycat/bind/tuple/CharacterBinding.html
index 25e15f66d..e19da4cf0 100644
--- a/db/docs/java/com/sleepycat/bind/tuple/CharacterBinding.html
+++ b/db/docs/java/com/sleepycat/bind/tuple/CharacterBinding.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:47 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-CharacterBinding (Oracle Corporation - Berkeley DB Java API)
+CharacterBinding (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.bind.tuple.CharacterBinding class">
@@ -14,7 +14,7 @@ CharacterBinding (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="CharacterBinding (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="CharacterBinding (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,7 +89,7 @@ com.sleepycat.bind.tuple</FONT>
<BR>
Class CharacterBinding</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../../com/sleepycat/bind/tuple/TupleBase.html" title="class in com.sleepycat.bind.tuple">com.sleepycat.bind.tuple.TupleBase</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html" title="class in com.sleepycat.bind.tuple">com.sleepycat.bind.tuple.TupleBinding</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.bind.tuple.CharacterBinding</B>
@@ -165,7 +165,7 @@ A concrete <code>TupleBinding</code> for a <code>Character</code> primitive
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/CharacterBinding.html#entryToObject(com.sleepycat.bind.tuple.TupleInput)">entryToObject</A></B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;input)</CODE>
<BR>
@@ -174,7 +174,7 @@ A concrete <code>TupleBinding</code> for a <code>Character</code> primitive
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/CharacterBinding.html#getTupleOutput(java.lang.Object)">getTupleOutput</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/CharacterBinding.html#getTupleOutput(java.lang.Object)">getTupleOutput</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns an empty TupleOutput instance that will be used by the tuple
@@ -183,7 +183,7 @@ A concrete <code>TupleBinding</code> for a <code>Character</code> primitive
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/CharacterBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/CharacterBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;output)</CODE>
<BR>
@@ -211,10 +211,10 @@ A concrete <code>TupleBinding</code> for a <code>Character</code> primitive
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -250,7 +250,7 @@ public <B>CharacterBinding</B>()</PRE>
<A NAME="entryToObject(com.sleepycat.bind.tuple.TupleInput)"><!-- --></A><H3>
entryToObject</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>entryToObject</B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;input)</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>entryToObject</B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;input)</PRE>
<DL>
<DD><B>Description copied from class: <CODE><A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html#entryToObject(com.sleepycat.bind.tuple.TupleInput)">TupleBinding</A></CODE></B></DD>
<DD>Constructs a key or data object from a <A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple"><CODE>TupleInput</CODE></A> entry.
@@ -268,7 +268,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" tit
<A NAME="objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)"><!-- --></A><H3>
objectToEntry</H3>
<PRE>
-public void <B>objectToEntry</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+public void <B>objectToEntry</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;output)</PRE>
<DL>
<DD><B>Description copied from class: <CODE><A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">TupleBinding</A></CODE></B></DD>
@@ -287,7 +287,7 @@ public void <B>objectToEntry</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/
<A NAME="getTupleOutput(java.lang.Object)"><!-- --></A><H3>
getTupleOutput</H3>
<PRE>
-protected <A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A> <B>getTupleOutput</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</PRE>
+protected <A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A> <B>getTupleOutput</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</PRE>
<DL>
<DD><B>Description copied from class: <CODE><A HREF="../../../../com/sleepycat/bind/tuple/TupleBase.html#getTupleOutput(java.lang.Object)">TupleBase</A></CODE></B></DD>
<DD>Returns an empty TupleOutput instance that will be used by the tuple
@@ -364,7 +364,7 @@ public static void <B>charToEntry</B>(char&nbsp;val,
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -400,6 +400,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&n
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/tuple/DoubleBinding.html b/db/docs/java/com/sleepycat/bind/tuple/DoubleBinding.html
index ab451b8a2..721069d9d 100644
--- a/db/docs/java/com/sleepycat/bind/tuple/DoubleBinding.html
+++ b/db/docs/java/com/sleepycat/bind/tuple/DoubleBinding.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:47 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-DoubleBinding (Oracle Corporation - Berkeley DB Java API)
+DoubleBinding (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.bind.tuple.DoubleBinding class">
@@ -14,7 +14,7 @@ DoubleBinding (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="DoubleBinding (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="DoubleBinding (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,7 +89,7 @@ com.sleepycat.bind.tuple</FONT>
<BR>
Class DoubleBinding</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../../com/sleepycat/bind/tuple/TupleBase.html" title="class in com.sleepycat.bind.tuple">com.sleepycat.bind.tuple.TupleBase</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html" title="class in com.sleepycat.bind.tuple">com.sleepycat.bind.tuple.TupleBinding</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.bind.tuple.DoubleBinding</B>
@@ -170,7 +170,7 @@ A concrete <code>TupleBinding</code> for a <code>Double</code> primitive
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/DoubleBinding.html#entryToObject(com.sleepycat.bind.tuple.TupleInput)">entryToObject</A></B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;input)</CODE>
<BR>
@@ -179,7 +179,7 @@ A concrete <code>TupleBinding</code> for a <code>Double</code> primitive
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/DoubleBinding.html#getTupleOutput(java.lang.Object)">getTupleOutput</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/DoubleBinding.html#getTupleOutput(java.lang.Object)">getTupleOutput</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns an empty TupleOutput instance that will be used by the tuple
@@ -188,7 +188,7 @@ A concrete <code>TupleBinding</code> for a <code>Double</code> primitive
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/DoubleBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/DoubleBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;output)</CODE>
<BR>
@@ -216,10 +216,10 @@ A concrete <code>TupleBinding</code> for a <code>Double</code> primitive
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -255,7 +255,7 @@ public <B>DoubleBinding</B>()</PRE>
<A NAME="entryToObject(com.sleepycat.bind.tuple.TupleInput)"><!-- --></A><H3>
entryToObject</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>entryToObject</B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;input)</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>entryToObject</B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;input)</PRE>
<DL>
<DD><B>Description copied from class: <CODE><A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html#entryToObject(com.sleepycat.bind.tuple.TupleInput)">TupleBinding</A></CODE></B></DD>
<DD>Constructs a key or data object from a <A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple"><CODE>TupleInput</CODE></A> entry.
@@ -273,7 +273,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" tit
<A NAME="objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)"><!-- --></A><H3>
objectToEntry</H3>
<PRE>
-public void <B>objectToEntry</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+public void <B>objectToEntry</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;output)</PRE>
<DL>
<DD><B>Description copied from class: <CODE><A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">TupleBinding</A></CODE></B></DD>
@@ -292,7 +292,7 @@ public void <B>objectToEntry</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/
<A NAME="getTupleOutput(java.lang.Object)"><!-- --></A><H3>
getTupleOutput</H3>
<PRE>
-protected <A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A> <B>getTupleOutput</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</PRE>
+protected <A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A> <B>getTupleOutput</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</PRE>
<DL>
<DD><B>Description copied from class: <CODE><A HREF="../../../../com/sleepycat/bind/tuple/TupleBase.html#getTupleOutput(java.lang.Object)">TupleBase</A></CODE></B></DD>
<DD>Returns an empty TupleOutput instance that will be used by the tuple
@@ -369,7 +369,7 @@ public static void <B>doubleToEntry</B>(double&nbsp;val,
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -405,6 +405,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&n
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/tuple/FloatBinding.html b/db/docs/java/com/sleepycat/bind/tuple/FloatBinding.html
index 62ff7f2ce..5d35bbae1 100644
--- a/db/docs/java/com/sleepycat/bind/tuple/FloatBinding.html
+++ b/db/docs/java/com/sleepycat/bind/tuple/FloatBinding.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:47 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-FloatBinding (Oracle Corporation - Berkeley DB Java API)
+FloatBinding (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.bind.tuple.FloatBinding class">
@@ -14,7 +14,7 @@ FloatBinding (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="FloatBinding (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="FloatBinding (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,7 +89,7 @@ com.sleepycat.bind.tuple</FONT>
<BR>
Class FloatBinding</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../../com/sleepycat/bind/tuple/TupleBase.html" title="class in com.sleepycat.bind.tuple">com.sleepycat.bind.tuple.TupleBase</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html" title="class in com.sleepycat.bind.tuple">com.sleepycat.bind.tuple.TupleBinding</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.bind.tuple.FloatBinding</B>
@@ -161,7 +161,7 @@ A concrete <code>TupleBinding</code> for a <code>Float</code> primitive
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/FloatBinding.html#entryToObject(com.sleepycat.bind.tuple.TupleInput)">entryToObject</A></B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;input)</CODE>
<BR>
@@ -179,7 +179,7 @@ A concrete <code>TupleBinding</code> for a <code>Float</code> primitive
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/FloatBinding.html#getTupleOutput(java.lang.Object)">getTupleOutput</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/FloatBinding.html#getTupleOutput(java.lang.Object)">getTupleOutput</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns an empty TupleOutput instance that will be used by the tuple
@@ -188,7 +188,7 @@ A concrete <code>TupleBinding</code> for a <code>Float</code> primitive
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/FloatBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/FloatBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;output)</CODE>
<BR>
@@ -216,10 +216,10 @@ A concrete <code>TupleBinding</code> for a <code>Float</code> primitive
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -255,7 +255,7 @@ public <B>FloatBinding</B>()</PRE>
<A NAME="entryToObject(com.sleepycat.bind.tuple.TupleInput)"><!-- --></A><H3>
entryToObject</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>entryToObject</B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;input)</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>entryToObject</B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;input)</PRE>
<DL>
<DD><B>Description copied from class: <CODE><A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html#entryToObject(com.sleepycat.bind.tuple.TupleInput)">TupleBinding</A></CODE></B></DD>
<DD>Constructs a key or data object from a <A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple"><CODE>TupleInput</CODE></A> entry.
@@ -273,7 +273,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" tit
<A NAME="objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)"><!-- --></A><H3>
objectToEntry</H3>
<PRE>
-public void <B>objectToEntry</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+public void <B>objectToEntry</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;output)</PRE>
<DL>
<DD><B>Description copied from class: <CODE><A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">TupleBinding</A></CODE></B></DD>
@@ -292,7 +292,7 @@ public void <B>objectToEntry</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/
<A NAME="getTupleOutput(java.lang.Object)"><!-- --></A><H3>
getTupleOutput</H3>
<PRE>
-protected <A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A> <B>getTupleOutput</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</PRE>
+protected <A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A> <B>getTupleOutput</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</PRE>
<DL>
<DD><B>Description copied from class: <CODE><A HREF="../../../../com/sleepycat/bind/tuple/TupleBase.html#getTupleOutput(java.lang.Object)">TupleBase</A></CODE></B></DD>
<DD>Returns an empty TupleOutput instance that will be used by the tuple
@@ -369,7 +369,7 @@ public static void <B>floatToEntry</B>(float&nbsp;val,
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -405,6 +405,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&n
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/tuple/IntegerBinding.html b/db/docs/java/com/sleepycat/bind/tuple/IntegerBinding.html
index 1eb6116ed..975c54601 100644
--- a/db/docs/java/com/sleepycat/bind/tuple/IntegerBinding.html
+++ b/db/docs/java/com/sleepycat/bind/tuple/IntegerBinding.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:47 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-IntegerBinding (Oracle Corporation - Berkeley DB Java API)
+IntegerBinding (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.bind.tuple.IntegerBinding class">
@@ -14,7 +14,7 @@ IntegerBinding (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="IntegerBinding (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="IntegerBinding (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,7 +89,7 @@ com.sleepycat.bind.tuple</FONT>
<BR>
Class IntegerBinding</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../../com/sleepycat/bind/tuple/TupleBase.html" title="class in com.sleepycat.bind.tuple">com.sleepycat.bind.tuple.TupleBase</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html" title="class in com.sleepycat.bind.tuple">com.sleepycat.bind.tuple.TupleBinding</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.bind.tuple.IntegerBinding</B>
@@ -156,7 +156,7 @@ A concrete <code>TupleBinding</code> for a <code>Integer</code> primitive
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/IntegerBinding.html#entryToObject(com.sleepycat.bind.tuple.TupleInput)">entryToObject</A></B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;input)</CODE>
<BR>
@@ -165,7 +165,7 @@ A concrete <code>TupleBinding</code> for a <code>Integer</code> primitive
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/IntegerBinding.html#getTupleOutput(java.lang.Object)">getTupleOutput</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/IntegerBinding.html#getTupleOutput(java.lang.Object)">getTupleOutput</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns an empty TupleOutput instance that will be used by the tuple
@@ -183,7 +183,7 @@ A concrete <code>TupleBinding</code> for a <code>Integer</code> primitive
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/IntegerBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/IntegerBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;output)</CODE>
<BR>
@@ -211,10 +211,10 @@ A concrete <code>TupleBinding</code> for a <code>Integer</code> primitive
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -250,7 +250,7 @@ public <B>IntegerBinding</B>()</PRE>
<A NAME="entryToObject(com.sleepycat.bind.tuple.TupleInput)"><!-- --></A><H3>
entryToObject</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>entryToObject</B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;input)</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>entryToObject</B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;input)</PRE>
<DL>
<DD><B>Description copied from class: <CODE><A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html#entryToObject(com.sleepycat.bind.tuple.TupleInput)">TupleBinding</A></CODE></B></DD>
<DD>Constructs a key or data object from a <A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple"><CODE>TupleInput</CODE></A> entry.
@@ -268,7 +268,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" tit
<A NAME="objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)"><!-- --></A><H3>
objectToEntry</H3>
<PRE>
-public void <B>objectToEntry</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+public void <B>objectToEntry</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;output)</PRE>
<DL>
<DD><B>Description copied from class: <CODE><A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">TupleBinding</A></CODE></B></DD>
@@ -287,7 +287,7 @@ public void <B>objectToEntry</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/
<A NAME="getTupleOutput(java.lang.Object)"><!-- --></A><H3>
getTupleOutput</H3>
<PRE>
-protected <A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A> <B>getTupleOutput</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</PRE>
+protected <A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A> <B>getTupleOutput</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</PRE>
<DL>
<DD><B>Description copied from class: <CODE><A HREF="../../../../com/sleepycat/bind/tuple/TupleBase.html#getTupleOutput(java.lang.Object)">TupleBase</A></CODE></B></DD>
<DD>Returns an empty TupleOutput instance that will be used by the tuple
@@ -364,7 +364,7 @@ public static void <B>intToEntry</B>(int&nbsp;val,
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -400,6 +400,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&n
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/tuple/LongBinding.html b/db/docs/java/com/sleepycat/bind/tuple/LongBinding.html
index 5b8c5b58b..3c1cec57c 100644
--- a/db/docs/java/com/sleepycat/bind/tuple/LongBinding.html
+++ b/db/docs/java/com/sleepycat/bind/tuple/LongBinding.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:47 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-LongBinding (Oracle Corporation - Berkeley DB Java API)
+LongBinding (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.bind.tuple.LongBinding class">
@@ -14,7 +14,7 @@ LongBinding (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="LongBinding (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="LongBinding (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,7 +89,7 @@ com.sleepycat.bind.tuple</FONT>
<BR>
Class LongBinding</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../../com/sleepycat/bind/tuple/TupleBase.html" title="class in com.sleepycat.bind.tuple">com.sleepycat.bind.tuple.TupleBase</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html" title="class in com.sleepycat.bind.tuple">com.sleepycat.bind.tuple.TupleBinding</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.bind.tuple.LongBinding</B>
@@ -156,7 +156,7 @@ A concrete <code>TupleBinding</code> for a <code>Long</code> primitive
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/LongBinding.html#entryToObject(com.sleepycat.bind.tuple.TupleInput)">entryToObject</A></B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;input)</CODE>
<BR>
@@ -165,7 +165,7 @@ A concrete <code>TupleBinding</code> for a <code>Long</code> primitive
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/LongBinding.html#getTupleOutput(java.lang.Object)">getTupleOutput</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/LongBinding.html#getTupleOutput(java.lang.Object)">getTupleOutput</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns an empty TupleOutput instance that will be used by the tuple
@@ -183,7 +183,7 @@ A concrete <code>TupleBinding</code> for a <code>Long</code> primitive
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/LongBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/LongBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;output)</CODE>
<BR>
@@ -211,10 +211,10 @@ A concrete <code>TupleBinding</code> for a <code>Long</code> primitive
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -250,7 +250,7 @@ public <B>LongBinding</B>()</PRE>
<A NAME="entryToObject(com.sleepycat.bind.tuple.TupleInput)"><!-- --></A><H3>
entryToObject</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>entryToObject</B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;input)</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>entryToObject</B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;input)</PRE>
<DL>
<DD><B>Description copied from class: <CODE><A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html#entryToObject(com.sleepycat.bind.tuple.TupleInput)">TupleBinding</A></CODE></B></DD>
<DD>Constructs a key or data object from a <A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple"><CODE>TupleInput</CODE></A> entry.
@@ -268,7 +268,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" tit
<A NAME="objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)"><!-- --></A><H3>
objectToEntry</H3>
<PRE>
-public void <B>objectToEntry</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+public void <B>objectToEntry</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;output)</PRE>
<DL>
<DD><B>Description copied from class: <CODE><A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">TupleBinding</A></CODE></B></DD>
@@ -287,7 +287,7 @@ public void <B>objectToEntry</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/
<A NAME="getTupleOutput(java.lang.Object)"><!-- --></A><H3>
getTupleOutput</H3>
<PRE>
-protected <A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A> <B>getTupleOutput</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</PRE>
+protected <A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A> <B>getTupleOutput</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</PRE>
<DL>
<DD><B>Description copied from class: <CODE><A HREF="../../../../com/sleepycat/bind/tuple/TupleBase.html#getTupleOutput(java.lang.Object)">TupleBase</A></CODE></B></DD>
<DD>Returns an empty TupleOutput instance that will be used by the tuple
@@ -364,7 +364,7 @@ public static void <B>longToEntry</B>(long&nbsp;val,
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -400,6 +400,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&n
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/tuple/MarshalledTupleEntry.html b/db/docs/java/com/sleepycat/bind/tuple/MarshalledTupleEntry.html
index 25f165c1c..1d8fa33c8 100644
--- a/db/docs/java/com/sleepycat/bind/tuple/MarshalledTupleEntry.html
+++ b/db/docs/java/com/sleepycat/bind/tuple/MarshalledTupleEntry.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:47 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-MarshalledTupleEntry (Oracle Corporation - Berkeley DB Java API)
+MarshalledTupleEntry (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.bind.tuple.MarshalledTupleEntry interface">
@@ -14,7 +14,7 @@ MarshalledTupleEntry (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="MarshalledTupleEntry (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="MarshalledTupleEntry (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -202,7 +202,7 @@ void <B>unmarshalEntry</B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleIn
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -238,6 +238,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHO
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/tuple/MarshalledTupleKeyEntity.html b/db/docs/java/com/sleepycat/bind/tuple/MarshalledTupleKeyEntity.html
index 946224bfa..33ef1defe 100644
--- a/db/docs/java/com/sleepycat/bind/tuple/MarshalledTupleKeyEntity.html
+++ b/db/docs/java/com/sleepycat/bind/tuple/MarshalledTupleKeyEntity.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:47 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-MarshalledTupleKeyEntity (Oracle Corporation - Berkeley DB Java API)
+MarshalledTupleKeyEntity (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.bind.tuple.MarshalledTupleKeyEntity interface">
@@ -14,7 +14,7 @@ MarshalledTupleKeyEntity (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="MarshalledTupleKeyEntity (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="MarshalledTupleKeyEntity (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -133,7 +133,7 @@ A marshalling interface implemented by entity classes that represent keys as
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/MarshalledTupleKeyEntity.html#marshalSecondaryKey(java.lang.String, com.sleepycat.bind.tuple.TupleOutput)">marshalSecondaryKey</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;keyName,
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/MarshalledTupleKeyEntity.html#marshalSecondaryKey(java.lang.String, com.sleepycat.bind.tuple.TupleOutput)">marshalSecondaryKey</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;keyName,
<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;keyOutput)</CODE>
<BR>
@@ -142,7 +142,7 @@ A marshalling interface implemented by entity classes that represent keys as
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/MarshalledTupleKeyEntity.html#nullifyForeignKey(java.lang.String)">nullifyForeignKey</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;keyName)</CODE>
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/MarshalledTupleKeyEntity.html#nullifyForeignKey(java.lang.String)">nullifyForeignKey</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;keyName)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Clears the entity's secondary key fields for the given key name.</TD>
@@ -200,7 +200,7 @@ void <B>unmarshalPrimaryKey</B>(<A HREF="../../../../com/sleepycat/bind/tuple/Tu
<A NAME="marshalSecondaryKey(java.lang.String, com.sleepycat.bind.tuple.TupleOutput)"><!-- --></A><H3>
marshalSecondaryKey</H3>
<PRE>
-boolean <B>marshalSecondaryKey</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;keyName,
+boolean <B>marshalSecondaryKey</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;keyName,
<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;keyOutput)</PRE>
<DL>
<DD>Extracts the entity's secondary key and writes it to the key output.
@@ -216,7 +216,7 @@ boolean <B>marshalSecondaryKey</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/ap
<A NAME="nullifyForeignKey(java.lang.String)"><!-- --></A><H3>
nullifyForeignKey</H3>
<PRE>
-boolean <B>nullifyForeignKey</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;keyName)</PRE>
+boolean <B>nullifyForeignKey</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;keyName)</PRE>
<DL>
<DD>Clears the entity's secondary key fields for the given key name.
@@ -255,7 +255,7 @@ boolean <B>nullifyForeignKey</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -291,6 +291,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHO
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/tuple/ShortBinding.html b/db/docs/java/com/sleepycat/bind/tuple/ShortBinding.html
index 6aeffa125..7dc72517a 100644
--- a/db/docs/java/com/sleepycat/bind/tuple/ShortBinding.html
+++ b/db/docs/java/com/sleepycat/bind/tuple/ShortBinding.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:47 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-ShortBinding (Oracle Corporation - Berkeley DB Java API)
+ShortBinding (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.bind.tuple.ShortBinding class">
@@ -14,7 +14,7 @@ ShortBinding (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="ShortBinding (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="ShortBinding (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,7 +89,7 @@ com.sleepycat.bind.tuple</FONT>
<BR>
Class ShortBinding</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../../com/sleepycat/bind/tuple/TupleBase.html" title="class in com.sleepycat.bind.tuple">com.sleepycat.bind.tuple.TupleBase</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html" title="class in com.sleepycat.bind.tuple">com.sleepycat.bind.tuple.TupleBinding</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.bind.tuple.ShortBinding</B>
@@ -148,7 +148,7 @@ A concrete <code>TupleBinding</code> for a <code>Short</code> primitive
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/ShortBinding.html#entryToObject(com.sleepycat.bind.tuple.TupleInput)">entryToObject</A></B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;input)</CODE>
<BR>
@@ -165,7 +165,7 @@ A concrete <code>TupleBinding</code> for a <code>Short</code> primitive
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/ShortBinding.html#getTupleOutput(java.lang.Object)">getTupleOutput</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/ShortBinding.html#getTupleOutput(java.lang.Object)">getTupleOutput</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns an empty TupleOutput instance that will be used by the tuple
@@ -174,7 +174,7 @@ A concrete <code>TupleBinding</code> for a <code>Short</code> primitive
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/ShortBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/ShortBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;output)</CODE>
<BR>
@@ -211,10 +211,10 @@ A concrete <code>TupleBinding</code> for a <code>Short</code> primitive
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -250,7 +250,7 @@ public <B>ShortBinding</B>()</PRE>
<A NAME="entryToObject(com.sleepycat.bind.tuple.TupleInput)"><!-- --></A><H3>
entryToObject</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>entryToObject</B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;input)</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>entryToObject</B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;input)</PRE>
<DL>
<DD><B>Description copied from class: <CODE><A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html#entryToObject(com.sleepycat.bind.tuple.TupleInput)">TupleBinding</A></CODE></B></DD>
<DD>Constructs a key or data object from a <A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple"><CODE>TupleInput</CODE></A> entry.
@@ -268,7 +268,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" tit
<A NAME="objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)"><!-- --></A><H3>
objectToEntry</H3>
<PRE>
-public void <B>objectToEntry</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+public void <B>objectToEntry</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;output)</PRE>
<DL>
<DD><B>Description copied from class: <CODE><A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">TupleBinding</A></CODE></B></DD>
@@ -287,7 +287,7 @@ public void <B>objectToEntry</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/
<A NAME="getTupleOutput(java.lang.Object)"><!-- --></A><H3>
getTupleOutput</H3>
<PRE>
-protected <A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A> <B>getTupleOutput</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</PRE>
+protected <A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A> <B>getTupleOutput</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</PRE>
<DL>
<DD><B>Description copied from class: <CODE><A HREF="../../../../com/sleepycat/bind/tuple/TupleBase.html#getTupleOutput(java.lang.Object)">TupleBase</A></CODE></B></DD>
<DD>Returns an empty TupleOutput instance that will be used by the tuple
@@ -364,7 +364,7 @@ public static void <B>shortToEntry</B>(short&nbsp;val,
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -400,6 +400,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&n
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/tuple/SortedDoubleBinding.html b/db/docs/java/com/sleepycat/bind/tuple/SortedDoubleBinding.html
index 5762f1d97..7fafc03b9 100644
--- a/db/docs/java/com/sleepycat/bind/tuple/SortedDoubleBinding.html
+++ b/db/docs/java/com/sleepycat/bind/tuple/SortedDoubleBinding.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:47 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-SortedDoubleBinding (Oracle Corporation - Berkeley DB Java API)
+SortedDoubleBinding (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.bind.tuple.SortedDoubleBinding class">
@@ -14,7 +14,7 @@ SortedDoubleBinding (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="SortedDoubleBinding (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="SortedDoubleBinding (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,7 +89,7 @@ com.sleepycat.bind.tuple</FONT>
<BR>
Class SortedDoubleBinding</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../../com/sleepycat/bind/tuple/TupleBase.html" title="class in com.sleepycat.bind.tuple">com.sleepycat.bind.tuple.TupleBase</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html" title="class in com.sleepycat.bind.tuple">com.sleepycat.bind.tuple.TupleBinding</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.bind.tuple.SortedDoubleBinding</B>
@@ -178,7 +178,7 @@ A concrete <code>TupleBinding</code> for a <code>Double</code> primitive
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/SortedDoubleBinding.html#entryToObject(com.sleepycat.bind.tuple.TupleInput)">entryToObject</A></B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;input)</CODE>
<BR>
@@ -187,7 +187,7 @@ A concrete <code>TupleBinding</code> for a <code>Double</code> primitive
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/SortedDoubleBinding.html#getTupleOutput(java.lang.Object)">getTupleOutput</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/SortedDoubleBinding.html#getTupleOutput(java.lang.Object)">getTupleOutput</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns an empty TupleOutput instance that will be used by the tuple
@@ -196,7 +196,7 @@ A concrete <code>TupleBinding</code> for a <code>Double</code> primitive
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/SortedDoubleBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/SortedDoubleBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;output)</CODE>
<BR>
@@ -224,10 +224,10 @@ A concrete <code>TupleBinding</code> for a <code>Double</code> primitive
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -263,7 +263,7 @@ public <B>SortedDoubleBinding</B>()</PRE>
<A NAME="entryToObject(com.sleepycat.bind.tuple.TupleInput)"><!-- --></A><H3>
entryToObject</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>entryToObject</B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;input)</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>entryToObject</B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;input)</PRE>
<DL>
<DD><B>Description copied from class: <CODE><A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html#entryToObject(com.sleepycat.bind.tuple.TupleInput)">TupleBinding</A></CODE></B></DD>
<DD>Constructs a key or data object from a <A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple"><CODE>TupleInput</CODE></A> entry.
@@ -281,7 +281,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" tit
<A NAME="objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)"><!-- --></A><H3>
objectToEntry</H3>
<PRE>
-public void <B>objectToEntry</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+public void <B>objectToEntry</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;output)</PRE>
<DL>
<DD><B>Description copied from class: <CODE><A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">TupleBinding</A></CODE></B></DD>
@@ -300,7 +300,7 @@ public void <B>objectToEntry</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/
<A NAME="getTupleOutput(java.lang.Object)"><!-- --></A><H3>
getTupleOutput</H3>
<PRE>
-protected <A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A> <B>getTupleOutput</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</PRE>
+protected <A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A> <B>getTupleOutput</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</PRE>
<DL>
<DD><B>Description copied from class: <CODE><A HREF="../../../../com/sleepycat/bind/tuple/TupleBase.html#getTupleOutput(java.lang.Object)">TupleBase</A></CODE></B></DD>
<DD>Returns an empty TupleOutput instance that will be used by the tuple
@@ -377,7 +377,7 @@ public static void <B>doubleToEntry</B>(double&nbsp;val,
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -413,6 +413,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&n
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/tuple/SortedFloatBinding.html b/db/docs/java/com/sleepycat/bind/tuple/SortedFloatBinding.html
index e613b6683..3c4d3e814 100644
--- a/db/docs/java/com/sleepycat/bind/tuple/SortedFloatBinding.html
+++ b/db/docs/java/com/sleepycat/bind/tuple/SortedFloatBinding.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:47 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-SortedFloatBinding (Oracle Corporation - Berkeley DB Java API)
+SortedFloatBinding (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.bind.tuple.SortedFloatBinding class">
@@ -14,7 +14,7 @@ SortedFloatBinding (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="SortedFloatBinding (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="SortedFloatBinding (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,7 +89,7 @@ com.sleepycat.bind.tuple</FONT>
<BR>
Class SortedFloatBinding</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../../com/sleepycat/bind/tuple/TupleBase.html" title="class in com.sleepycat.bind.tuple">com.sleepycat.bind.tuple.TupleBase</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html" title="class in com.sleepycat.bind.tuple">com.sleepycat.bind.tuple.TupleBinding</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.bind.tuple.SortedFloatBinding</B>
@@ -169,7 +169,7 @@ A concrete <code>TupleBinding</code> for a <code>Float</code> primitive
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/SortedFloatBinding.html#entryToObject(com.sleepycat.bind.tuple.TupleInput)">entryToObject</A></B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;input)</CODE>
<BR>
@@ -187,7 +187,7 @@ A concrete <code>TupleBinding</code> for a <code>Float</code> primitive
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/SortedFloatBinding.html#getTupleOutput(java.lang.Object)">getTupleOutput</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/SortedFloatBinding.html#getTupleOutput(java.lang.Object)">getTupleOutput</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns an empty TupleOutput instance that will be used by the tuple
@@ -196,7 +196,7 @@ A concrete <code>TupleBinding</code> for a <code>Float</code> primitive
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/SortedFloatBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/SortedFloatBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;output)</CODE>
<BR>
@@ -224,10 +224,10 @@ A concrete <code>TupleBinding</code> for a <code>Float</code> primitive
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -263,7 +263,7 @@ public <B>SortedFloatBinding</B>()</PRE>
<A NAME="entryToObject(com.sleepycat.bind.tuple.TupleInput)"><!-- --></A><H3>
entryToObject</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>entryToObject</B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;input)</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>entryToObject</B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;input)</PRE>
<DL>
<DD><B>Description copied from class: <CODE><A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html#entryToObject(com.sleepycat.bind.tuple.TupleInput)">TupleBinding</A></CODE></B></DD>
<DD>Constructs a key or data object from a <A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple"><CODE>TupleInput</CODE></A> entry.
@@ -281,7 +281,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" tit
<A NAME="objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)"><!-- --></A><H3>
objectToEntry</H3>
<PRE>
-public void <B>objectToEntry</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+public void <B>objectToEntry</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;output)</PRE>
<DL>
<DD><B>Description copied from class: <CODE><A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">TupleBinding</A></CODE></B></DD>
@@ -300,7 +300,7 @@ public void <B>objectToEntry</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/
<A NAME="getTupleOutput(java.lang.Object)"><!-- --></A><H3>
getTupleOutput</H3>
<PRE>
-protected <A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A> <B>getTupleOutput</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</PRE>
+protected <A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A> <B>getTupleOutput</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</PRE>
<DL>
<DD><B>Description copied from class: <CODE><A HREF="../../../../com/sleepycat/bind/tuple/TupleBase.html#getTupleOutput(java.lang.Object)">TupleBase</A></CODE></B></DD>
<DD>Returns an empty TupleOutput instance that will be used by the tuple
@@ -377,7 +377,7 @@ public static void <B>floatToEntry</B>(float&nbsp;val,
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -413,6 +413,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&n
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/tuple/StringBinding.html b/db/docs/java/com/sleepycat/bind/tuple/StringBinding.html
index 1dec12125..45b49079d 100644
--- a/db/docs/java/com/sleepycat/bind/tuple/StringBinding.html
+++ b/db/docs/java/com/sleepycat/bind/tuple/StringBinding.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:47 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-StringBinding (Oracle Corporation - Berkeley DB Java API)
+StringBinding (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.bind.tuple.StringBinding class">
@@ -14,7 +14,7 @@ StringBinding (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="StringBinding (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="StringBinding (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,7 +89,7 @@ com.sleepycat.bind.tuple</FONT>
<BR>
Class StringBinding</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../../com/sleepycat/bind/tuple/TupleBase.html" title="class in com.sleepycat.bind.tuple">com.sleepycat.bind.tuple.TupleBase</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html" title="class in com.sleepycat.bind.tuple">com.sleepycat.bind.tuple.TupleBinding</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.bind.tuple.StringBinding</B>
@@ -147,7 +147,7 @@ A concrete <code>TupleBinding</code> for a simple <code>String</code> value.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/StringBinding.html#entryToObject(com.sleepycat.bind.tuple.TupleInput)">entryToObject</A></B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;input)</CODE>
<BR>
@@ -155,7 +155,7 @@ A concrete <code>TupleBinding</code> for a simple <code>String</code> value.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/StringBinding.html#entryToString(com.sleepycat.db.DatabaseEntry)">entryToString</A></B>(<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;entry)</CODE>
<BR>
@@ -164,7 +164,7 @@ A concrete <code>TupleBinding</code> for a simple <code>String</code> value.
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/StringBinding.html#getTupleOutput(java.lang.Object)">getTupleOutput</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/StringBinding.html#getTupleOutput(java.lang.Object)">getTupleOutput</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns an empty TupleOutput instance that will be used by the tuple
@@ -173,7 +173,7 @@ A concrete <code>TupleBinding</code> for a simple <code>String</code> value.
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/StringBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/StringBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;output)</CODE>
<BR>
@@ -182,7 +182,7 @@ A concrete <code>TupleBinding</code> for a simple <code>String</code> value.
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/StringBinding.html#stringToEntry(java.lang.String, com.sleepycat.db.DatabaseEntry)">stringToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;val,
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/StringBinding.html#stringToEntry(java.lang.String, com.sleepycat.db.DatabaseEntry)">stringToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;val,
<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;entry)</CODE>
<BR>
@@ -210,10 +210,10 @@ A concrete <code>TupleBinding</code> for a simple <code>String</code> value.
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -249,7 +249,7 @@ public <B>StringBinding</B>()</PRE>
<A NAME="entryToObject(com.sleepycat.bind.tuple.TupleInput)"><!-- --></A><H3>
entryToObject</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>entryToObject</B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;input)</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>entryToObject</B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;input)</PRE>
<DL>
<DD><B>Description copied from class: <CODE><A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html#entryToObject(com.sleepycat.bind.tuple.TupleInput)">TupleBinding</A></CODE></B></DD>
<DD>Constructs a key or data object from a <A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple"><CODE>TupleInput</CODE></A> entry.
@@ -267,7 +267,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" tit
<A NAME="objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)"><!-- --></A><H3>
objectToEntry</H3>
<PRE>
-public void <B>objectToEntry</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+public void <B>objectToEntry</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;output)</PRE>
<DL>
<DD><B>Description copied from class: <CODE><A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">TupleBinding</A></CODE></B></DD>
@@ -286,7 +286,7 @@ public void <B>objectToEntry</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/
<A NAME="getTupleOutput(java.lang.Object)"><!-- --></A><H3>
getTupleOutput</H3>
<PRE>
-protected <A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A> <B>getTupleOutput</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</PRE>
+protected <A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A> <B>getTupleOutput</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</PRE>
<DL>
<DD><B>Description copied from class: <CODE><A HREF="../../../../com/sleepycat/bind/tuple/TupleBase.html#getTupleOutput(java.lang.Object)">TupleBase</A></CODE></B></DD>
<DD>Returns an empty TupleOutput instance that will be used by the tuple
@@ -315,7 +315,7 @@ protected <A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title=
<A NAME="entryToString(com.sleepycat.db.DatabaseEntry)"><!-- --></A><H3>
entryToString</H3>
<PRE>
-public static <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>entryToString</B>(<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;entry)</PRE>
+public static <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>entryToString</B>(<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;entry)</PRE>
<DL>
<DD>Converts an entry buffer into a simple <code>String</code> value.
<P>
@@ -329,7 +329,7 @@ public static <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.ht
<A NAME="stringToEntry(java.lang.String, com.sleepycat.db.DatabaseEntry)"><!-- --></A><H3>
stringToEntry</H3>
<PRE>
-public static void <B>stringToEntry</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;val,
+public static void <B>stringToEntry</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;val,
<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;entry)</PRE>
<DL>
<DD>Converts a simple <code>String</code> value into an entry buffer.
@@ -363,7 +363,7 @@ public static void <B>stringToEntry</B>(<A HREF="http://java.sun.com/j2se/1.3/do
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -399,6 +399,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&n
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/tuple/TupleBase.html b/db/docs/java/com/sleepycat/bind/tuple/TupleBase.html
index f98cf0f3c..c3d4103a3 100644
--- a/db/docs/java/com/sleepycat/bind/tuple/TupleBase.html
+++ b/db/docs/java/com/sleepycat/bind/tuple/TupleBase.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:47 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-TupleBase (Oracle Corporation - Berkeley DB Java API)
+TupleBase (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.bind.tuple.TupleBase class">
@@ -14,7 +14,7 @@ TupleBase (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="TupleBase (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="TupleBase (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,7 +89,7 @@ com.sleepycat.bind.tuple</FONT>
<BR>
Class TupleBase</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.bind.tuple.TupleBase</B>
</PRE>
<DL>
@@ -97,7 +97,7 @@ Class TupleBase</H2>
</DL>
<HR>
<DL>
-<DT><PRE>public class <B>TupleBase</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
+<DT><PRE>public class <B>TupleBase</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
</PRE>
<P>
@@ -162,7 +162,7 @@ A base class for tuple bindings and tuple key creators that provides control
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleBase.html#getTupleOutput(java.lang.Object)">getTupleOutput</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleBase.html#getTupleOutput(java.lang.Object)">getTupleOutput</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns an empty TupleOutput instance that will be used by the tuple
@@ -217,10 +217,10 @@ A base class for tuple bindings and tuple key creators that provides control
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -292,7 +292,7 @@ public int <B>getTupleBufferSize</B>()</PRE>
<A NAME="getTupleOutput(java.lang.Object)"><!-- --></A><H3>
getTupleOutput</H3>
<PRE>
-protected <A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A> <B>getTupleOutput</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</PRE>
+protected <A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A> <B>getTupleOutput</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</PRE>
<DL>
<DD>Returns an empty TupleOutput instance that will be used by the tuple
binding or key creator.
@@ -416,7 +416,7 @@ public static <A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" ti
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -452,6 +452,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&n
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/tuple/TupleBinding.html b/db/docs/java/com/sleepycat/bind/tuple/TupleBinding.html
index 918247275..84e78642f 100644
--- a/db/docs/java/com/sleepycat/bind/tuple/TupleBinding.html
+++ b/db/docs/java/com/sleepycat/bind/tuple/TupleBinding.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:47 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-TupleBinding (Oracle Corporation - Berkeley DB Java API)
+TupleBinding (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.bind.tuple.TupleBinding class">
@@ -14,7 +14,7 @@ TupleBinding (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="TupleBinding (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="TupleBinding (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,7 +89,7 @@ com.sleepycat.bind.tuple</FONT>
<BR>
Class TupleBinding</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../../com/sleepycat/bind/tuple/TupleBase.html" title="class in com.sleepycat.bind.tuple">com.sleepycat.bind.tuple.TupleBase</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.bind.tuple.TupleBinding</B>
</PRE>
@@ -97,7 +97,7 @@ Class TupleBinding</H2>
<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../../com/sleepycat/bind/EntryBinding.html" title="interface in com.sleepycat.bind">EntryBinding</A></DD>
</DL>
<DL>
-<DT><B>Direct Known Subclasses:</B> <DD><A HREF="../../../../com/sleepycat/bind/tuple/BooleanBinding.html" title="class in com.sleepycat.bind.tuple">BooleanBinding</A>, <A HREF="../../../../com/sleepycat/bind/tuple/ByteBinding.html" title="class in com.sleepycat.bind.tuple">ByteBinding</A>, <A HREF="../../../../com/sleepycat/bind/tuple/CharacterBinding.html" title="class in com.sleepycat.bind.tuple">CharacterBinding</A>, <A HREF="../../../../com/sleepycat/bind/tuple/DoubleBinding.html" title="class in com.sleepycat.bind.tuple">DoubleBinding</A>, <A HREF="../../../../com/sleepycat/bind/tuple/FloatBinding.html" title="class in com.sleepycat.bind.tuple">FloatBinding</A>, <A HREF="../../../../com/sleepycat/bind/tuple/IntegerBinding.html" title="class in com.sleepycat.bind.tuple">IntegerBinding</A>, <A HREF="../../../../com/sleepycat/bind/tuple/LongBinding.html" title="class in com.sleepycat.bind.tuple">LongBinding</A>, <A HREF="../../../../com/sleepycat/bind/tuple/ShortBinding.html" title="class in com.sleepycat.bind.tuple">ShortBinding</A>, <A HREF="../../../../com/sleepycat/bind/tuple/SortedDoubleBinding.html" title="class in com.sleepycat.bind.tuple">SortedDoubleBinding</A>, <A HREF="../../../../com/sleepycat/bind/tuple/SortedFloatBinding.html" title="class in com.sleepycat.bind.tuple">SortedFloatBinding</A>, <A HREF="../../../../com/sleepycat/bind/tuple/StringBinding.html" title="class in com.sleepycat.bind.tuple">StringBinding</A>, <A HREF="../../../../com/sleepycat/bind/tuple/TupleMarshalledBinding.html" title="class in com.sleepycat.bind.tuple">TupleMarshalledBinding</A></DD>
+<DT><B>Direct Known Subclasses:</B> <DD><A HREF="../../../../com/sleepycat/bind/tuple/BigIntegerBinding.html" title="class in com.sleepycat.bind.tuple">BigIntegerBinding</A>, <A HREF="../../../../com/sleepycat/bind/tuple/BooleanBinding.html" title="class in com.sleepycat.bind.tuple">BooleanBinding</A>, <A HREF="../../../../com/sleepycat/bind/tuple/ByteBinding.html" title="class in com.sleepycat.bind.tuple">ByteBinding</A>, <A HREF="../../../../com/sleepycat/bind/tuple/CharacterBinding.html" title="class in com.sleepycat.bind.tuple">CharacterBinding</A>, <A HREF="../../../../com/sleepycat/bind/tuple/DoubleBinding.html" title="class in com.sleepycat.bind.tuple">DoubleBinding</A>, <A HREF="../../../../com/sleepycat/bind/tuple/FloatBinding.html" title="class in com.sleepycat.bind.tuple">FloatBinding</A>, <A HREF="../../../../com/sleepycat/bind/tuple/IntegerBinding.html" title="class in com.sleepycat.bind.tuple">IntegerBinding</A>, <A HREF="../../../../com/sleepycat/bind/tuple/LongBinding.html" title="class in com.sleepycat.bind.tuple">LongBinding</A>, <A HREF="../../../../com/sleepycat/bind/tuple/ShortBinding.html" title="class in com.sleepycat.bind.tuple">ShortBinding</A>, <A HREF="../../../../com/sleepycat/bind/tuple/SortedDoubleBinding.html" title="class in com.sleepycat.bind.tuple">SortedDoubleBinding</A>, <A HREF="../../../../com/sleepycat/bind/tuple/SortedFloatBinding.html" title="class in com.sleepycat.bind.tuple">SortedFloatBinding</A>, <A HREF="../../../../com/sleepycat/bind/tuple/StringBinding.html" title="class in com.sleepycat.bind.tuple">StringBinding</A>, <A HREF="../../../../com/sleepycat/bind/tuple/TupleMarshalledBinding.html" title="class in com.sleepycat.bind.tuple">TupleMarshalledBinding</A></DD>
</DL>
<HR>
<DL>
@@ -158,7 +158,7 @@ An abstract <code>EntryBinding</code> that treats a key or data entry as a
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html#entryToObject(com.sleepycat.db.DatabaseEntry)">entryToObject</A></B>(<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;entry)</CODE>
<BR>
@@ -166,7 +166,7 @@ An abstract <code>EntryBinding</code> that treats a key or data entry as a
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>abstract &nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>abstract &nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html#entryToObject(com.sleepycat.bind.tuple.TupleInput)">entryToObject</A></B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;input)</CODE>
<BR>
@@ -175,7 +175,7 @@ An abstract <code>EntryBinding</code> that treats a key or data entry as a
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;<A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html" title="class in com.sleepycat.bind.tuple">TupleBinding</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html#getPrimitiveBinding(java.lang.Class)">getPrimitiveBinding</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;cls)</CODE>
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html#getPrimitiveBinding(java.lang.Class)">getPrimitiveBinding</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;cls)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a tuple binding for a primitive Java class.</TD>
@@ -183,7 +183,7 @@ An abstract <code>EntryBinding</code> that treats a key or data entry as a
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html#objectToEntry(java.lang.Object, com.sleepycat.db.DatabaseEntry)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html#objectToEntry(java.lang.Object, com.sleepycat.db.DatabaseEntry)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;entry)</CODE>
<BR>
@@ -192,7 +192,7 @@ An abstract <code>EntryBinding</code> that treats a key or data entry as a
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>abstract &nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;output)</CODE>
<BR>
@@ -211,10 +211,10 @@ An abstract <code>EntryBinding</code> that treats a key or data entry as a
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -252,7 +252,7 @@ public <B>TupleBinding</B>()</PRE>
<A NAME="entryToObject(com.sleepycat.db.DatabaseEntry)"><!-- --></A><H3>
entryToObject</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>entryToObject</B>(<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;entry)</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>entryToObject</B>(<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;entry)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../com/sleepycat/bind/EntryBinding.html#entryToObject(com.sleepycat.db.DatabaseEntry)">EntryBinding</A></CODE></B></DD>
<DD>Converts a entry buffer into an Object.
@@ -270,7 +270,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" tit
<A NAME="objectToEntry(java.lang.Object, com.sleepycat.db.DatabaseEntry)"><!-- --></A><H3>
objectToEntry</H3>
<PRE>
-public void <B>objectToEntry</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+public void <B>objectToEntry</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;entry)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../com/sleepycat/bind/EntryBinding.html#objectToEntry(java.lang.Object, com.sleepycat.db.DatabaseEntry)">EntryBinding</A></CODE></B></DD>
@@ -288,7 +288,7 @@ public void <B>objectToEntry</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/
<A NAME="entryToObject(com.sleepycat.bind.tuple.TupleInput)"><!-- --></A><H3>
entryToObject</H3>
<PRE>
-public abstract <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>entryToObject</B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;input)</PRE>
+public abstract <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>entryToObject</B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;input)</PRE>
<DL>
<DD>Constructs a key or data object from a <A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple"><CODE>TupleInput</CODE></A> entry.
<P>
@@ -305,7 +305,7 @@ public abstract <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.
<A NAME="objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)"><!-- --></A><H3>
objectToEntry</H3>
<PRE>
-public abstract void <B>objectToEntry</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+public abstract void <B>objectToEntry</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;output)</PRE>
<DL>
<DD>Converts a key or data object to a tuple entry.
@@ -323,7 +323,7 @@ public abstract void <B>objectToEntry</B>(<A HREF="http://java.sun.com/j2se/1.3/
<A NAME="getPrimitiveBinding(java.lang.Class)"><!-- --></A><H3>
getPrimitiveBinding</H3>
<PRE>
-public static <A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html" title="class in com.sleepycat.bind.tuple">TupleBinding</A> <B>getPrimitiveBinding</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;cls)</PRE>
+public static <A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html" title="class in com.sleepycat.bind.tuple">TupleBinding</A> <B>getPrimitiveBinding</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;cls)</PRE>
<DL>
<DD>Creates a tuple binding for a primitive Java class. The following
Java classes are supported.
@@ -378,7 +378,7 @@ public static <A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html" t
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -414,6 +414,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&n
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/tuple/TupleInput.html b/db/docs/java/com/sleepycat/bind/tuple/TupleInput.html
index 76b33c755..f69c14497 100644
--- a/db/docs/java/com/sleepycat/bind/tuple/TupleInput.html
+++ b/db/docs/java/com/sleepycat/bind/tuple/TupleInput.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:47 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-TupleInput (Oracle Corporation - Berkeley DB Java API)
+TupleInput (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.bind.tuple.TupleInput class">
@@ -14,7 +14,7 @@ TupleInput (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="TupleInput (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="TupleInput (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,13 +89,13 @@ com.sleepycat.bind.tuple</FONT>
<BR>
Class TupleInput</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
- <IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/InputStream.html" title="class or interface in java.io">java.io.InputStream</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+ <IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/InputStream.html" title="class or interface in java.io">java.io.InputStream</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../../com/sleepycat/util/FastInputStream.html" title="class in com.sleepycat.util">com.sleepycat.util.FastInputStream</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.bind.tuple.TupleInput</B>
</PRE>
<DL>
-<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/Closeable.html" title="class or interface in java.io">Closeable</A></DD>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Closeable.html" title="class or interface in java.io">Closeable</A></DD>
</DL>
<HR>
<DL>
@@ -107,15 +107,16 @@ An <code>InputStream</code> with <code>DataInput</code>-like methods for
reading tuple fields. It is used by <code>TupleBinding</code>.
<p>This class has many methods that have the same signatures as methods in
- the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/DataInput.html" title="class or interface in java.io"><CODE>DataInput</CODE></A> interface. The reason this class does not
- implement <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/DataInput.html" title="class or interface in java.io"><CODE>DataInput</CODE></A> is because it would break the interface
+ the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/DataInput.html" title="class or interface in java.io"><CODE>DataInput</CODE></A> interface. The reason this class does not
+ implement <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/DataInput.html" title="class or interface in java.io"><CODE>DataInput</CODE></A> is because it would break the interface
contract for those methods because of data format differences.</p>
<p>Signed numbers are stored in the buffer in MSB (most significant byte
first) order with their sign bit (high-order bit) inverted to cause negative
numbers to be sorted first when comparing values as unsigned byte arrays,
as done in a database. Unsigned numbers, including characters, are stored
- in MSB order with no change to their sign bit.</p>
+ in MSB order with no change to their sign bit. BigInteger values are stored
+ with a preceding length having the same sign as the value.</p>
<p>Strings and character arrays are stored either as a fixed length array of
unicode characters, where the length must be known by the application, or as
@@ -225,6 +226,14 @@ An <code>InputStream</code> with <code>DataInput</code>-like methods for
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html#getBigIntegerByteLength()">getBigIntegerByteLength</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the byte length of a <code>BigInteger</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html#getPackedIntByteLength()">getPackedIntByteLength</A></B>()</CODE>
<BR>
@@ -233,6 +242,14 @@ An <code>InputStream</code> with <code>DataInput</code>-like methods for
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html#getPackedLongByteLength()">getPackedLongByteLength</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the byte length of a packed long integer.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html#getStringByteLength()">getStringByteLength</A></B>()</CODE>
<BR>
@@ -241,6 +258,14 @@ An <code>InputStream</code> with <code>DataInput</code>-like methods for
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/math/BigInteger.html" title="class or interface in java.math">BigInteger</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html#readBigInteger()">readBigInteger</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Reads a <code>BigInteger</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html#readBoolean()">readBoolean</A></B>()</CODE>
@@ -267,7 +292,7 @@ An <code>InputStream</code> with <code>DataInput</code>-like methods for
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html#readBytes(int)">readBytes</A></B>(int&nbsp;length)</CODE>
<BR>
@@ -293,7 +318,7 @@ An <code>InputStream</code> with <code>DataInput</code>-like methods for
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html#readChars(int)">readChars</A></B>(int&nbsp;length)</CODE>
<BR>
@@ -342,6 +367,14 @@ An <code>InputStream</code> with <code>DataInput</code>-like methods for
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;long</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html#readPackedLong()">readPackedLong</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Reads a packed long integer.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;short</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html#readShort()">readShort</A></B>()</CODE>
@@ -368,7 +401,7 @@ An <code>InputStream</code> with <code>DataInput</code>-like methods for
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html#readString()">readString</A></B>()</CODE>
<BR>
@@ -386,7 +419,7 @@ An <code>InputStream</code> with <code>DataInput</code>-like methods for
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html#readString(int)">readString</A></B>(int&nbsp;length)</CODE>
<BR>
@@ -430,19 +463,19 @@ An <code>InputStream</code> with <code>DataInput</code>-like methods for
&nbsp;<A NAME="methods_inherited_from_class_java.io.InputStream"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.io.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/InputStream.html" title="class or interface in java.io">InputStream</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/InputStream.html" title="class or interface in java.io">InputStream</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/InputStream.html#close()" title="class or interface in java.io">close</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/InputStream.html#close()" title="class or interface in java.io">close</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -519,9 +552,9 @@ public <B>TupleInput</B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutp
<A NAME="readString()"><!-- --></A><H3>
readString</H3>
<PRE>
-public final <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>readString</B>()
- throws <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A>,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></PRE>
+public final <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>readString</B>()
+ throws <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A>,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></PRE>
<DL>
<DD>Reads a null-terminated UTF string from the data buffer and converts
the data from UTF to Unicode.
@@ -531,9 +564,9 @@ public final <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.htm
<DT><B>Returns:</B><DD>the converted string.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></CODE> - if no null terminating byte is found
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></CODE> - if no null terminating byte is found
in the buffer.
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - malformed UTF data is encountered.</DL>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - malformed UTF data is encountered.</DL>
</DD>
</DL>
<HR>
@@ -542,7 +575,7 @@ public final <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.htm
readChar</H3>
<PRE>
public final char <B>readChar</B>()
- throws <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></PRE>
+ throws <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></PRE>
<DL>
<DD>Reads a char (two byte) unsigned value from the buffer.
Reads values that were written using <A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html#writeChar(int)"><CODE>TupleOutput.writeChar(int)</CODE></A>.
@@ -551,7 +584,7 @@ public final char <B>readChar</B>()
<DT><B>Returns:</B><DD>the value read from the buffer.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></CODE> - if not enough bytes are available in
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></CODE> - if not enough bytes are available in
the buffer.</DL>
</DD>
</DL>
@@ -561,7 +594,7 @@ public final char <B>readChar</B>()
readBoolean</H3>
<PRE>
public final boolean <B>readBoolean</B>()
- throws <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></PRE>
+ throws <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></PRE>
<DL>
<DD>Reads a boolean (one byte) unsigned value from the buffer and returns
true if it is non-zero and false if it is zero.
@@ -571,7 +604,7 @@ public final boolean <B>readBoolean</B>()
<DT><B>Returns:</B><DD>the value read from the buffer.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></CODE> - if not enough bytes are available in
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></CODE> - if not enough bytes are available in
the buffer.</DL>
</DD>
</DL>
@@ -581,7 +614,7 @@ public final boolean <B>readBoolean</B>()
readByte</H3>
<PRE>
public final byte <B>readByte</B>()
- throws <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></PRE>
+ throws <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></PRE>
<DL>
<DD>Reads a signed byte (one byte) value from the buffer.
Reads values that were written using <A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html#writeByte(int)"><CODE>TupleOutput.writeByte(int)</CODE></A>.
@@ -590,7 +623,7 @@ public final byte <B>readByte</B>()
<DT><B>Returns:</B><DD>the value read from the buffer.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></CODE> - if not enough bytes are available in
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></CODE> - if not enough bytes are available in
the buffer.</DL>
</DD>
</DL>
@@ -600,7 +633,7 @@ public final byte <B>readByte</B>()
readShort</H3>
<PRE>
public final short <B>readShort</B>()
- throws <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></PRE>
+ throws <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></PRE>
<DL>
<DD>Reads a signed short (two byte) value from the buffer.
Reads values that were written using <A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html#writeShort(int)"><CODE>TupleOutput.writeShort(int)</CODE></A>.
@@ -609,7 +642,7 @@ public final short <B>readShort</B>()
<DT><B>Returns:</B><DD>the value read from the buffer.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></CODE> - if not enough bytes are available in
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></CODE> - if not enough bytes are available in
the buffer.</DL>
</DD>
</DL>
@@ -619,7 +652,7 @@ public final short <B>readShort</B>()
readInt</H3>
<PRE>
public final int <B>readInt</B>()
- throws <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></PRE>
+ throws <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></PRE>
<DL>
<DD>Reads a signed int (four byte) value from the buffer.
Reads values that were written using <A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html#writeInt(int)"><CODE>TupleOutput.writeInt(int)</CODE></A>.
@@ -628,7 +661,7 @@ public final int <B>readInt</B>()
<DT><B>Returns:</B><DD>the value read from the buffer.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></CODE> - if not enough bytes are available in
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></CODE> - if not enough bytes are available in
the buffer.</DL>
</DD>
</DL>
@@ -638,7 +671,7 @@ public final int <B>readInt</B>()
readLong</H3>
<PRE>
public final long <B>readLong</B>()
- throws <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></PRE>
+ throws <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></PRE>
<DL>
<DD>Reads a signed long (eight byte) value from the buffer.
Reads values that were written using <A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html#writeLong(long)"><CODE>TupleOutput.writeLong(long)</CODE></A>.
@@ -647,7 +680,7 @@ public final long <B>readLong</B>()
<DT><B>Returns:</B><DD>the value read from the buffer.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></CODE> - if not enough bytes are available in
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></CODE> - if not enough bytes are available in
the buffer.</DL>
</DD>
</DL>
@@ -657,7 +690,7 @@ public final long <B>readLong</B>()
readFloat</H3>
<PRE>
public final float <B>readFloat</B>()
- throws <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></PRE>
+ throws <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></PRE>
<DL>
<DD>Reads a signed float (four byte) value from the buffer.
Reads values that were written using <A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html#writeFloat(float)"><CODE>TupleOutput.writeFloat(float)</CODE></A>.
@@ -673,7 +706,7 @@ public final float <B>readFloat</B>()
<DT><B>Returns:</B><DD>the value read from the buffer.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></CODE> - if not enough bytes are available in
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></CODE> - if not enough bytes are available in
the buffer.</DL>
</DD>
</DL>
@@ -683,7 +716,7 @@ public final float <B>readFloat</B>()
readDouble</H3>
<PRE>
public final double <B>readDouble</B>()
- throws <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></PRE>
+ throws <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></PRE>
<DL>
<DD>Reads a signed double (eight byte) value from the buffer.
Reads values that were written using <A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html#writeDouble(double)"><CODE>TupleOutput.writeDouble(double)</CODE></A>.
@@ -699,7 +732,7 @@ public final double <B>readDouble</B>()
<DT><B>Returns:</B><DD>the value read from the buffer.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></CODE> - if not enough bytes are available in
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></CODE> - if not enough bytes are available in
the buffer.</DL>
</DD>
</DL>
@@ -709,7 +742,7 @@ public final double <B>readDouble</B>()
readSortedFloat</H3>
<PRE>
public final float <B>readSortedFloat</B>()
- throws <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></PRE>
+ throws <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></PRE>
<DL>
<DD>Reads a signed float (four byte) value from the buffer, with support
for correct default sorting of all values.
@@ -728,7 +761,7 @@ public final float <B>readSortedFloat</B>()
<DT><B>Returns:</B><DD>the value read from the buffer.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></CODE> - if not enough bytes are available in
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></CODE> - if not enough bytes are available in
the buffer.</DL>
</DD>
</DL>
@@ -738,7 +771,7 @@ public final float <B>readSortedFloat</B>()
readSortedDouble</H3>
<PRE>
public final double <B>readSortedDouble</B>()
- throws <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></PRE>
+ throws <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></PRE>
<DL>
<DD>Reads a signed double (eight byte) value from the buffer, with support
for correct default sorting of all values.
@@ -757,7 +790,7 @@ public final double <B>readSortedDouble</B>()
<DT><B>Returns:</B><DD>the value read from the buffer.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></CODE> - if not enough bytes are available in
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></CODE> - if not enough bytes are available in
the buffer.</DL>
</DD>
</DL>
@@ -767,7 +800,7 @@ public final double <B>readSortedDouble</B>()
readUnsignedByte</H3>
<PRE>
public final int <B>readUnsignedByte</B>()
- throws <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></PRE>
+ throws <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></PRE>
<DL>
<DD>Reads an unsigned byte (one byte) value from the buffer.
Reads values that were written using <A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html#writeUnsignedByte(int)"><CODE>TupleOutput.writeUnsignedByte(int)</CODE></A>.
@@ -776,7 +809,7 @@ public final int <B>readUnsignedByte</B>()
<DT><B>Returns:</B><DD>the value read from the buffer.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></CODE> - if not enough bytes are available in
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></CODE> - if not enough bytes are available in
the buffer.</DL>
</DD>
</DL>
@@ -786,7 +819,7 @@ public final int <B>readUnsignedByte</B>()
readUnsignedShort</H3>
<PRE>
public final int <B>readUnsignedShort</B>()
- throws <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></PRE>
+ throws <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></PRE>
<DL>
<DD>Reads an unsigned short (two byte) value from the buffer.
Reads values that were written using <A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html#writeUnsignedShort(int)"><CODE>TupleOutput.writeUnsignedShort(int)</CODE></A>.
@@ -795,7 +828,7 @@ public final int <B>readUnsignedShort</B>()
<DT><B>Returns:</B><DD>the value read from the buffer.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></CODE> - if not enough bytes are available in
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></CODE> - if not enough bytes are available in
the buffer.</DL>
</DD>
</DL>
@@ -805,7 +838,7 @@ public final int <B>readUnsignedShort</B>()
readUnsignedInt</H3>
<PRE>
public final long <B>readUnsignedInt</B>()
- throws <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></PRE>
+ throws <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></PRE>
<DL>
<DD>Reads an unsigned int (four byte) value from the buffer.
Reads values that were written using <A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html#writeUnsignedInt(long)"><CODE>TupleOutput.writeUnsignedInt(long)</CODE></A>.
@@ -814,7 +847,7 @@ public final long <B>readUnsignedInt</B>()
<DT><B>Returns:</B><DD>the value read from the buffer.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></CODE> - if not enough bytes are available in
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></CODE> - if not enough bytes are available in
the buffer.</DL>
</DD>
</DL>
@@ -823,8 +856,8 @@ public final long <B>readUnsignedInt</B>()
<A NAME="readBytes(int)"><!-- --></A><H3>
readBytes</H3>
<PRE>
-public final <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>readBytes</B>(int&nbsp;length)
- throws <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></PRE>
+public final <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>readBytes</B>(int&nbsp;length)
+ throws <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></PRE>
<DL>
<DD>Reads the specified number of bytes from the buffer, converting each
unsigned byte value to a character of the resulting string.
@@ -835,7 +868,7 @@ public final <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.htm
<DT><B>Parameters:</B><DD><CODE>length</CODE> - is the number of bytes to be read.
<DT><B>Returns:</B><DD>the value read from the buffer.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></CODE> - if not enough bytes are available in
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></CODE> - if not enough bytes are available in
the buffer.</DL>
</DD>
</DL>
@@ -844,8 +877,8 @@ public final <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.htm
<A NAME="readChars(int)"><!-- --></A><H3>
readChars</H3>
<PRE>
-public final <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>readChars</B>(int&nbsp;length)
- throws <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></PRE>
+public final <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>readChars</B>(int&nbsp;length)
+ throws <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></PRE>
<DL>
<DD>Reads the specified number of characters from the buffer, converting
each two byte unsigned value to a character of the resulting string.
@@ -855,7 +888,7 @@ public final <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.htm
<DT><B>Parameters:</B><DD><CODE>length</CODE> - is the number of characters to be read.
<DT><B>Returns:</B><DD>the value read from the buffer.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></CODE> - if not enough bytes are available in
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></CODE> - if not enough bytes are available in
the buffer.</DL>
</DD>
</DL>
@@ -865,7 +898,7 @@ public final <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.htm
readBytes</H3>
<PRE>
public final void <B>readBytes</B>(char[]&nbsp;chars)
- throws <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></PRE>
+ throws <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></PRE>
<DL>
<DD>Reads the specified number of bytes from the buffer, converting each
unsigned byte value to a character of the resulting array.
@@ -876,7 +909,7 @@ public final void <B>readBytes</B>(char[]&nbsp;chars)
<DT><B>Parameters:</B><DD><CODE>chars</CODE> - is the array to receive the data and whose length is used
to determine the number of bytes to be read.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></CODE> - if not enough bytes are available in
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></CODE> - if not enough bytes are available in
the buffer.</DL>
</DD>
</DL>
@@ -886,7 +919,7 @@ public final void <B>readBytes</B>(char[]&nbsp;chars)
readChars</H3>
<PRE>
public final void <B>readChars</B>(char[]&nbsp;chars)
- throws <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></PRE>
+ throws <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></PRE>
<DL>
<DD>Reads the specified number of characters from the buffer, converting
each two byte unsigned value to a character of the resulting array.
@@ -896,7 +929,7 @@ public final void <B>readChars</B>(char[]&nbsp;chars)
<DT><B>Parameters:</B><DD><CODE>chars</CODE> - is the array to receive the data and whose length is used
to determine the number of characters to be read.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></CODE> - if not enough bytes are available in
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></CODE> - if not enough bytes are available in
the buffer.</DL>
</DD>
</DL>
@@ -905,9 +938,9 @@ public final void <B>readChars</B>(char[]&nbsp;chars)
<A NAME="readString(int)"><!-- --></A><H3>
readString</H3>
<PRE>
-public final <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>readString</B>(int&nbsp;length)
- throws <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A>,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></PRE>
+public final <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>readString</B>(int&nbsp;length)
+ throws <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A>,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></PRE>
<DL>
<DD>Reads the specified number of UTF characters string from the data
buffer and converts the data from UTF to Unicode.
@@ -917,9 +950,9 @@ public final <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.htm
<DT><B>Parameters:</B><DD><CODE>length</CODE> - is the number of characters to be read.
<DT><B>Returns:</B><DD>the converted string.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></CODE> - if no null terminating byte is found
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></CODE> - if no null terminating byte is found
in the buffer.
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - malformed UTF data is encountered.</DL>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - malformed UTF data is encountered.</DL>
</DD>
</DL>
<HR>
@@ -928,8 +961,8 @@ public final <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.htm
readString</H3>
<PRE>
public final void <B>readString</B>(char[]&nbsp;chars)
- throws <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A>,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></PRE>
+ throws <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A>,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></PRE>
<DL>
<DD>Reads the specified number of UTF characters string from the data
buffer and converts the data from UTF to Unicode.
@@ -939,9 +972,9 @@ public final void <B>readString</B>(char[]&nbsp;chars)
<DT><B>Parameters:</B><DD><CODE>chars</CODE> - is the array to receive the data and whose length is used
to determine the number of characters to be read.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></CODE> - if no null terminating byte is found
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></CODE> - if no null terminating byte is found
in the buffer.
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - malformed UTF data is encountered.</DL>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - malformed UTF data is encountered.</DL>
</DD>
</DL>
<HR>
@@ -950,8 +983,8 @@ public final void <B>readString</B>(char[]&nbsp;chars)
getStringByteLength</H3>
<PRE>
public final int <B>getStringByteLength</B>()
- throws <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A>,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></PRE>
+ throws <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A>,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></PRE>
<DL>
<DD>Returns the byte length of a null-terminated UTF string in the data
buffer, including the terminator. Used with string values that were
@@ -960,9 +993,9 @@ public final int <B>getStringByteLength</B>()
<DD><DL>
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></CODE> - if no null terminating byte is found
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></CODE> - if no null terminating byte is found
in the buffer.
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - malformed UTF data is encountered.</DL>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - malformed UTF data is encountered.</DL>
</DD>
</DL>
<HR>
@@ -970,7 +1003,7 @@ public final int <B>getStringByteLength</B>()
<A NAME="readPackedInt()"><!-- --></A><H3>
readPackedInt</H3>
<PRE>
-public int <B>readPackedInt</B>()</PRE>
+public final int <B>readPackedInt</B>()</PRE>
<DL>
<DD>Reads a packed integer. Note that packed integers are not appropriate
for sorted values (keys) unless a custom comparator is used.
@@ -984,7 +1017,7 @@ public int <B>readPackedInt</B>()</PRE>
<A NAME="getPackedIntByteLength()"><!-- --></A><H3>
getPackedIntByteLength</H3>
<PRE>
-public int <B>getPackedIntByteLength</B>()</PRE>
+public final int <B>getPackedIntByteLength</B>()</PRE>
<DL>
<DD>Returns the byte length of a packed integer.
<P>
@@ -992,6 +1025,59 @@ public int <B>getPackedIntByteLength</B>()</PRE>
<DT><B>See Also:</B><DD><A HREF="../../../../com/sleepycat/util/PackedInteger.html" title="class in com.sleepycat.util"><CODE>PackedInteger</CODE></A></DL>
</DD>
</DL>
+<HR>
+
+<A NAME="readPackedLong()"><!-- --></A><H3>
+readPackedLong</H3>
+<PRE>
+public final long <B>readPackedLong</B>()</PRE>
+<DL>
+<DD>Reads a packed long integer. Note that packed integers are not
+ appropriate for sorted values (keys) unless a custom comparator is used.
+<P>
+<DD><DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../com/sleepycat/util/PackedInteger.html" title="class in com.sleepycat.util"><CODE>PackedInteger</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getPackedLongByteLength()"><!-- --></A><H3>
+getPackedLongByteLength</H3>
+<PRE>
+public final int <B>getPackedLongByteLength</B>()</PRE>
+<DL>
+<DD>Returns the byte length of a packed long integer.
+<P>
+<DD><DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../com/sleepycat/util/PackedInteger.html" title="class in com.sleepycat.util"><CODE>PackedInteger</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="readBigInteger()"><!-- --></A><H3>
+readBigInteger</H3>
+<PRE>
+public final <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/math/BigInteger.html" title="class or interface in java.math">BigInteger</A> <B>readBigInteger</B>()</PRE>
+<DL>
+<DD>Reads a <code>BigInteger</code>.
+<P>
+<DD><DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html#writeBigInteger(java.math.BigInteger)"><CODE>TupleOutput.writeBigInteger(java.math.BigInteger)</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getBigIntegerByteLength()"><!-- --></A><H3>
+getBigIntegerByteLength</H3>
+<PRE>
+public final int <B>getBigIntegerByteLength</B>()</PRE>
+<DL>
+<DD>Returns the byte length of a <code>BigInteger</code>.
+<P>
+<DD><DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html#writeBigInteger(java.math.BigInteger)"><CODE>TupleOutput.writeBigInteger(java.math.BigInteger)</CODE></A></DL>
+</DD>
+</DL>
<!-- ========= END OF CLASS DATA ========= -->
<HR>
@@ -1017,7 +1103,7 @@ public int <B>getPackedIntByteLength</B>()</PRE>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -1053,6 +1139,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&n
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/tuple/TupleInputBinding.html b/db/docs/java/com/sleepycat/bind/tuple/TupleInputBinding.html
index ad58a375f..cfca457fe 100644
--- a/db/docs/java/com/sleepycat/bind/tuple/TupleInputBinding.html
+++ b/db/docs/java/com/sleepycat/bind/tuple/TupleInputBinding.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:47 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-TupleInputBinding (Oracle Corporation - Berkeley DB Java API)
+TupleInputBinding (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.bind.tuple.TupleInputBinding class">
@@ -14,7 +14,7 @@ TupleInputBinding (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="TupleInputBinding (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="TupleInputBinding (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,7 +89,7 @@ com.sleepycat.bind.tuple</FONT>
<BR>
Class TupleInputBinding</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.bind.tuple.TupleInputBinding</B>
</PRE>
<DL>
@@ -97,7 +97,7 @@ Class TupleInputBinding</H2>
</DL>
<HR>
<DL>
-<DT><PRE>public class <B>TupleInputBinding</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A><DT>implements <A HREF="../../../../com/sleepycat/bind/EntryBinding.html" title="interface in com.sleepycat.bind">EntryBinding</A></DL>
+<DT><PRE>public class <B>TupleInputBinding</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A><DT>implements <A HREF="../../../../com/sleepycat/bind/EntryBinding.html" title="interface in com.sleepycat.bind">EntryBinding</A></DL>
</PRE>
<P>
@@ -140,7 +140,7 @@ A concrete <code>EntryBinding</code> that uses the <code>TupleInput</code>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleInputBinding.html#entryToObject(com.sleepycat.db.DatabaseEntry)">entryToObject</A></B>(<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;entry)</CODE>
<BR>
@@ -149,7 +149,7 @@ A concrete <code>EntryBinding</code> that uses the <code>TupleInput</code>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleInputBinding.html#objectToEntry(java.lang.Object, com.sleepycat.db.DatabaseEntry)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleInputBinding.html#objectToEntry(java.lang.Object, com.sleepycat.db.DatabaseEntry)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;entry)</CODE>
<BR>
@@ -159,10 +159,10 @@ A concrete <code>EntryBinding</code> that uses the <code>TupleInput</code>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -200,7 +200,7 @@ public <B>TupleInputBinding</B>()</PRE>
<A NAME="entryToObject(com.sleepycat.db.DatabaseEntry)"><!-- --></A><H3>
entryToObject</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>entryToObject</B>(<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;entry)</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>entryToObject</B>(<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;entry)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../com/sleepycat/bind/EntryBinding.html#entryToObject(com.sleepycat.db.DatabaseEntry)">EntryBinding</A></CODE></B></DD>
<DD>Converts a entry buffer into an Object.
@@ -218,7 +218,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" tit
<A NAME="objectToEntry(java.lang.Object, com.sleepycat.db.DatabaseEntry)"><!-- --></A><H3>
objectToEntry</H3>
<PRE>
-public void <B>objectToEntry</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+public void <B>objectToEntry</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;entry)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../com/sleepycat/bind/EntryBinding.html#objectToEntry(java.lang.Object, com.sleepycat.db.DatabaseEntry)">EntryBinding</A></CODE></B></DD>
@@ -256,7 +256,7 @@ public void <B>objectToEntry</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -292,6 +292,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&n
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/tuple/TupleMarshalledBinding.html b/db/docs/java/com/sleepycat/bind/tuple/TupleMarshalledBinding.html
index ef6c37d2f..0e0373b26 100644
--- a/db/docs/java/com/sleepycat/bind/tuple/TupleMarshalledBinding.html
+++ b/db/docs/java/com/sleepycat/bind/tuple/TupleMarshalledBinding.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:47 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-TupleMarshalledBinding (Oracle Corporation - Berkeley DB Java API)
+TupleMarshalledBinding (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.bind.tuple.TupleMarshalledBinding class">
@@ -14,7 +14,7 @@ TupleMarshalledBinding (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="TupleMarshalledBinding (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="TupleMarshalledBinding (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,7 +89,7 @@ com.sleepycat.bind.tuple</FONT>
<BR>
Class TupleMarshalledBinding</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../../com/sleepycat/bind/tuple/TupleBase.html" title="class in com.sleepycat.bind.tuple">com.sleepycat.bind.tuple.TupleBase</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html" title="class in com.sleepycat.bind.tuple">com.sleepycat.bind.tuple.TupleBinding</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.bind.tuple.TupleMarshalledBinding</B>
@@ -105,7 +105,7 @@ Class TupleMarshalledBinding</H2>
<P>
A concrete <code>TupleBinding</code> that delegates to the
<code>MarshalledTupleEntry</code> interface of the data or key object.
-
+
<p>This class works by calling the methods of the <A HREF="../../../../com/sleepycat/bind/tuple/MarshalledTupleEntry.html" title="interface in com.sleepycat.bind.tuple"><CODE>MarshalledTupleEntry</CODE></A> interface, which must be implemented by the key or
data class, to convert between the key or data entry and the object.</p>
<P>
@@ -124,7 +124,7 @@ A concrete <code>TupleBinding</code> that delegates to the
<B>Constructor Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleMarshalledBinding.html#TupleMarshalledBinding(java.lang.Class)">TupleMarshalledBinding</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;cls)</CODE>
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleMarshalledBinding.html#TupleMarshalledBinding(java.lang.Class)">TupleMarshalledBinding</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;cls)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a tuple marshalled binding object.</TD>
@@ -141,7 +141,7 @@ A concrete <code>TupleBinding</code> that delegates to the
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleMarshalledBinding.html#entryToObject(com.sleepycat.bind.tuple.TupleInput)">entryToObject</A></B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;input)</CODE>
<BR>
@@ -150,7 +150,7 @@ A concrete <code>TupleBinding</code> that delegates to the
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleMarshalledBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleMarshalledBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;output)</CODE>
<BR>
@@ -178,10 +178,10 @@ A concrete <code>TupleBinding</code> that delegates to the
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -200,12 +200,12 @@ A concrete <code>TupleBinding</code> that delegates to the
<A NAME="TupleMarshalledBinding(java.lang.Class)"><!-- --></A><H3>
TupleMarshalledBinding</H3>
<PRE>
-public <B>TupleMarshalledBinding</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;cls)</PRE>
+public <B>TupleMarshalledBinding</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;cls)</PRE>
<DL>
<DD>Creates a tuple marshalled binding object.
<p>The given class is used to instantiate key or data objects using
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html#forName(java.lang.String)" title="class or interface in java.lang"><CODE>Class.forName(java.lang.String)</CODE></A>, and therefore must be a public class and have a
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html#forName(java.lang.String)" title="class or interface in java.lang"><CODE>Class.forName(java.lang.String)</CODE></A>, and therefore must be a public class and have a
public no-arguments constructor. It must also implement the <A HREF="../../../../com/sleepycat/bind/tuple/MarshalledTupleEntry.html" title="interface in com.sleepycat.bind.tuple"><CODE>MarshalledTupleEntry</CODE></A> interface.</p>
<P>
<DL>
@@ -225,7 +225,7 @@ public <B>TupleMarshalledBinding</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/
<A NAME="entryToObject(com.sleepycat.bind.tuple.TupleInput)"><!-- --></A><H3>
entryToObject</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>entryToObject</B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;input)</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>entryToObject</B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;input)</PRE>
<DL>
<DD><B>Description copied from class: <CODE><A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html#entryToObject(com.sleepycat.bind.tuple.TupleInput)">TupleBinding</A></CODE></B></DD>
<DD>Constructs a key or data object from a <A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple"><CODE>TupleInput</CODE></A> entry.
@@ -243,7 +243,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" tit
<A NAME="objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)"><!-- --></A><H3>
objectToEntry</H3>
<PRE>
-public void <B>objectToEntry</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+public void <B>objectToEntry</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;output)</PRE>
<DL>
<DD><B>Description copied from class: <CODE><A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">TupleBinding</A></CODE></B></DD>
@@ -282,7 +282,7 @@ public void <B>objectToEntry</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -318,6 +318,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&n
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/tuple/TupleOutput.html b/db/docs/java/com/sleepycat/bind/tuple/TupleOutput.html
index 478cf7aa2..b9a09f71a 100644
--- a/db/docs/java/com/sleepycat/bind/tuple/TupleOutput.html
+++ b/db/docs/java/com/sleepycat/bind/tuple/TupleOutput.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:47 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-TupleOutput (Oracle Corporation - Berkeley DB Java API)
+TupleOutput (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.bind.tuple.TupleOutput class">
@@ -14,7 +14,7 @@ TupleOutput (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="TupleOutput (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="TupleOutput (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,13 +89,13 @@ com.sleepycat.bind.tuple</FONT>
<BR>
Class TupleOutput</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
- <IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/OutputStream.html" title="class or interface in java.io">java.io.OutputStream</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+ <IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/OutputStream.html" title="class or interface in java.io">java.io.OutputStream</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../../com/sleepycat/util/FastOutputStream.html" title="class in com.sleepycat.util">com.sleepycat.util.FastOutputStream</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.bind.tuple.TupleOutput</B>
</PRE>
<DL>
-<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/Closeable.html" title="class or interface in java.io">Closeable</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/Flushable.html" title="class or interface in java.io">Flushable</A></DD>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Closeable.html" title="class or interface in java.io">Closeable</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Flushable.html" title="class or interface in java.io">Flushable</A></DD>
</DL>
<HR>
<DL>
@@ -107,15 +107,16 @@ An <code>OutputStream</code> with <code>DataOutput</code>-like methods for
writing tuple fields. It is used by <code>TupleBinding</code>.
<p>This class has many methods that have the same signatures as methods in
- the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/DataOutput.html" title="class or interface in java.io"><CODE>DataOutput</CODE></A> interface. The reason this class does not
- implement <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/DataOutput.html" title="class or interface in java.io"><CODE>DataOutput</CODE></A> is because it would break the interface
+ the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/DataOutput.html" title="class or interface in java.io"><CODE>DataOutput</CODE></A> interface. The reason this class does not
+ implement <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/DataOutput.html" title="class or interface in java.io"><CODE>DataOutput</CODE></A> is because it would break the interface
contract for those methods because of data format differences.</p>
<p>Signed numbers are stored in the buffer in MSB (most significant byte
first) order with their sign bit (high-order bit) inverted to cause negative
numbers to be sorted first when comparing values as unsigned byte arrays,
as done in a database. Unsigned numbers, including characters, are stored
- in MSB order with no change to their sign bit.</p>
+ in MSB order with no change to their sign bit. BigInteger values are stored
+ with a preceding length having the same sign as the value.</p>
<p>Strings and character arrays are stored either as a fixed length array of
unicode characters, where the length must be known by the application, or as
@@ -215,6 +216,22 @@ An <code>OutputStream</code> with <code>DataOutput</code>-like methods for
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html#getBigIntegerByteLength(java.math.BigInteger)">getBigIntegerByteLength</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/math/BigInteger.html" title="class or interface in java.math">BigInteger</A>&nbsp;val)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the byte length of a given <code>BigInteger</code> value.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html#writeBigInteger(java.math.BigInteger)">writeBigInteger</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/math/BigInteger.html" title="class or interface in java.math">BigInteger</A>&nbsp;val)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Writes a <code>BigInteger</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html#writeBoolean(boolean)">writeBoolean</A></B>(boolean&nbsp;val)</CODE>
@@ -242,7 +259,7 @@ An <code>OutputStream</code> with <code>DataOutput</code>-like methods for
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html#writeBytes(java.lang.String)">writeBytes</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;val)</CODE>
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html#writeBytes(java.lang.String)">writeBytes</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;val)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Writes the specified bytes to the buffer, converting each character to
@@ -268,7 +285,7 @@ An <code>OutputStream</code> with <code>DataOutput</code>-like methods for
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html#writeChars(java.lang.String)">writeChars</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;val)</CODE>
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html#writeChars(java.lang.String)">writeChars</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;val)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Writes the specified characters to the buffer, converting each character
@@ -316,6 +333,14 @@ An <code>OutputStream</code> with <code>DataOutput</code>-like methods for
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html#writePackedLong(long)">writePackedLong</A></B>(long&nbsp;val)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Writes a packed long integer.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html#writeShort(int)">writeShort</A></B>(int&nbsp;val)</CODE>
@@ -352,7 +377,7 @@ An <code>OutputStream</code> with <code>DataOutput</code>-like methods for
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html#writeString(java.lang.String)">writeString</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;val)</CODE>
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html#writeString(java.lang.String)">writeString</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;val)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Writes the specified characters to the buffer, converting each character
@@ -395,19 +420,19 @@ An <code>OutputStream</code> with <code>DataOutput</code>-like methods for
&nbsp;<A NAME="methods_inherited_from_class_java.io.OutputStream"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.io.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/OutputStream.html" title="class or interface in java.io">OutputStream</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/OutputStream.html" title="class or interface in java.io">OutputStream</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/OutputStream.html#close()" title="class or interface in java.io">close</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/OutputStream.html#flush()" title="class or interface in java.io">flush</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/OutputStream.html#close()" title="class or interface in java.io">close</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/OutputStream.html#flush()" title="class or interface in java.io">flush</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -461,7 +486,7 @@ public <B>TupleOutput</B>(byte[]&nbsp;buffer)</PRE>
<A NAME="writeBytes(java.lang.String)"><!-- --></A><H3>
writeBytes</H3>
<PRE>
-public final <A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A> <B>writeBytes</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;val)</PRE>
+public final <A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A> <B>writeBytes</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;val)</PRE>
<DL>
<DD>Writes the specified bytes to the buffer, converting each character to
an unsigned byte value.
@@ -473,7 +498,7 @@ public final <A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" tit
<DT><B>Parameters:</B><DD><CODE>val</CODE> - is the string containing the values to be written.
<DT><B>Returns:</B><DD>this tuple output object.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if the val parameter is null.</DL>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if the val parameter is null.</DL>
</DD>
</DL>
<HR>
@@ -481,7 +506,7 @@ public final <A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" tit
<A NAME="writeChars(java.lang.String)"><!-- --></A><H3>
writeChars</H3>
<PRE>
-public final <A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A> <B>writeChars</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;val)</PRE>
+public final <A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A> <B>writeChars</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;val)</PRE>
<DL>
<DD>Writes the specified characters to the buffer, converting each character
to a two byte unsigned value.
@@ -491,7 +516,7 @@ public final <A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" tit
<DT><B>Parameters:</B><DD><CODE>val</CODE> - is the string containing the characters to be written.
<DT><B>Returns:</B><DD>this tuple output object.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if the val parameter is null.</DL>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if the val parameter is null.</DL>
</DD>
</DL>
<HR>
@@ -499,7 +524,7 @@ public final <A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" tit
<A NAME="writeString(java.lang.String)"><!-- --></A><H3>
writeString</H3>
<PRE>
-public final <A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A> <B>writeString</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;val)</PRE>
+public final <A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A> <B>writeString</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;val)</PRE>
<DL>
<DD>Writes the specified characters to the buffer, converting each character
to UTF format, and adding a null terminator byte.
@@ -712,7 +737,7 @@ public final <A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" tit
<DT><B>Parameters:</B><DD><CODE>chars</CODE> - is the array of values to be written.
<DT><B>Returns:</B><DD>this tuple output object.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if the chars parameter is null.</DL>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if the chars parameter is null.</DL>
</DD>
</DL>
<HR>
@@ -730,7 +755,7 @@ public final <A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" tit
<DT><B>Parameters:</B><DD><CODE>chars</CODE> - is the array of characters to be written.
<DT><B>Returns:</B><DD>this tuple output object.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if the chars parameter is null.</DL>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if the chars parameter is null.</DL>
</DD>
</DL>
<HR>
@@ -750,7 +775,7 @@ public final <A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" tit
<DT><B>Parameters:</B><DD><CODE>chars</CODE> - is the array of characters to be written.
<DT><B>Returns:</B><DD>this tuple output object.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if the chars parameter is null.</DL>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if the chars parameter is null.</DL>
</DD>
</DL>
<HR>
@@ -803,7 +828,7 @@ public final <A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" tit
<A NAME="writePackedInt(int)"><!-- --></A><H3>
writePackedInt</H3>
<PRE>
-public void <B>writePackedInt</B>(int&nbsp;val)</PRE>
+public final void <B>writePackedInt</B>(int&nbsp;val)</PRE>
<DL>
<DD>Writes a packed integer. Note that packed integers are not appropriate
for sorted values (keys) unless a custom comparator is used.
@@ -812,6 +837,65 @@ public void <B>writePackedInt</B>(int&nbsp;val)</PRE>
<DT><B>See Also:</B><DD><A HREF="../../../../com/sleepycat/util/PackedInteger.html" title="class in com.sleepycat.util"><CODE>PackedInteger</CODE></A></DL>
</DD>
</DL>
+<HR>
+
+<A NAME="writePackedLong(long)"><!-- --></A><H3>
+writePackedLong</H3>
+<PRE>
+public final void <B>writePackedLong</B>(long&nbsp;val)</PRE>
+<DL>
+<DD>Writes a packed long integer. Note that packed integers are not
+ appropriate for sorted values (keys) unless a custom comparator is used.
+<P>
+<DD><DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../com/sleepycat/util/PackedInteger.html" title="class in com.sleepycat.util"><CODE>PackedInteger</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="writeBigInteger(java.math.BigInteger)"><!-- --></A><H3>
+writeBigInteger</H3>
+<PRE>
+public final <A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A> <B>writeBigInteger</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/math/BigInteger.html" title="class or interface in java.math">BigInteger</A>&nbsp;val)</PRE>
+<DL>
+<DD>Writes a <code>BigInteger</code>. Supported <code>BigInteger</code> values are
+ limited to those with a byte array (<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/math/BigInteger.html#toByteArray()" title="class or interface in java.math"><CODE>BigInteger.toByteArray()</CODE></A>)
+ representation with a size of 0x7fff bytes or less. The maximum <code>BigInteger</code> value is (2<sup>0x3fff7</sup> - 1) and the minimum value is
+ (-2<sup>0x3fff7</sup>).
+
+ <p>The byte format for a <code>BigInteger</code> value is:</p>
+ <ul>
+ <li>Byte 0 and 1: The length of the following bytes, negated if the
+ <code>BigInteger</code> value is negative, and written as a sorted value as
+ if <A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html#writeShort(int)"><CODE>writeShort(int)</CODE></A> were called.</li>
+ <li>Byte 2: The first byte of the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/math/BigInteger.html#toByteArray()" title="class or interface in java.math"><CODE>BigInteger.toByteArray()</CODE></A> array,
+ written as a sorted value as if <A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html#writeByte(int)"><CODE>writeByte(int)</CODE></A> were called.</li>
+ <li>Byte 3 to N: The second and remaining bytes, if any, of the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/math/BigInteger.html#toByteArray()" title="class or interface in java.math"><CODE>BigInteger.toByteArray()</CODE></A> array, written without modification.</li>
+ </ul>
+ <p>This format provides correct default sorting when the default
+ byte-by-byte comparison is used.</p>
+<P>
+<DD><DL>
+
+<DT><B>Throws:</B>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if val is null.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if the byte array representation of val
+ is larger than 0x7fff bytes.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getBigIntegerByteLength(java.math.BigInteger)"><!-- --></A><H3>
+getBigIntegerByteLength</H3>
+<PRE>
+public static int <B>getBigIntegerByteLength</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/math/BigInteger.html" title="class or interface in java.math">BigInteger</A>&nbsp;val)</PRE>
+<DL>
+<DD>Returns the byte length of a given <code>BigInteger</code> value.
+<P>
+<DD><DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html#writeBigInteger(java.math.BigInteger)"><CODE>writeBigInteger(java.math.BigInteger)</CODE></A></DL>
+</DD>
+</DL>
<!-- ========= END OF CLASS DATA ========= -->
<HR>
@@ -837,7 +921,7 @@ public void <B>writePackedInt</B>(int&nbsp;val)</PRE>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -873,6 +957,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&n
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/tuple/TupleTupleBinding.html b/db/docs/java/com/sleepycat/bind/tuple/TupleTupleBinding.html
index 31e4bd3c3..959cde915 100644
--- a/db/docs/java/com/sleepycat/bind/tuple/TupleTupleBinding.html
+++ b/db/docs/java/com/sleepycat/bind/tuple/TupleTupleBinding.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:47 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-TupleTupleBinding (Oracle Corporation - Berkeley DB Java API)
+TupleTupleBinding (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.bind.tuple.TupleTupleBinding class">
@@ -14,7 +14,7 @@ TupleTupleBinding (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="TupleTupleBinding (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="TupleTupleBinding (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,7 +89,7 @@ com.sleepycat.bind.tuple</FONT>
<BR>
Class TupleTupleBinding</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../../com/sleepycat/bind/tuple/TupleBase.html" title="class in com.sleepycat.bind.tuple">com.sleepycat.bind.tuple.TupleBase</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.bind.tuple.TupleTupleBinding</B>
</PRE>
@@ -149,7 +149,7 @@ An abstract <code>EntityBinding</code> that treats an entity's key entry and
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleTupleBinding.html#entryToObject(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry)">entryToObject</A></B>(<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;key,
<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;data)</CODE>
@@ -158,7 +158,7 @@ An abstract <code>EntityBinding</code> that treats an entity's key entry and
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>abstract &nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>abstract &nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleTupleBinding.html#entryToObject(com.sleepycat.bind.tuple.TupleInput, com.sleepycat.bind.tuple.TupleInput)">entryToObject</A></B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;keyInput,
<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;dataInput)</CODE>
@@ -169,7 +169,7 @@ An abstract <code>EntityBinding</code> that treats an entity's key entry and
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleTupleBinding.html#objectToData(java.lang.Object, com.sleepycat.db.DatabaseEntry)">objectToData</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleTupleBinding.html#objectToData(java.lang.Object, com.sleepycat.db.DatabaseEntry)">objectToData</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;data)</CODE>
<BR>
@@ -178,7 +178,7 @@ An abstract <code>EntityBinding</code> that treats an entity's key entry and
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>abstract &nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleTupleBinding.html#objectToData(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToData</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleTupleBinding.html#objectToData(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToData</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;output)</CODE>
<BR>
@@ -187,7 +187,7 @@ An abstract <code>EntityBinding</code> that treats an entity's key entry and
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleTupleBinding.html#objectToKey(java.lang.Object, com.sleepycat.db.DatabaseEntry)">objectToKey</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleTupleBinding.html#objectToKey(java.lang.Object, com.sleepycat.db.DatabaseEntry)">objectToKey</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;key)</CODE>
<BR>
@@ -196,7 +196,7 @@ An abstract <code>EntityBinding</code> that treats an entity's key entry and
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>abstract &nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleTupleBinding.html#objectToKey(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToKey</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleTupleBinding.html#objectToKey(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToKey</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;output)</CODE>
<BR>
@@ -215,10 +215,10 @@ An abstract <code>EntityBinding</code> that treats an entity's key entry and
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -256,7 +256,7 @@ public <B>TupleTupleBinding</B>()</PRE>
<A NAME="entryToObject(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry)"><!-- --></A><H3>
entryToObject</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>entryToObject</B>(<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;key,
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>entryToObject</B>(<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;key,
<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;data)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../com/sleepycat/bind/EntityBinding.html#entryToObject(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry)">EntityBinding</A></CODE></B></DD>
@@ -275,7 +275,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" tit
<A NAME="objectToKey(java.lang.Object, com.sleepycat.db.DatabaseEntry)"><!-- --></A><H3>
objectToKey</H3>
<PRE>
-public void <B>objectToKey</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+public void <B>objectToKey</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;key)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../com/sleepycat/bind/EntityBinding.html#objectToKey(java.lang.Object, com.sleepycat.db.DatabaseEntry)">EntityBinding</A></CODE></B></DD>
@@ -293,7 +293,7 @@ public void <B>objectToKey</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/ja
<A NAME="objectToData(java.lang.Object, com.sleepycat.db.DatabaseEntry)"><!-- --></A><H3>
objectToData</H3>
<PRE>
-public void <B>objectToData</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+public void <B>objectToData</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;data)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../com/sleepycat/bind/EntityBinding.html#objectToData(java.lang.Object, com.sleepycat.db.DatabaseEntry)">EntityBinding</A></CODE></B></DD>
@@ -311,7 +311,7 @@ public void <B>objectToData</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/j
<A NAME="entryToObject(com.sleepycat.bind.tuple.TupleInput, com.sleepycat.bind.tuple.TupleInput)"><!-- --></A><H3>
entryToObject</H3>
<PRE>
-public abstract <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>entryToObject</B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;keyInput,
+public abstract <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>entryToObject</B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;keyInput,
<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;dataInput)</PRE>
<DL>
<DD>Constructs an entity object from <A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple"><CODE>TupleInput</CODE></A> key and data
@@ -330,7 +330,7 @@ public abstract <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.
<A NAME="objectToKey(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)"><!-- --></A><H3>
objectToKey</H3>
<PRE>
-public abstract void <B>objectToKey</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+public abstract void <B>objectToKey</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;output)</PRE>
<DL>
<DD>Extracts a key tuple from an entity object.
@@ -348,7 +348,7 @@ public abstract void <B>objectToKey</B>(<A HREF="http://java.sun.com/j2se/1.3/do
<A NAME="objectToData(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)"><!-- --></A><H3>
objectToData</H3>
<PRE>
-public abstract void <B>objectToData</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+public abstract void <B>objectToData</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;output)</PRE>
<DL>
<DD>Extracts a key tuple from an entity object.
@@ -386,7 +386,7 @@ public abstract void <B>objectToData</B>(<A HREF="http://java.sun.com/j2se/1.3/d
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -422,6 +422,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&n
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/tuple/TupleTupleKeyCreator.html b/db/docs/java/com/sleepycat/bind/tuple/TupleTupleKeyCreator.html
index b11f00269..bd4a36864 100644
--- a/db/docs/java/com/sleepycat/bind/tuple/TupleTupleKeyCreator.html
+++ b/db/docs/java/com/sleepycat/bind/tuple/TupleTupleKeyCreator.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:47 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-TupleTupleKeyCreator (Oracle Corporation - Berkeley DB Java API)
+TupleTupleKeyCreator (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.bind.tuple.TupleTupleKeyCreator class">
@@ -14,7 +14,7 @@ TupleTupleKeyCreator (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="TupleTupleKeyCreator (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="TupleTupleKeyCreator (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,7 +89,7 @@ com.sleepycat.bind.tuple</FONT>
<BR>
Class TupleTupleKeyCreator</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../../com/sleepycat/bind/tuple/TupleBase.html" title="class in com.sleepycat.bind.tuple">com.sleepycat.bind.tuple.TupleBase</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.bind.tuple.TupleTupleKeyCreator</B>
</PRE>
@@ -195,10 +195,10 @@ An abstract key creator that uses a tuple key and a tuple data entry. This
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -363,7 +363,7 @@ public boolean <B>nullifyForeignKey</B>(<A HREF="../../../../com/sleepycat/bind/
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -399,6 +399,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&n
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/tuple/TupleTupleMarshalledBinding.html b/db/docs/java/com/sleepycat/bind/tuple/TupleTupleMarshalledBinding.html
index 2b7b72e20..d2b8eeb76 100644
--- a/db/docs/java/com/sleepycat/bind/tuple/TupleTupleMarshalledBinding.html
+++ b/db/docs/java/com/sleepycat/bind/tuple/TupleTupleMarshalledBinding.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:47 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-TupleTupleMarshalledBinding (Oracle Corporation - Berkeley DB Java API)
+TupleTupleMarshalledBinding (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.bind.tuple.TupleTupleMarshalledBinding class">
@@ -14,7 +14,7 @@ TupleTupleMarshalledBinding (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="TupleTupleMarshalledBinding (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="TupleTupleMarshalledBinding (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,7 +89,7 @@ com.sleepycat.bind.tuple</FONT>
<BR>
Class TupleTupleMarshalledBinding</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../../com/sleepycat/bind/tuple/TupleBase.html" title="class in com.sleepycat.bind.tuple">com.sleepycat.bind.tuple.TupleBase</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../../com/sleepycat/bind/tuple/TupleTupleBinding.html" title="class in com.sleepycat.bind.tuple">com.sleepycat.bind.tuple.TupleTupleBinding</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.bind.tuple.TupleTupleMarshalledBinding</B>
@@ -106,7 +106,7 @@ Class TupleTupleMarshalledBinding</H2>
A concrete <code>TupleTupleBinding</code> that delegates to the
<code>MarshalledTupleEntry</code> and
<code>MarshalledTupleKeyEntity</code> interfaces of the entity class.
-
+
<p>This class calls the methods of the <A HREF="../../../../com/sleepycat/bind/tuple/MarshalledTupleEntry.html" title="interface in com.sleepycat.bind.tuple"><CODE>MarshalledTupleEntry</CODE></A>
interface to convert between the data entry and entity object. It calls the
methods of the <A HREF="../../../../com/sleepycat/bind/tuple/MarshalledTupleKeyEntity.html" title="interface in com.sleepycat.bind.tuple"><CODE>MarshalledTupleKeyEntity</CODE></A> interface to convert between
@@ -128,7 +128,7 @@ A concrete <code>TupleTupleBinding</code> that delegates to the
<B>Constructor Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleTupleMarshalledBinding.html#TupleTupleMarshalledBinding(java.lang.Class)">TupleTupleMarshalledBinding</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;cls)</CODE>
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleTupleMarshalledBinding.html#TupleTupleMarshalledBinding(java.lang.Class)">TupleTupleMarshalledBinding</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;cls)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a tuple-tuple marshalled binding object.</TD>
@@ -145,7 +145,7 @@ A concrete <code>TupleTupleBinding</code> that delegates to the
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleTupleMarshalledBinding.html#entryToObject(com.sleepycat.bind.tuple.TupleInput, com.sleepycat.bind.tuple.TupleInput)">entryToObject</A></B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;keyInput,
<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;dataInput)</CODE>
@@ -156,7 +156,7 @@ A concrete <code>TupleTupleBinding</code> that delegates to the
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleTupleMarshalledBinding.html#objectToData(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToData</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleTupleMarshalledBinding.html#objectToData(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToData</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;output)</CODE>
<BR>
@@ -165,7 +165,7 @@ A concrete <code>TupleTupleBinding</code> that delegates to the
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleTupleMarshalledBinding.html#objectToKey(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToKey</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleTupleMarshalledBinding.html#objectToKey(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToKey</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;output)</CODE>
<BR>
@@ -193,10 +193,10 @@ A concrete <code>TupleTupleBinding</code> that delegates to the
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -215,12 +215,12 @@ A concrete <code>TupleTupleBinding</code> that delegates to the
<A NAME="TupleTupleMarshalledBinding(java.lang.Class)"><!-- --></A><H3>
TupleTupleMarshalledBinding</H3>
<PRE>
-public <B>TupleTupleMarshalledBinding</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;cls)</PRE>
+public <B>TupleTupleMarshalledBinding</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;cls)</PRE>
<DL>
<DD>Creates a tuple-tuple marshalled binding object.
<p>The given class is used to instantiate entity objects using
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html#forName(java.lang.String)" title="class or interface in java.lang"><CODE>Class.forName(java.lang.String)</CODE></A>, and therefore must be a public class and have a
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html#forName(java.lang.String)" title="class or interface in java.lang"><CODE>Class.forName(java.lang.String)</CODE></A>, and therefore must be a public class and have a
public no-arguments constructor. It must also implement the <A HREF="../../../../com/sleepycat/bind/tuple/MarshalledTupleEntry.html" title="interface in com.sleepycat.bind.tuple"><CODE>MarshalledTupleEntry</CODE></A> and <A HREF="../../../../com/sleepycat/bind/tuple/MarshalledTupleKeyEntity.html" title="interface in com.sleepycat.bind.tuple"><CODE>MarshalledTupleKeyEntity</CODE></A>
interfaces.</p>
<P>
@@ -241,7 +241,7 @@ public <B>TupleTupleMarshalledBinding</B>(<A HREF="http://java.sun.com/j2se/1.3/
<A NAME="entryToObject(com.sleepycat.bind.tuple.TupleInput, com.sleepycat.bind.tuple.TupleInput)"><!-- --></A><H3>
entryToObject</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>entryToObject</B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;keyInput,
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>entryToObject</B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;keyInput,
<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;dataInput)</PRE>
<DL>
<DD><B>Description copied from class: <CODE><A HREF="../../../../com/sleepycat/bind/tuple/TupleTupleBinding.html#entryToObject(com.sleepycat.bind.tuple.TupleInput, com.sleepycat.bind.tuple.TupleInput)">TupleTupleBinding</A></CODE></B></DD>
@@ -261,7 +261,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" tit
<A NAME="objectToKey(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)"><!-- --></A><H3>
objectToKey</H3>
<PRE>
-public void <B>objectToKey</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+public void <B>objectToKey</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;output)</PRE>
<DL>
<DD><B>Description copied from class: <CODE><A HREF="../../../../com/sleepycat/bind/tuple/TupleTupleBinding.html#objectToKey(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">TupleTupleBinding</A></CODE></B></DD>
@@ -280,7 +280,7 @@ public void <B>objectToKey</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/ja
<A NAME="objectToData(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)"><!-- --></A><H3>
objectToData</H3>
<PRE>
-public void <B>objectToData</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+public void <B>objectToData</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;output)</PRE>
<DL>
<DD><B>Description copied from class: <CODE><A HREF="../../../../com/sleepycat/bind/tuple/TupleTupleBinding.html#objectToData(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">TupleTupleBinding</A></CODE></B></DD>
@@ -319,7 +319,7 @@ public void <B>objectToData</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/j
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -355,6 +355,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&n
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/tuple/TupleTupleMarshalledKeyCreator.html b/db/docs/java/com/sleepycat/bind/tuple/TupleTupleMarshalledKeyCreator.html
index 6d4089d6b..c0d1a6673 100644
--- a/db/docs/java/com/sleepycat/bind/tuple/TupleTupleMarshalledKeyCreator.html
+++ b/db/docs/java/com/sleepycat/bind/tuple/TupleTupleMarshalledKeyCreator.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:47 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-TupleTupleMarshalledKeyCreator (Oracle Corporation - Berkeley DB Java API)
+TupleTupleMarshalledKeyCreator (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.bind.tuple.TupleTupleMarshalledKeyCreator class">
@@ -14,7 +14,7 @@ TupleTupleMarshalledKeyCreator (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="TupleTupleMarshalledKeyCreator (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="TupleTupleMarshalledKeyCreator (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,7 +89,7 @@ com.sleepycat.bind.tuple</FONT>
<BR>
Class TupleTupleMarshalledKeyCreator</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../../com/sleepycat/bind/tuple/TupleBase.html" title="class in com.sleepycat.bind.tuple">com.sleepycat.bind.tuple.TupleBase</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../../com/sleepycat/bind/tuple/TupleTupleKeyCreator.html" title="class in com.sleepycat.bind.tuple">com.sleepycat.bind.tuple.TupleTupleKeyCreator</A>
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.bind.tuple.TupleTupleMarshalledKeyCreator</B>
@@ -128,7 +128,7 @@ A concrete key creator that works in conjunction with a <A HREF="../../../../com
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleTupleMarshalledKeyCreator.html#TupleTupleMarshalledKeyCreator(com.sleepycat.bind.tuple.TupleTupleMarshalledBinding, java.lang.String)">TupleTupleMarshalledKeyCreator</A></B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleTupleMarshalledBinding.html" title="class in com.sleepycat.bind.tuple">TupleTupleMarshalledBinding</A>&nbsp;binding,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;keyName)</CODE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;keyName)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a tuple-tuple marshalled key creator.</TD>
@@ -184,10 +184,10 @@ A concrete key creator that works in conjunction with a <A HREF="../../../../com
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -207,7 +207,7 @@ A concrete key creator that works in conjunction with a <A HREF="../../../../com
TupleTupleMarshalledKeyCreator</H3>
<PRE>
public <B>TupleTupleMarshalledKeyCreator</B>(<A HREF="../../../../com/sleepycat/bind/tuple/TupleTupleMarshalledBinding.html" title="class in com.sleepycat.bind.tuple">TupleTupleMarshalledBinding</A>&nbsp;binding,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;keyName)</PRE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;keyName)</PRE>
<DL>
<DD>Creates a tuple-tuple marshalled key creator.
<P>
@@ -297,7 +297,7 @@ public boolean <B>nullifyForeignKey</B>(<A HREF="../../../../com/sleepycat/bind/
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -333,6 +333,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&n
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/tuple/class-use/BigIntegerBinding.html b/db/docs/java/com/sleepycat/bind/tuple/class-use/BigIntegerBinding.html
new file mode 100644
index 000000000..97f49ef6e
--- /dev/null
+++ b/db/docs/java/com/sleepycat/bind/tuple/class-use/BigIntegerBinding.html
@@ -0,0 +1,140 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:57:00 EDT 2007 -->
+<TITLE>
+Uses of Class com.sleepycat.bind.tuple.BigIntegerBinding (Oracle - Berkeley DB Java API)
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../style.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+ parent.document.title="Uses of Class com.sleepycat.bind.tuple.BigIntegerBinding (Oracle - Berkeley DB Java API)";
+}
+</SCRIPT>
+<NOSCRIPT>
+</NOSCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+ <TR ALIGN="center" VALIGN="top">
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../com/sleepycat/bind/tuple/BigIntegerBinding.html" title="class in com.sleepycat.bind.tuple"><FONT CLASS="NavBarFont1"><B>Class</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Use</B></FONT>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+ </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ <A HREF="../../../../../index.html?com/sleepycat/bind/tuple//class-useBigIntegerBinding.html" target="_top"><B>FRAMES</B></A> &nbsp;
+&nbsp;<A HREF="BigIntegerBinding.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+ <!--
+ if(window==top) {
+ document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+ }
+ //-->
+</SCRIPT>
+<NOSCRIPT>
+ <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+<B>Uses of Class<br>com.sleepycat.bind.tuple.BigIntegerBinding</B></H2>
+</CENTER>
+No usage of com.sleepycat.bind.tuple.BigIntegerBinding
+<P>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+ <TR ALIGN="center" VALIGN="top">
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../com/sleepycat/bind/tuple/BigIntegerBinding.html" title="class in com.sleepycat.bind.tuple"><FONT CLASS="NavBarFont1"><B>Class</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Use</B></FONT>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+ </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ <A HREF="../../../../../index.html?com/sleepycat/bind/tuple//class-useBigIntegerBinding.html" target="_top"><B>FRAMES</B></A> &nbsp;
+&nbsp;<A HREF="BigIntegerBinding.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+ <!--
+ if(window==top) {
+ document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+ }
+ //-->
+</SCRIPT>
+<NOSCRIPT>
+ <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
+</BODY>
+</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/tuple/class-use/BooleanBinding.html b/db/docs/java/com/sleepycat/bind/tuple/class-use/BooleanBinding.html
index b335800fb..e2cdb52b0 100644
--- a/db/docs/java/com/sleepycat/bind/tuple/class-use/BooleanBinding.html
+++ b/db/docs/java/com/sleepycat/bind/tuple/class-use/BooleanBinding.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:57:00 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.bind.tuple.BooleanBinding (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.bind.tuple.BooleanBinding (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.bind.tuple.BooleanBinding (Oracle Corporation - Berk
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.bind.tuple.BooleanBinding (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.bind.tuple.BooleanBinding (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -105,7 +105,7 @@ No usage of com.sleepycat.bind.tuple.BooleanBinding
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -135,6 +135,6 @@ No usage of com.sleepycat.bind.tuple.BooleanBinding
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/tuple/class-use/ByteBinding.html b/db/docs/java/com/sleepycat/bind/tuple/class-use/ByteBinding.html
index 110b96f34..4bc181048 100644
--- a/db/docs/java/com/sleepycat/bind/tuple/class-use/ByteBinding.html
+++ b/db/docs/java/com/sleepycat/bind/tuple/class-use/ByteBinding.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:57:00 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.bind.tuple.ByteBinding (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.bind.tuple.ByteBinding (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.bind.tuple.ByteBinding (Oracle Corporation - Berkele
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.bind.tuple.ByteBinding (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.bind.tuple.ByteBinding (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -105,7 +105,7 @@ No usage of com.sleepycat.bind.tuple.ByteBinding
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -135,6 +135,6 @@ No usage of com.sleepycat.bind.tuple.ByteBinding
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/tuple/class-use/CharacterBinding.html b/db/docs/java/com/sleepycat/bind/tuple/class-use/CharacterBinding.html
index bb7b9ef00..9dd068a5b 100644
--- a/db/docs/java/com/sleepycat/bind/tuple/class-use/CharacterBinding.html
+++ b/db/docs/java/com/sleepycat/bind/tuple/class-use/CharacterBinding.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:57:00 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.bind.tuple.CharacterBinding (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.bind.tuple.CharacterBinding (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.bind.tuple.CharacterBinding (Oracle Corporation - Be
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.bind.tuple.CharacterBinding (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.bind.tuple.CharacterBinding (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -105,7 +105,7 @@ No usage of com.sleepycat.bind.tuple.CharacterBinding
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -135,6 +135,6 @@ No usage of com.sleepycat.bind.tuple.CharacterBinding
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/tuple/class-use/DoubleBinding.html b/db/docs/java/com/sleepycat/bind/tuple/class-use/DoubleBinding.html
index fe31deebe..63ec74b6b 100644
--- a/db/docs/java/com/sleepycat/bind/tuple/class-use/DoubleBinding.html
+++ b/db/docs/java/com/sleepycat/bind/tuple/class-use/DoubleBinding.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:57:00 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.bind.tuple.DoubleBinding (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.bind.tuple.DoubleBinding (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.bind.tuple.DoubleBinding (Oracle Corporation - Berke
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.bind.tuple.DoubleBinding (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.bind.tuple.DoubleBinding (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -105,7 +105,7 @@ No usage of com.sleepycat.bind.tuple.DoubleBinding
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -135,6 +135,6 @@ No usage of com.sleepycat.bind.tuple.DoubleBinding
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/tuple/class-use/FloatBinding.html b/db/docs/java/com/sleepycat/bind/tuple/class-use/FloatBinding.html
index ca50d8cf8..942c22cdc 100644
--- a/db/docs/java/com/sleepycat/bind/tuple/class-use/FloatBinding.html
+++ b/db/docs/java/com/sleepycat/bind/tuple/class-use/FloatBinding.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:57:00 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.bind.tuple.FloatBinding (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.bind.tuple.FloatBinding (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.bind.tuple.FloatBinding (Oracle Corporation - Berkel
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.bind.tuple.FloatBinding (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.bind.tuple.FloatBinding (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -105,7 +105,7 @@ No usage of com.sleepycat.bind.tuple.FloatBinding
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -135,6 +135,6 @@ No usage of com.sleepycat.bind.tuple.FloatBinding
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/tuple/class-use/IntegerBinding.html b/db/docs/java/com/sleepycat/bind/tuple/class-use/IntegerBinding.html
index 242cebbb0..f21bc2221 100644
--- a/db/docs/java/com/sleepycat/bind/tuple/class-use/IntegerBinding.html
+++ b/db/docs/java/com/sleepycat/bind/tuple/class-use/IntegerBinding.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:57:00 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.bind.tuple.IntegerBinding (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.bind.tuple.IntegerBinding (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.bind.tuple.IntegerBinding (Oracle Corporation - Berk
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.bind.tuple.IntegerBinding (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.bind.tuple.IntegerBinding (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -105,7 +105,7 @@ No usage of com.sleepycat.bind.tuple.IntegerBinding
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -135,6 +135,6 @@ No usage of com.sleepycat.bind.tuple.IntegerBinding
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/tuple/class-use/LongBinding.html b/db/docs/java/com/sleepycat/bind/tuple/class-use/LongBinding.html
index 2ca21695e..ac2a050e2 100644
--- a/db/docs/java/com/sleepycat/bind/tuple/class-use/LongBinding.html
+++ b/db/docs/java/com/sleepycat/bind/tuple/class-use/LongBinding.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:57:00 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.bind.tuple.LongBinding (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.bind.tuple.LongBinding (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.bind.tuple.LongBinding (Oracle Corporation - Berkele
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.bind.tuple.LongBinding (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.bind.tuple.LongBinding (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -105,7 +105,7 @@ No usage of com.sleepycat.bind.tuple.LongBinding
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -135,6 +135,6 @@ No usage of com.sleepycat.bind.tuple.LongBinding
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/tuple/class-use/MarshalledTupleEntry.html b/db/docs/java/com/sleepycat/bind/tuple/class-use/MarshalledTupleEntry.html
index bc557953d..28bfb4bfe 100644
--- a/db/docs/java/com/sleepycat/bind/tuple/class-use/MarshalledTupleEntry.html
+++ b/db/docs/java/com/sleepycat/bind/tuple/class-use/MarshalledTupleEntry.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:57:00 EDT 2007 -->
<TITLE>
-Uses of Interface com.sleepycat.bind.tuple.MarshalledTupleEntry (Oracle Corporation - Berkeley DB Java API)
+Uses of Interface com.sleepycat.bind.tuple.MarshalledTupleEntry (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Interface com.sleepycat.bind.tuple.MarshalledTupleEntry (Oracle Corporat
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Interface com.sleepycat.bind.tuple.MarshalledTupleEntry (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Interface com.sleepycat.bind.tuple.MarshalledTupleEntry (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -105,7 +105,7 @@ No usage of com.sleepycat.bind.tuple.MarshalledTupleEntry
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -135,6 +135,6 @@ No usage of com.sleepycat.bind.tuple.MarshalledTupleEntry
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/tuple/class-use/MarshalledTupleKeyEntity.html b/db/docs/java/com/sleepycat/bind/tuple/class-use/MarshalledTupleKeyEntity.html
index daaaa3f0d..cf698c029 100644
--- a/db/docs/java/com/sleepycat/bind/tuple/class-use/MarshalledTupleKeyEntity.html
+++ b/db/docs/java/com/sleepycat/bind/tuple/class-use/MarshalledTupleKeyEntity.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:57:00 EDT 2007 -->
<TITLE>
-Uses of Interface com.sleepycat.bind.tuple.MarshalledTupleKeyEntity (Oracle Corporation - Berkeley DB Java API)
+Uses of Interface com.sleepycat.bind.tuple.MarshalledTupleKeyEntity (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Interface com.sleepycat.bind.tuple.MarshalledTupleKeyEntity (Oracle Corp
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Interface com.sleepycat.bind.tuple.MarshalledTupleKeyEntity (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Interface com.sleepycat.bind.tuple.MarshalledTupleKeyEntity (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -105,7 +105,7 @@ No usage of com.sleepycat.bind.tuple.MarshalledTupleKeyEntity
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -135,6 +135,6 @@ No usage of com.sleepycat.bind.tuple.MarshalledTupleKeyEntity
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/tuple/class-use/ShortBinding.html b/db/docs/java/com/sleepycat/bind/tuple/class-use/ShortBinding.html
index 57e703078..6b22d1156 100644
--- a/db/docs/java/com/sleepycat/bind/tuple/class-use/ShortBinding.html
+++ b/db/docs/java/com/sleepycat/bind/tuple/class-use/ShortBinding.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:57:00 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.bind.tuple.ShortBinding (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.bind.tuple.ShortBinding (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.bind.tuple.ShortBinding (Oracle Corporation - Berkel
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.bind.tuple.ShortBinding (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.bind.tuple.ShortBinding (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -105,7 +105,7 @@ No usage of com.sleepycat.bind.tuple.ShortBinding
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -135,6 +135,6 @@ No usage of com.sleepycat.bind.tuple.ShortBinding
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/tuple/class-use/SortedDoubleBinding.html b/db/docs/java/com/sleepycat/bind/tuple/class-use/SortedDoubleBinding.html
index c6bb8e5a0..9aec1719e 100644
--- a/db/docs/java/com/sleepycat/bind/tuple/class-use/SortedDoubleBinding.html
+++ b/db/docs/java/com/sleepycat/bind/tuple/class-use/SortedDoubleBinding.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:57:00 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.bind.tuple.SortedDoubleBinding (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.bind.tuple.SortedDoubleBinding (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.bind.tuple.SortedDoubleBinding (Oracle Corporation -
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.bind.tuple.SortedDoubleBinding (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.bind.tuple.SortedDoubleBinding (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -105,7 +105,7 @@ No usage of com.sleepycat.bind.tuple.SortedDoubleBinding
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -135,6 +135,6 @@ No usage of com.sleepycat.bind.tuple.SortedDoubleBinding
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/tuple/class-use/SortedFloatBinding.html b/db/docs/java/com/sleepycat/bind/tuple/class-use/SortedFloatBinding.html
index df61d6f61..452cb66a2 100644
--- a/db/docs/java/com/sleepycat/bind/tuple/class-use/SortedFloatBinding.html
+++ b/db/docs/java/com/sleepycat/bind/tuple/class-use/SortedFloatBinding.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:57:00 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.bind.tuple.SortedFloatBinding (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.bind.tuple.SortedFloatBinding (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.bind.tuple.SortedFloatBinding (Oracle Corporation -
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.bind.tuple.SortedFloatBinding (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.bind.tuple.SortedFloatBinding (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -105,7 +105,7 @@ No usage of com.sleepycat.bind.tuple.SortedFloatBinding
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -135,6 +135,6 @@ No usage of com.sleepycat.bind.tuple.SortedFloatBinding
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/tuple/class-use/StringBinding.html b/db/docs/java/com/sleepycat/bind/tuple/class-use/StringBinding.html
index 772121dde..b49c2f7d9 100644
--- a/db/docs/java/com/sleepycat/bind/tuple/class-use/StringBinding.html
+++ b/db/docs/java/com/sleepycat/bind/tuple/class-use/StringBinding.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:57:00 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.bind.tuple.StringBinding (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.bind.tuple.StringBinding (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.bind.tuple.StringBinding (Oracle Corporation - Berke
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.bind.tuple.StringBinding (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.bind.tuple.StringBinding (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -105,7 +105,7 @@ No usage of com.sleepycat.bind.tuple.StringBinding
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -135,6 +135,6 @@ No usage of com.sleepycat.bind.tuple.StringBinding
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/tuple/class-use/TupleBase.html b/db/docs/java/com/sleepycat/bind/tuple/class-use/TupleBase.html
index 2e87d290b..ee70d5195 100644
--- a/db/docs/java/com/sleepycat/bind/tuple/class-use/TupleBase.html
+++ b/db/docs/java/com/sleepycat/bind/tuple/class-use/TupleBase.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:57:00 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.bind.tuple.TupleBase (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.bind.tuple.TupleBase (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.bind.tuple.TupleBase (Oracle Corporation - Berkeley
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.bind.tuple.TupleBase (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.bind.tuple.TupleBase (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -164,6 +164,14 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleBase.html" title="
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;class</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/sleepycat/bind/tuple/BigIntegerBinding.html" title="class in com.sleepycat.bind.tuple">BigIntegerBinding</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A concrete <code>TupleBinding</code> for a <code>BigInteger</code> value.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;class</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../com/sleepycat/bind/tuple/BooleanBinding.html" title="class in com.sleepycat.bind.tuple">BooleanBinding</A></B></CODE>
<BR>
@@ -339,7 +347,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleBase.html" title="
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -369,6 +377,6 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleBase.html" title="
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/tuple/class-use/TupleBinding.html b/db/docs/java/com/sleepycat/bind/tuple/class-use/TupleBinding.html
index 160addd28..76ddde8cd 100644
--- a/db/docs/java/com/sleepycat/bind/tuple/class-use/TupleBinding.html
+++ b/db/docs/java/com/sleepycat/bind/tuple/class-use/TupleBinding.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:57:00 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.bind.tuple.TupleBinding (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.bind.tuple.TupleBinding (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.bind.tuple.TupleBinding (Oracle Corporation - Berkel
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.bind.tuple.TupleBinding (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.bind.tuple.TupleBinding (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -109,6 +109,14 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleBinding.html" titl
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;class</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/sleepycat/bind/tuple/BigIntegerBinding.html" title="class in com.sleepycat.bind.tuple">BigIntegerBinding</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A concrete <code>TupleBinding</code> for a <code>BigInteger</code> value.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;class</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../com/sleepycat/bind/tuple/BooleanBinding.html" title="class in com.sleepycat.bind.tuple">BooleanBinding</A></B></CODE>
<BR>
@@ -224,7 +232,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleBinding.html" titl
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;<A HREF="../../../../../com/sleepycat/bind/tuple/TupleBinding.html" title="class in com.sleepycat.bind.tuple">TupleBinding</A></CODE></FONT></TD>
-<TD><CODE><B>TupleBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/TupleBinding.html#getPrimitiveBinding(java.lang.Class)">getPrimitiveBinding</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;cls)</CODE>
+<TD><CODE><B>TupleBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/TupleBinding.html#getPrimitiveBinding(java.lang.Class)">getPrimitiveBinding</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;cls)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a tuple binding for a primitive Java class.</TD>
@@ -256,7 +264,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleBinding.html" titl
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -286,6 +294,6 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleBinding.html" titl
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/tuple/class-use/TupleInput.html b/db/docs/java/com/sleepycat/bind/tuple/class-use/TupleInput.html
index 6fbd0bbe9..fd06e11bc 100644
--- a/db/docs/java/com/sleepycat/bind/tuple/class-use/TupleInput.html
+++ b/db/docs/java/com/sleepycat/bind/tuple/class-use/TupleInput.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:57:00 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.bind.tuple.TupleInput (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.bind.tuple.TupleInput (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.bind.tuple.TupleInput (Oracle Corporation - Berkeley
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.bind.tuple.TupleInput (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.bind.tuple.TupleInput (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -114,7 +114,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleInput.html" title=
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B>TupleSerialMarshalledKeyCreator.</B><B><A HREF="../../../../../com/sleepycat/bind/serial/TupleSerialMarshalledKeyCreator.html#createSecondaryKey(com.sleepycat.bind.tuple.TupleInput, java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">createSecondaryKey</A></B>(<A HREF="../../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;primaryKeyInput,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;dataInput,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;dataInput,
<A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;indexKeyOutput)</CODE>
<BR>
@@ -124,7 +124,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleInput.html" title=
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>abstract &nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B>TupleSerialKeyCreator.</B><B><A HREF="../../../../../com/sleepycat/bind/serial/TupleSerialKeyCreator.html#createSecondaryKey(com.sleepycat.bind.tuple.TupleInput, java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">createSecondaryKey</A></B>(<A HREF="../../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;primaryKeyInput,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;dataInput,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;dataInput,
<A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;indexKeyOutput)</CODE>
<BR>
@@ -133,18 +133,18 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleInput.html" title=
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B>TupleSerialMarshalledBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/serial/TupleSerialMarshalledBinding.html#entryToObject(com.sleepycat.bind.tuple.TupleInput, java.lang.Object)">entryToObject</A></B>(<A HREF="../../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;tupleInput,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;javaInput)</CODE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;javaInput)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>abstract &nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>abstract &nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B>TupleSerialBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/serial/TupleSerialBinding.html#entryToObject(com.sleepycat.bind.tuple.TupleInput, java.lang.Object)">entryToObject</A></B>(<A HREF="../../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;keyInput,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;dataInput)</CODE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;dataInput)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs an entity object from <A HREF="../../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple"><CODE>TupleInput</CODE></A> key entry and
@@ -206,7 +206,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleInput.html" title=
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B>TupleMarshalledBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/TupleMarshalledBinding.html#entryToObject(com.sleepycat.bind.tuple.TupleInput)">entryToObject</A></B>(<A HREF="../../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;input)</CODE>
<BR>
@@ -214,7 +214,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleInput.html" title=
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>abstract &nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>abstract &nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B>TupleBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/TupleBinding.html#entryToObject(com.sleepycat.bind.tuple.TupleInput)">entryToObject</A></B>(<A HREF="../../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;input)</CODE>
<BR>
@@ -222,7 +222,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleInput.html" title=
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B>StringBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/StringBinding.html#entryToObject(com.sleepycat.bind.tuple.TupleInput)">entryToObject</A></B>(<A HREF="../../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;input)</CODE>
<BR>
@@ -230,7 +230,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleInput.html" title=
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B>SortedFloatBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/SortedFloatBinding.html#entryToObject(com.sleepycat.bind.tuple.TupleInput)">entryToObject</A></B>(<A HREF="../../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;input)</CODE>
<BR>
@@ -238,7 +238,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleInput.html" title=
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B>SortedDoubleBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/SortedDoubleBinding.html#entryToObject(com.sleepycat.bind.tuple.TupleInput)">entryToObject</A></B>(<A HREF="../../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;input)</CODE>
<BR>
@@ -246,7 +246,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleInput.html" title=
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B>ShortBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/ShortBinding.html#entryToObject(com.sleepycat.bind.tuple.TupleInput)">entryToObject</A></B>(<A HREF="../../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;input)</CODE>
<BR>
@@ -254,7 +254,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleInput.html" title=
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B>LongBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/LongBinding.html#entryToObject(com.sleepycat.bind.tuple.TupleInput)">entryToObject</A></B>(<A HREF="../../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;input)</CODE>
<BR>
@@ -262,7 +262,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleInput.html" title=
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B>IntegerBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/IntegerBinding.html#entryToObject(com.sleepycat.bind.tuple.TupleInput)">entryToObject</A></B>(<A HREF="../../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;input)</CODE>
<BR>
@@ -270,7 +270,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleInput.html" title=
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B>FloatBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/FloatBinding.html#entryToObject(com.sleepycat.bind.tuple.TupleInput)">entryToObject</A></B>(<A HREF="../../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;input)</CODE>
<BR>
@@ -278,7 +278,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleInput.html" title=
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B>DoubleBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/DoubleBinding.html#entryToObject(com.sleepycat.bind.tuple.TupleInput)">entryToObject</A></B>(<A HREF="../../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;input)</CODE>
<BR>
@@ -286,7 +286,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleInput.html" title=
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B>CharacterBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/CharacterBinding.html#entryToObject(com.sleepycat.bind.tuple.TupleInput)">entryToObject</A></B>(<A HREF="../../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;input)</CODE>
<BR>
@@ -294,7 +294,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleInput.html" title=
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B>ByteBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/ByteBinding.html#entryToObject(com.sleepycat.bind.tuple.TupleInput)">entryToObject</A></B>(<A HREF="../../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;input)</CODE>
<BR>
@@ -302,7 +302,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleInput.html" title=
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B>BooleanBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/BooleanBinding.html#entryToObject(com.sleepycat.bind.tuple.TupleInput)">entryToObject</A></B>(<A HREF="../../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;input)</CODE>
<BR>
@@ -310,7 +310,15 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleInput.html" title=
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<TD><CODE><B>BigIntegerBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/BigIntegerBinding.html#entryToObject(com.sleepycat.bind.tuple.TupleInput)">entryToObject</A></B>(<A HREF="../../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;input)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B>TupleTupleMarshalledBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/TupleTupleMarshalledBinding.html#entryToObject(com.sleepycat.bind.tuple.TupleInput, com.sleepycat.bind.tuple.TupleInput)">entryToObject</A></B>(<A HREF="../../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;keyInput,
<A HREF="../../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;dataInput)</CODE>
@@ -319,7 +327,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleInput.html" title=
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>abstract &nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>abstract &nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B>TupleTupleBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/TupleTupleBinding.html#entryToObject(com.sleepycat.bind.tuple.TupleInput, com.sleepycat.bind.tuple.TupleInput)">entryToObject</A></B>(<A HREF="../../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;keyInput,
<A HREF="../../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;dataInput)</CODE>
@@ -399,7 +407,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleInput.html" title=
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -429,6 +437,6 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleInput.html" title=
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/tuple/class-use/TupleInputBinding.html b/db/docs/java/com/sleepycat/bind/tuple/class-use/TupleInputBinding.html
index 17b18687a..2d6eefc00 100644
--- a/db/docs/java/com/sleepycat/bind/tuple/class-use/TupleInputBinding.html
+++ b/db/docs/java/com/sleepycat/bind/tuple/class-use/TupleInputBinding.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:57:00 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.bind.tuple.TupleInputBinding (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.bind.tuple.TupleInputBinding (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.bind.tuple.TupleInputBinding (Oracle Corporation - B
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.bind.tuple.TupleInputBinding (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.bind.tuple.TupleInputBinding (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -105,7 +105,7 @@ No usage of com.sleepycat.bind.tuple.TupleInputBinding
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -135,6 +135,6 @@ No usage of com.sleepycat.bind.tuple.TupleInputBinding
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/tuple/class-use/TupleMarshalledBinding.html b/db/docs/java/com/sleepycat/bind/tuple/class-use/TupleMarshalledBinding.html
index f5c2fc340..c91d1e03a 100644
--- a/db/docs/java/com/sleepycat/bind/tuple/class-use/TupleMarshalledBinding.html
+++ b/db/docs/java/com/sleepycat/bind/tuple/class-use/TupleMarshalledBinding.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:57:00 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.bind.tuple.TupleMarshalledBinding (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.bind.tuple.TupleMarshalledBinding (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.bind.tuple.TupleMarshalledBinding (Oracle Corporatio
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.bind.tuple.TupleMarshalledBinding (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.bind.tuple.TupleMarshalledBinding (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -105,7 +105,7 @@ No usage of com.sleepycat.bind.tuple.TupleMarshalledBinding
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -135,6 +135,6 @@ No usage of com.sleepycat.bind.tuple.TupleMarshalledBinding
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/tuple/class-use/TupleOutput.html b/db/docs/java/com/sleepycat/bind/tuple/class-use/TupleOutput.html
index 423b7b34f..f3cf9348a 100644
--- a/db/docs/java/com/sleepycat/bind/tuple/class-use/TupleOutput.html
+++ b/db/docs/java/com/sleepycat/bind/tuple/class-use/TupleOutput.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.bind.tuple.TupleOutput (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.bind.tuple.TupleOutput (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.bind.tuple.TupleOutput (Oracle Corporation - Berkele
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.bind.tuple.TupleOutput (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.bind.tuple.TupleOutput (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -114,7 +114,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B>TupleSerialMarshalledKeyCreator.</B><B><A HREF="../../../../../com/sleepycat/bind/serial/TupleSerialMarshalledKeyCreator.html#createSecondaryKey(com.sleepycat.bind.tuple.TupleInput, java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">createSecondaryKey</A></B>(<A HREF="../../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;primaryKeyInput,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;dataInput,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;dataInput,
<A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;indexKeyOutput)</CODE>
<BR>
@@ -124,7 +124,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>abstract &nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B>TupleSerialKeyCreator.</B><B><A HREF="../../../../../com/sleepycat/bind/serial/TupleSerialKeyCreator.html#createSecondaryKey(com.sleepycat.bind.tuple.TupleInput, java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">createSecondaryKey</A></B>(<A HREF="../../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>&nbsp;primaryKeyInput,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;dataInput,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;dataInput,
<A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;indexKeyOutput)</CODE>
<BR>
@@ -134,7 +134,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B>TupleSerialMarshalledBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/serial/TupleSerialMarshalledBinding.html#objectToKey(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToKey</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B>TupleSerialMarshalledBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/serial/TupleSerialMarshalledBinding.html#objectToKey(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToKey</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;output)</CODE>
<BR>
@@ -143,7 +143,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>abstract &nbsp;void</CODE></FONT></TD>
-<TD><CODE><B>TupleSerialBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/serial/TupleSerialBinding.html#objectToKey(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToKey</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B>TupleSerialBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/serial/TupleSerialBinding.html#objectToKey(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToKey</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;keyOutput)</CODE>
<BR>
@@ -169,7 +169,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A></CODE></FONT></TD>
-<TD><CODE><B>TupleBase.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/TupleBase.html#getTupleOutput(java.lang.Object)">getTupleOutput</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
+<TD><CODE><B>TupleBase.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/TupleBase.html#getTupleOutput(java.lang.Object)">getTupleOutput</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns an empty TupleOutput instance that will be used by the tuple
@@ -178,7 +178,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A></CODE></FONT></TD>
-<TD><CODE><B>StringBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/StringBinding.html#getTupleOutput(java.lang.Object)">getTupleOutput</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
+<TD><CODE><B>StringBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/StringBinding.html#getTupleOutput(java.lang.Object)">getTupleOutput</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
@@ -186,7 +186,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A></CODE></FONT></TD>
-<TD><CODE><B>SortedFloatBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/SortedFloatBinding.html#getTupleOutput(java.lang.Object)">getTupleOutput</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
+<TD><CODE><B>SortedFloatBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/SortedFloatBinding.html#getTupleOutput(java.lang.Object)">getTupleOutput</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
@@ -194,7 +194,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A></CODE></FONT></TD>
-<TD><CODE><B>SortedDoubleBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/SortedDoubleBinding.html#getTupleOutput(java.lang.Object)">getTupleOutput</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
+<TD><CODE><B>SortedDoubleBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/SortedDoubleBinding.html#getTupleOutput(java.lang.Object)">getTupleOutput</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
@@ -202,7 +202,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A></CODE></FONT></TD>
-<TD><CODE><B>ShortBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/ShortBinding.html#getTupleOutput(java.lang.Object)">getTupleOutput</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
+<TD><CODE><B>ShortBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/ShortBinding.html#getTupleOutput(java.lang.Object)">getTupleOutput</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
@@ -210,7 +210,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A></CODE></FONT></TD>
-<TD><CODE><B>LongBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/LongBinding.html#getTupleOutput(java.lang.Object)">getTupleOutput</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
+<TD><CODE><B>LongBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/LongBinding.html#getTupleOutput(java.lang.Object)">getTupleOutput</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
@@ -218,7 +218,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A></CODE></FONT></TD>
-<TD><CODE><B>IntegerBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/IntegerBinding.html#getTupleOutput(java.lang.Object)">getTupleOutput</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
+<TD><CODE><B>IntegerBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/IntegerBinding.html#getTupleOutput(java.lang.Object)">getTupleOutput</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
@@ -226,7 +226,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A></CODE></FONT></TD>
-<TD><CODE><B>FloatBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/FloatBinding.html#getTupleOutput(java.lang.Object)">getTupleOutput</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
+<TD><CODE><B>FloatBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/FloatBinding.html#getTupleOutput(java.lang.Object)">getTupleOutput</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
@@ -234,7 +234,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A></CODE></FONT></TD>
-<TD><CODE><B>DoubleBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/DoubleBinding.html#getTupleOutput(java.lang.Object)">getTupleOutput</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
+<TD><CODE><B>DoubleBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/DoubleBinding.html#getTupleOutput(java.lang.Object)">getTupleOutput</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
@@ -242,7 +242,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A></CODE></FONT></TD>
-<TD><CODE><B>CharacterBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/CharacterBinding.html#getTupleOutput(java.lang.Object)">getTupleOutput</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
+<TD><CODE><B>CharacterBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/CharacterBinding.html#getTupleOutput(java.lang.Object)">getTupleOutput</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
@@ -250,7 +250,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A></CODE></FONT></TD>
-<TD><CODE><B>ByteBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/ByteBinding.html#getTupleOutput(java.lang.Object)">getTupleOutput</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
+<TD><CODE><B>ByteBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/ByteBinding.html#getTupleOutput(java.lang.Object)">getTupleOutput</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
@@ -258,7 +258,15 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A></CODE></FONT></TD>
-<TD><CODE><B>BooleanBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/BooleanBinding.html#getTupleOutput(java.lang.Object)">getTupleOutput</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
+<TD><CODE><B>BooleanBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/BooleanBinding.html#getTupleOutput(java.lang.Object)">getTupleOutput</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A></CODE></FONT></TD>
+<TD><CODE><B>BigIntegerBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/BigIntegerBinding.html#getTupleOutput(java.lang.Object)">getTupleOutput</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
@@ -282,6 +290,14 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A></CODE></FONT></TD>
+<TD><CODE><B>TupleOutput.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html#writeBigInteger(java.math.BigInteger)">writeBigInteger</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/math/BigInteger.html" title="class or interface in java.math">BigInteger</A>&nbsp;val)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Writes a <code>BigInteger</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A></CODE></FONT></TD>
<TD><CODE><B>TupleOutput.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html#writeBoolean(boolean)">writeBoolean</A></B>(boolean&nbsp;val)</CODE>
<BR>
@@ -308,7 +324,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A></CODE></FONT></TD>
-<TD><CODE><B>TupleOutput.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html#writeBytes(java.lang.String)">writeBytes</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;val)</CODE>
+<TD><CODE><B>TupleOutput.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html#writeBytes(java.lang.String)">writeBytes</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;val)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Writes the specified bytes to the buffer, converting each character to
@@ -334,7 +350,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A></CODE></FONT></TD>
-<TD><CODE><B>TupleOutput.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html#writeChars(java.lang.String)">writeChars</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;val)</CODE>
+<TD><CODE><B>TupleOutput.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html#writeChars(java.lang.String)">writeChars</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;val)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Writes the specified characters to the buffer, converting each character
@@ -410,7 +426,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A></CODE></FONT></TD>
-<TD><CODE><B>TupleOutput.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html#writeString(java.lang.String)">writeString</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;val)</CODE>
+<TD><CODE><B>TupleOutput.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html#writeString(java.lang.String)">writeString</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;val)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Writes the specified characters to the buffer, converting each character
@@ -487,7 +503,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
-<TD><CODE><B>MarshalledTupleKeyEntity.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/MarshalledTupleKeyEntity.html#marshalSecondaryKey(java.lang.String, com.sleepycat.bind.tuple.TupleOutput)">marshalSecondaryKey</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;keyName,
+<TD><CODE><B>MarshalledTupleKeyEntity.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/MarshalledTupleKeyEntity.html#marshalSecondaryKey(java.lang.String, com.sleepycat.bind.tuple.TupleOutput)">marshalSecondaryKey</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;keyName,
<A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;keyOutput)</CODE>
<BR>
@@ -514,7 +530,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B>TupleTupleMarshalledBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/TupleTupleMarshalledBinding.html#objectToData(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToData</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B>TupleTupleMarshalledBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/TupleTupleMarshalledBinding.html#objectToData(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToData</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;output)</CODE>
<BR>
@@ -523,7 +539,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>abstract &nbsp;void</CODE></FONT></TD>
-<TD><CODE><B>TupleTupleBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/TupleTupleBinding.html#objectToData(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToData</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B>TupleTupleBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/TupleTupleBinding.html#objectToData(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToData</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;output)</CODE>
<BR>
@@ -532,7 +548,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B>TupleMarshalledBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/TupleMarshalledBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B>TupleMarshalledBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/TupleMarshalledBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;output)</CODE>
<BR>
@@ -541,7 +557,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>abstract &nbsp;void</CODE></FONT></TD>
-<TD><CODE><B>TupleBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/TupleBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B>TupleBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/TupleBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;output)</CODE>
<BR>
@@ -550,7 +566,16 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B>StringBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/StringBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B>StringBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/StringBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+ <A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;output)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B>SortedFloatBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/SortedFloatBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;output)</CODE>
<BR>
@@ -559,7 +584,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B>SortedFloatBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/SortedFloatBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B>SortedDoubleBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/SortedDoubleBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;output)</CODE>
<BR>
@@ -568,7 +593,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B>SortedDoubleBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/SortedDoubleBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B>ShortBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/ShortBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;output)</CODE>
<BR>
@@ -577,7 +602,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B>ShortBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/ShortBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B>LongBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/LongBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;output)</CODE>
<BR>
@@ -586,7 +611,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B>LongBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/LongBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B>IntegerBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/IntegerBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;output)</CODE>
<BR>
@@ -595,7 +620,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B>IntegerBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/IntegerBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B>FloatBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/FloatBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;output)</CODE>
<BR>
@@ -604,7 +629,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B>FloatBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/FloatBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B>DoubleBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/DoubleBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;output)</CODE>
<BR>
@@ -613,7 +638,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B>DoubleBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/DoubleBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B>CharacterBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/CharacterBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;output)</CODE>
<BR>
@@ -622,7 +647,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B>CharacterBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/CharacterBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B>ByteBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/ByteBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;output)</CODE>
<BR>
@@ -631,7 +656,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B>ByteBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/ByteBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B>BooleanBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/BooleanBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;output)</CODE>
<BR>
@@ -640,7 +665,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B>BooleanBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/BooleanBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B>BigIntegerBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/BigIntegerBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;output)</CODE>
<BR>
@@ -649,7 +674,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B>TupleTupleMarshalledBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/TupleTupleMarshalledBinding.html#objectToKey(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToKey</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B>TupleTupleMarshalledBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/TupleTupleMarshalledBinding.html#objectToKey(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToKey</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;output)</CODE>
<BR>
@@ -658,7 +683,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>abstract &nbsp;void</CODE></FONT></TD>
-<TD><CODE><B>TupleTupleBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/TupleTupleBinding.html#objectToKey(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToKey</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B>TupleTupleBinding.</B><B><A HREF="../../../../../com/sleepycat/bind/tuple/TupleTupleBinding.html#objectToKey(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)">objectToKey</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>&nbsp;output)</CODE>
<BR>
@@ -716,7 +741,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -746,6 +771,6 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleOutput.html" title
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/tuple/class-use/TupleTupleBinding.html b/db/docs/java/com/sleepycat/bind/tuple/class-use/TupleTupleBinding.html
index 6dd543d9c..fb77a2878 100644
--- a/db/docs/java/com/sleepycat/bind/tuple/class-use/TupleTupleBinding.html
+++ b/db/docs/java/com/sleepycat/bind/tuple/class-use/TupleTupleBinding.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.bind.tuple.TupleTupleBinding (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.bind.tuple.TupleTupleBinding (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.bind.tuple.TupleTupleBinding (Oracle Corporation - B
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.bind.tuple.TupleTupleBinding (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.bind.tuple.TupleTupleBinding (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -143,7 +143,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleTupleBinding.html"
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -173,6 +173,6 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleTupleBinding.html"
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/tuple/class-use/TupleTupleKeyCreator.html b/db/docs/java/com/sleepycat/bind/tuple/class-use/TupleTupleKeyCreator.html
index bcfaeb5b9..5f9274a9e 100644
--- a/db/docs/java/com/sleepycat/bind/tuple/class-use/TupleTupleKeyCreator.html
+++ b/db/docs/java/com/sleepycat/bind/tuple/class-use/TupleTupleKeyCreator.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.bind.tuple.TupleTupleKeyCreator (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.bind.tuple.TupleTupleKeyCreator (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.bind.tuple.TupleTupleKeyCreator (Oracle Corporation
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.bind.tuple.TupleTupleKeyCreator (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.bind.tuple.TupleTupleKeyCreator (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -141,7 +141,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleTupleKeyCreator.ht
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -171,6 +171,6 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleTupleKeyCreator.ht
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/tuple/class-use/TupleTupleMarshalledBinding.html b/db/docs/java/com/sleepycat/bind/tuple/class-use/TupleTupleMarshalledBinding.html
index bee655cc5..46e35c5e2 100644
--- a/db/docs/java/com/sleepycat/bind/tuple/class-use/TupleTupleMarshalledBinding.html
+++ b/db/docs/java/com/sleepycat/bind/tuple/class-use/TupleTupleMarshalledBinding.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.bind.tuple.TupleTupleMarshalledBinding (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.bind.tuple.TupleTupleMarshalledBinding (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.bind.tuple.TupleTupleMarshalledBinding (Oracle Corpo
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.bind.tuple.TupleTupleMarshalledBinding (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.bind.tuple.TupleTupleMarshalledBinding (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -108,7 +108,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleTupleMarshalledBin
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../../com/sleepycat/bind/tuple/TupleTupleMarshalledKeyCreator.html#TupleTupleMarshalledKeyCreator(com.sleepycat.bind.tuple.TupleTupleMarshalledBinding, java.lang.String)">TupleTupleMarshalledKeyCreator</A></B>(<A HREF="../../../../../com/sleepycat/bind/tuple/TupleTupleMarshalledBinding.html" title="class in com.sleepycat.bind.tuple">TupleTupleMarshalledBinding</A>&nbsp;binding,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;keyName)</CODE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;keyName)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a tuple-tuple marshalled key creator.</TD>
@@ -140,7 +140,7 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleTupleMarshalledBin
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -170,6 +170,6 @@ Uses of <A HREF="../../../../../com/sleepycat/bind/tuple/TupleTupleMarshalledBin
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/tuple/class-use/TupleTupleMarshalledKeyCreator.html b/db/docs/java/com/sleepycat/bind/tuple/class-use/TupleTupleMarshalledKeyCreator.html
index 52dcc26c9..2c592d1d9 100644
--- a/db/docs/java/com/sleepycat/bind/tuple/class-use/TupleTupleMarshalledKeyCreator.html
+++ b/db/docs/java/com/sleepycat/bind/tuple/class-use/TupleTupleMarshalledKeyCreator.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.bind.tuple.TupleTupleMarshalledKeyCreator (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.bind.tuple.TupleTupleMarshalledKeyCreator (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.bind.tuple.TupleTupleMarshalledKeyCreator (Oracle Co
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.bind.tuple.TupleTupleMarshalledKeyCreator (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.bind.tuple.TupleTupleMarshalledKeyCreator (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -105,7 +105,7 @@ No usage of com.sleepycat.bind.tuple.TupleTupleMarshalledKeyCreator
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -135,6 +135,6 @@ No usage of com.sleepycat.bind.tuple.TupleTupleMarshalledKeyCreator
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/tuple/package-frame.html b/db/docs/java/com/sleepycat/bind/tuple/package-frame.html
index 816754c39..982c7fdf7 100644
--- a/db/docs/java/com/sleepycat/bind/tuple/package-frame.html
+++ b/db/docs/java/com/sleepycat/bind/tuple/package-frame.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:48 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-com.sleepycat.bind.tuple (Oracle Corporation - Berkeley DB Java API)
+com.sleepycat.bind.tuple (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.bind.tuple package">
@@ -36,6 +36,8 @@ Interfaces</FONT>&nbsp;
Classes</FONT>&nbsp;
<FONT CLASS="FrameItemFont">
<BR>
+<A HREF="BigIntegerBinding.html" title="class in com.sleepycat.bind.tuple" target="classFrame">BigIntegerBinding</A>
+<BR>
<A HREF="BooleanBinding.html" title="class in com.sleepycat.bind.tuple" target="classFrame">BooleanBinding</A>
<BR>
<A HREF="ByteBinding.html" title="class in com.sleepycat.bind.tuple" target="classFrame">ByteBinding</A>
diff --git a/db/docs/java/com/sleepycat/bind/tuple/package-summary.html b/db/docs/java/com/sleepycat/bind/tuple/package-summary.html
index b8ba8cf02..2cd854a0f 100644
--- a/db/docs/java/com/sleepycat/bind/tuple/package-summary.html
+++ b/db/docs/java/com/sleepycat/bind/tuple/package-summary.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:48 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-com.sleepycat.bind.tuple (Oracle Corporation - Berkeley DB Java API)
+com.sleepycat.bind.tuple (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.bind.tuple package">
@@ -14,7 +14,7 @@ com.sleepycat.bind.tuple (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="com.sleepycat.bind.tuple (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="com.sleepycat.bind.tuple (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -112,6 +112,10 @@ Bindings that use sequences of primitive fields, or tuples.
<B>Class Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/sleepycat/bind/tuple/BigIntegerBinding.html" title="class in com.sleepycat.bind.tuple">BigIntegerBinding</A></B></TD>
+<TD>A concrete <code>TupleBinding</code> for a <code>BigInteger</code> value.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
<TD WIDTH="15%"><B><A HREF="../../../../com/sleepycat/bind/tuple/BooleanBinding.html" title="class in com.sleepycat.bind.tuple">BooleanBinding</A></B></TD>
<TD>A concrete <code>TupleBinding</code> for a <code>Boolean</code> primitive
wrapper or a <code>boolean</code> primitive.</TD>
@@ -253,7 +257,7 @@ Bindings that use sequences of primitive fields, or tuples.
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -283,6 +287,6 @@ Bindings that use sequences of primitive fields, or tuples.
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/tuple/package-tree.html b/db/docs/java/com/sleepycat/bind/tuple/package-tree.html
index edcfe2fc2..0b26476fb 100644
--- a/db/docs/java/com/sleepycat/bind/tuple/package-tree.html
+++ b/db/docs/java/com/sleepycat/bind/tuple/package-tree.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:48 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-com.sleepycat.bind.tuple Class Hierarchy (Oracle Corporation - Berkeley DB Java API)
+com.sleepycat.bind.tuple Class Hierarchy (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ com.sleepycat.bind.tuple Class Hierarchy (Oracle Corporation - Berkeley DB Java
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="com.sleepycat.bind.tuple Class Hierarchy (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="com.sleepycat.bind.tuple Class Hierarchy (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -87,13 +87,13 @@ Hierarchy For Package com.sleepycat.bind.tuple
Class Hierarchy
</H2>
<UL>
-<LI TYPE="circle">java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang"><B>Object</B></A><UL>
-<LI TYPE="circle">java.io.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/InputStream.html" title="class or interface in java.io"><B>InputStream</B></A> (implements java.io.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/Closeable.html" title="class or interface in java.io">Closeable</A>)
+<LI TYPE="circle">java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang"><B>Object</B></A><UL>
+<LI TYPE="circle">java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/InputStream.html" title="class or interface in java.io"><B>InputStream</B></A> (implements java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Closeable.html" title="class or interface in java.io">Closeable</A>)
<UL>
<LI TYPE="circle">com.sleepycat.util.<A HREF="../../../../com/sleepycat/util/FastInputStream.html" title="class in com.sleepycat.util"><B>FastInputStream</B></A><UL>
<LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="../../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple"><B>TupleInput</B></A></UL>
</UL>
-<LI TYPE="circle">java.io.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/OutputStream.html" title="class or interface in java.io"><B>OutputStream</B></A> (implements java.io.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/Closeable.html" title="class or interface in java.io">Closeable</A>, java.io.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/Flushable.html" title="class or interface in java.io">Flushable</A>)
+<LI TYPE="circle">java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/OutputStream.html" title="class or interface in java.io"><B>OutputStream</B></A> (implements java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Closeable.html" title="class or interface in java.io">Closeable</A>, java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Flushable.html" title="class or interface in java.io">Flushable</A>)
<UL>
<LI TYPE="circle">com.sleepycat.util.<A HREF="../../../../com/sleepycat/util/FastOutputStream.html" title="class in com.sleepycat.util"><B>FastOutputStream</B></A><UL>
<LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="../../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple"><B>TupleOutput</B></A></UL>
@@ -101,7 +101,7 @@ Class Hierarchy
<LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="../../../../com/sleepycat/bind/tuple/TupleBase.html" title="class in com.sleepycat.bind.tuple"><B>TupleBase</B></A><UL>
<LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html" title="class in com.sleepycat.bind.tuple"><B>TupleBinding</B></A> (implements com.sleepycat.bind.<A HREF="../../../../com/sleepycat/bind/EntryBinding.html" title="interface in com.sleepycat.bind">EntryBinding</A>)
<UL>
-<LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="../../../../com/sleepycat/bind/tuple/BooleanBinding.html" title="class in com.sleepycat.bind.tuple"><B>BooleanBinding</B></A><LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="../../../../com/sleepycat/bind/tuple/ByteBinding.html" title="class in com.sleepycat.bind.tuple"><B>ByteBinding</B></A><LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="../../../../com/sleepycat/bind/tuple/CharacterBinding.html" title="class in com.sleepycat.bind.tuple"><B>CharacterBinding</B></A><LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="../../../../com/sleepycat/bind/tuple/DoubleBinding.html" title="class in com.sleepycat.bind.tuple"><B>DoubleBinding</B></A><LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="../../../../com/sleepycat/bind/tuple/FloatBinding.html" title="class in com.sleepycat.bind.tuple"><B>FloatBinding</B></A><LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="../../../../com/sleepycat/bind/tuple/IntegerBinding.html" title="class in com.sleepycat.bind.tuple"><B>IntegerBinding</B></A><LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="../../../../com/sleepycat/bind/tuple/LongBinding.html" title="class in com.sleepycat.bind.tuple"><B>LongBinding</B></A><LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="../../../../com/sleepycat/bind/tuple/ShortBinding.html" title="class in com.sleepycat.bind.tuple"><B>ShortBinding</B></A><LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="../../../../com/sleepycat/bind/tuple/SortedDoubleBinding.html" title="class in com.sleepycat.bind.tuple"><B>SortedDoubleBinding</B></A><LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="../../../../com/sleepycat/bind/tuple/SortedFloatBinding.html" title="class in com.sleepycat.bind.tuple"><B>SortedFloatBinding</B></A><LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="../../../../com/sleepycat/bind/tuple/StringBinding.html" title="class in com.sleepycat.bind.tuple"><B>StringBinding</B></A><LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="../../../../com/sleepycat/bind/tuple/TupleMarshalledBinding.html" title="class in com.sleepycat.bind.tuple"><B>TupleMarshalledBinding</B></A></UL>
+<LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="../../../../com/sleepycat/bind/tuple/BigIntegerBinding.html" title="class in com.sleepycat.bind.tuple"><B>BigIntegerBinding</B></A><LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="../../../../com/sleepycat/bind/tuple/BooleanBinding.html" title="class in com.sleepycat.bind.tuple"><B>BooleanBinding</B></A><LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="../../../../com/sleepycat/bind/tuple/ByteBinding.html" title="class in com.sleepycat.bind.tuple"><B>ByteBinding</B></A><LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="../../../../com/sleepycat/bind/tuple/CharacterBinding.html" title="class in com.sleepycat.bind.tuple"><B>CharacterBinding</B></A><LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="../../../../com/sleepycat/bind/tuple/DoubleBinding.html" title="class in com.sleepycat.bind.tuple"><B>DoubleBinding</B></A><LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="../../../../com/sleepycat/bind/tuple/FloatBinding.html" title="class in com.sleepycat.bind.tuple"><B>FloatBinding</B></A><LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="../../../../com/sleepycat/bind/tuple/IntegerBinding.html" title="class in com.sleepycat.bind.tuple"><B>IntegerBinding</B></A><LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="../../../../com/sleepycat/bind/tuple/LongBinding.html" title="class in com.sleepycat.bind.tuple"><B>LongBinding</B></A><LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="../../../../com/sleepycat/bind/tuple/ShortBinding.html" title="class in com.sleepycat.bind.tuple"><B>ShortBinding</B></A><LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="../../../../com/sleepycat/bind/tuple/SortedDoubleBinding.html" title="class in com.sleepycat.bind.tuple"><B>SortedDoubleBinding</B></A><LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="../../../../com/sleepycat/bind/tuple/SortedFloatBinding.html" title="class in com.sleepycat.bind.tuple"><B>SortedFloatBinding</B></A><LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="../../../../com/sleepycat/bind/tuple/StringBinding.html" title="class in com.sleepycat.bind.tuple"><B>StringBinding</B></A><LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="../../../../com/sleepycat/bind/tuple/TupleMarshalledBinding.html" title="class in com.sleepycat.bind.tuple"><B>TupleMarshalledBinding</B></A></UL>
<LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="../../../../com/sleepycat/bind/tuple/TupleTupleBinding.html" title="class in com.sleepycat.bind.tuple"><B>TupleTupleBinding</B></A> (implements com.sleepycat.bind.<A HREF="../../../../com/sleepycat/bind/EntityBinding.html" title="interface in com.sleepycat.bind">EntityBinding</A>)
<UL>
<LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="../../../../com/sleepycat/bind/tuple/TupleTupleMarshalledBinding.html" title="class in com.sleepycat.bind.tuple"><B>TupleTupleMarshalledBinding</B></A></UL>
@@ -141,7 +141,7 @@ Interface Hierarchy
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -171,6 +171,6 @@ Interface Hierarchy
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/bind/tuple/package-use.html b/db/docs/java/com/sleepycat/bind/tuple/package-use.html
index e12369201..223a0b991 100644
--- a/db/docs/java/com/sleepycat/bind/tuple/package-use.html
+++ b/db/docs/java/com/sleepycat/bind/tuple/package-use.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:57:00 EDT 2007 -->
<TITLE>
-Uses of Package com.sleepycat.bind.tuple (Oracle Corporation - Berkeley DB Java API)
+Uses of Package com.sleepycat.bind.tuple (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Package com.sleepycat.bind.tuple (Oracle Corporation - Berkeley DB Java
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Package com.sleepycat.bind.tuple (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Package com.sleepycat.bind.tuple (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -208,7 +208,7 @@ Classes in <A HREF="../../../../com/sleepycat/bind/tuple/package-summary.html">c
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -238,6 +238,6 @@ Classes in <A HREF="../../../../com/sleepycat/bind/tuple/package-summary.html">c
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/collections/CurrentTransaction.html b/db/docs/java/com/sleepycat/collections/CurrentTransaction.html
index be2d8571f..473286cd8 100644
--- a/db/docs/java/com/sleepycat/collections/CurrentTransaction.html
+++ b/db/docs/java/com/sleepycat/collections/CurrentTransaction.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:47 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-CurrentTransaction (Oracle Corporation - Berkeley DB Java API)
+CurrentTransaction (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.collections.CurrentTransaction class">
@@ -14,7 +14,7 @@ CurrentTransaction (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="CurrentTransaction (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="CurrentTransaction (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,12 +89,12 @@ com.sleepycat.collections</FONT>
<BR>
Class CurrentTransaction</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.collections.CurrentTransaction</B>
</PRE>
<HR>
<DL>
-<DT><PRE>public class <B>CurrentTransaction</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
+<DT><PRE>public class <B>CurrentTransaction</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
</PRE>
<P>
@@ -177,10 +177,10 @@ Provides access to the current transaction for the current thread within the
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -258,7 +258,7 @@ public final <A HREF="../../../com/sleepycat/db/Transaction.html" title="class i
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if the transaction cannot be started, in which
case any existing transaction is not affected.
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalStateException.html" title="class or interface in java.lang">IllegalStateException</A></CODE> - if a transaction is already active and
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalStateException.html" title="class or interface in java.lang">IllegalStateException</A></CODE> - if a transaction is already active and
nested transactions are not supported by the environment.</DL>
</DD>
</DL>
@@ -269,7 +269,7 @@ commitTransaction</H3>
<PRE>
public final <A HREF="../../../com/sleepycat/db/Transaction.html" title="class in com.sleepycat.db">Transaction</A> <B>commitTransaction</B>()
throws <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A>,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalStateException.html" title="class or interface in java.lang">IllegalStateException</A></PRE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalStateException.html" title="class or interface in java.lang">IllegalStateException</A></PRE>
<DL>
<DD>Commits the transaction that is active for the current thread for this
environment and makes the parent transaction (if any) the current
@@ -283,7 +283,7 @@ public final <A HREF="../../../com/sleepycat/db/Transaction.html" title="class i
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if an error occurs committing the transaction.
The transaction will still be closed and the parent transaction will
become the current transaction.
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalStateException.html" title="class or interface in java.lang">IllegalStateException</A></CODE> - if no transaction is active for the
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalStateException.html" title="class or interface in java.lang">IllegalStateException</A></CODE> - if no transaction is active for the
current thread for this environment.</DL>
</DD>
</DL>
@@ -294,7 +294,7 @@ abortTransaction</H3>
<PRE>
public final <A HREF="../../../com/sleepycat/db/Transaction.html" title="class in com.sleepycat.db">Transaction</A> <B>abortTransaction</B>()
throws <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A>,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalStateException.html" title="class or interface in java.lang">IllegalStateException</A></PRE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalStateException.html" title="class or interface in java.lang">IllegalStateException</A></PRE>
<DL>
<DD>Aborts the transaction that is active for the current thread for this
environment and makes the parent transaction (if any) the current
@@ -308,7 +308,7 @@ public final <A HREF="../../../com/sleepycat/db/Transaction.html" title="class i
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if an error occurs aborting the transaction.
The transaction will still be closed and the parent transaction will
become the current transaction.
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalStateException.html" title="class or interface in java.lang">IllegalStateException</A></CODE> - if no transaction is active for the
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalStateException.html" title="class or interface in java.lang">IllegalStateException</A></CODE> - if no transaction is active for the
current thread for this environment.</DL>
</DD>
</DL>
@@ -337,7 +337,7 @@ public final <A HREF="../../../com/sleepycat/db/Transaction.html" title="class i
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -373,6 +373,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHO
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/collections/MapEntryParameter.html b/db/docs/java/com/sleepycat/collections/MapEntryParameter.html
index b5878d1c4..2c6b88e17 100644
--- a/db/docs/java/com/sleepycat/collections/MapEntryParameter.html
+++ b/db/docs/java/com/sleepycat/collections/MapEntryParameter.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:47 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-MapEntryParameter (Oracle Corporation - Berkeley DB Java API)
+MapEntryParameter (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.collections.MapEntryParameter class">
@@ -14,7 +14,7 @@ MapEntryParameter (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="MapEntryParameter (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="MapEntryParameter (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,15 +89,15 @@ com.sleepycat.collections</FONT>
<BR>
Class MapEntryParameter</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.collections.MapEntryParameter</B>
</PRE>
<DL>
-<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.Entry.html" title="class or interface in java.util">Map.Entry</A></DD>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.Entry.html" title="class or interface in java.util">Map.Entry</A></DD>
</DL>
<HR>
<DL>
-<DT><PRE>public class <B>MapEntryParameter</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A><DT>implements <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.Entry.html" title="class or interface in java.util">Map.Entry</A></DL>
+<DT><PRE>public class <B>MapEntryParameter</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A><DT>implements <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.Entry.html" title="class or interface in java.util">Map.Entry</A></DL>
</PRE>
<P>
@@ -129,8 +129,8 @@ A simple <code>Map.Entry</code> implementation that can be used as in
<B>Constructor Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/MapEntryParameter.html#MapEntryParameter(java.lang.Object, java.lang.Object)">MapEntryParameter</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;key,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/MapEntryParameter.html#MapEntryParameter(java.lang.Object, java.lang.Object)">MapEntryParameter</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;key,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a map entry with a given key and value.</TD>
@@ -148,14 +148,14 @@ A simple <code>Map.Entry</code> implementation that can be used as in
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/MapEntryParameter.html#equals(java.lang.Object)">equals</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;other)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/MapEntryParameter.html#equals(java.lang.Object)">equals</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;other)</CODE>
<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compares this entry to a given entry as specified by <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.Entry.html#equals(java.lang.Object)" title="class or interface in java.util"><CODE>Map.Entry.equals(java.lang.Object)</CODE></A>.</TD>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compares this entry to a given entry as specified by <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.Entry.html#equals(java.lang.Object)" title="class or interface in java.util"><CODE>Map.Entry.equals(java.lang.Object)</CODE></A>.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/collections/MapEntryParameter.html#getKey()">getKey</A></B>()</CODE>
<BR>
@@ -163,7 +163,7 @@ A simple <code>Map.Entry</code> implementation that can be used as in
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/collections/MapEntryParameter.html#getValue()">getValue</A></B>()</CODE>
<BR>
@@ -175,12 +175,12 @@ A simple <code>Map.Entry</code> implementation that can be used as in
<TD><CODE><B><A HREF="../../../com/sleepycat/collections/MapEntryParameter.html#hashCode()">hashCode</A></B>()</CODE>
<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes a hash code as specified by <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.Entry.html#hashCode()" title="class or interface in java.util"><CODE>Map.Entry.hashCode()</CODE></A>.</TD>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes a hash code as specified by <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.Entry.html#hashCode()" title="class or interface in java.util"><CODE>Map.Entry.hashCode()</CODE></A>.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/MapEntryParameter.html#setValue(java.lang.Object)">setValue</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;newValue)</CODE>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/MapEntryParameter.html#setValue(java.lang.Object)">setValue</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;newValue)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Always throws <code>UnsupportedOperationException</code> since this
@@ -188,7 +188,7 @@ A simple <code>Map.Entry</code> implementation that can be used as in
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/collections/MapEntryParameter.html#toString()">toString</A></B>()</CODE>
<BR>
@@ -198,10 +198,10 @@ A simple <code>Map.Entry</code> implementation that can be used as in
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -220,8 +220,8 @@ A simple <code>Map.Entry</code> implementation that can be used as in
<A NAME="MapEntryParameter(java.lang.Object, java.lang.Object)"><!-- --></A><H3>
MapEntryParameter</H3>
<PRE>
-public <B>MapEntryParameter</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;key,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</PRE>
+public <B>MapEntryParameter</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;key,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</PRE>
<DL>
<DD>Creates a map entry with a given key and value.
<P>
@@ -244,10 +244,10 @@ hashCode</H3>
<PRE>
public int <B>hashCode</B>()</PRE>
<DL>
-<DD>Computes a hash code as specified by <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.Entry.html#hashCode()" title="class or interface in java.util"><CODE>Map.Entry.hashCode()</CODE></A>.
+<DD>Computes a hash code as specified by <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.Entry.html#hashCode()" title="class or interface in java.util"><CODE>Map.Entry.hashCode()</CODE></A>.
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.Entry.html#hashCode()" title="class or interface in java.util">hashCode</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.Entry.html" title="class or interface in java.util">Map.Entry</A></CODE><DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.Entry.html#hashCode()" title="class or interface in java.util">hashCode</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.Entry.html" title="class or interface in java.util">Map.Entry</A></CODE><DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
</DD>
<DD><DL>
@@ -259,12 +259,12 @@ public int <B>hashCode</B>()</PRE>
<A NAME="equals(java.lang.Object)"><!-- --></A><H3>
equals</H3>
<PRE>
-public boolean <B>equals</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;other)</PRE>
+public boolean <B>equals</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;other)</PRE>
<DL>
-<DD>Compares this entry to a given entry as specified by <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.Entry.html#equals(java.lang.Object)" title="class or interface in java.util"><CODE>Map.Entry.equals(java.lang.Object)</CODE></A>.
+<DD>Compares this entry to a given entry as specified by <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.Entry.html#equals(java.lang.Object)" title="class or interface in java.util"><CODE>Map.Entry.equals(java.lang.Object)</CODE></A>.
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.Entry.html#equals(java.lang.Object)" title="class or interface in java.util">equals</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.Entry.html" title="class or interface in java.util">Map.Entry</A></CODE><DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.Entry.html#equals(java.lang.Object)" title="class or interface in java.util">equals</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.Entry.html" title="class or interface in java.util">Map.Entry</A></CODE><DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
</DD>
<DD><DL>
@@ -276,12 +276,12 @@ public boolean <B>equals</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java
<A NAME="getKey()"><!-- --></A><H3>
getKey</H3>
<PRE>
-public final <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>getKey</B>()</PRE>
+public final <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>getKey</B>()</PRE>
<DL>
<DD>Returns the key of this entry.
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.Entry.html#getKey()" title="class or interface in java.util">getKey</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.Entry.html" title="class or interface in java.util">Map.Entry</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.Entry.html#getKey()" title="class or interface in java.util">getKey</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.Entry.html" title="class or interface in java.util">Map.Entry</A></CODE></DL>
</DD>
<DD><DL>
@@ -293,14 +293,14 @@ public final <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.htm
<A NAME="getValue()"><!-- --></A><H3>
getValue</H3>
<PRE>
-public final <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>getValue</B>()</PRE>
+public final <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>getValue</B>()</PRE>
<DL>
<DD>Returns the value of this entry. Note that this will be the value
passed to the constructor or the last value passed to <A HREF="../../../com/sleepycat/collections/MapEntryParameter.html#setValue(java.lang.Object)"><CODE>setValue(java.lang.Object)</CODE></A>.
It will not reflect changes made to a Map.
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.Entry.html#getValue()" title="class or interface in java.util">getValue</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.Entry.html" title="class or interface in java.util">Map.Entry</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.Entry.html#getValue()" title="class or interface in java.util">getValue</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.Entry.html" title="class or interface in java.util">Map.Entry</A></CODE></DL>
</DD>
<DD><DL>
@@ -312,13 +312,13 @@ public final <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.htm
<A NAME="setValue(java.lang.Object)"><!-- --></A><H3>
setValue</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>setValue</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;newValue)</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>setValue</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;newValue)</PRE>
<DL>
<DD>Always throws <code>UnsupportedOperationException</code> since this
object is not attached to a map.
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.Entry.html#setValue(java.lang.Object)" title="class or interface in java.util">setValue</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.Entry.html" title="class or interface in java.util">Map.Entry</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.Entry.html#setValue(java.lang.Object)" title="class or interface in java.util">setValue</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.Entry.html" title="class or interface in java.util">Map.Entry</A></CODE></DL>
</DD>
<DD><DL>
</DL>
@@ -329,12 +329,12 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" tit
<A NAME="toString()"><!-- --></A><H3>
toString</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
<DL>
<DD>Converts the entry to a string representation for debugging.
<P>
<DD><DL>
-<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
</DD>
<DD><DL>
@@ -366,7 +366,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" tit
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -402,6 +402,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&n
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/collections/PrimaryKeyAssigner.html b/db/docs/java/com/sleepycat/collections/PrimaryKeyAssigner.html
index 39644ee0e..0e05a8477 100644
--- a/db/docs/java/com/sleepycat/collections/PrimaryKeyAssigner.html
+++ b/db/docs/java/com/sleepycat/collections/PrimaryKeyAssigner.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:47 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-PrimaryKeyAssigner (Oracle Corporation - Berkeley DB Java API)
+PrimaryKeyAssigner (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.collections.PrimaryKeyAssigner interface">
@@ -14,7 +14,7 @@ PrimaryKeyAssigner (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="PrimaryKeyAssigner (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="PrimaryKeyAssigner (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -174,7 +174,7 @@ void <B>assignKey</B>(<A HREF="../../../com/sleepycat/db/DatabaseEntry.html" tit
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -210,6 +210,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHO
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/collections/StoredCollection.html b/db/docs/java/com/sleepycat/collections/StoredCollection.html
index 57957d8bd..5fad40ee8 100644
--- a/db/docs/java/com/sleepycat/collections/StoredCollection.html
+++ b/db/docs/java/com/sleepycat/collections/StoredCollection.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:47 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-StoredCollection (Oracle Corporation - Berkeley DB Java API)
+StoredCollection (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.collections.StoredCollection class">
@@ -14,7 +14,7 @@ StoredCollection (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="StoredCollection (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="StoredCollection (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,26 +89,26 @@ com.sleepycat.collections</FONT>
<BR>
Class StoredCollection</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../com/sleepycat/collections/StoredContainer.html" title="class in com.sleepycat.collections">com.sleepycat.collections.StoredContainer</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.collections.StoredCollection</B>
</PRE>
<DL>
-<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Iterable.html" title="class or interface in java.lang">Iterable</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></DD>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Iterable.html" title="class or interface in java.lang">Iterable</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></DD>
</DL>
<DL>
<DT><B>Direct Known Subclasses:</B> <DD><A HREF="../../../com/sleepycat/collections/StoredEntrySet.html" title="class in com.sleepycat.collections">StoredEntrySet</A>, <A HREF="../../../com/sleepycat/collections/StoredKeySet.html" title="class in com.sleepycat.collections">StoredKeySet</A>, <A HREF="../../../com/sleepycat/collections/StoredList.html" title="class in com.sleepycat.collections">StoredList</A>, <A HREF="../../../com/sleepycat/collections/StoredValueSet.html" title="class in com.sleepycat.collections">StoredValueSet</A></DD>
</DL>
<HR>
<DL>
-<DT><PRE>public abstract class <B>StoredCollection</B><DT>extends <A HREF="../../../com/sleepycat/collections/StoredContainer.html" title="class in com.sleepycat.collections">StoredContainer</A><DT>implements <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></DL>
+<DT><PRE>public abstract class <B>StoredCollection</B><DT>extends <A HREF="../../../com/sleepycat/collections/StoredContainer.html" title="class in com.sleepycat.collections">StoredContainer</A><DT>implements <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></DL>
</PRE>
<P>
A abstract base class for all stored collections. This class, and its
base class <A HREF="../../../com/sleepycat/collections/StoredContainer.html" title="class in com.sleepycat.collections"><CODE>StoredContainer</CODE></A>, provide implementations of most methods
- in the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util"><CODE>Collection</CODE></A> interface. Other methods, such as <A HREF="../../../com/sleepycat/collections/StoredCollection.html#add(java.lang.Object, java.lang.Object)"><CODE>add(java.lang.Object, java.lang.Object)</CODE></A>
- and <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html#remove(java.lang.Object)" title="class or interface in java.util"><CODE>Collection.remove(java.lang.Object)</CODE></A>, are provided by concrete classes that extend this
+ in the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util"><CODE>Collection</CODE></A> interface. Other methods, such as <A HREF="../../../com/sleepycat/collections/StoredCollection.html#add(java.lang.Object, java.lang.Object)"><CODE>add(java.lang.Object, java.lang.Object)</CODE></A>
+ and <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html#remove(java.lang.Object)" title="class or interface in java.util"><CODE>Collection.remove(java.lang.Object)</CODE></A>, are provided by concrete classes that extend this
class.
<p>In addition, this class provides the following methods for stored
@@ -157,7 +157,7 @@ A abstract base class for all stored collections. This class, and its
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredCollection.html#addAll(java.util.Collection)">addAll</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>&nbsp;coll)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredCollection.html#addAll(java.util.Collection)">addAll</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>&nbsp;coll)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Adds all of the elements in the specified collection to this collection
@@ -166,7 +166,7 @@ A abstract base class for all stored collections. This class, and its
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredCollection.html#containsAll(java.util.Collection)">containsAll</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>&nbsp;coll)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredCollection.html#containsAll(java.util.Collection)">containsAll</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>&nbsp;coll)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns true if this collection contains all of the elements in the
@@ -175,7 +175,7 @@ A abstract base class for all stored collections. This class, and its
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredCollection.html#equals(java.lang.Object)">equals</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;other)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredCollection.html#equals(java.lang.Object)">equals</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;other)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compares the specified object with this collection for equality.</TD>
@@ -199,7 +199,7 @@ A abstract base class for all stored collections. This class, and its
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Iterator.html" title="class or interface in java.util">Iterator</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Iterator.html" title="class or interface in java.util">Iterator</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredCollection.html#iterator()">iterator</A></B>()</CODE>
<BR>
@@ -219,7 +219,7 @@ A abstract base class for all stored collections. This class, and its
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../com/sleepycat/collections/StoredIterator.html" title="class in com.sleepycat.collections">StoredIterator</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredCollection.html#join(com.sleepycat.collections.StoredContainer[], java.lang.Object[], com.sleepycat.db.JoinConfig)">join</A></B>(<A HREF="../../../com/sleepycat/collections/StoredContainer.html" title="class in com.sleepycat.collections">StoredContainer</A>[]&nbsp;indices,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>[]&nbsp;indexKeys,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>[]&nbsp;indexKeys,
<A HREF="../../../com/sleepycat/db/JoinConfig.html" title="class in com.sleepycat.db">JoinConfig</A>&nbsp;joinConfig)</CODE>
<BR>
@@ -229,7 +229,7 @@ A abstract base class for all stored collections. This class, and its
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredCollection.html#removeAll(java.util.Collection)">removeAll</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>&nbsp;coll)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredCollection.html#removeAll(java.util.Collection)">removeAll</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>&nbsp;coll)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Removes all this collection's elements that are also contained in the
@@ -238,7 +238,7 @@ A abstract base class for all stored collections. This class, and its
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredCollection.html#retainAll(java.util.Collection)">retainAll</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>&nbsp;coll)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredCollection.html#retainAll(java.util.Collection)">retainAll</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>&nbsp;coll)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Retains only the elements in this collection that are contained in the
@@ -259,7 +259,8 @@ A abstract base class for all stored collections. This class, and its
<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredCollection.html#size()">size</A></B>()</CODE>
<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the number of records in the collection or map.</TD>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a non-transactional count of the records in the collection or
+ map.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
@@ -280,7 +281,7 @@ A abstract base class for all stored collections. This class, and its
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>[]</CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>[]</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredCollection.html#toArray()">toArray</A></B>()</CODE>
<BR>
@@ -288,8 +289,8 @@ A abstract base class for all stored collections. This class, and its
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>[]</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredCollection.html#toArray(java.lang.Object[])">toArray</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>[]&nbsp;a)</CODE>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredCollection.html#toArray(java.lang.Object[])">toArray</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>[]&nbsp;a)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns an array of all the elements in this collection whose runtime
@@ -297,7 +298,7 @@ A abstract base class for all stored collections. This class, and its
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html" title="class or interface in java.util">List</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" title="class or interface in java.util">List</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredCollection.html#toList()">toList</A></B>()</CODE>
<BR>
@@ -305,7 +306,7 @@ A abstract base class for all stored collections. This class, and its
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredCollection.html#toString()">toString</A></B>()</CODE>
<BR>
@@ -324,19 +325,19 @@ A abstract base class for all stored collections. This class, and its
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.util.Collection"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from interface java.util.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from interface java.util.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html#add(java.lang.Object)" title="class or interface in java.util">add</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html#clear()" title="class or interface in java.util">clear</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html#contains(java.lang.Object)" title="class or interface in java.util">contains</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html#isEmpty()" title="class or interface in java.util">isEmpty</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html#remove(java.lang.Object)" title="class or interface in java.util">remove</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html#add(java.lang.Object)" title="class or interface in java.util">add</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html#clear()" title="class or interface in java.util">clear</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html#contains(java.lang.Object)" title="class or interface in java.util">contains</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html#isEmpty()" title="class or interface in java.util">isEmpty</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html#remove(java.lang.Object)" title="class or interface in java.util">remove</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -405,7 +406,7 @@ public void <B>setIteratorBlockSize</B>(int&nbsp;blockSize)</PRE>
<DD><DL>
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if the blockSize is less than two.</DL>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if the blockSize is less than two.</DL>
</DD>
</DL>
<HR>
@@ -413,11 +414,11 @@ public void <B>setIteratorBlockSize</B>(int&nbsp;blockSize)</PRE>
<A NAME="iterator()"><!-- --></A><H3>
iterator</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Iterator.html" title="class or interface in java.util">Iterator</A> <B>iterator</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Iterator.html" title="class or interface in java.util">Iterator</A> <B>iterator</B>()</PRE>
<DL>
<DD>Returns an iterator over the elements in this collection.
The iterator will be read-only if the collection is read-only.
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html#iterator()" title="class or interface in java.util"><CODE>Collection.iterator()</CODE></A> interface.
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html#iterator()" title="class or interface in java.util"><CODE>Collection.iterator()</CODE></A> interface.
<p>The iterator returned by this method does not keep a database cursor
open and therefore it does not need to be closed. It reads blocks of
@@ -433,11 +434,11 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Iterator.html" t
use the <A HREF="../../../com/sleepycat/collections/StoredCollection.html#storedIterator()"><CODE>storedIterator()</CODE></A> method instead.</p>
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Iterable.html#iterator()" title="class or interface in java.lang">iterator</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Iterable.html" title="class or interface in java.lang">Iterable</A></CODE><DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html#iterator()" title="class or interface in java.util">iterator</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Iterable.html#iterator()" title="class or interface in java.lang">iterator</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Iterable.html" title="class or interface in java.lang">Iterable</A></CODE><DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html#iterator()" title="class or interface in java.util">iterator</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE></DL>
</DD>
<DD><DL>
-<DT><B>Returns:</B><DD>a standard <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Iterator.html" title="class or interface in java.util"><CODE>Iterator</CODE></A> for this collection.<DT><B>See Also:</B><DD><A HREF="../../../com/sleepycat/collections/StoredContainer.html#isWriteAllowed()"><CODE>StoredContainer.isWriteAllowed()</CODE></A></DL>
+<DT><B>Returns:</B><DD>a standard <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Iterator.html" title="class or interface in java.util"><CODE>Iterator</CODE></A> for this collection.<DT><B>See Also:</B><DD><A HREF="../../../com/sleepycat/collections/StoredContainer.html#isWriteAllowed()"><CODE>StoredContainer.isWriteAllowed()</CODE></A></DL>
</DD>
</DL>
<HR>
@@ -449,7 +450,12 @@ public <A HREF="../../../com/sleepycat/collections/StoredIterator.html" title="c
<DL>
<DD>Returns an iterator over the elements in this collection.
The iterator will be read-only if the collection is read-only.
- This method does not exist in the standard <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util"><CODE>Collection</CODE></A> interface.
+ This method does not exist in the standard <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util"><CODE>Collection</CODE></A> interface.
+
+ <p>If <code>Iterater.set</code> or <code>Iterator.remove</code> will be called
+ and the underlying Database is transactional, then a transaction must be
+ active when calling this method and must remain active while using the
+ iterator.</p>
<p><strong>Warning:</strong> The iterator returned must be explicitly
closed using <A HREF="../../../com/sleepycat/collections/StoredIterator.html#close()"><CODE>StoredIterator.close()</CODE></A> or <A HREF="../../../com/sleepycat/collections/StoredIterator.html#close(java.util.Iterator)"><CODE>StoredIterator.close(java.util.Iterator)</CODE></A> to release the underlying
@@ -472,7 +478,12 @@ public <A HREF="../../../com/sleepycat/collections/StoredIterator.html" title="c
<DL>
<DD>Returns a read or read-write iterator over the elements in this
collection.
- This method does not exist in the standard <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util"><CODE>Collection</CODE></A> interface.
+ This method does not exist in the standard <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util"><CODE>Collection</CODE></A> interface.
+
+ <p>If <code>Iterater.set</code> or <code>Iterator.remove</code> will be called
+ and the underlying Database is transactional, then a transaction must be
+ active when calling this method and must remain active while using the
+ iterator.</p>
<p><strong>Warning:</strong> The iterator returned must be explicitly
closed using <A HREF="../../../com/sleepycat/collections/StoredIterator.html#close()"><CODE>StoredIterator.close()</CODE></A> or <A HREF="../../../com/sleepycat/collections/StoredIterator.html#close(java.util.Iterator)"><CODE>StoredIterator.close(java.util.Iterator)</CODE></A> to release the underlying
@@ -487,7 +498,7 @@ public <A HREF="../../../com/sleepycat/collections/StoredIterator.html" title="c
will always be read-only.
<DT><B>Returns:</B><DD>a <A HREF="../../../com/sleepycat/collections/StoredIterator.html" title="class in com.sleepycat.collections"><CODE>StoredIterator</CODE></A> for this collection.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalStateException.html" title="class or interface in java.lang">IllegalStateException</A></CODE> - if writeAllowed is true but the collection
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalStateException.html" title="class or interface in java.lang">IllegalStateException</A></CODE> - if writeAllowed is true but the collection
is read-only.
<DD><CODE>RuntimeExceptionWrapper</CODE> - if a <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db"><CODE>DatabaseException</CODE></A> is
thrown.<DT><B>See Also:</B><DD><A HREF="../../../com/sleepycat/collections/StoredContainer.html#isWriteAllowed()"><CODE>StoredContainer.isWriteAllowed()</CODE></A></DL>
@@ -516,13 +527,13 @@ public <A HREF="../../../com/sleepycat/collections/StoredIterator.html" title="c
<A NAME="toArray()"><!-- --></A><H3>
toArray</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>[] <B>toArray</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>[] <B>toArray</B>()</PRE>
<DL>
<DD>Returns an array of all the elements in this collection.
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html#toArray()" title="class or interface in java.util"><CODE>Collection.toArray()</CODE></A> interface.
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html#toArray()" title="class or interface in java.util"><CODE>Collection.toArray()</CODE></A> interface.
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html#toArray()" title="class or interface in java.util">toArray</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html#toArray()" title="class or interface in java.util">toArray</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE></DL>
</DD>
<DD><DL>
@@ -536,15 +547,15 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" tit
<A NAME="toArray(java.lang.Object[])"><!-- --></A><H3>
toArray</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>[] <B>toArray</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>[]&nbsp;a)</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>[] <B>toArray</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>[]&nbsp;a)</PRE>
<DL>
<DD>Returns an array of all the elements in this collection whose runtime
type is that of the specified array.
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html#toArray(java.lang.Object[])" title="class or interface in java.util"><CODE>Collection.toArray(Object[])</CODE></A>
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html#toArray(java.lang.Object[])" title="class or interface in java.util"><CODE>Collection.toArray(Object[])</CODE></A>
interface.
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html#toArray(java.lang.Object[])" title="class or interface in java.util">toArray</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html#toArray(java.lang.Object[])" title="class or interface in java.util">toArray</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE></DL>
</DD>
<DD><DL>
@@ -558,14 +569,14 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" tit
<A NAME="containsAll(java.util.Collection)"><!-- --></A><H3>
containsAll</H3>
<PRE>
-public boolean <B>containsAll</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>&nbsp;coll)</PRE>
+public boolean <B>containsAll</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>&nbsp;coll)</PRE>
<DL>
<DD>Returns true if this collection contains all of the elements in the
specified collection.
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html#containsAll(java.util.Collection)" title="class or interface in java.util"><CODE>Collection.containsAll(java.util.Collection)</CODE></A> interface.
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html#containsAll(java.util.Collection)" title="class or interface in java.util"><CODE>Collection.containsAll(java.util.Collection)</CODE></A> interface.
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html#containsAll(java.util.Collection)" title="class or interface in java.util">containsAll</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html#containsAll(java.util.Collection)" title="class or interface in java.util">containsAll</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE></DL>
</DD>
<DD><DL>
@@ -579,21 +590,21 @@ public boolean <B>containsAll</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api
<A NAME="addAll(java.util.Collection)"><!-- --></A><H3>
addAll</H3>
<PRE>
-public boolean <B>addAll</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>&nbsp;coll)</PRE>
+public boolean <B>addAll</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>&nbsp;coll)</PRE>
<DL>
<DD>Adds all of the elements in the specified collection to this collection
(optional operation).
- This method calls the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html#add(java.lang.Object)" title="class or interface in java.util"><CODE>Collection.add(Object)</CODE></A> method of the concrete
+ This method calls the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html#add(java.lang.Object)" title="class or interface in java.util"><CODE>Collection.add(Object)</CODE></A> method of the concrete
collection class, which may or may not be supported.
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html#addAll(java.util.Collection)" title="class or interface in java.util"><CODE>Collection.addAll(java.util.Collection)</CODE></A> interface.
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html#addAll(java.util.Collection)" title="class or interface in java.util"><CODE>Collection.addAll(java.util.Collection)</CODE></A> interface.
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html#addAll(java.util.Collection)" title="class or interface in java.util">addAll</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html#addAll(java.util.Collection)" title="class or interface in java.util">addAll</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/UnsupportedOperationException.html" title="class or interface in java.lang">UnsupportedOperationException</A></CODE> - if the collection is read-only, or
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/UnsupportedOperationException.html" title="class or interface in java.lang">UnsupportedOperationException</A></CODE> - if the collection is read-only, or
if the collection is indexed, or if the add method is not supported by
the concrete collection.
<DD><CODE>RuntimeExceptionWrapper</CODE> - if a <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db"><CODE>DatabaseException</CODE></A> is
@@ -605,19 +616,19 @@ public boolean <B>addAll</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java
<A NAME="removeAll(java.util.Collection)"><!-- --></A><H3>
removeAll</H3>
<PRE>
-public boolean <B>removeAll</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>&nbsp;coll)</PRE>
+public boolean <B>removeAll</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>&nbsp;coll)</PRE>
<DL>
<DD>Removes all this collection's elements that are also contained in the
specified collection (optional operation).
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html#removeAll(java.util.Collection)" title="class or interface in java.util"><CODE>Collection.removeAll(java.util.Collection)</CODE></A> interface.
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html#removeAll(java.util.Collection)" title="class or interface in java.util"><CODE>Collection.removeAll(java.util.Collection)</CODE></A> interface.
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html#removeAll(java.util.Collection)" title="class or interface in java.util">removeAll</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html#removeAll(java.util.Collection)" title="class or interface in java.util">removeAll</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/UnsupportedOperationException.html" title="class or interface in java.lang">UnsupportedOperationException</A></CODE> - if the collection is read-only.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/UnsupportedOperationException.html" title="class or interface in java.lang">UnsupportedOperationException</A></CODE> - if the collection is read-only.
<DD><CODE>RuntimeExceptionWrapper</CODE> - if a <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db"><CODE>DatabaseException</CODE></A> is
thrown.</DL>
</DD>
@@ -627,19 +638,19 @@ public boolean <B>removeAll</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/j
<A NAME="retainAll(java.util.Collection)"><!-- --></A><H3>
retainAll</H3>
<PRE>
-public boolean <B>retainAll</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>&nbsp;coll)</PRE>
+public boolean <B>retainAll</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>&nbsp;coll)</PRE>
<DL>
<DD>Retains only the elements in this collection that are contained in the
specified collection (optional operation).
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html#removeAll(java.util.Collection)" title="class or interface in java.util"><CODE>Collection.removeAll(java.util.Collection)</CODE></A> interface.
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html#removeAll(java.util.Collection)" title="class or interface in java.util"><CODE>Collection.removeAll(java.util.Collection)</CODE></A> interface.
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html#retainAll(java.util.Collection)" title="class or interface in java.util">retainAll</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html#retainAll(java.util.Collection)" title="class or interface in java.util">retainAll</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/UnsupportedOperationException.html" title="class or interface in java.lang">UnsupportedOperationException</A></CODE> - if the collection is read-only.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/UnsupportedOperationException.html" title="class or interface in java.lang">UnsupportedOperationException</A></CODE> - if the collection is read-only.
<DD><CODE>RuntimeExceptionWrapper</CODE> - if a <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db"><CODE>DatabaseException</CODE></A> is
thrown.</DL>
</DD>
@@ -649,15 +660,15 @@ public boolean <B>retainAll</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/j
<A NAME="equals(java.lang.Object)"><!-- --></A><H3>
equals</H3>
<PRE>
-public boolean <B>equals</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;other)</PRE>
+public boolean <B>equals</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;other)</PRE>
<DL>
<DD>Compares the specified object with this collection for equality.
A value comparison is performed by this method and the stored values
are compared rather than calling the equals() method of each element.
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html#equals(java.lang.Object)" title="class or interface in java.util"><CODE>Collection.equals(java.lang.Object)</CODE></A> interface.
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html#equals(java.lang.Object)" title="class or interface in java.util"><CODE>Collection.equals(java.lang.Object)</CODE></A> interface.
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html#equals(java.lang.Object)" title="class or interface in java.util">equals</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE><DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html#equals(java.lang.Object)" title="class or interface in java.util">equals</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE><DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
</DD>
<DD><DL>
@@ -674,7 +685,7 @@ hashCode</H3>
public int <B>hashCode</B>()</PRE>
<DL>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html#hashCode()" title="class or interface in java.util">hashCode</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE><DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html#hashCode()" title="class or interface in java.util">hashCode</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE><DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
</DD>
<DD><DL>
</DL>
@@ -685,7 +696,7 @@ public int <B>hashCode</B>()</PRE>
<A NAME="toList()"><!-- --></A><H3>
toList</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html" title="class or interface in java.util">List</A> <B>toList</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" title="class or interface in java.util">List</A> <B>toList</B>()</PRE>
<DL>
<DD>Returns a copy of this collection as an ArrayList. This is the same as
<A HREF="../../../com/sleepycat/collections/StoredCollection.html#toArray()"><CODE>toArray()</CODE></A> but returns a collection instead of an array.
@@ -695,7 +706,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html" title
</DD>
<DD><DL>
-<DT><B>Returns:</B><DD>an <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/ArrayList.html" title="class or interface in java.util"><CODE>ArrayList</CODE></A> containing a copy of all elements in this
+<DT><B>Returns:</B><DD>an <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/ArrayList.html" title="class or interface in java.util"><CODE>ArrayList</CODE></A> containing a copy of all elements in this
collection.
<DT><B>Throws:</B>
<DD><CODE>RuntimeExceptionWrapper</CODE> - if a <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db"><CODE>DatabaseException</CODE></A> is
@@ -707,13 +718,13 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html" title
<A NAME="toString()"><!-- --></A><H3>
toString</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
<DL>
<DD>Converts the collection to a string representation for debugging.
WARNING: The returned string may be very large.
<P>
<DD><DL>
-<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
</DD>
<DD><DL>
@@ -731,19 +742,12 @@ size</H3>
public int <B>size</B>()</PRE>
<DL>
<DD><B>Description copied from class: <CODE><A HREF="../../../com/sleepycat/collections/StoredContainer.html#size()">StoredContainer</A></CODE></B></DD>
-<DD>Returns the number of records in the collection or map.
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html#size()" title="class or interface in java.util"><CODE>Collection.size()</CODE></A> and <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#size()" title="class or interface in java.util"><CODE>Map.size()</CODE></A> interfaces.
-
- <p>Note that if other threads are adding or removing records while this
- method is executing, the size returned may be incorrect. This method
- does not lock the database.</p>
-
- <p>Also note that, for a large database, this method may be expensive.
- All non-duplicate records in the database are enumerated by this method,
- bringing them into memory if they are not already cached.</p>
+<DD>Returns a non-transactional count of the records in the collection or
+ map. This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html#size()" title="class or interface in java.util"><CODE>Collection.size()</CODE></A> and
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#size()" title="class or interface in java.util"><CODE>Map.size()</CODE></A> interfaces.
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html#size()" title="class or interface in java.util">size</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE><DT><B>Specified by:</B><DD><CODE><A HREF="../../../com/sleepycat/collections/StoredContainer.html#size()">size</A></CODE> in class <CODE><A HREF="../../../com/sleepycat/collections/StoredContainer.html" title="class in com.sleepycat.collections">StoredContainer</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html#size()" title="class or interface in java.util">size</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE><DT><B>Specified by:</B><DD><CODE><A HREF="../../../com/sleepycat/collections/StoredContainer.html#size()">size</A></CODE> in class <CODE><A HREF="../../../com/sleepycat/collections/StoredContainer.html" title="class in com.sleepycat.collections">StoredContainer</A></CODE></DL>
</DD>
<DD><DL>
</DL>
@@ -755,12 +759,12 @@ public int <B>size</B>()</PRE>
join</H3>
<PRE>
public <A HREF="../../../com/sleepycat/collections/StoredIterator.html" title="class in com.sleepycat.collections">StoredIterator</A> <B>join</B>(<A HREF="../../../com/sleepycat/collections/StoredContainer.html" title="class in com.sleepycat.collections">StoredContainer</A>[]&nbsp;indices,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>[]&nbsp;indexKeys,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>[]&nbsp;indexKeys,
<A HREF="../../../com/sleepycat/db/JoinConfig.html" title="class in com.sleepycat.db">JoinConfig</A>&nbsp;joinConfig)</PRE>
<DL>
<DD>Returns an iterator representing an equality join of the indices and
index key values specified.
- This method does not exist in the standard <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util"><CODE>Collection</CODE></A> interface.
+ This method does not exist in the standard <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util"><CODE>Collection</CODE></A> interface.
<p><strong>Warning:</strong> The iterator returned must be explicitly
closed using <A HREF="../../../com/sleepycat/collections/StoredIterator.html#close()"><CODE>StoredIterator.close()</CODE></A> or <A HREF="../../../com/sleepycat/collections/StoredIterator.html#close(java.util.Iterator)"><CODE>StoredIterator.close(java.util.Iterator)</CODE></A> to release the underlying
@@ -780,7 +784,7 @@ public <A HREF="../../../com/sleepycat/collections/StoredIterator.html" title="c
<DT><B>Returns:</B><DD>an iterator over the elements in this collection that match
all specified index key values.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if this collection is indexed or if a
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if this collection is indexed or if a
given index does not have the same store as this collection.
<DD><CODE>RuntimeExceptionWrapper</CODE> - if a <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db"><CODE>DatabaseException</CODE></A> is
thrown.</DL>
@@ -811,7 +815,7 @@ public <A HREF="../../../com/sleepycat/collections/StoredIterator.html" title="c
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -847,6 +851,6 @@ DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/collections/StoredCollections.html b/db/docs/java/com/sleepycat/collections/StoredCollections.html
index 940102209..36a4a34f3 100644
--- a/db/docs/java/com/sleepycat/collections/StoredCollections.html
+++ b/db/docs/java/com/sleepycat/collections/StoredCollections.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:47 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-StoredCollections (Oracle Corporation - Berkeley DB Java API)
+StoredCollections (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.collections.StoredCollections class">
@@ -14,7 +14,7 @@ StoredCollections (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="StoredCollections (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="StoredCollections (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,12 +89,12 @@ com.sleepycat.collections</FONT>
<BR>
Class StoredCollections</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.collections.StoredCollections</B>
</PRE>
<HR>
<DL>
-<DT><PRE>public class <B>StoredCollections</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
+<DT><PRE>public class <B>StoredCollections</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
</PRE>
<P>
@@ -137,8 +137,8 @@ Static methods operating on collections and maps.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredCollections.html#configuredCollection(java.util.Collection, com.sleepycat.db.CursorConfig)">configuredCollection</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>&nbsp;storedCollection,
+<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredCollections.html#configuredCollection(java.util.Collection, com.sleepycat.db.CursorConfig)">configuredCollection</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>&nbsp;storedCollection,
<A HREF="../../../com/sleepycat/db/CursorConfig.html" title="class in com.sleepycat.db">CursorConfig</A>&nbsp;config)</CODE>
<BR>
@@ -146,8 +146,8 @@ Static methods operating on collections and maps.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html" title="class or interface in java.util">List</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredCollections.html#configuredList(java.util.List, com.sleepycat.db.CursorConfig)">configuredList</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html" title="class or interface in java.util">List</A>&nbsp;storedList,
+<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" title="class or interface in java.util">List</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredCollections.html#configuredList(java.util.List, com.sleepycat.db.CursorConfig)">configuredList</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" title="class or interface in java.util">List</A>&nbsp;storedList,
<A HREF="../../../com/sleepycat/db/CursorConfig.html" title="class in com.sleepycat.db">CursorConfig</A>&nbsp;config)</CODE>
<BR>
@@ -155,8 +155,8 @@ Static methods operating on collections and maps.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredCollections.html#configuredMap(java.util.Map, com.sleepycat.db.CursorConfig)">configuredMap</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A>&nbsp;storedMap,
+<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredCollections.html#configuredMap(java.util.Map, com.sleepycat.db.CursorConfig)">configuredMap</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A>&nbsp;storedMap,
<A HREF="../../../com/sleepycat/db/CursorConfig.html" title="class in com.sleepycat.db">CursorConfig</A>&nbsp;config)</CODE>
<BR>
@@ -164,8 +164,8 @@ Static methods operating on collections and maps.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredCollections.html#configuredSet(java.util.Set, com.sleepycat.db.CursorConfig)">configuredSet</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A>&nbsp;storedSet,
+<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredCollections.html#configuredSet(java.util.Set, com.sleepycat.db.CursorConfig)">configuredSet</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A>&nbsp;storedSet,
<A HREF="../../../com/sleepycat/db/CursorConfig.html" title="class in com.sleepycat.db">CursorConfig</A>&nbsp;config)</CODE>
<BR>
@@ -173,8 +173,8 @@ Static methods operating on collections and maps.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredCollections.html#configuredSortedMap(java.util.SortedMap, com.sleepycat.db.CursorConfig)">configuredSortedMap</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A>&nbsp;storedSortedMap,
+<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredCollections.html#configuredSortedMap(java.util.SortedMap, com.sleepycat.db.CursorConfig)">configuredSortedMap</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A>&nbsp;storedSortedMap,
<A HREF="../../../com/sleepycat/db/CursorConfig.html" title="class in com.sleepycat.db">CursorConfig</A>&nbsp;config)</CODE>
<BR>
@@ -182,8 +182,8 @@ Static methods operating on collections and maps.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredCollections.html#configuredSortedSet(java.util.SortedSet, com.sleepycat.db.CursorConfig)">configuredSortedSet</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A>&nbsp;storedSortedSet,
+<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredCollections.html#configuredSortedSet(java.util.SortedSet, com.sleepycat.db.CursorConfig)">configuredSortedSet</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A>&nbsp;storedSortedSet,
<A HREF="../../../com/sleepycat/db/CursorConfig.html" title="class in com.sleepycat.db">CursorConfig</A>&nbsp;config)</CODE>
<BR>
@@ -191,8 +191,8 @@ Static methods operating on collections and maps.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredCollections.html#dirtyReadCollection(java.util.Collection)">dirtyReadCollection</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>&nbsp;storedCollection)</CODE>
+<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredCollections.html#dirtyReadCollection(java.util.Collection)">dirtyReadCollection</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>&nbsp;storedCollection)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;<I>This method has been replaced by <A HREF="../../../com/sleepycat/collections/StoredCollections.html#configuredCollection(java.util.Collection, com.sleepycat.db.CursorConfig)"><CODE>configuredCollection(java.util.Collection, com.sleepycat.db.CursorConfig)</CODE></A> in order to conform to ANSI database isolation
@@ -201,8 +201,8 @@ Static methods operating on collections and maps.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html" title="class or interface in java.util">List</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredCollections.html#dirtyReadList(java.util.List)">dirtyReadList</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html" title="class or interface in java.util">List</A>&nbsp;storedList)</CODE>
+<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" title="class or interface in java.util">List</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredCollections.html#dirtyReadList(java.util.List)">dirtyReadList</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" title="class or interface in java.util">List</A>&nbsp;storedList)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;<I>This method has been replaced by <A HREF="../../../com/sleepycat/collections/StoredCollections.html#configuredList(java.util.List, com.sleepycat.db.CursorConfig)"><CODE>configuredList(java.util.List, com.sleepycat.db.CursorConfig)</CODE></A> in
@@ -211,8 +211,8 @@ Static methods operating on collections and maps.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredCollections.html#dirtyReadMap(java.util.Map)">dirtyReadMap</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A>&nbsp;storedMap)</CODE>
+<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredCollections.html#dirtyReadMap(java.util.Map)">dirtyReadMap</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A>&nbsp;storedMap)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;<I>This method has been replaced by <A HREF="../../../com/sleepycat/collections/StoredCollections.html#configuredMap(java.util.Map, com.sleepycat.db.CursorConfig)"><CODE>configuredMap(java.util.Map, com.sleepycat.db.CursorConfig)</CODE></A> in
@@ -221,8 +221,8 @@ Static methods operating on collections and maps.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredCollections.html#dirtyReadSet(java.util.Set)">dirtyReadSet</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A>&nbsp;storedSet)</CODE>
+<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredCollections.html#dirtyReadSet(java.util.Set)">dirtyReadSet</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A>&nbsp;storedSet)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;<I>This method has been replaced by <A HREF="../../../com/sleepycat/collections/StoredCollections.html#configuredSet(java.util.Set, com.sleepycat.db.CursorConfig)"><CODE>configuredSet(java.util.Set, com.sleepycat.db.CursorConfig)</CODE></A> in
@@ -231,8 +231,8 @@ Static methods operating on collections and maps.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredCollections.html#dirtyReadSortedMap(java.util.SortedMap)">dirtyReadSortedMap</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A>&nbsp;storedSortedMap)</CODE>
+<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredCollections.html#dirtyReadSortedMap(java.util.SortedMap)">dirtyReadSortedMap</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A>&nbsp;storedSortedMap)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;<I>This method has been replaced by <A HREF="../../../com/sleepycat/collections/StoredCollections.html#configuredSortedMap(java.util.SortedMap, com.sleepycat.db.CursorConfig)"><CODE>configuredSortedMap(java.util.SortedMap, com.sleepycat.db.CursorConfig)</CODE></A> in order to conform to ANSI database isolation
@@ -241,8 +241,8 @@ Static methods operating on collections and maps.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredCollections.html#dirtyReadSortedSet(java.util.SortedSet)">dirtyReadSortedSet</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A>&nbsp;storedSortedSet)</CODE>
+<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredCollections.html#dirtyReadSortedSet(java.util.SortedSet)">dirtyReadSortedSet</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A>&nbsp;storedSortedSet)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;<I>This method has been replaced by <A HREF="../../../com/sleepycat/collections/StoredCollections.html#configuredSortedSet(java.util.SortedSet, com.sleepycat.db.CursorConfig)"><CODE>configuredSortedSet(java.util.SortedSet, com.sleepycat.db.CursorConfig)</CODE></A> in order to conform to ANSI database isolation
@@ -251,8 +251,8 @@ Static methods operating on collections and maps.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Iterator.html" title="class or interface in java.util">Iterator</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredCollections.html#iterator(java.util.Iterator)">iterator</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Iterator.html" title="class or interface in java.util">Iterator</A>&nbsp;iter)</CODE>
+<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Iterator.html" title="class or interface in java.util">Iterator</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredCollections.html#iterator(java.util.Iterator)">iterator</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Iterator.html" title="class or interface in java.util">Iterator</A>&nbsp;iter)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Clones an iterator preserving its current position.</TD>
@@ -261,10 +261,10 @@ Static methods operating on collections and maps.
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -283,7 +283,7 @@ Static methods operating on collections and maps.
<A NAME="configuredCollection(java.util.Collection, com.sleepycat.db.CursorConfig)"><!-- --></A><H3>
configuredCollection</H3>
<PRE>
-public static <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A> <B>configuredCollection</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>&nbsp;storedCollection,
+public static <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A> <B>configuredCollection</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>&nbsp;storedCollection,
<A HREF="../../../com/sleepycat/db/CursorConfig.html" title="class in com.sleepycat.db">CursorConfig</A>&nbsp;config)</PRE>
<DL>
<DD>Creates a configured collection from a given stored collection.
@@ -294,7 +294,7 @@ public static <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collectio
the default configuration.
<DT><B>Returns:</B><DD>the configured collection.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/ClassCastException.html" title="class or interface in java.lang">ClassCastException</A></CODE> - if the given container is not a
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/ClassCastException.html" title="class or interface in java.lang">ClassCastException</A></CODE> - if the given container is not a
StoredContainer.</DL>
</DD>
</DL>
@@ -303,7 +303,7 @@ public static <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collectio
<A NAME="configuredList(java.util.List, com.sleepycat.db.CursorConfig)"><!-- --></A><H3>
configuredList</H3>
<PRE>
-public static <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html" title="class or interface in java.util">List</A> <B>configuredList</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html" title="class or interface in java.util">List</A>&nbsp;storedList,
+public static <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" title="class or interface in java.util">List</A> <B>configuredList</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" title="class or interface in java.util">List</A>&nbsp;storedList,
<A HREF="../../../com/sleepycat/db/CursorConfig.html" title="class in com.sleepycat.db">CursorConfig</A>&nbsp;config)</PRE>
<DL>
<DD>Creates a configured list from a given stored list.
@@ -317,7 +317,7 @@ public static <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html
default configuration.
<DT><B>Returns:</B><DD>the configured list.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/ClassCastException.html" title="class or interface in java.lang">ClassCastException</A></CODE> - if the given container is not a
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/ClassCastException.html" title="class or interface in java.lang">ClassCastException</A></CODE> - if the given container is not a
StoredContainer.</DL>
</DD>
</DL>
@@ -326,7 +326,7 @@ public static <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html
<A NAME="configuredMap(java.util.Map, com.sleepycat.db.CursorConfig)"><!-- --></A><H3>
configuredMap</H3>
<PRE>
-public static <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A> <B>configuredMap</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A>&nbsp;storedMap,
+public static <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A> <B>configuredMap</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A>&nbsp;storedMap,
<A HREF="../../../com/sleepycat/db/CursorConfig.html" title="class in com.sleepycat.db">CursorConfig</A>&nbsp;config)</PRE>
<DL>
<DD>Creates a configured map from a given stored map.
@@ -337,7 +337,7 @@ public static <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html"
default configuration.
<DT><B>Returns:</B><DD>the configured map.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/ClassCastException.html" title="class or interface in java.lang">ClassCastException</A></CODE> - if the given container is not a
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/ClassCastException.html" title="class or interface in java.lang">ClassCastException</A></CODE> - if the given container is not a
StoredContainer.</DL>
</DD>
</DL>
@@ -346,7 +346,7 @@ public static <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html"
<A NAME="configuredSet(java.util.Set, com.sleepycat.db.CursorConfig)"><!-- --></A><H3>
configuredSet</H3>
<PRE>
-public static <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A> <B>configuredSet</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A>&nbsp;storedSet,
+public static <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A> <B>configuredSet</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A>&nbsp;storedSet,
<A HREF="../../../com/sleepycat/db/CursorConfig.html" title="class in com.sleepycat.db">CursorConfig</A>&nbsp;config)</PRE>
<DL>
<DD>Creates a configured set from a given stored set.
@@ -357,7 +357,7 @@ public static <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html"
default configuration.
<DT><B>Returns:</B><DD>the configured set.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/ClassCastException.html" title="class or interface in java.lang">ClassCastException</A></CODE> - if the given container is not a
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/ClassCastException.html" title="class or interface in java.lang">ClassCastException</A></CODE> - if the given container is not a
StoredContainer.</DL>
</DD>
</DL>
@@ -366,7 +366,7 @@ public static <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html"
<A NAME="configuredSortedMap(java.util.SortedMap, com.sleepycat.db.CursorConfig)"><!-- --></A><H3>
configuredSortedMap</H3>
<PRE>
-public static <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A> <B>configuredSortedMap</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A>&nbsp;storedSortedMap,
+public static <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A> <B>configuredSortedMap</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A>&nbsp;storedSortedMap,
<A HREF="../../../com/sleepycat/db/CursorConfig.html" title="class in com.sleepycat.db">CursorConfig</A>&nbsp;config)</PRE>
<DL>
<DD>Creates a configured sorted map from a given stored sorted map.
@@ -377,7 +377,7 @@ public static <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap
default configuration.
<DT><B>Returns:</B><DD>the configured map.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/ClassCastException.html" title="class or interface in java.lang">ClassCastException</A></CODE> - if the given container is not a
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/ClassCastException.html" title="class or interface in java.lang">ClassCastException</A></CODE> - if the given container is not a
StoredContainer.</DL>
</DD>
</DL>
@@ -386,7 +386,7 @@ public static <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap
<A NAME="configuredSortedSet(java.util.SortedSet, com.sleepycat.db.CursorConfig)"><!-- --></A><H3>
configuredSortedSet</H3>
<PRE>
-public static <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A> <B>configuredSortedSet</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A>&nbsp;storedSortedSet,
+public static <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A> <B>configuredSortedSet</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A>&nbsp;storedSortedSet,
<A HREF="../../../com/sleepycat/db/CursorConfig.html" title="class in com.sleepycat.db">CursorConfig</A>&nbsp;config)</PRE>
<DL>
<DD>Creates a configured sorted set from a given stored sorted set.
@@ -397,7 +397,7 @@ public static <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet
default configuration.
<DT><B>Returns:</B><DD>the configured set.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/ClassCastException.html" title="class or interface in java.lang">ClassCastException</A></CODE> - if the given container is not a
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/ClassCastException.html" title="class or interface in java.lang">ClassCastException</A></CODE> - if the given container is not a
StoredContainer.</DL>
</DD>
</DL>
@@ -406,7 +406,7 @@ public static <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet
<A NAME="dirtyReadCollection(java.util.Collection)"><!-- --></A><H3>
dirtyReadCollection</H3>
<PRE>
-public static <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A> <B>dirtyReadCollection</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>&nbsp;storedCollection)</PRE>
+public static <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A> <B>dirtyReadCollection</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>&nbsp;storedCollection)</PRE>
<DL>
<DD><B>Deprecated.</B>&nbsp;<I>This method has been replaced by <A HREF="../../../com/sleepycat/collections/StoredCollections.html#configuredCollection(java.util.Collection, com.sleepycat.db.CursorConfig)"><CODE>configuredCollection(java.util.Collection, com.sleepycat.db.CursorConfig)</CODE></A> in order to conform to ANSI database isolation
terminology. To obtain a dirty-read collection, pass
@@ -421,7 +421,7 @@ public static <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collectio
<A NAME="dirtyReadList(java.util.List)"><!-- --></A><H3>
dirtyReadList</H3>
<PRE>
-public static <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html" title="class or interface in java.util">List</A> <B>dirtyReadList</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html" title="class or interface in java.util">List</A>&nbsp;storedList)</PRE>
+public static <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" title="class or interface in java.util">List</A> <B>dirtyReadList</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" title="class or interface in java.util">List</A>&nbsp;storedList)</PRE>
<DL>
<DD><B>Deprecated.</B>&nbsp;<I>This method has been replaced by <A HREF="../../../com/sleepycat/collections/StoredCollections.html#configuredList(java.util.List, com.sleepycat.db.CursorConfig)"><CODE>configuredList(java.util.List, com.sleepycat.db.CursorConfig)</CODE></A> in
order to conform to ANSI database isolation terminology. To obtain a
@@ -436,7 +436,7 @@ public static <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html
<A NAME="dirtyReadMap(java.util.Map)"><!-- --></A><H3>
dirtyReadMap</H3>
<PRE>
-public static <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A> <B>dirtyReadMap</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A>&nbsp;storedMap)</PRE>
+public static <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A> <B>dirtyReadMap</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A>&nbsp;storedMap)</PRE>
<DL>
<DD><B>Deprecated.</B>&nbsp;<I>This method has been replaced by <A HREF="../../../com/sleepycat/collections/StoredCollections.html#configuredMap(java.util.Map, com.sleepycat.db.CursorConfig)"><CODE>configuredMap(java.util.Map, com.sleepycat.db.CursorConfig)</CODE></A> in
order to conform to ANSI database isolation terminology. To obtain a
@@ -451,7 +451,7 @@ public static <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html"
<A NAME="dirtyReadSet(java.util.Set)"><!-- --></A><H3>
dirtyReadSet</H3>
<PRE>
-public static <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A> <B>dirtyReadSet</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A>&nbsp;storedSet)</PRE>
+public static <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A> <B>dirtyReadSet</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A>&nbsp;storedSet)</PRE>
<DL>
<DD><B>Deprecated.</B>&nbsp;<I>This method has been replaced by <A HREF="../../../com/sleepycat/collections/StoredCollections.html#configuredSet(java.util.Set, com.sleepycat.db.CursorConfig)"><CODE>configuredSet(java.util.Set, com.sleepycat.db.CursorConfig)</CODE></A> in
order to conform to ANSI database isolation terminology. To obtain a
@@ -466,7 +466,7 @@ public static <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html"
<A NAME="dirtyReadSortedMap(java.util.SortedMap)"><!-- --></A><H3>
dirtyReadSortedMap</H3>
<PRE>
-public static <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A> <B>dirtyReadSortedMap</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A>&nbsp;storedSortedMap)</PRE>
+public static <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A> <B>dirtyReadSortedMap</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A>&nbsp;storedSortedMap)</PRE>
<DL>
<DD><B>Deprecated.</B>&nbsp;<I>This method has been replaced by <A HREF="../../../com/sleepycat/collections/StoredCollections.html#configuredSortedMap(java.util.SortedMap, com.sleepycat.db.CursorConfig)"><CODE>configuredSortedMap(java.util.SortedMap, com.sleepycat.db.CursorConfig)</CODE></A> in order to conform to ANSI database isolation
terminology. To obtain a dirty-read map, pass
@@ -481,7 +481,7 @@ public static <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap
<A NAME="dirtyReadSortedSet(java.util.SortedSet)"><!-- --></A><H3>
dirtyReadSortedSet</H3>
<PRE>
-public static <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A> <B>dirtyReadSortedSet</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A>&nbsp;storedSortedSet)</PRE>
+public static <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A> <B>dirtyReadSortedSet</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A>&nbsp;storedSortedSet)</PRE>
<DL>
<DD><B>Deprecated.</B>&nbsp;<I>This method has been replaced by <A HREF="../../../com/sleepycat/collections/StoredCollections.html#configuredSortedSet(java.util.SortedSet, com.sleepycat.db.CursorConfig)"><CODE>configuredSortedSet(java.util.SortedSet, com.sleepycat.db.CursorConfig)</CODE></A> in order to conform to ANSI database isolation
terminology. To obtain a dirty-read set, pass
@@ -496,7 +496,7 @@ public static <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet
<A NAME="iterator(java.util.Iterator)"><!-- --></A><H3>
iterator</H3>
<PRE>
-public static <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Iterator.html" title="class or interface in java.util">Iterator</A> <B>iterator</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Iterator.html" title="class or interface in java.util">Iterator</A>&nbsp;iter)</PRE>
+public static <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Iterator.html" title="class or interface in java.util">Iterator</A> <B>iterator</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Iterator.html" title="class or interface in java.util">Iterator</A>&nbsp;iter)</PRE>
<DL>
<DD>Clones an iterator preserving its current position.
<P>
@@ -505,7 +505,7 @@ public static <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Iterator.
<DT><B>Returns:</B><DD>a new <code>Iterator</code> having the same position as the given
iterator.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/ClassCastException.html" title="class or interface in java.lang">ClassCastException</A></CODE> - if the given iterator was not obtained via a
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/ClassCastException.html" title="class or interface in java.lang">ClassCastException</A></CODE> - if the given iterator was not obtained via a
<A HREF="../../../com/sleepycat/collections/StoredCollection.html" title="class in com.sleepycat.collections"><CODE>StoredCollection</CODE></A> method.</DL>
</DD>
</DL>
@@ -534,7 +534,7 @@ public static <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Iterator.
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -570,6 +570,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHO
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/collections/StoredContainer.html b/db/docs/java/com/sleepycat/collections/StoredContainer.html
index 15aa39bbe..9a57c8eb7 100644
--- a/db/docs/java/com/sleepycat/collections/StoredContainer.html
+++ b/db/docs/java/com/sleepycat/collections/StoredContainer.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:47 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-StoredContainer (Oracle Corporation - Berkeley DB Java API)
+StoredContainer (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.collections.StoredContainer class">
@@ -14,7 +14,7 @@ StoredContainer (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="StoredContainer (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="StoredContainer (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,23 +89,23 @@ com.sleepycat.collections</FONT>
<BR>
Class StoredContainer</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.collections.StoredContainer</B>
</PRE>
<DL>
-<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A></DD>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A></DD>
</DL>
<DL>
<DT><B>Direct Known Subclasses:</B> <DD><A HREF="../../../com/sleepycat/collections/StoredCollection.html" title="class in com.sleepycat.collections">StoredCollection</A>, <A HREF="../../../com/sleepycat/collections/StoredMap.html" title="class in com.sleepycat.collections">StoredMap</A></DD>
</DL>
<HR>
<DL>
-<DT><PRE>public abstract class <B>StoredContainer</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A><DT>implements <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A></DL>
+<DT><PRE>public abstract class <B>StoredContainer</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A><DT>implements <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A></DL>
</PRE>
<P>
A abstract base class for all stored collections and maps. This class
- provides implementations of methods that are common to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util"><CODE>Collection</CODE></A> and the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html" title="class or interface in java.util"><CODE>Map</CODE></A> interfaces, namely
+ provides implementations of methods that are common to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util"><CODE>Collection</CODE></A> and the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util"><CODE>Map</CODE></A> interfaces, namely
<A HREF="../../../com/sleepycat/collections/StoredContainer.html#clear()"><CODE>clear()</CODE></A>, <A HREF="../../../com/sleepycat/collections/StoredContainer.html#isEmpty()"><CODE>isEmpty()</CODE></A> and <A HREF="../../../com/sleepycat/collections/StoredContainer.html#size()"><CODE>size()</CODE></A>.
<p>In addition, this class provides the following methods for stored
@@ -247,16 +247,17 @@ A abstract base class for all stored collections and maps. This class
<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredContainer.html#size()">size</A></B>()</CODE>
<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the number of records in the collection or map.</TD>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a non-transactional count of the records in the collection or
+ map.</TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -279,8 +280,8 @@ public final boolean <B>isWriteAllowed</B>()</PRE>
<DL>
<DD>Returns true if this is a read-write container or false if this is a
read-only container.
- This method does not exist in the standard <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html" title="class or interface in java.util"><CODE>Map</CODE></A> or
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util"><CODE>Collection</CODE></A> interfaces.
+ This method does not exist in the standard <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util"><CODE>Map</CODE></A> or
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util"><CODE>Collection</CODE></A> interfaces.
<P>
<DD><DL>
</DL>
@@ -301,8 +302,8 @@ public final <A HREF="../../../com/sleepycat/db/CursorConfig.html" title="class
performed via this container.
For example, if <code>CursorConfig.getReadUncommitted</code> returns
true, data will be read that is modified but not committed.
- This method does not exist in the standard <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html" title="class or interface in java.util"><CODE>Map</CODE></A> or
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util"><CODE>Collection</CODE></A> interfaces.
+ This method does not exist in the standard <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util"><CODE>Map</CODE></A> or
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util"><CODE>Collection</CODE></A> interfaces.
<P>
<DD><DL>
</DL>
@@ -330,8 +331,8 @@ public final boolean <B>isDirtyReadAllowed</B>()</PRE>
underlying database for this container.
Even when read-uncommitted is allowed it must specifically be enabled by
calling one of the <A HREF="../../../com/sleepycat/collections/StoredCollections.html" title="class in com.sleepycat.collections"><CODE>StoredCollections</CODE></A> methods.
- This method does not exist in the standard <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html" title="class or interface in java.util"><CODE>Map</CODE></A> or
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util"><CODE>Collection</CODE></A> interfaces.
+ This method does not exist in the standard <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util"><CODE>Map</CODE></A> or
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util"><CODE>Collection</CODE></A> interfaces.
<P>
<DD><DL>
</DL>
@@ -371,8 +372,8 @@ public final boolean <B>isTransactional</B>()</PRE>
Even in a transactional environment, a database will be transactional
only if it was opened within a transaction or if the auto-commit option
was specified when it was opened.
- This method does not exist in the standard <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html" title="class or interface in java.util"><CODE>Map</CODE></A> or
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util"><CODE>Collection</CODE></A> interfaces.
+ This method does not exist in the standard <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util"><CODE>Map</CODE></A> or
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util"><CODE>Collection</CODE></A> interfaces.
<P>
<DD><DL>
</DL>
@@ -391,8 +392,8 @@ public final boolean <B>areDuplicatesAllowed</B>()</PRE>
<DL>
<DD>Returns whether duplicate keys are allowed in this container.
Duplicates are optionally allowed for HASH and BTREE databases.
- This method does not exist in the standard <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html" title="class or interface in java.util"><CODE>Map</CODE></A> or
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util"><CODE>Collection</CODE></A> interfaces.
+ This method does not exist in the standard <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util"><CODE>Map</CODE></A> or
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util"><CODE>Collection</CODE></A> interfaces.
<p>Note that the JE product only supports BTREE databases.</p>
<P>
@@ -413,8 +414,8 @@ public final boolean <B>areDuplicatesOrdered</B>()</PRE>
<DL>
<DD>Returns whether duplicate keys are allowed and sorted by element value.
Duplicates are optionally sorted for HASH and BTREE databases.
- This method does not exist in the standard <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html" title="class or interface in java.util"><CODE>Map</CODE></A> or
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util"><CODE>Collection</CODE></A> interfaces.
+ This method does not exist in the standard <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util"><CODE>Map</CODE></A> or
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util"><CODE>Collection</CODE></A> interfaces.
<p>Note that the JE product only supports BTREE databases, and
duplicates are always sorted.</p>
@@ -436,8 +437,8 @@ public final boolean <B>areKeysRenumbered</B>()</PRE>
<DL>
<DD>Returns whether keys are renumbered when insertions and deletions occur.
Keys are optionally renumbered for RECNO databases.
- This method does not exist in the standard <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html" title="class or interface in java.util"><CODE>Map</CODE></A> or
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util"><CODE>Collection</CODE></A> interfaces.
+ This method does not exist in the standard <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util"><CODE>Map</CODE></A> or
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util"><CODE>Collection</CODE></A> interfaces.
<p>Note that the JE product does not support RECNO databases, and
therefore keys are never renumbered.</p>
@@ -459,8 +460,8 @@ public final boolean <B>isOrdered</B>()</PRE>
<DL>
<DD>Returns whether keys are ordered in this container.
Keys are ordered for BTREE, RECNO and QUEUE database.
- This method does not exist in the standard <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html" title="class or interface in java.util"><CODE>Map</CODE></A> or
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util"><CODE>Collection</CODE></A> interfaces.
+ This method does not exist in the standard <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util"><CODE>Map</CODE></A> or
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util"><CODE>Collection</CODE></A> interfaces.
<p>Note that the JE product only support BTREE databases, and
therefore keys are always ordered.</p>
@@ -482,8 +483,8 @@ public final boolean <B>isSecondary</B>()</PRE>
<DL>
<DD>Returns whether this container is a view on a secondary database rather
than directly on a primary database.
- This method does not exist in the standard <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html" title="class or interface in java.util"><CODE>Map</CODE></A> or
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util"><CODE>Collection</CODE></A> interfaces.
+ This method does not exist in the standard <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util"><CODE>Map</CODE></A> or
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util"><CODE>Collection</CODE></A> interfaces.
<P>
<DD><DL>
</DL>
@@ -500,16 +501,9 @@ size</H3>
<PRE>
public abstract int <B>size</B>()</PRE>
<DL>
-<DD>Returns the number of records in the collection or map.
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html#size()" title="class or interface in java.util"><CODE>Collection.size()</CODE></A> and <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#size()" title="class or interface in java.util"><CODE>Map.size()</CODE></A> interfaces.
-
- <p>Note that if other threads are adding or removing records while this
- method is executing, the size returned may be incorrect. This method
- does not lock the database.</p>
-
- <p>Also note that, for a large database, this method may be expensive.
- All non-duplicate records in the database are enumerated by this method,
- bringing them into memory if they are not already cached.</p>
+<DD>Returns a non-transactional count of the records in the collection or
+ map. This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html#size()" title="class or interface in java.util"><CODE>Collection.size()</CODE></A> and
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#size()" title="class or interface in java.util"><CODE>Map.size()</CODE></A> interfaces.
<P>
<DD><DL>
</DL>
@@ -528,8 +522,8 @@ isEmpty</H3>
public boolean <B>isEmpty</B>()</PRE>
<DL>
<DD>Returns true if this map or collection contains no mappings or elements.
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html#isEmpty()" title="class or interface in java.util"><CODE>Collection.isEmpty()</CODE></A> and
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#isEmpty()" title="class or interface in java.util"><CODE>Map.isEmpty()</CODE></A> interfaces.
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html#isEmpty()" title="class or interface in java.util"><CODE>Collection.isEmpty()</CODE></A> and
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#isEmpty()" title="class or interface in java.util"><CODE>Map.isEmpty()</CODE></A> interfaces.
<P>
<DD><DL>
</DL>
@@ -550,8 +544,8 @@ public void <B>clear</B>()</PRE>
<DL>
<DD>Removes all mappings or elements from this map or collection (optional
operation).
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html#clear()" title="class or interface in java.util"><CODE>Collection.clear()</CODE></A> and
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#clear()" title="class or interface in java.util"><CODE>Map.clear()</CODE></A> interfaces.
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html#clear()" title="class or interface in java.util"><CODE>Collection.clear()</CODE></A> and
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#clear()" title="class or interface in java.util"><CODE>Map.clear()</CODE></A> interfaces.
<P>
<DD><DL>
</DL>
@@ -559,7 +553,7 @@ public void <B>clear</B>()</PRE>
<DD><DL>
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/UnsupportedOperationException.html" title="class or interface in java.lang">UnsupportedOperationException</A></CODE> - if the container is read-only.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/UnsupportedOperationException.html" title="class or interface in java.lang">UnsupportedOperationException</A></CODE> - if the container is read-only.
<DD><CODE><A HREF="../../../com/sleepycat/util/RuntimeExceptionWrapper.html" title="class in com.sleepycat.util">RuntimeExceptionWrapper</A></CODE> - if a <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db"><CODE>DatabaseException</CODE></A> is thrown.</DL>
</DD>
</DL>
@@ -588,7 +582,7 @@ public void <B>clear</B>()</PRE>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -624,6 +618,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHO
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/collections/StoredEntrySet.html b/db/docs/java/com/sleepycat/collections/StoredEntrySet.html
index e9514d42f..582a0b13a 100644
--- a/db/docs/java/com/sleepycat/collections/StoredEntrySet.html
+++ b/db/docs/java/com/sleepycat/collections/StoredEntrySet.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:47 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-StoredEntrySet (Oracle Corporation - Berkeley DB Java API)
+StoredEntrySet (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.collections.StoredEntrySet class">
@@ -14,7 +14,7 @@ StoredEntrySet (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="StoredEntrySet (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="StoredEntrySet (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,28 +89,28 @@ com.sleepycat.collections</FONT>
<BR>
Class StoredEntrySet</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../com/sleepycat/collections/StoredContainer.html" title="class in com.sleepycat.collections">com.sleepycat.collections.StoredContainer</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../com/sleepycat/collections/StoredCollection.html" title="class in com.sleepycat.collections">com.sleepycat.collections.StoredCollection</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.collections.StoredEntrySet</B>
</PRE>
<DL>
-<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Iterable.html" title="class or interface in java.lang">Iterable</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A></DD>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Iterable.html" title="class or interface in java.lang">Iterable</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A></DD>
</DL>
<DL>
<DT><B>Direct Known Subclasses:</B> <DD><A HREF="../../../com/sleepycat/collections/StoredSortedEntrySet.html" title="class in com.sleepycat.collections">StoredSortedEntrySet</A></DD>
</DL>
<HR>
<DL>
-<DT><PRE>public class <B>StoredEntrySet</B><DT>extends <A HREF="../../../com/sleepycat/collections/StoredCollection.html" title="class in com.sleepycat.collections">StoredCollection</A><DT>implements <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A></DL>
+<DT><PRE>public class <B>StoredEntrySet</B><DT>extends <A HREF="../../../com/sleepycat/collections/StoredCollection.html" title="class in com.sleepycat.collections">StoredCollection</A><DT>implements <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A></DL>
</PRE>
<P>
The Set returned by Map.entrySet(). This class may not be instantiated
- directly. Contrary to what is stated by <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#entrySet()" title="class or interface in java.util"><CODE>Map.entrySet()</CODE></A> this class
+ directly. Contrary to what is stated by <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#entrySet()" title="class or interface in java.util"><CODE>Map.entrySet()</CODE></A> this class
does support the <A HREF="../../../com/sleepycat/collections/StoredEntrySet.html#add(java.lang.Object)"><CODE>add(java.lang.Object)</CODE></A> and <A HREF="../../../com/sleepycat/collections/StoredCollection.html#addAll(java.util.Collection)"><CODE>StoredCollection.addAll(java.util.Collection)</CODE></A> methods.
- <p>The <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.Entry.html#setValue(java.lang.Object)" title="class or interface in java.util"><CODE>Map.Entry.setValue(java.lang.Object)</CODE></A> method of the Map.Entry objects
+ <p>The <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.Entry.html#setValue(java.lang.Object)" title="class or interface in java.util"><CODE>Map.Entry.setValue(java.lang.Object)</CODE></A> method of the Map.Entry objects
that are returned by this class and its iterators behaves just as the <A HREF="../../../com/sleepycat/collections/StoredIterator.html#set(java.lang.Object)"><CODE>StoredIterator.set(java.lang.Object)</CODE></A> method does.</p>
<P>
@@ -148,7 +148,7 @@ The Set returned by Map.entrySet(). This class may not be instantiated
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredEntrySet.html#add(java.lang.Object)">add</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;mapEntry)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredEntrySet.html#add(java.lang.Object)">add</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;mapEntry)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Adds the specified element to this set if it is not already present
@@ -157,7 +157,7 @@ The Set returned by Map.entrySet(). This class may not be instantiated
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredEntrySet.html#contains(java.lang.Object)">contains</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;mapEntry)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredEntrySet.html#contains(java.lang.Object)">contains</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;mapEntry)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns true if this set contains the specified element.</TD>
@@ -165,7 +165,7 @@ The Set returned by Map.entrySet(). This class may not be instantiated
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredEntrySet.html#remove(java.lang.Object)">remove</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;mapEntry)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredEntrySet.html#remove(java.lang.Object)">remove</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;mapEntry)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Removes the specified element from this set if it is present (optional
@@ -173,7 +173,7 @@ The Set returned by Map.entrySet(). This class may not be instantiated
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredEntrySet.html#toString()">toString</A></B>()</CODE>
<BR>
@@ -201,19 +201,19 @@ The Set returned by Map.entrySet(). This class may not be instantiated
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.util.Set"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from interface java.util.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from interface java.util.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#addAll(java.util.Collection)" title="class or interface in java.util">addAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#clear()" title="class or interface in java.util">clear</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#containsAll(java.util.Collection)" title="class or interface in java.util">containsAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#equals(java.lang.Object)" title="class or interface in java.util">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#hashCode()" title="class or interface in java.util">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#isEmpty()" title="class or interface in java.util">isEmpty</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#iterator()" title="class or interface in java.util">iterator</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#removeAll(java.util.Collection)" title="class or interface in java.util">removeAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#retainAll(java.util.Collection)" title="class or interface in java.util">retainAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#size()" title="class or interface in java.util">size</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#toArray()" title="class or interface in java.util">toArray</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#toArray(java.lang.Object[])" title="class or interface in java.util">toArray</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#addAll(java.util.Collection)" title="class or interface in java.util">addAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#clear()" title="class or interface in java.util">clear</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#containsAll(java.util.Collection)" title="class or interface in java.util">containsAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#equals(java.lang.Object)" title="class or interface in java.util">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#hashCode()" title="class or interface in java.util">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#isEmpty()" title="class or interface in java.util">isEmpty</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#iterator()" title="class or interface in java.util">iterator</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#removeAll(java.util.Collection)" title="class or interface in java.util">removeAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#retainAll(java.util.Collection)" title="class or interface in java.util">retainAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#size()" title="class or interface in java.util">size</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#toArray()" title="class or interface in java.util">toArray</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#toArray(java.lang.Object[])" title="class or interface in java.util">toArray</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -232,22 +232,22 @@ The Set returned by Map.entrySet(). This class may not be instantiated
<A NAME="add(java.lang.Object)"><!-- --></A><H3>
add</H3>
<PRE>
-public boolean <B>add</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;mapEntry)</PRE>
+public boolean <B>add</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;mapEntry)</PRE>
<DL>
<DD>Adds the specified element to this set if it is not already present
(optional operation).
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#add(java.lang.Object)" title="class or interface in java.util"><CODE>Set.add(java.lang.Object)</CODE></A> interface.
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#add(java.lang.Object)" title="class or interface in java.util"><CODE>Set.add(java.lang.Object)</CODE></A> interface.
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html#add(java.lang.Object)" title="class or interface in java.util">add</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE><DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#add(java.lang.Object)" title="class or interface in java.util">add</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html#add(java.lang.Object)" title="class or interface in java.util">add</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE><DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#add(java.lang.Object)" title="class or interface in java.util">add</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A></CODE></DL>
</DD>
<DD><DL>
-<DT><B>Parameters:</B><DD><CODE>mapEntry</CODE> - must be a <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.Entry.html" title="class or interface in java.util"><CODE>Map.Entry</CODE></A> instance.
+<DT><B>Parameters:</B><DD><CODE>mapEntry</CODE> - must be a <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.Entry.html" title="class or interface in java.util"><CODE>Map.Entry</CODE></A> instance.
<DT><B>Returns:</B><DD>true if the key-value pair was added to the set (and was not
previously present).
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/UnsupportedOperationException.html" title="class or interface in java.lang">UnsupportedOperationException</A></CODE> - if the collection is read-only.
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/ClassCastException.html" title="class or interface in java.lang">ClassCastException</A></CODE> - if the mapEntry is not a <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.Entry.html" title="class or interface in java.util"><CODE>Map.Entry</CODE></A> instance.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/UnsupportedOperationException.html" title="class or interface in java.lang">UnsupportedOperationException</A></CODE> - if the collection is read-only.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/ClassCastException.html" title="class or interface in java.lang">ClassCastException</A></CODE> - if the mapEntry is not a <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.Entry.html" title="class or interface in java.util"><CODE>Map.Entry</CODE></A> instance.
<DD><CODE><A HREF="../../../com/sleepycat/util/RuntimeExceptionWrapper.html" title="class in com.sleepycat.util">RuntimeExceptionWrapper</A></CODE> - if a <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db"><CODE>DatabaseException</CODE></A> is thrown.</DL>
</DD>
</DL>
@@ -256,22 +256,22 @@ public boolean <B>add</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/la
<A NAME="remove(java.lang.Object)"><!-- --></A><H3>
remove</H3>
<PRE>
-public boolean <B>remove</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;mapEntry)</PRE>
+public boolean <B>remove</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;mapEntry)</PRE>
<DL>
<DD>Removes the specified element from this set if it is present (optional
operation).
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#remove(java.lang.Object)" title="class or interface in java.util"><CODE>Set.remove(java.lang.Object)</CODE></A> interface.
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#remove(java.lang.Object)" title="class or interface in java.util"><CODE>Set.remove(java.lang.Object)</CODE></A> interface.
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html#remove(java.lang.Object)" title="class or interface in java.util">remove</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE><DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#remove(java.lang.Object)" title="class or interface in java.util">remove</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html#remove(java.lang.Object)" title="class or interface in java.util">remove</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE><DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#remove(java.lang.Object)" title="class or interface in java.util">remove</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A></CODE></DL>
</DD>
<DD><DL>
-<DT><B>Parameters:</B><DD><CODE>mapEntry</CODE> - is a <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.Entry.html" title="class or interface in java.util"><CODE>Map.Entry</CODE></A> instance to be removed.
+<DT><B>Parameters:</B><DD><CODE>mapEntry</CODE> - is a <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.Entry.html" title="class or interface in java.util"><CODE>Map.Entry</CODE></A> instance to be removed.
<DT><B>Returns:</B><DD>true if the key-value pair was removed from the set, or false if
- the mapEntry is not a <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.Entry.html" title="class or interface in java.util"><CODE>Map.Entry</CODE></A> instance or is not
+ the mapEntry is not a <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.Entry.html" title="class or interface in java.util"><CODE>Map.Entry</CODE></A> instance or is not
present in the set.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/UnsupportedOperationException.html" title="class or interface in java.lang">UnsupportedOperationException</A></CODE> - if the collection is read-only.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/UnsupportedOperationException.html" title="class or interface in java.lang">UnsupportedOperationException</A></CODE> - if the collection is read-only.
<DD><CODE><A HREF="../../../com/sleepycat/util/RuntimeExceptionWrapper.html" title="class in com.sleepycat.util">RuntimeExceptionWrapper</A></CODE> - if a <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db"><CODE>DatabaseException</CODE></A> is thrown.</DL>
</DD>
</DL>
@@ -280,18 +280,18 @@ public boolean <B>remove</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java
<A NAME="contains(java.lang.Object)"><!-- --></A><H3>
contains</H3>
<PRE>
-public boolean <B>contains</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;mapEntry)</PRE>
+public boolean <B>contains</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;mapEntry)</PRE>
<DL>
<DD>Returns true if this set contains the specified element.
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#contains(java.lang.Object)" title="class or interface in java.util"><CODE>Set.contains(java.lang.Object)</CODE></A> interface.
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#contains(java.lang.Object)" title="class or interface in java.util"><CODE>Set.contains(java.lang.Object)</CODE></A> interface.
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html#contains(java.lang.Object)" title="class or interface in java.util">contains</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE><DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#contains(java.lang.Object)" title="class or interface in java.util">contains</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html#contains(java.lang.Object)" title="class or interface in java.util">contains</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE><DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#contains(java.lang.Object)" title="class or interface in java.util">contains</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A></CODE></DL>
</DD>
<DD><DL>
-<DT><B>Parameters:</B><DD><CODE>mapEntry</CODE> - is a <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.Entry.html" title="class or interface in java.util"><CODE>Map.Entry</CODE></A> instance to be checked.
+<DT><B>Parameters:</B><DD><CODE>mapEntry</CODE> - is a <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.Entry.html" title="class or interface in java.util"><CODE>Map.Entry</CODE></A> instance to be checked.
<DT><B>Returns:</B><DD>true if the key-value pair is present in the set, or false if
- the mapEntry is not a <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.Entry.html" title="class or interface in java.util"><CODE>Map.Entry</CODE></A> instance or is not
+ the mapEntry is not a <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.Entry.html" title="class or interface in java.util"><CODE>Map.Entry</CODE></A> instance or is not
present in the set.
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../com/sleepycat/util/RuntimeExceptionWrapper.html" title="class in com.sleepycat.util">RuntimeExceptionWrapper</A></CODE> - if a <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db"><CODE>DatabaseException</CODE></A> is thrown.</DL>
@@ -302,7 +302,7 @@ public boolean <B>contains</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/ja
<A NAME="toString()"><!-- --></A><H3>
toString</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
<DL>
<DD><B>Description copied from class: <CODE><A HREF="../../../com/sleepycat/collections/StoredCollection.html#toString()">StoredCollection</A></CODE></B></DD>
<DD>Converts the collection to a string representation for debugging.
@@ -341,7 +341,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" tit
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -377,6 +377,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHO
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/collections/StoredIterator.html b/db/docs/java/com/sleepycat/collections/StoredIterator.html
index a037e00b9..50fec6810 100644
--- a/db/docs/java/com/sleepycat/collections/StoredIterator.html
+++ b/db/docs/java/com/sleepycat/collections/StoredIterator.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:47 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-StoredIterator (Oracle Corporation - Berkeley DB Java API)
+StoredIterator (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.collections.StoredIterator class">
@@ -14,7 +14,7 @@ StoredIterator (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="StoredIterator (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="StoredIterator (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,29 +89,29 @@ com.sleepycat.collections</FONT>
<BR>
Class StoredIterator</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.collections.StoredIterator</B>
</PRE>
<DL>
-<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A></DD>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A></DD>
</DL>
<HR>
<DL>
-<DT><PRE>public class <B>StoredIterator</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A><DT>implements <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A></DL>
+<DT><PRE>public class <B>StoredIterator</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A><DT>implements <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A></DL>
</PRE>
<P>
The Iterator returned by all stored collections.
- <p>While in general this class conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Iterator.html" title="class or interface in java.util"><CODE>Iterator</CODE></A> interface,
+ <p>While in general this class conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Iterator.html" title="class or interface in java.util"><CODE>Iterator</CODE></A> interface,
it is important to note that all iterators for stored collections must be
explicitly closed with <A HREF="../../../com/sleepycat/collections/StoredIterator.html#close()"><CODE>close()</CODE></A>. The static method <A HREF="../../../com/sleepycat/collections/StoredIterator.html#close(java.util.Iterator)"><CODE>close(java.util.Iterator)</CODE></A> allows calling close for all iterators without
harm to iterators that are not from stored collections, and also avoids
casting. If a stored iterator is not closed, unpredictable behavior
including process death may result.</p>
- <p>This class implements the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Iterator.html" title="class or interface in java.util"><CODE>Iterator</CODE></A> interface for all stored
- iterators. It also implements <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/ListIterator.html" title="class or interface in java.util"><CODE>ListIterator</CODE></A> because some list
+ <p>This class implements the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Iterator.html" title="class or interface in java.util"><CODE>Iterator</CODE></A> interface for all stored
+ iterators. It also implements <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/ListIterator.html" title="class or interface in java.util"><CODE>ListIterator</CODE></A> because some list
iterator methods apply to all stored iterators, for example, <A HREF="../../../com/sleepycat/collections/StoredIterator.html#previous()"><CODE>previous()</CODE></A> and <A HREF="../../../com/sleepycat/collections/StoredIterator.html#hasPrevious()"><CODE>hasPrevious()</CODE></A>. Other list iterator methods are always
supported for lists, but for other types of collections are only supported
under certain conditions. See <A HREF="../../../com/sleepycat/collections/StoredIterator.html#nextIndex()"><CODE>nextIndex()</CODE></A>, <A HREF="../../../com/sleepycat/collections/StoredIterator.html#previousIndex()"><CODE>previousIndex()</CODE></A>,
@@ -146,7 +146,7 @@ The Iterator returned by all stored collections.
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredIterator.html#add(java.lang.Object)">add</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredIterator.html#add(java.lang.Object)">add</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Inserts the specified element into the list or inserts a duplicate into
@@ -163,7 +163,7 @@ The Iterator returned by all stored collections.
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredIterator.html#close(java.util.Iterator)">close</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Iterator.html" title="class or interface in java.util">Iterator</A>&nbsp;i)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredIterator.html#close(java.util.Iterator)">close</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Iterator.html" title="class or interface in java.util">Iterator</A>&nbsp;i)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Closes the given iterator using <A HREF="../../../com/sleepycat/collections/StoredIterator.html#close()"><CODE>close()</CODE></A> if it is a <A HREF="../../../com/sleepycat/collections/StoredIterator.html" title="class in com.sleepycat.collections"><CODE>StoredIterator</CODE></A>.</TD>
@@ -179,7 +179,7 @@ The Iterator returned by all stored collections.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/ListIterator.html" title="class or interface in java.util">ListIterator</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/ListIterator.html" title="class or interface in java.util">ListIterator</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredIterator.html#dup()">dup</A></B>()</CODE>
<BR>
@@ -214,7 +214,7 @@ The Iterator returned by all stored collections.
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredIterator.html#isCurrentData(java.lang.Object)">isCurrentData</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;currentData)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredIterator.html#isCurrentData(java.lang.Object)">isCurrentData</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;currentData)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns whether the given data is the current iterator data.</TD>
@@ -238,7 +238,7 @@ The Iterator returned by all stored collections.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredIterator.html#next()">next</A></B>()</CODE>
<BR>
@@ -255,7 +255,7 @@ The Iterator returned by all stored collections.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredIterator.html#previous()">previous</A></B>()</CODE>
<BR>
@@ -282,7 +282,7 @@ The Iterator returned by all stored collections.
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredIterator.html#set(java.lang.Object)">set</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredIterator.html#set(java.lang.Object)">set</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Replaces the last element returned by next or previous with the
@@ -301,10 +301,10 @@ The Iterator returned by all stored collections.
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -323,7 +323,7 @@ The Iterator returned by all stored collections.
<A NAME="close(java.util.Iterator)"><!-- --></A><H3>
close</H3>
<PRE>
-public static void <B>close</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Iterator.html" title="class or interface in java.util">Iterator</A>&nbsp;i)</PRE>
+public static void <B>close</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Iterator.html" title="class or interface in java.util">Iterator</A>&nbsp;i)</PRE>
<DL>
<DD>Closes the given iterator using <A HREF="../../../com/sleepycat/collections/StoredIterator.html#close()"><CODE>close()</CODE></A> if it is a <A HREF="../../../com/sleepycat/collections/StoredIterator.html" title="class in com.sleepycat.collections"><CODE>StoredIterator</CODE></A>. If the given iterator is not a <A HREF="../../../com/sleepycat/collections/StoredIterator.html" title="class in com.sleepycat.collections"><CODE>StoredIterator</CODE></A>,
this method does nothing.
@@ -385,7 +385,7 @@ public boolean <B>hasNext</B>()</PRE>
<DL>
<DD>Returns true if this iterator has more elements when traversing in the
forward direction. False is returned if the iterator has been closed.
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Iterator.html#hasNext()" title="class or interface in java.util"><CODE>Iterator.hasNext()</CODE></A> interface.
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Iterator.html#hasNext()" title="class or interface in java.util"><CODE>Iterator.hasNext()</CODE></A> interface.
<P>
<DD><DL>
</DL>
@@ -406,7 +406,7 @@ public boolean <B>hasPrevious</B>()</PRE>
<DL>
<DD>Returns true if this iterator has more elements when traversing in the
reverse direction. It returns false if the iterator has been closed.
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/ListIterator.html#hasPrevious()" title="class or interface in java.util"><CODE>ListIterator.hasPrevious()</CODE></A> interface.
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/ListIterator.html#hasPrevious()" title="class or interface in java.util"><CODE>ListIterator.hasPrevious()</CODE></A> interface.
<P>
<DD><DL>
</DL>
@@ -423,10 +423,10 @@ public boolean <B>hasPrevious</B>()</PRE>
<A NAME="next()"><!-- --></A><H3>
next</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>next</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>next</B>()</PRE>
<DL>
<DD>Returns the next element in the iteration.
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Iterator.html#next()" title="class or interface in java.util"><CODE>Iterator.next()</CODE></A> interface.
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Iterator.html#next()" title="class or interface in java.util"><CODE>Iterator.next()</CODE></A> interface.
<P>
<DD><DL>
</DL>
@@ -444,10 +444,10 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" tit
<A NAME="previous()"><!-- --></A><H3>
previous</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>previous</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>previous</B>()</PRE>
<DL>
<DD>Returns the next element in the iteration.
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/ListIterator.html#previous()" title="class or interface in java.util"><CODE>ListIterator.previous()</CODE></A> interface.
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/ListIterator.html#previous()" title="class or interface in java.util"><CODE>ListIterator.previous()</CODE></A> interface.
<P>
<DD><DL>
</DL>
@@ -469,7 +469,7 @@ public int <B>nextIndex</B>()</PRE>
<DL>
<DD>Returns the index of the element that would be returned by a subsequent
call to next.
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/ListIterator.html#nextIndex()" title="class or interface in java.util"><CODE>ListIterator.nextIndex()</CODE></A> interface
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/ListIterator.html#nextIndex()" title="class or interface in java.util"><CODE>ListIterator.nextIndex()</CODE></A> interface
except that it returns Integer.MAX_VALUE for stored lists when
positioned at the end of the list, rather than returning the list size
as specified by the ListIterator interface. This is because the database
@@ -482,7 +482,7 @@ public int <B>nextIndex</B>()</PRE>
<DT><B>Returns:</B><DD>the next index.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/UnsupportedOperationException.html" title="class or interface in java.lang">UnsupportedOperationException</A></CODE> - if this iterator's collection does
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/UnsupportedOperationException.html" title="class or interface in java.lang">UnsupportedOperationException</A></CODE> - if this iterator's collection does
not use record number keys.
<DD><CODE><A HREF="../../../com/sleepycat/util/RuntimeExceptionWrapper.html" title="class in com.sleepycat.util">RuntimeExceptionWrapper</A></CODE> - if a <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db"><CODE>DatabaseException</CODE></A> is
thrown.</DL>
@@ -497,7 +497,7 @@ public int <B>previousIndex</B>()</PRE>
<DL>
<DD>Returns the index of the element that would be returned by a subsequent
call to previous.
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/ListIterator.html#previousIndex()" title="class or interface in java.util"><CODE>ListIterator.previousIndex()</CODE></A>
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/ListIterator.html#previousIndex()" title="class or interface in java.util"><CODE>ListIterator.previousIndex()</CODE></A>
interface.
<P>
<DD><DL>
@@ -507,7 +507,7 @@ public int <B>previousIndex</B>()</PRE>
<DT><B>Returns:</B><DD>the previous index.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/UnsupportedOperationException.html" title="class or interface in java.lang">UnsupportedOperationException</A></CODE> - if this iterator's collection does
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/UnsupportedOperationException.html" title="class or interface in java.lang">UnsupportedOperationException</A></CODE> - if this iterator's collection does
not use record number keys.
<DD><CODE><A HREF="../../../com/sleepycat/util/RuntimeExceptionWrapper.html" title="class in com.sleepycat.util">RuntimeExceptionWrapper</A></CODE> - if a <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db"><CODE>DatabaseException</CODE></A> is
thrown.</DL>
@@ -518,11 +518,15 @@ public int <B>previousIndex</B>()</PRE>
<A NAME="set(java.lang.Object)"><!-- --></A><H3>
set</H3>
<PRE>
-public void <B>set</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</PRE>
+public void <B>set</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</PRE>
<DL>
<DD>Replaces the last element returned by next or previous with the
specified element (optional operation).
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/ListIterator.html#set(java.lang.Object)" title="class or interface in java.util"><CODE>ListIterator.set(java.lang.Object)</CODE></A> interface.
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/ListIterator.html#set(java.lang.Object)" title="class or interface in java.util"><CODE>ListIterator.set(java.lang.Object)</CODE></A> interface.
+
+ <p>In order to call this method, if the underlying Database is
+ transactional then a transaction must be active when creating the
+ iterator.</p>
<P>
<DD><DL>
</DL>
@@ -530,10 +534,10 @@ public void <B>set</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>value</CODE> - the new value.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/UnsupportedOperationException.html" title="class or interface in java.lang">UnsupportedOperationException</A></CODE> - if the collection is a <A HREF="../../../com/sleepycat/collections/StoredKeySet.html" title="class in com.sleepycat.collections"><CODE>StoredKeySet</CODE></A> (the set returned by <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#keySet()" title="class or interface in java.util"><CODE>Map.keySet()</CODE></A>), or if
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/UnsupportedOperationException.html" title="class or interface in java.lang">UnsupportedOperationException</A></CODE> - if the collection is a <A HREF="../../../com/sleepycat/collections/StoredKeySet.html" title="class in com.sleepycat.collections"><CODE>StoredKeySet</CODE></A> (the set returned by <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#keySet()" title="class or interface in java.util"><CODE>Map.keySet()</CODE></A>), or if
duplicates are sorted since this would change the iterator position, or
if the collection is indexed, or if the collection is read-only.
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an entity value binding is used and
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an entity value binding is used and
the primary key of the value given is different than the existing stored
primary key.
<DD><CODE><A HREF="../../../com/sleepycat/util/RuntimeExceptionWrapper.html" title="class in com.sleepycat.util">RuntimeExceptionWrapper</A></CODE> - if a <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db"><CODE>DatabaseException</CODE></A> is
@@ -549,10 +553,14 @@ public void <B>remove</B>()</PRE>
<DL>
<DD>Removes the last element that was returned by next or previous (optional
operation).
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/ListIterator.html#remove()" title="class or interface in java.util"><CODE>ListIterator.remove()</CODE></A> interface except
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/ListIterator.html#remove()" title="class or interface in java.util"><CODE>ListIterator.remove()</CODE></A> interface except
that when the collection is a list and the RECNO-RENUMBER access method
is not used, list indices will not be renumbered.
+ <p>In order to call this method, if the underlying Database is
+ transactional then a transaction must be active when creating the
+ iterator.</p>
+
<p>Note that for the JE product, RECNO-RENUMBER databases are not
supported, and therefore list indices are never renumbered by this
method.</p>
@@ -563,7 +571,7 @@ public void <B>remove</B>()</PRE>
<DD><DL>
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/UnsupportedOperationException.html" title="class or interface in java.lang">UnsupportedOperationException</A></CODE> - if the collection is a sublist, or
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/UnsupportedOperationException.html" title="class or interface in java.lang">UnsupportedOperationException</A></CODE> - if the collection is a sublist, or
if the collection is read-only.
<DD><CODE><A HREF="../../../com/sleepycat/util/RuntimeExceptionWrapper.html" title="class in com.sleepycat.util">RuntimeExceptionWrapper</A></CODE> - if a <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db"><CODE>DatabaseException</CODE></A> is
thrown.</DL>
@@ -574,11 +582,11 @@ public void <B>remove</B>()</PRE>
<A NAME="add(java.lang.Object)"><!-- --></A><H3>
add</H3>
<PRE>
-public void <B>add</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</PRE>
+public void <B>add</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</PRE>
<DL>
<DD>Inserts the specified element into the list or inserts a duplicate into
other types of collections (optional operation).
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/ListIterator.html#add(java.lang.Object)" title="class or interface in java.util"><CODE>ListIterator.add(java.lang.Object)</CODE></A> interface when
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/ListIterator.html#add(java.lang.Object)" title="class or interface in java.util"><CODE>ListIterator.add(java.lang.Object)</CODE></A> interface when
the collection is a list and the RECNO-RENUMBER access method is used.
Otherwise, this method may only be called when duplicates are allowed.
If duplicates are unsorted, the new value will be inserted in the same
@@ -595,13 +603,13 @@ public void <B>add</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>value</CODE> - the new value.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/UnsupportedOperationException.html" title="class or interface in java.lang">UnsupportedOperationException</A></CODE> - if the collection is a sublist, or
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/UnsupportedOperationException.html" title="class or interface in java.lang">UnsupportedOperationException</A></CODE> - if the collection is a sublist, or
if the collection is indexed, or if the collection is read-only, or if
the collection is a list and the RECNO-RENUMBER access method was not
used, or if the collection is not a list and duplicates are not allowed.
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalStateException.html" title="class or interface in java.lang">IllegalStateException</A></CODE> - if the collection is empty and is not a
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalStateException.html" title="class or interface in java.lang">IllegalStateException</A></CODE> - if the collection is empty and is not a
list with RECNO-RENUMBER access.
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if a duplicate value is being added
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if a duplicate value is being added
that already exists and duplicates are sorted.
<DD><CODE><A HREF="../../../com/sleepycat/util/RuntimeExceptionWrapper.html" title="class in com.sleepycat.util">RuntimeExceptionWrapper</A></CODE> - if a <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db"><CODE>DatabaseException</CODE></A> is
thrown.</DL>
@@ -617,7 +625,7 @@ public int <B>count</B>()</PRE>
<DD>Returns the number of elements having the same key value as the key
value of the element last returned by next() or previous(). If no
duplicates are allowed, 1 is always returned.
- This method does not exist in the standard <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Iterator.html" title="class or interface in java.util"><CODE>Iterator</CODE></A> or <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/ListIterator.html" title="class or interface in java.util"><CODE>ListIterator</CODE></A> interfaces.
+ This method does not exist in the standard <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Iterator.html" title="class or interface in java.util"><CODE>Iterator</CODE></A> or <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/ListIterator.html" title="class or interface in java.util"><CODE>ListIterator</CODE></A> interfaces.
<P>
<DD><DL>
</DL>
@@ -626,7 +634,7 @@ public int <B>count</B>()</PRE>
<DT><B>Returns:</B><DD>the number of duplicates.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalStateException.html" title="class or interface in java.lang">IllegalStateException</A></CODE> - if next() or previous() has not been
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalStateException.html" title="class or interface in java.lang">IllegalStateException</A></CODE> - if next() or previous() has not been
called for this iterator, or if remove() or add() were called after
the last call to next() or previous().</DL>
</DD>
@@ -639,7 +647,7 @@ close</H3>
public void <B>close</B>()</PRE>
<DL>
<DD>Closes this iterator.
- This method does not exist in the standard <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Iterator.html" title="class or interface in java.util"><CODE>Iterator</CODE></A> or <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/ListIterator.html" title="class or interface in java.util"><CODE>ListIterator</CODE></A> interfaces.
+ This method does not exist in the standard <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Iterator.html" title="class or interface in java.util"><CODE>Iterator</CODE></A> or <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/ListIterator.html" title="class or interface in java.util"><CODE>ListIterator</CODE></A> interfaces.
<p>After being closed, only the <A HREF="../../../com/sleepycat/collections/StoredIterator.html#hasNext()"><CODE>hasNext()</CODE></A> and <A HREF="../../../com/sleepycat/collections/StoredIterator.html#hasPrevious()"><CODE>hasPrevious()</CODE></A> methods may be called and these will return false. <A HREF="../../../com/sleepycat/collections/StoredIterator.html#close()"><CODE>close()</CODE></A> may also be called again and will do nothing. If other
methods are called a <code>NullPointerException</code> will generally be
@@ -663,7 +671,7 @@ getCollection</H3>
public final <A HREF="../../../com/sleepycat/collections/StoredCollection.html" title="class in com.sleepycat.collections">StoredCollection</A> <B>getCollection</B>()</PRE>
<DL>
<DD>Returns the collection associated with this iterator.
- This method does not exist in the standard <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Iterator.html" title="class or interface in java.util"><CODE>Iterator</CODE></A> or <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/ListIterator.html" title="class or interface in java.util"><CODE>ListIterator</CODE></A> interfaces.
+ This method does not exist in the standard <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Iterator.html" title="class or interface in java.util"><CODE>Iterator</CODE></A> or <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/ListIterator.html" title="class or interface in java.util"><CODE>ListIterator</CODE></A> interfaces.
<P>
<DD><DL>
</DL>
@@ -678,7 +686,7 @@ public final <A HREF="../../../com/sleepycat/collections/StoredCollection.html"
<A NAME="dup()"><!-- --></A><H3>
dup</H3>
<PRE>
-public final <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/ListIterator.html" title="class or interface in java.util">ListIterator</A> <B>dup</B>()</PRE>
+public final <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/ListIterator.html" title="class or interface in java.util">ListIterator</A> <B>dup</B>()</PRE>
<DL>
<DD>Duplicate a cursor. Called by StoredCollections.iterator.
<P>
@@ -694,7 +702,7 @@ public final <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/ListIterat
<A NAME="isCurrentData(java.lang.Object)"><!-- --></A><H3>
isCurrentData</H3>
<PRE>
-public final boolean <B>isCurrentData</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;currentData)</PRE>
+public final boolean <B>isCurrentData</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;currentData)</PRE>
<DL>
<DD>Returns whether the given data is the current iterator data. Called by
StoredMapEntry.setValue.
@@ -748,7 +756,7 @@ public final boolean <B>moveToIndex</B>(int&nbsp;index)</PRE>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -784,6 +792,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHO
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/collections/StoredKeySet.html b/db/docs/java/com/sleepycat/collections/StoredKeySet.html
index 9f86cd31a..e90a51dcd 100644
--- a/db/docs/java/com/sleepycat/collections/StoredKeySet.html
+++ b/db/docs/java/com/sleepycat/collections/StoredKeySet.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:47 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-StoredKeySet (Oracle Corporation - Berkeley DB Java API)
+StoredKeySet (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.collections.StoredKeySet class">
@@ -14,7 +14,7 @@ StoredKeySet (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="StoredKeySet (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="StoredKeySet (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,20 +89,20 @@ com.sleepycat.collections</FONT>
<BR>
Class StoredKeySet</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../com/sleepycat/collections/StoredContainer.html" title="class in com.sleepycat.collections">com.sleepycat.collections.StoredContainer</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../com/sleepycat/collections/StoredCollection.html" title="class in com.sleepycat.collections">com.sleepycat.collections.StoredCollection</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.collections.StoredKeySet</B>
</PRE>
<DL>
-<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Iterable.html" title="class or interface in java.lang">Iterable</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A></DD>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Iterable.html" title="class or interface in java.lang">Iterable</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A></DD>
</DL>
<DL>
<DT><B>Direct Known Subclasses:</B> <DD><A HREF="../../../com/sleepycat/collections/StoredSortedKeySet.html" title="class in com.sleepycat.collections">StoredSortedKeySet</A></DD>
</DL>
<HR>
<DL>
-<DT><PRE>public class <B>StoredKeySet</B><DT>extends <A HREF="../../../com/sleepycat/collections/StoredCollection.html" title="class in com.sleepycat.collections">StoredCollection</A><DT>implements <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A></DL>
+<DT><PRE>public class <B>StoredKeySet</B><DT>extends <A HREF="../../../com/sleepycat/collections/StoredCollection.html" title="class in com.sleepycat.collections">StoredCollection</A><DT>implements <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A></DL>
</PRE>
<P>
@@ -166,7 +166,7 @@ The Set returned by Map.keySet() and which can also be constructed directly
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredKeySet.html#add(java.lang.Object)">add</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;key)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredKeySet.html#add(java.lang.Object)">add</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;key)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Adds the specified key to this set if it is not already present
@@ -175,7 +175,7 @@ The Set returned by Map.keySet() and which can also be constructed directly
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredKeySet.html#contains(java.lang.Object)">contains</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;key)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredKeySet.html#contains(java.lang.Object)">contains</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;key)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns true if this set contains the specified key.</TD>
@@ -183,7 +183,7 @@ The Set returned by Map.keySet() and which can also be constructed directly
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredKeySet.html#remove(java.lang.Object)">remove</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;key)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredKeySet.html#remove(java.lang.Object)">remove</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;key)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Removes the specified key from this set if it is present (optional
@@ -211,19 +211,19 @@ The Set returned by Map.keySet() and which can also be constructed directly
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.util.Set"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from interface java.util.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from interface java.util.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#addAll(java.util.Collection)" title="class or interface in java.util">addAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#clear()" title="class or interface in java.util">clear</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#containsAll(java.util.Collection)" title="class or interface in java.util">containsAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#equals(java.lang.Object)" title="class or interface in java.util">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#hashCode()" title="class or interface in java.util">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#isEmpty()" title="class or interface in java.util">isEmpty</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#iterator()" title="class or interface in java.util">iterator</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#removeAll(java.util.Collection)" title="class or interface in java.util">removeAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#retainAll(java.util.Collection)" title="class or interface in java.util">retainAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#size()" title="class or interface in java.util">size</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#toArray()" title="class or interface in java.util">toArray</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#toArray(java.lang.Object[])" title="class or interface in java.util">toArray</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#addAll(java.util.Collection)" title="class or interface in java.util">addAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#clear()" title="class or interface in java.util">clear</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#containsAll(java.util.Collection)" title="class or interface in java.util">containsAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#equals(java.lang.Object)" title="class or interface in java.util">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#hashCode()" title="class or interface in java.util">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#isEmpty()" title="class or interface in java.util">isEmpty</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#iterator()" title="class or interface in java.util">iterator</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#removeAll(java.util.Collection)" title="class or interface in java.util">removeAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#retainAll(java.util.Collection)" title="class or interface in java.util">retainAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#size()" title="class or interface in java.util">size</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#toArray()" title="class or interface in java.util">toArray</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#toArray(java.lang.Object[])" title="class or interface in java.util">toArray</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -253,7 +253,7 @@ public <B>StoredKeySet</B>(<A HREF="../../../com/sleepycat/db/Database.html" tit
and key objects.<DD><CODE>writeAllowed</CODE> - is true to create a read-write collection or false
to create a read-only collection.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if formats are not consistently
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if formats are not consistently
defined or a parameter is invalid.
<DD><CODE>RuntimeExceptionWrapper</CODE> - if a <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db"><CODE>DatabaseException</CODE></A> is
thrown.</DL>
@@ -272,21 +272,21 @@ public <B>StoredKeySet</B>(<A HREF="../../../com/sleepycat/db/Database.html" tit
<A NAME="add(java.lang.Object)"><!-- --></A><H3>
add</H3>
<PRE>
-public boolean <B>add</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;key)</PRE>
+public boolean <B>add</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;key)</PRE>
<DL>
<DD>Adds the specified key to this set if it is not already present
(optional operation).
When a key is added the value in the underlying data store will be
empty.
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#add(java.lang.Object)" title="class or interface in java.util"><CODE>Set.add(java.lang.Object)</CODE></A> interface.
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#add(java.lang.Object)" title="class or interface in java.util"><CODE>Set.add(java.lang.Object)</CODE></A> interface.
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html#add(java.lang.Object)" title="class or interface in java.util">add</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE><DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#add(java.lang.Object)" title="class or interface in java.util">add</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html#add(java.lang.Object)" title="class or interface in java.util">add</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE><DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#add(java.lang.Object)" title="class or interface in java.util">add</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/UnsupportedOperationException.html" title="class or interface in java.lang">UnsupportedOperationException</A></CODE> - if the collection is indexed, or
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/UnsupportedOperationException.html" title="class or interface in java.lang">UnsupportedOperationException</A></CODE> - if the collection is indexed, or
if the collection is read-only.
<DD><CODE>RuntimeExceptionWrapper</CODE> - if a <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db"><CODE>DatabaseException</CODE></A> is
thrown.</DL>
@@ -297,21 +297,21 @@ public boolean <B>add</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/la
<A NAME="remove(java.lang.Object)"><!-- --></A><H3>
remove</H3>
<PRE>
-public boolean <B>remove</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;key)</PRE>
+public boolean <B>remove</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;key)</PRE>
<DL>
<DD>Removes the specified key from this set if it is present (optional
operation).
If duplicates are allowed, this method removes all duplicates for the
given key.
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#remove(java.lang.Object)" title="class or interface in java.util"><CODE>Set.remove(java.lang.Object)</CODE></A> interface.
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#remove(java.lang.Object)" title="class or interface in java.util"><CODE>Set.remove(java.lang.Object)</CODE></A> interface.
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html#remove(java.lang.Object)" title="class or interface in java.util">remove</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE><DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#remove(java.lang.Object)" title="class or interface in java.util">remove</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html#remove(java.lang.Object)" title="class or interface in java.util">remove</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE><DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#remove(java.lang.Object)" title="class or interface in java.util">remove</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/UnsupportedOperationException.html" title="class or interface in java.lang">UnsupportedOperationException</A></CODE> - if the collection is read-only.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/UnsupportedOperationException.html" title="class or interface in java.lang">UnsupportedOperationException</A></CODE> - if the collection is read-only.
<DD><CODE>RuntimeExceptionWrapper</CODE> - if a <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db"><CODE>DatabaseException</CODE></A> is
thrown.</DL>
</DD>
@@ -321,13 +321,13 @@ public boolean <B>remove</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java
<A NAME="contains(java.lang.Object)"><!-- --></A><H3>
contains</H3>
<PRE>
-public boolean <B>contains</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;key)</PRE>
+public boolean <B>contains</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;key)</PRE>
<DL>
<DD>Returns true if this set contains the specified key.
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#contains(java.lang.Object)" title="class or interface in java.util"><CODE>Set.contains(java.lang.Object)</CODE></A> interface.
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#contains(java.lang.Object)" title="class or interface in java.util"><CODE>Set.contains(java.lang.Object)</CODE></A> interface.
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html#contains(java.lang.Object)" title="class or interface in java.util">contains</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE><DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#contains(java.lang.Object)" title="class or interface in java.util">contains</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html#contains(java.lang.Object)" title="class or interface in java.util">contains</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE><DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#contains(java.lang.Object)" title="class or interface in java.util">contains</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A></CODE></DL>
</DD>
<DD><DL>
@@ -361,7 +361,7 @@ public boolean <B>contains</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/ja
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -397,6 +397,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&n
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/collections/StoredList.html b/db/docs/java/com/sleepycat/collections/StoredList.html
index 86d1109f2..4d891b141 100644
--- a/db/docs/java/com/sleepycat/collections/StoredList.html
+++ b/db/docs/java/com/sleepycat/collections/StoredList.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:47 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-StoredList (Oracle Corporation - Berkeley DB Java API)
+StoredList (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.collections.StoredList class">
@@ -14,7 +14,7 @@ StoredList (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="StoredList (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="StoredList (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,17 +89,17 @@ com.sleepycat.collections</FONT>
<BR>
Class StoredList</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../com/sleepycat/collections/StoredContainer.html" title="class in com.sleepycat.collections">com.sleepycat.collections.StoredContainer</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../com/sleepycat/collections/StoredCollection.html" title="class in com.sleepycat.collections">com.sleepycat.collections.StoredCollection</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.collections.StoredList</B>
</PRE>
<DL>
-<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Iterable.html" title="class or interface in java.lang">Iterable</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html" title="class or interface in java.util">List</A></DD>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Iterable.html" title="class or interface in java.lang">Iterable</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" title="class or interface in java.util">List</A></DD>
</DL>
<HR>
<DL>
-<DT><PRE>public class <B>StoredList</B><DT>extends <A HREF="../../../com/sleepycat/collections/StoredCollection.html" title="class in com.sleepycat.collections">StoredCollection</A><DT>implements <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html" title="class or interface in java.util">List</A></DL>
+<DT><PRE>public class <B>StoredList</B><DT>extends <A HREF="../../../com/sleepycat/collections/StoredCollection.html" title="class in com.sleepycat.collections">StoredCollection</A><DT>implements <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" title="class or interface in java.util">List</A></DL>
</PRE>
<P>
@@ -199,7 +199,7 @@ A List view of a <A HREF="../../../com/sleepycat/db/Database.html" title="class
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredList.html#add(int, java.lang.Object)">add</A></B>(int&nbsp;index,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</CODE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Inserts the specified element at the specified position in this list
@@ -208,7 +208,7 @@ A List view of a <A HREF="../../../com/sleepycat/db/Database.html" title="class
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredList.html#add(java.lang.Object)">add</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredList.html#add(java.lang.Object)">add</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Appends the specified element to the end of this list (optional
@@ -218,7 +218,7 @@ A List view of a <A HREF="../../../com/sleepycat/db/Database.html" title="class
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredList.html#addAll(int, java.util.Collection)">addAll</A></B>(int&nbsp;index,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>&nbsp;coll)</CODE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>&nbsp;coll)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Inserts all of the elements in the specified collection into this list
@@ -227,7 +227,7 @@ A List view of a <A HREF="../../../com/sleepycat/db/Database.html" title="class
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredList.html#append(java.lang.Object)">append</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredList.html#append(java.lang.Object)">append</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Appends a given value returning the newly assigned index.</TD>
@@ -235,7 +235,7 @@ A List view of a <A HREF="../../../com/sleepycat/db/Database.html" title="class
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredList.html#contains(java.lang.Object)">contains</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredList.html#contains(java.lang.Object)">contains</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns true if this list contains the specified element.</TD>
@@ -243,14 +243,14 @@ A List view of a <A HREF="../../../com/sleepycat/db/Database.html" title="class
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredList.html#equals(java.lang.Object)">equals</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;other)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredList.html#equals(java.lang.Object)">equals</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;other)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compares the specified object with this list for equality.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredList.html#get(int)">get</A></B>(int&nbsp;index)</CODE>
<BR>
@@ -267,7 +267,7 @@ A List view of a <A HREF="../../../com/sleepycat/db/Database.html" title="class
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredList.html#indexOf(java.lang.Object)">indexOf</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredList.html#indexOf(java.lang.Object)">indexOf</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the index in this list of the first occurrence of the specified
@@ -276,7 +276,7 @@ A List view of a <A HREF="../../../com/sleepycat/db/Database.html" title="class
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredList.html#lastIndexOf(java.lang.Object)">lastIndexOf</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredList.html#lastIndexOf(java.lang.Object)">lastIndexOf</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the index in this list of the last occurrence of the specified
@@ -284,7 +284,7 @@ A List view of a <A HREF="../../../com/sleepycat/db/Database.html" title="class
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/ListIterator.html" title="class or interface in java.util">ListIterator</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/ListIterator.html" title="class or interface in java.util">ListIterator</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredList.html#listIterator()">listIterator</A></B>()</CODE>
<BR>
@@ -293,7 +293,7 @@ A List view of a <A HREF="../../../com/sleepycat/db/Database.html" title="class
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/ListIterator.html" title="class or interface in java.util">ListIterator</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/ListIterator.html" title="class or interface in java.util">ListIterator</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredList.html#listIterator(int)">listIterator</A></B>(int&nbsp;index)</CODE>
<BR>
@@ -302,7 +302,7 @@ A List view of a <A HREF="../../../com/sleepycat/db/Database.html" title="class
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredList.html#remove(int)">remove</A></B>(int&nbsp;index)</CODE>
<BR>
@@ -312,7 +312,7 @@ A List view of a <A HREF="../../../com/sleepycat/db/Database.html" title="class
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredList.html#remove(java.lang.Object)">remove</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredList.html#remove(java.lang.Object)">remove</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Removes the first occurrence in this list of the specified element
@@ -320,9 +320,9 @@ A List view of a <A HREF="../../../com/sleepycat/db/Database.html" title="class
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredList.html#set(int, java.lang.Object)">set</A></B>(int&nbsp;index,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</CODE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Replaces the element at the specified position in this list with the
@@ -330,7 +330,7 @@ A List view of a <A HREF="../../../com/sleepycat/db/Database.html" title="class
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html" title="class or interface in java.util">List</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" title="class or interface in java.util">List</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredList.html#subList(int, int)">subList</A></B>(int&nbsp;fromIndex,
int&nbsp;toIndex)</CODE>
@@ -360,19 +360,19 @@ A List view of a <A HREF="../../../com/sleepycat/db/Database.html" title="class
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.util.List"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from interface java.util.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html" title="class or interface in java.util">List</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from interface java.util.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" title="class or interface in java.util">List</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html#addAll(java.util.Collection)" title="class or interface in java.util">addAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html#clear()" title="class or interface in java.util">clear</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html#containsAll(java.util.Collection)" title="class or interface in java.util">containsAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html#isEmpty()" title="class or interface in java.util">isEmpty</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html#iterator()" title="class or interface in java.util">iterator</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html#removeAll(java.util.Collection)" title="class or interface in java.util">removeAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html#retainAll(java.util.Collection)" title="class or interface in java.util">retainAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html#size()" title="class or interface in java.util">size</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html#toArray()" title="class or interface in java.util">toArray</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html#toArray(java.lang.Object[])" title="class or interface in java.util">toArray</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html#addAll(java.util.Collection)" title="class or interface in java.util">addAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html#clear()" title="class or interface in java.util">clear</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html#containsAll(java.util.Collection)" title="class or interface in java.util">containsAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html#isEmpty()" title="class or interface in java.util">isEmpty</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html#iterator()" title="class or interface in java.util">iterator</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html#removeAll(java.util.Collection)" title="class or interface in java.util">removeAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html#retainAll(java.util.Collection)" title="class or interface in java.util">retainAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html#size()" title="class or interface in java.util">size</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html#toArray()" title="class or interface in java.util">toArray</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html#toArray(java.lang.Object[])" title="class or interface in java.util">toArray</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -402,7 +402,7 @@ public <B>StoredList</B>(<A HREF="../../../com/sleepycat/db/Database.html" title
buffers and value objects.<DD><CODE>writeAllowed</CODE> - is true to create a read-write collection or false
to create a read-only collection.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if formats are not consistently
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if formats are not consistently
defined or a parameter is invalid.
<DD><CODE>RuntimeExceptionWrapper</CODE> - if a <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db"><CODE>DatabaseException</CODE></A> is
thrown.</DL>
@@ -423,7 +423,7 @@ public <B>StoredList</B>(<A HREF="../../../com/sleepycat/db/Database.html" title
key/value buffers and entity value objects.<DD><CODE>writeAllowed</CODE> - is true to create a read-write collection or false
to create a read-only collection.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if formats are not consistently
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if formats are not consistently
defined or a parameter is invalid.
<DD><CODE>RuntimeExceptionWrapper</CODE> - if a <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db"><CODE>DatabaseException</CODE></A> is
thrown.</DL>
@@ -444,7 +444,7 @@ public <B>StoredList</B>(<A HREF="../../../com/sleepycat/db/Database.html" title
buffers and value objects.<DD><CODE>keyAssigner</CODE> - is used by the <A HREF="../../../com/sleepycat/collections/StoredList.html#add(int, java.lang.Object)"><CODE>add(int, java.lang.Object)</CODE></A> and <A HREF="../../../com/sleepycat/collections/StoredList.html#append(java.lang.Object)"><CODE>append(java.lang.Object)</CODE></A>
methods to assign primary keys.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if formats are not consistently
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if formats are not consistently
defined or a parameter is invalid.
<DD><CODE>RuntimeExceptionWrapper</CODE> - if a <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db"><CODE>DatabaseException</CODE></A> is
thrown.</DL>
@@ -465,7 +465,7 @@ public <B>StoredList</B>(<A HREF="../../../com/sleepycat/db/Database.html" title
key/value buffers and entity value objects.<DD><CODE>keyAssigner</CODE> - is used by the <A HREF="../../../com/sleepycat/collections/StoredList.html#add(int, java.lang.Object)"><CODE>add(int, java.lang.Object)</CODE></A> and <A HREF="../../../com/sleepycat/collections/StoredList.html#append(java.lang.Object)"><CODE>append(java.lang.Object)</CODE></A>
methods to assign primary keys.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if formats are not consistently
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if formats are not consistently
defined or a parameter is invalid.
<DD><CODE>RuntimeExceptionWrapper</CODE> - if a <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db"><CODE>DatabaseException</CODE></A> is
thrown.</DL>
@@ -485,19 +485,19 @@ public <B>StoredList</B>(<A HREF="../../../com/sleepycat/db/Database.html" title
add</H3>
<PRE>
public void <B>add</B>(int&nbsp;index,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</PRE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</PRE>
<DL>
<DD>Inserts the specified element at the specified position in this list
(optional operation).
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html#add(int, java.lang.Object)" title="class or interface in java.util"><CODE>List.add(int, Object)</CODE></A> interface.
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html#add(int, java.lang.Object)" title="class or interface in java.util"><CODE>List.add(int, Object)</CODE></A> interface.
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html#add(int, java.lang.Object)" title="class or interface in java.util">add</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html" title="class or interface in java.util">List</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html#add(int, java.lang.Object)" title="class or interface in java.util">add</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" title="class or interface in java.util">List</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/UnsupportedOperationException.html" title="class or interface in java.lang">UnsupportedOperationException</A></CODE> - if the collection is a sublist, or
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/UnsupportedOperationException.html" title="class or interface in java.lang">UnsupportedOperationException</A></CODE> - if the collection is a sublist, or
if the collection is indexed, or if the collection is read-only, or if
the RECNO-RENUMBER access method was not used.
<DD><CODE>RuntimeExceptionWrapper</CODE> - if a <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db"><CODE>DatabaseException</CODE></A> is
@@ -509,19 +509,19 @@ public void <B>add</B>(int&nbsp;index,
<A NAME="add(java.lang.Object)"><!-- --></A><H3>
add</H3>
<PRE>
-public boolean <B>add</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</PRE>
+public boolean <B>add</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</PRE>
<DL>
<DD>Appends the specified element to the end of this list (optional
operation).
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html#add(java.lang.Object)" title="class or interface in java.util"><CODE>List.add(Object)</CODE></A> interface.
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html#add(java.lang.Object)" title="class or interface in java.util"><CODE>List.add(Object)</CODE></A> interface.
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html#add(java.lang.Object)" title="class or interface in java.util">add</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE><DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html#add(java.lang.Object)" title="class or interface in java.util">add</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html" title="class or interface in java.util">List</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html#add(java.lang.Object)" title="class or interface in java.util">add</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE><DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html#add(java.lang.Object)" title="class or interface in java.util">add</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" title="class or interface in java.util">List</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/UnsupportedOperationException.html" title="class or interface in java.lang">UnsupportedOperationException</A></CODE> - if the collection is a sublist, or
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/UnsupportedOperationException.html" title="class or interface in java.lang">UnsupportedOperationException</A></CODE> - if the collection is a sublist, or
if the collection is indexed, or if the collection is read-only, or if
the RECNO-RENUMBER access method was not used.
<DD><CODE>RuntimeExceptionWrapper</CODE> - if a <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db"><CODE>DatabaseException</CODE></A> is
@@ -533,14 +533,14 @@ public boolean <B>add</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/la
<A NAME="append(java.lang.Object)"><!-- --></A><H3>
append</H3>
<PRE>
-public int <B>append</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</PRE>
+public int <B>append</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</PRE>
<DL>
<DD>Appends a given value returning the newly assigned index.
If a <A HREF="../../../com/sleepycat/collections/PrimaryKeyAssigner.html" title="interface in com.sleepycat.collections"><CODE>PrimaryKeyAssigner</CODE></A> is associated
with Store for this list, it will be used to assigned the returned
index. Otherwise the Store must be a QUEUE or RECNO database and the
next available record number is assigned as the index. This method does
- not exist in the standard <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html" title="class or interface in java.util"><CODE>List</CODE></A> interface.
+ not exist in the standard <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" title="class or interface in java.util"><CODE>List</CODE></A> interface.
<P>
<DD><DL>
</DL>
@@ -549,7 +549,7 @@ public int <B>append</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lan
<DT><B>Parameters:</B><DD><CODE>value</CODE> - the value to be appended.
<DT><B>Returns:</B><DD>the assigned index.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/UnsupportedOperationException.html" title="class or interface in java.lang">UnsupportedOperationException</A></CODE> - if the collection is indexed, or
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/UnsupportedOperationException.html" title="class or interface in java.lang">UnsupportedOperationException</A></CODE> - if the collection is indexed, or
if the collection is read-only, or if the Store has no <A HREF="../../../com/sleepycat/collections/PrimaryKeyAssigner.html" title="interface in com.sleepycat.collections"><CODE>PrimaryKeyAssigner</CODE></A> and is not a QUEUE or
RECNO database.
<DD><CODE>RuntimeExceptionWrapper</CODE> - if a <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db"><CODE>DatabaseException</CODE></A> is
@@ -562,20 +562,20 @@ public int <B>append</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lan
addAll</H3>
<PRE>
public boolean <B>addAll</B>(int&nbsp;index,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>&nbsp;coll)</PRE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>&nbsp;coll)</PRE>
<DL>
<DD>Inserts all of the elements in the specified collection into this list
at the specified position (optional operation).
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html#addAll(int, java.util.Collection)" title="class or interface in java.util"><CODE>List.addAll(int, Collection)</CODE></A>
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html#addAll(int, java.util.Collection)" title="class or interface in java.util"><CODE>List.addAll(int, Collection)</CODE></A>
interface.
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html#addAll(int, java.util.Collection)" title="class or interface in java.util">addAll</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html" title="class or interface in java.util">List</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html#addAll(int, java.util.Collection)" title="class or interface in java.util">addAll</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" title="class or interface in java.util">List</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/UnsupportedOperationException.html" title="class or interface in java.lang">UnsupportedOperationException</A></CODE> - if the collection is a sublist, or
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/UnsupportedOperationException.html" title="class or interface in java.lang">UnsupportedOperationException</A></CODE> - if the collection is a sublist, or
if the collection is indexed, or if the collection is read-only, or if
the RECNO-RENUMBER access method was not used.
<DD><CODE>RuntimeExceptionWrapper</CODE> - if a <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db"><CODE>DatabaseException</CODE></A> is
@@ -587,13 +587,13 @@ public boolean <B>addAll</B>(int&nbsp;index,
<A NAME="contains(java.lang.Object)"><!-- --></A><H3>
contains</H3>
<PRE>
-public boolean <B>contains</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</PRE>
+public boolean <B>contains</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</PRE>
<DL>
<DD>Returns true if this list contains the specified element.
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html#contains(java.lang.Object)" title="class or interface in java.util"><CODE>List.contains(java.lang.Object)</CODE></A> interface.
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html#contains(java.lang.Object)" title="class or interface in java.util"><CODE>List.contains(java.lang.Object)</CODE></A> interface.
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html#contains(java.lang.Object)" title="class or interface in java.util">contains</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE><DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html#contains(java.lang.Object)" title="class or interface in java.util">contains</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html" title="class or interface in java.util">List</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html#contains(java.lang.Object)" title="class or interface in java.util">contains</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE><DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html#contains(java.lang.Object)" title="class or interface in java.util">contains</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" title="class or interface in java.util">List</A></CODE></DL>
</DD>
<DD><DL>
@@ -607,13 +607,13 @@ public boolean <B>contains</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/ja
<A NAME="get(int)"><!-- --></A><H3>
get</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>get</B>(int&nbsp;index)</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>get</B>(int&nbsp;index)</PRE>
<DL>
<DD>Returns the element at the specified position in this list.
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html#get(int)" title="class or interface in java.util"><CODE>List.get(int)</CODE></A> interface.
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html#get(int)" title="class or interface in java.util"><CODE>List.get(int)</CODE></A> interface.
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html#get(int)" title="class or interface in java.util">get</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html" title="class or interface in java.util">List</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html#get(int)" title="class or interface in java.util">get</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" title="class or interface in java.util">List</A></CODE></DL>
</DD>
<DD><DL>
@@ -627,14 +627,14 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" tit
<A NAME="indexOf(java.lang.Object)"><!-- --></A><H3>
indexOf</H3>
<PRE>
-public int <B>indexOf</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</PRE>
+public int <B>indexOf</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</PRE>
<DL>
<DD>Returns the index in this list of the first occurrence of the specified
element, or -1 if this list does not contain this element.
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html#indexOf(java.lang.Object)" title="class or interface in java.util"><CODE>List.indexOf(java.lang.Object)</CODE></A> interface.
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html#indexOf(java.lang.Object)" title="class or interface in java.util"><CODE>List.indexOf(java.lang.Object)</CODE></A> interface.
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html#indexOf(java.lang.Object)" title="class or interface in java.util">indexOf</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html" title="class or interface in java.util">List</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html#indexOf(java.lang.Object)" title="class or interface in java.util">indexOf</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" title="class or interface in java.util">List</A></CODE></DL>
</DD>
<DD><DL>
@@ -648,14 +648,14 @@ public int <B>indexOf</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/la
<A NAME="lastIndexOf(java.lang.Object)"><!-- --></A><H3>
lastIndexOf</H3>
<PRE>
-public int <B>lastIndexOf</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</PRE>
+public int <B>lastIndexOf</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</PRE>
<DL>
<DD>Returns the index in this list of the last occurrence of the specified
element, or -1 if this list does not contain this element.
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html#lastIndexOf(java.lang.Object)" title="class or interface in java.util"><CODE>List.lastIndexOf(java.lang.Object)</CODE></A> interface.
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html#lastIndexOf(java.lang.Object)" title="class or interface in java.util"><CODE>List.lastIndexOf(java.lang.Object)</CODE></A> interface.
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html#lastIndexOf(java.lang.Object)" title="class or interface in java.util">lastIndexOf</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html" title="class or interface in java.util">List</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html#lastIndexOf(java.lang.Object)" title="class or interface in java.util">lastIndexOf</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" title="class or interface in java.util">List</A></CODE></DL>
</DD>
<DD><DL>
@@ -669,22 +669,22 @@ public int <B>lastIndexOf</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/jav
<A NAME="listIterator()"><!-- --></A><H3>
listIterator</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/ListIterator.html" title="class or interface in java.util">ListIterator</A> <B>listIterator</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/ListIterator.html" title="class or interface in java.util">ListIterator</A> <B>listIterator</B>()</PRE>
<DL>
<DD>Returns a list iterator of the elements in this list (in proper
sequence).
The iterator will be read-only if the collection is read-only.
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html#listIterator()" title="class or interface in java.util"><CODE>List.listIterator()</CODE></A> interface.
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html#listIterator()" title="class or interface in java.util"><CODE>List.listIterator()</CODE></A> interface.
<p>For information on cursor stability and iterator block size, see
<A HREF="../../../com/sleepycat/collections/StoredCollection.html#iterator()"><CODE>StoredCollection.iterator()</CODE></A>.</p>
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html#listIterator()" title="class or interface in java.util">listIterator</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html" title="class or interface in java.util">List</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html#listIterator()" title="class or interface in java.util">listIterator</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" title="class or interface in java.util">List</A></CODE></DL>
</DD>
<DD><DL>
-<DT><B>Returns:</B><DD>a <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/ListIterator.html" title="class or interface in java.util"><CODE>ListIterator</CODE></A> for this collection.
+<DT><B>Returns:</B><DD>a <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/ListIterator.html" title="class or interface in java.util"><CODE>ListIterator</CODE></A> for this collection.
<DT><B>Throws:</B>
<DD><CODE>RuntimeExceptionWrapper</CODE> - if a <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db"><CODE>DatabaseException</CODE></A> is
thrown.<DT><B>See Also:</B><DD><A HREF="../../../com/sleepycat/collections/StoredContainer.html#isWriteAllowed()"><CODE>StoredContainer.isWriteAllowed()</CODE></A></DL>
@@ -695,22 +695,22 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/ListIterator.htm
<A NAME="listIterator(int)"><!-- --></A><H3>
listIterator</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/ListIterator.html" title="class or interface in java.util">ListIterator</A> <B>listIterator</B>(int&nbsp;index)</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/ListIterator.html" title="class or interface in java.util">ListIterator</A> <B>listIterator</B>(int&nbsp;index)</PRE>
<DL>
<DD>Returns a list iterator of the elements in this list (in proper
sequence), starting at the specified position in this list.
The iterator will be read-only if the collection is read-only.
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html#listIterator(int)" title="class or interface in java.util"><CODE>List.listIterator(int)</CODE></A> interface.
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html#listIterator(int)" title="class or interface in java.util"><CODE>List.listIterator(int)</CODE></A> interface.
<p>For information on cursor stability and iterator block size, see
<A HREF="../../../com/sleepycat/collections/StoredCollection.html#iterator()"><CODE>StoredCollection.iterator()</CODE></A>.</p>
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html#listIterator(int)" title="class or interface in java.util">listIterator</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html" title="class or interface in java.util">List</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html#listIterator(int)" title="class or interface in java.util">listIterator</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" title="class or interface in java.util">List</A></CODE></DL>
</DD>
<DD><DL>
-<DT><B>Returns:</B><DD>a <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/ListIterator.html" title="class or interface in java.util"><CODE>ListIterator</CODE></A> for this collection.
+<DT><B>Returns:</B><DD>a <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/ListIterator.html" title="class or interface in java.util"><CODE>ListIterator</CODE></A> for this collection.
<DT><B>Throws:</B>
<DD><CODE>RuntimeExceptionWrapper</CODE> - if a <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db"><CODE>DatabaseException</CODE></A> is
thrown.<DT><B>See Also:</B><DD><A HREF="../../../com/sleepycat/collections/StoredContainer.html#isWriteAllowed()"><CODE>StoredContainer.isWriteAllowed()</CODE></A></DL>
@@ -721,19 +721,19 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/ListIterator.htm
<A NAME="remove(int)"><!-- --></A><H3>
remove</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>remove</B>(int&nbsp;index)</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>remove</B>(int&nbsp;index)</PRE>
<DL>
<DD>Removes the element at the specified position in this list (optional
operation).
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html#remove(int)" title="class or interface in java.util"><CODE>List.remove(int)</CODE></A> interface.
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html#remove(int)" title="class or interface in java.util"><CODE>List.remove(int)</CODE></A> interface.
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html#remove(int)" title="class or interface in java.util">remove</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html" title="class or interface in java.util">List</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html#remove(int)" title="class or interface in java.util">remove</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" title="class or interface in java.util">List</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/UnsupportedOperationException.html" title="class or interface in java.lang">UnsupportedOperationException</A></CODE> - if the collection is a sublist, or
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/UnsupportedOperationException.html" title="class or interface in java.lang">UnsupportedOperationException</A></CODE> - if the collection is a sublist, or
if the collection is read-only.
<DD><CODE>RuntimeExceptionWrapper</CODE> - if a <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db"><CODE>DatabaseException</CODE></A> is
thrown.</DL>
@@ -744,19 +744,19 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" tit
<A NAME="remove(java.lang.Object)"><!-- --></A><H3>
remove</H3>
<PRE>
-public boolean <B>remove</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</PRE>
+public boolean <B>remove</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</PRE>
<DL>
<DD>Removes the first occurrence in this list of the specified element
(optional operation).
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html#remove(java.lang.Object)" title="class or interface in java.util"><CODE>List.remove(Object)</CODE></A> interface.
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html#remove(java.lang.Object)" title="class or interface in java.util"><CODE>List.remove(Object)</CODE></A> interface.
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html#remove(java.lang.Object)" title="class or interface in java.util">remove</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE><DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html#remove(java.lang.Object)" title="class or interface in java.util">remove</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html" title="class or interface in java.util">List</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html#remove(java.lang.Object)" title="class or interface in java.util">remove</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE><DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html#remove(java.lang.Object)" title="class or interface in java.util">remove</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" title="class or interface in java.util">List</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/UnsupportedOperationException.html" title="class or interface in java.lang">UnsupportedOperationException</A></CODE> - if the collection is a sublist, or
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/UnsupportedOperationException.html" title="class or interface in java.lang">UnsupportedOperationException</A></CODE> - if the collection is a sublist, or
if the collection is read-only.
<DD><CODE>RuntimeExceptionWrapper</CODE> - if a <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db"><CODE>DatabaseException</CODE></A> is
thrown.</DL>
@@ -767,22 +767,22 @@ public boolean <B>remove</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java
<A NAME="set(int, java.lang.Object)"><!-- --></A><H3>
set</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>set</B>(int&nbsp;index,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>set</B>(int&nbsp;index,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</PRE>
<DL>
<DD>Replaces the element at the specified position in this list with the
specified element (optional operation).
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html#set(int, java.lang.Object)" title="class or interface in java.util"><CODE>List.set(int, java.lang.Object)</CODE></A> interface.
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html#set(int, java.lang.Object)" title="class or interface in java.util"><CODE>List.set(int, java.lang.Object)</CODE></A> interface.
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html#set(int, java.lang.Object)" title="class or interface in java.util">set</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html" title="class or interface in java.util">List</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html#set(int, java.lang.Object)" title="class or interface in java.util">set</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" title="class or interface in java.util">List</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/UnsupportedOperationException.html" title="class or interface in java.lang">UnsupportedOperationException</A></CODE> - if the collection is indexed, or
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/UnsupportedOperationException.html" title="class or interface in java.lang">UnsupportedOperationException</A></CODE> - if the collection is indexed, or
if the collection is read-only.
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an entity value binding is used and
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an entity value binding is used and
the primary key of the value given is different than the existing stored
primary key.
<DD><CODE>RuntimeExceptionWrapper</CODE> - if a <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db"><CODE>DatabaseException</CODE></A> is
@@ -794,16 +794,16 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" tit
<A NAME="subList(int, int)"><!-- --></A><H3>
subList</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html" title="class or interface in java.util">List</A> <B>subList</B>(int&nbsp;fromIndex,
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" title="class or interface in java.util">List</A> <B>subList</B>(int&nbsp;fromIndex,
int&nbsp;toIndex)</PRE>
<DL>
<DD>Returns a view of the portion of this list between the specified
fromIndex, inclusive, and toIndex, exclusive.
Note that add() and remove() may not be called for the returned sublist.
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html#subList(int, int)" title="class or interface in java.util"><CODE>List.subList(int, int)</CODE></A> interface.
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html#subList(int, int)" title="class or interface in java.util"><CODE>List.subList(int, int)</CODE></A> interface.
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html#subList(int, int)" title="class or interface in java.util">subList</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html" title="class or interface in java.util">List</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html#subList(int, int)" title="class or interface in java.util">subList</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" title="class or interface in java.util">List</A></CODE></DL>
</DD>
<DD><DL>
@@ -817,15 +817,15 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html" title
<A NAME="equals(java.lang.Object)"><!-- --></A><H3>
equals</H3>
<PRE>
-public boolean <B>equals</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;other)</PRE>
+public boolean <B>equals</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;other)</PRE>
<DL>
<DD>Compares the specified object with this list for equality.
A value comparison is performed by this method and the stored values
are compared rather than calling the equals() method of each element.
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html#equals(java.lang.Object)" title="class or interface in java.util"><CODE>List.equals(java.lang.Object)</CODE></A> interface.
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html#equals(java.lang.Object)" title="class or interface in java.util"><CODE>List.equals(java.lang.Object)</CODE></A> interface.
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html#equals(java.lang.Object)" title="class or interface in java.util">equals</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE><DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html#equals(java.lang.Object)" title="class or interface in java.util">equals</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html" title="class or interface in java.util">List</A></CODE><DT><B>Overrides:</B><DD><CODE><A HREF="../../../com/sleepycat/collections/StoredCollection.html#equals(java.lang.Object)">equals</A></CODE> in class <CODE><A HREF="../../../com/sleepycat/collections/StoredCollection.html" title="class in com.sleepycat.collections">StoredCollection</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html#equals(java.lang.Object)" title="class or interface in java.util">equals</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE><DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html#equals(java.lang.Object)" title="class or interface in java.util">equals</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" title="class or interface in java.util">List</A></CODE><DT><B>Overrides:</B><DD><CODE><A HREF="../../../com/sleepycat/collections/StoredCollection.html#equals(java.lang.Object)">equals</A></CODE> in class <CODE><A HREF="../../../com/sleepycat/collections/StoredCollection.html" title="class in com.sleepycat.collections">StoredCollection</A></CODE></DL>
</DD>
<DD><DL>
@@ -842,7 +842,7 @@ hashCode</H3>
public int <B>hashCode</B>()</PRE>
<DL>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html#hashCode()" title="class or interface in java.util">hashCode</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE><DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html#hashCode()" title="class or interface in java.util">hashCode</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html" title="class or interface in java.util">List</A></CODE><DT><B>Overrides:</B><DD><CODE><A HREF="../../../com/sleepycat/collections/StoredCollection.html#hashCode()">hashCode</A></CODE> in class <CODE><A HREF="../../../com/sleepycat/collections/StoredCollection.html" title="class in com.sleepycat.collections">StoredCollection</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html#hashCode()" title="class or interface in java.util">hashCode</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE><DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html#hashCode()" title="class or interface in java.util">hashCode</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" title="class or interface in java.util">List</A></CODE><DT><B>Overrides:</B><DD><CODE><A HREF="../../../com/sleepycat/collections/StoredCollection.html#hashCode()">hashCode</A></CODE> in class <CODE><A HREF="../../../com/sleepycat/collections/StoredCollection.html" title="class in com.sleepycat.collections">StoredCollection</A></CODE></DL>
</DD>
<DD><DL>
</DL>
@@ -873,7 +873,7 @@ public int <B>hashCode</B>()</PRE>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -909,6 +909,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&n
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/collections/StoredMap.html b/db/docs/java/com/sleepycat/collections/StoredMap.html
index 4e3b103a3..a3f63d0aa 100644
--- a/db/docs/java/com/sleepycat/collections/StoredMap.html
+++ b/db/docs/java/com/sleepycat/collections/StoredMap.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:47 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-StoredMap (Oracle Corporation - Berkeley DB Java API)
+StoredMap (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.collections.StoredMap class">
@@ -14,7 +14,7 @@ StoredMap (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="StoredMap (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="StoredMap (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,19 +89,19 @@ com.sleepycat.collections</FONT>
<BR>
Class StoredMap</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../com/sleepycat/collections/StoredContainer.html" title="class in com.sleepycat.collections">com.sleepycat.collections.StoredContainer</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.collections.StoredMap</B>
</PRE>
<DL>
-<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A></DD>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A></DD>
</DL>
<DL>
<DT><B>Direct Known Subclasses:</B> <DD><A HREF="../../../com/sleepycat/collections/StoredSortedMap.html" title="class in com.sleepycat.collections">StoredSortedMap</A></DD>
</DL>
<HR>
<DL>
-<DT><PRE>public class <B>StoredMap</B><DT>extends <A HREF="../../../com/sleepycat/collections/StoredContainer.html" title="class in com.sleepycat.collections">StoredContainer</A><DT>implements <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A></DL>
+<DT><PRE>public class <B>StoredMap</B><DT>extends <A HREF="../../../com/sleepycat/collections/StoredContainer.html" title="class in com.sleepycat.collections">StoredContainer</A><DT>implements <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A></DL>
</PRE>
<P>
@@ -133,10 +133,10 @@ A Map view of a <A HREF="../../../com/sleepycat/db/Database.html" title="class i
&nbsp;<A NAME="nested_classes_inherited_from_class_java.util.Map"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Nested classes/interfaces inherited from interface java.util.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A></B></TH>
+<TH ALIGN="left"><B>Nested classes/interfaces inherited from interface java.util.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.Entry.html" title="class or interface in java.util">Map.Entry</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.Entry.html" title="class or interface in java.util">Map.Entry</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -197,8 +197,8 @@ A Map view of a <A HREF="../../../com/sleepycat/db/Database.html" title="class i
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredMap.html#append(java.lang.Object)">append</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</CODE>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredMap.html#append(java.lang.Object)">append</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Appends a given value returning the newly assigned key.</TD>
@@ -206,7 +206,7 @@ A Map view of a <A HREF="../../../com/sleepycat/db/Database.html" title="class i
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredMap.html#containsKey(java.lang.Object)">containsKey</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;key)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredMap.html#containsKey(java.lang.Object)">containsKey</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;key)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns true if this map contains the specified key.</TD>
@@ -214,15 +214,15 @@ A Map view of a <A HREF="../../../com/sleepycat/db/Database.html" title="class i
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredMap.html#containsValue(java.lang.Object)">containsValue</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredMap.html#containsValue(java.lang.Object)">containsValue</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns true if this map contains the specified value.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredMap.html#duplicates(java.lang.Object)">duplicates</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;key)</CODE>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredMap.html#duplicates(java.lang.Object)">duplicates</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;key)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a new collection containing the values mapped to the given key
@@ -230,8 +230,8 @@ A Map view of a <A HREF="../../../com/sleepycat/db/Database.html" title="class i
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredMap.html#duplicatesMap(java.lang.Object, com.sleepycat.bind.EntryBinding)">duplicatesMap</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;secondaryKey,
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredMap.html#duplicatesMap(java.lang.Object, com.sleepycat.bind.EntryBinding)">duplicatesMap</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;secondaryKey,
<A HREF="../../../com/sleepycat/bind/EntryBinding.html" title="interface in com.sleepycat.bind">EntryBinding</A>&nbsp;primaryKeyBinding)</CODE>
<BR>
@@ -240,7 +240,7 @@ A Map view of a <A HREF="../../../com/sleepycat/db/Database.html" title="class i
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredMap.html#entrySet()">entrySet</A></B>()</CODE>
<BR>
@@ -249,15 +249,15 @@ A Map view of a <A HREF="../../../com/sleepycat/db/Database.html" title="class i
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredMap.html#equals(java.lang.Object)">equals</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;other)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredMap.html#equals(java.lang.Object)">equals</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;other)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compares the specified object with this map for equality.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredMap.html#get(java.lang.Object)">get</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;key)</CODE>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredMap.html#get(java.lang.Object)">get</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;key)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the value to which this map maps the specified key.</TD>
@@ -272,7 +272,7 @@ A Map view of a <A HREF="../../../com/sleepycat/db/Database.html" title="class i
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredMap.html#keySet()">keySet</A></B>()</CODE>
<BR>
@@ -280,9 +280,9 @@ A Map view of a <A HREF="../../../com/sleepycat/db/Database.html" title="class i
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredMap.html#put(java.lang.Object, java.lang.Object)">put</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;key,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</CODE>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredMap.html#put(java.lang.Object, java.lang.Object)">put</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;key,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Associates the specified value with the specified key in this map
@@ -291,7 +291,7 @@ A Map view of a <A HREF="../../../com/sleepycat/db/Database.html" title="class i
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredMap.html#putAll(java.util.Map)">putAll</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A>&nbsp;map)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredMap.html#putAll(java.util.Map)">putAll</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A>&nbsp;map)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Copies all of the mappings from the specified map to this map (optional
@@ -299,8 +299,8 @@ A Map view of a <A HREF="../../../com/sleepycat/db/Database.html" title="class i
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredMap.html#remove(java.lang.Object)">remove</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;key)</CODE>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredMap.html#remove(java.lang.Object)">remove</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;key)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Removes the mapping for this key from this map if present (optional
@@ -312,11 +312,12 @@ A Map view of a <A HREF="../../../com/sleepycat/db/Database.html" title="class i
<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredMap.html#size()">size</A></B>()</CODE>
<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the number of records in the collection or map.</TD>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a non-transactional count of the records in the collection or
+ map.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredMap.html#toString()">toString</A></B>()</CODE>
<BR>
@@ -324,7 +325,7 @@ A Map view of a <A HREF="../../../com/sleepycat/db/Database.html" title="class i
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredMap.html#values()">values</A></B>()</CODE>
<BR>
@@ -343,19 +344,19 @@ A Map view of a <A HREF="../../../com/sleepycat/db/Database.html" title="class i
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.util.Map"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from interface java.util.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from interface java.util.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#clear()" title="class or interface in java.util">clear</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#isEmpty()" title="class or interface in java.util">isEmpty</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#clear()" title="class or interface in java.util">clear</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#isEmpty()" title="class or interface in java.util">isEmpty</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -387,7 +388,7 @@ public <B>StoredMap</B>(<A HREF="../../../com/sleepycat/db/Database.html" title=
buffers and value objects.<DD><CODE>writeAllowed</CODE> - is true to create a read-write collection or false
to create a read-only collection.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if formats are not consistently
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if formats are not consistently
defined or a parameter is invalid.
<DD><CODE>RuntimeExceptionWrapper</CODE> - if a <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db"><CODE>DatabaseException</CODE></A> is thrown.</DL>
</DL>
@@ -409,7 +410,7 @@ public <B>StoredMap</B>(<A HREF="../../../com/sleepycat/db/Database.html" title=
buffers and value objects.<DD><CODE>keyAssigner</CODE> - is used by the <A HREF="../../../com/sleepycat/collections/StoredMap.html#append(java.lang.Object)"><CODE>append(java.lang.Object)</CODE></A> method to assign
primary keys.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if formats are not consistently
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if formats are not consistently
defined or a parameter is invalid.
<DD><CODE>RuntimeExceptionWrapper</CODE> - if a <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db"><CODE>DatabaseException</CODE></A> is thrown.</DL>
</DL>
@@ -431,7 +432,7 @@ public <B>StoredMap</B>(<A HREF="../../../com/sleepycat/db/Database.html" title=
key/value buffers and entity value objects.<DD><CODE>writeAllowed</CODE> - is true to create a read-write collection or false
to create a read-only collection.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if formats are not consistently
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if formats are not consistently
defined or a parameter is invalid.
<DD><CODE>RuntimeExceptionWrapper</CODE> - if a <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db"><CODE>DatabaseException</CODE></A> is thrown.</DL>
</DL>
@@ -453,7 +454,7 @@ public <B>StoredMap</B>(<A HREF="../../../com/sleepycat/db/Database.html" title=
key/value buffers and entity value objects.<DD><CODE>keyAssigner</CODE> - is used by the <A HREF="../../../com/sleepycat/collections/StoredMap.html#append(java.lang.Object)"><CODE>append(java.lang.Object)</CODE></A> method to assign
primary keys.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if formats are not consistently
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if formats are not consistently
defined or a parameter is invalid.
<DD><CODE>RuntimeExceptionWrapper</CODE> - if a <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db"><CODE>DatabaseException</CODE></A> is thrown.</DL>
</DL>
@@ -471,17 +472,17 @@ public <B>StoredMap</B>(<A HREF="../../../com/sleepycat/db/Database.html" title=
<A NAME="get(java.lang.Object)"><!-- --></A><H3>
get</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>get</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;key)</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>get</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;key)</PRE>
<DL>
<DD>Returns the value to which this map maps the specified key. If
duplicates are allowed, this method returns the first duplicate, in the
order in which duplicates are configured, that maps to the specified
key.
-
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#get(java.lang.Object)" title="class or interface in java.util"><CODE>Map.get(java.lang.Object)</CODE></A> interface.
+
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#get(java.lang.Object)" title="class or interface in java.util"><CODE>Map.get(java.lang.Object)</CODE></A> interface.
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#get(java.lang.Object)" title="class or interface in java.util">get</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#get(java.lang.Object)" title="class or interface in java.util">get</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A></CODE></DL>
</DD>
<DD><DL>
@@ -494,13 +495,13 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" tit
<A NAME="put(java.lang.Object, java.lang.Object)"><!-- --></A><H3>
put</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>put</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;key,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>put</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;key,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</PRE>
<DL>
<DD>Associates the specified value with the specified key in this map
(optional operation). If duplicates are allowed and the specified key
is already mapped to a value, this method appends the new duplicate
- after the existing duplicates. This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#put(java.lang.Object, java.lang.Object)" title="class or interface in java.util"><CODE>Map.put(java.lang.Object, java.lang.Object)</CODE></A> interface.
+ after the existing duplicates. This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#put(java.lang.Object, java.lang.Object)" title="class or interface in java.util"><CODE>Map.put(java.lang.Object, java.lang.Object)</CODE></A> interface.
<p>The key parameter may be null if an entity binding is used and the
key will be derived from the value (entity) parameter. If an entity
@@ -508,16 +509,16 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" tit
parameter must be equal to the key derived from the value parameter.</p>
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#put(java.lang.Object, java.lang.Object)" title="class or interface in java.util">put</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#put(java.lang.Object, java.lang.Object)" title="class or interface in java.util">put</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD>the previous value associated with specified key, or null if
there was no mapping for the key or if duplicates are allowed.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/UnsupportedOperationException.html" title="class or interface in java.lang">UnsupportedOperationException</A></CODE> - if the collection is indexed, or
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/UnsupportedOperationException.html" title="class or interface in java.lang">UnsupportedOperationException</A></CODE> - if the collection is indexed, or
if the collection is read-only.
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an entity value binding is used and
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an entity value binding is used and
the primary key of the value given is different than the existing stored
primary key.
<DD><CODE>RuntimeExceptionWrapper</CODE> - if a <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db"><CODE>DatabaseException</CODE></A> is thrown.</DL>
@@ -528,12 +529,12 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" tit
<A NAME="append(java.lang.Object)"><!-- --></A><H3>
append</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>append</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>append</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</PRE>
<DL>
<DD>Appends a given value returning the newly assigned key. If a <A HREF="../../../com/sleepycat/collections/PrimaryKeyAssigner.html" title="interface in com.sleepycat.collections"><CODE>PrimaryKeyAssigner</CODE></A> is associated with Store for this map, it will be
used to assigned the returned key. Otherwise the Store must be a QUEUE
or RECNO database and the next available record number is assigned as
- the key. This method does not exist in the standard <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html" title="class or interface in java.util"><CODE>Map</CODE></A>
+ the key. This method does not exist in the standard <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util"><CODE>Map</CODE></A>
interface.
<p>Note that for the JE product, QUEUE and RECNO databases are not
@@ -547,7 +548,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" tit
<DT><B>Parameters:</B><DD><CODE>value</CODE> - the value to be appended.
<DT><B>Returns:</B><DD>the assigned key.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/UnsupportedOperationException.html" title="class or interface in java.lang">UnsupportedOperationException</A></CODE> - if the collection is indexed, or
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/UnsupportedOperationException.html" title="class or interface in java.lang">UnsupportedOperationException</A></CODE> - if the collection is indexed, or
if the collection is read-only, or if the Store has no <A HREF="../../../com/sleepycat/collections/PrimaryKeyAssigner.html" title="interface in com.sleepycat.collections"><CODE>PrimaryKeyAssigner</CODE></A> and is not a QUEUE or RECNO database.
<DD><CODE>RuntimeExceptionWrapper</CODE> - if a <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db"><CODE>DatabaseException</CODE></A> is thrown.</DL>
</DD>
@@ -557,19 +558,19 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" tit
<A NAME="remove(java.lang.Object)"><!-- --></A><H3>
remove</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>remove</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;key)</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>remove</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;key)</PRE>
<DL>
<DD>Removes the mapping for this key from this map if present (optional
operation). If duplicates are allowed, this method removes all
- duplicates for the given key. This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#remove(java.lang.Object)" title="class or interface in java.util"><CODE>Map.remove(java.lang.Object)</CODE></A> interface.
+ duplicates for the given key. This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#remove(java.lang.Object)" title="class or interface in java.util"><CODE>Map.remove(java.lang.Object)</CODE></A> interface.
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#remove(java.lang.Object)" title="class or interface in java.util">remove</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#remove(java.lang.Object)" title="class or interface in java.util">remove</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/UnsupportedOperationException.html" title="class or interface in java.lang">UnsupportedOperationException</A></CODE> - if the collection is read-only.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/UnsupportedOperationException.html" title="class or interface in java.lang">UnsupportedOperationException</A></CODE> - if the collection is read-only.
<DD><CODE>RuntimeExceptionWrapper</CODE> - if a <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db"><CODE>DatabaseException</CODE></A> is thrown.</DL>
</DD>
</DL>
@@ -578,13 +579,13 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" tit
<A NAME="containsKey(java.lang.Object)"><!-- --></A><H3>
containsKey</H3>
<PRE>
-public boolean <B>containsKey</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;key)</PRE>
+public boolean <B>containsKey</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;key)</PRE>
<DL>
<DD>Returns true if this map contains the specified key. This method
- conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#containsKey(java.lang.Object)" title="class or interface in java.util"><CODE>Map.containsKey(java.lang.Object)</CODE></A> interface.
+ conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#containsKey(java.lang.Object)" title="class or interface in java.util"><CODE>Map.containsKey(java.lang.Object)</CODE></A> interface.
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#containsKey(java.lang.Object)" title="class or interface in java.util">containsKey</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#containsKey(java.lang.Object)" title="class or interface in java.util">containsKey</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A></CODE></DL>
</DD>
<DD><DL>
@@ -597,15 +598,15 @@ public boolean <B>containsKey</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api
<A NAME="containsValue(java.lang.Object)"><!-- --></A><H3>
containsValue</H3>
<PRE>
-public boolean <B>containsValue</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</PRE>
+public boolean <B>containsValue</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</PRE>
<DL>
<DD>Returns true if this map contains the specified value. When an entity
binding is used, this method returns whether the map contains the
primary key and value mapping of the entity. This method conforms to
- the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#containsValue(java.lang.Object)" title="class or interface in java.util"><CODE>Map.containsValue(java.lang.Object)</CODE></A> interface.
+ the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#containsValue(java.lang.Object)" title="class or interface in java.util"><CODE>Map.containsValue(java.lang.Object)</CODE></A> interface.
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#containsValue(java.lang.Object)" title="class or interface in java.util">containsValue</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#containsValue(java.lang.Object)" title="class or interface in java.util">containsValue</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A></CODE></DL>
</DD>
<DD><DL>
@@ -618,21 +619,21 @@ public boolean <B>containsValue</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/a
<A NAME="putAll(java.util.Map)"><!-- --></A><H3>
putAll</H3>
<PRE>
-public void <B>putAll</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A>&nbsp;map)</PRE>
+public void <B>putAll</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A>&nbsp;map)</PRE>
<DL>
<DD>Copies all of the mappings from the specified map to this map (optional
operation). When duplicates are allowed, the mappings in the specified
map are effectively appended to the existing mappings in this map, that
is no previously existing mappings in this map are replaced. This
- method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#putAll(java.util.Map)" title="class or interface in java.util"><CODE>Map.putAll(java.util.Map)</CODE></A> interface.
+ method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#putAll(java.util.Map)" title="class or interface in java.util"><CODE>Map.putAll(java.util.Map)</CODE></A> interface.
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#putAll(java.util.Map)" title="class or interface in java.util">putAll</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#putAll(java.util.Map)" title="class or interface in java.util">putAll</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/UnsupportedOperationException.html" title="class or interface in java.lang">UnsupportedOperationException</A></CODE> - if the collection is read-only, or
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/UnsupportedOperationException.html" title="class or interface in java.lang">UnsupportedOperationException</A></CODE> - if the collection is read-only, or
if the collection is indexed.
<DD><CODE>RuntimeExceptionWrapper</CODE> - if a <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db"><CODE>DatabaseException</CODE></A> is thrown.</DL>
</DD>
@@ -642,17 +643,17 @@ public void <B>putAll</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/ut
<A NAME="keySet()"><!-- --></A><H3>
keySet</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A> <B>keySet</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A> <B>keySet</B>()</PRE>
<DL>
-<DD>Returns a set view of the keys contained in this map. A <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util"><CODE>SortedSet</CODE></A> is returned if the map is ordered. The returned
+<DD>Returns a set view of the keys contained in this map. A <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util"><CODE>SortedSet</CODE></A> is returned if the map is ordered. The returned
collection will be read-only if the map is read-only. This method
- conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#keySet()" title="class or interface in java.util"><CODE>Map.keySet()</CODE></A> interface.
+ conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#keySet()" title="class or interface in java.util"><CODE>Map.keySet()</CODE></A> interface.
<p>Note that the return value is a StoredCollection and must be treated
as such; for example, its iterators must be explicitly closed.</p>
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#keySet()" title="class or interface in java.util">keySet</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#keySet()" title="class or interface in java.util">keySet</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A></CODE></DL>
</DD>
<DD><DL>
@@ -668,17 +669,17 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html" title=
<A NAME="entrySet()"><!-- --></A><H3>
entrySet</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A> <B>entrySet</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A> <B>entrySet</B>()</PRE>
<DL>
-<DD>Returns a set view of the mappings contained in this map. A <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util"><CODE>SortedSet</CODE></A> is returned if the map is ordered. The returned
+<DD>Returns a set view of the mappings contained in this map. A <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util"><CODE>SortedSet</CODE></A> is returned if the map is ordered. The returned
collection will be read-only if the map is read-only. This method
- conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#entrySet()" title="class or interface in java.util"><CODE>Map.entrySet()</CODE></A> interface.
+ conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#entrySet()" title="class or interface in java.util"><CODE>Map.entrySet()</CODE></A> interface.
<p>Note that the return value is a StoredCollection and must be treated
as such; for example, its iterators must be explicitly closed.</p>
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#entrySet()" title="class or interface in java.util">entrySet</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#entrySet()" title="class or interface in java.util">entrySet</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A></CODE></DL>
</DD>
<DD><DL>
@@ -694,19 +695,19 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html" title=
<A NAME="values()"><!-- --></A><H3>
values</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A> <B>values</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A> <B>values</B>()</PRE>
<DL>
-<DD>Returns a collection view of the values contained in this map. A <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util"><CODE>SortedSet</CODE></A> is returned if the map is ordered and the
+<DD>Returns a collection view of the values contained in this map. A <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util"><CODE>SortedSet</CODE></A> is returned if the map is ordered and the
value/entity binding can be used to derive the map's key from its
value/entity object. The returned collection will be read-only if the
- map is read-only. This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#values()" title="class or interface in java.util"><CODE>Map.values()</CODE></A>
+ map is read-only. This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#values()" title="class or interface in java.util"><CODE>Map.values()</CODE></A>
interface.
<p>Note that the return value is a StoredCollection and must be treated
as such; for example, its iterators must be explicitly closed.</p>
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#values()" title="class or interface in java.util">values</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#values()" title="class or interface in java.util">values</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A></CODE></DL>
</DD>
<DD><DL>
@@ -722,13 +723,13 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html"
<A NAME="duplicates(java.lang.Object)"><!-- --></A><H3>
duplicates</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A> <B>duplicates</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;key)</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A> <B>duplicates</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;key)</PRE>
<DL>
<DD>Returns a new collection containing the values mapped to the given key
in this map. This collection's iterator() method is particularly useful
for iterating over the duplicates for a given key, since this is not
supported by the standard Map interface. This method does not exist in
- the standard <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html" title="class or interface in java.util"><CODE>Map</CODE></A> interface.
+ the standard <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util"><CODE>Map</CODE></A> interface.
<p>If no mapping for the given key is present, an empty collection is
returned. If duplicates are not allowed, at most a single value will be
@@ -750,12 +751,12 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html"
<A NAME="duplicatesMap(java.lang.Object, com.sleepycat.bind.EntryBinding)"><!-- --></A><H3>
duplicatesMap</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A> <B>duplicatesMap</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;secondaryKey,
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A> <B>duplicatesMap</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;secondaryKey,
<A HREF="../../../com/sleepycat/bind/EntryBinding.html" title="interface in com.sleepycat.bind">EntryBinding</A>&nbsp;primaryKeyBinding)</PRE>
<DL>
<DD>Returns a new map from primary key to value for the subset of records
having a given secondary key (duplicates). This method does not exist
- in the standard <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html" title="class or interface in java.util"><CODE>Map</CODE></A> interface.
+ in the standard <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util"><CODE>Map</CODE></A> interface.
<p>If no mapping for the given key is present, an empty collection is
returned. If duplicates are not allowed, at most a single value will be
@@ -779,15 +780,15 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html" title=
<A NAME="equals(java.lang.Object)"><!-- --></A><H3>
equals</H3>
<PRE>
-public boolean <B>equals</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;other)</PRE>
+public boolean <B>equals</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;other)</PRE>
<DL>
<DD>Compares the specified object with this map for equality. A value
comparison is performed by this method and the stored values are
compared rather than calling the equals() method of each element. This
- method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#equals(java.lang.Object)" title="class or interface in java.util"><CODE>Map.equals(java.lang.Object)</CODE></A> interface.
+ method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#equals(java.lang.Object)" title="class or interface in java.util"><CODE>Map.equals(java.lang.Object)</CODE></A> interface.
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#equals(java.lang.Object)" title="class or interface in java.util">equals</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A></CODE><DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#equals(java.lang.Object)" title="class or interface in java.util">equals</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A></CODE><DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
</DD>
<DD><DL>
@@ -803,7 +804,7 @@ hashCode</H3>
public int <B>hashCode</B>()</PRE>
<DL>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#hashCode()" title="class or interface in java.util">hashCode</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A></CODE><DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#hashCode()" title="class or interface in java.util">hashCode</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A></CODE><DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
</DD>
<DD><DL>
</DL>
@@ -817,19 +818,12 @@ size</H3>
public int <B>size</B>()</PRE>
<DL>
<DD><B>Description copied from class: <CODE><A HREF="../../../com/sleepycat/collections/StoredContainer.html#size()">StoredContainer</A></CODE></B></DD>
-<DD>Returns the number of records in the collection or map.
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html#size()" title="class or interface in java.util"><CODE>Collection.size()</CODE></A> and <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#size()" title="class or interface in java.util"><CODE>Map.size()</CODE></A> interfaces.
-
- <p>Note that if other threads are adding or removing records while this
- method is executing, the size returned may be incorrect. This method
- does not lock the database.</p>
-
- <p>Also note that, for a large database, this method may be expensive.
- All non-duplicate records in the database are enumerated by this method,
- bringing them into memory if they are not already cached.</p>
+<DD>Returns a non-transactional count of the records in the collection or
+ map. This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html#size()" title="class or interface in java.util"><CODE>Collection.size()</CODE></A> and
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#size()" title="class or interface in java.util"><CODE>Map.size()</CODE></A> interfaces.
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#size()" title="class or interface in java.util">size</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A></CODE><DT><B>Specified by:</B><DD><CODE><A HREF="../../../com/sleepycat/collections/StoredContainer.html#size()">size</A></CODE> in class <CODE><A HREF="../../../com/sleepycat/collections/StoredContainer.html" title="class in com.sleepycat.collections">StoredContainer</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#size()" title="class or interface in java.util">size</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A></CODE><DT><B>Specified by:</B><DD><CODE><A HREF="../../../com/sleepycat/collections/StoredContainer.html#size()">size</A></CODE> in class <CODE><A HREF="../../../com/sleepycat/collections/StoredContainer.html" title="class in com.sleepycat.collections">StoredContainer</A></CODE></DL>
</DD>
<DD><DL>
</DL>
@@ -840,14 +834,14 @@ public int <B>size</B>()</PRE>
<A NAME="toString()"><!-- --></A><H3>
toString</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
<DL>
<DD>Converts the map to a string representation for debugging. WARNING: All
mappings will be converted to strings and returned and therefore the
returned string may be very large.
<P>
<DD><DL>
-<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
</DD>
<DD><DL>
@@ -881,7 +875,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" tit
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -917,6 +911,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&n
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/collections/StoredSortedEntrySet.html b/db/docs/java/com/sleepycat/collections/StoredSortedEntrySet.html
index 5a317dd4b..11776ee45 100644
--- a/db/docs/java/com/sleepycat/collections/StoredSortedEntrySet.html
+++ b/db/docs/java/com/sleepycat/collections/StoredSortedEntrySet.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:47 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-StoredSortedEntrySet (Oracle Corporation - Berkeley DB Java API)
+StoredSortedEntrySet (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.collections.StoredSortedEntrySet class">
@@ -14,7 +14,7 @@ StoredSortedEntrySet (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="StoredSortedEntrySet (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="StoredSortedEntrySet (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,26 +89,26 @@ com.sleepycat.collections</FONT>
<BR>
Class StoredSortedEntrySet</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../com/sleepycat/collections/StoredContainer.html" title="class in com.sleepycat.collections">com.sleepycat.collections.StoredContainer</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../com/sleepycat/collections/StoredCollection.html" title="class in com.sleepycat.collections">com.sleepycat.collections.StoredCollection</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../com/sleepycat/collections/StoredEntrySet.html" title="class in com.sleepycat.collections">com.sleepycat.collections.StoredEntrySet</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.collections.StoredSortedEntrySet</B>
</PRE>
<DL>
-<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Iterable.html" title="class or interface in java.lang">Iterable</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></DD>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Iterable.html" title="class or interface in java.lang">Iterable</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></DD>
</DL>
<HR>
<DL>
-<DT><PRE>public class <B>StoredSortedEntrySet</B><DT>extends <A HREF="../../../com/sleepycat/collections/StoredEntrySet.html" title="class in com.sleepycat.collections">StoredEntrySet</A><DT>implements <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></DL>
+<DT><PRE>public class <B>StoredSortedEntrySet</B><DT>extends <A HREF="../../../com/sleepycat/collections/StoredEntrySet.html" title="class in com.sleepycat.collections">StoredEntrySet</A><DT>implements <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></DL>
</PRE>
<P>
The SortedSet returned by Map.entrySet(). This class may not be
- instantiated directly. Contrary to what is stated by <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#entrySet()" title="class or interface in java.util"><CODE>Map.entrySet()</CODE></A>
+ instantiated directly. Contrary to what is stated by <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#entrySet()" title="class or interface in java.util"><CODE>Map.entrySet()</CODE></A>
this class does support the <A HREF="../../../com/sleepycat/collections/StoredEntrySet.html#add(java.lang.Object)"><CODE>StoredEntrySet.add(java.lang.Object)</CODE></A> and <A HREF="../../../com/sleepycat/collections/StoredCollection.html#addAll(java.util.Collection)"><CODE>StoredCollection.addAll(java.util.Collection)</CODE></A> methods.
- <p>The <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.Entry.html#setValue(java.lang.Object)" title="class or interface in java.util"><CODE>Map.Entry.setValue(java.lang.Object)</CODE></A> method of the Map.Entry objects
+ <p>The <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.Entry.html#setValue(java.lang.Object)" title="class or interface in java.util"><CODE>Map.Entry.setValue(java.lang.Object)</CODE></A> method of the Map.Entry objects
that are returned by this class and its iterators behaves just as the <A HREF="../../../com/sleepycat/collections/StoredIterator.html#set(java.lang.Object)"><CODE>StoredIterator.set(java.lang.Object)</CODE></A> method does.</p>
<p>In addition to the standard SortedSet methods, this class provides the
@@ -154,7 +154,7 @@ The SortedSet returned by Map.entrySet(). This class may not be
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Comparator.html" title="class or interface in java.util">Comparator</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Comparator.html" title="class or interface in java.util">Comparator</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredSortedEntrySet.html#comparator()">comparator</A></B>()</CODE>
<BR>
@@ -162,7 +162,7 @@ The SortedSet returned by Map.entrySet(). This class may not be
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredSortedEntrySet.html#first()">first</A></B>()</CODE>
<BR>
@@ -170,8 +170,8 @@ The SortedSet returned by Map.entrySet(). This class may not be
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredSortedEntrySet.html#headSet(java.lang.Object)">headSet</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toMapEntry)</CODE>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredSortedEntrySet.html#headSet(java.lang.Object)">headSet</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toMapEntry)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a view of the portion of this sorted set whose elements are
@@ -179,8 +179,8 @@ The SortedSet returned by Map.entrySet(). This class may not be
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredSortedEntrySet.html#headSet(java.lang.Object, boolean)">headSet</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toMapEntry,
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredSortedEntrySet.html#headSet(java.lang.Object, boolean)">headSet</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toMapEntry,
boolean&nbsp;toInclusive)</CODE>
<BR>
@@ -189,7 +189,7 @@ The SortedSet returned by Map.entrySet(). This class may not be
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredSortedEntrySet.html#last()">last</A></B>()</CODE>
<BR>
@@ -197,10 +197,10 @@ The SortedSet returned by Map.entrySet(). This class may not be
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredSortedEntrySet.html#subSet(java.lang.Object, boolean, java.lang.Object, boolean)">subSet</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromMapEntry,
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredSortedEntrySet.html#subSet(java.lang.Object, boolean, java.lang.Object, boolean)">subSet</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromMapEntry,
boolean&nbsp;fromInclusive,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toMapEntry,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toMapEntry,
boolean&nbsp;toInclusive)</CODE>
<BR>
@@ -210,9 +210,9 @@ The SortedSet returned by Map.entrySet(). This class may not be
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredSortedEntrySet.html#subSet(java.lang.Object, java.lang.Object)">subSet</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromMapEntry,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toMapEntry)</CODE>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredSortedEntrySet.html#subSet(java.lang.Object, java.lang.Object)">subSet</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromMapEntry,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toMapEntry)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a view of the portion of this sorted set whose elements range
@@ -220,8 +220,8 @@ The SortedSet returned by Map.entrySet(). This class may not be
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredSortedEntrySet.html#tailSet(java.lang.Object)">tailSet</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromMapEntry)</CODE>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredSortedEntrySet.html#tailSet(java.lang.Object)">tailSet</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromMapEntry)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a view of the portion of this sorted set whose elements are
@@ -229,8 +229,8 @@ The SortedSet returned by Map.entrySet(). This class may not be
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredSortedEntrySet.html#tailSet(java.lang.Object, boolean)">tailSet</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromMapEntry,
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredSortedEntrySet.html#tailSet(java.lang.Object, boolean)">tailSet</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromMapEntry,
boolean&nbsp;fromInclusive)</CODE>
<BR>
@@ -268,19 +268,19 @@ The SortedSet returned by Map.entrySet(). This class may not be
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.util.Set"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from interface java.util.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from interface java.util.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#add(java.lang.Object)" title="class or interface in java.util">add</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#addAll(java.util.Collection)" title="class or interface in java.util">addAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#clear()" title="class or interface in java.util">clear</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#contains(java.lang.Object)" title="class or interface in java.util">contains</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#containsAll(java.util.Collection)" title="class or interface in java.util">containsAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#equals(java.lang.Object)" title="class or interface in java.util">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#hashCode()" title="class or interface in java.util">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#isEmpty()" title="class or interface in java.util">isEmpty</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#iterator()" title="class or interface in java.util">iterator</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#remove(java.lang.Object)" title="class or interface in java.util">remove</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#removeAll(java.util.Collection)" title="class or interface in java.util">removeAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#retainAll(java.util.Collection)" title="class or interface in java.util">retainAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#size()" title="class or interface in java.util">size</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#toArray()" title="class or interface in java.util">toArray</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#toArray(java.lang.Object[])" title="class or interface in java.util">toArray</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#add(java.lang.Object)" title="class or interface in java.util">add</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#addAll(java.util.Collection)" title="class or interface in java.util">addAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#clear()" title="class or interface in java.util">clear</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#contains(java.lang.Object)" title="class or interface in java.util">contains</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#containsAll(java.util.Collection)" title="class or interface in java.util">containsAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#equals(java.lang.Object)" title="class or interface in java.util">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#hashCode()" title="class or interface in java.util">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#isEmpty()" title="class or interface in java.util">isEmpty</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#iterator()" title="class or interface in java.util">iterator</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#remove(java.lang.Object)" title="class or interface in java.util">remove</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#removeAll(java.util.Collection)" title="class or interface in java.util">removeAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#retainAll(java.util.Collection)" title="class or interface in java.util">retainAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#size()" title="class or interface in java.util">size</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#toArray()" title="class or interface in java.util">toArray</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#toArray(java.lang.Object[])" title="class or interface in java.util">toArray</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -299,16 +299,16 @@ The SortedSet returned by Map.entrySet(). This class may not be
<A NAME="comparator()"><!-- --></A><H3>
comparator</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Comparator.html" title="class or interface in java.util">Comparator</A> <B>comparator</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Comparator.html" title="class or interface in java.util">Comparator</A> <B>comparator</B>()</PRE>
<DL>
<DD>Returns null since comparators are not supported. The natural ordering
of a stored collection is data byte order, whether the data classes
- implement the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Comparable.html" title="class or interface in java.lang"><CODE>Comparable</CODE></A> interface or not.
- This method does not conform to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html#comparator()" title="class or interface in java.util"><CODE>SortedSet.comparator()</CODE></A>
+ implement the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Comparable.html" title="class or interface in java.lang"><CODE>Comparable</CODE></A> interface or not.
+ This method does not conform to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html#comparator()" title="class or interface in java.util"><CODE>SortedSet.comparator()</CODE></A>
interface.
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html#comparator()" title="class or interface in java.util">comparator</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html#comparator()" title="class or interface in java.util">comparator</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></DL>
</DD>
<DD><DL>
@@ -320,13 +320,13 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Comparator.html"
<A NAME="first()"><!-- --></A><H3>
first</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>first</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>first</B>()</PRE>
<DL>
<DD>Returns the first (lowest) element currently in this sorted set.
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html#first()" title="class or interface in java.util"><CODE>SortedSet.first()</CODE></A> interface.
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html#first()" title="class or interface in java.util"><CODE>SortedSet.first()</CODE></A> interface.
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html#first()" title="class or interface in java.util">first</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html#first()" title="class or interface in java.util">first</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></DL>
</DD>
<DD><DL>
@@ -340,13 +340,13 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" tit
<A NAME="last()"><!-- --></A><H3>
last</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>last</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>last</B>()</PRE>
<DL>
<DD>Returns the last (highest) element currently in this sorted set.
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html#last()" title="class or interface in java.util"><CODE>SortedSet.last()</CODE></A> interface.
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html#last()" title="class or interface in java.util"><CODE>SortedSet.last()</CODE></A> interface.
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html#last()" title="class or interface in java.util">last</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html#last()" title="class or interface in java.util">last</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></DL>
</DD>
<DD><DL>
@@ -360,17 +360,17 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" tit
<A NAME="headSet(java.lang.Object)"><!-- --></A><H3>
headSet</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A> <B>headSet</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toMapEntry)</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A> <B>headSet</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toMapEntry)</PRE>
<DL>
<DD>Returns a view of the portion of this sorted set whose elements are
strictly less than toMapEntry.
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html#headSet(java.lang.Object)" title="class or interface in java.util"><CODE>SortedSet.headSet(java.lang.Object)</CODE></A> interface.
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html#headSet(java.lang.Object)" title="class or interface in java.util"><CODE>SortedSet.headSet(java.lang.Object)</CODE></A> interface.
<p>Note that the return value is a StoredCollection and must be treated
as such; for example, its iterators must be explicitly closed.</p>
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html#headSet(java.lang.Object)" title="class or interface in java.util">headSet</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html#headSet(java.lang.Object)" title="class or interface in java.util">headSet</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>toMapEntry</CODE> - the upper bound.
@@ -384,12 +384,12 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html"
<A NAME="headSet(java.lang.Object, boolean)"><!-- --></A><H3>
headSet</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A> <B>headSet</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toMapEntry,
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A> <B>headSet</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toMapEntry,
boolean&nbsp;toInclusive)</PRE>
<DL>
<DD>Returns a view of the portion of this sorted set whose elements are
strictly less than toMapEntry, optionally including toMapEntry.
- This method does not exist in the standard <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util"><CODE>SortedSet</CODE></A> interface.
+ This method does not exist in the standard <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util"><CODE>SortedSet</CODE></A> interface.
<p>Note that the return value is a StoredCollection and must be treated
as such; for example, its iterators must be explicitly closed.</p>
@@ -409,17 +409,17 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html"
<A NAME="tailSet(java.lang.Object)"><!-- --></A><H3>
tailSet</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A> <B>tailSet</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromMapEntry)</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A> <B>tailSet</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromMapEntry)</PRE>
<DL>
<DD>Returns a view of the portion of this sorted set whose elements are
greater than or equal to fromMapEntry.
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html#tailSet(java.lang.Object)" title="class or interface in java.util"><CODE>SortedSet.tailSet(java.lang.Object)</CODE></A> interface.
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html#tailSet(java.lang.Object)" title="class or interface in java.util"><CODE>SortedSet.tailSet(java.lang.Object)</CODE></A> interface.
<p>Note that the return value is a StoredCollection and must be treated
as such; for example, its iterators must be explicitly closed.</p>
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html#tailSet(java.lang.Object)" title="class or interface in java.util">tailSet</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html#tailSet(java.lang.Object)" title="class or interface in java.util">tailSet</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>fromMapEntry</CODE> - is the lower bound.
@@ -433,12 +433,12 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html"
<A NAME="tailSet(java.lang.Object, boolean)"><!-- --></A><H3>
tailSet</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A> <B>tailSet</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromMapEntry,
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A> <B>tailSet</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromMapEntry,
boolean&nbsp;fromInclusive)</PRE>
<DL>
<DD>Returns a view of the portion of this sorted set whose elements are
strictly greater than fromMapEntry, optionally including fromMapEntry.
- This method does not exist in the standard <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util"><CODE>SortedSet</CODE></A> interface.
+ This method does not exist in the standard <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util"><CODE>SortedSet</CODE></A> interface.
<p>Note that the return value is a StoredCollection and must be treated
as such; for example, its iterators must be explicitly closed.</p>
@@ -458,18 +458,18 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html"
<A NAME="subSet(java.lang.Object, java.lang.Object)"><!-- --></A><H3>
subSet</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A> <B>subSet</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromMapEntry,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toMapEntry)</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A> <B>subSet</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromMapEntry,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toMapEntry)</PRE>
<DL>
<DD>Returns a view of the portion of this sorted set whose elements range
from fromMapEntry, inclusive, to toMapEntry, exclusive.
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html#subSet(java.lang.Object, java.lang.Object)" title="class or interface in java.util"><CODE>SortedSet.subSet(java.lang.Object, java.lang.Object)</CODE></A> interface.
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html#subSet(java.lang.Object, java.lang.Object)" title="class or interface in java.util"><CODE>SortedSet.subSet(java.lang.Object, java.lang.Object)</CODE></A> interface.
<p>Note that the return value is a StoredCollection and must be treated
as such; for example, its iterators must be explicitly closed.</p>
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html#subSet(java.lang.Object, java.lang.Object)" title="class or interface in java.util">subSet</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html#subSet(java.lang.Object, java.lang.Object)" title="class or interface in java.util">subSet</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>fromMapEntry</CODE> - is the lower bound.<DD><CODE>toMapEntry</CODE> - is the upper bound.
@@ -483,15 +483,15 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html"
<A NAME="subSet(java.lang.Object, boolean, java.lang.Object, boolean)"><!-- --></A><H3>
subSet</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A> <B>subSet</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromMapEntry,
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A> <B>subSet</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromMapEntry,
boolean&nbsp;fromInclusive,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toMapEntry,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toMapEntry,
boolean&nbsp;toInclusive)</PRE>
<DL>
<DD>Returns a view of the portion of this sorted set whose elements are
strictly greater than fromMapEntry and strictly less than toMapEntry,
optionally including fromMapEntry and toMapEntry.
- This method does not exist in the standard <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util"><CODE>SortedSet</CODE></A> interface.
+ This method does not exist in the standard <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util"><CODE>SortedSet</CODE></A> interface.
<p>Note that the return value is a StoredCollection and must be treated
as such; for example, its iterators must be explicitly closed.</p>
@@ -531,7 +531,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html"
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -567,6 +567,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHO
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/collections/StoredSortedKeySet.html b/db/docs/java/com/sleepycat/collections/StoredSortedKeySet.html
index 458a10a65..3b901dba5 100644
--- a/db/docs/java/com/sleepycat/collections/StoredSortedKeySet.html
+++ b/db/docs/java/com/sleepycat/collections/StoredSortedKeySet.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:47 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-StoredSortedKeySet (Oracle Corporation - Berkeley DB Java API)
+StoredSortedKeySet (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.collections.StoredSortedKeySet class">
@@ -14,7 +14,7 @@ StoredSortedKeySet (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="StoredSortedKeySet (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="StoredSortedKeySet (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,18 +89,18 @@ com.sleepycat.collections</FONT>
<BR>
Class StoredSortedKeySet</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../com/sleepycat/collections/StoredContainer.html" title="class in com.sleepycat.collections">com.sleepycat.collections.StoredContainer</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../com/sleepycat/collections/StoredCollection.html" title="class in com.sleepycat.collections">com.sleepycat.collections.StoredCollection</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../com/sleepycat/collections/StoredKeySet.html" title="class in com.sleepycat.collections">com.sleepycat.collections.StoredKeySet</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.collections.StoredSortedKeySet</B>
</PRE>
<DL>
-<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Iterable.html" title="class or interface in java.lang">Iterable</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></DD>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Iterable.html" title="class or interface in java.lang">Iterable</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></DD>
</DL>
<HR>
<DL>
-<DT><PRE>public class <B>StoredSortedKeySet</B><DT>extends <A HREF="../../../com/sleepycat/collections/StoredKeySet.html" title="class in com.sleepycat.collections">StoredKeySet</A><DT>implements <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></DL>
+<DT><PRE>public class <B>StoredSortedKeySet</B><DT>extends <A HREF="../../../com/sleepycat/collections/StoredKeySet.html" title="class in com.sleepycat.collections">StoredKeySet</A><DT>implements <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></DL>
</PRE>
<P>
@@ -172,7 +172,7 @@ The SortedSet returned by Map.keySet() and which can also be constructed
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Comparator.html" title="class or interface in java.util">Comparator</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Comparator.html" title="class or interface in java.util">Comparator</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredSortedKeySet.html#comparator()">comparator</A></B>()</CODE>
<BR>
@@ -180,7 +180,7 @@ The SortedSet returned by Map.keySet() and which can also be constructed
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredSortedKeySet.html#first()">first</A></B>()</CODE>
<BR>
@@ -188,8 +188,8 @@ The SortedSet returned by Map.keySet() and which can also be constructed
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredSortedKeySet.html#headSet(java.lang.Object)">headSet</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toKey)</CODE>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredSortedKeySet.html#headSet(java.lang.Object)">headSet</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toKey)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a view of the portion of this sorted set whose elements are
@@ -197,8 +197,8 @@ The SortedSet returned by Map.keySet() and which can also be constructed
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredSortedKeySet.html#headSet(java.lang.Object, boolean)">headSet</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toKey,
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredSortedKeySet.html#headSet(java.lang.Object, boolean)">headSet</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toKey,
boolean&nbsp;toInclusive)</CODE>
<BR>
@@ -207,7 +207,7 @@ The SortedSet returned by Map.keySet() and which can also be constructed
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredSortedKeySet.html#last()">last</A></B>()</CODE>
<BR>
@@ -215,10 +215,10 @@ The SortedSet returned by Map.keySet() and which can also be constructed
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredSortedKeySet.html#subSet(java.lang.Object, boolean, java.lang.Object, boolean)">subSet</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromKey,
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredSortedKeySet.html#subSet(java.lang.Object, boolean, java.lang.Object, boolean)">subSet</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromKey,
boolean&nbsp;fromInclusive,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toKey,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toKey,
boolean&nbsp;toInclusive)</CODE>
<BR>
@@ -228,9 +228,9 @@ The SortedSet returned by Map.keySet() and which can also be constructed
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredSortedKeySet.html#subSet(java.lang.Object, java.lang.Object)">subSet</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromKey,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toKey)</CODE>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredSortedKeySet.html#subSet(java.lang.Object, java.lang.Object)">subSet</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromKey,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toKey)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a view of the portion of this sorted set whose elements range
@@ -238,8 +238,8 @@ The SortedSet returned by Map.keySet() and which can also be constructed
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredSortedKeySet.html#tailSet(java.lang.Object)">tailSet</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromKey)</CODE>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredSortedKeySet.html#tailSet(java.lang.Object)">tailSet</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromKey)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a view of the portion of this sorted set whose elements are
@@ -247,8 +247,8 @@ The SortedSet returned by Map.keySet() and which can also be constructed
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredSortedKeySet.html#tailSet(java.lang.Object, boolean)">tailSet</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromKey,
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredSortedKeySet.html#tailSet(java.lang.Object, boolean)">tailSet</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromKey,
boolean&nbsp;fromInclusive)</CODE>
<BR>
@@ -286,19 +286,19 @@ The SortedSet returned by Map.keySet() and which can also be constructed
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.util.Set"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from interface java.util.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from interface java.util.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#add(java.lang.Object)" title="class or interface in java.util">add</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#addAll(java.util.Collection)" title="class or interface in java.util">addAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#clear()" title="class or interface in java.util">clear</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#contains(java.lang.Object)" title="class or interface in java.util">contains</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#containsAll(java.util.Collection)" title="class or interface in java.util">containsAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#equals(java.lang.Object)" title="class or interface in java.util">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#hashCode()" title="class or interface in java.util">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#isEmpty()" title="class or interface in java.util">isEmpty</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#iterator()" title="class or interface in java.util">iterator</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#remove(java.lang.Object)" title="class or interface in java.util">remove</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#removeAll(java.util.Collection)" title="class or interface in java.util">removeAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#retainAll(java.util.Collection)" title="class or interface in java.util">retainAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#size()" title="class or interface in java.util">size</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#toArray()" title="class or interface in java.util">toArray</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#toArray(java.lang.Object[])" title="class or interface in java.util">toArray</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#add(java.lang.Object)" title="class or interface in java.util">add</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#addAll(java.util.Collection)" title="class or interface in java.util">addAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#clear()" title="class or interface in java.util">clear</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#contains(java.lang.Object)" title="class or interface in java.util">contains</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#containsAll(java.util.Collection)" title="class or interface in java.util">containsAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#equals(java.lang.Object)" title="class or interface in java.util">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#hashCode()" title="class or interface in java.util">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#isEmpty()" title="class or interface in java.util">isEmpty</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#iterator()" title="class or interface in java.util">iterator</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#remove(java.lang.Object)" title="class or interface in java.util">remove</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#removeAll(java.util.Collection)" title="class or interface in java.util">removeAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#retainAll(java.util.Collection)" title="class or interface in java.util">retainAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#size()" title="class or interface in java.util">size</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#toArray()" title="class or interface in java.util">toArray</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#toArray(java.lang.Object[])" title="class or interface in java.util">toArray</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -328,7 +328,7 @@ public <B>StoredSortedKeySet</B>(<A HREF="../../../com/sleepycat/db/Database.htm
and key objects.<DD><CODE>writeAllowed</CODE> - is true to create a read-write collection or false
to create a read-only collection.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if formats are not consistently
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if formats are not consistently
defined or a parameter is invalid.
<DD><CODE>RuntimeExceptionWrapper</CODE> - if a <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db"><CODE>DatabaseException</CODE></A> is thrown.</DL>
</DL>
@@ -346,16 +346,16 @@ public <B>StoredSortedKeySet</B>(<A HREF="../../../com/sleepycat/db/Database.htm
<A NAME="comparator()"><!-- --></A><H3>
comparator</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Comparator.html" title="class or interface in java.util">Comparator</A> <B>comparator</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Comparator.html" title="class or interface in java.util">Comparator</A> <B>comparator</B>()</PRE>
<DL>
<DD>Returns null since comparators are not supported. The natural ordering
of a stored collection is data byte order, whether the data classes
- implement the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Comparable.html" title="class or interface in java.lang"><CODE>Comparable</CODE></A> interface or not.
- This method does not conform to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html#comparator()" title="class or interface in java.util"><CODE>SortedSet.comparator()</CODE></A>
+ implement the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Comparable.html" title="class or interface in java.lang"><CODE>Comparable</CODE></A> interface or not.
+ This method does not conform to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html#comparator()" title="class or interface in java.util"><CODE>SortedSet.comparator()</CODE></A>
interface.
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html#comparator()" title="class or interface in java.util">comparator</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html#comparator()" title="class or interface in java.util">comparator</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></DL>
</DD>
<DD><DL>
@@ -367,13 +367,13 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Comparator.html"
<A NAME="first()"><!-- --></A><H3>
first</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>first</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>first</B>()</PRE>
<DL>
<DD>Returns the first (lowest) element currently in this sorted set.
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html#first()" title="class or interface in java.util"><CODE>SortedSet.first()</CODE></A> interface.
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html#first()" title="class or interface in java.util"><CODE>SortedSet.first()</CODE></A> interface.
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html#first()" title="class or interface in java.util">first</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html#first()" title="class or interface in java.util">first</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></DL>
</DD>
<DD><DL>
@@ -387,13 +387,13 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" tit
<A NAME="last()"><!-- --></A><H3>
last</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>last</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>last</B>()</PRE>
<DL>
<DD>Returns the last (highest) element currently in this sorted set.
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html#last()" title="class or interface in java.util"><CODE>SortedSet.last()</CODE></A> interface.
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html#last()" title="class or interface in java.util"><CODE>SortedSet.last()</CODE></A> interface.
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html#last()" title="class or interface in java.util">last</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html#last()" title="class or interface in java.util">last</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></DL>
</DD>
<DD><DL>
@@ -407,17 +407,17 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" tit
<A NAME="headSet(java.lang.Object)"><!-- --></A><H3>
headSet</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A> <B>headSet</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toKey)</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A> <B>headSet</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toKey)</PRE>
<DL>
<DD>Returns a view of the portion of this sorted set whose elements are
strictly less than toKey.
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html#headSet(java.lang.Object)" title="class or interface in java.util"><CODE>SortedSet.headSet(java.lang.Object)</CODE></A> interface.
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html#headSet(java.lang.Object)" title="class or interface in java.util"><CODE>SortedSet.headSet(java.lang.Object)</CODE></A> interface.
<p>Note that the return value is a StoredCollection and must be treated
as such; for example, its iterators must be explicitly closed.</p>
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html#headSet(java.lang.Object)" title="class or interface in java.util">headSet</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html#headSet(java.lang.Object)" title="class or interface in java.util">headSet</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>toKey</CODE> - is the upper bound.
@@ -431,12 +431,12 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html"
<A NAME="headSet(java.lang.Object, boolean)"><!-- --></A><H3>
headSet</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A> <B>headSet</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toKey,
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A> <B>headSet</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toKey,
boolean&nbsp;toInclusive)</PRE>
<DL>
<DD>Returns a view of the portion of this sorted set whose elements are
strictly less than toKey, optionally including toKey.
- This method does not exist in the standard <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util"><CODE>SortedSet</CODE></A> interface.
+ This method does not exist in the standard <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util"><CODE>SortedSet</CODE></A> interface.
<p>Note that the return value is a StoredCollection and must be treated
as such; for example, its iterators must be explicitly closed.</p>
@@ -456,17 +456,17 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html"
<A NAME="tailSet(java.lang.Object)"><!-- --></A><H3>
tailSet</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A> <B>tailSet</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromKey)</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A> <B>tailSet</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromKey)</PRE>
<DL>
<DD>Returns a view of the portion of this sorted set whose elements are
greater than or equal to fromKey.
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html#tailSet(java.lang.Object)" title="class or interface in java.util"><CODE>SortedSet.tailSet(java.lang.Object)</CODE></A> interface.
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html#tailSet(java.lang.Object)" title="class or interface in java.util"><CODE>SortedSet.tailSet(java.lang.Object)</CODE></A> interface.
<p>Note that the return value is a StoredCollection and must be treated
as such; for example, its iterators must be explicitly closed.</p>
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html#tailSet(java.lang.Object)" title="class or interface in java.util">tailSet</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html#tailSet(java.lang.Object)" title="class or interface in java.util">tailSet</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>fromKey</CODE> - is the lower bound.
@@ -480,12 +480,12 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html"
<A NAME="tailSet(java.lang.Object, boolean)"><!-- --></A><H3>
tailSet</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A> <B>tailSet</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromKey,
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A> <B>tailSet</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromKey,
boolean&nbsp;fromInclusive)</PRE>
<DL>
<DD>Returns a view of the portion of this sorted set whose elements are
strictly greater than fromKey, optionally including fromKey.
- This method does not exist in the standard <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util"><CODE>SortedSet</CODE></A> interface.
+ This method does not exist in the standard <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util"><CODE>SortedSet</CODE></A> interface.
<p>Note that the return value is a StoredCollection and must be treated
as such; for example, its iterators must be explicitly closed.</p>
@@ -505,18 +505,18 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html"
<A NAME="subSet(java.lang.Object, java.lang.Object)"><!-- --></A><H3>
subSet</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A> <B>subSet</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromKey,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toKey)</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A> <B>subSet</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromKey,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toKey)</PRE>
<DL>
<DD>Returns a view of the portion of this sorted set whose elements range
from fromKey, inclusive, to toKey, exclusive.
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html#subSet(java.lang.Object, java.lang.Object)" title="class or interface in java.util"><CODE>SortedSet.subSet(java.lang.Object, java.lang.Object)</CODE></A> interface.
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html#subSet(java.lang.Object, java.lang.Object)" title="class or interface in java.util"><CODE>SortedSet.subSet(java.lang.Object, java.lang.Object)</CODE></A> interface.
<p>Note that the return value is a StoredCollection and must be treated
as such; for example, its iterators must be explicitly closed.</p>
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html#subSet(java.lang.Object, java.lang.Object)" title="class or interface in java.util">subSet</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html#subSet(java.lang.Object, java.lang.Object)" title="class or interface in java.util">subSet</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>fromKey</CODE> - is the lower bound.<DD><CODE>toKey</CODE> - is the upper bound.
@@ -530,15 +530,15 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html"
<A NAME="subSet(java.lang.Object, boolean, java.lang.Object, boolean)"><!-- --></A><H3>
subSet</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A> <B>subSet</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromKey,
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A> <B>subSet</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromKey,
boolean&nbsp;fromInclusive,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toKey,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toKey,
boolean&nbsp;toInclusive)</PRE>
<DL>
<DD>Returns a view of the portion of this sorted set whose elements are
strictly greater than fromKey and strictly less than toKey,
optionally including fromKey and toKey.
- This method does not exist in the standard <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util"><CODE>SortedSet</CODE></A> interface.
+ This method does not exist in the standard <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util"><CODE>SortedSet</CODE></A> interface.
<p>Note that the return value is a StoredCollection and must be treated
as such; for example, its iterators must be explicitly closed.</p>
@@ -578,7 +578,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html"
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -614,6 +614,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&n
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/collections/StoredSortedMap.html b/db/docs/java/com/sleepycat/collections/StoredSortedMap.html
index afb8dfce1..7151e3e28 100644
--- a/db/docs/java/com/sleepycat/collections/StoredSortedMap.html
+++ b/db/docs/java/com/sleepycat/collections/StoredSortedMap.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:47 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-StoredSortedMap (Oracle Corporation - Berkeley DB Java API)
+StoredSortedMap (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.collections.StoredSortedMap class">
@@ -14,7 +14,7 @@ StoredSortedMap (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="StoredSortedMap (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="StoredSortedMap (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,17 +89,17 @@ com.sleepycat.collections</FONT>
<BR>
Class StoredSortedMap</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../com/sleepycat/collections/StoredContainer.html" title="class in com.sleepycat.collections">com.sleepycat.collections.StoredContainer</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../com/sleepycat/collections/StoredMap.html" title="class in com.sleepycat.collections">com.sleepycat.collections.StoredMap</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.collections.StoredSortedMap</B>
</PRE>
<DL>
-<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A></DD>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A></DD>
</DL>
<HR>
<DL>
-<DT><PRE>public class <B>StoredSortedMap</B><DT>extends <A HREF="../../../com/sleepycat/collections/StoredMap.html" title="class in com.sleepycat.collections">StoredMap</A><DT>implements <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A></DL>
+<DT><PRE>public class <B>StoredSortedMap</B><DT>extends <A HREF="../../../com/sleepycat/collections/StoredMap.html" title="class in com.sleepycat.collections">StoredMap</A><DT>implements <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A></DL>
</PRE>
<P>
@@ -131,10 +131,10 @@ A SortedMap view of a <A HREF="../../../com/sleepycat/db/Database.html" title="c
&nbsp;<A NAME="nested_classes_inherited_from_class_java.util.Map"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Nested classes/interfaces inherited from interface java.util.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A></B></TH>
+<TH ALIGN="left"><B>Nested classes/interfaces inherited from interface java.util.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.Entry.html" title="class or interface in java.util">Map.Entry</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.Entry.html" title="class or interface in java.util">Map.Entry</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -195,7 +195,7 @@ A SortedMap view of a <A HREF="../../../com/sleepycat/db/Database.html" title="c
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Comparator.html" title="class or interface in java.util">Comparator</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Comparator.html" title="class or interface in java.util">Comparator</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredSortedMap.html#comparator()">comparator</A></B>()</CODE>
<BR>
@@ -203,7 +203,7 @@ A SortedMap view of a <A HREF="../../../com/sleepycat/db/Database.html" title="c
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredSortedMap.html#firstKey()">firstKey</A></B>()</CODE>
<BR>
@@ -211,8 +211,8 @@ A SortedMap view of a <A HREF="../../../com/sleepycat/db/Database.html" title="c
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredSortedMap.html#headMap(java.lang.Object)">headMap</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toKey)</CODE>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredSortedMap.html#headMap(java.lang.Object)">headMap</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toKey)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a view of the portion of this sorted set whose keys are
@@ -220,8 +220,8 @@ A SortedMap view of a <A HREF="../../../com/sleepycat/db/Database.html" title="c
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredSortedMap.html#headMap(java.lang.Object, boolean)">headMap</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toKey,
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredSortedMap.html#headMap(java.lang.Object, boolean)">headMap</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toKey,
boolean&nbsp;toInclusive)</CODE>
<BR>
@@ -230,7 +230,7 @@ A SortedMap view of a <A HREF="../../../com/sleepycat/db/Database.html" title="c
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredSortedMap.html#lastKey()">lastKey</A></B>()</CODE>
<BR>
@@ -238,10 +238,10 @@ A SortedMap view of a <A HREF="../../../com/sleepycat/db/Database.html" title="c
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredSortedMap.html#subMap(java.lang.Object, boolean, java.lang.Object, boolean)">subMap</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromKey,
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredSortedMap.html#subMap(java.lang.Object, boolean, java.lang.Object, boolean)">subMap</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromKey,
boolean&nbsp;fromInclusive,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toKey,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toKey,
boolean&nbsp;toInclusive)</CODE>
<BR>
@@ -251,9 +251,9 @@ A SortedMap view of a <A HREF="../../../com/sleepycat/db/Database.html" title="c
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredSortedMap.html#subMap(java.lang.Object, java.lang.Object)">subMap</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromKey,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toKey)</CODE>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredSortedMap.html#subMap(java.lang.Object, java.lang.Object)">subMap</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromKey,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toKey)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a view of the portion of this sorted map whose elements range
@@ -261,8 +261,8 @@ A SortedMap view of a <A HREF="../../../com/sleepycat/db/Database.html" title="c
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredSortedMap.html#tailMap(java.lang.Object)">tailMap</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromKey)</CODE>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredSortedMap.html#tailMap(java.lang.Object)">tailMap</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromKey)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a view of the portion of this sorted map whose elements are
@@ -270,8 +270,8 @@ A SortedMap view of a <A HREF="../../../com/sleepycat/db/Database.html" title="c
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredSortedMap.html#tailMap(java.lang.Object, boolean)">tailMap</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromKey,
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredSortedMap.html#tailMap(java.lang.Object, boolean)">tailMap</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromKey,
boolean&nbsp;fromInclusive)</CODE>
<BR>
@@ -300,19 +300,19 @@ A SortedMap view of a <A HREF="../../../com/sleepycat/db/Database.html" title="c
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.util.Map"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from interface java.util.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from interface java.util.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#clear()" title="class or interface in java.util">clear</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#containsKey(java.lang.Object)" title="class or interface in java.util">containsKey</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#containsValue(java.lang.Object)" title="class or interface in java.util">containsValue</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#entrySet()" title="class or interface in java.util">entrySet</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#equals(java.lang.Object)" title="class or interface in java.util">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#get(java.lang.Object)" title="class or interface in java.util">get</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#hashCode()" title="class or interface in java.util">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#isEmpty()" title="class or interface in java.util">isEmpty</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#keySet()" title="class or interface in java.util">keySet</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#put(java.lang.Object, java.lang.Object)" title="class or interface in java.util">put</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#putAll(java.util.Map)" title="class or interface in java.util">putAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#remove(java.lang.Object)" title="class or interface in java.util">remove</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#size()" title="class or interface in java.util">size</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html#values()" title="class or interface in java.util">values</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#clear()" title="class or interface in java.util">clear</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#containsKey(java.lang.Object)" title="class or interface in java.util">containsKey</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#containsValue(java.lang.Object)" title="class or interface in java.util">containsValue</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#entrySet()" title="class or interface in java.util">entrySet</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#equals(java.lang.Object)" title="class or interface in java.util">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#get(java.lang.Object)" title="class or interface in java.util">get</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#hashCode()" title="class or interface in java.util">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#isEmpty()" title="class or interface in java.util">isEmpty</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#keySet()" title="class or interface in java.util">keySet</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#put(java.lang.Object, java.lang.Object)" title="class or interface in java.util">put</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#putAll(java.util.Map)" title="class or interface in java.util">putAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#remove(java.lang.Object)" title="class or interface in java.util">remove</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#size()" title="class or interface in java.util">size</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#values()" title="class or interface in java.util">values</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -344,7 +344,7 @@ public <B>StoredSortedMap</B>(<A HREF="../../../com/sleepycat/db/Database.html"
buffers and value objects.<DD><CODE>writeAllowed</CODE> - is true to create a read-write collection or false
to create a read-only collection.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if formats are not consistently
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if formats are not consistently
defined or a parameter is invalid.
<DD><CODE>RuntimeExceptionWrapper</CODE> - if a <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db"><CODE>DatabaseException</CODE></A> is thrown.</DL>
</DL>
@@ -366,7 +366,7 @@ public <B>StoredSortedMap</B>(<A HREF="../../../com/sleepycat/db/Database.html"
buffers and value objects.<DD><CODE>keyAssigner</CODE> - is used by the <A HREF="../../../com/sleepycat/collections/StoredMap.html#append(java.lang.Object)"><CODE>StoredMap.append(java.lang.Object)</CODE></A> method to assign
primary keys.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if formats are not consistently
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if formats are not consistently
defined or a parameter is invalid.
<DD><CODE>RuntimeExceptionWrapper</CODE> - if a <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db"><CODE>DatabaseException</CODE></A> is thrown.</DL>
</DL>
@@ -388,7 +388,7 @@ public <B>StoredSortedMap</B>(<A HREF="../../../com/sleepycat/db/Database.html"
key/value buffers and entity value objects.<DD><CODE>writeAllowed</CODE> - is true to create a read-write collection or false
to create a read-only collection.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if formats are not consistently
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if formats are not consistently
defined or a parameter is invalid.
<DD><CODE>RuntimeExceptionWrapper</CODE> - if a <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db"><CODE>DatabaseException</CODE></A> is thrown.</DL>
</DL>
@@ -410,7 +410,7 @@ public <B>StoredSortedMap</B>(<A HREF="../../../com/sleepycat/db/Database.html"
key/value buffers and entity value objects.<DD><CODE>keyAssigner</CODE> - is used by the <A HREF="../../../com/sleepycat/collections/StoredMap.html#append(java.lang.Object)"><CODE>StoredMap.append(java.lang.Object)</CODE></A> method to assign
primary keys.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if formats are not consistently
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if formats are not consistently
defined or a parameter is invalid.
<DD><CODE>RuntimeExceptionWrapper</CODE> - if a <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db"><CODE>DatabaseException</CODE></A> is thrown.</DL>
</DL>
@@ -428,16 +428,16 @@ public <B>StoredSortedMap</B>(<A HREF="../../../com/sleepycat/db/Database.html"
<A NAME="comparator()"><!-- --></A><H3>
comparator</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Comparator.html" title="class or interface in java.util">Comparator</A> <B>comparator</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Comparator.html" title="class or interface in java.util">Comparator</A> <B>comparator</B>()</PRE>
<DL>
<DD>Returns null since comparators are not supported. The natural ordering
of a stored collection is data byte order, whether the data classes
- implement the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Comparable.html" title="class or interface in java.lang"><CODE>Comparable</CODE></A> interface or not.
- This method does not conform to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap.html#comparator()" title="class or interface in java.util"><CODE>SortedMap.comparator()</CODE></A>
+ implement the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Comparable.html" title="class or interface in java.lang"><CODE>Comparable</CODE></A> interface or not.
+ This method does not conform to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedMap.html#comparator()" title="class or interface in java.util"><CODE>SortedMap.comparator()</CODE></A>
interface.
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap.html#comparator()" title="class or interface in java.util">comparator</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedMap.html#comparator()" title="class or interface in java.util">comparator</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A></CODE></DL>
</DD>
<DD><DL>
@@ -449,13 +449,13 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Comparator.html"
<A NAME="firstKey()"><!-- --></A><H3>
firstKey</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>firstKey</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>firstKey</B>()</PRE>
<DL>
<DD>Returns the first (lowest) key currently in this sorted map.
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap.html#firstKey()" title="class or interface in java.util"><CODE>SortedMap.firstKey()</CODE></A> interface.
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedMap.html#firstKey()" title="class or interface in java.util"><CODE>SortedMap.firstKey()</CODE></A> interface.
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap.html#firstKey()" title="class or interface in java.util">firstKey</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedMap.html#firstKey()" title="class or interface in java.util">firstKey</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A></CODE></DL>
</DD>
<DD><DL>
@@ -469,13 +469,13 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" tit
<A NAME="lastKey()"><!-- --></A><H3>
lastKey</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>lastKey</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>lastKey</B>()</PRE>
<DL>
<DD>Returns the last (highest) element currently in this sorted map.
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap.html#lastKey()" title="class or interface in java.util"><CODE>SortedMap.lastKey()</CODE></A> interface.
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedMap.html#lastKey()" title="class or interface in java.util"><CODE>SortedMap.lastKey()</CODE></A> interface.
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap.html#lastKey()" title="class or interface in java.util">lastKey</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedMap.html#lastKey()" title="class or interface in java.util">lastKey</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A></CODE></DL>
</DD>
<DD><DL>
@@ -489,17 +489,17 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" tit
<A NAME="headMap(java.lang.Object)"><!-- --></A><H3>
headMap</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A> <B>headMap</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toKey)</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A> <B>headMap</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toKey)</PRE>
<DL>
<DD>Returns a view of the portion of this sorted set whose keys are
strictly less than toKey.
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap.html#headMap(java.lang.Object)" title="class or interface in java.util"><CODE>SortedMap.headMap(java.lang.Object)</CODE></A> interface.
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedMap.html#headMap(java.lang.Object)" title="class or interface in java.util"><CODE>SortedMap.headMap(java.lang.Object)</CODE></A> interface.
<p>Note that the return value is a StoredStoredMap and must be treated
as such; for example, its iterators must be explicitly closed.</p>
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap.html#headMap(java.lang.Object)" title="class or interface in java.util">headMap</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedMap.html#headMap(java.lang.Object)" title="class or interface in java.util">headMap</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>toKey</CODE> - is the upper bound.
@@ -513,12 +513,12 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap.html"
<A NAME="headMap(java.lang.Object, boolean)"><!-- --></A><H3>
headMap</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A> <B>headMap</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toKey,
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A> <B>headMap</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toKey,
boolean&nbsp;toInclusive)</PRE>
<DL>
<DD>Returns a view of the portion of this sorted map whose elements are
strictly less than toKey, optionally including toKey.
- This method does not exist in the standard <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap.html" title="class or interface in java.util"><CODE>SortedMap</CODE></A> interface.
+ This method does not exist in the standard <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedMap.html" title="class or interface in java.util"><CODE>SortedMap</CODE></A> interface.
<p>Note that the return value is a StoredStoredMap and must be treated
as such; for example, its iterators must be explicitly closed.</p>
@@ -538,17 +538,17 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap.html"
<A NAME="tailMap(java.lang.Object)"><!-- --></A><H3>
tailMap</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A> <B>tailMap</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromKey)</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A> <B>tailMap</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromKey)</PRE>
<DL>
<DD>Returns a view of the portion of this sorted map whose elements are
greater than or equal to fromKey.
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap.html#tailMap(java.lang.Object)" title="class or interface in java.util"><CODE>SortedMap.tailMap(java.lang.Object)</CODE></A> interface.
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedMap.html#tailMap(java.lang.Object)" title="class or interface in java.util"><CODE>SortedMap.tailMap(java.lang.Object)</CODE></A> interface.
<p>Note that the return value is a StoredStoredMap and must be treated
as such; for example, its iterators must be explicitly closed.</p>
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap.html#tailMap(java.lang.Object)" title="class or interface in java.util">tailMap</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedMap.html#tailMap(java.lang.Object)" title="class or interface in java.util">tailMap</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>fromKey</CODE> - is the lower bound.
@@ -562,12 +562,12 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap.html"
<A NAME="tailMap(java.lang.Object, boolean)"><!-- --></A><H3>
tailMap</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A> <B>tailMap</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromKey,
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A> <B>tailMap</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromKey,
boolean&nbsp;fromInclusive)</PRE>
<DL>
<DD>Returns a view of the portion of this sorted map whose elements are
strictly greater than fromKey, optionally including fromKey.
- This method does not exist in the standard <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap.html" title="class or interface in java.util"><CODE>SortedMap</CODE></A> interface.
+ This method does not exist in the standard <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedMap.html" title="class or interface in java.util"><CODE>SortedMap</CODE></A> interface.
<p>Note that the return value is a StoredStoredMap and must be treated
as such; for example, its iterators must be explicitly closed.</p>
@@ -587,18 +587,18 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap.html"
<A NAME="subMap(java.lang.Object, java.lang.Object)"><!-- --></A><H3>
subMap</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A> <B>subMap</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromKey,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toKey)</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A> <B>subMap</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromKey,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toKey)</PRE>
<DL>
<DD>Returns a view of the portion of this sorted map whose elements range
from fromKey, inclusive, to toKey, exclusive.
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap.html#subMap(java.lang.Object, java.lang.Object)" title="class or interface in java.util"><CODE>SortedMap.subMap(java.lang.Object, java.lang.Object)</CODE></A> interface.
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedMap.html#subMap(java.lang.Object, java.lang.Object)" title="class or interface in java.util"><CODE>SortedMap.subMap(java.lang.Object, java.lang.Object)</CODE></A> interface.
<p>Note that the return value is a StoredStoredMap and must be treated
as such; for example, its iterators must be explicitly closed.</p>
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap.html#subMap(java.lang.Object, java.lang.Object)" title="class or interface in java.util">subMap</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedMap.html#subMap(java.lang.Object, java.lang.Object)" title="class or interface in java.util">subMap</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>fromKey</CODE> - is the lower bound.<DD><CODE>toKey</CODE> - is the upper bound.
@@ -612,15 +612,15 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap.html"
<A NAME="subMap(java.lang.Object, boolean, java.lang.Object, boolean)"><!-- --></A><H3>
subMap</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A> <B>subMap</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromKey,
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A> <B>subMap</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromKey,
boolean&nbsp;fromInclusive,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toKey,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toKey,
boolean&nbsp;toInclusive)</PRE>
<DL>
<DD>Returns a view of the portion of this sorted map whose elements are
strictly greater than fromKey and strictly less than toKey,
optionally including fromKey and toKey.
- This method does not exist in the standard <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap.html" title="class or interface in java.util"><CODE>SortedMap</CODE></A> interface.
+ This method does not exist in the standard <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedMap.html" title="class or interface in java.util"><CODE>SortedMap</CODE></A> interface.
<p>Note that the return value is a StoredStoredMap and must be treated
as such; for example, its iterators must be explicitly closed.</p>
@@ -660,7 +660,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap.html"
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -696,6 +696,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&n
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/collections/StoredSortedValueSet.html b/db/docs/java/com/sleepycat/collections/StoredSortedValueSet.html
index 74a1abb9e..8e2c0d12e 100644
--- a/db/docs/java/com/sleepycat/collections/StoredSortedValueSet.html
+++ b/db/docs/java/com/sleepycat/collections/StoredSortedValueSet.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:47 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-StoredSortedValueSet (Oracle Corporation - Berkeley DB Java API)
+StoredSortedValueSet (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.collections.StoredSortedValueSet class">
@@ -14,7 +14,7 @@ StoredSortedValueSet (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="StoredSortedValueSet (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="StoredSortedValueSet (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,18 +89,18 @@ com.sleepycat.collections</FONT>
<BR>
Class StoredSortedValueSet</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../com/sleepycat/collections/StoredContainer.html" title="class in com.sleepycat.collections">com.sleepycat.collections.StoredContainer</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../com/sleepycat/collections/StoredCollection.html" title="class in com.sleepycat.collections">com.sleepycat.collections.StoredCollection</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../com/sleepycat/collections/StoredValueSet.html" title="class in com.sleepycat.collections">com.sleepycat.collections.StoredValueSet</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.collections.StoredSortedValueSet</B>
</PRE>
<DL>
-<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Iterable.html" title="class or interface in java.lang">Iterable</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></DD>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Iterable.html" title="class or interface in java.lang">Iterable</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></DD>
</DL>
<HR>
<DL>
-<DT><PRE>public class <B>StoredSortedValueSet</B><DT>extends <A HREF="../../../com/sleepycat/collections/StoredValueSet.html" title="class in com.sleepycat.collections">StoredValueSet</A><DT>implements <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></DL>
+<DT><PRE>public class <B>StoredSortedValueSet</B><DT>extends <A HREF="../../../com/sleepycat/collections/StoredValueSet.html" title="class in com.sleepycat.collections">StoredValueSet</A><DT>implements <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></DL>
</PRE>
<P>
@@ -171,7 +171,7 @@ The SortedSet returned by Map.values() and which can also be constructed
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Comparator.html" title="class or interface in java.util">Comparator</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Comparator.html" title="class or interface in java.util">Comparator</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredSortedValueSet.html#comparator()">comparator</A></B>()</CODE>
<BR>
@@ -179,7 +179,7 @@ The SortedSet returned by Map.values() and which can also be constructed
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredSortedValueSet.html#first()">first</A></B>()</CODE>
<BR>
@@ -187,8 +187,8 @@ The SortedSet returned by Map.values() and which can also be constructed
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredSortedValueSet.html#headSet(java.lang.Object)">headSet</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toValue)</CODE>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredSortedValueSet.html#headSet(java.lang.Object)">headSet</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toValue)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a view of the portion of this sorted set whose elements are
@@ -196,8 +196,8 @@ The SortedSet returned by Map.values() and which can also be constructed
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredSortedValueSet.html#headSet(java.lang.Object, boolean)">headSet</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toValue,
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredSortedValueSet.html#headSet(java.lang.Object, boolean)">headSet</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toValue,
boolean&nbsp;toInclusive)</CODE>
<BR>
@@ -206,7 +206,7 @@ The SortedSet returned by Map.values() and which can also be constructed
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredSortedValueSet.html#last()">last</A></B>()</CODE>
<BR>
@@ -214,10 +214,10 @@ The SortedSet returned by Map.values() and which can also be constructed
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredSortedValueSet.html#subSet(java.lang.Object, boolean, java.lang.Object, boolean)">subSet</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromValue,
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredSortedValueSet.html#subSet(java.lang.Object, boolean, java.lang.Object, boolean)">subSet</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromValue,
boolean&nbsp;fromInclusive,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toValue,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toValue,
boolean&nbsp;toInclusive)</CODE>
<BR>
@@ -227,9 +227,9 @@ The SortedSet returned by Map.values() and which can also be constructed
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredSortedValueSet.html#subSet(java.lang.Object, java.lang.Object)">subSet</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromValue,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toValue)</CODE>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredSortedValueSet.html#subSet(java.lang.Object, java.lang.Object)">subSet</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromValue,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toValue)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a view of the portion of this sorted set whose elements range
@@ -237,8 +237,8 @@ The SortedSet returned by Map.values() and which can also be constructed
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredSortedValueSet.html#tailSet(java.lang.Object)">tailSet</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromValue)</CODE>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredSortedValueSet.html#tailSet(java.lang.Object)">tailSet</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromValue)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a view of the portion of this sorted set whose elements are
@@ -246,8 +246,8 @@ The SortedSet returned by Map.values() and which can also be constructed
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredSortedValueSet.html#tailSet(java.lang.Object, boolean)">tailSet</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromValue,
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredSortedValueSet.html#tailSet(java.lang.Object, boolean)">tailSet</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromValue,
boolean&nbsp;fromInclusive)</CODE>
<BR>
@@ -285,19 +285,19 @@ The SortedSet returned by Map.values() and which can also be constructed
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.util.Set"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from interface java.util.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from interface java.util.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#add(java.lang.Object)" title="class or interface in java.util">add</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#addAll(java.util.Collection)" title="class or interface in java.util">addAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#clear()" title="class or interface in java.util">clear</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#contains(java.lang.Object)" title="class or interface in java.util">contains</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#containsAll(java.util.Collection)" title="class or interface in java.util">containsAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#equals(java.lang.Object)" title="class or interface in java.util">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#hashCode()" title="class or interface in java.util">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#isEmpty()" title="class or interface in java.util">isEmpty</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#iterator()" title="class or interface in java.util">iterator</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#remove(java.lang.Object)" title="class or interface in java.util">remove</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#removeAll(java.util.Collection)" title="class or interface in java.util">removeAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#retainAll(java.util.Collection)" title="class or interface in java.util">retainAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#size()" title="class or interface in java.util">size</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#toArray()" title="class or interface in java.util">toArray</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#toArray(java.lang.Object[])" title="class or interface in java.util">toArray</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#add(java.lang.Object)" title="class or interface in java.util">add</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#addAll(java.util.Collection)" title="class or interface in java.util">addAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#clear()" title="class or interface in java.util">clear</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#contains(java.lang.Object)" title="class or interface in java.util">contains</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#containsAll(java.util.Collection)" title="class or interface in java.util">containsAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#equals(java.lang.Object)" title="class or interface in java.util">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#hashCode()" title="class or interface in java.util">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#isEmpty()" title="class or interface in java.util">isEmpty</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#iterator()" title="class or interface in java.util">iterator</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#remove(java.lang.Object)" title="class or interface in java.util">remove</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#removeAll(java.util.Collection)" title="class or interface in java.util">removeAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#retainAll(java.util.Collection)" title="class or interface in java.util">retainAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#size()" title="class or interface in java.util">size</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#toArray()" title="class or interface in java.util">toArray</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#toArray(java.lang.Object[])" title="class or interface in java.util">toArray</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -327,7 +327,7 @@ public <B>StoredSortedValueSet</B>(<A HREF="../../../com/sleepycat/db/Database.h
key/value buffers and entity value objects.<DD><CODE>writeAllowed</CODE> - is true to create a read-write collection or false
to create a read-only collection.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if formats are not consistently
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if formats are not consistently
defined or a parameter is invalid.
<DD><CODE>RuntimeExceptionWrapper</CODE> - if a <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db"><CODE>DatabaseException</CODE></A> is thrown.</DL>
</DL>
@@ -345,16 +345,16 @@ public <B>StoredSortedValueSet</B>(<A HREF="../../../com/sleepycat/db/Database.h
<A NAME="comparator()"><!-- --></A><H3>
comparator</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Comparator.html" title="class or interface in java.util">Comparator</A> <B>comparator</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Comparator.html" title="class or interface in java.util">Comparator</A> <B>comparator</B>()</PRE>
<DL>
<DD>Returns null since comparators are not supported. The natural ordering
of a stored collection is data byte order, whether the data classes
- implement the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Comparable.html" title="class or interface in java.lang"><CODE>Comparable</CODE></A> interface or not.
- This method does not conform to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html#comparator()" title="class or interface in java.util"><CODE>SortedSet.comparator()</CODE></A>
+ implement the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Comparable.html" title="class or interface in java.lang"><CODE>Comparable</CODE></A> interface or not.
+ This method does not conform to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html#comparator()" title="class or interface in java.util"><CODE>SortedSet.comparator()</CODE></A>
interface.
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html#comparator()" title="class or interface in java.util">comparator</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html#comparator()" title="class or interface in java.util">comparator</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></DL>
</DD>
<DD><DL>
@@ -366,13 +366,13 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Comparator.html"
<A NAME="first()"><!-- --></A><H3>
first</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>first</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>first</B>()</PRE>
<DL>
<DD>Returns the first (lowest) element currently in this sorted set.
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html#first()" title="class or interface in java.util"><CODE>SortedSet.first()</CODE></A> interface.
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html#first()" title="class or interface in java.util"><CODE>SortedSet.first()</CODE></A> interface.
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html#first()" title="class or interface in java.util">first</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html#first()" title="class or interface in java.util">first</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></DL>
</DD>
<DD><DL>
@@ -386,13 +386,13 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" tit
<A NAME="last()"><!-- --></A><H3>
last</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>last</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>last</B>()</PRE>
<DL>
<DD>Returns the last (highest) element currently in this sorted set.
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html#last()" title="class or interface in java.util"><CODE>SortedSet.last()</CODE></A> interface.
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html#last()" title="class or interface in java.util"><CODE>SortedSet.last()</CODE></A> interface.
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html#last()" title="class or interface in java.util">last</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html#last()" title="class or interface in java.util">last</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></DL>
</DD>
<DD><DL>
@@ -406,17 +406,17 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" tit
<A NAME="headSet(java.lang.Object)"><!-- --></A><H3>
headSet</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A> <B>headSet</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toValue)</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A> <B>headSet</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toValue)</PRE>
<DL>
<DD>Returns a view of the portion of this sorted set whose elements are
strictly less than toValue.
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html#headSet(java.lang.Object)" title="class or interface in java.util"><CODE>SortedSet.headSet(java.lang.Object)</CODE></A> interface.
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html#headSet(java.lang.Object)" title="class or interface in java.util"><CODE>SortedSet.headSet(java.lang.Object)</CODE></A> interface.
<p>Note that the return value is a StoredCollection and must be treated
as such; for example, its iterators must be explicitly closed.</p>
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html#headSet(java.lang.Object)" title="class or interface in java.util">headSet</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html#headSet(java.lang.Object)" title="class or interface in java.util">headSet</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>toValue</CODE> - the upper bound.
@@ -430,12 +430,12 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html"
<A NAME="headSet(java.lang.Object, boolean)"><!-- --></A><H3>
headSet</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A> <B>headSet</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toValue,
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A> <B>headSet</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toValue,
boolean&nbsp;toInclusive)</PRE>
<DL>
<DD>Returns a view of the portion of this sorted set whose elements are
strictly less than toValue, optionally including toValue.
- This method does not exist in the standard <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util"><CODE>SortedSet</CODE></A> interface.
+ This method does not exist in the standard <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util"><CODE>SortedSet</CODE></A> interface.
<p>Note that the return value is a StoredCollection and must be treated
as such; for example, its iterators must be explicitly closed.</p>
@@ -455,17 +455,17 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html"
<A NAME="tailSet(java.lang.Object)"><!-- --></A><H3>
tailSet</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A> <B>tailSet</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromValue)</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A> <B>tailSet</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromValue)</PRE>
<DL>
<DD>Returns a view of the portion of this sorted set whose elements are
greater than or equal to fromValue.
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html#tailSet(java.lang.Object)" title="class or interface in java.util"><CODE>SortedSet.tailSet(java.lang.Object)</CODE></A> interface.
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html#tailSet(java.lang.Object)" title="class or interface in java.util"><CODE>SortedSet.tailSet(java.lang.Object)</CODE></A> interface.
<p>Note that the return value is a StoredCollection and must be treated
as such; for example, its iterators must be explicitly closed.</p>
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html#tailSet(java.lang.Object)" title="class or interface in java.util">tailSet</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html#tailSet(java.lang.Object)" title="class or interface in java.util">tailSet</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>fromValue</CODE> - is the lower bound.
@@ -479,12 +479,12 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html"
<A NAME="tailSet(java.lang.Object, boolean)"><!-- --></A><H3>
tailSet</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A> <B>tailSet</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromValue,
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A> <B>tailSet</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromValue,
boolean&nbsp;fromInclusive)</PRE>
<DL>
<DD>Returns a view of the portion of this sorted set whose elements are
strictly greater than fromValue, optionally including fromValue.
- This method does not exist in the standard <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util"><CODE>SortedSet</CODE></A> interface.
+ This method does not exist in the standard <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util"><CODE>SortedSet</CODE></A> interface.
<p>Note that the return value is a StoredCollection and must be treated
as such; for example, its iterators must be explicitly closed.</p>
@@ -504,18 +504,18 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html"
<A NAME="subSet(java.lang.Object, java.lang.Object)"><!-- --></A><H3>
subSet</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A> <B>subSet</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromValue,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toValue)</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A> <B>subSet</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromValue,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toValue)</PRE>
<DL>
<DD>Returns a view of the portion of this sorted set whose elements range
from fromValue, inclusive, to toValue, exclusive.
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html#subSet(java.lang.Object, java.lang.Object)" title="class or interface in java.util"><CODE>SortedSet.subSet(java.lang.Object, java.lang.Object)</CODE></A> interface.
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html#subSet(java.lang.Object, java.lang.Object)" title="class or interface in java.util"><CODE>SortedSet.subSet(java.lang.Object, java.lang.Object)</CODE></A> interface.
<p>Note that the return value is a StoredCollection and must be treated
as such; for example, its iterators must be explicitly closed.</p>
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html#subSet(java.lang.Object, java.lang.Object)" title="class or interface in java.util">subSet</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html#subSet(java.lang.Object, java.lang.Object)" title="class or interface in java.util">subSet</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>fromValue</CODE> - is the lower bound.<DD><CODE>toValue</CODE> - is the upper bound.
@@ -529,15 +529,15 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html"
<A NAME="subSet(java.lang.Object, boolean, java.lang.Object, boolean)"><!-- --></A><H3>
subSet</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A> <B>subSet</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromValue,
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A> <B>subSet</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;fromValue,
boolean&nbsp;fromInclusive,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toValue,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;toValue,
boolean&nbsp;toInclusive)</PRE>
<DL>
<DD>Returns a view of the portion of this sorted set whose elements are
strictly greater than fromValue and strictly less than toValue,
optionally including fromValue and toValue.
- This method does not exist in the standard <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util"><CODE>SortedSet</CODE></A> interface.
+ This method does not exist in the standard <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util"><CODE>SortedSet</CODE></A> interface.
<p>Note that the return value is a StoredCollection and must be treated
as such; for example, its iterators must be explicitly closed.</p>
@@ -577,7 +577,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html"
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -613,6 +613,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&n
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/collections/StoredValueSet.html b/db/docs/java/com/sleepycat/collections/StoredValueSet.html
index 6f7ee85f1..74b3a0927 100644
--- a/db/docs/java/com/sleepycat/collections/StoredValueSet.html
+++ b/db/docs/java/com/sleepycat/collections/StoredValueSet.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:47 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-StoredValueSet (Oracle Corporation - Berkeley DB Java API)
+StoredValueSet (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.collections.StoredValueSet class">
@@ -14,7 +14,7 @@ StoredValueSet (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="StoredValueSet (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="StoredValueSet (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,20 +89,20 @@ com.sleepycat.collections</FONT>
<BR>
Class StoredValueSet</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../com/sleepycat/collections/StoredContainer.html" title="class in com.sleepycat.collections">com.sleepycat.collections.StoredContainer</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../com/sleepycat/collections/StoredCollection.html" title="class in com.sleepycat.collections">com.sleepycat.collections.StoredCollection</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.collections.StoredValueSet</B>
</PRE>
<DL>
-<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Iterable.html" title="class or interface in java.lang">Iterable</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A></DD>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Iterable.html" title="class or interface in java.lang">Iterable</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A></DD>
</DL>
<DL>
<DT><B>Direct Known Subclasses:</B> <DD><A HREF="../../../com/sleepycat/collections/StoredSortedValueSet.html" title="class in com.sleepycat.collections">StoredSortedValueSet</A></DD>
</DL>
<HR>
<DL>
-<DT><PRE>public class <B>StoredValueSet</B><DT>extends <A HREF="../../../com/sleepycat/collections/StoredCollection.html" title="class in com.sleepycat.collections">StoredCollection</A><DT>implements <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A></DL>
+<DT><PRE>public class <B>StoredValueSet</B><DT>extends <A HREF="../../../com/sleepycat/collections/StoredCollection.html" title="class in com.sleepycat.collections">StoredCollection</A><DT>implements <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A></DL>
</PRE>
<P>
@@ -172,7 +172,7 @@ The Set returned by Map.values() and Map.duplicates(), and which can also be
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredValueSet.html#add(java.lang.Object)">add</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;entity)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredValueSet.html#add(java.lang.Object)">add</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;entity)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Adds the specified entity to this set if it is not already present
@@ -181,7 +181,7 @@ The Set returned by Map.values() and Map.duplicates(), and which can also be
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredValueSet.html#contains(java.lang.Object)">contains</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredValueSet.html#contains(java.lang.Object)">contains</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns true if this set contains the specified element.</TD>
@@ -189,7 +189,7 @@ The Set returned by Map.values() and Map.duplicates(), and which can also be
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredValueSet.html#remove(java.lang.Object)">remove</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/StoredValueSet.html#remove(java.lang.Object)">remove</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Removes the specified value from this set if it is present (optional
@@ -217,19 +217,19 @@ The Set returned by Map.values() and Map.duplicates(), and which can also be
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.util.Set"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from interface java.util.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from interface java.util.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#addAll(java.util.Collection)" title="class or interface in java.util">addAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#clear()" title="class or interface in java.util">clear</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#containsAll(java.util.Collection)" title="class or interface in java.util">containsAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#equals(java.lang.Object)" title="class or interface in java.util">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#hashCode()" title="class or interface in java.util">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#isEmpty()" title="class or interface in java.util">isEmpty</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#iterator()" title="class or interface in java.util">iterator</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#removeAll(java.util.Collection)" title="class or interface in java.util">removeAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#retainAll(java.util.Collection)" title="class or interface in java.util">retainAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#size()" title="class or interface in java.util">size</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#toArray()" title="class or interface in java.util">toArray</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#toArray(java.lang.Object[])" title="class or interface in java.util">toArray</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#addAll(java.util.Collection)" title="class or interface in java.util">addAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#clear()" title="class or interface in java.util">clear</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#containsAll(java.util.Collection)" title="class or interface in java.util">containsAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#equals(java.lang.Object)" title="class or interface in java.util">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#hashCode()" title="class or interface in java.util">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#isEmpty()" title="class or interface in java.util">isEmpty</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#iterator()" title="class or interface in java.util">iterator</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#removeAll(java.util.Collection)" title="class or interface in java.util">removeAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#retainAll(java.util.Collection)" title="class or interface in java.util">retainAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#size()" title="class or interface in java.util">size</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#toArray()" title="class or interface in java.util">toArray</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#toArray(java.lang.Object[])" title="class or interface in java.util">toArray</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -259,7 +259,7 @@ public <B>StoredValueSet</B>(<A HREF="../../../com/sleepycat/db/Database.html" t
buffers and value objects.<DD><CODE>writeAllowed</CODE> - is true to create a read-write collection or false
to create a read-only collection.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if formats are not consistently
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if formats are not consistently
defined or a parameter is invalid.
<DD><CODE>RuntimeExceptionWrapper</CODE> - if a <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db"><CODE>DatabaseException</CODE></A> is
thrown.</DL>
@@ -280,7 +280,7 @@ public <B>StoredValueSet</B>(<A HREF="../../../com/sleepycat/db/Database.html" t
key/value buffers and entity value objects.<DD><CODE>writeAllowed</CODE> - is true to create a read-write collection or false
to create a read-only collection.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if formats are not consistently
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if formats are not consistently
defined or a parameter is invalid.
<DD><CODE>RuntimeExceptionWrapper</CODE> - if a <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db"><CODE>DatabaseException</CODE></A> is
thrown.</DL>
@@ -299,21 +299,21 @@ public <B>StoredValueSet</B>(<A HREF="../../../com/sleepycat/db/Database.html" t
<A NAME="add(java.lang.Object)"><!-- --></A><H3>
add</H3>
<PRE>
-public boolean <B>add</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;entity)</PRE>
+public boolean <B>add</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;entity)</PRE>
<DL>
<DD>Adds the specified entity to this set if it is not already present
(optional operation).
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#add(java.lang.Object)" title="class or interface in java.util"><CODE>Set.add(java.lang.Object)</CODE></A> interface.
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#add(java.lang.Object)" title="class or interface in java.util"><CODE>Set.add(java.lang.Object)</CODE></A> interface.
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html#add(java.lang.Object)" title="class or interface in java.util">add</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE><DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#add(java.lang.Object)" title="class or interface in java.util">add</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html#add(java.lang.Object)" title="class or interface in java.util">add</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE><DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#add(java.lang.Object)" title="class or interface in java.util">add</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>entity</CODE> - is the entity to be added.
<DT><B>Returns:</B><DD>true if the entity was added, that is the key-value pair
represented by the entity was not previously present in the collection.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/UnsupportedOperationException.html" title="class or interface in java.lang">UnsupportedOperationException</A></CODE> - if the collection is read-only,
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/UnsupportedOperationException.html" title="class or interface in java.lang">UnsupportedOperationException</A></CODE> - if the collection is read-only,
if the collection is indexed, or if an entity binding is not used.
<DD><CODE>RuntimeExceptionWrapper</CODE> - if a <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db"><CODE>DatabaseException</CODE></A> is
thrown.</DL>
@@ -324,14 +324,14 @@ public boolean <B>add</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/la
<A NAME="contains(java.lang.Object)"><!-- --></A><H3>
contains</H3>
<PRE>
-public boolean <B>contains</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</PRE>
+public boolean <B>contains</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</PRE>
<DL>
<DD>Returns true if this set contains the specified element.
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#contains(java.lang.Object)" title="class or interface in java.util"><CODE>Set.contains(java.lang.Object)</CODE></A>
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#contains(java.lang.Object)" title="class or interface in java.util"><CODE>Set.contains(java.lang.Object)</CODE></A>
interface.
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html#contains(java.lang.Object)" title="class or interface in java.util">contains</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE><DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#contains(java.lang.Object)" title="class or interface in java.util">contains</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html#contains(java.lang.Object)" title="class or interface in java.util">contains</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE><DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#contains(java.lang.Object)" title="class or interface in java.util">contains</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>value</CODE> - the value to check.
@@ -343,22 +343,22 @@ public boolean <B>contains</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/ja
<A NAME="remove(java.lang.Object)"><!-- --></A><H3>
remove</H3>
<PRE>
-public boolean <B>remove</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</PRE>
+public boolean <B>remove</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;value)</PRE>
<DL>
<DD>Removes the specified value from this set if it is present (optional
operation).
If an entity binding is used, the key-value pair represented by the
given entity is removed. If an entity binding is used, the first
occurrence of a key-value pair with the given value is removed.
- This method conforms to the <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#remove(java.lang.Object)" title="class or interface in java.util"><CODE>Set.remove(java.lang.Object)</CODE></A> interface.
+ This method conforms to the <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#remove(java.lang.Object)" title="class or interface in java.util"><CODE>Set.remove(java.lang.Object)</CODE></A> interface.
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html#remove(java.lang.Object)" title="class or interface in java.util">remove</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE><DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html#remove(java.lang.Object)" title="class or interface in java.util">remove</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html#remove(java.lang.Object)" title="class or interface in java.util">remove</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE><DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#remove(java.lang.Object)" title="class or interface in java.util">remove</A></CODE> in interface <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/UnsupportedOperationException.html" title="class or interface in java.lang">UnsupportedOperationException</A></CODE> - if the collection is read-only.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/UnsupportedOperationException.html" title="class or interface in java.lang">UnsupportedOperationException</A></CODE> - if the collection is read-only.
<DD><CODE>RuntimeExceptionWrapper</CODE> - if a <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db"><CODE>DatabaseException</CODE></A> is
thrown.</DL>
</DD>
@@ -388,7 +388,7 @@ public boolean <B>remove</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -424,6 +424,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&n
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/collections/TransactionRunner.html b/db/docs/java/com/sleepycat/collections/TransactionRunner.html
index 0617f9d4c..f77da4962 100644
--- a/db/docs/java/com/sleepycat/collections/TransactionRunner.html
+++ b/db/docs/java/com/sleepycat/collections/TransactionRunner.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:47 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-TransactionRunner (Oracle Corporation - Berkeley DB Java API)
+TransactionRunner (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.collections.TransactionRunner class">
@@ -14,7 +14,7 @@ TransactionRunner (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="TransactionRunner (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="TransactionRunner (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,12 +89,12 @@ com.sleepycat.collections</FONT>
<BR>
Class TransactionRunner</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.collections.TransactionRunner</B>
</PRE>
<HR>
<DL>
-<DT><PRE>public class <B>TransactionRunner</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
+<DT><PRE>public class <B>TransactionRunner</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
</PRE>
<P>
@@ -275,10 +275,10 @@ Starts a transaction, calls <A HREF="../../../com/sleepycat/collections/Transact
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -431,7 +431,7 @@ public <A HREF="../../../com/sleepycat/db/TransactionConfig.html" title="class i
<DL>
<DD>Returns the transaction configuration used for calling
<A HREF="../../../com/sleepycat/db/Environment.html#beginTransaction(com.sleepycat.db.Transaction, com.sleepycat.db.TransactionConfig)"><CODE>Environment.beginTransaction(com.sleepycat.db.Transaction, com.sleepycat.db.TransactionConfig)</CODE></A>.
-
+
<p>If this property is null, the default configuration is used. The
configuration object is not cloned, and any modifications to it will
impact subsequent transactions.</p>
@@ -450,7 +450,7 @@ public void <B>setTransactionConfig</B>(<A HREF="../../../com/sleepycat/db/Trans
<DL>
<DD>Changes the transaction configuration used for calling
<A HREF="../../../com/sleepycat/db/Environment.html#beginTransaction(com.sleepycat.db.Transaction, com.sleepycat.db.TransactionConfig)"><CODE>Environment.beginTransaction(com.sleepycat.db.Transaction, com.sleepycat.db.TransactionConfig)</CODE></A>.
-
+
<p>If this property is null, the default configuration is used. The
configuration object is not cloned, and any modifications to it will
impact subsequent transactions.</p>
@@ -466,7 +466,7 @@ run</H3>
<PRE>
public void <B>run</B>(<A HREF="../../../com/sleepycat/collections/TransactionWorker.html" title="interface in com.sleepycat.collections">TransactionWorker</A>&nbsp;worker)
throws <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A>,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Exception.html" title="class or interface in java.lang">Exception</A></PRE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Exception.html" title="class or interface in java.lang">Exception</A></PRE>
<DL>
<DD>Calls the <A HREF="../../../com/sleepycat/collections/TransactionWorker.html#doWork()"><CODE>TransactionWorker.doWork()</CODE></A> method and, for transactional
environments, may begin and end a transaction. If the environment given
@@ -480,7 +480,7 @@ public void <B>run</B>(<A HREF="../../../com/sleepycat/collections/TransactionWo
<DD><CODE><A HREF="../../../com/sleepycat/db/DeadlockException.html" title="class in com.sleepycat.db">DeadlockException</A></CODE> - when it is thrown by doWork() and the
maximum number of retries has occurred. The transaction will have been
aborted by this method.
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Exception.html" title="class or interface in java.lang">Exception</A></CODE> - when any other exception is thrown by doWork(). The
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Exception.html" title="class or interface in java.lang">Exception</A></CODE> - when any other exception is thrown by doWork(). The
exception will first be unwrapped by calling <A HREF="../../../com/sleepycat/util/ExceptionUnwrapper.html#unwrap(java.lang.Exception)"><CODE>ExceptionUnwrapper.unwrap(java.lang.Exception)</CODE></A>. The transaction will have been aborted by
this method.
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE></DL>
@@ -511,7 +511,7 @@ public void <B>run</B>(<A HREF="../../../com/sleepycat/collections/TransactionWo
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -547,6 +547,6 @@ DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/collections/TransactionWorker.html b/db/docs/java/com/sleepycat/collections/TransactionWorker.html
index 0e7a38f7f..f2b1ff242 100644
--- a/db/docs/java/com/sleepycat/collections/TransactionWorker.html
+++ b/db/docs/java/com/sleepycat/collections/TransactionWorker.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:48 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-TransactionWorker (Oracle Corporation - Berkeley DB Java API)
+TransactionWorker (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.collections.TransactionWorker interface">
@@ -14,7 +14,7 @@ TransactionWorker (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="TransactionWorker (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="TransactionWorker (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -138,14 +138,14 @@ The interface implemented to perform the work within a transaction.
doWork</H3>
<PRE>
void <B>doWork</B>()
- throws <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Exception.html" title="class or interface in java.lang">Exception</A></PRE>
+ throws <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Exception.html" title="class or interface in java.lang">Exception</A></PRE>
<DL>
<DD>Perform the work for a single transaction.
<P>
<DD><DL>
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Exception.html" title="class or interface in java.lang">Exception</A></CODE><DT><B>See Also:</B><DD><A HREF="../../../com/sleepycat/collections/TransactionRunner.html#run(com.sleepycat.collections.TransactionWorker)"><CODE>TransactionRunner.run(com.sleepycat.collections.TransactionWorker)</CODE></A></DL>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Exception.html" title="class or interface in java.lang">Exception</A></CODE><DT><B>See Also:</B><DD><A HREF="../../../com/sleepycat/collections/TransactionRunner.html#run(com.sleepycat.collections.TransactionWorker)"><CODE>TransactionRunner.run(com.sleepycat.collections.TransactionWorker)</CODE></A></DL>
</DD>
</DL>
<!-- ========= END OF CLASS DATA ========= -->
@@ -173,7 +173,7 @@ void <B>doWork</B>()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -209,6 +209,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHO
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/collections/TupleSerialFactory.html b/db/docs/java/com/sleepycat/collections/TupleSerialFactory.html
index abfed20b3..d028afeb8 100644
--- a/db/docs/java/com/sleepycat/collections/TupleSerialFactory.html
+++ b/db/docs/java/com/sleepycat/collections/TupleSerialFactory.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:48 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-TupleSerialFactory (Oracle Corporation - Berkeley DB Java API)
+TupleSerialFactory (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.collections.TupleSerialFactory class">
@@ -14,7 +14,7 @@ TupleSerialFactory (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="TupleSerialFactory (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="TupleSerialFactory (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,12 +89,12 @@ com.sleepycat.collections</FONT>
<BR>
Class TupleSerialFactory</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.collections.TupleSerialFactory</B>
</PRE>
<HR>
<DL>
-<DT><PRE>public class <B>TupleSerialFactory</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
+<DT><PRE>public class <B>TupleSerialFactory</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
</PRE>
<P>
@@ -145,8 +145,8 @@ Creates stored collections having tuple keys and serialized entity values.
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../com/sleepycat/bind/serial/TupleSerialMarshalledKeyCreator.html" title="class in com.sleepycat.bind.serial">TupleSerialMarshalledKeyCreator</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/collections/TupleSerialFactory.html#getKeyCreator(java.lang.Class, java.lang.String)">getKeyCreator</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;valueBaseClass,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;keyName)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/collections/TupleSerialFactory.html#getKeyCreator(java.lang.Class, java.lang.String)">getKeyCreator</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;valueBaseClass,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;keyName)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a <code>SecondaryKeyCreator</code> object for use in configuring
@@ -156,8 +156,8 @@ Creates stored collections having tuple keys and serialized entity values.
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../com/sleepycat/collections/StoredMap.html" title="class in com.sleepycat.collections">StoredMap</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/collections/TupleSerialFactory.html#newMap(com.sleepycat.db.Database, java.lang.Class, java.lang.Class, boolean)">newMap</A></B>(<A HREF="../../../com/sleepycat/db/Database.html" title="class in com.sleepycat.db">Database</A>&nbsp;db,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;keyClass,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;valueBaseClass,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;keyClass,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;valueBaseClass,
boolean&nbsp;writeAllowed)</CODE>
<BR>
@@ -167,8 +167,8 @@ Creates stored collections having tuple keys and serialized entity values.
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../com/sleepycat/collections/StoredSortedMap.html" title="class in com.sleepycat.collections">StoredSortedMap</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/collections/TupleSerialFactory.html#newSortedMap(com.sleepycat.db.Database, java.lang.Class, java.lang.Class, boolean)">newSortedMap</A></B>(<A HREF="../../../com/sleepycat/db/Database.html" title="class in com.sleepycat.db">Database</A>&nbsp;db,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;keyClass,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;valueBaseClass,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;keyClass,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;valueBaseClass,
boolean&nbsp;writeAllowed)</CODE>
<BR>
@@ -178,10 +178,10 @@ Creates stored collections having tuple keys and serialized entity values.
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -233,8 +233,8 @@ public final <A HREF="../../../com/sleepycat/bind/serial/ClassCatalog.html" titl
newMap</H3>
<PRE>
public <A HREF="../../../com/sleepycat/collections/StoredMap.html" title="class in com.sleepycat.collections">StoredMap</A> <B>newMap</B>(<A HREF="../../../com/sleepycat/db/Database.html" title="class in com.sleepycat.db">Database</A>&nbsp;db,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;keyClass,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;valueBaseClass,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;keyClass,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;valueBaseClass,
boolean&nbsp;writeAllowed)</PRE>
<DL>
<DD>Creates a map from a previously opened Database object.
@@ -253,8 +253,8 @@ public <A HREF="../../../com/sleepycat/collections/StoredMap.html" title="class
newSortedMap</H3>
<PRE>
public <A HREF="../../../com/sleepycat/collections/StoredSortedMap.html" title="class in com.sleepycat.collections">StoredSortedMap</A> <B>newSortedMap</B>(<A HREF="../../../com/sleepycat/db/Database.html" title="class in com.sleepycat.db">Database</A>&nbsp;db,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;keyClass,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;valueBaseClass,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;keyClass,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;valueBaseClass,
boolean&nbsp;writeAllowed)</PRE>
<DL>
<DD>Creates a sorted map from a previously opened Database object.
@@ -272,8 +272,8 @@ public <A HREF="../../../com/sleepycat/collections/StoredSortedMap.html" title="
<A NAME="getKeyCreator(java.lang.Class, java.lang.String)"><!-- --></A><H3>
getKeyCreator</H3>
<PRE>
-public <A HREF="../../../com/sleepycat/bind/serial/TupleSerialMarshalledKeyCreator.html" title="class in com.sleepycat.bind.serial">TupleSerialMarshalledKeyCreator</A> <B>getKeyCreator</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;valueBaseClass,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;keyName)</PRE>
+public <A HREF="../../../com/sleepycat/bind/serial/TupleSerialMarshalledKeyCreator.html" title="class in com.sleepycat.bind.serial">TupleSerialMarshalledKeyCreator</A> <B>getKeyCreator</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;valueBaseClass,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;keyName)</PRE>
<DL>
<DD>Creates a <code>SecondaryKeyCreator</code> object for use in configuring
a <code>SecondaryDatabase</code>. The returned object implements
@@ -310,7 +310,7 @@ public <A HREF="../../../com/sleepycat/bind/serial/TupleSerialMarshalledKeyCreat
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -346,6 +346,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&n
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/collections/class-use/CurrentTransaction.html b/db/docs/java/com/sleepycat/collections/class-use/CurrentTransaction.html
index 4129dc8f0..f90739950 100644
--- a/db/docs/java/com/sleepycat/collections/class-use/CurrentTransaction.html
+++ b/db/docs/java/com/sleepycat/collections/class-use/CurrentTransaction.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:57:00 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.collections.CurrentTransaction (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.collections.CurrentTransaction (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.collections.CurrentTransaction (Oracle Corporation -
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.collections.CurrentTransaction (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.collections.CurrentTransaction (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -142,7 +142,7 @@ Uses of <A HREF="../../../../com/sleepycat/collections/CurrentTransaction.html"
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -172,6 +172,6 @@ Uses of <A HREF="../../../../com/sleepycat/collections/CurrentTransaction.html"
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/collections/class-use/MapEntryParameter.html b/db/docs/java/com/sleepycat/collections/class-use/MapEntryParameter.html
index 00d153906..cb5f68058 100644
--- a/db/docs/java/com/sleepycat/collections/class-use/MapEntryParameter.html
+++ b/db/docs/java/com/sleepycat/collections/class-use/MapEntryParameter.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:57:00 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.collections.MapEntryParameter (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.collections.MapEntryParameter (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.collections.MapEntryParameter (Oracle Corporation -
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.collections.MapEntryParameter (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.collections.MapEntryParameter (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -105,7 +105,7 @@ No usage of com.sleepycat.collections.MapEntryParameter
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -135,6 +135,6 @@ No usage of com.sleepycat.collections.MapEntryParameter
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/collections/class-use/PrimaryKeyAssigner.html b/db/docs/java/com/sleepycat/collections/class-use/PrimaryKeyAssigner.html
index f179b833e..18a223ce9 100644
--- a/db/docs/java/com/sleepycat/collections/class-use/PrimaryKeyAssigner.html
+++ b/db/docs/java/com/sleepycat/collections/class-use/PrimaryKeyAssigner.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:57:00 EDT 2007 -->
<TITLE>
-Uses of Interface com.sleepycat.collections.PrimaryKeyAssigner (Oracle Corporation - Berkeley DB Java API)
+Uses of Interface com.sleepycat.collections.PrimaryKeyAssigner (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Interface com.sleepycat.collections.PrimaryKeyAssigner (Oracle Corporati
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Interface com.sleepycat.collections.PrimaryKeyAssigner (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Interface com.sleepycat.collections.PrimaryKeyAssigner (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -185,7 +185,7 @@ Uses of <A HREF="../../../../com/sleepycat/collections/PrimaryKeyAssigner.html"
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -215,6 +215,6 @@ Uses of <A HREF="../../../../com/sleepycat/collections/PrimaryKeyAssigner.html"
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/collections/class-use/StoredCollection.html b/db/docs/java/com/sleepycat/collections/class-use/StoredCollection.html
index b5e815947..f4e3cdc83 100644
--- a/db/docs/java/com/sleepycat/collections/class-use/StoredCollection.html
+++ b/db/docs/java/com/sleepycat/collections/class-use/StoredCollection.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:57:00 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.collections.StoredCollection (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.collections.StoredCollection (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.collections.StoredCollection (Oracle Corporation - B
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.collections.StoredCollection (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.collections.StoredCollection (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -209,7 +209,7 @@ Uses of <A HREF="../../../../com/sleepycat/collections/StoredCollection.html" ti
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -239,6 +239,6 @@ Uses of <A HREF="../../../../com/sleepycat/collections/StoredCollection.html" ti
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/collections/class-use/StoredCollections.html b/db/docs/java/com/sleepycat/collections/class-use/StoredCollections.html
index e814386e1..0e8c6e6fb 100644
--- a/db/docs/java/com/sleepycat/collections/class-use/StoredCollections.html
+++ b/db/docs/java/com/sleepycat/collections/class-use/StoredCollections.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:57:00 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.collections.StoredCollections (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.collections.StoredCollections (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.collections.StoredCollections (Oracle Corporation -
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.collections.StoredCollections (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.collections.StoredCollections (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -105,7 +105,7 @@ No usage of com.sleepycat.collections.StoredCollections
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -135,6 +135,6 @@ No usage of com.sleepycat.collections.StoredCollections
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/collections/class-use/StoredContainer.html b/db/docs/java/com/sleepycat/collections/class-use/StoredContainer.html
index 0df5ec2ab..aebf7c26c 100644
--- a/db/docs/java/com/sleepycat/collections/class-use/StoredContainer.html
+++ b/db/docs/java/com/sleepycat/collections/class-use/StoredContainer.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:57:00 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.collections.StoredContainer (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.collections.StoredContainer (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.collections.StoredContainer (Oracle Corporation - Be
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.collections.StoredContainer (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.collections.StoredContainer (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -202,7 +202,7 @@ Uses of <A HREF="../../../../com/sleepycat/collections/StoredContainer.html" tit
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../com/sleepycat/collections/StoredIterator.html" title="class in com.sleepycat.collections">StoredIterator</A></CODE></FONT></TD>
<TD><CODE><B>StoredCollection.</B><B><A HREF="../../../../com/sleepycat/collections/StoredCollection.html#join(com.sleepycat.collections.StoredContainer[], java.lang.Object[], com.sleepycat.db.JoinConfig)">join</A></B>(<A HREF="../../../../com/sleepycat/collections/StoredContainer.html" title="class in com.sleepycat.collections">StoredContainer</A>[]&nbsp;indices,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>[]&nbsp;indexKeys,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>[]&nbsp;indexKeys,
<A HREF="../../../../com/sleepycat/db/JoinConfig.html" title="class in com.sleepycat.db">JoinConfig</A>&nbsp;joinConfig)</CODE>
<BR>
@@ -236,7 +236,7 @@ Uses of <A HREF="../../../../com/sleepycat/collections/StoredContainer.html" tit
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -266,6 +266,6 @@ Uses of <A HREF="../../../../com/sleepycat/collections/StoredContainer.html" tit
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/collections/class-use/StoredEntrySet.html b/db/docs/java/com/sleepycat/collections/class-use/StoredEntrySet.html
index c8e231ac7..9521f6ce6 100644
--- a/db/docs/java/com/sleepycat/collections/class-use/StoredEntrySet.html
+++ b/db/docs/java/com/sleepycat/collections/class-use/StoredEntrySet.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:57:00 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.collections.StoredEntrySet (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.collections.StoredEntrySet (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.collections.StoredEntrySet (Oracle Corporation - Ber
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.collections.StoredEntrySet (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.collections.StoredEntrySet (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -141,7 +141,7 @@ Uses of <A HREF="../../../../com/sleepycat/collections/StoredEntrySet.html" titl
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -171,6 +171,6 @@ Uses of <A HREF="../../../../com/sleepycat/collections/StoredEntrySet.html" titl
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/collections/class-use/StoredIterator.html b/db/docs/java/com/sleepycat/collections/class-use/StoredIterator.html
index 4928eb738..68bca86f1 100644
--- a/db/docs/java/com/sleepycat/collections/class-use/StoredIterator.html
+++ b/db/docs/java/com/sleepycat/collections/class-use/StoredIterator.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:57:00 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.collections.StoredIterator (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.collections.StoredIterator (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.collections.StoredIterator (Oracle Corporation - Ber
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.collections.StoredIterator (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.collections.StoredIterator (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -120,7 +120,7 @@ Uses of <A HREF="../../../../com/sleepycat/collections/StoredIterator.html" titl
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../com/sleepycat/collections/StoredIterator.html" title="class in com.sleepycat.collections">StoredIterator</A></CODE></FONT></TD>
<TD><CODE><B>StoredCollection.</B><B><A HREF="../../../../com/sleepycat/collections/StoredCollection.html#join(com.sleepycat.collections.StoredContainer[], java.lang.Object[], com.sleepycat.db.JoinConfig)">join</A></B>(<A HREF="../../../../com/sleepycat/collections/StoredContainer.html" title="class in com.sleepycat.collections">StoredContainer</A>[]&nbsp;indices,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>[]&nbsp;indexKeys,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>[]&nbsp;indexKeys,
<A HREF="../../../../com/sleepycat/db/JoinConfig.html" title="class in com.sleepycat.db">JoinConfig</A>&nbsp;joinConfig)</CODE>
<BR>
@@ -171,7 +171,7 @@ Uses of <A HREF="../../../../com/sleepycat/collections/StoredIterator.html" titl
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -201,6 +201,6 @@ Uses of <A HREF="../../../../com/sleepycat/collections/StoredIterator.html" titl
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/collections/class-use/StoredKeySet.html b/db/docs/java/com/sleepycat/collections/class-use/StoredKeySet.html
index 778b2f8dc..fc99ae5fd 100644
--- a/db/docs/java/com/sleepycat/collections/class-use/StoredKeySet.html
+++ b/db/docs/java/com/sleepycat/collections/class-use/StoredKeySet.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:57:00 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.collections.StoredKeySet (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.collections.StoredKeySet (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.collections.StoredKeySet (Oracle Corporation - Berke
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.collections.StoredKeySet (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.collections.StoredKeySet (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -142,7 +142,7 @@ Uses of <A HREF="../../../../com/sleepycat/collections/StoredKeySet.html" title=
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -172,6 +172,6 @@ Uses of <A HREF="../../../../com/sleepycat/collections/StoredKeySet.html" title=
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/collections/class-use/StoredList.html b/db/docs/java/com/sleepycat/collections/class-use/StoredList.html
index 1370fbd7f..850269b24 100644
--- a/db/docs/java/com/sleepycat/collections/class-use/StoredList.html
+++ b/db/docs/java/com/sleepycat/collections/class-use/StoredList.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:57:00 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.collections.StoredList (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.collections.StoredList (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.collections.StoredList (Oracle Corporation - Berkele
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.collections.StoredList (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.collections.StoredList (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -105,7 +105,7 @@ No usage of com.sleepycat.collections.StoredList
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -135,6 +135,6 @@ No usage of com.sleepycat.collections.StoredList
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/collections/class-use/StoredMap.html b/db/docs/java/com/sleepycat/collections/class-use/StoredMap.html
index 975055b82..cc01d9157 100644
--- a/db/docs/java/com/sleepycat/collections/class-use/StoredMap.html
+++ b/db/docs/java/com/sleepycat/collections/class-use/StoredMap.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:57:00 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.collections.StoredMap (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.collections.StoredMap (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.collections.StoredMap (Oracle Corporation - Berkeley
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.collections.StoredMap (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.collections.StoredMap (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -126,8 +126,8 @@ Uses of <A HREF="../../../../com/sleepycat/collections/StoredMap.html" title="cl
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../com/sleepycat/collections/StoredMap.html" title="class in com.sleepycat.collections">StoredMap</A></CODE></FONT></TD>
<TD><CODE><B>TupleSerialFactory.</B><B><A HREF="../../../../com/sleepycat/collections/TupleSerialFactory.html#newMap(com.sleepycat.db.Database, java.lang.Class, java.lang.Class, boolean)">newMap</A></B>(<A HREF="../../../../com/sleepycat/db/Database.html" title="class in com.sleepycat.db">Database</A>&nbsp;db,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;keyClass,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;valueBaseClass,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;keyClass,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;valueBaseClass,
boolean&nbsp;writeAllowed)</CODE>
<BR>
@@ -160,7 +160,7 @@ Uses of <A HREF="../../../../com/sleepycat/collections/StoredMap.html" title="cl
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -190,6 +190,6 @@ Uses of <A HREF="../../../../com/sleepycat/collections/StoredMap.html" title="cl
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/collections/class-use/StoredSortedEntrySet.html b/db/docs/java/com/sleepycat/collections/class-use/StoredSortedEntrySet.html
index 3670ff23f..b0c3511fe 100644
--- a/db/docs/java/com/sleepycat/collections/class-use/StoredSortedEntrySet.html
+++ b/db/docs/java/com/sleepycat/collections/class-use/StoredSortedEntrySet.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:57:00 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.collections.StoredSortedEntrySet (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.collections.StoredSortedEntrySet (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.collections.StoredSortedEntrySet (Oracle Corporation
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.collections.StoredSortedEntrySet (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.collections.StoredSortedEntrySet (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -105,7 +105,7 @@ No usage of com.sleepycat.collections.StoredSortedEntrySet
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -135,6 +135,6 @@ No usage of com.sleepycat.collections.StoredSortedEntrySet
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/collections/class-use/StoredSortedKeySet.html b/db/docs/java/com/sleepycat/collections/class-use/StoredSortedKeySet.html
index 1c61eea11..fe4221984 100644
--- a/db/docs/java/com/sleepycat/collections/class-use/StoredSortedKeySet.html
+++ b/db/docs/java/com/sleepycat/collections/class-use/StoredSortedKeySet.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:57:00 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.collections.StoredSortedKeySet (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.collections.StoredSortedKeySet (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.collections.StoredSortedKeySet (Oracle Corporation -
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.collections.StoredSortedKeySet (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.collections.StoredSortedKeySet (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -105,7 +105,7 @@ No usage of com.sleepycat.collections.StoredSortedKeySet
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -135,6 +135,6 @@ No usage of com.sleepycat.collections.StoredSortedKeySet
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/collections/class-use/StoredSortedMap.html b/db/docs/java/com/sleepycat/collections/class-use/StoredSortedMap.html
index 01189e5eb..0df957611 100644
--- a/db/docs/java/com/sleepycat/collections/class-use/StoredSortedMap.html
+++ b/db/docs/java/com/sleepycat/collections/class-use/StoredSortedMap.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:57:00 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.collections.StoredSortedMap (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.collections.StoredSortedMap (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.collections.StoredSortedMap (Oracle Corporation - Be
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.collections.StoredSortedMap (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.collections.StoredSortedMap (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -110,8 +110,8 @@ Uses of <A HREF="../../../../com/sleepycat/collections/StoredSortedMap.html" tit
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../com/sleepycat/collections/StoredSortedMap.html" title="class in com.sleepycat.collections">StoredSortedMap</A></CODE></FONT></TD>
<TD><CODE><B>TupleSerialFactory.</B><B><A HREF="../../../../com/sleepycat/collections/TupleSerialFactory.html#newSortedMap(com.sleepycat.db.Database, java.lang.Class, java.lang.Class, boolean)">newSortedMap</A></B>(<A HREF="../../../../com/sleepycat/db/Database.html" title="class in com.sleepycat.db">Database</A>&nbsp;db,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;keyClass,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;valueBaseClass,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;keyClass,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;valueBaseClass,
boolean&nbsp;writeAllowed)</CODE>
<BR>
@@ -144,7 +144,7 @@ Uses of <A HREF="../../../../com/sleepycat/collections/StoredSortedMap.html" tit
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -174,6 +174,6 @@ Uses of <A HREF="../../../../com/sleepycat/collections/StoredSortedMap.html" tit
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/collections/class-use/StoredSortedValueSet.html b/db/docs/java/com/sleepycat/collections/class-use/StoredSortedValueSet.html
index cb7eee335..ff3310971 100644
--- a/db/docs/java/com/sleepycat/collections/class-use/StoredSortedValueSet.html
+++ b/db/docs/java/com/sleepycat/collections/class-use/StoredSortedValueSet.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:57:00 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.collections.StoredSortedValueSet (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.collections.StoredSortedValueSet (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.collections.StoredSortedValueSet (Oracle Corporation
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.collections.StoredSortedValueSet (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.collections.StoredSortedValueSet (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -105,7 +105,7 @@ No usage of com.sleepycat.collections.StoredSortedValueSet
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -135,6 +135,6 @@ No usage of com.sleepycat.collections.StoredSortedValueSet
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/collections/class-use/StoredValueSet.html b/db/docs/java/com/sleepycat/collections/class-use/StoredValueSet.html
index 5f0cbeb45..08afcd1bf 100644
--- a/db/docs/java/com/sleepycat/collections/class-use/StoredValueSet.html
+++ b/db/docs/java/com/sleepycat/collections/class-use/StoredValueSet.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:57:00 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.collections.StoredValueSet (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.collections.StoredValueSet (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.collections.StoredValueSet (Oracle Corporation - Ber
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.collections.StoredValueSet (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.collections.StoredValueSet (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -142,7 +142,7 @@ Uses of <A HREF="../../../../com/sleepycat/collections/StoredValueSet.html" titl
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -172,6 +172,6 @@ Uses of <A HREF="../../../../com/sleepycat/collections/StoredValueSet.html" titl
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/collections/class-use/TransactionRunner.html b/db/docs/java/com/sleepycat/collections/class-use/TransactionRunner.html
index 7aa64f61c..7963d249f 100644
--- a/db/docs/java/com/sleepycat/collections/class-use/TransactionRunner.html
+++ b/db/docs/java/com/sleepycat/collections/class-use/TransactionRunner.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:57:00 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.collections.TransactionRunner (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.collections.TransactionRunner (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.collections.TransactionRunner (Oracle Corporation -
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.collections.TransactionRunner (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.collections.TransactionRunner (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -105,7 +105,7 @@ No usage of com.sleepycat.collections.TransactionRunner
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -135,6 +135,6 @@ No usage of com.sleepycat.collections.TransactionRunner
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/collections/class-use/TransactionWorker.html b/db/docs/java/com/sleepycat/collections/class-use/TransactionWorker.html
index 70b71c27a..6036463f6 100644
--- a/db/docs/java/com/sleepycat/collections/class-use/TransactionWorker.html
+++ b/db/docs/java/com/sleepycat/collections/class-use/TransactionWorker.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:57:00 EDT 2007 -->
<TITLE>
-Uses of Interface com.sleepycat.collections.TransactionWorker (Oracle Corporation - Berkeley DB Java API)
+Uses of Interface com.sleepycat.collections.TransactionWorker (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Interface com.sleepycat.collections.TransactionWorker (Oracle Corporatio
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Interface com.sleepycat.collections.TransactionWorker (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Interface com.sleepycat.collections.TransactionWorker (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -142,7 +142,7 @@ Uses of <A HREF="../../../../com/sleepycat/collections/TransactionWorker.html" t
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -172,6 +172,6 @@ Uses of <A HREF="../../../../com/sleepycat/collections/TransactionWorker.html" t
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/collections/class-use/TupleSerialFactory.html b/db/docs/java/com/sleepycat/collections/class-use/TupleSerialFactory.html
index c77ff6fba..dd9787df9 100644
--- a/db/docs/java/com/sleepycat/collections/class-use/TupleSerialFactory.html
+++ b/db/docs/java/com/sleepycat/collections/class-use/TupleSerialFactory.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:57:00 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.collections.TupleSerialFactory (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.collections.TupleSerialFactory (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.collections.TupleSerialFactory (Oracle Corporation -
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.collections.TupleSerialFactory (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.collections.TupleSerialFactory (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -105,7 +105,7 @@ No usage of com.sleepycat.collections.TupleSerialFactory
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -135,6 +135,6 @@ No usage of com.sleepycat.collections.TupleSerialFactory
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/collections/package-frame.html b/db/docs/java/com/sleepycat/collections/package-frame.html
index b8081439a..965b3afd4 100644
--- a/db/docs/java/com/sleepycat/collections/package-frame.html
+++ b/db/docs/java/com/sleepycat/collections/package-frame.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:48 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-com.sleepycat.collections (Oracle Corporation - Berkeley DB Java API)
+com.sleepycat.collections (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.collections package">
diff --git a/db/docs/java/com/sleepycat/collections/package-summary.html b/db/docs/java/com/sleepycat/collections/package-summary.html
index 7bfb9266f..ec7025b9e 100644
--- a/db/docs/java/com/sleepycat/collections/package-summary.html
+++ b/db/docs/java/com/sleepycat/collections/package-summary.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:48 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-com.sleepycat.collections (Oracle Corporation - Berkeley DB Java API)
+com.sleepycat.collections (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.collections package">
@@ -14,7 +14,7 @@ com.sleepycat.collections (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="com.sleepycat.collections (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="com.sleepycat.collections (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -226,7 +226,7 @@ in the installation notes.
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -256,6 +256,6 @@ in the installation notes.
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/collections/package-tree.html b/db/docs/java/com/sleepycat/collections/package-tree.html
index ce11b7b11..1ddef0131 100644
--- a/db/docs/java/com/sleepycat/collections/package-tree.html
+++ b/db/docs/java/com/sleepycat/collections/package-tree.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:48 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-com.sleepycat.collections Class Hierarchy (Oracle Corporation - Berkeley DB Java API)
+com.sleepycat.collections Class Hierarchy (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ com.sleepycat.collections Class Hierarchy (Oracle Corporation - Berkeley DB Java
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="com.sleepycat.collections Class Hierarchy (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="com.sleepycat.collections Class Hierarchy (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -87,32 +87,32 @@ Hierarchy For Package com.sleepycat.collections
Class Hierarchy
</H2>
<UL>
-<LI TYPE="circle">java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang"><B>Object</B></A><UL>
-<LI TYPE="circle">com.sleepycat.collections.<A HREF="../../../com/sleepycat/collections/CurrentTransaction.html" title="class in com.sleepycat.collections"><B>CurrentTransaction</B></A><LI TYPE="circle">com.sleepycat.collections.<A HREF="../../../com/sleepycat/collections/MapEntryParameter.html" title="class in com.sleepycat.collections"><B>MapEntryParameter</B></A> (implements java.util.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.Entry.html" title="class or interface in java.util">Map.Entry</A>)
-<LI TYPE="circle">com.sleepycat.collections.<A HREF="../../../com/sleepycat/collections/StoredCollections.html" title="class in com.sleepycat.collections"><B>StoredCollections</B></A><LI TYPE="circle">com.sleepycat.collections.<A HREF="../../../com/sleepycat/collections/StoredContainer.html" title="class in com.sleepycat.collections"><B>StoredContainer</B></A> (implements java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>)
+<LI TYPE="circle">java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang"><B>Object</B></A><UL>
+<LI TYPE="circle">com.sleepycat.collections.<A HREF="../../../com/sleepycat/collections/CurrentTransaction.html" title="class in com.sleepycat.collections"><B>CurrentTransaction</B></A><LI TYPE="circle">com.sleepycat.collections.<A HREF="../../../com/sleepycat/collections/MapEntryParameter.html" title="class in com.sleepycat.collections"><B>MapEntryParameter</B></A> (implements java.util.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.Entry.html" title="class or interface in java.util">Map.Entry</A>)
+<LI TYPE="circle">com.sleepycat.collections.<A HREF="../../../com/sleepycat/collections/StoredCollections.html" title="class in com.sleepycat.collections"><B>StoredCollections</B></A><LI TYPE="circle">com.sleepycat.collections.<A HREF="../../../com/sleepycat/collections/StoredContainer.html" title="class in com.sleepycat.collections"><B>StoredContainer</B></A> (implements java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>)
<UL>
-<LI TYPE="circle">com.sleepycat.collections.<A HREF="../../../com/sleepycat/collections/StoredCollection.html" title="class in com.sleepycat.collections"><B>StoredCollection</B></A> (implements java.util.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>)
+<LI TYPE="circle">com.sleepycat.collections.<A HREF="../../../com/sleepycat/collections/StoredCollection.html" title="class in com.sleepycat.collections"><B>StoredCollection</B></A> (implements java.util.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>)
<UL>
-<LI TYPE="circle">com.sleepycat.collections.<A HREF="../../../com/sleepycat/collections/StoredEntrySet.html" title="class in com.sleepycat.collections"><B>StoredEntrySet</B></A> (implements java.util.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A>)
+<LI TYPE="circle">com.sleepycat.collections.<A HREF="../../../com/sleepycat/collections/StoredEntrySet.html" title="class in com.sleepycat.collections"><B>StoredEntrySet</B></A> (implements java.util.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A>)
<UL>
-<LI TYPE="circle">com.sleepycat.collections.<A HREF="../../../com/sleepycat/collections/StoredSortedEntrySet.html" title="class in com.sleepycat.collections"><B>StoredSortedEntrySet</B></A> (implements java.util.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A>)
+<LI TYPE="circle">com.sleepycat.collections.<A HREF="../../../com/sleepycat/collections/StoredSortedEntrySet.html" title="class in com.sleepycat.collections"><B>StoredSortedEntrySet</B></A> (implements java.util.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A>)
</UL>
-<LI TYPE="circle">com.sleepycat.collections.<A HREF="../../../com/sleepycat/collections/StoredKeySet.html" title="class in com.sleepycat.collections"><B>StoredKeySet</B></A> (implements java.util.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A>)
+<LI TYPE="circle">com.sleepycat.collections.<A HREF="../../../com/sleepycat/collections/StoredKeySet.html" title="class in com.sleepycat.collections"><B>StoredKeySet</B></A> (implements java.util.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A>)
<UL>
-<LI TYPE="circle">com.sleepycat.collections.<A HREF="../../../com/sleepycat/collections/StoredSortedKeySet.html" title="class in com.sleepycat.collections"><B>StoredSortedKeySet</B></A> (implements java.util.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A>)
+<LI TYPE="circle">com.sleepycat.collections.<A HREF="../../../com/sleepycat/collections/StoredSortedKeySet.html" title="class in com.sleepycat.collections"><B>StoredSortedKeySet</B></A> (implements java.util.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A>)
</UL>
-<LI TYPE="circle">com.sleepycat.collections.<A HREF="../../../com/sleepycat/collections/StoredList.html" title="class in com.sleepycat.collections"><B>StoredList</B></A> (implements java.util.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html" title="class or interface in java.util">List</A>)
-<LI TYPE="circle">com.sleepycat.collections.<A HREF="../../../com/sleepycat/collections/StoredValueSet.html" title="class in com.sleepycat.collections"><B>StoredValueSet</B></A> (implements java.util.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A>)
+<LI TYPE="circle">com.sleepycat.collections.<A HREF="../../../com/sleepycat/collections/StoredList.html" title="class in com.sleepycat.collections"><B>StoredList</B></A> (implements java.util.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" title="class or interface in java.util">List</A>)
+<LI TYPE="circle">com.sleepycat.collections.<A HREF="../../../com/sleepycat/collections/StoredValueSet.html" title="class in com.sleepycat.collections"><B>StoredValueSet</B></A> (implements java.util.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A>)
<UL>
-<LI TYPE="circle">com.sleepycat.collections.<A HREF="../../../com/sleepycat/collections/StoredSortedValueSet.html" title="class in com.sleepycat.collections"><B>StoredSortedValueSet</B></A> (implements java.util.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A>)
+<LI TYPE="circle">com.sleepycat.collections.<A HREF="../../../com/sleepycat/collections/StoredSortedValueSet.html" title="class in com.sleepycat.collections"><B>StoredSortedValueSet</B></A> (implements java.util.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A>)
</UL>
</UL>
-<LI TYPE="circle">com.sleepycat.collections.<A HREF="../../../com/sleepycat/collections/StoredMap.html" title="class in com.sleepycat.collections"><B>StoredMap</B></A> (implements java.util.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A>)
+<LI TYPE="circle">com.sleepycat.collections.<A HREF="../../../com/sleepycat/collections/StoredMap.html" title="class in com.sleepycat.collections"><B>StoredMap</B></A> (implements java.util.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A>)
<UL>
-<LI TYPE="circle">com.sleepycat.collections.<A HREF="../../../com/sleepycat/collections/StoredSortedMap.html" title="class in com.sleepycat.collections"><B>StoredSortedMap</B></A> (implements java.util.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A>)
+<LI TYPE="circle">com.sleepycat.collections.<A HREF="../../../com/sleepycat/collections/StoredSortedMap.html" title="class in com.sleepycat.collections"><B>StoredSortedMap</B></A> (implements java.util.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A>)
</UL>
</UL>
-<LI TYPE="circle">com.sleepycat.collections.<A HREF="../../../com/sleepycat/collections/StoredIterator.html" title="class in com.sleepycat.collections"><B>StoredIterator</B></A> (implements java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>)
+<LI TYPE="circle">com.sleepycat.collections.<A HREF="../../../com/sleepycat/collections/StoredIterator.html" title="class in com.sleepycat.collections"><B>StoredIterator</B></A> (implements java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>)
<LI TYPE="circle">com.sleepycat.collections.<A HREF="../../../com/sleepycat/collections/TransactionRunner.html" title="class in com.sleepycat.collections"><B>TransactionRunner</B></A><LI TYPE="circle">com.sleepycat.collections.<A HREF="../../../com/sleepycat/collections/TupleSerialFactory.html" title="class in com.sleepycat.collections"><B>TupleSerialFactory</B></A></UL>
</UL>
<H2>
@@ -144,7 +144,7 @@ Interface Hierarchy
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -174,6 +174,6 @@ Interface Hierarchy
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/collections/package-use.html b/db/docs/java/com/sleepycat/collections/package-use.html
index b5dc55e7e..800496d8c 100644
--- a/db/docs/java/com/sleepycat/collections/package-use.html
+++ b/db/docs/java/com/sleepycat/collections/package-use.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:57:00 EDT 2007 -->
<TITLE>
-Uses of Package com.sleepycat.collections (Oracle Corporation - Berkeley DB Java API)
+Uses of Package com.sleepycat.collections (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Package com.sleepycat.collections (Oracle Corporation - Berkeley DB Java
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Package com.sleepycat.collections (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Package com.sleepycat.collections (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -194,7 +194,7 @@ Classes in <A HREF="../../../com/sleepycat/collections/package-summary.html">com
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -224,6 +224,6 @@ Classes in <A HREF="../../../com/sleepycat/collections/package-summary.html">com
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/BtreePrefixCalculator.html b/db/docs/java/com/sleepycat/db/BtreePrefixCalculator.html
index db14edf5f..16e9648a1 100644
--- a/db/docs/java/com/sleepycat/db/BtreePrefixCalculator.html
+++ b/db/docs/java/com/sleepycat/db/BtreePrefixCalculator.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:44 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:56 EDT 2007 -->
<TITLE>
-BtreePrefixCalculator (Oracle Corporation - Berkeley DB Java API)
+BtreePrefixCalculator (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.BtreePrefixCalculator interface">
@@ -14,7 +14,7 @@ BtreePrefixCalculator (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="BtreePrefixCalculator (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="BtreePrefixCalculator (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -173,7 +173,7 @@ int <B>prefix</B>(<A HREF="../../../com/sleepycat/db/Database.html" title="class
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -209,6 +209,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHO
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/BtreeStats.html b/db/docs/java/com/sleepycat/db/BtreeStats.html
index 13b1e5755..04b14cd4b 100644
--- a/db/docs/java/com/sleepycat/db/BtreeStats.html
+++ b/db/docs/java/com/sleepycat/db/BtreeStats.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:44 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:56 EDT 2007 -->
<TITLE>
-BtreeStats (Oracle Corporation - Berkeley DB Java API)
+BtreeStats (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.BtreeStats class">
@@ -14,7 +14,7 @@ BtreeStats (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="BtreeStats (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="BtreeStats (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,7 +89,7 @@ com.sleepycat.db</FONT>
<BR>
Class BtreeStats</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../com/sleepycat/db/DatabaseStats.html" title="class in com.sleepycat.db">com.sleepycat.db.DatabaseStats</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.BtreeStats</B>
</PRE>
@@ -247,6 +247,14 @@ or Recno database statistics.
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/BtreeStats.html#getPageCount()">getPageCount</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The number of pages in the database.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/BtreeStats.html#getPageSize()">getPageSize</A></B>()</CODE>
<BR>
@@ -278,7 +286,7 @@ or Recno database statistics.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/BtreeStats.html#toString()">toString</A></B>()</CODE>
<BR>
@@ -289,10 +297,10 @@ or Recno database statistics.
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -311,13 +319,13 @@ or Recno database statistics.
<A NAME="toString()"><!-- --></A><H3>
toString</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
<DL>
<DD>For convenience, the BtreeStats class has a toString method
that lists all the data fields.
<P>
<DD><DL>
-<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
</DD>
<DD><DL>
</DL>
@@ -421,6 +429,21 @@ public int <B>getNumData</B>()</PRE>
</DL>
<HR>
+<A NAME="getPageCount()"><!-- --></A><H3>
+getPageCount</H3>
+<PRE>
+public int <B>getPageCount</B>()</PRE>
+<DL>
+<DD>The number of pages in the database.
+ <p>
+ Returned if <A HREF="../../../com/sleepycat/db/StatsConfig.html#setFast(boolean)"><CODE>StatsConfig.setFast(boolean)</CODE></A> was configured.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
<A NAME="getPageSize()"><!-- --></A><H3>
getPageSize</H3>
<PRE>
@@ -672,7 +695,7 @@ was not configured by the <A HREF="../../../com/sleepycat/db/StatsConfig.html#se
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -708,6 +731,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHO
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/CacheFile.html b/db/docs/java/com/sleepycat/db/CacheFile.html
index 82351dd52..fd4fbcab6 100644
--- a/db/docs/java/com/sleepycat/db/CacheFile.html
+++ b/db/docs/java/com/sleepycat/db/CacheFile.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:45 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:56 EDT 2007 -->
<TITLE>
-CacheFile (Oracle Corporation - Berkeley DB Java API)
+CacheFile (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.CacheFile class">
@@ -14,7 +14,7 @@ CacheFile (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="CacheFile (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="CacheFile (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,12 +89,12 @@ com.sleepycat.db</FONT>
<BR>
Class CacheFile</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.CacheFile</B>
</PRE>
<HR>
<DL>
-<DT><PRE>public class <B>CacheFile</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
+<DT><PRE>public class <B>CacheFile</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
</PRE>
<P>
@@ -189,10 +189,10 @@ cache priority for pages from the specified file.</TD>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -425,7 +425,7 @@ remove the file when the last reference to it is closed.
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -461,6 +461,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHO
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/CacheFilePriority.html b/db/docs/java/com/sleepycat/db/CacheFilePriority.html
index fa6548062..42c77df54 100644
--- a/db/docs/java/com/sleepycat/db/CacheFilePriority.html
+++ b/db/docs/java/com/sleepycat/db/CacheFilePriority.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:45 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:56 EDT 2007 -->
<TITLE>
-CacheFilePriority (Oracle Corporation - Berkeley DB Java API)
+CacheFilePriority (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.CacheFilePriority class">
@@ -14,7 +14,7 @@ CacheFilePriority (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="CacheFilePriority (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="CacheFilePriority (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,12 +89,12 @@ com.sleepycat.db</FONT>
<BR>
Class CacheFilePriority</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.CacheFilePriority</B>
</PRE>
<HR>
<DL>
-<DT><PRE>public final class <B>CacheFilePriority</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
+<DT><PRE>public final class <B>CacheFilePriority</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
</PRE>
<P>
@@ -165,7 +165,7 @@ Priorities that can be assigned to files in the cache.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/CacheFilePriority.html#toString()">toString</A></B>()</CODE>
<BR>
@@ -175,10 +175,10 @@ Priorities that can be assigned to files in the cache.
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -266,12 +266,12 @@ public static final <A HREF="../../../com/sleepycat/db/CacheFilePriority.html" t
<A NAME="toString()"><!-- --></A><H3>
toString</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
<DL>
<DD>
<P>
<DD><DL>
-<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
</DD>
<DD><DL>
</DL>
@@ -302,7 +302,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" tit
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -338,6 +338,6 @@ DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/CacheFileStats.html b/db/docs/java/com/sleepycat/db/CacheFileStats.html
index 3e4834620..0643e9163 100644
--- a/db/docs/java/com/sleepycat/db/CacheFileStats.html
+++ b/db/docs/java/com/sleepycat/db/CacheFileStats.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:45 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:56 EDT 2007 -->
<TITLE>
-CacheFileStats (Oracle Corporation - Berkeley DB Java API)
+CacheFileStats (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.CacheFileStats class">
@@ -14,7 +14,7 @@ CacheFileStats (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="CacheFileStats (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="CacheFileStats (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,12 +89,12 @@ com.sleepycat.db</FONT>
<BR>
Class CacheFileStats</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.CacheFileStats</B>
</PRE>
<HR>
<DL>
-<DT><PRE>public class <B>CacheFileStats</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
+<DT><PRE>public class <B>CacheFileStats</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
</PRE>
<P>
@@ -132,7 +132,7 @@ Statistics for a file in the cache.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/CacheFileStats.html#getFileName()">getFileName</A></B>()</CODE>
<BR>
@@ -180,7 +180,7 @@ Statistics for a file in the cache.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/CacheFileStats.html#toString()">toString</A></B>()</CODE>
<BR>
@@ -191,10 +191,10 @@ Statistics for a file in the cache.
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -213,7 +213,7 @@ Statistics for a file in the cache.
<A NAME="getFileName()"><!-- --></A><H3>
getFileName</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>getFileName</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>getFileName</B>()</PRE>
<DL>
<DD>The name of the file.
<P>
@@ -317,13 +317,13 @@ public int <B>getPageOut</B>()</PRE>
<A NAME="toString()"><!-- --></A><H3>
toString</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
<DL>
<DD>For convenience, the CacheFileStats class has a toString method
that lists all the data fields.
<P>
<DD><DL>
-<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
</DD>
<DD><DL>
</DL>
@@ -354,7 +354,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" tit
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -390,6 +390,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHO
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/CacheStats.html b/db/docs/java/com/sleepycat/db/CacheStats.html
index 9a984c55b..3f97b7dd0 100644
--- a/db/docs/java/com/sleepycat/db/CacheStats.html
+++ b/db/docs/java/com/sleepycat/db/CacheStats.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:45 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:56 EDT 2007 -->
<TITLE>
-CacheStats (Oracle Corporation - Berkeley DB Java API)
+CacheStats (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.CacheStats class">
@@ -14,7 +14,7 @@ CacheStats (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="CacheStats (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="CacheStats (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,12 +89,12 @@ com.sleepycat.db</FONT>
<BR>
Class CacheStats</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.CacheStats</B>
</PRE>
<HR>
<DL>
-<DT><PRE>public class <B>CacheStats</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
+<DT><PRE>public class <B>CacheStats</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
</PRE>
<P>
@@ -213,6 +213,16 @@ Cache statistics for a database environment.
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/CacheStats.html#getHashMaxNowait()">getHashMaxNowait</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The number of times a thread of control was able to obtain the
+ hash bucket lock without waiting on the bucket which had the
+ maximum number of times that a thread of control needed to wait.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/CacheStats.html#getHashMaxWait()">getHashMaxWait</A></B>()</CODE>
<BR>
@@ -266,6 +276,15 @@ Cache statistics for a database environment.
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/CacheStats.html#getMaxNumCache()">getMaxNumCache</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Maximum number of caches, as configured with
+ <A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setCacheMax(long)"><CODE>EnvironmentConfig.setCacheMax(long)</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/CacheStats.html#getMaxOpenfd()">getMaxOpenfd</A></B>()</CODE>
<BR>
@@ -429,7 +448,7 @@ Cache statistics for a database environment.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/CacheStats.html#toString()">toString</A></B>()</CODE>
<BR>
@@ -440,10 +459,10 @@ Cache statistics for a database environment.
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -498,6 +517,20 @@ public int <B>getNumCache</B>()</PRE>
</DL>
<HR>
+<A NAME="getMaxNumCache()"><!-- --></A><H3>
+getMaxNumCache</H3>
+<PRE>
+public int <B>getMaxNumCache</B>()</PRE>
+<DL>
+<DD>Maximum number of caches, as configured with
+ <A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setCacheMax(long)"><CODE>EnvironmentConfig.setCacheMax(long)</CODE></A>.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
<A NAME="getRegSize()"><!-- --></A><H3>
getRegSize</H3>
<PRE>
@@ -803,6 +836,21 @@ public int <B>getHashWait</B>()</PRE>
</DL>
<HR>
+<A NAME="getHashMaxNowait()"><!-- --></A><H3>
+getHashMaxNowait</H3>
+<PRE>
+public int <B>getHashMaxNowait</B>()</PRE>
+<DL>
+<DD>The number of times a thread of control was able to obtain the
+ hash bucket lock without waiting on the bucket which had the
+ maximum number of times that a thread of control needed to wait.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
<A NAME="getHashMaxWait()"><!-- --></A><H3>
getHashMaxWait</H3>
<PRE>
@@ -965,13 +1013,13 @@ public int <B>getIoWait</B>()</PRE>
<A NAME="toString()"><!-- --></A><H3>
toString</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
<DL>
<DD>For convenience, the CacheStats class has a toString method that
lists all the data fields.
<P>
<DD><DL>
-<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
</DD>
<DD><DL>
</DL>
@@ -1002,7 +1050,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" tit
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -1038,6 +1086,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHO
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/CheckpointConfig.html b/db/docs/java/com/sleepycat/db/CheckpointConfig.html
index 6aec7b8a3..2b78567d5 100644
--- a/db/docs/java/com/sleepycat/db/CheckpointConfig.html
+++ b/db/docs/java/com/sleepycat/db/CheckpointConfig.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:45 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:56 EDT 2007 -->
<TITLE>
-CheckpointConfig (Oracle Corporation - Berkeley DB Java API)
+CheckpointConfig (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.CheckpointConfig class">
@@ -14,7 +14,7 @@ CheckpointConfig (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="CheckpointConfig (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="CheckpointConfig (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,12 +89,12 @@ com.sleepycat.db</FONT>
<BR>
Class CheckpointConfig</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.CheckpointConfig</B>
</PRE>
<HR>
<DL>
-<DT><PRE>public class <B>CheckpointConfig</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
+<DT><PRE>public class <B>CheckpointConfig</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
</PRE>
<P>
@@ -201,10 +201,10 @@ Specifies the attributes of an application invoked checkpoint operation.
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -383,7 +383,7 @@ public boolean <B>getForce</B>()</PRE>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -419,6 +419,6 @@ DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/CompactConfig.html b/db/docs/java/com/sleepycat/db/CompactConfig.html
index 4da949244..c821a1f64 100644
--- a/db/docs/java/com/sleepycat/db/CompactConfig.html
+++ b/db/docs/java/com/sleepycat/db/CompactConfig.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:45 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:56 EDT 2007 -->
<TITLE>
-CompactConfig (Oracle Corporation - Berkeley DB Java API)
+CompactConfig (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.CompactConfig class">
@@ -14,7 +14,7 @@ CompactConfig (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="CompactConfig (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="CompactConfig (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,15 +89,15 @@ com.sleepycat.db</FONT>
<BR>
Class CompactConfig</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.CompactConfig</B>
</PRE>
<DL>
-<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A></DD>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A></DD>
</DL>
<HR>
<DL>
-<DT><PRE>public class <B>CompactConfig</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A><DT>implements <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A></DL>
+<DT><PRE>public class <B>CompactConfig</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A><DT>implements <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A></DL>
</PRE>
<P>
@@ -181,7 +181,7 @@ Configuration for <A HREF="../../../com/sleepycat/db/Database.html#compact(com.s
<TD><CODE><B><A HREF="../../../com/sleepycat/db/CompactConfig.html#getMaxPages()">getMaxPages</A></B>()</CODE>
<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;For internal use only.</TD>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the the maximum number of pages to free.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
@@ -222,7 +222,7 @@ Configuration for <A HREF="../../../com/sleepycat/db/Database.html#compact(com.s
<TD><CODE><B><A HREF="../../../com/sleepycat/db/CompactConfig.html#setMaxPages(int)">setMaxPages</A></B>(int&nbsp;maxPages)</CODE>
<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;For internal use only.</TD>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the maximum number of pages to free.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
@@ -236,10 +236,10 @@ Configuration for <A HREF="../../../com/sleepycat/db/Database.html#compact(com.s
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -383,6 +383,12 @@ public void <B>setFreeSpace</B>(boolean&nbsp;freeSpace)</PRE>
<DD>Return pages to the filesystem if possible. If this flag is not
specified, pages emptied as a result of compaction will be placed on the
free list for re-use, but not returned to the filesystem.
+ Note that only pages at the end of the file may be returned. Given the one
+ pass nature of the algorithm if a page near the end of the file is
+ logically near the begining of the btree it will inhibit returning pages to
+ the file system.
+ A second call to the method with a low fillfactor can be used to return
+ pages in such a situation.
<P>
<DD><DL>
</DL>
@@ -418,13 +424,14 @@ setMaxPages</H3>
<PRE>
public void <B>setMaxPages</B>(int&nbsp;maxPages)</PRE>
<DL>
-<DD>For internal use only.
+<DD>Set the maximum number of pages to free.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
-</DL>
+<DT><B>Parameters:</B><DD><CODE>maxPages</CODE> - If non-zero, the call will return after that number of pages have been
+ freed.</DL>
</DD>
</DL>
<HR>
@@ -434,13 +441,17 @@ getMaxPages</H3>
<PRE>
public int <B>getMaxPages</B>()</PRE>
<DL>
-<DD>For internal use only.
+<DD>Return the the maximum number of pages to free.
+<p>
+This method may be called at any time during the life of the application.
+<p>
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
-</DL>
+
+<DT><B>Returns:</B><DD>The the maximum number of pages to free.</DL>
</DD>
</DL>
<HR>
@@ -507,7 +518,7 @@ This method may be called at any time during the life of the application.
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -543,6 +554,6 @@ DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/CompactStats.html b/db/docs/java/com/sleepycat/db/CompactStats.html
index 09605984a..22af66a9f 100644
--- a/db/docs/java/com/sleepycat/db/CompactStats.html
+++ b/db/docs/java/com/sleepycat/db/CompactStats.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:45 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:56 EDT 2007 -->
<TITLE>
-CompactStats (Oracle Corporation - Berkeley DB Java API)
+CompactStats (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.CompactStats class">
@@ -14,7 +14,7 @@ CompactStats (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="CompactStats (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="CompactStats (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,12 +89,12 @@ com.sleepycat.db</FONT>
<BR>
Class CompactStats</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.CompactStats</B>
</PRE>
<HR>
<DL>
-<DT><PRE>public class <B>CompactStats</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
+<DT><PRE>public class <B>CompactStats</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
</PRE>
<P>
@@ -162,7 +162,7 @@ Statistics returned by a <A HREF="../../../com/sleepycat/db/Database.html#compac
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/CompactStats.html#toString()">toString</A></B>()</CODE>
<BR>
@@ -173,10 +173,10 @@ Statistics returned by a <A HREF="../../../com/sleepycat/db/Database.html#compac
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -292,13 +292,13 @@ This method may be called at any time during the life of the application.
<A NAME="toString()"><!-- --></A><H3>
toString</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
<DL>
<DD>For convenience, the CompactStats class has a toString method that lists
all the data fields.
<P>
<DD><DL>
-<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
</DD>
<DD><DL>
</DL>
@@ -329,7 +329,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" tit
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -365,6 +365,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHO
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/Cursor.html b/db/docs/java/com/sleepycat/db/Cursor.html
index d266e9d46..32e5319af 100644
--- a/db/docs/java/com/sleepycat/db/Cursor.html
+++ b/db/docs/java/com/sleepycat/db/Cursor.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:45 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:56 EDT 2007 -->
<TITLE>
-Cursor (Oracle Corporation - Berkeley DB Java API)
+Cursor (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.Cursor class">
@@ -14,7 +14,7 @@ Cursor (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Cursor (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Cursor (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,7 +89,7 @@ com.sleepycat.db</FONT>
<BR>
Class Cursor</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.Cursor</B>
</PRE>
<DL>
@@ -97,7 +97,7 @@ Class Cursor</H2>
</DL>
<HR>
<DL>
-<DT><PRE>public class <B>Cursor</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
+<DT><PRE>public class <B>Cursor</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
</PRE>
<P>
@@ -298,6 +298,14 @@ that pair.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../com/sleepycat/db/CacheFilePriority.html" title="class in com.sleepycat.db">CacheFilePriority</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/Cursor.html#getPriority()">getPriority</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the cache priority for pages referenced by the cursor.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../com/sleepycat/db/OperationStatus.html" title="class in com.sleepycat.db">OperationStatus</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/Cursor.html#getRecordNumber(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.LockMode)">getRecordNumber</A></B>(<A HREF="../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;data,
<A HREF="../../../com/sleepycat/db/LockMode.html" title="class in com.sleepycat.db">LockMode</A>&nbsp;lockMode)</CODE>
@@ -431,14 +439,22 @@ return the associated key/data pair.</TD>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Store a key/data pair into the database.</TD>
</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/Cursor.html#setPriority(com.sleepycat.db.CacheFilePriority)">setPriority</A></B>(<A HREF="../../../com/sleepycat/db/CacheFilePriority.html" title="class in com.sleepycat.db">CacheFilePriority</A>&nbsp;priority)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the cache priority for pages referenced by the DBC handle.</TD>
+</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -630,7 +646,7 @@ the existing key/data pair will be replaced.
<DD><CODE><A HREF="../../../com/sleepycat/db/DeadlockException.html" title="class in com.sleepycat.db">DeadlockException</A></CODE> - if the operation was selected to resolve a
deadlock.
<p>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.</DL>
</DD>
@@ -663,7 +679,7 @@ If the key already appears in the database, putNoOverwrite will return
<DD><CODE><A HREF="../../../com/sleepycat/db/DeadlockException.html" title="class in com.sleepycat.db">DeadlockException</A></CODE> - if the operation was selected to resolve a
deadlock.
<p>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.</DL>
</DD>
@@ -703,7 +719,7 @@ This method may not be called for the Queue or Recno access methods.
<DD><CODE><A HREF="../../../com/sleepycat/db/DeadlockException.html" title="class in com.sleepycat.db">DeadlockException</A></CODE> - if the operation was selected to resolve a
deadlock.
<p>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.</DL>
</DD>
@@ -736,7 +752,7 @@ if the cursor currently refers to an already-deleted key/data pair.
<DD><CODE><A HREF="../../../com/sleepycat/db/DeadlockException.html" title="class in com.sleepycat.db">DeadlockException</A></CODE> - if the operation was selected to resolve a
deadlock.
<p>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.</DL>
</DD>
@@ -786,7 +802,7 @@ The putAfter method may not be called for the Queue access method.
<DD><CODE><A HREF="../../../com/sleepycat/db/DeadlockException.html" title="class in com.sleepycat.db">DeadlockException</A></CODE> - if the operation was selected to resolve a
deadlock.
<p>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.</DL>
</DD>
@@ -836,7 +852,7 @@ The putBefore method may not be called for the Queue access method.
<DD><CODE><A HREF="../../../com/sleepycat/db/DeadlockException.html" title="class in com.sleepycat.db">DeadlockException</A></CODE> - if the operation was selected to resolve a
deadlock.
<p>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.</DL>
</DD>
@@ -879,7 +895,7 @@ The putKeyFirst method may not be called for the Queue or Recno access methods.
<DD><CODE><A HREF="../../../com/sleepycat/db/DeadlockException.html" title="class in com.sleepycat.db">DeadlockException</A></CODE> - if the operation was selected to resolve a
deadlock.
<p>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.</DL>
</DD>
@@ -922,7 +938,7 @@ The putKeyLast method may not be called for the Queue or Recno access methods.
<DD><CODE><A HREF="../../../com/sleepycat/db/DeadlockException.html" title="class in com.sleepycat.db">DeadlockException</A></CODE> - if the operation was selected to resolve a
deadlock.
<p>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.</DL>
</DD>
@@ -952,13 +968,13 @@ need to be initialized by the caller.<DD><CODE>lockMode</CODE> - the locking att
<DT><B>Returns:</B><DD><A HREF="../../../com/sleepycat/db/OperationStatus.html#KEYEMPTY"><CODE>OperationStatus.KEYEMPTY</CODE></A> if the key/pair at the cursor
position has been deleted; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
does not contain a required non-null byte array.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DeadlockException.html" title="class in com.sleepycat.db">DeadlockException</A></CODE> - if the operation was selected to resolve a
deadlock.
<p>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.
<p></DL>
@@ -989,15 +1005,15 @@ returned as output. Multiple results can be retrieved by passing an object
that is a subclass of <A HREF="../../../com/sleepycat/db/MultipleEntry.html" title="class in com.sleepycat.db"><CODE>MultipleEntry</CODE></A>, otherwise its byte array does not
need to be initialized by the caller.<DD><CODE>lockMode</CODE> - the locking attributes; if null, default attributes are used.
<DT><B>Returns:</B><DD><A HREF="../../../com/sleepycat/db/OperationStatus.html#NOTFOUND"><CODE>OperationStatus.NOTFOUND</CODE></A> if no matching key/data pair is
-found; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
+found; <A HREF="../../../com/sleepycat/db/OperationStatus.html#KEYEMPTY"><CODE>OperationStatus.KEYEMPTY</CODE></A> if the database is a Queue or Recno database and the specified key exists, but was never explicitly created by the application or was later deleted; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
does not contain a required non-null byte array.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DeadlockException.html" title="class in com.sleepycat.db">DeadlockException</A></CODE> - if the operation was selected to resolve a
deadlock.
<p>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.
<p></DL>
@@ -1027,15 +1043,15 @@ caller.<DD><CODE>data</CODE> - the data
returned as output. Its byte array does not need to be initialized by the
caller.<DD><CODE>lockMode</CODE> - the locking attributes; if null, default attributes are used.
<DT><B>Returns:</B><DD><A HREF="../../../com/sleepycat/db/OperationStatus.html#NOTFOUND"><CODE>OperationStatus.NOTFOUND</CODE></A> if no matching key/data pair is
-found; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
+found; <A HREF="../../../com/sleepycat/db/OperationStatus.html#KEYEMPTY"><CODE>OperationStatus.KEYEMPTY</CODE></A> if the database is a Queue or Recno database and the specified key exists, but was never explicitly created by the application or was later deleted; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
does not contain a required non-null byte array.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DeadlockException.html" title="class in com.sleepycat.db">DeadlockException</A></CODE> - if the operation was selected to resolve a
deadlock.
<p>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.
<p></DL>
@@ -1072,15 +1088,15 @@ returned as output. Multiple results can be retrieved by passing an object
that is a subclass of <A HREF="../../../com/sleepycat/db/MultipleEntry.html" title="class in com.sleepycat.db"><CODE>MultipleEntry</CODE></A>, otherwise its byte array does not
need to be initialized by the caller.<DD><CODE>lockMode</CODE> - the locking attributes; if null, default attributes are used.
<DT><B>Returns:</B><DD><A HREF="../../../com/sleepycat/db/OperationStatus.html#NOTFOUND"><CODE>OperationStatus.NOTFOUND</CODE></A> if no matching key/data pair is
-found; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
+found; <A HREF="../../../com/sleepycat/db/OperationStatus.html#KEYEMPTY"><CODE>OperationStatus.KEYEMPTY</CODE></A> if the database is a Queue or Recno database and the specified key exists, but was never explicitly created by the application or was later deleted; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
does not contain a required non-null byte array.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DeadlockException.html" title="class in com.sleepycat.db">DeadlockException</A></CODE> - if the operation was selected to resolve a
deadlock.
<p>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.
<p></DL>
@@ -1111,15 +1127,15 @@ returned as output. Multiple results can be retrieved by passing an object
that is a subclass of <A HREF="../../../com/sleepycat/db/MultipleEntry.html" title="class in com.sleepycat.db"><CODE>MultipleEntry</CODE></A>, otherwise its byte array does not
need to be initialized by the caller.<DD><CODE>lockMode</CODE> - the locking attributes; if null, default attributes are used.
<DT><B>Returns:</B><DD><A HREF="../../../com/sleepycat/db/OperationStatus.html#NOTFOUND"><CODE>OperationStatus.NOTFOUND</CODE></A> if no matching key/data pair is
-found; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
+found; <A HREF="../../../com/sleepycat/db/OperationStatus.html#KEYEMPTY"><CODE>OperationStatus.KEYEMPTY</CODE></A> if the database is a Queue or Recno database and the specified key exists, but was never explicitly created by the application or was later deleted; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
does not contain a required non-null byte array.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DeadlockException.html" title="class in com.sleepycat.db">DeadlockException</A></CODE> - if the operation was selected to resolve a
deadlock.
<p>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.
<p></DL>
@@ -1155,15 +1171,15 @@ returned as output. Multiple results can be retrieved by passing an object
that is a subclass of <A HREF="../../../com/sleepycat/db/MultipleEntry.html" title="class in com.sleepycat.db"><CODE>MultipleEntry</CODE></A>, otherwise its byte array does not
need to be initialized by the caller.<DD><CODE>lockMode</CODE> - the locking attributes; if null, default attributes are used.
<DT><B>Returns:</B><DD><A HREF="../../../com/sleepycat/db/OperationStatus.html#NOTFOUND"><CODE>OperationStatus.NOTFOUND</CODE></A> if no matching key/data pair is
-found; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
+found; <A HREF="../../../com/sleepycat/db/OperationStatus.html#KEYEMPTY"><CODE>OperationStatus.KEYEMPTY</CODE></A> if the database is a Queue or Recno database and the specified key exists, but was never explicitly created by the application or was later deleted; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
does not contain a required non-null byte array.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DeadlockException.html" title="class in com.sleepycat.db">DeadlockException</A></CODE> - if the operation was selected to resolve a
deadlock.
<p>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.
<p></DL>
@@ -1199,15 +1215,15 @@ caller.<DD><CODE>data</CODE> - the data
returned as output. Its byte array does not need to be initialized by the
caller.<DD><CODE>lockMode</CODE> - the locking attributes; if null, default attributes are used.
<DT><B>Returns:</B><DD><A HREF="../../../com/sleepycat/db/OperationStatus.html#NOTFOUND"><CODE>OperationStatus.NOTFOUND</CODE></A> if no matching key/data pair is
-found; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
+found; <A HREF="../../../com/sleepycat/db/OperationStatus.html#KEYEMPTY"><CODE>OperationStatus.KEYEMPTY</CODE></A> if the database is a Queue or Recno database and the specified key exists, but was never explicitly created by the application or was later deleted; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
does not contain a required non-null byte array.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DeadlockException.html" title="class in com.sleepycat.db">DeadlockException</A></CODE> - if the operation was selected to resolve a
deadlock.
<p>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.
<p></DL>
@@ -1237,15 +1253,15 @@ caller.<DD><CODE>data</CODE> - the data
returned as output. Its byte array does not need to be initialized by the
caller.<DD><CODE>lockMode</CODE> - the locking attributes; if null, default attributes are used.
<DT><B>Returns:</B><DD><A HREF="../../../com/sleepycat/db/OperationStatus.html#NOTFOUND"><CODE>OperationStatus.NOTFOUND</CODE></A> if no matching key/data pair is
-found; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
+found; <A HREF="../../../com/sleepycat/db/OperationStatus.html#KEYEMPTY"><CODE>OperationStatus.KEYEMPTY</CODE></A> if the database is a Queue or Recno database and the specified key exists, but was never explicitly created by the application or was later deleted; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
does not contain a required non-null byte array.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DeadlockException.html" title="class in com.sleepycat.db">DeadlockException</A></CODE> - if the operation was selected to resolve a
deadlock.
<p>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.
<p></DL>
@@ -1280,15 +1296,15 @@ caller.<DD><CODE>data</CODE> - the data
returned as output. Its byte array does not need to be initialized by the
caller.<DD><CODE>lockMode</CODE> - the locking attributes; if null, default attributes are used.
<DT><B>Returns:</B><DD><A HREF="../../../com/sleepycat/db/OperationStatus.html#NOTFOUND"><CODE>OperationStatus.NOTFOUND</CODE></A> if no matching key/data pair is
-found; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
+found; <A HREF="../../../com/sleepycat/db/OperationStatus.html#KEYEMPTY"><CODE>OperationStatus.KEYEMPTY</CODE></A> if the database is a Queue or Recno database and the specified key exists, but was never explicitly created by the application or was later deleted; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
does not contain a required non-null byte array.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DeadlockException.html" title="class in com.sleepycat.db">DeadlockException</A></CODE> - if the operation was selected to resolve a
deadlock.
<p>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.
<p></DL>
@@ -1319,15 +1335,15 @@ returned as output. Multiple results can be retrieved by passing an object
that is a subclass of <A HREF="../../../com/sleepycat/db/MultipleEntry.html" title="class in com.sleepycat.db"><CODE>MultipleEntry</CODE></A>, otherwise its byte array does not
need to be initialized by the caller.<DD><CODE>lockMode</CODE> - the locking attributes; if null, default attributes are used.
<DT><B>Returns:</B><DD><A HREF="../../../com/sleepycat/db/OperationStatus.html#NOTFOUND"><CODE>OperationStatus.NOTFOUND</CODE></A> if no matching key/data pair is
-found; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
+found; <A HREF="../../../com/sleepycat/db/OperationStatus.html#KEYEMPTY"><CODE>OperationStatus.KEYEMPTY</CODE></A> if the database is a Queue or Recno database and the specified key exists, but was never explicitly created by the application or was later deleted; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
does not contain a required non-null byte array.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DeadlockException.html" title="class in com.sleepycat.db">DeadlockException</A></CODE> - if the operation was selected to resolve a
deadlock.
<p>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.
<p></DL>
@@ -1362,15 +1378,15 @@ returned as output. Multiple results can be retrieved by passing an object
that is a subclass of <A HREF="../../../com/sleepycat/db/MultipleEntry.html" title="class in com.sleepycat.db"><CODE>MultipleEntry</CODE></A>, otherwise its byte array does not
need to be initialized by the caller.<DD><CODE>lockMode</CODE> - the locking attributes; if null, default attributes are used.
<DT><B>Returns:</B><DD><A HREF="../../../com/sleepycat/db/OperationStatus.html#NOTFOUND"><CODE>OperationStatus.NOTFOUND</CODE></A> if no matching key/data pair is
-found; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
+found; <A HREF="../../../com/sleepycat/db/OperationStatus.html#KEYEMPTY"><CODE>OperationStatus.KEYEMPTY</CODE></A> if the database is a Queue or Recno database and the specified key exists, but was never explicitly created by the application or was later deleted; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
does not contain a required non-null byte array.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DeadlockException.html" title="class in com.sleepycat.db">DeadlockException</A></CODE> - if the operation was selected to resolve a
deadlock.
<p>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.
<p></DL>
@@ -1399,15 +1415,15 @@ caller.<DD><CODE>data</CODE> - the data
used as input. It must be initialized with a non-null byte array by the
caller.<DD><CODE>lockMode</CODE> - the locking attributes; if null, default attributes are used.
<DT><B>Returns:</B><DD><A HREF="../../../com/sleepycat/db/OperationStatus.html#NOTFOUND"><CODE>OperationStatus.NOTFOUND</CODE></A> if no matching key/data pair is
-found; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
+found; <A HREF="../../../com/sleepycat/db/OperationStatus.html#KEYEMPTY"><CODE>OperationStatus.KEYEMPTY</CODE></A> if the database is a Queue or Recno database and the specified key exists, but was never explicitly created by the application or was later deleted; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
does not contain a required non-null byte array.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DeadlockException.html" title="class in com.sleepycat.db">DeadlockException</A></CODE> - if the operation was selected to resolve a
deadlock.
<p>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.
<p></DL>
@@ -1441,15 +1457,15 @@ byte array by the caller.<DD><CODE>data</CODE> - the data
used as input and returned as output. It must be initialized with a non-null
byte array by the caller.<DD><CODE>lockMode</CODE> - the locking attributes; if null, default attributes are used.
<DT><B>Returns:</B><DD><A HREF="../../../com/sleepycat/db/OperationStatus.html#NOTFOUND"><CODE>OperationStatus.NOTFOUND</CODE></A> if no matching key/data pair is
-found; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
+found; <A HREF="../../../com/sleepycat/db/OperationStatus.html#KEYEMPTY"><CODE>OperationStatus.KEYEMPTY</CODE></A> if the database is a Queue or Recno database and the specified key exists, but was never explicitly created by the application or was later deleted; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
does not contain a required non-null byte array.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DeadlockException.html" title="class in com.sleepycat.db">DeadlockException</A></CODE> - if the operation was selected to resolve a
deadlock.
<p>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.
<p></DL>
@@ -1478,15 +1494,15 @@ unchanged.
returned as output. Its byte array does not need to be initialized by the
caller.<DD><CODE>lockMode</CODE> - the locking attributes; if null, default attributes are used.
<DT><B>Returns:</B><DD><A HREF="../../../com/sleepycat/db/OperationStatus.html#NOTFOUND"><CODE>OperationStatus.NOTFOUND</CODE></A> if no matching key/data pair is
-found; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
+found; <A HREF="../../../com/sleepycat/db/OperationStatus.html#KEYEMPTY"><CODE>OperationStatus.KEYEMPTY</CODE></A> if the database is a Queue or Recno database and the specified key exists, but was never explicitly created by the application or was later deleted; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
does not contain a required non-null byte array.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DeadlockException.html" title="class in com.sleepycat.db">DeadlockException</A></CODE> - if the operation was selected to resolve a
deadlock.
<p>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.
<p></DL>
@@ -1523,20 +1539,66 @@ returned as output. Multiple results can be retrieved by passing an object
that is a subclass of <A HREF="../../../com/sleepycat/db/MultipleEntry.html" title="class in com.sleepycat.db"><CODE>MultipleEntry</CODE></A>, otherwise its byte array does not
need to be initialized by the caller.<DD><CODE>lockMode</CODE> - the locking attributes; if null, default attributes are used.
<DT><B>Returns:</B><DD><A HREF="../../../com/sleepycat/db/OperationStatus.html#NOTFOUND"><CODE>OperationStatus.NOTFOUND</CODE></A> if no matching key/data pair is
-found; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
+found; <A HREF="../../../com/sleepycat/db/OperationStatus.html#KEYEMPTY"><CODE>OperationStatus.KEYEMPTY</CODE></A> if the database is a Queue or Recno database and the specified key exists, but was never explicitly created by the application or was later deleted; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
does not contain a required non-null byte array.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DeadlockException.html" title="class in com.sleepycat.db">DeadlockException</A></CODE> - if the operation was selected to resolve a
deadlock.
<p>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.
<p></DL>
</DD>
</DL>
+<HR>
+
+<A NAME="getPriority()"><!-- --></A><H3>
+getPriority</H3>
+<PRE>
+public <A HREF="../../../com/sleepycat/db/CacheFilePriority.html" title="class in com.sleepycat.db">CacheFilePriority</A> <B>getPriority</B>()
+ throws <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></PRE>
+<DL>
+<DD>Get the cache priority for pages referenced by the cursor.
+ <p>
+ This method may be called at any time during the life of the application.
+ <p>
+ <p>
+<P>
+<DD><DL>
+
+<DT><B>Throws:</B>
+<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setPriority(com.sleepycat.db.CacheFilePriority)"><!-- --></A><H3>
+setPriority</H3>
+<PRE>
+public void <B>setPriority</B>(<A HREF="../../../com/sleepycat/db/CacheFilePriority.html" title="class in com.sleepycat.db">CacheFilePriority</A>&nbsp;priority)
+ throws <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></PRE>
+<DL>
+<DD>Set the cache priority for pages referenced by the DBC handle.
+ <p>
+ The priority of a page biases the replacement algorithm to be more or less
+ likely to discard a page when space is needed in the buffer pool. The bias
+ is temporary, and pages will eventually be discarded if they are not
+ referenced again. The DBcursor->set_priority method is only advisory, and
+ does not guarantee pages will be treated in a specific way.
+ <p>
+ This method may be called at any time during the life of the application.
+ <p>
+ <p>
+<P>
+<DD><DL>
+
+<DT><B>Throws:</B>
+<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.</DL>
+</DD>
+</DL>
<!-- ========= END OF CLASS DATA ========= -->
<HR>
@@ -1562,7 +1624,7 @@ deadlock.
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -1598,6 +1660,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHO
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/CursorConfig.html b/db/docs/java/com/sleepycat/db/CursorConfig.html
index 05b98e007..6162759a8 100644
--- a/db/docs/java/com/sleepycat/db/CursorConfig.html
+++ b/db/docs/java/com/sleepycat/db/CursorConfig.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:45 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:56 EDT 2007 -->
<TITLE>
-CursorConfig (Oracle Corporation - Berkeley DB Java API)
+CursorConfig (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.CursorConfig class">
@@ -14,7 +14,7 @@ CursorConfig (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="CursorConfig (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="CursorConfig (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,15 +89,15 @@ com.sleepycat.db</FONT>
<BR>
Class CursorConfig</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.CursorConfig</B>
</PRE>
<DL>
-<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A></DD>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A></DD>
</DL>
<HR>
<DL>
-<DT><PRE>public class <B>CursorConfig</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A><DT>implements <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A></DL>
+<DT><PRE>public class <B>CursorConfig</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A><DT>implements <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A></DL>
</PRE>
<P>
@@ -289,10 +289,10 @@ default constructor is initialized with the system's default settings.
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -662,7 +662,7 @@ public boolean <B>getWriteCursor</B>()</PRE>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -698,6 +698,6 @@ DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/Database.html b/db/docs/java/com/sleepycat/db/Database.html
index 4957a2c60..ca04ef595 100644
--- a/db/docs/java/com/sleepycat/db/Database.html
+++ b/db/docs/java/com/sleepycat/db/Database.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:45 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:56 EDT 2007 -->
<TITLE>
-Database (Oracle Corporation - Berkeley DB Java API)
+Database (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.Database class">
@@ -14,7 +14,7 @@ Database (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Database (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Database (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,7 +89,7 @@ com.sleepycat.db</FONT>
<BR>
Class Database</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.Database</B>
</PRE>
<DL>
@@ -97,7 +97,7 @@ Class Database</H2>
</DL>
<HR>
<DL>
-<DT><PRE>public class <B>Database</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
+<DT><PRE>public class <B>Database</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
</PRE>
<P>
@@ -137,8 +137,8 @@ To create a transactional database that supports duplicates:
<B>Constructor Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><B><A HREF="../../../com/sleepycat/db/Database.html#Database(java.lang.String, java.lang.String, com.sleepycat.db.DatabaseConfig)">Database</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/Database.html#Database(java.lang.String, java.lang.String, com.sleepycat.db.DatabaseConfig)">Database</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
<A HREF="../../../com/sleepycat/db/DatabaseConfig.html" title="class in com.sleepycat.db">DatabaseConfig</A>&nbsp;config)</CODE>
<BR>
@@ -210,20 +210,21 @@ the head of the queue, and delete the record.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;long</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/db/Database.html#count()">count</A></B>()</CODE>
+<CODE>&nbsp;<A HREF="../../../com/sleepycat/db/OperationStatus.html" title="class in com.sleepycat.db">OperationStatus</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/Database.html#delete(com.sleepycat.db.Transaction, com.sleepycat.db.DatabaseEntry)">delete</A></B>(<A HREF="../../../com/sleepycat/db/Transaction.html" title="class in com.sleepycat.db">Transaction</A>&nbsp;txn,
+ <A HREF="../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;key)</CODE>
<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Count the key/data pairs in the database without adding to the cache.</TD>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Remove key/data pairs from the database.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../com/sleepycat/db/OperationStatus.html" title="class in com.sleepycat.db">OperationStatus</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/db/Database.html#delete(com.sleepycat.db.Transaction, com.sleepycat.db.DatabaseEntry)">delete</A></B>(<A HREF="../../../com/sleepycat/db/Transaction.html" title="class in com.sleepycat.db">Transaction</A>&nbsp;txn,
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/Database.html#exists(com.sleepycat.db.Transaction, com.sleepycat.db.DatabaseEntry)">exists</A></B>(<A HREF="../../../com/sleepycat/db/Transaction.html" title="class in com.sleepycat.db">Transaction</A>&nbsp;txn,
<A HREF="../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;key)</CODE>
<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Remove key/data pairs from the database.</TD>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Checks if the specified key appears in the database.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
@@ -254,7 +255,7 @@ the head of the queue, and delete the record.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/Database.html#getDatabaseFile()">getDatabaseFile</A></B>()</CODE>
<BR>
@@ -262,7 +263,7 @@ the head of the queue, and delete the record.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/Database.html#getDatabaseName()">getDatabaseName</A></B>()</CODE>
<BR>
@@ -386,8 +387,8 @@ appear in the database.</TD>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/db/Database.html#remove(java.lang.String, java.lang.String, com.sleepycat.db.DatabaseConfig)">remove</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/Database.html#remove(java.lang.String, java.lang.String, com.sleepycat.db.DatabaseConfig)">remove</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
<A HREF="../../../com/sleepycat/db/DatabaseConfig.html" title="class in com.sleepycat.db">DatabaseConfig</A>&nbsp;config)</CODE>
<BR>
@@ -407,9 +408,9 @@ Remove a database.</TD>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/db/Database.html#rename(java.lang.String, java.lang.String, java.lang.String, com.sleepycat.db.DatabaseConfig)">rename</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;oldDatabaseName,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;newDatabaseName,
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/Database.html#rename(java.lang.String, java.lang.String, java.lang.String, com.sleepycat.db.DatabaseConfig)">rename</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;oldDatabaseName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;newDatabaseName,
<A HREF="../../../com/sleepycat/db/DatabaseConfig.html" title="class in com.sleepycat.db">DatabaseConfig</A>&nbsp;config)</CODE>
<BR>
@@ -444,7 +445,7 @@ Rename a database.</TD>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/db/Database.html#upgrade(java.lang.String, com.sleepycat.db.DatabaseConfig)">upgrade</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/Database.html#upgrade(java.lang.String, com.sleepycat.db.DatabaseConfig)">upgrade</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
<A HREF="../../../com/sleepycat/db/DatabaseConfig.html" title="class in com.sleepycat.db">DatabaseConfig</A>&nbsp;config)</CODE>
<BR>
@@ -453,9 +454,9 @@ Rename a database.</TD>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;boolean</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/db/Database.html#verify(java.lang.String, java.lang.String, java.io.PrintStream, com.sleepycat.db.VerifyConfig, com.sleepycat.db.DatabaseConfig)">verify</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/PrintStream.html" title="class or interface in java.io">PrintStream</A>&nbsp;dumpStream,
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/Database.html#verify(java.lang.String, java.lang.String, java.io.PrintStream, com.sleepycat.db.VerifyConfig, com.sleepycat.db.DatabaseConfig)">verify</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/PrintStream.html" title="class or interface in java.io">PrintStream</A>&nbsp;dumpStream,
<A HREF="../../../com/sleepycat/db/VerifyConfig.html" title="class in com.sleepycat.db">VerifyConfig</A>&nbsp;verifyConfig,
<A HREF="../../../com/sleepycat/db/DatabaseConfig.html" title="class in com.sleepycat.db">DatabaseConfig</A>&nbsp;dbConfig)</CODE>
@@ -466,10 +467,10 @@ Rename a database.</TD>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -488,11 +489,11 @@ Rename a database.</TD>
<A NAME="Database(java.lang.String, java.lang.String, com.sleepycat.db.DatabaseConfig)"><!-- --></A><H3>
Database</H3>
<PRE>
-public <B>Database</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
+public <B>Database</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
<A HREF="../../../com/sleepycat/db/DatabaseConfig.html" title="class in com.sleepycat.db">DatabaseConfig</A>&nbsp;config)
throws <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A>,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/FileNotFoundException.html" title="class or interface in java.io">FileNotFoundException</A></PRE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/FileNotFoundException.html" title="class or interface in java.io">FileNotFoundException</A></PRE>
<DL>
<DD>Open a database.
<p>
@@ -535,7 +536,7 @@ Queue format.
<p><DD><CODE>config</CODE> - The database open attributes. If null, default attributes are used.
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/FileNotFoundException.html" title="class or interface in java.io">FileNotFoundException</A></CODE></DL>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/FileNotFoundException.html" title="class or interface in java.io">FileNotFoundException</A></CODE></DL>
</DL>
<!-- ============ METHOD DETAIL ========== -->
@@ -548,28 +549,6 @@ Queue format.
</TR>
</TABLE>
-<A NAME="count()"><!-- --></A><H3>
-count</H3>
-<PRE>
-public long <B>count</B>()
- throws <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></PRE>
-<DL>
-<DD>Count the key/data pairs in the database without adding to the cache.
- <p>
- Return a count of the key/data pairs in the database is returned
- without adding to the cache. The count may not be accurate in the face
- of concurrent operations in the database.
- <p>
-<P>
-<DD><DL>
-
-<DT><B>Returns:</B><DD>The count of key/data pairs in the database.
-<DT><B>Throws:</B>
-<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE></DL>
-</DD>
-</DL>
-<HR>
-
<A NAME="delete(com.sleepycat.db.Transaction, com.sleepycat.db.DatabaseEntry)"><!-- --></A><H3>
delete</H3>
<PRE>
@@ -640,14 +619,14 @@ caller.
<p><DD><CODE>lockMode</CODE> - the locking attributes; if null, default attributes are used.
<p>
<DT><B>Returns:</B><DD><A HREF="../../../com/sleepycat/db/OperationStatus.html#NOTFOUND"><CODE>OperationStatus.NOTFOUND</CODE></A> if no matching key/data pair is
-found; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
+found; <A HREF="../../../com/sleepycat/db/OperationStatus.html#KEYEMPTY"><CODE>OperationStatus.KEYEMPTY</CODE></A> if the database is a Queue or Recno database and the specified key exists, but was never explicitly created by the application or was later deleted; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
<p>
<p>
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../com/sleepycat/db/DeadlockException.html" title="class in com.sleepycat.db">DeadlockException</A></CODE> - if the operation was selected to resolve a
deadlock.
<p>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.</DL>
</DD>
@@ -679,14 +658,14 @@ caller.
<p><DD><CODE>lockMode</CODE> - the locking attributes; if null, default attributes are used.
<p>
<DT><B>Returns:</B><DD><A HREF="../../../com/sleepycat/db/OperationStatus.html#NOTFOUND"><CODE>OperationStatus.NOTFOUND</CODE></A> if no matching key/data pair is
-found; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
+found; <A HREF="../../../com/sleepycat/db/OperationStatus.html#KEYEMPTY"><CODE>OperationStatus.KEYEMPTY</CODE></A> if the database is a Queue or Recno database and the specified key exists, but was never explicitly created by the application or was later deleted; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
<p>
<p>
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../com/sleepycat/db/DeadlockException.html" title="class in com.sleepycat.db">DeadlockException</A></CODE> - if the operation was selected to resolve a
deadlock.
<p>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.</DL>
</DD>
@@ -774,6 +753,40 @@ deadlock.
</DL>
<HR>
+<A NAME="exists(com.sleepycat.db.Transaction, com.sleepycat.db.DatabaseEntry)"><!-- --></A><H3>
+exists</H3>
+<PRE>
+public <A HREF="../../../com/sleepycat/db/OperationStatus.html" title="class in com.sleepycat.db">OperationStatus</A> <B>exists</B>(<A HREF="../../../com/sleepycat/db/Transaction.html" title="class in com.sleepycat.db">Transaction</A>&nbsp;txn,
+ <A HREF="../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;key)
+ throws <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></PRE>
+<DL>
+<DD>Checks if the specified key appears in the database.
+<p>
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>txn</CODE> - For a transactional database, an explicit transaction may be specified to
+transaction-protect the operation, or null may be specified to perform the
+operation without transaction protection. For a non-transactional database,
+null must be specified.
+<p><DD><CODE>key</CODE> - the key
+used as input. It must be initialized with a non-null byte array by the
+caller.
+<p>
+<DT><B>Returns:</B><DD><A HREF="../../../com/sleepycat/db/OperationStatus.html#NOTFOUND"><CODE>OperationStatus.NOTFOUND</CODE></A> if no matching key/data pair is
+found; <A HREF="../../../com/sleepycat/db/OperationStatus.html#KEYEMPTY"><CODE>OperationStatus.KEYEMPTY</CODE></A> if the database is a Queue or Recno database and the specified key exists, but was never explicitly created by the application or was later deleted; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
+<p>
+<p>
+<DT><B>Throws:</B>
+<DD><CODE><A HREF="../../../com/sleepycat/db/DeadlockException.html" title="class in com.sleepycat.db">DeadlockException</A></CODE> - if the operation was selected to resolve a
+deadlock.
+<p>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
+<p>
+<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.</DL>
+</DD>
+</DL>
+<HR>
+
<A NAME="putNoOverwrite(com.sleepycat.db.Transaction, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry)"><!-- --></A><H3>
putNoOverwrite</H3>
<PRE>
@@ -850,7 +863,7 @@ deadlock.
<A NAME="getDatabaseName()"><!-- --></A><H3>
getDatabaseName</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>getDatabaseName</B>()
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>getDatabaseName</B>()
throws <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></PRE>
<DL>
<DD>Return the database name.
@@ -1025,17 +1038,23 @@ public <A HREF="../../../com/sleepycat/db/CompactStats.html" title="class in com
Hash or Recno database pages to the underlying filesystem.
<P>
<DD><DL>
-<DT><B>Parameters:</B><DD><CODE>txn</CODE> - For a transactional database, an explicit transaction may be specified, or null
-may be specified to use auto-commit. For a non-transactional database, null
-must be specified.<DD><CODE>start</CODE> - If not <code>null</code>, the <code>start</code> parameter is the starting point for
- compaction in a Btree or Recno database. Compaction will start at the
- smallest key greater than or equal to the specified key. If <code>null</code>,
- compaction will start at the beginning of the database.<DD><CODE>stop</CODE> - If not <code>null</code>, the <code>stop</code> parameter is the stopping point for
- compaction in a Btree or Recno database. Compaction will stop at the
- page with the smallest key greater than the specified key. If <code>null</code>,
- compaction will stop at the end of the database.<DD><CODE>end</CODE> - If not <code>null</code>, the <code>end</code> parameter will be filled in with the key
- marking the end of the compaction operation in a Btree or Recno
- database.<DD><CODE>config</CODE> - The compaction operation attributes. If null, default attributes are used.
+<DT><B>Parameters:</B><DD><CODE>txn</CODE> - If the operation is part of an application-specified transaction, the txnid
+ parameter is a transaction handle returned from <A HREF="../../../com/sleepycat/db/Environment.html#beginTransaction(com.sleepycat.db.Transaction, com.sleepycat.db.TransactionConfig)"><CODE>Environment.beginTransaction(com.sleepycat.db.Transaction, com.sleepycat.db.TransactionConfig)</CODE></A>, otherwise <code>null</code>.
+ If no transaction handle is specified, but the operation occurs in a
+ transactional database, the operation will be implicitly transaction
+ protected using multiple transactions. Transactions will be comitted at
+ points to avoid holding much of the tree locked.
+ Any deadlocks encountered will be cause the operation to retried from
+ the point of the last commit.<DD><CODE>start</CODE> - If not <code>null</code>, the <code>start</code> parameter is the starting
+ point for compaction in a Btree or Recno database. Compaction will start
+ at the smallest key greater than or equal to the specified key. If
+ <code>null</code>, compaction will start at the beginning of the database.<DD><CODE>stop</CODE> - If not <code>null</code>, the <code>stop</code> parameter is the stopping
+ point for compaction in a Btree or Recno database. Compaction will stop at
+ the page with the smallest key greater than the specified key. If
+ <code>null</code>, compaction will stop at the end of the database.<DD><CODE>end</CODE> - If not <code>null</code>, the <code>end</code> parameter will be filled in
+ with the key marking the end of the compaction operation in a Btree or
+ Recno database. It is generally the first key of the page where processing
+ stopped.<DD><CODE>config</CODE> - The compaction operation attributes. If null, default attributes are used.
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE></DL>
</DD>
@@ -1241,7 +1260,7 @@ public <A HREF="../../../com/sleepycat/db/JoinCursor.html" title="class in com.s
<A NAME="getDatabaseFile()"><!-- --></A><H3>
getDatabaseFile</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>getDatabaseFile</B>()
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>getDatabaseFile</B>()
throws <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></PRE>
<DL>
<DD>Return the database's underlying file name.
@@ -1272,7 +1291,7 @@ public void <B>setConfig</B>(<A HREF="../../../com/sleepycat/db/DatabaseConfig.h
<p>
<p>
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.</DL>
</DD>
@@ -1331,14 +1350,14 @@ method waits for one to become available, or returns immediately with
status <code>NOTFOUND</code>.
<p>
<DT><B>Returns:</B><DD><A HREF="../../../com/sleepycat/db/OperationStatus.html#NOTFOUND"><CODE>OperationStatus.NOTFOUND</CODE></A> if no matching key/data pair is
-found; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
+found; <A HREF="../../../com/sleepycat/db/OperationStatus.html#KEYEMPTY"><CODE>OperationStatus.KEYEMPTY</CODE></A> if the database is a Queue or Recno database and the specified key exists, but was never explicitly created by the application or was later deleted; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
<p>
<p>
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../com/sleepycat/db/DeadlockException.html" title="class in com.sleepycat.db">DeadlockException</A></CODE> - if the operation was selected to resolve a
deadlock.
<p>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.</DL>
</DD>
@@ -1410,15 +1429,15 @@ returned as output. Multiple results can be retrieved by passing an object
that is a subclass of <A HREF="../../../com/sleepycat/db/MultipleEntry.html" title="class in com.sleepycat.db"><CODE>MultipleEntry</CODE></A>, otherwise its byte array does not
need to be initialized by the caller.<DD><CODE>lockMode</CODE> - the locking attributes; if null, default attributes are used.
<DT><B>Returns:</B><DD><A HREF="../../../com/sleepycat/db/OperationStatus.html#NOTFOUND"><CODE>OperationStatus.NOTFOUND</CODE></A> if no matching key/data pair is
-found; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
+found; <A HREF="../../../com/sleepycat/db/OperationStatus.html#KEYEMPTY"><CODE>OperationStatus.KEYEMPTY</CODE></A> if the database is a Queue or Recno database and the specified key exists, but was never explicitly created by the application or was later deleted; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
does not contain a required non-null byte array.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DeadlockException.html" title="class in com.sleepycat.db">DeadlockException</A></CODE> - if the operation was selected to resolve a
deadlock.
<p>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.
<p></DL>
@@ -1429,11 +1448,11 @@ deadlock.
<A NAME="remove(java.lang.String, java.lang.String, com.sleepycat.db.DatabaseConfig)"><!-- --></A><H3>
remove</H3>
<PRE>
-public static void <B>remove</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
+public static void <B>remove</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
<A HREF="../../../com/sleepycat/db/DatabaseConfig.html" title="class in com.sleepycat.db">DatabaseConfig</A>&nbsp;config)
throws <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A>,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/FileNotFoundException.html" title="class or interface in java.io">FileNotFoundException</A></PRE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/FileNotFoundException.html" title="class or interface in java.io">FileNotFoundException</A></PRE>
<DL>
<DD><p>
Remove a database.
@@ -1470,7 +1489,7 @@ string, which is equivalent to ASCII for Latin characters.
<p>
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/FileNotFoundException.html" title="class or interface in java.io">FileNotFoundException</A></CODE></DL>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/FileNotFoundException.html" title="class or interface in java.io">FileNotFoundException</A></CODE></DL>
</DD>
</DL>
<HR>
@@ -1478,12 +1497,12 @@ string, which is equivalent to ASCII for Latin characters.
<A NAME="rename(java.lang.String, java.lang.String, java.lang.String, com.sleepycat.db.DatabaseConfig)"><!-- --></A><H3>
rename</H3>
<PRE>
-public static void <B>rename</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;oldDatabaseName,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;newDatabaseName,
+public static void <B>rename</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;oldDatabaseName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;newDatabaseName,
<A HREF="../../../com/sleepycat/db/DatabaseConfig.html" title="class in com.sleepycat.db">DatabaseConfig</A>&nbsp;config)
throws <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A>,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/FileNotFoundException.html" title="class or interface in java.io">FileNotFoundException</A></PRE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/FileNotFoundException.html" title="class or interface in java.io">FileNotFoundException</A></PRE>
<DL>
<DD><p>
Rename a database.
@@ -1523,7 +1542,7 @@ string, which is equivalent to ASCII for Latin characters.
<p>
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/FileNotFoundException.html" title="class or interface in java.io">FileNotFoundException</A></CODE></DL>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/FileNotFoundException.html" title="class or interface in java.io">FileNotFoundException</A></CODE></DL>
</DD>
</DL>
<HR>
@@ -1564,10 +1583,10 @@ public void <B>sync</B>()
<A NAME="upgrade(java.lang.String, com.sleepycat.db.DatabaseConfig)"><!-- --></A><H3>
upgrade</H3>
<PRE>
-public static void <B>upgrade</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
+public static void <B>upgrade</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
<A HREF="../../../com/sleepycat/db/DatabaseConfig.html" title="class in com.sleepycat.db">DatabaseConfig</A>&nbsp;config)
throws <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A>,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/FileNotFoundException.html" title="class or interface in java.io">FileNotFoundException</A></PRE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/FileNotFoundException.html" title="class or interface in java.io">FileNotFoundException</A></PRE>
<DL>
<DD>Upgrade all of the databases included in the specified file.
<p>
@@ -1618,7 +1637,7 @@ public static void <B>upgrade</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api
<p>
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/FileNotFoundException.html" title="class or interface in java.io">FileNotFoundException</A></CODE></DL>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/FileNotFoundException.html" title="class or interface in java.io">FileNotFoundException</A></CODE></DL>
</DD>
</DL>
<HR>
@@ -1626,13 +1645,13 @@ public static void <B>upgrade</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api
<A NAME="verify(java.lang.String, java.lang.String, java.io.PrintStream, com.sleepycat.db.VerifyConfig, com.sleepycat.db.DatabaseConfig)"><!-- --></A><H3>
verify</H3>
<PRE>
-public static boolean <B>verify</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/PrintStream.html" title="class or interface in java.io">PrintStream</A>&nbsp;dumpStream,
+public static boolean <B>verify</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/PrintStream.html" title="class or interface in java.io">PrintStream</A>&nbsp;dumpStream,
<A HREF="../../../com/sleepycat/db/VerifyConfig.html" title="class in com.sleepycat.db">VerifyConfig</A>&nbsp;verifyConfig,
<A HREF="../../../com/sleepycat/db/DatabaseConfig.html" title="class in com.sleepycat.db">DatabaseConfig</A>&nbsp;dbConfig)
throws <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A>,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/FileNotFoundException.html" title="class or interface in java.io">FileNotFoundException</A></PRE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/FileNotFoundException.html" title="class or interface in java.io">FileNotFoundException</A></PRE>
<DL>
<DD>Return if all of the databases in a file are uncorrupted.
<p>
@@ -1681,7 +1700,7 @@ or failure.
<p>
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/FileNotFoundException.html" title="class or interface in java.io">FileNotFoundException</A></CODE></DL>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/FileNotFoundException.html" title="class or interface in java.io">FileNotFoundException</A></CODE></DL>
</DD>
</DL>
<!-- ========= END OF CLASS DATA ========= -->
@@ -1709,7 +1728,7 @@ or failure.
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -1745,6 +1764,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&n
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/DatabaseConfig.html b/db/docs/java/com/sleepycat/db/DatabaseConfig.html
index 0a42abc5d..54861f38f 100644
--- a/db/docs/java/com/sleepycat/db/DatabaseConfig.html
+++ b/db/docs/java/com/sleepycat/db/DatabaseConfig.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:45 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:56 EDT 2007 -->
<TITLE>
-DatabaseConfig (Oracle Corporation - Berkeley DB Java API)
+DatabaseConfig (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.DatabaseConfig class">
@@ -14,7 +14,7 @@ DatabaseConfig (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="DatabaseConfig (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="DatabaseConfig (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,18 +89,18 @@ com.sleepycat.db</FONT>
<BR>
Class DatabaseConfig</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.DatabaseConfig</B>
</PRE>
<DL>
-<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A></DD>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A></DD>
</DL>
<DL>
<DT><B>Direct Known Subclasses:</B> <DD><A HREF="../../../com/sleepycat/db/SecondaryConfig.html" title="class in com.sleepycat.db">SecondaryConfig</A></DD>
</DL>
<HR>
<DL>
-<DT><PRE>public class <B>DatabaseConfig</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A><DT>implements <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A></DL>
+<DT><PRE>public class <B>DatabaseConfig</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A><DT>implements <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A></DL>
</PRE>
<P>
@@ -166,7 +166,7 @@ Specify the attributes of a database.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Comparator.html" title="class or interface in java.util">Comparator</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Comparator.html" title="class or interface in java.util">Comparator</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getBtreeComparator()">getBtreeComparator</A></B>()</CODE>
<BR>
@@ -254,7 +254,7 @@ Specify the attributes of a database.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Comparator.html" title="class or interface in java.util">Comparator</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Comparator.html" title="class or interface in java.util">Comparator</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getDuplicateComparator()">getDuplicateComparator</A></B>()</CODE>
<BR>
@@ -278,7 +278,7 @@ Specify the attributes of a database.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getErrorPrefix()">getErrorPrefix</A></B>()</CODE>
<BR>
@@ -286,7 +286,7 @@ Specify the attributes of a database.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/OutputStream.html" title="class or interface in java.io">OutputStream</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/OutputStream.html" title="class or interface in java.io">OutputStream</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getErrorStream()">getErrorStream</A></B>()</CODE>
<BR>
@@ -311,6 +311,14 @@ Specify the attributes of a database.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Comparator.html" title="class or interface in java.util">Comparator</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getHashComparator()">getHashComparator</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the Comparator used to compare keys in a Hash database.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../com/sleepycat/db/Hasher.html" title="interface in com.sleepycat.db">Hasher</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getHasher()">getHasher</A></B>()</CODE>
@@ -343,7 +351,7 @@ Specify the attributes of a database.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/OutputStream.html" title="class or interface in java.io">OutputStream</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/OutputStream.html" title="class or interface in java.io">OutputStream</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getMessageStream()">getMessageStream</A></B>()</CODE>
<BR>
@@ -392,6 +400,14 @@ Specify the attributes of a database.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../com/sleepycat/db/CacheFilePriority.html" title="class in com.sleepycat.db">CacheFilePriority</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getPriority()">getPriority</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the the cache priority for pages referenced by this handle.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getQueueExtentSize()">getQueueExtentSize</A></B>()</CODE>
@@ -462,7 +478,7 @@ Specify the attributes of a database.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/File.html" title="class or interface in java.io">File</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/File.html" title="class or interface in java.io">File</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getRecordSource()">getRecordSource</A></B>()</CODE>
<BR>
@@ -568,7 +584,7 @@ Specify the attributes of a database.
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setBtreeComparator(java.util.Comparator)">setBtreeComparator</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Comparator.html" title="class or interface in java.util">Comparator</A>&nbsp;btreeComparator)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setBtreeComparator(java.util.Comparator)">setBtreeComparator</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Comparator.html" title="class or interface in java.util">Comparator</A>&nbsp;btreeComparator)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;By default, a byte by byte lexicographic comparison is used for
@@ -646,7 +662,7 @@ cache.</TD>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setDuplicateComparator(java.util.Comparator)">setDuplicateComparator</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Comparator.html" title="class or interface in java.util">Comparator</A>&nbsp;duplicateComparator)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setDuplicateComparator(java.util.Comparator)">setDuplicateComparator</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Comparator.html" title="class or interface in java.util">Comparator</A>&nbsp;duplicateComparator)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the duplicate data item comparison callback.</TD>
@@ -654,7 +670,7 @@ cache.</TD>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setEncrypted(java.lang.String)">setEncrypted</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;password)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setEncrypted(java.lang.String)">setEncrypted</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;password)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the password used to perform encryption and decryption.</TD>
@@ -670,7 +686,7 @@ cache.</TD>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setErrorPrefix(java.lang.String)">setErrorPrefix</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;errorPrefix)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setErrorPrefix(java.lang.String)">setErrorPrefix</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;errorPrefix)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the prefix string that appears before error messages.</TD>
@@ -678,7 +694,7 @@ cache.</TD>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setErrorStream(java.io.OutputStream)">setErrorStream</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/OutputStream.html" title="class or interface in java.io">OutputStream</A>&nbsp;errorStream)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setErrorStream(java.io.OutputStream)">setErrorStream</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/OutputStream.html" title="class or interface in java.io">OutputStream</A>&nbsp;errorStream)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set an OutputStream for displaying error messages.</TD>
@@ -703,6 +719,14 @@ cache.</TD>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setHashComparator(java.util.Comparator)">setHashComparator</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Comparator.html" title="class or interface in java.util">Comparator</A>&nbsp;hashComparator)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the Hash key comparison function.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setHasher(com.sleepycat.db.Hasher)">setHasher</A></B>(<A HREF="../../../com/sleepycat/db/Hasher.html" title="interface in com.sleepycat.db">Hasher</A>&nbsp;hasher)</CODE>
<BR>
@@ -735,7 +759,7 @@ cache.</TD>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setMessageStream(java.io.OutputStream)">setMessageStream</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/OutputStream.html" title="class or interface in java.io">OutputStream</A>&nbsp;messageStream)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setMessageStream(java.io.OutputStream)">setMessageStream</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/OutputStream.html" title="class or interface in java.io">OutputStream</A>&nbsp;messageStream)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set an OutputStream for displaying informational messages.</TD>
@@ -787,6 +811,14 @@ cache.</TD>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setPriority(com.sleepycat.db.CacheFilePriority)">setPriority</A></B>(<A HREF="../../../com/sleepycat/db/CacheFilePriority.html" title="class in com.sleepycat.db">CacheFilePriority</A>&nbsp;priority)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the cache priority for pages referenced by the DB handle.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setQueueExtentSize(int)">setQueueExtentSize</A></B>(int&nbsp;queueExtentSize)</CODE>
<BR>
@@ -858,7 +890,7 @@ cache.</TD>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setRecordSource(java.io.File)">setRecordSource</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/File.html" title="class or interface in java.io">File</A>&nbsp;recordSource)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setRecordSource(java.io.File)">setRecordSource</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/File.html" title="class or interface in java.io">File</A>&nbsp;recordSource)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the underlying source file for the Recno access method.</TD>
@@ -953,10 +985,10 @@ cache.</TD>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -1249,7 +1281,7 @@ This method may be called at any time during the life of the application.
<A NAME="setBtreeComparator(java.util.Comparator)"><!-- --></A><H3>
setBtreeComparator</H3>
<PRE>
-public void <B>setBtreeComparator</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Comparator.html" title="class or interface in java.util">Comparator</A>&nbsp;btreeComparator)</PRE>
+public void <B>setBtreeComparator</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Comparator.html" title="class or interface in java.util">Comparator</A>&nbsp;btreeComparator)</PRE>
<DL>
<DD>By default, a byte by byte lexicographic comparison is used for
btree keys. To customize the comparison, supply a different
@@ -1273,7 +1305,7 @@ public void <B>setBtreeComparator</B>(<A HREF="http://java.sun.com/j2se/1.3/docs
<A NAME="getBtreeComparator()"><!-- --></A><H3>
getBtreeComparator</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Comparator.html" title="class or interface in java.util">Comparator</A> <B>getBtreeComparator</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Comparator.html" title="class or interface in java.util">Comparator</A> <B>getBtreeComparator</B>()</PRE>
<DL>
<DD>Return the Comparator used to compare keys in a Btree.
<p>
@@ -1759,7 +1791,7 @@ This method may be called at any time during the life of the application.
<A NAME="setDuplicateComparator(java.util.Comparator)"><!-- --></A><H3>
setDuplicateComparator</H3>
<PRE>
-public void <B>setDuplicateComparator</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Comparator.html" title="class or interface in java.util">Comparator</A>&nbsp;duplicateComparator)</PRE>
+public void <B>setDuplicateComparator</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Comparator.html" title="class or interface in java.util">Comparator</A>&nbsp;duplicateComparator)</PRE>
<DL>
<DD>Set the duplicate data item comparison callback. The comparison
function is called whenever it is necessary to compare a data item
@@ -1789,7 +1821,7 @@ public void <B>setDuplicateComparator</B>(<A HREF="http://java.sun.com/j2se/1.3/
<A NAME="getDuplicateComparator()"><!-- --></A><H3>
getDuplicateComparator</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Comparator.html" title="class or interface in java.util">Comparator</A> <B>getDuplicateComparator</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Comparator.html" title="class or interface in java.util">Comparator</A> <B>getDuplicateComparator</B>()</PRE>
<DL>
<DD>Return the duplicate data item comparison callback.
<p>
@@ -1809,7 +1841,7 @@ This method may be called at any time during the life of the application.
<A NAME="setEncrypted(java.lang.String)"><!-- --></A><H3>
setEncrypted</H3>
<PRE>
-public void <B>setEncrypted</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;password)</PRE>
+public void <B>setEncrypted</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;password)</PRE>
<DL>
<DD>Set the password used to perform encryption and decryption.
<p>
@@ -1914,7 +1946,7 @@ This method may be called at any time during the life of the application.
<A NAME="setErrorPrefix(java.lang.String)"><!-- --></A><H3>
setErrorPrefix</H3>
<PRE>
-public void <B>setErrorPrefix</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;errorPrefix)</PRE>
+public void <B>setErrorPrefix</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;errorPrefix)</PRE>
<DL>
<DD>Set the prefix string that appears before error messages.
<p>
@@ -1937,7 +1969,7 @@ This method may be called at any time during the life of the application.
<A NAME="getErrorPrefix()"><!-- --></A><H3>
getErrorPrefix</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>getErrorPrefix</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>getErrorPrefix</B>()</PRE>
<DL>
<DD>Return the prefix string that appears before error messages.
<p>
@@ -1957,7 +1989,7 @@ This method may be called at any time during the life of the application.
<A NAME="setErrorStream(java.io.OutputStream)"><!-- --></A><H3>
setErrorStream</H3>
<PRE>
-public void <B>setErrorStream</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/OutputStream.html" title="class or interface in java.io">OutputStream</A>&nbsp;errorStream)</PRE>
+public void <B>setErrorStream</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/OutputStream.html" title="class or interface in java.io">OutputStream</A>&nbsp;errorStream)</PRE>
<DL>
<DD>Set an OutputStream for displaying error messages.
<p>
@@ -2002,7 +2034,7 @@ This method may be called at any time during the life of the application.
<A NAME="getErrorStream()"><!-- --></A><H3>
getErrorStream</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/OutputStream.html" title="class or interface in java.io">OutputStream</A> <B>getErrorStream</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/OutputStream.html" title="class or interface in java.io">OutputStream</A> <B>getErrorStream</B>()</PRE>
<DL>
<DD>Return the an OutputStream for displaying error messages.
<p>
@@ -2070,6 +2102,53 @@ This method may be called at any time during the life of the application.
</DL>
<HR>
+<A NAME="setHashComparator(java.util.Comparator)"><!-- --></A><H3>
+setHashComparator</H3>
+<PRE>
+public void <B>setHashComparator</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Comparator.html" title="class or interface in java.util">Comparator</A>&nbsp;hashComparator)</PRE>
+<DL>
+<DD>Set the Hash key comparison function. The comparison function is called
+ whenever it is necessary to compare a key specified by the application with
+ a key currently stored in the database.
+ <p>
+ If no comparison function is specified, a byte-by-byte comparison is
+ performed.
+ <p>
+ The <code>compare</code> method is passed the byte arrays representing
+ keys that are stored in the database. If you know how your data is
+ organized in the byte array, then you can write a comparison routine that
+ directly examines the contents of the arrays. Otherwise, you have to
+ reconstruct your original objects, and then perform the comparison.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getHashComparator()"><!-- --></A><H3>
+getHashComparator</H3>
+<PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Comparator.html" title="class or interface in java.util">Comparator</A> <B>getHashComparator</B>()</PRE>
+<DL>
+<DD>Return the Comparator used to compare keys in a Hash database.
+<p>
+This method may be called at any time during the life of the application.
+<p>
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>The Comparator used to compare keys in a Hash database.</DL>
+</DD>
+</DL>
+<HR>
+
<A NAME="setHashFillFactor(int)"><!-- --></A><H3>
setHashFillFactor</H3>
<PRE>
@@ -2289,7 +2368,7 @@ This method may be called at any time during the life of the application.
<A NAME="setMessageStream(java.io.OutputStream)"><!-- --></A><H3>
setMessageStream</H3>
<PRE>
-public void <B>setMessageStream</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/OutputStream.html" title="class or interface in java.io">OutputStream</A>&nbsp;messageStream)</PRE>
+public void <B>setMessageStream</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/OutputStream.html" title="class or interface in java.io">OutputStream</A>&nbsp;messageStream)</PRE>
<DL>
<DD>Set an OutputStream for displaying informational messages.
<p>
@@ -2329,7 +2408,7 @@ This method may be called at any time during the life of the application.
<A NAME="getMessageStream()"><!-- --></A><H3>
getMessageStream</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/OutputStream.html" title="class or interface in java.io">OutputStream</A> <B>getMessageStream</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/OutputStream.html" title="class or interface in java.io">OutputStream</A> <B>getMessageStream</B>()</PRE>
<DL>
<DD>Return the an OutputStream for displaying informational messages.
<p>
@@ -2412,7 +2491,8 @@ public void <B>setMultiversion</B>(boolean&nbsp;multiversion)</PRE>
</DL>
</DD>
<DD><DL>
-<DT><B>Parameters:</B><DD><CODE>multiversion</CODE> - If true, configure the database with support for multiversion concurrency control.</DL>
+<DT><B>Parameters:</B><DD><CODE>multiversion</CODE> - If true, configure the database with support for multiversion concurrency
+ control.</DL>
</DD>
</DL>
<HR>
@@ -2581,6 +2661,49 @@ This method may be called at any time during the life of the application.
</DL>
<HR>
+<A NAME="setPriority(com.sleepycat.db.CacheFilePriority)"><!-- --></A><H3>
+setPriority</H3>
+<PRE>
+public void <B>setPriority</B>(<A HREF="../../../com/sleepycat/db/CacheFilePriority.html" title="class in com.sleepycat.db">CacheFilePriority</A>&nbsp;priority)</PRE>
+<DL>
+<DD>Set the cache priority for pages referenced by the DB handle.
+ <p>
+ The priority of a page biases the replacement algorithm to be more or less
+ likely to discard a page when space is needed in the buffer pool. The bias
+ is temporary, and pages will eventually be discarded if they are not
+ referenced again. The priority setting is only advisory, and does not
+ guarantee pages will be treated in a specific way.
+ <p>
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>priority</CODE> - The desired cache priority.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getPriority()"><!-- --></A><H3>
+getPriority</H3>
+<PRE>
+public <A HREF="../../../com/sleepycat/db/CacheFilePriority.html" title="class in com.sleepycat.db">CacheFilePriority</A> <B>getPriority</B>()</PRE>
+<DL>
+<DD>Return the the cache priority for pages referenced by this handle.
+<p>
+This method may be called at any time during the life of the application.
+<p>
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>The the cache priority for pages referenced by this handle.</DL>
+</DD>
+</DL>
+<HR>
+
<A NAME="setQueueExtentSize(int)"><!-- --></A><H3>
setQueueExtentSize</H3>
<PRE>
@@ -2969,7 +3092,7 @@ This method may be called at any time during the life of the application.
<A NAME="setRecordSource(java.io.File)"><!-- --></A><H3>
setRecordSource</H3>
<PRE>
-public void <B>setRecordSource</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/File.html" title="class or interface in java.io">File</A>&nbsp;recordSource)</PRE>
+public void <B>setRecordSource</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/File.html" title="class or interface in java.io">File</A>&nbsp;recordSource)</PRE>
<DL>
<DD>Set the underlying source file for the Recno access method.
<p>
@@ -3060,7 +3183,7 @@ historically used to create the database or corruption can occur.
<A NAME="getRecordSource()"><!-- --></A><H3>
getRecordSource</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/File.html" title="class or interface in java.io">File</A> <B>getRecordSource</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/File.html" title="class or interface in java.io">File</A> <B>getRecordSource</B>()</PRE>
<DL>
<DD>Return the name of an underlying flat text database file that is
read to initialize a transient record number index.
@@ -3543,7 +3666,7 @@ This method may be called at any time during the life of the application.
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -3579,6 +3702,6 @@ DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/DatabaseEntry.html b/db/docs/java/com/sleepycat/db/DatabaseEntry.html
index f47357999..43be2deff 100644
--- a/db/docs/java/com/sleepycat/db/DatabaseEntry.html
+++ b/db/docs/java/com/sleepycat/db/DatabaseEntry.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:45 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:56 EDT 2007 -->
<TITLE>
-DatabaseEntry (Oracle Corporation - Berkeley DB Java API)
+DatabaseEntry (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.DatabaseEntry class">
@@ -14,7 +14,7 @@ DatabaseEntry (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="DatabaseEntry (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="DatabaseEntry (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,7 +89,7 @@ com.sleepycat.db</FONT>
<BR>
Class DatabaseEntry</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.DatabaseEntry</B>
</PRE>
<DL>
@@ -97,7 +97,7 @@ Class DatabaseEntry</H2>
</DL>
<HR>
<DL>
-<DT><PRE>public class <B>DatabaseEntry</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
+<DT><PRE>public class <B>DatabaseEntry</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
</PRE>
<P>
@@ -220,7 +220,7 @@ are not set, unless the application itself sets them explicitly.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs a DatabaseEntry with a given byte array, offset and size.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><B><A HREF="../../../com/sleepycat/db/DatabaseEntry.html#DatabaseEntry(java.nio.ByteBuffer)">DatabaseEntry</A></B>(java.nio.ByteBuffer&nbsp;data)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/DatabaseEntry.html#DatabaseEntry(java.nio.ByteBuffer)">DatabaseEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/nio/ByteBuffer.html" title="class or interface in java.nio">ByteBuffer</A>&nbsp;data)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Construct a DatabaseEntry with a given native I/O buffer.</TD>
@@ -238,7 +238,7 @@ are not set, unless the application itself sets them explicitly.
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/db/DatabaseEntry.html#equals(java.lang.Object)">equals</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;o)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/DatabaseEntry.html#equals(java.lang.Object)">equals</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;o)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compares the data of two entries for byte-by-byte equality.</TD>
@@ -253,7 +253,7 @@ are not set, unless the application itself sets them explicitly.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;java.nio.ByteBuffer</CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/nio/ByteBuffer.html" title="class or interface in java.nio">ByteBuffer</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/DatabaseEntry.html#getDataNIO()">getDataNIO</A></B>()</CODE>
<BR>
@@ -364,7 +364,7 @@ are not set, unless the application itself sets them explicitly.
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/db/DatabaseEntry.html#setDataNIO(java.nio.ByteBuffer)">setDataNIO</A></B>(java.nio.ByteBuffer&nbsp;data)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/DatabaseEntry.html#setDataNIO(java.nio.ByteBuffer)">setDataNIO</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/nio/ByteBuffer.html" title="class or interface in java.nio">ByteBuffer</A>&nbsp;data)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the java.nio.ByteBuffer.</TD>
@@ -372,7 +372,7 @@ are not set, unless the application itself sets them explicitly.
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/db/DatabaseEntry.html#setDataNIO(java.nio.ByteBuffer, int, int)">setDataNIO</A></B>(java.nio.ByteBuffer&nbsp;data,
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/DatabaseEntry.html#setDataNIO(java.nio.ByteBuffer, int, int)">setDataNIO</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/nio/ByteBuffer.html" title="class or interface in java.nio">ByteBuffer</A>&nbsp;data,
int&nbsp;offset,
int&nbsp;size)</CODE>
@@ -461,10 +461,10 @@ are not set, unless the application itself sets them explicitly.
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -524,7 +524,7 @@ public <B>DatabaseEntry</B>(byte[]&nbsp;data,
<A NAME="DatabaseEntry(java.nio.ByteBuffer)"><!-- --></A><H3>
DatabaseEntry</H3>
<PRE>
-public <B>DatabaseEntry</B>(java.nio.ByteBuffer&nbsp;data)</PRE>
+public <B>DatabaseEntry</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/nio/ByteBuffer.html" title="class or interface in java.nio">ByteBuffer</A>&nbsp;data)</PRE>
<DL>
<DD>Construct a DatabaseEntry with a given native I/O buffer.
<p>
@@ -834,7 +834,7 @@ public void <B>setSize</B>(int&nbsp;size)</PRE>
<A NAME="getDataNIO()"><!-- --></A><H3>
getDataNIO</H3>
<PRE>
-public java.nio.ByteBuffer <B>getDataNIO</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/nio/ByteBuffer.html" title="class or interface in java.nio">ByteBuffer</A> <B>getDataNIO</B>()</PRE>
<DL>
<DD>Return the java.nio.ByteBuffer.
<p>
@@ -852,7 +852,7 @@ public java.nio.ByteBuffer <B>getDataNIO</B>()</PRE>
<A NAME="setDataNIO(java.nio.ByteBuffer)"><!-- --></A><H3>
setDataNIO</H3>
<PRE>
-public void <B>setDataNIO</B>(java.nio.ByteBuffer&nbsp;data)</PRE>
+public void <B>setDataNIO</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/nio/ByteBuffer.html" title="class or interface in java.nio">ByteBuffer</A>&nbsp;data)</PRE>
<DL>
<DD>Sets the java.nio.ByteBuffer. The offset is set to zero; the size
is set to the length of the ByteBuffer, or to zero if null is passed.
@@ -867,7 +867,7 @@ public void <B>setDataNIO</B>(java.nio.ByteBuffer&nbsp;data)</PRE>
<A NAME="setDataNIO(java.nio.ByteBuffer, int, int)"><!-- --></A><H3>
setDataNIO</H3>
<PRE>
-public void <B>setDataNIO</B>(java.nio.ByteBuffer&nbsp;data,
+public void <B>setDataNIO</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/nio/ByteBuffer.html" title="class or interface in java.nio">ByteBuffer</A>&nbsp;data,
int&nbsp;offset,
int&nbsp;size)</PRE>
<DL>
@@ -1014,7 +1014,7 @@ This method may be called at any time during the life of the application.
<A NAME="equals(java.lang.Object)"><!-- --></A><H3>
equals</H3>
<PRE>
-public boolean <B>equals</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;o)</PRE>
+public boolean <B>equals</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;o)</PRE>
<DL>
<DD>Compares the data of two entries for byte-by-byte equality.
@@ -1031,7 +1031,7 @@ public boolean <B>equals</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java
partialOffset and partialLength.
<P>
<DD><DL>
-<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
</DD>
<DD><DL>
</DL>
@@ -1047,7 +1047,7 @@ public int <B>hashCode</B>()</PRE>
<DD>Returns a hash code based on the data value.
<P>
<DD><DL>
-<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
</DD>
<DD><DL>
</DL>
@@ -1078,7 +1078,7 @@ public int <B>hashCode</B>()</PRE>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -1114,6 +1114,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&n
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/DatabaseException.html b/db/docs/java/com/sleepycat/db/DatabaseException.html
index ca57ef49d..76dc3b936 100644
--- a/db/docs/java/com/sleepycat/db/DatabaseException.html
+++ b/db/docs/java/com/sleepycat/db/DatabaseException.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:45 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:56 EDT 2007 -->
<TITLE>
-DatabaseException (Oracle Corporation - Berkeley DB Java API)
+DatabaseException (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.DatabaseException class">
@@ -14,7 +14,7 @@ DatabaseException (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="DatabaseException (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="DatabaseException (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,20 +89,20 @@ com.sleepycat.db</FONT>
<BR>
Class DatabaseException</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
- <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">java.lang.Throwable</A>
- <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Exception.html" title="class or interface in java.lang">java.lang.Exception</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+ <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">java.lang.Throwable</A>
+ <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Exception.html" title="class or interface in java.lang">java.lang.Exception</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.DatabaseException</B>
</PRE>
<DL>
-<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/Serializable.html" title="class or interface in java.io">Serializable</A></DD>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Serializable.html" title="class or interface in java.io">Serializable</A></DD>
</DL>
<DL>
-<DT><B>Direct Known Subclasses:</B> <DD><A HREF="../../../com/sleepycat/db/DeadlockException.html" title="class in com.sleepycat.db">DeadlockException</A>, <A HREF="../../../com/sleepycat/db/MemoryException.html" title="class in com.sleepycat.db">MemoryException</A>, <A HREF="../../../com/sleepycat/db/ReplicationDuplicateMasterException.html" title="class in com.sleepycat.db">ReplicationDuplicateMasterException</A>, <A HREF="../../../com/sleepycat/db/ReplicationHandleDeadException.html" title="class in com.sleepycat.db">ReplicationHandleDeadException</A>, <A HREF="../../../com/sleepycat/db/ReplicationHoldElectionException.html" title="class in com.sleepycat.db">ReplicationHoldElectionException</A>, <A HREF="../../../com/sleepycat/db/ReplicationJoinFailureException.html" title="class in com.sleepycat.db">ReplicationJoinFailureException</A>, <A HREF="../../../com/sleepycat/db/ReplicationLockoutException.html" title="class in com.sleepycat.db">ReplicationLockoutException</A>, <A HREF="../../../com/sleepycat/db/ReplicationSiteUnavailableException.html" title="class in com.sleepycat.db">ReplicationSiteUnavailableException</A>, <A HREF="../../../com/sleepycat/db/RunRecoveryException.html" title="class in com.sleepycat.db">RunRecoveryException</A>, <A HREF="../../../com/sleepycat/db/UpdateConflictException.html" title="class in com.sleepycat.db">UpdateConflictException</A>, <A HREF="../../../com/sleepycat/db/VersionMismatchException.html" title="class in com.sleepycat.db">VersionMismatchException</A></DD>
+<DT><B>Direct Known Subclasses:</B> <DD><A HREF="../../../com/sleepycat/db/DeadlockException.html" title="class in com.sleepycat.db">DeadlockException</A>, <A HREF="../../../com/sleepycat/db/MemoryException.html" title="class in com.sleepycat.db">MemoryException</A>, <A HREF="../../../com/sleepycat/db/ReplicationDuplicateMasterException.html" title="class in com.sleepycat.db">ReplicationDuplicateMasterException</A>, <A HREF="../../../com/sleepycat/db/ReplicationHandleDeadException.html" title="class in com.sleepycat.db">ReplicationHandleDeadException</A>, <A HREF="../../../com/sleepycat/db/ReplicationHoldElectionException.html" title="class in com.sleepycat.db">ReplicationHoldElectionException</A>, <A HREF="../../../com/sleepycat/db/ReplicationJoinFailureException.html" title="class in com.sleepycat.db">ReplicationJoinFailureException</A>, <A HREF="../../../com/sleepycat/db/ReplicationLeaseExpiredException.html" title="class in com.sleepycat.db">ReplicationLeaseExpiredException</A>, <A HREF="../../../com/sleepycat/db/ReplicationLeaseTimeoutException.html" title="class in com.sleepycat.db">ReplicationLeaseTimeoutException</A>, <A HREF="../../../com/sleepycat/db/ReplicationLockoutException.html" title="class in com.sleepycat.db">ReplicationLockoutException</A>, <A HREF="../../../com/sleepycat/db/ReplicationSiteUnavailableException.html" title="class in com.sleepycat.db">ReplicationSiteUnavailableException</A>, <A HREF="../../../com/sleepycat/db/RunRecoveryException.html" title="class in com.sleepycat.db">RunRecoveryException</A>, <A HREF="../../../com/sleepycat/db/VersionMismatchException.html" title="class in com.sleepycat.db">VersionMismatchException</A></DD>
</DL>
<HR>
<DL>
-<DT><PRE>public class <B>DatabaseException</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Exception.html" title="class or interface in java.lang">Exception</A></DL>
+<DT><PRE>public class <B>DatabaseException</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Exception.html" title="class or interface in java.lang">Exception</A></DL>
</PRE>
<P>
@@ -131,20 +131,20 @@ requested key does not appear in the database.
<B>Constructor Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><B><A HREF="../../../com/sleepycat/db/DatabaseException.html#DatabaseException(java.lang.String)">DatabaseException</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;s)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/DatabaseException.html#DatabaseException(java.lang.String)">DatabaseException</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;s)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Construct an exception with the specified message.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><B><A HREF="../../../com/sleepycat/db/DatabaseException.html#DatabaseException(java.lang.String, int)">DatabaseException</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;s,
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/DatabaseException.html#DatabaseException(java.lang.String, int)">DatabaseException</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;s,
int&nbsp;errno)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Construct an exception with the specified message and error number.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><B><A HREF="../../../com/sleepycat/db/DatabaseException.html#DatabaseException(java.lang.String, int, com.sleepycat.db.Environment)">DatabaseException</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;s,
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/DatabaseException.html#DatabaseException(java.lang.String, int, com.sleepycat.db.Environment)">DatabaseException</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;s,
int&nbsp;errno,
<A HREF="../../../com/sleepycat/db/Environment.html" title="class in com.sleepycat.db">Environment</A>&nbsp;dbenv)</CODE>
@@ -180,7 +180,7 @@ requested key does not appear in the database.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/DatabaseException.html#toString()">toString</A></B>()</CODE>
<BR>
@@ -190,19 +190,19 @@ requested key does not appear in the database.
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Throwable"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang">fillInStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#getCause()" title="class or interface in java.lang">getCause</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang">getLocalizedMessage</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang">getMessage</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang">getStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang">initCause</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement[])" title="class or interface in java.lang">setStackTrace</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang">fillInStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getCause()" title="class or interface in java.lang">getCause</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang">getLocalizedMessage</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang">getMessage</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang">getStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang">initCause</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement[])" title="class or interface in java.lang">setStackTrace</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -221,7 +221,7 @@ requested key does not appear in the database.
<A NAME="DatabaseException(java.lang.String)"><!-- --></A><H3>
DatabaseException</H3>
<PRE>
-public <B>DatabaseException</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;s)</PRE>
+public <B>DatabaseException</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;s)</PRE>
<DL>
<DD>Construct an exception with the specified message.
<P>
@@ -231,7 +231,7 @@ public <B>DatabaseException</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/j
<A NAME="DatabaseException(java.lang.String, int)"><!-- --></A><H3>
DatabaseException</H3>
<PRE>
-public <B>DatabaseException</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;s,
+public <B>DatabaseException</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;s,
int&nbsp;errno)</PRE>
<DL>
<DD>Construct an exception with the specified message and error number.
@@ -242,7 +242,7 @@ public <B>DatabaseException</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/j
<A NAME="DatabaseException(java.lang.String, int, com.sleepycat.db.Environment)"><!-- --></A><H3>
DatabaseException</H3>
<PRE>
-public <B>DatabaseException</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;s,
+public <B>DatabaseException</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;s,
int&nbsp;errno,
<A HREF="../../../com/sleepycat/db/Environment.html" title="class in com.sleepycat.db">Environment</A>&nbsp;dbenv)</PRE>
<DL>
@@ -297,12 +297,12 @@ public int <B>getErrno</B>()</PRE>
<A NAME="toString()"><!-- --></A><H3>
toString</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
<DL>
<DD>
<P>
<DD><DL>
-<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A></CODE></DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A></CODE></DL>
</DD>
<DD><DL>
</DL>
@@ -333,7 +333,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" tit
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -369,6 +369,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&n
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/DatabaseStats.html b/db/docs/java/com/sleepycat/db/DatabaseStats.html
index 81df857e8..792b62ac3 100644
--- a/db/docs/java/com/sleepycat/db/DatabaseStats.html
+++ b/db/docs/java/com/sleepycat/db/DatabaseStats.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:45 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:56 EDT 2007 -->
<TITLE>
-DatabaseStats (Oracle Corporation - Berkeley DB Java API)
+DatabaseStats (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.DatabaseStats class">
@@ -14,7 +14,7 @@ DatabaseStats (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="DatabaseStats (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="DatabaseStats (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,7 +89,7 @@ com.sleepycat.db</FONT>
<BR>
Class DatabaseStats</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.DatabaseStats</B>
</PRE>
<DL>
@@ -97,7 +97,7 @@ Class DatabaseStats</H2>
</DL>
<HR>
<DL>
-<DT><PRE>public abstract class <B>DatabaseStats</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
+<DT><PRE>public abstract class <B>DatabaseStats</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
</PRE>
<P>
@@ -121,10 +121,10 @@ Statistics for a single database.
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -154,7 +154,7 @@ Statistics for a single database.
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -190,6 +190,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;METHOD</FONT></TD>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/DatabaseType.html b/db/docs/java/com/sleepycat/db/DatabaseType.html
index 5b58e7980..712513eec 100644
--- a/db/docs/java/com/sleepycat/db/DatabaseType.html
+++ b/db/docs/java/com/sleepycat/db/DatabaseType.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:45 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:56 EDT 2007 -->
<TITLE>
-DatabaseType (Oracle Corporation - Berkeley DB Java API)
+DatabaseType (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.DatabaseType class">
@@ -14,7 +14,7 @@ DatabaseType (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="DatabaseType (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="DatabaseType (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,12 +89,12 @@ com.sleepycat.db</FONT>
<BR>
Class DatabaseType</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.DatabaseType</B>
</PRE>
<HR>
<DL>
-<DT><PRE>public final class <B>DatabaseType</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
+<DT><PRE>public final class <B>DatabaseType</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
</PRE>
<P>
@@ -165,7 +165,7 @@ Database types.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/DatabaseType.html#toString()">toString</A></B>()</CODE>
<BR>
@@ -175,10 +175,10 @@ Database types.
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -272,12 +272,12 @@ public static final <A HREF="../../../com/sleepycat/db/DatabaseType.html" title=
<A NAME="toString()"><!-- --></A><H3>
toString</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
<DL>
<DD>
<P>
<DD><DL>
-<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
</DD>
<DD><DL>
</DL>
@@ -308,7 +308,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" tit
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -344,6 +344,6 @@ DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/DeadlockException.html b/db/docs/java/com/sleepycat/db/DeadlockException.html
index abe2cad54..a62b261df 100644
--- a/db/docs/java/com/sleepycat/db/DeadlockException.html
+++ b/db/docs/java/com/sleepycat/db/DeadlockException.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:45 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:56 EDT 2007 -->
<TITLE>
-DeadlockException (Oracle Corporation - Berkeley DB Java API)
+DeadlockException (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.DeadlockException class">
@@ -14,7 +14,7 @@ DeadlockException (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="DeadlockException (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="DeadlockException (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,14 +89,14 @@ com.sleepycat.db</FONT>
<BR>
Class DeadlockException</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
- <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">java.lang.Throwable</A>
- <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Exception.html" title="class or interface in java.lang">java.lang.Exception</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+ <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">java.lang.Throwable</A>
+ <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Exception.html" title="class or interface in java.lang">java.lang.Exception</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">com.sleepycat.db.DatabaseException</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.DeadlockException</B>
</PRE>
<DL>
-<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/Serializable.html" title="class or interface in java.io">Serializable</A></DD>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Serializable.html" title="class or interface in java.io">Serializable</A></DD>
</DL>
<DL>
<DT><B>Direct Known Subclasses:</B> <DD><A HREF="../../../com/sleepycat/db/LockNotGrantedException.html" title="class in com.sleepycat.db">LockNotGrantedException</A></DD>
@@ -142,19 +142,19 @@ configured to not wait for locks.
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Throwable"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang">fillInStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#getCause()" title="class or interface in java.lang">getCause</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang">getLocalizedMessage</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang">getMessage</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang">getStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang">initCause</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement[])" title="class or interface in java.lang">setStackTrace</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang">fillInStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getCause()" title="class or interface in java.lang">getCause</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang">getLocalizedMessage</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang">getMessage</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang">getStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang">initCause</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement[])" title="class or interface in java.lang">setStackTrace</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -184,7 +184,7 @@ configured to not wait for locks.
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -220,6 +220,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;METHOD</FONT></TD>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/Environment.html b/db/docs/java/com/sleepycat/db/Environment.html
index 1ce92370a..3bc44d1e7 100644
--- a/db/docs/java/com/sleepycat/db/Environment.html
+++ b/db/docs/java/com/sleepycat/db/Environment.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:45 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:57 EDT 2007 -->
<TITLE>
-Environment (Oracle Corporation - Berkeley DB Java API)
+Environment (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.Environment class">
@@ -14,7 +14,7 @@ Environment (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Environment (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Environment (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -73,9 +73,9 @@ function windowTitle()
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
- SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+ SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
-DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_top"></A>
@@ -89,12 +89,12 @@ com.sleepycat.db</FONT>
<BR>
Class Environment</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.Environment</B>
</PRE>
<HR>
<DL>
-<DT><PRE>public class <B>Environment</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
+<DT><PRE>public class <B>Environment</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
</PRE>
<P>
@@ -147,40 +147,7 @@ whether or not it throws an exception.
<HR>
<P>
-<!-- =========== FIELD SUMMARY =========== -->
-<A NAME="field_summary"><!-- --></A>
-<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
-<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
-<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
-<B>Field Summary</B></FONT></TH>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/db/Environment.html#CHECKPOINTER_NAME">CHECKPOINTER_NAME</A></B></CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The name of the Checkpointer daemon thread.</TD>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/db/Environment.html#CLEANER_NAME">CLEANER_NAME</A></B></CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The name of the cleaner daemon thread.</TD>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/db/Environment.html#INCOMP_NAME">INCOMP_NAME</A></B></CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The name of the IN Compressor daemon thread.</TD>
-</TR>
-</TABLE>
-&nbsp;
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<A NAME="constructor_summary"><!-- --></A>
@@ -190,7 +157,7 @@ whether or not it throws an exception.
<B>Constructor Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><B><A HREF="../../../com/sleepycat/db/Environment.html#Environment(java.io.File, com.sleepycat.db.EnvironmentConfig)">Environment</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/File.html" title="class or interface in java.io">File</A>&nbsp;envHome,
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/Environment.html#Environment(java.io.File, com.sleepycat.db.EnvironmentConfig)">Environment</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/File.html" title="class or interface in java.io">File</A>&nbsp;envHome,
<A HREF="../../../com/sleepycat/db/EnvironmentConfig.html" title="class in com.sleepycat.db">EnvironmentConfig</A>&nbsp;envConfig)</CODE>
<BR>
@@ -209,6 +176,15 @@ whether or not it throws an exception.
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../com/sleepycat/db/Transaction.html" title="class in com.sleepycat.db">Transaction</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/Environment.html#beginCDSGroup()">beginCDSGroup</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Allocate a locker ID in an environment configured for Berkeley DB
+ Concurrent Data Store applications.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../com/sleepycat/db/Transaction.html" title="class in com.sleepycat.db">Transaction</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/Environment.html#beginTransaction(com.sleepycat.db.Transaction, com.sleepycat.db.TransactionConfig)">beginTransaction</A></B>(<A HREF="../../../com/sleepycat/db/Transaction.html" title="class in com.sleepycat.db">Transaction</A>&nbsp;parent,
<A HREF="../../../com/sleepycat/db/TransactionConfig.html" title="class in com.sleepycat.db">TransactionConfig</A>&nbsp;txnConfig)</CODE>
@@ -250,7 +226,7 @@ whether or not it throws an exception.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;int</CODE></FONT></TD>
+<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/Environment.html#electReplicationMaster(int, int)">electReplicationMaster</A></B>(int&nbsp;nsites,
int&nbsp;nvotes)</CODE>
@@ -276,7 +252,7 @@ whether or not it throws an exception.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/File.html" title="class or interface in java.io">File</A>[]</CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/File.html" title="class or interface in java.io">File</A>[]</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/Environment.html#getArchiveDatabases()">getArchiveDatabases</A></B>()</CODE>
<BR>
@@ -285,7 +261,7 @@ whether or not it throws an exception.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/File.html" title="class or interface in java.io">File</A>[]</CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/File.html" title="class or interface in java.io">File</A>[]</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/Environment.html#getArchiveLogFiles(boolean)">getArchiveLogFiles</A></B>(boolean&nbsp;includeInUse)</CODE>
<BR>
@@ -318,7 +294,7 @@ whether or not it throws an exception.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/File.html" title="class or interface in java.io">File</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/File.html" title="class or interface in java.io">File</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/Environment.html#getHome()">getHome</A></B>()</CODE>
<BR>
@@ -345,7 +321,7 @@ whether or not it throws an exception.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/Environment.html#getLogFileName(com.sleepycat.db.LogSequenceNumber)">getLogFileName</A></B>(<A HREF="../../../com/sleepycat/db/LogSequenceNumber.html" title="class in com.sleepycat.db">LogSequenceNumber</A>&nbsp;lsn)</CODE>
<BR>
@@ -378,6 +354,14 @@ whether or not it throws an exception.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../com/sleepycat/db/ReplicationManagerStats.html" title="class in com.sleepycat.db">ReplicationManagerStats</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/Environment.html#getReplicationManagerStats(com.sleepycat.db.StatsConfig)">getReplicationManagerStats</A></B>(<A HREF="../../../com/sleepycat/db/StatsConfig.html" title="class in com.sleepycat.db">StatsConfig</A>&nbsp;config)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the database environment's replication manager statistics.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../com/sleepycat/db/ReplicationStats.html" title="class in com.sleepycat.db">ReplicationStats</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/Environment.html#getReplicationStats(com.sleepycat.db.StatsConfig)">getReplicationStats</A></B>(<A HREF="../../../com/sleepycat/db/StatsConfig.html" title="class in com.sleepycat.db">StatsConfig</A>&nbsp;config)</CODE>
@@ -426,7 +410,7 @@ whether or not it throws an exception.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/Environment.html#getVersionString()">getVersionString</A></B>()</CODE>
<BR>
@@ -454,7 +438,7 @@ whether or not it throws an exception.
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/Environment.html#logPrint(com.sleepycat.db.Transaction, java.lang.String)">logPrint</A></B>(<A HREF="../../../com/sleepycat/db/Transaction.html" title="class in com.sleepycat.db">Transaction</A>&nbsp;txn,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;message)</CODE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;message)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Append an informational message to the Berkeley DB database environment log files.</TD>
@@ -472,8 +456,8 @@ whether or not it throws an exception.
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../com/sleepycat/db/Database.html" title="class in com.sleepycat.db">Database</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/Environment.html#openDatabase(com.sleepycat.db.Transaction, java.lang.String, java.lang.String, com.sleepycat.db.DatabaseConfig)">openDatabase</A></B>(<A HREF="../../../com/sleepycat/db/Transaction.html" title="class in com.sleepycat.db">Transaction</A>&nbsp;txn,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
<A HREF="../../../com/sleepycat/db/DatabaseConfig.html" title="class in com.sleepycat.db">DatabaseConfig</A>&nbsp;config)</CODE>
<BR>
@@ -491,8 +475,8 @@ whether or not it throws an exception.
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../com/sleepycat/db/SecondaryDatabase.html" title="class in com.sleepycat.db">SecondaryDatabase</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/Environment.html#openSecondaryDatabase(com.sleepycat.db.Transaction, java.lang.String, java.lang.String, com.sleepycat.db.Database, com.sleepycat.db.SecondaryConfig)">openSecondaryDatabase</A></B>(<A HREF="../../../com/sleepycat/db/Transaction.html" title="class in com.sleepycat.db">Transaction</A>&nbsp;txn,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
<A HREF="../../../com/sleepycat/db/Database.html" title="class in com.sleepycat.db">Database</A>&nbsp;primaryDatabase,
<A HREF="../../../com/sleepycat/db/SecondaryConfig.html" title="class in com.sleepycat.db">SecondaryConfig</A>&nbsp;config)</CODE>
@@ -538,7 +522,7 @@ whether or not it throws an exception.
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/db/Environment.html#remove(java.io.File, boolean, com.sleepycat.db.EnvironmentConfig)">remove</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/File.html" title="class or interface in java.io">File</A>&nbsp;home,
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/Environment.html#remove(java.io.File, boolean, com.sleepycat.db.EnvironmentConfig)">remove</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/File.html" title="class or interface in java.io">File</A>&nbsp;home,
boolean&nbsp;force,
<A HREF="../../../com/sleepycat/db/EnvironmentConfig.html" title="class in com.sleepycat.db">EnvironmentConfig</A>&nbsp;config)</CODE>
@@ -549,8 +533,8 @@ whether or not it throws an exception.
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/Environment.html#removeDatabase(com.sleepycat.db.Transaction, java.lang.String, java.lang.String)">removeDatabase</A></B>(<A HREF="../../../com/sleepycat/db/Transaction.html" title="class in com.sleepycat.db">Transaction</A>&nbsp;txn,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName)</CODE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
@@ -568,9 +552,9 @@ Remove a database.</TD>
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/Environment.html#renameDatabase(com.sleepycat.db.Transaction, java.lang.String, java.lang.String, java.lang.String)">renameDatabase</A></B>(<A HREF="../../../com/sleepycat/db/Transaction.html" title="class in com.sleepycat.db">Transaction</A>&nbsp;txn,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;oldDatabaseName,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;newDatabaseName)</CODE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;oldDatabaseName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;newDatabaseName)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
@@ -588,7 +572,7 @@ Rename a database.</TD>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/db/Environment.html#resetFileID(java.lang.String, boolean)">resetFileID</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;filename,
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/Environment.html#resetFileID(java.lang.String, boolean)">resetFileID</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;filename,
boolean&nbsp;encrypted)</CODE>
<BR>
@@ -598,7 +582,7 @@ Rename a database.</TD>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/db/Environment.html#resetLogSequenceNumber(java.lang.String, boolean)">resetLogSequenceNumber</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;filename,
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/Environment.html#resetLogSequenceNumber(java.lang.String, boolean)">resetLogSequenceNumber</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;filename,
boolean&nbsp;encrypted)</CODE>
<BR>
@@ -662,66 +646,15 @@ Rename a database.</TD>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
<P>
-<!-- ============ FIELD DETAIL =========== -->
-
-<A NAME="field_detail"><!-- --></A>
-<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
-<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
-<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
-<B>Field Detail</B></FONT></TH>
-</TR>
-</TABLE>
-
-<A NAME="CLEANER_NAME"><!-- --></A><H3>
-CLEANER_NAME</H3>
-<PRE>
-public static final <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>CLEANER_NAME</B></PRE>
-<DL>
-<DD>The name of the cleaner daemon thread. This constant is passed to
- an ExceptionEvent's threadName argument when an exception is
- thrown in the cleaner daemon thread.
-<P>
-<DL>
-<DT><B>See Also:</B><DD><A HREF="../../../constant-values.html#com.sleepycat.db.Environment.CLEANER_NAME">Constant Field Values</A></DL>
-</DL>
-<HR>
-
-<A NAME="INCOMP_NAME"><!-- --></A><H3>
-INCOMP_NAME</H3>
-<PRE>
-public static final <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>INCOMP_NAME</B></PRE>
-<DL>
-<DD>The name of the IN Compressor daemon thread. This constant is passed to
- an ExceptionEvent's threadName argument when an exception is
- thrown in the IN Compressor daemon thread.
-<P>
-<DL>
-<DT><B>See Also:</B><DD><A HREF="../../../constant-values.html#com.sleepycat.db.Environment.INCOMP_NAME">Constant Field Values</A></DL>
-</DL>
-<HR>
-
-<A NAME="CHECKPOINTER_NAME"><!-- --></A><H3>
-CHECKPOINTER_NAME</H3>
-<PRE>
-public static final <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>CHECKPOINTER_NAME</B></PRE>
-<DL>
-<DD>The name of the Checkpointer daemon thread. This constant is passed to
- an ExceptionEvent's threadName argument when an exception is
- thrown in the Checkpointer daemon thread.
-<P>
-<DL>
-<DT><B>See Also:</B><DD><A HREF="../../../constant-values.html#com.sleepycat.db.Environment.CHECKPOINTER_NAME">Constant Field Values</A></DL>
-</DL>
-
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<A NAME="constructor_detail"><!-- --></A>
@@ -735,10 +668,10 @@ public static final <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Str
<A NAME="Environment(java.io.File, com.sleepycat.db.EnvironmentConfig)"><!-- --></A><H3>
Environment</H3>
<PRE>
-public <B>Environment</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/File.html" title="class or interface in java.io">File</A>&nbsp;envHome,
+public <B>Environment</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/File.html" title="class or interface in java.io">File</A>&nbsp;envHome,
<A HREF="../../../com/sleepycat/db/EnvironmentConfig.html" title="class in com.sleepycat.db">EnvironmentConfig</A>&nbsp;envConfig)
throws <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A>,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/FileNotFoundException.html" title="class or interface in java.io">FileNotFoundException</A></PRE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/FileNotFoundException.html" title="class or interface in java.io">FileNotFoundException</A></PRE>
<DL>
<DD>Create a database environment handle.
<p>
@@ -754,11 +687,11 @@ public <B>Environment</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io
<p>
<p>
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
<p>
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/FileNotFoundException.html" title="class or interface in java.io">FileNotFoundException</A></CODE></DL>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/FileNotFoundException.html" title="class or interface in java.io">FileNotFoundException</A></CODE></DL>
</DL>
<!-- ============ METHOD DETAIL ========== -->
@@ -774,7 +707,7 @@ public <B>Environment</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io
<A NAME="getHome()"><!-- --></A><H3>
getHome</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/File.html" title="class or interface in java.io">File</A> <B>getHome</B>()
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/File.html" title="class or interface in java.io">File</A> <B>getHome</B>()
throws <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></PRE>
<DL>
<DD>Return the database environment's home directory.
@@ -972,11 +905,11 @@ public void <B>close</B>()
<A NAME="remove(java.io.File, boolean, com.sleepycat.db.EnvironmentConfig)"><!-- --></A><H3>
remove</H3>
<PRE>
-public static void <B>remove</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/File.html" title="class or interface in java.io">File</A>&nbsp;home,
+public static void <B>remove</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/File.html" title="class or interface in java.io">File</A>&nbsp;home,
boolean&nbsp;force,
<A HREF="../../../com/sleepycat/db/EnvironmentConfig.html" title="class in com.sleepycat.db">EnvironmentConfig</A>&nbsp;config)
throws <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A>,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/FileNotFoundException.html" title="class or interface in java.io">FileNotFoundException</A></PRE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/FileNotFoundException.html" title="class or interface in java.io">FileNotFoundException</A></PRE>
<DL>
<DD>Destroy a database environment.
<p>
@@ -1035,7 +968,7 @@ string, which is equivalent to ASCII for Latin characters.
<p>
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/FileNotFoundException.html" title="class or interface in java.io">FileNotFoundException</A></CODE></DL>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/FileNotFoundException.html" title="class or interface in java.io">FileNotFoundException</A></CODE></DL>
</DD>
</DL>
<HR>
@@ -1054,7 +987,7 @@ public void <B>setConfig</B>(<A HREF="../../../com/sleepycat/db/EnvironmentConfi
<p>
<p>
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.</DL>
</DD>
@@ -1065,11 +998,11 @@ public void <B>setConfig</B>(<A HREF="../../../com/sleepycat/db/EnvironmentConfi
openDatabase</H3>
<PRE>
public <A HREF="../../../com/sleepycat/db/Database.html" title="class in com.sleepycat.db">Database</A> <B>openDatabase</B>(<A HREF="../../../com/sleepycat/db/Transaction.html" title="class in com.sleepycat.db">Transaction</A>&nbsp;txn,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
<A HREF="../../../com/sleepycat/db/DatabaseConfig.html" title="class in com.sleepycat.db">DatabaseConfig</A>&nbsp;config)
throws <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A>,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/FileNotFoundException.html" title="class or interface in java.io">FileNotFoundException</A></PRE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/FileNotFoundException.html" title="class or interface in java.io">FileNotFoundException</A></PRE>
<DL>
<DD>Open a database.
<p>
@@ -1119,7 +1052,7 @@ Queue format.
<p><DD><CODE>config</CODE> - The database open attributes. If null, default attributes are used.
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/FileNotFoundException.html" title="class or interface in java.io">FileNotFoundException</A></CODE></DL>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/FileNotFoundException.html" title="class or interface in java.io">FileNotFoundException</A></CODE></DL>
</DD>
</DL>
<HR>
@@ -1128,12 +1061,12 @@ Queue format.
openSecondaryDatabase</H3>
<PRE>
public <A HREF="../../../com/sleepycat/db/SecondaryDatabase.html" title="class in com.sleepycat.db">SecondaryDatabase</A> <B>openSecondaryDatabase</B>(<A HREF="../../../com/sleepycat/db/Transaction.html" title="class in com.sleepycat.db">Transaction</A>&nbsp;txn,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
<A HREF="../../../com/sleepycat/db/Database.html" title="class in com.sleepycat.db">Database</A>&nbsp;primaryDatabase,
<A HREF="../../../com/sleepycat/db/SecondaryConfig.html" title="class in com.sleepycat.db">SecondaryConfig</A>&nbsp;config)
throws <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A>,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/FileNotFoundException.html" title="class or interface in java.io">FileNotFoundException</A></PRE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/FileNotFoundException.html" title="class or interface in java.io">FileNotFoundException</A></PRE>
<DL>
<DD>Open a database.
<p>
@@ -1184,7 +1117,7 @@ Queue format.
<p><DD><CODE>config</CODE> - The secondary database open attributes. If null, default attributes are used.
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/FileNotFoundException.html" title="class or interface in java.io">FileNotFoundException</A></CODE></DL>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/FileNotFoundException.html" title="class or interface in java.io">FileNotFoundException</A></CODE></DL>
</DD>
</DL>
<HR>
@@ -1193,10 +1126,10 @@ Queue format.
removeDatabase</H3>
<PRE>
public void <B>removeDatabase</B>(<A HREF="../../../com/sleepycat/db/Transaction.html" title="class in com.sleepycat.db">Transaction</A>&nbsp;txn,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName)
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName)
throws <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A>,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/FileNotFoundException.html" title="class or interface in java.io">FileNotFoundException</A></PRE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/FileNotFoundException.html" title="class or interface in java.io">FileNotFoundException</A></PRE>
<DL>
<DD><p>
Remove a database.
@@ -1238,7 +1171,7 @@ string, which is equivalent to ASCII for Latin characters.
deadlock.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/FileNotFoundException.html" title="class or interface in java.io">FileNotFoundException</A></CODE></DL>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/FileNotFoundException.html" title="class or interface in java.io">FileNotFoundException</A></CODE></DL>
</DD>
</DL>
<HR>
@@ -1247,11 +1180,11 @@ deadlock.
renameDatabase</H3>
<PRE>
public void <B>renameDatabase</B>(<A HREF="../../../com/sleepycat/db/Transaction.html" title="class in com.sleepycat.db">Transaction</A>&nbsp;txn,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;oldDatabaseName,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;newDatabaseName)
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;oldDatabaseName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;newDatabaseName)
throws <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A>,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/FileNotFoundException.html" title="class or interface in java.io">FileNotFoundException</A></PRE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/FileNotFoundException.html" title="class or interface in java.io">FileNotFoundException</A></PRE>
<DL>
<DD><p>
Rename a database.
@@ -1296,7 +1229,31 @@ string, which is equivalent to ASCII for Latin characters.
deadlock.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/FileNotFoundException.html" title="class or interface in java.io">FileNotFoundException</A></CODE></DL>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/FileNotFoundException.html" title="class or interface in java.io">FileNotFoundException</A></CODE></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="beginCDSGroup()"><!-- --></A><H3>
+beginCDSGroup</H3>
+<PRE>
+public <A HREF="../../../com/sleepycat/db/Transaction.html" title="class in com.sleepycat.db">Transaction</A> <B>beginCDSGroup</B>()
+ throws <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></PRE>
+<DL>
+<DD>Allocate a locker ID in an environment configured for Berkeley DB
+ Concurrent Data Store applications. Returns a <A HREF="../../../com/sleepycat/db/Transaction.html" title="class in com.sleepycat.db"><CODE>Transaction</CODE></A> object
+ that uniquely identifies the locker ID. Calling the <A HREF="../../../com/sleepycat/db/Transaction.html#commit()"><CODE>Transaction.commit()</CODE></A> method will discard the allocated locker ID.
+ <p>
+ See
+ <a href="../../../../ref/cam/intro.html" target="_top">Berkeley DB Concurrent Data Store applications</a>
+ for more information about when this is required.
+ <p>
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>A transaction handle that wraps a CDS locker ID.
+<DT><B>Throws:</B>
+<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE></DL>
</DD>
</DL>
<HR>
@@ -1505,7 +1462,7 @@ public <A HREF="../../../com/sleepycat/db/LogCursor.html" title="class in com.sl
<A NAME="getLogFileName(com.sleepycat.db.LogSequenceNumber)"><!-- --></A><H3>
getLogFileName</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>getLogFileName</B>(<A HREF="../../../com/sleepycat/db/LogSequenceNumber.html" title="class in com.sleepycat.db">LogSequenceNumber</A>&nbsp;lsn)
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>getLogFileName</B>(<A HREF="../../../com/sleepycat/db/LogSequenceNumber.html" title="class in com.sleepycat.db">LogSequenceNumber</A>&nbsp;lsn)
throws <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></PRE>
<DL>
<DD>Return the name of the log file that contains the log record
@@ -1527,7 +1484,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" tit
<p>
<p>
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.</DL>
</DD>
@@ -1658,9 +1615,9 @@ public void <B>replicationManagerStart</B>(int&nbsp;numthreads,
<A NAME="electReplicationMaster(int, int)"><!-- --></A><H3>
electReplicationMaster</H3>
<PRE>
-public int <B>electReplicationMaster</B>(int&nbsp;nsites,
- int&nbsp;nvotes)
- throws <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></PRE>
+public void <B>electReplicationMaster</B>(int&nbsp;nsites,
+ int&nbsp;nvotes)
+ throws <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></PRE>
<DL>
<DD>Hold an election for the master of a replication group.
<p>
@@ -1692,8 +1649,6 @@ public int <B>electReplicationMaster</B>(int&nbsp;nsites,
fewer votes are required to win an election as that can potentially
lead to multiple masters in the face of a network partition.
<p>
-<DT><B>Returns:</B><DD>The newly elected master's ID.
- <p>
<p>
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.</DL>
@@ -1777,8 +1732,7 @@ public void <B>syncReplication</B>()
half of setting <A HREF="../../../com/sleepycat/db/ReplicationConfig.html#DELAYCLIENT"><CODE>ReplicationConfig.DELAYCLIENT</CODE></A> with
<A HREF="../../../com/sleepycat/db/Environment.html#setReplicationConfig(com.sleepycat.db.ReplicationConfig, boolean)"><CODE>setReplicationConfig(com.sleepycat.db.ReplicationConfig, boolean)</CODE></A>.
<p>
- When a client application receives a return value from <A HREF="../../../com/sleepycat/db/Environment.html#processReplicationMessage(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, int)"><CODE>processReplicationMessage(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, int)</CODE></A> where <A HREF="../../../com/sleepycat/db/ReplicationStatus.html#isNewMaster()"><CODE>ReplicationStatus.isNewMaster()</CODE></A>
- returns <code>true</code> and the application has configured delayed
+ When a new master is elected and the application has configured delayed
synchronization, the application must choose when to perform
synchronization by using this method. Otherwise the client will remain
unsynchronized and will ignore all new incoming log messages.
@@ -1916,6 +1870,27 @@ public <A HREF="../../../com/sleepycat/db/ReplicationStats.html" title="class in
</DL>
<HR>
+<A NAME="getReplicationManagerStats(com.sleepycat.db.StatsConfig)"><!-- --></A><H3>
+getReplicationManagerStats</H3>
+<PRE>
+public <A HREF="../../../com/sleepycat/db/ReplicationManagerStats.html" title="class in com.sleepycat.db">ReplicationManagerStats</A> <B>getReplicationManagerStats</B>(<A HREF="../../../com/sleepycat/db/StatsConfig.html" title="class in com.sleepycat.db">StatsConfig</A>&nbsp;config)
+ throws <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></PRE>
+<DL>
+<DD>Return the database environment's replication manager statistics.
+ <p>
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>config</CODE> - The statistics attributes. If null, default attributes are used.
+ <p>
+<DT><B>Returns:</B><DD>The database environment's replication manager statistics.
+ <p>
+ <p>
+<DT><B>Throws:</B>
+<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.</DL>
+</DD>
+</DL>
+<HR>
+
<A NAME="logFlush(com.sleepycat.db.LogSequenceNumber)"><!-- --></A><H3>
logFlush</H3>
<PRE>
@@ -1975,7 +1950,7 @@ public <A HREF="../../../com/sleepycat/db/LogSequenceNumber.html" title="class i
logPrint</H3>
<PRE>
public void <B>logPrint</B>(<A HREF="../../../com/sleepycat/db/Transaction.html" title="class in com.sleepycat.db">Transaction</A>&nbsp;txn,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;message)
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;message)
throws <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></PRE>
<DL>
<DD>Append an informational message to the Berkeley DB database environment log files.
@@ -2001,7 +1976,7 @@ public void <B>logPrint</B>(<A HREF="../../../com/sleepycat/db/Transaction.html"
<A NAME="getArchiveLogFiles(boolean)"><!-- --></A><H3>
getArchiveLogFiles</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/File.html" title="class or interface in java.io">File</A>[] <B>getArchiveLogFiles</B>(boolean&nbsp;includeInUse)
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/File.html" title="class or interface in java.io">File</A>[] <B>getArchiveLogFiles</B>(boolean&nbsp;includeInUse)
throws <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></PRE>
<DL>
<DD>Return the names of all of the log files that are no longer in use.
@@ -2044,7 +2019,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/File.html" title="
<A NAME="getArchiveDatabases()"><!-- --></A><H3>
getArchiveDatabases</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/File.html" title="class or interface in java.io">File</A>[] <B>getArchiveDatabases</B>()
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/File.html" title="class or interface in java.io">File</A>[] <B>getArchiveDatabases</B>()
throws <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></PRE>
<DL>
<DD>Return the names of the database files that need to be archived in
@@ -2129,7 +2104,7 @@ public <A HREF="../../../com/sleepycat/db/PreparedTransaction.html" title="class
<A NAME="resetFileID(java.lang.String, boolean)"><!-- --></A><H3>
resetFileID</H3>
<PRE>
-public void <B>resetFileID</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;filename,
+public void <B>resetFileID</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;filename,
boolean&nbsp;encrypted)
throws <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></PRE>
<DL>
@@ -2160,7 +2135,7 @@ public void <B>resetFileID</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/ja
<A NAME="resetLogSequenceNumber(java.lang.String, boolean)"><!-- --></A><H3>
resetLogSequenceNumber</H3>
<PRE>
-public void <B>resetLogSequenceNumber</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;filename,
+public void <B>resetLogSequenceNumber</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;filename,
boolean&nbsp;encrypted)
throws <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></PRE>
<DL>
@@ -2223,7 +2198,7 @@ performed using a specified <A HREF="../../../com/sleepycat/db/Environment.html"
<A NAME="getVersionString()"><!-- --></A><H3>
getVersionString</H3>
<PRE>
-public static <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>getVersionString</B>()</PRE>
+public static <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>getVersionString</B>()</PRE>
<DL>
<DD>Return the release version information, suitable for display.
<p>
@@ -2311,7 +2286,7 @@ This method may be called at any time during the life of the application.
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -2338,15 +2313,15 @@ This method may be called at any time during the life of the application.
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
- SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+ SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
-DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/EnvironmentConfig.html b/db/docs/java/com/sleepycat/db/EnvironmentConfig.html
index 0faeb587c..b02974862 100644
--- a/db/docs/java/com/sleepycat/db/EnvironmentConfig.html
+++ b/db/docs/java/com/sleepycat/db/EnvironmentConfig.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:45 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:57 EDT 2007 -->
<TITLE>
-EnvironmentConfig (Oracle Corporation - Berkeley DB Java API)
+EnvironmentConfig (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.EnvironmentConfig class">
@@ -14,7 +14,7 @@ EnvironmentConfig (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="EnvironmentConfig (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="EnvironmentConfig (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,15 +89,15 @@ com.sleepycat.db</FONT>
<BR>
Class EnvironmentConfig</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.EnvironmentConfig</B>
</PRE>
<DL>
-<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A></DD>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A></DD>
</DL>
<HR>
<DL>
-<DT><PRE>public class <B>EnvironmentConfig</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A><DT>implements <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A></DL>
+<DT><PRE>public class <B>EnvironmentConfig</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A><DT>implements <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A></DL>
</PRE>
<P>
@@ -159,7 +159,7 @@ mismatch occurs, an exception is thrown.
handle for an already open environment.
</ol>
<p>
-After an Environment has been constructed, it's mutable properties may
+After an Environment has been constructed, its mutable properties may
be changed using
<A HREF="../../../com/sleepycat/db/Environment.html#setConfig(com.sleepycat.db.EnvironmentConfig)"><CODE>Environment.setConfig(com.sleepycat.db.EnvironmentConfig)</CODE></A>.
<P>
@@ -213,7 +213,7 @@ be changed using
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#addDataDir(java.io.File)">addDataDir</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/File.html" title="class or interface in java.io">File</A>&nbsp;dataDir)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#addDataDir(java.io.File)">addDataDir</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/File.html" title="class or interface in java.io">File</A>&nbsp;dataDir)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the path of a directory to be used as the location of the access
@@ -222,10 +222,10 @@ be changed using
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#addDataDir(java.lang.String)">addDataDir</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;dataDir)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#addDataDir(java.lang.String)">addDataDir</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;dataDir)</CODE>
<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;<I>replaced by <A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#addDataDir(java.io.File)"><CODE>addDataDir(java.io.File)</CODE></A></I></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
@@ -243,7 +243,15 @@ be changed using
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the number of shared memory buffer pools, that is, the number
- of caches.</TD>
+ of cache regions.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;long</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#getCacheMax()">getCacheMax</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the maximum size of the cache.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
@@ -265,7 +273,7 @@ be changed using
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/File.html" title="class or interface in java.io">File</A>[]</CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/File.html" title="class or interface in java.io">File</A>[]</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#getDataDirs()">getDataDirs</A></B>()</CODE>
<BR>
@@ -327,7 +335,7 @@ be changed using
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#getErrorPrefix()">getErrorPrefix</A></B>()</CODE>
<BR>
@@ -335,7 +343,7 @@ be changed using
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/OutputStream.html" title="class or interface in java.io">OutputStream</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/OutputStream.html" title="class or interface in java.io">OutputStream</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#getErrorStream()">getErrorStream</A></B>()</CODE>
<BR>
@@ -471,7 +479,7 @@ be changed using
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/File.html" title="class or interface in java.io">File</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/File.html" title="class or interface in java.io">File</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#getLogDirectory()">getLogDirectory</A></B>()</CODE>
<BR>
@@ -568,7 +576,7 @@ be changed using
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;int</CODE></FONT></TD>
+<CODE>&nbsp;long</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#getMaxWriteSleep()">getMaxWriteSleep</A></B>()</CODE>
<BR>
@@ -584,7 +592,7 @@ be changed using
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/OutputStream.html" title="class or interface in java.io">OutputStream</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/OutputStream.html" title="class or interface in java.io">OutputStream</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#getMessageStream()">getMessageStream</A></B>()</CODE>
<BR>
@@ -743,7 +751,7 @@ be changed using
<TD><CODE><B><A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#getReplicationPriority()">getReplicationPriority</A></B>()</CODE>
<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the current environments priority.</TD>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the current environment's priority.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
@@ -808,7 +816,7 @@ be changed using
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/File.html" title="class or interface in java.io">File</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/File.html" title="class or interface in java.io">File</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#getTemporaryDirectory()">getTemporaryDirectory</A></B>()</CODE>
<BR>
@@ -821,8 +829,7 @@ be changed using
<TD><CODE><B><A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#getTestAndSetSpins()">getTestAndSetSpins</A></B>()</CODE>
<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the number of times test-and-set mutexes should spin before
- blocking.</TD>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;<I>replaced by <A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#getMutexTestAndSetSpins()"><CODE>getMutexTestAndSetSpins()</CODE></A></I></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
@@ -869,6 +876,14 @@ be changed using
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#getTxnNoWait()">getTxnNoWait</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return true if the transactions have been configured to not wait for locks by default.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#getTxnSnapshot()">getTxnSnapshot</A></B>()</CODE>
<BR>
@@ -886,7 +901,7 @@ be changed using
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Date.html" title="class or interface in java.util">Date</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Date.html" title="class or interface in java.util">Date</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#getTxnTimestamp()">getTxnTimestamp</A></B>()</CODE>
<BR>
@@ -924,11 +939,19 @@ be changed using
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#getVerboseDeadlock()">getVerboseDeadlock</A></B>()</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#getVerbose(com.sleepycat.db.VerboseConfig)">getVerbose</A></B>(<A HREF="../../../com/sleepycat/db/VerboseConfig.html" title="class in com.sleepycat.db">VerboseConfig</A>&nbsp;flag)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return if the database environment is configured to display
- additional information when doing deadlock detection.</TD>
+ a given type of verbose information.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#getVerboseDeadlock()">getVerboseDeadlock</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;<I>replaced by <A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#getVerbose(com.sleepycat.db.VerboseConfig)"><CODE>getVerbose(com.sleepycat.db.VerboseConfig)</CODE></A></I></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
@@ -936,8 +959,7 @@ be changed using
<TD><CODE><B><A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#getVerboseRecovery()">getVerboseRecovery</A></B>()</CODE>
<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return if the database environment is configured to display
- additional information when performing recovery.</TD>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;<I>replaced by <A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#getVerbose(com.sleepycat.db.VerboseConfig)"><CODE>getVerbose(com.sleepycat.db.VerboseConfig)</CODE></A></I></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
@@ -945,9 +967,7 @@ be changed using
<TD><CODE><B><A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#getVerboseRegister()">getVerboseRegister</A></B>()</CODE>
<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return if the database environment is configured to display
- additional information concerning support for the
- <A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setRegister(boolean)"><CODE>setRegister(boolean)</CODE></A> method.</TD>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;<I>replaced by <A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#getVerbose(com.sleepycat.db.VerboseConfig)"><CODE>getVerbose(com.sleepycat.db.VerboseConfig)</CODE></A></I></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
@@ -955,8 +975,7 @@ be changed using
<TD><CODE><B><A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#getVerboseReplication()">getVerboseReplication</A></B>()</CODE>
<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return if the database environment is configured to display
- additional information when processing replication messages.</TD>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;<I>replaced by <A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#getVerbose(com.sleepycat.db.VerboseConfig)"><CODE>getVerbose(com.sleepycat.db.VerboseConfig)</CODE></A></I></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
@@ -964,8 +983,7 @@ be changed using
<TD><CODE><B><A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#getVerboseWaitsFor()">getVerboseWaitsFor</A></B>()</CODE>
<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return if the database environment is configured to display the
- waits-for table when doing deadlock detection.</TD>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;<I>replaced by <A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#getVerbose(com.sleepycat.db.VerboseConfig)"><CODE>getVerbose(com.sleepycat.db.VerboseConfig)</CODE></A></I></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
@@ -1006,6 +1024,14 @@ caches.</TD>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setCacheMax(long)">setCacheMax</A></B>(long&nbsp;cacheMax)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the maximum cache size in bytes.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setCacheSize(long)">setCacheSize</A></B>(long&nbsp;cacheSize)</CODE>
<BR>
@@ -1060,7 +1086,7 @@ cache.</TD>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setEncrypted(java.lang.String)">setEncrypted</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;password)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setEncrypted(java.lang.String)">setEncrypted</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;password)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the password used to perform encryption and decryption.</TD>
@@ -1076,7 +1102,7 @@ cache.</TD>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setErrorPrefix(java.lang.String)">setErrorPrefix</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;errorPrefix)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setErrorPrefix(java.lang.String)">setErrorPrefix</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;errorPrefix)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the prefix string that appears before error messages.</TD>
@@ -1084,7 +1110,7 @@ cache.</TD>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setErrorStream(java.io.OutputStream)">setErrorStream</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/OutputStream.html" title="class or interface in java.io">OutputStream</A>&nbsp;errorStream)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setErrorStream(java.io.OutputStream)">setErrorStream</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/OutputStream.html" title="class or interface in java.io">OutputStream</A>&nbsp;errorStream)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set an OutputStream for displaying error messages.</TD>
@@ -1218,7 +1244,7 @@ locks.</TD>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setLogDirectory(java.io.File)">setLogDirectory</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/File.html" title="class or interface in java.io">File</A>&nbsp;logDirectory)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setLogDirectory(java.io.File)">setLogDirectory</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/File.html" title="class or interface in java.io">File</A>&nbsp;logDirectory)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the path of a directory to be used as the location of logging files.</TD>
@@ -1311,8 +1337,8 @@ locks.</TD>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setMaxWrite(int, int)">setMaxWrite</A></B>(int&nbsp;maxWrite,
- int&nbsp;maxWriteSleep)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setMaxWrite(int, long)">setMaxWrite</A></B>(int&nbsp;maxWrite,
+ long&nbsp;maxWriteSleep)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Limit the number of sequential write operations scheduled by the
@@ -1329,7 +1355,7 @@ locks.</TD>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setMessageStream(java.io.OutputStream)">setMessageStream</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/OutputStream.html" title="class or interface in java.io">OutputStream</A>&nbsp;messageStream)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setMessageStream(java.io.OutputStream)">setMessageStream</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/OutputStream.html" title="class or interface in java.io">OutputStream</A>&nbsp;messageStream)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set an OutputStream for displaying informational messages.</TD>
@@ -1487,7 +1513,7 @@ locks.</TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setReplicationPriority(int)">setReplicationPriority</A></B>(int&nbsp;priority)</CODE>
<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the current environments priority.</TD>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the current environment's priority.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
@@ -1518,7 +1544,7 @@ locks.</TD>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setRPCServer(java.lang.String, long, long)">setRPCServer</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;rpcServer,
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setRPCServer(java.lang.String, long, long)">setRPCServer</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;rpcServer,
long&nbsp;rpcClientTimeout,
long&nbsp;rpcServerTimeout)</CODE>
@@ -1566,7 +1592,7 @@ normal use.</TD>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setTemporaryDirectory(java.io.File)">setTemporaryDirectory</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/File.html" title="class or interface in java.io">File</A>&nbsp;temporaryDirectory)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setTemporaryDirectory(java.io.File)">setTemporaryDirectory</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/File.html" title="class or interface in java.io">File</A>&nbsp;temporaryDirectory)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the path of a directory to be used as the location of temporary
@@ -1575,10 +1601,10 @@ normal use.</TD>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setTemporaryDirectory(java.lang.String)">setTemporaryDirectory</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;dataDir)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setTemporaryDirectory(java.lang.String)">setTemporaryDirectory</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;dataDir)</CODE>
<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;<I>replaced by <A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setTemporaryDirectory(java.io.File)"><CODE>setTemporaryDirectory(java.io.File)</CODE></A></I></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
@@ -1586,8 +1612,7 @@ normal use.</TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setTestAndSetSpins(int)">setTestAndSetSpins</A></B>(int&nbsp;testAndSetSpins)</CODE>
<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the number of times test-and-set mutexes should spin before
- blocking.</TD>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;<I>replaced by <A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setMutexTestAndSetSpins(int)"><CODE>setMutexTestAndSetSpins(int)</CODE></A></I></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
@@ -1635,6 +1660,15 @@ normal use.</TD>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setTxnNoWait(boolean)">setTxnNoWait</A></B>(boolean&nbsp;txnNoWait)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If a lock is unavailable for any Berkeley DB operation performed in the
+ context of a transaction, cause the operation to throw <A HREF="../../../com/sleepycat/db/LockNotGrantedException.html" title="class in com.sleepycat.db"><CODE>LockNotGrantedException</CODE></A> without waiting for the lock.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setTxnSnapshot(boolean)">setTxnSnapshot</A></B>(boolean&nbsp;txnSnapshot)</CODE>
<BR>
@@ -1653,7 +1687,7 @@ transactions.</TD>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setTxnTimestamp(java.util.Date)">setTxnTimestamp</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Date.html" title="class or interface in java.util">Date</A>&nbsp;txnTimestamp)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setTxnTimestamp(java.util.Date)">setTxnTimestamp</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Date.html" title="class or interface in java.util">Date</A>&nbsp;txnTimestamp)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Recover to the specified time rather than to the most current
@@ -1692,10 +1726,19 @@ transactions.</TD>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setVerbose(com.sleepycat.db.VerboseConfig, boolean)">setVerbose</A></B>(<A HREF="../../../com/sleepycat/db/VerboseConfig.html" title="class in com.sleepycat.db">VerboseConfig</A>&nbsp;flag,
+ boolean&nbsp;enable)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Display verbose information.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setVerboseDeadlock(boolean)">setVerboseDeadlock</A></B>(boolean&nbsp;verboseDeadlock)</CODE>
<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Display additional information when doing deadlock detection.</TD>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;<I>replaced by <A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setVerbose(com.sleepycat.db.VerboseConfig, boolean)"><CODE>setVerbose(com.sleepycat.db.VerboseConfig, boolean)</CODE></A></I></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
@@ -1703,7 +1746,7 @@ transactions.</TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setVerboseRecovery(boolean)">setVerboseRecovery</A></B>(boolean&nbsp;verboseRecovery)</CODE>
<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Display additional information when performing recovery.</TD>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;<I>replaced by <A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setVerbose(com.sleepycat.db.VerboseConfig, boolean)"><CODE>setVerbose(com.sleepycat.db.VerboseConfig, boolean)</CODE></A></I></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
@@ -1711,8 +1754,7 @@ transactions.</TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setVerboseRegister(boolean)">setVerboseRegister</A></B>(boolean&nbsp;verboseRegister)</CODE>
<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Display additional information concerning support for the
- <A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setRegister(boolean)"><CODE>setRegister(boolean)</CODE></A> method.</TD>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;<I>replaced by <A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setVerbose(com.sleepycat.db.VerboseConfig, boolean)"><CODE>setVerbose(com.sleepycat.db.VerboseConfig, boolean)</CODE></A></I></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
@@ -1720,7 +1762,7 @@ transactions.</TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setVerboseReplication(boolean)">setVerboseReplication</A></B>(boolean&nbsp;verboseReplication)</CODE>
<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Display additional information when processing replication messages.</TD>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;<I>replaced by <A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setVerbose(com.sleepycat.db.VerboseConfig, boolean)"><CODE>setVerbose(com.sleepycat.db.VerboseConfig, boolean)</CODE></A></I></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
@@ -1728,7 +1770,7 @@ transactions.</TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setVerboseWaitsFor(boolean)">setVerboseWaitsFor</A></B>(boolean&nbsp;verboseWaitsFor)</CODE>
<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Display the waits-for table when doing deadlock detection.</TD>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;<I>replaced by <A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setVerbose(com.sleepycat.db.VerboseConfig, boolean)"><CODE>setVerbose(com.sleepycat.db.VerboseConfig, boolean)</CODE></A></I></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
@@ -1743,10 +1785,10 @@ transactions.</TD>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -2011,7 +2053,7 @@ getCacheCount</H3>
public int <B>getCacheCount</B>()</PRE>
<DL>
<DD>Return the number of shared memory buffer pools, that is, the number
- of caches.
+ of cache regions.
<p>
This method may be called at any time during the life of the application.
<p>
@@ -2022,7 +2064,46 @@ This method may be called at any time during the life of the application.
<DD><DL>
<DT><B>Returns:</B><DD>The number of shared memory buffer pools, that is, the number
- of caches.</DL>
+ of cache regions.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setCacheMax(long)"><!-- --></A><H3>
+setCacheMax</H3>
+<PRE>
+public void <B>setCacheMax</B>(long&nbsp;cacheMax)</PRE>
+<DL>
+<DD>Set the maximum cache size in bytes. The specified size is rounded to the
+ nearest multiple of the cache region size, which is the initial cache size
+ divded by the number of regions specified to <A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setCacheCount(int)"><CODE>setCacheCount(int)</CODE></A>. If no
+ value is specified, it defaults to the initial cache size.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getCacheMax()"><!-- --></A><H3>
+getCacheMax</H3>
+<PRE>
+public long <B>getCacheMax</B>()</PRE>
+<DL>
+<DD>Return the maximum size of the cache.
+<p>
+This method may be called at any time during the life of the application.
+<p>
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>The maximum size of the cache.</DL>
</DD>
</DL>
<HR>
@@ -2084,7 +2165,7 @@ This method may be called at any time during the life of the application.
<A NAME="addDataDir(java.io.File)"><!-- --></A><H3>
addDataDir</H3>
<PRE>
-public void <B>addDataDir</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/File.html" title="class or interface in java.io">File</A>&nbsp;dataDir)</PRE>
+public void <B>addDataDir</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/File.html" title="class or interface in java.io">File</A>&nbsp;dataDir)</PRE>
<DL>
<DD>Set the path of a directory to be used as the location of the access
method database files.
@@ -2128,8 +2209,10 @@ string, which is equivalent to ASCII for Latin characters.</DL>
<A NAME="addDataDir(java.lang.String)"><!-- --></A><H3>
addDataDir</H3>
<PRE>
-public void <B>addDataDir</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;dataDir)</PRE>
+public void <B>addDataDir</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;dataDir)</PRE>
<DL>
+<DD><B>Deprecated.</B>&nbsp;<I>replaced by <A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#addDataDir(java.io.File)"><CODE>addDataDir(java.io.File)</CODE></A></I>
+<P>
<DD><DL>
</DL>
</DD>
@@ -2142,7 +2225,7 @@ public void <B>addDataDir</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/jav
<A NAME="getDataDirs()"><!-- --></A><H3>
getDataDirs</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/File.html" title="class or interface in java.io">File</A>[] <B>getDataDirs</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/File.html" title="class or interface in java.io">File</A>[] <B>getDataDirs</B>()</PRE>
<DL>
<DD>Return the array of data directories.
<p>
@@ -2386,7 +2469,7 @@ This method may be called at any time during the life of the application.
<A NAME="setEncrypted(java.lang.String)"><!-- --></A><H3>
setEncrypted</H3>
<PRE>
-public void <B>setEncrypted</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;password)</PRE>
+public void <B>setEncrypted</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;password)</PRE>
<DL>
<DD>Set the password used to perform encryption and decryption.
<p>
@@ -2485,7 +2568,7 @@ This method may be called at any time during the life of the application.
<A NAME="setErrorPrefix(java.lang.String)"><!-- --></A><H3>
setErrorPrefix</H3>
<PRE>
-public void <B>setErrorPrefix</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;errorPrefix)</PRE>
+public void <B>setErrorPrefix</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;errorPrefix)</PRE>
<DL>
<DD>Set the prefix string that appears before error messages.
<p>
@@ -2504,7 +2587,7 @@ This method may be called at any time during the life of the application.
<A NAME="getErrorPrefix()"><!-- --></A><H3>
getErrorPrefix</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>getErrorPrefix</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>getErrorPrefix</B>()</PRE>
<DL>
<DD>Return the prefix string that appears before error messages.
<p>
@@ -2524,7 +2607,7 @@ This method may be called at any time during the life of the application.
<A NAME="setErrorStream(java.io.OutputStream)"><!-- --></A><H3>
setErrorStream</H3>
<PRE>
-public void <B>setErrorStream</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/OutputStream.html" title="class or interface in java.io">OutputStream</A>&nbsp;errorStream)</PRE>
+public void <B>setErrorStream</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/OutputStream.html" title="class or interface in java.io">OutputStream</A>&nbsp;errorStream)</PRE>
<DL>
<DD>Set an OutputStream for displaying error messages.
<p>
@@ -2569,7 +2652,7 @@ This method may be called at any time during the life of the application.
<A NAME="getErrorStream()"><!-- --></A><H3>
getErrorStream</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/OutputStream.html" title="class or interface in java.io">OutputStream</A> <B>getErrorStream</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/OutputStream.html" title="class or interface in java.io">OutputStream</A> <B>getErrorStream</B>()</PRE>
<DL>
<DD>Return the an OutputStream for displaying error messages.
<p>
@@ -3182,7 +3265,7 @@ microseconds, limiting the maximum timeout to roughly 71 minutes.
<p>
<p>
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.</DL>
</DD>
@@ -3662,7 +3745,7 @@ This method may be called at any time during the life of the application.
<A NAME="setLogDirectory(java.io.File)"><!-- --></A><H3>
setLogDirectory</H3>
<PRE>
-public void <B>setLogDirectory</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/File.html" title="class or interface in java.io">File</A>&nbsp;logDirectory)</PRE>
+public void <B>setLogDirectory</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/File.html" title="class or interface in java.io">File</A>&nbsp;logDirectory)</PRE>
<DL>
<DD>Set the path of a directory to be used as the location of logging files.
<p>
@@ -3704,7 +3787,7 @@ string, which is equivalent to ASCII for Latin characters.</DL>
<A NAME="getLogDirectory()"><!-- --></A><H3>
getLogDirectory</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/File.html" title="class or interface in java.io">File</A> <B>getLogDirectory</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/File.html" title="class or interface in java.io">File</A> <B>getLogDirectory</B>()</PRE>
<DL>
<DD>Return the path of a directory to be used as the location of logging files.
<p>
@@ -3864,11 +3947,11 @@ This method may be called at any time during the life of the application.
</DL>
<HR>
-<A NAME="setMaxWrite(int, int)"><!-- --></A><H3>
+<A NAME="setMaxWrite(int, long)"><!-- --></A><H3>
setMaxWrite</H3>
<PRE>
public void <B>setMaxWrite</B>(int&nbsp;maxWrite,
- int&nbsp;maxWriteSleep)</PRE>
+ long&nbsp;maxWriteSleep)</PRE>
<DL>
<DD>Limit the number of sequential write operations scheduled by the
library when flushing dirty pages from the cache.
@@ -3908,7 +3991,7 @@ This method may be called at any time during the life of the application.
<A NAME="getMaxWriteSleep()"><!-- --></A><H3>
getMaxWriteSleep</H3>
<PRE>
-public int <B>getMaxWriteSleep</B>()</PRE>
+public long <B>getMaxWriteSleep</B>()</PRE>
<DL>
<DD>Return the microseconds to pause before scheduling further write operations.
<p>
@@ -3983,7 +4066,7 @@ This method may be called at any time during the life of the application.
<A NAME="setMessageStream(java.io.OutputStream)"><!-- --></A><H3>
setMessageStream</H3>
<PRE>
-public void <B>setMessageStream</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/OutputStream.html" title="class or interface in java.io">OutputStream</A>&nbsp;messageStream)</PRE>
+public void <B>setMessageStream</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/OutputStream.html" title="class or interface in java.io">OutputStream</A>&nbsp;messageStream)</PRE>
<DL>
<DD>Set an OutputStream for displaying informational messages.
<p>
@@ -4019,7 +4102,7 @@ This method may be called at any time during the life of the application.
<A NAME="getMessageStream()"><!-- --></A><H3>
getMessageStream</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/OutputStream.html" title="class or interface in java.io">OutputStream</A> <B>getMessageStream</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/OutputStream.html" title="class or interface in java.io">OutputStream</A> <B>getMessageStream</B>()</PRE>
<DL>
<DD>Return the an OutputStream for displaying informational messages.
<p>
@@ -4210,11 +4293,11 @@ public void <B>setMaxMutexes</B>(int&nbsp;maxMutexes)</PRE>
set using the <A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setMutexIncrement(int)"><CODE>setMutexIncrement(int)</CODE></A> method.
<p>
The database environment's total number of mutexes may also be set using
- the environment's <b>DB_CONFIG</b> file. The syntax of the entry in that file is a
- single line with the string "mutex_set_max", one or more whitespace characters,
- and the total number of mutexes. Because the <b>DB_CONFIG</b> file is read
- when the database environment is opened, it will silently overrule configuration
- done before that time.
+ the environment's <b>DB_CONFIG</b> file. The syntax of the entry in that
+ file is a single line with the string "mutex_set_max", one or more
+ whitespace characters, and the total number of mutexes. Because the
+ <b>DB_CONFIG</b> file is read when the database environment is opened, it
+ will silently overrule configuration done before that time.
<p>
This method configures a database environment, including all threads
of control accessing the database environment, not only the operations
@@ -4738,7 +4821,8 @@ public void <B>setRegister</B>(boolean&nbsp;register)</PRE>
<A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setRunFatalRecovery(boolean)"><CODE>setRunFatalRecovery(boolean)</CODE></A> are also specified, recovery will be performed
and the open will proceed normally. If recovery needs to be run and no
recovery flag is specified, a <A HREF="../../../com/sleepycat/db/RunRecoveryException.html" title="class in com.sleepycat.db"><CODE>RunRecoveryException</CODE></A> will be thrown.
- If recovery does not need to be run, the recovery flags will be ignored. See
+ If recovery does not need to be run, the recovery flags will be ignored.
+ See
<a href="../../../../ref/transapp/app.html" target="_top">Architecting
Transactional Data Store applications</a>) for more information.
<p>
@@ -4949,7 +5033,7 @@ getReplicationPriority</H3>
<PRE>
public int <B>getReplicationPriority</B>()</PRE>
<DL>
-<DD>Get the current environments priority. Priority is used to determine
+<DD>Get the current environment's priority. Priority is used to determine
which replicated site will be selected as master when an election occurs.
<p>
<P>
@@ -4968,7 +5052,7 @@ setReplicationPriority</H3>
<PRE>
public void <B>setReplicationPriority</B>(int&nbsp;priority)</PRE>
<DL>
-<DD>Set the current environments priority. Priority is used to determine
+<DD>Set the current environment's priority. Priority is used to determine
which replicated site will be selected as master when an election occurs.
<p>
<P>
@@ -5280,7 +5364,7 @@ This method may be called at any time during the life of the application.
<A NAME="setRPCServer(java.lang.String, long, long)"><!-- --></A><H3>
setRPCServer</H3>
<PRE>
-public void <B>setRPCServer</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;rpcServer,
+public void <B>setRPCServer</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;rpcServer,
long&nbsp;rpcClientTimeout,
long&nbsp;rpcServerTimeout)</PRE>
<DL>
@@ -5399,7 +5483,7 @@ This method may be called at any time during the life of the application.
<A NAME="setTemporaryDirectory(java.io.File)"><!-- --></A><H3>
setTemporaryDirectory</H3>
<PRE>
-public void <B>setTemporaryDirectory</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/File.html" title="class or interface in java.io">File</A>&nbsp;temporaryDirectory)</PRE>
+public void <B>setTemporaryDirectory</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/File.html" title="class or interface in java.io">File</A>&nbsp;temporaryDirectory)</PRE>
<DL>
<DD>Set the path of a directory to be used as the location of temporary
files.
@@ -5462,8 +5546,10 @@ string, which is equivalent to ASCII for Latin characters.</DL>
<A NAME="setTemporaryDirectory(java.lang.String)"><!-- --></A><H3>
setTemporaryDirectory</H3>
<PRE>
-public void <B>setTemporaryDirectory</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;dataDir)</PRE>
+public void <B>setTemporaryDirectory</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;dataDir)</PRE>
<DL>
+<DD><B>Deprecated.</B>&nbsp;<I>replaced by <A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setTemporaryDirectory(java.io.File)"><CODE>setTemporaryDirectory(java.io.File)</CODE></A></I>
+<P>
<DD><DL>
</DL>
</DD>
@@ -5476,7 +5562,7 @@ public void <B>setTemporaryDirectory</B>(<A HREF="http://java.sun.com/j2se/1.3/d
<A NAME="getTemporaryDirectory()"><!-- --></A><H3>
getTemporaryDirectory</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/File.html" title="class or interface in java.io">File</A> <B>getTemporaryDirectory</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/File.html" title="class or interface in java.io">File</A> <B>getTemporaryDirectory</B>()</PRE>
<DL>
<DD>Return the path of a directory to be used as the location of
temporary files.
@@ -5500,6 +5586,8 @@ setTestAndSetSpins</H3>
<PRE>
public void <B>setTestAndSetSpins</B>(int&nbsp;testAndSetSpins)</PRE>
<DL>
+<DD><B>Deprecated.</B>&nbsp;<I>replaced by <A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setMutexTestAndSetSpins(int)"><CODE>setMutexTestAndSetSpins(int)</CODE></A></I>
+<P>
<DD>Set the number of times test-and-set mutexes should spin before
blocking.
<p>
@@ -5516,7 +5604,8 @@ public void <B>setTestAndSetSpins</B>(int&nbsp;testAndSetSpins)</PRE>
</DL>
</DD>
<DD><DL>
-<DT><B>Parameters:</B><DD><CODE>testAndSetSpins</CODE> - The number of times test-and-set mutexes should spin before blocking.</DL>
+<DT><B>Parameters:</B><DD><CODE>testAndSetSpins</CODE> - The number of times test-and-set mutexes should spin before blocking.
+ <p></DL>
</DD>
</DL>
<HR>
@@ -5526,6 +5615,8 @@ getTestAndSetSpins</H3>
<PRE>
public int <B>getTestAndSetSpins</B>()</PRE>
<DL>
+<DD><B>Deprecated.</B>&nbsp;<I>replaced by <A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#getMutexTestAndSetSpins()"><CODE>getMutexTestAndSetSpins()</CODE></A></I>
+<P>
<DD>Return the number of times test-and-set mutexes should spin before
blocking.
<p>
@@ -5538,7 +5629,8 @@ This method may be called at any time during the life of the application.
<DD><DL>
<DT><B>Returns:</B><DD>The number of times test-and-set mutexes should spin before
- blocking.</DL>
+ blocking.
+ <p></DL>
</DD>
</DL>
<HR>
@@ -5643,6 +5735,53 @@ This method may be called at any time during the life of the application.
</DL>
<HR>
+<A NAME="setTxnNoWait(boolean)"><!-- --></A><H3>
+setTxnNoWait</H3>
+<PRE>
+public void <B>setTxnNoWait</B>(boolean&nbsp;txnNoWait)</PRE>
+<DL>
+<DD>If a lock is unavailable for any Berkeley DB operation performed in the
+ context of a transaction, cause the operation to throw <A HREF="../../../com/sleepycat/db/LockNotGrantedException.html" title="class in com.sleepycat.db"><CODE>LockNotGrantedException</CODE></A> without waiting for the lock.
+ <p>
+ This method only affects the specified <A HREF="../../../com/sleepycat/db/Environment.html" title="class in com.sleepycat.db"><CODE>Environment</CODE></A> handle (and
+any other library handles opened within the scope of that handle).
+For consistent behavior across the environment, all <A HREF="../../../com/sleepycat/db/Environment.html" title="class in com.sleepycat.db"><CODE>Environment</CODE></A>
+handles opened in the database environment must either call this method
+or the configuration should be specified in the database environment's
+DB_CONFIG configuration file.
+ <p>
+ This method may be called at any time during the life of the application.
+ <p>
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>txnNoWait</CODE> - If true, configure transactions to not wait for locks by default.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getTxnNoWait()"><!-- --></A><H3>
+getTxnNoWait</H3>
+<PRE>
+public boolean <B>getTxnNoWait</B>()</PRE>
+<DL>
+<DD>Return true if the transactions have been configured to not wait for locks by default.
+<p>
+This method may be called at any time during the life of the application.
+<p>
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>True if the transactions have been configured to not wait for locks by default.</DL>
+</DD>
+</DL>
+<HR>
+
<A NAME="setTxnNotDurable(boolean)"><!-- --></A><H3>
setTxnNotDurable</H3>
<PRE>
@@ -5844,7 +5983,7 @@ microseconds, limiting the maximum timeout to roughly 71 minutes.
<p>
<p>
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.</DL>
</DD>
@@ -5876,7 +6015,7 @@ This method may be called at any time during the life of the application.
<A NAME="setTxnTimestamp(java.util.Date)"><!-- --></A><H3>
setTxnTimestamp</H3>
<PRE>
-public void <B>setTxnTimestamp</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Date.html" title="class or interface in java.util">Date</A>&nbsp;txnTimestamp)</PRE>
+public void <B>setTxnTimestamp</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Date.html" title="class or interface in java.util">Date</A>&nbsp;txnTimestamp)</PRE>
<DL>
<DD>Recover to the specified time rather than to the most current
possible date.
@@ -5905,7 +6044,7 @@ environment has been opened.
<A NAME="getTxnTimestamp()"><!-- --></A><H3>
getTxnTimestamp</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Date.html" title="class or interface in java.util">Date</A> <B>getTxnTimestamp</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Date.html" title="class or interface in java.util">Date</A> <B>getTxnTimestamp</B>()</PRE>
<DL>
<DD>Return the time to which recovery will be done, or 0 if recovery will
be done to the most current possible date.
@@ -6076,11 +6215,57 @@ This method may be called at any time during the life of the application.
</DL>
<HR>
+<A NAME="setVerbose(com.sleepycat.db.VerboseConfig, boolean)"><!-- --></A><H3>
+setVerbose</H3>
+<PRE>
+public void <B>setVerbose</B>(<A HREF="../../../com/sleepycat/db/VerboseConfig.html" title="class in com.sleepycat.db">VerboseConfig</A>&nbsp;flag,
+ boolean&nbsp;enable)</PRE>
+<DL>
+<DD>Display verbose information.
+ <p>
+ This method may be called at any time during the life of the application.
+ <p>
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>flag</CODE> - The type of verbose information being configured.
+ <p><DD><CODE>enable</CODE> - If true, display additional information.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getVerbose(com.sleepycat.db.VerboseConfig)"><!-- --></A><H3>
+getVerbose</H3>
+<PRE>
+public boolean <B>getVerbose</B>(<A HREF="../../../com/sleepycat/db/VerboseConfig.html" title="class in com.sleepycat.db">VerboseConfig</A>&nbsp;flag)</PRE>
+<DL>
+<DD>Return if the database environment is configured to display
+ a given type of verbose information.
+ <p>
+ This method may be called at any time during the life of the application.
+ <p>
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>flag</CODE> - The type of verbose information being queried.
+ <p>
+<DT><B>Returns:</B><DD>If the database environment is configured to display additional
+ information of the specified type.</DL>
+</DD>
+</DL>
+<HR>
+
<A NAME="setVerboseDeadlock(boolean)"><!-- --></A><H3>
setVerboseDeadlock</H3>
<PRE>
public void <B>setVerboseDeadlock</B>(boolean&nbsp;verboseDeadlock)</PRE>
<DL>
+<DD><B>Deprecated.</B>&nbsp;<I>replaced by <A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setVerbose(com.sleepycat.db.VerboseConfig, boolean)"><CODE>setVerbose(com.sleepycat.db.VerboseConfig, boolean)</CODE></A></I>
+<P>
<DD>Display additional information when doing deadlock detection.
<p>
This method may be called at any time during the life of the application.
@@ -6091,7 +6276,8 @@ public void <B>setVerboseDeadlock</B>(boolean&nbsp;verboseDeadlock)</PRE>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>verboseDeadlock</CODE> - If true, display additional information when doing deadlock
- detection.</DL>
+ detection.
+ <p></DL>
</DD>
</DL>
<HR>
@@ -6101,6 +6287,8 @@ getVerboseDeadlock</H3>
<PRE>
public boolean <B>getVerboseDeadlock</B>()</PRE>
<DL>
+<DD><B>Deprecated.</B>&nbsp;<I>replaced by <A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#getVerbose(com.sleepycat.db.VerboseConfig)"><CODE>getVerbose(com.sleepycat.db.VerboseConfig)</CODE></A></I>
+<P>
<DD>Return if the database environment is configured to display
additional information when doing deadlock detection.
<p>
@@ -6113,7 +6301,8 @@ public boolean <B>getVerboseDeadlock</B>()</PRE>
<DD><DL>
<DT><B>Returns:</B><DD>If the database environment is configured to display additional
- information when doing deadlock detection.</DL>
+ information when doing deadlock detection.
+ <p></DL>
</DD>
</DL>
<HR>
@@ -6123,6 +6312,8 @@ setVerboseRecovery</H3>
<PRE>
public void <B>setVerboseRecovery</B>(boolean&nbsp;verboseRecovery)</PRE>
<DL>
+<DD><B>Deprecated.</B>&nbsp;<I>replaced by <A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setVerbose(com.sleepycat.db.VerboseConfig, boolean)"><CODE>setVerbose(com.sleepycat.db.VerboseConfig, boolean)</CODE></A></I>
+<P>
<DD>Display additional information when performing recovery.
<p>
This method may be called at any time during the life of the application.
@@ -6132,7 +6323,8 @@ public void <B>setVerboseRecovery</B>(boolean&nbsp;verboseRecovery)</PRE>
</DL>
</DD>
<DD><DL>
-<DT><B>Parameters:</B><DD><CODE>verboseRecovery</CODE> - If true, display additional information when performing recovery.</DL>
+<DT><B>Parameters:</B><DD><CODE>verboseRecovery</CODE> - If true, display additional information when performing recovery.
+ <p></DL>
</DD>
</DL>
<HR>
@@ -6142,6 +6334,8 @@ getVerboseRecovery</H3>
<PRE>
public boolean <B>getVerboseRecovery</B>()</PRE>
<DL>
+<DD><B>Deprecated.</B>&nbsp;<I>replaced by <A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#getVerbose(com.sleepycat.db.VerboseConfig)"><CODE>getVerbose(com.sleepycat.db.VerboseConfig)</CODE></A></I>
+<P>
<DD>Return if the database environment is configured to display
additional information when performing recovery.
<p>
@@ -6154,7 +6348,8 @@ public boolean <B>getVerboseRecovery</B>()</PRE>
<DD><DL>
<DT><B>Returns:</B><DD>If the database environment is configured to display additional
- information when performing recovery.</DL>
+ information when performing recovery.
+ <p></DL>
</DD>
</DL>
<HR>
@@ -6164,6 +6359,8 @@ setVerboseRegister</H3>
<PRE>
public void <B>setVerboseRegister</B>(boolean&nbsp;verboseRegister)</PRE>
<DL>
+<DD><B>Deprecated.</B>&nbsp;<I>replaced by <A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setVerbose(com.sleepycat.db.VerboseConfig, boolean)"><CODE>setVerbose(com.sleepycat.db.VerboseConfig, boolean)</CODE></A></I>
+<P>
<DD>Display additional information concerning support for the
<A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setRegister(boolean)"><CODE>setRegister(boolean)</CODE></A> method.
<p>
@@ -6175,7 +6372,8 @@ public void <B>setVerboseRegister</B>(boolean&nbsp;verboseRegister)</PRE>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>verboseRegister</CODE> - If true, display additional information concerning support for the
- <A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setRegister(boolean)"><CODE>setRegister(boolean)</CODE></A> method</DL>
+ <A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setRegister(boolean)"><CODE>setRegister(boolean)</CODE></A> method
+ <p></DL>
</DD>
</DL>
<HR>
@@ -6185,6 +6383,8 @@ getVerboseRegister</H3>
<PRE>
public boolean <B>getVerboseRegister</B>()</PRE>
<DL>
+<DD><B>Deprecated.</B>&nbsp;<I>replaced by <A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#getVerbose(com.sleepycat.db.VerboseConfig)"><CODE>getVerbose(com.sleepycat.db.VerboseConfig)</CODE></A></I>
+<P>
<DD>Return if the database environment is configured to display
additional information concerning support for the
<A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setRegister(boolean)"><CODE>setRegister(boolean)</CODE></A> method.
@@ -6199,7 +6399,8 @@ public boolean <B>getVerboseRegister</B>()</PRE>
<DT><B>Returns:</B><DD>If the database environment is configured to display additional
information concerning support for the
- <A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setRegister(boolean)"><CODE>setRegister(boolean)</CODE></A> method.</DL>
+ <A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setRegister(boolean)"><CODE>setRegister(boolean)</CODE></A> method.
+ <p></DL>
</DD>
</DL>
<HR>
@@ -6209,6 +6410,8 @@ setVerboseReplication</H3>
<PRE>
public void <B>setVerboseReplication</B>(boolean&nbsp;verboseReplication)</PRE>
<DL>
+<DD><B>Deprecated.</B>&nbsp;<I>replaced by <A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setVerbose(com.sleepycat.db.VerboseConfig, boolean)"><CODE>setVerbose(com.sleepycat.db.VerboseConfig, boolean)</CODE></A></I>
+<P>
<DD>Display additional information when processing replication messages.
<p>
Note, to get complete replication logging when debugging replication
@@ -6224,7 +6427,8 @@ public void <B>setVerboseReplication</B>(boolean&nbsp;verboseReplication)</PRE>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>verboseReplication</CODE> - If true, display additional information when processing replication
- messages.</DL>
+ messages.
+ <p></DL>
</DD>
</DL>
<HR>
@@ -6234,6 +6438,8 @@ getVerboseReplication</H3>
<PRE>
public boolean <B>getVerboseReplication</B>()</PRE>
<DL>
+<DD><B>Deprecated.</B>&nbsp;<I>replaced by <A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#getVerbose(com.sleepycat.db.VerboseConfig)"><CODE>getVerbose(com.sleepycat.db.VerboseConfig)</CODE></A></I>
+<P>
<DD>Return if the database environment is configured to display
additional information when processing replication messages.
<p>
@@ -6246,7 +6452,8 @@ public boolean <B>getVerboseReplication</B>()</PRE>
<DD><DL>
<DT><B>Returns:</B><DD>If the database environment is configured to display additional
- information when processing replication messages.</DL>
+ information when processing replication messages.
+ <p></DL>
</DD>
</DL>
<HR>
@@ -6256,6 +6463,8 @@ setVerboseWaitsFor</H3>
<PRE>
public void <B>setVerboseWaitsFor</B>(boolean&nbsp;verboseWaitsFor)</PRE>
<DL>
+<DD><B>Deprecated.</B>&nbsp;<I>replaced by <A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setVerbose(com.sleepycat.db.VerboseConfig, boolean)"><CODE>setVerbose(com.sleepycat.db.VerboseConfig, boolean)</CODE></A></I>
+<P>
<DD>Display the waits-for table when doing deadlock detection.
<p>
This method may be called at any time during the life of the application.
@@ -6265,7 +6474,8 @@ public void <B>setVerboseWaitsFor</B>(boolean&nbsp;verboseWaitsFor)</PRE>
</DL>
</DD>
<DD><DL>
-<DT><B>Parameters:</B><DD><CODE>verboseWaitsFor</CODE> - If true, display the waits-for table when doing deadlock detection.</DL>
+<DT><B>Parameters:</B><DD><CODE>verboseWaitsFor</CODE> - If true, display the waits-for table when doing deadlock detection.
+ <p></DL>
</DD>
</DL>
<HR>
@@ -6275,6 +6485,8 @@ getVerboseWaitsFor</H3>
<PRE>
public boolean <B>getVerboseWaitsFor</B>()</PRE>
<DL>
+<DD><B>Deprecated.</B>&nbsp;<I>replaced by <A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#getVerbose(com.sleepycat.db.VerboseConfig)"><CODE>getVerbose(com.sleepycat.db.VerboseConfig)</CODE></A></I>
+<P>
<DD>Return if the database environment is configured to display the
waits-for table when doing deadlock detection.
<p>
@@ -6287,7 +6499,8 @@ public boolean <B>getVerboseWaitsFor</B>()</PRE>
<DD><DL>
<DT><B>Returns:</B><DD>If the database environment is configured to display the waits-for
- table when doing deadlock detection.</DL>
+ table when doing deadlock detection.
+ <p></DL>
</DD>
</DL>
<HR>
@@ -6368,7 +6581,7 @@ This method may be called at any time during the life of the application.
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -6404,6 +6617,6 @@ DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/ErrorHandler.html b/db/docs/java/com/sleepycat/db/ErrorHandler.html
index 350c12e33..40cc5495d 100644
--- a/db/docs/java/com/sleepycat/db/ErrorHandler.html
+++ b/db/docs/java/com/sleepycat/db/ErrorHandler.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:57 EDT 2007 -->
<TITLE>
-ErrorHandler (Oracle Corporation - Berkeley DB Java API)
+ErrorHandler (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.ErrorHandler interface">
@@ -14,7 +14,7 @@ ErrorHandler (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="ErrorHandler (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="ErrorHandler (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -115,8 +115,8 @@ occurs in the Berkeley DB library.
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/ErrorHandler.html#error(com.sleepycat.db.Environment, java.lang.String, java.lang.String)">error</A></B>(<A HREF="../../../com/sleepycat/db/Environment.html" title="class in com.sleepycat.db">Environment</A>&nbsp;environment,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;errpfx,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;msg)</CODE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;errpfx,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;msg)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A callback function to be called when an error occurs in the
@@ -140,8 +140,8 @@ occurs in the Berkeley DB library.
error</H3>
<PRE>
void <B>error</B>(<A HREF="../../../com/sleepycat/db/Environment.html" title="class in com.sleepycat.db">Environment</A>&nbsp;environment,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;errpfx,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;msg)</PRE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;errpfx,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;msg)</PRE>
<DL>
<DD>A callback function to be called when an error occurs in the
Berkeley DB library.
@@ -192,7 +192,7 @@ void <B>error</B>(<A HREF="../../../com/sleepycat/db/Environment.html" title="cl
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -228,6 +228,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHO
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/EventHandler.html b/db/docs/java/com/sleepycat/db/EventHandler.html
index 6079b0901..baa34ed49 100644
--- a/db/docs/java/com/sleepycat/db/EventHandler.html
+++ b/db/docs/java/com/sleepycat/db/EventHandler.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:57 EDT 2007 -->
<TITLE>
-EventHandler (Oracle Corporation - Berkeley DB Java API)
+EventHandler (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.EventHandler interface">
@@ -14,7 +14,7 @@ EventHandler (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="EventHandler (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="EventHandler (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,14 +46,14 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../com/sleepycat/db/ErrorHandler.html" title="interface in com.sleepycat.db"><B>PREV CLASS</B></A>&nbsp;
-&nbsp;<A HREF="../../../com/sleepycat/db/EventType.html" title="class in com.sleepycat.db"><B>NEXT CLASS</B></A></FONT></TD>
+&nbsp;<A HREF="../../../com/sleepycat/db/EventHandlerAdapter.html" title="class in com.sleepycat.db"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../index.html?com/sleepycat/db/EventHandler.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="EventHandler.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
@@ -88,14 +88,31 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHO
com.sleepycat.db</FONT>
<BR>
Interface EventHandler</H2>
+<DL>
+<DT><B>All Known Implementing Classes:</B> <DD><A HREF="../../../com/sleepycat/db/EventHandlerAdapter.html" title="class in com.sleepycat.db">EventHandlerAdapter</A></DD>
+</DL>
<HR>
<DL>
<DT><PRE>public interface <B>EventHandler</B></DL>
</PRE>
<P>
-An interface specifying a callback function to be called when an event
-is sent from the Berkeley DB library.
+An interface classs with prototype definitions of all event functions that
+can be called via the Berkeley DB event callback mechanism.
+<p>
+A user can choose to implement the EventHandler class, and implement handlers
+for all of the event types. Alternatively it is possible to extend the
+EventHandlerAdapter class, and implement only those events relevant to the
+specific application.
+<p>
+The <A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setEventHandler(com.sleepycat.db.EventHandler)"><CODE>EnvironmentConfig.setEventHandler</CODE></A> is used to provide
+a mechanism for reporting event messages from the Berkeley DB library
+to the application.
+<p>
+Berkeley DB is not re-entrant. Callback functions should not attempt
+to make library calls (for example, to release locks or close open
+handles). Re-entering Berkeley DB is not guaranteed to work correctly,
+and the results are undefined.
<P>
<P>
@@ -113,8 +130,71 @@ is sent from the Berkeley DB library.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;int</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/db/EventHandler.html#handleEvent(com.sleepycat.db.EventType)">handleEvent</A></B>(<A HREF="../../../com/sleepycat/db/EventType.html" title="class in com.sleepycat.db">EventType</A>&nbsp;event)</CODE>
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/EventHandler.html#handlePanicEvent()">handlePanicEvent</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A callback function to be called when a panic event is sent from the
+ Berkeley DB library.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/EventHandler.html#handleRepClientEvent()">handleRepClientEvent</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A callback function to be called when a Replication Client event is sent
+ from the Berkeley DB library.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/EventHandler.html#handleRepElectedEvent()">handleRepElectedEvent</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A callback function to be called when an event is sent from the
+ Berkeley DB library.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/EventHandler.html#handleRepMasterEvent()">handleRepMasterEvent</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A callback function to be called when an event is sent from the
+ Berkeley DB library.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/EventHandler.html#handleRepNewMasterEvent(int)">handleRepNewMasterEvent</A></B>(int&nbsp;envId)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A callback function to be called when an event is sent from the
+ Berkeley DB library.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/EventHandler.html#handleRepPermFailedEvent()">handleRepPermFailedEvent</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A callback function to be called when an event is sent from the
+ Berkeley DB library.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/EventHandler.html#handleRepStartupDoneEvent()">handleRepStartupDoneEvent</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A callback function to be called when an event is sent from the
+ Berkeley DB library.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/EventHandler.html#handleWriteFailedEvent(int)">handleWriteFailedEvent</A></B>(int&nbsp;errorCode)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A callback function to be called when an event is sent from the
@@ -134,30 +214,161 @@ is sent from the Berkeley DB library.
</TR>
</TABLE>
-<A NAME="handleEvent(com.sleepycat.db.EventType)"><!-- --></A><H3>
-handleEvent</H3>
+<A NAME="handlePanicEvent()"><!-- --></A><H3>
+handlePanicEvent</H3>
<PRE>
-int <B>handleEvent</B>(<A HREF="../../../com/sleepycat/db/EventType.html" title="class in com.sleepycat.db">EventType</A>&nbsp;event)</PRE>
+void <B>handlePanicEvent</B>()</PRE>
+<DL>
+<DD>A callback function to be called when a panic event is sent from the
+ Berkeley DB library.
+ <p>
+ This event callback is received when an error occurs in the Berkeley DB
+ library where the only solution is to shut down the application and run
+ recovery. In such cases, the Berkeley DB methods will throw
+ <A HREF="../../../com/sleepycat/db/RunRecoveryException.html" title="class in com.sleepycat.db"><CODE>RunRecoveryException</CODE></A> exceptions. It is often easier to simply exit
+ the application when such errors occur, rather than gracefully return up
+ the stack.
+ <p>
+ When this callback is received the database environment has failed. All
+ threads of control in the database environment should exit the environment
+ and recovery should be run.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="handleRepClientEvent()"><!-- --></A><H3>
+handleRepClientEvent</H3>
+<PRE>
+void <B>handleRepClientEvent</B>()</PRE>
+<DL>
+<DD>A callback function to be called when a Replication Client event is sent
+ from the Berkeley DB library.
+ <p>
+ This event callback is received when this member of a replication group is
+ now a client site.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="handleRepElectedEvent()"><!-- --></A><H3>
+handleRepElectedEvent</H3>
+<PRE>
+void <B>handleRepElectedEvent</B>()</PRE>
<DL>
<DD>A callback function to be called when an event is sent from the
Berkeley DB library.
<p>
- The <A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setEventHandler(com.sleepycat.db.EventHandler)"><CODE>EnvironmentConfig.setEventHandler</CODE></A> is used to provide
- a mechanism for reporting event messages from the Berkeley DB library
- to the application.
+ This event callback is received when this site has just won an election. An
+ Application using the Base replication API should arrange for a call to
+ the <A HREF="../../../com/sleepycat/db/Environment.html#startReplication(com.sleepycat.db.DatabaseEntry, boolean)"><CODE>Environment.startReplication</CODE></A> method after receiving this
+ event to, reconfigure the local environment as a replication master.
+ <p>
+ Replication Manager applications may safely igore this event. The
+ Replication Manager calls <A HREF="../../../com/sleepycat/db/Environment.html#startReplication(com.sleepycat.db.DatabaseEntry, boolean)"><CODE>Environment.startReplication</CODE></A>
+ automatically on behalf of the application when appropriate (resulting in
+ firing of the <A HREF="../../../com/sleepycat/db/EventHandler.html#handleRepMasterEvent()"><CODE>EventHandler.handleRepMasterEvent</CODE></A> event).
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="handleRepMasterEvent()"><!-- --></A><H3>
+handleRepMasterEvent</H3>
+<PRE>
+void <B>handleRepMasterEvent</B>()</PRE>
+<DL>
+<DD>A callback function to be called when an event is sent from the
+ Berkeley DB library.
<p>
- Berkeley DB is not re-entrant. Callback functions should not attempt
- to make library calls (for example, to release locks or close open
- handles). Re-entering Berkeley DB is not guaranteed to work correctly,
- and the results are undefined.
+ This event callback is received when this site is now the master site of
+ its replication group. It is the application's responsibility to begin
+ acting as the master environment.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="handleRepNewMasterEvent(int)"><!-- --></A><H3>
+handleRepNewMasterEvent</H3>
+<PRE>
+void <B>handleRepNewMasterEvent</B>(int&nbsp;envId)</PRE>
+<DL>
+<DD>A callback function to be called when an event is sent from the
+ Berkeley DB library.
<p>
- See the <A HREF="../../../com/sleepycat/db/EventType.html" title="class in com.sleepycat.db"><CODE>EventType</CODE></A> class for information on the specific
- types of events that might be received by the handleEvent callback.
+ This event callback is received when the replication group of which this
+ site is a member has just established a new master; the local site is not
+ the new master.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>envId</CODE> - The environment ID of the new master site.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="handleRepPermFailedEvent()"><!-- --></A><H3>
+handleRepPermFailedEvent</H3>
+<PRE>
+void <B>handleRepPermFailedEvent</B>()</PRE>
+<DL>
+<DD>A callback function to be called when an event is sent from the
+ Berkeley DB library.
+ <p>
+ This event callback is received when the replication manager did not
+ receive enough acknowledgements (based on the acknowledgement policy
+ configured with <A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setReplicationManagerAckPolicy(com.sleepycat.db.ReplicationManagerAckPolicy)"><CODE>EnvironmentConfig.setReplicationManagerAckPolicy</CODE></A>)
+ to ensure a transaction's durability within the replication group. The
+ transaction will be flushed to the master's local disk storage for
+ durability.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="handleRepStartupDoneEvent()"><!-- --></A><H3>
+handleRepStartupDoneEvent</H3>
+<PRE>
+void <B>handleRepStartupDoneEvent</B>()</PRE>
+<DL>
+<DD>A callback function to be called when an event is sent from the
+ Berkeley DB library.
+ <p>
+ This event callback is received when the client has completed startup
+ synchronization and is now processing live log records received from the
+ master.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="handleWriteFailedEvent(int)"><!-- --></A><H3>
+handleWriteFailedEvent</H3>
+<PRE>
+void <B>handleWriteFailedEvent</B>(int&nbsp;errorCode)</PRE>
+<DL>
+<DD>A callback function to be called when an event is sent from the
+ Berkeley DB library.
<p>
+ This event callback is received when a Berkeley DB write to stable storage
+ failed.
<P>
<DD><DL>
-<DT><B>Parameters:</B><DD><CODE>event</CODE> - The event object, containing information about the type of event
- that is being reported.</DL>
+<DT><B>Parameters:</B><DD><CODE>errorCode</CODE> - If an operating system specific error code is available for the failure it
+ will be passed in the errorCode parameter.</DL>
</DD>
</DL>
<!-- ========= END OF CLASS DATA ========= -->
@@ -185,14 +396,14 @@ int <B>handleEvent</B>(<A HREF="../../../com/sleepycat/db/EventType.html" title=
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../com/sleepycat/db/ErrorHandler.html" title="interface in com.sleepycat.db"><B>PREV CLASS</B></A>&nbsp;
-&nbsp;<A HREF="../../../com/sleepycat/db/EventType.html" title="class in com.sleepycat.db"><B>NEXT CLASS</B></A></FONT></TD>
+&nbsp;<A HREF="../../../com/sleepycat/db/EventHandlerAdapter.html" title="class in com.sleepycat.db"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../index.html?com/sleepycat/db/EventHandler.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="EventHandler.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
@@ -221,6 +432,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHO
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/EventHandlerAdapter.html b/db/docs/java/com/sleepycat/db/EventHandlerAdapter.html
new file mode 100644
index 000000000..7409e4c6d
--- /dev/null
+++ b/db/docs/java/com/sleepycat/db/EventHandlerAdapter.html
@@ -0,0 +1,449 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:57 EDT 2007 -->
+<TITLE>
+EventHandlerAdapter (Oracle - Berkeley DB Java API)
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.sleepycat.db.EventHandlerAdapter class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../style.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+ parent.document.title="EventHandlerAdapter (Oracle - Berkeley DB Java API)";
+}
+</SCRIPT>
+<NOSCRIPT>
+</NOSCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+ <TR ALIGN="center" VALIGN="top">
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/EventHandlerAdapter.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+ </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../com/sleepycat/db/EventHandler.html" title="interface in com.sleepycat.db"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../com/sleepycat/db/FeedbackHandler.html" title="interface in com.sleepycat.db"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ <A HREF="../../../index.html?com/sleepycat/db/EventHandlerAdapter.html" target="_top"><B>FRAMES</B></A> &nbsp;
+&nbsp;<A HREF="EventHandlerAdapter.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+ <!--
+ if(window==top) {
+ document.writeln('<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>');
+ }
+ //-->
+</SCRIPT>
+<NOSCRIPT>
+ <A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+ SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.sleepycat.db</FONT>
+<BR>
+Class EventHandlerAdapter</H2>
+<PRE>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+ <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.EventHandlerAdapter</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../com/sleepycat/db/EventHandler.html" title="interface in com.sleepycat.db">EventHandler</A></DD>
+</DL>
+<HR>
+<DL>
+<DT><PRE>public abstract class <B>EventHandlerAdapter</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A><DT>implements <A HREF="../../../com/sleepycat/db/EventHandler.html" title="interface in com.sleepycat.db">EventHandler</A></DL>
+</PRE>
+
+<P>
+An abstract class that implements <A HREF="../../../com/sleepycat/db/EventHandler.html" title="interface in com.sleepycat.db"><CODE>EventHandler</CODE></A>, used to specify a
+callback function to be called when an event is sent from the Berkeley DB
+library.
+<p>
+See the <A HREF="../../../com/sleepycat/db/EventHandler.html" title="interface in com.sleepycat.db"><CODE>EventHandler</CODE></A> class documentation for information on event
+callback handler usage.
+<P>
+
+<P>
+<HR>
+
+<P>
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/EventHandlerAdapter.html#EventHandlerAdapter()">EventHandlerAdapter</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/EventHandlerAdapter.html#handlePanicEvent()">handlePanicEvent</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;See <A HREF="../../../com/sleepycat/db/EventHandler.html#handlePanicEvent()"><CODE>EventHandler.handlePanicEvent</CODE></A> for details of this callback.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/EventHandlerAdapter.html#handleRepClientEvent()">handleRepClientEvent</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;See <A HREF="../../../com/sleepycat/db/EventHandler.html#handleRepClientEvent()"><CODE>EventHandler.handleRepClientEvent</CODE></A> for details of this
+ callback.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/EventHandlerAdapter.html#handleRepElectedEvent()">handleRepElectedEvent</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;See <A HREF="../../../com/sleepycat/db/EventHandler.html#handleRepElectedEvent()"><CODE>EventHandler.handleRepElectedEvent</CODE></A> for details of this
+ callback.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/EventHandlerAdapter.html#handleRepMasterEvent()">handleRepMasterEvent</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;See <A HREF="../../../com/sleepycat/db/EventHandler.html#handleRepMasterEvent()"><CODE>EventHandler.handleRepMasterEvent</CODE></A> for details of this
+ callback.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/EventHandlerAdapter.html#handleRepNewMasterEvent(int)">handleRepNewMasterEvent</A></B>(int&nbsp;envId)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;See <A HREF="../../../com/sleepycat/db/EventHandler.html#handleRepNewMasterEvent(int)"><CODE>EventHandler.handleRepNewMasterEvent</CODE></A> for details of this
+ callback.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/EventHandlerAdapter.html#handleRepPermFailedEvent()">handleRepPermFailedEvent</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;See <A HREF="../../../com/sleepycat/db/EventHandler.html#handleRepPermFailedEvent()"><CODE>EventHandler.handleRepPermFailedEvent</CODE></A> for details of this
+ callback.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/EventHandlerAdapter.html#handleRepStartupDoneEvent()">handleRepStartupDoneEvent</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;See <A HREF="../../../com/sleepycat/db/EventHandler.html#handleRepStartupDoneEvent()"><CODE>EventHandler.handleRepStartupDoneEvent</CODE></A> for details of this
+ callback.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/EventHandlerAdapter.html#handleWriteFailedEvent(int)">handleWriteFailedEvent</A></B>(int&nbsp;errorCode)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;See <A HREF="../../../com/sleepycat/db/EventHandler.html#handleWriteFailedEvent(int)"><CODE>EventHandler.handleWriteFailedEvent</CODE></A> for details of this
+ callback.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TH>
+</TR>
+</TABLE>
+
+<A NAME="EventHandlerAdapter()"><!-- --></A><H3>
+EventHandlerAdapter</H3>
+<PRE>
+public <B>EventHandlerAdapter</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TH>
+</TR>
+</TABLE>
+
+<A NAME="handlePanicEvent()"><!-- --></A><H3>
+handlePanicEvent</H3>
+<PRE>
+public void <B>handlePanicEvent</B>()</PRE>
+<DL>
+<DD>See <A HREF="../../../com/sleepycat/db/EventHandler.html#handlePanicEvent()"><CODE>EventHandler.handlePanicEvent</CODE></A> for details of this callback.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../com/sleepycat/db/EventHandler.html#handlePanicEvent()">handlePanicEvent</A></CODE> in interface <CODE><A HREF="../../../com/sleepycat/db/EventHandler.html" title="interface in com.sleepycat.db">EventHandler</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="handleRepClientEvent()"><!-- --></A><H3>
+handleRepClientEvent</H3>
+<PRE>
+public void <B>handleRepClientEvent</B>()</PRE>
+<DL>
+<DD>See <A HREF="../../../com/sleepycat/db/EventHandler.html#handleRepClientEvent()"><CODE>EventHandler.handleRepClientEvent</CODE></A> for details of this
+ callback.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../com/sleepycat/db/EventHandler.html#handleRepClientEvent()">handleRepClientEvent</A></CODE> in interface <CODE><A HREF="../../../com/sleepycat/db/EventHandler.html" title="interface in com.sleepycat.db">EventHandler</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="handleRepElectedEvent()"><!-- --></A><H3>
+handleRepElectedEvent</H3>
+<PRE>
+public void <B>handleRepElectedEvent</B>()</PRE>
+<DL>
+<DD>See <A HREF="../../../com/sleepycat/db/EventHandler.html#handleRepElectedEvent()"><CODE>EventHandler.handleRepElectedEvent</CODE></A> for details of this
+ callback.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../com/sleepycat/db/EventHandler.html#handleRepElectedEvent()">handleRepElectedEvent</A></CODE> in interface <CODE><A HREF="../../../com/sleepycat/db/EventHandler.html" title="interface in com.sleepycat.db">EventHandler</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="handleRepMasterEvent()"><!-- --></A><H3>
+handleRepMasterEvent</H3>
+<PRE>
+public void <B>handleRepMasterEvent</B>()</PRE>
+<DL>
+<DD>See <A HREF="../../../com/sleepycat/db/EventHandler.html#handleRepMasterEvent()"><CODE>EventHandler.handleRepMasterEvent</CODE></A> for details of this
+ callback.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../com/sleepycat/db/EventHandler.html#handleRepMasterEvent()">handleRepMasterEvent</A></CODE> in interface <CODE><A HREF="../../../com/sleepycat/db/EventHandler.html" title="interface in com.sleepycat.db">EventHandler</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="handleRepNewMasterEvent(int)"><!-- --></A><H3>
+handleRepNewMasterEvent</H3>
+<PRE>
+public void <B>handleRepNewMasterEvent</B>(int&nbsp;envId)</PRE>
+<DL>
+<DD>See <A HREF="../../../com/sleepycat/db/EventHandler.html#handleRepNewMasterEvent(int)"><CODE>EventHandler.handleRepNewMasterEvent</CODE></A> for details of this
+ callback.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../com/sleepycat/db/EventHandler.html#handleRepNewMasterEvent(int)">handleRepNewMasterEvent</A></CODE> in interface <CODE><A HREF="../../../com/sleepycat/db/EventHandler.html" title="interface in com.sleepycat.db">EventHandler</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>envId</CODE> - The environment ID of the new master site.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="handleRepPermFailedEvent()"><!-- --></A><H3>
+handleRepPermFailedEvent</H3>
+<PRE>
+public void <B>handleRepPermFailedEvent</B>()</PRE>
+<DL>
+<DD>See <A HREF="../../../com/sleepycat/db/EventHandler.html#handleRepPermFailedEvent()"><CODE>EventHandler.handleRepPermFailedEvent</CODE></A> for details of this
+ callback.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../com/sleepycat/db/EventHandler.html#handleRepPermFailedEvent()">handleRepPermFailedEvent</A></CODE> in interface <CODE><A HREF="../../../com/sleepycat/db/EventHandler.html" title="interface in com.sleepycat.db">EventHandler</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="handleRepStartupDoneEvent()"><!-- --></A><H3>
+handleRepStartupDoneEvent</H3>
+<PRE>
+public void <B>handleRepStartupDoneEvent</B>()</PRE>
+<DL>
+<DD>See <A HREF="../../../com/sleepycat/db/EventHandler.html#handleRepStartupDoneEvent()"><CODE>EventHandler.handleRepStartupDoneEvent</CODE></A> for details of this
+ callback.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../com/sleepycat/db/EventHandler.html#handleRepStartupDoneEvent()">handleRepStartupDoneEvent</A></CODE> in interface <CODE><A HREF="../../../com/sleepycat/db/EventHandler.html" title="interface in com.sleepycat.db">EventHandler</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="handleWriteFailedEvent(int)"><!-- --></A><H3>
+handleWriteFailedEvent</H3>
+<PRE>
+public void <B>handleWriteFailedEvent</B>(int&nbsp;errorCode)</PRE>
+<DL>
+<DD>See <A HREF="../../../com/sleepycat/db/EventHandler.html#handleWriteFailedEvent(int)"><CODE>EventHandler.handleWriteFailedEvent</CODE></A> for details of this
+ callback.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../com/sleepycat/db/EventHandler.html#handleWriteFailedEvent(int)">handleWriteFailedEvent</A></CODE> in interface <CODE><A HREF="../../../com/sleepycat/db/EventHandler.html" title="interface in com.sleepycat.db">EventHandler</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>errorCode</CODE> - If an operating system specific error code is available for the failure it
+ will be passed in the errorCode parameter.</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+ <TR ALIGN="center" VALIGN="top">
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/EventHandlerAdapter.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+ </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../com/sleepycat/db/EventHandler.html" title="interface in com.sleepycat.db"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../com/sleepycat/db/FeedbackHandler.html" title="interface in com.sleepycat.db"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ <A HREF="../../../index.html?com/sleepycat/db/EventHandlerAdapter.html" target="_top"><B>FRAMES</B></A> &nbsp;
+&nbsp;<A HREF="EventHandlerAdapter.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+ <!--
+ if(window==top) {
+ document.writeln('<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>');
+ }
+ //-->
+</SCRIPT>
+<NOSCRIPT>
+ <A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+ SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
+</BODY>
+</HTML>
diff --git a/db/docs/java/com/sleepycat/db/EventType.html b/db/docs/java/com/sleepycat/db/EventType.html
deleted file mode 100644
index fe2405d27..000000000
--- a/db/docs/java/com/sleepycat/db/EventType.html
+++ /dev/null
@@ -1,367 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!--NewPage-->
-<HTML>
-<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
-<TITLE>
-EventType (Oracle Corporation - Berkeley DB Java API)
-</TITLE>
-
-<META NAME="keywords" CONTENT="com.sleepycat.db.EventType class">
-
-<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../style.css" TITLE="Style">
-
-<SCRIPT type="text/javascript">
-function windowTitle()
-{
- parent.document.title="EventType (Oracle Corporation - Berkeley DB Java API)";
-}
-</SCRIPT>
-<NOSCRIPT>
-</NOSCRIPT>
-
-</HEAD>
-
-<BODY BGCOLOR="white" onload="windowTitle();">
-
-
-<!-- ========= START OF TOP NAVBAR ======= -->
-<A NAME="navbar_top"><!-- --></A>
-<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
-<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
-<TR>
-<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
-<A NAME="navbar_top_firstrow"><!-- --></A>
-<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
- <TR ALIGN="center" VALIGN="top">
- <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
- <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
- <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
- <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/EventType.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
- <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
- <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
- <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
- <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
- </TR>
-</TABLE>
-</TD>
-<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
-</TD>
-</TR>
-
-<TR>
-<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
-&nbsp;<A HREF="../../../com/sleepycat/db/EventHandler.html" title="interface in com.sleepycat.db"><B>PREV CLASS</B></A>&nbsp;
-&nbsp;<A HREF="../../../com/sleepycat/db/FeedbackHandler.html" title="interface in com.sleepycat.db"><B>NEXT CLASS</B></A></FONT></TD>
-<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
- <A HREF="../../../index.html?com/sleepycat/db/EventType.html" target="_top"><B>FRAMES</B></A> &nbsp;
-&nbsp;<A HREF="EventType.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
-&nbsp;<SCRIPT type="text/javascript">
- <!--
- if(window==top) {
- document.writeln('<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>');
- }
- //-->
-</SCRIPT>
-<NOSCRIPT>
- <A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>
-</NOSCRIPT>
-
-
-</FONT></TD>
-</TR>
-<TR>
-<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
- SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
-<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
-DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
-</TR>
-</TABLE>
-<A NAME="skip-navbar_top"></A>
-<!-- ========= END OF TOP NAVBAR ========= -->
-
-<HR>
-<!-- ======== START OF CLASS DATA ======== -->
-<H2>
-<FONT SIZE="-1">
-com.sleepycat.db</FONT>
-<BR>
-Class EventType</H2>
-<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
- <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.EventType</B>
-</PRE>
-<HR>
-<DL>
-<DT><PRE>public final class <B>EventType</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
-</PRE>
-
-<P>
-Event types.
-<P>
-
-<P>
-<HR>
-
-<P>
-<!-- =========== FIELD SUMMARY =========== -->
-
-<A NAME="field_summary"><!-- --></A>
-<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
-<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
-<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
-<B>Field Summary</B></FONT></TH>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>static&nbsp;<A HREF="../../../com/sleepycat/db/EventType.html" title="class in com.sleepycat.db">EventType</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/db/EventType.html#PANIC">PANIC</A></B></CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The event is a Database panic.</TD>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>static&nbsp;<A HREF="../../../com/sleepycat/db/EventType.html" title="class in com.sleepycat.db">EventType</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/db/EventType.html#REP_CLIENT">REP_CLIENT</A></B></CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The event is a replication client message, meaning that the current site
- is now a client in the replication group.</TD>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>static&nbsp;<A HREF="../../../com/sleepycat/db/EventType.html" title="class in com.sleepycat.db">EventType</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/db/EventType.html#REP_MASTER">REP_MASTER</A></B></CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The event is a replication master message, meaning that the current site
- is now the master in the replication group.</TD>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>static&nbsp;<A HREF="../../../com/sleepycat/db/EventType.html" title="class in com.sleepycat.db">EventType</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/db/EventType.html#REP_NEW_MASTER">REP_NEW_MASTER</A></B></CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The event is a replication new master message.</TD>
-</TR>
-</TABLE>
-&nbsp;
-<!-- ========== METHOD SUMMARY =========== -->
-
-<A NAME="method_summary"><!-- --></A>
-<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
-<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
-<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
-<B>Method Summary</B></FONT></TH>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>static&nbsp;<A HREF="../../../com/sleepycat/db/EventType.html" title="class in com.sleepycat.db">EventType</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/db/EventType.html#fromInt(int)">fromInt</A></B>(int&nbsp;type)</CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Internal: this is public only so it can be called from an internal
- package.</TD>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/db/EventType.html#toString()">toString</A></B>()</CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
-</TR>
-</TABLE>
-&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
-<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
-<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
-</TR>
-</TABLE>
-&nbsp;
-<P>
-
-<!-- ============ FIELD DETAIL =========== -->
-
-<A NAME="field_detail"><!-- --></A>
-<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
-<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
-<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
-<B>Field Detail</B></FONT></TH>
-</TR>
-</TABLE>
-
-<A NAME="PANIC"><!-- --></A><H3>
-PANIC</H3>
-<PRE>
-public static final <A HREF="../../../com/sleepycat/db/EventType.html" title="class in com.sleepycat.db">EventType</A> <B>PANIC</B></PRE>
-<DL>
-<DD>The event is a Database panic.
- <p>
- Errors can occur in the Berkeley DB library where the only solution is
- to shut down the application and run recovery (for example, if Berkeley
- DB is unable to allocate heap memory). In such cases, the Berkeley DB
- methods will return DB_RUNRECOVERY. It is often easier to simply exit
- the application when such errors occur rather than gracefully return up
- the stack.
- <p>
- When event is set to DB_EVENT_PANIC, the database environment has failed.
- All threads of control in the database environment should exit the
- environment, and recovery should be run.
-<P>
-<DL>
-</DL>
-</DL>
-<HR>
-
-<A NAME="REP_CLIENT"><!-- --></A><H3>
-REP_CLIENT</H3>
-<PRE>
-public static final <A HREF="../../../com/sleepycat/db/EventType.html" title="class in com.sleepycat.db">EventType</A> <B>REP_CLIENT</B></PRE>
-<DL>
-<DD>The event is a replication client message, meaning that the current site
- is now a client in the replication group.
-<P>
-<DL>
-</DL>
-</DL>
-<HR>
-
-<A NAME="REP_MASTER"><!-- --></A><H3>
-REP_MASTER</H3>
-<PRE>
-public static final <A HREF="../../../com/sleepycat/db/EventType.html" title="class in com.sleepycat.db">EventType</A> <B>REP_MASTER</B></PRE>
-<DL>
-<DD>The event is a replication master message, meaning that the current site
- is now the master in the replication group.
-<P>
-<DL>
-</DL>
-</DL>
-<HR>
-
-<A NAME="REP_NEW_MASTER"><!-- --></A><H3>
-REP_NEW_MASTER</H3>
-<PRE>
-public static final <A HREF="../../../com/sleepycat/db/EventType.html" title="class in com.sleepycat.db">EventType</A> <B>REP_NEW_MASTER</B></PRE>
-<DL>
-<DD>The event is a replication new master message.
- <p>
- The replication group of which this site is a member has just established
- a new master; the local site is not the new master.
- <p>
- The DB_EVENT_REP_NEWMASTER event is provided only to applications using
- the replication manager support.
-<P>
-<DL>
-</DL>
-</DL>
-
-<!-- ============ METHOD DETAIL ========== -->
-
-<A NAME="method_detail"><!-- --></A>
-<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
-<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
-<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
-<B>Method Detail</B></FONT></TH>
-</TR>
-</TABLE>
-
-<A NAME="toString()"><!-- --></A><H3>
-toString</H3>
-<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
-<DL>
-<DD>
-<P>
-<DD><DL>
-<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
-</DD>
-<DD><DL>
-</DL>
-</DD>
-</DL>
-<HR>
-
-<A NAME="fromInt(int)"><!-- --></A><H3>
-fromInt</H3>
-<PRE>
-public static <A HREF="../../../com/sleepycat/db/EventType.html" title="class in com.sleepycat.db">EventType</A> <B>fromInt</B>(int&nbsp;type)</PRE>
-<DL>
-<DD>Internal: this is public only so it can be called from an internal
- package.
-<P>
-<DD><DL>
-<DT><B>Parameters:</B><DD><CODE>type</CODE> - the internal flag value to be wrapped in an EventType object</DL>
-</DD>
-</DL>
-<!-- ========= END OF CLASS DATA ========= -->
-<HR>
-
-
-<!-- ======= START OF BOTTOM NAVBAR ====== -->
-<A NAME="navbar_bottom"><!-- --></A>
-<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
-<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
-<TR>
-<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
-<A NAME="navbar_bottom_firstrow"><!-- --></A>
-<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
- <TR ALIGN="center" VALIGN="top">
- <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
- <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
- <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
- <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/EventType.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
- <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
- <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
- <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
- <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
- </TR>
-</TABLE>
-</TD>
-<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
-</TD>
-</TR>
-
-<TR>
-<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
-&nbsp;<A HREF="../../../com/sleepycat/db/EventHandler.html" title="interface in com.sleepycat.db"><B>PREV CLASS</B></A>&nbsp;
-&nbsp;<A HREF="../../../com/sleepycat/db/FeedbackHandler.html" title="interface in com.sleepycat.db"><B>NEXT CLASS</B></A></FONT></TD>
-<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
- <A HREF="../../../index.html?com/sleepycat/db/EventType.html" target="_top"><B>FRAMES</B></A> &nbsp;
-&nbsp;<A HREF="EventType.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
-&nbsp;<SCRIPT type="text/javascript">
- <!--
- if(window==top) {
- document.writeln('<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>');
- }
- //-->
-</SCRIPT>
-<NOSCRIPT>
- <A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>
-</NOSCRIPT>
-
-
-</FONT></TD>
-</TR>
-<TR>
-<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
- SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
-<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
-DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
-</TR>
-</TABLE>
-<A NAME="skip-navbar_bottom"></A>
-<!-- ======== END OF BOTTOM NAVBAR ======= -->
-
-<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
-</BODY>
-</HTML>
diff --git a/db/docs/java/com/sleepycat/db/FeedbackHandler.html b/db/docs/java/com/sleepycat/db/FeedbackHandler.html
index f9fdd85c8..b14075475 100644
--- a/db/docs/java/com/sleepycat/db/FeedbackHandler.html
+++ b/db/docs/java/com/sleepycat/db/FeedbackHandler.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:57 EDT 2007 -->
<TITLE>
-FeedbackHandler (Oracle Corporation - Berkeley DB Java API)
+FeedbackHandler (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.FeedbackHandler interface">
@@ -14,7 +14,7 @@ FeedbackHandler (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="FeedbackHandler (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="FeedbackHandler (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,13 +46,13 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
-&nbsp;<A HREF="../../../com/sleepycat/db/EventType.html" title="class in com.sleepycat.db"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../com/sleepycat/db/EventHandlerAdapter.html" title="class in com.sleepycat.db"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../com/sleepycat/db/Hasher.html" title="interface in com.sleepycat.db"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../index.html?com/sleepycat/db/FeedbackHandler.html" target="_top"><B>FRAMES</B></A> &nbsp;
@@ -234,13 +234,13 @@ between 0 and 100.</DL>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
-&nbsp;<A HREF="../../../com/sleepycat/db/EventType.html" title="class in com.sleepycat.db"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../com/sleepycat/db/EventHandlerAdapter.html" title="class in com.sleepycat.db"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../com/sleepycat/db/Hasher.html" title="interface in com.sleepycat.db"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../index.html?com/sleepycat/db/FeedbackHandler.html" target="_top"><B>FRAMES</B></A> &nbsp;
@@ -270,6 +270,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHO
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/HashStats.html b/db/docs/java/com/sleepycat/db/HashStats.html
index 9ff4e33a8..a2f07035e 100644
--- a/db/docs/java/com/sleepycat/db/HashStats.html
+++ b/db/docs/java/com/sleepycat/db/HashStats.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:57 EDT 2007 -->
<TITLE>
-HashStats (Oracle Corporation - Berkeley DB Java API)
+HashStats (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.HashStats class">
@@ -14,7 +14,7 @@ HashStats (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="HashStats (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="HashStats (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,7 +89,7 @@ com.sleepycat.db</FONT>
<BR>
Class HashStats</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../com/sleepycat/db/DatabaseStats.html" title="class in com.sleepycat.db">com.sleepycat.db.DatabaseStats</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.HashStats</B>
</PRE>
@@ -230,6 +230,14 @@ The HashStats object is used to return Hash database statistics.
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/HashStats.html#getPageCount()">getPageCount</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The number of pages in the database.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/HashStats.html#getPageSize()">getPageSize</A></B>()</CODE>
<BR>
@@ -245,7 +253,7 @@ The HashStats object is used to return Hash database statistics.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/HashStats.html#toString()">toString</A></B>()</CODE>
<BR>
@@ -256,10 +264,10 @@ The HashStats object is used to return Hash database statistics.
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -350,6 +358,21 @@ public int <B>getNumData</B>()</PRE>
</DL>
<HR>
+<A NAME="getPageCount()"><!-- --></A><H3>
+getPageCount</H3>
+<PRE>
+public int <B>getPageCount</B>()</PRE>
+<DL>
+<DD>The number of pages in the database.
+ <p>
+ Returned if <A HREF="../../../com/sleepycat/db/StatsConfig.html#setFast(boolean)"><CODE>StatsConfig.setFast(boolean)</CODE></A> was configured.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
<A NAME="getPageSize()"><!-- --></A><H3>
getPageSize</H3>
<PRE>
@@ -520,13 +543,13 @@ was not configured by the <A HREF="../../../com/sleepycat/db/StatsConfig.html#se
<A NAME="toString()"><!-- --></A><H3>
toString</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
<DL>
<DD>For convenience, the HashStats class has a toString method
that lists all the data fields.
<P>
<DD><DL>
-<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
</DD>
<DD><DL>
</DL>
@@ -557,7 +580,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" tit
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -593,6 +616,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHO
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/Hasher.html b/db/docs/java/com/sleepycat/db/Hasher.html
index 611ceda75..4488739e8 100644
--- a/db/docs/java/com/sleepycat/db/Hasher.html
+++ b/db/docs/java/com/sleepycat/db/Hasher.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:57 EDT 2007 -->
<TITLE>
-Hasher (Oracle Corporation - Berkeley DB Java API)
+Hasher (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.Hasher interface">
@@ -14,7 +14,7 @@ Hasher (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Hasher (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Hasher (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -178,7 +178,7 @@ int <B>hash</B>(<A HREF="../../../com/sleepycat/db/Database.html" title="class i
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -214,6 +214,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHO
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/JoinConfig.html b/db/docs/java/com/sleepycat/db/JoinConfig.html
index 57afe75f7..305aabd69 100644
--- a/db/docs/java/com/sleepycat/db/JoinConfig.html
+++ b/db/docs/java/com/sleepycat/db/JoinConfig.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:57 EDT 2007 -->
<TITLE>
-JoinConfig (Oracle Corporation - Berkeley DB Java API)
+JoinConfig (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.JoinConfig class">
@@ -14,7 +14,7 @@ JoinConfig (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="JoinConfig (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="JoinConfig (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,15 +89,15 @@ com.sleepycat.db</FONT>
<BR>
Class JoinConfig</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.JoinConfig</B>
</PRE>
<DL>
-<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A></DD>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A></DD>
</DL>
<HR>
<DL>
-<DT><PRE>public class <B>JoinConfig</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A><DT>implements <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A></DL>
+<DT><PRE>public class <B>JoinConfig</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A><DT>implements <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A></DL>
</PRE>
<P>
@@ -185,10 +185,10 @@ To set custom attributes:
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -321,7 +321,7 @@ public boolean <B>getNoSort</B>()</PRE>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -357,6 +357,6 @@ DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/JoinCursor.html b/db/docs/java/com/sleepycat/db/JoinCursor.html
index 42c4549d7..7b499c8fb 100644
--- a/db/docs/java/com/sleepycat/db/JoinCursor.html
+++ b/db/docs/java/com/sleepycat/db/JoinCursor.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:57 EDT 2007 -->
<TITLE>
-JoinCursor (Oracle Corporation - Berkeley DB Java API)
+JoinCursor (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.JoinCursor class">
@@ -14,7 +14,7 @@ JoinCursor (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="JoinCursor (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="JoinCursor (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,12 +89,12 @@ com.sleepycat.db</FONT>
<BR>
Class JoinCursor</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.JoinCursor</B>
</PRE>
<HR>
<DL>
-<DT><PRE>public class <B>JoinCursor</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
+<DT><PRE>public class <B>JoinCursor</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
</PRE>
<P>
@@ -217,10 +217,10 @@ To open a join cursor using two secondary cursors:
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -308,16 +308,16 @@ caller.
<p><DD><CODE>lockMode</CODE> - the locking attributes; if null, default attributes are used.
<p>
<DT><B>Returns:</B><DD><A HREF="../../../com/sleepycat/db/OperationStatus.html#NOTFOUND"><CODE>OperationStatus.NOTFOUND</CODE></A> if no matching key/data pair is
-found; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
+found; <A HREF="../../../com/sleepycat/db/OperationStatus.html#KEYEMPTY"><CODE>OperationStatus.KEYEMPTY</CODE></A> if the database is a Queue or Recno database and the specified key exists, but was never explicitly created by the application or was later deleted; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
<p>
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
does not contain a required non-null byte array.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DeadlockException.html" title="class in com.sleepycat.db">DeadlockException</A></CODE> - if the operation was selected to resolve a
deadlock.
<p>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.</DL>
</DD>
@@ -349,16 +349,16 @@ caller.
<p><DD><CODE>lockMode</CODE> - the locking attributes; if null, default attributes are used.
<p>
<DT><B>Returns:</B><DD><A HREF="../../../com/sleepycat/db/OperationStatus.html#NOTFOUND"><CODE>OperationStatus.NOTFOUND</CODE></A> if no matching key/data pair is
-found; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
+found; <A HREF="../../../com/sleepycat/db/OperationStatus.html#KEYEMPTY"><CODE>OperationStatus.KEYEMPTY</CODE></A> if the database is a Queue or Recno database and the specified key exists, but was never explicitly created by the application or was later deleted; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
<p>
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
does not contain a required non-null byte array.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DeadlockException.html" title="class in com.sleepycat.db">DeadlockException</A></CODE> - if the operation was selected to resolve a
deadlock.
<p>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.</DL>
</DD>
@@ -388,7 +388,7 @@ deadlock.
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -424,6 +424,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHO
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/KeyRange.html b/db/docs/java/com/sleepycat/db/KeyRange.html
index 9653a9946..04f45bd7c 100644
--- a/db/docs/java/com/sleepycat/db/KeyRange.html
+++ b/db/docs/java/com/sleepycat/db/KeyRange.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:57 EDT 2007 -->
<TITLE>
-KeyRange (Oracle Corporation - Berkeley DB Java API)
+KeyRange (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.KeyRange class">
@@ -14,7 +14,7 @@ KeyRange (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="KeyRange (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="KeyRange (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,12 +89,12 @@ com.sleepycat.db</FONT>
<BR>
Class KeyRange</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.KeyRange</B>
</PRE>
<HR>
<DL>
-<DT><PRE>public class <B>KeyRange</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
+<DT><PRE>public class <B>KeyRange</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
</PRE>
<P>
@@ -169,10 +169,10 @@ An object that returns status from the <A HREF="../../../com/sleepycat/db/Databa
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -272,7 +272,7 @@ public <B>KeyRange</B>()</PRE>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -308,6 +308,6 @@ DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/Lock.html b/db/docs/java/com/sleepycat/db/Lock.html
index e5fddd617..50eb4a9bc 100644
--- a/db/docs/java/com/sleepycat/db/Lock.html
+++ b/db/docs/java/com/sleepycat/db/Lock.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:57 EDT 2007 -->
<TITLE>
-Lock (Oracle Corporation - Berkeley DB Java API)
+Lock (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.Lock class">
@@ -14,7 +14,7 @@ Lock (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Lock (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Lock (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,12 +89,12 @@ com.sleepycat.db</FONT>
<BR>
Class Lock</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.Lock</B>
</PRE>
<HR>
<DL>
-<DT><PRE>public final class <B>Lock</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
+<DT><PRE>public final class <B>Lock</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
</PRE>
<P>
@@ -120,10 +120,10 @@ a single lock, and has no methods of its own.
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -153,7 +153,7 @@ a single lock, and has no methods of its own.
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -189,6 +189,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;METHOD</FONT></TD>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/LockDetectMode.html b/db/docs/java/com/sleepycat/db/LockDetectMode.html
index 67acc339a..d4c1bd96b 100644
--- a/db/docs/java/com/sleepycat/db/LockDetectMode.html
+++ b/db/docs/java/com/sleepycat/db/LockDetectMode.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:57 EDT 2007 -->
<TITLE>
-LockDetectMode (Oracle Corporation - Berkeley DB Java API)
+LockDetectMode (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.LockDetectMode class">
@@ -14,7 +14,7 @@ LockDetectMode (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="LockDetectMode (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="LockDetectMode (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,12 +89,12 @@ com.sleepycat.db</FONT>
<BR>
Class LockDetectMode</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.LockDetectMode</B>
</PRE>
<HR>
<DL>
-<DT><PRE>public final class <B>LockDetectMode</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
+<DT><PRE>public final class <B>LockDetectMode</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
</PRE>
<P>
@@ -206,7 +206,7 @@ Deadlock detection modes.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/LockDetectMode.html#toString()">toString</A></B>()</CODE>
<BR>
@@ -216,10 +216,10 @@ Deadlock detection modes.
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -370,12 +370,12 @@ public static final <A HREF="../../../com/sleepycat/db/LockDetectMode.html" titl
<A NAME="toString()"><!-- --></A><H3>
toString</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
<DL>
<DD>
<P>
<DD><DL>
-<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
</DD>
<DD><DL>
</DL>
@@ -406,7 +406,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" tit
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -442,6 +442,6 @@ DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/LockMode.html b/db/docs/java/com/sleepycat/db/LockMode.html
index 7e897c7c2..1bdb95df9 100644
--- a/db/docs/java/com/sleepycat/db/LockMode.html
+++ b/db/docs/java/com/sleepycat/db/LockMode.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:57 EDT 2007 -->
<TITLE>
-LockMode (Oracle Corporation - Berkeley DB Java API)
+LockMode (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.LockMode class">
@@ -14,7 +14,7 @@ LockMode (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="LockMode (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="LockMode (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,12 +89,12 @@ com.sleepycat.db</FONT>
<BR>
Class LockMode</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.LockMode</B>
</PRE>
<HR>
<DL>
-<DT><PRE>public final class <B>LockMode</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
+<DT><PRE>public final class <B>LockMode</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
</PRE>
<P>
@@ -178,7 +178,7 @@ parameters for operations that retrieve data or modify the database.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/LockMode.html#toString()">toString</A></B>()</CODE>
<BR>
@@ -188,10 +188,10 @@ parameters for operations that retrieve data or modify the database.
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -314,12 +314,12 @@ public static final <A HREF="../../../com/sleepycat/db/LockMode.html" title="cla
<A NAME="toString()"><!-- --></A><H3>
toString</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
<DL>
<DD>
<P>
<DD><DL>
-<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
</DD>
<DD><DL>
</DL>
@@ -350,7 +350,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" tit
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -386,6 +386,6 @@ DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/LockNotGrantedException.html b/db/docs/java/com/sleepycat/db/LockNotGrantedException.html
index 71f66cda8..385ca8734 100644
--- a/db/docs/java/com/sleepycat/db/LockNotGrantedException.html
+++ b/db/docs/java/com/sleepycat/db/LockNotGrantedException.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:57 EDT 2007 -->
<TITLE>
-LockNotGrantedException (Oracle Corporation - Berkeley DB Java API)
+LockNotGrantedException (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.LockNotGrantedException class">
@@ -14,7 +14,7 @@ LockNotGrantedException (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="LockNotGrantedException (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="LockNotGrantedException (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,15 +89,15 @@ com.sleepycat.db</FONT>
<BR>
Class LockNotGrantedException</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
- <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">java.lang.Throwable</A>
- <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Exception.html" title="class or interface in java.lang">java.lang.Exception</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+ <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">java.lang.Throwable</A>
+ <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Exception.html" title="class or interface in java.lang">java.lang.Exception</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">com.sleepycat.db.DatabaseException</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../com/sleepycat/db/DeadlockException.html" title="class in com.sleepycat.db">com.sleepycat.db.DeadlockException</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.LockNotGrantedException</B>
</PRE>
<DL>
-<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/Serializable.html" title="class or interface in java.io">Serializable</A></DD>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Serializable.html" title="class or interface in java.io">Serializable</A></DD>
</DL>
<HR>
<DL>
@@ -193,19 +193,19 @@ timeouts have been configured and a database operation has timed out.
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Throwable"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang">fillInStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#getCause()" title="class or interface in java.lang">getCause</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang">getLocalizedMessage</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang">getMessage</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang">getStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang">initCause</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement[])" title="class or interface in java.lang">setStackTrace</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang">fillInStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getCause()" title="class or interface in java.lang">getCause</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang">getLocalizedMessage</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang">getMessage</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang">getStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang">initCause</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement[])" title="class or interface in java.lang">setStackTrace</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -316,7 +316,7 @@ public int <B>getOp</B>()</PRE>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -352,6 +352,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHO
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/LockOperation.html b/db/docs/java/com/sleepycat/db/LockOperation.html
index 73b8152e9..fc3da6931 100644
--- a/db/docs/java/com/sleepycat/db/LockOperation.html
+++ b/db/docs/java/com/sleepycat/db/LockOperation.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:57 EDT 2007 -->
<TITLE>
-LockOperation (Oracle Corporation - Berkeley DB Java API)
+LockOperation (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.LockOperation class">
@@ -14,7 +14,7 @@ LockOperation (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="LockOperation (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="LockOperation (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,12 +89,12 @@ com.sleepycat.db</FONT>
<BR>
Class LockOperation</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.LockOperation</B>
</PRE>
<HR>
<DL>
-<DT><PRE>public final class <B>LockOperation</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
+<DT><PRE>public final class <B>LockOperation</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
</PRE>
<P>
@@ -176,7 +176,7 @@ Operations that can be performed on locks.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/LockOperation.html#toString()">toString</A></B>()</CODE>
<BR>
@@ -186,10 +186,10 @@ Operations that can be performed on locks.
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -310,12 +310,12 @@ public static final <A HREF="../../../com/sleepycat/db/LockOperation.html" title
<A NAME="toString()"><!-- --></A><H3>
toString</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
<DL>
<DD>
<P>
<DD><DL>
-<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
</DD>
<DD><DL>
</DL>
@@ -346,7 +346,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" tit
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -382,6 +382,6 @@ DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/LockRequest.html b/db/docs/java/com/sleepycat/db/LockRequest.html
index 0956139f0..a9f5d4049 100644
--- a/db/docs/java/com/sleepycat/db/LockRequest.html
+++ b/db/docs/java/com/sleepycat/db/LockRequest.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:57 EDT 2007 -->
<TITLE>
-LockRequest (Oracle Corporation - Berkeley DB Java API)
+LockRequest (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.LockRequest class">
@@ -14,7 +14,7 @@ LockRequest (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="LockRequest (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="LockRequest (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,12 +89,12 @@ com.sleepycat.db</FONT>
<BR>
Class LockRequest</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.LockRequest</B>
</PRE>
<HR>
<DL>
-<DT><PRE>public class <B>LockRequest</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
+<DT><PRE>public class <B>LockRequest</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
</PRE>
<P>
@@ -229,10 +229,10 @@ The LockRequest object is used to encapsulate a single lock request.
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -457,7 +457,7 @@ public int <B>getTimeout</B>()</PRE>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -493,6 +493,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&n
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/LockRequestMode.html b/db/docs/java/com/sleepycat/db/LockRequestMode.html
index d3c115ae3..aa2523271 100644
--- a/db/docs/java/com/sleepycat/db/LockRequestMode.html
+++ b/db/docs/java/com/sleepycat/db/LockRequestMode.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:57 EDT 2007 -->
<TITLE>
-LockRequestMode (Oracle Corporation - Berkeley DB Java API)
+LockRequestMode (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.LockRequestMode class">
@@ -14,7 +14,7 @@ LockRequestMode (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="LockRequestMode (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="LockRequestMode (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,12 +89,12 @@ com.sleepycat.db</FONT>
<BR>
Class LockRequestMode</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.LockRequestMode</B>
</PRE>
<HR>
<DL>
-<DT><PRE>public final class <B>LockRequestMode</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
+<DT><PRE>public final class <B>LockRequestMode</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
</PRE>
<P>
@@ -165,7 +165,7 @@ defines the set of possible lock modes.
<B>Constructor Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><B><A HREF="../../../com/sleepycat/db/LockRequestMode.html#LockRequestMode(java.lang.String, int)">LockRequestMode</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;operationName,
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/LockRequestMode.html#LockRequestMode(java.lang.String, int)">LockRequestMode</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;operationName,
int&nbsp;flag)</CODE>
<BR>
@@ -183,7 +183,7 @@ defines the set of possible lock modes.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/LockRequestMode.html#toString()">toString</A></B>()</CODE>
<BR>
@@ -193,10 +193,10 @@ defines the set of possible lock modes.
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -284,7 +284,7 @@ public static final <A HREF="../../../com/sleepycat/db/LockRequestMode.html" tit
<A NAME="LockRequestMode(java.lang.String, int)"><!-- --></A><H3>
LockRequestMode</H3>
<PRE>
-public <B>LockRequestMode</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;operationName,
+public <B>LockRequestMode</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;operationName,
int&nbsp;flag)</PRE>
<DL>
<DD>Construct a custom lock request mode.
@@ -308,12 +308,12 @@ public <B>LockRequestMode</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/jav
<A NAME="toString()"><!-- --></A><H3>
toString</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
<DL>
<DD>
<P>
<DD><DL>
-<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
</DD>
<DD><DL>
</DL>
@@ -344,7 +344,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" tit
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -380,6 +380,6 @@ DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/LockStats.html b/db/docs/java/com/sleepycat/db/LockStats.html
index db9de9eaa..d1a639e56 100644
--- a/db/docs/java/com/sleepycat/db/LockStats.html
+++ b/db/docs/java/com/sleepycat/db/LockStats.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:57 EDT 2007 -->
<TITLE>
-LockStats (Oracle Corporation - Berkeley DB Java API)
+LockStats (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.LockStats class">
@@ -14,7 +14,7 @@ LockStats (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="LockStats (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="LockStats (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,12 +89,12 @@ com.sleepycat.db</FONT>
<BR>
Class LockStats</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.LockStats</B>
</PRE>
<HR>
<DL>
-<DT><PRE>public class <B>LockStats</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
+<DT><PRE>public class <B>LockStats</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
</PRE>
<P>
@@ -125,6 +125,14 @@ Lock statistics for a database environment.
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/LockStats.html#getHashLen()">getHashLen</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Maximum length of a lock hash bucket.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/LockStats.html#getId()">getId</A></B>()</CODE>
<BR>
@@ -133,6 +141,24 @@ Lock statistics for a database environment.
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/LockStats.html#getLockersNowait()">getLockersNowait</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The number of requests to allocate or deallocate a locker for which the
+ thread of control did not wait.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/LockStats.html#getLockersWait()">getLockersWait</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The number of requests to allocate or deallocate a locker for which the
+ thread of control waited.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/LockStats.html#getLockNowait()">getLockNowait</A></B>()</CODE>
<BR>
@@ -142,6 +168,24 @@ Lock statistics for a database environment.
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/LockStats.html#getLocksNowait()">getLocksNowait</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The number of requests to allocate or deallocate a lock structure for which
+ the thread of control did not wait.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/LockStats.html#getLocksWait()">getLocksWait</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The number of requests to allocate or deallocate a lock structure for which
+ the thread of control waited.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/LockStats.html#getLockTimeout()">getLockTimeout</A></B>()</CODE>
<BR>
@@ -295,6 +339,24 @@ Lock statistics for a database environment.
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/LockStats.html#getObjsNowait()">getObjsNowait</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The number of requests to allocate or deallocate an object for which the
+ thread of control did not wait.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/LockStats.html#getObjsWait()">getObjsWait</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The number of requests to allocate or deallocate an object for which the
+ thread of control waited.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/LockStats.html#getRegionNowait()">getRegionNowait</A></B>()</CODE>
<BR>
@@ -328,7 +390,7 @@ Lock statistics for a database environment.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/LockStats.html#toString()">toString</A></B>()</CODE>
<BR>
@@ -339,10 +401,10 @@ Lock statistics for a database environment.
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -361,13 +423,13 @@ Lock statistics for a database environment.
<A NAME="toString()"><!-- --></A><H3>
toString</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
<DL>
<DD>For convenience, the LockStats class has a toString method
that lists all the data fields.
<P>
<DD><DL>
-<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
</DD>
<DD><DL>
</DL>
@@ -675,13 +737,13 @@ public int <B>getNumUpgrade</B>()</PRE>
</DL>
<HR>
-<A NAME="getRegionWait()"><!-- --></A><H3>
-getRegionWait</H3>
+<A NAME="getObjsWait()"><!-- --></A><H3>
+getObjsWait</H3>
<PRE>
-public int <B>getRegionWait</B>()</PRE>
+public int <B>getObjsWait</B>()</PRE>
<DL>
-<DD>The number of times that a thread of control was forced to wait
- before obtaining the region lock.
+<DD>The number of requests to allocate or deallocate an object for which the
+ thread of control waited.
<P>
<DD><DL>
</DL>
@@ -689,13 +751,82 @@ public int <B>getRegionWait</B>()</PRE>
</DL>
<HR>
-<A NAME="getRegionNowait()"><!-- --></A><H3>
-getRegionNowait</H3>
+<A NAME="getObjsNowait()"><!-- --></A><H3>
+getObjsNowait</H3>
<PRE>
-public int <B>getRegionNowait</B>()</PRE>
+public int <B>getObjsNowait</B>()</PRE>
<DL>
-<DD>The number of times that a thread of control was able to obtain the
- region lock without waiting.
+<DD>The number of requests to allocate or deallocate an object for which the
+ thread of control did not wait.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getLockersWait()"><!-- --></A><H3>
+getLockersWait</H3>
+<PRE>
+public int <B>getLockersWait</B>()</PRE>
+<DL>
+<DD>The number of requests to allocate or deallocate a locker for which the
+ thread of control waited.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getLockersNowait()"><!-- --></A><H3>
+getLockersNowait</H3>
+<PRE>
+public int <B>getLockersNowait</B>()</PRE>
+<DL>
+<DD>The number of requests to allocate or deallocate a locker for which the
+ thread of control did not wait.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getLocksWait()"><!-- --></A><H3>
+getLocksWait</H3>
+<PRE>
+public int <B>getLocksWait</B>()</PRE>
+<DL>
+<DD>The number of requests to allocate or deallocate a lock structure for which
+ the thread of control waited.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getLocksNowait()"><!-- --></A><H3>
+getLocksNowait</H3>
+<PRE>
+public int <B>getLocksNowait</B>()</PRE>
+<DL>
+<DD>The number of requests to allocate or deallocate a lock structure for which
+ the thread of control did not wait.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getHashLen()"><!-- --></A><H3>
+getHashLen</H3>
+<PRE>
+public int <B>getHashLen</B>()</PRE>
+<DL>
+<DD>Maximum length of a lock hash bucket.
<P>
<DD><DL>
</DL>
@@ -714,6 +845,34 @@ public int <B>getRegSize</B>()</PRE>
</DL>
</DD>
</DL>
+<HR>
+
+<A NAME="getRegionWait()"><!-- --></A><H3>
+getRegionWait</H3>
+<PRE>
+public int <B>getRegionWait</B>()</PRE>
+<DL>
+<DD>The number of times that a thread of control was forced to wait
+ before obtaining the region lock.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getRegionNowait()"><!-- --></A><H3>
+getRegionNowait</H3>
+<PRE>
+public int <B>getRegionNowait</B>()</PRE>
+<DL>
+<DD>The number of times that a thread of control was able to obtain the
+ region lock without waiting.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
<!-- ========= END OF CLASS DATA ========= -->
<HR>
@@ -739,7 +898,7 @@ public int <B>getRegSize</B>()</PRE>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -775,6 +934,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHO
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/LogCursor.html b/db/docs/java/com/sleepycat/db/LogCursor.html
index 8b774b6e9..b7b57bfab 100644
--- a/db/docs/java/com/sleepycat/db/LogCursor.html
+++ b/db/docs/java/com/sleepycat/db/LogCursor.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:57 EDT 2007 -->
<TITLE>
-LogCursor (Oracle Corporation - Berkeley DB Java API)
+LogCursor (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.LogCursor class">
@@ -14,7 +14,7 @@ LogCursor (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="LogCursor (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="LogCursor (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,12 +89,12 @@ com.sleepycat.db</FONT>
<BR>
Class LogCursor</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.LogCursor</B>
</PRE>
<HR>
<DL>
-<DT><PRE>public class <B>LogCursor</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
+<DT><PRE>public class <B>LogCursor</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
</PRE>
<P>
@@ -182,14 +182,22 @@ that method's success or failure.
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return a specific log record.</TD>
</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/LogCursor.html#version()">version</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the log file version.</TD>
+</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -388,6 +396,26 @@ public <A HREF="../../../com/sleepycat/db/OperationStatus.html" title="class in
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.</DL>
</DD>
</DL>
+<HR>
+
+<A NAME="version()"><!-- --></A><H3>
+version</H3>
+<PRE>
+public int <B>version</B>()
+ throws <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></PRE>
+<DL>
+<DD>Get the log file version.
+ <p>
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>The log file version.
+ <p>
+ <p>
+<DT><B>Throws:</B>
+<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.</DL>
+</DD>
+</DL>
<!-- ========= END OF CLASS DATA ========= -->
<HR>
@@ -413,7 +441,7 @@ public <A HREF="../../../com/sleepycat/db/OperationStatus.html" title="class in
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -449,6 +477,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHO
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/LogRecordHandler.html b/db/docs/java/com/sleepycat/db/LogRecordHandler.html
index f36225242..d6e0e3849 100644
--- a/db/docs/java/com/sleepycat/db/LogRecordHandler.html
+++ b/db/docs/java/com/sleepycat/db/LogRecordHandler.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:57 EDT 2007 -->
<TITLE>
-LogRecordHandler (Oracle Corporation - Berkeley DB Java API)
+LogRecordHandler (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.LogRecordHandler interface">
@@ -14,7 +14,7 @@ LogRecordHandler (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="LogRecordHandler (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="LogRecordHandler (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -172,7 +172,7 @@ int <B>handleLogRecord</B>(<A HREF="../../../com/sleepycat/db/Environment.html"
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -208,6 +208,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHO
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/LogSequenceNumber.html b/db/docs/java/com/sleepycat/db/LogSequenceNumber.html
index e74438f42..6a7e622ad 100644
--- a/db/docs/java/com/sleepycat/db/LogSequenceNumber.html
+++ b/db/docs/java/com/sleepycat/db/LogSequenceNumber.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:57 EDT 2007 -->
<TITLE>
-LogSequenceNumber (Oracle Corporation - Berkeley DB Java API)
+LogSequenceNumber (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.LogSequenceNumber class">
@@ -14,7 +14,7 @@ LogSequenceNumber (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="LogSequenceNumber (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="LogSequenceNumber (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,12 +89,12 @@ com.sleepycat.db</FONT>
<BR>
Class LogSequenceNumber</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.LogSequenceNumber</B>
</PRE>
<HR>
<DL>
-<DT><PRE>public class <B>LogSequenceNumber</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
+<DT><PRE>public class <B>LogSequenceNumber</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
</PRE>
<P>
@@ -169,10 +169,10 @@ and the other specifies the offset in the log file.
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -298,7 +298,7 @@ public static int <B>compare</B>(<A HREF="../../../com/sleepycat/db/LogSequenceN
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -334,6 +334,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&n
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/LogStats.html b/db/docs/java/com/sleepycat/db/LogStats.html
index 28aabcd53..02443c0a2 100644
--- a/db/docs/java/com/sleepycat/db/LogStats.html
+++ b/db/docs/java/com/sleepycat/db/LogStats.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:57 EDT 2007 -->
<TITLE>
-LogStats (Oracle Corporation - Berkeley DB Java API)
+LogStats (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.LogStats class">
@@ -14,7 +14,7 @@ LogStats (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="LogStats (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="LogStats (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,12 +89,12 @@ com.sleepycat.db</FONT>
<BR>
Class LogStats</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.LogStats</B>
</PRE>
<HR>
<DL>
-<DT><PRE>public class <B>LogStats</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
+<DT><PRE>public class <B>LogStats</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
</PRE>
<P>
@@ -305,7 +305,7 @@ Log statistics for a database environment.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/LogStats.html#toString()">toString</A></B>()</CODE>
<BR>
@@ -316,10 +316,10 @@ Log statistics for a database environment.
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -642,13 +642,13 @@ public int <B>getMinCommitperflush</B>()</PRE>
<A NAME="toString()"><!-- --></A><H3>
toString</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
<DL>
<DD>For convenience, the LogStats class has a toString method that lists
all the data fields.
<P>
<DD><DL>
-<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
</DD>
<DD><DL>
</DL>
@@ -679,7 +679,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" tit
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -715,6 +715,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHO
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/MemoryException.html b/db/docs/java/com/sleepycat/db/MemoryException.html
index 35ba444f4..606e9e861 100644
--- a/db/docs/java/com/sleepycat/db/MemoryException.html
+++ b/db/docs/java/com/sleepycat/db/MemoryException.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:57 EDT 2007 -->
<TITLE>
-MemoryException (Oracle Corporation - Berkeley DB Java API)
+MemoryException (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.MemoryException class">
@@ -14,7 +14,7 @@ MemoryException (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="MemoryException (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="MemoryException (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,14 +89,14 @@ com.sleepycat.db</FONT>
<BR>
Class MemoryException</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
- <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">java.lang.Throwable</A>
- <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Exception.html" title="class or interface in java.lang">java.lang.Exception</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+ <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">java.lang.Throwable</A>
+ <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Exception.html" title="class or interface in java.lang">java.lang.Exception</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">com.sleepycat.db.DatabaseException</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.MemoryException</B>
</PRE>
<DL>
-<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/Serializable.html" title="class or interface in java.io">Serializable</A></DD>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Serializable.html" title="class or interface in java.io">Serializable</A></DD>
</DL>
<HR>
<DL>
@@ -112,7 +112,7 @@ enough to hold a value being returned. This only applies to
In a Java Virtual Machine, there are usually separate heaps for memory
allocated by native code and for objects allocated in Java code. If the
Java heap is exhausted, the JVM will throw an
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/OutOfMemoryError.html" title="class or interface in java.lang"><CODE>OutOfMemoryError</CODE></A>, so you may see that exception
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/OutOfMemoryError.html" title="class or interface in java.lang"><CODE>OutOfMemoryError</CODE></A>, so you may see that exception
rather than this one.
<P>
@@ -142,7 +142,7 @@ rather than this one.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/MemoryException.html#toString()">toString</A></B>()</CODE>
<BR>
@@ -161,19 +161,19 @@ rather than this one.
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Throwable"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang">fillInStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#getCause()" title="class or interface in java.lang">getCause</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang">getLocalizedMessage</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang">getMessage</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang">getStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang">initCause</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement[])" title="class or interface in java.lang">setStackTrace</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang">fillInStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getCause()" title="class or interface in java.lang">getCause</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang">getLocalizedMessage</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang">getMessage</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang">getStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang">initCause</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement[])" title="class or interface in java.lang">setStackTrace</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -206,7 +206,7 @@ public <A HREF="../../../com/sleepycat/db/DatabaseEntry.html" title="class in co
<A NAME="toString()"><!-- --></A><H3>
toString</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
<DL>
<DD>
<P>
@@ -242,7 +242,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" tit
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -278,6 +278,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHO
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/MessageHandler.html b/db/docs/java/com/sleepycat/db/MessageHandler.html
index bc9b10301..18af4567f 100644
--- a/db/docs/java/com/sleepycat/db/MessageHandler.html
+++ b/db/docs/java/com/sleepycat/db/MessageHandler.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:57 EDT 2007 -->
<TITLE>
-MessageHandler (Oracle Corporation - Berkeley DB Java API)
+MessageHandler (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.MessageHandler interface">
@@ -14,7 +14,7 @@ MessageHandler (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="MessageHandler (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="MessageHandler (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -115,7 +115,7 @@ informational messages.
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/MessageHandler.html#message(com.sleepycat.db.Environment, java.lang.String)">message</A></B>(<A HREF="../../../com/sleepycat/db/Environment.html" title="class in com.sleepycat.db">Environment</A>&nbsp;environment,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;message)</CODE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;message)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A callback function to be called to display informational messages.</TD>
@@ -138,7 +138,7 @@ informational messages.
message</H3>
<PRE>
void <B>message</B>(<A HREF="../../../com/sleepycat/db/Environment.html" title="class in com.sleepycat.db">Environment</A>&nbsp;environment,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;message)</PRE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;message)</PRE>
<DL>
<DD>A callback function to be called to display informational messages.
<p>
@@ -182,7 +182,7 @@ void <B>message</B>(<A HREF="../../../com/sleepycat/db/Environment.html" title="
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -218,6 +218,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHO
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/MultipleDataEntry.html b/db/docs/java/com/sleepycat/db/MultipleDataEntry.html
index 7a88bfc26..c206934ea 100644
--- a/db/docs/java/com/sleepycat/db/MultipleDataEntry.html
+++ b/db/docs/java/com/sleepycat/db/MultipleDataEntry.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:57 EDT 2007 -->
<TITLE>
-MultipleDataEntry (Oracle Corporation - Berkeley DB Java API)
+MultipleDataEntry (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.MultipleDataEntry class">
@@ -14,7 +14,7 @@ MultipleDataEntry (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="MultipleDataEntry (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="MultipleDataEntry (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,7 +89,7 @@ com.sleepycat.db</FONT>
<BR>
Class MultipleDataEntry</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">com.sleepycat.db.DatabaseEntry</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../com/sleepycat/db/MultipleEntry.html" title="class in com.sleepycat.db">com.sleepycat.db.MultipleEntry</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.MultipleDataEntry</B>
@@ -177,10 +177,10 @@ A DatabaseEntry that holds multiple data items returned by a single
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -294,7 +294,7 @@ public boolean <B>next</B>(<A HREF="../../../com/sleepycat/db/DatabaseEntry.html
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -330,6 +330,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&n
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/MultipleEntry.html b/db/docs/java/com/sleepycat/db/MultipleEntry.html
index 3fea46eb2..daae479c3 100644
--- a/db/docs/java/com/sleepycat/db/MultipleEntry.html
+++ b/db/docs/java/com/sleepycat/db/MultipleEntry.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:57 EDT 2007 -->
<TITLE>
-MultipleEntry (Oracle Corporation - Berkeley DB Java API)
+MultipleEntry (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.MultipleEntry class">
@@ -14,7 +14,7 @@ MultipleEntry (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="MultipleEntry (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="MultipleEntry (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,7 +89,7 @@ com.sleepycat.db</FONT>
<BR>
Class MultipleEntry</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">com.sleepycat.db.DatabaseEntry</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.MultipleEntry</B>
</PRE>
@@ -148,10 +148,10 @@ subclasses depending on whether you need:
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -223,7 +223,7 @@ public void <B>setUserBuffer</B>(int&nbsp;length,
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -259,6 +259,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHO
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/MultipleKeyDataEntry.html b/db/docs/java/com/sleepycat/db/MultipleKeyDataEntry.html
index a350e7896..423389bd5 100644
--- a/db/docs/java/com/sleepycat/db/MultipleKeyDataEntry.html
+++ b/db/docs/java/com/sleepycat/db/MultipleKeyDataEntry.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:57 EDT 2007 -->
<TITLE>
-MultipleKeyDataEntry (Oracle Corporation - Berkeley DB Java API)
+MultipleKeyDataEntry (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.MultipleKeyDataEntry class">
@@ -14,7 +14,7 @@ MultipleKeyDataEntry (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="MultipleKeyDataEntry (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="MultipleKeyDataEntry (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,7 +89,7 @@ com.sleepycat.db</FONT>
<BR>
Class MultipleKeyDataEntry</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">com.sleepycat.db.DatabaseEntry</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../com/sleepycat/db/MultipleEntry.html" title="class in com.sleepycat.db">com.sleepycat.db.MultipleEntry</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.MultipleKeyDataEntry</B>
@@ -178,10 +178,10 @@ A DatabaseEntry that holds multiple key/data pairs returned by a single
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -294,7 +294,7 @@ public boolean <B>next</B>(<A HREF="../../../com/sleepycat/db/DatabaseEntry.html
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -330,6 +330,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&n
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/MultipleKeyNIODataEntry.html b/db/docs/java/com/sleepycat/db/MultipleKeyNIODataEntry.html
index 9780e02d2..28dc869c1 100644
--- a/db/docs/java/com/sleepycat/db/MultipleKeyNIODataEntry.html
+++ b/db/docs/java/com/sleepycat/db/MultipleKeyNIODataEntry.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:57 EDT 2007 -->
<TITLE>
-MultipleKeyNIODataEntry (Oracle Corporation - Berkeley DB Java API)
+MultipleKeyNIODataEntry (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.MultipleKeyNIODataEntry class">
@@ -14,7 +14,7 @@ MultipleKeyNIODataEntry (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="MultipleKeyNIODataEntry (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="MultipleKeyNIODataEntry (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,7 +89,7 @@ com.sleepycat.db</FONT>
<BR>
Class MultipleKeyNIODataEntry</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">com.sleepycat.db.DatabaseEntry</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../com/sleepycat/db/MultipleEntry.html" title="class in com.sleepycat.db">com.sleepycat.db.MultipleEntry</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.MultipleKeyNIODataEntry</B>
@@ -124,7 +124,7 @@ A DatabaseEntry that holds multiple key/data pairs returned by a single
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Construct an entry with no data.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><B><A HREF="../../../com/sleepycat/db/MultipleKeyNIODataEntry.html#MultipleKeyNIODataEntry(java.nio.ByteBuffer)">MultipleKeyNIODataEntry</A></B>(java.nio.ByteBuffer&nbsp;data)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/MultipleKeyNIODataEntry.html#MultipleKeyNIODataEntry(java.nio.ByteBuffer)">MultipleKeyNIODataEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/nio/ByteBuffer.html" title="class or interface in java.nio">ByteBuffer</A>&nbsp;data)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Construct an entry with a given java.nio.ByteBuffer.</TD>
@@ -170,10 +170,10 @@ A DatabaseEntry that holds multiple key/data pairs returned by a single
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -203,7 +203,7 @@ public <B>MultipleKeyNIODataEntry</B>()</PRE>
<A NAME="MultipleKeyNIODataEntry(java.nio.ByteBuffer)"><!-- --></A><H3>
MultipleKeyNIODataEntry</H3>
<PRE>
-public <B>MultipleKeyNIODataEntry</B>(java.nio.ByteBuffer&nbsp;data)</PRE>
+public <B>MultipleKeyNIODataEntry</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/nio/ByteBuffer.html" title="class or interface in java.nio">ByteBuffer</A>&nbsp;data)</PRE>
<DL>
<DD>Construct an entry with a given java.nio.ByteBuffer. The offset is
set to zero; the size is set to the length of the buffer.
@@ -269,7 +269,7 @@ public boolean <B>next</B>(<A HREF="../../../com/sleepycat/db/DatabaseEntry.html
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -305,6 +305,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&n
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/MultipleNIODataEntry.html b/db/docs/java/com/sleepycat/db/MultipleNIODataEntry.html
index 6e287527f..63f3cf78e 100644
--- a/db/docs/java/com/sleepycat/db/MultipleNIODataEntry.html
+++ b/db/docs/java/com/sleepycat/db/MultipleNIODataEntry.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:57 EDT 2007 -->
<TITLE>
-MultipleNIODataEntry (Oracle Corporation - Berkeley DB Java API)
+MultipleNIODataEntry (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.MultipleNIODataEntry class">
@@ -14,7 +14,7 @@ MultipleNIODataEntry (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="MultipleNIODataEntry (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="MultipleNIODataEntry (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,7 +89,7 @@ com.sleepycat.db</FONT>
<BR>
Class MultipleNIODataEntry</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">com.sleepycat.db.DatabaseEntry</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../com/sleepycat/db/MultipleEntry.html" title="class in com.sleepycat.db">com.sleepycat.db.MultipleEntry</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.MultipleNIODataEntry</B>
@@ -124,7 +124,7 @@ A DatabaseEntry that holds multiple data items returned by a single
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Construct an entry with no data.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><B><A HREF="../../../com/sleepycat/db/MultipleNIODataEntry.html#MultipleNIODataEntry(java.nio.ByteBuffer)">MultipleNIODataEntry</A></B>(java.nio.ByteBuffer&nbsp;data)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/MultipleNIODataEntry.html#MultipleNIODataEntry(java.nio.ByteBuffer)">MultipleNIODataEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/nio/ByteBuffer.html" title="class or interface in java.nio">ByteBuffer</A>&nbsp;data)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Construct an entry with a given java.nio.ByteBuffer.</TD>
@@ -169,10 +169,10 @@ A DatabaseEntry that holds multiple data items returned by a single
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -202,7 +202,7 @@ public <B>MultipleNIODataEntry</B>()</PRE>
<A NAME="MultipleNIODataEntry(java.nio.ByteBuffer)"><!-- --></A><H3>
MultipleNIODataEntry</H3>
<PRE>
-public <B>MultipleNIODataEntry</B>(java.nio.ByteBuffer&nbsp;data)</PRE>
+public <B>MultipleNIODataEntry</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/nio/ByteBuffer.html" title="class or interface in java.nio">ByteBuffer</A>&nbsp;data)</PRE>
<DL>
<DD>Construct an entry with a given java.nio.ByteBuffer. The offset is
set to zero; the size is set to the length of the java.nio.ByteBuffer.
@@ -269,7 +269,7 @@ public boolean <B>next</B>(<A HREF="../../../com/sleepycat/db/DatabaseEntry.html
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -305,6 +305,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&n
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/MultipleRecnoDataEntry.html b/db/docs/java/com/sleepycat/db/MultipleRecnoDataEntry.html
index 925eae48a..1a6689a5c 100644
--- a/db/docs/java/com/sleepycat/db/MultipleRecnoDataEntry.html
+++ b/db/docs/java/com/sleepycat/db/MultipleRecnoDataEntry.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:57 EDT 2007 -->
<TITLE>
-MultipleRecnoDataEntry (Oracle Corporation - Berkeley DB Java API)
+MultipleRecnoDataEntry (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.MultipleRecnoDataEntry class">
@@ -14,7 +14,7 @@ MultipleRecnoDataEntry (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="MultipleRecnoDataEntry (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="MultipleRecnoDataEntry (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,7 +89,7 @@ com.sleepycat.db</FONT>
<BR>
Class MultipleRecnoDataEntry</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">com.sleepycat.db.DatabaseEntry</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../com/sleepycat/db/MultipleEntry.html" title="class in com.sleepycat.db">com.sleepycat.db.MultipleEntry</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.MultipleRecnoDataEntry</B>
@@ -178,10 +178,10 @@ single <A HREF="../../../com/sleepycat/db/Database.html" title="class in com.sle
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -298,7 +298,7 @@ public boolean <B>next</B>(<A HREF="../../../com/sleepycat/db/DatabaseEntry.html
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -334,6 +334,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&n
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/MultipleRecnoNIODataEntry.html b/db/docs/java/com/sleepycat/db/MultipleRecnoNIODataEntry.html
index b8e7a164f..3a706598c 100644
--- a/db/docs/java/com/sleepycat/db/MultipleRecnoNIODataEntry.html
+++ b/db/docs/java/com/sleepycat/db/MultipleRecnoNIODataEntry.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:57 EDT 2007 -->
<TITLE>
-MultipleRecnoNIODataEntry (Oracle Corporation - Berkeley DB Java API)
+MultipleRecnoNIODataEntry (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.MultipleRecnoNIODataEntry class">
@@ -14,7 +14,7 @@ MultipleRecnoNIODataEntry (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="MultipleRecnoNIODataEntry (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="MultipleRecnoNIODataEntry (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,7 +89,7 @@ com.sleepycat.db</FONT>
<BR>
Class MultipleRecnoNIODataEntry</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">com.sleepycat.db.DatabaseEntry</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../com/sleepycat/db/MultipleEntry.html" title="class in com.sleepycat.db">com.sleepycat.db.MultipleEntry</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.MultipleRecnoNIODataEntry</B>
@@ -124,7 +124,7 @@ single <A HREF="../../../com/sleepycat/db/Database.html" title="class in com.sle
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Construct an entry with no data.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><B><A HREF="../../../com/sleepycat/db/MultipleRecnoNIODataEntry.html#MultipleRecnoNIODataEntry(java.nio.ByteBuffer)">MultipleRecnoNIODataEntry</A></B>(java.nio.ByteBuffer&nbsp;data)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/MultipleRecnoNIODataEntry.html#MultipleRecnoNIODataEntry(java.nio.ByteBuffer)">MultipleRecnoNIODataEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/nio/ByteBuffer.html" title="class or interface in java.nio">ByteBuffer</A>&nbsp;data)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Construct an entry with a given java.nio.ByteBuffer.</TD>
@@ -170,10 +170,10 @@ single <A HREF="../../../com/sleepycat/db/Database.html" title="class in com.sle
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -203,7 +203,7 @@ public <B>MultipleRecnoNIODataEntry</B>()</PRE>
<A NAME="MultipleRecnoNIODataEntry(java.nio.ByteBuffer)"><!-- --></A><H3>
MultipleRecnoNIODataEntry</H3>
<PRE>
-public <B>MultipleRecnoNIODataEntry</B>(java.nio.ByteBuffer&nbsp;data)</PRE>
+public <B>MultipleRecnoNIODataEntry</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/nio/ByteBuffer.html" title="class or interface in java.nio">ByteBuffer</A>&nbsp;data)</PRE>
<DL>
<DD>Construct an entry with a given java.nio.ByteBuffer. The offset is
set to zero; the size is set to the length of the java.nio.ByteBuffer.
@@ -273,7 +273,7 @@ public boolean <B>next</B>(<A HREF="../../../com/sleepycat/db/DatabaseEntry.html
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -309,6 +309,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&n
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/MutexStats.html b/db/docs/java/com/sleepycat/db/MutexStats.html
index 381838419..856f9bad7 100644
--- a/db/docs/java/com/sleepycat/db/MutexStats.html
+++ b/db/docs/java/com/sleepycat/db/MutexStats.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:57 EDT 2007 -->
<TITLE>
-MutexStats (Oracle Corporation - Berkeley DB Java API)
+MutexStats (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.MutexStats class">
@@ -14,7 +14,7 @@ MutexStats (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="MutexStats (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="MutexStats (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,12 +89,12 @@ com.sleepycat.db</FONT>
<BR>
Class MutexStats</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.MutexStats</B>
</PRE>
<HR>
<DL>
-<DT><PRE>public class <B>MutexStats</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
+<DT><PRE>public class <B>MutexStats</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
</PRE>
<P>
@@ -191,7 +191,7 @@ by <A HREF="../../../com/sleepycat/db/Environment.html#getMutexStats(com.sleepyc
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/MutexStats.html#toString()">toString</A></B>()</CODE>
<BR>
@@ -202,10 +202,10 @@ by <A HREF="../../../com/sleepycat/db/Environment.html#getMutexStats(com.sleepyc
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -343,13 +343,13 @@ public int <B>getRegSize</B>()</PRE>
<A NAME="toString()"><!-- --></A><H3>
toString</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
<DL>
<DD>For convenience, the MutexStats class has a toString method that lists
all the data fields.
<P>
<DD><DL>
-<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
</DD>
<DD><DL>
</DL>
@@ -380,7 +380,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" tit
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -416,6 +416,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHO
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/OperationStatus.html b/db/docs/java/com/sleepycat/db/OperationStatus.html
index c9ccaf5e9..b111e73ce 100644
--- a/db/docs/java/com/sleepycat/db/OperationStatus.html
+++ b/db/docs/java/com/sleepycat/db/OperationStatus.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:57 EDT 2007 -->
<TITLE>
-OperationStatus (Oracle Corporation - Berkeley DB Java API)
+OperationStatus (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.OperationStatus class">
@@ -14,7 +14,7 @@ OperationStatus (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="OperationStatus (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="OperationStatus (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,12 +89,12 @@ com.sleepycat.db</FONT>
<BR>
Class OperationStatus</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.OperationStatus</B>
</PRE>
<HR>
<DL>
-<DT><PRE>public final class <B>OperationStatus</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
+<DT><PRE>public final class <B>OperationStatus</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
</PRE>
<P>
@@ -159,7 +159,7 @@ Status values from database operations.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/OperationStatus.html#toString()">toString</A></B>()</CODE>
<BR>
@@ -169,10 +169,10 @@ Status values from database operations.
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -250,12 +250,12 @@ public static final <A HREF="../../../com/sleepycat/db/OperationStatus.html" tit
<A NAME="toString()"><!-- --></A><H3>
toString</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
<DL>
<DD>
<P>
<DD><DL>
-<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
</DD>
<DD><DL>
</DL>
@@ -286,7 +286,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" tit
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -322,6 +322,6 @@ DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/PanicHandler.html b/db/docs/java/com/sleepycat/db/PanicHandler.html
index 52a52465f..448576bbb 100644
--- a/db/docs/java/com/sleepycat/db/PanicHandler.html
+++ b/db/docs/java/com/sleepycat/db/PanicHandler.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:57 EDT 2007 -->
<TITLE>
-PanicHandler (Oracle Corporation - Berkeley DB Java API)
+PanicHandler (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.PanicHandler interface">
@@ -14,7 +14,7 @@ PanicHandler (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="PanicHandler (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="PanicHandler (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -185,7 +185,7 @@ void <B>panic</B>(<A HREF="../../../com/sleepycat/db/Environment.html" title="cl
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -221,6 +221,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHO
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/PreparedTransaction.html b/db/docs/java/com/sleepycat/db/PreparedTransaction.html
index 901bd2bef..c44f91f8f 100644
--- a/db/docs/java/com/sleepycat/db/PreparedTransaction.html
+++ b/db/docs/java/com/sleepycat/db/PreparedTransaction.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:57 EDT 2007 -->
<TITLE>
-PreparedTransaction (Oracle Corporation - Berkeley DB Java API)
+PreparedTransaction (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.PreparedTransaction class">
@@ -14,7 +14,7 @@ PreparedTransaction (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="PreparedTransaction (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="PreparedTransaction (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,12 +89,12 @@ com.sleepycat.db</FONT>
<BR>
Class PreparedTransaction</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.PreparedTransaction</B>
</PRE>
<HR>
<DL>
-<DT><PRE>public class <B>PreparedTransaction</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
+<DT><PRE>public class <B>PreparedTransaction</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
</PRE>
<P>
@@ -135,10 +135,10 @@ but not yet resolved, transaction.
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -211,7 +211,7 @@ public <A HREF="../../../com/sleepycat/db/Transaction.html" title="class in com.
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -247,6 +247,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHO
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/QueueStats.html b/db/docs/java/com/sleepycat/db/QueueStats.html
index 4a82848d4..d43ce49d3 100644
--- a/db/docs/java/com/sleepycat/db/QueueStats.html
+++ b/db/docs/java/com/sleepycat/db/QueueStats.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:57 EDT 2007 -->
<TITLE>
-QueueStats (Oracle Corporation - Berkeley DB Java API)
+QueueStats (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.QueueStats class">
@@ -14,7 +14,7 @@ QueueStats (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="QueueStats (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="QueueStats (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,7 +89,7 @@ com.sleepycat.db</FONT>
<BR>
Class QueueStats</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../com/sleepycat/db/DatabaseStats.html" title="class in com.sleepycat.db">com.sleepycat.db.DatabaseStats</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.QueueStats</B>
</PRE>
@@ -221,7 +221,7 @@ The QueueStats object is used to return Queue database statistics.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/QueueStats.html#toString()">toString</A></B>()</CODE>
<BR>
@@ -232,10 +232,10 @@ The QueueStats object is used to return Queue database statistics.
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -439,13 +439,13 @@ public int <B>getCurRecno</B>()</PRE>
<A NAME="toString()"><!-- --></A><H3>
toString</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
<DL>
<DD>For convenience, the QueueStats class has a toString method
that lists all the data fields.
<P>
<DD><DL>
-<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
</DD>
<DD><DL>
</DL>
@@ -476,7 +476,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" tit
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -512,6 +512,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHO
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/RecordNumberAppender.html b/db/docs/java/com/sleepycat/db/RecordNumberAppender.html
index 82b0380e8..99cb621ce 100644
--- a/db/docs/java/com/sleepycat/db/RecordNumberAppender.html
+++ b/db/docs/java/com/sleepycat/db/RecordNumberAppender.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:57 EDT 2007 -->
<TITLE>
-RecordNumberAppender (Oracle Corporation - Berkeley DB Java API)
+RecordNumberAppender (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.RecordNumberAppender interface">
@@ -14,7 +14,7 @@ RecordNumberAppender (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="RecordNumberAppender (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="RecordNumberAppender (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -192,7 +192,7 @@ void <B>appendRecordNumber</B>(<A HREF="../../../com/sleepycat/db/Database.html"
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -228,6 +228,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHO
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/RecoveryOperation.html b/db/docs/java/com/sleepycat/db/RecoveryOperation.html
index 37707c2ef..92d810855 100644
--- a/db/docs/java/com/sleepycat/db/RecoveryOperation.html
+++ b/db/docs/java/com/sleepycat/db/RecoveryOperation.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:57 EDT 2007 -->
<TITLE>
-RecoveryOperation (Oracle Corporation - Berkeley DB Java API)
+RecoveryOperation (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.RecoveryOperation class">
@@ -14,7 +14,7 @@ RecoveryOperation (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="RecoveryOperation (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="RecoveryOperation (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,12 +89,12 @@ com.sleepycat.db</FONT>
<BR>
Class RecoveryOperation</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.RecoveryOperation</B>
</PRE>
<HR>
<DL>
-<DT><PRE>public final class <B>RecoveryOperation</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
+<DT><PRE>public final class <B>RecoveryOperation</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
</PRE>
<P>
@@ -180,7 +180,7 @@ The recovery operation being performed when <A HREF="../../../com/sleepycat/db/L
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/RecoveryOperation.html#toString()">toString</A></B>()</CODE>
<BR>
@@ -190,10 +190,10 @@ The recovery operation being performed when <A HREF="../../../com/sleepycat/db/L
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -299,12 +299,12 @@ public static final <A HREF="../../../com/sleepycat/db/RecoveryOperation.html" t
<A NAME="toString()"><!-- --></A><H3>
toString</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
<DL>
<DD>
<P>
<DD><DL>
-<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
</DD>
<DD><DL>
</DL>
@@ -349,7 +349,7 @@ public static <A HREF="../../../com/sleepycat/db/RecoveryOperation.html" title="
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -385,6 +385,6 @@ DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/ReplicationConfig.html b/db/docs/java/com/sleepycat/db/ReplicationConfig.html
index db1694871..5377abf10 100644
--- a/db/docs/java/com/sleepycat/db/ReplicationConfig.html
+++ b/db/docs/java/com/sleepycat/db/ReplicationConfig.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:57 EDT 2007 -->
<TITLE>
-ReplicationConfig (Oracle Corporation - Berkeley DB Java API)
+ReplicationConfig (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.ReplicationConfig class">
@@ -14,7 +14,7 @@ ReplicationConfig (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="ReplicationConfig (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="ReplicationConfig (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,15 +89,15 @@ com.sleepycat.db</FONT>
<BR>
Class ReplicationConfig</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.ReplicationConfig</B>
</PRE>
<DL>
-<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A></DD>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A></DD>
</DL>
<HR>
<DL>
-<DT><PRE>public final class <B>ReplicationConfig</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A><DT>implements <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A></DL>
+<DT><PRE>public final class <B>ReplicationConfig</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A><DT>implements <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A></DL>
</PRE>
<P>
@@ -165,7 +165,7 @@ Used in the <A HREF="../../../com/sleepycat/db/Environment.html#setReplicationCo
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/ReplicationConfig.html#toString()">toString</A></B>()</CODE>
<BR>
@@ -175,10 +175,10 @@ Used in the <A HREF="../../../com/sleepycat/db/Environment.html#setReplicationCo
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -260,12 +260,12 @@ public static final <A HREF="../../../com/sleepycat/db/ReplicationConfig.html" t
<A NAME="toString()"><!-- --></A><H3>
toString</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
<DL>
<DD>
<P>
<DD><DL>
-<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
</DD>
<DD><DL>
</DL>
@@ -296,7 +296,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" tit
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -332,6 +332,6 @@ DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/ReplicationDuplicateMasterException.html b/db/docs/java/com/sleepycat/db/ReplicationDuplicateMasterException.html
index 4347f835c..09d2a262b 100644
--- a/db/docs/java/com/sleepycat/db/ReplicationDuplicateMasterException.html
+++ b/db/docs/java/com/sleepycat/db/ReplicationDuplicateMasterException.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:57 EDT 2007 -->
<TITLE>
-ReplicationDuplicateMasterException (Oracle Corporation - Berkeley DB Java API)
+ReplicationDuplicateMasterException (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.ReplicationDuplicateMasterException class">
@@ -14,7 +14,7 @@ ReplicationDuplicateMasterException (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="ReplicationDuplicateMasterException (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="ReplicationDuplicateMasterException (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,14 +89,14 @@ com.sleepycat.db</FONT>
<BR>
Class ReplicationDuplicateMasterException</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
- <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">java.lang.Throwable</A>
- <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Exception.html" title="class or interface in java.lang">java.lang.Exception</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+ <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">java.lang.Throwable</A>
+ <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Exception.html" title="class or interface in java.lang">java.lang.Exception</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">com.sleepycat.db.DatabaseException</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.ReplicationDuplicateMasterException</B>
</PRE>
<DL>
-<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/Serializable.html" title="class or interface in java.io">Serializable</A></DD>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Serializable.html" title="class or interface in java.io">Serializable</A></DD>
</DL>
<HR>
<DL>
@@ -138,19 +138,19 @@ calling <A HREF="../../../com/sleepycat/db/Environment.html#electReplicationMast
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Throwable"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang">fillInStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#getCause()" title="class or interface in java.lang">getCause</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang">getLocalizedMessage</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang">getMessage</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang">getStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang">initCause</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement[])" title="class or interface in java.lang">setStackTrace</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang">fillInStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getCause()" title="class or interface in java.lang">getCause</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang">getLocalizedMessage</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang">getMessage</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang">getStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang">initCause</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement[])" title="class or interface in java.lang">setStackTrace</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -180,7 +180,7 @@ calling <A HREF="../../../com/sleepycat/db/Environment.html#electReplicationMast
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -216,6 +216,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;METHOD</FONT></TD>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/ReplicationHandleDeadException.html b/db/docs/java/com/sleepycat/db/ReplicationHandleDeadException.html
index 38736bd9c..05fc6f3dd 100644
--- a/db/docs/java/com/sleepycat/db/ReplicationHandleDeadException.html
+++ b/db/docs/java/com/sleepycat/db/ReplicationHandleDeadException.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:57 EDT 2007 -->
<TITLE>
-ReplicationHandleDeadException (Oracle Corporation - Berkeley DB Java API)
+ReplicationHandleDeadException (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.ReplicationHandleDeadException class">
@@ -14,7 +14,7 @@ ReplicationHandleDeadException (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="ReplicationHandleDeadException (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="ReplicationHandleDeadException (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,14 +89,14 @@ com.sleepycat.db</FONT>
<BR>
Class ReplicationHandleDeadException</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
- <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">java.lang.Throwable</A>
- <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Exception.html" title="class or interface in java.lang">java.lang.Exception</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+ <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">java.lang.Throwable</A>
+ <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Exception.html" title="class or interface in java.lang">java.lang.Exception</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">com.sleepycat.db.DatabaseException</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.ReplicationHandleDeadException</B>
</PRE>
<DL>
-<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/Serializable.html" title="class or interface in java.io">Serializable</A></DD>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Serializable.html" title="class or interface in java.io">Serializable</A></DD>
</DL>
<HR>
<DL>
@@ -142,19 +142,19 @@ resources.
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Throwable"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang">fillInStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#getCause()" title="class or interface in java.lang">getCause</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang">getLocalizedMessage</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang">getMessage</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang">getStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang">initCause</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement[])" title="class or interface in java.lang">setStackTrace</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang">fillInStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getCause()" title="class or interface in java.lang">getCause</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang">getLocalizedMessage</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang">getMessage</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang">getStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang">initCause</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement[])" title="class or interface in java.lang">setStackTrace</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -184,7 +184,7 @@ resources.
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -220,6 +220,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;METHOD</FONT></TD>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/ReplicationHoldElectionException.html b/db/docs/java/com/sleepycat/db/ReplicationHoldElectionException.html
index f228c686c..7884492ff 100644
--- a/db/docs/java/com/sleepycat/db/ReplicationHoldElectionException.html
+++ b/db/docs/java/com/sleepycat/db/ReplicationHoldElectionException.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:57 EDT 2007 -->
<TITLE>
-ReplicationHoldElectionException (Oracle Corporation - Berkeley DB Java API)
+ReplicationHoldElectionException (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.ReplicationHoldElectionException class">
@@ -14,7 +14,7 @@ ReplicationHoldElectionException (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="ReplicationHoldElectionException (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="ReplicationHoldElectionException (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,14 +89,14 @@ com.sleepycat.db</FONT>
<BR>
Class ReplicationHoldElectionException</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
- <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">java.lang.Throwable</A>
- <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Exception.html" title="class or interface in java.lang">java.lang.Exception</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+ <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">java.lang.Throwable</A>
+ <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Exception.html" title="class or interface in java.lang">java.lang.Exception</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">com.sleepycat.db.DatabaseException</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.ReplicationHoldElectionException</B>
</PRE>
<DL>
-<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/Serializable.html" title="class or interface in java.io">Serializable</A></DD>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Serializable.html" title="class or interface in java.io">Serializable</A></DD>
</DL>
<HR>
<DL>
@@ -136,19 +136,19 @@ An election is needed. The application should call for an election by calling
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Throwable"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang">fillInStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#getCause()" title="class or interface in java.lang">getCause</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang">getLocalizedMessage</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang">getMessage</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang">getStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang">initCause</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement[])" title="class or interface in java.lang">setStackTrace</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang">fillInStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getCause()" title="class or interface in java.lang">getCause</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang">getLocalizedMessage</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang">getMessage</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang">getStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang">initCause</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement[])" title="class or interface in java.lang">setStackTrace</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -178,7 +178,7 @@ An election is needed. The application should call for an election by calling
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -214,6 +214,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;METHOD</FONT></TD>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/ReplicationHostAddress.html b/db/docs/java/com/sleepycat/db/ReplicationHostAddress.html
index 43d24cf9e..c696c6687 100644
--- a/db/docs/java/com/sleepycat/db/ReplicationHostAddress.html
+++ b/db/docs/java/com/sleepycat/db/ReplicationHostAddress.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:57 EDT 2007 -->
<TITLE>
-ReplicationHostAddress (Oracle Corporation - Berkeley DB Java API)
+ReplicationHostAddress (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.ReplicationHostAddress class">
@@ -14,7 +14,7 @@ ReplicationHostAddress (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="ReplicationHostAddress (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="ReplicationHostAddress (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -73,9 +73,9 @@ function windowTitle()
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
- SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#methods_inherited_from_class_java.lang.Object">METHOD</A></FONT></TD>
+ SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
-DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;METHOD</FONT></TD>
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_top"></A>
@@ -89,12 +89,12 @@ com.sleepycat.db</FONT>
<BR>
Class ReplicationHostAddress</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.ReplicationHostAddress</B>
</PRE>
<HR>
<DL>
-<DT><PRE>public class <B>ReplicationHostAddress</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
+<DT><PRE>public class <B>ReplicationHostAddress</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
</PRE>
<P>
@@ -123,7 +123,15 @@ methods.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/ReplicationHostAddress.html#eid">eid</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The identifier assigned to this host..</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/ReplicationHostAddress.html#host">host</A></B></CODE>
<BR>
@@ -163,20 +171,29 @@ methods.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create a ReplicationHostAddress with default settings.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><B><A HREF="../../../com/sleepycat/db/ReplicationHostAddress.html#ReplicationHostAddress(java.lang.String, int)">ReplicationHostAddress</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;host,
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/ReplicationHostAddress.html#ReplicationHostAddress(java.lang.String, int)">ReplicationHostAddress</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;host,
int&nbsp;port)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create a ReplicationHostAddress.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><B><A HREF="../../../com/sleepycat/db/ReplicationHostAddress.html#ReplicationHostAddress(java.lang.String, int, boolean)">ReplicationHostAddress</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;host,
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/ReplicationHostAddress.html#ReplicationHostAddress(java.lang.String, int, boolean)">ReplicationHostAddress</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;host,
int&nbsp;port,
boolean&nbsp;isPeer)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create a ReplicationHostAddress.</TD>
</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/ReplicationHostAddress.html#ReplicationHostAddress(java.lang.String, int, boolean, boolean)">ReplicationHostAddress</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;host,
+ int&nbsp;port,
+ boolean&nbsp;isPeer,
+ boolean&nbsp;isConnected)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create a ReplicationHostAddress.</TD>
+</TR>
</TABLE>
&nbsp;
<!-- ========== METHOD SUMMARY =========== -->
@@ -187,14 +204,22 @@ methods.
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Method Summary</B></FONT></TH>
</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/ReplicationHostAddress.html#isConnected()">isConnected</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Indicates whether the address is connected.</TD>
+</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -225,7 +250,7 @@ public int <B>port</B></PRE>
<A NAME="host"><!-- --></A><H3>
host</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>host</B></PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>host</B></PRE>
<DL>
<DD>The name component of the site address. Can be a fully qualified
name, or a dotted format address in String format.
@@ -235,6 +260,18 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" tit
</DL>
<HR>
+<A NAME="eid"><!-- --></A><H3>
+eid</H3>
+<PRE>
+public int <B>eid</B></PRE>
+<DL>
+<DD>The identifier assigned to this host..
+<P>
+<DL>
+</DL>
+</DL>
+<HR>
+
<A NAME="isPeer"><!-- --></A><H3>
isPeer</H3>
<PRE>
@@ -277,7 +314,7 @@ public <B>ReplicationHostAddress</B>()</PRE>
<A NAME="ReplicationHostAddress(java.lang.String, int)"><!-- --></A><H3>
ReplicationHostAddress</H3>
<PRE>
-public <B>ReplicationHostAddress</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;host,
+public <B>ReplicationHostAddress</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;host,
int&nbsp;port)</PRE>
<DL>
<DD>Create a ReplicationHostAddress.
@@ -291,7 +328,7 @@ public <B>ReplicationHostAddress</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/
<A NAME="ReplicationHostAddress(java.lang.String, int, boolean)"><!-- --></A><H3>
ReplicationHostAddress</H3>
<PRE>
-public <B>ReplicationHostAddress</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;host,
+public <B>ReplicationHostAddress</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;host,
int&nbsp;port,
boolean&nbsp;isPeer)</PRE>
<DL>
@@ -302,6 +339,45 @@ public <B>ReplicationHostAddress</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/
<DT><B>Parameters:</B><DD><CODE>host</CODE> - A string representation of the hostname this address refers to.<DD><CODE>port</CODE> - The port number the address will refer to.<DD><CODE>isPeer</CODE> - Explicitly specify that this address refers to a replication site
that is a peer of the current site.</DL>
</DL>
+<HR>
+
+<A NAME="ReplicationHostAddress(java.lang.String, int, boolean, boolean)"><!-- --></A><H3>
+ReplicationHostAddress</H3>
+<PRE>
+public <B>ReplicationHostAddress</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;host,
+ int&nbsp;port,
+ boolean&nbsp;isPeer,
+ boolean&nbsp;isConnected)</PRE>
+<DL>
+<DD>Create a ReplicationHostAddress.
+ <p>
+<P>
+<DL>
+<DT><B>Parameters:</B><DD><CODE>host</CODE> - A string representation of the hostname this address refers to.<DD><CODE>port</CODE> - The port number the address will refer to.<DD><CODE>isPeer</CODE> - Explicitly specify that this address refers to a replication site
+ that is a peer of the current site.<DD><CODE>isConnected</CODE> - Specify that this address is connected</DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TH>
+</TR>
+</TABLE>
+
+<A NAME="isConnected()"><!-- --></A><H3>
+isConnected</H3>
+<PRE>
+public boolean <B>isConnected</B>()</PRE>
+<DL>
+<DD>Indicates whether the address is connected.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
<!-- ========= END OF CLASS DATA ========= -->
<HR>
@@ -327,7 +403,7 @@ public <B>ReplicationHostAddress</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -354,15 +430,15 @@ public <B>ReplicationHostAddress</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
- SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#methods_inherited_from_class_java.lang.Object">METHOD</A></FONT></TD>
+ SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
-DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;METHOD</FONT></TD>
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/ReplicationJoinFailureException.html b/db/docs/java/com/sleepycat/db/ReplicationJoinFailureException.html
index 888815762..4163b19cc 100644
--- a/db/docs/java/com/sleepycat/db/ReplicationJoinFailureException.html
+++ b/db/docs/java/com/sleepycat/db/ReplicationJoinFailureException.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:57 EDT 2007 -->
<TITLE>
-ReplicationJoinFailureException (Oracle Corporation - Berkeley DB Java API)
+ReplicationJoinFailureException (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.ReplicationJoinFailureException class">
@@ -14,7 +14,7 @@ ReplicationJoinFailureException (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="ReplicationJoinFailureException (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="ReplicationJoinFailureException (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,14 +46,14 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../com/sleepycat/db/ReplicationHostAddress.html" title="class in com.sleepycat.db"><B>PREV CLASS</B></A>&nbsp;
-&nbsp;<A HREF="../../../com/sleepycat/db/ReplicationLockoutException.html" title="class in com.sleepycat.db"><B>NEXT CLASS</B></A></FONT></TD>
+&nbsp;<A HREF="../../../com/sleepycat/db/ReplicationLeaseExpiredException.html" title="class in com.sleepycat.db"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../index.html?com/sleepycat/db/ReplicationJoinFailureException.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="ReplicationJoinFailureException.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
@@ -89,14 +89,14 @@ com.sleepycat.db</FONT>
<BR>
Class ReplicationJoinFailureException</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
- <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">java.lang.Throwable</A>
- <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Exception.html" title="class or interface in java.lang">java.lang.Exception</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+ <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">java.lang.Throwable</A>
+ <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Exception.html" title="class or interface in java.lang">java.lang.Exception</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">com.sleepycat.db.DatabaseException</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.ReplicationJoinFailureException</B>
</PRE>
<DL>
-<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/Serializable.html" title="class or interface in java.io">Serializable</A></DD>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Serializable.html" title="class or interface in java.io">Serializable</A></DD>
</DL>
<HR>
<DL>
@@ -138,19 +138,19 @@ internal initialization).
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Throwable"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang">fillInStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#getCause()" title="class or interface in java.lang">getCause</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang">getLocalizedMessage</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang">getMessage</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang">getStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang">initCause</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement[])" title="class or interface in java.lang">setStackTrace</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang">fillInStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getCause()" title="class or interface in java.lang">getCause</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang">getLocalizedMessage</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang">getMessage</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang">getStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang">initCause</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement[])" title="class or interface in java.lang">setStackTrace</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -180,14 +180,14 @@ internal initialization).
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../com/sleepycat/db/ReplicationHostAddress.html" title="class in com.sleepycat.db"><B>PREV CLASS</B></A>&nbsp;
-&nbsp;<A HREF="../../../com/sleepycat/db/ReplicationLockoutException.html" title="class in com.sleepycat.db"><B>NEXT CLASS</B></A></FONT></TD>
+&nbsp;<A HREF="../../../com/sleepycat/db/ReplicationLeaseExpiredException.html" title="class in com.sleepycat.db"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../index.html?com/sleepycat/db/ReplicationJoinFailureException.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="ReplicationJoinFailureException.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
@@ -216,6 +216,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;METHOD</FONT></TD>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/ReplicationLeaseExpiredException.html b/db/docs/java/com/sleepycat/db/ReplicationLeaseExpiredException.html
new file mode 100644
index 000000000..da78ccdde
--- /dev/null
+++ b/db/docs/java/com/sleepycat/db/ReplicationLeaseExpiredException.html
@@ -0,0 +1,218 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:57 EDT 2007 -->
+<TITLE>
+ReplicationLeaseExpiredException (Oracle - Berkeley DB Java API)
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.sleepycat.db.ReplicationLeaseExpiredException class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../style.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+ parent.document.title="ReplicationLeaseExpiredException (Oracle - Berkeley DB Java API)";
+}
+</SCRIPT>
+<NOSCRIPT>
+</NOSCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+ <TR ALIGN="center" VALIGN="top">
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/ReplicationLeaseExpiredException.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+ </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../com/sleepycat/db/ReplicationJoinFailureException.html" title="class in com.sleepycat.db"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../com/sleepycat/db/ReplicationLeaseTimeoutException.html" title="class in com.sleepycat.db"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ <A HREF="../../../index.html?com/sleepycat/db/ReplicationLeaseExpiredException.html" target="_top"><B>FRAMES</B></A> &nbsp;
+&nbsp;<A HREF="ReplicationLeaseExpiredException.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+ <!--
+ if(window==top) {
+ document.writeln('<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>');
+ }
+ //-->
+</SCRIPT>
+<NOSCRIPT>
+ <A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+ SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#methods_inherited_from_class_com.sleepycat.db.DatabaseException">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;METHOD</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.sleepycat.db</FONT>
+<BR>
+Class ReplicationLeaseExpiredException</H2>
+<PRE>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+ <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">java.lang.Throwable</A>
+ <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Exception.html" title="class or interface in java.lang">java.lang.Exception</A>
+ <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">com.sleepycat.db.DatabaseException</A>
+ <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.ReplicationLeaseExpiredException</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Serializable.html" title="class or interface in java.io">Serializable</A></DD>
+</DL>
+<HR>
+<DL>
+<DT><PRE>public class <B>ReplicationLeaseExpiredException</B><DT>extends <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></DL>
+</PRE>
+
+<P>
+Thrown if a master lease has expired.
+<P>
+
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../serialized-form.html#com.sleepycat.db.ReplicationLeaseExpiredException">Serialized Form</A></DL>
+<HR>
+
+<P>
+
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TH>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_com.sleepycat.db.DatabaseException"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Methods inherited from class com.sleepycat.db.<A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html#getEnvironment()">getEnvironment</A>, <A HREF="../../../com/sleepycat/db/DatabaseException.html#getErrno()">getErrno</A>, <A HREF="../../../com/sleepycat/db/DatabaseException.html#toString()">toString</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Throwable"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang">fillInStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getCause()" title="class or interface in java.lang">getCause</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang">getLocalizedMessage</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang">getMessage</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang">getStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang">initCause</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement[])" title="class or interface in java.lang">setStackTrace</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+ <TR ALIGN="center" VALIGN="top">
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/ReplicationLeaseExpiredException.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+ </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../com/sleepycat/db/ReplicationJoinFailureException.html" title="class in com.sleepycat.db"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../com/sleepycat/db/ReplicationLeaseTimeoutException.html" title="class in com.sleepycat.db"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ <A HREF="../../../index.html?com/sleepycat/db/ReplicationLeaseExpiredException.html" target="_top"><B>FRAMES</B></A> &nbsp;
+&nbsp;<A HREF="ReplicationLeaseExpiredException.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+ <!--
+ if(window==top) {
+ document.writeln('<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>');
+ }
+ //-->
+</SCRIPT>
+<NOSCRIPT>
+ <A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+ SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#methods_inherited_from_class_com.sleepycat.db.DatabaseException">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;METHOD</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
+</BODY>
+</HTML>
diff --git a/db/docs/java/com/sleepycat/db/ReplicationLeaseTimeoutException.html b/db/docs/java/com/sleepycat/db/ReplicationLeaseTimeoutException.html
new file mode 100644
index 000000000..c71c4649e
--- /dev/null
+++ b/db/docs/java/com/sleepycat/db/ReplicationLeaseTimeoutException.html
@@ -0,0 +1,218 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:57 EDT 2007 -->
+<TITLE>
+ReplicationLeaseTimeoutException (Oracle - Berkeley DB Java API)
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.sleepycat.db.ReplicationLeaseTimeoutException class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../style.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+ parent.document.title="ReplicationLeaseTimeoutException (Oracle - Berkeley DB Java API)";
+}
+</SCRIPT>
+<NOSCRIPT>
+</NOSCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+ <TR ALIGN="center" VALIGN="top">
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/ReplicationLeaseTimeoutException.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+ </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../com/sleepycat/db/ReplicationLeaseExpiredException.html" title="class in com.sleepycat.db"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../com/sleepycat/db/ReplicationLockoutException.html" title="class in com.sleepycat.db"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ <A HREF="../../../index.html?com/sleepycat/db/ReplicationLeaseTimeoutException.html" target="_top"><B>FRAMES</B></A> &nbsp;
+&nbsp;<A HREF="ReplicationLeaseTimeoutException.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+ <!--
+ if(window==top) {
+ document.writeln('<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>');
+ }
+ //-->
+</SCRIPT>
+<NOSCRIPT>
+ <A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+ SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#methods_inherited_from_class_com.sleepycat.db.DatabaseException">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;METHOD</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.sleepycat.db</FONT>
+<BR>
+Class ReplicationLeaseTimeoutException</H2>
+<PRE>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+ <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">java.lang.Throwable</A>
+ <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Exception.html" title="class or interface in java.lang">java.lang.Exception</A>
+ <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">com.sleepycat.db.DatabaseException</A>
+ <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.ReplicationLeaseTimeoutException</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Serializable.html" title="class or interface in java.io">Serializable</A></DD>
+</DL>
+<HR>
+<DL>
+<DT><PRE>public class <B>ReplicationLeaseTimeoutException</B><DT>extends <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></DL>
+</PRE>
+
+<P>
+Thrown if a master lease has timed out.
+<P>
+
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../serialized-form.html#com.sleepycat.db.ReplicationLeaseTimeoutException">Serialized Form</A></DL>
+<HR>
+
+<P>
+
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TH>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_com.sleepycat.db.DatabaseException"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Methods inherited from class com.sleepycat.db.<A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html#getEnvironment()">getEnvironment</A>, <A HREF="../../../com/sleepycat/db/DatabaseException.html#getErrno()">getErrno</A>, <A HREF="../../../com/sleepycat/db/DatabaseException.html#toString()">toString</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Throwable"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang">fillInStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getCause()" title="class or interface in java.lang">getCause</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang">getLocalizedMessage</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang">getMessage</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang">getStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang">initCause</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement[])" title="class or interface in java.lang">setStackTrace</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+ <TR ALIGN="center" VALIGN="top">
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/ReplicationLeaseTimeoutException.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+ </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../com/sleepycat/db/ReplicationLeaseExpiredException.html" title="class in com.sleepycat.db"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../com/sleepycat/db/ReplicationLockoutException.html" title="class in com.sleepycat.db"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ <A HREF="../../../index.html?com/sleepycat/db/ReplicationLeaseTimeoutException.html" target="_top"><B>FRAMES</B></A> &nbsp;
+&nbsp;<A HREF="ReplicationLeaseTimeoutException.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+ <!--
+ if(window==top) {
+ document.writeln('<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>');
+ }
+ //-->
+</SCRIPT>
+<NOSCRIPT>
+ <A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+ SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#methods_inherited_from_class_com.sleepycat.db.DatabaseException">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;METHOD</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
+</BODY>
+</HTML>
diff --git a/db/docs/java/com/sleepycat/db/ReplicationLockoutException.html b/db/docs/java/com/sleepycat/db/ReplicationLockoutException.html
index a37cf2c40..066595378 100644
--- a/db/docs/java/com/sleepycat/db/ReplicationLockoutException.html
+++ b/db/docs/java/com/sleepycat/db/ReplicationLockoutException.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:57 EDT 2007 -->
<TITLE>
-ReplicationLockoutException (Oracle Corporation - Berkeley DB Java API)
+ReplicationLockoutException (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.ReplicationLockoutException class">
@@ -14,7 +14,7 @@ ReplicationLockoutException (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="ReplicationLockoutException (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="ReplicationLockoutException (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,13 +46,13 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
-&nbsp;<A HREF="../../../com/sleepycat/db/ReplicationJoinFailureException.html" title="class in com.sleepycat.db"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../com/sleepycat/db/ReplicationLeaseTimeoutException.html" title="class in com.sleepycat.db"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../com/sleepycat/db/ReplicationManagerAckPolicy.html" title="class in com.sleepycat.db"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../index.html?com/sleepycat/db/ReplicationLockoutException.html" target="_top"><B>FRAMES</B></A> &nbsp;
@@ -89,14 +89,14 @@ com.sleepycat.db</FONT>
<BR>
Class ReplicationLockoutException</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
- <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">java.lang.Throwable</A>
- <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Exception.html" title="class or interface in java.lang">java.lang.Exception</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+ <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">java.lang.Throwable</A>
+ <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Exception.html" title="class or interface in java.lang">java.lang.Exception</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">com.sleepycat.db.DatabaseException</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.ReplicationLockoutException</B>
</PRE>
<DL>
-<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/Serializable.html" title="class or interface in java.io">Serializable</A></DD>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Serializable.html" title="class or interface in java.io">Serializable</A></DD>
</DL>
<HR>
<DL>
@@ -135,19 +135,19 @@ Thrown when an operation was blocked by client/master synchronization.
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Throwable"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang">fillInStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#getCause()" title="class or interface in java.lang">getCause</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang">getLocalizedMessage</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang">getMessage</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang">getStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang">initCause</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement[])" title="class or interface in java.lang">setStackTrace</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang">fillInStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getCause()" title="class or interface in java.lang">getCause</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang">getLocalizedMessage</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang">getMessage</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang">getStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang">initCause</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement[])" title="class or interface in java.lang">setStackTrace</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -177,13 +177,13 @@ Thrown when an operation was blocked by client/master synchronization.
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
-&nbsp;<A HREF="../../../com/sleepycat/db/ReplicationJoinFailureException.html" title="class in com.sleepycat.db"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../com/sleepycat/db/ReplicationLeaseTimeoutException.html" title="class in com.sleepycat.db"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../com/sleepycat/db/ReplicationManagerAckPolicy.html" title="class in com.sleepycat.db"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../index.html?com/sleepycat/db/ReplicationLockoutException.html" target="_top"><B>FRAMES</B></A> &nbsp;
@@ -213,6 +213,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;METHOD</FONT></TD>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/ReplicationManagerAckPolicy.html b/db/docs/java/com/sleepycat/db/ReplicationManagerAckPolicy.html
index 66403b8e6..dc04f0fc7 100644
--- a/db/docs/java/com/sleepycat/db/ReplicationManagerAckPolicy.html
+++ b/db/docs/java/com/sleepycat/db/ReplicationManagerAckPolicy.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:57 EDT 2007 -->
<TITLE>
-ReplicationManagerAckPolicy (Oracle Corporation - Berkeley DB Java API)
+ReplicationManagerAckPolicy (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.ReplicationManagerAckPolicy class">
@@ -14,7 +14,7 @@ ReplicationManagerAckPolicy (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="ReplicationManagerAckPolicy (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="ReplicationManagerAckPolicy (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,12 +89,12 @@ com.sleepycat.db</FONT>
<BR>
Class ReplicationManagerAckPolicy</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.ReplicationManagerAckPolicy</B>
</PRE>
<HR>
<DL>
-<DT><PRE>public final class <B>ReplicationManagerAckPolicy</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
+<DT><PRE>public final class <B>ReplicationManagerAckPolicy</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
</PRE>
<P>
@@ -189,7 +189,7 @@ Set using the <A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setRepli
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/ReplicationManagerAckPolicy.html#toString()">toString</A></B>()</CODE>
<BR>
@@ -199,10 +199,10 @@ Set using the <A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setRepli
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -315,12 +315,12 @@ public static final <A HREF="../../../com/sleepycat/db/ReplicationManagerAckPoli
<A NAME="toString()"><!-- --></A><H3>
toString</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
<DL>
<DD>
<P>
<DD><DL>
-<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
</DD>
<DD><DL>
</DL>
@@ -351,7 +351,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" tit
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -387,6 +387,6 @@ DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/ReplicationManagerStartPolicy.html b/db/docs/java/com/sleepycat/db/ReplicationManagerStartPolicy.html
index 2c16146a8..de9d0fa96 100644
--- a/db/docs/java/com/sleepycat/db/ReplicationManagerStartPolicy.html
+++ b/db/docs/java/com/sleepycat/db/ReplicationManagerStartPolicy.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:57 EDT 2007 -->
<TITLE>
-ReplicationManagerStartPolicy (Oracle Corporation - Berkeley DB Java API)
+ReplicationManagerStartPolicy (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.ReplicationManagerStartPolicy class">
@@ -14,7 +14,7 @@ ReplicationManagerStartPolicy (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="ReplicationManagerStartPolicy (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="ReplicationManagerStartPolicy (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,14 +46,14 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../com/sleepycat/db/ReplicationManagerAckPolicy.html" title="class in com.sleepycat.db"><B>PREV CLASS</B></A>&nbsp;
-&nbsp;<A HREF="../../../com/sleepycat/db/ReplicationSiteUnavailableException.html" title="class in com.sleepycat.db"><B>NEXT CLASS</B></A></FONT></TD>
+&nbsp;<A HREF="../../../com/sleepycat/db/ReplicationManagerStats.html" title="class in com.sleepycat.db"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../index.html?com/sleepycat/db/ReplicationManagerStartPolicy.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="ReplicationManagerStartPolicy.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
@@ -89,12 +89,12 @@ com.sleepycat.db</FONT>
<BR>
Class ReplicationManagerStartPolicy</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.ReplicationManagerStartPolicy</B>
</PRE>
<HR>
<DL>
-<DT><PRE>public final class <B>ReplicationManagerStartPolicy</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
+<DT><PRE>public final class <B>ReplicationManagerStartPolicy</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
</PRE>
<P>
@@ -134,14 +134,6 @@ can be specified when starting a replication client using the
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;<A HREF="../../../com/sleepycat/db/ReplicationManagerStartPolicy.html" title="class in com.sleepycat.db">ReplicationManagerStartPolicy</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/db/ReplicationManagerStartPolicy.html#REP_FULL_ELECTION">REP_FULL_ELECTION</A></B></CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Start as a client, and call for an election if no master is found.</TD>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>static&nbsp;<A HREF="../../../com/sleepycat/db/ReplicationManagerStartPolicy.html" title="class in com.sleepycat.db">ReplicationManagerStartPolicy</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/ReplicationManagerStartPolicy.html#REP_MASTER">REP_MASTER</A></B></CODE>
<BR>
@@ -159,7 +151,7 @@ can be specified when starting a replication client using the
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/ReplicationManagerStartPolicy.html#toString()">toString</A></B>()</CODE>
<BR>
@@ -169,10 +161,10 @@ can be specified when starting a replication client using the
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -212,23 +204,6 @@ public static final <A HREF="../../../com/sleepycat/db/ReplicationManagerStartPo
</DL>
<HR>
-<A NAME="REP_FULL_ELECTION"><!-- --></A><H3>
-REP_FULL_ELECTION</H3>
-<PRE>
-public static final <A HREF="../../../com/sleepycat/db/ReplicationManagerStartPolicy.html" title="class in com.sleepycat.db">ReplicationManagerStartPolicy</A> <B>REP_FULL_ELECTION</B></PRE>
-<DL>
-<DD>Start as a client, and call for an election if no master is found.
- <p>
- The DB_REP_FULL_ELECTION flag configures a single special election on
- startup, where a master will only be confirmed if all members of the
- replication group vote. Subsequent elections will revert to only
- requiring a simple majority to elect a new master.
-<P>
-<DL>
-</DL>
-</DL>
-<HR>
-
<A NAME="REP_MASTER"><!-- --></A><H3>
REP_MASTER</H3>
<PRE>
@@ -255,12 +230,12 @@ public static final <A HREF="../../../com/sleepycat/db/ReplicationManagerStartPo
<A NAME="toString()"><!-- --></A><H3>
toString</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
<DL>
<DD>
<P>
<DD><DL>
-<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
</DD>
<DD><DL>
</DL>
@@ -291,14 +266,14 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" tit
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../com/sleepycat/db/ReplicationManagerAckPolicy.html" title="class in com.sleepycat.db"><B>PREV CLASS</B></A>&nbsp;
-&nbsp;<A HREF="../../../com/sleepycat/db/ReplicationSiteUnavailableException.html" title="class in com.sleepycat.db"><B>NEXT CLASS</B></A></FONT></TD>
+&nbsp;<A HREF="../../../com/sleepycat/db/ReplicationManagerStats.html" title="class in com.sleepycat.db"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../index.html?com/sleepycat/db/ReplicationManagerStartPolicy.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="ReplicationManagerStartPolicy.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
@@ -327,6 +302,6 @@ DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/ReplicationManagerStats.html b/db/docs/java/com/sleepycat/db/ReplicationManagerStats.html
new file mode 100644
index 000000000..7d3e165b3
--- /dev/null
+++ b/db/docs/java/com/sleepycat/db/ReplicationManagerStats.html
@@ -0,0 +1,338 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:57 EDT 2007 -->
+<TITLE>
+ReplicationManagerStats (Oracle - Berkeley DB Java API)
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.sleepycat.db.ReplicationManagerStats class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../style.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+ parent.document.title="ReplicationManagerStats (Oracle - Berkeley DB Java API)";
+}
+</SCRIPT>
+<NOSCRIPT>
+</NOSCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+ <TR ALIGN="center" VALIGN="top">
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/ReplicationManagerStats.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+ </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../com/sleepycat/db/ReplicationManagerStartPolicy.html" title="class in com.sleepycat.db"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../com/sleepycat/db/ReplicationSiteUnavailableException.html" title="class in com.sleepycat.db"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ <A HREF="../../../index.html?com/sleepycat/db/ReplicationManagerStats.html" target="_top"><B>FRAMES</B></A> &nbsp;
+&nbsp;<A HREF="ReplicationManagerStats.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+ <!--
+ if(window==top) {
+ document.writeln('<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>');
+ }
+ //-->
+</SCRIPT>
+<NOSCRIPT>
+ <A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+ SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.sleepycat.db</FONT>
+<BR>
+Class ReplicationManagerStats</H2>
+<PRE>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+ <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.ReplicationManagerStats</B>
+</PRE>
+<HR>
+<DL>
+<DT><PRE>public class <B>ReplicationManagerStats</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
+</PRE>
+
+<P>
+Replication Manager statistics for a database environment.
+<P>
+
+<P>
+<HR>
+
+<P>
+
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/ReplicationManagerStats.html#getConnectFail()">getConnectFail</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The The number of times new connection attempts have failed..</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/ReplicationManagerStats.html#getConnectionDrop()">getConnectionDrop</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The Number of existing connections that have been dropped since the
+ statistics were last reset..</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/ReplicationManagerStats.html#getMsgsDropped()">getMsgsDropped</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The Number of messages discarded due to queue length overflows..</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/ReplicationManagerStats.html#getMsgsQueued()">getMsgsQueued</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The The number of messages queued due to a network delay..</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/ReplicationManagerStats.html#getPermFailed()">getPermFailed</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The The number of times a PERM message originating at this site did
+ not receive sufficient acknowledgement from clients, according to the
+ configured acknowledgement policy and acknowledgement timeout..</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/ReplicationManagerStats.html#toString()">toString</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;For convenience, the ReplicationManagerStats class has a toString method
+ that lists all the data fields.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TH>
+</TR>
+</TABLE>
+
+<A NAME="getPermFailed()"><!-- --></A><H3>
+getPermFailed</H3>
+<PRE>
+public int <B>getPermFailed</B>()</PRE>
+<DL>
+<DD>The The number of times a PERM message originating at this site did
+ not receive sufficient acknowledgement from clients, according to the
+ configured acknowledgement policy and acknowledgement timeout..
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getMsgsQueued()"><!-- --></A><H3>
+getMsgsQueued</H3>
+<PRE>
+public int <B>getMsgsQueued</B>()</PRE>
+<DL>
+<DD>The The number of messages queued due to a network delay..
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getMsgsDropped()"><!-- --></A><H3>
+getMsgsDropped</H3>
+<PRE>
+public int <B>getMsgsDropped</B>()</PRE>
+<DL>
+<DD>The Number of messages discarded due to queue length overflows..
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getConnectionDrop()"><!-- --></A><H3>
+getConnectionDrop</H3>
+<PRE>
+public int <B>getConnectionDrop</B>()</PRE>
+<DL>
+<DD>The Number of existing connections that have been dropped since the
+ statistics were last reset..
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getConnectFail()"><!-- --></A><H3>
+getConnectFail</H3>
+<PRE>
+public int <B>getConnectFail</B>()</PRE>
+<DL>
+<DD>The The number of times new connection attempts have failed..
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="toString()"><!-- --></A><H3>
+toString</H3>
+<PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
+<DL>
+<DD>For convenience, the ReplicationManagerStats class has a toString method
+ that lists all the data fields.
+<P>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+ <TR ALIGN="center" VALIGN="top">
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/ReplicationManagerStats.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+ </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../com/sleepycat/db/ReplicationManagerStartPolicy.html" title="class in com.sleepycat.db"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../com/sleepycat/db/ReplicationSiteUnavailableException.html" title="class in com.sleepycat.db"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ <A HREF="../../../index.html?com/sleepycat/db/ReplicationManagerStats.html" target="_top"><B>FRAMES</B></A> &nbsp;
+&nbsp;<A HREF="ReplicationManagerStats.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+ <!--
+ if(window==top) {
+ document.writeln('<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>');
+ }
+ //-->
+</SCRIPT>
+<NOSCRIPT>
+ <A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+ SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
+</BODY>
+</HTML>
diff --git a/db/docs/java/com/sleepycat/db/ReplicationSiteUnavailableException.html b/db/docs/java/com/sleepycat/db/ReplicationSiteUnavailableException.html
index 37b3f8b88..2b35966f0 100644
--- a/db/docs/java/com/sleepycat/db/ReplicationSiteUnavailableException.html
+++ b/db/docs/java/com/sleepycat/db/ReplicationSiteUnavailableException.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:57 EDT 2007 -->
<TITLE>
-ReplicationSiteUnavailableException (Oracle Corporation - Berkeley DB Java API)
+ReplicationSiteUnavailableException (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.ReplicationSiteUnavailableException class">
@@ -14,7 +14,7 @@ ReplicationSiteUnavailableException (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="ReplicationSiteUnavailableException (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="ReplicationSiteUnavailableException (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,13 +46,13 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
-&nbsp;<A HREF="../../../com/sleepycat/db/ReplicationManagerStartPolicy.html" title="class in com.sleepycat.db"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../com/sleepycat/db/ReplicationManagerStats.html" title="class in com.sleepycat.db"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../com/sleepycat/db/ReplicationStats.html" title="class in com.sleepycat.db"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../index.html?com/sleepycat/db/ReplicationSiteUnavailableException.html" target="_top"><B>FRAMES</B></A> &nbsp;
@@ -89,14 +89,14 @@ com.sleepycat.db</FONT>
<BR>
Class ReplicationSiteUnavailableException</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
- <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">java.lang.Throwable</A>
- <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Exception.html" title="class or interface in java.lang">java.lang.Exception</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+ <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">java.lang.Throwable</A>
+ <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Exception.html" title="class or interface in java.lang">java.lang.Exception</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">com.sleepycat.db.DatabaseException</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.ReplicationSiteUnavailableException</B>
</PRE>
<DL>
-<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/Serializable.html" title="class or interface in java.io">Serializable</A></DD>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Serializable.html" title="class or interface in java.io">Serializable</A></DD>
</DL>
<HR>
<DL>
@@ -136,19 +136,19 @@ complete the election in the specified timeout period.
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Throwable"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang">fillInStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#getCause()" title="class or interface in java.lang">getCause</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang">getLocalizedMessage</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang">getMessage</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang">getStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang">initCause</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement[])" title="class or interface in java.lang">setStackTrace</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang">fillInStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getCause()" title="class or interface in java.lang">getCause</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang">getLocalizedMessage</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang">getMessage</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang">getStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang">initCause</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement[])" title="class or interface in java.lang">setStackTrace</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -178,13 +178,13 @@ complete the election in the specified timeout period.
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
-&nbsp;<A HREF="../../../com/sleepycat/db/ReplicationManagerStartPolicy.html" title="class in com.sleepycat.db"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../com/sleepycat/db/ReplicationManagerStats.html" title="class in com.sleepycat.db"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../com/sleepycat/db/ReplicationStats.html" title="class in com.sleepycat.db"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../index.html?com/sleepycat/db/ReplicationSiteUnavailableException.html" target="_top"><B>FRAMES</B></A> &nbsp;
@@ -214,6 +214,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;METHOD</FONT></TD>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/ReplicationStats.html b/db/docs/java/com/sleepycat/db/ReplicationStats.html
index 96c58ed0f..b74d6abb5 100644
--- a/db/docs/java/com/sleepycat/db/ReplicationStats.html
+++ b/db/docs/java/com/sleepycat/db/ReplicationStats.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:57 EDT 2007 -->
<TITLE>
-ReplicationStats (Oracle Corporation - Berkeley DB Java API)
+ReplicationStats (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.ReplicationStats class">
@@ -14,7 +14,7 @@ ReplicationStats (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="ReplicationStats (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="ReplicationStats (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,12 +89,12 @@ com.sleepycat.db</FONT>
<BR>
Class ReplicationStats</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.ReplicationStats</B>
</PRE>
<HR>
<DL>
-<DT><PRE>public class <B>ReplicationStats</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
+<DT><PRE>public class <B>ReplicationStats</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
</PRE>
<P>
@@ -503,6 +503,16 @@ Replication statistics for a database environment.
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/ReplicationStats.html#getStartSyncDelayed()">getStartSyncDelayed</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The number of times the client had to delay the start of a cache flush
+ operation (initiated by the master for an impending checkpoint) because it
+ was missing some previous log record(s).</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/ReplicationStats.html#getStartupComplete()">getStartupComplete</A></B>()</CODE>
<BR>
@@ -545,7 +555,7 @@ Replication statistics for a database environment.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/ReplicationStats.html#toString()">toString</A></B>()</CODE>
<BR>
@@ -556,10 +566,10 @@ Replication statistics for a database environment.
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -1075,6 +1085,21 @@ public int <B>getPagesRequested</B>()</PRE>
</DL>
<HR>
+<A NAME="getStartSyncDelayed()"><!-- --></A><H3>
+getStartSyncDelayed</H3>
+<PRE>
+public int <B>getStartSyncDelayed</B>()</PRE>
+<DL>
+<DD>The number of times the client had to delay the start of a cache flush
+ operation (initiated by the master for an impending checkpoint) because it
+ was missing some previous log record(s).
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
<A NAME="getStartupComplete()"><!-- --></A><H3>
getStartupComplete</H3>
<PRE>
@@ -1276,13 +1301,13 @@ public int <B>getElectionUsec</B>()</PRE>
<A NAME="toString()"><!-- --></A><H3>
toString</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
<DL>
<DD>For convenience, the ReplicationStats class has a toString method
that lists all the data fields.
<P>
<DD><DL>
-<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
</DD>
<DD><DL>
</DL>
@@ -1313,7 +1338,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" tit
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -1349,6 +1374,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHO
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/ReplicationStatus.html b/db/docs/java/com/sleepycat/db/ReplicationStatus.html
index f76a18fcd..09595740d 100644
--- a/db/docs/java/com/sleepycat/db/ReplicationStatus.html
+++ b/db/docs/java/com/sleepycat/db/ReplicationStatus.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:57 EDT 2007 -->
<TITLE>
-ReplicationStatus (Oracle Corporation - Berkeley DB Java API)
+ReplicationStatus (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.ReplicationStatus class">
@@ -14,7 +14,7 @@ ReplicationStatus (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="ReplicationStatus (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="ReplicationStatus (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,12 +89,12 @@ com.sleepycat.db</FONT>
<BR>
Class ReplicationStatus</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.ReplicationStatus</B>
</PRE>
<HR>
<DL>
-<DT><PRE>public final class <B>ReplicationStatus</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
+<DT><PRE>public final class <B>ReplicationStatus</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
</PRE>
<P>
@@ -155,14 +155,6 @@ The return status from processing a replication message.
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/db/ReplicationStatus.html#isNewMaster()">isNewMaster</A></B>()</CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A new master has been elected.</TD>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/ReplicationStatus.html#isNewSite()">isNewSite</A></B>()</CODE>
<BR>
@@ -196,7 +188,7 @@ The return status from processing a replication message.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/ReplicationStatus.html#toString()">toString</A></B>()</CODE>
<BR>
@@ -206,10 +198,10 @@ The return status from processing a replication message.
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -269,22 +261,6 @@ public boolean <B>isPermanent</B>()</PRE>
</DL>
<HR>
-<A NAME="isNewMaster()"><!-- --></A><H3>
-isNewMaster</H3>
-<PRE>
-public boolean <B>isNewMaster</B>()</PRE>
-<DL>
-<DD>A new master has been elected. The environment ID of the new master
- is available from the getEnvID method. 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>
-<DD><DL>
-</DL>
-</DD>
-</DL>
-<HR>
-
<A NAME="isNewSite()"><!-- --></A><H3>
isNewSite</H3>
<PRE>
@@ -375,12 +351,12 @@ public <A HREF="../../../com/sleepycat/db/LogSequenceNumber.html" title="class i
<A NAME="toString()"><!-- --></A><H3>
toString</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
<DL>
<DD>
<P>
<DD><DL>
-<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
</DD>
<DD><DL>
</DL>
@@ -411,7 +387,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" tit
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -447,6 +423,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHO
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/ReplicationTimeoutType.html b/db/docs/java/com/sleepycat/db/ReplicationTimeoutType.html
index 20248309a..23ea3f839 100644
--- a/db/docs/java/com/sleepycat/db/ReplicationTimeoutType.html
+++ b/db/docs/java/com/sleepycat/db/ReplicationTimeoutType.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:57 EDT 2007 -->
<TITLE>
-ReplicationTimeoutType (Oracle Corporation - Berkeley DB Java API)
+ReplicationTimeoutType (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.ReplicationTimeoutType class">
@@ -14,7 +14,7 @@ ReplicationTimeoutType (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="ReplicationTimeoutType (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="ReplicationTimeoutType (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,12 +89,12 @@ com.sleepycat.db</FONT>
<BR>
Class ReplicationTimeoutType</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.ReplicationTimeoutType</B>
</PRE>
<HR>
<DL>
-<DT><PRE>public final class <B>ReplicationTimeoutType</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
+<DT><PRE>public final class <B>ReplicationTimeoutType</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
</PRE>
<P>
@@ -130,6 +130,15 @@ method.
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;<A HREF="../../../com/sleepycat/db/ReplicationTimeoutType.html" title="class in com.sleepycat.db">ReplicationTimeoutType</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/ReplicationTimeoutType.html#CHECKPOINT_DELAY">CHECKPOINT_DELAY</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Configure the amount of time the replication manager will delay between
+ completing a checkpoint and writing a checkpoint record into the log.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../com/sleepycat/db/ReplicationTimeoutType.html" title="class in com.sleepycat.db">ReplicationTimeoutType</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/ReplicationTimeoutType.html#CONNECTION_RETRY">CONNECTION_RETRY</A></B></CODE>
<BR>
@@ -154,6 +163,15 @@ method.
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The timeout period for an election.</TD>
</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../com/sleepycat/db/ReplicationTimeoutType.html" title="class in com.sleepycat.db">ReplicationTimeoutType</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/ReplicationTimeoutType.html#FULL_ELECTION_TIMEOUT">FULL_ELECTION_TIMEOUT</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;An optional configuration timeout period to wait for full election
+ participation the first time the replication group finds a master.</TD>
+</TR>
</TABLE>
&nbsp;
<!-- ========== METHOD SUMMARY =========== -->
@@ -166,7 +184,7 @@ method.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/ReplicationTimeoutType.html#toString()">toString</A></B>()</CODE>
<BR>
@@ -176,10 +194,10 @@ method.
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -209,6 +227,21 @@ public static final <A HREF="../../../com/sleepycat/db/ReplicationTimeoutType.ht
</DL>
<HR>
+<A NAME="CHECKPOINT_DELAY"><!-- --></A><H3>
+CHECKPOINT_DELAY</H3>
+<PRE>
+public static final <A HREF="../../../com/sleepycat/db/ReplicationTimeoutType.html" title="class in com.sleepycat.db">ReplicationTimeoutType</A> <B>CHECKPOINT_DELAY</B></PRE>
+<DL>
+<DD>Configure the amount of time the replication manager will delay between
+ completing a checkpoint and writing a checkpoint record into the log. This
+ delay allows clients to complete their own checkpoints before the master
+ requires completion of them. The default is 30 seconds.
+<P>
+<DL>
+</DL>
+</DL>
+<HR>
+
<A NAME="CONNECTION_RETRY"><!-- --></A><H3>
CONNECTION_RETRY</H3>
<PRE>
@@ -246,6 +279,23 @@ public static final <A HREF="../../../com/sleepycat/db/ReplicationTimeoutType.ht
<DL>
</DL>
</DL>
+<HR>
+
+<A NAME="FULL_ELECTION_TIMEOUT"><!-- --></A><H3>
+FULL_ELECTION_TIMEOUT</H3>
+<PRE>
+public static final <A HREF="../../../com/sleepycat/db/ReplicationTimeoutType.html" title="class in com.sleepycat.db">ReplicationTimeoutType</A> <B>FULL_ELECTION_TIMEOUT</B></PRE>
+<DL>
+<DD>An optional configuration timeout period to wait for full election
+ participation the first time the replication group finds a master. By
+ default this option is turned off and normal election timeouts are used.
+ (See the
+ <a href="@docRoot/../ref/rep/elect.html">Elections</a>
+ section in the Berkeley DB Reference Guide for more information.)
+<P>
+<DL>
+</DL>
+</DL>
<!-- ============ METHOD DETAIL ========== -->
@@ -260,12 +310,12 @@ public static final <A HREF="../../../com/sleepycat/db/ReplicationTimeoutType.ht
<A NAME="toString()"><!-- --></A><H3>
toString</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
<DL>
<DD>
<P>
<DD><DL>
-<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
</DD>
<DD><DL>
</DL>
@@ -296,7 +346,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" tit
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -332,6 +382,6 @@ DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/ReplicationTransport.html b/db/docs/java/com/sleepycat/db/ReplicationTransport.html
index 766dd878e..89bbf5b05 100644
--- a/db/docs/java/com/sleepycat/db/ReplicationTransport.html
+++ b/db/docs/java/com/sleepycat/db/ReplicationTransport.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:57 EDT 2007 -->
<TITLE>
-ReplicationTransport (Oracle Corporation - Berkeley DB Java API)
+ReplicationTransport (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.ReplicationTransport interface">
@@ -14,7 +14,7 @@ ReplicationTransport (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="ReplicationTransport (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="ReplicationTransport (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -285,7 +285,7 @@ int <B>send</B>(<A HREF="../../../com/sleepycat/db/Environment.html" title="clas
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -321,6 +321,6 @@ DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/RunRecoveryException.html b/db/docs/java/com/sleepycat/db/RunRecoveryException.html
index 55cb50caf..a8011d499 100644
--- a/db/docs/java/com/sleepycat/db/RunRecoveryException.html
+++ b/db/docs/java/com/sleepycat/db/RunRecoveryException.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:57 EDT 2007 -->
<TITLE>
-RunRecoveryException (Oracle Corporation - Berkeley DB Java API)
+RunRecoveryException (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.RunRecoveryException class">
@@ -14,7 +14,7 @@ RunRecoveryException (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="RunRecoveryException (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="RunRecoveryException (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,14 +89,14 @@ com.sleepycat.db</FONT>
<BR>
Class RunRecoveryException</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
- <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">java.lang.Throwable</A>
- <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Exception.html" title="class or interface in java.lang">java.lang.Exception</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+ <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">java.lang.Throwable</A>
+ <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Exception.html" title="class or interface in java.lang">java.lang.Exception</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">com.sleepycat.db.DatabaseException</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.RunRecoveryException</B>
</PRE>
<DL>
-<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/Serializable.html" title="class or interface in java.io">Serializable</A></DD>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Serializable.html" title="class or interface in java.io">Serializable</A></DD>
</DL>
<HR>
<DL>
@@ -140,19 +140,19 @@ the same way. When this occurs, recovery should be performed.
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Throwable"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang">fillInStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#getCause()" title="class or interface in java.lang">getCause</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang">getLocalizedMessage</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang">getMessage</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang">getStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang">initCause</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement[])" title="class or interface in java.lang">setStackTrace</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang">fillInStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getCause()" title="class or interface in java.lang">getCause</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang">getLocalizedMessage</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang">getMessage</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang">getStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang">initCause</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement[])" title="class or interface in java.lang">setStackTrace</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -182,7 +182,7 @@ the same way. When this occurs, recovery should be performed.
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -218,6 +218,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;METHOD</FONT></TD>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/SecondaryConfig.html b/db/docs/java/com/sleepycat/db/SecondaryConfig.html
index 9dc299f40..ede556566 100644
--- a/db/docs/java/com/sleepycat/db/SecondaryConfig.html
+++ b/db/docs/java/com/sleepycat/db/SecondaryConfig.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:57 EDT 2007 -->
<TITLE>
-SecondaryConfig (Oracle Corporation - Berkeley DB Java API)
+SecondaryConfig (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.SecondaryConfig class">
@@ -14,7 +14,7 @@ SecondaryConfig (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="SecondaryConfig (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="SecondaryConfig (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,16 +89,16 @@ com.sleepycat.db</FONT>
<BR>
Class SecondaryConfig</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../com/sleepycat/db/DatabaseConfig.html" title="class in com.sleepycat.db">com.sleepycat.db.DatabaseConfig</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.SecondaryConfig</B>
</PRE>
<DL>
-<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A></DD>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A></DD>
</DL>
<HR>
<DL>
-<DT><PRE>public class <B>SecondaryConfig</B><DT>extends <A HREF="../../../com/sleepycat/db/DatabaseConfig.html" title="class in com.sleepycat.db">DatabaseConfig</A><DT>implements <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A></DL>
+<DT><PRE>public class <B>SecondaryConfig</B><DT>extends <A HREF="../../../com/sleepycat/db/DatabaseConfig.html" title="class in com.sleepycat.db">DatabaseConfig</A><DT>implements <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A></DL>
</PRE>
<P>
@@ -220,6 +220,15 @@ happening in the first place.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../com/sleepycat/db/SecondaryMultiKeyCreator.html" title="interface in com.sleepycat.db">SecondaryMultiKeyCreator</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/SecondaryConfig.html#getMultiKeyCreator()">getMultiKeyCreator</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the user-supplied object used for creating multi-valued secondary
+ keys.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/SecondaryConfig.html#setAllowPopulate(boolean)">setAllowPopulate</A></B>(boolean&nbsp;allowPopulate)</CODE>
@@ -243,6 +252,15 @@ happening in the first place.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Specifies the user-supplied object used for creating single-valued
secondary keys.</TD>
</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/SecondaryConfig.html#setMultiKeyCreator(com.sleepycat.db.SecondaryMultiKeyCreator)">setMultiKeyCreator</A></B>(<A HREF="../../../com/sleepycat/db/SecondaryMultiKeyCreator.html" title="interface in com.sleepycat.db">SecondaryMultiKeyCreator</A>&nbsp;keyCreator)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Specifies the user-supplied object used for creating multi-valued
+ secondary keys.</TD>
+</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_com.sleepycat.db.DatabaseConfig"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
@@ -250,16 +268,16 @@ happening in the first place.
<TH ALIGN="left"><B>Methods inherited from class com.sleepycat.db.<A HREF="../../../com/sleepycat/db/DatabaseConfig.html" title="class in com.sleepycat.db">DatabaseConfig</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getAllowCreate()">getAllowCreate</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getBtreeComparator()">getBtreeComparator</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getBtreeMinKey()">getBtreeMinKey</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getBtreePrefixCalculator()">getBtreePrefixCalculator</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getBtreeRecordNumbers()">getBtreeRecordNumbers</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getByteOrder()">getByteOrder</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getByteSwapped()">getByteSwapped</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getCacheCount()">getCacheCount</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getCacheSize()">getCacheSize</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getChecksum()">getChecksum</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getDirtyRead()">getDirtyRead</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getDuplicateComparator()">getDuplicateComparator</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getEncrypted()">getEncrypted</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getErrorHandler()">getErrorHandler</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getErrorPrefix()">getErrorPrefix</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getErrorStream()">getErrorStream</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getExclusiveCreate()">getExclusiveCreate</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getFeedbackHandler()">getFeedbackHandler</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getHasher()">getHasher</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getHashFillFactor()">getHashFillFactor</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getHashNumElements()">getHashNumElements</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getMessageHandler()">getMessageHandler</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getMessageStream()">getMessageStream</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getMode()">getMode</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getMultiversion()">getMultiversion</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getNoMMap()">getNoMMap</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getPageSize()">getPageSize</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getPanicHandler()">getPanicHandler</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getQueueExtentSize()">getQueueExtentSize</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getQueueInOrder()">getQueueInOrder</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getReadOnly()">getReadOnly</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getReadUncommitted()">getReadUncommitted</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getRecordDelimiter()">getRecordDelimiter</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getRecordLength()">getRecordLength</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getRecordNumberAppender()">getRecordNumberAppender</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getRecordPad()">getRecordPad</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getRecordSource()">getRecordSource</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getRenumbering()">getRenumbering</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getReverseSplitOff()">getReverseSplitOff</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getSnapshot()">getSnapshot</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getSortedDuplicates()">getSortedDuplicates</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getTransactional()">getTransactional</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getTransactionNotDurable()">getTransactionNotDurable</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getTruncate()">getTruncate</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getType()">getType</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getUnsortedDuplicates()">getUnsortedDuplicates</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getXACreate()">getXACreate</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setAllowCreate(boolean)">setAllowCreate</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setBtreeComparator(java.util.Comparator)">setBtreeComparator</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setBtreeMinKey(int)">setBtreeMinKey</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setBtreePrefixCalculator(com.sleepycat.db.BtreePrefixCalculator)">setBtreePrefixCalculator</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setBtreeRecordNumbers(boolean)">setBtreeRecordNumbers</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setByteOrder(int)">setByteOrder</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setCacheCount(int)">setCacheCount</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setCacheSize(long)">setCacheSize</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setChecksum(boolean)">setChecksum</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setDirtyRead(boolean)">setDirtyRead</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setDuplicateComparator(java.util.Comparator)">setDuplicateComparator</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setEncrypted(java.lang.String)">setEncrypted</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setErrorHandler(com.sleepycat.db.ErrorHandler)">setErrorHandler</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setErrorPrefix(java.lang.String)">setErrorPrefix</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setErrorStream(java.io.OutputStream)">setErrorStream</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setExclusiveCreate(boolean)">setExclusiveCreate</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setFeedbackHandler(com.sleepycat.db.FeedbackHandler)">setFeedbackHandler</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setHasher(com.sleepycat.db.Hasher)">setHasher</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setHashFillFactor(int)">setHashFillFactor</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setHashNumElements(int)">setHashNumElements</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setMessageHandler(com.sleepycat.db.MessageHandler)">setMessageHandler</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setMessageStream(java.io.OutputStream)">setMessageStream</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setMode(int)">setMode</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setMultiversion(boolean)">setMultiversion</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setNoMMap(boolean)">setNoMMap</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setPageSize(int)">setPageSize</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setPanicHandler(com.sleepycat.db.PanicHandler)">setPanicHandler</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setQueueExtentSize(int)">setQueueExtentSize</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setQueueInOrder(boolean)">setQueueInOrder</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setReadOnly(boolean)">setReadOnly</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setReadUncommitted(boolean)">setReadUncommitted</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setRecordDelimiter(int)">setRecordDelimiter</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setRecordLength(int)">setRecordLength</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setRecordNumberAppender(com.sleepycat.db.RecordNumberAppender)">setRecordNumberAppender</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setRecordPad(int)">setRecordPad</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setRecordSource(java.io.File)">setRecordSource</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setRenumbering(boolean)">setRenumbering</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setReverseSplitOff(boolean)">setReverseSplitOff</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setSnapshot(boolean)">setSnapshot</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setSortedDuplicates(boolean)">setSortedDuplicates</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setTransactional(boolean)">setTransactional</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setTransactionNotDurable(boolean)">setTransactionNotDurable</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setTruncate(boolean)">setTruncate</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setType(com.sleepycat.db.DatabaseType)">setType</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setUnsortedDuplicates(boolean)">setUnsortedDuplicates</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setXACreate(boolean)">setXACreate</A></CODE></TD>
+<TD><CODE><A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getAllowCreate()">getAllowCreate</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getBtreeComparator()">getBtreeComparator</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getBtreeMinKey()">getBtreeMinKey</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getBtreePrefixCalculator()">getBtreePrefixCalculator</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getBtreeRecordNumbers()">getBtreeRecordNumbers</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getByteOrder()">getByteOrder</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getByteSwapped()">getByteSwapped</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getCacheCount()">getCacheCount</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getCacheSize()">getCacheSize</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getChecksum()">getChecksum</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getDirtyRead()">getDirtyRead</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getDuplicateComparator()">getDuplicateComparator</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getEncrypted()">getEncrypted</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getErrorHandler()">getErrorHandler</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getErrorPrefix()">getErrorPrefix</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getErrorStream()">getErrorStream</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getExclusiveCreate()">getExclusiveCreate</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getFeedbackHandler()">getFeedbackHandler</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getHashComparator()">getHashComparator</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getHasher()">getHasher</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getHashFillFactor()">getHashFillFactor</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getHashNumElements()">getHashNumElements</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getMessageHandler()">getMessageHandler</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getMessageStream()">getMessageStream</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getMode()">getMode</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getMultiversion()">getMultiversion</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getNoMMap()">getNoMMap</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getPageSize()">getPageSize</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getPanicHandler()">getPanicHandler</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getPriority()">getPriority</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getQueueExtentSize()">getQueueExtentSize</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getQueueInOrder()">getQueueInOrder</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getReadOnly()">getReadOnly</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getReadUncommitted()">getReadUncommitted</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getRecordDelimiter()">getRecordDelimiter</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getRecordLength()">getRecordLength</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getRecordNumberAppender()">getRecordNumberAppender</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getRecordPad()">getRecordPad</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getRecordSource()">getRecordSource</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getRenumbering()">getRenumbering</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getReverseSplitOff()">getReverseSplitOff</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getSnapshot()">getSnapshot</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getSortedDuplicates()">getSortedDuplicates</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getTransactional()">getTransactional</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getTransactionNotDurable()">getTransactionNotDurable</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getTruncate()">getTruncate</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getType()">getType</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getUnsortedDuplicates()">getUnsortedDuplicates</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#getXACreate()">getXACreate</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setAllowCreate(boolean)">setAllowCreate</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setBtreeComparator(java.util.Comparator)">setBtreeComparator</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setBtreeMinKey(int)">setBtreeMinKey</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setBtreePrefixCalculator(com.sleepycat.db.BtreePrefixCalculator)">setBtreePrefixCalculator</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setBtreeRecordNumbers(boolean)">setBtreeRecordNumbers</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setByteOrder(int)">setByteOrder</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setCacheCount(int)">setCacheCount</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setCacheSize(long)">setCacheSize</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setChecksum(boolean)">setChecksum</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setDirtyRead(boolean)">setDirtyRead</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setDuplicateComparator(java.util.Comparator)">setDuplicateComparator</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setEncrypted(java.lang.String)">setEncrypted</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setErrorHandler(com.sleepycat.db.ErrorHandler)">setErrorHandler</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setErrorPrefix(java.lang.String)">setErrorPrefix</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setErrorStream(java.io.OutputStream)">setErrorStream</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setExclusiveCreate(boolean)">setExclusiveCreate</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setFeedbackHandler(com.sleepycat.db.FeedbackHandler)">setFeedbackHandler</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setHashComparator(java.util.Comparator)">setHashComparator</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setHasher(com.sleepycat.db.Hasher)">setHasher</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setHashFillFactor(int)">setHashFillFactor</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setHashNumElements(int)">setHashNumElements</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setMessageHandler(com.sleepycat.db.MessageHandler)">setMessageHandler</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setMessageStream(java.io.OutputStream)">setMessageStream</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setMode(int)">setMode</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setMultiversion(boolean)">setMultiversion</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setNoMMap(boolean)">setNoMMap</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setPageSize(int)">setPageSize</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setPanicHandler(com.sleepycat.db.PanicHandler)">setPanicHandler</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setPriority(com.sleepycat.db.CacheFilePriority)">setPriority</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setQueueExtentSize(int)">setQueueExtentSize</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setQueueInOrder(boolean)">setQueueInOrder</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setReadOnly(boolean)">setReadOnly</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setReadUncommitted(boolean)">setReadUncommitted</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setRecordDelimiter(int)">setRecordDelimiter</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setRecordLength(int)">setRecordLength</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setRecordNumberAppender(com.sleepycat.db.RecordNumberAppender)">setRecordNumberAppender</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setRecordPad(int)">setRecordPad</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setRecordSource(java.io.File)">setRecordSource</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setRenumbering(boolean)">setRenumbering</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setReverseSplitOff(boolean)">setReverseSplitOff</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setSnapshot(boolean)">setSnapshot</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setSortedDuplicates(boolean)">setSortedDuplicates</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setTransactional(boolean)">setTransactional</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setTransactionNotDurable(boolean)">setTransactionNotDurable</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setTruncate(boolean)">setTruncate</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setType(com.sleepycat.db.DatabaseType)">setType</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setUnsortedDuplicates(boolean)">setUnsortedDuplicates</A>, <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setXACreate(boolean)">setXACreate</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -457,6 +475,50 @@ public boolean <B>getImmutableSecondaryKey</B>()</PRE>
<p><DT><B>See Also:</B><DD><A HREF="../../../com/sleepycat/db/SecondaryConfig.html#setImmutableSecondaryKey(boolean)"><CODE>setImmutableSecondaryKey(boolean)</CODE></A></DL>
</DD>
</DL>
+<HR>
+
+<A NAME="setMultiKeyCreator(com.sleepycat.db.SecondaryMultiKeyCreator)"><!-- --></A><H3>
+setMultiKeyCreator</H3>
+<PRE>
+public void <B>setMultiKeyCreator</B>(<A HREF="../../../com/sleepycat/db/SecondaryMultiKeyCreator.html" title="interface in com.sleepycat.db">SecondaryMultiKeyCreator</A>&nbsp;keyCreator)</PRE>
+<DL>
+<DD>Specifies the user-supplied object used for creating multi-valued
+ secondary keys.
+ <p>
+ Unless the primary database is read-only, a key creator is required
+ when opening a secondary database. Either a KeyCreator or MultiKeyCreator
+ must be specified, but both may not be specified.
+ <p>
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>keyCreator</CODE> - the user-supplied object used for creating multi-valued
+ secondary keys.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getMultiKeyCreator()"><!-- --></A><H3>
+getMultiKeyCreator</H3>
+<PRE>
+public <A HREF="../../../com/sleepycat/db/SecondaryMultiKeyCreator.html" title="interface in com.sleepycat.db">SecondaryMultiKeyCreator</A> <B>getMultiKeyCreator</B>()</PRE>
+<DL>
+<DD>Returns the user-supplied object used for creating multi-valued secondary
+ keys.
+ <p>
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the user-supplied object used for creating multi-valued secondary
+ keys.
+ <p><DT><B>See Also:</B><DD><A HREF="../../../com/sleepycat/db/SecondaryConfig.html#setKeyCreator(com.sleepycat.db.SecondaryKeyCreator)"><CODE>setKeyCreator(com.sleepycat.db.SecondaryKeyCreator)</CODE></A></DL>
+</DD>
+</DL>
<!-- ========= END OF CLASS DATA ========= -->
<HR>
@@ -482,7 +544,7 @@ public boolean <B>getImmutableSecondaryKey</B>()</PRE>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -518,6 +580,6 @@ DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/SecondaryCursor.html b/db/docs/java/com/sleepycat/db/SecondaryCursor.html
index acf05d8ba..700b85fc1 100644
--- a/db/docs/java/com/sleepycat/db/SecondaryCursor.html
+++ b/db/docs/java/com/sleepycat/db/SecondaryCursor.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:57 EDT 2007 -->
<TITLE>
-SecondaryCursor (Oracle Corporation - Berkeley DB Java API)
+SecondaryCursor (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.SecondaryCursor class">
@@ -14,7 +14,7 @@ SecondaryCursor (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="SecondaryCursor (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="SecondaryCursor (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,7 +89,7 @@ com.sleepycat.db</FONT>
<BR>
Class SecondaryCursor</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../com/sleepycat/db/Cursor.html" title="class in com.sleepycat.db">com.sleepycat.db.Cursor</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.SecondaryCursor</B>
</PRE>
@@ -354,16 +354,16 @@ return the associated key/data pair.</TD>
<TH ALIGN="left"><B>Methods inherited from class com.sleepycat.db.<A HREF="../../../com/sleepycat/db/Cursor.html" title="class in com.sleepycat.db">Cursor</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="../../../com/sleepycat/db/Cursor.html#close()">close</A>, <A HREF="../../../com/sleepycat/db/Cursor.html#count()">count</A>, <A HREF="../../../com/sleepycat/db/Cursor.html#delete()">delete</A>, <A HREF="../../../com/sleepycat/db/Cursor.html#getConfig()">getConfig</A>, <A HREF="../../../com/sleepycat/db/Cursor.html#getCurrent(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.LockMode)">getCurrent</A>, <A HREF="../../../com/sleepycat/db/Cursor.html#getDatabase()">getDatabase</A>, <A HREF="../../../com/sleepycat/db/Cursor.html#getFirst(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.LockMode)">getFirst</A>, <A HREF="../../../com/sleepycat/db/Cursor.html#getLast(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.LockMode)">getLast</A>, <A HREF="../../../com/sleepycat/db/Cursor.html#getNext(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.LockMode)">getNext</A>, <A HREF="../../../com/sleepycat/db/Cursor.html#getNextDup(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.LockMode)">getNextDup</A>, <A HREF="../../../com/sleepycat/db/Cursor.html#getNextNoDup(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.LockMode)">getNextNoDup</A>, <A HREF="../../../com/sleepycat/db/Cursor.html#getPrev(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.LockMode)">getPrev</A>, <A HREF="../../../com/sleepycat/db/Cursor.html#getPrevDup(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.LockMode)">getPrevDup</A>, <A HREF="../../../com/sleepycat/db/Cursor.html#getPrevNoDup(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.LockMode)">getPrevNoDup</A>, <A HREF="../../../com/sleepycat/db/Cursor.html#getRecordNumber(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.LockMode)">getRecordNumber</A>, <A HREF="../../../com/sleepycat/db/Cursor.html#getSearchBoth(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.LockMode)">getSearchBoth</A>, <A HREF="../../../com/sleepycat/db/Cursor.html#getSearchBothRange(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.LockMode)">getSearchBothRange</A>, <A HREF="../../../com/sleepycat/db/Cursor.html#getSearchKey(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.LockMode)">getSearchKey</A>, <A HREF="../../../com/sleepycat/db/Cursor.html#getSearchKeyRange(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.LockMode)">getSearchKeyRange</A>, <A HREF="../../../com/sleepycat/db/Cursor.html#getSearchRecordNumber(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.LockMode)">getSearchRecordNumber</A>, <A HREF="../../../com/sleepycat/db/Cursor.html#put(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry)">put</A>, <A HREF="../../../com/sleepycat/db/Cursor.html#putAfter(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry)">putAfter</A>, <A HREF="../../../com/sleepycat/db/Cursor.html#putBefore(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry)">putBefore</A>, <A HREF="../../../com/sleepycat/db/Cursor.html#putCurrent(com.sleepycat.db.DatabaseEntry)">putCurrent</A>, <A HREF="../../../com/sleepycat/db/Cursor.html#putKeyFirst(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry)">putKeyFirst</A>, <A HREF="../../../com/sleepycat/db/Cursor.html#putKeyLast(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry)">putKeyLast</A>, <A HREF="../../../com/sleepycat/db/Cursor.html#putNoDupData(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry)">putNoDupData</A>, <A HREF="../../../com/sleepycat/db/Cursor.html#putNoOverwrite(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry)">putNoOverwrite</A></CODE></TD>
+<TD><CODE><A HREF="../../../com/sleepycat/db/Cursor.html#close()">close</A>, <A HREF="../../../com/sleepycat/db/Cursor.html#count()">count</A>, <A HREF="../../../com/sleepycat/db/Cursor.html#delete()">delete</A>, <A HREF="../../../com/sleepycat/db/Cursor.html#getConfig()">getConfig</A>, <A HREF="../../../com/sleepycat/db/Cursor.html#getCurrent(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.LockMode)">getCurrent</A>, <A HREF="../../../com/sleepycat/db/Cursor.html#getDatabase()">getDatabase</A>, <A HREF="../../../com/sleepycat/db/Cursor.html#getFirst(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.LockMode)">getFirst</A>, <A HREF="../../../com/sleepycat/db/Cursor.html#getLast(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.LockMode)">getLast</A>, <A HREF="../../../com/sleepycat/db/Cursor.html#getNext(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.LockMode)">getNext</A>, <A HREF="../../../com/sleepycat/db/Cursor.html#getNextDup(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.LockMode)">getNextDup</A>, <A HREF="../../../com/sleepycat/db/Cursor.html#getNextNoDup(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.LockMode)">getNextNoDup</A>, <A HREF="../../../com/sleepycat/db/Cursor.html#getPrev(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.LockMode)">getPrev</A>, <A HREF="../../../com/sleepycat/db/Cursor.html#getPrevDup(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.LockMode)">getPrevDup</A>, <A HREF="../../../com/sleepycat/db/Cursor.html#getPrevNoDup(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.LockMode)">getPrevNoDup</A>, <A HREF="../../../com/sleepycat/db/Cursor.html#getPriority()">getPriority</A>, <A HREF="../../../com/sleepycat/db/Cursor.html#getRecordNumber(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.LockMode)">getRecordNumber</A>, <A HREF="../../../com/sleepycat/db/Cursor.html#getSearchBoth(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.LockMode)">getSearchBoth</A>, <A HREF="../../../com/sleepycat/db/Cursor.html#getSearchBothRange(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.LockMode)">getSearchBothRange</A>, <A HREF="../../../com/sleepycat/db/Cursor.html#getSearchKey(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.LockMode)">getSearchKey</A>, <A HREF="../../../com/sleepycat/db/Cursor.html#getSearchKeyRange(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.LockMode)">getSearchKeyRange</A>, <A HREF="../../../com/sleepycat/db/Cursor.html#getSearchRecordNumber(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.LockMode)">getSearchRecordNumber</A>, <A HREF="../../../com/sleepycat/db/Cursor.html#put(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry)">put</A>, <A HREF="../../../com/sleepycat/db/Cursor.html#putAfter(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry)">putAfter</A>, <A HREF="../../../com/sleepycat/db/Cursor.html#putBefore(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry)">putBefore</A>, <A HREF="../../../com/sleepycat/db/Cursor.html#putCurrent(com.sleepycat.db.DatabaseEntry)">putCurrent</A>, <A HREF="../../../com/sleepycat/db/Cursor.html#putKeyFirst(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry)">putKeyFirst</A>, <A HREF="../../../com/sleepycat/db/Cursor.html#putKeyLast(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry)">putKeyLast</A>, <A HREF="../../../com/sleepycat/db/Cursor.html#putNoDupData(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry)">putNoDupData</A>, <A HREF="../../../com/sleepycat/db/Cursor.html#putNoOverwrite(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry)">putNoOverwrite</A>, <A HREF="../../../com/sleepycat/db/Cursor.html#setPriority(com.sleepycat.db.CacheFilePriority)">setPriority</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -454,13 +454,13 @@ need to be initialized by the caller.<DD><CODE>lockMode</CODE> - the locking att
<DT><B>Returns:</B><DD><A HREF="../../../com/sleepycat/db/OperationStatus.html#KEYEMPTY"><CODE>OperationStatus.KEYEMPTY</CODE></A> if the key/pair at the cursor
position has been deleted; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
does not contain a required non-null byte array.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DeadlockException.html" title="class in com.sleepycat.db">DeadlockException</A></CODE> - if the operation was selected to resolve a
deadlock.
<p>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.
<p></DL>
@@ -494,15 +494,15 @@ returned as output. Multiple results can be retrieved by passing an object
that is a subclass of <A HREF="../../../com/sleepycat/db/MultipleEntry.html" title="class in com.sleepycat.db"><CODE>MultipleEntry</CODE></A>, otherwise its byte array does not
need to be initialized by the caller.<DD><CODE>lockMode</CODE> - the locking attributes; if null, default attributes are used.
<DT><B>Returns:</B><DD><A HREF="../../../com/sleepycat/db/OperationStatus.html#NOTFOUND"><CODE>OperationStatus.NOTFOUND</CODE></A> if no matching key/data pair is
-found; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
+found; <A HREF="../../../com/sleepycat/db/OperationStatus.html#KEYEMPTY"><CODE>OperationStatus.KEYEMPTY</CODE></A> if the database is a Queue or Recno database and the specified key exists, but was never explicitly created by the application or was later deleted; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
does not contain a required non-null byte array.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DeadlockException.html" title="class in com.sleepycat.db">DeadlockException</A></CODE> - if the operation was selected to resolve a
deadlock.
<p>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.
<p></DL>
@@ -535,15 +535,15 @@ caller.<DD><CODE>data</CODE> - the primary data
returned as output. Its byte array does not need to be initialized by the
caller.<DD><CODE>lockMode</CODE> - the locking attributes; if null, default attributes are used.
<DT><B>Returns:</B><DD><A HREF="../../../com/sleepycat/db/OperationStatus.html#NOTFOUND"><CODE>OperationStatus.NOTFOUND</CODE></A> if no matching key/data pair is
-found; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
+found; <A HREF="../../../com/sleepycat/db/OperationStatus.html#KEYEMPTY"><CODE>OperationStatus.KEYEMPTY</CODE></A> if the database is a Queue or Recno database and the specified key exists, but was never explicitly created by the application or was later deleted; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
does not contain a required non-null byte array.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DeadlockException.html" title="class in com.sleepycat.db">DeadlockException</A></CODE> - if the operation was selected to resolve a
deadlock.
<p>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.
<p></DL>
@@ -583,15 +583,15 @@ returned as output. Multiple results can be retrieved by passing an object
that is a subclass of <A HREF="../../../com/sleepycat/db/MultipleEntry.html" title="class in com.sleepycat.db"><CODE>MultipleEntry</CODE></A>, otherwise its byte array does not
need to be initialized by the caller.<DD><CODE>lockMode</CODE> - the locking attributes; if null, default attributes are used.
<DT><B>Returns:</B><DD><A HREF="../../../com/sleepycat/db/OperationStatus.html#NOTFOUND"><CODE>OperationStatus.NOTFOUND</CODE></A> if no matching key/data pair is
-found; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
+found; <A HREF="../../../com/sleepycat/db/OperationStatus.html#KEYEMPTY"><CODE>OperationStatus.KEYEMPTY</CODE></A> if the database is a Queue or Recno database and the specified key exists, but was never explicitly created by the application or was later deleted; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
does not contain a required non-null byte array.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DeadlockException.html" title="class in com.sleepycat.db">DeadlockException</A></CODE> - if the operation was selected to resolve a
deadlock.
<p>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.
<p></DL>
@@ -625,15 +625,15 @@ returned as output. Multiple results can be retrieved by passing an object
that is a subclass of <A HREF="../../../com/sleepycat/db/MultipleEntry.html" title="class in com.sleepycat.db"><CODE>MultipleEntry</CODE></A>, otherwise its byte array does not
need to be initialized by the caller.<DD><CODE>lockMode</CODE> - the locking attributes; if null, default attributes are used.
<DT><B>Returns:</B><DD><A HREF="../../../com/sleepycat/db/OperationStatus.html#NOTFOUND"><CODE>OperationStatus.NOTFOUND</CODE></A> if no matching key/data pair is
-found; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
+found; <A HREF="../../../com/sleepycat/db/OperationStatus.html#KEYEMPTY"><CODE>OperationStatus.KEYEMPTY</CODE></A> if the database is a Queue or Recno database and the specified key exists, but was never explicitly created by the application or was later deleted; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
does not contain a required non-null byte array.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DeadlockException.html" title="class in com.sleepycat.db">DeadlockException</A></CODE> - if the operation was selected to resolve a
deadlock.
<p>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.
<p></DL>
@@ -672,15 +672,15 @@ returned as output. Multiple results can be retrieved by passing an object
that is a subclass of <A HREF="../../../com/sleepycat/db/MultipleEntry.html" title="class in com.sleepycat.db"><CODE>MultipleEntry</CODE></A>, otherwise its byte array does not
need to be initialized by the caller.<DD><CODE>lockMode</CODE> - the locking attributes; if null, default attributes are used.
<DT><B>Returns:</B><DD><A HREF="../../../com/sleepycat/db/OperationStatus.html#NOTFOUND"><CODE>OperationStatus.NOTFOUND</CODE></A> if no matching key/data pair is
-found; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
+found; <A HREF="../../../com/sleepycat/db/OperationStatus.html#KEYEMPTY"><CODE>OperationStatus.KEYEMPTY</CODE></A> if the database is a Queue or Recno database and the specified key exists, but was never explicitly created by the application or was later deleted; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
does not contain a required non-null byte array.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DeadlockException.html" title="class in com.sleepycat.db">DeadlockException</A></CODE> - if the operation was selected to resolve a
deadlock.
<p>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.
<p></DL>
@@ -719,15 +719,15 @@ caller.<DD><CODE>data</CODE> - the primary data
returned as output. Its byte array does not need to be initialized by the
caller.<DD><CODE>lockMode</CODE> - the locking attributes; if null, default attributes are used.
<DT><B>Returns:</B><DD><A HREF="../../../com/sleepycat/db/OperationStatus.html#NOTFOUND"><CODE>OperationStatus.NOTFOUND</CODE></A> if no matching key/data pair is
-found; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
+found; <A HREF="../../../com/sleepycat/db/OperationStatus.html#KEYEMPTY"><CODE>OperationStatus.KEYEMPTY</CODE></A> if the database is a Queue or Recno database and the specified key exists, but was never explicitly created by the application or was later deleted; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
does not contain a required non-null byte array.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DeadlockException.html" title="class in com.sleepycat.db">DeadlockException</A></CODE> - if the operation was selected to resolve a
deadlock.
<p>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.
<p></DL>
@@ -760,15 +760,15 @@ caller.<DD><CODE>data</CODE> - the primary data
returned as output. Its byte array does not need to be initialized by the
caller.<DD><CODE>lockMode</CODE> - the locking attributes; if null, default attributes are used.
<DT><B>Returns:</B><DD><A HREF="../../../com/sleepycat/db/OperationStatus.html#NOTFOUND"><CODE>OperationStatus.NOTFOUND</CODE></A> if no matching key/data pair is
-found; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
+found; <A HREF="../../../com/sleepycat/db/OperationStatus.html#KEYEMPTY"><CODE>OperationStatus.KEYEMPTY</CODE></A> if the database is a Queue or Recno database and the specified key exists, but was never explicitly created by the application or was later deleted; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
does not contain a required non-null byte array.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DeadlockException.html" title="class in com.sleepycat.db">DeadlockException</A></CODE> - if the operation was selected to resolve a
deadlock.
<p>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.
<p></DL>
@@ -806,15 +806,15 @@ caller.<DD><CODE>data</CODE> - the primary data
returned as output. Its byte array does not need to be initialized by the
caller.<DD><CODE>lockMode</CODE> - the locking attributes; if null, default attributes are used.
<DT><B>Returns:</B><DD><A HREF="../../../com/sleepycat/db/OperationStatus.html#NOTFOUND"><CODE>OperationStatus.NOTFOUND</CODE></A> if no matching key/data pair is
-found; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
+found; <A HREF="../../../com/sleepycat/db/OperationStatus.html#KEYEMPTY"><CODE>OperationStatus.KEYEMPTY</CODE></A> if the database is a Queue or Recno database and the specified key exists, but was never explicitly created by the application or was later deleted; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
does not contain a required non-null byte array.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DeadlockException.html" title="class in com.sleepycat.db">DeadlockException</A></CODE> - if the operation was selected to resolve a
deadlock.
<p>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.
<p></DL>
@@ -848,15 +848,15 @@ returned as output. Multiple results can be retrieved by passing an object
that is a subclass of <A HREF="../../../com/sleepycat/db/MultipleEntry.html" title="class in com.sleepycat.db"><CODE>MultipleEntry</CODE></A>, otherwise its byte array does not
need to be initialized by the caller.<DD><CODE>lockMode</CODE> - the locking attributes; if null, default attributes are used.
<DT><B>Returns:</B><DD><A HREF="../../../com/sleepycat/db/OperationStatus.html#NOTFOUND"><CODE>OperationStatus.NOTFOUND</CODE></A> if no matching key/data pair is
-found; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
+found; <A HREF="../../../com/sleepycat/db/OperationStatus.html#KEYEMPTY"><CODE>OperationStatus.KEYEMPTY</CODE></A> if the database is a Queue or Recno database and the specified key exists, but was never explicitly created by the application or was later deleted; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
does not contain a required non-null byte array.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DeadlockException.html" title="class in com.sleepycat.db">DeadlockException</A></CODE> - if the operation was selected to resolve a
deadlock.
<p>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.
<p></DL>
@@ -894,15 +894,15 @@ returned as output. Multiple results can be retrieved by passing an object
that is a subclass of <A HREF="../../../com/sleepycat/db/MultipleEntry.html" title="class in com.sleepycat.db"><CODE>MultipleEntry</CODE></A>, otherwise its byte array does not
need to be initialized by the caller.<DD><CODE>lockMode</CODE> - the locking attributes; if null, default attributes are used.
<DT><B>Returns:</B><DD><A HREF="../../../com/sleepycat/db/OperationStatus.html#NOTFOUND"><CODE>OperationStatus.NOTFOUND</CODE></A> if no matching key/data pair is
-found; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
+found; <A HREF="../../../com/sleepycat/db/OperationStatus.html#KEYEMPTY"><CODE>OperationStatus.KEYEMPTY</CODE></A> if the database is a Queue or Recno database and the specified key exists, but was never explicitly created by the application or was later deleted; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
does not contain a required non-null byte array.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DeadlockException.html" title="class in com.sleepycat.db">DeadlockException</A></CODE> - if the operation was selected to resolve a
deadlock.
<p>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.
<p></DL>
@@ -934,15 +934,15 @@ caller.<DD><CODE>data</CODE> - the primary data
returned as output. Its byte array does not need to be initialized by the
caller.<DD><CODE>lockMode</CODE> - the locking attributes; if null, default attributes are used.
<DT><B>Returns:</B><DD><A HREF="../../../com/sleepycat/db/OperationStatus.html#NOTFOUND"><CODE>OperationStatus.NOTFOUND</CODE></A> if no matching key/data pair is
-found; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
+found; <A HREF="../../../com/sleepycat/db/OperationStatus.html#KEYEMPTY"><CODE>OperationStatus.KEYEMPTY</CODE></A> if the database is a Queue or Recno database and the specified key exists, but was never explicitly created by the application or was later deleted; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
does not contain a required non-null byte array.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DeadlockException.html" title="class in com.sleepycat.db">DeadlockException</A></CODE> - if the operation was selected to resolve a
deadlock.
<p>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.
<p></DL>
@@ -979,15 +979,15 @@ byte array by the caller.<DD><CODE>data</CODE> - the primary data
returned as output. Its byte array does not need to be initialized by the
caller.<DD><CODE>lockMode</CODE> - the locking attributes; if null, default attributes are used.
<DT><B>Returns:</B><DD><A HREF="../../../com/sleepycat/db/OperationStatus.html#NOTFOUND"><CODE>OperationStatus.NOTFOUND</CODE></A> if no matching key/data pair is
-found; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
+found; <A HREF="../../../com/sleepycat/db/OperationStatus.html#KEYEMPTY"><CODE>OperationStatus.KEYEMPTY</CODE></A> if the database is a Queue or Recno database and the specified key exists, but was never explicitly created by the application or was later deleted; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
does not contain a required non-null byte array.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DeadlockException.html" title="class in com.sleepycat.db">DeadlockException</A></CODE> - if the operation was selected to resolve a
deadlock.
<p>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.
<p></DL>
@@ -1041,15 +1041,15 @@ caller.<DD><CODE>primaryRecno</CODE> - the primary record number
returned as output. Its byte array does not need to be initialized by the
caller.<DD><CODE>lockMode</CODE> - the locking attributes; if null, default attributes are used.
<DT><B>Returns:</B><DD><A HREF="../../../com/sleepycat/db/OperationStatus.html#NOTFOUND"><CODE>OperationStatus.NOTFOUND</CODE></A> if no matching key/data pair is
-found; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
+found; <A HREF="../../../com/sleepycat/db/OperationStatus.html#KEYEMPTY"><CODE>OperationStatus.KEYEMPTY</CODE></A> if the database is a Queue or Recno database and the specified key exists, but was never explicitly created by the application or was later deleted; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
does not contain a required non-null byte array.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DeadlockException.html" title="class in com.sleepycat.db">DeadlockException</A></CODE> - if the operation was selected to resolve a
deadlock.
<p>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.
<p></DL>
@@ -1087,15 +1087,15 @@ returned as output. Multiple results can be retrieved by passing an object
that is a subclass of <A HREF="../../../com/sleepycat/db/MultipleEntry.html" title="class in com.sleepycat.db"><CODE>MultipleEntry</CODE></A>, otherwise its byte array does not
need to be initialized by the caller.<DD><CODE>lockMode</CODE> - the locking attributes; if null, default attributes are used.
<DT><B>Returns:</B><DD><A HREF="../../../com/sleepycat/db/OperationStatus.html#NOTFOUND"><CODE>OperationStatus.NOTFOUND</CODE></A> if no matching key/data pair is
-found; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
+found; <A HREF="../../../com/sleepycat/db/OperationStatus.html#KEYEMPTY"><CODE>OperationStatus.KEYEMPTY</CODE></A> if the database is a Queue or Recno database and the specified key exists, but was never explicitly created by the application or was later deleted; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
does not contain a required non-null byte array.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DeadlockException.html" title="class in com.sleepycat.db">DeadlockException</A></CODE> - if the operation was selected to resolve a
deadlock.
<p>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.
<p></DL>
@@ -1126,7 +1126,7 @@ deadlock.
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -1162,6 +1162,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHO
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/SecondaryDatabase.html b/db/docs/java/com/sleepycat/db/SecondaryDatabase.html
index 724258df2..5fe6fc6ac 100644
--- a/db/docs/java/com/sleepycat/db/SecondaryDatabase.html
+++ b/db/docs/java/com/sleepycat/db/SecondaryDatabase.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:57 EDT 2007 -->
<TITLE>
-SecondaryDatabase (Oracle Corporation - Berkeley DB Java API)
+SecondaryDatabase (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.SecondaryDatabase class">
@@ -14,7 +14,7 @@ SecondaryDatabase (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="SecondaryDatabase (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="SecondaryDatabase (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,7 +89,7 @@ com.sleepycat.db</FONT>
<BR>
Class SecondaryDatabase</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../com/sleepycat/db/Database.html" title="class in com.sleepycat.db">com.sleepycat.db.Database</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.SecondaryDatabase</B>
</PRE>
@@ -162,8 +162,8 @@ changes are made to the primary database.
<B>Constructor Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><B><A HREF="../../../com/sleepycat/db/SecondaryDatabase.html#SecondaryDatabase(java.lang.String, java.lang.String, com.sleepycat.db.Database, com.sleepycat.db.SecondaryConfig)">SecondaryDatabase</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/SecondaryDatabase.html#SecondaryDatabase(java.lang.String, java.lang.String, com.sleepycat.db.Database, com.sleepycat.db.SecondaryConfig)">SecondaryDatabase</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
<A HREF="../../../com/sleepycat/db/Database.html" title="class in com.sleepycat.db">Database</A>&nbsp;primaryDatabase,
<A HREF="../../../com/sleepycat/db/SecondaryConfig.html" title="class in com.sleepycat.db">SecondaryConfig</A>&nbsp;config)</CODE>
@@ -266,16 +266,16 @@ is, both the primary and secondary key items must match.</TD>
<TH ALIGN="left"><B>Methods inherited from class com.sleepycat.db.<A HREF="../../../com/sleepycat/db/Database.html" title="class in com.sleepycat.db">Database</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="../../../com/sleepycat/db/Database.html#append(com.sleepycat.db.Transaction, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry)">append</A>, <A HREF="../../../com/sleepycat/db/Database.html#close()">close</A>, <A HREF="../../../com/sleepycat/db/Database.html#close(boolean)">close</A>, <A HREF="../../../com/sleepycat/db/Database.html#compact(com.sleepycat.db.Transaction, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.CompactConfig)">compact</A>, <A HREF="../../../com/sleepycat/db/Database.html#consume(com.sleepycat.db.Transaction, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, boolean)">consume</A>, <A HREF="../../../com/sleepycat/db/Database.html#count()">count</A>, <A HREF="../../../com/sleepycat/db/Database.html#delete(com.sleepycat.db.Transaction, com.sleepycat.db.DatabaseEntry)">delete</A>, <A HREF="../../../com/sleepycat/db/Database.html#get(com.sleepycat.db.Transaction, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.LockMode)">get</A>, <A HREF="../../../com/sleepycat/db/Database.html#getCacheFile()">getCacheFile</A>, <A HREF="../../../com/sleepycat/db/Database.html#getDatabaseFile()">getDatabaseFile</A>, <A HREF="../../../com/sleepycat/db/Database.html#getDatabaseName()">getDatabaseName</A>, <A HREF="../../../com/sleepycat/db/Database.html#getEnvironment()">getEnvironment</A>, <A HREF="../../../com/sleepycat/db/Database.html#getKeyRange(com.sleepycat.db.Transaction, com.sleepycat.db.DatabaseEntry)">getKeyRange</A>, <A HREF="../../../com/sleepycat/db/Database.html#getSearchBoth(com.sleepycat.db.Transaction, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.LockMode)">getSearchBoth</A>, <A HREF="../../../com/sleepycat/db/Database.html#getSearchRecordNumber(com.sleepycat.db.Transaction, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.LockMode)">getSearchRecordNumber</A>, <A HREF="../../../com/sleepycat/db/Database.html#getStats(com.sleepycat.db.Transaction, com.sleepycat.db.StatsConfig)">getStats</A>, <A HREF="../../../com/sleepycat/db/Database.html#join(com.sleepycat.db.Cursor[], com.sleepycat.db.JoinConfig)">join</A>, <A HREF="../../../com/sleepycat/db/Database.html#openSequence(com.sleepycat.db.Transaction, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.SequenceConfig)">openSequence</A>, <A HREF="../../../com/sleepycat/db/Database.html#put(com.sleepycat.db.Transaction, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry)">put</A>, <A HREF="../../../com/sleepycat/db/Database.html#putNoDupData(com.sleepycat.db.Transaction, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry)">putNoDupData</A>, <A HREF="../../../com/sleepycat/db/Database.html#putNoOverwrite(com.sleepycat.db.Transaction, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry)">putNoOverwrite</A>, <A HREF="../../../com/sleepycat/db/Database.html#remove(java.lang.String, java.lang.String, com.sleepycat.db.DatabaseConfig)">remove</A>, <A HREF="../../../com/sleepycat/db/Database.html#removeSequence(com.sleepycat.db.Transaction, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.SequenceConfig)">removeSequence</A>, <A HREF="../../../com/sleepycat/db/Database.html#rename(java.lang.String, java.lang.String, java.lang.String, com.sleepycat.db.DatabaseConfig)">rename</A>, <A HREF="../../../com/sleepycat/db/Database.html#setConfig(com.sleepycat.db.DatabaseConfig)">setConfig</A>, <A HREF="../../../com/sleepycat/db/Database.html#sync()">sync</A>, <A HREF="../../../com/sleepycat/db/Database.html#truncate(com.sleepycat.db.Transaction, boolean)">truncate</A>, <A HREF="../../../com/sleepycat/db/Database.html#upgrade(java.lang.String, com.sleepycat.db.DatabaseConfig)">upgrade</A>, <A HREF="../../../com/sleepycat/db/Database.html#verify(java.lang.String, java.lang.String, java.io.PrintStream, com.sleepycat.db.VerifyConfig, com.sleepycat.db.DatabaseConfig)">verify</A></CODE></TD>
+<TD><CODE><A HREF="../../../com/sleepycat/db/Database.html#append(com.sleepycat.db.Transaction, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry)">append</A>, <A HREF="../../../com/sleepycat/db/Database.html#close()">close</A>, <A HREF="../../../com/sleepycat/db/Database.html#close(boolean)">close</A>, <A HREF="../../../com/sleepycat/db/Database.html#compact(com.sleepycat.db.Transaction, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.CompactConfig)">compact</A>, <A HREF="../../../com/sleepycat/db/Database.html#consume(com.sleepycat.db.Transaction, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, boolean)">consume</A>, <A HREF="../../../com/sleepycat/db/Database.html#delete(com.sleepycat.db.Transaction, com.sleepycat.db.DatabaseEntry)">delete</A>, <A HREF="../../../com/sleepycat/db/Database.html#exists(com.sleepycat.db.Transaction, com.sleepycat.db.DatabaseEntry)">exists</A>, <A HREF="../../../com/sleepycat/db/Database.html#get(com.sleepycat.db.Transaction, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.LockMode)">get</A>, <A HREF="../../../com/sleepycat/db/Database.html#getCacheFile()">getCacheFile</A>, <A HREF="../../../com/sleepycat/db/Database.html#getDatabaseFile()">getDatabaseFile</A>, <A HREF="../../../com/sleepycat/db/Database.html#getDatabaseName()">getDatabaseName</A>, <A HREF="../../../com/sleepycat/db/Database.html#getEnvironment()">getEnvironment</A>, <A HREF="../../../com/sleepycat/db/Database.html#getKeyRange(com.sleepycat.db.Transaction, com.sleepycat.db.DatabaseEntry)">getKeyRange</A>, <A HREF="../../../com/sleepycat/db/Database.html#getSearchBoth(com.sleepycat.db.Transaction, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.LockMode)">getSearchBoth</A>, <A HREF="../../../com/sleepycat/db/Database.html#getSearchRecordNumber(com.sleepycat.db.Transaction, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.LockMode)">getSearchRecordNumber</A>, <A HREF="../../../com/sleepycat/db/Database.html#getStats(com.sleepycat.db.Transaction, com.sleepycat.db.StatsConfig)">getStats</A>, <A HREF="../../../com/sleepycat/db/Database.html#join(com.sleepycat.db.Cursor[], com.sleepycat.db.JoinConfig)">join</A>, <A HREF="../../../com/sleepycat/db/Database.html#openSequence(com.sleepycat.db.Transaction, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.SequenceConfig)">openSequence</A>, <A HREF="../../../com/sleepycat/db/Database.html#put(com.sleepycat.db.Transaction, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry)">put</A>, <A HREF="../../../com/sleepycat/db/Database.html#putNoDupData(com.sleepycat.db.Transaction, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry)">putNoDupData</A>, <A HREF="../../../com/sleepycat/db/Database.html#putNoOverwrite(com.sleepycat.db.Transaction, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry)">putNoOverwrite</A>, <A HREF="../../../com/sleepycat/db/Database.html#remove(java.lang.String, java.lang.String, com.sleepycat.db.DatabaseConfig)">remove</A>, <A HREF="../../../com/sleepycat/db/Database.html#removeSequence(com.sleepycat.db.Transaction, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.SequenceConfig)">removeSequence</A>, <A HREF="../../../com/sleepycat/db/Database.html#rename(java.lang.String, java.lang.String, java.lang.String, com.sleepycat.db.DatabaseConfig)">rename</A>, <A HREF="../../../com/sleepycat/db/Database.html#setConfig(com.sleepycat.db.DatabaseConfig)">setConfig</A>, <A HREF="../../../com/sleepycat/db/Database.html#sync()">sync</A>, <A HREF="../../../com/sleepycat/db/Database.html#truncate(com.sleepycat.db.Transaction, boolean)">truncate</A>, <A HREF="../../../com/sleepycat/db/Database.html#upgrade(java.lang.String, com.sleepycat.db.DatabaseConfig)">upgrade</A>, <A HREF="../../../com/sleepycat/db/Database.html#verify(java.lang.String, java.lang.String, java.io.PrintStream, com.sleepycat.db.VerifyConfig, com.sleepycat.db.DatabaseConfig)">verify</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -294,12 +294,12 @@ is, both the primary and secondary key items must match.</TD>
<A NAME="SecondaryDatabase(java.lang.String, java.lang.String, com.sleepycat.db.Database, com.sleepycat.db.SecondaryConfig)"><!-- --></A><H3>
SecondaryDatabase</H3>
<PRE>
-public <B>SecondaryDatabase</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
+public <B>SecondaryDatabase</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
<A HREF="../../../com/sleepycat/db/Database.html" title="class in com.sleepycat.db">Database</A>&nbsp;primaryDatabase,
<A HREF="../../../com/sleepycat/db/SecondaryConfig.html" title="class in com.sleepycat.db">SecondaryConfig</A>&nbsp;config)
throws <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A>,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/FileNotFoundException.html" title="class or interface in java.io">FileNotFoundException</A></PRE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/FileNotFoundException.html" title="class or interface in java.io">FileNotFoundException</A></PRE>
<DL>
<DD>Open a database.
<p>
@@ -343,7 +343,7 @@ Queue format.
<p><DD><CODE>config</CODE> - The secondary database open attributes. If null, default attributes are used.
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/FileNotFoundException.html" title="class or interface in java.io">FileNotFoundException</A></CODE></DL>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/FileNotFoundException.html" title="class or interface in java.io">FileNotFoundException</A></CODE></DL>
</DL>
<!-- ============ METHOD DETAIL ========== -->
@@ -408,14 +408,14 @@ caller.
<p><DD><CODE>lockMode</CODE> - the locking attributes; if null, default attributes are used.
<p>
<DT><B>Returns:</B><DD><A HREF="../../../com/sleepycat/db/OperationStatus.html#NOTFOUND"><CODE>OperationStatus.NOTFOUND</CODE></A> if no matching key/data pair is
-found; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
+found; <A HREF="../../../com/sleepycat/db/OperationStatus.html#KEYEMPTY"><CODE>OperationStatus.KEYEMPTY</CODE></A> if the database is a Queue or Recno database and the specified key exists, but was never explicitly created by the application or was later deleted; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
<p>
<p>
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../com/sleepycat/db/DeadlockException.html" title="class in com.sleepycat.db">DeadlockException</A></CODE> - if the operation was selected to resolve a
deadlock.
<p>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.</DL>
</DD>
@@ -450,14 +450,14 @@ caller.
<p><DD><CODE>lockMode</CODE> - the locking attributes; if null, default attributes are used.
<p>
<DT><B>Returns:</B><DD><A HREF="../../../com/sleepycat/db/OperationStatus.html#NOTFOUND"><CODE>OperationStatus.NOTFOUND</CODE></A> if no matching key/data pair is
-found; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
+found; <A HREF="../../../com/sleepycat/db/OperationStatus.html#KEYEMPTY"><CODE>OperationStatus.KEYEMPTY</CODE></A> if the database is a Queue or Recno database and the specified key exists, but was never explicitly created by the application or was later deleted; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
<p>
<p>
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../com/sleepycat/db/DeadlockException.html" title="class in com.sleepycat.db">DeadlockException</A></CODE> - if the operation was selected to resolve a
deadlock.
<p>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.</DL>
</DD>
@@ -543,15 +543,15 @@ returned as output. Multiple results can be retrieved by passing an object
that is a subclass of <A HREF="../../../com/sleepycat/db/MultipleEntry.html" title="class in com.sleepycat.db"><CODE>MultipleEntry</CODE></A>, otherwise its byte array does not
need to be initialized by the caller.<DD><CODE>lockMode</CODE> - the locking attributes; if null, default attributes are used.
<DT><B>Returns:</B><DD><A HREF="../../../com/sleepycat/db/OperationStatus.html#NOTFOUND"><CODE>OperationStatus.NOTFOUND</CODE></A> if no matching key/data pair is
-found; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
+found; <A HREF="../../../com/sleepycat/db/OperationStatus.html#KEYEMPTY"><CODE>OperationStatus.KEYEMPTY</CODE></A> if the database is a Queue or Recno database and the specified key exists, but was never explicitly created by the application or was later deleted; otherwise, <A HREF="../../../com/sleepycat/db/OperationStatus.html#SUCCESS"><CODE>OperationStatus.SUCCESS</CODE></A>.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if a DatabaseEntry parameter is null or
does not contain a required non-null byte array.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DeadlockException.html" title="class in com.sleepycat.db">DeadlockException</A></CODE> - if the operation was selected to resolve a
deadlock.
<p>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invalid parameter was specified.
<p>
<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.
<p></DL>
@@ -641,7 +641,7 @@ specifies the transaction context in which the cursor will be used.
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -677,6 +677,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&n
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/SecondaryKeyCreator.html b/db/docs/java/com/sleepycat/db/SecondaryKeyCreator.html
index f3ad0a592..6986bd25b 100644
--- a/db/docs/java/com/sleepycat/db/SecondaryKeyCreator.html
+++ b/db/docs/java/com/sleepycat/db/SecondaryKeyCreator.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-SecondaryKeyCreator (Oracle Corporation - Berkeley DB Java API)
+SecondaryKeyCreator (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.SecondaryKeyCreator interface">
@@ -14,7 +14,7 @@ SecondaryKeyCreator (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="SecondaryKeyCreator (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="SecondaryKeyCreator (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,14 +46,14 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../com/sleepycat/db/SecondaryDatabase.html" title="class in com.sleepycat.db"><B>PREV CLASS</B></A>&nbsp;
-&nbsp;<A HREF="../../../com/sleepycat/db/Sequence.html" title="class in com.sleepycat.db"><B>NEXT CLASS</B></A></FONT></TD>
+&nbsp;<A HREF="../../../com/sleepycat/db/SecondaryMultiKeyCreator.html" title="interface in com.sleepycat.db"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../index.html?com/sleepycat/db/SecondaryKeyCreator.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="SecondaryKeyCreator.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
@@ -227,14 +227,14 @@ boolean <B>createSecondaryKey</B>(<A HREF="../../../com/sleepycat/db/SecondaryDa
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../com/sleepycat/db/SecondaryDatabase.html" title="class in com.sleepycat.db"><B>PREV CLASS</B></A>&nbsp;
-&nbsp;<A HREF="../../../com/sleepycat/db/Sequence.html" title="class in com.sleepycat.db"><B>NEXT CLASS</B></A></FONT></TD>
+&nbsp;<A HREF="../../../com/sleepycat/db/SecondaryMultiKeyCreator.html" title="interface in com.sleepycat.db"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../index.html?com/sleepycat/db/SecondaryKeyCreator.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="SecondaryKeyCreator.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
@@ -263,6 +263,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHO
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/SecondaryMultiKeyCreator.html b/db/docs/java/com/sleepycat/db/SecondaryMultiKeyCreator.html
new file mode 100644
index 000000000..b411dbbd0
--- /dev/null
+++ b/db/docs/java/com/sleepycat/db/SecondaryMultiKeyCreator.html
@@ -0,0 +1,306 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
+<TITLE>
+SecondaryMultiKeyCreator (Oracle - Berkeley DB Java API)
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.sleepycat.db.SecondaryMultiKeyCreator interface">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../style.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+ parent.document.title="SecondaryMultiKeyCreator (Oracle - Berkeley DB Java API)";
+}
+</SCRIPT>
+<NOSCRIPT>
+</NOSCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+ <TR ALIGN="center" VALIGN="top">
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/SecondaryMultiKeyCreator.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+ </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../com/sleepycat/db/SecondaryKeyCreator.html" title="interface in com.sleepycat.db"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../com/sleepycat/db/Sequence.html" title="class in com.sleepycat.db"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ <A HREF="../../../index.html?com/sleepycat/db/SecondaryMultiKeyCreator.html" target="_top"><B>FRAMES</B></A> &nbsp;
+&nbsp;<A HREF="SecondaryMultiKeyCreator.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+ <!--
+ if(window==top) {
+ document.writeln('<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>');
+ }
+ //-->
+</SCRIPT>
+<NOSCRIPT>
+ <A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+ SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.sleepycat.db</FONT>
+<BR>
+Interface SecondaryMultiKeyCreator</H2>
+<HR>
+<DL>
+<DT><PRE>public interface <B>SecondaryMultiKeyCreator</B></DL>
+</PRE>
+
+<P>
+The interface implemented for extracting multi-valued secondary keys from
+primary records.
+<p>
+The key creator object is specified by calling
+<A HREF="../../../com/sleepycat/db/SecondaryConfig.html#setMultiKeyCreator(com.sleepycat.db.SecondaryMultiKeyCreator)"><CODE>SecondaryConfig.setMultiKeyCreator</CODE></A>.
+The secondary database configuration is specified when calling
+<A HREF="../../../com/sleepycat/db/Environment.html#openSecondaryDatabase(com.sleepycat.db.Transaction, java.lang.String, java.lang.String, com.sleepycat.db.Database, com.sleepycat.db.SecondaryConfig)"><CODE>Environment.openSecondaryDatabase</CODE></A>.
+<p>
+For example:
+<pre>
+ class MyMultiKeyCreator implements SecondaryMultiKeyCreator {
+ public void createSecondaryKeys(SecondaryDatabase secondary,
+ DatabaseEntry key,
+ DatabaseEntry data,
+ Set results)
+ throws DatabaseException {
+ //
+ // DO HERE: Extract the secondary keys from the primary key and
+ // data. For each key extracted, create a DatabaseEntry and add it
+ // to the results set.
+ //
+ }
+ }
+ ...
+ SecondaryConfig secConfig = new SecondaryConfig();
+ secConfig.setMultiKeyCreator(new MyMultiKeyCreator());
+ // Now pass secConfig to Environment.openSecondaryDatabase
+</pre>
+<p>
+Use this interface when any number of secondary keys may be present in a single
+primary record, in other words, for many-to-many and one-to-many relationships.
+When only zero or one secondary key is present (for many-to-one and one-to-one
+relationships) you may use the <A HREF="../../../com/sleepycat/db/SecondaryKeyCreator.html" title="interface in com.sleepycat.db"><CODE>SecondaryKeyCreator</CODE></A> interface instead.
+The table below summarizes how to create all four variations of relationships.
+<div>
+<table border="yes">
+ <tr><th>Relationship</th>
+ <th>Interface</th>
+ <th>Duplicates</th>
+ <th>Example</th>
+ </tr>
+ <tr><td>One-to-one</td>
+ <td><A HREF="../../../com/sleepycat/db/SecondaryKeyCreator.html" title="interface in com.sleepycat.db"><CODE>SecondaryKeyCreator</CODE></A></td>
+ <td>No</td>
+ <td>A person record with a unique social security number key.</td>
+ </tr>
+ <tr><td>Many-to-one</td>
+ <td><A HREF="../../../com/sleepycat/db/SecondaryKeyCreator.html" title="interface in com.sleepycat.db"><CODE>SecondaryKeyCreator</CODE></A></td>
+ <td>Yes</td>
+ <td>A person record with a non-unique employer key.</td>
+ </tr>
+ <tr><td>One-to-many</td>
+ <td><A HREF="../../../com/sleepycat/db/SecondaryMultiKeyCreator.html" title="interface in com.sleepycat.db"><CODE>SecondaryMultiKeyCreator</CODE></A></td>
+ <td>No</td>
+ <td>A person record with multiple unique email address keys.</td>
+ </tr>
+ <tr><td>Many-to-many</td>
+ <td><A HREF="../../../com/sleepycat/db/SecondaryMultiKeyCreator.html" title="interface in com.sleepycat.db"><CODE>SecondaryMultiKeyCreator</CODE></A></td>
+ <td>Yes</td>
+ <td>A person record with multiple non-unique organization keys.</td>
+ </tr>
+</table>
+</div>
+<p>To configure a database for duplicates. pass true to <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setSortedDuplicates(boolean)"><CODE>DatabaseConfig.setSortedDuplicates(boolean)</CODE></A>.</p>
+<p>
+Note that <code>SecondaryMultiKeyCreator</code> may also be used for single key
+secondaries (many-to-one and one-to-one); in this case, at most a single key is
+added to the results set. <code>SecondaryMultiKeyCreator</code> is only
+slightly less efficient than <A HREF="../../../com/sleepycat/db/SecondaryKeyCreator.html" title="interface in com.sleepycat.db"><CODE>SecondaryKeyCreator</CODE></A> in that two or three
+temporary sets must be created to hold the results.
+<P>
+
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../com/sleepycat/db/SecondaryConfig.html" title="class in com.sleepycat.db"><CODE>SecondaryConfig</CODE></A></DL>
+<HR>
+
+<P>
+
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/SecondaryMultiKeyCreator.html#createSecondaryKeys(com.sleepycat.db.SecondaryDatabase, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, java.util.Set)">createSecondaryKeys</A></B>(<A HREF="../../../com/sleepycat/db/SecondaryDatabase.html" title="class in com.sleepycat.db">SecondaryDatabase</A>&nbsp;secondary,
+ <A HREF="../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;key,
+ <A HREF="../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;data,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A>&nbsp;results)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a secondary key entry, given a primary key and data entry.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TH>
+</TR>
+</TABLE>
+
+<A NAME="createSecondaryKeys(com.sleepycat.db.SecondaryDatabase, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, java.util.Set)"><!-- --></A><H3>
+createSecondaryKeys</H3>
+<PRE>
+void <B>createSecondaryKeys</B>(<A HREF="../../../com/sleepycat/db/SecondaryDatabase.html" title="class in com.sleepycat.db">SecondaryDatabase</A>&nbsp;secondary,
+ <A HREF="../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;key,
+ <A HREF="../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;data,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A>&nbsp;results)
+ throws <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></PRE>
+<DL>
+<DD>Creates a secondary key entry, given a primary key and data entry.
+ <p>
+ A secondary key may be derived from the primary key, primary data, or a
+ combination of the primary key and data. Zero or more secondary keys may
+ be derived from the primary record and returned in the results parameter.
+ To ensure the integrity of a secondary database the key creator method must
+ always return the same results for a given set of input parameters.
+ <p>
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>secondary</CODE> - the database to which the secondary key will be added.
+ This parameter is passed for informational purposes but is not commonly
+ used.
+ <p><DD><CODE>key</CODE> - the primary key entry. This parameter must not be modified
+ by this method.
+ <p><DD><CODE>data</CODE> - the primary data entry. This parameter must not be modified
+ by this method.
+ <p><DD><CODE>results</CODE> - the set to contain the the secondary key DatabaseEntry
+ objects created by this method.
+ <p>
+<DT><B>Throws:</B>
+<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if an error occurs attempting to create the
+ secondary key.</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+ <TR ALIGN="center" VALIGN="top">
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/SecondaryMultiKeyCreator.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+ </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../com/sleepycat/db/SecondaryKeyCreator.html" title="interface in com.sleepycat.db"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../com/sleepycat/db/Sequence.html" title="class in com.sleepycat.db"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ <A HREF="../../../index.html?com/sleepycat/db/SecondaryMultiKeyCreator.html" target="_top"><B>FRAMES</B></A> &nbsp;
+&nbsp;<A HREF="SecondaryMultiKeyCreator.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+ <!--
+ if(window==top) {
+ document.writeln('<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>');
+ }
+ //-->
+</SCRIPT>
+<NOSCRIPT>
+ <A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+ SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
+</BODY>
+</HTML>
diff --git a/db/docs/java/com/sleepycat/db/Sequence.html b/db/docs/java/com/sleepycat/db/Sequence.html
index 098b65d9f..7c88e532a 100644
--- a/db/docs/java/com/sleepycat/db/Sequence.html
+++ b/db/docs/java/com/sleepycat/db/Sequence.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-Sequence (Oracle Corporation - Berkeley DB Java API)
+Sequence (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.Sequence class">
@@ -14,7 +14,7 @@ Sequence (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Sequence (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Sequence (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,13 +46,13 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
-&nbsp;<A HREF="../../../com/sleepycat/db/SecondaryKeyCreator.html" title="interface in com.sleepycat.db"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../com/sleepycat/db/SecondaryMultiKeyCreator.html" title="interface in com.sleepycat.db"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../com/sleepycat/db/SequenceConfig.html" title="class in com.sleepycat.db"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../index.html?com/sleepycat/db/Sequence.html" target="_top"><B>FRAMES</B></A> &nbsp;
@@ -89,12 +89,12 @@ com.sleepycat.db</FONT>
<BR>
Class Sequence</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.Sequence</B>
</PRE>
<HR>
<DL>
-<DT><PRE>public class <B>Sequence</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
+<DT><PRE>public class <B>Sequence</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
</PRE>
<P>
@@ -161,10 +161,10 @@ Sequence handles are opened using the <A HREF="../../../com/sleepycat/db/Databas
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -322,13 +322,13 @@ public <A HREF="../../../com/sleepycat/db/SequenceStats.html" title="class in co
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
-&nbsp;<A HREF="../../../com/sleepycat/db/SecondaryKeyCreator.html" title="interface in com.sleepycat.db"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../com/sleepycat/db/SecondaryMultiKeyCreator.html" title="interface in com.sleepycat.db"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../com/sleepycat/db/SequenceConfig.html" title="class in com.sleepycat.db"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../index.html?com/sleepycat/db/Sequence.html" target="_top"><B>FRAMES</B></A> &nbsp;
@@ -358,6 +358,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHO
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/SequenceConfig.html b/db/docs/java/com/sleepycat/db/SequenceConfig.html
index af5078e3c..cac997612 100644
--- a/db/docs/java/com/sleepycat/db/SequenceConfig.html
+++ b/db/docs/java/com/sleepycat/db/SequenceConfig.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-SequenceConfig (Oracle Corporation - Berkeley DB Java API)
+SequenceConfig (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.SequenceConfig class">
@@ -14,7 +14,7 @@ SequenceConfig (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="SequenceConfig (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="SequenceConfig (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,15 +89,15 @@ com.sleepycat.db</FONT>
<BR>
Class SequenceConfig</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.SequenceConfig</B>
</PRE>
<DL>
-<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A></DD>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A></DD>
</DL>
<HR>
<DL>
-<DT><PRE>public class <B>SequenceConfig</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A><DT>implements <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A></DL>
+<DT><PRE>public class <B>SequenceConfig</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A><DT>implements <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A></DL>
</PRE>
<P>
@@ -303,10 +303,10 @@ Set the initial value for a sequence.</TD>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -744,7 +744,7 @@ This method may be called at any time during the life of the application.
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -780,6 +780,6 @@ DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/SequenceStats.html b/db/docs/java/com/sleepycat/db/SequenceStats.html
index 029eed9c4..d13968157 100644
--- a/db/docs/java/com/sleepycat/db/SequenceStats.html
+++ b/db/docs/java/com/sleepycat/db/SequenceStats.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-SequenceStats (Oracle Corporation - Berkeley DB Java API)
+SequenceStats (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.SequenceStats class">
@@ -14,7 +14,7 @@ SequenceStats (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="SequenceStats (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="SequenceStats (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,12 +89,12 @@ com.sleepycat.db</FONT>
<BR>
Class SequenceStats</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.SequenceStats</B>
</PRE>
<HR>
<DL>
-<DT><PRE>public class <B>SequenceStats</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
+<DT><PRE>public class <B>SequenceStats</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
</PRE>
<P>
@@ -190,7 +190,7 @@ A SequenceStats object is used to return sequence statistics.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/SequenceStats.html#toString()">toString</A></B>()</CODE>
<BR>
@@ -200,10 +200,10 @@ A SequenceStats object is used to return sequence statistics.
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -341,12 +341,12 @@ public int <B>getFlags</B>()</PRE>
<A NAME="toString()"><!-- --></A><H3>
toString</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
<DL>
<DD>
<P>
<DD><DL>
-<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
</DD>
<DD><DL>
</DL>
@@ -377,7 +377,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" tit
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -413,6 +413,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHO
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/StatsConfig.html b/db/docs/java/com/sleepycat/db/StatsConfig.html
index 9681c7787..e18620556 100644
--- a/db/docs/java/com/sleepycat/db/StatsConfig.html
+++ b/db/docs/java/com/sleepycat/db/StatsConfig.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-StatsConfig (Oracle Corporation - Berkeley DB Java API)
+StatsConfig (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.StatsConfig class">
@@ -14,7 +14,7 @@ StatsConfig (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="StatsConfig (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="StatsConfig (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,12 +89,12 @@ com.sleepycat.db</FONT>
<BR>
Class StatsConfig</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.StatsConfig</B>
</PRE>
<HR>
<DL>
-<DT><PRE>public class <B>StatsConfig</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
+<DT><PRE>public class <B>StatsConfig</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
</PRE>
<P>
@@ -188,10 +188,10 @@ Specifies the attributes of a statistics retrieval operation.
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -353,7 +353,7 @@ public boolean <B>getClear</B>()</PRE>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -389,6 +389,6 @@ DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/Transaction.html b/db/docs/java/com/sleepycat/db/Transaction.html
index 8611d3378..c64cd7336 100644
--- a/db/docs/java/com/sleepycat/db/Transaction.html
+++ b/db/docs/java/com/sleepycat/db/Transaction.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-Transaction (Oracle Corporation - Berkeley DB Java API)
+Transaction (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.Transaction class">
@@ -14,7 +14,7 @@ Transaction (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Transaction (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Transaction (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,12 +89,12 @@ com.sleepycat.db</FONT>
<BR>
Class Transaction</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.Transaction</B>
</PRE>
<HR>
<DL>
-<DT><PRE>public class <B>Transaction</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
+<DT><PRE>public class <B>Transaction</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
</PRE>
<P>
@@ -174,6 +174,14 @@ To customize the attributes of a transaction:
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/Transaction.html#commitWriteNoSync()">commitWriteNoSync</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End the transaction, writing but not flushing the log.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/Transaction.html#discard()">discard</A></B>()</CODE>
<BR>
@@ -191,7 +199,7 @@ To customize the attributes of a transaction:
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/Transaction.html#getName()">getName</A></B>()</CODE>
<BR>
@@ -216,7 +224,7 @@ To customize the attributes of a transaction:
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/db/Transaction.html#setName(java.lang.String)">setName</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;name)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/Transaction.html#setName(java.lang.String)">setName</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;name)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the user visible name for the transaction.</TD>
@@ -233,10 +241,10 @@ To customize the attributes of a transaction:
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -446,6 +454,54 @@ of the transaction will have been aborted when the call returns.
</DL>
<HR>
+<A NAME="commitWriteNoSync()"><!-- --></A><H3>
+commitWriteNoSync</H3>
+<PRE>
+public void <B>commitWriteNoSync</B>()
+ throws <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></PRE>
+<DL>
+<DD>End the transaction, writing but not flushing the log.
+This means the
+transaction will exhibit the ACI (atomicity, consistency, and isolation)
+properties, but not D (durability); that is, database integrity will be
+maintained, but it is possible this transaction may be undone during
+recovery in the event that the operating system crashes. This option
+provides more durability than an asynchronous commit and has less
+performance cost than a synchronous commit.
+<p>
+This behavior may be set for a database environment using the
+<A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setTxnWriteNoSync(boolean)"><CODE>EnvironmentConfig.setTxnWriteNoSync</CODE></A> method or for a single
+transaction using the <A HREF="../../../com/sleepycat/db/Environment.html#beginTransaction(com.sleepycat.db.Transaction, com.sleepycat.db.TransactionConfig)"><CODE>Environment.beginTransaction</CODE></A> method.
+Any value specified to this method overrides both of those settings.
+<p>
+In the case of nested transactions, if the transaction is a parent
+transaction, committing the parent transaction causes all unresolved
+children of the parent to be committed. In the case of nested
+transactions, if the transaction is a child transaction, its locks are
+not released, but are acquired by its parent. Although the commit of the
+child transaction will succeed, the actual resolution of the child
+transaction is postponed until the parent transaction is committed or
+aborted; that is, if its parent transaction commits, it will be
+committed; and if its parent transaction aborts, it will be aborted.
+<p>
+All cursors opened within the transaction must be closed before the
+transaction is committed.
+<p>
+After this method returns the <A HREF="../../../com/sleepycat/db/Transaction.html" title="class in com.sleepycat.db"><CODE>Transaction</CODE></A> handle may not be
+accessed again, regardless of the method's success or failure. If the
+method encounters an error, the transaction and all child transactions
+of the transaction will have been aborted when the call returns.
+<p>
+<p>
+<P>
+<DD><DL>
+
+<DT><B>Throws:</B>
+<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if a failure occurs.</DL>
+</DD>
+</DL>
+<HR>
+
<A NAME="setTxnTimeout(long)"><!-- --></A><H3>
setTxnTimeout</H3>
<PRE>
@@ -513,7 +569,7 @@ public void <B>setLockTimeout</B>(long&nbsp;timeOut)
<A NAME="setName(java.lang.String)"><!-- --></A><H3>
setName</H3>
<PRE>
-public void <B>setName</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;name)
+public void <B>setName</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;name)
throws <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></PRE>
<DL>
<DD>Set the user visible name for the transaction.
@@ -531,7 +587,7 @@ public void <B>setName</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/l
<A NAME="getName()"><!-- --></A><H3>
getName</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>getName</B>()
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>getName</B>()
throws <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></PRE>
<DL>
<DD>Get the user visible name for the transaction.
@@ -636,7 +692,7 @@ public void <B>prepare</B>(byte[]&nbsp;gid)
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -672,6 +728,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHO
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/TransactionConfig.html b/db/docs/java/com/sleepycat/db/TransactionConfig.html
index 14ed9da81..ff3063e3a 100644
--- a/db/docs/java/com/sleepycat/db/TransactionConfig.html
+++ b/db/docs/java/com/sleepycat/db/TransactionConfig.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-TransactionConfig (Oracle Corporation - Berkeley DB Java API)
+TransactionConfig (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.TransactionConfig class">
@@ -14,7 +14,7 @@ TransactionConfig (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="TransactionConfig (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="TransactionConfig (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,15 +89,15 @@ com.sleepycat.db</FONT>
<BR>
Class TransactionConfig</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.TransactionConfig</B>
</PRE>
<DL>
-<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A></DD>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A></DD>
</DL>
<HR>
<DL>
-<DT><PRE>public class <B>TransactionConfig</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A><DT>implements <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A></DL>
+<DT><PRE>public class <B>TransactionConfig</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A><DT>implements <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A></DL>
</PRE>
<P>
@@ -224,6 +224,24 @@ Specifies the attributes of a database environment transaction.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/TransactionConfig.html#getWait()">getWait</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return if the transaction is configured to wait if a lock
+ request cannot be immediately granted.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/TransactionConfig.html#getWriteNoSync()">getWriteNoSync</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return if the transaction is configured to write but not synchronously
+ flush the log it when commits.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/TransactionConfig.html#setDegree2(boolean)">setDegree2</A></B>(boolean&nbsp;degree2)</CODE>
@@ -292,14 +310,32 @@ Specifies the attributes of a database environment transaction.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Configure the transaction to write and synchronously flush the log
it when commits.</TD>
</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/TransactionConfig.html#setWait(boolean)">setWait</A></B>(boolean&nbsp;wait)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Configure the transaction to wait if a lock request cannot be
+ immediately granted.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/TransactionConfig.html#setWriteNoSync(boolean)">setWriteNoSync</A></B>(boolean&nbsp;txnWriteNoSync)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Configure the transaction to write but not synchronously flush the log
+ it when commits.</TD>
+</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -539,8 +575,8 @@ public void <B>setSnapshot</B>(boolean&nbsp;snapshot)</PRE>
will be read as they are when the transaction begins, without taking
read locks.
<p>
- Updates operations performed in the transaction will cause an
- <A HREF="../../../com/sleepycat/db/UpdateConflictException.html" title="class in com.sleepycat.db"><CODE>UpdateConflictException</CODE></A> to be thrown if data is modified
+ Updates operations performed in the transaction will cause a
+ <A HREF="../../../com/sleepycat/db/DeadlockException.html" title="class in com.sleepycat.db"><CODE>DeadlockException</CODE></A> to be thrown if data is modified
between reading and writing it.
<P>
<DD><DL>
@@ -621,6 +657,57 @@ public boolean <B>getSync</B>()</PRE>
</DL>
<HR>
+<A NAME="setWriteNoSync(boolean)"><!-- --></A><H3>
+setWriteNoSync</H3>
+<PRE>
+public void <B>setWriteNoSync</B>(boolean&nbsp;txnWriteNoSync)</PRE>
+<DL>
+<DD>Configure the transaction to write but not synchronously flush the log
+ it when commits.
+ <p>
+ This behavior may be set for a database environment using the
+ Environment.setMutableConfig method. Any value specified to this method
+ overrides that setting.
+ <p>
+ The default is false for this class and the database environment.
+ <p>
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>txnWriteNoSync</CODE> - If true, transactions exhibit the ACI (atomicity, consistency, and
+ isolation) properties, but not D (durability); that is, database
+ integrity will be maintained, but if the operating system
+ fails, it is possible some number of the most recently committed
+ transactions may be undone during recovery. The number of
+ transactions at risk is governed by how often the operating system
+ flushes dirty buffers to disk, and how often the log is
+ checkpointed.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getWriteNoSync()"><!-- --></A><H3>
+getWriteNoSync</H3>
+<PRE>
+public boolean <B>getWriteNoSync</B>()</PRE>
+<DL>
+<DD>Return if the transaction is configured to write but not synchronously
+ flush the log it when commits.
+ <p>
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>If the transaction is configured to not write or synchronously flush
+ the log it when commits.</DL>
+</DD>
+</DL>
+<HR>
+
<A NAME="setNoSync(boolean)"><!-- --></A><H3>
setNoSync</H3>
<PRE>
@@ -711,6 +798,47 @@ public boolean <B>getNoWait</B>()</PRE>
cannot be immediately granted.</DL>
</DD>
</DL>
+<HR>
+
+<A NAME="setWait(boolean)"><!-- --></A><H3>
+setWait</H3>
+<PRE>
+public void <B>setWait</B>(boolean&nbsp;wait)</PRE>
+<DL>
+<DD>Configure the transaction to wait if a lock request cannot be
+ immediately granted.
+ <p>
+ The default is true unless <A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setTxnNoWait(boolean)"><CODE>EnvironmentConfig.setTxnNoWait(boolean)</CODE></A> is called.
+ <p>
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>wait</CODE> - If true, transactions will wait if a lock request cannot be
+ immediately granted, instead <A HREF="../../../com/sleepycat/db/DeadlockException.html" title="class in com.sleepycat.db"><CODE>DeadlockException</CODE></A> will be thrown.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getWait()"><!-- --></A><H3>
+getWait</H3>
+<PRE>
+public boolean <B>getWait</B>()</PRE>
+<DL>
+<DD>Return if the transaction is configured to wait if a lock
+ request cannot be immediately granted.
+ <p>
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>If the transaction is configured to wait if a lock request
+ cannot be immediately granted.</DL>
+</DD>
+</DL>
<!-- ========= END OF CLASS DATA ========= -->
<HR>
@@ -736,7 +864,7 @@ public boolean <B>getNoWait</B>()</PRE>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -772,6 +900,6 @@ DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/TransactionStats.Active.html b/db/docs/java/com/sleepycat/db/TransactionStats.Active.html
index 9d1e70d8a..e94cc0d22 100644
--- a/db/docs/java/com/sleepycat/db/TransactionStats.Active.html
+++ b/db/docs/java/com/sleepycat/db/TransactionStats.Active.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-TransactionStats.Active (Oracle Corporation - Berkeley DB Java API)
+TransactionStats.Active (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.TransactionStats.Active class">
@@ -14,7 +14,7 @@ TransactionStats.Active (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="TransactionStats.Active (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="TransactionStats.Active (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,14 +46,14 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../com/sleepycat/db/TransactionStats.html" title="class in com.sleepycat.db"><B>PREV CLASS</B></A>&nbsp;
-&nbsp;<A HREF="../../../com/sleepycat/db/UpdateConflictException.html" title="class in com.sleepycat.db"><B>NEXT CLASS</B></A></FONT></TD>
+&nbsp;<A HREF="../../../com/sleepycat/db/VerboseConfig.html" title="class in com.sleepycat.db"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../index.html?com/sleepycat/db/TransactionStats.Active.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="TransactionStats.Active.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
@@ -89,7 +89,7 @@ com.sleepycat.db</FONT>
<BR>
Class TransactionStats.Active</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.TransactionStats.Active</B>
</PRE>
<DL>
@@ -97,7 +97,7 @@ Class TransactionStats.Active</H2>
</DL>
<HR>
<DL>
-<DT><PRE>public static class <B>TransactionStats.Active</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
+<DT><PRE>public static class <B>TransactionStats.Active</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
</PRE>
<P>
@@ -131,11 +131,12 @@ The Active class represents an active transaction.
<TD><CODE><B><A HREF="../../../com/sleepycat/db/TransactionStats.Active.html#getMultiversionRef()">getMultiversionRef</A></B>()</CODE>
<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The number of buffer copies created by this transaction that remain in cache.</TD>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The number of buffer copies created by this transaction that remain in
+ cache.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/TransactionStats.Active.html#getName()">getName</A></B>()</CODE>
<BR>
@@ -168,6 +169,14 @@ The Active class represents an active transaction.
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/TransactionStats.Active.html#getStatus()">getStatus</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The status of the transaction.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/TransactionStats.Active.html#getTxnId()">getTxnId</A></B>()</CODE>
<BR>
@@ -193,7 +202,7 @@ The Active class represents an active transaction.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/TransactionStats.Active.html#toString()">toString</A></B>()</CODE>
<BR>
@@ -203,10 +212,10 @@ The Active class represents an active transaction.
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -225,7 +234,7 @@ The Active class represents an active transaction.
<A NAME="getName()"><!-- --></A><H3>
getName</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>getName</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>getName</B>()</PRE>
<DL>
<DD>The transaction name, including the thread name if available.
<P>
@@ -305,7 +314,21 @@ getMultiversionRef</H3>
<PRE>
public int <B>getMultiversionRef</B>()</PRE>
<DL>
-<DD>The number of buffer copies created by this transaction that remain in cache.
+<DD>The number of buffer copies created by this transaction that remain in
+ cache.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getStatus()"><!-- --></A><H3>
+getStatus</H3>
+<PRE>
+public int <B>getStatus</B>()</PRE>
+<DL>
+<DD>The status of the transaction.
<P>
<DD><DL>
</DL>
@@ -344,12 +367,12 @@ public byte[] <B>getXId</B>()</PRE>
<A NAME="toString()"><!-- --></A><H3>
toString</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
<DL>
<DD>
<P>
<DD><DL>
-<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
</DD>
<DD><DL>
</DL>
@@ -380,14 +403,14 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" tit
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../com/sleepycat/db/TransactionStats.html" title="class in com.sleepycat.db"><B>PREV CLASS</B></A>&nbsp;
-&nbsp;<A HREF="../../../com/sleepycat/db/UpdateConflictException.html" title="class in com.sleepycat.db"><B>NEXT CLASS</B></A></FONT></TD>
+&nbsp;<A HREF="../../../com/sleepycat/db/VerboseConfig.html" title="class in com.sleepycat.db"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../index.html?com/sleepycat/db/TransactionStats.Active.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="TransactionStats.Active.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
@@ -416,6 +439,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHO
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/TransactionStats.html b/db/docs/java/com/sleepycat/db/TransactionStats.html
index b79f94b44..47c286078 100644
--- a/db/docs/java/com/sleepycat/db/TransactionStats.html
+++ b/db/docs/java/com/sleepycat/db/TransactionStats.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-TransactionStats (Oracle Corporation - Berkeley DB Java API)
+TransactionStats (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.TransactionStats class">
@@ -14,7 +14,7 @@ TransactionStats (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="TransactionStats (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="TransactionStats (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,12 +89,12 @@ com.sleepycat.db</FONT>
<BR>
Class TransactionStats</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.TransactionStats</B>
</PRE>
<HR>
<DL>
-<DT><PRE>public class <B>TransactionStats</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
+<DT><PRE>public class <B>TransactionStats</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
</PRE>
<P>
@@ -265,7 +265,7 @@ Transaction statistics for a database environment.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/db/TransactionStats.html#toString()">toString</A></B>()</CODE>
<BR>
@@ -275,10 +275,10 @@ Transaction statistics for a database environment.
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -406,9 +406,8 @@ getNumSnapshot</H3>
public int <B>getNumSnapshot</B>()</PRE>
<DL>
<DD>The number of transactions on the snapshot list. These are transactions
- which modified a database opened with <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setMultiversion(boolean)"><CODE>DatabaseConfig.setMultiversion(boolean)</CODE></A>,
- and which have committed or aborted, but the copies of pages they
- created are still in the cache.
+ which modified a database opened with <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setMultiversion(boolean)"><CODE>DatabaseConfig.setMultiversion(boolean)</CODE></A>, and which have committed or aborted, but
+ the copies of pages they created are still in the cache.
<P>
<DD><DL>
</DL>
@@ -512,12 +511,12 @@ public <A HREF="../../../com/sleepycat/db/TransactionStats.Active.html" title="c
<A NAME="toString()"><!-- --></A><H3>
toString</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
<DL>
<DD>
<P>
<DD><DL>
-<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
</DD>
<DD><DL>
</DL>
@@ -548,7 +547,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" tit
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -584,6 +583,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHO
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/UpdateConflictException.html b/db/docs/java/com/sleepycat/db/UpdateConflictException.html
deleted file mode 100644
index b74b62060..000000000
--- a/db/docs/java/com/sleepycat/db/UpdateConflictException.html
+++ /dev/null
@@ -1,219 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!--NewPage-->
-<HTML>
-<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
-<TITLE>
-UpdateConflictException (Oracle Corporation - Berkeley DB Java API)
-</TITLE>
-
-<META NAME="keywords" CONTENT="com.sleepycat.db.UpdateConflictException class">
-
-<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../style.css" TITLE="Style">
-
-<SCRIPT type="text/javascript">
-function windowTitle()
-{
- parent.document.title="UpdateConflictException (Oracle Corporation - Berkeley DB Java API)";
-}
-</SCRIPT>
-<NOSCRIPT>
-</NOSCRIPT>
-
-</HEAD>
-
-<BODY BGCOLOR="white" onload="windowTitle();">
-
-
-<!-- ========= START OF TOP NAVBAR ======= -->
-<A NAME="navbar_top"><!-- --></A>
-<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
-<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
-<TR>
-<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
-<A NAME="navbar_top_firstrow"><!-- --></A>
-<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
- <TR ALIGN="center" VALIGN="top">
- <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
- <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
- <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
- <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/UpdateConflictException.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
- <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
- <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
- <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
- <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
- </TR>
-</TABLE>
-</TD>
-<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
-</TD>
-</TR>
-
-<TR>
-<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
-&nbsp;<A HREF="../../../com/sleepycat/db/TransactionStats.Active.html" title="class in com.sleepycat.db"><B>PREV CLASS</B></A>&nbsp;
-&nbsp;<A HREF="../../../com/sleepycat/db/VerifyConfig.html" title="class in com.sleepycat.db"><B>NEXT CLASS</B></A></FONT></TD>
-<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
- <A HREF="../../../index.html?com/sleepycat/db/UpdateConflictException.html" target="_top"><B>FRAMES</B></A> &nbsp;
-&nbsp;<A HREF="UpdateConflictException.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
-&nbsp;<SCRIPT type="text/javascript">
- <!--
- if(window==top) {
- document.writeln('<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>');
- }
- //-->
-</SCRIPT>
-<NOSCRIPT>
- <A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>
-</NOSCRIPT>
-
-
-</FONT></TD>
-</TR>
-<TR>
-<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
- SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#methods_inherited_from_class_com.sleepycat.db.DatabaseException">METHOD</A></FONT></TD>
-<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
-DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;METHOD</FONT></TD>
-</TR>
-</TABLE>
-<A NAME="skip-navbar_top"></A>
-<!-- ========= END OF TOP NAVBAR ========= -->
-
-<HR>
-<!-- ======== START OF CLASS DATA ======== -->
-<H2>
-<FONT SIZE="-1">
-com.sleepycat.db</FONT>
-<BR>
-Class UpdateConflictException</H2>
-<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
- <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">java.lang.Throwable</A>
- <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Exception.html" title="class or interface in java.lang">java.lang.Exception</A>
- <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">com.sleepycat.db.DatabaseException</A>
- <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.UpdateConflictException</B>
-</PRE>
-<DL>
-<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/Serializable.html" title="class or interface in java.io">Serializable</A></DD>
-</DL>
-<HR>
-<DL>
-<DT><PRE>public class <B>UpdateConflictException</B><DT>extends <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></DL>
-</PRE>
-
-<P>
-Thrown when a snapshot transaction attempts to update data
-which was modified after the snapshot transaction read it.
-<P>
-
-<P>
-<DL>
-<DT><B>See Also:</B><DD><A HREF="../../../serialized-form.html#com.sleepycat.db.UpdateConflictException">Serialized Form</A></DL>
-<HR>
-
-<P>
-
-<!-- ========== METHOD SUMMARY =========== -->
-
-<A NAME="method_summary"><!-- --></A>
-<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
-<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
-<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
-<B>Method Summary</B></FONT></TH>
-</TR>
-</TABLE>
-&nbsp;<A NAME="methods_inherited_from_class_com.sleepycat.db.DatabaseException"><!-- --></A>
-<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
-<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class com.sleepycat.db.<A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></B></TH>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html#getEnvironment()">getEnvironment</A>, <A HREF="../../../com/sleepycat/db/DatabaseException.html#getErrno()">getErrno</A>, <A HREF="../../../com/sleepycat/db/DatabaseException.html#toString()">toString</A></CODE></TD>
-</TR>
-</TABLE>
-&nbsp;<A NAME="methods_inherited_from_class_java.lang.Throwable"><!-- --></A>
-<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
-<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A></B></TH>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang">fillInStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#getCause()" title="class or interface in java.lang">getCause</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang">getLocalizedMessage</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang">getMessage</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang">getStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang">initCause</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement[])" title="class or interface in java.lang">setStackTrace</A></CODE></TD>
-</TR>
-</TABLE>
-&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
-<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
-<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
-</TR>
-</TABLE>
-&nbsp;
-<P>
-<!-- ========= END OF CLASS DATA ========= -->
-<HR>
-
-
-<!-- ======= START OF BOTTOM NAVBAR ====== -->
-<A NAME="navbar_bottom"><!-- --></A>
-<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
-<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
-<TR>
-<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
-<A NAME="navbar_bottom_firstrow"><!-- --></A>
-<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
- <TR ALIGN="center" VALIGN="top">
- <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
- <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
- <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
- <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/UpdateConflictException.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
- <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
- <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
- <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
- <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
- </TR>
-</TABLE>
-</TD>
-<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
-</TD>
-</TR>
-
-<TR>
-<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
-&nbsp;<A HREF="../../../com/sleepycat/db/TransactionStats.Active.html" title="class in com.sleepycat.db"><B>PREV CLASS</B></A>&nbsp;
-&nbsp;<A HREF="../../../com/sleepycat/db/VerifyConfig.html" title="class in com.sleepycat.db"><B>NEXT CLASS</B></A></FONT></TD>
-<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
- <A HREF="../../../index.html?com/sleepycat/db/UpdateConflictException.html" target="_top"><B>FRAMES</B></A> &nbsp;
-&nbsp;<A HREF="UpdateConflictException.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
-&nbsp;<SCRIPT type="text/javascript">
- <!--
- if(window==top) {
- document.writeln('<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>');
- }
- //-->
-</SCRIPT>
-<NOSCRIPT>
- <A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>
-</NOSCRIPT>
-
-
-</FONT></TD>
-</TR>
-<TR>
-<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
- SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#methods_inherited_from_class_com.sleepycat.db.DatabaseException">METHOD</A></FONT></TD>
-<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
-DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;METHOD</FONT></TD>
-</TR>
-</TABLE>
-<A NAME="skip-navbar_bottom"></A>
-<!-- ======== END OF BOTTOM NAVBAR ======= -->
-
-<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
-</BODY>
-</HTML>
diff --git a/db/docs/java/com/sleepycat/db/VerboseConfig.html b/db/docs/java/com/sleepycat/db/VerboseConfig.html
new file mode 100644
index 000000000..a8de34ee0
--- /dev/null
+++ b/db/docs/java/com/sleepycat/db/VerboseConfig.html
@@ -0,0 +1,387 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
+<TITLE>
+VerboseConfig (Oracle - Berkeley DB Java API)
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.sleepycat.db.VerboseConfig class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../style.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+ parent.document.title="VerboseConfig (Oracle - Berkeley DB Java API)";
+}
+</SCRIPT>
+<NOSCRIPT>
+</NOSCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+ <TR ALIGN="center" VALIGN="top">
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/VerboseConfig.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+ </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../com/sleepycat/db/TransactionStats.Active.html" title="class in com.sleepycat.db"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../com/sleepycat/db/VerifyConfig.html" title="class in com.sleepycat.db"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ <A HREF="../../../index.html?com/sleepycat/db/VerboseConfig.html" target="_top"><B>FRAMES</B></A> &nbsp;
+&nbsp;<A HREF="VerboseConfig.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+ <!--
+ if(window==top) {
+ document.writeln('<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>');
+ }
+ //-->
+</SCRIPT>
+<NOSCRIPT>
+ <A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+ SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.sleepycat.db</FONT>
+<BR>
+Class VerboseConfig</H2>
+<PRE>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+ <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.VerboseConfig</B>
+</PRE>
+<HR>
+<DL>
+<DT><PRE>public final class <B>VerboseConfig</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
+</PRE>
+
+<P>
+Specifies the attributes of a verification operation.
+<P>
+
+<P>
+<HR>
+
+<P>
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../com/sleepycat/db/VerboseConfig.html" title="class in com.sleepycat.db">VerboseConfig</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/VerboseConfig.html#DEADLOCK">DEADLOCK</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Display additional information when doing deadlock detection.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../com/sleepycat/db/VerboseConfig.html" title="class in com.sleepycat.db">VerboseConfig</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/VerboseConfig.html#FILEOPS">FILEOPS</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Display additional information when performing filesystem operations such
+ as open, close or rename.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../com/sleepycat/db/VerboseConfig.html" title="class in com.sleepycat.db">VerboseConfig</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/VerboseConfig.html#FILEOPS_ALL">FILEOPS_ALL</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Display additional information when performing all filesystem operations,
+ including read and write.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../com/sleepycat/db/VerboseConfig.html" title="class in com.sleepycat.db">VerboseConfig</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/VerboseConfig.html#RECOVERY">RECOVERY</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Display additional information when performing recovery.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../com/sleepycat/db/VerboseConfig.html" title="class in com.sleepycat.db">VerboseConfig</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/VerboseConfig.html#REGISTER">REGISTER</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Display additional information concerning support for <A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setRegister(boolean)"><CODE>EnvironmentConfig.setRegister(boolean)</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../com/sleepycat/db/VerboseConfig.html" title="class in com.sleepycat.db">VerboseConfig</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/VerboseConfig.html#REPLICATION">REPLICATION</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Display detailed information when processing replication messages.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../com/sleepycat/db/VerboseConfig.html" title="class in com.sleepycat.db">VerboseConfig</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/VerboseConfig.html#WAITSFOR">WAITSFOR</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Display the waits-for table when doing deadlock detection.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/db/VerboseConfig.html#toString()">toString</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TH>
+</TR>
+</TABLE>
+
+<A NAME="DEADLOCK"><!-- --></A><H3>
+DEADLOCK</H3>
+<PRE>
+public static final <A HREF="../../../com/sleepycat/db/VerboseConfig.html" title="class in com.sleepycat.db">VerboseConfig</A> <B>DEADLOCK</B></PRE>
+<DL>
+<DD>Display additional information when doing deadlock detection.
+<P>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="FILEOPS"><!-- --></A><H3>
+FILEOPS</H3>
+<PRE>
+public static final <A HREF="../../../com/sleepycat/db/VerboseConfig.html" title="class in com.sleepycat.db">VerboseConfig</A> <B>FILEOPS</B></PRE>
+<DL>
+<DD>Display additional information when performing filesystem operations such
+ as open, close or rename. May not be available on all platforms.
+<P>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="FILEOPS_ALL"><!-- --></A><H3>
+FILEOPS_ALL</H3>
+<PRE>
+public static final <A HREF="../../../com/sleepycat/db/VerboseConfig.html" title="class in com.sleepycat.db">VerboseConfig</A> <B>FILEOPS_ALL</B></PRE>
+<DL>
+<DD>Display additional information when performing all filesystem operations,
+ including read and write. May not be available on all platforms.
+<P>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="RECOVERY"><!-- --></A><H3>
+RECOVERY</H3>
+<PRE>
+public static final <A HREF="../../../com/sleepycat/db/VerboseConfig.html" title="class in com.sleepycat.db">VerboseConfig</A> <B>RECOVERY</B></PRE>
+<DL>
+<DD>Display additional information when performing recovery.
+<P>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="REGISTER"><!-- --></A><H3>
+REGISTER</H3>
+<PRE>
+public static final <A HREF="../../../com/sleepycat/db/VerboseConfig.html" title="class in com.sleepycat.db">VerboseConfig</A> <B>REGISTER</B></PRE>
+<DL>
+<DD>Display additional information concerning support for <A HREF="../../../com/sleepycat/db/EnvironmentConfig.html#setRegister(boolean)"><CODE>EnvironmentConfig.setRegister(boolean)</CODE></A>.
+<P>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="REPLICATION"><!-- --></A><H3>
+REPLICATION</H3>
+<PRE>
+public static final <A HREF="../../../com/sleepycat/db/VerboseConfig.html" title="class in com.sleepycat.db">VerboseConfig</A> <B>REPLICATION</B></PRE>
+<DL>
+<DD>Display detailed information when processing replication messages.
+<P>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="WAITSFOR"><!-- --></A><H3>
+WAITSFOR</H3>
+<PRE>
+public static final <A HREF="../../../com/sleepycat/db/VerboseConfig.html" title="class in com.sleepycat.db">VerboseConfig</A> <B>WAITSFOR</B></PRE>
+<DL>
+<DD>Display the waits-for table when doing deadlock detection.
+<P>
+<DL>
+</DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TH>
+</TR>
+</TABLE>
+
+<A NAME="toString()"><!-- --></A><H3>
+toString</H3>
+<PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
+<DL>
+<DD>
+<P>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+ <TR ALIGN="center" VALIGN="top">
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/VerboseConfig.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+ </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../com/sleepycat/db/TransactionStats.Active.html" title="class in com.sleepycat.db"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../com/sleepycat/db/VerifyConfig.html" title="class in com.sleepycat.db"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ <A HREF="../../../index.html?com/sleepycat/db/VerboseConfig.html" target="_top"><B>FRAMES</B></A> &nbsp;
+&nbsp;<A HREF="VerboseConfig.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+ <!--
+ if(window==top) {
+ document.writeln('<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>');
+ }
+ //-->
+</SCRIPT>
+<NOSCRIPT>
+ <A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+ SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
+</BODY>
+</HTML>
diff --git a/db/docs/java/com/sleepycat/db/VerifyConfig.html b/db/docs/java/com/sleepycat/db/VerifyConfig.html
index b49b9b49f..b5a23bf2c 100644
--- a/db/docs/java/com/sleepycat/db/VerifyConfig.html
+++ b/db/docs/java/com/sleepycat/db/VerifyConfig.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-VerifyConfig (Oracle Corporation - Berkeley DB Java API)
+VerifyConfig (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.VerifyConfig class">
@@ -14,7 +14,7 @@ VerifyConfig (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="VerifyConfig (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="VerifyConfig (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,13 +46,13 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
-&nbsp;<A HREF="../../../com/sleepycat/db/UpdateConflictException.html" title="class in com.sleepycat.db"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../com/sleepycat/db/VerboseConfig.html" title="class in com.sleepycat.db"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../com/sleepycat/db/VersionMismatchException.html" title="class in com.sleepycat.db"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../index.html?com/sleepycat/db/VerifyConfig.html" target="_top"><B>FRAMES</B></A> &nbsp;
@@ -89,12 +89,12 @@ com.sleepycat.db</FONT>
<BR>
Class VerifyConfig</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.VerifyConfig</B>
</PRE>
<HR>
<DL>
-<DT><PRE>public class <B>VerifyConfig</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
+<DT><PRE>public class <B>VerifyConfig</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
</PRE>
<P>
@@ -247,10 +247,10 @@ Specifies the attributes of a verification operation.
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -562,13 +562,13 @@ This method may be called at any time during the life of the application.
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
-&nbsp;<A HREF="../../../com/sleepycat/db/UpdateConflictException.html" title="class in com.sleepycat.db"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../com/sleepycat/db/VerboseConfig.html" title="class in com.sleepycat.db"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../com/sleepycat/db/VersionMismatchException.html" title="class in com.sleepycat.db"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../index.html?com/sleepycat/db/VerifyConfig.html" target="_top"><B>FRAMES</B></A> &nbsp;
@@ -598,6 +598,6 @@ DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/VersionMismatchException.html b/db/docs/java/com/sleepycat/db/VersionMismatchException.html
index 6bdcc17b6..a60eece76 100644
--- a/db/docs/java/com/sleepycat/db/VersionMismatchException.html
+++ b/db/docs/java/com/sleepycat/db/VersionMismatchException.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:46 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:58 EDT 2007 -->
<TITLE>
-VersionMismatchException (Oracle Corporation - Berkeley DB Java API)
+VersionMismatchException (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db.VersionMismatchException class">
@@ -14,7 +14,7 @@ VersionMismatchException (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="VersionMismatchException (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="VersionMismatchException (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,14 +89,14 @@ com.sleepycat.db</FONT>
<BR>
Class VersionMismatchException</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
- <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">java.lang.Throwable</A>
- <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Exception.html" title="class or interface in java.lang">java.lang.Exception</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+ <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">java.lang.Throwable</A>
+ <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Exception.html" title="class or interface in java.lang">java.lang.Exception</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">com.sleepycat.db.DatabaseException</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.db.VersionMismatchException</B>
</PRE>
<DL>
-<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/Serializable.html" title="class or interface in java.io">Serializable</A></DD>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Serializable.html" title="class or interface in java.io">Serializable</A></DD>
</DL>
<HR>
<DL>
@@ -136,19 +136,19 @@ the database environment.
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Throwable"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang">fillInStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#getCause()" title="class or interface in java.lang">getCause</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang">getLocalizedMessage</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang">getMessage</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang">getStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang">initCause</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement[])" title="class or interface in java.lang">setStackTrace</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang">fillInStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getCause()" title="class or interface in java.lang">getCause</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang">getLocalizedMessage</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang">getMessage</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang">getStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang">initCause</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement[])" title="class or interface in java.lang">setStackTrace</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -178,7 +178,7 @@ the database environment.
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -214,6 +214,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;METHOD</FONT></TD>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/BtreePrefixCalculator.html b/db/docs/java/com/sleepycat/db/class-use/BtreePrefixCalculator.html
index fb9a87151..21b2bb371 100644
--- a/db/docs/java/com/sleepycat/db/class-use/BtreePrefixCalculator.html
+++ b/db/docs/java/com/sleepycat/db/class-use/BtreePrefixCalculator.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Interface com.sleepycat.db.BtreePrefixCalculator (Oracle Corporation - Berkeley DB Java API)
+Uses of Interface com.sleepycat.db.BtreePrefixCalculator (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Interface com.sleepycat.db.BtreePrefixCalculator (Oracle Corporation - B
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Interface com.sleepycat.db.BtreePrefixCalculator (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Interface com.sleepycat.db.BtreePrefixCalculator (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -158,7 +158,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/BtreePrefixCalculator.html" title=
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -188,6 +188,6 @@ Uses of <A HREF="../../../../com/sleepycat/db/BtreePrefixCalculator.html" title=
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/BtreeStats.html b/db/docs/java/com/sleepycat/db/class-use/BtreeStats.html
index e86d844b9..a08681f97 100644
--- a/db/docs/java/com/sleepycat/db/class-use/BtreeStats.html
+++ b/db/docs/java/com/sleepycat/db/class-use/BtreeStats.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.BtreeStats (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.BtreeStats (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.BtreeStats (Oracle Corporation - Berkeley DB Java
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.BtreeStats (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.BtreeStats (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -105,7 +105,7 @@ No usage of com.sleepycat.db.BtreeStats
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -135,6 +135,6 @@ No usage of com.sleepycat.db.BtreeStats
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/CacheFile.html b/db/docs/java/com/sleepycat/db/class-use/CacheFile.html
index cc0e79003..b1f6f2d30 100644
--- a/db/docs/java/com/sleepycat/db/class-use/CacheFile.html
+++ b/db/docs/java/com/sleepycat/db/class-use/CacheFile.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.CacheFile (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.CacheFile (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.CacheFile (Oracle Corporation - Berkeley DB Java
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.CacheFile (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.CacheFile (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -142,7 +142,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/CacheFile.html" title="class in co
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -172,6 +172,6 @@ Uses of <A HREF="../../../../com/sleepycat/db/CacheFile.html" title="class in co
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/CacheFilePriority.html b/db/docs/java/com/sleepycat/db/class-use/CacheFilePriority.html
index cd8f516a9..84f83b0de 100644
--- a/db/docs/java/com/sleepycat/db/class-use/CacheFilePriority.html
+++ b/db/docs/java/com/sleepycat/db/class-use/CacheFilePriority.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.CacheFilePriority (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.CacheFilePriority (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.CacheFilePriority (Oracle Corporation - Berkeley
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.CacheFilePriority (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.CacheFilePriority (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -158,6 +158,22 @@ Uses of <A HREF="../../../../com/sleepycat/db/CacheFilePriority.html" title="cla
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../com/sleepycat/db/CacheFilePriority.html" title="class in com.sleepycat.db">CacheFilePriority</A></CODE></FONT></TD>
+<TD><CODE><B>DatabaseConfig.</B><B><A HREF="../../../../com/sleepycat/db/DatabaseConfig.html#getPriority()">getPriority</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the the cache priority for pages referenced by this handle.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/sleepycat/db/CacheFilePriority.html" title="class in com.sleepycat.db">CacheFilePriority</A></CODE></FONT></TD>
+<TD><CODE><B>Cursor.</B><B><A HREF="../../../../com/sleepycat/db/Cursor.html#getPriority()">getPriority</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the cache priority for pages referenced by the cursor.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/sleepycat/db/CacheFilePriority.html" title="class in com.sleepycat.db">CacheFilePriority</A></CODE></FONT></TD>
<TD><CODE><B>CacheFile.</B><B><A HREF="../../../../com/sleepycat/db/CacheFile.html#getPriority()">getPriority</A></B>()</CODE>
<BR>
@@ -174,6 +190,22 @@ Uses of <A HREF="../../../../com/sleepycat/db/CacheFilePriority.html" title="cla
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B>DatabaseConfig.</B><B><A HREF="../../../../com/sleepycat/db/DatabaseConfig.html#setPriority(com.sleepycat.db.CacheFilePriority)">setPriority</A></B>(<A HREF="../../../../com/sleepycat/db/CacheFilePriority.html" title="class in com.sleepycat.db">CacheFilePriority</A>&nbsp;priority)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the cache priority for pages referenced by the DB handle.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B>Cursor.</B><B><A HREF="../../../../com/sleepycat/db/Cursor.html#setPriority(com.sleepycat.db.CacheFilePriority)">setPriority</A></B>(<A HREF="../../../../com/sleepycat/db/CacheFilePriority.html" title="class in com.sleepycat.db">CacheFilePriority</A>&nbsp;priority)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the cache priority for pages referenced by the DBC handle.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B>CacheFile.</B><B><A HREF="../../../../com/sleepycat/db/CacheFile.html#setPriority(com.sleepycat.db.CacheFilePriority)">setPriority</A></B>(<A HREF="../../../../com/sleepycat/db/CacheFilePriority.html" title="class in com.sleepycat.db">CacheFilePriority</A>&nbsp;priority)</CODE>
<BR>
@@ -207,7 +239,7 @@ cache priority for pages from the specified file.</TD>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -237,6 +269,6 @@ cache priority for pages from the specified file.</TD>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/CacheFileStats.html b/db/docs/java/com/sleepycat/db/class-use/CacheFileStats.html
index 6bb8f3482..45d3c8f28 100644
--- a/db/docs/java/com/sleepycat/db/class-use/CacheFileStats.html
+++ b/db/docs/java/com/sleepycat/db/class-use/CacheFileStats.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.CacheFileStats (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.CacheFileStats (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.CacheFileStats (Oracle Corporation - Berkeley DB
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.CacheFileStats (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.CacheFileStats (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -143,7 +143,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/CacheFileStats.html" title="class
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -173,6 +173,6 @@ Uses of <A HREF="../../../../com/sleepycat/db/CacheFileStats.html" title="class
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/CacheStats.html b/db/docs/java/com/sleepycat/db/class-use/CacheStats.html
index bc9827719..4aa8cbbab 100644
--- a/db/docs/java/com/sleepycat/db/class-use/CacheStats.html
+++ b/db/docs/java/com/sleepycat/db/class-use/CacheStats.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.CacheStats (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.CacheStats (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.CacheStats (Oracle Corporation - Berkeley DB Java
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.CacheStats (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.CacheStats (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -142,7 +142,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/CacheStats.html" title="class in c
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -172,6 +172,6 @@ Uses of <A HREF="../../../../com/sleepycat/db/CacheStats.html" title="class in c
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/CheckpointConfig.html b/db/docs/java/com/sleepycat/db/class-use/CheckpointConfig.html
index 7214db3c7..93292c246 100644
--- a/db/docs/java/com/sleepycat/db/class-use/CheckpointConfig.html
+++ b/db/docs/java/com/sleepycat/db/class-use/CheckpointConfig.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.CheckpointConfig (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.CheckpointConfig (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.CheckpointConfig (Oracle Corporation - Berkeley D
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.CheckpointConfig (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.CheckpointConfig (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -159,7 +159,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/CheckpointConfig.html" title="clas
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -189,6 +189,6 @@ Uses of <A HREF="../../../../com/sleepycat/db/CheckpointConfig.html" title="clas
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/CompactConfig.html b/db/docs/java/com/sleepycat/db/class-use/CompactConfig.html
index 80570e826..89ab6539f 100644
--- a/db/docs/java/com/sleepycat/db/class-use/CompactConfig.html
+++ b/db/docs/java/com/sleepycat/db/class-use/CompactConfig.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.CompactConfig (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.CompactConfig (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.CompactConfig (Oracle Corporation - Berkeley DB J
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.CompactConfig (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.CompactConfig (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -164,7 +164,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/CompactConfig.html" title="class i
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -194,6 +194,6 @@ Uses of <A HREF="../../../../com/sleepycat/db/CompactConfig.html" title="class i
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/CompactStats.html b/db/docs/java/com/sleepycat/db/class-use/CompactStats.html
index 355c53b80..9589dfacd 100644
--- a/db/docs/java/com/sleepycat/db/class-use/CompactStats.html
+++ b/db/docs/java/com/sleepycat/db/class-use/CompactStats.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.CompactStats (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.CompactStats (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.CompactStats (Oracle Corporation - Berkeley DB Ja
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.CompactStats (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.CompactStats (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -147,7 +147,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/CompactStats.html" title="class in
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -177,6 +177,6 @@ Uses of <A HREF="../../../../com/sleepycat/db/CompactStats.html" title="class in
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/Cursor.html b/db/docs/java/com/sleepycat/db/class-use/Cursor.html
index 20d0cb163..986b4e909 100644
--- a/db/docs/java/com/sleepycat/db/class-use/Cursor.html
+++ b/db/docs/java/com/sleepycat/db/class-use/Cursor.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.Cursor (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.Cursor (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.Cursor (Oracle Corporation - Berkeley DB Java API
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.Cursor (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.Cursor (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -204,7 +204,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/Cursor.html" title="class in com.s
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -234,6 +234,6 @@ Uses of <A HREF="../../../../com/sleepycat/db/Cursor.html" title="class in com.s
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/CursorConfig.html b/db/docs/java/com/sleepycat/db/class-use/CursorConfig.html
index 9d410f7d4..30fb73ab1 100644
--- a/db/docs/java/com/sleepycat/db/class-use/CursorConfig.html
+++ b/db/docs/java/com/sleepycat/db/class-use/CursorConfig.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.CursorConfig (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.CursorConfig (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.CursorConfig (Oracle Corporation - Berkeley DB Ja
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.CursorConfig (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.CursorConfig (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -130,8 +130,8 @@ Uses of <A HREF="../../../../com/sleepycat/db/CursorConfig.html" title="class in
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE></FONT></TD>
-<TD><CODE><B>StoredCollections.</B><B><A HREF="../../../../com/sleepycat/collections/StoredCollections.html#configuredCollection(java.util.Collection, com.sleepycat.db.CursorConfig)">configuredCollection</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>&nbsp;storedCollection,
+<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE></FONT></TD>
+<TD><CODE><B>StoredCollections.</B><B><A HREF="../../../../com/sleepycat/collections/StoredCollections.html#configuredCollection(java.util.Collection, com.sleepycat.db.CursorConfig)">configuredCollection</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>&nbsp;storedCollection,
<A HREF="../../../../com/sleepycat/db/CursorConfig.html" title="class in com.sleepycat.db">CursorConfig</A>&nbsp;config)</CODE>
<BR>
@@ -139,8 +139,8 @@ Uses of <A HREF="../../../../com/sleepycat/db/CursorConfig.html" title="class in
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html" title="class or interface in java.util">List</A></CODE></FONT></TD>
-<TD><CODE><B>StoredCollections.</B><B><A HREF="../../../../com/sleepycat/collections/StoredCollections.html#configuredList(java.util.List, com.sleepycat.db.CursorConfig)">configuredList</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html" title="class or interface in java.util">List</A>&nbsp;storedList,
+<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" title="class or interface in java.util">List</A></CODE></FONT></TD>
+<TD><CODE><B>StoredCollections.</B><B><A HREF="../../../../com/sleepycat/collections/StoredCollections.html#configuredList(java.util.List, com.sleepycat.db.CursorConfig)">configuredList</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" title="class or interface in java.util">List</A>&nbsp;storedList,
<A HREF="../../../../com/sleepycat/db/CursorConfig.html" title="class in com.sleepycat.db">CursorConfig</A>&nbsp;config)</CODE>
<BR>
@@ -148,8 +148,8 @@ Uses of <A HREF="../../../../com/sleepycat/db/CursorConfig.html" title="class in
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A></CODE></FONT></TD>
-<TD><CODE><B>StoredCollections.</B><B><A HREF="../../../../com/sleepycat/collections/StoredCollections.html#configuredMap(java.util.Map, com.sleepycat.db.CursorConfig)">configuredMap</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A>&nbsp;storedMap,
+<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A></CODE></FONT></TD>
+<TD><CODE><B>StoredCollections.</B><B><A HREF="../../../../com/sleepycat/collections/StoredCollections.html#configuredMap(java.util.Map, com.sleepycat.db.CursorConfig)">configuredMap</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A>&nbsp;storedMap,
<A HREF="../../../../com/sleepycat/db/CursorConfig.html" title="class in com.sleepycat.db">CursorConfig</A>&nbsp;config)</CODE>
<BR>
@@ -157,8 +157,8 @@ Uses of <A HREF="../../../../com/sleepycat/db/CursorConfig.html" title="class in
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A></CODE></FONT></TD>
-<TD><CODE><B>StoredCollections.</B><B><A HREF="../../../../com/sleepycat/collections/StoredCollections.html#configuredSet(java.util.Set, com.sleepycat.db.CursorConfig)">configuredSet</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A>&nbsp;storedSet,
+<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A></CODE></FONT></TD>
+<TD><CODE><B>StoredCollections.</B><B><A HREF="../../../../com/sleepycat/collections/StoredCollections.html#configuredSet(java.util.Set, com.sleepycat.db.CursorConfig)">configuredSet</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A>&nbsp;storedSet,
<A HREF="../../../../com/sleepycat/db/CursorConfig.html" title="class in com.sleepycat.db">CursorConfig</A>&nbsp;config)</CODE>
<BR>
@@ -166,8 +166,8 @@ Uses of <A HREF="../../../../com/sleepycat/db/CursorConfig.html" title="class in
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A></CODE></FONT></TD>
-<TD><CODE><B>StoredCollections.</B><B><A HREF="../../../../com/sleepycat/collections/StoredCollections.html#configuredSortedMap(java.util.SortedMap, com.sleepycat.db.CursorConfig)">configuredSortedMap</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A>&nbsp;storedSortedMap,
+<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A></CODE></FONT></TD>
+<TD><CODE><B>StoredCollections.</B><B><A HREF="../../../../com/sleepycat/collections/StoredCollections.html#configuredSortedMap(java.util.SortedMap, com.sleepycat.db.CursorConfig)">configuredSortedMap</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A>&nbsp;storedSortedMap,
<A HREF="../../../../com/sleepycat/db/CursorConfig.html" title="class in com.sleepycat.db">CursorConfig</A>&nbsp;config)</CODE>
<BR>
@@ -175,8 +175,8 @@ Uses of <A HREF="../../../../com/sleepycat/db/CursorConfig.html" title="class in
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></FONT></TD>
-<TD><CODE><B>StoredCollections.</B><B><A HREF="../../../../com/sleepycat/collections/StoredCollections.html#configuredSortedSet(java.util.SortedSet, com.sleepycat.db.CursorConfig)">configuredSortedSet</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A>&nbsp;storedSortedSet,
+<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A></CODE></FONT></TD>
+<TD><CODE><B>StoredCollections.</B><B><A HREF="../../../../com/sleepycat/collections/StoredCollections.html#configuredSortedSet(java.util.SortedSet, com.sleepycat.db.CursorConfig)">configuredSortedSet</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A>&nbsp;storedSortedSet,
<A HREF="../../../../com/sleepycat/db/CursorConfig.html" title="class in com.sleepycat.db">CursorConfig</A>&nbsp;config)</CODE>
<BR>
@@ -330,7 +330,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/CursorConfig.html" title="class in
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -360,6 +360,6 @@ Uses of <A HREF="../../../../com/sleepycat/db/CursorConfig.html" title="class in
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/Database.html b/db/docs/java/com/sleepycat/db/class-use/Database.html
index 63c7de588..f93cd7c17 100644
--- a/db/docs/java/com/sleepycat/db/class-use/Database.html
+++ b/db/docs/java/com/sleepycat/db/class-use/Database.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.Database (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.Database (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.Database (Oracle Corporation - Berkeley DB Java A
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.Database (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.Database (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -142,8 +142,8 @@ Uses of <A HREF="../../../../com/sleepycat/db/Database.html" title="class in com
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../com/sleepycat/collections/StoredMap.html" title="class in com.sleepycat.collections">StoredMap</A></CODE></FONT></TD>
<TD><CODE><B>TupleSerialFactory.</B><B><A HREF="../../../../com/sleepycat/collections/TupleSerialFactory.html#newMap(com.sleepycat.db.Database, java.lang.Class, java.lang.Class, boolean)">newMap</A></B>(<A HREF="../../../../com/sleepycat/db/Database.html" title="class in com.sleepycat.db">Database</A>&nbsp;db,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;keyClass,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;valueBaseClass,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;keyClass,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;valueBaseClass,
boolean&nbsp;writeAllowed)</CODE>
<BR>
@@ -153,8 +153,8 @@ Uses of <A HREF="../../../../com/sleepycat/db/Database.html" title="class in com
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../com/sleepycat/collections/StoredSortedMap.html" title="class in com.sleepycat.collections">StoredSortedMap</A></CODE></FONT></TD>
<TD><CODE><B>TupleSerialFactory.</B><B><A HREF="../../../../com/sleepycat/collections/TupleSerialFactory.html#newSortedMap(com.sleepycat.db.Database, java.lang.Class, java.lang.Class, boolean)">newSortedMap</A></B>(<A HREF="../../../../com/sleepycat/db/Database.html" title="class in com.sleepycat.db">Database</A>&nbsp;db,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;keyClass,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;valueBaseClass,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;keyClass,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;valueBaseClass,
boolean&nbsp;writeAllowed)</CODE>
<BR>
@@ -381,8 +381,8 @@ Uses of <A HREF="../../../../com/sleepycat/db/Database.html" title="class in com
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../com/sleepycat/db/Database.html" title="class in com.sleepycat.db">Database</A></CODE></FONT></TD>
<TD><CODE><B>Environment.</B><B><A HREF="../../../../com/sleepycat/db/Environment.html#openDatabase(com.sleepycat.db.Transaction, java.lang.String, java.lang.String, com.sleepycat.db.DatabaseConfig)">openDatabase</A></B>(<A HREF="../../../../com/sleepycat/db/Transaction.html" title="class in com.sleepycat.db">Transaction</A>&nbsp;txn,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
<A HREF="../../../../com/sleepycat/db/DatabaseConfig.html" title="class in com.sleepycat.db">DatabaseConfig</A>&nbsp;config)</CODE>
<BR>
@@ -421,8 +421,8 @@ Uses of <A HREF="../../../../com/sleepycat/db/Database.html" title="class in com
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../com/sleepycat/db/SecondaryDatabase.html" title="class in com.sleepycat.db">SecondaryDatabase</A></CODE></FONT></TD>
<TD><CODE><B>Environment.</B><B><A HREF="../../../../com/sleepycat/db/Environment.html#openSecondaryDatabase(com.sleepycat.db.Transaction, java.lang.String, java.lang.String, com.sleepycat.db.Database, com.sleepycat.db.SecondaryConfig)">openSecondaryDatabase</A></B>(<A HREF="../../../../com/sleepycat/db/Transaction.html" title="class in com.sleepycat.db">Transaction</A>&nbsp;txn,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
<A HREF="../../../../com/sleepycat/db/Database.html" title="class in com.sleepycat.db">Database</A>&nbsp;primaryDatabase,
<A HREF="../../../../com/sleepycat/db/SecondaryConfig.html" title="class in com.sleepycat.db">SecondaryConfig</A>&nbsp;config)</CODE>
@@ -466,8 +466,8 @@ Uses of <A HREF="../../../../com/sleepycat/db/Database.html" title="class in com
<TH ALIGN="left" COLSPAN="2">Constructors in <A HREF="../../../../com/sleepycat/db/package-summary.html">com.sleepycat.db</A> with parameters of type <A HREF="../../../../com/sleepycat/db/Database.html" title="class in com.sleepycat.db">Database</A></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><B><A HREF="../../../../com/sleepycat/db/SecondaryDatabase.html#SecondaryDatabase(java.lang.String, java.lang.String, com.sleepycat.db.Database, com.sleepycat.db.SecondaryConfig)">SecondaryDatabase</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
+<TD><CODE><B><A HREF="../../../../com/sleepycat/db/SecondaryDatabase.html#SecondaryDatabase(java.lang.String, java.lang.String, com.sleepycat.db.Database, com.sleepycat.db.SecondaryConfig)">SecondaryDatabase</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
<A HREF="../../../../com/sleepycat/db/Database.html" title="class in com.sleepycat.db">Database</A>&nbsp;primaryDatabase,
<A HREF="../../../../com/sleepycat/db/SecondaryConfig.html" title="class in com.sleepycat.db">SecondaryConfig</A>&nbsp;config)</CODE>
@@ -501,7 +501,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/Database.html" title="class in com
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -531,6 +531,6 @@ Uses of <A HREF="../../../../com/sleepycat/db/Database.html" title="class in com
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/DatabaseConfig.html b/db/docs/java/com/sleepycat/db/class-use/DatabaseConfig.html
index 47a62256d..23c58aab0 100644
--- a/db/docs/java/com/sleepycat/db/class-use/DatabaseConfig.html
+++ b/db/docs/java/com/sleepycat/db/class-use/DatabaseConfig.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.DatabaseConfig (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.DatabaseConfig (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.DatabaseConfig (Oracle Corporation - Berkeley DB
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.DatabaseConfig (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.DatabaseConfig (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -169,8 +169,8 @@ those of a primary <code>Database</code>.</TD>
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../com/sleepycat/db/Database.html" title="class in com.sleepycat.db">Database</A></CODE></FONT></TD>
<TD><CODE><B>Environment.</B><B><A HREF="../../../../com/sleepycat/db/Environment.html#openDatabase(com.sleepycat.db.Transaction, java.lang.String, java.lang.String, com.sleepycat.db.DatabaseConfig)">openDatabase</A></B>(<A HREF="../../../../com/sleepycat/db/Transaction.html" title="class in com.sleepycat.db">Transaction</A>&nbsp;txn,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
<A HREF="../../../../com/sleepycat/db/DatabaseConfig.html" title="class in com.sleepycat.db">DatabaseConfig</A>&nbsp;config)</CODE>
<BR>
@@ -179,8 +179,8 @@ those of a primary <code>Database</code>.</TD>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B>Database.</B><B><A HREF="../../../../com/sleepycat/db/Database.html#remove(java.lang.String, java.lang.String, com.sleepycat.db.DatabaseConfig)">remove</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
+<TD><CODE><B>Database.</B><B><A HREF="../../../../com/sleepycat/db/Database.html#remove(java.lang.String, java.lang.String, com.sleepycat.db.DatabaseConfig)">remove</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
<A HREF="../../../../com/sleepycat/db/DatabaseConfig.html" title="class in com.sleepycat.db">DatabaseConfig</A>&nbsp;config)</CODE>
<BR>
@@ -190,9 +190,9 @@ Remove a database.</TD>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B>Database.</B><B><A HREF="../../../../com/sleepycat/db/Database.html#rename(java.lang.String, java.lang.String, java.lang.String, com.sleepycat.db.DatabaseConfig)">rename</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;oldDatabaseName,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;newDatabaseName,
+<TD><CODE><B>Database.</B><B><A HREF="../../../../com/sleepycat/db/Database.html#rename(java.lang.String, java.lang.String, java.lang.String, com.sleepycat.db.DatabaseConfig)">rename</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;oldDatabaseName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;newDatabaseName,
<A HREF="../../../../com/sleepycat/db/DatabaseConfig.html" title="class in com.sleepycat.db">DatabaseConfig</A>&nbsp;config)</CODE>
<BR>
@@ -210,7 +210,7 @@ Rename a database.</TD>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B>Database.</B><B><A HREF="../../../../com/sleepycat/db/Database.html#upgrade(java.lang.String, com.sleepycat.db.DatabaseConfig)">upgrade</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
+<TD><CODE><B>Database.</B><B><A HREF="../../../../com/sleepycat/db/Database.html#upgrade(java.lang.String, com.sleepycat.db.DatabaseConfig)">upgrade</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
<A HREF="../../../../com/sleepycat/db/DatabaseConfig.html" title="class in com.sleepycat.db">DatabaseConfig</A>&nbsp;config)</CODE>
<BR>
@@ -219,9 +219,9 @@ Rename a database.</TD>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;boolean</CODE></FONT></TD>
-<TD><CODE><B>Database.</B><B><A HREF="../../../../com/sleepycat/db/Database.html#verify(java.lang.String, java.lang.String, java.io.PrintStream, com.sleepycat.db.VerifyConfig, com.sleepycat.db.DatabaseConfig)">verify</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/PrintStream.html" title="class or interface in java.io">PrintStream</A>&nbsp;dumpStream,
+<TD><CODE><B>Database.</B><B><A HREF="../../../../com/sleepycat/db/Database.html#verify(java.lang.String, java.lang.String, java.io.PrintStream, com.sleepycat.db.VerifyConfig, com.sleepycat.db.DatabaseConfig)">verify</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/PrintStream.html" title="class or interface in java.io">PrintStream</A>&nbsp;dumpStream,
<A HREF="../../../../com/sleepycat/db/VerifyConfig.html" title="class in com.sleepycat.db">VerifyConfig</A>&nbsp;verifyConfig,
<A HREF="../../../../com/sleepycat/db/DatabaseConfig.html" title="class in com.sleepycat.db">DatabaseConfig</A>&nbsp;dbConfig)</CODE>
@@ -237,8 +237,8 @@ Rename a database.</TD>
<TH ALIGN="left" COLSPAN="2">Constructors in <A HREF="../../../../com/sleepycat/db/package-summary.html">com.sleepycat.db</A> with parameters of type <A HREF="../../../../com/sleepycat/db/DatabaseConfig.html" title="class in com.sleepycat.db">DatabaseConfig</A></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><B><A HREF="../../../../com/sleepycat/db/Database.html#Database(java.lang.String, java.lang.String, com.sleepycat.db.DatabaseConfig)">Database</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
+<TD><CODE><B><A HREF="../../../../com/sleepycat/db/Database.html#Database(java.lang.String, java.lang.String, com.sleepycat.db.DatabaseConfig)">Database</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
<A HREF="../../../../com/sleepycat/db/DatabaseConfig.html" title="class in com.sleepycat.db">DatabaseConfig</A>&nbsp;config)</CODE>
<BR>
@@ -271,7 +271,7 @@ Rename a database.</TD>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -301,6 +301,6 @@ Rename a database.</TD>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/DatabaseEntry.html b/db/docs/java/com/sleepycat/db/class-use/DatabaseEntry.html
index 3edb74b2d..322533a49 100644
--- a/db/docs/java/com/sleepycat/db/class-use/DatabaseEntry.html
+++ b/db/docs/java/com/sleepycat/db/class-use/DatabaseEntry.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.DatabaseEntry (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.DatabaseEntry (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.DatabaseEntry (Oracle Corporation - Berkeley DB J
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.DatabaseEntry (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.DatabaseEntry (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -125,7 +125,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class i
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B>RecordNumberBinding.</B><B><A HREF="../../../../com/sleepycat/bind/RecordNumberBinding.html#entryToObject(com.sleepycat.db.DatabaseEntry)">entryToObject</A></B>(<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;entry)</CODE>
<BR>
@@ -133,7 +133,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class i
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B>EntryBinding.</B><B><A HREF="../../../../com/sleepycat/bind/EntryBinding.html#entryToObject(com.sleepycat.db.DatabaseEntry)">entryToObject</A></B>(<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;entry)</CODE>
<BR>
@@ -141,7 +141,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class i
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B>ByteArrayBinding.</B><B><A HREF="../../../../com/sleepycat/bind/ByteArrayBinding.html#entryToObject(com.sleepycat.db.DatabaseEntry)">entryToObject</A></B>(<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;entry)</CODE>
<BR>
@@ -149,7 +149,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class i
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B>EntityBinding.</B><B><A HREF="../../../../com/sleepycat/bind/EntityBinding.html#entryToObject(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry)">entryToObject</A></B>(<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;key,
<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;data)</CODE>
@@ -168,7 +168,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class i
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B>EntityBinding.</B><B><A HREF="../../../../com/sleepycat/bind/EntityBinding.html#objectToData(java.lang.Object, com.sleepycat.db.DatabaseEntry)">objectToData</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B>EntityBinding.</B><B><A HREF="../../../../com/sleepycat/bind/EntityBinding.html#objectToData(java.lang.Object, com.sleepycat.db.DatabaseEntry)">objectToData</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;data)</CODE>
<BR>
@@ -177,7 +177,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class i
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B>RecordNumberBinding.</B><B><A HREF="../../../../com/sleepycat/bind/RecordNumberBinding.html#objectToEntry(java.lang.Object, com.sleepycat.db.DatabaseEntry)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B>RecordNumberBinding.</B><B><A HREF="../../../../com/sleepycat/bind/RecordNumberBinding.html#objectToEntry(java.lang.Object, com.sleepycat.db.DatabaseEntry)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;entry)</CODE>
<BR>
@@ -186,7 +186,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class i
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B>EntryBinding.</B><B><A HREF="../../../../com/sleepycat/bind/EntryBinding.html#objectToEntry(java.lang.Object, com.sleepycat.db.DatabaseEntry)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B>EntryBinding.</B><B><A HREF="../../../../com/sleepycat/bind/EntryBinding.html#objectToEntry(java.lang.Object, com.sleepycat.db.DatabaseEntry)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;entry)</CODE>
<BR>
@@ -195,7 +195,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class i
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B>ByteArrayBinding.</B><B><A HREF="../../../../com/sleepycat/bind/ByteArrayBinding.html#objectToEntry(java.lang.Object, com.sleepycat.db.DatabaseEntry)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B>ByteArrayBinding.</B><B><A HREF="../../../../com/sleepycat/bind/ByteArrayBinding.html#objectToEntry(java.lang.Object, com.sleepycat.db.DatabaseEntry)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;entry)</CODE>
<BR>
@@ -204,7 +204,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class i
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B>EntityBinding.</B><B><A HREF="../../../../com/sleepycat/bind/EntityBinding.html#objectToKey(java.lang.Object, com.sleepycat.db.DatabaseEntry)">objectToKey</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B>EntityBinding.</B><B><A HREF="../../../../com/sleepycat/bind/EntityBinding.html#objectToKey(java.lang.Object, com.sleepycat.db.DatabaseEntry)">objectToKey</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;key)</CODE>
<BR>
@@ -261,7 +261,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class i
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B>SerialBinding.</B><B><A HREF="../../../../com/sleepycat/bind/serial/SerialBinding.html#entryToObject(com.sleepycat.db.DatabaseEntry)">entryToObject</A></B>(<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;entry)</CODE>
<BR>
@@ -269,7 +269,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class i
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B>TupleSerialBinding.</B><B><A HREF="../../../../com/sleepycat/bind/serial/TupleSerialBinding.html#entryToObject(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry)">entryToObject</A></B>(<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;key,
<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;data)</CODE>
@@ -278,7 +278,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class i
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B>SerialSerialBinding.</B><B><A HREF="../../../../com/sleepycat/bind/serial/SerialSerialBinding.html#entryToObject(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry)">entryToObject</A></B>(<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;key,
<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;data)</CODE>
@@ -306,7 +306,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class i
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B>TupleSerialBinding.</B><B><A HREF="../../../../com/sleepycat/bind/serial/TupleSerialBinding.html#objectToData(java.lang.Object, com.sleepycat.db.DatabaseEntry)">objectToData</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B>TupleSerialBinding.</B><B><A HREF="../../../../com/sleepycat/bind/serial/TupleSerialBinding.html#objectToData(java.lang.Object, com.sleepycat.db.DatabaseEntry)">objectToData</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;data)</CODE>
<BR>
@@ -315,7 +315,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class i
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B>SerialSerialBinding.</B><B><A HREF="../../../../com/sleepycat/bind/serial/SerialSerialBinding.html#objectToData(java.lang.Object, com.sleepycat.db.DatabaseEntry)">objectToData</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B>SerialSerialBinding.</B><B><A HREF="../../../../com/sleepycat/bind/serial/SerialSerialBinding.html#objectToData(java.lang.Object, com.sleepycat.db.DatabaseEntry)">objectToData</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;data)</CODE>
<BR>
@@ -324,7 +324,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class i
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B>SerialBinding.</B><B><A HREF="../../../../com/sleepycat/bind/serial/SerialBinding.html#objectToEntry(java.lang.Object, com.sleepycat.db.DatabaseEntry)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B>SerialBinding.</B><B><A HREF="../../../../com/sleepycat/bind/serial/SerialBinding.html#objectToEntry(java.lang.Object, com.sleepycat.db.DatabaseEntry)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;entry)</CODE>
<BR>
@@ -333,7 +333,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class i
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B>TupleSerialBinding.</B><B><A HREF="../../../../com/sleepycat/bind/serial/TupleSerialBinding.html#objectToKey(java.lang.Object, com.sleepycat.db.DatabaseEntry)">objectToKey</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B>TupleSerialBinding.</B><B><A HREF="../../../../com/sleepycat/bind/serial/TupleSerialBinding.html#objectToKey(java.lang.Object, com.sleepycat.db.DatabaseEntry)">objectToKey</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;key)</CODE>
<BR>
@@ -342,7 +342,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class i
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B>SerialSerialBinding.</B><B><A HREF="../../../../com/sleepycat/bind/serial/SerialSerialBinding.html#objectToKey(java.lang.Object, com.sleepycat.db.DatabaseEntry)">objectToKey</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B>SerialSerialBinding.</B><B><A HREF="../../../../com/sleepycat/bind/serial/SerialSerialBinding.html#objectToKey(java.lang.Object, com.sleepycat.db.DatabaseEntry)">objectToKey</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;key)</CODE>
<BR>
@@ -368,6 +368,15 @@ Uses of <A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class i
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B>BigIntegerBinding.</B><B><A HREF="../../../../com/sleepycat/bind/tuple/BigIntegerBinding.html#bigIntegerToEntry(java.math.BigInteger, com.sleepycat.db.DatabaseEntry)">bigIntegerToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/math/BigInteger.html" title="class or interface in java.math">BigInteger</A>&nbsp;val,
+ <A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;entry)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Converts a <code>BigInteger</code> value into an entry buffer.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;void</CODE></FONT></TD>
<TD><CODE><B>BooleanBinding.</B><B><A HREF="../../../../com/sleepycat/bind/tuple/BooleanBinding.html#booleanToEntry(boolean, com.sleepycat.db.DatabaseEntry)">booleanToEntry</A></B>(boolean&nbsp;val,
<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;entry)</CODE>
@@ -423,6 +432,14 @@ Uses of <A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class i
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/math/BigInteger.html" title="class or interface in java.math">BigInteger</A></CODE></FONT></TD>
+<TD><CODE><B>BigIntegerBinding.</B><B><A HREF="../../../../com/sleepycat/bind/tuple/BigIntegerBinding.html#entryToBigInteger(com.sleepycat.db.DatabaseEntry)">entryToBigInteger</A></B>(<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;entry)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Converts an entry buffer into a <code>BigInteger</code> value.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B>BooleanBinding.</B><B><A HREF="../../../../com/sleepycat/bind/tuple/BooleanBinding.html#entryToBoolean(com.sleepycat.db.DatabaseEntry)">entryToBoolean</A></B>(<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;entry)</CODE>
@@ -504,7 +521,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class i
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B>TupleInputBinding.</B><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleInputBinding.html#entryToObject(com.sleepycat.db.DatabaseEntry)">entryToObject</A></B>(<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;entry)</CODE>
<BR>
@@ -512,7 +529,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class i
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B>TupleBinding.</B><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html#entryToObject(com.sleepycat.db.DatabaseEntry)">entryToObject</A></B>(<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;entry)</CODE>
<BR>
@@ -520,7 +537,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class i
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B>TupleTupleBinding.</B><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleTupleBinding.html#entryToObject(com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry)">entryToObject</A></B>(<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;key,
<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;data)</CODE>
@@ -537,7 +554,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class i
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B>StringBinding.</B><B><A HREF="../../../../com/sleepycat/bind/tuple/StringBinding.html#entryToString(com.sleepycat.db.DatabaseEntry)">entryToString</A></B>(<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;entry)</CODE>
<BR>
@@ -601,7 +618,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class i
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B>TupleTupleBinding.</B><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleTupleBinding.html#objectToData(java.lang.Object, com.sleepycat.db.DatabaseEntry)">objectToData</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B>TupleTupleBinding.</B><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleTupleBinding.html#objectToData(java.lang.Object, com.sleepycat.db.DatabaseEntry)">objectToData</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;data)</CODE>
<BR>
@@ -610,7 +627,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class i
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B>TupleInputBinding.</B><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleInputBinding.html#objectToEntry(java.lang.Object, com.sleepycat.db.DatabaseEntry)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B>TupleInputBinding.</B><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleInputBinding.html#objectToEntry(java.lang.Object, com.sleepycat.db.DatabaseEntry)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;entry)</CODE>
<BR>
@@ -619,7 +636,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class i
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B>TupleBinding.</B><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html#objectToEntry(java.lang.Object, com.sleepycat.db.DatabaseEntry)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B>TupleBinding.</B><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleBinding.html#objectToEntry(java.lang.Object, com.sleepycat.db.DatabaseEntry)">objectToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;entry)</CODE>
<BR>
@@ -628,7 +645,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class i
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B>TupleTupleBinding.</B><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleTupleBinding.html#objectToKey(java.lang.Object, com.sleepycat.db.DatabaseEntry)">objectToKey</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
+<TD><CODE><B>TupleTupleBinding.</B><B><A HREF="../../../../com/sleepycat/bind/tuple/TupleTupleBinding.html#objectToKey(java.lang.Object, com.sleepycat.db.DatabaseEntry)">objectToKey</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object,
<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;key)</CODE>
<BR>
@@ -656,7 +673,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class i
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B>StringBinding.</B><B><A HREF="../../../../com/sleepycat/bind/tuple/StringBinding.html#stringToEntry(java.lang.String, com.sleepycat.db.DatabaseEntry)">stringToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;val,
+<TD><CODE><B>StringBinding.</B><B><A HREF="../../../../com/sleepycat/bind/tuple/StringBinding.html#stringToEntry(java.lang.String, com.sleepycat.db.DatabaseEntry)">stringToEntry</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;val,
<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;entry)</CODE>
<BR>
@@ -889,6 +906,17 @@ the head of the queue, and delete the record.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B>SecondaryMultiKeyCreator.</B><B><A HREF="../../../../com/sleepycat/db/SecondaryMultiKeyCreator.html#createSecondaryKeys(com.sleepycat.db.SecondaryDatabase, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, java.util.Set)">createSecondaryKeys</A></B>(<A HREF="../../../../com/sleepycat/db/SecondaryDatabase.html" title="class in com.sleepycat.db">SecondaryDatabase</A>&nbsp;secondary,
+ <A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;key,
+ <A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;data,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A>&nbsp;results)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a secondary key entry, given a primary key and data entry.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../com/sleepycat/db/OperationStatus.html" title="class in com.sleepycat.db">OperationStatus</A></CODE></FONT></TD>
<TD><CODE><B>Database.</B><B><A HREF="../../../../com/sleepycat/db/Database.html#delete(com.sleepycat.db.Transaction, com.sleepycat.db.DatabaseEntry)">delete</A></B>(<A HREF="../../../../com/sleepycat/db/Transaction.html" title="class in com.sleepycat.db">Transaction</A>&nbsp;txn,
<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;key)</CODE>
@@ -899,6 +927,15 @@ the head of the queue, and delete the record.</TD>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../com/sleepycat/db/OperationStatus.html" title="class in com.sleepycat.db">OperationStatus</A></CODE></FONT></TD>
+<TD><CODE><B>Database.</B><B><A HREF="../../../../com/sleepycat/db/Database.html#exists(com.sleepycat.db.Transaction, com.sleepycat.db.DatabaseEntry)">exists</A></B>(<A HREF="../../../../com/sleepycat/db/Transaction.html" title="class in com.sleepycat.db">Transaction</A>&nbsp;txn,
+ <A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;key)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Checks if the specified key appears in the database.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/sleepycat/db/OperationStatus.html" title="class in com.sleepycat.db">OperationStatus</A></CODE></FONT></TD>
<TD><CODE><B>SecondaryDatabase.</B><B><A HREF="../../../../com/sleepycat/db/SecondaryDatabase.html#get(com.sleepycat.db.Transaction, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.LockMode)">get</A></B>(<A HREF="../../../../com/sleepycat/db/Transaction.html" title="class in com.sleepycat.db">Transaction</A>&nbsp;txn,
<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;key,
<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;pKey,
@@ -1711,7 +1748,7 @@ appear in the database.</TD>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -1741,6 +1778,6 @@ appear in the database.</TD>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/DatabaseException.html b/db/docs/java/com/sleepycat/db/class-use/DatabaseException.html
index 563e45035..06751725f 100644
--- a/db/docs/java/com/sleepycat/db/class-use/DatabaseException.html
+++ b/db/docs/java/com/sleepycat/db/class-use/DatabaseException.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.DatabaseException (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.DatabaseException (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.DatabaseException (Oracle Corporation - Berkeley
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.DatabaseException (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.DatabaseException (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -159,7 +159,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/DatabaseException.html" title="cla
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamClass.html" title="class or interface in java.io">ObjectStreamClass</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamClass.html" title="class or interface in java.io">ObjectStreamClass</A></CODE></FONT></TD>
<TD><CODE><B>StoredClassCatalog.</B><B><A HREF="../../../../com/sleepycat/bind/serial/StoredClassCatalog.html#getClassFormat(byte[])">getClassFormat</A></B>(byte[]&nbsp;classID)</CODE>
<BR>
@@ -167,7 +167,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/DatabaseException.html" title="cla
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamClass.html" title="class or interface in java.io">ObjectStreamClass</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamClass.html" title="class or interface in java.io">ObjectStreamClass</A></CODE></FONT></TD>
<TD><CODE><B>ClassCatalog.</B><B><A HREF="../../../../com/sleepycat/bind/serial/ClassCatalog.html#getClassFormat(byte[])">getClassFormat</A></B>(byte[]&nbsp;classID)</CODE>
<BR>
@@ -176,7 +176,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/DatabaseException.html" title="cla
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;byte[]</CODE></FONT></TD>
-<TD><CODE><B>StoredClassCatalog.</B><B><A HREF="../../../../com/sleepycat/bind/serial/StoredClassCatalog.html#getClassID(java.io.ObjectStreamClass)">getClassID</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamClass.html" title="class or interface in java.io">ObjectStreamClass</A>&nbsp;classFormat)</CODE>
+<TD><CODE><B>StoredClassCatalog.</B><B><A HREF="../../../../com/sleepycat/bind/serial/StoredClassCatalog.html#getClassID(java.io.ObjectStreamClass)">getClassID</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamClass.html" title="class or interface in java.io">ObjectStreamClass</A>&nbsp;classFormat)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
@@ -184,7 +184,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/DatabaseException.html" title="cla
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;byte[]</CODE></FONT></TD>
-<TD><CODE><B>ClassCatalog.</B><B><A HREF="../../../../com/sleepycat/bind/serial/ClassCatalog.html#getClassID(java.io.ObjectStreamClass)">getClassID</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamClass.html" title="class or interface in java.io">ObjectStreamClass</A>&nbsp;classDesc)</CODE>
+<TD><CODE><B>ClassCatalog.</B><B><A HREF="../../../../com/sleepycat/bind/serial/ClassCatalog.html#getClassID(java.io.ObjectStreamClass)">getClassID</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamClass.html" title="class or interface in java.io">ObjectStreamClass</A>&nbsp;classDesc)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the class ID for the current version of the given class
@@ -411,6 +411,22 @@ internal initialization).</TD>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;class</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/sleepycat/db/ReplicationLeaseExpiredException.html" title="class in com.sleepycat.db">ReplicationLeaseExpiredException</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Thrown if a master lease has expired.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;class</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/sleepycat/db/ReplicationLeaseTimeoutException.html" title="class in com.sleepycat.db">ReplicationLeaseTimeoutException</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Thrown if a master lease has timed out.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;class</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/sleepycat/db/ReplicationLockoutException.html" title="class in com.sleepycat.db">ReplicationLockoutException</A></B></CODE>
<BR>
@@ -436,15 +452,6 @@ complete the election in the specified timeout period.</TD>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;class</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../com/sleepycat/db/UpdateConflictException.html" title="class in com.sleepycat.db">UpdateConflictException</A></B></CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Thrown when a snapshot transaction attempts to update data
-which was modified after the snapshot transaction read it.</TD>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;class</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../com/sleepycat/db/VersionMismatchException.html" title="class in com.sleepycat.db">VersionMismatchException</A></B></CODE>
<BR>
@@ -509,6 +516,15 @@ Append the key/data pair to the end of the database.</TD>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../com/sleepycat/db/Transaction.html" title="class in com.sleepycat.db">Transaction</A></CODE></FONT></TD>
+<TD><CODE><B>Environment.</B><B><A HREF="../../../../com/sleepycat/db/Environment.html#beginCDSGroup()">beginCDSGroup</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Allocate a locker ID in an environment configured for Berkeley DB
+ Concurrent Data Store applications.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/sleepycat/db/Transaction.html" title="class in com.sleepycat.db">Transaction</A></CODE></FONT></TD>
<TD><CODE><B>Environment.</B><B><A HREF="../../../../com/sleepycat/db/Environment.html#beginTransaction(com.sleepycat.db.Transaction, com.sleepycat.db.TransactionConfig)">beginTransaction</A></B>(<A HREF="../../../../com/sleepycat/db/Transaction.html" title="class in com.sleepycat.db">Transaction</A>&nbsp;parent,
<A HREF="../../../../com/sleepycat/db/TransactionConfig.html" title="class in com.sleepycat.db">TransactionConfig</A>&nbsp;txnConfig)</CODE>
@@ -608,6 +624,14 @@ handle.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B>Transaction.</B><B><A HREF="../../../../com/sleepycat/db/Transaction.html#commitWriteNoSync()">commitWriteNoSync</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End the transaction, writing but not flushing the log.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../com/sleepycat/db/CompactStats.html" title="class in com.sleepycat.db">CompactStats</A></CODE></FONT></TD>
<TD><CODE><B>Database.</B><B><A HREF="../../../../com/sleepycat/db/Database.html#compact(com.sleepycat.db.Transaction, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.CompactConfig)">compact</A></B>(<A HREF="../../../../com/sleepycat/db/Transaction.html" title="class in com.sleepycat.db">Transaction</A>&nbsp;txn,
<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;start,
@@ -633,14 +657,6 @@ the head of the queue, and delete the record.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;long</CODE></FONT></TD>
-<TD><CODE><B>Database.</B><B><A HREF="../../../../com/sleepycat/db/Database.html#count()">count</A></B>()</CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Count the key/data pairs in the database without adding to the cache.</TD>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B>Cursor.</B><B><A HREF="../../../../com/sleepycat/db/Cursor.html#count()">count</A></B>()</CODE>
@@ -669,6 +685,17 @@ the head of the queue, and delete the record.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B>SecondaryMultiKeyCreator.</B><B><A HREF="../../../../com/sleepycat/db/SecondaryMultiKeyCreator.html#createSecondaryKeys(com.sleepycat.db.SecondaryDatabase, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, java.util.Set)">createSecondaryKeys</A></B>(<A HREF="../../../../com/sleepycat/db/SecondaryDatabase.html" title="class in com.sleepycat.db">SecondaryDatabase</A>&nbsp;secondary,
+ <A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;key,
+ <A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;data,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A>&nbsp;results)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a secondary key entry, given a primary key and data entry.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../com/sleepycat/db/OperationStatus.html" title="class in com.sleepycat.db">OperationStatus</A></CODE></FONT></TD>
<TD><CODE><B>Cursor.</B><B><A HREF="../../../../com/sleepycat/db/Cursor.html#delete()">delete</A></B>()</CODE>
@@ -730,7 +757,7 @@ the head of the queue, and delete the record.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;int</CODE></FONT></TD>
+<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B>Environment.</B><B><A HREF="../../../../com/sleepycat/db/Environment.html#electReplicationMaster(int, int)">electReplicationMaster</A></B>(int&nbsp;nsites,
int&nbsp;nvotes)</CODE>
@@ -739,6 +766,15 @@ the head of the queue, and delete the record.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/sleepycat/db/OperationStatus.html" title="class in com.sleepycat.db">OperationStatus</A></CODE></FONT></TD>
+<TD><CODE><B>Database.</B><B><A HREF="../../../../com/sleepycat/db/Database.html#exists(com.sleepycat.db.Transaction, com.sleepycat.db.DatabaseEntry)">exists</A></B>(<A HREF="../../../../com/sleepycat/db/Transaction.html" title="class in com.sleepycat.db">Transaction</A>&nbsp;txn,
+ <A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;key)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Checks if the specified key appears in the database.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B>Environment.</B><B><A HREF="../../../../com/sleepycat/db/Environment.html#flushReplication()">flushReplication</A></B>()</CODE>
@@ -789,7 +825,7 @@ the head of the queue, and delete the record.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/File.html" title="class or interface in java.io">File</A>[]</CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/File.html" title="class or interface in java.io">File</A>[]</CODE></FONT></TD>
<TD><CODE><B>Environment.</B><B><A HREF="../../../../com/sleepycat/db/Environment.html#getArchiveDatabases()">getArchiveDatabases</A></B>()</CODE>
<BR>
@@ -798,7 +834,7 @@ the head of the queue, and delete the record.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/File.html" title="class or interface in java.io">File</A>[]</CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/File.html" title="class or interface in java.io">File</A>[]</CODE></FONT></TD>
<TD><CODE><B>Environment.</B><B><A HREF="../../../../com/sleepycat/db/Environment.html#getArchiveLogFiles(boolean)">getArchiveLogFiles</A></B>(boolean&nbsp;includeInUse)</CODE>
<BR>
@@ -894,7 +930,7 @@ the head of the queue, and delete the record.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B>Database.</B><B><A HREF="../../../../com/sleepycat/db/Database.html#getDatabaseFile()">getDatabaseFile</A></B>()</CODE>
<BR>
@@ -902,7 +938,7 @@ the head of the queue, and delete the record.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B>Database.</B><B><A HREF="../../../../com/sleepycat/db/Database.html#getDatabaseName()">getDatabaseName</A></B>()</CODE>
<BR>
@@ -951,7 +987,7 @@ that pair.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/File.html" title="class or interface in java.io">File</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/File.html" title="class or interface in java.io">File</A></CODE></FONT></TD>
<TD><CODE><B>Environment.</B><B><A HREF="../../../../com/sleepycat/db/Environment.html#getHome()">getHome</A></B>()</CODE>
<BR>
@@ -1036,7 +1072,7 @@ that pair.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B>Environment.</B><B><A HREF="../../../../com/sleepycat/db/Environment.html#getLogFileName(com.sleepycat.db.LogSequenceNumber)">getLogFileName</A></B>(<A HREF="../../../../com/sleepycat/db/LogSequenceNumber.html" title="class in com.sleepycat.db">LogSequenceNumber</A>&nbsp;lsn)</CODE>
<BR>
@@ -1070,7 +1106,7 @@ that pair.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B>Transaction.</B><B><A HREF="../../../../com/sleepycat/db/Transaction.html#getName()">getName</A></B>()</CODE>
<BR>
@@ -1263,6 +1299,14 @@ that pair.</TD>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../com/sleepycat/db/CacheFilePriority.html" title="class in com.sleepycat.db">CacheFilePriority</A></CODE></FONT></TD>
+<TD><CODE><B>Cursor.</B><B><A HREF="../../../../com/sleepycat/db/Cursor.html#getPriority()">getPriority</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the cache priority for pages referenced by the cursor.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/sleepycat/db/CacheFilePriority.html" title="class in com.sleepycat.db">CacheFilePriority</A></CODE></FONT></TD>
<TD><CODE><B>CacheFile.</B><B><A HREF="../../../../com/sleepycat/db/CacheFile.html#getPriority()">getPriority</A></B>()</CODE>
<BR>
@@ -1297,6 +1341,14 @@ that pair.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/sleepycat/db/ReplicationManagerStats.html" title="class in com.sleepycat.db">ReplicationManagerStats</A></CODE></FONT></TD>
+<TD><CODE><B>Environment.</B><B><A HREF="../../../../com/sleepycat/db/Environment.html#getReplicationManagerStats(com.sleepycat.db.StatsConfig)">getReplicationManagerStats</A></B>(<A HREF="../../../../com/sleepycat/db/StatsConfig.html" title="class in com.sleepycat.db">StatsConfig</A>&nbsp;config)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the database environment's replication manager statistics.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../com/sleepycat/db/ReplicationStats.html" title="class in com.sleepycat.db">ReplicationStats</A></CODE></FONT></TD>
<TD><CODE><B>Environment.</B><B><A HREF="../../../../com/sleepycat/db/Environment.html#getReplicationStats(com.sleepycat.db.StatsConfig)">getReplicationStats</A></B>(<A HREF="../../../../com/sleepycat/db/StatsConfig.html" title="class in com.sleepycat.db">StatsConfig</A>&nbsp;config)</CODE>
@@ -1548,7 +1600,7 @@ return the associated key/data pair.</TD>
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B>Environment.</B><B><A HREF="../../../../com/sleepycat/db/Environment.html#logPrint(com.sleepycat.db.Transaction, java.lang.String)">logPrint</A></B>(<A HREF="../../../../com/sleepycat/db/Transaction.html" title="class in com.sleepycat.db">Transaction</A>&nbsp;txn,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;message)</CODE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;message)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Append an informational message to the Berkeley DB database environment log files.</TD>
@@ -1584,8 +1636,8 @@ return the associated key/data pair.</TD>
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../com/sleepycat/db/Database.html" title="class in com.sleepycat.db">Database</A></CODE></FONT></TD>
<TD><CODE><B>Environment.</B><B><A HREF="../../../../com/sleepycat/db/Environment.html#openDatabase(com.sleepycat.db.Transaction, java.lang.String, java.lang.String, com.sleepycat.db.DatabaseConfig)">openDatabase</A></B>(<A HREF="../../../../com/sleepycat/db/Transaction.html" title="class in com.sleepycat.db">Transaction</A>&nbsp;txn,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
<A HREF="../../../../com/sleepycat/db/DatabaseConfig.html" title="class in com.sleepycat.db">DatabaseConfig</A>&nbsp;config)</CODE>
<BR>
@@ -1612,8 +1664,8 @@ return the associated key/data pair.</TD>
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../com/sleepycat/db/SecondaryDatabase.html" title="class in com.sleepycat.db">SecondaryDatabase</A></CODE></FONT></TD>
<TD><CODE><B>Environment.</B><B><A HREF="../../../../com/sleepycat/db/Environment.html#openSecondaryDatabase(com.sleepycat.db.Transaction, java.lang.String, java.lang.String, com.sleepycat.db.Database, com.sleepycat.db.SecondaryConfig)">openSecondaryDatabase</A></B>(<A HREF="../../../../com/sleepycat/db/Transaction.html" title="class in com.sleepycat.db">Transaction</A>&nbsp;txn,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
<A HREF="../../../../com/sleepycat/db/Database.html" title="class in com.sleepycat.db">Database</A>&nbsp;primaryDatabase,
<A HREF="../../../../com/sleepycat/db/SecondaryConfig.html" title="class in com.sleepycat.db">SecondaryConfig</A>&nbsp;config)</CODE>
@@ -1783,7 +1835,7 @@ appear in the database.</TD>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B>Environment.</B><B><A HREF="../../../../com/sleepycat/db/Environment.html#remove(java.io.File, boolean, com.sleepycat.db.EnvironmentConfig)">remove</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/File.html" title="class or interface in java.io">File</A>&nbsp;home,
+<TD><CODE><B>Environment.</B><B><A HREF="../../../../com/sleepycat/db/Environment.html#remove(java.io.File, boolean, com.sleepycat.db.EnvironmentConfig)">remove</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/File.html" title="class or interface in java.io">File</A>&nbsp;home,
boolean&nbsp;force,
<A HREF="../../../../com/sleepycat/db/EnvironmentConfig.html" title="class in com.sleepycat.db">EnvironmentConfig</A>&nbsp;config)</CODE>
@@ -1793,8 +1845,8 @@ appear in the database.</TD>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B>Database.</B><B><A HREF="../../../../com/sleepycat/db/Database.html#remove(java.lang.String, java.lang.String, com.sleepycat.db.DatabaseConfig)">remove</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
+<TD><CODE><B>Database.</B><B><A HREF="../../../../com/sleepycat/db/Database.html#remove(java.lang.String, java.lang.String, com.sleepycat.db.DatabaseConfig)">remove</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
<A HREF="../../../../com/sleepycat/db/DatabaseConfig.html" title="class in com.sleepycat.db">DatabaseConfig</A>&nbsp;config)</CODE>
<BR>
@@ -1805,8 +1857,8 @@ Remove a database.</TD>
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B>Environment.</B><B><A HREF="../../../../com/sleepycat/db/Environment.html#removeDatabase(com.sleepycat.db.Transaction, java.lang.String, java.lang.String)">removeDatabase</A></B>(<A HREF="../../../../com/sleepycat/db/Transaction.html" title="class in com.sleepycat.db">Transaction</A>&nbsp;txn,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName)</CODE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
@@ -1833,9 +1885,9 @@ Remove a database.</TD>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B>Database.</B><B><A HREF="../../../../com/sleepycat/db/Database.html#rename(java.lang.String, java.lang.String, java.lang.String, com.sleepycat.db.DatabaseConfig)">rename</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;oldDatabaseName,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;newDatabaseName,
+<TD><CODE><B>Database.</B><B><A HREF="../../../../com/sleepycat/db/Database.html#rename(java.lang.String, java.lang.String, java.lang.String, com.sleepycat.db.DatabaseConfig)">rename</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;oldDatabaseName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;newDatabaseName,
<A HREF="../../../../com/sleepycat/db/DatabaseConfig.html" title="class in com.sleepycat.db">DatabaseConfig</A>&nbsp;config)</CODE>
<BR>
@@ -1846,9 +1898,9 @@ Rename a database.</TD>
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B>Environment.</B><B><A HREF="../../../../com/sleepycat/db/Environment.html#renameDatabase(com.sleepycat.db.Transaction, java.lang.String, java.lang.String, java.lang.String)">renameDatabase</A></B>(<A HREF="../../../../com/sleepycat/db/Transaction.html" title="class in com.sleepycat.db">Transaction</A>&nbsp;txn,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;oldDatabaseName,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;newDatabaseName)</CODE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;oldDatabaseName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;newDatabaseName)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
@@ -1866,7 +1918,7 @@ Rename a database.</TD>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B>Environment.</B><B><A HREF="../../../../com/sleepycat/db/Environment.html#resetFileID(java.lang.String, boolean)">resetFileID</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;filename,
+<TD><CODE><B>Environment.</B><B><A HREF="../../../../com/sleepycat/db/Environment.html#resetFileID(java.lang.String, boolean)">resetFileID</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;filename,
boolean&nbsp;encrypted)</CODE>
<BR>
@@ -1876,7 +1928,7 @@ Rename a database.</TD>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B>Environment.</B><B><A HREF="../../../../com/sleepycat/db/Environment.html#resetLogSequenceNumber(java.lang.String, boolean)">resetLogSequenceNumber</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;filename,
+<TD><CODE><B>Environment.</B><B><A HREF="../../../../com/sleepycat/db/Environment.html#resetLogSequenceNumber(java.lang.String, boolean)">resetLogSequenceNumber</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;filename,
boolean&nbsp;encrypted)</CODE>
<BR>
@@ -1945,7 +1997,7 @@ maximum size for the file backing the database.</TD>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B>Transaction.</B><B><A HREF="../../../../com/sleepycat/db/Transaction.html#setName(java.lang.String)">setName</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;name)</CODE>
+<TD><CODE><B>Transaction.</B><B><A HREF="../../../../com/sleepycat/db/Transaction.html#setName(java.lang.String)">setName</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;name)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the user visible name for the transaction.</TD>
@@ -1962,6 +2014,14 @@ maximum size for the file backing the database.</TD>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B>Cursor.</B><B><A HREF="../../../../com/sleepycat/db/Cursor.html#setPriority(com.sleepycat.db.CacheFilePriority)">setPriority</A></B>(<A HREF="../../../../com/sleepycat/db/CacheFilePriority.html" title="class in com.sleepycat.db">CacheFilePriority</A>&nbsp;priority)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the cache priority for pages referenced by the DBC handle.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B>CacheFile.</B><B><A HREF="../../../../com/sleepycat/db/CacheFile.html#setPriority(com.sleepycat.db.CacheFilePriority)">setPriority</A></B>(<A HREF="../../../../com/sleepycat/db/CacheFilePriority.html" title="class in com.sleepycat.db">CacheFilePriority</A>&nbsp;priority)</CODE>
<BR>
@@ -2049,7 +2109,7 @@ cache priority for pages from the specified file.</TD>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B>Database.</B><B><A HREF="../../../../com/sleepycat/db/Database.html#upgrade(java.lang.String, com.sleepycat.db.DatabaseConfig)">upgrade</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
+<TD><CODE><B>Database.</B><B><A HREF="../../../../com/sleepycat/db/Database.html#upgrade(java.lang.String, com.sleepycat.db.DatabaseConfig)">upgrade</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
<A HREF="../../../../com/sleepycat/db/DatabaseConfig.html" title="class in com.sleepycat.db">DatabaseConfig</A>&nbsp;config)</CODE>
<BR>
@@ -2058,15 +2118,23 @@ cache priority for pages from the specified file.</TD>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;boolean</CODE></FONT></TD>
-<TD><CODE><B>Database.</B><B><A HREF="../../../../com/sleepycat/db/Database.html#verify(java.lang.String, java.lang.String, java.io.PrintStream, com.sleepycat.db.VerifyConfig, com.sleepycat.db.DatabaseConfig)">verify</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/PrintStream.html" title="class or interface in java.io">PrintStream</A>&nbsp;dumpStream,
+<TD><CODE><B>Database.</B><B><A HREF="../../../../com/sleepycat/db/Database.html#verify(java.lang.String, java.lang.String, java.io.PrintStream, com.sleepycat.db.VerifyConfig, com.sleepycat.db.DatabaseConfig)">verify</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/PrintStream.html" title="class or interface in java.io">PrintStream</A>&nbsp;dumpStream,
<A HREF="../../../../com/sleepycat/db/VerifyConfig.html" title="class in com.sleepycat.db">VerifyConfig</A>&nbsp;verifyConfig,
<A HREF="../../../../com/sleepycat/db/DatabaseConfig.html" title="class in com.sleepycat.db">DatabaseConfig</A>&nbsp;dbConfig)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return if all of the databases in a file are uncorrupted.</TD>
</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B>LogCursor.</B><B><A HREF="../../../../com/sleepycat/db/LogCursor.html#version()">version</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the log file version.</TD>
+</TR>
</TABLE>
&nbsp;
<P>
@@ -2076,23 +2144,23 @@ cache priority for pages from the specified file.</TD>
<TH ALIGN="left" COLSPAN="2">Constructors in <A HREF="../../../../com/sleepycat/db/package-summary.html">com.sleepycat.db</A> that throw <A HREF="../../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><B><A HREF="../../../../com/sleepycat/db/Database.html#Database(java.lang.String, java.lang.String, com.sleepycat.db.DatabaseConfig)">Database</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
+<TD><CODE><B><A HREF="../../../../com/sleepycat/db/Database.html#Database(java.lang.String, java.lang.String, com.sleepycat.db.DatabaseConfig)">Database</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
<A HREF="../../../../com/sleepycat/db/DatabaseConfig.html" title="class in com.sleepycat.db">DatabaseConfig</A>&nbsp;config)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Open a database.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><B><A HREF="../../../../com/sleepycat/db/Environment.html#Environment(java.io.File, com.sleepycat.db.EnvironmentConfig)">Environment</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/File.html" title="class or interface in java.io">File</A>&nbsp;envHome,
+<TD><CODE><B><A HREF="../../../../com/sleepycat/db/Environment.html#Environment(java.io.File, com.sleepycat.db.EnvironmentConfig)">Environment</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/File.html" title="class or interface in java.io">File</A>&nbsp;envHome,
<A HREF="../../../../com/sleepycat/db/EnvironmentConfig.html" title="class in com.sleepycat.db">EnvironmentConfig</A>&nbsp;envConfig)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create a database environment handle.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><B><A HREF="../../../../com/sleepycat/db/SecondaryDatabase.html#SecondaryDatabase(java.lang.String, java.lang.String, com.sleepycat.db.Database, com.sleepycat.db.SecondaryConfig)">SecondaryDatabase</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
+<TD><CODE><B><A HREF="../../../../com/sleepycat/db/SecondaryDatabase.html#SecondaryDatabase(java.lang.String, java.lang.String, com.sleepycat.db.Database, com.sleepycat.db.SecondaryConfig)">SecondaryDatabase</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
<A HREF="../../../../com/sleepycat/db/Database.html" title="class in com.sleepycat.db">Database</A>&nbsp;primaryDatabase,
<A HREF="../../../../com/sleepycat/db/SecondaryConfig.html" title="class in com.sleepycat.db">SecondaryConfig</A>&nbsp;config)</CODE>
@@ -2126,7 +2194,7 @@ cache priority for pages from the specified file.</TD>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -2156,6 +2224,6 @@ cache priority for pages from the specified file.</TD>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/DatabaseStats.html b/db/docs/java/com/sleepycat/db/class-use/DatabaseStats.html
index 545fca2fa..075205c13 100644
--- a/db/docs/java/com/sleepycat/db/class-use/DatabaseStats.html
+++ b/db/docs/java/com/sleepycat/db/class-use/DatabaseStats.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.DatabaseStats (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.DatabaseStats (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.DatabaseStats (Oracle Corporation - Berkeley DB J
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.DatabaseStats (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.DatabaseStats (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -176,7 +176,7 @@ or Recno database statistics.</TD>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -206,6 +206,6 @@ or Recno database statistics.</TD>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/DatabaseType.html b/db/docs/java/com/sleepycat/db/class-use/DatabaseType.html
index 4b6851de6..0a2cbc657 100644
--- a/db/docs/java/com/sleepycat/db/class-use/DatabaseType.html
+++ b/db/docs/java/com/sleepycat/db/class-use/DatabaseType.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.DatabaseType (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.DatabaseType (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.DatabaseType (Oracle Corporation - Berkeley DB Ja
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.DatabaseType (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.DatabaseType (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -206,7 +206,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/DatabaseType.html" title="class in
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -236,6 +236,6 @@ Uses of <A HREF="../../../../com/sleepycat/db/DatabaseType.html" title="class in
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/DeadlockException.html b/db/docs/java/com/sleepycat/db/class-use/DeadlockException.html
index f2c2c00e2..2be41c1db 100644
--- a/db/docs/java/com/sleepycat/db/class-use/DeadlockException.html
+++ b/db/docs/java/com/sleepycat/db/class-use/DeadlockException.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.DeadlockException (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.DeadlockException (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.DeadlockException (Oracle Corporation - Berkeley
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.DeadlockException (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.DeadlockException (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -145,7 +145,7 @@ be granted before the wait-time expired.</TD>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -175,6 +175,6 @@ be granted before the wait-time expired.</TD>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/Environment.html b/db/docs/java/com/sleepycat/db/class-use/Environment.html
index b14007d28..603591878 100644
--- a/db/docs/java/com/sleepycat/db/class-use/Environment.html
+++ b/db/docs/java/com/sleepycat/db/class-use/Environment.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.Environment (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.Environment (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.Environment (Oracle Corporation - Berkeley DB Jav
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.Environment (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.Environment (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -205,8 +205,8 @@ Uses of <A HREF="../../../../com/sleepycat/db/Environment.html" title="class in
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B>ErrorHandler.</B><B><A HREF="../../../../com/sleepycat/db/ErrorHandler.html#error(com.sleepycat.db.Environment, java.lang.String, java.lang.String)">error</A></B>(<A HREF="../../../../com/sleepycat/db/Environment.html" title="class in com.sleepycat.db">Environment</A>&nbsp;environment,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;errpfx,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;msg)</CODE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;errpfx,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;msg)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A callback function to be called when an error occurs in the
@@ -227,7 +227,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/Environment.html" title="class in
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B>MessageHandler.</B><B><A HREF="../../../../com/sleepycat/db/MessageHandler.html#message(com.sleepycat.db.Environment, java.lang.String)">message</A></B>(<A HREF="../../../../com/sleepycat/db/Environment.html" title="class in com.sleepycat.db">Environment</A>&nbsp;environment,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;message)</CODE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;message)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A callback function to be called to display informational messages.</TD>
@@ -276,7 +276,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/Environment.html" title="class in
<TH ALIGN="left" COLSPAN="2">Constructors in <A HREF="../../../../com/sleepycat/db/package-summary.html">com.sleepycat.db</A> with parameters of type <A HREF="../../../../com/sleepycat/db/Environment.html" title="class in com.sleepycat.db">Environment</A></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><B><A HREF="../../../../com/sleepycat/db/DatabaseException.html#DatabaseException(java.lang.String, int, com.sleepycat.db.Environment)">DatabaseException</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;s,
+<TD><CODE><B><A HREF="../../../../com/sleepycat/db/DatabaseException.html#DatabaseException(java.lang.String, int, com.sleepycat.db.Environment)">DatabaseException</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;s,
int&nbsp;errno,
<A HREF="../../../../com/sleepycat/db/Environment.html" title="class in com.sleepycat.db">Environment</A>&nbsp;dbenv)</CODE>
@@ -311,7 +311,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/Environment.html" title="class in
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -341,6 +341,6 @@ Uses of <A HREF="../../../../com/sleepycat/db/Environment.html" title="class in
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/EnvironmentConfig.html b/db/docs/java/com/sleepycat/db/class-use/EnvironmentConfig.html
index 9ff6d12c0..ec4ec2bd2 100644
--- a/db/docs/java/com/sleepycat/db/class-use/EnvironmentConfig.html
+++ b/db/docs/java/com/sleepycat/db/class-use/EnvironmentConfig.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.EnvironmentConfig (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.EnvironmentConfig (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.EnvironmentConfig (Oracle Corporation - Berkeley
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.EnvironmentConfig (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.EnvironmentConfig (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -142,7 +142,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/EnvironmentConfig.html" title="cla
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B>Environment.</B><B><A HREF="../../../../com/sleepycat/db/Environment.html#remove(java.io.File, boolean, com.sleepycat.db.EnvironmentConfig)">remove</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/File.html" title="class or interface in java.io">File</A>&nbsp;home,
+<TD><CODE><B>Environment.</B><B><A HREF="../../../../com/sleepycat/db/Environment.html#remove(java.io.File, boolean, com.sleepycat.db.EnvironmentConfig)">remove</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/File.html" title="class or interface in java.io">File</A>&nbsp;home,
boolean&nbsp;force,
<A HREF="../../../../com/sleepycat/db/EnvironmentConfig.html" title="class in com.sleepycat.db">EnvironmentConfig</A>&nbsp;config)</CODE>
@@ -166,7 +166,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/EnvironmentConfig.html" title="cla
<TH ALIGN="left" COLSPAN="2">Constructors in <A HREF="../../../../com/sleepycat/db/package-summary.html">com.sleepycat.db</A> with parameters of type <A HREF="../../../../com/sleepycat/db/EnvironmentConfig.html" title="class in com.sleepycat.db">EnvironmentConfig</A></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><B><A HREF="../../../../com/sleepycat/db/Environment.html#Environment(java.io.File, com.sleepycat.db.EnvironmentConfig)">Environment</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/File.html" title="class or interface in java.io">File</A>&nbsp;envHome,
+<TD><CODE><B><A HREF="../../../../com/sleepycat/db/Environment.html#Environment(java.io.File, com.sleepycat.db.EnvironmentConfig)">Environment</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/File.html" title="class or interface in java.io">File</A>&nbsp;envHome,
<A HREF="../../../../com/sleepycat/db/EnvironmentConfig.html" title="class in com.sleepycat.db">EnvironmentConfig</A>&nbsp;envConfig)</CODE>
<BR>
@@ -199,7 +199,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/EnvironmentConfig.html" title="cla
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -229,6 +229,6 @@ Uses of <A HREF="../../../../com/sleepycat/db/EnvironmentConfig.html" title="cla
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/ErrorHandler.html b/db/docs/java/com/sleepycat/db/class-use/ErrorHandler.html
index 24af30b35..a203bcb9a 100644
--- a/db/docs/java/com/sleepycat/db/class-use/ErrorHandler.html
+++ b/db/docs/java/com/sleepycat/db/class-use/ErrorHandler.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Interface com.sleepycat.db.ErrorHandler (Oracle Corporation - Berkeley DB Java API)
+Uses of Interface com.sleepycat.db.ErrorHandler (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Interface com.sleepycat.db.ErrorHandler (Oracle Corporation - Berkeley D
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Interface com.sleepycat.db.ErrorHandler (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Interface com.sleepycat.db.ErrorHandler (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -174,7 +174,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/ErrorHandler.html" title="interfac
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -204,6 +204,6 @@ Uses of <A HREF="../../../../com/sleepycat/db/ErrorHandler.html" title="interfac
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/EventHandler.html b/db/docs/java/com/sleepycat/db/class-use/EventHandler.html
index 88bd2b489..230759a27 100644
--- a/db/docs/java/com/sleepycat/db/class-use/EventHandler.html
+++ b/db/docs/java/com/sleepycat/db/class-use/EventHandler.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Interface com.sleepycat.db.EventHandler (Oracle Corporation - Berkeley DB Java API)
+Uses of Interface com.sleepycat.db.EventHandler (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Interface com.sleepycat.db.EventHandler (Oracle Corporation - Berkeley D
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Interface com.sleepycat.db.EventHandler (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Interface com.sleepycat.db.EventHandler (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -105,6 +105,24 @@ Uses of <A HREF="../../../../com/sleepycat/db/EventHandler.html" title="interfac
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left" COLSPAN="2">Classes in <A HREF="../../../../com/sleepycat/db/package-summary.html">com.sleepycat.db</A> that implement <A HREF="../../../../com/sleepycat/db/EventHandler.html" title="interface in com.sleepycat.db">EventHandler</A></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;class</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../com/sleepycat/db/EventHandlerAdapter.html" title="class in com.sleepycat.db">EventHandlerAdapter</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;An abstract class that implements <A HREF="../../../../com/sleepycat/db/EventHandler.html" title="interface in com.sleepycat.db"><CODE>EventHandler</CODE></A>, used to specify a
+callback function to be called when an event is sent from the Berkeley DB
+library.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left" COLSPAN="2">Methods in <A HREF="../../../../com/sleepycat/db/package-summary.html">com.sleepycat.db</A> that return <A HREF="../../../../com/sleepycat/db/EventHandler.html" title="interface in com.sleepycat.db">EventHandler</A></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
@@ -158,7 +176,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/EventHandler.html" title="interfac
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -188,6 +206,6 @@ Uses of <A HREF="../../../../com/sleepycat/db/EventHandler.html" title="interfac
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/EventHandlerAdapter.html b/db/docs/java/com/sleepycat/db/class-use/EventHandlerAdapter.html
new file mode 100644
index 000000000..7cc29196f
--- /dev/null
+++ b/db/docs/java/com/sleepycat/db/class-use/EventHandlerAdapter.html
@@ -0,0 +1,140 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
+<TITLE>
+Uses of Class com.sleepycat.db.EventHandlerAdapter (Oracle - Berkeley DB Java API)
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../style.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+ parent.document.title="Uses of Class com.sleepycat.db.EventHandlerAdapter (Oracle - Berkeley DB Java API)";
+}
+</SCRIPT>
+<NOSCRIPT>
+</NOSCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+ <TR ALIGN="center" VALIGN="top">
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../com/sleepycat/db/EventHandlerAdapter.html" title="class in com.sleepycat.db"><FONT CLASS="NavBarFont1"><B>Class</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Use</B></FONT>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+ </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ <A HREF="../../../../index.html?com/sleepycat/db//class-useEventHandlerAdapter.html" target="_top"><B>FRAMES</B></A> &nbsp;
+&nbsp;<A HREF="EventHandlerAdapter.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+ <!--
+ if(window==top) {
+ document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+ }
+ //-->
+</SCRIPT>
+<NOSCRIPT>
+ <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+<B>Uses of Class<br>com.sleepycat.db.EventHandlerAdapter</B></H2>
+</CENTER>
+No usage of com.sleepycat.db.EventHandlerAdapter
+<P>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+ <TR ALIGN="center" VALIGN="top">
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../com/sleepycat/db/EventHandlerAdapter.html" title="class in com.sleepycat.db"><FONT CLASS="NavBarFont1"><B>Class</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Use</B></FONT>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+ </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ <A HREF="../../../../index.html?com/sleepycat/db//class-useEventHandlerAdapter.html" target="_top"><B>FRAMES</B></A> &nbsp;
+&nbsp;<A HREF="EventHandlerAdapter.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+ <!--
+ if(window==top) {
+ document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+ }
+ //-->
+</SCRIPT>
+<NOSCRIPT>
+ <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
+</BODY>
+</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/EventType.html b/db/docs/java/com/sleepycat/db/class-use/EventType.html
deleted file mode 100644
index 7f76c3c81..000000000
--- a/db/docs/java/com/sleepycat/db/class-use/EventType.html
+++ /dev/null
@@ -1,237 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!--NewPage-->
-<HTML>
-<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
-<TITLE>
-Uses of Class com.sleepycat.db.EventType (Oracle Corporation - Berkeley DB Java API)
-</TITLE>
-
-
-<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../style.css" TITLE="Style">
-
-<SCRIPT type="text/javascript">
-function windowTitle()
-{
- parent.document.title="Uses of Class com.sleepycat.db.EventType (Oracle Corporation - Berkeley DB Java API)";
-}
-</SCRIPT>
-<NOSCRIPT>
-</NOSCRIPT>
-
-</HEAD>
-
-<BODY BGCOLOR="white" onload="windowTitle();">
-
-
-<!-- ========= START OF TOP NAVBAR ======= -->
-<A NAME="navbar_top"><!-- --></A>
-<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
-<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
-<TR>
-<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
-<A NAME="navbar_top_firstrow"><!-- --></A>
-<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
- <TR ALIGN="center" VALIGN="top">
- <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
- <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
- <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../com/sleepycat/db/EventType.html" title="class in com.sleepycat.db"><FONT CLASS="NavBarFont1"><B>Class</B></FONT></A>&nbsp;</TD>
- <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Use</B></FONT>&nbsp;</TD>
- <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
- <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
- <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
- <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
- </TR>
-</TABLE>
-</TD>
-<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
-</TD>
-</TR>
-
-<TR>
-<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
-&nbsp;PREV&nbsp;
-&nbsp;NEXT</FONT></TD>
-<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
- <A HREF="../../../../index.html?com/sleepycat/db//class-useEventType.html" target="_top"><B>FRAMES</B></A> &nbsp;
-&nbsp;<A HREF="EventType.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
-&nbsp;<SCRIPT type="text/javascript">
- <!--
- if(window==top) {
- document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
- }
- //-->
-</SCRIPT>
-<NOSCRIPT>
- <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
-</NOSCRIPT>
-
-
-</FONT></TD>
-</TR>
-</TABLE>
-<A NAME="skip-navbar_top"></A>
-<!-- ========= END OF TOP NAVBAR ========= -->
-
-<HR>
-<CENTER>
-<H2>
-<B>Uses of Class<br>com.sleepycat.db.EventType</B></H2>
-</CENTER>
-
-<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
-<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
-<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
-Packages that use <A HREF="../../../../com/sleepycat/db/EventType.html" title="class in com.sleepycat.db">EventType</A></FONT></TH>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><A HREF="#com.sleepycat.db"><B>com.sleepycat.db</B></A></TD>
-<TD>Berkeley DB Java API<br>
-<a href="../../../../../ref/toc.html" target="_top">[reference guide]</a> <a href="../../../../../ref/java/program.html" target="_top">[Java programming notes]</a>.&nbsp;</TD>
-</TR>
-</TABLE>
-&nbsp;
-<P>
-<A NAME="com.sleepycat.db"><!-- --></A>
-<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
-<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
-<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
-Uses of <A HREF="../../../../com/sleepycat/db/EventType.html" title="class in com.sleepycat.db">EventType</A> in <A HREF="../../../../com/sleepycat/db/package-summary.html">com.sleepycat.db</A></FONT></TH>
-</TR>
-</TABLE>
-&nbsp;
-<P>
-
-<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
-<TR BGCOLOR="#CCCCFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left" COLSPAN="2">Fields in <A HREF="../../../../com/sleepycat/db/package-summary.html">com.sleepycat.db</A> declared as <A HREF="../../../../com/sleepycat/db/EventType.html" title="class in com.sleepycat.db">EventType</A></FONT></TH>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>static&nbsp;<A HREF="../../../../com/sleepycat/db/EventType.html" title="class in com.sleepycat.db">EventType</A></CODE></FONT></TD>
-<TD><CODE><B>EventType.</B><B><A HREF="../../../../com/sleepycat/db/EventType.html#PANIC">PANIC</A></B></CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The event is a Database panic.</TD>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>static&nbsp;<A HREF="../../../../com/sleepycat/db/EventType.html" title="class in com.sleepycat.db">EventType</A></CODE></FONT></TD>
-<TD><CODE><B>EventType.</B><B><A HREF="../../../../com/sleepycat/db/EventType.html#REP_CLIENT">REP_CLIENT</A></B></CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The event is a replication client message, meaning that the current site
- is now a client in the replication group.</TD>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>static&nbsp;<A HREF="../../../../com/sleepycat/db/EventType.html" title="class in com.sleepycat.db">EventType</A></CODE></FONT></TD>
-<TD><CODE><B>EventType.</B><B><A HREF="../../../../com/sleepycat/db/EventType.html#REP_MASTER">REP_MASTER</A></B></CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The event is a replication master message, meaning that the current site
- is now the master in the replication group.</TD>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>static&nbsp;<A HREF="../../../../com/sleepycat/db/EventType.html" title="class in com.sleepycat.db">EventType</A></CODE></FONT></TD>
-<TD><CODE><B>EventType.</B><B><A HREF="../../../../com/sleepycat/db/EventType.html#REP_NEW_MASTER">REP_NEW_MASTER</A></B></CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The event is a replication new master message.</TD>
-</TR>
-</TABLE>
-&nbsp;
-<P>
-
-<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
-<TR BGCOLOR="#CCCCFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left" COLSPAN="2">Methods in <A HREF="../../../../com/sleepycat/db/package-summary.html">com.sleepycat.db</A> that return <A HREF="../../../../com/sleepycat/db/EventType.html" title="class in com.sleepycat.db">EventType</A></FONT></TH>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>static&nbsp;<A HREF="../../../../com/sleepycat/db/EventType.html" title="class in com.sleepycat.db">EventType</A></CODE></FONT></TD>
-<TD><CODE><B>EventType.</B><B><A HREF="../../../../com/sleepycat/db/EventType.html#fromInt(int)">fromInt</A></B>(int&nbsp;type)</CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Internal: this is public only so it can be called from an internal
- package.</TD>
-</TR>
-</TABLE>
-&nbsp;
-<P>
-
-<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
-<TR BGCOLOR="#CCCCFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left" COLSPAN="2">Methods in <A HREF="../../../../com/sleepycat/db/package-summary.html">com.sleepycat.db</A> with parameters of type <A HREF="../../../../com/sleepycat/db/EventType.html" title="class in com.sleepycat.db">EventType</A></FONT></TH>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;int</CODE></FONT></TD>
-<TD><CODE><B>EventHandler.</B><B><A HREF="../../../../com/sleepycat/db/EventHandler.html#handleEvent(com.sleepycat.db.EventType)">handleEvent</A></B>(<A HREF="../../../../com/sleepycat/db/EventType.html" title="class in com.sleepycat.db">EventType</A>&nbsp;event)</CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A callback function to be called when an event is sent from the
- Berkeley DB library.</TD>
-</TR>
-</TABLE>
-&nbsp;
-<P>
-<HR>
-
-
-<!-- ======= START OF BOTTOM NAVBAR ====== -->
-<A NAME="navbar_bottom"><!-- --></A>
-<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
-<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
-<TR>
-<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
-<A NAME="navbar_bottom_firstrow"><!-- --></A>
-<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
- <TR ALIGN="center" VALIGN="top">
- <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
- <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
- <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../com/sleepycat/db/EventType.html" title="class in com.sleepycat.db"><FONT CLASS="NavBarFont1"><B>Class</B></FONT></A>&nbsp;</TD>
- <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Use</B></FONT>&nbsp;</TD>
- <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
- <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
- <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
- <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
- </TR>
-</TABLE>
-</TD>
-<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
-</TD>
-</TR>
-
-<TR>
-<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
-&nbsp;PREV&nbsp;
-&nbsp;NEXT</FONT></TD>
-<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
- <A HREF="../../../../index.html?com/sleepycat/db//class-useEventType.html" target="_top"><B>FRAMES</B></A> &nbsp;
-&nbsp;<A HREF="EventType.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
-&nbsp;<SCRIPT type="text/javascript">
- <!--
- if(window==top) {
- document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
- }
- //-->
-</SCRIPT>
-<NOSCRIPT>
- <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
-</NOSCRIPT>
-
-
-</FONT></TD>
-</TR>
-</TABLE>
-<A NAME="skip-navbar_bottom"></A>
-<!-- ======== END OF BOTTOM NAVBAR ======= -->
-
-<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
-</BODY>
-</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/FeedbackHandler.html b/db/docs/java/com/sleepycat/db/class-use/FeedbackHandler.html
index cd4062f2a..fc570c151 100644
--- a/db/docs/java/com/sleepycat/db/class-use/FeedbackHandler.html
+++ b/db/docs/java/com/sleepycat/db/class-use/FeedbackHandler.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Interface com.sleepycat.db.FeedbackHandler (Oracle Corporation - Berkeley DB Java API)
+Uses of Interface com.sleepycat.db.FeedbackHandler (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Interface com.sleepycat.db.FeedbackHandler (Oracle Corporation - Berkele
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Interface com.sleepycat.db.FeedbackHandler (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Interface com.sleepycat.db.FeedbackHandler (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -174,7 +174,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/FeedbackHandler.html" title="inter
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -204,6 +204,6 @@ Uses of <A HREF="../../../../com/sleepycat/db/FeedbackHandler.html" title="inter
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/HashStats.html b/db/docs/java/com/sleepycat/db/class-use/HashStats.html
index 7b89700a5..02464b054 100644
--- a/db/docs/java/com/sleepycat/db/class-use/HashStats.html
+++ b/db/docs/java/com/sleepycat/db/class-use/HashStats.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.HashStats (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.HashStats (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.HashStats (Oracle Corporation - Berkeley DB Java
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.HashStats (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.HashStats (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -105,7 +105,7 @@ No usage of com.sleepycat.db.HashStats
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -135,6 +135,6 @@ No usage of com.sleepycat.db.HashStats
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/Hasher.html b/db/docs/java/com/sleepycat/db/class-use/Hasher.html
index c5f664a98..31f3666a2 100644
--- a/db/docs/java/com/sleepycat/db/class-use/Hasher.html
+++ b/db/docs/java/com/sleepycat/db/class-use/Hasher.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Interface com.sleepycat.db.Hasher (Oracle Corporation - Berkeley DB Java API)
+Uses of Interface com.sleepycat.db.Hasher (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Interface com.sleepycat.db.Hasher (Oracle Corporation - Berkeley DB Java
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Interface com.sleepycat.db.Hasher (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Interface com.sleepycat.db.Hasher (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -158,7 +158,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/Hasher.html" title="interface in c
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -188,6 +188,6 @@ Uses of <A HREF="../../../../com/sleepycat/db/Hasher.html" title="interface in c
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/JoinConfig.html b/db/docs/java/com/sleepycat/db/class-use/JoinConfig.html
index a1834b7df..d8900d055 100644
--- a/db/docs/java/com/sleepycat/db/class-use/JoinConfig.html
+++ b/db/docs/java/com/sleepycat/db/class-use/JoinConfig.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.JoinConfig (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.JoinConfig (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.JoinConfig (Oracle Corporation - Berkeley DB Java
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.JoinConfig (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.JoinConfig (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -115,7 +115,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/JoinConfig.html" title="class in c
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../com/sleepycat/collections/StoredIterator.html" title="class in com.sleepycat.collections">StoredIterator</A></CODE></FONT></TD>
<TD><CODE><B>StoredCollection.</B><B><A HREF="../../../../com/sleepycat/collections/StoredCollection.html#join(com.sleepycat.collections.StoredContainer[], java.lang.Object[], com.sleepycat.db.JoinConfig)">join</A></B>(<A HREF="../../../../com/sleepycat/collections/StoredContainer.html" title="class in com.sleepycat.collections">StoredContainer</A>[]&nbsp;indices,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>[]&nbsp;indexKeys,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>[]&nbsp;indexKeys,
<A HREF="../../../../com/sleepycat/db/JoinConfig.html" title="class in com.sleepycat.db">JoinConfig</A>&nbsp;joinConfig)</CODE>
<BR>
@@ -208,7 +208,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/JoinConfig.html" title="class in c
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -238,6 +238,6 @@ Uses of <A HREF="../../../../com/sleepycat/db/JoinConfig.html" title="class in c
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/JoinCursor.html b/db/docs/java/com/sleepycat/db/class-use/JoinCursor.html
index 0e8452b61..c17290986 100644
--- a/db/docs/java/com/sleepycat/db/class-use/JoinCursor.html
+++ b/db/docs/java/com/sleepycat/db/class-use/JoinCursor.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.JoinCursor (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.JoinCursor (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.JoinCursor (Oracle Corporation - Berkeley DB Java
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.JoinCursor (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.JoinCursor (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -144,7 +144,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/JoinCursor.html" title="class in c
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -174,6 +174,6 @@ Uses of <A HREF="../../../../com/sleepycat/db/JoinCursor.html" title="class in c
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/KeyRange.html b/db/docs/java/com/sleepycat/db/class-use/KeyRange.html
index cb0ac9f11..5c3f2188c 100644
--- a/db/docs/java/com/sleepycat/db/class-use/KeyRange.html
+++ b/db/docs/java/com/sleepycat/db/class-use/KeyRange.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.KeyRange (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.KeyRange (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.KeyRange (Oracle Corporation - Berkeley DB Java A
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.KeyRange (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.KeyRange (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -144,7 +144,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/KeyRange.html" title="class in com
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -174,6 +174,6 @@ Uses of <A HREF="../../../../com/sleepycat/db/KeyRange.html" title="class in com
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/Lock.html b/db/docs/java/com/sleepycat/db/class-use/Lock.html
index cccd0c8dd..33c41f853 100644
--- a/db/docs/java/com/sleepycat/db/class-use/Lock.html
+++ b/db/docs/java/com/sleepycat/db/class-use/Lock.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.Lock (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.Lock (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.Lock (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.Lock (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.Lock (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -215,7 +215,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/Lock.html" title="class in com.sle
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -245,6 +245,6 @@ Uses of <A HREF="../../../../com/sleepycat/db/Lock.html" title="class in com.sle
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/LockDetectMode.html b/db/docs/java/com/sleepycat/db/class-use/LockDetectMode.html
index e7f2f663b..fc7d02213 100644
--- a/db/docs/java/com/sleepycat/db/class-use/LockDetectMode.html
+++ b/db/docs/java/com/sleepycat/db/class-use/LockDetectMode.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.LockDetectMode (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.LockDetectMode (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.LockDetectMode (Oracle Corporation - Berkeley DB
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.LockDetectMode (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.LockDetectMode (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -257,7 +257,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/LockDetectMode.html" title="class
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -287,6 +287,6 @@ Uses of <A HREF="../../../../com/sleepycat/db/LockDetectMode.html" title="class
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/LockMode.html b/db/docs/java/com/sleepycat/db/class-use/LockMode.html
index 363d11a1c..f540d3233 100644
--- a/db/docs/java/com/sleepycat/db/class-use/LockMode.html
+++ b/db/docs/java/com/sleepycat/db/class-use/LockMode.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.LockMode (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.LockMode (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.LockMode (Oracle Corporation - Berkeley DB Java A
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.LockMode (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.LockMode (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -623,7 +623,7 @@ return the associated key/data pair.</TD>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -653,6 +653,6 @@ return the associated key/data pair.</TD>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/LockNotGrantedException.html b/db/docs/java/com/sleepycat/db/class-use/LockNotGrantedException.html
index 53cdf0823..3de8cac11 100644
--- a/db/docs/java/com/sleepycat/db/class-use/LockNotGrantedException.html
+++ b/db/docs/java/com/sleepycat/db/class-use/LockNotGrantedException.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.LockNotGrantedException (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.LockNotGrantedException (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.LockNotGrantedException (Oracle Corporation - Ber
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.LockNotGrantedException (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.LockNotGrantedException (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -105,7 +105,7 @@ No usage of com.sleepycat.db.LockNotGrantedException
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -135,6 +135,6 @@ No usage of com.sleepycat.db.LockNotGrantedException
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/LockOperation.html b/db/docs/java/com/sleepycat/db/class-use/LockOperation.html
index 0502623f5..6df24252d 100644
--- a/db/docs/java/com/sleepycat/db/class-use/LockOperation.html
+++ b/db/docs/java/com/sleepycat/db/class-use/LockOperation.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.LockOperation (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.LockOperation (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.LockOperation (Oracle Corporation - Berkeley DB J
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.LockOperation (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.LockOperation (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -246,7 +246,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/LockOperation.html" title="class i
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -276,6 +276,6 @@ Uses of <A HREF="../../../../com/sleepycat/db/LockOperation.html" title="class i
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/LockRequest.html b/db/docs/java/com/sleepycat/db/class-use/LockRequest.html
index ef2d54c7f..3bc4a06ff 100644
--- a/db/docs/java/com/sleepycat/db/class-use/LockRequest.html
+++ b/db/docs/java/com/sleepycat/db/class-use/LockRequest.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.LockRequest (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.LockRequest (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.LockRequest (Oracle Corporation - Berkeley DB Jav
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.LockRequest (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.LockRequest (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -144,7 +144,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/LockRequest.html" title="class in
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -174,6 +174,6 @@ Uses of <A HREF="../../../../com/sleepycat/db/LockRequest.html" title="class in
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/LockRequestMode.html b/db/docs/java/com/sleepycat/db/class-use/LockRequestMode.html
index 8aca20a9e..ec5ca0afb 100644
--- a/db/docs/java/com/sleepycat/db/class-use/LockRequestMode.html
+++ b/db/docs/java/com/sleepycat/db/class-use/LockRequestMode.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.LockRequestMode (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.LockRequestMode (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.LockRequestMode (Oracle Corporation - Berkeley DB
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.LockRequestMode (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.LockRequestMode (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -246,7 +246,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/LockRequestMode.html" title="class
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -276,6 +276,6 @@ Uses of <A HREF="../../../../com/sleepycat/db/LockRequestMode.html" title="class
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/LockStats.html b/db/docs/java/com/sleepycat/db/class-use/LockStats.html
index 852ec981b..cef7747c1 100644
--- a/db/docs/java/com/sleepycat/db/class-use/LockStats.html
+++ b/db/docs/java/com/sleepycat/db/class-use/LockStats.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.LockStats (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.LockStats (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.LockStats (Oracle Corporation - Berkeley DB Java
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.LockStats (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.LockStats (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -142,7 +142,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/LockStats.html" title="class in co
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -172,6 +172,6 @@ Uses of <A HREF="../../../../com/sleepycat/db/LockStats.html" title="class in co
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/LogCursor.html b/db/docs/java/com/sleepycat/db/class-use/LogCursor.html
index 80229bfe5..8f2d87e2d 100644
--- a/db/docs/java/com/sleepycat/db/class-use/LogCursor.html
+++ b/db/docs/java/com/sleepycat/db/class-use/LogCursor.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.LogCursor (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.LogCursor (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.LogCursor (Oracle Corporation - Berkeley DB Java
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.LogCursor (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.LogCursor (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -142,7 +142,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/LogCursor.html" title="class in co
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -172,6 +172,6 @@ Uses of <A HREF="../../../../com/sleepycat/db/LogCursor.html" title="class in co
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/LogRecordHandler.html b/db/docs/java/com/sleepycat/db/class-use/LogRecordHandler.html
index 4786974be..de43c618e 100644
--- a/db/docs/java/com/sleepycat/db/class-use/LogRecordHandler.html
+++ b/db/docs/java/com/sleepycat/db/class-use/LogRecordHandler.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Interface com.sleepycat.db.LogRecordHandler (Oracle Corporation - Berkeley DB Java API)
+Uses of Interface com.sleepycat.db.LogRecordHandler (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Interface com.sleepycat.db.LogRecordHandler (Oracle Corporation - Berkel
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Interface com.sleepycat.db.LogRecordHandler (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Interface com.sleepycat.db.LogRecordHandler (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -158,7 +158,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/LogRecordHandler.html" title="inte
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -188,6 +188,6 @@ Uses of <A HREF="../../../../com/sleepycat/db/LogRecordHandler.html" title="inte
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/LogSequenceNumber.html b/db/docs/java/com/sleepycat/db/class-use/LogSequenceNumber.html
index accd59f5b..7fab463d1 100644
--- a/db/docs/java/com/sleepycat/db/class-use/LogSequenceNumber.html
+++ b/db/docs/java/com/sleepycat/db/class-use/LogSequenceNumber.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.LogSequenceNumber (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.LogSequenceNumber (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.LogSequenceNumber (Oracle Corporation - Berkeley
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.LogSequenceNumber (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.LogSequenceNumber (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -224,7 +224,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/LogSequenceNumber.html" title="cla
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B>Environment.</B><B><A HREF="../../../../com/sleepycat/db/Environment.html#getLogFileName(com.sleepycat.db.LogSequenceNumber)">getLogFileName</A></B>(<A HREF="../../../../com/sleepycat/db/LogSequenceNumber.html" title="class in com.sleepycat.db">LogSequenceNumber</A>&nbsp;lsn)</CODE>
<BR>
@@ -321,7 +321,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/LogSequenceNumber.html" title="cla
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -351,6 +351,6 @@ Uses of <A HREF="../../../../com/sleepycat/db/LogSequenceNumber.html" title="cla
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/LogStats.html b/db/docs/java/com/sleepycat/db/class-use/LogStats.html
index 5d50432dd..efc672fe8 100644
--- a/db/docs/java/com/sleepycat/db/class-use/LogStats.html
+++ b/db/docs/java/com/sleepycat/db/class-use/LogStats.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.LogStats (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.LogStats (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.LogStats (Oracle Corporation - Berkeley DB Java A
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.LogStats (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.LogStats (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -142,7 +142,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/LogStats.html" title="class in com
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -172,6 +172,6 @@ Uses of <A HREF="../../../../com/sleepycat/db/LogStats.html" title="class in com
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/MemoryException.html b/db/docs/java/com/sleepycat/db/class-use/MemoryException.html
index c7619aa14..ef87b09cb 100644
--- a/db/docs/java/com/sleepycat/db/class-use/MemoryException.html
+++ b/db/docs/java/com/sleepycat/db/class-use/MemoryException.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.MemoryException (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.MemoryException (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.MemoryException (Oracle Corporation - Berkeley DB
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.MemoryException (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.MemoryException (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -105,7 +105,7 @@ No usage of com.sleepycat.db.MemoryException
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -135,6 +135,6 @@ No usage of com.sleepycat.db.MemoryException
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/MessageHandler.html b/db/docs/java/com/sleepycat/db/class-use/MessageHandler.html
index ef7d894f0..164a294ad 100644
--- a/db/docs/java/com/sleepycat/db/class-use/MessageHandler.html
+++ b/db/docs/java/com/sleepycat/db/class-use/MessageHandler.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Interface com.sleepycat.db.MessageHandler (Oracle Corporation - Berkeley DB Java API)
+Uses of Interface com.sleepycat.db.MessageHandler (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Interface com.sleepycat.db.MessageHandler (Oracle Corporation - Berkeley
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Interface com.sleepycat.db.MessageHandler (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Interface com.sleepycat.db.MessageHandler (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -174,7 +174,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/MessageHandler.html" title="interf
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -204,6 +204,6 @@ Uses of <A HREF="../../../../com/sleepycat/db/MessageHandler.html" title="interf
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/MultipleDataEntry.html b/db/docs/java/com/sleepycat/db/class-use/MultipleDataEntry.html
index b534606a9..75bdf23c8 100644
--- a/db/docs/java/com/sleepycat/db/class-use/MultipleDataEntry.html
+++ b/db/docs/java/com/sleepycat/db/class-use/MultipleDataEntry.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.MultipleDataEntry (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.MultipleDataEntry (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.MultipleDataEntry (Oracle Corporation - Berkeley
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.MultipleDataEntry (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.MultipleDataEntry (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -105,7 +105,7 @@ No usage of com.sleepycat.db.MultipleDataEntry
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -135,6 +135,6 @@ No usage of com.sleepycat.db.MultipleDataEntry
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/MultipleEntry.html b/db/docs/java/com/sleepycat/db/class-use/MultipleEntry.html
index c41d7d8e9..c58cbab34 100644
--- a/db/docs/java/com/sleepycat/db/class-use/MultipleEntry.html
+++ b/db/docs/java/com/sleepycat/db/class-use/MultipleEntry.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.MultipleEntry (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.MultipleEntry (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.MultipleEntry (Oracle Corporation - Berkeley DB J
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.MultipleEntry (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.MultipleEntry (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -188,7 +188,7 @@ single <A HREF="../../../../com/sleepycat/db/Database.html" title="class in com.
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -218,6 +218,6 @@ single <A HREF="../../../../com/sleepycat/db/Database.html" title="class in com.
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/MultipleKeyDataEntry.html b/db/docs/java/com/sleepycat/db/class-use/MultipleKeyDataEntry.html
index 21f540aad..10033bd05 100644
--- a/db/docs/java/com/sleepycat/db/class-use/MultipleKeyDataEntry.html
+++ b/db/docs/java/com/sleepycat/db/class-use/MultipleKeyDataEntry.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.MultipleKeyDataEntry (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.MultipleKeyDataEntry (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.MultipleKeyDataEntry (Oracle Corporation - Berkel
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.MultipleKeyDataEntry (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.MultipleKeyDataEntry (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -105,7 +105,7 @@ No usage of com.sleepycat.db.MultipleKeyDataEntry
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -135,6 +135,6 @@ No usage of com.sleepycat.db.MultipleKeyDataEntry
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/MultipleKeyNIODataEntry.html b/db/docs/java/com/sleepycat/db/class-use/MultipleKeyNIODataEntry.html
index 9a28b075e..cae61469b 100644
--- a/db/docs/java/com/sleepycat/db/class-use/MultipleKeyNIODataEntry.html
+++ b/db/docs/java/com/sleepycat/db/class-use/MultipleKeyNIODataEntry.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.MultipleKeyNIODataEntry (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.MultipleKeyNIODataEntry (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.MultipleKeyNIODataEntry (Oracle Corporation - Ber
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.MultipleKeyNIODataEntry (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.MultipleKeyNIODataEntry (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -105,7 +105,7 @@ No usage of com.sleepycat.db.MultipleKeyNIODataEntry
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -135,6 +135,6 @@ No usage of com.sleepycat.db.MultipleKeyNIODataEntry
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/MultipleNIODataEntry.html b/db/docs/java/com/sleepycat/db/class-use/MultipleNIODataEntry.html
index 81097b754..4015ac9c5 100644
--- a/db/docs/java/com/sleepycat/db/class-use/MultipleNIODataEntry.html
+++ b/db/docs/java/com/sleepycat/db/class-use/MultipleNIODataEntry.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.MultipleNIODataEntry (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.MultipleNIODataEntry (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.MultipleNIODataEntry (Oracle Corporation - Berkel
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.MultipleNIODataEntry (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.MultipleNIODataEntry (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -105,7 +105,7 @@ No usage of com.sleepycat.db.MultipleNIODataEntry
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -135,6 +135,6 @@ No usage of com.sleepycat.db.MultipleNIODataEntry
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/MultipleRecnoDataEntry.html b/db/docs/java/com/sleepycat/db/class-use/MultipleRecnoDataEntry.html
index ed2439480..9a59e99d2 100644
--- a/db/docs/java/com/sleepycat/db/class-use/MultipleRecnoDataEntry.html
+++ b/db/docs/java/com/sleepycat/db/class-use/MultipleRecnoDataEntry.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.MultipleRecnoDataEntry (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.MultipleRecnoDataEntry (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.MultipleRecnoDataEntry (Oracle Corporation - Berk
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.MultipleRecnoDataEntry (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.MultipleRecnoDataEntry (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -105,7 +105,7 @@ No usage of com.sleepycat.db.MultipleRecnoDataEntry
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -135,6 +135,6 @@ No usage of com.sleepycat.db.MultipleRecnoDataEntry
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/MultipleRecnoNIODataEntry.html b/db/docs/java/com/sleepycat/db/class-use/MultipleRecnoNIODataEntry.html
index a6f25596c..a1d7a427c 100644
--- a/db/docs/java/com/sleepycat/db/class-use/MultipleRecnoNIODataEntry.html
+++ b/db/docs/java/com/sleepycat/db/class-use/MultipleRecnoNIODataEntry.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.MultipleRecnoNIODataEntry (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.MultipleRecnoNIODataEntry (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.MultipleRecnoNIODataEntry (Oracle Corporation - B
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.MultipleRecnoNIODataEntry (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.MultipleRecnoNIODataEntry (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -105,7 +105,7 @@ No usage of com.sleepycat.db.MultipleRecnoNIODataEntry
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -135,6 +135,6 @@ No usage of com.sleepycat.db.MultipleRecnoNIODataEntry
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/MutexStats.html b/db/docs/java/com/sleepycat/db/class-use/MutexStats.html
index 3995e5d78..48165b8ea 100644
--- a/db/docs/java/com/sleepycat/db/class-use/MutexStats.html
+++ b/db/docs/java/com/sleepycat/db/class-use/MutexStats.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.MutexStats (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.MutexStats (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.MutexStats (Oracle Corporation - Berkeley DB Java
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.MutexStats (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.MutexStats (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -142,7 +142,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/MutexStats.html" title="class in c
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -172,6 +172,6 @@ Uses of <A HREF="../../../../com/sleepycat/db/MutexStats.html" title="class in c
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/OperationStatus.html b/db/docs/java/com/sleepycat/db/class-use/OperationStatus.html
index 2d6d6f44f..7d6e94f78 100644
--- a/db/docs/java/com/sleepycat/db/class-use/OperationStatus.html
+++ b/db/docs/java/com/sleepycat/db/class-use/OperationStatus.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.OperationStatus (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.OperationStatus (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.OperationStatus (Oracle Corporation - Berkeley DB
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.OperationStatus (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.OperationStatus (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -192,6 +192,15 @@ the head of the queue, and delete the record.</TD>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../com/sleepycat/db/OperationStatus.html" title="class in com.sleepycat.db">OperationStatus</A></CODE></FONT></TD>
+<TD><CODE><B>Database.</B><B><A HREF="../../../../com/sleepycat/db/Database.html#exists(com.sleepycat.db.Transaction, com.sleepycat.db.DatabaseEntry)">exists</A></B>(<A HREF="../../../../com/sleepycat/db/Transaction.html" title="class in com.sleepycat.db">Transaction</A>&nbsp;txn,
+ <A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;key)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Checks if the specified key appears in the database.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/sleepycat/db/OperationStatus.html" title="class in com.sleepycat.db">OperationStatus</A></CODE></FONT></TD>
<TD><CODE><B>SecondaryDatabase.</B><B><A HREF="../../../../com/sleepycat/db/SecondaryDatabase.html#get(com.sleepycat.db.Transaction, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.LockMode)">get</A></B>(<A HREF="../../../../com/sleepycat/db/Transaction.html" title="class in com.sleepycat.db">Transaction</A>&nbsp;txn,
<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;key,
<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;pKey,
@@ -806,7 +815,7 @@ appear in the database.</TD>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -836,6 +845,6 @@ appear in the database.</TD>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/PanicHandler.html b/db/docs/java/com/sleepycat/db/class-use/PanicHandler.html
index 59cef3f61..7c0230cb3 100644
--- a/db/docs/java/com/sleepycat/db/class-use/PanicHandler.html
+++ b/db/docs/java/com/sleepycat/db/class-use/PanicHandler.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Interface com.sleepycat.db.PanicHandler (Oracle Corporation - Berkeley DB Java API)
+Uses of Interface com.sleepycat.db.PanicHandler (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Interface com.sleepycat.db.PanicHandler (Oracle Corporation - Berkeley D
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Interface com.sleepycat.db.PanicHandler (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Interface com.sleepycat.db.PanicHandler (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -174,7 +174,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/PanicHandler.html" title="interfac
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -204,6 +204,6 @@ Uses of <A HREF="../../../../com/sleepycat/db/PanicHandler.html" title="interfac
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/PreparedTransaction.html b/db/docs/java/com/sleepycat/db/class-use/PreparedTransaction.html
index 479173cb8..223aa5eaf 100644
--- a/db/docs/java/com/sleepycat/db/class-use/PreparedTransaction.html
+++ b/db/docs/java/com/sleepycat/db/class-use/PreparedTransaction.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.PreparedTransaction (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.PreparedTransaction (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.PreparedTransaction (Oracle Corporation - Berkele
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.PreparedTransaction (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.PreparedTransaction (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -143,7 +143,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/PreparedTransaction.html" title="c
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -173,6 +173,6 @@ Uses of <A HREF="../../../../com/sleepycat/db/PreparedTransaction.html" title="c
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/QueueStats.html b/db/docs/java/com/sleepycat/db/class-use/QueueStats.html
index 3afba16c8..3305b0895 100644
--- a/db/docs/java/com/sleepycat/db/class-use/QueueStats.html
+++ b/db/docs/java/com/sleepycat/db/class-use/QueueStats.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.QueueStats (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.QueueStats (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.QueueStats (Oracle Corporation - Berkeley DB Java
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.QueueStats (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.QueueStats (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -105,7 +105,7 @@ No usage of com.sleepycat.db.QueueStats
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -135,6 +135,6 @@ No usage of com.sleepycat.db.QueueStats
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/RecordNumberAppender.html b/db/docs/java/com/sleepycat/db/class-use/RecordNumberAppender.html
index 6d5577bef..fdafcebf3 100644
--- a/db/docs/java/com/sleepycat/db/class-use/RecordNumberAppender.html
+++ b/db/docs/java/com/sleepycat/db/class-use/RecordNumberAppender.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Interface com.sleepycat.db.RecordNumberAppender (Oracle Corporation - Berkeley DB Java API)
+Uses of Interface com.sleepycat.db.RecordNumberAppender (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Interface com.sleepycat.db.RecordNumberAppender (Oracle Corporation - Be
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Interface com.sleepycat.db.RecordNumberAppender (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Interface com.sleepycat.db.RecordNumberAppender (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -161,7 +161,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/RecordNumberAppender.html" title="
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -191,6 +191,6 @@ Uses of <A HREF="../../../../com/sleepycat/db/RecordNumberAppender.html" title="
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/RecoveryOperation.html b/db/docs/java/com/sleepycat/db/class-use/RecoveryOperation.html
index 274c0c47b..88cd3a5c9 100644
--- a/db/docs/java/com/sleepycat/db/class-use/RecoveryOperation.html
+++ b/db/docs/java/com/sleepycat/db/class-use/RecoveryOperation.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.RecoveryOperation (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.RecoveryOperation (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.RecoveryOperation (Oracle Corporation - Berkeley
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.RecoveryOperation (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.RecoveryOperation (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -216,7 +216,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/RecoveryOperation.html" title="cla
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -246,6 +246,6 @@ Uses of <A HREF="../../../../com/sleepycat/db/RecoveryOperation.html" title="cla
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/ReplicationConfig.html b/db/docs/java/com/sleepycat/db/class-use/ReplicationConfig.html
index 3a410a529..8238b7523 100644
--- a/db/docs/java/com/sleepycat/db/class-use/ReplicationConfig.html
+++ b/db/docs/java/com/sleepycat/db/class-use/ReplicationConfig.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.ReplicationConfig (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.ReplicationConfig (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.ReplicationConfig (Oracle Corporation - Berkeley
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.ReplicationConfig (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.ReplicationConfig (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -195,7 +195,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/ReplicationConfig.html" title="cla
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -225,6 +225,6 @@ Uses of <A HREF="../../../../com/sleepycat/db/ReplicationConfig.html" title="cla
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/ReplicationDuplicateMasterException.html b/db/docs/java/com/sleepycat/db/class-use/ReplicationDuplicateMasterException.html
index 4a7623ac7..42c6c6692 100644
--- a/db/docs/java/com/sleepycat/db/class-use/ReplicationDuplicateMasterException.html
+++ b/db/docs/java/com/sleepycat/db/class-use/ReplicationDuplicateMasterException.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.ReplicationDuplicateMasterException (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.ReplicationDuplicateMasterException (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.ReplicationDuplicateMasterException (Oracle Corpo
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.ReplicationDuplicateMasterException (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.ReplicationDuplicateMasterException (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -105,7 +105,7 @@ No usage of com.sleepycat.db.ReplicationDuplicateMasterException
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -135,6 +135,6 @@ No usage of com.sleepycat.db.ReplicationDuplicateMasterException
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/ReplicationHandleDeadException.html b/db/docs/java/com/sleepycat/db/class-use/ReplicationHandleDeadException.html
index 47322f02c..e30967a06 100644
--- a/db/docs/java/com/sleepycat/db/class-use/ReplicationHandleDeadException.html
+++ b/db/docs/java/com/sleepycat/db/class-use/ReplicationHandleDeadException.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.ReplicationHandleDeadException (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.ReplicationHandleDeadException (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.ReplicationHandleDeadException (Oracle Corporatio
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.ReplicationHandleDeadException (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.ReplicationHandleDeadException (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -105,7 +105,7 @@ No usage of com.sleepycat.db.ReplicationHandleDeadException
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -135,6 +135,6 @@ No usage of com.sleepycat.db.ReplicationHandleDeadException
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/ReplicationHoldElectionException.html b/db/docs/java/com/sleepycat/db/class-use/ReplicationHoldElectionException.html
index 3c95e9db0..bd0f7d1b1 100644
--- a/db/docs/java/com/sleepycat/db/class-use/ReplicationHoldElectionException.html
+++ b/db/docs/java/com/sleepycat/db/class-use/ReplicationHoldElectionException.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.ReplicationHoldElectionException (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.ReplicationHoldElectionException (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.ReplicationHoldElectionException (Oracle Corporat
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.ReplicationHoldElectionException (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.ReplicationHoldElectionException (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -105,7 +105,7 @@ No usage of com.sleepycat.db.ReplicationHoldElectionException
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -135,6 +135,6 @@ No usage of com.sleepycat.db.ReplicationHoldElectionException
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/ReplicationHostAddress.html b/db/docs/java/com/sleepycat/db/class-use/ReplicationHostAddress.html
index 53f639f3e..ff91cdf65 100644
--- a/db/docs/java/com/sleepycat/db/class-use/ReplicationHostAddress.html
+++ b/db/docs/java/com/sleepycat/db/class-use/ReplicationHostAddress.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.ReplicationHostAddress (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.ReplicationHostAddress (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.ReplicationHostAddress (Oracle Corporation - Berk
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.ReplicationHostAddress (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.ReplicationHostAddress (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -167,7 +167,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/ReplicationHostAddress.html" title
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -197,6 +197,6 @@ Uses of <A HREF="../../../../com/sleepycat/db/ReplicationHostAddress.html" title
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/ReplicationJoinFailureException.html b/db/docs/java/com/sleepycat/db/class-use/ReplicationJoinFailureException.html
index 67640a747..9e380816e 100644
--- a/db/docs/java/com/sleepycat/db/class-use/ReplicationJoinFailureException.html
+++ b/db/docs/java/com/sleepycat/db/class-use/ReplicationJoinFailureException.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.ReplicationJoinFailureException (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.ReplicationJoinFailureException (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.ReplicationJoinFailureException (Oracle Corporati
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.ReplicationJoinFailureException (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.ReplicationJoinFailureException (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -105,7 +105,7 @@ No usage of com.sleepycat.db.ReplicationJoinFailureException
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -135,6 +135,6 @@ No usage of com.sleepycat.db.ReplicationJoinFailureException
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/ReplicationLeaseExpiredException.html b/db/docs/java/com/sleepycat/db/class-use/ReplicationLeaseExpiredException.html
new file mode 100644
index 000000000..c935bbeeb
--- /dev/null
+++ b/db/docs/java/com/sleepycat/db/class-use/ReplicationLeaseExpiredException.html
@@ -0,0 +1,140 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
+<TITLE>
+Uses of Class com.sleepycat.db.ReplicationLeaseExpiredException (Oracle - Berkeley DB Java API)
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../style.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+ parent.document.title="Uses of Class com.sleepycat.db.ReplicationLeaseExpiredException (Oracle - Berkeley DB Java API)";
+}
+</SCRIPT>
+<NOSCRIPT>
+</NOSCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+ <TR ALIGN="center" VALIGN="top">
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../com/sleepycat/db/ReplicationLeaseExpiredException.html" title="class in com.sleepycat.db"><FONT CLASS="NavBarFont1"><B>Class</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Use</B></FONT>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+ </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ <A HREF="../../../../index.html?com/sleepycat/db//class-useReplicationLeaseExpiredException.html" target="_top"><B>FRAMES</B></A> &nbsp;
+&nbsp;<A HREF="ReplicationLeaseExpiredException.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+ <!--
+ if(window==top) {
+ document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+ }
+ //-->
+</SCRIPT>
+<NOSCRIPT>
+ <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+<B>Uses of Class<br>com.sleepycat.db.ReplicationLeaseExpiredException</B></H2>
+</CENTER>
+No usage of com.sleepycat.db.ReplicationLeaseExpiredException
+<P>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+ <TR ALIGN="center" VALIGN="top">
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../com/sleepycat/db/ReplicationLeaseExpiredException.html" title="class in com.sleepycat.db"><FONT CLASS="NavBarFont1"><B>Class</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Use</B></FONT>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+ </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ <A HREF="../../../../index.html?com/sleepycat/db//class-useReplicationLeaseExpiredException.html" target="_top"><B>FRAMES</B></A> &nbsp;
+&nbsp;<A HREF="ReplicationLeaseExpiredException.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+ <!--
+ if(window==top) {
+ document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+ }
+ //-->
+</SCRIPT>
+<NOSCRIPT>
+ <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
+</BODY>
+</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/ReplicationLeaseTimeoutException.html b/db/docs/java/com/sleepycat/db/class-use/ReplicationLeaseTimeoutException.html
new file mode 100644
index 000000000..4d7164b75
--- /dev/null
+++ b/db/docs/java/com/sleepycat/db/class-use/ReplicationLeaseTimeoutException.html
@@ -0,0 +1,140 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
+<TITLE>
+Uses of Class com.sleepycat.db.ReplicationLeaseTimeoutException (Oracle - Berkeley DB Java API)
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../style.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+ parent.document.title="Uses of Class com.sleepycat.db.ReplicationLeaseTimeoutException (Oracle - Berkeley DB Java API)";
+}
+</SCRIPT>
+<NOSCRIPT>
+</NOSCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+ <TR ALIGN="center" VALIGN="top">
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../com/sleepycat/db/ReplicationLeaseTimeoutException.html" title="class in com.sleepycat.db"><FONT CLASS="NavBarFont1"><B>Class</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Use</B></FONT>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+ </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ <A HREF="../../../../index.html?com/sleepycat/db//class-useReplicationLeaseTimeoutException.html" target="_top"><B>FRAMES</B></A> &nbsp;
+&nbsp;<A HREF="ReplicationLeaseTimeoutException.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+ <!--
+ if(window==top) {
+ document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+ }
+ //-->
+</SCRIPT>
+<NOSCRIPT>
+ <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+<B>Uses of Class<br>com.sleepycat.db.ReplicationLeaseTimeoutException</B></H2>
+</CENTER>
+No usage of com.sleepycat.db.ReplicationLeaseTimeoutException
+<P>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+ <TR ALIGN="center" VALIGN="top">
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../com/sleepycat/db/ReplicationLeaseTimeoutException.html" title="class in com.sleepycat.db"><FONT CLASS="NavBarFont1"><B>Class</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Use</B></FONT>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+ </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ <A HREF="../../../../index.html?com/sleepycat/db//class-useReplicationLeaseTimeoutException.html" target="_top"><B>FRAMES</B></A> &nbsp;
+&nbsp;<A HREF="ReplicationLeaseTimeoutException.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+ <!--
+ if(window==top) {
+ document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+ }
+ //-->
+</SCRIPT>
+<NOSCRIPT>
+ <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
+</BODY>
+</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/ReplicationLockoutException.html b/db/docs/java/com/sleepycat/db/class-use/ReplicationLockoutException.html
index a69c56640..7b2982774 100644
--- a/db/docs/java/com/sleepycat/db/class-use/ReplicationLockoutException.html
+++ b/db/docs/java/com/sleepycat/db/class-use/ReplicationLockoutException.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.ReplicationLockoutException (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.ReplicationLockoutException (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.ReplicationLockoutException (Oracle Corporation -
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.ReplicationLockoutException (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.ReplicationLockoutException (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -105,7 +105,7 @@ No usage of com.sleepycat.db.ReplicationLockoutException
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -135,6 +135,6 @@ No usage of com.sleepycat.db.ReplicationLockoutException
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/ReplicationManagerAckPolicy.html b/db/docs/java/com/sleepycat/db/class-use/ReplicationManagerAckPolicy.html
index 74c464a51..1d5162e32 100644
--- a/db/docs/java/com/sleepycat/db/class-use/ReplicationManagerAckPolicy.html
+++ b/db/docs/java/com/sleepycat/db/class-use/ReplicationManagerAckPolicy.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:48 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.ReplicationManagerAckPolicy (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.ReplicationManagerAckPolicy (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.ReplicationManagerAckPolicy (Oracle Corporation -
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.ReplicationManagerAckPolicy (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.ReplicationManagerAckPolicy (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -226,7 +226,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/ReplicationManagerAckPolicy.html"
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -256,6 +256,6 @@ Uses of <A HREF="../../../../com/sleepycat/db/ReplicationManagerAckPolicy.html"
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/ReplicationManagerStartPolicy.html b/db/docs/java/com/sleepycat/db/class-use/ReplicationManagerStartPolicy.html
index a3883cb94..dd30165f7 100644
--- a/db/docs/java/com/sleepycat/db/class-use/ReplicationManagerStartPolicy.html
+++ b/db/docs/java/com/sleepycat/db/class-use/ReplicationManagerStartPolicy.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:48 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.ReplicationManagerStartPolicy (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.ReplicationManagerStartPolicy (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.ReplicationManagerStartPolicy (Oracle Corporation
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.ReplicationManagerStartPolicy (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.ReplicationManagerStartPolicy (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -126,14 +126,6 @@ Uses of <A HREF="../../../../com/sleepycat/db/ReplicationManagerStartPolicy.html
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;<A HREF="../../../../com/sleepycat/db/ReplicationManagerStartPolicy.html" title="class in com.sleepycat.db">ReplicationManagerStartPolicy</A></CODE></FONT></TD>
-<TD><CODE><B>ReplicationManagerStartPolicy.</B><B><A HREF="../../../../com/sleepycat/db/ReplicationManagerStartPolicy.html#REP_FULL_ELECTION">REP_FULL_ELECTION</A></B></CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Start as a client, and call for an election if no master is found.</TD>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>static&nbsp;<A HREF="../../../../com/sleepycat/db/ReplicationManagerStartPolicy.html" title="class in com.sleepycat.db">ReplicationManagerStartPolicy</A></CODE></FONT></TD>
<TD><CODE><B>ReplicationManagerStartPolicy.</B><B><A HREF="../../../../com/sleepycat/db/ReplicationManagerStartPolicy.html#REP_MASTER">REP_MASTER</A></B></CODE>
<BR>
@@ -183,7 +175,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/ReplicationManagerStartPolicy.html
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -213,6 +205,6 @@ Uses of <A HREF="../../../../com/sleepycat/db/ReplicationManagerStartPolicy.html
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/ReplicationManagerStats.html b/db/docs/java/com/sleepycat/db/class-use/ReplicationManagerStats.html
new file mode 100644
index 000000000..afc9e6d6f
--- /dev/null
+++ b/db/docs/java/com/sleepycat/db/class-use/ReplicationManagerStats.html
@@ -0,0 +1,177 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
+<TITLE>
+Uses of Class com.sleepycat.db.ReplicationManagerStats (Oracle - Berkeley DB Java API)
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../style.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+ parent.document.title="Uses of Class com.sleepycat.db.ReplicationManagerStats (Oracle - Berkeley DB Java API)";
+}
+</SCRIPT>
+<NOSCRIPT>
+</NOSCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+ <TR ALIGN="center" VALIGN="top">
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../com/sleepycat/db/ReplicationManagerStats.html" title="class in com.sleepycat.db"><FONT CLASS="NavBarFont1"><B>Class</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Use</B></FONT>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+ </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ <A HREF="../../../../index.html?com/sleepycat/db//class-useReplicationManagerStats.html" target="_top"><B>FRAMES</B></A> &nbsp;
+&nbsp;<A HREF="ReplicationManagerStats.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+ <!--
+ if(window==top) {
+ document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+ }
+ //-->
+</SCRIPT>
+<NOSCRIPT>
+ <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+<B>Uses of Class<br>com.sleepycat.db.ReplicationManagerStats</B></H2>
+</CENTER>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+Packages that use <A HREF="../../../../com/sleepycat/db/ReplicationManagerStats.html" title="class in com.sleepycat.db">ReplicationManagerStats</A></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><A HREF="#com.sleepycat.db"><B>com.sleepycat.db</B></A></TD>
+<TD>Berkeley DB Java API<br>
+<a href="../../../../../ref/toc.html" target="_top">[reference guide]</a> <a href="../../../../../ref/java/program.html" target="_top">[Java programming notes]</a>.&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+<A NAME="com.sleepycat.db"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+Uses of <A HREF="../../../../com/sleepycat/db/ReplicationManagerStats.html" title="class in com.sleepycat.db">ReplicationManagerStats</A> in <A HREF="../../../../com/sleepycat/db/package-summary.html">com.sleepycat.db</A></FONT></TH>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left" COLSPAN="2">Methods in <A HREF="../../../../com/sleepycat/db/package-summary.html">com.sleepycat.db</A> that return <A HREF="../../../../com/sleepycat/db/ReplicationManagerStats.html" title="class in com.sleepycat.db">ReplicationManagerStats</A></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/sleepycat/db/ReplicationManagerStats.html" title="class in com.sleepycat.db">ReplicationManagerStats</A></CODE></FONT></TD>
+<TD><CODE><B>Environment.</B><B><A HREF="../../../../com/sleepycat/db/Environment.html#getReplicationManagerStats(com.sleepycat.db.StatsConfig)">getReplicationManagerStats</A></B>(<A HREF="../../../../com/sleepycat/db/StatsConfig.html" title="class in com.sleepycat.db">StatsConfig</A>&nbsp;config)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the database environment's replication manager statistics.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+ <TR ALIGN="center" VALIGN="top">
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../com/sleepycat/db/ReplicationManagerStats.html" title="class in com.sleepycat.db"><FONT CLASS="NavBarFont1"><B>Class</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Use</B></FONT>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+ </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ <A HREF="../../../../index.html?com/sleepycat/db//class-useReplicationManagerStats.html" target="_top"><B>FRAMES</B></A> &nbsp;
+&nbsp;<A HREF="ReplicationManagerStats.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+ <!--
+ if(window==top) {
+ document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+ }
+ //-->
+</SCRIPT>
+<NOSCRIPT>
+ <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
+</BODY>
+</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/ReplicationSiteUnavailableException.html b/db/docs/java/com/sleepycat/db/class-use/ReplicationSiteUnavailableException.html
index 548872f35..cdf3596b0 100644
--- a/db/docs/java/com/sleepycat/db/class-use/ReplicationSiteUnavailableException.html
+++ b/db/docs/java/com/sleepycat/db/class-use/ReplicationSiteUnavailableException.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:48 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.ReplicationSiteUnavailableException (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.ReplicationSiteUnavailableException (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.ReplicationSiteUnavailableException (Oracle Corpo
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.ReplicationSiteUnavailableException (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.ReplicationSiteUnavailableException (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -105,7 +105,7 @@ No usage of com.sleepycat.db.ReplicationSiteUnavailableException
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -135,6 +135,6 @@ No usage of com.sleepycat.db.ReplicationSiteUnavailableException
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/ReplicationStats.html b/db/docs/java/com/sleepycat/db/class-use/ReplicationStats.html
index b927ea8dd..697ef486e 100644
--- a/db/docs/java/com/sleepycat/db/class-use/ReplicationStats.html
+++ b/db/docs/java/com/sleepycat/db/class-use/ReplicationStats.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:48 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.ReplicationStats (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.ReplicationStats (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.ReplicationStats (Oracle Corporation - Berkeley D
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.ReplicationStats (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.ReplicationStats (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -142,7 +142,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/ReplicationStats.html" title="clas
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -172,6 +172,6 @@ Uses of <A HREF="../../../../com/sleepycat/db/ReplicationStats.html" title="clas
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/ReplicationStatus.html b/db/docs/java/com/sleepycat/db/class-use/ReplicationStatus.html
index 3293fd23d..b39093835 100644
--- a/db/docs/java/com/sleepycat/db/class-use/ReplicationStatus.html
+++ b/db/docs/java/com/sleepycat/db/class-use/ReplicationStatus.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:48 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.ReplicationStatus (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.ReplicationStatus (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.ReplicationStatus (Oracle Corporation - Berkeley
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.ReplicationStatus (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.ReplicationStatus (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -145,7 +145,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/ReplicationStatus.html" title="cla
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -175,6 +175,6 @@ Uses of <A HREF="../../../../com/sleepycat/db/ReplicationStatus.html" title="cla
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/ReplicationTimeoutType.html b/db/docs/java/com/sleepycat/db/class-use/ReplicationTimeoutType.html
index 900f22375..91673f76c 100644
--- a/db/docs/java/com/sleepycat/db/class-use/ReplicationTimeoutType.html
+++ b/db/docs/java/com/sleepycat/db/class-use/ReplicationTimeoutType.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:48 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.ReplicationTimeoutType (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.ReplicationTimeoutType (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.ReplicationTimeoutType (Oracle Corporation - Berk
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.ReplicationTimeoutType (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.ReplicationTimeoutType (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -120,6 +120,15 @@ Uses of <A HREF="../../../../com/sleepycat/db/ReplicationTimeoutType.html" title
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;<A HREF="../../../../com/sleepycat/db/ReplicationTimeoutType.html" title="class in com.sleepycat.db">ReplicationTimeoutType</A></CODE></FONT></TD>
+<TD><CODE><B>ReplicationTimeoutType.</B><B><A HREF="../../../../com/sleepycat/db/ReplicationTimeoutType.html#CHECKPOINT_DELAY">CHECKPOINT_DELAY</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Configure the amount of time the replication manager will delay between
+ completing a checkpoint and writing a checkpoint record into the log.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../com/sleepycat/db/ReplicationTimeoutType.html" title="class in com.sleepycat.db">ReplicationTimeoutType</A></CODE></FONT></TD>
<TD><CODE><B>ReplicationTimeoutType.</B><B><A HREF="../../../../com/sleepycat/db/ReplicationTimeoutType.html#CONNECTION_RETRY">CONNECTION_RETRY</A></B></CODE>
<BR>
@@ -144,6 +153,15 @@ Uses of <A HREF="../../../../com/sleepycat/db/ReplicationTimeoutType.html" title
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The timeout period for an election.</TD>
</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../com/sleepycat/db/ReplicationTimeoutType.html" title="class in com.sleepycat.db">ReplicationTimeoutType</A></CODE></FONT></TD>
+<TD><CODE><B>ReplicationTimeoutType.</B><B><A HREF="../../../../com/sleepycat/db/ReplicationTimeoutType.html#FULL_ELECTION_TIMEOUT">FULL_ELECTION_TIMEOUT</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;An optional configuration timeout period to wait for full election
+ participation the first time the replication group finds a master.</TD>
+</TR>
</TABLE>
&nbsp;
<P>
@@ -196,7 +214,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/ReplicationTimeoutType.html" title
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -226,6 +244,6 @@ Uses of <A HREF="../../../../com/sleepycat/db/ReplicationTimeoutType.html" title
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/ReplicationTransport.html b/db/docs/java/com/sleepycat/db/class-use/ReplicationTransport.html
index 406f3be0d..ee1c0bbb0 100644
--- a/db/docs/java/com/sleepycat/db/class-use/ReplicationTransport.html
+++ b/db/docs/java/com/sleepycat/db/class-use/ReplicationTransport.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:48 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Interface com.sleepycat.db.ReplicationTransport (Oracle Corporation - Berkeley DB Java API)
+Uses of Interface com.sleepycat.db.ReplicationTransport (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Interface com.sleepycat.db.ReplicationTransport (Oracle Corporation - Be
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Interface com.sleepycat.db.ReplicationTransport (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Interface com.sleepycat.db.ReplicationTransport (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -161,7 +161,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/ReplicationTransport.html" title="
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -191,6 +191,6 @@ Uses of <A HREF="../../../../com/sleepycat/db/ReplicationTransport.html" title="
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/RunRecoveryException.html b/db/docs/java/com/sleepycat/db/class-use/RunRecoveryException.html
index ab0dd886e..2367d5888 100644
--- a/db/docs/java/com/sleepycat/db/class-use/RunRecoveryException.html
+++ b/db/docs/java/com/sleepycat/db/class-use/RunRecoveryException.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:48 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.RunRecoveryException (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.RunRecoveryException (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.RunRecoveryException (Oracle Corporation - Berkel
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.RunRecoveryException (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.RunRecoveryException (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -105,7 +105,7 @@ No usage of com.sleepycat.db.RunRecoveryException
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -135,6 +135,6 @@ No usage of com.sleepycat.db.RunRecoveryException
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/SecondaryConfig.html b/db/docs/java/com/sleepycat/db/class-use/SecondaryConfig.html
index 79d981f64..d2c28d267 100644
--- a/db/docs/java/com/sleepycat/db/class-use/SecondaryConfig.html
+++ b/db/docs/java/com/sleepycat/db/class-use/SecondaryConfig.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:48 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.SecondaryConfig (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.SecondaryConfig (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.SecondaryConfig (Oracle Corporation - Berkeley DB
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.SecondaryConfig (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.SecondaryConfig (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -143,8 +143,8 @@ Uses of <A HREF="../../../../com/sleepycat/db/SecondaryConfig.html" title="class
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../com/sleepycat/db/SecondaryDatabase.html" title="class in com.sleepycat.db">SecondaryDatabase</A></CODE></FONT></TD>
<TD><CODE><B>Environment.</B><B><A HREF="../../../../com/sleepycat/db/Environment.html#openSecondaryDatabase(com.sleepycat.db.Transaction, java.lang.String, java.lang.String, com.sleepycat.db.Database, com.sleepycat.db.SecondaryConfig)">openSecondaryDatabase</A></B>(<A HREF="../../../../com/sleepycat/db/Transaction.html" title="class in com.sleepycat.db">Transaction</A>&nbsp;txn,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
<A HREF="../../../../com/sleepycat/db/Database.html" title="class in com.sleepycat.db">Database</A>&nbsp;primaryDatabase,
<A HREF="../../../../com/sleepycat/db/SecondaryConfig.html" title="class in com.sleepycat.db">SecondaryConfig</A>&nbsp;config)</CODE>
@@ -160,8 +160,8 @@ Uses of <A HREF="../../../../com/sleepycat/db/SecondaryConfig.html" title="class
<TH ALIGN="left" COLSPAN="2">Constructors in <A HREF="../../../../com/sleepycat/db/package-summary.html">com.sleepycat.db</A> with parameters of type <A HREF="../../../../com/sleepycat/db/SecondaryConfig.html" title="class in com.sleepycat.db">SecondaryConfig</A></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><B><A HREF="../../../../com/sleepycat/db/SecondaryDatabase.html#SecondaryDatabase(java.lang.String, java.lang.String, com.sleepycat.db.Database, com.sleepycat.db.SecondaryConfig)">SecondaryDatabase</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
+<TD><CODE><B><A HREF="../../../../com/sleepycat/db/SecondaryDatabase.html#SecondaryDatabase(java.lang.String, java.lang.String, com.sleepycat.db.Database, com.sleepycat.db.SecondaryConfig)">SecondaryDatabase</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
<A HREF="../../../../com/sleepycat/db/Database.html" title="class in com.sleepycat.db">Database</A>&nbsp;primaryDatabase,
<A HREF="../../../../com/sleepycat/db/SecondaryConfig.html" title="class in com.sleepycat.db">SecondaryConfig</A>&nbsp;config)</CODE>
@@ -195,7 +195,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/SecondaryConfig.html" title="class
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -225,6 +225,6 @@ Uses of <A HREF="../../../../com/sleepycat/db/SecondaryConfig.html" title="class
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/SecondaryCursor.html b/db/docs/java/com/sleepycat/db/class-use/SecondaryCursor.html
index 650e77da1..a63a3cafe 100644
--- a/db/docs/java/com/sleepycat/db/class-use/SecondaryCursor.html
+++ b/db/docs/java/com/sleepycat/db/class-use/SecondaryCursor.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:48 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.SecondaryCursor (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.SecondaryCursor (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.SecondaryCursor (Oracle Corporation - Berkeley DB
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.SecondaryCursor (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.SecondaryCursor (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -151,7 +151,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/SecondaryCursor.html" title="class
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -181,6 +181,6 @@ Uses of <A HREF="../../../../com/sleepycat/db/SecondaryCursor.html" title="class
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/SecondaryDatabase.html b/db/docs/java/com/sleepycat/db/class-use/SecondaryDatabase.html
index 1b2a6ad3f..646148eb2 100644
--- a/db/docs/java/com/sleepycat/db/class-use/SecondaryDatabase.html
+++ b/db/docs/java/com/sleepycat/db/class-use/SecondaryDatabase.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:48 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.SecondaryDatabase (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.SecondaryDatabase (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.SecondaryDatabase (Oracle Corporation - Berkeley
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.SecondaryDatabase (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.SecondaryDatabase (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -221,8 +221,8 @@ Uses of <A HREF="../../../../com/sleepycat/db/SecondaryDatabase.html" title="cla
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../com/sleepycat/db/SecondaryDatabase.html" title="class in com.sleepycat.db">SecondaryDatabase</A></CODE></FONT></TD>
<TD><CODE><B>Environment.</B><B><A HREF="../../../../com/sleepycat/db/Environment.html#openSecondaryDatabase(com.sleepycat.db.Transaction, java.lang.String, java.lang.String, com.sleepycat.db.Database, com.sleepycat.db.SecondaryConfig)">openSecondaryDatabase</A></B>(<A HREF="../../../../com/sleepycat/db/Transaction.html" title="class in com.sleepycat.db">Transaction</A>&nbsp;txn,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
<A HREF="../../../../com/sleepycat/db/Database.html" title="class in com.sleepycat.db">Database</A>&nbsp;primaryDatabase,
<A HREF="../../../../com/sleepycat/db/SecondaryConfig.html" title="class in com.sleepycat.db">SecondaryConfig</A>&nbsp;config)</CODE>
@@ -248,6 +248,17 @@ Uses of <A HREF="../../../../com/sleepycat/db/SecondaryDatabase.html" title="cla
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a secondary key entry, given a primary key and data entry.</TD>
</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B>SecondaryMultiKeyCreator.</B><B><A HREF="../../../../com/sleepycat/db/SecondaryMultiKeyCreator.html#createSecondaryKeys(com.sleepycat.db.SecondaryDatabase, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, java.util.Set)">createSecondaryKeys</A></B>(<A HREF="../../../../com/sleepycat/db/SecondaryDatabase.html" title="class in com.sleepycat.db">SecondaryDatabase</A>&nbsp;secondary,
+ <A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;key,
+ <A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;data,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A>&nbsp;results)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a secondary key entry, given a primary key and data entry.</TD>
+</TR>
</TABLE>
&nbsp;
<P>
@@ -275,7 +286,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/SecondaryDatabase.html" title="cla
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -305,6 +316,6 @@ Uses of <A HREF="../../../../com/sleepycat/db/SecondaryDatabase.html" title="cla
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/SecondaryKeyCreator.html b/db/docs/java/com/sleepycat/db/class-use/SecondaryKeyCreator.html
index a7ab65854..b394ca3a5 100644
--- a/db/docs/java/com/sleepycat/db/class-use/SecondaryKeyCreator.html
+++ b/db/docs/java/com/sleepycat/db/class-use/SecondaryKeyCreator.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:48 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Interface com.sleepycat.db.SecondaryKeyCreator (Oracle Corporation - Berkeley DB Java API)
+Uses of Interface com.sleepycat.db.SecondaryKeyCreator (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Interface com.sleepycat.db.SecondaryKeyCreator (Oracle Corporation - Ber
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Interface com.sleepycat.db.SecondaryKeyCreator (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Interface com.sleepycat.db.SecondaryKeyCreator (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -242,7 +242,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/SecondaryKeyCreator.html" title="i
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -272,6 +272,6 @@ Uses of <A HREF="../../../../com/sleepycat/db/SecondaryKeyCreator.html" title="i
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/SecondaryMultiKeyCreator.html b/db/docs/java/com/sleepycat/db/class-use/SecondaryMultiKeyCreator.html
new file mode 100644
index 000000000..b0510fac9
--- /dev/null
+++ b/db/docs/java/com/sleepycat/db/class-use/SecondaryMultiKeyCreator.html
@@ -0,0 +1,195 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
+<TITLE>
+Uses of Interface com.sleepycat.db.SecondaryMultiKeyCreator (Oracle - Berkeley DB Java API)
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../style.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+ parent.document.title="Uses of Interface com.sleepycat.db.SecondaryMultiKeyCreator (Oracle - Berkeley DB Java API)";
+}
+</SCRIPT>
+<NOSCRIPT>
+</NOSCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+ <TR ALIGN="center" VALIGN="top">
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../com/sleepycat/db/SecondaryMultiKeyCreator.html" title="interface in com.sleepycat.db"><FONT CLASS="NavBarFont1"><B>Class</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Use</B></FONT>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+ </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ <A HREF="../../../../index.html?com/sleepycat/db//class-useSecondaryMultiKeyCreator.html" target="_top"><B>FRAMES</B></A> &nbsp;
+&nbsp;<A HREF="SecondaryMultiKeyCreator.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+ <!--
+ if(window==top) {
+ document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+ }
+ //-->
+</SCRIPT>
+<NOSCRIPT>
+ <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+<B>Uses of Interface<br>com.sleepycat.db.SecondaryMultiKeyCreator</B></H2>
+</CENTER>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+Packages that use <A HREF="../../../../com/sleepycat/db/SecondaryMultiKeyCreator.html" title="interface in com.sleepycat.db">SecondaryMultiKeyCreator</A></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><A HREF="#com.sleepycat.db"><B>com.sleepycat.db</B></A></TD>
+<TD>Berkeley DB Java API<br>
+<a href="../../../../../ref/toc.html" target="_top">[reference guide]</a> <a href="../../../../../ref/java/program.html" target="_top">[Java programming notes]</a>.&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+<A NAME="com.sleepycat.db"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+Uses of <A HREF="../../../../com/sleepycat/db/SecondaryMultiKeyCreator.html" title="interface in com.sleepycat.db">SecondaryMultiKeyCreator</A> in <A HREF="../../../../com/sleepycat/db/package-summary.html">com.sleepycat.db</A></FONT></TH>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left" COLSPAN="2">Methods in <A HREF="../../../../com/sleepycat/db/package-summary.html">com.sleepycat.db</A> that return <A HREF="../../../../com/sleepycat/db/SecondaryMultiKeyCreator.html" title="interface in com.sleepycat.db">SecondaryMultiKeyCreator</A></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/sleepycat/db/SecondaryMultiKeyCreator.html" title="interface in com.sleepycat.db">SecondaryMultiKeyCreator</A></CODE></FONT></TD>
+<TD><CODE><B>SecondaryConfig.</B><B><A HREF="../../../../com/sleepycat/db/SecondaryConfig.html#getMultiKeyCreator()">getMultiKeyCreator</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the user-supplied object used for creating multi-valued secondary
+ keys.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left" COLSPAN="2">Methods in <A HREF="../../../../com/sleepycat/db/package-summary.html">com.sleepycat.db</A> with parameters of type <A HREF="../../../../com/sleepycat/db/SecondaryMultiKeyCreator.html" title="interface in com.sleepycat.db">SecondaryMultiKeyCreator</A></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B>SecondaryConfig.</B><B><A HREF="../../../../com/sleepycat/db/SecondaryConfig.html#setMultiKeyCreator(com.sleepycat.db.SecondaryMultiKeyCreator)">setMultiKeyCreator</A></B>(<A HREF="../../../../com/sleepycat/db/SecondaryMultiKeyCreator.html" title="interface in com.sleepycat.db">SecondaryMultiKeyCreator</A>&nbsp;keyCreator)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Specifies the user-supplied object used for creating multi-valued
+ secondary keys.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+ <TR ALIGN="center" VALIGN="top">
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../com/sleepycat/db/SecondaryMultiKeyCreator.html" title="interface in com.sleepycat.db"><FONT CLASS="NavBarFont1"><B>Class</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Use</B></FONT>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+ </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ <A HREF="../../../../index.html?com/sleepycat/db//class-useSecondaryMultiKeyCreator.html" target="_top"><B>FRAMES</B></A> &nbsp;
+&nbsp;<A HREF="SecondaryMultiKeyCreator.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+ <!--
+ if(window==top) {
+ document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+ }
+ //-->
+</SCRIPT>
+<NOSCRIPT>
+ <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
+</BODY>
+</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/Sequence.html b/db/docs/java/com/sleepycat/db/class-use/Sequence.html
index c9142f5e2..bac797128 100644
--- a/db/docs/java/com/sleepycat/db/class-use/Sequence.html
+++ b/db/docs/java/com/sleepycat/db/class-use/Sequence.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:48 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.Sequence (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.Sequence (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.Sequence (Oracle Corporation - Berkeley DB Java A
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.Sequence (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.Sequence (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -144,7 +144,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/Sequence.html" title="class in com
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -174,6 +174,6 @@ Uses of <A HREF="../../../../com/sleepycat/db/Sequence.html" title="class in com
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/SequenceConfig.html b/db/docs/java/com/sleepycat/db/class-use/SequenceConfig.html
index 501d202e4..69a9ab03c 100644
--- a/db/docs/java/com/sleepycat/db/class-use/SequenceConfig.html
+++ b/db/docs/java/com/sleepycat/db/class-use/SequenceConfig.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:48 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.SequenceConfig (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.SequenceConfig (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.SequenceConfig (Oracle Corporation - Berkeley DB
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.SequenceConfig (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.SequenceConfig (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -171,7 +171,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/SequenceConfig.html" title="class
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -201,6 +201,6 @@ Uses of <A HREF="../../../../com/sleepycat/db/SequenceConfig.html" title="class
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/SequenceStats.html b/db/docs/java/com/sleepycat/db/class-use/SequenceStats.html
index 9df4a7706..d0f801085 100644
--- a/db/docs/java/com/sleepycat/db/class-use/SequenceStats.html
+++ b/db/docs/java/com/sleepycat/db/class-use/SequenceStats.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:48 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.SequenceStats (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.SequenceStats (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.SequenceStats (Oracle Corporation - Berkeley DB J
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.SequenceStats (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.SequenceStats (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -142,7 +142,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/SequenceStats.html" title="class i
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -172,6 +172,6 @@ Uses of <A HREF="../../../../com/sleepycat/db/SequenceStats.html" title="class i
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/StatsConfig.html b/db/docs/java/com/sleepycat/db/class-use/StatsConfig.html
index dfade837c..90291e955 100644
--- a/db/docs/java/com/sleepycat/db/class-use/StatsConfig.html
+++ b/db/docs/java/com/sleepycat/db/class-use/StatsConfig.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:48 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.StatsConfig (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.StatsConfig (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.StatsConfig (Oracle Corporation - Berkeley DB Jav
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.StatsConfig (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.StatsConfig (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -166,6 +166,14 @@ Uses of <A HREF="../../../../com/sleepycat/db/StatsConfig.html" title="class in
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/sleepycat/db/ReplicationManagerStats.html" title="class in com.sleepycat.db">ReplicationManagerStats</A></CODE></FONT></TD>
+<TD><CODE><B>Environment.</B><B><A HREF="../../../../com/sleepycat/db/Environment.html#getReplicationManagerStats(com.sleepycat.db.StatsConfig)">getReplicationManagerStats</A></B>(<A HREF="../../../../com/sleepycat/db/StatsConfig.html" title="class in com.sleepycat.db">StatsConfig</A>&nbsp;config)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the database environment's replication manager statistics.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../com/sleepycat/db/ReplicationStats.html" title="class in com.sleepycat.db">ReplicationStats</A></CODE></FONT></TD>
<TD><CODE><B>Environment.</B><B><A HREF="../../../../com/sleepycat/db/Environment.html#getReplicationStats(com.sleepycat.db.StatsConfig)">getReplicationStats</A></B>(<A HREF="../../../../com/sleepycat/db/StatsConfig.html" title="class in com.sleepycat.db">StatsConfig</A>&nbsp;config)</CODE>
@@ -224,7 +232,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/StatsConfig.html" title="class in
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -254,6 +262,6 @@ Uses of <A HREF="../../../../com/sleepycat/db/StatsConfig.html" title="class in
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/Transaction.html b/db/docs/java/com/sleepycat/db/class-use/Transaction.html
index bcae82b98..41cbb13cf 100644
--- a/db/docs/java/com/sleepycat/db/class-use/Transaction.html
+++ b/db/docs/java/com/sleepycat/db/class-use/Transaction.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:48 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.Transaction (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.Transaction (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.Transaction (Oracle Corporation - Berkeley DB Jav
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.Transaction (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.Transaction (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -169,6 +169,15 @@ Uses of <A HREF="../../../../com/sleepycat/db/Transaction.html" title="class in
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../com/sleepycat/db/Transaction.html" title="class in com.sleepycat.db">Transaction</A></CODE></FONT></TD>
+<TD><CODE><B>Environment.</B><B><A HREF="../../../../com/sleepycat/db/Environment.html#beginCDSGroup()">beginCDSGroup</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Allocate a locker ID in an environment configured for Berkeley DB
+ Concurrent Data Store applications.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/sleepycat/db/Transaction.html" title="class in com.sleepycat.db">Transaction</A></CODE></FONT></TD>
<TD><CODE><B>Environment.</B><B><A HREF="../../../../com/sleepycat/db/Environment.html#beginTransaction(com.sleepycat.db.Transaction, com.sleepycat.db.TransactionConfig)">beginTransaction</A></B>(<A HREF="../../../../com/sleepycat/db/Transaction.html" title="class in com.sleepycat.db">Transaction</A>&nbsp;parent,
<A HREF="../../../../com/sleepycat/db/TransactionConfig.html" title="class in com.sleepycat.db">TransactionConfig</A>&nbsp;txnConfig)</CODE>
@@ -248,6 +257,15 @@ the head of the queue, and delete the record.</TD>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../com/sleepycat/db/OperationStatus.html" title="class in com.sleepycat.db">OperationStatus</A></CODE></FONT></TD>
+<TD><CODE><B>Database.</B><B><A HREF="../../../../com/sleepycat/db/Database.html#exists(com.sleepycat.db.Transaction, com.sleepycat.db.DatabaseEntry)">exists</A></B>(<A HREF="../../../../com/sleepycat/db/Transaction.html" title="class in com.sleepycat.db">Transaction</A>&nbsp;txn,
+ <A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;key)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Checks if the specified key appears in the database.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../com/sleepycat/db/OperationStatus.html" title="class in com.sleepycat.db">OperationStatus</A></CODE></FONT></TD>
<TD><CODE><B>SecondaryDatabase.</B><B><A HREF="../../../../com/sleepycat/db/SecondaryDatabase.html#get(com.sleepycat.db.Transaction, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.LockMode)">get</A></B>(<A HREF="../../../../com/sleepycat/db/Transaction.html" title="class in com.sleepycat.db">Transaction</A>&nbsp;txn,
<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;key,
<A HREF="../../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>&nbsp;pKey,
@@ -349,7 +367,7 @@ the key and data items must match.</TD>
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B>Environment.</B><B><A HREF="../../../../com/sleepycat/db/Environment.html#logPrint(com.sleepycat.db.Transaction, java.lang.String)">logPrint</A></B>(<A HREF="../../../../com/sleepycat/db/Transaction.html" title="class in com.sleepycat.db">Transaction</A>&nbsp;txn,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;message)</CODE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;message)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Append an informational message to the Berkeley DB database environment log files.</TD>
@@ -376,8 +394,8 @@ the key and data items must match.</TD>
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../com/sleepycat/db/Database.html" title="class in com.sleepycat.db">Database</A></CODE></FONT></TD>
<TD><CODE><B>Environment.</B><B><A HREF="../../../../com/sleepycat/db/Environment.html#openDatabase(com.sleepycat.db.Transaction, java.lang.String, java.lang.String, com.sleepycat.db.DatabaseConfig)">openDatabase</A></B>(<A HREF="../../../../com/sleepycat/db/Transaction.html" title="class in com.sleepycat.db">Transaction</A>&nbsp;txn,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
<A HREF="../../../../com/sleepycat/db/DatabaseConfig.html" title="class in com.sleepycat.db">DatabaseConfig</A>&nbsp;config)</CODE>
<BR>
@@ -396,8 +414,8 @@ the key and data items must match.</TD>
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../com/sleepycat/db/SecondaryDatabase.html" title="class in com.sleepycat.db">SecondaryDatabase</A></CODE></FONT></TD>
<TD><CODE><B>Environment.</B><B><A HREF="../../../../com/sleepycat/db/Environment.html#openSecondaryDatabase(com.sleepycat.db.Transaction, java.lang.String, java.lang.String, com.sleepycat.db.Database, com.sleepycat.db.SecondaryConfig)">openSecondaryDatabase</A></B>(<A HREF="../../../../com/sleepycat/db/Transaction.html" title="class in com.sleepycat.db">Transaction</A>&nbsp;txn,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
<A HREF="../../../../com/sleepycat/db/Database.html" title="class in com.sleepycat.db">Database</A>&nbsp;primaryDatabase,
<A HREF="../../../../com/sleepycat/db/SecondaryConfig.html" title="class in com.sleepycat.db">SecondaryConfig</A>&nbsp;config)</CODE>
@@ -453,8 +471,8 @@ appear in the database.</TD>
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B>Environment.</B><B><A HREF="../../../../com/sleepycat/db/Environment.html#removeDatabase(com.sleepycat.db.Transaction, java.lang.String, java.lang.String)">removeDatabase</A></B>(<A HREF="../../../../com/sleepycat/db/Transaction.html" title="class in com.sleepycat.db">Transaction</A>&nbsp;txn,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName)</CODE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
@@ -474,9 +492,9 @@ Remove a database.</TD>
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B>Environment.</B><B><A HREF="../../../../com/sleepycat/db/Environment.html#renameDatabase(com.sleepycat.db.Transaction, java.lang.String, java.lang.String, java.lang.String)">renameDatabase</A></B>(<A HREF="../../../../com/sleepycat/db/Transaction.html" title="class in com.sleepycat.db">Transaction</A>&nbsp;txn,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;oldDatabaseName,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;newDatabaseName)</CODE>
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;oldDatabaseName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;newDatabaseName)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
@@ -518,7 +536,7 @@ Rename a database.</TD>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -548,6 +566,6 @@ Rename a database.</TD>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/TransactionConfig.html b/db/docs/java/com/sleepycat/db/class-use/TransactionConfig.html
index 385a27fb3..86d54e3a5 100644
--- a/db/docs/java/com/sleepycat/db/class-use/TransactionConfig.html
+++ b/db/docs/java/com/sleepycat/db/class-use/TransactionConfig.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:48 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.TransactionConfig (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.TransactionConfig (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.TransactionConfig (Oracle Corporation - Berkeley
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.TransactionConfig (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.TransactionConfig (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -233,7 +233,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/TransactionConfig.html" title="cla
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -263,6 +263,6 @@ Uses of <A HREF="../../../../com/sleepycat/db/TransactionConfig.html" title="cla
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/TransactionStats.Active.html b/db/docs/java/com/sleepycat/db/class-use/TransactionStats.Active.html
index 921179506..7ec6ef536 100644
--- a/db/docs/java/com/sleepycat/db/class-use/TransactionStats.Active.html
+++ b/db/docs/java/com/sleepycat/db/class-use/TransactionStats.Active.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:48 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.TransactionStats.Active (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.TransactionStats.Active (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.TransactionStats.Active (Oracle Corporation - Ber
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.TransactionStats.Active (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.TransactionStats.Active (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -142,7 +142,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/TransactionStats.Active.html" titl
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -172,6 +172,6 @@ Uses of <A HREF="../../../../com/sleepycat/db/TransactionStats.Active.html" titl
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/TransactionStats.html b/db/docs/java/com/sleepycat/db/class-use/TransactionStats.html
index 2af2213ed..938b210e5 100644
--- a/db/docs/java/com/sleepycat/db/class-use/TransactionStats.html
+++ b/db/docs/java/com/sleepycat/db/class-use/TransactionStats.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:48 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.TransactionStats (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.TransactionStats (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.TransactionStats (Oracle Corporation - Berkeley D
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.TransactionStats (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.TransactionStats (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -142,7 +142,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/TransactionStats.html" title="clas
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -172,6 +172,6 @@ Uses of <A HREF="../../../../com/sleepycat/db/TransactionStats.html" title="clas
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/UpdateConflictException.html b/db/docs/java/com/sleepycat/db/class-use/UpdateConflictException.html
deleted file mode 100644
index 425fb84d4..000000000
--- a/db/docs/java/com/sleepycat/db/class-use/UpdateConflictException.html
+++ /dev/null
@@ -1,140 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!--NewPage-->
-<HTML>
-<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:48 EDT 2006 -->
-<TITLE>
-Uses of Class com.sleepycat.db.UpdateConflictException (Oracle Corporation - Berkeley DB Java API)
-</TITLE>
-
-
-<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../style.css" TITLE="Style">
-
-<SCRIPT type="text/javascript">
-function windowTitle()
-{
- parent.document.title="Uses of Class com.sleepycat.db.UpdateConflictException (Oracle Corporation - Berkeley DB Java API)";
-}
-</SCRIPT>
-<NOSCRIPT>
-</NOSCRIPT>
-
-</HEAD>
-
-<BODY BGCOLOR="white" onload="windowTitle();">
-
-
-<!-- ========= START OF TOP NAVBAR ======= -->
-<A NAME="navbar_top"><!-- --></A>
-<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
-<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
-<TR>
-<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
-<A NAME="navbar_top_firstrow"><!-- --></A>
-<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
- <TR ALIGN="center" VALIGN="top">
- <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
- <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
- <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../com/sleepycat/db/UpdateConflictException.html" title="class in com.sleepycat.db"><FONT CLASS="NavBarFont1"><B>Class</B></FONT></A>&nbsp;</TD>
- <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Use</B></FONT>&nbsp;</TD>
- <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
- <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
- <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
- <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
- </TR>
-</TABLE>
-</TD>
-<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
-</TD>
-</TR>
-
-<TR>
-<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
-&nbsp;PREV&nbsp;
-&nbsp;NEXT</FONT></TD>
-<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
- <A HREF="../../../../index.html?com/sleepycat/db//class-useUpdateConflictException.html" target="_top"><B>FRAMES</B></A> &nbsp;
-&nbsp;<A HREF="UpdateConflictException.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
-&nbsp;<SCRIPT type="text/javascript">
- <!--
- if(window==top) {
- document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
- }
- //-->
-</SCRIPT>
-<NOSCRIPT>
- <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
-</NOSCRIPT>
-
-
-</FONT></TD>
-</TR>
-</TABLE>
-<A NAME="skip-navbar_top"></A>
-<!-- ========= END OF TOP NAVBAR ========= -->
-
-<HR>
-<CENTER>
-<H2>
-<B>Uses of Class<br>com.sleepycat.db.UpdateConflictException</B></H2>
-</CENTER>
-No usage of com.sleepycat.db.UpdateConflictException
-<P>
-<HR>
-
-
-<!-- ======= START OF BOTTOM NAVBAR ====== -->
-<A NAME="navbar_bottom"><!-- --></A>
-<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
-<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
-<TR>
-<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
-<A NAME="navbar_bottom_firstrow"><!-- --></A>
-<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
- <TR ALIGN="center" VALIGN="top">
- <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
- <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
- <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../com/sleepycat/db/UpdateConflictException.html" title="class in com.sleepycat.db"><FONT CLASS="NavBarFont1"><B>Class</B></FONT></A>&nbsp;</TD>
- <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Use</B></FONT>&nbsp;</TD>
- <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
- <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
- <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
- <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
- </TR>
-</TABLE>
-</TD>
-<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
-</TD>
-</TR>
-
-<TR>
-<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
-&nbsp;PREV&nbsp;
-&nbsp;NEXT</FONT></TD>
-<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
- <A HREF="../../../../index.html?com/sleepycat/db//class-useUpdateConflictException.html" target="_top"><B>FRAMES</B></A> &nbsp;
-&nbsp;<A HREF="UpdateConflictException.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
-&nbsp;<SCRIPT type="text/javascript">
- <!--
- if(window==top) {
- document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
- }
- //-->
-</SCRIPT>
-<NOSCRIPT>
- <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
-</NOSCRIPT>
-
-
-</FONT></TD>
-</TR>
-</TABLE>
-<A NAME="skip-navbar_bottom"></A>
-<!-- ======== END OF BOTTOM NAVBAR ======= -->
-
-<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
-</BODY>
-</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/VerboseConfig.html b/db/docs/java/com/sleepycat/db/class-use/VerboseConfig.html
new file mode 100644
index 000000000..c249117a7
--- /dev/null
+++ b/db/docs/java/com/sleepycat/db/class-use/VerboseConfig.html
@@ -0,0 +1,253 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
+<TITLE>
+Uses of Class com.sleepycat.db.VerboseConfig (Oracle - Berkeley DB Java API)
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../style.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+ parent.document.title="Uses of Class com.sleepycat.db.VerboseConfig (Oracle - Berkeley DB Java API)";
+}
+</SCRIPT>
+<NOSCRIPT>
+</NOSCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+ <TR ALIGN="center" VALIGN="top">
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../com/sleepycat/db/VerboseConfig.html" title="class in com.sleepycat.db"><FONT CLASS="NavBarFont1"><B>Class</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Use</B></FONT>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+ </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ <A HREF="../../../../index.html?com/sleepycat/db//class-useVerboseConfig.html" target="_top"><B>FRAMES</B></A> &nbsp;
+&nbsp;<A HREF="VerboseConfig.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+ <!--
+ if(window==top) {
+ document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+ }
+ //-->
+</SCRIPT>
+<NOSCRIPT>
+ <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+<B>Uses of Class<br>com.sleepycat.db.VerboseConfig</B></H2>
+</CENTER>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+Packages that use <A HREF="../../../../com/sleepycat/db/VerboseConfig.html" title="class in com.sleepycat.db">VerboseConfig</A></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><A HREF="#com.sleepycat.db"><B>com.sleepycat.db</B></A></TD>
+<TD>Berkeley DB Java API<br>
+<a href="../../../../../ref/toc.html" target="_top">[reference guide]</a> <a href="../../../../../ref/java/program.html" target="_top">[Java programming notes]</a>.&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+<A NAME="com.sleepycat.db"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+Uses of <A HREF="../../../../com/sleepycat/db/VerboseConfig.html" title="class in com.sleepycat.db">VerboseConfig</A> in <A HREF="../../../../com/sleepycat/db/package-summary.html">com.sleepycat.db</A></FONT></TH>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left" COLSPAN="2">Fields in <A HREF="../../../../com/sleepycat/db/package-summary.html">com.sleepycat.db</A> declared as <A HREF="../../../../com/sleepycat/db/VerboseConfig.html" title="class in com.sleepycat.db">VerboseConfig</A></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../com/sleepycat/db/VerboseConfig.html" title="class in com.sleepycat.db">VerboseConfig</A></CODE></FONT></TD>
+<TD><CODE><B>VerboseConfig.</B><B><A HREF="../../../../com/sleepycat/db/VerboseConfig.html#DEADLOCK">DEADLOCK</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Display additional information when doing deadlock detection.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../com/sleepycat/db/VerboseConfig.html" title="class in com.sleepycat.db">VerboseConfig</A></CODE></FONT></TD>
+<TD><CODE><B>VerboseConfig.</B><B><A HREF="../../../../com/sleepycat/db/VerboseConfig.html#FILEOPS">FILEOPS</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Display additional information when performing filesystem operations such
+ as open, close or rename.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../com/sleepycat/db/VerboseConfig.html" title="class in com.sleepycat.db">VerboseConfig</A></CODE></FONT></TD>
+<TD><CODE><B>VerboseConfig.</B><B><A HREF="../../../../com/sleepycat/db/VerboseConfig.html#FILEOPS_ALL">FILEOPS_ALL</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Display additional information when performing all filesystem operations,
+ including read and write.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../com/sleepycat/db/VerboseConfig.html" title="class in com.sleepycat.db">VerboseConfig</A></CODE></FONT></TD>
+<TD><CODE><B>VerboseConfig.</B><B><A HREF="../../../../com/sleepycat/db/VerboseConfig.html#RECOVERY">RECOVERY</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Display additional information when performing recovery.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../com/sleepycat/db/VerboseConfig.html" title="class in com.sleepycat.db">VerboseConfig</A></CODE></FONT></TD>
+<TD><CODE><B>VerboseConfig.</B><B><A HREF="../../../../com/sleepycat/db/VerboseConfig.html#REGISTER">REGISTER</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Display additional information concerning support for <A HREF="../../../../com/sleepycat/db/EnvironmentConfig.html#setRegister(boolean)"><CODE>EnvironmentConfig.setRegister(boolean)</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../com/sleepycat/db/VerboseConfig.html" title="class in com.sleepycat.db">VerboseConfig</A></CODE></FONT></TD>
+<TD><CODE><B>VerboseConfig.</B><B><A HREF="../../../../com/sleepycat/db/VerboseConfig.html#REPLICATION">REPLICATION</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Display detailed information when processing replication messages.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;<A HREF="../../../../com/sleepycat/db/VerboseConfig.html" title="class in com.sleepycat.db">VerboseConfig</A></CODE></FONT></TD>
+<TD><CODE><B>VerboseConfig.</B><B><A HREF="../../../../com/sleepycat/db/VerboseConfig.html#WAITSFOR">WAITSFOR</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Display the waits-for table when doing deadlock detection.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left" COLSPAN="2">Methods in <A HREF="../../../../com/sleepycat/db/package-summary.html">com.sleepycat.db</A> with parameters of type <A HREF="../../../../com/sleepycat/db/VerboseConfig.html" title="class in com.sleepycat.db">VerboseConfig</A></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B>EnvironmentConfig.</B><B><A HREF="../../../../com/sleepycat/db/EnvironmentConfig.html#getVerbose(com.sleepycat.db.VerboseConfig)">getVerbose</A></B>(<A HREF="../../../../com/sleepycat/db/VerboseConfig.html" title="class in com.sleepycat.db">VerboseConfig</A>&nbsp;flag)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return if the database environment is configured to display
+ a given type of verbose information.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B>EnvironmentConfig.</B><B><A HREF="../../../../com/sleepycat/db/EnvironmentConfig.html#setVerbose(com.sleepycat.db.VerboseConfig, boolean)">setVerbose</A></B>(<A HREF="../../../../com/sleepycat/db/VerboseConfig.html" title="class in com.sleepycat.db">VerboseConfig</A>&nbsp;flag,
+ boolean&nbsp;enable)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Display verbose information.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+ <TR ALIGN="center" VALIGN="top">
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../com/sleepycat/db/VerboseConfig.html" title="class in com.sleepycat.db"><FONT CLASS="NavBarFont1"><B>Class</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Use</B></FONT>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+ </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ <A HREF="../../../../index.html?com/sleepycat/db//class-useVerboseConfig.html" target="_top"><B>FRAMES</B></A> &nbsp;
+&nbsp;<A HREF="VerboseConfig.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+ <!--
+ if(window==top) {
+ document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+ }
+ //-->
+</SCRIPT>
+<NOSCRIPT>
+ <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
+</BODY>
+</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/VerifyConfig.html b/db/docs/java/com/sleepycat/db/class-use/VerifyConfig.html
index 0f2ebaad9..971653146 100644
--- a/db/docs/java/com/sleepycat/db/class-use/VerifyConfig.html
+++ b/db/docs/java/com/sleepycat/db/class-use/VerifyConfig.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:48 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.VerifyConfig (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.VerifyConfig (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.VerifyConfig (Oracle Corporation - Berkeley DB Ja
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.VerifyConfig (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.VerifyConfig (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -127,9 +127,9 @@ Uses of <A HREF="../../../../com/sleepycat/db/VerifyConfig.html" title="class in
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;boolean</CODE></FONT></TD>
-<TD><CODE><B>Database.</B><B><A HREF="../../../../com/sleepycat/db/Database.html#verify(java.lang.String, java.lang.String, java.io.PrintStream, com.sleepycat.db.VerifyConfig, com.sleepycat.db.DatabaseConfig)">verify</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/PrintStream.html" title="class or interface in java.io">PrintStream</A>&nbsp;dumpStream,
+<TD><CODE><B>Database.</B><B><A HREF="../../../../com/sleepycat/db/Database.html#verify(java.lang.String, java.lang.String, java.io.PrintStream, com.sleepycat.db.VerifyConfig, com.sleepycat.db.DatabaseConfig)">verify</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;fileName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;databaseName,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/PrintStream.html" title="class or interface in java.io">PrintStream</A>&nbsp;dumpStream,
<A HREF="../../../../com/sleepycat/db/VerifyConfig.html" title="class in com.sleepycat.db">VerifyConfig</A>&nbsp;verifyConfig,
<A HREF="../../../../com/sleepycat/db/DatabaseConfig.html" title="class in com.sleepycat.db">DatabaseConfig</A>&nbsp;dbConfig)</CODE>
@@ -163,7 +163,7 @@ Uses of <A HREF="../../../../com/sleepycat/db/VerifyConfig.html" title="class in
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -193,6 +193,6 @@ Uses of <A HREF="../../../../com/sleepycat/db/VerifyConfig.html" title="class in
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/class-use/VersionMismatchException.html b/db/docs/java/com/sleepycat/db/class-use/VersionMismatchException.html
index cc6c02079..b838b4a01 100644
--- a/db/docs/java/com/sleepycat/db/class-use/VersionMismatchException.html
+++ b/db/docs/java/com/sleepycat/db/class-use/VersionMismatchException.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:48 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.db.VersionMismatchException (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.db.VersionMismatchException (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.db.VersionMismatchException (Oracle Corporation - Be
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.db.VersionMismatchException (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.db.VersionMismatchException (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -105,7 +105,7 @@ No usage of com.sleepycat.db.VersionMismatchException
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -135,6 +135,6 @@ No usage of com.sleepycat.db.VersionMismatchException
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/package-frame.html b/db/docs/java/com/sleepycat/db/package-frame.html
index 2059a0d87..6e1d7b436 100644
--- a/db/docs/java/com/sleepycat/db/package-frame.html
+++ b/db/docs/java/com/sleepycat/db/package-frame.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:48 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-com.sleepycat.db (Oracle Corporation - Berkeley DB Java API)
+com.sleepycat.db (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db package">
@@ -43,7 +43,9 @@ Interfaces</FONT>&nbsp;
<BR>
<A HREF="ReplicationTransport.html" title="interface in com.sleepycat.db" target="classFrame"><I>ReplicationTransport</I></A>
<BR>
-<A HREF="SecondaryKeyCreator.html" title="interface in com.sleepycat.db" target="classFrame"><I>SecondaryKeyCreator</I></A></FONT></TD>
+<A HREF="SecondaryKeyCreator.html" title="interface in com.sleepycat.db" target="classFrame"><I>SecondaryKeyCreator</I></A>
+<BR>
+<A HREF="SecondaryMultiKeyCreator.html" title="interface in com.sleepycat.db" target="classFrame"><I>SecondaryMultiKeyCreator</I></A></FONT></TD>
</TR>
</TABLE>
@@ -88,7 +90,7 @@ Classes</FONT>&nbsp;
<BR>
<A HREF="EnvironmentConfig.html" title="class in com.sleepycat.db" target="classFrame">EnvironmentConfig</A>
<BR>
-<A HREF="EventType.html" title="class in com.sleepycat.db" target="classFrame">EventType</A>
+<A HREF="EventHandlerAdapter.html" title="class in com.sleepycat.db" target="classFrame">EventHandlerAdapter</A>
<BR>
<A HREF="HashStats.html" title="class in com.sleepycat.db" target="classFrame">HashStats</A>
<BR>
@@ -150,6 +152,8 @@ Classes</FONT>&nbsp;
<BR>
<A HREF="ReplicationManagerStartPolicy.html" title="class in com.sleepycat.db" target="classFrame">ReplicationManagerStartPolicy</A>
<BR>
+<A HREF="ReplicationManagerStats.html" title="class in com.sleepycat.db" target="classFrame">ReplicationManagerStats</A>
+<BR>
<A HREF="ReplicationStats.html" title="class in com.sleepycat.db" target="classFrame">ReplicationStats</A>
<BR>
<A HREF="ReplicationStatus.html" title="class in com.sleepycat.db" target="classFrame">ReplicationStatus</A>
@@ -178,6 +182,8 @@ Classes</FONT>&nbsp;
<BR>
<A HREF="TransactionStats.Active.html" title="class in com.sleepycat.db" target="classFrame">TransactionStats.Active</A>
<BR>
+<A HREF="VerboseConfig.html" title="class in com.sleepycat.db" target="classFrame">VerboseConfig</A>
+<BR>
<A HREF="VerifyConfig.html" title="class in com.sleepycat.db" target="classFrame">VerifyConfig</A></FONT></TD>
</TR>
</TABLE>
@@ -205,14 +211,16 @@ Exceptions</FONT>&nbsp;
<BR>
<A HREF="ReplicationJoinFailureException.html" title="class in com.sleepycat.db" target="classFrame">ReplicationJoinFailureException</A>
<BR>
+<A HREF="ReplicationLeaseExpiredException.html" title="class in com.sleepycat.db" target="classFrame">ReplicationLeaseExpiredException</A>
+<BR>
+<A HREF="ReplicationLeaseTimeoutException.html" title="class in com.sleepycat.db" target="classFrame">ReplicationLeaseTimeoutException</A>
+<BR>
<A HREF="ReplicationLockoutException.html" title="class in com.sleepycat.db" target="classFrame">ReplicationLockoutException</A>
<BR>
<A HREF="ReplicationSiteUnavailableException.html" title="class in com.sleepycat.db" target="classFrame">ReplicationSiteUnavailableException</A>
<BR>
<A HREF="RunRecoveryException.html" title="class in com.sleepycat.db" target="classFrame">RunRecoveryException</A>
<BR>
-<A HREF="UpdateConflictException.html" title="class in com.sleepycat.db" target="classFrame">UpdateConflictException</A>
-<BR>
<A HREF="VersionMismatchException.html" title="class in com.sleepycat.db" target="classFrame">VersionMismatchException</A></FONT></TD>
</TR>
</TABLE>
diff --git a/db/docs/java/com/sleepycat/db/package-summary.html b/db/docs/java/com/sleepycat/db/package-summary.html
index 9d74eca31..d2166a89f 100644
--- a/db/docs/java/com/sleepycat/db/package-summary.html
+++ b/db/docs/java/com/sleepycat/db/package-summary.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:48 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-com.sleepycat.db (Oracle Corporation - Berkeley DB Java API)
+com.sleepycat.db (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.db package">
@@ -14,7 +14,7 @@ com.sleepycat.db (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="com.sleepycat.db (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="com.sleepycat.db (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -103,8 +103,8 @@ occurs in the Berkeley DB library.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD WIDTH="15%"><B><A HREF="../../../com/sleepycat/db/EventHandler.html" title="interface in com.sleepycat.db">EventHandler</A></B></TD>
-<TD>An interface specifying a callback function to be called when an event
-is sent from the Berkeley DB library.</TD>
+<TD>An interface classs with prototype definitions of all event functions that
+can be called via the Berkeley DB event callback mechanism.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD WIDTH="15%"><B><A HREF="../../../com/sleepycat/db/FeedbackHandler.html" title="interface in com.sleepycat.db">FeedbackHandler</A></B></TD>
@@ -143,6 +143,11 @@ information to other members of the replication group.</TD>
<TD>The interface implemented for extracting single-valued secondary keys from
primary records.</TD>
</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../com/sleepycat/db/SecondaryMultiKeyCreator.html" title="interface in com.sleepycat.db">SecondaryMultiKeyCreator</A></B></TD>
+<TD>The interface implemented for extracting multi-valued secondary keys from
+primary records.</TD>
+</TR>
</TABLE>
&nbsp;
@@ -224,8 +229,10 @@ a <A HREF="../../../com/sleepycat/db/Database.html" title="class in com.sleepyca
<TD>Specifies the attributes of an environment.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD WIDTH="15%"><B><A HREF="../../../com/sleepycat/db/EventType.html" title="class in com.sleepycat.db">EventType</A></B></TD>
-<TD>Event types.</TD>
+<TD WIDTH="15%"><B><A HREF="../../../com/sleepycat/db/EventHandlerAdapter.html" title="class in com.sleepycat.db">EventHandlerAdapter</A></B></TD>
+<TD>An abstract class that implements <A HREF="../../../com/sleepycat/db/EventHandler.html" title="interface in com.sleepycat.db"><CODE>EventHandler</CODE></A>, used to specify a
+callback function to be called when an event is sent from the Berkeley DB
+library.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD WIDTH="15%"><B><A HREF="../../../com/sleepycat/db/HashStats.html" title="class in com.sleepycat.db">HashStats</A></B></TD>
@@ -367,6 +374,10 @@ can be specified when starting a replication client using the
<A HREF="../../../com/sleepycat/db/Environment.html#replicationManagerStart(int, com.sleepycat.db.ReplicationManagerStartPolicy)"><CODE>Environment.replicationManagerStart</CODE></A> call.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../com/sleepycat/db/ReplicationManagerStats.html" title="class in com.sleepycat.db">ReplicationManagerStats</A></B></TD>
+<TD>Replication Manager statistics for a database environment.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
<TD WIDTH="15%"><B><A HREF="../../../com/sleepycat/db/ReplicationStats.html" title="class in com.sleepycat.db">ReplicationStats</A></B></TD>
<TD>Replication statistics for a database environment.</TD>
</TR>
@@ -425,6 +436,10 @@ those of a primary <code>Database</code>.</TD>
<TD>The Active class represents an active transaction.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../com/sleepycat/db/VerboseConfig.html" title="class in com.sleepycat.db">VerboseConfig</A></B></TD>
+<TD>Specifies the attributes of a verification operation.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
<TD WIDTH="15%"><B><A HREF="../../../com/sleepycat/db/VerifyConfig.html" title="class in com.sleepycat.db">VerifyConfig</A></B></TD>
<TD>Specifies the attributes of a verification operation.</TD>
</TR>
@@ -484,6 +499,14 @@ with the <A HREF="../../../com/sleepycat/db/ReplicationConfig.html#NOAUTOINIT"><
internal initialization).</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../com/sleepycat/db/ReplicationLeaseExpiredException.html" title="class in com.sleepycat.db">ReplicationLeaseExpiredException</A></B></TD>
+<TD>Thrown if a master lease has expired.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../com/sleepycat/db/ReplicationLeaseTimeoutException.html" title="class in com.sleepycat.db">ReplicationLeaseTimeoutException</A></B></TD>
+<TD>Thrown if a master lease has timed out.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
<TD WIDTH="15%"><B><A HREF="../../../com/sleepycat/db/ReplicationLockoutException.html" title="class in com.sleepycat.db">ReplicationLockoutException</A></B></TD>
<TD>Thrown when an operation was blocked by client/master synchronization.</TD>
</TR>
@@ -497,11 +520,6 @@ complete the election in the specified timeout period.</TD>
<TD>Thrown when the database environment needs to be recovered.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD WIDTH="15%"><B><A HREF="../../../com/sleepycat/db/UpdateConflictException.html" title="class in com.sleepycat.db">UpdateConflictException</A></B></TD>
-<TD>Thrown when a snapshot transaction attempts to update data
-which was modified after the snapshot transaction read it.</TD>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
<TD WIDTH="15%"><B><A HREF="../../../com/sleepycat/db/VersionMismatchException.html" title="class in com.sleepycat.db">VersionMismatchException</A></B></TD>
<TD>Thrown if the version of the Berkeley DB library doesn't match the version that created
the database environment.</TD>
@@ -556,7 +574,7 @@ target="_top">Berkeley DB Supporting Utilities</a>.
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -586,6 +604,6 @@ target="_top">Berkeley DB Supporting Utilities</a>.
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/package-tree.html b/db/docs/java/com/sleepycat/db/package-tree.html
index 957db0eaf..998e98599 100644
--- a/db/docs/java/com/sleepycat/db/package-tree.html
+++ b/db/docs/java/com/sleepycat/db/package-tree.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:48 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-com.sleepycat.db Class Hierarchy (Oracle Corporation - Berkeley DB Java API)
+com.sleepycat.db Class Hierarchy (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ com.sleepycat.db Class Hierarchy (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="com.sleepycat.db Class Hierarchy (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="com.sleepycat.db Class Hierarchy (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -87,16 +87,16 @@ Hierarchy For Package com.sleepycat.db
Class Hierarchy
</H2>
<UL>
-<LI TYPE="circle">java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang"><B>Object</B></A><UL>
-<LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/CacheFile.html" title="class in com.sleepycat.db"><B>CacheFile</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/CacheFilePriority.html" title="class in com.sleepycat.db"><B>CacheFilePriority</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/CacheFileStats.html" title="class in com.sleepycat.db"><B>CacheFileStats</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/CacheStats.html" title="class in com.sleepycat.db"><B>CacheStats</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/CheckpointConfig.html" title="class in com.sleepycat.db"><B>CheckpointConfig</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/CompactConfig.html" title="class in com.sleepycat.db"><B>CompactConfig</B></A> (implements java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>)
+<LI TYPE="circle">java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang"><B>Object</B></A><UL>
+<LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/CacheFile.html" title="class in com.sleepycat.db"><B>CacheFile</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/CacheFilePriority.html" title="class in com.sleepycat.db"><B>CacheFilePriority</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/CacheFileStats.html" title="class in com.sleepycat.db"><B>CacheFileStats</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/CacheStats.html" title="class in com.sleepycat.db"><B>CacheStats</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/CheckpointConfig.html" title="class in com.sleepycat.db"><B>CheckpointConfig</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/CompactConfig.html" title="class in com.sleepycat.db"><B>CompactConfig</B></A> (implements java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>)
<LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/CompactStats.html" title="class in com.sleepycat.db"><B>CompactStats</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/Cursor.html" title="class in com.sleepycat.db"><B>Cursor</B></A><UL>
<LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/SecondaryCursor.html" title="class in com.sleepycat.db"><B>SecondaryCursor</B></A></UL>
-<LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/CursorConfig.html" title="class in com.sleepycat.db"><B>CursorConfig</B></A> (implements java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>)
+<LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/CursorConfig.html" title="class in com.sleepycat.db"><B>CursorConfig</B></A> (implements java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>)
<LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/Database.html" title="class in com.sleepycat.db"><B>Database</B></A><UL>
<LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/SecondaryDatabase.html" title="class in com.sleepycat.db"><B>SecondaryDatabase</B></A></UL>
-<LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/DatabaseConfig.html" title="class in com.sleepycat.db"><B>DatabaseConfig</B></A> (implements java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>)
+<LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/DatabaseConfig.html" title="class in com.sleepycat.db"><B>DatabaseConfig</B></A> (implements java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>)
<UL>
-<LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/SecondaryConfig.html" title="class in com.sleepycat.db"><B>SecondaryConfig</B></A> (implements java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>)
+<LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/SecondaryConfig.html" title="class in com.sleepycat.db"><B>SecondaryConfig</B></A> (implements java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>)
</UL>
<LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db"><B>DatabaseEntry</B></A><UL>
<LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/MultipleEntry.html" title="class in com.sleepycat.db"><B>MultipleEntry</B></A><UL>
@@ -104,27 +104,28 @@ Class Hierarchy
</UL>
<LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/DatabaseStats.html" title="class in com.sleepycat.db"><B>DatabaseStats</B></A><UL>
<LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/BtreeStats.html" title="class in com.sleepycat.db"><B>BtreeStats</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/HashStats.html" title="class in com.sleepycat.db"><B>HashStats</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/QueueStats.html" title="class in com.sleepycat.db"><B>QueueStats</B></A></UL>
-<LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/DatabaseType.html" title="class in com.sleepycat.db"><B>DatabaseType</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/Environment.html" title="class in com.sleepycat.db"><B>Environment</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/EnvironmentConfig.html" title="class in com.sleepycat.db"><B>EnvironmentConfig</B></A> (implements java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>)
-<LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/EventType.html" title="class in com.sleepycat.db"><B>EventType</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/JoinConfig.html" title="class in com.sleepycat.db"><B>JoinConfig</B></A> (implements java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>)
-<LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/JoinCursor.html" title="class in com.sleepycat.db"><B>JoinCursor</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/KeyRange.html" title="class in com.sleepycat.db"><B>KeyRange</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/Lock.html" title="class in com.sleepycat.db"><B>Lock</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/LockDetectMode.html" title="class in com.sleepycat.db"><B>LockDetectMode</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/LockMode.html" title="class in com.sleepycat.db"><B>LockMode</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/LockOperation.html" title="class in com.sleepycat.db"><B>LockOperation</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/LockRequest.html" title="class in com.sleepycat.db"><B>LockRequest</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/LockRequestMode.html" title="class in com.sleepycat.db"><B>LockRequestMode</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/LockStats.html" title="class in com.sleepycat.db"><B>LockStats</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/LogCursor.html" title="class in com.sleepycat.db"><B>LogCursor</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/LogSequenceNumber.html" title="class in com.sleepycat.db"><B>LogSequenceNumber</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/LogStats.html" title="class in com.sleepycat.db"><B>LogStats</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/MutexStats.html" title="class in com.sleepycat.db"><B>MutexStats</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/OperationStatus.html" title="class in com.sleepycat.db"><B>OperationStatus</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/PreparedTransaction.html" title="class in com.sleepycat.db"><B>PreparedTransaction</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/RecoveryOperation.html" title="class in com.sleepycat.db"><B>RecoveryOperation</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/ReplicationConfig.html" title="class in com.sleepycat.db"><B>ReplicationConfig</B></A> (implements java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>)
-<LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/ReplicationHostAddress.html" title="class in com.sleepycat.db"><B>ReplicationHostAddress</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/ReplicationManagerAckPolicy.html" title="class in com.sleepycat.db"><B>ReplicationManagerAckPolicy</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/ReplicationManagerStartPolicy.html" title="class in com.sleepycat.db"><B>ReplicationManagerStartPolicy</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/ReplicationStats.html" title="class in com.sleepycat.db"><B>ReplicationStats</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/ReplicationStatus.html" title="class in com.sleepycat.db"><B>ReplicationStatus</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/ReplicationTimeoutType.html" title="class in com.sleepycat.db"><B>ReplicationTimeoutType</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/Sequence.html" title="class in com.sleepycat.db"><B>Sequence</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/SequenceConfig.html" title="class in com.sleepycat.db"><B>SequenceConfig</B></A> (implements java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>)
-<LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/SequenceStats.html" title="class in com.sleepycat.db"><B>SequenceStats</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/StatsConfig.html" title="class in com.sleepycat.db"><B>StatsConfig</B></A><LI TYPE="circle">java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html" title="class or interface in java.lang"><B>Throwable</B></A> (implements java.io.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/Serializable.html" title="class or interface in java.io">Serializable</A>)
+<LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/DatabaseType.html" title="class in com.sleepycat.db"><B>DatabaseType</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/Environment.html" title="class in com.sleepycat.db"><B>Environment</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/EnvironmentConfig.html" title="class in com.sleepycat.db"><B>EnvironmentConfig</B></A> (implements java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>)
+<LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/EventHandlerAdapter.html" title="class in com.sleepycat.db"><B>EventHandlerAdapter</B></A> (implements com.sleepycat.db.<A HREF="../../../com/sleepycat/db/EventHandler.html" title="interface in com.sleepycat.db">EventHandler</A>)
+<LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/JoinConfig.html" title="class in com.sleepycat.db"><B>JoinConfig</B></A> (implements java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>)
+<LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/JoinCursor.html" title="class in com.sleepycat.db"><B>JoinCursor</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/KeyRange.html" title="class in com.sleepycat.db"><B>KeyRange</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/Lock.html" title="class in com.sleepycat.db"><B>Lock</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/LockDetectMode.html" title="class in com.sleepycat.db"><B>LockDetectMode</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/LockMode.html" title="class in com.sleepycat.db"><B>LockMode</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/LockOperation.html" title="class in com.sleepycat.db"><B>LockOperation</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/LockRequest.html" title="class in com.sleepycat.db"><B>LockRequest</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/LockRequestMode.html" title="class in com.sleepycat.db"><B>LockRequestMode</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/LockStats.html" title="class in com.sleepycat.db"><B>LockStats</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/LogCursor.html" title="class in com.sleepycat.db"><B>LogCursor</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/LogSequenceNumber.html" title="class in com.sleepycat.db"><B>LogSequenceNumber</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/LogStats.html" title="class in com.sleepycat.db"><B>LogStats</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/MutexStats.html" title="class in com.sleepycat.db"><B>MutexStats</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/OperationStatus.html" title="class in com.sleepycat.db"><B>OperationStatus</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/PreparedTransaction.html" title="class in com.sleepycat.db"><B>PreparedTransaction</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/RecoveryOperation.html" title="class in com.sleepycat.db"><B>RecoveryOperation</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/ReplicationConfig.html" title="class in com.sleepycat.db"><B>ReplicationConfig</B></A> (implements java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>)
+<LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/ReplicationHostAddress.html" title="class in com.sleepycat.db"><B>ReplicationHostAddress</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/ReplicationManagerAckPolicy.html" title="class in com.sleepycat.db"><B>ReplicationManagerAckPolicy</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/ReplicationManagerStartPolicy.html" title="class in com.sleepycat.db"><B>ReplicationManagerStartPolicy</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/ReplicationManagerStats.html" title="class in com.sleepycat.db"><B>ReplicationManagerStats</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/ReplicationStats.html" title="class in com.sleepycat.db"><B>ReplicationStats</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/ReplicationStatus.html" title="class in com.sleepycat.db"><B>ReplicationStatus</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/ReplicationTimeoutType.html" title="class in com.sleepycat.db"><B>ReplicationTimeoutType</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/Sequence.html" title="class in com.sleepycat.db"><B>Sequence</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/SequenceConfig.html" title="class in com.sleepycat.db"><B>SequenceConfig</B></A> (implements java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>)
+<LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/SequenceStats.html" title="class in com.sleepycat.db"><B>SequenceStats</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/StatsConfig.html" title="class in com.sleepycat.db"><B>StatsConfig</B></A><LI TYPE="circle">java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang"><B>Throwable</B></A> (implements java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Serializable.html" title="class or interface in java.io">Serializable</A>)
<UL>
-<LI TYPE="circle">java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Exception.html" title="class or interface in java.lang"><B>Exception</B></A><UL>
+<LI TYPE="circle">java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Exception.html" title="class or interface in java.lang"><B>Exception</B></A><UL>
<LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db"><B>DatabaseException</B></A><UL>
<LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/DeadlockException.html" title="class in com.sleepycat.db"><B>DeadlockException</B></A><UL>
<LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/LockNotGrantedException.html" title="class in com.sleepycat.db"><B>LockNotGrantedException</B></A></UL>
-<LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/MemoryException.html" title="class in com.sleepycat.db"><B>MemoryException</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/ReplicationDuplicateMasterException.html" title="class in com.sleepycat.db"><B>ReplicationDuplicateMasterException</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/ReplicationHandleDeadException.html" title="class in com.sleepycat.db"><B>ReplicationHandleDeadException</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/ReplicationHoldElectionException.html" title="class in com.sleepycat.db"><B>ReplicationHoldElectionException</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/ReplicationJoinFailureException.html" title="class in com.sleepycat.db"><B>ReplicationJoinFailureException</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/ReplicationLockoutException.html" title="class in com.sleepycat.db"><B>ReplicationLockoutException</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/ReplicationSiteUnavailableException.html" title="class in com.sleepycat.db"><B>ReplicationSiteUnavailableException</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/RunRecoveryException.html" title="class in com.sleepycat.db"><B>RunRecoveryException</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/UpdateConflictException.html" title="class in com.sleepycat.db"><B>UpdateConflictException</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/VersionMismatchException.html" title="class in com.sleepycat.db"><B>VersionMismatchException</B></A></UL>
+<LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/MemoryException.html" title="class in com.sleepycat.db"><B>MemoryException</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/ReplicationDuplicateMasterException.html" title="class in com.sleepycat.db"><B>ReplicationDuplicateMasterException</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/ReplicationHandleDeadException.html" title="class in com.sleepycat.db"><B>ReplicationHandleDeadException</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/ReplicationHoldElectionException.html" title="class in com.sleepycat.db"><B>ReplicationHoldElectionException</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/ReplicationJoinFailureException.html" title="class in com.sleepycat.db"><B>ReplicationJoinFailureException</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/ReplicationLeaseExpiredException.html" title="class in com.sleepycat.db"><B>ReplicationLeaseExpiredException</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/ReplicationLeaseTimeoutException.html" title="class in com.sleepycat.db"><B>ReplicationLeaseTimeoutException</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/ReplicationLockoutException.html" title="class in com.sleepycat.db"><B>ReplicationLockoutException</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/ReplicationSiteUnavailableException.html" title="class in com.sleepycat.db"><B>ReplicationSiteUnavailableException</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/RunRecoveryException.html" title="class in com.sleepycat.db"><B>RunRecoveryException</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/VersionMismatchException.html" title="class in com.sleepycat.db"><B>VersionMismatchException</B></A></UL>
</UL>
</UL>
-<LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/Transaction.html" title="class in com.sleepycat.db"><B>Transaction</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/TransactionConfig.html" title="class in com.sleepycat.db"><B>TransactionConfig</B></A> (implements java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>)
-<LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/TransactionStats.html" title="class in com.sleepycat.db"><B>TransactionStats</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/TransactionStats.Active.html" title="class in com.sleepycat.db"><B>TransactionStats.Active</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/VerifyConfig.html" title="class in com.sleepycat.db"><B>VerifyConfig</B></A></UL>
+<LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/Transaction.html" title="class in com.sleepycat.db"><B>Transaction</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/TransactionConfig.html" title="class in com.sleepycat.db"><B>TransactionConfig</B></A> (implements java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>)
+<LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/TransactionStats.html" title="class in com.sleepycat.db"><B>TransactionStats</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/TransactionStats.Active.html" title="class in com.sleepycat.db"><B>TransactionStats.Active</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/VerboseConfig.html" title="class in com.sleepycat.db"><B>VerboseConfig</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/VerifyConfig.html" title="class in com.sleepycat.db"><B>VerifyConfig</B></A></UL>
</UL>
<H2>
Interface Hierarchy
</H2>
<UL>
-<LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/BtreePrefixCalculator.html" title="interface in com.sleepycat.db"><B>BtreePrefixCalculator</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/ErrorHandler.html" title="interface in com.sleepycat.db"><B>ErrorHandler</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/EventHandler.html" title="interface in com.sleepycat.db"><B>EventHandler</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/FeedbackHandler.html" title="interface in com.sleepycat.db"><B>FeedbackHandler</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/Hasher.html" title="interface in com.sleepycat.db"><B>Hasher</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/LogRecordHandler.html" title="interface in com.sleepycat.db"><B>LogRecordHandler</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/MessageHandler.html" title="interface in com.sleepycat.db"><B>MessageHandler</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/PanicHandler.html" title="interface in com.sleepycat.db"><B>PanicHandler</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/RecordNumberAppender.html" title="interface in com.sleepycat.db"><B>RecordNumberAppender</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/ReplicationTransport.html" title="interface in com.sleepycat.db"><B>ReplicationTransport</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/SecondaryKeyCreator.html" title="interface in com.sleepycat.db"><B>SecondaryKeyCreator</B></A></UL>
+<LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/BtreePrefixCalculator.html" title="interface in com.sleepycat.db"><B>BtreePrefixCalculator</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/ErrorHandler.html" title="interface in com.sleepycat.db"><B>ErrorHandler</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/EventHandler.html" title="interface in com.sleepycat.db"><B>EventHandler</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/FeedbackHandler.html" title="interface in com.sleepycat.db"><B>FeedbackHandler</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/Hasher.html" title="interface in com.sleepycat.db"><B>Hasher</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/LogRecordHandler.html" title="interface in com.sleepycat.db"><B>LogRecordHandler</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/MessageHandler.html" title="interface in com.sleepycat.db"><B>MessageHandler</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/PanicHandler.html" title="interface in com.sleepycat.db"><B>PanicHandler</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/RecordNumberAppender.html" title="interface in com.sleepycat.db"><B>RecordNumberAppender</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/ReplicationTransport.html" title="interface in com.sleepycat.db"><B>ReplicationTransport</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/SecondaryKeyCreator.html" title="interface in com.sleepycat.db"><B>SecondaryKeyCreator</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="../../../com/sleepycat/db/SecondaryMultiKeyCreator.html" title="interface in com.sleepycat.db"><B>SecondaryMultiKeyCreator</B></A></UL>
<HR>
@@ -149,7 +150,7 @@ Interface Hierarchy
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -179,6 +180,6 @@ Interface Hierarchy
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/db/package-use.html b/db/docs/java/com/sleepycat/db/package-use.html
index 2c00afa84..8c7593dc4 100644
--- a/db/docs/java/com/sleepycat/db/package-use.html
+++ b/db/docs/java/com/sleepycat/db/package-use.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:57:00 EDT 2007 -->
<TITLE>
-Uses of Package com.sleepycat.db (Oracle Corporation - Berkeley DB Java API)
+Uses of Package com.sleepycat.db (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Package com.sleepycat.db (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Package com.sleepycat.db (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Package com.sleepycat.db (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -391,14 +391,8 @@ occurs in the Berkeley DB library.</TD>
<TD><B><A HREF="../../../com/sleepycat/db/class-use/EventHandler.html#com.sleepycat.db"><B>EventHandler</B></A></B>
<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;An interface specifying a callback function to be called when an event
-is sent from the Berkeley DB library.</TD>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><B><A HREF="../../../com/sleepycat/db/class-use/EventType.html#com.sleepycat.db"><B>EventType</B></A></B>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Event types.</TD>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;An interface classs with prototype definitions of all event functions that
+can be called via the Berkeley DB event callback mechanism.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><B><A HREF="../../../com/sleepycat/db/class-use/FeedbackHandler.html#com.sleepycat.db"><B>FeedbackHandler</B></A></B>
@@ -585,6 +579,12 @@ can be specified when starting a replication client using the
<A HREF="../../../com/sleepycat/db/Environment.html#replicationManagerStart(int, com.sleepycat.db.ReplicationManagerStartPolicy)"><CODE>Environment.replicationManagerStart</CODE></A> call.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><B><A HREF="../../../com/sleepycat/db/class-use/ReplicationManagerStats.html#com.sleepycat.db"><B>ReplicationManagerStats</B></A></B>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Replication Manager statistics for a database environment.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><B><A HREF="../../../com/sleepycat/db/class-use/ReplicationStats.html#com.sleepycat.db"><B>ReplicationStats</B></A></B>
<BR>
@@ -637,6 +637,13 @@ those of a primary <code>Database</code>.</TD>
primary records.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><B><A HREF="../../../com/sleepycat/db/class-use/SecondaryMultiKeyCreator.html#com.sleepycat.db"><B>SecondaryMultiKeyCreator</B></A></B>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The interface implemented for extracting multi-valued secondary keys from
+primary records.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><B><A HREF="../../../com/sleepycat/db/class-use/Sequence.html#com.sleepycat.db"><B>Sequence</B></A></B>
<BR>
@@ -685,6 +692,12 @@ primary records.</TD>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The Active class represents an active transaction.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><B><A HREF="../../../com/sleepycat/db/class-use/VerboseConfig.html#com.sleepycat.db"><B>VerboseConfig</B></A></B>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Specifies the attributes of a verification operation.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><B><A HREF="../../../com/sleepycat/db/class-use/VerifyConfig.html#com.sleepycat.db"><B>VerifyConfig</B></A></B>
<BR>
@@ -717,7 +730,7 @@ primary records.</TD>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -747,6 +760,6 @@ primary records.</TD>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/util/ExceptionUnwrapper.html b/db/docs/java/com/sleepycat/util/ExceptionUnwrapper.html
index 7e0da0000..c7ffb9143 100644
--- a/db/docs/java/com/sleepycat/util/ExceptionUnwrapper.html
+++ b/db/docs/java/com/sleepycat/util/ExceptionUnwrapper.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:48 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-ExceptionUnwrapper (Oracle Corporation - Berkeley DB Java API)
+ExceptionUnwrapper (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.util.ExceptionUnwrapper class">
@@ -14,7 +14,7 @@ ExceptionUnwrapper (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="ExceptionUnwrapper (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="ExceptionUnwrapper (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,12 +89,12 @@ com.sleepycat.util</FONT>
<BR>
Class ExceptionUnwrapper</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.util.ExceptionUnwrapper</B>
</PRE>
<HR>
<DL>
-<DT><PRE>public class <B>ExceptionUnwrapper</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
+<DT><PRE>public class <B>ExceptionUnwrapper</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
</PRE>
<P>
@@ -134,8 +134,8 @@ Unwraps nested exceptions by calling the <A HREF="../../../com/sleepycat/util/Ex
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Exception.html" title="class or interface in java.lang">Exception</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/util/ExceptionUnwrapper.html#unwrap(java.lang.Exception)">unwrap</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Exception.html" title="class or interface in java.lang">Exception</A>&nbsp;e)</CODE>
+<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Exception.html" title="class or interface in java.lang">Exception</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/util/ExceptionUnwrapper.html#unwrap(java.lang.Exception)">unwrap</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Exception.html" title="class or interface in java.lang">Exception</A>&nbsp;e)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Unwraps an Exception and returns the underlying Exception, or throws an
@@ -143,8 +143,8 @@ Unwraps nested exceptions by calling the <A HREF="../../../com/sleepycat/util/Ex
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/util/ExceptionUnwrapper.html#unwrapAny(java.lang.Throwable)">unwrapAny</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A>&nbsp;e)</CODE>
+<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/util/ExceptionUnwrapper.html#unwrapAny(java.lang.Throwable)">unwrapAny</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A>&nbsp;e)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Unwraps an Exception and returns the underlying Throwable.</TD>
@@ -153,10 +153,10 @@ Unwraps nested exceptions by calling the <A HREF="../../../com/sleepycat/util/Ex
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -192,7 +192,7 @@ public <B>ExceptionUnwrapper</B>()</PRE>
<A NAME="unwrap(java.lang.Exception)"><!-- --></A><H3>
unwrap</H3>
<PRE>
-public static <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Exception.html" title="class or interface in java.lang">Exception</A> <B>unwrap</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Exception.html" title="class or interface in java.lang">Exception</A>&nbsp;e)</PRE>
+public static <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Exception.html" title="class or interface in java.lang">Exception</A> <B>unwrap</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Exception.html" title="class or interface in java.lang">Exception</A>&nbsp;e)</PRE>
<DL>
<DD>Unwraps an Exception and returns the underlying Exception, or throws an
Error if the underlying Throwable is an Error.
@@ -201,8 +201,8 @@ public static <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Exception
<DT><B>Parameters:</B><DD><CODE>e</CODE> - is the Exception to unwrap.
<DT><B>Returns:</B><DD>the underlying Exception.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Error.html" title="class or interface in java.lang">Error</A></CODE> - if the underlying Throwable is an Error.
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if the underlying Throwable is not an
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Error.html" title="class or interface in java.lang">Error</A></CODE> - if the underlying Throwable is an Error.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if the underlying Throwable is not an
Exception or an Error.</DL>
</DD>
</DL>
@@ -211,7 +211,7 @@ public static <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Exception
<A NAME="unwrapAny(java.lang.Throwable)"><!-- --></A><H3>
unwrapAny</H3>
<PRE>
-public static <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A> <B>unwrapAny</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A>&nbsp;e)</PRE>
+public static <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A> <B>unwrapAny</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A>&nbsp;e)</PRE>
<DL>
<DD>Unwraps an Exception and returns the underlying Throwable.
<P>
@@ -245,7 +245,7 @@ public static <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -281,6 +281,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&n
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/util/ExceptionWrapper.html b/db/docs/java/com/sleepycat/util/ExceptionWrapper.html
index 1e795463f..ec2481f96 100644
--- a/db/docs/java/com/sleepycat/util/ExceptionWrapper.html
+++ b/db/docs/java/com/sleepycat/util/ExceptionWrapper.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:48 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-ExceptionWrapper (Oracle Corporation - Berkeley DB Java API)
+ExceptionWrapper (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.util.ExceptionWrapper interface">
@@ -14,7 +14,7 @@ ExceptionWrapper (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="ExceptionWrapper (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="ExceptionWrapper (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -115,7 +115,7 @@ Interface implemented by exceptions that can contain nested exceptions.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/util/ExceptionWrapper.html#getCause()">getCause</A></B>()</CODE>
<BR>
@@ -123,7 +123,7 @@ Interface implemented by exceptions that can contain nested exceptions.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/util/ExceptionWrapper.html#getDetail()">getDetail</A></B>()</CODE>
<BR>
@@ -146,7 +146,7 @@ Interface implemented by exceptions that can contain nested exceptions.
<A NAME="getDetail()"><!-- --></A><H3>
getDetail</H3>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A> <B>getDetail</B>()</PRE>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A> <B>getDetail</B>()</PRE>
<DL>
<DD><B>Deprecated.</B>&nbsp;<I>replaced by <A HREF="../../../com/sleepycat/util/ExceptionWrapper.html#getCause()"><CODE>getCause()</CODE></A>.</I>
<P>
@@ -162,7 +162,7 @@ getDetail</H3>
<A NAME="getCause()"><!-- --></A><H3>
getCause</H3>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A> <B>getCause</B>()</PRE>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A> <B>getCause</B>()</PRE>
<DL>
<DD>Returns the nested exception or null if none is present.
@@ -201,7 +201,7 @@ getCause</H3>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -237,6 +237,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHO
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/util/FastInputStream.html b/db/docs/java/com/sleepycat/util/FastInputStream.html
index 9cdbf3993..589c10ef4 100644
--- a/db/docs/java/com/sleepycat/util/FastInputStream.html
+++ b/db/docs/java/com/sleepycat/util/FastInputStream.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:48 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-FastInputStream (Oracle Corporation - Berkeley DB Java API)
+FastInputStream (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.util.FastInputStream class">
@@ -14,7 +14,7 @@ FastInputStream (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="FastInputStream (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="FastInputStream (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,26 +89,26 @@ com.sleepycat.util</FONT>
<BR>
Class FastInputStream</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
- <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/InputStream.html" title="class or interface in java.io">java.io.InputStream</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+ <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/InputStream.html" title="class or interface in java.io">java.io.InputStream</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.util.FastInputStream</B>
</PRE>
<DL>
-<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/Closeable.html" title="class or interface in java.io">Closeable</A></DD>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Closeable.html" title="class or interface in java.io">Closeable</A></DD>
</DL>
<DL>
<DT><B>Direct Known Subclasses:</B> <DD><A HREF="../../../com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A></DD>
</DL>
<HR>
<DL>
-<DT><PRE>public class <B>FastInputStream</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/InputStream.html" title="class or interface in java.io">InputStream</A></DL>
+<DT><PRE>public class <B>FastInputStream</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/InputStream.html" title="class or interface in java.io">InputStream</A></DL>
</PRE>
<P>
A replacement for ByteArrayInputStream that does not synchronize every
byte read.
- <p>This class extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/InputStream.html" title="class or interface in java.io"><CODE>InputStream</CODE></A> and its <code>read()</code>
+ <p>This class extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/InputStream.html" title="class or interface in java.io"><CODE>InputStream</CODE></A> and its <code>read()</code>
methods allow it to be used as a standard input stream. In addition, it
provides <code>readFast()</code> methods that are not declared to throw
<code>IOException</code>. <code>IOException</code> is never thrown by this
@@ -326,19 +326,19 @@ A replacement for ByteArrayInputStream that does not synchronize every
&nbsp;<A NAME="methods_inherited_from_class_java.io.InputStream"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.io.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/InputStream.html" title="class or interface in java.io">InputStream</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/InputStream.html" title="class or interface in java.io">InputStream</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/InputStream.html#close()" title="class or interface in java.io">close</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/InputStream.html#close()" title="class or interface in java.io">close</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -444,7 +444,7 @@ available</H3>
public int <B>available</B>()</PRE>
<DL>
<DD><DL>
-<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/InputStream.html#available()" title="class or interface in java.io">available</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/InputStream.html" title="class or interface in java.io">InputStream</A></CODE></DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/InputStream.html#available()" title="class or interface in java.io">available</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/InputStream.html" title="class or interface in java.io">InputStream</A></CODE></DL>
</DD>
<DD><DL>
</DL>
@@ -458,7 +458,7 @@ markSupported</H3>
public boolean <B>markSupported</B>()</PRE>
<DL>
<DD><DL>
-<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/InputStream.html#markSupported()" title="class or interface in java.io">markSupported</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/InputStream.html" title="class or interface in java.io">InputStream</A></CODE></DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/InputStream.html#markSupported()" title="class or interface in java.io">markSupported</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/InputStream.html" title="class or interface in java.io">InputStream</A></CODE></DL>
</DD>
<DD><DL>
</DL>
@@ -472,7 +472,7 @@ mark</H3>
public void <B>mark</B>(int&nbsp;readLimit)</PRE>
<DL>
<DD><DL>
-<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/InputStream.html#mark(int)" title="class or interface in java.io">mark</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/InputStream.html" title="class or interface in java.io">InputStream</A></CODE></DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/InputStream.html#mark(int)" title="class or interface in java.io">mark</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/InputStream.html" title="class or interface in java.io">InputStream</A></CODE></DL>
</DD>
<DD><DL>
</DL>
@@ -486,7 +486,7 @@ reset</H3>
public void <B>reset</B>()</PRE>
<DL>
<DD><DL>
-<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/InputStream.html#reset()" title="class or interface in java.io">reset</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/InputStream.html" title="class or interface in java.io">InputStream</A></CODE></DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/InputStream.html#reset()" title="class or interface in java.io">reset</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/InputStream.html" title="class or interface in java.io">InputStream</A></CODE></DL>
</DD>
<DD><DL>
</DL>
@@ -500,7 +500,7 @@ skip</H3>
public long <B>skip</B>(long&nbsp;count)</PRE>
<DL>
<DD><DL>
-<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/InputStream.html#skip(long)" title="class or interface in java.io">skip</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/InputStream.html" title="class or interface in java.io">InputStream</A></CODE></DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/InputStream.html#skip(long)" title="class or interface in java.io">skip</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/InputStream.html" title="class or interface in java.io">InputStream</A></CODE></DL>
</DD>
<DD><DL>
</DL>
@@ -512,15 +512,15 @@ public long <B>skip</B>(long&nbsp;count)</PRE>
read</H3>
<PRE>
public int <B>read</B>()
- throws <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></PRE>
+ throws <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></PRE>
<DL>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/InputStream.html#read()" title="class or interface in java.io">read</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/InputStream.html" title="class or interface in java.io">InputStream</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/InputStream.html#read()" title="class or interface in java.io">read</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/InputStream.html" title="class or interface in java.io">InputStream</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></CODE></DL>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></CODE></DL>
</DD>
</DL>
<HR>
@@ -529,15 +529,15 @@ public int <B>read</B>()
read</H3>
<PRE>
public int <B>read</B>(byte[]&nbsp;toBuf)
- throws <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></PRE>
+ throws <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></PRE>
<DL>
<DD><DL>
-<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/InputStream.html#read(byte[])" title="class or interface in java.io">read</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/InputStream.html" title="class or interface in java.io">InputStream</A></CODE></DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/InputStream.html#read(byte[])" title="class or interface in java.io">read</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/InputStream.html" title="class or interface in java.io">InputStream</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></CODE></DL>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></CODE></DL>
</DD>
</DL>
<HR>
@@ -548,15 +548,15 @@ read</H3>
public int <B>read</B>(byte[]&nbsp;toBuf,
int&nbsp;offset,
int&nbsp;length)
- throws <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></PRE>
+ throws <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></PRE>
<DL>
<DD><DL>
-<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/InputStream.html#read(byte[], int, int)" title="class or interface in java.io">read</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/InputStream.html" title="class or interface in java.io">InputStream</A></CODE></DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/InputStream.html#read(byte[], int, int)" title="class or interface in java.io">read</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/InputStream.html" title="class or interface in java.io">InputStream</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></CODE></DL>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></CODE></DL>
</DD>
</DL>
<HR>
@@ -685,7 +685,7 @@ public final int <B>getBufferLength</B>()</PRE>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -721,6 +721,6 @@ DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/util/FastOutputStream.html b/db/docs/java/com/sleepycat/util/FastOutputStream.html
index 466be0ba1..f12d6abf2 100644
--- a/db/docs/java/com/sleepycat/util/FastOutputStream.html
+++ b/db/docs/java/com/sleepycat/util/FastOutputStream.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:48 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-FastOutputStream (Oracle Corporation - Berkeley DB Java API)
+FastOutputStream (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.util.FastOutputStream class">
@@ -14,7 +14,7 @@ FastOutputStream (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="FastOutputStream (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="FastOutputStream (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,26 +89,26 @@ com.sleepycat.util</FONT>
<BR>
Class FastOutputStream</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
- <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/OutputStream.html" title="class or interface in java.io">java.io.OutputStream</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+ <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/OutputStream.html" title="class or interface in java.io">java.io.OutputStream</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.util.FastOutputStream</B>
</PRE>
<DL>
-<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/Closeable.html" title="class or interface in java.io">Closeable</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/Flushable.html" title="class or interface in java.io">Flushable</A></DD>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Closeable.html" title="class or interface in java.io">Closeable</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Flushable.html" title="class or interface in java.io">Flushable</A></DD>
</DL>
<DL>
<DT><B>Direct Known Subclasses:</B> <DD><A HREF="../../../com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A></DD>
</DL>
<HR>
<DL>
-<DT><PRE>public class <B>FastOutputStream</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/OutputStream.html" title="class or interface in java.io">OutputStream</A></DL>
+<DT><PRE>public class <B>FastOutputStream</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/OutputStream.html" title="class or interface in java.io">OutputStream</A></DL>
</PRE>
<P>
A replacement for ByteArrayOutputStream that does not synchronize every
byte read.
- <p>This class extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/OutputStream.html" title="class or interface in java.io"><CODE>OutputStream</CODE></A> and its <code>write()</code>
+ <p>This class extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/OutputStream.html" title="class or interface in java.io"><CODE>OutputStream</CODE></A> and its <code>write()</code>
methods allow it to be used as a standard output stream. In addition, it
provides <code>writeFast()</code> methods that are not declared to throw
<code>IOException</code>. <code>IOException</code> is never thrown by this
@@ -267,7 +267,7 @@ A replacement for ByteArrayOutputStream that does not synchronize every
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/util/FastOutputStream.html#toString()">toString</A></B>()</CODE>
<BR>
@@ -275,8 +275,8 @@ A replacement for ByteArrayOutputStream that does not synchronize every
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/util/FastOutputStream.html#toString(java.lang.String)">toString</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;encoding)</CODE>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/util/FastOutputStream.html#toString(java.lang.String)">toString</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;encoding)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
@@ -339,7 +339,7 @@ A replacement for ByteArrayOutputStream that does not synchronize every
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/util/FastOutputStream.html#writeTo(java.io.OutputStream)">writeTo</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/OutputStream.html" title="class or interface in java.io">OutputStream</A>&nbsp;out)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/util/FastOutputStream.html#writeTo(java.io.OutputStream)">writeTo</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/OutputStream.html" title="class or interface in java.io">OutputStream</A>&nbsp;out)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
@@ -348,19 +348,19 @@ A replacement for ByteArrayOutputStream that does not synchronize every
&nbsp;<A NAME="methods_inherited_from_class_java.io.OutputStream"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.io.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/OutputStream.html" title="class or interface in java.io">OutputStream</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/OutputStream.html" title="class or interface in java.io">OutputStream</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/OutputStream.html#close()" title="class or interface in java.io">close</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/OutputStream.html#flush()" title="class or interface in java.io">flush</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/OutputStream.html#close()" title="class or interface in java.io">close</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/OutputStream.html#flush()" title="class or interface in java.io">flush</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -511,15 +511,15 @@ public void <B>reset</B>()</PRE>
write</H3>
<PRE>
public void <B>write</B>(int&nbsp;b)
- throws <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></PRE>
+ throws <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></PRE>
<DL>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/OutputStream.html#write(int)" title="class or interface in java.io">write</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/OutputStream.html" title="class or interface in java.io">OutputStream</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/OutputStream.html#write(int)" title="class or interface in java.io">write</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/OutputStream.html" title="class or interface in java.io">OutputStream</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></CODE></DL>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></CODE></DL>
</DD>
</DL>
<HR>
@@ -528,15 +528,15 @@ public void <B>write</B>(int&nbsp;b)
write</H3>
<PRE>
public void <B>write</B>(byte[]&nbsp;fromBuf)
- throws <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></PRE>
+ throws <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></PRE>
<DL>
<DD><DL>
-<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/OutputStream.html#write(byte[])" title="class or interface in java.io">write</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/OutputStream.html" title="class or interface in java.io">OutputStream</A></CODE></DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/OutputStream.html#write(byte[])" title="class or interface in java.io">write</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/OutputStream.html" title="class or interface in java.io">OutputStream</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></CODE></DL>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></CODE></DL>
</DD>
</DL>
<HR>
@@ -547,15 +547,15 @@ write</H3>
public void <B>write</B>(byte[]&nbsp;fromBuf,
int&nbsp;offset,
int&nbsp;length)
- throws <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></PRE>
+ throws <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></PRE>
<DL>
<DD><DL>
-<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/OutputStream.html#write(byte[], int, int)" title="class or interface in java.io">write</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/OutputStream.html" title="class or interface in java.io">OutputStream</A></CODE></DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/OutputStream.html#write(byte[], int, int)" title="class or interface in java.io">write</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/OutputStream.html" title="class or interface in java.io">OutputStream</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></CODE></DL>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></CODE></DL>
</DD>
</DL>
<HR>
@@ -563,13 +563,13 @@ public void <B>write</B>(byte[]&nbsp;fromBuf,
<A NAME="writeTo(java.io.OutputStream)"><!-- --></A><H3>
writeTo</H3>
<PRE>
-public void <B>writeTo</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/OutputStream.html" title="class or interface in java.io">OutputStream</A>&nbsp;out)
- throws <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></PRE>
+public void <B>writeTo</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/OutputStream.html" title="class or interface in java.io">OutputStream</A>&nbsp;out)
+ throws <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></PRE>
<DL>
<DD><DL>
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></CODE></DL>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></CODE></DL>
</DD>
</DL>
<HR>
@@ -577,10 +577,10 @@ public void <B>writeTo</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/i
<A NAME="toString()"><!-- --></A><H3>
toString</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
<DL>
<DD><DL>
-<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
</DD>
<DD><DL>
</DL>
@@ -591,13 +591,13 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" tit
<A NAME="toString(java.lang.String)"><!-- --></A><H3>
toString</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;encoding)
- throws <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/UnsupportedEncodingException.html" title="class or interface in java.io">UnsupportedEncodingException</A></PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;encoding)
+ throws <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/UnsupportedEncodingException.html" title="class or interface in java.io">UnsupportedEncodingException</A></PRE>
<DL>
<DD><DL>
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/UnsupportedEncodingException.html" title="class or interface in java.io">UnsupportedEncodingException</A></CODE></DL>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/UnsupportedEncodingException.html" title="class or interface in java.io">UnsupportedEncodingException</A></CODE></DL>
</DD>
</DL>
<HR>
@@ -750,7 +750,7 @@ public void <B>addSize</B>(int&nbsp;sizeAdded)</PRE>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -786,6 +786,6 @@ DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/util/IOExceptionWrapper.html b/db/docs/java/com/sleepycat/util/IOExceptionWrapper.html
index dd09e3117..0e0faa8af 100644
--- a/db/docs/java/com/sleepycat/util/IOExceptionWrapper.html
+++ b/db/docs/java/com/sleepycat/util/IOExceptionWrapper.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:48 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-IOExceptionWrapper (Oracle Corporation - Berkeley DB Java API)
+IOExceptionWrapper (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.util.IOExceptionWrapper class">
@@ -14,7 +14,7 @@ IOExceptionWrapper (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="IOExceptionWrapper (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="IOExceptionWrapper (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,18 +89,18 @@ com.sleepycat.util</FONT>
<BR>
Class IOExceptionWrapper</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
- <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">java.lang.Throwable</A>
- <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Exception.html" title="class or interface in java.lang">java.lang.Exception</A>
- <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/IOException.html" title="class or interface in java.io">java.io.IOException</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+ <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">java.lang.Throwable</A>
+ <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Exception.html" title="class or interface in java.lang">java.lang.Exception</A>
+ <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/IOException.html" title="class or interface in java.io">java.io.IOException</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.util.IOExceptionWrapper</B>
</PRE>
<DL>
-<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../com/sleepycat/util/ExceptionWrapper.html" title="interface in com.sleepycat.util">ExceptionWrapper</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/Serializable.html" title="class or interface in java.io">Serializable</A></DD>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../com/sleepycat/util/ExceptionWrapper.html" title="interface in com.sleepycat.util">ExceptionWrapper</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Serializable.html" title="class or interface in java.io">Serializable</A></DD>
</DL>
<HR>
<DL>
-<DT><PRE>public class <B>IOExceptionWrapper</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A><DT>implements <A HREF="../../../com/sleepycat/util/ExceptionWrapper.html" title="interface in com.sleepycat.util">ExceptionWrapper</A></DL>
+<DT><PRE>public class <B>IOExceptionWrapper</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A><DT>implements <A HREF="../../../com/sleepycat/util/ExceptionWrapper.html" title="interface in com.sleepycat.util">ExceptionWrapper</A></DL>
</PRE>
<P>
@@ -123,7 +123,7 @@ An IOException that can contain nested exceptions.
<B>Constructor Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><B><A HREF="../../../com/sleepycat/util/IOExceptionWrapper.html#IOExceptionWrapper(java.lang.Throwable)">IOExceptionWrapper</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A>&nbsp;e)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/util/IOExceptionWrapper.html#IOExceptionWrapper(java.lang.Throwable)">IOExceptionWrapper</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A>&nbsp;e)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
@@ -140,7 +140,7 @@ An IOException that can contain nested exceptions.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/util/IOExceptionWrapper.html#getCause()">getCause</A></B>()</CODE>
<BR>
@@ -148,7 +148,7 @@ An IOException that can contain nested exceptions.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/util/IOExceptionWrapper.html#getDetail()">getDetail</A></B>()</CODE>
<BR>
@@ -158,19 +158,19 @@ An IOException that can contain nested exceptions.
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Throwable"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang">fillInStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang">getLocalizedMessage</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang">getMessage</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang">getStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang">initCause</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement[])" title="class or interface in java.lang">setStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#toString()" title="class or interface in java.lang">toString</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang">fillInStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang">getLocalizedMessage</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang">getMessage</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang">getStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang">initCause</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement[])" title="class or interface in java.lang">setStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#toString()" title="class or interface in java.lang">toString</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -189,7 +189,7 @@ An IOException that can contain nested exceptions.
<A NAME="IOExceptionWrapper(java.lang.Throwable)"><!-- --></A><H3>
IOExceptionWrapper</H3>
<PRE>
-public <B>IOExceptionWrapper</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A>&nbsp;e)</PRE>
+public <B>IOExceptionWrapper</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A>&nbsp;e)</PRE>
<DL>
</DL>
@@ -206,7 +206,7 @@ public <B>IOExceptionWrapper</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/
<A NAME="getDetail()"><!-- --></A><H3>
getDetail</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A> <B>getDetail</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A> <B>getDetail</B>()</PRE>
<DL>
<DD><B>Deprecated.</B>&nbsp;<I>replaced by <A HREF="../../../com/sleepycat/util/IOExceptionWrapper.html#getCause()"><CODE>getCause()</CODE></A>.</I>
<P>
@@ -226,7 +226,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html"
<A NAME="getCause()"><!-- --></A><H3>
getCause</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A> <B>getCause</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A> <B>getCause</B>()</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../com/sleepycat/util/ExceptionWrapper.html#getCause()">ExceptionWrapper</A></CODE></B></DD>
<DD>Returns the nested exception or null if none is present.
@@ -237,7 +237,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html"
1.4 runtime will print the nested stack trace.</p>
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="../../../com/sleepycat/util/ExceptionWrapper.html#getCause()">getCause</A></CODE> in interface <CODE><A HREF="../../../com/sleepycat/util/ExceptionWrapper.html" title="interface in com.sleepycat.util">ExceptionWrapper</A></CODE><DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#getCause()" title="class or interface in java.lang">getCause</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../com/sleepycat/util/ExceptionWrapper.html#getCause()">getCause</A></CODE> in interface <CODE><A HREF="../../../com/sleepycat/util/ExceptionWrapper.html" title="interface in com.sleepycat.util">ExceptionWrapper</A></CODE><DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getCause()" title="class or interface in java.lang">getCause</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A></CODE></DL>
</DD>
<DD><DL>
@@ -269,7 +269,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html"
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -305,6 +305,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&n
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/util/PackedInteger.html b/db/docs/java/com/sleepycat/util/PackedInteger.html
index 06b681d80..e2bd0794b 100644
--- a/db/docs/java/com/sleepycat/util/PackedInteger.html
+++ b/db/docs/java/com/sleepycat/util/PackedInteger.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:48 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-PackedInteger (Oracle Corporation - Berkeley DB Java API)
+PackedInteger (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.util.PackedInteger class">
@@ -14,7 +14,7 @@ PackedInteger (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="PackedInteger (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="PackedInteger (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,12 +89,12 @@ com.sleepycat.util</FONT>
<BR>
Class PackedInteger</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.util.PackedInteger</B>
</PRE>
<HR>
<DL>
-<DT><PRE>public class <B>PackedInteger</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
+<DT><PRE>public class <B>PackedInteger</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
</PRE>
<P>
@@ -109,13 +109,15 @@ Static methods for reading and writing packed integers.
of additional bytes. The additional bytes store (abs(value) - 119) as an
unsigned little endian integer.</p>
- <p>To read and write packed integer values, call <A HREF="../../../com/sleepycat/util/PackedInteger.html#readInt(byte[], int)"><CODE>readInt(byte[], int)</CODE></A> and <A HREF="../../../com/sleepycat/util/PackedInteger.html#writeInt(byte[], int, int)"><CODE>writeInt(byte[], int, int)</CODE></A>. To get the length of a packed integer without reading it, call
- <A HREF="../../../com/sleepycat/util/PackedInteger.html#getReadIntLength(byte[], int)"><CODE>getReadIntLength(byte[], int)</CODE></A>. To get the length of an unpacked integer without
- writing it, call <A HREF="../../../com/sleepycat/util/PackedInteger.html#getWriteIntLength(int)"><CODE>getWriteIntLength(int)</CODE></A>.</p>
+ <p>To read and write packed integer values, call <A HREF="../../../com/sleepycat/util/PackedInteger.html#readInt(byte[], int)"><CODE>readInt(byte[], int)</CODE></A> and <A HREF="../../../com/sleepycat/util/PackedInteger.html#writeInt(byte[], int, int)"><CODE>writeInt(byte[], int, int)</CODE></A> or for long values <A HREF="../../../com/sleepycat/util/PackedInteger.html#readLong(byte[], int)"><CODE>readLong(byte[], int)</CODE></A> and <A HREF="../../../com/sleepycat/util/PackedInteger.html#writeLong(byte[], int, long)"><CODE>writeLong(byte[], int, long)</CODE></A>. To
+ get the length of a packed integer without reading it, call <A HREF="../../../com/sleepycat/util/PackedInteger.html#getReadIntLength(byte[], int)"><CODE>getReadIntLength(byte[], int)</CODE></A> or <A HREF="../../../com/sleepycat/util/PackedInteger.html#getReadLongLength(byte[], int)"><CODE>getReadLongLength(byte[], int)</CODE></A>. To get the length of an
+ unpacked integer without writing it, call <A HREF="../../../com/sleepycat/util/PackedInteger.html#getWriteIntLength(int)"><CODE>getWriteIntLength(int)</CODE></A> or
+ <A HREF="../../../com/sleepycat/util/PackedInteger.html#getWriteLongLength(long)"><CODE>getWriteLongLength(long)</CODE></A>.</p>
- <p>Note that the packed integer format is designed to accomodate long
- integers using up to 9 bytes of storage. Currently only int values are
- implemented, but the same format may be used in future for long values.</p>
+ <p>Because the same packed format is used for int and long values, stored
+ int values may be expanded to long values without introducing a format
+ incompatibility. You can treat previously stored packed int values as long
+ values by calling <A HREF="../../../com/sleepycat/util/PackedInteger.html#readLong(byte[], int)"><CODE>readLong(byte[], int)</CODE></A> and <A HREF="../../../com/sleepycat/util/PackedInteger.html#getReadLongLength(byte[], int)"><CODE>getReadLongLength(byte[], int)</CODE></A>.</p>
<P>
<P>
@@ -138,6 +140,14 @@ Static methods for reading and writing packed integers.
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The maximum number of bytes needed to store an int value (5).</TD>
</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/util/PackedInteger.html#MAX_LONG_LENGTH">MAX_LONG_LENGTH</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The maximum number of bytes needed to store a long value (9).</TD>
+</TR>
</TABLE>
&nbsp;
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
@@ -176,6 +186,15 @@ Static methods for reading and writing packed integers.
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/util/PackedInteger.html#getReadLongLength(byte[], int)">getReadLongLength</A></B>(byte[]&nbsp;buf,
+ int&nbsp;off)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the number of bytes that would be read by <A HREF="../../../com/sleepycat/util/PackedInteger.html#readLong(byte[], int)"><CODE>readLong(byte[], int)</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/util/PackedInteger.html#getWriteIntLength(int)">getWriteIntLength</A></B>(int&nbsp;value)</CODE>
<BR>
@@ -184,6 +203,14 @@ Static methods for reading and writing packed integers.
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/util/PackedInteger.html#getWriteLongLength(long)">getWriteLongLength</A></B>(long&nbsp;value)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the number of bytes that would be written by <A HREF="../../../com/sleepycat/util/PackedInteger.html#writeLong(byte[], int, long)"><CODE>writeLong(byte[], int, long)</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/util/PackedInteger.html#readInt(byte[], int)">readInt</A></B>(byte[]&nbsp;buf,
int&nbsp;off)</CODE>
@@ -192,6 +219,15 @@ Static methods for reading and writing packed integers.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;long</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/util/PackedInteger.html#readLong(byte[], int)">readLong</A></B>(byte[]&nbsp;buf,
+ int&nbsp;off)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Reads a packed long integer at the given buffer offset and returns it.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/util/PackedInteger.html#writeInt(byte[], int, int)">writeInt</A></B>(byte[]&nbsp;buf,
int&nbsp;offset,
@@ -201,14 +237,25 @@ Static methods for reading and writing packed integers.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Writes a packed integer starting at the given buffer offset and returns
the next offset to be written.</TD>
</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../com/sleepycat/util/PackedInteger.html#writeLong(byte[], int, long)">writeLong</A></B>(byte[]&nbsp;buf,
+ int&nbsp;offset,
+ long&nbsp;value)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Writes a packed long integer starting at the given buffer offset and
+ returns the next offset to be written.</TD>
+</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -229,13 +276,23 @@ MAX_LENGTH</H3>
<PRE>
public static final int <B>MAX_LENGTH</B></PRE>
<DL>
-<DD>The maximum number of bytes needed to store an int value (5). The fifth
- byte is only needed for values greater than (Integer.MAX_VALUE - 119) or
- less than (Integer.MIN_VALUE + 119).
+<DD>The maximum number of bytes needed to store an int value (5).
<P>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../constant-values.html#com.sleepycat.util.PackedInteger.MAX_LENGTH">Constant Field Values</A></DL>
</DL>
+<HR>
+
+<A NAME="MAX_LONG_LENGTH"><!-- --></A><H3>
+MAX_LONG_LENGTH</H3>
+<PRE>
+public static final int <B>MAX_LONG_LENGTH</B></PRE>
+<DL>
+<DD>The maximum number of bytes needed to store a long value (9).
+<P>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../constant-values.html#com.sleepycat.util.PackedInteger.MAX_LONG_LENGTH">Constant Field Values</A></DL>
+</DL>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
@@ -279,6 +336,21 @@ public static int <B>readInt</B>(byte[]&nbsp;buf,
</DL>
<HR>
+<A NAME="readLong(byte[], int)"><!-- --></A><H3>
+readLong</H3>
+<PRE>
+public static long <B>readLong</B>(byte[]&nbsp;buf,
+ int&nbsp;off)</PRE>
+<DL>
+<DD>Reads a packed long integer at the given buffer offset and returns it.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>buf</CODE> - the buffer to read from.<DD><CODE>off</CODE> - the offset in the buffer at which to start reading.
+<DT><B>Returns:</B><DD>the long integer that was read.</DL>
+</DD>
+</DL>
+<HR>
+
<A NAME="getReadIntLength(byte[], int)"><!-- --></A><H3>
getReadIntLength</H3>
<PRE>
@@ -286,6 +358,29 @@ public static int <B>getReadIntLength</B>(byte[]&nbsp;buf,
int&nbsp;off)</PRE>
<DL>
<DD>Returns the number of bytes that would be read by <A HREF="../../../com/sleepycat/util/PackedInteger.html#readInt(byte[], int)"><CODE>readInt(byte[], int)</CODE></A>.
+
+ <p>Because the length is stored in the first byte, this method may be
+ called with only the first byte of the packed integer in the given
+ buffer. This method only accesses one byte at the given offset.</p>
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>buf</CODE> - the buffer to read from.<DD><CODE>off</CODE> - the offset in the buffer at which to start reading.
+<DT><B>Returns:</B><DD>the number of bytes that would be read.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getReadLongLength(byte[], int)"><!-- --></A><H3>
+getReadLongLength</H3>
+<PRE>
+public static int <B>getReadLongLength</B>(byte[]&nbsp;buf,
+ int&nbsp;off)</PRE>
+<DL>
+<DD>Returns the number of bytes that would be read by <A HREF="../../../com/sleepycat/util/PackedInteger.html#readLong(byte[], int)"><CODE>readLong(byte[], int)</CODE></A>.
+
+ <p>Because the length is stored in the first byte, this method may be
+ called with only the first byte of the packed integer in the given
+ buffer. This method only accesses one byte at the given offset.</p>
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>buf</CODE> - the buffer to read from.<DD><CODE>off</CODE> - the offset in the buffer at which to start reading.
@@ -311,6 +406,23 @@ public static int <B>writeInt</B>(byte[]&nbsp;buf,
</DL>
<HR>
+<A NAME="writeLong(byte[], int, long)"><!-- --></A><H3>
+writeLong</H3>
+<PRE>
+public static int <B>writeLong</B>(byte[]&nbsp;buf,
+ int&nbsp;offset,
+ long&nbsp;value)</PRE>
+<DL>
+<DD>Writes a packed long integer starting at the given buffer offset and
+ returns the next offset to be written.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>buf</CODE> - the buffer to write to.<DD><CODE>offset</CODE> - the offset in the buffer at which to start writing.<DD><CODE>value</CODE> - the long integer to be written.
+<DT><B>Returns:</B><DD>the offset past the bytes written.</DL>
+</DD>
+</DL>
+<HR>
+
<A NAME="getWriteIntLength(int)"><!-- --></A><H3>
getWriteIntLength</H3>
<PRE>
@@ -324,6 +436,21 @@ public static int <B>getWriteIntLength</B>(int&nbsp;value)</PRE>
integer.</DL>
</DD>
</DL>
+<HR>
+
+<A NAME="getWriteLongLength(long)"><!-- --></A><H3>
+getWriteLongLength</H3>
+<PRE>
+public static int <B>getWriteLongLength</B>(long&nbsp;value)</PRE>
+<DL>
+<DD>Returns the number of bytes that would be written by <A HREF="../../../com/sleepycat/util/PackedInteger.html#writeLong(byte[], int, long)"><CODE>writeLong(byte[], int, long)</CODE></A>.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>value</CODE> - the long integer to be written.
+<DT><B>Returns:</B><DD>the number of bytes that would be used to write the given long
+ integer.</DL>
+</DD>
+</DL>
<!-- ========= END OF CLASS DATA ========= -->
<HR>
@@ -349,7 +476,7 @@ public static int <B>getWriteIntLength</B>(int&nbsp;value)</PRE>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -385,6 +512,6 @@ DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/util/RuntimeExceptionWrapper.html b/db/docs/java/com/sleepycat/util/RuntimeExceptionWrapper.html
index c415d9288..d90425d6b 100644
--- a/db/docs/java/com/sleepycat/util/RuntimeExceptionWrapper.html
+++ b/db/docs/java/com/sleepycat/util/RuntimeExceptionWrapper.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:48 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-RuntimeExceptionWrapper (Oracle Corporation - Berkeley DB Java API)
+RuntimeExceptionWrapper (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.util.RuntimeExceptionWrapper class">
@@ -14,7 +14,7 @@ RuntimeExceptionWrapper (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="RuntimeExceptionWrapper (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="RuntimeExceptionWrapper (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,18 +89,18 @@ com.sleepycat.util</FONT>
<BR>
Class RuntimeExceptionWrapper</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
- <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">java.lang.Throwable</A>
- <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Exception.html" title="class or interface in java.lang">java.lang.Exception</A>
- <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/RuntimeException.html" title="class or interface in java.lang">java.lang.RuntimeException</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+ <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">java.lang.Throwable</A>
+ <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Exception.html" title="class or interface in java.lang">java.lang.Exception</A>
+ <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/RuntimeException.html" title="class or interface in java.lang">java.lang.RuntimeException</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.util.RuntimeExceptionWrapper</B>
</PRE>
<DL>
-<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../com/sleepycat/util/ExceptionWrapper.html" title="interface in com.sleepycat.util">ExceptionWrapper</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/Serializable.html" title="class or interface in java.io">Serializable</A></DD>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../com/sleepycat/util/ExceptionWrapper.html" title="interface in com.sleepycat.util">ExceptionWrapper</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Serializable.html" title="class or interface in java.io">Serializable</A></DD>
</DL>
<HR>
<DL>
-<DT><PRE>public class <B>RuntimeExceptionWrapper</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/RuntimeException.html" title="class or interface in java.lang">RuntimeException</A><DT>implements <A HREF="../../../com/sleepycat/util/ExceptionWrapper.html" title="interface in com.sleepycat.util">ExceptionWrapper</A></DL>
+<DT><PRE>public class <B>RuntimeExceptionWrapper</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/RuntimeException.html" title="class or interface in java.lang">RuntimeException</A><DT>implements <A HREF="../../../com/sleepycat/util/ExceptionWrapper.html" title="interface in com.sleepycat.util">ExceptionWrapper</A></DL>
</PRE>
<P>
@@ -123,7 +123,7 @@ A RuntimeException that can contain nested exceptions.
<B>Constructor Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><B><A HREF="../../../com/sleepycat/util/RuntimeExceptionWrapper.html#RuntimeExceptionWrapper(java.lang.Throwable)">RuntimeExceptionWrapper</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A>&nbsp;e)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/util/RuntimeExceptionWrapper.html#RuntimeExceptionWrapper(java.lang.Throwable)">RuntimeExceptionWrapper</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A>&nbsp;e)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
@@ -140,7 +140,7 @@ A RuntimeException that can contain nested exceptions.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/util/RuntimeExceptionWrapper.html#getCause()">getCause</A></B>()</CODE>
<BR>
@@ -148,7 +148,7 @@ A RuntimeException that can contain nested exceptions.
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A></CODE></FONT></TD>
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/util/RuntimeExceptionWrapper.html#getDetail()">getDetail</A></B>()</CODE>
<BR>
@@ -158,19 +158,19 @@ A RuntimeException that can contain nested exceptions.
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Throwable"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang">fillInStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang">getLocalizedMessage</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang">getMessage</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang">getStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang">initCause</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement[])" title="class or interface in java.lang">setStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#toString()" title="class or interface in java.lang">toString</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang">fillInStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang">getLocalizedMessage</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang">getMessage</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang">getStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang">initCause</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang">printStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement[])" title="class or interface in java.lang">setStackTrace</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#toString()" title="class or interface in java.lang">toString</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -189,7 +189,7 @@ A RuntimeException that can contain nested exceptions.
<A NAME="RuntimeExceptionWrapper(java.lang.Throwable)"><!-- --></A><H3>
RuntimeExceptionWrapper</H3>
<PRE>
-public <B>RuntimeExceptionWrapper</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A>&nbsp;e)</PRE>
+public <B>RuntimeExceptionWrapper</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A>&nbsp;e)</PRE>
<DL>
</DL>
@@ -206,7 +206,7 @@ public <B>RuntimeExceptionWrapper</B>(<A HREF="http://java.sun.com/j2se/1.3/docs
<A NAME="getDetail()"><!-- --></A><H3>
getDetail</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A> <B>getDetail</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A> <B>getDetail</B>()</PRE>
<DL>
<DD><B>Deprecated.</B>&nbsp;<I>replaced by <A HREF="../../../com/sleepycat/util/RuntimeExceptionWrapper.html#getCause()"><CODE>getCause()</CODE></A>.</I>
<P>
@@ -226,7 +226,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html"
<A NAME="getCause()"><!-- --></A><H3>
getCause</H3>
<PRE>
-public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A> <B>getCause</B>()</PRE>
+public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A> <B>getCause</B>()</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../com/sleepycat/util/ExceptionWrapper.html#getCause()">ExceptionWrapper</A></CODE></B></DD>
<DD>Returns the nested exception or null if none is present.
@@ -237,7 +237,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html"
1.4 runtime will print the nested stack trace.</p>
<P>
<DD><DL>
-<DT><B>Specified by:</B><DD><CODE><A HREF="../../../com/sleepycat/util/ExceptionWrapper.html#getCause()">getCause</A></CODE> in interface <CODE><A HREF="../../../com/sleepycat/util/ExceptionWrapper.html" title="interface in com.sleepycat.util">ExceptionWrapper</A></CODE><DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html#getCause()" title="class or interface in java.lang">getCause</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A></CODE></DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../com/sleepycat/util/ExceptionWrapper.html#getCause()">getCause</A></CODE> in interface <CODE><A HREF="../../../com/sleepycat/util/ExceptionWrapper.html" title="interface in com.sleepycat.util">ExceptionWrapper</A></CODE><DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html#getCause()" title="class or interface in java.lang">getCause</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A></CODE></DL>
</DD>
<DD><DL>
@@ -269,7 +269,7 @@ public <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html"
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -305,6 +305,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&n
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/util/UtfOps.html b/db/docs/java/com/sleepycat/util/UtfOps.html
index 95ebbe8f5..93a834bc6 100644
--- a/db/docs/java/com/sleepycat/util/UtfOps.html
+++ b/db/docs/java/com/sleepycat/util/UtfOps.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:48 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-UtfOps (Oracle Corporation - Berkeley DB Java API)
+UtfOps (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.util.UtfOps class">
@@ -14,7 +14,7 @@ UtfOps (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="UtfOps (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="UtfOps (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -89,12 +89,12 @@ com.sleepycat.util</FONT>
<BR>
Class UtfOps</H2>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.util.UtfOps</B>
</PRE>
<HR>
<DL>
-<DT><PRE>public class <B>UtfOps</B><DT>extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
+<DT><PRE>public class <B>UtfOps</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></DL>
</PRE>
<P>
@@ -146,7 +146,7 @@ UTF operations with more flexibility than is provided by DataInput and
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<CODE>static&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/sleepycat/util/UtfOps.html#bytesToString(byte[], int, int)">bytesToString</A></B>(byte[]&nbsp;bytes,
int&nbsp;offset,
int&nbsp;length)</CODE>
@@ -217,7 +217,7 @@ UTF operations with more flexibility than is provided by DataInput and
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;byte[]</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../com/sleepycat/util/UtfOps.html#stringToBytes(java.lang.String)">stringToBytes</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;string)</CODE>
+<TD><CODE><B><A HREF="../../../com/sleepycat/util/UtfOps.html#stringToBytes(java.lang.String)">stringToBytes</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;string)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Converts strings to byte arrays.</TD>
@@ -226,10 +226,10 @@ UTF operations with more flexibility than is provided by DataInput and
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
@@ -267,7 +267,7 @@ getZeroTerminatedByteLength</H3>
<PRE>
public static int <B>getZeroTerminatedByteLength</B>(byte[]&nbsp;bytes,
int&nbsp;offset)
- throws <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></PRE>
+ throws <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></PRE>
<DL>
<DD>Returns the byte length of a null terminated UTF string, not including
the terminator.
@@ -276,7 +276,7 @@ public static int <B>getZeroTerminatedByteLength</B>(byte[]&nbsp;bytes,
<DT><B>Parameters:</B><DD><CODE>bytes</CODE> - the data containing the UTF string.<DD><CODE>offset</CODE> - the beginning of the string the measure.
<DT><B>Returns:</B><DD>the number of bytes.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></CODE> - if no zero terminator is found.</DL>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></CODE> - if no zero terminator is found.</DL>
</DD>
</DL>
<HR>
@@ -317,8 +317,8 @@ public static int <B>getByteLength</B>(char[]&nbsp;chars,
getCharLength</H3>
<PRE>
public static int <B>getCharLength</B>(byte[]&nbsp;bytes)
- throws <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A>,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></PRE>
+ throws <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A>,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></PRE>
<DL>
<DD>Returns the number of characters represented by the given UTF string.
<P>
@@ -326,9 +326,9 @@ public static int <B>getCharLength</B>(byte[]&nbsp;bytes)
<DT><B>Parameters:</B><DD><CODE>bytes</CODE> - the UTF string.
<DT><B>Returns:</B><DD>the number of characters.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></CODE> - if a UTF character sequence at the end
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></CODE> - if a UTF character sequence at the end
of the data is not complete.
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an illegal UTF sequence is
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an illegal UTF sequence is
encountered.</DL>
</DD>
</DL>
@@ -340,17 +340,17 @@ getCharLength</H3>
public static int <B>getCharLength</B>(byte[]&nbsp;bytes,
int&nbsp;offset,
int&nbsp;length)
- throws <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A>,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></PRE>
+ throws <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A>,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></PRE>
<DL>
<DD>Returns the number of characters represented by the given UTF string.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>bytes</CODE> - the data containing the UTF string.<DD><CODE>offset</CODE> - the first byte to be converted.<DD><CODE>length</CODE> - the number of byte to be converted.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></CODE> - if a UTF character sequence at the end
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></CODE> - if a UTF character sequence at the end
of the data is not complete.
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an illegal UTF sequence is
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an illegal UTF sequence is
encountered.</DL>
</DD>
</DL>
@@ -365,8 +365,8 @@ public static int <B>bytesToChars</B>(byte[]&nbsp;bytes,
int&nbsp;charOffset,
int&nbsp;len,
boolean&nbsp;isByteLen)
- throws <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A>,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></PRE>
+ throws <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A>,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></PRE>
<DL>
<DD>Converts byte arrays into character arrays.
<P>
@@ -375,9 +375,9 @@ public static int <B>bytesToChars</B>(byte[]&nbsp;bytes,
to start the conversion<DD><CODE>chars</CODE> - the destination array<DD><CODE>charOffset</CODE> - the offset into chars at which to begin the copy<DD><CODE>len</CODE> - the amount of information to copy into chars<DD><CODE>isByteLen</CODE> - if true then len is a measure of bytes, otherwise
len is a measure of characters
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></CODE> - if a UTF character sequence at the end
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></CODE> - if a UTF character sequence at the end
of the data is not complete.
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an illegal UTF sequence is
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an illegal UTF sequence is
encountered.</DL>
</DD>
</DL>
@@ -404,11 +404,11 @@ public static void <B>charsToBytes</B>(char[]&nbsp;chars,
<A NAME="bytesToString(byte[], int, int)"><!-- --></A><H3>
bytesToString</H3>
<PRE>
-public static <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>bytesToString</B>(byte[]&nbsp;bytes,
+public static <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>bytesToString</B>(byte[]&nbsp;bytes,
int&nbsp;offset,
int&nbsp;length)
- throws <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A>,
- <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></PRE>
+ throws <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A>,
+ <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></PRE>
<DL>
<DD>Converts byte arrays into strings.
<P>
@@ -417,9 +417,9 @@ public static <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.ht
to start the conversion<DD><CODE>length</CODE> - the number of bytes to be converted.
<DT><B>Returns:</B><DD>the string.
<DT><B>Throws:</B>
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></CODE> - if a UTF character sequence at the end
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang">IndexOutOfBoundsException</A></CODE> - if a UTF character sequence at the end
of the data is not complete.
-<DD><CODE><A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an illegal UTF sequence is
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an illegal UTF sequence is
encountered.</DL>
</DD>
</DL>
@@ -428,7 +428,7 @@ public static <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.ht
<A NAME="stringToBytes(java.lang.String)"><!-- --></A><H3>
stringToBytes</H3>
<PRE>
-public static byte[] <B>stringToBytes</B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;string)</PRE>
+public static byte[] <B>stringToBytes</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;string)</PRE>
<DL>
<DD>Converts strings to byte arrays.
<P>
@@ -462,7 +462,7 @@ public static byte[] <B>stringToBytes</B>(<A HREF="http://java.sun.com/j2se/1.3/
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -498,6 +498,6 @@ DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&n
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/util/class-use/ExceptionUnwrapper.html b/db/docs/java/com/sleepycat/util/class-use/ExceptionUnwrapper.html
index b1236d9f9..03ed2ba35 100644
--- a/db/docs/java/com/sleepycat/util/class-use/ExceptionUnwrapper.html
+++ b/db/docs/java/com/sleepycat/util/class-use/ExceptionUnwrapper.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:57:00 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.util.ExceptionUnwrapper (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.util.ExceptionUnwrapper (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.util.ExceptionUnwrapper (Oracle Corporation - Berkel
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.util.ExceptionUnwrapper (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.util.ExceptionUnwrapper (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -105,7 +105,7 @@ No usage of com.sleepycat.util.ExceptionUnwrapper
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -135,6 +135,6 @@ No usage of com.sleepycat.util.ExceptionUnwrapper
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/util/class-use/ExceptionWrapper.html b/db/docs/java/com/sleepycat/util/class-use/ExceptionWrapper.html
index beff6ad1d..54c325404 100644
--- a/db/docs/java/com/sleepycat/util/class-use/ExceptionWrapper.html
+++ b/db/docs/java/com/sleepycat/util/class-use/ExceptionWrapper.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:57:00 EDT 2007 -->
<TITLE>
-Uses of Interface com.sleepycat.util.ExceptionWrapper (Oracle Corporation - Berkeley DB Java API)
+Uses of Interface com.sleepycat.util.ExceptionWrapper (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Interface com.sleepycat.util.ExceptionWrapper (Oracle Corporation - Berk
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Interface com.sleepycat.util.ExceptionWrapper (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Interface com.sleepycat.util.ExceptionWrapper (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -149,7 +149,7 @@ Uses of <A HREF="../../../../com/sleepycat/util/ExceptionWrapper.html" title="in
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -179,6 +179,6 @@ Uses of <A HREF="../../../../com/sleepycat/util/ExceptionWrapper.html" title="in
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/util/class-use/FastInputStream.html b/db/docs/java/com/sleepycat/util/class-use/FastInputStream.html
index 0931e04f0..1ea021cec 100644
--- a/db/docs/java/com/sleepycat/util/class-use/FastInputStream.html
+++ b/db/docs/java/com/sleepycat/util/class-use/FastInputStream.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:57:00 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.util.FastInputStream (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.util.FastInputStream (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.util.FastInputStream (Oracle Corporation - Berkeley
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.util.FastInputStream (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.util.FastInputStream (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -142,7 +142,7 @@ Uses of <A HREF="../../../../com/sleepycat/util/FastInputStream.html" title="cla
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -172,6 +172,6 @@ Uses of <A HREF="../../../../com/sleepycat/util/FastInputStream.html" title="cla
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/util/class-use/FastOutputStream.html b/db/docs/java/com/sleepycat/util/class-use/FastOutputStream.html
index 166b8b065..51d8afaa2 100644
--- a/db/docs/java/com/sleepycat/util/class-use/FastOutputStream.html
+++ b/db/docs/java/com/sleepycat/util/class-use/FastOutputStream.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:57:00 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.util.FastOutputStream (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.util.FastOutputStream (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.util.FastOutputStream (Oracle Corporation - Berkeley
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.util.FastOutputStream (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.util.FastOutputStream (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -113,7 +113,7 @@ Uses of <A HREF="../../../../com/sleepycat/util/FastOutputStream.html" title="cl
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../../com/sleepycat/util/FastOutputStream.html" title="class in com.sleepycat.util">FastOutputStream</A></CODE></FONT></TD>
-<TD><CODE><B>SerialBase.</B><B><A HREF="../../../../com/sleepycat/bind/serial/SerialBase.html#getSerialOutput(java.lang.Object)">getSerialOutput</A></B>(<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
+<TD><CODE><B>SerialBase.</B><B><A HREF="../../../../com/sleepycat/bind/serial/SerialBase.html#getSerialOutput(java.lang.Object)">getSerialOutput</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns an empty SerialOutput instance that will be used by the serial
@@ -172,7 +172,7 @@ Uses of <A HREF="../../../../com/sleepycat/util/FastOutputStream.html" title="cl
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -202,6 +202,6 @@ Uses of <A HREF="../../../../com/sleepycat/util/FastOutputStream.html" title="cl
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/util/class-use/IOExceptionWrapper.html b/db/docs/java/com/sleepycat/util/class-use/IOExceptionWrapper.html
index 39e6e5a7c..3bfd10ef5 100644
--- a/db/docs/java/com/sleepycat/util/class-use/IOExceptionWrapper.html
+++ b/db/docs/java/com/sleepycat/util/class-use/IOExceptionWrapper.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:57:00 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.util.IOExceptionWrapper (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.util.IOExceptionWrapper (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.util.IOExceptionWrapper (Oracle Corporation - Berkel
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.util.IOExceptionWrapper (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.util.IOExceptionWrapper (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -105,7 +105,7 @@ No usage of com.sleepycat.util.IOExceptionWrapper
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -135,6 +135,6 @@ No usage of com.sleepycat.util.IOExceptionWrapper
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/util/class-use/PackedInteger.html b/db/docs/java/com/sleepycat/util/class-use/PackedInteger.html
index 7e69216b6..6900c07f0 100644
--- a/db/docs/java/com/sleepycat/util/class-use/PackedInteger.html
+++ b/db/docs/java/com/sleepycat/util/class-use/PackedInteger.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:57:00 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.util.PackedInteger (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.util.PackedInteger (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.util.PackedInteger (Oracle Corporation - Berkeley DB
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.util.PackedInteger (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.util.PackedInteger (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -105,7 +105,7 @@ No usage of com.sleepycat.util.PackedInteger
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -135,6 +135,6 @@ No usage of com.sleepycat.util.PackedInteger
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/util/class-use/RuntimeExceptionWrapper.html b/db/docs/java/com/sleepycat/util/class-use/RuntimeExceptionWrapper.html
index bbbf5e2f1..550e96a63 100644
--- a/db/docs/java/com/sleepycat/util/class-use/RuntimeExceptionWrapper.html
+++ b/db/docs/java/com/sleepycat/util/class-use/RuntimeExceptionWrapper.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:57:00 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.util.RuntimeExceptionWrapper (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.util.RuntimeExceptionWrapper (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.util.RuntimeExceptionWrapper (Oracle Corporation - B
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.util.RuntimeExceptionWrapper (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.util.RuntimeExceptionWrapper (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -105,7 +105,7 @@ No usage of com.sleepycat.util.RuntimeExceptionWrapper
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -135,6 +135,6 @@ No usage of com.sleepycat.util.RuntimeExceptionWrapper
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/util/class-use/UtfOps.html b/db/docs/java/com/sleepycat/util/class-use/UtfOps.html
index f27f0eb87..cef9b93e7 100644
--- a/db/docs/java/com/sleepycat/util/class-use/UtfOps.html
+++ b/db/docs/java/com/sleepycat/util/class-use/UtfOps.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:57:00 EDT 2007 -->
<TITLE>
-Uses of Class com.sleepycat.util.UtfOps (Oracle Corporation - Berkeley DB Java API)
+Uses of Class com.sleepycat.util.UtfOps (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Class com.sleepycat.util.UtfOps (Oracle Corporation - Berkeley DB Java A
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Class com.sleepycat.util.UtfOps (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Class com.sleepycat.util.UtfOps (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -105,7 +105,7 @@ No usage of com.sleepycat.util.UtfOps
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -135,6 +135,6 @@ No usage of com.sleepycat.util.UtfOps
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/util/package-frame.html b/db/docs/java/com/sleepycat/util/package-frame.html
index 30760b4f0..8770458e3 100644
--- a/db/docs/java/com/sleepycat/util/package-frame.html
+++ b/db/docs/java/com/sleepycat/util/package-frame.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:48 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-com.sleepycat.util (Oracle Corporation - Berkeley DB Java API)
+com.sleepycat.util (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.util package">
diff --git a/db/docs/java/com/sleepycat/util/package-summary.html b/db/docs/java/com/sleepycat/util/package-summary.html
index 0a89c3a35..46674d134 100644
--- a/db/docs/java/com/sleepycat/util/package-summary.html
+++ b/db/docs/java/com/sleepycat/util/package-summary.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:48 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-com.sleepycat.util (Oracle Corporation - Berkeley DB Java API)
+com.sleepycat.util (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="com.sleepycat.util package">
@@ -14,7 +14,7 @@ com.sleepycat.util (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="com.sleepycat.util (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="com.sleepycat.util (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -186,7 +186,7 @@ General utilities used throughout Berkeley DB.
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -216,6 +216,6 @@ General utilities used throughout Berkeley DB.
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/util/package-tree.html b/db/docs/java/com/sleepycat/util/package-tree.html
index 9fdf5a063..b25b320de 100644
--- a/db/docs/java/com/sleepycat/util/package-tree.html
+++ b/db/docs/java/com/sleepycat/util/package-tree.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:48 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-com.sleepycat.util Class Hierarchy (Oracle Corporation - Berkeley DB Java API)
+com.sleepycat.util Class Hierarchy (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ com.sleepycat.util Class Hierarchy (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="com.sleepycat.util Class Hierarchy (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="com.sleepycat.util Class Hierarchy (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -87,20 +87,20 @@ Hierarchy For Package com.sleepycat.util
Class Hierarchy
</H2>
<UL>
-<LI TYPE="circle">java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang"><B>Object</B></A><UL>
-<LI TYPE="circle">com.sleepycat.util.<A HREF="../../../com/sleepycat/util/ExceptionUnwrapper.html" title="class in com.sleepycat.util"><B>ExceptionUnwrapper</B></A><LI TYPE="circle">java.io.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/InputStream.html" title="class or interface in java.io"><B>InputStream</B></A> (implements java.io.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/Closeable.html" title="class or interface in java.io">Closeable</A>)
+<LI TYPE="circle">java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang"><B>Object</B></A><UL>
+<LI TYPE="circle">com.sleepycat.util.<A HREF="../../../com/sleepycat/util/ExceptionUnwrapper.html" title="class in com.sleepycat.util"><B>ExceptionUnwrapper</B></A><LI TYPE="circle">java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/InputStream.html" title="class or interface in java.io"><B>InputStream</B></A> (implements java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Closeable.html" title="class or interface in java.io">Closeable</A>)
<UL>
<LI TYPE="circle">com.sleepycat.util.<A HREF="../../../com/sleepycat/util/FastInputStream.html" title="class in com.sleepycat.util"><B>FastInputStream</B></A></UL>
-<LI TYPE="circle">java.io.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/OutputStream.html" title="class or interface in java.io"><B>OutputStream</B></A> (implements java.io.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/Closeable.html" title="class or interface in java.io">Closeable</A>, java.io.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/Flushable.html" title="class or interface in java.io">Flushable</A>)
+<LI TYPE="circle">java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/OutputStream.html" title="class or interface in java.io"><B>OutputStream</B></A> (implements java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Closeable.html" title="class or interface in java.io">Closeable</A>, java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Flushable.html" title="class or interface in java.io">Flushable</A>)
<UL>
<LI TYPE="circle">com.sleepycat.util.<A HREF="../../../com/sleepycat/util/FastOutputStream.html" title="class in com.sleepycat.util"><B>FastOutputStream</B></A></UL>
-<LI TYPE="circle">com.sleepycat.util.<A HREF="../../../com/sleepycat/util/PackedInteger.html" title="class in com.sleepycat.util"><B>PackedInteger</B></A><LI TYPE="circle">java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html" title="class or interface in java.lang"><B>Throwable</B></A> (implements java.io.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/Serializable.html" title="class or interface in java.io">Serializable</A>)
+<LI TYPE="circle">com.sleepycat.util.<A HREF="../../../com/sleepycat/util/PackedInteger.html" title="class in com.sleepycat.util"><B>PackedInteger</B></A><LI TYPE="circle">java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang"><B>Throwable</B></A> (implements java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Serializable.html" title="class or interface in java.io">Serializable</A>)
<UL>
-<LI TYPE="circle">java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Exception.html" title="class or interface in java.lang"><B>Exception</B></A><UL>
-<LI TYPE="circle">java.io.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/IOException.html" title="class or interface in java.io"><B>IOException</B></A><UL>
+<LI TYPE="circle">java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Exception.html" title="class or interface in java.lang"><B>Exception</B></A><UL>
+<LI TYPE="circle">java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/IOException.html" title="class or interface in java.io"><B>IOException</B></A><UL>
<LI TYPE="circle">com.sleepycat.util.<A HREF="../../../com/sleepycat/util/IOExceptionWrapper.html" title="class in com.sleepycat.util"><B>IOExceptionWrapper</B></A> (implements com.sleepycat.util.<A HREF="../../../com/sleepycat/util/ExceptionWrapper.html" title="interface in com.sleepycat.util">ExceptionWrapper</A>)
</UL>
-<LI TYPE="circle">java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/RuntimeException.html" title="class or interface in java.lang"><B>RuntimeException</B></A><UL>
+<LI TYPE="circle">java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/RuntimeException.html" title="class or interface in java.lang"><B>RuntimeException</B></A><UL>
<LI TYPE="circle">com.sleepycat.util.<A HREF="../../../com/sleepycat/util/RuntimeExceptionWrapper.html" title="class in com.sleepycat.util"><B>RuntimeExceptionWrapper</B></A> (implements com.sleepycat.util.<A HREF="../../../com/sleepycat/util/ExceptionWrapper.html" title="interface in com.sleepycat.util">ExceptionWrapper</A>)
</UL>
</UL>
@@ -136,7 +136,7 @@ Interface Hierarchy
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -166,6 +166,6 @@ Interface Hierarchy
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/com/sleepycat/util/package-use.html b/db/docs/java/com/sleepycat/util/package-use.html
index 95c662da8..f8ad50565 100644
--- a/db/docs/java/com/sleepycat/util/package-use.html
+++ b/db/docs/java/com/sleepycat/util/package-use.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:57:00 EDT 2007 -->
<TITLE>
-Uses of Package com.sleepycat.util (Oracle Corporation - Berkeley DB Java API)
+Uses of Package com.sleepycat.util (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Uses of Package com.sleepycat.util (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Uses of Package com.sleepycat.util (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Uses of Package com.sleepycat.util (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -178,7 +178,7 @@ Classes in <A HREF="../../../com/sleepycat/util/package-summary.html">com.sleepy
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -208,6 +208,6 @@ Classes in <A HREF="../../../com/sleepycat/util/package-summary.html">com.sleepy
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/constant-values.html b/db/docs/java/constant-values.html
index f73fe3359..0d3970d76 100644
--- a/db/docs/java/constant-values.html
+++ b/db/docs/java/constant-values.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:48 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Constant Field Values (Oracle Corporation - Berkeley DB Java API)
+Constant Field Values (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Constant Field Values (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Constant Field Values (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Constant Field Values (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -132,36 +132,6 @@ com.sleepycat.*</FONT></TH>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
-<TH ALIGN="left" COLSPAN="3">com.sleepycat.db.<A HREF="com/sleepycat/db/Environment.html" title="class in com.sleepycat.db">Environment</A></TH>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<A NAME="com.sleepycat.db.Environment.CHECKPOINTER_NAME"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
-<CODE>public&nbsp;static&nbsp;final&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
-<TD ALIGN="left"><CODE><A HREF="com/sleepycat/db/Environment.html#CHECKPOINTER_NAME">CHECKPOINTER_NAME</A></CODE></TD>
-<TD ALIGN="right"><CODE>"Checkpointer"</CODE></TD>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<A NAME="com.sleepycat.db.Environment.CLEANER_NAME"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
-<CODE>public&nbsp;static&nbsp;final&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
-<TD ALIGN="left"><CODE><A HREF="com/sleepycat/db/Environment.html#CLEANER_NAME">CLEANER_NAME</A></CODE></TD>
-<TD ALIGN="right"><CODE>"Cleaner"</CODE></TD>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<A NAME="com.sleepycat.db.Environment.INCOMP_NAME"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
-<CODE>public&nbsp;static&nbsp;final&nbsp;<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
-<TD ALIGN="left"><CODE><A HREF="com/sleepycat/db/Environment.html#INCOMP_NAME">INCOMP_NAME</A></CODE></TD>
-<TD ALIGN="right"><CODE>"INCompressor"</CODE></TD>
-</TR>
-</FONT></TD>
-</TR>
-</TABLE>
-
-<P>
-
-<P>
-
-<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
-<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left" COLSPAN="3">com.sleepycat.db.<A HREF="com/sleepycat/db/ReplicationTransport.html" title="interface in com.sleepycat.db">ReplicationTransport</A></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
@@ -218,6 +188,12 @@ com.sleepycat.*</FONT></TH>
<TD ALIGN="left"><CODE><A HREF="com/sleepycat/util/PackedInteger.html#MAX_LENGTH">MAX_LENGTH</A></CODE></TD>
<TD ALIGN="right"><CODE>5</CODE></TD>
</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.sleepycat.util.PackedInteger.MAX_LONG_LENGTH"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public&nbsp;static&nbsp;final&nbsp;int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/sleepycat/util/PackedInteger.html#MAX_LONG_LENGTH">MAX_LONG_LENGTH</A></CODE></TD>
+<TD ALIGN="right"><CODE>9</CODE></TD>
+</TR>
</FONT></TD>
</TR>
</TABLE>
@@ -249,7 +225,7 @@ com.sleepycat.*</FONT></TH>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -279,6 +255,6 @@ com.sleepycat.*</FONT></TH>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/deprecated-list.html b/db/docs/java/deprecated-list.html
index f98310f0b..47b13b525 100644
--- a/db/docs/java/deprecated-list.html
+++ b/db/docs/java/deprecated-list.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:50 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:57:00 EDT 2007 -->
<TITLE>
-Deprecated List (Oracle Corporation - Berkeley DB Java API)
+Deprecated List (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Deprecated List (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Deprecated List (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Deprecated List (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -125,6 +125,11 @@ function windowTitle()
<B>Deprecated Methods</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><A HREF="com/sleepycat/db/EnvironmentConfig.html#addDataDir(java.lang.String)">com.sleepycat.db.EnvironmentConfig.addDataDir(String)</A>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>replaced by <A HREF="com/sleepycat/db/EnvironmentConfig.html#addDataDir(java.io.File)"><CODE>EnvironmentConfig.addDataDir(java.io.File)</CODE></A></I>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><A HREF="com/sleepycat/collections/StoredCollections.html#dirtyReadCollection(java.util.Collection)">com.sleepycat.collections.StoredCollections.dirtyReadCollection(Collection)</A>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>This method has been replaced by <A HREF="com/sleepycat/collections/StoredCollections.html#configuredCollection(java.util.Collection, com.sleepycat.db.CursorConfig)"><CODE>StoredCollections.configuredCollection(java.util.Collection, com.sleepycat.db.CursorConfig)</CODE></A> in order to conform to ANSI database isolation
@@ -212,6 +217,36 @@ function windowTitle()
database isolation terminology.</I>&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><A HREF="com/sleepycat/db/EnvironmentConfig.html#getTestAndSetSpins()">com.sleepycat.db.EnvironmentConfig.getTestAndSetSpins()</A>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>replaced by <A HREF="com/sleepycat/db/EnvironmentConfig.html#getMutexTestAndSetSpins()"><CODE>EnvironmentConfig.getMutexTestAndSetSpins()</CODE></A></I>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><A HREF="com/sleepycat/db/EnvironmentConfig.html#getVerboseDeadlock()">com.sleepycat.db.EnvironmentConfig.getVerboseDeadlock()</A>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>replaced by <A HREF="com/sleepycat/db/EnvironmentConfig.html#getVerbose(com.sleepycat.db.VerboseConfig)"><CODE>EnvironmentConfig.getVerbose(com.sleepycat.db.VerboseConfig)</CODE></A></I>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><A HREF="com/sleepycat/db/EnvironmentConfig.html#getVerboseRecovery()">com.sleepycat.db.EnvironmentConfig.getVerboseRecovery()</A>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>replaced by <A HREF="com/sleepycat/db/EnvironmentConfig.html#getVerbose(com.sleepycat.db.VerboseConfig)"><CODE>EnvironmentConfig.getVerbose(com.sleepycat.db.VerboseConfig)</CODE></A></I>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><A HREF="com/sleepycat/db/EnvironmentConfig.html#getVerboseRegister()">com.sleepycat.db.EnvironmentConfig.getVerboseRegister()</A>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>replaced by <A HREF="com/sleepycat/db/EnvironmentConfig.html#getVerbose(com.sleepycat.db.VerboseConfig)"><CODE>EnvironmentConfig.getVerbose(com.sleepycat.db.VerboseConfig)</CODE></A></I>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><A HREF="com/sleepycat/db/EnvironmentConfig.html#getVerboseReplication()">com.sleepycat.db.EnvironmentConfig.getVerboseReplication()</A>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>replaced by <A HREF="com/sleepycat/db/EnvironmentConfig.html#getVerbose(com.sleepycat.db.VerboseConfig)"><CODE>EnvironmentConfig.getVerbose(com.sleepycat.db.VerboseConfig)</CODE></A></I>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><A HREF="com/sleepycat/db/EnvironmentConfig.html#getVerboseWaitsFor()">com.sleepycat.db.EnvironmentConfig.getVerboseWaitsFor()</A>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>replaced by <A HREF="com/sleepycat/db/EnvironmentConfig.html#getVerbose(com.sleepycat.db.VerboseConfig)"><CODE>EnvironmentConfig.getVerbose(com.sleepycat.db.VerboseConfig)</CODE></A></I>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><A HREF="com/sleepycat/collections/StoredContainer.html#isDirtyRead()">com.sleepycat.collections.StoredContainer.isDirtyRead()</A>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>This method has been replaced by <A HREF="com/sleepycat/collections/StoredContainer.html#getCursorConfig()"><CODE>StoredContainer.getCursorConfig()</CODE></A>.
@@ -272,6 +307,41 @@ function windowTitle()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>This has been replaced by <A HREF="com/sleepycat/db/CursorConfig.html#setReadUncommitted(boolean)"><CODE>CursorConfig.setReadUncommitted(boolean)</CODE></A> to conform to ANSI
database isolation terminology.</I>&nbsp;</TD>
</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><A HREF="com/sleepycat/db/EnvironmentConfig.html#setTemporaryDirectory(java.lang.String)">com.sleepycat.db.EnvironmentConfig.setTemporaryDirectory(String)</A>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>replaced by <A HREF="com/sleepycat/db/EnvironmentConfig.html#setTemporaryDirectory(java.io.File)"><CODE>EnvironmentConfig.setTemporaryDirectory(java.io.File)</CODE></A></I>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><A HREF="com/sleepycat/db/EnvironmentConfig.html#setTestAndSetSpins(int)">com.sleepycat.db.EnvironmentConfig.setTestAndSetSpins(int)</A>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>replaced by <A HREF="com/sleepycat/db/EnvironmentConfig.html#setMutexTestAndSetSpins(int)"><CODE>EnvironmentConfig.setMutexTestAndSetSpins(int)</CODE></A></I>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><A HREF="com/sleepycat/db/EnvironmentConfig.html#setVerboseDeadlock(boolean)">com.sleepycat.db.EnvironmentConfig.setVerboseDeadlock(boolean)</A>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>replaced by <A HREF="com/sleepycat/db/EnvironmentConfig.html#setVerbose(com.sleepycat.db.VerboseConfig, boolean)"><CODE>EnvironmentConfig.setVerbose(com.sleepycat.db.VerboseConfig, boolean)</CODE></A></I>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><A HREF="com/sleepycat/db/EnvironmentConfig.html#setVerboseRecovery(boolean)">com.sleepycat.db.EnvironmentConfig.setVerboseRecovery(boolean)</A>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>replaced by <A HREF="com/sleepycat/db/EnvironmentConfig.html#setVerbose(com.sleepycat.db.VerboseConfig, boolean)"><CODE>EnvironmentConfig.setVerbose(com.sleepycat.db.VerboseConfig, boolean)</CODE></A></I>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><A HREF="com/sleepycat/db/EnvironmentConfig.html#setVerboseRegister(boolean)">com.sleepycat.db.EnvironmentConfig.setVerboseRegister(boolean)</A>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>replaced by <A HREF="com/sleepycat/db/EnvironmentConfig.html#setVerbose(com.sleepycat.db.VerboseConfig, boolean)"><CODE>EnvironmentConfig.setVerbose(com.sleepycat.db.VerboseConfig, boolean)</CODE></A></I>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><A HREF="com/sleepycat/db/EnvironmentConfig.html#setVerboseReplication(boolean)">com.sleepycat.db.EnvironmentConfig.setVerboseReplication(boolean)</A>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>replaced by <A HREF="com/sleepycat/db/EnvironmentConfig.html#setVerbose(com.sleepycat.db.VerboseConfig, boolean)"><CODE>EnvironmentConfig.setVerbose(com.sleepycat.db.VerboseConfig, boolean)</CODE></A></I>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><A HREF="com/sleepycat/db/EnvironmentConfig.html#setVerboseWaitsFor(boolean)">com.sleepycat.db.EnvironmentConfig.setVerboseWaitsFor(boolean)</A>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>replaced by <A HREF="com/sleepycat/db/EnvironmentConfig.html#setVerbose(com.sleepycat.db.VerboseConfig, boolean)"><CODE>EnvironmentConfig.setVerbose(com.sleepycat.db.VerboseConfig, boolean)</CODE></A></I>&nbsp;</TD>
+</TR>
</TABLE>
&nbsp;
<P>
@@ -299,7 +369,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -329,6 +399,6 @@ function windowTitle()
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/help-doc.html b/db/docs/java/help-doc.html
index 85b894d11..36a434436 100644
--- a/db/docs/java/help-doc.html
+++ b/db/docs/java/help-doc.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:50 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:57:00 EDT 2007 -->
<TITLE>
-API Help (Oracle Corporation - Berkeley DB Java API)
+API Help (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ API Help (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="API Help (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="API Help (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -184,7 +184,7 @@ This help file applies to API documentation generated using the standard doclet.
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -214,6 +214,6 @@ This help file applies to API documentation generated using the standard doclet.
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/index-all.html b/db/docs/java/index-all.html
index 3fa3dd2cd..7d8944a0f 100644
--- a/db/docs/java/index-all.html
+++ b/db/docs/java/index-all.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:57:00 EDT 2007 -->
<TITLE>
-Index (Oracle Corporation - Berkeley DB Java API)
+Index (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Index (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Index (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Index (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -133,7 +133,7 @@ Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EnvironmentConfig.h
method database files.
<DT><A HREF="./com/sleepycat/db/EnvironmentConfig.html#addDataDir(java.lang.String)"><B>addDataDir(String)</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EnvironmentConfig.html" title="class in com.sleepycat.db">EnvironmentConfig</A>
-<DD>&nbsp;
+<DD><B>Deprecated.</B>&nbsp;<I>replaced by <A HREF="./com/sleepycat/db/EnvironmentConfig.html#addDataDir(java.io.File)"><CODE>EnvironmentConfig.addDataDir(java.io.File)</CODE></A></I>
<DT><A HREF="./com/sleepycat/util/FastOutputStream.html#addSize(int)"><B>addSize(int)</B></A> -
Method in class com.sleepycat.util.<A HREF="./com/sleepycat/util/FastOutputStream.html" title="class in com.sleepycat.util">FastOutputStream</A>
<DD>Skip the given number of bytes in the buffer.
@@ -190,6 +190,10 @@ Static variable in class com.sleepycat.db.<A HREF="./com/sleepycat/db/RecoveryOp
<DD>The log is being read backward to determine which transactions have
been committed and to abort those operations that were not; undo the
operation described by the log record.
+<DT><A HREF="./com/sleepycat/db/Environment.html#beginCDSGroup()"><B>beginCDSGroup()</B></A> -
+Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/Environment.html" title="class in com.sleepycat.db">Environment</A>
+<DD>Allocate a locker ID in an environment configured for Berkeley DB
+ Concurrent Data Store applications.
<DT><A HREF="./com/sleepycat/collections/CurrentTransaction.html#beginTransaction(com.sleepycat.db.TransactionConfig)"><B>beginTransaction(TransactionConfig)</B></A> -
Method in class com.sleepycat.collections.<A HREF="./com/sleepycat/collections/CurrentTransaction.html" title="class in com.sleepycat.collections">CurrentTransaction</A>
<DD>Begins a new transaction for this environment and associates it with
@@ -197,6 +201,12 @@ Method in class com.sleepycat.collections.<A HREF="./com/sleepycat/collections/C
<DT><A HREF="./com/sleepycat/db/Environment.html#beginTransaction(com.sleepycat.db.Transaction, com.sleepycat.db.TransactionConfig)"><B>beginTransaction(Transaction, TransactionConfig)</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/Environment.html" title="class in com.sleepycat.db">Environment</A>
<DD>Create a new transaction in the database environment.
+<DT><A HREF="./com/sleepycat/bind/tuple/BigIntegerBinding.html" title="class in com.sleepycat.bind.tuple"><B>BigIntegerBinding</B></A> - Class in <A HREF="./com/sleepycat/bind/tuple/package-summary.html">com.sleepycat.bind.tuple</A><DD>A concrete <code>TupleBinding</code> for a <code>BigInteger</code> value.<DT><A HREF="./com/sleepycat/bind/tuple/BigIntegerBinding.html#BigIntegerBinding()"><B>BigIntegerBinding()</B></A> -
+Constructor for class com.sleepycat.bind.tuple.<A HREF="./com/sleepycat/bind/tuple/BigIntegerBinding.html" title="class in com.sleepycat.bind.tuple">BigIntegerBinding</A>
+<DD>&nbsp;
+<DT><A HREF="./com/sleepycat/bind/tuple/BigIntegerBinding.html#bigIntegerToEntry(java.math.BigInteger, com.sleepycat.db.DatabaseEntry)"><B>bigIntegerToEntry(BigInteger, DatabaseEntry)</B></A> -
+Static method in class com.sleepycat.bind.tuple.<A HREF="./com/sleepycat/bind/tuple/BigIntegerBinding.html" title="class in com.sleepycat.bind.tuple">BigIntegerBinding</A>
+<DD>Converts a <code>BigInteger</code> value into an entry buffer.
<DT><A HREF="./com/sleepycat/bind/tuple/BooleanBinding.html" title="class in com.sleepycat.bind.tuple"><B>BooleanBinding</B></A> - Class in <A HREF="./com/sleepycat/bind/tuple/package-summary.html">com.sleepycat.bind.tuple</A><DD>A concrete <code>TupleBinding</code> for a <code>Boolean</code> primitive
wrapper or a <code>boolean</code> primitive.<DT><A HREF="./com/sleepycat/bind/tuple/BooleanBinding.html#BooleanBinding()"><B>BooleanBinding()</B></A> -
Constructor for class com.sleepycat.bind.tuple.<A HREF="./com/sleepycat/bind/tuple/BooleanBinding.html" title="class in com.sleepycat.bind.tuple">BooleanBinding</A>
@@ -251,18 +261,16 @@ Static method in class com.sleepycat.bind.tuple.<A HREF="./com/sleepycat/bind/tu
<DT><A HREF="./com/sleepycat/db/Environment.html#checkpoint(com.sleepycat.db.CheckpointConfig)"><B>checkpoint(CheckpointConfig)</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/Environment.html" title="class in com.sleepycat.db">Environment</A>
<DD>Synchronously checkpoint the database environment.
+<DT><A HREF="./com/sleepycat/db/ReplicationTimeoutType.html#CHECKPOINT_DELAY"><B>CHECKPOINT_DELAY</B></A> -
+Static variable in class com.sleepycat.db.<A HREF="./com/sleepycat/db/ReplicationTimeoutType.html" title="class in com.sleepycat.db">ReplicationTimeoutType</A>
+<DD>Configure the amount of time the replication manager will delay between
+ completing a checkpoint and writing a checkpoint record into the log.
<DT><A HREF="./com/sleepycat/db/CheckpointConfig.html" title="class in com.sleepycat.db"><B>CheckpointConfig</B></A> - Class in <A HREF="./com/sleepycat/db/package-summary.html">com.sleepycat.db</A><DD>Specifies the attributes of an application invoked checkpoint operation.<DT><A HREF="./com/sleepycat/db/CheckpointConfig.html#CheckpointConfig()"><B>CheckpointConfig()</B></A> -
Constructor for class com.sleepycat.db.<A HREF="./com/sleepycat/db/CheckpointConfig.html" title="class in com.sleepycat.db">CheckpointConfig</A>
<DD>An instance created using the default constructor is initialized
with the system's default settings.
-<DT><A HREF="./com/sleepycat/db/Environment.html#CHECKPOINTER_NAME"><B>CHECKPOINTER_NAME</B></A> -
-Static variable in class com.sleepycat.db.<A HREF="./com/sleepycat/db/Environment.html" title="class in com.sleepycat.db">Environment</A>
-<DD>The name of the Checkpointer daemon thread.
<DT><A HREF="./com/sleepycat/bind/serial/ClassCatalog.html" title="interface in com.sleepycat.bind.serial"><B>ClassCatalog</B></A> - Interface in <A HREF="./com/sleepycat/bind/serial/package-summary.html">com.sleepycat.bind.serial</A><DD>A catalog of class description information for use during object
- serialization.<DT><A HREF="./com/sleepycat/db/Environment.html#CLEANER_NAME"><B>CLEANER_NAME</B></A> -
-Static variable in class com.sleepycat.db.<A HREF="./com/sleepycat/db/Environment.html" title="class in com.sleepycat.db">Environment</A>
-<DD>The name of the cleaner daemon thread.
-<DT><A HREF="./com/sleepycat/collections/StoredContainer.html#clear()"><B>clear()</B></A> -
+ serialization.<DT><A HREF="./com/sleepycat/collections/StoredContainer.html#clear()"><B>clear()</B></A> -
Method in class com.sleepycat.collections.<A HREF="./com/sleepycat/collections/StoredContainer.html" title="class in com.sleepycat.collections">StoredContainer</A>
<DD>Removes all mappings or elements from this map or collection (optional
operation).
@@ -317,6 +325,9 @@ Method in class com.sleepycat.collections.<A HREF="./com/sleepycat/collections/C
<DD>Commits the transaction that is active for the current thread for this
environment and makes the parent transaction (if any) the current
transaction.
+<DT><A HREF="./com/sleepycat/db/Transaction.html#commitWriteNoSync()"><B>commitWriteNoSync()</B></A> -
+Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/Transaction.html" title="class in com.sleepycat.db">Transaction</A>
+<DD>End the transaction, writing but not flushing the log.
<DT><A HREF="./com/sleepycat/db/Database.html#compact(com.sleepycat.db.Transaction, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.CompactConfig)"><B>compact(Transaction, DatabaseEntry, DatabaseEntry, DatabaseEntry, CompactConfig)</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/Database.html" title="class in com.sleepycat.db">Database</A>
<DD>Compact a Btree or Recno database or returns unused Btree,
@@ -396,9 +407,6 @@ Method in class com.sleepycat.collections.<A HREF="./com/sleepycat/collections/S
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/Cursor.html" title="class in com.sleepycat.db">Cursor</A>
<DD>Return a count of the number of data items for the key to which the
cursor refers.
-<DT><A HREF="./com/sleepycat/db/Database.html#count()"><B>count()</B></A> -
-Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/Database.html" title="class in com.sleepycat.db">Database</A>
-<DD>Count the key/data pairs in the database without adding to the cache.
<DT><A HREF="./com/sleepycat/db/Environment.html#createLockerID()"><B>createLockerID()</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/Environment.html" title="class in com.sleepycat.db">Environment</A>
<DD>Allocate a locker ID.
@@ -430,6 +438,9 @@ Method in class com.sleepycat.bind.tuple.<A HREF="./com/sleepycat/bind/tuple/Tup
<DT><A HREF="./com/sleepycat/db/SecondaryKeyCreator.html#createSecondaryKey(com.sleepycat.db.SecondaryDatabase, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry)"><B>createSecondaryKey(SecondaryDatabase, DatabaseEntry, DatabaseEntry, DatabaseEntry)</B></A> -
Method in interface com.sleepycat.db.<A HREF="./com/sleepycat/db/SecondaryKeyCreator.html" title="interface in com.sleepycat.db">SecondaryKeyCreator</A>
<DD>Creates a secondary key entry, given a primary key and data entry.
+<DT><A HREF="./com/sleepycat/db/SecondaryMultiKeyCreator.html#createSecondaryKeys(com.sleepycat.db.SecondaryDatabase, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, java.util.Set)"><B>createSecondaryKeys(SecondaryDatabase, DatabaseEntry, DatabaseEntry, Set)</B></A> -
+Method in interface com.sleepycat.db.<A HREF="./com/sleepycat/db/SecondaryMultiKeyCreator.html" title="interface in com.sleepycat.db">SecondaryMultiKeyCreator</A>
+<DD>Creates a secondary key entry, given a primary key and data entry.
<DT><A HREF="./com/sleepycat/collections/CurrentTransaction.html" title="class in com.sleepycat.collections"><B>CurrentTransaction</B></A> - Class in <A HREF="./com/sleepycat/collections/package-summary.html">com.sleepycat.collections</A><DD>Provides access to the current transaction for the current thread within the
context of a Berkeley DB environment.<DT><A HREF="./com/sleepycat/db/Cursor.html" title="class in com.sleepycat.db"><B>Cursor</B></A> - Class in <A HREF="./com/sleepycat/db/package-summary.html">com.sleepycat.db</A><DD>A database cursor.<DT><A HREF="./com/sleepycat/db/CursorConfig.html" title="class in com.sleepycat.db"><B>CursorConfig</B></A> - Class in <A HREF="./com/sleepycat/db/package-summary.html">com.sleepycat.db</A><DD>Specify the attributes of database cursor.<DT><A HREF="./com/sleepycat/db/CursorConfig.html#CursorConfig()"><B>CursorConfig()</B></A> -
Constructor for class com.sleepycat.db.<A HREF="./com/sleepycat/db/CursorConfig.html" title="class in com.sleepycat.db">CursorConfig</A>
@@ -478,6 +489,9 @@ Variable in class com.sleepycat.bind.serial.<A HREF="./com/sleepycat/bind/serial
<DT><A HREF="./com/sleepycat/bind/serial/TupleSerialKeyCreator.html#dataBinding"><B>dataBinding</B></A> -
Variable in class com.sleepycat.bind.serial.<A HREF="./com/sleepycat/bind/serial/TupleSerialKeyCreator.html" title="class in com.sleepycat.bind.serial">TupleSerialKeyCreator</A>
<DD>&nbsp;
+<DT><A HREF="./com/sleepycat/db/VerboseConfig.html#DEADLOCK"><B>DEADLOCK</B></A> -
+Static variable in class com.sleepycat.db.<A HREF="./com/sleepycat/db/VerboseConfig.html" title="class in com.sleepycat.db">VerboseConfig</A>
+<DD>Display additional information when doing deadlock detection.
<DT><A HREF="./com/sleepycat/db/DeadlockException.html" title="class in com.sleepycat.db"><B>DeadlockException</B></A> - Exception in <A HREF="./com/sleepycat/db/package-summary.html">com.sleepycat.db</A><DD>DeadlockException is thrown to a thread of control when multiple threads
competing for a lock are
deadlocked, when a lock request has timed out
@@ -650,6 +664,9 @@ Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/SecondaryCursor.htm
<A NAME="_E_"><!-- --></A><H2>
<B>E</B></H2>
<DL>
+<DT><A HREF="./com/sleepycat/db/ReplicationHostAddress.html#eid"><B>eid</B></A> -
+Variable in class com.sleepycat.db.<A HREF="./com/sleepycat/db/ReplicationHostAddress.html" title="class in com.sleepycat.db">ReplicationHostAddress</A>
+<DD>The identifier assigned to this host..
<DT><A HREF="./com/sleepycat/db/ReplicationTransport.html#EID_BROADCAST"><B>EID_BROADCAST</B></A> -
Static variable in interface com.sleepycat.db.<A HREF="./com/sleepycat/db/ReplicationTransport.html" title="interface in com.sleepycat.db">ReplicationTransport</A>
<DD>A message that should be broadcast to every environment in the
@@ -671,6 +688,9 @@ Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/Environment.html" t
<DT><A HREF="./com/sleepycat/bind/EntityBinding.html" title="interface in com.sleepycat.bind"><B>EntityBinding</B></A> - Interface in <A HREF="./com/sleepycat/bind/package-summary.html">com.sleepycat.bind</A><DD>A binding between a key-value entry pair and an entity object.<DT><A HREF="./com/sleepycat/bind/EntryBinding.html" title="interface in com.sleepycat.bind"><B>EntryBinding</B></A> - Interface in <A HREF="./com/sleepycat/bind/package-summary.html">com.sleepycat.bind</A><DD>A binding between a key or data entry and a key or data object.<DT><A HREF="./com/sleepycat/collections/StoredMap.html#entrySet()"><B>entrySet()</B></A> -
Method in class com.sleepycat.collections.<A HREF="./com/sleepycat/collections/StoredMap.html" title="class in com.sleepycat.collections">StoredMap</A>
<DD>Returns a set view of the mappings contained in this map.
+<DT><A HREF="./com/sleepycat/bind/tuple/BigIntegerBinding.html#entryToBigInteger(com.sleepycat.db.DatabaseEntry)"><B>entryToBigInteger(DatabaseEntry)</B></A> -
+Static method in class com.sleepycat.bind.tuple.<A HREF="./com/sleepycat/bind/tuple/BigIntegerBinding.html" title="class in com.sleepycat.bind.tuple">BigIntegerBinding</A>
+<DD>Converts an entry buffer into a <code>BigInteger</code> value.
<DT><A HREF="./com/sleepycat/bind/tuple/BooleanBinding.html#entryToBoolean(com.sleepycat.db.DatabaseEntry)"><B>entryToBoolean(DatabaseEntry)</B></A> -
Static method in class com.sleepycat.bind.tuple.<A HREF="./com/sleepycat/bind/tuple/BooleanBinding.html" title="class in com.sleepycat.bind.tuple">BooleanBinding</A>
<DD>Converts an entry buffer into a simple <code>boolean</code> value.
@@ -733,6 +753,9 @@ Method in class com.sleepycat.bind.serial.<A HREF="./com/sleepycat/bind/serial/T
<DT><A HREF="./com/sleepycat/bind/serial/TupleSerialMarshalledBinding.html#entryToObject(com.sleepycat.bind.tuple.TupleInput, java.lang.Object)"><B>entryToObject(TupleInput, Object)</B></A> -
Method in class com.sleepycat.bind.serial.<A HREF="./com/sleepycat/bind/serial/TupleSerialMarshalledBinding.html" title="class in com.sleepycat.bind.serial">TupleSerialMarshalledBinding</A>
<DD>&nbsp;
+<DT><A HREF="./com/sleepycat/bind/tuple/BigIntegerBinding.html#entryToObject(com.sleepycat.bind.tuple.TupleInput)"><B>entryToObject(TupleInput)</B></A> -
+Method in class com.sleepycat.bind.tuple.<A HREF="./com/sleepycat/bind/tuple/BigIntegerBinding.html" title="class in com.sleepycat.bind.tuple">BigIntegerBinding</A>
+<DD>&nbsp;
<DT><A HREF="./com/sleepycat/bind/tuple/BooleanBinding.html#entryToObject(com.sleepycat.bind.tuple.TupleInput)"><B>entryToObject(TupleInput)</B></A> -
Method in class com.sleepycat.bind.tuple.<A HREF="./com/sleepycat/bind/tuple/BooleanBinding.html" title="class in com.sleepycat.bind.tuple">BooleanBinding</A>
<DD>&nbsp;
@@ -809,7 +832,7 @@ Variable in class com.sleepycat.db.<A HREF="./com/sleepycat/db/KeyRange.html" ti
<DD>Zero if there is no matching key, and non-zero otherwise.
<DT><A HREF="./com/sleepycat/collections/MapEntryParameter.html#equals(java.lang.Object)"><B>equals(Object)</B></A> -
Method in class com.sleepycat.collections.<A HREF="./com/sleepycat/collections/MapEntryParameter.html" title="class in com.sleepycat.collections">MapEntryParameter</A>
-<DD>Compares this entry to a given entry as specified by <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.Entry.html#equals(java.lang.Object)" title="class or interface in java.util"><CODE>Map.Entry.equals(java.lang.Object)</CODE></A>.
+<DD>Compares this entry to a given entry as specified by <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.Entry.html#equals(java.lang.Object)" title="class or interface in java.util"><CODE>Map.Entry.equals(java.lang.Object)</CODE></A>.
<DT><A HREF="./com/sleepycat/collections/StoredCollection.html#equals(java.lang.Object)"><B>equals(Object)</B></A> -
Method in class com.sleepycat.collections.<A HREF="./com/sleepycat/collections/StoredCollection.html" title="class in com.sleepycat.collections">StoredCollection</A>
<DD>Compares the specified object with this collection for equality.
@@ -827,12 +850,20 @@ Method in interface com.sleepycat.db.<A HREF="./com/sleepycat/db/ErrorHandler.ht
<DD>A callback function to be called when an error occurs in the
Berkeley DB library.
<DT><A HREF="./com/sleepycat/db/ErrorHandler.html" title="interface in com.sleepycat.db"><B>ErrorHandler</B></A> - Interface in <A HREF="./com/sleepycat/db/package-summary.html">com.sleepycat.db</A><DD>An interface specifying a callback function to be called when an error
-occurs in the Berkeley DB library.<DT><A HREF="./com/sleepycat/db/EventHandler.html" title="interface in com.sleepycat.db"><B>EventHandler</B></A> - Interface in <A HREF="./com/sleepycat/db/package-summary.html">com.sleepycat.db</A><DD>An interface specifying a callback function to be called when an event
-is sent from the Berkeley DB library.<DT><A HREF="./com/sleepycat/db/EventType.html" title="class in com.sleepycat.db"><B>EventType</B></A> - Class in <A HREF="./com/sleepycat/db/package-summary.html">com.sleepycat.db</A><DD>Event types.<DT><A HREF="./com/sleepycat/util/ExceptionUnwrapper.html" title="class in com.sleepycat.util"><B>ExceptionUnwrapper</B></A> - Class in <A HREF="./com/sleepycat/util/package-summary.html">com.sleepycat.util</A><DD>Unwraps nested exceptions by calling the <A HREF="./com/sleepycat/util/ExceptionWrapper.html#getCause()"><CODE>ExceptionWrapper.getCause()</CODE></A> method for exceptions that implement the
+occurs in the Berkeley DB library.<DT><A HREF="./com/sleepycat/db/EventHandler.html" title="interface in com.sleepycat.db"><B>EventHandler</B></A> - Interface in <A HREF="./com/sleepycat/db/package-summary.html">com.sleepycat.db</A><DD>An interface classs with prototype definitions of all event functions that
+can be called via the Berkeley DB event callback mechanism.<DT><A HREF="./com/sleepycat/db/EventHandlerAdapter.html" title="class in com.sleepycat.db"><B>EventHandlerAdapter</B></A> - Class in <A HREF="./com/sleepycat/db/package-summary.html">com.sleepycat.db</A><DD>An abstract class that implements <A HREF="./com/sleepycat/db/EventHandler.html" title="interface in com.sleepycat.db"><CODE>EventHandler</CODE></A>, used to specify a
+callback function to be called when an event is sent from the Berkeley DB
+library.<DT><A HREF="./com/sleepycat/db/EventHandlerAdapter.html#EventHandlerAdapter()"><B>EventHandlerAdapter()</B></A> -
+Constructor for class com.sleepycat.db.<A HREF="./com/sleepycat/db/EventHandlerAdapter.html" title="class in com.sleepycat.db">EventHandlerAdapter</A>
+<DD>&nbsp;
+<DT><A HREF="./com/sleepycat/util/ExceptionUnwrapper.html" title="class in com.sleepycat.util"><B>ExceptionUnwrapper</B></A> - Class in <A HREF="./com/sleepycat/util/package-summary.html">com.sleepycat.util</A><DD>Unwraps nested exceptions by calling the <A HREF="./com/sleepycat/util/ExceptionWrapper.html#getCause()"><CODE>ExceptionWrapper.getCause()</CODE></A> method for exceptions that implement the
<A HREF="./com/sleepycat/util/ExceptionWrapper.html" title="interface in com.sleepycat.util"><CODE>ExceptionWrapper</CODE></A> interface.<DT><A HREF="./com/sleepycat/util/ExceptionUnwrapper.html#ExceptionUnwrapper()"><B>ExceptionUnwrapper()</B></A> -
Constructor for class com.sleepycat.util.<A HREF="./com/sleepycat/util/ExceptionUnwrapper.html" title="class in com.sleepycat.util">ExceptionUnwrapper</A>
<DD>&nbsp;
-<DT><A HREF="./com/sleepycat/util/ExceptionWrapper.html" title="interface in com.sleepycat.util"><B>ExceptionWrapper</B></A> - Interface in <A HREF="./com/sleepycat/util/package-summary.html">com.sleepycat.util</A><DD>Interface implemented by exceptions that can contain nested exceptions.<DT><A HREF="./com/sleepycat/db/LockDetectMode.html#EXPIRE"><B>EXPIRE</B></A> -
+<DT><A HREF="./com/sleepycat/util/ExceptionWrapper.html" title="interface in com.sleepycat.util"><B>ExceptionWrapper</B></A> - Interface in <A HREF="./com/sleepycat/util/package-summary.html">com.sleepycat.util</A><DD>Interface implemented by exceptions that can contain nested exceptions.<DT><A HREF="./com/sleepycat/db/Database.html#exists(com.sleepycat.db.Transaction, com.sleepycat.db.DatabaseEntry)"><B>exists(Transaction, DatabaseEntry)</B></A> -
+Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/Database.html" title="class in com.sleepycat.db">Database</A>
+<DD>Checks if the specified key appears in the database.
+<DT><A HREF="./com/sleepycat/db/LockDetectMode.html#EXPIRE"><B>EXPIRE</B></A> -
Static variable in class com.sleepycat.db.<A HREF="./com/sleepycat/db/LockDetectMode.html" title="class in com.sleepycat.db">LockDetectMode</A>
<DD>Reject lock requests which have timed out.
</DL>
@@ -866,7 +897,15 @@ Constructor for class com.sleepycat.util.<A HREF="./com/sleepycat/util/FastOutpu
Constructor for class com.sleepycat.util.<A HREF="./com/sleepycat/util/FastOutputStream.html" title="class in com.sleepycat.util">FastOutputStream</A>
<DD>Creates an output stream with a given initial buffer and a given
bump size.
-<DT><A HREF="./com/sleepycat/db/FeedbackHandler.html" title="interface in com.sleepycat.db"><B>FeedbackHandler</B></A> - Interface in <A HREF="./com/sleepycat/db/package-summary.html">com.sleepycat.db</A><DD>An interface specifying a function to be called to provide feedback.<DT><A HREF="./com/sleepycat/collections/StoredSortedEntrySet.html#first()"><B>first()</B></A> -
+<DT><A HREF="./com/sleepycat/db/FeedbackHandler.html" title="interface in com.sleepycat.db"><B>FeedbackHandler</B></A> - Interface in <A HREF="./com/sleepycat/db/package-summary.html">com.sleepycat.db</A><DD>An interface specifying a function to be called to provide feedback.<DT><A HREF="./com/sleepycat/db/VerboseConfig.html#FILEOPS"><B>FILEOPS</B></A> -
+Static variable in class com.sleepycat.db.<A HREF="./com/sleepycat/db/VerboseConfig.html" title="class in com.sleepycat.db">VerboseConfig</A>
+<DD>Display additional information when performing filesystem operations such
+ as open, close or rename.
+<DT><A HREF="./com/sleepycat/db/VerboseConfig.html#FILEOPS_ALL"><B>FILEOPS_ALL</B></A> -
+Static variable in class com.sleepycat.db.<A HREF="./com/sleepycat/db/VerboseConfig.html" title="class in com.sleepycat.db">VerboseConfig</A>
+<DD>Display additional information when performing all filesystem operations,
+ including read and write.
+<DT><A HREF="./com/sleepycat/collections/StoredSortedEntrySet.html#first()"><B>first()</B></A> -
Method in class com.sleepycat.collections.<A HREF="./com/sleepycat/collections/StoredSortedEntrySet.html" title="class in com.sleepycat.collections">StoredSortedEntrySet</A>
<DD>Returns the first (lowest) element currently in this sorted set.
<DT><A HREF="./com/sleepycat/collections/StoredSortedKeySet.html#first()"><B>first()</B></A> -
@@ -903,10 +942,10 @@ Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/Environment.html" t
Static method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/RecoveryOperation.html" title="class in com.sleepycat.db">RecoveryOperation</A>
<DD>Internal: this is public only so it can be called from an internal
package.
-<DT><A HREF="./com/sleepycat/db/EventType.html#fromInt(int)"><B>fromInt(int)</B></A> -
-Static method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EventType.html" title="class in com.sleepycat.db">EventType</A>
-<DD>Internal: this is public only so it can be called from an internal
- package.
+<DT><A HREF="./com/sleepycat/db/ReplicationTimeoutType.html#FULL_ELECTION_TIMEOUT"><B>FULL_ELECTION_TIMEOUT</B></A> -
+Static variable in class com.sleepycat.db.<A HREF="./com/sleepycat/db/ReplicationTimeoutType.html" title="class in com.sleepycat.db">ReplicationTimeoutType</A>
+<DD>An optional configuration timeout period to wait for full election
+ participation the first time the replication group finds a master.
</DL>
<HR>
<A NAME="_G_"><!-- --></A><H2>
@@ -996,6 +1035,12 @@ Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/HashStats.html" tit
<DT><A HREF="./com/sleepycat/db/HashStats.html#getBigBFree()"><B>getBigBFree()</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/HashStats.html" title="class in com.sleepycat.db">HashStats</A>
<DD>The number of bytes free on big item pages.
+<DT><A HREF="./com/sleepycat/bind/tuple/TupleInput.html#getBigIntegerByteLength()"><B>getBigIntegerByteLength()</B></A> -
+Method in class com.sleepycat.bind.tuple.<A HREF="./com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>
+<DD>Returns the byte length of a <code>BigInteger</code>.
+<DT><A HREF="./com/sleepycat/bind/tuple/TupleOutput.html#getBigIntegerByteLength(java.math.BigInteger)"><B>getBigIntegerByteLength(BigInteger)</B></A> -
+Static method in class com.sleepycat.bind.tuple.<A HREF="./com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>
+<DD>Returns the byte length of a given <code>BigInteger</code> value.
<DT><A HREF="./com/sleepycat/db/HashStats.html#getBigPages()"><B>getBigPages()</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/HashStats.html" title="class in com.sleepycat.db">HashStats</A>
<DD>The number of big key/data pages.
@@ -1076,7 +1121,7 @@ Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/DatabaseConfig.html
<DT><A HREF="./com/sleepycat/db/EnvironmentConfig.html#getCacheCount()"><B>getCacheCount()</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EnvironmentConfig.html" title="class in com.sleepycat.db">EnvironmentConfig</A>
<DD>Return the number of shared memory buffer pools, that is, the number
- of caches.
+ of cache regions.
<DT><A HREF="./com/sleepycat/db/Database.html#getCacheFile()"><B>getCacheFile()</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/Database.html" title="class in com.sleepycat.db">Database</A>
<DD>Return the handle for the cache file underlying the database.
@@ -1090,6 +1135,9 @@ Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/CacheFileStats.html
<DT><A HREF="./com/sleepycat/db/CacheStats.html#getCacheHit()"><B>getCacheHit()</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/CacheStats.html" title="class in com.sleepycat.db">CacheStats</A>
<DD>Requested pages found in the cache.
+<DT><A HREF="./com/sleepycat/db/EnvironmentConfig.html#getCacheMax()"><B>getCacheMax()</B></A> -
+Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EnvironmentConfig.html" title="class in com.sleepycat.db">EnvironmentConfig</A>
+<DD>Return the maximum size of the cache.
<DT><A HREF="./com/sleepycat/db/CacheFileStats.html#getCacheMiss()"><B>getCacheMiss()</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/CacheFileStats.html" title="class in com.sleepycat.db">CacheFileStats</A>
<DD>Requested pages not found in the cache.
@@ -1197,6 +1245,13 @@ Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/JoinCursor.html" ti
<DT><A HREF="./com/sleepycat/db/SecondaryDatabase.html#getConfig()"><B>getConfig()</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/SecondaryDatabase.html" title="class in com.sleepycat.db">SecondaryDatabase</A>
<DD>Return this Database object's configuration.
+<DT><A HREF="./com/sleepycat/db/ReplicationManagerStats.html#getConnectFail()"><B>getConnectFail()</B></A> -
+Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/ReplicationManagerStats.html" title="class in com.sleepycat.db">ReplicationManagerStats</A>
+<DD>The The number of times new connection attempts have failed..
+<DT><A HREF="./com/sleepycat/db/ReplicationManagerStats.html#getConnectionDrop()"><B>getConnectionDrop()</B></A> -
+Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/ReplicationManagerStats.html" title="class in com.sleepycat.db">ReplicationManagerStats</A>
+<DD>The Number of existing connections that have been dropped since the
+ statistics were last reset..
<DT><A HREF="./com/sleepycat/db/LogStats.html#getCurFile()"><B>getCurFile()</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/LogStats.html" title="class in com.sleepycat.db">LogStats</A>
<DD>The current log file number.
@@ -1506,6 +1561,9 @@ Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/PreparedTransaction
<DT><A HREF="./com/sleepycat/db/CacheStats.html#getHashBuckets()"><B>getHashBuckets()</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/CacheStats.html" title="class in com.sleepycat.db">CacheStats</A>
<DD>Number of hash buckets in buffer hash table.
+<DT><A HREF="./com/sleepycat/db/DatabaseConfig.html#getHashComparator()"><B>getHashComparator()</B></A> -
+Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/DatabaseConfig.html" title="class in com.sleepycat.db">DatabaseConfig</A>
+<DD>Return the Comparator used to compare keys in a Hash database.
<DT><A HREF="./com/sleepycat/db/DatabaseConfig.html#getHasher()"><B>getHasher()</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/DatabaseConfig.html" title="class in com.sleepycat.db">DatabaseConfig</A>
<DD>Return the database-specific hash function.
@@ -1515,9 +1573,17 @@ Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/CacheStats.html" ti
<DT><A HREF="./com/sleepycat/db/DatabaseConfig.html#getHashFillFactor()"><B>getHashFillFactor()</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/DatabaseConfig.html" title="class in com.sleepycat.db">DatabaseConfig</A>
<DD>Return the hash table density.
+<DT><A HREF="./com/sleepycat/db/LockStats.html#getHashLen()"><B>getHashLen()</B></A> -
+Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/LockStats.html" title="class in com.sleepycat.db">LockStats</A>
+<DD>Maximum length of a lock hash bucket.
<DT><A HREF="./com/sleepycat/db/CacheStats.html#getHashLongest()"><B>getHashLongest()</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/CacheStats.html" title="class in com.sleepycat.db">CacheStats</A>
<DD>The longest chain ever encountered in buffer hash table lookups.
+<DT><A HREF="./com/sleepycat/db/CacheStats.html#getHashMaxNowait()"><B>getHashMaxNowait()</B></A> -
+Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/CacheStats.html" title="class in com.sleepycat.db">CacheStats</A>
+<DD>The number of times a thread of control was able to obtain the
+ hash bucket lock without waiting on the bucket which had the
+ maximum number of times that a thread of control needed to wait.
<DT><A HREF="./com/sleepycat/db/CacheStats.html#getHashMaxWait()"><B>getHashMaxWait()</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/CacheStats.html" title="class in com.sleepycat.db">CacheStats</A>
<DD>The maximum number of times any hash bucket lock was waited for by
@@ -1678,13 +1744,29 @@ Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EnvironmentConfig.h
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EnvironmentConfig.html" title="class in com.sleepycat.db">EnvironmentConfig</A>
<DD>Return true if the database environment is configured to lock shared
environment files and memory-mapped databases into memory.
+<DT><A HREF="./com/sleepycat/db/LockStats.html#getLockersNowait()"><B>getLockersNowait()</B></A> -
+Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/LockStats.html" title="class in com.sleepycat.db">LockStats</A>
+<DD>The number of requests to allocate or deallocate a locker for which the
+ thread of control did not wait.
+<DT><A HREF="./com/sleepycat/db/LockStats.html#getLockersWait()"><B>getLockersWait()</B></A> -
+Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/LockStats.html" title="class in com.sleepycat.db">LockStats</A>
+<DD>The number of requests to allocate or deallocate a locker for which the
+ thread of control waited.
<DT><A HREF="./com/sleepycat/db/LockStats.html#getLockNowait()"><B>getLockNowait()</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/LockStats.html" title="class in com.sleepycat.db">LockStats</A>
<DD>The number of lock requests not immediately available due to conflicts,
for which the thread of control did not wait.
+<DT><A HREF="./com/sleepycat/db/LockStats.html#getLocksNowait()"><B>getLocksNowait()</B></A> -
+Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/LockStats.html" title="class in com.sleepycat.db">LockStats</A>
+<DD>The number of requests to allocate or deallocate a lock structure for which
+ the thread of control did not wait.
<DT><A HREF="./com/sleepycat/db/Environment.html#getLockStats(com.sleepycat.db.StatsConfig)"><B>getLockStats(StatsConfig)</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/Environment.html" title="class in com.sleepycat.db">Environment</A>
<DD>Return the database environment's locking statistics.
+<DT><A HREF="./com/sleepycat/db/LockStats.html#getLocksWait()"><B>getLocksWait()</B></A> -
+Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/LockStats.html" title="class in com.sleepycat.db">LockStats</A>
+<DD>The number of requests to allocate or deallocate a lock structure for which
+ the thread of control waited.
<DT><A HREF="./com/sleepycat/db/EnvironmentConfig.html#getLockTimeout()"><B>getLockTimeout()</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EnvironmentConfig.html" title="class in com.sleepycat.db">EnvironmentConfig</A>
<DD>Return the database environment lock timeout value, in microseconds;
@@ -1825,6 +1907,10 @@ Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/LockStats.html" tit
<DT><A HREF="./com/sleepycat/db/TransactionStats.html#getMaxNsnapshot()"><B>getMaxNsnapshot()</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/TransactionStats.html" title="class in com.sleepycat.db">TransactionStats</A>
<DD>The maximum number of transactions on the snapshot list at any one time.
+<DT><A HREF="./com/sleepycat/db/CacheStats.html#getMaxNumCache()"><B>getMaxNumCache()</B></A> -
+Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/CacheStats.html" title="class in com.sleepycat.db">CacheStats</A>
+<DD>Maximum number of caches, as configured with
+ <A HREF="./com/sleepycat/db/EnvironmentConfig.html#setCacheMax(long)"><CODE>EnvironmentConfig.setCacheMax(long)</CODE></A>.
<DT><A HREF="./com/sleepycat/db/LockStats.html#getMaxObjects()"><B>getMaxObjects()</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/LockStats.html" title="class in com.sleepycat.db">LockStats</A>
<DD>The maximum number of lock objects possible.
@@ -1836,7 +1922,7 @@ Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EnvironmentConfig.h
<DD>Return the maximum number of file descriptors that will be opened concurrently..
<DT><A HREF="./com/sleepycat/db/CompactConfig.html#getMaxPages()"><B>getMaxPages()</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/CompactConfig.html" title="class in com.sleepycat.db">CompactConfig</A>
-<DD>For internal use only.
+<DD>Return the the maximum number of pages to free.
<DT><A HREF="./com/sleepycat/collections/TransactionRunner.html#getMaxRetries()"><B>getMaxRetries()</B></A> -
Method in class com.sleepycat.collections.<A HREF="./com/sleepycat/collections/TransactionRunner.html" title="class in com.sleepycat.collections">TransactionRunner</A>
<DD>Returns the maximum number of retries that will be performed when
@@ -1920,9 +2006,15 @@ Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/LogStats.html" titl
<DT><A HREF="./com/sleepycat/db/ReplicationStats.html#getMsgsBadgen()"><B>getMsgsBadgen()</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/ReplicationStats.html" title="class in com.sleepycat.db">ReplicationStats</A>
<DD>The number of messages received with a bad generation number.
+<DT><A HREF="./com/sleepycat/db/ReplicationManagerStats.html#getMsgsDropped()"><B>getMsgsDropped()</B></A> -
+Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/ReplicationManagerStats.html" title="class in com.sleepycat.db">ReplicationManagerStats</A>
+<DD>The Number of messages discarded due to queue length overflows..
<DT><A HREF="./com/sleepycat/db/ReplicationStats.html#getMsgsProcessed()"><B>getMsgsProcessed()</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/ReplicationStats.html" title="class in com.sleepycat.db">ReplicationStats</A>
<DD>The number of messages received and processed.
+<DT><A HREF="./com/sleepycat/db/ReplicationManagerStats.html#getMsgsQueued()"><B>getMsgsQueued()</B></A> -
+Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/ReplicationManagerStats.html" title="class in com.sleepycat.db">ReplicationManagerStats</A>
+<DD>The The number of messages queued due to a network delay..
<DT><A HREF="./com/sleepycat/db/ReplicationStats.html#getMsgsRecover()"><B>getMsgsRecover()</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/ReplicationStats.html" title="class in com.sleepycat.db">ReplicationStats</A>
<DD>The number of messages ignored due to pending recovery.
@@ -1932,6 +2024,10 @@ Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/ReplicationStats.ht
<DT><A HREF="./com/sleepycat/db/ReplicationStats.html#getMsgsSent()"><B>getMsgsSent()</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/ReplicationStats.html" title="class in com.sleepycat.db">ReplicationStats</A>
<DD>The number of messages sent.
+<DT><A HREF="./com/sleepycat/db/SecondaryConfig.html#getMultiKeyCreator()"><B>getMultiKeyCreator()</B></A> -
+Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/SecondaryConfig.html" title="class in com.sleepycat.db">SecondaryConfig</A>
+<DD>Returns the user-supplied object used for creating multi-valued secondary
+ keys.
<DT><A HREF="./com/sleepycat/db/DatabaseConfig.html#getMultiversion()"><B>getMultiversion()</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/DatabaseConfig.html" title="class in com.sleepycat.db">DatabaseConfig</A>
<DD>Return true if the database is configured for multiversion concurrency control.
@@ -1947,7 +2043,8 @@ Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/CacheStats.html" ti
<DD>Number of buffers frozen.
<DT><A HREF="./com/sleepycat/db/TransactionStats.Active.html#getMultiversionRef()"><B>getMultiversionRef()</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/TransactionStats.Active.html" title="class in com.sleepycat.db">TransactionStats.Active</A>
-<DD>The number of buffer copies created by this transaction that remain in cache.
+<DD>The number of buffer copies created by this transaction that remain in
+ cache.
<DT><A HREF="./com/sleepycat/db/CacheStats.html#getMultiversionThawed()"><B>getMultiversionThawed()</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/CacheStats.html" title="class in com.sleepycat.db">CacheStats</A>
<DD>Number of buffers thawed.
@@ -2157,6 +2254,14 @@ Method in exception com.sleepycat.db.<A HREF="./com/sleepycat/db/LockNotGrantedE
<DT><A HREF="./com/sleepycat/db/LockRequest.html#getObj()"><B>getObj()</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/LockRequest.html" title="class in com.sleepycat.db">LockRequest</A>
<DD>Return the lock object.
+<DT><A HREF="./com/sleepycat/db/LockStats.html#getObjsNowait()"><B>getObjsNowait()</B></A> -
+Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/LockStats.html" title="class in com.sleepycat.db">LockStats</A>
+<DD>The number of requests to allocate or deallocate an object for which the
+ thread of control did not wait.
+<DT><A HREF="./com/sleepycat/db/LockStats.html#getObjsWait()"><B>getObjsWait()</B></A> -
+Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/LockStats.html" title="class in com.sleepycat.db">LockStats</A>
+<DD>The number of requests to allocate or deallocate an object for which the
+ thread of control waited.
<DT><A HREF="./com/sleepycat/db/DatabaseEntry.html#getOffset()"><B>getOffset()</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>
<DD>Return the byte offset into the data array.
@@ -2197,9 +2302,18 @@ Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/HashStats.html" tit
<DT><A HREF="./com/sleepycat/bind/tuple/TupleInput.html#getPackedIntByteLength()"><B>getPackedIntByteLength()</B></A> -
Method in class com.sleepycat.bind.tuple.<A HREF="./com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>
<DD>Returns the byte length of a packed integer.
+<DT><A HREF="./com/sleepycat/bind/tuple/TupleInput.html#getPackedLongByteLength()"><B>getPackedLongByteLength()</B></A> -
+Method in class com.sleepycat.bind.tuple.<A HREF="./com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>
+<DD>Returns the byte length of a packed long integer.
<DT><A HREF="./com/sleepycat/db/CacheStats.html#getPageClean()"><B>getPageClean()</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/CacheStats.html" title="class in com.sleepycat.db">CacheStats</A>
<DD>Clean pages currently in the cache.
+<DT><A HREF="./com/sleepycat/db/BtreeStats.html#getPageCount()"><B>getPageCount()</B></A> -
+Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/BtreeStats.html" title="class in com.sleepycat.db">BtreeStats</A>
+<DD>The number of pages in the database.
+<DT><A HREF="./com/sleepycat/db/HashStats.html#getPageCount()"><B>getPageCount()</B></A> -
+Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/HashStats.html" title="class in com.sleepycat.db">HashStats</A>
+<DD>The number of pages in the database.
<DT><A HREF="./com/sleepycat/db/CacheFileStats.html#getPageCreate()"><B>getPageCreate()</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/CacheFileStats.html" title="class in com.sleepycat.db">CacheFileStats</A>
<DD>Pages created in the cache.
@@ -2290,6 +2404,11 @@ Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/DatabaseEntry.html"
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A>
<DD>Return the offset of the partial record being read or written by the
application, in bytes.
+<DT><A HREF="./com/sleepycat/db/ReplicationManagerStats.html#getPermFailed()"><B>getPermFailed()</B></A> -
+Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/ReplicationManagerStats.html" title="class in com.sleepycat.db">ReplicationManagerStats</A>
+<DD>The The number of times a PERM message originating at this site did
+ not receive sufficient acknowledgement from clients, according to the
+ configured acknowledgement policy and acknowledgement timeout..
<DT><A HREF="./com/sleepycat/db/TransactionStats.Active.html#getPid()"><B>getPid()</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/TransactionStats.Active.html" title="class in com.sleepycat.db">TransactionStats.Active</A>
<DD>The process ID of the process that owns the transaction.
@@ -2333,6 +2452,12 @@ Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/VerifyConfig.html"
<DT><A HREF="./com/sleepycat/db/CacheFile.html#getPriority()"><B>getPriority()</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/CacheFile.html" title="class in com.sleepycat.db">CacheFile</A>
<DD>Return the cache priority for pages from the specified file.
+<DT><A HREF="./com/sleepycat/db/Cursor.html#getPriority()"><B>getPriority()</B></A> -
+Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/Cursor.html" title="class in com.sleepycat.db">Cursor</A>
+<DD>Get the cache priority for pages referenced by the cursor.
+<DT><A HREF="./com/sleepycat/db/DatabaseConfig.html#getPriority()"><B>getPriority()</B></A> -
+Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/DatabaseConfig.html" title="class in com.sleepycat.db">DatabaseConfig</A>
+<DD>Return the the cache priority for pages referenced by this handle.
<DT><A HREF="./com/sleepycat/db/EnvironmentConfig.html#getPrivate()"><B>getPrivate()</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EnvironmentConfig.html" title="class in com.sleepycat.db">EnvironmentConfig</A>
<DD>Return true if the database environment is configured to only be accessed
@@ -2364,6 +2489,9 @@ Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/TransactionConfig.h
<DT><A HREF="./com/sleepycat/util/PackedInteger.html#getReadIntLength(byte[], int)"><B>getReadIntLength(byte[], int)</B></A> -
Static method in class com.sleepycat.util.<A HREF="./com/sleepycat/util/PackedInteger.html" title="class in com.sleepycat.util">PackedInteger</A>
<DD>Returns the number of bytes that would be read by <A HREF="./com/sleepycat/util/PackedInteger.html#readInt(byte[], int)"><CODE>PackedInteger.readInt(byte[], int)</CODE></A>.
+<DT><A HREF="./com/sleepycat/util/PackedInteger.html#getReadLongLength(byte[], int)"><B>getReadLongLength(byte[], int)</B></A> -
+Static method in class com.sleepycat.util.<A HREF="./com/sleepycat/util/PackedInteger.html" title="class in com.sleepycat.util">PackedInteger</A>
+<DD>Returns the number of bytes that would be read by <A HREF="./com/sleepycat/util/PackedInteger.html#readLong(byte[], int)"><CODE>PackedInteger.readLong(byte[], int)</CODE></A>.
<DT><A HREF="./com/sleepycat/db/TransactionStats.Active.html#getReadLsn()"><B>getReadLsn()</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/TransactionStats.Active.html" title="class in com.sleepycat.db">TransactionStats.Active</A>
<DD>The log sequence number of reads for snapshot transactions.
@@ -2499,12 +2627,15 @@ Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EnvironmentConfig.h
<DT><A HREF="./com/sleepycat/db/EnvironmentConfig.html#getReplicationManagerLocalSite()"><B>getReplicationManagerLocalSite()</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EnvironmentConfig.html" title="class in com.sleepycat.db">EnvironmentConfig</A>
<DD>Get the address of the local (this) site in a replication group.
+<DT><A HREF="./com/sleepycat/db/Environment.html#getReplicationManagerStats(com.sleepycat.db.StatsConfig)"><B>getReplicationManagerStats(StatsConfig)</B></A> -
+Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/Environment.html" title="class in com.sleepycat.db">Environment</A>
+<DD>Return the database environment's replication manager statistics.
<DT><A HREF="./com/sleepycat/db/EnvironmentConfig.html#getReplicationNumSites()"><B>getReplicationNumSites()</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EnvironmentConfig.html" title="class in com.sleepycat.db">EnvironmentConfig</A>
<DD>Get the total number of sites in the replication group.
<DT><A HREF="./com/sleepycat/db/EnvironmentConfig.html#getReplicationPriority()"><B>getReplicationPriority()</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EnvironmentConfig.html" title="class in com.sleepycat.db">EnvironmentConfig</A>
-<DD>Get the current environments priority.
+<DD>Get the current environment's priority.
<DT><A HREF="./com/sleepycat/db/EnvironmentConfig.html#getReplicationRequestMax()"><B>getReplicationRequestMax()</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EnvironmentConfig.html" title="class in com.sleepycat.db">EnvironmentConfig</A>
<DD>Get the maximum amount of data sent in response to any request.
@@ -2633,6 +2764,11 @@ Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/TransactionConfig.h
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/DatabaseConfig.html" title="class in com.sleepycat.db">DatabaseConfig</A>
<DD>Return true if the database is configured to support sorted duplicate data
items.
+<DT><A HREF="./com/sleepycat/db/ReplicationStats.html#getStartSyncDelayed()"><B>getStartSyncDelayed()</B></A> -
+Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/ReplicationStats.html" title="class in com.sleepycat.db">ReplicationStats</A>
+<DD>The number of times the client had to delay the start of a cache flush
+ operation (initiated by the master for an impending checkpoint) because it
+ was missing some previous log record(s).
<DT><A HREF="./com/sleepycat/db/ReplicationStats.html#getStartupComplete()"><B>getStartupComplete()</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/ReplicationStats.html" title="class in com.sleepycat.db">ReplicationStats</A>
<DD>The client site has completed its startup procedures and is now
@@ -2646,6 +2782,9 @@ Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/Sequence.html" titl
<DT><A HREF="./com/sleepycat/db/ReplicationStats.html#getStatus()"><B>getStatus()</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/ReplicationStats.html" title="class in com.sleepycat.db">ReplicationStats</A>
<DD>The current replication mode.
+<DT><A HREF="./com/sleepycat/db/TransactionStats.Active.html#getStatus()"><B>getStatus()</B></A> -
+Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/TransactionStats.Active.html" title="class in com.sleepycat.db">TransactionStats.Active</A>
+<DD>The status of the transaction.
<DT><A HREF="./com/sleepycat/bind/serial/SerialOutput.html#getStreamHeader()"><B>getStreamHeader()</B></A> -
Static method in class com.sleepycat.bind.serial.<A HREF="./com/sleepycat/bind/serial/SerialOutput.html" title="class in com.sleepycat.bind.serial">SerialOutput</A>
<DD>Returns the fixed stream header used for all serialized streams in
@@ -2669,8 +2808,7 @@ Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EnvironmentConfig.h
temporary files.
<DT><A HREF="./com/sleepycat/db/EnvironmentConfig.html#getTestAndSetSpins()"><B>getTestAndSetSpins()</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EnvironmentConfig.html" title="class in com.sleepycat.db">EnvironmentConfig</A>
-<DD>Return the number of times test-and-set mutexes should spin before
- blocking.
+<DD><B>Deprecated.</B>&nbsp;<I>replaced by <A HREF="./com/sleepycat/db/EnvironmentConfig.html#getMutexTestAndSetSpins()"><CODE>EnvironmentConfig.getMutexTestAndSetSpins()</CODE></A></I>
<DT><A HREF="./com/sleepycat/db/EnvironmentConfig.html#getThreaded()"><B>getThreaded()</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EnvironmentConfig.html" title="class in com.sleepycat.db">EnvironmentConfig</A>
<DD>Return true if the handle is configured to be <em>free-threaded</em>.
@@ -2717,6 +2855,9 @@ Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/DatabaseConfig.html
<DT><A HREF="./com/sleepycat/bind/tuple/TupleBase.html#getTupleBufferSize()"><B>getTupleBufferSize()</B></A> -
Method in class com.sleepycat.bind.tuple.<A HREF="./com/sleepycat/bind/tuple/TupleBase.html" title="class in com.sleepycat.bind.tuple">TupleBase</A>
<DD>Returns the initial byte size of the output buffer.
+<DT><A HREF="./com/sleepycat/bind/tuple/BigIntegerBinding.html#getTupleOutput(java.lang.Object)"><B>getTupleOutput(Object)</B></A> -
+Method in class com.sleepycat.bind.tuple.<A HREF="./com/sleepycat/bind/tuple/BigIntegerBinding.html" title="class in com.sleepycat.bind.tuple">BigIntegerBinding</A>
+<DD>&nbsp;
<DT><A HREF="./com/sleepycat/bind/tuple/BooleanBinding.html#getTupleOutput(java.lang.Object)"><B>getTupleOutput(Object)</B></A> -
Method in class com.sleepycat.bind.tuple.<A HREF="./com/sleepycat/bind/tuple/BooleanBinding.html" title="class in com.sleepycat.bind.tuple">BooleanBinding</A>
<DD>&nbsp;
@@ -2771,6 +2912,9 @@ Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EnvironmentConfig.h
<DT><A HREF="./com/sleepycat/db/EnvironmentConfig.html#getTxnNotDurable()"><B>getTxnNotDurable()</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EnvironmentConfig.html" title="class in com.sleepycat.db">EnvironmentConfig</A>
<DD>Return true if the system has been configured to not write log records.
+<DT><A HREF="./com/sleepycat/db/EnvironmentConfig.html#getTxnNoWait()"><B>getTxnNoWait()</B></A> -
+Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EnvironmentConfig.html" title="class in com.sleepycat.db">EnvironmentConfig</A>
+<DD>Return true if the transactions have been configured to not wait for locks by default.
<DT><A HREF="./com/sleepycat/db/ReplicationStats.html#getTxnsApplied()"><B>getTxnsApplied()</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/ReplicationStats.html" title="class in com.sleepycat.db">ReplicationStats</A>
<DD>The number of transactions applied.
@@ -2825,27 +2969,25 @@ Method in class com.sleepycat.collections.<A HREF="./com/sleepycat/collections/M
<DT><A HREF="./com/sleepycat/db/SequenceStats.html#getValue()"><B>getValue()</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/SequenceStats.html" title="class in com.sleepycat.db">SequenceStats</A>
<DD>The current cached value of the sequence.
-<DT><A HREF="./com/sleepycat/db/EnvironmentConfig.html#getVerboseDeadlock()"><B>getVerboseDeadlock()</B></A> -
+<DT><A HREF="./com/sleepycat/db/EnvironmentConfig.html#getVerbose(com.sleepycat.db.VerboseConfig)"><B>getVerbose(VerboseConfig)</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EnvironmentConfig.html" title="class in com.sleepycat.db">EnvironmentConfig</A>
<DD>Return if the database environment is configured to display
- additional information when doing deadlock detection.
+ a given type of verbose information.
+<DT><A HREF="./com/sleepycat/db/EnvironmentConfig.html#getVerboseDeadlock()"><B>getVerboseDeadlock()</B></A> -
+Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EnvironmentConfig.html" title="class in com.sleepycat.db">EnvironmentConfig</A>
+<DD><B>Deprecated.</B>&nbsp;<I>replaced by <A HREF="./com/sleepycat/db/EnvironmentConfig.html#getVerbose(com.sleepycat.db.VerboseConfig)"><CODE>EnvironmentConfig.getVerbose(com.sleepycat.db.VerboseConfig)</CODE></A></I>
<DT><A HREF="./com/sleepycat/db/EnvironmentConfig.html#getVerboseRecovery()"><B>getVerboseRecovery()</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EnvironmentConfig.html" title="class in com.sleepycat.db">EnvironmentConfig</A>
-<DD>Return if the database environment is configured to display
- additional information when performing recovery.
+<DD><B>Deprecated.</B>&nbsp;<I>replaced by <A HREF="./com/sleepycat/db/EnvironmentConfig.html#getVerbose(com.sleepycat.db.VerboseConfig)"><CODE>EnvironmentConfig.getVerbose(com.sleepycat.db.VerboseConfig)</CODE></A></I>
<DT><A HREF="./com/sleepycat/db/EnvironmentConfig.html#getVerboseRegister()"><B>getVerboseRegister()</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EnvironmentConfig.html" title="class in com.sleepycat.db">EnvironmentConfig</A>
-<DD>Return if the database environment is configured to display
- additional information concerning support for the
- <A HREF="./com/sleepycat/db/EnvironmentConfig.html#setRegister(boolean)"><CODE>EnvironmentConfig.setRegister(boolean)</CODE></A> method.
+<DD><B>Deprecated.</B>&nbsp;<I>replaced by <A HREF="./com/sleepycat/db/EnvironmentConfig.html#getVerbose(com.sleepycat.db.VerboseConfig)"><CODE>EnvironmentConfig.getVerbose(com.sleepycat.db.VerboseConfig)</CODE></A></I>
<DT><A HREF="./com/sleepycat/db/EnvironmentConfig.html#getVerboseReplication()"><B>getVerboseReplication()</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EnvironmentConfig.html" title="class in com.sleepycat.db">EnvironmentConfig</A>
-<DD>Return if the database environment is configured to display
- additional information when processing replication messages.
+<DD><B>Deprecated.</B>&nbsp;<I>replaced by <A HREF="./com/sleepycat/db/EnvironmentConfig.html#getVerbose(com.sleepycat.db.VerboseConfig)"><CODE>EnvironmentConfig.getVerbose(com.sleepycat.db.VerboseConfig)</CODE></A></I>
<DT><A HREF="./com/sleepycat/db/EnvironmentConfig.html#getVerboseWaitsFor()"><B>getVerboseWaitsFor()</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EnvironmentConfig.html" title="class in com.sleepycat.db">EnvironmentConfig</A>
-<DD>Return if the database environment is configured to display the
- waits-for table when doing deadlock detection.
+<DD><B>Deprecated.</B>&nbsp;<I>replaced by <A HREF="./com/sleepycat/db/EnvironmentConfig.html#getVerbose(com.sleepycat.db.VerboseConfig)"><CODE>EnvironmentConfig.getVerbose(com.sleepycat.db.VerboseConfig)</CODE></A></I>
<DT><A HREF="./com/sleepycat/db/BtreeStats.html#getVersion()"><B>getVersion()</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/BtreeStats.html" title="class in com.sleepycat.db">BtreeStats</A>
<DD>The version of the Btree database.
@@ -2874,6 +3016,10 @@ Static method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/Environment.
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/SequenceStats.html" title="class in com.sleepycat.db">SequenceStats</A>
<DD>The number of times a thread of control was forced to wait on the
handle mutex.
+<DT><A HREF="./com/sleepycat/db/TransactionConfig.html#getWait()"><B>getWait()</B></A> -
+Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/TransactionConfig.html" title="class in com.sleepycat.db">TransactionConfig</A>
+<DD>Return if the transaction is configured to wait if a lock
+ request cannot be immediately granted.
<DT><A HREF="./com/sleepycat/db/ReplicationStats.html#getWaitingLsn()"><B>getWaitingLsn()</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/ReplicationStats.html" title="class in com.sleepycat.db">ReplicationStats</A>
<DD>The LSN of the first log record we have after missing log records
@@ -2913,6 +3059,13 @@ Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/CursorConfig.html"
<DT><A HREF="./com/sleepycat/util/PackedInteger.html#getWriteIntLength(int)"><B>getWriteIntLength(int)</B></A> -
Static method in class com.sleepycat.util.<A HREF="./com/sleepycat/util/PackedInteger.html" title="class in com.sleepycat.util">PackedInteger</A>
<DD>Returns the number of bytes that would be written by <A HREF="./com/sleepycat/util/PackedInteger.html#writeInt(byte[], int, int)"><CODE>PackedInteger.writeInt(byte[], int, int)</CODE></A>.
+<DT><A HREF="./com/sleepycat/util/PackedInteger.html#getWriteLongLength(long)"><B>getWriteLongLength(long)</B></A> -
+Static method in class com.sleepycat.util.<A HREF="./com/sleepycat/util/PackedInteger.html" title="class in com.sleepycat.util">PackedInteger</A>
+<DD>Returns the number of bytes that would be written by <A HREF="./com/sleepycat/util/PackedInteger.html#writeLong(byte[], int, long)"><CODE>PackedInteger.writeLong(byte[], int, long)</CODE></A>.
+<DT><A HREF="./com/sleepycat/db/TransactionConfig.html#getWriteNoSync()"><B>getWriteNoSync()</B></A> -
+Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/TransactionConfig.html" title="class in com.sleepycat.db">TransactionConfig</A>
+<DD>Return if the transaction is configured to write but not synchronously
+ flush the log it when commits.
<DT><A HREF="./com/sleepycat/db/DatabaseConfig.html#getXACreate()"><B>getXACreate()</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/DatabaseConfig.html" title="class in com.sleepycat.db">DatabaseConfig</A>
<DD>Return true if the database has been configured to be accessed via applications
@@ -2942,13 +3095,72 @@ Variable in class com.sleepycat.db.<A HREF="./com/sleepycat/db/KeyRange.html" ti
<A NAME="_H_"><!-- --></A><H2>
<B>H</B></H2>
<DL>
-<DT><A HREF="./com/sleepycat/db/EventHandler.html#handleEvent(com.sleepycat.db.EventType)"><B>handleEvent(EventType)</B></A> -
-Method in interface com.sleepycat.db.<A HREF="./com/sleepycat/db/EventHandler.html" title="interface in com.sleepycat.db">EventHandler</A>
-<DD>A callback function to be called when an event is sent from the
- Berkeley DB library.
<DT><A HREF="./com/sleepycat/db/LogRecordHandler.html#handleLogRecord(com.sleepycat.db.Environment, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.LogSequenceNumber, com.sleepycat.db.RecoveryOperation)"><B>handleLogRecord(Environment, DatabaseEntry, LogSequenceNumber, RecoveryOperation)</B></A> -
Method in interface com.sleepycat.db.<A HREF="./com/sleepycat/db/LogRecordHandler.html" title="interface in com.sleepycat.db">LogRecordHandler</A>
<DD>&nbsp;
+<DT><A HREF="./com/sleepycat/db/EventHandler.html#handlePanicEvent()"><B>handlePanicEvent()</B></A> -
+Method in interface com.sleepycat.db.<A HREF="./com/sleepycat/db/EventHandler.html" title="interface in com.sleepycat.db">EventHandler</A>
+<DD>A callback function to be called when a panic event is sent from the
+ Berkeley DB library.
+<DT><A HREF="./com/sleepycat/db/EventHandlerAdapter.html#handlePanicEvent()"><B>handlePanicEvent()</B></A> -
+Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EventHandlerAdapter.html" title="class in com.sleepycat.db">EventHandlerAdapter</A>
+<DD>See <A HREF="./com/sleepycat/db/EventHandler.html#handlePanicEvent()"><CODE>EventHandler.handlePanicEvent</CODE></A> for details of this callback.
+<DT><A HREF="./com/sleepycat/db/EventHandler.html#handleRepClientEvent()"><B>handleRepClientEvent()</B></A> -
+Method in interface com.sleepycat.db.<A HREF="./com/sleepycat/db/EventHandler.html" title="interface in com.sleepycat.db">EventHandler</A>
+<DD>A callback function to be called when a Replication Client event is sent
+ from the Berkeley DB library.
+<DT><A HREF="./com/sleepycat/db/EventHandlerAdapter.html#handleRepClientEvent()"><B>handleRepClientEvent()</B></A> -
+Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EventHandlerAdapter.html" title="class in com.sleepycat.db">EventHandlerAdapter</A>
+<DD>See <A HREF="./com/sleepycat/db/EventHandler.html#handleRepClientEvent()"><CODE>EventHandler.handleRepClientEvent</CODE></A> for details of this
+ callback.
+<DT><A HREF="./com/sleepycat/db/EventHandler.html#handleRepElectedEvent()"><B>handleRepElectedEvent()</B></A> -
+Method in interface com.sleepycat.db.<A HREF="./com/sleepycat/db/EventHandler.html" title="interface in com.sleepycat.db">EventHandler</A>
+<DD>A callback function to be called when an event is sent from the
+ Berkeley DB library.
+<DT><A HREF="./com/sleepycat/db/EventHandlerAdapter.html#handleRepElectedEvent()"><B>handleRepElectedEvent()</B></A> -
+Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EventHandlerAdapter.html" title="class in com.sleepycat.db">EventHandlerAdapter</A>
+<DD>See <A HREF="./com/sleepycat/db/EventHandler.html#handleRepElectedEvent()"><CODE>EventHandler.handleRepElectedEvent</CODE></A> for details of this
+ callback.
+<DT><A HREF="./com/sleepycat/db/EventHandler.html#handleRepMasterEvent()"><B>handleRepMasterEvent()</B></A> -
+Method in interface com.sleepycat.db.<A HREF="./com/sleepycat/db/EventHandler.html" title="interface in com.sleepycat.db">EventHandler</A>
+<DD>A callback function to be called when an event is sent from the
+ Berkeley DB library.
+<DT><A HREF="./com/sleepycat/db/EventHandlerAdapter.html#handleRepMasterEvent()"><B>handleRepMasterEvent()</B></A> -
+Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EventHandlerAdapter.html" title="class in com.sleepycat.db">EventHandlerAdapter</A>
+<DD>See <A HREF="./com/sleepycat/db/EventHandler.html#handleRepMasterEvent()"><CODE>EventHandler.handleRepMasterEvent</CODE></A> for details of this
+ callback.
+<DT><A HREF="./com/sleepycat/db/EventHandler.html#handleRepNewMasterEvent(int)"><B>handleRepNewMasterEvent(int)</B></A> -
+Method in interface com.sleepycat.db.<A HREF="./com/sleepycat/db/EventHandler.html" title="interface in com.sleepycat.db">EventHandler</A>
+<DD>A callback function to be called when an event is sent from the
+ Berkeley DB library.
+<DT><A HREF="./com/sleepycat/db/EventHandlerAdapter.html#handleRepNewMasterEvent(int)"><B>handleRepNewMasterEvent(int)</B></A> -
+Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EventHandlerAdapter.html" title="class in com.sleepycat.db">EventHandlerAdapter</A>
+<DD>See <A HREF="./com/sleepycat/db/EventHandler.html#handleRepNewMasterEvent(int)"><CODE>EventHandler.handleRepNewMasterEvent</CODE></A> for details of this
+ callback.
+<DT><A HREF="./com/sleepycat/db/EventHandler.html#handleRepPermFailedEvent()"><B>handleRepPermFailedEvent()</B></A> -
+Method in interface com.sleepycat.db.<A HREF="./com/sleepycat/db/EventHandler.html" title="interface in com.sleepycat.db">EventHandler</A>
+<DD>A callback function to be called when an event is sent from the
+ Berkeley DB library.
+<DT><A HREF="./com/sleepycat/db/EventHandlerAdapter.html#handleRepPermFailedEvent()"><B>handleRepPermFailedEvent()</B></A> -
+Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EventHandlerAdapter.html" title="class in com.sleepycat.db">EventHandlerAdapter</A>
+<DD>See <A HREF="./com/sleepycat/db/EventHandler.html#handleRepPermFailedEvent()"><CODE>EventHandler.handleRepPermFailedEvent</CODE></A> for details of this
+ callback.
+<DT><A HREF="./com/sleepycat/db/EventHandler.html#handleRepStartupDoneEvent()"><B>handleRepStartupDoneEvent()</B></A> -
+Method in interface com.sleepycat.db.<A HREF="./com/sleepycat/db/EventHandler.html" title="interface in com.sleepycat.db">EventHandler</A>
+<DD>A callback function to be called when an event is sent from the
+ Berkeley DB library.
+<DT><A HREF="./com/sleepycat/db/EventHandlerAdapter.html#handleRepStartupDoneEvent()"><B>handleRepStartupDoneEvent()</B></A> -
+Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EventHandlerAdapter.html" title="class in com.sleepycat.db">EventHandlerAdapter</A>
+<DD>See <A HREF="./com/sleepycat/db/EventHandler.html#handleRepStartupDoneEvent()"><CODE>EventHandler.handleRepStartupDoneEvent</CODE></A> for details of this
+ callback.
+<DT><A HREF="./com/sleepycat/db/EventHandler.html#handleWriteFailedEvent(int)"><B>handleWriteFailedEvent(int)</B></A> -
+Method in interface com.sleepycat.db.<A HREF="./com/sleepycat/db/EventHandler.html" title="interface in com.sleepycat.db">EventHandler</A>
+<DD>A callback function to be called when an event is sent from the
+ Berkeley DB library.
+<DT><A HREF="./com/sleepycat/db/EventHandlerAdapter.html#handleWriteFailedEvent(int)"><B>handleWriteFailedEvent(int)</B></A> -
+Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EventHandlerAdapter.html" title="class in com.sleepycat.db">EventHandlerAdapter</A>
+<DD>See <A HREF="./com/sleepycat/db/EventHandler.html#handleWriteFailedEvent(int)"><CODE>EventHandler.handleWriteFailedEvent</CODE></A> for details of this
+ callback.
<DT><A HREF="./com/sleepycat/db/DatabaseType.html#HASH"><B>HASH</B></A> -
Static variable in class com.sleepycat.db.<A HREF="./com/sleepycat/db/DatabaseType.html" title="class in com.sleepycat.db">DatabaseType</A>
<DD>The database is a Hash.
@@ -2957,7 +3169,7 @@ Method in interface com.sleepycat.db.<A HREF="./com/sleepycat/db/Hasher.html" ti
<DD>An application-specified, database-specific hash function.
<DT><A HREF="./com/sleepycat/collections/MapEntryParameter.html#hashCode()"><B>hashCode()</B></A> -
Method in class com.sleepycat.collections.<A HREF="./com/sleepycat/collections/MapEntryParameter.html" title="class in com.sleepycat.collections">MapEntryParameter</A>
-<DD>Computes a hash code as specified by <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.Entry.html#hashCode()" title="class or interface in java.util"><CODE>Map.Entry.hashCode()</CODE></A>.
+<DD>Computes a hash code as specified by <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.Entry.html#hashCode()" title="class or interface in java.util"><CODE>Map.Entry.hashCode()</CODE></A>.
<DT><A HREF="./com/sleepycat/collections/StoredCollection.html#hashCode()"><B>hashCode()</B></A> -
Method in class com.sleepycat.collections.<A HREF="./com/sleepycat/collections/StoredCollection.html" title="class in com.sleepycat.collections">StoredCollection</A>
<DD>&nbsp;
@@ -3021,9 +3233,6 @@ Variable in class com.sleepycat.db.<A HREF="./com/sleepycat/db/ReplicationHostAd
<A NAME="_I_"><!-- --></A><H2>
<B>I</B></H2>
<DL>
-<DT><A HREF="./com/sleepycat/db/Environment.html#INCOMP_NAME"><B>INCOMP_NAME</B></A> -
-Static variable in class com.sleepycat.db.<A HREF="./com/sleepycat/db/Environment.html" title="class in com.sleepycat.db">Environment</A>
-<DD>The name of the IN Compressor daemon thread.
<DT><A HREF="./com/sleepycat/bind/serial/SerialSerialKeyCreator.html#indexKeyBinding"><B>indexKeyBinding</B></A> -
Variable in class com.sleepycat.bind.serial.<A HREF="./com/sleepycat/bind/serial/SerialSerialKeyCreator.html" title="class in com.sleepycat.bind.serial">SerialSerialKeyCreator</A>
<DD>&nbsp;
@@ -3048,6 +3257,9 @@ Constructor for exception com.sleepycat.util.<A HREF="./com/sleepycat/util/IOExc
<DT><A HREF="./com/sleepycat/db/LockRequestMode.html#IREAD"><B>IREAD</B></A> -
Static variable in class com.sleepycat.db.<A HREF="./com/sleepycat/db/LockRequestMode.html" title="class in com.sleepycat.db">LockRequestMode</A>
<DD>Intention to read (shared).
+<DT><A HREF="./com/sleepycat/db/ReplicationHostAddress.html#isConnected()"><B>isConnected()</B></A> -
+Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/ReplicationHostAddress.html" title="class in com.sleepycat.db">ReplicationHostAddress</A>
+<DD>Indicates whether the address is connected.
<DT><A HREF="./com/sleepycat/collections/StoredIterator.html#isCurrentData(java.lang.Object)"><B>isCurrentData(Object)</B></A> -
Method in class com.sleepycat.collections.<A HREF="./com/sleepycat/collections/StoredIterator.html" title="class in com.sleepycat.collections">StoredIterator</A>
<DD>&nbsp;
@@ -3067,9 +3279,6 @@ Method in class com.sleepycat.collections.<A HREF="./com/sleepycat/collections/S
<DT><A HREF="./com/sleepycat/db/ReplicationStatus.html#isIgnore()"><B>isIgnore()</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/ReplicationStatus.html" title="class in com.sleepycat.db">ReplicationStatus</A>
<DD>This message cannot be processed.
-<DT><A HREF="./com/sleepycat/db/ReplicationStatus.html#isNewMaster()"><B>isNewMaster()</B></A> -
-Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/ReplicationStatus.html" title="class in com.sleepycat.db">ReplicationStatus</A>
-<DD>A new master has been elected.
<DT><A HREF="./com/sleepycat/db/ReplicationStatus.html#isNewSite()"><B>isNewSite()</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/ReplicationStatus.html" title="class in com.sleepycat.db">ReplicationStatus</A>
<DD>The system received contact information from a new environment.
@@ -3278,6 +3487,9 @@ Method in interface com.sleepycat.bind.tuple.<A HREF="./com/sleepycat/bind/tuple
<DT><A HREF="./com/sleepycat/util/PackedInteger.html#MAX_LENGTH"><B>MAX_LENGTH</B></A> -
Static variable in class com.sleepycat.util.<A HREF="./com/sleepycat/util/PackedInteger.html" title="class in com.sleepycat.util">PackedInteger</A>
<DD>The maximum number of bytes needed to store an int value (5).
+<DT><A HREF="./com/sleepycat/util/PackedInteger.html#MAX_LONG_LENGTH"><B>MAX_LONG_LENGTH</B></A> -
+Static variable in class com.sleepycat.util.<A HREF="./com/sleepycat/util/PackedInteger.html" title="class in com.sleepycat.util">PackedInteger</A>
+<DD>The maximum number of bytes needed to store a long value (9).
<DT><A HREF="./com/sleepycat/db/LockDetectMode.html#MAXLOCKS"><B>MAXLOCKS</B></A> -
Static variable in class com.sleepycat.db.<A HREF="./com/sleepycat/db/LockDetectMode.html" title="class in com.sleepycat.db">LockDetectMode</A>
<DD>Reject the lock request for the locker ID with the most locks.
@@ -3483,6 +3695,9 @@ Method in class com.sleepycat.bind.<A HREF="./com/sleepycat/bind/RecordNumberBin
<DT><A HREF="./com/sleepycat/bind/serial/SerialBinding.html#objectToEntry(java.lang.Object, com.sleepycat.db.DatabaseEntry)"><B>objectToEntry(Object, DatabaseEntry)</B></A> -
Method in class com.sleepycat.bind.serial.<A HREF="./com/sleepycat/bind/serial/SerialBinding.html" title="class in com.sleepycat.bind.serial">SerialBinding</A>
<DD>Serialize an object into an entry buffer.
+<DT><A HREF="./com/sleepycat/bind/tuple/BigIntegerBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)"><B>objectToEntry(Object, TupleOutput)</B></A> -
+Method in class com.sleepycat.bind.tuple.<A HREF="./com/sleepycat/bind/tuple/BigIntegerBinding.html" title="class in com.sleepycat.bind.tuple">BigIntegerBinding</A>
+<DD>&nbsp;
<DT><A HREF="./com/sleepycat/bind/tuple/BooleanBinding.html#objectToEntry(java.lang.Object, com.sleepycat.bind.tuple.TupleOutput)"><B>objectToEntry(Object, TupleOutput)</B></A> -
Method in class com.sleepycat.bind.tuple.<A HREF="./com/sleepycat/bind/tuple/BooleanBinding.html" title="class in com.sleepycat.bind.tuple">BooleanBinding</A>
<DD>&nbsp;
@@ -3606,9 +3821,6 @@ Constructor for class com.sleepycat.util.<A HREF="./com/sleepycat/util/PackedInt
<DT><A HREF="./com/sleepycat/db/Environment.html#panic(boolean)"><B>panic(boolean)</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/Environment.html" title="class in com.sleepycat.db">Environment</A>
<DD>Set the panic state for the database environment.
-<DT><A HREF="./com/sleepycat/db/EventType.html#PANIC"><B>PANIC</B></A> -
-Static variable in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EventType.html" title="class in com.sleepycat.db">EventType</A>
-<DD>The event is a Database panic.
<DT><A HREF="./com/sleepycat/db/PanicHandler.html#panic(com.sleepycat.db.Environment, com.sleepycat.db.DatabaseException)"><B>panic(Environment, DatabaseException)</B></A> -
Method in interface com.sleepycat.db.<A HREF="./com/sleepycat/db/PanicHandler.html" title="interface in com.sleepycat.db">PanicHandler</A>
<DD>A function to be called if the database environment panics.
@@ -3748,6 +3960,9 @@ Static variable in class com.sleepycat.db.<A HREF="./com/sleepycat/db/CursorConf
<DT><A HREF="./com/sleepycat/db/LockMode.html#READ_UNCOMMITTED"><B>READ_UNCOMMITTED</B></A> -
Static variable in class com.sleepycat.db.<A HREF="./com/sleepycat/db/LockMode.html" title="class in com.sleepycat.db">LockMode</A>
<DD>Read modified but not yet committed data.
+<DT><A HREF="./com/sleepycat/bind/tuple/TupleInput.html#readBigInteger()"><B>readBigInteger()</B></A> -
+Method in class com.sleepycat.bind.tuple.<A HREF="./com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>
+<DD>Reads a <code>BigInteger</code>.
<DT><A HREF="./com/sleepycat/bind/tuple/TupleInput.html#readBoolean()"><B>readBoolean()</B></A> -
Method in class com.sleepycat.bind.tuple.<A HREF="./com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>
<DD>Reads a boolean (one byte) unsigned value from the buffer and returns
@@ -3804,9 +4019,15 @@ Static method in class com.sleepycat.util.<A HREF="./com/sleepycat/util/PackedIn
<DT><A HREF="./com/sleepycat/bind/tuple/TupleInput.html#readLong()"><B>readLong()</B></A> -
Method in class com.sleepycat.bind.tuple.<A HREF="./com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>
<DD>Reads a signed long (eight byte) value from the buffer.
+<DT><A HREF="./com/sleepycat/util/PackedInteger.html#readLong(byte[], int)"><B>readLong(byte[], int)</B></A> -
+Static method in class com.sleepycat.util.<A HREF="./com/sleepycat/util/PackedInteger.html" title="class in com.sleepycat.util">PackedInteger</A>
+<DD>Reads a packed long integer at the given buffer offset and returns it.
<DT><A HREF="./com/sleepycat/bind/tuple/TupleInput.html#readPackedInt()"><B>readPackedInt()</B></A> -
Method in class com.sleepycat.bind.tuple.<A HREF="./com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>
<DD>Reads a packed integer.
+<DT><A HREF="./com/sleepycat/bind/tuple/TupleInput.html#readPackedLong()"><B>readPackedLong()</B></A> -
+Method in class com.sleepycat.bind.tuple.<A HREF="./com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>
+<DD>Reads a packed long integer.
<DT><A HREF="./com/sleepycat/bind/tuple/TupleInput.html#readShort()"><B>readShort()</B></A> -
Method in class com.sleepycat.bind.tuple.<A HREF="./com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple">TupleInput</A>
<DD>Reads a signed short (two byte) value from the buffer.
@@ -3854,10 +4075,16 @@ Static method in class com.sleepycat.bind.<A HREF="./com/sleepycat/bind/RecordNu
<DT><A HREF="./com/sleepycat/db/Environment.html#recover(int, boolean)"><B>recover(int, boolean)</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/Environment.html" title="class in com.sleepycat.db">Environment</A>
<DD>Return a list of prepared but not yet resolved transactions.
+<DT><A HREF="./com/sleepycat/db/VerboseConfig.html#RECOVERY"><B>RECOVERY</B></A> -
+Static variable in class com.sleepycat.db.<A HREF="./com/sleepycat/db/VerboseConfig.html" title="class in com.sleepycat.db">VerboseConfig</A>
+<DD>Display additional information when performing recovery.
<DT><A HREF="./com/sleepycat/db/FeedbackHandler.html#recoveryFeedback(com.sleepycat.db.Environment, int)"><B>recoveryFeedback(Environment, int)</B></A> -
Method in interface com.sleepycat.db.<A HREF="./com/sleepycat/db/FeedbackHandler.html" title="interface in com.sleepycat.db">FeedbackHandler</A>
<DD>A function called with progress information when the database environment is being recovered.
-<DT><A HREF="./com/sleepycat/db/RecoveryOperation.html" title="class in com.sleepycat.db"><B>RecoveryOperation</B></A> - Class in <A HREF="./com/sleepycat/db/package-summary.html">com.sleepycat.db</A><DD>The recovery operation being performed when <A HREF="./com/sleepycat/db/LogRecordHandler.html#handleLogRecord(com.sleepycat.db.Environment, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.LogSequenceNumber, com.sleepycat.db.RecoveryOperation)"><CODE>LogRecordHandler.handleLogRecord</CODE></A> is called.<DT><A HREF="./com/sleepycat/collections/StoredEntrySet.html#remove(java.lang.Object)"><B>remove(Object)</B></A> -
+<DT><A HREF="./com/sleepycat/db/RecoveryOperation.html" title="class in com.sleepycat.db"><B>RecoveryOperation</B></A> - Class in <A HREF="./com/sleepycat/db/package-summary.html">com.sleepycat.db</A><DD>The recovery operation being performed when <A HREF="./com/sleepycat/db/LogRecordHandler.html#handleLogRecord(com.sleepycat.db.Environment, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.LogSequenceNumber, com.sleepycat.db.RecoveryOperation)"><CODE>LogRecordHandler.handleLogRecord</CODE></A> is called.<DT><A HREF="./com/sleepycat/db/VerboseConfig.html#REGISTER"><B>REGISTER</B></A> -
+Static variable in class com.sleepycat.db.<A HREF="./com/sleepycat/db/VerboseConfig.html" title="class in com.sleepycat.db">VerboseConfig</A>
+<DD>Display additional information concerning support for <A HREF="./com/sleepycat/db/EnvironmentConfig.html#setRegister(boolean)"><CODE>EnvironmentConfig.setRegister(boolean)</CODE></A>.
+<DT><A HREF="./com/sleepycat/collections/StoredEntrySet.html#remove(java.lang.Object)"><B>remove(Object)</B></A> -
Method in class com.sleepycat.collections.<A HREF="./com/sleepycat/collections/StoredEntrySet.html" title="class in com.sleepycat.collections">StoredEntrySet</A>
<DD>Removes the specified element from this set if it is present (optional
operation).
@@ -3914,29 +4141,18 @@ Rename a database.
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/Environment.html" title="class in com.sleepycat.db">Environment</A>
<DD>
Rename a database.
-<DT><A HREF="./com/sleepycat/db/EventType.html#REP_CLIENT"><B>REP_CLIENT</B></A> -
-Static variable in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EventType.html" title="class in com.sleepycat.db">EventType</A>
-<DD>The event is a replication client message, meaning that the current site
- is now a client in the replication group.
<DT><A HREF="./com/sleepycat/db/ReplicationManagerStartPolicy.html#REP_CLIENT"><B>REP_CLIENT</B></A> -
Static variable in class com.sleepycat.db.<A HREF="./com/sleepycat/db/ReplicationManagerStartPolicy.html" title="class in com.sleepycat.db">ReplicationManagerStartPolicy</A>
<DD>Start as a client site, and do not call for an election.
<DT><A HREF="./com/sleepycat/db/ReplicationManagerStartPolicy.html#REP_ELECTION"><B>REP_ELECTION</B></A> -
Static variable in class com.sleepycat.db.<A HREF="./com/sleepycat/db/ReplicationManagerStartPolicy.html" title="class in com.sleepycat.db">ReplicationManagerStartPolicy</A>
<DD>Start as a client, and call for an election if no master is found.
-<DT><A HREF="./com/sleepycat/db/ReplicationManagerStartPolicy.html#REP_FULL_ELECTION"><B>REP_FULL_ELECTION</B></A> -
-Static variable in class com.sleepycat.db.<A HREF="./com/sleepycat/db/ReplicationManagerStartPolicy.html" title="class in com.sleepycat.db">ReplicationManagerStartPolicy</A>
-<DD>Start as a client, and call for an election if no master is found.
-<DT><A HREF="./com/sleepycat/db/EventType.html#REP_MASTER"><B>REP_MASTER</B></A> -
-Static variable in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EventType.html" title="class in com.sleepycat.db">EventType</A>
-<DD>The event is a replication master message, meaning that the current site
- is now the master in the replication group.
<DT><A HREF="./com/sleepycat/db/ReplicationManagerStartPolicy.html#REP_MASTER"><B>REP_MASTER</B></A> -
Static variable in class com.sleepycat.db.<A HREF="./com/sleepycat/db/ReplicationManagerStartPolicy.html" title="class in com.sleepycat.db">ReplicationManagerStartPolicy</A>
<DD>Start as a master site, and do not call for an election.
-<DT><A HREF="./com/sleepycat/db/EventType.html#REP_NEW_MASTER"><B>REP_NEW_MASTER</B></A> -
-Static variable in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EventType.html" title="class in com.sleepycat.db">EventType</A>
-<DD>The event is a replication new master message.
+<DT><A HREF="./com/sleepycat/db/VerboseConfig.html#REPLICATION"><B>REPLICATION</B></A> -
+Static variable in class com.sleepycat.db.<A HREF="./com/sleepycat/db/VerboseConfig.html" title="class in com.sleepycat.db">VerboseConfig</A>
+<DD>Display detailed information when processing replication messages.
<DT><A HREF="./com/sleepycat/db/ReplicationConfig.html" title="class in com.sleepycat.db"><B>ReplicationConfig</B></A> - Class in <A HREF="./com/sleepycat/db/package-summary.html">com.sleepycat.db</A><DD>Settings that configure Berkeley DB replication.<DT><A HREF="./com/sleepycat/db/ReplicationDuplicateMasterException.html" title="class in com.sleepycat.db"><B>ReplicationDuplicateMasterException</B></A> - Exception in <A HREF="./com/sleepycat/db/package-summary.html">com.sleepycat.db</A><DD>The replication group has more than one master.<DT><A HREF="./com/sleepycat/db/ReplicationHandleDeadException.html" title="class in com.sleepycat.db"><B>ReplicationHandleDeadException</B></A> - Exception in <A HREF="./com/sleepycat/db/package-summary.html">com.sleepycat.db</A><DD>Thrown when a database handle has been invalidated because a replication
election unrolled a committed transaction.<DT><A HREF="./com/sleepycat/db/ReplicationHoldElectionException.html" title="class in com.sleepycat.db"><B>ReplicationHoldElectionException</B></A> - Exception in <A HREF="./com/sleepycat/db/package-summary.html">com.sleepycat.db</A><DD>An election is needed.<DT><A HREF="./com/sleepycat/db/ReplicationHostAddress.html" title="class in com.sleepycat.db"><B>ReplicationHostAddress</B></A> - Class in <A HREF="./com/sleepycat/db/package-summary.html">com.sleepycat.db</A><DD>A simple wrapper class to hold information needed to define
a host in a replication group.<DT><A HREF="./com/sleepycat/db/ReplicationHostAddress.html#ReplicationHostAddress()"><B>ReplicationHostAddress()</B></A> -
@@ -3948,10 +4164,13 @@ Constructor for class com.sleepycat.db.<A HREF="./com/sleepycat/db/ReplicationHo
<DT><A HREF="./com/sleepycat/db/ReplicationHostAddress.html#ReplicationHostAddress(java.lang.String, int, boolean)"><B>ReplicationHostAddress(String, int, boolean)</B></A> -
Constructor for class com.sleepycat.db.<A HREF="./com/sleepycat/db/ReplicationHostAddress.html" title="class in com.sleepycat.db">ReplicationHostAddress</A>
<DD>Create a ReplicationHostAddress.
+<DT><A HREF="./com/sleepycat/db/ReplicationHostAddress.html#ReplicationHostAddress(java.lang.String, int, boolean, boolean)"><B>ReplicationHostAddress(String, int, boolean, boolean)</B></A> -
+Constructor for class com.sleepycat.db.<A HREF="./com/sleepycat/db/ReplicationHostAddress.html" title="class in com.sleepycat.db">ReplicationHostAddress</A>
+<DD>Create a ReplicationHostAddress.
<DT><A HREF="./com/sleepycat/db/ReplicationJoinFailureException.html" title="class in com.sleepycat.db"><B>ReplicationJoinFailureException</B></A> - Exception in <A HREF="./com/sleepycat/db/package-summary.html">com.sleepycat.db</A><DD>Thrown if a new master has been chosen but the client is unable to synchronize
with the new master (possibly because the client has been configured
with the <A HREF="./com/sleepycat/db/ReplicationConfig.html#NOAUTOINIT"><CODE>ReplicationConfig.NOAUTOINIT</CODE></A> setting to turn-off automatic
-internal initialization).<DT><A HREF="./com/sleepycat/db/ReplicationLockoutException.html" title="class in com.sleepycat.db"><B>ReplicationLockoutException</B></A> - Exception in <A HREF="./com/sleepycat/db/package-summary.html">com.sleepycat.db</A><DD>Thrown when an operation was blocked by client/master synchronization.<DT><A HREF="./com/sleepycat/db/ReplicationManagerAckPolicy.html" title="class in com.sleepycat.db"><B>ReplicationManagerAckPolicy</B></A> - Class in <A HREF="./com/sleepycat/db/package-summary.html">com.sleepycat.db</A><DD>A class that provides definitions for the types of network ack policy
+internal initialization).<DT><A HREF="./com/sleepycat/db/ReplicationLeaseExpiredException.html" title="class in com.sleepycat.db"><B>ReplicationLeaseExpiredException</B></A> - Exception in <A HREF="./com/sleepycat/db/package-summary.html">com.sleepycat.db</A><DD>Thrown if a master lease has expired.<DT><A HREF="./com/sleepycat/db/ReplicationLeaseTimeoutException.html" title="class in com.sleepycat.db"><B>ReplicationLeaseTimeoutException</B></A> - Exception in <A HREF="./com/sleepycat/db/package-summary.html">com.sleepycat.db</A><DD>Thrown if a master lease has timed out.<DT><A HREF="./com/sleepycat/db/ReplicationLockoutException.html" title="class in com.sleepycat.db"><B>ReplicationLockoutException</B></A> - Exception in <A HREF="./com/sleepycat/db/package-summary.html">com.sleepycat.db</A><DD>Thrown when an operation was blocked by client/master synchronization.<DT><A HREF="./com/sleepycat/db/ReplicationManagerAckPolicy.html" title="class in com.sleepycat.db"><B>ReplicationManagerAckPolicy</B></A> - Class in <A HREF="./com/sleepycat/db/package-summary.html">com.sleepycat.db</A><DD>A class that provides definitions for the types of network ack policy
to use when transmitting messages between replication sites using the
Replication Manager.<DT><A HREF="./com/sleepycat/db/EnvironmentConfig.html#replicationManagerAddRemoteSite(com.sleepycat.db.ReplicationHostAddress)"><B>replicationManagerAddRemoteSite(ReplicationHostAddress)</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EnvironmentConfig.html" title="class in com.sleepycat.db">EnvironmentConfig</A>
@@ -3962,7 +4181,7 @@ Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/Environment.html" t
<DD>Starts the replication manager.
<DT><A HREF="./com/sleepycat/db/ReplicationManagerStartPolicy.html" title="class in com.sleepycat.db"><B>ReplicationManagerStartPolicy</B></A> - Class in <A HREF="./com/sleepycat/db/package-summary.html">com.sleepycat.db</A><DD>This class provides definitions of the various start policies that
can be specified when starting a replication client using the
-<A HREF="./com/sleepycat/db/Environment.html#replicationManagerStart(int, com.sleepycat.db.ReplicationManagerStartPolicy)"><CODE>Environment.replicationManagerStart</CODE></A> call.<DT><A HREF="./com/sleepycat/db/ReplicationSiteUnavailableException.html" title="class in com.sleepycat.db"><B>ReplicationSiteUnavailableException</B></A> - Exception in <A HREF="./com/sleepycat/db/package-summary.html">com.sleepycat.db</A><DD>Thrown if replication group was unable to elect a master, or was unable to
+<A HREF="./com/sleepycat/db/Environment.html#replicationManagerStart(int, com.sleepycat.db.ReplicationManagerStartPolicy)"><CODE>Environment.replicationManagerStart</CODE></A> call.<DT><A HREF="./com/sleepycat/db/ReplicationManagerStats.html" title="class in com.sleepycat.db"><B>ReplicationManagerStats</B></A> - Class in <A HREF="./com/sleepycat/db/package-summary.html">com.sleepycat.db</A><DD>Replication Manager statistics for a database environment.<DT><A HREF="./com/sleepycat/db/ReplicationSiteUnavailableException.html" title="class in com.sleepycat.db"><B>ReplicationSiteUnavailableException</B></A> - Exception in <A HREF="./com/sleepycat/db/package-summary.html">com.sleepycat.db</A><DD>Thrown if replication group was unable to elect a master, or was unable to
complete the election in the specified timeout period.<DT><A HREF="./com/sleepycat/db/ReplicationStats.html" title="class in com.sleepycat.db"><B>ReplicationStats</B></A> - Class in <A HREF="./com/sleepycat/db/package-summary.html">com.sleepycat.db</A><DD>Replication statistics for a database environment.<DT><A HREF="./com/sleepycat/db/ReplicationStatus.html" title="class in com.sleepycat.db"><B>ReplicationStatus</B></A> - Class in <A HREF="./com/sleepycat/db/package-summary.html">com.sleepycat.db</A><DD>The return status from processing a replication message.<DT><A HREF="./com/sleepycat/db/ReplicationTimeoutType.html" title="class in com.sleepycat.db"><B>ReplicationTimeoutType</B></A> - Class in <A HREF="./com/sleepycat/db/package-summary.html">com.sleepycat.db</A><DD>The ReplicationTimeoutType defines the types of timeouts that can be
configured for the Berkeley Db replication functionality.<DT><A HREF="./com/sleepycat/db/ReplicationTransport.html" title="interface in com.sleepycat.db"><B>ReplicationTransport</B></A> - Interface in <A HREF="./com/sleepycat/db/package-summary.html">com.sleepycat.db</A><DD>An interface specifying a replication transmit function, which sends
information to other members of the replication group.<DT><A HREF="./com/sleepycat/util/FastInputStream.html#reset()"><B>reset()</B></A> -
@@ -4009,6 +4228,7 @@ Constructor for class com.sleepycat.db.<A HREF="./com/sleepycat/db/SecondaryConf
Constructor for class com.sleepycat.db.<A HREF="./com/sleepycat/db/SecondaryDatabase.html" title="class in com.sleepycat.db">SecondaryDatabase</A>
<DD>Open a database.
<DT><A HREF="./com/sleepycat/db/SecondaryKeyCreator.html" title="interface in com.sleepycat.db"><B>SecondaryKeyCreator</B></A> - Interface in <A HREF="./com/sleepycat/db/package-summary.html">com.sleepycat.db</A><DD>The interface implemented for extracting single-valued secondary keys from
+primary records.<DT><A HREF="./com/sleepycat/db/SecondaryMultiKeyCreator.html" title="interface in com.sleepycat.db"><B>SecondaryMultiKeyCreator</B></A> - Interface in <A HREF="./com/sleepycat/db/package-summary.html">com.sleepycat.db</A><DD>The interface implemented for extracting multi-valued secondary keys from
primary records.<DT><A HREF="./com/sleepycat/db/ReplicationTransport.html#send(com.sleepycat.db.Environment, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.LogSequenceNumber, int, boolean, boolean, boolean, boolean)"><B>send(Environment, DatabaseEntry, DatabaseEntry, LogSequenceNumber, int, boolean, boolean, boolean, boolean)</B></A> -
Method in interface com.sleepycat.db.<A HREF="./com/sleepycat/db/ReplicationTransport.html" title="interface in com.sleepycat.db">ReplicationTransport</A>
<DD>The callback used when Berkeley DB needs to transmit a replication
@@ -4113,6 +4333,9 @@ caches.
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EnvironmentConfig.html" title="class in com.sleepycat.db">EnvironmentConfig</A>
<DD>Set the number of shared memory buffer pools, that is, the number of
caches.
+<DT><A HREF="./com/sleepycat/db/EnvironmentConfig.html#setCacheMax(long)"><B>setCacheMax(long)</B></A> -
+Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EnvironmentConfig.html" title="class in com.sleepycat.db">EnvironmentConfig</A>
+<DD>Set the maximum cache size in bytes.
<DT><A HREF="./com/sleepycat/db/DatabaseConfig.html#setCacheSize(long)"><B>setCacheSize(long)</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/DatabaseConfig.html" title="class in com.sleepycat.db">DatabaseConfig</A>
<DD>Set the size of the shared memory buffer pool, that is, the size of the
@@ -4255,6 +4478,9 @@ Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/CompactConfig.html"
<DT><A HREF="./com/sleepycat/db/CompactConfig.html#setFreeSpace(boolean)"><B>setFreeSpace(boolean)</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/CompactConfig.html" title="class in com.sleepycat.db">CompactConfig</A>
<DD>Return pages to the filesystem if possible.
+<DT><A HREF="./com/sleepycat/db/DatabaseConfig.html#setHashComparator(java.util.Comparator)"><B>setHashComparator(Comparator)</B></A> -
+Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/DatabaseConfig.html" title="class in com.sleepycat.db">DatabaseConfig</A>
+<DD>Set the Hash key comparison function.
<DT><A HREF="./com/sleepycat/db/DatabaseConfig.html#setHasher(com.sleepycat.db.Hasher)"><B>setHasher(Hasher)</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/DatabaseConfig.html" title="class in com.sleepycat.db">DatabaseConfig</A>
<DD>Set a database-specific hash function.
@@ -4377,12 +4603,12 @@ Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EnvironmentConfig.h
when flushing dirty pages from the cache.
<DT><A HREF="./com/sleepycat/db/CompactConfig.html#setMaxPages(int)"><B>setMaxPages(int)</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/CompactConfig.html" title="class in com.sleepycat.db">CompactConfig</A>
-<DD>For internal use only.
+<DD>Set the maximum number of pages to free.
<DT><A HREF="./com/sleepycat/collections/TransactionRunner.html#setMaxRetries(int)"><B>setMaxRetries(int)</B></A> -
Method in class com.sleepycat.collections.<A HREF="./com/sleepycat/collections/TransactionRunner.html" title="class in com.sleepycat.collections">TransactionRunner</A>
<DD>Changes the maximum number of retries that will be performed when
deadlocks are detected.
-<DT><A HREF="./com/sleepycat/db/EnvironmentConfig.html#setMaxWrite(int, int)"><B>setMaxWrite(int, int)</B></A> -
+<DT><A HREF="./com/sleepycat/db/EnvironmentConfig.html#setMaxWrite(int, long)"><B>setMaxWrite(int, long)</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EnvironmentConfig.html" title="class in com.sleepycat.db">EnvironmentConfig</A>
<DD>Limit the number of sequential write operations scheduled by the
library when flushing dirty pages from the cache.
@@ -4419,6 +4645,10 @@ Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EnvironmentConfig.h
<DT><A HREF="./com/sleepycat/db/LockRequest.html#setMode(com.sleepycat.db.LockRequestMode)"><B>setMode(LockRequestMode)</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/LockRequest.html" title="class in com.sleepycat.db">LockRequest</A>
<DD>Set the lock mode.
+<DT><A HREF="./com/sleepycat/db/SecondaryConfig.html#setMultiKeyCreator(com.sleepycat.db.SecondaryMultiKeyCreator)"><B>setMultiKeyCreator(SecondaryMultiKeyCreator)</B></A> -
+Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/SecondaryConfig.html" title="class in com.sleepycat.db">SecondaryConfig</A>
+<DD>Specifies the user-supplied object used for creating multi-valued
+ secondary keys.
<DT><A HREF="./com/sleepycat/db/DatabaseConfig.html#setMultiversion(boolean)"><B>setMultiversion(boolean)</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/DatabaseConfig.html" title="class in com.sleepycat.db">DatabaseConfig</A>
<DD>Configured the database with support for multiversion concurrency control.
@@ -4522,6 +4752,12 @@ Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/VerifyConfig.html"
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/CacheFile.html" title="class in com.sleepycat.db">CacheFile</A>
<DD>Set the
cache priority for pages from the specified file.
+<DT><A HREF="./com/sleepycat/db/Cursor.html#setPriority(com.sleepycat.db.CacheFilePriority)"><B>setPriority(CacheFilePriority)</B></A> -
+Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/Cursor.html" title="class in com.sleepycat.db">Cursor</A>
+<DD>Set the cache priority for pages referenced by the DBC handle.
+<DT><A HREF="./com/sleepycat/db/DatabaseConfig.html#setPriority(com.sleepycat.db.CacheFilePriority)"><B>setPriority(CacheFilePriority)</B></A> -
+Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/DatabaseConfig.html" title="class in com.sleepycat.db">DatabaseConfig</A>
+<DD>Set the cache priority for pages referenced by the DB handle.
<DT><A HREF="./com/sleepycat/db/EnvironmentConfig.html#setPrivate(boolean)"><B>setPrivate(boolean)</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EnvironmentConfig.html" title="class in com.sleepycat.db">EnvironmentConfig</A>
<DD>Configure the database environment to only be accessed by a single
@@ -4610,7 +4846,7 @@ Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EnvironmentConfig.h
<DD>Set the total number of sites in the replication group.
<DT><A HREF="./com/sleepycat/db/EnvironmentConfig.html#setReplicationPriority(int)"><B>setReplicationPriority(int)</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EnvironmentConfig.html" title="class in com.sleepycat.db">EnvironmentConfig</A>
-<DD>Set the current environments priority.
+<DD>Set the current environment's priority.
<DT><A HREF="./com/sleepycat/db/EnvironmentConfig.html#setReplicationRequestMax(int)"><B>setReplicationRequestMax(int)</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EnvironmentConfig.html" title="class in com.sleepycat.db">EnvironmentConfig</A>
<DD>Set the maximum amount of data sent in response to any request.
@@ -4684,11 +4920,10 @@ Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EnvironmentConfig.h
files.
<DT><A HREF="./com/sleepycat/db/EnvironmentConfig.html#setTemporaryDirectory(java.lang.String)"><B>setTemporaryDirectory(String)</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EnvironmentConfig.html" title="class in com.sleepycat.db">EnvironmentConfig</A>
-<DD>&nbsp;
+<DD><B>Deprecated.</B>&nbsp;<I>replaced by <A HREF="./com/sleepycat/db/EnvironmentConfig.html#setTemporaryDirectory(java.io.File)"><CODE>EnvironmentConfig.setTemporaryDirectory(java.io.File)</CODE></A></I>
<DT><A HREF="./com/sleepycat/db/EnvironmentConfig.html#setTestAndSetSpins(int)"><B>setTestAndSetSpins(int)</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EnvironmentConfig.html" title="class in com.sleepycat.db">EnvironmentConfig</A>
-<DD>Set the number of times test-and-set mutexes should spin before
- blocking.
+<DD><B>Deprecated.</B>&nbsp;<I>replaced by <A HREF="./com/sleepycat/db/EnvironmentConfig.html#setMutexTestAndSetSpins(int)"><CODE>EnvironmentConfig.setMutexTestAndSetSpins(int)</CODE></A></I>
<DT><A HREF="./com/sleepycat/db/EnvironmentConfig.html#setThreaded(boolean)"><B>setThreaded(boolean)</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EnvironmentConfig.html" title="class in com.sleepycat.db">EnvironmentConfig</A>
<DD>Configure the handle to be <em>free-threaded</em>; that is, usable
@@ -4733,6 +4968,10 @@ Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EnvironmentConfig.h
<DT><A HREF="./com/sleepycat/db/EnvironmentConfig.html#setTxnNotDurable(boolean)"><B>setTxnNotDurable(boolean)</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EnvironmentConfig.html" title="class in com.sleepycat.db">EnvironmentConfig</A>
<DD>Configure the system to not write log records.
+<DT><A HREF="./com/sleepycat/db/EnvironmentConfig.html#setTxnNoWait(boolean)"><B>setTxnNoWait(boolean)</B></A> -
+Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EnvironmentConfig.html" title="class in com.sleepycat.db">EnvironmentConfig</A>
+<DD>If a lock is unavailable for any Berkeley DB operation performed in the
+ context of a transaction, cause the operation to throw <A HREF="./com/sleepycat/db/LockNotGrantedException.html" title="class in com.sleepycat.db"><CODE>LockNotGrantedException</CODE></A> without waiting for the lock.
<DT><A HREF="./com/sleepycat/db/EnvironmentConfig.html#setTxnSnapshot(boolean)"><B>setTxnSnapshot(boolean)</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EnvironmentConfig.html" title="class in com.sleepycat.db">EnvironmentConfig</A>
<DD>Configure the database environment to run transactions at snapshot
@@ -4782,22 +5021,28 @@ Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/MultipleEntry.html"
Method in class com.sleepycat.collections.<A HREF="./com/sleepycat/collections/MapEntryParameter.html" title="class in com.sleepycat.collections">MapEntryParameter</A>
<DD>Always throws <code>UnsupportedOperationException</code> since this
object is not attached to a map.
+<DT><A HREF="./com/sleepycat/db/EnvironmentConfig.html#setVerbose(com.sleepycat.db.VerboseConfig, boolean)"><B>setVerbose(VerboseConfig, boolean)</B></A> -
+Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EnvironmentConfig.html" title="class in com.sleepycat.db">EnvironmentConfig</A>
+<DD>Display verbose information.
<DT><A HREF="./com/sleepycat/db/EnvironmentConfig.html#setVerboseDeadlock(boolean)"><B>setVerboseDeadlock(boolean)</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EnvironmentConfig.html" title="class in com.sleepycat.db">EnvironmentConfig</A>
-<DD>Display additional information when doing deadlock detection.
+<DD><B>Deprecated.</B>&nbsp;<I>replaced by <A HREF="./com/sleepycat/db/EnvironmentConfig.html#setVerbose(com.sleepycat.db.VerboseConfig, boolean)"><CODE>EnvironmentConfig.setVerbose(com.sleepycat.db.VerboseConfig, boolean)</CODE></A></I>
<DT><A HREF="./com/sleepycat/db/EnvironmentConfig.html#setVerboseRecovery(boolean)"><B>setVerboseRecovery(boolean)</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EnvironmentConfig.html" title="class in com.sleepycat.db">EnvironmentConfig</A>
-<DD>Display additional information when performing recovery.
+<DD><B>Deprecated.</B>&nbsp;<I>replaced by <A HREF="./com/sleepycat/db/EnvironmentConfig.html#setVerbose(com.sleepycat.db.VerboseConfig, boolean)"><CODE>EnvironmentConfig.setVerbose(com.sleepycat.db.VerboseConfig, boolean)</CODE></A></I>
<DT><A HREF="./com/sleepycat/db/EnvironmentConfig.html#setVerboseRegister(boolean)"><B>setVerboseRegister(boolean)</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EnvironmentConfig.html" title="class in com.sleepycat.db">EnvironmentConfig</A>
-<DD>Display additional information concerning support for the
- <A HREF="./com/sleepycat/db/EnvironmentConfig.html#setRegister(boolean)"><CODE>EnvironmentConfig.setRegister(boolean)</CODE></A> method.
+<DD><B>Deprecated.</B>&nbsp;<I>replaced by <A HREF="./com/sleepycat/db/EnvironmentConfig.html#setVerbose(com.sleepycat.db.VerboseConfig, boolean)"><CODE>EnvironmentConfig.setVerbose(com.sleepycat.db.VerboseConfig, boolean)</CODE></A></I>
<DT><A HREF="./com/sleepycat/db/EnvironmentConfig.html#setVerboseReplication(boolean)"><B>setVerboseReplication(boolean)</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EnvironmentConfig.html" title="class in com.sleepycat.db">EnvironmentConfig</A>
-<DD>Display additional information when processing replication messages.
+<DD><B>Deprecated.</B>&nbsp;<I>replaced by <A HREF="./com/sleepycat/db/EnvironmentConfig.html#setVerbose(com.sleepycat.db.VerboseConfig, boolean)"><CODE>EnvironmentConfig.setVerbose(com.sleepycat.db.VerboseConfig, boolean)</CODE></A></I>
<DT><A HREF="./com/sleepycat/db/EnvironmentConfig.html#setVerboseWaitsFor(boolean)"><B>setVerboseWaitsFor(boolean)</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EnvironmentConfig.html" title="class in com.sleepycat.db">EnvironmentConfig</A>
-<DD>Display the waits-for table when doing deadlock detection.
+<DD><B>Deprecated.</B>&nbsp;<I>replaced by <A HREF="./com/sleepycat/db/EnvironmentConfig.html#setVerbose(com.sleepycat.db.VerboseConfig, boolean)"><CODE>EnvironmentConfig.setVerbose(com.sleepycat.db.VerboseConfig, boolean)</CODE></A></I>
+<DT><A HREF="./com/sleepycat/db/TransactionConfig.html#setWait(boolean)"><B>setWait(boolean)</B></A> -
+Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/TransactionConfig.html" title="class in com.sleepycat.db">TransactionConfig</A>
+<DD>Configure the transaction to wait if a lock request cannot be
+ immediately granted.
<DT><A HREF="./com/sleepycat/db/SequenceConfig.html#setWrap(boolean)"><B>setWrap(boolean)</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/SequenceConfig.html" title="class in com.sleepycat.db">SequenceConfig</A>
<DD>Specify that the sequence should wrap around when it is
@@ -4806,6 +5051,10 @@ Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/SequenceConfig.html
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/CursorConfig.html" title="class in com.sleepycat.db">CursorConfig</A>
<DD>Specify the Concurrent Data Store environment cursor will be used to
update the database.
+<DT><A HREF="./com/sleepycat/db/TransactionConfig.html#setWriteNoSync(boolean)"><B>setWriteNoSync(boolean)</B></A> -
+Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/TransactionConfig.html" title="class in com.sleepycat.db">TransactionConfig</A>
+<DD>Configure the transaction to write but not synchronously flush the log
+ it when commits.
<DT><A HREF="./com/sleepycat/db/DatabaseConfig.html#setXACreate(boolean)"><B>setXACreate(boolean)</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/DatabaseConfig.html" title="class in com.sleepycat.db">DatabaseConfig</A>
<DD>Configure the database to be accessed via applications running under
@@ -4826,7 +5075,8 @@ Method in class com.sleepycat.collections.<A HREF="./com/sleepycat/collections/S
<DD>&nbsp;
<DT><A HREF="./com/sleepycat/collections/StoredContainer.html#size()"><B>size()</B></A> -
Method in class com.sleepycat.collections.<A HREF="./com/sleepycat/collections/StoredContainer.html" title="class in com.sleepycat.collections">StoredContainer</A>
-<DD>Returns the number of records in the collection or map.
+<DD>Returns a non-transactional count of the records in the collection or
+ map.
<DT><A HREF="./com/sleepycat/collections/StoredMap.html#size()"><B>size()</B></A> -
Method in class com.sleepycat.collections.<A HREF="./com/sleepycat/collections/StoredMap.html" title="class in com.sleepycat.collections">StoredMap</A>
<DD>&nbsp;
@@ -5070,9 +5320,6 @@ Method in exception com.sleepycat.db.<A HREF="./com/sleepycat/db/DatabaseExcepti
<DT><A HREF="./com/sleepycat/db/DatabaseType.html#toString()"><B>toString()</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/DatabaseType.html" title="class in com.sleepycat.db">DatabaseType</A>
<DD>
-<DT><A HREF="./com/sleepycat/db/EventType.html#toString()"><B>toString()</B></A> -
-Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/EventType.html" title="class in com.sleepycat.db">EventType</A>
-<DD>
<DT><A HREF="./com/sleepycat/db/HashStats.html#toString()"><B>toString()</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/HashStats.html" title="class in com.sleepycat.db">HashStats</A>
<DD>For convenience, the HashStats class has a toString method
@@ -5123,6 +5370,10 @@ Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/ReplicationManagerA
<DT><A HREF="./com/sleepycat/db/ReplicationManagerStartPolicy.html#toString()"><B>toString()</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/ReplicationManagerStartPolicy.html" title="class in com.sleepycat.db">ReplicationManagerStartPolicy</A>
<DD>
+<DT><A HREF="./com/sleepycat/db/ReplicationManagerStats.html#toString()"><B>toString()</B></A> -
+Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/ReplicationManagerStats.html" title="class in com.sleepycat.db">ReplicationManagerStats</A>
+<DD>For convenience, the ReplicationManagerStats class has a toString method
+ that lists all the data fields.
<DT><A HREF="./com/sleepycat/db/ReplicationStats.html#toString()"><B>toString()</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/ReplicationStats.html" title="class in com.sleepycat.db">ReplicationStats</A>
<DD>For convenience, the ReplicationStats class has a toString method
@@ -5142,6 +5393,9 @@ Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/TransactionStats.Ac
<DT><A HREF="./com/sleepycat/db/TransactionStats.html#toString()"><B>toString()</B></A> -
Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/TransactionStats.html" title="class in com.sleepycat.db">TransactionStats</A>
<DD>
+<DT><A HREF="./com/sleepycat/db/VerboseConfig.html#toString()"><B>toString()</B></A> -
+Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/VerboseConfig.html" title="class in com.sleepycat.db">VerboseConfig</A>
+<DD>
<DT><A HREF="./com/sleepycat/util/FastOutputStream.html#toString()"><B>toString()</B></A> -
Method in class com.sleepycat.util.<A HREF="./com/sleepycat/util/FastOutputStream.html" title="class in com.sleepycat.util">FastOutputStream</A>
<DD>&nbsp;
@@ -5266,8 +5520,7 @@ Static method in class com.sleepycat.util.<A HREF="./com/sleepycat/util/Exceptio
<DT><A HREF="./com/sleepycat/util/ExceptionUnwrapper.html#unwrapAny(java.lang.Throwable)"><B>unwrapAny(Throwable)</B></A> -
Static method in class com.sleepycat.util.<A HREF="./com/sleepycat/util/ExceptionUnwrapper.html" title="class in com.sleepycat.util">ExceptionUnwrapper</A>
<DD>Unwraps an Exception and returns the underlying Throwable.
-<DT><A HREF="./com/sleepycat/db/UpdateConflictException.html" title="class in com.sleepycat.db"><B>UpdateConflictException</B></A> - Exception in <A HREF="./com/sleepycat/db/package-summary.html">com.sleepycat.db</A><DD>Thrown when a snapshot transaction attempts to update data
-which was modified after the snapshot transaction read it.<DT><A HREF="./com/sleepycat/db/Database.html#upgrade(java.lang.String, com.sleepycat.db.DatabaseConfig)"><B>upgrade(String, DatabaseConfig)</B></A> -
+<DT><A HREF="./com/sleepycat/db/Database.html#upgrade(java.lang.String, com.sleepycat.db.DatabaseConfig)"><B>upgrade(String, DatabaseConfig)</B></A> -
Static method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/Database.html" title="class in com.sleepycat.db">Database</A>
<DD>Upgrade all of the databases included in the specified file.
<DT><A HREF="./com/sleepycat/db/FeedbackHandler.html#upgradeFeedback(com.sleepycat.db.Database, int)"><B>upgradeFeedback(Database, int)</B></A> -
@@ -5285,7 +5538,7 @@ Constructor for class com.sleepycat.util.<A HREF="./com/sleepycat/util/UtfOps.ht
<DT><A HREF="./com/sleepycat/collections/StoredMap.html#values()"><B>values()</B></A> -
Method in class com.sleepycat.collections.<A HREF="./com/sleepycat/collections/StoredMap.html" title="class in com.sleepycat.collections">StoredMap</A>
<DD>Returns a collection view of the values contained in this map.
-<DT><A HREF="./com/sleepycat/db/Database.html#verify(java.lang.String, java.lang.String, java.io.PrintStream, com.sleepycat.db.VerifyConfig, com.sleepycat.db.DatabaseConfig)"><B>verify(String, String, PrintStream, VerifyConfig, DatabaseConfig)</B></A> -
+<DT><A HREF="./com/sleepycat/db/VerboseConfig.html" title="class in com.sleepycat.db"><B>VerboseConfig</B></A> - Class in <A HREF="./com/sleepycat/db/package-summary.html">com.sleepycat.db</A><DD>Specifies the attributes of a verification operation.<DT><A HREF="./com/sleepycat/db/Database.html#verify(java.lang.String, java.lang.String, java.io.PrintStream, com.sleepycat.db.VerifyConfig, com.sleepycat.db.DatabaseConfig)"><B>verify(String, String, PrintStream, VerifyConfig, DatabaseConfig)</B></A> -
Static method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/Database.html" title="class in com.sleepycat.db">Database</A>
<DD>Return if all of the databases in a file are uncorrupted.
<DT><A HREF="./com/sleepycat/db/VerifyConfig.html" title="class in com.sleepycat.db"><B>VerifyConfig</B></A> - Class in <A HREF="./com/sleepycat/db/package-summary.html">com.sleepycat.db</A><DD>Specifies the attributes of a verification operation.<DT><A HREF="./com/sleepycat/db/VerifyConfig.html#VerifyConfig()"><B>VerifyConfig()</B></A> -
@@ -5295,6 +5548,9 @@ Constructor for class com.sleepycat.db.<A HREF="./com/sleepycat/db/VerifyConfig.
<DT><A HREF="./com/sleepycat/db/FeedbackHandler.html#verifyFeedback(com.sleepycat.db.Database, int)"><B>verifyFeedback(Database, int)</B></A> -
Method in interface com.sleepycat.db.<A HREF="./com/sleepycat/db/FeedbackHandler.html" title="interface in com.sleepycat.db">FeedbackHandler</A>
<DD>A function called with progress information when the database is being verified.
+<DT><A HREF="./com/sleepycat/db/LogCursor.html#version()"><B>version()</B></A> -
+Method in class com.sleepycat.db.<A HREF="./com/sleepycat/db/LogCursor.html" title="class in com.sleepycat.db">LogCursor</A>
+<DD>Get the log file version.
<DT><A HREF="./com/sleepycat/db/VersionMismatchException.html" title="class in com.sleepycat.db"><B>VersionMismatchException</B></A> - Exception in <A HREF="./com/sleepycat/db/package-summary.html">com.sleepycat.db</A><DD>Thrown if the version of the Berkeley DB library doesn't match the version that created
the database environment.<DT><A HREF="./com/sleepycat/db/CacheFilePriority.html#VERY_HIGH"><B>VERY_HIGH</B></A> -
Static variable in class com.sleepycat.db.<A HREF="./com/sleepycat/db/CacheFilePriority.html" title="class in com.sleepycat.db">CacheFilePriority</A>
@@ -5307,6 +5563,9 @@ Static variable in class com.sleepycat.db.<A HREF="./com/sleepycat/db/CacheFileP
<A NAME="_W_"><!-- --></A><H2>
<B>W</B></H2>
<DL>
+<DT><A HREF="./com/sleepycat/db/VerboseConfig.html#WAITSFOR"><B>WAITSFOR</B></A> -
+Static variable in class com.sleepycat.db.<A HREF="./com/sleepycat/db/VerboseConfig.html" title="class in com.sleepycat.db">VerboseConfig</A>
+<DD>Display the waits-for table when doing deadlock detection.
<DT><A HREF="./com/sleepycat/db/LockRequestMode.html#WRITE"><B>WRITE</B></A> -
Static variable in class com.sleepycat.db.<A HREF="./com/sleepycat/db/LockRequestMode.html" title="class in com.sleepycat.db">LockRequestMode</A>
<DD>Write (exclusive).
@@ -5319,6 +5578,9 @@ Method in class com.sleepycat.util.<A HREF="./com/sleepycat/util/FastOutputStrea
<DT><A HREF="./com/sleepycat/util/FastOutputStream.html#write(byte[], int, int)"><B>write(byte[], int, int)</B></A> -
Method in class com.sleepycat.util.<A HREF="./com/sleepycat/util/FastOutputStream.html" title="class in com.sleepycat.util">FastOutputStream</A>
<DD>&nbsp;
+<DT><A HREF="./com/sleepycat/bind/tuple/TupleOutput.html#writeBigInteger(java.math.BigInteger)"><B>writeBigInteger(BigInteger)</B></A> -
+Method in class com.sleepycat.bind.tuple.<A HREF="./com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>
+<DD>Writes a <code>BigInteger</code>.
<DT><A HREF="./com/sleepycat/bind/tuple/TupleOutput.html#writeBoolean(boolean)"><B>writeBoolean(boolean)</B></A> -
Method in class com.sleepycat.bind.tuple.<A HREF="./com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>
<DD>Writes a boolean (one byte) unsigned value to the buffer, writing one
@@ -5380,9 +5642,16 @@ Static method in class com.sleepycat.util.<A HREF="./com/sleepycat/util/PackedIn
<DT><A HREF="./com/sleepycat/bind/tuple/TupleOutput.html#writeLong(long)"><B>writeLong(long)</B></A> -
Method in class com.sleepycat.bind.tuple.<A HREF="./com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>
<DD>Writes an signed long (eight byte) value to the buffer.
+<DT><A HREF="./com/sleepycat/util/PackedInteger.html#writeLong(byte[], int, long)"><B>writeLong(byte[], int, long)</B></A> -
+Static method in class com.sleepycat.util.<A HREF="./com/sleepycat/util/PackedInteger.html" title="class in com.sleepycat.util">PackedInteger</A>
+<DD>Writes a packed long integer starting at the given buffer offset and
+ returns the next offset to be written.
<DT><A HREF="./com/sleepycat/bind/tuple/TupleOutput.html#writePackedInt(int)"><B>writePackedInt(int)</B></A> -
Method in class com.sleepycat.bind.tuple.<A HREF="./com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>
<DD>Writes a packed integer.
+<DT><A HREF="./com/sleepycat/bind/tuple/TupleOutput.html#writePackedLong(long)"><B>writePackedLong(long)</B></A> -
+Method in class com.sleepycat.bind.tuple.<A HREF="./com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>
+<DD>Writes a packed long integer.
<DT><A HREF="./com/sleepycat/bind/tuple/TupleOutput.html#writeShort(int)"><B>writeShort(int)</B></A> -
Method in class com.sleepycat.bind.tuple.<A HREF="./com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple">TupleOutput</A>
<DD>Writes an signed short (two byte) value to the buffer.
@@ -5447,7 +5716,7 @@ Static variable in class com.sleepycat.db.<A HREF="./com/sleepycat/db/LockDetect
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -5477,6 +5746,6 @@ Static variable in class com.sleepycat.db.<A HREF="./com/sleepycat/db/LockDetect
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/index.html b/db/docs/java/index.html
index 3447479ac..b71707311 100644
--- a/db/docs/java/index.html
+++ b/db/docs/java/index.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc on Wed Sep 20 16:19:50 EDT 2006-->
+<!-- Generated by javadoc on Tue Jul 17 10:57:00 EDT 2007-->
<TITLE>
-Oracle Corporation - Berkeley DB Java API
+Oracle - Berkeley DB Java API
</TITLE>
<SCRIPT type="text/javascript">
targetPage = "" + window.location.search;
diff --git a/db/docs/java/overview-frame.html b/db/docs/java/overview-frame.html
index b6acbbfa5..730f7ab6a 100644
--- a/db/docs/java/overview-frame.html
+++ b/db/docs/java/overview-frame.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:48 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Overview (Oracle Corporation - Berkeley DB Java API)
+Overview (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="Overview">
@@ -19,7 +19,7 @@ Overview (Oracle Corporation - Berkeley DB Java API)
<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
<TR>
<TH ALIGN="left" NOWRAP><FONT size="+1" CLASS="FrameTitleFont">
-<B><b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></B></FONT></TH>
+<B><b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></B></FONT></TH>
</TR>
</TABLE>
diff --git a/db/docs/java/overview-summary.html b/db/docs/java/overview-summary.html
index 422fba442..e79796340 100644
--- a/db/docs/java/overview-summary.html
+++ b/db/docs/java/overview-summary.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:50 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:57:00 EDT 2007 -->
<TITLE>
-Overview (Oracle Corporation - Berkeley DB Java API)
+Overview (Oracle - Berkeley DB Java API)
</TITLE>
<META NAME="keywords" CONTENT="Overview">
@@ -14,7 +14,7 @@ Overview (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Overview (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Overview (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -46,7 +46,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -143,7 +143,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -173,6 +173,6 @@ function windowTitle()
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/overview-tree.html b/db/docs/java/overview-tree.html
index 07d7f120e..95691a18f 100644
--- a/db/docs/java/overview-tree.html
+++ b/db/docs/java/overview-tree.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:49 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:57:00 EDT 2007 -->
<TITLE>
-Class Hierarchy (Oracle Corporation - Berkeley DB Java API)
+Class Hierarchy (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Class Hierarchy (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Class Hierarchy (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Class Hierarchy (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -86,17 +86,17 @@ Hierarchy For All Packages</H2>
Class Hierarchy
</H2>
<UL>
-<LI TYPE="circle">java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html" title="class or interface in java.lang"><B>Object</B></A><UL>
+<LI TYPE="circle">java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang"><B>Object</B></A><UL>
<LI TYPE="circle">com.sleepycat.bind.<A HREF="com/sleepycat/bind/ByteArrayBinding.html" title="class in com.sleepycat.bind"><B>ByteArrayBinding</B></A> (implements com.sleepycat.bind.<A HREF="com/sleepycat/bind/EntryBinding.html" title="interface in com.sleepycat.bind">EntryBinding</A>)
-<LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/CacheFile.html" title="class in com.sleepycat.db"><B>CacheFile</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/CacheFilePriority.html" title="class in com.sleepycat.db"><B>CacheFilePriority</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/CacheFileStats.html" title="class in com.sleepycat.db"><B>CacheFileStats</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/CacheStats.html" title="class in com.sleepycat.db"><B>CacheStats</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/CheckpointConfig.html" title="class in com.sleepycat.db"><B>CheckpointConfig</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/CompactConfig.html" title="class in com.sleepycat.db"><B>CompactConfig</B></A> (implements java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>)
+<LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/CacheFile.html" title="class in com.sleepycat.db"><B>CacheFile</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/CacheFilePriority.html" title="class in com.sleepycat.db"><B>CacheFilePriority</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/CacheFileStats.html" title="class in com.sleepycat.db"><B>CacheFileStats</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/CacheStats.html" title="class in com.sleepycat.db"><B>CacheStats</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/CheckpointConfig.html" title="class in com.sleepycat.db"><B>CheckpointConfig</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/CompactConfig.html" title="class in com.sleepycat.db"><B>CompactConfig</B></A> (implements java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>)
<LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/CompactStats.html" title="class in com.sleepycat.db"><B>CompactStats</B></A><LI TYPE="circle">com.sleepycat.collections.<A HREF="com/sleepycat/collections/CurrentTransaction.html" title="class in com.sleepycat.collections"><B>CurrentTransaction</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/Cursor.html" title="class in com.sleepycat.db"><B>Cursor</B></A><UL>
<LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/SecondaryCursor.html" title="class in com.sleepycat.db"><B>SecondaryCursor</B></A></UL>
-<LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/CursorConfig.html" title="class in com.sleepycat.db"><B>CursorConfig</B></A> (implements java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>)
+<LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/CursorConfig.html" title="class in com.sleepycat.db"><B>CursorConfig</B></A> (implements java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>)
<LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/Database.html" title="class in com.sleepycat.db"><B>Database</B></A><UL>
<LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/SecondaryDatabase.html" title="class in com.sleepycat.db"><B>SecondaryDatabase</B></A></UL>
-<LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/DatabaseConfig.html" title="class in com.sleepycat.db"><B>DatabaseConfig</B></A> (implements java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>)
+<LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/DatabaseConfig.html" title="class in com.sleepycat.db"><B>DatabaseConfig</B></A> (implements java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>)
<UL>
-<LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/SecondaryConfig.html" title="class in com.sleepycat.db"><B>SecondaryConfig</B></A> (implements java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>)
+<LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/SecondaryConfig.html" title="class in com.sleepycat.db"><B>SecondaryConfig</B></A> (implements java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>)
</UL>
<LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db"><B>DatabaseEntry</B></A><UL>
<LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/MultipleEntry.html" title="class in com.sleepycat.db"><B>MultipleEntry</B></A><UL>
@@ -104,78 +104,79 @@ Class Hierarchy
</UL>
<LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/DatabaseStats.html" title="class in com.sleepycat.db"><B>DatabaseStats</B></A><UL>
<LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/BtreeStats.html" title="class in com.sleepycat.db"><B>BtreeStats</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/HashStats.html" title="class in com.sleepycat.db"><B>HashStats</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/QueueStats.html" title="class in com.sleepycat.db"><B>QueueStats</B></A></UL>
-<LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/DatabaseType.html" title="class in com.sleepycat.db"><B>DatabaseType</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/Environment.html" title="class in com.sleepycat.db"><B>Environment</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/EnvironmentConfig.html" title="class in com.sleepycat.db"><B>EnvironmentConfig</B></A> (implements java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>)
-<LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/EventType.html" title="class in com.sleepycat.db"><B>EventType</B></A><LI TYPE="circle">com.sleepycat.util.<A HREF="com/sleepycat/util/ExceptionUnwrapper.html" title="class in com.sleepycat.util"><B>ExceptionUnwrapper</B></A><LI TYPE="circle">java.io.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/InputStream.html" title="class or interface in java.io"><B>InputStream</B></A> (implements java.io.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/Closeable.html" title="class or interface in java.io">Closeable</A>)
+<LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/DatabaseType.html" title="class in com.sleepycat.db"><B>DatabaseType</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/Environment.html" title="class in com.sleepycat.db"><B>Environment</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/EnvironmentConfig.html" title="class in com.sleepycat.db"><B>EnvironmentConfig</B></A> (implements java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>)
+<LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/EventHandlerAdapter.html" title="class in com.sleepycat.db"><B>EventHandlerAdapter</B></A> (implements com.sleepycat.db.<A HREF="com/sleepycat/db/EventHandler.html" title="interface in com.sleepycat.db">EventHandler</A>)
+<LI TYPE="circle">com.sleepycat.util.<A HREF="com/sleepycat/util/ExceptionUnwrapper.html" title="class in com.sleepycat.util"><B>ExceptionUnwrapper</B></A><LI TYPE="circle">java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/InputStream.html" title="class or interface in java.io"><B>InputStream</B></A> (implements java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Closeable.html" title="class or interface in java.io">Closeable</A>)
<UL>
<LI TYPE="circle">com.sleepycat.util.<A HREF="com/sleepycat/util/FastInputStream.html" title="class in com.sleepycat.util"><B>FastInputStream</B></A><UL>
<LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="com/sleepycat/bind/tuple/TupleInput.html" title="class in com.sleepycat.bind.tuple"><B>TupleInput</B></A></UL>
-<LI TYPE="circle">java.io.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectInputStream.html" title="class or interface in java.io"><B>ObjectInputStream</B></A> (implements java.io.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectInput.html" title="class or interface in java.io">ObjectInput</A>, java.io.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html" title="class or interface in java.io">ObjectStreamConstants</A>)
+<LI TYPE="circle">java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectInputStream.html" title="class or interface in java.io"><B>ObjectInputStream</B></A> (implements java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectInput.html" title="class or interface in java.io">ObjectInput</A>, java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html" title="class or interface in java.io">ObjectStreamConstants</A>)
<UL>
<LI TYPE="circle">com.sleepycat.bind.serial.<A HREF="com/sleepycat/bind/serial/SerialInput.html" title="class in com.sleepycat.bind.serial"><B>SerialInput</B></A></UL>
</UL>
-<LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/JoinConfig.html" title="class in com.sleepycat.db"><B>JoinConfig</B></A> (implements java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>)
-<LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/JoinCursor.html" title="class in com.sleepycat.db"><B>JoinCursor</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/KeyRange.html" title="class in com.sleepycat.db"><B>KeyRange</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/Lock.html" title="class in com.sleepycat.db"><B>Lock</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/LockDetectMode.html" title="class in com.sleepycat.db"><B>LockDetectMode</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/LockMode.html" title="class in com.sleepycat.db"><B>LockMode</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/LockOperation.html" title="class in com.sleepycat.db"><B>LockOperation</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/LockRequest.html" title="class in com.sleepycat.db"><B>LockRequest</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/LockRequestMode.html" title="class in com.sleepycat.db"><B>LockRequestMode</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/LockStats.html" title="class in com.sleepycat.db"><B>LockStats</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/LogCursor.html" title="class in com.sleepycat.db"><B>LogCursor</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/LogSequenceNumber.html" title="class in com.sleepycat.db"><B>LogSequenceNumber</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/LogStats.html" title="class in com.sleepycat.db"><B>LogStats</B></A><LI TYPE="circle">com.sleepycat.collections.<A HREF="com/sleepycat/collections/MapEntryParameter.html" title="class in com.sleepycat.collections"><B>MapEntryParameter</B></A> (implements java.util.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.Entry.html" title="class or interface in java.util">Map.Entry</A>)
-<LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/MutexStats.html" title="class in com.sleepycat.db"><B>MutexStats</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/OperationStatus.html" title="class in com.sleepycat.db"><B>OperationStatus</B></A><LI TYPE="circle">java.io.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/OutputStream.html" title="class or interface in java.io"><B>OutputStream</B></A> (implements java.io.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/Closeable.html" title="class or interface in java.io">Closeable</A>, java.io.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/Flushable.html" title="class or interface in java.io">Flushable</A>)
+<LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/JoinConfig.html" title="class in com.sleepycat.db"><B>JoinConfig</B></A> (implements java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>)
+<LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/JoinCursor.html" title="class in com.sleepycat.db"><B>JoinCursor</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/KeyRange.html" title="class in com.sleepycat.db"><B>KeyRange</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/Lock.html" title="class in com.sleepycat.db"><B>Lock</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/LockDetectMode.html" title="class in com.sleepycat.db"><B>LockDetectMode</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/LockMode.html" title="class in com.sleepycat.db"><B>LockMode</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/LockOperation.html" title="class in com.sleepycat.db"><B>LockOperation</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/LockRequest.html" title="class in com.sleepycat.db"><B>LockRequest</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/LockRequestMode.html" title="class in com.sleepycat.db"><B>LockRequestMode</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/LockStats.html" title="class in com.sleepycat.db"><B>LockStats</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/LogCursor.html" title="class in com.sleepycat.db"><B>LogCursor</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/LogSequenceNumber.html" title="class in com.sleepycat.db"><B>LogSequenceNumber</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/LogStats.html" title="class in com.sleepycat.db"><B>LogStats</B></A><LI TYPE="circle">com.sleepycat.collections.<A HREF="com/sleepycat/collections/MapEntryParameter.html" title="class in com.sleepycat.collections"><B>MapEntryParameter</B></A> (implements java.util.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.Entry.html" title="class or interface in java.util">Map.Entry</A>)
+<LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/MutexStats.html" title="class in com.sleepycat.db"><B>MutexStats</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/OperationStatus.html" title="class in com.sleepycat.db"><B>OperationStatus</B></A><LI TYPE="circle">java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/OutputStream.html" title="class or interface in java.io"><B>OutputStream</B></A> (implements java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Closeable.html" title="class or interface in java.io">Closeable</A>, java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Flushable.html" title="class or interface in java.io">Flushable</A>)
<UL>
<LI TYPE="circle">com.sleepycat.util.<A HREF="com/sleepycat/util/FastOutputStream.html" title="class in com.sleepycat.util"><B>FastOutputStream</B></A><UL>
<LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="com/sleepycat/bind/tuple/TupleOutput.html" title="class in com.sleepycat.bind.tuple"><B>TupleOutput</B></A></UL>
-<LI TYPE="circle">java.io.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectOutputStream.html" title="class or interface in java.io"><B>ObjectOutputStream</B></A> (implements java.io.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectOutput.html" title="class or interface in java.io">ObjectOutput</A>, java.io.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/ObjectStreamConstants.html" title="class or interface in java.io">ObjectStreamConstants</A>)
+<LI TYPE="circle">java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectOutputStream.html" title="class or interface in java.io"><B>ObjectOutputStream</B></A> (implements java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectOutput.html" title="class or interface in java.io">ObjectOutput</A>, java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectStreamConstants.html" title="class or interface in java.io">ObjectStreamConstants</A>)
<UL>
<LI TYPE="circle">com.sleepycat.bind.serial.<A HREF="com/sleepycat/bind/serial/SerialOutput.html" title="class in com.sleepycat.bind.serial"><B>SerialOutput</B></A></UL>
</UL>
<LI TYPE="circle">com.sleepycat.util.<A HREF="com/sleepycat/util/PackedInteger.html" title="class in com.sleepycat.util"><B>PackedInteger</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/PreparedTransaction.html" title="class in com.sleepycat.db"><B>PreparedTransaction</B></A><LI TYPE="circle">com.sleepycat.bind.<A HREF="com/sleepycat/bind/RecordNumberBinding.html" title="class in com.sleepycat.bind"><B>RecordNumberBinding</B></A> (implements com.sleepycat.bind.<A HREF="com/sleepycat/bind/EntryBinding.html" title="interface in com.sleepycat.bind">EntryBinding</A>)
-<LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/RecoveryOperation.html" title="class in com.sleepycat.db"><B>RecoveryOperation</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/ReplicationConfig.html" title="class in com.sleepycat.db"><B>ReplicationConfig</B></A> (implements java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>)
-<LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/ReplicationHostAddress.html" title="class in com.sleepycat.db"><B>ReplicationHostAddress</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/ReplicationManagerAckPolicy.html" title="class in com.sleepycat.db"><B>ReplicationManagerAckPolicy</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/ReplicationManagerStartPolicy.html" title="class in com.sleepycat.db"><B>ReplicationManagerStartPolicy</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/ReplicationStats.html" title="class in com.sleepycat.db"><B>ReplicationStats</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/ReplicationStatus.html" title="class in com.sleepycat.db"><B>ReplicationStatus</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/ReplicationTimeoutType.html" title="class in com.sleepycat.db"><B>ReplicationTimeoutType</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/Sequence.html" title="class in com.sleepycat.db"><B>Sequence</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/SequenceConfig.html" title="class in com.sleepycat.db"><B>SequenceConfig</B></A> (implements java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>)
+<LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/RecoveryOperation.html" title="class in com.sleepycat.db"><B>RecoveryOperation</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/ReplicationConfig.html" title="class in com.sleepycat.db"><B>ReplicationConfig</B></A> (implements java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>)
+<LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/ReplicationHostAddress.html" title="class in com.sleepycat.db"><B>ReplicationHostAddress</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/ReplicationManagerAckPolicy.html" title="class in com.sleepycat.db"><B>ReplicationManagerAckPolicy</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/ReplicationManagerStartPolicy.html" title="class in com.sleepycat.db"><B>ReplicationManagerStartPolicy</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/ReplicationManagerStats.html" title="class in com.sleepycat.db"><B>ReplicationManagerStats</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/ReplicationStats.html" title="class in com.sleepycat.db"><B>ReplicationStats</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/ReplicationStatus.html" title="class in com.sleepycat.db"><B>ReplicationStatus</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/ReplicationTimeoutType.html" title="class in com.sleepycat.db"><B>ReplicationTimeoutType</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/Sequence.html" title="class in com.sleepycat.db"><B>Sequence</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/SequenceConfig.html" title="class in com.sleepycat.db"><B>SequenceConfig</B></A> (implements java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>)
<LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/SequenceStats.html" title="class in com.sleepycat.db"><B>SequenceStats</B></A><LI TYPE="circle">com.sleepycat.bind.serial.<A HREF="com/sleepycat/bind/serial/SerialBase.html" title="class in com.sleepycat.bind.serial"><B>SerialBase</B></A><UL>
<LI TYPE="circle">com.sleepycat.bind.serial.<A HREF="com/sleepycat/bind/serial/SerialBinding.html" title="class in com.sleepycat.bind.serial"><B>SerialBinding</B></A> (implements com.sleepycat.bind.<A HREF="com/sleepycat/bind/EntryBinding.html" title="interface in com.sleepycat.bind">EntryBinding</A>)
</UL>
<LI TYPE="circle">com.sleepycat.bind.serial.<A HREF="com/sleepycat/bind/serial/SerialSerialBinding.html" title="class in com.sleepycat.bind.serial"><B>SerialSerialBinding</B></A> (implements com.sleepycat.bind.<A HREF="com/sleepycat/bind/EntityBinding.html" title="interface in com.sleepycat.bind">EntityBinding</A>)
<LI TYPE="circle">com.sleepycat.bind.serial.<A HREF="com/sleepycat/bind/serial/SerialSerialKeyCreator.html" title="class in com.sleepycat.bind.serial"><B>SerialSerialKeyCreator</B></A> (implements com.sleepycat.db.<A HREF="com/sleepycat/db/SecondaryKeyCreator.html" title="interface in com.sleepycat.db">SecondaryKeyCreator</A>)
<LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/StatsConfig.html" title="class in com.sleepycat.db"><B>StatsConfig</B></A><LI TYPE="circle">com.sleepycat.bind.serial.<A HREF="com/sleepycat/bind/serial/StoredClassCatalog.html" title="class in com.sleepycat.bind.serial"><B>StoredClassCatalog</B></A> (implements com.sleepycat.bind.serial.<A HREF="com/sleepycat/bind/serial/ClassCatalog.html" title="interface in com.sleepycat.bind.serial">ClassCatalog</A>)
-<LI TYPE="circle">com.sleepycat.collections.<A HREF="com/sleepycat/collections/StoredCollections.html" title="class in com.sleepycat.collections"><B>StoredCollections</B></A><LI TYPE="circle">com.sleepycat.collections.<A HREF="com/sleepycat/collections/StoredContainer.html" title="class in com.sleepycat.collections"><B>StoredContainer</B></A> (implements java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>)
+<LI TYPE="circle">com.sleepycat.collections.<A HREF="com/sleepycat/collections/StoredCollections.html" title="class in com.sleepycat.collections"><B>StoredCollections</B></A><LI TYPE="circle">com.sleepycat.collections.<A HREF="com/sleepycat/collections/StoredContainer.html" title="class in com.sleepycat.collections"><B>StoredContainer</B></A> (implements java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>)
<UL>
-<LI TYPE="circle">com.sleepycat.collections.<A HREF="com/sleepycat/collections/StoredCollection.html" title="class in com.sleepycat.collections"><B>StoredCollection</B></A> (implements java.util.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>)
+<LI TYPE="circle">com.sleepycat.collections.<A HREF="com/sleepycat/collections/StoredCollection.html" title="class in com.sleepycat.collections"><B>StoredCollection</B></A> (implements java.util.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>)
<UL>
-<LI TYPE="circle">com.sleepycat.collections.<A HREF="com/sleepycat/collections/StoredEntrySet.html" title="class in com.sleepycat.collections"><B>StoredEntrySet</B></A> (implements java.util.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A>)
+<LI TYPE="circle">com.sleepycat.collections.<A HREF="com/sleepycat/collections/StoredEntrySet.html" title="class in com.sleepycat.collections"><B>StoredEntrySet</B></A> (implements java.util.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A>)
<UL>
-<LI TYPE="circle">com.sleepycat.collections.<A HREF="com/sleepycat/collections/StoredSortedEntrySet.html" title="class in com.sleepycat.collections"><B>StoredSortedEntrySet</B></A> (implements java.util.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A>)
+<LI TYPE="circle">com.sleepycat.collections.<A HREF="com/sleepycat/collections/StoredSortedEntrySet.html" title="class in com.sleepycat.collections"><B>StoredSortedEntrySet</B></A> (implements java.util.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A>)
</UL>
-<LI TYPE="circle">com.sleepycat.collections.<A HREF="com/sleepycat/collections/StoredKeySet.html" title="class in com.sleepycat.collections"><B>StoredKeySet</B></A> (implements java.util.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A>)
+<LI TYPE="circle">com.sleepycat.collections.<A HREF="com/sleepycat/collections/StoredKeySet.html" title="class in com.sleepycat.collections"><B>StoredKeySet</B></A> (implements java.util.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A>)
<UL>
-<LI TYPE="circle">com.sleepycat.collections.<A HREF="com/sleepycat/collections/StoredSortedKeySet.html" title="class in com.sleepycat.collections"><B>StoredSortedKeySet</B></A> (implements java.util.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A>)
+<LI TYPE="circle">com.sleepycat.collections.<A HREF="com/sleepycat/collections/StoredSortedKeySet.html" title="class in com.sleepycat.collections"><B>StoredSortedKeySet</B></A> (implements java.util.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A>)
</UL>
-<LI TYPE="circle">com.sleepycat.collections.<A HREF="com/sleepycat/collections/StoredList.html" title="class in com.sleepycat.collections"><B>StoredList</B></A> (implements java.util.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/List.html" title="class or interface in java.util">List</A>)
-<LI TYPE="circle">com.sleepycat.collections.<A HREF="com/sleepycat/collections/StoredValueSet.html" title="class in com.sleepycat.collections"><B>StoredValueSet</B></A> (implements java.util.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A>)
+<LI TYPE="circle">com.sleepycat.collections.<A HREF="com/sleepycat/collections/StoredList.html" title="class in com.sleepycat.collections"><B>StoredList</B></A> (implements java.util.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" title="class or interface in java.util">List</A>)
+<LI TYPE="circle">com.sleepycat.collections.<A HREF="com/sleepycat/collections/StoredValueSet.html" title="class in com.sleepycat.collections"><B>StoredValueSet</B></A> (implements java.util.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html" title="class or interface in java.util">Set</A>)
<UL>
-<LI TYPE="circle">com.sleepycat.collections.<A HREF="com/sleepycat/collections/StoredSortedValueSet.html" title="class in com.sleepycat.collections"><B>StoredSortedValueSet</B></A> (implements java.util.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A>)
+<LI TYPE="circle">com.sleepycat.collections.<A HREF="com/sleepycat/collections/StoredSortedValueSet.html" title="class in com.sleepycat.collections"><B>StoredSortedValueSet</B></A> (implements java.util.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedSet.html" title="class or interface in java.util">SortedSet</A>)
</UL>
</UL>
-<LI TYPE="circle">com.sleepycat.collections.<A HREF="com/sleepycat/collections/StoredMap.html" title="class in com.sleepycat.collections"><B>StoredMap</B></A> (implements java.util.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A>)
+<LI TYPE="circle">com.sleepycat.collections.<A HREF="com/sleepycat/collections/StoredMap.html" title="class in com.sleepycat.collections"><B>StoredMap</B></A> (implements java.util.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A>)
<UL>
-<LI TYPE="circle">com.sleepycat.collections.<A HREF="com/sleepycat/collections/StoredSortedMap.html" title="class in com.sleepycat.collections"><B>StoredSortedMap</B></A> (implements java.util.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A>)
+<LI TYPE="circle">com.sleepycat.collections.<A HREF="com/sleepycat/collections/StoredSortedMap.html" title="class in com.sleepycat.collections"><B>StoredSortedMap</B></A> (implements java.util.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedMap.html" title="class or interface in java.util">SortedMap</A>)
</UL>
</UL>
-<LI TYPE="circle">com.sleepycat.collections.<A HREF="com/sleepycat/collections/StoredIterator.html" title="class in com.sleepycat.collections"><B>StoredIterator</B></A> (implements java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>)
-<LI TYPE="circle">java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html" title="class or interface in java.lang"><B>Throwable</B></A> (implements java.io.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/Serializable.html" title="class or interface in java.io">Serializable</A>)
+<LI TYPE="circle">com.sleepycat.collections.<A HREF="com/sleepycat/collections/StoredIterator.html" title="class in com.sleepycat.collections"><B>StoredIterator</B></A> (implements java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>)
+<LI TYPE="circle">java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang"><B>Throwable</B></A> (implements java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Serializable.html" title="class or interface in java.io">Serializable</A>)
<UL>
-<LI TYPE="circle">java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Exception.html" title="class or interface in java.lang"><B>Exception</B></A><UL>
+<LI TYPE="circle">java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Exception.html" title="class or interface in java.lang"><B>Exception</B></A><UL>
<LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db"><B>DatabaseException</B></A><UL>
<LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/DeadlockException.html" title="class in com.sleepycat.db"><B>DeadlockException</B></A><UL>
<LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/LockNotGrantedException.html" title="class in com.sleepycat.db"><B>LockNotGrantedException</B></A></UL>
-<LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/MemoryException.html" title="class in com.sleepycat.db"><B>MemoryException</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/ReplicationDuplicateMasterException.html" title="class in com.sleepycat.db"><B>ReplicationDuplicateMasterException</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/ReplicationHandleDeadException.html" title="class in com.sleepycat.db"><B>ReplicationHandleDeadException</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/ReplicationHoldElectionException.html" title="class in com.sleepycat.db"><B>ReplicationHoldElectionException</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/ReplicationJoinFailureException.html" title="class in com.sleepycat.db"><B>ReplicationJoinFailureException</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/ReplicationLockoutException.html" title="class in com.sleepycat.db"><B>ReplicationLockoutException</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/ReplicationSiteUnavailableException.html" title="class in com.sleepycat.db"><B>ReplicationSiteUnavailableException</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/RunRecoveryException.html" title="class in com.sleepycat.db"><B>RunRecoveryException</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/UpdateConflictException.html" title="class in com.sleepycat.db"><B>UpdateConflictException</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/VersionMismatchException.html" title="class in com.sleepycat.db"><B>VersionMismatchException</B></A></UL>
-<LI TYPE="circle">java.io.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/IOException.html" title="class or interface in java.io"><B>IOException</B></A><UL>
+<LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/MemoryException.html" title="class in com.sleepycat.db"><B>MemoryException</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/ReplicationDuplicateMasterException.html" title="class in com.sleepycat.db"><B>ReplicationDuplicateMasterException</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/ReplicationHandleDeadException.html" title="class in com.sleepycat.db"><B>ReplicationHandleDeadException</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/ReplicationHoldElectionException.html" title="class in com.sleepycat.db"><B>ReplicationHoldElectionException</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/ReplicationJoinFailureException.html" title="class in com.sleepycat.db"><B>ReplicationJoinFailureException</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/ReplicationLeaseExpiredException.html" title="class in com.sleepycat.db"><B>ReplicationLeaseExpiredException</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/ReplicationLeaseTimeoutException.html" title="class in com.sleepycat.db"><B>ReplicationLeaseTimeoutException</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/ReplicationLockoutException.html" title="class in com.sleepycat.db"><B>ReplicationLockoutException</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/ReplicationSiteUnavailableException.html" title="class in com.sleepycat.db"><B>ReplicationSiteUnavailableException</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/RunRecoveryException.html" title="class in com.sleepycat.db"><B>RunRecoveryException</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/VersionMismatchException.html" title="class in com.sleepycat.db"><B>VersionMismatchException</B></A></UL>
+<LI TYPE="circle">java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/IOException.html" title="class or interface in java.io"><B>IOException</B></A><UL>
<LI TYPE="circle">com.sleepycat.util.<A HREF="com/sleepycat/util/IOExceptionWrapper.html" title="class in com.sleepycat.util"><B>IOExceptionWrapper</B></A> (implements com.sleepycat.util.<A HREF="com/sleepycat/util/ExceptionWrapper.html" title="interface in com.sleepycat.util">ExceptionWrapper</A>)
</UL>
-<LI TYPE="circle">java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/RuntimeException.html" title="class or interface in java.lang"><B>RuntimeException</B></A><UL>
+<LI TYPE="circle">java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/RuntimeException.html" title="class or interface in java.lang"><B>RuntimeException</B></A><UL>
<LI TYPE="circle">com.sleepycat.util.<A HREF="com/sleepycat/util/RuntimeExceptionWrapper.html" title="class in com.sleepycat.util"><B>RuntimeExceptionWrapper</B></A> (implements com.sleepycat.util.<A HREF="com/sleepycat/util/ExceptionWrapper.html" title="interface in com.sleepycat.util">ExceptionWrapper</A>)
</UL>
</UL>
</UL>
-<LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/Transaction.html" title="class in com.sleepycat.db"><B>Transaction</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/TransactionConfig.html" title="class in com.sleepycat.db"><B>TransactionConfig</B></A> (implements java.lang.<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>)
+<LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/Transaction.html" title="class in com.sleepycat.db"><B>Transaction</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/TransactionConfig.html" title="class in com.sleepycat.db"><B>TransactionConfig</B></A> (implements java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Cloneable.html" title="class or interface in java.lang">Cloneable</A>)
<LI TYPE="circle">com.sleepycat.collections.<A HREF="com/sleepycat/collections/TransactionRunner.html" title="class in com.sleepycat.collections"><B>TransactionRunner</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/TransactionStats.html" title="class in com.sleepycat.db"><B>TransactionStats</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/TransactionStats.Active.html" title="class in com.sleepycat.db"><B>TransactionStats.Active</B></A><LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="com/sleepycat/bind/tuple/TupleBase.html" title="class in com.sleepycat.bind.tuple"><B>TupleBase</B></A><UL>
<LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="com/sleepycat/bind/tuple/TupleBinding.html" title="class in com.sleepycat.bind.tuple"><B>TupleBinding</B></A> (implements com.sleepycat.bind.<A HREF="com/sleepycat/bind/EntryBinding.html" title="interface in com.sleepycat.bind">EntryBinding</A>)
<UL>
-<LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="com/sleepycat/bind/tuple/BooleanBinding.html" title="class in com.sleepycat.bind.tuple"><B>BooleanBinding</B></A><LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="com/sleepycat/bind/tuple/ByteBinding.html" title="class in com.sleepycat.bind.tuple"><B>ByteBinding</B></A><LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="com/sleepycat/bind/tuple/CharacterBinding.html" title="class in com.sleepycat.bind.tuple"><B>CharacterBinding</B></A><LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="com/sleepycat/bind/tuple/DoubleBinding.html" title="class in com.sleepycat.bind.tuple"><B>DoubleBinding</B></A><LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="com/sleepycat/bind/tuple/FloatBinding.html" title="class in com.sleepycat.bind.tuple"><B>FloatBinding</B></A><LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="com/sleepycat/bind/tuple/IntegerBinding.html" title="class in com.sleepycat.bind.tuple"><B>IntegerBinding</B></A><LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="com/sleepycat/bind/tuple/LongBinding.html" title="class in com.sleepycat.bind.tuple"><B>LongBinding</B></A><LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="com/sleepycat/bind/tuple/ShortBinding.html" title="class in com.sleepycat.bind.tuple"><B>ShortBinding</B></A><LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="com/sleepycat/bind/tuple/SortedDoubleBinding.html" title="class in com.sleepycat.bind.tuple"><B>SortedDoubleBinding</B></A><LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="com/sleepycat/bind/tuple/SortedFloatBinding.html" title="class in com.sleepycat.bind.tuple"><B>SortedFloatBinding</B></A><LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="com/sleepycat/bind/tuple/StringBinding.html" title="class in com.sleepycat.bind.tuple"><B>StringBinding</B></A><LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="com/sleepycat/bind/tuple/TupleMarshalledBinding.html" title="class in com.sleepycat.bind.tuple"><B>TupleMarshalledBinding</B></A></UL>
+<LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="com/sleepycat/bind/tuple/BigIntegerBinding.html" title="class in com.sleepycat.bind.tuple"><B>BigIntegerBinding</B></A><LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="com/sleepycat/bind/tuple/BooleanBinding.html" title="class in com.sleepycat.bind.tuple"><B>BooleanBinding</B></A><LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="com/sleepycat/bind/tuple/ByteBinding.html" title="class in com.sleepycat.bind.tuple"><B>ByteBinding</B></A><LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="com/sleepycat/bind/tuple/CharacterBinding.html" title="class in com.sleepycat.bind.tuple"><B>CharacterBinding</B></A><LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="com/sleepycat/bind/tuple/DoubleBinding.html" title="class in com.sleepycat.bind.tuple"><B>DoubleBinding</B></A><LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="com/sleepycat/bind/tuple/FloatBinding.html" title="class in com.sleepycat.bind.tuple"><B>FloatBinding</B></A><LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="com/sleepycat/bind/tuple/IntegerBinding.html" title="class in com.sleepycat.bind.tuple"><B>IntegerBinding</B></A><LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="com/sleepycat/bind/tuple/LongBinding.html" title="class in com.sleepycat.bind.tuple"><B>LongBinding</B></A><LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="com/sleepycat/bind/tuple/ShortBinding.html" title="class in com.sleepycat.bind.tuple"><B>ShortBinding</B></A><LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="com/sleepycat/bind/tuple/SortedDoubleBinding.html" title="class in com.sleepycat.bind.tuple"><B>SortedDoubleBinding</B></A><LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="com/sleepycat/bind/tuple/SortedFloatBinding.html" title="class in com.sleepycat.bind.tuple"><B>SortedFloatBinding</B></A><LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="com/sleepycat/bind/tuple/StringBinding.html" title="class in com.sleepycat.bind.tuple"><B>StringBinding</B></A><LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="com/sleepycat/bind/tuple/TupleMarshalledBinding.html" title="class in com.sleepycat.bind.tuple"><B>TupleMarshalledBinding</B></A></UL>
<LI TYPE="circle">com.sleepycat.bind.serial.<A HREF="com/sleepycat/bind/serial/TupleSerialBinding.html" title="class in com.sleepycat.bind.serial"><B>TupleSerialBinding</B></A> (implements com.sleepycat.bind.<A HREF="com/sleepycat/bind/EntityBinding.html" title="interface in com.sleepycat.bind">EntityBinding</A>)
<UL>
<LI TYPE="circle">com.sleepycat.bind.serial.<A HREF="com/sleepycat/bind/serial/TupleSerialMarshalledBinding.html" title="class in com.sleepycat.bind.serial"><B>TupleSerialMarshalledBinding</B></A></UL>
@@ -190,13 +191,13 @@ Class Hierarchy
<LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="com/sleepycat/bind/tuple/TupleTupleMarshalledKeyCreator.html" title="class in com.sleepycat.bind.tuple"><B>TupleTupleMarshalledKeyCreator</B></A></UL>
</UL>
<LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="com/sleepycat/bind/tuple/TupleInputBinding.html" title="class in com.sleepycat.bind.tuple"><B>TupleInputBinding</B></A> (implements com.sleepycat.bind.<A HREF="com/sleepycat/bind/EntryBinding.html" title="interface in com.sleepycat.bind">EntryBinding</A>)
-<LI TYPE="circle">com.sleepycat.collections.<A HREF="com/sleepycat/collections/TupleSerialFactory.html" title="class in com.sleepycat.collections"><B>TupleSerialFactory</B></A><LI TYPE="circle">com.sleepycat.util.<A HREF="com/sleepycat/util/UtfOps.html" title="class in com.sleepycat.util"><B>UtfOps</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/VerifyConfig.html" title="class in com.sleepycat.db"><B>VerifyConfig</B></A></UL>
+<LI TYPE="circle">com.sleepycat.collections.<A HREF="com/sleepycat/collections/TupleSerialFactory.html" title="class in com.sleepycat.collections"><B>TupleSerialFactory</B></A><LI TYPE="circle">com.sleepycat.util.<A HREF="com/sleepycat/util/UtfOps.html" title="class in com.sleepycat.util"><B>UtfOps</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/VerboseConfig.html" title="class in com.sleepycat.db"><B>VerboseConfig</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/VerifyConfig.html" title="class in com.sleepycat.db"><B>VerifyConfig</B></A></UL>
</UL>
<H2>
Interface Hierarchy
</H2>
<UL>
-<LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/BtreePrefixCalculator.html" title="interface in com.sleepycat.db"><B>BtreePrefixCalculator</B></A><LI TYPE="circle">com.sleepycat.bind.serial.<A HREF="com/sleepycat/bind/serial/ClassCatalog.html" title="interface in com.sleepycat.bind.serial"><B>ClassCatalog</B></A><LI TYPE="circle">com.sleepycat.bind.<A HREF="com/sleepycat/bind/EntityBinding.html" title="interface in com.sleepycat.bind"><B>EntityBinding</B></A><LI TYPE="circle">com.sleepycat.bind.<A HREF="com/sleepycat/bind/EntryBinding.html" title="interface in com.sleepycat.bind"><B>EntryBinding</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/ErrorHandler.html" title="interface in com.sleepycat.db"><B>ErrorHandler</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/EventHandler.html" title="interface in com.sleepycat.db"><B>EventHandler</B></A><LI TYPE="circle">com.sleepycat.util.<A HREF="com/sleepycat/util/ExceptionWrapper.html" title="interface in com.sleepycat.util"><B>ExceptionWrapper</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/FeedbackHandler.html" title="interface in com.sleepycat.db"><B>FeedbackHandler</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/Hasher.html" title="interface in com.sleepycat.db"><B>Hasher</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/LogRecordHandler.html" title="interface in com.sleepycat.db"><B>LogRecordHandler</B></A><LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="com/sleepycat/bind/tuple/MarshalledTupleEntry.html" title="interface in com.sleepycat.bind.tuple"><B>MarshalledTupleEntry</B></A><LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="com/sleepycat/bind/tuple/MarshalledTupleKeyEntity.html" title="interface in com.sleepycat.bind.tuple"><B>MarshalledTupleKeyEntity</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/MessageHandler.html" title="interface in com.sleepycat.db"><B>MessageHandler</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/PanicHandler.html" title="interface in com.sleepycat.db"><B>PanicHandler</B></A><LI TYPE="circle">com.sleepycat.collections.<A HREF="com/sleepycat/collections/PrimaryKeyAssigner.html" title="interface in com.sleepycat.collections"><B>PrimaryKeyAssigner</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/RecordNumberAppender.html" title="interface in com.sleepycat.db"><B>RecordNumberAppender</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/ReplicationTransport.html" title="interface in com.sleepycat.db"><B>ReplicationTransport</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/SecondaryKeyCreator.html" title="interface in com.sleepycat.db"><B>SecondaryKeyCreator</B></A><LI TYPE="circle">com.sleepycat.collections.<A HREF="com/sleepycat/collections/TransactionWorker.html" title="interface in com.sleepycat.collections"><B>TransactionWorker</B></A></UL>
+<LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/BtreePrefixCalculator.html" title="interface in com.sleepycat.db"><B>BtreePrefixCalculator</B></A><LI TYPE="circle">com.sleepycat.bind.serial.<A HREF="com/sleepycat/bind/serial/ClassCatalog.html" title="interface in com.sleepycat.bind.serial"><B>ClassCatalog</B></A><LI TYPE="circle">com.sleepycat.bind.<A HREF="com/sleepycat/bind/EntityBinding.html" title="interface in com.sleepycat.bind"><B>EntityBinding</B></A><LI TYPE="circle">com.sleepycat.bind.<A HREF="com/sleepycat/bind/EntryBinding.html" title="interface in com.sleepycat.bind"><B>EntryBinding</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/ErrorHandler.html" title="interface in com.sleepycat.db"><B>ErrorHandler</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/EventHandler.html" title="interface in com.sleepycat.db"><B>EventHandler</B></A><LI TYPE="circle">com.sleepycat.util.<A HREF="com/sleepycat/util/ExceptionWrapper.html" title="interface in com.sleepycat.util"><B>ExceptionWrapper</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/FeedbackHandler.html" title="interface in com.sleepycat.db"><B>FeedbackHandler</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/Hasher.html" title="interface in com.sleepycat.db"><B>Hasher</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/LogRecordHandler.html" title="interface in com.sleepycat.db"><B>LogRecordHandler</B></A><LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="com/sleepycat/bind/tuple/MarshalledTupleEntry.html" title="interface in com.sleepycat.bind.tuple"><B>MarshalledTupleEntry</B></A><LI TYPE="circle">com.sleepycat.bind.tuple.<A HREF="com/sleepycat/bind/tuple/MarshalledTupleKeyEntity.html" title="interface in com.sleepycat.bind.tuple"><B>MarshalledTupleKeyEntity</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/MessageHandler.html" title="interface in com.sleepycat.db"><B>MessageHandler</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/PanicHandler.html" title="interface in com.sleepycat.db"><B>PanicHandler</B></A><LI TYPE="circle">com.sleepycat.collections.<A HREF="com/sleepycat/collections/PrimaryKeyAssigner.html" title="interface in com.sleepycat.collections"><B>PrimaryKeyAssigner</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/RecordNumberAppender.html" title="interface in com.sleepycat.db"><B>RecordNumberAppender</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/ReplicationTransport.html" title="interface in com.sleepycat.db"><B>ReplicationTransport</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/SecondaryKeyCreator.html" title="interface in com.sleepycat.db"><B>SecondaryKeyCreator</B></A><LI TYPE="circle">com.sleepycat.db.<A HREF="com/sleepycat/db/SecondaryMultiKeyCreator.html" title="interface in com.sleepycat.db"><B>SecondaryMultiKeyCreator</B></A><LI TYPE="circle">com.sleepycat.collections.<A HREF="com/sleepycat/collections/TransactionWorker.html" title="interface in com.sleepycat.collections"><B>TransactionWorker</B></A></UL>
<HR>
@@ -221,7 +222,7 @@ Interface Hierarchy
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -251,6 +252,6 @@ Interface Hierarchy
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/java/packages.html b/db/docs/java/packages.html
deleted file mode 100644
index 2746cbc97..000000000
--- a/db/docs/java/packages.html
+++ /dev/null
@@ -1,37 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!--NewPage-->
-<HTML>
-<HEAD>
-<!-- Generated by javadoc (build 1.4.2_05) on Mon Nov 08 21:00:47 EST 2004 -->
-<TITLE>
- (Sleepycat Software, Inc. - Berkeley DB Java API)
-</TITLE>
-
-
-<LINK REL ="stylesheet" TYPE="text/css" HREF="style.css" TITLE="Style">
-
-<SCRIPT type="text/javascript">
-function windowTitle()
-{
- parent.document.title=" (Sleepycat Software, Inc. - Berkeley DB Java API)";
-}
-</SCRIPT>
-
-</HEAD>
-
-<BODY BGCOLOR="white" onload="windowTitle();">
-
-<BR>
-
-<BR>
-
-<BR>
-<CENTER>
-The front page has been relocated.Please see:
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="index.html">Frame version</A>
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="overview-summary.html">Non-frame version.</A></CENTER>
-
-</BODY>
-</HTML>
diff --git a/db/docs/java/serialized-form.html b/db/docs/java/serialized-form.html
index 242950ae6..3eaf4794f 100644
--- a/db/docs/java/serialized-form.html
+++ b/db/docs/java/serialized-form.html
@@ -2,9 +2,9 @@
<!--NewPage-->
<HTML>
<HEAD>
-<!-- Generated by javadoc (build 1.5.0_06) on Wed Sep 20 16:19:48 EDT 2006 -->
+<!-- Generated by javadoc (build 1.5.0_07) on Tue Jul 17 10:56:59 EDT 2007 -->
<TITLE>
-Serialized Form (Oracle Corporation - Berkeley DB Java API)
+Serialized Form (Oracle - Berkeley DB Java API)
</TITLE>
@@ -13,7 +13,7 @@ Serialized Form (Oracle Corporation - Berkeley DB Java API)
<SCRIPT type="text/javascript">
function windowTitle()
{
- parent.document.title="Serialized Form (Oracle Corporation - Berkeley DB Java API)";
+ parent.document.title="Serialized Form (Oracle - Berkeley DB Java API)";
}
</SCRIPT>
<NOSCRIPT>
@@ -45,7 +45,7 @@ function windowTitle()
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -93,7 +93,7 @@ Serialized Form</H1>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
-<B>Class <A HREF="com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">com.sleepycat.db.DatabaseException</A> extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Exception.html" title="class or interface in java.lang">Exception</A> implements Serializable</B></FONT></TH>
+<B>Class <A HREF="com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">com.sleepycat.db.DatabaseException</A> extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Exception.html" title="class or interface in java.lang">Exception</A> implements Serializable</B></FONT></TH>
</TR>
</TABLE>
@@ -177,44 +177,55 @@ Serialized Form</H1>
<P>
<P>
-<A NAME="com.sleepycat.db.ReplicationLockoutException"><!-- --></A>
+<A NAME="com.sleepycat.db.ReplicationLeaseExpiredException"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
-<B>Class <A HREF="com/sleepycat/db/ReplicationLockoutException.html" title="class in com.sleepycat.db">com.sleepycat.db.ReplicationLockoutException</A> extends <A HREF="com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A> implements Serializable</B></FONT></TH>
+<B>Class <A HREF="com/sleepycat/db/ReplicationLeaseExpiredException.html" title="class in com.sleepycat.db">com.sleepycat.db.ReplicationLeaseExpiredException</A> extends <A HREF="com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A> implements Serializable</B></FONT></TH>
</TR>
</TABLE>
<P>
<P>
-<A NAME="com.sleepycat.db.ReplicationSiteUnavailableException"><!-- --></A>
+<A NAME="com.sleepycat.db.ReplicationLeaseTimeoutException"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
-<B>Class <A HREF="com/sleepycat/db/ReplicationSiteUnavailableException.html" title="class in com.sleepycat.db">com.sleepycat.db.ReplicationSiteUnavailableException</A> extends <A HREF="com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A> implements Serializable</B></FONT></TH>
+<B>Class <A HREF="com/sleepycat/db/ReplicationLeaseTimeoutException.html" title="class in com.sleepycat.db">com.sleepycat.db.ReplicationLeaseTimeoutException</A> extends <A HREF="com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A> implements Serializable</B></FONT></TH>
</TR>
</TABLE>
<P>
<P>
-<A NAME="com.sleepycat.db.RunRecoveryException"><!-- --></A>
+<A NAME="com.sleepycat.db.ReplicationLockoutException"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
-<B>Class <A HREF="com/sleepycat/db/RunRecoveryException.html" title="class in com.sleepycat.db">com.sleepycat.db.RunRecoveryException</A> extends <A HREF="com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A> implements Serializable</B></FONT></TH>
+<B>Class <A HREF="com/sleepycat/db/ReplicationLockoutException.html" title="class in com.sleepycat.db">com.sleepycat.db.ReplicationLockoutException</A> extends <A HREF="com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A> implements Serializable</B></FONT></TH>
</TR>
</TABLE>
<P>
<P>
-<A NAME="com.sleepycat.db.UpdateConflictException"><!-- --></A>
+<A NAME="com.sleepycat.db.ReplicationSiteUnavailableException"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
-<B>Class <A HREF="com/sleepycat/db/UpdateConflictException.html" title="class in com.sleepycat.db">com.sleepycat.db.UpdateConflictException</A> extends <A HREF="com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A> implements Serializable</B></FONT></TH>
+<B>Class <A HREF="com/sleepycat/db/ReplicationSiteUnavailableException.html" title="class in com.sleepycat.db">com.sleepycat.db.ReplicationSiteUnavailableException</A> extends <A HREF="com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A> implements Serializable</B></FONT></TH>
+</TR>
+</TABLE>
+
+<P>
+
+<P>
+<A NAME="com.sleepycat.db.RunRecoveryException"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Class <A HREF="com/sleepycat/db/RunRecoveryException.html" title="class in com.sleepycat.db">com.sleepycat.db.RunRecoveryException</A> extends <A HREF="com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A> implements Serializable</B></FONT></TH>
</TR>
</TABLE>
@@ -244,7 +255,7 @@ Serialized Form</H1>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
-<B>Class <A HREF="com/sleepycat/util/IOExceptionWrapper.html" title="class in com.sleepycat.util">com.sleepycat.util.IOExceptionWrapper</A> extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A> implements Serializable</B></FONT></TH>
+<B>Class <A HREF="com/sleepycat/util/IOExceptionWrapper.html" title="class in com.sleepycat.util">com.sleepycat.util.IOExceptionWrapper</A> extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A> implements Serializable</B></FONT></TH>
</TR>
</TABLE>
@@ -260,7 +271,7 @@ Serialized Form</H1>
<H3>
e</H3>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A> <B>e</B></PRE>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A> <B>e</B></PRE>
<DL>
<DL>
</DL>
@@ -271,7 +282,7 @@ e</H3>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
-<B>Class <A HREF="com/sleepycat/util/RuntimeExceptionWrapper.html" title="class in com.sleepycat.util">com.sleepycat.util.RuntimeExceptionWrapper</A> extends <A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/RuntimeException.html" title="class or interface in java.lang">RuntimeException</A> implements Serializable</B></FONT></TH>
+<B>Class <A HREF="com/sleepycat/util/RuntimeExceptionWrapper.html" title="class in com.sleepycat.util">com.sleepycat.util.RuntimeExceptionWrapper</A> extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/RuntimeException.html" title="class or interface in java.lang">RuntimeException</A> implements Serializable</B></FONT></TH>
</TR>
</TABLE>
@@ -287,7 +298,7 @@ e</H3>
<H3>
e</H3>
<PRE>
-<A HREF="http://java.sun.com/j2se/1.3/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A> <B>e</B></PRE>
+<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A> <B>e</B></PRE>
<DL>
<DL>
</DL>
@@ -318,7 +329,7 @@ e</H3>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Berkeley DB</b><br><font size="-1"> version 4.5.20</font></EM>
+<b>Berkeley DB</b><br><font size="-1"> version 4.6.18</font></EM>
</TD>
</TR>
@@ -348,6 +359,6 @@ e</H3>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
-<font size=1>Copyright(c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</BODY>
</HTML>
diff --git a/db/docs/license/license_db.html b/db/docs/license/license_db.html
index 1c13a48b7..97a52314f 100644
--- a/db/docs/license/license_db.html
+++ b/db/docs/license/license_db.html
@@ -1,6 +1,5 @@
-<!--$Id: license_db.so,v 10.17 2006/09/19 18:18:24 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: license_db.so,v 10.18 2006/10/05 20:52:51 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -9,105 +8,13 @@
<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
</head>
<body bgcolor=white>
-<p align=center>
-<img src="../images/Oracle_BerkeleyDB_clr.bmp" alt="Oracle Corporation"></p>
<h3 align=center>Berkeley DB Product License</h3>
-<p>The following is the license that applies to this copy of the Berkeley DB
-software. For a license to use the Berkeley DB software under conditions
-other than those described here, or to purchase support for this
-software, please contact
-<a href="mailto:berkeleydb-info_us@oracle.com">Oracle Corporation</a>.</p>
-<pre>/*
- * Copyright (c) 1990-2006
- * Oracle Corporation. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Redistributions in any form must be accompanied by information on
- * how to obtain complete source code for the DB software and any
- * accompanying software that uses the DB software. The source code
- * must either be included in the distribution or be available for no
- * more than the cost of distribution plus a nominal fee, and must be
- * freely redistributable under reasonable conditions. For an
- * executable file, complete source code means the source code for all
- * modules it contains. It does not include source code for modules or
- * files that typically accompany the major components of the operating
- * system on which the executable file runs.
- *
- * THIS SOFTWARE IS PROVIDED BY ORACLE CORPORATION ``AS IS'' AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR
- * NON-INFRINGEMENT, ARE DISCLAIMED. IN NO EVENT SHALL ORACLE CORPORATION
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-/*
- * Copyright (c) 1990, 1993, 1994, 1995
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-/*
- * Copyright (c) 1995, 1996
- * The President and Fellows of Harvard University. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY HARVARD AND ITS CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL HARVARD OR ITS CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */</pre>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p>The license that applies to this copy of the Berkeley DB software may be found
+in the "LICENSE" file included in each Berkeley DB distribution.</p>
+<p>For a license to use the Berkeley DB software under conditions other than
+those described in the "LICENSE" file, or to purchase support for this
+software, please send email to
+<a href="mailto:berkeleydb-info_us@oracle.com">berkeleydb-info_us@oracle.com</a>.</p>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/license/license_xml.html b/db/docs/license/license_xml.html
deleted file mode 100644
index 273c52477..000000000
--- a/db/docs/license/license_xml.html
+++ /dev/null
@@ -1,184 +0,0 @@
-<!--$Id: license_xml.so,v 10.9 2006/09/19 18:18:24 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: Berkeley DB XML Product License</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
-</head>
-<body bgcolor=white>
-<p align=center>
-<img src="../images/Oracle_BerkeleyDB_clr.bmp" alt="Oracle Corporation"></p>
-<h3 align=center>Berkeley DB XML Product License</h3>
-<p>The following is the license that applies to this copy of the Berkeley DB XML
-software. For a license to use the Berkeley DB XML software under conditions
-other than those described here, or to purchase support for this software,
-please contact
-<a href="mailto:berkeleydb-info_us@oracle.com">Oracle Corporation</a>.</p>
-<pre>/*
- * Copyright (c) 2001-2006
- * Oracle Corporation. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Redistributions in any form must be accompanied by information on
- * how to obtain complete source code for the DB software and any
- * accompanying software that uses the DB software. The source code
- * must either be included in the distribution or be available for no
- * more than the cost of distribution plus a nominal fee, and must be
- * freely redistributable under reasonable conditions. For an
- * executable file, complete source code means the source code for all
- * modules it contains. It does not include source code for modules or
- * files that typically accompany the major components of the operating
- * system on which the executable file runs.
- *
- * THIS SOFTWARE IS PROVIDED BY ORACLE CORPORATION ``AS IS'' AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR
- * NON-INFRINGEMENT, ARE DISCLAIMED. IN NO EVENT SHALL ORACLE CORPORATION
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The end-user documentation included with the redistribution,
- * if any, must include the following acknowledgment:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowledgment may appear in the software itself,
- * if and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "Apache" and "Apache Software Foundation" must
- * not be used to endorse or promote products derived from this
- * software without prior written permission. For written
- * permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache",
- * nor may "Apache" appear in their name, without prior written
- * permission of the Apache Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- * Portions of this software are based upon public domain software
- * originally written at the National Center for Supercomputing Applications,
- * University of Illinois, Urbana-Champaign.
- */</pre>
-<p>The following is the license that applies to this copy of the Berkeley DB XML
-XQuery software. For a license to use the Berkeley DB XML XQuery software
-under conditions other than those described here, or to purchase support
-for this software, please contact
-<a href="mailto:berkeleydb-info_us@oracle.com">Oracle Corporation</a>.</p>
-<pre>/*
- * Copyright (c) 2001-2006
- * Oracle Corporation. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Redistributions in any form must be accompanied by information on
- * how to obtain complete source code for the DB software and any
- * accompanying software that uses the DB software. The source code
- * must either be included in the distribution or be available for no
- * more than the cost of distribution plus a nominal fee, and must be
- * freely redistributable under reasonable conditions. For an
- * executable file, complete source code means the source code for all
- * modules it contains. It does not include source code for modules or
- * files that typically accompany the major components of the operating
- * system on which the executable file runs.
- *
- * THIS SOFTWARE IS PROVIDED BY ORACLE CORPORATION ``AS IS'' AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR
- * NON-INFRINGEMENT, ARE DISCLAIMED. IN NO EVENT SHALL ORACLE CORPORATION
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-/*
- * Copyright (c) 2005
- * Progress Software Corporation. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. The end-user documentation included with the redistribution, if any,
- * must include the following acknowledgment: "This product includes
- * software developed by Progress Software Corporation." Alternately,
- * this acknowledgment may appear in the software itself, if and wherever
- * such third-party acknowledgments normally appear.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
- * NO EVENT SHALL PROGRESS SOFTWARE CORPORATION BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
- * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */</pre>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
-</body>
-</html>
diff --git a/db/docs/ref/am/close.html b/db/docs/ref/am/close.html
index beacd030d..f58f47514 100644
--- a/db/docs/ref/am/close.html
+++ b/db/docs/ref/am/close.html
@@ -1,6 +1,5 @@
<!--$Id: close.so,v 10.18 2003/10/18 19:15:51 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -39,6 +38,6 @@ atomically replace the original database with the updated copy.
</ul>
<table width="100%"><tr><td><br></td><td align=right><a href="../am/sync.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../am/second.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/am/count.html b/db/docs/ref/am/count.html
index 76db7f9bd..4322b6642 100644
--- a/db/docs/ref/am/count.html
+++ b/db/docs/ref/am/count.html
@@ -1,6 +1,5 @@
<!--$Id: count.so,v 1.4 2001/05/05 01:49:20 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -18,12 +17,12 @@
<h3 align=center>Data item count</h3>
<p>Once a cursor has been initialized to refer to a particular key in the
database, it can be used to determine the number of data items that are
-stored for any particular key. The <a href="../../api_c/dbc_count.html">DBcursor-&gt;c_count</a> method returns
+stored for any particular key. The <a href="../../api_c/dbc_count.html">DBcursor-&gt;count</a> method returns
this number of data items. The returned value is always one, unless
the database supports duplicate data items, in which case it may be any
number of items.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../am/join.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../am/curclose.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/am/curclose.html b/db/docs/ref/am/curclose.html
index ee8374c99..79b045b5e 100644
--- a/db/docs/ref/am/curclose.html
+++ b/db/docs/ref/am/curclose.html
@@ -1,6 +1,5 @@
<!--$Id: curclose.so,v 10.15 2003/10/18 19:15:51 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -16,7 +15,7 @@
</td></tr></table>
<p>
<h3 align=center>Cursor close</h3>
-<p>The <a href="../../api_c/dbc_close.html">DBcursor-&gt;c_close</a> method closes the <a href="../../api_c/dbc_class.html">DBC</a> cursor, after which the
+<p>The <a href="../../api_c/dbc_close.html">DBcursor-&gt;close</a> method closes the <a href="../../api_c/dbc_class.html">DBC</a> cursor, after which the
cursor may no longer be used. Although cursors are implicitly closed
when the database they point to are closed, it is good programming
practice to explicitly close cursors. In addition, in transactional
@@ -24,6 +23,6 @@ systems, cursors may not exist outside of a transaction and so must be
explicitly closed.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../am/count.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../am_misc/align.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/am/curdel.html b/db/docs/ref/am/curdel.html
index bc38536ec..a3aad9885 100644
--- a/db/docs/ref/am/curdel.html
+++ b/db/docs/ref/am/curdel.html
@@ -1,6 +1,5 @@
<!--$Id: curdel.so,v 10.15 2003/10/18 19:15:52 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -16,12 +15,12 @@
</td></tr></table>
<p>
<h3 align=center>Deleting records with a cursor</h3>
-<p>The <a href="../../api_c/dbc_del.html">DBcursor-&gt;c_del</a> method deletes records from the database using a cursor.
-The <a href="../../api_c/dbc_del.html">DBcursor-&gt;c_del</a> method deletes the record to which the cursor currently
+<p>The <a href="../../api_c/dbc_del.html">DBcursor-&gt;del</a> method deletes records from the database using a cursor.
+The <a href="../../api_c/dbc_del.html">DBcursor-&gt;del</a> method deletes the record to which the cursor currently
refers. In all cases, the cursor position is unchanged after a
delete.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../am/curput.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../am/curdup.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/am/curdup.html b/db/docs/ref/am/curdup.html
index 2ac42356c..f0a7d7589 100644
--- a/db/docs/ref/am/curdup.html
+++ b/db/docs/ref/am/curdup.html
@@ -1,6 +1,5 @@
<!--$Id: curdup.so,v 11.6 2001/03/01 15:57:49 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -17,8 +16,8 @@
<p>
<h3 align=center>Duplicating a cursor</h3>
<p>Once a cursor has been initialized (for example, by a call to
-<a href="../../api_c/dbc_get.html">DBcursor-&gt;c_get</a>), it can be thought of as identifying a particular
-location in a database. The <a href="../../api_c/dbc_dup.html">DBcursor-&gt;c_dup</a> method permits an application to
+<a href="../../api_c/dbc_get.html">DBcursor-&gt;get</a>), it can be thought of as identifying a particular
+location in a database. The <a href="../../api_c/dbc_dup.html">DBcursor-&gt;dup</a> method permits an application to
create a new cursor that has the same locking and transactional
information as the cursor from which it is copied, and which optionally
refers to the same position in the database.</p>
@@ -30,6 +29,6 @@ self-deadlocks. For further details, refer to
<a href="../../ref/lock/am_conv.html">Access method locking conventions</a>.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../am/curdel.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../am/join.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/am/curget.html b/db/docs/ref/am/curget.html
index 5b7a57494..6f16a8d66 100644
--- a/db/docs/ref/am/curget.html
+++ b/db/docs/ref/am/curget.html
@@ -1,6 +1,5 @@
<!--$Id: curget.so,v 10.20 2003/10/18 19:15:52 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -16,10 +15,10 @@
</td></tr></table>
<p>
<h3 align=center>Retrieving records with a cursor</h3>
-<p>The <a href="../../api_c/dbc_get.html">DBcursor-&gt;c_get</a> method retrieves records from the database using a cursor.
-The <a href="../../api_c/dbc_get.html">DBcursor-&gt;c_get</a> method takes a flag which controls how the cursor is
+<p>The <a href="../../api_c/dbc_get.html">DBcursor-&gt;get</a> method retrieves records from the database using a cursor.
+The <a href="../../api_c/dbc_get.html">DBcursor-&gt;get</a> method takes a flag which controls how the cursor is
positioned within the database and returns the key/data item associated
-with that positioning. Similar to <a href="../../api_c/db_get.html">DB-&gt;get</a>, <a href="../../api_c/dbc_get.html">DBcursor-&gt;c_get</a> may
+with that positioning. Similar to <a href="../../api_c/db_get.html">DB-&gt;get</a>, <a href="../../api_c/dbc_get.html">DBcursor-&gt;get</a> may
also take a supplied key and retrieve the data associated with that key
from the database. There are several flags that you can set to
customize retrieval.</p>
@@ -67,7 +66,7 @@ deleted. The underlying database must be a Queue.
retrieval. This can enhance performance in threaded applications by
reducing the chance of deadlock.
</dl>
-<p>In all cases, the cursor is repositioned by a <a href="../../api_c/dbc_get.html">DBcursor-&gt;c_get</a> operation
+<p>In all cases, the cursor is repositioned by a <a href="../../api_c/dbc_get.html">DBcursor-&gt;get</a> operation
to point to the newly-returned key/data pair in the database.</p>
<p>The following is a code example showing a cursor walking through a
database and displaying the records it contains to the standard
@@ -132,6 +131,6 @@ err: if (close_dbc && (ret = dbcp-&gt;c_close(dbcp)) != 0)
}</pre></blockquote>
<table width="100%"><tr><td><br></td><td align=right><a href="../am/cursor.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../am/curput.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/am/curput.html b/db/docs/ref/am/curput.html
index 8daa44fdb..2dd29a12d 100644
--- a/db/docs/ref/am/curput.html
+++ b/db/docs/ref/am/curput.html
@@ -1,6 +1,5 @@
<!--$Id: curput.so,v 10.18 2003/10/18 19:15:52 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -16,8 +15,8 @@
</td></tr></table>
<p>
<h3 align=center>Storing records with a cursor</h3>
-<p>The <a href="../../api_c/dbc_put.html">DBcursor-&gt;c_put</a> method stores records into the database using a cursor. In
-general, <a href="../../api_c/dbc_put.html">DBcursor-&gt;c_put</a> takes a key and inserts the associated data
+<p>The <a href="../../api_c/dbc_put.html">DBcursor-&gt;put</a> method stores records into the database using a cursor. In
+general, <a href="../../api_c/dbc_put.html">DBcursor-&gt;put</a> takes a key and inserts the associated data
into the database, at a location controlled by a specified flag.</p>
<p>There are several flags that you can set to customize storage:</p>
<dl compact>
@@ -31,7 +30,7 @@ supplied key.
<dt><a href="../../api_c/dbc_put.html#DB_KEYLAST">DB_KEYLAST</a><dd>Create a new record, as the last of the duplicate records for the supplied
key.
</dl>
-<p>In all cases, the cursor is repositioned by a <a href="../../api_c/dbc_put.html">DBcursor-&gt;c_put</a> operation
+<p>In all cases, the cursor is repositioned by a <a href="../../api_c/dbc_put.html">DBcursor-&gt;put</a> operation
to point to the newly inserted key/data pair in the database.</p>
<p>The following is a code example showing a cursor storing two data items
in a database that supports duplicate data items:</p>
@@ -85,6 +84,6 @@ err: if ((ret = dbcp-&gt;c_close(dbcp)) != 0)
}</pre></blockquote>
<table width="100%"><tr><td><br></td><td align=right><a href="../am/curget.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../am/curdel.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/am/cursor.html b/db/docs/ref/am/cursor.html
index 5e55984c3..2db0cad36 100644
--- a/db/docs/ref/am/cursor.html
+++ b/db/docs/ref/am/cursor.html
@@ -1,6 +1,5 @@
<!--$Id: cursor.so,v 10.21 2003/10/18 19:15:52 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -26,25 +25,26 @@ have been read.</p>
cursor is uninitialized, cursor positioning occurs as part of the first
cursor operation.</p>
<p>Once a database cursor has been opened, records may be retrieved
-(<a href="../../api_c/dbc_get.html">DBcursor-&gt;c_get</a>), stored (<a href="../../api_c/dbc_put.html">DBcursor-&gt;c_put</a>), and deleted
-(<a href="../../api_c/dbc_del.html">DBcursor-&gt;c_del</a>).</p>
+(<a href="../../api_c/dbc_get.html">DBcursor-&gt;get</a>), stored (<a href="../../api_c/dbc_put.html">DBcursor-&gt;put</a>), and deleted
+(<a href="../../api_c/dbc_del.html">DBcursor-&gt;del</a>).</p>
<p>Additional operations supported by the cursor handle include duplication
-(<a href="../../api_c/dbc_dup.html">DBcursor-&gt;c_dup</a>), equality join (<a href="../../api_c/db_join.html">DB-&gt;join</a>), and a count of
-duplicate data items (<a href="../../api_c/dbc_count.html">DBcursor-&gt;c_count</a>). Cursors are eventually closed
-using <a href="../../api_c/dbc_close.html">DBcursor-&gt;c_close</a>.</p>
-<!--$Id: m4.methods,v 1.4 2005/02/09 13:11:05 bostic Exp $-->
+(<a href="../../api_c/dbc_dup.html">DBcursor-&gt;dup</a>), equality join (<a href="../../api_c/db_join.html">DB-&gt;join</a>), and a count of
+duplicate data items (<a href="../../api_c/dbc_count.html">DBcursor-&gt;count</a>). Cursors are eventually closed
+using <a href="../../api_c/dbc_close.html">DBcursor-&gt;close</a>.</p>
+<!--$Id: m4.methods,v 1.5 2007/05/08 21:37:19 bostic Exp $-->
<table border=1 align=center>
<tr><th>Database Cursors and Related Methods</th><th>Description</th></tr>
<!--Db::cursor--><tr><td><a href="../../api_c/db_cursor.html">DB-&gt;cursor</a></td><td>Create a cursor</td></tr>
-<!--DbCursor::close--><tr><td><a href="../../api_c/dbc_close.html">DBcursor-&gt;c_close</a></td><td>Close a cursor</td></tr>
-<!--DbCursor::count--><tr><td><a href="../../api_c/dbc_count.html">DBcursor-&gt;c_count</a></td><td>Return count of duplicates</td></tr>
-<!--DbCursor::del--><tr><td><a href="../../api_c/dbc_del.html">DBcursor-&gt;c_del</a></td><td>Delete by cursor</td></tr>
-<!--DbCursor::dup--><tr><td><a href="../../api_c/dbc_dup.html">DBcursor-&gt;c_dup</a></td><td>Duplicate a cursor</td></tr>
-<!--DbCursor::get--><tr><td><a href="../../api_c/dbc_get.html">DBcursor-&gt;c_get</a>, <a href="../../api_c/dbc_get.html">DBcursor-&gt;c_pget</a></td><td>Retrieve by cursor</td></tr>
-<!--DbCursor::put--><tr><td><a href="../../api_c/dbc_put.html">DBcursor-&gt;c_put</a></td><td>Store by cursor</td></tr>
+<!--DbCursor::close--><tr><td><a href="../../api_c/dbc_close.html">DBcursor-&gt;close</a></td><td>Close a cursor</td></tr>
+<!--DbCursor::count--><tr><td><a href="../../api_c/dbc_count.html">DBcursor-&gt;count</a></td><td>Return count of duplicates</td></tr>
+<!--DbCursor::del--><tr><td><a href="../../api_c/dbc_del.html">DBcursor-&gt;del</a></td><td>Delete by cursor</td></tr>
+<!--DbCursor::dup--><tr><td><a href="../../api_c/dbc_dup.html">DBcursor-&gt;dup</a></td><td>Duplicate a cursor</td></tr>
+<!--DbCursor::get--><tr><td><a href="../../api_c/dbc_get.html">DBcursor-&gt;get</a>, <a href="../../api_c/dbc_get.html">DBcursor-&gt;pget</a></td><td>Retrieve by cursor</td></tr>
+<!--DbCursor::put--><tr><td><a href="../../api_c/dbc_put.html">DBcursor-&gt;put</a></td><td>Store by cursor</td></tr>
+<!--DbCursor::set_priority--><tr><td><a href="../../api_c/dbc_set_priority.html">DBcursor-&gt;set_priority</a></td><td>Set the cursor's cache priority</td></tr>
</table>
<table width="100%"><tr><td><br></td><td align=right><a href="../am/second.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../am/curget.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/am/delete.html b/db/docs/ref/am/delete.html
index 882ec5644..40359cdc4 100644
--- a/db/docs/ref/am/delete.html
+++ b/db/docs/ref/am/delete.html
@@ -1,6 +1,5 @@
<!--$Id: delete.so,v 10.16 2003/10/18 19:15:52 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -24,6 +23,6 @@ it from the database.</p>
individual duplicate records, you must use a Berkeley DB cursor interface.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../am/put.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../am/stat.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/am/error.html b/db/docs/ref/am/error.html
deleted file mode 100644
index 737e6d662..000000000
--- a/db/docs/ref/am/error.html
+++ /dev/null
@@ -1,61 +0,0 @@
-<!--$Id: error.so,v 10.14 2000/12/18 21:05:13 bostic Exp $-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB Reference Guide: Error support</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
- <a name="2"><!--meow--></a>
-<table><tr valign=top>
-<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Access Methods</dl></h3></td>
-<td width="1%"><a href="../../ref/am/verify.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../ref/toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/arch/bigpic.html"><img src="../../images/next.gif" alt="Next"></a>
-</td></tr></table>
-<p>
-<h1 align=center>Error support</h1>
-<p>Berkeley DB offers programmatic support for displaying error return values.
-<p>The <a href="../../api_c/env_strerror.html">db_strerror</a> interface returns a pointer to the error
-message corresponding to any Berkeley DB error return, similar to the ANSI C
-strerror interface, but is able to handle both system error returns and
-Berkeley DB specific return values.
-<p>For example:
-<p><blockquote><pre>int ret;
-if ((ret = dbp-&gt;put(dbp, NULL, &key, &data, 0)) != 0) {
- fprintf(stderr, "put failed: %s\n", db_strerror(ret));
- return (1);
-}
-</pre></blockquote>
-<p>There are also two additional error interfaces, <a href="../../api_c/db_err.html">DB-&gt;err</a> and
-<a href="../../api_c/db_err.html">DB-&gt;errx</a>. These interfaces work like the ANSI C X3.159-1989 (ANSI C) printf
-interface, taking a printf-style format string and argument list, and
-writing a message constructed from the format string and arguments.
-<p>The <a href="../../api_c/db_err.html">DB-&gt;err</a> function appends the standard error string to the constructed
-message, the <a href="../../api_c/db_err.html">DB-&gt;errx</a> function does not. These interfaces provide simpler
-ways of displaying Berkeley DB error messages. For example, if your application
-tracks session IDs in a variable called session_id, it can include that
-information in its error messages:
-<p>Error messages can additionally be configured to always include a prefix
-(e.g., the program name) using the <a href="../../api_c/db_set_errpfx.html">DB-&gt;set_errpfx</a> interface.
-<p><blockquote><pre>#define DATABASE "access.db"
-int ret;
-dbp-&gt;errpfx(dbp, argv0);
-if ((ret =
- dbp-&gt;open(dbp, DATABASE, DB_BTREE, DB_CREATE, 0664)) != 0) {
- dbp-&gt;err(dbp, ret, "%s", DATABASE);
- dbp-&gt;errx(dbp,
- "contact your system administrator: session ID was %d",
- session_id);
- return (1);
-}
-</pre></blockquote>
-<p>For example, if the program was called my_app, and the open call returned
-an EACCESS system error, the error messages shown would appear as follows:
-<p><blockquote><pre>my_app: access.db: Permission denied.
-my_app: contact your system administrator: session ID was 14</pre></blockquote>
-<table><tr><td><br></td><td width="1%"><a href="../../ref/am/verify.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../ref/toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/arch/bigpic.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>
-</body>
-</html>
diff --git a/db/docs/ref/am/get.html b/db/docs/ref/am/get.html
index c8f2784ec..c54f4d461 100644
--- a/db/docs/ref/am/get.html
+++ b/db/docs/ref/am/get.html
@@ -1,6 +1,5 @@
<!--$Id: get.so,v 10.18 2003/10/18 19:15:52 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -35,6 +34,6 @@ record.
set.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../am/opensub.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../am/put.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/am/join.html b/db/docs/ref/am/join.html
index 77070d892..b4badef6c 100644
--- a/db/docs/ref/am/join.html
+++ b/db/docs/ref/am/join.html
@@ -1,6 +1,5 @@
<!--$Id: join.so,v 10.31 2004/01/21 20:39:56 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -186,6 +185,6 @@ from the join method. This code then loops over the join cursor getting
the personnel records of each one until there are no more.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../am/curdup.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../am/count.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/am/open.html b/db/docs/ref/am/open.html
index cbe51ecaa..8d2bc48b7 100644
--- a/db/docs/ref/am/open.html
+++ b/db/docs/ref/am/open.html
@@ -1,6 +1,5 @@
<!--$Id: open.so,v 10.18 2003/10/18 19:15:53 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -42,6 +41,6 @@ within physical files.
</dl>
<table width="100%"><tr><td><br></td><td align=right><a href="../am/ops.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../am/opensub.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/am/opensub.html b/db/docs/ref/am/opensub.html
index 4ea13bfd1..3efeb7d2c 100644
--- a/db/docs/ref/am/opensub.html
+++ b/db/docs/ref/am/opensub.html
@@ -1,6 +1,5 @@
-<!--$Id: opensub.so,v 10.17 2004/08/25 17:34:14 mjc Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: opensub.so,v 10.20 2007/05/17 18:31:55 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -19,11 +18,11 @@
file. This is useful when the databases are both numerous and
reasonably small, in order to avoid creating a large number of
underlying files, or when it is desirable to include secondary index
-databases in the same file as the primary index database. Multiple
-databases are an administrative convenience and using them is unlikely
-to affect database performance. To open or create a file that will
-include more than a single database, specify a database name when
-calling the <a href="../../api_c/db_open.html">DB-&gt;open</a> method.</p>
+databases in the same file as the primary index database. Putting
+multiple databases in a single physical file is an administrative
+convenience and unlikely to affect database performance.</p>
+<p>To open or create a file that will include more than a single database,
+specify a database name when calling the <a href="../../api_c/db_open.html">DB-&gt;open</a> method.</p>
<p>Physical files do not need to be comprised of a single type of database,
and databases in a file may be of any mixture of types, except for Queue
databases. Queue databases must be created one per file and cannot
@@ -41,41 +40,42 @@ handle that is returned from such a call is a handle on a database whose
key values are the names of the databases stored in the database file
and whose data values are opaque objects. No keys or data values may be
modified or stored using this database handle.</p>
-<p>The main difference when storing multiple databases in a single file
-rather than in separate files is that <b>if any of the databases
-in a file is opened for updates, all of the databases in the file must
-share a memory pool</b>. In other words, they must be opened in the same
-environment. In addition, there are some constraints on configuration
-information that apply to databases in the same file.</p>
-<p>
-If databases are in separate files, and access to each separate database
-is single-threaded, there is no reason to perform any locking of any
+<h3>Configuring databases sharing a file</h3>
+<p>There are four pieces of configuration information which must be
+specified consistently for all databases in a file, rather than
+differing on a per-database basis. They are: byte order, checksum and
+encryption behavior, and page size. When creating additional databases
+in a file, any of these configuration values specified must be
+consistent with the existing databases in the file or an error will be
+returned.</p>
+<h3>Caching databases sharing a file</h3>
+<p>When storing multiple databases in a single physical file rather than
+in separate files, if any of the databases in a file is opened for
+update, all of the databases in the file must share a memory pool. In
+other words, they must be opened in the same database environment. This
+is so per-physical-file information common between the two databases is
+updated correctly.</p>
+<h3>Locking in databases based on sharing a file</h3>
+<p>If databases are in separate files (and access to each separate database
+is single-threaded), there is no reason to perform any locking of any
kind, and the two databases may be read and written simultaneously.
Further, there would be no requirement to create a shared database
-environment in which to open the databases.</p>
+environment in which to open those two databases.</p>
<p>However, since multiple databases in a file exist in a single physical
file, opening two databases in the same file simultaneously requires
-locking be enabled unless all of the handles are read-only. As the
+locking be enabled, unless all of the databases are read-only. As the
locks for the two databases can only conflict during page allocation,
-this additional locking is unlikely to affect performance.</p>
-<p>Also, because multiple databases in a file exist in a single physical
-file, opening two databases in the same file requires the databases
-share an underlying memory pool so that per-physical-file information
-common between the two databases is updated correctly.</p>
+this additional locking is unlikely to affect performance. The
+exception is when Berkeley DB Concurrent Data Store is configured; a single lock is used for all
+databases in the file when Berkeley DB Concurrent Data Store is configured, and a write to one
+database will block all accesses to all databases.</p>
<p>In summary, programmers writing applications that open multiple
databases in a single file will almost certainly need to create a shared
database environment in the application as well. For more information
on database environments, see <a href="../../ref/env/intro.html">Database
environment introduction.</a></p>
-<p>In addition, there are four types of configuration information which
-must be specified consistently for all databases in a file, rather than
-differing on a per-database basis. They are: byte order, checksum and
-encryption behavior, and page size. When creating additional databases
-in a file, any of these configuration values specified must be
-consistent with the existing databases in the file or an error will be
-returned.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../am/open.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../am/get.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/am/ops.html b/db/docs/ref/am/ops.html
index 37d433d8c..a1d246118 100644
--- a/db/docs/ref/am/ops.html
+++ b/db/docs/ref/am/ops.html
@@ -1,6 +1,5 @@
<!--$Id: ops.so,v 10.22 2002/08/30 20:01:36 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -29,7 +28,7 @@ version upgrade (<a href="../../api_c/db_upgrade.html">DB-&gt;upgrade</a>), veri
(<a href="../../api_c/db_verify.html">DB-&gt;verify</a>), flushing to a backing file (<a href="../../api_c/db_sync.html">DB-&gt;sync</a>),
and association of secondary indices (<a href="../../api_c/db_associate.html">DB-&gt;associate</a>). Database
handles are eventually closed using <a href="../../api_c/db_close.html">DB-&gt;close</a>.</p>
-<!--$Id: m4.methods,v 1.11 2006/08/25 16:40:00 bostic Exp $-->
+<!--$Id: m4.methods,v 1.14 2007/07/12 18:27:42 bostic Exp $-->
<table border=1 align=center>
<tr><th>Database Operations</th><th>Description</th></tr>
<!--Db::--><tr><td><a href="../../api_c/db_class.html">db_create</a></td><td>Create a database handle</td></tr>
@@ -39,6 +38,7 @@ handles are eventually closed using <a href="../../api_c/db_close.html">DB-&gt;c
<!--Db::cursor--><tr><td><a href="../../api_c/db_cursor.html">DB-&gt;cursor</a></td><td>Create a cursor</td></tr>
<!--Db::del--><tr><td><a href="../../api_c/db_del.html">DB-&gt;del</a></td><td>Delete items from a database</td></tr>
<!--Db::err--><tr><td><a href="../../api_c/db_err.html">DB-&gt;err</a>, <a href="../../api_c/db_err.html">DB-&gt;errx</a></td><td>Error message</td></tr>
+<!--Db::exists--><tr><td><a href="../../api_c/db_exists.html">DB-&gt;exists</a></td><td>Return if an item appears in a database</td></tr>
<!--Db::fd--><tr><td><a href="../../api_c/db_fd.html">DB-&gt;fd</a></td><td>Return a file descriptor from a database</td></tr>
<!--Db::get--><tr><td><a href="../../api_c/db_get.html">DB-&gt;get</a>, <a href="../../api_c/db_get.html">DB-&gt;pget</a></td><td>Get items from a database</td></tr>
<!--Db::get_byteswapped--><tr><td><a href="../../api_c/db_get_byteswapped.html">DB-&gt;get_byteswapped</a></td><td>Return if the underlying database is in host order</td></tr>
@@ -49,6 +49,7 @@ handles are eventually closed using <a href="../../api_c/db_close.html">DB-&gt;c
<!--Db::put--><tr><td><a href="../../api_c/db_put.html">DB-&gt;put</a></td><td>Store items into a database</td></tr>
<!--Db::remove--><tr><td><a href="../../api_c/db_remove.html">DB-&gt;remove</a></td><td>Remove a database</td></tr>
<!--Db::rename--><tr><td><a href="../../api_c/db_rename.html">DB-&gt;rename</a></td><td>Rename a database</td></tr>
+<!--Db::set_priority--><tr><td><a href="../../api_c/db_set_priority.html">DB-&gt;set_priority</a></td><td>Set cache page priority</td></tr>
<!--Db::stat--><tr><td><a href="../../api_c/db_stat.html">DB-&gt;stat</a>, <a href="../../api_c/db_stat.html">DB-&gt;stat_print</a></td><td>Database statistics</td></tr>
<!--Db::sync--><tr><td><a href="../../api_c/db_sync.html">DB-&gt;sync</a></td><td>Flush a database to stable storage</td></tr>
<!--Db::truncate--><tr><td><a href="../../api_c/db_truncate.html">DB-&gt;truncate</a></td><td>Empty a database</td></tr>
@@ -77,6 +78,7 @@ handles are eventually closed using <a href="../../api_c/db_close.html">DB-&gt;c
<!--Db::set_re_pad--><tr><td><a href="../../api_c/db_set_re_pad.html">DB-&gt;set_re_pad</a></td><td>Set the fixed-length record pad byte</td></tr>
<!--Db::set_re_source--><tr><td><a href="../../api_c/db_set_re_source.html">DB-&gt;set_re_source</a></td><td>Set the backing Recno text file</td></tr>
<tr><th>Hash Configuration</th><th><br></th></tr>
+<!--Db::set_h_compare--><tr><td><a href="../../api_c/db_set_h_compare.html">DB-&gt;set_h_compare</a></td><td>Set a Hash comparison function</td></tr>
<!--Db::set_h_ffactor--><tr><td><a href="../../api_c/db_set_h_ffactor.html">DB-&gt;set_h_ffactor</a></td><td>Set the Hash table density</td></tr>
<!--Db::set_h_hash--><tr><td><a href="../../api_c/db_set_h_hash.html">DB-&gt;set_h_hash</a></td><td>Set a hashing function</td></tr>
<!--Db::set_h_nelem--><tr><td><a href="../../api_c/db_set_h_nelem.html">DB-&gt;set_h_nelem</a></td><td>Set the Hash table size</td></tr>
@@ -85,6 +87,6 @@ handles are eventually closed using <a href="../../api_c/db_close.html">DB-&gt;c
</table>
<table width="100%"><tr><td><br></td><td align=right><a href="../am_conf/renumber.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../am/open.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/am/partial.html b/db/docs/ref/am/partial.html
deleted file mode 100644
index 7f3af8f68..000000000
--- a/db/docs/ref/am/partial.html
+++ /dev/null
@@ -1,134 +0,0 @@
-<!--$Id: partial.so,v 10.18 2000/12/18 21:05:14 bostic Exp $-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB Reference Guide: Partial record storage and retrieval</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
- <a name="2"><!--meow--></a>
-<table><tr valign=top>
-<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Access Methods</dl></h3></td>
-<td width="1%"><a href="../../ref/am/stability.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../ref/toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/am/verify.html"><img src="../../images/next.gif" alt="Next"></a>
-</td></tr></table>
-<p>
-<h1 align=center>Partial record storage and retrieval</h1>
-<p>It is possible to both store and retrieve parts of data items in all
-Berkeley DB access methods. This is done by setting the
-<a href="../../api_c/dbt.html#DB_DBT_PARTIAL">DB_DBT_PARTIAL</a> flag in the <a href="../../api_c/dbt.html">DBT</a> structure passed to the
-Berkeley DB interface.
-<p>The <a href="../../api_c/dbt.html#DB_DBT_PARTIAL">DB_DBT_PARTIAL</a> flag is based on the values of two fields
-of the <a href="../../api_c/dbt.html">DBT</a> structure, <b>dlen</b> and <b>doff</b>. The value
-of <b>dlen</b> is the number of bytes of the record in which the
-application is interested. The value of <b>doff</b> is the offset from
-the beginning of the data item where those bytes start.
-<p>For example, if the data item were <b>ABCDEFGHIJKL</b>, a <b>doff</b>
-value of 3 would indicate that the bytes of interest started at
-<b>D</b>, and a <b>dlen</b> value of 4 would indicate that the bytes
-of interest were <b>DEFG</b>.
-<p>When retrieving a data item from a database, the <b>dlen</b> bytes
-starting <b>doff</b> bytes from the beginning of the record are
-returned, as if they comprised the entire record. If any or all of the
-specified bytes do not exist in the record, the retrieval is still
-successful and any existing bytes (and nul bytes for any non-existent
-bytes) are returned.
-<p>When storing a data item into the database, the <b>dlen</b> bytes
-starting <b>doff</b> bytes from the beginning of the specified key's
-data record are replaced by the data specified by the <b>data</b> and
-<b>size</b> fields. If <b>dlen</b> is smaller than <b>size</b>, the
-record will grow, and if <b>dlen</b> is larger than <b>size</b>, the
-record will shrink. If the specified bytes do not exist, the record will
-be extended using nul bytes as necessary, and the store call will still
-succeed.
-<p>The following are various examples of the put case for the
-<a href="../../api_c/dbt.html#DB_DBT_PARTIAL">DB_DBT_PARTIAL</a> flag. In all examples, the initial data item is 20
-bytes in length:
-<p><b>ABCDEFGHIJ0123456789</b>
-<p><ol>
-<p><li><p><blockquote><pre>size = 20
-doff = 0
-dlen = 20
-data = abcdefghijabcdefghij
-<p>
-Result: The 20 bytes at offset 0 are replaced by the 20 bytes of data,
-i.e., the entire record is replaced.
-<p>
-ABCDEFGHIJ0123456789 -&gt; abcdefghijabcdefghij
-</pre></blockquote>
-<p><li><p><blockquote><pre>size = 10
-doff = 20
-dlen = 0
-data = abcdefghij
-<p>
-Result: The 0 bytes at offset 20 are replaced by the 10 bytes of data,
-i.e., the record is extended by 10 bytes.
-<p>
-ABCDEFGHIJ0123456789 -&gt; ABCDEFGHIJ0123456789abcdefghij
-</pre></blockquote>
-<p><li><p><blockquote><pre>size = 10
-doff = 10
-dlen = 5
-data = abcdefghij
-<p>
-Result: The 5 bytes at offset 10 are replaced by the 10 bytes of data.
-<p>
-ABCDEFGHIJ0123456789 -&gt; ABCDEFGHIJabcdefghij56789
-</pre></blockquote>
-<p><li><p><blockquote><pre>size = 10
-doff = 10
-dlen = 0
-data = abcdefghij
-<p>
-Result: The 0 bytes at offset 10 are replaced by the 10 bytes of data,
-i.e., 10 bytes are inserted into the record.
-<p>
-ABCDEFGHIJ0123456789 -&gt; ABCDEFGHIJabcdefghij0123456789
-</pre></blockquote>
-<p><li><p><blockquote><pre>size = 10
-doff = 2
-dlen = 15
-data = abcdefghij
-<p>
-Result: The 15 bytes at offset 2 are replaced by the 10 bytes of data.
-<p>
-ABCDEFGHIJ0123456789 -&gt; ABabcdefghij789
-</pre></blockquote>
-<p><li><p><blockquote><pre>size = 10
-doff = 0
-dlen = 0
-data = abcdefghij
-<p>
-Result: The 0 bytes at offset 0 are replaced by the 10 bytes of data,
-i.e., the 10 bytes are inserted at the beginning of the record.
-<p>
-ABCDEFGHIJ0123456789 -&gt; abcdefghijABCDEFGHIJ0123456789
-</pre></blockquote>
-<p><li><p><blockquote><pre>size = 0
-doff = 0
-dlen = 10
-data = ""
-<p>
-Result: The 10 bytes at offset 0 are replaced by the 0 bytes of data,
-i.e., the first 10 bytes of the record are discarded.
-<p>
-ABCDEFGHIJ0123456789 -&gt; 0123456789
-</pre></blockquote>
-<p><li><p><blockquote><pre>size = 10
-doff = 25
-dlen = 0
-data = abcdefghij
-<p>
-Result: The 0 bytes at offset 25 are replaced by the 10 bytes of data,
-i.e., 10 bytes are inserted into the record past the end of the current
-data (\0 represents a nul byte).
-<p>
-ABCDEFGHIJ0123456789 -&gt; ABCDEFGHIJ0123456789\0\0\0\0\0abcdefghij
-</pre></blockquote>
-</ol>
-<table><tr><td><br></td><td width="1%"><a href="../../ref/am/stability.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../ref/toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/am/verify.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>
-</body>
-</html>
diff --git a/db/docs/ref/am/put.html b/db/docs/ref/am/put.html
index 555bc424f..e20f32d34 100644
--- a/db/docs/ref/am/put.html
+++ b/db/docs/ref/am/put.html
@@ -1,6 +1,5 @@
<!--$Id: put.so,v 10.15 2003/10/18 19:15:53 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -32,6 +31,6 @@ set. If the database supports sorted duplicates, the new data value is
inserted at the correct sorted location.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../am/get.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../am/delete.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/am/second.html b/db/docs/ref/am/second.html
index 0c4025ec8..a8d06f271 100644
--- a/db/docs/ref/am/second.html
+++ b/db/docs/ref/am/second.html
@@ -1,6 +1,5 @@
<!--$Id: second.so,v 10.12 2004/09/15 19:40:07 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -149,8 +148,8 @@ skey.size = 15;
if ((ret = sdbp-&gt;del(sdbp, txn, &skey, 0)) != 0)
handle_error(ret);</pre></blockquote>
<p>Gets on a secondary automatically return the primary datum. If
-<a href="../../api_c/db_get.html">DB-&gt;pget</a> or <a href="../../api_c/dbc_get.html">DBcursor-&gt;c_pget</a> is used in lieu of <a href="../../api_c/db_get.html">DB-&gt;get</a>
-or <a href="../../api_c/dbc_get.html">DBcursor-&gt;c_get</a>, the primary key is returned as well. Thus, the
+<a href="../../api_c/db_get.html">DB-&gt;pget</a> or <a href="../../api_c/dbc_get.html">DBcursor-&gt;pget</a> is used in lieu of <a href="../../api_c/db_get.html">DB-&gt;get</a>
+or <a href="../../api_c/dbc_get.html">DBcursor-&gt;get</a>, the primary key is returned as well. Thus, the
equivalent of:</p>
<blockquote><pre>SELECT * from lname WHERE (lastname = "Churchill ");</pre></blockquote>
<p>would be:</p>
@@ -173,11 +172,11 @@ argument to the <a href="../../api_c/db_associate.html">DB-&gt;associate</a> met
alternate interfaces to the primary database. All updates to the
primary will be automatically reflected in each secondary index that has
been associated with it. All get operations using the <a href="../../api_c/db_get.html">DB-&gt;get</a>
-or <a href="../../api_c/dbc_get.html">DBcursor-&gt;c_get</a> methods on the secondary index return the primary datum
+or <a href="../../api_c/dbc_get.html">DBcursor-&gt;get</a> methods on the secondary index return the primary datum
associated with the specified (or otherwise current, in the case of
cursor operations) secondary key. The <a href="../../api_c/db_get.html">DB-&gt;pget</a> and
-<a href="../../api_c/dbc_get.html">DBcursor-&gt;c_pget</a> methods also become usable; these behave just like
-<a href="../../api_c/db_get.html">DB-&gt;get</a> and <a href="../../api_c/dbc_get.html">DBcursor-&gt;c_get</a>, but return the primary key in
+<a href="../../api_c/dbc_get.html">DBcursor-&gt;pget</a> methods also become usable; these behave just like
+<a href="../../api_c/db_get.html">DB-&gt;get</a> and <a href="../../api_c/dbc_get.html">DBcursor-&gt;get</a>, but return the primary key in
addition to the primary datum, for those applications that need it as
well.</p>
<p>Cursor get operations on a secondary index perform as expected; although
@@ -189,7 +188,7 @@ function or other structure of the secondary database.</p>
database and all relevant secondaries, including the current one.</p>
<p>Put operations of any kind are forbidden on secondary indices, as there
is no way to specify a primary key for a newly put item. Instead, the
-application should use the <a href="../../api_c/dbc_put.html">DBcursor-&gt;c_put</a> or <a href="../../api_c/db_put.html">DB-&gt;put</a> methods
+application should use the <a href="../../api_c/dbc_put.html">DBcursor-&gt;put</a> or <a href="../../api_c/db_put.html">DB-&gt;put</a> methods
on the primary database.</p>
<p>Any number of secondary indices may be associated with a given primary
database, up to limitations on available memory and the number of open
@@ -214,6 +213,6 @@ a new database handle and the <a href="../../api_c/db_remove.html">DB-&gt;remove
secondary database handles associated with it.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../am/close.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../am/cursor.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/am/second.javas b/db/docs/ref/am/second.javas
index b28cbf308..c8e7799e3 100644
--- a/db/docs/ref/am/second.javas
+++ b/db/docs/ref/am/second.javas
@@ -1,8 +1,7 @@
/*-
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: second.javas,v 10.5 2006/08/24 16:32:26 bostic Exp $
+ * $Id: second.javas,v 10.7 2007/05/17 15:15:11 bostic Exp $
*/
package db;
diff --git a/db/docs/ref/am/stability.html b/db/docs/ref/am/stability.html
deleted file mode 100644
index b5f6d2386..000000000
--- a/db/docs/ref/am/stability.html
+++ /dev/null
@@ -1,49 +0,0 @@
-<!--$Id: stability.so,v 10.20 2000/12/13 16:48:13 bostic Exp $-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB Reference Guide: Cursor Stability</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
- <a name="2"><!--meow--></a> <a name="3"><!--meow--></a>
-<table><tr valign=top>
-<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Transaction Subsystem</dl></h3></td>
-<td width="1%"><a href="../../ref/am/curclose.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../ref/toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/am/partial.html"><img src="../../images/next.gif" alt="Next"></a>
-</td></tr></table>
-<p>
-<h1 align=center>Cursor Stability</h1>
-<p>In the absence of locking, no guarantees are made about the stability of
-cursors in different processes or threads. However, the Btree, Queue
-and Recno access methods guarantee that cursor operations, interspersed
-with other cursor or non-cursor operations in the same thread of control
-will always return keys in order and will return each non-deleted key/data
-pair exactly once. Because the Hash access method uses a dynamic hashing
-algorithm, it cannot guarantee any form of stability in the presence of
-inserts and deletes unless locking is performed.
-<p>If locking was specified when the Berkeley DB file was opened, but transactions
-are not in effect, the access methods provide repeatable reads with
-respect to the cursor. That is, a <a href="../../api_c/dbc_get.html#DB_CURRENT">DB_CURRENT</a> call on the cursor
-is guaranteed to return the same record as was returned on the last call
-to the cursor.
-<p>With the exception of the Queue access method, in the presence of
-transactions, all access method calls between a call to <a href="../../api_c/txn_begin.html">txn_begin</a>
-and a call to <a href="../../api_c/txn_abort.html">txn_abort</a> or <a href="../../api_c/txn_commit.html">txn_commit</a> provide degree 3
-consistency (serializable transactions).
-<p>The Queue access method permits phantom records to appear between calls.
-That is, deleted records are not locked, therefore another transaction may
-replace a deleted record between two calls to retrieve it. The record would
-not appear in the first call but would be seen by the second call.
-<p>For all access methods, a cursor scan of the database performed within
-the context of a transaction is guaranteed to return each key/data pair
-once and only once, except in the following case. If, while performing
-a cursor scan using the Hash access method, the transaction performing
-the scan inserts a new pair into the database, it is possible that duplicate
-key/data pairs will be returned.
-<table><tr><td><br></td><td width="1%"><a href="../../ref/am/curclose.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../ref/toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/am/partial.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>
-</body>
-</html>
diff --git a/db/docs/ref/am/stat.html b/db/docs/ref/am/stat.html
index da74075f8..15080c201 100644
--- a/db/docs/ref/am/stat.html
+++ b/db/docs/ref/am/stat.html
@@ -1,6 +1,5 @@
<!--$Id: stat.so,v 10.21 2003/10/18 19:15:53 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -26,6 +25,6 @@ entire database.
</dl>
<table width="100%"><tr><td><br></td><td align=right><a href="../am/delete.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../am/truncate.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/am/sync.html b/db/docs/ref/am/sync.html
index e016adc1f..433946aa3 100644
--- a/db/docs/ref/am/sync.html
+++ b/db/docs/ref/am/sync.html
@@ -1,6 +1,5 @@
<!--$Id: sync.so,v 10.18 2003/10/18 19:15:53 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -34,6 +33,6 @@ atomically replace the original database with the updated copy.
</ul>
<table width="100%"><tr><td><br></td><td align=right><a href="../am/verify.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../am/close.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/am/truncate.html b/db/docs/ref/am/truncate.html
index cfa86ae0e..3a9c0222b 100644
--- a/db/docs/ref/am/truncate.html
+++ b/db/docs/ref/am/truncate.html
@@ -1,6 +1,5 @@
<!--$Id: truncate.so,v 10.5 2003/10/18 19:15:53 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -19,6 +18,6 @@
<p>The <a href="../../api_c/db_truncate.html">DB-&gt;truncate</a> method empties a database of all records.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../am/stat.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../am/upgrade.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/am/upgrade.html b/db/docs/ref/am/upgrade.html
index 45fd3c309..4a80698c2 100644
--- a/db/docs/ref/am/upgrade.html
+++ b/db/docs/ref/am/upgrade.html
@@ -1,6 +1,5 @@
<!--$Id: upgrade.so,v 10.17 2001/03/10 19:05:22 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -46,6 +45,6 @@ appropriate copies of their application or application sources if they
may need to access archived databases without first upgrading them.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../am/truncate.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../am/verify.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/am/verify.html b/db/docs/ref/am/verify.html
index 4a4f253fb..437141879 100644
--- a/db/docs/ref/am/verify.html
+++ b/db/docs/ref/am/verify.html
@@ -1,6 +1,5 @@
<!--$Id: verify.so,v 10.10 2003/10/18 19:15:54 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -46,6 +45,6 @@ preferable to any kind of data loss.
</ol>
<table width="100%"><tr><td><br></td><td align=right><a href="../am/upgrade.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../am/sync.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/am_conf/bt_compare.html b/db/docs/ref/am_conf/bt_compare.html
index 25412a949..6a994793a 100644
--- a/db/docs/ref/am_conf/bt_compare.html
+++ b/db/docs/ref/am_conf/bt_compare.html
@@ -1,6 +1,5 @@
<!--$Id: bt_compare.so,v 10.25 2004/03/05 21:39:33 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -81,12 +80,12 @@ must also return that key A is less than key C.</p>
in some applications, which implies that partial keys may be specified
to the Berkeley DB interfaces. When partial keys are specified to Berkeley DB,
interfaces which retrieve data items based on a user-specified key (for
-example, <a href="../../api_c/db_get.html">DB-&gt;get</a> and <a href="../../api_c/dbc_get.html">DBcursor-&gt;c_get</a> with the <a href="../../api_c/dbc_get.html#DB_SET">DB_SET</a>
+example, <a href="../../api_c/db_get.html">DB-&gt;get</a> and <a href="../../api_c/dbc_get.html">DBcursor-&gt;get</a> with the <a href="../../api_c/dbc_get.html#DB_SET">DB_SET</a>
flag), will not modify the user-specified key by returning the actual
key stored in the database. The actual key can be retrieved by calling
-the <a href="../../api_c/dbc_get.html">DBcursor-&gt;c_get</a> method with the <a href="../../api_c/dbc_get.html#DB_CURRENT">DB_CURRENT</a> flag.</p>
+the <a href="../../api_c/dbc_get.html">DBcursor-&gt;get</a> method with the <a href="../../api_c/dbc_get.html#DB_CURRENT">DB_CURRENT</a> flag.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../am_conf/malloc.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../am_conf/bt_prefix.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/am_conf/bt_minkey.html b/db/docs/ref/am_conf/bt_minkey.html
index 80ddcf499..566ef61a3 100644
--- a/db/docs/ref/am_conf/bt_minkey.html
+++ b/db/docs/ref/am_conf/bt_minkey.html
@@ -1,6 +1,5 @@
<!--$Id: bt_minkey.so,v 10.14 2000/03/18 21:43:08 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -49,6 +48,6 @@ value incorrectly can result in overusing overflow pages and decreasing
the application's overall performance.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../am_conf/bt_prefix.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../am_conf/bt_recnum.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/am_conf/bt_prefix.html b/db/docs/ref/am_conf/bt_prefix.html
index 9d78507a1..14f7c71ad 100644
--- a/db/docs/ref/am_conf/bt_prefix.html
+++ b/db/docs/ref/am_conf/bt_prefix.html
@@ -1,6 +1,5 @@
<!--$Id: bt_prefix.so,v 10.22 2004/02/21 15:50:51 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -65,6 +64,6 @@ compare_prefix(dbp, a, b)
sets can produce significantly reduced tree sizes and faster search times.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../am_conf/bt_compare.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../am_conf/bt_minkey.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/am_conf/bt_recnum.html b/db/docs/ref/am_conf/bt_recnum.html
index 8e1541265..5c54ddf14 100644
--- a/db/docs/ref/am_conf/bt_recnum.html
+++ b/db/docs/ref/am_conf/bt_recnum.html
@@ -1,6 +1,5 @@
<!--$Id: bt_recnum.so,v 10.23 2002/06/24 14:50:23 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -25,7 +24,7 @@ items can be stored into the database, and can severely impact
application throughput. Generally it should be avoided in trees with
a need for high write concurrency.</p>
<p>To retrieve by record number, use the <a href="../../api_c/db_get.html#DB_SET_RECNO">DB_SET_RECNO</a> flag to the
-<a href="../../api_c/db_get.html">DB-&gt;get</a> and <a href="../../api_c/dbc_get.html">DBcursor-&gt;c_get</a> methods. The following is an example of
+<a href="../../api_c/db_get.html">DB-&gt;get</a> and <a href="../../api_c/dbc_get.html">DBcursor-&gt;get</a> methods. The following is an example of
a routine that displays the data item for a Btree database created with
the <a href="../../api_c/db_set_flags.html#DB_RECNUM">DB_RECNUM</a> option.</p>
<blockquote><pre>int
@@ -48,7 +47,7 @@ rec_display(dbp, recno)
return (0);
}</pre></blockquote>
<p>To determine a key's record number, use the <a href="../../api_c/dbc_get.html#DB_GET_RECNO">DB_GET_RECNO</a> flag
-to the <a href="../../api_c/dbc_get.html">DBcursor-&gt;c_get</a> method. The following is an example of a routine that
+to the <a href="../../api_c/dbc_get.html">DBcursor-&gt;get</a> method. The following is an example of a routine that
displays the record number associated with a specific key.</p>
<blockquote><pre>int
recno_display(dbp, keyvalue)
@@ -101,6 +100,6 @@ err: /* Close the cursor. */
}</pre></blockquote>
<table width="100%"><tr><td><br></td><td align=right><a href="../am_conf/bt_minkey.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../am_conf/h_ffactor.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/am_conf/byteorder.html b/db/docs/ref/am_conf/byteorder.html
index c1f0fa01d..fb01a15dd 100644
--- a/db/docs/ref/am_conf/byteorder.html
+++ b/db/docs/ref/am_conf/byteorder.html
@@ -1,6 +1,5 @@
<!--$Id: byteorder.so,v 10.17 2001/02/15 22:21:13 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -33,6 +32,6 @@ exactly as they were written when retrieved on a big-endian format
architecture.</b></p>
<table width="100%"><tr><td><br></td><td align=right><a href="../am_conf/cachesize.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../am_conf/dup.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/am_conf/cachesize.html b/db/docs/ref/am_conf/cachesize.html
index 142f7af08..e4fefbd68 100644
--- a/db/docs/ref/am_conf/cachesize.html
+++ b/db/docs/ref/am_conf/cachesize.html
@@ -1,6 +1,5 @@
<!--$Id: cachesize.so,v 10.20 2003/02/19 17:41:58 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -81,6 +80,6 @@ means that the cache is working well, yielding a 97% cache hit rate. The
as a whole and for each file within the cache separately.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../am_conf/pagesize.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../am_conf/byteorder.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/am_conf/dup.html b/db/docs/ref/am_conf/dup.html
index 847f395e1..5facd9b9e 100644
--- a/db/docs/ref/am_conf/dup.html
+++ b/db/docs/ref/am_conf/dup.html
@@ -1,6 +1,5 @@
<!--$Id: dup.so,v 10.28 2003/10/18 19:15:54 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -28,7 +27,7 @@ and returned from future database operations.</p>
<p>By default, Berkeley DB stores duplicates in the order in which they were added,
that is, each new duplicate data item will be stored after any already
existing data items. This default behavior can be overridden by using
-the <a href="../../api_c/dbc_put.html">DBcursor-&gt;c_put</a> method and one of the <a href="../../api_c/dbc_put.html#DB_AFTER">DB_AFTER</a>, <a href="../../api_c/dbc_put.html#DB_BEFORE">DB_BEFORE</a>
+the <a href="../../api_c/dbc_put.html">DBcursor-&gt;put</a> method and one of the <a href="../../api_c/dbc_put.html#DB_AFTER">DB_AFTER</a>, <a href="../../api_c/dbc_put.html#DB_BEFORE">DB_BEFORE</a>
<a href="../../api_c/dbc_put.html#DB_KEYFIRST">DB_KEYFIRST</a> or <a href="../../api_c/dbc_put.html#DB_KEYLAST">DB_KEYLAST</a> flags. Alternatively, Berkeley DB
may be configured to sort duplicate data items.</p>
<p>When stepping through the database sequentially, duplicate data items will
@@ -37,7 +36,7 @@ changes after the last duplicate data item has been returned. For this
reason, duplicate data items cannot be accessed using the
<a href="../../api_c/db_get.html">DB-&gt;get</a> method, as it always returns the first of the duplicate data
items. Duplicate data items should be retrieved using a Berkeley DB cursor
-interface such as the <a href="../../api_c/dbc_get.html">DBcursor-&gt;c_get</a> method.</p>
+interface such as the <a href="../../api_c/dbc_get.html">DBcursor-&gt;get</a> method.</p>
<p>There is a flag that permits applications to request the following data
item only if it <b>is</b> a duplicate data item of the current entry,
see <a href="../../api_c/dbc_get.html#DB_NEXT_DUP">DB_NEXT_DUP</a> for more information. There is a flag that
@@ -67,9 +66,9 @@ permit duplicate duplicates in databases configured for sorted
duplicates should begin using the <a href="../../api_c/db_put.html#DB_NODUPDATA">DB_NODUPDATA</a> flag immediately.</p>
<p>For further information on how searching and insertion behaves in the
presence of duplicates (sorted or not), see the <a href="../../api_c/db_get.html">DB-&gt;get</a>,
-<a href="../../api_c/db_put.html">DB-&gt;put</a>, <a href="../../api_c/dbc_get.html">DBcursor-&gt;c_get</a> and <a href="../../api_c/dbc_put.html">DBcursor-&gt;c_put</a> documentation.</p>
+<a href="../../api_c/db_put.html">DB-&gt;put</a>, <a href="../../api_c/dbc_get.html">DBcursor-&gt;get</a> and <a href="../../api_c/dbc_put.html">DBcursor-&gt;put</a> documentation.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../am_conf/byteorder.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../am_conf/malloc.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/am_conf/extentsize.html b/db/docs/ref/am_conf/extentsize.html
index 1aac57fb0..30f74db95 100644
--- a/db/docs/ref/am_conf/extentsize.html
+++ b/db/docs/ref/am_conf/extentsize.html
@@ -1,6 +1,5 @@
<!--$Id: extentsize.so,v 1.3 2001/05/02 15:53:22 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -39,6 +38,6 @@ many files, all those files will need to be open at the same time,
consuming system and process file resources.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../am_conf/recno.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../am_conf/re_source.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/am_conf/h_ffactor.html b/db/docs/ref/am_conf/h_ffactor.html
index 569f8b08a..bd5f157bc 100644
--- a/db/docs/ref/am_conf/h_ffactor.html
+++ b/db/docs/ref/am_conf/h_ffactor.html
@@ -1,6 +1,5 @@
<!--$Id: h_ffactor.so,v 10.12 2001/04/18 13:44:53 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -27,6 +26,6 @@ the <a href="../../api_c/db_set_h_ffactor.html">DB-&gt;set_h_ffactor</a> method.
be selected dynamically as pages are filled.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../am_conf/bt_recnum.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../am_conf/h_hash.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/am_conf/h_hash.html b/db/docs/ref/am_conf/h_hash.html
index 138011100..54e896eaa 100644
--- a/db/docs/ref/am_conf/h_hash.html
+++ b/db/docs/ref/am_conf/h_hash.html
@@ -1,6 +1,5 @@
<!--$Id: h_hash.so,v 10.12 2000/07/04 18:28:27 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -35,6 +34,6 @@ take a reference to a <a href="../../api_c/db_class.html">DB</a> object, a point
its length, as arguments and return an unsigned, 32-bit hash value.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../am_conf/h_ffactor.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../am_conf/h_nelem.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/am_conf/h_nelem.html b/db/docs/ref/am_conf/h_nelem.html
index f8d935fbc..b43d9c9c7 100644
--- a/db/docs/ref/am_conf/h_nelem.html
+++ b/db/docs/ref/am_conf/h_nelem.html
@@ -1,6 +1,5 @@
<!--$Id: h_nelem.so,v 10.12 2000/03/18 21:43:08 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -28,6 +27,6 @@ of elements to be a useful value to Berkeley DB, the <a href="../../api_c/db_set
must also be called to set the page fill factor.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../am_conf/h_hash.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../am_conf/recno.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/am_conf/intro.html b/db/docs/ref/am_conf/intro.html
index 6ffd8f9fe..37838d19b 100644
--- a/db/docs/ref/am_conf/intro.html
+++ b/db/docs/ref/am_conf/intro.html
@@ -1,6 +1,5 @@
<!--$Id: intro.so,v 10.25 2004/09/17 19:51:50 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -41,6 +40,6 @@ logical record numbers as keys, optionally backed by a flat text (byte
stream) file.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../intro/products.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../am_conf/select.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/am_conf/logrec.html b/db/docs/ref/am_conf/logrec.html
index 4f33a3e48..84acbbe66 100644
--- a/db/docs/ref/am_conf/logrec.html
+++ b/db/docs/ref/am_conf/logrec.html
@@ -1,6 +1,5 @@
<!--$Id: logrec.so,v 10.31 2004/08/05 14:16:56 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -20,7 +19,7 @@
record numbers. Record numbers are 1-based, not 0-based, that is, the
first record in a database is record number 1.</p>
<p>In all cases for the Queue and Recno access methods, and when calling
-the Btree access method using the <a href="../../api_c/db_get.html">DB-&gt;get</a> and <a href="../../api_c/dbc_get.html">DBcursor-&gt;c_get</a> methods
+the Btree access method using the <a href="../../api_c/db_get.html">DB-&gt;get</a> and <a href="../../api_c/dbc_get.html">DBcursor-&gt;get</a> methods
with the <a href="../../api_c/db_get.html#DB_SET_RECNO">DB_SET_RECNO</a> flag specified, the <b>data</b> field of
the key <a href="../../api_c/dbt_class.html">DBT</a> must be a pointer to a memory location of type
<b>db_recno_t</b>, as typedef'd in the standard Berkeley DB include file.
@@ -119,6 +118,6 @@ recno_build(dbp)
}</pre></blockquote>
<table width="100%"><tr><td><br></td><td align=right><a href="../am_conf/select.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../am_conf/pagesize.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/am_conf/malloc.html b/db/docs/ref/am_conf/malloc.html
index 92bfbf7bb..a8f9cafea 100644
--- a/db/docs/ref/am_conf/malloc.html
+++ b/db/docs/ref/am_conf/malloc.html
@@ -1,6 +1,5 @@
<!--$Id: malloc.so,v 10.20 2001/04/03 16:27:58 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -28,6 +27,6 @@ uses to free it, or vice versa. To avoid this problem, the
give Berkeley DB references to the application's allocation routines.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../am_conf/dup.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../am_conf/bt_compare.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/am_conf/pagesize.html b/db/docs/ref/am_conf/pagesize.html
index f85fccd07..653c0d936 100644
--- a/db/docs/ref/am_conf/pagesize.html
+++ b/db/docs/ref/am_conf/pagesize.html
@@ -1,6 +1,5 @@
<!--$Id: pagesize.so,v 10.22 2002/02/11 14:55:53 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -73,6 +72,6 @@ from which your database can recover See
information.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../am_conf/logrec.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../am_conf/cachesize.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/am_conf/re_source.html b/db/docs/ref/am_conf/re_source.html
index 6b4c0ce7e..be879e7e1 100644
--- a/db/docs/ref/am_conf/re_source.html
+++ b/db/docs/ref/am_conf/re_source.html
@@ -1,6 +1,5 @@
<!--$Id: re_source.so,v 10.16 2003/10/18 19:15:55 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -58,6 +57,6 @@ are either generated on the fly by software tools, or modified using a
different mechanism such as a text editor.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../am_conf/extentsize.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../am_conf/renumber.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/am_conf/recno.html b/db/docs/ref/am_conf/recno.html
index cd7c69131..5bbe749bf 100644
--- a/db/docs/ref/am_conf/recno.html
+++ b/db/docs/ref/am_conf/recno.html
@@ -1,6 +1,5 @@
<!--$Id: recno.so,v 11.11 2003/10/18 19:15:55 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -65,6 +64,6 @@ files, see <a href="../../ref/am_conf/re_source.html">Flat-text backing
files</a>.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../am_conf/h_nelem.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../am_conf/extentsize.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/am_conf/renumber.html b/db/docs/ref/am_conf/renumber.html
index c1ace5098..7be476cf4 100644
--- a/db/docs/ref/am_conf/renumber.html
+++ b/db/docs/ref/am_conf/renumber.html
@@ -1,6 +1,5 @@
<!--$Id: renumber.so,v 10.26 2003/10/18 19:15:55 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -63,7 +62,7 @@ last record in the database, will implicitly create records 26 and 27
as well as 28. All first, last, next and previous cursor operations
will automatically skip over these implicitly created records. So, if
record number 5 is the only record the application has created,
-implicitly creating records 1 through 4, the <a href="../../api_c/dbc_get.html">DBcursor-&gt;c_get</a> method with the
+implicitly creating records 1 through 4, the <a href="../../api_c/dbc_get.html">DBcursor-&gt;get</a> method with the
<a href="../../api_c/dbc_get.html#DB_FIRST">DB_FIRST</a> flag will return record number 5, not record number 1.
Attempts to explicitly retrieve implicitly created records by their
record number will result in a special error return,
@@ -76,6 +75,6 @@ record by its record number will also result in the <a href="../../ref/program/e
return.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../am_conf/re_source.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../am/ops.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/am_conf/select.html b/db/docs/ref/am_conf/select.html
index fdd87bbfc..163a0b241 100644
--- a/db/docs/ref/am_conf/select.html
+++ b/db/docs/ref/am_conf/select.html
@@ -1,6 +1,5 @@
<!--$Id: select.so,v 10.25 2001/03/31 17:06:27 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -113,6 +112,6 @@ permanent storage is a flat text file and the database is used as a fast,
temporary storage area while the data is being read or modified.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../am_conf/intro.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../am_conf/logrec.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/am_misc/align.html b/db/docs/ref/am_misc/align.html
index 3bc16168e..7120c9dff 100644
--- a/db/docs/ref/am_misc/align.html
+++ b/db/docs/ref/am_misc/align.html
@@ -1,6 +1,5 @@
<!--$Id: align.so,v 1.4 2001/05/28 00:30:40 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -24,6 +23,6 @@ any necessary alignment. The <a href="../../api_c/dbt_class.html#DB_DBT_MALLOC"
store returned items in memory of arbitrary alignment.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../am/curclose.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../am_misc/get_bulk.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/am_misc/dbsizes.html b/db/docs/ref/am_misc/dbsizes.html
index a01c0445f..ff7919c09 100644
--- a/db/docs/ref/am_misc/dbsizes.html
+++ b/db/docs/ref/am_misc/dbsizes.html
@@ -1,6 +1,5 @@
<!--$Id: dbsizes.so,v 10.27 2005/02/24 20:51:50 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -42,6 +41,6 @@ item in memory for logging purposes.</p>
<p>The maximum Btree depth is 255.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../am_misc/stability.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../am_misc/diskspace.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/am_misc/diskspace.html b/db/docs/ref/am_misc/diskspace.html
index 20753f74a..3b15cfe76 100644
--- a/db/docs/ref/am_misc/diskspace.html
+++ b/db/docs/ref/am_misc/diskspace.html
@@ -1,6 +1,5 @@
<!--$Id: diskspace.so,v 10.17 2002/08/09 13:43:47 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -144,6 +143,6 @@ only at specific points in the file, and this too can lead to sparse hash
tables.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../am_misc/dbsizes.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../am_misc/tune.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/am_misc/error.html b/db/docs/ref/am_misc/error.html
index 0b7738705..ae6efbd40 100644
--- a/db/docs/ref/am_misc/error.html
+++ b/db/docs/ref/am_misc/error.html
@@ -1,6 +1,5 @@
<!--$Id: error.so,v 10.22 2003/10/18 19:15:56 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -58,6 +57,6 @@ an EACCESS system error, the error messages shown would appear as follows:</p>
my_app: contact your system administrator: session ID was 14</pre></blockquote>
<table width="100%"><tr><td><br></td><td align=right><a href="../am_misc/perm.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../am_misc/stability.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/am_misc/faq.html b/db/docs/ref/am_misc/faq.html
index 62a409cc6..a255be07a 100644
--- a/db/docs/ref/am_misc/faq.html
+++ b/db/docs/ref/am_misc/faq.html
@@ -1,6 +1,5 @@
<!--$Id: faq.so,v 10.26 2005/10/20 16:10:15 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -116,6 +115,6 @@ data members or methods.</p>
</ol>
<table width="100%"><tr><td><br></td><td align=right><a href="../am_misc/tune.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../java/conf.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/am_misc/get_bulk.html b/db/docs/ref/am_misc/get_bulk.html
index b8720c8e9..48189526c 100644
--- a/db/docs/ref/am_misc/get_bulk.html
+++ b/db/docs/ref/am_misc/get_bulk.html
@@ -1,6 +1,5 @@
<!--$Id: get_bulk.so,v 10.7 2004/09/03 19:47:57 mjc Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -20,14 +19,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-&gt;get</a> or <a href="../../api_c/dbc_get.html">DBcursor-&gt;c_get</a> methods. This is done
+be specified to the <a href="../../api_c/db_get.html">DB-&gt;get</a> or <a href="../../api_c/dbc_get.html">DBcursor-&gt;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_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_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-&gt;get</a> or <a href="../../api_c/dbc_get.html">DBcursor-&gt;c_get</a> methods, which cause multiple records
+the <a href="../../api_c/db_get.html">DB-&gt;get</a> or <a href="../../api_c/dbc_get.html">DBcursor-&gt;get</a> methods, which cause multiple records
to be returned in the specified buffer.</p>
<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 +35,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>
-<p>Once the <a href="../../api_c/db_get.html">DB-&gt;get</a> or <a href="../../api_c/dbc_get.html">DBcursor-&gt;c_get</a> method has returned, the
+<p>Once the <a href="../../api_c/db_get.html">DB-&gt;get</a> or <a href="../../api_c/dbc_get.html">DBcursor-&gt;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>,
@@ -52,13 +51,13 @@ 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>
<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-&gt;get</a> or
-<a href="../../api_c/dbc_get.html">DBcursor-&gt;c_get</a> method, the application will always call the
+<a href="../../api_c/dbc_get.html">DBcursor-&gt;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-&gt;get</a> or <a href="../../api_c/dbc_get.html">DBcursor-&gt;c_get</a> method, and, the
+was specified to the <a href="../../api_c/db_get.html">DB-&gt;get</a> or <a href="../../api_c/dbc_get.html">DBcursor-&gt;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-&gt;get</a> or
-<a href="../../api_c/dbc_get.html">DBcursor-&gt;c_get</a> method, and, the underlying database is a Queue or Recno
+<a href="../../api_c/dbc_get.html">DBcursor-&gt;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
@@ -131,6 +130,6 @@ rec_display(dbp)
}</pre></blockquote>
<table width="100%"><tr><td><br></td><td align=right><a href="../am_misc/align.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../am_misc/partial.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/am_misc/partial.html b/db/docs/ref/am_misc/partial.html
index ed9afb5eb..2e588fa12 100644
--- a/db/docs/ref/am_misc/partial.html
+++ b/db/docs/ref/am_misc/partial.html
@@ -1,6 +1,5 @@
<!--$Id: partial.so,v 10.25 2003/10/18 19:15:56 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -129,6 +128,6 @@ ABCDEFGHIJ0123456789 -&gt; ABCDEFGHIJ0123456789\0\0\0\0\0abcdefghij
</ol>
<table width="100%"><tr><td><br></td><td align=right><a href="../am_misc/get_bulk.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../am_misc/struct.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/am_misc/perm.html b/db/docs/ref/am_misc/perm.html
index 42f1c4c16..166700b5d 100644
--- a/db/docs/ref/am_misc/perm.html
+++ b/db/docs/ref/am_misc/perm.html
@@ -1,6 +1,5 @@
<!--$Id: perm.so,v 1.4 2002/06/20 12:53:58 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -27,11 +26,11 @@ using the returned <a href="../../api_c/db_class.html">DB</a> handle concurrentl
flags must be specified with any non-cursor <a href="../../api_c/dbt_class.html">DBT</a> used for key or
data retrieval.)</p>
<p>When using the cursor Berkeley DB calls to retrieve key/data items under the
-C/C++ APIs (for example, <a href="../../api_c/dbc_get.html">DBcursor-&gt;c_get</a>), the memory to which the
+C/C++ APIs (for example, <a href="../../api_c/dbc_get.html">DBcursor-&gt;get</a>), the memory to which the
pointer stored into the <a href="../../api_c/dbt_class.html">DBT</a> refers is only valid until the next
call to Berkeley DB using the <a href="../../api_c/dbc_class.html">DBC</a> handle returned by <a href="../../api_c/db_cursor.html">DB-&gt;cursor</a>.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../am_misc/struct.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../am_misc/error.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/am_misc/stability.html b/db/docs/ref/am_misc/stability.html
index 26167faf2..800884854 100644
--- a/db/docs/ref/am_misc/stability.html
+++ b/db/docs/ref/am_misc/stability.html
@@ -1,6 +1,5 @@
<!--$Id: stability.so,v 10.30 2005/02/10 20:02:34 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -51,6 +50,6 @@ the scan inserts a new pair into the database, it is possible that
duplicate key/data pairs will be returned.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../am_misc/error.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../am_misc/dbsizes.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/am_misc/struct.html b/db/docs/ref/am_misc/struct.html
index 7b2379e11..ea0eff8ba 100644
--- a/db/docs/ref/am_misc/struct.html
+++ b/db/docs/ref/am_misc/struct.html
@@ -1,6 +1,5 @@
<!--$Id: struct.so,v 10.8 2002/12/22 20:42:09 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -83,6 +82,6 @@ memcpy(&info.buf[0], string, strlen(string) + 1);</pre></blockquote>
without any additional work.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../am_misc/partial.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../am_misc/perm.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/am_misc/tune.html b/db/docs/ref/am_misc/tune.html
index d26c35259..54ac32a63 100644
--- a/db/docs/ref/am_misc/tune.html
+++ b/db/docs/ref/am_misc/tune.html
@@ -1,6 +1,5 @@
<!--$Id: tune.so,v 10.10 2006/08/25 23:25:17 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -117,6 +116,6 @@ of control to to some small multiple of the number of CPUs is usually
the right choice to make.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../am_misc/diskspace.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../am_misc/faq.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/apprec/auto.html b/db/docs/ref/apprec/auto.html
index 9e662b4f1..a2df0b891 100644
--- a/db/docs/ref/apprec/auto.html
+++ b/db/docs/ref/apprec/auto.html
@@ -1,6 +1,5 @@
<!--$Id: auto.so,v 10.4 2006/09/13 16:21:43 sue Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -155,6 +154,6 @@ initialization part of the standalone <a href="../../utility/db_printlog.html">d
so that utility can be used to display application-specific log records.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../apprec/def.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../apprec/config.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/apprec/config.html b/db/docs/ref/apprec/config.html
index 0d67bafc4..24b840750 100644
--- a/db/docs/ref/apprec/config.html
+++ b/db/docs/ref/apprec/config.html
@@ -1,6 +1,5 @@
<!--$Id: config.so,v 10.4 2002/06/05 21:09:14 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -123,6 +122,6 @@ to stable storage before calling the <a href="../../api_c/txn_checkpoint.html">D
to allow the periodic removal of database environment log files.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../apprec/auto.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../program/appsignals.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/apprec/def.html b/db/docs/ref/apprec/def.html
index 63b1d44bf..4d8550398 100644
--- a/db/docs/ref/apprec/def.html
+++ b/db/docs/ref/apprec/def.html
@@ -1,6 +1,5 @@
-<!--$Id: def.so,v 10.5 2006/09/15 20:28:48 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: def.so,v 10.7 2007/04/05 20:37:29 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -43,10 +42,23 @@ INCLUDE #include &lt;db.h&gt;
INCLUDE
INCLUDE #include "ex_apprec.h"</pre></blockquote>
<p>The rest of the XXX.src file consists of log record descriptions. Each
-log record description begins with the line:</p>
+log record description begins with one of the following lines:</p>
<blockquote><pre>BEGIN <i>RECORD_NAME</i> <i>DB_VERSION_NUMBER</i> <i>RECORD_NUMBER</i></pre></blockquote>
+<blockquote><pre>BEGIN_BUF <i>RECORD_NAME</i> <i>DB_VERSION_NUMBER</i></pre></blockquote>
+<blockquote><pre>BEGIN_COMPAT <i>RECORD_NAME</i> <i>DB_VERSION_NUMBER</i> <i>RECORD_NUMBER</i></pre></blockquote>
<p>and ends with the line:</p>
<blockquote><pre>END</pre></blockquote>
+<p>The <i>BEGIN</i> line should be used for most record types.</p>
+<p>The <i>BEGIN_BUF</i> is used for records that need only marshalling and
+unmarshalling of the record, that is logging and reading routines, but not
+a recovery routine. These records are specific to the replication system's
+internal initialization process, which sends variable length records containing
+file data and file description records.</p>
+<p>The <i>BEGIN_COMPAT</i> is used for log record compatibility to facilitate
+online upgrades of replication groups. Records created with this keyword will
+produce reading and printing routines, but no logging routines. The recovery
+routines are retrieved from older releases, so no recovery templates will be
+generated for these records.</p>
<p>The <i>DB_VERSION_NUMBER</i> variable should be replaced with the
current major and minor version of Berkeley DB, with all punctuation removed.
For example, Berkeley DB version 4.2 should be 42, version 4.5 should be 45.</p>
@@ -63,9 +75,17 @@ described in the <a href="../../ref/upgrade/process.html">Upgrading Berkeley DB
installations</a> section on log format changes. The record number space
below 10,000 is reserved for Berkeley DB itself; applications should choose
record number values equal to or greater than 10,000.</p>
-<p>Between the BEGIN and END keywords there should be one line for each
-data item logged as part of this log record. The format of these lines
-is as follows:</p>
+<p>Between the BEGIN and END keywords there should be one optional
+<i>DUPLICATE</i> line and one line for each
+data item logged as part of this log record.</p>
+<p>The <i>DUPLICATE</i> line is of the form:</p>
+<blockquote><pre>DUPLICATE <i>RECORD_NAME</i> <i>DB_VERSION_NUMBER</i> <i>RECORD_NUMBER</i></pre></blockquote>
+<p>The <i>DUPLICATE</i> specifier should be used when creating a record
+that requires its own record number but can use the argument structure,
+reading and printing routines from another record. In this case, we will
+create a new log record type, but use the enclosing log record type for
+the argument structure and the log reading and printing routines.</p>
+<p>The format of lines for each data item logged is as follows:</p>
<blockquote><pre>ARG | DBT | POINTER <i>variable_name</i> <i>variable_type</i> <i>printf_format</i></pre></blockquote>
<p>The keyword ARG indicates that the argument is a simple parameter of
the type specified. For example, a file ID might be logged as:</p>
@@ -94,6 +114,6 @@ file btree/btree.src contains the definitions for the log records
supported by the Berkeley DB Btree access method.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../apprec/intro.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../apprec/auto.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/apprec/intro.html b/db/docs/ref/apprec/intro.html
index aa67aecd2..781aa203a 100644
--- a/db/docs/ref/apprec/intro.html
+++ b/db/docs/ref/apprec/intro.html
@@ -1,10 +1,9 @@
-<!--$Id: intro.so,v 10.52 2005/12/13 16:31:39 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: intro.so,v 10.53 2006/11/13 18:04:59 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
-<title>Berkeley DB Reference Guide: Introduction</title>
+<title>Berkeley DB Reference Guide: Introduction to application specific logging and recovery</title>
<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
</head>
@@ -14,7 +13,7 @@
<td align=right><a href="../xa/faq.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../apprec/def.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
<p>
-<h3 align=center>Introduction</h3>
+<h3 align=center>Introduction to application specific logging and recovery</h3>
<p>It is possible to use the Locking, Logging and Transaction subsystems
of Berkeley DB to provide transaction semantics on objects other than those
described by the Berkeley DB access methods. In these cases, the application
@@ -76,6 +75,6 @@ usable on any system, not just POSIX systems.</p>
in the Berkeley DB distribution, in the directory <b>examples_c/ex_apprec</b>.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../xa/faq.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../apprec/def.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/arch/apis.html b/db/docs/ref/arch/apis.html
index 11892fd80..310d28da6 100644
--- a/db/docs/ref/arch/apis.html
+++ b/db/docs/ref/arch/apis.html
@@ -1,6 +1,5 @@
<!--$Id: apis.so,v 10.29 2003/10/18 19:15:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -72,6 +71,6 @@ the effectiveness of the internal hashing function on the particular
data set. This is not a problem with Berkeley DB.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../arch/progmodel.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../arch/script.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/arch/bigpic.html b/db/docs/ref/arch/bigpic.html
index 506ca2eea..ba187986b 100644
--- a/db/docs/ref/arch/bigpic.html
+++ b/db/docs/ref/arch/bigpic.html
@@ -1,6 +1,5 @@
<!--$Id: bigpic.so,v 8.32 2003/11/27 18:25:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -120,6 +119,6 @@ subsystem, or the access methods subsystem wrapped in calls to the Berkeley DB
transaction interfaces.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../java/faq.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../arch/progmodel.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/arch/progmodel.html b/db/docs/ref/arch/progmodel.html
index 851c8b43d..12a19ab1f 100644
--- a/db/docs/ref/arch/progmodel.html
+++ b/db/docs/ref/arch/progmodel.html
@@ -1,6 +1,5 @@
<!--$Id: progmodel.so,v 10.27 2001/03/01 15:57:54 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -39,6 +38,6 @@ call. Of course, this model also greatly simplifies the creation of
network client-server applications.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../arch/bigpic.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../arch/apis.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/arch/script.html b/db/docs/ref/arch/script.html
index 963ef928a..66bb97b5c 100644
--- a/db/docs/ref/arch/script.html
+++ b/db/docs/ref/arch/script.html
@@ -1,6 +1,5 @@
<!--$Id: script.so,v 10.15 2005/04/18 17:09:45 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -31,6 +30,6 @@ information.</p>
information.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../arch/apis.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../arch/utilities.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/arch/utilities.html b/db/docs/ref/arch/utilities.html
index 63cc06884..2b70980cf 100644
--- a/db/docs/ref/arch/utilities.html
+++ b/db/docs/ref/arch/utilities.html
@@ -1,6 +1,5 @@
<!--$Id: utilities.so,v 10.25 2001/03/05 19:15:07 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -59,6 +58,6 @@ the necessity for multiple processes to negotiate database and database
environment creation and shut down.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../arch/script.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../env/intro.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/build_brew/intro.html b/db/docs/ref/build_brew/intro.html
new file mode 100644
index 000000000..f35b8785f
--- /dev/null
+++ b/db/docs/ref/build_brew/intro.html
@@ -0,0 +1,108 @@
+<!--$Id: intro.so,v 1.7 2007/07/10 16:54:16 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
+<!--See the file LICENSE for redistribution information.-->
+<html>
+<head>
+<title>Berkeley DB Reference Guide: Building for BREW</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
+</head>
+<body bgcolor=white>
+<a name="2"><!--meow--></a>
+<table width="100%"><tr valign=top>
+<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Building Berkeley DB for BREW</dl></h3></td>
+<td align=right><a href="../debug/printlog.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../build_s60/intro.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p>
+<h3 align=center>Building for BREW</h3>
+<p>This page has general instructions for building the Berkeley DB library
+and applets for the BREW platform.</p>
+<h3>Building Berkeley DB for the BREW simulator</h3>
+<p>The <b>build_brew</b> directory in the Berkeley DB distribution contains
+project files for Microsoft Visual C++:</p>
+<table border=1 align=center>
+<tr><th>Project File</th><th>Description</th></tr>
+<tr> <td align=left>bdb_brew.dsw</td> <td align=left>Visual C++ 6.0 workspace</td> </tr>
+<tr> <td align=left>bdb_brew.dsp</td> <td align=left>Visual C++ 6.0 project</td> </tr>
+</table>
+<p>The project file can be used to build the Berkeley DB library for the BREW
+platform. Both BREW SDK versions 2 and 3 are supported. By default, the
+build is for BREW SDK version 2.</p>
+<p>The steps for building the Berkeley DB library for the BREW Simulator are as
+follows:</p>
+<ol>
+<p><li>Install the BREW SDK and BREW SDK Tools.
+<p><li>To build for BREW SDK version 3, edit the Berkeley DB source distribution file
+<b>build_brew/db_config.h</b> file and <b>remove</b> the line
+"#define HAVE_BREW_SDK2". No changes are required to build for BREW SDK
+version 2.
+<p><li>Select <i>File -&gt; Open Workspace</i>. Look in the build_brew
+directory for Workspaces, select <i>bdb_brew.dsw</i>, and select
+<i>Open</i>.
+<p><li>The BREW SDK creates an environment entry "BREWDIR" after the SDK
+installation. Confirm the entry exists, and if not, create an
+environment entry which points to the BREW SDK's root directory.
+<p><li>For the BREW platform, only the project "bdb_brew" is available. Set
+the bdb_brew project as the active project and select the appropriate
+option for the build_all project (Debug or Release). Then select
+<i>OK</i>.
+<p><li>To build, press F7.
+</ol>
+<p>The build results are placed in a subdirectory of build_brew named after
+the selected configuration (for example, <b>build_brew\Release</b> or
+<b>build_brew\Debug</b>).</p>
+<p>When building the application during development, you should normally
+use compile options "Debug Multithreaded DLL" and link against
+<b>build_brew\Debug\bdb_brew.lib</b>. You can also build using a
+release version of the Berkeley DB libraries and tools, which will be placed
+in <b>build_brew\Release\bdb_brew.lib</b>. When linking against the
+release build, you should compile your code with the "Release
+Multithreaded DLL" compile option. You will also need to add the
+<b>build_brew</b> directory to the list of include directories of your
+application's project, or copy the Berkeley DB include files to another
+location.</p>
+<h3>Building a BREW applet with Berkeley DB library</h3>
+<p>Building a Berkeley DB application in the BREW environment is similar to
+building in a Windows environment. Ensure that <b>db.h</b> is in the
+build include path and <b>bdb_brew.lib</b> is in the build library
+path (alternatively, you can add project dependencies to the
+<b>bdb_brew</b> project).</p>
+<p>BREW applets require a few minor additions:</p>
+<ol>
+<p><li>The <b>BDBApp</b> structure must be extended -- the extended
+definition of BDBApp is found in the include file <b>db.h</b>.
+<p><li>Before any Berkeley DB operations are performed, the applet must call the "int
+brew_bdb_begin(void)" function. This function returns 0 on success, and
+non-zero on failure.
+<p><li>After the last Berkeley DB operation is performed, the applet must call the
+"void brew_bdb_end(void)" function. Note that the brew_bdb_end function
+cannot be called in the applet "cleanup" function. If that is a
+requirement, use the following code instead:
+<blockquote><pre>BDBApp *pMe=(BDBApp *)po;
+if (pMe-&gt;db_global_values != NULL)
+ FREE(pMe-&gt;db_global_values);</pre></blockquote>
+</ol>
+<h3>Building a BREW applet for the physical device</h3>
+<p>The binaries linked with the Berkeley DB library for the BREW simulator are
+not target files that can run on the physical device. In order to build
+for the physical device, an ARM compiler is needed: the recommended ARM
+compiler is ARM Developer Suite 1.2.</p>
+<p>The steps for building a BREW applet for the physical device are as
+follows:</p>
+<ol>
+<p><li>Set the target BREW Applet project as the active project.
+<p><li>Select "Generate ARM Make file" in the BREW tool bar for VC6, and a make
+file will be generated (if this step does not work, confirm your ADS was
+correctly installed).
+<p><li>The Berkeley DB library must then be manually added to this make file. See the
+<b>build_brew\bdbread.mak</b> file in the Berkeley DB distribution for an
+example.
+<p><li>Select <i>Tools -&gt; BREW Application 'Make'</i> to build.
+</ol>
+<p>The target .mod file will be created in the build directory, and this
+is the file which should be uploaded to the physical device.</p>
+<table width="100%"><tr><td><br></td><td align=right><a href="../debug/printlog.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../build_s60/intro.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
+</body>
+</html>
diff --git a/db/docs/ref/build_s60/intro.html b/db/docs/ref/build_s60/intro.html
new file mode 100644
index 000000000..4994b492b
--- /dev/null
+++ b/db/docs/ref/build_s60/intro.html
@@ -0,0 +1,68 @@
+<!--$Id: intro.so,v 1.7 2007/07/07 14:34:54 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
+<!--See the file LICENSE for redistribution information.-->
+<html>
+<head>
+<title>Berkeley DB Reference Guide: Building for S60</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
+</head>
+<body bgcolor=white>
+<a name="2"><!--meow--></a>
+<table width="100%"><tr valign=top>
+<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Building Berkeley DB for S60</dl></h3></td>
+<td align=right><a href="../build_brew/intro.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../build_unix/intro.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p>
+<h3 align=center>Building for S60</h3>
+<p>This page has general instructions for building the Berkeley DB library and
+applications for the S60 platform.</p>
+<p>Building Berkeley DB for S60 requires S60 SDK version 3 or above with
+Symbian V9.1 or above; the 3rd Edition FP1 SDK is recommended.</p>
+<p>The NOKIA OpenC plugin should be installed on both emulator and device.</p>
+<p>CodeWarrior IDE for S60 V3.1 is recommended.</p>
+<h3>Building Berkeley DB for the S60 Emulator</h3>
+<p>The <b>build_s60</b> directory in the Berkeley DB distribution contains
+a <b>bdb_s60.mmp</b> project file, which can be imported to
+CodeWarrior or Carbide, etc. This project file can be used to build the
+Berkeley DB library for the S60 platform.</p>
+<p>The steps for building the Berkeley DB library for the S60 emulator are
+as follows:</p>
+<ol>
+<p><li>Install the S60 SDK and OpenC library.
+<p><li>In CodeWarrior, select <i>File -&gt; Import project from .mmp file</i>.
+<p><li>Select an SDK to use with this project: <i>nokia -&gt;S60 S60_3rd_FP1</i>.
+<p><li>Click to browse for MMP file selection. Look in the
+<b>build_s60</b> directory for Workspaces and select
+<i>bdb_s60.mmp</i>.
+<p><li>Click Next.
+<p><li>Click Finish.
+<p><li>Select build target to WINSCW UDEB, to build, press F7.
+</ol>
+<p>The build will create the file <b>bdb_s60.lib</b>, which is
+installed into <b>$EPOCROOT/epoc32/ release/winscw/udeb</b>, which can
+be linked by Berkeley DB applications for the emulator.</p>
+<h3>Building Berkeley DB Library for the Device</h3>
+<ol>
+<p><li>Install the CSL Arm tool chain.
+<p><li>From <b>$EPOCROOT/epoc32/release/armv5/lib</b>, add OpenC library
+libpthread.dso to the GCCE library(libc.dso already added).
+<p><li>Since Berkeley DB uses old-style function definitions, it will not be accepted
+by the default compiler:arm-none-symbianelf-g++.exe. Change the
+compiler to arm-none-symbianelf-gcc.exe and specify the "-x c" option
+there.
+<p><li>Select build target to GCCE UREL, to build, press F7.
+</ol>
+<p>The build will create the file <b>bdb_s60.lib</b>, which is
+installed into <b>$EPOCROOT/epoc32/ release/armv5/urel</b>, which can
+be linked by Berkeley DB applications for device.</p>
+<h3>Building a S60 application with the Berkeley DB library</h3>
+<p>Building a Berkeley DB application in the S60 environment is similar
+to building in a Windows environment. Ensure the include file
+<b>build_s60/db.h</b> is in the build include path and the created
+<b>bdb_s60.lib</b> is in the build library path.</p>
+<table width="100%"><tr><td><br></td><td align=right><a href="../build_brew/intro.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../build_unix/intro.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
+</body>
+</html>
diff --git a/db/docs/ref/build_unix/aix.html b/db/docs/ref/build_unix/aix.html
index 6664d5a7b..7acbde177 100644
--- a/db/docs/ref/build_unix/aix.html
+++ b/db/docs/ref/build_unix/aix.html
@@ -1,6 +1,5 @@
<!--$Id: aix.so,v 11.27 2005/04/06 01:45:22 mjc Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -78,6 +77,6 @@ include the problematical system include files.
</ol>
<table width="100%"><tr><td><br></td><td align=right><a href="../build_unix/notes.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../build_unix/freebsd.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/build_unix/conf.html b/db/docs/ref/build_unix/conf.html
index f744f2b69..b937c5432 100644
--- a/db/docs/ref/build_unix/conf.html
+++ b/db/docs/ref/build_unix/conf.html
@@ -1,6 +1,5 @@
-<!--$Id: conf.so,v 10.63 2006/04/07 21:08:34 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: conf.so,v 10.66 2007/04/05 20:36:38 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -61,11 +60,13 @@ be specified when configuring to build production binaries.
--enable-debug_wop as an argument to configure. This argument should not
be specified when configuring to build production binaries.
<dt><a name="--enable-diagnostic">--enable-diagnostic</a><dd>To build Berkeley DB with run-time debugging checks, enter --enable-diagnostic
-as an argument to configure. This will cause a number of special checks
-to be performed when Berkeley DB is running. Applications built using this
-argument should not share database environments with applications built
-without this argument. This argument should not be specified when
-configuring to build production binaries.
+as an argument to configure. This causes a number of additional checks
+to be performed when Berkeley DB is running, and also causes some failures to
+trigger process abort rather than returning errors to the application.
+Applications built using this argument should not share database
+environments with applications built without this argument. This
+argument should not be specified when configuring to build production
+binaries.
<a name="9"><!--meow--></a>
<dt><a name="--enable-dump185">--enable-dump185</a><dd>To convert Berkeley DB 1.85 (or earlier) databases to this release of Berkeley DB,
enter --enable-dump185 as an argument to configure. This will build the
@@ -87,6 +88,16 @@ location of javac to determine the location of the Java include files
(for example, jni.h). On some systems, additional include directories
may be needed to process jni.h; see <a href="flags.html">Changing compile or
load options</a> for more information.
+<a name="11"><!--meow--></a>
+<dt><a name="--enable-fine_grained_lock_manager">--enable-fine_grained_lock_manager</a><dd>For highly concurrent Berkeley DB applications on multithreaded, multi-core
+architectures (for example, Sun Microsystem's Niagara systems), it may
+be advantageous to configure Berkeley DB for finer-grained locking behavior
+in the lock manager subsystem. To build with Berkeley DB with finer-grained
+locking behavior in the lock manager subsystem, enter
+--enable-fine_grained_lock_manager as an argument to configure. This
+option should not be configured without performance testing to confirm
+the finer-grained locking behavior increases overall throughput, as this
+option will decrease overall throughput for some applications.
<dt><a name="--enable-posixmutexes">--enable-posixmutexes</a><dd>To force Berkeley DB to use the POSIX pthread mutex interfaces for underlying
mutex support, enter --enable-posixmutexes as an argument to configure.
This is rarely necessary: POSIX mutexes will be selected automatically
@@ -119,11 +130,11 @@ processor. The --enable-pthread_api argument requires POSIX pthread
support already be installed on your system.
<p>Specifying the --enable-pthread_api configuration argument may require
that applications and Berkeley DB be linked with the -lpthread library.</p>
-<a name="11"><!--meow--></a>
+<a name="12"><!--meow--></a>
<dt><a name="--enable-rpc">--enable-rpc</a><dd>To build the Berkeley DB RPC client code and server utility, enter --enable-rpc
as an argument to configure. The --enable-rpc argument requires that RPC
support already be installed on your system.
-<a name="12"><!--meow--></a>
+<a name="13"><!--meow--></a>
<dt><a name="--enable-smallbuild">--enable-smallbuild</a><dd>To build a small memory footprint version of the Berkeley DB library, enter
--enable-smallbuild as an argument to configure. The
--enable-smallbuild argument is equivalent to individually specifying
@@ -133,7 +144,7 @@ turning off cryptography support, the Hash and Queue access methods,
database environment replication support and database verification
support. See <a href="../../ref/build_unix/small.html">Building a
small memory footprint library</a> for more information.
-<a name="13"><!--meow--></a>
+<a name="14"><!--meow--></a>
<dt><a name="--enable-tcl">--enable-tcl</a><dd>To build the Berkeley DB Tcl API, enter --enable-tcl as an argument to
configure. This configuration argument expects to find Tcl's tclConfig.sh
file in the <b>/usr/local/lib</b> directory. See the --with-tcl
@@ -142,7 +153,7 @@ Tcl installation. See <a href="../../ref/tcl/intro.html">Loading Berkeley DB
with Tcl</a> for information on sites from which you can download Tcl and
which Tcl versions are compatible with Berkeley DB. To build Tcl, you must
also build with shared libraries.
-<a name="14"><!--meow--></a>
+<a name="15"><!--meow--></a>
<dt><a name="--enable-test">--enable-test</a><dd>To build the Berkeley DB test suite, enter --enable-test as an argument to
configure. To run the Berkeley DB test suite, you must also build the Tcl
API. This argument should not be specified when configuring to build
@@ -187,6 +198,6 @@ multiple versions of Berkeley DB</a> for more information.
</dl>
<table width="100%"><tr><td><br></td><td align=right><a href="../build_unix/intro.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../build_unix/small.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/build_unix/flags.html b/db/docs/ref/build_unix/flags.html
index b44026d91..1a01cffb2 100644
--- a/db/docs/ref/build_unix/flags.html
+++ b/db/docs/ref/build_unix/flags.html
@@ -1,6 +1,5 @@
-<!--$Id: flags.so,v 10.12 2003/11/08 19:17:42 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: flags.so,v 10.13 2006/10/05 01:06:05 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -57,6 +56,6 @@ prompt: ../dist/configure</pre></blockquote>
<p>See your command shell's manual page for further information.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../build_unix/small.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../build_unix/install.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/build_unix/freebsd.html b/db/docs/ref/build_unix/freebsd.html
index e3ef10d4f..991052827 100644
--- a/db/docs/ref/build_unix/freebsd.html
+++ b/db/docs/ref/build_unix/freebsd.html
@@ -1,6 +1,5 @@
<!--$Id: freebsd.so,v 11.18 2003/04/01 17:21:45 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -61,6 +60,6 @@ files should be placed on NFS-mounted filesystems on these systems.</p>
</ol>
<table width="100%"><tr><td><br></td><td align=right><a href="../build_unix/aix.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../build_unix/hpux.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/build_unix/hpux.html b/db/docs/ref/build_unix/hpux.html
index aa6a78cda..387b15e4e 100644
--- a/db/docs/ref/build_unix/hpux.html
+++ b/db/docs/ref/build_unix/hpux.html
@@ -1,6 +1,5 @@
<!--$Id: hpux.so,v 11.17 2004/08/13 03:38:59 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -91,6 +90,6 @@ include the problematical system include files.
</ol>
<table width="100%"><tr><td><br></td><td align=right><a href="../build_unix/freebsd.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../build_unix/irix.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/build_unix/install.html b/db/docs/ref/build_unix/install.html
index 013bed708..448605c0f 100644
--- a/db/docs/ref/build_unix/install.html
+++ b/db/docs/ref/build_unix/install.html
@@ -1,6 +1,5 @@
-<!--$Id: install.so,v 10.17 2003/11/08 19:17:42 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: install.so,v 10.18 2006/10/05 01:06:05 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -61,6 +60,6 @@ the install itself:</p>
directories that do not already exist on the system.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../build_unix/flags.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../build_unix/shlib.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/build_unix/intro.html b/db/docs/ref/build_unix/intro.html
index 86a2f3153..3d47d8cda 100644
--- a/db/docs/ref/build_unix/intro.html
+++ b/db/docs/ref/build_unix/intro.html
@@ -1,6 +1,5 @@
-<!--$Id: intro.so,v 10.31 2006/08/24 16:32:26 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: intro.so,v 10.34 2007/07/06 17:12:01 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -12,7 +11,7 @@
<a name="2"><!--meow--></a><a name="3"><!--meow--></a><a name="4"><!--meow--></a><a name="5"><!--meow--></a>
<table width="100%"><tr valign=top>
<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Building Berkeley DB for UNIX/POSIX systems</dl></h3></td>
-<td align=right><a href="../debug/common.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../build_unix/conf.html"><img src="../../images/next.gif" alt="Next"></a>
+<td align=right><a href="../build_s60/intro.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../build_unix/conf.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
<p>
<h3 align=center>Building for UNIX/POSIX</h3>
@@ -49,8 +48,8 @@ make</pre></blockquote>
<p>To build multiple UNIX versions of Berkeley DB in the same source tree, create
a new directory at the same level as the build_unix directory, and then
configure and build in that directory as described previously.</p>
-<table width="100%"><tr><td><br></td><td align=right><a href="../debug/common.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../build_unix/conf.html"><img src="../../images/next.gif" alt="Next"></a>
+<table width="100%"><tr><td><br></td><td align=right><a href="../build_s60/intro.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../build_unix/conf.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/build_unix/irix.html b/db/docs/ref/build_unix/irix.html
index 7282bf0a8..493197f23 100644
--- a/db/docs/ref/build_unix/irix.html
+++ b/db/docs/ref/build_unix/irix.html
@@ -1,6 +1,5 @@
<!--$Id: irix.so,v 11.6 2003/03/24 13:46:22 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -26,6 +25,6 @@ must compile with the _SGI_MP_SOURCE flag:</p>
</ol>
<table width="100%"><tr><td><br></td><td align=right><a href="../build_unix/hpux.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../build_unix/linux.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/build_unix/linux.html b/db/docs/ref/build_unix/linux.html
index 11bf7e4cc..1991b8cf2 100644
--- a/db/docs/ref/build_unix/linux.html
+++ b/db/docs/ref/build_unix/linux.html
@@ -1,6 +1,5 @@
<!--$Id: linux.so,v 11.19 2004/10/18 20:10:41 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -37,6 +36,6 @@ scheduler for transaction processing workloads.</p>
</ol>
<table width="100%"><tr><td><br></td><td align=right><a href="../build_unix/irix.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../build_unix/macosx.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/build_unix/macosx.html b/db/docs/ref/build_unix/macosx.html
index 75214049f..423551c0e 100644
--- a/db/docs/ref/build_unix/macosx.html
+++ b/db/docs/ref/build_unix/macosx.html
@@ -1,6 +1,5 @@
<!--$Id: macosx.so,v 11.14 2005/10/21 20:16:41 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -61,6 +60,6 @@ kern.sysv.shmseg values as follows:</p>
</ol>
<table width="100%"><tr><td><br></td><td align=right><a href="../build_unix/linux.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../build_unix/osf1.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/build_unix/notes.html b/db/docs/ref/build_unix/notes.html
index fa630f535..8aec70c90 100644
--- a/db/docs/ref/build_unix/notes.html
+++ b/db/docs/ref/build_unix/notes.html
@@ -1,6 +1,5 @@
<!--$Id: notes.so,v 10.54 2005/06/16 17:04:04 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -156,6 +155,6 @@ DB185LIB=-ldb185</pre></blockquote>
</ol>
<table width="100%"><tr><td><br></td><td align=right><a href="../build_unix/test.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../build_unix/aix.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/build_unix/osf1.html b/db/docs/ref/build_unix/osf1.html
index 0be0469d7..400c49b1c 100644
--- a/db/docs/ref/build_unix/osf1.html
+++ b/db/docs/ref/build_unix/osf1.html
@@ -1,6 +1,5 @@
<!--$Id: osf1.so,v 11.11 2004/10/18 20:10:41 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -26,6 +25,6 @@ must compile with the _REENTRANT flag:</p>
</ol>
<table width="100%"><tr><td><br></td><td align=right><a href="../build_unix/macosx.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../build_unix/qnx.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/build_unix/qnx.html b/db/docs/ref/build_unix/qnx.html
index 52376d1d3..4b274a40e 100644
--- a/db/docs/ref/build_unix/qnx.html
+++ b/db/docs/ref/build_unix/qnx.html
@@ -1,6 +1,5 @@
<!--$Id: qnx.so,v 11.11 2005/12/20 15:24:38 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -85,6 +84,6 @@ should be used with caution on QNX.</p>
</ol>
<table width="100%"><tr><td><br></td><td align=right><a href="../build_unix/osf1.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../build_unix/sco.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/build_unix/sco.html b/db/docs/ref/build_unix/sco.html
index 74667aa7f..f4b549ce6 100644
--- a/db/docs/ref/build_unix/sco.html
+++ b/db/docs/ref/build_unix/sco.html
@@ -1,6 +1,5 @@
<!--$Id: sco.so,v 11.9 2003/03/24 13:46:23 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -25,6 +24,6 @@ libraries.</p>
</ol>
<table width="100%"><tr><td><br></td><td align=right><a href="../build_unix/qnx.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../build_unix/solaris.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/build_unix/shlib.html b/db/docs/ref/build_unix/shlib.html
index e93ea235c..8d66c558c 100644
--- a/db/docs/ref/build_unix/shlib.html
+++ b/db/docs/ref/build_unix/shlib.html
@@ -1,6 +1,5 @@
-<!--$Id: shlib.so,v 10.18 2004/12/13 06:34:52 gmf Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: shlib.so,v 10.19 2006/10/05 01:06:05 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -99,6 +98,6 @@ program. On other systems, using libtool has the virtue of knowing about
any other details on systems that don't behave in this typical way.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../build_unix/install.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../build_unix/test.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/build_unix/small.html b/db/docs/ref/build_unix/small.html
index 8b198dc81..4c1ba58d4 100644
--- a/db/docs/ref/build_unix/small.html
+++ b/db/docs/ref/build_unix/small.html
@@ -1,6 +1,5 @@
-<!--$Id: small.so,v 10.9 2006/08/24 16:32:26 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: small.so,v 10.11 2007/06/13 18:56:05 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -34,7 +33,9 @@ enter --disable-replication as an argument to configure.
--disable-verify as an argument to configure.
<dt><a name="--enable-smallbuild">--enable-smallbuild</a><dd>Equivalent to individually specifying --disable-cryptography,
--disable-hash, --disable-queue, --disable-replication,
---disable-statistics and --disable-verify
+--disable-statistics and --disable-verify. In addition, when compiling
+building with the GNU gcc compiler, the --enable-smallbuild option uses
+the -Os compiler build flag instead of the default -O3.
</dl>
<p>The following configuration options will increase the size of the Berkeley DB
library dramatically and are only useful when debugging applications:</p>
@@ -48,16 +49,16 @@ library dramatically and are only useful when debugging applications:</p>
By default Berkeley DB will build both shared and static libraries. To build
only a static library, configure Berkeley DB with the
<a href="../../ref/build_unix/conf.html">--disable-shared</a> option.</p>
-<p>The size of the Berkeley DB library varies a lot depending on the compiler,
-machine architecture, and configuration options. As an estimate,
-production Berkeley DB libraries built with current GNU gcc compilers have
-footprints in the range of 400KB to 790KB on 32-bit x86 architectures,
-and in the range of 490KB to 920KB on 64-bit x86 architectures.</p>
+<p>The size of the Berkeley DB library varies depending on the compiler, machine
+architecture, and configuration options. As an estimate, production
+Berkeley DB libraries built with GNU gcc version 3.X compilers have footprints
+in the range of 400KB to 900KB on 32-bit x86 architectures, and in the
+range of 500KB to 1MB on 64-bit x86 architectures.</p>
<p>For assistance in further reducing the size of the Berkeley DB library, or in
building small memory footprint libraries on other systems, please
contact Berkeley DB support.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../build_unix/conf.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../build_unix/flags.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/build_unix/solaris.html b/db/docs/ref/build_unix/solaris.html
index 1ac5787e8..b82bbce73 100644
--- a/db/docs/ref/build_unix/solaris.html
+++ b/db/docs/ref/build_unix/solaris.html
@@ -1,6 +1,5 @@
-<!--$Id: solaris.so,v 11.25 2003/03/24 13:46:23 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: solaris.so,v 11.26 2007/06/27 14:41:06 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -89,9 +88,8 @@ environment's shared memory regions and can affect Berkeley DB performance.
Workarounds include creating the shared regions in system shared memory
(<a href="../../api_c/env_open.html#DB_SYSTEM_MEM">DB_SYSTEM_MEM</a>) or application private memory
(<a href="../../api_c/env_open.html#DB_PRIVATE">DB_PRIVATE</a>), or, configuring Solaris to not flush memory-mapped
-pages. For more information, see the
-<a href="http://docs.sun.com/db/doc/806-4015/6jd4gh8en?a=view">Solaris Tunable Parameters Reference Manual: fsflush and Related Tunables</a>.
-</p>
+pages. For more information, see the "Solaris Tunable Parameters
+Reference Manual: fsflush and Related Tunables".</p>
<hr size=1 noshade>
<p><li><b>I see errors about "open64" when building Berkeley DB applications.</b>
<p>System include files (most commonly fcntl.h) in some releases of AIX,
@@ -111,6 +109,6 @@ include the problematical system include files.
</ol>
<table width="100%"><tr><td><br></td><td align=right><a href="../build_unix/sco.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../build_unix/sunos.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/build_unix/sunos.html b/db/docs/ref/build_unix/sunos.html
index 2b94c7579..d570fdf81 100644
--- a/db/docs/ref/build_unix/sunos.html
+++ b/db/docs/ref/build_unix/sunos.html
@@ -1,6 +1,5 @@
<!--$Id: sunos.so,v 11.6 2003/03/24 13:46:24 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -26,6 +25,6 @@ versions of SunOS.</p>
</ol>
<table width="100%"><tr><td><br></td><td align=right><a href="../build_unix/solaris.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../build_unix/ultrix.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/build_unix/test.html b/db/docs/ref/build_unix/test.html
index 1e1ca11e5..71c1794d8 100644
--- a/db/docs/ref/build_unix/test.html
+++ b/db/docs/ref/build_unix/test.html
@@ -1,6 +1,5 @@
<!--$Id: test.so,v 10.32 2003/11/08 19:17:43 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -51,6 +50,6 @@ command:</p>
information.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../build_unix/shlib.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../build_unix/notes.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/build_unix/ultrix.html b/db/docs/ref/build_unix/ultrix.html
index 74416bb53..96c662e8c 100644
--- a/db/docs/ref/build_unix/ultrix.html
+++ b/db/docs/ref/build_unix/ultrix.html
@@ -1,6 +1,5 @@
<!--$Id: ultrix.so,v 11.6 2003/03/24 13:46:24 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -23,6 +22,6 @@ they exist, because they are known to not work correctly.</p>
</ol>
<table width="100%"><tr><td><br></td><td align=right><a href="../build_unix/sunos.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../build_win/intro.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/build_vxworks/faq.html b/db/docs/ref/build_vxworks/faq.html
index af310f878..136014a0b 100644
--- a/db/docs/ref/build_vxworks/faq.html
+++ b/db/docs/ref/build_vxworks/faq.html
@@ -1,6 +1,5 @@
<!--$Id: faq.so,v 1.30 2004/08/17 13:45:35 sue Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -135,6 +134,6 @@ may leak their underlying system resources. Therefore, the
</ol>
<table width="100%"><tr><td><br></td><td align=right><a href="../build_vxworks/notes.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade/version.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/build_vxworks/intro.html b/db/docs/ref/build_vxworks/intro.html
index 14605a59c..61ab5a81a 100644
--- a/db/docs/ref/build_vxworks/intro.html
+++ b/db/docs/ref/build_vxworks/intro.html
@@ -1,10 +1,9 @@
-<!--$Id: intro.so,v 1.24 2004/10/08 17:16:54 sue Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: intro.so,v 1.26 2007/05/30 08:39:07 alexg Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
-<title>Berkeley DB Reference Guide: Building for VxWorks</title>
+<title>Berkeley DB Reference Guide: Building for VxWorks 5.4 and 5.5</title>
<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
</head>
@@ -12,10 +11,10 @@
<a name="2"><!--meow--></a>
<table width="100%"><tr valign=top>
<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Building Berkeley DB for VxWorks systems</dl></h3></td>
-<td align=right><a href="../build_win/faq.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../build_vxworks/notes.html"><img src="../../images/next.gif" alt="Next"></a>
+<td align=right><a href="../build_wince/faq.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../build_vxworks/notes.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
<p>
-<h3 align=center>Building for VxWorks</h3>
+<h3 align=center>Building for VxWorks 5.4 and 5.5</h3>
<p>The build_vxworks directory in the Berkeley DB distribution contains a workspace
and project files for Tornado 2.0/VxWorks 5.4 and Tornado 2.2/VxWorks 5.5.</p>
<table border=1 align=center>
@@ -96,8 +95,8 @@ depending on which version of Tornado you are running.
You need to repeat this procedure for all builds you are interested in
building, as well as for all of the utility project builds you want to
run.</p>
-<table width="100%"><tr><td><br></td><td align=right><a href="../build_win/faq.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../build_vxworks/notes.html"><img src="../../images/next.gif" alt="Next"></a>
+<table width="100%"><tr><td><br></td><td align=right><a href="../build_wince/faq.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../build_vxworks/notes.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/build_vxworks/introae.html b/db/docs/ref/build_vxworks/introae.html
index 079738ca1..87ff71bdd 100644
--- a/db/docs/ref/build_vxworks/introae.html
+++ b/db/docs/ref/build_vxworks/introae.html
@@ -1,6 +1,5 @@
<!--$Id: introae.so,v 1.8 2002/10/01 19:38:33 sue Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -129,6 +128,6 @@ building, as well as for all of the utility project builds you want to
run.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../build_vxworks/intro.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../build_vxworks/notes.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/build_vxworks/notes.html b/db/docs/ref/build_vxworks/notes.html
index fd925b7a0..0e6037186 100644
--- a/db/docs/ref/build_vxworks/notes.html
+++ b/db/docs/ref/build_vxworks/notes.html
@@ -1,6 +1,5 @@
<!--$Id: notes.so,v 1.20 2004/10/08 17:16:54 sue Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -64,6 +63,6 @@ footprint, you should move <b>db_config.h</b> aside and copy
the appropriate small workspace file via Tornado and build as usual.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../build_vxworks/intro.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../build_vxworks/faq.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/build_win/faq.html b/db/docs/ref/build_win/faq.html
index 76a7ff866..cf9c59e7f 100644
--- a/db/docs/ref/build_win/faq.html
+++ b/db/docs/ref/build_win/faq.html
@@ -1,6 +1,5 @@
-<!--$Id: faq.so,v 10.36 2006/04/24 14:21:33 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: faq.so,v 10.37 2007/05/30 08:39:08 alexg Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -12,7 +11,7 @@
<a name="2"><!--meow--></a><a name="3"><!--meow--></a>
<table width="100%"><tr valign=top>
<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Building Berkeley DB for Windows systems</dl></h3></td>
-<td align=right><a href="../build_win/notes.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../build_vxworks/intro.html"><img src="../../images/next.gif" alt="Next"></a>
+<td align=right><a href="../build_win/notes.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../build_wince/intro.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
<p>
<h3 align=center>Windows FAQ</h3>
@@ -29,14 +28,14 @@ click on db_load -&gt; Properties and change "Configuration Type" from
fprintf (or some other standard C library function).</b>
<p>You should be using the "Debug Multithreaded DLL" compiler option in
your application when you link with the
-build_windows\Debug\libdb45d.lib library (this .lib file
-is actually a stub for libdb45d.DLL). To check this
+build_windows\Debug\libdb46d.lib library (this .lib file
+is actually a stub for libdb46d.DLL). To check this
setting in Visual C++, choose the <i>Project/Settings</i> menu
item and select <i>Code Generation</i> under the tab marked
<i>C/C++</i>; and see the box marked <i>Use runtime
library</i>. This should be set to <i>Debug Multithreaded DLL</i>.
If your application is linked against the static library,
-build_windows\Debug\libdb45sd.lib; then, you will want
+build_windows\Debug\libdb46sd.lib; then, you will want
to set <i>Use runtime library</i> to <i>Debug Multithreaded</i>.</p>
<p>Setting this option incorrectly can cause multiple versions of the
standard libraries to be linked into your application (one on behalf
@@ -59,8 +58,8 @@ configuration script. This configuration option currently only builds
static versions of the library, it does not yet build a DLL version of
the library.</p>
</ol>
-<table width="100%"><tr><td><br></td><td align=right><a href="../build_win/notes.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../build_vxworks/intro.html"><img src="../../images/next.gif" alt="Next"></a>
+<table width="100%"><tr><td><br></td><td align=right><a href="../build_win/notes.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../build_wince/intro.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/build_win/intro.html b/db/docs/ref/build_win/intro.html
index 8a85c2038..85a59f0cd 100644
--- a/db/docs/ref/build_win/intro.html
+++ b/db/docs/ref/build_win/intro.html
@@ -1,6 +1,5 @@
<!--$Id: intro.so,v 10.79 2006/01/27 20:01:45 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -71,10 +70,10 @@ examples, <b>build_windows\Release</b> or
<b>build_windows\Debug</b>).</p>
<p>When building your application during development, you should normally
use compile options "Debug Multithreaded DLL" and link against
-<b>build_windows\Debug\libdb45d.lib</b>. You can
+<b>build_windows\Debug\libdb46d.lib</b>. You can
also build using a release version of the Berkeley DB libraries and tools,
which will be placed in
-<b>build_windows\Release\libdb45.lib</b>. When
+<b>build_windows\Release\libdb46.lib</b>. When
linking against the release build, you should compile your code with
the "Release Multithreaded DLL" compile option. You will also need to
add the <b>build_windows</b> directory to the list of include
@@ -183,7 +182,7 @@ javac.
either the Debug or Release version of the db_java project. Then
press OK.
<p><li>To build, select <i>Build -&gt; Build
-libdb_java45.dll</i>. This builds the Java support
+libdb_java46.dll</i>. This builds the Java support
library for Berkeley DB and compiles all the java files, placing the
resulting <b>db.jar</b> and <b>dbexamples.jar</b> files in the
<b>build_windows\Release</b> or <b>build_windows\Debug</b>
@@ -233,8 +232,8 @@ library is named in your distribution).
tool bar.
<p><li>To build, right-click on db_tcl and select Build. This builds the Tcl
support library for Berkeley DB, placing the result into
-<b>build_windows\Debug\libdb_tcl45d.dll</b> or
-<b>build_windows\Release\libdb_tcl45.dll</b>.
+<b>build_windows\Debug\libdb_tcl46d.dll</b> or
+<b>build_windows\Release\libdb_tcl46.dll</b>.
</ol>
<p>If you use a version different from Tcl 8.4.x you will
need to change the name of the Tcl library used in the build (for
@@ -261,10 +260,10 @@ whatever the library is named in your distribution).
either the Debug or Release version of the db_tcl project. Then press
OK.
<p><li>To build, select <i>Build -&gt; Build
-libdb_tcl45.dll</i>. This builds the Tcl support
+libdb_tcl46.dll</i>. This builds the Tcl support
library for Berkeley DB, placing the result into
-<b>build_windows\Debug\libdb_tcl45d.dll</b> or
-<b>build_windows\Release\libdb_tcl45.dll</b>.
+<b>build_windows\Debug\libdb_tcl46d.dll</b> or
+<b>build_windows\Release\libdb_tcl46.dll</b>.
</ol>
<p>If you use a version different from Tcl 8.4.x you will
need to change the name of the Tcl library used in the build (for
@@ -290,6 +289,6 @@ environment variable. Check your compiler's license and documentation
for specifics on redistributing runtime DLLs.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../build_unix/ultrix.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../build_win/small.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/build_win/notes.html b/db/docs/ref/build_win/notes.html
index c85912fa1..6cc568789 100644
--- a/db/docs/ref/build_win/notes.html
+++ b/db/docs/ref/build_win/notes.html
@@ -1,6 +1,5 @@
<!--$Id: notes.so,v 10.32 2006/09/15 18:54:47 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -70,6 +69,6 @@ applying to all users.</p>
</ol>
<table width="100%"><tr><td><br></td><td align=right><a href="../build_win/test.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../build_win/faq.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/build_win/small.html b/db/docs/ref/build_win/small.html
index f5de75f7d..88e2d349c 100644
--- a/db/docs/ref/build_win/small.html
+++ b/db/docs/ref/build_win/small.html
@@ -1,6 +1,5 @@
<!--$Id: small.so,v 10.5 2006/08/24 16:32:27 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -35,13 +34,13 @@ to <i>Projects (.dsp)</i> and open <i>db_small.dsp</i>.</p>
<p>The project supports two configurations - <i>Release</i> and
<i>Debug</i>. During a build (F7), static libraries are created in
<b>Release</b> or <b>Debug</b>, respectively. The library name is
-<b>libdb_small45sd.lib</b> for the debug build, or
-<b>libdb_small45s.lib</b> for the release build.</p>
+<b>libdb_small46sd.lib</b> for the debug build, or
+<b>libdb_small46s.lib</b> for the release build.</p>
<p>For assistance in further reducing the size of the Berkeley DB library, or in
building small memory footprint libraries on other systems, please
contact Berkeley DB support.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../build_win/intro.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../build_win/test.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/build_win/test.html b/db/docs/ref/build_win/test.html
index 85ba894e2..49695629e 100644
--- a/db/docs/ref/build_win/test.html
+++ b/db/docs/ref/build_win/test.html
@@ -1,6 +1,5 @@
<!--$Id: test.so,v 10.45 2005/12/01 03:18:51 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -72,6 +71,6 @@ the Tcl shell for your system.
information.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../build_win/small.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../build_win/notes.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/build_win/unicode.html b/db/docs/ref/build_win/unicode.html
deleted file mode 100644
index ed6eca30b..000000000
--- a/db/docs/ref/build_win/unicode.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!--$Id: unicode.so,v 10.1 2004/10/05 18:00:00 bostic Exp $-->
-<!--Copyright 1997-2004 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB Reference Guide: Unicode support</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Building Berkeley DB for Windows systems</dl></h3></td>
-<td align=right><a href="../build_win/intro.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../build_win/small.html"><img src="../../images/next.gif" alt="Next"></a>
-</td></tr></table>
-<p>
-<h3 align=center>Unicode support</h3>
-<p>Unicode support requires a separate configuration step on Windows.
-To enable Unicode support, perform the following steps:</p>
-<ol>
-<p><li>Right click on the "db_dll" project and choose Settings... (Visual
-Studio .NET: Properties), then C/C++. The "Preprocessor definitions"
-should read:
-<blockquote><pre>DB_CREATE_DLL,...</pre></blockquote>
-<p>Change it to read:</p>
-<blockquote><pre>UNICODE,_UNICODE,DB_CREATE_DLL,...</pre></blockquote>
-<p>You will have to do this twice: once for the debug build and once for
-the release build. If you also require static libraries, repeat for the
-"db_static" project (there the first symbol is "CONFIG_TEST" for the
-Debug Static build and "WIN32" for the Release Static build).</p>
-<p><li>Select "Rebuild All" from the Build menu.
-</ol>
-<p>To build binaries that can also run on Windows 9x or ME, follow the
-instructions at <a href="http://microsoft.com/msdownload/platformsdk/sdkupdate/psdkredist.htm">Microsoft's web site</a>.</p>
-<table width="100%"><tr><td><br></td><td align=right><a href="../build_win/intro.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../build_win/small.html"><img src="../../images/next.gif" alt="Next"></a>
-</td></tr></table>
-<p><font size=1><a href="../../sleepycat/legal.html">Copyright (c) 1996-2004</a> <a href="http://www.sleepycat.com">Sleepycat Software, Inc.</a> - All rights reserved.</font>
-</body>
-</html>
diff --git a/db/docs/ref/build_wince/faq.html b/db/docs/ref/build_wince/faq.html
new file mode 100644
index 000000000..0c6449e73
--- /dev/null
+++ b/db/docs/ref/build_wince/faq.html
@@ -0,0 +1,28 @@
+<!--$Id: faq.so,v 1.2 2007/06/04 14:55:40 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
+<!--See the file LICENSE for redistribution information.-->
+<html>
+<head>
+<title>Berkeley DB Reference Guide: Windows CE FAQ</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
+</head>
+<body bgcolor=white>
+<a name="2"><!--meow--></a><a name="3"><!--meow--></a>
+<table width="100%"><tr valign=top>
+<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Building Berkeley DB for Windows CE systems</dl></h3></td>
+<td align=right><a href="../build_wince/notes.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../build_vxworks/intro.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p>
+<h3 align=center>Windows CE FAQ</h3>
+<ol>
+<p><li><b>Why can't I use the Berkeley_DB workspace in Visual Studio 2005?</b>
+<p>The automatic workspace upgrade tool included with Visual Studio 2005
+is not compatible with the eMbedded Visual Studio 4.0 project files
+distributed with Berkeley DB.</p>
+</ol>
+<table width="100%"><tr><td><br></td><td align=right><a href="../build_wince/notes.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../build_vxworks/intro.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
+</body>
+</html>
diff --git a/db/docs/ref/build_wince/intro.html b/db/docs/ref/build_wince/intro.html
new file mode 100644
index 000000000..63a672e91
--- /dev/null
+++ b/db/docs/ref/build_wince/intro.html
@@ -0,0 +1,84 @@
+<!--$Id: intro.so,v 1.2 2007/06/04 14:55:40 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
+<!--See the file LICENSE for redistribution information.-->
+<html>
+<head>
+<title>Berkeley DB Reference Guide: Building for Windows CE</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
+</head>
+<body bgcolor=white>
+<a name="2"><!--meow--></a>
+<table width="100%"><tr valign=top>
+<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Building Berkeley DB for Windows CE systems</dl></h3></td>
+<td align=right><a href="../build_win/faq.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../build_wince/notes.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p>
+<h3 align=center>Building for Windows CE</h3>
+<p>This page contains general instructions on building Berkeley DB for
+Windows CE platforms using specific compilers. The
+<a href="../../ref/build_wince/faq.html">Windows CE FAQ</a> also
+contains helpful information.</p>
+<p>The <b>build_wince</b> directory in the Berkeley DB distribution contains
+project files for Microsoft eMbedded Visual C++:</p>
+<table border=1 align=center>
+<tr><th>Project File</th><th>Description</th></tr>
+<tr> <td align=center>Berkeley_DB.vcw</td> <td align=center>eMbedded Visual C++ 4.0 workspace</td> </tr>
+<tr> <td align=center>*.vcp</td> <td align=center>eMbedded Visual C++ 4.0 projects</td> </tr>
+</table>
+<p>These project files can be used to build Berkeley DB for the Windows CE platform.</p>
+<h3>Building Berkeley DB for Windows CE</h3>
+<h4>eMbedded Visual C++ 4.0</h4>
+<ol>
+<p><li>Choose <i>File -&gt; Open Workspace...</i>.
+Navigate to the <b>build_wince</b> directory, select <b>Berkeley_DB</b>
+and click Open.
+<p><li>Choose the project configuration from the
+<i>Build -&gt; Set Active Configuration...</i> drop-down menu on the
+tool bar. The correct target will usually db_small - Win32 (WCE emulator)
+Debug or Release.
+<p><li>To build, press F7, or select <i>Build</i> from the drop-down menu on the tool bar.
+</ol>
+<h4>Build results</h4>
+<p>The results of your build will be placed in a subdirectory of
+<b>build_windows</b> named after the configuration you chose (for
+examples, <b>build_wince\Release</b> or
+<b>build_wince\Debug</b>).</p>
+<p>When building your application during development, you should normally
+link against
+<b>build_wince\Debug\libdb_small46sd.lib</b>. You can
+also build using a release version of the Berkeley DB libraries and tools,
+which will be placed in
+<b>build_windows\Release\libdb_small46s.lib</b>.
+You will also need to add the <b>build_wince</b> directory to the list
+of include directories of your application's project, or copy the Berkeley DB
+include files to a location in your Visual Studio include path.</p>
+<h3>Building Berkeley DB for different target CPU architectures</h3>
+<p>There are many possible target CPU architectures for a Windows CE
+application. This section outlines the process required to add a new
+target architecture to the project files supplied with Berkeley DB.</p>
+<h4>eMbedded Visual C++ 4.0</h4>
+<ol>
+<p><li>Choose <i>File -&gt; Open Workspace...</i>.
+Navigate to the <b>build_wince</b> directory, select <b>Berkeley_DB</b>
+and click Open.
+<p><li>Choose the <i>Build -&gt; Configurations...</i> menu item.
+<p><li>Click the <i>Add...</i> button.
+<p><li>Select the desired CPU architecture from the first dropdown box. Select an
+existing target to copy the settings from (The corresponding emulator
+target is a good choice). Configuration should be either Debug or Release.
+Click <i>OK</i>.
+<p><li>Choose the <i>Build -&gt; Set Active Configuration...</i> menu
+item. Choose the new target then click OK.
+<p><li>Select the <i>Project -&gt; Settings...</i> menu item. Under
+the C/C++ tab, select the Preprocessor <i>Category</i>. In the
+<i>Additional include directories:</i> field add: ".,.."
+without the quotes. Click OK.
+<p><li>Build as per the instructions in <i>Building Berkeley DB for Windows
+CE</i> above.
+</ol>
+<table width="100%"><tr><td><br></td><td align=right><a href="../build_win/faq.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../build_wince/notes.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
+</body>
+</html>
diff --git a/db/docs/ref/build_wince/notes.html b/db/docs/ref/build_wince/notes.html
new file mode 100644
index 000000000..2a7f4185c
--- /dev/null
+++ b/db/docs/ref/build_wince/notes.html
@@ -0,0 +1,34 @@
+<!--$Id: notes.so,v 1.2 2007/06/04 14:55:40 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
+<!--See the file LICENSE for redistribution information.-->
+<html>
+<head>
+<title>Berkeley DB Reference Guide: Windows CE notes</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
+</head>
+<body bgcolor=white>
+<a name="2"><!--meow--></a>
+<table width="100%"><tr valign=top>
+<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Building Berkeley DB for Windows CE systems</dl></h3></td>
+<td align=right><a href="../build_wince/intro.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../build_wince/faq.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p>
+<h3 align=center>Windows CE notes</h3>
+<ol>
+<p><li>The C++ API is not supported on Windows CE. The file stream and
+exception handling functionality provided by the Berkeley DB C++ API are not
+supported by Windows CE. It is possible to build a C++ application
+against the Berkeley DB C API.
+<p><li>We do not currently ship workspace/project files for Windows CE that are
+compatible with Visual Studio 2005.
+You should be able to manually create project files by duplicating the
+structure in the eMbedded Visual C++ 4.0 projects.
+<p><li>The Java API is not currently supported on Windows CE.
+<p><li>Tcl support is not currently supported on Windows CE.
+</ol>
+<table width="100%"><tr><td><br></td><td align=right><a href="../build_wince/intro.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../build_wince/faq.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
+</body>
+</html>
diff --git a/db/docs/ref/cam/app.html b/db/docs/ref/cam/app.html
index c74b3643a..c2a242023 100644
--- a/db/docs/ref/cam/app.html
+++ b/db/docs/ref/cam/app.html
@@ -1,6 +1,5 @@
<!--$Id: app.so,v 10.9 2005/12/01 03:18:51 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -214,6 +213,6 @@ control, it is important the watcher process' code be as simple and
well-tested as possible, because the application may hang if it fails.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../cam/fail.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../transapp/intro.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/cam/fail.html b/db/docs/ref/cam/fail.html
index 8e8f9f261..e231ade44 100644
--- a/db/docs/ref/cam/fail.html
+++ b/db/docs/ref/cam/fail.html
@@ -1,6 +1,5 @@
<!--$Id: fail.so,v 10.2 2005/10/19 21:10:31 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -79,6 +78,6 @@ the application can continue. If <a href="../../api_c/env_failchk.html">DB_ENV-
the case of system failure.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../cam/intro.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../cam/app.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/cam/intro.html b/db/docs/ref/cam/intro.html
index cc24932cd..1de94bdb5 100644
--- a/db/docs/ref/cam/intro.html
+++ b/db/docs/ref/cam/intro.html
@@ -1,10 +1,9 @@
-<!--$Id: intro.so,v 10.32 2006/08/24 17:47:28 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: intro.so,v 10.33 2006/11/13 18:05:00 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
-<title>Berkeley DB Reference Guide: Berkeley DB Concurrent Data Store applications</title>
+<title>Berkeley DB Reference Guide: Concurrent Data Store introduction</title>
<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
</head>
@@ -15,7 +14,7 @@
<td align=right><a href="../env/faq.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../cam/fail.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
<p>
-<h3 align=center>Berkeley DB Concurrent Data Store applications</h3>
+<h3 align=center>Concurrent Data Store introduction</h3>
<p>It is often desirable to have concurrent read-write access to a database
when there is no need for full recoverability or transaction semantics.
For this class of applications, Berkeley DB provides interfaces supporting
@@ -116,6 +115,6 @@ abort or recovery facilities, and have no impact on durability of
operations.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../env/faq.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../cam/fail.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/changelog/2.1.html b/db/docs/ref/changelog/2.1.html
new file mode 100644
index 000000000..124ecaed6
--- /dev/null
+++ b/db/docs/ref/changelog/2.1.html
@@ -0,0 +1,84 @@
+<!--"$Id: 2.1.html,v 1.4 2007/05/17 18:17:17 bostic Exp $ (Sleepycat) $Date: 2007/05/17 18:17:17 $"-->
+<html>
+<head>
+<title>The Berkeley DB Package: Interface Changes introduced in DB 2.1.0</title>
+<meta name="description" content="DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Interface Changes introduced in DB 2.1.0:</h3>
+
+<ol>
+<li>
+We have added a compatibility API for DB 1.85. We had not intended to
+do this, however, versions of the GNU gcc compiler in beta release
+trigger problems in DB 1.85 (and in previous releases of DB 2.0.N),
+causing them to drop core. As we're unwilling to do further work on
+DB 1.85, we're adding in a compatibility mode to the current DB package
+instead.
+<p>
+The DB 1.85 compatibility API is optional (so folks using both DB
+1.85 and DB 2.N in a single library aren't surprised). To include it
+in the DB library, use the configuration option --enable-compat185.
+For consistency, the configuration option --enable-build185, previously
+found in DB 2.N releases, has been renamed to be --enable-dump185.
+See the file build.unix/README in the DB distribution for further
+information.
+<p>
+We have also made other changes in the DB 2.1.0 release so that
+historic DB 1.85 applications will generally perform better using
+the current release than they do using the historic release.
+<p>
+Please note that the underlying databases MUST still be converted
+from the historic format to the current format.
+<p><li>
+We have changed the default behavior of db_appinit(3) so that it
+does NOT create the underlying shared memory regions by default.
+If the calling application wants to create these regions, it must
+now specify the DB_CREATE flag when calling db_appinit(3).
+<p><li>
+Specifying transactions to the db_appinit(3) function now implies
+logging, that is, DB_INIT_TXN now implies DB_INIT_LOG.
+<p><li>
+We have changed the memp_stat(3) interface. It previously took a
+pointer to a memory pool (DB_MPOOL *) and a file pointer (FILE *)
+and wrote memory pool statistics to the specified file pointer.
+The new version is:
+<p>
+<blockquote>
+memp_stat(DB_MPOOL *, DB_MPOOL_STAT **, DB_MPOOL_FSTAT ***);
+</blockquote>
+<p>
+and it returns memory pool statistics to the calling application,
+in two new structures. See the manual page db_mpool(3) in the DB
+distribution for more information. We expect to add similar
+statistical functions to the other DB subsystems in future releases.
+<p>
+There is also a new utility, db_stat(1). This utility presents the
+statistics in human-readable form.
+<p><li>
+We have added new functionality to the mpool interface. There's a new
+field, mp_mmapsize, in the DB_ENV structure, and a new flag to the
+memp_fopen(3) structure (DB_NOMMAP). These features provide a finer
+level of control over which files will be mapped into the process
+address space. See the manual page db_mpool(3) in the DB distribution
+for more information.
+<p><li>
+Page-in and page-out functions specified for buffer pools must now
+return an errno value on failure and 0 on success, instead of the
+previous interface, which was non-zero on failure and 0 on success,
+setting errno. See the manual page db_mpool(3) in the DB distribution
+for more information.
+<p><li>
+There are a couple of major performance improvements in the new DB
+release for small, non-persistent buffer pools, for example,
+applications using the traditional DB 1.85 interface or applications
+creating small, temporary databases. First, the shared memory regions
+are no longer fully populated on startup. Second, the backing file used
+for temporary buffer pools is no longer created until it is actually
+needed. These changes should cause no visible change for applications.
+
+</ol>
+</body>
+</html>
diff --git a/db/docs/ref/changelog/2.2.html b/db/docs/ref/changelog/2.2.html
new file mode 100644
index 000000000..3403cb1d7
--- /dev/null
+++ b/db/docs/ref/changelog/2.2.html
@@ -0,0 +1,348 @@
+<!--"$Id: 2.2.html,v 1.4 2007/05/17 18:17:17 bostic Exp $ (Sleepycat) $Date: 2007/05/17 18:17:17 $"-->
+<html>
+<head>
+<title>The Berkeley DB Package: Interface Changes introduced in DB 2.2.0</title>
+<meta name="description" content="DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Interface Changes introduced in DB 2.2.0:</h3>
+
+<ol>
+
+<li>
+In DB 2.2.0, the handles returned by the DB subsystems, for example, the
+db_appinit() function's DB_ENV, and the db_open() function's DB, are
+free-threaded. If you specify the DB_THREAD flag to each subsystem, or
+globally using db_appinit(), you can then use the returned handle
+concurrently in any number of threads.
+
+<p>
+There are some important caveats for using DB handles concurrently in
+multiple threads:
+
+<p><ol type=a>
+<li>
+The DB_THREAD flag must be specified for all subsystems either explicitly
+by calling the subsystems open() function, or via the db_appinit()
+function. Setting the DB_THREAD flag inconsistently may result in
+database corruption.
+
+<p><li>
+Spinlocks must have be implemented for the compiler/architecture
+combination. Attempting to specify the DB_THREAD flag will fail with an
+EINVAL error if spinlocks are not available.
+
+<p><li>
+Only a single thread may call the close function for a returned database
+or subsystem handle. See
+db_open(3)
+and the appropriate subsystem manual pages for more information.
+
+<p><li>
+Either the DB_DBT_MALLOC or DB_DBT_USERMEM flags must be set in a DBT used
+for key or data retrieval. See
+db_open(3)
+for more information.
+
+<p><li>
+The DB_CURRENT, DB_NEXT and DB_PREV flags to the log_get() function may
+not be used by a free-threaded handle. If such calls are necessary, a
+thread should explicitly create a unique DB_LOG handle by calling log_open().
+See
+db_log(3)
+for more information.
+
+<p><li>
+Each database operation (that is, any call to a function underlying the
+handles returned by db_open() and db_cursor()) is normally performed on
+behalf of a locker associated with the handle. If, within a single
+thread of control, multiple calls on behalf of the same locker are
+desired, then transactions must be used. See db(3) for more
+information.
+
+<p><li>
+Transactions may not span threads, that is, each transaction must begin
+and end in the same thread, and each transaction may only be used by a
+single thread.
+
+</ol>
+
+<p>
+See
+db(3)
+and
+db_appinit(3)
+for more information on using DB in the context of threads.
+
+<p><li>
+We've added spinlock support for OSF/1, HP, Solaris and UTS4, in all cases
+for the native compiler/architecture combination. In the case of Solaris,
+this means that all DB applications must be loaded using the <b>-lthread</b>
+library.
+
+<p><li>
+We've added a C++ API for DB.
+<font color=red>
+There are not yet any manual pages for the C++ API, and the interface is
+going to change!
+</font>
+Please feel free to browse and send us comments, but please remember
+that the C++ interface is going to be different in the next release.
+<p>
+The C++ files and directories in the source distribution are:
+<p>
+<table border>
+<tr>
+<td>db/cxx/</td>
+<td>C++ API</td>
+</tr><tr>
+<td>db/examples_cxx/</td>
+<td>The example programs recoded in C++.</td>
+</tr><tr>
+<td>db/include/cxx_int.h</td>
+<td>Internal C++ include file.</td>
+</tr><tr>
+<td>db/include/db_cxx.h</td>
+<td>External C++ include file.</td>
+</tr>
+</table>
+<p>
+C++ support is automatically built on Win32. To configure it under UNIX,
+specify <b>--enable-cxx</b> as a configuration argument (see the file
+<b>db/build.unix/README</b> for more information).
+
+<p><li>
+The functionality previously embodied in some of the support utilities
+(db_archive(1),
+db_checkpoint(1),
+db_deadlock(1),
+and
+db_recover(1))
+is now available through the DB API as well.
+<p>
+<table border>
+<tr>
+<td><h3>Utility</h3></td>
+<td><h3>Underlying API support:</h3></td>
+</tr>
+<tr>
+<td>db_archive(1)</td>
+<td>Log archival. See the log_archive() function in
+db_log(3)
+</td>
+</tr><tr>
+<td>db_checkpoint(1)</td>
+<td>Transaction checkpoint. See the txn_checkpoint() function in
+db_txn(3).
+</td>
+</tr><tr>
+<td>db_deadlock(1)</td>
+<td>Deadlock detection. See the lock_detect() function in
+db_lock(3).
+</td>
+</tr><tr>
+<td>db_recover(1)</td>
+<td>Database recovery. See the DB_RECOVER and DB_RECOVER_FATAL flags for
+the db_appinit() function in
+db_appinit(3).
+</td>
+</tr>
+</table>
+
+<p><li>
+We've added a new default hashing function, __ham_func5(), written by
+Glenn Fowler, Landon Curt Noll and Phong Vo, and integrated into DB by
+Ariel Faigon of SGI. We've also deleted the previous supplied function
+__ham_func1().
+<p>
+<font color=red>
+This change is NOT transparent to applications.
+</font>
+We incremented the hash access method database version number, and the
+new hash function will only be used in newly created databases, which
+means that applications written using version DB 2.2.0 and greater will
+be able to share databases with applications written using previous
+versions of DB with a major number of 2.
+
+<p>
+However, we now use the __ham_func5() hash function internally, in the
+log and lock subsystems, which means that applications written using
+version DB 2.2.0 and greater will NOT be able to share database
+environments, or read log files, written using previous versions of DB.
+
+<p><li>
+The interfaces that DB uses to export statistics have been enhanced and,
+in one case, modified:
+
+<p><ol type=a>
+<li>
+DB 2.2 exports statistical information via the DB handle for the access
+methods. Currently, the only access method for which this information is
+available is B+tree. See the dbp-&gt;db_stat() function in the
+db_open(3)
+manual page for more information.
+
+<p><li>
+DB 2.2 exports statistical information for the transaction region via a
+new function, txn_stat(). See
+db_txn(3)
+for more information.
+
+<p><li>
+The
+db_stat(1)
+utility has two new options. The <b>-d</b> flag permits users to display
+the access method statistics. The <b>-t</b> flag permits users to display
+the transaction region statistics.
+
+<p><li>
+The interface for shared memory buffer pool statistics in DB 2.2 has been
+revised to make it consistent with the interfaces provided for the
+transaction region and access methods.
+<font color=red>
+This change is NOT transparent to applications.
+</font>
+See
+db_mpool(3)
+for more information.
+</ol>
+
+<p><li>
+The interface to the shared memory buffer pool has been extended in DB
+2.2 to permit applications to control the maximum size of read-only files
+that will be mapped into the application's address space instead of being
+read through the memory pool cache. See the DB_NOMMAP flag to the
+memp_open() function and the mp_mmapsize field in the DB_ENV structure,
+as described in
+db_mpool(3).
+
+<p><li>
+The interface to the transaction subsystem has been extended in DB 2.2 to
+permit applications to specify that the log is not to be synchronously
+flushed on transaction commit. This potentially provides a significant
+performance improvement for applications that do not require database
+durability. See the DB_TXN_NOSYNC flag to the txn_open() function, as
+described in
+db_txn(3).
+
+<p><li>
+There have been several changes to the process of creating a DB environment:
+
+<p><ol type=a>
+<li>
+By default, when a lock is unavailable to a DB thread (or process), the
+thread/process is put to sleep for a period of time, permitting other
+threads/processes to run. This may not be optimal in the presence of
+multiple threads in a single process. The DB_ENV structure has been
+extended to permit applications to specify a ``yield'' function, which is
+called when a DB thread has requested a lock which is unavailable. See
+db_appinit(3)
+for more information.
+
+<p><li>
+In previous versions of DB, the DB_CREATE flag was implied by calling the
+db_appinit() function, that is, initializing the environment implied that
+the application wanted to create the environment if it did not already
+exist. This version of DB no longer supports this semantic, and the
+DB_CREATE must be explicitly specified to db_appinit() if the application
+wants to create the DB environment.
+<font color=red>
+This change is NOT transparent to applications.
+</font>
+
+<p><li>
+The flags that may be specified when creating the DB environment have been
+extended in DB 2.2 to allow the specification of the DB_MPOOL_PRIVATE flag,
+which was previously supported only by the underlying memory pool subsystem.
+<p>
+The flags that may be specified when creating the DB environment have been
+extended in DB 2.2 to provide new functionality: the list of new flags
+includes DB_NOMMAP, DB_THREAD and DB_TXN_NOSYNC.
+
+<p><li>
+The DB_DATA_DIR configuration argument to the db_appinit() function is
+now additive, permitting applications to specify multiple directories in
+which to
+search for database files. If multiple paths are specified, created data
+files will always be created in the <b>first</b> directory specified.
+
+<p><li>
+The db_errbuf field of the DB_ENV structure has been deleted from the
+current release. In its place, we have added the db_errcall field, which
+specifies a function which is called with the information previously found
+in the db_errbuf buffer.
+<font color=red>
+This change is NOT transparent to applications.
+</font>
+
+<p><li>
+The default temporary file location list (used when no DB_TMP_DIR
+configuration argument was specified) has been extended to include any
+directory specified by the <b>TempFolder</b> environment variable, if it
+exists.
+
+</ol>
+
+<p>
+In all cases, see
+db_appinit(3)
+for more information.
+
+<p><li>
+There have been several changes to the logging subsystem:
+
+<p><ol type=a>
+<li>
+The log_get() and log_put() functions now support the
+standard DBT flags described by the
+db_open(3)
+manual page.
+
+<p><li>
+The interface to the log_flush() function has been extended to
+flush the entire log if a NULL LSN is specified. See
+db_log(3)
+for more information.
+
+<p><li>
+The interface to the log_file() function has been changed in DB 2.2
+to eliminate the need for the library to return allocated memory
+that may never be freed.
+<font color=red>
+This change is NOT transparent to applications.
+</font>
+See
+db_log(3)
+for more information.
+
+<p><li>
+The
+db_checkpoint(1)
+and
+db_deadlock(1)
+utilities have a new option, <b>-L</b>, in DB 2.2 to optionally log their
+process ID to a file. If they exit gracefully, or if they receive a
+SIGINT signal, the log file is removed before they exit.
+
+</ol>
+
+<p><li>
+There have been a couple of changes to the source code layout other
+than those specified above:
+
+<p><ol type=a>
+<li>
+Operating system specific functionality is separated out in DB 2.2 into
+a separate subdirectory in the source code, <b>db/os</b>.
+
+<p><li>
+All of the include files in DB 2.2 have been moved into a single
+subdirectory, <b>db/include</b>, as part of the work to port DB to MacOS.
+
+</ol>
+
+</ol>
+</body>
+</html>
diff --git a/db/docs/ref/changelog/2.3.10.html b/db/docs/ref/changelog/2.3.10.html
new file mode 100644
index 000000000..e67fbf427
--- /dev/null
+++ b/db/docs/ref/changelog/2.3.10.html
@@ -0,0 +1,27 @@
+<!--"$Id: 2.3.10.html,v 1.3 2007/05/17 18:17:17 bostic Exp $ (Sleepycat) $Date: 2007/05/17 18:17:17 $"-->
+<html>
+<head>
+<title>The Berkeley DB Package: Interface Changes introduced in DB 2.3.10</title>
+<meta name="description" content="DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Interface Changes introduced in DB 2.3.10:</h3>
+
+<ol>
+
+<li>
+In order to simplify the DB Java API, the type of the <b>flags</b> argument
+to the three functions memp_fget(), memp_fput() and memp_fset() has been
+changed from ``unsigned long'' to ``int''.
+It's possible, although unlikely, that this change could result in compiler
+errors for DB applications on some systems, if the flags were stored in a
+local variable.
+To fix any such errors, change the type of the local variable from
+``unsigned long'' to ``int'' and recompile the application.
+
+</ol>
+
+</body>
+</html>
diff --git a/db/docs/ref/changelog/2.3.11.html b/db/docs/ref/changelog/2.3.11.html
new file mode 100644
index 000000000..f2f6c82b9
--- /dev/null
+++ b/db/docs/ref/changelog/2.3.11.html
@@ -0,0 +1,22 @@
+<!--"$Id: 2.3.11.html,v 1.3 2007/05/17 18:17:18 bostic Exp $ (Sleepycat) $Date: 2007/05/17 18:17:18 $"-->
+<html>
+<head>
+<title>The Berkeley DB Package: Interface Changes introduced in DB 2.3.11</title>
+<meta name="description" content="DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Interface Changes introduced in DB 2.3.11:</h3>
+
+<ol>
+
+<li>
+The values (but not the names) of some of the DB interface flags
+were changed in the 2.3.11 release. DB applications should be
+recompiled after upgrading to 2.3.11.
+
+</ol>
+
+</body>
+</html>
diff --git a/db/docs/ref/changelog/2.3.12.html b/db/docs/ref/changelog/2.3.12.html
new file mode 100644
index 000000000..7b2c3666a
--- /dev/null
+++ b/db/docs/ref/changelog/2.3.12.html
@@ -0,0 +1,66 @@
+<!--"$Id: 2.3.12.html,v 1.5 2007/05/17 18:17:18 bostic Exp $ (Sleepycat) $Date: 2007/05/17 18:17:18 $"-->
+<html>
+<head>
+<title>The Berkeley DB Package: Interface Changes introduced in DB 2.3.12</title>
+<meta name="description" content="DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Interface Changes introduced in DB 2.3.12:</h3>
+
+<ol>
+
+<li>
+A new DB interface, <b>db_jump_set</b>(), has been added. The
+<b>db_jump_set</b> function enables applications to replace underlying
+DB library functionality by replacing entries in a function call jump
+table. This interface is intended for applications needing to do
+run-time linking to specific underlying libraries, for example, for
+systems where the malloc(3) that the application will use is not known
+until run-time. The <b>db_yield</b> field previously found in the
+DB_ENV structure has been removed, and its functionality incorporated
+into the db_jump_set function.
+<p>
+<font color=red>
+The removal of the db_yield field is NOT transparent to applications.
+</font>
+Applications should be converted from using the db_yield field to
+calling the <b>db_jump_set</b>() function with the DB_FUNC_YIELD
+flag.
+If you have a support contract with Sleepycat Software, please contact
+us for further information and assistance in migrating applications
+from previous releases of DB to this release.
+<p>
+See db_jump(3) for more information.
+
+<p><li>
+A new memory pool interface, <b>memp_trickle</b>(), has been added.
+The <b>memp_trickle</b> function permits an application to ensure
+that a certain percentage of the pages in the shared memory pool
+remain clean at all times, so that there are always buffers available
+for reading in new pages from the backing files.
+<p>
+See db_mpool(3) for more information.
+
+<p><li>
+A new log region interface, <b>log_stat</b>(), has been added.
+The <b>log_stat</b> function returns statistical information about
+the log region.
+The <b>db_stat</b>(1) utility has been updated to optionally display
+this information.
+<p>
+See db_log(3) for more information.
+
+<p><li>
+There have been various additions to the memory pool statistics
+structure, as returned by <b>memp_stat</b>() and displayed by
+<b>db_stat</b>(1).
+Applications using the memory pool statistics interface will need
+to be recompiled for this release.
+<p>
+See db_mpool(3) for more information.
+
+</ol>
+</body>
+</html>
diff --git a/db/docs/ref/changelog/2.3.14.html b/db/docs/ref/changelog/2.3.14.html
new file mode 100644
index 000000000..65b7145e5
--- /dev/null
+++ b/db/docs/ref/changelog/2.3.14.html
@@ -0,0 +1,67 @@
+<!--"$Id: 2.3.14.html,v 1.3 2007/05/17 18:17:18 bostic Exp $ (Sleepycat) $Date: 2007/05/17 18:17:18 $"-->
+<html>
+<head>
+<title>The Berkeley DB Package: Interface Changes introduced in DB 2.3.14</title>
+<meta name="description" content="DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Interface Changes introduced in DB 2.3.14:</h3>
+
+<ol>
+
+<li>
+There was a mismatch in previous releases of DB between the
+documented interface to <b>lock_detect</b>(3) (or
+<b>DbLockTab::detect()</b>) and the DB software. This mismatch
+was resolved in favor of the source code. Any software that
+uses this interface should be checked to make sure that the
+second argument is the "flags" argument, and the third argument is
+the "atype" argument.
+<font color=red>
+This change may NOT be transparent to applications.
+</font>
+
+<p><li>
+There is an new DB interface, <b>db_value_set</b>(), described in
+db_internal(3).
+The only purpose of the <b>db_value_set</b>() interface in the DB
+2.3.14 release is to permit applications to set the number of spins
+that mutexes will make before blocking, when a mutex is not immediately
+available. This is intended to permit applications on multi-CPU
+architectures a finer granularity of control over mutexes.
+As with <b>db_jump_set</b>(), <b>db_value_set</b>() is only available
+from the C API, and is expected to be used by few applications.
+
+<p><li>
+We've added a Java API for DB.
+The Java API should be considered a beta release,
+and therefore more subject to change than normal.
+We would very much appreciate email on any comments and/or experiences
+you have in using the DB Java API!
+<p>
+The Java files and directories in the source distribution are:
+<p>
+<table border>
+<tr>
+<td>db/java/src/com/sleepycat/db</td>
+<td>The Java API</td>
+</tr><tr>
+<td>db/java/README</td>
+<td>Information on building the Java API.</td>
+</tr><tr>
+<td>db/man/man.html/index_java.html</td>
+<td>The Java API manual pages (available only in HTML).</td>
+</tr><tr>
+<td>db/java/src/com/sleepycat/examples/</td>
+<td>The example programs recoded in Java.</td>
+</tr><tr>
+<td>db/libdb_java</td>
+<td>Sources to build the libdb_java shared library.</td>
+</tr>
+</table>
+
+</ol>
+</body>
+</html>
diff --git a/db/docs/ref/changelog/2.3.16.html b/db/docs/ref/changelog/2.3.16.html
new file mode 100644
index 000000000..e0a8a0bd2
--- /dev/null
+++ b/db/docs/ref/changelog/2.3.16.html
@@ -0,0 +1,165 @@
+<!--"$Id: 2.3.16.html,v 1.3 2007/05/17 18:17:18 bostic Exp $ (Sleepycat) $Date: 2007/05/17 18:17:18 $"-->
+<html>
+<head>
+<title>The Berkeley DB Package: DB 2.3.16 Change Log</title>
+<meta name="description" content="DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Berkeley DB 2.3.16 Change Log</h3>
+
+<h3>Interface Changes Introduced in DB 2.3.16:</h3>
+
+<ol>
+
+<li>
+The interface to <b>db_jump_set</b>(3) for the DB_FUNC_IOINFO value
+has changed in order to avoid passing <b>off_t</b> types as interface
+arguments.
+Any software that uses this interface must be updated to use the new
+arguments.
+See
+db_internal(3)
+for more information.
+<font color=red>
+This change is NOT transparent to applications.
+</font>
+
+<p><li>
+The output of <b>log_stat</b>(3) has been enhanced to include the
+current log file number and offset within that file.
+See
+db_log(3)
+for more information.
+
+<p><li>
+A new option, <b>-T</b>, has been added to the <b>db_load</b>(1) utility.
+This option simplifies using non-DB applications (or scripts) to create
+DB databases.
+See
+db_load(1)
+for more information.
+
+<p><li>
+Applications wanting to us the dbm, ndbm or hsearch interfaces to
+the DB library must now specify a numeric value when they #define
+DB_DBM_HSEARCH. For example, instead of using:
+<p>
+<ul><code>
+#define DB_DBM_HSEARCH
+<br>
+#include "db.h"
+</code></ul>
+<p>
+in the application, they must now use:
+<p>
+<ul><code>
+#define DB_DBM_HSEARCH 1
+<br>
+#include "db.h"
+</code></ul>
+<p>
+<font color=red>
+This change is NOT transparent to applications.
+</font>
+
+<p><li>
+DB no longer intrudes on the historic <b>dbm</b>(3), <b>ndbm</b>(3) or
+<b>hsearch</b>(3) namespaces. This change permits applications to load
+the DB library and still load the <b>dbm</b>, <b>ndbm</b> or
+<b>hsearch</b> functions from another library.
+
+<p><li>
+The <b>dbm</b>(3) functions are no longer exported in the Win32
+environment. The <b>db_jump_set</b>(3), <b>db_value_set</b>(3) and
+<b>log_stat</b>(3) interfaces are now exported in the Win32 environment.
+
+<p><li>
+In the Java DB API, Dbt's used to retrieve data must specify
+Db.DB_DBT_MALLOC or Db.DB_DBT_USERMEM in the Dbt flags.
+If Db.DB_DBT_USERMEM is used, the data field of the Dbt must
+be set to an appropriately sized byte array.
+
+</ol>
+
+<h3>Bug Fixes:</h3>
+
+<ol>
+
+<p><li>
+When transaction undo was performed during recovery, the Btree access
+method could incorrectly recover pages that were never created because
+of the system or application failure.
+
+<p><li>
+When the last log file did not contain a checkpoint, recovery could
+potentially fail.
+
+<p><li>
+When files were opened and closed between checkpoints, catastrophic
+recovery could potentially fail.
+
+<p><li>
+When log file #2 existed but log file #1 did not, recovery would fail.
+
+<p><li>
+Shared memory regions were not being explicitly initialized in the Win95
+environment, potentially resulting in unexpected behavior.
+
+<p><li>
+An incorrect shared memory region offset was being specified in the shared
+memory buffer cache support for systems using <b>fcntl</b>(2) locking
+(rather than spinlock mutexes). This could potentially lead to incorrect
+locking behavior in that subsystem.
+
+<p><li>
+The shared memory buffer cache had a deadlock situation when a buffer
+writer and a thread or process syncing the pool attempted to write the
+same buffer at the same time, potentially leading to thread/process
+starvation.
+
+<p><li>
+The Java DB API did not correctly interact with the Db.DB_DBT_MALLOC
+and Db.DB_DBT_USERMEM flags, and a number of memory leaks have been
+eliminated.
+
+</ol>
+
+<h3>Additional Changes:</h3>
+
+<ol>
+
+<li>
+There are a large number of source changes to the DB 2.3.16 release,
+intended to clean up compiler warnings that could appear when various
+debugging and warning options were specified to the gcc and Solaris
+compilers.
+
+<p><li>
+DB 2.3.16 has been modified to never pass as arguments or store on disk
+variables of type off_t. This change is intended to increase DB's
+portability to compiler/architecture combinations where the DB library
+and the application may not have been compiled with the same size off_t.
+
+<p><li>
+DB now uses the -O2 compiler optimization flag when building on Linux
+systems.
+
+<p><li>
+The shared memory buffer cache subsystem has been enhanced to no longer
+hold mutex locks across calls to <b>fsync</b>(2).
+
+<p><li>
+The shared memory buffer cache subsystem now explicitly yields the
+processor when waiting on a buffer for which I/O was being performed,
+enhancing overall throughput.
+
+<p><li>
+The test suite has been enhanced to better test recovery and to increase
+dbm/ndbm interface coverage.
+
+</ol>
+
+</body>
+</html>
diff --git a/db/docs/ref/changelog/2.3.5.html b/db/docs/ref/changelog/2.3.5.html
new file mode 100644
index 000000000..06c2d9215
--- /dev/null
+++ b/db/docs/ref/changelog/2.3.5.html
@@ -0,0 +1,36 @@
+<!--"$Id: 2.3.5.html,v 1.4 2007/05/17 18:17:18 bostic Exp $ (Sleepycat) $Date: 2007/05/17 18:17:18 $"-->
+<html>
+<head>
+<title>The Berkeley DB Package: Interface Changes introduced in DB 2.3.5</title>
+<meta name="description" content="DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Interface Changes introduced in DB 2.3.5:</h3>
+
+<ol>
+
+<li>
+It has come to our attention that there are versions of the native Solaris
+compiler that order bit fields inside of structures differently than other
+compilers, for example, gcc.
+Some of the on-page B+tree structures contained bit fields, which meant that
+databases built using these compilers were incompatible with databases built
+on other architectures, for example, a Solaris database could not be
+read on an x86 architecture which used gcc as its compiler. The DB
+2.3.5 release fixes this problem.
+<p>
+<font color=red>
+Unfortunately, depending on the Solaris compiler used, the change may cause
+DB version 2.3.5 on Solaris to be unable to read databases written by earlier
+versions of DB.
+</font>
+If you have a support contract with Sleepycat Software, please contact
+us for further information and assistance in migrating databases from
+previous releases of DB to this release.
+
+</ol>
+
+</body>
+</html>
diff --git a/db/docs/ref/changelog/2.3.html b/db/docs/ref/changelog/2.3.html
new file mode 100644
index 000000000..d0d3f59bf
--- /dev/null
+++ b/db/docs/ref/changelog/2.3.html
@@ -0,0 +1,184 @@
+<!--"$Id: 2.3.html,v 1.4 2007/05/17 18:17:18 bostic Exp $ (Sleepycat) $Date: 2007/05/17 18:17:18 $"-->
+<html>
+<head>
+<title>The Berkeley DB Package: Interface Changes introduced in DB 2.3.0</title>
+<meta name="description" content="DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Interface Changes introduced in DB 2.3.0:</h3>
+
+<ol>
+
+<li>
+The DB 2.3 btree access method has been enhanced to optionally support
+retrieval by record number.
+This functionality is based on a new DB_INFO flag, DB_RECNUM.
+If the btree is created using this flag, applications may retrieve
+records in the tree by record number,
+using the DB_SET_RECNO flag to either the dbp-&gt;get() or cursor-&gt;c_get()
+interfaces.
+This is another additional cursor-&gt;c_get() flag, DB_GET_RECNO which
+returns the record number of the record referenced by the cursor.
+<p>
+<font color=red>
+Adding this feature required a change to the underlying btree database format.
+For this reason, databases created under previous versions of DB cannot
+be read by this release of DB, and vice versa.
+</font>
+If you have a support contract with Sleepycat Software, please contact
+us for further information and assistance in migrating applications and
+databases from previous releases of DB to this release.
+<p>
+See
+db_open(3)
+and
+db_cursor(3)
+for more information, as well as the example program examples/ex_btrec.c.
+
+<p><li>
+In previous versions of the DB library, additions or deletions into recno
+(fixed and variable-length record) databases would automatically renumber
+all records logically after the add/delete point.
+This behavior is no longer the default behavior as of DB version 2.3.
+<p>
+The new default behavior is that deleting records does not cause subsequent
+records to be renumbered, and it is an error to attempt to add new records
+between records already in the database.
+Attempting to retrieve deleted keys using either of the dbp-&gt;get() or
+cursor-&gt;c_get() functions will return DB_KEYEMPTY.
+The historic behavior is still available, based on a new DB_INFO flag,
+DB_RENUMBER.
+Applications depending on the historic recno access method semantics should
+specify the DB_RENUMBER flag, no other change should be necessary.
+<p>
+In previous versions of the DB library, adding a record more than one
+logical record past the current last record in the recno database caused
+the creation of the intermediate missing records as existing records with
+zero-length data.
+While the intermediate missing records are still logically created in
+DB 2.3, it is an error to attempt to retrieve them, and the get() and
+c_get() functions will return DB_KEYEMPTY.
+<p>
+In previous versions of the DB library, attempting to retrieve a deleted
+record <b>using the same cursor with which it was deleted</b> returned
+DB_NOTFOUND.
+For consistency with the new recno access method functionality,
+such attempts now return DB_KEYEMPTY.
+<p>
+See
+db_open(3)
+and
+db_cursor(3)
+for more information.
+<br><font color=red>
+These changes are NOT transparent to applications.
+</font>
+
+<p><li>
+A new flag, DB_APPEND, has been added to the db-&gt;put(3) function in
+DB 2.3.
+This flag is applicable only to the recno access method.
+It permits applications to append to the database without knowing how
+many records are in it or the current last record number.
+The DB example program examples/ex_tpcb has been modified to use this
+functionality.
+<p>
+See
+db_open(3)
+for more information.
+
+<p><li>
+An additional argument has been added to the memp_fopen(3) function
+in DB 2.3.
+The mpool functions must be able to uniquely identify files in order
+that multiple processes sharing a file will correctly share its
+underlying pages. Normally, the mpool functions use the file's device
+and inode numbers for this purpose. On some filesystems, for example,
+FAT or NFS, file device and
+inode numbers are not necessarily unique across system reboots.
+To support applications wanting to maintain a shared memory buffer pool
+across system reboots, where the pool contains pages from files stored
+on such filesystems, it is now possible to specify a unique file identifier
+to the memp_fopen() call, which the memory pool functions will then use to
+identify shared files.
+The DB access method functions have been modified to use this functionality,
+and DB databases in 2.3 will work transparently on such filesystems.
+<p>
+See
+db_mpool(3)
+for more information.
+<br><font color=red>
+This change is NOT transparent to applications using the db_mpool(3)
+interfaces directly.
+</font>
+
+<p><li>
+The interface to the DB access method stat function (dbp-&gt;stat()) has been
+changed.
+Per-thread statistics are no longer returned, only statistics for the entire
+database are returned.
+In addition, the stat function has been changed to take an additional
+``flags'' parameter.
+The only legal value for this parameter in DB 2.3 is DB_RECORDCOUNT,
+which causes the stat function to return a count of records in the tree
+without collecting other statistics.
+<p>
+A number of additional items of information have been added to the
+information returned by the stat function,
+notably database configuration flags and other information normally
+specified to the
+db_open(3)
+function when the database is created.
+<p>
+See
+db_stat(1)
+and
+db_open(3)
+for more information.
+<br><font color=red>
+This change is NOT transparent to applications.
+</font>
+
+<p><li>
+A number of new configuration options have been added to the
+db_load(1)
+utility, allowing databases to be dumped and reloaded in different
+configurations.
+See
+db_load(1)
+for more information.
+
+<p><li>
+The C++ API for DB has been reworked, and is now believed to be fairly
+close to its final form.
+There are still no manual pages for the C++ API, although we expect to
+have them together and released within a couple of weeks.
+<p>
+The C++ files and directories in the source distribution are:
+<p>
+<table border>
+<tr>
+<td>db/cxx/</td>
+<td>C++ API</td>
+</tr><tr>
+<td>db/examples_cxx/</td>
+<td>The example programs recoded in C++.</td>
+</tr><tr>
+<td>db/include/cxx_int.h</td>
+<td>Internal C++ include file.</td>
+</tr><tr>
+<td>db/include/db_cxx.h</td>
+<td>External C++ include file.</td>
+</tr>
+</table>
+<p>
+C++ support is automatically built on Win32. To configure it under UNIX,
+specify <b>--enable-cxx</b> as a configuration argument (see the file
+<b>db/build.unix/README</b> for more information).
+
+</ol>
+
+</body>
+</html>
diff --git a/db/docs/ref/changelog/2.4.10.html b/db/docs/ref/changelog/2.4.10.html
new file mode 100644
index 000000000..e4d58cec7
--- /dev/null
+++ b/db/docs/ref/changelog/2.4.10.html
@@ -0,0 +1,473 @@
+<!--"$Id: 2.4.10.html,v 1.4 2007/05/17 18:17:18 bostic Exp $ (Sleepycat) $Date: 2007/05/17 18:17:18 $"-->
+<html>
+<head>
+<title>The Berkeley DB Package: DB 2.4.10 Change Log</title>
+<meta name="description" content="DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Berkeley DB 2.4.10 Change Log</h3>
+
+<h3>Interface Changes Introduced in DB 2.4.10:</h3>
+<ol>
+
+<p><li>
+Support has been added for architectures with 16-bit integers, largely to
+port Berkeley DB to the Windows 3.1 platform. This required <b>extensive</b>
+code changes, although almost all of them were only semantic in nature.
+In almost all of the DB public interfaces, including any public structure
+elements, all variables of type "int" or "unsigned int" have been converted
+to be either type "int32_t" or "u_int32_t".
+<p>
+Previously built binaries on any 32-bit machine should be backward
+compatible, however, previously built binaries on machines with 64-bit
+integers will not be binarily compatible. Applications should recompile
+correctly without warning or error, unless there are explicit casts in
+the application source code.
+<font color=red>
+This change may NOT be transparent to applications.
+</font>
+
+<p><li>
+Support has been added to allow Berkeley DB to use shared memory backed
+by a paging file or swap space (as opposed to backed by the regular file
+system) on both UNIX and Win95/WNT platforms. This required a major
+rework of the shared memory support in DB, and, for this reason, the DB
+version 2.4.10 release should, perhaps, be tested more thoroughly than
+usual in your local environment before committing to the upgrade. This
+change caused the
+db_jump_set(3)
+and
+db_value_set(3)
+functions to change.
+<p>
+The
+db_jump_set(3)
+function interface specified by the DB_FUNC_MAP flag has changed.
+A new interface, specified by the DB_FUNC_RUNLINK flag has been added.
+Applications replacing these functions at run time will
+require additional care in upgrading to this release of DB.
+<p>
+The
+db_value_set(3)
+function interface has two additional flags: DB_REGION_ANON and
+DB_REGION_NAME, which allow applications to specify regions are
+to be created when using memory backed by a paging file.
+<p>
+See the
+db_internal(3)
+manual page for further information.
+
+<p><li>
+The
+db_jump_set(3)
+interface no longer supports the DB_FUNC_CALLOC and DB_FUNC_STRDUP flags.
+Applications may continue to set the functions associated with those flags,
+but they are no longer needed and no longer have any effect.
+
+<p><li>
+The
+db_value_set(3)
+interface has an additional flag: DB_REGION_INIT, which permits applications
+to specify that regions should be page-faulted into memory immediately upon
+creation.
+This fixes a problem where the additional time required to page-fault in
+region memory caused locks to convoy inside of the shared memory buffer pool.
+<p>
+This additionally required an interface change to the DB_FUNC_SEEK interface
+as specified by the
+db_jump_set(3)
+function interface.
+The "relative" argument is now a "u_int32_t" instead of a "u_long",
+and there is an additional argument "isrewind" in order to support
+seeking in the reverse direction.
+<p>
+See the
+db_internal(3)
+manual page for further information.
+<font color=red>
+This change may NOT be transparent to applications.
+</font>
+
+<p><li>
+The
+log_put(3)
+function has an additional flag: DB_CURLSN, which permits applications
+to determine the next log LSN value which will be used.
+This, coupled with changes to the transaction subsystem to no longer
+write transaction-begin records allows Berkeley DB to avoid writing
+any log records in the case of read-only transactions.
+
+<p><li>
+The interface to the
+hcreate(3)
+function has been changed to take a "size_t" as an argument instead of
+an "unsigned int", for compatibility with vendor platforms, notably Solaris.
+<font color=red>
+This change may NOT be transparent to applications.
+</font>
+
+<p><li>
+Specifying NULL or zero-length keys to DB functions is now explicitly
+disallowed by most of the DB interfaces, and EINVAL will be returned.
+<font color=red>
+This change may NOT be transparent to applications.
+</font>
+
+<p><li>
+Performance measurements of Berkeley DB indicated that a significant
+amount of time was being spent clearing pages created in the shared
+memory buffer pool.
+In order to fix this, additional information has been added to the
+memp_fopen(3)
+interface which allows callers to specify the number of bytes which
+need to be cleared when pages are created in the pool.
+The default behavior of the pool code is unchanged, and by default the
+entire page is cleared.
+<p>
+However, the
+memp_fopen(3)
+function interface has changed: 4 of the lesser-used historic arguments
+and the new argument have been moved to an information structure of type
+DB_MPOOL_FINFO which is passed to the memp_fget function as an argument.
+See the
+db_mpool(3)
+man page for more information.
+<font color=red>
+This change may NOT be transparent to applications.
+</font>
+
+<p><li>
+An interface has been added to the
+db_checkpoint(1)
+function allowing database administrators to force a single checkpoint.
+See the
+db_checkpoint(1)
+man page for more information.
+
+</ol>
+
+<h3>Configuration and Build Changes:</h3>
+
+<ol>
+
+<p><li>
+The environment variables used to specify a compiler, loader or compile
+and loader flags during DB configuration have been changed to be more in
+line with standard GNU autoconf practice. The changes are as follows:
+<p>
+<table border>
+<tr><td>Old Name</td><td>New Name</td></tr>
+<tr><td>ADDCPPFLAGS</td><td>CPPFLAGS</td></tr>
+<tr><td>ADDCXXFLAGS</td><td>CXXFLAGS</td></tr>
+<tr><td>ADDLDFLAGS</td><td>LDFLAGS</td></tr>
+<tr><td>ADDLIBS</td><td>LIBS</td></tr>
+</table>
+<p>
+See the file build.unix/README for further information.
+
+<p><li>
+The DB debugging support (previously configured by specifying
+<b>--enable-debug</b> during configuration) has been split into two
+separate pieces of functionality.
+<p>
+To build DB with -g as a compiler flag and with DEBUG #defined during
+compilation, enter <b>--enable-debug</b> as an argument to configure.
+This will create DB with debugging symbols, as well as load various
+routines that can be called from a debugger to display pages, cursor
+queues and so forth. This flag should probably not be specified when
+configuring to build production binaries, although there shouldn't be
+any significant performance degradation.
+<p>
+To build DB with diagnostic, run-time sanity checks and with DIAGNOSTIC
+#defined during compilation, enter <b>--enable-diagnostic</b> as an
+argument to configure. This will cause a number of special checks to be
+performed when DB is running. This flag should <b>NOT</b> be specified
+when configuring to build production binaries, as you will lose a
+significant amount of performance.
+
+<p><li>
+Some systems, notably versions of AIX, HP/UX and Solaris, require
+special compile-time options in order to create files larger than
+2^32 bytes. These options are automatically enabled when DB is
+compiled. For this reason, binaries built on current versions of
+these systems may not run on earlier versions of the system, as
+the library and system calls necessary for large files are not
+available. To disable building with these compile-time options,
+enter <b>--disable-bigfile</b>.
+
+<p><li>
+The autoconf configure script has been enhanced to correctly support
+<b>--disable-feature</b> or <b>--enable-feature=no</b> options.
+
+<p><li>
+The Berkeley DB test suite has been re-ordered to run system tests before
+the tests of the individual access methods.
+
+<p><li>
+The Berkeley DB test suite has been largely ported to the Windows 3.1
+environment. See the distribution file test/README.win32 for more
+information.
+
+<p><li>
+Mutex lock support for the GCC compiler and the PaRisc architecture has
+been added.
+
+<p><li>
+The db_printlog(1) debugging utility is now built by default,
+and the
+db_stat(1)
+utility is now built on Win95/WNT platforms.
+
+<p><li>
+A number of C, C++ and Java compiler warnings have been fixed.
+
+<p><li>
+Support has been added for the Siemens-Nixdorf Informationssysteme AG
+ReliantUNIX platform.
+
+<p><li>
+Ports of Berkeley DB to the HP MPE/iX and Windows 3.1 environments have
+been begun. They are not yet complete.
+
+</ol>
+
+<h3>B+tree Access Method Bug Fixes:</h3>
+
+<ol>
+
+<p><li>
+When performing btree range searches (that is, using the DB_SET_RANGE
+interface, or using the DB version 1.85 compatibility interface), the
+Btree access method could incorrectly return already deleted records.
+
+<p><li>
+When using a cursor to delete key/data pairs from a btree database, it
+was possible to leave empty pages in the database. This did not cause
+incorrect behavior, however, it could lead to unexpected growth in the
+database.
+
+<p><li>
+When doing a partial put into a off-page (that is, "overflow") record,
+the Btree access method could incorrectly store the data item.
+
+<p><li>
+When an off-page (that is, "overflow") record was promoted to an internal
+page of a Btree database, DB applications could dump core when walking
+the tree on machines where a certain stack variable was not automatically
+initialized to 0.
+
+<p><li>
+When an off-page (that is, "overflow") item was promoted into an internal
+page in a Btree database, DB applications reading databases on machines
+with different byte orders could incorrectly walk the Btree, potentially
+dumping core.
+
+<p><li>
+When Btree databases had record numbering turned on (the DB_RECNUM
+option), it was possible for the record numbers to fail to stay
+synchronized with changes in the database.
+
+</ol>
+
+<h3>Recno Access Method Bug Fixes:</h3>
+
+<ol>
+
+<p><li>
+When iterating through Recno access method databases, DB could incorrectly
+return EINVAL instead of the next key/data pair.
+
+<p><li>
+Previous releases of DB did not permit Recno access method databases to
+be opened read-only.
+
+<p><li>
+When reading the last record in a Recno access method database, DB could
+incorrectly return DB_NOTFOUND instead of the key/data pair.
+
+<p><li>
+When a key/data item was deleted using the cursor interface to a Recno
+access method database, a subsequent put using DB_NOOVERWRITE set would
+fail.
+
+<p><li>
+Because DB version 2 lazily instantiates the underlying shared memory
+buffer pool files, the DB-&gt;fd call for Recno databases in the DB 1.85
+compatibility interface did not always work.
+
+</ol>
+
+<h3>C++ and Java API Bug Fixes:</h3>
+
+<ol>
+
+<p><li>
+When the C++ interface
+Db::get()
+function was called, DB incorrectly treated the DB_NOTFOUND case as an
+exception instead of returning DB_NOTFOUND.
+
+<p><li>
+The DB Java interface now sets the CLASSPATH variable instead of depending
+on -classpath. This allows DB to work with the SGI JDK 3.0.1.
+
+<p><li>
+Using Dbc.next with the DB_SET or DB_SET_RANGE options in the DB Java
+interface would not correctly position the cursor.
+
+<p><li>
+The DB Java interface now works correctly with the Solaris JDK 1.2.
+
+</ol>
+
+<h3>Additional Bug Fixes:</h3>
+
+<ol>
+
+<p><li>
+Shared regions now work correctly for multiple processes on Windows/95
+platforms.
+
+<p><li>
+It was possible under rare conditions to return illegal addresses when
+read-only databases were mapped into the process address space.
+
+<p><li>
+When a DB environment had already been specified, setting the
+"db_cachesize" field of the DB_INFO structure would be silently
+ignored by
+db_open(3).
+In DB version 2.4.10, specifying a DB environment as well as setting
+db_cachesize is considered an error, returning EINVAL.
+
+<p><li>
+Several boundary conditions were identified and fixed in database
+recovery.
+
+<p><li>
+Key-not-found and errno returns were being set incorrectly in the
+dbm/ndbm interface compatibility functions.
+
+<p><li>
+Under some conditions, database files could still be synced to disk on
+close, even if the DB_NOSYNC flag was specified to the DB-&gt;close function.
+
+<p><li>
+Under some conditions, the db_archive utility output could contain
+multiple slashes in pathnames.
+
+<p><li>
+The db_archive utility would always prepend the current working
+directory pathname when the -a option was specified, regardless
+of the DB environment information indicating that the database
+home was at an absolute pathname.
+
+<p><li>
+Page create statistics were not correctly maintained when the
+DB_MPOOL_NEW option was specified to the shared memory buffer
+pool subsystem.
+
+<p><li>
+Under rare conditions, log offsets were not maintained correctly when
+switching between log files.
+
+</ol>
+
+<h3>Additional Changes:</h3>
+
+<ol>
+
+<p><li>
+The transaction ID space in Berkeley DB is 2<sup>31</sup>, or 2 billion
+entries.
+It is possible that some environments may need to be aware of this limitation.
+Consider an application performing 600 transactions a second for 15 hours a
+day.
+The transaction ID space will run out in roughly 66 days:
+<blockquote>
+2<sup>31</sup> / (600 * 15 * 60 * 60) = 66
+</blockquote>
+<p>
+Doing only 100 transactions a second exhausts the transaction ID space in
+roughly one year.
+<p>
+In order to decrease the likelihood of exhausting the transaction ID space,
+Berkeley DB now resets the transaction ID each time that recovery is run.
+See
+db_txn(1)
+for more information.
+
+<p><li>
+The limitations on database lifetime imposed by the Berkeley DB logging
+subsystem has been documented. See
+db_log(3)
+for more information.
+
+<p><li>
+Performance measurements of Berkeley DB indicated that a significant
+amount of time was spent in searching hash queues in the shared memory
+buffer pools. The internal DB hash bucket code has been enhanced to
+handle much larger core memories than was possible previously, which
+should result in increased performance when using large memory pool
+caches.
+
+<p><li>
+Performance measurements of Berkeley DB indicated that a significant
+amount of time was spent in searching lock queues, and, specifically, in
+calculating hash values of lock queue elements. Fast hash functions
+specifically for DB's use have been added to the lock subsystem to
+alleviate this problem.
+
+<p><li>
+Performance measurements of Berkeley DB indicated that a significant
+amount of time was spent in determining the number of processors on
+the Windows/NT platform. The value is now determined initially and
+then stored.
+
+<p><li>
+Historically, the
+db_appinit(3)
+function returned EINVAL if an application attempted recovery, by
+specifying DB_RECOVER or DB_RECOVER_FATAL, and there were no log
+files currently in the database environment. In the 2.4.10 release,
+this is no longer an error.
+
+<p><li>
+The mutex locking code has been enhanced to no longer attempt full
+test-and-set instructions unless there is a strong probability of
+acquiring the mutex. This makes spinning on the mutex significantly
+less expensive.
+
+<p><li>
+The count of attempted mutex locks (mutex_set_wait) has been changed to
+be incremented every time a process/thread is refused the lock, instead
+of only once when it first requests the lock and is denied.
+
+<p><li>
+The
+db_dump185(1)
+utility has been enhanced to dump DB version 1.86 databases as well as
+DB version 1.85 databases.
+
+<p><li>
+The
+db_stat(1)
+utility has been enhanced to display values larger than 10 million in
+a new format, "###M".
+
+<p><li>
+The
+db_stat(1)
+utility has been enhanced to display lock region statistics.
+See
+db_stat(1)
+and
+db_lock(3)
+for more information.
+
+</ol>
+
+</body>
+</html>
diff --git a/db/docs/ref/changelog/2.4.14.html b/db/docs/ref/changelog/2.4.14.html
new file mode 100644
index 000000000..13b7ce3f1
--- /dev/null
+++ b/db/docs/ref/changelog/2.4.14.html
@@ -0,0 +1,198 @@
+<!--"$Id: 2.4.14.html,v 1.3 2007/05/17 18:17:18 bostic Exp $ (Sleepycat) $Date: 2007/05/17 18:17:18 $"-->
+<html>
+<head>
+<title>The Berkeley DB Package: DB 2.4.14 Change Log</title>
+<meta name="description" content="DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Berkeley DB 2.4.14 Change Log</h3>
+
+<h3>Interface Changes Introduced in DB 2.4.14:</h3>
+<ol>
+
+<p><li>
+Enhance the
+db_load(1)
+utility so that the default behavior is to add data to existing databases
+(rather than to always create the database), and to correctly perform
+locking for databases running in Berkeley DB environments. This allows
+the use of
+db_load(1)
+to add key/data pairs to existing, active databases.
+<p>
+Add a <b>-n</b> option to the
+db_load(1)
+This option causes
+db_load(1)
+to refuse to overwrite already existing key/data pairs in databases.
+
+<p><li>
+Enhance the
+db_stat(1)
+utility to display additional information about the shared memory buffer
+pool and lock regions. The new options are <b>-C[Acflmo]</b> for the
+lock region, and <b>-M[Ahlm]</b> for the shared memory buffer pool region.
+This information is normally intended only for Berkeley DB performance
+tuning.
+
+<p>
+Add a <b>-N</b> option to the
+db_stat(1)
+This option keeps
+db_stat(1)
+from acquiring region locks when reading shared regions, which allows
+db_stat(1)
+to be used to display information about regions where applications have
+crashed while holding region locks.
+
+<p>
+Add region reference counts and sizes to all
+db_stat(1)
+region displays.
+
+<p><li>
+Add a new flag, <b>DB_MUTEXLOCKS</b> to the
+db_value_set(1)
+interface. This flag causes requests for mutual exclusion mutexes to
+be immediately granted without test. This flag is only intended for
+debugging purposes.
+
+</ol>
+<h3>B+tree Access Method Bug Fixes:</h3>
+<ol>
+
+<p><li>
+Fix bug in the B+tree access method where additional cursors could be
+incorrectly updated when key/data pairs were added or deleted.
+
+<p><li>
+Fix bug where an aborted transaction during a B+tree split could cause
+pages to be left pinned.
+
+<p><li>
+Fix possible core dump when freeing the (cursor referenced) last item
+in the last page in a duplicate chain.
+
+<p><li>
+Fix possible core dump when deleting overflow items from duplicate pages.
+
+<p><li>
+Fix bug where duplicate page splits could result in database corruption
+(common to both B+tree and Hash Access Methods).
+
+</ol>
+<h3>Hash Access Method Bug Fixes:</h3>
+<ol>
+
+<p><li>
+Fix bug where Hash access method recovery did not always correctly recover
+key/data pair addition or deletion.
+
+<p><li>
+Fix bug where deleting a key in a Hash access method database could cause
+a cursor sequentially walking the database to skip records.
+
+<p><li>
+Fix bug where duplicate page splits could result in database corruption
+(common to both B+tree and Hash Access Methods).
+
+</ol>
+<h3>Shared Memory Buffer Pool Bug Fixes:</h3>
+<ol>
+
+<p><li>
+Fix bug where a DB thread handle could be left locked if a read-only file
+descriptor could not be upgraded to read-write during a buffer pool sync
+to disk.
+
+</ol>
+<h3>Common Shared Region Support Bug Fixes:</h3>
+<ol>
+
+<p><li>
+Fix bug where private shared memory pool regions could not be created on
+architectures without spinlock mutex support.
+
+<p><li>
+Fix possible file descriptor leak on HP/UX architecture (reports #150,
+#158).
+
+<p><li>
+Fix a variety of inconsistencies where, after a failed attempt to open
+shared regions, the code recovery paths were incorrect.
+
+</ol>
+<h3>Additional Bug Fixes:</h3>
+<ol>
+
+<p><li>
+Fix possible core dump in
+lock_open(1)
+when it was called without first creating a Berkeley DB database environment.
+
+</ol>
+<h3>Test Suite, Example Program and Build Procedure Bug Fixes and Changes:</h3>
+<ol>
+
+<p><li>
+Fix build procedures for a number of architectures: affected systems
+include VC++ 5.0 and various releases of SunOS, AIX, OSF/1, FreeBSD
+and Linux (reports #145, #156).
+
+<p><li>
+Fix the Berkeley DB test suite to correctly identify Windows systems
+in all cases (the previous method failed for some releases of the
+Tcl scripting language).
+
+<p><li>
+Fix the <b>ex_thread</b> example program to correctly set the buffer
+cache size.
+
+<p><li>
+Fix the Berkeley DB test suite to ignore errors where System V shared
+memory interfaces (shmget(2)) have not been configured correctly.
+
+<p><li>
+Add support for the BSD/OS 4.0 release.
+
+<p><li>
+Add support for the SCO OpenServer Release 5 (3.2.2). (The test suite
+has not yet run successfully on this architecture, although we currently
+believe that the problems are in the test suite, and not in the Berkeley
+DB library itself.)
+
+<p><li>
+Change configuration to ignore the FreeBSD shmget(2) interfaces when
+ftok(3) is not available from the C library.
+
+<p><li>
+Change configuration to fail on the Nextstep architecture. (Previously,
+Berkeley DB would configure successfully, but then not build on Nextstep.)
+
+</ol>
+<h3>Additional Changes:</h3>
+<ol>
+
+<p><li>
+Return EINVAL if the DB_RECOVER or DB_RECOVER_FATAL flags were specified to
+db_appinit(3) without also specifying the DB_INIT_TXN flag.
+
+<p><li>
+Removed "Additional Change" #7 from the Berkeley DB 2.4.10 release:
+<p>
+<blockquote>
+The mutex locking code has been enhanced to no longer attempt full
+test-and-set instructions unless there is a strong probability of
+acquiring the mutex. This makes spinning on the mutex significantly
+less expensive.
+</blockquote>
+<p>
+Full test-and-set instructions are necessary on some architectures, and
+it this change actually decreased performance in some cases.
+
+</ol>
+
+</body>
+</html>
diff --git a/db/docs/ref/changelog/2.5.9.html b/db/docs/ref/changelog/2.5.9.html
new file mode 100644
index 000000000..7587d51b7
--- /dev/null
+++ b/db/docs/ref/changelog/2.5.9.html
@@ -0,0 +1,644 @@
+<!--"$Id: 2.5.9.html,v 1.4 2007/05/17 18:17:18 bostic Exp $ (Sleepycat) $Date: 2007/05/17 18:17:18 $"-->
+<html>
+<head>
+<title>The Berkeley DB Package: DB 2.5.9 Change Log</title>
+<meta name="description" content="DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Berkeley DB 2.5.9 Change Log</h3>
+
+<h3>Interface Additions in Berkeley DB 2.5.9:</h3>
+
+<ol>
+
+<p><li>
+A new flag is available in this release for the Berkeley DB cursor
+key/data retrieval interface: <b>DB_NEXT_DUP</b>. This flag causes the
+DBcursor-&gt;c_get routine to return the next duplicate in a list of
+duplicates, and DB_NOTFOUND if there are no additional duplicates to
+return.
+
+<p><li>
+A new flag is available in this release for the Berkeley DB cursor
+key/data retrieval interfaces: <b>DB_GET_BOTH</b>. This flag causes the
+DB-&gt;get and DBcursor-&gt;c_get routines to return success only if <b>both</b>
+the specified key and data items match the entry in the database.
+
+<p><li>
+A new flag is available in this release for the Berkeley DB key/data
+retrieval interfaces: <b>DB_RMW</b>. This flag causes the DB-&gt;get and
+DBcursor-&gt;c_get routines to acquire write locks instead of read locks when
+doing the retrieval. Setting this flag may decrease the likelihood of
+deadlock during a read-modify-write cycle by immediately acquiring the
+write lock during the read part of the cycle, so that another thread of
+control acquiring a read lock for the same item, in its own
+read-modify-write cycle, will not result in deadlock.
+
+<p><li>
+A new flag is available in this release: <b>DB_DUPSORT</b>. This flag
+causes duplicate records to be maintained in sorted order. By default,
+the sort order is the same default lexical sort used by the Btree access
+method. A new field, in the DB_INFO structure passed to the db_open
+routine, is available in this release as well: <b>dup_compare</b>. This
+field is a sort function that is optionally used to sort duplicate data
+items. It is intended to allow applications to maintain duplicates in a
+non-standard sort order.
+
+<p><li>
+A new interface is available in this release, <b>DB-&gt;join</b>. This
+interface takes a set of Berkeley DB cursors as arguments, and returns a
+specialized Berkeley DB cursor whose get function performs a database join
+on the records referenced by the set of cursors.
+
+<p><li>
+A new field is available in this release, set in the Berkeley DB structure
+returned by db_open, <b>DB-&gt;byteswapped</b>. This field is set if the
+underlying database was not in the native host byte order, and can be used
+by the application to determine if its stored data will require host-order
+cleanups before use.
+
+<p><li>
+The dbmclose() interface has been added to the Berkeley DB dbm/ndbm
+compatibility interface, for application compatibility with the Sun
+Microsystems Solaris and other dbm/ndbm interfaces.
+
+</ol>
+
+<h3>Interface Changes in Berkeley DB 2.5.9:</h3>
+
+<ol>
+
+<p><li>
+Previous Berkeley DB releases have been inconsistent with respect to which
+<b>DBT structure</b> flags may be specified to which Berkeley DB
+interfaces. For example, calling DB-&gt;put with the DB_DBT_MALLOC flag
+specified makes no sense, and DB has been inconsistent historically as to
+whether this was treated as an error or simply ignored.
+<p>
+As of this release, inappropriate flags in the DBT structure will simply
+be ignored. This is intended to make it easy to, for example, retrieve
+a key/data pair and then use the data DBT as the key DBT for another
+database without having to reinitialize the flags in the DBT.
+<p>
+Previous Berkeley DB releases also required that threaded applications
+always set the DB_DBT_MALLOC or DB_DBT_USERMEM flags in DBT structures
+when retrieving key/data items. As of this release, specifying
+DB_DBT_MALLOC or DB_DBT_USERMEM is only required when using the non-cursor
+DB interfaces (for example, DB-&gt;get). When using cursor interfaces
+(for example, DBcursor-&gt;c_get), the flags are not required, as memory
+in which the key/data items are returned is allocated and maintained on
+a per-cursor basis.
+
+<p><li>
+Berkeley DB log files are now named <b>log.XXXXXXXXXX</b> instead of
+<b>log.XXXXX</b>, in order to ensure that applications do not run out of
+log filename space.
+<p><font color=red>
+This change is transparent to applications, but may NOT be transparent to
+local shell scripts and utilities.
+</font>
+
+<p><li>
+Previous Berkeley DB releases returned statistics for the Btree databases
+that were only valid for the lifetime of the handle with which they were
+requested, that is, these statistics as returned for a particular Berkeley
+DB handle would only reflect database operations done by that Berkeley DB
+handle and any cursors associated with it.
+<p>
+The following statistics have been removed from the returned Btree
+statistical information: <b>bt_freed</b>, <b>bt_pfxsaved</b>,
+<b>bt_split</b>, <b>bt_rootsplit</b>, <b>bt_fastsplit</b>,
+<b>bt_added</b>, <b>bt_deleted</b>, <b>bt_get</b>, <b>bt_cache_hit</b>,
+<b>bt_cache_miss</b>. If any of these are sufficiently useful to
+application writers that they should be put back into the system, please
+let us know.
+<p><font color=red>
+This change is NOT transparent to applications.
+</font>
+
+<p><li>
+Previous Berkeley DB releases did not support embedded white space in
+Berkeley DB environment configuration strings. As of this release,
+configuration NAME/VALUE strings are still separated by one or more
+whitespace characters (which are discarded), but the VALUE string may
+contain embedded whitespace characters and is terminated by trailing
+whitespace characters and a newline character, both of which are also
+discarded. In addition, empty lines and lines whose first character is
+a whitespace or hash (<b>#</b>) character, in the Berkeley DB
+configuration, file are discarded.
+<p><font color=red>
+This change is potentially NOT transparent to applications.
+</font>
+
+<p><li>
+The DB_REGION_INIT flag to the db_value_set interface has been enhanced
+to write a byte to each page in the region. This allows applications
+to use DB_REGION_INIT to ensure that there is sufficient disk space for
+the backing region file.
+
+</ol>
+
+<h3>Berkeley DB Environment failures:</h3>
+<blockquote>
+<p>
+There exists a class of errors that Berkeley DB considers fatal to an
+entire Berkeley DB environment. An example of this type of error is a
+log write failure due to the disk being out of free space. The only way
+to recover from these failures is for the application to exit, run
+recovery of the Berkeley DB environment, and re-enter DB. (It is not
+strictly necessary that the application exit, although that is the only
+way to recover system resources, for example, file descriptors and
+memory, currently allocated by Berkeley DB.)
+<p>
+In previous Berkeley DB releases, the only way an application could
+determine that a fatal error had occurred was to monitor Berkeley DB
+function return values, looking for unexpected ones, such as ENOSPC, or
+EPERM (which has historically been returned by Berkeley DB to indicate a
+potential underlying database corruption).
+<p>
+As of this release, we have added a new error return value, DB_RUNRECOVERY.
+ This error can be returned by <b>any</b> Berkeley DB interface. If a
+fatal error occurs, DB_RUNRECOVERY will then be returned from all
+subsequent DB calls made by any threads or processes participating in the
+DB environment.
+<p>
+The EPERM error return no longer has a special meaning in Berkeley DB.
+<p>
+Optionally, applications may also specify a fatal-error callback function
+by setting the <b>db_paniccall</b> field of the DB_ENV structure before
+initializing the environment with db_appinit (DbEnv::appinit). This
+callback function will be called with two arguments: the DB_ENV structure
+associated with the environment and the errno value associated with the
+underlying error that caused the problem.
+<p>
+Applications can handle fatal errors in one of two ways: by checking for
+DB_RUNRECOVERY as part of their normal Berkeley DB error return checking,
+or, in applications that have no cleanup processing of their own, by
+simply exiting the application when the callback function is called.
+<p>
+We would be very interested in any comments that you'd care to make on
+this interface change, in particular, any comments on the sufficiency
+of the interface for your Berkeley DB application.
+<p><font color=red>
+This change is NOT transparent to applications.
+</font>
+</blockquote>
+
+<h3>Documentation Changes:</h3>
+
+<ol>
+
+<p><li>
+The Berkeley DB documentation has been completely reworked. It is no
+longer available in flat text, UNIX roff or PostScript formats, but is
+now <b>only available in HTML format</b>. To use the Berkeley DB
+documentation, point your browser to the Berkeley DB distribution or
+installation directory <b>db-2.5.9/docs/index.html</b>. This release
+also includes the beginnings of the Berkeley DB Reference Guide, as well
+as the manual pages.
+
+</ol>
+
+<h3>B+tree Access Method Bug Fixes:</h3>
+
+<ol>
+
+<p><li>
+Cursor delete operations were not necessarily being undone after deadlock,
+potentially leading to incorrect data.
+
+<p><li>
+Deleted, off-page duplicate items could be recovered incorrectly,
+potentially leading to incorrect data.
+
+<p><li>
+Log records could be written outside of a transaction under some
+circumstances, potentially corrupting the log so that recovery would fail.
+
+<p><li>
+Completely emptying large trees could cause corruption of the database
+root page during the final reverse split.
+
+<p><li>
+Failure during page split could leave cursors referencing incorrect data.
+
+<p><li>
+Retrieving records based on logical record number could return incorrect
+data if logically adjacent records had previously been deleted.
+
+<p><li>
+The Btree access method is more aggressive in this release about
+discarding locks within transactions that are not needed for correctness.
+This change significantly decreases the probability of deadlock for some
+applications.
+
+</ol>
+
+<h3>Hash Access Method Bug Fixes:</h3>
+
+<ol>
+
+<p><li>
+Storing duplicate data items using the DB_CURRENT flag could result in
+incorrect data.
+
+<p><li>
+Cursors and their locks did not always return unchanged on operation
+failure.
+
+<p><li>
+Entering a sufficient number of duplicate data items into the database
+could result in incorrect cursor positioning and/or a corrupted database.
+
+</ol>
+
+<h3>Recno Access Method Bug Fixes:</h3>
+
+<ol>
+
+<p><li>
+The logical record number returned from DB_APPEND calls was stored into
+library memory instead of into the user-specified memory.
+
+<p><li>
+The memory in which the backing source filename was stored could be freed
+multiple times, potentially leading to application core dump.
+
+</ol>
+
+<h3>General Access Method Bug Fixes:</h3>
+
+<ol>
+
+<p><li>
+Incorrectly treated setting the database cachesize in the presence of a
+Berkeley DB environment to be an error, even if the environment didn't
+not initialize a shared memory buffer pool.
+
+<p><li>
+Using the DBcursor-&gt;c_get interface with the DB_KEYFIRST or DB_KEYLAST
+flags to insert a new key into the database would fail.
+
+<p><li>
+In previous Berkeley DB releases each cursor operation (when not part of
+a transaction) potentially used a different locker ID, making it possible
+for cursor operations to lock against themselves. In the 2.5.9 release,
+the cursor locker ID is maintained for the life of the cursor, instead.
+
+<p><li>
+The optional user-specified transaction recovery function was not being
+called during Berkeley DB recovery, and when using the db_printlog
+utility.
+
+<p><li>
+Pages of duplicate data items were incorrectly split and logged/recovered,
+potentially leading to database corruption.
+
+<p><li>
+During recovery, deleted database files could cause recovery to fail.
+
+</ol>
+
+<h3>C++ API Changes and Bug Fixes</h3>
+
+<ol>
+
+<p><li>
+A DbEnv::version method has been added to allow access to major, minor
+and patch numbers for the current version.
+
+<p><li>
+The DbEnv class has been cleaned up so that inappropriate get and set
+methods have been removed:
+<p>
+<blockquote>
+DbEnv::get_data_cnt<br>
+DbEnv::get_data_dir<br>
+DbEnv::get_data_next<br>
+DbEnv::get_flags<br>
+DbEnv::get_home<br>
+DbEnv::get_log_dir<br>
+DbEnv::get_tmp_dir<br>
+DbEnv::set_data_cnt<br>
+DbEnv::set_data_dir<br>
+DbEnv::set_data_next<br>
+DbEnv::set_flags<br>
+DbEnv::set_home<br>
+DbEnv::set_log_dir<br>
+DbEnv::set_tmp_dir<br>
+</blockquote>
+<p>
+These methods are unneeded because the constructor with arguments,
+or the appinit() method, can be used to set this information.
+<p>
+<blockquote>
+DbEnv::get_errcall<br>
+DbEnv::get_errfile<br>
+DbEnv::get_error_model<br>
+DbEnv::get_error_stream<br>
+DbEnv::get_errpfx<br>
+DbEnv::get_lg_max<br>
+DbEnv::get_lk_conflicts<br>
+DbEnv::get_lk_detect<br>
+DbEnv::get_lk_max<br>
+DbEnv::get_lk_modes<br>
+DbEnv::get_lorder<br>
+DbEnv::get_mp_mmapsize<br>
+DbEnv::get_mp_size<br>
+DbEnv::get_tx_max<br>
+DbEnv::get_tx_recover<br>
+DbEnv::get_verbose<br>
+</blockquote>
+<p>
+These get methods accessed information that was never set by Berkeley DB.
+
+<p><li>
+Remaining DbEnv::set_* methods may throw an exception if they are called
+after the environment has been initialized (either via appinit or the
+constructor with arguments).
+
+<p><li>
+The DbInfo class has been reworked so that inappropriate get methods
+have been removed. These get methods accessed information that was
+never set by Berkeley DB.
+<p>
+<blockquote>
+DbInfo::get_bt_compare<br>
+DbInfo::get_bt_maxkey<br>
+DbInfo::get_bt_minkey<br>
+DbInfo::get_bt_prefix<br>
+DbInfo::get_cachesize<br>
+DbInfo::get_flags<br>
+DbInfo::get_h_ffactor<br>
+DbInfo::get_h_hash<br>
+DbInfo::get_h_nelem<br>
+DbInfo::get_lorder<br>
+DbInfo::get_malloc<br>
+DbInfo::get_pagesize<br>
+DbInfo::get_re_delim<br>
+DbInfo::get_re_len<br>
+DbInfo::get_re_pad<br>
+DbInfo::get_re_source<br>
+</blockquote>
+<p>
+Methods to get and set underlying lock identifiers in a DbLock have
+been removed, as lock identifiers should be completely opaque to the
+application.
+
+</ol>
+
+<h3>Java API Changes and Bug Fixes</h3>
+
+<ol>
+
+<p><li>
+The DB_SET_RANGE flag did not correctly return data items.
+
+<p><li>
+Db.stat() is now declared to return an Object. The object returned is of
+type DbBtreeStat if the file was created using Db.DB_BTREE. In the
+future, this will return other types, for example, DbHashStat.
+<p>
+The DbBtreeStat, DbLockStat, DbMpoolFStat, DbMpoolStat and DbTxnStat classes
+have been changed to allow direct access to their data members. DbLogStat
+is a new class.
+
+<p><li>
+The DbEnv class has been reworked and all inappropriate get and set
+methods have been removed:
+<p>
+<blockquote>
+DbEnv.get_data_cnt<br>
+DbEnv.get_data_next<br>
+DbEnv.get_flags<br>
+DbEnv.get_home<br>
+DbEnv.get_log_dir<br>
+DbEnv.get_tmp_dir<br>
+DbEnv.set_data_cnt<br>
+DbEnv.set_data_next<br>
+DbEnv.set_flags<br>
+DbEnv.set_home<br>
+DbEnv.set_log_dir<br>
+DbEnv.set_tmp_dir<br>
+</blockquote>
+<p>
+These methods are unneeded because the constructor with arguments, or the
+appinit() method, can be used to set this information.
+
+<p>
+<blockquote>
+DbEnv.get_errcall<br>
+DbEnv.get_errpfx<br>
+DbEnv.get_lg_max<br>
+DbEnv.get_lk_conflicts<br>
+DbEnv.get_lk_detect<br>
+DbEnv.get_lk_max<br>
+DbEnv.get_lk_modes<br>
+DbEnv.get_lorder<br>
+DbEnv.get_mp_mmapsize<br>
+DbEnv.get_mp_size<br>
+DbEnv.get_tx_max<br>
+DbEnv.get_verbose<br>
+</blockquote>
+<p>
+These get methods used to access information that was never set by
+Berkeley DB.
+<p>
+The DbEnv.get_java_version_string method has been removed, and the Java
+part of Berkeley DB no longer maintains its own version information.
+
+<p><li>
+Remaining DbEnv.set_* methods may throw a DbException if they are called
+after the environment has been initialized (either via appinit or the
+constructor with arguments).
+
+<p><li>
+The DbInfo class has been reworked so that inappropriate get methods
+have been removed. These get methods used to access information that
+was never set by Berkeley DB.
+<p>
+<blockquote>
+DbInfo.get_bt_maxkey<br>
+DbInfo.get_bt_minkey<br>
+DbInfo.get_cachesize<br>
+DbInfo.get_flags<br>
+DbInfo.get_h_ffactor<br>
+DbInfo.get_h_hash<br>
+DbInfo.get_h_nelem<br>
+DbInfo.get_lorder<br>
+DbInfo.get_pagesize<br>
+DbInfo.get_re_delim<br>
+DbInfo.get_re_len<br>
+DbInfo.get_re_pad<br>
+DbInfo.get_re_source<br>
+</blockquote>
+
+<p><li>
+Methods to get and set underlying lock identifiers in a DbLock have
+been removed, as lock identifiers should be completely opaque to the
+application.
+
+<p><li>
+The DbRunRecoveryException class has been added as a subclass of
+DbException. A DbRunRecoveryException object will be thrown when a
+fatal error occurs in Berkeley DB, requiring recovery to be performed.
+
+</ol>
+
+<h3>Shared Memory Buffer Pool Subsystem Bug Fixes:</h3>
+
+<ol>
+
+<p><li>
+It was possible for threads opening and closing databases in a fairly full
+buffer cache to free memory that was still in use, resulting in
+application failure.
+
+<p><li>
+If the memp_trickle() interface was unable to find a single buffer to
+flush in the entire buffer list, it would return with the shared memory
+region mutex locked.
+
+<p><li>
+Opening underlying files of certain sizes in the buffer pool would
+incorrectly fail.
+
+</ol>
+
+<h3>Locking Subsystem Bug Fixes:</h3>
+
+<ol>
+
+<p><li>
+If the a locker being forced to wait does not currently hold any locks,
+the deadlock detector is no longer run.
+
+</ol>
+
+<h3>Logging Subsystem Bug Fixes:</h3>
+
+<ol>
+
+<p><li>
+If the first log get call after database recovery used the DB_NEXT flag,
+it would fail.
+
+<p><li>
+If databases were opened multiple times without intervening closes,
+recovery could fail.
+
+<p><li>
+A memory leak in the log_archive interface has been fixed.
+
+</ol>
+
+<h3>Additional Bug Fixes:</h3>
+
+<ol>
+
+<p><li>
+Windows/NT: using shared anonymous memory did not work correctly between
+processes sharing the database.
+
+<p><li>
+Utilities: Signal handling and Berkeley DB region exit was incorrect.
+Among other issues, the db_load utility could exit holding a region mutex.
+
+<p><li>
+Dbm/Ndbm: System error values were not always being correctly returned.
+
+</ol>
+
+<h3>System Porting and Build Procedure Changes:</h3>
+
+<ol>
+
+<p><li>
+A alpha-release port to VMS has been added to the Berkeley DB
+distribution. The port has not yet run the Berkeley DB test
+suite, but there are no known problems.
+
+<p><li>
+Berkeley DB now uses the pstat_getdynamic(2) interface on Hewlett-Packard
+HP/UX systems to detect the presence of multiple processors.
+
+<p><li>
+For performance reasons, the Berkeley DB release now uses the Sun
+Microsystems Solaris pread(2) and pwrite(2) UNIX interfaces, if they
+are available.
+
+<p><li>
+Berkeley DB now compiles with the -D_THREAD_SAFE C preprocessor flag
+and loads with the libc_r.a C library by default on FreeBSD systems.
+
+<p><li>
+For portability reasons, shared memory segments allocated using the UNIX
+shmget(2) function are now allocated as IPC_PRIVATE. (Apparently, marking
+them as IPC_PRIVATE does not affect that they are available to other
+processes.)
+
+<p><li>
+The standard UNIX install for the Berkeley DB library now installs
+Berkeley DB into its own hierarchy instead of into separate local
+directories. By default, the install locations are:
+<p>
+<table border=1>
+<tr>
+ <th>Location</th>
+ <th>Contents</th>
+</tr><tr>
+ <td>/usr/local/BerkeleyDB/bin</td>
+ <td>binaries</td>
+</tr><tr>
+ <td>/usr/local/BerkeleyDB/include</td>
+ <td>include files</td>
+</tr><tr>
+ <td>/usr/local/BerkeleyDB/lib</td>
+ <td>libraries</td>
+</tr><tr>
+ <td>/usr/local/BerkeleyDB/docs</td>
+ <td>HTML documentation</td>
+</tr>
+</table>
+
+<p><li>
+For portability reasons, the standard UNIX Berkeley DB library archive is
+built with the <b>-cr</b> options in this release, instead of the
+<b>-cq</b> options as done previously.
+
+<p><li>
+The standard UNIX Berkeley DB configuration will now automatically detect
+and use gcc if no compiler named cc is found.
+
+<p><li>
+When the C pre-processor DIAGNOSTIC value is #defined, memory is
+overwritten with a 0xdb pattern instead of a 0xff pattern.
+
+</ol>
+
+<h3>Additional Changes: db_dump</h3>
+
+<ol>
+
+<p><li>
+The db_dump utility has a new option, <b>-N</b>. This option allows
+db_dump to be run without acquiring any shared region mutexes. This
+option is intended for debugging use only.
+
+<p><li>
+The db_dump utility now allows a Berkeley DB environment directory to be
+specified (the <b>-h</b> option) at the same time as the "debugging
+output" option (the <b>-d</b> option).
+
+<p><li>
+The db_dump utility now uses the shared memory buffer pool region if a
+Berkeley DB environment directory is specified, which allows users to see
+the current state of the database instead of only the database state that
+has already been flushed to disk.
+
+</ol>
+
+</body>
+</html>
diff --git a/db/docs/ref/changelog/2.6.4.html b/db/docs/ref/changelog/2.6.4.html
new file mode 100644
index 000000000..8e1dfc522
--- /dev/null
+++ b/db/docs/ref/changelog/2.6.4.html
@@ -0,0 +1,201 @@
+<!--"$Id: 2.6.4.html,v 1.4 2007/05/17 18:17:18 bostic Exp $ (Sleepycat) $Date: 2007/05/17 18:17:18 $"-->
+<html>
+<head>
+<title>The Berkeley DB Package: DB 2.6.4 Change Log</title>
+<meta name="description" content="Berkeley DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Berkeley DB 2.6.4 Change Log</h3>
+
+<h3>Interface Additions in Berkeley DB 2.6.4:</h3>
+
+<ol>
+
+<p><li>
+Berkeley DB now supports a new mode of operation: Concurrent Access Methods.
+This configuration supports multiple-reader, single-writer access without
+requiring deadlock detection and transaction protection. The new interface
+is specified by using the DB_INIT_CDB flag to the db_appinit() function.
+<p>
+In addition, the DB-&gt;cursor interface has been modified to take a fourth
+argument, a <b>flags</b> argument. This change will require that all
+applications using the DB-&gt;cursor interface be modified and recompiled.
+(The necessary modification is trivial, simply add a final argument of
+<b>0</b> to the DB-&gt;cursor call.)
+<p><font color=red>
+This change is NOT transparent to applications.
+</font>
+
+<p><li>
+In previous Berkeley DB releases, cursors in Recno databases with mutable
+record numbers had to be re-positioned each time they were used to delete
+a record. This is no longer the case, and all of the records in the
+database logically at and above the cursor may now be deleted by
+repeatedly calling the delete function after positioning the cursor once.
+This change causes Berkeley DB practice to conform to the documentation
+found in previous releases.
+<p><font color=red>
+This change is NOT transparent to applications.
+</font>
+
+<p><li>
+Berkeley DB no longer permits applications to specify database page sizes
+that are not powers-of-two. This change fixes a bug which could cause
+application failure, as page alignments were not necessarily correct when
+files with page sizes other than powers-of-two were mapped into process
+memory.
+<p><font color=red>
+This change is NOT transparent to applications.
+</font>
+
+</ol>
+
+<h3>B+tree Access Method Bug Fixes:</h3>
+
+<ol>
+
+<p><li>
+Fix a bug which could cause application failure or corrupted data when
+database operations would split a Btree page and then subsequently fail
+or attempt to physically delete records after being restarted.
+
+<p><li>
+Fix a bug which could cause application failure when deleting records
+failed due to a deadlock.
+
+<p><li>
+Fix a bug which could cause a NULL pointer dereference when the relinking
+of duplicate data item pages failed due to deadlock.
+
+<p><li>
+Fix a memory leak where an internal cursor could be left open when
+databases were opened.
+
+<p><li>
+Fix a single-byte memory leak when the standard DB-&gt;del() interface was
+used to delete key/data pairs with duplicate data items.
+
+</ol>
+
+<h3>Hash Access Method Bug Fixes:</h3>
+
+<ol>
+
+<p><li>
+Fix a bug which could cause application failure or data corruption when
+deleting on-page duplicate items.
+
+<p><li>
+Fix a memory leak when closing cursors.
+
+</ol>
+
+<h3>Recno Access Method Bug Fixes:</h3>
+
+<ol>
+
+<p><li>
+Cursors that referenced deleted records were not correctly updated when
+the record was overwritten with new data, and would continue to return
+that the record was still in a "deleted" state.
+
+<p><li>
+Fix a bug where application specified read-modify-write semantics were
+ignored.
+
+<p><li>
+Remove lock-coupling behavior in tiny databases to avoid perpetual
+deadlock.
+
+<p><li>
+Fix a bug where root pages were not always correctly write-locked.
+
+</ol>
+
+<h3>Java API Changes and Bug Fixes</h3>
+
+<ol>
+
+<p><li>
+Fix compile include directory ordering, which could cause Java to be
+compiled using the wrong db.h include file.
+
+</ol>
+
+<h3>General Access Method Bug Fixes:</h3>
+
+<ol>
+
+<p><li>
+Fix a bug which left the read-modify-write semantics in place after the
+operation for which the application specified it completed.
+
+<p><li>
+Fix a bug which caused application failure if a NULL key argument was
+specified for the DB_AFTER, DB_BEFORE or DB_CURRENT flags to the
+DBcursor-&gt;get() interface.
+
+<p><li>
+Change the initial mutex timer back-off from 10ms to 1ms.
+
+</ol>
+
+<h3>Shared Memory Buffer Pool Subsystem Bug Fixes:</h3>
+
+<ol>
+
+<p><li>
+Fix a bug in large database files (&gt;4Gb), which could potentially cause
+data corruption when a database was closed, reopened and new pages were
+then allocated.
+
+<p><li>
+Modify the memp_sync() interface code to no longer hold Berkeley DB region
+locks across memory allocation calls (for example, malloc(3)). This
+change significantly increases throughput in applications checkpointing
+large memory caches.
+
+<p><li>
+Modify the memory pool qsort(3) comparison function to work when called
+by badly written qsort(3) functions.
+
+</ol>
+
+<h3>Additional Bug Fixes:</h3>
+
+<ol>
+
+<p><li>
+Fix a bug in the Berkeley DB error functions where variable numbers of
+arguments were not correctly accessed on some architectures, for
+example, the PowerPC.
+
+</ol>
+
+<h3>System Porting and Build Procedure Changes:</h3>
+
+<ol>
+
+<p><li>
+Support installation into prefix directories for which multiple directory
+components do not yet exist.
+
+<p><li>
+Support installation into different system directories on a per-type
+basis, for example, all the binaries to one directory, and include files to
+another.
+
+<p><li>
+Fix a bug where the supplied portability routine memcpy() was not
+correctly compiled.
+
+<p><li>
+Modify auto-configuration to refuse to configure in the top-level
+distribution directory.
+
+</ol>
+
+</body>
+</html>
diff --git a/db/docs/ref/changelog/2.6.5.html b/db/docs/ref/changelog/2.6.5.html
new file mode 100644
index 000000000..6b27dfd59
--- /dev/null
+++ b/db/docs/ref/changelog/2.6.5.html
@@ -0,0 +1,17 @@
+<!--"$Id: 2.6.5.html,v 1.3 2007/05/17 18:17:18 bostic Exp $ (Sleepycat) $Date: 2007/05/17 18:17:18 $"-->
+<html>
+<head>
+<title>The Berkeley DB Package: DB 2.6.5 Change Log</title>
+<meta name="description" content="Berkeley DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Berkeley DB 2.6.5 Change Log</h3>
+
+<p>
+Berkeley DB version 2.6.5 is the GA release of version 2.6.4,
+and is the new stable release of Berkeley DB, replacing version 2.4.14.
+
+</body>
+</html>
diff --git a/db/docs/ref/changelog/2.6.6.html b/db/docs/ref/changelog/2.6.6.html
new file mode 100644
index 000000000..25d7da65f
--- /dev/null
+++ b/db/docs/ref/changelog/2.6.6.html
@@ -0,0 +1,80 @@
+<!--"$Id: 2.6.6.html,v 1.4 2007/05/17 18:17:18 bostic Exp $ (Sleepycat) $Date: 2007/05/17 18:17:18 $"-->
+<html>
+<head>
+<title>The Berkeley DB Package: DB 2.6.6 Change Log</title>
+<meta name="description" content="Berkeley DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Berkeley DB 2.6.6 Change Log</h3>
+
+<p>
+Berkeley DB version 2.6.6 is version 2.6.5 with all released patches
+applied.
+
+<h3>Bug Fixes:</h3>
+<ol>
+<p><li>
+When looking for an already open log file, do not examine a filename
+structure if its reference count is 0. This problem cannot cause data
+corruption, but may cause program failure.
+<p><li>
+Berkeley DB recovery assumes that there are at least two checkpoints. It
+was possible for log archival to leave the recovery area with only a single
+checkpoint.
+<p><li>
+Version 2.6.5 cannot recover version 2.4.14 log files.
+<p><li>
+Database file opens after recovery could sometimes fail.
+<p><li>
+If only a single checkpoint is found, perform recovery from the beginning
+of the log.
+<p><li>
+The Btree access method delete-by-key code path did not always detect that
+a key/data pair was also referenced by a cursor, which could cause a cursor
+to reference incorrect data.
+<p><li>
+Concurrent Data Store operations could sometimes fail because write
+cursors were not correctly identified.
+<p><li>
+The DB_SET_RANGE flag did not always correctly deal with on-page deleted
+records in the Btree access method.
+<p><li>
+If the buffer cache was completely dirty, transaction checkpoints could
+pin down too many buffers and cause other operations to fail.
+<p><li>
+In the Btree access method, when creating a new record and specifying a
+<b>dbt.off</b> offset value, the DB_DBT_PARTIAL flag was not handled
+correctly.
+<p><li>
+It was possible for the last-known-LSN-on-disk to not be set correctly
+during recovery, which could cause the loss of recovery's checkpoint
+record.
+<p><li>
+Reclaim lockers when using lock_vec to release locks.
+<p><li>
+Re-order subsystem close when closing the environment so that the logging
+subsystem can potentially flush buffers through the shared memory buffer
+pool.
+<p><li>
+Never attempt to grow the shared regions when initially connecting to the
+Berkeley DB environment.
+</ol>
+
+<h3>Other Changes:</h3>
+<ol>
+<p><li>
+In non-threaded applications, change cursors to share a locker ID in
+order to avoid self-deadlocks.
+<p><li>
+Defend against the possibility that records from multiple log files are
+present in the log buffer cache.
+<p><li>
+Test suite change: generate fail message if environment open doesn't work.
+<p><li>
+Update the version numbers from Berkeley DB 2.6.5 to Berkeley DB 2.6.6.
+</ol>
+
+</body>
+</html>
diff --git a/db/docs/ref/changelog/2.6.7.html b/db/docs/ref/changelog/2.6.7.html
new file mode 100644
index 000000000..b6717db8c
--- /dev/null
+++ b/db/docs/ref/changelog/2.6.7.html
@@ -0,0 +1,55 @@
+<!--"$Id: 2.6.7.html,v 1.3 2007/05/17 18:17:18 bostic Exp $ (Sleepycat) $Date: 2007/05/17 18:17:18 $"-->
+<html>
+<head>
+<title>The Berkeley DB Package: DB 2.6.7 Change Log</title>
+<meta name="description" content="Berkeley DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Berkeley DB 2.6.7 Change Log</h3>
+
+<p>
+Berkeley DB version 2.6.7 is version 2.6.6 with all released patches
+applied.
+
+<p>
+Berkeley DB version 2.6.7 is the current stable release of Berkeley DB,
+replacing version 2.6.6.
+
+<h3>Bug Fixes:</h3>
+<ol>
+<p><li>
+If there are a sufficient number of threads competing for limited numbers
+of pages, it's possible to split Btree pages too many times, and cause a
+core dump.
+<p><li>
+Under some circumstances, lockers could be left on locker chains.
+No incorrect behavior could occur but resources could be leaked.
+<p><li>
+Fix potential races in updating checkpoint buffer counts that can
+cause checkpoint calls to never finish.
+<p><li>
+Fix a potential NULL pointer dereference in the database delete-by-key
+interface.
+<p><li>
+Fix a case where it was possible for EAGAIN to not be returned from the
+database get-by-key interface.
+<p><li>
+Ignore log records not involved in transactions so that actions taken
+outside of transactions are not undone during recovery.
+<p><li>
+Fix a recovery bug when database files are opened/closed multiple times in
+the same session.
+<p><li>
+Fix a memory pool race during buffer discard in memory tight environments.
+</ol>
+
+<h3>Other Changes:</h3>
+<ol>
+<p><li>
+Update the Berkeley DB release version numbers from 2.6.6 to 2.6.7.
+</ol>
+
+</body>
+</html>
diff --git a/db/docs/ref/changelog/2.7.1.html b/db/docs/ref/changelog/2.7.1.html
new file mode 100644
index 000000000..63ec4a5ff
--- /dev/null
+++ b/db/docs/ref/changelog/2.7.1.html
@@ -0,0 +1,40 @@
+<!--"$Id: 2.7.1.html,v 1.3 2007/05/17 18:17:18 bostic Exp $ (Sleepycat) $Date: 2007/05/17 18:17:18 $"-->
+<html>
+<head>
+<title>The Berkeley DB Package: DB 2.7.1 Change Log</title>
+<meta name="description" content="Berkeley DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Berkeley DB 2.7.1 Change Log</h3>
+
+<h3>New Features:</h3>
+<ol>
+
+<p><li>
+This release includes support for nested transactions. (No
+interface changes were required.)
+
+</ol>
+<h3>System Porting and Build Procedure Changes:</h3>
+<ol>
+
+<p><li>
+FreeBSD systems are now built using the flags <b>-D_THREAD_SAFE</b> and
+<b>-pthread</b> instead of directly loading with the <b>-lc_r</b> library.
+
+<p><li>
+Linux systems are now built using the <b>-D_REENTRANT</b> flag.
+
+</ol>
+<h3>Other Changes:</h3>
+<ol>
+
+<p><li>
+The default memory pool cache size has been increase from 128K to 256K.
+
+</ol>
+
+</body>
+</html>
diff --git a/db/docs/ref/changelog/2.7.3.html b/db/docs/ref/changelog/2.7.3.html
new file mode 100644
index 000000000..67affb3e4
--- /dev/null
+++ b/db/docs/ref/changelog/2.7.3.html
@@ -0,0 +1,59 @@
+<!--"$Id: 2.7.3.html,v 1.3 2007/05/17 18:17:18 bostic Exp $ (Sleepycat) $Date: 2007/05/17 18:17:18 $"-->
+<html>
+<head>
+<title>The Berkeley DB Package: DB 2.7.3 Change Log</title>
+<meta name="description" content="Berkeley DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Berkeley DB 2.7.3 Change Log</h3>
+
+<h3>Interface Additions and Changes:</h3>
+<ol>
+
+<p><li>
+This release includes support for nested transactions. No interface
+changes were required.
+
+<p><li>
+This release includes support for Berkeley DB as an XA Resource Manager.
+There is an additional C interface, db_xa_open, and a corresponding C++
+method, Db::xa_open.
+<font color=red>
+<p>XA support is not yet fully tested.
+<p>No Windows XA interface is included.
+</font>
+
+</ol>
+<h3>Configuration and Build Changes:</h3>
+<ol>
+
+<p><li>
+FreeBSD systems are now built using the flags <b>-D_THREAD_SAFE</b> and
+<b>-pthread</b> instead of directly loading with the <b>-lc_r</b> library.
+
+<p><li>
+Linux systems are now built using the <b>-D_REENTRANT</b> flag.
+
+</ol>
+<h3>Additional Changes:</h3>
+<ol>
+
+<p><li>
+The default memory pool cache size has been increase from 128K to 256K.
+
+</ol>
+<h3>Additional Bug Fixes:</h3>
+<ol>
+
+<p><li>
+Freeing memory allocated by the TCL library historically failed on Windows
+platforms, due to a mismatch of malloc/free implementations between the
+TCL library and the Berkeley DB module. (This change only affects the
+Berkeley DB test suite.)
+
+</ol>
+
+</body>
+</html>
diff --git a/db/docs/ref/changelog/2.7.4.html b/db/docs/ref/changelog/2.7.4.html
new file mode 100644
index 000000000..e2d46e8a5
--- /dev/null
+++ b/db/docs/ref/changelog/2.7.4.html
@@ -0,0 +1,102 @@
+<!--"$Id: 2.7.4.html,v 1.4 2007/05/17 18:17:18 bostic Exp $ (Sleepycat) $Date: 2007/05/17 18:17:18 $"-->
+<html>
+<head>
+<title>The Berkeley DB Package: DB 2.7.4 Change Log</title>
+<meta name="description" content="Berkeley DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Berkeley DB 2.7.4 Change Log</h3>
+
+Berkeley DB version 2.7.4 is version 2.7.3 with a set of specific bug
+fixes applied. There were no interface changes or new features.
+
+<h3>Bug Fixes:</h3>
+<ol>
+
+<p><li>
+When looking for an already open log file, do not examine a filename
+structure if its reference count is 0. This problem cannot cause data
+corruption, but may cause program failure.
+
+<p><li>
+Berkeley DB recovery assumes that there are at least two checkpoints. It
+was possible for log archival to leave the recovery area with only a single
+checkpoint.
+
+<p><li>
+Version 2.7.3 could not recover version 2.4.14 log files.
+
+<p><li>
+Database file opens after recovery could sometimes fail.
+
+<p><li>
+If only a single checkpoint is found, perform recovery from the beginning
+of the log.
+
+<p><li>
+The Btree access method delete-by-key code path did not always detect that
+a key/data pair was also referenced by a cursor, which could cause a cursor
+to reference incorrect data.
+
+<p><li>
+Concurrent Data Store operations could sometimes fail because write
+cursors were not correctly identified.
+
+<p><li>
+The DB_SET_RANGE flag did not always correctly deal with on-page deleted
+records in the Btree access method.
+
+<p><li>
+If the buffer cache was completely dirty, transaction checkpoints could
+pin down too many buffers and cause other operations to fail.
+
+<p><li>
+In non-threaded applications, change cursors to share a locker ID in
+order to avoid self-deadlocks.
+
+<p><li>
+In the Btree access method, when creating a new record and specifying a
+<b>dbt.off</b> offset value, the DB_DBT_PARTIAL flag was not handled
+correctly.
+
+<p><li>
+It was possible for the last-known-LSN-on-disk to not be set correctly
+during recovery, which could cause the loss of recovery's checkpoint
+record.
+
+<p><li>
+Test suite change: generate fail message if environment open doesn't work.
+
+<p><li>
+Defend against the possibility that records from multiple log files are
+present in the log buffer cache.
+
+<p><li>
+Reclaim lockers when using lock_vec to release locks.
+
+<p><li>
+Re-order subsystem close when closing the environment so that the logging
+subsystem can potentially flush buffers through the shared memory buffer
+pool.
+
+<p><li>
+Never attempt to grow the shared regions when initially connecting to the
+Berkeley DB environment.
+
+<p><li>
+Invalidate the local transaction structure after commit, abort or prepare,
+as the XA transaction manager does not call xa_end on commit, abort or
+prepare.
+
+<p><li>
+Allow either join or resume operations on XA start.
+
+<p><li>
+Update the version numbers from Berkeley DB 2.7.3 to Berkeley DB 2.7.4.
+
+</ol>
+
+</body>
+</html>
diff --git a/db/docs/ref/changelog/2.7.5.html b/db/docs/ref/changelog/2.7.5.html
new file mode 100644
index 000000000..44eeafb14
--- /dev/null
+++ b/db/docs/ref/changelog/2.7.5.html
@@ -0,0 +1,38 @@
+<!--"$Id: 2.7.5.html,v 1.3 2007/05/17 18:17:18 bostic Exp $ (Sleepycat) $Date: 2007/05/17 18:17:18 $"-->
+<html>
+<head>
+<title>The Berkeley DB Package: DB 2.7.5 Change Log</title>
+<meta name="description" content="Berkeley DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Berkeley DB 2.7.5 Change Log</h3>
+
+Berkeley DB version 2.7.5 is version 2.7.4 with a set of specific bug
+fixes applied. There were no interface changes or new features.
+
+<h3>Bug Fixes:</h3>
+<ol>
+
+<p><li>
+When deleting a Btree key/data pair using the DB-&gt;del interface, there
+was a potential NULL pointer dereference.
+
+<p><li>
+Lockers were being left on locker chains under some circumstances,
+causing a potential resource leak.
+
+<p><li>
+XA cursors were not being linked into the database active queue.
+
+<p><li>
+Modify Berkeley DB recovery to work correctly in an XA environment.
+
+<p><li>
+Update the version numbers from Berkeley DB 2.7.4 to Berkeley DB 2.7.5.
+
+</ol>
+
+</body>
+</html>
diff --git a/db/docs/ref/changelog/2.7.7.html b/db/docs/ref/changelog/2.7.7.html
new file mode 100644
index 000000000..5ccaedb3a
--- /dev/null
+++ b/db/docs/ref/changelog/2.7.7.html
@@ -0,0 +1,51 @@
+<!--"$Id: 2.7.7.html,v 1.3 2007/05/17 18:17:18 bostic Exp $ (Sleepycat) $Date: 2007/05/17 18:17:18 $"-->
+<html>
+<head>
+<title>The Berkeley DB Package: DB 2.7.7 Change Log</title>
+<meta name="description" content="Berkeley DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Berkeley DB 2.7.7 Change Log</h3>
+
+Berkeley DB version 2.7.7 is version 2.7.5 with a set of specific bug
+fixes applied. There were no public interface changes or new features.
+
+<h3>Bug Fixes:</h3>
+<ol>
+
+<p><li>
+Fix potential races in updating checkpoint buffer counts that can
+cause checkpoint calls to never finish.
+<p><li>
+Fix for XA support, allows two-phase commit processing to work.
+<p><li>
+Fix a recovery bug when database files are opened/closed multiple times in
+the same session.
+<p><li>
+Change file descriptor usage to permit Sendmail's fcntl(2) locking scheme.
+<p><li>
+Fix ANSI C++ usage to avoid GNU gcc-2.95 warning messages.
+<p><li>
+If there are a sufficient number of threads competing for limited numbers
+of pages, it's possible to split Btree pages too many times, and cause a
+core dump.
+<p><li>
+Fix a case where it was possible for EAGAIN to not be returned from the
+database get-by-key interface.
+<p><li>
+Ignore log records not involved in transactions so that actions taken
+outside of transactions are not undone during recovery.
+<p><li>
+Fix a memory pool race during buffer discard in memory tight environments.
+</ol>
+
+<h3>Other Changes:</h3>
+<ol>
+<p><li>
+Update the Berkeley DB release version numbers from 2.7.5 to 2.7.7.
+</ol>
+
+</body>
+</html>
diff --git a/db/docs/ref/changelog/3.0.55.html b/db/docs/ref/changelog/3.0.55.html
new file mode 100644
index 000000000..8ba06775b
--- /dev/null
+++ b/db/docs/ref/changelog/3.0.55.html
@@ -0,0 +1,945 @@
+<!--"$Id: 3.0.55.html,v 1.5 2007/05/17 18:17:18 bostic Exp $ (Sleepycat) $Date: 2007/05/17 18:17:18 $"-->
+<html>
+<head>
+<title>The Berkeley DB Package: DB 3.0.55 Change Log</title>
+<meta name="description" content="Berkeley DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Berkeley DB 3.0.55 Change Log</h3>
+
+<h3>Database On-Disk Format Changes:</h3>
+<ol>
+<li>The on-disk Btree/Recno format has changed from version 6 to version
+7, and the on-disk Hash format has changed from version 5 to version 6.
+For information on upgrading database formats, see section 3.3, "Upgrading
+databases" in the Berkeley DB Reference Guide
+</ol>
+
+<h3>Major New Features:</h3>
+<ol>
+<li>A new Access Method has been added to Berkeley DB: the Queue Access
+Method. The Queue Access Method is similar to the Recno Access Method,
+but is implemented to provide significantly higher-concurrency
+queue-oriented append and consume operations.
+<li>Berkeley DB now supports multiple databases (subdatabases) per
+physical file.
+<li>Berkeley DB now supports standard POSIX pthread, UI thread and Solaris
+LWP mutexes.
+<li>Database creation and removal are now optionally transaction protected.
+<li>Berkeley DB now includes a complete Tcl API.
+<li>Berkeley DB now optionally creates dynamic shared libraries.
+</ol>
+
+<h3>Interface Changes:</h3>
+<ol>
+<li>The Berkeley DB interfaces have been reworked in the 3.0.55 release
+for two reasons. The goals were as follows: to make the Berkeley DB
+structures opaque so future releases of Berkeley DB can be binary
+compatible with each other, provide enhanced error checking and reporting
+during Berkeley DB environment and database configuration and creation,
+provide configurability throughout the lifetime of the environment and
+database, and to make the Berkeley DB interfaces consistent across the
+C++, C and Java APIs.
+
+<p>
+While the C API changes are extensive, they are also simple to understand.
+No functionality was removed. The changes required comparatively few
+modifications to the C++ and Java APIs, mostly limited to moving methods
+among classes and the addition of a new flag value to a few interfaces.
+For specific instructions on upgrading Berkeley DB 2.X applications to
+this release, see the "Upgrading Berkeley DB 2.X.X applications to
+Berkeley DB 3.0" chapter in the Berkeley DB Reference Guide.
+
+<p>
+The following individual changes are all part of this larger change.
+
+<h4>Function changes:</h4>
+<ol type=a>
+<li>The db_appinit and db_appexit functions have been replaced by the
+db_env_create function and the DBENV-&gt;open and DBENV-&gt;close methods. The
+db_open function has been removed, replaced by the db_create function and
+the DB-&gt;open method. Berkeley DB environments are now created using the
+db_env_create function followed by methods on the handle it returns.
+Berkeley DB databases are now created using the db_create function
+followed by methods on the handle it returns.
+
+<li>The lock_open, lock_close and lock_unlink functions have been
+replaced by the db_env_create function and the DBENV-&gt;open, DBENV-&gt;close
+and DBENV-&gt;remove methods. The remaining lock subsystem functions now
+take a DBENV handle as their first argument instead of a DB_LOCKTAB
+handle.
+
+<li>The log_open, log_close and log_unlink functions have been replaced
+by the db_env_create function and the DBENV-&gt;open, DBENV-&gt;close and
+DBENV-&gt;remove methods. The remaining log subsystem functions now take a
+DBENV handle as their first argument instead of a DB_LOG handle.
+
+<li>The memp_open, memp_close and memp_unlink functions have been replaced
+by the db_env_create function and the DBENV-&gt;open, DBENV-&gt;close and
+DBENV-&gt;remove methods. The remaining shared memory buffer pool functions
+now take a DBENV handle as their first argument instead of a DB_MPOOL
+handle.
+
+<li>The txn_open, txn_close and txn_unlink functions have been replaced
+by the db_env_create function and the DBENV-&gt;open, DBENV-&gt;close and
+DBENV-&gt;remove methods. The remaining transaction subsystem functions now
+take a DBENV handle as their first argument instead of a DB_TXNMGR handle.
+
+<li>The db_jump_set and db_value_set functions have been replaced by
+methods on the DBENV handle.
+
+<li>The db_xa_open routine has been replaced by a new flag, DB_XA_CREATE,
+which is passed to the db_create function.
+
+</ol>
+
+<h4>DBENV structure changes:</h4>
+<ol type=a>
+
+<li>The db_errcall, db_errfile, db_errpfx and db_paniccall fields of the
+DBENV structure have been deprecated and their functionality replaced by
+the DBENV-&gt;set_errcall, DBENV-&gt;set_errfile, DBENV-&gt;set_errpfx and
+DBENV-&gt;set_paniccall methods.
+
+<li>The db_verbose field of the DBENV structure has been replaced by the
+DBENV-&gt;set_verbose method.
+
+<li>The lk_conflicts, lk_detect, lk_max and lk_modes fields of the DBENV
+structure have been replaced by the DBENV-&gt;set_lk_conflicts,
+DBENV-&gt;set_lk_detect and DBENV-&gt;set_lk_max methods.
+
+<li>The lg_max field of the DBENV structure has been replaced by the
+DBENV-&gt;set_lg_max method.
+
+<li>The mp_mmapsize and mp_size fields of the DBENV structure have been
+replaced by the DBENV-&gt;set_cachesize and DBENV-&gt;set_mp_mmapsize methods.
+
+<li>The tx_info, tx_max and tx_recover fields of the DBENV structure have
+been replaced by the DBENV-&gt;set_tx_max and DBENV-&gt;set_tx_recover methods.
+
+<li>The (unused) DBENV-&gt;db_lorder field has been deleted.
+</ol>
+
+<h4>DB structure changes:</h4>
+<ol type=a>
+
+<li>The byteswapped field of the DB structure has been replaced by the
+DB-&gt;get_byteswapped method.
+
+<li>The db_errcall, db_errfile, db_errpfx and db_paniccall fields of the
+DB structure have been deprecated and their functionality replaced by the
+DB-&gt;set_errcall, DB-&gt;set_errfile, DB-&gt;set_errpfx and DB-&gt;set_paniccall
+methods.
+
+<li>The type field of the DB structure has been replaced by the
+DB-&gt;get_type method.
+</ol>
+
+<h4>DBINFO structure changes:</h4>
+<ol type=a>
+
+<li>The bt_compare field of the DB structure has been replaced by the
+DB-&gt;set_bt_compare method.
+
+<li>The bt_minkey field of the DB structure has been replaced by the
+DB-&gt;set_bt_minkey method.
+
+<li>The bt_prefix field of the DB structure has been replaced by the
+DB-&gt;set_bt_prefix method.
+
+<li>The db_cachesize field of the DB structure has been replaced by the
+DB-&gt;set_cachesize method.
+
+<li>The db_lorder field of the DB structure has been replaced by the
+DB-&gt;set_lorder method.
+
+<li>The db_malloc field of the DB structure has been replaced by the
+DB-&gt;set_malloc method.
+
+<li>The db_pagesize field of the DB structure has been replaced by the
+DB-&gt;set_pagesize method.
+
+<li>The dup_compare field of the DB structure has been replaced by the
+DB-&gt;set_dupcompare method.
+
+<li>The flags field of the DB structure has been replaced by the
+DB-&gt;set_flags method.
+
+<li>The h_ffactor field of the DB structure has been replaced by the
+DB-&gt;set_h_ffactor method.
+
+<li>The h_hash field of the DB structure has been replaced by the
+DB-&gt;set_h_hash method.
+
+<li>The h_nelem field of the DB structure has been replaced by the
+DB-&gt;set_h_nelem method.
+
+<li>The re_delim field of the DB structure has been replaced by the
+DB-&gt;set_re_delim method.
+
+<li>The re_len field of the DB structure has been replaced by the
+DB-&gt;set_re_len method.
+
+<li>The re_pad field of the DB structure has been replaced by the
+DB-&gt;set_re_pad method.
+
+<li>The re_source field of the DB structure has been replaced by the
+DB-&gt;set_re_source method.
+</ol>
+
+<p>
+<li>The use of the POSIX EAGAIN error return to indicate deadlock has been
+replaced with the Berkeley DB specific error DB_LOCK_DEADLOCK. Note: this
+change could potentially cause subtle errors. Programs must be updated or
+the Berkeley DB distribution altered for programs to run correctly. See
+the "Upgrading Berkeley DB 2.X.X applications to Berkeley DB 3.0" chapter
+in the Berkeley DB Reference Guide for more information.
+
+<li>The DB_RMW flag to the DB-&gt;cursor method has been renamed to be
+DB_WRITECURSOR (note, this change is applicable only to the Berkeley DB
+Concurrent Data Store product).
+
+<li>The DB_LOCK structure is no longer a simple integer value. For this
+reason, the DB_LOCK argument to the lock_put interface has been changed
+to be a reference to a DB_LOCK structure instead of the DB_LOCK structure
+itself.
+
+<li>The db_home argument to the environment creation function
+(historically db_appinit, now DBENV-&gt;open) now overrides the DB_HOME
+environment variable; this is necessary so that the -h option to the
+various Berkeley DB utilities can override the user's environment.
+
+<li>A mode argument was added to the environment creation function
+(historically db_appinit, now DBENV-&gt;open) to allow applications to
+specify the mode of files created in the Berkeley DB environment.
+
+<li>The DB_LOCKDOWN flag was added to enable applications to attempt to
+lock shared memory regions into physical memory.
+
+</ol>
+
+<h3>General Environment Changes:</h3>
+<ol>
+
+<li>A new flag has been added to the DBENV-&gt;open method, DB_SYSTEM_MEM.
+This flag causes Berkeley DB to attempt to allocate memory for its shared
+regions from system shared memory. This flag supports functionality
+similar to that previously provided by the DB_REGION_ANON and
+DB_REGION_NAME flags to the db_value_set interface.
+
+<li>A new flag has been added to the DBENV-&gt;open method, DB_PRIVATE. This
+flag causes Berkeley DB to attempt to allocate memory for its shared
+regions from the heap and to assume that only inter-thread mutexes are
+required, and not inter-process ones as well. This flag is a superset of
+the functionality previously provided by the DB_MPOOL_PRIVATE flag to the
+memp_open interface.
+
+<li>There is a new DBENV method, DBENV-&gt;remove, that removes entire
+Berkeley DB environments.
+
+<li>There are two new methods, DBENV-&gt;set_feedback and DB-&gt;set_feedback,
+that allow applications to specify a callback function that is to be
+called with periodic progress updates on various Berkeley DB operations.
+
+<li>There is a new DBENV method, DBENV-&gt;set_recovery_init, that allows
+applications to install application-specific recovery functions before
+Berkeley DB performs recovery.
+
+<li>There is a new DBENV method, DBENV-&gt;set_verbose, that allows
+applications to request verbose information from the Berkeley DB library.
+
+<li>The Berkeley DB 3.0.55 release includes enhanced functionality for
+reporting Berkeley DB returned errors. There are two new DBENV methods,
+DBENV-&gt;err and DBENV-&gt;errx, and two new DB methods, DB-&gt;err and DB-&gt;errx,
+which allow applications to format and report Berkeley DB error returns
+using any of the historic output channels. There is an additional
+function, db_strerror, which is a superset of the ANSI C standard strerror
+function, providing error strings for both the Berkeley DB errors and
+underlying system errors.
+
+<li>There is a new DBENV method, DBENV-&gt;set_lg_bsize, that allows
+applications to specify the size of the in-memory log buffer.
+
+<li>Reduce the number of file descriptors used to support fcntl locking
+from one-per-region to a single one.
+
+<li>Rename the filesystem representations of the Berkeley DB library's
+shared regions.
+
+<li>Rename temporary files created by Berkeley DB from just a printable
+representation of the process ID to "BDB" followed by a printable
+representation of the process ID.
+
+<li>Return an error if environment interfaces called without initial
+environment configuration.
+
+<li>Fix a bug where Concurrent Data Store accepted incorrect flags,
+for example, DB_RECOVERY.
+
+<li>Fix a bug where specifying any one-character directory in the
+db_config argument or other related configuration interface would fail.
+
+<li>Fix a bug where recovery could fail if only a single checkpoint
+had ever been written.
+
+<li>Fix a bug where threads could race when regions were grown. Because
+there exist systems where mutexes cannot be unmapped and then remapped
+back into application memory, the functionality to grow regions has been
+removed from the Berkeley DB 3.0.55 release. This means that selecting a
+correct initial region size (for example, based on the number of active
+transactions) is more important than before. To facilitate this, region
+high-water marks have been added to the region statistics where
+appropriate.
+
+</ol>
+
+<h3>General Access Method Changes:</h3>
+<ol>
+
+<li>There is a new DB method, DB-&gt;remove, that deletes a database in a
+transaction-protected operation.
+
+<li>There is a new DB method, DB-&gt;upgrade, that upgrades the on-disk
+format of an underlying database.
+
+<li>There is a new DB method, DB-&gt;set_realloc, that allows applications
+to specify a local memory reallocation function similarly to the
+previously available DB-&gt;set_malloc functionality.
+
+<li>The DB-&gt;open method supports a new flag, DB_EXCL, which behaves
+similarly to the POSIX O_EXCL system open call flag.
+
+<li>The Berkeley DB 3.0.55 release includes enhanced functionality for
+reporting Berkeley DB returned errors. There are two new DBENV methods,
+DBENV-&gt;err and DBENV-&gt;errx, and two new DB methods, DB-&gt;err and DB-&gt;errx,
+which allow applications to format and report Berkeley DB error returns
+using any of the historic output channels. There is an additional
+function, db_strerror, which is a superset of the ANSI C standard strerror
+function, providing error strings for both the Berkeley DB errors and
+underlying system errors.
+
+<li>The last two arguments to the DB-&gt;join method were reversed for
+consistency with the rest of the Berkeley DB interfaces taking cursor
+references and flags arguments.
+
+<li>A cursor duplication method has been added to the DBcursor handle.
+This method can be used to duplicate a cursor's transaction and locker
+ID, and, optionally, to duplicate its position in the database. This
+change adds useful functionality, and more importantly makes it possible
+to write
+applications that both use locking without transactions and have multiple
+cursors in the same thread of control.
+
+<li>There is a new DBT structure flag, DB_DBT_REALLOC, that allows
+threaded applications to re-use a single piece of memory for
+multiple Berkeley DB retrievals, similarly to the DB_DBT_MALLOC flag.
+
+<li>Enhance in-memory databases so that operations on them may be
+transaction protected. Fix a bug where specifying logging and
+transactions on an in-memory database could cause a core dump.
+
+<li>Change Berkeley DB recovery to not undo operations performed by
+logged, but not transaction protected operations.
+
+<li>Change Berkeley DB to no longer generate new locker IDs for every
+cursor in non-threaded environments to greatly reduce the possibility
+of self-deadlock.
+
+<li>Change the "dbopen" function in the Berkeley DB 1.85 compatibility
+API to "__dbopen185" so that we don't collide with the C library where
+the C library is version 1.85.
+
+<li>Fix multiple bugs where joins did not correctly work in the presence
+of unsorted duplicates or duplicate duplicates.
+
+<li>Fix an erroneous error message by removing diagnostic code which assumed
+that closing a cursor closed all locks held by the cursor locker ID.
+
+<li>Fix a bug in the default overflow comparison routine such that if the
+overflow comparison test failed because we ran out of key bytes, but were
+also on the last page of the overflow item, we would return equality even
+though there were remaining bytes in the overflow item.
+
+<li>Fix a bug where read-only databases were registered with the logging
+subsystem, causing Berkeley DB recovery to open and close them.
+
+<li>Fix a bug where it was (remotely) possible for a file registered with
+the logging subsystem to be incorrectly evaluated as not logging changes.
+
+<li>Fix a bug where the DBcursor-&gt;c_close method didn't correctly release
+locks in the Berkeley DB Concurrent Data Store product.
+
+<li>Fix a bug where the read-modify-write flag was set in the DB-&gt;put
+method when the database was not configured for locking.
+
+<li>Fix two bugs where the DB-&gt;join and DB-&gt;put methods assumed that the
+only possible error was DB_NOTFOUND, thus failing to return deadlock
+errors to the application.
+
+<li>Fix a bug where illegal flags to the DB-&gt;cursor method weren't caught.
+
+<li>Fix a bug where illegal flags to the DBcursor-&gt;c_get method weren't
+caught.
+
+<li>Fix a bug where the DB_NEXT_DUP flag could be specified with an
+uninitialized cursor.
+
+<li>Fix a bug where the DB-&gt;sync and DB-&gt;close methods did not return the
+DB_INCOMPLETE error if it occurred.
+
+<li>Fix a bug where off-page duplicate splits could cause cursors to be
+mis-positioned.
+
+<li>Fix a bug where partial puts of fixed-length records could cause
+data corruption.
+
+<li>Fix a set of potential bugs where the OSF/1 and gcc compilers will
+use instructions requiring alignment on unaligned data.
+
+<li>Fix multiple bugs with large numbers of duplicate records including
+large numbers of duplicate duplicate records.
+
+</ol>
+
+<h3>Btree Access Method Changes:</h3>
+<ol>
+
+<li>The on-disk Btree/Recno format has changed from version 6 to version 7,
+required due to a change in the database metadata page.
+
+<li>The Btree cursor routines have been rewritten to use the new cursor
+duplicate functionality. This fixed a couple of bugs where specific
+sequences of database operations could cause the cursor to become
+mis-positioned in the database and made it less likely that similar bugs
+can be introduced in the future.
+
+<li>Applications may now optionally turn off reverse-splitting in Btree
+databases.
+
+<li>Btree split operations have been reworked to acquire the metadata page
+lock last, and only if the split is going to succeed. This significantly
+increases the possible level of concurrency in small databases.
+
+<li>Fix a bug where database corruption could occur if enough threads
+writing to a small database all schedule page splits.
+
+<li>Fix a bug where the DB_SET_RANGE option could return an already
+deleted on-page duplicate record to the application.
+
+<li>Fix a bug where an application could core dump if deadlock occurred
+during cursor close.
+
+<li>Fix a bug where applications with high-concurrency requirements could
+encounter races.
+
+<li>Fix a bug where read serializability was incorrect.
+
+<li>Fix a bug where records of the wrong endian-ness were not correctly
+imported.
+
+<li>Fix a bug where an application's cursor could be mis-positioned if
+a split failed unexpectedly.
+
+<li>Fix a bug where the DB_SET_RECNO, DB_SET and DB_GET_BOTH flags
+could potentially return inexact matches under some circumstances.
+
+<li>Fix a bug where searches could potentially leave pages in the
+database locked.
+
+<li>Fix a bug where deleted records could potentially be left in the
+database after all cursors were closed.
+
+<li>Fix a bug where deleting the last duplicate entry on a page could
+cause an application core dump.
+
+<li>Fix a bug where a page lock could be incorrectly discarded when
+moving through on-page duplicate items.
+
+<li>Fix a bug where retrieval of a specific duplicate data item could
+cause a core dump.
+
+<li>Fix a bug where DB_CURRENT could erroneously release the cursor's
+page lock.
+
+<li>Fix a bug where the DB-&gt;del interface to a Btree database could leave
+a cursor mis-positioned under some circumstances.
+
+<li>Fix a memory leak when using the DB-&gt;del interface to delete records.
+
+<li>Fix a bug where specifying the DB_DBT_PARTIAL flag and a dbt.off value
+when creating a new record included garbage in the record.
+
+<li>Fix a bug where Btree statistics did not correctly account for
+overflow and off-page duplicate pages.
+
+<li>Fix a bug where Btree statistics could fail and leave database
+pages locked.
+
+<li>Fix a bug where page LSNs could be lost during recovery of a page
+split.
+
+<li>Fix a bug where empty pages in big-endian databases were not
+always correctly converted.
+
+<li>Fix a bug where previously deleted records could be accessed on
+the page, leading to potentially incorrect behavior.
+
+<li>Fix a bug where on-page duplicates could be corrupted when reading
+non-native-endian databases.
+
+</ol>
+
+<h3>Hash Access Method Changes:</h3>
+<ol>
+
+<li>The on-disk Hash format has changed from version 5 to version 6,
+required due to a change in the database metadata page.
+
+<li>In order to allow hash databases as subdatabases, hash will allocate
+groups of contiguous pages. This may cause some hash databases to appear
+much larger than they actually are (that is, they will be sparse files).
+
+<li>Statistics, returned by the DB-&gt;stat method, have been added to the
+Hash Access Method.
+
+<li>Fix a bug where initial access of a duplicate data item could cause
+future access of other items to fail.
+
+<li>Fix a bug where puts or deletes could cause cursors on the same page to
+reference incorrect entries.
+
+<li>Fix a bug where partial gets from on-page duplicates could be wrong.
+
+<li>Fix a set of bugs where error paths could lead to application failure.
+
+<li>Fix a set of bugs where cursors could be mis-positioned after operations
+on off-page duplicates or off-page duplicates could be stored in incorrect
+sorted order.
+
+<li>Fix a bug where overwriting duplicate items could fail.
+
+<li>Fix a bug where an error return value could be overwritten when
+releasing the metadata page.
+
+</ol>
+
+<h3>Queue Access Method Changes:</h3>
+None.
+
+<h3>Recno Access Method Changes:</h3>
+<ol>
+
+<li>Support read-only backing source files for Recno databases.
+
+<li>Fix a bug where accessing the backing source filename could find
+incorrect information or cause a core dump.
+
+<li>Fix a bug where the length of fixed-length Recno records were not
+correctly byte-swapped during database load.
+
+<li>Fix a set of related bugs where the DB_DBT_PARTIAL flag was
+incorrectly handled when manipulating fixed-length records.
+
+<li>Fix a bug where the key created by the DB_AFTER and DB_BEFORE operations
+was not correctly returned.
+
+<li>Fix a set of related bugs where certain sequences of operations could
+leave application cursors mis-positioned.
+
+<li>Fix a bug where deleting the last record in a database could leave an
+application cursor mis-positioned.
+
+<li>Fix a bug where DB_APPEND returned an error instead of appending to
+the database.
+
+<li>Fix a bug where specifying the DB_CURRENT, DB_FIRST or DB_NEXT flags
+could fail because insufficient records had been read from the backing file.
+
+<li>Fix a bug where page splits could result in an incorrect previous
+page pointer.
+
+<li>Fix a bug where the DB_GET_BOTH flag was permitted for Recno, which
+does not support it.
+
+</ol>
+
+<h3>C++ API Changes:</h3>
+<ol>
+<li>Remove the DbLockTab, DbLog, DbMpool and DbTxnMgr classes, moving
+their methods to the DbEnv class.
+
+<li>Replace the set_error_model method with the DB_CXX_NO_EXCEPTIONS flag
+to the DbEnv class constructor.
+
+<li>Added constructor with a single flag argument for DbEnv and Db.
+Added (nonstatic) open methods to DbEnv, Db.
+
+<li>Methods (such as DbLock::put) that used to have a DbMpool, DbLockTab,
+DbLog, or DbTxnMgr pointer argument, now take a DbEnv pointer argument.
+
+<li>Added DbEnv::set_feedback(), DbEnv::set_recovery_init().
+
+<li>Added DbEnv::strerror(), DbEnv::err(), DbEnv::errx()
+
+<li>Added BtrecExample, a Btree record example.
+
+<li>Fix a bug where the error model was not set before the initial
+environment was opened.
+
+</ol>
+
+<h3>Java API Changes:</h3>
+<ol>
+
+<li>Remove the DbLockTab, DbLog, DbMpool and DbTxnMgr classes, moving
+their methods to the DbEnv class.
+
+<li>Added constructor with a single flag argument for DbEnv and Db.
+Added (nonstatic) open methods to DbEnv, Db.
+
+<li>Methods (such as DbLock.put) that used to have a DbMpool, DbLockTab,
+DbLog or DbTxnMgr argument, now take a DbEnv argument.
+
+<li>Added DbEnvFeedback, DbRecoverInit interfaces that are used as 'callbacks'
+with DbEnv.set_feedback(), DbEnv.set_recovery_init().
+
+<li>Added DbEnv.strerror(), DbEnv.err(), DbEnv.errx()
+
+<li>Added DbDeadlockException, DbMemoryException classes to allow catching of
+more specific errors.
+
+<li>Added DbHashStat class.
+
+<li>Added BtrecExample, a Btree record example.
+
+<li>Updated AccessExample to illustrate technique of subclassing from Dbt
+to handle arbitrary data types, in this case to create a StringDbt class.
+
+</ol>
+
+<h3>Tcl API Changes:</h3>
+None.
+
+<h3>XA Resource Manager Changes:</h3>
+<ol>
+<li>Fix a bug where it was possible to specify both JOIN and RESUME to
+the XA start interface.
+
+<li>Fix a bug where the current txn ID was not invalidated after
+commit/prepare/abort, as the resource manager process does not call
+xa_end.
+
+<li>Fix a bug where the TMRESUME and TMONEPHASE flags were incorrectly
+checked in the xa_start interface.
+
+</ol>
+
+<h3>Locking Subsystem Changes:</h3>
+<ol>
+
+<li>The lock_detect interface has been modified to optionally return a
+count of the number of deadlocks broken.
+
+<li>The lock_detect routine has been modified to break as many deadlocks
+as possible during each run instead of returning after breaking a single
+deadlock.
+
+<li>The lock subsystem lock_put and lock_vec calls will no longer return
+DB_LOCK_NOTHELD or EACCES errors under any circumstances to indicate that
+a lock was held by another locker.
+
+<li>The lock_stat function now returns the following additional information:
+<ul><ol type=a>
+<li>st_lock_id: The last allocated lock ID.
+<li>st_maxnlockers: The maximum lockers at any one time.
+</ol></ul>
+The lock_stat function no longer returns the following information:
+<ul><ol type=a>
+<li>st_magic: The magic number that identifies a file as a lock file.
+<li>st_numobjs: The number of unique objects locked.
+<li>st_refcnt: The number of references to the region.
+<li>st_version: The version of the lock file type.
+</ol></ul>
+
+<li>Lock IDs are now allowed to wrap, rather than being limited to two
+billion.
+
+<li>Fix a bug in lock detection where it was possible to lose track of
+lockers.
+
+<li>Fix a bug where all locks held on an object were not necessarily
+released when DB_LOCK_PUT_OBJ was requested.
+
+<li>Fix a bug where the lock subsystem did not detect a lock conflict if
+there was no transaction.
+
+<li>Fix a bug where lock_detect could treat the DB_LOCK_OLDEST and
+DB_LOCK_YOUNGEST flags as semantically equivalent.
+
+<li>Fix a bug where locks waiting on an aborted lock were not correctly
+promoted at the time of the abort.
+
+<li>Fix a bug where committing a child that held no locks was treated
+as an error.
+
+<li>Fix a bug where deadlock detection was done incorrectly in the case
+of transactions with nested children.
+
+<li>Fix a bug where parent transactions which had never obtained locks
+were incorrectly handled when child transactions committed.
+
+<li>Fix a bug where the library could dump core if multiple deadlock
+detectors were running simultaneously.
+
+</ol>
+
+<h3>Logging Subsystem Changes:</h3>
+<ol>
+
+<li>The log_register function no longer takes a DBTYPE argument.
+
+<li>Open log files with the Windows FILE_FLAG_WRITE_THROUGH flag
+on Windows systems that support it.
+
+<li>Make verbose message "Finding last valid log LSN" optional based
+on the DBENV-&gt;set_verbose method.
+
+<li>Modify log to not attempt to allocate unreasonably large buffers
+when reading garbage from the log.
+
+<li>Modify log_register to re-use file identifiers to avoid running
+out in applications that repeatedly open and close files.
+
+<li>The log_stat function now returns the following additional information:
+<ul><ol type=a>
+<li>st_lg_bsize: The in-memory log record cache size.
+<li>st_wcount: The number of times the log has been written to disk.
+<li>st_wcount_fill: The number of times the log has been written to disk
+because the in-memory log record cache filled up.
+</ol></ul>
+The log_stat function no longer returns the following information:
+<ul><ol type=a>
+<li>st_refcnt: The number of references to the region.
+</ol></ul>
+
+<li>Fix a bug where the last-known-LSN-on-disk wasn't being set correctly,
+causing the next log_flush call to decide not to flush the current
+contents of the buffer to disk, and losing the recovery checkpoint record.
+
+<li>Fix a bug where recovery was not returning the next-to-last checkpoint,
+rather it always returned the last checkpoint.
+
+<li>Fix a number of related bugs in file registry, that could lead to
+crashes during recovery in applications that repeatedly created, opened
+and closed files.
+</ol>
+
+<h3>Buffer Pool Subsystem Changes:</h3>
+<ol>
+
+<li>The Berkeley DB 3.0.55 release still limits the buffer pool to a 4GB
+cache. However, the method for setting the Berkeley DB buffer cache size,
+DBENV-&gt;set_cachesize, has been changed to allow applications to specify
+cache sizes larger than 4GB, in preparation for relaxing that limitation.
+In addition, applications may specify that multiple pieces of shared
+memory are to be used to create the cache, for architectures that do not
+support 4GB chunks of contiguous shared memory.
+
+<li>Add a new semantic for memp_sync, if the LSN argument is NULL, flush
+the entire buffer cache.
+
+<li>The DB_MPOOL_PRIVATE flag to the db_appinit and memp_open functions
+has been removed, replaced by the DB_PRIVATE flag to the DBENV-&gt;open
+method.
+
+<li>The memp_stat function no longer returns the following information:
+<ul><ol type=a>
+<li>st_refcnt: The number of references to the region.
+</ol></ul>
+
+<li>Allow for OS-specific functions that preallocate pages in files since
+non-POSIX systems (read as "Windows") will give you garbage in the middle
+of a file (let's talk about security).
+
+<li>Fix a bug where transaction checkpoint could pin down the entire
+buffer cache, starving requests for new buffers.
+
+<li>Fix a bug where systems with large POSIX pthread structures could
+allocate too little memory for the default pool.
+
+<li>Fix a bug where highly concurrent systems could end up with incorrect
+buffers-to-flush counts during cache syncs.
+
+<li>Fix a bug where the wrong page number could be used when allocating
+new pages.
+
+</ol>
+
+<h3>Transaction Subsystem Changes:</h3>
+<ol>
+
+<li>The txn_begin function now takes a flag parameter. This allows
+specification of synchronous or asynchronous log flushing behavior on a
+per-transaction basis during begin. Applications may also specify a flag
+that causes Berkeley DB to return an error immediately if any lock is
+unavailable, rather than waiting for the lock.
+
+<li>The txn_commit function now takes a flag parameter. This allows
+specification of synchronous or asynchronous log flushing behavior on a
+per-transaction basis during commit.
+
+<li>The txn_stat function now returns the following additional information:
+<ul><ol type=a>
+<li>st_maxnactive: The maximum number of active transactions at any one time.
+<li>parentid: The st_txnarray structure includes a new field, parentid,
+which is the transaction ID of the parent transaction (or 0, if no
+parent).
+</ol></ul>
+The txn_stat function no longer returns the following information:
+<ul><ol type=a>
+<li>st_refcnt: The number of references to the region.
+</ol></ul>
+
+<li>Do not complain about "missing files" during recovery if no operations
+were performed on the file.
+
+<li>Free the recovery dispatch table after recovery has completed.
+
+<li>Fix a bug where it was possible to overwrite the checkpoint LSN
+during checkpoint.
+
+<li>Fix a bug where an uncommitted child TXN was not committed when its
+parent TXN committed.
+
+<li>Fix a bug where nested transactions could be undone in an incorrect
+order in the presence of parents making modifications to pages already
+modified by the child.
+</ol>
+
+<h3>Utility Changes:</h3>
+<ol>
+
+<li>Change the output of the db_dump utility to support subdatabases.
+The db_load utility supports both the old and new input formats of
+the db_dump utility.
+
+<li>Add the -k option to the db_dump utility to support dumping Queue and
+Recno databases without altering their key values.
+
+<li>Add the -l and -s options to the db_dump utility to support
+subdatabases.
+
+<li>Modify the -d option to the db_dump utility to support different
+output formats as part of recovery testing.
+
+<li>Modify the -N option for utilities supporting it to not only not
+acquire Berkeley DB mutexes, but to also ignore any other potentially
+fatal errors or corruption.
+
+<li>Add the -e option to db_stat, to display per-environment statistics.
+
+<li>Add the -s options to the db_stat utility to support subdatabases.
+
+<li>The db_stat utility will now print out page or record numbers when
+displaying lock information for locks obtained by the access methods.
+
+<li>Fix a bug where db_stat could drop core if called incorrectly.
+
+<li>Fix a bug where db_recover would force regions to be created at the
+default size instead of the size requested by the application.
+
+<li>Fix bugs where the db_checkpoint and db_deadlock utilities incorrectly
+wrote their process IDs to their log files.
+
+<li>Fix bugs where some of the Berkeley DB provided utilities had
+inconsistent POSIX signal handling. Block SIGPIPE on applicable systems
+in case the utility output is being piped to another process.
+</ol>
+
+<h3>Configuration, Documentation, Portability and Build Changes:</h3>
+
+<ol>
+
+<li>The documentation has been extensively rewritten and enhanced, in
+particular, the Berkeley DB Reference Guide has been completed.
+
+<li>The University of California, Berkeley copyright clause relating to
+acknowledgement within advertising materials has been deleted from the
+Berkeley DB copyrights.
+
+<li>Berkeley DB now optionally builds dynamic shared libraries, see the
+--enable-dynamic configuration option for more information.
+
+<li>Add support on Windows for sharing files in system-specific way
+supporting the new DB_SYSTEM_MEM.
+
+<li>The Windows/3.1 support has been removed from the distribution.
+
+<li>Java support has been integrated in the project file that is part of
+the Visual C++ workspace.
+
+<li>Java support has been integrated into the standard build Makefile.
+
+<li>Changed DLL names to use conventions like libdb30d.dll. Debug vs.
+release libraries and different release numbered libraries can now be
+distinguished.
+
+<li>The Solaris/Sparc V9 platform has 8-byte dev_t, ino_t and time_t
+values, which required the database file unique ID to be rewritten.
+
+<li>The configuration include file for Berkeley DB has been renamed from
+"config.h" to "db_config.h" to minimize the potential for name collision
+with other packages.
+
+<li>Some C++ operator=() methods that did not have a return type now have
+return type void.
+
+<li>Allow for different JNI's implementation of AttachCurrentThread().
+
+<li>Multiple changes to make it easier for applications to use the
+Berkeley DB recovery infrastructure to accomplish recovery of their
+own objects.
+
+<li>Separate out the Berkeley DB distribution script that creates the log
+marshalling/unmarshalling layer source code so that it can be called
+separately by application-specific logging code.
+
+<li>Add a file to the build_unix subdirectory, some Linux releases have
+archive exploders that will not extract directories containing only
+symbolic links.
+
+<li>The external variable errno support has been extracted out of the main
+library source code, and is now encapsulated in a single source file.
+
+<li>Rename the getlong() subroutine to __db_getlong() to eliminate a
+potential namespace collision.
+
+<li>Replace all "int" file descriptors with system-independent file
+handle structures.
+
+<li>The db_jump_set interface has be replaced with methods on the DBENV
+handle.
+
+<li>The db_value_set interface has be replaced with methods on the DBENV
+handle.
+
+<li>The Berkeley DB test suite has been rewritten to match the new Tcl API,
+and a large number of new tests have been added.
+
+<li>All SCCS Ids yanked to 11.X and copyrights updated to include 1999.
+
+<li>Add Gcc/Alpha assembly mutex support.
+
+<li>Add guard-byte support for allocated memory when DIAGNOSTIC #defined.
+
+<li>Fix a bug in ndbm compatibility API code to correct for the O_WRONLY flag.
+
+<li>Fix a bug in the OS layer where the return of the lseek() call could
+be cast to an int.
+
+</ol>
+
+</body>
+</html>
diff --git a/db/docs/ref/changelog/3.1.14.html b/db/docs/ref/changelog/3.1.14.html
new file mode 100644
index 000000000..b41a99f35
--- /dev/null
+++ b/db/docs/ref/changelog/3.1.14.html
@@ -0,0 +1,300 @@
+<!--"$Id-->
+<html>
+<head>
+<title>The Berkeley DB Package: DB 3.1.14 Change Log</title>
+<meta name="description" content="Berkeley DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Berkeley DB 3.1.14 Change Log</h3>
+
+<h3>Database On-Disk Format Changes:</h3>
+<ol>
+<li>The on-disk Btree/Recno format has changed from version 7 to version
+8, and the on-disk Hash format has changed from version 6 to version 7.
+For information on upgrading database formats, see "Upgrading Applications
+to the 3.1 release" in the Berkeley DB Reference Guide for more
+information.
+</ol>
+
+<h3>Major New Features:</h3>
+<ol>
+
+<li>Berkeley DB now includes support for VxWorks systems.
+<li>Off-page duplicates now stored in an on-disk B+tree structure,
+greatly speeding searches in sorted duplicate sets. In addition,
+a count of duplicate items is now maintained for all duplicate sets,
+providing better optimization of logical joins. [#303]
+<li>New cursor method, DBcursor-&gt;c_count, that returns the number of
+duplicate items associated with the referenced key. [#303]
+<li>Berkeley DB now includes a RPC-based client/server implementation. [#426]
+<li>Recovery to a specified time is supported. [#855]
+<li>New cursor method, DB-&gt;verify, that supports database verification
+and salvage. [#588, #827, #1156]
+<li>Add a Berkeley DB method to rename databases. [#1492]
+<li>Significantly increased verbose error output for debugging support. [#1866]
+
+</ol>
+<h3>Interface Additions and Changes:</h3>
+<ol>
+
+<li>All of the Berkeley DB utilities now support the -V option to display
+the library version.
+<li>It is now possible to set almost all the Berkeley DB environment
+configuration options in the environment's DB_CONFIG file. There are new
+DB_ENV handle methods for setting the database directory, logging
+directory and temporary file directory. These were previously set using
+the DB_DATA_DIR, DB_LOG_DIR and DB_TMP_DIR strings in the config argument
+to the DB_ENV-&gt;open and DB_ENV-&gt;remove methods. As part of this change,
+the config argument to the DB_ENV-&gt;open and DB_ENV-&gt;remove methods has
+been removed in favor of the new methods.
+<li>Add a private field to the DBT structure, enabling applications to
+pass private information into the Btree/Hash comparison/hashing functions.
+<li>Change the redo parameter of the function passed to the
+DBENV-&gt;set_tx_recover interface used to be an integer set to any one
+of a number of #defined values. The <b>redo</b> parameter has been
+replaced by the <b>op</b> parameter, an enumerated type. [#606]
+<li>Add support for a new DBcursor-&gt;c_get flags, DB_NEXT_NODUP
+(DB_PREV_NODUP), which return the next (previous) key/data pair where the
+data item is not a duplicate of the current key. [#887, #1985]
+<li>Modify the DB-&gt;put interface, when using the DB_APPEND flag, to
+support DBT conventions. [#1523]
+<li>Add DB_NODUPDATA option to the DB-&gt;put and DBcursor-&gt;c_put
+methods to disallow duplicate duplicates. [#1866]
+<li>Add a fast return of approximate row counts for all access methods,
+add separate key and data statistics for the Hash access method.
+Regularize the naming scheme for all statistics. [#1978]
+<li>Move application-wide configuration interfaces from DbEnv method
+set to static function interfaces. [#2245]
+
+</ol>
+<h3>General Environment Changes:</h3>
+<ol>
+
+<li>It is now possible to build and run Berkeley DB on systems that do
+not have either of the mmap(2) or shmget(2) interfaces.
+<li>Take two checkpoints after recovery completes so that on next recovery
+no work needs to be redone. [#1316]
+<li>Fix a bug where, if DIAGNOSTIC was #defined, recovery could incorrectly
+assert that no files should be open and drop core. [#1316]
+<li>Fix a bug where recovering from deleting a page in a database could
+cause other operations to not be rolled-forward. [#1532]
+<li>Fix a bug where HP-UX msemaphore semaphores could cause mutex races
+on HP-UX 10.XX. [#2199]
+
+</ol>
+<h3>General Access Method Changes:</h3>
+<ol>
+
+<li>Add support for zero-length keys. [#625]
+<li>Fix a bug where join cursors were not automatically closed when the
+primary DB handle was closed. [#1325]
+<li>Fix a bug where the DB-&gt;remove method of an entire database would create
+a backup file even if the application wasn't running with transactions; the
+backup files were never removed. [#1357]
+<li>Fix a bug where when adding a new page in a chain of duplicates the
+LSN of a page could be unnecessarily updated, confusing recovery. [#1412]
+<li>Fix a bug where creating a subdatabase ignored the specification of
+a non-standard page size. [#1422]
+<li>Fix a bug where join cursors didn't correctly support DB_DBT_XXX
+flags. [#1639]
+<li>Fix bugs in join cursor handling of DBTs, and associated memory leaks.
+[#1777, #1929, #1940]
+<li>Change error return for duplicate duplicates from EINVAL to
+DB_KEYEXIST. [#1866]
+<li>Fix a bug where DB handles opened in threaded environments were not
+themselves automatically threaded. [#1943]
+<li>Fix a bug where the DB-&gt;remove method could leak memory. [#2066]
+
+</ol>
+<h3>Btree Access Method Changes:</h3>
+<ol>
+
+<li>Increase the accuracy of the returned statistics count for Btree key
+and data items.
+<li>Fix a bug where the next page in the leaf page chain might not be
+updated during recovery. [#1320]
+<li>Fix a bug where Btrees supporting retrieval by record number could
+become corrupted for some data sets. [#1663]
+<li>Fix a bug where Btrees supporting retrieval by record number could
+have incorrect record counts after reverse splits. [#1688]
+<li>Fix a bug where keys stored as overflow items could be incorrectly
+compared. [#1994]
+
+</ol>
+<h3>Hash Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug where partial puts in the hash access method could lead to
+heap corruption. [#1300]
+<li>Fix a bug where duplicate data items were not correctly identified
+during logging and could be incorrectly restored during recovery. [#1377]
+
+</ol>
+<h3>Queue Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug where an invalid lock was acquired when duplicating a cursor
+in Concurrent Data Store.
+<li>Fix a bug where EAGAIN could be returned instead of DB_LOCK_DEADLOCK.
+[#1354]
+<li>Fix a bug where the Queue Access Method could drop core if a put
+operation failed. [#1449]
+<li>Fix a bug where user requests for non-blocking locks were ignored. [#1970]
+
+</ol>
+<h3>Recno Access Method Changes:</h3>
+
+<blockquote>None.</blockquote>
+
+<h3>C++ API Changes:</h3>
+<ol>
+
+<li>Fix a large number of warnings and portability problems for various
+C++ compilers.
+<li>Add "void" type to operator = in all examples for portability.
+<li>Fix a bug where the DB_CXX_NO_EXCEPTIONS in the Db constructor was
+causing immediate failure of the call. [#1350]
+<li>Fix problems with disposing of Db and DbEnv objects: the underlying
+DB, DB_ENV objects were looked at after a close(), which is illegal,
+since the memory is freed. And in the case where Db::Db() is called
+with a NULL DbEnv, we create our own DbEnv object, and this was not
+being deleted on close(). [#1466, #1467, #1468]
+<li>Fix a bug where Db::remove and Db::upgrade were specified 'static'. [#1469]
+<li>Fix a bug where memory freed during open/close was written to in the
+destructor. [#1889]
+<li>Fix a bug where Db::close and DbEnv::close and their associated
+destructors interacted wrongly. [#1998]
+
+</ol>
+<h3>Java API Changes:</h3>
+<ol>
+
+<li>Fix a bug where, when building with versions 1.1.* of the JDK, an
+explicit reference for the CLASSPATH prevented compilation from within
+MS Visual studio. [#1334]
+<li>Avoid using true/false as they aren't recognized by older C++ systems
+(in this case, SPARC Solaris 2.6 with Sun Workshop 4.2). [#1384]
+<li>Fix a bug where Java could fail to run on Solaris due to memory
+allocation issues with shared libraries. [#1384]
+<li>Rewrite the Java API in C for portability reasons (it was previously
+implemented in C++). [#1384]
+
+</ol>
+<h3>Tcl API Changes:</h3>
+<ol>
+
+<li>The -mpool option to the berkdb env command is now the default.
+<li>The -txn option to the berkdb env command now implies the -lock and -log
+options.
+
+</ol>
+<h3>RPC Client/Server Changes:</h3>
+<blockquote>None.</blockquote>
+
+<h3>XA Resource Manager Changes:</h3>
+<ol>
+
+<li>Fix a bug where returned XID fields (currently unused by Tuxedo) were
+being incorrectly zeroed. [#1840]
+
+</ol>
+<h3>Locking Subsystem Changes:</h3>
+<ol>
+
+<li>Lock objects with waiters are now separately threaded to make deadlock
+detection faster. [#1983]
+<li>Fix a bug where locks could be leaked if the DB_LOCK_NOWAIT flag was
+specified and the lock was already held. [#2072]
+<li>Add a count of the lock requests that failed because DB_LOCK_NOWAIT
+was set to the lock region statistics. [#2072]
+
+</ol>
+<h3>Logging Subsystem Changes:</h3>
+<ol>
+
+<li>Fix a bug where logging print routines displayed file IDs as unsigned
+values instead of signed values.
+<li>Change the Windows/NT release to no longer pre-allocate logfiles.
+[#849, #1780]
+<li>Fix a bug where if you attempt to do catastrophic recovery on a log
+that spans a crash you can get errors of the form "open: invalid
+argument". [#1365]
+<li>Fix a bug where the DB_ARCH_LOG flag to the log_archive interface
+could fail to return the correct set of log filenames. [#1426]
+<li>Fix a bug where free'd memory could be accessed in an error path. [#2053]
+
+</ol>
+<h3>Buffer Pool Subsystem Changes:</h3>
+<ol>
+
+<li>Fix a bug where Berkeley DB could fail when too many databases were
+created in an environment. [#1528]
+
+</ol>
+<h3>Transaction Subsystem Changes:</h3>
+<ol>
+
+<li>Fix a number of bugs in DB file registration that could cause problems
+if files were repeatedly opened and closed. [#1943]
+<li>Remove all requirements that applications flush the log before closing
+the environment to ensure that no additional work needs to be done during
+recovery. [#2006]
+<li>Fix a bug where an unthreaded DB handle could be incorrectly used in
+a threaded environment, during recovery. [#2033]
+
+</ol>
+<h3>Utility Changes:</h3>
+<ol>
+
+<li>Convert the supporting utilities to use common code for signal
+and process-ID log file handling. [#1596]
+
+</ol>
+<h3>Configuration, Documentation, Portability and Build Changes:</h3>
+<ol>
+
+<li>Upgrade to the current Perl BerkeleyDB and DB_File modules.
+<li>Upgrade to the current Scriptics Tcl release (8.3), add the --with-tcl
+option to automatically use the tclConfig.sh information to correctly
+compile the Tcl API and test suite.
+<li>Upgrade to current versions of libtool (1.3.4), autoconf and the
+config scripts.
+<li>Update the test suite to no longer require a large set of UNIX
+utilities to run.
+<li>Convert to CVS/RCS source repository and file revision Ids.
+<li>Include Windows 2000 support.
+<li>Support systems without strtoul(3) support. [#1337]
+<li>Fix a bug where the DB 1.85 API interface was incorrectly named, so
+configuration scripts wouldn't find "dbopen" and applications wouldn't
+load. [#1345]
+<li>Fix a bug where AIX wouldn't compile because there was no MUTEX_INIT
+macro for the test-and-set mutexes. [#1354]
+<li>Fix a bug where Berkeley DB incorrectly aligned memory from the shared
+memory regions for gcc on the UltraSparc. [#1395, #1404]
+<li>Fix a bug where DB did not correctly build on the Siemens Nixdorf
+Reliant Unix because the initspin() function was expected to return an
+int. [#1418]
+<li>Fix a bug where DB would fail on HP-UX, apparently the HP-UX C library
+contains pread/pwrite symbols, but they don't work. [#1459]
+<li>Call GetTempDir() to determine system's temp directory on Windows. [#1478]
+<li>Fix a case where large buffers could be allocated on the stack when
+running on Windows, leading to stack resource starvation in multithreaded
+programs. [#1530]
+<li>Fix a bug where DB would fail to compile on AIX because of a missing
+MUTEX_INIT definition. [#1561]
+<li>Fix a bug where out-of-memory condition when scanning a directory failed
+to close the directory. [#1872]
+<li>Remove all use of signal functions. [#1964]
+<li>Fix a bug where the POSIX fcntl system call would be called even after
+the underlying Berkeley DB open call had been replaced by the application.
+[#2114]
+<li>Fix a bug where the standard free routine was still called when finishing
+a directory scan, even after the application had replaced the underlying OS
+functionality. [#2115]
+
+</ol>
+
+</body>
+</html>
diff --git a/db/docs/ref/changelog/3.1.17.html b/db/docs/ref/changelog/3.1.17.html
new file mode 100644
index 000000000..50cf9b07a
--- /dev/null
+++ b/db/docs/ref/changelog/3.1.17.html
@@ -0,0 +1,213 @@
+<!--$Id: 3.1.17.html,v 1.4 2007/05/17 18:17:18 bostic Exp $-->
+<html>
+<head>
+<title>The Berkeley DB Package: DB 3.1.17 Change Log</title>
+<meta name="description" content="Berkeley DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Berkeley DB 3.1.17 Change Log</h3>
+
+<h3>Database On-Disk Format Changes:</h3>
+
+<blockquote>None.</blockquote>
+
+<h3>Major New Features:</h3>
+
+<blockquote>None.</blockquote>
+
+<h3>Interface Additions and Changes:</h3>
+<ol>
+
+<li>The documentation for DB-&gt;set_feedback stated that the third
+argument to the callback function is "the percent of the operation
+remaining to be completed, specified as an integer value between 0 and
+100", implying that it's a countdown from 100 to 0. The actual
+implementation was to count upward from 0 to 100. The documentation
+has been changed to match the code. [#2310]
+
+</ol>
+<h3>General Environment Changes:</h3>
+<ol>
+
+<li>Fix a bug where attempts to remove a region never returned. [#2379]
+<li>Fix a typo in the freeing of the shared log region. [#2379]
+<li>Remove the requirement that all threads of control using System V
+shared memory for regions specify the base segment ID [#2379]
+<li>Fix a bug where applications using different sets of regions in an
+environment would fail when using System V shared memory for the regions.
+[#2379]
+<li>Fix a bug where the DB_USE_ENVIRON_ROOT flag was incorrectly tested,
+using the environment for processes without sufficient privilege. [#2400]
+<li>Fix a bug where the error prefix was ignored by the Db handle method
+error calls. [#2484]
+<li>Fix a bug where the db_archive utility could create an environment
+that would cause applications or other Berkeley DB utilities to fail. [#2524]
+
+</ol>
+<h3>General Access Method Changes:</h3>
+<ol>
+
+<li>Fix a memory leak in the DB-&gt;verify method. [#2347]
+<li>Fix memory leaks in DB-&gt;rename and DB-&gt;remove method
+recovery [#2363]
+<li>Fix a bug in the DB-&gt;verify method where 64K pages with large
+offsets were incorrectly verified. [#2408]
+<li>Fix a bug where data strings containing % characters could be
+corrupted by the DB-&gt;verify method. [#2427]
+<li>Fix a bug where the DB_TRUNCATE flag could trigger a program error
+if the database type was not specified. [#2423]
+<li>Fix a bug in the Concurrent Data Store product where operations
+could result in application hang or segmentation fault. [#2493]
+
+</ol>
+<h3>Btree Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug where uninitialized parts of a database page could be read
+and an incorrect record count returned. [#2250]
+<li>Fix a bug where reverse splits could corrupt a page under rare
+conditions. [#2362]
+<li>Fix a bug where cursors in the parent of a nested transaction could
+be incorrectly adjusted after a child transaction was aborted. [#2373]
+<li>Fix a bug where threads could race when updating a tree. [#2402]
+<li>Fix a bug where a lock was leaked by the DB-&gt;stat method. [#2418]
+<li>Fix a bug where DB-&gt;put could fail when the data matched a
+duplicate data item previously deleted using a still-open cursor. [#2451]
+<li>Fix a bug where one abort path after a page allocation could leak
+the page. [#2455]
+<li>Fix a bug where recovering the operation of moving on-page duplicates
+into their own tree could cause corruption. [#2459]
+<li>Fix a bug where moving on-page duplicates into their own tree could
+cause cursors on the same page to reference an invalid key/data pair. [#2462]
+<li>Fix a bug where an error could be ignored when reverse splitting
+the tree. [#2472]
+<li>Fix a bug where creating Btrees deeper than 5 levels could cause
+core dumps or out-of-memory errors. [#2514]
+<li>Fix a bug where the DB-&gt;verify method did not correctly diagnose
+Btree/Recno internal page references to invalid pages. [#2525]
+
+</ol>
+<h3>Hash Access Method Changes:</h3>
+
+<blockquote>None.</blockquote>
+
+<h3>Queue Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug where undo could happen incorrectly for record insert and
+delete. [#2298]
+<li>Fix a bug where a page could be leaked during Queue recovery. [#2431]
+
+</ol>
+<h3>Recno Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug where the delete flag was set incorrectly in renumbering
+Recno trees. [#2490]
+
+</ol>
+<h3>C++ API Changes:</h3>
+
+<blockquote>None.</blockquote>
+
+<h3>Java API Changes:</h3>
+<ol>
+
+<li>Fix a bug where the wrong classname was used to find the fieldId in
+storing back the DbEnv.private_dbobj field. [#1628]
+<li>Fix a Java documentation bug, the com.sleepycat.examples.AccessExample
+program removes the database so information from previous runs is not
+available. [#2385]
+<li>Fix a Java documentation bug, Db.del should show it returning int.
+[#2480]
+<li>Fix a bug where the Java Db.del API would fail to return
+Db.DB_NOTFOUND [#2480]
+<li>Fix a bug where the Db.DB_THREAD flag wasn't always set by Java. [#2492]
+
+</ol>
+<h3>Tcl API Changes:</h3>
+<ol>
+
+<li>Fix a bug where DB_USE_ENVIRON_ROOT was specified for the Tcl
+command -use_environ. [#2400]
+
+</ol>
+<h3>RPC Client/Server Changes:</h3>
+
+<blockquote>None.</blockquote>
+
+<h3>XA Resource Manager Changes:</h3>
+
+<blockquote>None.</blockquote>
+
+<h3>Locking Subsystem Changes:</h3>
+
+<blockquote>None.</blockquote>
+
+<h3>Logging Subsystem Changes:</h3>
+<ol>
+
+<li>Fix a bug where the underlying operating system sync interface could
+be unnecessarily (and repeatedly) called when performing transaction
+checkpoints. [#2287]
+<li>Fix a bug where a recovery diagnostic message displayed the wrong
+information. [#2449]
+
+</ol>
+<h3>Buffer Pool Subsystem Changes:</h3>
+<ol>
+
+<li>Fix a bug where calling memp_sync (including by transaction checkpoint)
+could cause shared region corruption and core dumps. [#2348, #2392]
+
+</ol>
+<h3>Transaction Subsystem Changes:</h3>
+<ol>
+
+<li>Fix a bug where recovery would succeed but drop core if no close
+record was ever written after the commit of a remove. [#2316]
+<li>Fix a bug where file ID mapping could be incorrect [#2324]
+<li>Fix a memory leak in abort of a nested transaction. [#2440]
+<li>Fix a freed memory reference when committing active child transactions
+during parent transaction commit. [#2457]
+
+</ol>
+<h3>Utility Changes:</h3>
+
+<blockquote>None.</blockquote>
+
+<h3>Configuration, Documentation, Portability and Build Changes:</h3>
+<ol>
+
+<li>Portability fixes to compile on SunOS 4.1.4. [#2309]
+<li>Fix a bug where VxWorks hash databases could be corrupted on dosFS
+filesystems because Berkeley DB did not correct for dirty filesystem
+reads. [#2317]
+<li>Add a workaround for a MoveFileEx bug in Windows/98 which caused
+the DB-&gt;rename method to fail. [#2341]
+<li>Fix a bug where the VxWorks support did not accept both slash and
+backslash as path separators. [#2393]
+<li>Fix a bug where VxWorks device names were not ignored when evaluating
+paths. [#2393]
+<li>Fix txn_begin documentation to correctly specify operations available
+to parent transactions with active child transactions. [#2457]
+<li>Fix txn_commit documentation to correctly specify effect of parent
+transaction commit on active child transactions. [#2457]
+<li>Fix a bug in the Reference Guide where txn_begin and txn_commit
+examples had the wrong arguments. [#2485]
+<li>Fix the documentation on extending Berkeley DB recovery to reference
+the correct filenames. [#2501]
+<li>Fix a bug where the DB_CLIENT flag was not listed in the C++/Java API
+DbEnv class constructor documentation. [#2510]
+<li>Fix a bug where the DbEnv-&gt;set_server interface was not documented
+for the C++/Java APIs. [#2510]
+<li>Fix the DBENV-&gt;remove method's argument documentation. [#2518]
+<li>Fix a bug where the Java DbEnv.strerror and version number methods
+weren't documented. [#2523]
+
+</ol>
+
+</body>
+</html>
diff --git a/db/docs/ref/changelog/3.2.9.html b/db/docs/ref/changelog/3.2.9.html
new file mode 100644
index 000000000..74cc450ad
--- /dev/null
+++ b/db/docs/ref/changelog/3.2.9.html
@@ -0,0 +1,324 @@
+<!--$Id: 3.2.9.html,v 1.4 2007/05/17 18:17:18 bostic Exp $-->
+<html>
+<head>
+<title>The Berkeley DB Package: DB 3.2.9 Change Log</title>
+<meta name="description" content="Berkeley DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Berkeley DB 3.2.9 Change Log</h3>
+
+<h3>Database On-Disk Format Changes:</h3>
+<ol>
+
+<li>The on-disk Queue format has changed from version 2 to version 3. For
+information on upgrading database formats, see "Upgrading Applications
+to the 3.2 release" in the Berkeley DB Reference Guide.
+
+</ol>
+<h3>Major New Features:</h3>
+<ol>
+
+<li>Berkeley DB now includes support for the QNX Neutrino Real-Time
+Platform.
+
+</ol>
+<h3>Interface Additions and Changes:</h3>
+<ol>
+
+<li>Add support for blocking on a Queue "consume" operation until a
+record is available, with a new flag (DB_CONSUME_WAIT) to support this.
+[#1037]
+<li>Change the Queue "consume" operation (and the DB_CONSUME flag) to
+use the DB-&gt;get() method instead of DBC-&gt;c_get(). [#1037]
+<li>Add support for extent-based queues, and a new method to support
+them, DB-&gt;set_q_extentsize. [#1463]
+<li>Add support for wrap-around record numbers in the Queue access
+method. [#1463]
+<li>Add a DB-&gt;set_feedback interface flag for database verification
+operations. [#2019]
+<li>Add a reference to a DB object as the first argument to
+four application callback functions (the callback functions set by
+DB-&gt;set_bt_compare, DB-&gt;set_bt_prefix, DB-&gt;set_dup_compare, and
+DB-&gt;set_h_hash). [#2179]
+<li>Add a DBENV-&gt;set_flags interface to support configuration of the
+database environment. [#2727]
+<li>Add the DB_CDB_ALLDB flag to the DBENV-&gt;set_flags interface to
+support Concurrent Data Store semantics across multiple databases in an
+environment. [#2727]
+<li>Remove the app_private field from the DBT structure. Add app_private
+fields to the DB and DB_ENV structures. [#2862]
+<li>The db_env_set_mutexlocks function has become a method on the
+environment handle, DBENV-&gt;set_mutexlocks. [#3001]
+
+</ol>
+<h3>General Environment Changes:</h3>
+<ol>
+
+<li>Add support for the destruction of mutexes which may hold system
+resources. [#1953]
+<li>Attempts to join existing regions where the application was built with
+a different version (major, minor, patch) of Berkeley DB than was the
+application that created the region, now returns EINVAL. [#2198]
+<li>Clarify the Berkeley DB documentation that all destructor methods,
+(for example, DB-&gt;close txn_commit, txn_abort and memp_fclose),
+always destroy their respective handles, regardless of their return,
+error or not. Review the appropriate code and apply minor fixes. [#2311]
+<li>Fix a bug in which creating multiple databases in one file could fail
+when using the Concurrent Data Store product. [#2713]
+<li>Fix a bug in which running recovery in one environment could cause
+mutexes to stop working in another environment open in the same process.
+[#3001]
+<li>Fix a set of bugs in which assorted DB interfaces could panic
+and return errors other than DB_RUNRECOVERY. [#3018]
+<li>Fix a bug where calling the DB_ENV-&gt;remove method using a handle
+already passed to the DB_ENV-&gt;open method dumped core. [#3097]
+<li>Fix a bug where the Concurrent Data Store product could enter
+deadlock. [#3065]
+<li>Fix a bug where recovery output spurious error messages when opening
+a previously deleted subdatabase. [#3074]
+
+</ol>
+<h3>General Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug where the DB-&gt;verify method was unable to access
+subdatabases, returning ENOENT. [#2319]
+<li>Change filename processing to not transform database names with
+leading "./" strings. [#2382]
+<li>Fix a bug in which database verification could report the wrong number of pages and fail. [#2559]
+<li>Fix a bug in which overflow pages belonging to duplicate data items
+might not be properly counted by DB-&gt;stat. [#2911]
+<li>Fix a bug in which cursors could be adjusted incorrectly when
+items are inserted into an off-page duplicate set. [#2910]
+<li>Fix a set of bugs which could cause the DB salvager to dump core
+when running with DB_AGGRESSIVE or for certain classes of corrupt databases.
+[#2784]
+<li>Fix a bug in which DB_KEYEXIST could be incorrectly returned
+by DB-&gt;verify. [#2784]
+<li>Add a stricter verification criterion: free lists of pages are not
+allowed on metadata pages other than the master one. [#2784]
+
+</ol>
+<h3>Btree Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug where cursors in the parent of a nested transaction could
+be incorrectly adjusted after a child transaction was aborted. [#2373]
+<li>Fix a bug where an overflow page's reference count was not
+decremented during a reverse split. [#2550]
+<li>Fix a bug where the tree record count in a Btree could be left
+incorrect after an aborted insert or delete. [#2810]
+<li>Fix a bug in which too high a value of bt_minkey could cause an
+infinite loop when executing a Btree split. [#2888]
+<li>Fix a bug in which overflow pages that stored a duplicate
+data item could be leaked when the item was deleted. [#2912]
+
+</ol>
+<h3>Hash Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug where cursors in the parent of a nested transaction could
+be incorrectly adjusted after a child transaction was aborted. [#2373]
+<li>Fix a bug in which cursor gets performed on deleted items could
+return EINVAL instead of the correct DB_KEYEMPTY. [#2596]
+<li>Fix a bug where the verifier could falsely report errors when new
+hash pages were allocated in an aborted transaction. [#2577]
+<li>Fix a bug where hash recovery roll-forward log contains a abort and
+then re-do of a hash table double. [#2599]
+<li>Fix a bug in hash recovery roll-forward that could cause database
+corruption. [#2602]
+<li>Fix a bug where sizes could be miscalculated when adding duplicate
+records. [#2611]
+<li>Fix a bug in which a Hash insert could result in a misplaced
+item or an application crash. [#2842]
+<li>Fix a memory leak in Hash which could cause salvaging of Hash
+databases to waste an amount of memory roughly equal to database size. [#2869]
+<li>Fix a bug in which a failed attempt to put a duplicate duplicate
+item could result in a corrupted database. [#2996]
+<li>Fix a bug in which databases upgraded from version 2.X could
+become corrupted by the upgrade process. [#3061]
+<li>Fix a bug in which verifying a Hash database with the DB_ORDERCHKONLY
+flag could fail. [#3061]
+
+</ol>
+<h3>Queue Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug in which a (possibly nonsense) record number was returned
+when a queue insertion failed. [#2634]
+<li>Add support for circular queues: when UINT32_T_MAX records have
+been added using DB_APPEND, wrap around to record number 1. [#2829]
+<li>Fix a bug where the DB-&gt;stat method incorrectly marked the
+metadata page clean. [#3092]
+
+</ol>
+<h3>Recno Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug where cursors in the parent of a nested transaction could
+be incorrectly adjusted after a child transaction was aborted. [#2373,#2490]
+<li>Fix a bug in which a failure during the open of a Recno database could
+result in application crashes. [#2687]
+<li>Change the Recno statistics to not count logically deleted data
+items in Recno trees with immutable record numbers. [#2629]
+<li>Fix a bug in which overflow pages in Recno databases
+might not be properly counted by DB-&gt;stat. [#2911]
+<li>Change the Recno backing source file implementation to use stdio
+and not memory map the files. [#3076]
+<li>Fix a bug where writing new records past the end of the source text
+file when the entire file hadn't been read failed. [#3276]
+
+</ol>
+<h3>C++ API Changes:</h3>
+<ol>
+
+<li>Fix a bug where calling the Db::remove() method could crash the application. [#2665]
+<li>Stop supporting "reopens" of Db/DbEnv objects in C++, fix API memory
+leaks. [#2783, #2344]
+
+</ol>
+<h3>Java API Changes:</h3>
+<ol>
+
+<li>Java now supports the Db-&gt;set_bt_compare, Db-&gt;set_bt_prefix
+Db-&gt;set_h_hash and DbEnv-&gt;set_tx_recover methods, allowing Java
+applications to specify alternate Btree comparison and prefix methods,
+Hash hashing method and application-specific recovery. [#2179]
+<li>Remove unnecessary local allocation routine setting in Java API. [#2510]
+<li>Fix a bug where the Db.DB_CACHED_COUNTS flag was not properly defined in Java. [#2568]
+<li>Fix a bug where certain DB error returns did not display the correct db_strerror text. [#2679]
+<li>Db.rename, Db.remove, DbEnv.remove now throw
+java.io.FileNotFoundException. [#2320]
+<li>Stop supporting "reopens" of Db/DbEnv objects in Java, fix API
+memory leaks. [#2320]
+
+</ol>
+<h3>Tcl API Changes:</h3>
+<ol>
+
+<li>Fix a bug where closing a Tcl environment handle (when the environment
+included open database handles), the open database handles would be
+discarded and the underlying Berkeley DB resources leaked. [#2325]
+
+</ol>
+<h3>RPC Client/Server Changes:</h3>
+
+<blockquote>None.</blockquote>
+
+<h3>XA Resource Manager Changes:</h3>
+<ol>
+
+<li>Fix a bug in which updates could be performed on behalf of the
+wrong XA transaction. [#2650]
+
+</ol>
+<h3>Locking Subsystem Changes:</h3>
+<ol>
+
+<li>Change the locking subsystem to guarantee that if any request for
+a lock fails, the off field is set to LOCK_INVALID, parts of Berkeley
+DB reasonably depend on this, and it fixes a potential uninitialized
+memory read in Btree root page processing. [#2364]
+
+</ol>
+<h3>Logging Subsystem Changes:</h3>
+<ol>
+
+<li>Fix a bug where an error message was written out if the log_get()
+interface was called and the supplied DBT included the DB_USERMEM flag,
+and there was insufficient space available for the log record. [#2243]
+
+</ol>
+<h3>Buffer Pool Subsystem Changes:</h3>
+<ol>
+
+<li>Avoid flushing the log for each buffer written during a transaction
+checkpoint. [#2287]
+<li>Fix a bug in which the "gbytes" parameter to the set_cachesize functions
+(and to set_cachesize directives in a DB_CONFIG file) was handled incorrectly.
+[#2685]
+<li>Fix a bug which could result in erratic behavior or application
+crashes during buffer pool open. [#2747]
+<li>Fix a bug in which statistics fields belonging to per-file structures
+were not returned when per-file statistics were not requested. [#3038]
+
+</ol>
+<h3>Transaction Subsystem Changes:</h3>
+<ol>
+
+<li>Rework child transaction structures on child commit in order to
+decrease transaction resource usage and ensure abort on error. [#2230] [#2489]
+<li>Display an error message if cursors opened within a transaction are
+still open at transaction commit/abort. [#2235]
+<li>Fix a bug where one abort path after a page allocation could lead to
+a corrupted free list. [#2464]
+<li>Fix bug that caused reference to potentially freed memory. [#2478]
+<li>Fix a bug in which recovery of the deletion of a file that had been
+later re-created with the same name could fail. [#2538]
+<li>Fix a bug where missing pages were handled incorrectly during
+overflow reference count recover. [#2556]
+<li>Fix a bug where recovery of a subdatabase metadata operation could fail. [#2502]
+<li>Change transaction checkpointing to render less likely a situation in which no checkpoint will ever complete because pages remain pinned. [#2569]
+<li>Fix a bug where recovery of a queue metadata operation could fail. [#2690]
+<li>Fix a bug where recovery of a DB_CONSUME operation in queue could fail. [#2698]
+<li>Fix a bug where recovery could fail if done twice without an intervening checkpoint after an unclean shut down. [#2918]
+<li>Fix a bug where an error on recovery could cause a core dump due
+to an incorrect number of arguments in a printf statement. [#2987]
+<li>Change transaction checkpointing so that checkpoints are no longer
+skipped if there are new log records in the log buffer but none which have
+been flushed to disk. [#2949]
+
+</ol>
+<h3>Utility Changes:</h3>
+<ol>
+
+<li>Fix a bug in which db_stat would print extraneous error messages
+when opening a file containing multiple databases. [#2565]
+<li>Fix a bug where db_dump would display keys as numeric strings even
+though data items were being displayed as hex pairs. [#2676]
+<li>Fix a bug where the wrong statistics value was displayed for the
+maximum locks ever requested. [#2979]
+<li>Remove mention of the "-a m" option to db_deadlock, it was never
+implemented. [#3082]
+
+</ol>
+<h3>Configuration, Documentation, Portability and Build Changes:</h3>
+<ol>
+
+<li>Support for MSVC 4 has been removed.
+<li>Add a --enable-umrw configuration option to mask harmless uninitialized
+memory reads/writes. [#2377]
+<li>Remove searching of non-standard directories for Tcl installation,
+search only /usr/local. [#2386]
+<li>Fix a bug where Win32 support did not accept colon as a device/path
+separator. [#2393]
+<li>Ensure that Tcl directory include files do not override Berkeley DB
+include files when building the Tcl API. [#2395]
+<li>Rename "try" variable something else for Compaq Tru64 UNIX 5.0a. [#2410]
+<li>Change the Reference Guide to list page name, not section name as
+the HTML title. [#2485]
+<li>Fix a bug where the DBT documentation incorrectly said that various
+flags were only used during key/data pair retrieval. [#2537]
+<li>Fix a bug where VxWorks applications were restricted to the use of one environment, and add support for DB_ENV-&gt;set_shm_key on VxWorks. [#2528]
+<li>Fix a bug where VxWorks applications incorrectly failed when trying
+to memory-map read-only database files. [#2570]
+<li>Add support in the MSVC project files to build statically on Windows. [#2554]
+<li>Fix a bug in which resolution of absolute pathnames in VxWorks was incorrect. [#2579]
+<li>Fix a bug in which file initialization was being incorrectly performed for temporary files that have not yet been physically instantiated on Windows/95 and /98. [#2341]
+<li>Enable large file support in Linux. [#2871]
+<li>Fix a compiler warning in the Solaris mutex code. [#2905]
+<li>Berkeley DB now works with the Cygwin tools. You need at least DLL
+version 1.1.4. Configure and build as you would on a Unix system. Only
+static library builds are supported, no shared library support is
+included. [#2913]
+<li>Update BSD-style queue.h macros to avoid compilation problems
+on some versions of FreeBSD. [#2999]
+<li>Modify installation sequence such that the db_185.h header file is now
+only installed when --enable-compat185 was specified as an option to configure. [#3064]
+
+</ol>
+
+</body>
+</html>
diff --git a/db/docs/ref/changelog/3.3.11.html b/db/docs/ref/changelog/3.3.11.html
new file mode 100644
index 000000000..4fcccfc10
--- /dev/null
+++ b/db/docs/ref/changelog/3.3.11.html
@@ -0,0 +1,295 @@
+<!--$Id: 3.3.11.html,v 1.6 2007/05/17 18:17:18 bostic Exp $-->
+<html>
+<head>
+<title>The Berkeley DB Package: DB 3.3.11 Change Log</title>
+<meta name="description" content="Berkeley DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Berkeley DB 3.3.11 Change Log</h3>
+
+<h3>Major New Features:</h3>
+<ol>
+
+<li>Berkeley DB now continues to run when no disk space is available. [#637]
+<li>Add Berkeley DB API support for bulk-data returns. [#2934]
+<li>Add Berkeley DB API support for secondary indices. [#3329]
+<li>Add support for degree 1 isolation (dirty reads). [#3395]
+<li>Add support for native Berkeley DB two-phase commit. This requires
+an additional parameter to txn_prepare (a global transaction id), a new
+interface that returns the list of prepared but not yet committed
+transactions, and a new interface that supports transaction discard. [#3563]
+<li>Add support for the Embedix OS. [#3666]
+
+</ol>
+<h3>Interface Additions and Changes:</h3>
+<ol>
+
+<li>The new Db handle method DB-&gt;truncate supports discard of all
+records in a database. [#1984]
+<li>The DB_LOCK_CONFLICT flag has been removed. [#2606]
+<li>The new DbEnv handle method DBENV-&gt;set_lg_regionmax method
+supports sizing the logging subsystem's region. [#3509]
+<li>Add support for deadlock resolution based on the transaction holding
+the fewest, most, and most write locks. [#3020]
+<li>Replace the DB-&gt;set_malloc and DB-&gt;set_realloc functions, and
+the malloc arguments to DB-&gt;stat, lock_stat, log_archive, log_stat,
+memp_stat and txn_stat, with the new DB_ENV-&gt;set_alloc and
+DB-&gt;set_alloc interfaces. [#3329]
+<li>Allow the DB-&gt;get_type and DB-&gt;get_byteswapped methods to
+return error values. [#4071]
+
+</ol>
+<h3>General Environment Changes:</h3>
+<ol>
+
+<li>Fix a bug where threads of control were not properly informed that
+the database environment had failed with DB_RUNRECOVERY. [#3280]
+<li>Fix a bug where it was impossible to remove or run recovery on a
+database environment that had failed with DB_RUNRECOVERY. [#3280]
+<li>Fix a bug where error messages could be lost when performing
+recovery on a database environment as part of a DB-&gt;open call.
+[#3340]
+<li>Detect attempts to use DB handles inside transactions that were not
+originally created in an environment that supports transactions. [#3406]
+<li>Fix a bug where recovery could drop core when a subdatabase metadata
+page was being recovered. [#3454]
+<li>Fix bug where system mutex resources could be leaked when DB_THREAD
+was specified, on OSE, VxWorks and QNX. [#3474]
+<li>Fix a bug where the DBENV-&gt;set_feedback method could
+cause a core dump if the database environment had no
+existing log files. [#3894]
+
+
+</ol>
+<h3>General Access Method Changes:</h3>
+<ol>
+
+<li>Add the DB_FAST_STAT option to the DB-&gt;stat method to return only
+those database statistics that can be acquired without database
+traversal. Deprecate the DB_CACHED_COUNTS and DB_RECORDCOUNT flags to
+the DB-&gt;stat method. [#2090]
+<li>Fix bugs in the salvager where various error cases failed to unpin
+pages. [#2869]
+<li>Fix a bug where join memory could be allocated using the wrong
+allocation routines. [#3403]
+<li>Fix a bug where a transaction handle could be used after it was
+closed. [#3480]
+<li>Fix a bug in which a join cursor get could unexpectedly fail, or
+memory returned by a join cursor get could be freed or corrupted by
+an unrelated call using the primary database handle. [#3749]
+<li>Fix a bug in which DB-managed memory returned by a DB-&gt;get or
+DB-&gt;put call may be corrupted by a later cursor call. [#3576]
+<li>Fix a bug where file descriptors could be leaked when attempting
+to open database files where the metadata page could not be read. [#3786]
+<li>Fix a bug where the Db.open method could throw a DB_INCOMPLETE
+exception. [#3885]
+<li>Fix a bug in which partial gets that specify an offset and length
+beyond the end of the record could return garbage data. [#4117]
+
+</ol>
+<h3>Btree Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug where overwriting a previously deleted data item in a
+sorted, off-page, duplicate set could fail. [#3617]
+<li>Fix a bug where the Btree/Recno DB-&gt;stat method could
+leave a page pinned. [#3761]
+<li>Fix a bug where aborting a child transaction could cause an application
+crash if cursors were open in the parent transaction. [#4002]
+
+</ol>
+<h3>Hash Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug where memory could be freed and then returned to the
+application. [#3506]
+<li>Fix a bug where truncating a hash database with off-page duplicate
+records could drop core.
+<li>Fix a bug where certain record partial put operations could
+be unrecoverable. [#3944]
+<li>Fix a bug where abort when converting from on-page to off-page
+duplicate sets could cause a core dump. [#3975]
+<li>Fix a bug where an error in converting from on-page to off-page
+duplicate sets could leave a page pinned. [#3975]
+<li>Fix a bug where aborting a child transaction could cause open cursors
+belonging to a parent transaction to return corrupt or incomplete data. [#4002]
+<li>Fix a class of bugs in which aborting a child transaction could cause a
+hash cursor that pointed at a deleted item to start pointing at a different,
+incorrect item. [#4052] [#4142]
+
+</ol>
+<h3>Queue Access Method Changes:</h3>
+<ol>
+
+<li>Preserve Queue database extent size across dump/load cycles. [#3323]
+<li>Fix a bug where calling the DB-&gt;stat method on an empty Queue
+database opened in read-only mode dropped core. [#3333]
+<li>Fix a bug in which attempts to get nonexistent records in a Queue
+database could incorrectly return EIO. [#3670]
+<li>Fix a bug where the delete of an extent file could be unrecoverable. [#3927]
+<li>Improve concurrency in the Queue access method by removing a log
+write made while holding a metapage lock during record append. [#3939]
+<li>Fix a bug where the metapage lock was not released on error. [#3998]
+<li>Fix a bug where log_archive with the DB_ARCH_DATA flag specified
+did not return the names of the extent files for Queue databases. [#3968]
+<li>Improve concurrency in the Queue access method by removing a log write made while holding a metapage lock during record append. [#3939]
+
+</ol>
+<h3>Recno Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug in which a DB-&gt;get(DB_GET_BOTH) or DBC-&gt;c_get(DB_GET_BOTH)
+operation on a Recno database could erroneously return an item with
+a matching datum but a different record number from that specified.
+[#3878]
+<li>Fix a bug in which implicitly-created data items could incorrectly
+appear non-empty in a fixed-length Recno database with an re_len
+greater than the threshold for moving items off-page. [#2934]
+<li>Fix a bug where partial backing source file records (records
+terminated by end-of-file) were lost. [#4161]
+
+</ol>
+<h3>C++ API Changes:</h3>
+<ol>
+
+<li>Add C++ methods to support access from C++ class objects to
+underlying C objects. [#3656]
+
+</ol>
+<h3>Java API Changes:</h3>
+<ol>
+
+<li>Fix a bug where calling the env.log_put method caused a core dump. [#3401]
+<li>Fix a bug where the Java lock statistics structure was out-of-date
+with the C version and the documentation. [#3489]
+
+</ol>
+<h3>Tcl API Changes:</h3>
+<ol>
+
+<li>Fix a bug where memory guard bytes were incorrectly checked by the
+Tcl txn_stat call. [#3431]
+<li>Fix a bug in which values too large for a signed 32-bit integer,
+but which would fit in the unsigned 32-bit integer called for by many
+DB interfaces, would be incorrectly rejected by the Tcl interface
+on some platforms. [#4184]
+
+</ol>
+<h3>RPC Client/Server Changes:</h3>
+<ol>
+
+<li>Fix a bug in RPC reply for the DB-&gt;join method. [#3425]
+<li>Change RPC to use Berkeley DB major/minor release numbers as the
+RPC version numbers. [#3425]
+<li>Fix a bug where lock detection wasn't being run.
+<li>Fix a bug where we were not returning the correct value
+for get_byteswapped when running over RPC. [#3771]
+<li>Change the method interface from set_server to set_rpc_server
+and add an argument to allow users to send in a CLIENT structure for
+us to use for RPC. [#3772]
+
+</ol>
+<h3>XA Resource Manager Changes:</h3>
+
+<blockquote>None.</blockquote>
+
+<h3>Locking Subsystem Changes:</h3>
+<ol>
+
+<li>Speed up deadlock detector check by linking lockers together so we
+don't traverse a large and sparse locker table. [#2983]
+<li>Fix a bug where deadlock detection could be incorrect. [#3479]
+<li>Fix a bug where deadlock resolution of youngest/oldest transactions
+incorrectly selected the transaction to abort. [#3149]
+
+</ol>
+<h3>Logging Subsystem Changes:</h3>
+<ol>
+
+<li>Fix a bug where running recovery on a database environment containing
+only logs from a previous release of Berkeley DB, in which log.0000000001
+doesn't exist, could fail. [#3380]
+<li>Fix a bug where opening too many files could cause a core dump. [#3399]
+<li>Fix a bug where resetting the log buffer size could cause a core
+dump. [#3855]
+<li>Fix a bug where files in the database environment similarly named to
+Berkeley DB log files could cause applications to fail. [#4234]
+
+</ol>
+<h3>Buffer Pool Subsystem Changes:</h3>
+<ol>
+
+<li>Fix a bug where incorrect values for the total size of the cache
+were being returned by the memp_stat interface. [#3638]
+<li>Fix a bug where the clean-page count for the Berkeley DB buffer cache could become incorrect. [#3679]
+<li>Fix a bug where checkpoints could not succeed if there was
+a temporary backing file for which the process did not have
+an open file descriptor. [#3826]
+<li>Detect unreasonable cache sizes, fix a bug where 4GB regions
+could drop core. [#3904]
+<li>Fix a bug where checkpoints could be blocked from ever completing if
+an application combined Berkeley DB access method use of the buffer pool
+with non-DB use. [#4058]
+<li>Fix a bug where dirty/clean page counts could be incorrect. [#4249]
+
+</ol>
+<h3>Transaction Subsystem Changes:</h3>
+<ol>
+
+<li>Fix a potential memory leak in the txn_stat interface. [#3426]
+
+</ol>
+<h3>Utility Changes:</h3>
+<ol>
+
+<li>Add a -f option to return only those database statistics that can
+be acquired without database traversal. [#2090]
+<li>Fix a bug in several utilities where a destroyed DB handle could be
+used after it was closed, resulting in core dumps. [#3565]
+<li>Fix a bug where db_load would fail in any environment supporting
+transactions. [#3565]
+<li>Fix a bug where db_stat could drop core if the environment had not
+been configured to support all services. [#3526]
+<li>Increase the size of the cache created by the db_dump utility
+when no pre-existing environment is specified. [#4192]
+
+</ol>
+<h3>Database or Log File On-Disk Format Changes:</h3>
+
+<blockquote>None.</blockquote>
+
+<h3>Configuration, Documentation, Portability and Build Changes:</h3>
+<ol>
+
+<li>Upgrade to config.guess version 1.193, config.sub version 1.207,
+autoconf version 2.50.
+<li>Fix a bug where log_archive could return EINVAL on VxWorks because
+checkpoint could zero out portions of the log.
+<li>Add the --with-uniquename=NAME configuration option so that multiple
+copies of Berkeley DB can be loaded into a single process. [#3025]
+<li>Document the relationship between log in-memory buffer size and log
+file size. [#3340]
+<li>Fix a bug where the user CFLAGS value was overwritten on Linux. [#3375]
+<li>Fix a bug where the db_recops type values were overwritten by
+#defines. [#3407]
+<li>PowerPC/GCC system mutexes were incorrect. [#3417]
+<li>Fix a bug where --enable-bigfile was incorrectly evaluated. [#3559]
+<li>Clarify lock_vec documentation with respect to structure fields. [#3552]
+<li>Fix a mutex memory leak on AIX and HPUX. [#3703]
+<li>Support by static and shared libraries by default. [#3722]
+<li>Add mutex support for GCC and Alpha/Sparc platforms. [#3780]
+<li>Fix Berkeley DB error messages with extraneous trailing
+newline characters. [#3915]
+<li>Fix a bug where installing or uninstalling the documentation
+could remove files other than Berkeley DB's. [#3960]
+<li>Fix a bug where ssize_t was typed as "int" on Win64. [#3948]
+<li>Fix a bug where recovery could fail and/or databases be corrupted
+for applications running on filesystems that do not zero out implicitly
+created blocks (for example, VxWorks and Windows 95/95). [#4025]
+
+</ol>
+
+</body>
+</html>
diff --git a/db/docs/ref/changelog/4.0.14.html b/db/docs/ref/changelog/4.0.14.html
new file mode 100644
index 000000000..66c931309
--- /dev/null
+++ b/db/docs/ref/changelog/4.0.14.html
@@ -0,0 +1,246 @@
+<!--$Id: 4.0.14.html,v 1.5 2007/05/17 18:17:18 bostic Exp $-->
+<html>
+<head>
+<title>The Berkeley DB Package: DB 4.0.14 Change Log</title>
+<meta name="description" content="Berkeley DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Berkeley DB 4.0.14 Change Log</h3>
+
+<h3>Major New Features:</h3>
+<ol>
+
+<li>Group commit. [#42]
+<li>Single-master replication. [#44]
+<li>Support for VxWorks AE; Vxworks support certified by WindRiver Systems
+Inc. [#4401]
+
+</ol>
+
+<h3>General Environment Changes:</h3>
+<ol>
+
+<li>The db_env_set_pageyield interface has been replaced by a new flag
+(DB_YIELDCPU) for the DB_ENV-&gt;set_flags interface.
+<li>The db_env_set_panicstate interface has been replaced by a new flag
+(DB_PANIC_STATE) for the DB_ENV-&gt;set_flags interface.
+<li>The db_env_set_region_init interface has been replaced by a new flag
+(DB_REGION_INIT) for the DB_ENV-&gt;set_flags interface.
+<li>The db_env_set_tas_spins interface has been replaced by the
+DB_ENV-&gt;set_tas_spins method.
+<li>The DB_ENV-&gt;set_mutexlocks interface has been replaced by a new
+flag (DB_NOLOCKING) for the DB_ENV-&gt;set_flags interface.
+<li>Fix a bug where input values from the DB_CONFIG file could overflow.
+<li>The C API lock, log, memory pool and transaction interfaces have
+been converted to method based interfaces; see the Upgrade documentation
+for specific details. [#920]
+<li>Fix a bug in which some DB_ENV configuration information could be lost
+by a failed DB_ENV-&gt;open command. [#4608]
+<li>Fix a bug where Berkeley DB could fail if the application
+attempted to allocate new database pages while the system was
+unable to write new log file buffers. [#4928]
+
+</ol>
+<h3>General Access Method Changes:</h3>
+<ol>
+
+<li>Add a new flag (DB_GET_BOTH_RANGE) that adds support for range
+searches within sorted duplicate data sets. [#3378]
+<li>Fix a bug in which the DB-&gt;get or DB-&gt;pget methods, when used with
+secondary indices, could incorrectly leave an internally-created
+database cursor open. [#4465]
+<li>The DB-&gt;set_alloc method can no longer be called when the
+database is part of a database environment. [#4599]
+
+</ol>
+<h3>Btree Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug where a lock could be leaked when a thread calling DB-&gt;stat
+on a Btree database was selected to resolve a deadlock. [#4509]
+
+</ol>
+<h3>Hash Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug where bulk return using the MULTIPLE_KEY flag on a
+Hash database would only return entries from a single bucket. [#4313]
+
+</ol>
+<h3>Queue Access Method Changes:</h3>
+<ol>
+
+<li>Delete extent files whenever the leading record is deleted, instead
+of only when a DB_CONSUME operation was performed. [#4307]
+
+</ol>
+<h3>Recno Access Method Changes:</h3>
+<ol>
+<li>Fix a bug where the delete of a record in a Recno database
+could leak a lock in non-transactional applications. [#4351]
+<li>Fix a bug where the DB_THREAD flag combined with a backing
+source file could cause an infinite loop. [#4581]
+
+</ol>
+<h3>C++ API Changes:</h3>
+
+<blockquote>None.</blockquote>
+
+<h3>Java API Changes:</h3>
+<ol>
+
+<li>
+Added implementation of DbEnv.lock_vec for Java. [#4094]
+Added some minimal protection so that the same Java Dbt
+cannot be used twice in the same API call, this will
+often catch multithreading programming errors with Dbts. [#4094]
+<li>
+Fix a bug in which a Db.put call with the Db.DB_APPEND would fail
+to correctly return the newly put record's record number. [#4527]
+<li>Fixed problems occurring in multithreaded java apps that use
+callbacks. [#4467]
+</ol>
+<h3>Tcl API Changes:</h3>
+<ol>
+
+<li>Fix a bug in which large integers could be handled incorrectly
+by the Tcl interface on 64-bit machines. [#4371]
+
+</ol>
+<h3>RPC Client/Server Changes:</h3>
+<ol>
+
+<li>The DB_ENV-&gt;set_server interface has been removed.
+
+
+</ol>
+<h3>XA Resource Manager Changes:</h3>
+
+<blockquote>None.</blockquote>
+
+<h3>Locking Subsystem Changes:</h3>
+<ol>
+
+<li>The C++ (Java) API DbLock::put (DbLock.put) method has been changed
+to be a method off the DbEnv handle rather than the DbLock handle.
+<li>Locker IDs may now wrap-around. [#864]
+<li>Explicitly allocated locker IDs must now be freed. [#864]
+<li>Add per-environment, per-lock and per-transaction interfaces to
+support timeout based lock requests and "deadlock" detection. [#1855]
+<li>Add support for interrupting a waiting locker. [#1976]
+<li>Implemented DbEnv.lock_vec for Java. [#4094]
+
+</ol>
+<h3>Logging Subsystem Changes:</h3>
+<ol>
+
+<li>Fix a bug where the size of a log file could not be set to
+the default value. [#4567]
+<li>Fix a bug where specifying a non-default log file size could
+cause other processes to be unable to join the environment and
+read its log files. [#4567]
+<li>Fix a bug where Berkeley DB could keep open file descriptors
+to log files returned by the DB_ENV-&gt;log_archive method (or the
+db_archive utility), making it impossible to move or remove them
+on Windows systems. [#3969]
+<li>Replace the log_get interface with a cursor into the
+log file. [#0043]
+
+</ol>
+<h3>Memory Pool Subsystem Changes:</h3>
+<ol>
+
+<li>Add the DB_ODDFILESIZE flag to the DB_MPOOLFILE-&gt;open method
+supporting files not a multiple of the underlying page size in length.
+<li>Convert memp_XXX functional interfaces to a set of methods, either
+base methods off the DB_ENV handle or methods off of a DB_MPOOLFILE
+handle. [#920]
+<li>Add the DB_ODDFILESIZE flag to the DB_MPOOLFILE-&gt;open method
+supporting files not a multiple of the underlying page size in length.
+<li>Fix a bug where threads of control could deadlock opening a
+database environment with multiple memory pool caches. [#4696]
+<li>Fix a bug where the space needed for per-file memory
+pool statistics was incorrectly calculated. [#4772]
+</ol>
+<h3>Transaction Subsystem Changes:</h3>
+<ol>
+
+<li>Transaction IDs may now wrap-around. [#864]
+<li>Release read locks before performing logging operations at commit. [#4219]
+
+</ol>
+<h3>Utility Changes:</h3>
+<ol>
+
+<li> Fix a bug in which the db_dump utility would incorrectly attach to
+transaction, locking, or logging regions when salvaging, and thus
+could not be used to salvage databases in environments where these
+regions were present. [#4305]
+<li>Fix a bug in which the DB salvager could produce incorrectly
+formatted output for certain classes of corrupt database. [#4305]
+<li>Fix a bug in which the DB salvager could incorrectly salvage
+files containing multiple databases. [#4305]
+<li>Fix a bug where unprintable characters in subdatabase names could
+cause a dump of a database that could not then be loaded. [#4688]
+<li>Increase the size of the cache created by the db_stat and db_verify
+utilities to avoid failure on large databases. [#4688] [#4787]
+<li>Fix a bug in which a database verification performed with the
+DB_ORDERCHKONLY flag could fail incorrectly. [#4757]
+<li>Fix a bug which caused db_stat to display incorrect information about
+GB size caches. [#4812]
+</ol>
+<h3>Database or Log File On-Disk Format Changes:</h3>
+<ol>
+
+<li>The on-disk log format changed.
+
+</ol>
+<h3>Configuration, Documentation, Portability and Build Changes:</h3>
+<ol>
+
+<li>Fix a bug where Win9X systems region names could collide.
+<li>Fix a bug where configuring Berkeley DB to build the C++ API
+without also configuring for a shared library build would fail
+to build the C++ library. [#4343]
+<li>Change Berkeley DB installation to not strip binaries if
+--enable-debug was specified as a configuration option. [#4318]
+<li>Add the -pthread flag to AIX, FreeBSD and OSF/1 library loads. [#4350]
+<li>Fix a bug where the Berkeley DB 1.85 compatibility API
+failed to load in the 3.3.11 release. [#4368]
+<li>Port the Berkeley DB utility programs to the VxWorks environment. [#4378]
+<li>Made change to configuration so that dynamic libraries link
+correctly when C++ is used on AIX. [#4381]
+<li> Fix a variety of problems that prevented the Berkeley DB source tree
+from building on systems without ANSI C compiler support (for example,
+SunOS 4.X). [#4398]
+<li>Added missing DbMultiple*Iterator Java files to Makefile.in. [#4404]
+<li>Fix a bug that could prevent the db_dump185 utility from dumping
+Berkeley DB version 1.86 hash databases. [#4418]
+<li>Reduce the number of calls setting the errno value, to
+improve performance on Windows/NT in MT environments. [#4432]
+<li>Fix for Darwin (and probably some other) OS's that were getting
+'yes' or other garbage in generated makefiles in place of
+a shared library name. [#4453]
+<li>C++: Remove inlining for constructor of tmpString internal class.
+This fixes warnings on Solaris profiling builds. [#4473]
+<li>DB now restarts system calls that are interrupted by signals. [#4480]
+<li>Fixed warnings for compiling Java native code on Solaris and OSF/1. [#4571]
+<li>Added better configuration for Java on Tru64 (OSF/1), Solaris,
+Mac OS/X, BSD/OS. [#3778]
+<li> Java files are now built as jar files. Berkeley DB classes are put
+into db.jar (which is an installed file on UNIX) and examples are put
+into dbexamples.jar. The classes directory is now a subdirectory of
+the build directory, rather than in java/classes. [#4575]
+<li>Support Cygwin installation process. [#4611]
+<li>Correct the Java secondary_key_create method signature. [#4777]
+<li>Export additional Berkeley DB interfaces on Windows to
+support application-specific logging and recovery. [#4827]
+<li>Always complain when using version 2.96 of the gcc compiler. [#4878]
+<li>Add compile and load-time flags to configure for threads on
+UnixWare and OpenUNIX. [#4552] [#4950]
+</ol>
+
+</body>
+</html>
diff --git a/db/docs/ref/changelog/4.1.24.html b/db/docs/ref/changelog/4.1.24.html
new file mode 100644
index 000000000..4a185f747
--- /dev/null
+++ b/db/docs/ref/changelog/4.1.24.html
@@ -0,0 +1,409 @@
+<!--$Id: 4.1.24.html,v 1.6 2007/05/17 18:17:18 bostic Exp $-->
+<html>
+<head>
+<title>The Berkeley DB Package: DB 4.1.24 and 4.1.25 Change Log</title>
+<meta name="description" content="Berkeley DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Berkeley DB 4.1.24 and 4.1.25 Change Log</h3>
+
+<h3>Database or Log File On-Disk Format Changes:</h3>
+<ol>
+
+<li>All of the access method database formats changed in the Berkeley
+DB 4.1 release (Btree/Recno: version 8 to version 9, Hash: version 7
+to version 8, and Queue: version 3 to version 4). <b>The format changes
+are entirely backward-compatible, and no database upgrades are
+needed.</b>
+
+</ol>
+<h3>Major New Features:</h3>
+<ol>
+
+<li>Berkeley DB now includes support for database encryption using the AES
+encryption standard. [#1797]
+<li>Berkeley DB now includes support for database page checksums to
+allow detection of database corruption during I/O. [#1797]
+<li>The shared memory buffer pool code base was substantially reworked
+in the 4.1 release to improve concurrent throughput. [#4655]
+
+</ol>
+<h3>General Environment Changes:</h3>
+<ol>
+
+<li>Allow applications to specify transaction handles to the
+DB-&gt;open method call, so database creation can be grouped
+with other Berkeley DB calls in a single transaction. [#4257]
+<li>Add the DB_ENV-&gt;remove and DB_ENV-&gt;rename method calls that support
+transactional protection of database removal and renaming. [#4257]
+<li>Add the DB_ENV-&gt;set_flags flags DB_DIRECT_DB and DB_DIRECT_LOG,
+which disable the system's buffer cache where possible. [#4526]
+<li>Unlock the pthread mutex if pthread_cond_wait() returns an error. [#4872]
+<li>Fix a memory leak caused by running recovery. [#4913]
+<li>Fix a bug in which closing an environment with open database
+handles could result in application crashes. [#4991]
+<li>Fix a bug where DB_CONFIG files were ignored if the database
+environment defaulted to the application's current working directory. [#5265]
+<li>Fix a bug where transaction abort or commit could fail to destroy
+the handle. [#5633]
+<li>Fix a set of bugs where the Berkeley DB API could return DB_RUNRECOVERY
+without panic-ing the database environment itself or calling the application's
+panic-callback function. [#5743]
+<li>Fix a bug in where DB=&gt;rename and DB-&gt;remove method calls
+could leak a transaction and its locks. [#5824]
+<li>Fix a bug where recovery feedback could return values greater than
+100. [#6193]
+<li>Fix a bug where a page allocated by a transaction, eventually aborted
+because of application or system failure, could appear twice in the free
+list, if catastrophic recovery was performed. [#6222]
+<li>Add a new flag, DB_AUTO_COMMIT, that wraps all database modification
+operations inside a transaction, to the DB_ENV-&gt;set_flags method. [#6395]
+<li>Fix a bug where recovery could fail when upgrading between releases.
+[#6372]
+<li>Fix a recovery bug where pages that were repeatedly freed and
+allocated could be lost. [#6479] [#6501]
+<li>Change DB_CONFIG reading to handle non-&lt;newline&gt; terminated
+last line. [#6490]
+
+</ol>
+<h3>General Access Method Changes:</h3>
+<ol>
+
+<li>Allow applications to specify transaction handles to the
+DB-&gt;associate method call, so secondary index creation can be grouped
+with other Berkeley DB calls in a single transaction. [#4185]
+<li>Add a new flag, DB_AUTO_COMMIT, that wraps single database
+operations inside a transaction. This flag is supported by the
+DB-&gt;del, DB-&gt;open, DB-&gt;put, DB-&gt;truncate,DB_ENV-&gt;remove,
+and DB_ENV-&gt;rename methods. [#4257]
+<li>The DB_EXCL DB-&gt;open method flag has been enhanced to
+work on subdatabases. [#4257]
+<li>Fix a bug in which a DB-&gt;put(DB_APPEND) could result in leaked
+memory or a corruption in the returned record number. [#5002]
+<li>Fix a bug in the database salvage code that could
+leave pages pinned in the cache. [#5037]
+<li>Add a flag to the DB-&gt;verify method to output salvaged
+key/data pairs in printable characters. [#5037]
+<li>Fix a bug in which DB-&gt;verify() might continue and report extraneous
+database corruption after a fatal error. [#5131]
+<li>Fix a bug where calling the DB-&gt;stat method before the DB-&gt;open
+method could drop core. [#5190]
+<li>Fix a bug in which a DB-&gt;get, DBcursor-&gt;c_get, or
+DBcursor-&gt;c_pget on a secondary index, in the Concurrent Data Store
+product, could result in a deadlock. [#5192]
+<li>Fix a bug in which DB-&gt;verify() could correctly report errors but
+still return success. [#5297]
+<li>Add support for the DB-&gt;set_cache_priority interface, that allows
+applications to set the underlying cache priority for their database
+files. [#5375]
+<li>Fix a bug where calling DBcursor-&gt;c_pget with a database that is
+not a secondary index would drop core. [#5391]
+<li>Fix a bug where a bug in the DB-&gt;truncate method could cause recovery
+to fail. [#5679]
+<li>Fix a bug where DB_GET_RECNO would fail if specified to a secondary
+index. [#5811]
+<li>Fix a bug where building a secondary index for an existing primary
+database could fail in Concurrent Data Store environments. [#5811]
+<li>Fix a bug where the DB-&gt;rename method could fail, causing a
+problem during recovery. [#5893]
+<li>Fix a bug in which a DB-&gt;get or DB-&gt;pget call on a secondary
+index could fail when done with a handle shared among multiple threads.
+[#5899]
+<li>Fix a bug in which a DB-&gt;put operation on a database with
+off-page duplicates could leak a duplicate cursor, thereby preventing
+transactions being able to commit. [#5936]
+<li>Fix a bug where overflow page reference counts were not properly
+maintained when databases were truncated. [#6168]
+<li>Fix a bug where the bulk get APIs could allocate large amounts of
+heap memory. [#6439] [#6520]
+
+</ol>
+<h3>Btree Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug that prevented loads of sorted data, with duplicates
+at the end of the tree, from creating compact trees. [#4926]
+<li>No longer return a copy of the key if the DB_GET_BOTH or
+DB_GET_BOTH_RANGE flags are specified. [#4470]
+<li>Fix a bug where the fast-search code could hold an unlocked reference
+to a page, which could lead to recovery failure. [#5518]
+<li>Fix a bug where some cursor operations on a database, for which the
+bt_minkey size had been specified, could fail to use the correct overflow
+key/data item size. [#6183]
+<li>Fix a bug where the recovery of an aborted transaction that did a
+reverse Btree split might leave a page in an inconsistent state. [#6393]
+
+</ol>
+<h3>Hash Access Method Changes:</h3>
+<ol>
+
+<li>Fix bugs that could cause hash recovery to drop core. [#4978]
+<li>Use access method flags instead of interface flags to check for
+read-only access to a hash database with an application-specified hash
+function. [#5121]
+<li>Fix a bug where a hash database allocation of a new set of buckets
+may be improperly recovered by catastrophic recovery if the transaction
+is split across log files and the beginning segment of the transaction
+is not included in the set of logs to be recovered. [#5942]
+<li>Fix a bug where aborting particular hash allocations could lead to
+a database on which the verifier would loop infinitely. [#5966]
+<li>Fix a bug where a memory allocation failure could result in a system
+hang. [#5988]
+<li>Remove nelem from the Hash access method statistics (the value was
+incorrect once items had been added or removed from the database). [#6101]
+<li>Fix a bug where a page allocated by an aborted transaction might
+not be placed on the free list by recovery, if the file holding the page
+was created as part of recovery, and a later page was part of a hash
+bucket allocation. [#6184]
+<li>Fix a bug where allocated pages could be improperly recovered on
+systems that require explicit zero-ing of filesystem pages. [#6534]
+
+</ol>
+<h3>Queue Access Method Changes:</h3>
+<ol>
+
+<li>No longer return a copy of the key if the DB_SET_RANGE flag
+is specified. [#4470]
+<li>Fix a bug where DBcursor-&gt;c_get (with DB_MULTIPLE or DB_MULTIPLE_KEY
+specified) could fail on a Queue database if the record numbers had wrapped.
+[#6397]
+
+</ol>
+<h3>Recno Access Method Changes:</h3>
+<ol>
+
+<li>No longer return a copy of the key if the DB_GET_BOTH or
+DB_GET_BOTH_RANGE flags are specified. [#4470]
+<li>Fix a bug where non-transactional locking applications could leak
+locks when modifying Recno databases. [#5766]
+<li>Fix a bug where DBcursor-&gt;c_get with the DB_GET_RECNO flag would
+panic the environment if the cursor was uninitialized. [#5935]
+<li>Fix a bug where deleting pages from a three-level Recno tree could
+cause the database environment to panic. [#6232]
+
+</ol>
+<h3>C++-specific API Changes:</h3>
+<ol>
+
+<li>C++ DbLock::put is replaced by DbEnv::lock_put to match the
+C and Java API change in Release 4.0. [#5170]
+<li>Declared destructors and methods within Db and DbEnv classes to be
+virtual, making subclassing safer. [#5264]
+<li>Fixed a bug where Dbt objects with no flags set would not be filled
+with data by some operations. [#5706]
+<li>Added DbDeadlockException, DbRunRecoveryException, and
+DbLockNotGrantedException classes to C++, and throw them accordingly. [#6134]
+<li>Added C++ methods to support remaining conversions between C++
+classes and C structs where appropriate. In particular, DbTxn/DB_TXN
+conversions and DbMpoolFile/DB_MPOOLFILE were added. [#6278]
+<li>Fix a bug in DbEnv::~DbEnv() that could cause memory corruption if
+a DbEnv was deleted without being closed. [#6342]
+<li>Reordered C++ class declarations to avoid a GCC g++ warning about
+function inlining. [#6406]
+<li>Fix a bug in the DbEnv destructor that could cause memory corruption
+when an environment was destroyed without closing first. [#6342]
+<li>Change DbEnv and Db destructor behavior to close the handle if it
+was not already closed. [#6342]
+
+</ol>
+<h3>Java-specific API Changes:</h3>
+<ol>
+
+<li>Added check for system property "sleepycat.Berkeley DB.libfile" that
+can be used to specify a complete pathname for the JNI shared library.
+This is needed as a workaround on Mac OS X, where libtool cannot
+currently create a library with a .jnilib extension which is what the
+current JDK expects by default. [#5664]
+<li>Fixed handling of JVM out of memory conditions, when some JNI
+methods return NULL. When the JVM runs out of memory, calls should
+consistently fail with OutOfMemoryErrors. [#5995]
+<li>Added Dbt.get_object and Dbt.set_object convenience routines to the
+Java API to make using serialization easier. [#6113]
+<li>Fixed a bug that prevented Java's Db.set_feedback from working,
+fixed document for Java's Db.set_feedback, some callback methods were
+misnamed. [#6137]
+<li>Fix a NullPointerException in Db.finalize() if the database had been
+closed. [#6504]
+<li>Marked DbEnv constructor with "throws DbException". [#6342]
+
+</ol>
+<h3>Tcl-specific API Changes:</h3>
+
+None.
+
+<h3>RPC-specific Client/Server Changes:</h3>
+<ol>
+
+<li>Fix a bug where Db and DbEnv handles were not thread-safe. [#6102]
+
+</ol>
+<h3>Replication Changes:</h3>
+<ol>
+
+<li>A large number of replication bugs were fixed in this release.
+The replication support is now believed to be production quality.
+<li>Add the DB_ENV-&gt;set_rep_limit interface, allowing applications
+to limit the data sent in response to a single DB_ENV-&gt;rep_process_message
+call. [#5999]
+<li>Add the DB_ENV-&gt;set_rep_stat interface, returning information
+from the replication subsystem [#5919]
+
+</ol>
+<h3>XA Resource Manager Changes:</h3>
+<ol>
+
+<li>Added support for multithreaded XA. Environments can now have
+multiple XA transactions active. db_env_xa_attach() can be used to get
+a DB_TXN that corresponds to the XA transaction in the current thread.
+[#5049]
+<li>Added a com.sleepycat.Berkeley DB.xa package that implements J2EE
+support for XA. This includes new DbXAResource, DbXid classes that
+implement the XAResource and Xid interfaces. [#5049]
+<li>Fix a bug where aborting a prepared transaction after recovery may
+fail. [#6383]
+<li>Fix a bug where recovery might fail if a prepared transaction had
+previously extended the size of a file and then was aborted. [#6387]
+<li>Fix a bug where if the commit of a prepared transaction fails the
+transaction would be aborted. [#6389]
+
+</ol>
+<h3>Locking Subsystem Changes:</h3>
+<ol>
+
+<li>Fix a bug where lock counts were incorrect if a lock request
+returned DB_LOCK_NOTGRANTED or an error occurred. [#4923]
+<li>Fix a bug where lock downgrades were counted as releases, so the
+lock release statistics could be wrong. [#5762]
+<li>Fix a bug where the lock and transaction timeout values could not
+be reset by threads of control joining Berkeley DB database
+environments. [#5996]
+<li>Fix a bug where applications using lock and/or transaction timeouts
+could hit a race condition that would lead to a segmentation fault. [#6061]
+
+</ol>
+<h3>Logging Subsystem Changes:</h3>
+<ol>
+
+<li>DB_ENV-&gt;log_register and DB_ENV-&gt;log_unregister have been
+removed from the interface. [#0046]
+<li>Fix a bug where creating a database environment with a nonexistent
+logging directory could drop core. [#5833]
+<li>Add support allowing applications to change the log file size in
+existing database environments. [#4875]
+<li>Fix a bug where a write error on a log record spanning a buffer
+could cause transaction abort to fail and the database environment to
+panic. [#5830]
+
+</ol>
+
+<h3>Memory Pool Subsystem Changes:</h3>
+<ol>
+
+<li>The DB_INCOMPLETE error has been removed, as cache flushing can no
+longer return without completing. [#4655]
+<li>Fix a bug where Berkeley DB might refuse to open a file if the open
+was attempted while another thread was writing a large buffer. [#4885]
+<li>Prefer clean buffers to dirty buffers when selecting a buffer for
+eviction. [#4934]
+<li>Fix a bug where transaction checkpoint might miss flushing a buffer
+to disk. [#5033]
+<li>Fix a bug where Berkeley DB applications could run out of file
+descriptors. [#5535]
+<li>Fix bugs where Berkeley DB could self-deadlock on systems requiring
+mutex resource reclamation after application failure. [#5722] [#6523]
+
+</ol>
+<h3>Transaction Subsystem Changes:</h3>
+<ol>
+
+<li>Go back only one checkpoint, not two, when performing normal
+recovery. [#4284]
+<li>Fix a bug where an abort of a transaction could fail if there was no
+disk space for the log. [#5740]
+<li>Fix a bug where the checkpoint log-sequence-number could reference
+a nonexistent log record. [#5789]
+<li>Fix a bug where subtransactions which allocated pages from the
+filesystem and subsequently aborted could cause other pages allocated
+by sibling transactions to not be freed if the parent transaction then
+aborted. [#5903]
+<li>Fix a bug where transactions doing multiple updates to a queue
+database which spanned a checkpoint could be improperly handled by
+recovery. [#5898]
+
+</ol>
+<h3>Utility Changes:</h3>
+<ol>
+
+<li>Fix a bug where the -p option could not be specified with
+the -R or -r options. [#5037]
+<li>The utilities were modified to correctly size their private caches
+in order to handle databases with large page sizes. [#5055]
+<li>Fix a bug in which utilities run with the -N option would fail to
+ignore the environment's panic flag. [#5082]
+<li>Fix a bug where invalid log records could cause db_printlog to drop
+core. [#5173]
+<li>Add a new option to the db_verify utility to support verification
+of files that include databases having non-standard sorting or
+hash functions. [#5237]
+
+</ol>
+<h3>Configuration, Documentation, Portability and Build Changes:</h3>
+<ol>
+
+<li>Replace test-and-set mutexes on Windows with a new mutex
+implementation that signals an event to wake blocked threads. [#4413]
+<li>Support configuration of POSIX pthread mutexes on systems
+where the pthread mutexes do not support inter-process locks. [#4942]
+<li>Add mutex support for the ARM architecture using the gcc
+compiler. [#5018]
+<li>On Windows NT/2000/XP, switched to atomic seek-and-read/write
+operations to improve performance of concurrent reads [#0654].
+<li>Support cross-compilation using the GNU compiler tool chain. [#4558]
+<li>Fix a bug where libraries were always installed read-only. [#5096]
+<li>Fix a bug where temporary files on VxWorks could fail. [#5160]
+<li>Fix a bug where Berkeley DB did not install correctly if the system
+cp utility did not support the -f option. [#5111]
+<li>Correct the documentation for the Queue access method statistics
+field qs_cur_recno to be the "Next available record number". [#5190]
+<li>Fix a bug where file rename could fail on Windows/9X. [#5223]
+<li>Removed support for Microsoft Visual Studio 5.0 [#5231]
+<li>Switched to using HANDLEs for all I/O operations on Windows to
+overcome a hard limit of 2048 open file descriptors in Microsoft's C
+runtime library. [#5249]
+<li>Fix a bug where Berkeley DB error message routines could drop core
+on the PowerPC and UltraSPARC architectures. [#5331]
+<li>Rename OSTREAMCLASS to __DB_OSTREAMCLASS in db_cxx.h to avoid
+stepping on application name space. [#5402]
+<li>Support Linux on the S/390 architecture. [#5608]
+<li>Work around a bug in Solaris where the pthread_cond_wait call could
+return because a signal was delivered to the application. [#5640]
+<li>Fix build line for loadable libraries to include -module to support
+Mac OS X. [#5664]
+<li>Fix a bug in the PPC mutex support for the Mac OS X system. [#5781]
+<li>Added support for Java on Mac OS X. A workaround on the Java
+command line is currently necessary; it is documented. [#5664]
+<li>Added support for Tcl on Mac OS X. [#5664]
+<li>Update Windows build instructions to cover Visual C++ .NET. [#5684]
+<li>AIX configuration changes for building on AIX 4.3.3 and 5 with both
+standard and Visual Age compilers. [#5779]
+<li>Add a new UNIX configuration argument, --with-mutex=MUTEX, to allow
+applications to select a mutex implementation. [#6040]
+<li>Changed libtool and configure so we can now correctly build and
+install Tcl and Java loadable shared libraries that work on Mac OS X.
+[#6117]
+<li>Fix mutex alignment problems on historic HP-UX releases that could
+make multiprocess applications fail. [#6250]
+<li>Installed static .a archives on Mac OS X need to be built with the
+ranlib -c option so linked applications will not see undefined __db_jump
+errors. [#6215]
+<li>Upgrade pthread and mmap support in the uClibc library to support
+Berkeley DB. [#6268]
+<li>Fixed error in determining include directories during configuration
+for --enable-java. The error can cause compilation errors on certain
+systems with newer versions of gcc. [#6445]
+
+</ol>
+</body>
+</html>
diff --git a/db/docs/ref/changelog/4.1.25.html b/db/docs/ref/changelog/4.1.25.html
new file mode 100644
index 000000000..5df48a0bc
--- /dev/null
+++ b/db/docs/ref/changelog/4.1.25.html
@@ -0,0 +1,16 @@
+<!--"$Id: 4.1.25.html,v 1.3 2007/05/17 18:17:18 bostic Exp $ (Sleepycat) $Date: 2007/05/17 18:17:18 $"-->
+<html>
+<head>
+<title>The Berkeley DB Package: DB 4.1.25 Change Log</title>
+<meta name="description" content="Berkeley DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Berkeley DB 4.1.25 Change Log</h3>
+
+Berkeley DB version 4.1.25 is version 4.1.24 with all public patches
+applied. There were no public interface changes or new features.
+
+</body>
+</html>
diff --git a/db/docs/ref/changelog/4.2.52.html b/db/docs/ref/changelog/4.2.52.html
new file mode 100644
index 000000000..343a4f02e
--- /dev/null
+++ b/db/docs/ref/changelog/4.2.52.html
@@ -0,0 +1,811 @@
+<!--$Id: 4.2.52.html,v 1.76 2007/05/17 18:17:18 bostic Exp $-->
+<html>
+<head>
+<title>The Berkeley DB Package: DB 4.2.52 Change Log</title>
+<meta name="description" content="Berkeley DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Berkeley DB 4.2.52 Change Log</h3>
+
+<h3>Database or Log File On-Disk Format Changes:</h3>
+<ol>
+
+<li>Queue databases that use encryption or data checksum features with
+extent files will need to be dumped and reloaded prior to using with
+release 4.2. For more details please see the "Upgrading Berkeley DB
+Applications, Queue Access Method" in the Berkeley DB Reference Guide
+included in your download package. [#8671]
+<li>The on-disk log format changed.
+
+</ol>
+<h3>New Features:</h3>
+<ol>
+
+
+<li>Add support for a reduced memory footprint build of the Berkeley DB
+library. [#1967]
+<li>Add the DB_MPOOLFILE-&gt;set_flags interface which disallows the
+creation of backing filesystem files for in-memory databases. [#4224]
+<li>Add cache interfaces to limit the number of buffers written
+sequentially to allow applications to bound the time they will
+monopolize the disk. [#4935]
+<li>Support auto-deletion of log files. [#0040] [#6252]
+<li>The new Java DBX API for Berkeley DB allows Java programmers to use
+a familiar Java Collections style API, including Map, while interacting
+with the transactional Berkeley DB core engine. [#6260]
+<li>Support auto-commit with the DB-&gt;get method's consume operations.
+[#6954]
+<li>Add "get" methods to retrieve most settings. [#7061]
+<li>Add Javadoc documentation to the Berkeley DB release. [#7110]
+<li>Add support to Concurrent Data Store to allow duplication of write
+cursors. [#7167]
+<li>Add C++ utility classes for iterating over multiple key and data
+items returned from a cursor when using the DB_MULTIPLE or
+DB_MULTIPLE_KEY flags. [#7351]
+<li>Add CamelCased methods to the Java API. [#7396]
+<li>Add the DB_MPOOLFILE-&gt;set_maxsize interface to enforce a maximum
+database size. [#7582]
+<li>Add a toString() method for all Java *Stat classes (DbBtreeStat,
+DbHashStat, DbMpoolStat, etc.). This method creates a listing of values
+of all of the class member variables. [#7712]
+
+</ol>
+<h3>Database Environment Changes:</h3>
+<ol>
+
+<li>Add cache interfaces to limit the number of buffers written
+sequentially to allow applications to bound the time they will
+monopolize the disk. [#4935]
+<li>Fix a bug which could cause database environment open to hang, in
+database environments supporting cryptography. [#6621]
+<li>Fix a bug where a database environment panic might result from an
+out-of-disk-space error while rolling back a page allocation. [#6694]
+<li>Fix a bug where a database page write failure, in a database
+environment configured for encryption or byte-swapping, could cause page
+corruption. [#6791]
+<li>Fix a bug where DB-&gt;truncate could drop core if there were active
+cursors in the database. [#6846]
+<li>Fix a bug where for databases sharing a physical file required a
+file descriptor per database. [#6981]
+<li>Fix a bug where the panic callback routine was only being called in
+the first thread of control to detect the error when returning
+DB_RUNRECOVERY. [#7019]
+<li>Fix a bug where a transaction which contained a remove of a
+subdatabase and an allocation to another subdatabase in the same file
+might not properly be aborted. [#7356]
+<li>Fix a bug to now disallow DB_TRUNCATE on opens in locking
+environments, since we cannot prevent race conditions. In the absence
+of locking and transactions, DB_TRUNCATE will truncate ANY file for
+which the user has appropriate permissions. [#7345]
+<li>Fix several bugs around concurrent creation of databases. [#7363]
+<li>Change methods in DbEnv that provide access to statistics
+information so that they now return instances of the proper classes.
+[#7395]
+<li>Replace the DB-&gt;set_cache_priority API with the
+DB_MPOOLFILE-&gt;set_priority API. [#7545]
+<li>Fix a bug where a failure during a creation of a subdatabase could
+then fail in the dbremove cleanup, causing a crash. [#7579]
+<li>Allow creating into a file that was renamed within the same
+transaction. [#7581]
+<li>Fix a bug where DB_ENV-&gt;txn_stat could drop core if there are
+more-than-expected active transactions. [#7638]
+<li>Change Berkeley DB to ignore user-specified byte orders when
+creating a database in an already existing physical file. [#7640]
+<li>Fix a bug where a database rename that is aborted would leak some
+memory. [#7789]
+<li>Fix a bug where files could not be renamed or removed if they were
+not writable. [#7819]
+<li>Fix a bug where an error during a database open may leak memory in
+the mpool region. [#7834]
+<li>Fix a bug where the DB_ENV-&gt;trickle_sync method could flush all of
+the dirty buffers in the cache rather than a subset. [#7863]
+<li>Fix a bug where an attempt to rename or remove an open file in the
+same transaction could succeed, even though this is not allowed and will
+not work on Windows. [#7917]
+<li>Fix a bug where if a recovery interval in the log contained only
+database opens then a recovery might report "Improper file close".
+[#7886]
+<li>Add a flag, DB_INIT_REP to DB_ENV-&gt;open to initialize Replication
+subsystem. [#8299]
+<li>Fix a bug where file remove and rename operations would not block
+each other if they were in different transactions. [#8340]
+<li>Change Berkeley DB to not propagate error returns from the
+application's rep_send function out of the Berkeley DB API.
+[#8496][#8522]
+<li>Remove restriction that DB_TRUNCATE is not allowed on files with
+subdatabases. This restriction was introduced in 4.1.25. [#8852]
+
+</ol>
+<h3>Concurrent Data Store Changes:</h3>
+<ol>
+
+<li>Fix a bug where opens with other threads/processes actively acquiring
+locks on database handles could deadlock. [#6286]
+<li>Add support to Concurrent Data Store to allow duplication of write
+cursors. [#7167]
+
+</ol>
+<h3>General Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug where the truncate of a database with associated secondary
+databases did not truncate the secondaries. [#6585]
+<li>Fix a bug in which an out-of-disk condition during a transactional
+database create, remove, or rename could cause a crash. [#6695]
+<li>Fix a bug where system errors unknown to the C library could cause
+Berkeley DB utilities to drop core on Solaris. [#6728]
+<li>Fix a bug where Berkeley DB could overwrite incorrectly formatted
+files rather than returning an error to the application during open.
+[#6769]
+<li>Fix a bug DB handle reference counts were incorrect, leading to
+spurious warning about open DB handles. [#6818]
+<li>Fix a bug where cursor adjustments across multiple DB handles could
+fail. [#6820]
+<li>Fix a bug where a failure during open could result in a hang.
+[#6902]
+<li>Fix a bug where repeated failures during certain stages of opens
+could cause error messages to appear during recovery. [#7008]
+<li>Fix a bug in secondary indices with multiple threads calling
+DBC-&gtput that resulted in DB_NOTFOUND being returned. [#7124]
+<li>Fix a bug where database verification might reference memory which
+was previously freed after reporting an error. [#7137]
+<li>Rename the DB_CHKSUM_SHA1 to DB_CHKSUM as Berkeley DB only uses SHA1
+for encrypted pages, not for clear text pages. [#7095]
+<li>Fix a bug where DB-&gt;rename could fail silently if the underlying
+system rename call failed. [#7322]
+<li>Fix a bug where Berkeley DB failed to open a file with FCNTL locking
+and 0-length files. [#7345]
+<li>Prohibit the use of the DB_RMW flag on get operations for DB handles
+opened in transactional mode. [#7407]
+<li>Standardize when Berkeley DB will return DB_LOCK_NOTGRANTED, or
+throw DbLockNotGrantedException, versus returning DB_LOCK_DEADLOCK or
+throwing DbDeadlockException. Fix bugs in the C++ and Java APIs where
+DbException was thrown, encapsulating DB_LOCK_NOTGRANTED, rather than
+throwing DbLockNotGrantedException. [#7549]
+<li>Fix a bug where Berkeley DB could hang on a race condition if a
+checkpoint was running at the same time another thread was closing a
+database for the last time. [#7604]
+<li>Fix several bugs that made multiple filesystem level operations
+inside a single transaction break. [#7728]
+<li>Fix a memory leak in the abort path of a sub-database create.
+[#7790]
+<li>Fix a race condition with file close that could cause NULL pointer
+deference under load. [#8235]
+<li>Fix a bug to correct the calculation of the amount of space needed
+to return off page duplicates using the DB_MULTIPLE interface. [#8437]
+<li>Fix a bug where the duplicate data item count could be incorrect if
+a cursor was used to first overwrite and then delete a duplicate which
+was part of a set of duplicates large enough to have been stored outside
+the standard access method pages. [#8445]
+<li>Fix a bug where The DB_MULTIPLE interface might fail to return the
+proper duplicates in some edge cases. [#8485]
+<li>Fix a bug where DB-&gt;get(...DB_MULTIPLE) would not return a
+reasonable estimate of the buffer size required to return a set of
+duplicates. [#8513]
+<li>Fix a bug where the DbCursor.count method could return the wrong
+count in the case of small (on-page) duplicate sets, where a still-open
+cursor has been used to delete one of the duplicate data items. [#8851]
+<li>Fix a bug where a non-transactional cursor using DB_MULTIPLE_KEY
+could briefly be left pointing at an unlocked page. This could lead to
+a race condition with another thread deleting records resulting in the
+wrong record being deleted. [#8926]
+<li>Fix a bug where a key/data item could be lost if a cursor is used
+to do a delete, and then immediately used to do an insert which causes
+a set of duplicates to be shifted to an off-page Btree. [#9085]
+
+</ol>
+<h3>Btree Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug where a deleted item could be left on a database page
+causing database verification to fail. [#6059]
+<li>Fix a bug where a page may be left pinned in the cache if a deadlock
+occurs during a DB-&gt;put operation. [#6875]
+<li>Fix a bug where a deleted record may not be removed from a Btree
+page if the page is split while another cursor is trying to delete a
+record on the page. [#6059]
+<li>Fix a bug where records marked for deletion were incorrectly counted
+when retrieving in a Btree by record number. [#7133]
+<li>Fix a bug where a page and lock were left pinned if an application
+requested a record number past the end of the file when retrieving in a
+Btree by record number. [#7133]
+<li>Fix a bug where deleted keys were included in the key count for the
+DB-&gtstat call. [#7133]
+<li>Fix a bug where specifying MULTIPLE_KEY and NEXT_DUP to the bulk get
+interfaces might return the wrong data if all the duplicates could not
+fit in a single buffer. [#7192]
+<li>Remove assertions that triggered failures that were correct
+executions. [#8032]
+<li>Fix a bug where duplicate data items were moved onto overflow pages
+before it was necessary. [#8082]
+<li>Fix a bug where the DB-&gt;verify method might incorrectly complain
+about a tree's overflow page reference count. [#8061]
+<li>Fix a bug that could cause DB_MULTIPLE on a Btree database to return
+an incorrect data field at the end of buffer. [#8442]
+<li>Fix a bug where DBC-&gt;c_count was returning an incorrect count if the
+cursor was positioned on an item that had just been deleted. [#8851]
+<li>Remove the test for bt_maxkey in the Btree put code. If it is set
+to 1 it can cause an infinite loop. [#8904]
+
+</ol>
+<h3>Hash Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug where Hash databases could be corrupted on filesystems
+that do not zero-fill implicitly created blocks. [#6588]
+<li>Fix a bug where creating a Hash database with an initial size larger
+than 4GB would fail. [#6805]
+<li>Fix a bug where a page in an unused hash bucket might not be empty
+if there was a disk error while writing the log record for the bucket
+split. [#7035]
+<li>Fix a bug where two threads opening a hash database at the same time
+might deadlock. [#7159]
+<li>Fix a bug where a hash cursor was not updated properly when doing a
+put with DB_NODUPDATA specified. [#7361]
+<li>Fix a bug that could cause DB_MULTIPLE_KEY on Hash databases to
+return improper results when moving from a key with duplicates to a key
+without duplicates. [#8442]
+
+</ol>
+<h3>Queue Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug where opening an in-memory Queue database with extent size
+specified will dump core. [#6795]
+<li>Support auto-commit with the DB-&gt;get method's consume operations.
+[#6954]
+<li>Fix a bug where calling the sync method on a queue database with
+extents may hang if there are active consumers. [#7022]
+<li>Fix a bug where a get(...MULTIPLE...) might lead to an infinite loop
+or return the wrong record number(s) if there was a deleted record at
+the beginning of a page or the buffer was filled exactly at the end of
+a page. [#7064]
+<li>Fix a bug where a database environment checkpoint might hang if a
+thread was blocked waiting for a record while doing a DB_CONSUME_WAIT
+on a Queue database. [#7086]
+<li>Fix a bug where queue extent files would not be removed if a queue
+with extents was removed and its record numbers wrapped around the
+maximum record number. [#7191]
+<li>Fix a bug where a DB-&gt;remove of an extent based Queue with a small
+number of pages per extent would generate a segmentation fault. [#7249]
+<li>Fix a bug where verify and salvage on queues with extent files did
+not consider the extent files. [#7294]
+<li>Fix a bug when transaction timeouts are set in the environment they
+would get applied to some non-transactional operations and could cause
+a failure during the abort of a queue operation. [#7641]
+<li>Fix a bug when the record numbers in a queue database wrap around
+at 232, a cursor positioned on a record near the head of the queue that
+is then deleted, may return DB_NOTFOUND when get is specified with
+DB_NEXT rather than the next non-deleted record. [#7979]
+<li>Fix a bug where a record lock will not be removed when the first
+record in the queue is deleted without a transaction (not using
+DB_CONSUME). [#8434]
+<li>Fix a bug where byte swapping was not handled properly in queue
+extent files. [#8358]
+<li>Fix a bug where Queue extent file pages were not properly typed,
+causing the extent files not to use encryption or checksums, even if
+those options had been specified. This fix requires a database upgrade
+for any affected Queue databases. [#8671]
+<li>Fix a bug where truncating a queue with extents may fail to remove
+the last extent file. [#8716]
+<li>Fix a bug where a rename or remove of a QUEUE database with extents
+might leave empty extent files behind. [#8729]
+<li>Fix a bug where on Windows operating systems a "Permission denied"
+error may be raised if a Queue extent is reopened while it is in the
+process of being unlinked. [#8710]
+
+</ol>
+<h3>Recno Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug where the DB-&gt;truncate method may return the wrong record
+count if there are deleted records in the database. [#6788]
+<li>Fix a bug where internal nodes of Recno trees could get wrong record
+count if a log write failed and the log was later applied during
+recovery. [#6841]
+<li>Fix a bug where a cursor next operation could infinitely loop after
+deleting a record, when the deleted record was immediately followed by
+implicitly created records. [#8133]
+
+</ol>
+<h3>C++-specific API Changes:</h3>
+<ol>
+
+<li>Document the DB-&gt;del method can return DB_KEYEMPTY for Queue or
+Recno databases. The C++ and Java APIs now return this value rather than
+throwing an exception. [#7030]
+<li>Add "get" methods to retrieve most settings. [#7061]
+<li>Fix a bug where applications calling DB-&gt;verify from the C++ or Java
+APIs could drop core. Change the DB-&gt;verify method API to act as a DB
+handle destructor. [#7418]
+<li>Add utility classes for iterating over multiple key and data items
+returned from a cursor when using the DB_MULTIPLE or DB_MULTIPLE_KEY
+flags. These classes, DbMultipleDataIterator, DbMultipleKeyDataIterator,
+and DbMultipleRecnoDataIterator, mirror the DB Java API and are provided
+as replacements for the C macros, DB_MULTIPLE_INIT, DB_MULTIPLE_NEXT,
+DB_MULTIPLE_KEY_NEXT, and DB_MULTIPLE. [#7351]
+<li>Fix a bug DbException was thrown, encapsulating DB_LOCK_NOTGRANTED,
+rather than throwing DbLockNotGrantedException. [#7549]
+<li>Add the DbEnv handle to exceptions thrown by the C++ and Java APIs,
+where possible. [#7303]
+<li>Fix a bug in the C++ DbEnv::set_rep_transport signature so that the
+envid parameter is signed. [#8303]
+<li>Make the fields of DB_LSN public in the DbLsn class. [#8422]
+
+</ol>
+<h3>Java-specific API Changes:</h3>
+<ol>
+
+<li>New Java API (com.sleepycat.dbx.*) for the transactional storage of
+data using the Java Collections design pattern. [#6569]
+<li>Fix a bug in the Java Dbt.get_recno_key_data() method when used
+inside callbacks. [#6668]
+<li>Fix Java DbMpoolStat class to match the DB_MPOOL_STAT struct.
+[#6821]
+<li>Fix a bug where Dbc.put expected key data even if the key was
+unused. [#6932]
+<li>Fix a bug in the Java API secondary_key_create callback where memory
+was freed incorrectly, causing JVM crashes. [#6970]
+<li>Re-implement the Java API to improve performance and maintenance.
+Fix several inconsistencies in the Java API:
+<ol type="a">
+<li>Db.put(), Dbc.get() and Dbc.put() preserve key size
+<li>Dbc.get() returns DB_KEYEMPTY rather than throwing an exception
+<li>The return type of Db.close() is now void. [#7002]
+</ol>
+<li>Document the DB-&gt;del method can return DB_KEYEMPTY for Queue or
+Recno databases. The C++ and Java APIs now return this value rather than
+throwing an exception. [#7030]
+<li>Add "get" methods to retrieve most settings. [#7061]
+<li>Add Javadoc documentation to the Berkeley DB release. [#7110]
+<li>Fix a bug that caused potential memory corruption when using the
+Java API and specifying the DB_DBT_REALLOC flag. [#7215]
+<li>Add the DbEnv handle to exceptions thrown by the C++ and Java APIs,
+where possible. [#7303]
+<li>Map existing c-style API to a more Java camel case API with Java
+style naming. Retained deprecated older API for the 4.2 release for
+backwards support in all cases except callback interfaces. Also
+overloaded methods such as get/pget() into multiple different get()
+calls to clean up call structure. [#7378]
+<li>Add CamelCased methods to the Java API. [#7396]
+<li>Fix a bug where applications calling DB-&gt;verify from the C++ or Java
+APIs could drop core. Change the DB-&gt;verify method API to act as a DB
+handle destructor. [#7418]
+<li>Fix a bug DbException was thrown, encapsulating DB_LOCK_NOTGRANTED,
+rather than throwing DbLockNotGrantedException. [#7549]
+<li>Add a toString() method for all Java *Stat classes (DbBtreeStat,
+DbHashStat, DbMpoolStat, etc.). This method creates a listing of values
+of all of the class member variables. [#7712]
+<li>Remove Db.fd() method from Java API as it has no value to a Java
+programmer. [#7716]
+<li>Add an accessible timeout field in the DbLockRequest class, needed
+for the DB_LOCK_GET_TIMEOUT operation of DbEnv.lockVector. [#8043]
+<li>Fix replication method calls from Java API. [#8467]
+<li>Fix a bug where exception returns were inconsistent. [#8622]
+<li>Change the Java API so that it throws an IllegalArgumentException
+rather than a DbException with the platform-specific EINVAL. [#8978]
+
+</ol>
+<h3>Tcl-specific API Changes:</h3>
+<ol>
+
+<li>Add "get" methods to retrieve most settings. [#7061]
+<li>Brought Tcl's $env set_flags command up to date with available flags.
+[#7385]
+<li>Update Berkeley DB to compile cleanly against the Tcl/Tk 8.4 release.
+[#7612]
+<li>Made txn_checkpoint publicly available. [#8594]
+
+</ol>
+<h3>RPC-specific Client/Server Changes:</h3>
+<ol>
+
+<li>Fix two bugs in the RPC server where incorrect handling of illegal
+environment home directories caused server crashes. [#7075]
+<li>Fix a bug where the DB_ENV-&gt;close method would fail in RPC clients
+if the DB_ENV-&gt;open method was never called. [#8200]
+
+</ol>
+<h3>Replication Changes:</h3>
+<ol>
+
+<li>Write prepare records synchronously on replication clients so that
+prepare operations are always honored in the case of failure. [#6416]
+<li>Change replication elections so that the client with the biggest LSN
+wins, and priority is a secondary factor. [#6568]
+<li>Fix a bug where replicas could not remove log files because the
+checkpoint lsn was not being updated properly. [#6620]
+<li>Force prepare records out to disk regardless of the setting of the
+DB_TXN_NOSYNC flag. [#6614]
+<li>Add a new flag, DB_REP_NOBUFFER, which gets passed to the rep_send
+function specified in DBENV-&gt;rep_set_transport, to indicate that the
+message should not be buffered on the master, but should be immediately
+transmitted to the client(s). [#6680]
+<li>Fix a replication election bug where Berkeley DB could fail to elect
+a master even if a master already existed. [#6702]
+<li>Allow environment wide setting of DB_AUTO_COMMIT on replication
+clients. [#6732]
+<li>Fix a replication bug where a client coming up in the midst of an
+election might not participate in the election. [#6826]
+<li>Add log_flushes when sites become replication masters. If log_flush
+fails, panic the environment since the clients already have the commits.
+[#6873]
+<li>Fix a replication bug where a brand new client syncing up could
+generate an error on the master. [#6927]
+<li>Fix a bug where clients synchronize with the master when they come
+up with the same master after a client-side disconnect or failures.
+[#6986]
+<li>Fix several bugs in replication elections turned up by test rep005.
+[#6990]
+<li>Fix a bug where aborted hash group allocations were not properly
+applied on replicas. [#7039]
+<li>Fix race conditions between running client recovery and other
+threads calling replication and other Berkeley DB functions. [#7402]
+[#8035]
+<li>Use shared memory region for all replication flags. [#7573]
+<li>Fix a bug where log archive on clients could prematurely remove log
+files. [#7659]
+<li>Return an error if a non-replication dbenv handle attempts to write
+log records to a replication environment. [#7752]
+<li>Fix a race condition when clients applied log records, where we
+would store a log record locally and then never notice we have it, and
+need to re-request it from the master, causing the client to get far
+behind the master. [#7765]
+<li>Fix inconsistencies between the documentation and actual code
+regarding when replication methods can be called. [#7775]
+<li>Fix a bug where Berkeley DB would wait forever if a NEWMASTER
+message got dropped. [#7897]
+<li>Fix a bug where the master environment ID did not get set when you
+called DBENV-&gt;rep_start as a master. [#7899]
+<li>Fix a bug where operations on a queue database will not get
+replicated if the transactions that include the operations are committed
+out of order with the operations. [#7904]
+<li>Fix bugs in log_c_get where an invalid LSN could access invalid
+addresses. Fix bug in elections where a client upgrading to master
+didn't write a txn_recycle record. [#7964]
+<li>Fix a bug where REP_VERIFY_FAIL during client recovery wasn't being
+handled. [#8040]
+<li>Return an error if the application calls rep_process_message before
+calling rep_start when starting. [#8057]
+<li>Fix a bug to ensure that replication generation numbers always
+increase and are never reset to 1. [#8136]
+<li>Modify log message retransmission protocol to efficiently handle the
+case where a large number of contiguous messages were dropped at once.
+[#8182] [#8169] [#8188]
+<li>Fix a bug where using the wrong mutex in replication which under
+certain conditions could cause replication to hang. Also fix a bug where
+incorrectly setting the checkpoint LSN could cause recovery to take a
+very long time. [#8183]
+<li>Fix bug where a message could get sent to an invalid master. [#8184]
+<li>Fix a bug where a local variable in log_archive was not initialized.
+[#8230]
+<li>Fix a bug where elections could hang. [#8254]
+<li>Fix a bug to ensure that we can always remove/re-create the temporary
+replication database after a failure. [#8266]
+<li>Add a flag, DB_INIT_REP to DB_ENV-&gt;open to initialize Replication
+subsystem. [#8299]
+<li>Add new ret_lsnp argument to rep_process_message so that LSNs can
+be returned to clients on permanent records. Add new lsnp arg to the
+send callback function so that the master can know the LSNs of records
+as well. [#8308]
+<li>Narrow the window where we block due to client recovery. [#8316]
+<li>Fix a bug in log_c_incursor where we would not detect that a record
+was already in the buffer. [#8330]
+<li>Fix a bug that would allow elections to be managed incorrectly.
+[#8360]
+<li>Fix a bug where replicas were not maintaining meta-&gtlast_pgno
+correctly. [#8378]
+<li>Fix a bug in truncating log after recovery to a timestamp or
+replication-based recovery. [#8387]
+<li>Fix a bug where a checkpoint record written as the first record in
+a log could cause recovery to fail. [#8391]
+<li>Fix a bug where a client would return DB_NOTFOUND instead of
+DB_REP_OUTDATED when it was unable to synchronize with the master
+because it ran out of log records. [#8399]
+<li>Fix a bug where log file changes were not handled properly in
+replication. [#8400] [#8420]
+<li>Fix a bug where checking for invalid log header data could fail
+incorrectly. [#8460]
+<li>Fix a bug where DB_REP_PERMANENT was not being set when log records
+were re-transmitted. [#8473]
+<li>Modify elections so that all participants elect in the same election
+generation. [#8590]
+<li>Fix bug where rep_apply was masking an error return. Also return
+DB_RUNRECOVERY if the replication client cannot commit or checkpoint.
+[#8636]
+<li>Fix a bug to update the last_pgno on the meta page on free as well
+as alloc. [#8637]
+<li>Fix a bug to roll back the LSN on a queue database metapage if we're
+going to truncate the log. Fix a bug in MASTER_CHECK so we don't apply
+log messages from an unknown master. Fix a bug to perform a sync on
+rep_close. [#8601]
+<li>Fix a bug so that we reset the LSN when putting pages on the free
+list. [#8685]
+<li>Fix a bug where replication was not properly calling db_shalloc.
+[#8811]
+<li>Fix a bug where replication flags were getting set in multiple steps
+which could cause an Assertion Failure in log_compare. [#8889]
+<li>Fix a bug where open database handles could cause problems on
+clients. [#8936]
+<li>Fix a bug where in dbreg code where an fnp with an invalid fileid
+could be found on the lp-&gt;fq list. [#8963]
+<li>Fix a bug where a reader on a replication client could see partial
+updates when replicating databases with off page duplicates or overflow
+records. [#9041]
+<li>Fix a bug that could result in a self deadlock in dbreg under
+replication. [#9138]
+<li>Fix a memory leak in replication. [#9255]
+
+</ol>
+<h3>XA Resource Manager Changes:</h3>
+<ol>
+
+<li>Fix a bug where a failed write during XA transaction prepare could
+result in a checksum error in the log. [#6760]
+<li>Fix a bug where we were not properly handling DB_AUTO_COMMIT in XA
+transactions and where we were not honoring the XA transaction during
+an XA-protected open. [#6851]
+<li>Add infrastructure support for multithreaded XA. [#6865]
+<li>Display XA status and ID as part of db_stat -t output. [#6413]
+
+</ol>
+<h3>Locking Subsystem Changes:</h3>
+<ol>
+
+<li>Fix a bug where locks were not cleared in an off-page duplicate
+cursor. [#6950]
+<li>Fix a bug where a deadlock may not be detected if dirty reads are
+enabled and the deadlock involves an aborting transaction. [#7143]
+<li>Fix a bug where a transaction doing updates while using dirty read
+locking might fail while aborting the transaction with a deadlock.
+Several other locking issues were also fixed:
+<ol type="a">
+<li>failure to remove dirty read locks prior to aborting a transaction,
+<li>calling upgrade on other than WWRITE locks,
+<li>failure to remove expired locks from the locker queue,
+<li>clearing the lock timeout before looking at it. [#7267]
+</ol>
+<li>Fix a bug when dirty reads are enabled a writer might be blocked on
+a lock that it had previously obtained. Dirty readers would also wait
+behind regular readers when they could have safely read a page. [#7502]
+<li>Fix a bug where a DB-&gtput using CDB gets a lock timeout then the
+error "Closing already closed cursor". [#7597]
+<li>Modify the maximum test-and-set mutex sleep for logical page locks
+at 10ms, everything else at 25ms. [#7675]
+<li>Fix a bug where the DB_LOCK_TIMEOUT mode of env-&gt;lock_vec could
+hang. [#7682]
+<li>Fix a bug where running with only transaction timeouts for deadlock
+detection might deadlock without being detected if more than one
+transaction times out while trying to avoid searching a Btree on
+repeated inserts. [#7787]
+<li>Fix a bug that could cause detection to not run when there was a
+lock that should be timed out. [#8588]
+<li>Fix a bug with using dirty reads with subtransactions. If a writing
+subtransaction aborts and then is blocked, the deadlock may not be
+detected. [#9193]
+<li>Fix a bug where handle locks were not being correctly updated when
+releasing read locks during transaction prepare. [#9275]
+
+</ol>
+<h3>Logging Subsystem Changes:</h3>
+<ol>
+
+<li>Fix a bug where if a write error occurred while committing a
+transaction with DB_WRITE_NOSYNC enabled the transaction may appear to
+be committed in the log while it was really aborted. [#7034]
+<li>Fix a bug where multiprocess applications could violate write-ahead
+logging requirements if one process wrote a log record but didn't flush
+it, the current log file then changed, and another process wrote a
+database page before the log record was written to disk. [#6999]
+<li>Fix a bug where fatal recovery could fail with a "Transaction
+already committed" error if recovery had been run and there are no
+active transactions in the part of the log following the last
+checkpoint. [#7234]
+<li>Fix a bug where recovery would fail to put freed pages onto the free
+list, when both committed and aborted subtransactions that allocated new
+pages were present. This only affected prepared transactions. [#7403]
+<li>Fix a bug where open errors during recovery get propagated unless
+they are reporting missing files, which might correctly have been
+removed. [#7578]
+<li>Fix a bug so that we now validate a log file before writing to it.
+[#7580]
+<li>Fix a bug where Berkeley DB could display the unnecessary error
+message "DB_LOGC-&gt;get: short read" during recovery. [#7700]
+<li>Fix a bug where recovery may fail if it tries to reallocate a page
+to a file that is out of space. [#7780]
+<li>Change Berkeley DB so that operations on databases opened in a
+non-transactional mode do not write records into the database logs.
+[#7843]
+<li>Fix a bug where Berkeley DB could timeout waiting for locks (on
+Queue databases) during recovery. [#7927]
+<li>Fix a bug in truncating log after recovery to a timestamp or
+replication-based recovery. [#8387]
+<li>Fix a bug where recovery can be slow if the log contains many opens
+of files which contain multiple databases. [#8423]
+<li>Fix a bug where a file id could be used before its open was logged.
+[#8496]
+<li>Fix a bug where recovery would partially undo a database create if
+the transaction which created it spanned log files and not all of the
+log files were present during recovery. [#9039]
+
+</ol>
+<h3>Memory Pool Subsystem Changes:</h3>
+<ol>
+
+<li>Fix a bug where checksummed files could not be read on different
+endian systems. [#6429]
+<li>Fix a bug where read-only databases were not mapped into memory but
+were instead read through the Berkeley DB buffer cache. [#6671]
+<li>Fix a bug where Berkeley DB could loop infinitely if the cache was
+sized so small that all of its pages were simultaneously pinned by the
+application. [#6681]
+<li>Fix a bug where DbEnv.sync could fail to write a page if another
+thread unpinned the page at the same time and there were no other pages
+in that hash bucket. [#6793]
+<li>Fix a bug where threads of control may hang if multiple threads of
+control are opening and closing a database at the same time. [#6953]
+<li>Fix a bug where a database created without checksums but later
+opened with checksums would result in a checksum error. [#6959]
+<li>Fix a bug where a multiprocess application suite could see
+incorrect data if one process opened a non-checksummed database
+correctly and another process subsequently opened the same database,
+specifying checksums. [#6959]
+<li>Change to avoid database open and flush when handles are discarded,
+if the handle was never used to write anything. [#7232]
+<li>Fix a bug where applications dirtying the entire cache in a single
+database operation would see large performance degradation. [#7273]
+<li>Fix a bug where contention in the buffer pool could cause the buffer
+allocation algorithm to unnecessarily sleep waiting for buffers to be
+freed. [#7572]
+
+</ol>
+<h3>Transaction Subsystem Changes:</h3>
+<ol>
+
+<li>Fix a bug where disk write errors in encrypted database
+environments, causing transaction abort, could corrupt the log. [#6768]
+<li>Fix a bug where catastrophic recovery may fail on a log which has a
+prepared transaction which aborted the allocation of a new page and was
+rolled forward previously by another recovery session. [#6790]
+<li>Fix a bug where a transaction that contains a database truncate
+followed by page allocations, may not properly undo the truncate if
+aborted. [#6862]
+<li>Fix a bug which causes Berkeley DB to checkpoint quiescent database
+environments. [#6933]
+<li>Fix a bug where if a transaction prepare fails while writing the
+prepare log record, and it contains a subtransaction which did an
+allocation later, recovery of the database may fail with a log sequence
+error. [#6874]
+<li>Do not abort prepared but not yet completed transactions when
+closing an environment. [#6993]
+<li>Fix a bug where operations on the source of a rename in the same
+transaction would fail. [#7537]
+<li>Fix a bug where a parent transaction which aborts when it tries to
+write its commit record could fail with a log sequence error, if the
+parent transaction has an aborted child transaction which allocated a
+new page from the operating system. [#7251]
+<li>Fix a bug where Berkeley DB could try to abort a partial transaction
+because it contained a partial subtransaction. [#7922]
+<li>Fix a bug where Berkeley DB could drop core when transactions were
+configured without locking support. [#9255]
+
+</ol>
+<h3>Utility Changes:</h3>
+<ol>
+
+<li>Fix a bug where db_load could core dump or corrupt record numbers
+by walking off the end of a string. [#6985]
+<li>Fix a bug where db_load could run out of locks when loading large
+numbers of records. [#7173]
+<li>Fix a bug where db_dump could drop core when salvaging unaligned
+entries on a Btree page. [#7247]
+<li>Fix a bug where hash statistics did not include overflow items in
+the count of database data elements. [#7473]
+<li>Fix a bug where an corruption in an overflow page list could cause
+DB-&gt;verify to infinitely loop. [#7663]
+<li>Fix a bug where verify could display extraneous error messages when
+verifying a Btree with corrupt or missing pages. [#7750]
+<li>Fix a bug that could cause the db_stat utility to display values
+larger than 100 for various percentages. [#7779]
+<li>Fix a memory overflow bug in db_load. [#8124]
+<li>Fix a minor leak when verifying queue databases. [#8620]
+
+</ol>
+<h3>Configuration, Documentation, Portability and Build Changes:</h3>
+<ol>
+
+<li>Add support for a reduced memory footprint build of the Berkeley DB
+library. [#1967]
+<li>Change DB_SYSTEM_MEM on Windows to fail immediately when opening an
+environment whose regions were deleted on last close. [#4882]
+<li>Update queue.h to current FreeBSD version. [#5494]
+<li>Support for and certification under Tornado 2.2/VxWorks 5.5. [#5522]
+<li>Add support for IBM OS/390 using the IBM C compiler. [#6486]
+<li>Specify -pthread as a compile flag for Tru64 systems, not just as a
+linker flag. [#6637]
+<li>Remove automatic aggregate initialization for non-ANSI compilers.
+[#6664]
+<li>Fix a link error ("GetLongPathNameA could not be located in the
+dynamic link library KERNEL32.dll") that prevented Berkeley DB from
+loading on Windows NT. [#6665]
+<li>Remove use of U suffix in crypto build to denote unsigned integers
+for non-ANSI compilers. [#6663]
+<li>Fix Java API documentation problems where API return values were int
+and should have been void, or vice versa. [#6675]
+<li>Add an include of &lt;sys/fcntl.h&gt; for old Solaris systems with the
+directio call. [#6707]
+<li>Fix Java API documentation problem where the Db.associate call was
+missing a DbTxn handle. [#6714]
+<li>Clean up source based on gcc's -Wmissing-prototypes option. [#6759]
+<li>Ignore pread/pwrite interfaces on NCR's System V R 4.3 system.
+[#6766]
+<li>Fix an interface compatibility with Sendmail and Postfix releases.
+[#6769]
+<li>Fix warnings when the Tcl API was built without TEST_CONFIG defined.
+[#6789]
+<li>Change Win32 mutexes to use the shared code for all mutexes to fix
+handle leak. [#6822] [#6853]
+<li>Fix the Windows/Tcl API export list for Berkeley DB XML. [#6931]
+<li>Add the --enable-mingw configuration option to build Berkeley DB for
+MinGW. [#6973]
+<li>Add a CPU pause to the mutex spinlock code to improve performance
+on newer Pentium CPUs. [#6975]
+<li>Upgrade read-only file descriptors to read-write during checkpoint,
+it's an error to call FlushFileBuffers on a read-only Windows file
+handle. [#7051]
+<li>Fix configure so that Java applications on HP/UX can access RPC
+environments. [#7066]
+<li>Update Berkeley DB to use libtool 1.5 to allow building of shared
+libraries on various platforms. This should not be visible except for
+changes to the Makefile and internal build procedures. [#7080]
+<li>Fix a bug where the configure script displayed incorrect default
+installation directory information. [#7081]
+<li>Fix a signed/unsigned warning with some Windows compilers. [#7100]
+<li>Fix macro redefinition conflicts between queue.h and
+Vc7\PlatformSDK\Include\WinNT.h when building with Visual Studio.NET
+7.0. [#7103]
+<li>Add a loop to retry system calls that return EBUSY. Also limit
+retries on EINTR to 100 times. [#7118]
+<li>Fix a bug in our use of GetDiskFreeSpace that caused access
+violations on some versions of Windows with DB_DIRECT_DB. [#7122]
+<li>Fix a bug where regions in system memory on Windows were incorrectly
+reinitialized because the magic number was overwritten. [#7127]
+<li>Change version provided to Tcl's package system to reflect Berkeley
+DB's major and minor number. [#7174]
+<li>Support for the Berkeley DB Embedix port has been removed. [#7209]
+<li>Merge all public C++ headers into db_cxx.h, which fixes name clashes
+between Berkeley DB headers and system headers (specifically mutex.h).
+[#7221]
+<li>Fix a bug where the configured Makefile could try and build objects
+for which there were no existing rules. [#7227]
+<li>Port the ex_repquote example to Windows. [#7328]
+<li>Fix a race in the ARM/gcc mutex code which could cause almost
+anything bad you can imagine. [#7468]
+<li>Fix a bug where shared region removal could hang. [#7613]
+<li>Fix a bug so that when using Java in Debug mode on Windows,
+automatically pick the Debug DLL. [#7722]
+<li>Fix configure --disable-shared so that it now creates a Makefile
+that installs static libraries that look the same as a regular shared
+build. This flag will create a libdb&lt;major&gt;.&lt;minor&gt;.a and
+make a libdb.a that is a symlink to it. [#7755]
+<li>Add support for OS/390 2.10 and all versions of z/OS. [#7972]
+<li>Support Java builds on Windows with spaces in the project path.
+[#8141]
+<li>Fix a bug where Berkeley DB mutex locking code for OS X was not
+multiprocessor safe. [#8255]
+<li>Add an error to DB_ENV-&gt;set_flags if the OS does not support Direct
+I/O. [#8596]
+<li>Enable verbose error logging from the test suite on Windows. [#8634]
+<li>Fix a bug with DLL linking on Cygwin under Windows. [#8628]
+<li>Add support for JDK on HP/UX. [#8813]
+<li>Fix a bug where pathnames longer than 2KB could cause processes to
+core dump. [#8886]
+<li>Fix a bug in VxWorks when yielding the CPU, so that we delay at
+least one tick. [#9061]
+
+</ol>
+
+</body>
+</html>
diff --git a/db/docs/ref/changelog/4.3.29.html b/db/docs/ref/changelog/4.3.29.html
new file mode 100644
index 000000000..d4d475b12
--- /dev/null
+++ b/db/docs/ref/changelog/4.3.29.html
@@ -0,0 +1,524 @@
+<!--$Id: 4.3.29.html,v 1.34 2007/05/17 18:17:18 bostic Exp $-->
+<html>
+<head>
+<title>The Berkeley DB Package: DB 4.3.29 Change Log</title>
+<meta name="description" content="Berkeley DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Berkeley DB 4.3.29 Change Log</h3>
+
+<h3>Database or Log File On-Disk Format Changes:</h3>
+<ol>
+
+<li>The on-disk log format has changed.
+
+</ol>
+<h3>New Features:</h3>
+<ol>
+
+<li>Add support for light weight, transactionally protected Sequence
+Number generation. [#5739]
+<li>Add support for Degree 2 isolation. [#8689]
+<li>Add election generation information to replication to support Paxos
+compliance. [#9068]
+<li>Add support for 64-bit and ANSI C implementations of the RPCGEN
+utility. [#9548]
+
+</ol>
+<h3>Database Environment Changes:</h3>
+<ol>
+
+<li>Fix a bug where the permissions on system shared memory segments did
+not match the mode specified in the DB_ENV-&gt;open() method. [#8921]
+<li>Add a new return error from the DB_ENV-&gt;open() method call,
+DB_VERSION_MISMATCH, which is returned in the case of an application
+compiled under one version of Berkeley DB attempting to open an
+environment created under a different version. [#9077]
+<li>Add support for importing databases from a transactional database
+environment into a different environment. [#9324]
+<li>Fix a bug where a core dump could occur if a zero-length database
+environment name was specified. [#9233]
+<li>Increase the number of environment regions to 100. [#9297]
+<li>Remove the DB_ENV-&gt;set_verbose() method flag DB_VERB_CHKPOINT.
+[#9405]
+<li>Fix bugs where database environment getters could return incorrect
+information after the database environment was opened, if a different
+thread of control changed the database environment values. Fix bugs
+where database environment getter/setter functions could race with other
+threads of control. [#9724]
+<li>Change the DbEnv.set_lk_detect method to match the DbEnv.open
+semantics. That is, DbEnv.set_lk_detect may be called after the database
+environment is opened, allowing applications to configure automatic
+deadlock detection if it has not yet been configured. [#9724]
+<li>Fix cursor locks for environments opened without DB_THREAD so that
+they use the same locker ID. This eliminates many common cases of
+application self-deadlock, particularly in CDS. [#9742]
+<li>Fix a bug in DB-&gt;get_env() in the C API where it could return an
+error when it should only return the DB_ENV handle. C++ and Java are
+unchanged. [#9828]
+<li>Fix a bug where we only need to initialize the cryptographic memory
+region when MPOOL, Log or Transactions have been configured. [#9872]
+<li>Change private database environments at process startup to only
+allocate the heap memory required at any particular time, rather than
+always allocating the maximum amount of heap memory configured for the
+environment. [#9889]
+<li>Add a method to create nonexistent intermediate directories when
+opening database files. [#9898]
+<li>Add support for in-memory logging within database environments.
+[#9927]
+<li>Change Berkeley DB so configuring a database environment for
+automatic log file removal affects all threads in the environment, not
+just the DbEnv handle in which the configuration call is made. [#9947]
+<li>Change the signature of the error callback passed to the
+DB_ENV-&gt;set_errcall and DB-&gt;set_errcall methods to add a DB_ENV handle,
+to provide database environment context for the callback function.
+[#10025]
+<li>Fix a race condition between DB-&gt;close and DB-&gt;{remove,rename} on
+filesystems that don't allow file operations on open files (such as
+Windows). [#10180]
+<li>Add a DB_DSYNC_LOG flag to the DbEnv::set_flags method, which
+configures O_DSYNC on POSIX systems and FILE_FLAG_WRITE_THROUGH on Win32
+systems. This offers significantly better performance for some
+applications on certain Solaris/filesystem combinations. [#10205]
+<li>Fix a bug where calling the DB or DBEnv database remove or rename
+methods could cause a transaction checkpoint or cache flush to fail.
+[#10286]
+<li>Change file operations not to flush a file if it hasn't been written.
+[#10537]
+<li>Remove 4GB restriction on region sizes on 64 bit machines. [#10668]
+<li>Simplify the signature of substitute system calls for ftruncate and
+seek. [#10668]
+<li>Change Berkeley DB so that opening an environment without specifying
+a home directory will cause the DB_CONFIG file in the current directory
+to be read, if it exists. [#11424]
+<li>Fix a bug that caused a core dump if DB handles without associated
+database environments were used for database verification. [#11649]
+<li>Fix Windows mutexes shared between processes run as different users.
+[#11985]
+<li>Fix Windows mutexes for some SMP machines. [#12417]
+
+</ol>
+<h3>Concurrent Data Store Changes:</h3>
+<ol>
+
+<li>Fix cursor locks for environments opened without DB_THREAD so that
+they use the same locker ID. This eliminates many common cases of
+application self-deadlock, particularly in CDS. [#9742]
+
+</ol>
+<h3>General Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug where Berkeley DB log cursors would close and reopen the
+underlying log file each time the log file was read. [#8934]
+<li>Improve performance of DB-&gt;open() for existing subdatabases
+maintained within the same database file. [#9156]
+<li>Add a new error, DB_BUFFER_SMALL, to differentiate from ENOMEM. The
+new error indicates that the supplied DBT is too small. ENOMEM is now
+always fatal. [#9314]
+<li>Fix a bug when an update through a secondary index is deadlocked it
+is possible for the deadlock to be ignored, resulting in a partial
+update to the data. [#9492]
+<li>Fix a bug where a record could get inserted into the wrong database
+when a page was deallocated from one subdatabase and reallocated to
+another subdatabase maintained within the same database file. [#9510]
+<li>Enhance file allocation so that if the operating system supports
+decreasing the size of a file and the last page of the file is freed,
+it will be returned to the operating system. [#9620]
+<li>Fix a bug where DB_RUNRECOVERY could be returned if there was no
+more disk space while aborting the allocation of a new page in a
+database. [#9643]
+<li>Fix a bug where the cryptographic code could memcpy too many bytes.
+[#9648]
+<li>Fix a bug with DB-&gt;join() cursors that resulted in a memory leak and
+incomplete results. [#9763]
+<li>Disallow cursor delete, followed a cursor put of the current item
+across all access methods. [#9900]
+<li>Fix a bug where recovery of operations on unnamed databases that
+were never closed, could fail. [#10118]
+<li>Fix a bug where DB-&gt;truncate of a database with overflow records
+that spanned more than one page would loop. [#10151]
+<li>Improve performance in the database open/close path. [#10266]
+<li>Fix a bug that restricted the number of temporary files that could
+be created to 127. [#10415]
+<li>Fix a bug which could cause a Too many files error when trying to
+create temporary files. Limit the number of temporary file creation
+retries. [#10760] [#10773]
+<li>Fix a memory leak bug with Sequence Numbers. [#11589]
+<li>Fix a bug on Windows platforms that prevents database files from
+growing to over 2GB. [#11839]
+<li>Fix a platform independence bug with sequence numbers. Existing
+sequence numbers will be automatically upgraded upon next access.
+[#12202]
+<li>Fix a race between truncate and read/write operations on Windows
+platforms that could cause corrupt database files. [#12598]
+
+</ol>
+<h3>Btree Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug where a record could get placed on the wrong page when two
+threads are simultaneously trying to split a four level (or greater)
+Btree. [#9542]
+<li>Fix a bug where calling DB-&gt;truncate() on a Btree which has
+duplicate keys that overflow the leaf page would not properly free the
+overflow pages and possibly loop. [#10666]
+
+</ol>
+<h3>Hash Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug where a delete to a HASH database with off page duplicates
+could fail to have the proper lock when deleting an off page duplicate
+tree. [#9585]
+<li>Fix a bug where a dirty reader using a HASH database would leave a
+lock on the meta page. [#10105]
+<li>Fix a bug where a DB-&gt;del() on a HASH database supporting dirty
+reads could fail to upgrade a WWRITE lock to a WRITE lock when deleting
+an off page duplicate. [#10649]
+
+</ol>
+<h3>Queue Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug where DB_CONSUME_WAIT may loop rather than wait for a new
+record to enter the queue, if the queue gets into a state where there
+are only deleted records between the head and the end of queue. [#9215]
+<li>Fix a bug where a Queue extent file could be closed when it was
+empty, even if a thread was still accessing a page from that file.
+[#9291]
+<li>Fix a bug where DBC-&gt;c_put(key, data, DB_CURRENT) where inserting a
+new record after the current record had been deleted was returning
+DB_KEYEMPTY. [#9314]
+<li>Fix a bug where a Queue extent file could be reported as not found
+if a race condition was encountered between removing the file and
+writing out a stale buffer. [#9462]
+<li>Fix a bug where the Queue access method might fail to release a
+record lock when running without transactions. [#9487]
+<li>Add DB_INORDER flag for Queue databases to guarantee FIFO (First In,
+First Out) ordering when using DB_CONSUME or DB_CONSUME_WAIT. [#9689]
+<li>Fix a bug where remove and rename calls could fail with a
+"Permission denied" error. [#9775]
+<li>Fix a bug where aborting a transaction that opened and renamed a
+queue database using extents could leave some of the extent files with
+the wrong name on Windows. [#9781]
+<li>Fix a bug where a db_dump of a queue database could return an error
+at the end of the queue if the head or tail of the queue is the first
+record on a page. [#10215]
+<li>Fix a race condition which would leave a Queue extent file open
+until the database handle was closed, preventing it from being removed.
+[#10591]
+<li>Fix a bug where a deadlock of a put on a database handle with dirty
+readers could generate a lock downgrade error. [#10678]
+<li>Fix a bug which caused DB_SET_RANGE and DB_GET_BOTH_RANGE to not
+return the next record when an exact match was not found. [#10860]
+
+</ol>
+<h3>Recno Access Method Changes</h3>
+<ol>
+
+<li>Fix a bug where the key/data counts returned by the Db-&gt;stat method
+for Recno databases did not match the documentation. [#8639]
+<li>Fix a bug where DBC-&gt;c_put(key, data, DB_CURRENT) where inserting a
+new record after the current record had been deleted was returning
+DB_KEYEMPTY. [#9314].
+
+</ol>
+<h3>C++-specific API Changes:</h3>
+<ol>
+
+<li>Change DbException to extend std::exception, making it possible for
+applications to catch all exceptions in one place. [#10022]
+<li>Fix a bug where errors during transaction destructors (commit,
+abort) could cause an invalid memory access. [#10302]
+<li>Fix a bug that could lead to a read through an uninitialized pointer
+when a DbLockNotGrantedException is thrown. [#10470]
+<li>Fix a bug in the C++ DbEnv::rep_elect method API where the arguments
+were swapped, leading to an "Invalid Argument" return when that method
+is called. [#11906]
+
+</ol>
+<h3>Java-specific API Changes:</h3>
+<ol>
+
+<li>Fix a bug where the Java API did not respect non-zero return values
+from secondaryKeyCreate, including DB_DONOTINDEX. [#9474]
+<li>Fix a bug where a self-deadlock occurred with a non-transactional
+class catalog database used in a transactional environment. The bug
+only occurred when the collections API was not used for starting
+transactions. [#9521]
+<li>Improve Javadoc for the Java API. [#9614]
+<li>Improve memory management and performance when large byte arrays are
+being passed to DB methods. [#9801]
+<li>Improve performance of accessing statistics information from the
+Java API. [#9835]
+<li>Allow Java application to run without DB_THREAD so they can be used
+as RPC clients. [#10097]
+<li>Fix a bug where an uninitialized pointer is dereferenced for
+logArchive(Db.DB_ARCH_REMOVE). [#10225]
+<li>Fix a bug in the Collections API where a deadlock exception could
+leave a cursor open. [#10516]
+<li>Fix the replication callback in the Java API so that the parameter
+names match the C API. [#10550]
+<li>Add get methods to the Java statistics classes. [#10807]
+<li>Fix bugs in the Java API handling of null home directories and
+environments opened without a memory pool. [#11424]
+<li>Fix the Java API in the non-crypto package. [#11752]
+<li>Fix a bug that would cause corruption of error prefix strings.
+[#11967]
+<li>Fix handling of LSNs in the Java API. [#12223]
+<li>Dont throw a NullPointerException if the list of files returned by
+log_archive is empty. [#12383]
+
+</ol>
+<h3>Tcl-specific API Changes:</h3>
+
+None.
+
+<h3>RPC-specific Client/Server Changes:</h3>
+<ol>
+
+<li>Add support for 64-bit and ANSI C implementations of the RPCGEN
+utility. [#9548]
+<li>Fix a small memory leak in RPC clients. [#9595]
+<li>Fix a bug in the RPC server to avoid self-deadlock by always setting
+DB_TXN_NOWAIT. [#10181]
+<li>Fix a bug in the RPC server so that if it times out an environment,
+it first closes all the Berkeley DB handles in that environment.
+[#10623]
+
+</ol>
+<h3>Replication Changes:</h3>
+<ol>
+
+<li>Add an Environment ID to distinguish between clients from different
+replication groups. [#7786]
+<li>Add number of votes required and flags parameters to
+DB_ENV-&gt;rep_elect() method. [#7812]
+<li>Fix a bug where a client's env_openfiles pass could start with the
+wrong LSN. This could result in very long initial sync-up times for
+clients joining a replication group. [#8635]
+<li>Add election generation information to replication to support Paxos
+compliance. [#9068]
+<li>Add rep019 to test running normal recovery on clients to make sure
+we synch to the correct LSNs. [#9151]
+<li>Remove support for logs-only replication clients. Use of the
+DB_REP_LOGSONLY flag to the DB_ENV-&gt;rep_start() method should be
+replaced with the DB_REP_CLIENT flag. [#9331]
+<li>Fix a bug where replication clients fail to lock all the necessary
+pages when applying updates when there are more than one database in the
+transaction. [#9569]
+<li>Fix a bug in replication elections where when elections are called
+by multiple threads the wrong master could get elected. [#9770]
+<li>Fix a bug where the master could get a DB_REP_OUTDATED error.
+Instead send an OUTDATED message to the client. [#9881]
+<li>Add support for automatic initialization of replication clients.
+[#9927]
+<li>Modify replication timestamp so that non-replication client
+applications can get a DB_REP_HANDLE_DEAD. [#9986]
+<li>Add a new DB_REP_STARTUPDONE return value for rep_process_message()
+and st_startup_done to rep_stat() to indicate when a client has finished
+syncing up to a master and is processing live messages. [#10310]
+<li>Add _pp to secondary handles, add RPRINT, fix a deadlock. [#10429]
+<li>Fix a bug where an old client (and no master) that dropped the ALIVE
+message would never update to the current generation. [#10469]
+<li>Fix a bug where a message could get sent to a new client before
+NEWSITE has been returned to the application. Broadcast instead.
+[#10508]
+<li>Fix a crash when verbose replication messages are configured and a
+NULL DB_LSN pointer is passed to rep_process_message. [#10508]
+<li>Add code to respect set_rep_limit in LOG_REQ processing. [#10716]
+<li>Fix a synchronization problem between replication recovery and
+database open. [#10731]
+<li>Change elections to adjust timeout if egen changes while we are
+waiting. [#10686]
+<li>Client perm messages now return ISPERM/NOTPERM instead of 0.
+[#10855] [#10905]
+<li>Fix a race condition during rep_start when a role change occurs. Fix
+memory leaks. [#11030]
+<li>Fix problems with duplicate records. A failure will no longer occur
+if the records are old records (LOG_MORE) and archived. [#11090]
+<li>Fix a bug where the replication temporary database would grow during
+automatic client initialization. [#11090]
+<li>Add throttling to PAGE_REQ. [#11130]
+<li>Remove optimization-causing problems with racing threads in
+rep_verify_match. [#11208]
+<li>Fix memory leaks. [#11239]
+<li>Fix an initialization bug when High Availability configurations are
+combined with private database environments, which can cause
+intermittent failures. [#11795]
+<li>Fix a bug in the C++ DbEnv::rep_elect method API where the arguments
+were swapped, leading to an "Invalid Argument" return when that method
+is called. [#11906]
+
+</ol>
+<h3>XA Resource Manager Changes:</h3>
+
+None.
+
+<h3>Locking Subsystem Changes:</h3>
+<ol>
+
+<li>Fix a bug where a deadlock of an upgrade from a dirty read to a
+write lock during an aborted transaction, may not be detected. [#7143]
+<li>Add support for Degree 2 isolation. [#8689]
+<li>Change the system to return DB_LOCK_DEADLOCK if a transaction
+attempts to get new locks after it has been selected as the deadlock
+victim. [#9111]
+<li>Fix a bug where when configured to support dirty reads, a writer may
+not downgrade a write lock as soon as possible, potentially blocking
+dirty readers. [#9197]
+<li>Change the test-and-set mutex implementation to avoid interlocked
+instructions when we know the instruction is unlikely to succeed.
+[#9204]
+<li>Fix a bug where a thread supporting dirty readers can get blocked
+while trying to get a write lock. It will allocate a new lock rather
+than using an existing WAS_WRITE lock when it becomes unblocked, causing
+the application to hang. [#10093]
+<li>The deadlock detector will now note that a parent transaction should
+be considered in abort if one of its children is. [#10394]
+<li>Remove a deadlock where database closes could deadlock with page
+acquisition. [#10726]
+<li>Fix a bug where a dirty reader could read an overflow page that was
+about to be deleted. [#10979]
+<li>Fix a bug that failed to downgrade existing write locks during a
+btree page split when supporting dirty reads. [#10983]
+<li>Fix a bug that would fail to upgrade a write lock when moving a
+cursor off a previously deleted record. [#11042]
+
+</ol> <h3>Logging Subsystem Changes:</h3> <ol>
+
+<li>Fix a bug where recovery could leave too many files open. [#9452]
+<li>Fix a bug where aborting a transaction with a file open in it could
+result in an unrecoverable log file. [#9636]
+<li>Fix a bug where recovery would not return a fatal error if the
+transaction log was corrupted. [#9841]
+<li>Fix a bug in recovery so that the final checkpoint no longer tries
+to flush the log. This will permit recovery to complete even if there
+is no disk space to grow the log file. [#10204]
+<li>Improve performance of log flushes by pre-allocating log files and
+using fdatasync() in preference to fsync(). [#10228]
+<li>Fix a bug where recovery of a page split after a non-transactional
+update to the next page would fail to update the back pointer. [#10421]
+<li>Fix a bug in log_archive() where __env_rep_enter() was called twice.
+[#10577]
+<li>Fix a bug with in-memory logs that could cause a memory leak in the
+log region. [#11505]
+
+</ol>
+<h3>Memory Pool Subsystem Changes:</h3>
+<ol>
+
+<li>Fix a bug in the MPOOLFILE file_written flag value so that
+checkpoint doesn't repeatedly open, flush and sync files in the cache
+for which there are no active application handles. [#9529]
+
+</ol>
+<h3>Transaction Subsystem Changes:</h3>
+<ol>
+
+<li>Fix a bug where the same transaction ID could get allocated twice
+if you wrapped the transaction ID space twice and then had a very old
+transaction. [#9036]
+<li>Fix a bug where a transaction abort that contained a page allocation
+could loop if the filesystem was full. [#9461]
+<li>Fix implementation of DB-&gt;get_transactional() to match
+documentation: there is no possibility of error return, only 0 or 1.
+[#9526]
+<li>Fix a bug where re-setting any of the DB_TXN_NOSYNC,
+DB_TXN_NOT_DURABLE and DB_TXN_WRITE_NOSYNC flags could fail to clear
+previous state, potentially leading to incorrect transactional behavior
+in the application. [#9947]
+<li>Add a feature to configure the maximum number of files that a
+checkpoint will hold open. [#10026]
+<li>An aborting transaction will no longer generate an undetected
+deadlock. [#10394]
+<li>Fix a bug that prevented a child transaction from accessing a
+database handle that was opened by its parent transaction. [#10783]
+<li>Fix a bug where a checkpoint or a delayed write in another process
+could raise an EINVAL error if the database had been opened with the
+DB_TXN_NOT_DURABLE flag. [#10824]
+<li>Fix private transactional environments on 64-bit systems. [#11983]
+
+</ol>
+<h3>Utility Changes:</h3>
+<ol>
+
+<li>Add debugging and performance tuning information to db_stat. Add
+new Berkeley DB handle methods to output debugging and performance
+tuning information to a C library FILE handle (C and C++ APIs only).
+[#9204]
+<li>Fix a bug where db_stat could drop core if DB-&gt;open fails and no
+subdatabase was specified. [#9273]
+<li>Add command-line arguments to the db_printlog utility to restrict
+the range of log file records that are displayed. [#9307]
+<li>Fix a bug in the locking statistics where current locks included
+failed lock requests. [#9314]
+<li>Fix a bug where db_archive would remove all log files when
+--enable-diagnostic and DB_NOTDURABLE were both specified. [#9459]
+<li>Fix a bug where db_dump with the -r flag would output extra copies
+of the subdatabase information. [#9808]
+<li>Fix a bug in db_archive that would cause log file corruption if the
+application had configured the environment with DB_PRIVATE. [#9841]
+<li>Add support in db_load for resetting database LSNs and file IDs
+without having to reload the database. [#9916]
+<li>Change the DB-&gt;stat() method to take a transaction handle as an
+argument, allowing DB-&gt;stat() to be called from within a transaction.
+[#9920]
+<li>Fix a bug in db_printlog where only the first filewould be displayed
+for in-memory logs. [#11505]
+<li>Fix a bug that prevented database salvage from working in Berkeley
+DB 4.3.21. [#11649]
+<li>Fix a bug in db_load which made it impossible to specify more than
+a single option on the command line. [#11676]
+
+</ol>
+<h3>Configuration, Documentation, Portability and Build Changes:</h3>
+<ol>
+
+<li>Add pread and pwrite to the list of system calls applications can
+replace at run-time. [#8954]
+<li>Add support for UTF-8 encoding of filenames on Windows. [#9122]
+<li>Remove C++ dependency on snprintf. Compilers on HPUX 10.20 are
+missing header file support for snprintf(). [#9284]
+<li>Change Berkeley DB to not use the open system call flag O_DIRECT,
+unless DB configured using --enable-o_direct. [#9298]
+<li>Fix several problems with mutex alignment on HP/UX 10.20. [#9404]
+<li>Fix a memory leak when HAVE_MUTEX_SYSTEM_RESOURCES is enabled.
+[#9546]
+<li>Fix a bug in the sec002.tcl test for binary data. [#9626]
+<li>Fix a bug where filesystem blocks were not being zeroed out in the
+On-Time embedded Windows OS. [#9640]
+<li>Fix build problems with the Java API in Visual Studio .NET 2003.
+[#9701]
+<li>Add support for the gcc compiler on the Opteron platform. [#9725]
+<li>Add support for the small_footprint build option for VxWorks.
+[#9820]
+<li>Add support for linking of DLLs with MinGW. [#9957]
+<li>Remove the make target which builds the RPM package from the
+Berkeley DB distribution. [#10233]
+<li>Add a C++/XML example for ex_repquote. [#10380]
+<li>Fix a bug to link with lrt only if detected by configure (Mac OS X
+issue). [#10418]
+<li>Fix a bug and link Java and Tcl shared libraries with lpthread if
+required, for mutexes. [#10418]
+<li>Add support for building Berkeley DB on the HP NonStop OSS (Tandem)
+platform. [10483]
+<li>Change Berkeley DB to ignore EAGAIN from system calls. This fixed
+problems on NFS mounted databases. [#10531]
+<li>Remove a line with bt_compare and bt_prefix from the db_dump
+recovery test suite, which can cause failures on OpenBSD. [#10567]
+<li>Fix a conflict with the lock_init for building Berkeley DB on
+Cygwin. [#10582]
+<li>Add Unicode support for the Berkeley DB Windows API. [#10598]
+<li>Add support for 64-bit builds on Windows. [#10664]
+<li>Libtool version is now 1.5.8. [#10950]
+<li>Remove mt compilation flag for HP-UX 11.0. [#11427]
+<li>Fix a bug to link with lrt on Solaris to support fdatasync. [#11437]
+
+</ol>
+
+</body>
+</html>
diff --git a/db/docs/ref/changelog/4.4.16.html b/db/docs/ref/changelog/4.4.16.html
new file mode 100644
index 000000000..19c7b93f2
--- /dev/null
+++ b/db/docs/ref/changelog/4.4.16.html
@@ -0,0 +1,444 @@
+<!--$Id: 4.4.16.html,v 1.24 2007/05/17 18:17:18 bostic Exp $-->
+<html>
+<head>
+<title>The Berkeley DB Package: DB 4.4.16 Change Log</title>
+<meta name="description" content="Berkeley DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Berkeley DB 4.4.16 Change Log</h3>
+
+<h3>Database or Log File On-Disk Format Changes:</h3>
+<ol>
+
+<li>The on-disk log format has changed.
+
+</ol>
+<h3>New Features:</h3>
+<ol>
+
+<li>Add support to compact an existing Btree database. [#6750]
+<li>Add support for named in-memory databases. [#9927]
+<li>Add support for database environment recovery serialization. This
+simplifies multiprocess application architectures. Add DB_REGISTER flag
+to DB_ENV-&gt;open(). [#11511]
+<li>Add utility for performing hot backups of a database environment.
+[#11536]
+<li>Add replication configuration API. [#12110]
+<li>Add replication support to return error instead of waiting for
+client sync to complete. [#12110]
+<li>Add replication support for delayed client synchronization. [#12110]
+<li>Add replication support for client-to-client synchronization.
+[#12110]
+<li>Add replication support for bulk transfer. [#12110]
+<li>Add new flags DB_DSYNC_DB and DB_DSYNC_LOG [12941]
+<li>Add DbEnv.log_printf, a new DbEnv method which logs printf style
+formatted strings into the Berkeley DB database environment log.
+[#13241]
+
+</ol>
+<h3>Database Environment Changes:</h3>
+<ol>
+
+<li>Add a feature to support arbitrary alignment of mutexes in order to
+minimize cache line collisions. [#9580]
+<li>Change cache regions on 64-bit machines to allow regions larger than
+4GB. [#10668]
+<li>Fix a bug where a loop could occur if the application or system
+failed during modification of the linked list of shared regions.
+[#11532]
+<li>Fix mutex alignment on Linux/PA-RISC, add test-and-set mutexes for
+MIPS and x86_64. [#11575]
+<li>Fix a bug where private database environments (DB_PRIVATE) on 64-bit
+machines would core dump because of 64-bit address truncation. [#11983]
+<li>Fix a bug where freed memory is accessed when DB_PRIVATE
+environments are closed. This can happen on systems where the operating
+system holds mutex resources that must be freed when the mutex is
+destroyed. [#12591]
+<li>Fix a bug where the DbEnv.stat_print method could self-deadlock and
+hang. The DbEnv.stat_print method no longer displays statistics for any
+of the database environments databases. [#12039]
+<li>Fix a bug where Berkeley DB could create fragmented
+filesystem-backed shared region files. [#12125]
+<li>Fix a bug where Berkeley DB stat calls could report a cache size of
+0 after the statistics were cleared. [#12307]
+<li>Threads of control joining database environments are now configured
+for all of the subsystems (lock, log, cache, or transaction) for which
+the environment was originally configured, it is now an error to attempt
+configuration of additional subsystems after an environment is created.
+[#12422]
+<li>Fix a bug where negative percentages could be displayed in
+statistics output. [#12673]
+<li>Fix a bug that could cause a panic if the cache is filled with
+non-logging updated pages. [#12763]
+<li>Fix a bug that could cause an unreported deadlock if the application
+was using the DB_DIRTY_READ flag and the record was an off page
+duplicate record. [#12893]
+<li>Fix a bug where a handle lock could be incorrectly retained during
+a delete or rename operation. [#12906]
+
+</ol>
+<h3>Concurrent Data Store Changes:</h3>
+<ol>
+
+<li>Lock upgrades and downgrades are now accounted for separately from
+lock requests and releases. [#11155]
+<li>Fix a bug where a second process joining a Concurrent Data Store
+environment, with the DB_CDB_ALLDB flag set, would fail. This would
+happen if the first thread were not entirely finished with
+initialization. [#12277]
+
+</ol>
+<h3>General Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug where filesystem operations are improperly synchronized.
+[#10564]
+<li>Add support for database files larger than 2GB on Windows. [#11839]
+<li>Rename DB_DEGREE_2 (and all related flags) to DB_READ_COMMITTED.
+Rename DB_DIRTY (and all related flags) to DB_READ_UNCOMMITTED. [#11776]
+<li>Fix a bug where wrapping of sequences was incorrect when the cache
+size is smaller than the range of the maximum value minus the minimum
+value. [#11997]
+<li>Fix a bug that could result in a hot backup having a page missing
+from a database file if a file truncation was in progress during the
+backup but was then aborted. [#12017]
+<li>Fix a bug where a long filename could cause one too few bytes to
+be allocated when opening a file. [#12085]
+<li>Fix a bug in secondary cursor code if a write lock is not granted.
+[#12109]
+<li>Fix a bug in secondary cursors where the current record would change
+on error. [#12141]
+<li>Fix a bug in Db-&gt;truncate where the method was not checking to see
+if the handle was opened read-only. [#12179]
+<li>Fix a bug in sequences so that they are now platform independent,
+taking into account little-endian and big-endian architectures. They
+will be automatically upgraded in 4.4. [#12202]
+<li>Fix a bug with non-wrapping sequences when initial value was
+INT64_MIN. [#12390]
+<li>Add a retry for operating system operations that return EIO (IO
+Error) to better support NFS mounted filesystems. [#12426]
+<li>Fix sequence wrapping at INT64 limits. [#12520]
+<li>Fix a bug where errors during DB-&gt;associate could leave secondaries
+half associated. [#13173]
+<li>Fix a bug so that we no longer will update in CDS and DS if the file
+size limit will be exceeded. [#13222]
+
+</ol>
+<h3>Btree Access Method Changes:</h3>
+<ol>
+
+<li>Remove maxkey configuration. [#8904]
+<li>Fix a memory leak in operations on large Btrees. [#12000]
+
+</ol>
+<h3>Hash Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug where access to HASH or encrypted database pages might be
+blocked during a checkpoint. [#11031]
+<li>Fix a bug where recovery would fail when a database has a hash page
+on the free list and that hash page was freed without using transactions
+and later allocated and aborted within a transaction. [#11214]
+<li>Fix a bug in hash duplicates where if the caller left garbage in the
+partial length field, we were using it. Fix a bug where a replacement
+of a hash item that should have gone on an overflow page, did not.
+[#11966]
+<li>Fix a bug where free space was miscalculated when adding the first
+duplicate to an existing item and the existing item plus the new item
+does not fit on a page. [#12270]
+<li>Fix a bug where allocations of hash buckets are not recovered
+correctly. [#12846]
+
+</ol>
+<h3>Queue Access Method Changes:</h3>
+<ol>
+
+<li>Improve performance of deletes from a QUEUE database that does not
+have a secondary index. [#11538]
+<li>Fix a bug where updates that do not use transactions, but do enable
+locking, failed to release locks. [#11669]
+<li>Fix a bug where a transaction might not be rolled forward if the
+site was performing hot backups and an application aborted a prepared
+but not committed transaction. [#12181]
+<li>Fix a bug with queue extents not being reclaimed. [#12249]
+<li>Fix a bug where a record being inserted before the head of the queue
+could appear missing if DB_CONSUME is not specified. [#12919]
+<li>Fix a bug that might cause recovery to move the head or tail of the
+queue to exclude a record that was deleted but whose transaction did not
+commit. [#13256]
+<li>Fix a bug that could cause recovery to move the head or tail pointer
+beyond a record that was aborted but was rolled backward by recovery.
+[#13318]
+
+</ol>
+<h3>Recno Access Method Changes</h3>
+
+None.
+
+<h3>C++-specific API Changes:</h3>
+<ol>
+
+<li>Fix a bug so that a DbMemoryException will be raised during a
+DB_BUFFER_SMALL error. [#13273]
+
+</ol>
+<h3>Java-specific API Changes:</h3>
+<ol>
+
+<li>Add VersionMismatchException to map the DB_VERSION_MISMATCH error.
+[#11429]
+<li>Fix a bug in Environment.getConfiguration() method in non-crypto
+builds. [#11752]
+<li>Fix a bug that caused a NullPointerException when using the
+MultipleDataEntry default constructor. [#11753]
+<li>Fix handling of replication errors. [#11822]
+<li>Remove EnvironmentConfig.setReadOnly() method. [#11882]
+<li>Fix a bug where prefix strings in the error handler may be
+corrupted. [#11967]
+<li>Fix a bug so that nested exceptions will appear in stack traces.
+[#11992]
+<li>Fix a bug on LogSequenceNumber objects in the Java API. [#12223]
+<li>Fix a bug when no files are returned from a call to
+DB_ENV-&gt;log_archive. [#12383]
+<li>Fix a bug when multiple verbose flags are set. [#12383]
+<li>Fix a bug so that an OutOfMemoryError is thrown when allocation
+fails in the JNI layer. [#13434]
+
+</ol>
+<h3>Java collections and bind API Changes:</h3>
+<ol>
+
+<li>Binding performance has been improved by using System.arraycopy in
+the FastOutputStream and FastInputStream utility classes. [#12002]
+<li>The objectToEntry method is now implemented in all TupleBinding
+subclasses (IntegerBinding, etc) so that tuple bindings are fully
+nestable. An example of this usage is a custom binding that dynamically
+discovers the data types of each of the properties of a Java bean class.
+For each property, it calls TupleBinding.getPrimitiveBinding using the
+property's type (class). When the custom binding's objectToEntry method
+is called, it in turn calls the objectToEntry method of the nested
+bindings for each property. [#12124]
+<li>The getCause method for IOExceptionWrapper and
+RuntimeExceptionWrapper is now defined so that nested exceptions appear
+in stack traces for exceptions thrown by the collections API. [#11992]
+<li>TupleBinding.getPrimitiveBinding can now be passed a primitive type
+class as well as a primitive wrapper class. The return value for
+Integer.TYPE and Integer.class, for example, will be the same binding.
+[#12035]
+<li>Improvements have been made to prevent the buffer used in serial and
+tuple bindings from growing inefficiently, and to provide more
+alternatives for the application to specify the desired size. For
+details see com.sleepycat.bind.serial.SerialBase and
+com.sleepycat.bind.tuple.TupleBase. [#12398]
+<li>Add StoredContainer.getCursorConfig, deprecate isDirtyRead.
+Deprecate StoredCollections.dirtyReadMap (dirtyReadSet, etc) which is
+replaced by configuredMap (configuredSet, etc). Deprecated
+StoredContainer.isDirtyReadAllowed with no replacement (please use
+DatabaseConfig.getDirtyRead). Also note that
+StoredCollections.configuredMap (configuredSet, etc) can be used to
+configure read committed and write lock containers, as well as read
+uncommitted containers, since all CursorConfig properties are supported.
+[#11776]
+<li>Add the protected method SerialBinding.getClassLoader so that
+subclasses may return a specific or dynamically determined class loader.
+Useful for applications which use multiple class loaders, including
+applications that serialize Groovy-defined classes. [#12764] [#12749]
+
+</ol>
+<h3>Tcl-specific API Changes:</h3>
+<ol>
+
+<li>Fix a bug that could cause a memory leak in the replication test
+code. [#13436]
+
+</ol>
+<h3>RPC-specific Client/Server Changes:</h3>
+<ol>
+
+<li>Fix double-free in RPC server when handling an out-of-memory error.
+[#11852]
+
+</ol>
+<h3>Replication Changes:</h3>
+<ol>
+
+<li>Fix race condition (introduced in 4.3) in rep_start function.
+[#11030]
+<li>Changed internal initialization to no longer store records. [#11090]
+<li>Add support for replication bulk transfer. [#11099]
+<li>Berkeley DB now calls check_doreq function for MASTER_REQ messages.
+[#11207]
+<li>Fix a bug where transactions could be counted incorrectly during
+txn_recover. [#11257]
+<li>Add DB_REP_IGNORE flag so that old messages (especially PERM
+messages) can be ignored by applications. [#11585]
+<li>Fix a bug where op_timestamp was not initialized. [#11795]
+<li>Fix a bug in db_refresh where a client would write a log record on
+closing a file. [#11892]
+<li>Fix backward arguments in C++ rep_elect API. [#11906]
+<li>Fix a bug where a race condition could happen between downgrading a
+master and a database update operation. [#11955]
+<li>Fix a bug on VERIFY_REQ. We now honor wait recs/rcvd. [#12097]
+<li>Fix a bug in rebroadcast of verify_req by initializing lp-&gt;wait_recs
+when finding a new master. [#12097]
+<li>Fix a bug by adding lockout checking to __env_rep_enter since
+rename/remove now call it. [#12192]
+<li>Fix a bug so that we now skip __db_chk_meta if we are a rep client.
+[#12316]
+<li>Fix a replication failure on Windows. [#12331]
+<li>Remove master discovery phase from rep_elect as a performance
+improvement to speed up elections. [#12551]
+<li>Fix a bug to avoid multiple data streams when issuing al ALL_REQ.
+[#12595]
+<li>Fix a bug to request the remaining gap again if the gap record is
+dropped after we receive the singleton. [#12974]
+<li>Fix a bug in internal initialization when master changes in the
+middle of initializing. [#13074]
+<li>Fix a bug in replication/archiving with internal init. [#13110]
+<li>Fix pp handling of db_truncate. [#13115]
+<li>Fix a bug where rep_timestamp could be updated when it should not
+be updated. [#13331]
+<li>Fix a bug with bulk transfer when toggling during updates. [#13339]
+<li>Change EINVAL error return to DB_REP_JOIN_FAILURE. [#12110]
+<li>Add C++ exception for DB_REP_HANDLE_DEAD. [#13361]
+<li>Fix a bug where starting an election concurrently with processing a
+NEWMASTER message could cause the send function to be called with an
+invalid eid. [#13403]
+
+</ol>
+<h3>XA Resource Manager Changes:</h3>
+
+None.
+
+<h3>Locking Subsystem Changes:</h3>
+
+None.
+
+<h3>Logging Subsystem Changes:</h3>
+<ol>
+
+<li>Add set_log_filemode for applications that need to set an absolute
+file mode on log files. [#8747]
+<li>Fix a bug that caused Not Found to be returned if a log file exists
+but is not readable. [#11185]
+<li>Removed checksum of records with an in-memory log buffer. [#11280]
+<li>Fix a bug so that the DB_LOG_INMEMORY flag can no longer be set
+after calling DB_ENV-&gt;open. [#11436]
+<li>Fix a bug introduced after release 4.0 where two simultaneous
+checkpoints could cause ckp_lsn values to be out of order. [#12094]
+<li>Fix a bug when in debug mode and using the DEBUG_ROP which will now
+log read operations in __dbc_logging. [#12303]
+<li>Fix a bug where failing to write a log record on a file close would
+result in a core dump later. [#12460]
+<li>Fix a bug where automatic log file removal, or the return of log
+files using an absolute path, could fail silently if the applications
+current working directory could not be reached using the systems getcwd
+library call. [#12505]
+<li>Avoid locking the log region if we are not going to flush the log.
+This can improve performance for some write-intensive application
+workloads. [#13090]
+<li>Fix a bug with a possible segment fault when memp_stat_print is
+called on a temporary database. [#13315]
+<li>Fix a bug where log_stat_print could deadlock with threads during a
+checkpoint. [#13315]
+
+</ol>
+<h3>Memory Pool Subsystem Changes:</h3>
+<ol>
+
+<li>Fix a bug where modified database pages might not be flushed if
+recovery were run and all pages from a database were found in the system
+cache and up to date, followed by a system crash. [#11654]
+
+</ol>
+<h3>Transaction Subsystem Changes:</h3>
+<ol>
+
+<li>Add new DbTxn class methods allowing applications to set/get a
+descriptive name associated with a transaction. The descriptive name
+is also displayed by the db_stat utility. [#0382]
+<li>Fix a bug where aborting a transaction with a large number of nested
+transactions could take a long time. [#10972]
+<li>Add support to allow the TXN_WRITE_NOSYNC flag to be specified on
+the transaction handle. [#11151]
+<li>Fix a bug that could cause a page to be on the free list twice if
+it was originally put on the free list by a non-transactional update and
+then reallocated in a transaction that aborts. [#11159]
+<li>Remove the requirement for the DB_AUTO_COMMIT flag to make database
+operations transactional. Specifying the database environment as
+transactional or opening the database handle transactionally is
+sufficient. [#11302]
+<li>Fix a bug so that environments created from errant programs that
+called dbp-&gt;close while transactions were still active can now be
+recovered. [#11384]
+<li>Fix a bug that caused free pages at the end of a file to be
+truncated during recovery rather than placed on the free page list.
+[#11643]
+<li>Fix a bug that caused a page to have the wrong type if the truncate
+of a BREE or RECNO database needed to be rolled forward. [#11670]
+<li>Fix a bug when manually undoing a subdb create, dont try to free a
+root page that has not been allocated. [#11925]
+<li>Add a check on database open to see if log files were incorrectly
+removed by system administration mistakes. [#12178]
+<li>Fix a bug when calling DB-&gt;pget and then specifying the
+DB_READ_COMMITTED (DB_DEGREE_2) on a cursor. If followed by a
+DBC-&gt;c_pget, the primary database would incorrectly remain locked.
+[#12410]
+<li>Fix a bug where the abort of a transaction in which a sub database
+was opened with the DB_TXN_NOT_DURABLE flag could fail. [#12420]
+<li>Fix a bug that could cause an abort transaction that allocated new
+pages to a file that were not flushed to disk prior to the abort
+transaction to report out of disk space. [#12743]
+<li>Fix a bug that could prevent multiple creates and destroys of the
+same file to be recovered correctly. [#13026]
+<li>Fix a bug when recovery previously handled a section of the log that
+did not contain any transactions. [#13139]
+<li>Fix a bug that could result in the loss of durability in
+Transactional Environments on Mac OS X. [#13149]
+<li>Fix a bug that could cause the improper reuse of a transaction id
+when recovery restores prepared transactions. [#13256]
+
+</ol>
+<h3>Utility Changes:</h3>
+<ol>
+
+<li>Add utility for performing hot backups of a database environment.
+[#11536]
+<li>Change the Verify utility to now identify any nodes that have
+incorrect record counts. [#11934]
+<li>Fix a bug in the 1.85 compatibility code supporting per-application
+Btree comparison and prefix compression functions. The functions would
+not work on big-endian 64-bit hardware. [#13316]
+
+</ol>
+<h3>Configuration, Documentation, Portability and Build Changes:</h3>
+<ol>
+
+<li>Change the ex_tpcb sample application to no longer displays
+intermediate results. It displays results at the end of the run.
+[#11259]
+<li>Change the Visual Studio projects on Windows so that each is in an
+intermediate directory. [#11441]
+<li>Fix errors in test subdb011. [#11799]
+<li>Fix a bug that could cause applications using gcc on Power PC
+platforms to hang. [#12233]
+<li>Fix a bug where installation will fail if a true program cannot be
+found. [#12278]
+<li>Fix a bug that prevented C++ applications from configuring XA
+[#12300].
+<li>Fix a race condition in the Windows mutex implementation found on
+8-way Itanium systems. [#12417]
+<li>Add pthread mutex support for IBM OS/390 platform (z/OS or MVS).
+[#12639]
+<li>Fix a bug where the Tcl API did not configure on OS X 10.4. [#12699]
+<li>Fix portability issues with queue or recno primary databases.
+[#12872]
+<li>Fix a bug where utility attempted to send replication message.
+[#13446]
+
+</ol>
+
+</body>
+</html>
diff --git a/db/docs/ref/changelog/4.4.20.html b/db/docs/ref/changelog/4.4.20.html
new file mode 100644
index 000000000..70896221a
--- /dev/null
+++ b/db/docs/ref/changelog/4.4.20.html
@@ -0,0 +1,51 @@
+<!--$Id: 4.4.20.html,v 1.5 2007/05/17 18:17:18 bostic Exp $-->
+<html>
+<head>
+<title>The Berkeley DB Package: DB 4.4.20 Change Log</title>
+<meta name="description" content="Berkeley DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Berkeley DB 4.4.20 Change Log</h3>
+
+<h3>Changes since Berkeley DB 4.4.16:</h3>
+<ol>
+
+<li>Add support for Visual Studio 2005. [#13521]
+<li>Fix a bug with in-memory transaction logs when files wrapped around
+the buffer. [#13589]
+<li>Fix a bug where we needed to close replications open files during
+replication initialization. [#13623]
+<li>Fix a bug which could leave locks in the environment if database
+compaction was run in a transactional environment on a non-transactional
+database. This might have also have triggered deadlocks if the database
+was opened transactionally. [#13680]
+<li>Fix a bug where setting the DB_REGISTER flag could result in
+unnecessarily running recovery, or corruption of the registry file on
+Windows systems. [#13789]
+<li>Fix a bug in Database.compact that could cause JVM crashes or
+NullPointerException. [#13791]
+<li>Fix a bug that would cause a trap if an environment was opened
+specifying DB_REGISTER and the environment directory could not be found.
+[#13793]
+<li>Fix a buffer overflow bug when displaying process and thread IDs in
+the Berkeley DB statistics output. [#13796]
+<li>Fix a bug where if there is insufficient memory for a database key
+in a DBT configured to return a key value into user-specified memory,
+the cursor is moved forward to the next entry in the database, which can
+cause applications to skip key/data pairs. [#13815]
+<li>Fix a bug that could cause the loss of an update to a QUEUE database
+in a hot backup. [#13823]
+<li>Fix a bug where retrieval from a secondary index could result in a
+core dump. [#13843]
+<li>Fix a bug that could cause part of the free list to become unlinked
+if a btree compaction was rolled back due to a transaction abort.
+[#13891]
+<li>Fix a bug with in-memory logging that could cause a race condition
+to corrupt the logs. [#13919]
+
+</ol>
+
+</body>
+</html>
diff --git a/db/docs/ref/changelog/4.5.20.html b/db/docs/ref/changelog/4.5.20.html
new file mode 100644
index 000000000..1506ad74c
--- /dev/null
+++ b/db/docs/ref/changelog/4.5.20.html
@@ -0,0 +1,322 @@
+<!--$Id: 4.5.20.html,v 1.25 2007/05/17 18:17:18 bostic Exp $-->
+<html>
+<head>
+<title>The Berkeley DB Package: DB 4.5.20 Change Log</title>
+<meta name="description" content="Berkeley DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Berkeley DB 4.5.20 Change Log</h3>
+
+<h3>Database or Log File On-Disk Format Changes:</h3>
+<ol>
+
+<li>The on-disk log format has changed.
+
+</ol>
+<h3>New Features:</h3>
+<ol>
+
+<li>Multi-Version Concurrency Control for the Btree/Recno access
+methods.
+<li>A new replication framework with a default TCP/IP setup.
+<li>Online replication upgrades for high availability replicated 24/7
+systems.
+<li>A new event-style notification.
+<li>Several enhancements to the Java Collections API including the
+implementation of the size() method.
+
+</ol>
+<h3>Database Environment Changes:</h3>
+<ol>
+
+<li>Update the DB_ENV-&gt;failchk method to garbage collect per-process
+mutexes stranded after unexpected process failure. [#13964]
+<li>Fix a bug that could cause memory used to track threads for
+DB_ENV-&gt;failchk to not be reused when a thread no longer exists.
+[#14425]
+<li>Add set_event_notify behavior as part of new event notification in
+Berkeley DB. [#14534]
+<li>Fix a bug so that we no longer panic on DB_ENV-&gt;close() if a
+previous environment close failed to log. This condition will now return
+an error. [#14693]
+<li>Created os_getenv, removed clib/getenv, implemented Windows specific
+behavior. [#14942]
+<li>Fix a bug where it was possible to corrupt the DB_REGISTER
+information file, making it impossible for Berkeley DB applications to
+join database environments. [#14998]
+
+</ol>
+<h3>Concurrent Data Store Changes:</h3>
+<ol>
+
+<li>Fix a bug where renaming a subdatabase in a Concurrent Data Store
+environment could fail. [#14185]
+
+</ol>
+<h3>General Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug that could leave extra unallocated pages at the end of a
+database file. [#14031]
+<li>Optimize secondary updates when overwriting primary records.
+[#14075]
+<li>Fix a bug to prevent a trap when creating a named in-memory database
+and there are already temporary files open. [#14133]
+<li>Fix a bug which caused a trap if the key parameter to DBC-&gt;c_get was
+omitted with DB_CURRENT. [#14143]
+<li>Fix a bug with secondary cursors when the secondary has off-page
+duplicates. This bug resulted in incorrect primary data being returned.
+[#14240]
+<li>Improve performance when removing a subdatabase by not locking every
+page. [#14366]
+<li>Fix a bug that would not properly upgrade database files from
+releases 3.2.9 (and earlier) to releases 4.0 (and greater). [#14461]
+<li>Fix a bug that could cause a DB_READ_UNCOMMITTED get through a
+secondary index to return DB_SECONDARY_CORRUPT. [#14487]
+<li>Fix a bug so that non-transactional cursor updates of a
+transactional database will generate an error. [#14519]
+<li>Add a message when the system panics due to a page in the wrong
+state at its time of allocation. [#14527]
+<li>Fix a remove failure when attempting to remove a file that is open
+in another thread of control. [#14780]
+<li>Fix a bug where the key was not ignored when doing a cursor put with
+the DB_CURRENT flag. [#14988]
+
+</ol>
+<h3>Btree Access Method Changes:</h3>
+<ol>
+
+<li>Changed the implementation of internal nodes in btrees so that they
+no longer share references to overflow pages with leaf nodes. [#10717]
+<li>Fix a bug that could cause a diagnostic assertion by setting the
+deleted bit on a record in an internal node. [#13944]
+<li>Fix three problems in BTREE compaction: [#14238]
+<ol type="a">
+<li>When deleting a page don't check the next key in the parent if we
+are going to delete the parent too.
+<li>Need to check that the tree has not collapsed between dropping a
+read lock and getting the write lock. If it has collapsed we will fetch
+the root of the tree.
+<li>Fix a case where we fail to lock the next page before reading it.
+</ol>
+<li>Fix a bug that could cause the compaction of a Btree with sorted
+duplicates to fail when attempting to compact an off page duplicate tree
+if a key could not fit in an internal node. [#14771]
+<li>Fix a bug that causes a loop if an empty Btree was compacted.
+[#14493]
+
+</ol>
+<h3>Hash Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug to allow creation of hash pages during truncate recovery.
+[#14247]
+
+</ol>
+<h3>Queue Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug where reads of data items outside the range of the queue
+were not kept locked to the end of the transaction, breaking
+serializability. [#13719]
+<li>Fix a bug that could cause corruption in queue extent files if
+multiple processes tried to open the same extent at the same time.
+[#14438]
+<li>Improve concurrency for in-place updates in queue databases.
+[#14918]
+
+</ol>
+<h3>Recno Access Method Changes:</h3>
+
+None.
+
+<h3>C++-specific API Changes:</h3>
+<ol>
+
+<li>C++ applications that check the error code in exceptions should note
+that DbMemoryException has been changed to have the error code
+DB_BUFFER_SMALL rather than ENOMEM, to match the error returned by the
+C API. DbMemoryException will be thrown when a Dbt is too small to
+contain data returned by Berkeley DB. When a call to malloc fails, or
+some other resource is exhausted, a plain DbException will be thrown
+with error code set to ENOMEM. [#13939]
+
+</ol>
+<h3>Java-specific API Changes:</h3>
+<ol>
+
+<li>Database.verify may now be called. This method is now static and
+takes a DatabaseConfig parameter. [#13971]
+<li>Add DB_ENV-&gt;{fileid_reset, lsn_reset} to the public API. [#14076]
+
+</ol>
+<h3>Java collections and bind API Changes:</h3>
+<ol>
+
+<li>The com.sleepycat.collections package is now fully compatible with
+the Java Collections framework. [#14732]
+
+</ol>
+<h3>Tcl-specific API Changes:</h3>
+<ol>
+
+<li>Fix a conflicting variable, sysscript.tcl. [#15051]
+
+</ol>
+<h3>RPC-specific Client/Server Changes:</h3>
+
+None.
+
+<h3>Replication Changes:</h3>
+<ol>
+
+<li>Fix a bug when running with DEBUG_ROP or DEBUG_WOP. [#13394]
+<li>Add live replication upgrade support [#13670]
+<li>Fix a bug so that client databases are removed at the start of
+internal initialization. [#14147]
+<li>Fix a bug in replication internal initialization so that data_dir
+will be handled correctly. Make internal initialization resilient to
+multiple data_dir calls with the same directory. [#14489]
+<li>Fix a bug in the 4.2 sync-up algorithm that could result in no open
+files. [#14552]
+<li>Fix a bug when clients decide to re-request. [#14642]
+<li>Fix a bug where a PERM bulk buffer could have a zero LSN passed to
+the application callback. [#14675]
+<li>Change names of some existing replication API methods as described
+in "Replication Method Naming" page of the "Upgrading Berkeley DB
+Applications to Release 4.5" section of Berkeley DB Reference Guide.
+[#14723]
+<li>Fix a bug which could cause an election to succeed only after
+waiting for the timeout to expire, even when all sites responded in a
+timely manner. The bug was most easily visible in an election between 2
+sites. [#14752]
+<li>Fix a bug where a process could have an old file handle to a log
+file. [#14797]
+<li>Fix a bug where a "log_more" message could be on a log file
+boundary. [#15034]
+<li>Fix a bug that could cause log corruption if a database open
+operation were attempted during a call to rep_start in another thread.
+[#15035]
+<li>Fix a bug during elections where a vote2 arrives before its vote1.
+[#15055]
+<li>Fix a bug to make sure we are a client if sending a REP_REREQUEST.
+[#15066]
+
+</ol>
+<h3>XA Resource Manager Changes:</h3>
+
+None.
+
+<h3>Locking Subsystem Changes:</h3>
+<ol>
+
+<li>Fix a bug that could cause a write to hang if DB_READ_UNCOMMITTED
+is enabled and it tries to reacquire a write lock. [#14919]
+
+</ol>
+<h3>Logging Subsystem Changes:</h3>
+<ol>
+
+<li>Fix a bug so that log headers are now included in the checksum. This
+avoids a possible race in doing hot backups. [#11636].
+<li>Add a check so that some log sequence errors are diagnosed at run
+time rather than during recovery. [#13231]
+<li>Fix a bug where recovery fails if there is no disk space for the
+forced checkpoint that occurs at the end of processing the log. [#13986]
+<li>Fix a bug which could cause a page to be missing from the end of a
+database file if the page at the end of the file was freed while it
+contained data and the system was restarted before the log record for
+that free was flushed to disk. [#14090]
+<li>Fix a bug that could cause log files to be incorrectly removed by
+log_archive if it was run immediately after recovery. [#14874]
+
+</ol>
+<h3>Memory Pool Subsystem Changes:</h3>
+<ol>
+
+<li>Fix a bug that could cause corruption to the buffer pool cache if a
+race condition was hit while using DB-&gt;compact. [#14360]
+<li>Fix a bug where cache pages could be leaked in applications creating
+temporary files for which the DB_MPOOL_NOFILE flag was set. [#14544]
+
+</ol>
+<h3>Transaction Subsystem Changes:</h3>
+<ol>
+
+<li>Fix a bug that could cause extra empty pages to appear in a database
+file after recovery. [#11118]
+<li>Fix a bug triggered when running recovery with a feedback function
+that could cause a NULL pointer dereference. [#13834]
+<li>Fix a bug where running recovery could create duplicate entries in
+the data directory list. [#13884]
+<li>Fix a bug to not trade locks if a write lock is already owned.
+[#13917]
+<li>Fix a bug that could cause traps or hangs if the DB_TXN-&gt;set_name
+function is used in a multithreaded application. [#14033]
+<li>Fix a bug so that a transaction can no longer be committed after it
+had deadlocked. [#14037]
+<li>Fix a bug that could cause a trap during recovery if multiple
+operations that could remove the same extent are recovered. [#14061]
+<li>Fix a bug that could cause an extent file to be deleted after the
+last record in the extent was consumed but the consuming transaction was
+aborted. [#14179]
+<li>Fix a bug where the parent database would not use
+DB_READ_UNCOMMITTED in certain cases when calling DBC-&gt;c_pget. [#14361]
+<li>Fix a bug so that it is no longer possible to do a non-transactional
+cursor update on a database that is opened transactionally. [#14519]
+<li>Fix a bug that causes a sequence to ignore the DB_AUTO_COMMIT
+settings. [#14582]
+<li>Fix a bug, change txn_recover so that multiple processes will
+recover prepared transactions without requiring that the first process
+stay active. [#14707]
+<li>Fix a bug that could cause the wrong record to be deleted if a
+transaction had a cursor on a record with a pending delete and then
+replaced a record that contained overflow data or replaced a record with
+overflow data and that replace failed. [#14834]
+
+</ol>
+<h3>Utility Changes:</h3>
+<ol>
+
+<li>Fix a bug that caused db_verify to not check the order on leaf pages
+which were the leftmost children of an internal node. [#13004]
+<li>Fix a bug that caused db_hotbackup to not backup queue extent files.
+[#13848]
+<li>Fix a bug so that db_verify no longer reports that an unused hash
+page is not fully zeroed. [#14030]
+<li>Fix a bug where db_stat ignored the -f option to return "fast
+statistics". [#14283]
+<li>Fix a bug that prevented the db_stat utility from opening database
+files with write permission so that meta data statistics would be
+updated. [#14755]
+<li>Fix a bug in db_hotbackup related to windows. Sub-directories are
+now ignored. [#14757]
+
+</ol>
+<h3>Configuration, Documentation, Portability and Build Changes:</h3>
+<ol>
+
+<li>The Berkeley DB 4.3 and 4.4 releases disallowed using the
+--with-uniquename configuration option with the C++, Java, or RPC
+--enable-XXX options. The 4.5 release returns to the 4.2 release
+behavior, allowing those combinations of configuration options. [#14067]
+<li>Fix build issues when CONFIG_TEST is not enabled for Tcl. [#14507]
+<li>There are updated build instructions for Berkeley DB PHP module on
+Linux. [#14249]
+<li>Use libtool's "standard" environment variable names so that you can
+set "AR" to "ar -X64" for example, and modify both libtool and the
+Makefile commands. Remove the install-strip target from the Makefile,
+it is no longer used. [#14726]
+<li>Fix a bug where, when a database is opened with the DB_THREAD flag
+(the default in Java), and an operation in one thread causes the
+database to be truncated (typically when the last page in the database
+is freed) concurrently with a read or write in another thread, there can
+be arbitrary data loss, as Windows zeros out pages from the read/write
+location to the end of the file. [#15063]
+
+</ol>
+
+</body>
+</html>
diff --git a/db/docs/ref/changelog/4.6.html b/db/docs/ref/changelog/4.6.html
new file mode 100644
index 000000000..7d0ec4947
--- /dev/null
+++ b/db/docs/ref/changelog/4.6.html
@@ -0,0 +1,366 @@
+<!--$Id: 4.6.html,v 1.34 2007/07/17 14:50:20 bostic Exp $-->
+<html>
+<head>
+<title>The Berkeley DB Package: DB 4.6.18 Change Log</title>
+<meta name="description" content="Berkeley DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Berkeley DB 4.6.18 Change Log</h3>
+<h3>Database or Log File On-Disk Format Changes:</h3>
+<ol>
+
+<li>The on-disk log format has changed.
+<li>The format of Hash database pages was changed in the Berkeley DB 4.6
+release, and items are now stored in sorted order.
+<b>The format changes are entirely backward-compatible, and no database
+upgrades are needed.</b>
+However, upgrading existing databases can offer significant performance
+improvements. Note that databases created using the 4.6 release may not
+be usable with earlier Berkeley DB releases.
+
+</ol>
+<h3>New Features:</h3>
+<ol>
+
+<li>Add support for a cursor DB_PREV_DUP flag, which moves the cursor
+to the previous key/data pair if it's a duplicate of the current
+key/data pair. [#4801]
+<li>Add the ability to set cache page priority on a database or cursor
+handle. [#11886]
+<li>Add verbose output tracing for filesystem operations. [#13760]
+<li>Port Berkeley DB to Qualcomm's Binary Runtime Environment for
+Wireless (BREW). [#14562]
+<li>Port Berkeley DB to WinCE. [#15312]
+<li>Port Berkeley DB to S60. [#15371]
+<li>Applications may now begin processing new transactions while previously
+prepared, but unresolved, transactions are still pending. [#14754]
+<li>Significant performance improvements in the Hash access method. [#15017]
+
+</ol>
+<h3>Database Environment Changes:</h3>
+<ol>
+
+<li>Add support to close open file handles in the case of catastrophic
+database environment failure so applications that do not exit and
+restart on failure won't leak file handles. [#6538]
+<li>Replace the Berkeley DB shared memory allocator with a new
+implementation, intended to decrease the performance drop-off seen in
+database environments having working sets that are larger than the
+cache, especially database environments with multiple cache page sizes.
+[#13122]
+<li>Fix a bug that would incorrectly cause a thread to appear to be
+in the Berkeley DB API after a call to db_create. [#14562]
+<li>Allow database close prior to resolving all transactions updating
+the database. [#14785]
+<li>Fix a bug where the db_stat utility -Z flag and the statistics
+method's DB_STAT_CLEAR flag could clear mutex statistics too quickly,
+leading to incorrect values being displayed. [#15032]
+<li>Fix a bug where removal of a file after and open/close pair spanning
+the most recent checkpoint log-sequence-numbers made recovery fail.
+[#15092]
+<li>Fix a bug that could leave an environment unrecoverable if FTRUNCATE
+was not set and a roll-forward to a timestamp was interrupted between the
+truncation of the log and the recording of aborted allocations. [#15108]
+<li> Fix a bug where recovery of a rename operation could fail if the
+rename occurred in a directory that no longer existed. [#15119]
+<li>Fix a bug that could cause recovery to report a "File exists"
+error if a committed create was partially recovered by a previously
+failed recovery operation. [#15151]
+<li>Fix a bug where the DbEnv.get_thread_count method implementation was
+missing from the Berkeley DB 4.5 release. [#15201]
+<li>Fix a bug where replication operations were not reported properly
+when the DbEnv.failchk method was called. [#15094]
+<li> Fixed a bug that caused SEQ-&gt;remove not to use a transaction
+if the sequence was opened on a transactional database handle but no
+transaction was specified on the call. [#15235]
+<li>Fix a bug where accesses to the database environment reference count
+could race, causing the DB_ENV-&gt;remove method to incorrectly remove
+or not remove a database environment. [#15240]
+<li>Fix a bug that could cause a recovery failure if a partial record
+was written near the end of a log file before a crash and then never
+overwritten after recovery runs and before a log file switch occurs.
+[#15302]
+<li>Fix a bug that could fire a diagnostic assertion if an error occurred
+during a database environment open. [#15309]
+<li> Fix a bug where memp_trickle attempts to flush an infinite number
+of buffers. [#15342]
+<li>Cause application updates of the DB_ENV-&gt;set_mp_max_write values
+to affect already running cache flush operations. [#15342]
+<li>Fix a bug which could cause system hang if a checkpoint happened at
+the same time as a database file create or rename. [#15346]
+<li>Fix a bug which could cause application failure if the open of a
+subdatabase failed while other database opens were happening. [#15346]
+<li>Fix a bug that could cause recovery to not process a transaction
+properly if the transaction was started before the transaction IDs were
+reset but did not put its first record into the log until after the
+txn_recycle record. [#15400]
+<li>Fix a bug that could cause a thread in cache allocation to loop
+infinitely. [#15406]
+<li>Fix a bug that could cause recovery to report a Log Sequence Error
+on systems without the ftruncate system call where a page allocation
+occurred and the database metadata page was forced out of cache without
+being marked dirty and then had to be recovered. [#15441]
+<li>Fix a bug on systems lacking the ftruncate system call, where a page
+may be improperly linked into the free list if archive recovery was done
+in multiple steps, that is, applying additional logs to the same
+databases. [#15557]
+
+</ol>
+<h3>Concurrent Data Store Changes:</h3>
+
+None.
+
+<h3>General Access Method Changes:</h3>
+<ol>
+
+<li>Add a feature where applications can specify a custom comparison
+function for the Hash access method [#4109]
+<li>Open, create, close and removal of non-transactional databases is
+are longer logged in transactional database environments unless debug
+logging is enabled. [#8037]
+<li>Add the ability to set cache page priority on a database or cursor
+handle. [#11886]
+<li>fix a bug where the DB_ENV-&gt;fileid_reset method failed when
+called on on encrypted or check-summed databases. [#13990]
+<li>Fix a bug where the DB-&gt;fd method failed when called on
+in-memory databases. [#14157]
+<li>Fix a bug where an attempt to open a Recno database with a backing
+file that does not exist could report an error because it couldn't
+remove a temporary file. [#14160]
+<li>Reverse a change found in previous releases which disallowed setting
+"partial" flags on key DBTs for DB and DbCursor put method calls. [#14520]
+<li>Fix a bug where transactional file operations, such as remove or
+rename, could leak file handles. [#15222]
+<li>Fix a bug that could cause the in-memory sorted freelist used by the
+DB-&gt;compact method not to be freed if transaction or lock timeouts
+were set in the environment. [#15292]
+<li>Add the DB-&gt;get_multiple method, which returns if the DB handle
+references a "master" database in the physical file. [#15352]
+<li>Fix a bug that could cause an DB_INORDER, DB-&gt;get method
+DB_CONSUME operation to loop if the Queue database was missing a record
+due to a rollback by a writer or a non-queue insert in the queue.
+[#15452]
+<li>Fix a bug preventing database removal after application or system
+failure in a database environment configured for in-memory logging.
+[#15459]
+
+</ol>
+<h3>Btree Access Method Changes:</h3>
+
+None.
+
+<h3>Hash Access Method Changes:</h3>
+<ol>
+
+<li>Change the internal format of Hash database pages, storing items in
+sorted order. There are no externally visible changes, and hash
+databases using historic on-page formats do not require an explicit
+upgrade. (However, upgrading existing databases can offer significant
+performance improvements.) [#15017]
+
+</ol>
+<h3>Queue Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug which could cause a Queue extent file to be incorrectly
+removed if an empty extent file was being closed by one thread and being
+updated by another thread (which was using random access operations).
+[#9101]
+
+</ol>
+<h3>Recno Access Method Changes:</h3>
+
+None.
+
+<h3>C++-specific API Changes:</h3>
+
+None.
+
+<h3>Java-specific API Changes:</h3>
+<ol>
+
+<li>Add a feature where an exception is thrown by the Java API, the
+Berkeley DB error message is now included in the exception object.
+[#11870]
+<li>Fix a bug which can cause a JVM crash when doing a partial get
+operation. [#15143]
+<li>Fix a bug which prevented the use of Berkeley DB sequences from
+Java. [#15220]
+<li>Fix multiple bugs where DBTs were not being copied correctly in the
+Java replication APIs. [#15223]
+<li>Add transaction.commitWriteNoSync to the Java API. [#15376]
+
+</ol>
+<h3>Java collections and bind API Changes:</h3>
+<ol>
+
+<li>Change SerialBinding to use the current thread's context class
+loader when loading application classes. This allows the JE jar file
+to be deployed in application servers and other containers as a shared
+library rather than as an application jar. [#15447]
+<li>Tuple bindings now support the java.math.BigInteger type. Like other
+tuple binding values, BigInteger values are sorted in natural integer
+order by default, without using a custom comparator. For details please
+see the Javadoc for: com.sleepycat.bind.tuple.TupleInput.readBigInteger
+com.sleepycat.bind.tuple.TupleOutput.writeBigInteger
+com.sleepycat.bind.tuple.BigIntegerBinding [#15244]
+<li>Add tuple binding methods for reading and writing packed int and
+long values. Packed integer values take less space, but take slightly
+more processing time to read and write. See: TupleInput.readPackedInt
+TupleInput.getPackedIntByteLength TupleInput.readPackedLong
+TupleInput.getPackedLongByteLength TupleOutput.writePackedInt
+TupleOutput.writePackedLong PackedInteger [#15422]
+<li>The Collections API has been enhanced so that auto-commit works for
+the standard Java Iterator.remove(), set() and add() methods. Previously
+it was necessary to explicitly begin and commit a transaction in order
+to call these methods, when the underlying Database was transactional.
+Note that starting a transaction is still necessary when calling these
+methods if the StoredCollection.storedIterator method is used. [#15401]
+<li>Fix a bug that causes a memory leak for applications where both of
+the following are true: many Environment objects are opened and closed,
+and the CurrentTransaction or TransactionRunner class is used. [#15444]
+
+</ol>
+<h3>Tcl-specific API Changes:</h3>
+
+None.
+
+<h3>RPC-specific Client/Server Changes:</h3>
+
+None.
+
+<h3>Replication Changes:</h3>
+<ol>
+
+<li>Fix a bug where transactions could be rolled-back if an existing
+replication group master was partitioned and unable to participate in
+an election. [#14752]
+<li>Add a new event when a replication manager framework master fails
+to send and confirm receipt by clients of a "permanent" message.
+[#14775]
+<li>Fix a race where multiple threads might attempt to process a
+LOGREADY condition. [#14902]
+<li>Change the DB_VERB_REPLICATION flag to no longer require the
+Berkeley DB library be built with the --enable-diagnostic configuration
+option to output additional replication logging information. [#14991]
+<li>Fix a bug with elections occurring during internal init of a
+replication client site. [#15057]
+<li>Fix lockout code to lockout message threads and API separately.
+Send indication that log requests is for internal init. [#15067]
+<li>Replication manager changed to retry host-name look-up failures,
+since they could be caused by transient name server outage.
+[#15081]
+<li>Fix a bug which led to memory corruption when the sending of a bulk
+buffer resulted in an error. [#15100]
+<li>A throttling limit of 10 megabytes is now set by default in a newly
+created database environment (see the DbEnv.rep_set_limit method).
+[#15115]
+<li>Fix a bug in ALL_REQ handling where master could get a DB_NOTFOUND.
+[#15116]
+<li>Fix a bug which could lead to client sites repeatedly but unproductively
+calling for an election, when a master site already exists. [#15128]
+<li>Modify gap processing algorithms so XXX_MORE messages ask for data
+beyond what it just processed, not an earlier gap that might exist.
+[#15136]
+<li>Fixed a bug in the ex_rep example application which could cause the
+last few transactions to disappear when shutting down the sites of the
+replication group gracefully. [#15162]
+<li>Fix a bug where if a client crashed during internal init, its
+database environment would be left in a confused state, making it
+impossible to synchronize again with the master. [#15177]
+<li>Fix a bug where election flags are not cleared atomically with the
+setting of the new master ID. [#15186]
+<li>Fix a bug which would cause Berkeley DB to crash if an internal init
+happened when there were no database files at the master. [#15227]
+<li>It is now guaranteed that the DB_EVENT_REP_STARTUPDONE event will
+be presented to the application after the corresponding
+DB_EVENT_REP_NEWMASTER event, even in the face of extreme scheduling
+anomalies. [#15265]
+<li>Fix minor memory leaks in the replication manager. [#15239] [#15256]
+<li>Fix a bug where a client starting an election when the rest of the
+replication group already had an established master could confuse
+replication management at the other client sites, leading to failure to
+properly acknowledge PERM transactions from the master. [#15428]
+<li>Add support for reporting Replication Manager statistics. [#15430]
+<li>Fix a bug where a send failure during processing of a request
+message from a client could erroneously appear to the application as an
+EPERM system error. [#15436]
+<li>Client now sets STARTUPDONE at the end of the synchronization phase
+when it has caught up to the end of the master's transaction log, without
+requiring ongoing transactions at the master. [#15542]
+<li>Fix a bug in sleep-time calculation which could cause a Replication
+Manager failure. [#15552]
+
+</ol>
+<h3>XA Resource Manager Changes:</h3>
+
+None.
+
+<h3>Locking Subsystem Changes:</h3>
+<ol>
+
+<li>Change the DB_ENV-&gt;lock_detect method to return the number of
+transactions timed out in addition to those were rejected due to
+deadlock. [#15281]
+
+</ol>
+<h3>Logging Subsystem Changes:</h3>
+
+None.
+
+<h3>Memory Pool Subsystem Changes:</h3>
+<ol>
+
+<li>Fix a bug that could cause a checkpoint to hang if a database was
+closed while the checkpoint was forcing that file to disk and all the
+pages for that database were replaced in the cache. [#15135]
+<li>Fix a bug where a system error in closing a file could result in a
+core dump. [#15137]
+<li>Fix MVCC statistics counts for private database environments. [#15218]
+
+</ol>
+<h3>Transaction Subsystem Changes:</h3>
+<ol>
+
+<li>Fix a bug where creating a database with the DB_TXN_NOTDURABLE flag
+set would still write a log record. [#15386]
+<li>Change transaction checkpoint to wait only for pages being updated
+during the checkpoint. [#14710]
+
+</ol>
+<h3>Utility Changes:</h3>
+<ol>
+
+<li>Fix a bug that prevented db_load from handling subdatabase names
+that were of zero length. [#8204]
+<li>Fix a bug where the db_hotbackup utility did not clean out and record
+the log file numbers in the backup directory when both the -u and -D flags
+were specified. [#15395]
+
+</ol>
+<h3>Configuration, Documentation, Portability and Build Changes:</h3>
+<ol>
+
+<li>Berkeley DB no longer supports process-shared database environments
+on Windows 9X platforms; the DB_PRIVATE flag must always be specified
+to the DB_ENV-&gt;open method. [#13766]
+<li>Port Berkeley DB to Qualcomm's Binary Runtime Environment for
+Wireless (BREW). [#14562]
+<li>Compile SWIG-generated code with the -fno-strict-aliasing flag when
+using the GNU gcc compiler. [#14953]
+<li>Changed include files so ENOENT is resolved on Windows. [#15078]
+<li>Port Berkeley DB to WinCE. [#15312]
+<li>Port Berkeley DB to S60. [#15371]
+<li>Add the db_hotbackup executable to the Windows MSI installer. [#15372]
+<li>Change the db_hotbackup utility to use the Berkeley DB library
+portability layer. [#15415]
+<li>Re-write the GNU gcc mutex implementation on the x86 platform to
+avoid compiler errors. [#15461]
+<li>Fix a bug with non-HFS filesystems under OS X which could affect
+data durability. [#15501]
+
+</ol>
+</body>
+</html>
diff --git a/db/docs/ref/changelog/toc.html b/db/docs/ref/changelog/toc.html
new file mode 100644
index 000000000..48e51198b
--- /dev/null
+++ b/db/docs/ref/changelog/toc.html
@@ -0,0 +1,58 @@
+<!--$Id: toc.so,v 1.7 2007/07/17 14:50:20 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
+<!--See the file LICENSE for redistribution information.-->
+<html>
+<head>
+<title>Berkeley DB Reference Guide: Berkeley DB Release Change Logs</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
+</head>
+<body bgcolor=white>
+<table width="100%"><tr valign=top>
+<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Upgrading Berkeley DB Applications</dl></h3></td>
+<td align=right><a href="../upgrade/process.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.2.0/intro.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p>
+<h3 align=center>Berkeley DB Release Change Logs</h3>
+<p><ul type=disc>
+<li><a href="4.6.html">4.6.18</a>
+<li><a href="4.5.20.html">4.5.20</a>
+<li><a href="4.4.16.html">4.4.16</a>,
+<a href="4.4.20.html">4.4.20</a>
+<li><a href="4.3.29.html">4.3.29</a>
+<li><a href="4.2.52.html">4.2.52</a>
+<li><a href="4.1.24.html">4.1.24</a>,
+<a href="4.1.25.html">4.1.25</a>
+<li><a href="4.0.14.html">4.0.14</a>
+<li><a href="3.3.11.html">3.3.11</a>
+<li><a href="3.2.9.html">3.2.9</a>
+<li><a href="3.1.14.html">3.1.14</a>,
+<a href="3.1.17.html">3.1.17</a>
+<li><a href="3.0.55.html">3.0.55</a>
+<li><a href="2.7.1.html">2.7.1</a>,
+<a href="2.7.7.html">2.7.7</a>,
+<a href="2.7.5.html">2.7.5</a>,
+<a href="2.7.4.html">2.7.4</a>,
+<a href="2.7.3.html">2.7.3</a>
+<li><a href="2.6.4.html">2.6.4</a>,
+<a href="2.6.5.html">2.6.5</a>,
+<a href="2.6.6.html">2.6.6</a>,
+<a href="2.6.7.html">2.6.7</a>
+<li><a href="2.5.9.html">2.5.9</a>
+<li><a href="2.4.10.html">2.4.10</a>,
+<a href="2.4.14.html">2.4.14</a>
+<li><a href="2.3.html">2.3.0</a>,
+<a href="2.3.5.html">2.3.5</a>
+<a href="2.3.10.html">2.3.10</a>,
+<a href="2.3.11.html">2.3.11</a>,
+<a href="2.3.12.html">2.3.12</a>,
+<a href="2.3.14.html">2.3.14</a>,
+<a href="2.3.16.html">2.3.16</a>
+<li><a href="2.2.html">2.2.0</a>
+<li><a href="2.1.html">2.1.0</a>
+</ul>
+<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade/process.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.2.0/intro.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
+</body>
+</html>
diff --git a/db/docs/ref/debug/common.html b/db/docs/ref/debug/common.html
deleted file mode 100644
index 9e2928e05..000000000
--- a/db/docs/ref/debug/common.html
+++ /dev/null
@@ -1,148 +0,0 @@
-<!--$Id: common.so,v 10.28 2005/06/16 17:45:07 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB Reference Guide: Troubleshooting common Berkeley DB problems</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
-</head>
-<body bgcolor=white>
-<a name="2"><!--meow--></a>
-<table width="100%"><tr valign=top>
-<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Debugging Applications</dl></h3></td>
-<td align=right><a href="../debug/printlog.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../build_unix/intro.html"><img src="../../images/next.gif" alt="Next"></a>
-</td></tr></table>
-<p>
-<h3 align=center>Troubleshooting common Berkeley DB problems</h3>
-<p>The following are some common problems that applications encounter.
-For the answers to more Frequently Asked Questions, see the
-Berkeley DB Reference Guide FAQ sections, typically located at the end
-of each chapter.</p>
-<ol>
-<p><li><b>A Berkeley DB method is returning "argument invalid" (EINVAL) or other general
-error value, or throwing a general exception, and the cause is not
-obvious. Or, a Berkeley DB method is returning an out-of-memory (ENOMEM)
-error and there is plenty of disk and heap space available.</b>
-<p>The application is calling the Berkeley DB API incorrectly or configuring the
-database environment with insufficient resources.</p>
-<p>The Berkeley DB library optionally outputs a verbose error message whenever
-it is about to return a general-purpose error, or throw a non-specific
-exception. Whenever it is not clear why an application call into Berkeley DB
-is failing, the first step is always to turn on verbose error messages,
-which will almost always explain the problem. See the
-<a href="../../ref/debug/runtime.html">Run-time error information</a>
-section of the Reference Guide for more information.</p>
-<hr size=1 noshade>
-<p><li><b>Multiple databases are being created in a single physical file and there
-is random database corruption.</b>
-<p>The databases do not share an underlying database cache. Databases that
-share a single physical file must almost always share an underlying
-database cache as well. See the <a href="../../ref/am/opensub.html">Opening multiple databases in a single file</a> section of the Reference
-Guide for more information.</p>
-<hr size=1 noshade>
-<p><li><b>There are random failures when creating a database environment, often
-associated with creating or initializing the shared memory regions that
-back the database environment.</b>
-<p>The filesystem in which the database environment is being created is an
-NFS or other remote filesystem. Database environments should not be
-created in NFS filesystems. See the <a href="../../ref/env/remote.html">Remote filesystem</a> section of the Reference Guide for more
-information.</p>
-<hr size=1 noshade>
-<p><li><b>There are core dumps or garbage returns from random Berkeley DB operations.</b>
-<p>The application is failing to zero out <a href="../../api_c/dbt_class.html">DBT</a> objects before
-calling Berkeley DB. Before using a <a href="../../api_c/dbt_class.html">DBT</a>, you must initialize all its
-elements to 0 and then set the ones you are using explicitly.</p>
-<p>Another reason for this symptom is the application may be using Berkeley DB
-handles in a free-threaded manner, without specifying the
-<a href="../../api_c/env_open.html#DB_THREAD">DB_THREAD</a> flag to the <a href="../../api_c/db_open.html">DB-&gt;open</a> or <a href="../../api_c/env_open.html">DB_ENV-&gt;open</a> methods.
-Any time you are sharing a handle across multiple threads, you must
-specify <a href="../../api_c/env_open.html#DB_THREAD">DB_THREAD</a> when you open that handle.</p>
-<p>Another reason for this symptom is the application is concurrently
-accessing the database, but not acquiring locks. The Berkeley DB Data Store product does
-no locking at all; the application must do its own serialization of
-access to the database to avoid corruption. The Berkeley DB Concurrent Data Store and Berkeley DB Transactional Data Store
-products do lock the database, but still require that locking be
-configured.</p>
-<hr size=1 noshade>
-<p><li><b>A transactional database environment locks up, and no threads of
-control are making progress.</b>
-<p>The most common cause of this failure is a thread of control exiting
-unexpectedly, while holding a Berkeley DB mutex or a read/write logical
-database lock. If a thread of control exits holding a data structure
-mutex, other threads of control will likely lock up fairly quickly,
-queued behind the mutex. If a thread of control exits holding a logical
-database lock, other threads of control may lock up over a long period
-of time, as they will not be blocked until they attempt to acquire the
-specific page for which a lock is not available. See the
-<a href="../../ref/lock/deaddbg.html">Deadlock debugging</a> section of the
-Reference Guide for more information on debugging deadlocks.</p>
-<p>Whenever a thread of control exits Berkeley DB holding a mutex or logical
-lock, all threads of control must exit the database environment, and
-database recovery must be performed. See the
-<a href="../../ref/transapp/app.html">Application structure</a> section of
-the Reference Guide for more information.</p>
-<p>Finally, the Berkeley DB API is not re-entrant, and it is usually unsafe for
-signal handlers to call the Berkeley DB API. See the
-<a href="../../ref/program/appsignals.html">Signal handling</a> section of
-the Reference Guide for more information.</p>
-<hr size=1 noshade>
-<p><li><b>Locks are accumulating, or threads and/or processes are deadlocking in
-a transactional environment, even though there is no concurrent access
-to the database.</b>
-<p>The application may have failed to close a cursor. Cursors retain locks
-between calls. Everywhere the application uses a cursor, the cursor
-should be explicitly closed as soon as possible after it is used.</p>
-<p>Another reason for this symptom is the application is not checking for
-<a href="../../ref/program/errorret.html#DB_LOCK_DEADLOCK">DB_LOCK_DEADLOCK</a> errors (or <a href="../../api_cxx/deadlock_class.html">DbDeadlockException</a>
-exceptions). Unless you are using the Berkeley DB Concurrent Data Store product, whenever there
-are multiple threads and/or processes concurrently accessing a database
-and at least one of them is writing the database, there is potential for
-deadlock.</p>
-<p>If deadlock can occur, applications must test for deadlock failures and
-abort the enclosing transaction, or locks will be left. See the
-<a href="../../ref/transapp/put.html">Recoverability and deadlock
-handling</a> section of the Reference Guide for more information.</p>
-<hr size=1 noshade>
-<p><li><b>A transactional database environment cannot be recovered or normal
-database operations fail with messages that "LSN" values are past
-the end of the log.</b>
-<p>The application may have removed all of its log files without resetting
-the database log sequence numbers (LSNs). Log files should never be
-removed unless explicitly authorized by the <a href="../../utility/db_archive.html">db_archive</a> utility
-or the <a href="../../api_c/log_archive.html">DB_ENV-&gt;log_archive</a> method. Note that those interfaces will never
-authorize removal of all existing log files.</p>
-<p>Another reason for this symptom is the application may have created a
-database file in one transactional environment and then moved it into
-another transactional environment. While it is possible to create
-databases in non-transactional environments (for example, when doing
-bulk database loads) and then move them into transactional environments,
-once a database has been used in a transactional environment, it cannot
-be moved to another environment without first resetting the database log
-sequence numbers.</p>
-<hr size=1 noshade>
-<p><li><b>A transactional application is seeing an inordinately high number of
-deadlocks.</b>
-<p>The application may be acquiring database objects in inconsistent
-orders; having threads of control always acquire objects in the
-same order will reduce the frequency of deadlocks.</p>
-<p>If you frequently read a piece of data, modify it and then write
-it, you may be inadvertently causing a large number of deadlocks. Try
-specifying the <a href="../../api_c/dbc_get.html#DB_RMW">DB_RMW</a> flag on your get calls.</p>
-<p>Or, if the application is doing a large number of updates in a small
-database, turning off Btree splits may help (see <a href="../../api_c/db_set_flags.html#DB_REVSPLITOFF">DB_REVSPLITOFF</a>
-for more information.)</p>
-<hr size=1 noshade>
-<p><li><b>Opening the database environment displays the following error:</b>
-<blockquote><pre>Log sequence error: page LSN # ######; previous LSN ## ######.</pre></blockquote>
-<p>A database update was made outside of a transaction. Check that your
-application passes a transaction handle to all opens and updates of
-transactionally protected databases. This error leaves the environment
-unrecoverable, and the databases must be dumped and reloaded.</p>
-</ol>
-<table width="100%"><tr><td><br></td><td align=right><a href="../debug/printlog.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../build_unix/intro.html"><img src="../../images/next.gif" alt="Next"></a>
-</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
-</body>
-</html>
diff --git a/db/docs/ref/debug/compile.html b/db/docs/ref/debug/compile.html
index d784970c6..208f41ebf 100644
--- a/db/docs/ref/debug/compile.html
+++ b/db/docs/ref/debug/compile.html
@@ -1,6 +1,5 @@
<!--$Id: compile.so,v 10.12 2001/03/13 20:39:46 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -40,6 +39,6 @@ amount.
</dl>
<table width="100%"><tr><td><br></td><td align=right><a href="../debug/intro.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../debug/runtime.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/debug/intro.html b/db/docs/ref/debug/intro.html
index 8e3bfbf78..a05c96166 100644
--- a/db/docs/ref/debug/intro.html
+++ b/db/docs/ref/debug/intro.html
@@ -1,10 +1,9 @@
-<!--$Id: intro.so,v 10.23 2006/09/20 20:07:21 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: intro.so,v 10.24 2006/11/13 18:05:01 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
-<title>Berkeley DB Reference Guide: Introduction</title>
+<title>Berkeley DB Reference Guide: Introduction to debugging</title>
<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
</head>
@@ -15,7 +14,7 @@
<td align=right><a href="../install/multiple.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../debug/compile.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
<p>
-<h3 align=center>Introduction</h3>
+<h3 align=center>Introduction to debugging</h3>
<p>Because Berkeley DB is an embedded library, debugging applications that use
Berkeley DB is both harder and easier than debugging a separate server.
Debugging can be harder because when a problem arises, it is not always
@@ -53,6 +52,6 @@ using was built and configured correctly.</p>
</dl>
<table width="100%"><tr><td><br></td><td align=right><a href="../install/multiple.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../debug/compile.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/debug/printlog.html b/db/docs/ref/debug/printlog.html
index 5b7417ef8..2240a98f6 100644
--- a/db/docs/ref/debug/printlog.html
+++ b/db/docs/ref/debug/printlog.html
@@ -1,6 +1,5 @@
-<!--$Id: printlog.so,v 10.48 2005/10/22 13:02:06 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: printlog.so,v 10.49 2007/07/10 16:54:17 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -11,7 +10,7 @@
<body bgcolor=white>
<table width="100%"><tr valign=top>
<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Debugging Applications</dl></h3></td>
-<td align=right><a href="../debug/runtime.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../debug/common.html"><img src="../../images/next.gif" alt="Next"></a>
+<td align=right><a href="../debug/runtime.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../build_brew/intro.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
<p>
<h3 align=center>Reviewing Berkeley DB log files</h3>
@@ -164,8 +163,8 @@ of the beginning of the sublog you want to extract, and <b>ef</b> and
<b>eo</b> represent the LSN of the end of the sublog you want to
extract:</p>
<blockquote><pre>awk -f range.awk START_FILE=sf START_OFFSET=so END_FILE=ef END_OFFSET=eo log_output</pre></blockquote>
-<table width="100%"><tr><td><br></td><td align=right><a href="../debug/runtime.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../debug/common.html"><img src="../../images/next.gif" alt="Next"></a>
+<table width="100%"><tr><td><br></td><td align=right><a href="../debug/runtime.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../build_brew/intro.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/debug/runtime.html b/db/docs/ref/debug/runtime.html
index f8b454210..55a03b08a 100644
--- a/db/docs/ref/debug/runtime.html
+++ b/db/docs/ref/debug/runtime.html
@@ -1,6 +1,5 @@
-<!--$Id: runtime.so,v 10.20 2003/10/18 19:15:59 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: runtime.so,v 10.21 2007/07/10 17:37:22 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -20,17 +19,17 @@
returned by Berkeley DB. In some cases, however, this value may be
insufficient to completely describe the cause of the error, especially
during initial application debugging.</p>
-<p>There are four methods intended to provide applications with additional
-run-time error information:
+<p>Most Berkeley DB errors will result in additional information being written
+to a standard file descriptor or output stream. Additionally, Berkeley DB can
+be configured to pass these verbose error messages to an application
+function. There are four methods intended to provide applications with
+additional error information:
<a href="../../api_c/env_set_errcall.html">DB_ENV-&gt;set_errcall</a>, <a href="../../api_c/env_set_errfile.html">DB_ENV-&gt;set_errfile</a>,
<a href="../../api_c/env_set_errpfx.html">DB_ENV-&gt;set_errpfx</a>, and <a href="../../api_c/env_set_verbose.html">DB_ENV-&gt;set_verbose</a>.</p>
-<p>If the environment is configured with these methods, many Berkeley DB errors
-will result in additional information being written to a file or passed
-as an argument to an application function.</p>
<p>The Berkeley DB error-reporting facilities do not slow performance or
significantly increase application size, and may be run during normal
operation as well as during debugging. Where possible, we recommend
-that these options always be configured and the output saved in the
+these options always be configured and the output saved in the
filesystem. We have found that this often saves time when debugging
installation or other system-integration problems.</p>
<p>In addition, there are three methods to assist applications in
@@ -43,6 +42,6 @@ described previously to format and display error messages to appropriate
output devices.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../debug/compile.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../debug/printlog.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/distrib/layout.html b/db/docs/ref/distrib/layout.html
index 97ed1248a..a7a9039ce 100644
--- a/db/docs/ref/distrib/layout.html
+++ b/db/docs/ref/distrib/layout.html
@@ -1,6 +1,5 @@
-<!--$Id: layout.so,v 10.45 2006/07/12 18:54:37 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: layout.so,v 10.49 2007/07/06 16:37:23 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -21,8 +20,10 @@
<tr><td>LICENSE</td><td>Berkeley DB License</td></tr>
<tr><td>btree</td><td>Btree access method source code</td></tr>
<tr><td>build_brew</td><td>BREW build directory</td></tr>
+<tr><td>build_s60</td><td>S60 build directory</td></tr>
<tr><td>build_unix</td><td>UNIX build directory</td></tr>
<tr><td>build_vxworks</td><td>VxWorks build directory.</td></tr>
+<tr><td>build_wince</td><td>Windows CE build directory.</td></tr>
<tr><td>build_windows</td><td>Windows build directory.</td></tr>
<tr><td>clib</td><td>C library replacement functions</td></tr>
<tr><td>common</td><td>Common Berkeley DB functions</td></tr>
@@ -32,6 +33,7 @@
<tr><td>db185</td><td>Berkeley DB version 1.85 compatibility API</td></tr>
<tr><td>db_archive</td><td>The db_archive utility</td></tr>
<tr><td>db_checkpoint</td><td>The db_checkpoint utility</td></tr>
+<tr><td>db_codegen</td><td>The db_codegen utility</td></tr>
<tr><td>db_deadlock</td><td>The db_deadlock utility</td></tr>
<tr><td>db_dump</td><td>The db_dump utility</td></tr>
<tr><td>db_dump185</td><td>The db_dump185 utility</td></tr>
@@ -48,6 +50,7 @@
<tr><td>dbreg</td><td>Berkeley DB database handle logging support</td></tr>
<tr><td>dist</td><td>Berkeley DB administration/distribution tools</td></tr>
<tr><td>docs</td><td>Documentation</td></tr>
+<tr><td>docs_src</td><td>API and Reference Guide documentation sources</td></tr>
<tr><td>env</td><td>Berkeley DB environment support</td></tr>
<tr><td>examples_c</td><td>C API example programs</td></tr>
<tr><td>examples_cxx</td><td>C++ API example programs</td></tr>
@@ -65,6 +68,8 @@
<tr><td>mutex</td><td>Mutexes</td></tr>
<tr><td>os</td><td>POSIX 1003.1 operating-system specific functionality</td></tr>
<tr><td>os_brew</td><td>BREW operating-system specific functionality</td></tr>
+<tr><td>os_qnx</td><td>QNX operating-system specific functionality</td></tr>
+<tr><td>os_s60</td><td>S60 operating-system specific functionality</td></tr>
<tr><td>os_vxworks</td><td>VxWorks operating-system specific functionality</td></tr>
<tr><td>os_windows</td><td>Windows operating-system specific functionality</td></tr>
<tr><td>perl</td><td>DB_File and BerkeleyDB Perl modules</td></tr>
@@ -77,11 +82,12 @@
<tr><td>sequence</td><td>Sequence source code</td></tr>
<tr><td>tcl</td><td>Tcl API</td></tr>
<tr><td>test</td><td>Test suite</td></tr>
+<tr><td>test_micro</td><td>Micro-benchmark test suite</td></tr>
<tr><td>txn</td><td>Transaction manager</td></tr>
<tr><td>xa</td><td>X/Open Distributed Transaction Processing XA support</td></tr>
</table>
<table width="100%"><tr><td><br></td><td align=right><a href="../distrib/port.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../refs/refs.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/distrib/port.html b/db/docs/ref/distrib/port.html
index 048f615ad..8cd1d89ab 100644
--- a/db/docs/ref/distrib/port.html
+++ b/db/docs/ref/distrib/port.html
@@ -1,6 +1,5 @@
<!--$Id: port.so,v 10.5 2006/08/24 16:32:28 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -104,6 +103,6 @@ have any porting questions, just let us know, and we will be happy to
answer them.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../test/faq.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../distrib/layout.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/dumpload/format.html b/db/docs/ref/dumpload/format.html
index c6b010cbc..e0902768b 100644
--- a/db/docs/ref/dumpload/format.html
+++ b/db/docs/ref/dumpload/format.html
@@ -1,6 +1,5 @@
<!--$Id: format.so,v 10.16 2001/03/13 20:39:47 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -65,6 +64,6 @@ DATA=END.</p>
will repeat; that is, a new set of headers and a new set of data items.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../dumpload/utility.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../dumpload/text.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/dumpload/text.html b/db/docs/ref/dumpload/text.html
index 19572d13b..e9fff5ef6 100644
--- a/db/docs/ref/dumpload/text.html
+++ b/db/docs/ref/dumpload/text.html
@@ -1,6 +1,5 @@
<!--$Id: text.so,v 10.15 2001/03/13 20:39:47 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -28,6 +27,6 @@ name as the key item and the entire password entry as the data item:</p>
to avoid interpretation as escape characters by <a href="../../utility/db_load.html">db_load</a>.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../dumpload/format.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../install/file.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/dumpload/utility.html b/db/docs/ref/dumpload/utility.html
index c8f317aaa..0c01e800a 100644
--- a/db/docs/ref/dumpload/utility.html
+++ b/db/docs/ref/dumpload/utility.html
@@ -1,6 +1,5 @@
<!--$Id: utility.so,v 10.18 2004/10/05 16:44:33 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -41,6 +40,6 @@ modify the sources for the <a href="../../utility/db_load.html">db_load</a> util
using the correct hash, prefix, and comparison functions.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../ext/php.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../dumpload/format.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/env/create.html b/db/docs/ref/env/create.html
index 2dc41558b..fe4346062 100644
--- a/db/docs/ref/env/create.html
+++ b/db/docs/ref/env/create.html
@@ -1,6 +1,5 @@
<!--$Id: create.so,v 10.30 2005/09/23 16:22:42 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -124,6 +123,6 @@ err: (void)dbenv-&gt;close(dbenv, 0);
}</pre></blockquote>
<table width="100%"><tr><td><br></td><td align=right><a href="../env/intro.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../env/open.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/env/db_config.html b/db/docs/ref/env/db_config.html
index 7c9067e4d..80f3ce62a 100644
--- a/db/docs/ref/env/db_config.html
+++ b/db/docs/ref/env/db_config.html
@@ -1,6 +1,5 @@
<!--$Id: db_config.so,v 10.3 2004/11/18 01:57:39 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -41,6 +40,6 @@ compiled-in application cache size to a size more appropriate for a
specific machine.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../env/error.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../env/naming.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/env/encrypt.html b/db/docs/ref/env/encrypt.html
index b09a817f3..65d80396e 100644
--- a/db/docs/ref/env/encrypt.html
+++ b/db/docs/ref/env/encrypt.html
@@ -1,6 +1,5 @@
-<!--$Id: encrypt.so,v 11.12 2006/08/24 16:32:28 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: encrypt.so,v 11.13 2007/03/27 14:20:56 sue Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -47,7 +46,7 @@ Applications wanting to provide a finer granularity of database access
must either use multiple database environments or implement additional
access controls outside of Berkeley DB.</p>
<p>The only encrypted parts of a database environment are its databases
-and its log files. Specifically, the <a href="../../ref/env/region.html">Shared memory regions</a> supporting the database environment are not
+and its log files. Specifically, the <a href="../../ref/env/region.html">shared memory regions</a> supporting the database environment are not
encrypted. For this reason, it may be possible for an attacker to read
some or all of an encrypted database by reading the on-disk files that
back these shared memory regions. To prevent such attacks, applications
@@ -70,7 +69,7 @@ records. Additionally, database internal page header fields are not
encrypted. These page header fields includes information such as the
page's <a href="../../api_c/lsn_class.html">DB_LSN</a>, number, and position in the database's sort
order.</p>
-<p>Log records distributed by replication master to replicated clients are
+<p>Log records distributed by a replication master to replicated clients are
transmitted to the clients in unencrypted form. If encryption is
desired in a replicated application, the use of a secure transport
is strongly suggested.</p>
@@ -87,6 +86,6 @@ Mersenne Twister code into Berkeley DB.
</ul>
<table width="100%"><tr><td><br></td><td align=right><a href="../env/security.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../env/remote.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/env/error.html b/db/docs/ref/env/error.html
index 98001df5f..8bc968b69 100644
--- a/db/docs/ref/env/error.html
+++ b/db/docs/ref/env/error.html
@@ -1,6 +1,5 @@
<!--$Id: error.so,v 10.20 2003/10/18 19:16:00 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -53,6 +52,6 @@ a permission error, the error messages shown would look like this:</p>
my_app: contact your system administrator: session ID was 2</pre></blockquote>
<table width="100%"><tr><td><br></td><td align=right><a href="../env/open.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../env/db_config.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/env/faq.html b/db/docs/ref/env/faq.html
index 4a7daa9b8..cdd95a692 100644
--- a/db/docs/ref/env/faq.html
+++ b/db/docs/ref/env/faq.html
@@ -1,6 +1,5 @@
<!--$Id: faq.so,v 10.6 2006/05/01 15:32:01 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -46,6 +45,6 @@ data members or methods.</p>
</ol>
<table width="100%"><tr><td><br></td><td align=right><a href="../env/remote.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../cam/intro.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/env/intro.html b/db/docs/ref/env/intro.html
index d00c06b82..43ab73d86 100644
--- a/db/docs/ref/env/intro.html
+++ b/db/docs/ref/env/intro.html
@@ -1,6 +1,5 @@
<!--$Id: intro.so,v 10.32 2003/04/15 16:48:42 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -88,6 +87,6 @@ if consistency is to be maintained between them.</p>
</table>
<table width="100%"><tr><td><br></td><td align=right><a href="../arch/utilities.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../env/create.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/env/naming.html b/db/docs/ref/env/naming.html
index 2b2aa9dbc..add4083e0 100644
--- a/db/docs/ref/env/naming.html
+++ b/db/docs/ref/env/naming.html
@@ -1,6 +1,5 @@
<!--$Id: naming.so,v 10.50 2004/08/13 03:39:00 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -122,6 +121,6 @@ dbenv-&gt;set_data_dir(dbenv, "data1");
dbenv-&gt;open(dbenv, "/a/database", flags, mode);</pre></blockquote>
<table width="100%"><tr><td><br></td><td align=right><a href="../env/db_config.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../env/region.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/env/open.html b/db/docs/ref/env/open.html
index 2aed587a9..eb2ddc461 100644
--- a/db/docs/ref/env/open.html
+++ b/db/docs/ref/env/open.html
@@ -1,6 +1,5 @@
<!--$Id: open.so,v 10.19 2003/10/18 19:16:01 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -85,6 +84,6 @@ err: if (dbp2 != NULL)
}</pre></blockquote>
<table width="100%"><tr><td><br></td><td align=right><a href="../env/create.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../env/error.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/env/region.html b/db/docs/ref/env/region.html
index 554fba4a5..961f0efe5 100644
--- a/db/docs/ref/env/region.html
+++ b/db/docs/ref/env/region.html
@@ -1,6 +1,5 @@
<!--$Id: region.so,v 10.33 2005/06/11 12:32:49 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -75,6 +74,6 @@ shared memory that is being used by the environment.</p>
displayed using the <b>-e</b> option to the <a href="../../utility/db_stat.html">db_stat</a> utility.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../env/naming.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../env/security.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/env/remote.html b/db/docs/ref/env/remote.html
index 1573e319b..399596849 100644
--- a/db/docs/ref/env/remote.html
+++ b/db/docs/ref/env/remote.html
@@ -1,6 +1,5 @@
<!--$Id: remote.so,v 11.12 2005/06/24 05:04:09 mjc Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -60,6 +59,6 @@ Linux releases do not suffer from this problem.
</dl>
<table width="100%"><tr><td><br></td><td align=right><a href="../env/encrypt.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../env/faq.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/env/security.html b/db/docs/ref/env/security.html
index 3e3c7e682..6c644c080 100644
--- a/db/docs/ref/env/security.html
+++ b/db/docs/ref/env/security.html
@@ -1,6 +1,5 @@
<!--$Id: security.so,v 10.17 2002/02/04 17:52:38 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -51,6 +50,6 @@ known permissions.
</dl>
<table width="100%"><tr><td><br></td><td align=right><a href="../env/region.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../env/encrypt.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/ext/mod.html b/db/docs/ref/ext/mod.html
index faa05afa5..504aa6526 100644
--- a/db/docs/ref/ext/mod.html
+++ b/db/docs/ref/ext/mod.html
@@ -1,6 +1,5 @@
-<!--$Id: mod.so,v 10.5 2006/08/24 16:32:29 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: mod.so,v 10.6 2007/07/07 14:45:24 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -57,10 +56,13 @@ following:</p>
<p>which takes identical arguments to <a href="../../api_c/db_class.html">db_create</a>.</p>
<p>Otherwise the API is completely consistent with the standard Berkeley DB
API.</p>
-<p>The mod_db4 module requires the Berkeley DB library be compiled with C++ extensions
-and the libmm library. Information and source code for the libmm library can
-be found at
-<a href="http://www.ossp.org/pkg/lib/mm/">http://www.ossp.org/pkg/lib/mm/</a></p>
+<p>The mod_db4 module requires the Berkeley DB library be compiled with C++
+extensions and the MM library. (The MM library provides an abstraction
+layer which allows related processes to share data easily. On systems
+where shared memory or other inter-process communication mechanisms are
+not available, the MM library emulates them using temporary files. MM
+is used in several operating systems to provide shared memory pools to
+Apache modules.)</p>
<p>To build this apache module, perform the following steps:</p>
<blockquote><pre>% ./configure --with-apxs=[path to the apxs utility] \
--with-db4=[Berkeley DB library installation directory] \
@@ -71,6 +73,6 @@ be found at
documented in $APACHE_INCLUDEDIR/mod_db4_export.h.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../tcl/faq.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../ext/perl.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/ext/perl.html b/db/docs/ref/ext/perl.html
index 1b07011ad..bfeb098fc 100644
--- a/db/docs/ref/ext/perl.html
+++ b/db/docs/ref/ext/perl.html
@@ -1,6 +1,5 @@
-<!--$Id: perl.so,v 10.28 2006/08/24 16:32:30 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: perl.so,v 10.29 2006/12/05 19:12:12 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -33,11 +32,11 @@ tree, in the subdirectories <b>perl.BerkeleyDB</b> and
<b>perl.DB_File</b>. Each of those directories contains a
<b>README</b> file with instructions on installing and using those
modules.</p>
-<p>The Perl interface is not maintained by Oracle Corporation. Questions
-about the DB_File and BerkeleyDB modules are best asked on the Usenet
-newsgroup comp.lang.perl.modules.</p>
+<p>The Perl interface is not maintained by Oracle. Questions about the
+DB_File and BerkeleyDB modules are best asked on the Usenet newsgroup
+comp.lang.perl.modules.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../ext/mod.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../ext/php.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/ext/php.html b/db/docs/ref/ext/php.html
index aff485133..af5547c78 100644
--- a/db/docs/ref/ext/php.html
+++ b/db/docs/ref/ext/php.html
@@ -1,6 +1,5 @@
<!--$Id: php.so,v 10.3 2004/10/18 17:08:43 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -97,6 +96,6 @@ mod_db4 framework, perform the following steps:</p>
<blockquote><pre>extension=db4.so</pre></blockquote>
<table width="100%"><tr><td><br></td><td align=right><a href="../ext/perl.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../dumpload/utility.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/install/file.html b/db/docs/ref/install/file.html
index ff82884b9..c15a081a6 100644
--- a/db/docs/ref/install/file.html
+++ b/db/docs/ref/install/file.html
@@ -1,6 +1,5 @@
<!--$Id: file.so,v 10.19 2001/04/10 20:44:04 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -33,6 +32,6 @@ Berkeley DB distribution. This <a href="magic.txt">magic.txt</a> information
is correct for both big-endian and little-endian architectures.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../dumpload/text.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../install/multiple.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/install/multiple.html b/db/docs/ref/install/multiple.html
index 8889ef81b..789f44a35 100644
--- a/db/docs/ref/install/multiple.html
+++ b/db/docs/ref/install/multiple.html
@@ -1,6 +1,5 @@
<!--$Id: multiple.so,v 10.4 2004/06/10 16:39:28 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -50,6 +49,6 @@ you do not unexpectedly collide with other application code or a library
already installed on the target system.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../install/file.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../debug/intro.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/intro/data.html b/db/docs/ref/intro/data.html
index e09ef9d37..f77c75bb9 100644
--- a/db/docs/ref/intro/data.html
+++ b/db/docs/ref/intro/data.html
@@ -1,6 +1,5 @@
<!--$Id: data.so,v 10.2 2006/08/25 23:24:38 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -50,6 +49,6 @@ commercially-available database systems. The problem is selecting the
one that best solves the problems that their applications face.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../intro/terrain.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/intro/dbis.html b/db/docs/ref/intro/dbis.html
index 57fd0ba4d..4f09f686f 100644
--- a/db/docs/ref/intro/dbis.html
+++ b/db/docs/ref/intro/dbis.html
@@ -1,6 +1,5 @@
<!--$Id: dbis.so,v 10.11 2006/09/19 16:21:42 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -153,6 +152,6 @@ increasingly important feature in a world using CGI scripts to deliver
HTML.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../intro/terrain.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../intro/dbisnot.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/intro/dbisnot.html b/db/docs/ref/intro/dbisnot.html
index b9a6ccb6e..40508483d 100644
--- a/db/docs/ref/intro/dbisnot.html
+++ b/db/docs/ref/intro/dbisnot.html
@@ -1,6 +1,5 @@
<!--$Id: dbisnot.so,v 10.8 2002/08/23 20:36:50 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -136,6 +135,6 @@ servers make calls through the Berkeley DB API to find records and return them
to clients. On its own, however, Berkeley DB is not a server.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../intro/dbis.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../intro/need.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/intro/distrib.html b/db/docs/ref/intro/distrib.html
index cc9eb45de..bdb1bf84f 100644
--- a/db/docs/ref/intro/distrib.html
+++ b/db/docs/ref/intro/distrib.html
@@ -1,6 +1,5 @@
<!--$Id: distrib.so,v 10.18 2006/08/24 16:32:30 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -23,6 +22,6 @@ number of platforms. The distribution does not include hard-copy
documentation.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../intro/what.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../intro/where.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/intro/need.html b/db/docs/ref/intro/need.html
index b0a9cf64e..1a42293dc 100644
--- a/db/docs/ref/intro/need.html
+++ b/db/docs/ref/intro/need.html
@@ -1,6 +1,5 @@
<!--$Id: need.so,v 10.2 2000/12/08 23:59:06 mao Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -56,6 +55,6 @@ that set of features, then Berkeley DB is almost certainly the best choice
for you.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../intro/dbisnot.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../intro/what.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/intro/products.html b/db/docs/ref/intro/products.html
index 337cb875f..f273d2ef3 100644
--- a/db/docs/ref/intro/products.html
+++ b/db/docs/ref/intro/products.html
@@ -1,6 +1,5 @@
-<!--$Id: products.so,v 10.19 2006/08/24 16:32:30 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: products.so,v 10.20 2006/12/05 19:12:12 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -16,20 +15,20 @@
</td></tr></table>
<p>
<h3 align=center>The Berkeley DB products</h3>
-<p>Oracle Corporation licenses four different products that use the Berkeley DB
-technology. Each product offers a distinct level of database support.
-It is not possible to mix-and-match products, that is, each application
-or group of applications must use the same Berkeley DB product.</p>
+<p>Oracle licenses four different products that use the Berkeley DB technology.
+Each product offers a distinct level of database support. It is not
+possible to mix-and-match products, that is, each application or group
+of applications must use the same Berkeley DB product.</p>
<p>All four products are included in the single Open Source distribution
-of Berkeley DB from Oracle Corporation, and building that distribution
-automatically builds all four products. Each product adds new
-interfaces and services to the product that precedes it in the list.
-As a result, developers can download Berkeley DB and build an application that
-does only single-user, read-only database access, and easily add support
-later for more users and more complex database access patterns.</p>
+of Berkeley DB from Oracle, and building that distribution automatically
+builds all four products. Each product adds new interfaces and services
+to the product that precedes it in the list. As a result, developers
+can download Berkeley DB and build an application that does only single-user,
+read-only database access, and easily add support later for more users
+and more complex database access patterns.</p>
<p>Users who distribute Berkeley DB must ensure that they are licensed for the
-Berkeley DB interfaces they use. Information on licensing is available
-from Oracle Corporation.</p>
+Berkeley DB interfaces they use. Information on licensing is available from
+Oracle.</p>
<h3>Berkeley DB Data Store</h3>
<p>The Berkeley DB Data Store product is an embeddable, high-performance data store. It
supports multiple concurrent threads of control (including multiple
@@ -65,6 +64,6 @@ the replicas takes over as the new master system, and distributes
updates to the remaining replicas.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../intro/where.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../am_conf/intro.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/intro/terrain.html b/db/docs/ref/intro/terrain.html
index b28366fae..f86053a88 100644
--- a/db/docs/ref/intro/terrain.html
+++ b/db/docs/ref/intro/terrain.html
@@ -1,6 +1,5 @@
<!--$Id: terrain.so,v 10.4 2001/05/05 01:49:26 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -244,6 +243,6 @@ application creates new opportunity for installation mistakes and
run-time problems.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../intro/data.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../intro/dbis.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/intro/what.html b/db/docs/ref/intro/what.html
index 2952aa86c..bd6cb290f 100644
--- a/db/docs/ref/intro/what.html
+++ b/db/docs/ref/intro/what.html
@@ -1,6 +1,5 @@
<!--$Id: what.so,v 10.23 2001/03/01 15:58:06 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -49,6 +48,6 @@ Berkeley DB access method. As a result, developers can integrate non-database
objects into their transactional applications using Berkeley DB.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../intro/need.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../intro/distrib.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/intro/where.html b/db/docs/ref/intro/where.html
index def788fd4..3d41cdcc3 100644
--- a/db/docs/ref/intro/where.html
+++ b/db/docs/ref/intro/where.html
@@ -1,6 +1,5 @@
<!--$Id: where.so,v 10.32 2003/05/26 16:04:06 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -40,6 +39,6 @@ Windows/NT, Windows/2000 and Windows/XP, via the Microsoft Visual C++
for more information.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../intro/distrib.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../intro/products.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/java/compat.html b/db/docs/ref/java/compat.html
index 69fb9ca11..b030d3ae2 100644
--- a/db/docs/ref/java/compat.html
+++ b/db/docs/ref/java/compat.html
@@ -1,6 +1,5 @@
-<!--$Id: compat.so,v 10.14 2003/02/10 14:32:10 gburd Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: compat.so,v 10.16 2007/07/06 00:22:53 mjc Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -16,20 +15,11 @@
</td></tr></table>
<p>
<h3 align=center>Compatibility</h3>
-<p>The Berkeley DB Java API has been tested with the
-<a href="http://www.javasoft.com">Sun Microsystems JDK 1.1.3</a> on SunOS
-5.5; and Sun's JDK 1.1.7, JDK 1.2.2, JDK 1.3.0 and JDK 1.3.1 on Linux and
-Windows/NT. It should work with any JDK 1.1-, 1.2-, or 1.3-compatible
-environment (the latter three are known as Java 2). IBM's VM 1.3.0 has
-also been tested on Linux.</p>
-<p>The primary requirement of the Berkeley DB Java API is that the target Java
-environment must support JNI (Java Native Interface) rather than another
-method for allowing native C/C++ code to interface to Java. The JNI was
-new in JDK 1.1, but is the most likely interface to be implemented
-across multiple platforms. However, using the JNI means that Berkeley DB will
-not be compatible with Microsoft Visual J++.</p>
+<p>The Berkeley DB Java API has been tested with the Sun Microsystem's JDK 1.4
+and Java 5 on Linux, Windows and OS X. It should work with any JDK
+1.4- or 5-compatible environment.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../java/conf.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../java/program.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/java/conf.html b/db/docs/ref/java/conf.html
index b3ffb485a..33ca661c3 100644
--- a/db/docs/ref/java/conf.html
+++ b/db/docs/ref/java/conf.html
@@ -1,6 +1,5 @@
<!--$Id: conf.so,v 10.30 2005/12/01 03:18:51 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -100,6 +99,6 @@ data items. This is a simple check to make sure the fundamental
configuration is working correctly.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../am_misc/faq.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../java/compat.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/java/faq.html b/db/docs/ref/java/faq.html
index a5dd581e9..8a2157f84 100644
--- a/db/docs/ref/java/faq.html
+++ b/db/docs/ref/java/faq.html
@@ -1,6 +1,5 @@
-<!--$Id: faq.so,v 1.15 2006/08/08 15:35:36 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: faq.so,v 1.16 2007/07/11 11:13:30 mjc Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -19,11 +18,11 @@
<ol>
<p><li><b>On what platforms is the Berkeley DB Java API supported?</b>
<p>All platforms supported by Berkeley DB that have a JVM compatible with J2SE
-1.3.1 or above.</p>
+1.4 or above.</p>
<p><li><b>How does the Berkeley DB Java API relate to the J2EE standard?</b>
<p>The Berkeley DB Java API does not currently implement any part of the J2EE
standard. That said, it does implement the implicit standard for Java
-<a href="http://java.sun.com/j2se/1.3/docs/guide/collections/">Java Collections</a>. The concept of a transaction exists in several
+<a href="http://java.sun.com/j2se/1.5.0/docs/guide/collections/">Java Collections</a>. The concept of a transaction exists in several
Java packages (J2EE, XA, JINI to name a few). Support for these APIs
will be added based on demand in future versions of Berkeley DB.</p>
<p><li><b>How should I incorporate db.jar and the db native library into
@@ -90,6 +89,6 @@ occur.</p>
</ol>
<table width="100%"><tr><td><br></td><td align=right><a href="../java/program.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../arch/bigpic.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/java/program.html b/db/docs/ref/java/program.html
index f2c60f3c4..20253b368 100644
--- a/db/docs/ref/java/program.html
+++ b/db/docs/ref/java/program.html
@@ -1,6 +1,5 @@
<!--$Id: program.so,v 10.35 2004/09/10 13:04:01 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -51,10 +50,10 @@ thrown when a deadlock would occur.</p>
subclass of <a href="../../java/com/sleepycat/db/DatabaseException.html">DatabaseException</a>, is thrown when
there is an error that requires a recovery of the database using
<a href="../../utility/db_recover.html">db_recover</a>.</p>
-<p>An object of type <a href="http://java.sun.com/j2se/1.3/docs/api/java/lang/IllegalArgumentException.html">IllegalArgumentException</a>
+<p>An object of type <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html">IllegalArgumentException</a>
a standard Java Language exception, is thrown when there is an error in
method arguments.</p>
-<p>An object of type <a href="http://java.sun.com/j2se/1.3/docs/api/java/lang/OutOfMemoryError.html">OutOfMemoryError</a> is thrown
+<p>An object of type <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/OutOfMemoryError.html">OutOfMemoryError</a> is thrown
when the system cannot provide enough memory to complete the operation
(the ENOMEM system error on UNIX).</p>
<p><li>If there are embedded nulls in the <b>curslist</b> argument for
@@ -70,6 +69,6 @@ Java Bug Database).
</ol>
<table width="100%"><tr><td><br></td><td align=right><a href="../java/compat.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../java/faq.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/lock/am_conv.html b/db/docs/ref/lock/am_conv.html
index 24069516d..cb890bf89 100644
--- a/db/docs/ref/lock/am_conv.html
+++ b/db/docs/ref/lock/am_conv.html
@@ -1,6 +1,5 @@
<!--$Id: am_conv.so,v 10.24 2003/04/02 16:15:32 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -42,9 +41,9 @@ lock object with a length different from the values used by Berkeley DB.</p>
<p>All the access methods other than Queue use standard read/write locks
in a simple multiple-reader/single writer page-locking scheme. An
operation that returns data (for example, <a href="../../api_c/db_get.html">DB-&gt;get</a> or
-<a href="../../api_c/dbc_get.html">DBcursor-&gt;c_get</a>) obtains a read lock on all the pages accessed while
+<a href="../../api_c/dbc_get.html">DBcursor-&gt;get</a>) obtains a read lock on all the pages accessed while
locating the requested record. When an update operation is requested
-(for example, <a href="../../api_c/db_put.html">DB-&gt;put</a> or <a href="../../api_c/dbc_del.html">DBcursor-&gt;c_del</a>), the page containing
+(for example, <a href="../../api_c/db_put.html">DB-&gt;put</a> or <a href="../../api_c/dbc_del.html">DBcursor-&gt;del</a>), the page containing
the updated (or new) data is write-locked. As read-modify-write cycles
are quite common and are deadlock-prone under normal circumstances, the
Berkeley DB interfaces allow the application to specify the <a href="../../api_c/dbc_get.html#DB_RMW">DB_RMW</a>
@@ -105,7 +104,7 @@ First, they may be performed within a transaction, in which case all
operations lock on behalf of the designated transaction. Second, they
may be performed using a local <a href="../../api_c/db_class.html">DB</a> handle, although, as
<a href="../../api_c/db_open.html">DB-&gt;open</a> operations are relatively slow, this may not be a good
-idea. Finally, the <a href="../../api_c/dbc_dup.html">DBcursor-&gt;c_dup</a> function duplicates a cursor, using
+idea. Finally, the <a href="../../api_c/dbc_dup.html">DBcursor-&gt;dup</a> function duplicates a cursor, using
the same locker ID as the originating cursor. There is no way to
achieve this duplication functionality through the <a href="../../api_c/db_class.html">DB</a> handle
calls, but any <a href="../../api_c/db_class.html">DB</a> call can be implemented by one or more calls
@@ -119,6 +118,6 @@ span threads of control, so the library knows that two cursors in the same
transaction cannot modify the database concurrently.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../lock/cam_conv.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../lock/nondb.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/lock/cam_conv.html b/db/docs/ref/lock/cam_conv.html
index 6fd281b69..4681d988c 100644
--- a/db/docs/ref/lock/cam_conv.html
+++ b/db/docs/ref/lock/cam_conv.html
@@ -1,6 +1,5 @@
<!--$Id: cam_conv.so,v 10.14 2003/10/18 19:16:02 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -49,6 +48,6 @@ already locked with a READ lock.
</ol>
<table width="100%"><tr><td><br></td><td align=right><a href="../lock/twopl.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../lock/am_conv.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/lock/config.html b/db/docs/ref/lock/config.html
index adbc37a5d..eea9896c8 100644
--- a/db/docs/ref/lock/config.html
+++ b/db/docs/ref/lock/config.html
@@ -1,6 +1,5 @@
<!--$Id: config.so,v 10.21 2003/10/18 19:16:02 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -39,6 +38,6 @@ locking conflicts matrix. This is an advanced configuration option,
and is almost never necessary.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../lock/intro.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../lock/max.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/lock/dead.html b/db/docs/ref/lock/dead.html
index a053931de..f6a17d042 100644
--- a/db/docs/ref/lock/dead.html
+++ b/db/docs/ref/lock/dead.html
@@ -1,6 +1,5 @@
<!--$Id: dead.so,v 10.21 2005/12/02 17:27:50 alanb Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -79,6 +78,6 @@ operations block temporarily on locks but are soon able to proceed,
automatic detection can decrease performance.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../lock/stdmode.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../lock/timeout.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/lock/deaddbg.html b/db/docs/ref/lock/deaddbg.html
index 2f2e82db2..5ad551b89 100644
--- a/db/docs/ref/lock/deaddbg.html
+++ b/db/docs/ref/lock/deaddbg.html
@@ -1,6 +1,5 @@
<!--$Id: deaddbg.so,v 10.5 2005/12/02 17:27:50 alanb Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -136,6 +135,6 @@ progress, one of them will have to be killed in order to resolve the
deadlock.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../lock/timeout.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../lock/page.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/lock/intro.html b/db/docs/ref/lock/intro.html
index ece8be812..7ab9493c4 100644
--- a/db/docs/ref/lock/intro.html
+++ b/db/docs/ref/lock/intro.html
@@ -1,10 +1,9 @@
-<!--$Id: intro.so,v 10.26 2003/10/18 19:16:02 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: intro.so,v 10.27 2006/11/13 18:05:02 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
-<title>Berkeley DB Reference Guide: Berkeley DB and locking</title>
+<title>Berkeley DB Reference Guide: Introduction to the locking subsystem</title>
<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
</head>
@@ -15,7 +14,7 @@
<td align=right><a href="../program/faq.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../lock/config.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
<p>
-<h3 align=center>Berkeley DB and locking</h3>
+<h3 align=center>Introduction to the locking subsystem</h3>
<p>The locking subsystem provides interprocess and intraprocess concurrency
control mechanisms. Although the lock system is used extensively by
the Berkeley DB access methods and transaction system, it may also be used as
@@ -107,6 +106,6 @@ the lock subsystem. It is the programmatic interface used by the
</table>
<table width="100%"><tr><td><br></td><td align=right><a href="../program/faq.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../lock/config.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/lock/max.html b/db/docs/ref/lock/max.html
index 83c95d2b7..bb8a64bed 100644
--- a/db/docs/ref/lock/max.html
+++ b/db/docs/ref/lock/max.html
@@ -1,6 +1,5 @@
<!--$Id: max.so,v 10.11 2006/01/05 16:51:59 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -99,6 +98,6 @@ applications are unlikely to actually need that many locks. Reviewing
the Lock subsystem statistics is the best way to determine this value.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../lock/config.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../lock/stdmode.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/lock/nondb.html b/db/docs/ref/lock/nondb.html
index 461ad1476..66352b302 100644
--- a/db/docs/ref/lock/nondb.html
+++ b/db/docs/ref/lock/nondb.html
@@ -1,6 +1,5 @@
<!--$Id: nondb.so,v 10.15 2001/05/22 19:39:31 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -46,6 +45,6 @@ be post-processed into a human-readable schedule of conference room
use.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../lock/am_conv.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../log/intro.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/lock/notxn.html b/db/docs/ref/lock/notxn.html
index 36ec06c35..d4398ad27 100644
--- a/db/docs/ref/lock/notxn.html
+++ b/db/docs/ref/lock/notxn.html
@@ -1,6 +1,5 @@
<!--$Id: notxn.so,v 10.15 2001/05/22 19:39:31 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -42,6 +41,6 @@ concurrent access, but not transactions, are more safely implemented
using the Berkeley DB Concurrent Data Store Product.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../lock/page.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../lock/twopl.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/lock/page.html b/db/docs/ref/lock/page.html
index b43754850..9bbf4c7ab 100644
--- a/db/docs/ref/lock/page.html
+++ b/db/docs/ref/lock/page.html
@@ -1,6 +1,5 @@
<!--$Id: page.so,v 10.19 2002/06/01 23:42:12 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -67,6 +66,6 @@ Therefore, two conflicting threads of control cannot access the same
duplicate set simultaneously.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../lock/deaddbg.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../lock/notxn.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/lock/stdmode.html b/db/docs/ref/lock/stdmode.html
index 7cc949bba..3906bbac4 100644
--- a/db/docs/ref/lock/stdmode.html
+++ b/db/docs/ref/lock/stdmode.html
@@ -1,6 +1,5 @@
<!--$Id: stdmode.so,v 10.26 2001/05/22 19:39:32 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -54,6 +53,6 @@ new request for either a read or write lock would be denied.
</dl>
<table width="100%"><tr><td><br></td><td align=right><a href="../lock/max.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../lock/dead.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/lock/timeout.html b/db/docs/ref/lock/timeout.html
index 5f41163cf..ff6e71c60 100644
--- a/db/docs/ref/lock/timeout.html
+++ b/db/docs/ref/lock/timeout.html
@@ -1,6 +1,5 @@
<!--$Id: timeout.so,v 1.9 2005/12/02 17:27:49 alanb Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -65,6 +64,6 @@ and the specific lock described will be timed out if it blocks longer
than 4ms.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../lock/dead.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../lock/deaddbg.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/lock/twopl.html b/db/docs/ref/lock/twopl.html
index 00fe51646..6c67735c5 100644
--- a/db/docs/ref/lock/twopl.html
+++ b/db/docs/ref/lock/twopl.html
@@ -1,6 +1,5 @@
<!--$Id: twopl.so,v 10.11 2001/05/22 19:39:32 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -46,6 +45,6 @@ transaction most likely to deadlock.
</ol>
<table width="100%"><tr><td><br></td><td align=right><a href="../lock/notxn.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../lock/cam_conv.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/log/config.html b/db/docs/ref/log/config.html
index f21bb308c..3aee32fd3 100644
--- a/db/docs/ref/log/config.html
+++ b/db/docs/ref/log/config.html
@@ -1,6 +1,5 @@
<!--$Id: config.so,v 10.20 2006/08/30 10:08:16 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -42,6 +41,6 @@ or transactions producing large amounts of data. By default, the buffer
is approximately 32KB.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../log/intro.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../log/limits.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/log/intro.html b/db/docs/ref/log/intro.html
index 51a463f9b..18e6c970c 100644
--- a/db/docs/ref/log/intro.html
+++ b/db/docs/ref/log/intro.html
@@ -1,10 +1,9 @@
-<!--$Id: intro.so,v 10.24 2003/10/18 19:16:03 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: intro.so,v 10.25 2006/11/13 18:05:02 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
-<title>Berkeley DB Reference Guide: Berkeley DB and logging</title>
+<title>Berkeley DB Reference Guide: Introduction to the logging subsystem</title>
<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
</head>
@@ -15,7 +14,7 @@
<td align=right><a href="../lock/nondb.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../log/config.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
<p>
-<h3 align=center>Berkeley DB and logging</h3>
+<h3 align=center>Introduction to the logging subsystem</h3>
<p>The Logging subsystem is the logging facility used by Berkeley DB. It is
largely Berkeley DB-specific, although it is potentially useful outside of
the Berkeley DB package for applications wanting write-ahead logging support.
@@ -70,6 +69,6 @@ removed using the <a href="../../api_c/env_remove.html">DB_ENV-&gt;remove</a> me
</table>
<table width="100%"><tr><td><br></td><td align=right><a href="../lock/nondb.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../log/config.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/log/limits.html b/db/docs/ref/log/limits.html
index 4d6972226..a245ad1dc 100644
--- a/db/docs/ref/log/limits.html
+++ b/db/docs/ref/log/limits.html
@@ -1,6 +1,5 @@
<!--$Id: limits.so,v 10.26 2004/08/13 03:48:05 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -44,6 +43,6 @@ in all other cases, at least a single log file is retained.)
</ol>
<table width="100%"><tr><td><br></td><td align=right><a href="../log/config.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../mp/intro.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/mp/config.html b/db/docs/ref/mp/config.html
index 08688ee04..0ff8aeedf 100644
--- a/db/docs/ref/mp/config.html
+++ b/db/docs/ref/mp/config.html
@@ -1,6 +1,5 @@
<!--$Id: config.so,v 10.20 2003/10/18 19:16:04 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -48,6 +47,6 @@ the size of files mapped into the process address space, use the
<a href="../../api_c/env_set_mp_mmapsize.html">DB_ENV-&gt;set_mp_mmapsize</a> method.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../mp/intro.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../txn/intro.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/mp/intro.html b/db/docs/ref/mp/intro.html
index 73cff73d1..aadc827f8 100644
--- a/db/docs/ref/mp/intro.html
+++ b/db/docs/ref/mp/intro.html
@@ -1,10 +1,9 @@
-<!--$Id: intro.so,v 10.23 2002/08/30 20:02:01 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: intro.so,v 10.26 2007/04/05 20:54:56 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
-<title>Berkeley DB Reference Guide: Berkeley DB and the memory pool</title>
+<title>Berkeley DB Reference Guide: Introduction to the memory pool subsystem</title>
<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
</head>
@@ -15,7 +14,7 @@
<td align=right><a href="../log/limits.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../mp/config.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
<p>
-<h3 align=center>Berkeley DB and the memory pool</h3>
+<h3 align=center>Introduction to the memory pool subsystem</h3>
<p>The Memory Pool subsystem is the general-purpose shared memory buffer
pool used by Berkeley DB. This module is useful outside of the Berkeley DB package
for processes that require page-oriented, shared and cached file access.</p>
@@ -33,10 +32,9 @@ they may be marked <b>dirty</b>, which causes them to be written to
the underlying file before being discarded from the pool. If there is
insufficient room to bring a new page in the pool, a page is selected
to be discarded from the pool using a least-recently-used algorithm.
-Pages in files may also be explicitly marked clean or dirty using the
-<a href="../../api_c/memp_fset.html">DB_MPOOLFILE-&gt;set</a> method. All dirty pages in the pool from the file may be
-flushed using the <a href="../../api_c/memp_fsync.html">DB_MPOOLFILE-&gt;sync</a> method. When the file handle is no
-longer in use, it should be closed using the <a href="../../api_c/memp_fclose.html">DB_MPOOLFILE-&gt;close</a> method.</p>
+All dirty pages in the pool from the file may be flushed using the
+<a href="../../api_c/memp_fsync.html">DB_MPOOLFILE-&gt;sync</a> method. When the file handle is no longer in use, it
+should be closed using the <a href="../../api_c/memp_fclose.html">DB_MPOOLFILE-&gt;close</a> method.</p>
<p>There are additional configuration interfaces that apply when opening
a new file in the memory pool:</p>
<p><ul type=disc>
@@ -57,7 +55,7 @@ for the purposes of page input and output processing.
maintain a consistent percentage of clean buffers in the pool using
the <a href="../../api_c/memp_trickle.html">DB_ENV-&gt;memp_trickle</a> method.
<li>Because special-purpose processing may be necessary when pages are read
-or written (for example, compression or endian conversion), the
+or written (for example, endian conversion, or page checksums), the
<a href="../../api_c/memp_register.html">DB_ENV-&gt;memp_register</a> function allows applications to specify automatic
input and output processing in these cases.
<li>The <a href="../../utility/db_stat.html">db_stat</a> utility uses the <a href="../../api_c/memp_stat.html">DB_ENV-&gt;memp_stat</a> method to display
@@ -68,7 +66,7 @@ database systems, and which allows the memory pool to be flushed up to
a specified log sequence number (<a href="../../api_c/lsn_class.html">DB_LSN</a>).
<li>The entire pool may be discarded using the <a href="../../api_c/env_remove.html">DB_ENV-&gt;remove</a> method.
</ul>
-<!--$Id: m4.methods,v 1.9 2006/08/25 16:40:01 bostic Exp $-->
+<!--$Id: m4.methods,v 1.11 2007/07/06 00:22:53 mjc Exp $-->
<table border=1 align=center>
<tr><th>Memory Pools and Related Methods</th><th>Description</th></tr>
<!--Db::mpf--><tr><td><a href="../../api_c/db_get_mpf.html">DB-&gt;get_mpf</a></td><td>Return <a href="../../api_c/db_class.html">DB</a>'s underlying <a href="../../api_c/mempfile_class.html">DB_MPOOLFILE</a> handle</td></tr>
@@ -79,6 +77,7 @@ a specified log sequence number (<a href="../../api_c/lsn_class.html">DB_LSN</a>
<tr><th>Memory Pool Configuration</th><th><br></th></tr>
<!--DbEnv::memp_register--><tr><td><a href="../../api_c/memp_register.html">DB_ENV-&gt;memp_register</a></td><td>Register input/output functions for a file in a memory pool</td></tr>
<!--DbEnv::set_cachesize--><tr><td><a href="../../api_c/env_set_cachesize.html">DB_ENV-&gt;set_cachesize</a></td><td>Set the environment cache size</td></tr>
+<!--DbEnv::set_cache_max--><tr><td><a href="../../api_c/env_set_cache_max.html">DB_ENV-&gt;set_cache_max</a></td><td>Set the maximum cache size</td></tr>
<!--DbEnv::set_mp_max_openfd--><tr><td><a href="../../api_c/memp_openfd.html">DB_ENV-&gt;set_mp_max_openfd</a></td><td>Set the maximum number of open file descriptors</td></tr>
<!--DbEnv::set_mp_max_write--><tr><td><a href="../../api_c/memp_maxwrite.html">DB_ENV-&gt;set_mp_max_write</a></td><td>Set the maximum number of sequential disk writes</td></tr>
<!--DbEnv::set_mp_mmapsize--><tr><td><a href="../../api_c/env_set_mp_mmapsize.html">DB_ENV-&gt;set_mp_mmapsize</a></td><td>Set maximum mapped-in database file size</td></tr>
@@ -89,7 +88,6 @@ a specified log sequence number (<a href="../../api_c/lsn_class.html">DB_LSN</a>
<!--DbMpoolFile::get--><tr><td><a href="../../api_c/memp_fget.html">DB_MPOOLFILE-&gt;get</a></td><td>Get page from a file in a memory pool</td></tr>
<!--DbMpoolFile::open--><tr><td><a href="../../api_c/memp_fopen.html">DB_MPOOLFILE-&gt;open</a></td><td>Open a file in a memory pool</td></tr>
<!--DbMpoolFile::put--><tr><td><a href="../../api_c/memp_fput.html">DB_MPOOLFILE-&gt;put</a></td><td>Return a page to a memory pool</td></tr>
-<!--DbMpoolFile::set--><tr><td><a href="../../api_c/memp_fset.html">DB_MPOOLFILE-&gt;set</a></td><td>Set memory pool page attributes</td></tr>
<!--DbMpoolFile::sync--><tr><td><a href="../../api_c/memp_fsync.html">DB_MPOOLFILE-&gt;sync</a></td><td>Flush pages from a file in a memory pool</td></tr>
<tr><th>Memory Pool File Configuration</th><th><br></th></tr>
<!--DbMpoolFile::set_clear_len--><tr><td><a href="../../api_c/memp_set_clear_len.html">DB_MPOOLFILE-&gt;set_clear_len</a></td><td>Set file page bytes to be cleared</td></tr>
@@ -103,6 +101,6 @@ a specified log sequence number (<a href="../../api_c/lsn_class.html">DB_LSN</a>
</table>
<table width="100%"><tr><td><br></td><td align=right><a href="../log/limits.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../mp/config.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/pindex.src b/db/docs/ref/pindex.src
index 38b0fb736..03defff6d 100644
--- a/db/docs/ref/pindex.src
+++ b/db/docs/ref/pindex.src
@@ -1,6 +1,7 @@
__APIREL__/utility/berkeley_db_svc.html__OCT__2 utility to support @RPC client/server
__APIREL__/utility/db_archive.html__OCT__2 utility to @archive log files
__APIREL__/utility/db_checkpoint.html__OCT__2 utility to take @checkpoints
+__APIREL__/utility/db_codegen.html__OCT__2 @code generation utility
__APIREL__/utility/db_deadlock.html__OCT__2 utility to detect @deadlocks
__APIREL__/utility/db_dump.html__OCT__2 utility to @dump databases as text files
__APIREL__/utility/db_hotbackup.html__OCT__2 utility to hot @backup database environments
diff --git a/db/docs/ref/program/appsignals.html b/db/docs/ref/program/appsignals.html
index 19cbff612..4e82b3487 100644
--- a/db/docs/ref/program/appsignals.html
+++ b/db/docs/ref/program/appsignals.html
@@ -1,6 +1,5 @@
<!--$Id: appsignals.so,v 10.28 2002/02/23 20:05:24 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -34,6 +33,6 @@ underlying system calls that return failure with errno set to EINTR will
be restarted rather than failing.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../apprec/config.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../program/errorret.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/program/byteorder.html b/db/docs/ref/program/byteorder.html
deleted file mode 100644
index 6569ba88b..000000000
--- a/db/docs/ref/program/byteorder.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<!--$Id: byteorder.so,v 10.20 2000/03/18 21:43:15 bostic Exp $-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB Reference Guide: Byte ordering</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
- <a name="2"><!--meow--></a> <a name="3"><!--meow--></a>
-<table><tr valign=top>
-<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Programmer Notes</dl></h3></td>
-<td width="1%"><a href="../../ref/program/dbsizes.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../ref/toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/program/diskspace.html"><img src="../../images/next.gif" alt="Next"></a>
-</td></tr></table>
-<p>
-<h1 align=center>Byte ordering</h1>
-<p>The database files created by Berkeley DB can be created in either little or
-big-endian formats. By default, the native format of the machine on which
-the database is created will be used. Any format database can be used on
-a machine with a different native format, although it is possible that
-the application will incur a performance penalty for the run-time
-conversion.
-<p>No user-specified data is converted in any way at all. Key or data items
-stored on machines of one format will be returned to the application
-exactly as stored on machines of another format.
-<table><tr><td><br></td><td width="1%"><a href="../../ref/program/dbsizes.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../ref/toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/program/diskspace.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>
-</body>
-</html>
diff --git a/db/docs/ref/program/cache.html b/db/docs/ref/program/cache.html
index ec53dbeb5..34f23ca07 100644
--- a/db/docs/ref/program/cache.html
+++ b/db/docs/ref/program/cache.html
@@ -1,6 +1,5 @@
<!--$Id: cache.so,v 10.3 2002/09/26 01:38:32 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -30,6 +29,6 @@ Many times, this means that write-caching on the disk drive must
be disabled.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../program/ram.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../program/copy.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/program/compatible.html b/db/docs/ref/program/compatible.html
index 13a8c695f..688924bca 100644
--- a/db/docs/ref/program/compatible.html
+++ b/db/docs/ref/program/compatible.html
@@ -1,6 +1,5 @@
<!--$Id: compatible.so,v 10.34 2002/02/23 20:05:24 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -28,6 +27,6 @@ information. No utilities are provided to convert UNIX <a href="../../api_c/dbm
<a href="../../api_c/dbm.html">ndbm</a>, or <a href="../../api_c/hsearch.html">hsearch</a> databases.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../program/copy.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../program/runtime.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/program/copy.html b/db/docs/ref/program/copy.html
index d423387e0..a63c49d00 100644
--- a/db/docs/ref/program/copy.html
+++ b/db/docs/ref/program/copy.html
@@ -1,6 +1,5 @@
<!--$Id: copy.so,v 10.17 2005/06/16 17:07:07 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -80,6 +79,6 @@ access both the original and copy of the database at the same time.
</ol>
<table width="100%"><tr><td><br></td><td align=right><a href="../program/cache.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../program/compatible.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/program/dbsizes.html b/db/docs/ref/program/dbsizes.html
deleted file mode 100644
index 69b45868d..000000000
--- a/db/docs/ref/program/dbsizes.html
+++ /dev/null
@@ -1,45 +0,0 @@
-<!--$Id: dbsizes.so,v 10.22 2000/03/18 21:43:16 bostic Exp $-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB Reference Guide: Database limits</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
- <a name="2"><!--meow--></a>
-<table><tr valign=top>
-<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Programmer Notes</dl></h3></td>
-<td width="1%"><a href="../../ref/program/version.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../ref/toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/program/byteorder.html"><img src="../../images/next.gif" alt="Next"></a>
-</td></tr></table>
-<p>
-<h1 align=center>Database limits</h1>
-<p>The largest database file that Berkeley DB can handle depends on the page size
-selected by the application. Berkeley DB stores database file page numbers as
-unsigned 32-bit numbers and database file page sizes as unsigned 16-bit
-numbers. Using the maximum database page size of 65536, this results in
-a maximum database file size of 2<sup>48</sup> (256 terabytes). The
-minimum database page size is 512 bytes, which results in a minimum
-maximum database size of 2<sup>41</sup> (2 terabytes).
-<p>The largest database file Berkeley DB can support is potentially further limited
-if the host system does not have filesystem support for files larger than
-2<sup>32</sup>, including the ability to seek to absolute offsets within
-those files.
-<p>The largest key or data item that Berkeley DB can support is largely limited
-by available memory. Specifically, while key and data byte strings may
-be of essentially unlimited length, any one of them must fit into
-available memory so that it can be returned to the application. As some
-of the Berkeley DB interfaces return both key and data items to the application,
-those interfaces will require that any key/data pair fit simultaneously
-into memory. Further, as the access methods may need to compare key and
-data items with other key and data items, it may be a requirement that
-any two key or two data items fit into available memory. Finally, when
-writing applications supporting transactions, it may be necessary to have
-an additional copy of any data item in memory for logging purposes.
-<p>The maximum Btree depth is 255.
-<table><tr><td><br></td><td width="1%"><a href="../../ref/program/version.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../ref/toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/program/byteorder.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>
-</body>
-</html>
diff --git a/db/docs/ref/program/diskspace.html b/db/docs/ref/program/diskspace.html
deleted file mode 100644
index fb8425d8a..000000000
--- a/db/docs/ref/program/diskspace.html
+++ /dev/null
@@ -1,145 +0,0 @@
-<!--$Id: diskspace.so,v 10.9 2000/03/22 21:56:11 bostic Exp $-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB Reference Guide: Disk space requirements</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
- <a name="2"><!--meow--></a>
-<table><tr valign=top>
-<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Programmer Notes</dl></h3></td>
-<td width="1%"><a href="../../ref/program/byteorder.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../ref/toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/program/compatible.html"><img src="../../images/next.gif" alt="Next"></a>
-</td></tr></table>
-<p>
-<h1 align=center>Disk space requirements</h1>
-<p>It is possible to estimate the total database size based on the size of
-the data. Simply put, the following calculations attempt to figure out
-how many bytes you will need to hold a set of data and then how many pages
-it will take to actually store it on disk.
-<p>Space freed by deleting key/data pairs from a Btree or Hash database is
-never returned to the filesystem, although it is reused where possible.
-This means that the Btree and Hash databases are grow-only. If enough
-keys are deleted from a database that shrinking the underlying file is
-desirable, you should create a new database and insert the records from
-the old one into it.
-<p>These are rough estimates at best. For example, they do not take into
-account overflow records, filesystem metadata information, or real-life
-situations where the sizes of key and data items are wildly variable, and
-the page-fill factor changes over time.
-<h3>Btree</h3>
-<p>The formulas for the Btree access method are as follows:
-<p><blockquote><pre>useful-bytes-per-page = (page-size - page-overhead) * page-fill-factor
-<p>
-bytes-of-data = n-records *
- (bytes-per-entry + page-overhead-for-two-entries)
-<p>
-n-pages-of-data = bytes-of-data / bytes-per-page
-<p>
-total-pages-on-disk = n-pages-of-data * page-size
-</pre></blockquote>
-<p>The <b>useful-bytes-per-page</b> is a measure of the bytes on each page
-that will actually hold the application data. It is computed as the total
-number of bytes on the page that are available to hold application data,
-corrected by the percentage of the page that is likely to contain data.
-The reason for this correction is that the percentage of a page that
-contains application data can vary from close to 50% after a page split,
-to almost 100% if the entries in the database were inserted in sorted
-order. Obviously, the <b>page-fill-factor</b> can drastically alter
-the amount of disk space required to hold any particular data set. The
-page-fill factor of any existing database can be displayed using the
-<a href="../../utility/db_stat.html">db_stat</a> utility.
-<p>As an example, using an 8K page size, with an 85% page-fill factor, there
-are 6941 bytes of useful space on each page:
-<p><blockquote><pre>6941 = (8192 - 26) * .85</pre></blockquote>
-<p>The total <b>bytes-of-data</b> is an easy calculation: it is the number
-of key/data pairs plus the overhead required to store each pair on a page.
-The overhead to store a single item on a Btree page is 5 bytes. So,
-assuming 60,000,000 key/data pairs, each of which is 8 bytes long, there
-are 1440000000 bytes, or roughly 1.34GB, of total data:
-<p><blockquote><pre>1560000000 = 60000000 * ((8 * 2) + (5 * 2))</pre></blockquote>
-<p>The total pages of data, <b>n-pages-of-data</b>, is the
-<b>bytes-of-data</b> divided by the <b>useful-bytes-per-page</b>. In
-the example, there are 224751 pages of data.
-<p><blockquote><pre>224751 = 1560000000 / 6941</pre></blockquote>
-<p>The total bytes of disk space for the database is <b>n-pages-of-data</b>
-multiplied by the <b>page-size</b>. In the example, the result is
-1841160192 bytes, or roughly 1.71GB.
-<p><blockquote><pre>1841160192 = 224751 * 8192</pre></blockquote>
-<h3>Hash</h3>
-<p>The formulas for the Hash access method are as follows:
-<p><blockquote><pre>useful-bytes-per-page = (page-size - page-overhead)
-<p>
-bytes-of-data = n-records *
- (bytes-per-entry + page-overhead-for-two-entries)
-<p>
-n-pages-of-data = bytes-of-data / bytes-per-page
-<p>
-total-pages-on-disk = n-pages-of-data * page-size
-</pre></blockquote>
-<p>The <b>useful-bytes-per-page</b> is a measure of the bytes on each page
-that will actually hold the application data. It is computed as the total
-number of bytes on the page that are available to hold application data.
-If the application has explicitly set a page fill factor, then pages will
-not necessarily be kept full. For databases with a preset fill factor,
-see the calculation below. The page-overhead for Hash databases is 26
-bytes and the page-overhead-for-two-entries is 6 bytes.
-<p>As an example, using an 8K page size, there are 8166 bytes of useful space
-on each page:
-<p><blockquote><pre>8166 = (8192 - 26)</pre></blockquote>
-<p>The total <b>bytes-of-data</b> is an easy calculation: it is the number
-of key/data pairs plus the overhead required to store each pair on a page.
-In this case that's 6 bytes per pair. So, assuming 60,000,000 key/data
-pairs, each of which is 8 bytes long, there are 1320000000 bytes, or
-roughly 1.23GB, of total data:
-<p><blockquote><pre>1320000000 = 60000000 * ((16 + 6))</pre></blockquote>
-<p>The total pages of data, <b>n-pages-of-data</b>, is the
-<b>bytes-of-data</b> divided by the <b>useful-bytes-per-page</b>. In
-this example, there are 161646 pages of data.
-<p><blockquote><pre>161646 = 1320000000 / 8166</pre></blockquote>
-<p>The total bytes of disk space for the database is <b>n-pages-of-data</b>
-multiplied by the <b>page-size</b>. In the example, the result is
-1324204032 bytes, or roughly 1.23GB.
-<p><blockquote><pre>1324204032 = 161646 * 8192</pre></blockquote>
-<p>Now, let's assume that the application specified a fill factor explicitly.
-The fill factor indicates the target number of items to place on a single
-page (a fill factor might reduce the utilization of each page, but it can
-be useful in avoiding splits and preventing buckets from becoming too
-large. Using our estimates above, each item is 22 bytes (16 + 6) and
-there are 8166 useful bytes on a page (8192 - 26). That means that, on
-average, you can fit 371 pairs per page.
-<p><blockquote><pre>371 = 8166 / 22</pre></blockquote>
-<p>However, let's assume that the application designer knows that while most
-items are 8 bytes, they can sometimes be as large as 10 and it's very
-important to avoid overflowing buckets and splitting. Then, the
-application might specify a fill factor of 314.
-<p><blockquote><pre>314 = 8166 / 26</pre></blockquote>
-<p>With a fill factor of 314, then the formula for computing database size
-is:
-<p><blockquote><pre>npages = npairs / pairs-per-page</pre></blockquote>
-<p>or 191082.
-<p><blockquote><pre>191082 = 60000000 / 314</pre></blockquote>
-<p>At 191082 pages, the total database size would be 1565343744 or 1.46GB.
-<p><blockquote><pre>1565343744 = 191082 * 8192 </pre></blockquote>
-<p>There are a few additional caveats with respect to Hash databases. This
-discussion assumes that the hash function does a good job of evenly
-distributing keys among hash buckets. If the function does not do this,
-you may find your table growing significantly larger than you expected.
-Secondly, in order to provide support for Hash databases co-existing with
-other databases in a single file, pages within a Hash database are
-allocated in power-of-2 chunks. That means that a Hash database with 65
-buckets will take up as much space as a Hash database with 128 buckets;
-each time the Hash database grows beyond its current power-of-two number
-of buckets, it allocates space for the next power-of-two buckets. This
-space may be sparsely allocated in the file system, but the files will
-appear to be their full size. Finally, because of this need for
-contiguous allocation, overflow pages and duplicate pages can be allocated
-only at specific points in the file, and this too can lead to sparse hash
-tables.
-<table><tr><td><br></td><td width="1%"><a href="../../ref/program/byteorder.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../ref/toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/program/compatible.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>
-</body>
-</html>
diff --git a/db/docs/ref/program/environ.html b/db/docs/ref/program/environ.html
index a51cb266a..32af54f03 100644
--- a/db/docs/ref/program/environ.html
+++ b/db/docs/ref/program/environ.html
@@ -1,6 +1,5 @@
<!--$Id: environ.so,v 10.21 2001/04/16 17:11:40 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -29,6 +28,6 @@ checked as locations in which to create temporary files. See
</dl>
<table width="100%"><tr><td><br></td><td align=right><a href="../program/errorret.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../program/mt.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/program/errorret.html b/db/docs/ref/program/errorret.html
index 643eee09a..c0881b577 100644
--- a/db/docs/ref/program/errorret.html
+++ b/db/docs/ref/program/errorret.html
@@ -1,6 +1,5 @@
<!--$Id: errorret.so,v 10.49 2006/08/25 18:22:01 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -108,6 +107,6 @@ no cleanup processing of their own should simply exit from the callback
function.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../program/appsignals.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../program/environ.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/program/extending.html b/db/docs/ref/program/extending.html
deleted file mode 100644
index 6f276d8dc..000000000
--- a/db/docs/ref/program/extending.html
+++ /dev/null
@@ -1,242 +0,0 @@
-<!--$Id: extending.so,v 10.32 2000/07/25 16:31:19 bostic Exp $-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB Reference Guide: Application-specific logging and recovery</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<table><tr valign=top>
-<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Programmer Notes</dl></h3></td>
-<td width="1%"><a href="../../ref/program/recimp.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../ref/toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/program/runtime.html"><img src="../../images/next.gif" alt="Next"></a>
-</td></tr></table>
-<p>
-<h1 align=center>Application-specific logging and recovery</h1>
-<p>Berkeley DB includes tools to assist in the development of application-specific
-logging and recovery. Specifically, given a description of the
-information to be logged, these tools will automatically create logging
-functions (functions that take the values as parameters and construct a
-single record that is written to the log), read functions (functions that
-read a log record and unmarshall the values into a structure that maps
-onto the values you chose to log), a print function (for debugging),
-templates for the recovery functions, and automatic dispatching to your
-recovery functions.
-<h3>Defining Application-Specific Operations</h3>
-<p>Log records are described in files named XXX.src, where "XXX" is a
-unique prefix. The prefixes currently used in the Berkeley DB package are
-btree, crdel, db, hash, log, qam, and txn. These files contain interface
-definition language descriptions for each type of log record that
-is supported.
-<p>All lines beginning with a hash character in <b>.src</b> files are
-treated as comments.
-<p>The first non-comment line in the file should begin with the keyword
-PREFIX followed by a string that will be prepended to every function.
-Frequently, the PREFIX is either identical or similar to the name of the
-<b>.src</b> file.
-<p>The rest of the file consists of one or more log record descriptions.
-Each log record description begins with the line:
-<p><blockquote><pre>BEGIN RECORD_NAME RECORD_NUMBER</pre></blockquote>
-<p>and ends with the line:
-<p><blockquote><pre>END</pre></blockquote>
-<p>The RECORD_NAME keyword should be replaced with a unique record name for
-this log record. Record names must only be unique within <b>.src</b>
-files.
-<p>The RECORD_NUMBER keyword should be replaced with a record number. Record
-numbers must be unique for an entire application, that is, both
-application-specific and Berkeley DB log records must have unique values.
-Further, as record numbers are stored in log files, which often must be
-portable across application releases, no record number should ever be
-re-used. The record number space below 10,000 is reserved for Berkeley DB
-itself, applications should choose record number values equal to or
-greater than 10,000.
-<p>Between the BEGIN and END statements, there should be one line for each
-data item that will be logged in this log record. The format of these
-lines is as follows:
-<p><blockquote><pre>ARG | DBT | POINTER variable_name variable_type printf_format</pre></blockquote>
-<p>The keyword ARG indicates that the argument is a simple parameter of the
-type specified. The keyword DBT indicates that the argument is a DBT
-containing a length and pointer. The keyword PTR indicates that the
-argument is a pointer to the data type specified and that the entire type
-should be logged.
-<p>The variable name is the field name within the structure that will be used
-to reference this item. The variable type is the C type of the variable,
-and the printf format should be "s", for string, "d" for signed integral
-type, or "u" for unsigned integral type.
-<h3>Automatically Generated Functions</h3>
-<p>For each log record description found in the file, the following structure
-declarations and #defines will be created in the file PREFIX_auto.h.
-<p><blockquote><pre><p>
-#define DB_PREFIX_RECORD_TYPE /* Integer ID number */
-<p>
-typedef struct _PREFIX_RECORD_TYPE_args {
- /*
- * These three fields are generated for every record.
- */
- u_int32_t type; /* Record type used for dispatch. */
-<p>
- /*
- * Transaction id that identifies the transaction on whose
- * behalf the record is being logged.
- */
- DB_TXN *txnid;
-<p>
- /*
- * The LSN returned by the previous call to log for
- * this transaction.
- */
- DB_LSN *prev_lsn;
-<p>
- /*
- * The rest of the structure contains one field for each of
- * the entries in the record statement.
- */
-};</pre></blockquote>
-<p>The DB_PREFIX_RECORD_TYPE will be described in terms of a value
-DB_PREFIX_BEGIN, which should be specified by the application writer in
-terms of the library provided DB_user_BEGIN macro (this is the value of
-the first identifier available to users outside the access method system).
-<p>In addition to the PREFIX_auto.h file, a file named PREFIX_auto.c is
-created, containing the following functions for each record type:
-<p><dl compact>
-<p><dt>The log function, with the following parameters:<dd><p><dl compact>
-<p><dt>dbenv<dd>The environment handle returned by <a href="../../api_c/env_create.html">db_env_create</a>.
-<p><dt>txnid<dd>The transaction identifier returned by <a href="../../api_c/txn_begin.html">txn_begin</a>.
-<p><dt>lsnp<dd>A pointer to storage for an LSN into which the LSN of the new log record
-will be returned.
-<p><dt>syncflag<dd>A flag indicating if the record must be written synchronously. Valid
-values are 0 and <a href="../../api_c/log_put.html#DB_FLUSH">DB_FLUSH</a>.
-</dl>
-<p>The log function marshalls the parameters into a buffer and calls
-<a href="../../api_c/log_put.html">log_put</a> on that buffer returning 0 on success and 1 on failure.
-<p><dt>The read function with the following parameters:<dd>
-<p><dl compact>
-<p><dt>recbuf<dd>A buffer.
-<p><dt>argp<dd>A pointer to a structure of the appropriate type.
-</dl>
-<p>The read function takes a buffer and unmarshalls its contents into a
-structure of the appropriate type. It returns 0 on success and non-zero
-on error. After the fields of the structure have been used, the pointer
-returned from the read function should be freed.
-<p><dt>The recovery function with the following parameters:<dd><p><dl compact>
-<p><dt>dbenv<dd>The handle returned from the <a href="../../api_c/env_create.html">db_env_create</a> call which identifies
-the environment in which recovery is running.
-<p><dt>rec<dd>The <b>rec</b> parameter is the record being recovered.
-<p><dt>lsn<dd>The log sequence number of the record being recovered.
-<p><dt>op<dd>A parameter of type db_recops which indicates what operation is being run
-(DB_TXN_OPENFILES, DB_TXN_ABORT, DB_TXN_BACKWARD_ROLL, DB_TXN_FORWARD_ROLL).
-<p><dt>info<dd>A structure passed by the dispatch function. It is used to contain a list
-of committed transactions and information about files that may have been
-deleted.
-</dl>
-<p>The recovery function is called on each record read from the log during
-system recovery or transaction abort.
-<p>The recovery function is created in the file PREFIX_rtemp.c since it
-contains templates for recovery functions. The actual recovery functions
-must be written manually, but the templates usually provide a good starting
-point.
-<p><dt>The print function:<dd>The print function takes the same parameters as the recover function so
-that it is simple to dispatch both to simple print functions as well as
-to the actual recovery functions. This is useful for debugging purposes
-and is used by the <a href="../../utility/db_printlog.html">db_printlog</a> utility to produce a human-readable
-version of the log. All parameters except the <b>rec</b> and
-<b>lsnp</b> parameters are ignored. The <b>rec</b> parameter contains
-the record to be printed.
-</dl>
-One additional function, an initialization function,
-is created for each <b>.src</b> file.
-<p><dl compact>
-<p><dt>The initialization function has the following parameters:<dd><p><dl compact>
-<p><dt>dbenv<dd>The environment handle returned by <a href="../../api_c/env_create.html">db_env_create</a>.
-</dl>
-<p>The recovery initialization function registers each log record type
-declared with the recovery system, so that the appropriate function is
-called during recovery.
-</dl>
-<h3>Using Automatically Generated Routines</h3>
-<p>Applications use the automatically generated functions as follows:
-<p><ol>
-<p><li>When the application starts,
-call the <a href="../../api_c/env_set_rec_init.html">DBENV-&gt;set_recovery_init</a> with your recovery
-initialization function so that the initialization function is called
-at the appropriate time.
-<p><li>Issue a <a href="../../api_c/txn_begin.html">txn_begin</a> call before any operations you wish
-to be transaction protected.
-<p><li>Before accessing any data, issue the appropriate lock call to
-lock the data (either for reading or writing).
-<p><li>Before modifying any data that is transaction protected, issue
-a call to the appropriate log function.
-<p><li>Issue a <a href="../../api_c/txn_commit.html">txn_commit</a> to save all of the changes or a
-<a href="../../api_c/txn_abort.html">txn_abort</a> to cancel all of the modifications.
-</ol>
-<p>The recovery functions (described below) can be called in two cases:
-<p><ol>
-<p><li>From the recovery daemon upon system failure, with op set to
-DB_TXN_FORWARD_ROLL or DB_TXN_BACKWARD_ROLL.
-<p><li>From <a href="../../api_c/txn_abort.html">txn_abort</a>, if it is called to abort a transaction, with
-op set to DB_TXN_ABORT.
-</ol>
-<p>For each log record type you declare, you must write the appropriate
-function to undo and redo the modifications. The shell of these functions
-will be generated for you automatically, but you must fill in the details.
-<p>Your code should be able to detect whether the described modifications
-have been applied to the data or not. The function will be called with
-the "op" parameter set to DB_TXN_ABORT when a transaction that wrote the
-log record aborts and with DB_TXN_FORWARD_ROLL and DB_TXN_BACKWARD_ROLL
-during recovery. The actions for DB_TXN_ABORT and DB_TXN_BACKWARD_ROLL
-should generally be the same. For example, in the access methods, each
-page contains the log sequence number of the most recent log record that
-describes a modification to the page. When the access method changes a
-page it writes a log record describing the change and including the the
-LSN that was on the page before the change. This LSN is referred to as
-the previous LSN. The recovery functions read the page described by a
-log record and compare the log sequence number (LSN) on the page to the
-LSN they were passed. If the page LSN is less than the passed LSN and
-the operation is undo, no action is necessary (because the modifications
-have not been written to the page). If the page LSN is the same as the
-previous LSN and the operation is redo, then the actions described are
-reapplied to the page. If the page LSN is equal to the passed LSN and
-the operation is undo, the actions are removed from the page; if the page
-LSN is greater than the passed LSN and the operation is redo, no further
-action is necessary. If the action is a redo and the LSN on the page is
-less than the previous LSN in the log record this is an error, since this
-could only happen if some previous log record was not processed.
-<p>Please refer to the internal recovery functions in the Berkeley DB library
-(found in files named XXX_rec.c) for examples of how recovery functions
-should work.
-<h3>Non-conformant Logging</h3>
-<p>If your application cannot conform to the default logging and recovery
-structure, then you will have to create your own logging and recovery
-functions explicitly.
-<p>First, you must decide how you will dispatch your records. Encapsulate
-this algorithm in a dispatch function that is passed to <a href="../../api_c/env_open.html">DBENV-&gt;open</a>.
-The arguments for the dispatch function are as follows:
-<p><dl compact>
-<p><dt>dbenv<dd>The environment handle returned by <a href="../../api_c/env_create.html">db_env_create</a>.
-<p><dt>rec<dd>The record being recovered.
-<p><dt>lsn<dd>The log sequence number of the record to be recovered.
-<p><dt>op<dd>Indicates what operation of recovery is needed (openfiles, abort, forward roll
-or backward roll).
-<p><dt>info<dd>An opaque value passed to your function during system recovery.
-</dl>
-<p>When you abort a transaction, <a href="../../api_c/txn_abort.html">txn_abort</a> will read the last log
-record written for the aborting transaction and will then call your
-dispatch function. It will continue looping, calling the dispatch
-function on the record whose LSN appears in the lsn parameter of the
-dispatch call (until a NULL LSN is placed in that field). The dispatch
-function will be called with the op set to DB_TXN_ABORT.
-<p>Your dispatch function can do any processing necessary. See the code
-in db/db_dispatch.c for an example dispatch function (that is based on
-the assumption that the transaction ID, previous LSN, and record type
-appear in every log record written).
-<p>If you do not use the default recovery system, you will need to construct
-your own recovery process based on the recovery program provided in
-db_recover/db_recover.c. Note that your recovery functions will need to
-correctly process the log records produced by calls to <a href="../../api_c/txn_begin.html">txn_begin</a>
-and <a href="../../api_c/txn_commit.html">txn_commit</a>.
-<table><tr><td><br></td><td width="1%"><a href="../../ref/program/recimp.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../ref/toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/program/runtime.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>
-</body>
-</html>
diff --git a/db/docs/ref/program/faq.html b/db/docs/ref/program/faq.html
index 566091467..db823071b 100644
--- a/db/docs/ref/program/faq.html
+++ b/db/docs/ref/program/faq.html
@@ -1,6 +1,5 @@
<!--$Id: faq.so,v 10.3 2002/12/10 23:41:42 mjc Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -38,6 +37,6 @@ contains the wrapper object.</p>
</ol>
<table width="100%"><tr><td><br></td><td align=right><a href="../program/runtime.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../lock/intro.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/program/mt.html b/db/docs/ref/program/mt.html
index 3dc6666a5..45f3edfa0 100644
--- a/db/docs/ref/program/mt.html
+++ b/db/docs/ref/program/mt.html
@@ -1,6 +1,5 @@
<!--$Id: mt.so,v 10.48 2005/07/20 16:34:05 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -73,6 +72,6 @@ programs may have additional requirements. For more information, see
file.</a></p>
<table width="100%"><tr><td><br></td><td align=right><a href="../program/environ.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../program/scope.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/program/namespace.html b/db/docs/ref/program/namespace.html
index 15ca32b88..d27ab2a8f 100644
--- a/db/docs/ref/program/namespace.html
+++ b/db/docs/ref/program/namespace.html
@@ -1,6 +1,5 @@
<!--$Id: namespace.so,v 10.22 2004/03/08 15:09:20 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -51,6 +50,6 @@ are the digits 0 through 9. Applications should never remove any files
named with the prefix "__db" or "log", other than "__db.###" files.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../program/scope.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../program/ram.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/program/ram.html b/db/docs/ref/program/ram.html
index 787de5075..dbf99befa 100644
--- a/db/docs/ref/program/ram.html
+++ b/db/docs/ref/program/ram.html
@@ -1,6 +1,5 @@
<!--$Id: ram.so,v 10.10 2006/09/19 15:42:31 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -112,6 +111,6 @@ Flash memory.</p>
</dl>
<table width="100%"><tr><td><br></td><td align=right><a href="../program/namespace.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../program/cache.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/program/recimp.html b/db/docs/ref/program/recimp.html
deleted file mode 100644
index 240eccd8b..000000000
--- a/db/docs/ref/program/recimp.html
+++ /dev/null
@@ -1,49 +0,0 @@
-<!--$Id: recimp.so,v 11.2 2000/03/18 21:43:18 bostic Exp $-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB Reference Guide: Recovery implementation</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<table><tr valign=top>
-<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Transaction Protected Applications</dl></h3></td>
-<td width="1%"><a href="../../ref/transapp/filesys.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../ref/toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/transapp/reclimit.html"><img src="../../images/next.gif" alt="Next"></a>
-</td></tr></table>
-<p>
-<h1 align=center>Recovery implementation</h1>
-<p>The physical recovery process works as follows:
-<p>First, find the last checkpoint that completed. Since the system may
-have crashed while writing a checkpoint, this implies finding the
-second-to-last checkpoint in the log files. Read forward from this
-checkpoint, opening any database files for which modifications are found
-in the log.
-<p>Then, read backward from the end of the log. For each commit record
-encountered, record its transaction ID. For every other data update
-record, find the transaction ID of the record. If that transaction ID
-appears in the list of committed transactions, do nothing; if it does not
-appear in the committed list, then call the appropriate recovery routine
-to undo the operation.
-<p>In the case of catastrophic recovery, this roll-backward pass continues
-through all the present log files. In the case of normal recovery, this
-pass continues until we find a checkpoint written before the second-to-last
-checkpoint described above.
-<p>When the roll-backward pass is complete, the roll-forward pass begins at
-the point where the roll-backward pass ended. Each record is read and if
-its transaction id is in the committed list, then the appropriate recovery
-routine is called to redo the operation if necessary.
-<p>In a distributed transaction environment, there may be transactions that
-are prepared, but not yet committed. If these transactions are XA
-transactions, then they are rolled forward to their current state, and an
-active transaction corresponding to it is entered in the transaction table
-so that the XA transaction manager may call either transaction abort or
-commit, depending on the outcome of the overall transaction. If the
-transaction is not an XA transaction, then it is aborted like any other
-transactions would be.
-<table><tr><td><br></td><td width="1%"><a href="../../ref/transapp/filesys.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../ref/toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/transapp/reclimit.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>
-</body>
-</html>
diff --git a/db/docs/ref/program/runtime.html b/db/docs/ref/program/runtime.html
index 4e28009f8..24e777f5f 100644
--- a/db/docs/ref/program/runtime.html
+++ b/db/docs/ref/program/runtime.html
@@ -1,6 +1,5 @@
<!--$Id: runtime.so,v 10.36 2006/06/08 13:04:29 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -54,6 +53,6 @@ written using previous versions of the Berkeley DB APIs, and is only useful
as an example.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../program/compatible.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../program/faq.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/program/scope.html b/db/docs/ref/program/scope.html
index c38adf0ac..b35fc8c3e 100644
--- a/db/docs/ref/program/scope.html
+++ b/db/docs/ref/program/scope.html
@@ -1,6 +1,5 @@
-<!--$Id: scope.so,v 10.11 2003/10/24 22:27:56 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: scope.so,v 10.12 2007/06/14 17:41:59 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -57,23 +56,23 @@ environment. <a href="../../api_c/db_class.html">DB</a> handles are free-thread
database is opened or if the database environment in which the database
is opened is free-threaded. The handle should not be closed while any
other handle that refers to the database is in use; for example,
-database handles must not be closed while cursor handles into the
+database handles should be left open while cursor handles into the
database remain open, or transactions that include operations on the
database have not yet been committed or aborted. Once the
<a href="../../api_c/db_close.html">DB-&gt;close</a>, <a href="../../api_c/db_remove.html">DB-&gt;remove</a>, or <a href="../../api_c/db_rename.html">DB-&gt;rename</a> methods are
-called, the handle may not be accessed again, regardless of the
-method's return.
+called, the handle may not be accessed again, regardless of the method's
+return.
<dt><a href="../../api_c/dbc_class.html">DBC</a><dd>The <a href="../../api_c/dbc_class.html">DBC</a> handle refers to a cursor into a Berkeley DB database. The
handle is not free-threaded. Cursors may span threads, but only
serially, that is, the application must serialize access to the
<a href="../../api_c/dbc_class.html">DBC</a> handles. If the cursor is to be used to perform operations
on behalf of a transaction, the cursor must be opened and closed within
-the context of that single transaction. Once <a href="../../api_c/dbc_close.html">DBcursor-&gt;c_close</a> has been
+the context of that single transaction. Once <a href="../../api_c/dbc_close.html">DBcursor-&gt;close</a> has been
called, the handle may not be accessed again, regardless of the
method's return.
</dl>
<table width="100%"><tr><td><br></td><td align=right><a href="../program/mt.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../program/namespace.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/program/version.html b/db/docs/ref/program/version.html
deleted file mode 100644
index d1b1254a1..000000000
--- a/db/docs/ref/program/version.html
+++ /dev/null
@@ -1,45 +0,0 @@
-<!--$Id: version.so,v 10.14 2000/03/18 21:43:16 bostic Exp $-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB Reference Guide: Library version information</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<table><tr valign=top>
-<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Programmer Notes</dl></h3></td>
-<td width="1%"><a href="../../ref/program/copy.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../ref/toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/program/dbsizes.html"><img src="../../images/next.gif" alt="Next"></a>
-</td></tr></table>
-<p>
-<h1 align=center>Library version information</h1>
-<p>Each release of the Berkeley DB library has a major version number, a minor
-version number, and a patch number.
-<p>The major version number changes only when major portions of the Berkeley DB
-functionality have been changed. In this case, it may be necessary to
-significantly modify applications in order to upgrade them to use the new
-version of the library.
-<p>The minor version number changes when Berkeley DB interfaces have changed, and
-the new release is not entirely backward compatible with previous releases.
-To upgrade applications to the new version, they must be recompiled, and
-potentially, minor modifications made, (e.g., the order of arguments to a
-function might have changed).
-<p>The patch number changes on each release. If only the patch number
-has changed in a release, applications do not need to be recompiled,
-and they can be upgraded to the new version by simply installing a
-new version of the shared library.
-<p>Internal Berkeley DB interfaces may change at any time and during any release,
-without warning. This means that the library must be entirely recompiled
-and reinstalled when upgrading to new releases of the library, as there
-is no guarantee that modules from the current version of the library will
-interact correctly with modules from a previous release.
-<p>To retrieve the Berkeley DB version information, applications should use the
-<a href="../../api_c/env_version.html">db_version</a> interface. In addition to the above information, the
-<a href="../../api_c/env_version.html">db_version</a> interface returns a string encapsulating the version
-information, suitable for display to a user.
-<table><tr><td><br></td><td width="1%"><a href="../../ref/program/copy.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../ref/toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/program/dbsizes.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>
-</body>
-</html>
diff --git a/db/docs/ref/refs/bdb_usenix.html b/db/docs/ref/refs/bdb_usenix.html
deleted file mode 100644
index 6ff321119..000000000
--- a/db/docs/ref/refs/bdb_usenix.html
+++ /dev/null
@@ -1,1120 +0,0 @@
-<!--"@(#)usenix.html 1.2 4/26/99"-->
-<html>
-<head>
-<title>Berkeley DB</title>
-</head>
-<body bgcolor="white">
-<center>
-<h1>
-Berkeley DB
-</h1>
-<p>
-<i>
-Michael A. Olson
-<br>
-Keith Bostic
-<br>
-Margo Seltzer
-<br>&nbsp;
-<br>
-Sleepycat Software, Inc.
-<br>&nbsp;
-<br>
-</i>
-<b>
-Abstract
-</b>
-</center>
-<font size="-1">
-<blockquote>
-<p>
-Berkeley DB is an Open Source embedded database system with a number
-of key advantages over comparable systems. It is simple to use, supports
-concurrent access by multiple users, and provides industrial-strength
-transaction support, including surviving system and disk crashes. This
-paper describes the design and technical features of Berkeley DB, the
-distribution, and its license.
-</blockquote>
-</font>
-<h1>
-Introduction
-</h1>
-<p>
-The Berkeley Database (Berkeley DB) is an embedded database system
-that can be used in applications requiring high-performance
-concurrent storage and retrieval of key/value pairs. The software
-is distributed as a library that can be linked directly into an
-application.
-It provides a variety of programmatic interfaces,
-including callable APIs for C, C++, Perl, Tcl and Java.
-Users may download Berkeley DB from Sleepycat Software's Web site,
-at
-<a href="http://www.sleepycat.com">www.sleepycat.com</a>.
-<p>
-Sleepycat distributes Berkeley DB as an Open Source product. The company
-collects license fees for certain uses of the software and sells support
-and services.
-<h2>
-History
-</h2>
-<p>
-Berkeley DB began as a new implementation of a hash access method
-to replace both
-<tt>hsearch</tt>
-and the various
-<tt>dbm</tt>
-implementations
-(<tt>dbm</tt> from AT&T,
-<tt>ndbm</tt>
-from Berkeley, and
-<tt>gdbm</tt>
-from the GNU project).
-In 1990 Seltzer and Yigit produced a package called Hash to do this
-<a href="#Selt91">[Selt91]</a>.
-<p>
-The first general release of Berkeley DB, in 1991,
-included some interface changes and a new B+tree access method.
-At roughly the same time, Seltzer and Olson
-developed a prototype transaction
-system based on Berkeley DB, called LIBTP <a href="#Selt92">[Selt92]</a>,
-but never released the code.
-<p>
-The 4.4BSD UNIX release included Berkeley DB 1.85 in 1992.
-Seltzer and Bostic maintained the code in the early 1990s
-in Berkeley and in Massachusetts.
-Many users adopted the code during this period.
-<p>
-By mid-1996,
-users wanted commercial support for the software.
-In response, Bostic and Seltzer formed Sleepycat Software.
-The company enhances, distributes, and
-supports Berkeley DB and supporting software and documentation.
-Sleepycat released version 2.1 of Berkeley DB in mid-1997
-with important new features, including
-support for concurrent access to databases.
-The company makes about three commercial releases a year,
-and most recently shipped version 2.8.
-<h2>
-Overview of Berkeley DB
-</h2>
-<p>
-The C interfaces in Berkeley DB permit
-<tt>dbm</tt>-style
-record management
-for databases,
-with significant extensions to handle duplicate data items elegantly,
-to deal with concurrent access, and to provide transactional
-support so that multiple changes can be simultaneously committed
-(so that they are made permanent) or rolled back (so that the
-database is restored to its state at the beginning of the transaction).
-<p>
-C++ and Java interfaces provide a small set of classes for
-operating on a database. The main class in both cases is called
-<tt>Db</tt>,
-and provides methods that encapsulate the
-<tt>dbm</tt>-style
-interfaces that the C interfaces provide.
-<p>
-Tcl and Perl interfaces allow developers working in those languages
-to use Berkeley DB in their applications.
-Bindings for both languages are included in the distribution.
-<p>
-Developers may compile their applications and link in Berkeley DB
-statically or dynamically.
-<h2>
-How Berkeley DB is used
-</h2>
-<p>
-The Berkeley DB library supports concurrent access to databases.
-It can be linked
-into standalone applications, into a collection of cooperating applications,
-or into servers that handle requests and do database operations on
-behalf of clients.
-<p>
-Compared to using a standalone database management system, Berkeley
-DB is easy to understand and simple to use. The
-software stores and retrieves records, which consist of key/value pairs.
-Keys are used to locate items and can be any data type or structure
-supported by the programming language.
-<p>
-The programmer can provide the functions that Berkeley DB uses to
-operate on keys.
-For example,
-B+trees can use a custom comparison function,
-and the Hash access method can use a custom hash function.
-Berkeley DB uses default functions if none are supplied.
-Otherwise, Berkeley DB does not examine or interpret either keys
-or values in any way.
-Values may be arbitrarily long.
-<p>
-It is also important to understand what Berkeley DB is not.
-It is not a database server that handles network requests. It is not an
-SQL engine that executes queries. It is not a relational or object-oriented
-database management system.
-<p>
-It is possible to build any of those on top of Berkeley DB,
-but the package, as distributed,
-is an embedded database engine. It has been designed
-to be portable, small, fast, and reliable.
-<h2>
-Applications that use Berkeley DB
-</h2>
-<p>
-Berkeley DB is embedded in a variety of proprietary and Open Source
-software packages.
-This section highlights a few of the products that use it.
-<p>
-Directory servers, which do data storage and retrieval using the
-Local Directory Access Protocol (LDAP), provide naming and directory
-lookup service on local-area networks.
-This service is,
-essentially,
-database query and update,
-but uses a simple protocol rather than SQL or ODBC.
-Berkeley DB is the embedded data manager in the majority of deployed
-directory servers today,
-including LDAP servers from Netscape,
-MessageDirect (formerly Isode),
-and others.
-<p>
-Berkeley DB is also embedded in a large number of mail servers.
-Intermail,
-from Software.com,
-uses Berkeley DB as a message store
-and as the backing store for its directory server.
-The sendmail server
-(including both the commercial Sendmail Pro offering from Sendmail,
-Inc. and the version distributed by sendmail.org)
-uses Berkeley DB to store aliases and other information.
-Similarly,
-Postfix (formerly VMailer) uses Berkeley DB
-to store administrative information.
-<p>
-In addition,
-Berkeley DB is embedded in a wide variety of other software products.
-Example applications include managing access control lists,
-storing user keys in a public-key infrastructure,
-recording machine-to-network-address mappings in address servers,
-and storing configuration and device information in video
-post-production software.
-<p>
-Finally,
-Berkeley DB is a part of many other Open Source software packages
-available on the Internet.
-For example,
-the software is embedded in the Apache Web server and the Gnome desktop.
-<h1>
-Access Methods
-</h1>
-<p>
-In database terminology, an access method is the disk-based structure
-used to store data and the operations available on that structure.
-For example, many database systems support a B+tree access method.
-B+trees allow equality-based lookups (find keys equal to some constant),
-range-based lookups (find keys between two constants) and record
-insertion and deletion.
-<p>
-Berkeley DB supports three access methods: B+tree,
-Extended Linear Hashing (Hash),
-and Fixed- or Variable-length Records (Recno).
-All three operate on records composed of a key and a data value.
-In the B+tree and Hash access methods, keys can have arbitrary structure.
-In the Recno access method, each record is assigned a record number, which
-serves as the key.
-In all the access methods, the
-value can have arbitrary structure.
-The programmer can supply comparison or hashing functions for keys,
-and Berkeley DB stores and retrieves values without
-interpreting them.
-<p>
-All of the access methods use the host filesystem as a backing store.
-<h2>
-Hash
-</h2>
-<p>
-Berkeley DB includes a Hash access method that implements extended
-linear hashing <a href="#Litw80">[Litw80]</a>.
-Extended linear hashing adjusts the hash function as the hash
-table grows, attempting to keep all buckets underfull in the steady
-state.
-<p>
-The Hash access method supports insertion and deletion of records and
-lookup by exact match only. Applications may iterate over all records
-stored in a table, but the order in which they are returned is undefined.
-<h2>
-B+tree
-</h2>
-<p>
-Berkeley DB includes a B+tree <a href="#Come79">[Come79]</a> access method.
-B+trees store records of key/value pairs in leaf pages,
-and pairs of (key, child page address) at internal nodes.
-Keys in the tree are stored in sorted order,
-where the order is determined by the comparison function supplied when the
-database was created.
-Pages at the leaf level of the tree include pointers
-to their neighbors to simplify traversal. B+trees support lookup by
-exact match (equality) or range (greater than or equal to a key).
-Like Hash tables, B+trees support record insertion,
-deletion, and iteration over all records in the tree.
-<p>
-As records are inserted and pages in the B+tree fill up, they are split,
-with about half the keys going into a new peer page at the same level in
-the tree.
-Most B+tree implementations leave both nodes half-full after a split.
-This leads to poor performance in a common case, where the caller inserts
-keys in order.
-To handle this case, Berkeley DB keeps track of the insertion order,
-and splits pages unevenly to keep pages fuller.
-This reduces tree size, yielding better search performance and smaller
-databases.
-<p>
-On deletion, empty pages are coalesced by reverse splits
-into single pages.
-The access method does no other page balancing on insertion
-or deletion.
-Keys are not moved among pages at every update
-to keep the tree well-balanced. While this could improve search times
-in some cases, the additional code complexity leads to slower updates and
-is prone to deadlocks.
-<p>
-For simplicity, Berkeley DB B+trees do no prefix compression of keys
-at internal or leaf nodes.
-<h2>
-Recno
-</h2>
-<p>
-Berkeley DB includes a fixed- or variable-length record access method,
-called
-<i>Recno</i>.
-The Recno access method assigns logical record numbers to each
-record,
-and can search for and update records by record number.
-Recno is able,
-for example,
-to load a text file into a database,
-treating each line as a record.
-This permits fast searches by line number for applications like
-text editors <a href="#Ston82">[Ston82]</a>.
-<p>
-Recno is actually built
-on top of the B+tree access method and provides a simple interface
-for storing sequentially-ordered data values.
-The Recno access method generates keys internally.
-The programmer's view of the values is that
-they are numbered sequentially from one.
-Developers can choose to have records automatically renumbered
-when lower-numbered records are added or deleted.
-In this case, new keys can be inserted between existing keys.
-<h1>
-Features
-</h1>
-<p>
-This section describes important features of Berkeley DB.
-In general,
-developers can choose which features are useful to them,
-and use only those that are required by their application.
-<p>
-For example,
-when an application opens a database, it can declare the degree of
-concurrency and recovery that it requires. Simple stand-alone applications,
-and in particular ports of applications that used
-<tt>dbm</tt>
-or one of its
-variants, generally do not require concurrent access or crash recovery.
-Other applications, such as enterprise-class database management systems
-that store sales transactions or other critical data, need full
-transactional service. Single-user operation is faster than multi-user
-operation, since no overhead is incurred by locking. Running with
-the recovery system disabled is faster than running with it enabled,
-since log records need not be written when changes are made to the
-database.
-<p>
-In addition, some core subsystems, including the locking system and
-the logging facility,
-can be used outside the context of the access methods as well.
-Although few users have chosen to do so, it is possible to
-use only the lock manager in Berkeley DB to control concurrency
-in an application, without using any of the standard database services.
-Alternatively, the caller can integrate locking of non-database resources
-with Berkeley DB's transactional two-phase locking system, to impose
-transaction semantics on objects outside the database.
-<h2>
-Programmatic interfaces
-</h2>
-<p>
-Berkeley DB defines a simple API for database management.
-The package does not include industry-standard
-programmatic interfaces such as Open Database Connectivity (ODBC),
-Object Linking and Embedding for Databases (OleDB), or Structured
-Query Language (SQL). These interfaces, while useful, were
-designed to promote interoperability of database systems, and not
-simplicity or performance.
-<p>
-In response to customer demand,
-Berkeley DB 2.5 introduced support for the XA standard <a href="#Open94">[Open94]</a>.
-XA permits Berkeley DB to participate in distributed transactions
-under a transaction processing monitor like Tuxedo from BEA Systems.
-Like XA, other standard interfaces can be built on top of the
-core system.
-The standards do not belong inside Berkeley DB,
-since not all applications need them.
-<h2>
-Working with records
-</h2>
-<p>
-A database user may need to search for particular keys in a database,
-or may simply want to browse available records.
-Berkeley DB supports both keyed access,
-to find one or more records with a given key,
-or sequential access,
-to retrieve all the records in the database one at a time.
-The order of the records returned during sequential scans
-depends on the access method.
-B+tree and Recno databases return records in sort order,
-and Hash databases return them in apparently random order.
-<p>
-Similarly,
-Berkeley DB defines simple interfaces for inserting,
-updating,
-and deleting records in a database.
-<h2>
-Long keys and values
-</h2>
-<p>
-Berkeley DB manages keys and values as large as
-2<sup>32</sup> bytes.
-Since the time required to copy a record is proportional to its size,
-Berkeley DB includes interfaces that operate on partial records.
-If an application requires only part of a large record,
-it requests partial record retrieval,
-and receives just the bytes that it needs.
-The smaller copy saves both time and memory.
-<p>
-Berkeley DB allows the programmer to define the data types of
-keys and values.
-Developers use any type expressible in the programming language.
-<h2>
-Large databases
-</h2>
-<p>
-A single database managed by Berkeley DB can be up to 2<sup>48</sup>
-bytes,
-or 256 petabytes,
-in size.
-Berkeley DB uses the host filesystem as the backing store
-for the database,
-so large databases require big file support from the operating system.
-Sleepycat Software has customers using Berkeley DB
-to manage single databases in excess of 100 gigabytes.
-<h2>
-Main memory databases
-</h2>
-<p>
-Applications that do not require persistent storage can create
-databases that exist only in main memory.
-These databases bypass the overhead imposed by the I/O system
-altogether.
-<p>
-Some applications do need to use disk as a backing store,
-but run on machines with very large memory.
-Berkeley DB is able to manage very large shared memory regions
-for cached data pages,
-log records,
-and lock management.
-For example,
-the cache region used for data pages may be gigabytes in size,
-reducing the likelihood that any read operation will need to
-visit the disk in the steady state.
-The programmer declares the size of the cache region at
-startup.
-<p>
-Finally, many operating systems provide memory-mapped file services
-that are much faster than their general-purpose file system
-interfaces.
-Berkeley DB can memory-map its database files for read-only database use.
-The application operates on records stored directly on the pages,
-with no cache management overhead.
-Because the application gets pointers directly into the
-Berkeley DB pages,
-writes cannot be permitted.
-Otherwise,
-changes could bypass the locking and logging systems,
-and software errors could corrupt the database.
-Read-only applications can use Berkeley DB's memory-mapped
-file service to improve performance on most architectures.
-<h2>
-Configurable page size
-</h2>
-<p>
-Programmers declare the size of the pages used by their access
-methods when they create a database.
-Although Berkeley DB provides reasonable defaults,
-developers may override them to control system performance.
-Small pages reduce the number of records that fit on a single page.
-Fewer records on a page means that fewer records are locked when
-the page is locked,
-improving concurrency.
-The per-page overhead is proportionally higher with smaller pages,
-of course,
-but developers can trade off space for time as an application requires.
-<h2>
-Small footprint
-</h2>
-<p>
-Berkeley DB is a compact system.
-The full package, including all access methods, recoverability,
-and transaction support
-is roughly 175K of text space on common architectures.
-<h2>
-Cursors
-</h2>
-<p>
-In database terminology, a cursor is a pointer into an access method
-that can be called iteratively to return records in sequence. Berkeley
-DB includes cursor interfaces for all access methods. This permits,
-for example, users to traverse a B+tree and view records in order.
-Pointers to records in cursors are persistent, so that once fetched,
-a record may be updated in place. Finally, cursors support access to
-chains of duplicate data items in the various access methods.
-<h2>
-Joins
-</h2>
-<p>
-In database terminology,
-a join is an operation that spans multiple separate
-tables (or in the case of Berkeley DB, multiple separate DB files).
-For example, a company may store information about its customers
-in one table and information about sales in another. An application
-will likely want to look up sales information by customer name; this
-requires matching records in the two tables that share a common
-customer ID field.
-This combining of records from multiple tables is called a join.
-<p>
-Berkeley DB includes interfaces for joining two or more tables.
-<h2>
-Transactions
-</h2>
-<p>
-Transactions have four properties <a href="#Gray93">[Gray93]</a>:
-<ul>
-<li>
-They are atomic. That is, all of the changes made in a single
-transaction must be applied at the same instant or not at all.
-This permits, for example, the transfer of money between two
-accounts to be accomplished, by making the reduction of the
-balance in one account and the increase in the other into a
-single, atomic action.
-</li>
-<li>
-They must be consistent. That is, changes to the database
-by any transaction cannot leave the database in an illegal
-or corrupt state.
-</li>
-<li>
-They must be isolatable. Regardless of the number of users
-working in the database at the same time, every user must have
-the illusion that no other activity is going on.
-</li>
-<li>
-They must be durable. Even if the disk that stores the database
-is lost, it must be possible to recover the database to its last
-transaction-consistent state.
-</li>
-</ul>
-<p>
-This combination of properties -- atomicity, consistency, isolation, and
-durability -- is referred to as ACIDity in the literature. Berkeley DB,
-like most database systems, provides ACIDity using a collection of core
-services.
-<p>
-Programmers can choose to use Berkeley DB's transaction services
-for applications that need them.
-<h3>
-Write-ahead logging
-</h3>
-<p>
-Programmers can enable the logging system when they start up Berkeley DB.
-During a transaction,
-the application makes a series of changes to the database.
-Each change is captured in a log entry,
-which holds the state of the database record
-both before and after the change.
-The log record is guaranteed
-to be flushed to stable storage before any of the changed data pages
-are written.
-This behavior -- writing the log before the data pages -- is called
-<i>write-ahead logging</i>.
-<p>
-At any time during the transaction,
-the application can
-<i>commit</i>,
-making the changes permanent,
-or
-<i>roll back</i>,
-cancelling all changes and restoring the database to its
-pre-transaction state.
-If the application
-rolls back the transaction, then the log holds the state of all
-changed pages prior to the transaction, and Berkeley DB simply
-restores that state.
-If the application commits the transaction,
-Berkeley DB writes the log records to disk.
-In-memory copies of the data pages already reflect the changes,
-and will be flushed as necessary during normal processing.
-Since log writes are sequential, but data page
-writes are random, this improves performance.
-<h3>
-Crashes and recovery
-</h3>
-<p>
-Berkeley DB's write-ahead log is used by the transaction
-system to commit or roll back transactions.
-It also gives the recovery system the information that
-it needs to protect against data loss or corruption
-from crashes.
-Berkeley DB is able to survive application crashes,
-system crashes,
-and even catastrophic failures like the loss of a hard
-disk,
-without losing any data.
-<p>
-Surviving crashes requires data stored in several different places.
-During normal processing,
-Berkeley DB has copies of active log records and recently-used
-data pages in memory.
-Log records are flushed to the log disk when transactions commit.
-Data pages trickle out to the data disk as pages move through
-the buffer cache.
-Periodically,
-the system administrator backs up the data disk,
-creating a safe copy of the database at a particular instant.
-When the database is backed up,
-the log can be truncated.
-For maximum robustness,
-the log disk and data disk should be separate devices.
-<p>
-Different system failures can destroy memory,
-the log disk,
-or the data disk.
-Berkeley DB is able to survive the loss of any one
-of these repositories
-without losing any committed transactions.
-<p>
-If the computer's memory is lost,
-through an application or operating system crash,
-then the log holds all committed transactions.
-On restart,
-the recovery system rolls the log forward against
-the database,
-reapplying any changes to on-disk pages that were in memory at the
-time of the crash.
-Since the log contains pre- and post-change state for
-transactions,
-the recovery system also uses the log to restore any pages to
-their original state if they were modified by transactions
-that never committed.
-<p>
-If the data disk is lost,
-the system administrator can restore the most recent copy from backup.
-The recovery system will roll the entire log forward against
-the original database,
-reapplying all committed changes.
-When it finishes,
-the database will contain every change made by every
-transaction that ever committed.
-<p>
-If the log disk is lost,
-then the recovery system can use the in-memory copies of
-log entries to roll back any uncommitted transactions,
-flush all in-memory database pages to the data disk,
-and shut down gracefully.
-At that point,
-the system administrator can back up the database disk,
-install a new log disk,
-and restart the system.
-<h3>
-Checkpoints
-</h3>
-<p>
-Berkeley DB includes a checkpointing service that interacts
-with the recovery system.
-During normal processing,
-both the log and the database are changing continually.
-At any given instant,
-the on-disk versions of the two are not guaranteed to be consistent.
-The log probably contains changes that are not yet in the database.
-<p>
-When an application makes a
-<i>checkpoint</i>,
-all committed changes in the log up to that point
-are guaranteed to be present on the data disk,
-too.
-Checkpointing is moderately expensive during normal processing,
-but limits the time spent recovering from crashes.
-<p>
-After an application or operating system crash,
-the recovery system only needs to go back two checkpoints
-to start rolling the log forward.
-(One checkpoint is not far enough.
-The recovery system cannot be sure that the most recent
-checkpoint completed --
-it may have been interrupted by the crash that forced the
-recovery system to run in the first place.)
-Without checkpoints,
-there is no way to be sure how long restarting after a crash will take.
-With checkpoints,
-the restart interval can be fixed by the programmer.
-Recovery processing can be guaranteed to complete in a second or two.
-<p>
-Software crashes are much more common than disk failures.
-Many developers want to guarantee that software bugs do not destroy data,
-but are willing to restore from tape,
-and to tolerate a day or two of lost work,
-in the unlikley event of a disk crash.
-With Berkeley DB,
-programmers may truncate the log at checkpoints.
-As long as the two most recent checkpoints are present,
-the recovery system can guarantee that no committed transactions
-are lost after a software crash.
-In this case,
-the recovery system does not require that the log and the
-data be on separate devices,
-although separating them can still improve performance
-by spreading out writes.
-<h3>
-Two-phase locking
-</h3>
-<p>
-Berkeley DB provides a service known as two-phase locking.
-In order to reduce the likelihood of deadlocks and to guarantee ACID
-properties, database systems manage locks in two phases. First, during
-the operation of a transaction, they acquire locks, but never release
-them. Second, at the end of the transaction, they release locks, but
-never acquire them. In practice, most database systems, including Berkeley
-DB, acquire locks on demand over the course of the transaction, then
-flush the log, then release all locks.
-<p>
-Berkeley DB can lock entire database files, which correspond to tables,
-or individual pages in them.
-It does no record-level locking.
-By shrinking the page size,
-however,
-developers can guarantee that every page holds only a small
-number of records.
-This reduces contention.
-<p>
-If locking is enabled,
-then read and write operations on a database acquire two-phase locks,
-which are held until the transaction completes.
-Which objects are locked and the order of lock acquisition
-depend on the workload for each transaction.
-It is possible for two or more transactions to deadlock,
-so that each is waiting for a lock that is held by another.
-<p>
-Berkeley DB detects deadlocks and automatically rolls back
-one of the transactions.
-This releases the locks that it held
-and allows the other transactions to continue.
-The caller is notified that its transaction did not complete,
-and may restart it.
-Developers can specify the deadlock detection interval
-and the policy to use in choosing a transaction to roll back.
-<p>
-The two-phase locking interfaces are separately callable by applications
-that link Berkeley DB, though few users have needed to use that facility
-directly.
-Using these interfaces,
-Berkeley DB provides a fast,
-platform-portable locking system for general-purpose use.
-It also lets users include non-database objects in a database transaction,
-by controlling access to them exactly as if they were inside the database.
-<p>
-The Berkeley DB two-phase locking facility is built on the fastest correct
-locking primitives that are supported by the underlying architecture.
-In the current implementation, this means that the locking system is
-different on the various UNIX platforms, and is still more different
-on Windows NT. In our experience, the most difficult aspect of performance
-tuning is finding the fastest locking primitives that work correctly
-on a particular architecture and then integrating the new
-interface with the several that we already support.
-<p>
-The world would be a better place if the operating systems community
-would uniformly implement POSIX locking primitives and would guarantee
-that acquiring an uncontested lock was a fast operation.
-Locks must work both among threads in a single process
-and among processes.
-<h2>
-Concurrency
-</h2>
-<p>
-Good performance under concurrent operation is a critical design point
-for Berkeley DB. Although Berkeley DB is itself not multi-threaded,
-it is thread-safe, and runs well in threaded applications.
-Philosophically,
-we view the use of threads and the choice of a threads package
-as a policy decision,
-and prefer to offer mechanism (the ability to run threaded or not),
-allowing applications to choose their own policies.
-<p>
-The locking, logging, and buffer pool subsystems all use shared memory
-or other OS-specific sharing facilities to communicate. Locks, buffer
-pool fetches, and log writes behave in the same way across threads in
-a single process as they do across different processes on a single
-machine.
-<p>
-As a result, concurrent database applications may start up a new process
-for every single user, may create a single server which spawns a new
-thread for every client request, or may choose any policy in between.
-<p>
-Berkeley DB has been carefully designed to minimize contention
-and maximize concurrency.
-The cache manager allows all threads or processes to benefit from
-I/O done by one.
-Shared resources must sometimes be locked for exclusive access
-by one thread of control.
-We have kept critical sections small,
-and are careful not to hold critical resource locks across
-system calls that could deschedule the locking thread or process.
-Sleepycat Software has customers with hundreds of concurrent
-users working on a single database in production.
-<h1>
-Engineering Philosophy
-</h1>
-<p>
-Fundamentally, Berkeley DB is a collection of access methods with
-important facilities, like logging, locking, and transactional access
-underlying them. In both the research and the commercial world,
-the techniques for building systems like Berkeley DB have been well-known
-for a long time.
-<p>
-The key advantage of Berkeley DB is the careful attention that has been
-paid to engineering details throughout its life. We have carefully
-designed the system so that the core facilities, like locking and I/O,
-surface the right interfaces and are otherwise opaque to the caller.
-As programmers, we understand the value of simplicity and have worked
-hard to simplify the interfaces we surface to users of the
-database system.
-<p>
-Berkeley DB avoids limits in the code. It places no practical limit
-on the size of keys, values, or databases; they may grow to occupy
-the available storage space.
-<p>
-The locking and logging subsystems have been carefully crafted to
-reduce contention and improve throughput by shrinking or eliminating
-critical sections, and reducing the sizes of locked regions and log
-entries.
-<p>
-There is nothing in the design or implementation of Berkeley DB that
-pushes the state of the art in database systems. Rather, we have been
-very careful to get the engineering right. The result is a system that
-is superior, as an embedded database system, to any other solution
-available.
-<p>
-Most database systems trade off simplicity for correctness. Either the
-system is easy to use, or it supports concurrent use and survives system
-failures. Berkeley DB, because of its careful design and implementation,
-offers both simplicity and correctness.
-<p>
-The system has a small footprint,
-makes simple operations simple to carry out (inserting a new record takes
-just a few lines of code), and behaves correctly in the face of heavy
-concurrent use, system crashes, and even catastrophic failures like loss
-of a hard disk.
-<h1>
-The Berkeley DB 2.x Distribution
-</h1>
-<p>
-Berkeley DB is distributed in source code form from
-<a href="http://www.sleepycat.com">www.sleepycat.com</a>.
-Users are free to download and build the software, and to use it in
-their applications.
-<h2>
-What is in the distribution
-</h2>
-<p>
-The distribution is a compressed archive file.
-It includes the source code for the Berkeley DB library,
-as well as documentation, test suites, and supporting utilities.
-<p>
-The source code includes build support for all supported platforms.
-On UNIX systems Berkeley DB uses the GNU autoconfiguration tool,
-<tt>autoconf</tt>,
-to identify the system and to build the library
-and supporting utilities.
-Berkeley DB includes specific build environments for other platforms,
-such as VMS and Windows.
-<h3>
-Documentation
-</h3>
-<p>
-The distributed system includes documentation in HTML format.
-The documentation is in two parts:
-a UNIX-style reference manual for use by programmers,
-and a reference guide which is tutorial in nature.
-<h3>
-Test suite
-</h3>
-<p>
-The software also includes a complete test suite, written in Tcl.
-We believe that the test suite is a key advantage of Berkeley DB
-over comparable systems.
-<p>
-First, the test suite allows users who download and build the software
-to be sure that it is operating correctly.
-<p>
-Second, the test suite allows us, like other commercial developers
-of database software, to exercise the system thoroughly at every
-release. When we learn of new bugs, we add them to the test suite.
-We run the test suite continually during development cycles, and
-always prior to release. The result is a much more reliable system
-by the time it reaches beta release.
-<h2>
-Binary distribution
-</h2>
-<p>
-Sleepycat makes compiled libraries and general binary distributions available
-to customers for a fee.
-<h2>
-Supported platforms
-</h2>
-<p>
-Berkeley DB runs on any operating system with a
-POSIX 1003.1 interface <a href="#IEEE96">[IEEE96]</a>,
-which includes virtually every UNIX system.
-In addition,
-the software runs on VMS,
-Windows/95,
-Windows/98,
-and Windows/NT.
-Sleepycat Software no longer supports deployment on sixteen-bit
-Windows systems.
-<h1>
-Berkeley DB 2.x Licensing
-</h1>
-<p>
-Berkeley DB 2.x is distributed as an Open Source product. The software
-is freely available from us at our Web site, and in other media. Users
-are free to download the software and build applications with it.
-<p>
-The 1.x versions of Berkeley DB were covered by the UC Berkeley copyright
-that covers software freely redistributable in source form. When
-Sleepycat Software was formed, we needed to draft a license consistent
-with the copyright governing the existing, older software. Because
-of important differences between the UC Berkeley copyright and the GPL,
-it was impossible for us to use the GPL.
-A second copyright, with
-terms contradictory to the first, simply would not have worked.
-<p>
-Sleepycat wanted to continue Open Source development of Berkeley DB
-for several reasons.
-We agree with Raymond <a href="#Raym98">[Raym98]</a> and others that Open
-Source software is typically of higher quality than proprietary,
-binary-only products.
-Our customers benefit from a community of developers who
-know and use Berkeley DB,
-and can help with application design,
-debugging,
-and performance tuning.
-Widespread distribution and use of the source code tends to
-isolate bugs early,
-and to get fixes back into the distributed system quickly.
-As a result,
-Berkeley DB is more reliable.
-Just as importantly,
-individual users are able to contribute new features
-and performance enhancements,
-to the benefit of everyone who uses Berkeley DB.
-From a business perspective,
-Open Source and free distribution of the
-software creates share for us, and gives us a market into which
-we can sell products and services.
-Finally, making the source code
-freely available reduces our support load, since customers can
-find and fix bugs without recourse to us, in many cases.
-<p>
-To preserve the Open Source heritage of the older Berkeley DB code,
-we drafted a new license governing the distribution of Berkeley DB
-2.x. We adopted terms from the GPL that make it impossible to
-turn our Open Source code into proprietary code owned by someone else.
-<p>
-Briefly, the terms governing the use and distribution of Berkeley DB
-are:
-<ul>
-<li>
-your application must be internal to your site, or
-</li>
-<li>
-your application must be freely redistributable in source form, or
-</li>
-<li>
-you must get a license from us.
-</li>
-</ul>
-<p>
-For customers who prefer not to distribute Open Source products,
-we sell licenses to use and extend Berkeley DB at a reasonable cost.
-<p>
-We work hard to accommodate the needs of the Open Source community.
-For example,
-we have crafted special licensing arrangements with Gnome
-to encourage its use and distribution of Berkeley DB.
-<p>
-Berkeley DB conforms to the Open Source definition <a href="#Open99">[Open99]</a>.
-The license has
-been carefully crafted to keep the product available as an Open Source
-offering,
-while providing enough of a return on our investment to fund continued
-development and support of the product. The current license has
-created a business capable of funding three years of development on
-the software that simply would not have happened otherwise.
-<h1>
-Summary
-</h1>
-<p>
-Berkeley DB offers a unique collection of features, targeted squarely
-at software developers who need simple, reliable database management
-services in their applications. Good design and implementation and
-careful engineering throughout make the software better than many
-other systems.
-<p>
-Berkeley DB is an Open Source product, available at
-<a href="http://www.sleepycat.com">www.sleepycat.com</a>.
-for download. The distributed system includes everything needed to
-build and deploy the software or to port it to new systems.
-<p>
-Sleepycat Software distributes Berkeley DB under a license agreement
-that draws on both the UC Berkeley copyright and the GPL. The license
-guarantees that Berkeley DB will remain an Open Source product and
-provides Sleepycat with opportunities to make money to fund continued
-development on the software.
-<h1>
-References
-</h1>
-<table border=0 cellpadding=4 cellspacing=2>
-<tr>
-<td valign="top"><a name="Come79">[Come79]</a></td>
-<td>
-<p>
-Comer, D.,
-&quot;The Ubiquitous B-tree,&quot;
-<i>ACM Computing Surveys</i>
-Volume 11, number 2,
-June 1979.
-</td>
-</tr>
-<tr>
-<td valign="top">
-<a name="Gray93">[Gray93]</a>
-</td>
-<td>
-<p>
-Gray, J., and Reuter, A.,
-<i>Transaction Processing: Concepts and Techniques</i>,
-Morgan-Kaufman Publishers,
-1993.
-</td>
-</tr>
-<tr>
-<td valign="top">
-<a name="IEEE96">[IEEE96]</a>
-</td>
-<td>
-<p>
-Institute for Electrical and Electronics Engineers,
-<i>IEEE/ANSI Std 1003.1</i>,
-1996 Edition.
-</td>
-</tr>
-<tr>
-<td valign="top">
-<a name="Litw80">[Litw80]</a>
-</td>
-<td>
-<p>
-Litwin, W.,
-&quot;Linear Hashing: A New Tool for File and Table Addressing,&quot;
-<i>Proceedings of the 6th International Conference on Very Large Databases (VLDB)</i>,
-Montreal, Quebec, Canada,
-October 1980.
-</td>
-</tr>
-<tr>
-<td valign="top">
-<a name="Open94">[Open94]</a>
-</td>
-<td>
-<p>
-The Open Group,
-<i>Distributed TP: The XA+ Specification, Version 2</i>,
-The Open Group, 1994.
-</td>
-</tr>
-<tr>
-<td valign="top">
-<a name="Open99">[Open99]</a>
-</td>
-<td>
-<p>
-Opensource.org,
-&quot;Open Source Definition,&quot;
-<a href="http://www.opensource.org/osd.html"><i>www.opensource.org/osd.html</i></a>,
-version 1.4,
-1999.
-</td>
-</tr>
-<tr>
-<td valign="top">
-<a name="Raym98">[Raym98]</a>
-</td>
-<td>
-<p>
-Raymond, E.S.,
-&quot;The Cathedral and the Bazaar,&quot;
-<a href="http://www.tuxedo.org/~esr/writings/cathedral-bazaar/">
-www.tuxedo.org/~esr/writings/cathedral-bazaar/cathedral-bazaar.html</a>,
-January 1998.
-</td>
-</tr>
-<tr>
-<td valign="top">
-<a name="Selt91">[Selt91]</a>
-</td>
-<td>
-<p>
-Seltzer, M., and Yigit, O.,
-&quot;A New Hashing Package for UNIX,&quot;
-<i>Proceedings 1991 Winter USENIX Conference</i>,
-Dallas, TX,
-January 1991.
-</td>
-</tr>
-<tr>
-<td valign="top">
-<a name="Selt92">[Selt92]</a>
-</td>
-<td>
-<p>
-Seltzer, M., and Olson, M.,
-&quot;LIBTP: Portable Modular Transactions for UNIX,&quot;
-<i>Proceedings 1992 Winter Usenix Conference</i>
-San Francisco, CA,
-January 1992.]
-</td>
-</tr>
-<tr>
-<td valign="top">
-<a name="Ston82">[Ston82]</a>
-</td>
-<td>
-<p>
-Stonebraker, M., Stettner, H., Kalash, J., Guttman, A., and Lynn, N.,
-&quot;Document Processing in a Relational Database System,&quot;
-Memorandum No. UCB/ERL M82/32,
-University of California at Berkeley,
-Berkeley, CA,
-May 1982.
-</td>
-</tr>
-</table>
-</body>
-</html>
diff --git a/db/docs/ref/refs/refs.html b/db/docs/ref/refs/refs.html
index 5b9d764d1..ac72f798e 100644
--- a/db/docs/ref/refs/refs.html
+++ b/db/docs/ref/refs/refs.html
@@ -1,6 +1,5 @@
-<!--$Id: refs.so,v 10.28 2006/08/25 12:55:59 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: refs.so,v 10.30 2007/06/27 14:46:51 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -20,11 +19,11 @@ we recommend the following sources:</p>
<h3>Technical Papers on Berkeley DB</h3>
<p>These papers have appeared in refereed conference proceedings, and are
subject to copyrights held by the conference organizers and the authors
-of the papers. Oracle Corporation makes them available here as a courtesy
-with the permission of the copyright holders.</p>
+of the papers. Oracle makes them available here as a courtesy with the
+permission of the copyright holders.</p>
<dl compact>
<dt><i>Berkeley DB</i>
-(<a href="bdb_usenix.html">HTML</a>, <a href="bdb_usenix.ps">Postscript</a>)<dd>Michael Olson, Keith Bostic, and Margo Seltzer, Proceedings of the 1999
+(<a href="bdb_usenix.ps">Postscript</a>)<dd>Michael Olson, Keith Bostic, and Margo Seltzer, Proceedings of the 1999
Summer Usenix Technical Conference, Monterey, California, June 1999. This
paper describes recent commercial releases of Berkeley DB, its most important
features, the history of the software, and Sleepycat Software's Open Source
@@ -72,6 +71,6 @@ from <a href="http://research.microsoft.com/pubs/ccontrol/">http://research.micr
</dl>
<table width="100%"><tr><td><br></td><td align=right><a href="../distrib/layout.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/refs/witold.html b/db/docs/ref/refs/witold.html
index 00a90a45d..5664089a9 100644
--- a/db/docs/ref/refs/witold.html
+++ b/db/docs/ref/refs/witold.html
@@ -1,6 +1,5 @@
<!--$Id: witold.so,v 10.5 2001/06/09 14:34:45 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -19,6 +18,6 @@
chase up the mountains of Austria in search of very green wine.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/rep/app.html b/db/docs/ref/rep/app.html
index 82734ae42..99a75fcaa 100644
--- a/db/docs/ref/rep/app.html
+++ b/db/docs/ref/rep/app.html
@@ -1,6 +1,5 @@
-<!--$Id: app.so,v 1.29 2006/08/25 12:55:59 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: app.so,v 1.31 2007/05/17 18:17:18 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -86,6 +85,13 @@ startup rather than trying to reconfigure when the client becomes a
master). Obviously, at least one thread of control on each client must
be configured for replication as messages must be passed between the
master and the client.</p>
+<p>Any site in a replication group may have its own private
+transactional databases in the environment as well. A site may
+create a local database by using the <a href="../../api_c/db_set_flags.html#DB_TXN_NOT_DURABLE">DB_TXN_NOT_DURABLE</a>
+flag to the <a href="../../api_c/db_set_flags.html">DB-&gt;set_flags</a>. The application
+must never create a private database with the same name
+as a database replicated across the entire environment
+as data corruption can result.</p>
<p>For implementation reasons, all incoming replication messages must be
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
@@ -97,6 +103,6 @@ For Replication Manager applications, this also terminates all network
connections and background processing threads.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../rep/pri.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../rep/mgr_meth.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/rep/base_meth.html b/db/docs/ref/rep/base_meth.html
index 1e43c6d67..3e39b806a 100644
--- a/db/docs/ref/rep/base_meth.html
+++ b/db/docs/ref/rep/base_meth.html
@@ -1,6 +1,5 @@
-<!--$Id: base_meth.so,v 1.2 2006/08/24 17:58:53 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: base_meth.so,v 1.3 2007/03/21 23:48:54 alanb Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -34,6 +33,9 @@ client via <a href="../../api_c/rep_start.html">DB_ENV-&gt;rep_start</a>.
<dt><a href="../../api_c/rep_elect.html">DB_ENV-&gt;rep_elect</a><dd>The <a href="../../api_c/rep_elect.html">DB_ENV-&gt;rep_elect</a> method causes the replication group to elect a new
master; it is called whenever contact with the master is lost and the
application wants the remaining sites to select a new master.
+<dt><a href="../../api_c/env_event_notify.html">DB_ENV-&gt;set_event_notify</a><dd>The <a href="../../api_c/env_event_notify.html">DB_ENV-&gt;set_event_notify</a> method is needed for applications to
+discover important replication-related events, such as the result of
+an election and appointment of a new master.
<dt><a href="../../api_c/rep_priority.html">DB_ENV-&gt;rep_set_priority</a><dd>The <a href="../../api_c/rep_priority.html">DB_ENV-&gt;rep_set_priority</a> method configures the local site's priority for
the purpose of elections.
<dt><a href="../../api_c/rep_timeout.html">DB_ENV-&gt;rep_set_timeout</a><dd>Note that of all the various timeouts this method can set, only
@@ -52,10 +54,9 @@ before relinquishing control and accepting other messages.
</dl>
<p>In addition to the methods previously described, applications which use
the Base replication API may also call the following methods, as needed:
-<a href="../../api_c/env_event_notify.html">DB_ENV-&gt;set_event_notify</a>, <a href="../../api_c/rep_stat.html">DB_ENV-&gt;rep_stat</a>, <a href="../../api_c/rep_sync.html">DB_ENV-&gt;rep_sync</a>,
-<a href="../../api_c/rep_config.html">DB_ENV-&gt;rep_set_config</a>.</p>
+<a href="../../api_c/rep_stat.html">DB_ENV-&gt;rep_stat</a>, <a href="../../api_c/rep_sync.html">DB_ENV-&gt;rep_sync</a>, <a href="../../api_c/rep_config.html">DB_ENV-&gt;rep_set_config</a>.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../rep/mgr_meth.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../rep/comm.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/rep/bulk.html b/db/docs/ref/rep/bulk.html
index 9fe243d0f..8d5a35364 100644
--- a/db/docs/ref/rep/bulk.html
+++ b/db/docs/ref/rep/bulk.html
@@ -1,6 +1,5 @@
<!--$Id: bulk.so,v 1.4 2006/07/14 23:04:42 alanb Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -38,6 +37,6 @@ be configured. However, the overall size of a transfer may be limited
using the <a href="../../api_c/rep_limit.html">DB_ENV-&gt;rep_set_limit</a> method.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../rep/init.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../rep/trans.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/rep/comm.html b/db/docs/ref/rep/comm.html
index 4ce5833c1..1b1a53e1f 100644
--- a/db/docs/ref/rep/comm.html
+++ b/db/docs/ref/rep/comm.html
@@ -1,6 +1,5 @@
-<!--$Id: comm.so,v 1.18 2006/07/14 23:04:42 alanb Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: comm.so,v 1.19 2007/03/20 20:20:27 alanb Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -76,14 +75,6 @@ permanent record, perhaps a message previously returned as
written to disk. This record may have filled a gap in the log record that
allowed additional records to be written. The <b>ret_lsnp</b>
contains the maximum LSN of the permanent records written.
-<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-&gt;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 than 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-&gt;rep_start</a> method, and reconfigure the supporting Berkeley DB library as a
-replication master.
<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-&gt;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
been received. The application should reconfigure itself as necessary
@@ -99,6 +90,6 @@ is deemed necessary to retain its recoverability characteristics.
</dl>
<table width="100%"><tr><td><br></td><td align=right><a href="../rep/base_meth.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../rep/newsite.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/rep/elect.html b/db/docs/ref/rep/elect.html
index 645a34081..7e05b7d35 100644
--- a/db/docs/ref/rep/elect.html
+++ b/db/docs/ref/rep/elect.html
@@ -1,6 +1,5 @@
-<!--$Id: elect.so,v 1.23 2006/07/14 23:04:42 alanb Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: elect.so,v 1.27 2007/04/05 20:37:29 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -55,11 +54,45 @@ on B: priority 0, nsites 2</pre></blockquote>
<a href="../../api_c/rep_start.html">DB_ENV-&gt;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-&gt;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-&gt;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>
+An application knows it has won an election when it receives the
+<a href="../../api_c/env_event_notify.html#DB_EVENT_REP_ELECTED">DB_EVENT_REP_ELECTED</a> event.</p>
+<p>Normally, when a master failure is detected it is desired that an
+election finish quickly so the application can continue to service
+updates. Also, participating sites are already up and can participate.
+However, in the case of restarting a whole group after an administrative
+shut down, it is possible that a slower booting site had later logs than
+any other site. To cover that case, an application would like to give
+the election more time to ensure all sites have a chance to participate.
+Since it is intractable to for a starting site to determine which case
+the whole group is in, the use of a long timeout gives all sites a
+reasonable chance to participate. If an application wanting full
+participation sets the <b>nvotes</b> arg to the <a href="../../api_c/rep_elect.html">DB_ENV-&gt;rep_elect</a> method to
+the number of sites in the group and one site does not reboot, a master
+can never be elected without manual intervention.</p>
+<p>
+In those cases, the desired action at a group level is to hold
+a full election if all sites crashed and a majority election if
+a subset of sites crashed or rebooted. Since an individual site cannot know
+which number of votes to require, a mechanism is available to
+accomplish this using timeouts. By setting a long timeout (perhaps
+on the order of minutes) using the <b>DB_REP_FULL_ELECTION_TIMEOUT</b>
+flag to the <a href="../../api_c/rep_timeout.html">DB_ENV-&gt;rep_set_timeout</a> method, an application can
+allow Berkeley DB to elect a master even without full participation.
+Sites may also want to set a normal election timeout for majority
+based elections using the <b>DB_REP_ELECTION_TIMEOUT</b> flag
+to the <a href="../../api_c/rep_timeout.html">DB_ENV-&gt;rep_set_timeout</a> method.</p>
+<p>
+Consider 3 sites, A, B, and C where A is the master. In the
+case where all three sites crash and all reboot, all sites
+will set a timeout for a full election, say 10 minutes, but only
+require a majority for <b>nvotes</b> to the <a href="../../api_c/rep_elect.html">DB_ENV-&gt;rep_elect</a> method.
+Once all three sites are booted the election will complete
+immediately if they reboot within 10 minutes of each other. Consider
+if all three sites crash and only two reboot. The two sites will
+enter the election, but after the 10 minute timeout they will
+elect with the majority of two sites. Using the full election
+timeout sets a threshold for allowing a site to reboot and rejoin
+the group.</p>
<p>To add a database environment to the replication group with the intent
of it becoming the master, first add it as a client. Since it may be
out-of-date with respect to the current master, allow it to update
@@ -113,6 +146,6 @@ based on configuration information supplied to the
<a href="../../api_c/rep_priority.html">DB_ENV-&gt;rep_set_priority</a> method and the <a href="../../api_c/rep_nsites.html">DB_ENV-&gt;rep_set_nsites</a> method.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../rep/newsite.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../rep/mastersync.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/rep/ex.html b/db/docs/ref/rep/ex.html
index 61d75a5b3..07c407693 100644
--- a/db/docs/ref/rep/ex.html
+++ b/db/docs/ref/rep/ex.html
@@ -1,6 +1,5 @@
-<!--$Id: ex.so,v 1.7 2006/07/21 16:31:12 alanb Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: ex.so,v 1.8 2006/10/05 01:06:08 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -67,6 +66,6 @@ having particular clients take over as master in the case that the
master fails.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../rep/faq.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../rep/ex_comm.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/rep/ex_comm.html b/db/docs/ref/rep/ex_comm.html
index 6f9e51ea5..ed1748b5e 100644
--- a/db/docs/ref/rep/ex_comm.html
+++ b/db/docs/ref/rep/ex_comm.html
@@ -1,6 +1,5 @@
<!--$Id: ex_comm.so,v 1.9 2006/08/24 17:59:56 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -83,6 +82,6 @@ process architecture and is implemented by the following functions (all
in <b>ex_rep/base/rep_net.c</b>).</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../rep/ex.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../rep/ex_rq.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/rep/ex_rq.html b/db/docs/ref/rep/ex_rq.html
index 15a2af88b..909a02c5f 100644
--- a/db/docs/ref/rep/ex_rq.html
+++ b/db/docs/ref/rep/ex_rq.html
@@ -1,6 +1,5 @@
<!--$Id: ex_rq.so,v 1.7 2006/08/24 18:01:51 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -57,6 +56,6 @@ number of sockets and either look up the correct environment ID for each
or encapsulate the ID in the communications protocol.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../rep/ex_comm.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../xa/intro.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/rep/faq.html b/db/docs/ref/rep/faq.html
index 8dbbd1996..06fb03274 100644
--- a/db/docs/ref/rep/faq.html
+++ b/db/docs/ref/rep/faq.html
@@ -1,6 +1,5 @@
<!--$Id: faq.so,v 1.12 2006/09/07 19:26:44 alanb Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -101,6 +100,6 @@ no longer have to maintain their own specific network connections.</p>
</ol>
<table width="100%"><tr><td><br></td><td align=right><a href="../rep/partition.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../rep/ex.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/rep/id.html b/db/docs/ref/rep/id.html
index 66caca346..7fc887b54 100644
--- a/db/docs/ref/rep/id.html
+++ b/db/docs/ref/rep/id.html
@@ -1,6 +1,5 @@
<!--$Id: id.so,v 1.8 2006/07/14 23:04:42 alanb Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -42,6 +41,6 @@ checked for validity.
the application.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../rep/intro.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../rep/pri.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/rep/init.html b/db/docs/ref/rep/init.html
index f7b3d95bd..44813f8f1 100644
--- a/db/docs/ref/rep/init.html
+++ b/db/docs/ref/rep/init.html
@@ -1,6 +1,5 @@
<!--$Id: init.so,v 1.6 2005/10/19 19:11:20 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -53,6 +52,6 @@ harmless to do this on both clients and masters even when not strictly
necessary.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../rep/mastersync.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../rep/bulk.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/rep/intro.html b/db/docs/ref/rep/intro.html
index 72856c6c3..bf883fbcc 100644
--- a/db/docs/ref/rep/intro.html
+++ b/db/docs/ref/rep/intro.html
@@ -1,10 +1,9 @@
-<!--$Id: intro.so,v 1.10 2006/08/24 17:56:26 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: intro.so,v 1.11 2006/11/13 18:05:02 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
-<title>Berkeley DB Reference Guide: Introduction</title>
+<title>Berkeley DB Reference Guide: Replication introduction</title>
<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
</head>
@@ -15,7 +14,7 @@
<td align=right><a href="../transapp/faq.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../rep/id.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
<p>
-<h3 align=center>Introduction</h3>
+<h3 align=center>Replication introduction</h3>
<p>Berkeley DB includes support for building highly available applications based
on replication. Berkeley DB replication groups consist of some number of
independently configured database environments. There is a single
@@ -82,7 +81,7 @@ implemented to perform database updates using a different code path than
the standard ones. This means operations that manage to crash the
replication master due to a software bug will not necessarily also crash
replication clients.</p>
-<!--$Id: m4.methods,v 1.8 2006/09/07 16:17:58 bostic Exp $-->
+<!--$Id: m4.methods,v 1.10 2007/06/22 16:57:17 bostic Exp $-->
<table border=1 align=center>
<tr><th>Replication Manager Methods</th><th>Description</th></tr>
<!--DbEnv::repmgr_add_remote_site--><tr><td><a href="../../api_c/repmgr_remote_site.html">DB_ENV-&gt;repmgr_add_remote_site</a></td><td>Specify the replication manager's remote sites</td></tr>
@@ -90,6 +89,7 @@ replication clients.</p>
<!--DbEnv::repmgr_set_local_site--><tr><td><a href="../../api_c/repmgr_local_site.html">DB_ENV-&gt;repmgr_set_local_site</a></td><td>Specify the replication manager's local site</td></tr>
<!--DbEnv::repmgr_site_list--><tr><td><a href="../../api_c/repmgr_site_list.html">DB_ENV-&gt;repmgr_site_list</a></td><td>List the sites and their status</td></tr>
<!--DbEnv::repmgr_start--><tr><td><a href="../../api_c/repmgr_start.html">DB_ENV-&gt;repmgr_start</a></td><td>Start the replication manager</td></tr>
+<!--DbEnv::repmgr_stat--><tr><td><a href="../../api_c/repmgr_stat.html">DB_ENV-&gt;repmgr_stat</a></td><td>Replication manager statistics</td></tr>
<tr><th>Base Replication API</th><th><br></th></tr>
<!--DbEnv::rep_elect--><tr><td><a href="../../api_c/rep_elect.html">DB_ENV-&gt;rep_elect</a></td><td>Hold a replication election</td></tr>
<!--DbEnv::rep_process_message--><tr><td><a href="../../api_c/rep_message.html">DB_ENV-&gt;rep_process_message</a></td><td>Process a replication message</td></tr>
@@ -102,11 +102,12 @@ replication clients.</p>
<!--DbEnv::rep_set_limit--><tr><td><a href="../../api_c/rep_limit.html">DB_ENV-&gt;rep_set_limit</a></td><td>Limit data sent in response to a single message</td></tr>
<!--DbEnv::rep_set_nsites--><tr><td><a href="../../api_c/rep_nsites.html">DB_ENV-&gt;rep_set_nsites</a></td><td>Configure replication group site count</td></tr>
<!--DbEnv::rep_set_priority--><tr><td><a href="../../api_c/rep_priority.html">DB_ENV-&gt;rep_set_priority</a></td><td>Configure replication site priority</td></tr>
+<!--DbEnv::rep_set_request--><tr><td><a href="../../api_c/rep_request.html">DB_ENV-&gt;rep_set_request</a></td><td>Configure replication client retransmission requests</td></tr>
<!--DbEnv::rep_set_timeout--><tr><td><a href="../../api_c/rep_timeout.html">DB_ENV-&gt;rep_set_timeout</a></td><td>Configure replication timeouts</td></tr>
<!--DbEnv::rep_set_transport--><tr><td><a href="../../api_c/rep_transport.html">DB_ENV-&gt;rep_set_transport</a></td><td>Configure replication transport callback</td></tr>
</table>
<table width="100%"><tr><td><br></td><td align=right><a href="../transapp/faq.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../rep/id.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/rep/mastersync.html b/db/docs/ref/rep/mastersync.html
index 91a3e438f..24f3bd259 100644
--- a/db/docs/ref/rep/mastersync.html
+++ b/db/docs/ref/rep/mastersync.html
@@ -1,6 +1,5 @@
-<!--$Id: mastersync.so,v 1.11 2006/08/24 17:59:56 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: mastersync.so,v 1.13 2007/03/20 20:20:27 alanb Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -31,10 +30,8 @@ should call the <a href="../../api_c/rep_config.html">DB_ENV-&gt;rep_set_config<
<a href="../../api_c/rep_config.html#DB_REP_CONF_DELAYCLIENT">DB_REP_CONF_DELAYCLIENT</a> flag. The application will be
notified of the establishment of the new master as usual, but the
client will not proceed to synchronize with the new master.</p>
-<p>Replication Manager notifies applications of a new master via the
-<a href="../../api_c/env_event_notify.html#DB_EVENT_REP_NEWMASTER">DB_EVENT_REP_NEWMASTER</a> event. Applications using the Base
-replication API learn of a new master when the
-<a href="../../api_c/rep_message.html">DB_ENV-&gt;rep_process_message</a> method returns <a href="../../api_c/rep_message.html#DB_REP_NEWMASTER">DB_REP_NEWMASTER</a>.</p>
+<p>Applications learn of a new master via the
+<a href="../../api_c/env_event_notify.html#DB_EVENT_REP_NEWMASTER">DB_EVENT_REP_NEWMASTER</a> event.</p>
<p>Client applications choosing to delay synchronization in this manner are
responsible for synchronizing the client environment at some future time
using the <a href="../../api_c/rep_sync.html">DB_ENV-&gt;rep_sync</a> method.</p>
@@ -54,7 +51,7 @@ information. The requesting client will then re-issue the request.
Additionally, if the original request never reaches the other client,
the requesting client will again re-issue the request. In either of
these cases the message will be marked with the <a href="../../api_c/rep_transport.html#DB_REP_REREQUEST">DB_REP_REREQUEST</a>
-flag. The application may continue trying find another client to
+flag. The application may continue trying to find another client to
service the request, or it may give up and simply send it to the master
(that is, the environment ID explicitly specified to the transport
function).</p>
@@ -113,6 +110,6 @@ time. This can be accomplished by turning off the
or by performing a hot backup.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../rep/elect.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../rep/init.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/rep/mgr_meth.html b/db/docs/ref/rep/mgr_meth.html
index c8a284dee..eaa66efdb 100644
--- a/db/docs/ref/rep/mgr_meth.html
+++ b/db/docs/ref/rep/mgr_meth.html
@@ -1,6 +1,5 @@
<!--$Id: mgr_meth.so,v 1.8 2006/09/08 18:33:38 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -67,6 +66,6 @@ applications may also call the following methods, as needed:
<a href="../../api_c/rep_stat.html">DB_ENV-&gt;rep_stat</a>.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../rep/app.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../rep/base_meth.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/rep/newsite.html b/db/docs/ref/rep/newsite.html
index 6d53e8a5f..683fb22f2 100644
--- a/db/docs/ref/rep/newsite.html
+++ b/db/docs/ref/rep/newsite.html
@@ -1,6 +1,5 @@
<!--$Id: newsite.so,v 1.7 2006/08/24 17:58:53 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -47,6 +46,6 @@ parameter passed to the <a href="../../api_c/rep_message.html">DB_ENV-&gt;rep_pr
the mechanisms previously described.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../rep/comm.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../rep/elect.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/rep/partition.html b/db/docs/ref/rep/partition.html
index 2236f9520..cbe5bb3f7 100644
--- a/db/docs/ref/rep/partition.html
+++ b/db/docs/ref/rep/partition.html
@@ -1,6 +1,5 @@
<!--$Id: partition.so,v 1.6 2006/08/25 12:56:00 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -99,6 +98,6 @@ pick a single master, and only hold elections when human intervention
has determined the selected master is unable to recover at all.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../rep/trans.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../rep/faq.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/rep/pri.html b/db/docs/ref/rep/pri.html
index b7110db5c..04d7b5e11 100644
--- a/db/docs/ref/rep/pri.html
+++ b/db/docs/ref/rep/pri.html
@@ -1,6 +1,5 @@
<!--$Id: pri.so,v 1.7 2006/07/14 23:04:42 alanb Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -36,6 +35,6 @@ the client priority. If both sites have the same number of log
records and the same priority, one is selected at random.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../rep/id.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../rep/app.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/rep/trans.html b/db/docs/ref/rep/trans.html
index ad0a6bef3..c902672b8 100644
--- a/db/docs/ref/rep/trans.html
+++ b/db/docs/ref/rep/trans.html
@@ -1,6 +1,5 @@
<!--$Id: trans.so,v 1.18 2006/08/24 17:58:53 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -251,6 +250,6 @@ can be found in the <a href="../../ref/xa/intro.html">Distributed
Transactions</a> chapter.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../rep/bulk.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../rep/partition.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/rpc/client.html b/db/docs/ref/rpc/client.html
index 7e0e3cffe..f3a7af513 100644
--- a/db/docs/ref/rpc/client.html
+++ b/db/docs/ref/rpc/client.html
@@ -1,6 +1,5 @@
<!--$Id: client.so,v 1.12 2003/10/18 19:16:07 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -79,6 +78,6 @@ is usually significantly less than when Berkeley DB is embedded within the
client's address space, even if the RPC is to a local address.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../rpc/intro.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../rpc/server.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/rpc/faq.html b/db/docs/ref/rpc/faq.html
index e20b7c4d6..4a64479a6 100644
--- a/db/docs/ref/rpc/faq.html
+++ b/db/docs/ref/rpc/faq.html
@@ -1,6 +1,5 @@
<!--$Id: faq.so,v 1.3 2004/10/05 16:44:35 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -27,6 +26,6 @@ client timeout value.</p>
</ol>
<table width="100%"><tr><td><br></td><td align=right><a href="../rpc/server.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../tcl/intro.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/rpc/intro.html b/db/docs/ref/rpc/intro.html
index 10d798c83..d124a5d91 100644
--- a/db/docs/ref/rpc/intro.html
+++ b/db/docs/ref/rpc/intro.html
@@ -1,10 +1,9 @@
-<!--$Id: intro.so,v 1.17 2004/08/18 19:57:37 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: intro.so,v 1.18 2006/11/13 18:05:03 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
-<title>Berkeley DB Reference Guide: Introduction</title>
+<title>Berkeley DB Reference Guide: Introduction to the RPC client/server</title>
<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
</head>
@@ -15,7 +14,7 @@
<td align=right><a href="../sequence/intro.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../rpc/client.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
<p>
-<h3 align=center>Introduction</h3>
+<h3 align=center>Introduction to the RPC client/server</h3>
<p>Berkeley DB includes an implementation of a client-server protocol using Sun
Microsystem's Remote Procedure Call Protocol. RPC support is
available only for UNIX systems, and is not included in the Berkeley DB library by
@@ -74,6 +73,6 @@ database resides.
</ol>
<table width="100%"><tr><td><br></td><td align=right><a href="../sequence/intro.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../rpc/client.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/rpc/server.html b/db/docs/ref/rpc/server.html
index f4da0c572..ccaef7211 100644
--- a/db/docs/ref/rpc/server.html
+++ b/db/docs/ref/rpc/server.html
@@ -1,6 +1,5 @@
<!--$Id: server.so,v 1.8 2002/06/17 18:38:43 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -50,6 +49,6 @@ machine. This means, of course, that only one environment of a
particular name is allowed on the server at any given time.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../rpc/client.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../rpc/faq.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/sequence/intro.html b/db/docs/ref/sequence/intro.html
index d3d1ba5a6..b188703f9 100644
--- a/db/docs/ref/sequence/intro.html
+++ b/db/docs/ref/sequence/intro.html
@@ -1,10 +1,9 @@
-<!--$Id: intro.so,v 1.4 2004/10/18 19:46:31 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: intro.so,v 1.5 2006/11/13 18:05:03 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
-<title>Berkeley DB Reference Guide: Introduction</title>
+<title>Berkeley DB Reference Guide: Introduction to sequences</title>
<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
</head>
@@ -15,7 +14,7 @@
<td align=right><a href="../txn/limits.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../rpc/intro.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
<p>
-<h3 align=center>Introduction</h3>
+<h3 align=center>Introduction to sequences</h3>
<p>Sequences provide an arbitrary number of persistent objects that return
an increasing or decreasing sequence of integers. Opening a sequence
handle associates it with a record in a database. The handle can
@@ -58,6 +57,6 @@ transaction handle must be passed to the <a href="../../api_c/seq_get.html">DB_S
</table>
<table width="100%"><tr><td><br></td><td align=right><a href="../txn/limits.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../rpc/intro.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/simple_tut/example.txt b/db/docs/ref/simple_tut/example.txt
deleted file mode 100644
index e610648d1..000000000
--- a/db/docs/ref/simple_tut/example.txt
+++ /dev/null
@@ -1,73 +0,0 @@
-#include <sys/types.h>
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "db.h"
-
-#define DATABASE "access.db"
-
-int
-main()
-{
- DB *dbp;
- DBT key, data;
- int ret, t_ret;
-
- /* Create the database handle and open the underlying database. */
- if ((ret = db_create(&dbp, NULL, 0)) != 0) {
- fprintf(stderr, "db_create: %s\n", db_strerror(ret));
- exit (1);
- }
- if ((ret =
- dbp->open(dbp, DATABASE, NULL, DB_BTREE, DB_CREATE, 0664)) != 0) {
- dbp->err(dbp, ret, "%s", DATABASE);
- goto err;
- }
-
- /* Initialize key/data structures. */
- memset(&key, 0, sizeof(key));
- memset(&data, 0, sizeof(data));
- key.data = "fruit";
- key.size = sizeof("fruit");
- data.data = "apple";
- data.size = sizeof("apple");
-
- /* Store a key/data pair. */
- if ((ret = dbp->put(dbp, NULL, &key, &data, 0)) == 0)
- printf("db: %s: key stored.\n", (char *)key.data);
- else {
- dbp->err(dbp, ret, "DB->put");
- goto err;
- }
-
- /* Retrieve a key/data pair. */
- if ((ret = dbp->get(dbp, NULL, &key, &data, 0)) == 0)
- printf("db: %s: key retrieved: data was %s.\n",
- (char *)key.data, (char *)data.data);
- else {
- dbp->err(dbp, ret, "DB->get");
- goto err;
- }
-
- /* Delete a key/data pair. */
- if ((ret = dbp->del(dbp, NULL, &key, 0)) == 0)
- printf("db: %s: key was deleted.\n", (char *)key.data);
- else {
- dbp->err(dbp, ret, "DB->del");
- goto err;
- }
-
- /* Retrieve a key/data pair. */
- if ((ret = dbp->get(dbp, NULL, &key, &data, 0)) == 0)
- printf("db: %s: key retrieved: data was %s.\n",
- (char *)key.data, (char *)data.data);
- else
- dbp->err(dbp, ret, "DB->get");
-
-err: if ((t_ret = dbp->close(dbp, 0)) != 0 && ret == 0)
- ret = t_ret;
-
- exit(ret);
-}
diff --git a/db/docs/ref/tcl/error.html b/db/docs/ref/tcl/error.html
index bb1b9fc96..ebb873a31 100644
--- a/db/docs/ref/tcl/error.html
+++ b/db/docs/ref/tcl/error.html
@@ -1,6 +1,5 @@
<!--$Id: error.so,v 11.17 2001/06/19 19:45:47 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -66,6 +65,6 @@ more descriptive prefix is desired or where a constant prefix indicating
an error is desired.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../tcl/program.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../tcl/faq.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/tcl/faq.html b/db/docs/ref/tcl/faq.html
index 244f452ca..b93ddac37 100644
--- a/db/docs/ref/tcl/faq.html
+++ b/db/docs/ref/tcl/faq.html
@@ -1,6 +1,5 @@
<!--$Id: faq.so,v 11.10 2004/10/05 16:44:35 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -53,6 +52,6 @@ file built by Tcl does not.</p>
</ol>
<table width="100%"><tr><td><br></td><td align=right><a href="../tcl/error.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../ext/mod.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/tcl/intro.html b/db/docs/ref/tcl/intro.html
index 6ce5795cb..76d5f43c7 100644
--- a/db/docs/ref/tcl/intro.html
+++ b/db/docs/ref/tcl/intro.html
@@ -1,6 +1,5 @@
<!--$Id: intro.so,v 11.25 2006/06/06 17:21:17 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -38,21 +37,21 @@ several steps that must be performed:</p>
</ol>
<p>For example:</p>
<blockquote><pre># tclsh8.4
-% lappend auto_path /usr/local/BerkeleyDB.4.5/lib
-% pkg_mkIndex /usr/local/BerkeleyDB.4.5/lib libdb_tcl-4.5.so</pre></blockquote>
+% lappend auto_path /usr/local/BerkeleyDB.4.6/lib
+% pkg_mkIndex /usr/local/BerkeleyDB.4.6/lib libdb_tcl-4.6.so</pre></blockquote>
<p>Note that your Tcl and Berkeley DB version numbers may differ from the
example, and so your tclsh and library names may be different.</p>
<h3>Loading Berkeley DB with Tcl</h3>
<p>The Berkeley DB package may be loaded into the user's interactive Tcl script
(or wish session) via the <b>load</b> command. For example:</p>
-<blockquote><pre>load /usr/local/BerkeleyDB.4.5/lib/libdb_tcl-4.5.so</pre></blockquote>
+<blockquote><pre>load /usr/local/BerkeleyDB.4.6/lib/libdb_tcl-4.6.so</pre></blockquote>
<p>Note that your Berkeley DB version numbers may differ from the example, and so
the library name may be different.</p>
<p>If you installed your library to run as a Tcl package, Tcl application
scripts should use the <b>package</b> command to indicate to the Tcl
interpreter that it needs the Berkeley DB package and where to find it. For
example:</p>
-<blockquote><pre>lappend auto_path "/usr/local/BerkeleyDB.4.5/lib"
+<blockquote><pre>lappend auto_path "/usr/local/BerkeleyDB.4.6/lib"
package require Db_tcl</pre></blockquote>
<p>No matter which way the library gets loaded, it creates a command named
<b>berkdb</b>. All the Berkeley DB functionality is accessed via this
@@ -63,6 +62,6 @@ display the library version, as follows:</p>
<p>This should return you the Berkeley DB version in a string format.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../rpc/faq.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../tcl/using.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/tcl/program.html b/db/docs/ref/tcl/program.html
index 8c3903335..c390ff092 100644
--- a/db/docs/ref/tcl/program.html
+++ b/db/docs/ref/tcl/program.html
@@ -1,6 +1,5 @@
<!--$Id: program.so,v 11.15 2006/07/24 17:46:17 sue Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -30,6 +29,6 @@ supported via the Tcl API. For example, there is no equivalent to the
methods.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../tcl/using.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../tcl/error.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/tcl/using.html b/db/docs/ref/tcl/using.html
index 4ff23608f..0df767e3a 100644
--- a/db/docs/ref/tcl/using.html
+++ b/db/docs/ref/tcl/using.html
@@ -1,6 +1,5 @@
<!--$Id: using.so,v 11.9 2004/11/03 16:38:07 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -50,6 +49,6 @@ list the correct operations for a command or the correct options.</p>
<a href="../../api_tcl/api_tcl.html">Tcl Interface</a> documentation.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../tcl/intro.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../tcl/program.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/test/faq.html b/db/docs/ref/test/faq.html
index b8eee9572..d5741e38a 100644
--- a/db/docs/ref/test/faq.html
+++ b/db/docs/ref/test/faq.html
@@ -1,6 +1,5 @@
<!--$Id: faq.so,v 10.5 2003/03/19 20:20:34 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -24,6 +23,6 @@ run is making forward progress and new lines are being written to the
</ol>
<table width="100%"><tr><td><br></td><td align=right><a href="../test/run.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../distrib/port.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/test/run.html b/db/docs/ref/test/run.html
index 0632a16b9..b2b04e3d4 100644
--- a/db/docs/ref/test/run.html
+++ b/db/docs/ref/test/run.html
@@ -1,6 +1,5 @@
-<!--$Id: run.so,v 10.47 2005/12/08 13:41:55 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: run.so,v 10.48 2006/10/02 15:56:35 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -12,7 +11,7 @@
<a name="2"><!--meow--></a>
<table width="100%"><tr valign=top>
<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Test Suite</dl></h3></td>
-<td align=right><a href="../upgrade.4.5/disk.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../test/faq.html"><img src="../../images/next.gif" alt="Next"></a>
+<td align=right><a href="../upgrade.4.6/disk.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../test/faq.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
<p>
<h3 align=center>Running the test suite</h3>
@@ -54,8 +53,8 @@ Regardless of where you run the tests, the TESTDIR directory should be
on a local filesystem. Using a remote filesystem (for example, an NFS
mounted filesystem) will almost certainly cause spurious test
failures.</p>
-<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.5/disk.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../test/faq.html"><img src="../../images/next.gif" alt="Next"></a>
+<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.6/disk.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../test/faq.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/toc.html b/db/docs/ref/toc.html
index 2ed354545..4d0c4d998 100644
--- a/db/docs/ref/toc.html
+++ b/db/docs/ref/toc.html
@@ -1,14 +1,14 @@
-<!--$Id: toc.html,v 10.286 2006/09/20 16:04:05 bostic Exp $-->
+<!--$Id: toc.html,v 10.295 2007/07/10 16:56:58 bostic Exp $-->
<html>
<head>
-<title>Berkeley DB Reference Guide (Version: 4.5.20)</title>
+<title>Berkeley DB Reference Guide (Version: 4.6.18)</title>
<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
</head>
<body bgcolor=white>
<center>
-<h2><b>Berkeley DB Reference Guide, Version 4.5.20</b></h2>
+<h2><b>Berkeley DB Reference Guide, Version 4.6.18</b></h2>
</center>
<ol>
@@ -130,13 +130,13 @@
</ol>
<font size="+1"><li><a name="cam">Berkeley DB Concurrent Data Store Applications</a></font>
<ol>
- <li><a href="cam/intro.html">Berkeley DB Concurrent Data Store applications</a>
+ <li><a href="cam/intro.html">Concurrent Data Store introduction</a>
<li><a href="cam/fail.html">Handling failure in Data Store and Concurrent Data Store applications</a>
<li><a href="cam/app.html">Architecting Data Store and Concurrent Data Store applications</a>
</ol>
<font size="+1"><li><a name="transapp">Berkeley DB Transactional Data Store Applications</a></font>
<ol>
- <li><a href="transapp/intro.html">Berkeley DB Transactional Data Store applications</a>
+ <li><a href="transapp/intro.html">Transactional Data Store introduction</a>
<li><a href="transapp/why.html">Why transactions?</a>
<li><a href="transapp/term.html">Terminology</a>
<li><a href="transapp/fail.html">Handling failure in Transactional Data Store applications</a>
@@ -164,7 +164,7 @@
</ol>
<font size="+1"><li><a name="rep">Berkeley DB Replication</a></font>
<ol>
- <li><a href="rep/intro.html">Introduction</a>
+ <li><a href="rep/intro.html">Replication introduction</a>
<li><a href="rep/id.html">Replication environment IDs</a>
<li><a href="rep/pri.html">Replication environment priorities</a>
<li><a href="rep/app.html">Building replicated applications</a>
@@ -185,15 +185,15 @@
</ol>
<font size="+1"><li><a name="xa">Distributed Transactions</a></font>
<ol>
- <li><a href="xa/intro.html">Introduction</a>
+ <li><a href="xa/intro.html">Introduction to distributed transactions</a>
<li><a href="xa/build.html">Building a Global Transaction Manager</a>
<li><a href="xa/xa_intro.html">XA Introduction</a>
<li><a href="xa/xa_config.html">Configuring Berkeley DB with the Tuxedo System</a>
- <li><a href="xa/faq.html">Frequently Asked Questions</a>
+ <li><a href="xa/faq.html">XA: Frequently Asked Questions</a>
</ol>
<font size="+1"><li><a name="apprec">Application Specific Logging and Recovery</a></font>
<ol>
- <li><a href="apprec/intro.html">Introduction</a>
+ <li><a href="apprec/intro.html">Introduction to application specific logging and recovery</a>
<li><a href="apprec/def.html">Defining application-specific log records</a>
<li><a href="apprec/auto.html">Automatically generated functions</a>
<li><a href="apprec/config.html">Application configuration</a>
@@ -215,7 +215,7 @@
</ol>
<font size="+1"><li><a name="lock">The Locking Subsystem</a></font>
<ol>
- <li><a href="lock/intro.html">Berkeley DB and locking</a>
+ <li><a href="lock/intro.html">Introduction to the locking subsystem</a>
<li><a href="lock/config.html">Configuring locking</a>
<li><a href="lock/max.html">Configuring locking: sizing the system</a>
<li><a href="lock/stdmode.html">Standard lock modes</a>
@@ -231,28 +231,28 @@
</ol>
<font size="+1"><li><a name="log">The Logging Subsystem</a></font>
<ol>
- <li><a href="log/intro.html">Berkeley DB and logging</a>
+ <li><a href="log/intro.html">Introduction to the logging subsystem</a>
<li><a href="log/config.html">Configuring logging</a>
<li><a href="log/limits.html">Log file limits</a>
</ol>
<font size="+1"><li><a name="mp">The Memory Pool Subsystem</a></font>
<ol>
- <li><a href="mp/intro.html">Berkeley DB and the memory pool</a>
+ <li><a href="mp/intro.html">Introduction to the memory pool subsystem</a>
<li><a href="mp/config.html">Configuring the memory pool</a>
</ol>
<font size="+1"><li><a name="txn">The Transaction Subsystem</a></font>
<ol>
- <li><a href="txn/intro.html">Berkeley DB and transactions</a>
+ <li><a href="txn/intro.html">Introduction to the transaction subsystem</a>
<li><a href="txn/config.html">Configuring transactions</a>
<li><a href="txn/limits.html">Transaction limits</a>
</ol>
-<font size="+1"><li><a name="txn">Sequences</a></font>
+<font size="+1"><li><a name="sequence">Sequences</a></font>
<ol>
- <li><a href="sequence/intro.html">Sequences</a>
+ <li><a href="sequence/intro.html">Introduction to sequences</a>
</ol>
<font size="+1"><li><a name="rpc">RPC Client/Server</a></font>
<ol>
- <li><a href="rpc/intro.html">Introduction</a>
+ <li><a href="rpc/intro.html">Introduction to the RPC client/server</a>
<li><a href="rpc/client.html">Client program</a>
<li><a href="rpc/server.html">Server program</a>
<li><a href="rpc/faq.html">RPC FAQ</a>
@@ -284,15 +284,22 @@
</ol>
<font size="+1"><li><a name="debug">Debugging Applications</a></font>
<ol>
- <li><a href="debug/intro.html">Introduction</a>
+ <li><a href="debug/intro.html">Introduction to debugging</a>
<li><a href="debug/compile.html">Compile-time configuration</a>
<li><a href="debug/runtime.html">Run-time error information</a>
<li><a href="debug/printlog.html">Reviewing Berkeley DB log files</a>
- <li><a href="debug/common.html">Troubleshooting common Berkeley DB problems</a>
</ol>
-<font size="+1"><li><a name="build_unix">Building Berkeley DB for UNIX/POSIX systems</a></font>
+<font size="+1"><li><a name="build_brew">Building Berkeley DB for BREW</a></font>
<ol>
- <li><a href="build_unix/intro.html">Building for UNIX</a>
+ <li><a href="build_brew/intro.html">Building for BREW</a>
+ </ol>
+<font size="+1"><li><a name="build_brew">Building Berkeley DB for S60</a></font>
+ <ol>
+ <li><a href="build_s60/intro.html">Building for S60</a>
+ </ol>
+<font size="+1"><li><a name="build_unix">Building Berkeley DB for UNIX/POSIX</a></font>
+ <ol>
+ <li><a href="build_unix/intro.html">Building for UNIX/POSIX</a>
<li><a href="build_unix/conf.html">Configuring Berkeley DB</a>
<li><a href="build_unix/small.html">Building a small memory footprint library</a>
<li><a href="build_unix/flags.html">Changing compile or load options</a>
@@ -314,7 +321,7 @@
<a href="build_unix/sunos.html">SunOS</a>,
<a href="build_unix/ultrix.html">Ultrix</a>
</ol>
-<font size="+1"><li><a name="build_win">Building Berkeley DB for Windows systems</a></font>
+<font size="+1"><li><a name="build_win">Building Berkeley DB for Windows</a></font>
<ol>
<li><a href="build_win/intro.html">Building for Windows</a>
<li><a href="build_win/small.html">Building a small memory footprint library</a>
@@ -322,7 +329,13 @@
<li><a href="build_win/notes.html">Windows notes</a>
<li><a href="build_win/faq.html">Windows FAQ</a>
</ol>
-<font size="+1"><li><a name="build_vxworks">Building Berkeley DB for VxWorks systems</a></font>
+<font size="+1"><li><a name="build_wince">Building Berkeley DB for Windows CE</a></font>
+ <ol>
+ <li><a href="build_wince/intro.html">Building for Windows CE</a>
+ <li><a href="build_wince/notes.html">Windows CE notes</a>
+ <li><a href="build_wince/faq.html">Windows CE FAQ</a>
+ </ol>
+<font size="+1"><li><a name="build_vxworks">Building Berkeley DB for VxWorks</a></font>
<ol>
<li><a href="build_vxworks/intro.html">Building for VxWorks 5.4 and 5.5</a>
<li><a href="build_vxworks/notes.html">VxWorks notes</a>
@@ -331,30 +344,32 @@
<font size="+1"><li><a name="upgrade">Upgrading Berkeley DB Applications</a></font>
<ol>
<li><a href="upgrade/version.html">Library version information</a>
- <li><a href="upgrade/process.html">
- Upgrading Berkeley DB installations</a>
+ <li><a href="upgrade/process.html">Upgrading Berkeley DB installations</a>
+ <li><a href="changelog/toc.html">Berkeley DB Release Change Logs</a>
<li><a href="upgrade.2.0/toc.html">
- Upgrading Berkeley DB 1.XX applications to Berkeley DB 2.0</a>
+ Upgrading Berkeley DB 1.85 and 1.86 applications to Berkeley DB 2.0</a>
<li><a href="upgrade.3.0/toc.html">
- Upgrading Berkeley DB 2.X.X applications to Berkeley DB 3.0</a>
+ Upgrading Berkeley DB 2.X applications to Berkeley DB 3.0</a>
<li><a href="upgrade.3.1/toc.html">
- Upgrading Berkeley DB 3.0.X applications to Berkeley DB 3.1</a>
+ Upgrading Berkeley DB 3.0 applications to Berkeley DB 3.1</a>
<li><a href="upgrade.3.2/toc.html">
- Upgrading Berkeley DB 3.1.X applications to Berkeley DB 3.2</a>
+ Upgrading Berkeley DB 3.1 applications to Berkeley DB 3.2</a>
<li><a href="upgrade.3.3/toc.html">
- Upgrading Berkeley DB 3.2.X applications to Berkeley DB 3.3</a>
+ Upgrading Berkeley DB 3.2 applications to Berkeley DB 3.3</a>
<li><a href="upgrade.4.0/toc.html">
- Upgrading Berkeley DB 3.3.X applications to Berkeley DB 4.0</a>
+ Upgrading Berkeley DB 3.3 applications to Berkeley DB 4.0</a>
<li><a href="upgrade.4.1/toc.html">
- Upgrading Berkeley DB 4.0.X applications to Berkeley DB 4.1</a>
+ Upgrading Berkeley DB 4.0 applications to Berkeley DB 4.1</a>
<li><a href="upgrade.4.2/toc.html">
- Upgrading Berkeley DB 4.1.X applications to Berkeley DB 4.2</a>
+ Upgrading Berkeley DB 4.1 applications to Berkeley DB 4.2</a>
<li><a href="upgrade.4.3/toc.html">
- Upgrading Berkeley DB 4.2.X applications to Berkeley DB 4.3</a>
+ Upgrading Berkeley DB 4.2 applications to Berkeley DB 4.3</a>
<li><a href="upgrade.4.4/toc.html">
- Upgrading Berkeley DB 4.3.X applications to Berkeley DB 4.4</a>
+ Upgrading Berkeley DB 4.3 applications to Berkeley DB 4.4</a>
<li><a href="upgrade.4.5/toc.html">
- Upgrading Berkeley DB 4.4.X applications to Berkeley DB 4.5</a>
+ Upgrading Berkeley DB 4.4 applications to Berkeley DB 4.5</a>
+ <li><a href="upgrade.4.6/toc.html">
+ Upgrading Berkeley DB 4.5 applications to Berkeley DB 4.6</a>
</ol>
<font size="+1"><li><a name="test">Test Suite</a></font>
<ol>
diff --git a/db/docs/ref/transapp/admin.html b/db/docs/ref/transapp/admin.html
index 7ba2b80ee..b93c024cd 100644
--- a/db/docs/ref/transapp/admin.html
+++ b/db/docs/ref/transapp/admin.html
@@ -1,6 +1,5 @@
<!--$Id: admin.so,v 10.17 2001/03/02 21:01:21 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -43,6 +42,6 @@ scripting interface because the scripting APIs do not always offer
interfaces to the administrative functionality.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../transapp/nested.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../transapp/deadlock.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/transapp/app.html b/db/docs/ref/transapp/app.html
index a1a875e64..831ae74b4 100644
--- a/db/docs/ref/transapp/app.html
+++ b/db/docs/ref/transapp/app.html
@@ -1,6 +1,5 @@
<!--$Id: app.so,v 10.28 2006/02/28 16:30:53 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -211,6 +210,6 @@ control, it is important the watcher process' code be as simple and
well-tested as possible, because the application may hang if it fails.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../transapp/fail.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../transapp/env_open.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/transapp/archival.html b/db/docs/ref/transapp/archival.html
index b505c5e62..377068242 100644
--- a/db/docs/ref/transapp/archival.html
+++ b/db/docs/ref/transapp/archival.html
@@ -1,6 +1,5 @@
<!--$Id: archival.so,v 10.56 2005/02/10 20:02:41 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -157,6 +156,6 @@ log_archlist(DB_ENV *dbenv)
}</pre></blockquote>
<table width="100%"><tr><td><br></td><td align=right><a href="../transapp/checkpoint.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../transapp/logfile.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/transapp/atomicity.html b/db/docs/ref/transapp/atomicity.html
index 5bedba078..c75e88229 100644
--- a/db/docs/ref/transapp/atomicity.html
+++ b/db/docs/ref/transapp/atomicity.html
@@ -1,6 +1,5 @@
<!--$Id: atomicity.so,v 10.3 2002/05/17 15:48:41 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -58,6 +57,6 @@ items in different orders greatly increases the likelihood of operations
being blocked and failing due to deadlocks.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../transapp/put.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../transapp/inc.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/transapp/checkpoint.html b/db/docs/ref/transapp/checkpoint.html
index 0aecb0d4f..bc5d44e15 100644
--- a/db/docs/ref/transapp/checkpoint.html
+++ b/db/docs/ref/transapp/checkpoint.html
@@ -1,6 +1,5 @@
<!--$Id: checkpoint.so,v 10.22 2003/12/09 18:57:46 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -88,7 +87,7 @@ main(int argc, char *argv)
<p>
add_cat(dbenv, db_cats,
"Amy Adams",
- "Oracle Corporation",
+ "Oracle",
"abyssinian",
"bengal",
"chartreaux",
@@ -120,6 +119,6 @@ perform a checkpoint is a common tuning parameter for Berkeley DB
applications.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../transapp/deadlock.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../transapp/archival.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/transapp/cursor.html b/db/docs/ref/transapp/cursor.html
index 4118429f1..4b12fede7 100644
--- a/db/docs/ref/transapp/cursor.html
+++ b/db/docs/ref/transapp/cursor.html
@@ -1,6 +1,5 @@
<!--$Id: cursor.so,v 1.12 2004/03/05 21:47:36 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -66,7 +65,7 @@ main(int argc, char *argv)
<p>
<b> add_cat(dbenv, db_cats,
"Amy Adams",
- "Oracle Corporation",
+ "Oracle",
"abyssinian",
"bengal",
"chartreaux",
@@ -164,6 +163,6 @@ retry: /* Begin the transaction. */
}</b></pre></blockquote>
<table width="100%"><tr><td><br></td><td align=right><a href="../transapp/read.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../transapp/nested.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/transapp/data_open.html b/db/docs/ref/transapp/data_open.html
index ddafb4b1e..321c2200d 100644
--- a/db/docs/ref/transapp/data_open.html
+++ b/db/docs/ref/transapp/data_open.html
@@ -1,6 +1,5 @@
<!--$Id: data_open.so,v 1.13 2004/04/28 13:15:29 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -138,6 +137,6 @@ the database, using handles that were opened within a transaction, will
also return an error.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../transapp/env_open.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../transapp/put.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/transapp/deadlock.html b/db/docs/ref/transapp/deadlock.html
index 453667ba5..a9b5633de 100644
--- a/db/docs/ref/transapp/deadlock.html
+++ b/db/docs/ref/transapp/deadlock.html
@@ -1,6 +1,5 @@
<!--$Id: deadlock.so,v 10.20 2002/06/24 14:51:07 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -105,6 +104,6 @@ deadlocked transactions will be forced to abort when the deadlock is
detected is a common tuning parameter for Berkeley DB applications.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../transapp/admin.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../transapp/checkpoint.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/transapp/env_open.html b/db/docs/ref/transapp/env_open.html
index a3fe3298e..f77a72f2b 100644
--- a/db/docs/ref/transapp/env_open.html
+++ b/db/docs/ref/transapp/env_open.html
@@ -1,6 +1,5 @@
<!--$Id: env_open.so,v 1.4 2002/06/24 14:51:07 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -171,6 +170,6 @@ Txn Region: 5.
0 Locks granted after waiting.</pre></blockquote>
<table width="100%"><tr><td><br></td><td align=right><a href="../transapp/app.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../transapp/data_open.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/transapp/fail.html b/db/docs/ref/transapp/fail.html
index cd359331b..fe966ced7 100644
--- a/db/docs/ref/transapp/fail.html
+++ b/db/docs/ref/transapp/fail.html
@@ -1,6 +1,5 @@
<!--$Id: fail.so,v 10.2 2005/10/19 21:10:31 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -67,6 +66,6 @@ of control accessing the database environment fails, as well as any time
the system reboots.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../transapp/term.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../transapp/app.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/transapp/faq.html b/db/docs/ref/transapp/faq.html
index 7a5aa3417..ece5367fc 100644
--- a/db/docs/ref/transapp/faq.html
+++ b/db/docs/ref/transapp/faq.html
@@ -1,6 +1,5 @@
<!--$Id: faq.so,v 10.11 2006/05/09 19:46:59 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -111,6 +110,6 @@ application runs, the worse it can get.)</p>
</ol>
<table width="100%"><tr><td><br></td><td align=right><a href="../transapp/throughput.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../rep/intro.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/transapp/filesys.html b/db/docs/ref/transapp/filesys.html
index c7ea82a2c..ccfb8d535 100644
--- a/db/docs/ref/transapp/filesys.html
+++ b/db/docs/ref/transapp/filesys.html
@@ -1,6 +1,5 @@
<!--$Id: filesys.so,v 10.35 2002/02/05 18:34:09 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -61,6 +60,6 @@ recovery be performed from the filesystem operations forward.</p>
</ol>
<table width="100%"><tr><td><br></td><td align=right><a href="../transapp/hotfail.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../transapp/reclimit.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/transapp/hotfail.html b/db/docs/ref/transapp/hotfail.html
index 63068b3b7..404ca4132 100644
--- a/db/docs/ref/transapp/hotfail.html
+++ b/db/docs/ref/transapp/hotfail.html
@@ -1,6 +1,5 @@
<!--$Id: hotfail.so,v 10.5 2005/02/10 20:02:41 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -80,6 +79,6 @@ ensure a consistent database environment snapshot.</p>
see the source code for the <a href="../../utility/db_hotbackup.html">db_hotbackup</a> utility.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../transapp/recovery.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../transapp/filesys.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/transapp/inc.html b/db/docs/ref/transapp/inc.html
index 9db9e45da..d9c1188fc 100644
--- a/db/docs/ref/transapp/inc.html
+++ b/db/docs/ref/transapp/inc.html
@@ -1,6 +1,5 @@
<!--$Id: inc.so,v 1.17 2006/08/31 15:26:59 ubell Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -165,6 +164,6 @@ deadlock if we first obtain a read lock and subsequently a write lock, than
if we obtain the write lock initially.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../transapp/atomicity.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../transapp/read.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/transapp/intro.html b/db/docs/ref/transapp/intro.html
index 0b3579aac..077ce09ae 100644
--- a/db/docs/ref/transapp/intro.html
+++ b/db/docs/ref/transapp/intro.html
@@ -1,10 +1,9 @@
-<!--$Id: intro.so,v 10.39 2004/10/13 13:40:59 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: intro.so,v 10.40 2006/11/13 18:05:03 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
-<title>Berkeley DB Reference Guide: Berkeley DB Transactional Data Store applications</title>
+<title>Berkeley DB Reference Guide: Transactional Data Store introduction</title>
<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
</head>
@@ -15,7 +14,7 @@
<td align=right><a href="../cam/app.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../transapp/why.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
<p>
-<h3 align=center>Berkeley DB Transactional Data Store applications</h3>
+<h3 align=center>Transactional Data Store introduction</h3>
<p>It is difficult to write a useful transactional tutorial and still keep
within reasonable bounds of documentation; that is, without writing a
book on transactional programming. We have two goals in this section:
@@ -37,6 +36,6 @@ of the <a href="transapp.cs">example program</a> for IEEE/ANSI Std 1003.1 (POSIX
standard systems is included in the Berkeley DB distribution.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../cam/app.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../transapp/why.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/transapp/logfile.html b/db/docs/ref/transapp/logfile.html
index 4bdc68906..8dbfd0972 100644
--- a/db/docs/ref/transapp/logfile.html
+++ b/db/docs/ref/transapp/logfile.html
@@ -1,6 +1,5 @@
<!--$Id: logfile.so,v 11.9 2002/11/13 21:49:24 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -53,6 +52,6 @@ opportunity to copy the log files to backup media.
</ol>
<table width="100%"><tr><td><br></td><td align=right><a href="../transapp/archival.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../transapp/recovery.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/transapp/nested.html b/db/docs/ref/transapp/nested.html
index e60f495f4..410c6286f 100644
--- a/db/docs/ref/transapp/nested.html
+++ b/db/docs/ref/transapp/nested.html
@@ -1,6 +1,5 @@
<!--$Id: nested.so,v 10.23 2003/01/24 18:01:58 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -60,6 +59,6 @@ transactions that are not yet resolved when the parent prepares are also
prepared.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../transapp/cursor.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../transapp/admin.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/transapp/put.html b/db/docs/ref/transapp/put.html
index c9aa41001..e4e506594 100644
--- a/db/docs/ref/transapp/put.html
+++ b/db/docs/ref/transapp/put.html
@@ -1,6 +1,5 @@
<!--$Id: put.so,v 1.20 2006/04/24 17:26:33 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -199,6 +198,6 @@ mainline code often results in the simplest and cleanest application
code.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../transapp/data_open.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../transapp/atomicity.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/transapp/read.html b/db/docs/ref/transapp/read.html
index af5f72075..9be009af4 100644
--- a/db/docs/ref/transapp/read.html
+++ b/db/docs/ref/transapp/read.html
@@ -1,6 +1,5 @@
<!--$Id: read.so,v 1.14 2006/09/13 14:30:56 mjc Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -118,6 +117,6 @@ found, then modifying it), throughput may be improved by running some
updates at snapshot isolation as well.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../transapp/inc.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../transapp/cursor.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/transapp/reclimit.html b/db/docs/ref/transapp/reclimit.html
index 82e22da96..dec53d022 100644
--- a/db/docs/ref/transapp/reclimit.html
+++ b/db/docs/ref/transapp/reclimit.html
@@ -1,6 +1,5 @@
<!--$Id: reclimit.so,v 11.32 2005/06/16 17:13:55 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -145,6 +144,6 @@ incorrect data to the disk). However, configuring the database for
checksums will ensure that any such corruption is detected.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../transapp/filesys.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../transapp/tune.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/transapp/recovery.html b/db/docs/ref/transapp/recovery.html
index aa4f09cf2..afac8ff6b 100644
--- a/db/docs/ref/transapp/recovery.html
+++ b/db/docs/ref/transapp/recovery.html
@@ -1,6 +1,5 @@
<!--$Id: recovery.so,v 10.35 2005/06/16 17:52:20 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -92,6 +91,6 @@ pathnames.</p>
</ol>
<table width="100%"><tr><td><br></td><td align=right><a href="../transapp/logfile.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../transapp/hotfail.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/transapp/term.html b/db/docs/ref/transapp/term.html
index e325d04de..a1c7d4009 100644
--- a/db/docs/ref/transapp/term.html
+++ b/db/docs/ref/transapp/term.html
@@ -1,6 +1,5 @@
<!--$Id: term.so,v 10.19 2005/09/23 16:26:40 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -60,6 +59,6 @@ forward progress.
</dl>
<table width="100%"><tr><td><br></td><td align=right><a href="../transapp/why.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../transapp/fail.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/transapp/throughput.html b/db/docs/ref/transapp/throughput.html
index d864c8cc4..f7c38fade 100644
--- a/db/docs/ref/transapp/throughput.html
+++ b/db/docs/ref/transapp/throughput.html
@@ -1,6 +1,5 @@
<!--$Id: throughput.so,v 10.31 2002/04/02 17:07:05 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -120,6 +119,6 @@ program</a> for IEEE/ANSI Std 1003.1 (POSIX) standard systems is included in the
distribution.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../transapp/tune.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../transapp/faq.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/transapp/transapp.cs b/db/docs/ref/transapp/transapp.cs
index 79b9f4f3a..5ed613afa 100644
--- a/db/docs/ref/transapp/transapp.cs
+++ b/db/docs/ref/transapp/transapp.cs
@@ -81,7 +81,7 @@ main(int argc, char *argv[])
add_cat(dbenv, db_cats,
"Amy Adams",
- "Oracle Corporation",
+ "Oracle",
"394 E. Riding Dr., Carlisle, MA 01741, USA",
"abyssinian",
"bengal",
diff --git a/db/docs/ref/transapp/transapp.txt b/db/docs/ref/transapp/transapp.txt
deleted file mode 100644
index afd441c59..000000000
--- a/db/docs/ref/transapp/transapp.txt
+++ /dev/null
@@ -1,492 +0,0 @@
-#include <sys/types.h>
-#include <sys/stat.h>
-
-#include <errno.h>
-#include <pthread.h>
-#include <stdarg.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-
-#include <db.h>
-
-#define ENV_DIRECTORY "TXNAPP"
-
-void add_cat(DB_ENV *, DB *, char *, ...);
-void add_color(DB_ENV *, DB *, char *, int);
-void add_fruit(DB_ENV *, DB *, char *, char *);
-void *checkpoint_thread(void *);
-void log_archlist(DB_ENV *);
-void *logfile_thread(void *);
-void db_open(DB_ENV *, DB **, char *, int);
-void env_dir_create(void);
-void env_open(DB_ENV **);
-void usage(void);
-
-int
-main(int argc, char *argv[])
-{
- extern char *optarg;
- extern int optind;
- DB *db_cats, *db_color, *db_fruit;
- DB_ENV *dbenv;
- pthread_t ptid;
- int ch;
-
- while ((ch = getopt(argc, argv, "")) != EOF)
- switch (ch) {
- case '?':
- default:
- usage();
- }
- argc -= optind;
- argv += optind;
-
- env_dir_create();
- env_open(&dbenv);
-
- /* Start a checkpoint thread. */
- if ((errno = pthread_create(
- &ptid, NULL, checkpoint_thread, (void *)dbenv)) != 0) {
- fprintf(stderr,
- "txnapp: failed spawning checkpoint thread: %s\n",
- strerror(errno));
- exit (1);
- }
-
- /* Start a logfile removal thread. */
- if ((errno = pthread_create(
- &ptid, NULL, logfile_thread, (void *)dbenv)) != 0) {
- fprintf(stderr,
- "txnapp: failed spawning log file removal thread: %s\n",
- strerror(errno));
- exit (1);
- }
-
- /* Open database: Key is fruit class; Data is specific type. */
- db_open(dbenv, &db_fruit, "fruit", 0);
-
- /* Open database: Key is a color; Data is an integer. */
- db_open(dbenv, &db_color, "color", 0);
-
- /*
- * Open database:
- * Key is a name; Data is: company name, address, cat breeds.
- */
- db_open(dbenv, &db_cats, "cats", 1);
-
- add_fruit(dbenv, db_fruit, "apple", "yellow delicious");
-
- add_color(dbenv, db_color, "blue", 0);
- add_color(dbenv, db_color, "blue", 3);
-
- add_cat(dbenv, db_cats,
- "Amy Adams",
- "Sleepycat Software",
- "394 E. Riding Dr., Carlisle, MA 01741, USA",
- "abyssinian",
- "bengal",
- "chartreaux",
- NULL);
-
- return (0);
-}
-
-void
-env_dir_create()
-{
- struct stat sb;
-
- /*
- * If the directory exists, we're done. We do not further check
- * the type of the file, DB will fail appropriately if it's the
- * wrong type.
- */
- if (stat(ENV_DIRECTORY, &sb) == 0)
- return;
-
- /* Create the directory, read/write/access owner only. */
- if (mkdir(ENV_DIRECTORY, S_IRWXU) != 0) {
- fprintf(stderr,
- "txnapp: mkdir: %s: %s\n", ENV_DIRECTORY, strerror(errno));
- exit (1);
- }
-}
-
-void
-env_open(DB_ENV **dbenvp)
-{
- DB_ENV *dbenv;
- int ret;
-
- /* Create the environment handle. */
- if ((ret = db_env_create(&dbenv, 0)) != 0) {
- fprintf(stderr,
- "txnapp: db_env_create: %s\n", db_strerror(ret));
- exit (1);
- }
-
- /* Set up error handling. */
- dbenv->set_errpfx(dbenv, "txnapp");
-
- /* Do deadlock detection internally. */
- if ((ret = dbenv->set_lk_detect(dbenv, DB_LOCK_DEFAULT)) != 0) {
- dbenv->err(dbenv, ret, "set_lk_detect: DB_LOCK_DEFAULT");
- exit (1);
- }
-
- /*
- * Open a transactional environment:
- * create if it doesn't exist
- * free-threaded handle
- * run recovery
- * read/write owner only
- */
- if ((ret = dbenv->open(dbenv, ENV_DIRECTORY,
- DB_CREATE | DB_INIT_LOCK | DB_INIT_LOG |
- DB_INIT_MPOOL | DB_INIT_TXN | DB_RECOVER | DB_THREAD,
- S_IRUSR | S_IWUSR)) != 0) {
- dbenv->err(dbenv, ret, "dbenv->open: %s", ENV_DIRECTORY);
- exit (1);
- }
-
- *dbenvp = dbenv;
-}
-
-void *
-checkpoint_thread(void *arg)
-{
- DB_ENV *dbenv;
- int ret;
-
- dbenv = arg;
- dbenv->errx(dbenv, "Checkpoint thread: %lu", (u_long)pthread_self());
-
- /* Checkpoint once a minute. */
- for (;; sleep(60))
- switch (ret = txn_checkpoint(dbenv, 0, 0, 0)) {
- case 0:
- case DB_INCOMPLETE:
- break;
- default:
- dbenv->err(dbenv, ret, "checkpoint thread");
- exit (1);
- }
-
- /* NOTREACHED */
-}
-
-void *
-logfile_thread(void *arg)
-{
- DB_ENV *dbenv;
- int ret;
- char **begin, **list;
-
- dbenv = arg;
- dbenv->errx(dbenv,
- "Log file removal thread: %lu", (u_long)pthread_self());
-
- /* Check once every 5 minutes. */
- for (;; sleep(300)) {
- /* Get the list of log files. */
- if ((ret = log_archive(dbenv, &list, DB_ARCH_ABS, NULL)) != 0) {
- dbenv->err(dbenv, ret, "log_archive");
- exit (1);
- }
-
- /* Remove the log files. */
- if (list != NULL) {
- for (begin = list; *list != NULL; ++list)
- if ((ret = remove(*list)) != 0) {
- dbenv->err(dbenv,
- ret, "remove %s", *list);
- exit (1);
- }
- free (begin);
- }
- }
- /* NOTREACHED */
-}
-
-void
-log_archlist(DB_ENV *dbenv)
-{
- int ret;
- char **begin, **list;
-
- /* Get the list of database files. */
- if ((ret = log_archive(dbenv,
- &list, DB_ARCH_ABS | DB_ARCH_DATA, NULL)) != 0) {
- dbenv->err(dbenv, ret, "log_archive: DB_ARCH_DATA");
- exit (1);
- }
- if (list != NULL) {
- for (begin = list; *list != NULL; ++list)
- printf("database file: %s\n", *list);
- free (begin);
- }
-
- /* Get the list of log files. */
- if ((ret = log_archive(dbenv,
- &list, DB_ARCH_ABS | DB_ARCH_LOG, NULL)) != 0) {
- dbenv->err(dbenv, ret, "log_archive: DB_ARCH_LOG");
- exit (1);
- }
- if (list != NULL) {
- for (begin = list; *list != NULL; ++list)
- printf("log file: %s\n", *list);
- free (begin);
- }
-}
-
-void
-db_open(DB_ENV *dbenv, DB **dbp, char *name, int dups)
-{
- DB *db;
- int ret;
-
- /* Create the database handle. */
- if ((ret = db_create(&db, dbenv, 0)) != 0) {
- dbenv->err(dbenv, ret, "db_create");
- exit (1);
- }
-
- /* Optionally, turn on duplicate data items. */
- if (dups && (ret = db->set_flags(db, DB_DUP)) != 0) {
- dbenv->err(dbenv, ret, "db->set_flags: DB_DUP");
- exit (1);
- }
-
- /*
- * Open a database in the environment:
- * create if it doesn't exist
- * free-threaded handle
- * read/write owner only
- */
- if ((ret = db->open(db, name, NULL,
- DB_BTREE, DB_CREATE | DB_THREAD, S_IRUSR | S_IWUSR)) != 0) {
- dbenv->err(dbenv, ret, "db->open: %s", name);
- exit (1);
- }
-
- *dbp = db;
-}
-
-void
-add_fruit(DB_ENV *dbenv, DB *db, char *fruit, char *name)
-{
- DBT key, data;
- DB_TXN *tid;
- int ret;
-
- /* Initialization. */
- memset(&key, 0, sizeof(key));
- memset(&data, 0, sizeof(data));
- key.data = fruit;
- key.size = strlen(fruit);
- data.data = name;
- data.size = strlen(name);
-
- for (;;) {
- /* Begin the transaction. */
- if ((ret = txn_begin(dbenv, NULL, &tid, 0)) != 0) {
- dbenv->err(dbenv, ret, "txn_begin");
- exit (1);
- }
-
- /* Store the value. */
- switch (ret = db->put(db, tid, &key, &data, 0)) {
- case 0:
- /* Success: commit the change. */
- if ((ret = txn_commit(tid, 0)) != 0) {
- dbenv->err(dbenv, ret, "txn_commit");
- exit (1);
- }
- return;
- case DB_LOCK_DEADLOCK:
- /* Deadlock: retry the operation. */
- if ((ret = txn_abort(tid)) != 0) {
- dbenv->err(dbenv, ret, "txn_abort");
- exit (1);
- }
- break;
- default:
- /* Error: run recovery. */
- dbenv->err(dbenv, ret, "dbc->put: %s/%s", fruit, name);
- exit (1);
- }
- }
-}
-
-void
-add_color(DB_ENV *dbenv, DB *dbp, char *color, int increment)
-{
- DBT key, data;
- DB_TXN *tid;
- int original, ret;
- char buf[64];
-
- /* Initialization. */
- memset(&key, 0, sizeof(key));
- key.data = color;
- key.size = strlen(color);
- memset(&data, 0, sizeof(data));
- data.flags = DB_DBT_MALLOC;
-
- for (;;) {
- /* Begin the transaction. */
- if ((ret = txn_begin(dbenv, NULL, &tid, 0)) != 0) {
- dbenv->err(dbenv, ret, "txn_begin");
- exit (1);
- }
-
- /*
- * Get the key. If it exists, we increment the value. If it
- * doesn't exist, we create it.
- */
- switch (ret = dbp->get(dbp, tid, &key, &data, 0)) {
- case 0:
- original = atoi(data.data);
- break;
- case DB_LOCK_DEADLOCK:
- /* Deadlock: retry the operation. */
- if ((ret = txn_abort(tid)) != 0) {
- dbenv->err(dbenv, ret, "txn_abort");
- exit (1);
- }
- continue;
- case DB_NOTFOUND:
- original = 0;
- break;
- default:
- /* Error: run recovery. */
- dbenv->err(
- dbenv, ret, "dbc->get: %s/%d", color, increment);
- exit (1);
- }
- if (data.data != NULL)
- free(data.data);
-
- /* Create the new data item. */
- (void)snprintf(buf, sizeof(buf), "%d", original + increment);
- data.data = buf;
- data.size = strlen(buf) + 1;
-
- /* Store the new value. */
- switch (ret = dbp->put(dbp, tid, &key, &data, 0)) {
- case 0:
- /* Success: commit the change. */
- if ((ret = txn_commit(tid, 0)) != 0) {
- dbenv->err(dbenv, ret, "txn_commit");
- exit (1);
- }
- return;
- case DB_LOCK_DEADLOCK:
- /* Deadlock: retry the operation. */
- if ((ret = txn_abort(tid)) != 0) {
- dbenv->err(dbenv, ret, "txn_abort");
- exit (1);
- }
- break;
- default:
- /* Error: run recovery. */
- dbenv->err(
- dbenv, ret, "dbc->put: %s/%d", color, increment);
- exit (1);
- }
- }
-}
-
-void
-add_cat(DB_ENV *dbenv, DB *db, char *name, ...)
-{
- va_list ap;
- DBC *dbc;
- DBT key, data;
- DB_TXN *tid;
- int ret;
- char *s;
-
- /* Initialization. */
- memset(&key, 0, sizeof(key));
- memset(&data, 0, sizeof(data));
- key.data = name;
- key.size = strlen(name);
-
-retry: /* Begin the transaction. */
- if ((ret = txn_begin(dbenv, NULL, &tid, 0)) != 0) {
- dbenv->err(dbenv, ret, "txn_begin");
- exit (1);
- }
-
- /* Delete any previously existing item. */
- switch (ret = db->del(db, tid, &key, 0)) {
- case 0:
- case DB_NOTFOUND:
- break;
- case DB_LOCK_DEADLOCK:
- /* Deadlock: retry the operation. */
- if ((ret = txn_abort(tid)) != 0) {
- dbenv->err(dbenv, ret, "txn_abort");
- exit (1);
- }
- goto retry;
- default:
- dbenv->err(dbenv, ret, "db->del: %s", name);
- exit (1);
- }
-
- /* Create a cursor. */
- if ((ret = db->cursor(db, tid, &dbc, 0)) != 0) {
- dbenv->err(dbenv, ret, "db->cursor");
- exit (1);
- }
-
- /* Append the items, in order. */
- va_start(ap, name);
- while ((s = va_arg(ap, char *)) != NULL) {
- data.data = s;
- data.size = strlen(s);
- switch (ret = dbc->c_put(dbc, &key, &data, DB_KEYLAST)) {
- case 0:
- break;
- case DB_LOCK_DEADLOCK:
- va_end(ap);
-
- /* Deadlock: retry the operation. */
- if ((ret = dbc->c_close(dbc)) != 0) {
- dbenv->err(
- dbenv, ret, "dbc->c_close");
- exit (1);
- }
- if ((ret = txn_abort(tid)) != 0) {
- dbenv->err(dbenv, ret, "txn_abort");
- exit (1);
- }
- goto retry;
- default:
- /* Error: run recovery. */
- dbenv->err(dbenv, ret, "dbc->put: %s/%s", name, s);
- exit (1);
- }
- }
- va_end(ap);
-
- /* Success: commit the change. */
- if ((ret = dbc->c_close(dbc)) != 0) {
- dbenv->err(dbenv, ret, "dbc->c_close");
- exit (1);
- }
- if ((ret = txn_commit(tid, 0)) != 0) {
- dbenv->err(dbenv, ret, "txn_commit");
- exit (1);
- }
-}
-
-void
-usage()
-{
- (void)fprintf(stderr, "usage: txnapp\n");
- exit(1);
-}
diff --git a/db/docs/ref/transapp/tune.html b/db/docs/ref/transapp/tune.html
index 3d3942535..ae6eb534c 100644
--- a/db/docs/ref/transapp/tune.html
+++ b/db/docs/ref/transapp/tune.html
@@ -1,6 +1,5 @@
<!--$Id: tune.so,v 11.24 2006/08/08 05:24:09 mjc Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -137,6 +136,6 @@ the overall throughput of the application.
</dl>
<table width="100%"><tr><td><br></td><td align=right><a href="../transapp/reclimit.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../transapp/throughput.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/transapp/why.html b/db/docs/ref/transapp/why.html
index 5f629763a..008cee455 100644
--- a/db/docs/ref/transapp/why.html
+++ b/db/docs/ref/transapp/why.html
@@ -1,6 +1,5 @@
<!--$Id: why.so,v 1.7 2003/11/04 14:53:27 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -35,6 +34,6 @@ other transactions either completed before or after its transaction.
</dl>
<table width="100%"><tr><td><br></td><td align=right><a href="../transapp/intro.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../transapp/term.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/transapp/writetest.txt b/db/docs/ref/transapp/writetest.txt
deleted file mode 100644
index b86c1b6ce..000000000
--- a/db/docs/ref/transapp/writetest.txt
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * writetest --
- *
- * $Id: writetest.txt,v 10.3 1999/11/19 17:21:06 bostic Exp $
- */
-#include <sys/types.h>
-
-#include <errno.h>
-#include <fcntl.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
-#include <unistd.h>
-
-void usage __P((void));
-
-int
-main(argc, argv)
- int argc;
- char *argv[];
-{
- struct timeval start_time, end_time;
- long usecs;
- int bytes, ch, cnt, fd, ops;
- char *fname, buf[100 * 1024];
-
- bytes = 256;
- fname = "testfile";
- ops = 1000;
- while ((ch = getopt(argc, argv, "b:f:o:")) != EOF)
- switch (ch) {
- case 'b':
- if ((bytes = atoi(optarg)) > sizeof(buf)) {
- fprintf(stderr,
- "max -b option %d\n", sizeof(buf));
- exit (1);
- }
- break;
- case 'f':
- fname = optarg;
- break;
- case 'o':
- if ((ops = atoi(optarg)) <= 0) {
- fprintf(stderr, "illegal -o option value\n");
- exit (1);
- }
- break;
- case '?':
- default:
- usage();
- }
- argc -= optind;
- argv += optind;
-
- (void)unlink(fname);
- if ((fd = open(fname, O_RDWR | O_CREAT, 0666)) == -1) {
- perror(fname);
- exit (1);
- }
-
- memset(buf, 0, bytes);
-
- printf("running: %d ops\n", ops);
-
- (void)gettimeofday(&start_time, NULL);
- for (cnt = 0; cnt < ops; ++cnt) {
- if (write(fd, buf, bytes) != bytes) {
- fprintf(stderr, "write: %s\n", strerror(errno));
- exit (1);
- }
- if (lseek(fd, (off_t)0, SEEK_SET) == -1) {
- fprintf(stderr, "lseek: %s\n", strerror(errno));
- exit (1);
- }
- if (fsync(fd) != 0) {
- fprintf(stderr, "fsync: %s\n", strerror(errno));
- exit (1);
- }
- }
- (void)gettimeofday(&end_time, NULL);
-
- usecs = (end_time.tv_sec - start_time.tv_sec) * 1000000 +
- end_time.tv_usec - start_time.tv_usec;
- printf("Elapsed time: %ld.%06ld seconds\n",
- usecs / 1000000, usecs % 1000000);
- printf("%d ops: %7.2f ops per second\n",
- ops, (float)1000000 * ops/usecs);
-
- (void)unlink(fname);
- exit (0);
-}
-
-void
-usage()
-{
- (void)fprintf(stderr,
- "usage: testfile [-b bytes] [-f file] [-o ops]\n");
- exit(1);
-}
diff --git a/db/docs/ref/txn/config.html b/db/docs/ref/txn/config.html
index f99821181..fcc2037c8 100644
--- a/db/docs/ref/txn/config.html
+++ b/db/docs/ref/txn/config.html
@@ -1,6 +1,5 @@
<!--$Id: config.so,v 10.19 2002/07/22 05:11:58 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -36,6 +35,6 @@ committed transactions may be undone during recovery instead of being
redone.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../txn/intro.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../txn/limits.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/txn/intro.html b/db/docs/ref/txn/intro.html
index d6ec9b906..75909cfeb 100644
--- a/db/docs/ref/txn/intro.html
+++ b/db/docs/ref/txn/intro.html
@@ -1,10 +1,9 @@
-<!--$Id: intro.so,v 10.25 2003/10/18 19:16:10 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: intro.so,v 10.26 2006/11/13 18:05:04 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
-<title>Berkeley DB Reference Guide: Berkeley DB and transactions</title>
+<title>Berkeley DB Reference Guide: Introduction to the transaction subsystem</title>
<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
</head>
@@ -15,7 +14,7 @@
<td align=right><a href="../mp/config.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../txn/config.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
<p>
-<h3 align=center>Berkeley DB and transactions</h3>
+<h3 align=center>Introduction to the transaction subsystem</h3>
<p>The Transaction subsystem makes operations atomic, consistent, isolated,
and durable in the face of system and application failures. The subsystem
requires that the data be properly logged and locked in order to attain
@@ -96,6 +95,6 @@ transaction subsystem. It is the programmatic interface used by the
</table>
<table width="100%"><tr><td><br></td><td align=right><a href="../mp/config.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../txn/config.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/txn/limits.html b/db/docs/ref/txn/limits.html
index 97c4cbc56..bb75cff34 100644
--- a/db/docs/ref/txn/limits.html
+++ b/db/docs/ref/txn/limits.html
@@ -1,6 +1,5 @@
<!--$Id: limits.so,v 10.38 2004/08/18 19:57:37 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -51,6 +50,6 @@ is waiting is in the same thread of control, no forward progress can be
made.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../txn/config.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../sequence/intro.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/txn/nested.html b/db/docs/ref/txn/nested.html
deleted file mode 100644
index a635abf52..000000000
--- a/db/docs/ref/txn/nested.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!--$Id: nested.so,v 10.17 2000/12/31 19:26:22 bostic Exp $-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB Reference Guide: Nested transactions</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
- <a name="2"><!--meow--></a>
-<table><tr valign=top>
-<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Transaction Subsystem</dl></h3></td>
-<td width="1%"><a href="../../ref/txn/intro.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../ref/toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/txn/limits.html"><img src="../../images/next.gif" alt="Next"></a>
-</td></tr></table>
-<p>
-<h1 align=center>Nested transactions</h1>
-<p>Berkeley DB provides support for nested transactions. Nested transactions
-allow an application to decompose a large or long-running transaction
-into smaller units that may be independently aborted.
-<p>Normally, when beginning a transaction, the application will pass a NULL
-value for the parent argument to <a href="../../api_c/txn_begin.html">txn_begin</a>. If, however, the
-parent argument is a DB_TXN handle, then the newly created
-transaction will be treated as a nested transaction within the parent.
-Transactions may nest arbitrarily deeply. For the purposes of this
-discussion, transactions created with a parent identifier will be called
-child transactions.
-<p>Once a transaction becomes a parent, as long as any of its child
-transactions are unresolved (i.e., they have neither committed nor
-aborted), the parent may not issue any Berkeley DB calls except to begin more
-child transactions or to commit or abort. That is, it may not issue
-any access method or cursor calls. Once all of a parent's children have
-committed or aborted, the parent may again request operations on its
-own behalf.
-<p>The semantics of nested transactions are as follows. When a child
-transaction is begun, it inherits all the locks of its parent. This
-means that the child will never block waiting on a lock held by its
-parent. However, if a parent attempts to obtain locks after they have
-begun a child, the parental locks can conflict with those held by a
-child. Furthermore, locks held by two different children will also
-conflict. To make this concrete, consider the following set of
-transactions and lock acquisitions.
-<p>Transaction T1 is the parent transaction. It acquires an exclusive lock
-on item A and then begins two child transactions, C1 and C2. C1 also
-wishes to acquire a write lock on A; this succeeds. Now, let's say that
-C1 acquires a write lock on B. If C2 now attempts to obtain a lock on
-B, it will block. However, let's now assume that C1 commits. Its locks
-are anti-inherited, which means they are now given to T1. At this
-point, either T1 or C2 is allowed to acquire a lock on B. If, however,
-transaction T1 aborts, then its locks are released. Future requests by
-T1 or C2 will also succeed, but they will be obtaining new locks as
-opposed to piggy-backing off a lock already held by T1.
-<p>Child transactions are entirely subservient to their parent transaction.
-They may abort, undoing their operations regardless of the eventual fate
-of the parent. However, even if a child transaction commits, if its
-parent transaction is eventually aborted, the child's changes are undone
-and the child's transaction is effectively aborted. Any child
-transactions that are not yet resolved when the parent commits or aborts
-are resolved based on the parent's resolution, committing if the parent
-commits and aborting if the parent aborts. Any child transactions that
-are not yet resolved when the parent prepares are also prepared.
-<table><tr><td><br></td><td width="1%"><a href="../../ref/txn/intro.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../ref/toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/txn/limits.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>
-</body>
-</html>
diff --git a/db/docs/ref/txn/other.html b/db/docs/ref/txn/other.html
deleted file mode 100644
index e4678c2cb..000000000
--- a/db/docs/ref/txn/other.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!--$Id: other.so,v 10.16 2000/03/18 21:43:19 bostic Exp $-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB Reference Guide: Transactions and non-Berkeley DB applications</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
-<table><tr valign=top>
-<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Transaction Subsystem</dl></h3></td>
-<td width="1%"><a href="../../ref/txn/config.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../ref/toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/rpc/intro.html"><img src="../../images/next.gif" alt="Next"></a>
-</td></tr></table>
-<p>
-<h1 align=center>Transactions and non-Berkeley DB applications</h1>
-<p>It is possible to use the locking, logging and transaction subsystems
-of Berkeley DB to provide transaction semantics on objects other than those
-described by the Berkeley DB access methods. In these cases, the application
-will need more explicit customization of the subsystems as well as the
-development of appropriate data-structure-specific recovery functions.
-<p>For example, consider an application that provides transaction semantics
-on data stored in plain UNIX files accessed using the POSIX read and write
-system calls. The operations for which transaction protection is desired
-are bracketed by calls to <a href="../../api_c/txn_begin.html">txn_begin</a> and <a href="../../api_c/txn_commit.html">txn_commit</a>.
-<p>Before data are referenced, the application must make a call to the lock
-manager, <a href="../../api_c/lock_get.html">lock_get</a>, for a lock of the appropriate type (e.g.,
-read) on the object being locked. The object might be a page in the file,
-a byte, a range of bytes, or some key. It is up to the application to
-ensure that appropriate locks are acquired. Before a write is performed,
-the application should acquire a write lock on the object, by making an
-appropriate call to the lock manager, <a href="../../api_c/lock_get.html">lock_get</a>. Then, the
-application should make a call to the log manager, <a href="../../api_c/log_put.html">log_put</a>, to
-record enough information to redo the operation in case of failure after
-commit and to undo the operation in case of abort.
-<p>It is important, when designing applications that will use the log
-subsystem, to remember that the application is responsible for providing
-any necessary structure to the log record. For example, the application
-must understand what part of the log record is an operation code, what
-part identifies the file being modified, what part is redo information,
-and what part is undo information.
-<p>After the log message is written, the application may issue the write
-system call. After all requests are issued, the application may call
-<a href="../../api_c/txn_commit.html">txn_commit</a>. When <a href="../../api_c/txn_commit.html">txn_commit</a> returns, the caller is
-guaranteed that all necessary log writes have been written to disk.
-<p>At any time, the application may call <a href="../../api_c/txn_abort.html">txn_abort</a>, which will result
-in restoration of the database to a consistent pre-transaction state.
-(The application may specify its own recovery function for this purpose
-using the <a href="../../api_c/env_set_tx_recover.html">DBENV-&gt;set_tx_recover</a> function. The recovery function must be
-able to either re-apply or undo the update depending on the context, for
-each different type of log record.)
-<p>If the application should crash, the recovery process uses the log to
-restore the database to a consistent state.
-<p>The <a href="../../api_c/txn_prepare.html">txn_prepare</a> function provides the core functionality to
-implement distributed transactions, but it does not manage the
-notification of distributed transaction managers. The caller is
-responsible for issuing <a href="../../api_c/txn_prepare.html">txn_prepare</a> calls to all sites
-participating in the transaction. If all responses are positive, the
-caller can issue a <a href="../../api_c/txn_commit.html">txn_commit</a>. If any of the responses are
-negative, the caller should issue a <a href="../../api_c/txn_abort.html">txn_abort</a>. In general, the
-<a href="../../api_c/txn_prepare.html">txn_prepare</a> call requires that the transaction log be flushed to
-disk.
-<table><tr><td><br></td><td width="1%"><a href="../../ref/txn/config.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../ref/toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/rpc/intro.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>
-</body>
-</html>
diff --git a/db/docs/ref/upgrade.2.0/convert.html b/db/docs/ref/upgrade.2.0/convert.html
index 80cf51e30..f24a4fd8d 100644
--- a/db/docs/ref/upgrade.2.0/convert.html
+++ b/db/docs/ref/upgrade.2.0/convert.html
@@ -1,6 +1,5 @@
<!--$Id: convert.so,v 11.6 2000/03/18 21:43:19 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -45,7 +44,7 @@ the creation of an extra object (the DBC object), which is then used to
access the database.
<p>Specifically, the partial key match and range search functionality of the
R_CURSOR flag in DB-&gt;seq has been replaced by the
-<a href="../../api_c/dbc_get.html#DB_SET_RANGE">DB_SET_RANGE</a> flag in <a href="../../api_c/dbc_get.html">DBcursor-&gt;c_get</a>.</p>
+<a href="../../api_c/dbc_get.html#DB_SET_RANGE">DB_SET_RANGE</a> flag in <a href="../../api_c/dbc_get.html">DBcursor-&gt;get</a>.</p>
<p><li>In version 2 of the Berkeley DB library, additions or deletions into Recno
(fixed and variable-length record) databases no longer automatically
logically renumber all records after the add/delete point, by default.
@@ -70,6 +69,6 @@ additional functionality supplied by Berkeley DB version 2, as it is likely to
result in enhanced application performance.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.2.0/system.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.2.0/disk.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.2.0/disk.html b/db/docs/ref/upgrade.2.0/disk.html
index 2655765bf..5dbcbd12f 100644
--- a/db/docs/ref/upgrade.2.0/disk.html
+++ b/db/docs/ref/upgrade.2.0/disk.html
@@ -1,6 +1,5 @@
<!--$Id: disk.so,v 11.6 2000/12/05 20:36:25 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -23,6 +22,6 @@ environments did not exist prior to the 2.0 release, there is no
question of upgrading existing database environments.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.2.0/convert.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.0/intro.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.2.0/intro.html b/db/docs/ref/upgrade.2.0/intro.html
index dad1cb3df..37508bef2 100644
--- a/db/docs/ref/upgrade.2.0/intro.html
+++ b/db/docs/ref/upgrade.2.0/intro.html
@@ -1,6 +1,5 @@
-<!--$Id: intro.so,v 11.9 2004/09/28 14:13:07 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: intro.so,v 11.10 2006/10/09 16:51:34 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -11,7 +10,7 @@
<body bgcolor=white>
<table width="100%"><tr valign=top>
<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Upgrading Berkeley DB Applications</dl></h3></td>
-<td align=right><a href="../upgrade/process.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.2.0/system.html"><img src="../../images/next.gif" alt="Next"></a>
+<td align=right><a href="../changelog/toc.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.2.0/system.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
<p>
<h3 align=center>Release 2.0: introduction</h3>
@@ -25,8 +24,8 @@ compatibility API, which you can use by either recompiling your
application's source code or by relinking its object files against the
version 2 library. The underlying databases must be converted, however,
as the Berkeley DB version 2 library has a different underlying database format.</p>
-<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade/process.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.2.0/system.html"><img src="../../images/next.gif" alt="Next"></a>
+<table width="100%"><tr><td><br></td><td align=right><a href="../changelog/toc.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.2.0/system.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.2.0/system.html b/db/docs/ref/upgrade.2.0/system.html
index d247810ed..b2f808adc 100644
--- a/db/docs/ref/upgrade.2.0/system.html
+++ b/db/docs/ref/upgrade.2.0/system.html
@@ -1,6 +1,5 @@
<!--$Id: system.so,v 11.5 2000/03/18 21:43:20 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -80,6 +79,6 @@ since you have removed that from the library as well.</p>
</ol>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.2.0/intro.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.2.0/convert.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.2.0/toc.html b/db/docs/ref/upgrade.2.0/toc.html
index 7fdf55ee8..6bd90d1af 100644
--- a/db/docs/ref/upgrade.2.0/toc.html
+++ b/db/docs/ref/upgrade.2.0/toc.html
@@ -1,10 +1,9 @@
-<!--$Id: toc.so,v 11.5 2004/09/28 15:04:21 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: toc.so,v 11.6 2006/10/02 15:56:35 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
-<title>Berkeley DB Reference Guide: Upgrading Berkeley DB 1.XX applications to Berkeley DB 2.0</title>
+<title>Berkeley DB Reference Guide: Upgrading Berkeley DB 1.85 or 1.86 applications to Berkeley DB 2.0</title>
<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
</head>
@@ -15,7 +14,7 @@
<td align=right><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a>
</td></tr></table>
<p>
-<h3 align=center>Upgrading Berkeley DB 1.XX applications to Berkeley DB 2.0</h3>
+<h3 align=center>Upgrading Berkeley DB 1.85 or 1.86 applications to Berkeley DB 2.0</h3>
<ol>
<p><li><a href="intro.html">Release 2.0: introduction</a>
<li><a href="system.html">Release 2.0: system integration</a>
@@ -24,6 +23,6 @@
</ol>
<table width="100%"><tr><td><br></td><td align=right><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.0/close.html b/db/docs/ref/upgrade.3.0/close.html
index b8876de92..faee4b4eb 100644
--- a/db/docs/ref/upgrade.3.0/close.html
+++ b/db/docs/ref/upgrade.3.0/close.html
@@ -1,6 +1,5 @@
<!--$Id: close.so,v 11.10 2002/03/06 15:51:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -30,6 +29,6 @@ database. Alternatively, the caller can ignore any error return of
DB_INCOMPLETE.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.0/stat.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.0/lock_put.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.0/cxx.html b/db/docs/ref/upgrade.3.0/cxx.html
index 465a13a2a..833c18aed 100644
--- a/db/docs/ref/upgrade.3.0/cxx.html
+++ b/db/docs/ref/upgrade.3.0/cxx.html
@@ -1,6 +1,5 @@
<!--$Id: cxx.so,v 11.5 2000/03/18 21:43:20 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -27,6 +26,6 @@ and Java APIs much closer in terms of functionality and usage. Please
refer to the pages for upgrading C applications for further details.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.0/db_cxx.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.0/java.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.0/db.html b/db/docs/ref/upgrade.3.0/db.html
index bc25c2ca8..0ce4acca0 100644
--- a/db/docs/ref/upgrade.3.0/db.html
+++ b/db/docs/ref/upgrade.3.0/db.html
@@ -1,6 +1,5 @@
<!--$Id: db.so,v 11.10 2006/04/24 17:26:34 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -44,6 +43,6 @@ applications and the methods that should now be used to get or set them.</p>
</table>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.0/xa.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.0/dbinfo.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.0/db_cxx.html b/db/docs/ref/upgrade.3.0/db_cxx.html
index d3e955e73..c33baa460 100644
--- a/db/docs/ref/upgrade.3.0/db_cxx.html
+++ b/db/docs/ref/upgrade.3.0/db_cxx.html
@@ -1,6 +1,5 @@
<!--$Id: db_cxx.so,v 11.9 2000/03/22 22:02:14 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -43,6 +42,6 @@ table.open("lookup.db", null, Db.DB_BTREE, Db.DB_CREATE, 0644);</pre></blockquot
within an environment.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.0/dbenv_cxx.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.0/cxx.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.0/dbenv.html b/db/docs/ref/upgrade.3.0/dbenv.html
index 71cc6512d..2878490c3 100644
--- a/db/docs/ref/upgrade.3.0/dbenv.html
+++ b/db/docs/ref/upgrade.3.0/dbenv.html
@@ -1,6 +1,5 @@
<!--$Id: dbenv.so,v 11.13 2006/04/24 17:26:34 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -64,6 +63,6 @@ no longer be used by any application.</td></tr>
</table>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.0/func.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.0/open.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.0/dbenv_cxx.html b/db/docs/ref/upgrade.3.0/dbenv_cxx.html
index 946d9e529..aadaff8d8 100644
--- a/db/docs/ref/upgrade.3.0/dbenv_cxx.html
+++ b/db/docs/ref/upgrade.3.0/dbenv_cxx.html
@@ -1,6 +1,5 @@
<!--$Id: dbenv_cxx.so,v 11.10 2000/12/01 17:59:32 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -68,6 +67,6 @@ DbTxnMgr, DbMpool, DbLog, DbTxnMgr. If you used any of these managers,
all their methods are now found directly in the DbEnv class.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.0/value_set.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.0/db_cxx.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.0/dbinfo.html b/db/docs/ref/upgrade.3.0/dbinfo.html
index 0bc9c7bdb..3a76f5114 100644
--- a/db/docs/ref/upgrade.3.0/dbinfo.html
+++ b/db/docs/ref/upgrade.3.0/dbinfo.html
@@ -1,6 +1,5 @@
<!--$Id: dbinfo.so,v 11.10 2001/04/03 19:39:02 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -68,6 +67,6 @@ record pad character. They should simply be discarded from the application.</p>
</table>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.0/db.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.0/join.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.0/disk.html b/db/docs/ref/upgrade.3.0/disk.html
index 2a4611b66..c4edccf35 100644
--- a/db/docs/ref/upgrade.3.0/disk.html
+++ b/db/docs/ref/upgrade.3.0/disk.html
@@ -1,6 +1,5 @@
<!--$Id: disk.so,v 11.15 2000/12/21 18:37:09 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -26,6 +25,6 @@ error.</p>
installations</a>.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.0/java.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.1/intro.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.0/eacces.html b/db/docs/ref/upgrade.3.0/eacces.html
index 5a3b88cb8..3f019eb2b 100644
--- a/db/docs/ref/upgrade.3.0/eacces.html
+++ b/db/docs/ref/upgrade.3.0/eacces.html
@@ -1,6 +1,5 @@
<!--$Id: eacces.so,v 11.8 2001/07/26 18:35:50 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -24,6 +23,6 @@ error return from lock_put or lock_vec should have the test and any
error handling removed.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.0/eagain.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.0/jump_set.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.0/eagain.html b/db/docs/ref/upgrade.3.0/eagain.html
index af0598b70..f44fda9a6 100644
--- a/db/docs/ref/upgrade.3.0/eagain.html
+++ b/db/docs/ref/upgrade.3.0/eagain.html
@@ -1,6 +1,5 @@
<!--$Id: eagain.so,v 11.6 2001/07/10 13:16:34 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -30,6 +29,6 @@ string EAGAIN in that file, there is a comment that describes how to make
the change.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.0/lock_notheld.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.0/eacces.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.0/envopen.html b/db/docs/ref/upgrade.3.0/envopen.html
index 3d475e828..6c90774b8 100644
--- a/db/docs/ref/upgrade.3.0/envopen.html
+++ b/db/docs/ref/upgrade.3.0/envopen.html
@@ -1,6 +1,5 @@
<!--$Id: envopen.so,v 11.14 2003/10/18 19:16:12 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -151,6 +150,6 @@ XXX_unlink is now a flag value that is set by bitwise inclusively <b>OR</b>'ing
<a href="../../api_c/env_remove.html">DB_ENV-&gt;remove</a> flag argument.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.0/intro.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.0/func.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.0/func.html b/db/docs/ref/upgrade.3.0/func.html
index 5a92061a2..58094f6a9 100644
--- a/db/docs/ref/upgrade.3.0/func.html
+++ b/db/docs/ref/upgrade.3.0/func.html
@@ -1,6 +1,5 @@
<!--$Id: func.so,v 11.9 2001/03/01 15:58:20 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -65,6 +64,6 @@ they declare, and then compile. You will see a warning message from
your compiler in each case that needs to be upgraded.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.0/envopen.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.0/dbenv.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.0/intro.html b/db/docs/ref/upgrade.3.0/intro.html
index 0299cc45f..64ce345e7 100644
--- a/db/docs/ref/upgrade.3.0/intro.html
+++ b/db/docs/ref/upgrade.3.0/intro.html
@@ -1,6 +1,5 @@
<!--$Id: intro.so,v 11.7 2004/09/28 14:13:07 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -21,6 +20,6 @@ This information does not describe how to upgrade Berkeley DB 1.85 release
applications.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.2.0/disk.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.0/envopen.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.0/java.html b/db/docs/ref/upgrade.3.0/java.html
index 5cc328d86..1c8488198 100644
--- a/db/docs/ref/upgrade.3.0/java.html
+++ b/db/docs/ref/upgrade.3.0/java.html
@@ -1,6 +1,5 @@
<!--$Id: java.so,v 11.10 2004/08/15 03:22:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -30,6 +29,6 @@ and Java APIs much closer in terms of functionality and usage. Please
refer to the pages for upgrading C applications for further details.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.0/cxx.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.0/disk.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.0/join.html b/db/docs/ref/upgrade.3.0/join.html
index b182ffb1c..09d16e130 100644
--- a/db/docs/ref/upgrade.3.0/join.html
+++ b/db/docs/ref/upgrade.3.0/join.html
@@ -1,6 +1,5 @@
<!--$Id: join.so,v 11.10 2003/10/18 19:16:12 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -24,6 +23,6 @@ interfaces.</p>
For each of these, the order of the last two arguments should be swapped.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.0/dbinfo.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.0/stat.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.0/jump_set.html b/db/docs/ref/upgrade.3.0/jump_set.html
index 38ced57b5..f5eb708a5 100644
--- a/db/docs/ref/upgrade.3.0/jump_set.html
+++ b/db/docs/ref/upgrade.3.0/jump_set.html
@@ -1,6 +1,5 @@
<!--$Id: jump_set.so,v 11.6 2000/03/18 21:43:20 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -44,6 +43,6 @@ applications and the methods that should now be used instead.</p>
</table>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.0/eacces.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.0/value_set.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.0/lock_detect.html b/db/docs/ref/upgrade.3.0/lock_detect.html
index 2b3be48b1..cf61d96ba 100644
--- a/db/docs/ref/upgrade.3.0/lock_detect.html
+++ b/db/docs/ref/upgrade.3.0/lock_detect.html
@@ -1,6 +1,5 @@
<!--$Id: lock_detect.so,v 11.10 2003/10/18 19:16:13 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -20,6 +19,6 @@
For each one, a NULL argument should be appended to the current arguments.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.0/lock_put.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.0/lock_stat.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.0/lock_notheld.html b/db/docs/ref/upgrade.3.0/lock_notheld.html
index abee8b084..62577d6e6 100644
--- a/db/docs/ref/upgrade.3.0/lock_notheld.html
+++ b/db/docs/ref/upgrade.3.0/lock_notheld.html
@@ -1,6 +1,5 @@
<!--$Id: lock_notheld.so,v 11.8 2001/07/26 18:35:51 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -23,6 +22,6 @@ occurrences of DB_LOCK_NOTHELD. For each of these, the test and any
error processing should be removed.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.0/rmw.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.0/eagain.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.0/lock_put.html b/db/docs/ref/upgrade.3.0/lock_put.html
index b6e7d4692..5f7c2d001 100644
--- a/db/docs/ref/upgrade.3.0/lock_put.html
+++ b/db/docs/ref/upgrade.3.0/lock_put.html
@@ -1,6 +1,5 @@
<!--$Id: lock_put.so,v 11.10 2003/10/18 19:16:13 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -21,6 +20,6 @@ For each one, instead of passing a DB_LOCK variable as the last argument
to the function, the address of the DB_LOCK variable should be passed.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.0/close.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.0/lock_detect.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.0/lock_stat.html b/db/docs/ref/upgrade.3.0/lock_stat.html
index a751d1c0e..14b36f855 100644
--- a/db/docs/ref/upgrade.3.0/lock_stat.html
+++ b/db/docs/ref/upgrade.3.0/lock_stat.html
@@ -1,6 +1,5 @@
<!--$Id: lock_stat.so,v 11.5 2003/10/18 19:16:13 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -20,6 +19,6 @@
have been removed, and this information is no longer available.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.0/lock_detect.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.0/log_register.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.0/log_register.html b/db/docs/ref/upgrade.3.0/log_register.html
index aafe9a011..8893b73e4 100644
--- a/db/docs/ref/upgrade.3.0/log_register.html
+++ b/db/docs/ref/upgrade.3.0/log_register.html
@@ -1,6 +1,5 @@
<!--$Id: log_register.so,v 11.10 2003/10/18 19:16:13 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -21,6 +20,6 @@ each of these, the DBTYPE argument (it is the fourth argument) should
be removed.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.0/lock_stat.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.0/log_stat.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.0/log_stat.html b/db/docs/ref/upgrade.3.0/log_stat.html
index 3f6b7159c..470c1bd58 100644
--- a/db/docs/ref/upgrade.3.0/log_stat.html
+++ b/db/docs/ref/upgrade.3.0/log_stat.html
@@ -1,6 +1,5 @@
<!--$Id: log_stat.so,v 11.5 2003/10/18 19:16:13 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -19,6 +18,6 @@
has been removed, and this information is no longer available.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.0/log_register.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.0/memp_stat.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.0/memp_stat.html b/db/docs/ref/upgrade.3.0/memp_stat.html
index 2d512b46e..e6d6dc8be 100644
--- a/db/docs/ref/upgrade.3.0/memp_stat.html
+++ b/db/docs/ref/upgrade.3.0/memp_stat.html
@@ -1,6 +1,5 @@
<!--$Id: memp_stat.so,v 11.5 2003/10/18 19:16:13 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -22,6 +21,6 @@ has been replaced with two new fields, <b>st_gbytes</b> and
<b>st_bytes</b>.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.0/log_stat.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.0/txn_begin.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.0/open.html b/db/docs/ref/upgrade.3.0/open.html
index 4f90f1166..5fcdb6799 100644
--- a/db/docs/ref/upgrade.3.0/open.html
+++ b/db/docs/ref/upgrade.3.0/open.html
@@ -1,6 +1,5 @@
<!--$Id: open.so,v 11.11 2003/10/18 19:16:14 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -61,6 +60,6 @@ on the <a href="../../api_c/db_class.html">DB</a> handle. That change is discus
this chapter.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.0/dbenv.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.0/xa.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.0/rmw.html b/db/docs/ref/upgrade.3.0/rmw.html
index 2b2de46e6..b196f43ca 100644
--- a/db/docs/ref/upgrade.3.0/rmw.html
+++ b/db/docs/ref/upgrade.3.0/rmw.html
@@ -1,6 +1,5 @@
<!--$Id: rmw.so,v 11.10 2003/10/18 19:16:14 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -27,6 +26,6 @@ each of these, any that are arguments to the <a href="../../api_c/db_cursor.html
should be changed to pass in the <a href="../../api_c/db_cursor.html#DB_WRITECURSOR">DB_WRITECURSOR</a> flag instead.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.0/txn_stat.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.0/lock_notheld.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.0/stat.html b/db/docs/ref/upgrade.3.0/stat.html
index 8b4eb3763..d0bf6245a 100644
--- a/db/docs/ref/upgrade.3.0/stat.html
+++ b/db/docs/ref/upgrade.3.0/stat.html
@@ -1,6 +1,5 @@
<!--$Id: stat.so,v 11.4 2003/10/18 19:16:14 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -20,6 +19,6 @@ and Recno databases has been removed, and this information is no longer
available.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.0/join.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.0/close.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.0/toc.html b/db/docs/ref/upgrade.3.0/toc.html
index 3b614c1f2..ca762185a 100644
--- a/db/docs/ref/upgrade.3.0/toc.html
+++ b/db/docs/ref/upgrade.3.0/toc.html
@@ -1,10 +1,9 @@
-<!--$Id: toc.so,v 11.5 2004/09/28 15:04:21 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: toc.so,v 11.6 2006/10/02 15:56:36 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
-<title>Berkeley DB Reference Guide: Upgrading Berkeley DB 2.X.X applications to Berkeley DB 3.0</title>
+<title>Berkeley DB Reference Guide: Upgrading Berkeley DB 2.X applications to Berkeley DB 3.0</title>
<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
</head>
@@ -15,7 +14,7 @@
<td align=right><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a>
</td></tr></table>
<p>
-<h3 align=center>Upgrading Berkeley DB 2.X.X applications to Berkeley DB 3.0</h3>
+<h3 align=center>Upgrading Berkeley DB 2.X applications to Berkeley DB 3.0</h3>
<ol>
<p><li><a href="intro.html">Release 3.0: introduction</a>
<li><a href="envopen.html">Release 3.0: environment open/close/unlink</a>
@@ -51,6 +50,6 @@
</ol>
<table width="100%"><tr><td><br></td><td align=right><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.0/txn_begin.html b/db/docs/ref/upgrade.3.0/txn_begin.html
index a2a35138a..f2cd2b813 100644
--- a/db/docs/ref/upgrade.3.0/txn_begin.html
+++ b/db/docs/ref/upgrade.3.0/txn_begin.html
@@ -1,6 +1,5 @@
<!--$Id: txn_begin.so,v 11.9 2003/10/18 19:16:14 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -21,6 +20,6 @@ For each one, an argument of 0 should be appended to the current
arguments.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.0/memp_stat.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.0/txn_commit.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.0/txn_commit.html b/db/docs/ref/upgrade.3.0/txn_commit.html
index ecc4f1704..022b39122 100644
--- a/db/docs/ref/upgrade.3.0/txn_commit.html
+++ b/db/docs/ref/upgrade.3.0/txn_commit.html
@@ -1,6 +1,5 @@
<!--$Id: txn_commit.so,v 11.10 2003/10/18 19:16:14 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -21,6 +20,6 @@ For each one, an argument of 0 should be appended to the current
arguments.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.0/txn_begin.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.0/txn_stat.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.0/txn_stat.html b/db/docs/ref/upgrade.3.0/txn_stat.html
index 1826fa1b5..c3063c529 100644
--- a/db/docs/ref/upgrade.3.0/txn_stat.html
+++ b/db/docs/ref/upgrade.3.0/txn_stat.html
@@ -1,6 +1,5 @@
<!--$Id: txn_stat.so,v 11.5 2003/10/18 19:16:14 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -19,6 +18,6 @@
has been removed, and this information is no longer available.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.0/txn_commit.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.0/rmw.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.0/value_set.html b/db/docs/ref/upgrade.3.0/value_set.html
index ebdf6a41b..754bdec54 100644
--- a/db/docs/ref/upgrade.3.0/value_set.html
+++ b/db/docs/ref/upgrade.3.0/value_set.html
@@ -1,6 +1,5 @@
<!--$Id: value_set.so,v 11.10 2003/10/18 19:16:14 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -37,6 +36,6 @@ information.</td></tr>
</table>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.0/jump_set.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.0/dbenv_cxx.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.0/xa.html b/db/docs/ref/upgrade.3.0/xa.html
index 18c313aa8..7b2c4763e 100644
--- a/db/docs/ref/upgrade.3.0/xa.html
+++ b/db/docs/ref/upgrade.3.0/xa.html
@@ -1,6 +1,5 @@
<!--$Id: xa.so,v 11.7 2000/03/18 21:43:21 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -29,6 +28,6 @@ calls to the Db::xa_open method should be replaced with the
the DB::open method.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.0/open.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.0/db.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.1/btstat.html b/db/docs/ref/upgrade.3.1/btstat.html
index 555e6b4bf..70c36ad39 100644
--- a/db/docs/ref/upgrade.3.1/btstat.html
+++ b/db/docs/ref/upgrade.3.1/btstat.html
@@ -1,6 +1,5 @@
<!--$Id: btstat.so,v 1.12 2003/10/18 19:16:15 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -46,6 +45,6 @@ of the <b>qs_nrecs</b> field, and the field should be changed to be
<b>qs_nkeys</b>.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.1/dup.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.1/sysmem.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.1/config.html b/db/docs/ref/upgrade.3.1/config.html
index 43a4df1e4..35b708c5a 100644
--- a/db/docs/ref/upgrade.3.1/config.html
+++ b/db/docs/ref/upgrade.3.1/config.html
@@ -1,6 +1,5 @@
<!--$Id: config.so,v 1.4 2001/05/15 14:44:16 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -31,6 +30,6 @@ argument, the strings values in that argument are replaced with calls to
</table>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.1/intro.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.1/set_tx_recover.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.1/disk.html b/db/docs/ref/upgrade.3.1/disk.html
index 50ee3457d..e40bfa589 100644
--- a/db/docs/ref/upgrade.3.1/disk.html
+++ b/db/docs/ref/upgrade.3.1/disk.html
@@ -1,6 +1,5 @@
<!--$Id: disk.so,v 1.9 2000/12/21 18:37:09 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -30,6 +29,6 @@ databases are upgraded, the <a href="../../api_c/db_open.html">DB-&gt;open</a> m
installations</a>.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.1/logalloc.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.2/intro.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.1/dup.html b/db/docs/ref/upgrade.3.1/dup.html
index 04ee11c61..39e00147b 100644
--- a/db/docs/ref/upgrade.3.1/dup.html
+++ b/db/docs/ref/upgrade.3.1/dup.html
@@ -1,6 +1,5 @@
<!--$Id: dup.so,v 1.1 2000/05/31 18:53:28 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -27,6 +26,6 @@ release. See <a href="../../ref/am_conf/dup.html">Duplicate data items</a>
for more information.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.1/put.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.1/btstat.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.1/env.html b/db/docs/ref/upgrade.3.1/env.html
index ff0d07ba3..ffba625d5 100644
--- a/db/docs/ref/upgrade.3.1/env.html
+++ b/db/docs/ref/upgrade.3.1/env.html
@@ -1,6 +1,5 @@
<!--$Id: env.so,v 1.6 2001/08/07 01:42:34 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -49,6 +48,6 @@ instead.</p>
</table>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.1/txn_check.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.1/tcl.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.1/intro.html b/db/docs/ref/upgrade.3.1/intro.html
index beb853878..d403a6d92 100644
--- a/db/docs/ref/upgrade.3.1/intro.html
+++ b/db/docs/ref/upgrade.3.1/intro.html
@@ -1,6 +1,5 @@
<!--$Id: intro.so,v 1.5 2004/09/28 14:13:07 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -21,6 +20,6 @@ This information does not describe how to upgrade Berkeley DB 1.85 release
applications.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.0/disk.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.1/config.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.1/log_register.html b/db/docs/ref/upgrade.3.1/log_register.html
index e66cc4a3e..bd0e926c9 100644
--- a/db/docs/ref/upgrade.3.1/log_register.html
+++ b/db/docs/ref/upgrade.3.1/log_register.html
@@ -1,6 +1,5 @@
<!--$Id: log_register.so,v 1.4 2001/07/26 19:53:12 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -24,6 +23,6 @@ be a reference to the <a href="../../api_c/db_class.html">DB</a> structure being
unregistered.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.1/sysmem.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.1/memp_register.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.1/logalloc.html b/db/docs/ref/upgrade.3.1/logalloc.html
index cc6311195..6f82d79a3 100644
--- a/db/docs/ref/upgrade.3.1/logalloc.html
+++ b/db/docs/ref/upgrade.3.1/logalloc.html
@@ -1,6 +1,5 @@
<!--$Id: logalloc.so,v 1.2 2006/08/24 16:32:32 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -23,6 +22,6 @@ this feature back on, search for the flag DB_OSO_LOG in the source file
us for assistance.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.1/tmp.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.1/disk.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.1/memp_register.html b/db/docs/ref/upgrade.3.1/memp_register.html
index 39e4bb79e..5ef340b45 100644
--- a/db/docs/ref/upgrade.3.1/memp_register.html
+++ b/db/docs/ref/upgrade.3.1/memp_register.html
@@ -1,6 +1,5 @@
<!--$Id: memp_register.so,v 1.5 2003/10/18 19:16:15 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -26,6 +25,6 @@ applications, and may be entirely ignored by the <b>pgin</b> and
<b>pgout</b> functions themselves.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.1/log_register.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.1/txn_check.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.1/put.html b/db/docs/ref/upgrade.3.1/put.html
index e8521fb77..3eb07a920 100644
--- a/db/docs/ref/upgrade.3.1/put.html
+++ b/db/docs/ref/upgrade.3.1/put.html
@@ -1,6 +1,5 @@
<!--$Id: put.so,v 1.11 2003/10/18 19:16:15 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -60,6 +59,6 @@ recno = *(db_recno_t *)key-&gt;data;
printf("new record number is %lu\n", (u_long)recno);</pre></blockquote>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.1/set_paniccall.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.1/dup.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.1/set_feedback.html b/db/docs/ref/upgrade.3.1/set_feedback.html
index 003813f22..ec792ded6 100644
--- a/db/docs/ref/upgrade.3.1/set_feedback.html
+++ b/db/docs/ref/upgrade.3.1/set_feedback.html
@@ -1,6 +1,5 @@
<!--$Id: set_feedback.so,v 1.4 2001/05/15 14:44:17 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -23,6 +22,6 @@ or throw an exception as appropriate when an error occurs.</p>
possible error on return.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.1/set_tx_recover.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.1/set_paniccall.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.1/set_paniccall.html b/db/docs/ref/upgrade.3.1/set_paniccall.html
index 4ce4871b9..87dd0d2a6 100644
--- a/db/docs/ref/upgrade.3.1/set_paniccall.html
+++ b/db/docs/ref/upgrade.3.1/set_paniccall.html
@@ -1,6 +1,5 @@
<!--$Id: set_paniccall.so,v 1.6 2006/04/24 17:26:34 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -23,6 +22,6 @@ an int or throw an exception as appropriate when an error occurs.</p>
possible error on return.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.1/set_feedback.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.1/put.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.1/set_tx_recover.html b/db/docs/ref/upgrade.3.1/set_tx_recover.html
index 07b1004c2..c2f23ca1b 100644
--- a/db/docs/ref/upgrade.3.1/set_tx_recover.html
+++ b/db/docs/ref/upgrade.3.1/set_tx_recover.html
@@ -1,6 +1,5 @@
<!--$Id: set_tx_recover.so,v 1.12 2002/02/23 20:05:28 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -32,6 +31,6 @@ function as follows:</p>
</table>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.1/config.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.1/set_feedback.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.1/sysmem.html b/db/docs/ref/upgrade.3.1/sysmem.html
index ba094d9fc..942f688c1 100644
--- a/db/docs/ref/upgrade.3.1/sysmem.html
+++ b/db/docs/ref/upgrade.3.1/sysmem.html
@@ -1,6 +1,5 @@
<!--$Id: sysmem.so,v 1.4 2003/10/18 19:16:16 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -21,6 +20,6 @@ specification of a base system memory segment ID, using the
example, one returned by the UNIX <b>ftok</b>(3) function.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.1/btstat.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.1/log_register.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.1/tcl.html b/db/docs/ref/upgrade.3.1/tcl.html
index 26121b024..db5965d57 100644
--- a/db/docs/ref/upgrade.3.1/tcl.html
+++ b/db/docs/ref/upgrade.3.1/tcl.html
@@ -1,6 +1,5 @@
<!--$Id: tcl.so,v 1.6 2001/03/01 15:58:21 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -27,6 +26,6 @@ record number are "0x", the record number is expected to be in
hexadecimal form.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.1/env.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.1/tmp.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.1/tmp.html b/db/docs/ref/upgrade.3.1/tmp.html
index a9265315b..aa314b1b7 100644
--- a/db/docs/ref/upgrade.3.1/tmp.html
+++ b/db/docs/ref/upgrade.3.1/tmp.html
@@ -1,6 +1,5 @@
<!--$Id: tmp.so,v 1.7 2000/05/22 20:26:35 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -30,6 +29,6 @@ protection modes for the system registry directory are different from
those on the directory previously used by Berkeley DB.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.1/tcl.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.1/logalloc.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.1/toc.html b/db/docs/ref/upgrade.3.1/toc.html
index ca2d3134e..079402464 100644
--- a/db/docs/ref/upgrade.3.1/toc.html
+++ b/db/docs/ref/upgrade.3.1/toc.html
@@ -1,10 +1,9 @@
-<!--$Id: toc.so,v 1.6 2004/09/28 15:04:21 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: toc.so,v 1.7 2006/10/02 15:56:36 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
-<title>Berkeley DB Reference Guide: Upgrading Berkeley DB 3.0.X applications to Berkeley DB 3.1</title>
+<title>Berkeley DB Reference Guide: Upgrading Berkeley DB 3.0 applications to Berkeley DB 3.1</title>
<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
</head>
@@ -15,7 +14,7 @@
<td align=right><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a>
</td></tr></table>
<p>
-<h3 align=center>Upgrading Berkeley DB 3.0.X applications to Berkeley DB 3.1</h3>
+<h3 align=center>Upgrading Berkeley DB 3.0 applications to Berkeley DB 3.1</h3>
<ol>
<p><li><a href="intro.html">Release 3.1: introduction</a>
<li><a href="config.html">Release 3.1: DB_ENV-&gt;open, DB_ENV-&gt;remove</a>
@@ -37,6 +36,6 @@
</ol>
<table width="100%"><tr><td><br></td><td align=right><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.1/txn_check.html b/db/docs/ref/upgrade.3.1/txn_check.html
index 5565f83e3..7c1f5d06b 100644
--- a/db/docs/ref/upgrade.3.1/txn_check.html
+++ b/db/docs/ref/upgrade.3.1/txn_check.html
@@ -1,6 +1,5 @@
<!--$Id: txn_check.so,v 1.8 2003/10/18 19:16:16 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -21,6 +20,6 @@ txn_checkpoint. For each one, an argument of 0 should be appended to
the current arguments.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.1/memp_register.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.1/env.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.2/callback.html b/db/docs/ref/upgrade.3.2/callback.html
index 020a94fa1..6ccb9fb9b 100644
--- a/db/docs/ref/upgrade.3.2/callback.html
+++ b/db/docs/ref/upgrade.3.2/callback.html
@@ -1,6 +1,5 @@
<!--$Id: callback.so,v 1.5 2000/10/26 15:20:40 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -35,6 +34,6 @@ Applications using this field will have to convert to using one of the
replacement fields.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.2/set_flags.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.2/renumber.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.2/db_dump.html b/db/docs/ref/upgrade.3.2/db_dump.html
index d4771af79..c836db946 100644
--- a/db/docs/ref/upgrade.3.2/db_dump.html
+++ b/db/docs/ref/upgrade.3.2/db_dump.html
@@ -1,6 +1,5 @@
<!--$Id: db_dump.so,v 1.3 2000/11/28 21:27:49 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -25,6 +24,6 @@ scripts post-processing the <a href="../../utility/db_dump.html">db_dump</a> out
under these conditions may require modification.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.2/notfound.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.2/disk.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.2/disk.html b/db/docs/ref/upgrade.3.2/disk.html
index 72fccaf6a..7c782a314 100644
--- a/db/docs/ref/upgrade.3.2/disk.html
+++ b/db/docs/ref/upgrade.3.2/disk.html
@@ -1,6 +1,5 @@
<!--$Id: disk.so,v 1.5 2001/03/28 13:55:10 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -24,6 +23,6 @@ the <a href="../../api_c/db_open.html">DB-&gt;open</a> method will return a <a h
installations</a>.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.2/db_dump.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.3/intro.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.2/handle.html b/db/docs/ref/upgrade.3.2/handle.html
index f4c11ccf0..330d47632 100644
--- a/db/docs/ref/upgrade.3.2/handle.html
+++ b/db/docs/ref/upgrade.3.2/handle.html
@@ -1,6 +1,5 @@
<!--$Id: handle.so,v 1.6 2004/08/15 03:22:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -23,6 +22,6 @@ close. Applications reusing these objects should be modified to create
new objects instead.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.2/mutexlock.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.2/notfound.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.2/incomplete.html b/db/docs/ref/upgrade.3.2/incomplete.html
index 6ea46f888..a91cd059b 100644
--- a/db/docs/ref/upgrade.3.2/incomplete.html
+++ b/db/docs/ref/upgrade.3.2/incomplete.html
@@ -1,6 +1,5 @@
<!--$Id: incomplete.so,v 1.9 2004/08/15 03:22:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -34,6 +33,6 @@ those currently checking for a DB_INCOMPLETE return that has
been encapsulated in an exception.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.2/renumber.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.2/tx_recover.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.2/intro.html b/db/docs/ref/upgrade.3.2/intro.html
index a05d59b5e..2e88efb60 100644
--- a/db/docs/ref/upgrade.3.2/intro.html
+++ b/db/docs/ref/upgrade.3.2/intro.html
@@ -1,6 +1,5 @@
<!--$Id: intro.so,v 1.4 2004/09/28 14:13:07 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -21,6 +20,6 @@ This information does not describe how to upgrade Berkeley DB 1.85 release
applications.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.1/disk.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.2/set_flags.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.2/mutexlock.html b/db/docs/ref/upgrade.3.2/mutexlock.html
index ebc318c86..043d47867 100644
--- a/db/docs/ref/upgrade.3.2/mutexlock.html
+++ b/db/docs/ref/upgrade.3.2/mutexlock.html
@@ -1,6 +1,5 @@
<!--$Id: mutexlock.so,v 1.4 2003/10/18 19:16:16 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -24,6 +23,6 @@ per-database environment basis. Applications using the old function
should be updated to use the new one.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.2/tx_recover.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.2/handle.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.2/notfound.html b/db/docs/ref/upgrade.3.2/notfound.html
index dd05b38f3..0b6c4da42 100644
--- a/db/docs/ref/upgrade.3.2/notfound.html
+++ b/db/docs/ref/upgrade.3.2/notfound.html
@@ -1,6 +1,5 @@
<!--$Id: notfound.so,v 1.4 2004/08/15 03:22:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -21,6 +20,6 @@ exist. Applications should be modified to catch this exception where
appropriate.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.2/handle.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.2/db_dump.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.2/renumber.html b/db/docs/ref/upgrade.3.2/renumber.html
index 25b57ae45..5562d9843 100644
--- a/db/docs/ref/upgrade.3.2/renumber.html
+++ b/db/docs/ref/upgrade.3.2/renumber.html
@@ -1,6 +1,5 @@
<!--$Id: renumber.so,v 1.4 2001/05/05 01:49:34 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -35,6 +34,6 @@ evaluated to ensure that the new semantics do not cause application
failure.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.2/callback.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.2/incomplete.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.2/set_flags.html b/db/docs/ref/upgrade.3.2/set_flags.html
index 0c3146285..3a03db1c1 100644
--- a/db/docs/ref/upgrade.3.2/set_flags.html
+++ b/db/docs/ref/upgrade.3.2/set_flags.html
@@ -1,6 +1,5 @@
<!--$Id: set_flags.so,v 1.3 2003/10/18 19:16:16 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -31,6 +30,6 @@ appropriate place for them. Applications specifying either the
<a href="../../api_c/env_set_flags.html">DB_ENV-&gt;set_flags</a> method.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.2/intro.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.2/callback.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.2/toc.html b/db/docs/ref/upgrade.3.2/toc.html
index 5735b300f..64e06bd29 100644
--- a/db/docs/ref/upgrade.3.2/toc.html
+++ b/db/docs/ref/upgrade.3.2/toc.html
@@ -1,10 +1,9 @@
-<!--$Id: toc.so,v 1.12 2004/09/28 15:04:21 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: toc.so,v 1.13 2006/10/02 15:56:36 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
-<title>Berkeley DB Reference Guide: Upgrading Berkeley DB 3.1.X applications to Berkeley DB 3.2</title>
+<title>Berkeley DB Reference Guide: Upgrading Berkeley DB 3.1 applications to Berkeley DB 3.2</title>
<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
</head>
@@ -15,7 +14,7 @@
<td align=right><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a>
</td></tr></table>
<p>
-<h3 align=center>Upgrading Berkeley DB 3.1.X applications to Berkeley DB 3.2</h3>
+<h3 align=center>Upgrading Berkeley DB 3.1 applications to Berkeley DB 3.2</h3>
<ol>
<p><li><a href="intro.html">Release 3.2: introduction</a>
<li><a href="set_flags.html">Release 3.2: DB_ENV-&gt;set_flags</a>
@@ -31,6 +30,6 @@
</ol>
<table width="100%"><tr><td><br></td><td align=right><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.2/tx_recover.html b/db/docs/ref/upgrade.3.2/tx_recover.html
index 18ff8b4c2..b8436e979 100644
--- a/db/docs/ref/upgrade.3.2/tx_recover.html
+++ b/db/docs/ref/upgrade.3.2/tx_recover.html
@@ -1,6 +1,5 @@
<!--$Id: tx_recover.so,v 1.14 2002/02/23 20:05:28 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -28,6 +27,6 @@ application's callback function may be removed.</p>
enclosing the operation successfully committed.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.2/incomplete.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.2/mutexlock.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.3/alloc.html b/db/docs/ref/upgrade.3.3/alloc.html
index 5a39536d7..d9c41b3ca 100644
--- a/db/docs/ref/upgrade.3.3/alloc.html
+++ b/db/docs/ref/upgrade.3.3/alloc.html
@@ -1,6 +1,5 @@
<!--$Id: alloc.so,v 1.12 2004/08/13 03:39:00 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -61,6 +60,6 @@ the environment first, and subsequently call the DB-&gt;set_malloc
and DB-&gt;set_realloc methods; that use is no longer supported.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.3/getswap.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.3/conflict.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.3/bigfile.html b/db/docs/ref/upgrade.3.3/bigfile.html
index 3872fada0..9654303c2 100644
--- a/db/docs/ref/upgrade.3.3/bigfile.html
+++ b/db/docs/ref/upgrade.3.3/bigfile.html
@@ -1,6 +1,5 @@
<!--$Id: bigfile.so,v 1.2 2001/06/07 19:03:21 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -24,6 +23,6 @@ version 2.50. For that reason, Berkeley DB configuration no longer supports
used instead.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.3/shared.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.3/disk.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.3/conflict.html b/db/docs/ref/upgrade.3.3/conflict.html
index 7e2671246..29f3f9c8f 100644
--- a/db/docs/ref/upgrade.3.3/conflict.html
+++ b/db/docs/ref/upgrade.3.3/conflict.html
@@ -1,6 +1,5 @@
<!--$Id: conflict.so,v 1.6 2003/10/18 19:16:18 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -20,6 +19,6 @@ Applications specifying the DB_LOCK_CONFLICT flag should simply replace
it with a flags argument of 0.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.3/alloc.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.3/memp_fget.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.3/disk.html b/db/docs/ref/upgrade.3.3/disk.html
index 8834a9dab..4e1419362 100644
--- a/db/docs/ref/upgrade.3.3/disk.html
+++ b/db/docs/ref/upgrade.3.3/disk.html
@@ -1,6 +1,5 @@
<!--$Id: disk.so,v 1.3 2001/07/18 02:28:22 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -20,6 +19,6 @@
<a href="../../ref/upgrade/process.html">Upgrading Berkeley DB installations</a>.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.3/bigfile.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.0/intro.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.3/getswap.html b/db/docs/ref/upgrade.3.3/getswap.html
index f73f1ead5..7288b6a97 100644
--- a/db/docs/ref/upgrade.3.3/getswap.html
+++ b/db/docs/ref/upgrade.3.3/getswap.html
@@ -1,6 +1,5 @@
<!--$Id: getswap.so,v 1.1 2001/06/07 19:00:21 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -24,6 +23,6 @@ argument is used as a memory location in which to store the requested
information.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.3/gettype.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.3/alloc.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.3/gettype.html b/db/docs/ref/upgrade.3.3/gettype.html
index 23b71ed5b..6805204a7 100644
--- a/db/docs/ref/upgrade.3.3/gettype.html
+++ b/db/docs/ref/upgrade.3.3/gettype.html
@@ -1,6 +1,5 @@
<!--$Id: gettype.so,v 1.1 2001/06/07 19:00:21 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -23,6 +22,6 @@ type <b>DBTYPE *</b> to the method. The additional argument is used
as a memory location in which to store the requested information.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.3/rpc.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.3/getswap.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.3/intro.html b/db/docs/ref/upgrade.3.3/intro.html
index eac736b68..0ba7ac758 100644
--- a/db/docs/ref/upgrade.3.3/intro.html
+++ b/db/docs/ref/upgrade.3.3/intro.html
@@ -1,6 +1,5 @@
<!--$Id: intro.so,v 1.4 2004/09/28 14:13:08 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -21,6 +20,6 @@ This information does not describe how to upgrade Berkeley DB 1.85 release
applications.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.2/disk.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.3/rpc.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.3/memp_fget.html b/db/docs/ref/upgrade.3.3/memp_fget.html
index 9dc4064c0..31e31cdd8 100644
--- a/db/docs/ref/upgrade.3.3/memp_fget.html
+++ b/db/docs/ref/upgrade.3.3/memp_fget.html
@@ -1,6 +1,5 @@
<!--$Id: memp_fget.so,v 1.5 2003/10/18 19:16:18 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -32,6 +31,6 @@ transaction when a recoverable system error occurs in order to recover
from the error.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.3/conflict.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.3/txn_prepare.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.3/rpc.html b/db/docs/ref/upgrade.3.3/rpc.html
index 8ac80b024..7f15a8692 100644
--- a/db/docs/ref/upgrade.3.3/rpc.html
+++ b/db/docs/ref/upgrade.3.3/rpc.html
@@ -1,6 +1,5 @@
<!--$Id: rpc.so,v 1.5 2004/08/13 03:39:00 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -24,6 +23,6 @@ and specifying a NULL for the added argument, second in the argument
list.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.3/intro.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.3/gettype.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.3/shared.html b/db/docs/ref/upgrade.3.3/shared.html
index f63ed973a..ec6bf39a8 100644
--- a/db/docs/ref/upgrade.3.3/shared.html
+++ b/db/docs/ref/upgrade.3.3/shared.html
@@ -1,6 +1,5 @@
<!--$Id: shared.so,v 1.2 2001/07/10 13:16:34 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -26,6 +25,6 @@ both static and shared libraries by default, the useful options are
Libtool's --disable-shared and --disable-static options.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.3/txn_prepare.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.3/bigfile.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.3/toc.html b/db/docs/ref/upgrade.3.3/toc.html
index e350ae0f9..f9ad28c7b 100644
--- a/db/docs/ref/upgrade.3.3/toc.html
+++ b/db/docs/ref/upgrade.3.3/toc.html
@@ -1,10 +1,9 @@
-<!--$Id: toc.so,v 1.13 2004/09/28 15:04:22 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: toc.so,v 1.14 2006/10/02 15:56:37 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
-<title>Berkeley DB Reference Guide: Upgrading Berkeley DB 3.2.X applications to Berkeley DB 3.3</title>
+<title>Berkeley DB Reference Guide: Upgrading Berkeley DB 3.2 applications to Berkeley DB 3.3</title>
<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
</head>
@@ -15,7 +14,7 @@
<td align=right><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a>
</td></tr></table>
<p>
-<h3 align=center>Upgrading Berkeley DB 3.2.X applications to Berkeley DB 3.3</h3>
+<h3 align=center>Upgrading Berkeley DB 3.2 applications to Berkeley DB 3.3</h3>
<ol>
<p><li><a href="intro.html">Release 3.3: introduction</a>
<li><a href="rpc.html">Release 3.3: DB_ENV-&gt;set_server</a>
@@ -31,6 +30,6 @@
</ol>
<table width="100%"><tr><td><br></td><td align=right><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.3.3/txn_prepare.html b/db/docs/ref/upgrade.3.3/txn_prepare.html
index cc6db543b..609f87c51 100644
--- a/db/docs/ref/upgrade.3.3/txn_prepare.html
+++ b/db/docs/ref/upgrade.3.3/txn_prepare.html
@@ -1,6 +1,5 @@
<!--$Id: txn_prepare.so,v 1.9 2003/10/18 19:16:18 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -22,6 +21,6 @@ commit using Berkeley DB as a local resource manager), see
information.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.3/memp_fget.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.3.3/shared.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.0/asr.html b/db/docs/ref/upgrade.4.0/asr.html
index 280a5f5d1..d85fd3762 100644
--- a/db/docs/ref/upgrade.4.0/asr.html
+++ b/db/docs/ref/upgrade.4.0/asr.html
@@ -1,6 +1,5 @@
<!--$Id: asr.so,v 1.3 2006/08/24 16:32:32 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -34,6 +33,6 @@ the 4.0 release.)</p>
recommend you contact us and ask us to review those routines for you.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.0/cxx.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.0/disk.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.0/cxx.html b/db/docs/ref/upgrade.4.0/cxx.html
index 4f3ddbfd9..39f2aaae0 100644
--- a/db/docs/ref/upgrade.4.0/cxx.html
+++ b/db/docs/ref/upgrade.4.0/cxx.html
@@ -1,6 +1,5 @@
<!--$Id: cxx.so,v 1.3 2005/12/01 03:18:53 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -44,6 +43,6 @@ void foo(Db db) {
}</pre></blockquote>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.0/java.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.0/asr.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.0/deadlock.html b/db/docs/ref/upgrade.4.0/deadlock.html
index f08617c06..0f6ba5c27 100644
--- a/db/docs/ref/upgrade.4.0/deadlock.html
+++ b/db/docs/ref/upgrade.4.0/deadlock.html
@@ -1,6 +1,5 @@
<!--$Id: deadlock.so,v 1.1 2001/09/07 16:55:56 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -21,6 +20,6 @@ option by using the <b>-t</b> option with an argument of
<b>.100000</b>.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.0/intro.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.0/lock.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.0/disk.html b/db/docs/ref/upgrade.4.0/disk.html
index 83e78f3c3..f1fb2495a 100644
--- a/db/docs/ref/upgrade.4.0/disk.html
+++ b/db/docs/ref/upgrade.4.0/disk.html
@@ -1,6 +1,5 @@
<!--$Id: disk.so,v 1.11 2001/12/10 15:14:06 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -21,6 +20,6 @@ formats changed in the Berkeley DB 4.0 release.</p>
<a href="../../ref/upgrade/process.html">Upgrading Berkeley DB installations</a>.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.0/asr.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.1/intro.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.0/env.html b/db/docs/ref/upgrade.4.0/env.html
index d8248808c..cd9affe01 100644
--- a/db/docs/ref/upgrade.4.0/env.html
+++ b/db/docs/ref/upgrade.4.0/env.html
@@ -1,6 +1,5 @@
<!--$Id: env.so,v 1.8 2005/08/03 21:24:02 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -75,6 +74,6 @@ their calls, replacing the historic call with a call to
usage of the historic interface.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.0/txn.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.0/rpc.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.0/intro.html b/db/docs/ref/upgrade.4.0/intro.html
index 812ff00d7..881be6976 100644
--- a/db/docs/ref/upgrade.4.0/intro.html
+++ b/db/docs/ref/upgrade.4.0/intro.html
@@ -1,6 +1,5 @@
<!--$Id: intro.so,v 1.6 2004/09/28 14:13:08 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -21,6 +20,6 @@ This information does not describe how to upgrade Berkeley DB 1.85 release
applications.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.3.3/disk.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.0/deadlock.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.0/java.html b/db/docs/ref/upgrade.4.0/java.html
index 4d851c577..90c6c16a4 100644
--- a/db/docs/ref/upgrade.4.0/java.html
+++ b/db/docs/ref/upgrade.4.0/java.html
@@ -1,6 +1,5 @@
<!--$Id: java.so,v 1.7 2005/12/01 03:18:53 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -20,7 +19,7 @@ release, the <b>CLASSPATH</b> environment variable must change to
include at least the <b>db.jar</b> file. It can optionally include
the <b>dbexamples.jar</b> file if you want to run the examples. For
example, on UNIX:</p>
-<blockquote><pre>export CLASSPATH="/usr/local/BerkeleyDB.4.5/lib/db.jar:/usr/local/BerkeleyDB.4.5/lib/dbexamples.jar"</pre></blockquote>
+<blockquote><pre>export CLASSPATH="/usr/local/BerkeleyDB.4.6/lib/db.jar:/usr/local/BerkeleyDB.4.6/lib/dbexamples.jar"</pre></blockquote>
<p>For example, on Windows:</p>
<blockquote><pre>set CLASSPATH="D:\db\build_windows\Release\db.jar;D:\db\build_windows\Release\dbexamples.jar"</pre></blockquote>
<p>For more information on Java configuration, please see
@@ -28,6 +27,6 @@ example, on UNIX:</p>
<a href="../../ref/build_win/intro.html">Building for Windows</a>.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.0/lock_id_free.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.0/cxx.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.0/lock.html b/db/docs/ref/upgrade.4.0/lock.html
index b52b713ae..92bcb1535 100644
--- a/db/docs/ref/upgrade.4.0/lock.html
+++ b/db/docs/ref/upgrade.4.0/lock.html
@@ -1,6 +1,5 @@
<!--$Id: lock.so,v 1.6 2001/09/27 02:25:51 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -41,6 +40,6 @@ to use the enclosing <a href="../../api_c/env_class.html">DB_ENV</a> handle's me
first argument to the existing call is the correct handle to use).</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.0/deadlock.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.0/log.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
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 6b38264fe..125b72cff 100644
--- a/db/docs/ref/upgrade.4.0/lock_id_free.html
+++ b/db/docs/ref/upgrade.4.0/lock_id_free.html
@@ -1,6 +1,5 @@
<!--$Id: lock_id_free.so,v 1.1 2001/09/25 21:05:24 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -21,6 +20,6 @@ locker IDs may want to update their applications to free the locker ID
when it is no longer needed.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.0/set_lk_max.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.0/java.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.0/log.html b/db/docs/ref/upgrade.4.0/log.html
index 62ab9fe33..14fff7ad5 100644
--- a/db/docs/ref/upgrade.4.0/log.html
+++ b/db/docs/ref/upgrade.4.0/log.html
@@ -1,6 +1,5 @@
<!--$Id: log.so,v 1.5 2003/10/18 19:16:19 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -51,6 +50,6 @@ applications should add a final argument of 0 to any calls made to
<a href="../../api_c/log_stat.html">DB_ENV-&gt;log_stat</a>.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.0/lock.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.0/mp.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.0/mp.html b/db/docs/ref/upgrade.4.0/mp.html
index 8f2f7889e..d42276185 100644
--- a/db/docs/ref/upgrade.4.0/mp.html
+++ b/db/docs/ref/upgrade.4.0/mp.html
@@ -1,6 +1,5 @@
-<!--$Id: mp.so,v 1.3 2003/10/18 19:16:19 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: mp.so,v 1.4 2007/04/05 21:19:31 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -32,7 +31,7 @@ release as follows:</p>
<tr><td>memp_fopen</td><td><a href="../../api_c/memp_fopen.html">DB_MPOOLFILE-&gt;open</a></td></tr>
<tr><td>memp_fclose</td><td><a href="../../api_c/memp_fclose.html">DB_MPOOLFILE-&gt;close</a></td></tr>
<tr><td>memp_fput</td><td><a href="../../api_c/memp_fput.html">DB_MPOOLFILE-&gt;put</a></td></tr>
-<tr><td>memp_fset</td><td><a href="../../api_c/memp_fset.html">DB_MPOOLFILE-&gt;set</a></td></tr>
+<tr><td>memp_fset</td><td>DB_MPOOLFILE-&gt;set</td></tr>
<tr><td>memp_fsync</td><td><a href="../../api_c/memp_fsync.html">DB_MPOOLFILE-&gt;sync</a></td></tr>
</table>
<p>Applications calling any of the memp_register, memp_stat, memp_sync or
@@ -61,6 +60,6 @@ interfaces are identical; the one exception is the <a href="../../api_c/memp_fcl
which requires an additional flag parameter that should be set to 0.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.0/log.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.0/txn.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.0/rpc.html b/db/docs/ref/upgrade.4.0/rpc.html
index fced7193d..5b20c5ff3 100644
--- a/db/docs/ref/upgrade.4.0/rpc.html
+++ b/db/docs/ref/upgrade.4.0/rpc.html
@@ -1,6 +1,5 @@
<!--$Id: rpc.so,v 1.7 2004/08/13 03:39:01 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -22,6 +21,6 @@ name, and specifying a NULL for the added argument, second in the
argument list.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.0/env.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.0/set_lk_max.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
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 3c9efc725..1b3a0e433 100644
--- a/db/docs/ref/upgrade.4.0/set_lk_max.html
+++ b/db/docs/ref/upgrade.4.0/set_lk_max.html
@@ -1,6 +1,5 @@
<!--$Id: set_lk_max.so,v 1.4 2003/10/18 19:16:20 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -22,6 +21,6 @@ method continues to be available, but is no longer documented and
is expected to be removed in a future release.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.0/rpc.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.0/lock_id_free.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.0/toc.html b/db/docs/ref/upgrade.4.0/toc.html
index e15703b12..19405b3e0 100644
--- a/db/docs/ref/upgrade.4.0/toc.html
+++ b/db/docs/ref/upgrade.4.0/toc.html
@@ -1,10 +1,9 @@
-<!--$Id: toc.so,v 1.17 2004/09/28 15:04:22 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: toc.so,v 1.18 2006/10/02 15:56:37 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
-<title>Berkeley DB Reference Guide: Upgrading Berkeley DB 3.3.X applications to Berkeley DB 4.0</title>
+<title>Berkeley DB Reference Guide: Upgrading Berkeley DB 3.3 applications to Berkeley DB 4.0</title>
<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
</head>
@@ -15,7 +14,7 @@
<td align=right><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a>
</td></tr></table>
<p>
-<h3 align=center>Upgrading Berkeley DB 3.3.X applications to Berkeley DB 4.0</h3>
+<h3 align=center>Upgrading Berkeley DB 3.3 applications to Berkeley DB 4.0</h3>
<ol>
<p><li><a href="intro.html">Release 4.0: introduction</a>
<li><a href="deadlock.html">Release 4.0: db_deadlock</a>
@@ -34,6 +33,6 @@
</ol>
<table width="100%"><tr><td><br></td><td align=right><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.0/txn.html b/db/docs/ref/upgrade.4.0/txn.html
index de978adcf..4d580f837 100644
--- a/db/docs/ref/upgrade.4.0/txn.html
+++ b/db/docs/ref/upgrade.4.0/txn.html
@@ -1,6 +1,5 @@
<!--$Id: txn.so,v 1.6 2003/10/18 19:16:20 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -42,6 +41,6 @@ unchanged, applications should add a final argument of 0 to any calls
made to <a href="../../api_c/txn_stat.html">DB_ENV-&gt;txn_stat</a>.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.0/mp.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.0/env.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.1/app_dispatch.html b/db/docs/ref/upgrade.4.1/app_dispatch.html
index 573b2b861..1b399a36b 100644
--- a/db/docs/ref/upgrade.4.1/app_dispatch.html
+++ b/db/docs/ref/upgrade.4.1/app_dispatch.html
@@ -1,6 +1,5 @@
<!--$Id: app_dispatch.so,v 1.6 2002/08/26 23:05:28 mjc Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -27,6 +26,6 @@ removed interfaces should be updated to call
recovery"</a> and the <a href="../../api_c/env_set_app_dispatch.html">DB_ENV-&gt;set_app_dispatch</a> documentation.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.1/cxx.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.1/disk.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.1/checkpoint.html b/db/docs/ref/upgrade.4.1/checkpoint.html
index a551dc80f..8b2e39d9a 100644
--- a/db/docs/ref/upgrade.4.1/checkpoint.html
+++ b/db/docs/ref/upgrade.4.1/checkpoint.html
@@ -1,6 +1,5 @@
<!--$Id: checkpoint.so,v 1.5 2006/08/24 16:32:33 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -24,6 +23,6 @@ very unlikely application programs used this flag. If your application
used this flag, please contact us for help in upgrading.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.1/log_stat.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.1/incomplete.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.1/cxx.html b/db/docs/ref/upgrade.4.1/cxx.html
index 22230c6b3..a1034560f 100644
--- a/db/docs/ref/upgrade.4.1/cxx.html
+++ b/db/docs/ref/upgrade.4.1/cxx.html
@@ -1,6 +1,5 @@
<!--$Id: cxx.so,v 1.3 2002/08/27 02:28:31 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -43,6 +42,6 @@ errors while closing can be handled by the application.</p>
}</pre></blockquote>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.1/java.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.1/app_dispatch.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.1/disk.html b/db/docs/ref/upgrade.4.1/disk.html
index 887d22518..3e618f035 100644
--- a/db/docs/ref/upgrade.4.1/disk.html
+++ b/db/docs/ref/upgrade.4.1/disk.html
@@ -1,6 +1,5 @@
-<!--$Id: disk.so,v 1.7 2002/11/26 04:53:59 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: disk.so,v 1.8 2007/06/14 18:31:18 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -15,17 +14,17 @@
</td></tr></table>
<p>
<h3 align=center>Release 4.1: upgrade requirements</h3>
+<p>The log file format changed in the Berkeley DB 4.1 release.</p>
<p>All of the access method database formats changed in the Berkeley DB 4.1
release (Btree/Recno: version 8 to version 9, Hash: version 7 to version
8, and Queue: version 3 to version 4). <b>The format changes are
entirely backward-compatible, and no database upgrades are needed.</b>
-Note, however, that databases created using the 4.1 release may not be
-usable with earlier Berkeley DB releases.</p>
-<p>The log file format changed in the Berkeley DB 4.1 release.</p>
+Note that databases created using the 4.1 release may not be usable with
+earlier Berkeley DB releases.</p>
<p>For further information on upgrading Berkeley DB installations, see
<a href="../../ref/upgrade/process.html">Upgrading Berkeley DB installations</a>.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.1/app_dispatch.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.2/intro.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.1/excl.html b/db/docs/ref/upgrade.4.1/excl.html
index 70409ec9b..e82791cad 100644
--- a/db/docs/ref/upgrade.4.1/excl.html
+++ b/db/docs/ref/upgrade.4.1/excl.html
@@ -1,6 +1,5 @@
<!--$Id: excl.so,v 1.1 2002/01/16 20:12:08 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -21,6 +20,6 @@ the <a href="../../api_c/db_open.html#DB_EXCL">DB_EXCL</a> flag to check for the
subdatabases.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.1/intro.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.1/fop.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.1/fop.html b/db/docs/ref/upgrade.4.1/fop.html
index d5caa3356..bac57db43 100644
--- a/db/docs/ref/upgrade.4.1/fop.html
+++ b/db/docs/ref/upgrade.4.1/fop.html
@@ -1,6 +1,5 @@
<!--$Id: fop.so,v 1.8 2004/08/13 03:39:01 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -123,6 +122,6 @@ transaction handle to operations using handles that were opened within
a transaction will also return an error.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.1/excl.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.1/log_register.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.1/hash_nelem.html b/db/docs/ref/upgrade.4.1/hash_nelem.html
index cfad75a5b..1ecd9b329 100644
--- a/db/docs/ref/upgrade.4.1/hash_nelem.html
+++ b/db/docs/ref/upgrade.4.1/hash_nelem.html
@@ -1,6 +1,5 @@
<!--$Id: hash_nelem.so,v 1.2 2002/08/26 23:05:29 mjc Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -20,6 +19,6 @@ databases has been removed from the 4.1 release, this information is no
longer available to applications.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.1/memp_sync.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.1/java.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.1/incomplete.html b/db/docs/ref/upgrade.4.1/incomplete.html
index e6bcd4aed..5b675cb74 100644
--- a/db/docs/ref/upgrade.4.1/incomplete.html
+++ b/db/docs/ref/upgrade.4.1/incomplete.html
@@ -1,6 +1,5 @@
<!--$Id: incomplete.so,v 1.8 2004/08/15 03:22:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -25,6 +24,6 @@ all uses of DB_INCOMPLETE.</p>
from returning int to returning void.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.1/checkpoint.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.1/memp_sync.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.1/intro.html b/db/docs/ref/upgrade.4.1/intro.html
index 0012d63b8..c2c1b40a0 100644
--- a/db/docs/ref/upgrade.4.1/intro.html
+++ b/db/docs/ref/upgrade.4.1/intro.html
@@ -1,6 +1,5 @@
<!--$Id: intro.so,v 1.3 2004/09/28 14:13:08 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -21,6 +20,6 @@ This information does not describe how to upgrade Berkeley DB 1.85 release
applications.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.0/disk.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.1/excl.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.1/java.html b/db/docs/ref/upgrade.4.1/java.html
index 7ac6dd7e9..16a2e719f 100644
--- a/db/docs/ref/upgrade.4.1/java.html
+++ b/db/docs/ref/upgrade.4.1/java.html
@@ -1,6 +1,5 @@
<!--$Id: java.so,v 1.5 2004/08/15 03:22:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -23,6 +22,6 @@ versions of the Berkeley DB Java API could throw this exception from the
constructor but it was not marked.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.1/hash_nelem.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.1/cxx.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.1/log_register.html b/db/docs/ref/upgrade.4.1/log_register.html
index 41fe798e2..8c31563cd 100644
--- a/db/docs/ref/upgrade.4.1/log_register.html
+++ b/db/docs/ref/upgrade.4.1/log_register.html
@@ -1,6 +1,5 @@
<!--$Id: log_register.so,v 1.4 2006/08/24 16:32:33 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -21,6 +20,6 @@ application programs used these interfaces. If your application used
these interfaces, please contact us for help in upgrading.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.1/fop.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.1/log_stat.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.1/log_stat.html b/db/docs/ref/upgrade.4.1/log_stat.html
index 088db943a..4ce0ae96d 100644
--- a/db/docs/ref/upgrade.4.1/log_stat.html
+++ b/db/docs/ref/upgrade.4.1/log_stat.html
@@ -1,6 +1,5 @@
<!--$Id: log_stat.so,v 1.1 2002/01/11 16:33:12 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -21,6 +20,6 @@ application using the "st_flushcommits" statistic should remove it, or
replace it with the "st_count" statistic.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.1/log_register.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.1/checkpoint.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.1/memp_sync.html b/db/docs/ref/upgrade.4.1/memp_sync.html
index 9984b7293..e641bfb8d 100644
--- a/db/docs/ref/upgrade.4.1/memp_sync.html
+++ b/db/docs/ref/upgrade.4.1/memp_sync.html
@@ -1,6 +1,5 @@
<!--$Id: memp_sync.so,v 1.6 2006/08/24 16:32:33 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -26,6 +25,6 @@ this information. If your application used this information, please
contact us for help in upgrading.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.1/incomplete.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.1/hash_nelem.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.1/toc.html b/db/docs/ref/upgrade.4.1/toc.html
index f5d8593bb..a8e669a4e 100644
--- a/db/docs/ref/upgrade.4.1/toc.html
+++ b/db/docs/ref/upgrade.4.1/toc.html
@@ -1,10 +1,9 @@
-<!--$Id: toc.so,v 1.17 2004/09/28 15:04:22 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: toc.so,v 1.18 2006/10/02 15:56:38 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
-<title>Berkeley DB Reference Guide: Upgrading Berkeley DB 4.0.X applications to Berkeley DB 4.1</title>
+<title>Berkeley DB Reference Guide: Upgrading Berkeley DB 4.0 applications to Berkeley DB 4.1</title>
<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
</head>
@@ -15,7 +14,7 @@
<td align=right><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a>
</td></tr></table>
<p>
-<h3 align=center>Upgrading Berkeley DB 4.0.X applications to Berkeley DB 4.1</h3>
+<h3 align=center>Upgrading Berkeley DB 4.0 applications to Berkeley DB 4.1</h3>
<ol>
<p><li><a href="intro.html">Release 4.1: introduction</a>
<li><a href="excl.html">Release 4.1: DB_EXCL</a>
@@ -33,6 +32,6 @@
</ol>
<table width="100%"><tr><td><br></td><td align=right><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.2/cksum.html b/db/docs/ref/upgrade.4.2/cksum.html
index 9e1dcad57..df7049d77 100644
--- a/db/docs/ref/upgrade.4.2/cksum.html
+++ b/db/docs/ref/upgrade.4.2/cksum.html
@@ -1,6 +1,5 @@
<!--$Id: cksum.so,v 1.4 2004/09/28 14:13:08 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -24,6 +23,6 @@ Applications using the DB_CHKSUM_SHA1 flag should change that use to
<a href="../../api_c/db_set_flags.html#DB_CHKSUM">DB_CHKSUM</a>; no other change is required.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.2/queue.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.2/client.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.2/client.html b/db/docs/ref/upgrade.4.2/client.html
index a202546c5..e7ff314b4 100644
--- a/db/docs/ref/upgrade.4.2/client.html
+++ b/db/docs/ref/upgrade.4.2/client.html
@@ -1,6 +1,5 @@
<!--$Id: client.so,v 1.2 2004/09/28 14:13:09 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -22,6 +21,6 @@ flag should change that use to <a href="../../api_c/env_class.html#DB_RPCCLIENT"
required.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.2/cksum.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.2/del.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.2/del.html b/db/docs/ref/upgrade.4.2/del.html
index c5a9849df..446b091be 100644
--- a/db/docs/ref/upgrade.4.2/del.html
+++ b/db/docs/ref/upgrade.4.2/del.html
@@ -1,6 +1,5 @@
<!--$Id: del.so,v 1.11 2004/09/28 14:13:09 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -26,6 +25,6 @@ and handling the <a href="../../ref/program/errorret.html#DB_KEYEMPTY">DB_KEYEMP
modified to check for a return value of <a href="../../ref/program/errorret.html#DB_KEYEMPTY">DB_KEYEMPTY</a> instead.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.2/client.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.2/priority.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.2/disk.html b/db/docs/ref/upgrade.4.2/disk.html
index 6ea6aad14..41606d206 100644
--- a/db/docs/ref/upgrade.4.2/disk.html
+++ b/db/docs/ref/upgrade.4.2/disk.html
@@ -1,6 +1,5 @@
<!--$Id: disk.so,v 1.5 2003/12/10 16:24:35 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -21,6 +20,6 @@ formats changed in the Berkeley DB 4.2 release.</p>
<a href="../../ref/upgrade/process.html">Upgrading Berkeley DB installations</a>.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.2/tcl.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.3/intro.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.2/intro.html b/db/docs/ref/upgrade.4.2/intro.html
index 94f4456e9..a715fc203 100644
--- a/db/docs/ref/upgrade.4.2/intro.html
+++ b/db/docs/ref/upgrade.4.2/intro.html
@@ -1,6 +1,5 @@
<!--$Id: intro.so,v 1.3 2004/09/28 14:13:09 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -21,6 +20,6 @@ This information does not describe how to upgrade Berkeley DB 1.85 release
applications.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.1/disk.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.2/java.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.2/java.html b/db/docs/ref/upgrade.4.2/java.html
index 116b269b7..d0ba04c4f 100644
--- a/db/docs/ref/upgrade.4.2/java.html
+++ b/db/docs/ref/upgrade.4.2/java.html
@@ -1,6 +1,5 @@
<!--$Id: java.so,v 1.21 2006/08/24 16:32:33 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -91,6 +90,6 @@ collections style access layer (com.sleepycat.bdb) and the now relocated XA
system (com.sleepycat.xa).</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.2/intro.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.2/queue.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.2/lockng.html b/db/docs/ref/upgrade.4.2/lockng.html
index 0af456434..af2b4bcd0 100644
--- a/db/docs/ref/upgrade.4.2/lockng.html
+++ b/db/docs/ref/upgrade.4.2/lockng.html
@@ -1,6 +1,5 @@
<!--$Id: lockng.so,v 1.6 2004/09/28 14:13:09 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -45,6 +44,6 @@ can configure database operation methods to return
done.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.2/verify.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.2/repinit.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.2/nosync.html b/db/docs/ref/upgrade.4.2/nosync.html
index c31278d64..071fbd0ff 100644
--- a/db/docs/ref/upgrade.4.2/nosync.html
+++ b/db/docs/ref/upgrade.4.2/nosync.html
@@ -1,6 +1,5 @@
<!--$Id: nosync.so,v 1.7 2004/09/28 14:13:09 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -31,6 +30,6 @@ will increase their performance. Regardless of the setting of the
transaction prepare.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.2/repinit.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.2/tcl.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.2/priority.html b/db/docs/ref/upgrade.4.2/priority.html
index 15aa718ac..65417e175 100644
--- a/db/docs/ref/upgrade.4.2/priority.html
+++ b/db/docs/ref/upgrade.4.2/priority.html
@@ -1,6 +1,5 @@
<!--$Id: priority.so,v 1.2 2004/09/28 14:13:09 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -25,6 +24,6 @@ arguments and behaves identically to the old call, except that a
<a href="../../api_c/db_class.html">DB</a> database handle.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.2/del.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.2/verify.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.2/queue.html b/db/docs/ref/upgrade.4.2/queue.html
index 152327c69..691153d30 100644
--- a/db/docs/ref/upgrade.4.2/queue.html
+++ b/db/docs/ref/upgrade.4.2/queue.html
@@ -1,6 +1,5 @@
<!--$Id: queue.so,v 1.4 2004/09/28 14:13:09 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -30,6 +29,6 @@ where extent files were configured along with either encryption or
checksums.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.2/java.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.2/cksum.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.2/repinit.html b/db/docs/ref/upgrade.4.2/repinit.html
index 10a80ab22..368b3a502 100644
--- a/db/docs/ref/upgrade.4.2/repinit.html
+++ b/db/docs/ref/upgrade.4.2/repinit.html
@@ -1,6 +1,5 @@
<!--$Id: repinit.so,v 1.11 2004/09/28 14:13:09 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -40,6 +39,6 @@ number (LSN) associated with those return values. The new argument is
<a href="../../api_c/rep_message.html#DB_REP_NOTPERM">DB_REP_NOTPERM</a>. See <a href="../../ref/rep/trans.html">Transactional guarantees</a> for more information.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.2/lockng.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.2/nosync.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.2/tcl.html b/db/docs/ref/upgrade.4.2/tcl.html
index 6ccdf77cd..c72ecb6f5 100644
--- a/db/docs/ref/upgrade.4.2/tcl.html
+++ b/db/docs/ref/upgrade.4.2/tcl.html
@@ -1,6 +1,5 @@
<!--$Id: tcl.so,v 1.2 2003/05/09 20:01:41 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -19,6 +18,6 @@
or later.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.2/nosync.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.2/disk.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.2/toc.html b/db/docs/ref/upgrade.4.2/toc.html
index 0bdfb23c0..45ca12b66 100644
--- a/db/docs/ref/upgrade.4.2/toc.html
+++ b/db/docs/ref/upgrade.4.2/toc.html
@@ -1,10 +1,9 @@
-<!--$Id: toc.so,v 1.14 2004/09/28 15:04:22 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: toc.so,v 1.16 2006/11/13 18:05:04 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
-<title>Berkeley DB Reference Guide: Upgrading Berkeley DB 4.1.X applications to Berkeley DB 4.2</title>
+<title>Berkeley DB Reference Guide: Upgrading Berkeley DB 4.1 applications to Berkeley DB 4.2</title>
<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
</head>
@@ -15,11 +14,11 @@
<td align=right><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a>
</td></tr></table>
<p>
-<h3 align=center>Upgrading Berkeley DB 4.1.X applications to Berkeley DB 4.2</h3>
+<h3 align=center>Upgrading Berkeley DB 4.1 applications to Berkeley DB 4.2</h3>
<ol>
<li><a href="intro.html">Release 4.2: introduction</a>
<li><a href="java.html">Release 4.2: Java</a>
-<li><a href="queue.html">Release 4.2: Queue</a>
+<li><a href="queue.html">Release 4.2: Queue access method</a>
<li><a href="cksum.html">Release 4.2: DB_CHKSUM_SHA1</a>
<li><a href="client.html">Release 4.2: DB_CLIENT</a>
<li><a href="del.html">Release 4.2: DB-&gt;del</a>
@@ -33,6 +32,6 @@
</ol>
<table width="100%"><tr><td><br></td><td align=right><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.2/verify.html b/db/docs/ref/upgrade.4.2/verify.html
index a8cd580d2..2eb13cd51 100644
--- a/db/docs/ref/upgrade.4.2/verify.html
+++ b/db/docs/ref/upgrade.4.2/verify.html
@@ -1,6 +1,5 @@
<!--$Id: verify.so,v 1.5 2004/09/28 14:13:09 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -28,6 +27,6 @@ updated to make no further use of any kind of the <a href="../../api_c/db_class.
after <a href="../../api_c/db_verify.html">DB-&gt;verify</a> returns.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.2/priority.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.2/lockng.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.3/cput.html b/db/docs/ref/upgrade.4.3/cput.html
index 3f30dbde1..15134d8c0 100644
--- a/db/docs/ref/upgrade.4.3/cput.html
+++ b/db/docs/ref/upgrade.4.3/cput.html
@@ -1,6 +1,5 @@
<!--$Id: cput.so,v 1.3 2004/09/28 14:13:09 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -15,12 +14,12 @@
</td></tr></table>
<p>
<h3 align=center>Release 4.3: DBcursor-&gt;c_put</h3>
-<p>The 4.3 release disallows the <a href="../../api_c/dbc_get.html#DB_CURRENT">DB_CURRENT</a> flag to the <a href="../../api_c/dbc_put.html">DBcursor-&gt;c_put</a> method
+<p>The 4.3 release disallows the <a href="../../api_c/dbc_get.html#DB_CURRENT">DB_CURRENT</a> flag to the <a href="../../api_c/dbc_put.html">DBcursor-&gt;put</a> method
after the current item referenced by the cursor has been deleted. Applications
using this sequence of operations should be changed to do the put without first
deleting the item.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.3/err.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.3/stat.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.3/disk.html b/db/docs/ref/upgrade.4.3/disk.html
index 2bfddf991..7ddacb2cc 100644
--- a/db/docs/ref/upgrade.4.3/disk.html
+++ b/db/docs/ref/upgrade.4.3/disk.html
@@ -1,6 +1,5 @@
<!--$Id: disk.so,v 1.6 2004/12/16 19:13:03 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -21,6 +20,6 @@ formats changed in the Berkeley DB 4.3 release.</p>
<a href="../../ref/upgrade/process.html">Upgrading Berkeley DB installations</a>.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.3/rtc.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.4/intro.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.3/enomem.html b/db/docs/ref/upgrade.4.3/enomem.html
index 3f85417a4..78ea2f191 100644
--- a/db/docs/ref/upgrade.4.3/enomem.html
+++ b/db/docs/ref/upgrade.4.3/enomem.html
@@ -1,6 +1,5 @@
<!--$Id: enomem.so,v 1.2 2004/09/28 14:13:09 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -21,7 +20,7 @@ indicate that the buffer in a <a href="../../api_c/dbt_class.html">DBT</a> confi
retrieved. The 4.3 release adds a new error, <a href="../../api_c/dbt_class.html#DB_BUFFER_SMALL">DB_BUFFER_SMALL</a>,
that is returned in this case.</p>
<p>The reason for the change is that the use of <b>ENOMEM</b> was
-ambiguous: calls such as <a href="../../api_c/db_get.html">DB-&gt;get</a> or <a href="../../api_c/dbc_get.html">DBcursor-&gt;c_get</a> could return
+ambiguous: calls such as <a href="../../api_c/db_get.html">DB-&gt;get</a> or <a href="../../api_c/dbc_get.html">DBcursor-&gt;get</a> could return
<b>ENOMEM</b> either if a <a href="../../api_c/dbt_class.html">DBT</a> was too small or if some resource
was exhausted.</p>
<p>The result is that starting with the 4.3 release, C applications should
@@ -38,6 +37,6 @@ when a <b>Dbt</b> is too small to hold a return value, and an
exhaustion.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.3/fileopen.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.3/repl.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.3/err.html b/db/docs/ref/upgrade.4.3/err.html
index cb0f5fd88..059b1d827 100644
--- a/db/docs/ref/upgrade.4.3/err.html
+++ b/db/docs/ref/upgrade.4.3/err.html
@@ -1,6 +1,5 @@
<!--$Id: err.so,v 1.3 2004/09/28 14:13:09 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -28,6 +27,6 @@ environment context for the callback function, and incidentally makes
it clear the message parameter cannot be changed by the callback.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.3/java.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.3/cput.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.3/fileopen.html b/db/docs/ref/upgrade.4.3/fileopen.html
index 7c40dc6a0..ab3529c1a 100644
--- a/db/docs/ref/upgrade.4.3/fileopen.html
+++ b/db/docs/ref/upgrade.4.3/fileopen.html
@@ -1,6 +1,5 @@
<!--$Id: fileopen.so,v 1.6 2004/09/28 14:13:09 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -19,6 +18,6 @@
check for the DB_FILEOPEN error should be removed.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.3/log.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.3/enomem.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.3/intro.html b/db/docs/ref/upgrade.4.3/intro.html
index 7deeab655..ec32963aa 100644
--- a/db/docs/ref/upgrade.4.3/intro.html
+++ b/db/docs/ref/upgrade.4.3/intro.html
@@ -1,6 +1,5 @@
<!--$Id: intro.so,v 1.6 2004/09/28 14:13:09 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -21,6 +20,6 @@ This information does not describe how to upgrade Berkeley DB 1.85 release
applications.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.2/disk.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.3/java.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.3/java.html b/db/docs/ref/upgrade.4.3/java.html
index 0918bc035..8eadbf55c 100644
--- a/db/docs/ref/upgrade.4.3/java.html
+++ b/db/docs/ref/upgrade.4.3/java.html
@@ -1,6 +1,5 @@
<!--$Id: java.so,v 1.3 2006/09/18 14:45:52 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -58,6 +57,6 @@ passed directly to the constructor of a StoredMap, StoredList, etc.
</ol>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.3/intro.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.3/err.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.3/log.html b/db/docs/ref/upgrade.4.3/log.html
index 10e5d9379..c296d6a2b 100644
--- a/db/docs/ref/upgrade.4.3/log.html
+++ b/db/docs/ref/upgrade.4.3/log.html
@@ -1,6 +1,5 @@
<!--$Id: log.so,v 1.2 2004/09/28 14:13:09 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -28,6 +27,6 @@ instead.</p>
or equal to the log file size; this restriction is no longer required.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.3/verb.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.3/fileopen.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.3/repl.html b/db/docs/ref/upgrade.4.3/repl.html
index 14e6c8af1..bff460f8f 100644
--- a/db/docs/ref/upgrade.4.3/repl.html
+++ b/db/docs/ref/upgrade.4.3/repl.html
@@ -1,6 +1,5 @@
<!--$Id: repl.so,v 1.10 2005/10/19 19:11:22 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -33,6 +32,6 @@ and will run recovery on the client to bring it up to date with the
master.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.3/enomem.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.3/rtc.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.3/rtc.html b/db/docs/ref/upgrade.4.3/rtc.html
index 85de6fcf4..c524a8bac 100644
--- a/db/docs/ref/upgrade.4.3/rtc.html
+++ b/db/docs/ref/upgrade.4.3/rtc.html
@@ -1,6 +1,5 @@
<!--$Id: rtc.so,v 1.2 2004/09/28 14:13:10 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -20,6 +19,6 @@
offset in one parameter rather than a page size and a page number.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.3/repl.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.3/disk.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.3/stat.html b/db/docs/ref/upgrade.4.3/stat.html
index adf0a1f2c..5ca726f7e 100644
--- a/db/docs/ref/upgrade.4.3/stat.html
+++ b/db/docs/ref/upgrade.4.3/stat.html
@@ -1,6 +1,5 @@
<!--$Id: stat.so,v 1.4 2006/09/20 16:04:05 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -21,6 +20,6 @@
behavior unchanged.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.3/cput.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.3/verb.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.3/toc.html b/db/docs/ref/upgrade.4.3/toc.html
index d195d78f0..55b2b7eeb 100644
--- a/db/docs/ref/upgrade.4.3/toc.html
+++ b/db/docs/ref/upgrade.4.3/toc.html
@@ -1,10 +1,9 @@
-<!--$Id: toc.so,v 1.13 2004/09/28 15:04:22 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: toc.so,v 1.15 2006/11/13 18:05:04 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
-<title>Berkeley DB Reference Guide: Upgrading Berkeley DB 4.2.X applications to Berkeley DB 4.3</title>
+<title>Berkeley DB Reference Guide: Upgrading Berkeley DB 4.2 applications to Berkeley DB 4.3</title>
<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
</head>
@@ -15,12 +14,12 @@
<td align=right><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a>
</td></tr></table>
<p>
-<h3 align=center>Upgrading Berkeley DB 4.2.X applications to Berkeley DB 4.3</h3>
+<h3 align=center>Upgrading Berkeley DB 4.2 applications to Berkeley DB 4.3</h3>
<ol>
<li><a href="intro.html">Release 4.3: introduction</a>
<li><a href="java.html">Release 4.3: Java</a>
-<li><a href="err.html">DB_ENV-&gt;set_errcall, DB-&gt;set_errcall</a>
-<li><a href="cput.html">DBcursor-&gt;c_put</a>
+<li><a href="err.html">Release 4.3: DB_ENV-&gt;set_errcall, DB-&gt;set_errcall</a>
+<li><a href="cput.html">Release 4.3: DBcursor-&gt;c_put</a>
<li><a href="stat.html">Release 4.3: DB-&gt;stat</a>
<li><a href="verb.html">Release 4.3: DB_ENV-&gt;set_verbose</a>
<li><a href="log.html">Release 4.3: Logging</a>
@@ -32,6 +31,6 @@
</ol>
<table width="100%"><tr><td><br></td><td align=right><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.3/verb.html b/db/docs/ref/upgrade.4.3/verb.html
index 25ed060c2..5cc6672f0 100644
--- a/db/docs/ref/upgrade.4.3/verb.html
+++ b/db/docs/ref/upgrade.4.3/verb.html
@@ -1,6 +1,5 @@
<!--$Id: verb.so,v 1.8 2004/09/28 14:13:10 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -28,6 +27,6 @@ well as errors. Application writers using <a href="../../api_c/env_set_verbose.
should confirm that output is handled appropriately.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.3/stat.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.3/log.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.4/autocommit.html b/db/docs/ref/upgrade.4.4/autocommit.html
index d4af8fbc1..487f47582 100644
--- a/db/docs/ref/upgrade.4.4/autocommit.html
+++ b/db/docs/ref/upgrade.4.4/autocommit.html
@@ -1,6 +1,5 @@
<!--$Id: autocommit.so,v 1.3 2005/02/10 20:02:42 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -36,6 +35,6 @@ not optional, and Tcl applications will need to remove the -auto_commit
flag from methods where it is no longer needed.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.4/intro.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.4/isolation.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.4/clear.html b/db/docs/ref/upgrade.4.4/clear.html
index ff044f43a..07bf611ce 100644
--- a/db/docs/ref/upgrade.4.4/clear.html
+++ b/db/docs/ref/upgrade.4.4/clear.html
@@ -1,6 +1,5 @@
<!--$Id: clear.so,v 1.2 2005/12/13 16:47:06 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -27,6 +26,6 @@ no part of the page need be cleared.</p>
default behavior is to clear the entire created page.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.4/mutex.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.4/lockstat.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.4/disk.html b/db/docs/ref/upgrade.4.4/disk.html
index 75733a6a6..9e7e34694 100644
--- a/db/docs/ref/upgrade.4.4/disk.html
+++ b/db/docs/ref/upgrade.4.4/disk.html
@@ -1,6 +1,5 @@
<!--$Id: disk.so,v 1.3 2005/12/08 13:41:56 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -21,6 +20,6 @@ formats changed in the Berkeley DB 4.4 release.</p>
<a href="../../ref/upgrade/process.html">Upgrading Berkeley DB installations</a>.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.4/lockstat.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.5/intro.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.4/intro.html b/db/docs/ref/upgrade.4.4/intro.html
index d5b866656..fb7ea8192 100644
--- a/db/docs/ref/upgrade.4.4/intro.html
+++ b/db/docs/ref/upgrade.4.4/intro.html
@@ -1,6 +1,5 @@
<!--$Id: intro.so,v 1.1 2004/12/16 19:13:03 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -21,6 +20,6 @@ This information does not describe how to upgrade Berkeley DB 1.85 release
applications.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.3/disk.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.4/autocommit.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.4/isolation.html b/db/docs/ref/upgrade.4.4/isolation.html
index c3fc9708d..aae73b521 100644
--- a/db/docs/ref/upgrade.4.4/isolation.html
+++ b/db/docs/ref/upgrade.4.4/isolation.html
@@ -1,6 +1,5 @@
<!--$Id: isolation.so,v 1.4 2005/10/20 16:14:24 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -23,6 +22,6 @@ continue to work in this release, but may be removed from future
releases.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.4/autocommit.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.4/joinenv.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.4/joinenv.html b/db/docs/ref/upgrade.4.4/joinenv.html
index 8e3776a34..8c8591ad3 100644
--- a/db/docs/ref/upgrade.4.4/joinenv.html
+++ b/db/docs/ref/upgrade.4.4/joinenv.html
@@ -1,6 +1,5 @@
<!--$Id: joinenv.so,v 1.1 2005/09/09 12:40:34 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -55,6 +54,6 @@ release. Applications should require no changes, although uses of the
DB_JOINENV flag may be removed.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.4/isolation.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.4/mutex.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.4/lockstat.html b/db/docs/ref/upgrade.4.4/lockstat.html
index a69ae8538..938d02af8 100644
--- a/db/docs/ref/upgrade.4.4/lockstat.html
+++ b/db/docs/ref/upgrade.4.4/lockstat.html
@@ -1,6 +1,5 @@
<!--$Id: lockstat.so,v 1.4 2005/11/08 02:45:19 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -23,6 +22,6 @@ be <b>st_lock_nowait</b>. The meaning of the fields is unchanged
fields really represent).</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.4/clear.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.4/disk.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.4/mutex.html b/db/docs/ref/upgrade.4.4/mutex.html
index 6213eebc5..a9c86123b 100644
--- a/db/docs/ref/upgrade.4.4/mutex.html
+++ b/db/docs/ref/upgrade.4.4/mutex.html
@@ -1,6 +1,5 @@
<!--$Id: mutex.so,v 1.3 2005/11/08 02:45:20 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -27,6 +26,6 @@ been removed from Berkeley DB configuration. Mutex alignment should now be
configured at run-time, using the <a href="../../api_c/mutex_set_align.html">DB_ENV-&gt;mutex_set_align</a> method.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.4/joinenv.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.4/clear.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.4/toc.html b/db/docs/ref/upgrade.4.4/toc.html
index f1fc2a3c8..68f04503a 100644
--- a/db/docs/ref/upgrade.4.4/toc.html
+++ b/db/docs/ref/upgrade.4.4/toc.html
@@ -1,10 +1,9 @@
-<!--$Id: toc.so,v 1.6 2005/11/08 02:45:21 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: toc.so,v 1.7 2006/10/02 15:56:39 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
-<title>Berkeley DB Reference Guide: Upgrading Berkeley DB 4.3.X applications to Berkeley DB 4.4</title>
+<title>Berkeley DB Reference Guide: Upgrading Berkeley DB 4.3 applications to Berkeley DB 4.4</title>
<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
</head>
@@ -15,7 +14,7 @@
<td align=right><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a>
</td></tr></table>
<p>
-<h3 align=center>Upgrading Berkeley DB 4.3.X applications to Berkeley DB 4.4</h3>
+<h3 align=center>Upgrading Berkeley DB 4.3 applications to Berkeley DB 4.4</h3>
<ol>
<li><a href="intro.html">Release 4.4: introduction</a>
<li><a href="autocommit.html">Release 4.4: DB_AUTO_COMMIT</a>
@@ -28,6 +27,6 @@
</ol>
<table width="100%"><tr><td><br></td><td align=right><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.5/alive.html b/db/docs/ref/upgrade.4.5/alive.html
index fb4b6112f..04429546c 100644
--- a/db/docs/ref/upgrade.4.5/alive.html
+++ b/db/docs/ref/upgrade.4.5/alive.html
@@ -1,6 +1,5 @@
<!--$Id: alive.so,v 1.2 2006/03/15 19:39:19 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -25,6 +24,6 @@ ID and return the status of just the process, when the
<a href="../../api_c/env_set_isalive.html#DB_MUTEX_PROCESS_ONLY">DB_MUTEX_PROCESS_ONLY</a> flag is specified.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.5/deprecate.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.5/elect.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.5/applog.html b/db/docs/ref/upgrade.4.5/applog.html
index 6e5e08708..54111eade 100644
--- a/db/docs/ref/upgrade.4.5/applog.html
+++ b/db/docs/ref/upgrade.4.5/applog.html
@@ -1,6 +1,5 @@
<!--$Id: applog.so,v 1.1 2006/09/13 16:43:03 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -28,6 +27,6 @@ for the Berkeley DB library, with all punctuation removed. For example, Berkele
version 4.2 should be 42, version 4.5 should be 45.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.5/source.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.5/disk.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.5/collect.html b/db/docs/ref/upgrade.4.5/collect.html
index 80604ac13..18d5bb2cd 100644
--- a/db/docs/ref/upgrade.4.5/collect.html
+++ b/db/docs/ref/upgrade.4.5/collect.html
@@ -1,6 +1,5 @@
<!--$Id: collect.so,v 1.1 2006/06/05 17:32:22 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -26,6 +25,6 @@ iterator implementation, so no changes are necessary if you are using
that method to close iterators.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.5/pagesize.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.5/config.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.5/config.html b/db/docs/ref/upgrade.4.5/config.html
index a7765887f..fe0ecfbe3 100644
--- a/db/docs/ref/upgrade.4.5/config.html
+++ b/db/docs/ref/upgrade.4.5/config.html
@@ -1,6 +1,5 @@
<!--$Id: config.so,v 1.5 2006/09/15 19:34:26 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -26,6 +25,6 @@ application in other ways (for example, configuring Berkeley DB to use the
pthread_self function).</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.5/collect.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.5/source.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.5/deprecate.html b/db/docs/ref/upgrade.4.5/deprecate.html
index b98fff9c9..dd0469c1c 100644
--- a/db/docs/ref/upgrade.4.5/deprecate.html
+++ b/db/docs/ref/upgrade.4.5/deprecate.html
@@ -1,6 +1,5 @@
<!--$Id: deprecate.so,v 1.3 2006/01/27 16:13:51 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -29,6 +28,6 @@ release.
</ul>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.5/intro.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.5/alive.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.5/disk.html b/db/docs/ref/upgrade.4.5/disk.html
index e946592c5..a11e9896a 100644
--- a/db/docs/ref/upgrade.4.5/disk.html
+++ b/db/docs/ref/upgrade.4.5/disk.html
@@ -1,6 +1,5 @@
-<!--$Id: disk.so,v 1.7 2006/09/13 16:43:03 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: disk.so,v 1.8 2006/10/02 15:56:39 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -11,7 +10,7 @@
<body bgcolor=white>
<table width="100%"><tr valign=top>
<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Upgrading Berkeley DB Applications</dl></h3></td>
-<td align=right><a href="../upgrade.4.5/applog.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../test/run.html"><img src="../../images/next.gif" alt="Next"></a>
+<td align=right><a href="../upgrade.4.5/applog.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.6/intro.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
<p>
<h3 align=center>Release 4.5: upgrade requirements</h3>
@@ -19,8 +18,8 @@
formats changed in the Berkeley DB 4.5 release.</p>
<p>For further information on upgrading Berkeley DB installations, see
<a href="../../ref/upgrade/process.html">Upgrading Berkeley DB installations</a>.</p>
-<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.5/applog.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../test/run.html"><img src="../../images/next.gif" alt="Next"></a>
+<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.5/applog.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.6/intro.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.5/elect.html b/db/docs/ref/upgrade.4.5/elect.html
index 1f7819c95..f69b8e3db 100644
--- a/db/docs/ref/upgrade.4.5/elect.html
+++ b/db/docs/ref/upgrade.4.5/elect.html
@@ -1,6 +1,5 @@
<!--$Id: elect.so,v 1.1 2006/03/15 19:39:19 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -34,6 +33,6 @@ a single call to <a href="../../api_c/rep_timeout.html">DB_ENV-&gt;rep_set_timeo
configuration.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.5/alive.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.5/rep_set.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.5/intro.html b/db/docs/ref/upgrade.4.5/intro.html
index f6d9e490b..407cce120 100644
--- a/db/docs/ref/upgrade.4.5/intro.html
+++ b/db/docs/ref/upgrade.4.5/intro.html
@@ -1,6 +1,5 @@
<!--$Id: intro.so,v 1.1 2005/12/08 13:41:56 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -21,6 +20,6 @@ This information does not describe how to upgrade Berkeley DB 1.85 release
applications.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.4/disk.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.5/deprecate.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.5/memp.html b/db/docs/ref/upgrade.4.5/memp.html
index b5043d671..205402532 100644
--- a/db/docs/ref/upgrade.4.5/memp.html
+++ b/db/docs/ref/upgrade.4.5/memp.html
@@ -1,6 +1,5 @@
-<!--$Id: memp.so,v 1.2 2006/09/11 23:31:27 mjc Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: memp.so,v 1.3 2007/04/05 21:19:32 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -15,15 +14,16 @@
</td></tr></table>
<p>
<h3 align=center>Release 4.5: Memory Pool API</h3>
-<p>The <a href="../../api_c/memp_fget.html#DB_MPOOL_DIRTY">DB_MPOOL_DIRTY</a> flag is now specified to the
-<a href="../../api_c/memp_fget.html">DB_MPOOLFILE-&gt;get</a> method instead of <a href="../../api_c/memp_fput.html">DB_MPOOLFILE-&gt;put</a> or <a href="../../api_c/memp_fset.html">DB_MPOOLFILE-&gt;set</a>.
-In addition, a new transaction handle parameter has been added to
-<a href="../../api_c/memp_fget.html">DB_MPOOLFILE-&gt;get</a> for use with multiversion concurrency control.</p>
+<p>As part of implementing support for multi-version concurrency control,
+the <a href="../../api_c/memp_fget.html#DB_MPOOL_DIRTY">DB_MPOOL_DIRTY</a> flag is now specified to the
+<a href="../../api_c/memp_fget.html">DB_MPOOLFILE-&gt;get</a> method instead of <a href="../../api_c/memp_fput.html">DB_MPOOLFILE-&gt;put</a>, and the
+DB_MPOOLFILE-&gt;set method has been removed. In addition, a new
+transaction handle parameter has been added to the <a href="../../api_c/memp_fget.html">DB_MPOOLFILE-&gt;get</a> method.</p>
<p>The DB_MPOOL_CLEAN flag is no longer supported.</p>
<p>Applications which use the memory pool API directly should update to
the new API in order to use 4.5.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.5/rep_event.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.5/paniccall.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.5/pagesize.html b/db/docs/ref/upgrade.4.5/pagesize.html
index 8a57ac4e4..5e4b0c98c 100644
--- a/db/docs/ref/upgrade.4.5/pagesize.html
+++ b/db/docs/ref/upgrade.4.5/pagesize.html
@@ -1,6 +1,5 @@
<!--$Id: pagesize.so,v 1.6 2006/06/05 17:32:22 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -22,6 +21,6 @@ size different from the existing databases in the file. In the Berkeley DB
database is being created already exists.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.5/paniccall.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.5/collect.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.5/paniccall.html b/db/docs/ref/upgrade.4.5/paniccall.html
index 3720c18e9..3cb195f8e 100644
--- a/db/docs/ref/upgrade.4.5/paniccall.html
+++ b/db/docs/ref/upgrade.4.5/paniccall.html
@@ -1,6 +1,5 @@
<!--$Id: paniccall.so,v 1.4 2006/09/15 19:35:29 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -29,6 +28,6 @@ different.</p>
expected to be removed in a future release of Berkeley DB.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.5/memp.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.5/pagesize.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.5/rep_event.html b/db/docs/ref/upgrade.4.5/rep_event.html
index d6d8f960c..5da08f538 100644
--- a/db/docs/ref/upgrade.4.5/rep_event.html
+++ b/db/docs/ref/upgrade.4.5/rep_event.html
@@ -1,6 +1,5 @@
<!--$Id: rep_event.so,v 1.3 2006/08/08 05:24:10 mjc Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -24,6 +23,6 @@ DB_REP_STARTUPDONE return from <a href="../../api_c/rep_message.html">DB_ENV-&gt
necessary.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.5/rep_set.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.5/memp.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.5/rep_set.html b/db/docs/ref/upgrade.4.5/rep_set.html
index 57357fd97..dbba7af4d 100644
--- a/db/docs/ref/upgrade.4.5/rep_set.html
+++ b/db/docs/ref/upgrade.4.5/rep_set.html
@@ -1,6 +1,5 @@
<!--$Id: rep_set.so,v 1.6 2006/06/09 15:28:21 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -25,6 +24,6 @@ replication method names. That is, the characters "set_rep" and
required.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.5/elect.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.5/rep_event.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.5/source.html b/db/docs/ref/upgrade.4.5/source.html
index 06ad65f81..08646577c 100644
--- a/db/docs/ref/upgrade.4.5/source.html
+++ b/db/docs/ref/upgrade.4.5/source.html
@@ -1,10 +1,9 @@
-<!--$Id: source.so,v 1.3 2006/09/13 16:43:03 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: source.so,v 1.4 2006/11/13 18:05:05 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
-<title>Berkeley DB Reference Guide: Release 4.5: Recno backing source files</title>
+<title>Berkeley DB Reference Guide: Release 4.5: Recno backing text source files</title>
<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
</head>
@@ -14,7 +13,7 @@
<td align=right><a href="../upgrade.4.5/config.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.5/applog.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
<p>
-<h3 align=center>Release 4.5: Recno backing source files</h3>
+<h3 align=center>Release 4.5: Recno backing text source files</h3>
<p>In previous releases of Berkeley DB, Recno access method backing source text
files were opened using the ANSI C fopen function with the "r" and "w"
modes. This caused Windows systems to translate carriage-return and
@@ -32,6 +31,6 @@ POSIX-like systems, should not require any changes related to this
issue.)</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.5/config.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.5/applog.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.5/toc.html b/db/docs/ref/upgrade.4.5/toc.html
index 16b75c507..d3e1fe26a 100644
--- a/db/docs/ref/upgrade.4.5/toc.html
+++ b/db/docs/ref/upgrade.4.5/toc.html
@@ -1,10 +1,9 @@
-<!--$Id: toc.so,v 1.11 2006/09/13 16:43:03 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: toc.so,v 1.12 2006/10/02 15:56:39 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
-<title>Berkeley DB Reference Guide: Upgrading Berkeley DB 4.4.X applications to Berkeley DB 4.5</title>
+<title>Berkeley DB Reference Guide: Upgrading Berkeley DB 4.4 applications to Berkeley DB 4.5</title>
<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
</head>
@@ -15,7 +14,7 @@
<td align=right><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a>
</td></tr></table>
<p>
-<h3 align=center>Upgrading Berkeley DB 4.4.X applications to Berkeley DB 4.5</h3>
+<h3 align=center>Upgrading Berkeley DB 4.4 applications to Berkeley DB 4.5</h3>
<ol>
<li><a href="intro.html">Release 4.5: introduction</a>
<li><a href="deprecate.html">Release 4.5: deprecated interfaces</a>
@@ -34,6 +33,6 @@
</ol>
<table width="100%"><tr><td><br></td><td align=right><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade.4.6/cursor.html b/db/docs/ref/upgrade.4.6/cursor.html
new file mode 100644
index 000000000..a5cd18cd3
--- /dev/null
+++ b/db/docs/ref/upgrade.4.6/cursor.html
@@ -0,0 +1,35 @@
+<!--$Id: cursor.so,v 1.4 2006/11/30 21:19:37 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
+<!--See the file LICENSE for redistribution information.-->
+<html>
+<head>
+<title>Berkeley DB Reference Guide: Release 4.6: C API cursor handle method names</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
+</head>
+<body bgcolor=white>
+<table width="100%"><tr valign=top>
+<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Upgrading Berkeley DB Applications</dl></h3></td>
+<td align=right><a href="../upgrade.4.6/intro.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.6/memp_fput.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p>
+<h3 align=center>Release 4.6: C API cursor handle method names</h3>
+<p>In the Berkeley DB 4.6 release, the C API <a href="../../api_c/dbc_class.html">DBC</a> handle methods have been
+renamed for consistency with the C++ and Java APIs. The change is the
+removal of the leading "c_" from the names, as follows:</p>
+<dl compact>
+<dt>DBC-&gt;c_close<dd>Renamed DBC-&gt;close
+<dt>DBC-&gt;c_count<dd>Renamed DBC-&gt;count
+<dt>DBC-&gt;c_del<dd>Renamed DBC-&gt;del
+<dt>DBC-&gt;c_dup<dd>Renamed DBC-&gt;dup
+<dt>DBC-&gt;c_get<dd>Renamed DBC-&gt;get
+<dt>DBC-&gt;c_pget<dd>Renamed DBC-&gt;pget
+<dt>DBC-&gt;c_put<dd>Renamed DBC-&gt;put
+</dl>
+<p>The old <a href="../../api_c/dbc_class.html">DBC</a> method names are deprecated but will continue for
+work for some number of future releases.</p>
+<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.6/intro.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.6/memp_fput.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
+</body>
+</html>
diff --git a/db/docs/ref/upgrade.4.6/disk.html b/db/docs/ref/upgrade.4.6/disk.html
new file mode 100644
index 000000000..aa8f870fd
--- /dev/null
+++ b/db/docs/ref/upgrade.4.6/disk.html
@@ -0,0 +1,30 @@
+<!--$Id: disk.so,v 1.5 2007/06/14 18:31:18 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
+<!--See the file LICENSE for redistribution information.-->
+<html>
+<head>
+<title>Berkeley DB Reference Guide: Release 4.6: upgrade requirements</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
+</head>
+<body bgcolor=white>
+<table width="100%"><tr valign=top>
+<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Upgrading Berkeley DB Applications</dl></h3></td>
+<td align=right><a href="../upgrade.4.6/win.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../test/run.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p>
+<h3 align=center>Release 4.6: upgrade requirements</h3>
+<p>The log file format changed in the Berkeley DB 4.6 release.</p>
+<p>The format of Hash database pages was changed in the Berkeley DB 4.6 release,
+and items are now stored in sorted order. <b>The format changes
+are entirely backward-compatible, and no database upgrades are needed.</b>
+However, upgrading existing databases can offer significant performance
+improvements. Note that databases created using the 4.1 release may
+not be usable with earlier Berkeley DB releases.</p>
+<p>For further information on upgrading Berkeley DB installations, see
+<a href="../../ref/upgrade/process.html">Upgrading Berkeley DB installations</a>.</p>
+<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.6/win.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../test/run.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
+</body>
+</html>
diff --git a/db/docs/ref/upgrade.4.6/event.html b/db/docs/ref/upgrade.4.6/event.html
new file mode 100644
index 000000000..addfcada9
--- /dev/null
+++ b/db/docs/ref/upgrade.4.6/event.html
@@ -0,0 +1,50 @@
+<!--$Id: event.so,v 1.2 2007/05/14 16:03:56 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
+<!--See the file LICENSE for redistribution information.-->
+<html>
+<head>
+<title>Berkeley DB Reference Guide: Release 4.6: replication events</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
+</head>
+<body bgcolor=white>
+<table width="100%"><tr valign=top>
+<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Upgrading Berkeley DB Applications</dl></h3></td>
+<td align=right><a href="../upgrade.4.6/memp_fset.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.6/full_election.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p>
+<h3 align=center>Release 4.6: replication events</h3>
+<p>It is now guaranteed the <a href="../../api_c/env_event_notify.html#DB_EVENT_REP_STARTUPDONE">DB_EVENT_REP_STARTUPDONE</a> event will be
+presented to the application after the corresponding
+<a href="../../api_c/env_event_notify.html#DB_EVENT_REP_NEWMASTER">DB_EVENT_REP_NEWMASTER</a> event, even in the face of extreme
+thread-scheduling anomalies. (In previous releases, if the thread
+processing the NEWMASTER message was starved, and STARTUPDONE occurred
+soon after, the order might have been reversed.)</p>
+<p>In addition, the <a href="../../api_c/env_event_notify.html#DB_EVENT_REP_NEWMASTER">DB_EVENT_REP_NEWMASTER</a> event is now presented
+to all types of replication applications: users of either the
+Replication Framework or the Base Replication API. In both cases, the
+<a href="../../api_c/env_event_notify.html#DB_EVENT_REP_NEWMASTER">DB_EVENT_REP_NEWMASTER</a> event always means that a site other than
+the local environment has become master.</p>
+<p>The <b>envid</b> parameter to <a href="../../api_c/rep_message.html">DB_ENV-&gt;rep_process_message</a> has been changed to
+be of type "int" rather than "int *", and the environment ID of a new
+master is presented to the application along with the
+<a href="../../api_c/env_event_notify.html#DB_EVENT_REP_NEWMASTER">DB_EVENT_REP_NEWMASTER</a> event. Replication applications should
+be modified to use the <a href="../../api_c/env_event_notify.html#DB_EVENT_REP_NEWMASTER">DB_EVENT_REP_NEWMASTER</a> event to determine
+the ID of the new master.</p>
+<p>The <b>envid</b> parameter has been removed from the <a href="../../api_c/rep_elect.html">DB_ENV-&gt;rep_elect</a>
+method and a new event type has been added. The
+<a href="../../api_c/env_event_notify.html#DB_EVENT_REP_ELECTED">DB_EVENT_REP_ELECTED</a> event is presented to the application at
+the site which wins an election. In the Berkeley DB 4.6 release, the normal
+result of a successful election is either the
+<a href="../../api_c/env_event_notify.html#DB_EVENT_REP_NEWMASTER">DB_EVENT_REP_NEWMASTER</a> event (with the winner's environment ID),
+or the <a href="../../api_c/env_event_notify.html#DB_EVENT_REP_ELECTED">DB_EVENT_REP_ELECTED</a> event. Only one of the two events
+will ever be delivered.</p>
+<p>The DB_REP_NEWMASTER return code has been removed from the
+<a href="../../api_c/rep_message.html">DB_ENV-&gt;rep_process_message</a> method. Replication applications should be modified to
+use the <a href="../../api_c/env_event_notify.html#DB_EVENT_REP_NEWMASTER">DB_EVENT_REP_NEWMASTER</a> and <a href="../../api_c/env_event_notify.html#DB_EVENT_REP_ELECTED">DB_EVENT_REP_ELECTED</a>
+events to determine the existence of a new master.</p>
+<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.6/memp_fset.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.6/full_election.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
+</body>
+</html>
diff --git a/db/docs/ref/upgrade.4.6/full_election.html b/db/docs/ref/upgrade.4.6/full_election.html
new file mode 100644
index 000000000..3db65fda7
--- /dev/null
+++ b/db/docs/ref/upgrade.4.6/full_election.html
@@ -0,0 +1,29 @@
+<!--$Id: full_election.so,v 1.3 2007/05/04 12:37:15 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
+<!--See the file LICENSE for redistribution information.-->
+<html>
+<head>
+<title>Berkeley DB Reference Guide: Release 4.6: DB_REP_FULL_ELECTION</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
+</head>
+<body bgcolor=white>
+<table width="100%"><tr valign=top>
+<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Upgrading Berkeley DB Applications</dl></h3></td>
+<td align=right><a href="../upgrade.4.6/event.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.6/verbose.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p>
+<h3 align=center>Release 4.6: DB_REP_FULL_ELECTION</h3>
+<p>The DB_REP_FULL_ELECTION flag historically specified to the
+<a href="../../api_c/repmgr_start.html">DB_ENV-&gt;repmgr_start</a> method has been removed from the 4.6 release.</p>
+<p>In the Berkeley DB 4.6 release, a simpler and more flexible implementation of
+this functionality is available. Applications needing to configure the
+first election of a replication group differently from subsequent
+elections should use the <a href="../../api_c/rep_timeout.html#DB_REP_FULL_ELECTION_TIMEOUT">DB_REP_FULL_ELECTION_TIMEOUT</a> flag to
+the <a href="../../api_c/rep_timeout.html">DB_ENV-&gt;rep_set_timeout</a> method to specify a different timeout for the
+first election.</p>
+<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.6/event.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.6/verbose.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
+</body>
+</html>
diff --git a/db/docs/ref/upgrade.4.6/intro.html b/db/docs/ref/upgrade.4.6/intro.html
new file mode 100644
index 000000000..c39563e59
--- /dev/null
+++ b/db/docs/ref/upgrade.4.6/intro.html
@@ -0,0 +1,25 @@
+<!--$Id: intro.so,v 1.3 2006/10/26 15:34:01 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
+<!--See the file LICENSE for redistribution information.-->
+<html>
+<head>
+<title>Berkeley DB Reference Guide: Release 4.6: introduction</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
+</head>
+<body bgcolor=white>
+<table width="100%"><tr valign=top>
+<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Upgrading Berkeley DB Applications</dl></h3></td>
+<td align=right><a href="../upgrade.4.5/disk.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.6/cursor.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p>
+<h3 align=center>Release 4.6: introduction</h3>
+<p>The following pages describe how to upgrade applications coded against
+the Berkeley DB 4.5 release interfaces to the Berkeley DB 4.6 release interfaces.
+This information does not describe how to upgrade Berkeley DB 1.85 release
+applications.</p>
+<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.5/disk.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.6/cursor.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
+</body>
+</html>
diff --git a/db/docs/ref/upgrade.4.6/memp_fput.html b/db/docs/ref/upgrade.4.6/memp_fput.html
new file mode 100644
index 000000000..f4dad295b
--- /dev/null
+++ b/db/docs/ref/upgrade.4.6/memp_fput.html
@@ -0,0 +1,28 @@
+<!--$Id: memp_fput.so,v 1.1 2006/11/30 19:06:51 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
+<!--See the file LICENSE for redistribution information.-->
+<html>
+<head>
+<title>Berkeley DB Reference Guide: Release 4.6: DB_MPOOLFILE-&gt;put</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
+</head>
+<body bgcolor=white>
+<table width="100%"><tr valign=top>
+<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Upgrading Berkeley DB Applications</dl></h3></td>
+<td align=right><a href="../upgrade.4.6/cursor.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.6/memp_fset.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p>
+<h3 align=center>Release 4.6: DB_MPOOLFILE-&gt;put</h3>
+<p>The <a href="../../api_c/memp_fput.html">DB_MPOOLFILE-&gt;put</a> method takes a new parameter in the Berkeley DB 4.6 release, a
+page priority. This parameter allows applications to specify the page's
+priority when returning the page to the cache.</p>
+<p>Applications calling the <a href="../../api_c/memp_fput.html">DB_MPOOLFILE-&gt;put</a> method can upgrade by adding a
+<a href="../../api_c/memp_fput.html#DB_PRIORITY_UNCHANGED">DB_PRIORITY_UNCHANGED</a> parameter to their calls to the
+<a href="../../api_c/memp_fput.html">DB_MPOOLFILE-&gt;put</a> method. This will result in no change in the application's
+behavior.</p>
+<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.6/cursor.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.6/memp_fset.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
+</body>
+</html>
diff --git a/db/docs/ref/upgrade.4.6/memp_fset.html b/db/docs/ref/upgrade.4.6/memp_fset.html
new file mode 100644
index 000000000..68d2617ff
--- /dev/null
+++ b/db/docs/ref/upgrade.4.6/memp_fset.html
@@ -0,0 +1,25 @@
+<!--$Id: memp_fset.so,v 1.2 2007/05/04 12:37:15 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
+<!--See the file LICENSE for redistribution information.-->
+<html>
+<head>
+<title>Berkeley DB Reference Guide: Release 4.6: DB_MPOOLFILE-&gt;set</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
+</head>
+<body bgcolor=white>
+<table width="100%"><tr valign=top>
+<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Upgrading Berkeley DB Applications</dl></h3></td>
+<td align=right><a href="../upgrade.4.6/memp_fput.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.6/event.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p>
+<h3 align=center>Release 4.6: DB_MPOOLFILE-&gt;set</h3>
+<p>The DB_MPOOLFILE-&gt;set method has been removed from the Berkeley DB 4.6
+release. Applications calling this method can upgrade by removing all
+calls to the method. This will result in no change in the application's
+behavior.</p>
+<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.6/memp_fput.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.6/event.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
+</body>
+</html>
diff --git a/db/docs/ref/upgrade.4.6/toc.html b/db/docs/ref/upgrade.4.6/toc.html
new file mode 100644
index 000000000..0dba31b51
--- /dev/null
+++ b/db/docs/ref/upgrade.4.6/toc.html
@@ -0,0 +1,34 @@
+<!--$Id: toc.so,v 1.7 2007/05/04 12:37:15 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
+<!--See the file LICENSE for redistribution information.-->
+<html>
+<head>
+<title>Berkeley DB Reference Guide: Upgrading Berkeley DB 4.5 applications to Berkeley DB 4.6</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
+</head>
+<body bgcolor=white>
+<a name="2"><!--meow--></a>
+<table width="100%"><tr valign=top>
+<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Upgrading Berkeley DB Applications</dl></h3></td>
+<td align=right><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<p>
+<h3 align=center>Upgrading Berkeley DB 4.5 applications to Berkeley DB 4.6</h3>
+<ol>
+<li><a href="intro.html">Release 4.6: introduction</a>
+<li><a href="cursor.html">Release 4.6: C API cursor handle method names</a>
+<li><a href="memp_fput.html">Release 4.6: DB_MPOOLFILE-&gt;put</a>
+<li><a href="memp_fset.html">Release 4.6: DB_MPOOLFILE-&gt;set</a>
+<li><a href="event.html">Release 4.6: replication events</a>
+<li><a href="full_election.html">Release 4.6: DB_REP_FULL_ELECTION</a>
+<li><a href="verbose.html">Release 4.6: verbose output</a>
+<li><a href="verb.html">Release 4.6: DB_VERB_REPLICATION</a>
+<li><a href="win.html">Release 4.6: Windows 9X</a>
+<li><a href="disk.html">Release 4.6: upgrade requirements</a>
+</ol>
+<table width="100%"><tr><td><br></td><td align=right><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
+</body>
+</html>
diff --git a/db/docs/ref/upgrade.4.6/verb.html b/db/docs/ref/upgrade.4.6/verb.html
new file mode 100644
index 000000000..fea2306cf
--- /dev/null
+++ b/db/docs/ref/upgrade.4.6/verb.html
@@ -0,0 +1,26 @@
+<!--$Id: verb.so,v 1.3 2007/01/29 22:24:39 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
+<!--See the file LICENSE for redistribution information.-->
+<html>
+<head>
+<title>Berkeley DB Reference Guide: Release 4.6: DB_VERB_REPLICATION</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
+</head>
+<body bgcolor=white>
+<table width="100%"><tr valign=top>
+<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Upgrading Berkeley DB Applications</dl></h3></td>
+<td align=right><a href="../upgrade.4.6/verbose.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.6/win.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p>
+<h3 align=center>Release 4.6: DB_VERB_REPLICATION</h3>
+<p>The <a href="../../api_c/env_set_verbose.html#DB_VERB_REPLICATION">DB_VERB_REPLICATION</a> flag no longer requires the Berkeley DB
+library be built with the
+<a href="../../ref/build_unix/conf.html#--enable-diagnostic">--enable-diagnostic</a>
+configuration option to output additional replication logging
+information.</p>
+<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.6/verbose.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.6/win.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
+</body>
+</html>
diff --git a/db/docs/ref/upgrade.4.6/verbose.html b/db/docs/ref/upgrade.4.6/verbose.html
new file mode 100644
index 000000000..9bbbb0ffb
--- /dev/null
+++ b/db/docs/ref/upgrade.4.6/verbose.html
@@ -0,0 +1,47 @@
+<!--$Id: verbose.so,v 1.2 2006/11/17 17:44:12 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
+<!--See the file LICENSE for redistribution information.-->
+<html>
+<head>
+<title>Berkeley DB Reference Guide: Release 4.6: verbose output</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
+</head>
+<body bgcolor=white>
+<table width="100%"><tr valign=top>
+<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Upgrading Berkeley DB Applications</dl></h3></td>
+<td align=right><a href="../upgrade.4.6/full_election.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.6/verb.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p>
+<h3 align=center>Release 4.6: verbose output</h3>
+<p>When an error occurs in the Berkeley DB library, an exception is thrown or an
+error return value is returned by the interface. In some cases,
+however, the exception or returned value may be insufficient to
+completely describe the cause of the error, especially during initial
+application debugging. Applications can configure Berkeley DB for verbose
+messages to be output when an error occurs, but it's a common cause of
+confusion for new users that no verbose messages are available by
+default.</p>
+<p>In the Berkeley DB 4.6 release, verbose messages are configured by default.
+For the C and C++ APIs, this means the default configuration when
+applications first create <a href="../../api_c/db_class.html">DB</a> or <a href="../../api_c/env_class.html">DB_ENV</a> handles is as if
+the <a href="../../api_c/env_set_errfile.html">DB_ENV-&gt;set_errfile</a> or <a href="../../api_c/db_set_errfile.html">DB-&gt;set_errfile</a> methods were called
+with the standard error output (stderr) specified as the FILE *
+argument. Applications wanting no output at all can turn off this
+default configuration by calling the <a href="../../api_c/env_set_errfile.html">DB_ENV-&gt;set_errfile</a> or
+<a href="../../api_c/db_set_errfile.html">DB-&gt;set_errfile</a> methods with NULL as the FILE * argument.
+Additionally, explicitly configuring the error output channel using any
+of the <a href="../../api_c/env_set_errfile.html">DB_ENV-&gt;set_errfile</a>, <a href="../../api_c/db_set_errfile.html">DB-&gt;set_errfile</a>,
+<a href="../../api_c/env_set_errcall.html">DB_ENV-&gt;set_errcall</a>, <a href="../../api_c/db_set_errcall.html">DB-&gt;set_errcall</a>,
+<a href="../../api_cxx/env_set_error_stream.html">DbEnv::set_error_stream</a> or <a href="../../api_cxx/db_set_error_stream.html">Db::set_error_stream</a> methods will
+also turn off this default output for the application.</p>
+<p>Applications which configure Berkeley DB with any error output channel should
+not require any changes.</p>
+<p>Applications which depend on having no output from the Berkeley DB library by
+default, should be changed to call the <a href="../../api_c/env_set_errfile.html">DB_ENV-&gt;set_errfile</a> or
+<a href="../../api_c/db_set_errfile.html">DB-&gt;set_errfile</a> methods with NULL as the FILE * argument.</p>
+<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.6/full_election.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.6/verb.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
+</body>
+</html>
diff --git a/db/docs/ref/upgrade.4.6/win.html b/db/docs/ref/upgrade.4.6/win.html
new file mode 100644
index 000000000..08918fa64
--- /dev/null
+++ b/db/docs/ref/upgrade.4.6/win.html
@@ -0,0 +1,24 @@
+<!--$Id: win.so,v 1.2 2007/04/05 21:20:38 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
+<!--See the file LICENSE for redistribution information.-->
+<html>
+<head>
+<title>Berkeley DB Reference Guide: Release 4.6: Windows 9X</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
+</head>
+<body bgcolor=white>
+<table width="100%"><tr valign=top>
+<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Upgrading Berkeley DB Applications</dl></h3></td>
+<td align=right><a href="../upgrade.4.6/verb.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.6/disk.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p>
+<h3 align=center>Release 4.6: Windows 9X</h3>
+<p>Berkeley DB no longer supports process-shared database environments on Windows
+9X platforms; the <a href="../../api_c/env_open.html#DB_PRIVATE">DB_PRIVATE</a> flag must always be specified to
+the <a href="../../api_c/env_open.html">DB_ENV-&gt;open</a> method.</p>
+<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade.4.6/verb.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.4.6/disk.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
+</body>
+</html>
diff --git a/db/docs/ref/upgrade/process.html b/db/docs/ref/upgrade/process.html
index bc0837c67..05ece2a10 100644
--- a/db/docs/ref/upgrade/process.html
+++ b/db/docs/ref/upgrade/process.html
@@ -1,6 +1,5 @@
-<!--$Id: process.so,v 1.14 2006/06/27 22:49:29 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: process.so,v 1.15 2006/10/09 16:51:34 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -11,7 +10,7 @@
<body bgcolor=white>
<table width="100%"><tr valign=top>
<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Upgrading Berkeley DB Applications</dl></h3></td>
-<td align=right><a href="../upgrade/version.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.2.0/intro.html"><img src="../../images/next.gif" alt="Next"></a>
+<td align=right><a href="../upgrade/version.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../changelog/toc.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
<p>
<h3 align=center>Upgrading Berkeley DB installations</h3>
@@ -156,8 +155,8 @@ group.
client database environments, upgrade the master database environment,
and then re-add all of the clients to the replication group using the
standard replication procedures for new sites.</p>
-<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade/version.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade.2.0/intro.html"><img src="../../images/next.gif" alt="Next"></a>
+<table width="100%"><tr><td><br></td><td align=right><a href="../upgrade/version.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../changelog/toc.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/upgrade/version.html b/db/docs/ref/upgrade/version.html
index f91a11e23..eb6a9392d 100644
--- a/db/docs/ref/upgrade/version.html
+++ b/db/docs/ref/upgrade/version.html
@@ -1,6 +1,5 @@
<!--$Id: version.so,v 10.24 2003/11/27 18:26:01 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -42,6 +41,6 @@ information, the <a href="../../api_c/env_version.html">db_version</a> function
encapsulating the version information, suitable for display to a user.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../build_vxworks/faq.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../upgrade/process.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/xa/build.html b/db/docs/ref/xa/build.html
index 8438d3c5c..308d58631 100644
--- a/db/docs/ref/xa/build.html
+++ b/db/docs/ref/xa/build.html
@@ -1,6 +1,5 @@
<!--$Id: build.so,v 10.11 2003/10/18 19:16:21 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -177,6 +176,6 @@ transactions.
</dl>
<table width="100%"><tr><td><br></td><td align=right><a href="../xa/intro.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../xa/xa_intro.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/xa/config.html b/db/docs/ref/xa/config.html
deleted file mode 100644
index cfe31f372..000000000
--- a/db/docs/ref/xa/config.html
+++ /dev/null
@@ -1,79 +0,0 @@
-<!--$Id: config.so,v 10.18 2000/03/22 22:02:15 bostic Exp $-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB Reference Guide: Configuring Berkeley DB with the Tuxedo System</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
- <a name="2"><!--meow--></a>
-<table><tr valign=top>
-<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>XA Resource Manager</dl></h3></td>
-<td width="1%"><a href="../../ref/xa/intro.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../ref/toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/xa/faq.html"><img src="../../images/next.gif" alt="Next"></a>
-</td></tr></table>
-<p>
-<h1 align=center>Configuring Berkeley DB with the Tuxedo System</h1>
-<p>This information assumes that you have already installed the Berkeley DB
-library.
-<p>First, you must update the resource manager file in Tuxedo. For the
-purposes of this discussion, assume the Tuxedo home directory is in:
-<p><blockquote><pre>/home/tuxedo</pre></blockquote>
-In that case, the resource manager file will be located in:
-<p><blockquote><pre>/home/tuxedo/udataobj/RM</pre></blockquote>
-Edit the resource manager file, adding the following line:
-<p><blockquote><pre>BERKELEY-DB:db_xa_switch:-L${DB_INSTALL}/lib -ldb \
- -lsocket -ldl -lm</pre></blockquote>
-<p>where ${DB_INSTALLHOME} is the directory into which you installed the Berkeley DB
-library.
-<p><b>Note, the above load options are for a Sun Microsystems Solaris
-5.6 Sparc installation of Tuxedo, and may not be correct for your system.</b>
-<p>Next, you must build the transaction manager server. To do this, use the
-Tuxedo <b>buildtms</b>(1) utility. The buildtms utility will create
-the Berkeley-DB resource manager in the directory from which it was run.
-The parameters to buildtms should be:
-<p><blockquote><pre>buildtms -v -o DBRM -r BERKELEY-DB</pre></blockquote>
-<p>This will create an executable transaction manager server, DBRM, that is
-called by Tuxedo to process begins, commits, and aborts.
-<p>Finally, you must make sure that your TUXCONFIG environment variable
-identifies a ubbconfig file that properly identifies your resource
-managers. In the GROUPS section of the ubb file, you should identify the
-group's LMID and GRPNO as well as the transaction manager server name
-"TMSNAME=DBRM." You must also specify the OPENINFO parameter, setting it
-equal to the string:
-<p><blockquote><pre>rm_name:dir</pre></blockquote>
-<p>where rm_name is the resource name specified in the RM file (i.e.,
-BERKELEY-DB) and dir is the directory for the Berkeley DB home environment
-(see <a href="../../api_c/env_open.html">DBENV-&gt;open</a> for a discussion of Berkeley DB environments).
-<p>As Tuxedo resource manager startup accepts only a single string for
-configuration, any environment customization that might have been done
-via the config parameter to <a href="../../api_c/env_open.html">DBENV-&gt;open</a> must instead be done by
-placing a <a href="../../ref/env/naming.html#DB_CONFIG">DB_CONFIG</a> file in the Berkeley DB environment directory. See
-<a href="../../ref/env/naming.html">Berkeley DB File Naming</a> for further
-information.
-<p>Consider the following configuration. We have built a transaction
-manager server as described above. We want the Berkeley DB environment
-to be <b>/home/dbhome</b>, our database files to be maintained
-in <b>/home/datafiles</b>, our log files to be maintained in
-<b>/home/log</b>, and we want a duplexed server.
-<p>The GROUPS section of the ubb file might look like:
-<p><blockquote><pre>group_tm LMID=myname GRPNO=1 TMSNAME=DBRM TMSCOUNT=2 \
- OPENINFO="BERKELEY-DB:/home/dbhome"</pre></blockquote>
-<p>There would be a <a href="../../ref/env/naming.html#DB_CONFIG">DB_CONFIG</a> configuration file in the directory
-<b>/home/dbhome</b> that contained the following two lines:
-<p><blockquote><pre>DB_DATA_DIR /home/datafiles
-DB_LOG_DIR /home/log
-</pre></blockquote>
-<p>Finally, the ubb file must be translated into a binary version, using
-Tuxedo's <b>tmloadcf</b>(1) utility, and then the pathname of that
-binary file must be specified as your TUXCONFIG environment variable.
-<p>At this point, your system is properly initialized to use the Berkeley DB
-resource manager.
-<p>See <a href="../../api_c/db_create.html">db_create</a> for further information on accessing data files
-using XA.
-<table><tr><td><br></td><td width="1%"><a href="../../ref/xa/intro.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../ref/toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/xa/faq.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>
-</body>
-</html>
diff --git a/db/docs/ref/xa/faq.html b/db/docs/ref/xa/faq.html
index 49c0ee94b..e81f82b1d 100644
--- a/db/docs/ref/xa/faq.html
+++ b/db/docs/ref/xa/faq.html
@@ -1,10 +1,9 @@
-<!--$Id: faq.so,v 10.21 2004/08/13 03:39:01 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: faq.so,v 10.22 2006/11/13 18:05:06 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
-<title>Berkeley DB Reference Guide: XA FAQ</title>
+<title>Berkeley DB Reference Guide: XA: Frequently Asked Questions</title>
<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
</head>
@@ -15,7 +14,7 @@
<td align=right><a href="../xa/xa_config.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../apprec/intro.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
<p>
-<h3 align=center>XA FAQ</h3>
+<h3 align=center>XA: Frequently Asked Questions</h3>
<ol>
<p><li><b>Is it possible to mix XA and non-XA transactions?</b>
<p>Yes. It is also possible for XA and non-XA transactions to coexist in
@@ -61,6 +60,6 @@ should occur independently of XA operation.</p>
</ol>
<table width="100%"><tr><td><br></td><td align=right><a href="../xa/xa_config.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../apprec/intro.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/xa/intro.html b/db/docs/ref/xa/intro.html
index 7b54850a1..c8f07c4e1 100644
--- a/db/docs/ref/xa/intro.html
+++ b/db/docs/ref/xa/intro.html
@@ -1,10 +1,9 @@
-<!--$Id: intro.so,v 10.6 2001/11/17 16:59:33 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: intro.so,v 10.7 2006/11/13 18:05:06 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
-<title>Berkeley DB Reference Guide: Introduction</title>
+<title>Berkeley DB Reference Guide: Introduction to distributed transactions</title>
<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
</head>
@@ -15,7 +14,7 @@
<td align=right><a href="../rep/ex_rq.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../xa/build.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
<p>
-<h3 align=center>Introduction</h3>
+<h3 align=center>Introduction to distributed transactions</h3>
<p>Berkeley DB provides support for distributed transactions using a two-phase
commit protocol via its <a href="../../api_c/txn_prepare.html">DB_TXN-&gt;prepare</a> and <a href="../../api_c/txn_recover.html">DB_ENV-&gt;txn_recover</a>
interfaces. The <a href="../../api_c/txn_prepare.html">DB_TXN-&gt;prepare</a> method performs the first phase of a
@@ -48,6 +47,6 @@ transactions, the logs may be copied for backup purposes and the backup
will be consistent across the multiple environments.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../rep/ex_rq.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../xa/build.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/xa/xa_config.html b/db/docs/ref/xa/xa_config.html
index 99baa7bdc..9f15ff727 100644
--- a/db/docs/ref/xa/xa_config.html
+++ b/db/docs/ref/xa/xa_config.html
@@ -1,6 +1,5 @@
<!--$Id: xa_config.so,v 10.23 2003/06/27 17:38:24 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -75,6 +74,6 @@ resource manager.</p>
using XA.</p>
<table width="100%"><tr><td><br></td><td align=right><a href="../xa/xa_intro.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../xa/faq.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/ref/xa/xa_intro.html b/db/docs/ref/xa/xa_intro.html
index 41b9033f9..6f3d027a5 100644
--- a/db/docs/ref/xa/xa_intro.html
+++ b/db/docs/ref/xa/xa_intro.html
@@ -1,6 +1,5 @@
<!--$Id: xa_intro.so,v 10.22 2001/03/30 20:34:54 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -57,6 +56,6 @@ X/Open Document Number: XO/CAE/91/300.</blockquote>
by Andrade, Carges, Dwyer and Felts (Addison Wesley Longman).</blockquote>
<table width="100%"><tr><td><br></td><td align=right><a href="../xa/build.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../xa/xa_config.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/sleepycat/legal.html b/db/docs/sleepycat/legal.html
deleted file mode 100644
index 38237aabd..000000000
--- a/db/docs/sleepycat/legal.html
+++ /dev/null
@@ -1,63 +0,0 @@
-<!--$Id: legal.so,v 10.21 2004/08/16 01:23:06 bostic Exp $-->
-<!--Copyright 1997-2004 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: Sleepycat Software Legal Notices</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
-</head>
-<body bgcolor=white>
-<p align=center>
-<img src="../images/sleepycat.gif" alt="Sleepycat Software Inc."></p>
-<h3 align=center>Sleepycat Software Legal Notices</h3>
-<p>Copyright (c) 1990-2004 Sleepycat Software, Inc., 118 Tower Rd.,
-Lincoln, MA 01773, U.S.A. All Rights Reserved.</p>
-<p>This product and publication is protected by copyright and distributed
-under licenses restricting its use, copying and distribution. See the
-LICENSE file in the distribution for further information.</p>
-<p>RESTRICTED RIGHTS: Use, duplication, or disclosure by the U.S. Government
-is subject to restrictions of FAR 52.227-14(g)(2)(6/87) and FAR
-52.227-19(6/87), or DFAR 252.227-7015(b)(6/95) and DFAR 227.7202-3(a).</p>
-<p>Sleepycat and the names of Sleepycat Software products referenced herein
-are trademarks, registered trademarks or service marks of Sleepycat
-Software, Inc.</p>
-<p>DIGITAL and ULTRIX are trademarks, registered trademarks or service
-marks of Compaq Corporation.</p>
-<p>Hewlett-Packard and HP-UX are trademarks, registered trademarks or
-service marks of Hewlett-Packard Company.</p>
-<p>Microsoft, Windows, Windows NT, Windows 2000 and Windows XP are
-trademarks, registered trademarks or service marks of Microsoft
-Corporation.</p>
-<p>QNX and Neutrino are trademarks, registered trademarks or service marks
-QNX Software Systems Ltd.</p>
-<p>Sun Microsystems, SunOS and Solaris are trademarks, registered
-trademarks or service marks of Sun Microsystems, Inc.</p>
-<p>TUXEDO is a trademark, registered trademark or service mark of BEA
-Systems, Inc.</p>
-<p>Linux is a registered trademark of Linus Torvalds.</p>
-<p>VxWorks and Tornado are trademarks, registered trademarks or service
-marks of Wind River Systems Inc.</p>
-<p>All other brand, company and product names referenced in this publication
-may be trademarks, registered trademarks or service marks of their
-respective holders and are used here for informational purposes only.</p>
-<p>WARNING: There is a non-zero chance that, through a process know as
-"tunneling," this product may spontaneously disappear from its present
-location and reappear at any random place in the universe. Sleepycat
-Software will not be responsible for damages or inconvenience that may
-result.</p>
-<p><b>THIS PRODUCT IS PROVIDED BY SLEEPYCAT SOFTWARE "AS IS" AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT,
-ARE DISCLAIMED. IN NO EVENT SHALL SLEEPYCAT SOFTWARE BE LIABLE FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGE.</b></p>
-<p><font size=1><a href="../sleepycat/legal.html">Copyright (c) 1996-2004</a> <a href="http://www.sleepycat.com">Sleepycat Software, Inc.</a> - All rights reserved.</font>
-</body>
-</html>
diff --git a/db/docs/sleepycat/license.html b/db/docs/sleepycat/license.html
deleted file mode 100644
index b3aaad433..000000000
--- a/db/docs/sleepycat/license.html
+++ /dev/null
@@ -1,114 +0,0 @@
-<!--$Id: license.so,v 10.9 2004/11/04 20:25:33 bostic Exp $-->
-<!--Copyright 1997-2004 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<!--See the file LICENSE for redistribution information.-->
-<html>
-<head>
-<title>Berkeley DB: Sleepycat Software Product License</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
-</head>
-<body bgcolor=white>
-<p align=center>
-<img src="../images/sleepycat.gif" alt="Sleepycat Software Inc."></p>
-<h3 align=center>Sleepycat Software Product License</h3>
-<p>The following is the license that applies to this copy of the Berkeley DB
-software. For a license to use the Berkeley DB software under conditions
-other than those described here, or to purchase support for this
-software, please
-<a href="http://www.sleepycat.com/webforms/contactus.shtml">contact Sleepycat Software</a>.</p>
-<blockquote><pre>/*
- * Copyright (c) 1990-2004
- * Sleepycat Software. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Redistributions in any form must be accompanied by information on
- * how to obtain complete source code for the DB software and any
- * accompanying software that uses the DB software. The source code
- * must either be included in the distribution or be available for no
- * more than the cost of distribution plus a nominal fee, and must be
- * freely redistributable under reasonable conditions. For an
- * executable file, complete source code means the source code for all
- * modules it contains. It does not include source code for modules or
- * files that typically accompany the major components of the operating
- * system on which the executable file runs.
- *
- * THIS SOFTWARE IS PROVIDED BY SLEEPYCAT SOFTWARE ``AS IS'' AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR
- * NON-INFRINGEMENT, ARE DISCLAIMED. IN NO EVENT SHALL SLEEPYCAT SOFTWARE
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-/*
- * Copyright (c) 1990, 1993, 1994, 1995
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-/*
- * Copyright (c) 1995, 1996
- * The President and Fellows of Harvard University. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY HARVARD AND ITS CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL HARVARD OR ITS CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-</pre></blockquote>
-<p><font size=1><a href="../sleepycat/legal.html">Copyright (c) 1996-2004</a> <a href="http://www.sleepycat.com">Sleepycat Software, Inc.</a> - All rights reserved.</font>
-</body>
-</html>
diff --git a/db/docs/utility/berkeley_db_svc.html b/db/docs/utility/berkeley_db_svc.html
index 6df98117e..e8e22e555 100644
--- a/db/docs/utility/berkeley_db_svc.html
+++ b/db/docs/utility/berkeley_db_svc.html
@@ -1,6 +1,5 @@
-<!--$Id: berkeley_db_svc.so,v 10.16 2004/07/16 20:51:11 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: berkeley_db_svc.so,v 10.17 2006/10/05 01:06:08 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -58,6 +57,6 @@ DB_HOME is set, it is used as the path of the database home, as described
in <a href="../api_c/env_open.html">DB_ENV-&gt;open</a>.
</dl>
</tt>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/utility/db_archive.html b/db/docs/utility/db_archive.html
index 7c2920761..2072b86d8 100644
--- a/db/docs/utility/db_archive.html
+++ b/db/docs/utility/db_archive.html
@@ -1,6 +1,5 @@
-<!--$Id: db_archive.so,v 10.29 2006/06/12 14:03:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: db_archive.so,v 10.30 2006/10/05 01:06:08 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -89,6 +88,6 @@ DB_HOME is set, it is used as the path of the database home, as described
in <a href="../api_c/env_open.html">DB_ENV-&gt;open</a>.
</dl>
</tt>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/utility/db_checkpoint.html b/db/docs/utility/db_checkpoint.html
index 92f87273b..bbf9098d9 100644
--- a/db/docs/utility/db_checkpoint.html
+++ b/db/docs/utility/db_checkpoint.html
@@ -1,6 +1,5 @@
-<!--$Id: db_checkpoint.so,v 10.27 2005/12/05 20:48:10 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: db_checkpoint.so,v 10.28 2006/10/05 01:06:08 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -76,6 +75,6 @@ DB_HOME is set, it is used as the path of the database home, as described
in <a href="../api_c/env_open.html">DB_ENV-&gt;open</a>.
</dl>
</tt>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/utility/db_codegen.html b/db/docs/utility/db_codegen.html
new file mode 100644
index 000000000..85a3b0b96
--- /dev/null
+++ b/db/docs/utility/db_codegen.html
@@ -0,0 +1,189 @@
+<!--$Id: db_codegen.so,v 10.6 2007/05/17 18:29:34 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
+<!--See the file LICENSE for redistribution information.-->
+<html>
+<head>
+<title>Berkeley DB: db_codegen</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
+</head>
+<body bgcolor=white>
+<table width="100%"><tr valign=top>
+<td>
+<h3>db_codegen</h3>
+</td>
+</tr></table>
+<hr size=1 noshade>
+<tt>
+<h3><pre>db_codegen [<b>-Vv</b>] [<b>-a c</b>] [<b>-i file</b>] [<b>-o file</b>]</pre></h3>
+<h3>Description</h3>
+<a name="2"><!--meow--></a>
+<p>The db_codegen utility generates application code to create and
+configure Berkeley DB database environments and databases based on a simple
+description language, and writes it to one or more output files. The
+generated code may need modification, in the case of complicated
+applications, but will usually significantly reduce the time required
+to create Berkeley DB applications.</p>
+<p>The options are as follows:</p>
+<dl compact>
+<dt><b>-a</b><dd>Generate code for the specified API (currently, only "c" is accepted).
+<dt><b>-i</b><dd>Specify an input file; by default, stdin is used.
+<dt><b>-o</b><dd>Specify an output file prefix; by default, "application" is used.
+<dt><b>-V</b><dd>Write the library version number to the standard output, and exit.
+<dt><b>-v</b><dd>Run in verbose mode.
+</dl>
+<p>The db_codegen utility exits 0 on success, and &gt;0 if an error occurs.</p>
+<h3>C Language Specific Information</h3>
+<p>By default, when the db_codegen utility generates C-language
+code, the output file is named "application.c". The output filename
+can be specified with <b>-o</b> option.</p>
+<p>At the beginning of the output file is a list of public database
+environment (<a href="../api_c/env_class.html">DB_ENV</a>) handles and database (<a href="../api_c/db_class.html">DB</a>) handles,
+as specified by the description language. The database environment
+handle variables are named "XXX_dbenv", where "XXX" is the name of the
+environment in the input specification. For databases associated with
+a database environment, the database handle variables are named
+"XXX_YYY", where "XXX" is the name of the environment, and "YYY" is the
+name of the database. For standalone databases, the database handle
+variables are named "XXX", where "XXX" is the name of the database.</p>
+<p>There are two public functions in the output file: bdb_startup and
+bdb_shutdown. The bdb_startup function should be called to create and
+configure the database environments and databases, and the bdb_shutdown
+function should be called to gracefully shut down the environments and
+databases.</p>
+<h3>Specification Language</h3>
+<p>The db_codegen uses a simple description language:</p>
+<p><ul type=disc>
+<li>Lines in the input consist of white-space separated tokens.
+<li>Tokens are case-insensitive.
+<li>Empty lines, and lines where the first non-space character
+is hash mark ("#"). are ignored. In addition, hash marks may appear
+in lines, in which case the content of the line from the hash mark to
+the end of the line is ignored.
+</ul>
+<p>There are two top-level objects: "environment" and "database", which
+correspond to database environments and databases, respectively. These
+top-level objects can be associated with keywords to describe their
+configuration and relationships.</p>
+<p>For example, the following input would create two standalone databases:</p>
+<blockquote><pre>database data_one {
+ type btree
+}
+database data_two {
+ type btree
+}</pre></blockquote>
+<p>In this case, there would be no <a href="../api_c/env_class.html">DB_ENV</a> handle, and the public
+<a href="../api_c/db_class.html">DB</a> handles would be:</p>
+<blockquote><pre>DB *data_one;
+DB *data_two;</pre></blockquote>
+<p>For example, the following input would create a database environment
+which contains three databases:</p>
+<blockquote><pre>environment myenv {
+ database data_one {
+ type btree
+ }
+ database data_two {
+ type btree
+ }
+ database data_three {
+ type btree
+ }
+}</pre></blockquote>
+<p>In this case, the public <a href="../api_c/env_class.html">DB_ENV</a> and <a href="../api_c/db_class.html">DB</a> handles would be:</p>
+<blockquote><pre>DB_ENV *myenv_dbenv;
+DB *myenv_data_one;
+DB *myenv_data_two;
+DB *myenv_data_three;</pre></blockquote>
+<p>A variety of keywords can be specified for the databases and the
+environments. For example, the cache size can be specified for
+the database environment, and the page size can be specified for
+the database, as well as secondary relationships:</p>
+<blockquote><pre>environment myenv {
+ cachesize 2 0 10
+ database data_one {
+ type btree
+ pagesize 1024
+ }
+ database data_two {
+ primary data_one
+ secondary_offset 10 15
+ type btree
+ pagesize 32768
+ }
+ database data_three {
+ type btree
+ pagesize 512
+ }
+}</pre></blockquote>
+<h3>Environment Keywords</h3>
+<dl compact>
+<dt>environment<dd>Start a database environment block.
+<p>There must be three tokens on the line: the keyword, the name of the
+environment and an opening brace ("{").</p>
+<dt>home<dd>Specify the database environment home directory.
+<p>There must be two tokens on the line: the keyword, and the home
+directory.</p>
+<dt>cachesize<dd>Specify the database environment cache size.
+<p>There must be two tokens on the line: the keyword, the gigabytes of
+cache, the bytes of cache, and the number of caches (the number of
+underlying physical areas into which the cache is logically
+divided).</p>
+<dt>private<dd>Specify the database environment is private.
+<p>There must be one token on the line: the keyword by itself.</p>
+<dt>}<dd>End the database environment block.
+<p>There must be one token on the line: the keyword by itself.</p>
+</dl>
+<h3>Database Keywords</h3>
+<dl compact>
+<dt>database<dd>Start a database block.
+<p>There must be three tokens on the line: the keyword, the name of the
+database and an opening brace ("{").</p>
+<dt>custom<dd>Specify a custom key-comparison routine. This is used when the Btree
+database requires a specific sort that db_codegen cannot
+generate. A stub key comparison routine will be created and configured
+for the database which should be modified as necessary. See the
+"key_type" keyword for more information.
+<p>There must be one token on the line: the keyword by itself.</p>
+<dt>dupsort<dd>Configure the database to support sorted duplicates.
+<p>There must be one token on the line: the keyword by itself.</p>
+<dt>extentsize<dd>Configure the size of the Queue database extent files.
+<p>There must be two tokens on the line: the keyword, and the extent file size,
+as a number of pages.</p>
+<dt>key_type<dd>Configure a integral type key-comparison routine. This is used when the
+Btree database Btree database key is an integral type (such as "unsigned
+int", or "u_int32_t"). Any C-language integral type may be specified.
+See the "custom" keyword for more information. A Btree comparison routine
+based on the type of the key will be created and configured.
+<p>There must be two tokens on the line: the keyword, and the type.</p>
+<dt>pagesize<dd>Configure the database page size.
+<p>There must be two tokens on the line: the keyword, and the page size
+in bytes.</p>
+<dt>primary<dd>Configure the database as a secondary index. A stub secondary callback
+routine will be created and configured for the database, which should
+be modified as necessary. See the "secondary_offset" keyword for more
+information.
+<p>name of the primary database for which this database is a secondary.</p>
+<dt>recnum<dd>Configure the Btree database to support record number access.
+<p>There must be one token on the line: the keyword by itself.</p>
+<dt>re_len<dd>Configure the record length for a Queue database or a fixed-length Recno
+database.
+<p>There must be two tokens on the line: the keyword, and the length of
+a record, in bytes.</p>
+<dt>secondary_offset<dd>Configure a secondary callback routine based on a byte string found in
+the primary database's data item.
+<p>There must be three tokens on the line: the keyword, the byte offset
+from the beginning of the primary data item where the secondary key
+occurs, and the length of the secondary key in bytes.</p>
+<dt>transaction<dd>Configure the database (and, by extension, the database environment),
+to be transactional.
+<p>There must be one token on the line: the keyword by itself.</p>
+<dt>type<dd>Configure the database type.
+<p>There must be two tokens on the line: the keyword, and the type, where
+the type is one of "btree", "hash", "queue" or "recno".</p>
+<dt>}<dd>End the database environment block.
+<p>There must be one token on the line: the keyword by itself.</p>
+</dl>
+</tt>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
+</body>
+</html>
diff --git a/db/docs/utility/db_deadlock.html b/db/docs/utility/db_deadlock.html
index ab8b9d2d0..4481b1cf3 100644
--- a/db/docs/utility/db_deadlock.html
+++ b/db/docs/utility/db_deadlock.html
@@ -1,6 +1,5 @@
-<!--$Id: db_deadlock.so,v 10.31 2004/03/17 15:18:18 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: db_deadlock.so,v 10.32 2006/10/05 01:06:08 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -82,6 +81,6 @@ DB_HOME is set, it is used as the path of the database home, as described
in <a href="../api_c/env_open.html">DB_ENV-&gt;open</a>.
</dl>
</tt>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/utility/db_dump.html b/db/docs/utility/db_dump.html
index c36ecf2f2..ae49fc6df 100644
--- a/db/docs/utility/db_dump.html
+++ b/db/docs/utility/db_dump.html
@@ -1,6 +1,5 @@
-<!--$Id: db_dump.so,v 10.33 2003/09/25 15:28:17 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: db_dump.so,v 10.34 2006/10/05 01:06:08 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -116,6 +115,6 @@ DB_HOME is set, it is used as the path of the database home, as described
in <a href="../api_c/env_open.html">DB_ENV-&gt;open</a>.
</dl>
</tt>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/utility/db_hotbackup.html b/db/docs/utility/db_hotbackup.html
index 0107b6101..f3c42e193 100644
--- a/db/docs/utility/db_hotbackup.html
+++ b/db/docs/utility/db_hotbackup.html
@@ -1,6 +1,5 @@
-<!--$Id: db_hotbackup.so,v 1.6 2006/03/08 17:34:24 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: db_hotbackup.so,v 1.10 2007/04/13 15:45:27 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -32,9 +31,9 @@ option was specified, all log files in the target directory are removed;
if the <b>-u</b> option was not specified, all files in the target
directory are removed.</p>
<p><li>If the <b>-u</b> option was not specified, copy application-specific
-files found in the database environment home directory, or any directory
-specified using the <b>-d</b> option, into the target directory for
-the backup.
+files found in the database environment home directory, and any
+directories specified using the <b>-d</b> option, into the target
+directory for the backup.
<p><li>Copy all log files found in the directory specified by the <b>-l</b>
option (or in the database environment home directory, if no <b>-l</b>
option was specified), into the target directory for the backup.
@@ -52,39 +51,37 @@ failing over to the backup.</p>
<dt><b>-b</b><dd>Specify the target directory for the backup.
<dt><b>-c</b><dd>Before performing the backup, checkpoint the source database environment
and remove any log files that are no longer required in that environment.
-<b>To avoid making catastrophic failure impossible, log file removal
-must be integrated with log file archival.</b>
-<dt><b>-D</b><dd>Use the data directories listed in the <a href="../ref/env/db_config.html#DB_CONFIG">DB_CONFIG</a> configuration
-file in the source directory. This option has three effects:
-<ol>
-<p><li>First, if they do not already exist, the specified data directories will
-be created relative to the target directory (with mode read-write-execute
-owner).
-<p><li>Second, all files in the source data directories will be copied to the
-target data directories. If the <a href="../ref/env/db_config.html#DB_CONFIG">DB_CONFIG</a> file specifies one
-or more absolute pathnames, files in those source directories will be
-copied to the top-level target directory.
-<p><li>Third, the <a href="../ref/env/db_config.html#DB_CONFIG">DB_CONFIG</a> configuration file will be copied from the
-source directory to the target directory, and subsequently used for
-configuration if recovery is run in the target directory.
-</ol>
-<p>Care should be taken with the <b>-D</b> option and data directories
-which are named relative to the source directory but are not
+<b>To avoid making catastrophic recovery impossible, log file
+removal must be integrated with log file archival.</b>
+<dt><b>-D</b><dd>Use the data and log directories listed in a <a href="../ref/env/db_config.html#DB_CONFIG">DB_CONFIG</a> configuration
+file in the source directory. This option has four effects:
+<p><ul type=disc>
+<li>The specified data and log directories will be created relative to the
+target directory, with mode read-write-execute owner, if they do not
+already exist.
+<li>In step #3 above, all files in any source data directories specified in
+the <a href="../ref/env/db_config.html#DB_CONFIG">DB_CONFIG</a> file will be copied to the target data directories.
+<li>In step #4 above, log files will be copied from any log directory specified
+in the <a href="../ref/env/db_config.html#DB_CONFIG">DB_CONFIG</a> file, instead of from the default locations.
+<li>The <a href="../ref/env/db_config.html#DB_CONFIG">DB_CONFIG</a> configuration file will be copied from the source
+directory to the target directory, and subsequently used for configuration
+if recovery is run in the target directory.
+</ul>
+<p>Care should be taken with the <b>-D</b> option where data and log
+directories are named relative to the source directory but are not
subdirectories (that is, the name includes the element "..")
Specifically, the constructed target directory names must be meaningful
and distinct from the source directory names, otherwise running recovery
in the target directory might corrupt the source data files.</p>
-<p><b>It is an error to use absolute pathnames for data directories
-or the log directory in this mode, as the <a href="../ref/env/db_config.html#DB_CONFIG">DB_CONFIG</a>
-configuration file copied into the target directory would then point at
-the source directories and running recovery would corrupt the source
-data files.</b></p>
-<dt><b>-d</b><dd>Specify one or more source directories that contain database files; if
-no source directories are specified, the source directory will be
-searched for database files.
-<b>As all database files are copied into a single backup directory, files
+<p><b>It is an error to use absolute pathnames for data or log directories in
+this mode, as the <a href="../ref/env/db_config.html#DB_CONFIG">DB_CONFIG</a> configuration file copied into the
+target directory would then point at the source directories and running
+recovery would corrupt the source data files.</b></p>
+<dt><b>-d</b><dd>Specify one or more directories that contain data files to be copied to
+the target directory.
+<p><b>As all database files are copied into a single target directory, files
named the same, stored in different source directories, would overwrite
-each other when copied into the backup directory.</b>
+each other when copied to the target directory.</b></p>
<p>Please note the database environment recovery log references database
files as they are named by the application program. <b>If the
application uses absolute or relative pathnames to name database files,
@@ -93,7 +90,7 @@ application uses absolute or relative pathnames to name database files,
recovery in the target directory may not properly find the copies of
the files or might even find the source files, potentially resulting in
corruption.</b></p>
-<dt><b>-h</b><dd>Specify the source directory for the backup, that is, the database
+<dt><b>-h</b><dd>Specify the target directory for the backup, that is, the database
environment home directory.
<dt><b>-l</b><dd>Specify a source directory that contains log files; if none is specified,
the database environment home directory will be searched for log files.
@@ -124,6 +121,6 @@ DB_HOME is set, it is used as the path of the database home, as described
in <a href="../api_c/env_open.html">DB_ENV-&gt;open</a>.
</dl>
</tt>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/utility/db_load.html b/db/docs/utility/db_load.html
index a0691f14d..77cec9f56 100644
--- a/db/docs/utility/db_load.html
+++ b/db/docs/utility/db_load.html
@@ -1,6 +1,5 @@
-<!--$Id: db_load.so,v 10.42 2004/03/24 20:12:08 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: db_load.so,v 10.43 2006/10/05 01:06:08 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -157,6 +156,6 @@ to use extents.
<dt>subdatabase (string)<dd>The subdatabase to load.
</dl>
</tt>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/utility/db_printlog.html b/db/docs/utility/db_printlog.html
index 015b79791..1e3ef2e73 100644
--- a/db/docs/utility/db_printlog.html
+++ b/db/docs/utility/db_printlog.html
@@ -1,6 +1,5 @@
-<!--$Id: db_printlog.so,v 10.15 2003/12/10 20:25:45 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: db_printlog.so,v 10.16 2006/10/05 01:06:08 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -62,6 +61,6 @@ DB_HOME is set, it is used as the path of the database home, as described
in <a href="../api_c/env_open.html">DB_ENV-&gt;open</a>.
</dl>
</tt>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/utility/db_recover.html b/db/docs/utility/db_recover.html
index f744a3195..7a7dc7e32 100644
--- a/db/docs/utility/db_recover.html
+++ b/db/docs/utility/db_recover.html
@@ -1,6 +1,5 @@
-<!--$Id: db_recover.so,v 10.28 2005/11/01 20:22:28 alanb Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: db_recover.so,v 10.30 2006/10/12 22:09:38 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -16,7 +15,7 @@
</tr></table>
<hr size=1 noshade>
<tt>
-<h3><pre>db_recover [<b>-ceVv</b>] [<b>-h home</b>] [<b>-P password</b>] [<b>-t [[CC]YY]MMDDhhmm[.SS]]</b>]</pre></h3>
+<h3><pre>db_recover [<b>-cefVv</b>] [<b>-h home</b>] [<b>-P password</b>] [<b>-t [[CC]YY]MMDDhhmm[.SS]]</b>]</pre></h3>
<h3>Description</h3>
<a name="2"><!--meow--></a>
<p>The db_recover utility must be run after an unexpected application,
@@ -30,6 +29,8 @@ has run, and all uncommitted transactions will be completely undone.</p>
will rarely be used unless a DB_CONFIG file is present in the home
directory. If a DB_CONFIG file is not present, then the regions will be
created with default parameter values.
+<dt><b>-f</b><dd>Display a message on the standard output showing the
+percent of recovery completed.
<dt><b>-h</b><dd>Specify a home directory for the database environment; by
default, the current working directory is used.
<dt><b>-P</b><dd>Specify an environment password. Although Berkeley DB utilities overwrite
@@ -87,6 +88,6 @@ DB_HOME is set, it is used as the path of the database home, as described
in <a href="../api_c/env_open.html">DB_ENV-&gt;open</a>.
</dl>
</tt>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/utility/db_stat.html b/db/docs/utility/db_stat.html
index 7fe540824..99023cb9a 100644
--- a/db/docs/utility/db_stat.html
+++ b/db/docs/utility/db_stat.html
@@ -1,6 +1,5 @@
-<!--$Id: db_stat.so,v 10.46 2006/08/04 11:56:09 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: db_stat.so,v 10.47 2006/10/05 01:06:08 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -95,6 +94,6 @@ DB_HOME is set, it is used as the path of the database home, as described
in <a href="../api_c/env_open.html">DB_ENV-&gt;open</a>.
</dl>
</tt>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/utility/db_upgrade.html b/db/docs/utility/db_upgrade.html
index 569603351..1854a27f8 100644
--- a/db/docs/utility/db_upgrade.html
+++ b/db/docs/utility/db_upgrade.html
@@ -1,6 +1,5 @@
-<!--$Id: db_upgrade.so,v 1.9 2004/12/01 13:55:41 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: db_upgrade.so,v 1.10 2006/10/05 01:06:08 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -80,6 +79,6 @@ DB_HOME is set, it is used as the path of the database home, as described
in <a href="../api_c/env_open.html">DB_ENV-&gt;open</a>.
</dl>
</tt>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/utility/db_verify.html b/db/docs/utility/db_verify.html
index 2947f7a3e..faf764b99 100644
--- a/db/docs/utility/db_verify.html
+++ b/db/docs/utility/db_verify.html
@@ -1,6 +1,5 @@
-<!--$Id: db_verify.so,v 10.10 2003/10/24 22:27:57 bostic Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: db_verify.so,v 10.11 2006/10/05 01:06:08 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -68,6 +67,6 @@ DB_HOME is set, it is used as the path of the database home, as described
in <a href="../api_c/env_open.html">DB_ENV-&gt;open</a>.
</dl>
</tt>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs/utility/index.html b/db/docs/utility/index.html
index c36e977a2..110205660 100644
--- a/db/docs/utility/index.html
+++ b/db/docs/utility/index.html
@@ -1,6 +1,5 @@
-<!--$Id: index.so,v 10.18 2005/03/24 18:15:35 gmf Exp $-->
-<!--Copyright 1997-2006 by Oracle Corporation-->
-<!--All rights reserved.-->
+<!--$Id: index.so,v 10.19 2007/05/04 14:13:45 bostic Exp $-->
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
<!--See the file LICENSE for redistribution information.-->
<html>
<head>
@@ -15,6 +14,7 @@
<tr><td><a href="../utility/berkeley_db_svc.html">berkeley_db_svc</a></td><td>RPC server utility</td></tr>
<tr><td><a href="../utility/db_archive.html">db_archive</a></td><td>Archival utility</td></tr>
<tr><td><a href="../utility/db_checkpoint.html">db_checkpoint</a></td><td>Transaction checkpoint utility</td></tr>
+<tr><td><a href="../utility/db_codegen.html">db_codegen</a></td><td>Code generation utility</td></tr>
<tr><td><a href="../utility/db_deadlock.html">db_deadlock</a></td><td>Deadlock detection utility</td></tr>
<tr><td><a href="../utility/db_dump.html">db_dump</a></td><td>Database dump utility</td></tr>
<tr><td><a href="../utility/db_hotbackup.html">db_hotbackup</a></td><td>Hot backup utility</td></tr>
@@ -25,6 +25,6 @@
<tr><td><a href="../utility/db_upgrade.html">db_upgrade</a></td><td>Database upgrade utility</td></tr>
<tr><td><a href="../utility/db_verify.html">db_verify</a></td><td>Verification utility</td></tr>
</table>
-<p><font size=1>Copyright (c) 1996-2006 Oracle Corporation - All rights reserved.</font>
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>
</body>
</html>
diff --git a/db/docs_src/api/frame.so b/db/docs_src/api/frame.so
new file mode 100644
index 000000000..59b9d40c6
--- /dev/null
+++ b/db/docs_src/api/frame.so
@@ -0,0 +1,20 @@
+<!--$Id: frame.so,v 10.9 2006/10/05 01:06:03 bostic Exp $-->
+<html>
+<head>
+<title>
+m4_db API (Version: M4MAJOR.M4MINOR.M4PATCH)
+</title>
+m4_meta
+</head>
+
+<frameset cols="20%,80%">
+<frame src="object.html" name="object" title="Objects">
+<frame
+name="method"
+src="api_core.html"
+title="m4_db API (Version: M4MAJOR.M4MINOR.M4PATCH)">
+<noframes>
+<meta http-equiv="refresh" content="0;url=api_index.html">
+</noframes>
+</frameset>
+</html>
diff --git a/db/docs_src/api/object.so b/db/docs_src/api/object.so
new file mode 100644
index 000000000..1c969f709
--- /dev/null
+++ b/db/docs_src/api/object.so
@@ -0,0 +1,38 @@
+<!--$Id: object.so,v 10.19 2006/10/05 01:06:03 bostic Exp $-->
+<html>
+<head>
+<title>m4_db API</title>
+m4_meta
+</head>
+<body bgcolor=white>
+
+<a target="_top" href="../index.html">Home</a><br>
+<a target="method"
+ifelse(M4API, C_API,
+href="../api_c/c_pindex.html", href="../api_cxx/cxx_pindex.html")
+>Permuted Index</a><br>
+<a target="method" href="../utility/index.html">Utilities</a><br>
+<p>
+<b>m4_db</b><br>
+<a target="method" href="api_core.html">All Methods</a><br>
+<a target="method" href="../ref/toc.html">Reference Guide</a><br>
+<p>
+<a target="method" href="dbc_list.html">Cursors</a><br>
+<a target="method" href="db_list.html">Databases</a><br>
+<a target="method" href="env_list.html">Environments</a><br>
+ifelse(M4API, C_API,, [<a target="method" href="exc_package.html">Exceptions</a><br>])
+<a target="method" href="dbt_package.html">Key/Data Pairs</a><br>
+<a target="method" href="lock_list.html">Locking</a><br>
+<a target="method" href="log_list.html">Logging</a><br>
+<a target="method" href="memp_list.html">Memory Pool</a><br>
+<a target="method" href="mutex_list.html">Mutexes</a><br>
+<a target="method" href="rep_list.html">Replication</a><br>
+<a target="method" href="seq_list.html">Sequences</a><br>
+<a target="method" href="txn_list.html">Transactions</a><br>
+<p>
+<b>Historic APIs</b><br>
+<a target="method" href="../api_c/dbm.html">Dbm/Ndbm</a><br>
+<a target="method" href="../api_c/hsearch.html">Hsearch</a><br>
+
+</body>
+</html>
diff --git a/db/docs_src/build b/db/docs_src/build
new file mode 100644
index 000000000..7589f76d2
--- /dev/null
+++ b/db/docs_src/build
@@ -0,0 +1,194 @@
+#!/bin/sh
+#
+# Script to build the web-version of the Berkeley DB documentation.
+#
+# $Id: build,v 1.103 2007/07/06 16:44:46 bostic Exp $
+
+# The build script must be run from the document source directory.
+MSG="build: build script must be run from the document source directory."
+egrep "^MSG=\"$MSG\"" build > /dev/null 2>&1 || {
+ echo "$MSG"
+ exit 1
+}
+
+# Save the absolute path of the Berkeley DB document source directory.
+DOCS_SRC=`pwd`
+export DOCS_SRC
+
+# Save the absolute path of the Berkeley DB source directory.
+BDB_SRC=`dirname $DOCS_SRC`
+export BDB_SRC
+
+# Save the absolute path of the target Berkeley DB documents directory.
+TARGET=$BDB_SRC/docs
+export TARGET
+
+# splash:
+# splash page.
+splash()
+{
+ rm -f $TARGET/index.html
+ sed -e "s/DB_RELEASE_DATE/$DB_RELEASE_DATE/" \
+ -e "s/DB_VERSION_MAJOR/$DB_VERSION_MAJOR/" \
+ -e "s/DB_VERSION_MINOR/$DB_VERSION_MINOR/" \
+ -e "s/DB_VERSION_PATCH/$DB_VERSION_PATCH/" \
+ < index_db.html > $TARGET/index.html
+}
+
+# api_index:
+# Build a sorted list of all methods.
+api_index()
+{
+ t=/tmp/__build.$$
+ cat <<END_OF_HEADER > $t
+m4_comment([DO NOT EDIT: automatically built by build script.])
+m4_page_title([m4_db: ifelse(M4API, C_API, C, C++) Handle Methods (version M4MAJOR.M4MINOR.M4PATCH)])
+m4_table_begin(, _center)
+m4_table_header(ifelse(M4API, C_API, C, C++) Handle Methods, Description)
+END_OF_HEADER
+
+ d="db dbc env lock log memp mutex rep seq txn"
+ for i in $d; do
+ egrep m4_table_element $i/m4.methods
+ done | sort -u >> $t
+ cat <<END_OF_FOOTER >> $t
+m4_table_end
+m4_page_footer
+END_OF_FOOTER
+ f=env/api_core.so
+ cmp $t $f > /dev/null 2>&1 || (echo "Building $f" && cp $t $f)
+}
+
+# reftoc:
+# Berkeley DB Reference Guide table of contents.
+reftoc()
+{
+ rm -f $TARGET/ref/toc.html
+ sed -e "s/__EDIT_PRODUCT/Berkeley DB/" \
+ -e "s/__EDIT_VERSION_MAJOR/$DB_VERSION_MAJOR/" \
+ -e "s/__EDIT_VERSION_MINOR/$DB_VERSION_MINOR/" \
+ -e "s/__EDIT_VERSION_PATCH/$DB_VERSION_PATCH/" \
+ -e "s/__EDIT_RELEASE_DATE/$DB_RELEASE_DATE/" \
+ < ref/toc.html > $TARGET/ref/toc.html
+}
+
+# build:
+# Build the Berkeley DB documents.
+#
+# $1: Directory to build.
+# $2: API
+# $3: Depth in tree
+# $4: Source Directory
+build()
+{
+ f=$TARGET/$1
+ [ -d $f ] || mkdir -p $f
+
+ # Copy documents.
+ # Check for COPY in the Makefile first, some make programs have their
+ # own values for the "COPY" variable if it's not already set.
+ if egrep COPY $4/Makefile > /dev/null 2>&1; then
+ (cat $4/Makefile &&
+ echo &&
+ cat $DOCS_SRC/support/copy) > $f/Makefile
+ (cd $f && make BUILDDIR=$1 copy || exit 1)
+ fi
+
+ # Build documents.
+ (cat $DOCS_SRC/support/suffix &&
+ echo &&
+ echo "VPATH=\$(DOCS_SRC)/$4" &&
+ echo &&
+ cat $4/Makefile &&
+ case $2 in
+ C_API)
+ echo 'all: $(COMMON) $(C)';;
+ CXX_API)
+ echo 'all: $(COMMON) $(CXX)';;
+ NOAPI|UTILITY)
+ echo 'all: $(BUILD)';;
+ esac) > $f/Makefile
+ (cd $f &&
+ make ABSDIR=`pwd` \
+ API=$2 \
+ BUILDDIR=$1 \
+ RELDIR=$3 || exit 1)
+
+ rm -f $f/Makefile
+}
+
+# run
+# Run any single command.
+run()
+{
+ case "$1" in
+ c)
+ for i in $APILIST; do
+ build api_c C_API .. $i
+ done;;
+ check)
+ shift
+ sh $DOCS_SRC/support/check $TARGET $*;;
+ clean)
+ (cd $TARGET && rm -rf api_c api_cxx \
+ api_tcl images index.html java license ref utility);;
+ cxx)
+ for i in $APILIST; do
+ build api_cxx CXX_API .. $i
+ done;;
+ index)
+ sh $DOCS_SRC/support/Xindex;;
+ ref)
+ [ -d $TARGET/ref ] || mkdir $TARGET/ref
+ reftoc
+ for i in $REFLIST; do
+ build ref/$i C_API ../.. ref/$i
+ done;;
+ tcl)
+ build api_tcl TCL_API .. tcl;;
+ util*)
+ build utility UTILITY .. utility;;
+ *)
+ echo "build: unknown command $1"
+ exit 1;;
+ esac
+}
+
+# Source the RELEASE file to get major/minor numbers.
+. $BDB_SRC/dist/RELEASE
+
+PRODUCT="CORE"
+export DB_RELEASE_DATE
+export DB_VERSION_MAJOR
+export DB_VERSION_MINOR
+export DB_VERSION_PATCH
+version="$DB_VERSION_MAJOR.$DB_VERSION_MINOR.$DB_VERSION_PATCH"
+
+APILIST="api db db_except dbc dbt env exc historic lock log memp mutex
+rep rtc seq txn"
+REFLIST="am am_conf am_misc apprec arch build_brew build_s60 build_unix
+build_vxworks build_win build_wince cam changelog debug distrib dumpload
+env ext install intro java lock log mp program refs rep rpc sequence tcl
+test transapp txn upgrade upgrade.2.0 upgrade.3.0 upgrade.3.1
+upgrade.3.2 upgrade.3.3 upgrade.4.0 upgrade.4.1 upgrade.4.2 upgrade.4.3
+upgrade.4.4 upgrade.4.5 upgrade.4.6 xa"
+
+if [ $# = 0 ]; then
+ echo "Building Berkeley DB documentation ..."
+
+ [ -d $TARGET ] || mkdir $TARGET
+
+ splash
+ api_index
+
+ build images NOAPI .. images
+ build license NOAPI .. license
+ run c
+ run cxx
+ run ref
+ run tcl
+ run utility
+ run index
+else
+ run $*
+fi
diff --git a/db/docs_src/db/db_associate.so b/db/docs_src/db/db_associate.so
new file mode 100644
index 000000000..dd58ea83d
--- /dev/null
+++ b/db/docs_src/db/db_associate.so
@@ -0,0 +1,185 @@
+m4_comment([$Id: db_associate.so,v 10.46 2007/03/19 19:45:47 bostic Exp $])
+
+define(M4PAGELOCAL,
+ [dbh_associate, DB_DBT_APPMALLOC, DB_DBT_MULTIPLE, DB_DONOTINDEX,
+ DB_IMMUTABLE_KEY])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbh_associate),
+ifelse(M4API, C_API, [dnl
+int
+DB-__GT__associate(DB *primary, DB_TXN *txnid, DB *secondary,
+ int (*callback)(DB *secondary,
+ const DBT *key, const DBT *data, DBT *result), u_int32_t flags);])
+ifelse(M4API, CXX_API, [dnl
+int
+Db::associate(DbTxn *txnid, Db *secondary,
+ int (*callback)(Db *secondary,
+ const Dbt *key, const Dbt *data, Dbt *result), u_int32_t flags);])
+)
+
+m4_p([dnl
+The m4_ref(dbh_associate) function is used to declare one database a
+secondary index for a primary database. After a secondary database has
+been "associated" with a primary database, all updates to the primary
+will be automatically reflected in the secondary and all reads from the
+secondary will return corresponding data from the primary. Note that
+as primary keys must be unique for secondary indices to work, the
+primary database must be configured without support for duplicate data
+items. See m4_link(M4RELDIR/ref/am/second, [Secondary indices]) for
+more information.])
+
+m4_return(dbh_associate, std)
+
+m4_parambegin
+m4_param(callback, [dnl
+The m4_arg(callback) parameter is a callback function that creates the
+set of secondary keys corresponding to a given primary key and data
+pair.
+m4_p([dnl
+The callback parameter may be NULL if both the primary and secondary
+database handles were opened with the m4_ref(DB_RDONLY) flag.])
+
+m4_p([dnl
+The callback takes four arguments:])
+m4_tagbegin
+m4_tag(m4_arg(secondary), [dnl
+The m4_arg(secondary) parameter is the database handle for the secondary.])
+m4_tag(m4_arg(key), [dnl
+The m4_arg(key) parameter is a m4_ref(Dbt) referencing the primary key.])
+m4_tag(m4_arg(data), [dnl
+The m4_arg(data) parameter is a m4_ref(Dbt) referencing the primary data
+item.])
+m4_tag(m4_arg(result), [dnl
+The m4_arg(result) parameter is a zeroed m4_ref(Dbt) in which the callback
+function should fill in m4_arg(data) and m4_arg(size) fields that describe
+the secondary key or keys.])
+m4_tagend
+
+m4_p([dnl
+The callback optionally returns some special values:])
+m4_tagbegin
+m4_tag(m4_idef(DB_DBT_APPMALLOC), [dnl
+If the callback function needs to allocate memory for the m4_arg(result)
+data field (rather than simply pointing into the primary key or datum),
+m4_ref(DB_DBT_APPMALLOC) should be set in the m4_arg(flags) field of the
+m4_arg(result) m4_ref(Dbt), which indicates that m4_db should free the
+memory when it is done with it.])
+
+m4_tag(m4_idef(DB_DBT_MULTIPLE), [dnl
+To return multiple secondary keys, m4_ref(DB_DBT_MULTIPLE) should be set
+in the m4_arg(flags) field of the m4_arg(result) m4_ref(Dbt), which
+indicates m4_db should treat the m4_arg(size) field as the number of
+secondary keys (zero or more), and the m4_arg(data) field as a pointer
+to an array of that number of m4_ref(Dbt)s describing the set of
+secondary keys.
+m4_p([dnl
+m4_bold([When multiple secondary keys are returned, keys may not be repeated]).
+In other words, there must be no repeated record numbers in the array
+for Recno and Queue databases, and keys must not compare equally using
+the secondary database's comparison function for Btree and Hash
+databases. If keys are repeated, operations may fail and the secondary
+may become inconsistent with the primary.])
+m4_p([dnl
+The m4_ref(DB_DBT_APPMALLOC) flag may be set for any m4_ref(Dbt) in the
+array of returned m4_ref(Dbt)'s to indicate that m4_db should free the
+memory referenced by that particular m4_ref(Dbt)'s data field when it
+is done with it.])
+m4_p([dnl
+The m4_ref(DB_DBT_APPMALLOC) flag may be combined with
+m4_ref(DB_DBT_MULTIPLE) in the m4_arg(result) m4_ref(Dbt)'s m4_arg(flag)
+field to indicate that m4_db should free the array once it is done with
+all of the returned keys.])])
+
+m4_tag(m4_idef(DB_DONOTINDEX), [dnl
+If any key/data pair in the primary yields a null secondary key and
+should be left out of the secondary index, the callback function may
+optionally return m4_ref(DB_DONOTINDEX). Otherwise, the callback
+function should return 0 in case of success or an error outside of the
+m4_db name space in case of failure; the error code will be returned
+from the m4_db call that initiated the callback.
+m4_p([dnl
+If the callback function returns m4_ref(DB_DONOTINDEX) for any key/data
+pairs in the primary database, the secondary index will not contain any
+reference to those key/data pairs, and such operations as cursor
+iterations and range queries will reflect only the corresponding subset
+of the database. If this is not desirable, the application should
+ensure that the callback function is well-defined for all possible
+values and never returns m4_ref(DB_DONOTINDEX).])
+m4_p([dnl
+Returning m4_ref(DB_DONOTINDEX) is equivalent to setting
+m4_ref(DB_DBT_MULTIPLE) on the m4_arg(result) m4_ref(Dbt) and setting
+the m4_arg(size) field to zero.])])
+m4_tagend
+
+m4_not_reentrant])
+
+m4_param(flags, [dnl
+m4_sf_or_may
+m4_tagbegin
+m4_tag(m4_idef(DB_CREATE), [dnl
+If the secondary database is empty, walk through the primary and create
+an index to it in the empty secondary. This operation is potentially
+very expensive.
+m4_p([dnl
+If the secondary database has been opened in an environment configured
+with transactions, each put necessary for its creation will be done in
+the context of a transaction created for the purpose.])
+m4_p([dnl
+Care should be taken not to use a newly-populated secondary database in
+another thread of control until the m4_ref(dbh_associate) call has
+returned successfully in the first thread.])
+m4_p([dnl
+If transactions are not being used, care should be taken not to modify
+a primary database being used to populate a secondary database, in
+another thread of control, until the m4_ref(dbh_associate) call has
+returned successfully in the first thread. If transactions are being
+used, m4_db will perform appropriate locking and the application need
+not do any special operation ordering.])])
+
+m4_tag(m4_idef(DB_IMMUTABLE_KEY), [dnl
+Specifies the secondary key is immutable.
+m4_p([dnl
+This flag can be used to optimize updates when the secondary key in a
+primary record will never be changed after the primary record is
+inserted. For immutable secondary keys, a best effort is made to avoid
+calling the secondary callback function when primary records are
+updated. This optimization may reduce the overhead of update operations
+significantly if the callback function is expensive.])
+m4_p([dnl
+Be sure to specify this flag only if the secondary key in the primary
+record is never changed. If this rule is violated, the secondary index
+will become corrupted, that is, it will become out of sync with the
+primary.])])
+m4_tagend])
+
+m4_param(primary, [dnl
+ifelse(M4API, C_API, [dnl
+The m4_arg(primary) parameter should be a database handle for the primary
+database that is to be indexed.],[dnl
+The associate method called should be a method of a database handle for
+the primary database that is to be indexed.])])
+
+m4_param(secondary, [dnl
+The m4_arg(secondary) parameter should be an open database handle of
+either a newly created and empty database that is to be used to store
+a secondary index, or of a database that was previously associated with
+the same primary and contains a secondary index. Note that it is not
+safe to associate as a secondary database a handle that is in use by
+another thread of control or has open cursors. If the handle was opened
+with the m4_ref(DB_THREAD) flag it is safe to use it in multiple threads
+of control after the m4_refT(dbh_associate) has returned. Note also
+that either secondary keys must be unique or the secondary database must
+be configured with support for duplicate data items.])
+
+m4_param_txn(dbh_associate)
+
+m4_paramend
+
+m4_err(dbh_associate, repinval, einval,
+[the secondary database handle has already been associated with this or
+another database handle; the secondary database handle is not open; the
+primary database has been configured to allow duplicates])
+
+m4_seealso(Db)
+m4_page_footer
diff --git a/db/docs_src/db/db_class.so b/db/docs_src/db/db_class.so
new file mode 100644
index 000000000..5b1accb97
--- /dev/null
+++ b/db/docs_src/db/db_class.so
@@ -0,0 +1,158 @@
+m4_comment([$Id: db_class.so,v 10.52 2005/12/01 02:02:58 bostic Exp $])
+
+define(M4PAGELOCAL, [dbh_create, Db, DB_CXX_NO_EXCEPTIONS])
+include(m4/m4.seealso)
+
+ifelse(M4API, C_API, [dnl
+m4_pf_header(m4_ref(dbh_create), [dnl
+typedef struct __db DB;
+m4_blank
+int
+db_create(DB **dbp, DB_ENV *dbenv, u_int32_t flags);
+])])
+ifelse(M4API, CXX_API, [dnl
+m4_pf_header(m4_ref(Db), [dnl
+class Db {
+public:
+ Db(DbEnv *dbenv, u_int32_t flags);
+ ~Db();
+m4_blank
+ DB *Db::get_DB();
+ const DB *Db::get_const_DB() const;
+ static Db *Db::get_Db(DB *db);
+ static const Db *Db::get_const_Db(const DB *db);
+ ...
+};])])
+
+m4_p([dnl
+The m4_ref(Db) handle is the handle for a m4_db database, which may or
+may not be part of a database environment.])
+
+m4_p([dnl
+m4_ref(Db) handles are free-threaded if the m4_ref(DB_THREAD) flag is
+specified to the m4_refT(dbh_open) when the database is opened or if the
+database environment in which the database is opened is free-threaded.
+The handle should not be closed while any other handle that refers to
+the database is in use; for example, database handles must not be closed
+while cursor handles into the database remain open, or transactions that
+include operations on the database have not yet been committed or
+aborted. Once the m4_ref(dbh_close), m4_ref(dbh_remove),
+m4_ref(dbh_rename), or m4_refT(dbh_verify)s are called, the handle may
+not be accessed again, regardless of the method's return.])
+
+ifelse(M4API, C_API, [dnl
+m4_p([dnl
+The m4_ref(dbh_create) function creates a m4_ref(Db) structure that is
+the handle for a m4_db database. This function allocates memory for the
+structure, returning a pointer to the structure in the memory to which
+m4_arg(dbp) refers. To release the allocated memory and discard the
+handle, call the m4_ref(dbh_close), m4_ref(dbh_remove),
+m4_ref(dbh_rename), or m4_refT(dbh_verify)s.])
+
+m4_p([dnl
+The m4_ref(Db) handle contains a special field, "app_private", which is
+declared as type "void *". This field is provided for the use of the
+application program. It is initialized to NULL and is not further used
+by m4_db in any way.])
+
+m4_return(dbh_create, std)
+
+m4_parambegin
+
+m4_param(dbp, [dnl
+The m4_arg(dbp) parameter references the memory into which the returned
+structure pointer is stored.])
+
+m4_param(dbenv, [dnl
+If the m4_arg(dbenv) parameter is NULL, the database is standalone; that
+is, it is not part of any m4_db environment.
+m4_p([dnl
+If the m4_arg(dbenv) parameter is not NULL, the database is created
+within the specified m4_db environment. The database access methods
+automatically make calls to the other subsystems in m4_db, based on the
+enclosing environment. For example, if the environment has been
+configured to use locking, the access methods will automatically acquire
+the correct locks when reading and writing pages of the database.])])
+
+m4_param(flags, [dnl
+m4_sf_zmust(0)
+
+m4_tagbegin
+m4_tag(m4_idef(DB_XA_CREATE), [dnl
+Instead of creating a standalone database, create a database intended
+to be accessed via applications running under an X/Open conformant
+Transaction Manager. The database will be opened in the environment
+specified by the OPENINFO parameter of the GROUPS section of the
+ubbconfig file. See the m4_link(M4RELDIR/ref/xa/xa_intro, [XA
+Introduction]) section in the m4_db Reference Guide for more information.])
+m4_tagend])
+
+m4_paramend
+m4_err(dbh_create, einval)],[dnl
+m4_p([dnl
+The constructor creates a m4_ref(Db) object that is the handle for a
+m4_db database. The constructor allocates memory internally; calling
+the m4_ref(dbh_close), m4_ref(dbh_remove) or m4_refT(dbh_rename)s will
+free that memory.])
+
+ifelse(M4API, CXX_API, [dnl
+m4_p([dnl
+Each m4_ref(Db) object has an associated m4_refc(Db) struct, which is
+used by the underlying implementation of m4_db and its C-language API.
+The Db::get_DB method returns a pointer to this struct. Given a const
+m4_ref(Db) object, Db::get_const_DB returns a const pointer to the
+same struct.])
+
+m4_p([dnl
+Given a m4_refc(Db) struct, the Db::get_Db method returns the
+corresponding m4_ref(Db) object, if there is one. If the m4_refc(Db)
+object was not associated with a m4_ref(Db) (that is, it was not
+returned from a call to Db::get_DB), then the result of Db::get_Db is
+undefined. Given a const m4_refc(Db) struct, Db::get_const_Db returns
+the associated const m4_ref(Db) object, if there is one.])
+
+m4_p([dnl
+These methods may be useful for m4_db applications including both C
+and C++ language software. It should not be necessary to use these
+calls in a purely C++ application.])])
+
+m4_parambegin
+m4_param(dbenv, [dnl
+If no m4_arg(dbenv) value is specified, the database is standalone; that
+is, it is not part of any m4_db environment.
+m4_p([dnl
+If a m4_arg(dbenv) value is specified, the database is created within
+the specified m4_db environment. The database access methods
+automatically make calls to the other subsystems in m4_db based on the
+enclosing environment. For example, if the environment has been
+configured to use locking, the access methods will automatically acquire
+the correct locks when reading and writing pages of the database.])])
+
+m4_param(flags, [dnl
+m4_sf_or_may
+m4_tagbegin
+ifelse(M4API, CXX_API, [dnl
+m4_tag(m4_idef(DB_CXX_NO_EXCEPTIONS), [dnl
+The m4_db C++ API supports two different error behaviors. By default,
+whenever an error occurs, an exception is thrown that encapsulates the
+error information. This generally allows for cleaner logic for
+transaction processing because a try block can surround a single
+transaction. However, if m4_ref(DB_CXX_NO_EXCEPTIONS) is specified,
+exceptions are not thrown; instead, each individual function returns an
+error code.
+m4_p([dnl
+If m4_arg(dbenv) is not null, this flag is ignored, and the error behavior
+of the specified environment is used instead.])])])
+
+m4_tag(m4_idef(DB_XA_CREATE), [dnl
+Instead of creating a standalone database, create a database intended to
+be accessed via applications running under a X/Open conformant Transaction
+Manager. The database will be opened in the environment specified by the
+OPENINFO parameter of the GROUPS section of the ubbconfig file. See the
+m4_link(M4RELDIR/ref/xa/intro, [XA Resource Manager]) chapter in the
+Reference Guide for more information.])
+m4_tagend])
+m4_paramend])
+
+m4_seealso(Db)
+m4_page_footer
diff --git a/db/docs_src/db/db_close.so b/db/docs_src/db/db_close.so
new file mode 100644
index 000000000..3564c53a3
--- /dev/null
+++ b/db/docs_src/db/db_close.so
@@ -0,0 +1,76 @@
+m4_comment([$Id: db_close.so,v 10.55 2004/08/13 03:38:55 bostic Exp $])
+
+define(M4PAGELOCAL, dbh_close)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbh_close),
+ifelse(M4API, C_API, [dnl
+int
+DB-__GT__close(DB *db, u_int32_t flags);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+Db::close(u_int32_t flags);
+]))
+
+m4_p([dnl
+The m4_refT(dbh_close) flushes any cached database information to disk,
+closes any open cursors, frees any allocated resources, and closes any
+underlying files.])
+
+m4_p([dnl
+The m4_ref(Db) handle should not be closed while any other handle that
+refers to it is not yet closed; for example, database handles must not
+be closed while cursor handles into the database remain open, or
+transactions that include operations on the database have not yet been
+committed or aborted. Specifically, this includes m4_ref(Dbc) and
+m4_ref(DbTxn) handles.])
+
+m4_p([dnl
+Because key/data pairs are cached in memory, failing to sync the file
+with the m4_ref(dbh_close) or m4_refT(dbh_sync) may result in
+inconsistent or lost information.])
+
+m4_p([dnl
+When called on a database that is the primary database for a secondary
+index, the primary database should be closed only after all secondary
+indices which reference it have been closed.])
+
+m4_p([dnl
+When multiple threads are using the m4_ref(Db) concurrently, only a single
+thread may call the m4_refT(dbh_close).])
+
+m4_destructor(Db, dbh_close)
+
+m4_return(dbh_close, std)
+
+m4_parambegin
+m4_param(flags, [dnl
+m4_sf_or_may
+
+m4_tagbegin
+m4_tag(m4_idef(DB_NOSYNC), [dnl
+Do not flush cached information to disk. The m4_ref(DB_NOSYNC) flag is
+a dangerous option. It should be set only if the application is doing
+logging (with transactions) so that the database is recoverable after
+a system or application crash, or if the database is always generated
+from scratch after any system or application crash.
+m4_p([m4_bold([dnl
+It is important to understand that flushing cached information to disk
+only minimizes the window of opportunity for corrupted data.]) Although
+unlikely, it is possible for database corruption to happen if a system
+or application crash occurs while writing data to the database. To
+ensure that database corruption never occurs, applications must either:
+use transactions and logging with automatic recovery; use logging and
+application-specific recovery; or edit a copy of the database, and once
+all applications using the database have successfully called
+m4_ref(dbh_close), atomically replace the original database with the
+updated copy.])])
+
+m4_tagend])
+m4_paramend
+
+m4_err(dbh_close, einval)
+
+m4_seealso(Db)
+m4_page_footer
diff --git a/db/docs_src/db/db_compact.so b/db/docs_src/db/db_compact.so
new file mode 100644
index 000000000..42be1a6bf
--- /dev/null
+++ b/db/docs_src/db/db_compact.so
@@ -0,0 +1,123 @@
+m4_comment([$Id: db_compact.so,v 1.6 2006/09/08 18:36:02 bostic Exp $])
+
+define(M4PAGELOCAL, dbh_compact)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbh_compact),
+ifelse(M4API, C_API, [dnl
+int
+DB-__GT__compact(DB *db, DB_TXN *txnid,
+ DBT *start, DBT *stop, DB_COMPACT *c_data, u_int32_t flags, DBT *end);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+Db::compact(DbTxn *txnid,
+ Dbt *start, Dbt *stop, DB_COMPACT *c_data, u_int32_t flags, Dbt *end);
+]))
+
+m4_p([dnl
+The m4_refT(dbh_compact) compacts Btree and Recno access method
+databases, and optionally returns unused Btree, Hash or Recno database
+pages to the underlying filesystem.])
+
+m4_return(dbh_compact, std)
+
+m4_parambegin
+
+m4_param(txnid, [dnl
+If the operation is part of an application-specified transaction, the
+m4_arg(txnid) parameter is a transaction handle returned from
+m4_ref(txn_begin); otherwise NULL. If no transaction handle is
+specified, but the operation occurs in a transactional database, the
+operation will be implicitly transaction protected using multiple
+transactions. These transactions will be periodically committed to
+avoid locking large sections of the tree. Any deadlocks encountered
+cause the compaction operation to retried from the point of the last
+transaction commit.])
+
+m4_param(start, [dnl
+If non-NULL, the m4_arg(start) parameter is the starting point for
+compaction in a Btree or Recno database. Compaction will start at the
+smallest key greater than or equal to the specified key. If NULL,
+compaction will start at the beginning of the database.])
+
+m4_param(stop, [dnl
+If non-NULL, the m4_arg(stop) parameter is the stopping point for
+compaction in a Btree or Recno database. Compaction will stop at the
+page with the smallest key greater than the specified key. If NULL,
+compaction will stop at the end of the database.])
+
+m4_param(c_data, [m4_p([dnl
+If non-NULL, the m4_arg(c_data) parameter contains additional compaction
+configuration parameters, and returns compaction operation statistics,
+in a structure of type DB_COMPACT.])
+m4_p([dnl
+The following input configuration fields are available from the
+DB_COMPACT structure:])
+m4_tagbegin
+m4_field(int, compact_fillpercent, [dnl
+If non-zero, the goal for filling pages, specified as a percentage
+between 1 and 100. Any page in a Btree or Recno databases not at or
+above this percentage full will be considered for compaction. The
+default behavior is to consider every page for compaction, regardless
+of its page fill percentage.])
+m4_field(int, compact_pages, [dnl
+If non-zero, the call will return after that number of pages have been
+freed.])
+m4_field(db_timeout_t, compact_timeout, [dnl
+If non-zero, and no m4_arg(txnid) parameter was specified, the lock
+timeout set for implicit transactions, in microseconds.])
+m4_tagend
+m4_p([dnl
+The following output statistics fields are available from the
+DB_COMPACT structure:])
+m4_tagbegin
+m4_field(u_int32_t, compact_deadlock, [dnl
+An output statistics parameter: if no m4_arg(txnid) parameter was
+specified, the number of deadlocks which occurred.])
+m4_field(u_int32_t, compact_pages_examine, [dnl
+An output statistics parameter: the number of database pages reviewed
+during the compaction phase.])
+m4_field(u_int32_t, compact_pages_free, [dnl
+An output statistics parameter: the number of database pages freed during
+the compaction phase.])
+m4_field(u_int32_t, compact_levels, [dnl
+An output statistics parameter: the number of levels removed from the
+Btree or Recno database during the compaction phase.])
+m4_field(u_int32_t, compact_pages_truncated, [dnl
+An output statistics parameter: the number of database pages returned
+to the filesystem.])
+m4_tagend])
+
+m4_param(flags, [dnl
+m4_sf_zmust
+m4_tagbegin
+m4_tag(m4_idef(DB_FREELIST_ONLY), [dnl
+Do no page compaction, only returning pages to the filesystem that are
+already free and at the end of the file. This flag must be set if the
+database is a Hash access method database.])
+m4_tag(m4_idef(DB_FREE_SPACE), [dnl
+Return pages to the filesystem when possible.
+If this flag is not specified, pages emptied as a result of compaction
+will be placed on the free list for re-use, but never returned to the
+filesystem.
+m4_p([dnl
+Note that only pages at the end of a file can be returned to the
+filesystem. Because of the one-pass nature of the compaction algorithm,
+any unemptied page near the end of the file inhibits returning pages to
+the file system. A repeated call to the m4_refT(dbh_compact) with a low
+m4_arg(compact_fillpercent) may be used to return pages in this case.])])
+m4_tagend])
+
+m4_param(end, [dnl
+If non-NULL, the m4_arg(end) parameter will be filled in with the
+database key marking the end of the compaction operation in a Btree or
+Recno database. This is generally the first key of the page where the
+operation stopped.])
+
+m4_paramend
+
+m4_err(dbh_compact, deadlock, repinval, readonly, einval,,)
+
+m4_seealso(Db)
+m4_page_footer
diff --git a/db/docs_src/db/db_cursor.so b/db/docs_src/db/db_cursor.so
new file mode 100644
index 000000000..57384eeb0
--- /dev/null
+++ b/db/docs_src/db/db_cursor.so
@@ -0,0 +1,76 @@
+m4_comment([$Id: db_cursor.so,v 10.54 2007/05/31 18:52:36 bostic Exp $])
+
+define(M4PAGELOCAL, dbh_cursor)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbh_cursor),
+ifelse(M4API, C_API, [dnl
+int
+DB-__GT__cursor(DB *db,
+ DB_TXN *txnid, DBC **cursorp, u_int32_t flags);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+Db::cursor(DbTxn *txnid, Dbc **cursorp, u_int32_t flags);
+]))
+
+m4_p([dnl
+The m4_refT(dbh_cursor) returns a created database cursor.])
+
+m4_p([dnl
+Cursors may span threads, but only serially, that is, the application
+must serialize access to the cursor handle.])
+
+m4_return(dbh_cursor, std)
+
+m4_parambegin
+m4_param_co(cursorp, allocated cursor, REF)
+
+m4_param(flags, [dnl
+m4_sf_or_may
+
+m4_tagbegin
+m4_tag(m4_idef(DB_READ_COMMITTED), [dnl
+Configure a transactional cursor to have degree 2 isolation. This ensures
+the stability of the current data item read by this cursor but permits data
+read by this cursor to be modified or deleted prior to the commit of the
+transaction for this cursor.])
+
+m4_tag(m4_idef(DB_READ_UNCOMMITTED), [dnl
+Configure a transactional cursor to have degree 1 isolation. Read
+operations performed by the cursor may return modified but not yet
+committed data. Silently ignored if the m4_ref(DB_READ_UNCOMMITTED)
+flag was not specified when the underlying database was opened.])
+
+m4_tag(m4_idef(DB_WRITECURSOR), [dnl
+Specify that the cursor will be used to update the database. The
+underlying database environment must have been opened using the
+m4_ref(DB_INIT_CDB) flag.])
+
+m4_tag(m4_idef(DB_TXN_SNAPSHOT), [dnl
+Configure a transactional cursor to operate with read-only
+m4_link(M4RELDIR/ref/transapp/read, snapshot isolation). For databases
+with the m4_ref(DB_MULTIVERSION) flag set, data values will be read as
+they are when the cursor is opened, without taking read locks. This
+flag implicitly begins a transaction that is committed when the cursor
+is closed. Silently ignored if m4_ref(DB_MULTIVERSION) not set on the
+underlying database or if a transaction is supplied in the m4_arg(txnid)
+parameter.])
+m4_tagend])
+
+m4_param(txnid, [dnl
+Cursor operations are not automatically transaction-protected, even if
+the m4_ref(DB_AUTO_COMMIT) flag is specified to the
+m4_ref(dbenv_set_flags) or m4_refT(dbh_open)s. If cursor operations are
+to be transaction-protected, the m4_arg(txnid) parameter must be a
+transaction handle returned from m4_ref(txn_begin); otherwise, NULL. To
+transaction-protect cursor operations, cursors must be opened and closed
+within the context of a transaction, and the m4_arg(txnid) parameter
+specifies the transaction context in which the cursor may be used.])
+
+m4_paramend
+
+m4_err(dbh_cursor, repinval, einval)
+
+m4_seealso(Dbc)
+m4_page_footer
diff --git a/db/docs_src/db/db_del.so b/db/docs_src/db/db_del.so
new file mode 100644
index 000000000..e67da7590
--- /dev/null
+++ b/db/docs_src/db/db_del.so
@@ -0,0 +1,42 @@
+m4_comment([$Id: db_del.so,v 10.49 2006/09/13 14:30:52 mjc Exp $])
+
+define(M4PAGELOCAL, [dbh_del, DB_SECONDARY_BAD])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbh_del),
+ifelse(M4API, C_API, [dnl
+int
+DB-__GT__del(DB *db, DB_TXN *txnid, DBT *key, u_int32_t flags);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+Db::del(DbTxn *txnid, Dbt *key, u_int32_t flags);
+]))
+
+m4_p([dnl
+The m4_refT(dbh_del) removes key/data pairs from the database. The
+key/data pair associated with the specified m4_arg(key) is discarded from
+the database. In the presence of duplicate key values, all records
+associated with the designated key will be discarded.])
+
+m4_p([dnl
+When called on a database that has been made into a secondary index
+using the m4_refT(dbh_associate), the m4_refT(dbh_del) deletes the
+key/data pair from the primary database and all secondary indices.])
+
+m4_return(dbh_del,
+specific, DB_NOTFOUND, [if the specified key is not in the database],
+specific, DB_KEYEMPTY, [if the database is a Queue or Recno database and
+the specified key exists, but was never explicitly created by the
+application or was later deleted], prev)
+
+m4_parambegin
+m4_unusedflags
+m4_param_key
+m4_param_txn(dbh_del)
+m4_paramend
+
+m4_err(dbh_del, deadlock, repinval, secondary_bad, readonly, einval)
+
+m4_seealso(Db)
+m4_page_footer
diff --git a/db/docs_src/db/db_err.so b/db/docs_src/db/db_err.so
new file mode 100644
index 000000000..8601b613b
--- /dev/null
+++ b/db/docs_src/db/db_err.so
@@ -0,0 +1,4 @@
+m4_comment([$Id: db_err.so,v 1.3 2002/08/18 21:15:48 bostic Exp $])
+
+define(M4INTERFACE, dbh_err)
+include(env/env_err.so)
diff --git a/db/docs_src/db/db_exists.so b/db/docs_src/db/db_exists.so
new file mode 100644
index 000000000..5c7cb2634
--- /dev/null
+++ b/db/docs_src/db/db_exists.so
@@ -0,0 +1,55 @@
+m4_comment([$Id: db_exists.so,v 1.1 2007/07/12 18:27:42 bostic Exp $])
+
+define(M4PAGELOCAL, dbh_exists)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbh_exists),
+ifelse(M4API, C_API, [dnl
+int
+DB-__GT__exists(DB *db, DB_TXN *txnid, DBT *key, u_int32_t flags);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+Db::exists(DbTxn *txnid, Dbt *key, u_int32_t flags);
+]))
+
+m4_p([dnl
+The m4_refT(dbh_exists) returns if the specified key appears in the
+database.])
+
+m4_return(dbh_exists,
+specific, DB_NOTFOUND, [if the specified key is not in the database],
+specific, DB_KEYEMPTY, [if the database is a Queue or Recno database and
+the specified key exists, but was never explicitly created by the
+application or was later deleted], prev)
+
+m4_parambegin
+m4_param(flags, [dnl
+m4_sf_zmust(1)
+
+m4_sf_or_add(1)
+
+m4_tagbegin
+m4_tag(m4_idef(DB_READ_COMMITTED), [dnl
+Configure a transactional read operation to have degree 2 isolation (the
+read is not repeatable).])
+
+m4_tag(m4_idef(DB_READ_UNCOMMITTED), [dnl
+Configure a transactional read operation to have degree 1 isolation,
+reading modified but not yet committed data. Silently ignored if the
+m4_ref(DB_READ_UNCOMMITTED) flag was not specified when the underlying
+database was opened.])
+
+m4_rmw_flag([Because the m4_refT(dbh_exists) will not hold locks across
+m4_db calls in non-transactional operations, the m4_ref(DB_RMW) flag to
+the m4_ref(dbh_exists) call is meaningful only in the presence of
+transactions.])
+
+m4_tagend])
+
+m4_param_key
+m4_param_txn(dbh_exists, ro)
+m4_paramend
+
+m4_seealso(Db)
+m4_page_footer
diff --git a/db/docs_src/db/db_fd.so b/db/docs_src/db/db_fd.so
new file mode 100644
index 000000000..ec315c781
--- /dev/null
+++ b/db/docs_src/db/db_fd.so
@@ -0,0 +1,37 @@
+m4_comment([$Id: db_fd.so,v 10.31 2005/06/14 14:06:57 bostic Exp $])
+
+define(M4PAGELOCAL, dbh_fd)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbh_fd),
+ifelse(M4API, C_API, [dnl
+int
+DB-__GT__fd(DB *db, int *fdp);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+Db::fd(int *fdp);
+]))
+
+m4_p([dnl
+The m4_refT(dbh_fd) provides access to a file descriptor representative
+of the underlying database. A file descriptor referring to the same
+file will be returned to all processes that call m4_ref(dbh_open) with
+the same m4_arg(file) parameter.])
+
+m4_p([dnl
+This file descriptor may be safely used as a parameter to the
+m4_manref(fcntl, 2) and m4_manref(flock, 2) locking functions.])
+
+m4_p([dnl
+The m4_refT(dbh_fd) only supports a coarse-grained form of locking.
+Applications should instead use the m4_db lock manager where possible.])
+
+m4_return(dbh_fd, std)
+
+m4_parambegin
+m4_param_co(fdp, current file descriptor)
+m4_paramend
+
+m4_seealso(Db)
+m4_page_footer
diff --git a/db/docs_src/db/db_get.so b/db/docs_src/db/db_get.so
new file mode 100644
index 000000000..0e2233dbe
--- /dev/null
+++ b/db/docs_src/db/db_get.so
@@ -0,0 +1,172 @@
+m4_comment([$Id: db_get.so,v 10.90 2007/05/31 18:52:36 bostic Exp $])
+
+define(M4PAGELOCAL,
+ [dbh_get, dbh_pget, DB_CONSUME, DB_CONSUME_WAIT, DB_GET_BOTH,
+ DB_MULTIPLE, DB_SECONDARY_BAD, DB_SET_RECNO])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbh_get),
+ifelse(M4API, C_API, [dnl
+int
+DB-__GT__get(DB *db,
+ DB_TXN *txnid, DBT *key, DBT *data, u_int32_t flags);
+m4_blank
+int
+DB-__GT__pget(DB *db,
+ DB_TXN *txnid, DBT *key, DBT *pkey, DBT *data, u_int32_t flags);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+Db::get(DbTxn *txnid, Dbt *key, Dbt *data, u_int32_t flags);
+m4_blank
+int
+Db::pget(DbTxn *txnid, Dbt *key, Dbt *pkey, Dbt *data, u_int32_t flags);
+]))
+
+m4_p([dnl
+The m4_refT(dbh_get) retrieves key/data pairs from the database. The
+address and length of the data associated with the specified m4_arg(key)
+are returned in the structure to which m4_arg(data) refers.])
+
+m4_p([dnl
+In the presence of duplicate key values, m4_ref(dbh_get) will return the
+first data item for the designated key. Duplicates are sorted by insert
+order, except where this order has been overridden by cursor operations.
+m4_bold([Retrieval of duplicates requires the use of cursor operations.])
+See m4_ref(dbc_get) for details.])
+
+m4_p([dnl
+When called on a database that has been made into a secondary index
+using the m4_refT(dbh_associate), the m4_ref(dbh_get) and
+m4_refT(dbh_pget)s return the key from the secondary index and the data
+item from the primary database. In addition, the m4_refT(dbh_pget)
+returns the key from the primary database. In databases that are not
+secondary indices, the m4_refT(dbh_pget) will always fail.])
+
+m4_return(dbh_get,
+specific, DB_NOTFOUND, [if the specified key is not in the database],
+specific, DB_KEYEMPTY, [if the database is a Queue or Recno database and
+the specified key exists, but was never explicitly created by the
+application or was later deleted], prev)
+
+m4_parambegin
+m4_param_data
+m4_param(flags, [dnl
+m4_sf_zmust(1)
+
+m4_tagbegin
+m4_tag(m4_idef(DB_CONSUME), [dnl
+Return the record number and data from the available record closest to
+the head of the queue, and delete the record. The cursor will be
+positioned on the deleted record. The record number will be returned
+in m4_arg(key), as described in m4_ref(Dbt). The data will be returned
+in the m4_arg(data) parameter. A record is available if it is not
+deleted and is not currently locked. The underlying database must be
+of type Queue for m4_ref(DB_CONSUME) to be specified.])
+
+m4_tag(m4_idef(DB_CONSUME_WAIT), [dnl
+The m4_ref(DB_CONSUME_WAIT) flag is the same as the m4_ref(DB_CONSUME)
+flag, except that if the Queue database is empty, the thread of control
+will wait until there is data in the queue before returning. The
+underlying database must be of type Queue for m4_ref(DB_CONSUME_WAIT)
+to be specified.
+m4_p([dnl
+If lock or transaction timeouts have been specified, the m4_refT(dbh_get)
+with the m4_ref(DB_CONSUME_WAIT) flag
+ifelse(M4EXCEPT, except_return, [dnl
+may return m4_ref(DB_LOCK_NOTGRANTED) or throw a
+m4_ref(DbLockNotGrantedException) exception.],
+M4EXCEPT, except_err, [dnl
+may throw a m4_ref(DbLockNotGrantedException) exception.],[dnl
+may return m4_ref(DB_LOCK_NOTGRANTED).])
+This failure, by itself, does not require the enclosing transaction be
+aborted.])])
+
+m4_tag(m4_idef(DB_GET_BOTH), [dnl
+Retrieve the key/data pair only if both the key and data match the
+arguments.
+m4_p([dnl
+When used with the m4_refT(dbh_pget) version of this method on a
+secondary index handle, return the secondary key/primary key/data tuple
+only if both the primary and secondary keys match the arguments. It is
+an error to use the m4_ref(DB_GET_BOTH) flag with the m4_ref(dbh_get)
+version of this method and a secondary index handle.])])
+
+m4_tag(m4_idef(DB_SET_RECNO), [dnl
+Retrieve the specified numbered key/data pair from a database. Upon
+return, both the m4_arg(key) and m4_arg(data) items will have been
+filled in.
+m4_p([dnl
+The m4_arg(data) field of the specified m4_arg(key) must be a pointer
+to a logical record number (that is, a m4_arg(db_recno_t)). This record
+number determines the record to be retrieved.])
+m4_p([dnl
+For m4_ref(DB_SET_RECNO) to be specified, the underlying database must be
+of type Btree, and it must have been created with the DB_RECNUM flag.])])
+m4_tagend
+
+m4_sf_or_add(1)
+
+m4_tagbegin
+m4_tag(m4_idef(DB_MULTIPLE), [dnl
+Return multiple data items in the buffer to which the m4_arg(data)
+parameter refers.
+m4_p([dnl
+In the case of Btree or Hash databases, all of the data items associated
+with the specified key are entered into the buffer. In the case of
+Queue or Recno databases, all of the data items in the database,
+starting at, and subsequent to, the specified key, are entered into the
+buffer.])
+m4_p([dnl
+m4_bulk_mem])
+m4_p([dnl
+The m4_ref(DB_MULTIPLE) flag may only be used alone, or with the
+m4_ref(DB_GET_BOTH) and m4_ref(DB_SET_RECNO) options. The
+m4_ref(DB_MULTIPLE) flag may not be used when accessing databases made
+into secondary indices using the m4_refT(dbh_associate).])
+m4_p([dnl
+See
+ifelse(M4API, C_API, m4_ref(DB_MULTIPLE_INIT), m4_ref(DbMultipleDataIterator))
+for more information.])])
+
+m4_tag(m4_idef(DB_READ_COMMITTED), [dnl
+Configure a transactional get operation to have degree 2 isolation (the
+read is not repeatable).])
+
+m4_tag(m4_idef(DB_READ_UNCOMMITTED), [dnl
+Configure a transactional get operation to have degree 1 isolation,
+reading modified but not yet committed data. Silently ignored if the
+m4_ref(DB_READ_UNCOMMITTED) flag was not specified when the underlying
+database was opened.])
+
+m4_rmw_flag([Because the m4_refT(dbh_get) will not hold locks across
+m4_db calls in non-transactional operations, the m4_ref(DB_RMW) flag
+to the m4_ref(dbh_get) call is meaningful only in the presence of
+transactions.])
+
+m4_tagend])
+
+m4_param_key
+m4_param(pkey, [dnl
+The m4_arg(pkey) parameter is the return key from the primary database.])
+m4_param_txn(dbh_get)
+
+m4_paramend
+
+m4_err(dbh_get,
+buffersmall,
+[requested item could not be returned due to undersized buffer],
+deadlock,
+locknotgranted,
+[m4_ref(DB_CONSUME_WAIT) flag was specified, lock or transaction
+timers were configured and the],
+repinval, secondary_bad, einval,
+[a record number of 0 was specified;
+the m4_ref(DB_THREAD) flag was specified to the m4_refT(dbh_open) and
+none of the m4_ref(DB_DBT_MALLOC), m4_ref(DB_DBT_REALLOC) or
+m4_ref(DB_DBT_USERMEM) flags were set in the m4_ref(Dbt);
+the m4_refT(dbh_pget) was called with a m4_ref(Db) handle that does not
+refer to a secondary index])
+
+m4_seealso(Db)
+m4_page_footer
diff --git a/db/docs_src/db/db_get_byteswapped.so b/db/docs_src/db/db_get_byteswapped.so
new file mode 100644
index 000000000..3169239f4
--- /dev/null
+++ b/db/docs_src/db/db_get_byteswapped.so
@@ -0,0 +1,41 @@
+m4_comment([$Id: db_get_byteswapped.so,v 10.23 2004/08/13 03:38:55 bostic Exp $])
+
+define(M4PAGELOCAL, dbh_get_byteswapped)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbh_get_byteswapped),
+ifelse(M4API, C_API, [dnl
+int
+DB-__GT__get_byteswapped(DB *db, int *isswapped);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+Db::get_byteswapped(int *isswapped);
+]))
+
+m4_p([dnl
+The m4_refT(dbh_get_byteswapped) returns if the underlying database
+files were created on an architecture of the same byte order as the
+current one, or if they were not (that is, big-endian on a little-endian
+machine, or vice versa). This information may be used to determine
+whether application data needs to be adjusted for this architecture or
+not.])
+
+m4_when_after_dbopen(dbh_get_byteswapped)
+
+m4_return(dbh_get_byteswapped, std)
+
+m4_parambegin
+m4_param(isswapped, [dnl
+If the underlying database files were created on an architecture of the
+same byte order as the current one. 0 is stored into the memory location
+referenced by m4_arg(isswapped). If the underlying database files were
+created on an architecture of a different byte order as the current one,
+1 is stored into the memory location referenced by m4_arg(isswapped).])
+m4_paramend
+
+m4_err(dbh_get_byteswapped,
+einval, [the method was called before m4_ref(dbh_open) was called])
+
+m4_seealso(Db)
+m4_page_footer
diff --git a/db/docs_src/db/db_get_mpf.so b/db/docs_src/db/db_get_mpf.so
new file mode 100644
index 000000000..1974612b1
--- /dev/null
+++ b/db/docs_src/db/db_get_mpf.so
@@ -0,0 +1,20 @@
+m4_comment([$Id: db_get_mpf.so,v 1.8 2005/07/20 16:22:18 bostic Exp $])
+
+define(M4PAGELOCAL, dbh_get_mpf)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbh_get_mpf),
+ifelse(M4API, C_API, [dnl
+DB_MPOOLFILE *
+DB-__GT__get_mpf(DB *db);
+])
+ifelse(M4API, CXX_API, [dnl
+DbMpoolFile *
+Db::get_mpf();
+]))
+
+m4_getter(dbh_get_mpf,
+[handle for the cache file underlying the database])
+
+m4_seealso(Db)
+m4_page_footer
diff --git a/db/docs_src/db/db_get_type.so b/db/docs_src/db/db_get_type.so
new file mode 100644
index 000000000..f17053e52
--- /dev/null
+++ b/db/docs_src/db/db_get_type.so
@@ -0,0 +1,35 @@
+m4_comment([$Id: db_get_type.so,v 10.27 2004/08/13 03:38:55 bostic Exp $])
+
+define(M4PAGELOCAL, dbh_get_type)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbh_get_type),
+ifelse(M4API, C_API, [dnl
+int
+DB-__GT__get_type(DB *db, DBTYPE *type);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+Db::get_type(DBTYPE *type);
+]))
+
+m4_p([dnl
+The m4_refT(dbh_get_type) returns the type of the underlying access
+method (and file format). The type value is one of DB_BTREE, DB_HASH,
+DB_RECNO, or DB_QUEUE. This value may be used to determine the type of
+the database after a return from m4_ref(dbh_open) with the m4_arg(type)
+parameter set to DB_UNKNOWN.])
+
+m4_when_after_dbopen(dbh_get_type)
+
+m4_return(dbh_get_type, std)
+
+m4_parambegin
+m4_param_co(type, [type of the underlying access method])
+m4_paramend
+
+m4_err(dbh_get_type,
+einval, [the method was called before m4_ref(dbh_open) was called])
+
+m4_seealso(Db)
+m4_page_footer
diff --git a/db/docs_src/db/db_getenv.so b/db/docs_src/db/db_getenv.so
new file mode 100644
index 000000000..71489de53
--- /dev/null
+++ b/db/docs_src/db/db_getenv.so
@@ -0,0 +1,20 @@
+m4_comment([$Id: db_getenv.so,v 10.9 2005/07/20 16:22:49 bostic Exp $])
+
+define(M4PAGELOCAL, dbh_getenv)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbh_getenv),
+ifelse(M4API, C_API, [dnl
+DB_ENV *
+DB-__GT__get_env(DB *db);
+])
+ifelse(M4API, CXX_API, [dnl
+DbEnv *
+Db::get_env();
+]))
+
+m4_getter(dbh_getenv,
+[handle for the database environment underlying the database])
+
+m4_seealso(Db)
+m4_page_footer
diff --git a/db/docs_src/db/db_join.so b/db/docs_src/db/db_join.so
new file mode 100644
index 000000000..37fbca521
--- /dev/null
+++ b/db/docs_src/db/db_join.so
@@ -0,0 +1,116 @@
+m4_comment([$Id: db_join.so,v 10.58 2007/05/31 18:52:36 bostic Exp $])
+
+define(M4PAGELOCAL, [dbh_join, DB_JOIN_NOSORT, DB_SECONDARY_BAD])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbh_join),
+ifelse(M4API, C_API, [dnl
+int
+DB-__GT__join(DB *primary,
+ DBC **curslist, DBC **dbcp, u_int32_t flags);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+Db::join(Dbc **curslist, Dbc **dbcp, u_int32_t flags);
+]))
+
+m4_p([dnl
+The m4_refT(dbh_join) creates a specialized join cursor for use in
+performing equality or natural joins on secondary indices. For
+information on how to organize your data to use this functionality, see
+m4_link(M4RELDIR/ref/am/join, [Equality join]).])
+
+m4_p([dnl
+The m4_refT(dbh_join) method is called using the m4_ref(Db) handle of
+the primary database.])
+
+m4_p([dnl
+The join cursor supports only the m4_ref(dbc_get) and m4_arg(dbc_close)
+cursor functions:])
+
+m4_tagbegin
+m4_tag(m4_ref(dbc_get), [dnl
+Iterates over the values associated with the keys to which each item in
+m4_arg(curslist) was initialized. Any data value that appears in all
+items specified by the m4_arg(curslist) parameter is then used as a key
+into the m4_arg(primary), and the key/data pair found in the
+m4_arg(primary) is returned.
+
+m4_sf_zmust(0)
+
+m4_tagbegin
+m4_tag(m4_idef(DB_JOIN_ITEM), [dnl
+Do not use the data value found in all the cursors as a lookup key for
+the m4_arg(primary), but simply return it in the key parameter instead.
+The data parameter is left unchanged.])
+m4_tagend
+
+m4_sf_or_add(0)
+
+m4_tagbegin
+m4_tag(m4_idef(DB_READ_UNCOMMITTED), [dnl
+Configure a transactional join operation to have degree 1 isolation,
+reading modified but not yet committed data. Silently ignored if the
+m4_ref(DB_READ_UNCOMMITTED) flag was not specified when the underlying
+database was opened.])
+
+m4_rmw_flag()
+m4_tagend])
+
+m4_tag(m4_ref(dbc_close), [dnl
+Close the returned cursor and release all resources. (Closing the cursors
+in m4_arg(curslist) is the responsibility of the caller.)])
+m4_tagend
+
+m4_return(dbh_join, std)
+
+m4_parambegin
+m4_param(curslist, [dnl
+The m4_arg(curslist) parameter contains a NULL terminated array of cursors.
+Each cursor must have been initialized to refer to the key on which the
+underlying database should be joined. Typically, this initialization is done
+by a m4_ref(dbc_get) call with the m4_ref(DB_SET) flag specified. Once the
+cursors have been passed as part of a m4_arg(curslist), they should not
+be accessed or modified until the newly created join cursor has been closed,
+or else inconsistent results may be returned.
+m4_p([dnl
+Joined values are retrieved by doing a sequential iteration over the first
+cursor in the m4_arg(curslist) parameter, and a nested iteration over each
+secondary cursor in the order they are specified in the m4_arg(curslist)
+parameter. This requires database traversals to search for the current
+datum in all the cursors after the first. For this reason, the best join
+performance normally results from sorting the cursors from the one that
+refers to the least number of data items to the one that refers to the
+most. By default, m4_ref(dbh_join) does this sort on behalf of its caller.])
+m4_p([dnl
+For the returned join cursor to be used in a transaction-protected manner,
+the cursors listed in m4_arg(curslist) must have been created within the
+context of the same transaction.])])
+
+m4_param(dbcp, [dnl
+The newly created join cursor is returned in the memory location to
+which m4_arg(dbcp) refers.])
+
+m4_param(flags, [dnl
+m4_sf_zmust(0)
+
+m4_tagbegin
+
+m4_tag(m4_idef(DB_JOIN_NOSORT), [dnl
+Do not sort the cursors based on the number of data items to which they
+refer. If the data are structured so that cursors with many data items
+also share many common elements, higher performance will result from
+listing those cursors before cursors with fewer data items; that is, a
+sort order other than the default. The m4_ref(DB_JOIN_NOSORT) flag
+permits applications to perform join optimization prior to calling
+m4_ref(dbh_join).])
+
+m4_tagend])
+m4_paramend
+
+m4_err(dbh_join, repinval, secondary_bad, einval,
+[cursor methods other than m4_ref(dbc_get) or m4_ref(dbc_close) were
+called])
+
+m4_seealso(Db)
+m4_page_footer
diff --git a/db/docs_src/db/db_key_range.so b/db/docs_src/db/db_key_range.so
new file mode 100644
index 000000000..bd59f0be0
--- /dev/null
+++ b/db/docs_src/db/db_key_range.so
@@ -0,0 +1,71 @@
+m4_comment([$Id: db_key_range.so,v 10.23 2004/08/13 03:38:55 bostic Exp $])
+
+define(M4PAGELOCAL, dbh_key_range)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbh_key_range),
+ifelse(M4API, C_API, [dnl
+int
+DB-__GT__key_range(DB *db, DB_TXN *txnid,
+ DBT *key, DB_KEY_RANGE *key_range, u_int32_t flags);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+Db::key_range(DbTxn *txnid
+ Dbt *key, DB_KEY_RANGE *key_range, u_int32_t flags);
+]))
+
+m4_p([dnl
+The m4_refT(dbh_key_range) returns an estimate of the proportion of keys
+that are less than, equal to, and greater than the specified key. The
+underlying database must be of type Btree.])
+
+m4_p([dnl
+The m4_refT(dbh_key_range) fills in a structure of type DB_KEY_RANGE. The
+following data fields are available from the DB_KEY_RANGE structure:])
+
+m4_tagbegin
+m4_field(double, less,
+[A value between 0 and 1, the proportion of keys less than the specified
+key.])
+
+m4_field(double, equal,
+[A value between 0 and 1, the proportion of keys equal to the specified
+key.])
+
+m4_field(double, greater,
+[A value between 0 and 1, the proportion of keys greater than the
+specified key.])
+m4_tagend
+
+m4_p([dnl
+Values are in the range of 0 to 1; for example, if the field
+m4_arg(less) is 0.05, 5% of the keys in the database are less than the
+m4_arg(key) parameter. The value for m4_arg(equal) will be zero if
+there is no matching key, and will be non-zero otherwise.])
+
+m4_return(dbh_key_range, std)
+
+m4_parambegin
+m4_param_key
+
+m4_param(key_range, [dnl
+The estimates are returned in the m4_arg(key_range) parameter, which
+contains three elements of type double: m4_arg(less), m4_arg(equal), and
+m4_arg(greater). Values are in the range of 0 to 1; for example, if the
+field m4_arg(less) is 0.05, 5% of the keys in the database are less than
+the m4_arg(key) parameter. The value for m4_arg(equal) will be zero if
+there is no matching key, and will be non-zero otherwise.])
+
+m4_param_txn(dbh_key_range,, [dnl
+The m4_refT(dbh_key_range) does not retain the locks it acquires for the
+life of the transaction, so estimates may not be repeatable.])
+
+m4_unusedflags
+m4_paramend
+
+m4_err(dbh_key_range, deadlock, repinval,
+einval, [the underlying database was not of type Btree])
+
+m4_seealso(Db)
+m4_page_footer
diff --git a/db/docs_src/db/db_list.so b/db/docs_src/db/db_list.so
new file mode 100644
index 000000000..64d367984
--- /dev/null
+++ b/db/docs_src/db/db_list.so
@@ -0,0 +1,7 @@
+m4_comment([$Id: db_list.so,v 1.1 2002/08/30 20:00:48 bostic Exp $])
+
+m4_page_title([m4_db: Databases and Related Methods])
+
+include(db/m4.methods)
+
+m4_page_footer
diff --git a/db/docs_src/db/db_open.so b/db/docs_src/db/db_open.so
new file mode 100644
index 000000000..58de7c861
--- /dev/null
+++ b/db/docs_src/db/db_open.so
@@ -0,0 +1,245 @@
+m4_comment([$Id: db_open.so,v 10.122 2007/05/31 18:52:36 bostic Exp $])
+
+define(M4PAGELOCAL, [dnl
+ dbh_open, dbh_get_file, dbh_get_dbname, dbh_get_transactional,
+ dbh_get_open_flags, dbh_get_transactional, DB_BTREE, DB_CREATE,
+ DB_EXCL, DB_HASH, DB_MULTIVERSION, DB_QUEUE,
+ DB_READ_UNCOMMITTED, DB_RECNO, DB_TRUNCATE, DB_UNKNOWN])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbh_open),
+ifelse(M4API, C_API, [dnl
+int
+DB-__GT__open(DB *db, DB_TXN *txnid, const char *file,
+ const char *database, DBTYPE type, u_int32_t flags, int mode);
+m4_blank
+int
+DB-__GT__get_dbname(DB *db, const char **filenamep, const char **dbnamep);
+m4_blank
+int
+DB-__GT__get_multiple(DB *db);
+m4_blank
+int
+DB-__GT__get_open_flags(DB *db, u_int32_t *flagsp);
+m4_blank
+int
+DB-__GT__get_transactional(DB *db);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+Db::open(DbTxn *txnid, const char *file,
+ const char *database, DBTYPE type, u_int32_t flags, int mode);
+m4_blank
+int
+Db::get_dbname(const char **filenamep, const char **dbnamep);
+m4_blank
+int
+Db::get_multiple()
+m4_blank
+int
+Db::get_open_flags(u_int32_t *flagsp);
+m4_blank
+int
+Db::get_transactional()
+]))
+
+m4_p([dnl
+The m4_refT(dbh_open) opens the database represented by the m4_arg(file)
+and m4_arg(database) parameters for both reading and writing.])
+
+m4_p([dnl
+The currently supported m4_db file formats (or m4_italic(access
+methods)) are Btree, Hash, Queue, and Recno. The Btree format is a
+representation of a sorted, balanced tree structure. The Hash format
+is an extensible, dynamic hashing scheme. The Queue format supports
+fast access to fixed-length records accessed sequentially or by logical
+record number. The Recno format supports fixed- or variable-length
+records, accessed sequentially or by logical record number, and
+optionally backed by a flat text file.])
+
+m4_p([dnl
+Storage and retrieval for the m4_db access methods are based on key/data
+pairs; see m4_ref(Dbt) for more information.])
+
+m4_p([dnl
+Calling m4_ref(dbh_open) is a relatively expensive operation, and
+maintaining a set of open databases will normally be preferable to
+repeatedly opening and closing the database for each new query.])
+
+m4_return(dbh_open, std, [dnl
+If m4_ref(dbh_open) fails, the m4_refT(dbh_close) must be called to
+discard the m4_ref(Db) handle.])
+
+m4_parambegin
+m4_param(database, [dnl
+The m4_arg(database) parameter is optional, and allows applications to
+have multiple databases in a single file. Although no m4_arg(database)
+parameter needs to be specified, it is an error to attempt to open a
+second database in a m4_arg(file) that was not initially created using
+a m4_arg(database) name. Further, the m4_arg(database) parameter is not
+supported by the Queue format. Finally, when opening multiple databases
+in the same physical file, it is important to consider locking and
+memory cache issues; see m4_link(M4RELDIR/ref/am/opensub, Opening
+multiple databases in a single file) for more information.
+m4_p([dnl
+In-memory databases never intended to be preserved on disk may be
+created by setting the m4_arg(file) parameter to NULL. If the
+m4_arg(database) parameter is also NULL, the database is strictly
+temporary and cannot be opened by any other thread of control, thus the
+database can only be accessed by sharing the single database handle that
+created it, in circumstances where doing so is safe. If the
+m4_arg(database) parameter is not set to NULL, the database can be opened
+by other threads of control and will be replicated to client sites in
+any replication group.])])
+
+m4_param_utf8(file, [dnl
+The m4_arg(file) parameter is used as the name of an underlying file that
+will be used to back the database; see m4_link(M4RELDIR/ref/env/naming,
+File naming) for more information.
+m4_p([dnl
+In-memory databases never intended to be preserved on disk may be
+created by setting the m4_arg(file) parameter to NULL.])])
+
+m4_param(flags, [dnl
+m4_sf_or_may
+
+m4_tagbegin
+m4_tag(m4_idef(DB_AUTO_COMMIT), [dnl
+Enclose the m4_ref(dbh_open) call within a transaction. If the call
+succeeds, the open operation will be recoverable and all subsequent
+database modification operations based on this handle will be
+transactionally protected. If the call fails, no database will have
+been created.])
+
+m4_tag(m4_idef(DB_CREATE), [dnl
+Create the database. If the database does not already exist and the
+DB_CREATE flag is not specified, the m4_ref(dbh_open) will fail.])
+
+m4_tag(m4_idef(DB_EXCL), [dnl
+Return an error if the database already exists. The m4_ref(DB_EXCL)
+flag is only meaningful when specified with the m4_ref(DB_CREATE)
+flag.])
+
+m4_tag(m4_idef(DB_MULTIVERSION), [dnl
+Open the database with support for m4_link(M4RELDIR/ref/transapp/read,
+multiversion concurrency control). This will cause updates to the
+database to follow a copy-on-write protocol, which is required to
+support snapshot isolation. The m4_ref(DB_MULTIVERSION) flag requires
+that the database be transactionally protected during its open and is
+not supported by the queue format.])
+
+m4_tag(m4_idef(DB_NOMMAP), [dnl
+Do not map this database into process memory (see the
+m4_refT(dbenv_set_mp_mmapsize) for further information).])
+
+m4_tag(m4_idef(DB_RDONLY), [dnl
+Open the database for reading only. Any attempt to modify items in the
+database will fail, regardless of the actual permissions of any
+underlying files.])
+
+m4_tag(m4_idef(DB_READ_UNCOMMITTED), [dnl
+Support transactional read operations with degree 1 isolation. Read
+operations on the database may request the return of modified but not
+yet committed data. This flag must be specified on all m4_ref(Db)
+handles used to perform dirty reads or database updates, otherwise
+requests for dirty reads may not be honored and the read may block.])
+
+m4_tag(m4_idef(DB_THREAD), [dnl
+Cause the m4_ref(Db) handle returned by m4_ref(dbh_open) to be
+m4_italic(free-threaded); that is, concurrently usable by multiple
+threads in the address space.])
+
+ifelse(dbh_open, dbh_open, [dnl
+m4_tag(m4_idef(DB_TRUNCATE), [dnl
+Physically truncate the underlying file, discarding all previous
+databases it might have held. Underlying filesystem primitives are used
+to implement this flag. For this reason, it is applicable only to the
+file and cannot be used to discard databases within a file.
+m4_p([dnl
+The m4_ref(DB_TRUNCATE) flag cannot be lock or transaction-protected,
+and it is an error to specify it in a locking or transaction-protected
+environment.])])])
+m4_tagend])
+
+m4_param_filemode([the database open])
+
+m4_param_txn(dbh_open, auto, [dnl
+Note that transactionally protected operations on a m4_ref(Db) handle
+requires the m4_ref(Db) handle itself be transactionally protected
+during its open. Also note that the transaction must be committed before
+the handle is closed; see m4_link(M4RELDIR/ref/program/scope, m4_db
+handles) for more information.])
+
+define(__m4_type, [dnl
+The m4_arg(type) parameter is of type DBTYPE, and must be set to one of
+m4_idef(DB_BTREE), m4_idef(DB_HASH), m4_idef(DB_QUEUE),
+m4_idef(DB_RECNO), or m4_idef(DB_UNKNOWN). If m4_arg(type) is
+DB_UNKNOWN, the database must already exist and m4_ref(dbh_open) will
+automatically determine its type. The m4_refT(dbh_get_type) may be used
+to determine the underlying type of databases opened using DB_UNKNOWN.])
+
+m4_param(type, [dnl
+__m4_type])
+m4_paramend
+
+m4_header([Environment Variables])
+m4_data_location(dbh_open, 1)
+m4_tagbegin
+m4_tag(TMPDIR, [dnl
+If the m4_arg(file) and m4_arg(dbenv) parameters to m4_ref(dbh_open) are
+NULL, the environment variable m4_envvar(TMPDIR) may be used as a
+directory in which to create temporary backing files])
+m4_tagend
+
+m4_err(dbh_open, deadlock, filenotfound,
+DB_OLD_VERSION,
+[The database cannot be opened without being first upgraded.],
+EEXIST,
+[m4_ref(DB_CREATE) and m4_ref(DB_EXCL) were specified and the database exists.],
+einval,
+[an unknown database type, page size, hash function, pad byte, byte
+order, or a flag value or parameter that is incompatible with the
+specified database was specified;
+the m4_ref(DB_THREAD) flag was specified and fast mutexes are not
+available for this architecture;
+the m4_ref(DB_THREAD) flag was specified to m4_ref(dbh_open), but was
+not specified to the m4_ref(dbenv_open) call for the environment in
+which the m4_ref(Db) handle was created;
+a backing flat text file was specified with either the m4_ref(DB_THREAD)
+flag or the provided database environment supports transaction
+processing],
+ENOENT,
+[A nonexistent m4_arg(re_source) file was specified.], repinval)
+
+m4_pf_description(m4_ref(dbh_get_dbname))
+m4_p([dnl
+The m4_refT(dbh_get_dbname) returns the current filename and database
+name.])
+m4_parambegin
+m4_param_co(filenamep, current filename, REF)
+m4_param_co(dbnamep, current database name, REF)
+m4_paramend
+m4_when_any(dbh_get_dbname)
+m4_return(dbh_get_dbname, std)
+
+m4_pf_description(m4_ref(dbh_get_multiple))
+m4_p([dnl
+The m4_refT(dbh_get_multiple) returns non-zero if the m4_ref(Db) handle
+references a physical file supporting multiple databases.])
+m4_p([dnl
+In this case, the m4_ref(Db) handle is a handle on a database whose key
+values are the names of the databases stored in the physical file and
+whose data values are opaque objects. No keys or data values may be
+modified or stored using the database handle.])
+m4_when_after_dbopen(dbh_get_multiple)
+
+m4_pf_getter(dbh_get_open_flags, [current open method flags],, flagsp)
+
+m4_pf_description(m4_ref(dbh_get_transactional))
+m4_p([dnl
+The m4_refT(dbh_get_transactional) returns non-zero if the m4_ref(Db)
+handle has been opened in a transactional mode.])
+m4_when_any(dbh_get_transactional)
+
+m4_seealso(Db)
+m4_page_footer
diff --git a/db/docs_src/db/db_put.so b/db/docs_src/db/db_put.so
new file mode 100644
index 000000000..2e8acadc6
--- /dev/null
+++ b/db/docs_src/db/db_put.so
@@ -0,0 +1,84 @@
+m4_comment([$Id: db_put.so,v 10.59 2006/09/13 14:30:52 mjc Exp $])
+
+define(M4PAGELOCAL, [dbh_put, DB_APPEND, DB_NODUPDATA, DB_NOOVERWRITE])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbh_put),
+ifelse(M4API, C_API, [dnl
+int
+DB-__GT__put(DB *db,
+ DB_TXN *txnid, DBT *key, DBT *data, u_int32_t flags);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+Db::put(DbTxn *txnid, Dbt *key, Dbt *data, u_int32_t flags);
+]))
+
+m4_p([dnl
+The m4_refT(dbh_put) stores key/data pairs in the database. The default
+behavior of the m4_ref(dbh_put) function is to enter the new key/data
+pair, replacing any previously existing key if duplicates are disallowed,
+or adding a duplicate data item if duplicates are allowed. If the database
+supports duplicates, the m4_refT(dbh_put) adds the new data value at the
+end of the duplicate set. If the database supports sorted duplicates,
+the new data value is inserted at the correct sorted location.])
+
+m4_return(dbh_put, prev)
+
+m4_parambegin
+m4_param(flags, [dnl
+m4_sf_zmust(1)
+
+m4_tagbegin
+m4_tag(m4_idef(DB_APPEND), [dnl
+Append the key/data pair to the end of the database. For the
+DB_APPEND flag to be specified, the underlying database must be
+a Queue or Recno database. The record number allocated to the record is
+returned in the specified m4_arg(key).
+m4_p([dnl
+There is a minor behavioral difference between the Recno and Queue access
+methods for the m4_ref(DB_APPEND) flag. If a transaction enclosing a
+m4_ref(dbh_put) operation with the m4_ref(DB_APPEND) flag aborts, the
+record number may be decremented (and later reallocated by a subsequent
+m4_ref(DB_APPEND) operation) by the Recno access method, but will not be
+decremented or reallocated by the Queue access method.])])
+
+m4_tag(m4_idef(DB_NODUPDATA), [dnl
+In the case of the Btree and Hash access methods, enter the new key/data
+pair only if it does not already appear in the database.
+m4_p([dnl
+The DB_NODUPDATA flag may only be specified if the underlying
+database has been configured to support sorted duplicates. The
+DB_NODUPDATA flag may not be specified to the Queue or Recno
+access methods.])
+m4_return(dbh_put, specific, DB_KEYEXIST,
+[if m4_ref(DB_NODUPDATA) is set and the key/data pair already appears
+in the database])])
+
+m4_tag(m4_idef(DB_NOOVERWRITE), [dnl
+Enter the new key/data pair only if the key does not already appear in the
+database. The m4_refT(dbh_put) call with the DB_NOOVERWRITE flag
+set will fail if the key already exists in the database, even if the database
+supports duplicates.
+m4_return(dbh_put, specific, DB_KEYEXIST,
+[if m4_ref(DB_NOOVERWRITE) is set and the key already appears in the
+database])])
+m4_tagend])
+
+m4_param_data
+m4_param_key
+m4_param_txn(dbh_put)
+m4_paramend
+
+m4_idefz(DB_REP_HANDLE_DEAD)
+m4_idefz(DB_REP_LOCKOUT)
+m4_err(dbh_put, deadlock, readonly, repinval, einval,
+[a record number of 0 was specified;
+an attempt was made to add a record to a fixed-length database that was too
+large to fit;
+an attempt was made to do a partial put;
+an attempt was made to add a record to a secondary index],
+ENOSPC, [A btree exceeded the maximum btree depth (255).])
+
+m4_seealso(Db)
+m4_page_footer
diff --git a/db/docs_src/db/db_remove.so b/db/docs_src/db/db_remove.so
new file mode 100644
index 000000000..5b56b99b6
--- /dev/null
+++ b/db/docs_src/db/db_remove.so
@@ -0,0 +1,4 @@
+m4_comment([$Id: db_remove.so,v 10.3 2002/08/18 21:15:51 bostic Exp $])
+
+define(M4INTERFACE, dbh_remove)
+include(env/env_dbremove.so)
diff --git a/db/docs_src/db/db_rename.so b/db/docs_src/db/db_rename.so
new file mode 100644
index 000000000..d8b948785
--- /dev/null
+++ b/db/docs_src/db/db_rename.so
@@ -0,0 +1,4 @@
+m4_comment([$Id: db_rename.so,v 10.3 2002/08/18 21:15:51 bostic Exp $])
+
+define(M4INTERFACE, dbh_rename)
+include(env/env_dbrename.so)
diff --git a/db/docs_src/db/db_set_alloc.so b/db/docs_src/db/db_set_alloc.so
new file mode 100644
index 000000000..d1d3a06de
--- /dev/null
+++ b/db/docs_src/db/db_set_alloc.so
@@ -0,0 +1,4 @@
+m4_comment([$Id: db_set_alloc.so,v 10.3 2002/08/18 21:15:51 bostic Exp $])
+
+define(M4INTERFACE, dbh_set_alloc)
+include(env/env_set_alloc.so)
diff --git a/db/docs_src/db/db_set_append_recno.so b/db/docs_src/db/db_set_append_recno.so
new file mode 100644
index 000000000..ab5d5ab43
--- /dev/null
+++ b/db/docs_src/db/db_set_append_recno.so
@@ -0,0 +1,72 @@
+m4_comment([$Id: db_set_append_recno.so,v 1.24 2006/05/17 20:47:46 bostic Exp $])
+
+define(M4PAGELOCAL, [dbh_set_append_recno, DB_DBT_APPMALLOC])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbh_set_append_recno),
+ifelse(M4API, C_API, [dnl
+int
+DB-__GT__set_append_recno(DB *,
+ int (*db_append_recno_fcn)(DB *dbp, DBT *data, db_recno_t recno));
+])
+ifelse(M4API, CXX_API, [dnl
+int
+Db::set_append_recno(
+ int (*db_append_recno_fcn)(DB *dbp, Dbt *data, db_recno_t recno));
+]))
+
+define(__dbAppendRecno_param, [dnl
+ifelse([$1], internal, [dnl
+The m4_arg(db_append_recno_fcn) parameter is a function to call after
+the record number has been selected but before the data has been stored
+into the database. The function takes three parameters:
+m4_tagbegin
+m4_tag(m4_arg(db), [dnl
+The m4_arg(db) parameter is the enclosing database handle.])
+m4_tag(m4_arg(dbt), [dnl
+The m4_arg(dbt) parameter is the data m4_ref(Dbt) to be stored.])
+m4_tag(m4_arg(recno), [dnl
+The m4_arg(recno) parameter is the generated record number.])
+m4_tagend],[dnl
+m4_parambegin
+m4_param(db, [dnl
+The m4_arg(db) parameter is the enclosing database handle.])
+m4_param(data, [dnl
+The m4_arg(data) parameter is the data m4_ref(Dbt) to be stored.])
+m4_param(recno, [dnl
+The m4_arg(recno) parameter is the generated record number.])
+m4_paramend])
+m4_p([dnl
+The called function may modify the data m4_ref(Dbt). If the function
+needs to allocate memory for the m4_arg(data) field, the m4_arg(flags)
+field of the returned m4_ref(Dbt) should be set to
+m4_ref(DB_DBT_APPMALLOC), which indicates that m4_db should free the
+memory when it is done with it.])])
+
+define(__dbAppendRecno_return, [dnl
+The callback function must return 0 on success and m4_envvar(errno) or
+a value outside of the m4_db error name space on failure.])
+
+m4_p([dnl
+When using the m4_ref(DB_APPEND) option of the m4_ref(dbh_put) method,
+it may be useful to modify the stored data based on the generated key.
+If a callback function is specified using the
+m4_refT(dbh_set_append_recno), it will be called after the record number
+has been selected, but before the data has been stored.])
+
+m4_scope_dbh(dbh_set_append_recno)
+m4_when_dbopen(dbh_set_append_recno)
+m4_return(dbh_set_append_recno, std)
+
+m4_parambegin
+m4_param(db_append_recno_fcn, [dnl
+__dbAppendRecno_param(internal)
+m4_p([__dbAppendRecno_return])
+m4_not_reentrant])
+m4_paramend
+
+m4_err(dbh_set_append_recno,
+einval, [the method was called after m4_ref(dbh_open) was called])
+
+m4_seealso(Db)
+m4_page_footer
diff --git a/db/docs_src/db/db_set_bt_compare.so b/db/docs_src/db/db_set_bt_compare.so
new file mode 100644
index 000000000..bc58ca60a
--- /dev/null
+++ b/db/docs_src/db/db_set_bt_compare.so
@@ -0,0 +1,70 @@
+m4_comment([$Id: db_set_bt_compare.so,v 10.50 2006/10/26 20:59:24 bostic Exp $])
+
+define(M4PAGELOCAL, dbh_set_bt_compare)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbh_set_bt_compare),
+ifelse(M4API, C_API, [dnl
+int
+DB-__GT__set_bt_compare(DB *db,
+ int (*bt_compare_fcn)(DB *db, const DBT *dbt1, const DBT *dbt2));
+])
+ifelse(M4API, CXX_API, [dnl
+extern "C" {
+ typedef int (*bt_compare_fcn_type)(DB *db, const DBT *dbt1, const DBT *dbt2);
+};
+int
+Db::set_bt_compare(bt_compare_fcn_type bt_compare_fcn);
+]))
+
+m4_p([dnl
+Set the Btree key comparison function. The comparison function is
+called whenever it is necessary to compare a key specified by the
+application with a key currently stored in the tree.])
+
+m4_p([dnl
+If no comparison function is specified, the keys are compared lexically,
+with shorter keys collating before longer keys.])
+
+m4_scope_dbh(dbh_set_bt_compare)
+
+m4_when_dbopen(dbh_set_bt_compare, corrupt)
+
+m4_return(dbh_set_bt_compare, std)
+
+m4_parambegin
+m4_param(bt_compare_fcn, [dnl
+The m4_arg(bt_compare_fcn) function is the application-specified Btree
+comparison function. The comparison function takes three parameters:
+m4_tagbegin
+m4_tag(m4_arg(db), [dnl
+The m4_arg(db) parameter is the enclosing database handle.])
+m4_tag(m4_arg(dbt1), [dnl
+The m4_arg(dbt1) parameter is the m4_ref(Dbt) representing the
+application supplied key.])
+m4_tag(m4_arg(dbt2), [dnl
+The m4_arg(dbt2) parameter is the m4_ref(Dbt) representing the
+current tree's key.])
+m4_tagend])
+
+m4_p([dnl
+The m4_arg(bt_compare_fcn) function must return an integer value less
+than, equal to, or greater than zero if the first key parameter is
+considered to be respectively less than, equal to, or greater than the
+second key parameter. In addition, the comparison function must cause
+the keys in the database to be m4_italic(well-ordered). The comparison
+function must correctly handle any key values used by the application
+(possibly including zero-length keys). In addition, when Btree key
+prefix comparison is being performed (see m4_ref(dbh_set_bt_prefix) for
+more information), the comparison routine may be passed a prefix of any
+database key. The m4_arg(data) and m4_arg(size) fields of the
+m4_ref(Dbt) are the only fields that may be used for the purposes of
+this comparison, and no particular alignment of the memory to which by
+the m4_arg(data) field refers may be assumed.])
+m4_paramend
+
+m4_err(dbh_set_bt_compare,
+einval, [the method was called after m4_ref(dbh_open) was called])
+
+m4_seealso(Db)
+m4_page_footer
diff --git a/db/docs_src/db/db_set_bt_minkey.so b/db/docs_src/db/db_set_bt_minkey.so
new file mode 100644
index 000000000..80fdecaff
--- /dev/null
+++ b/db/docs_src/db/db_set_bt_minkey.so
@@ -0,0 +1,54 @@
+m4_comment([$Id: db_set_bt_minkey.so,v 10.38 2004/09/28 15:04:19 bostic Exp $])
+
+define(M4PAGELOCAL, [dbh_set_bt_minkey, dbh_get_bt_minkey])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbh_set_bt_minkey),
+ifelse(M4API, C_API, [dnl
+int
+DB-__GT__set_bt_minkey(DB *db, u_int32_t bt_minkey);
+m4_blank
+int
+DB-__GT__get_bt_minkey(DB *db, u_int32_t *bt_minkeyp);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+Db::set_bt_minkey(u_int32_t bt_minkey);
+m4_blank
+int
+Db::get_bt_minkey(u_int32_t *bt_minkeyp);
+]))
+
+m4_p([dnl
+Set the minimum number of key/data pairs intended to be stored on any
+single Btree leaf page.])
+
+m4_p([dnl
+This value is used to determine if key or data items will be stored on
+overflow pages instead of Btree leaf pages. For more information on
+the specific algorithm used, see m4_link(M4RELDIR/ref/am_conf/bt_minkey,
+[Minimum keys per page]). The m4_arg(bt_minkey) value specified must
+be at least 2; if m4_arg(bt_minkey) is not explicitly set, a value of
+2 is used.])
+
+m4_scope_db(dbh_set_bt_minkey)
+
+m4_when_dbopen(dbh_set_bt_minkey, ignored)
+
+m4_return(dbh_set_bt_minkey, std)
+
+m4_parambegin
+m4_param(bt_minkey, [dnl
+The m4_arg(bt_minkey) parameter is the minimum number of key/data pairs
+intended to be stored on any single Btree leaf page.])
+m4_paramend
+
+m4_err(dbh_set_bt_minkey,
+einval, [the method was called after m4_ref(dbh_open) was called])
+
+m4_pf_getter(dbh_get_bt_minkey,
+[minimum number of key/data pairs intended to be stored on any single Btree
+leaf page],, bt_minkeyp)
+
+m4_seealso(Db)
+m4_page_footer
diff --git a/db/docs_src/db/db_set_bt_prefix.so b/db/docs_src/db/db_set_bt_prefix.so
new file mode 100644
index 000000000..27bbf19ed
--- /dev/null
+++ b/db/docs_src/db/db_set_bt_prefix.so
@@ -0,0 +1,87 @@
+m4_comment([$Id: db_set_bt_prefix.so,v 10.48 2004/08/13 03:38:56 bostic Exp $])
+
+define(M4PAGELOCAL, dbh_set_bt_prefix)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbh_set_bt_prefix),
+ifelse(M4API, C_API, [dnl
+int
+DB-__GT__set_bt_prefix(DB *db,
+ size_t (*bt_prefix_fcn)(DB *, const DBT *, const DBT *));
+])
+ifelse(M4API, CXX_API, [dnl
+extern "C" {
+ typedef size_t (*bt_prefix_fcn_type)(DB *, const DBT *, const DBT *);
+};
+int
+Db::set_bt_prefix(bt_prefix_fcn_type bt_prefix_fcn);
+]))
+
+define(__prefix_param, [dnl
+ifelse([$1], internal, [dnl
+The m4_arg(bt_prefix_fcn) function is the application-specific Btree
+prefix function. The prefix function takes three parameters:
+m4_tagbegin
+m4_tag(m4_arg(db), [dnl
+The m4_arg(db) parameter is the enclosing database handle.])
+m4_tag(m4_arg(dbt1), [dnl
+The m4_arg(dbt1) parameter is a m4_ref(Dbt) representing a database key.])
+m4_tag(m4_arg(dbt2), [dnl
+The m4_arg(dbt2) parameter is a m4_ref(Dbt) representing a database key.])
+m4_tagend],[dnl
+m4_parambegin
+m4_param(db, [dnl
+The m4_arg(db) parameter is the enclosing database handle.])
+m4_param(dbt1, [dnl
+The m4_arg(dbt1) parameter is a m4_ref(Dbt) representing a database key.])
+m4_param(dbt2, [dnl
+The m4_arg(dbt2) parameter is a m4_ref(Dbt) representing a database key.])
+m4_paramend])])
+
+define(__prefix_return, [dnl
+The m4_arg(bt_prefix_fcn) function must return the number of bytes of
+the second key parameter that would be required by the Btree key
+comparison function to determine the second key parameter's ordering
+relationship with respect to the first key parameter. If the two keys
+are equal, the key length should be returned. The prefix function must
+correctly handle any key values used by the application (possibly
+including zero-length keys). The m4_arg(data) and m4_arg(size) fields
+of the m4_ref(Dbt) are the only fields that may be used for the purposes
+of this determination, and no particular alignment of the memory to
+which the m4_arg(data) field refers may be assumed.])
+
+m4_p([dnl
+Set the Btree prefix function. The prefix function is used to determine
+the amount by which keys stored on the Btree internal pages can be
+safely truncated without losing their uniqueness. See the
+m4_link(M4RELDIR/ref/am_conf/bt_prefix, Btree prefix comparison) section
+of the m4_db Reference Guide for more details about how this works. The
+usefulness of this is data-dependent, but can produce significantly
+reduced tree sizes and search times in some data sets.])
+
+m4_p([dnl
+If no prefix function or key comparison function is specified by the
+application, a default lexical comparison function is used as the prefix
+function. If no prefix function is specified and a key comparison
+function is specified, no prefix function is used. It is an error to
+specify a prefix function without also specifying a Btree key comparison
+function.])
+
+m4_scope_dbh(dbh_set_bt_prefix)
+
+m4_when_dbopen(dbh_set_bt_prefix, corrupt)
+
+m4_return(dbh_set_bt_prefix, std)
+
+m4_parambegin
+m4_param(bt_prefix_fcn, [dnl
+__prefix_param(internal)
+m4_p([__prefix_return])])
+
+m4_paramend
+
+m4_err(dbh_set_bt_prefix,
+einval, [the method was called after m4_ref(dbh_open) was called])
+
+m4_seealso(Db)
+m4_page_footer
diff --git a/db/docs_src/db/db_set_cachesize.so b/db/docs_src/db/db_set_cachesize.so
new file mode 100644
index 000000000..0f5d88db4
--- /dev/null
+++ b/db/docs_src/db/db_set_cachesize.so
@@ -0,0 +1,4 @@
+m4_comment([$Id: db_set_cachesize.so,v 10.21 2002/08/18 21:15:53 bostic Exp $])
+
+define(M4INTERFACE, dbh_set_cachesize)
+include(env/env_set_cachesize.so)
diff --git a/db/docs_src/db/db_set_dup_compare.so b/db/docs_src/db/db_set_dup_compare.so
new file mode 100644
index 000000000..d556098ef
--- /dev/null
+++ b/db/docs_src/db/db_set_dup_compare.so
@@ -0,0 +1,83 @@
+m4_comment([$Id: db_set_dup_compare.so,v 10.50 2004/08/13 03:38:56 bostic Exp $])
+
+define(M4PAGELOCAL, dbh_set_dup_compare)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbh_set_dup_compare),
+ifelse(M4API, C_API, [dnl
+int
+DB-__GT__set_dup_compare(DB *db,
+ int (*dup_compare_fcn)(DB *, const DBT *, const DBT *));
+])
+ifelse(M4API, CXX_API, [dnl
+extern "C" {
+ typedef int (*dup_compare_fcn_type)(DB *, const DBT *, const DBT *);
+};
+int
+Db::set_dup_compare(dup_compare_fcn_type dup_compare_fcn);
+]))
+
+define(__compareDuplicates_param, [dnl
+ifelse([$1], internal, [dnl
+The m4_arg(dup_compare_fcn) function is the application-specified
+duplicate data item comparison function. The function takes three
+arguments:
+m4_tagbegin
+m4_tag(m4_arg(db), [dnl
+The m4_arg(db) parameter is the enclosing database handle.])
+m4_tag(m4_arg(dbt1), [dnl
+The m4_arg(dbt1) parameter is a m4_ref(Dbt) representing the application
+supplied data item.])
+m4_tag(m4_arg(dbt2), [dnl
+The m4_arg(dbt2) parameter is a m4_ref(Dbt) representing the current
+tree's data item.])
+m4_tagend],[dnl
+m4_parambegin
+m4_param(db, [dnl
+The m4_arg(db) parameter is the enclosing database handle.])
+m4_param(dbt1, [dnl
+The m4_arg(dbt1) parameter is a m4_ref(Dbt) representing the application
+supplied data item.])
+m4_param(dbt2, [dnl
+The m4_arg(dbt2) parameter is a m4_ref(Dbt) representing the current
+tree's data item.])
+m4_paramend])])
+
+define(__compareDuplicates_return, [dnl
+The m4_arg(dup_compare_fcn) function must return an integer value less
+than, equal to, or greater than zero if the first data item parameter
+is considered to be respectively less than, equal to, or greater than
+the second data item parameter. In addition, the comparison function
+must cause the data items in the set to be m4_italic(well-ordered). The
+comparison function must correctly handle any data item values used by
+the application (possibly including zero-length data items). The
+m4_arg(data) and m4_arg(size) fields of the m4_ref(Dbt) are the only
+fields that may be used for the purposes of this comparison, and no
+particular alignment of the memory to which the m4_arg(data) field
+refers may be assumed.])
+
+m4_p([dnl
+Set the duplicate data item comparison function. The comparison
+function is called whenever it is necessary to compare a data item
+specified by the application with a data item currently stored in the
+database. Calling m4_ref(dbh_set_dup_compare) implies calling
+m4_ref(dbh_set_flags) with the m4_ref(DB_DUPSORT) flag.])
+
+m4_p([dnl
+If no comparison function is specified, the data items are compared
+lexically, with shorter data items collating before longer data items.])
+
+m4_when_dbopen(dbh_set_dup_compare, corrupt)
+
+m4_return(dbh_set_dup_compare, std)
+
+m4_parambegin
+m4_param(dup_compare_fcn, [dnl
+__compareDuplicates_param(internal)
+m4_p([__compareDuplicates_return])])
+m4_paramend
+
+m4_err(dbh_set_dup_compare, einval)
+
+m4_seealso(Db)
+m4_page_footer
diff --git a/db/docs_src/db/db_set_encrypt.so b/db/docs_src/db/db_set_encrypt.so
new file mode 100644
index 000000000..aa2c03029
--- /dev/null
+++ b/db/docs_src/db/db_set_encrypt.so
@@ -0,0 +1,4 @@
+m4_comment([$Id: db_set_encrypt.so,v 10.3 2002/08/18 21:15:54 bostic Exp $])
+
+define(M4INTERFACE, dbh_set_encrypt)
+include(env/env_set_encrypt.so)
diff --git a/db/docs_src/db/db_set_errcall.so b/db/docs_src/db/db_set_errcall.so
new file mode 100644
index 000000000..c39bc2a53
--- /dev/null
+++ b/db/docs_src/db/db_set_errcall.so
@@ -0,0 +1,4 @@
+m4_comment([$Id: db_set_errcall.so,v 10.10 2002/08/18 21:15:54 bostic Exp $])
+
+define(M4INTERFACE, dbh_set_errcall)
+include(env/env_set_errcall.so)
diff --git a/db/docs_src/db/db_set_errfile.so b/db/docs_src/db/db_set_errfile.so
new file mode 100644
index 000000000..516acc1da
--- /dev/null
+++ b/db/docs_src/db/db_set_errfile.so
@@ -0,0 +1,4 @@
+m4_comment([$Id: db_set_errfile.so,v 10.10 2002/08/18 21:15:54 bostic Exp $])
+
+define(M4INTERFACE, dbh_set_errfile)
+include(env/env_set_errfile.so)
diff --git a/db/docs_src/db/db_set_error_stream.so b/db/docs_src/db/db_set_error_stream.so
new file mode 100644
index 000000000..46bb30870
--- /dev/null
+++ b/db/docs_src/db/db_set_error_stream.so
@@ -0,0 +1,4 @@
+m4_comment([$Id: db_set_error_stream.so,v 10.2 2002/08/18 21:15:54 bostic Exp $])
+
+define(M4INTERFACE, dbh_set_error_stream)
+include(env/env_set_error_stream.so)
diff --git a/db/docs_src/db/db_set_errpfx.so b/db/docs_src/db/db_set_errpfx.so
new file mode 100644
index 000000000..0b776b447
--- /dev/null
+++ b/db/docs_src/db/db_set_errpfx.so
@@ -0,0 +1,4 @@
+m4_comment([$Id: db_set_errpfx.so,v 10.10 2002/08/18 21:15:55 bostic Exp $])
+
+define(M4INTERFACE, dbh_set_errpfx)
+include(env/env_set_errpfx.so)
diff --git a/db/docs_src/db/db_set_feedback.so b/db/docs_src/db/db_set_feedback.so
new file mode 100644
index 000000000..46938467e
--- /dev/null
+++ b/db/docs_src/db/db_set_feedback.so
@@ -0,0 +1,4 @@
+m4_comment([$Id: db_set_feedback.so,v 10.29 2003/10/19 01:27:11 bostic Exp $])
+
+define(M4INTERFACE, dbh_set_feedback)
+include(env/env_set_feedback.so)
diff --git a/db/docs_src/db/db_set_flags.so b/db/docs_src/db/db_set_flags.so
new file mode 100644
index 000000000..fc289bf17
--- /dev/null
+++ b/db/docs_src/db/db_set_flags.so
@@ -0,0 +1,266 @@
+m4_comment([$Id: db_set_flags.so,v 10.68 2004/09/28 15:04:19 bostic Exp $])
+
+define(M4PAGELOCAL,
+ [dbh_set_flags, dbh_get_flags, DB_CHKSUM, DB_DUP, DB_DUPSORT,
+ DB_ENCRYPT, DB_INORDER, DB_RECNUM, DB_REVSPLITOFF, DB_RENUMBER,
+ DB_SNAPSHOT, DB_TXN_NOT_DURABLE])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbh_set_flags),
+ifelse(M4API, C_API, [dnl
+int
+DB-__GT__set_flags(DB *db, u_int32_t flags);
+m4_blank
+int
+DB-__GT__get_flags(DB *db, u_int32_t *flagsp);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+Db::set_flags(u_int32_t flags);
+m4_blank
+int Db::get_flags(u_int32_t *flagsp);
+]))
+
+define(m4_scope_db_flags, [m4_p([dnl
+Calling m4_ref(dbh_set_flags) with the m4_ref($1) flag affects the
+database, including all threads of control accessing the database.])])
+define(m4_scope_dbh_flags, [m4_p([dnl
+Calling m4_ref(dbh_set_flags) with the m4_ref($1) flag only affects the
+specified m4_ref(Db) handle (and any other m4_db handles opened within
+the scope of that handle).])])
+
+define(m4_db_flag_open, [m4_p([dnl
+If the database already exists when m4_ref(dbh_open) is called, the $1
+flag
+ifelse($2, error, [must be the same as the existing database or an error
+will be returned.])
+ifelse($2, ignored, [will be ignored.])])])
+
+define(m4_dupflag, [dnl
+m4_tag(m4_idef(DB_DUP), [dnl
+Permit duplicate data items in the database; that is, insertion when the
+key of the key/data pair being inserted already exists in the database
+will be successful. The ordering of duplicates in the database is
+determined by the order of insertion, unless the ordering is otherwise
+specified by use of a cursor operation.
+m4_p([dnl
+The m4_ref(DB_DUPSORT) flag is preferred to m4_ref(DB_DUP) for
+performance reasons. The m4_ref(DB_DUP) flag should only be used by
+applications wanting to order duplicate data items manually.])
+m4_scope_db_flags(DB_DUP)
+m4_db_flag_open(DB_DUP, error)
+ifelse([$1],,, m4_p([$1]))])])
+
+define(m4_dupsortflag, [dnl
+m4_tag(m4_idef(DB_DUPSORT), [dnl
+Permit duplicate data items in the database; that is, insertion when the
+key of the key/data pair being inserted already exists in the database
+will be successful. The ordering of duplicates in the database is
+determined by the duplicate comparison function. If the application
+does not specify a comparison function using the
+m4_refT(dbh_set_dup_compare), a default lexical comparison will be used.
+It is an error to specify both m4_ref(DB_DUPSORT) and m4_ref(DB_RECNUM).
+m4_scope_db_flags(DB_DUPSORT)
+m4_db_flag_open(DB_DUPSORT, error)])])
+
+m4_p([dnl
+Configure a database. Calling m4_ref(dbh_set_flags) is additive; there
+is no way to clear flags.])
+
+m4_when_dbopen(dbh_set_flags)
+
+m4_return(dbh_set_flags, std)
+
+m4_parambegin
+m4_param(flags, [dnl
+m4_sf_or_may
+
+m4_section(General)
+m4_p([dnl
+The following flags may be specified for any m4_db access method:])
+
+m4_tagbegin
+
+m4_idefz([database page @checksum])
+m4_tag(m4_idef(DB_CHKSUM), [dnl
+Do checksum verification of pages read into the cache from the backing
+filestore. m4_db uses the SHA1 Secure Hash Algorithm
+if encryption is configured and a general hash algorithm if it is not.
+m4_scope_dbh_flags(DB_CHKSUM)
+m4_db_flag_open(DB_CHKSUM, ignored)
+If creating additional databases in a file, the checksum behavior specified
+must be consistent with the existing databases in the file or an error will
+be returned.])
+
+m4_idefz([database @encryption])
+m4_tag(m4_idef(DB_ENCRYPT), [dnl
+Encrypt the database using the cryptographic password specified to the
+m4_ref(dbenv_set_encrypt) or m4_refT(dbh_set_encrypt)s.
+m4_scope_dbh_flags(DB_ENCRYPT)
+m4_db_flag_open(DB_ENCRYPT, error)
+If creating additional databases in a file, the encryption behavior specified
+must be consistent with the existing databases in the file or an error will
+be returned.
+m4_p([dnl
+Encrypted databases are not portable between machines of different byte
+orders, that is, encrypted databases created on big-endian machines
+cannot be read on little-endian machines, and vice versa.])])
+
+m4_idefz([turn off database @durability])
+m4_tag(m4_idef(DB_TXN_NOT_DURABLE), [dnl
+If set, m4_db will not write log records for this database. This means
+that updates of this database exhibit the ACI (atomicity, consistency,
+and isolation) properties, but not D (durability); that is, database
+integrity will be maintained, but if the application or system fails,
+integrity will not persist. The database file must be verified and/or
+restored from backup after a failure. In order to ensure integrity
+after application shut down, the database handles must be closed without
+specifying m4_ref(DB_NOSYNC), or all database changes must be flushed
+from the database environment cache using either the
+m4_ref(txn_checkpoint) or m4_refT(memp_sync)s. All database handles for
+a single physical file must set m4_ref(DB_TXN_NOT_DURABLE), including
+database handles for different databases in a physical file.
+m4_scope_dbh_flags(DB_TXN_NOT_DURABLE)])
+
+m4_tagend
+
+m4_section(Btree)
+m4_p([dnl
+The following flags may be specified for the Btree access method:])
+
+m4_tagbegin
+m4_idefz([@duplicate data items])
+m4_dupflag([It is an error to specify both m4_ref(DB_DUP) and m4_ref(DB_RECNUM).])
+
+m4_idefz([sorted @duplicate data items])
+m4_dupsortflag
+
+m4_idefz([accessing Btree records by @record number])
+m4_tag(m4_idef(DB_RECNUM), [dnl
+Support retrieval from the Btree using record numbers. For more
+information, see the m4_ref(DB_SET_RECNO) flag to the m4_ref(dbh_get)
+and m4_ref(dbc_get) methods.
+m4_p([dnl
+Logical record numbers in Btree databases are mutable in the face of
+record insertion or deletion. See the m4_ref(DB_RENUMBER) flag in the
+Recno access method information for further discussion.])
+m4_p([dnl
+Maintaining record counts within a Btree introduces a serious point of
+contention, namely the page locations where the record counts are
+stored. In addition, the entire database must be locked during both
+insertions and deletions, effectively single-threading the database for
+those operations. Specifying m4_ref(DB_RECNUM) can result in serious
+performance degradation for some applications and data sets.])
+m4_p([dnl
+It is an error to specify both m4_ref(DB_DUP) and m4_ref(DB_RECNUM).])
+m4_scope_db_flags(DB_RECNUM)
+m4_db_flag_open(DB_RECNUM, error)])
+
+m4_idefz([turn off @reverse splits in Btree databases],
+[turn off reverse @splits in Btree databases])
+m4_tag(m4_idef(DB_REVSPLITOFF), [dnl
+Turn off reverse splitting in the Btree. As pages are emptied in a
+database, the m4_db Btree implementation attempts to coalesce empty pages
+into higher-level pages in order to keep the database as small as possible
+and minimize search time. This can hurt performance in applications
+with cyclical data demands; that is, applications where the database grows
+and shrinks repeatedly. For example, because m4_db does page-level
+locking, the maximum level of concurrency in a database of two pages is far
+smaller than that in a database of 100 pages, so a database that has
+shrunk to a minimal size can cause severe deadlocking when a new cycle of
+data insertion begins.
+m4_scope_dbh_flags(DB_REVSPLITOFF)])
+
+m4_tagend
+
+m4_section(Hash)
+m4_p([dnl
+The following flags may be specified for the Hash access method:])
+
+m4_tagbegin
+m4_dupflag
+m4_dupsortflag
+m4_tagend
+
+m4_section(Queue)
+m4_p([dnl
+The following flags may be specified for the Queue access method:])
+
+m4_tagbegin
+m4_idefz([@ordered retrieval of records from Queue databases])
+m4_tag(m4_idef(DB_INORDER), [dnl
+The m4_ref(DB_INORDER) flag modifies the operation of the
+m4_ref(DB_CONSUME) or m4_ref(DB_CONSUME_WAIT) flags to m4_ref(dbh_get)
+to return key/data pairs in order. That is, they will always return
+the key/data item from the head of the queue.
+
+m4_p([dnl
+The default behavior of queue databases is optimized for multiple
+readers, and does not guarantee that record will be retrieved in the
+order they are added to the queue. Specifically, if a writing thread
+adds multiple records to an empty queue, reading threads may skip some
+of the initial records when the next m4_ref(dbh_get) call returns.])
+
+m4_p([dnl
+This flag modifies the m4_ref(dbh_get) call to verify that the record
+being returned is in fact the head of the queue. This will increase
+contention and reduce concurrency when there are many reading threads.])
+
+m4_scope_dbh_flags(DB_INORDER)])
+m4_tagend
+
+m4_section(Recno)
+m4_p([dnl
+The following flags may be specified for the Recno access method:])
+
+m4_tagbegin
+m4_idefz([@renumbering records in Recno databases])
+m4_tag(m4_idef(DB_RENUMBER), [dnl
+Specifying the m4_ref(DB_RENUMBER) flag causes the logical record
+numbers to be mutable, and change as records are added to and deleted
+from the database. For example, the deletion of record number 4 causes
+records numbered 5 and greater to be renumbered downward by one. If a
+cursor was positioned to record number 4 before the deletion, it will
+refer to the new record number 4, if any such record exists, after the
+deletion. If a cursor was positioned after record number 4 before the
+deletion, it will be shifted downward one logical record, continuing to
+refer to the same record as it did before.
+m4_p([dnl
+Using the m4_ref(dbh_put) or m4_ref(dbc_put) interfaces to create new
+records will cause the creation of multiple records if the record number
+is more than one greater than the largest record currently in the
+database. For example, creating record 28, when record 25 was previously
+the last record in the database, will create records 26 and 27 as well as
+28. Attempts to retrieve records that were created in this manner will
+result in an error return of m4_ref(DB_KEYEMPTY).])
+m4_p([dnl
+If a created record is not at the end of the database, all records
+following the new record will be automatically renumbered upward by one.
+For example, the creation of a new record numbered 8 causes records
+numbered 8 and greater to be renumbered upward by one. If a cursor was
+positioned to record number 8 or greater before the insertion, it will be
+shifted upward one logical record, continuing to refer to the same record
+as it did before.])
+m4_p([dnl
+For these reasons, concurrent access to a Recno database with the
+m4_ref(DB_RENUMBER) flag specified may be largely meaningless, although
+it is supported.])
+m4_scope_db_flags(DB_RENUMBER)
+m4_db_flag_open(DB_RENUMBER, error)])
+
+m4_idefz([pre-loading @text files into Recno databases])
+m4_tag(m4_idef(DB_SNAPSHOT), [dnl
+This flag specifies that any specified m4_arg(re_source) file be read
+in its entirety when m4_ref(dbh_open) is called. If this flag is not
+specified, the m4_arg(re_source) file may be read lazily.
+m4_scope_dbh_flags(DB_SNAPSHOT)])
+
+m4_tagend])
+m4_paramend
+
+m4_err(dbh_set_flags, einval)
+
+m4_pf_getter(dbh_get_flags, current flags,, flagsp)
+
+m4_seealso(Db)
+m4_page_footer
diff --git a/db/docs_src/db/db_set_h_compare.so b/db/docs_src/db/db_set_h_compare.so
new file mode 100644
index 000000000..f55eb328d
--- /dev/null
+++ b/db/docs_src/db/db_set_h_compare.so
@@ -0,0 +1,66 @@
+m4_comment([$Id: db_set_h_compare.so,v 1.1 2006/10/27 00:28:44 bostic Exp $])
+
+define(M4PAGELOCAL, dbh_set_h_compare)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbh_set_h_compare),
+ifelse(M4API, C_API, [dnl
+int
+DB-__GT__set_h_compare(DB *db,
+ int (*compare_fcn)(DB *db, const DBT *dbt1, const DBT *dbt2));
+])
+ifelse(M4API, CXX_API, [dnl
+extern "C" {
+ typedef int (*compare_fcn_type)(DB *db, const DBT *dbt1, const DBT *dbt2);
+};
+int
+Db::set_h_compare(compare_fcn_type compare_fcn);
+]))
+
+m4_p([dnl
+Set the Hash key comparison function. The comparison function is called
+whenever it is necessary to compare a key specified by the application
+with a key currently stored in the database.])
+
+m4_p([dnl
+If no comparison function is specified, a byte-by-byte comparison is
+performed.])
+
+m4_scope_dbh(dbh_set_h_compare)
+
+m4_when_dbopen(dbh_set_h_compare, corrupt)
+
+m4_return(dbh_set_h_compare, std)
+
+m4_parambegin
+m4_param(compare_fcn, [dnl
+The m4_arg(compare_fcn) function is the application-specified Hash
+comparison function. The comparison function takes three parameters:
+m4_tagbegin
+m4_tag(m4_arg(db), [dnl
+The m4_arg(db) parameter is the enclosing database handle.])
+m4_tag(m4_arg(dbt1), [dnl
+The m4_arg(dbt1) parameter is the m4_ref(Dbt) representing the
+application supplied key.])
+m4_tag(m4_arg(dbt2), [dnl
+The m4_arg(dbt2) parameter is the m4_ref(Dbt) representing the
+current database's key.])
+m4_tagend])
+
+m4_p([dnl
+The m4_arg(compare_fcn) function must return an integer value less
+than, equal to, or greater than zero if the first key parameter is
+considered to be respectively less than, equal to, or greater than the
+second key parameter. The comparison function must correctly handle any
+key values used by the application (possibly including zero-length
+keys). The m4_arg(data) and m4_arg(size) fields of the m4_ref(Dbt) are
+the only fields that may be used for the purposes of this comparison,
+and no particular alignment of the memory to which by the m4_arg(data)
+field refers may be assumed.])
+m4_paramend
+
+m4_err(dbh_set_h_compare,
+einval, [the method was called after m4_ref(dbh_open) was called])
+
+m4_seealso(Db)
+m4_page_footer
diff --git a/db/docs_src/db/db_set_h_ffactor.so b/db/docs_src/db/db_set_h_ffactor.so
new file mode 100644
index 000000000..12d25868d
--- /dev/null
+++ b/db/docs_src/db/db_set_h_ffactor.so
@@ -0,0 +1,51 @@
+m4_comment([$Id: db_set_h_ffactor.so,v 10.37 2004/09/28 15:04:19 bostic Exp $])
+
+define(M4PAGELOCAL, [dbh_set_h_ffactor, dbh_get_h_ffactor])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbh_set_h_ffactor),
+ifelse(M4API, C_API, [dnl
+int
+DB-__GT__set_h_ffactor(DB *db, u_int32_t h_ffactor);
+int
+m4_blank
+DB-__GT__get_h_ffactor(DB *db, u_int32_t *h_ffactorp);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+Db::set_h_ffactor(u_int32_t h_ffactor);
+m4_blank
+int Db::get_h_ffactor(u_int32_t *h_ffactorp);
+]))
+
+m4_p([dnl
+Set the desired density within the hash table. If no value is
+specified, the fill factor will be selected dynamically as pages are
+filled.])
+
+m4_scope_db(dbh_set_h_ffactor)
+
+m4_when_dbopen(dbh_set_h_ffactor, ignored)
+
+m4_return(dbh_set_h_ffactor, std)
+
+m4_parambegin
+m4_param(h_ffactor, [dnl
+The m4_arg(h_ffactor) parameter is the desired density within the hash table.])
+m4_p([dnl
+The density is an approximation of the number of keys allowed to
+accumulate in any one bucket, determining when the hash table grows or
+shrinks. If you know the average sizes of the keys and data in your
+data set, setting the fill factor can enhance performance. A reasonable
+rule computing fill factor is to set it to the following:])
+m4_indent([dnl
+(pagesize - 32) / (average_key_size + average_data_size + 8)])
+m4_paramend
+
+m4_err(dbh_set_h_ffactor,
+einval, [the method was called after m4_ref(dbh_open) was called])
+
+m4_pf_getter(dbh_get_h_ffactor, hash table density,, h_ffactorp)
+
+m4_seealso(Db)
+m4_page_footer
diff --git a/db/docs_src/db/db_set_h_hash.so b/db/docs_src/db/db_set_h_hash.so
new file mode 100644
index 000000000..87cad94b9
--- /dev/null
+++ b/db/docs_src/db/db_set_h_hash.so
@@ -0,0 +1,49 @@
+m4_comment([$Id: db_set_h_hash.so,v 10.40 2004/08/13 03:38:56 bostic Exp $])
+
+define(M4PAGELOCAL, dbh_set_h_hash)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbh_set_h_hash),
+ifelse(M4API, C_API, [dnl
+int
+DB-__GT__set_h_hash(DB *db,
+ u_int32_t (*h_hash_fcn)(DB *, const void *bytes, u_int32_t length));
+])
+ifelse(M4API, CXX_API, [dnl
+extern "C" {
+ typedef u_int32_t (*h_hash_fcn_type)
+ (DB *, const void *bytes, u_int32_t length);
+};
+int
+Db::set_h_hash(h_hash_fcn_type h_hash_fcn);
+]))
+
+m4_p([dnl
+Set a user-defined hash function; if no hash function is specified, a
+default hash function is used. Because no hash function performs
+equally well on all possible data, the user may find that the built-in
+hash function performs poorly with a particular data set.])
+
+m4_scope_dbh(dbh_set_h_hash)
+
+m4_when_dbopen(dbh_set_h_hash, corrupt)
+
+m4_return(dbh_set_h_hash, std)
+
+m4_parambegin
+m4_param(h_hash_fcn, [dnl
+The m4_arg(h_hash_fcn) parameter is the application-specified hash function.
+m4_p([dnl
+Application-specified hash functions take a pointer to a byte string and
+a length as parameters, and return a value of type m4_bold(u_int32_t).
+The hash function must handle any key values used by the application
+(possibly including zero-length keys).])])
+m4_paramend
+
+m4_err(dbh_set_h_hash,
+einval, [the method was called after m4_ref(dbh_open) was called; the
+specified hash function differs from the hash function with which the
+database was created])
+
+m4_seealso(Db)
+m4_page_footer
diff --git a/db/docs_src/db/db_set_h_nelem.so b/db/docs_src/db/db_set_h_nelem.so
new file mode 100644
index 000000000..fba9a25af
--- /dev/null
+++ b/db/docs_src/db/db_set_h_nelem.so
@@ -0,0 +1,51 @@
+m4_comment([$Id: db_set_h_nelem.so,v 10.36 2004/09/28 15:04:19 bostic Exp $])
+
+define(M4PAGELOCAL, [dbh_set_h_nelem, dbh_get_h_nelem])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbh_set_h_nelem),
+ifelse(M4API, C_API, [dnl
+int
+DB-__GT__set_h_nelem(DB *db, u_int32_t h_nelem);
+m4_blank
+int
+DB-__GT__get_h_nelem(DB *db, u_int32_t *h_nelemp);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+Db::set_h_nelem(u_int32_t h_nelem);
+m4_blank
+int
+Db::get_h_nelem(u_int32_t *h_nelemp);
+]))
+
+m4_p([dnl
+Set an estimate of the final size of the hash table.])
+
+m4_p([dnl
+In order for the estimate to be used when creating the database, the
+m4_ref(dbh_set_h_ffactor) method must also be called. If the estimate
+or fill factor are not set or are set too low, hash tables will still
+expand gracefully as keys are entered, although a slight performance
+degradation may be noticed.])
+
+m4_scope_db(dbh_set_h_nelem)
+
+m4_when_dbopen(dbh_set_h_nelem, ignored)
+
+m4_return(dbh_set_h_nelem, std)
+
+m4_parambegin
+m4_param(h_nelem, [dnl
+The m4_arg(h_nelem) parameter is an estimate of the final size of the
+hash table.])
+m4_paramend
+
+m4_err(dbh_set_h_nelem,
+einval, [the method was called after m4_ref(dbh_open) was called])
+
+m4_pf_getter(dbh_get_h_nelem,
+[estimate of the final size of the hash table],, h_nelemp)
+
+m4_seealso(Db)
+m4_page_footer
diff --git a/db/docs_src/db/db_set_lorder.so b/db/docs_src/db/db_set_lorder.so
new file mode 100644
index 000000000..7b5417cc4
--- /dev/null
+++ b/db/docs_src/db/db_set_lorder.so
@@ -0,0 +1,57 @@
+m4_comment([$Id: db_set_lorder.so,v 10.38 2004/09/28 15:04:19 bostic Exp $])
+
+define(M4PAGELOCAL, [dbh_set_lorder, dbh_get_lorder])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbh_set_lorder),
+ifelse(M4API, C_API, [dnl
+int
+DB-__GT__set_lorder(DB *db, int lorder);
+m4_blank
+int
+DB-__GT__get_lorder(DB *db, int *lorderp);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+Db::set_lorder(int lorder);
+m4_blank
+int
+Db::get_lorder(int *lorderp);
+]))
+
+m4_p([dnl
+Set the byte order for integers in the stored database metadata. The
+host byte order of the machine where the m4_db library was compiled will
+be used if no byte order is set.])
+
+m4_p([m4_bold([dnl
+The access methods provide no guarantees about the byte ordering of the
+application data stored in the database, and applications are responsible
+for maintaining any necessary ordering.])])
+
+m4_scope_db(dbh_set_lorder)
+
+m4_when_dbopen(dbh_set_lorder, ignored)
+If creating additional databases in a single physical file, information
+specified to m4_ref(dbh_set_lorder) will be ignored and the byte order
+of the existing databases will be used.
+
+m4_return(dbh_set_lorder, std)
+
+m4_parambegin
+m4_param(lorder, [dnl
+The m4_arg(lorder) parameter should represent the byte order as an
+integer; for example, big endian order is the number 4,321, and little
+endian order is the number 1,234.])
+m4_paramend
+
+m4_err(dbh_set_lorder,
+einval, [the method was called after m4_ref(dbh_open) was called])
+
+m4_pf_getter(dbh_get_lorder,
+[database byte order; a byte order of 4,321 indicates a big endian
+order, and a byte order of 1,234 indicates a little endian order],
+[database byte order], lorderp)
+
+m4_seealso(Db)
+m4_page_footer
diff --git a/db/docs_src/db/db_set_msg_stream.so b/db/docs_src/db/db_set_msg_stream.so
new file mode 100644
index 000000000..a0722ddd4
--- /dev/null
+++ b/db/docs_src/db/db_set_msg_stream.so
@@ -0,0 +1,4 @@
+m4_comment([$Id: db_set_msg_stream.so,v 1.1 2004/07/14 19:30:39 bostic Exp $])
+
+define(M4INTERFACE, dbh_set_message_stream)
+include(env/env_set_msg_stream.so)
diff --git a/db/docs_src/db/db_set_msgcall.so b/db/docs_src/db/db_set_msgcall.so
new file mode 100644
index 000000000..b943f1300
--- /dev/null
+++ b/db/docs_src/db/db_set_msgcall.so
@@ -0,0 +1,4 @@
+m4_comment([$Id: db_set_msgcall.so,v 10.1 2004/04/16 19:01:56 bostic Exp $])
+
+define(M4INTERFACE, dbh_set_msgcall)
+include(env/env_set_msgcall.so)
diff --git a/db/docs_src/db/db_set_msgfile.so b/db/docs_src/db/db_set_msgfile.so
new file mode 100644
index 000000000..2cc127990
--- /dev/null
+++ b/db/docs_src/db/db_set_msgfile.so
@@ -0,0 +1,4 @@
+m4_comment([$Id: db_set_msgfile.so,v 1.1 2004/07/14 19:30:39 bostic Exp $])
+
+define(M4INTERFACE, dbh_set_msgfile)
+include(env/env_set_msgfile.so)
diff --git a/db/docs_src/db/db_set_pagesize.so b/db/docs_src/db/db_set_pagesize.so
new file mode 100644
index 000000000..7d1dbf4e1
--- /dev/null
+++ b/db/docs_src/db/db_set_pagesize.so
@@ -0,0 +1,54 @@
+m4_comment([$Id: db_set_pagesize.so,v 10.40 2005/12/16 01:19:35 bostic Exp $])
+
+define(M4PAGELOCAL, [dbh_set_pagesize, dbh_get_pagesize])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbh_set_pagesize),
+ifelse(M4API, C_API, [dnl
+int
+DB-__GT__set_pagesize(DB *db, u_int32_t pagesize);
+m4_blank
+int
+DB-__GT__get_pagesize(DB *db, u_int32_t *pagesizep);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+Db::set_pagesize(u_int32_t pagesize);
+m4_blank
+int
+Db::get_pagesize(u_int32_t *pagesizep);
+]))
+
+m4_p([dnl
+Set the size of the pages used to hold items in the database, in bytes.
+The minimum page size is 512 bytes, the maximum page size is 64K bytes,
+and the page size must be a power-of-two. If the page size is not
+explicitly set, one is selected based on the underlying filesystem I/O
+block size. The automatically selected size has a lower limit of 512
+bytes and an upper limit of 16K bytes.])
+
+m4_p([dnl
+For information on tuning the m4_db page size, see
+m4_link(M4RELDIR/ref/am_conf/pagesize, [Selecting a page size]).])
+
+m4_scope_db(dbh_set_pagesize)
+
+m4_when_dbopen(dbh_set_pagesize, ignored)
+If creating additional databases in a single physical file, information
+specified to m4_ref(dbh_set_pagesize) will be ignored and the page size
+of the existing databases will be used.
+
+m4_return(dbh_set_pagesize, std)
+
+m4_parambegin
+m4_param(pagesize, [dnl
+The m4_arg(pagesize) parameter sets the database page size.])
+m4_paramend
+
+m4_err(dbh_set_pagesize,
+einval, [the method was called after m4_ref(dbh_open) was called])
+
+m4_pf_getter(dbh_get_pagesize, page size,, pagesizep)
+
+m4_seealso(Db)
+m4_page_footer
diff --git a/db/docs_src/db/db_set_priority.so b/db/docs_src/db/db_set_priority.so
new file mode 100644
index 000000000..292e9d32e
--- /dev/null
+++ b/db/docs_src/db/db_set_priority.so
@@ -0,0 +1,24 @@
+m4_comment([$Id: db_set_priority.so,v 1.1 2007/05/22 18:06:05 bostic Exp $])
+
+define(M4INTERFACE, dbh_set_priority)
+define(M4PAGELOCAL, [dbh_get_priority, dbh_set_priority,
+ DB_PRIORITY_VERY_LOW, DB_PRIORITY_LOW, DB_PRIORITY_DEFAULT,
+ DB_PRIORITY_HIGH, DB_PRIORITY_VERY_HIGH])
+
+m4_pf_header(m4_ref(dbh_set_priority),
+ifelse(M4API, C_API, [dnl
+int
+DB-__GT__set_priority(DB *db, DB_CACHE_PRIORITY priority);
+m4_blank
+int
+DB-__GT__get_priority(DB *db, DB_CACHE_PRIORITY *priorityp);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+Db::set_priority(DB_CACHE_PRIORITY priority);
+m4_blank
+int
+Db::get_priority(DB_CACHE_PRIORITY *priorityp);
+]))
+
+include(dbc/dbc_set_priority.so)
diff --git a/db/docs_src/db/db_set_q_extentsize.so b/db/docs_src/db/db_set_q_extentsize.so
new file mode 100644
index 000000000..ec7e2e03f
--- /dev/null
+++ b/db/docs_src/db/db_set_q_extentsize.so
@@ -0,0 +1,50 @@
+m4_comment([$Id: db_set_q_extentsize.so,v 1.23 2004/09/28 15:04:19 bostic Exp $])
+
+define(M4PAGELOCAL, [dbh_set_q_extentsize, dbh_get_q_extentsize])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbh_set_q_extentsize),
+ifelse(M4API, C_API, [dnl
+int
+DB-__GT__set_q_extentsize(DB *db, u_int32_t extentsize);
+m4_blank
+int
+DB-__GT__get_q_extentsize(DB *db, u_int32_t *extentsizep);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+Db::set_q_extentsize(u_int32_t extentsize);
+m4_blank
+int
+Db::get_q_extentsize(u_int32_t *extentsizep);
+]))
+
+m4_p([dnl
+Set the size of the extents used to hold pages in a Queue database,
+specified as a number of pages. Each extent is created as a separate
+physical file. If no extent size is set, the default behavior is to
+create only a single underlying database file.])
+
+m4_p([dnl
+For information on tuning the extent size, see
+m4_link(M4RELDIR/ref/am_conf/extentsize, [Selecting a extent size]).])
+
+m4_scope_db(dbh_set_q_extentsize)
+
+m4_when_dbopen(dbh_set_q_extentsize, ignored)
+
+m4_return(dbh_set_q_extentsize, std)
+
+m4_parambegin
+m4_param(extentsize, [dnl
+The m4_arg(extentsize) parameter is the number of pages in a Queue database
+extent.])
+m4_paramend
+
+m4_err(dbh_set_q_extentsize,
+einval, [the method was called after m4_ref(dbh_open) was called])
+
+m4_pf_getter(dbh_get_q_extentsize, number of pages in an extent,, extentsizep)
+
+m4_seealso(Db)
+m4_page_footer
diff --git a/db/docs_src/db/db_set_re_delim.so b/db/docs_src/db/db_set_re_delim.so
new file mode 100644
index 000000000..8c3fd31b9
--- /dev/null
+++ b/db/docs_src/db/db_set_re_delim.so
@@ -0,0 +1,50 @@
+m4_comment([$Id: db_set_re_delim.so,v 10.39 2004/09/28 15:04:19 bostic Exp $])
+
+define(M4PAGELOCAL, [dbh_set_re_delim, dbh_get_re_delim])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbh_set_re_delim),
+ifelse(M4API, C_API, [dnl
+int
+DB-__GT__set_re_delim(DB *db, int delim);
+m4_blank
+int
+DB-__GT__get_re_delim(DB *db, int *delimp);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+Db::set_re_delim(int re_delim);
+m4_blank
+int
+Db::get_re_delim(int *delimp);
+]))
+
+m4_p([dnl
+Set the delimiting byte used to mark the end of a record in the backing
+source file for the Recno access method.])
+
+m4_p([dnl
+This byte is used for variable length records if the m4_arg(re_source)
+file is specified. If the m4_arg(re_source) file is specified and no
+delimiting byte was specified, m4_htmlquote(newline) characters (that
+is, ASCII 0x0a) are interpreted as end-of-record markers.])
+
+m4_scope_db(dbh_set_re_delim)
+
+m4_when_dbopen(dbh_set_re_delim, ignored)
+
+m4_return(dbh_set_re_delim, std)
+
+m4_parambegin
+m4_param(re_delim, [dnl
+The m4_arg(re_delim) parameter is the delimiting byte used to mark the
+end of a record.])
+m4_paramend
+
+m4_err(dbh_set_re_delim,
+einval, [the method was called after m4_ref(dbh_open) was called])
+
+m4_pf_getter(dbh_get_re_delim, delimiting byte,, delimp)
+
+m4_seealso(Db)
+m4_page_footer
diff --git a/db/docs_src/db/db_set_re_len.so b/db/docs_src/db/db_set_re_len.so
new file mode 100644
index 000000000..b20bea183
--- /dev/null
+++ b/db/docs_src/db/db_set_re_len.so
@@ -0,0 +1,61 @@
+m4_comment([$Id: db_set_re_len.so,v 10.40 2004/09/28 15:04:19 bostic Exp $])
+
+define(M4PAGELOCAL, [dbh_set_re_len, dbh_get_re_len])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbh_set_re_len),
+ifelse(M4API, C_API, [dnl
+int
+DB-__GT__set_re_len(DB *db, u_int32_t re_len);
+m4_blank
+int
+DB-__GT__get_re_len(DB *db, u_int32_t *re_lenp);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+Db::set_re_len(u_int32_t re_len);
+m4_blank
+int
+Db::get_re_len(u_int32_t *re_lenp);
+]))
+
+m4_p([dnl
+For the Queue access method, specify that the records are of length
+m4_arg(re_len). For the Queue access method, the record length must be
+enough smaller than the database's page size that at least one record
+plus the database page's metadata information can fit on each database
+page.])
+
+m4_p([dnl
+For the Recno access method, specify that the records are fixed-length,
+not byte-delimited, and are of length m4_arg(re_len).])
+
+m4_p([dnl
+Any records added to the database that are less than m4_arg(re_len) bytes
+long are automatically padded (see m4_ref(dbh_set_re_pad) for more
+information).])
+
+m4_p([dnl
+Any attempt to insert records into the database that are greater than
+m4_arg(re_len) bytes long will cause the call to fail immediately and
+return an error.])
+
+m4_scope_db(dbh_set_re_len)
+
+m4_when_dbopen(dbh_set_re_len, ignored)
+
+m4_return(dbh_set_re_len, std)
+
+m4_parambegin
+m4_param(re_len, [dnl
+The m4_arg(re_len) parameter is the length of a Queue or Recno database
+record, in bytes.])
+m4_paramend
+
+m4_err(dbh_set_re_len,
+einval, [the method was called after m4_ref(dbh_open) was called])
+
+m4_pf_getter(dbh_get_re_len, record length,, re_lenp)
+
+m4_seealso(Db)
+m4_page_footer
diff --git a/db/docs_src/db/db_set_re_pad.so b/db/docs_src/db/db_set_re_pad.so
new file mode 100644
index 000000000..9dfc741cf
--- /dev/null
+++ b/db/docs_src/db/db_set_re_pad.so
@@ -0,0 +1,48 @@
+m4_comment([$Id: db_set_re_pad.so,v 10.37 2004/09/28 15:04:19 bostic Exp $])
+
+define(M4PAGELOCAL, [dbh_set_re_pad, dbh_get_re_pad])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbh_set_re_pad),
+ifelse(M4API, C_API, [dnl
+int
+DB-__GT__set_re_pad(DB *db, int re_pad);
+m4_blank
+int
+DB-__GT__get_re_pad(DB *db, int *re_padp);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+Db::set_re_pad(int re_pad);
+m4_blank
+int
+Db::get_re_pad(int *re_padp);
+]))
+
+m4_p([dnl
+Set the padding character for short, fixed-length records for the Queue
+and Recno access methods.])
+
+m4_p([dnl
+If no pad character is specified, m4_htmlquote(space) characters (that
+is, ASCII 0x20) are used for padding.])
+
+m4_scope_db(dbh_set_re_pad)
+
+m4_when_dbopen(dbh_set_re_pad, ignored)
+
+m4_return(dbh_set_re_pad, std)
+
+m4_parambegin
+m4_param(re_pad, [dnl
+The m4_arg(re_pad) parameter is the pad character for fixed-length
+records for the Queue and Recno access methods.])
+m4_paramend
+
+m4_err(dbh_set_re_pad,
+einval, [the method was called after m4_ref(dbh_open) was called])
+
+m4_pf_getter(dbh_get_re_pad, pad character,, re_padp)
+
+m4_seealso(Db)
+m4_page_footer
diff --git a/db/docs_src/db/db_set_re_source.so b/db/docs_src/db/db_set_re_source.so
new file mode 100644
index 000000000..3e72e0896
--- /dev/null
+++ b/db/docs_src/db/db_set_re_source.so
@@ -0,0 +1,102 @@
+m4_comment([$Id: db_set_re_source.so,v 10.42 2004/09/28 15:04:19 bostic Exp $])
+
+define(M4PAGELOCAL, [dbh_set_re_source, dbh_get_re_source])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbh_set_re_source),
+ifelse(M4API, C_API, [dnl
+int
+DB-__GT__set_re_source(DB *db, char *source);
+m4_blank
+int
+DB-__GT__get_re_source(DB *db, const char **sourcep);
+
+])
+ifelse(M4API, CXX_API, [dnl
+int
+Db::set_re_source(char *source);
+m4_blank
+int
+Db::get_re_source(const char **sourcep);
+
+]))
+
+m4_p([dnl
+Set the underlying source file for the Recno access method. The purpose
+of the m4_arg(source) value is to provide fast access and modification
+to databases that are normally stored as flat text files.])
+
+m4_p([dnl
+The m4_arg(source) parameter specifies an underlying flat text database
+file that is read to initialize a transient record number index. In
+the case of variable length records, the records are separated, as
+specified by m4_ref(dbh_set_re_delim). For example, standard UNIX byte
+stream files can be interpreted as a sequence of variable length records
+separated by m4_htmlquote(newline) characters.])
+
+m4_p([dnl
+In addition, when cached data would normally be written back to the
+underlying database file (for example, the m4_ref(dbh_close) or
+m4_ref(dbh_sync) methods are called), the in-memory copy of the database
+will be written back to the m4_arg(source) file.])
+
+m4_p([dnl
+By default, the backing source file is read lazily; that is, records
+are not read from the file until they are requested by the application.
+m4_bold([dnl
+If multiple processes (not threads) are accessing a Recno database
+concurrently, and are either inserting or deleting records, the backing
+source file must be read in its entirety before more than a single
+process accesses the database, and only that process should specify the
+backing source file as part of the m4_ref(dbh_open) call. See the
+m4_ref(DB_SNAPSHOT) flag for more information.])])
+
+m4_p([dnl
+m4_bold([dnl
+Reading and writing the backing source file specified by m4_arg(source)
+cannot be transaction-protected because it involves filesystem
+operations that are not part of the Db transaction methodology.]) For
+this reason, if a temporary database is used to hold the records, it is
+possible to lose the contents of the m4_arg(source) file, for
+example, if the system crashes at the right instant. If a file is used
+to hold the database, normal database recovery on that file can be used
+to prevent information loss, although it is still possible that the
+contents of m4_arg(source) will be lost if the system crashes.])
+
+m4_p([dnl
+The m4_arg(source) file must already exist (but may be zero-length) when
+m4_ref(dbh_open) is called.])
+
+m4_p([dnl
+It is not an error to specify a read-only m4_arg(source) file when
+creating a database, nor is it an error to modify the resulting database.
+However, any attempt to write the changes to the backing source file using
+either the m4_ref(dbh_sync) or m4_refT(dbh_close)s will fail, of course.
+Specify the m4_ref(DB_NOSYNC) flag to the m4_refT(dbh_close) to stop it
+from attempting to write the changes to the backing file; instead, they
+will be silently discarded.])
+
+m4_p([dnl
+For all of the previous reasons, the m4_arg(source) field is generally
+used to specify databases that are read-only for m4_db applications;
+and that are either generated on the fly by software tools or modified
+using a different mechanism -- for example, a text editor.])
+
+m4_scope_dbh(dbh_set_re_source)
+
+m4_when_dbopen(dbh_set_re_source, corrupt)
+
+m4_return(dbh_set_re_source, std)
+
+m4_parambegin
+m4_param_utf8(source, [dnl
+The backing flat text database file for a Recno database.])
+m4_paramend
+
+m4_err(dbh_set_re_source,
+einval, [the method was called after m4_ref(dbh_open) was called])
+
+m4_pf_getter(dbh_get_re_source, source file, sourcep,, reference)
+
+m4_seealso(Db)
+m4_page_footer
diff --git a/db/docs_src/db/db_stat.so b/db/docs_src/db/db_stat.so
new file mode 100644
index 000000000..045e70419
--- /dev/null
+++ b/db/docs_src/db/db_stat.so
@@ -0,0 +1,259 @@
+m4_comment([$Id: db_stat.so,v 10.92 2007/06/22 16:57:15 bostic Exp $])
+
+define(M4PAGELOCAL, [dbh_stat, dbh_stat_print, DB_FAST_STAT])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbh_stat),
+ifelse(M4API, C_API, [dnl
+int
+DB-__GT__stat(DB *db, DB_TXN *txnid, void *sp, u_int32_t flags);
+m4_blank
+int
+DB-__GT__stat_print(DB *db, u_int32_t flags);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+Db::stat(DbTxn *txnid, void *sp, u_int32_t flags);
+m4_blank
+int
+Db::stat_print(u_int32_t flags);
+]))
+
+m4_p([dnl
+The m4_refT(dbh_stat) creates a statistical structure and copies a
+pointer to it into user-specified memory locations. Specifically, if
+m4_arg(sp) is non-NULL, a pointer to the statistics for the database are
+copied into the memory location to which it refers.])
+
+m4_parambegin
+m4_param(flags, [dnl
+m4_sf_zmust(1)
+
+m4_tagbegin
+m4_tag(m4_idef(DB_FAST_STAT), [dnl
+Return only the values which do not require traversal of the database.
+Among other things, this flag makes it possible for applications to
+request key and record counts without incurring the performance penalty
+of traversing the entire database.])
+
+m4_tag(m4_idef(DB_READ_COMMITTED), [dnl
+Database items read during a transactional call will have degree 2
+isolation. This ensures the stability of the data items read during the
+stat operation but permits that data to be modified or deleted by other
+transactions prior to the commit of the specified transaction.])
+
+m4_tag(m4_idef(DB_READ_UNCOMMITTED), [dnl
+Database items read during a transactional call will have degree 1
+isolation, including modified but not yet committed data. Silently
+ignored if the m4_ref(DB_READ_UNCOMMITTED) flag was not specified when
+the underlying database was opened.]) m4_tagend])
+
+m4_param_txn(dbh_stat)
+m4_paramend
+
+m4_alloc([Statistical structures])
+
+m4_p([dnl
+If the m4_ref(DB_FAST_STAT) flag has not been specified, the
+m4_refT(dbh_stat) will access some of or all the pages in the database,
+incurring a severe performance penalty as well as possibly flushing the
+underlying buffer pool.])
+
+m4_p([dnl
+In the presence of multiple threads or processes accessing an active
+database, the information returned by m4_ref(dbh_stat) may be out-of-date.])
+
+m4_p([dnl
+If the database was not opened read-only and the m4_ref(DB_FAST_STAT)
+flag was not specified, the cached key and record numbers will be
+updated after the statistical information has been gathered.])
+
+m4_when_after_dbopen(dbh_stat)
+
+m4_return(dbh_stat, std)
+
+m4_section([Hash Statistics])
+m4_p([dnl
+In the case of a Hash database, the statistics are stored in a structure
+of type DB_HASH_STAT. The following fields will be filled in:])
+
+m4_tagbegin
+m4_field(u_int32_t, hash_magic,
+[Magic number that identifies the file as a Hash file. Returned if
+m4_ref(DB_FAST_STAT) is set.])
+m4_field(u_int32_t, hash_version,
+[The version of the Hash database. Returned if m4_ref(DB_FAST_STAT) is
+set.])
+m4_field(u_int32_t, hash_nkeys,
+[The number of unique keys in the database. If m4_ref(DB_FAST_STAT) was
+specified the count will be the last saved value unless it has never
+been calculated, in which case it will be 0. Returned if
+m4_ref(DB_FAST_STAT) is set.])
+m4_field(u_int32_t, hash_ndata,
+[The number of key/data pairs in the database. If m4_ref(DB_FAST_STAT)
+was specified the count will be the last saved value unless it has never
+been calculated, in which case it will be 0. Returned if
+m4_ref(DB_FAST_STAT) is set.])
+m4_field(u_int32_t, hash_pagecnt,
+[The number of pages in the database. Returned if m4_ref(DB_FAST_STAT)
+is set.])
+m4_field(u_int32_t, hash_pagesize,
+[The underlying database page (and bucket) size, in bytes. Returned if
+m4_ref(DB_FAST_STAT) is set.])
+m4_field(u_int32_t, hash_ffactor,
+[The desired fill factor (number of items per bucket) specified at
+database-creation time. Returned if m4_ref(DB_FAST_STAT) is set.])
+m4_field(u_int32_t, hash_buckets,
+[The number of hash buckets. Returned if m4_ref(DB_FAST_STAT) is set.])
+m4_field(u_int32_t, hash_free,
+[The number of pages on the free list.])
+m4_field(u_int32_t, hash_bfree,
+[The number of bytes free on bucket pages.])
+m4_field(u_int32_t, hash_bigpages,
+[The number of big key/data pages.])
+m4_field(u_int32_t, hash_big_bfree,
+[The number of bytes free on big item pages.])
+m4_field(u_int32_t, hash_overflows,
+[The number of overflow pages (overflow pages are pages that contain items
+that did not fit in the main bucket page).])
+m4_field(u_int32_t, hash_ovfl_free,
+[The number of bytes free on overflow pages.])
+m4_field(u_int32_t, hash_dup,
+[The number of duplicate pages.])
+m4_field(u_int32_t, hash_dup_free,
+[The number of bytes free on duplicate pages.])
+m4_tagend
+
+m4_section([Btree and Recno Statistics])
+m4_p([dnl
+In the case of a Btree or Recno database, the statistics are stored in
+a structure of type DB_BTREE_STAT. The following fields will be filled
+in:])
+
+m4_tagbegin
+m4_field(u_int32_t, bt_magic,
+[Magic number that identifies the file as a Btree database. Returned
+if m4_ref(DB_FAST_STAT) is set.])
+m4_field(u_int32_t, bt_version,
+[The version of the Btree database. Returned if m4_ref(DB_FAST_STAT)
+is set.])
+m4_field(u_int32_t, bt_nkeys,
+[For the Btree Access Method, the number of keys in the database. If
+the m4_ref(DB_FAST_STAT) flag is not specified or the database was
+configured to support record numbers (see m4_ref(DB_RECNUM)), the count
+will be exact. Otherwise, the count will be the last saved value unless
+it has never been calculated, in which case it will be 0.
+m4_p([dnl
+For the Recno Access Method, the number of records in the database. If
+the database was configured with mutable record numbers (see
+m4_ref(DB_RENUMBER)), the count will be exact. Otherwise, if the
+m4_ref(DB_FAST_STAT) flag is specified the count will be exact but will
+include deleted and implicitly created records; if the
+m4_ref(DB_FAST_STAT) flag is not specified, the count will be exact and
+will not include deleted or implicitly created records.])
+m4_p([dnl
+Returned if m4_ref(DB_FAST_STAT) is set.])])
+m4_field(u_int32_t, bt_ndata,
+[For the Btree Access Method, the number of key/data pairs in the
+database. If the m4_ref(DB_FAST_STAT) flag is not specified, the count
+will be exact. Otherwise, the count will be the last saved value unless
+it has never been calculated, in which case it will be 0.
+m4_p([dnl
+For the Recno Access Method, the number of records in the database. If
+the database was configured with mutable record numbers (see
+m4_ref(DB_RENUMBER)), the count will be exact. Otherwise, if the
+m4_ref(DB_FAST_STAT) flag is specified the count will be exact but will
+include deleted and implicitly created records; if the
+m4_ref(DB_FAST_STAT) flag is not specified, the count will be exact and
+will not include deleted or implicitly created records.])
+m4_p([dnl
+m4_field(u_int32_t, bt_pagecnt,
+[The number of pages in the database. Returned if m4_ref(DB_FAST_STAT)
+is set.])
+Returned if m4_ref(DB_FAST_STAT) is set.])])
+m4_field(u_int32_t, bt_pagesize,
+[The underlying database page size, in bytes. Returned if
+m4_ref(DB_FAST_STAT) is set.])
+m4_field(u_int32_t, bt_minkey,
+[The minimum keys per page. Returned if m4_ref(DB_FAST_STAT) is set.])
+m4_field(u_int32_t, bt_re_len,
+[The length of fixed-length records. Returned if m4_ref(DB_FAST_STAT)
+is set.])
+m4_field(u_int32_t, bt_re_pad,
+[The padding byte value for fixed-length records. Returned if
+m4_ref(DB_FAST_STAT) is set.])
+m4_field(u_int32_t, bt_levels,
+[Number of levels in the database.])
+m4_field(u_int32_t, bt_int_pg,
+[Number of database internal pages.])
+m4_field(u_int32_t, bt_leaf_pg,
+[Number of database leaf pages.])
+m4_field(u_int32_t, bt_dup_pg,
+[Number of database duplicate pages.])
+m4_field(u_int32_t, bt_over_pg,
+[Number of database overflow pages.])
+m4_field(u_int32_t, bt_empty_pg,
+[Number of empty database pages.])
+m4_field(u_int32_t, bt_free,
+[Number of pages on the free list.])
+m4_field(u_int32_t, bt_int_pgfree,
+[Number of bytes free in database internal pages.])
+m4_field(u_int32_t, bt_leaf_pgfree,
+[Number of bytes free in database leaf pages.])
+m4_field(u_int32_t, bt_dup_pgfree,
+[Number of bytes free in database duplicate pages.])
+m4_field(u_int32_t, bt_over_pgfree,
+[Number of bytes free in database overflow pages.])
+m4_tagend
+
+m4_section([Queue Statistics])
+m4_p([dnl
+In the case of a Queue database, the statistics are stored in a
+structure of type DB_QUEUE_STAT. The following fields will be filled
+in:])
+
+m4_tagbegin
+m4_field(u_int32_t, qs_magic,
+[Magic number that identifies the file as a Queue file. Returned if
+m4_ref(DB_FAST_STAT) is set.])
+m4_field(u_int32_t, qs_version,
+[The version of the Queue file type. Returned if m4_ref(DB_FAST_STAT)
+is set.])
+m4_field(u_int32_t, qs_nkeys,
+[The number of records in the database. If m4_ref(DB_FAST_STAT) was
+specified the count will be the last saved value unless it has never
+been calculated, in which case it will be 0. Returned if
+m4_ref(DB_FAST_STAT) is set.])
+m4_field(u_int32_t, qs_ndata,
+[The number of records in the database. If m4_ref(DB_FAST_STAT) was
+specified the count will be the last saved value unless it has never
+been calculated, in which case it will be 0. Returned if
+m4_ref(DB_FAST_STAT) is set.])
+m4_field(u_int32_t, qs_pagesize,
+[Underlying database page size, in bytes. Returned if
+m4_ref(DB_FAST_STAT) is set.])
+m4_field(u_int32_t, qs_extentsize,
+[Underlying database extent size, in pages. Returned if
+m4_ref(DB_FAST_STAT) is set.])
+m4_field(u_int32_t, qs_pages,
+[Number of pages in the database.])
+m4_field(u_int32_t, qs_re_len,
+[The length of the records. Returned if m4_ref(DB_FAST_STAT) is set.])
+m4_field(u_int32_t, qs_re_pad,
+[The padding byte value for the records. Returned if
+m4_ref(DB_FAST_STAT) is set.])
+m4_field(u_int32_t, qs_pgfree,
+[Number of bytes free in database pages.])
+m4_field(u_int32_t, qs_first_recno,
+[First undeleted record in the database. Returned if
+m4_ref(DB_FAST_STAT) is set.])
+m4_field(u_int32_t, qs_cur_recno,
+[Next available record number. Returned if m4_ref(DB_FAST_STAT) is set.])
+m4_tagend
+
+m4_err(dbh_stat, repinval, einval)
+
+m4_stat_print(dbh_stat_print, database, dbh_stat)
+
+m4_seealso(Db)
+m4_page_footer
diff --git a/db/docs_src/db/db_sync.so b/db/docs_src/db/db_sync.so
new file mode 100644
index 000000000..cff3dd226
--- /dev/null
+++ b/db/docs_src/db/db_sync.so
@@ -0,0 +1,44 @@
+m4_comment([$Id: db_sync.so,v 10.36 2004/08/13 03:38:56 bostic Exp $])
+
+define(M4PAGELOCAL, dbh_sync)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbh_sync),
+ifelse(M4API, C_API, [dnl
+int
+DB-__GT__sync(DB *db, u_int32_t flags);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+Db::sync(u_int32_t flags);
+]))
+
+m4_p([dnl
+The m4_refT(dbh_sync) flushes any cached information to disk.])
+
+m4_p([dnl
+If the database is in memory only, the m4_refT(dbh_sync) has no effect and
+will always succeed.])
+
+m4_p([m4_bold([dnl
+It is important to understand that flushing cached information to disk
+only minimizes the window of opportunity for corrupted data.]) Although
+unlikely, it is possible for database corruption to happen if a system
+or application crash occurs while writing data to the database. To
+ensure that database corruption never occurs, applications must either:
+use transactions and logging with automatic recovery; use logging and
+application-specific recovery; or edit a copy of the database, and once
+all applications using the database have successfully called
+m4_ref(dbh_close), atomically replace the original database with the
+updated copy.])
+
+m4_return(dbh_sync, std)
+
+m4_parambegin
+m4_unusedflags
+m4_paramend
+
+m4_err(dbh_sync, repinval, einval)
+
+m4_seealso(Db)
+m4_page_footer
diff --git a/db/docs_src/db/db_truncate.so b/db/docs_src/db/db_truncate.so
new file mode 100644
index 000000000..2fe7c76d6
--- /dev/null
+++ b/db/docs_src/db/db_truncate.so
@@ -0,0 +1,46 @@
+m4_comment([$Id: db_truncate.so,v 1.29 2006/09/13 14:30:52 mjc Exp $])
+
+define(M4PAGELOCAL, dbh_truncate)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbh_truncate),
+ifelse(M4API, C_API, [dnl
+int
+DB-__GT__truncate(DB *db,
+ DB_TXN *txnid, u_int32_t *countp, u_int32_t flags);
+], M4API, CXX_API, [dnl
+int
+Db::truncate(DbTxn *txnid, u_int32_t *countp, u_int32_t flags);
+], [dnl
+public int truncate(DbTxn txnid, int flags)
+ throws DbException;
+]))
+
+m4_p([dnl
+The m4_refT(dbh_truncate) empties the database, discarding all records
+it contains. The number of records discarded from the database is
+returned in m4_arg(countp).])
+
+m4_p([dnl
+When called on a database configured with secondary indices using the
+m4_refT(dbh_associate), the m4_refT(dbh_truncate) truncates the primary
+database and all secondary indices. A count of the records discarded
+from the primary database is returned.])
+
+m4_p([dnl
+It is an error to call the m4_refT(dbh_truncate) on a database with open
+cursors.])
+
+m4_return(dbh_truncate, std)
+
+m4_parambegin
+m4_param_co(countp, number of records discarded from the database)
+m4_unusedflags
+m4_param_txn(dbh_truncate)
+m4_paramend
+
+m4_err(dbh_truncate, deadlock,
+einval, [there are open cursors in the database])
+
+m4_seealso(Db)
+m4_page_footer
diff --git a/db/docs_src/db/db_upgrade.so b/db/docs_src/db/db_upgrade.so
new file mode 100644
index 000000000..53f3c1989
--- /dev/null
+++ b/db/docs_src/db/db_upgrade.so
@@ -0,0 +1,82 @@
+m4_comment([$Id: db_upgrade.so,v 10.37 2004/08/13 03:38:56 bostic Exp $])
+
+define(M4PAGELOCAL, [dbh_upgrade, DB_DUPSORT])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbh_upgrade),
+ifelse(M4API, C_API, [dnl
+int
+DB-__GT__upgrade(DB *db, const char *file, u_int32_t flags);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+Db::upgrade(const char *file, u_int32_t flags);
+]))
+
+m4_p([dnl
+The m4_refT(dbh_upgrade) upgrades all of the databases included in the
+file m4_arg(file), if necessary. If no upgrade is necessary,
+m4_ref(dbh_upgrade) always returns success.])
+
+m4_p([m4_bold([dnl
+Database upgrades are done in place and are destructive. For example,
+if pages need to be allocated and no disk space is available, the
+database may be left corrupted. Backups should be made before databases
+are upgraded. See m4_link(M4RELDIR/ref/am/upgrade, Upgrading databases)
+for more information.])])
+
+m4_p([dnl
+Unlike all other database operations, m4_ref(dbh_upgrade) may only be done
+on a system with the same byte-order as the database.])
+
+m4_return(dbh_upgrade, std)
+
+m4_underfunc(dbh_upgrade, dbh_upgrade, db_upgrade)
+
+m4_parambegin
+m4_param(file, [dnl
+The m4_arg(file) parameter is the physical file containing the databases
+to be upgraded.])
+
+m4_param(flags, [dnl
+m4_sf_zmust(0)
+
+m4_tagbegin
+m4_tag(m4_idef(DB_DUPSORT), [dnl
+m4_bold([This flag is only meaningful when upgrading databases from
+releases before the m4_db 3.1 release.])
+m4_p([dnl
+As part of the upgrade from the m4_db 3.0 release to the 3.1 release,
+the on-disk format of duplicate data items changed. To correctly
+upgrade the format requires applications to specify whether duplicate
+data items in the database are sorted or not. Specifying the
+m4_ref(DB_DUPSORT) flag informs m4_ref(dbh_upgrade) that the duplicates
+are sorted; otherwise they are assumed to be unsorted. Incorrectly
+specifying the value of this flag may lead to database corruption.])
+m4_p([dnl
+Further, because the m4_refT(dbh_upgrade) upgrades a physical file
+(including all the databases it contains), it is not possible to use
+m4_ref(dbh_upgrade) to upgrade files in which some of the databases it
+includes have sorted duplicate data items, and some of the databases it
+includes have unsorted duplicate data items. If the file does not have
+more than a single database, if the databases do not support duplicate
+data items, or if all of the databases that support duplicate data items
+support the same style of duplicates (either sorted or unsorted),
+m4_ref(dbh_upgrade) will work correctly as long as the
+m4_ref(DB_DUPSORT) flag is correctly specified. Otherwise, the file
+cannot be upgraded using m4_ref(dbh_upgrade); it must be upgraded
+manually by dumping and reloading the databases.])])
+
+m4_tagend])
+m4_paramend
+
+m4_header([Environment Variables])
+m4_data_location(dbh_upgrade, 1)
+
+m4_err(dbh_upgrade,
+m4_idef(DB_OLD_VERSION),
+[The database cannot be upgraded by this version of the m4_db software.],
+einval, [the database is not in the same byte-order as the system])
+
+m4_seealso(Db)
+m4_page_footer
diff --git a/db/docs_src/db/db_verify.so b/db/docs_src/db/db_verify.so
new file mode 100644
index 000000000..b53803868
--- /dev/null
+++ b/db/docs_src/db/db_verify.so
@@ -0,0 +1,142 @@
+m4_comment([$Id: db_verify.so,v 10.30 2005/03/08 16:29:34 bostic Exp $])
+
+define(M4PAGELOCAL,
+ [dbh_verify, DB_AGGRESSIVE, DB_NOORDERCHK, DB_ORDERCHKONLY,
+ DB_PRINTABLE, DB_SALVAGE, DB_VERIFY_BAD])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbh_verify),
+ifelse(M4API, C_API, [dnl
+int
+DB-__GT__verify(DB *db, const char *file,
+ const char *database, FILE *outfile, u_int32_t flags);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+Db::verify(const char *file,
+ const char *database, ostream *outfile, u_int32_t flags);
+]))
+
+m4_p([dnl
+The m4_refT(dbh_verify) verifies the integrity of all databases in the
+file specified by the m4_arg(file) parameter, and optionally outputs the
+databases' key/data pairs to the file stream specified by the
+m4_arg(outfile) parameter.])
+
+m4_p([m4_bold([dnl
+The m4_refT(dbh_verify) does not perform any locking, even in m4_db
+environments that are configured with a locking subsystem. As such, it
+should only be used on files that are not being modified by another
+thread of control.])])
+
+m4_when_dbopen(dbh_verify)
+
+m4_destructor(Db, dbh_verify)
+
+m4_underfunc(dbh_verify, dbh_verify, db_verify)
+
+m4_idefz(DB_VERIFY_BAD)
+m4_return(dbh_verify, specific, DB_VERIFY_BAD, [if a database is
+corrupted. When the m4_ref(DB_SALVAGE) flag is specified, the
+m4_ref(DB_VERIFY_BAD) return means that all key/data pairs in the file
+may not have been successfully output], prev)
+
+m4_parambegin
+m4_param(database, [dnl
+The m4_arg(database) parameter is the database in m4_arg(file) on which
+the database checks for btree and duplicate sort order and for hashing
+are to be performed. See the m4_ref(DB_ORDERCHKONLY) flag for more
+information.
+m4_p([dnl
+The database parameter must be set to NULL except when the
+m4_ref(DB_ORDERCHKONLY) flag is set.])])
+
+m4_param(file, [dnl
+The m4_arg(file) parameter is the physical file in which the databases
+to be verified are found.])
+
+m4_param(flags, [dnl
+m4_sf_zmust(0)
+
+m4_tagbegin
+m4_tag(m4_idef(DB_SALVAGE), [dnl
+Write the key/data pairs from all databases in the file to the file
+stream named in the m4_arg(outfile) parameter. Key values are written
+for Btree, Hash and Queue databases, but not for Recno databases.
+m4_p([dnl
+The output format is the same as that specified for the m4_ref(db_dump)
+utility, and can be used as input for the m4_ref(db_load) utility.])
+m4_p([dnl
+Because the key/data pairs are output in page order as opposed to the sort
+order used by m4_ref(db_dump), using m4_ref(dbh_verify) to dump key/data
+pairs normally produces less than optimal loads for Btree databases.])])
+m4_tagend
+
+m4_p([dnl
+In addition, the following flags may be set by m4_or them into the
+m4_arg(flags) parameter:])
+
+m4_tagbegin
+m4_tag(m4_idef(DB_AGGRESSIVE), [dnl
+Output m4_bold(all) the key/data pairs in the file that can be found.
+By default, m4_ref(dbh_verify) does not assume corruption. For example,
+if a key/data pair on a page is marked as deleted, it is not then written
+to the output file. When m4_ref(DB_AGGRESSIVE) is specified, corruption
+is assumed, and any key/data pair that can be found is written. In this
+case, key/data pairs that are corrupted or have been deleted may appear
+in the output (even if the file being salvaged is in no way corrupt), and
+the output will almost certainly require editing before being loaded into
+a database.])
+
+m4_tag(m4_idef(DB_PRINTABLE), [dnl
+When using the m4_ref(DB_SALVAGE) flag, if characters in either the key
+or data items are printing characters (as defined by m4_manref(isprint,
+3)), use printing characters to represent them. This flag permits users
+to use standard text editors and tools to modify the contents of
+databases or selectively remove data from salvager output.
+m4_p([dnl
+Note: different systems may have different notions about what characters
+are considered m4_italic(printing characters), and databases dumped in
+this manner may be less portable to external systems.])])
+
+m4_tag(m4_idef(DB_NOORDERCHK), [dnl
+Skip the database checks for btree and duplicate sort order and for
+hashing.
+m4_p([dnl
+The m4_refT(dbh_verify) normally verifies that btree keys and duplicate
+items are correctly sorted, and hash keys are correctly hashed. If the
+file being verified contains multiple databases using differing sorting
+or hashing algorithms, some of them must necessarily fail database
+verification because only one sort order or hash function can be
+specified before m4_ref(dbh_verify) is called. To verify files with
+multiple databases having differing sorting orders or hashing functions,
+first perform verification of the file as a whole by using the
+m4_ref(DB_NOORDERCHK) flag, and then individually verify the sort order
+and hashing function for each database in the file using the
+m4_ref(DB_ORDERCHKONLY) flag.])])
+
+m4_tag(m4_idef(DB_ORDERCHKONLY), [dnl
+Perform the database checks for btree and duplicate sort order and for
+hashing, skipped by m4_ref(DB_NOORDERCHK).
+m4_p([dnl
+When this flag is specified, a m4_arg(database) parameter should also be
+specified, indicating the database in the physical file which is to be
+checked. This flag is only safe to use on databases that have already
+successfully been verified using m4_ref(dbh_verify) with the
+m4_ref(DB_NOORDERCHK) flag set.])])
+m4_tagend])
+
+m4_param(outfile, [dnl
+The m4_arg(outfile) parameter is an optional file stream to which the
+databases' key/data pairs are written.])
+
+m4_paramend
+
+m4_header([Environment Variables])
+m4_data_location(dbh_verify, 1)
+
+m4_err(dbh_verify, filenotfound,
+einval, [m4_ref(dbh_verify) was called after m4_ref(dbh_open)])
+
+m4_seealso(Db)
+m4_page_footer
diff --git a/db/docs_src/db/dbt_bulk.so b/db/docs_src/db/dbt_bulk.so
new file mode 100644
index 000000000..9186bbde3
--- /dev/null
+++ b/db/docs_src/db/dbt_bulk.so
@@ -0,0 +1,83 @@
+m4_comment([$Id: dbt_bulk.so,v 10.14 2007/01/31 14:45:22 bostic Exp $])
+
+define(M4PAGELOCAL,
+ [DB_MULTIPLE_INIT, DB_MULTIPLE_NEXT, DB_MULTIPLE_KEY_NEXT,
+ DB_MULTIPLE_RECNO_NEXT])
+include(m4/m4.seealso)
+
+m4_page_header(DBT, [DBT: Bulk Retrieval], yes)
+
+m4_idefz(bulk retrieval)
+m4_p([dnl
+If either of the m4_ref(DB_MULTIPLE) or m4_ref(DB_MULTIPLE_KEY) flags
+were specified to the m4_ref(dbh_get) or m4_refT(dbc_get)s, the data
+m4_ref(Dbt) returned by those interfaces will refer to a buffer that is
+filled with data. Access to that data is through the following
+macros:])
+
+m4_tagbegin
+
+m4_tag(m4_idef(DB_MULTIPLE_INIT), [dnl
+m4_literal([DB_MULTIPLE_INIT(void *pointer, m4_ref(Dbt) *data);])
+m4_p([dnl
+Initialize the retrieval. The m4_arg(pointer) parameter is a variable
+to be initialized. The m4_arg(data) parameter is a m4_ref(Dbt)
+structure returned from a successful call to m4_ref(dbh_get) or
+m4_ref(dbc_get) for which one of the m4_ref(DB_MULTIPLE) or
+m4_ref(DB_MULTIPLE_KEY) flags was specified.])])
+
+m4_tag(m4_idef(DB_MULTIPLE_NEXT), [dnl
+m4_literal([DB_MULTIPLE_NEXT(void *pointer, m4_ref(Dbt) *data, void *retdata, size_t retdlen);])
+m4_p([dnl
+The m4_arg(data) parameter is a m4_ref(Dbt) structure returned from a
+successful call to m4_ref(dbh_get) or m4_ref(dbc_get) for which the
+m4_ref(DB_MULTIPLE) flag was specified. The m4_arg(pointer) and
+m4_arg(data) parameters must have been previously initialized by a call
+to m4_ref(DB_MULTIPLE_INIT). The m4_arg(retdata) parameter is set to
+refer to the next data element in the returned set, and the
+m4_arg(retdlen) parameter is set to the length, in bytes, of that data
+element. When used with the Queue and Recno access methods,
+m4_arg(retdata) will be set to NULL for deleted records. The
+m4_arg(pointer) parameter is set to NULL if there are no more data
+elements in the returned set.])])
+
+m4_tag(m4_idef(DB_MULTIPLE_KEY_NEXT), [dnl
+m4_literal([DB_MULTIPLE_KEY_NEXT(void *pointer, m4_ref(Dbt) *data,
+ void *retkey, size_t retklen, void *retdata, size_t retdlen);])
+m4_p([dnl
+The m4_arg(data) parameter is a m4_ref(Dbt) structure returned from a
+successful call to m4_ref(dbc_get) with the Btree or Hash access methods
+for which the m4_ref(DB_MULTIPLE_KEY) flag was specified. The
+m4_arg(pointer) and m4_arg(data) parameters must have been previously
+initialized by a call to m4_ref(DB_MULTIPLE_INIT). The m4_arg(retkey)
+parameter is set to refer to the next key element in the returned set,
+and the m4_arg(retklen) parameter is set to the length, in bytes, of
+that key element. The m4_arg(retdata) parameter is set to refer to the
+next data element in the returned set, and the m4_arg(retdlen) parameter
+is set to the length, in bytes, of that data element. The
+m4_arg(pointer) parameter is set to NULL if there are no more key/data
+pairs in the returned set.])])
+
+m4_tag(m4_idef(DB_MULTIPLE_RECNO_NEXT), [dnl
+m4_literal([DB_MULTIPLE_RECNO_NEXT(void *pointer, m4_ref(Dbt) *data,
+ db_recno_t recno, void * retdata, size_t retdlen);])
+m4_p([dnl
+The m4_arg(data) parameter is a m4_ref(Dbt) structure returned from a
+successful call to m4_ref(dbc_get) with the Queue or Recno access
+methods for which the m4_ref(DB_MULTIPLE_KEY) flag was specified. The
+m4_arg(pointer) and m4_arg(data) parameters must have been previously
+initialized by a call to m4_ref(DB_MULTIPLE_INIT). The m4_arg(recno)
+parameter is set to the record number of the next record in the returned
+set. The m4_arg(retdata) parameter is set to refer to the next data
+element in the returned set, and the m4_arg(retdlen) parameter is set to
+the length, in bytes, of that data element. Deleted records are not
+included in the results. The m4_arg(pointer) parameter is set to NULL
+if there are no more key/data pairs in the returned set.])])
+
+m4_tagend
+
+m4_p([dnl
+These macros may be called multiple times, but m4_ref(DB_MULTIPLE_INIT)
+must be called before each new access of the data.])
+
+m4_page_footer
diff --git a/db/docs_src/db/dbt_bulk_class.so b/db/docs_src/db/dbt_bulk_class.so
new file mode 100644
index 000000000..ab29ad382
--- /dev/null
+++ b/db/docs_src/db/dbt_bulk_class.so
@@ -0,0 +1,165 @@
+m4_comment([$Id: dbt_bulk_class.so,v 1.15 2004/08/13 03:38:56 bostic Exp $])
+
+define(M4PAGELOCAL,
+ [DbMultipleDataIterator, DbMultipleKeyDataIterator,
+ DbMultipleRecnoDataIterator])
+include(m4/m4.seealso)
+
+m4_pf_header(Bulk Retrieval API,
+ifelse(M4API, C_API, [dnl
+])
+ifelse(M4API, CXX_API, [dnl
+class DbMultipleDataIterator
+{
+public:
+ DbMultipleDataIterator(const Dbt &dbt);
+m4_blank
+ bool next(Dbt &data);
+};
+m4_blank
+class DbMultipleKeyDataIterator
+{
+public:
+ DbMultipleKeyDataIterator(const Dbt &dbt);
+m4_blank
+ bool next(Dbt &key, Dbt &data);
+};
+m4_blank
+class DbMultipleRecnoDataIterator
+{
+public:
+ DbMultipleRecnoDataIterator(const Dbt &dbt);
+m4_blank
+ bool next(db_recno_t &key, Dbt &data);
+};
+]))
+
+m4_p([dnl
+If either of the m4_ref(DB_MULTIPLE) or m4_ref(DB_MULTIPLE_KEY) flags
+were specified to the m4_ref(dbh_get) or m4_refT(dbc_get), the data
+m4_ref(Dbt) returned by those interfaces will refer to a buffer that
+is filled with data. Access to that data is through the following
+classes.])
+
+m4_p([dnl
+All instances of the bulk retrieval classes may be used only once, and
+to traverse the bulk retrieval buffer in the forward direction only.
+However, they are nondestructive, so multiple iterators can be
+instantiated and used on the same returned data m4_ref(Dbt).])
+
+m4_pf_description(DbMultipleIterator)
+m4_p([dnl
+The m4_ref(DbMultipleIterator) is a shared package-private base class
+for the three types of bulk-return Iterator; it should never be
+instantiated directly, but it handles the functionality shared by its
+subclasses.])
+
+m4_pf_description(DbMultipleDataIterator)
+m4_p([dnl
+The m4_ref(DbMultipleDataIterator) class is used to iterate through data
+returned using the m4_ref(DB_MULTIPLE) flag from a database belonging
+to any access method.])
+
+m4_p([dnl
+The constructor takes the data m4_ref(Dbt) returned by the call to
+m4_ref(dbh_get) or m4_ref(dbc_get) that used the m4_ref(DB_MULTIPLE)
+flag.])
+m4_parambegin
+m4_param(dbt, [dnl
+The m4_arg(dbt) parameter is a data m4_ref(Dbt) returned by the call to
+m4_ref(dbh_get) or m4_ref(dbc_get) that used the m4_ref(DB_MULTIPLE)
+flag.])
+m4_paramend
+
+m4_pf_description(DbMultipleDataIterator.next)
+m4_p([dnl
+The DbMultipleDataIterator.next method takes a m4_ref(Dbt) that will be
+filled in with a reference to a buffer, a size, and an offset that
+together yield the next data item in the original bulk retrieval buffer.])
+m4_p([dnl
+The DbMultipleDataIterator.next method returns false if no more data are
+available, and true otherwise.])
+m4_parambegin
+m4_param(data, [dnl
+The m4_arg(data) parameter is a m4_ref(Dbt) that will be filled in with
+a reference to a buffer, a size, and an offset that together yield the
+next data item in the original bulk retrieval buffer.])
+m4_paramend
+
+m4_pf_description(DbMultipleKeyDataIterator)
+m4_p([dnl
+The m4_ref(DbMultipleKeyDataIterator) class is used to iterate through
+data returned using the m4_ref(DB_MULTIPLE_KEY) flag from a database
+belonging to the Btree or Hash access methods.])
+
+m4_p([dnl
+The constructor takes the data m4_ref(Dbt) returned by the call to
+m4_ref(dbh_get) or m4_ref(dbc_get) that used the m4_ref(DB_MULTIPLE_KEY)
+flag.])
+m4_parambegin
+m4_param(dbt, [dnl
+The m4_arg(dbt) parameter is a data m4_ref(Dbt) returned by the call to
+m4_ref(dbh_get) or m4_ref(dbc_get) that used the m4_ref(DB_MULTIPLE_KEY)
+flag.])
+m4_paramend
+
+m4_pf_description(DbMultipleKeyDataIterator.next)
+m4_p([dnl
+The DbMultipleKeyDataIterator.next method takes two m4_ref(Dbt)s, one
+for a key and one for a data item, that will each be filled in with a
+reference to a buffer, a size, and an offset that together yield the
+next key and data item in the original bulk retrieval buffer. The
+DbMultipleKeyDataIterator.next method returns false if no more data are
+available, and true otherwise.])
+m4_p([dnl
+The DbMultipleKeyDataIterator.next method returns false if no more data
+are available, and true otherwise.])
+m4_parambegin
+m4_param(key, [dnl
+The m4_arg(key) parameter will be filled in with a reference to a buffer,
+a size, and an offset that yields the next key item in the original bulk
+retrieval buffer.])
+m4_param(data, [dnl
+The m4_arg(data) parameter will be filled in with a reference to a buffer,
+a size, and an offset that yields the next data item in the original bulk
+retrieval buffer.])
+m4_paramend
+
+m4_pf_description(DbMultipleRecnoDataIterator)
+m4_p([dnl
+This class is used to iterate through data returned using the
+m4_ref(DB_MULTIPLE_KEY) flag from a database belonging to the Recno or
+Queue access methods.])
+
+m4_p([dnl
+The constructor takes the data m4_ref(Dbt) returned by the call to
+m4_ref(dbh_get) or m4_ref(dbc_get) that used the m4_ref(DB_MULTIPLE_KEY)
+flag.])
+m4_parambegin
+m4_param(dbt, [dnl
+The m4_arg(dbt) parameter is a data m4_ref(Dbt) returned by the call to
+m4_ref(dbh_get) or m4_ref(dbc_get) that used the m4_ref(DB_MULTIPLE_KEY)
+flag.])
+m4_paramend
+
+m4_pf_description(DbMultipleRecnoDataIterator.next)
+ifelse(M4API, CXX_API, [dnl
+The DbMultipleRecnoDataIterator.next method takes a m4_arg(db_recno_t)
+for the key and a m4_ref(Dbt) for a data item, which will be filled in
+with a pointer to a buffer and a size. Together they yield the next key
+and data item in the original bulk retrieval buffer.])
+m4_p([dnl
+The DbMultipleRecnoDataIterator.next method returns false if no more
+data are available, and true otherwise.])
+m4_parambegin
+m4_param(key, [dnl
+The m4_arg(key) parameter will be filled in with a reference to a
+buffer, a size, and an offset that yields the next key item in the
+original bulk retrieval buffer.])
+m4_param(data, [dnl
+The m4_arg(data) parameter will be filled in with a reference to a
+buffer, a size, and an offset that yields the next data item in the
+original bulk retrieval buffer.])
+m4_paramend
+
+m4_page_footer
diff --git a/db/docs_src/db/dbt_c.so b/db/docs_src/db/dbt_c.so
new file mode 100644
index 000000000..ec1007d23
--- /dev/null
+++ b/db/docs_src/db/dbt_c.so
@@ -0,0 +1,176 @@
+m4_comment([$Id: dbt_c.so,v 10.52 2007/02/27 00:41:24 mjc Exp $])
+
+define(M4PAGELOCAL,
+ [Dbt, DB_BUFFER_SMALL,
+ DB_DBT_MALLOC, DB_DBT_PARTIAL, DB_DBT_REALLOC, DB_DBT_USERMEM])
+
+m4_page_header(DBT, [DBT: Key/Data Pairs], yes)
+
+m4_idefz(key/data pairs)
+m4_p([dnl
+Storage and retrieval for the m4_db access methods are based on key/data
+pairs. Both key and data items are represented by the DBT data
+structure. (The name m4_italic(DBT) is a mnemonic for m4_italic(data
+base thang), and was used because no one could think of a reasonable
+name that wasn't already in use somewhere else.) Key and data byte
+strings may refer to strings of zero length up to strings of
+essentially unlimited length. See m4_link(M4RELDIR/ref/am_misc/dbsizes,
+[Database limits]) for more information.])
+
+m4_indent([dnl
+typedef struct {
+ void *data;
+ u_int32_t size;
+ u_int32_t ulen;
+ u_int32_t dlen;
+ u_int32_t doff;
+ u_int32_t flags;
+} DBT;])
+
+m4_p([dnl
+In order to ensure compatibility with future releases of m4_db, all
+fields of the DBT structure that are not explicitly set should be
+initialized to nul bytes before the first time the structure is used.
+Do this by declaring the structure external or static, or by calling
+the C library routine m4_manref(bzero, 3) or m4_manref(memset, 3).])
+
+m4_p([dnl
+By default, the m4_arg(flags) structure element is expected to be set
+to 0. In this default case, when the application is providing m4_db a
+key or data item to store into the database, m4_db expects the
+m4_arg(data) structure element to point to a byte string of m4_arg(size)
+bytes. When returning a key/data item to the application, m4_db will
+store into the m4_arg(data) structure element a pointer to a byte string
+of m4_arg(size) bytes, and the memory to which the pointer refers will be
+allocated and managed by m4_db.])
+
+m4_p([The elements of the DBT structure are defined as follows:])
+
+m4_tagbegin
+
+m4_tag([void *m4_idef(data);], [A pointer to a byte string.])
+m4_tag([u_int32_t m4_idef(size);], [The length of m4_arg(data), in bytes.])
+m4_tag([u_int32_t m4_idef(ulen);], [dnl
+The size of the user's buffer (to which m4_arg(data) refers), in bytes.
+This location is not written by the m4_db functions.
+m4_p([dnl
+Note that applications can determine the length of a record by setting
+the m4_arg(ulen) field to 0 and checking the return value in the
+m4_arg(size) field. See the DB_DBT_USERMEM flag for more information.])])
+
+m4_tag([u_int32_t m4_idef(dlen);], [dnl
+The length of the partial record being read or written by the application,
+in bytes. See the DB_DBT_PARTIAL flag for more information.])
+
+m4_tag([u_int32_t m4_idef(doff);], [dnl
+The offset of the partial record being read or written by the application,
+in bytes. See the DB_DBT_PARTIAL flag for more information.])
+
+m4_tag([u_int32_t flags;], [dnl
+m4_sf_or_may
+
+m4_tagbegin
+
+m4_tag(m4_idef(DB_DBT_MALLOC), [dnl
+When this flag is set, m4_db will allocate memory for the returned key
+or data item (using m4_manref(malloc, 3), or the user-specified malloc
+function), and return a pointer to it in the m4_arg(data) field of the
+key or data DBT structure. Because any allocated memory becomes the
+responsibility of the calling application, the caller must determine
+whether memory was allocated using the returned value of the
+m4_arg(data) field.
+m4_p([dnl
+It is an error to specify more than one of m4_ref(DB_DBT_MALLOC),
+m4_ref(DB_DBT_REALLOC), and m4_ref(DB_DBT_USERMEM).])])
+
+m4_tag(m4_idef(DB_DBT_REALLOC), [dnl
+When this flag is set m4_db will allocate memory for the returned key
+or data item (using m4_manref(realloc, 3), or the user-specified realloc
+function), and return a pointer to it in the m4_arg(data) field of the
+key or data DBT structure. Because any allocated memory becomes the
+responsibility of the calling application, the caller must determine
+whether memory was allocated using the returned value of the
+m4_arg(data) field.
+m4_p([dnl
+The difference between m4_ref(DB_DBT_MALLOC) and m4_ref(DB_DBT_REALLOC)
+is that the latter will call m4_manref(realloc, 3) instead of
+m4_manref(malloc, 3), so the allocated memory will be grown as necessary
+instead of the application doing repeated free/malloc calls.])
+m4_p([dnl
+It is an error to specify more than one of m4_ref(DB_DBT_MALLOC),
+m4_ref(DB_DBT_REALLOC), and m4_ref(DB_DBT_USERMEM).])])
+
+m4_idefz(DB_BUFFER_SMALL)
+m4_tag(m4_idef(DB_DBT_USERMEM), [dnl
+The m4_arg(data) field of the key or data structure must refer to
+memory that is at least m4_arg(ulen) bytes in length. If the length of
+the requested item is less than or equal to that number of bytes, the
+item is copied into the memory to which the m4_arg(data) field refers.
+Otherwise, the m4_arg(size) field is set to the length needed for the
+requested item, and the error m4_ref(DB_BUFFER_SMALL) is returned.
+m4_p([dnl
+It is an error to specify more than one of m4_ref(DB_DBT_MALLOC),
+m4_ref(DB_DBT_REALLOC), and m4_ref(DB_DBT_USERMEM).])])
+
+m4_tag(m4_idef(DB_DBT_PARTIAL), [dnl
+Do partial retrieval or storage of an item. If the calling application
+is doing a get, the m4_arg(dlen) bytes starting m4_arg(doff) bytes from
+the beginning of the retrieved data record are returned as if they
+comprised the entire record. If any or all of the specified bytes do
+not exist in the record, the get is successful, and any existing bytes
+are returned.
+m4_p([dnl
+For example, if the data portion of a retrieved record was 100 bytes,
+and a partial retrieval was done using a DBT having a m4_arg(dlen)
+field of 20 and a m4_arg(doff) field of 85, the get call would succeed,
+the m4_arg(data) field would refer to the last 15 bytes of the record,
+and the m4_arg(size) field would be set to 15.])
+m4_p([dnl
+If the calling application is doing a put, the m4_arg(dlen) bytes
+starting m4_arg(doff) bytes from the beginning of the specified key's
+data record are replaced by the data specified by the m4_arg(data) and
+m4_arg(size) structure elements. If m4_arg(dlen) is smaller than
+m4_arg(size), the record will grow; if m4_arg(dlen) is larger than
+m4_arg(size), the record will shrink. If the specified bytes do not
+exist, the record will be extended using nul bytes as necessary, and
+the put call will succeed.])
+m4_p([dnl
+It is an error to attempt a partial put using the m4_ref(dbh_put) function
+in a database that supports duplicate records.
+Partial puts in databases supporting duplicate records must be done
+using a m4_ref(dbc_put) function.])
+m4_p([dnl
+It is an error to attempt a partial put with differing m4_arg(dlen) and
+m4_arg(size) values in Queue or Recno databases with fixed-length records.])
+m4_p([dnl
+For example, if the data portion of a retrieved record was 100 bytes,
+and a partial put was done using a DBT having a m4_arg(dlen) field of 20,
+a m4_arg(doff) field of 85, and a m4_arg(size) field of 30, the resulting
+record would be 115 bytes in length, where the last 30 bytes would be
+those specified by the put call.])])
+
+m4_tag(m4_idef(DB_DBT_APPMALLOC), [dnl
+After an application-supplied callback routine passed to either
+m4_ref(dbh_associate) or m4_ref(dbh_set_append_recno) is executed, the
+m4_arg(data) field of a m4_ref(Dbt) may refer to memory allocated with
+m4_manref(malloc, 3) or m4_manref(realloc, 3). In that case, the
+callback sets the m4_ref(DB_DBT_APPMALLOC) flag in the m4_ref(Dbt) so
+that m4_db will call m4_manref(free, 3) to deallocate the memory when it
+is no longer required.])
+
+m4_tag(m4_idef(DB_DBT_MULTIPLE), [dnl
+Set in a secondary key creation callback routine passed to
+m4_ref(dbh_associate) to indicate that multiple secondary keys should be
+associated with the given primary key/data pair. If set, the
+m4_arg(size) field indicates the number of secondary keys and the
+m4_arg(data) field refers to an array of that number of m4_ref(Dbt)
+structures.
+m4_p([dnl
+The m4_ref(DB_DBT_APPMALLOC) flag may be set on any of the m4_ref(Dbt)
+structures to indicate that their m4_arg(data) field needs to be
+freed.])])
+
+m4_tagend])
+m4_tagend
+
+m4_page_footer
diff --git a/db/docs_src/db/dbt_class.so b/db/docs_src/db/dbt_class.so
new file mode 100644
index 000000000..3a823f78e
--- /dev/null
+++ b/db/docs_src/db/dbt_class.so
@@ -0,0 +1,3 @@
+m4_comment([$Id: dbt_class.so,v 10.1 2002/08/24 18:22:30 bostic Exp $])
+
+include(ifelse(M4API, C_API, db/dbt_c.so, db/dbt_cxx.so))
diff --git a/db/docs_src/db/dbt_cxx.so b/db/docs_src/db/dbt_cxx.so
new file mode 100644
index 000000000..a30f10390
--- /dev/null
+++ b/db/docs_src/db/dbt_cxx.so
@@ -0,0 +1,341 @@
+m4_comment([$Id: dbt_cxx.so,v 10.72 2007/02/27 00:41:24 mjc Exp $])
+
+define(M4PAGELOCAL,
+ [Dbt, DB_BUFFER_SMALL, DB_DBT_APPMALLOC, DB_DBT_MALLOC,
+ DB_DBT_REALLOC, DB_DBT_USERMEM, DB_DBT_PARTIAL,
+ DB_DBT_APPMALLOC, DB_DBT_MULTIPLE,
+ dbt_get_data, dbt_get_dlen, dbt_get_doff, dbt_get_flags,
+ dbt_get_offset, dbt_get_recno_key_data, dbt_get_size, dbt_get_ulen,
+ dbt_set_data, dbt_set_dlen, dbt_set_doff, dbt_set_flags,
+ dbt_set_offset, dbt_set_recno_key_data, dbt_set_size, dbt_set_ulen])
+
+m4_pf_header(m4_ref(Dbt), [dnl
+class Dbt {
+public:
+ Dbt(void *data, size_t size);
+ Dbt();
+ Dbt(const Dbt &);
+ Dbt &operator = (const Dbt &);
+ ~Dbt();
+m4_blank
+ void *get_data() const;
+ void set_data(void *);
+m4_blank
+ u_int32_t get_size() const;
+ void set_size(u_int32_t);
+m4_blank
+ u_int32_t get_ulen() const;
+ void set_ulen(u_int32_t);
+m4_blank
+ u_int32_t get_dlen() const;
+ void set_dlen(u_int32_t);
+m4_blank
+ u_int32_t get_doff() const;
+ void set_doff(u_int32_t);
+m4_blank
+ u_int32_t get_flags() const;
+ void set_flags(u_int32_t);
+m4_blank
+ DBT *Dbt::get_DBT();
+ const DBT *Dbt::get_const_DBT() const;
+ static Dbt *Dbt::get_Dbt(DBT *dbt);
+ static const Dbt *Dbt::get_const_Dbt(const DBT *dbt);
+};])
+
+m4_p([dnl
+This information describes the specific details of the m4_ref(Dbt) class,
+used to encode keys and data items in a database.])
+
+m4_idefz(key/data pairs)
+m4_section([Key/Data Pairs])
+m4_p([dnl
+Storage and retrieval for the m4_ref(Db) access methods are based on
+key/data pairs. Both key and data items are represented by m4_ref(Dbt)
+objects. Key and data byte strings may refer to strings of zero length
+up to strings of essentially unlimited length. See
+m4_link(M4RELDIR/ref/am_misc/dbsizes, [Database limits]) for more
+information.])
+
+m4_p([dnl
+The m4_ref(Dbt) class provides simple access to an underlying data
+structure, whose elements can be examined or changed using the usual
+m4_bold(set) or m4_bold(get) methods. m4_ref(Dbt) can be subclassed,
+providing a way to associate with it additional data or references to
+other structures.])
+
+m4_p([dnl
+The constructors set all elements of the underlying structure to zero.
+The constructor with two parameters has the effect of setting all elements
+to zero except for the m4_arg(data) and m4_arg(size) elements.])
+
+m4_p([dnl
+In the case in which the m4_arg(flags) structure element is set to 0, when
+the application is providing m4_db a key or data item to store into the
+database, m4_db expects the m4_arg(data) object to point to a byte
+string of m4_arg(size) bytes. When returning a key/data item to the
+application, m4_db will store into the m4_arg(data) object a pointer to
+a byte string of m4_arg(size) bytes, and the memory to which the pointer
+refers will be allocated and managed by m4_db.])
+
+m4_p([dnl
+Access to m4_ref(Dbt) objects is not re-entrant. In particular, if
+multiple threads simultaneously access the same m4_ref(Dbt) object using
+m4_ref(Db) API calls, the results are undefined, and may result in a
+crash. One easy way to avoid problems is to use m4_ref(Dbt) objects
+that are constructed as stack variables.])
+
+m4_p([dnl
+Each m4_ref(Dbt) object has an associated DBT struct, which is used by
+the underlying implementation of m4_db and its C-language API. The
+Dbt::get_DBT method returns a pointer to this struct. Given a const
+m4_ref(Dbt) object, Dbt::get_const_DBT returns a const pointer to the
+same struct.])
+
+m4_p([dnl
+Given a DBT struct, the Dbt::get_Dbt method returns the corresponding
+m4_ref(Dbt) object, if there is one. If the DBT object was not
+associated with a m4_ref(Dbt) (that is, it was not returned from a call
+to Dbt::get_DBT), then the result of Dbt::get_Dbt is undefined. Given
+a const DBT struct, Dbt::get_const_Dbt returns the associated const
+m4_ref(Dbt) object, if there is one.])
+
+m4_p([dnl
+These methods may be useful for m4_db applications including both C
+and C++ language software. It should not be necessary to use these
+calls in a purely C++ application.])
+
+m4_pf_description(m4_ref(dbt_set_data))
+m4_p([dnl
+Set the data array.])
+m4_parambegin
+m4_param(data, [dnl
+The m4_arg(data) parameter is an array of bytes to be used to set the
+content for the m4_ref(Dbt).])
+m4_paramend
+
+m4_pf_description(m4_ref(dbt_get_data))
+m4_p([dnl
+Return the data array.])
+
+m4_pf_description(m4_ref(dbt_set_recno_key_data))
+m4_p([dnl
+Initialize the data array from a logical record number. Recno database
+records are ordered by integer keys starting at 1. When the
+m4_refT(dbt_set_recno_key_data) is called, the data, size and offset
+fields in the m4_ref(Dbt) are implicitly set to hold a byte array
+representation of the integer key.])
+m4_parambegin
+m4_param(recno, [dnl
+The m4_arg(recno) parameter logical record number used to initialize the
+data array.])
+m4_paramend
+
+m4_pf_description(m4_ref(dbt_get_recno_key_data))
+m4_p([dnl
+Return an object from the data array, expecting that data to be a
+logical record number.])
+
+m4_pf_description(m4_ref(dbt_set_offset))
+m4_p([dnl
+Set the byte offset into the data array.])
+m4_p([dnl
+The number of bytes offset into the m4_arg(data) array determine the
+portion of the array actually used. This element is accessed using
+m4_ref(dbt_get_offset) and m4_ref(dbt_set_offset).])
+m4_parambegin
+m4_param(offset, [dnl
+The m4_arg(offset) parameter is the byte offset into the data array.])
+m4_paramend
+
+m4_pf_description(m4_ref(dbt_get_offset))
+m4_p([dnl
+Return the byte offset into the data array.])
+
+m4_pf_description(m4_ref(dbt_set_size))
+m4_p([dnl
+Set the byte size of the data array.])
+m4_parambegin
+m4_param(size, [dnl
+The m4_arg(size) parameter is the size of the data array in bytes.])
+m4_paramend
+
+m4_pf_description(m4_ref(dbt_get_size))
+m4_p([dnl
+Return the data array size.])
+
+m4_pf_description(m4_ref(dbt_set_ulen))
+m4_p([dnl
+Set the byte size of the user-specified buffer.])
+m4_p([dnl
+Note that applications can determine the length of a record by setting
+the m4_arg(ulen) to 0 and checking the return value found in m4_arg(size).
+See the m4_ref(DB_DBT_USERMEM) flag for more information.])
+m4_parambegin
+m4_param(ulen, [dnl
+The m4_arg(ulen) parameter the size of the data array in bytes.])
+m4_paramend
+
+m4_pf_description(m4_ref(dbt_get_ulen))
+m4_p([dnl
+Return the length in bytes of the user-specified buffer.])
+
+m4_pf_description(m4_ref(dbt_set_dlen))
+m4_p([dnl
+Set the byte length of the partial record being read or written by the
+application, in bytes. See the m4_ref(DB_DBT_PARTIAL) flag for more
+information.])
+m4_parambegin
+m4_param(dlen, [dnl
+The m4_arg(dlen) parameter is the length of the partial record in bytes.])
+m4_paramend
+
+m4_pf_description(m4_ref(dbt_get_dlen))
+m4_p([dnl
+Return the length of the partial record, in bytes.])
+
+m4_pf_description(m4_ref(dbt_set_doff))
+m4_p([dnl
+Set the offset of the partial record being read or written by the
+application, in bytes. See the m4_ref(DB_DBT_PARTIAL) flag for more
+information.])
+m4_parambegin
+m4_param(doff, [dnl
+The m4_arg(doff) parameter is the offset of the partial record.])
+m4_paramend
+
+m4_pf_description(m4_ref(dbt_get_doff))
+m4_p([dnl
+Return the offset of the partial record, in bytes.])
+
+m4_pf_description(m4_ref(dbt_set_flags))
+m4_p([dnl
+Set the object flag value.])
+m4_parambegin
+m4_param(flags, [dnl
+The m4_arg(flags) parameter is m4_ref(Dbt) flag value.])
+m4_sf_or_may
+
+m4_tagbegin
+
+m4_tag(m4_idef(DB_DBT_MALLOC), [dnl
+When this flag is set, m4_db will allocate memory for the returned key
+or data item (using m4_manref(malloc, 3) or the user-specified malloc
+method), and return a pointer to it in the m4_arg(data) field of the key
+or data m4_ref(Dbt) object. Because any allocated memory becomes the
+responsibility of the calling application, the caller must determine
+whether memory was allocated using the returned value of the
+m4_arg(data) field.
+m4_p([dnl
+It is an error to specify more than one of m4_ref(DB_DBT_MALLOC),
+m4_ref(DB_DBT_REALLOC), and m4_ref(DB_DBT_USERMEM).])])
+
+m4_tag(m4_idef(DB_DBT_REALLOC), [dnl
+When this flag is set m4_db will allocate memory for the returned key
+or data item (using m4_manref(realloc, 3) or the user-specified realloc
+method), and return a pointer to it in the m4_arg(data) field of the key
+or data m4_ref(Dbt) object. Because any allocated memory becomes the
+responsibility of the calling application, the caller must determine
+whether memory was allocated using the returned value of the
+m4_arg(data) field.
+m4_p([dnl
+It is an error to specify more than one of m4_ref(DB_DBT_MALLOC),
+m4_ref(DB_DBT_REALLOC), and m4_ref(DB_DBT_USERMEM).])])
+
+m4_idefz(DB_BUFFER_SMALL)
+m4_tag(m4_idef(DB_DBT_USERMEM), [dnl
+The m4_arg(data) field of the key or data object must refer to memory
+that is at least m4_arg(ulen) bytes in length. If the length of the
+requested item is less than or equal to that number of bytes, the item
+is copied into the memory referred to by the m4_arg(data) field.
+Otherwise, the m4_arg(size) fields of both the key and data m4_ref(Dbt)
+objects are set to the length needed for the requested item, and the
+error m4_ref(DB_BUFFER_SMALL) is returned.
+m4_p([dnl
+It is an error to specify more than one of m4_ref(DB_DBT_MALLOC),
+m4_ref(DB_DBT_REALLOC), and m4_ref(DB_DBT_USERMEM).])])
+
+m4_tagend
+
+m4_p([dnl
+If m4_ref(DB_DBT_MALLOC) or m4_ref(DB_DBT_REALLOC) is specified, m4_db
+allocates a properly sized byte array to contain the data. This can be
+convenient if you know little about the nature of the data, specifically
+the size of data in the database. However, if your application makes
+repeated calls to retrieve keys or data, you may notice increased garbage
+collection due to this allocation. If you know the maximum size of data
+you are retrieving, you might decrease the memory burden and speed your
+application by allocating your own byte array and using
+m4_ref(DB_DBT_USERMEM). Even if you don't know the maximum size, you can
+use this option and reallocate your array whenever your retrieval API call
+returns an m4_ref(DB_BUFFER_SMALL) error or throws an exception
+encapsulating an m4_ref(DB_BUFFER_SMALL).])
+
+m4_tagbegin
+
+m4_tag(m4_idef(DB_DBT_PARTIAL), [dnl
+Do partial retrieval or storage of an item. If the calling application
+is doing a get, the m4_arg(dlen) bytes starting m4_arg(doff) bytes from
+the beginning of the retrieved data record are returned as if they
+comprised the entire record. If any or all of the specified bytes do
+not exist in the record, the get is successful, and any existing bytes
+are returned.
+m4_p([dnl
+For example, if the data portion of a retrieved record was 100 bytes,
+and a partial retrieval was done using a m4_ref(Dbt) having a m4_arg(dlen)
+field of 20 and a m4_arg(doff) field of 85, the get call would succeed,
+the m4_arg(data) field would refer to the last 15 bytes of the record,
+and the m4_arg(size) field would be set to 15.])
+m4_p([dnl
+If the calling application is doing a put, the m4_arg(dlen) bytes starting
+m4_arg(doff) bytes from the beginning of the specified key's data record
+are replaced by the data specified by the m4_arg(data) and m4_arg(size)
+objects.
+If m4_arg(dlen) is smaller than m4_arg(size), the record will grow; if
+m4_arg(dlen) is larger than m4_arg(size), the record will shrink.
+If the specified bytes do not exist, the record will be extended using nul
+bytes as necessary, and the put call will succeed.])
+m4_p([dnl
+It is an error to attempt a partial put using the m4_ref(dbh_put)
+method in a database that supports duplicate records.
+Partial puts in databases supporting duplicate records must be done
+using a m4_ref(Dbc) method.])
+m4_p([dnl
+It is an error to attempt a partial put with differing m4_arg(dlen) and
+m4_arg(size) values in Queue or Recno databases with fixed-length records.])
+m4_p([dnl
+For example, if the data portion of a retrieved record was 100 bytes,
+and a partial put was done using a m4_ref(Dbt) having a m4_arg(dlen)
+field of 20, a m4_arg(doff) field of 85, and a m4_arg(size) field of 30,
+the resulting record would be 115 bytes in length, where the last 30
+bytes would be those specified by the put call.])])
+
+m4_tag(m4_idef(DB_DBT_APPMALLOC), [dnl
+After an application-supplied callback routine passed to either
+m4_ref(dbh_associate) or m4_ref(dbh_set_append_recno) is executed, the
+m4_arg(data) field of a m4_ref(Dbt) may refer to memory allocated with
+m4_manref(malloc, 3) or m4_manref(realloc, 3). In that case, the
+callback sets the m4_ref(DB_DBT_APPMALLOC) flag in the m4_ref(Dbt) so
+that m4_db will call m4_manref(free, 3) to deallocate the memory when it
+is no longer required.])
+
+m4_tag(m4_idef(DB_DBT_MULTIPLE), [dnl
+Set in a secondary key creation callback routine passed to
+m4_ref(dbh_associate) to indicate that multiple secondary keys should be
+associated with the given primary key/data pair. If set, the
+m4_arg(size) field indicates the number of secondary keys and the
+m4_arg(data) field refers to an array of that number of m4_ref(Dbt)
+structures.
+m4_p([dnl
+The m4_ref(DB_DBT_APPMALLOC) flag may be set on any of the m4_ref(Dbt)
+structures to indicate that their m4_arg(data) field needs to be
+freed.])])
+
+m4_tagend
+
+m4_paramend
+
+m4_pf_description(m4_ref(dbt_get_flags))
+m4_p([dnl
+Return the object flag value.])
+
+m4_page_footer
diff --git a/db/docs_src/db/m4.methods b/db/docs_src/db/m4.methods
new file mode 100644
index 000000000..bd10af51e
--- /dev/null
+++ b/db/docs_src/db/m4.methods
@@ -0,0 +1,64 @@
+m4_comment([$Id: m4.methods,v 1.14 2007/07/12 18:27:42 bostic Exp $])
+
+m4_table_begin(, _center)
+
+m4_table_header(Database Operations, Description)
+m4_comment([Db::])m4_table_element(m4_ref(ifelse(M4API, C_API, dbh_create, Db)), Create a database handle)
+m4_comment([Db::associate])m4_table_element(m4_ref(dbh_associate), Associate a secondary index)
+m4_comment([Db::close])m4_table_element(m4_ref(dbh_close), Close a database)
+m4_comment([Db::compact])m4_table_element(m4_ref(dbh_compact), Compact a database)
+m4_comment([Db::cursor])m4_table_element(m4_ref(dbh_cursor), Create a cursor)
+m4_comment([Db::del])m4_table_element(m4_ref(dbh_del), Delete items from a database)
+m4_comment([Db::err])m4_table_element([m4_ref(dbh_err), m4_ref(dbh_errx)], Error message)
+m4_comment([Db::exists])m4_table_element(m4_ref(dbh_exists), Return if an item appears in a database)
+m4_comment([Db::fd])m4_table_element(m4_ref(dbh_fd), Return a file descriptor from a database)
+m4_comment([Db::get])m4_table_element([m4_ref(dbh_get), m4_ref(dbh_pget)], Get items from a database)
+m4_comment([Db::get_byteswapped])m4_table_element(m4_ref(dbh_get_byteswapped), Return if the underlying database is in host order)
+m4_comment([Db::get_type])m4_table_element(m4_ref(dbh_get_type), Return the database type)
+m4_comment([Db::join])m4_table_element(m4_ref(dbh_join), Perform a database join on cursors)
+m4_comment([Db::key_range])m4_table_element(m4_ref(dbh_key_range), Return estimate of key location)
+m4_comment([Db::open])m4_table_element(m4_ref(dbh_open), Open a database)
+m4_comment([Db::put])m4_table_element(m4_ref(dbh_put), Store items into a database)
+m4_comment([Db::remove])m4_table_element(m4_ref(dbh_remove), Remove a database)
+m4_comment([Db::rename])m4_table_element(m4_ref(dbh_rename), Rename a database)
+m4_comment([Db::set_priority])m4_table_element([m4_ref(dbh_set_priority)], Set cache page priority)
+m4_comment([Db::stat])m4_table_element([m4_ref(dbh_stat), m4_ref(dbh_stat_print)], Database statistics)
+m4_comment([Db::sync])m4_table_element(m4_ref(dbh_sync), Flush a database to stable storage)
+m4_comment([Db::truncate])m4_table_element(m4_ref(dbh_truncate), Empty a database)
+m4_comment([Db::upgrade])m4_table_element(m4_ref(dbh_upgrade), Upgrade a database)
+m4_comment([Db::verify])m4_table_element(m4_ref(dbh_verify), Verify/salvage a database)
+
+m4_table_header(Database Configuration, _empty)
+m4_comment([Db::set_alloc])m4_table_element( m4_ref(dbh_set_alloc), Set local space allocation functions)
+m4_comment([Db::set_cachesize])m4_table_element(m4_ref(dbh_set_cachesize), Set the database cache size)
+m4_comment([Db::set_dup_compare])m4_table_element(m4_ref(dbh_set_dup_compare), Set a duplicate comparison function)
+m4_comment([Db::set_encrypt])m4_table_element(m4_ref(dbh_set_encrypt), Set the database cryptographic key)
+m4_comment([Db::set_errcall])m4_table_element([m4_ref(dbh_set_errcall), m4_ref(dbh_set_msgcall)], Set error and informational message callback)
+m4_comment([Db::set_errfile])m4_table_element([m4_ref(dbh_set_errfile), m4_ref(dbh_set_msgfile)], Set error and informational message FILE)
+m4_comment([Db::set_error_stream])ifelse(M4API, C_API,, [m4_table_element([m4_ref(dbh_set_error_stream), m4_ref(dbh_set_message_stream)], Set error and informational message output stream)])
+m4_comment([Db::set_errpfx])m4_table_element(m4_ref(dbh_set_errpfx), Set error message prefix)
+m4_comment([Db::set_feedback])m4_table_element(m4_ref(dbh_set_feedback), Set feedback callback)
+m4_comment([Db::set_flags])m4_table_element(m4_ref(dbh_set_flags), General database configuration)
+m4_comment([Db::set_lorder])m4_table_element(m4_ref(dbh_set_lorder), Set the database byte order)
+m4_comment([Db::set_pagesize])m4_table_element(m4_ref(dbh_set_pagesize), Set the underlying database page size)
+
+m4_table_header(Btree/Recno Configuration, _empty)
+m4_comment([Db::set_append_recno])m4_table_element(m4_ref(dbh_set_append_recno), Set record append callback)
+m4_comment([Db::set_bt_compare])m4_table_element(m4_ref(dbh_set_bt_compare), Set a Btree comparison function)
+m4_comment([Db::set_bt_minkey])m4_table_element(m4_ref(dbh_set_bt_minkey), Set the minimum number of keys per Btree page)
+m4_comment([Db::set_bt_prefix])m4_table_element(m4_ref(dbh_set_bt_prefix), Set a Btree prefix comparison function)
+m4_comment([Db::set_re_delim])m4_table_element(m4_ref(dbh_set_re_delim), Set the variable-length record delimiter)
+m4_comment([Db::set_re_len])m4_table_element(m4_ref(dbh_set_re_len), Set the fixed-length record length)
+m4_comment([Db::set_re_pad])m4_table_element(m4_ref(dbh_set_re_pad), Set the fixed-length record pad byte)
+m4_comment([Db::set_re_source])m4_table_element(m4_ref(dbh_set_re_source), Set the backing Recno text file)
+
+m4_table_header(Hash Configuration, _empty)
+m4_comment([Db::set_h_compare])m4_table_element(m4_ref(dbh_set_h_compare), Set a Hash comparison function)
+m4_comment([Db::set_h_ffactor])m4_table_element(m4_ref(dbh_set_h_ffactor), Set the Hash table density)
+m4_comment([Db::set_h_hash])m4_table_element(m4_ref(dbh_set_h_hash), Set a hashing function)
+m4_comment([Db::set_h_nelem])m4_table_element(m4_ref(dbh_set_h_nelem), Set the Hash table size)
+
+m4_table_header(Queue Configuration, _empty)
+m4_comment([Db::set_q_extentsize])m4_table_element(m4_ref(dbh_set_q_extentsize), Set Queue database extent size)
+
+m4_table_end
diff --git a/db/docs_src/db_except/except_class.so b/db/docs_src/db_except/except_class.so
new file mode 100644
index 000000000..aca6683fd
--- /dev/null
+++ b/db/docs_src/db_except/except_class.so
@@ -0,0 +1,53 @@
+m4_comment([$Id: except_class.so,v 10.38 2004/09/28 15:04:19 bostic Exp $])
+
+define(M4PAGELOCAL,
+ [DbException, except_get_env, except_get_errno, except_what])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(DbException),
+ifelse(M4API, CXX_API, [dnl
+class DbException {
+public:
+ int get_errno() const;
+ virtual const char *what() const;
+ DbEnv *get_env() const;
+};
+]))
+
+m4_p([dnl
+This information describes the m4_ref(DbException) class and how it is
+used by the various m4_db classes.])
+
+ifelse(M4API, CXX_API, [dnl
+m4_p([dnl
+Most methods in the m4_db classes return an int, but also throw an
+exception. This allows for two different error behaviors. By default,
+the m4_db C++ API is configured to throw an exception whenever a serious
+error occurs. This generally allows for cleaner logic for transaction
+processing because a try block can surround a single transaction.
+Alternatively, m4_db can be configured to not throw exceptions, and
+instead have the individual function return an error code, by setting
+the m4_ref(DB_CXX_NO_EXCEPTIONS) for the m4_ref(Db) and m4_ref(DbEnv)
+constructors.])
+
+m4_p([dnl
+A DbException object contains an informational string, an errno, and a
+reference to the environment from which the exception was thrown. The
+errno can be obtained by using m4_ref(except_get_errno), and can be
+used, in standard cases, to determine the type of the exception. The
+informational string can be obtained by using m4_ref(except_what). And,
+the environment can be obtained using m4_ref(except_get_env).])
+
+m4_p([dnl
+We expect in the future that this class will inherit from the standard
+class exception, but certain language implementation bugs currently
+prevent this on some platforms.])])
+
+m4_p([dnl
+Some methods may return non-zero values without issuing an exception.
+This occurs in situations that are not normally considered an error, but
+when some informational status is returned. For example,
+m4_ref(dbh_get) returns m4_ref(DB_NOTFOUND) when a requested key does
+not appear in the database.])
+
+m4_page_footer
diff --git a/db/docs_src/db_except/runrec_class.so b/db/docs_src/db_except/runrec_class.so
new file mode 100644
index 000000000..a0ed27916
--- /dev/null
+++ b/db/docs_src/db_except/runrec_class.so
@@ -0,0 +1,27 @@
+m4_comment([$Id: runrec_class.so,v 10.19 2004/08/13 03:38:56 bostic Exp $])
+
+define(M4PAGELOCAL, DbRunRecoveryException)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(DbRunRecoveryException),
+ifelse(M4API, C_API, [dnl
+])
+ifelse(M4API, CXX_API, [dnl
+class DbRunRecoveryException : public DbException { ... };
+]))
+
+m4_p([dnl
+This information describes the m4_ref(DbRunRecoveryException) class and
+how it is used by the various m4_db classes.])
+
+m4_p([dnl
+Errors can occur in the m4_db library where the only solution is to shut
+down the application and run recovery (for example, if m4_db is unable
+to allocate heap memory). When a fatal error occurs in m4_db, methods
+will throw a m4_ref(DbRunRecoveryException), at which point all
+subsequent m4_db calls will also fail in the same way. When this
+occurs, recovery should be performed.])
+m4_p([dnl
+The m4_ref(DbException) errno value is set to DB_RUNRECOVERY.])
+
+m4_page_footer
diff --git a/db/docs_src/dbc/dbc_class.so b/db/docs_src/dbc/dbc_class.so
new file mode 100644
index 000000000..e354949d6
--- /dev/null
+++ b/db/docs_src/dbc/dbc_class.so
@@ -0,0 +1,26 @@
+m4_comment([$Id: dbc_class.so,v 10.19 2004/08/13 03:38:56 bostic Exp $])
+
+define(M4PAGELOCAL, Dbc)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(Dbc),
+ifelse(M4API, C_API, [dnl
+typedef struct __dbc DBC;
+])
+ifelse(M4API, CXX_API, [dnl
+class Dbc { ... };
+]))
+
+m4_p([dnl
+The m4_ref(Dbc) object is the handle for a cursor into a m4_db database.
+The handle is not free-threaded. Cursor handles may be used by multiple
+threads, but only serially, that is, the application must serialize
+access to the m4_ref(Dbc) handle.])
+
+m4_p([dnl
+If the cursor is to be used to perform operations on behalf of a
+transaction, the cursor must be opened and closed within the context of
+that single transaction. Once m4_ref(dbc_close) has been called, the
+handle may not be accessed again, regardless of the method's return.])
+
+m4_page_footer
diff --git a/db/docs_src/dbc/dbc_close.so b/db/docs_src/dbc/dbc_close.so
new file mode 100644
index 000000000..e03b91799
--- /dev/null
+++ b/db/docs_src/dbc/dbc_close.so
@@ -0,0 +1,35 @@
+m4_comment([$Id: dbc_close.so,v 10.35 2006/10/24 13:26:50 bostic Exp $])
+
+define(M4PAGELOCAL, dbc_close)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbc_close),
+ifelse(M4API, C_API, [dnl
+int
+DBcursor-__GT__close(DBC *DBcursor);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+Dbc::close(void);
+]))
+
+m4_p([dnl
+The m4_refT(dbc_close) discards the cursor.])
+
+m4_p([dnl
+It is possible for the m4_refT(dbc_close) to return
+m4_ref(DB_LOCK_DEADLOCK), signaling that any enclosing transaction should
+be aborted. If the application is already intending to abort the
+transaction, this error should be ignored, and the application should
+proceed.])
+
+m4_p([dnl
+After m4_ref(dbc_close) has been called, regardless of its return, the
+cursor handle may not be used again.])
+
+m4_return(dbc_close, std)
+
+m4_err(dbc_close, deadlock, einval, [the cursor is already closed])
+
+m4_seealso(Dbc)
+m4_page_footer
diff --git a/db/docs_src/dbc/dbc_count.so b/db/docs_src/dbc/dbc_count.so
new file mode 100644
index 000000000..ddf990759
--- /dev/null
+++ b/db/docs_src/dbc/dbc_count.so
@@ -0,0 +1,30 @@
+m4_comment([$Id: dbc_count.so,v 10.26 2006/10/24 13:26:50 bostic Exp $])
+
+define(M4PAGELOCAL, dbc_count)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbc_count),
+ifelse(M4API, C_API, [dnl
+int
+DBcursor-__GT__count(DBC *DBcursor, db_recno_t *countp, u_int32_t flags);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+Dbc::count(db_recno_t *countp, u_int32_t flags);
+]))
+
+m4_p([dnl
+The m4_refT(dbc_count) returns a count of the number of data items for
+the key to which the cursor refers.])
+
+m4_return(dbc_count, std)
+
+m4_parambegin
+m4_param_co(countp, count of the number of duplicate data items)
+m4_unusedflags
+m4_paramend
+
+m4_err(dbc_count, repinval, einval, [the cursor has not been initialized])
+
+m4_seealso(Dbc)
+m4_page_footer
diff --git a/db/docs_src/dbc/dbc_del.so b/db/docs_src/dbc/dbc_del.so
new file mode 100644
index 000000000..966683ede
--- /dev/null
+++ b/db/docs_src/dbc/dbc_del.so
@@ -0,0 +1,42 @@
+m4_comment([$Id: dbc_del.so,v 10.47 2006/10/24 13:26:50 bostic Exp $])
+
+define(M4PAGELOCAL, [dbc_del, DB_SECONDARY_BAD])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbc_del),
+ifelse(M4API, C_API, [dnl
+int
+DBcursor-__GT__del(DBC *DBcursor, u_int32_t flags);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+Dbc::del(u_int32_t flags);
+]))
+
+m4_p([dnl
+The m4_refT(dbc_del) deletes the key/data pair to which the cursor
+refers.])
+
+m4_p([dnl
+When called on a cursor opened on a database that has been made into a
+secondary index using the m4_refT(dbh_associate), the m4_refT(dbh_del)
+deletes the key/data pair from the primary database and all secondary
+indices.])
+
+m4_p([dnl
+The cursor position is unchanged after a delete, and subsequent calls to
+cursor functions expecting the cursor to refer to an existing key will
+fail.])
+
+m4_return(dbc_del,
+specific, DB_KEYEMPTY, [if the element has already been deleted], prev)
+
+m4_parambegin
+m4_unusedflags
+m4_paramend
+
+m4_err(dbc_del, deadlock, repinval, secondary_bad, readonly,
+einval, [the cursor has not been initialized], cdbperm)
+
+m4_seealso(Dbc)
+m4_page_footer
diff --git a/db/docs_src/dbc/dbc_dup.so b/db/docs_src/dbc/dbc_dup.so
new file mode 100644
index 000000000..483b9552e
--- /dev/null
+++ b/db/docs_src/dbc/dbc_dup.so
@@ -0,0 +1,42 @@
+m4_comment([$Id: dbc_dup.so,v 10.33 2006/10/24 13:26:50 bostic Exp $])
+
+define(M4PAGELOCAL, [dbc_dup, DB_POSITION])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbc_dup),
+ifelse(M4API, C_API, [dnl
+int
+DBcursor-__GT__dup(DBC *DBcursor, DBC **cursorp, u_int32_t flags);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+Dbc::dup(Dbc **cursorp, u_int32_t flags);
+]))
+
+m4_p([dnl
+The m4_refT(dbc_dup) creates a new cursor that uses the same transaction
+and locker ID as the original cursor. This is useful when an application
+is using locking and requires two or more cursors in the same thread of
+control.])
+
+m4_return(dbc_dup, std)
+
+m4_parambegin
+m4_param(flags, [dnl
+m4_sf_or_may
+
+m4_tagbegin
+m4_tag(m4_idef(DB_POSITION), [dnl
+The newly created cursor is initialized to refer to the same position
+in the database as the original cursor (if any) and hold the same locks
+(if any). If the m4_ref(DB_POSITION) flag is not specified, or the
+original cursor does not hold a database position and locks, the created
+cursor is uninitialized and will behave like a cursor newly created
+using m4_ref(dbh_cursor).])
+m4_tagend])
+m4_paramend
+
+m4_err(dbc_dup, repinval, einval)
+
+m4_seealso(Dbc)
+m4_page_footer
diff --git a/db/docs_src/dbc/dbc_get.so b/db/docs_src/dbc/dbc_get.so
new file mode 100644
index 000000000..977f1168a
--- /dev/null
+++ b/db/docs_src/dbc/dbc_get.so
@@ -0,0 +1,336 @@
+m4_comment([$Id: dbc_get.so,v 10.117 2007/05/31 18:52:36 bostic Exp $])
+
+define(M4PAGELOCAL,
+ [dbc_get, dbc_pget, DB_CURRENT, DB_FIRST, DB_GET_BOTH,
+ DB_GET_BOTH_RANGE, DB_GET_RECNO, DB_JOIN_ITEM, DB_LAST,
+ DB_MULTIPLE, DB_MULTIPLE_KEY, DB_NEXT, DB_NEXT_DUP,
+ DB_NEXT_NODUP, DB_PREV, DB_PREV_DUP, DB_PREV_NODUP,
+ DB_SECONDARY_BAD, DB_SET, DB_SET_RANGE, DB_SET_RECNO])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbc_get),
+ifelse(M4API, C_API, [dnl
+int
+DBcursor-__GT__get(DBC *DBcursor,
+ DBT *key, DBT *data, u_int32_t flags);
+m4_blank
+int
+DBcursor-__GT__pget(DBC *DBcursor,
+ DBT *key, DBT *pkey, DBT *data, u_int32_t flags);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+Dbc::get(Dbt *key, Dbt *data, u_int32_t flags);
+m4_blank
+int
+Dbc::pget(Dbt *key, Dbt *pkey, Dbt *data, u_int32_t flags);
+]))
+
+m4_p([dnl
+The m4_refT(dbc_get) retrieves key/data pairs from the database. The
+address and length of the key are returned in the object to which
+m4_arg(key) refers (except for the case of the m4_ref(DB_SET) flag, in
+which the m4_arg(key) object is unchanged), and the address and length
+of the data are returned in the object to which m4_arg(data) refers.])
+
+m4_p([dnl
+When called on a cursor opened on a database that has been made into a
+secondary index using the m4_refT(dbh_associate), the m4_ref(dbc_get)
+and m4_refT(dbc_pget)s return the key from the secondary index and the
+data item from the primary database. In addition, the m4_refT(dbc_pget)
+returns the key from the primary database. In databases that are not
+secondary indices, the m4_refT(dbc_pget) will always fail.])
+
+m4_p([dnl
+Modifications to the database during a sequential scan will be reflected
+in the scan; that is, records inserted behind a cursor will not be
+returned while records inserted in front of a cursor will be returned.])
+
+m4_p([dnl
+In Queue and Recno databases, missing entries (that is, entries that
+were never explicitly created or that were created and then deleted)
+will be skipped during a sequential scan.])
+
+m4_return(dbc_get, prev)
+
+m4_p([dnl
+If m4_ref(dbc_get) fails for any reason, the state of the cursor will be
+unchanged.])
+
+m4_parambegin
+m4_param_data
+m4_param(flags, [dnl
+m4_sf_must
+
+m4_tagbegin
+m4_tag(m4_idef(DB_CURRENT), [dnl
+Return the key/data pair to which the cursor refers.
+m4_return(dbc_get, specific, DB_KEYEMPTY,
+[if m4_ref(DB_CURRENT) is set and the cursor key/data pair was deleted])])
+
+m4_tag([m4_idef(DB_FIRST)], [dnl
+The cursor is set to refer to the first key/data pair of the database,
+and that pair is returned. If the first key has duplicate values, the
+first data item in the set of duplicates is returned.
+m4_p([dnl
+If the database is a Queue or Recno database, m4_ref(dbc_get) using the
+m4_ref(DB_FIRST) flag will ignore any keys that exist but were never
+explicitly created by the application, or were created and later
+deleted.])
+m4_return(dbc_get, specific, DB_NOTFOUND,
+[if m4_ref(DB_FIRST) is set and the database is empty])])
+
+m4_tag(m4_idef(DB_GET_BOTH), [dnl
+The m4_ref(DB_GET_BOTH) flag is identical to the m4_ref(DB_SET) flag,
+except that both the key and the data parameters must be matched by the
+key and data item in the database.
+m4_p([dnl
+When used with the m4_refT(dbc_pget) version of this method on a
+secondary index handle, both the secondary and primary keys must be
+matched by the secondary and primary key item in the database. It is
+an error to use the m4_ref(DB_GET_BOTH) flag with the m4_ref(dbc_get)
+version of this method and a cursor that has been opened on a secondary
+index handle.])])
+
+m4_tag(m4_idef(DB_GET_BOTH_RANGE), [dnl
+The m4_ref(DB_GET_BOTH_RANGE) flag is identical to the m4_ref(DB_GET_BOTH)
+flag, except that, in the case of any database supporting sorted
+duplicate sets, the returned key/data pair is the smallest data item
+greater than or equal to the specified data item (as determined by the
+comparison function), permitting partial matches and range searches in
+duplicate data sets.])
+
+m4_tag(m4_idef(DB_GET_RECNO), [dnl
+Return the record number associated with the cursor. The record number
+will be returned in m4_arg(data), as described in m4_ref(Dbt). The
+m4_arg(key) parameter is ignored.
+m4_p([dnl
+For m4_ref(DB_GET_RECNO) to be specified, the underlying database must be
+of type Btree, and it must have been created with the m4_ref(DB_RECNUM)
+flag.])
+m4_p([dnl
+When called on a cursor opened on a database that has been made into a
+secondary index, the m4_ref(dbc_get) and m4_refT(dbc_pget)s return the
+record number of the primary database in m4_arg(data). In addition, the
+m4_refT(dbc_pget) returns the record number of the secondary index in
+m4_arg(pkey). If either underlying database is not of type Btree or is
+not created with the m4_ref(DB_RECNUM) flag, the out-of-band record
+number of 0 is returned.])])
+
+m4_tag(m4_idef(DB_JOIN_ITEM), [dnl
+Do not use the data value found in all of the cursors as a lookup key for
+the primary database, but simply return it in the key parameter instead.
+The data parameter is left unchanged.
+m4_p([dnl
+For m4_ref(DB_JOIN_ITEM) to be specified, the underlying cursor must have
+been returned from the m4_refT(dbh_join).])])
+
+m4_tag([m4_idef(DB_LAST)], [dnl
+The cursor is set to refer to the last key/data pair of the database,
+and that pair is returned. If the last key has duplicate values, the
+last data item in the set of duplicates is returned.
+m4_p([dnl
+If the database is a Queue or Recno database, m4_ref(dbc_get) using the
+m4_ref(DB_LAST) flag will ignore any keys that exist but were never
+explicitly created by the application, or were created and later
+deleted.])
+m4_return(dbc_get, specific, DB_NOTFOUND,
+[if m4_ref(DB_LAST) is set and the database is empty])])
+
+m4_tag([m4_idef(DB_NEXT)], [dnl
+If the cursor is not yet initialized, m4_ref(DB_NEXT) is identical to
+m4_ref(DB_FIRST). Otherwise, the cursor is moved to the next key/data
+pair of the database, and that pair is returned. In the presence of
+duplicate key values, the value of the key may not change.
+m4_p([dnl
+If the database is a Queue or Recno database, m4_ref(dbc_get) using the
+m4_ref(DB_NEXT) flag will skip any keys that exist but were never
+explicitly created by the application, or those that were created and
+later deleted.])
+m4_return(dbc_get, specific, DB_NOTFOUND,
+[if m4_ref(DB_NEXT) is set and the cursor is already on the last record
+in the database])])
+
+m4_tag(m4_idef(DB_NEXT_DUP), [dnl
+If the next key/data pair of the database is a duplicate data record for
+the current key/data pair, the cursor is moved to the next key/data pair
+of the database, and that pair is returned.
+m4_return(dbc_get, specific, DB_NOTFOUND,
+[if m4_ref(DB_NEXT_DUP) is set and the next key/data pair of the
+database is not a duplicate data record for the current key/data pair])])
+
+m4_tag([dnl
+m4_idef(DB_NEXT_NODUP)], [dnl
+If the cursor is not yet initialized, m4_ref(DB_NEXT_NODUP) is identical
+to m4_ref(DB_FIRST). Otherwise, the cursor is moved to the next
+non-duplicate key of the database, and that key/data pair is returned.
+m4_p([dnl
+If the database is a Queue or Recno database, m4_ref(dbc_get) using the
+m4_ref(DB_NEXT_NODUP) flag will ignore any keys that exist but were
+never explicitly created by the application, or those that were created
+and later deleted.])
+m4_return(dbc_get, specific, DB_NOTFOUND,
+[if m4_ref(DB_NEXT_NODUP) is set and no non-duplicate key/data pairs
+occur after the cursor position in the database])])
+
+m4_tag([m4_idef(DB_PREV)], [dnl
+If the cursor is not yet initialized, m4_ref(DB_PREV) is identical to
+m4_ref(DB_LAST). Otherwise, the cursor is moved to the previous
+key/data pair of the database, and that pair is returned. In the
+presence of duplicate key values, the value of the key may not change.
+m4_p([dnl
+If the database is a Queue or Recno database, m4_ref(dbc_get) using the
+m4_ref(DB_PREV) flag will skip any keys that exist but were never
+explicitly created by the application, or those that were created and
+later deleted.])
+m4_return(dbc_get, specific, DB_NOTFOUND,
+[if m4_ref(DB_PREV) is set and the cursor is already on the first record
+in the database])])
+
+m4_tag(m4_idef(DB_PREV_DUP), [dnl
+If the previous key/data pair of the database is a duplicate data record
+for the current key/data pair, the cursor is moved to the previous key/data
+pair of the database, and that pair is returned.
+m4_return(dbc_get, specific, DB_NOTFOUND,
+[if m4_ref(DB_PREV_DUP) is set and the previous key/data pair of the
+database is not a duplicate data record for the current key/data pair])])
+
+m4_tag([dnl
+m4_idef(DB_PREV_NODUP)], [dnl
+If the cursor is not yet initialized, m4_ref(DB_PREV_NODUP) is identical
+to m4_ref(DB_LAST). Otherwise, the cursor is moved to the previous
+non-duplicate key of the database, and that key/data pair is returned.
+m4_p([dnl
+If the database is a Queue or Recno database, m4_ref(dbc_get) using the
+m4_ref(DB_PREV_NODUP) flag will ignore any keys that exist but were
+never explicitly created by the application, or those that were created
+and later deleted.])
+m4_return(dbc_get, specific, DB_NOTFOUND,
+[if m4_ref(DB_PREV_NODUP) is set and no non-duplicate key/data pairs
+occur before the cursor position in the database])])
+
+m4_tag(m4_idef(DB_SET), [dnl
+Move the cursor to the specified key/data pair of the database, and
+return the datum associated with the given key.
+m4_return(dbc_get, specific, DB_NOTFOUND, [if m4_ref(DB_SET) is set and
+no matching keys are found],
+specific, DB_KEYEMPTY, [if m4_ref(DB_SET) is set and the database is a
+Queue or Recno database, and the specified key exists, but was never
+explicitly created by the application or was later deleted],
+[In the presence of duplicate key values, m4_ref(dbc_get) will return the
+first data item for the given key.])])
+
+m4_tag(m4_idef(DB_SET_RANGE), [dnl
+The m4_ref(DB_SET_RANGE) flag is identical to the m4_ref(DB_SET) flag,
+except that in the case of the Btree access method, the key is returned
+as well as the data item and the returned key/data pair is the smallest
+key greater than or equal to the specified key (as determined by the
+Btree comparison function), permitting partial key matches and range
+searches.])
+
+m4_tag(m4_idef(DB_SET_RECNO), [dnl
+Move the cursor to the specific numbered record of the database, and
+return the associated key/data pair. The m4_arg(data) field of the
+specified m4_arg(key) must be a pointer to a memory location from which
+a m4_ref(db_recno_t) may be read, as described in m4_ref(Dbt). This
+memory location will be read to determine the record to be retrieved.
+m4_p([dnl
+For m4_ref(DB_SET_RECNO) to be specified, the underlying database must be
+of type Btree, and it must have been created with the m4_ref(DB_RECNUM)
+flag.])])
+m4_tagend
+
+m4_sf_or_add(1)
+
+m4_tagbegin
+m4_tag(m4_idef(DB_READ_UNCOMMITTED), [dnl
+Database items read during a transactional call will have degree 1
+isolation, including modified but not yet committed data. Silently
+ignored if the m4_ref(DB_READ_UNCOMMITTED) flag was not specified when
+the underlying database was opened.])
+
+m4_tag(m4_idef(DB_MULTIPLE), [dnl
+Return multiple data items in the m4_arg(data) parameter.
+m4_p([dnl
+In the case of Btree or Hash databases, duplicate data items for the
+current key, starting at the current cursor position, are entered into
+the buffer. Subsequent calls with both the m4_ref(DB_NEXT_DUP) and
+m4_ref(DB_MULTIPLE) flags specified will return additional duplicate
+data items associated with the current key or m4_ref(DB_NOTFOUND) if
+there are no additional duplicate data items to return. Subsequent
+calls with both the m4_ref(DB_NEXT) and m4_ref(DB_MULTIPLE) flags
+specified will return additional duplicate data items associated with
+the current key or if there are no additional duplicate data items will
+return the next key and its data items or m4_ref(DB_NOTFOUND) if there
+are no additional keys in the database.])
+m4_p([dnl
+In the case of Queue or Recno databases, data items starting at the
+current cursor position are entered into the buffer. The record number
+of the first record will be returned in the m4_arg(key) parameter. The
+record number of each subsequent returned record must be calculated from
+this value. Subsequent calls with the m4_ref(DB_MULTIPLE) flag
+specified will return additional data items or m4_ref(DB_NOTFOUND) if
+there are no additional data items to return.])
+m4_p([dnl
+m4_bulk_mem])
+m4_p([dnl
+The multiple data items can be iterated over using the
+ifelse(M4API, C_API, m4_ref(DB_MULTIPLE_NEXT) macro,
+m4_ref(DbMultipleDataIterator) class).])
+m4_p([dnl
+The m4_ref(DB_MULTIPLE) flag may only be used with the
+m4_ref(DB_CURRENT), m4_ref(DB_FIRST), m4_ref(DB_GET_BOTH),
+m4_ref(DB_GET_BOTH_RANGE), m4_ref(DB_NEXT), m4_ref(DB_NEXT_DUP),
+m4_ref(DB_NEXT_NODUP), m4_ref(DB_SET), m4_ref(DB_SET_RANGE), and
+m4_ref(DB_SET_RECNO) options. The m4_ref(DB_MULTIPLE) flag may not be
+used when accessing databases made into secondary indices using the
+m4_refT(dbh_associate).])])
+
+m4_tag(m4_idef(DB_MULTIPLE_KEY), [dnl
+Return multiple key and data pairs in the m4_arg(data) parameter.
+m4_p([dnl
+Key and data pairs, starting at the current cursor position, are entered
+into the buffer. Subsequent calls with both the m4_ref(DB_NEXT) and
+m4_ref(DB_MULTIPLE_KEY) flags specified will return additional key and data
+pairs or m4_ref(DB_NOTFOUND) if there are no additional key and data
+items to return.])
+m4_p([dnl
+In the case of Btree or Hash databases,
+the multiple key and data pairs can be iterated over using the
+ifelse(M4API, C_API, m4_ref(DB_MULTIPLE_KEY_NEXT) macro,
+m4_ref(DbMultipleKeyDataIterator) class).])
+m4_p([dnl
+In the case of Queue or Recno databases,
+the multiple record number and data pairs can be iterated over using the
+ifelse(M4API, C_API, m4_ref(DB_MULTIPLE_RECNO_NEXT) macro,
+m4_ref(DbMultipleRecnoDataIterator) class).])
+m4_p([dnl
+m4_bulk_mem])
+m4_p([dnl
+The m4_ref(DB_MULTIPLE_KEY) flag may only be used with the
+m4_ref(DB_CURRENT), m4_ref(DB_FIRST), m4_ref(DB_GET_BOTH),
+m4_ref(DB_GET_BOTH_RANGE), m4_ref(DB_NEXT), m4_ref(DB_NEXT_DUP),
+m4_ref(DB_NEXT_NODUP), m4_ref(DB_SET), m4_ref(DB_SET_RANGE), and
+m4_ref(DB_SET_RECNO) options. The m4_ref(DB_MULTIPLE_KEY) flag may not
+be used when accessing databases made into secondary indices using the
+m4_refT(dbh_associate).])])
+
+m4_rmw_flag()
+m4_tagend])
+
+m4_param_key
+
+m4_param(pkey, [The secondary index key m4_ref(Dbt) operated on.])
+m4_paramend
+
+m4_err(dbc_get,
+buffersmall,
+[requested item could not be returned due to undersized buffer],
+deadlock, repinval, secondary_bad, einval,
+[the m4_ref(DB_CURRENT), m4_ref(DB_NEXT_DUP) or m4_ref(DB_PREV_DUP) flags
+were specified and the cursor has not been initialized;
+the m4_refT(dbc_pget) was called with a cursor that does not refer to a
+secondary index])
+
+m4_seealso(Dbc)
+m4_page_footer
diff --git a/db/docs_src/dbc/dbc_list.so b/db/docs_src/dbc/dbc_list.so
new file mode 100644
index 000000000..aa772899c
--- /dev/null
+++ b/db/docs_src/dbc/dbc_list.so
@@ -0,0 +1,7 @@
+m4_comment([$Id: dbc_list.so,v 1.1 2002/08/30 20:00:49 bostic Exp $])
+
+m4_page_title([m4_db: Database Cursors and Related Methods])
+
+include(dbc/m4.methods)
+
+m4_page_footer
diff --git a/db/docs_src/dbc/dbc_put.so b/db/docs_src/dbc/dbc_put.so
new file mode 100644
index 000000000..dec469aa4
--- /dev/null
+++ b/db/docs_src/dbc/dbc_put.so
@@ -0,0 +1,140 @@
+m4_comment([$Id: dbc_put.so,v 10.63 2007/05/03 15:20:37 bostic Exp $])
+
+define(M4PAGELOCAL,
+ [dbc_put, DB_AFTER, DB_BEFORE, DB_CURRENT, DB_KEYFIRST,
+ DB_KEYLAST, DB_NODUPDATA])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbc_put),
+ifelse(M4API, C_API, [dnl
+int
+DBcursor-__GT__put(DBC *DBcursor, DBT *key, DBT *data, u_int32_t flags);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+Dbc::put(Dbt *key, Dbt *data, u_int32_t flags);
+]))
+
+m4_p([dnl
+The m4_refT(dbc_put) stores key/data pairs into the database.])
+
+m4_return(dbc_put, prev)
+
+m4_p([dnl
+If m4_ref(dbc_put) fails for any reason, the state of the cursor will be
+unchanged. If m4_ref(dbc_put) succeeds and an item is inserted into the
+database, the cursor is always positioned to refer to the newly inserted
+item.])
+
+m4_parambegin
+m4_param_data
+m4_param(flags, [dnl
+m4_sf_must
+
+m4_tagbegin
+m4_tag(m4_idef(DB_AFTER), [dnl
+In the case of the Btree and Hash access methods, insert the data
+element as a duplicate element of the key to which the cursor refers.
+The new element appears immediately after the current cursor position.
+It is an error to specify m4_ref(DB_AFTER) if the underlying Btree or
+Hash database is not configured for unsorted duplicate data items. The
+m4_arg(key) parameter is ignored.
+m4_p([dnl
+In the case of the Recno access method, it is an error to specify
+m4_ref(DB_AFTER) if the underlying Recno database was not created with
+the m4_ref(DB_RENUMBER) flag. If the m4_ref(DB_RENUMBER) flag was
+specified, a new key is created, all records after the inserted item
+are automatically renumbered, and the key of the new record is returned
+in the structure to which the m4_arg(key) parameter refers. The initial
+value of the m4_arg(key) parameter is ignored. See m4_ref(dbh_open)
+for more information.])
+m4_p([dnl
+The m4_ref(DB_AFTER) flag may not be specified to the Queue access method.])
+m4_return(dbc_put,
+specific, DB_NOTFOUND,
+[if the current cursor record has already been deleted and the
+underlying access method is Hash])])
+
+m4_tag(m4_idef(DB_BEFORE), [dnl
+In the case of the Btree and Hash access methods, insert the data
+element as a duplicate element of the key to which the cursor refers.
+The new element appears immediately before the current cursor position.
+It is an error to specify m4_ref(DB_AFTER) if the underlying Btree or
+Hash database is not configured for unsorted duplicate data items. The
+m4_arg(key) parameter is ignored.
+m4_p([dnl
+In the case of the Recno access method, it is an error to specify
+m4_ref(DB_BEFORE) if the underlying Recno database was not created with
+the m4_ref(DB_RENUMBER) flag. If the m4_ref(DB_RENUMBER) flag was
+specified, a new key is created, the current record and all records
+after it are automatically renumbered, and the key of the new record is
+returned in the structure to which the m4_arg(key) parameter refers.
+The initial value of the m4_arg(key) parameter is ignored. See
+m4_ref(dbh_open) for more information.])
+m4_p([dnl
+The m4_ref(DB_BEFORE) flag may not be specified to the Queue access method.])
+m4_return(dbc_put,
+specific, DB_NOTFOUND,
+[if the current cursor record has already been deleted and the underlying
+access method is Hash])])
+
+m4_tag(m4_idef(DB_CURRENT), [dnl
+Overwrite the data of the key/data pair to which the cursor refers with
+the specified data item. The m4_arg(key) parameter is ignored.
+m4_return(dbc_put,
+specific, DB_NOTFOUND,
+[if the current cursor record has already been deleted])])
+
+m4_tag(m4_idef(DB_KEYFIRST), [dnl
+Insert the specified key/data pair into the database.
+m4_p([dnl
+If the underlying database supports duplicate data items, and if the
+key already exists in the database and a duplicate sort function has
+been specified, the inserted data item is added in its sorted location.
+If the key already exists in the database and no duplicate sort function
+has been specified, the inserted data item is added as the first of the
+data items for that key.])])
+
+m4_tag(m4_idef(DB_KEYLAST), [dnl
+Insert the specified key/data pair into the database.
+m4_p([dnl
+If the underlying database supports duplicate data items, and if the
+key already exists in the database and a duplicate sort function has
+been specified, the inserted data item is added in its sorted location.
+If the key already exists in the database, and no duplicate sort
+function has been specified, the inserted data item is added as the last
+of the data items for that key.])])
+
+m4_tag(m4_idef(DB_NODUPDATA), [dnl
+In the case of the Btree and Hash access methods, insert the specified
+key/data pair into the database, unless a key/data pair comparing
+equally to it already exists in the database. If a matching key/data
+pair already exists in the database, m4_ref(DB_KEYEXIST) is returned.
+The DB_NODUPDATA flag may only be specified if the underlying
+database has been configured to support sorted duplicate data items.
+m4_p([dnl
+The DB_NODUPDATA flag may not be specified to the Queue or Recno
+access methods.])])
+
+m4_tagend])
+
+m4_param_key
+m4_paramend
+
+m4_err(dbc_put, deadlock, readonly, repinval, einval,
+[the m4_ref(DB_AFTER), m4_ref(DB_BEFORE) or m4_ref(DB_CURRENT) flags
+were specified and the cursor has not been initialized;
+the m4_ref(DB_AFTER) or m4_ref(DB_BEFORE) flags were specified and a
+duplicate sort function has been specified;
+the m4_ref(DB_CURRENT) flag was specified, a duplicate sort function has
+been specified, and the data item of the referenced key/data pair does
+not compare equally to the m4_arg(data) parameter;
+the m4_ref(DB_AFTER) or m4_ref(DB_BEFORE) flags were specified, and the
+underlying access method is Queue;
+an attempt was made to add a record to a fixed-length database that was too
+large to fit;
+an attempt was made to add a record to a secondary index],
+cdbperm)
+
+m4_seealso(Dbc)
+m4_page_footer
diff --git a/db/docs_src/dbc/dbc_set_priority.so b/db/docs_src/dbc/dbc_set_priority.so
new file mode 100644
index 000000000..7d3646bf5
--- /dev/null
+++ b/db/docs_src/dbc/dbc_set_priority.so
@@ -0,0 +1,64 @@
+m4_comment([$Id: dbc_set_priority.so,v 1.3 2007/05/22 18:06:05 bostic Exp $])
+
+include(m4/m4.seealso)
+
+ifdef([M4INTERFACE],, [dnl
+define(M4INTERFACE, dbc_set_priority)
+define(M4PAGELOCAL, [dbc_get_priority, dbc_set_priority,
+ DB_PRIORITY_VERY_LOW, DB_PRIORITY_LOW, DB_PRIORITY_DEFAULT,
+ DB_PRIORITY_HIGH, DB_PRIORITY_VERY_HIGH])
+m4_pf_header(m4_ref(dbc_set_priority),
+ifelse(M4API, C_API, [dnl
+int
+DbCursor-__GT__set_priority(DBC *DbCursor, DB_CACHE_PRIORITY priority);
+m4_blank
+int
+DbCursor-__GT__get_priority(DBC *DbCursor, DB_CACHE_PRIORITY *priorityp);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+Dbc::set_priority(DB_CACHE_PRIORITY priority);
+m4_blank
+int
+Dbc::get_priority(DB_CACHE_PRIORITY *priorityp);
+]))])
+
+m4_p([dnl
+Set the cache priority for pages referenced by the
+ifelse(M4INTERFACE, dbh_set_priority, m4_ref(Db),
+ M4INTERFACE, memp_set_priority, m4_ref(DbMpoolFile), m4_ref(Dbc))
+handle.])
+
+m4_cache_priority_explain(M4INTERFACE)
+
+ifelse(M4INTERFACE, memp_set_priority,[dnl
+m4_p([dnl
+To set the priority for the pages belonging to a particular database,
+call the m4_refT(memp_set_priority) using the m4_ref(DbMpoolFile) handle
+returned by the m4_refT(dbh_get_mpf).])
+
+m4_scope_mpf(memp_set_priority)])
+
+m4_when_any(M4INTERFACE)
+
+m4_return(M4INTERFACE, std)
+
+m4_parambegin
+m4_cache_priority_parameter
+m4_paramend
+
+ifelse(M4INTERFACE, memp_set_priority,
+m4_pf_getter(memp_get_priority,
+cache priority for the file referenced by the m4_ref(DbMpoolFile) handle,,
+priorityp, reference),
+m4_pf_getter(
+ifelse(M4INTERFACE, dbh_set_priority, dbh_get_priority, dbc_get_priority),
+cache priority for pages referenced by the
+ifelse(M4INTERFACE, dbh_set_priority, m4_ref(Db), m4_ref(Dbc))
+handle,, priorityp, reference))
+
+m4_seealso(
+ifelse(M4INTERFACE, dbh_set_priority, Db,
+ M4INTERFACE, memp_set_priority, DbMpool, Dbc))
+
+m4_page_footer
diff --git a/db/docs_src/dbc/m4.methods b/db/docs_src/dbc/m4.methods
new file mode 100644
index 000000000..c6348149a
--- /dev/null
+++ b/db/docs_src/dbc/m4.methods
@@ -0,0 +1,15 @@
+m4_comment([$Id: m4.methods,v 1.5 2007/05/08 21:37:19 bostic Exp $])
+
+m4_table_begin(, _center)
+
+m4_table_header(Database Cursors and Related Methods, Description)
+m4_comment([Db::cursor])m4_table_element(m4_ref(dbh_cursor), Create a cursor)
+m4_comment([DbCursor::close])m4_table_element(m4_ref(dbc_close), Close a cursor)
+m4_comment([DbCursor::count])m4_table_element(m4_ref(dbc_count), Return count of duplicates)
+m4_comment([DbCursor::del])m4_table_element(m4_ref(dbc_del), Delete by cursor)
+m4_comment([DbCursor::dup])m4_table_element(m4_ref(dbc_dup), Duplicate a cursor)
+m4_comment([DbCursor::get])m4_table_element([m4_ref(dbc_get), m4_ref(dbc_pget)], Retrieve by cursor)
+m4_comment([DbCursor::put])m4_table_element(m4_ref(dbc_put), Store by cursor)
+m4_comment([DbCursor::set_priority])m4_table_element(m4_ref(dbc_set_priority), Set the cursor's cache priority)
+
+m4_table_end
diff --git a/db/docs_src/dbt/dbt_package.so b/db/docs_src/dbt/dbt_package.so
new file mode 100644
index 000000000..d1fc3d3a6
--- /dev/null
+++ b/db/docs_src/dbt/dbt_package.so
@@ -0,0 +1,19 @@
+m4_comment([$Id: dbt_package.so,v 10.2 2004/08/29 14:00:03 bostic Exp $])
+
+m4_page_title([DBT and Bulk Get Operations])
+
+m4_table_begin(, _center)
+m4_table_header(DBT and Bulk Get Operations, Description)
+
+m4_table_element(m4_ref(Dbt), Key/data pairs)
+ifelse(M4API, C_API, [dnl
+m4_table_element(m4_ref(DB_MULTIPLE_INIT), Initialize bulk get retrieval)
+m4_table_element(m4_ref(DB_MULTIPLE_NEXT), Next bulk get retrieval)
+m4_table_element(m4_ref(DB_MULTIPLE_KEY_NEXT), Next bulk get retrieval)
+m4_table_element(m4_ref(DB_MULTIPLE_RECNO_NEXT), Next bulk get retrieval)],[dnl
+m4_table_element(m4_ref(DbMultipleDataIterator), Next bulk get retrieval)
+m4_table_element(m4_ref(DbMultipleKeyDataIterator), Next bulk get retrieval)
+m4_table_element(m4_ref(DbMultipleRecnoDataIterator), Next bulk get retrieval)])
+
+m4_table_end
+m4_page_footer
diff --git a/db/docs_src/env/api_core.so b/db/docs_src/env/api_core.so
new file mode 100644
index 000000000..3eabbcfe2
--- /dev/null
+++ b/db/docs_src/env/api_core.so
@@ -0,0 +1,210 @@
+m4_comment([DO NOT EDIT: automatically built by build script.])
+m4_page_title([m4_db: ifelse(M4API, C_API, C, C++) Handle Methods (version M4MAJOR.M4MINOR.M4PATCH)])
+m4_table_begin(, _center)
+m4_table_header(ifelse(M4API, C_API, C, C++) Handle Methods, Description)
+m4_comment([Db::])m4_table_element(m4_ref(ifelse(M4API, C_API, dbh_create, Db)), Create a database handle)
+m4_comment([Db::associate])m4_table_element(m4_ref(dbh_associate), Associate a secondary index)
+m4_comment([Db::close])m4_table_element(m4_ref(dbh_close), Close a database)
+m4_comment([Db::compact])m4_table_element(m4_ref(dbh_compact), Compact a database)
+m4_comment([Db::cursor])m4_table_element(m4_ref(dbh_cursor), Create a cursor)
+m4_comment([Db::del])m4_table_element(m4_ref(dbh_del), Delete items from a database)
+m4_comment([Db::err])m4_table_element([m4_ref(dbh_err), m4_ref(dbh_errx)], Error message)
+m4_comment([Db::exists])m4_table_element(m4_ref(dbh_exists), Return if an item appears in a database)
+m4_comment([Db::fd])m4_table_element(m4_ref(dbh_fd), Return a file descriptor from a database)
+m4_comment([Db::get])m4_table_element([m4_ref(dbh_get), m4_ref(dbh_pget)], Get items from a database)
+m4_comment([Db::get_byteswapped])m4_table_element(m4_ref(dbh_get_byteswapped), Return if the underlying database is in host order)
+m4_comment([Db::get_env])m4_table_element(m4_ref(dbh_getenv), Return m4_ref(Db)'s underlying m4_ref(DbEnv) handle)
+m4_comment([Db::get_type])m4_table_element(m4_ref(dbh_get_type), Return the database type)
+m4_comment([Db::join])m4_table_element(m4_ref(dbh_join), Perform a database join on cursors)
+m4_comment([Db::key_range])m4_table_element(m4_ref(dbh_key_range), Return estimate of key location)
+m4_comment([Db::mpf])m4_table_element(m4_ref(dbh_get_mpf), Return m4_ref(Db)'s underlying m4_ref(DbMpoolFile) handle)
+m4_comment([Db::open])m4_table_element(m4_ref(dbh_open), Open a database)
+m4_comment([Db::put])m4_table_element(m4_ref(dbh_put), Store items into a database)
+m4_comment([Db::remove])m4_table_element(m4_ref(dbh_remove), Remove a database)
+m4_comment([Db::rename])m4_table_element(m4_ref(dbh_rename), Rename a database)
+m4_comment([Db::set_alloc])m4_table_element( m4_ref(dbh_set_alloc), Set local space allocation functions)
+m4_comment([Db::set_append_recno])m4_table_element(m4_ref(dbh_set_append_recno), Set record append callback)
+m4_comment([Db::set_bt_compare])m4_table_element(m4_ref(dbh_set_bt_compare), Set a Btree comparison function)
+m4_comment([Db::set_bt_minkey])m4_table_element(m4_ref(dbh_set_bt_minkey), Set the minimum number of keys per Btree page)
+m4_comment([Db::set_bt_prefix])m4_table_element(m4_ref(dbh_set_bt_prefix), Set a Btree prefix comparison function)
+m4_comment([Db::set_cachesize])m4_table_element(m4_ref(dbh_set_cachesize), Set the database cache size)
+m4_comment([Db::set_dup_compare])m4_table_element(m4_ref(dbh_set_dup_compare), Set a duplicate comparison function)
+m4_comment([Db::set_encrypt])m4_table_element(m4_ref(dbh_set_encrypt), Set the database cryptographic key)
+m4_comment([Db::set_errcall])m4_table_element([m4_ref(dbh_set_errcall), m4_ref(dbh_set_msgcall)], Set error and informational message callback)
+m4_comment([Db::set_errfile])m4_table_element([m4_ref(dbh_set_errfile), m4_ref(dbh_set_msgfile)], Set error and informational message FILE)
+m4_comment([Db::set_error_stream])ifelse(M4API, C_API,, [m4_table_element([m4_ref(dbh_set_error_stream), m4_ref(dbh_set_message_stream)], Set error and informational message output stream)])
+m4_comment([Db::set_errpfx])m4_table_element(m4_ref(dbh_set_errpfx), Set error message prefix)
+m4_comment([Db::set_feedback])m4_table_element(m4_ref(dbh_set_feedback), Set feedback callback)
+m4_comment([Db::set_flags])m4_table_element(m4_ref(dbh_set_flags), General database configuration)
+m4_comment([Db::set_h_compare])m4_table_element(m4_ref(dbh_set_h_compare), Set a Hash comparison function)
+m4_comment([Db::set_h_ffactor])m4_table_element(m4_ref(dbh_set_h_ffactor), Set the Hash table density)
+m4_comment([Db::set_h_hash])m4_table_element(m4_ref(dbh_set_h_hash), Set a hashing function)
+m4_comment([Db::set_h_nelem])m4_table_element(m4_ref(dbh_set_h_nelem), Set the Hash table size)
+m4_comment([Db::set_lorder])m4_table_element(m4_ref(dbh_set_lorder), Set the database byte order)
+m4_comment([Db::set_pagesize])m4_table_element(m4_ref(dbh_set_pagesize), Set the underlying database page size)
+m4_comment([Db::set_priority])m4_table_element([m4_ref(dbh_set_priority)], Set cache page priority)
+m4_comment([Db::set_q_extentsize])m4_table_element(m4_ref(dbh_set_q_extentsize), Set Queue database extent size)
+m4_comment([Db::set_re_delim])m4_table_element(m4_ref(dbh_set_re_delim), Set the variable-length record delimiter)
+m4_comment([Db::set_re_len])m4_table_element(m4_ref(dbh_set_re_len), Set the fixed-length record length)
+m4_comment([Db::set_re_pad])m4_table_element(m4_ref(dbh_set_re_pad), Set the fixed-length record pad byte)
+m4_comment([Db::set_re_source])m4_table_element(m4_ref(dbh_set_re_source), Set the backing Recno text file)
+m4_comment([Db::stat])m4_table_element([m4_ref(dbh_stat), m4_ref(dbh_stat_print)], Database statistics)
+m4_comment([Db::sync])m4_table_element(m4_ref(dbh_sync), Flush a database to stable storage)
+m4_comment([Db::truncate])m4_table_element(m4_ref(dbh_truncate), Empty a database)
+m4_comment([Db::upgrade])m4_table_element(m4_ref(dbh_upgrade), Upgrade a database)
+m4_comment([Db::verify])m4_table_element(m4_ref(dbh_verify), Verify/salvage a database)
+m4_comment([DbCursor::close])m4_table_element(m4_ref(dbc_close), Close a cursor)
+m4_comment([DbCursor::count])m4_table_element(m4_ref(dbc_count), Return count of duplicates)
+m4_comment([DbCursor::del])m4_table_element(m4_ref(dbc_del), Delete by cursor)
+m4_comment([DbCursor::dup])m4_table_element(m4_ref(dbc_dup), Duplicate a cursor)
+m4_comment([DbCursor::get])m4_table_element([m4_ref(dbc_get), m4_ref(dbc_pget)], Retrieve by cursor)
+m4_comment([DbCursor::put])m4_table_element(m4_ref(dbc_put), Store by cursor)
+m4_comment([DbCursor::set_priority])m4_table_element(m4_ref(dbc_set_priority), Set the cursor's cache priority)
+m4_comment([DbDeadlockException])ifelse(M4API, CXX_API, [m4_table_element(m4_ref(DbDeadlockException), Deadlock exception)])
+m4_comment([DbEnv::])m4_table_element(m4_ref(ifelse(M4API, C_API, dbenv_create, DbEnv)), Create an environment handle)
+m4_comment([DbEnv::cdsgroup_begin])m4_table_element(m4_ref(cdsgroup_begin), Get a locker ID in m4_cam)
+m4_comment([DbEnv::close])m4_table_element(m4_ref(dbenv_close), Close an environment)
+m4_comment([DbEnv::dbremove])m4_table_element(m4_ref(dbenv_dbremove), Remove a database)
+m4_comment([DbEnv::dbrename])m4_table_element(m4_ref(dbenv_dbrename), Rename a database)
+m4_comment([DbEnv::err])m4_table_element([m4_ref(dbenv_err), m4_ref(dbenv_errx)], Error message)
+m4_comment([DbEnv::failchk])m4_table_element(m4_ref(dbenv_failchk), Check for thread failure)
+m4_comment([DbEnv::fileid_reset])m4_table_element(m4_ref(dbenv_fileid_reset), Reset database file IDs)
+m4_comment([DbEnv::get_home])m4_table_element(m4_ref(dbenv_get_home), Return environment's home directory)
+m4_comment([DbEnv::get_open_flags])m4_table_element(m4_ref(dbenv_get_open_flags), Return flags with which the environment was opened)
+m4_comment([DbEnv::lock_detect])m4_table_element(m4_ref(lock_detect), Perform deadlock detection)
+m4_comment([DbEnv::lock_get])m4_table_element(m4_ref(lock_get), Acquire a lock)
+m4_comment([DbEnv::lock_id])m4_table_element(m4_ref(lock_id), Acquire a locker ID)
+m4_comment([DbEnv::lock_id_free])m4_table_element(m4_ref(lock_id_free), Release a locker ID)
+m4_comment([DbEnv::lock_put])m4_table_element(m4_ref(lock_put), Release a lock)
+m4_comment([DbEnv::lock_stat])m4_table_element(m4_ref(lock_stat), Return lock subsystem statistics)
+m4_comment([DbEnv::lock_vec])m4_table_element(m4_ref(lock_vec), Acquire/release locks)
+m4_comment([DbEnv::log_archive])m4_table_element(m4_ref(log_archive), List log and database files)
+m4_comment([DbEnv::log_file])m4_table_element(m4_ref(log_file), Map Log Sequence Numbers to log files)
+m4_comment([DbEnv::log_flush])m4_table_element(m4_ref(log_flush), Flush log records)
+m4_comment([DbEnv::log_printf])m4_table_element(m4_ref(log_printf), Append informational message to the log)
+m4_comment([DbEnv::log_put])m4_table_element(m4_ref(log_put), Write a log record)
+m4_comment([DbEnv::log_stat])m4_table_element(m4_ref(log_stat), Return log subsystem statistics)
+m4_comment([DbEnv::lsn_reset])m4_table_element(m4_ref(dbenv_lsn_reset), Reset database file LSNs)
+m4_comment([DbEnv::memp_fcreate])m4_table_element(m4_ref(memp_fcreate), Create a memory pool file handle)
+m4_comment([DbEnv::memp_register])m4_table_element(m4_ref(memp_register), Register input/output functions for a file in a memory pool)
+m4_comment([DbEnv::memp_stat])m4_table_element(m4_ref(memp_stat), Return memory pool statistics)
+m4_comment([DbEnv::memp_sync])m4_table_element(m4_ref(memp_sync), Flush pages from a memory pool)
+m4_comment([DbEnv::memp_trickle])m4_table_element(m4_ref(memp_trickle), Trickle flush pages from a memory pool)
+m4_comment([DbEnv::mutex_alloc])m4_table_element(m4_ref(mutex_alloc), Allocate a mutex)
+m4_comment([DbEnv::mutex_free])m4_table_element(m4_ref(mutex_free), Free a mutex)
+m4_comment([DbEnv::mutex_lock])m4_table_element(m4_ref(mutex_lock), Lock a mutex)
+m4_comment([DbEnv::mutex_set_align])m4_table_element(m4_ref(mutex_set_align), Configure mutex alignment)
+m4_comment([DbEnv::mutex_set_increment])m4_table_element(m4_ref(mutex_set_increment), Configure number of additional mutexes)
+m4_comment([DbEnv::mutex_set_max])m4_table_element(m4_ref(mutex_set_max), Configure total number of mutexes)
+m4_comment([DbEnv::mutex_set_tas_spins])m4_table_element(m4_ref(mutex_set_tas_spins), Configure test-and-set mutex spin count)
+m4_comment([DbEnv::mutex_stat])m4_table_element(m4_ref(mutex_stat), Mutex statistics)
+m4_comment([DbEnv::mutex_unlock])m4_table_element(m4_ref(mutex_unlock), Unlock a mutex)
+m4_comment([DbEnv::open])m4_table_element(m4_ref(dbenv_open), Open an environment)
+m4_comment([DbEnv::remove])m4_table_element(m4_ref(dbenv_remove), Remove an environment)
+m4_comment([DbEnv::rep_elect])m4_table_element(m4_ref(rep_elect), Hold a replication election)
+m4_comment([DbEnv::rep_process_message])m4_table_element(m4_ref(rep_message), Process a replication message)
+m4_comment([DbEnv::rep_set_config])m4_table_element(m4_ref(rep_set_config), Configure the replication subsystem)
+m4_comment([DbEnv::rep_set_limit])m4_table_element(m4_ref(rep_set_limit), Limit data sent in response to a single message)
+m4_comment([DbEnv::rep_set_nsites])m4_table_element(m4_ref(rep_set_nsites), Configure replication group site count)
+m4_comment([DbEnv::rep_set_priority])m4_table_element(m4_ref(rep_set_priority), Configure replication site priority)
+m4_comment([DbEnv::rep_set_request])m4_table_element(m4_ref(rep_set_request), Configure replication client retransmission requests)
+m4_comment([DbEnv::rep_set_timeout])m4_table_element(m4_ref(rep_set_timeout), Configure replication timeouts)
+m4_comment([DbEnv::rep_set_transport])m4_table_element(m4_ref(rep_set_transport), Configure replication transport callback)
+m4_comment([DbEnv::rep_start])m4_table_element(m4_ref(rep_start), Configure an environment for replication)
+m4_comment([DbEnv::rep_stat])m4_table_element(m4_ref(rep_stat), Replication statistics)
+m4_comment([DbEnv::rep_sync])m4_table_element(m4_ref(rep_sync), Replication synchronization)
+m4_comment([DbEnv::repmgr_add_remote_site])m4_table_element(m4_ref(repmgr_add_remote_site), Specify the replication manager's remote sites)
+m4_comment([DbEnv::repmgr_set_ack_policy])m4_table_element(m4_ref(repmgr_set_ack_policy), Specify the replication manager's client acknowledgement policy)
+m4_comment([DbEnv::repmgr_set_local_site])m4_table_element(m4_ref(repmgr_set_local_site), Specify the replication manager's local site)
+m4_comment([DbEnv::repmgr_site_list])m4_table_element(m4_ref(repmgr_site_list), List the sites and their status)
+m4_comment([DbEnv::repmgr_start])m4_table_element(m4_ref(repmgr_start), Start the replication manager)
+m4_comment([DbEnv::repmgr_stat])m4_table_element(m4_ref(repmgr_stat), Replication manager statistics)
+m4_comment([DbEnv::set_alloc])m4_table_element(m4_ref(dbenv_set_alloc), Set local space allocation functions)
+m4_comment([DbEnv::set_app_dispatch])m4_table_element(m4_ref(dbenv_set_app_dispatch), Configure application recovery)
+m4_comment([DbEnv::set_cache_max])m4_table_element(m4_ref(dbenv_set_cache_max), Set the maximum cache size)
+m4_comment([DbEnv::set_cachesize])m4_table_element(m4_ref(dbenv_set_cachesize), Set the environment cache size)
+m4_comment([DbEnv::set_data_dir])m4_table_element(m4_ref(dbenv_set_data_dir), Set the environment data directory)
+m4_comment([DbEnv::set_encrypt])m4_table_element(m4_ref(dbenv_set_encrypt), Set the environment cryptographic key)
+m4_comment([DbEnv::set_errcall])m4_table_element([m4_ref(dbenv_set_errcall), m4_ref(dbenv_set_msgcall)], Set error and informational message callbacks)
+m4_comment([DbEnv::set_errfile])m4_table_element([m4_ref(dbenv_set_errfile), m4_ref(dbenv_set_msgfile)], Set error and informational message FILE)
+m4_comment([DbEnv::set_error_stream])ifelse(M4API, C_API,, [m4_table_element([m4_ref(dbenv_set_error_stream), m4_ref(dbenv_set_message_stream)], Set error and informational message output stream)])
+m4_comment([DbEnv::set_errpfx])m4_table_element(m4_ref(dbenv_set_errpfx), Set error message prefix)
+m4_comment([DbEnv::set_event_notify])m4_table_element(m4_ref(dbenv_set_event_notify), Set event notification callback)
+m4_comment([DbEnv::set_feedback])m4_table_element(m4_ref(dbenv_set_feedback), Set feedback callback)
+m4_comment([DbEnv::set_flags])m4_table_element(m4_ref(dbenv_set_flags), Environment configuration)
+m4_comment([DbEnv::set_isalive])m4_table_element(m4_ref(dbenv_set_isalive), Set thread is-alive callback)
+m4_comment([DbEnv::set_lg_bsize])m4_table_element(m4_ref(dbenv_set_lg_bsize), Set log buffer size)
+m4_comment([DbEnv::set_lg_dir])m4_table_element(m4_ref(dbenv_set_lg_dir), Set the environment logging directory)
+m4_comment([DbEnv::set_lg_filemode])m4_table_element(m4_ref(dbenv_set_lg_filemode), Set log file mode)
+m4_comment([DbEnv::set_lg_max])m4_table_element(m4_ref(dbenv_set_lg_max), Set log file size)
+m4_comment([DbEnv::set_lg_regionmax])m4_table_element(m4_ref(dbenv_set_lg_regionmax), Set logging region size)
+m4_comment([DbEnv::set_lk_conflicts])m4_table_element(m4_ref(dbenv_set_lk_conflicts), Set lock conflicts matrix)
+m4_comment([DbEnv::set_lk_max_detect])m4_table_element(m4_ref(dbenv_set_lk_detect), Set automatic deadlock detection)
+m4_comment([DbEnv::set_lk_max_lockers])m4_table_element(m4_ref(dbenv_set_lk_max_lockers), Set maximum number of lockers)
+m4_comment([DbEnv::set_lk_max_locks])m4_table_element(m4_ref(dbenv_set_lk_max_locks), Set maximum number of locks)
+m4_comment([DbEnv::set_lk_max_objects])m4_table_element(m4_ref(dbenv_set_lk_max_objects), Set maximum number of lock objects)
+m4_comment([DbEnv::set_mp_max_openfd])m4_table_element(m4_ref(memp_set_max_openfd), Set the maximum number of open file descriptors)
+m4_comment([DbEnv::set_mp_max_write])m4_table_element(m4_ref(memp_set_max_write), Set the maximum number of sequential disk writes)
+m4_comment([DbEnv::set_mp_mmapsize])m4_table_element(m4_ref(dbenv_set_mp_mmapsize), Set maximum mapped-in database file size)
+m4_comment([DbEnv::set_rpc_server])m4_table_element(m4_ref(dbenv_set_rpc_server), Establish an RPC server connection)
+m4_comment([DbEnv::set_shm_key])m4_table_element(m4_ref(dbenv_set_shm_key), Set system memory shared segment ID)
+m4_comment([DbEnv::set_thread_count])m4_table_element(m4_ref(dbenv_set_thread_count), Set approximate thread count)
+m4_comment([DbEnv::set_thread_id])m4_table_element(m4_ref(dbenv_set_thread_id), Set thread of control ID function)
+m4_comment([DbEnv::set_thread_id_string])m4_table_element(m4_ref(dbenv_set_thread_id_string), Set thread of control ID format function)
+m4_comment([DbEnv::set_timeout])m4_table_element(m4_ref(dbenv_set_timeout), Set lock and transaction timeout)
+m4_comment([DbEnv::set_tmp_dir])m4_table_element(m4_ref(dbenv_set_tmp_dir), Set the environment temporary file directory)
+m4_comment([DbEnv::set_tx_max])m4_table_element(m4_ref(dbenv_set_tx_max), Set maximum number of transactions)
+m4_comment([DbEnv::set_tx_timestamp])m4_table_element(m4_ref(dbenv_set_tx_timestamp), Set recovery timestamp)
+m4_comment([DbEnv::set_verbose])m4_table_element(m4_ref(dbenv_set_verbose), Set verbose messages)
+m4_comment([DbEnv::stat_print])m4_table_element(m4_ref(dbenv_stat_print), Environment statistics)
+m4_comment([DbEnv::txn_begin])m4_table_element(m4_ref(txn_begin), Begin a transaction)
+m4_comment([DbEnv::txn_checkpoint])m4_table_element(m4_ref(txn_checkpoint), Checkpoint the transaction subsystem)
+m4_comment([DbEnv::txn_recover])m4_table_element(m4_ref(txn_recover), Distributed transaction recovery)
+m4_comment([DbEnv::txn_stat])m4_table_element(m4_ref(txn_stat), Return transaction subsystem statistics)
+m4_comment([DbLockNotGrantedException])ifelse(M4API, CXX_API, [m4_table_element(m4_ref(DbLockNotGrantedException), Lock-not-granted exception)])
+m4_comment([DbLock])ifelse(M4API, CXX_API, [m4_table_element(m4_ref(DbLock), Lock object)])
+m4_comment([DbLogc::])ifelse(M4API, CXX_API, [m4_table_element(m4_ref(DbLogc), Log Cursor Object)])
+m4_comment([DbLogc::])m4_table_element(m4_ref(log_cursor), Create a log cursor handle)
+m4_comment([DbLogc::close])m4_table_element(m4_ref(logc_close), Close a log cursor)
+m4_comment([DbLogc::get])m4_table_element(m4_ref(logc_get), Retrieve a log record)
+m4_comment([DbLsn])m4_table_element(m4_ref(DbLsn), Log Sequence Numbers)
+m4_comment([DbMemoryException])ifelse(M4API, CXX_API, [m4_table_element(m4_ref(DbMemoryException), Insufficient memory exception)])
+m4_comment([DbMpoolFile::])ifelse(M4API, CXX_API, [m4_table_element(m4_ref(DbMpoolFile), Memory pool file object)])
+m4_comment([DbMpoolFile::close])m4_table_element(m4_ref(memp_fclose), Close a file in a memory pool)
+m4_comment([DbMpoolFile::get])m4_table_element(m4_ref(memp_fget), Get page from a file in a memory pool)
+m4_comment([DbMpoolFile::open])m4_table_element(m4_ref(memp_fopen), Open a file in a memory pool)
+m4_comment([DbMpoolFile::put])m4_table_element(m4_ref(memp_fput), Return a page to a memory pool)
+m4_comment([DbMpoolFile::set_clear_len])m4_table_element(m4_ref(memp_set_clear_len), Set file page bytes to be cleared)
+m4_comment([DbMpoolFile::set_fileid])m4_table_element(m4_ref(memp_set_fileid), Set file unique identifier)
+m4_comment([DbMpoolFile::set_flags])m4_table_element(m4_ref(memp_set_flags), General memory pool file configuration)
+m4_comment([DbMpoolFile::set_ftype])m4_table_element(m4_ref(memp_set_ftype), Set file type)
+m4_comment([DbMpoolFile::set_lsn_offset])m4_table_element(m4_ref(memp_set_lsn_offset), Set file log-sequence-number offset)
+m4_comment([DbMpoolFile::set_maxsize])m4_table_element(m4_ref(memp_set_maxsize), Set maximum file size)
+m4_comment([DbMpoolFile::set_pgcookie])m4_table_element(m4_ref(memp_set_pgcookie), Set file cookie for pgin/pgout)
+m4_comment([DbMpoolFile::set_priority])m4_table_element(m4_ref(memp_set_priority), Set memory pool file priority)
+m4_comment([DbMpoolFile::sync])m4_table_element(m4_ref(memp_fsync), Flush pages from a file in a memory pool)
+m4_comment([DbSequence::])m4_table_element(ifelse(M4API, C_API, m4_ref(seq_create), m4_ref(DbSequence)), Create a sequence handle)
+m4_comment([DbSequence::close])m4_table_element(m4_ref(seq_close), Close a sequence)
+m4_comment([DbSequence::get])m4_table_element(m4_ref(seq_get), Get the next sequence element(s))
+m4_comment([DbSequence::get_dbp])m4_table_element(m4_ref(seq_get_dbp), Return a handle for the underlying sequence database)
+m4_comment([DbSequence::get_key])m4_table_element(m4_ref(seq_get_key), Return the key for a sequence)
+m4_comment([DbSequence::initial_value])m4_table_element(m4_ref(seq_initial_value), Set the initial value of a sequence)
+m4_comment([DbSequence::open])m4_table_element(m4_ref(seq_open), Open a sequence)
+m4_comment([DbSequence::remove])m4_table_element(m4_ref(seq_remove), Remove a sequence)
+m4_comment([DbSequence::set_cachesize])m4_table_element(m4_ref(seq_set_cachesize), Set the cache size of a sequence)
+m4_comment([DbSequence::set_flags])m4_table_element(m4_ref(seq_set_flags), Set the flags for a sequence)
+m4_comment([DbSequence::set_range])m4_table_element(m4_ref(seq_set_range), Set the range for a sequence)
+m4_comment([DbSequence::stat])m4_table_element(m4_ref(seq_stat), Return sequence statistics)
+m4_comment([DbTxn::])ifelse(M4API, CXX_API, [m4_table_element(m4_ref(DbTxn), Transaction object)])
+m4_comment([DbTxn::abort])m4_table_element(m4_ref(txn_abort), Abort a transaction)
+m4_comment([DbTxn::commit])m4_table_element(m4_ref(txn_commit), Commit a transaction)
+m4_comment([DbTxn::discard])m4_table_element(m4_ref(txn_discard), Discard a prepared but not resolved transaction handle)
+m4_comment([DbTxn::id])m4_table_element(m4_ref(txn_id), Return a transaction's ID)
+m4_comment([DbTxn::prepare])m4_table_element(m4_ref(txn_prepare), Prepare a transaction for commit)
+m4_comment([DbTxn::set_name])m4_table_element(m4_ref(txn_set_name), Associate a string with a transaction)
+m4_comment([DbTxn::set_timeout])m4_table_element(m4_ref(txn_set_timeout), Set transaction timeout)
+m4_comment([db_strerror])m4_table_element(m4_ref(dbenv_strerror), Error strings)
+m4_comment([db_version])m4_table_element(m4_ref(dbenv_version), Return version information)
+m4_comment([log_compare])m4_table_element(m4_ref(log_compare), Compare two Log Sequence Numbers)
+m4_table_end
+m4_page_footer
diff --git a/db/docs_src/env/env_class.so b/db/docs_src/env/env_class.so
new file mode 100644
index 000000000..9e648869e
--- /dev/null
+++ b/db/docs_src/env/env_class.so
@@ -0,0 +1,123 @@
+m4_comment([$Id: env_class.so,v 10.45 2005/11/30 19:09:47 bostic Exp $])
+
+define(M4PAGELOCAL, [DbEnv, dbenv_create, DB_RPCCLIENT, DB_CXX_NO_EXCEPTIONS])
+include(m4/m4.seealso)
+
+ifelse(M4API, C_API, [dnl
+m4_pf_header(m4_ref(dbenv_create), [dnl
+int
+db_env_create(DB_ENV **dbenvp, u_int32_t flags);
+])])
+ifelse(M4API, CXX_API, [dnl
+m4_pf_header(m4_ref(DbEnv), [dnl
+class DbEnv {
+public:
+ DbEnv(u_int32 flags);
+ ~DbEnv();
+m4_blank
+ DB_ENV *DbEnv::get_DB_ENV();
+ const DB_ENV *DbEnv::get_const_DB_ENV() const;
+ static DbEnv *DbEnv::get_DbEnv(DB_ENV *dbenv);
+ static const DbEnv *DbEnv::get_const_DbEnv(const DB_ENV *dbenv);
+ ...
+};])])
+
+define(m4_rpcclient, [dnl
+m4_tag(m4_idef(DB_RPCCLIENT),
+[Create a client environment to connect to a server.])
+m4_p([dnl
+The m4_ref(DB_RPCCLIENT) flag indicates to the system that this environment
+is remote on a server. The use of this flag causes the environment
+methods to use functions that call a server instead of local functions.
+Prior to making any environment or database method calls, the application
+must call the m4_ref(dbenv_set_rpc_server) function to establish the
+connection to the server.])])
+
+m4_p([dnl
+The m4_ref(DbEnv) object is the handle for a m4_db environment -- a
+collection including support for some or all of caching, locking,
+logging and transaction subsystems, as well as databases and log files.
+Methods of the m4_ref(DbEnv) handle are used to configure the
+environment as well as to operate on subsystems and databases in the
+environment.])
+
+m4_p([dnl
+m4_ref(DbEnv) handles are free-threaded if the m4_ref(DB_THREAD) flag
+is specified to the m4_refT(dbenv_open) when the environment is opened.
+The m4_ref(DbEnv) handle should not be closed while any other handle
+remains open that is using it as a reference (for example, m4_ref(Db)
+or m4_ref(DbTxn)). Once either the m4_ref(dbenv_close) or
+m4_refT(dbenv_remove)s are called, the handle may not be accessed again,
+regardless of the method's return.])
+
+ifelse(M4API, C_API, [dnl
+m4_p([dnl
+The m4_ref(dbenv_create) function creates a m4_ref(DbEnv) structure that
+is the handle for a m4_db environment. This function allocates memory
+for the structure, returning a pointer to the structure in the memory
+to which m4_arg(dbenvp) refers. To release the allocated memory and
+discard the handle, call the m4_ref(dbenv_close) or m4_refT(dbenv_remove)s.])
+
+m4_p([dnl
+The m4_ref(DbEnv) handle contains a special field, "app_private", which
+is declared as type "void *". This field is provided for the use of
+the application program. It is initialized to NULL and is not further
+used by m4_db in any way.])
+
+m4_return(dbenv_create, std)
+
+m4_sf_zmust(0)
+
+m4_tagbegin
+m4_rpcclient
+m4_tagend
+
+m4_err(dbenv_create)],[dnl
+m4_p([dnl
+The constructor creates the m4_ref(DbEnv) object. The constructor
+allocates memory internally; calling the m4_ref(dbenv_close) or
+m4_refT(dbenv_remove)s will free that memory.])
+
+m4_p([dnl
+The following m4_arg(flags) value may be specified:])
+
+m4_tagbegin
+
+ifelse(M4API, CXX_API, [dnl
+m4_tag(m4_idef(DB_CXX_NO_EXCEPTIONS), [dnl
+The m4_db C++ API supports two different error behaviors. By default,
+whenever an error occurs, an exception is thrown that encapsulates the
+error information. This generally allows for cleaner logic for
+transaction processing because a try block can surround a single
+transaction. However, if m4_ref(DB_CXX_NO_EXCEPTIONS) is specified,
+exceptions are not thrown; instead, each individual function returns an
+error code.])])
+
+m4_rpcclient
+
+m4_tagend
+
+ifelse(M4API, CXX_API, [dnl
+m4_p([dnl
+Each m4_ref(DbEnv) object has an associated m4_refc(DbEnv) structure,
+which is used by the underlying implementation of m4_db and its
+C-language API. The DbEnv::get_DB_ENV method returns a pointer to this
+struct. Given a const m4_ref(DbEnv) object, DbEnv::get_const_DB_ENV
+returns a const pointer to the same struct.])
+
+m4_p([dnl
+Given a m4_refc(DbEnv) struct, the DbEnv::get_DbEnv method returns the
+corresponding m4_ref(DbEnv) object, if there is one. If the
+m4_refc(DbEnv) object was not associated with a m4_ref(DbEnv) (that is,
+it was not returned from a call to DbEnv::get_DB_ENV), then the result
+of DbEnv::get_DbEnv is undefined. Given a const m4_refc(DbEnv) struct,
+DbEnv::get_const_Db_Env returns the associated const m4_ref(DbEnv)
+object, if there is one.])
+
+m4_p([dnl
+These methods may be useful for m4_db applications including both C
+and C++ language software. It should not be necessary to use these
+calls in a purely C++ application.])])])
+
+m4_seealso(DbEnv)
+m4_page_footer
diff --git a/db/docs_src/env/env_close.so b/db/docs_src/env/env_close.so
new file mode 100644
index 000000000..b30fca739
--- /dev/null
+++ b/db/docs_src/env/env_close.so
@@ -0,0 +1,72 @@
+m4_comment([$Id: env_close.so,v 10.38 2004/08/13 03:38:56 bostic Exp $])
+
+define(M4PAGELOCAL, dbenv_close)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbenv_close),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__close(DB_ENV *dbenv, u_int32_t flags);
+])
+ifelse(M4API, CXX_API, [dnl
+DbEnv::close(u_int32_t flags);
+]))
+
+m4_p([dnl
+The m4_refT(dbenv_close) closes the m4_db environment, freeing any
+allocated resources and closing any underlying subsystems.])
+
+m4_p([dnl
+The m4_ref(DbEnv) handle should not be closed while any other handle
+that refers to it is not yet closed; for example, database environment
+handles must not be closed while database handles remain open, or
+transactions in the environment have not yet been committed or aborted.
+Specifically, this includes m4_ref(Db), m4_ref(Dbc), m4_ref(DbTxn),
+m4_ref(DbLogc) and m4_ref(DbMpoolFile) handles.])
+
+m4_p([dnl
+Where the environment was initialized with the m4_ref(DB_INIT_LOCK)
+flag, calling m4_ref(dbenv_close) does not release any locks still held
+by the closing process, providing functionality for long-lived locks.
+Processes that want to have all their locks released can do so by
+issuing the appropriate m4_ref(lock_vec) call.])
+
+m4_p([dnl
+Where the environment was initialized with the m4_ref(DB_INIT_MPOOL)
+flag, calling m4_ref(dbenv_close) implies calls to m4_ref(memp_fclose) for
+any remaining open files in the memory pool that were returned to this
+process by calls to m4_ref(memp_fopen). It does not imply a call to
+m4_ref(memp_fsync) for those files.])
+
+m4_p([dnl
+Where the environment was initialized with the m4_ref(DB_INIT_TXN) flag,
+calling m4_ref(dbenv_close) aborts any unresolved transactions.
+Applications should not depend on this behavior for transactions
+involving m4_db databases; all such transactions should be explicitly
+resolved. The problem with depending on this semantic is that aborting
+an unresolved transaction involving database operations requires a
+database handle. Because the database handles should have been closed before
+calling m4_ref(dbenv_close), it will not be possible to abort the
+transaction, and recovery will have to be run on the m4_db environment
+before further operations are done.])
+
+m4_p([dnl
+Where log cursors were created using the m4_refT(log_cursor), calling
+m4_ref(dbenv_close) does not imply closing those cursors.])
+
+m4_p([dnl
+In multithreaded applications, only a single thread may call
+m4_ref(dbenv_close).])
+
+m4_p([dnl
+After m4_ref(dbenv_close) has been called, regardless of its return, the
+m4_db environment handle may not be accessed again.])
+
+m4_return(dbenv_close, std)
+
+m4_parambegin
+m4_unusedflags
+m4_paramend
+
+m4_seealso(DbEnv)
+m4_page_footer
diff --git a/db/docs_src/env/env_dbremove.so b/db/docs_src/env/env_dbremove.so
new file mode 100644
index 000000000..2b8909497
--- /dev/null
+++ b/db/docs_src/env/env_dbremove.so
@@ -0,0 +1,90 @@
+m4_comment([$Id: env_dbremove.so,v 10.49 2004/12/16 19:13:01 bostic Exp $])
+
+ifdef([M4INTERFACE],, [define(M4INTERFACE, dbenv_dbremove)])
+
+define(M4PAGELOCAL, M4INTERFACE)
+include(m4/m4.seealso)
+
+ifelse(M4INTERFACE, dbenv_dbremove, [dnl
+m4_pf_header(m4_ref(dbenv_dbremove),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__dbremove(DB_ENV *dbenv, DB_TXN *txnid,
+ const char *file, const char *database, u_int32_t flags);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::dbremove(DbTxn *txnid,
+ const char *file, const char *database, u_int32_t flags);
+]))],[dnl
+m4_pf_header(m4_ref(dbh_remove),
+ifelse(M4API, C_API, [dnl
+int
+DB-__GT__remove(DB *db,
+ const char *file, const char *database, u_int32_t flags);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+Db::remove(const char *file, const char *database, u_int32_t flags);
+]))])
+
+m4_p([dnl
+The m4_refT(M4INTERFACE) removes the database specified by the
+m4_arg(file) and m4_arg(database) parameters. If no m4_arg(database)
+is specified, the underlying file represented by m4_arg(file) is
+removed, incidentally removing all of the databases it contained.])
+
+m4_p([dnl
+Applications should never remove databases with open m4_ref(Db) handles,
+or in the case of removing a file, when any database in the file has an
+open handle. For example, some architectures do not permit the removal
+of files with open system handles. On these architectures, attempts to
+remove databases currently in use by any thread of control in the system
+may fail.])
+
+ifelse(M4INTERFACE, dbh_remove, [dnl
+m4_p([dnl
+The m4_refT(dbh_remove) should not be called if the remove is intended
+to be transactionally safe; the m4_refT(dbenv_dbremove) should be used
+instead.])
+m4_p([dnl
+The m4_refT(dbh_remove) may not be called after calling the
+m4_refT(dbh_open) on any m4_ref(Db) handle. If the m4_refT(dbh_open)
+has already been called on a m4_ref(Db) handle, close the existing
+handle and create a new one before calling m4_ref(dbh_remove).])
+
+m4_destructor(Db, dbh_remove)])
+
+m4_return(M4INTERFACE, std)
+
+m4_parambegin
+m4_param(database, [dnl
+The m4_arg(database) parameter is the database to be removed.])
+
+m4_param_utf8(file, [dnl
+The m4_arg(file) parameter is the physical file which contains the
+database(s) to be removed.])
+
+ifelse(M4INTERFACE, dbenv_dbremove, [dnl
+m4_param(flags, [dnl
+m4_sf_zmust(0)
+m4_tagbegin
+m4_autocommit_flag(dbenv_dbremove)
+m4_tagend])
+m4_param_txn(dbenv_dbremove, auto)
+],[dnl
+m4_unusedflags])
+m4_paramend
+
+m4_header([Environment Variables])
+m4_data_location(M4INTERFACE, ifelse(M4INTERFACE, dbenv_dbremove, 0, 1))
+
+m4_err(M4INTERFACE,
+ifelse(M4INTERFACE, dbenv_dbremove, deadlock, empty),
+einval, [ifelse(M4INTERFACE, dbenv_dbremove,
+[m4_ref(dbenv_dbremove) called before m4_ref(dbenv_open) was called],
+[m4_ref(dbh_remove) called after m4_ref(dbh_open) was called])],
+filenotfound)
+
+ifelse(M4INTERFACE, dbenv_dbremove, [m4_seealso(DbEnv)], [m4_seealso(Db)])
+m4_page_footer
diff --git a/db/docs_src/env/env_dbrename.so b/db/docs_src/env/env_dbrename.so
new file mode 100644
index 000000000..a88818399
--- /dev/null
+++ b/db/docs_src/env/env_dbrename.so
@@ -0,0 +1,98 @@
+m4_comment([$Id: env_dbrename.so,v 10.37 2004/12/16 19:13:01 bostic Exp $])
+
+ifdef([M4INTERFACE],, [define(M4INTERFACE, dbenv_dbrename)])
+
+define(M4PAGELOCAL, M4INTERFACE)
+include(m4/m4.seealso)
+
+ifelse(M4INTERFACE, dbenv_dbrename, [dnl
+m4_pf_header(m4_ref(dbenv_dbrename),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__dbrename(DB_ENV *dbenv, DB_TXN *txnid, const char *file,
+ const char *database, const char *newname, u_int32_t flags);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::dbrename(DbTxn *txnid, const char *file,
+ const char *database, const char *newname, u_int32_t flags);
+]))],[dnl
+m4_pf_header(m4_ref(dbh_rename),
+ifelse(M4API, C_API, [dnl
+int
+DB-__GT__rename(DB *db, const char *file,
+ const char *database, const char *newname, u_int32_t flags);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+Db::rename(const char *file,
+ const char *database, const char *newname, u_int32_t flags);
+]))])
+
+m4_p([dnl
+The m4_refT(M4INTERFACE) renames the database specified by the
+m4_arg(file) and m4_arg(database) parameters to m4_arg(newname). If no
+m4_arg(database) is specified, the underlying file represented by
+m4_arg(file) is renamed, incidentally renaming all of the databases it
+contained.])
+
+m4_p([dnl
+Applications should not rename databases that are currently in use. If
+an underlying file is being renamed and logging is currently enabled in
+the database environment, no database in the file may be open when the
+m4_refT(M4INTERFACE) is called. In particular, some architectures do
+not permit renaming files with open handles. On these architectures,
+attempts to rename databases that are currently in use by any thread of
+control in the system may fail.])
+
+ifelse(M4INTERFACE, dbh_rename, [dnl
+m4_p([dnl
+The m4_refT(dbh_rename) should not be called if the rename is intended
+to be transactionally safe; the m4_refT(dbenv_dbrename) should be used
+instead.])
+m4_p([dnl
+The m4_refT(dbh_rename) may not be called after calling the
+m4_refT(dbh_open) on any m4_ref(Db) handle. If the m4_refT(dbh_open)
+has already been called on a m4_ref(Db) handle, close the existing
+handle and create a new one before calling m4_ref(dbh_rename).])
+
+m4_destructor(Db, dbh_rename)])
+
+m4_return(M4INTERFACE, std)
+
+m4_parambegin
+m4_param(database, [dnl
+The m4_arg(database) parameter is the database to be renamed.])
+
+m4_param_utf8(file, [dnl
+The m4_arg(file) parameter is the physical file which contains the
+database(s) to be renamed.])
+
+ifelse(M4INTERFACE, dbenv_dbrename, [dnl
+m4_param(flags, [dnl
+m4_sf_zmust(0)
+m4_tagbegin
+m4_autocommit_flag(dbenv_dbrename)
+m4_tagend])
+],[dnl
+m4_unusedflags
+])
+
+m4_param(newname, [dnl
+The m4_arg(newname) parameter is the new name of the database or file.])
+
+ifelse(M4INTERFACE, dbenv_dbrename, [m4_param_txn(dbenv_dbrename, auto)])
+m4_paramend
+
+m4_header([Environment Variables])
+m4_data_location(M4INTERFACE, ifelse(M4INTERFACE, dbenv_dbrename, 0, 1))
+
+m4_err(M4INTERFACE,
+ifelse(M4INTERFACE, dbenv_dbrename, deadlock, empty), einval,
+[ifelse(M4INTERFACE, dbenv_dbrename,
+[m4_ref(dbenv_dbrename) called before m4_ref(dbenv_open) was called],
+[m4_ref(dbh_rename) called after m4_ref(dbh_open) was called])],
+filenotfound)
+
+ifelse(M4INTERFACE, dbenv_dbrename, [m4_seealso(DbEnv)], [m4_seealso(Db)])
+m4_page_footer
diff --git a/db/docs_src/env/env_err.so b/db/docs_src/env/env_err.so
new file mode 100644
index 000000000..2ceff2c09
--- /dev/null
+++ b/db/docs_src/env/env_err.so
@@ -0,0 +1,106 @@
+m4_comment([$Id: env_err.so,v 10.34 2006/04/27 20:17:47 bostic Exp $])
+
+ifdef([M4INTERFACE],, [define(M4INTERFACE, dbenv_err)])
+
+include(m4/m4.seealso)
+
+ifelse(M4INTERFACE, dbenv_err, [dnl
+define(M4PAGELOCAL, [dbenv_err, dbenv_errx])
+m4_pf_header(m4_ref(dbenv_err),
+ifelse(M4API, C_API, [dnl
+void
+DB_ENV-__GT__err(DB_ENV *dbenv, int error, const char *fmt, ...);
+m4_blank
+void
+DB_ENV-__GT__errx(DB_ENV *dbenv, const char *fmt, ...);
+])dnl
+ifelse(M4API, CXX_API, [dnl
+DbEnv::err(int error, const char *fmt, ...);
+m4_blank
+DbEnv::errx(const char *fmt, ...);
+]))],[dnl
+define(M4PAGELOCAL, [dbh_err, dbh_errx])
+m4_pf_header(m4_ref(dbh_err),
+ifelse(M4API, C_API, [dnl
+void
+DB-__GT__err(DB *db, int error, const char *fmt, ...);
+m4_blank
+void
+DB-__GT__errx(DB *db, const char *fmt, ...);
+])dnl
+ifelse(M4API, CXX_API, [dnl
+Db::err(int error, const char *fmt, ...);
+m4_blank
+Db::errx(const char *fmt, ...);
+]))])
+
+m4_p([dnl
+The m4_ref(dbenv_err), m4_ref(dbenv_errx), m4_ref(dbh_err) and
+m4_refT(dbh_errx)s provide error-messaging functionality for
+applications written using the m4_db library.])
+
+m4_p([dnl
+The m4_ref(dbh_err) and m4_refT(dbenv_err)s constructs an error message
+consisting of the following elements:])
+
+m4_indentv([dnl
+m4_tagbegin
+m4_tag([An optional prefix string], [dnl
+If no error callback function has been set using the
+m4_refT(dbenv_set_errcall), any prefix string specified using the
+m4_refT(dbenv_set_errpfx), followed by two separating characters: a colon
+and a m4_htmlquote(space) character.])
+m4_tag([An optional printf-style message], [dnl
+The supplied message m4_arg(fmt), if non-NULL, in which the
+m4_ansic_name printf function specifies how subsequent parameters
+are converted for output.])
+m4_tag([A separator], [dnl
+Two separating characters: a colon and a m4_htmlquote(space) character.])
+m4_tag([A standard error string], [dnl
+The standard system or m4_db library error string associated with the
+m4_arg(error) value, as returned by the m4_refT(dbenv_strerror).])
+m4_tagend
+])
+
+m4_p([dnl
+The m4_ref(dbh_errx) and m4_refT(dbenv_errx)s are the same as the
+m4_ref(dbh_err) and m4_refT(dbenv_err)s, except they do not append the
+final separator characters and standard error string to the error
+message.])
+
+m4_p([dnl
+This constructed error message is then handled as follows:])
+
+m4_indentv([dnl
+m4_p([dnl
+If an error callback function has been set (see m4_ref(dbh_set_errcall)
+and m4_ref(dbenv_set_errcall)), that function is called with two
+parameters: any prefix string specified (see m4_ref(dbh_set_errpfx) and
+m4_ref(dbenv_set_errpfx)) and the error message.])
+
+m4_p([dnl
+If a C library FILE * has been set (see m4_ref(dbh_set_errfile) and
+m4_ref(dbenv_set_errfile)), the error message is written to that output
+stream.])
+
+ifelse(M4API, C_API,, [dnl
+m4_p([dnl
+If ifelse(M4API, CXX_API, [a C++ ostream], [an OutputStream]) has been set
+(see m4_ref(dbenv_set_error_stream) and m4_ref(dbh_set_error_stream)),
+the error message is written to that stream.])])
+
+m4_p([dnl
+If none of these output options has been configured, the error message
+is written to stderr, the standard error output stream.])])
+
+m4_parambegin
+m4_param(error, [dnl
+The m4_arg(error) parameter is the error value for which the
+m4_ref(dbenv_err) and m4_refT(dbh_err)s will display a explanatory
+string.])
+m4_param(fmt, [dnl
+The m4_arg(fmt) parameter is an optional printf-style message to display.])
+m4_paramend
+
+ifelse(M4INTERFACE, dbenv_err, [m4_seealso(DbEnv)], [m4_seealso(Db)])
+m4_page_footer
diff --git a/db/docs_src/env/env_event_notify.so b/db/docs_src/env/env_event_notify.so
new file mode 100644
index 000000000..6f3436e9b
--- /dev/null
+++ b/db/docs_src/env/env_event_notify.so
@@ -0,0 +1,113 @@
+m4_comment([$Id: env_event_notify.so,v 10.13 2007/04/05 20:37:29 bostic Exp $])
+
+define(M4PAGELOCAL, [dnl
+ dbenv_set_event_notify, DB_EVENT_PANIC, DB_EVENT_REP_CLIENT,
+ DB_EVENT_REP_ELECTED, DB_EVENT_REP_MASTER, DB_EVENT_REP_NEWMASTER,
+ DB_EVENT_REP_PERM_FAILED, DB_EVENT_REP_STARTUPDONE])
+
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbenv_set_event_notify),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__set_event_notify(DB_ENV *dbenv,
+ void (*db_event_fcn)(DB_ENV *dbenv, u_int32_t event, void *event_info));
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::set_event_notify(
+ void (*db_event_fcn)(DB_ENV *dbenv, u_int32_t event, void *event_info));
+]))
+
+m4_p([dnl
+The m4_refT(dbenv_set_event_notify) configures a callback function which
+is called to notify the process of specific m4_db events.])
+
+m4_scope_dbenv(dbenv_set_event_notify)
+
+m4_when_any(dbenv_set_event_notify)
+
+m4_return(dbenv_set_event_notify, std)
+
+m4_parambegin
+m4_param(db_event_fcn, [dnl
+The m4_arg(db_event_fcn) parameter is the application's event
+notification function. The function takes three parameters:
+m4_tagbegin
+m4_tag(dbenv, [dnl
+The m4_arg(dbenv) parameter is the enclosing database environment handle.])
+m4_tag(event, [dnl
+The m4_arg(event) parameter is one of the following values:])
+m4_tagbegin
+m4_tag(m4_idef(DB_EVENT_PANIC), [dnl
+Errors can occur in the m4_db library where the only solution is to shut
+down the application and run recovery (for example, if m4_db is unable
+to allocate heap memory). In such cases, the m4_db methods will
+ifelse(M4EXCEPT, return_only, [return m4_ref(DB_RUNRECOVERY).])
+ifelse(M4EXCEPT, except_return, [dnl
+either return m4_ref(DB_RUNRECOVERY) or throw a m4_ref(DbRunRecoveryException),
+depending on the API configuration.])
+ifelse(M4EXCEPT, except_only, [throw a m4_ref(DbRunRecoveryException).])
+It is often easier to simply exit the application when such errors occur
+rather than gracefully return up the stack.
+m4_p([dnl
+When m4_arg(event) is set to m4_ref(DB_EVENT_PANIC), the database
+environment has failed. All threads of control in the database
+environment should exit the environment, and recovery should be run.])])
+
+m4_tag(m4_idef(DB_EVENT_REP_CLIENT), [dnl
+The local site is now a replication client.])
+
+m4_tag(m4_idef(DB_EVENT_REP_ELECTED), [dnl
+The local replication site has just won an election. An application using
+the Base replication API should arrange for a call to the m4_refT(rep_start)
+after receiving this event, to reconfigure the local environment as a
+replication master.])
+m4_p([dnl
+Replication Manager applications may safely ignore this event. The
+Replication Manager calls m4_ref(rep_start) automatically on behalf of
+the application when appropriate (resulting in firing of the
+m4_ref(DB_EVENT_REP_MASTER) event).])
+
+m4_tag(m4_idef(DB_EVENT_REP_MASTER), [dnl
+The local site is now the master site of its replication group. It is
+the application's responsibility to begin acting as the master environment.])
+
+m4_tag(m4_idef(DB_EVENT_REP_NEWMASTER), [dnl
+The replication group of which this site is a member has just established a
+new master; the local site is not the new master. The
+m4_arg(event_info) parameter points to an integer containing the
+environment ID of the new master.])
+
+m4_tag(m4_idef(DB_EVENT_REP_PERM_FAILED), [dnl
+The replication manager did not receive enough acknowledgements (based on
+the acknowledgement policy configured with m4_ref(repmgr_set_ack_policy))
+to ensure a transaction's durability within the replication group. The
+transaction will be flushed to the master's local disk storage for
+durability.])
+m4_p([dnl
+The m4_ref(DB_EVENT_REP_PERM_FAILED) event is provided only to applications
+configured for the replication manager.])
+
+m4_tag(m4_idef(DB_EVENT_REP_STARTUPDONE), [dnl
+The client has completed startup synchronization and is now processing
+live log records received from the master.])
+
+m4_tag(m4_idef(DB_EVENT_WRITE_FAILED), [dnl
+A m4_db write to stable storage failed.])
+
+m4_tagend
+
+m4_tag(event_info, [dnl
+The m4_arg(event_info) parameter may reference memory which contains
+additional information describing an event. By default,
+m4_arg(event_info) is NULL; specific events may pass non-NULL values,
+in which case the event will also describe the memory's structure.])
+m4_tagend])
+
+m4_paramend
+
+m4_not_reentrant
+
+m4_seealso(DbEnv)
+m4_page_footer
diff --git a/db/docs_src/env/env_failchk.so b/db/docs_src/env/env_failchk.so
new file mode 100644
index 000000000..f29b8b14a
--- /dev/null
+++ b/db/docs_src/env/env_failchk.so
@@ -0,0 +1,72 @@
+m4_comment([$Id: env_failchk.so,v 10.6 2006/10/12 21:37:42 bostic Exp $])
+
+define(M4PAGELOCAL, [dbenv_failchk])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbenv_failchk),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__failchk(DB_ENV *dbenv, u_int32_t flags);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::failchk(u_int32_t flags);
+]))
+
+m4_p([dnl
+The m4_refT(dbenv_failchk) checks for threads of control (either a true
+thread or a process) that have exited while manipulating m4_db library
+data structures, while holding a logical database lock, or with an
+unresolved transaction (that is, a transaction that was never aborted
+or committed). For more information, see m4_link(M4RELDIR/ref/cam/app,
+Architecting Data Store and Concurrent Data Store applications), and
+m4_link(M4RELDIR/ref/transapp/app, Architecting Transactional Data Store
+applications).])
+
+m4_p([dnl
+The m4_refT(dbenv_failchk) is based on the "thread_id" and "is_alive"
+functions specified to the m4_refT(dbenv_set_thread_id). Applications
+calling the m4_refT(dbenv_failchk) must have already called the
+m4_refT(dbenv_set_isalive), on the same m4_ref(DbEnv), and must have
+configured their database environment using the
+m4_refT(dbenv_set_thread_count).])
+
+m4_p([dnl
+If m4_ref(dbenv_failchk) determines a thread of control exited while
+holding database read locks, it will release those locks. If
+m4_ref(dbenv_failchk) determines a thread of control exited with an
+unresolved transaction, the transaction will be aborted. In either of
+these cases, m4_ref(dbenv_failchk) will return 0 and the application may
+continue to use the database environment.])
+
+m4_p([dnl
+In either of these cases, the m4_refT(dbenv_failchk) will also report
+the process and thread IDs associated with any released locks or
+aborted transactions. The information is printed to a specified output
+channel (see the m4_refT(dbenv_set_msgfile) for more information), or
+passed to an application callback function (see the
+m4_refT(dbenv_set_msgcall) for more information).])
+
+m4_p([dnl
+If m4_ref(dbenv_failchk) determines a thread of control has exited such
+that database environment recovery is required, it will return
+m4_ref(DB_RUNRECOVERY). In this case, the application should not
+continue to use the database environment. For a further description as
+to the actions the application should take when this failure occurs, see
+m4_link(M4RELDIR/ref/cam/fail, Handling failure in Data Store and
+Concurrent Data Store applications), and
+m4_link(M4RELDIR/ref/transapp/fail, Handling failure in Transactional
+Data Store applications).])
+
+m4_when_after_envopen(dbenv_failchk)
+
+m4_return(dbenv_failchk, std)
+
+m4_parambegin
+m4_unusedflags
+m4_paramend
+
+m4_err(dbenv_failchk, einval)
+
+m4_seealso(DbEnv)
+m4_page_footer
diff --git a/db/docs_src/env/env_fileid_reset.so b/db/docs_src/env/env_fileid_reset.so
new file mode 100644
index 000000000..86b08ad93
--- /dev/null
+++ b/db/docs_src/env/env_fileid_reset.so
@@ -0,0 +1,49 @@
+m4_comment([$Id: env_fileid_reset.so,v 1.3 2005/12/13 16:48:01 bostic Exp $])
+
+define(M4PAGELOCAL, [dbenv_fileid_reset])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbenv_fileid_reset),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__fileid_reset(DB_ENV *dbenv, const char *file, u_int32_t flags);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::fileid_reset(const char *file, u_int32_t flags);
+]))
+
+m4_p([dnl
+The m4_refT(dbenv_fileid_reset) allows database files to be copied, and
+then the copy used in the same database environment as the original.])
+
+m4_p([dnl
+All databases contain an ID string used to identify the database in the
+database environment cache. If a physical database file is copied, and
+used in the same environment as another file with the same ID strings,
+corruption can occur. The m4_refT(dbenv_fileid_reset) creates new ID
+strings for all of the databases in the physical file.])
+
+m4_p([dnl
+The m4_refT(dbenv_fileid_reset) modifies the physical file, in-place.
+Applications should not reset IDs in files that are currently in use.])
+
+m4_when_any(dbenv_fileid_reset)
+
+m4_return(dbenv_fileid_reset, std)
+
+m4_parambegin
+m4_param(file, [dnl
+The name of the physical file in which new file IDs are to be created.])
+m4_param(flags, [dnl
+m4_sf_zmust(0)
+m4_tagbegin
+m4_tag(DB_ENCRYPT, [dnl
+The file contains encrypted databases.])
+m4_tagend])
+m4_paramend
+
+m4_err(dbenv_fileid_reset, einval)
+
+m4_seealso(DbEnv)
+m4_page_footer
diff --git a/db/docs_src/env/env_list.so b/db/docs_src/env/env_list.so
new file mode 100644
index 000000000..a4cb597e6
--- /dev/null
+++ b/db/docs_src/env/env_list.so
@@ -0,0 +1,7 @@
+m4_comment([$Id: env_list.so,v 10.1 2002/08/30 20:00:50 bostic Exp $])
+
+m4_page_title([m4_db: Database Environments and Related Methods])
+
+include(env/m4.methods)
+
+m4_page_footer
diff --git a/db/docs_src/env/env_lsn_reset.so b/db/docs_src/env/env_lsn_reset.so
new file mode 100644
index 000000000..863158542
--- /dev/null
+++ b/db/docs_src/env/env_lsn_reset.so
@@ -0,0 +1,57 @@
+m4_comment([$Id: env_lsn_reset.so,v 1.4 2005/12/13 16:48:01 bostic Exp $])
+
+define(M4PAGELOCAL, [dbenv_lsn_reset])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbenv_lsn_reset),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__lsn_reset(DB_ENV *dbenv, const char *file, u_int32_t flags);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::lsn_reset(const char *file, u_int32_t flags);
+]))
+
+m4_p([dnl
+The m4_refT(dbenv_lsn_reset) allows database files to be moved from one
+transactional database environment to another.])
+
+m4_p([dnl
+Database pages in transactional database environments contain references
+to the environment's log files (that is, log sequence numbers, or LSNs).
+Copying or moving a database file from one database environment to
+another, and then modifying it, can result in data corruption if the
+LSNs are not first cleared.])
+
+m4_p([dnl
+Note that LSNs should be reset before moving or copying the database
+file into a new database environment, rather than moving or copying the
+database file and then resetting the LSNs. m4_db has consistency checks
+that may be triggered if an application calls m4_ref(dbenv_lsn_reset)
+on a database in a new environment when the database LSNs still reflect
+the old environment.])
+
+m4_p([dnl
+The m4_refT(dbenv_lsn_reset) modifies the physical file, in-place.
+Applications should not reset LSNs in files that are currently in use.])
+
+m4_when_any(dbenv_lsn_reset)
+
+m4_return(dbenv_lsn_reset, std)
+
+m4_parambegin
+m4_param(file, [dnl
+The name of the physical file in which the LSNs are to be cleared.])
+m4_param(flags, [dnl
+m4_sf_zmust(0)
+m4_tagbegin
+m4_tag(DB_ENCRYPT, [dnl
+The file contains encrypted databases.])
+m4_tagend])
+m4_paramend
+
+m4_err(dbenv_lsn_reset, einval)
+
+m4_seealso(DbEnv)
+m4_page_footer
diff --git a/db/docs_src/env/env_open.so b/db/docs_src/env/env_open.so
new file mode 100644
index 000000000..89a54764b
--- /dev/null
+++ b/db/docs_src/env/env_open.so
@@ -0,0 +1,271 @@
+m4_comment([$Id: env_open.so,v 10.111 2006/08/02 17:39:47 bostic Exp $])
+
+define(M4PAGELOCAL,
+ [dbenv_open, dbenv_get_home, dbenv_get_open_flags, DB_CREATE,
+ DB_INIT_CDB, DB_INIT_LOCK, DB_INIT_LOG, DB_INIT_MPOOL,
+ DB_INIT_REP, DB_INIT_TXN, DB_LOCKDOWN, DB_PRIVATE, DB_RECOVER,
+ DB_RECOVER_FATAL, DB_REGISTER, DB_SYSTEM_MEM, DB_THREAD,
+ DB_VERSION_MISMATCH])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbenv_open),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__open(DB_ENV *dbenv, char *db_home, u_int32_t flags, int mode);
+m4_blank
+int
+DB_ENV-__GT__get_home(DB_ENV *dbenv, const char **homep);
+m4_blank
+int
+DB_ENV-__GT__get_open_flags(DB_ENV *dbenv, u_int32_t *flagsp);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::open(const char *db_home, u_int32_t flags, int mode);
+m4_blank
+int
+DbEnv::get_home(const char **homep);
+m4_blank
+int
+DbEnv::get_open_flags(u_int32_t *flagsp);
+]))
+
+m4_p([dnl
+The m4_refT(dbenv_open) opens a m4_db environment. It provides a
+structure for creating a consistent environment for processes using one
+or more of the features of m4_db.])
+
+m4_return(dbenv_open, std,
+[If m4_ref(dbenv_open) fails, the m4_refT(dbenv_close) must be called
+to discard the m4_ref(DbEnv) handle.])
+
+m4_parambegin
+m4_param_utf8(db_home, [dnl
+The m4_arg(db_home) parameter is the database environment's home
+directory. For more information on m4_arg(db_home), and filename
+resolution in general, see m4_link(M4RELDIR/ref/env/naming, [m4_db File
+Naming]). The environment variable m4_envvar(DB_HOME) may be used as
+the path of the database home, as described in
+m4_link(M4RELDIR/ref/env/naming, [m4_db File Naming]).])
+
+m4_param(flags, [dnl
+The m4_arg(flags) parameter specifies the subsystems that are initialized
+and how the application's environment affects m4_db file naming, among
+other things.
+
+m4_sf_or_may
+
+m4_p([dnl
+Because there are a large number of flags that can be specified, they
+have been grouped together by functionality. The first group of flags
+indicates which of the m4_db subsystems should be initialized.])
+
+m4_p([dnl
+The choice of subsystems initialized for a m4_db database environment
+is specified by the thread of control initially creating the
+environment. Any subsequent thread of control joining the environment
+will automatically be configured to use the same subsystems as were
+created in the environment (unless the thread of control requests a
+subsystem not available in the environment, which will fail).
+Applications joining an environment, able to adapt to whatever
+subsystems have been configured in the environment, should open the
+environment without specifying any subsystem flags. Applications
+joining an environment, requiring specific subsystems from their
+environments, should open the environment specifying those specific
+subsystem flags.])
+
+m4_tagbegin
+
+m4_tag(m4_idef(DB_INIT_CDB), [dnl
+Initialize locking for the m4_link(M4RELDIR/ref/cam/intro, m4_cam)
+product. In this mode, m4_db provides multiple reader/single writer
+access. The only other subsystem that should be specified with the
+m4_ref(DB_INIT_CDB) flag is m4_ref(DB_INIT_MPOOL).])
+
+m4_tag(m4_idef(DB_INIT_LOCK), [dnl
+Initialize the locking subsystem. This subsystem should be used when
+multiple processes or threads are going to be reading and writing a
+m4_db database, so that they do not interfere with each other. If all
+threads are accessing the database(s) read-only, locking is unnecessary.
+When the m4_ref(DB_INIT_LOCK) flag is specified, it is usually necessary
+to run a deadlock detector, as well. See m4_ref(db_deadlock) and
+m4_ref(lock_detect) for more information.])
+
+m4_tag(m4_idef(DB_INIT_LOG), [dnl
+Initialize the logging subsystem. This subsystem should be used when
+recovery from application or system failure is necessary. If the log
+region is being created and log files are already present, the log files
+are reviewed; subsequent log writes are appended to the end of the log,
+rather than overwriting current log entries.])
+
+m4_tag(m4_idef(DB_INIT_MPOOL), [dnl
+Initialize the shared memory buffer pool subsystem. This subsystem
+should be used whenever an application is using any m4_db access
+method.])
+
+m4_tag(m4_idef(DB_INIT_REP), [dnl
+Initialize the replication subsystem. This subsystem
+should be used whenever an application plans on using replication.
+The m4_ref(DB_INIT_REP) flag requires the m4_ref(DB_INIT_TXN) and
+m4_ref(DB_INIT_LOCK) flags also be configured.])
+
+m4_tag(m4_idef(DB_INIT_TXN), [dnl
+Initialize the transaction subsystem. This subsystem should be used
+when recovery and atomicity of multiple operations are important. The
+m4_ref(DB_INIT_TXN) flag implies the m4_ref(DB_INIT_LOG) flag.])
+
+m4_tagend
+
+m4_p([dnl
+The second group of flags govern what recovery, if any, is performed when
+the environment is initialized:])
+
+m4_tagbegin
+m4_tag(m4_idef(DB_RECOVER), [dnl
+Run normal recovery on this environment before opening it for normal
+use. If this flag is set, the m4_ref(DB_CREATE) and m4_ref(DB_INIT_TXN)
+flags must also be set, because the regions will be removed and
+re-created, and transactions are required for application recovery.])
+
+m4_tag(m4_idef(DB_RECOVER_FATAL), [dnl
+Run catastrophic recovery on this environment before opening it for
+normal use. If this flag is set, the m4_ref(DB_CREATE) and
+m4_ref(DB_INIT_TXN) flags must also be set, because the regions will be
+removed and re-created, and transactions are required for application
+recovery.])
+
+
+m4_tagend
+
+m4_p([dnl
+A standard part of the recovery process is to remove the existing m4_db
+environment and create a new one in which to perform recovery. If the
+thread of control performing recovery does not specify the correct
+region initialization information (for example, the correct memory pool
+cache size), the result can be an application running in an environment
+with incorrect cache and other subsystem sizes. For this reason, the
+thread of control performing recovery should specify correct
+configuration information before calling the m4_refT(dbenv_open); or it
+should remove the environment after recovery is completed, leaving
+creation of the correctly sized environment to a subsequent call to
+m4_ref(dbenv_open).])
+
+m4_p([dnl
+All m4_db recovery processing must be single-threaded; that is, only a
+single thread of control may perform recovery or access a m4_db
+environment while recovery is being performed. Because it is not an
+error to specify m4_ref(DB_RECOVER) for an environment for which no
+recovery is required, it is reasonable programming practice for the
+thread of control responsible for performing recovery and creating the
+environment to always specify the m4_ref(DB_CREATE) and
+m4_ref(DB_RECOVER) flags during startup.])
+
+m4_p([dnl
+The m4_ref(dbenv_open) function returns successfully if m4_ref(DB_RECOVER)
+or m4_ref(DB_RECOVER_FATAL) is specified and no log files exist, so it
+is necessary to ensure that all necessary log files are present before
+running recovery. For further information, consult m4_ref(db_archive)
+and m4_ref(db_recover).])
+
+m4_p([dnl
+The third group of flags govern file-naming extensions in the environment:])
+
+m4_tagbegin
+m4_env_flags
+m4_tagend
+
+m4_p([Finally, there are a few additional unrelated flags:])
+
+m4_tagbegin
+m4_tag(m4_idef(DB_CREATE), [dnl
+Cause m4_db subsystems to create any underlying files, as necessary.])
+
+m4_tag(m4_idef(DB_LOCKDOWN), [dnl
+Lock shared m4_db environment files and memory-mapped databases into
+memory.])
+
+m4_tag(m4_idef(DB_PRIVATE), [dnl
+Allocate region memory from the heap instead of from memory backed by
+the filesystem or system shared memory.
+m4_p([dnl
+This flag implies the environment will only be accessed by a single
+process (although that process may be multithreaded). This flag has two
+effects on the m4_db environment. First, all underlying data structures
+are allocated from per-process memory instead of from shared memory that
+is accessible to more than a single process. Second, mutexes are only
+configured to work between threads.])
+m4_p([dnl
+This flag should not be specified if more than a single process is
+accessing the environment because it is likely to cause database
+corruption and unpredictable behavior. For example, if both a server
+application and m4_db utilities (for example, m4_ref(db_archive),
+m4_ref(db_checkpoint) or m4_ref(db_stat)) are expected to access the
+environment, the m4_ref(DB_PRIVATE) flag should not be specified.])
+m4_p([dnl
+See m4_link(M4RELDIR/ref/env/region, [Shared Memory Regions]) for more
+information.])])
+
+m4_tag(m4_idef(DB_REGISTER), [dnl
+Check to see if recovery needs to be performed before opening the
+database environment. (For this check to be accurate, all processes
+using the environment must specify m4_ref(DB_REGISTER) when opening the
+environment.) If recovery needs to be performed for any reason
+(including the initial use of the m4_ref(DB_REGISTER) flag), and
+m4_ref(DB_RECOVER) is also specified, recovery will be performed and the
+open will proceed normally. If recovery needs to be performed and
+m4_ref(DB_RECOVER) is not specified, m4_ref(DB_RUNRECOVERY) will be
+returned. If recovery does not need to be performed, the
+m4_ref(DB_RECOVER) flag will be ignored. See
+m4_link(M4RELDIR/ref/transapp/app, Architecting Transactional Data Store
+applications) for more information.])
+
+m4_tag(m4_idef(DB_SYSTEM_MEM), [dnl
+Allocate region memory from system shared memory instead of from heap
+memory or memory backed by the filesystem.
+m4_p([dnl
+See m4_link(M4RELDIR/ref/env/region, [Shared Memory Regions]) for more
+information.])])
+
+m4_tag(m4_idef(DB_THREAD), [dnl
+Cause the m4_ref(DbEnv) handle returned by m4_ref(dbenv_open) to be
+m4_italic(free-threaded); that is, concurrently usable by multiple
+threads in the address space. The DB_THREAD flag should be specified
+if the m4_ref(DbEnv) handle will be concurrently used by more than one
+thread in the process, or if any m4_ref(Db) handles opened in the scope
+of the m4_ref(DbEnv) handle will be concurrently used by more than one
+thread in the process.])
+
+m4_tagend])
+
+m4_param_filemode([m4_db])
+m4_paramend
+
+m4_idefz(DB_VERSION_MISMATCH)
+m4_err(dbenv_open,
+DB_RUNRECOVERY,
+[The DB_REGISTER flag was specified, a failure has occurred, and no
+recovery flag was specified.],
+DB_VERSION_MISMATCH,
+[The version of the m4_db library doesn't match the version that created
+the database environment.],
+regionagain, einval,
+[the m4_ref(DB_THREAD) flag was specified and fast mutexes are not
+available for this architecture;
+The DB_HOME or TMPDIR environment variables were set, but empty;
+An incorrectly formatted m4_bold([NAME VALUE]) entry or line was found],
+ENOSPC,
+[HP-UX only:
+Due to the constraints of the PA-RISC memory architecture, HP-UX does not
+allow a process to map a file into its address space multiple times.
+For this reason, each m4_db environment may be opened only once by a
+process on HP-UX; that is, calls to m4_ref(dbenv_open) will fail if the
+specified m4_db environment has been opened and not subsequently closed.],
+filenotfound)
+
+m4_pf_getter(dbenv_get_home,
+database environment home directory, homep,, reference)
+
+m4_pf_getter(dbenv_get_open_flags, open method flags,, flagsp)
+
+m4_seealso(DbEnv)
+m4_page_footer
diff --git a/db/docs_src/env/env_remove.so b/db/docs_src/env/env_remove.so
new file mode 100644
index 000000000..1f70e6807
--- /dev/null
+++ b/db/docs_src/env/env_remove.so
@@ -0,0 +1,95 @@
+m4_comment([$Id: env_remove.so,v 10.45 2006/12/08 16:22:45 bostic Exp $])
+
+define(M4PAGELOCAL, dbenv_remove)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbenv_remove),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__remove(DB_ENV *dbenv, char *db_home, u_int32_t flags);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::remove(const char *db_home, u_int32_t flags);
+]))
+
+m4_p([dnl
+The m4_refT(dbenv_remove) destroys a m4_db environment if it is not
+currently in use. The environment regions, including any backing files,
+are removed. Any log or database files and the environment directory are
+not removed.])
+
+m4_p([dnl
+If there are processes that have called m4_ref(dbenv_open) without
+calling m4_ref(dbenv_close) (that is, there are processes currently
+using the environment), m4_ref(dbenv_remove) will fail without further
+action unless the m4_ref(DB_FORCE) flag is set, in which case
+m4_ref(dbenv_remove) will attempt to remove the environment, regardless
+of any processes still using it.])
+
+m4_p([dnl
+The result of attempting to forcibly destroy the environment when it is
+in use is unspecified. Processes using an environment often maintain open
+file descriptors for shared regions within it. On UNIX systems, the
+environment removal will usually succeed, and processes that have already
+joined the region will continue to run in that region without change.
+However, processes attempting to join the environment will either fail
+or create new regions. On other systems in which the m4_manref(unlink,
+2) system call will fail if any process has an open file descriptor for
+the file (for example Windows/NT), the region removal will fail.])
+
+m4_p([dnl
+Calling m4_ref(dbenv_remove) should not be necessary for most applications
+because the m4_db environment is cleaned up as part of normal database
+recovery procedures. However, applications may want to call
+m4_ref(dbenv_remove) as part of application shut down to free up system
+resources. For example, if the m4_ref(DB_SYSTEM_MEM) flag was specified
+to m4_ref(dbenv_open), it may be useful to call m4_ref(dbenv_remove) in
+order to release system shared memory segments that have been allocated.
+Or, on architectures in which mutexes require allocation of underlying
+system resources, it may be useful to call m4_ref(dbenv_remove) in order
+to release those resources. Alternatively, if recovery is not required
+because no database state is maintained across failures, and no system
+resources need to be released, it is possible to clean up an environment
+by simply removing all the m4_db files in the database environment's
+directories.])
+
+m4_p([dnl
+In multithreaded applications, only a single thread may call
+m4_ref(dbenv_remove).])
+
+m4_p([dnl
+A m4_ref(DbEnv) handle that has already been used to open an environment
+should not be used to call the m4_refT(dbenv_remove); a new
+m4_ref(DbEnv) handle should be created for that purpose.])
+
+m4_p([dnl
+After m4_ref(dbenv_remove) has been called, regardless of its return,
+the m4_db environment handle may not be accessed again.])
+
+m4_return(dbenv_remove, std)
+
+m4_parambegin
+m4_param_utf8(db_home, [dnl
+The m4_arg(db_home) parameter names the database environment to be removed.])
+
+m4_param(flags, [dnl
+m4_sf_or_may
+
+m4_tagbegin
+m4_tag(m4_idef(DB_FORCE), [dnl
+If the m4_ref(DB_FORCE) flag is set, the environment is removed, regardless
+of any processes that may still using it, and no locks are acquired
+during this process. (Generally, the m4_ref(DB_FORCE) flag is
+specified only when applications were unable to shut down cleanly, and there
+is a risk that an application may have died holding a m4_db lock.)])
+
+m4_env_flags
+m4_tagend])
+m4_paramend
+
+m4_err(dbenv_remove,
+EBUSY, [The shared memory region was in use and the force flag was not set.])
+
+m4_seealso(DbEnv)
+m4_page_footer
diff --git a/db/docs_src/env/env_set_alloc.so b/db/docs_src/env/env_set_alloc.so
new file mode 100644
index 000000000..33933c6fa
--- /dev/null
+++ b/db/docs_src/env/env_set_alloc.so
@@ -0,0 +1,123 @@
+m4_comment([$Id: env_set_alloc.so,v 1.22 2004/08/13 03:38:57 bostic Exp $])
+
+ifdef([M4INTERFACE],, [define(M4INTERFACE, dbenv_set_alloc)])
+
+define(M4PAGELOCAL, M4INTERFACE)
+include(m4/m4.seealso)
+
+ifelse(M4INTERFACE, dbenv_set_alloc, [dnl
+m4_pf_header(m4_ref(dbenv_set_alloc),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__set_alloc(DB_ENV *dbenv,
+ void *(*app_malloc)(size_t),
+ void *(*app_realloc)(void *, size_t),
+ void (*app_free)(void *));
+])dnl
+ifelse(M4API, CXX_API, [dnl
+extern "C" {
+ typedef void *(*db_malloc_fcn_type)(size_t);
+ typedef void *(*db_realloc_fcn_type)(void *, size_t);
+ typedef void *(*db_free_fcn_type)(void *);
+};
+m4_blank
+int
+DbEnv::set_alloc(db_malloc_fcn_type app_malloc,
+ db_realloc_fcn_type app_realloc,
+ db_free_fcn_type app_free);
+]))],[dnl
+m4_pf_header(m4_ref(dbh_set_alloc),
+ifelse(M4API, C_API, [dnl
+int
+DB-__GT__set_alloc(DB *db,
+ void *(*app_malloc)(size_t),
+ void *(*app_realloc)(void *, size_t),
+ void (*app_free)(void *));
+])dnl
+ifelse(M4API, CXX_API, [dnl
+extern "C" {
+ typedef void *(*db_malloc_fcn_type)(size_t);
+ typedef void *(*db_realloc_fcn_type)(void *, size_t);
+ typedef void *(*db_free_fcn_type)(void *);
+};
+m4_blank
+int
+Db::set_alloc(db_malloc_fcn_type app_malloc,
+ db_realloc_fcn_type app_realloc,
+ db_free_fcn_type app_free);
+]))])
+
+m4_p([dnl
+Set the allocation functions used by the m4_ref(DbEnv) and m4_ref(Db)
+methods to allocate or free memory owned by the application.])
+
+m4_p([dnl
+There are a number of interfaces in m4_db where memory is allocated by
+the library and then given to the application. For example, the
+m4_ref(DB_DBT_MALLOC) flag, when specified in the m4_ref(Dbt) object,
+will cause the m4_ref(Db) methods to allocate and reallocate memory
+which then becomes the responsibility of the calling application. (See
+m4_ref(Dbt) for more information.) Other examples are the m4_db
+interfaces which return statistical information to the application:
+m4_ref(dbh_stat), m4_ref(lock_stat), m4_ref(log_archive),
+m4_ref(log_stat), m4_ref(memp_stat), and m4_ref(txn_stat). There is one
+method in m4_db where memory is allocated by the application and then
+given to the library: m4_ref(dbh_associate).])
+
+m4_p([dnl
+On systems in which there may be multiple library versions of the
+standard allocation routines (notably Windows NT), transferring memory
+between the library and the application will fail because the m4_db
+library allocates memory from a different heap than the application uses
+to free it. To avoid this problem, the m4_ref(dbenv_set_alloc) and
+m4_refT(dbh_set_alloc)s can be used to pass m4_db references to the
+application's allocation routines.])
+
+m4_p([dnl
+It is not an error to specify only one or two of the possible allocation
+function parameters to these interfaces; however, in that case the
+specified interfaces must be compatible with the standard library
+interfaces, as they will be used together. The functions specified must
+match the calling conventions of the m4_ansic_name library routines of
+the same name.])
+
+ifelse(M4INTERFACE, dbenv_set_alloc, [dnl
+m4_scope_dbenv(dbenv_set_alloc)
+
+m4_when_envopen(dbenv_set_alloc)
+
+m4_return(dbenv_set_alloc, std)
+
+m4_parambegin
+m4_param(app_malloc, [dnl
+The m4_arg(app_malloc) parameter is the application-specified malloc
+function.])
+m4_param(app_realloc, [dnl
+The m4_arg(app_realloc) parameter is the application-specified realloc
+function.])
+m4_param(app_free, [dnl
+The m4_arg(app_free) parameter is the application-specified free function.])
+m4_paramend
+
+m4_err(dbenv_set_alloc,
+einval, [the method was called after m4_ref(dbenv_open) was called])
+
+m4_seealso(DbEnv)
+],[dnl
+m4_p([dnl
+Because databases opened within m4_db environments use the allocation
+interfaces specified to the environment, it is an error to attempt to
+set those interfaces in a database created within an environment.])
+
+m4_when_dbopen(dbh_set_alloc)
+
+m4_return(dbh_set_alloc, std)
+
+m4_err(dbh_set_alloc,
+einval, [Called in a database environment.
+m4_p([Called after m4_ref(dbh_open) was called.])])
+
+m4_seealso(Db)
+])
+
+m4_page_footer
diff --git a/db/docs_src/env/env_set_app_dispatch.so b/db/docs_src/env/env_set_app_dispatch.so
new file mode 100644
index 000000000..c8928071a
--- /dev/null
+++ b/db/docs_src/env/env_set_app_dispatch.so
@@ -0,0 +1,105 @@
+m4_comment([$Id: env_set_app_dispatch.so,v 10.54 2004/08/13 03:38:57 bostic Exp $])
+
+define(M4PAGELOCAL,
+ [dbenv_set_app_dispatch, DB_TXN_BACKWARD_ROLL, DB_TXN_FORWARD_ROLL,
+ DB_TXN_ABORT, DB_TXN_APPLY, DB_TXN_PRINT])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbenv_set_app_dispatch),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__set_app_dispatch(DB_ENV *dbenv,
+ int (*tx_recover)(DB_ENV *dbenv,
+ DBT *log_rec, DB_LSN *lsn, db_recops op));
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::set_app_dispatch(int (*tx_recover)(DbEnv *dbenv,
+ Dbt *log_rec, DbLsn *lsn, db_recops op));
+]))
+
+define(__appDispatch_param, [dnl
+ifelse([$1], internal, [dnl
+The m4_arg(tx_recover) parameter is the application's abort and recovery
+function. The function takes four parameters:
+m4_tagbegin
+m4_tag(m4_arg(dbenv), [dnl
+The m4_arg(dbenv) parameter is the enclosing database environment handle.])
+m4_tag(m4_arg(log_rec), [dnl
+The m4_arg(log_rec) parameter is a log record.])
+m4_tag(m4_arg(lsn), [dnl
+The m4_arg(lsn) parameter is a log sequence number.])
+m4_tag(m4_arg(op), [dnl
+The m4_arg(op) parameter is one of the following values:])],[dnl
+m4_parambegin
+m4_param(dbenv, [dnl
+The m4_arg(dbenv) parameter is the enclosing database environment handle.])
+m4_param(log_rec, [dnl
+The m4_arg(log_rec) parameter is a log record.])
+m4_param(lsn, [dnl
+The m4_arg(lsn) parameter is a log sequence number.])
+m4_param(op, [dnl
+The m4_arg(op) parameter is one of the following values:])])
+
+m4_tagbegin
+m4_tag(m4_idef(DB_TXN_BACKWARD_ROLL), [dnl
+The log is being read backward to determine which transactions have been
+committed and to abort those operations that were not; undo the operation
+described by the log record.])
+
+m4_tag(m4_idef(DB_TXN_FORWARD_ROLL), [dnl
+The log is being played forward; redo the operation described by the log
+record.])
+
+m4_tag(m4_idef(DB_TXN_ABORT), [dnl
+The log is being read backward during a transaction abort; undo the
+operation described by the log record.])
+
+m4_tag(m4_idef(DB_TXN_APPLY), [dnl
+The log is being applied on a replica site; redo the operation
+described by the log record.])
+
+m4_tag(m4_idef(DB_TXN_PRINT), [dnl
+The log is being printed for debugging purposes; print the contents of
+this log record in the desired format.])
+m4_tagend
+
+m4_p([dnl
+The m4_ref(DB_TXN_FORWARD_ROLL) and m4_ref(DB_TXN_APPLY) operations
+frequently imply the same actions, redoing changes that appear in the
+log record, although if a recovery function is to be used on a
+replication client where reads may be taking place concurrently with the
+processing of incoming messages, m4_ref(DB_TXN_APPLY) operations should
+also perform appropriate locking. The macro DB_REDO(op) checks that the
+operation is one of m4_ref(DB_TXN_FORWARD_ROLL) or m4_ref(DB_TXN_APPLY),
+and should be used in the recovery code to refer to the conditions under
+which operations should be redone. Similarly, the macro DB_UNDO(op)
+checks if the operation is one of m4_ref(DB_TXN_BACKWARD_ROLL) or
+m4_ref(DB_TXN_ABORT).])
+ifelse([$1], internal, [m4_tagend], [m4_paramend])])
+
+define(__appDispatch_return, [dnl
+The function must return 0 on success and either m4_envvar(errno) or a
+value outside of the m4_db error name space on failure.])
+
+m4_p([dnl
+Declare a function to be called during transaction abort and recovery
+to process application-specific log records.])
+
+m4_scope_dbenv(dbenv_set_app_dispatch)
+
+m4_when_envopen(dbenv_set_app_dispatch, corrupt)
+
+m4_return(dbenv_set_app_dispatch, std)
+
+m4_parambegin
+m4_param(tx_recover, [dnl
+__appDispatch_param(internal)
+m4_p([__appDispatch_return])])
+m4_paramend
+
+m4_err(dbenv_set_app_dispatch,
+einval, [the method was called after m4_ref(dbenv_open) was called])
+
+m4_seealso(DbTxn)
+m4_page_footer
diff --git a/db/docs_src/env/env_set_cachesize.so b/db/docs_src/env/env_set_cachesize.so
new file mode 100644
index 000000000..b7b84739c
--- /dev/null
+++ b/db/docs_src/env/env_set_cachesize.so
@@ -0,0 +1,131 @@
+m4_comment([$Id: env_set_cachesize.so,v 10.51 2007/07/06 00:22:52 mjc Exp $])
+
+ifdef([M4INTERFACE],, [define(M4INTERFACE, dbenv_set_cachesize)])
+define(M4GETINTERFACE, ifelse(M4INTERFACE,
+ dbenv_set_cachesize, dbenv_get_cachesize, dbh_get_cachesize))
+
+define(M4PAGELOCAL, [M4INTERFACE, M4GETINTERFACE, dbenv_get_cachesize_ncache])
+include(m4/m4.seealso)
+
+ifelse(M4INTERFACE, dbenv_set_cachesize, [dnl
+m4_pf_header(m4_ref(dbenv_set_cachesize),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__set_cachesize(DB_ENV *dbenv,
+ u_int32_t gbytes, u_int32_t bytes, int ncache);
+m4_blank
+int
+DB_ENV-__GT__get_cachesize(DB_ENV *dbenv,
+ u_int32_t *gbytesp, u_int32_t *bytesp, int *ncachep);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::set_cachesize(u_int32_t gbytes, u_int32_t bytes, int ncache);
+m4_blank
+int
+DbEnv::get_cachesize(u_int32_t *gbytesp, u_int32_t *bytesp, int *ncachep);
+]))],[dnl
+m4_pf_header(m4_ref(dbh_set_cachesize),
+ifelse(M4API, C_API, [dnl
+int
+DB-__GT__set_cachesize(DB *db,
+ u_int32_t gbytes, u_int32_t bytes, int ncache);
+m4_blank
+int
+DB-__GT__get_cachesize(DB *db,
+ u_int32_t *gbytesp, u_int32_t *bytesp, int *ncachep);
+])dnl
+ifelse(M4API, CXX_API, [dnl
+int
+Db::set_cachesize(u_int32_t gbytes, u_int32_t bytes, int ncache);
+int
+Db::get_cachesize(u_int32_t *gbytesp, u_int32_t *bytesp, int *ncachep);
+]))])
+
+m4_p([dnl
+Set the size of the shared memory buffer pool -- that is, the cache.
+The cache should be the size of the normal working data set of the
+application, with some small amount of additional memory for unusual
+situations. (Note: the working set is not the same as the number of
+pages accessed simultaneously, and is usually much larger.)])
+
+m4_p([dnl
+The default cache size is 256KB, and may not be specified as less than
+20KB. Any cache size less than 500MB is automatically increased by 25%
+to account for buffer pool overhead; cache sizes larger than 500MB are
+used as specified. The maximum size of a single cache is 4GB on 32-bit
+systems and 10TB on 64-bit systems. (All sizes are in powers-of-two,
+that is, 256KB is 2^18 not 256,000.) For information on tuning the m4_db
+cache size, see m4_link(M4RELDIR/ref/am_conf/cachesize, [Selecting a
+cache size]).])
+
+m4_p([dnl
+It is possible to specify caches to m4_db large enough they cannot be
+allocated contiguously on some architectures. For example, some
+releases of Solaris limit the amount of memory that may be allocated
+contiguously by a process. If m4_arg(ncache) is 0 or 1, the cache will
+be allocated contiguously in memory. If it is greater than 1, the cache
+will be split across m4_arg(ncache) separate regions, where the
+m4_bold(region size) is equal to the initial cache size divided by
+m4_arg(ncache).])
+
+ifelse(M4INTERFACE, dbenv_set_cachesize, [dnl
+m4_p([dnl
+The memory pool may be resized by calling m4_ref(dbenv_set_cachesize)
+after the environment is open. The supplied size will be rounded to
+the nearest multiple of the region size and may not be larger than the
+maximum size configured with m4_ref(dbenv_set_cache_max). The
+m4_arg(ncache) parameter is ignored when resizing the cache.])])
+
+ifelse(M4INTERFACE, dbenv_set_cachesize, [dnl
+m4_env_config(dbenv_set_cachesize, [initial cache size], set_cachesize,
+[the initial cache size specified in three parts: the gigabytes of
+cache, the additional bytes of cache, and the number of caches, also
+separated by whitespace characters. For example, "set_cachesize 2
+524288000 3" would create a 2.5GB logical cache, split between three
+physical caches])
+
+m4_scope_env(dbenv_set_cachesize)
+m4_when_any(dbenv_set_cachesize)
+m4_return(dbenv_set_cachesize, std)
+],[dnl
+m4_p([dnl
+Because databases opened within m4_db environments use the cache
+specified to the environment, it is an error to attempt to set a cache
+in a database created within an environment.])
+
+m4_when_dbopen(dbh_set_cachesize)
+
+m4_return(dbh_set_cachesize, std)])
+
+m4_parambegin
+m4_param(bytes, [dnl
+The size of the cache is set to m4_arg(gbytes) gigabytes plus m4_arg(bytes).])
+m4_param(gbytes, [dnl
+The size of the cache is set to m4_arg(gbytes) gigabytes plus m4_arg(bytes).])
+m4_param(ncache, [dnl
+The m4_arg(ncache) parameter is the number of caches to create.])
+m4_paramend
+
+m4_err(M4INTERFACE, einval,
+[the specified cache size was impossibly small;
+ifelse(M4INTERFACE, dbh_set_cachesize, [the method was called after
+m4_ref(dbh_open) was called])])
+
+m4_pf_description(m4_ref(M4GETINTERFACE))
+m4_p([dnl
+The m4_refT(M4GETINTERFACE) returns the current size and composition of the
+cache.])
+
+m4_when_any(M4GETINTERFACE)
+
+m4_return(M4GETINTERFACE, std)
+
+m4_parambegin
+m4_param_co(bytesp, additional bytes of memory in the cache)
+m4_param_co(gbytesp, gigabytes of memory in the cache)
+m4_param_co(ncachep, number of caches)
+m4_paramend
+
+ifelse(M4INTERFACE, dbenv_set_cachesize, [m4_seealso(DbEnv)], [m4_seealso(Db)])
+m4_page_footer
diff --git a/db/docs_src/env/env_set_data_dir.so b/db/docs_src/env/env_set_data_dir.so
new file mode 100644
index 000000000..30e2abe95
--- /dev/null
+++ b/db/docs_src/env/env_set_data_dir.so
@@ -0,0 +1,59 @@
+m4_comment([$Id: env_set_data_dir.so,v 10.28 2004/09/28 15:04:20 bostic Exp $])
+
+define(M4PAGELOCAL, [dbenv_set_data_dir, dbenv_get_data_dirs])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbenv_set_data_dir),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__set_data_dir(DB_ENV *dbenv, const char *dir);
+m4_blank
+int
+DB_ENV-__GT__get_data_dirs(DB_ENV *dbenv, const char ***dirpp);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::set_data_dir(const char *dir);
+m4_blank
+int
+DbEnv::get_data_dirs(const char ***dirpp);
+]))
+
+m4_p([dnl
+Set the path of a directory to be used as the location of the access
+method database files. Paths specified to the m4_ref(dbh_open) function
+will be searched relative to this path. Paths set using this method
+are additive, and specifying more than one will result in each specified
+directory being searched for database files. If any directories are
+specified, created database files will always be created in the first
+path specified.])
+
+m4_p([dnl
+If no database directories are specified, database files must be named
+either by absolute paths or relative to the environment home directory.
+See m4_link(M4RELDIR/ref/env/naming, [m4_db File Naming]) for more
+information.])
+
+m4_env_config(dbenv_set_data_dir,
+data directories, set_data_dir, the directory name, no)
+
+m4_scope_dbenv(dbenv_set_data_dir)
+
+m4_when_envopen(dbenv_set_data_dir, corrupt)
+
+m4_return(dbenv_set_data_dir, std)
+
+m4_parambegin
+m4_param_utf8(dir, [dnl
+The m4_arg(dir) parameter is a directory to be used as a location for
+database files.])
+m4_paramend
+
+m4_err(dbenv_set_data_dir,
+einval, [the method was called after m4_ref(dbenv_open) was called])
+
+m4_pf_getter(dbenv_get_data_dirs,
+NULL-terminated array of directories,, dirpp, reference)
+
+m4_seealso(DbEnv)
+m4_page_footer
diff --git a/db/docs_src/env/env_set_encrypt.so b/db/docs_src/env/env_set_encrypt.so
new file mode 100644
index 000000000..31f5b1769
--- /dev/null
+++ b/db/docs_src/env/env_set_encrypt.so
@@ -0,0 +1,84 @@
+m4_comment([$Id: env_set_encrypt.so,v 10.23 2004/09/28 15:04:20 bostic Exp $])
+
+ifdef([M4INTERFACE],, [define(M4INTERFACE, dbenv_set_encrypt)])
+define(M4GETINTERFACE, ifelse(M4INTERFACE,
+ dbenv_set_encrypt, dbenv_get_encrypt_flags, dbh_get_encrypt_flags))
+
+define(M4PAGELOCAL, [M4INTERFACE, M4GETINTERFACE])
+include(m4/m4.seealso)
+
+ifelse(M4INTERFACE, dbenv_set_encrypt, [dnl
+m4_pf_header(m4_ref(dbenv_set_encrypt),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__set_encrypt(DB_ENV *dbenv, const char *passwd, u_int32_t flags);
+m4_blank
+int
+DB_ENV-__GT__get_encrypt_flags(DB_ENV *dbenv, u_int32_t *flagsp);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::set_encrypt(const char *passwd, u_int32_t flags);
+m4_blank
+int
+DbEnv::get_encrypt_flags(u_int32_t *flagsp);
+]))],[dnl
+m4_pf_header(m4_ref(dbh_set_encrypt),
+ifelse(M4API, C_API, [dnl
+int
+DB-__GT__set_encrypt(DB *db, const char *passwd, u_int32_t flags);
+m4_blank
+int
+DB-__GT__get_encrypt_flags(DB *db, u_int32_t *flagsp);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+Db::set_encrypt(const char *passwd, u_int32_t flags);
+m4_blank
+int
+Db::get_encrypt_flags(u_int32_t *flagsp);
+]))])
+
+m4_p([dnl
+Set the password used by the m4_db library to perform encryption and
+decryption.])
+
+ifelse(M4INTERFACE, dbenv_set_encrypt, [dnl
+m4_scope_env(dbenv_set_encrypt)
+m4_when_envopen(dbenv_set_encrypt, error)
+m4_return(dbenv_set_encrypt, std)
+],[dnl
+m4_p([dnl
+Because databases opened within m4_db environments use the password
+specified to the environment, it is an error to attempt to set a
+password in a database created within an environment.])
+m4_when_dbopen(dbh_set_encrypt)
+m4_return(dbh_set_encrypt, std)
+])
+
+m4_parambegin
+m4_param(flags, [dnl
+m4_sf_zmust(0)
+
+m4_tagbegin
+m4_tag(m4_idef(DB_ENCRYPT_AES), [dnl
+Use the Rijndael/AES (also known as the Advanced Encryption Standard
+and Federal Information Processing Standard (FIPS) 197) algorithm for
+encryption or decryption.])
+m4_tagend])
+
+m4_param(passwd, [dnl
+The m4_arg(passwd) parameter is the password used to perform encryption
+and decryption.])
+m4_paramend
+
+m4_err(M4INTERFACE, einval,
+[the method was called after
+m4_ref(ifelse(M4INTERFACE, dbenv_set_encrypt, [dbenv_open], [dbh_open]))
+was called],
+EOPNOTSUPP, [Cryptography is not available in this m4_db release.])
+
+m4_pf_getter(M4GETINTERFACE, encryption flags,, flagsp)
+
+ifelse(M4INTERFACE, dbenv_set_encrypt, [m4_seealso(DbEnv)], [m4_seealso(Db)])
+m4_page_footer
diff --git a/db/docs_src/env/env_set_errcall.so b/db/docs_src/env/env_set_errcall.so
new file mode 100644
index 000000000..629008b32
--- /dev/null
+++ b/db/docs_src/env/env_set_errcall.so
@@ -0,0 +1,121 @@
+m4_comment([$Id: env_set_errcall.so,v 10.39 2006/05/17 20:47:46 bostic Exp $])
+
+ifdef([M4INTERFACE],, [define(M4INTERFACE, dbenv_set_errcall)])
+
+define(M4PAGELOCAL, M4INTERFACE)
+include(m4/m4.seealso)
+
+ifelse(M4INTERFACE, dbenv_set_errcall, [dnl
+m4_pf_header(m4_ref(dbenv_set_errcall),
+ifelse(M4API, C_API, [dnl
+void
+DB_ENV-__GT__set_errcall(DB_ENV *dbenv, void (*db_errcall_fcn)
+ (const DB_ENV *dbenv, const char *errpfx, const char *msg));
+])
+ifelse(M4API, CXX_API, [dnl
+void DbEnv::set_errcall(void (*db_errcall_fcn)
+ (const Dbenv *dbenv, const char *errpfx, const char *msg));
+]))],[dnl
+m4_pf_header(m4_ref(dbh_set_errcall),
+ifelse(M4API, C_API, [dnl
+void
+DB-__GT__set_errcall(DB *, void (*db_errcall_fcn)
+ (const DB_ENV *dbenv, const char *errpfx, const char *msg));
+])
+ifelse(M4API, CXX_API, [dnl
+void Db::set_errcall(void (*db_errcall_fcn)
+ (const DbEnv *dbenv, const char *errpfx, const char *msg));
+]))])
+
+define(__error_param, [dnl
+ifelse([$1], internal, [dnl
+The m4_arg(db_errcall_fcn) parameter is the application-specified error
+reporting function. The function takes three parameters:
+m4_tagbegin
+m4_tag(m4_arg(dbenv), [dnl
+The m4_arg(dbenv) parameter is the enclosing database environment.])
+m4_tag(m4_arg(errpfx), [dnl
+The m4_arg(errpfx) parameter is the prefix string (as previously set by
+m4_ref(dbh_set_errpfx) or m4_ref(dbenv_set_errpfx)).])
+m4_tag(m4_arg(msg), [dnl
+The m4_arg(msg) parameter is the error message string.])
+m4_tagend
+],[dnl
+m4_parambegin
+m4_param(dbenv, [dnl
+The m4_arg(dbenv) parameter is the enclosing database environment.])
+m4_param(errpfx, [dnl
+The m4_arg(prefix) parameter is the prefix string (as previously set by
+m4_ref(dbh_set_errpfx) or m4_ref(dbenv_set_errpfx)).])
+m4_param(msg, [dnl
+The m4_arg(msg) parameter is the error message string.])
+m4_paramend])])
+
+ifelse(M4API, C_API, [m4_p([dnl
+When an error occurs in the m4_db library, a m4_db error or an error
+return value is returned by the interface. In some cases, however,
+the m4_envvar(errno) value may be insufficient to completely describe
+the cause of the error, especially during initial application debugging.])
+
+m4_p([dnl
+The m4_ref(dbenv_set_errcall) and m4_refT(dbh_set_errcall)s are used to
+enhance the mechanism for reporting error messages to the application.
+In some cases, when an error occurs, m4_db will call
+m4_arg(db_errcall_fcn) with additional error information. It is up to
+the m4_arg(db_errcall_fcn) function to display the error message in an
+appropriate manner.])
+
+m4_p([dnl
+Setting m4_arg(db_errcall_fcn) to NULL unconfigures the callback interface.])
+
+m4_p([dnl
+Alternatively, you can use the m4_ref(dbh_set_errfile) or
+m4_refT(dbenv_set_errfile)s to display the additional information via
+a C library FILE *.])])
+
+ifelse(M4API, CXX_API, [dnl
+When an error occurs in the m4_db library, an exception is thrown or an
+error return value is returned by the interface. In some cases,
+however, the m4_envvar(errno) value may be insufficient to completely
+describe the cause of the error, especially during initial application
+debugging.
+
+m4_p([dnl
+The m4_ref(dbenv_set_errcall) and m4_refT(dbh_set_errcall)s are used to
+enhance the mechanism for reporting error messages to the application.
+In some cases, when an error occurs, m4_db will call
+m4_arg(db_errcall_fcn) with additional error information. It is up to
+the m4_arg(db_errcall_fcn) function to display the error message in an
+appropriate manner.])
+
+m4_p([dnl
+Setting m4_arg(db_errcall_fcn) to NULL unconfigures the callback interface.])
+
+m4_p([dnl
+Alternatively, you can use the m4_ref(dbenv_set_error_stream) and
+m4_refT(dbh_set_error_stream)s to display the additional information via
+an output stream, or the m4_ref(dbh_set_errfile) or
+m4_refT(dbenv_set_errfile)s to display the additional information via a C
+library FILE *. You should not mix these approaches.])])
+
+m4_p([dnl
+This error-logging enhancement does not slow performance or significantly
+increase application size, and may be run during normal operation as well
+as during application debugging.])
+
+ifelse(M4INTERFACE, dbh_set_errcall, [dnl
+m4_really_dbenv(dbh_set_errcall, dbenv_set_errcall)])
+
+ifelse(M4INTERFACE, dbh_set_errcall,
+[m4_scope_dbh(M4INTERFACE)], [m4_scope_dbenv(M4INTERFACE)])
+
+m4_when_any(M4INTERFACE)
+
+m4_parambegin
+m4_param(db_errcall_fcn, [dnl
+__error_param(internal)
+m4_not_reentrant])
+m4_paramend
+
+ifelse(M4INTERFACE, dbenv_set_errcall, [m4_seealso(DbEnv)], [m4_seealso(Db)])
+m4_page_footer
diff --git a/db/docs_src/env/env_set_errfile.so b/db/docs_src/env/env_set_errfile.so
new file mode 100644
index 000000000..ba368c24d
--- /dev/null
+++ b/db/docs_src/env/env_set_errfile.so
@@ -0,0 +1,116 @@
+m4_comment([$Id: env_set_errfile.so,v 10.37 2006/10/26 15:33:59 bostic Exp $])
+
+ifdef([M4INTERFACE],, [define(M4INTERFACE, dbenv_set_errfile)])
+define(M4GETINTERFACE, ifelse(M4INTERFACE,
+ dbenv_set_errfile, dbenv_get_errfile, dbh_get_errfile))
+
+define(M4PAGELOCAL, [M4INTERFACE, M4GETINTERFACE])
+include(m4/m4.seealso)
+
+ifelse(M4INTERFACE, dbenv_set_errfile, [dnl
+m4_pf_header(m4_ref(dbenv_set_errfile),
+ifelse(M4API, C_API, [dnl
+void
+DB_ENV-__GT__set_errfile(DB_ENV *dbenv, FILE *errfile);
+m4_blank
+void
+DB_ENV-__GT__get_errfile(DB_ENV *dbenv, FILE **errfilep);
+])dnl
+ifelse(M4API, CXX_API, [dnl
+void
+DbEnv::set_errfile(FILE *errfile);
+m4_blank
+void
+DbEnv::get_errfile(FILE **errfilep);
+]))],[dnl
+m4_pf_header(m4_ref(dbh_set_errfile),
+ifelse(M4API, C_API, [dnl
+void
+DB-__GT__set_errfile(DB *db, FILE *errfile);
+m4_blank
+void
+DB-__GT__get_errfile(DB *db, FILE **errfilep);
+])dnl
+ifelse(M4API, CXX_API, [dnl
+void Db::set_errfile(FILE *errfile);
+m4_blank
+void Db::get_errfile(FILE **errfilep);
+]))])
+
+ifelse(M4API, C_API, [dnl
+When an error occurs in the m4_db library, a m4_db error or an error
+return value is returned by the interface. In some cases, however, the
+return value may be insufficient to completely describe the cause of the
+error especially during initial application debugging.
+
+m4_p([dnl
+The m4_ref(dbenv_set_errfile) and m4_refT(dbh_set_errfile)s are used to
+enhance the mechanism for reporting error messages to the application
+by setting a C library FILE * to be used for displaying additional m4_db
+error messages. In some cases, when an error occurs, m4_db will output
+an additional error message to the specified file reference.])])
+
+ifelse(M4API, CXX_API, [dnl
+When an error occurs in the m4_db library, an exception is thrown or an
+error return value is returned by the interface. In some cases,
+however, the exception or returned value may be insufficient to
+completely describe the cause of the error, especially during initial
+application debugging.
+
+m4_p([dnl
+The m4_ref(dbenv_set_errcall) and m4_refT(dbh_set_errcall)s are used to
+enhance the mechanism for reporting error messages to the application
+by setting a C library FILE * to be used for displaying additional m4_db
+error messages. In some cases, when an error occurs, m4_db will output
+an additional error message to the specified file reference.])
+
+m4_p([dnl
+Alternatively, you can use the m4_refT(dbenv_set_error_stream) to display
+the additional information via an output stream, or the
+m4_refT(dbenv_set_errcall) to capture the additional error information in
+a way that does not use either output streams or C library FILE *'s. You
+should not mix these approaches.])])
+
+m4_p([dnl
+The error message will consist of the prefix string and a colon
+("m4_bold(:)") (if a prefix string was previously specified using
+m4_ref(dbh_set_errpfx) or m4_ref(dbenv_set_errpfx)), an error string, and
+a trailing m4_htmlquote(newline) character.])
+
+m4_p([dnl
+The default configuration when applications first create m4_ref(Db) or
+m4_ref(DbEnv) handles is as if the m4_ref(dbenv_set_errfile) or
+m4_refT(dbh_set_errfile)s were called with the standard error output
+(stderr) specified as the FILE * argument. Applications wanting no
+output at all can turn off this default configuration by calling the
+m4_ref(dbenv_set_errfile) or m4_refT(dbh_set_errfile)s with NULL as the
+FILE * argument. Additionally, explicitly configuring the error output
+channel using any of the m4_ref(dbenv_set_errfile),
+m4_ref(dbh_set_errfile), m4_ref(dbenv_set_errcall),
+m4_ref(dbh_set_errcall), m4_ref(dbenv_set_error_stream) or
+m4_refT(dbh_set_error_stream)s will also turn off this default output
+for the application.])
+
+m4_p([dnl
+This error logging enhancement does not slow performance or significantly
+increase application size, and may be run during normal operation as well
+as during application debugging.])
+
+ifelse(M4INTERFACE, dbh_set_errfile, [dnl
+m4_really_dbenv(dbh_set_errfile, dbenv_set_errfile)])
+
+ifelse(M4INTERFACE, dbh_set_errfile,
+[m4_scope_dbh(M4INTERFACE)], [m4_scope_dbenv(M4INTERFACE)])
+
+m4_when_any(M4INTERFACE)
+
+m4_parambegin
+m4_param(errfile, [dnl
+The m4_arg(errfile) parameter is a C library FILE * to be used for
+displaying additional m4_db error information.])
+m4_paramend
+
+m4_pf_getter(M4GETINTERFACE, FILE *,, errfilep)
+
+ifelse(M4INTERFACE, dbenv_set_errfile, [m4_seealso(DbEnv)], [m4_seealso(Db)])
+m4_page_footer
diff --git a/db/docs_src/env/env_set_error_stream.so b/db/docs_src/env/env_set_error_stream.so
new file mode 100644
index 000000000..81fe7038f
--- /dev/null
+++ b/db/docs_src/env/env_set_error_stream.so
@@ -0,0 +1,70 @@
+m4_comment([$Id: env_set_error_stream.so,v 10.30 2006/02/10 22:54:59 bostic Exp $])
+
+ifdef([M4INTERFACE],, [define(M4INTERFACE, dbenv_set_error_stream)])
+
+define(M4PAGELOCAL, M4INTERFACE)
+include(m4/m4.seealso)
+
+ifelse(M4INTERFACE, dbenv_set_error_stream, [dnl
+m4_pf_header(m4_ref(dbenv_set_error_stream),
+ifelse(M4API, CXX_API, [dnl
+void DbEnv::set_error_stream(class ostream*);
+]))],[dnl
+m4_pf_header(m4_ref(dbh_set_error_stream),
+ifelse(M4API, CXX_API, [dnl
+void Db::set_error_stream(class ostream*);
+]))])
+
+m4_p([dnl
+When an error occurs in the m4_db library, an exception is thrown or an
+m4_envvar(errno) value is returned by the interface. In some cases,
+however, the m4_envvar(errno) value may be insufficient to completely
+describe the cause of the error, especially during initial application
+debugging.])
+
+m4_p([dnl
+The m4_ref(dbenv_set_error_stream) and m4_refT(dbh_set_error_stream)s
+are used to enhance the mechanism for reporting error messages to the
+application by setting the C++ ostream used for displaying additional
+m4_db error messages. In some cases, when an error occurs, m4_db will
+output an additional error message to the specified stream.])
+
+m4_p([dnl
+The error message will consist of the prefix string and a colon
+("m4_bold(:)") (if a prefix string was previously specified using
+m4_ref(dbenv_set_errpfx)), an error string, and a trailing
+m4_htmlquote(newline) character.])
+
+m4_p([dnl
+Setting m4_arg(stream) to NULL unconfigures the interface.])
+
+m4_p([dnl
+Alternatively, you can use the m4_ref(dbenv_set_errfile) and
+m4_refT(dbh_set_errfile)s to display the additional information via a C
+library FILE *, or the m4_ref(dbenv_set_errcall) and
+m4_refT(dbh_set_errcall)s to capture the additional error information
+in a way that does not use either output streams or C library FILE *'s.
+You should not mix these approaches.])
+
+m4_p([dnl
+This error-logging enhancement does not slow performance or significantly
+increase application size, and may be run during normal operation as well
+as during application debugging.])
+
+ifelse(M4INTERFACE, dbh_set_error_stream, [dnl
+m4_really_dbenv(dbh_set_error_stream, dbenv_set_error_stream)])
+
+ifelse(M4INTERFACE, dbh_set_error_stream,
+[m4_scope_dbh(M4INTERFACE)], [m4_scope_dbenv(M4INTERFACE)])
+
+m4_when_any(M4INTERFACE)
+
+m4_parambegin
+m4_param(stream, [dnl
+The m4_arg(stream) parameter is the application-specified output stream to
+be used for additional error information.])
+m4_paramend
+
+ifelse(M4INTERFACE,
+dbenv_set_error_stream, [m4_seealso(DbEnv)], [m4_seealso(Db)])
+m4_page_footer
diff --git a/db/docs_src/env/env_set_errpfx.so b/db/docs_src/env/env_set_errpfx.so
new file mode 100644
index 000000000..7558171f5
--- /dev/null
+++ b/db/docs_src/env/env_set_errpfx.so
@@ -0,0 +1,67 @@
+m4_comment([$Id: env_set_errpfx.so,v 10.34 2006/02/10 22:54:59 bostic Exp $])
+
+ifdef([M4INTERFACE],, [define(M4INTERFACE, dbenv_set_errpfx)])
+define(M4GETINTERFACE, ifelse(M4INTERFACE,
+ dbenv_set_errpfx, dbenv_get_errpfx, dbh_get_errpfx))
+
+define(M4PAGELOCAL, [M4INTERFACE, M4GETINTERFACE])
+include(m4/m4.seealso)
+
+ifelse(M4INTERFACE, dbenv_set_errpfx, [dnl
+m4_pf_header(m4_ref(dbenv_set_errpfx),
+ifelse(M4API, C_API, [dnl
+void
+DB_ENV-__GT__set_errpfx(DB_ENV *dbenv, const char *errpfx);
+m4_blank
+void
+DB_ENV-__GT__get_errpfx(DB_ENV *dbenv, const char **errpfxp);
+])
+ifelse(M4API, CXX_API, [dnl
+void
+DbEnv::set_errpfx(const char *errpfx);
+m4_blank
+void
+DbEnv::get_errpfx(const char **errpfxp);
+]))],[dnl
+m4_pf_header(m4_ref(dbh_set_errpfx),
+ifelse(M4API, C_API, [dnl
+void
+DB-__GT__set_errpfx(DB *db, const char *errpfx);
+m4_blank
+void DB-__GT__get_errpfx(DB *db, const char **errpfxp);
+])
+ifelse(M4API, CXX_API, [dnl
+void Db::set_errpfx(const char *errpfx);
+m4_blank
+void Db::get_errpfx(const char **errpfxp);
+]))])
+
+m4_p([dnl
+Set the prefix string that appears before error messages issued by m4_db.])
+
+m4_p([dnl
+The m4_ref(dbh_set_errpfx) and m4_refT(dbenv_set_errpfx)s do not copy
+the memory to which the m4_arg(errpfx) parameter refers; rather, they
+maintain a reference to it. Although this allows applications to modify
+the error message prefix at any time (without repeatedly calling the
+interfaces), it means the memory must be maintained until the handle is
+closed.])
+
+ifelse(M4INTERFACE, dbh_set_errpfx, [dnl
+m4_really_dbenv(dbh_set_errpfx, dbenv_set_errpfx)])
+
+ifelse(M4INTERFACE, dbh_set_errpfx,
+[m4_scope_dbh(M4INTERFACE)], [m4_scope_dbenv(M4INTERFACE)])
+
+m4_when_any(M4INTERFACE)
+
+m4_parambegin
+m4_param(errpfx, [dnl
+The m4_arg(errpfx) parameter is the application-specified error prefix
+for additional error messages.])
+m4_paramend
+
+m4_pf_getter(M4GETINTERFACE, error prefix,, errpfxp, reference)
+
+ifelse(M4INTERFACE, dbenv_set_errpfx, [m4_seealso(DbEnv)], [m4_seealso(Db)])
+m4_page_footer
diff --git a/db/docs_src/env/env_set_feedback.so b/db/docs_src/env/env_set_feedback.so
new file mode 100644
index 000000000..1899fb0e8
--- /dev/null
+++ b/db/docs_src/env/env_set_feedback.so
@@ -0,0 +1,87 @@
+m4_comment([$Id: env_set_feedback.so,v 10.43 2006/05/17 20:47:46 bostic Exp $])
+
+ifdef([M4INTERFACE],, [define(M4INTERFACE, dbenv_set_feedback)])
+
+define(M4PAGELOCAL, M4INTERFACE)
+include(m4/m4.seealso)
+
+ifelse(M4INTERFACE, dbenv_set_feedback, [dnl
+m4_pf_header(m4_ref(dbenv_set_feedback),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__set_feedback(DB_ENV *dbenv,
+ void (*db_feedback_fcn)(DB_ENV *dbenv, int opcode, int percent));
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::set_feedback(
+ void (*db_feedback_fcn)(DbEnv *dbenv, int opcode, int percent));
+]))],[dnl
+m4_pf_header(m4_ref(dbh_set_feedback),
+ifelse(M4API, C_API, [dnl
+int
+DB-__GT__set_feedback(DB *,
+ void (*db_feedback_fcn)(DB *dbp, int opcode, int percent));
+])
+ifelse(M4API, CXX_API, [dnl
+int
+Db::set_feedback(
+ void (*db_feedback_fcn)(DB *dbp, int opcode, int percent));
+]))])
+
+m4_p([dnl
+Some operations performed by the m4_db library can take non-trivial
+amounts of time. The m4_refT(M4INTERFACE) can be used by applications
+to monitor progress within these operations. When an operation is
+likely to take a long time, m4_db will call the specified callback
+function with progress information.])
+m4_p([dnl
+It is up to the callback function to display this information in an
+appropriate manner.])
+
+ifelse(M4INTERFACE,
+dbenv_set_feedback, m4_scope_dbenv(M4INTERFACE), m4_scope_dbh(M4INTERFACE))
+
+m4_when_any(M4INTERFACE)
+
+m4_return(M4INTERFACE, std)
+
+m4_parambegin
+m4_param(db_feedback_fcn, [dnl
+The m4_arg(db_feedback_fcn) parameter is the application-specified
+feedback function called to report m4_db operation progress. The
+callback function must take three parameters:
+
+m4_tagbegin
+ifelse(M4INTERFACE, dbenv_set_feedback, [dnl
+m4_tag(m4_arg(dbenv), [dnl
+The m4_arg(dbenv) parameter is a reference to the enclosing database
+environment.])],[dnl
+m4_tag(m4_arg(db), [dnl
+The m4_arg(db) parameter is a reference to the enclosing database.])])
+
+m4_tag(m4_arg(opcode), [dnl
+The m4_arg(opcode) parameter is an operation code. The m4_arg(opcode)
+parameter may take on any of the following values:
+
+m4_tagbegin
+ifelse(M4INTERFACE, dbenv_set_feedback, [dnl
+m4_tag(m4_idef(DB_RECOVER), [The environment is being recovered.])
+],[dnl
+m4_tag(m4_idef(DB_UPGRADE),
+[The underlying database is being upgraded.])
+m4_tag(m4_idef(DB_VERIFY),
+[The underlying database is being verified.])])
+m4_tagend])
+
+m4_tag(m4_arg(percent), [dnl
+The m4_arg(percent) parameter is the percent of the operation that has
+been completed, specified as an integer value between 0 and 100.])
+m4_tagend])
+
+m4_not_reentrant
+
+m4_paramend
+
+ifelse(M4INTERFACE, dbenv_set_feedback, [m4_seealso(DbEnv)], [m4_seealso(Db)])
+m4_page_footer
diff --git a/db/docs_src/env/env_set_flags.so b/db/docs_src/env/env_set_flags.so
new file mode 100644
index 000000000..eb9681845
--- /dev/null
+++ b/db/docs_src/env/env_set_flags.so
@@ -0,0 +1,304 @@
+m4_comment([$Id])
+
+define(M4PAGELOCAL,
+ [dbenv_set_flags, dbenv_get_flags, DB_CDB_ALLDB, DB_DIRECT_DB,
+ DB_DIRECT_LOG, DB_DSYNC_DB, DB_DSYNC_LOG, DB_LOG_AUTOREMOVE,
+ DB_LOG_BUFFER_FULL, DB_LOG_INMEMORY, DB_MULTIVERSION, DB_NOLOCKING,
+ DB_NOMMAP, DB_NOPANIC, DB_OVERWRITE, DB_PANIC_ENVIRONMENT,
+ DB_REGION_INIT, DB_TIME_NOTGRANTED DB_TXN_NOSYNC DB_TXN_NOWAIT,
+ DB_TXN_SNAPSHOT, DB_TXN_WRITE_NOSYNC, DB_YIELDCPU])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbenv_set_flags),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__set_flags(DB_ENV *dbenv, u_int32_t flags, int onoff);
+m4_blank
+int
+DB_ENV-__GT__get_flags(DB_ENV *dbenv, u_int32_t *flagsp);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::set_flags(u_int32_t flags, int onoff);
+m4_blank
+int
+DbEnv::get_flags(u_int32_t *flagsp)
+]))
+
+define(m4_scope_dbenv_flags, [m4_p([dnl
+Calling m4_ref(dbenv_set_flags) with the m4_ref($1) flag only affects
+the specified m4_ref(DbEnv) handle (and any other m4_db handles opened
+within the scope of that handle).
+ifelse($2, config, [dnl
+For consistent behavior across the environment, all m4_ref(DbEnv)
+handles opened in the environment must either set the m4_ref($1) flag
+or the flag should be specified in the m4_path(DB_CONFIG) configuration
+file.])])])
+define(m4_scope_env_flags, [m4_p([dnl
+Calling m4_ref(dbenv_set_flags) with the m4_ref($1) flag affects the
+database environment, including all threads of control accessing the
+database environment.])])
+define(m4_env_flags_any, [m4_p([dnl
+The m4_ref($1) flag may be used to configure m4_db at any time during
+the life of the application.])])
+define(m4_env_flags_open, [m4_p([dnl
+The m4_ref($1) flag may be used to configure m4_db only $2 the
+m4_refT(dbenv_open) is called.])])
+
+m4_p([dnl
+Configure a database environment.])
+
+m4_env_config(dbenv_set_flags, flag values, set_flags, [dnl
+the method flag parameter as a string; for example, "set_flags
+DB_TXN_NOSYNC"])
+
+m4_return(dbenv_set_flags, std)
+
+m4_parambegin
+m4_param(flags, [dnl
+m4_sf_or_must
+
+m4_tagbegin
+
+m4_tag(m4_idef(DB_AUTO_COMMIT), [dnl
+If set, m4_ref(Db) handle operations for which no explicit transaction
+handle was specified, and which modify databases in the database
+environment, will be automatically enclosed within a transaction.
+m4_scope_dbenv_flags(DB_AUTO_COMMIT, config)
+m4_env_flags_any(DB_AUTO_COMMIT)])
+
+m4_idefz([configure @locking for m4_cam])
+m4_tag(m4_idef(DB_CDB_ALLDB), [dnl
+If set, m4_cam applications will perform locking on an environment-wide
+basis rather than on a per-database basis.
+m4_scope_dbenv_flags(DB_CDB_ALLDB, config)
+m4_env_flags_open(DB_CDB_ALLDB, before)])
+
+m4_idefz([turn off system @buffering for database files])
+m4_tag(m4_idef(DB_DIRECT_DB), [dnl
+Turn off system buffering of m4_db database files to avoid double caching.
+m4_scope_dbenv_flags(DB_DIRECT_DB, config)
+m4_env_flags_any(DB_DIRECT_DB)])
+
+m4_idefz([turn off system @buffering for log files])
+m4_tag(m4_idef(DB_DIRECT_LOG), [dnl
+Turn off system buffering of m4_db log files to avoid double caching.
+m4_scope_dbenv_flags(DB_DIRECT_LOG, config)
+m4_env_flags_any(DB_DIRECT_LOG)])
+
+m4_idefz([turn off system @buffering for database files])
+m4_tag(m4_idef(DB_DSYNC_DB), [dnl
+Configure m4_db to flush database writes to the backing disk before
+returning from the write system call, rather than flushing database
+writes explicitly in a separate system call, as necessary. This is only
+available on some systems (for example, systems supporting the
+m4_posix1_name standard O_DSYNC flag, or systems supporting the Windows
+FILE_FLAG_WRITE_THROUGH flag). This flag may result in inaccurate file
+modification times and other file-level information for m4_db database
+files. This flag will almost certainly result in a performance decrease
+on most systems. This flag is only applicable to certain filesysystem
+(for example, the Veritas VxFS filesystem), where the filesystem's
+support for trickling writes back to stable storage behaves badly (or
+more likely, has been misconfigured).
+m4_scope_dbenv_flags(DB_DSYNC_DB, config)
+m4_env_flags_any(DB_DSYNC_DB)])
+
+m4_idefz([turn off system @buffering for log files])
+m4_tag(m4_idef(DB_DSYNC_LOG), [dnl
+Configure m4_db to flush log writes to the backing disk before returning
+from the write system call, rather than flushing log writes explicitly
+in a separate system call, as necessary. This is only available on some
+systems (for example, systems supporting the m4_posix1_name standard
+O_DSYNC flag, or systems supporting the Windows FILE_FLAG_WRITE_THROUGH
+flag). This flag may result in inaccurate file modification times and
+other file-level information for m4_db log files. This flag may offer
+a performance increase on some systems and a performance decrease on
+others.
+m4_scope_dbenv_flags(DB_DSYNC_LOG, config)
+m4_env_flags_any(DB_DSYNC_LOG)])
+
+m4_idefz([automatic @log file removal])
+m4_tag(m4_idef(DB_LOG_AUTOREMOVE), [dnl
+If set, m4_db will automatically remove log files that are no longer
+needed.
+m4_p([dnl
+Automatic log file removal is likely to make catastrophic recovery
+impossible.])
+m4_p([dnl
+Replication applications will rarely want to configure automatic log
+file removal as it increases the likelihood a master will be unable to
+satisfy a client's request for a recent log record.])
+m4_scope_env_flags(DB_LOG_AUTOREMOVE)
+m4_env_flags_any(DB_LOG_AUTOREMOVE)])
+
+m4_idefz([in memory @logs])
+m4_tag(m4_idef(DB_LOG_INMEMORY), [dnl
+If set, maintain transaction logs in memory rather than on disk. This
+means that transactions exhibit the ACI (atomicity, consistency, and
+isolation) properties, but not D (durability); that is, database
+integrity will be maintained, but if the application or system fails,
+integrity will not persist. All database files must be verified and/or
+restored from a replication group master or archival backup after
+application or system failure.
+m4_p([dnl
+When in-memory logs are configured and no more log buffer space is
+available, m4_db methods may return an additional error value,
+m4_idef(DB_LOG_BUFFER_FULL). When choosing log buffer and file sizes
+for in-memory logs, applications should ensure the in-memory log buffer
+size is large enough that no transaction will ever span the entire
+buffer, and avoid a state where the in-memory buffer is full and no
+space can be freed because a transaction that started in the first log
+"file" is still active.])
+m4_scope_env_flags(DB_LOG_INMEMORY, config)
+m4_env_flags_open(DB_LOG_INMEMORY, before)])
+
+m4_tag(m4_idef(DB_MULTIVERSION), [dnl
+If set, all databases in the environment will be opened as if
+m4_ref(DB_MULTIVERSION) is passed to m4_ref(dbh_open). This flag will
+be ignored for queue databases for which m4_ref(DB_MULTIVERSION) is not
+supported.
+m4_scope_dbenv_flags(DB_MULTIVERSION, config)
+m4_env_flags_any(DB_MULTIVERSION)])
+
+m4_idefz([ignore @locking])
+m4_tag(m4_idef(DB_NOLOCKING), [dnl
+If set, m4_db will grant all requested mutual exclusion mutexes and
+database locks without regard for their actual availability. This
+functionality should never be used for purposes other than debugging.
+m4_scope_dbenv_flags(DB_NOLOCKING)
+m4_env_flags_any(DB_NOLOCKING)])
+
+m4_idefz([turn off database file @memory mapping])
+m4_tag(m4_idef(DB_NOMMAP), [dnl
+If set, m4_db will copy read-only database files into the local cache
+instead of potentially mapping them into process memory (see the
+description of the m4_refT(dbenv_set_mp_mmapsize) for further
+information).
+m4_scope_dbenv_flags(DB_NOMMAP, config)
+m4_env_flags_any(DB_NOMMAP)])
+
+m4_idefz([ignore database environment @panic])
+m4_tag(m4_idef(DB_NOPANIC), [dnl
+If set, m4_db will ignore any panic state in the database environment.
+(Database environments in a panic state normally refuse all attempts to
+call m4_db functions, returning m4_ref(DB_RUNRECOVERY).) This
+functionality should never be used for purposes other than debugging.
+m4_scope_dbenv_flags(DB_NOPANIC)
+m4_env_flags_any(DB_NOPANIC)])
+
+m4_tag(m4_idef(DB_OVERWRITE), [dnl
+Overwrite files stored in encrypted formats before deleting them. m4_db
+overwrites files using alternating 0xff, 0x00 and 0xff byte patterns.
+For file overwriting to be effective, the underlying file must be stored
+on a fixed-block filesystem. Systems with journaling or logging filesystems
+will require operating system support and probably modification of the
+m4_db sources.
+m4_scope_dbenv_flags(DB_OVERWRITE)
+m4_env_flags_any(DB_OVERWRITE)])
+
+m4_idefz([turn off access to a database @environment])
+m4_tag(m4_idef(DB_PANIC_ENVIRONMENT), [dnl
+If set, m4_db will set the panic state for the database environment.
+(Database environments in a panic state normally refuse all attempts to
+call m4_db functions, returning m4_ref(DB_RUNRECOVERY).) This flag may
+not be specified using the environment's m4_path(DB_CONFIG) file.
+m4_scope_env_flags(DB_PANIC_ENVIRONMENT)
+m4_env_flags_open(DB_PANIC_ENVIRONMENT, after)])
+
+m4_idefz([fault database @environment in during open])
+m4_tag(m4_idef(DB_REGION_INIT), [dnl
+In some applications, the expense of page-faulting the underlying shared
+memory regions can affect performance. (For example, if the page-fault
+occurs while holding a lock, other lock requests can convoy, and overall
+throughput may decrease.) If set, m4_db will page-fault shared regions
+into memory when initially creating or joining a m4_db environment. In
+addition, m4_db will write the shared regions when creating an
+environment, forcing the underlying virtual memory and filesystems to
+instantiate both the necessary memory and the necessary disk space.
+This can also avoid out-of-disk space failures later on.
+m4_scope_dbenv_flags(DB_REGION_INIT, config)
+m4_env_flags_any(DB_REGION_INIT)])
+
+m4_tag(m4_idef(DB_TIME_NOTGRANTED), [dnl
+If set, database calls timing out based on lock or transaction timeout
+values will
+ifelse(M4EXCEPT, return_only, [dnl
+return m4_ref(DB_LOCK_NOTGRANTED) instead of m4_ref(DB_LOCK_DEADLOCK).],[dnl
+throw a m4_ref(DbLockNotGrantedException) exception instead of
+m4_ref(DbDeadlockException).])
+This allows applications to distinguish between operations which have
+deadlocked and operations which have exceeded their time limits.
+m4_scope_dbenv_flags(DB_TIME_NOTGRANTED, config)
+m4_env_flags_any(DB_TIME_NOTGRANTED)])
+
+m4_idefz([turn off synchronous @transaction commit])
+m4_tag(m4_idef(DB_TXN_NOSYNC), [dnl
+If set, m4_db will not write or synchronously flush the log on transaction
+commit.
+This means that transactions exhibit the ACI (atomicity, consistency,
+and isolation) properties, but not D (durability); that is, database
+integrity will be maintained, but if the application or system fails,
+it is possible some number of the most recently committed transactions
+may be undone during recovery. The number of transactions at risk is
+governed by how many log updates can fit into the log buffer, how often
+the operating system flushes dirty buffers to disk, and how often the
+log is checkpointed.
+m4_scope_dbenv_flags(DB_TXN_NOSYNC,
+config) m4_env_flags_any(DB_TXN_NOSYNC)])
+
+m4_tag(m4_idef(DB_TXN_NOWAIT), [dnl
+If set and a lock is unavailable for any m4_db operation performed in
+the context of a transaction, cause the operation to
+ifelse(M4EXCEPT, return_only, [dnl
+return m4_ref(DB_LOCK_DEADLOCK) (or m4_ref(DB_LOCK_NOTGRANTED) if
+configured using the m4_ref(DB_TIME_NOTGRANTED) flag).],[dnl
+either return m4_ref(DB_LOCK_DEADLOCK) or throw a
+m4_ref(DbDeadlockException) exception (or return
+m4_ref(DB_LOCK_NOTGRANTED) or throw a m4_ref(DbLockNotGrantedException)
+exception if configured using the m4_ref(DB_TIME_NOTGRANTED) flag).])
+m4_scope_dbenv_flags(DB_TXN_NOWAIT, config)
+m4_env_flags_any(DB_TXN_NOWAIT)])
+
+m4_tag(m4_idef(DB_TXN_SNAPSHOT), [dnl
+If set, all transactions in the environment will be started as if
+m4_ref(DB_TXN_SNAPSHOT) were passed to m4_ref(txn_begin), and all
+non-transactional cursors will be opened as if m4_ref(DB_TXN_SNAPSHOT)
+were passed to m4_ref(dbh_cursor).
+m4_scope_dbenv_flags(DB_TXN_SNAPSHOT, config)
+m4_env_flags_any(DB_TXN_SNAPSHOT)])
+
+m4_idefz([turn off synchronous @transaction commit])
+m4_tag(m4_idef(DB_TXN_WRITE_NOSYNC), [dnl
+If set, m4_db will write, but will not synchronously flush, the log on
+transaction commit.
+This means that transactions exhibit the ACI (atomicity, consistency,
+and isolation) properties, but not D (durability); that is, database
+integrity will be maintained, but if the system fails, it is possible
+some number of the most recently committed transactions may be undone
+during recovery. The number of transactions at risk is governed by how
+often the system flushes dirty buffers to disk and how often the log is
+checkpointed.
+m4_scope_dbenv_flags(DB_TXN_WRITE_NOSYNC, config)
+m4_env_flags_any(DB_TXN_WRITE_NOSYNC)])
+
+m4_idefz([configure for @stress testing])
+m4_tag(m4_idef(DB_YIELDCPU), [dnl
+If set, m4_db will yield the processor immediately after each page or
+mutex acquisition. This functionality should never be used for purposes
+other than stress testing.
+m4_scope_dbenv_flags(DB_YIELDCPU, config)
+m4_env_flags_any(DB_YIELDCPU)])
+
+m4_tagend])
+
+m4_param(onoff, [dnl
+If the m4_arg(onoff) parameter is zero, the specified flags are cleared;
+otherwise they are set.])
+m4_paramend
+
+m4_err(dbenv_set_flags, einval)
+
+m4_pf_getter(dbenv_get_flags, configuration flags,, flagsp)
+
+m4_seealso(DbEnv)
+m4_page_footer
diff --git a/db/docs_src/env/env_set_isalive.so b/db/docs_src/env/env_set_isalive.so
new file mode 100644
index 000000000..6fa62f3e2
--- /dev/null
+++ b/db/docs_src/env/env_set_isalive.so
@@ -0,0 +1,62 @@
+m4_comment([$Id: env_set_isalive.so,v 10.4 2006/01/27 16:13:48 bostic Exp $])
+
+define(M4PAGELOCAL, [dbenv_set_isalive])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbenv_set_isalive),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__set_isalive(DB_ENV *dbenv,
+ int (*is_alive)(DB_ENV *dbenv, pid_t pid, db_threadid_t tid, u_int32_t flags));
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::set_isalive(
+ int (*is_alive)(DbEnv *dbenv, pid_t pid, db_threadid_t tid, u_int32_t flags));
+]))
+
+m4_p([dnl
+Declare a function that returns if a thread of control (either a true
+thread or a process) is still running. The m4_refT(dbenv_set_isalive)
+supports the m4_refT(dbenv_failchk). For more information, see
+m4_link(M4RELDIR/ref/cam/app, Architecting Data Store and Concurrent
+Data Store applications), and m4_link(M4RELDIR/ref/transapp/app,
+Architecting Transactional Data Store applications).])
+
+m4_scope_dbenv(dbenv_set_isalive)
+
+m4_when_any(dbenv_set_isalive)
+
+m4_return(dbenv_set_isalive, std)
+
+m4_parambegin
+
+m4_param(is_alive, [dnl
+The m4_arg(is_alive) parameter is a function which returns non-zero if
+the thread of control, identified by the m4_arg(pid) and m4_arg(tid)
+arguments, is still running. The function takes four arguments:])
+m4_tagbegin
+m4_tag(m4_arg(dbenv), [dnl
+The m4_arg(dbenv) parameter is the enclosing database environment
+handle, allowing application access to the application-private fields
+of that object.])
+m4_tag(m4_arg(pid), [dnl
+The m4_arg(pid) parameter is a process ID returned by the function
+specified to the m4_refT(dbenv_set_thread_id).])
+m4_tag(m4_arg(tid), [dnl
+The m4_arg(tid) parameter is a thread ID returned by the function
+specified to the m4_refT(dbenv_set_thread_id).])
+m4_tag(m4_arg(flags), [dnl
+m4_sf_zmust(0)
+m4_tagbegin
+m4_tag(m4_idef(DB_MUTEX_PROCESS_ONLY), [dnl
+Return only if the process is alive, the thread ID should be ignored.])
+m4_tagend])
+m4_tagend
+
+m4_paramend
+
+m4_err(dbenv_set_isalive, einval)
+
+m4_seealso(DbEnv)
+m4_page_footer
diff --git a/db/docs_src/env/env_set_msg_stream.so b/db/docs_src/env/env_set_msg_stream.so
new file mode 100644
index 000000000..ad2cc0c7a
--- /dev/null
+++ b/db/docs_src/env/env_set_msg_stream.so
@@ -0,0 +1,56 @@
+m4_comment([$Id: env_set_msg_stream.so,v 10.5 2006/02/10 22:54:59 bostic Exp $])
+
+ifdef([M4INTERFACE],, [define(M4INTERFACE, dbenv_set_message_stream)])
+
+define(M4PAGELOCAL, M4INTERFACE)
+include(m4/m4.seealso)
+
+ifelse(M4INTERFACE, dbenv_set_message_stream, [dnl
+m4_pf_header(m4_ref(dbenv_set_message_stream),
+void DbEnv::set_message_stream(class ostream*);
+)],[dnl
+m4_pf_header(m4_ref(dbh_set_message_stream),
+void Db::set_message_stream(class ostream*);
+)])
+
+m4_p([dnl
+There are interfaces in the m4_db library which either directly output
+informational messages or statistical information, or configure the
+library to output such messages when performing other operations, for
+example, m4_ref(dbenv_set_verbose) and m4_ref(dbenv_stat_print).])
+
+m4_p([dnl
+The m4_ref(dbenv_set_message_stream) and
+m4_refT(dbh_set_message_stream)s are used to display these messages for
+the application. In this case, the message will include a trailing
+m4_htmlquote(newline) character.])
+
+m4_p([dnl
+Setting m4_arg(stream) to NULL unconfigures the interface.])
+
+m4_p([dnl
+Alternatively, you can use the m4_ref(dbenv_set_msgfile) and
+m4_refT(dbh_set_msgfile)s to display the messages via a C library FILE *,
+or the m4_ref(dbenv_set_msgcall) and m4_refT(dbh_set_msgcall)s to
+capture the additional error information in a way that does not use
+either output streams or C library FILE *'s. You should not mix these
+approaches.])
+
+ifelse(M4INTERFACE, dbh_set_message_stream, [dnl
+m4_really_dbenv(dbh_set_message_stream, dbenv_set_message_stream)])
+
+ifelse(M4INTERFACE, dbh_set_message_stream,
+[m4_scope_dbh(M4INTERFACE)], [m4_scope_dbenv(M4INTERFACE)])
+
+m4_when_any(M4INTERFACE)
+
+m4_parambegin
+m4_param(stream, [dnl
+The m4_arg(stream) parameter is the application-specified output stream to
+be used for additional message information.])
+m4_paramend
+
+ifelse(M4INTERFACE,
+dbenv_set_message_stream, [m4_seealso(DbEnv)], [m4_seealso(Db)])
+
+m4_page_footer
diff --git a/db/docs_src/env/env_set_msgcall.so b/db/docs_src/env/env_set_msgcall.so
new file mode 100644
index 000000000..fe44300d0
--- /dev/null
+++ b/db/docs_src/env/env_set_msgcall.so
@@ -0,0 +1,95 @@
+m4_comment([$Id: env_set_msgcall.so,v 10.7 2006/05/17 20:47:46 bostic Exp $])
+
+ifdef([M4INTERFACE],, [define(M4INTERFACE, dbenv_set_msgcall)])
+
+define(M4PAGELOCAL, [dbenv_set_msgcall, dbh_set_msgcall])
+include(m4/m4.seealso)
+
+ifelse(M4INTERFACE, dbenv_set_msgcall, [dnl
+m4_pf_header(m4_ref(dbenv_set_msgcall),
+ifelse(M4API, C_API, [dnl
+void
+DB_ENV-__GT__set_msgcall(DB_ENV *dbenv,
+ void (*db_msgcall_fcn)(const DB_ENV *dbenv, const char *msg));
+])
+ifelse(M4API, CXX_API, [dnl
+void DbEnv::set_msgcall(
+ void (*db_msgcall_fcn)(const DbEnv *dbenv, const char *msg));
+]))],[dnl
+m4_pf_header(m4_ref(dbh_set_msgcall),
+ifelse(M4API, C_API, [dnl
+void
+DB-__GT__set_msgcall(DB *,
+ void (*db_msgcall_fcn)(const DB_ENV *dbenv, char *msg));
+])
+ifelse(M4API, CXX_API, [dnl
+void Db::set_msgcall(
+ void (*db_msgcall_fcn)(const DbEnv *dbenv, char *msg));
+]))])
+
+ifelse(M4API, C_API, [m4_p([dnl
+There are interfaces in the m4_db library which either directly output
+informational messages or statistical information, or configure the
+library to output such messages when performing other operations, for
+example, m4_ref(dbenv_set_verbose) and m4_ref(dbenv_stat_print).])
+
+m4_p([dnl
+The m4_ref(dbenv_set_msgcall) and m4_refT(dbh_set_msgcall)s are used to
+pass these messages to the application, and m4_db will call
+m4_arg(db_msgcall_fcn) with each message. It is up to the
+m4_arg(db_msgcall_fcn) function to display the message in an appropriate
+manner.])
+
+m4_p([dnl
+Setting m4_arg(db_msgcall_fcn) to NULL unconfigures the callback interface.])
+
+m4_p([dnl
+Alternatively, you can use the m4_ref(dbh_set_msgfile) or
+m4_refT(dbenv_set_msgfile)s to display the messages via a C library FILE *.])])
+
+ifelse(M4API, CXX_API, [m4_p([dnl
+There are interfaces in the m4_db library which either directly output
+informational messages or statistical information, or configure the
+library to output such messages when performing other operations, for
+example, m4_ref(dbenv_set_verbose) and m4_ref(dbenv_stat_print).])
+
+m4_p([dnl
+The m4_ref(dbenv_set_msgcall) and m4_refT(dbh_set_msgcall)s are used to
+pass these messages to the application, and m4_db will call
+m4_arg(db_msgcall_fcn) with each message. It is up to the
+m4_arg(db_msgcall_fcn) function to display the message in an appropriate
+manner.])
+
+m4_p([dnl
+Setting m4_arg(db_msgcall_fcn) to NULL unconfigures the callback interface.])
+
+m4_p([dnl
+Alternatively, you can use the m4_ref(dbenv_set_message_stream) and
+m4_refT(dbh_set_message_stream)s to display the messages via an output
+stream, or the m4_ref(dbh_set_msgfile) or m4_refT(dbenv_set_msgfile)s
+to display the messages via a C library FILE *.])])
+
+ifelse(M4INTERFACE, dbh_set_msgcall, [dnl
+m4_really_dbenv(dbh_set_msgcall, dbenv_set_msgcall)])
+
+ifelse(M4INTERFACE, dbh_set_msgcall,
+[m4_scope_dbh(M4INTERFACE)], [m4_scope_dbenv(M4INTERFACE)])
+
+m4_when_any(M4INTERFACE)
+
+m4_parambegin
+m4_param(db_msgcall_fcn, [dnl
+The m4_arg(db_msgcall_fcn) parameter is the application-specified message
+reporting function. The function takes two parameters:
+m4_tagbegin
+m4_tag(m4_arg(dbenv), [dnl
+The m4_arg(dbenv) parameter is the enclosing database environment.])
+m4_tag(m4_arg(msg), [dnl
+The m4_arg(msg) parameter is the message string.])
+m4_tagend])
+
+m4_not_reentrant
+m4_paramend
+
+ifelse(M4INTERFACE, dbenv_set_msgcall, [m4_seealso(DbEnv)], [m4_seealso(Db)])
+m4_page_footer
diff --git a/db/docs_src/env/env_set_msgfile.so b/db/docs_src/env/env_set_msgfile.so
new file mode 100644
index 000000000..0642e4ab7
--- /dev/null
+++ b/db/docs_src/env/env_set_msgfile.so
@@ -0,0 +1,101 @@
+m4_comment([$Id: env_set_msgfile.so,v 10.7 2006/02/10 22:54:59 bostic Exp $])
+
+ifdef([M4INTERFACE],, [define(M4INTERFACE, dbenv_set_msgfile)])
+define(M4GETINTERFACE, ifelse(M4INTERFACE,
+ dbenv_set_msgfile, dbenv_get_msgfile, dbh_get_msgfile))
+
+define(M4PAGELOCAL, [M4INTERFACE, M4GETINTERFACE])
+include(m4/m4.seealso)
+
+ifelse(M4INTERFACE, dbenv_set_msgfile, [dnl
+m4_pf_header(m4_ref(dbenv_set_msgfile),
+ifelse(M4API, C_API, [dnl
+void
+DB_ENV-__GT__set_msgfile(DB_ENV *dbenv, FILE *msgfile);
+m4_blank
+void
+DB_ENV-__GT__get_msgfile(DB_ENV *dbenv, FILE **msgfilep);
+])dnl
+ifelse(M4API, CXX_API, [dnl
+void
+DbEnv::set_msgfile(FILE *msgfile);
+m4_blank
+void
+DbEnv::get_msgfile(FILE **msgfilep);
+]))],[dnl
+m4_pf_header(m4_ref(dbh_set_msgfile),
+ifelse(M4API, C_API, [dnl
+void
+DB-__GT__set_msgfile(DB *db, FILE *msgfile);
+m4_blank
+void
+DB-__GT__get_msgfile(DB *db, FILE **msgfilep);
+])dnl
+ifelse(M4API, CXX_API, [dnl
+void Db::set_msgfile(FILE *msgfile);
+m4_blank
+void Db::get_msgfile(FILE **msgfilep);
+]))])
+
+ifelse(M4API, C_API, [m4_p([dnl
+There are interfaces in the m4_db library which either directly output
+informational messages or statistical information, or configure the
+library to output such messages when performing other operations, for
+example, m4_ref(dbenv_set_verbose) and m4_ref(dbenv_stat_print).])
+
+m4_p([dnl
+The m4_ref(dbenv_set_msgfile) and m4_refT(dbh_set_msgfile)s are used to
+display these messages for the application.
+In this case the message will include a trailing m4_htmlquote(newline)
+character.])
+
+m4_p([dnl
+Setting m4_arg(msgfile) to NULL unconfigures the interface.])
+
+m4_p([dnl
+Alternatively, you can use the m4_ref(dbenv_set_msgcall) or
+m4_refT(dbh_set_msgcall)s to capture the additional error information
+in a way that does not use C library FILE *'s.])])
+
+ifelse(M4API, CXX_API, [m4_p([dnl
+There are interfaces in the m4_db library which either directly output
+informational messages or statistical information, or configure the
+library to output such messages when performing other operations, for
+example, m4_ref(dbenv_set_verbose) and m4_ref(dbenv_stat_print).])
+
+m4_p([dnl
+The m4_ref(dbenv_set_msgfile) and m4_refT(dbh_set_msgfile)s are used to
+display these messages for the application. In this case, the message
+will include a trailing m4_htmlquote(newline) character.])
+
+m4_p([dnl
+Setting m4_arg(msgfile) to NULL unconfigures the interface.])
+
+m4_p([dnl
+Alternatively, you can use the m4_ref(dbenv_set_message_stream) and
+m4_refT(dbh_set_message_stream)s to display the messages via an output
+stream, or the m4_ref(dbenv_set_msgcall) and m4_refT(dbh_set_msgcall)s
+to capture the additional error information in a way that does not use
+either output streams or C library FILE *'s. You should not mix these
+approaches.])])
+
+ifelse(M4INTERFACE, dbh_set_msgfile, [dnl
+m4_really_dbenv(dbh_set_msgfile, dbenv_set_msgfile)])
+
+ifelse(M4INTERFACE, dbh_set_msgfile,
+[m4_scope_dbh(M4INTERFACE)], [m4_scope_dbenv(M4INTERFACE)])
+
+m4_when_any(M4INTERFACE)
+
+m4_parambegin
+m4_param(msgfile, [dnl
+The m4_arg(msgfile) parameter is a C library FILE * to be used for
+displaying messages.])
+m4_paramend
+
+m4_pf_getter(
+ ifelse(M4INTERFACE, dbh_set_msgfile, dbh_get_msgfile, dbenv_get_msgfile),
+ FILE *,, msgfilep)
+
+ifelse(M4INTERFACE, dbenv_set_msgfile, [m4_seealso(DbEnv)], [m4_seealso(Db)])
+m4_page_footer
diff --git a/db/docs_src/env/env_set_rpc_server.so b/db/docs_src/env/env_set_rpc_server.so
new file mode 100644
index 000000000..a4f8fe926
--- /dev/null
+++ b/db/docs_src/env/env_set_rpc_server.so
@@ -0,0 +1,68 @@
+m4_comment([$Id: env_set_rpc_server.so,v 10.29 2004/08/13 03:38:57 bostic Exp $])
+
+define(M4PAGELOCAL, [dbenv_set_rpc_server, DB_NOSERVER, DB_NOSERVER_ID])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbenv_set_rpc_server),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__set_rpc_server(DB_ENV *dbenv, CLIENT *client, char *host,
+ long cl_timeout, long sv_timeout, u_int32_t flags);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::set_rpc_server(CLIENT *client, char *host,
+ long cl_timeout, long sv_timeout, u_int32_t flags);
+]))
+
+m4_p([dnl
+Establishes a connection for this m4_arg(dbenv) to a RPC server.])
+
+m4_p([dnl
+When the m4_refT(dbenv_set_rpc_server) has been called, subsequent calls
+to m4_db library interfaces may return or throw exceptions encapsulating
+m4_idef(DB_NOSERVER), m4_idef(DB_NOSERVER_ID), or m4_idef(DB_NOSERVER_HOME).])
+
+m4_scope_dbenv(dbenv_set_rpc_server)
+
+m4_when_envopen(dbenv_set_rpc_server)
+
+m4_return(dbenv_set_rpc_server, std)
+
+m4_parambegin
+m4_param(cl_timeout, [dnl
+m4_idefz(DB_NOSERVER)
+The m4_arg(cl_timeout) parameter specifies the number of seconds the client
+should wait for results to come back from the server. Once the timeout
+has expired on any communication with the server, m4_ref(DB_NOSERVER) will
+be returned. If this value is zero, a default timeout is used.])
+
+m4_param(client, [dnl
+If the m4_arg(client) channel has been provided by the application then
+m4_db will use it as its connection and the m4_arg(host) and
+m4_arg(cl_timeout) fields are ignored.])
+
+m4_param(host, [dnl
+The m4_arg(host) parameter is the host to which the m4_db server will
+connect and create a channel for communication.])
+
+m4_unusedflags
+
+m4_idefz(DB_NOSERVER_ID)
+m4_param(sv_timeout, [dnl
+The m4_arg(sv_timeout) parameter specifies the number of seconds the server
+should allow a client connection to remain idle before assuming that the
+client is gone. Once that timeout has been reached, the server releases
+all resources associated with that client connection. Subsequent attempts
+by that client to communicate with the server result in
+m4_ref(DB_NOSERVER_ID), indicating that an invalid identifier has been
+given to the server. This value can be considered a hint to the server.
+The server may alter this value based on its own policies or allowed
+values. If this value is zero, a default timeout is used.])
+
+m4_paramend
+
+m4_err(dbenv_set_rpc_server, einval)
+
+m4_seealso(DbEnv)
+m4_page_footer
diff --git a/db/docs_src/env/env_set_shm_key.so b/db/docs_src/env/env_set_shm_key.so
new file mode 100644
index 000000000..0b627eceb
--- /dev/null
+++ b/db/docs_src/env/env_set_shm_key.so
@@ -0,0 +1,70 @@
+m4_comment([$Id: env_set_shm_key.so,v 10.28 2004/09/28 15:04:20 bostic Exp $])
+
+define(M4PAGELOCAL, [dbenv_set_shm_key, dbenv_get_shm_key])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbenv_set_shm_key),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__set_shm_key(DB_ENV *dbenv, long shm_key);
+m4_blank
+int
+DB_ENV-__GT__get_shm_key(DB_ENV *dbenv, long *shm_keyp);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::set_shm_key(long shm_key);
+m4_blank
+int
+DbEnv::get_shm_key(long *shm_keyp);
+]))
+
+m4_p([dnl
+Specify a base segment ID for m4_db environment shared memory regions
+created in system memory on VxWorks or systems supporting X/Open-style
+shared memory interfaces; for example, UNIX systems supporting
+m4_manref(shmget, 2) and related System V IPC interfaces.])
+
+m4_p([dnl
+This base segment ID will be used when m4_db shared memory regions are
+first created. It will be incremented a small integer value each time
+a new shared memory region is created; that is, if the base ID is 35,
+the first shared memory region created will have a segment ID of 35,
+and the next one will have a segment ID between 36 and 40 or so. A
+m4_db environment always creates a master shared memory region; an
+additional shared memory region for each of the subsystems supported by
+the environment (Locking, Logging, Memory Pool and Transaction); plus
+an additional shared memory region for each additional memory pool cache
+that is supported. Already existing regions with the same segment IDs
+will be removed. See m4_link(M4RELDIR/ref/env/region, [Shared Memory
+Regions]) for more information.])
+
+m4_p([dnl
+The intent behind this method is two-fold: without it, applications
+have no way to ensure that two m4_db applications don't attempt to use
+the same segment IDs when creating different m4_db environments. In
+addition, by using the same segment IDs each time the environment is
+created, previously created segments will be removed, and the set of
+segments on the system will not grow without bound.])
+
+m4_env_config(dbenv_set_shm_key, [base segment ID], set_shm_key, [the ID])
+
+m4_scope_dbenv(dbenv_set_shm_key)
+
+m4_when_envopen(dbenv_set_shm_key, corrupt)
+
+m4_return(dbenv_set_shm_key, std)
+
+m4_parambegin
+m4_param(shm_key, [dnl
+The m4_arg(shm_key) parameter is the base segment ID for the database
+environment.])
+m4_paramend
+
+m4_err(dbenv_set_shm_key,
+einval, [the method was called after m4_ref(dbenv_open) was called])
+
+m4_pf_getter(dbenv_get_shm_key, base segment ID,, shm_keyp)
+
+m4_seealso(DbEnv)
+m4_page_footer
diff --git a/db/docs_src/env/env_set_thread_count.so b/db/docs_src/env/env_set_thread_count.so
new file mode 100644
index 000000000..0e49b0b32
--- /dev/null
+++ b/db/docs_src/env/env_set_thread_count.so
@@ -0,0 +1,65 @@
+m4_comment([$Id: env_set_thread_count.so,v 10.3 2007/04/02 16:08:13 bostic Exp $])
+
+define(M4PAGELOCAL, [dbenv_set_thread_count, dbenv_get_thread_count])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbenv_set_thread_count),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__set_thread_count(DB_ENV *dbenv, u_int32_t count);
+m4_blank
+int
+DB_ENV-__GT__get_thread_count(DB_ENV *dbenv, u_int32_t *countp);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::set_thread_count(u_int32_t count);
+m4_blank
+int
+DbEnv::get_thread_count(u_int32_t *countp);
+]))
+
+m4_p([dnl
+Declare an approximate number of threads in the database environment.
+The m4_refT(dbenv_set_thread_count) must be called prior to opening the
+database environment if the m4_refT(dbenv_failchk) will be used. The
+m4_refT(dbenv_set_thread_count) does not set the maximum number of
+threads but is used to determine memory sizing and the thread control
+block reclamation policy.])
+
+m4_p([dnl
+If a process has not configured an m4_arg(is_alive) function from the
+m4_refT(dbenv_set_isalive), and then attempts to join a database
+environment configured for failure checking with the
+m4_ref(dbenv_failchk), m4_ref(dbenv_set_thread_id),
+m4_ref(dbenv_set_isalive) and m4_refT(dbenv_set_thread_count)s, the
+program may be unable to allocate a thread control block and fail to
+join the environment.
+m4_bold([This is true of the standalone m4_db utility programs.])
+To avoid problems when using the standalone m4_db utility programs with
+environments configured for failure checking, incorporate the utility's
+functionality directly in the application, or call the
+m4_refT(dbenv_failchk) before running the utility.])
+
+m4_env_config(dbenv_set_thread_count,
+ [thread count], set_thread_count, [the thread count])
+
+m4_scope_dbenv(dbenv_set_thread_count)
+
+m4_when_envopen(dbenv_set_thread_count)
+
+m4_return(dbenv_set_thread_count, std)
+
+m4_parambegin
+m4_param(count, [dnl
+The m4_arg(count) parameter is an approximate thread count for the
+database environment.])
+m4_paramend
+
+m4_err(dbenv_set_thread_count,
+einval, [the method was called after m4_ref(dbenv_open) was called])
+
+m4_pf_getter(dbenv_get_thread_count, thread count,, countp)
+
+m4_seealso(DbEnv)
+m4_page_footer
diff --git a/db/docs_src/env/env_set_thread_id.so b/db/docs_src/env/env_set_thread_id.so
new file mode 100644
index 000000000..5d6241378
--- /dev/null
+++ b/db/docs_src/env/env_set_thread_id.so
@@ -0,0 +1,108 @@
+m4_comment([$Id: env_set_thread_id.so,v 10.9 2006/08/24 16:32:23 bostic Exp $])
+
+define(M4PAGELOCAL, [dbenv_set_thread_id])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbenv_set_thread_id),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__set_thread_id(DB_ENV *dbenv,
+ void (*thread_id)(DB_ENV *dbenv, pid_t *pid, db_threadid_t *tid));
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::set_thread_id(
+ void (*thread_id)(DbEnv *dbenv, pid_t *pid, db_threadid_t *tid));
+]))
+
+m4_p([dnl
+Declare a function that returns a unique identifier pair for the current
+thread of control. The m4_refT(dbenv_set_thread_id) supports the
+m4_refT(dbenv_failchk). For more information, see
+m4_link(M4RELDIR/ref/cam/app, Architecting Data Store and Concurrent
+Data Store applications), and m4_link(M4RELDIR/ref/transapp/app,
+Architecting Transactional Data Store applications).])
+
+m4_scope_dbenv(dbenv_set_thread_id)
+
+m4_when_any(dbenv_set_thread_id)
+
+m4_return(dbenv_set_thread_id, std)
+
+m4_parambegin
+m4_param(thread_id, [dnl
+The m4_arg(thread_id) parameter is a function which returns a unique
+identifier pair for a thread of control in a m4_db application. The
+function takes three arguments:])
+
+m4_tagbegin
+m4_tag(m4_arg(dbenv), [dnl
+The m4_arg(dbenv) parameter is the enclosing database environment
+handle, allowing application access to the application-private fields
+of that object.])
+m4_tag(m4_arg(pid), [dnl
+The m4_arg(pid) points to a memory location of type pid_t. The
+process ID of the current thread of control may be returned in
+this memory location.])
+m4_tag(m4_arg(tid), [dnl
+The m4_arg(tid) points to a memory location of type db_threadid_t. The
+thread ID of the current thread of control may be returned in this
+memory location.])
+m4_tagend
+m4_paramend
+
+m4_p([dnl
+The standard system library calls to return process and thread IDs are
+often sufficient for this purpose (for example, getpid() and
+pthread_self() on POSIX systems or GetCurrentThreadID on Windows
+systems). However, if the m4_db application dynamically creates
+processes or threads, some care may be necessary in assigning unique
+IDs. In most threading systems, process and thread IDs are available
+for re-use as soon as the process or thread exits. If a new process or
+thread is created between the time of process or thread exit, and the
+m4_refT(dbenv_failchk) is run, it may be possible for
+m4_ref(dbenv_failchk) to not detect that a thread of control exited
+without properly releasing all m4_db resources.])
+
+m4_p([dnl
+It may be possible to handle this problem by inhibiting process or
+thread creation between thread of control exit and calling
+m4_ref(dbenv_failchk). Alternatively, the m4_arg(thread_id) function
+must be constructed to not re-use m4_arg(pid)/m4_arg(tid) pairs. For
+example, in a single process application, the returned process ID might
+be used as an incremental counter, with the returned thread ID set to
+the actual thread ID. Obviously, the m4_arg(is_alive) function
+specified to the m4_refT(dbenv_set_isalive) must be compatible with any
+m4_arg(thread_id) function specified to m4_ref(dbenv_set_thread_id).])
+
+m4_p([dnl
+The db_threadid_t type is configured to be the same type as a standard
+thread identifier, in m4_db configurations where this type is known (for
+example, systems supporting pthread_t or thread_t, or DWORD on Windows).
+If the m4_db configuration process is unable to determine the type of a
+standard thread identifier, the db_thread_t type is set to uintmax_t (or
+the largest available unsigned integral type, on systems lacking the
+uintmax_t type). Applications running on systems lacking a detectable
+standard thread type, and which are also using thread APIs where a
+thread identifier is not an integral value and so will not fit into the
+configured db_threadid_t type, must either translate between the
+db_threadid_t type and the thread identifier (mapping the thread
+identifier to a unique identifier of the appropriate size), or modify
+the m4_db sources to use an appropriate db_threadid_t type. Note: we
+do not currently know of any systems where this is necessary. If your
+application has to solve this problem, please contact our support group
+and let us know.])
+
+m4_p([dnl
+If no m4_arg(thread_id) function is specified by the application, the
+m4_db library will identify threads of control by using the taskIdSelf()
+call on VxWorks, the getpid() and GetCurrentThreadID() calls on Windows,
+the getpid() and pthread_self() calls when the m4_db library has been
+configured for POSIX pthreads or Solaris LWP threads, the getpid() and
+thr_self() calls when the m4_db library has been configured for UI
+threads, and otherwise getpid().])
+
+m4_err(dbenv_set_thread_id, einval)
+
+m4_seealso(DbEnv)
+m4_page_footer
diff --git a/db/docs_src/env/env_set_thread_id_string.so b/db/docs_src/env/env_set_thread_id_string.so
new file mode 100644
index 000000000..5ffec0f41
--- /dev/null
+++ b/db/docs_src/env/env_set_thread_id_string.so
@@ -0,0 +1,65 @@
+m4_comment([$Id: env_set_thread_id_string.so,v 10.1 2005/10/20 17:16:02 bostic Exp $])
+
+define(M4PAGELOCAL, [dbenv_set_thread_id_string, DB_THREADID_STRLEN])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbenv_set_thread_id_string),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__set_thread_id_string(DB_ENV *dbenv,
+ char *(*thread_id_string)(DB_ENV *dbenv,
+ pid_t pid, db_threadid_t tid, char *buf));
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::set_thread_id(
+ char *(*thread_id_string)(DbEnv *dbenv,
+ pid_t pid, db_threadid_t tid, char *buf));
+]))
+
+m4_p([dnl
+Declare a function that formats a process ID and thread ID identifier
+pair for display into a caller-supplied buffer. The function must
+return a reference to the caller-specified buffer. The
+m4_refT(dbenv_set_thread_id_string) supports the
+m4_refT(dbenv_set_thread_id).])
+
+m4_scope_dbenv(dbenv_set_thread_id_string)
+
+m4_when_any(dbenv_set_thread_id_string)
+
+m4_return(dbenv_set_thread_id_string, std)
+
+m4_parambegin
+m4_param(thread_id_string, [dnl
+The m4_arg(thread_id_string) parameter is a function which returns a
+buffer in which is an identifier pair formatted for display. The
+function takes four arguments:])
+
+m4_tagbegin
+m4_tag(m4_arg(dbenv), [dnl
+The m4_arg(dbenv) parameter is the enclosing database environment
+handle, allowing application access to the application-private fields
+of that object.])
+m4_tag(m4_arg(pid), [dnl
+The m4_arg(pid) argument is a process ID.])
+m4_tag(m4_arg(tid), [dnl
+The m4_arg(tid) argument is a thread ID.])
+m4_tag(m4_arg(buf), [dnl
+m4_idefz(DB_NOSERVER)
+The m4_arg(buf) argument is character array of at least
+m4_ref(DB_THREADID_STRLEN) bytes in length, into which the identifier
+pair should be formatted.])
+m4_tagend
+m4_paramend
+
+m4_p([dnl
+If no m4_arg(thread_id_string) function is specified, the default
+routine displays the identifier pair as "pid/tid", that is, the process
+ID represented as an unsigned integer value, a slash ('/') character,
+then the thread ID represented as an unsigned integer value.])
+
+m4_err(dbenv_set_thread_id_string, einval)
+
+m4_seealso(DbEnv)
+m4_page_footer
diff --git a/db/docs_src/env/env_set_timeout.so b/db/docs_src/env/env_set_timeout.so
new file mode 100644
index 000000000..7eefcb4ec
--- /dev/null
+++ b/db/docs_src/env/env_set_timeout.so
@@ -0,0 +1,99 @@
+m4_comment([$Id: env_set_timeout.so,v 10.24 2005/05/20 15:07:45 bostic Exp $])
+
+define(M4PAGELOCAL,
+ [dbenv_set_timeout, dbenv_get_timeout, DB_SET_LOCK_TIMEOUT,
+ DB_SET_TXN_TIMEOUT])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbenv_set_timeout),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__set_timeout(DB_ENV *dbenv, db_timeout_t timeout, u_int32_t flags);
+m4_blank
+int
+DB_ENV-__GT__get_timeout(DB_ENV *dbenv, db_timeout_t *timeoutp, u_int32_t flag);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::set_timeout(db_timeout_t timeout, u_int32_t flags);
+m4_blank
+int
+DbEnv::get_timeout(db_timeout_t *timeoutp, u_int32_t flag);
+]))
+
+m4_p([dnl
+The m4_refT(dbenv_set_timeout) sets timeout values for locks or
+transactions in the database environment.])
+
+m4_p([dnl
+All timeouts are checked whenever a thread of control blocks on a lock
+or when deadlock detection is performed. (In the case of
+m4_ref(DB_SET_LOCK_TIMEOUT), the lock is one requested explicitly
+through the Lock subsystem interfaces. In the case of
+m4_ref(DB_SET_TXN_TIMEOUT), the lock is one requested on behalf of a
+transaction. In either case, it may be a lock requested by the database
+access methods underlying the application.) As timeouts are only
+checked when the lock request first blocks or when deadlock detection
+is performed, the accuracy of the timeout depends on how often deadlock
+detection is performed.])
+
+m4_p([dnl
+Timeout values specified for the database environment may be overridden
+on a per-lock or per-transaction basis. See m4_ref(lock_vec) and
+m4_ref(txn_set_timeout) for more information.])
+
+m4_scope_env(dbenv_set_timeout)
+
+m4_when_any(dbenv_set_timeout)
+
+m4_return(dbenv_set_timeout, std)
+
+m4_parambegin
+m4_param(flags, [dnl
+m4_sf_must
+
+m4_tagbegin
+m4_tag(m4_idef(DB_SET_LOCK_TIMEOUT), [dnl
+Set the timeout value for locks in this database environment.
+m4_env_config(dbenv_set_timeout,
+[lock timeout value], set_lock_timeout, [the lock timeout value])])
+
+m4_tag(m4_idef(DB_SET_TXN_TIMEOUT), [dnl
+Set the timeout value for transactions in this database environment.
+m4_env_config(dbenv_set_timeout,
+[transaction timeout value], set_txn_timeout, [the transaction timeout value])])
+m4_tagend
+
+m4_param(timeout, [dnl
+The m4_arg(timeout) parameter is the timeout value. It must be specified
+as an unsigned 32-bit number of microseconds, limiting the maximum timeout
+to roughly 71 minutes.])])
+m4_paramend
+
+m4_err(dbenv_set_timeout, einval)
+
+m4_pf_description(m4_ref(dbenv_get_timeout))
+m4_p([dnl
+The m4_refT(dbenv_get_timeout) returns a timeout value, in microseconds.])
+
+m4_when_any(dbenv_get_timeout)
+
+m4_return(dbenv_get_timeout, std)
+
+m4_parambegin
+m4_param(flag, [dnl
+m4_sf_must
+
+m4_tagbegin
+m4_tag(m4_idef(DB_SET_LOCK_TIMEOUT), [dnl
+Return the timeout value for locks in this database environment.])
+
+m4_tag(m4_idef(DB_SET_TXN_TIMEOUT), [dnl
+Return the timeout value for transactions in this database environment.])
+m4_tagend])
+
+m4_param_co(timeoutp, timeout value of the specified m4_arg(flag) parameter)
+m4_paramend
+
+m4_seealso(DbEnv)
+m4_page_footer
diff --git a/db/docs_src/env/env_set_tmp_dir.so b/db/docs_src/env/env_set_tmp_dir.so
new file mode 100644
index 000000000..a609559f5
--- /dev/null
+++ b/db/docs_src/env/env_set_tmp_dir.so
@@ -0,0 +1,79 @@
+m4_comment([$Id: env_set_tmp_dir.so,v 10.26 2004/09/28 15:04:20 bostic Exp $])
+
+define(M4PAGELOCAL, [dbenv_set_tmp_dir, dbenv_get_tmp_dir])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbenv_set_tmp_dir),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__set_tmp_dir(DB_ENV *dbenv, const char *dir);
+m4_blank
+int
+DB_ENV-__GT__get_tmp_dir(DB_ENV *dbenv, const char **dirp);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::set_tmp_dir(const char *dir);
+m4_blank
+int
+DbEnv::get_tmp_dir(const char **dirp);
+]))
+
+m4_idefz(temporary files)
+
+m4_p([dnl
+Specify the path of a directory to be used as the location of temporary
+files. The files created to back in-memory access method databases will
+be created relative to this path. These temporary files can be quite
+large, depending on the size of the database.])
+
+m4_p([dnl
+If no directories are specified, the following alternatives are checked
+in the specified order. The first existing directory path is used for
+all temporary files.])
+
+m4_nlistbegin
+m4_nlist([The value of the environment variable m4_envvar(TMPDIR).])
+m4_nlistns([The value of the environment variable m4_envvar(TEMP).])
+m4_nlistns([The value of the environment variable m4_envvar(TMP).])
+m4_nlistns([The value of the environment variable m4_envvar(TempFolder).])
+m4_nlistns([The value returned by the GetTempPath interface.])
+m4_nlistns([The directory m4_path(/var/tmp).])
+m4_nlistns([The directory m4_path(/usr/tmp).])
+m4_nlistns([The directory m4_path(/temp).])
+m4_nlistns([The directory m4_path(/tmp).])
+m4_nlistns([The directory m4_path(C:/temp).])
+m4_nlistns([The directory m4_path(C:/tmp).])
+m4_nlistend
+
+m4_p([dnl
+Note: environment variables are only checked if one of the
+m4_ref(DB_USE_ENVIRON) or m4_ref(DB_USE_ENVIRON_ROOT) flags were
+specified.])
+
+m4_p([dnl
+Note: the GetTempPath interface is only checked on Win/32 platforms.])
+
+m4_env_config(dbenv_set_tmp_dir,
+[temporary file directory], set_tmp_dir, [the directory name])
+
+m4_scope_dbenv(dbenv_set_tmp_dir)
+
+m4_when_envopen(dbenv_set_tmp_dir, corrupt)
+
+m4_return(dbenv_set_tmp_dir, std)
+
+m4_parambegin
+m4_param_utf8(dir, [dnl
+The m4_arg(dir) parameter is the directory to be used to store temporary
+files.])
+m4_paramend
+
+m4_err(dbenv_set_tmp_dir,
+einval, [the method was called after m4_ref(dbenv_open) was called])
+
+m4_pf_getter(dbenv_get_tmp_dir,
+database environment temporary file directory,, dirp, reference)
+
+m4_seealso(DbEnv)
+m4_page_footer
diff --git a/db/docs_src/env/env_set_verbose.so b/db/docs_src/env/env_set_verbose.so
new file mode 100644
index 000000000..92cf4e6b3
--- /dev/null
+++ b/db/docs_src/env/env_set_verbose.so
@@ -0,0 +1,99 @@
+m4_comment([$Id: env_set_verbose.so,v 10.54 2006/10/20 15:32:29 bostic Exp $])
+
+define(M4PAGELOCAL, [dnl
+ dbenv_set_verbose, dbenv_get_verbose DB_VERB_DEADLOCK,
+ DB_VERB_RECOVERY, DB_VERB_REGISTER, DB_VERB_REPLICATION,
+ DB_VERB_WAITSFOR])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbenv_set_verbose),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__set_verbose(DB_ENV *dbenv, u_int32_t which, int onoff);
+m4_blank
+int
+DB_ENV-__GT__get_verbose(DB_ENV *dbenv, u_int32_t which, int *onoffp);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::set_verbose(u_int32_t which, int onoff);
+m4_blank
+int
+DbEnv::get_verbose(u_int32_t which, int *onoffp);
+]))
+
+m4_p([dnl
+The m4_refT(dbenv_set_verbose) turns specific additional informational
+and debugging messages in the m4_db message output on and off. To see
+the additional messages, verbose messages must also be configured for
+the application. For more information on verbose messages, see the
+m4_refT(dbenv_set_msgfile).])
+
+m4_env_config(dbenv_set_verbose, messages, set_verbose, [dnl
+the method m4_arg(which) parameter as a string; for example,
+"set_verbose DB_VERB_RECOVERY"])
+
+m4_scope_dbenv(dbenv_set_verbose)
+
+m4_when_any(dbenv_set_verbose)
+
+m4_return(dbenv_set_verbose, std)
+
+m4_parambegin
+m4_param(onoff, [dnl
+If the m4_arg(onoff) parameter is set to non-zero, the additional
+messages are output.])
+
+m4_param(which, [dnl
+The m4_arg(which) parameter must be set to one of the following values:
+
+m4_tagbegin
+m4_tag(m4_idef(DB_VERB_DEADLOCK), [dnl
+Display additional information when doing deadlock detection.])
+
+m4_tag(m4_idef(DB_VERB_FILEOPS), [dnl
+Display additional information when performing filesystem operations
+such as open, close or rename. May not be available on all platforms.])
+
+m4_tag(m4_idef(DB_VERB_FILEOPS_ALL), [dnl
+Display additional information when performing all filesystem operations,
+including read and write. May not be available on all platforms.])
+
+m4_tag(m4_idef(DB_VERB_RECOVERY), [dnl
+Display additional information when performing recovery.])
+
+m4_tag(m4_idef(DB_VERB_REGISTER), [dnl
+Display additional information concerning support for the
+m4_ref(DB_REGISTER) flag to the m4_refT(dbenv_open).])
+
+m4_tag(m4_idef(DB_VERB_REPLICATION), [dnl
+Display detailed information when processing replication messages.])
+
+m4_tag(m4_idef(DB_VERB_WAITSFOR), [dnl
+Display the waits-for table when doing deadlock detection.])
+m4_tagend])
+m4_paramend
+
+m4_err(dbenv_set_verbose, einval)
+
+m4_pf_description(m4_ref(dbenv_get_verbose))
+m4_p([dnl
+The m4_refT(dbenv_get_verbose) returns whether the specified m4_arg(which)
+parameter is currently set or not.])
+
+m4_when_any(dbenv_get_verbose)
+
+m4_return(dbenv_get_verbose, std)
+
+m4_parambegin
+m4_param(which, [dnl
+The m4_arg(which) parameter is the message value for which configuration
+is being checked.])
+m4_param_co(onoffp, [dnl
+configuration of the specified m4_arg(which) parameter],, [dnl
+If the returned m4_arg(onoff) value is zero, the parameter is off;
+otherwise on.])
+m4_paramend
+
+m4_seealso(DbEnv)
+m4_page_footer
diff --git a/db/docs_src/env/env_stat.so b/db/docs_src/env/env_stat.so
new file mode 100644
index 000000000..aa891b396
--- /dev/null
+++ b/db/docs_src/env/env_stat.so
@@ -0,0 +1,19 @@
+m4_comment([$Id: env_stat.so,v 10.5 2004/08/13 03:38:57 bostic Exp $])
+
+define(M4PAGELOCAL, dbenv_stat_print)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbenv_stat_print),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__stat_print(DB_ENV *dbenv, u_int32_t flags);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::stat_print(u_int32_t flags);
+]))
+
+m4_stat_print(dbenv_stat_print,,, no)
+
+m4_seealso(DbEnv)
+m4_page_footer
diff --git a/db/docs_src/env/env_strerror.so b/db/docs_src/env/env_strerror.so
new file mode 100644
index 000000000..f642c905b
--- /dev/null
+++ b/db/docs_src/env/env_strerror.so
@@ -0,0 +1,37 @@
+m4_comment([$Id: env_strerror.so,v 8.13 2004/08/13 03:38:57 bostic Exp $])
+
+define(M4PAGELOCAL, dbenv_strerror)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbenv_strerror),
+ifelse(M4API, C_API, [dnl
+char *
+db_strerror(int error);
+])
+ifelse(M4API, CXX_API, [dnl
+static char *
+DbEnv::strerror(int error);
+]))
+
+m4_p([dnl
+The m4_refT(dbenv_strerror) returns an error message string corresponding
+to the error number m4_arg(error) parameter.])
+
+m4_p([dnl
+This function is a superset of the m4_ansic_name m4_manref(strerror,
+3) function. If the error number m4_arg(error) is greater than or
+equal to 0, then the string returned by the system function
+m4_manref(strerror, 3) is returned. If the error number is less than
+0, an error string appropriate to the corresponding m4_db library error
+is returned. See
+m4_link(M4RELDIR/ref/program/errorret, [Error returns to applications])
+for more information.])
+
+m4_parambegin
+m4_param(error, [dnl
+The m4_arg(error) parameter is the error number for which an error message
+string is wanted.])
+m4_paramend
+
+m4_seealso(DbEnv)
+m4_page_footer
diff --git a/db/docs_src/env/env_version.so b/db/docs_src/env/env_version.so
new file mode 100644
index 000000000..60994c3a2
--- /dev/null
+++ b/db/docs_src/env/env_version.so
@@ -0,0 +1,35 @@
+m4_comment([$Id: env_version.so,v 10.26 2004/09/28 15:04:20 bostic Exp $])
+
+define(M4PAGELOCAL,
+ [dbenv_version, dbenv_get_version_major, dbenv_get_version_minor,
+ dbenv_get_version_patch, dbenv_get_version_string])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbenv_version),
+ifelse(M4API, C_API, [dnl
+char *
+db_version(int *major, int *minor, int *patch);
+])
+ifelse(M4API, CXX_API, [dnl
+static char *
+DbEnv::version(int *major, int *minor, int *patch);
+]))
+
+m4_p([dnl
+The m4_refT(dbenv_version) returns a pointer to a string, suitable for
+display, containing m4_db version information.])
+
+m4_parambegin
+m4_param(major, [dnl
+If m4_arg(major) is non-NULL, the major
+version of the m4_db release is copied to the memory to which it refers.])
+m4_param(minor, [dnl
+If m4_arg(minor) is non-NULL, the minor version of the m4_db release
+is copied to the memory to which it refers.])
+m4_param(patch, [dnl
+If m4_arg(patch) is non-NULL, the patch version of the m4_db release
+is copied to the memory to which it refers.])
+m4_paramend
+
+m4_seealso(DbEnv)
+m4_page_footer
diff --git a/db/docs_src/env/m4.methods b/db/docs_src/env/m4.methods
new file mode 100644
index 000000000..7b5597a1f
--- /dev/null
+++ b/db/docs_src/env/m4.methods
@@ -0,0 +1,46 @@
+m4_comment([$Id: m4.methods,v 10.17 2006/08/25 16:40:00 bostic Exp $])
+
+m4_table_begin(, _center)
+
+m4_table_header(Database Environment Operations, Description)
+m4_comment([DbEnv::])m4_table_element(m4_ref(ifelse(M4API, C_API, dbenv_create, DbEnv)), Create an environment handle)
+m4_comment([Db::get_env])m4_table_element(m4_ref(dbh_getenv), Return m4_ref(Db)'s underlying m4_ref(DbEnv) handle)
+m4_comment([DbEnv::close])m4_table_element(m4_ref(dbenv_close), Close an environment)
+m4_comment([DbEnv::dbremove])m4_table_element(m4_ref(dbenv_dbremove), Remove a database)
+m4_comment([DbEnv::dbrename])m4_table_element(m4_ref(dbenv_dbrename), Rename a database)
+m4_comment([DbEnv::err])m4_table_element([m4_ref(dbenv_err), m4_ref(dbenv_errx)], Error message)
+m4_comment([DbEnv::failchk])m4_table_element(m4_ref(dbenv_failchk), Check for thread failure)
+m4_comment([DbEnv::fileid_reset])m4_table_element(m4_ref(dbenv_fileid_reset), Reset database file IDs)
+m4_comment([DbEnv::get_home])m4_table_element(m4_ref(dbenv_get_home), Return environment's home directory)
+m4_comment([DbEnv::get_open_flags])m4_table_element(m4_ref(dbenv_get_open_flags), Return flags with which the environment was opened)
+m4_comment([DbEnv::lsn_reset])m4_table_element(m4_ref(dbenv_lsn_reset), Reset database file LSNs)
+m4_comment([DbEnv::open])m4_table_element(m4_ref(dbenv_open), Open an environment)
+m4_comment([DbEnv::remove])m4_table_element(m4_ref(dbenv_remove), Remove an environment)
+m4_comment([DbEnv::stat_print])m4_table_element(m4_ref(dbenv_stat_print), Environment statistics)
+m4_comment([db_strerror])m4_table_element(m4_ref(dbenv_strerror), Error strings)
+m4_comment([db_version])m4_table_element(m4_ref(dbenv_version), Return version information)
+
+m4_table_header(Environment Configuration, _empty)
+m4_comment([DbEnv::set_alloc])m4_table_element(m4_ref(dbenv_set_alloc), Set local space allocation functions)
+m4_comment([DbEnv::set_app_dispatch])m4_table_element(m4_ref(dbenv_set_app_dispatch), Configure application recovery)
+m4_comment([DbEnv::set_cachesize])m4_table_element(m4_ref(dbenv_set_cachesize), Set the environment cache size)
+m4_comment([DbEnv::set_data_dir])m4_table_element(m4_ref(dbenv_set_data_dir), Set the environment data directory)
+m4_comment([DbEnv::set_encrypt])m4_table_element(m4_ref(dbenv_set_encrypt), Set the environment cryptographic key)
+m4_comment([DbEnv::set_errcall])m4_table_element([m4_ref(dbenv_set_errcall), m4_ref(dbenv_set_msgcall)], Set error and informational message callbacks)
+m4_comment([DbEnv::set_errfile])m4_table_element([m4_ref(dbenv_set_errfile), m4_ref(dbenv_set_msgfile)], Set error and informational message FILE)
+m4_comment([DbEnv::set_error_stream])ifelse(M4API, C_API,, [m4_table_element([m4_ref(dbenv_set_error_stream), m4_ref(dbenv_set_message_stream)], Set error and informational message output stream)])
+m4_comment([DbEnv::set_errpfx])m4_table_element(m4_ref(dbenv_set_errpfx), Set error message prefix)
+m4_comment([DbEnv::set_event_notify])m4_table_element(m4_ref(dbenv_set_event_notify), Set event notification callback)
+m4_comment([DbEnv::set_feedback])m4_table_element(m4_ref(dbenv_set_feedback), Set feedback callback)
+m4_comment([DbEnv::set_flags])m4_table_element(m4_ref(dbenv_set_flags), Environment configuration)
+m4_comment([DbEnv::set_isalive])m4_table_element(m4_ref(dbenv_set_isalive), Set thread is-alive callback)
+m4_comment([DbEnv::set_rpc_server])m4_table_element(m4_ref(dbenv_set_rpc_server), Establish an RPC server connection)
+m4_comment([DbEnv::set_shm_key])m4_table_element(m4_ref(dbenv_set_shm_key), Set system memory shared segment ID)
+m4_comment([DbEnv::set_thread_id])m4_table_element(m4_ref(dbenv_set_thread_id), Set thread of control ID function)
+m4_comment([DbEnv::set_thread_count])m4_table_element(m4_ref(dbenv_set_thread_count), Set approximate thread count)
+m4_comment([DbEnv::set_thread_id_string])m4_table_element(m4_ref(dbenv_set_thread_id_string), Set thread of control ID format function)
+m4_comment([DbEnv::set_timeout])m4_table_element(m4_ref(dbenv_set_timeout), Set lock and transaction timeout)
+m4_comment([DbEnv::set_tmp_dir])m4_table_element(m4_ref(dbenv_set_tmp_dir), Set the environment temporary file directory)
+m4_comment([DbEnv::set_verbose])m4_table_element(m4_ref(dbenv_set_verbose), Set verbose messages)
+
+m4_table_end
diff --git a/db/docs_src/exc/exc_package.so b/db/docs_src/exc/exc_package.so
new file mode 100644
index 000000000..b918ee4fc
--- /dev/null
+++ b/db/docs_src/exc/exc_package.so
@@ -0,0 +1,15 @@
+m4_comment([$Id: exc_package.so,v 10.1 2004/08/27 13:49:28 bostic Exp $])
+
+m4_page_title([Exceptions])
+
+m4_table_begin(, _center)
+m4_table_header(Exceptions, Description)
+
+m4_table_element(m4_ref(DbDeadlockException), Exception Class for deadlocks)
+m4_table_element(m4_ref(DbException), Exception Class for m4_db Activity)
+m4_table_element(m4_ref(DbLockNotGrantedException), Exception Class for lock request failures)
+m4_table_element(m4_ref(DbMemoryException), Exception Class for insufficient memory)
+m4_table_element(m4_ref(DbRunRecoveryException), Exception Class for failures requiring recovery)
+
+m4_table_end
+m4_page_footer
diff --git a/db/docs_src/historic/dbm.so b/db/docs_src/historic/dbm.so
new file mode 100644
index 000000000..321de3bb1
--- /dev/null
+++ b/db/docs_src/historic/dbm.so
@@ -0,0 +1,239 @@
+m4_comment([$Id: dbm.so,v 10.26 2003/10/18 19:15:48 bostic Exp $])
+
+define(M4PAGELOCAL,
+ [dbm, dbm_delete, dbm_dirfno, dbm_fetch, dbm_firstkey, dbm_nextkey,
+ dbm_open, dbm_pagfno, dbm_store, dbmclose, dbminit, dbminit, delete,
+ fetch, firstkey, nextkey, store, dbm_clearerr, dbm_error, dbm_firstkey,
+ dbm_nextkey, firstkey, nextkey])
+
+m4_pf_header(dbm/ndbm, [dnl
+typedef struct {
+ char *dptr;
+ int dsize;
+} datum;
+m4_hl
+m4_section([Dbm Functions])
+int
+dbminit(char *file);
+m4_blank
+int
+dbmclose();
+m4_blank
+datum
+fetch(datum key);
+m4_blank
+int
+store(datum key, datum content);
+m4_blank
+int
+delete(datum key);
+m4_blank
+datum
+firstkey(void);
+m4_blank
+datum
+nextkey(datum key);
+m4_hl
+m4_section([Ndbm Functions])
+DBM *
+dbm_open(char *file, int flags, int mode);
+m4_blank
+void
+dbm_close(DBM *db);
+m4_blank
+datum
+dbm_fetch(DBM *db, datum key);
+m4_blank
+int
+dbm_store(DBM *db, datum key, datum content, int flags);
+m4_blank
+int
+dbm_delete(DBM *db, datum key);
+m4_blank
+datum
+dbm_firstkey(DBM *db);
+m4_blank
+datum
+dbm_nextkey(DBM *db);
+m4_blank
+int
+dbm_error(DBM *db);
+m4_blank
+int
+dbm_clearerr(DBM *db);
+],
+[#define DB_DBM_HSEARCH 1])
+
+m4_p([dnl
+The m4_ref(dbm) functions are intended to provide high-performance
+implementations and source code compatibility for applications written
+to historic interfaces. They are not recommended for any other purpose.
+The historic m4_ref(dbm) database format m4_bold([is not supported]),
+and databases previously built using the real m4_ref(dbm) libraries
+cannot be read by the m4_db functions.])
+
+m4_p([dnl
+To compile m4_ref(dbm) applications, replace the application's
+m4_bold([#include]) of the dbm or ndbm include file (for example,
+m4_bold([m4_include(dbm.h)]) or m4_bold([m4_include(ndbm.h)]))
+with the following two lines:])
+
+m4_indent([dnl
+#define DB_DBM_HSEARCH 1
+m4_include(db.h)])
+
+m4_p([dnl
+and recompile. If the application attempts to load against a dbm library
+(for example, m4_bold(-ldbm)), remove the library from the load line.])
+
+m4_p([dnl
+m4_arg(Key) and m4_arg(content) parameters are objects described by the
+m4_arg(datum) typedef. A m4_arg(datum) specifies a string of
+m4_arg(dsize) bytes pointed to by m4_arg(dptr). Arbitrary binary data,
+as well as normal text strings, are allowed.])
+
+m4_section([Dbm Functions])
+m4_p([dnl
+Before a database can be accessed, it must be opened by m4_ref(dbminit).
+This will open and/or create the database m4_arg(file).db. If created,
+the database file is created read/write by owner only (as described in
+m4_manref(chmod, 2)) and modified by the process' umask value at the time
+of creation (see m4_manref(umask, 2)). The group ownership of created
+files is based on the system and directory defaults, and is not further
+specified by m4_db.])
+
+m4_p([dnl
+A database may be closed, and any held resources released, by calling
+m4_ref(dbmclose).])
+
+m4_p([dnl
+Once open, the data stored under a key is accessed by m4_ref(fetch), and
+data is placed under a key by m4_ref(store). A key (and its associated
+contents) are deleted by m4_ref(delete). A linear pass through all keys
+in a database may be made, in an (apparently) random order, by using
+m4_ref(firstkey) and m4_ref(nextkey). The m4_refT(firstkey) will return
+the first key in the database. The m4_refT(nextkey) will return the next
+key in the database.])
+
+m4_p([dnl
+The following code will traverse the database:])
+
+m4_indent([dnl
+for (key = firstkey();
+ key.dptr != NULL; key = nextkey(key)) {
+ ...
+}])
+
+m4_section([Ndbm Functions])
+m4_p([dnl
+Before a database can be accessed, it must be opened by m4_ref(dbm_open).
+This will open and/or create the database file m4_bold(file.db), depending
+on the flags parameter (see m4_manref(open, 2)). If created, the database
+file is created with mode m4_arg(mode) (as described in m4_manref(chmod,
+2)) and modified by the process' umask value at the time of creation (see
+m4_manref(umask, 2)). The group ownership of created files is based on
+the system and directory defaults, and is not further specified by
+m4_db.])
+
+m4_p([dnl
+Once open, the data stored under a key is accessed by m4_ref(dbm_fetch),
+and data is placed under a key by m4_ref(dbm_store). The m4_arg(flags)
+field can be either m4_arg(DBM_INSERT) or m4_arg(DBM_REPLACE).
+m4_arg(DBM_INSERT) will only insert new entries into the database, and will
+not change an existing entry with the same key. m4_arg(DBM_REPLACE) will
+replace an existing entry if it has the same key. A key (and its
+associated contents) are deleted by m4_ref(dbm_delete). A linear pass
+through all keys in a database may be made, in an (apparently) random
+order, by using m4_ref(dbm_firstkey) and m4_ref(dbm_nextkey). The
+m4_refT(dbm_firstkey) will return the first key in the database. The
+m4_refT(dbm_nextkey) will return the next key in the database.])
+
+m4_p([dnl
+The following code will traverse the database:])
+
+m4_indent([dnl
+for (key = dbm_firstkey(db);
+ key.dptr != NULL; key = dbm_nextkey(db)) {
+ ...
+}])
+
+m4_section([Compatibility Notes])
+m4_p([dnl
+The historic m4_ref(dbm) library created two underlying database files,
+traditionally named m4_bold(file.dir) and m4_bold(file.pag). The m4_db
+library creates a single database file named m4_bold(file.db).
+Applications that are aware of the underlying database filenames may
+require additional source code modifications.])
+
+m4_p([dnl
+The historic m4_ref(dbminit) function required that the underlying
+m4_bold(.dir) and m4_bold(.pag) files already exist (empty databases were
+created by first manually creating zero-length m4_bold(.dir) and
+m4_bold(.pag) files). Applications that expect to create databases using
+this method may require additional source code modifications.])
+
+m4_p([dnl
+The historic m4_ref(dbm_dirfno) and m4_ref(dbm_pagfno) macros are
+supported, but will return identical file descriptors because there is
+only a single underlying file used by the m4_db hashing access method.
+Applications using both file descriptors for locking may require
+additional source code modifications.])
+
+m4_p([dnl
+If applications using the m4_ref(dbm) function exits without first
+closing the database, it may lose updates because the m4_db library
+buffers writes to underlying databases. Such applications will require
+additional source code modifications to work correctly with the m4_db
+library.])
+
+define(m4_dbm_rd, [m4_p([dnl
+The m4_ref($1) function sets the m4_arg(dptr) field of the returned
+m4_arg(datum) to NULL on failure, setting m4_envvar(errno),
+and returns a non-NULL m4_arg(dptr) on success.])])
+define(m4_dbm_re, [m4_p([dnl
+The m4_ref($1) function returns -1 on failure, setting m4_envvar(errno),
+and 0 on success.])])
+define(m4_dbm_rf, [m4_p([dnl
+The m4_ref($1) function returns -1 on failure, setting m4_envvar(errno),
+0 on success, and 1 if DBM_INSERT was set and the specified key already
+existed in the database.])])
+define(m4_dbm_rn, [m4_p([dnl
+The m4_ref($1) function returns NULL on failure, setting m4_envvar(errno),
+and a DBM reference on success.])])
+
+m4_section([Dbm Diagnostics])
+m4_dbm_re(dbminit)
+m4_dbm_rd(fetch)
+m4_dbm_re(store)
+m4_dbm_re(delete)
+m4_dbm_rd(firstkey)
+m4_dbm_rd(nextkey)
+
+m4_header(Errors)
+m4_p([dnl
+The dbminit, fetch, store, delete, firstkey, and nextkey functions may
+fail and return an error for errors specified for other m4_db and C
+library or system functions.])
+
+m4_section([Ndbm Diagnostics])
+m4_p([dnl
+The m4_refT(dbm_error) returns non-zero when an error has occurred reading or
+writing the database.])
+m4_p([dnl
+The m4_refT(dbm_clearerr) resets the error condition on the named database.])
+m4_dbm_rn(dbm_open)
+m4_dbm_rd(dbm_fetch)
+m4_dbm_rf(dbm_store)
+m4_dbm_re(dbm_delete)
+m4_dbm_rd(dbm_firstkey)
+m4_dbm_rd(dbm_nextkey)
+m4_dbm_re(dbm_error)
+m4_dbm_re(dbm_clearerr)
+
+m4_header(Errors)
+m4_p([dnl
+The dbm_open, dbm_close, dbm_fetch, dbm_store, dbm_delete, dbm_firstkey,
+and dbm_nextkey functions may fail and return an error for errors
+specified for other m4_db and C library or system functions.])
+
+m4_page_footer
diff --git a/db/docs_src/historic/hsearch.so b/db/docs_src/historic/hsearch.so
new file mode 100644
index 000000000..3d4e2e30b
--- /dev/null
+++ b/db/docs_src/historic/hsearch.so
@@ -0,0 +1,106 @@
+m4_comment([$Id: hsearch.so,v 10.28 2004/09/28 15:04:20 bostic Exp $])
+
+define(M4PAGELOCAL, [hcreate, hsearch])
+
+m4_pf_header(hsearch,
+ifelse(M4API, C_API, [dnl
+typedef enum {
+ [FIND, ENTER]
+} ACTION;
+m4_blank
+typedef struct entry {
+ char *key;
+ void *data;
+} ENTRY;
+m4_blank
+ENTRY *
+hsearch(ENTRY item, ACTION action);
+m4_blank
+int
+hcreate(size_t nelem);
+m4_blank
+void
+hdestroy(void);
+]), [#define DB_DBM_HSEARCH 1])
+
+m4_p([dnl
+The m4_ref(hsearch) functions are intended to provide a high-performance
+implementation and source code compatibility for applications written
+to the historic hsearch interface. It is not recommended for any other
+purpose.])
+
+m4_p([dnl
+To compile m4_ref(hsearch) applications, replace the application's
+m4_bold([#include]) of the hsearch include
+file (for example, m4_bold([m4_include(search.h)]))
+with the following two lines:])
+
+m4_indent([dnl
+#define DB_DBM_HSEARCH 1
+m4_include(db.h)])
+
+m4_p([and recompile.])
+
+m4_p([dnl
+The m4_ref(hcreate) function creates an in-memory database. The
+m4_arg(nelem) parameter is an estimation of the maximum number of key/data
+pairs that will be stored in the database.])
+
+m4_p([dnl
+The m4_arg(hdestroy) function discards the database.])
+
+m4_p([dnl
+Database elements are structures of type m4_bold(ENTRY), which contain at
+least two fields: m4_arg(key) and m4_arg(data). The field m4_arg(key) is
+declared to be of type m4_bold([char *]), and is the key used for storage
+and retrieval. The field m4_arg(data) is declared to be of type
+m4_bold([void *]), and is its associated data.])
+
+m4_p([dnl
+The m4_ref(hsearch) function retrieves key/data pairs from, and stores
+key/data pairs into the database.])
+
+m4_p([dnl
+The m4_arg(action) parameter must be set to one of two values:])
+
+m4_tagbegin
+m4_tag(ENTER, [dnl
+If the key does not already appear in the database, insert the key/data
+pair into the database. If the key already appears in the database,
+return a reference to an m4_arg(ENTRY) structure which refers to the
+existing key and its associated data element.])
+
+m4_tag(FIND, [dnl
+Retrieve the specified key/data pair from the database.])
+m4_tagend
+
+m4_section([Compatibility Notes])
+m4_p([dnl
+Historically, m4_ref(hsearch) required applications to maintain the keys
+and data in the application's memory for as long as the m4_arg(hsearch)
+database existed. Because m4_db handles key and data management
+internally, there is no requirement that applications maintain local
+copies of key and data items, although the only effect of doing so
+should be the allocation of additional memory.])
+
+m4_section([Hsearch Diagnostics])
+m4_p([dnl
+The m4_arg(hcreate) function returns 0 on failure, setting
+m4_envvar(errno), and non-zero on success.])
+
+m4_p([dnl
+The m4_arg(hsearch) function returns a pointer to an ENTRY structure on
+success, and NULL, setting m4_envvar(errno), if the m4_arg(action)
+specified was FIND and the item did not appear in the database.])
+
+m4_header(Errors)
+m4_p([dnl
+The m4_arg(hsearch) function will fail, setting m4_envvar(errno) to 0,
+if the m4_arg(action) specified was FIND and the item did not appear in
+the database.])
+m4_p([dnl
+In addition, the hcreate, hsearch and hdestroy functions may fail and
+return an error for errors specified for other m4_db and C library or
+system functions.])
+
+m4_page_footer
diff --git a/db/docs_src/images/api.gif b/db/docs_src/images/api.gif
new file mode 100644
index 000000000..dafd5772a
--- /dev/null
+++ b/db/docs_src/images/api.gif
Binary files differ
diff --git a/db/docs_src/images/next.gif b/db/docs_src/images/next.gif
new file mode 100644
index 000000000..667ee061a
--- /dev/null
+++ b/db/docs_src/images/next.gif
Binary files differ
diff --git a/db/docs_src/images/prev.gif b/db/docs_src/images/prev.gif
new file mode 100644
index 000000000..11dfc5256
--- /dev/null
+++ b/db/docs_src/images/prev.gif
Binary files differ
diff --git a/db/docs_src/images/ps.gif b/db/docs_src/images/ps.gif
new file mode 100644
index 000000000..0f565bc1d
--- /dev/null
+++ b/db/docs_src/images/ps.gif
Binary files differ
diff --git a/db/docs_src/images/ref.gif b/db/docs_src/images/ref.gif
new file mode 100644
index 000000000..75be9c1f3
--- /dev/null
+++ b/db/docs_src/images/ref.gif
Binary files differ
diff --git a/db/docs_src/index_db.html b/db/docs_src/index_db.html
new file mode 100644
index 000000000..2e0bcc59a
--- /dev/null
+++ b/db/docs_src/index_db.html
@@ -0,0 +1,227 @@
+<!--$Id: index_db.html,v 1.99 2007/07/12 17:17:57 bostic Exp $-->
+<html>
+<head>
+<title>Berkeley DB (Version: DB_VERSION_MAJOR.DB_VERSION_MINOR.DB_VERSION_PATCH)</title>
+<style type="text/css">
+ body {width: 75%;}
+ p {Color:#000000;Font-Family:Arial, Helvetica;Font-Size:9pt; }
+ li {Color:#000000;Font-Family:Arial, Helvetica;Font-Size:9pt; }
+ td {Color:#000000;Font-Family:Arial, Helvetica;Font-Size:9pt; width: 50%;}
+ a:visited {Color:gray;}
+ a:link {Color:#000000;}
+</style>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
+</head>
+<body bgcolor=white>
+
+<!-- REMOVE EVERYTHING ABOVE THIS LINE TO POST TO ORACLE OTN -->
+
+<center>
+<h2>Oracle Berkeley DB</h2>
+<b>
+Version DB_VERSION_MAJOR.DB_VERSION_MINOR.DB_VERSION_PATCH, DB_RELEASE_DATE
+</b>
+</center>
+
+<p>
+<b>Getting Started Guides</b><br>
+Get started with Berkeley DB today. If you are new to Berkeley DB, the
+following documents will help you learn about important concepts and
+guide you through how to get started.
+<p>
+Getting Started with Data Storage
+<ul>
+<table>
+<tr>
+<td>
+<li>C</li>
+</td>
+<td>
+<a href="gsg/C/BerkeleyDB-Core-C-GSG.pdf">PDF</a>&nbsp;|&nbsp;<a href="gsg/C/index.html">HTML</a>
+</td>
+</tr>
+<tr>
+<td>
+<li>C++</li>
+</td>
+<td>
+<a href="gsg/CXX/BerkeleyDB-Core-Cxx-GSG.pdf">PDF</a>&nbsp;|&nbsp;<a href="gsg/CXX/index.html">HTML</a>
+</td>
+</tr>
+<tr>
+<td>
+<li>Java</li>
+</td>
+<td>
+<a href="gsg/JAVA/BerkeleyDB-Core-JAVA-GSG.pdf">PDF</a>&nbsp;|&nbsp;<a href="gsg/JAVA/index.html">HTML</a>
+</td>
+</tr>
+</table>
+</ul>
+
+<p>
+Getting Started with Transaction Processing
+<ul>
+<table>
+<tr>
+<td>
+<li>C</li>
+</td>
+<td>
+<a href="gsg_txn/C/BerkeleyDB-Core-C-Txn.pdf">PDF</a>&nbsp;|&nbsp;<a href="gsg_txn/C/index.html">HTML</a>
+</td>
+</tr>
+<tr>
+<td>
+<li>C++</li>
+</td>
+<td>
+<a href="gsg_txn/CXX/BerkeleyDB-Core-Cxx-Txn.pdf">PDF</a>&nbsp;|&nbsp;<a href="gsg_txn/CXX/index.html">HTML</a>
+</td>
+</tr>
+<tr>
+<td>
+<li>Java</li>
+</td>
+<td>
+<a href="gsg_txn/JAVA/BerkeleyDB-Core-JAVA-Txn.pdf">PDF</a>&nbsp;|&nbsp;<a href="gsg_txn/JAVA/index.html">HTML</a>
+</td>
+</tr>
+</table>
+</ul>
+
+<p>
+Getting Started with Transactional Java Collections
+<ul>
+<table>
+<tr>
+<td>
+<li>Tutorial</li>
+</td>
+<td>
+<a href="collections/tutorial/BerkeleyDB-Java-Collections.pdf">PDF</a>&nbsp;|&nbsp;<a href="collections/tutorial/index.html">HTML</a>
+</td>
+</tr>
+</table>
+</ul>
+
+<p>
+Getting Started with Replication
+<ul>
+<table>
+<tr>
+<td>
+<li>C</li>
+</td>
+<td>
+<a href="gsg_db_rep/C/Replication-C-GSG.pdf">PDF</a>&nbsp;|&nbsp;<a href="gsg_db_rep/C/index.html">HTML</a>
+</td>
+</tr>
+<tr>
+<td>
+<li>C++</li>
+</td>
+<td>
+<a href="gsg_db_rep/CXX/Replication-CXX-GSG.pdf">PDF</a>&nbsp;|&nbsp;<a href="gsg_db_rep/CXX/index.html">HTML</a>
+</td>
+</tr>
+<tr>
+<td>
+<li>Java</li>
+</td>
+<td>
+<a href="gsg_db_rep/JAVA/Replication-JAVA-GSG.pdf">PDF</a>&nbsp;|&nbsp;<a href="gsg_db_rep/JAVA/index.html">HTML</a>
+</td>
+</tr>
+</table>
+</ul>
+
+<p>
+<b>References</b><br>
+The programmatic reference guide provides detailed information to help
+you during application design and implementation. This definitive
+reference document is organized by concept, rather than by API.
+<ul>
+<li><a href="ref/toc.html">Reference Guide for Berkeley DB</a>
+</ul>
+
+<p>
+<b>Programmatic APIs</b><br>
+These fully-detailed references cover every public interface for
+Berkeley DB. For each interface, the documentation lists arguments and
+return values, and covers pre- and post-conditions.
+<ul>
+<li><a href="api_c/frame.html">C</a></li>
+<li><a href="api_cxx/frame.html">C++</a></li>
+<li><a href="java/index.html">Javadoc</a></li>
+<li><a href="api_tcl/api_tcl.html">Tcl</a></li>
+</ul>
+
+<p>
+<b>Build, Installation, and Upgrading Guides</b><br>
+These guides contain helpful hints, step-by-step instructions, and
+information on platform-specific details of the build, installation, and
+upgrade processes.
+<ul>
+<li><a href="ref/build_brew/intro.html">BREW</a></li>
+<li><a href="ref/build_s60/intro.html">S60</a></li>
+<li><a href="ref/build_unix/intro.html">UNIX/POSIX</a></li>
+<li><a href="ref/build_vxworks/intro.html">VxWorks</a></li>
+<li><a href="ref/build_win/intro.html">Windows</a></li>
+<li><a href="ref/build_wince/intro.html">Windows CE</a></li>
+<p>
+<li><a href="ref/changelog/4.6.html">Berkeley DB 4.6 Change Log</a></li>
+<li><a href="ref/upgrade.4.6/toc.html">Upgrading Applications to the 4.6 release</a></li>
+<p>
+<li><a href="http://www.oracle.com/technology/software/products/berkeley-db/db/index.html">Berkeley DB Release History and Patches</a></li>
+</ul>
+
+<p>
+<b>Additional Booklets</b><br>
+<ul>
+<table>
+<tr>
+<td>
+<li>Writing In-Memory Berkeley DB Applications</li>
+</td>
+<td>
+<a href="articles/inmemory/C/InMemoryDBApplication.pdf">PDF</a>&nbsp;|&nbsp;<a href="articles/inmemory/C/index.html">HTML</a>
+</td>
+</tr>
+</table>
+</ul>
+
+<p>
+<b>Additional Information</b><br>
+<ul>
+<li><a href="utility/index.html">Standalone utilities</a></li>
+<li><a href="http://www.oracle.com/technology/products/berkeley-db/faq/db_faq.html">Berkeley DB FAQ</a></li>
+<p>
+<li><a href="http://forums.oracle.com/forums/forum.jspa?forumID=271">Oracle Technology Support Forums -- Berkeley DB</a></li>
+<li><a href="http://forums.oracle.com/forums/forum.jspa?forumID=272">Oracle Technology Support Forums -- Berkeley DB High Availability (Replication)</a></li>
+<p>
+<li><a href="license/license_db.html">Berkeley DB License</a></li>
+</ul>
+
+<!-- REMOVE EVERYTHING BELOW THIS LINE TO POST TO ORACLE OTN -->
+
+<p>
+<hr size=1 noshade>
+
+<p>
+Berkeley DB releases optionally include strong cryptographic
+support; this release <b>DOES</b> contain cryptographic support.
+Export/import and/or use of cryptography software, or even
+communicating technical details about cryptography software, is
+illegal in some parts of the world. You are strongly advised to
+pay close attention to any export/import and/or use laws which
+apply to you when you import a release of Berkeley DB including
+cryptography to your country or re-distribute source code from
+it in any way.
+
+<p>
+Copyright (c) 1997,2007 Oracle. All rights reserved.
+
+</body>
+</html>
diff --git a/db/docs_src/license/license_db.so b/db/docs_src/license/license_db.so
new file mode 100644
index 000000000..2c22d759f
--- /dev/null
+++ b/db/docs_src/license/license_db.so
@@ -0,0 +1,15 @@
+m4_comment([$Id: license_db.so,v 10.18 2006/10/05 20:52:51 bostic Exp $])
+
+m4_page_title([m4_db Product License])
+
+m4_p([dnl
+The license that applies to this copy of the m4_db software may be found
+in the "LICENSE" file included in each m4_db distribution.])
+
+m4_p([dnl
+For a license to use the m4_db software under conditions other than
+those described in the "LICENSE" file, or to purchase support for this
+software, please send email to
+m4_mailto(berkeleydb-info_us@oracle.com, berkeleydb-info_us@oracle.com).])
+
+m4_page_footer
diff --git a/db/docs_src/lock/deadlock_class.so b/db/docs_src/lock/deadlock_class.so
new file mode 100644
index 000000000..758eb6d72
--- /dev/null
+++ b/db/docs_src/lock/deadlock_class.so
@@ -0,0 +1,27 @@
+m4_comment([$Id: deadlock_class.so,v 10.17 2004/08/13 03:38:57 bostic Exp $])
+
+define(M4PAGELOCAL, DbDeadlockException)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(DbDeadlockException),
+ifelse(M4API, C_API, [dnl
+])
+ifelse(M4API, CXX_API, [dnl
+class DbDeadlockException : public DbException { ... };
+]))
+
+m4_p([dnl
+This information describes the m4_ref(DbDeadlockException) class and how
+it is used in the m4_db library.])
+
+m4_p([dnl
+A m4_ref(DbDeadlockException) is thrown when multiple threads competing
+for a lock are deadlocked, when a lock request has timed out, or when a
+lock request would need to block and the transaction has been configured
+to not wait for locks. One of the threads' transactions is selected for
+termination, and a m4_ref(DbDeadlockException) is thrown to that thread.])
+
+m4_p([dnl
+The m4_ref(DbException) errno value is set to DB_LOCK_DEADLOCK.])
+
+m4_page_footer
diff --git a/db/docs_src/lock/env_cdsgroup_begin.so b/db/docs_src/lock/env_cdsgroup_begin.so
new file mode 100644
index 000000000..017f1bb19
--- /dev/null
+++ b/db/docs_src/lock/env_cdsgroup_begin.so
@@ -0,0 +1,35 @@
+m4_comment([$Id: env_cdsgroup_begin.so,v 1.2 2006/08/24 19:02:06 bostic Exp $])
+
+define(M4PAGELOCAL, [cdsgroup_begin])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(cdsgroup_begin),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__cdsgroup_begin(DB_ENV *dbenv, DB_TXN **tid);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::cdsgroup_begin(DbTxn **tid);
+]))
+
+m4_p([dnl
+The m4_ref(cdsgroup_begin) method allocates a locker ID in an
+environment configured for m4_cam applications. It copies a pointer to
+a m4_ref(DbTxn) that uniquely identifies the locker ID into the memory
+to which m4_arg(tid) refers. Calling the m4_refT(txn_commit) will
+discard the allocated locker ID.])
+
+m4_p([dnl
+See m4_link(M4RELDIR/ref/cam/intro, [m4_cam applications]) for more
+information about when this is required.])
+
+m4_when_any(cdsgroup_begin)
+
+m4_return(cdsgroup_begin, std)
+
+m4_err(cdsgroup_begin, memory,
+[maximum number of lockers has been reached])
+
+m4_seealso(DbTxn)
+m4_page_footer
diff --git a/db/docs_src/lock/env_set_lk_conflicts.so b/db/docs_src/lock/env_set_lk_conflicts.so
new file mode 100644
index 000000000..8fc90f488
--- /dev/null
+++ b/db/docs_src/lock/env_set_lk_conflicts.so
@@ -0,0 +1,69 @@
+m4_comment([$Id: env_set_lk_conflicts.so,v 10.43 2004/09/28 15:04:20 bostic Exp $])
+
+define(M4PAGELOCAL, [dbenv_set_lk_conflicts, dbenv_get_lk_conflicts])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbenv_set_lk_conflicts),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__set_lk_conflicts(DB_ENV *dbenv,
+ u_int8_t *conflicts, int nmodes);
+m4_blank
+int
+DB_ENV-__GT__get_lk_conflicts(DB_ENV *dbenv,
+ const u_int8_t **lk_conflictsp, int *lk_modesp);
+])dnl
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::set_lk_conflicts(u_int8_t *conflicts, int nmodes);
+m4_blank
+int
+DbEnv::get_lk_conflicts(const u_int8_t **lk_conflictsp, int *lk_modesp);
+]))
+
+m4_p([dnl
+Set the locking conflicts matrix.])
+
+m4_p([dnl
+If m4_ref(dbenv_set_lk_conflicts) is never called, a standard conflicts
+array is used; see m4_link(M4RELDIR/ref/lock/stdmode, [Standard Lock
+Modes]) for more information.])
+
+m4_scope_env(dbenv_set_lk_conflicts)
+
+m4_when_envopen(dbenv_set_lk_conflicts, ignored)
+
+m4_return(dbenv_set_lk_conflicts, std)
+
+m4_parambegin
+m4_param(conflicts, [dnl
+The m4_arg(conflicts) parameter is the new locking conflicts matrix.
+The m4_arg(conflicts) parameter is an m4_arg(nmodes) by m4_arg(nmodes)
+array. A non-0 value for the array element indicates that
+requested_mode and held_mode conflict:
+m4_indent([conflicts__LB__requested_mode__RB____LB__held_mode__RB__])
+m4_p([dnl
+The m4_italic(not-granted) mode must be represented by 0.])])
+m4_param(nmodes, [dnl
+The m4_arg(nmodes) parameter is the size of the lock conflicts matrix.])
+m4_paramend
+
+m4_err(dbenv_set_lk_conflicts,
+einval, [the method was called after m4_ref(dbenv_open) was called],
+memory, [conflicts array could not be copied])
+
+m4_pf_description(dbenv_get_lk_conflicts)
+m4_p([dnl
+The m4_refT(dbenv_get_lk_conflicts) returns the current conflicts array.])
+
+m4_when_any(dbenv_get_lk_conflicts)
+
+m4_return(dbenv_get_lk_conflicts, std)
+
+m4_parambegin
+m4_param_co(lk_conflictsp, current conflicts array, REF)
+m4_param_co(lk_modesp, size of the current conflicts array)
+m4_paramend
+
+m4_seealso(DbLock)
+m4_page_footer
diff --git a/db/docs_src/lock/env_set_lk_detect.so b/db/docs_src/lock/env_set_lk_detect.so
new file mode 100644
index 000000000..3871b3de2
--- /dev/null
+++ b/db/docs_src/lock/env_set_lk_detect.so
@@ -0,0 +1,53 @@
+m4_comment([$Id: env_set_lk_detect.so,v 10.50 2006/02/27 14:51:30 bostic Exp $])
+
+define(M4PAGELOCAL, [dbenv_set_lk_detect, dbenv_get_lk_detect, DB_LOCK_EXPIRE])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbenv_set_lk_detect),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__set_lk_detect(DB_ENV *dbenv, u_int32_t detect);
+m4_blank
+int
+DB_ENV-__GT__get_lk_detect(DB_ENV *dbenv, u_int32_t *lk_detectp);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::set_lk_detect(u_int32_t detect);
+m4_blank
+int
+DbEnv::get_lk_detect(u_int32_t *lk_detectp);
+]))
+
+m4_p([dnl
+Set if the deadlock detector is to be run whenever a lock conflict
+occurs, and specify what lock request(s) should be rejected. As
+transactions acquire locks on behalf of a single locker ID, rejecting a
+lock request associated with a transaction normally requires the
+transaction be aborted.])
+
+m4_env_config(dbenv_set_lk_detect,
+[deadlock detector configuration], set_lk_detect, [dnl
+the method m4_arg(detect) parameter as a string; for example,
+"set_lk_detect DB_LOCK_OLDEST"])
+
+m4_scope_env(dbenv_set_lk_detect)
+
+m4_when_any(dbenv_set_lk_detect)
+
+m4_return(dbenv_set_lk_detect, std)
+
+m4_parambegin
+m4_param(detect, [dnl
+The m4_arg(detect) parameter configures the deadlock detector. The
+specified value must be one of the following list:
+
+m4_lk_detect_flags])
+m4_paramend
+
+m4_err(dbenv_set_lk_detect, einval)
+
+m4_pf_getter(dbenv_get_lk_detect, deadlock detector configuration,, lk_detectp)
+
+m4_seealso(DbLock)
+m4_page_footer
diff --git a/db/docs_src/lock/env_set_lk_max_lockers.so b/db/docs_src/lock/env_set_lk_max_lockers.so
new file mode 100644
index 000000000..8944794d0
--- /dev/null
+++ b/db/docs_src/lock/env_set_lk_max_lockers.so
@@ -0,0 +1,51 @@
+m4_comment([$Id: env_set_lk_max_lockers.so,v 1.23 2004/09/28 15:04:20 bostic Exp $])
+
+define(M4PAGELOCAL, [dbenv_set_lk_max_lockers, dbenv_get_lk_max_lockers])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbenv_set_lk_max_lockers),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__set_lk_max_lockers(DB_ENV *dbenv, u_int32_t max);
+m4_blank
+int
+DB_ENV-__GT__get_lk_max_lockers(DB_ENV *dbenv, u_int32_t *lk_maxp);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::set_lk_max_lockers(u_int32_t max);
+m4_blank
+int
+DbEnv::get_lk_max_lockers(u_int32_t *, lk_maxp);
+]))
+
+m4_p([dnl
+Set the maximum number of locking entities supported by the m4_db
+environment. This value is used by m4_ref(dbenv_open) to estimate how
+much space to allocate for various lock-table data structures. The
+default value is 1000 lockers. For specific information on configuring
+the size of the lock subsystem, see m4_link(M4RELDIR/ref/lock/max,
+Configuring locking: sizing the system).])
+
+m4_env_config(dbenv_set_lk_max_lockers,
+[maximum number of lockers], set_lk_max_lockers, [the number of lockers])
+
+m4_scope_env(dbenv_set_lk_max_lockers)
+
+m4_when_envopen(dbenv_set_lk_max_lockers, ignored)
+
+m4_return(dbenv_set_lk_max_lockers, std)
+
+m4_parambegin
+m4_param(max, [dnl
+The m4_arg(max) parameter is the maximum number simultaneous locking
+entities supported by the m4_db environment.])
+m4_paramend
+
+m4_err(dbenv_set_lk_max_lockers,
+einval, [the method was called after m4_ref(dbenv_open) was called])
+
+m4_pf_getter(dbenv_get_lk_max_lockers, maximum number of lockers,, lk_maxp)
+
+m4_seealso(DbLock)
+m4_page_footer
diff --git a/db/docs_src/lock/env_set_lk_max_locks.so b/db/docs_src/lock/env_set_lk_max_locks.so
new file mode 100644
index 000000000..9b6266105
--- /dev/null
+++ b/db/docs_src/lock/env_set_lk_max_locks.so
@@ -0,0 +1,51 @@
+m4_comment([$Id: env_set_lk_max_locks.so,v 10.23 2004/09/28 15:04:20 bostic Exp $])
+
+define(M4PAGELOCAL, [dbenv_set_lk_max_locks, dbenv_get_lk_max_locks])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbenv_set_lk_max_locks),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__set_lk_max_locks(DB_ENV *dbenv, u_int32_t max);
+m4_blank
+int
+DB_ENV-__GT__get_lk_max_locks(DB_ENV *dbenv, u_int32_t *lk_maxp);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::set_lk_max_locks(u_int32_t max);
+m4_blank
+int
+DbEnv::get_lk_max_locks(u_int32_t *lk_maxp);
+]))
+
+m4_p([dnl
+Set the maximum number of locks supported by the m4_db environment.
+This value is used by m4_ref(dbenv_open) to estimate how much space to
+allocate for various lock-table data structures. The default value is
+1000 locks. For specific information on configuring the size of the lock
+subsystem, see m4_link(M4RELDIR/ref/lock/max, Configuring locking:
+sizing the system).])
+
+m4_env_config(dbenv_set_lk_max_locks,
+[maximum number of locks], set_lk_max_locks, [the number of locks])
+
+m4_scope_env(dbenv_set_lk_max_locks)
+
+m4_when_envopen(dbenv_set_lk_max_locks, ignored)
+
+m4_return(dbenv_set_lk_max_locks, std)
+
+m4_parambegin
+m4_param(max, [dnl
+The m4_arg(max) parameter is the maximum number of locks supported by
+the m4_db environment.])
+m4_paramend
+
+m4_err(dbenv_set_lk_max_locks,
+einval, [the method was called after m4_ref(dbenv_open) was called])
+
+m4_pf_getter(dbenv_get_lk_max_locks, maximum number of locks,, lk_maxp)
+
+m4_seealso(DbLock)
+m4_page_footer
diff --git a/db/docs_src/lock/env_set_lk_max_objects.so b/db/docs_src/lock/env_set_lk_max_objects.so
new file mode 100644
index 000000000..c37c99b17
--- /dev/null
+++ b/db/docs_src/lock/env_set_lk_max_objects.so
@@ -0,0 +1,52 @@
+m4_comment([$Id: env_set_lk_max_objects.so,v 1.23 2004/09/28 15:04:20 bostic Exp $])
+
+define(M4PAGELOCAL, [dbenv_set_lk_max_objects, dbenv_get_lk_max_objects])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbenv_set_lk_max_objects),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__set_lk_max_objects(DB_ENV *dbenv, u_int32_t max);
+m4_blank
+int
+DB_ENV-__GT__get_lk_max_objects(DB_ENV *dbenv, u_int32_t *lk_maxp);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::set_lk_max_objects(u_int32_t max);
+m4_blank
+int
+DbEnv::get_lk_max_objects(u_int32_t *lk_maxp);
+]))
+
+m4_p([dnl
+Set the maximum number of locked objects supported by the m4_db
+environment. This value is used by m4_ref(dbenv_open) to estimate how
+much space to allocate for various lock-table data structures. The
+default value is 1000 objects. For specific information on configuring
+the size of the lock subsystem, see m4_link(M4RELDIR/ref/lock/max,
+Configuring locking: sizing the system).])
+
+m4_env_config(dbenv_set_lk_max_objects,
+[maximum number of objects], set_lk_max_objects, [the number of objects])
+
+m4_scope_env(dbenv_set_lk_max_objects)
+
+m4_when_envopen(dbenv_set_lk_max_objects, ignored)
+
+m4_return(dbenv_set_lk_max_objects, std)
+
+m4_parambegin
+m4_param(max, [dnl
+The m4_arg(max) parameter is the maximum number of locked objects
+supported by the m4_db environment.])
+m4_paramend
+
+m4_err(dbenv_set_lk_max_objects,
+einval, [the method was called after m4_ref(dbenv_open) was called])
+
+m4_pf_getter(dbenv_get_lk_max_objects,
+maximum number of locked objects,, lk_maxp)
+
+m4_seealso(DbLock)
+m4_page_footer
diff --git a/db/docs_src/lock/lock_class.so b/db/docs_src/lock/lock_class.so
new file mode 100644
index 000000000..39b84e8bf
--- /dev/null
+++ b/db/docs_src/lock/lock_class.so
@@ -0,0 +1,26 @@
+m4_comment([$Id: lock_class.so,v 10.21 2004/08/13 03:38:57 bostic Exp $])
+
+define(M4PAGELOCAL, DbLock)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(DbLock),
+ifelse(M4API, C_API, [dnl
+typedef struct __db_lock_u DB_LOCK;
+])
+ifelse(M4API, CXX_API, [dnl
+class DbLock {
+public:
+ DbLock();
+ DbLock(const DbLock &);
+ DbLock &operator = (const DbLock &);
+ ~DbLock();
+};
+]))
+
+m4_p([dnl
+The locking interfaces for the m4_db database environment are methods
+of the m4_ref(DbEnv) handle. The m4_ref(DbLock) object is the handle
+for a single lock, and has no methods of its own.])
+
+m4_seealso(DbLock)
+m4_page_footer
diff --git a/db/docs_src/lock/lock_detect.so b/db/docs_src/lock/lock_detect.so
new file mode 100644
index 000000000..a0389b471
--- /dev/null
+++ b/db/docs_src/lock/lock_detect.so
@@ -0,0 +1,44 @@
+m4_comment([$Id: lock_detect.so,v 10.50 2006/12/13 17:57:23 bostic Exp $])
+
+define(M4PAGELOCAL, lock_detect)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(lock_detect),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__lock_detect(DB_ENV *env,
+ u_int32_t flags, u_int32_t atype, int *rejected);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::lock_detect(u_int32_t flags, u_int32_t atype, int *rejected);
+]))
+
+m4_p([dnl
+The m4_refT(lock_detect) runs one iteration of the deadlock detector.
+The deadlock detector traverses the lock table and marks one of the
+participating lock requesters for rejection in each deadlock it finds.])
+
+m4_underfunc(lock_detect, lock_detect, db_deadlock)
+
+m4_return(lock_detect, std)
+
+m4_parambegin
+m4_param(rejected, [dnl
+If the m4_arg(rejected) parameter is non-NULL, the memory location to
+which it refers will be set to the number of lock requests that were
+rejected.])
+
+m4_param(atype, [dnl
+The m4_arg(atype) parameter specifies which lock request(s) to reject.
+It must be set to one of the following list:
+
+m4_lk_detect_flags])
+
+m4_unusedflags
+m4_paramend
+
+m4_err(lock_detect, einval)
+
+m4_seealso(DbLock)
+m4_page_footer
diff --git a/db/docs_src/lock/lock_get.so b/db/docs_src/lock/lock_get.so
new file mode 100644
index 000000000..286ac731f
--- /dev/null
+++ b/db/docs_src/lock/lock_get.so
@@ -0,0 +1,78 @@
+m4_comment([$Id: lock_get.so,v 10.53 2004/08/13 03:38:57 bostic Exp $])
+
+define(M4PAGELOCAL, lock_get)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(lock_get),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__lock_get(DB_ENV *env, u_int32_t locker,
+ u_int32_t flags, const DBT *object,
+ const db_lockmode_t lock_mode, DB_LOCK *lock);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::lock_get(u_int32_t locker, u_int32_t flags,
+ const Dbt *object, const db_lockmode_t lock_mode, DbLock *lock);
+]))
+
+m4_p([dnl
+The m4_refT(lock_get) acquires a lock from the lock table, returning
+information about it in the m4_arg(lock) parameter.])
+
+m4_return(lock_get, std)
+
+m4_parambegin
+m4_param(flags, [dnl
+m4_sf_zmust(0)
+
+m4_tagbegin
+m4_tag(m4_idef(DB_LOCK_NOWAIT), [dnl
+If a lock cannot be granted because the requested lock conflicts with an
+existing lock,
+ifelse(M4API, C_API, [dnl
+return DB_LOCK_NOTGRANTED immediately instead of waiting
+for the lock to become available.])
+ifelse(M4API, CXX_API, [dnl
+return DB_LOCK_NOTGRANTED or throw a
+m4_ref(DbLockNotGrantedException) immediately instead of waiting for
+the lock to become available.])])
+m4_tagend])
+
+m4_param(lock_mode, [dnl
+The m4_arg(lock_mode) parameter is used as an index into the environment's
+lock conflict matrix. When using the default lock conflict matrix,
+m4_arg(lock_mode) must be set to one of the following values:
+m4_tagbegin
+m4_tagns(DB_LOCK_READ, [read (shared)])
+m4_tagns(DB_LOCK_WRITE, [write (exclusive)])
+m4_tagns(DB_LOCK_IWRITE, [intention to write (shared)])
+m4_tagns(DB_LOCK_IREAD, [intention to read (shared)])
+m4_tagns(DB_LOCK_IWR, [intention to read and write (shared)])
+m4_tagend
+m4_p([dnl
+See m4_ref(dbenv_set_lk_conflicts) and m4_link(M4RELDIR/ref/lock/stdmode,
+[Standard Lock Modes]) for more information on the lock conflict matrix.])])
+
+m4_param(locker, [dnl
+The m4_arg(locker) parameter is an unsigned 32-bit integer quantity. It
+represents the entity requesting the lock.])
+
+m4_param(object, [dnl
+The m4_arg(object) parameter is an untyped byte string that specifies the
+object to be locked. Applications using the locking subsystem directly
+while also doing locking via the m4_db access methods must take care not
+to inadvertently lock objects that happen to be equal to the unique file
+IDs used to lock files. See
+m4_link(M4RELDIR/ref/lock/am_conv, [Access method locking conventions])
+for more information.])
+
+m4_paramend
+
+m4_err(lock_get, deadlock, locknotgranted,
+[m4_ref(DB_LOCK_NOWAIT) flag or lock timers were configured and the],
+einval,,
+memory, [maximum number of locks has been reached])
+
+m4_seealso(DbLock)
+m4_page_footer
diff --git a/db/docs_src/lock/lock_id.so b/db/docs_src/lock/lock_id.so
new file mode 100644
index 000000000..05360b96e
--- /dev/null
+++ b/db/docs_src/lock/lock_id.so
@@ -0,0 +1,32 @@
+m4_comment([$Id: lock_id.so,v 10.33 2004/08/13 03:38:57 bostic Exp $])
+
+define(M4PAGELOCAL, lock_id)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(lock_id),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__lock_id(DB_ENV *env, u_int32_t *idp);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::lock_id(u_int32_t *idp);
+]))
+
+m4_p([dnl
+The m4_refT(lock_id) copies a locker ID, which is guaranteed to be
+unique in the specified lock table, into the memory location to which
+m4_arg(idp) refers.])
+
+m4_p([dnl
+The m4_refT(lock_id_free) should be called to return the locker ID to
+the m4_db library when it is no longer needed.])
+
+m4_return(lock_id, std)
+
+m4_parambegin
+m4_param_co(idp, allocated locker ID)
+m4_paramend
+
+m4_seealso(DbLock)
+m4_page_footer
diff --git a/db/docs_src/lock/lock_id_free.so b/db/docs_src/lock/lock_id_free.so
new file mode 100644
index 000000000..7bd560c1c
--- /dev/null
+++ b/db/docs_src/lock/lock_id_free.so
@@ -0,0 +1,31 @@
+m4_comment([$Id: lock_id_free.so,v 10.14 2004/08/13 03:38:57 bostic Exp $])
+
+define(M4PAGELOCAL, lock_id_free)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(lock_id_free),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__lock_id_free(DB_ENV *env, u_int32_t id);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::lock_id_free(u_int32_t id);
+]))
+
+m4_p([dnl
+The m4_refT(lock_id_free) frees a locker ID allocated by the
+m4_refT(lock_id).])
+
+m4_return(lock_id_free, std)
+
+m4_parambegin
+m4_param(id, [dnl
+The m4_arg(id) parameter is the locker id to be freed.])
+m4_paramend
+
+m4_err(lock_id_free, einval,
+[the locker ID is invalid or locks are still held by this locker ID])
+
+m4_seealso(DbLock)
+m4_page_footer
diff --git a/db/docs_src/lock/lock_list.so b/db/docs_src/lock/lock_list.so
new file mode 100644
index 000000000..0ad71c064
--- /dev/null
+++ b/db/docs_src/lock/lock_list.so
@@ -0,0 +1,7 @@
+m4_comment([$Id: lock_list.so,v 1.1 2002/08/30 20:00:51 bostic Exp $])
+
+m4_page_title([m4_db: Locking Subsystem and Related Methods])
+
+include(lock/m4.methods)
+
+m4_page_footer
diff --git a/db/docs_src/lock/lock_put.so b/db/docs_src/lock/lock_put.so
new file mode 100644
index 000000000..800dae049
--- /dev/null
+++ b/db/docs_src/lock/lock_put.so
@@ -0,0 +1,29 @@
+m4_comment([$Id: lock_put.so,v 10.37 2004/08/13 03:38:57 bostic Exp $])
+
+define(M4PAGELOCAL, lock_put)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(lock_put),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__lock_put(DB_ENV *env, DB_LOCK *lock);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::lock_put(DbLock *lock);
+]))
+
+m4_p([dnl
+The m4_refT(lock_put) releases m4_arg(lock).])
+
+m4_return(lock_put, std)
+
+m4_parambegin
+m4_param(lock, [dnl
+The m4_arg(lock) parameter is the lock to be released.])
+m4_paramend
+
+m4_err(lock_put, einval)
+
+m4_seealso(DbLock)
+m4_page_footer
diff --git a/db/docs_src/lock/lock_stat.so b/db/docs_src/lock/lock_stat.so
new file mode 100644
index 000000000..ebed1ebfe
--- /dev/null
+++ b/db/docs_src/lock/lock_stat.so
@@ -0,0 +1,162 @@
+m4_comment([$Id: lock_stat.so,v 10.68 2007/06/22 16:57:15 bostic Exp $])
+
+define(M4PAGELOCAL, [lock_stat, lock_stat_print])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(lock_stat),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__lock_stat(DB_ENV *env, DB_LOCK_STAT **statp, u_int32_t flags);
+m4_blank
+int
+DB_ENV-__GT__lock_stat_print(DB_ENV *env, u_int32_t flags);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::lock_stat(DB_LOCK_STAT **statp, u_int32_t flags);
+m4_blank
+int
+DbEnv::lock_stat_print(u_int32_t flags);
+]))
+
+m4_p([dnl
+The m4_refT(lock_stat) returns the locking subsystem statistics.])
+
+m4_p([dnl
+The m4_refT(lock_stat) creates a statistical structure of type
+DB_LOCK_STAT and copies a pointer to it into a user-specified memory
+location.])
+
+m4_alloc([Statistical structures])
+
+m4_p([dnl
+The following DB_LOCK_STAT fields will be filled in:])
+
+m4_tagbegin
+m4_field(u_int32_t, st_id,
+[The last allocated locker ID.])
+
+m4_field(u_int32_t, st_cur_maxid,
+[The current maximum unused locker ID.])
+
+m4_field(u_int32_t, st_nmodes,
+[The number of lock modes.])
+
+m4_field(u_int32_t, st_maxlocks,
+[The maximum number of locks possible.])
+
+m4_field(u_int32_t, st_maxlockers,
+[The maximum number of lockers possible.])
+
+m4_field(u_int32_t, st_maxobjects,
+[The maximum number of lock objects possible.])
+
+m4_field(u_int32_t, st_nlocks,
+[The number of current locks.])
+
+m4_field(u_int32_t, st_maxnlocks,
+[The maximum number of locks at any one time.])
+
+m4_field(u_int32_t, st_nlockers,
+[The number of current lockers.])
+
+m4_field(u_int32_t, st_maxnlockers,
+[The maximum number of lockers at any one time.])
+
+m4_field(u_int32_t, st_nobjects,
+[The number of current lock objects.])
+
+m4_field(u_int32_t, st_maxnobjects,
+[The maximum number of lock objects at any one time.])
+
+m4_field(u_int32_t, st_nrequests,
+[The total number of locks requested.])
+
+m4_field(u_int32_t, st_nreleases,
+[The total number of locks released.])
+
+m4_field(u_int32_t, st_nupgrade,
+[The total number of locks upgraded.])
+
+m4_field(u_int32_t, st_ndowngrade,
+[The total number of locks downgraded.])
+
+m4_field(u_int32_t, st_lock_wait,
+[The number of lock requests not immediately available due to conflicts,
+for which the thread of control waited.])
+
+m4_field(u_int32_t, st_lock_nowait,
+[The number of lock requests not immediately available due to conflicts,
+for which the thread of control did not wait.])
+
+m4_field(u_int32_t, st_ndeadlocks,
+[The number of deadlocks.])
+
+m4_field(u_int32_t, st_locktimeout,
+[Lock timeout value.])
+
+m4_field(u_int32_t, st_nlocktimeouts,
+[The number of lock requests that have timed out.])
+
+m4_field(u_int32_t, st_txntimeout,
+[Transaction timeout value.])
+
+m4_field(u_int32_t, st_ntxntimeouts,
+[The number of transactions that have timed out. This value is also a
+component of m4_arg(st_ndeadlocks), the total number of deadlocks
+detected.])
+
+m4_field(u_int32_t, st_objs_wait,
+[The number of requests to allocate or deallocate an object
+for which the thread of control waited.])
+
+m4_field(u_int32_t, st_objs_nowait,
+[The number of requests to allocate or deallocate an object
+for which the thread of control did not wait.])
+
+m4_field(u_int32_t, st_lockers_wait,
+[The number of requests to allocate or deallocate a locker
+for which the thread of control waited.])
+
+m4_field(u_int32_t, st_lockers_nowait,
+[The number of requests to allocate or deallocate a locker
+for which the thread of control did not wait.])
+
+m4_field(u_int32_t, st_locks_wait,
+[The number of requests to allocate or deallocate a lock structure
+for which the thread of control waited.])
+
+m4_field(u_int32_t, st_locks_nowait,
+[The number of requests to allocate or deallocate a lock structure
+for which the thread of control did not wait.])
+
+m4_field(u_int32_t, st_hash_len,
+[Maximum length of a lock hash bucket.])
+
+m4_field(roff_t, st_regsize,
+[The size of the lock region, in bytes.])
+
+m4_field(u_int32_t, st_region_wait,
+[The number of times that a thread of control was forced to wait before
+obtaining the lock region mutex.])
+
+m4_field(u_int32_t, st_region_nowait,
+[The number of times that a thread of control was able to obtain
+the lock region mutex without waiting.])
+m4_tagend
+
+m4_when_after_envopen(lock_stat)
+
+m4_return(lock_stat, std)
+
+m4_parambegin
+m4_param(flags, m4_stat_flags)
+m4_param_co(statp, allocated statistics structure, REF)
+m4_paramend
+
+m4_err(lock_stat, einval)
+
+m4_stat_print(lock_stat_print, locking subsystem, lock_stat)
+
+m4_seealso(DbLock)
+m4_page_footer
diff --git a/db/docs_src/lock/lock_vec.so b/db/docs_src/lock/lock_vec.so
new file mode 100644
index 000000000..e353e86a1
--- /dev/null
+++ b/db/docs_src/lock/lock_vec.so
@@ -0,0 +1,173 @@
+m4_comment([$Id: lock_vec.so,v 10.69 2004/08/13 03:38:57 bostic Exp $])
+
+define(M4PAGELOCAL,
+ [lock_vec, DB_LOCK_GET, DB_LOCK_GET_TIMEOUT, DB_LOCK_PUT,
+ DB_LOCK_IREAD, DB_LOCK_PUT_ALL, DB_LOCK_PUT_OBJ,
+ DB_LOCK_TIMEOUT, DB_LOCK_READ, DB_LOCK_WRITE, DB_LOCK_IWRITE,
+ DB_LOCK_IREAD, DB_LOCK_IWR])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(lock_vec),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__lock_vec(DB_ENV *env, u_int32_t locker, u_int32_t flags,
+ DB_LOCKREQ list__LB____RB__, int nlist, DB_LOCKREQ **elistp);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::lock_vec(u_int32_t locker, u_int32_t flags,
+ DB_LOCKREQ list__LB____RB__, int nlist, DB_LOCKREQ **elistp);
+]))
+
+m4_p([dnl
+The m4_refT(lock_vec) atomically obtains and releases one or more locks
+from the lock table. The m4_refT(lock_vec) is intended to support
+acquisition or trading of multiple locks under one lock table semaphore,
+as is needed for lock coupling or in multigranularity locking for lock
+escalation.])
+
+m4_p([dnl
+If any of the requested locks cannot be acquired, or any of the locks to
+be released cannot be released, the operations before the failing
+operation are guaranteed to have completed successfully, and
+m4_ref(lock_vec) returns a non-zero value. In addition, if
+m4_arg(elistp) is not NULL, it is set to point to the DB_LOCKREQ entry
+that was being processed when the error occurred.])
+
+m4_return(lock_vec, prev)
+
+m4_parambegin
+m4_param(elistp, [dnl
+If an error occurs, and the m4_arg(elistp) parameter is non-NULL, it
+is set to point to the DB_LOCKREQ entry that was being processed when
+the error occurred.])
+
+m4_param(flags, [dnl
+m4_sf_zmust(0)
+
+m4_tagbegin
+m4_tag(m4_idef(DB_LOCK_NOWAIT), [dnl
+If a lock cannot be granted because the requested lock conflicts with
+an existing lock,
+ifelse(M4API, C_API, [dnl
+return DB_LOCK_NOTGRANTED immediately instead of waiting
+for the lock to become available. In this case, if non-NULL,
+m4_arg(elistp) identifies the request that was not granted.])
+ifelse(M4API, CXX_API, [dnl
+return DB_LOCK_NOTGRANTED or throw a
+m4_ref(DbLockNotGrantedException) immediately instead of waiting for
+the lock to become available. In this case, if non-NULL,
+m4_arg(elistp) identifies the request that was not granted, or, if an
+exception is thrown, the index of the request that was not granted can
+be found by calling DbLockNotGrantedException.get_index.])])
+m4_tagend])
+
+m4_param(locker, [dnl
+The m4_arg(locker) parameter is an unsigned 32-bit integer quantity. It
+represents the entity requesting or releasing the lock.])
+
+m4_param(list, [dnl
+The m4_arg(list) array provided to m4_ref(lock_vec) is typedef'd as
+DB_LOCKREQ.
+m4_p([dnl
+To ensure compatibility with future releases of m4_db, all
+fields of the DB_LOCKREQ structure that are not explicitly set should
+be initialized to 0 before the first time the structure is used. Do
+this by declaring the structure external or static, or by calling
+m4_manref(memset, 3).])
+m4_p([dnl
+A DB_LOCKREQ structure has at least the following fields:])
+
+m4_tagbegin
+m4_tag([lockop_t m4_idef(op);], [dnl
+The operation to be performed, which must be set to one of the
+following values:])
+
+m4_tagbegin
+m4_tag(m4_idef(DB_LOCK_GET), [dnl
+Get the lock defined by the values of the m4_arg(mode) and m4_arg(obj)
+structure fields, for the specified m4_arg(locker). Upon return from
+m4_ref(lock_vec), if the m4_arg(lock) field is non-NULL, a reference
+to the acquired lock is stored there. (This reference is invalidated
+by any call to m4_ref(lock_vec) or m4_ref(lock_put) that releases the
+lock.)])
+
+m4_tag(m4_idef(DB_LOCK_GET_TIMEOUT), [dnl
+Identical to m4_ref(DB_LOCK_GET) except that the value in the m4_arg(timeout)
+structure field overrides any previously specified timeout value for
+this lock. A value of 0 turns off any previously specified timeout.])
+
+m4_tag(m4_idef(DB_LOCK_PUT), [dnl
+The lock to which the m4_arg(lock) structure field refers is released.
+The m4_arg(locker) parameter, and m4_arg(mode) and m4_arg(obj) fields
+are ignored.])
+
+m4_tag(m4_idef(DB_LOCK_PUT_ALL), [dnl
+All locks held by the specified m4_arg(locker) are released. The
+m4_arg(lock), m4_arg(mode), and m4_arg(obj) structure fields are
+ignored. Locks acquired in operations performed by the current call to
+m4_ref(lock_vec) which appear before the DB_LOCK_PUT_ALL
+operation are released; those acquired in operations appearing after
+the DB_LOCK_PUT_ALL operation are not released.])
+
+m4_tag(m4_idef(DB_LOCK_PUT_OBJ), [dnl
+All locks held on m4_arg(obj) are released. The m4_arg(locker)
+parameter and the m4_arg(lock) and m4_arg(mode) structure fields are
+ignored. Locks acquired in operations performed by the current call to
+m4_ref(lock_vec) that appear before the DB_LOCK_PUT_OBJ
+operation are released; those acquired in operations appearing after the
+DB_LOCK_PUT_OBJ operation are not released.])
+
+m4_tag(m4_idef(DB_LOCK_TIMEOUT), [dnl
+Cause the specified m4_arg(locker) to timeout immediately. If the
+database environment has not configured automatic deadlock detection,
+the transaction will timeout the next time deadlock detection is
+performed. As transactions acquire locks on behalf of a single locker
+ID, timing out the locker ID associated with a transaction will time
+out the transaction itself.])
+
+m4_tagend
+
+m4_tag([DB_LOCK m4_idef(lock);],
+[A lock reference.])
+
+m4_tag([const lockmode_t m4_idef(mode);], [dnl
+The lock mode, used as an index into the environment's lock conflict matrix.
+When using the default lock conflict matrix, m4_arg(mode) must be set to one
+of the following values:
+m4_tagbegin
+m4_tagns(m4_idef(DB_LOCK_READ), [read (shared)])
+m4_tagns(m4_idef(DB_LOCK_WRITE), [write (exclusive)])
+m4_tagns(m4_idef(DB_LOCK_IWRITE), [intention to write (shared)])
+m4_tagns(m4_idef(DB_LOCK_IREAD), [intention to read (shared)])
+m4_tagns(m4_idef(DB_LOCK_IWR), [intention to read and write (shared)])
+m4_tagend
+m4_p([dnl
+See m4_ref(dbenv_set_lk_conflicts) and m4_link(M4RELDIR/ref/lock/stdmode,
+[Standard Lock Modes]) for more information on the lock conflict matrix.])])
+
+m4_tag([const ifelse(M4API, C_API, DBT, Dbt) m4_idef(obj);], [dnl
+An untyped byte string that specifies the object to be locked or
+released. Applications using the locking subsystem directly while also
+doing locking via the m4_db access methods must take care not to
+inadvertently lock objects that happen to be equal to the unique file
+IDs used to lock files. See m4_link(M4RELDIR/ref/lock/am_conv, [Access
+method locking conventions]) for more information.])
+
+m4_tag([u_int32_t timeout;], [dnl
+The lock timeout value.])
+m4_tagend])
+
+m4_param(nlist, [dnl
+The m4_arg(nlist) parameter specifies the number of elements in the
+m4_arg(list) array.])
+
+m4_paramend
+
+m4_err(lock_vec, deadlock, locknotgranted,
+[m4_ref(DB_LOCK_NOWAIT) flag or lock timers were configured and the],
+einval,,
+memory, [maximum number of locks has been reached])
+
+m4_seealso(DbLock)
+m4_page_footer
diff --git a/db/docs_src/lock/lockng_class.so b/db/docs_src/lock/lockng_class.so
new file mode 100644
index 000000000..68a949620
--- /dev/null
+++ b/db/docs_src/lock/lockng_class.so
@@ -0,0 +1,72 @@
+m4_comment([$Id: lockng_class.so,v 1.14 2004/08/13 03:38:57 bostic Exp $])
+
+define(M4PAGELOCAL, DbLockNotGrantedException)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(DbLockNotGrantedException),
+ifelse(M4API, C_API, [dnl
+])
+ifelse(M4API, CXX_API, [dnl
+class DbLockNotGrantedException : public DbException {
+public:
+ db_lockop_t get_op() const;
+ db_lockmode_t get_mode() const;
+ const Dbt* get_obj() const;
+ DbLock *get_lock() const;
+ int get_index() const;
+};
+]))
+
+m4_p([dnl
+This information describes the m4_ref(DbLockNotGrantedException) class and
+how it is used by the various Db* classes.])
+
+m4_p([dnl
+A m4_ref(DbLockNotGrantedException) is thrown when a lock requested using
+the m4_ref(lock_get) or m4_refT(lock_vec)s, where the m4_ref(DB_LOCK_NOWAIT)
+flag or lock timers were configured, could not be granted before the
+wait-time expired.])
+m4_p([dnl
+Additionally, m4_ref(DbLockNotGrantedException) is thrown when a m4_db
+Concurrent Data Store database environment configured for lock timeouts
+was unable to grant a lock in the allowed time.])
+m4_p([dnl
+Additionally, m4_ref(DbLockNotGrantedException) is thrown when lock or
+transaction timeouts have been configured, a database operation has
+timed out, and the m4_ref(DB_TIME_NOTGRANTED) configuration flag has
+been specified.])
+
+m4_p([dnl
+The m4_ref(DbException) errno value is set to DB_LOCKNOTGRANTED.])
+
+m4_p([dnl
+The m4_arg(get_op) method returns 0 when m4_ref(lock_get) was called,
+and returns the m4_arg(op) for the failed m4_ref(DbLockRequest) when
+m4_ref(lock_vec) was called.])
+
+m4_p([dnl
+The m4_arg(get_mode) method returns the m4_arg(mode) parameter when
+m4_ref(lock_get) was called, and returns the m4_arg(mode) for the failed
+m4_ref(DbLockRequest) when m4_ref(lock_vec) was called.])
+
+m4_p([dnl
+The m4_arg(get_obj) method returns the m4_arg(mode) parameter when
+returns the m4_arg(object) parameter when m4_ref(lock_get) was called,
+and returns the m4_arg(object) for the failed m4_ref(DbLockRequest) when
+m4_ref(lock_vec) was called.
+ifelse(M4API, CXX_API, [dnl
+The m4_ref(Dbt) pointer may or may not refer to valid memory, depending on
+whether the m4_ref(Dbt) used in the call to the failed m4_ref(lock_get) or
+m4_refT(lock_vec) is still in scope and has not been deleted.])])
+
+m4_p([dnl
+The m4_arg(get_lock) method returns NULL when m4_ref(lock_get) was
+called, and returns the m4_arg(lock) in the failed m4_ref(DbLockRequest)
+when m4_ref(lock_vec) was called.])
+
+m4_p([dnl
+The m4_arg(get_index) method returns -1 when m4_ref(lock_get) was
+called, and returns the index of the failed m4_ref(DbLockRequest) when
+m4_ref(lock_vec) was called.])
+
+m4_page_footer
diff --git a/db/docs_src/lock/m4.methods b/db/docs_src/lock/m4.methods
new file mode 100644
index 000000000..8620e40a2
--- /dev/null
+++ b/db/docs_src/lock/m4.methods
@@ -0,0 +1,26 @@
+m4_comment([$Id: m4.methods,v 1.6 2006/08/08 05:15:56 mjc Exp $])
+
+m4_table_begin(, _center)
+
+m4_table_header(Locking Subsystem and Related Methods, Description)
+m4_comment([DbDeadlockException])ifelse(M4API, CXX_API, [m4_table_element(m4_ref(DbDeadlockException), Deadlock exception)])
+m4_comment([DbEnv::lock_detect])m4_table_element(m4_ref(lock_detect), Perform deadlock detection)
+m4_comment([DbEnv::lock_get])m4_table_element(m4_ref(lock_get), Acquire a lock)
+m4_comment([DbEnv::lock_id])m4_table_element(m4_ref(lock_id), Acquire a locker ID)
+m4_comment([DbEnv::lock_id_free])m4_table_element(m4_ref(lock_id_free), Release a locker ID)
+m4_comment([DbEnv::lock_put])m4_table_element(m4_ref(lock_put), Release a lock)
+m4_comment([DbEnv::lock_stat])m4_table_element(m4_ref(lock_stat), Return lock subsystem statistics)
+m4_comment([DbEnv::lock_vec])m4_table_element(m4_ref(lock_vec), Acquire/release locks)
+m4_comment([DbEnv::cdsgroup_begin])m4_table_element(m4_ref(cdsgroup_begin), Get a locker ID in m4_cam)
+m4_comment([DbLockNotGrantedException])ifelse(M4API, CXX_API, [m4_table_element(m4_ref(DbLockNotGrantedException), Lock-not-granted exception)])
+m4_comment([DbLock])ifelse(M4API, CXX_API, [m4_table_element(m4_ref(DbLock), Lock object)])
+
+m4_table_header(Locking Subsystem Configuration, _empty)
+m4_comment([DbEnv::set_lk_conflicts])m4_table_element(m4_ref(dbenv_set_lk_conflicts), Set lock conflicts matrix)
+m4_comment([DbEnv::set_lk_max_detect])m4_table_element(m4_ref(dbenv_set_lk_detect), Set automatic deadlock detection)
+m4_comment([DbEnv::set_lk_max_lockers])m4_table_element(m4_ref(dbenv_set_lk_max_lockers), Set maximum number of lockers)
+m4_comment([DbEnv::set_lk_max_locks])m4_table_element(m4_ref(dbenv_set_lk_max_locks), Set maximum number of locks)
+m4_comment([DbEnv::set_lk_max_objects])m4_table_element(m4_ref(dbenv_set_lk_max_objects), Set maximum number of lock objects)
+m4_comment([DbEnv::set_timeout])m4_table_element(m4_ref(dbenv_set_timeout), Set lock and transaction timeout)
+
+m4_table_end
diff --git a/db/docs_src/log/env_set_lg_bsize.so b/db/docs_src/log/env_set_lg_bsize.so
new file mode 100644
index 000000000..58bbf6384
--- /dev/null
+++ b/db/docs_src/log/env_set_lg_bsize.so
@@ -0,0 +1,68 @@
+m4_comment([$Id: env_set_lg_bsize.so,v 10.36 2006/08/30 10:04:48 bostic Exp $])
+
+define(M4PAGELOCAL, [dbenv_set_lg_bsize, dbenv_get_lg_bsize])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbenv_set_lg_bsize),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__set_lg_bsize(DB_ENV *dbenv, u_int32_t lg_bsize);
+m4_blank
+int
+DB_ENV-__GT__get_lg_bsize(DB_ENV *dbenv, u_int32_t *lg_bsizep);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::set_lg_bsize(u_int32_t lg_bsize);
+m4_blank
+int
+DbEnv::get_lg_bsize(u_int32_t *lg_bsizep);
+]))
+
+m4_p([dnl
+Set the size of the in-memory log buffer, in bytes.])
+
+m4_p([dnl
+When the logging subsystem is configured for on-disk logging, the
+default size of the in-memory log buffer is approximately 32KB. Log
+information is stored in-memory until the storage space fills up or
+transaction commit forces the information to be flushed to stable
+storage. In the presence of long-running transactions or transactions
+producing large amounts of data, larger buffer sizes can increase
+throughput.])
+
+m4_p([dnl
+When the logging subsystem is configured for in-memory logging, the
+default size of the in-memory log buffer is 1MB. Log information is
+stored in-memory until the storage space fills up or transaction abort
+or commit frees up the memory for new transactions. In the presence of
+long-running transactions or transactions producing large amounts of
+data, the buffer size must be sufficient to hold all log information
+that can accumulate during the longest running transaction. When
+choosing log buffer and file sizes for in-memory logs, applications
+should ensure the in-memory log buffer size is large enough that no
+transaction will ever span the entire buffer, and avoid a state where
+the in-memory buffer is full and no space can be freed because a
+transaction that started in the first log "file" is still active.])
+
+m4_env_config(dbenv_set_lg_bsize,
+[log buffer size], set_lg_bsize, [the size in bytes])
+
+m4_scope_env(dbenv_set_lg_bsize)
+
+m4_when_envopen(dbenv_set_lg_bsize, ignored)
+
+m4_return(dbenv_set_lg_bsize, std)
+
+m4_parambegin
+m4_param(lg_bsize, [dnl
+The m4_arg(lg_bsize) parameter is the size of the in-memory log buffer,
+in bytes.])
+m4_paramend
+
+m4_err(dbenv_set_lg_bsize, einval)
+
+m4_pf_getter(dbenv_get_lg_bsize, [size of the log buffer, in bytes],, lg_bsizep)
+
+m4_seealso(DbLog)
+m4_page_footer
diff --git a/db/docs_src/log/env_set_lg_dir.so b/db/docs_src/log/env_set_lg_dir.so
new file mode 100644
index 000000000..a97f5bd05
--- /dev/null
+++ b/db/docs_src/log/env_set_lg_dir.so
@@ -0,0 +1,57 @@
+m4_comment([$Id: env_set_lg_dir.so,v 10.25 2004/09/28 15:04:21 bostic Exp $])
+
+define(M4PAGELOCAL, [dbenv_set_lg_dir, dbenv_get_lg_dir])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbenv_set_lg_dir),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__set_lg_dir(DB_ENV *dbenv, const char *dir);
+m4_blank
+int
+DB_ENV-__GT__get_lg_dir(DB_ENV *dbenv, const char **dirp);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::set_lg_dir(const char *dir);
+m4_blank
+int
+DbEnv::get_lg_dir(const char **dirp);
+]))
+
+m4_p([dnl
+The path of a directory to be used as the location of logging files.
+Log files created by the Log Manager subsystem will be created in this
+directory.])
+
+m4_p([dnl
+If no logging directory is specified, log files are created in the
+environment home directory. See m4_link(M4RELDIR/ref/env/naming,
+[m4_db File Naming]) for more information.])
+
+m4_p([dnl
+For the greatest degree of recoverability from system or application
+failure, database files and log files should be located on separate
+physical devices.])
+
+m4_env_config(dbenv_set_lg_dir,
+[logging directory], set_lg_dir, [the directory name])
+
+m4_scope_dbenv(dbenv_set_lg_dir)
+
+m4_when_envopen(dbenv_set_lg_dir, corrupt)
+
+m4_return(dbenv_set_lg_dir, std)
+
+m4_parambegin
+m4_param_utf8(dir, [dnl
+The m4_arg(dir) parameter is the directory used to store the logging files.])
+m4_paramend
+
+m4_err(dbenv_set_lg_dir,
+einval, [the method was called after m4_ref(dbenv_open) was called])
+
+m4_pf_getter(dbenv_get_lg_dir, log directory,, dirp, reference)
+
+m4_seealso(DbLog)
+m4_page_footer
diff --git a/db/docs_src/log/env_set_lg_max.so b/db/docs_src/log/env_set_lg_max.so
new file mode 100644
index 000000000..27540f901
--- /dev/null
+++ b/db/docs_src/log/env_set_lg_max.so
@@ -0,0 +1,75 @@
+m4_comment([$Id: env_set_lg_max.so,v 10.45 2004/09/28 15:04:21 bostic Exp $])
+
+define(M4PAGELOCAL, [dbenv_set_lg_max, dbenv_get_lg_max])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbenv_set_lg_max),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__set_lg_max(DB_ENV *dbenv, u_int32_t lg_max);
+m4_blank
+int
+DB_ENV-__GT__get_lg_max(DB_ENV *dbenv, u_int32_t *lg_maxp);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::set_lg_max(u_int32_t lg_max);
+m4_blank
+int
+DbEnv::get_lg_max(u_int32_t *);
+]))
+
+m4_p([dnl
+Set the maximum size of a single file in the log, in bytes. Because
+m4_ref(DbLsn) file offsets are unsigned four-byte values, the set
+value may not be larger than the maximum unsigned four-byte value.])
+
+m4_p([dnl
+When the logging subsystem is configured for on-disk logging, the
+default size of a log file is 10MB.])
+
+m4_p([dnl
+When the logging subsystem is configured for in-memory logging, the
+default size of a log file is 256KB. In addition, the configured log
+buffer size must be larger than the log file size. (The logging
+subsystem divides memory configured for in-memory log records into
+"files", as database environments configured for in-memory log records
+may exchange log records with other members of a replication group, and
+those members may be configured to store log records on-disk.) When
+choosing log buffer and file sizes for in-memory logs, applications
+should ensure the in-memory log buffer size is large enough that no
+transaction will ever span the entire buffer, and avoid a state where
+the in-memory buffer is full and no space can be freed because a
+transaction that started in the first log "file" is still active.])
+
+m4_p([dnl
+See m4_link(M4RELDIR/ref/log/limits, [Log File Limits]) for more
+information.])
+
+m4_env_config(dbenv_set_lg_max,
+[log file size], set_lg_max, [the size in bytes])
+
+m4_scope_env(dbenv_set_lg_max)
+
+m4_when_any(dbenv_set_lg_max)
+If no size is specified by the application, the size last specified for
+the database region will be used, or if no database region previously
+existed, the default will be used.
+
+m4_return(dbenv_set_lg_max, std)
+
+m4_parambegin
+m4_param(lg_max, [dnl
+The m4_arg(lg_max) parameter is the size of a single log file, in bytes.])
+m4_paramend
+
+m4_err(dbenv_set_lg_max,
+einval, [the method was called after m4_ref(dbenv_open) was called;
+the size of the log file is less than four times the size of the in-memory
+log buffer;
+The specified log file size was too large])
+
+m4_pf_getter(dbenv_get_lg_max, maximum log file size,, lg_maxp)
+
+m4_seealso(DbLog)
+m4_page_footer
diff --git a/db/docs_src/log/env_set_lg_mode.so b/db/docs_src/log/env_set_lg_mode.so
new file mode 100644
index 000000000..e7cf7d3a6
--- /dev/null
+++ b/db/docs_src/log/env_set_lg_mode.so
@@ -0,0 +1,55 @@
+m4_comment([$Id: env_set_lg_mode.so,v 1.1 2004/12/15 15:46:44 bostic Exp $])
+
+define(M4PAGELOCAL, [dbenv_set_lg_filemode, dbenv_get_lg_filemode])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbenv_set_lg_filemode),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__set_lg_filemode(DB_ENV *dbenv, int lg_mode);
+m4_blank
+int
+DB_ENV-__GT__get_lg_filemode(DB_ENV *dbenv, int *lg_modep);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::set_lg_filemode(int lg_mode);
+m4_blank
+int
+DbEnv::get_lg_filemode(int *);
+]))
+
+m4_p([dnl
+Set the absolute file mode for created log files. This method is
+m4_bold(only) useful for the rare m4_db application that does not
+control its umask value.])
+
+m4_p([dnl
+Normally, if m4_db applications set their umask appropriately, all
+processes in the application suite will have read permission on the log
+files created by any process in the application suite. However, if the
+m4_db application is a library, a process using the library might set
+its umask to a value preventing other processes in the application suite
+from reading the log files it creates. In this rare case, the
+m4_refT(dbenv_set_lg_filemode) can be used to set the mode of created
+log files to an absolute value.])
+
+m4_env_config(dbenv_set_lg_filemode,
+[log file mode], set_lg_filemode, [the absolute mode of created log files])
+
+m4_scope_env(dbenv_set_lg_filemode)
+
+m4_when_any(dbenv_set_lg_filemode)
+
+m4_return(dbenv_set_lg_filemode, std)
+
+m4_parambegin
+m4_param(lg_filemode, [dnl
+The m4_arg(lg_filemode) parameter is the absolute mode of the created
+log file.])
+m4_paramend
+
+m4_pf_getter(dbenv_get_lg_filemode, log file mode,, lg_modep)
+
+m4_seealso(DbLog)
+m4_page_footer
diff --git a/db/docs_src/log/env_set_lg_regionmax.so b/db/docs_src/log/env_set_lg_regionmax.so
new file mode 100644
index 000000000..f14e928de
--- /dev/null
+++ b/db/docs_src/log/env_set_lg_regionmax.so
@@ -0,0 +1,52 @@
+m4_comment([$Id: env_set_lg_regionmax.so,v 10.23 2006/08/30 10:04:48 bostic Exp $])
+
+define(M4PAGELOCAL, [dbenv_set_lg_regionmax, dbenv_get_lg_regionmax])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbenv_set_lg_regionmax),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__set_lg_regionmax(DB_ENV *dbenv, u_int32_t lg_regionmax);
+m4_blank
+int
+DB_ENV-__GT__get_lg_regionmax(DB_ENV *dbenv, u_int32_t *lg_regionmaxp);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::set_lg_regionmax(u_int32_t lg_regionmax);
+m4_blank
+int
+DbEnv::get_lg_regionmax(u_int32_t *lg_regionmaxp);
+]))
+
+m4_p([dnl
+Set the size of the underlying logging area of the m4_db environment,
+in bytes. By default, or if the value is set to 0, the default size is
+approximately 60KB. The log region is used to store filenames, and so
+may need to be increased in size if a large number of files will be
+opened and registered with the specified m4_db environment's log
+manager.])
+
+m4_env_config(dbenv_set_lg_regionmax,
+[log region size], set_lg_regionmax, [the size in bytes])
+
+m4_scope_env(dbenv_set_lg_regionmax)
+
+m4_when_envopen(dbenv_set_lg_regionmax, ignored)
+
+m4_return(dbenv_set_lg_regionmax, std)
+
+m4_parambegin
+m4_param(lg_regionmax, [dnl
+The m4_arg(lg_regionmax) parameter is the size of the logging area in
+the m4_db environment, in bytes.])
+m4_paramend
+
+m4_err(dbenv_set_lg_regionmax,
+einval, [the method was called after m4_ref(dbenv_open) was called])
+
+m4_pf_getter(dbenv_get_lg_regionmax,
+size of the underlying logging subsystem region,, lg_regionmaxp)
+
+m4_seealso(DbLog)
+m4_page_footer
diff --git a/db/docs_src/log/log_archive.so b/db/docs_src/log/log_archive.so
new file mode 100644
index 000000000..9e970c0f8
--- /dev/null
+++ b/db/docs_src/log/log_archive.so
@@ -0,0 +1,101 @@
+m4_comment([$Id: log_archive.so,v 10.49 2004/08/13 03:38:57 bostic Exp $])
+
+define(M4PAGELOCAL, log_archive)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(log_archive),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__log_archive(DB_ENV *env, char *(*listp)__LB____RB__, u_int32_t flags);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::log_archive(char *(*listp)__LB____RB__, u_int32_t flags);
+]))
+
+m4_p([dnl
+The m4_refT(log_archive) returns an array of log or database filenames.])
+
+m4_p([dnl
+By default, m4_ref(log_archive) returns the names of all of the log
+files that are no longer in use (for example, that are no longer
+involved in active transactions), and that may safely be archived for
+catastrophic recovery and then removed from the system. If there are
+no filenames to return, the memory location to which m4_arg(listp)
+refers will be set to NULL.])
+
+m4_alloc([Arrays of log filenames])
+
+m4_p([dnl
+Log cursor handles (returned by the m4_refT(log_cursor)) may have open
+file descriptors for log files in the database environment. Also, the
+m4_db interfaces to the database environment logging subsystem (for
+example, m4_ref(log_put) and m4_ref(txn_abort)) may allocate log cursors
+and have open file descriptors for log files as well. On operating
+systems where filesystem related system calls (for example, rename and
+unlink on Windows/NT) can fail if a process has an open file descriptor
+for the affected file, attempting to move or remove the log files listed
+by m4_ref(log_archive) may fail. All m4_db internal use of log cursors
+operates on active log files only and furthermore, is short-lived in
+nature. So, an application seeing such a failure should be restructured
+to close any open log cursors it may have, and otherwise to retry the
+operation until it succeeds. (Although the latter is not likely to be
+necessary; it is hard to imagine a reason to move or rename a log file
+in which transactions are being logged or aborted.)])
+
+m4_p([dnl
+See m4_ref(db_archive) for more information on database archival
+procedures.])
+
+m4_underfunc(log_archive, log_archive, db_archive)
+
+m4_return(log_archive, std)
+
+m4_parambegin
+
+m4_param(flags, [dnl
+m4_sf_or_may
+
+m4_tagbegin
+m4_tag(m4_idef(DB_ARCH_ABS), [dnl
+All pathnames are returned as absolute pathnames, instead of relative
+to the database home directory.])
+
+m4_tag(m4_idef(DB_ARCH_DATA), [dnl
+Return the database files that need to be archived in order to recover
+the database from catastrophic failure. If any of the database files
+have not been accessed during the lifetime of the current log files,
+m4_ref(log_archive) will not include them in this list. It is also
+possible that some of the files referred to by the log have since been
+deleted from the system.
+m4_p([dnl
+The DB_ARCH_DATA and DB_ARCH_LOG flags are mutually exclusive.])])
+
+m4_tag(m4_idef(DB_ARCH_LOG), [dnl
+Return all the log filenames, regardless of whether or not they are in
+use.
+m4_p([dnl
+The DB_ARCH_DATA and DB_ARCH_LOG flags are mutually exclusive.])])
+
+m4_tag(m4_idef(DB_ARCH_REMOVE), [dnl
+Remove log files that are no longer needed; no filenames are returned.
+Automatic log file removal is likely to make catastrophic recovery
+impossible.
+m4_p([dnl
+The DB_ARCH_REMOVE flag may not be specified with any other
+flag.])])
+
+m4_tagend])
+
+m4_param(listp, [dnl
+The m4_arg(listp) parameter references memory into which the allocated
+array of log or database filenames is copied. If there are no filenames
+to return, the memory location to which m4_arg(listp) refers will be set
+to NULL.])
+
+m4_paramend
+
+m4_err(log_archive, einval)
+
+m4_seealso(DbLog)
+m4_page_footer
diff --git a/db/docs_src/log/log_compare.so b/db/docs_src/log/log_compare.so
new file mode 100644
index 000000000..5f95fbd19
--- /dev/null
+++ b/db/docs_src/log/log_compare.so
@@ -0,0 +1,34 @@
+m4_comment([$Id: log_compare.so,v 10.22 2004/08/13 03:38:57 bostic Exp $])
+
+define(M4PAGELOCAL, log_compare)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(log_compare),
+ifelse(M4API, C_API, [dnl
+int
+log_compare(const DB_LSN *lsn0, const DB_LSN *lsn1);
+])
+ifelse(M4API, CXX_API, [dnl
+static int
+DbEnv::log_compare(const DbLsn *lsn0, const DbLsn *lsn1);
+]))
+
+m4_p([dnl
+The m4_refT(log_compare) allows the caller to compare two
+ifelse(M4API, C_API, [DB_LSN structures,], [m4_ref(DbLsn) objects,])
+returning 0 if they are equal, 1 if m4_arg(lsn0) is greater than
+m4_arg(lsn1), and -1 if m4_arg(lsn0) is less than m4_arg(lsn1).])
+
+m4_parambegin
+m4_param(lsn0, [dnl
+The m4_arg(lsn0) parameter is one of the
+ifelse(M4API, C_API, [DB_LSN structures], [m4_ref(DbLsn) objects])
+to be compared.])
+m4_param(lsn1, [dnl
+The m4_arg(lsn1) parameter is one of the
+ifelse(M4API, C_API, [DB_LSN structures], [m4_ref(DbLsn) objects])
+to be compared.])
+m4_paramend
+
+m4_seealso(DbLog)
+m4_page_footer
diff --git a/db/docs_src/log/log_cursor.so b/db/docs_src/log/log_cursor.so
new file mode 100644
index 000000000..aa9e7a603
--- /dev/null
+++ b/db/docs_src/log/log_cursor.so
@@ -0,0 +1,29 @@
+m4_comment([$Id: log_cursor.so,v 10.12 2004/08/13 03:38:57 bostic Exp $])
+
+define(M4PAGELOCAL, log_cursor)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(log_cursor),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__log_cursor(DB_ENV *dbenv, DB_LOGC **cursorp, u_int32_t flags);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::log_cursor(DbLogc **cursorp, u_int32_t flags);
+]))
+
+m4_p([dnl
+The m4_refT(log_cursor) returns a created log cursor.])
+
+m4_return(log_cursor, std)
+
+m4_parambegin
+m4_param_co(cursorp, created log cursor, REF)
+m4_unusedflags
+m4_paramend
+
+m4_err(log_cursor, einval)
+
+m4_seealso(DbLog)
+m4_page_footer
diff --git a/db/docs_src/log/log_file.so b/db/docs_src/log/log_file.so
new file mode 100644
index 000000000..4acbf2fa1
--- /dev/null
+++ b/db/docs_src/log/log_file.so
@@ -0,0 +1,51 @@
+m4_comment([$Id: log_file.so,v 10.34 2004/08/13 03:38:57 bostic Exp $])
+
+define(M4PAGELOCAL, log_file)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(log_file),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__log_file(DB_ENV *env,
+ const DB_LSN *lsn, char *namep, size_t len);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::log_file(const DbLsn *lsn, char *namep, size_t len);
+]))
+
+m4_p([dnl
+The m4_refT(log_file) maps
+ifelse(M4API, C_API, [DB_LSN structures], [m4_ref(DbLsn) objects])
+to filenames, returning the name of the file containing the record named
+by m4_arg(lsn).])
+
+m4_p([dnl
+This mapping of
+ifelse(M4API, C_API, [DB_LSN structures], [m4_ref(DbLsn) objects])
+to files is needed for database administration. For example, a
+transaction manager typically records the earliest m4_ref(DbLsn) needed
+for restart, and the database administrator may want to archive log
+files to tape when they contain only m4_ref(DbLsn) entries before the
+earliest one needed for restart.])
+
+m4_return(log_file, std)
+
+m4_parambegin
+m4_param(lsn, [dnl
+The m4_arg(lsn) parameter is the
+ifelse(M4API, C_API, [DB_LSN structure], [m4_ref(DbLsn) object])
+for which a filename is wanted.])
+m4_param_co(namep, name of the file containing the record named by m4_arg(lsn))
+m4_param(len, [dnl
+The m4_arg(len) parameter is the length of the m4_arg(namep) buffer in
+bytes. If m4_arg(namep) is too short to hold the filename,
+m4_ref(log_file) will fail. (Log filenames are normally quite short,
+on the order of 10 characters.)])
+m4_paramend
+
+m4_err(log_file,
+einval, [supplied buffer was too small to hold the log filename])
+
+m4_seealso(DbLog)
+m4_page_footer
diff --git a/db/docs_src/log/log_flush.so b/db/docs_src/log/log_flush.so
new file mode 100644
index 000000000..164e85235
--- /dev/null
+++ b/db/docs_src/log/log_flush.so
@@ -0,0 +1,31 @@
+m4_comment([$Id: log_flush.so,v 10.31 2004/08/13 03:38:57 bostic Exp $])
+
+define(M4PAGELOCAL, log_flush)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(log_flush),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__log_flush(DB_ENV *env, const DB_LSN *lsn);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::log_flush(const DbLsn *lsn);
+]))
+
+m4_p([dnl
+The m4_refT(log_flush) writes log records to disk.])
+
+m4_return(log_flush, std)
+
+m4_parambegin
+m4_param(lsn, [dnl
+All log records with m4_ref(DbLsn) values less than or equal to the
+m4_arg(lsn) parameter are written to disk. If m4_arg(lsn) is NULL,
+all records in the log are flushed.])
+m4_paramend
+
+m4_err(log_flush, einval)
+
+m4_seealso(DbLog)
+m4_page_footer
diff --git a/db/docs_src/log/log_list.so b/db/docs_src/log/log_list.so
new file mode 100644
index 000000000..e16b1e061
--- /dev/null
+++ b/db/docs_src/log/log_list.so
@@ -0,0 +1,7 @@
+m4_comment([$Id: log_list.so,v 1.1 2002/08/30 20:00:56 bostic Exp $])
+
+m4_page_title([m4_db: Logging Subsystem and Related Methods])
+
+include(log/m4.methods)
+
+m4_page_footer
diff --git a/db/docs_src/log/log_printf.so b/db/docs_src/log/log_printf.so
new file mode 100644
index 000000000..78db7b15a
--- /dev/null
+++ b/db/docs_src/log/log_printf.so
@@ -0,0 +1,45 @@
+m4_comment([$Id: log_printf.so,v 1.1 2005/09/30 19:00:24 bostic Exp $])
+
+define(M4PAGELOCAL, log_printf)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(log_printf),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__log_printf(DB_ENV *env, DB_TXN *txnid, const char *fmt, ...);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::log_printf(DB_TXN *txnid, const char *fmt, ...);
+]))
+
+m4_p([dnl
+The m4_refT(log_printf) appends an informational message to the m4_db
+database environment log files.])
+
+m4_p([dnl
+The m4_refT(log_printf) allows applications to include information in
+the database environment log files, for later review using the
+m4_ref(db_printlog) utility. This method is intended for debugging and
+performance tuning.])
+
+m4_return(log_printf, std)
+
+m4_parambegin
+m4_param(txnid, [dnl
+If the logged message refers to an application-specified transaction,
+the m4_arg(txnid) parameter is a transaction handle returned from
+m4_ref(txn_begin); otherwise NULL.])
+
+m4_param(fmt, [dnl
+A format string that specifies how subsequent arguments (or arguments
+accessed via the variable-length argument facilities of stdarg(3)) are
+converted for output. The format string may contain any formatting
+directives supported by the underlying C library vsnprintf(3)
+function.])
+m4_paramend
+
+m4_err(log_printf, einval)
+
+m4_seealso(DbLog)
+m4_page_footer
diff --git a/db/docs_src/log/log_put.so b/db/docs_src/log/log_put.so
new file mode 100644
index 000000000..d94bfb0ff
--- /dev/null
+++ b/db/docs_src/log/log_put.so
@@ -0,0 +1,53 @@
+m4_comment([$Id: log_put.so,v 10.41 2004/08/13 03:38:57 bostic Exp $])
+
+define(M4PAGELOCAL, log_put)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(log_put),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__log_put(DB_ENV *env,
+ DB_LSN *lsn, const DBT *data, u_int32_t flags);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::log_put(DbLsn *lsn, const Dbt *data, u_int32_t flags);
+]))
+
+m4_p([dnl
+The m4_refT(log_put) appends records to the log. The m4_ref(DbLsn) of
+the put record is returned in the m4_arg(lsn) parameter.])
+
+m4_return(log_put, std)
+
+m4_parambegin
+m4_param(data, [dnl
+The m4_arg(data) parameter is the record to write to the log.
+m4_p([dnl
+The caller is responsible for providing any necessary structure to
+m4_arg(data). (For example, in a write-ahead logging protocol, the
+application must understand what part of m4_arg(data) is an operation
+code, what part is redo information, and what part is undo information.
+In addition, most transaction managers will store in m4_arg(data) the
+m4_ref(DbLsn) of the previous log record for the same transaction, to
+support chaining back through the transaction's log records during
+undo.)])])
+
+m4_param(flags, [dnl
+m4_sf_zmust(0)
+m4_tagbegin
+m4_tag(m4_idef(DB_FLUSH), [dnl
+The log is forced to disk after this record is written, guaranteeing
+that all records with m4_ref(DbLsn) values less than or equal to the
+one being "put" are on disk before m4_ref(log_put) returns.])
+m4_tagend])
+
+m4_param_co(lsn, m4_ref(DbLsn) of the put record)
+
+m4_paramend
+
+m4_err(log_flush,
+einval, [the record to be logged is larger than the maximum log record])
+
+m4_seealso(DbLog)
+m4_page_footer
diff --git a/db/docs_src/log/log_stat.so b/db/docs_src/log/log_stat.so
new file mode 100644
index 000000000..858cee3b4
--- /dev/null
+++ b/db/docs_src/log/log_stat.so
@@ -0,0 +1,125 @@
+m4_comment([$Id: log_stat.so,v 10.58 2007/06/22 16:57:15 bostic Exp $])
+
+define(M4PAGELOCAL, [log_stat, log_stat_print])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(log_stat),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__log_stat(DB_ENV *env, DB_LOG_STAT **statp, u_int32_t flags);
+m4_blank
+int
+DB_ENV-__GT__log_stat_print(DB_ENV *env, u_int32_t flags);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::log_stat(DB_LOG_STAT **statp, u_int32_t flags);
+m4_blank
+int
+DbEnv::log_stat_print(u_int32_t flags);
+]))
+
+m4_p([dnl
+The m4_refT(log_stat) returns the logging subsystem statistics.])
+
+m4_p([dnl
+The m4_refT(log_stat) creates a statistical structure of type
+DB_LOG_STAT and copies a pointer to it into a user-specified memory
+location.])
+
+m4_alloc([Statistical structures])
+
+m4_p([dnl
+The following DB_LOG_STAT fields will be filled in:])
+
+m4_tagbegin
+m4_field(u_int32_t, st_magic,
+[The magic number that identifies a file as a log file.])
+
+m4_field(u_int32_t, st_version,
+[The version of the log file type.])
+
+m4_field(int, st_mode,
+[The mode of any created log files.])
+
+m4_field(u_int32_t, st_lg_bsize,
+[The in-memory log record cache size.])
+
+m4_field(u_int32_t, st_lg_size,
+[The log file size.])
+
+m4_field(u_int32_t, st_record,
+[The number of records written to this log.])
+
+m4_field(u_int32_t, st_w_mbytes,
+[The number of megabytes written to this log.])
+
+m4_field(u_int32_t, st_w_bytes,
+[The number of bytes over and above m4_arg(st_w_mbytes) written to this log.])
+
+m4_field(u_int32_t, st_wc_mbytes,
+[The number of megabytes written to this log since the last checkpoint.])
+
+m4_field(u_int32_t, st_wc_bytes,
+[The number of bytes over and above m4_arg(st_wc_mbytes) written to this log
+since the last checkpoint.])
+
+m4_field(u_int32_t, st_wcount,
+[The number of times the log has been written to disk.])
+
+m4_field(u_int32_t, st_wcount_fill,
+[The number of times the log has been written to disk because the
+in-memory log record cache filled up.])
+
+m4_field(u_int32_t, st_rcount,
+[The number of times the log has been read from disk.])
+
+m4_field(u_int32_t, st_scount,
+[The number of times the log has been flushed to disk.])
+
+m4_field(u_int32_t, st_cur_file,
+[The current log file number.])
+
+m4_field(u_int32_t, st_cur_offset,
+[The byte offset in the current log file.])
+
+m4_field(u_int32_t, st_disk_file,
+[The log file number of the last record known to be on disk.])
+
+m4_field(u_int32_t, st_disk_offset,
+[The byte offset of the last record known to be on disk.])
+
+m4_field(u_int32_t, st_maxcommitperflush,
+[The maximum number of commits contained in a single log flush.])
+
+m4_field(u_int32_t, st_mincommitperflush,
+[The minimum number of commits contained in a single log flush that
+contained a commit.])
+
+m4_field(roff_t, st_regsize,
+[The size of the log region, in bytes.])
+
+m4_field(u_int32_t, st_region_wait,
+[The number of times that a thread of control was forced to wait before
+obtaining the log region mutex.])
+
+m4_field(u_int32_t, st_region_nowait,
+[The number of times that a thread of control was able to obtain
+the log region mutex without waiting.])
+m4_tagend
+
+m4_when_after_envopen(log_stat)
+
+m4_return(log_stat, std)
+
+m4_parambegin
+m4_param(flags, m4_stat_flags)
+m4_param_co(statp, allocated statistics structure, REF)
+m4_paramend
+
+m4_err(log_stat, einval)
+
+m4_stat_print(log_stat_print, logging subsystem, log_stat)
+
+m4_seealso(DbLog)
+m4_page_footer
diff --git a/db/docs_src/log/logc_class.so b/db/docs_src/log/logc_class.so
new file mode 100644
index 000000000..ba06376d6
--- /dev/null
+++ b/db/docs_src/log/logc_class.so
@@ -0,0 +1,22 @@
+m4_comment([$Id: logc_class.so,v 1.8 2004/08/13 03:38:57 bostic Exp $])
+
+define(M4PAGELOCAL, DbLogc)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(DbLogc),
+ifelse(M4API, C_API, [dnl
+typedef struct __db_log_cursor DB_LOGC;
+])
+ifelse(M4API, CXX_API, [dnl
+class DbLogc { ... };
+]))
+
+m4_p([dnl
+The m4_ref(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 m4_refT(logc_close) is called,
+the handle may not be accessed again, regardless of that method's
+return.])
+
+m4_seealso(DbLog)
+m4_page_footer
diff --git a/db/docs_src/log/logc_close.so b/db/docs_src/log/logc_close.so
new file mode 100644
index 000000000..0487dc461
--- /dev/null
+++ b/db/docs_src/log/logc_close.so
@@ -0,0 +1,30 @@
+m4_comment([$Id: logc_close.so,v 10.13 2004/08/13 03:38:57 bostic Exp $])
+
+define(M4PAGELOCAL, logc_close)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(logc_close),
+ifelse(M4API, C_API, [dnl
+int
+DB_LOGC-__GT__close(DB_LOGC *cursor, u_int32_t flags);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbLogc::close(u_int32_t flags);
+]))
+
+m4_p([dnl
+The m4_refT(logc_close) discards the log cursor. After m4_ref(logc_close)
+has been called, regardless of its return, the cursor handle may not be
+used again.])
+
+m4_return(logc_close, std)
+
+m4_parambegin
+m4_unusedflags
+m4_paramend
+
+m4_err(logc_close, einval, [the cursor was previously closed])
+
+m4_seealso(DbLog)
+m4_page_footer
diff --git a/db/docs_src/log/logc_get.so b/db/docs_src/log/logc_get.so
new file mode 100644
index 000000000..9d9328096
--- /dev/null
+++ b/db/docs_src/log/logc_get.so
@@ -0,0 +1,101 @@
+m4_comment([$Id: logc_get.so,v 10.48 2004/08/13 03:38:57 bostic Exp $])
+
+define(M4PAGELOCAL,
+ [logc_get, DB_CURRENT, DB_FIRST, DB_LAST, DB_NEXT, DB_PREV, DB_SET])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(logc_get),
+ifelse(M4API, C_API, [dnl
+int
+DB_LOGC-__GT__get(DB_LOGC *logc, DB_LSN *lsn, DBT *data, u_int32_t flags);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbLogc::get(DbLsn *lsn, Dbt *data, u_int32_t flags);
+]))
+
+m4_p([dnl
+The m4_refT(logc_get) returns records from the log.])
+
+m4_return(logc_get, prev)
+
+m4_parambegin
+m4_param(data, [dnl
+The data field of the m4_arg(data) structure is set to the record
+retrieved, and the size field indicates the number of bytes in the
+record. See m4_ref(Dbt) for a description of other fields in the
+m4_arg(data) structure. The m4_ref(DB_DBT_MALLOC),
+m4_ref(DB_DBT_REALLOC) and m4_ref(DB_DBT_USERMEM) flags may be specified
+for any m4_ref(Dbt) used for data retrieval.])
+
+m4_param(flags, [dnl
+m4_sf_must
+
+m4_tagbegin
+m4_tag(m4_idef(DB_CURRENT), [dnl
+Return the log record to which the log currently refers.])
+
+m4_tag(m4_idef(DB_FIRST), [dnl
+The first record from any of the log files found in the log directory
+is returned in the m4_arg(data) parameter.
+The m4_arg(lsn) parameter is overwritten with the m4_ref(DbLsn) of the
+record returned.
+m4_return(logc_get, specific, DB_NOTFOUND,
+[if m4_ref(DB_FIRST) is set and the log is empty])])
+
+m4_tag(m4_idef(DB_LAST), [dnl
+The last record in the log is returned in the m4_arg(data) parameter.
+The m4_arg(lsn) parameter is overwritten with the m4_ref(DbLsn) of the
+record returned.
+m4_return(logc_get, specific, DB_NOTFOUND,
+[if m4_ref(DB_LAST) is set and the log is empty])])
+
+m4_tag([m4_idef(DB_NEXT)], [dnl
+The current log position is advanced to the next record in the log, and
+that record is returned in the m4_arg(data) parameter. The m4_arg(lsn)
+parameter is overwritten with the m4_ref(DbLsn) of the record returned.
+m4_p([dnl
+If the cursor has not been initialized via DB_FIRST, DB_LAST, DB_SET,
+DB_NEXT, or DB_PREV, m4_ref(logc_get) will return the first record in
+the log.])
+m4_return(logc_get, specific, DB_NOTFOUND,
+[if m4_ref(DB_NEXT) is set and the last log record has already been
+returned or the log is empty])])
+
+m4_tag([m4_idef(DB_PREV)], [dnl
+The current log position is advanced to the previous record in the log,
+and that record is returned in the m4_arg(data) parameter. The
+m4_arg(lsn) parameter is overwritten with the m4_ref(DbLsn) of the record
+returned.
+m4_p([dnl
+If the cursor has not been initialized via DB_FIRST, DB_LAST, DB_SET,
+DB_NEXT, or DB_PREV, m4_ref(logc_get) will return the last record in the
+log.])
+m4_return(logc_get, specific, DB_NOTFOUND,
+[if m4_ref(DB_PREV) is set and the first log record has already been
+returned or the log is empty])])
+
+m4_tag(m4_idef(DB_SET), [dnl
+Retrieve the record specified by the m4_arg(lsn) parameter.])
+m4_tagend])
+
+m4_param(lsn, [dnl
+When the m4_arg(flag) parameter is set to m4_ref(DB_CURRENT),
+m4_ref(DB_FIRST), m4_ref(DB_LAST), m4_ref(DB_NEXT) or m4_ref(DB_PREV),
+the m4_arg(lsn) parameter is overwritten with the m4_ref(DbLsn) value
+of the record retrieved. When m4_arg(flag) is set to m4_ref(DB_SET),
+the m4_arg(lsn) parameter is the m4_ref(DbLsn) value of the record to
+be retrieved.])
+
+m4_paramend
+
+m4_err(logc_get, einval,
+[the m4_ref(DB_CURRENT) flag was set and the log cursor has not yet
+been initialized;
+the m4_ref(DB_CURRENT), m4_ref(DB_NEXT), or m4_ref(DB_PREV) flags were
+set and the log was opened with the DB_THREAD flag set;
+the m4_ref(DB_SET) flag was set and the specified log sequence number
+does not appear in the log])
+
+m4_seealso(DbLog)
+m4_page_footer
diff --git a/db/docs_src/log/lsn_class.so b/db/docs_src/log/lsn_class.so
new file mode 100644
index 000000000..ee4bc74e0
--- /dev/null
+++ b/db/docs_src/log/lsn_class.so
@@ -0,0 +1,21 @@
+m4_comment([$Id: lsn_class.so,v 10.21 2004/08/13 03:38:57 bostic Exp $])
+
+define(M4PAGELOCAL, DbLsn)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(DbLsn),
+ifelse(M4API, C_API, [dnl
+typedef struct __db_lsn DB_LSN;
+])
+ifelse(M4API, CXX_API, [dnl
+class DbLsn : public DB_LSN { ... };
+]))
+
+m4_p([dnl
+The m4_ref(DbLsn) object is a m4_bold([log sequence number]) which
+specifies a unique location in a log file. A m4_ref(DbLsn) consists of
+two unsigned 32-bit integers -- one specifies the log file number, and
+the other specifies an offset in the log file.])
+
+m4_seealso(DbLog)
+m4_page_footer
diff --git a/db/docs_src/log/m4.methods b/db/docs_src/log/m4.methods
new file mode 100644
index 000000000..4483b6d94
--- /dev/null
+++ b/db/docs_src/log/m4.methods
@@ -0,0 +1,28 @@
+m4_comment([$Id: m4.methods,v 1.6 2005/09/30 19:00:24 bostic Exp $])
+
+m4_table_begin(, _center)
+
+m4_table_header(Logging Subsystem and Related Methods, Description)
+m4_comment([DbLsn])m4_table_element(m4_ref(DbLsn), Log Sequence Numbers)
+m4_comment([log_compare])m4_table_element(m4_ref(log_compare), Compare two Log Sequence Numbers)
+m4_comment([DbEnv::log_archive])m4_table_element(m4_ref(log_archive), List log and database files)
+m4_comment([DbEnv::log_file])m4_table_element(m4_ref(log_file), Map Log Sequence Numbers to log files)
+m4_comment([DbEnv::log_flush])m4_table_element(m4_ref(log_flush), Flush log records)
+m4_comment([DbEnv::log_printf])m4_table_element(m4_ref(log_printf), Append informational message to the log)
+m4_comment([DbEnv::log_put])m4_table_element(m4_ref(log_put), Write a log record)
+m4_comment([DbEnv::log_stat])m4_table_element(m4_ref(log_stat), Return log subsystem statistics)
+
+m4_table_header(Logging Subsystem Cursors, _empty)
+m4_comment([DbLogc::])ifelse(M4API, CXX_API, [m4_table_element(m4_ref(DbLogc), Log Cursor Object)])
+m4_comment([DbLogc::])m4_table_element(m4_ref(log_cursor), Create a log cursor handle)
+m4_comment([DbLogc::close])m4_table_element(m4_ref(logc_close), Close a log cursor)
+m4_comment([DbLogc::get])m4_table_element(m4_ref(logc_get), Retrieve a log record)
+
+m4_table_header(Logging Subsystem Configuration, _empty)
+m4_comment([DbEnv::set_lg_bsize])m4_table_element(m4_ref(dbenv_set_lg_bsize), Set log buffer size)
+m4_comment([DbEnv::set_lg_dir])m4_table_element(m4_ref(dbenv_set_lg_dir), Set the environment logging directory)
+m4_comment([DbEnv::set_lg_filemode])m4_table_element(m4_ref(dbenv_set_lg_filemode), Set log file mode)
+m4_comment([DbEnv::set_lg_max])m4_table_element(m4_ref(dbenv_set_lg_max), Set log file size)
+m4_comment([DbEnv::set_lg_regionmax])m4_table_element(m4_ref(dbenv_set_lg_regionmax), Set logging region size)
+
+m4_table_end
diff --git a/db/docs_src/m4/m4.db b/db/docs_src/m4/m4.db
new file mode 100644
index 000000000..f44cdf045
--- /dev/null
+++ b/db/docs_src/m4/m4.db
@@ -0,0 +1,514 @@
+dnl $Id: m4.db,v 10.188 2007/07/12 18:27:43 bostic Exp $
+
+include(m4/m4.init)
+include(m4/m4.html)
+include(m4/m4.flags)
+include(m4/m4.err)
+include(m4/m4.ret)
+ifelse(M4PRODUCT, XML, [include(m4/m4.xml)])
+include(m4/m4.links)
+ifelse(M4PRODUCT, XML, [include(m4/m4.xmllinks)])
+
+dnl Product names
+define(m4_am, m4_db Data Store)
+define(m4_cam, m4_db Concurrent Data Store)
+define(m4_ha, m4_db High Availability)
+define(m4_tam, m4_db Transactional Data Store)
+define(m4_xml, m4_db XML)
+define(m4_sxml, BDB XML)
+
+dnl Standards
+define(m4_ansic_name, [ANSI C X3.159-1989 (ANSI C)])
+define(m4_posix1_name, [IEEE/ANSI Std 1003.1 (POSIX)])
+
+dnl m4_incextra --
+dnl API "includes". C/C++ have standard includes (although the
+dnl XML's header file includes the standard C++ header for you).
+dnl
+dnl $1: "XML" use the XML include rather than the C++ one.
+dnl else, if it's C/C++ it's a leading #define, it comes first.
+define(m4_incextra, [dnl
+ifelse(M4API, CXX_API, [dnl
+ifelse($1, XML, [m4_include(DbXml.hpp)], [$1
+m4_include(db_cxx.h)])],
+[$1
+m4_include(db.h)])])
+
+dnl Build the reference, and append the word "method".
+dnl $1: name
+define(m4_refT, [m4_ref($1) method])
+
+dnl Build the reference, and append the correct word "structure" or "object".
+dnl $1: name
+define(m4_refO, [m4_ref($1) ifelse(M4API, CXX_API, object, structure)])
+
+dnl Some methods aren't available in C++.
+dnl $1: method
+define(m4_no_such_method, [dnl
+m4_p([The m4_refT($1) is not included in the m4_db C++ API.])
+m4_page_footer
+m4exit])
+define(m4_no_such_class, [dnl
+m4_p([The $1 class is not included in the m4_db C++ API.])
+m4_page_footer
+m4exit])
+
+dnl ###################################################################
+dnl OBJECT-IN-ALLOCATED MEMORY MACRO:
+dnl #1: the allocated object
+dnl ###################################################################
+define(m4_alloc, [m4_p([dnl
+$1 are stored in allocated memory. If application-specific allocation
+routines have been declared (see m4_ref(dbenv_set_alloc) for more
+information), they are used to allocate the memory; otherwise, the
+standard C library m4_manref(malloc, 3) is used. The caller is
+responsible for deallocating the memory. To deallocate the memory, free
+the memory reference; references inside the returned memory need not be
+individually freed.])])
+
+dnl ###################################################################
+dnl BULK GET MEMORY
+dnl ###################################################################
+define(m4_bulk_mem, [dnl
+The buffer to which the m4_arg(data) parameter refers must be provided
+from user memory (see m4_ref(DB_DBT_USERMEM)). The buffer must be at
+least as large as the page size of the underlying database, aligned for
+unsigned integer access, and be a multiple of 1024 bytes in size. If
+the buffer size is insufficient, then upon return from the call the size
+field of the m4_arg(data) parameter will have been set to an estimated
+buffer size, m4_err_mem_insufficient. (The size is an estimate as the
+exact size needed may not be known until all entries are read. It is
+best to initially provide a relatively large buffer, but applications
+should be prepared to resize the buffer as necessary and repeatedly call
+the method.)])
+
+dnl ###################################################################
+dnl DB_HOME/set_data_dir
+dnl #1: the function name
+dnl #2: "0" if DB_ENV function, "1" if DB function.
+dnl
+dnl Several DB_ENV/DB functions are affected by DB_HOME and the data
+dnl directory value.
+dnl ###################################################################
+define(m4_data_location, [m4_p([ifelse([$2], 0, [The ], [dnl
+If the database was opened within a database environment, the])
+environment variable m4_envvar(DB_HOME) may be used as the path of the
+database environment home.])
+m4_p([m4_ref($1) is affected by any database directory specified using
+the m4_refT(dbenv_set_data_dir), or by setting the "set_data_dir" string
+in the environment's m4_path(DB_CONFIG) file.])])
+
+dnl When the method has a corresponding DB_CONFIG file entry.
+dnl #1: method
+dnl #2: value
+dnl #3: matching string
+dnl #4: syntax
+dnl #5: "no" if doesn't overrule other configuration.
+define(m4_env_config, [m4_p([dnl
+The database environment's $2 may also be configured using the
+environment's m4_path(DB_CONFIG) file. The syntax of the entry in that
+file is a single line with the string "$3", one or more whitespace
+characters, and $4.
+ifelse([$5], no,, [dnl
+Because the m4_path(DB_CONFIG) file is read when the database
+environment is opened, it will silently overrule configuration done
+before that time.])])])
+
+define(m4_env_flags, [dnl
+m4_idefz([use @environment constants in naming])
+m4_tag(m4_idef(DB_USE_ENVIRON), [dnl
+The m4_db process' environment may be permitted to specify information
+to be used when naming files; see m4_link(M4RELDIR/ref/env/naming,
+[m4_db File Naming]). Because permitting users to specify which files
+are used can create security problems, environment information will be
+used in file naming for all users only if the DB_USE_ENVIRON
+flag is set.])
+m4_tag(m4_idef(DB_USE_ENVIRON_ROOT), [dnl
+The m4_db process' environment may be permitted to specify information
+to be used when naming files; see m4_link(M4RELDIR/ref/env/naming,
+[m4_db File Naming]). Because permitting users to specify which files
+are used can create security problems, if the
+DB_USE_ENVIRON_ROOT flag is set, environment information will
+be used for file naming only for users with appropriate permissions (for
+example, users with a user-ID of 0 on UNIX systems).])])
+
+dnl ###################################################################
+dnl DOCUMENT AN UNDERLYING FUNCTION:
+dnl m4_underfunc --
+dnl #1 function name
+dnl #2 underlying function name
+dnl #3 utility name
+dnl ###################################################################
+define(m4_underfunc, [dnl
+ifelse(M4API, C_API, [m4_p([dnl
+The m4_refT($1) is the underlying method used by the m4_ref($3) utility.
+See the m4_ref($3) utility source code for an example of using m4_ref($2)
+in a m4_posix1_name environment.])])
+ifelse(M4API, UTILITY, [m4_p([dnl
+The m4_refT($1) is the underlying method used by the m4_ref($3) utility.
+See the m4_ref($3) utility source code for an example of using m4_ref($2)
+in a m4_posix1_name environment.])])])
+
+dnl ###################################################################
+dnl METHOD MODIFIES DB_ENV, NOT DB
+dnl m4_really_dbenv --
+dnl #1 DB function name
+dnl #2 DB_ENV function name
+dnl ###################################################################
+define(m4_really_dbenv, [m4_p([dnl
+For m4_ref(Db) handles opened inside of m4_db environments, calling the
+m4_refT($1) affects the entire environment and is equivalent to calling
+the m4_refT($2).])])
+
+dnl ###################################################################
+dnl Jump functions
+dnl m4_ansi_func ANSI C function replacement.
+dnl m4_posix_func POSIX standard
+dnl m4_ret_internal Return value.
+dnl #1: function name
+dnl ###################################################################
+define(m4_ansi_func, [m4_p([dnl
+Replace m4_db calls to the ANSI C X3.159-1989 (ANSI C) standard
+m4_bold($1) function with m4_arg(func_$1), which must conform to the
+standard interface specification.])])
+
+define(m4_posix_func, [m4_p([dnl
+Replace m4_db calls to the m4_posix1_name m4_bold($1) function with
+m4_arg(func_$1), which must conform to the standard interface
+specification.])])
+
+define(m4_ret_internal, [m4_p([dnl
+The m4_arg($1) function must return the value of m4_envvar(errno) on
+failure and 0 on success.])])
+
+define(m4_param_replace, [dnl
+m4_parambegin
+m4_param([$1], [dnl
+The m4_arg([$1]) parameter is the replacement function. It must conform
+to the standard interface specification.])
+m4_paramend])
+
+dnl ###################################################################
+dnl Stat print functions
+dnl #1: function
+dnl #2: type of statistics
+dnl #3: stat function that lists the default fields
+dnl #4: "no" if m4_pf_description call isn't needed
+dnl ###################################################################
+define(m4_stat_print, [dnl
+ifelse($4, no,, m4_pf_description(m4_ref($1)))
+m4_p([dnl
+The m4_refT($1) displays the
+ifelse($2,, [default statistical information.],
+[$2 statistical information, as described for the m4_refT($3).])
+The information is printed to a specified output channel (see the
+m4_refT(dbenv_set_msgfile) for more information), or passed to an
+application callback function (see the m4_refT(dbenv_set_msgcall) for
+more information).])
+ifelse($1, dbh_stat_print, m4_when_after_dbopen($1), m4_when_after_envopen($1))
+m4_return($1, std)
+m4_parambegin
+m4_param(flags, [dnl
+m4_sf_or_may(0)
+m4_tagbegin
+ifelse($1, dbh_stat_print, [dnl
+m4_tag(m4_idef(DB_FAST_STAT), [dnl
+Return only the values which do not require traversal of the database.
+Among other things, this flag makes it possible for applications to
+request key and record counts without incurring the performance penalty
+of traversing the entire database.])])
+m4_tag(m4_idef(DB_STAT_ALL), [dnl
+Display all available information.])
+ifelse($1, dbh_stat_print,, [dnl
+m4_tag(m4_idef(DB_STAT_CLEAR), [dnl
+Reset statistics after displaying their values.])])
+ifelse($1, lock_stat_print, [dnl
+m4_tagns(m4_idef(DB_STAT_LOCK_CONF), [dnl
+Display the lock conflict matrix.])
+m4_tagns(m4_idef(DB_STAT_LOCK_LOCKERS), [dnl
+Display the lockers within hash chains.])
+m4_tagns(m4_idef(DB_STAT_LOCK_OBJECTS), [dnl
+Display the lock objects within hash chains.])
+m4_tagns(m4_idef(DB_STAT_LOCK_PARAMS), [dnl
+Display the locking subsystem parameters.])])
+ifelse($1, memp_stat_print, [dnl
+m4_tag(m4_idef(DB_STAT_MEMP_HASH), [dnl
+Display the buffers with hash chains.])])
+ifelse($1, dbenv_stat_print, [dnl
+m4_tag(m4_idef(DB_STAT_SUBSYSTEM), [dnl
+Display information for all configured subsystems.])])
+m4_tagend])
+m4_paramend])
+
+dnl ###################################################################
+dnl Common destructor language.
+dnl #1: handle
+dnl #2: method
+dnl ###################################################################
+define(m4_destructor, [m4_p([dnl
+The m4_ref($1) handle may not be accessed again after m4_ref($2) is
+called, regardless of its return.])])
+
+dnl ###################################################################
+dnl The scope of the configuration method.
+dnl #1: method
+dnl ###################################################################
+define(m4_scope_process, [m4_p([dnl
+The m4_refT($1) configures all operations performed by a process and
+all of its threads of control, not operations confined to a single
+database environment.])])
+define(m4_scope_dbenv, [m4_p([dnl
+The m4_refT($1) configures operations performed using the specified
+m4_ref(DbEnv) handle, not all operations performed on the underlying
+database environment.])])
+define(m4_scope_env, [m4_p([dnl
+The m4_refT($1) configures a database environment, not only operations
+performed using the specified m4_ref(DbEnv) handle.])])
+define(m4_scope_mpf, [m4_p([dnl
+The m4_refT($1) configures a file in the memory pool, not only
+operations performed using the specified m4_ref(DbMpoolFile) handle.])])
+define(m4_scope_mpf_flags, [m4_p([dnl
+The m4_ref($1) flag configures a file in the memory pool, not only
+operations performed using the specified m4_ref(DbMpoolFile) handle.])])
+define(m4_scope_db, [m4_p([dnl
+The m4_refT($1) configures a database, not only operations performed
+using the specified m4_ref(Db) handle.])])
+define(m4_scope_dbh, [m4_p([dnl
+The m4_refT($1) configures operations performed using the specified
+m4_ref(Db) handle, not all operations performed on the underlying
+database.])])
+define(m4_scope_tx, [m4_p([dnl
+The m4_refT($1) configures operations performed on the underlying
+transaction, not only operations performed using the specified
+m4_ref(DbTxn) handle.])])
+
+dnl ###################################################################
+dnl When the configuration methods can be called.
+dnl #1: method
+dnl #2: what happens if config info doesn't match existing object.
+dnl (error, ignored, corrupt, overwrite)
+dnl ###################################################################
+define(m4_when_any, [m4_p([dnl
+The m4_refT($1) may be called at any time during the life of the
+application.])])
+
+define(m4_when_init, [m4_p([dnl
+Although the m4_refT($1) may be called at any time during the life of
+the application, it should normally be called before making calls to the
+m4_ref(dbenv_create) or m4_refT(dbh_create)s.])])
+
+define(m4_when_envopen, [m4_p([dnl
+The m4_refT($1) may not be called after the m4_refT(dbenv_open) is
+called.
+ifelse($2, error, [If the database environment already exists when
+m4_ref(dbenv_open) is called, the information specified to m4_ref($1)
+must be consistent with the existing environment or an error will be
+returned.])
+ifelse($2, ignored, [If the database environment already exists when
+m4_ref(dbenv_open) is called, the information specified to m4_ref($1)
+will be ignored.])
+ifelse($2, corrupt, [If the database environment already exists when
+m4_ref(dbenv_open) is called, the information specified to m4_ref($1)
+must be consistent with the existing environment or corruption can
+occur.])])])
+
+define(m4_when_after_envopen, [m4_p([dnl
+The m4_refT($1) may not be called before the m4_refT(dbenv_open) has
+been called.])])
+
+define(m4_when_mpfopen, [m4_p([dnl
+The m4_refT($1) may not be called after the m4_refT(memp_fopen) is
+called.
+ifelse($2, error, [If the file is already open in the memory pool when
+m4_ref(memp_fopen) is called, the information specified to m4_ref($1)
+must be consistent with the existing file or an error will be
+returned.])
+ifelse($2, overwrite, [If the file is already open in the memory pool when
+m4_ref(memp_fopen) is called, the information specified to m4_ref($1)
+will replace the existing information.])])])
+
+define(m4_when_dbopen, [m4_p([dnl
+The m4_refT($1) may not be called after the m4_refT(dbh_open) is called.
+ifelse($2, ignored, [If the database already exists when
+m4_ref(dbh_open) is called, the information specified to m4_ref($1) will
+be ignored.])
+ifelse($2, corrupt, [If the database already exists when
+m4_ref(dbh_open) is called, the information specified to m4_ref($1) must
+be the same as that historically used to create the database or
+corruption can occur.])])])
+
+define(m4_when_after_dbopen, [m4_p([dnl
+The m4_refT($1) may not be called before the m4_refT(dbh_open) has been
+called.])])
+
+define(m4_when_before_repmgr_start, [m4_p([dnl
+The m4_refT($1) must be called before the m4_refT(repmgr_start) has been
+called.])])
+
+dnl ###################################################################
+dnl Common getter language.
+dnl #1 method name
+dnl #2 method description
+dnl #3 text description for the variable (empty if same as #2)
+dnl #4 C/C++ variable name
+dnl #5 "reference" if it's a reference to an object, not a value
+dnl ###################################################################
+define(m4_pf_getter, [dnl
+m4_pf_description(m4_ref($1))
+m4_getter([$1], [$2], [$3], [$4], [$5])])
+
+define(m4_getter, [dnl
+m4_p([The m4_refT($1) returns the [$2].])
+ifelse(
+[$1], dbenv_get_open_flags, m4_when_after_envopen([$1]),
+[$1], dbh_get_open_flags, m4_when_after_dbopen([$1]), m4_when_any($1))
+ifelse([$4],,, [dnl
+ifelse([$1], dbh_getenv,, [m4_return($1, std)])
+m4_parambegin
+m4_param([$4],
+[The m4_refT($1) returns ifelse([$5], reference, a reference to) the
+ifelse([$3],, [$2], [$3]) in m4_arg([$4]).])
+m4_paramend])])
+
+dnl ###################################################################
+dnl Stat fields.
+dnl #1 C/C++ type
+dnl #2 field name
+dnl #3 description
+dnl ###################################################################
+define(m4_field, [m4_tagns([$1] [$2];, [$3])])
+
+dnl ###################################################################
+dnl Parameters:
+dnl
+dnl m4_parambegin/end
+dnl m4_param
+dnl #1 C/C++ argument name
+dnl #2 description
+dnl ###################################################################
+define(m4_parambegin, [dnl
+m4_section(Parameters)
+m4_tagbegin])
+define(m4_paramend, m4_tagend)
+define(m4_param, [dnl
+define([__paramname], [$1])
+m4_tag(m4_arg(__paramname), [$2])])
+
+dnl ###################################################################
+dnl File/Directory parameters get standard Windows UTF-8 language.
+dnl #1: argument name
+dnl #2: argument text
+dnl ###################################################################
+define(m4_param_utf8, [dnl
+m4_param([$1], [$2])
+m4_p([dnl
+When using a Unicode build on Windows (the default), the m4_arg([$1])
+argument will be interpreted as a UTF-8 string, which is equivalent to
+ASCII for Latin characters.])])
+
+dnl ###################################################################
+dnl Standard copy-out language.
+dnl
+dnl m4_param_co --
+dnl #1: argument
+dnl #2: copied thing
+dnl #3: REF, if it's a reference to the object.
+dnl #4: additional text
+dnl ###################################################################
+define(m4_param_co, [m4_param([$1], [dnl
+The m4_arg([$1]) parameter references memory into which
+ifelse([$3], REF, a pointer to) the $2 is copied.]) $4])
+
+dnl ###################################################################
+dnl Standard not reentrant language.
+dnl ###################################################################
+define(m4_not_reentrant, [m4_p([dnl
+m4_db is not re-entrant. Callback functions should not attempt to make
+library calls (for example, to release locks or close open handles).
+Re-entering m4_db is not guaranteed to work correctly, and the results
+are undefined.])])
+
+dnl ###################################################################
+dnl The key/data argument language.
+dnl ###################################################################
+define(m4_param_key, [m4_param(key, [The key m4_ref(Dbt) operated on.])])
+define(m4_param_data, [m4_param(data, [The data m4_ref(Dbt) operated on.])])
+
+dnl ###################################################################
+dnl The filesystem mode argument language.
+dnl #1: the subsystem name.
+dnl ###################################################################
+define(m4_param_filemode, [dnl
+m4_param(mode, [dnl
+On Windows systems, the mode parameter is ignored.
+m4_p([dnl
+On UNIX systems or in m4_posix1_name environments, files created by $1
+are created with mode m4_arg(mode) (as described in m4_manref(chmod, 2))
+and modified by the process' umask value at the time of creation (see
+m4_manref(umask, 2)). Created files are owned by the process owner; the
+group ownership of created files is based on the system and directory
+defaults, and is not further specified by m4_db. System shared memory
+segments created by $1 are created with mode m4_arg(mode), unmodified
+by the process' umask value. If m4_arg(mode) is 0, $1 will use a
+default mode of readable and writable by both owner and group.])])])
+
+dnl ###################################################################
+dnl Transaction ID arguments.
+dnl
+dnl m4_param_txn --
+dnl #1: method
+dnl #2: "auto" if there's an auto-commit flag.
+dnl #2: "env" if an environment operation.
+dnl #2: "ro" if a read-only operation
+dnl #3: additional wording
+dnl ###################################################################
+define(m4_param_txn,
+[m4_param(txnid, [dnl
+If the operation is part of an application-specified transaction, the
+m4_arg(txnid) parameter is a transaction handle returned from
+m4_ref(txn_begin); if the operation is part of a m4_cam group, the
+m4_arg(txnid) parameter is a handle returned from
+m4_ref(cdsgroup_begin); otherwise NULL.
+ifelse([$2], ro,, [dnl
+If no transaction handle is
+specified, but the
+ifelse([$2], auto, [DB_AUTO_COMMIT flag is specified],
+[operation occurs in a transactional
+ifelse([$2], env, database environment, database)]),
+the operation will be implicitly transaction protected.])
+$3])])
+
+dnl ###################################################################
+dnl Replication lower-level API wording.
+dnl
+dnl m4_repl_lower --
+dnl #1: method
+dnl ###################################################################
+define(m4_repl_lower,
+[m4_p([The m4_ref($1) method is not called by most replication
+applications. It should only be called by applications implementing
+their own network transport layer, explicitly holding replication group
+elections and handling replication messages outside of the replication
+manager framework.])])
+
+dnl #################################################################
+dnl m4_linkjavadoc and supporting macros:
+dnl Link to specific javadoc location in any page.
+dnl #1: package
+dnl #2: class (optional)
+dnl #3: method (optional)
+dnl #################################################################
+dnl __m4_javasrcref
+dnl #1: package
+define(__m4_javasrcref, [dnl
+ifelse(index($1, com.sleepycat), 0, dnl
+[../../java/translit($1, ., /)], dnl
+ifelse(index($1, java), 0, dnl
+[http://java.sun.com/j2se/1.5.0/docs/api/translit($1, ., /)], $1))])
+
+define(m4_linkjavadoc, [dnl
+ifelse($#, 3,dnl
+[<a href="__m4_javasrcref($1)/$2.html__OCT__[pathsubst($3, ' ', '%20')]">$2.$3</a>],dnl
+$#, 2,dnl
+[<a href="__m4_javasrcref($1)/$2.html">$2</a>],dnl
+[<a href="__m4_javasrcref($1)/package-summary.html">$1</a>])])
diff --git a/db/docs_src/m4/m4.err b/db/docs_src/m4/m4.err
new file mode 100644
index 000000000..e38d75ae8
--- /dev/null
+++ b/db/docs_src/m4/m4.err
@@ -0,0 +1,238 @@
+dnl $Id: m4.err,v 10.145 2006/09/13 14:30:52 mjc Exp $
+dnl
+dnl ###################################################################
+dnl m4_err_mem_insufficient --
+dnl Inline error for insufficient memory to return a key/data pair.
+dnl ###################################################################
+define(m4_err_mem_insufficient, [dnl
+ifelse(M4EXCEPT, except_only,
+[and a m4_ref(DbMemoryException) is thrown],
+[and the error DB_BUFFER_SMALL is returned])])
+dnl ###################################################################
+dnl General errors:
+dnl
+dnl There are 3 cases: the C API, which just returns errors, the C++ API
+dnl which either throws exceptions or returns errors, and the XML API which
+dnl just throws exceptions.
+dnl
+dnl #1: API name
+dnl #2: Variadic list of errors.
+dnl
+dnl Some errors are well-known, and can either throw an exception or be
+dnl a normal return: buffersmall, deadlock, filenotfound, memory. In this
+dnl case, we immediately output the error for C, and save up the output for
+dnl C++, because we list exceptions after the laundry list of error returns.
+dnl
+dnl If the error isn't well-known, it's expected to be in pairs: the error
+dnl followed by the string associated with it.
+dnl ###################################################################
+define(m4_err, [dnl
+define([__m4_errapi], [m4_refT($1)])
+define([__m4_errneedheader], yes)
+m4_header(Errors)
+__m4_errloop(shift($@))
+undivert(1)])
+define(m4_errstr, [dnl
+define([__m4_errapi], [$1])
+define([__m4_errneedheader], yes)
+m4_header(Errors)
+__m4_errloop(shift($@))
+undivert(1)])
+dnl
+dnl ###################################################################
+dnl __m4_errheader
+dnl If we need header text, output it, but only once.
+dnl ###################################################################
+define(__m4_errheader, [ifelse(__m4_errneedheader, yes, [m4_p([dnl
+The __m4_errapi
+ifelse(M4EXCEPT, except_return,
+[may fail and throw
+ifelse(M4PRODUCT, XML, m4_ref(XmlException)[,], m4_ref(DbException)[,])
+encapsulating one of the following non-zero errors, or return one of
+the following non-zero errors:],
+M4EXCEPT, except_only,
+[may fail and throw
+ifelse(M4PRODUCT, XML, m4_ref(XmlException)[,], m4_ref(DbException)[,])
+encapsulating one of the following non-zero errors:],
+[may fail and return one of the following non-zero errors:])])
+define([__m4_errneedheader], no)])])
+dnl
+dnl ###################################################################
+dnl __m4_errloop
+dnl Helper macro: loop through exception list.
+dnl ###################################################################
+define(__m4_errloop, [dnl
+ifelse([$1],,,
+dnl ###################################################################
+dnl Buffer Small
+dnl Requires subsequent argument which is the reason for the failure.
+dnl ###################################################################
+[$1], buffersmall, [dnl
+ifelse(M4EXCEPT, return_only, [dnl
+__m4_errheader
+m4_tagbegin
+m4_tag(DB_BUFFER_SMALL, [The [$2].])
+m4_tagend],[dnl
+divert(1)
+m4_p([If the [$2], the __m4_errapi will fail and
+ifelse(M4EXCEPT, except_return, [either return DB_BUFFER_SMALL or])
+throw a m4_ref(DbMemoryException) exception.])
+divert(0)])
+__m4_errloop(shift(shift($@)))],
+dnl ###################################################################
+dnl Deadlock.
+dnl ###################################################################
+[$1], deadlock, [dnl
+ifelse(M4EXCEPT, return_only, [dnl
+__m4_errheader
+m4_tagbegin
+m4_tag(DB_LOCK_DEADLOCK, [dnl
+A transactional database environment operation was selected to resolve
+a deadlock.])
+m4_tag(DB_LOCK_NOTGRANTED, [dnl
+A m4_cam database environment configured for lock timeouts was unable
+to grant a lock in the allowed time.])
+m4_tagend],[dnl
+divert(1)
+m4_p([If a transactional database environment operation was selected to
+resolve a deadlock, the __m4_errapi will fail and
+ifelse(M4EXCEPT, except_return, [either return m4_ref(DB_LOCK_DEADLOCK) or])
+throw a m4_ref(DbDeadlockException) exception.])
+m4_p([If a m4_cam database environment configured for lock timeouts was unable
+to grant a lock in the allowed time, the __m4_errapi will fail and
+ifelse(M4EXCEPT, except_return, [either return m4_ref(DB_LOCK_NOTGRANTED) or])
+throw a m4_ref(DbLockNotGrantedException) exception.])
+divert(0)])
+__m4_errloop(shift($@))],
+dnl ###################################################################
+dnl Filenotfound
+dnl ###################################################################
+[$1], filenotfound, [dnl
+m4_tagbegin
+m4_tag(ENOENT, [The file or directory does not exist.])
+m4_tagend
+__m4_errloop(shift($@))],
+dnl ###################################################################
+dnl LockNotGranted
+dnl ###################################################################
+[$1], locknotgranted, [dnl
+ifelse(M4EXCEPT, return_only, [dnl
+__m4_errheader
+m4_tagbegin
+m4_tag(DB_LOCK_NOTGRANTED, [dnl
+The $2 lock could not be granted before the wait-time expired.])
+m4_tagend],[dnl
+divert(1)
+m4_p([If the $2 lock could not be granted before the wait-time expired,
+the __m4_errapi will fail and
+ifelse(M4EXCEPT, except_return, [either return DB_LOCK_NOTGRANTED or])
+throw a m4_ref(DbLockNotGrantedException) exception.])
+divert(0)])
+__m4_errloop(shift(shift($@)))],
+dnl ###################################################################
+dnl Memory
+dnl Requires subsequent argument which is the reason for the failure.
+dnl ###################################################################
+[$1], memory, [dnl
+ifelse(M4EXCEPT, return_only, [dnl
+__m4_errheader
+m4_tagbegin
+m4_tag(ENOMEM, [The [$2].])
+m4_tagend],[dnl
+divert(1)
+m4_p([If the [$2], the __m4_errapi will fail and
+ifelse(M4EXCEPT, except_return, [either return ENOMEM or])
+throw a DbMemoryException.])
+divert(0)])
+__m4_errloop(shift(shift($@)))],
+dnl ###################################################################
+dnl XML: generic underlying error from the core DB.
+dnl ###################################################################
+[$1], dberr, [dnl
+__m4_errheader
+m4_tagbegin
+m4_tag(DATABASE_ERROR, [dnl
+An error occurred in an underlying m4_db database. The
+m4_refT(xmlexception_getdberror) will return the error code for the
+error.])
+m4_tagend
+__m4_errloop(shift($@))],
+dnl ###################################################################
+dnl EACCESS because the database is read-only.
+dnl ###################################################################
+[$1], readonly, [dnl
+__m4_errheader
+m4_tagbegin
+m4_tag(EACCES, [An attempt was made to modify a read-only database.])
+m4_tagend
+__m4_errloop(shift($@))],
+dnl ###################################################################
+dnl EAGAIN because the region is unavailable.
+dnl ###################################################################
+[$1], regionagain, [dnl
+__m4_errheader
+m4_tagbegin
+m4_tag(EAGAIN, [dnl
+The shared memory region was locked and (repeatedly) unavailable.])
+m4_tagend
+__m4_errloop(shift($@))],
+dnl ###################################################################
+dnl EINVAL
+dnl Requires subsequent argument which is empty or a list of may be
+dnl additional reasons.
+dnl ###################################################################
+[$1], einval, [dnl
+__m4_errheader
+m4_tagbegin
+m4_tag(EINVAL, [dnl
+ifelse([$2],, An, If [$2]; or if an)
+invalid flag value or parameter was specified.])
+m4_tagend
+__m4_errloop(shift(shift($@)))],
+dnl ###################################################################
+dnl DB_REP_HANDLE_DEAD -- replication rolled back a commit record.
+dnl ###################################################################
+[$1], repinval, [dnl
+__m4_errheader
+m4_tagbegin
+m4_tag(DB_REP_HANDLE_DEAD, [dnl
+The database handle has been invalidated because a replication election
+unrolled a committed transaction.])
+m4_tag(DB_REP_LOCKOUT, [dnl
+The operation was blocked by client/master synchronization.])
+m4_tagend
+__m4_errloop(shift($@))],
+dnl ###################################################################
+dnl EPERM because write operation with read-only CDB cursor.
+dnl ###################################################################
+[$1], cdbperm, [dnl
+__m4_errheader
+m4_tagbegin
+m4_tag(EPERM , [dnl
+Write attempted on read-only cursor when the m4_ref(DB_INIT_CDB) flag was
+specified to m4_ref(dbenv_open).])
+m4_tagend
+__m4_errloop(shift($@))],
+dnl ###################################################################
+dnl Bad secondary.
+dnl ###################################################################
+[$1], secondary_bad, [dnl
+__m4_errheader
+m4_tagbegin
+m4_tag(DB_SECONDARY_BAD, [dnl
+A secondary index references a nonexistent primary key.])
+m4_tagend
+__m4_errloop(shift($@))],
+dnl ###################################################################
+dnl Empty entry (to support ifelse() constructs).
+dnl ###################################################################
+[$1], empty, [__m4_errloop(shift($@))],
+dnl ###################################################################
+dnl Everything else.
+dnl ###################################################################
+[dnl
+__m4_errheader
+m4_tagbegin
+m4_tag([$1], [$2])
+m4_tagend
+__m4_errloop(shift(shift($@)))])])
diff --git a/db/docs_src/m4/m4.flags b/db/docs_src/m4/m4.flags
new file mode 100644
index 000000000..cbd374d18
--- /dev/null
+++ b/db/docs_src/m4/m4.flags
@@ -0,0 +1,138 @@
+dnl $Id: m4.flags,v 10.144 2007/07/12 18:27:43 bostic Exp $
+dnl ###################################################################
+dnl FLAGS
+dnl ###################################################################
+dnl
+dnl OR'ing language.
+dnl
+define(m4_or, [bitwise inclusively m4_bold(OR)'ing])
+
+dnl
+dnl Unused flags.
+dnl
+define(m4_unusedflags, [dnl
+m4_param(flags, [dnl
+The m4_arg(flags) parameter is currently unused, and must be set to 0.])])
+
+dnl
+dnl Flags must be 0 or one of the following OR'd values.
+dnl
+define(m4_sf_or_may, [dnl
+The m4_arg(flags) parameter must be set to 0 or by m4_or together one
+or more of the following values:])
+
+dnl
+dnl Flags must be one of the following OR'd values.
+dnl
+define(m4_sf_or_must, [dnl
+The m4_arg(flags) parameter must be set by m4_or together one or more
+of the following values:])
+
+dnl
+dnl Flags may be added to by OR'ing one of the following values.
+dnl #1 "0" if a single flag, "1" if multiple flags
+dnl
+define(m4_sf_or_add, [dnl
+In addition, the following ifelse([$1],0, flag, flags) may be set by
+m4_or ifelse([$1],0, it, them) into the m4_arg(flags) parameter:])
+
+dnl
+dnl Flags must be one of the following values.
+dnl
+define(m4_sf_must, [dnl
+The m4_arg(flags) parameter must be set to one of the following values:])
+
+dnl
+dnl Flags must be 0 or one of the following values.
+dnl #1 "0" if a single flag, "1" if multiple flags
+dnl
+define(m4_sf_zmust, [dnl
+The m4_arg(flags) parameter must be set to 0 or
+ifelse([$1],0, the following value:, one of the following values:)])
+
+dnl ###################################################################
+dnl Additional flags: DB_AUTO_COMMIT
+dnl #1 method
+dnl ###################################################################
+define(m4_autocommit_flag, [dnl
+m4_tag(m4_idef(DB_AUTO_COMMIT), [dnl
+Enclose the m4_ref($1) call within a transaction. If the call succeeds,
+changes made by the operation will be recoverable. If the call fails,
+the operation will have made no changes.])])
+
+dnl ###################################################################
+dnl Additional flags: RMW
+dnl #1 additional text
+dnl ###################################################################
+define(m4_rmw_flag, [dnl
+m4_tag(m4_idef(DB_RMW), [dnl
+Acquire write locks instead of read locks when doing the read, if
+locking is configured. Setting this flag can eliminate deadlock during
+a read-modify-write cycle by acquiring the write lock during the read
+part of the cycle so that another thread of control acquiring a read
+lock for the same item, in its own read-modify-write cycle, will not
+result in deadlock.
+ifelse([$1],,, [m4_p([$1])])])])
+
+dnl ###################################################################
+dnl lock_detect, set_lk_detect flags.
+dnl ###################################################################
+define(m4_lk_detect_flags, [dnl
+m4_tagbegin
+m4_tag(m4_idef(DB_LOCK_DEFAULT), [dnl
+Use whatever lock policy was specified when the database environment
+was created. If no lock policy has yet been specified, set the lock
+policy to DB_LOCK_RANDOM.])
+m4_tagns(m4_idef(DB_LOCK_EXPIRE), [dnl
+Reject lock requests which have timed out. No other deadlock detection
+is performed.])
+m4_tagns(m4_idef(DB_LOCK_MAXLOCKS), [dnl
+Reject the lock request for the locker ID with the most locks.])
+m4_tagns(m4_idef(DB_LOCK_MAXWRITE), [dnl
+Reject the lock request for the locker ID with the most write locks.])
+m4_tagns(m4_idef(DB_LOCK_MINLOCKS), [dnl
+Reject the lock request for the locker ID with the fewest locks.])
+m4_tagns(m4_idef(DB_LOCK_MINWRITE), [dnl
+Reject the lock request for the locker ID with the fewest write locks.])
+m4_tagns(m4_idef(DB_LOCK_OLDEST), [dnl
+Reject the lock request for the locker ID with the oldest lock.])
+m4_tagns(m4_idef(DB_LOCK_RANDOM), [dnl
+Reject the lock request for a random locker ID.])
+m4_tagns(m4_idef(DB_LOCK_YOUNGEST), [dnl
+Reject the lock request for the locker ID with the youngest lock.])
+m4_tagend])
+
+dnl ###################################################################
+dnl Cache priority.
+dnl #1 method
+dnl ###################################################################
+define(m4_cache_priority_explain, [m4_p([dnl
+The priority of a page biases the replacement algorithm to be more or
+less likely to discard a page when space is needed in the buffer pool.
+The bias is temporary, and pages will eventually be discarded if they
+are not referenced again. The m4_refT($1) is only advisory, and does
+not guarantee pages will be treated in a specific way.])])
+
+define(m4_cache_priority_parameter, [dnl
+m4_param(priority, [dnl
+The m4_arg(priority) parameter must be set to one of the following
+values:
+m4_tagbegin
+m4_tag(m4_idef(DB_PRIORITY_VERY_LOW), [dnl
+The lowest priority: pages are the most likely to be discarded.])
+m4_tagns(m4_idef(DB_PRIORITY_LOW), [The next lowest priority.])
+m4_tagns(m4_idef(DB_PRIORITY_DEFAULT), [The default priority.])
+m4_tagns(m4_idef(DB_PRIORITY_HIGH), [The next highest priority.])
+m4_tagns(m4_idef(DB_PRIORITY_VERY_HIGH), [dnl
+The highest priority: pages are the least likely to be discarded.])
+m4_tagend])])
+
+dnl ###################################################################
+dnl Stat flags:
+dnl ###################################################################
+define(m4_stat_flags, [dnl
+m4_sf_zmust(0)
+m4_tagbegin
+m4_tag(m4_idef(DB_STAT_CLEAR), [dnl
+Reset statistics after returning their values.])
+m4_tagend])
diff --git a/db/docs_src/m4/m4.html b/db/docs_src/m4/m4.html
new file mode 100644
index 000000000..192959664
--- /dev/null
+++ b/db/docs_src/m4/m4.html
@@ -0,0 +1,389 @@
+dnl $Id: m4.html,v 10.113 2007/07/06 18:24:52 bostic Exp $
+
+dnl ###################################################################
+dnl Fonts.
+dnl ###################################################################
+dnl Bold font
+define(m4_bold, <b>$1</b>)
+
+dnl Constant width bold font -- same as m4_bold in HTML
+define(m4_cbold, <b>$1</b>)
+
+dnl Italic font
+define(m4_italic, <i>$1</i>)
+
+dnl Environmental variable.
+dnl #1: variable
+define(m4_envvar, <b>$1</b>)
+
+dnl Pathname.
+dnl #1: path
+define(m4_path, <b>$1</b>)
+
+dnl Function argument.
+dnl #1: argument name
+define(m4_arg, <b>$1</b>)
+
+dnl Utility option/flag.
+define(m4_option, <b>-$1</b>)
+
+dnl Utility argument
+define(m4_utilarg, __LB__<b>-$1</b>__RB__)
+
+dnl UNIX manual reference.
+dnl #1: man page name
+dnl #2: section
+define(m4_manref, [<b>$1</b>($2)])
+
+dnl ###################################################################
+dnl Special Characters, Escapes.
+dnl ###################################################################
+dnl Superimposed
+define(m4_sup, [$1<sup>$2</sup>])
+
+dnl Backslash preceded string.
+dnl #1: characters after the backslash
+define(m4_backslash, [\$1])
+
+dnl Angle-bracket quoted string.
+define(m4_htmlquote, [&lt;$1&gt;])
+
+dnl C include file
+dnl #1: include file name
+define(m4_include, [__OCT__include &lt;$1&gt;])
+
+dnl ###################################################################
+dnl Miscellaneous.
+dnl ###################################################################
+dnl Berkeley DB
+define(m4_db, [Berkeley DB])
+
+dnl Comment
+define(m4_comment, <!--$1-->)
+
+dnl Copyright strings.
+define(m4_copyright_source, [dnl
+<!--Copyright (c) 1997,2007 Oracle. All rights reserved.-->
+<!--See the file LICENSE for redistribution information.-->])
+
+define(m4_copyright_footer, [dnl
+<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>])
+
+dnl M4_meta definition moved to html.sed to prevent line breaks
+define(m4_meta, __M4_META__)
+
+dnl Just discard.
+define(m4_ignore,)
+
+dnl ###################################################################
+dnl Layout: basic.
+dnl ###################################################################
+dnl Header
+define(m4_header, <h3>$1</h3>)
+
+dnl Section
+define(m4_section, <h3>$1</h3>)
+
+dnl Subsection
+define(m4_subsection, <h4>$1</h4>)
+
+dnl Paragraph
+define(m4_p, [<p>$1</p>])
+
+dnl Horizontal line.
+define(m4_hl, [<hr size=1 noshade>])
+
+dnl Single blank line.
+define(m4_blank, [<p>])
+
+dnl Literal text block.
+dnl #1: string
+define(m4_literal, <pre>$1</pre>)
+
+dnl Indent literal text block.
+dnl #1: string
+define(m4_indent, <blockquote><pre>$1</pre></blockquote>)
+
+dnl Indent text block.
+dnl #1: string
+define(m4_indentv, <blockquote>$1</blockquote>)
+
+dnl PicGif display - Pic for ROFF/Gif for HTML
+dnl #1: align, e.g., center
+dnl #2: img src, e.g., M4RELDIR/ref/xxx
+dnl #3: alternate string
+define(m4_picgif, [<p align=$1><img src="$2.gif" alt="$3">])
+
+dnl ###################################################################
+dnl Layout: headers, titles and page bottoms.
+dnl ###################################################################
+dnl Reference Guide page leader.
+dnl #1: section
+dnl #2: page name
+dnl #3: index entries
+dnl #4,#5: prev, next
+define(m4_ref_title, [dnl
+ifelse($#, 5, , [errprint([$0: arg mismatch
+])])
+define(__m4_pagename, [$2])
+m4_copyright_source
+<html>
+<head>
+<title>ifelse(M4PRODUCT, XML, m4_xml, m4_db) Reference Guide: $2</title>
+m4_meta
+</head>
+<body bgcolor=white>
+m4_idefz($3)
+<table width="100%"><tr valign=top>
+<td><h3><dl><dt>ifelse(M4PRODUCT, XML, m4_xml, m4_db) Reference Guide:<dd>$1</dl></h3></td>
+<td align=right>dnl
+ifelse($4,,,
+<a href="../$4.html"><img src="M4RELDIR/images/prev.gif" alt="Prev"></a>)dnl
+<a href="../toc.html">dnl
+<img src="M4RELDIR/images/ref.gif" alt="Ref"></a>dnl
+ifelse($5,,,
+<a href="../$5.html"><img src="M4RELDIR/images/next.gif" alt="Next"></a>)
+</td></tr></table>
+<p>
+<h3 align=center>$2</h3>
+define(m4_page_footer, [dnl
+<table width="100%"><tr><td><br></td><td align=right>dnl
+ifelse($4,,,
+<a href="../$4.html"><img src="M4RELDIR/images/prev.gif" alt="Prev"></a>)dnl
+<a href="../toc.html">dnl
+<img src="M4RELDIR/images/ref.gif" alt="Ref"></a>dnl
+ifelse($5,,,
+<a href="../$5.html"><img src="M4RELDIR/images/next.gif" alt="Next"></a>)
+</td></tr></table>
+m4_copyright_footer
+</body>
+</html>])])
+
+dnl General purpose page leader
+dnl #1: page name
+define(m4_page_title, [dnl
+m4_copyright_source
+<html>
+<head>
+<title>ifelse(M4PRODUCT, XML, m4_xml:, m4_db:) $1</title>
+m4_meta
+</head>
+<body bgcolor=white>
+<h3 align=center>$1</h3>
+define(m4_page_footer, [dnl
+m4_copyright_footer
+</body>
+</html>])])
+
+dnl General purpose page header, included by specific page headers.
+dnl #1: page title string
+dnl #2: section header
+dnl #3: API/Ref links in header/footer {yes, no}
+define(m4_page_header, [dnl
+define(__m4_pagename, [$1])
+m4_copyright_source
+<html>
+<head>
+<title>ifelse(M4PRODUCT, XML, m4_xml:, m4_db:) $1</title>
+m4_meta
+</head>
+<body bgcolor=white>
+ifelse([$2],,, [dnl
+<table width="100%"><tr valign=top>
+<td>
+<h3>[$2]</h3>
+</td>
+ifelse([$3],,, [dnl
+<td align=right>
+<a href="m4_iurl"><img src="M4RELDIR/images/api.gif" alt="API"></a>
+<a href="M4RELDIR/ifelse(M4PRODUCT,XML,ref_xml,ref)/toc.html">dnl
+<img src="M4RELDIR/images/ref.gif" alt="Ref"></a></td>])
+</tr></table>
+m4_hl])
+<tt>
+define(m4_page_footer, [dnl
+</tt>
+ifelse([$3],,, [dnl
+<table width="100%"><tr><td><br></td><td align=right>
+<a href="m4_iurl"><img src="M4RELDIR/images/api.gif" alt="API"></a>dnl
+<a href="M4RELDIR/ifelse(M4PRODUCT,XML,ref_xml,ref)/toc.html">dnl
+<img src="M4RELDIR/images/ref.gif" alt="Ref"></a>
+</td></tr></table>])
+m4_copyright_footer
+</body>
+</html>])])
+
+dnl Description header for C/C++ API manual pages.
+define(m4_pf_description, [dnl
+m4_hl
+<h3>Description: [$1]</h3>])
+
+dnl Page header for C/C++ API manual pages.
+dnl #1: function name
+dnl #2: function declaration
+dnl #3: extra stuff
+define(m4_pf_header, [dnl
+m4_page_header([$1], [$1], yes)
+<h3><pre>
+m4_incextra([$3])
+ifelse([$2],,, [dnl
+<p>
+$2])
+</pre></h3>
+m4_pf_description([$1])])
+
+dnl Page header for Tcl manual pages.
+dnl #1: tcl command name
+dnl #2: tcl command name (correctly formatted)
+dnl #3: utility Synopsis line
+define(m4_tcl_header, [dnl
+m4_page_header([$1], [$2], yes)
+<h3><pre>$3</pre></h3>
+<h3>Description($1)</h3>])
+
+dnl Page header for utilities.
+dnl #1: utility name
+dnl #2: utility Synopsis line
+define(m4_util_header, [dnl
+m4_page_header([$1], [$1])
+<h3><pre>$2</pre></h3>
+<h3>Description</h3>])
+
+dnl ###################################################################
+dnl HTML links
+dnl ###################################################################
+dnl m4_link
+dnl Link to titled DB Reference Guide page.
+dnl #1: page
+dnl #2: string
+define(m4_link, [<a href="$1.html">$2</a>])
+
+dnl m4_linkpage
+dnl Link to specific address in any HTML page.
+dnl #1: page
+dnl #2: address (optional)
+dnl #2/3: string to display
+define(m4_linkpage, [dnl
+ifelse($#, 3, [<a href="$1.html[__OCT__]$2">$3</a>],dnl
+[<a href="$1.html">$2</a>])])
+
+dnl m4_linkweb:
+dnl Link to specific address in any page.
+dnl #1: page
+dnl #2: address (optional)
+dnl #2/3: string to display
+define(m4_linkweb, [dnl
+ifelse($#, 3, [<a href="$1.html__OCT__$2">$3</a>],dnl
+[<a href="$1">$2</a>])])
+
+dnl m4_mailto
+dnl Mailto construct.
+dnl #1: address
+dnl #2: string
+define(m4_mailto, [<a href="mailto:$1">$2</a>])
+
+dnl ###################################################################
+dnl Three forms of lists:
+dnl - tagged
+dnl - numbered
+dnl - bullet item
+dnl ###################################################################
+dnl m4_tagbegin
+define(m4_tagbegin, <dl compact>)
+dnl m4_tag: standard tag list
+dnl #1: tag
+dnl #2: definition
+define(m4_tag, <dt>$1<dd>$2)
+dnl m4_tagns: standard tag list, no space
+dnl #1: tag
+dnl #2: definition
+define(m4_tagns, <dt>$1<dd>$2)
+dnl m4_tagopt: option tag list
+dnl #1: option
+dnl #2: definition
+define(m4_tagopt, <dt>m4_option($1)<dd>$2)
+dnl m4_tagoptns: option tag list, no space
+dnl #1: option
+dnl #2: definition
+define(m4_tagoptns, <dt>m4_option($1)<dd>$2)
+dnl m4_tagend
+define(m4_tagend, </dl>)
+
+define(m4_nlistbegin, <ol>)
+define(m4_nlist, <p><li>$1)
+define(m4_nlistns, <li>$1)
+define(m4_nlistend, </ol>)
+
+define(m4_bulletbegin, <p><ul type=disc>)
+define(m4_bullet, <li>$1)
+define(m4_bulletend, </ul>)
+
+dnl ###################################################################
+dnl Tables
+dnl ###################################################################
+dnl m4_table_begin: a table with N elements.
+dnl #1: optional title
+dnl #2: option alignment (_left, _right, _center)
+dnl
+dnl m4_table_header: column headers, emboldened
+dnl
+dnl m4_table_element: table element
+dnl #1: optional empty flag (_empty)
+dnl #1: optional alignment (_left, _right, _center)
+dnl
+dnl m4_table_end: table end
+dnl
+define(m4_table_begin, [dnl
+[<table border=1]dnl
+ifelse([$2],,,
+ [$2], _left, [ align=left],
+ [$2], _center, [ align=center],
+ [$2], _right, [ align=right])>])
+define(m4_table_end, </table>)
+define(m4_table_header, [<tr>__m4_table_header($@)</tr>])
+define(__m4_table_header, [dnl
+ifelse([$1],,,[$1],_empty,
+<th><br></th>[__m4_table_header(shift($@))],
+<th>$1</th>[__m4_table_header(shift($@))])])
+define(m4_table_element, [<tr>__m4_table_element($@)</tr>])
+define(__m4_table_element, [dnl
+ifelse([$1],,,
+[$1], _left, [dnl
+ ifelse([$2],,,
+ <td align=left>[$2]</td>[__m4_table_element(_left, shift(shift($@)))])],
+[$1], _center, [dnl
+ ifelse([$2],,,
+ <td align=center>[$2]</td>[__m4_table_element(_center, shift(shift($@)))])],
+[$1], _right, [dnl
+ ifelse([$2],,,
+ <td align=right>[$2]</td>[__m4_table_element(_right, shift(shift($@)))])],
+[$1], _empty,
+ <td><br></td>[__m4_table_element(shift($@))],
+ <td>[$1]</td>[__m4_table_element(shift($@))])])
+
+dnl ###################################################################
+dnl Index.
+dnl ###################################################################
+dnl __m4_icnt --
+dnl In HTML land, each index element gets its own unique address that
+dnl we generate based on an incremented variable, __m4_icnt.
+define(__m4_icnt, 1)
+
+dnl m4_idefz --
+dnl $N string(s) to index
+define(m4_idefz, [dnl
+ifelse([$1],,, [dnl
+m4_idef([<!--meow-->],dnl
+ifelse(index($1,@),-1,@$1,$1))m4_idefz(shift($@))])])
+
+dnl m4_idef --
+dnl Index definition.
+dnl $1 display text
+dnl $2 string to index [optional]
+define(m4_idef, [dnl
+ifelse($#, 1, [dnl
+<a name="$1">$1</a>dnl
+syscmd(echo "__APIREL__/M4PAGEPATH[__OCT__]$1 __m4_pagename@$1" >> _m4_ipath)],[dnl
+define([__m4_icnt], incr(__m4_icnt))dnl
+<a name="__m4_icnt">$1</a>dnl
+syscmd(echo "__APIREL__/M4PAGEPATH[__OCT__]__m4_icnt $2" >> _m4_ipath)])])
diff --git a/db/docs_src/m4/m4.init b/db/docs_src/m4/m4.init
new file mode 100644
index 000000000..18a81ce85
--- /dev/null
+++ b/db/docs_src/m4/m4.init
@@ -0,0 +1,49 @@
+dnl $Id: m4.init,v 10.22 2005/10/22 13:08:23 bostic Exp $
+
+dnl The GNU m4 builtin macro format is recognized even without arguments.
+dnl This is an m4 bug, hopefully fixed in the next release.
+undefine(`format')
+
+dnl Some GNU m4 releases have a builtin macro symbols.
+undefine(`symbols')
+
+dnl We use our own quote characters to make things a bit easier.
+changequote([,])
+
+dnl ###################################################################
+dnl Paths.
+dnl
+dnl _m4_api is the path to any API references. It's set to C++ if building
+dnl the C++ API, and to C if building the C API or sections shared by all
+dnl APIs, for example, the Reference Guide.
+dnl
+dnl _m4_ipath is the path to the index file we're building. It's set to the
+dnl real API if we're building one, and to an everything-else file, if we're
+dnl not.
+dnl ###################################################################
+define(_m4_api, [ifelse(M4API, CXX_API, [M4RELDIR/api_cxx], [M4RELDIR/api_c])])
+
+define(_m4_ipath, [ifelse(dnl
+M4API, CXX_API, [M4RELDIR/api_cxx/pindex.src],
+M4API, C_API, [M4RELDIR/api_c/pindex.src],
+M4API, TCL_API, [M4RELDIR/api_tcl/pindex.src],
+[M4RELDIR/ref/pindex.src])])
+
+dnl Set the path of the API index
+define(m4_iurl, [dnl
+ifelse(M4PRODUCT, XML, [dnl
+ifelse(M4API, CXX_API, [M4RELDIR/api_cxx/api_xml.html],
+M4API, TCL_API, [M4RELDIR/api_tcl/api_tcl.html],
+[M4RELDIR/api_c/api_xml.html])], [dnl
+ifelse(M4API, CXX_API, [M4RELDIR/api_cxx/api_core.html],
+M4API, TCL_API, [M4RELDIR/api_tcl/api_tcl.html],
+[M4RELDIR/api_c/api_core.html])])])
+
+dnl ###################################################################
+dnl Exception style.
+dnl
+dnl The C engine has returns; the C++ core engine has exceptions and return
+dnl values, but DbXml only has exceptions.
+dnl ###################################################################
+define(M4EXCEPT,
+ifelse(M4PRODUCT, XML, except_only, M4API, CXX_API, except_return, return_only))
diff --git a/db/docs_src/m4/m4.links b/db/docs_src/m4/m4.links
new file mode 100644
index 000000000..591b5acb1
--- /dev/null
+++ b/db/docs_src/m4/m4.links
@@ -0,0 +1,802 @@
+dnl $Id: m4.links,v 10.395 2007/07/12 18:27:43 bostic Exp $
+dnl
+dnl #################################################################
+dnl Build a hot link to a structure/class file based on the API.
+dnl $1: C name
+dnl $2: C++ name
+dnl $3: file name
+dnl #################################################################
+define(_m4_class, [dnl
+ifelse(M4API, CXX_API, [m4_link(_m4_api/$3, $2)],
+ $1, NOAPI, UNREF==$1, [m4_link(_m4_api/$3, $1)])])
+dnl
+dnl #################################################################
+dnl Build a name based on the API.
+dnl $1: C function
+dnl $2: C++ class
+dnl $3: C++ name
+dnl
+dnl If a non-existent API is referenced from a C page, it's probably a bug,
+dnl but just reference the C++ version.
+dnl #################################################################
+define(_m4_name, [ifelse(dnl
+M4API, CXX_API, [$2::$3],
+[$1], NOAPI, [$2::$3], [$1])])
+dnl
+dnl #################################################################
+dnl Build a hot link to a function/method based on the API.
+dnl $1: C function
+dnl $2: C++ class
+dnl $3: C++ name
+dnl $4: file name
+dnl
+dnl If a non-existent API is referenced from a C page, it's probably a bug,
+dnl but just reference the C++ version. There are C APIs referenced
+dnl from C++ legitimately, so if there's no C++ API, just reference the C API.
+dnl #################################################################
+define(_m4_ref, [dnl
+ifelse(M4API, CXX_API,dnl
+[ifelse($3, NOAPI,dnl
+[m4_link(M4RELDIR/api_c/$4, $1)], [m4_link(_m4_api/$4, $2::$3)])],dnl
+[ifelse($1, NOAPI,dnl
+[m4_link(M4RELDIR/api_cxx/$4, $2::$3)], [m4_link(_m4_api/$4, $1)])])])
+dnl
+dnl #################################################################
+dnl Build a hot link to a name based on the API.
+dnl $1: string to display
+dnl $2: address string in the HTML
+dnl $3: file name
+dnl
+dnl If a non-existent file is referenced from a C page, it's probably a bug,
+dnl but just reference the C++ version. There are C APIs referenced
+dnl from C++ legitimately, so if there's no C++ API, just reference the C API.
+dnl #################################################################
+define(_m4_nref, [m4_linkpage(_m4_api/$3, $2, $1)])
+dnl
+dnl #################################################################
+dnl List of possible references.
+dnl $1: name
+dnl #################################################################
+define(m4_ref, [_m4_lref([$1], M4PAGELOCAL)])
+dnl
+dnl #################################################################
+dnl If $1 matches a string in the M4PAGELOCAL define, format the name,
+dnl and don't bother with the link. We don't want to duplicate the
+dnl entire table for name translation, so we push new definitions of
+dnl the interesting macros onto a stack.
+dnl #################################################################
+define(_m4_lref, [dnl
+ifelse($2,, _m4_list($1), $2, $1, [dnl
+pushdef([_m4_ref], [_m4_name]($[1], $[2], $[3]))dnl
+pushdef([_m4_class],ifelse(M4API, C_API, $[1], $[2]))dnl
+pushdef([m4_link],$[2])dnl
+pushdef([m4_linkpage],$[3])dnl
+pushdef([_m4_nref],$[1])dnl
+_m4_list($1)[]dnl
+popdef([_m4_ref])dnl
+popdef([_m4_class])dnl
+popdef([m4_link])dnl
+popdef([m4_linkpage])dnl
+popdef([_m4_nref])],dnl
+[_m4_lref($1, shift(shift($@)))])])
+dnl #################################################################
+dnl List of references.
+dnl $1: name
+dnl #################################################################
+define(_m4_list, [ifelse(dnl
+dnl #################################################################
+dnl Environment
+dnl #################################################################
+$1, DbEnv, _m4_class(DB_ENV, DbEnv, env_class),
+$1, dbenv_close, _m4_ref(DB_ENV-__GT__close, DbEnv, close, env_close),
+$1, dbenv_create, _m4_ref(db_env_create, NOAPI, NOAPI, env_class),
+$1, dbenv_dbremove, _m4_ref(DB_ENV-__GT__dbremove, DbEnv, dbremove, env_dbremove),
+$1, dbenv_dbrename, _m4_ref(DB_ENV-__GT__dbrename, DbEnv, dbrename, env_dbrename),
+$1, dbenv_err, _m4_ref(DB_ENV-__GT__err, DbEnv, err, env_err),
+$1, dbenv_errx, _m4_ref(DB_ENV-__GT__errx, DbEnv, errx, env_err),
+$1, dbenv_failchk, _m4_ref(DB_ENV-__GT__failchk, DbEnv, failchk, env_failchk),
+$1, dbenv_fileid_reset, _m4_ref(DB_ENV-__GT__fileid_reset, DbEnv, fileid_reset, env_fileid_reset),
+$1, dbenv_get_cachesize, _m4_ref(DB_ENV-__GT__get_cachesize, DbEnv, get_cachesize, env_set_cachesize),
+$1, dbenv_get_cache_max, _m4_ref(DB_ENV-__GT__get_cache_max, DbEnv, get_cache_max, env_set_cache_max),
+$1, dbenv_get_data_dirs, _m4_ref(DB_ENV-__GT__get_data_dirs, DbEnv, get_data_dirs, env_set_data_dir),
+$1, dbenv_get_encrypt_flags, _m4_ref(DB_ENV-__GT__get_encrypt_flags, DbEnv, get_encrypt_flags, env_set_encrypt),
+$1, dbenv_get_errfile, _m4_ref(DB_ENV-__GT__get_errfile, DbEnv, get_errfile, env_set_errfile),
+$1, dbenv_get_errpfx, _m4_ref(DB_ENV-__GT__get_errpfx, DbEnv, get_errpfx, env_set_errpfx),
+$1, dbenv_get_flags, _m4_ref(DB_ENV-__GT__get_flags, DbEnv, get_flags, env_set_flag),
+$1, dbenv_get_home, _m4_ref(DB_ENV-__GT__get_home, DbEnv, get_home, env_open),
+$1, dbenv_get_lg_bsize, _m4_ref(DB_ENV-__GT__get_lg_bsize, DbEnv, get_lg_bsize, env_set_lg_bsize),
+$1, dbenv_get_lg_dir, _m4_ref(DB_ENV-__GT__get_lg_dir, DbEnv, get_lg_dir, env_set_lg_dir),
+$1, dbenv_get_lg_filemode, _m4_ref(DB_ENV-__GT__set_lg_filemode, DbEnv, set_lg_filemode, env_set_lg_mode),
+$1, dbenv_get_lg_max, _m4_ref(DB_ENV-__GT__get_lg_max, DbEnv, get_lg_max, env_set_lg_max),
+$1, dbenv_get_lg_regionmax, _m4_ref(DB_ENV-__GT__get_lg_regionmax, DbEnv, get_lg_regionmax, env_set_lg_regionmax),
+$1, dbenv_get_lk_conflicts, _m4_ref(DB_ENV-__GT__get_lk_conflicts, DbEnv, get_lk_conflicts, env_set_lk_conflicts),
+$1, dbenv_get_lk_detect, _m4_ref(DB_ENV-__GT__get_lk_detect, DbEnv, get_lk_detect, env_set_lk_detect),
+$1, dbenv_get_lk_max_lockers, _m4_ref(DB_ENV-__GT__get_lk_max_lockers, DbEnv, get_lk_max_lockers, env_set_lk_max_lockers),
+$1, dbenv_get_lk_max_locks, _m4_ref(DB_ENV-__GT__get_lk_max_locks, DbEnv, get_lk_max_locks, env_set_lk_max_locks),
+$1, dbenv_get_lk_max_objects, _m4_ref(DB_ENV-__GT__get_lk_max_objects, DbEnv, get_lk_max_objects, env_set_lk_max_objects),
+$1, dbenv_get_mp_mmapsize, _m4_ref(DB_ENV-__GT__get_mp_mmapsize, DbEnv, get_mp_mmapsize, env_set_mp_mmapsize),
+$1, dbenv_get_msgfile, _m4_ref(DB_ENV-__GT__get_msgfile, DbEnv, get_msgfile, env_get_msgfile),
+$1, dbenv_get_open_flags, _m4_ref(DB_ENV-__GT__get_open_flags, DbEnv, get_open_flags, env_open),
+$1, dbenv_get_shm_key, _m4_ref(DB_ENV-__GT__get_shm_key, DbEnv, get_shm_key, env_set_shm_key),
+$1, dbenv_get_thread_count, _m4_ref(DB_ENV-__GT__get_thread_count, DbEnv, get_thread_count, env_set_thread_count),
+$1, dbenv_get_timeout, _m4_ref(DB_ENV-__GT__get_timeout, DbEnv, get_timeout, env_set_timeout),
+$1, dbenv_get_tmp_dir, _m4_ref(DB_ENV-__GT__get_tmp_dir, DbEnv, get_tmp_dir, env_set_tmp_dir),
+$1, dbenv_get_tx_max, _m4_ref(DB_ENV-__GT__get_tx_max, DbEnv, get_tx_max, env_set_tx_max),
+$1, dbenv_get_tx_timestamp, _m4_ref(DB_ENV-__GT__get_tx_timestamp, DbEnv, get_tx_timestamp, env_set_tx_timestamp),
+$1, dbenv_get_verbose, _m4_ref(DB_ENV-__GT__get_verbose, DbEnv, get_verbose, env_set_verbose),
+$1, dbenv_get_version_major, _m4_ref(NOAPI, DbEnv, get_version_major, env_version),
+$1, dbenv_get_version_minor, _m4_ref(NOAPI, DbEnv, get_version_minor, env_version),
+$1, dbenv_get_version_patch, _m4_ref(NOAPI, DbEnv, get_version_patch, env_version),
+$1, dbenv_get_version_string, _m4_ref(NOAPI, DbEnv, get_version_string, env_version),
+$1, dbenv_lsn_reset, _m4_ref(DB_ENV-__GT__lsn_reset, DbEnv, lsn_reset, env_lsn_reset),
+$1, dbenv_open, _m4_ref(DB_ENV-__GT__open, DbEnv, open, env_open),
+$1, dbenv_remove, _m4_ref(DB_ENV-__GT__remove, DbEnv, remove, env_remove),
+$1, dbenv_set_alloc, _m4_ref(DB_ENV-__GT__set_alloc, DbEnv, set_alloc, env_set_alloc),
+$1, dbenv_set_app_dispatch, _m4_ref(DB_ENV-__GT__set_app_dispatch, DbEnv, set_app_dispatch, env_set_app_dispatch),
+$1, dbenv_set_cachesize, _m4_ref(DB_ENV-__GT__set_cachesize, DbEnv, set_cachesize, env_set_cachesize),
+$1, dbenv_set_cache_max, _m4_ref(DB_ENV-__GT__set_cache_max, DbEnv, set_cache_max, env_set_cache_max),
+$1, dbenv_set_data_dir, _m4_ref(DB_ENV-__GT__set_data_dir, DbEnv, set_data_dir, env_set_data_dir),
+$1, dbenv_set_encrypt, _m4_ref(DB_ENV-__GT__set_encrypt, DbEnv, set_encrypt, env_set_encrypt),
+$1, dbenv_set_errcall, _m4_ref(DB_ENV-__GT__set_errcall, DbEnv, set_errcall, env_set_errcall),
+$1, dbenv_set_errfile, _m4_ref(DB_ENV-__GT__set_errfile, DbEnv, set_errfile, env_set_errfile),
+$1, dbenv_set_error_stream, _m4_ref(NOAPI, DbEnv, set_error_stream, env_set_error_stream),
+$1, dbenv_set_errpfx, _m4_ref(DB_ENV-__GT__set_errpfx, DbEnv, set_errpfx, env_set_errpfx),
+$1, dbenv_set_event_notify, _m4_ref(DB_ENV-__GT__set_event_notify, DbEnv, set_event_notify, env_event_notify),
+$1, dbenv_set_feedback, _m4_ref(DB_ENV-__GT__set_feedback, DbEnv, set_feedback, env_set_feedback),
+$1, dbenv_set_flags, _m4_ref(DB_ENV-__GT__set_flags, DbEnv, set_flags, env_set_flags),
+$1, dbenv_set_isalive, _m4_ref(DB_ENV-__GT__set_isalive, DbEnv, set_isalive, env_set_isalive),
+$1, dbenv_set_lg_bsize, _m4_ref(DB_ENV-__GT__set_lg_bsize, DbEnv, set_lg_bsize, env_set_lg_bsize),
+$1, dbenv_set_lg_dir, _m4_ref(DB_ENV-__GT__set_lg_dir, DbEnv, set_lg_dir, env_set_lg_dir),
+$1, dbenv_set_lg_filemode, _m4_ref(DB_ENV-__GT__set_lg_filemode, DbEnv, set_lg_filemode, env_set_lg_mode),
+$1, dbenv_set_lg_max, _m4_ref(DB_ENV-__GT__set_lg_max, DbEnv, set_lg_max, env_set_lg_max),
+$1, dbenv_set_lg_regionmax, _m4_ref(DB_ENV-__GT__set_lg_regionmax, DbEnv, set_lg_regionmax, env_set_lg_regionmax),
+$1, dbenv_set_lk_conflicts, _m4_ref(DB_ENV-__GT__set_lk_conflicts, DbEnv, set_lk_conflicts, env_set_lk_conflicts),
+$1, dbenv_set_lk_detect, _m4_ref(DB_ENV-__GT__set_lk_detect, DbEnv, set_lk_detect, env_set_lk_detect),
+$1, dbenv_set_lk_max_lockers, _m4_ref(DB_ENV-__GT__set_lk_max_lockers, DbEnv, set_lk_max_lockers, env_set_lk_max_lockers),
+$1, dbenv_set_lk_max_locks, _m4_ref(DB_ENV-__GT__set_lk_max_locks, DbEnv, set_lk_max_locks, env_set_lk_max_locks),
+$1, dbenv_set_lk_max_objects, _m4_ref(DB_ENV-__GT__set_lk_max_objects, DbEnv, set_lk_max_objects, env_set_lk_max_objects),
+$1, dbenv_set_message_stream, _m4_ref(NOAPI, DbEnv, set_message_stream, env_set_msg_stream),
+$1, dbenv_set_mp_mmapsize, _m4_ref(DB_ENV-__GT__set_mp_mmapsize, DbEnv, set_mp_mmapsize, env_set_mp_mmapsize),
+$1, dbenv_set_msgcall, _m4_ref(DB_ENV-__GT__set_msgcall, DbEnv, set_msgcall, env_set_msgcall),
+$1, dbenv_set_msgfile, _m4_ref(DB_ENV-__GT__set_msgfile, DbEnv, set_msgfile, env_set_msgfile),
+$1, dbenv_set_rpc_server, _m4_ref(DB_ENV-__GT__set_rpc_server, DbEnv, set_rpc_server, env_set_rpc_server),
+$1, dbenv_set_shm_key, _m4_ref(DB_ENV-__GT__set_shm_key, DbEnv, set_shm_key, env_set_shm_key),
+$1, dbenv_set_thread_count, _m4_ref(DB_ENV-__GT__set_thread_count, DbEnv, set_thread_count, env_set_thread_count),
+$1, dbenv_set_thread_id, _m4_ref(DB_ENV-__GT__set_thread_id, DbEnv, set_thread_id, env_set_thread_id),
+$1, dbenv_set_thread_id_string, _m4_ref(DB_ENV-__GT__set_thread_id_string, DbEnv, set_thread_id_string, env_set_thread_id_string),
+$1, dbenv_set_timeout, _m4_ref(DB_ENV-__GT__set_timeout, DbEnv, set_timeout, env_set_timeout),
+$1, dbenv_set_tmp_dir, _m4_ref(DB_ENV-__GT__set_tmp_dir, DbEnv, set_tmp_dir, env_set_tmp_dir),
+$1, dbenv_set_tx_max, _m4_ref(DB_ENV-__GT__set_tx_max, DbEnv, set_tx_max, env_set_tx_max),
+$1, dbenv_set_tx_timestamp, _m4_ref(DB_ENV-__GT__set_tx_timestamp, DbEnv, set_tx_timestamp, env_set_tx_timestamp),
+$1, dbenv_set_verbose, _m4_ref(DB_ENV-__GT__set_verbose, DbEnv, set_verbose, env_set_verbose),
+$1, dbenv_stat_print, _m4_ref(DB_ENV-__GT__stat_print, DbEnv, stat_print, env_stat),
+$1, dbenv_strerror, _m4_ref(db_strerror, DbEnv, strerror, env_strerror),
+$1, dbenv_version, _m4_ref(db_version, DbEnv, version, env_version),
+dnl #################################################################
+dnl Db
+dnl #################################################################
+$1, Db, _m4_class(DB, Db, db_class),
+$1, dbh_associate, _m4_ref(DB-__GT__associate, Db, associate, db_associate),
+$1, dbh_close, _m4_ref(DB-__GT__close, Db, close, db_close),
+$1, dbh_compact, _m4_ref(DB-__GT__compact, Db, compact, db_compact),
+$1, dbh_create, _m4_ref(db_create, NOAPI, NOAPI, db_class),
+$1, dbh_del, _m4_ref(DB-__GT__del, Db, del, db_del),
+$1, dbh_err, _m4_ref(DB-__GT__err, Db, err, db_err),
+$1, dbh_errx, _m4_ref(DB-__GT__errx, Db, errx, db_err),
+$1, dbh_exists, _m4_ref(DB-__GT__exists, Db, exists, db_exists),
+$1, dbh_fd, _m4_ref(DB-__GT__fd, Db, fd, db_fd),
+$1, dbh_get, _m4_ref(DB-__GT__get, Db, get, db_get),
+$1, dbh_get_bt_minkey, _m4_ref(DB-__GT__get_bt_minkey, Db, get_bt_minkey, db_set_bt_minkey),
+$1, dbh_get_byteswapped, _m4_ref(DB-__GT__get_byteswapped, Db, get_byteswapped, db_get_byteswapped),
+$1, dbh_get_cachesize, _m4_ref(DB-__GT__get_cachesize, Db, get_cachesize, db_set_cachesize),
+$1, dbh_get_dbname, _m4_ref(DB-__GT__get_dbname, Db, get_dbname, db_open),
+$1, dbh_get_encrypt_flags, _m4_ref(DB-__GT__get_encrypt_flags, Db, get_encrypt_flags, db_set_encrypt),
+$1, dbh_get_errfile, _m4_ref(DB-__GT__get_errfile, Db, get_errfile, db_set_errfile),
+$1, dbh_get_errpfx, _m4_ref(DB-__GT__get_errpfx, Db, get_errpfx, db_set_errpfx),
+$1, dbh_get_file, _m4_ref(DB-__GT__get_file, Db, get_file, db_open),
+$1, dbh_get_flags, _m4_ref(DB-__GT__get_flags, Db, get_flags, db_set_flags),
+$1, dbh_get_h_ffactor, _m4_ref(DB-__GT__get_h_ffactor, Db, get_h_ffactor, db_set_h_ffactor),
+$1, dbh_get_h_nelem, _m4_ref(DB-__GT__get_h_nelem, Db, get_h_nelem, db_set_h_nelem),
+$1, dbh_get_lorder, _m4_ref(DB-__GT__get_lorder, Db, get_lorder, db_set_lorder),
+$1, dbh_get_mpf, _m4_ref(DB-__GT__get_mpf, Db, get_mpf, db_get_mpf),
+$1, dbh_get_msgfile, _m4_ref(DB-__GT__get_msgfile, Db, get_msgfile, db_get_msgfile),
+$1, dbh_get_multiple, _m4_ref(DB-__GT__get_multiple, Db, get_multiple, db_open),
+$1, dbh_get_open_flags, _m4_ref(DB-__GT__get_open_flags, Db, get_open_flags, db_set_open_flags),
+$1, dbh_get_pagesize, _m4_ref(DB-__GT__get_pagesize, Db, get_pagesize, db_set_pagesize),
+$1, dbh_get_priority, _m4_ref(DB-__GT__get_priority, Db, get_priority, db_set_priority),
+$1, dbh_get_q_extentsize, _m4_ref(DB-__GT__get_q_extentsize, Db, get_q_extentsize, db_set_q_extentsize),
+$1, dbh_get_re_delim, _m4_ref(DB-__GT__get_re_delim, Db, get_re_delim, db_set_re_delim),
+$1, dbh_get_re_len, _m4_ref(DB-__GT__get_re_len, Db, get_re_len, db_set_re_len),
+$1, dbh_get_re_pad, _m4_ref(DB-__GT__get_re_pad, Db, get_re_pad, db_set_re_pad),
+$1, dbh_get_re_source, _m4_ref(DB-__GT__get_re_source, Db, get_re_source, db_set_re_source),
+$1, dbh_get_transactional, _m4_ref(DB-__GT__get_transactional, Db, get_transactional, db_open),
+$1, dbh_get_type, _m4_ref(DB-__GT__get_type, Db, get_type, db_get_type),
+$1, dbh_getenv, _m4_ref(DB-__GT__get_env, Db, getenv, db_getenv),
+$1, dbh_is_encrypted, _m4_ref(NOAPI, Db, is_encrypted, db_set_encrypt),
+$1, dbh_join, _m4_ref(DB-__GT__join, Db, join, db_join),
+$1, dbh_key_range, _m4_ref(DB-__GT__key_range, Db, key_range, db_key_range),
+$1, dbh_open, _m4_ref(DB-__GT__open, Db, open, db_open),
+$1, dbh_pget, _m4_ref(DB-__GT__pget, Db, pget, db_get),
+$1, dbh_put, _m4_ref(DB-__GT__put, Db, put, db_put),
+$1, dbh_remove, _m4_ref(DB-__GT__remove, Db, remove, db_remove),
+$1, dbh_rename, _m4_ref(DB-__GT__rename, Db, rename, db_rename),
+$1, dbh_set_alloc, _m4_ref(DB-__GT__set_alloc, Db, set_alloc, db_set_alloc),
+$1, dbh_set_append_recno, _m4_ref(DB-__GT__set_append_recno, Db, set_append_recno, db_set_append_recno),
+$1, dbh_set_bt_compare, _m4_ref(DB-__GT__set_bt_compare, Db, set_bt_compare, db_set_bt_compare),
+$1, dbh_set_bt_minkey, _m4_ref(DB-__GT__set_bt_minkey, Db, set_bt_minkey, db_set_bt_minkey),
+$1, dbh_set_bt_prefix, _m4_ref(DB-__GT__set_bt_prefix, Db, set_bt_prefix, db_set_bt_prefix),
+$1, dbh_set_cachesize, _m4_ref(DB-__GT__set_cachesize, Db, set_cachesize, db_set_cachesize),
+$1, dbh_set_dup_compare, _m4_ref(DB-__GT__set_dup_compare, Db, set_dup_compare, db_set_dup_compare),
+$1, dbh_set_encrypt, _m4_ref(DB-__GT__set_encrypt, Db, set_encrypt, db_set_encrypt),
+$1, dbh_set_errcall, _m4_ref(DB-__GT__set_errcall, Db, set_errcall, db_set_errcall),
+$1, dbh_set_errfile, _m4_ref(DB-__GT__set_errfile, Db, set_errfile, db_set_errfile),
+$1, dbh_set_error_stream, _m4_ref(NOAPI, Db, set_error_stream, db_set_error_stream),
+$1, dbh_set_errpfx, _m4_ref(DB-__GT__set_errpfx, Db, set_errpfx, db_set_errpfx),
+$1, dbh_set_feedback, _m4_ref(DB-__GT__set_feedback, Db, set_feedback, db_set_feedback),
+$1, dbh_set_flags, _m4_ref(DB-__GT__set_flags, Db, set_flags, db_set_flags),
+$1, dbh_set_h_compare, _m4_ref(DB-__GT__set_h_compare, Db, set_h_compare, db_set_h_compare),
+$1, dbh_set_h_ffactor, _m4_ref(DB-__GT__set_h_ffactor, Db, set_h_ffactor, db_set_h_ffactor),
+$1, dbh_set_h_hash, _m4_ref(DB-__GT__set_h_hash, Db, set_h_hash, db_set_h_hash),
+$1, dbh_set_h_nelem, _m4_ref(DB-__GT__set_h_nelem, Db, set_h_nelem, db_set_h_nelem),
+$1, dbh_set_lorder, _m4_ref(DB-__GT__set_lorder, Db, set_lorder, db_set_lorder),
+$1, dbh_set_message_stream, _m4_ref(NOAPI, Db, set_message_stream, db_set_msg_stream),
+$1, dbh_set_msgcall, _m4_ref(DB-__GT__set_msgcall, Db, set_msgcall, db_set_msgcall),
+$1, dbh_set_msgfile, _m4_ref(DB-__GT__set_msgfile, Db, set_msgfile, db_set_msgfile),
+$1, dbh_set_pagesize, _m4_ref(DB-__GT__set_pagesize, Db, set_pagesize, db_set_pagesize),
+$1, dbh_set_priority, _m4_ref(DB-__GT__set_priority, Db, set_priority, db_set_priority),
+$1, dbh_set_q_extentsize, _m4_ref(DB-__GT__set_q_extentsize, Db, set_q_extentsize, db_set_q_extentsize),
+$1, dbh_set_re_delim, _m4_ref(DB-__GT__set_re_delim, Db, set_re_delim, db_set_re_delim),
+$1, dbh_set_re_len, _m4_ref(DB-__GT__set_re_len, Db, set_re_len, db_set_re_len),
+$1, dbh_set_re_pad, _m4_ref(DB-__GT__set_re_pad, Db, set_re_pad, db_set_re_pad),
+$1, dbh_set_re_source, _m4_ref(DB-__GT__set_re_source, Db, set_re_source, db_set_re_source),
+$1, dbh_stat, _m4_ref(DB-__GT__stat, Db, stat, db_stat),
+$1, dbh_stat_print, _m4_ref(DB-__GT__stat_print, Db, stat_print, db_stat),
+$1, dbh_sync, _m4_ref(DB-__GT__sync, Db, sync, db_sync),
+$1, dbh_truncate, _m4_ref(DB-__GT__truncate, Db, truncate, db_truncate),
+$1, dbh_upgrade, _m4_ref(DB-__GT__upgrade, Db, upgrade, db_upgrade),
+$1, dbh_verify, _m4_ref(DB-__GT__verify, Db, verify, db_verify),
+dnl #################################################################
+dnl Dbc.
+dnl #################################################################
+$1, Dbc, _m4_class(DBC, Dbc, dbc_class),
+$1, dbh_cursor, _m4_ref(DB-__GT__cursor, Db, cursor, db_cursor),
+$1, dbc_close, _m4_ref(DBcursor-__GT__close, Dbc, close, dbc_close),
+$1, dbc_count, _m4_ref(DBcursor-__GT__count, Dbc, count, dbc_count),
+$1, dbc_del, _m4_ref(DBcursor-__GT__del, Dbc, del, dbc_del),
+$1, dbc_dup, _m4_ref(DBcursor-__GT__dup, Dbc, dup, dbc_dup),
+$1, dbc_get, _m4_ref(DBcursor-__GT__get, Dbc, get, dbc_get),
+$1, dbc_get_priority, _m4_ref(DBcursor-__GT__get_priority, Dbc, get_priority, dbc_set_priority),
+$1, dbc_pget, _m4_ref(DBcursor-__GT__pget, Dbc, pget, dbc_get),
+$1, dbc_put, _m4_ref(DBcursor-__GT__put, Dbc, put, dbc_put),
+$1, dbc_set_priority, _m4_ref(DBcursor-__GT__set_priority, Dbc, set_priority, dbc_set_priority),
+dnl #################################################################
+dnl Exception classes.
+dnl #################################################################
+$1, DbDeadlockException, _m4_class(NOAPI, DbDeadlockException, deadlock_class),
+$1, DbException, _m4_class(NOAPI, DbException, except_class),
+$1, DbLockNotGrantedException, _m4_class(NOAPI, DbLockNotGrantedException, lockng_class),
+$1, DbMemoryException, _m4_class(NOAPI, DbMemoryException, memp_class),
+$1, DbRunRecoveryException, _m4_class(NOAPI, DbRunRecoveryException, runrec_class),
+$1, except_get_errno, _m4_ref(NOAPI, DbException, get_errno, except_class),
+$1, except_what, _m4_ref(NOAPI, DbException, what, except_class),
+$1, except_get_env, _m4_ref(NOAPI, DbException, get_env, except_class),
+dnl #################################################################
+dnl Locking.
+dnl #################################################################
+$1, DbLock, _m4_class(DB_LOCK, DbLock, lock_class),
+$1, DbLockRequest, DB_LOCKREQ,
+$1, lock_detect, _m4_ref(DB_ENV-__GT__lock_detect, DbEnv, lock_detect, lock_detect),
+$1, lock_get, _m4_ref(DB_ENV-__GT__lock_get, DbEnv, lock_get, lock_get),
+$1, lock_id, _m4_ref(DB_ENV-__GT__lock_id, DbEnv, lock_id, lock_id),
+$1, lock_id_free, _m4_ref(DB_ENV-__GT__lock_id_free, DbEnv, lock_id_free, lock_id_free),
+$1, lock_put, _m4_ref(DB_ENV-__GT__lock_put, DbEnv, lock_put, lock_put),
+$1, lock_stat, _m4_ref(DB_ENV-__GT__lock_stat, DbEnv, lock_stat, lock_stat),
+$1, lock_stat_print, _m4_ref(DB_ENV-__GT__lock_stat_print, DbEnv, lock_stat_print, lock_stat),
+$1, lock_vec, _m4_ref(DB_ENV-__GT__lock_vec, DbEnv, lock_vec, lock_vec),
+$1, cdsgroup_begin, _m4_ref(DB_ENV-__GT__cdsgroup_begin, DbEnv, cdsgroup_begin, env_cdsgroup_begin),
+dnl #################################################################
+dnl Logging.
+dnl #################################################################
+$1, DbLogc, _m4_class(DB_LOGC, DbLogc, logc_class),
+$1, DbLsn, _m4_class(DB_LSN, DbLsn, lsn_class),
+$1, log_archive, _m4_ref(DB_ENV-__GT__log_archive, DbEnv, log_archive, log_archive),
+$1, log_compare, _m4_ref(log_compare, DbEnv, log_compare, log_compare),
+$1, log_cursor, _m4_ref(DB_ENV-__GT__log_cursor, DbEnv, log_cursor, log_cursor),
+$1, log_file, _m4_ref(DB_ENV-__GT__log_file, DbEnv, log_file, log_file),
+$1, log_flush, _m4_ref(DB_ENV-__GT__log_flush, DbEnv, log_flush, log_flush),
+$1, log_printf, _m4_ref(DB_ENV-__GT__log_printf, DbEnv, log_printf, log_printf),
+$1, log_put, _m4_ref(DB_ENV-__GT__log_put, DbEnv, log_put, log_put),
+$1, log_stat, _m4_ref(DB_ENV-__GT__log_stat, DbEnv, log_stat, log_stat),
+$1, log_stat_print, _m4_ref(DB_ENV-__GT__log_stat_print, DbEnv, log_stat_print, log_stat),
+$1, logc_close, _m4_ref(DB_LOGC-__GT__close, DbLogc, close, logc_close),
+$1, logc_get, _m4_ref(DB_LOGC-__GT__get, DbLogc, get, logc_get),
+dnl #################################################################
+dnl Memory Pool.
+dnl #################################################################
+$1, DbMpoolFile, _m4_class(DB_MPOOLFILE, DbMpoolFile, mempfile_class),
+$1, memp_fclose, _m4_ref(DB_MPOOLFILE-__GT__close, DbMpoolFile, close, memp_fclose),
+$1, memp_fcreate, _m4_ref(DB_ENV-__GT__memp_fcreate, DbEnv, memp_fcreate, memp_fcreate),
+$1, memp_fget, _m4_ref(DB_MPOOLFILE-__GT__get, DbMpoolFile, get, memp_fget),
+$1, memp_fopen, _m4_ref(DB_MPOOLFILE-__GT__open, DbMpoolFile, open, memp_fopen),
+$1, memp_fput, _m4_ref(DB_MPOOLFILE-__GT__put, DbMpoolFile, put, memp_fput),
+$1, memp_fstat, _m4_ref(NOAPI, DbEnv, memp_fstat, memp_stat),
+$1, memp_fsync, _m4_ref(DB_MPOOLFILE-__GT__sync, DbMpoolFile, sync, memp_fsync),
+$1, memp_get_clear_len, _m4_ref(DB_MPOOLFILE-__GT__get_clear_len, DbMpoolFile, get_clear_len, memp_set_clear_len),
+$1, memp_get_fileid, _m4_ref(DB_MPOOLFILE-__GT__get_fileid, DbMpoolFile, get_fileid, memp_set_fileid),
+$1, memp_get_flags, _m4_ref(DB_MPOOLFILE-__GT__get_flags, DbMpoolFile, get_flags, memp_set_flags),
+$1, memp_get_ftype, _m4_ref(DB_MPOOLFILE-__GT__get_ftype, DbMpoolFile, get_ftype, memp_set_ftype),
+$1, memp_get_lsn_offset, _m4_ref(DB_MPOOLFILE-__GT__get_lsn_offset, DbMpoolFile, get_lsn_offset, memp_set_lsn_offset),
+$1, memp_get_max_openfd, _m4_ref(DB_ENV-__GT__get_mp_max_openfd, DbEnv, get_mp_max_openfd, memp_openfd),
+$1, memp_get_max_write, _m4_ref(DB_ENV-__GT__get_mp_max_write, DbEnv, get_mp_max_write, memp_maxwrite),
+$1, memp_get_maxsize, _m4_ref(DB_MPOOLFILE-__GT__get_maxsize, DbMpoolFile, get_maxsize, memp_set_maxsize),
+$1, memp_get_pgcookie, _m4_ref(DB_MPOOLFILE-__GT__get_pgcookie, DbMpoolFile, get_pgcookie, memp_set_pgcookie),
+$1, memp_get_priority, _m4_ref(DB_MPOOLFILE-__GT__get_priority, DbMpoolFile, get_priority, memp_set_priority),
+$1, memp_register, _m4_ref(DB_ENV-__GT__memp_register, DbEnv, memp_register, memp_register),
+$1, memp_set_clear_len, _m4_ref(DB_MPOOLFILE-__GT__set_clear_len, DbMpoolFile, set_clear_len, memp_set_clear_len),
+$1, memp_set_fileid, _m4_ref(DB_MPOOLFILE-__GT__set_fileid, DbMpoolFile, set_fileid, memp_set_fileid),
+$1, memp_set_flags, _m4_ref(DB_MPOOLFILE-__GT__set_flags, DbMpoolFile, set_flags, memp_set_flags),
+$1, memp_set_ftype, _m4_ref(DB_MPOOLFILE-__GT__set_ftype, DbMpoolFile, set_ftype, memp_set_ftype),
+$1, memp_set_lsn_offset, _m4_ref(DB_MPOOLFILE-__GT__set_lsn_offset, DbMpoolFile, set_lsn_offset, memp_set_lsn_offset),
+$1, memp_set_max_openfd, _m4_ref(DB_ENV-__GT__set_mp_max_openfd, DbEnv, set_mp_max_openfd, memp_openfd),
+$1, memp_set_max_write, _m4_ref(DB_ENV-__GT__set_mp_max_write, DbEnv, set_mp_max_write, memp_maxwrite),
+$1, memp_set_maxsize, _m4_ref(DB_MPOOLFILE-__GT__set_maxsize, DbMpoolFile, set_maxsize, memp_set_maxsize),
+$1, memp_set_pgcookie, _m4_ref(DB_MPOOLFILE-__GT__set_pgcookie, DbMpoolFile, set_pgcookie, memp_set_pgcookie),
+$1, memp_set_priority, _m4_ref(DB_MPOOLFILE-__GT__set_priority, DbMpoolFile, set_priority, memp_set_priority),
+$1, memp_stat, _m4_ref(DB_ENV-__GT__memp_stat, DbEnv, memp_stat, memp_stat),
+$1, memp_stat_print, _m4_ref(DB_ENV-__GT__memp_stat_print, DbEnv, memp_stat_print, memp_stat),
+$1, memp_sync, _m4_ref(DB_ENV-__GT__memp_sync, DbEnv, memp_sync, memp_sync),
+$1, memp_trickle, _m4_ref(DB_ENV-__GT__memp_trickle, DbEnv, memp_trickle, memp_trickle),
+dnl #################################################################
+dnl Mutex.
+dnl #################################################################
+$1, mutex_alloc, _m4_ref(DB_ENV-__GT__mutex_alloc, DbEnv, mutex_alloc, mutex_alloc),
+$1, mutex_free, _m4_ref(DB_ENV-__GT__mutex_free, DbEnv, mutex_free, mutex_free),
+$1, mutex_get_align, _m4_ref(DB_ENV-__GT__mutex_get_align, DbEnv, mutex_get_align, mutex_set_align),
+$1, mutex_get_increment, _m4_ref(DB_ENV-__GT__mutex_get_increment, DbEnv, mutex_get_increment, mutex_set_max),
+$1, mutex_get_max, _m4_ref(DB_ENV-__GT__mutex_get_max, DbEnv, mutex_get_max, mutex_set_max),
+$1, mutex_get_tas_spins, _m4_ref(DB_ENV-__GT__mutex_get_tas_spins, DbEnv, mutex_get_tas_spins, mutex_set_tas_spins),
+$1, mutex_lock, _m4_ref(DB_ENV-__GT__mutex_lock, DbEnv, mutex_lock, mutex_lock),
+$1, mutex_set_align, _m4_ref(DB_ENV-__GT__mutex_set_align, DbEnv, mutex_set_align, mutex_set_align),
+$1, mutex_set_increment, _m4_ref(DB_ENV-__GT__mutex_set_increment, DbEnv, mutex_set_increment, mutex_set_max),
+$1, mutex_set_max, _m4_ref(DB_ENV-__GT__mutex_set_max, DbEnv, mutex_set_max, mutex_set_max),
+$1, mutex_set_tas_spins, _m4_ref(DB_ENV-__GT__mutex_set_tas_spins, DbEnv, mutex_set_tas_spins, mutex_set_tas_spins),
+$1, mutex_stat, _m4_ref(DB_ENV-__GT__mutex_stat, DbEnv, mutex_stat, mutex_stat),
+$1, mutex_stat_print, _m4_ref(DB_ENV-__GT__mutex_stat_print, DbEnv, mutex_stat_print, mutex_stat),
+$1, mutex_unlock, _m4_ref(DB_ENV-__GT__mutex_unlock, DbEnv, mutex_unlock, mutex_unlock),
+dnl #################################################################
+dnl Replication.
+dnl #################################################################
+$1, rep_elect, _m4_ref(DB_ENV-__GT__rep_elect, DbEnv, rep_elect, rep_elect),
+$1, rep_get_config, _m4_ref(DB_ENV-__GT__rep_get_config, DbEnv, rep_get_config, rep_get_config),
+$1, rep_get_limit, _m4_ref(DB_ENV-__GT__rep_get_limit, DbEnv, rep_get_limit, rep_limit),
+$1, rep_get_nsites, _m4_ref(DB_ENV-__GT__rep_get_nsites, DbEnv, rep_get_nsites, rep_nsites),
+$1, rep_get_priority, _m4_ref(DB_ENV-__GT__rep_get_priority, DbEnv, rep_get_priority, rep_priority),
+$1, rep_get_request, _m4_ref(DB_ENV-__GT__rep_get_request, DbEnv, rep_get_request, rep_request),
+$1, rep_get_timeout, _m4_ref(DB_ENV-__GT__rep_get_timeout, DbEnv, rep_get_timeout, rep_timeout),
+$1, rep_message, _m4_ref(DB_ENV-__GT__rep_process_message, DbEnv, rep_process_message, rep_message),
+$1, rep_set_config, _m4_ref(DB_ENV-__GT__rep_set_config, DbEnv, rep_set_config, rep_config),
+$1, rep_set_limit, _m4_ref(DB_ENV-__GT__rep_set_limit, DbEnv, rep_set_limit, rep_limit),
+$1, rep_set_nsites, _m4_ref(DB_ENV-__GT__rep_set_nsites, DbEnv, rep_set_nsites, rep_nsites),
+$1, rep_set_priority, _m4_ref(DB_ENV-__GT__rep_set_priority, DbEnv, rep_set_priority, rep_priority),
+$1, rep_set_request, _m4_ref(DB_ENV-__GT__rep_set_request, DbEnv, rep_set_request, rep_request),
+$1, rep_set_timeout, _m4_ref(DB_ENV-__GT__rep_set_timeout, DbEnv, rep_set_timeout, rep_timeout),
+$1, rep_set_transport, _m4_ref(DB_ENV-__GT__rep_set_transport, DbEnv, rep_set_transport, rep_transport),
+$1, rep_start, _m4_ref(DB_ENV-__GT__rep_start, DbEnv, rep_start, rep_start),
+$1, rep_stat, _m4_ref(DB_ENV-__GT__rep_stat, DbEnv, rep_stat, rep_stat),
+$1, rep_stat_print, _m4_ref(DB_ENV-__GT__rep_stat_print, DbEnv, rep_stat_print, rep_stat),
+$1, rep_sync, _m4_ref(DB_ENV-__GT__rep_sync, DbEnv, rep_sync, rep_sync),
+$1, repmgr_add_remote_site, _m4_ref(DB_ENV-__GT__repmgr_add_remote_site, DbEnv, repmgr_add_remote_site, repmgr_remote_site),
+$1, repmgr_get_ack_policy, _m4_ref(DB_ENV-__GT__repmgr_get_ack_policy, DbEnv, repmgr_get_ack_policy, repmgr_ack_policy),
+$1, repmgr_set_ack_policy, _m4_ref(DB_ENV-__GT__repmgr_set_ack_policy, DbEnv, repmgr_set_ack_policy, repmgr_ack_policy),
+$1, repmgr_set_local_site, _m4_ref(DB_ENV-__GT__repmgr_set_local_site, DbEnv, repmgr_set_local_site, repmgr_local_site),
+$1, repmgr_site_list, _m4_ref(DB_ENV-__GT__repmgr_site_list, DbEnv, repmgr_site_list, repmgr_site_list),
+$1, repmgr_start, _m4_ref(DB_ENV-__GT__repmgr_start, DbEnv, repmgr_start, repmgr_start),
+$1, repmgr_stat, _m4_ref(DB_ENV-__GT__repmgr_stat, DbEnv, repmgr_stat, repmgr_stat),
+$1, repmgr_stat_print, _m4_ref(DB_ENV-__GT__repmgr_stat_print, DbEnv, repmgr_stat_print, repmgr_stat),
+dnl #################################################################
+dnl Sequences.
+dnl #################################################################
+$1, DbSequence, _m4_class(DB_SEQUENCE, DbSequence, seq_class),
+$1, seq_close, _m4_ref(DB_SEQUENCE-__GT__close, DbSequence, close, seq_close),
+$1, seq_create, _m4_ref(db_sequence_create, NOAPI, NOAPI, seq_class),
+$1, seq_get, _m4_ref(DB_SEQUENCE-__GT__get, DbSequence, get, seq_get),
+$1, seq_get_cachesize, _m4_ref(DB_SEQUENCE-__GT__get_cachesize, DbSequence, get_cachesize, seq_set_cachesize),
+$1, seq_get_dbp, _m4_ref(DB_SEQUENCE-__GT__get_dbp, DbSequence, get_dbp, seq_open),
+$1, seq_get_flags, _m4_ref(DB_SEQUENCE-__GT__get_flags, DbSequence, get_flags, seq_set_flags),
+$1, seq_get_key, _m4_ref(DB_SEQUENCE-__GT__get_key, DbSequence, get_key, seq_open),
+$1, seq_get_range, _m4_ref(DB_SEQUENCE-__GT__get_range, DbSequence, get_range, seq_set_range),
+$1, seq_initial_value, _m4_ref(DB_SEQUENCE-__GT__initial_value, DbSequence, initial_value, seq_initial_value),
+$1, seq_open, _m4_ref(DB_SEQUENCE-__GT__open, DbSequence, open, seq_open),
+$1, seq_remove, _m4_ref(DB_SEQUENCE-__GT__remove, DbSequence, remove, seq_remove),
+$1, seq_set_cachesize, _m4_ref(DB_SEQUENCE-__GT__set_cachesize, DbSequence, set_cachesize, seq_set_cachesize),
+$1, seq_set_flags, _m4_ref(DB_SEQUENCE-__GT__set_flags, DbSequence, set_flags, seq_set_flags),
+$1, seq_set_range, _m4_ref(DB_SEQUENCE-__GT__set_range, DbSequence, set_range, seq_set_range),
+$1, seq_stat, _m4_ref(DB_SEQUENCE-__GT__stat, DbSequence, stat, seq_stat),
+$1, seq_stat_print, _m4_ref(DB_SEQUENCE-__GT__stat_print, DbSequence, stat_print, seq_stat),
+dnl #################################################################
+dnl Transactions.
+dnl #################################################################
+$1, DbTxn, _m4_class(DB_TXN, DbTxn, txn_class),
+$1, txn_abort, _m4_ref(DB_TXN-__GT__abort, DbTxn, abort, txn_abort),
+$1, txn_begin, _m4_ref(DB_ENV-__GT__txn_begin, DbEnv, txn_begin, txn_begin),
+$1, txn_checkpoint, _m4_ref(DB_ENV-__GT__txn_checkpoint, DbEnv, txn_checkpoint, txn_checkpoint),
+$1, txn_commit, _m4_ref(DB_TXN-__GT__commit, DbTxn, commit, txn_commit),
+$1, txn_discard, _m4_ref(DB_TXN-__GT__discard, DbTxn, discard, txn_discard),
+$1, txn_get_name, _m4_ref(DB_TXN-__GT__get_name, DbTxn, get_name, txn_get_name),
+$1, txn_id, _m4_ref(DB_TXN-__GT__id, DbTxn, id, txn_id),
+$1, txn_prepare, _m4_ref(DB_TXN-__GT__prepare, DbTxn, prepare, txn_prepare),
+$1, txn_recover, _m4_ref(DB_ENV-__GT__txn_recover, DbEnv, txn_recover, txn_recover),
+$1, txn_set_name, _m4_ref(DB_TXN-__GT__set_name, DbTxn, set_name, txn_set_name),
+$1, txn_set_timeout, _m4_ref(DB_TXN-__GT__set_timeout, DbTxn, set_timeout, txn_set_timeout),
+$1, txn_stat, _m4_ref(DB_ENV-__GT__txn_stat, DbEnv, txn_stat, txn_stat),
+$1, txn_stat_print, _m4_ref(DB_ENV-__GT__txn_stat_print, DbEnv, txn_stat_print, txn_stat),
+dnl #################################################################
+dnl Dbt
+dnl #################################################################
+$1, DbMultipleDataIterator, _m4_class(NOAPI, DbMultipleDataIterator, dbt_bulk_class),
+$1, DbMultipleIterator, _m4_class(NOAPI, DbMultipleIterator, dbt_bulk_class),
+$1, DbMultipleKeyDataIterator, _m4_class(NOAPI, DbMultipleKeyDataIterator, dbt_bulk_class),
+$1, DbMultipleRecnoDataIterator, _m4_class(NOAPI, DbMultipleRecnoDataIterator, dbt_bulk_class),
+$1, Dbt, _m4_class(DBT, Dbt, dbt_class),
+$1, dbt_get_data, _m4_ref(NOAPI, Dbt, get_data, dbt_class),
+$1, dbt_get_dlen, _m4_ref(NOAPI, Dbt, get_dlen, dbt_class),
+$1, dbt_get_doff, _m4_ref(NOAPI, Dbt, get_doff, dbt_class),
+$1, dbt_get_flags, _m4_ref(NOAPI, Dbt, get_flags, dbt_class),
+$1, dbt_get_offset, _m4_ref(NOAPI, Dbt, get_offset, dbt_class),
+$1, dbt_get_recno_key_data, _m4_ref(NOAPI, Dbt, get_recno_key_data, dbt_class),
+$1, dbt_get_size, _m4_ref(NOAPI, Dbt, get_size, dbt_class),
+$1, dbt_get_ulen, _m4_ref(NOAPI, Dbt, get_ulen, dbt_class),
+$1, dbt_set_data, _m4_ref(NOAPI, Dbt, set_data, dbt_class),
+$1, dbt_set_dlen, _m4_ref(NOAPI, Dbt, set_dlen, dbt_class),
+$1, dbt_set_doff, _m4_ref(NOAPI, Dbt, set_doff, dbt_class),
+$1, dbt_set_flags, _m4_ref(NOAPI, Dbt, set_flags, dbt_class),
+$1, dbt_set_offset, _m4_ref(NOAPI, Dbt, set_offset, dbt_class),
+$1, dbt_set_recno_key_data, _m4_ref(NOAPI, Dbt, set_recno_key_data, dbt_class),
+$1, dbt_set_size, _m4_ref(NOAPI, Dbt, set_size, dbt_class),
+$1, dbt_set_ulen, _m4_ref(NOAPI, Dbt, set_ulen, dbt_class),
+dnl #################################################################
+dnl Configuration
+dnl #################################################################
+$1, dbenv_set_func_close, _m4_ref(db_env_set_func_close, NOAPI, NOAPI, set_func_close),
+$1, dbenv_set_func_dirfree, _m4_ref(db_env_set_func_dirfree, NOAPI, NOAPI, set_func_dirfree),
+$1, dbenv_set_func_dirlist, _m4_ref(db_env_set_func_dirlist, NOAPI, NOAPI, set_func_dirlist),
+$1, dbenv_set_func_exists, _m4_ref(db_env_set_func_exists, NOAPI, NOAPI, set_func_exists),
+$1, dbenv_set_func_free, _m4_ref(db_env_set_func_free, NOAPI, NOAPI, set_func_free),
+$1, dbenv_set_func_fsync, _m4_ref(db_env_set_func_fsync, NOAPI, NOAPI, set_func_fsync),
+$1, dbenv_set_func_ftruncate, _m4_ref(db_env_set_func_ftruncate, NOAPI, NOAPI, set_func_ftruncate),
+$1, dbenv_set_func_ioinfo, _m4_ref(db_env_set_func_ioinfo, NOAPI, NOAPI, set_func_ioinfo),
+$1, dbenv_set_func_malloc, _m4_ref(db_env_set_func_malloc, NOAPI, NOAPI, set_func_malloc),
+$1, dbenv_set_func_map, _m4_ref(db_env_set_func_map, NOAPI, NOAPI, set_func_map),
+$1, dbenv_set_func_open, _m4_ref(db_env_set_func_open, NOAPI, NOAPI, set_func_open),
+$1, dbenv_set_func_pread, _m4_ref(db_env_set_func_pread, NOAPI, NOAPI, set_func_pread),
+$1, dbenv_set_func_pwrite, _m4_ref(db_env_set_func_pwrite, NOAPI, NOAPI, set_func_pwrite),
+$1, dbenv_set_func_read, _m4_ref(db_env_set_func_read, NOAPI, NOAPI, set_func_read),
+$1, dbenv_set_func_realloc, _m4_ref(db_env_set_func_realloc, NOAPI, NOAPI, set_func_realloc),
+$1, dbenv_set_func_rename, _m4_ref(db_env_set_func_rename, NOAPI, NOAPI, set_func_rename),
+$1, dbenv_set_func_seek, _m4_ref(db_env_set_func_seek, NOAPI, NOAPI, set_func_seek),
+$1, dbenv_set_func_sleep, _m4_ref(db_env_set_func_sleep, NOAPI, NOAPI, set_func_sleep),
+$1, dbenv_set_func_unlink, _m4_ref(db_env_set_func_unlink, NOAPI, NOAPI, set_func_unlink),
+$1, dbenv_set_func_unmap, _m4_ref(db_env_set_func_unmap, NOAPI, NOAPI, set_func_unmap),
+$1, dbenv_set_func_write, _m4_ref(db_env_set_func_write, NOAPI, NOAPI, set_func_write),
+$1, dbenv_set_func_yield, _m4_ref(db_env_set_func_yield, NOAPI, NOAPI, set_func_yield),
+dnl #################################################################
+dnl Utilities
+dnl #################################################################
+$1, berkeley_db_svc, m4_link(M4RELDIR/utility/berkeley_db_svc, berkeley_db_svc),
+$1, db_archive, m4_link(M4RELDIR/utility/db_archive, db_archive),
+$1, db_checkpoint, m4_link(M4RELDIR/utility/db_checkpoint, db_checkpoint),
+$1, db_codegen, m4_link(M4RELDIR/utility/db_codegen, db_codegen),
+$1, db_deadlock, m4_link(M4RELDIR/utility/db_deadlock, db_deadlock),
+$1, db_dump, m4_link(M4RELDIR/utility/db_dump, db_dump),
+$1, db_dump185, m4_link(M4RELDIR/utility/db_dump, db_dump185),
+$1, db_hotbackup, m4_link(M4RELDIR/utility/db_hotbackup, db_hotbackup),
+$1, db_load, m4_link(M4RELDIR/utility/db_load, db_load),
+$1, db_printlog, m4_link(M4RELDIR/utility/db_printlog, db_printlog),
+$1, db_recover, m4_link(M4RELDIR/utility/db_recover, db_recover),
+$1, db_stat, m4_link(M4RELDIR/utility/db_stat, db_stat),
+$1, db_upgrade, m4_link(M4RELDIR/utility/db_upgrade, db_upgrade),
+$1, db_verify, m4_link(M4RELDIR/utility/db_verify, db_verify),
+dnl #################################################################
+dnl Dbm
+dnl #################################################################
+$1, dbm, _m4_ref(dbm, historic, NOAPI, dbm),
+$1, dbm/ndbm, _m4_ref(dbm/ndbm, historic, NOAPI, dbm),
+$1, dbm_clearerr, _m4_ref(dbm_close, historic, NOAPI, dbm),
+$1, dbm_close, _m4_ref(dbm_close, historic, NOAPI, dbm),
+$1, dbm_delete, _m4_ref(dbm_delete, historic, NOAPI, dbm),
+$1, dbm_dirfno, _m4_ref(dbm_dirfno, historic, NOAPI, dbm),
+$1, dbm_error, _m4_ref(dbm_close, historic, NOAPI, dbm),
+$1, dbm_fetch, _m4_ref(dbm_fetch, historic, NOAPI, dbm),
+$1, dbm_firstkey, _m4_ref(dbm_firstkey, historic, NOAPI, dbm),
+$1, dbm_nextkey, _m4_ref(dbm_nextkey, historic, NOAPI, dbm),
+$1, dbm_open, _m4_ref(dbm_open, historic, NOAPI, dbm),
+$1, dbm_pagfno, _m4_ref(dbm_pagfno, historic, NOAPI, dbm),
+$1, dbm_store, _m4_ref(dbm_store, historic, NOAPI, dbm),
+$1, dbmclose, _m4_ref(dbmclose, historic, NOAPI, dbm),
+$1, dbminit, _m4_ref(dbminit, historic, NOAPI, dbm),
+$1, delete, _m4_ref(delete, historic, NOAPI, dbm),
+$1, fetch, _m4_ref(fetch, historic, NOAPI, dbm),
+$1, firstkey, _m4_ref(firstkey, historic, NOAPI, dbm),
+$1, ndbm, _m4_ref(ndbm, historic, NOAPI, dbm),
+$1, nextkey, _m4_ref(nextkey, historic, NOAPI, dbm),
+$1, store, _m4_ref(store, historic, NOAPI, dbm),
+dnl #################################################################
+dnl Hsearch
+dnl #################################################################
+$1, hcreate, _m4_ref(hcreate, historic, NOAPI, hsearch),
+$1, hsearch, _m4_ref(hsearch, historic, NOAPI, hsearch),
+dnl #################################################################
+dnl Flags, types, environment variables.
+dnl #################################################################
+$1, DB_AFTER, [_m4_nref($1, $1, dbc_put)],
+$1, DB_AGGRESSIVE, [_m4_nref($1, $1, db_verify)],
+$1, DB_APPEND, [_m4_nref($1, $1, db_put)],
+$1, DB_ARCH_ABS, [_m4_nref($1, $1, log_archive)],
+$1, DB_ARCH_DATA, [_m4_nref($1, $1, log_archive)],
+$1, DB_ARCH_LOG, [_m4_nref($1, $1, log_archive)],
+$1, DB_ARCH_REMOVE, [_m4_nref($1, $1, log_archive)],
+$1, DB_AUTO_COMMIT, [_m4_nref($1, $1, env_set_flags)],
+$1, DB_BEFORE, [_m4_nref($1, $1, dbc_put)],
+$1, DB_BTREE, [_m4_nref($1, $1, db_open)],
+$1, DB_CDB_ALLDB, [_m4_nref($1, $1, env_set_flags)],
+$1, DB_CHKSUM, [_m4_nref($1, $1, db_set_flags)],
+$1, DB_CONFIG, [m4_linkpage(M4RELDIR/ref/env/db_config, $1, $1)],
+$1, DB_CONSUME, [_m4_nref($1, $1, db_get)],
+$1, DB_CONSUME_WAIT, [_m4_nref($1, $1, db_get)],
+$1, DB_CREATE, [_m4_nref($1, $1, env_open)],
+$1, DB_CURRENT, [_m4_nref($1, $1, dbc_get)],
+$1, DB_CXX_NO_EXCEPTIONS, [_m4_nref($1, $1, env_class)],
+$1, DB_DBT_APPMALLOC, [_m4_nref($1, $1, dbt_class)],
+$1, DB_DBT_MALLOC, [_m4_nref($1, $1, dbt_class)],
+$1, DB_DBT_MULTIPLE, [_m4_nref($1, $1, db_associate)],
+$1, DB_DBT_PARTIAL, [_m4_nref($1, $1, dbt_class)],
+$1, DB_DBT_REALLOC, [_m4_nref($1, $1, dbt_class)],
+$1, DB_DBT_USERMEM, [_m4_nref($1, $1, dbt_class)],
+$1, DB_DIRECT, [_m4_nref($1, $1, memp_fopen)],
+$1, DB_DIRECT_DB, [_m4_nref($1, $1, env_set_flags)],
+$1, DB_DIRECT_LOG, [_m4_nref($1, $1, env_set_flags)],
+$1, DB_DSYNC_DB, [_m4_nref($1, $1, env_set_flags)],
+$1, DB_DSYNC_LOG, [_m4_nref($1, $1, env_set_flags)],
+$1, DB_DUP, [_m4_nref($1, $1, db_set_flags)],
+$1, DB_DUPSORT, [_m4_nref($1, $1, db_set_flags)],
+$1, DB_EID_BROADCAST, [_m4_nref($1, $1, rep_transport)],
+$1, DB_EID_INVALID, [_m4_nref($1, $1, rep_transport)],
+$1, DB_ENCRYPT, [_m4_nref($1, $1, db_set_flags)],
+$1, DB_ENCRYPT_AES, [_m4_nref($1, $1, env_set_encrypt)],
+$1, DB_EVENT_PANIC, [_m4_nref($1, $1, env_event_notify)],
+$1, DB_EVENT_REP_CLIENT, [_m4_nref($1, $1, env_event_notify)],
+$1, DB_EVENT_REP_ELECTED, [_m4_nref($1, $1, env_event_notify)],
+$1, DB_EVENT_REP_MASTER, [_m4_nref($1, $1, env_event_notify)],
+$1, DB_EVENT_REP_NEWMASTER, [_m4_nref($1, $1, env_event_notify)],
+$1, DB_EVENT_REP_PERM_FAILED, [_m4_nref($1, $1, env_event_notify)],
+$1, DB_EVENT_REP_STARTUPDONE, [_m4_nref($1, $1, env_event_notify)],
+$1, DB_EVENT_WRITE_FAILED, [_m4_nref($1, $1, env_event_notify)],
+$1, DB_EXCL, [_m4_nref($1, $1, db_open)],
+$1, DB_FAST_STAT, [_m4_nref($1, $1, db_stat)],
+$1, DB_FIRST, [_m4_nref($1, $1, dbc_get)],
+$1, DB_FLUSH, [_m4_nref($1, $1, log_put)],
+$1, DB_FORCE, [_m4_nref($1, $1, env_remove)],
+$1, DB_FREELIST_ONLY, [_m4_nref($1, $1, dbh_compact)],
+$1, DB_FREE_SPACE, [_m4_nref($1, $1, dbh_compact)],
+$1, DB_GET_BOTH, [_m4_nref($1, $1, db_get)],
+$1, DB_GET_BOTH_RANGE, [_m4_nref($1, $1, db_get)],
+$1, DB_GET_RECNO, [_m4_nref($1, $1, dbc_get)],
+$1, DB_HASH, [_m4_nref($1, $1, db_open)],
+$1, DB_HOME, [m4_linkpage(M4RELDIR/ref/env/naming, $1, $1)],
+$1, DB_IMMUTABLE_KEY, [_m4_nref($1, $1, dbh_associate)],
+$1, DB_INIT_CDB, [_m4_nref($1, $1, env_open)],
+$1, DB_INIT_LOCK, [_m4_nref($1, $1, env_open)],
+$1, DB_INIT_LOG, [_m4_nref($1, $1, env_open)],
+$1, DB_INIT_MPOOL, [_m4_nref($1, $1, env_open)],
+$1, DB_INIT_REP, [_m4_nref($1, $1, env_open)],
+$1, DB_INIT_TXN, [_m4_nref($1, $1, env_open)],
+$1, DB_INORDER, [_m4_nref($1, $1, db_set_flags)],
+$1, DB_JOIN_ITEM, [_m4_nref($1, $1, db_join)],
+$1, DB_JOIN_NOSORT, [_m4_nref($1, $1, db_join)],
+$1, DB_KEYFIRST, [_m4_nref($1, $1, dbc_put)],
+$1, DB_KEYLAST, [_m4_nref($1, $1, dbc_put)],
+$1, DB_LAST, [_m4_nref($1, $1, dbc_get)],
+$1, DB_LOCKDOWN, [_m4_nref($1, $1, env_open)],
+$1, DB_LOCK_DEFAULT, [_m4_nref($1, $1, env_set_lk_detect)],
+$1, DB_LOCK_EXPIRE, [_m4_nref($1, $1, env_set_lk_detect)],
+$1, DB_LOCK_GET, [_m4_nref($1, $1, lock_vec)],
+$1, DB_LOCK_GET_TIMEOUT, [_m4_nref($1, $1, lock_vec)],
+$1, DB_LOCK_IREAD, [_m4_nref($1, $1, lock_vec)],
+$1, DB_LOCK_IWR, [_m4_nref($1, $1, lock_vec)],
+$1, DB_LOCK_IWRITE, [_m4_nref($1, $1, lock_vec)],
+$1, DB_LOCK_MAXLOCKS, [_m4_nref($1, $1, env_set_lk_detect)],
+$1, DB_LOCK_MAXWRITE, [_m4_nref($1, $1, env_set_lk_detect)],
+$1, DB_LOCK_MINLOCKS, [_m4_nref($1, $1, env_set_lk_detect)],
+$1, DB_LOCK_MINWRITE, [_m4_nref($1, $1, env_set_lk_detect)],
+$1, DB_LOCK_NOWAIT, [_m4_nref($1, $1, lock_vec)],
+$1, DB_LOCK_OLDEST, [_m4_nref($1, $1, env_set_lk_detect)],
+$1, DB_LOCK_PUT, [_m4_nref($1, $1, lock_vec)],
+$1, DB_LOCK_PUT_ALL, [_m4_nref($1, $1, lock_vec)],
+$1, DB_LOCK_PUT_OBJ, [_m4_nref($1, $1, lock_vec)],
+$1, DB_LOCK_RANDOM, [_m4_nref($1, $1, env_set_lk_detect)],
+$1, DB_LOCK_READ, [_m4_nref($1, $1, lock_vec)],
+$1, DB_LOCK_TIMEOUT, [_m4_nref($1, $1, lock_vec)],
+$1, DB_LOCK_WRITE, [_m4_nref($1, $1, lock_vec)],
+$1, DB_LOCK_YOUNGEST, [_m4_nref($1, $1, env_set_lk_detect)],
+$1, DB_LOG_AUTOREMOVE, [_m4_nref($1, $1, env_set_flags)],
+$1, DB_LOG_INMEMORY, [_m4_nref($1, $1, env_set_flags)],
+$1, DB_MPOOL_CREATE, [_m4_nref($1, $1, memp_fget)],
+$1, DB_MPOOL_DIRTY, [_m4_nref($1, $1, memp_fget)],
+$1, DB_MPOOL_EDIT, [_m4_nref($1, $1, memp_fget)],
+$1, DB_MPOOL_LAST, [_m4_nref($1, $1, memp_fget)],
+$1, DB_MPOOL_NEW, [_m4_nref($1, $1, memp_fget)],
+$1, DB_MPOOL_NOFILE, [_m4_nref($1, $1, memp_set_flags)],
+$1, DB_MPOOL_UNLINK, [_m4_nref($1, $1, memp_set_flags)],
+$1, DB_MULTIPLE, [_m4_nref($1, $1, dbc_get)],
+$1, DB_MULTIPLE_INIT, [_m4_nref($1, $1, dbt_bulk)],
+$1, DB_MULTIPLE_KEY, [_m4_nref($1, $1, dbc_get)],
+$1, DB_MULTIPLE_KEY_NEXT, [_m4_nref($1, $1, dbt_bulk)],
+$1, DB_MULTIPLE_NEXT, [_m4_nref($1, $1, dbt_bulk)],
+$1, DB_MULTIPLE_RECNO_NEXT, [_m4_nref($1, $1, dbt_bulk)],
+$1, DB_MULTIVERSION, [_m4_nref($1, $1, db_open)],
+$1, DB_MUTEX_PROCESS_ONLY, [_m4_nref($1, $1, env_set_isalive)],
+$1, DB_MUTEX_SELF_BLOCK, [_m4_nref($1, $1, mutex_alloc)],
+$1, DB_NEXT, [_m4_nref($1, $1, dbc_get)],
+$1, DB_NEXT_DUP, [_m4_nref($1, $1, dbc_get)],
+$1, DB_NEXT_NODUP, [_m4_nref($1, $1, dbc_get)],
+$1, DB_NODUPDATA, [_m4_nref($1, $1, db_put)],
+$1, DB_NOLOCKING, [_m4_nref($1, $1, env_set_flags)],
+$1, DB_NOMMAP, [_m4_nref($1, $1, env_set_flags)],
+$1, DB_NOORDERCHK, [_m4_nref($1, $1, db_verify)],
+$1, DB_NOOVERWRITE, [_m4_nref($1, $1, db_put)],
+$1, DB_NOPANIC, [_m4_nref($1, $1, env_set_flags)],
+$1, DB_NOSYNC, [_m4_nref($1, $1, db_close)],
+$1, DB_ODDFILESIZE, [_m4_nref($1, $1, memp_fopen)],
+$1, DB_ORDERCHKONLY, [_m4_nref($1, $1, db_verify)],
+$1, DB_OVERWRITE, [_m4_nref($1, $1, env_set_flags)],
+$1, DB_PANIC_ENVIRONMENT, [_m4_nref($1, $1, env_set_flags)],
+$1, DB_POSITION, [_m4_nref($1, $1, dbc_dup)],
+$1, DB_PREV, [_m4_nref($1, $1, dbc_get)],
+$1, DB_PREV_DUP, [_m4_nref($1, $1, dbc_get)],
+$1, DB_PREV_NODUP, [_m4_nref($1, $1, dbc_get)],
+$1, DB_PRINTABLE, [_m4_nref($1, $1, db_verify)],
+$1, DB_PRIORITY_DEFAULT, [_m4_nref($1, $1, dbc_set_priority)],
+$1, DB_PRIORITY_HIGH, [_m4_nref($1, $1, dbc_set_priority)],
+$1, DB_PRIORITY_LOW, [_m4_nref($1, $1, dbc_set_priority)],
+$1, DB_PRIORITY_UNCHANGED, [_m4_nref($1, $1, memp_fput)],
+$1, DB_PRIORITY_VERY_HIGH, [_m4_nref($1, $1, dbc_set_priority)],
+$1, DB_PRIORITY_VERY_LOW, [_m4_nref($1, $1, dbc_set_priority)],
+$1, DB_PRIVATE, [_m4_nref($1, $1, env_open)],
+$1, DB_QUEUE, [_m4_nref($1, $1, db_open)],
+$1, DB_RDONLY, [_m4_nref($1, $1, db_open)],
+$1, DB_READ_COMMITTED, [_m4_nref($1, $1, db_cursor)],
+$1, DB_READ_UNCOMMITTED, [_m4_nref($1, $1, db_open)],
+$1, DB_RECNO, [_m4_nref($1, $1, db_open)],
+$1, DB_RECNUM, [_m4_nref($1, $1, db_set_flags)],
+$1, DB_RECOVER, [_m4_nref($1, $1, env_open)],
+$1, DB_RECOVER_FATAL, [_m4_nref($1, $1, env_open)],
+$1, DB_REGION_INIT, [_m4_nref($1, $1, env_set_flags)],
+$1, DB_REGISTER, [_m4_nref($1, $1, env_open)],
+$1, DB_RENUMBER, [_m4_nref($1, $1, db_set_flags)],
+$1, DB_REPMGR_ACKS_ALL, [_m4_nref($1, $1, repmgr_ack_policy)],
+$1, DB_REPMGR_ACKS_ALL_PEERS, [_m4_nref($1, $1, repmgr_ack_policy)],
+$1, DB_REPMGR_ACKS_NONE, [_m4_nref($1, $1, repmgr_ack_policy)],
+$1, DB_REPMGR_ACKS_ONE, [_m4_nref($1, $1, repmgr_ack_policy)],
+$1, DB_REPMGR_ACKS_ONE_PEER, [_m4_nref($1, $1, repmgr_ack_policy)],
+$1, DB_REPMGR_ACKS_QUORUM, [_m4_nref($1, $1, repmgr_ack_policy)],
+$1, DB_REPMGR_CONNECTED, [_m4_nref($1, $1, repmgr_site_list)],
+$1, DB_REPMGR_DISCONNECTED, [_m4_nref($1, $1, repmgr_site_list)],
+$1, DB_REP_ACK_TIMEOUT, [_m4_nref($1, $1, rep_timeout)],
+$1, DB_REP_ANYWHERE, [_m4_nref($1, $1, rep_transport)],
+$1, DB_REP_CHECKPOINT_DELAY, [_m4_nref($1, $1, rep_timeout)],
+$1, DB_REP_CLIENT, [_m4_nref($1, $1, repmgr_start)],
+$1, DB_REP_CONF_BULK, [_m4_nref($1, $1, rep_config)],
+$1, DB_REP_CONF_DELAYCLIENT, [_m4_nref($1, $1, rep_config)],
+$1, DB_REP_CONF_NOAUTOINIT, [_m4_nref($1, $1, rep_config)],
+$1, DB_REP_CONF_NOWAIT, [_m4_nref($1, $1, rep_config)],
+$1, DB_REP_CONNECTION_RETRY, [_m4_nref($1, $1, rep_timeout)],
+$1, DB_REP_ELECTION, [_m4_nref($1, $1, repmgr_start)],
+$1, DB_REP_ELECTION_RETRY, [_m4_nref($1, $1, rep_timeout)],
+$1, DB_REP_ELECTION_TIMEOUT, [_m4_nref($1, $1, rep_timeout)],
+$1, DB_REP_FULL_ELECTION_TIMEOUT, [_m4_nref($1, $1, rep_timeout)],
+$1, DB_REP_HANDLE_DEAD, [_m4_nref($1, $1, db_put)],
+$1, DB_REP_LOCKOUT, [_m4_nref($1, $1, db_put)],
+$1, DB_REP_MASTER, [_m4_nref($1, $1, repmgr_start)],
+$1, DB_REP_NOBUFFER, [_m4_nref($1, $1, rep_transport)],
+$1, DB_REP_PERMANENT, [_m4_nref($1, $1, rep_transport)],
+$1, DB_REP_REREQUEST, [_m4_nref($1, $1, rep_transport)],
+$1, DB_REP_UNAVAIL, [_m4_nref($1, $1, rep_elect)],
+$1, DB_REVSPLITOFF, [_m4_nref($1, $1, db_set_flags)],
+$1, DB_RMW, [_m4_nref($1, $1, dbc_get)],
+$1, DB_RPCCLIENT, [_m4_nref($1, $1, env_class)],
+$1, DB_SALVAGE, [_m4_nref($1, $1, db_verify)],
+$1, DB_SEQ_DEC, [_m4_nref($1, $1, seq_set_flags)],
+$1, DB_SEQ_INC, [_m4_nref($1, $1, seq_set_flags)],
+$1, DB_SEQ_WRAP, [_m4_nref($1, $1, seq_set_flags)],
+$1, DB_SET, [_m4_nref($1, $1, dbc_get)],
+$1, DB_SET_LOCK_TIMEOUT, [_m4_nref($1, $1, env_set_timeout)],
+$1, DB_SET_RANGE, [_m4_nref($1, $1, dbc_get)],
+$1, DB_SET_RECNO, [_m4_nref($1, $1, db_get)],
+$1, DB_SET_TXN_TIMEOUT, [_m4_nref($1, $1, env_set_timeout)],
+$1, DB_SNAPSHOT, [_m4_nref($1, $1, db_set_flags)],
+$1, DB_STAT_ALL, [_m4_nref($1, $1, env_stat)],
+$1, DB_STAT_CLEAR, [_m4_nref($1, $1, lock_stat)],
+$1, DB_STAT_LOCK_CONF, [_m4_nref($1, $1, lock_stat_print)],
+$1, DB_STAT_LOCK_LOCKERS, [_m4_nref($1, $1, lock_stat_print)],
+$1, DB_STAT_LOCK_OBJECTS, [_m4_nref($1, $1, lock_stat_print)],
+$1, DB_STAT_LOCK_PARAMS, [_m4_nref($1, $1, lock_stat_print)],
+$1, DB_STAT_MEMP_HASH, [_m4_nref($1, $1, memp_stat_print)],
+$1, DB_STAT_SUBSYSTEM, [_m4_nref($1, $1, env_stat)],
+$1, DB_SYSTEM_MEM, [_m4_nref($1, $1, env_open)],
+$1, DB_THREAD, [_m4_nref($1, $1, env_open)],
+$1, DB_THREADID_STRLEN, [_m4_nref($1, $1, env_set_thread_id_string)],
+$1, DB_TIME_NOTGRANTED, [_m4_nref($1, $1, env_set_flags)],
+$1, DB_TRUNCATE, [_m4_nref($1, $1, db_open)],
+$1, DB_TXN_ABORT, [_m4_nref($1, $1, env_set_app_dispatch)],
+$1, DB_TXN_APPLY, [_m4_nref($1, $1, env_set_app_dispatch)],
+$1, DB_TXN_BACKWARD_ROLL, [_m4_nref($1, $1, env_set_app_dispatch)],
+$1, DB_TXN_FORWARD_ROLL, [_m4_nref($1, $1, env_set_app_dispatch)],
+$1, DB_TXN_NOSYNC, [_m4_nref($1, $1, env_set_flags)],
+$1, DB_TXN_NOT_DURABLE, [_m4_nref($1, $1, db_set_flags)],
+$1, DB_TXN_NOWAIT, [_m4_nref($1, $1, txn_begin)],
+$1, DB_TXN_PRINT, [_m4_nref($1, $1, env_set_app_dispatch)],
+$1, DB_TXN_SNAPSHOT, [_m4_nref($1, $1, txn_begin)],
+$1, DB_TXN_SYNC, [_m4_nref($1, $1, txn_begin)],
+$1, DB_TXN_WAIT, [_m4_nref($1, $1, txn_begin)],
+$1, DB_TXN_WRITE_NOSYNC, [_m4_nref($1, $1, env_set_flags)],
+$1, DB_UNKNOWN, [_m4_nref($1, $1, db_open)],
+$1, DB_UPGRADE, [_m4_nref($1, $1, db_set_feedback)],
+$1, DB_USE_ENVIRON, [_m4_nref($1, $1, env_open)],
+$1, DB_USE_ENVIRON_ROOT, [_m4_nref($1, $1, env_open)],
+$1, DB_VERB_DEADLOCK, [_m4_nref($1, $1, env_set_verbose)],
+$1, DB_VERB_FILEOPS, [_m4_nref($1, $1, env_set_verbose)],
+$1, DB_VERB_FILEOPS_ALL, [_m4_nref($1, $1, env_set_verbose)],
+$1, DB_VERB_RECOVERY, [_m4_nref($1, $1, env_set_verbose)],
+$1, DB_VERB_REGISTER, [_m4_nref($1, $1, env_set_verbose)],
+$1, DB_VERB_REPLICATION, [_m4_nref($1, $1, env_set_verbose)],
+$1, DB_VERB_WAITSFOR, [_m4_nref($1, $1, env_set_verbose)],
+$1, DB_VERIFY, [_m4_nref($1, $1, db_set_feedback)],
+$1, DB_WRITECURSOR, [_m4_nref($1, $1, db_cursor)],
+$1, DB_XA_CREATE, [_m4_nref($1, $1, db_class)],
+$1, DB_XIDDATASIZE, [_m4_nref($1, $1, txn_prepare)],
+$1, DB_YIELDCPU, [_m4_nref($1, $1, env_set_flags)],
+$1, TMPDIR, [m4_linkpage(M4RELDIR/ref/env/naming, $1, $1)],
+$1, db_recno_t, [_m4_nref($1, $1, dbt_class)],
+dnl #################################################################
+dnl Error returns.
+dnl #################################################################
+$1, DB_BUFFER_SMALL, [_m4_nref($1, $1, dbt_class)],
+$1, DB_DONOTINDEX, [_m4_nref($1, $1, dbh_associate)],
+$1, DB_KEYEMPTY, [m4_linkpage(M4RELDIR/ref/program/errorret, $1, $1)],
+$1, DB_KEYEXIST, [_m4_nref($1, $1, dbc_put)],
+$1, DB_LOCK_DEADLOCK, [m4_linkpage(M4RELDIR/ref/program/errorret, $1, $1)],
+$1, DB_LOCK_NOTGRANTED, [m4_linkpage(M4RELDIR/ref/program/errorret, $1, $1)],
+$1, DB_LOG_BUFFER_FULL, [_m4_nref($1, $1, log_put)],
+$1, DB_NOSERVER, [_m4_nref($1, $1, env_set_rpc_server)],
+$1, DB_NOSERVER_HOME, [_m4_nref($1, $1, env_set_rpc_server)],
+$1, DB_NOSERVER_ID, [_m4_nref($1, $1, env_set_rpc_server)],
+$1, DB_NOTFOUND, [m4_linkpage(M4RELDIR/ref/program/errorret, $1, $1)],
+$1, DB_OLD_VERSION, [_m4_nref($1, $1, db_open)],
+$1, DB_PAGE_NOTFOUND, [_m4_nref($1, $1, memp_fget)],
+$1, DB_REPMGR_PEER, [_m4_nref($1, $1, rep_remote_addr)],
+$1, DB_REP_DUPMASTER, [_m4_nref($1, $1, rep_message)],
+$1, DB_REP_HOLDELECTION, [_m4_nref($1, $1, rep_message)],
+$1, DB_REP_IGNORE, [_m4_nref($1, $1, rep_message)],
+$1, DB_REP_ISPERM, [_m4_nref($1, $1, rep_message)],
+$1, DB_REP_JOIN_FAILURE, [_m4_nref($1, $1, rep_message)],
+$1, DB_REP_NEWSITE, [_m4_nref($1, $1, rep_message)],
+$1, DB_REP_NOTPERM, [_m4_nref($1, $1, rep_message)],
+$1, DB_RUNRECOVERY, [m4_linkpage(M4RELDIR/ref/program/errorret, $1, $1)],
+$1, DB_SECONDARY_BAD, [_m4_nref($1, $1, dbh_join)],
+$1, DB_VERIFY_BAD, [m4_linkpage(M4RELDIR/ref/program/errorret, $1, $1)],
+$1, DB_VERSION_MISMATCH, [_m4_nref($1, $1, env_open)],
+$1, EINVAL, EINVAL,
+dnl #################################################################
+dnl Check XML, or complain if it's a name we don't know.
+dnl #################################################################
+ifelse(M4PRODUCT, XML, _m4_xmllist($1), UNREF==$1))])
+dnl #################################################################
+dnl Specific API references
+dnl $1: name
+dnl
+dnl XXX
+dnl Don't remove the empty quotes before the popdef calls, it works
+dnl around a bug -- the popdef doesn't get expanded for some reason.
+dnl #################################################################
+define(m4_refc, [pushdef([M4API], C_API)m4_ref($1)[]popdef([M4API])])
+define(m4_refcxx, [pushdef([M4API], CXX_API)m4_ref($1)[]popdef([M4API])])
diff --git a/db/docs_src/m4/m4.ret b/db/docs_src/m4/m4.ret
new file mode 100644
index 000000000..6fa67ecc3
--- /dev/null
+++ b/db/docs_src/m4/m4.ret
@@ -0,0 +1,68 @@
+dnl $Id: m4.ret,v 10.133 2004/08/13 03:38:58 bostic Exp $
+dnl
+dnl ###################################################################
+dnl RETURN VALUES:
+dnl m4_return:
+dnl #1: API name
+dnl #2: Variadic list of return conditions
+dnl ###################################################################
+define(m4_return, [dnl
+define([__m4_retapi], [$1])
+m4_p([__m4_retloop(shift($@))])])
+dnl ###################################################################
+dnl __m4_common_ret_txt
+dnl Standard return text.
+dnl ###################################################################
+define(__m4_common_ret_txt, [dnl
+m4_refT(__m4_retapi)
+ifelse(M4EXCEPT, except_return, [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.],
+M4EXCEPT, except_only, [throws an exception that encapsulates a non-zero
+error value on failure.],[returns a non-zero error value on failure
+and 0 on success.])])
+dnl ###################################################################
+dnl __m4_retloop
+dnl Helper macro: loop through return list.
+dnl ###################################################################
+define(__m4_retloop, [ifelse([$1],,,
+dnl ###################################################################
+dnl "std"
+dnl Returning 0 or errno.
+dnl ###################################################################
+[$1], std, [The __m4_common_ret_txt
+__m4_retloop(shift($@))],
+dnl ###################################################################
+dnl "prev"
+dnl Otherwise, returning 0 or errno.
+dnl ###################################################################
+[$1], prev, [Unless otherwise specified, the __m4_common_ret_txt
+__m4_retloop(shift($@))],
+dnl ###################################################################
+dnl "except"
+dnl Specific return that may be an exception.
+dnl #2: the condition
+dnl #3: the return value.
+dnl ###################################################################
+[$1], except, [dnl
+The m4_refT(__m4_retapi)
+ifelse(M4EXCEPT, except_return, [will either return m4_ref($2) or
+throw an exception that encapsulates m4_ref($2)],
+M4EXCEPT, except_only,
+[will throw an exception that encapsulates m4_ref($2)],
+[will return m4_ref($2)]) $3.
+__m4_retloop(shift(shift(shift($@))))],
+dnl ###################################################################
+dnl "specific"
+dnl Specific return that is never an exception
+dnl #2: the condition
+dnl #3: the return value.
+dnl ###################################################################
+[$1], specific, [dnl
+The m4_refT(__m4_retapi) will return m4_ref($2) $3.
+__m4_retloop(shift(shift(shift($@))))],
+dnl ###################################################################
+dnl Everything else.
+dnl ###################################################################
+[$1
+__m4_retloop(shift($@))])])
diff --git a/db/docs_src/m4/m4.seealso b/db/docs_src/m4/m4.seealso
new file mode 100644
index 000000000..5e1081782
--- /dev/null
+++ b/db/docs_src/m4/m4.seealso
@@ -0,0 +1,52 @@
+dnl $Id: m4.seealso,v 10.81 2004/11/03 17:40:06 bostic Exp $
+
+dnl ###################################################################
+dnl DbEnv
+dnl ###################################################################
+define(m4_seealso, [dnl
+m4_hl
+m4_header(Class)
+ifelse($1, DbEnv, [dnl
+m4_ref(DbEnv)
+m4_header(See Also)
+m4_link(_m4_api/env_list, [Database Environments and Related Methods])],
+$1, Db, [dnl
+m4_ref(Db)
+m4_header(See Also)
+m4_link(_m4_api/db_list, [Databases and Related Methods])],
+$1, Dbc, [dnl
+m4_ref(Dbc)
+m4_header(See Also)
+m4_link(_m4_api/dbc_list, [Database Cursors and Related Methods])],
+$1, DbLock, [dnl
+m4_ref(DbEnv), m4_ref(DbLock)
+m4_header(See Also)
+m4_link(_m4_api/lock_list, [Locking Subsystem and Related Methods])],
+$1, DbLog, [dnl
+m4_ref(DbEnv), m4_ref(DbLogc), m4_ref(DbLsn)
+m4_header(See Also)
+m4_link(_m4_api/log_list, [Logging Subsystem and Related Methods])],
+$1, DbMpool, [dnl
+m4_ref(DbEnv), m4_ref(DbMpoolFile)
+m4_header(See Also)
+m4_link(_m4_api/memp_list, [Memory Pools and Related Methods])],
+$1, DbSequence, [dnl
+m4_ref(DbSequence)
+m4_header(See Also)
+m4_link(_m4_api/seq_list, [Sequences and Related Methods])],
+$1, Replication, [dnl
+m4_ref(DbEnv)
+m4_header(See Also)
+m4_link(_m4_api/rep_list, [Replication and Related Methods])],
+$1, DbTxn, [dnl
+m4_ref(DbEnv), m4_ref(DbTxn)
+m4_header(See Also)
+m4_link(_m4_api/txn_list, [Transaction Subsystem and Related Methods])])])
+
+dnl ###################################################################
+dnl Run-time configuration
+dnl ###################################################################
+define(m4_rtc_seealso, [dnl
+pushdef([M4PAGELOCAL],)
+m4_header(See Also)
+m4_link(M4RELDIR/ref/program/runtime, [Run-time configuration])])
diff --git a/db/docs_src/m4/m4.utility b/db/docs_src/m4/m4.utility
new file mode 100644
index 000000000..5a7608874
--- /dev/null
+++ b/db/docs_src/m4/m4.utility
@@ -0,0 +1,66 @@
+dnl $Id: m4.utility,v 10.17 2002/08/24 18:24:55 bostic Exp $
+
+dnl m4_utilenv --
+dnl -h environment section
+dnl #1: utility name
+define(m4_utilenv, [dnl
+m4_tagbegin
+m4_tag(DB_HOME, [dnl
+If the m4_option(h) option is not specified and the environment variable
+DB_HOME is set, it is used as the path of the database home, as described
+in m4_ref(dbenv_open).])
+m4_tagend])
+
+define(m4_hflag, [dnl
+m4_tagopt(h, [Specify a home directory for the database environment; by
+default, the current working directory is used.])])
+
+dnl m4_Lflag --
+dnl Log-the-pid option.
+dnl #1: utility name
+define(m4_Lflag, [dnl
+m4_tagopt(L, [dnl
+Log the execution of the m4_ref($1) utility to the specified file in the
+following format, where m4_italic([###]) is the process ID, and the date
+is the time the utility was started.
+m4_indent([$1: [###] Wed Jun 15 01:23:45 EDT 1995])
+This file will be removed if the m4_ref($1) utility exits gracefully.])])
+
+define(m4_Nflag, [dnl
+m4_tagopt(N, [dnl
+Do not acquire shared region mutexes while running. Other problems,
+such as potentially fatal errors in m4_db, will be ignored as well.
+This option is intended only for debugging errors, and should not be
+used under any other circumstances.])])
+
+define(m4_Pflag, [dnl
+m4_tagopt(P, [dnl
+Specify an environment password. Although m4_db utilities overwrite
+password strings as soon as possible, be aware there may be a window of
+vulnerability on systems where unprivileged users can see command-line
+arguments or where utilities are not able to overwrite the memory
+containing the command-line arguments.])])
+
+define(m4_Vflag, [dnl
+m4_tagopt(V, [dnl
+Write the library version number to the standard output, and exit.])])
+
+dnl m4_utilexit --
+dnl Exit macro.
+dnl #1: utility name
+define(m4_utilexit, [m4_p([dnl
+The m4_ref($1) utility exits 0 on success, and __GT__0 if an error occurs.])])
+
+dnl m4_detach --
+dnl Detaching from the environment paragraph.
+dnl #1: utility name
+dnl #2: "uses" or "may be used with"
+define(m4_detach, [m4_p([dnl
+The m4_ref($1) utility $2 a m4_db environment (as described for the
+m4_option(h) option, the environment variable m4_envvar(DB_HOME), or
+because the utility was run in a directory containing a m4_db
+environment). In order to avoid environment corruption when using a
+m4_db environment, m4_ref($1) should always be given the chance to
+detach from the environment and exit gracefully. To cause m4_ref($1)
+to release all environment resources and exit cleanly, send it an
+interrupt signal (SIGINT).])])
diff --git a/db/docs_src/memp/env_set_cache_max.so b/db/docs_src/memp/env_set_cache_max.so
new file mode 100644
index 000000000..252cc2cbf
--- /dev/null
+++ b/db/docs_src/memp/env_set_cache_max.so
@@ -0,0 +1,62 @@
+m4_comment([$Id: env_set_cache_max.so,v 1.2 2007/07/07 14:40:15 bostic Exp $])
+
+define(M4PAGELOCAL, [dbenv_set_cache_max, dbenv_get_cache_max])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbenv_set_cache_max),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__set_cache_max(DB_ENV *dbenv, u_int32_t gbytes, u_int32_t bytes);
+m4_blank
+int
+DB_ENV-__GT__get_cache_max(DB_ENV *dbenv, u_int32_t *gbytesp, u_int32_t *bytesp);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::set_cache_max(u_int32_t gbytes, u_int32_t bytes);
+m4_blank
+int
+DbEnv::get_cache_max(u_int32_t *gbytesp, u_int32_t *bytesp);
+]))
+
+m4_p([dnl
+The m4_refT(dbenv_set_cache_max) sets the maximum cache size, in bytes.
+The specified size is rounded to the nearest multiple of the cache
+region size, which is the initial cache size divided by the number of
+regions specified to the m4_refT(dbenv_set_cachesize). If no value is
+specified, it defaults to the initial cache size.])
+
+m4_env_config(dbenv_set_cache_max,
+[maximum cache size], set_cache_max, [the size in bytes])
+
+m4_scope_env(dbenv_set_cache_max)
+
+m4_when_any(dbenv_set_cache_max)
+
+m4_return(dbenv_set_cache_max, std)
+
+m4_parambegin
+m4_param(mp_mmapsize, [dnl
+The m4_arg(mp_mmapsize) parameter is the maximum file size, in bytes,
+for a file to be mapped into the process address space.])
+m4_paramend
+
+m4_err(dbenv_set_cache_max,
+einval, [the method was called after m4_ref(dbenv_open) was called])
+
+m4_pf_description(m4_ref(dbenv_get_cache_max))
+
+m4_p([dnl
+The m4_refT(dbenv_get_cache_max) returns the maximum size of the cache.])
+
+m4_when_any(dbenv_get_cache_max)
+
+m4_return(dbenv_get_cache_max, std)
+
+m4_parambegin
+m4_param_co(bytesp, additional bytes of memory in the cache)
+m4_param_co(gbytesp, gigabytes of memory in the cache)
+m4_paramend
+
+m4_seealso(DbEnv, DbMpool)
+m4_page_footer
diff --git a/db/docs_src/memp/env_set_mp_mmapsize.so b/db/docs_src/memp/env_set_mp_mmapsize.so
new file mode 100644
index 000000000..ae1e0677d
--- /dev/null
+++ b/db/docs_src/memp/env_set_mp_mmapsize.so
@@ -0,0 +1,58 @@
+m4_comment([$Id: env_set_mp_mmapsize.so,v 10.40 2004/09/28 15:04:21 bostic Exp $])
+
+define(M4PAGELOCAL, [dbenv_set_mp_mmapsize, dbenv_get_mp_mmapsize])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbenv_set_mp_mmapsize),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__set_mp_mmapsize(DB_ENV *dbenv, size_t mp_mmapsize);
+m4_blank
+int
+DB_ENV-__GT__get_mp_mmapsize(DB_ENV *dbenv, size_t *mp_mmapsizep);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::set_mp_mmapsize(size_t mp_mmapsize);
+m4_blank
+int
+DbEnv::get_mp_mmapsize(size_t *mp_mmapsizep);
+]))
+
+m4_p([dnl
+Files that are opened read-only in the pool (and that satisfy a few
+other criteria) are, by default, mapped into the process address space
+instead of being copied into the local cache. This can result in
+better-than-usual performance because available virtual memory is
+normally much larger than the local cache, and page faults are faster
+than page copying on many systems. However, it can cause resource
+starvation in the presence of limited virtual memory, and it can result
+in immense process sizes in the presence of large databases.])
+
+m4_p([dnl
+The m4_refT(dbenv_get_mp_mmapsize) sets the maximum file size, in bytes,
+for a file to be mapped into the process address space. If no value is
+specified, it defaults to 10MB.])
+
+m4_env_config(dbenv_set_mp_mmapsize,
+[maximum mapped file size], set_mp_mmapsize, [the size in bytes])
+
+m4_scope_env(dbenv_set_mp_mmapsize)
+
+m4_when_any(dbenv_set_mp_mmapsize)
+
+m4_return(dbenv_set_mp_mmapsize, std)
+
+m4_parambegin
+m4_param(mp_mmapsize, [dnl
+The m4_arg(mp_mmapsize) parameter is the maximum file size, in bytes,
+for a file to be mapped into the process address space.])
+m4_paramend
+
+m4_err(dbenv_set_mp_mmapsize,
+einval, [the method was called after m4_ref(dbenv_open) was called])
+
+m4_pf_getter(dbenv_get_mp_mmapsize, maximum file map size,, mp_mmapsizep)
+
+m4_seealso(DbMpool)
+m4_page_footer
diff --git a/db/docs_src/memp/m4.methods b/db/docs_src/memp/m4.methods
new file mode 100644
index 000000000..4c258f341
--- /dev/null
+++ b/db/docs_src/memp/m4.methods
@@ -0,0 +1,39 @@
+m4_comment([$Id: m4.methods,v 1.11 2007/07/06 00:22:53 mjc Exp $])
+
+m4_table_begin(, _center)
+
+m4_table_header(Memory Pools and Related Methods, Description)
+m4_comment([Db::mpf])m4_table_element(m4_ref(dbh_get_mpf), Return m4_ref(Db)'s underlying m4_ref(DbMpoolFile) handle)
+m4_comment([DbEnv::memp_stat])m4_table_element(m4_ref(memp_stat), Return memory pool statistics)
+m4_comment([DbEnv::memp_sync])m4_table_element(m4_ref(memp_sync), Flush pages from a memory pool)
+m4_comment([DbEnv::memp_trickle])m4_table_element(m4_ref(memp_trickle), Trickle flush pages from a memory pool)
+m4_comment([DbMemoryException])ifelse(M4API, CXX_API, [m4_table_element(m4_ref(DbMemoryException), Insufficient memory exception)])
+
+m4_table_header(Memory Pool Configuration, _empty)
+m4_comment([DbEnv::memp_register])m4_table_element(m4_ref(memp_register), Register input/output functions for a file in a memory pool)
+m4_comment([DbEnv::set_cachesize])m4_table_element(m4_ref(dbenv_set_cachesize), Set the environment cache size)
+m4_comment([DbEnv::set_cache_max])m4_table_element(m4_ref(dbenv_set_cache_max), Set the maximum cache size)
+m4_comment([DbEnv::set_mp_max_openfd])m4_table_element(m4_ref(memp_set_max_openfd), Set the maximum number of open file descriptors)
+m4_comment([DbEnv::set_mp_max_write])m4_table_element(m4_ref(memp_set_max_write), Set the maximum number of sequential disk writes)
+m4_comment([DbEnv::set_mp_mmapsize])m4_table_element(m4_ref(dbenv_set_mp_mmapsize), Set maximum mapped-in database file size)
+
+m4_table_header(Memory Pool Files, _empty)
+m4_comment([DbEnv::memp_fcreate])m4_table_element(m4_ref(memp_fcreate), Create a memory pool file handle)
+m4_comment([DbMpoolFile::])ifelse(M4API, CXX_API, [m4_table_element(m4_ref(DbMpoolFile), Memory pool file object)])
+m4_comment([DbMpoolFile::close])m4_table_element(m4_ref(memp_fclose), Close a file in a memory pool)
+m4_comment([DbMpoolFile::get])m4_table_element(m4_ref(memp_fget), Get page from a file in a memory pool)
+m4_comment([DbMpoolFile::open])m4_table_element(m4_ref(memp_fopen), Open a file in a memory pool)
+m4_comment([DbMpoolFile::put])m4_table_element(m4_ref(memp_fput), Return a page to a memory pool)
+m4_comment([DbMpoolFile::sync])m4_table_element(m4_ref(memp_fsync), Flush pages from a file in a memory pool)
+
+m4_table_header(Memory Pool File Configuration, _empty)
+m4_comment([DbMpoolFile::set_clear_len])m4_table_element(m4_ref(memp_set_clear_len), Set file page bytes to be cleared)
+m4_comment([DbMpoolFile::set_fileid])m4_table_element(m4_ref(memp_set_fileid), Set file unique identifier)
+m4_comment([DbMpoolFile::set_flags])m4_table_element(m4_ref(memp_set_flags), General memory pool file configuration)
+m4_comment([DbMpoolFile::set_ftype])m4_table_element(m4_ref(memp_set_ftype), Set file type)
+m4_comment([DbMpoolFile::set_lsn_offset])m4_table_element(m4_ref(memp_set_lsn_offset), Set file log-sequence-number offset)
+m4_comment([DbMpoolFile::set_maxsize])m4_table_element(m4_ref(memp_set_maxsize), Set maximum file size)
+m4_comment([DbMpoolFile::set_pgcookie])m4_table_element(m4_ref(memp_set_pgcookie), Set file cookie for pgin/pgout)
+m4_comment([DbMpoolFile::set_priority])m4_table_element(m4_ref(memp_set_priority), Set memory pool file priority)
+
+m4_table_end
diff --git a/db/docs_src/memp/memp_class.so b/db/docs_src/memp/memp_class.so
new file mode 100644
index 000000000..d6b14baae
--- /dev/null
+++ b/db/docs_src/memp/memp_class.so
@@ -0,0 +1,40 @@
+m4_comment([$Id: memp_class.so,v 10.21 2006/10/24 15:47:59 bostic Exp $])
+
+define(M4PAGELOCAL, DbMemoryException)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(DbMemoryException),
+ifelse(M4API, C_API, [dnl
+])
+ifelse(M4API, CXX_API, [dnl
+class DbMemoryException : public DbException {
+public:
+ Dbt *get_dbt() const;
+};
+]))
+
+m4_p([dnl
+This information describes the m4_ref(DbMemoryException) class and how
+it is used by the various Db* classes.])
+
+m4_p([dnl
+A m4_ref(DbMemoryException) is thrown when there is insufficient memory
+to complete an operation, and there is the possibility of recovering.
+An example is during a m4_ref(dbh_get) or m4_ref(dbc_get) operation with
+the m4_ref(Dbt) flags set to m4_ref(DB_DBT_USERMEM).])
+
+m4_idefz(DB_BUFFER_SMALL)
+m4_p([dnl
+The m4_ref(DbException) errno value is set to m4_ref(DB_BUFFER_SMALL)
+or ENOMEM.])
+
+m4_p([dnl
+The m4_arg(get_dbt) method returns the m4_ref(Dbt) with insufficient
+memory to complete the operation, causing the m4_ref(DbMemoryException)
+to be thrown.
+ifelse(M4API, CXX_API, [dnl
+The m4_ref(Dbt) pointer may or may not refer to valid memory, depending
+on whether the m4_ref(Dbt) used in the call to the failed m4_db method
+is still in scope and has not been deleted.])])
+
+m4_page_footer
diff --git a/db/docs_src/memp/memp_fclose.so b/db/docs_src/memp/memp_fclose.so
new file mode 100644
index 000000000..990b9cc77
--- /dev/null
+++ b/db/docs_src/memp/memp_fclose.so
@@ -0,0 +1,37 @@
+m4_comment([$Id: memp_fclose.so,v 10.33 2004/08/13 03:38:58 bostic Exp $])
+
+define(M4PAGELOCAL, memp_fclose)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(memp_fclose),
+ifelse(M4API, C_API, [dnl
+int
+DB_MPOOLFILE-__GT__close(DB_MPOOLFILE *mpf, u_int32_t flags);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbMpoolFile::close(u_int32_t flags);
+]))
+
+m4_p([dnl
+The m4_refT(memp_fclose) closes the source file indicated by the
+m4_refO(DbMpoolFile). Calling m4_ref(memp_fclose) does not imply a call
+to m4_ref(memp_fsync); that is, no pages are written to the source file
+as as a result of calling m4_ref(memp_fclose).])
+
+m4_p([dnl
+If the m4_ref(DbMpoolFile) was temporary, any underlying files created
+for this m4_ref(DbMpoolFile) will be removed.])
+
+m4_p([dnl
+After m4_ref(memp_fclose) has been called, regardless of its return, the
+m4_ref(DbMpoolFile) handle may not be accessed again.])
+
+m4_return(memp_fclose, std)
+
+m4_parambegin
+m4_unusedflags
+m4_paramend
+
+m4_seealso(DbMpool)
+m4_page_footer
diff --git a/db/docs_src/memp/memp_fcreate.so b/db/docs_src/memp/memp_fcreate.so
new file mode 100644
index 000000000..376f1fcff
--- /dev/null
+++ b/db/docs_src/memp/memp_fcreate.so
@@ -0,0 +1,29 @@
+m4_comment([$Id: memp_fcreate.so,v 10.12 2004/08/13 03:38:58 bostic Exp $])
+
+define(M4PAGELOCAL, memp_fcreate)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(memp_fcreate),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__memp_fcreate(DB_ENV *dbenvp, DB_MPOOLFILE **dbmfp, u_int32_t flags);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::memp_fcreate(DbMpoolFile **dbmfp, u_int32_t flags);
+]))
+
+m4_p([dnl
+The m4_refT(memp_fcreate) creates a m4_ref(DbMpoolFile) structure that
+is the handle for a m4_db shared memory buffer pool file. A pointer to
+this structure is returned in the memory to which m4_arg(dbmfp) refers.
+Calling the m4_refT(memp_fclose) will discard the returned handle.])
+
+m4_return(memp_fcreate, std)
+
+m4_parambegin
+m4_unusedflags
+m4_paramend
+
+m4_seealso(DbMpool)
+m4_page_footer
diff --git a/db/docs_src/memp/memp_fget.so b/db/docs_src/memp/memp_fget.so
new file mode 100644
index 000000000..a50305650
--- /dev/null
+++ b/db/docs_src/memp/memp_fget.so
@@ -0,0 +1,119 @@
+m4_comment([$Id: memp_fget.so,v 10.48 2006/09/13 14:30:54 mjc Exp $])
+
+define(M4PAGELOCAL,
+ [memp_fget, DB_MPOOL_CREATE, DB_MPOOL_DIRTY, DB_MPOOL_EDIT,
+ DB_MPOOL_LAST, DB_MPOOL_NEW,
+ DB_PAGE_NOTFOUND, DB_LOCK_DEADLOCK])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(memp_fget),
+ifelse(M4API, C_API, [dnl
+int
+DB_MPOOLFILE-__GT__get(DB_MPOOLFILE *mpf,
+ db_pgno_t *pgnoaddr, DB_TXN * txnid, u_int32_t flags, void **pagep);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbMpoolFile::get(db_pgno_t *pgnoaddr,
+ DbTxn *txnid, u_int32_t flags, void **pagep);
+]))
+
+m4_p([dnl
+The m4_refT(memp_fget) returns pages from the cache.])
+
+m4_p([dnl
+All pages returned by m4_ref(memp_fget) will be retained (that is,
+m4_italic(pinned)), in the pool until a subsequent call to
+m4_ref(memp_fput).])
+
+m4_p([The returned page is m4_bold(size_t) type aligned.])
+
+m4_p([dnl
+Fully or partially created pages have all their bytes set to a nul byte,
+unless the m4_refT(memp_set_clear_len) was called to specify other
+behavior before the file was opened.])
+
+m4_idefz(DB_PAGE_NOTFOUND)
+m4_return(memp_fget, except, DB_PAGE_NOTFOUND,
+[if the requested page does not exist and m4_ref(DB_MPOOL_CREATE) was
+not set], prev)
+
+m4_parambegin
+m4_param(flags, [dnl
+m4_sf_or_may
+
+m4_tagbegin
+m4_tag(m4_idef(DB_MPOOL_CREATE), [dnl
+If the specified page does not exist, create it. In this case, the
+m4_linkpage(memp_register, pgin, pgin) method, if specified, is
+called.])
+
+m4_tag(m4_idef(DB_MPOOL_DIRTY), [dnl
+The page will be modified and must be written to the source file before
+being evicted from the pool. For files open with the
+m4_ref(DB_MULTIVERSION) flag set, a new copy of the page will be made
+if this is the first time the specified transaction is modifying it.])
+
+m4_tag(m4_idef(DB_MPOOL_EDIT), [dnl
+The page will be modified and must be written to the source file before
+being evicted from the pool. No copy of the page will be made, regardless
+of the m4_ref(DB_MULTIVERSION) setting. This flag is only intended for
+use in situations where a transaction handle is not available, such as during
+aborts or recovery.])
+
+m4_tag(m4_idef(DB_MPOOL_LAST), [dnl
+Return the last page of the source file, and copy its page number into
+the memory location to which m4_arg(pgnoaddr) refers.])
+
+m4_tag(m4_idef(DB_MPOOL_NEW), [dnl
+Create a new page in the file, and copy its page number into the memory
+location to which m4_arg(pgnoaddr) refers. In this case, the
+m4_linkpage(memp_register, pgin, pgin) method, if specified, is
+m4_bold(not) called.])
+m4_tagend
+
+m4_p([dnl
+The m4_ref(DB_MPOOL_CREATE), m4_ref(DB_MPOOL_LAST), and
+m4_ref(DB_MPOOL_NEW) flags are mutually exclusive.])])
+
+m4_param_co(pagep, returned page, REF)
+
+m4_param(pgnoaddr, [dnl
+If the m4_arg(flags) parameter is set to m4_ref(DB_MPOOL_LAST) or
+m4_ref(DB_MPOOL_NEW), the page number of the created page is copied
+into the memory location to which the m4_arg(pgnoaddr) parameter
+refers. Otherwise, the m4_arg(pgnoaddr) parameter is the page to
+create or retrieve.
+m4_p([m4_bold([dnl
+Page numbers begin at 0; that is, the first page in the file is page
+number 0, not page number 1.])])])
+
+m4_param(txnid, [If the operation is part of an application-specified
+transaction, the m4_arg(txnid) parameter is a transaction handle
+returned from m4_ref(txn_begin); otherwise NULL. A transaction is
+required if the file is open for multiversion concurrency control by
+passing m4_ref(DB_MULTIVERSION) to m4_ref(memp_fopen) and the
+m4_ref(DB_MPOOL_DIRTY), m4_ref(DB_MPOOL_CREATE) or
+m4_ref(DB_MPOOL_NEW) flags were specified. Otherwise it is ignored.])
+m4_paramend
+
+m4_err(memp_fget,
+EACCES,
+[The m4_ref(DB_MPOOL_DIRTY) or m4_ref(DB_MPOOL_EDIT) flag was set and
+the source file was not opened for writing.],
+EAGAIN,
+[The page reference count has overflowed. (This should never happen
+unless there is a bug in the application.)],
+einval,
+[the m4_ref(DB_MPOOL_NEW) flag was set, and the source file was not
+opened for writing;
+more than one of m4_ref(DB_MPOOL_CREATE), m4_ref(DB_MPOOL_LAST), and
+m4_ref(DB_MPOOL_NEW) was set.],
+m4_ref(DB_LOCK_DEADLOCK),
+[For transactions configured with m4_ref(DB_TXN_SNAPSHOT), the page has
+been modified since the transaction began.],
+memory,
+[cache is full, and no more pages will fit in the pool])
+
+m4_seealso(DbMpool)
+m4_page_footer
diff --git a/db/docs_src/memp/memp_fopen.so b/db/docs_src/memp/memp_fopen.so
new file mode 100644
index 000000000..54bd3c66f
--- /dev/null
+++ b/db/docs_src/memp/memp_fopen.so
@@ -0,0 +1,84 @@
+m4_comment([$Id: memp_fopen.so,v 10.53 2006/08/08 05:24:05 mjc Exp $])
+
+define(M4PAGELOCAL, [memp_fopen, DB_DIRECT, DB_ODDFILESIZE])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(memp_fopen),
+ifelse(M4API, C_API, [dnl
+int
+DB_MPOOLFILE-__GT__open(DB_MPOOLFILE *mpf,
+ char *file, u_int32_t flags, int mode, size_t pagesize);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbMpoolFile::open(const char *file, u_int32_t flags, int mode, size_t pagesize);
+]))
+
+m4_p([dnl
+The m4_refT(memp_fopen) opens a file in the shared memory buffer pool.])
+
+m4_return(memp_fopen, std)
+
+m4_parambegin
+
+m4_param_utf8(file, [dnl
+The m4_arg(file) parameter is the name of the file to be opened. If
+m4_arg(file) is NULL, a private temporary file is created that
+cannot be shared with any other process (although it may be shared with
+other threads of control in the same process).])
+
+m4_param(flags, [dnl
+m4_sf_or_may
+
+m4_tagbegin
+m4_tag(m4_idef(DB_CREATE), [dnl
+Create any underlying files, as necessary. If the files do not already
+exist and the DB_CREATE flag is not specified, the call will
+fail.])
+
+m4_idefz([turn off system @buffering])
+m4_tag(m4_idef(DB_DIRECT), [dnl
+If set and supported by the system, turn off system buffering of the
+file to avoid double caching.])
+
+m4_tag(m4_idef(DB_MULTIVERSION), [dnl
+Open the file with support for m4_link(M4RELDIR/ref/transapp/read,
+multiversion concurrency control). Calls to m4_ref(memp_fget) which
+dirty pages will cause copies to be made in the cache.])
+
+m4_tag(m4_idef(DB_NOMMAP), [dnl
+Always copy this file into the local cache instead of potentially mapping
+it into process memory (see the description of the
+m4_refT(dbenv_set_mp_mmapsize) for further information).])
+
+m4_tag(m4_idef(DB_ODDFILESIZE), [dnl
+Attempts to open files which are not a multiple of the page size in
+length will fail, by default. If the m4_ref(DB_ODDFILESIZE) flag is
+set, any partial page at the end of the file will be ignored and the
+open will proceed.])
+
+m4_tag(m4_idef(DB_RDONLY), [dnl
+Open any underlying files for reading only. Any attempt to write the file
+using the pool functions will fail, regardless of the actual permissions
+of the file.])
+m4_tagend])
+
+m4_param_filemode(m4_ref(memp_fopen))
+
+m4_param(pagesize, [dnl
+The m4_arg(pagesize) parameter is the size, in bytes, of the unit of
+transfer between the application and the cache, although it is not
+necessarily the unit of transfer between the cache and the underlying
+filesystem.])
+
+m4_paramend
+
+m4_err(memp_fopen, einval,
+[the file has already been entered into the pool, and the m4_arg(pagesize)
+value is not the same as when the file was entered into the pool, or the
+length of the file is not zero or a multiple of the m4_arg(pagesize);
+the DB_RDONLY flag was specified for an in-memory pool],
+memory, [maximum number of open files has been reached])
+
+m4_seealso(DbMpool)
+m4_page_footer
diff --git a/db/docs_src/memp/memp_fput.so b/db/docs_src/memp/memp_fput.so
new file mode 100644
index 000000000..b23010b9c
--- /dev/null
+++ b/db/docs_src/memp/memp_fput.so
@@ -0,0 +1,51 @@
+m4_comment([$Id: memp_fput.so,v 10.34 2006/11/30 19:06:50 bostic Exp $])
+
+define(M4PAGELOCAL, memp_fput)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(memp_fput),
+ifelse(M4API, C_API, [dnl
+int
+DB_MPOOLFILE-__GT__put(DB_MPOOLFILE *mpf,
+ void *pgaddr, DB_CACHE_PRIORITY priority, u_int32_t flags);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbMpoolFile::put(void *pgaddr, DB_CACHE_PRIORITY priority, u_int32_t flags);
+]))
+
+m4_p([dnl
+The m4_refT(memp_fput) returns a reference to a page in the cache,
+setting the priority of the page as specified by the m4_arg(priority)
+parameter.])
+
+m4_return(memp_fput, std)
+
+m4_parambegin
+
+m4_unusedflags
+
+m4_param(pgaddr, [dnl
+The m4_arg(pgaddr) parameter is the address of the page to be returned
+to the cache. The m4_arg(pgaddr) parameter must be a value previously
+returned by the m4_refT(memp_fget).])
+
+m4_param(priority, [dnl
+Set the page's m4_arg(priority) as follows:
+m4_tagbegin
+m4_tagns(m4_idef(DB_PRIORITY_UNCHANGED), [The priority is unchanged.])
+m4_tag(m4_idef(DB_PRIORITY_VERY_LOW), [dnl
+The lowest priority: pages are the most likely to be discarded.])
+m4_tagns(m4_idef(DB_PRIORITY_LOW), [The next lowest priority.])
+m4_tagns(m4_idef(DB_PRIORITY_DEFAULT), [The default priority.])
+m4_tagns(m4_idef(DB_PRIORITY_HIGH), [The next highest priority.])
+m4_tagns(m4_idef(DB_PRIORITY_VERY_HIGH), [dnl
+The highest priority: pages are the least likely to be discarded.])
+m4_tagend])
+
+m4_paramend
+
+m4_err(memp_fput, einval)
+
+m4_seealso(DbMpool)
+m4_page_footer
diff --git a/db/docs_src/memp/memp_fsync.so b/db/docs_src/memp/memp_fsync.so
new file mode 100644
index 000000000..82fb68d24
--- /dev/null
+++ b/db/docs_src/memp/memp_fsync.so
@@ -0,0 +1,25 @@
+m4_comment([$Id: memp_fsync.so,v 10.36 2006/11/30 19:06:50 bostic Exp $])
+
+define(M4PAGELOCAL, memp_fsync)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(memp_fsync),
+ifelse(M4API, C_API, [dnl
+int
+DB_MPOOLFILE-__GT__sync(DB_MPOOLFILE *mpf);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbMpoolFile::sync();
+]))
+
+m4_p([dnl
+The m4_refT(memp_fsync) writes all modified pages associated with the
+m4_ref(DbMpoolFile) back to the source file. If any of the modified
+pages are m4_italic(pinned) (that is, currently in use),
+m4_ref(memp_fsync) will ignore them.])
+
+m4_return(memp_fsync, std)
+
+m4_seealso(DbMpool)
+m4_page_footer
diff --git a/db/docs_src/memp/memp_list.so b/db/docs_src/memp/memp_list.so
new file mode 100644
index 000000000..221d58ef5
--- /dev/null
+++ b/db/docs_src/memp/memp_list.so
@@ -0,0 +1,7 @@
+m4_comment([$Id: memp_list.so,v 1.1 2002/08/30 20:01:28 bostic Exp $])
+
+m4_page_title([m4_db: Memory Pools and Related Methods])
+
+include(memp/m4.methods)
+
+m4_page_footer
diff --git a/db/docs_src/memp/memp_maxwrite.so b/db/docs_src/memp/memp_maxwrite.so
new file mode 100644
index 000000000..5aa8d23ac
--- /dev/null
+++ b/db/docs_src/memp/memp_maxwrite.so
@@ -0,0 +1,58 @@
+m4_comment([$Id: memp_maxwrite.so,v 10.5 2006/11/29 21:37:17 bostic Exp $])
+
+define(M4PAGELOCAL, [memp_get_max_write, memp_set_max_write])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(memp_set_max_write),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__set_mp_max_write(DB_ENV *env, int maxwrite, db_timeout_t maxwrite_sleep);
+m4_blank
+int
+DB_ENV-__GT__get_mp_max_write(DB_ENV *env, int *maxwritep, db_timeout_t *maxwrite_sleepp);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::set_mp_max_write(int maxwrite, db_timeout_t maxwrite_sleep);
+m4_blank
+int
+DbEnv::get_mp_max_write(int *maxwritep, db_timeout_t *maxwrite_sleepp);
+]))
+
+m4_p([dnl
+The m4_refT(memp_set_max_write) limits the number of sequential write
+operations scheduled by the library when flushing dirty pages from the
+cache.])
+
+m4_return(memp_set_max_write, std)
+
+m4_parambegin
+m4_param(maxwrite, [dnl
+The maximum number of sequential write operations scheduled by the
+library when flushing dirty pages from the cache, or 0 if there is
+no limitation on the number of sequential write operations.])
+m4_param(maxwrite_sleep, [dnl
+The number of microseconds the thread of control should pause before
+scheduling further write operations. It must be specified as an
+unsigned 32-bit number of microseconds, limiting the maximum pause to
+roughly 71 minutes.])
+m4_paramend
+
+m4_err(memp_set_max_write, einval)
+
+m4_pf_description(m4_ref(memp_get_max_write))
+m4_p([dnl
+The m4_refT(memp_get_max_write) returns the current maximum number of
+sequential write operations and microseconds to pause.])
+
+m4_when_any(memp_get_max_write)
+
+m4_return(memp_get_max_write, std)
+
+m4_parambegin
+m4_param_co(maxwritep, maximum number of sequential write operations)
+m4_param_co(maxwrite_sleepp, microseconds to pause before scheduling further write operations)
+m4_paramend
+
+m4_seealso(DbMpool)
+m4_page_footer
diff --git a/db/docs_src/memp/memp_openfd.so b/db/docs_src/memp/memp_openfd.so
new file mode 100644
index 000000000..a79a20ad1
--- /dev/null
+++ b/db/docs_src/memp/memp_openfd.so
@@ -0,0 +1,41 @@
+m4_comment([$Id: memp_openfd.so,v 10.3 2005/03/08 14:36:15 bostic Exp $])
+
+define(M4PAGELOCAL, [memp_get_max_openfd, memp_set_max_openfd])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(memp_set_max_openfd),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__set_mp_max_openfd(DB_ENV *env, int maxopenfd);
+m4_blank
+int
+DB_ENV-__GT__get_mp_max_openfd(DB_ENV *env, int *maxopenfdp);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::set_mp_max_openfd(int maxopenfd);
+m4_blank
+int
+DbEnv::get_mp_max_openfd(int *maxopenfdp);
+]))
+
+m4_p([dnl
+The m4_refT(memp_set_max_openfd) limits the number of file descriptors
+the library will open concurrently when flushing dirty pages from the
+cache.])
+
+m4_return(memp_set_max_openfd, std)
+
+m4_parambegin
+m4_param(maxopenfd, [dnl
+The maximum number of file descriptors that may be concurrently opened
+by the library when flushing dirty pages from the cache.])
+m4_paramend
+
+m4_err(memp_set_max_openfd, einval)
+
+m4_pf_getter(memp_get_max_openfd,
+maximum number of file descriptors open,, maxopenfdp)
+
+m4_seealso(DbMpool)
+m4_page_footer
diff --git a/db/docs_src/memp/memp_register.so b/db/docs_src/memp/memp_register.so
new file mode 100644
index 000000000..98887de7f
--- /dev/null
+++ b/db/docs_src/memp/memp_register.so
@@ -0,0 +1,91 @@
+m4_comment([$Id: memp_register.so,v 10.38 2004/08/13 03:38:58 bostic Exp $])
+
+define(M4PAGELOCAL, memp_register)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(memp_register),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__memp_register(DB_ENV *env, int ftype,
+ int (*pgin_fcn)(DB_ENV *, db_pgno_t pgno, void *pgaddr, DBT *pgcookie),
+ int (*pgout_fcn)(DB_ENV *, db_pgno_t pgno, void *pgaddr, DBT *pgcookie));
+])
+ifelse(M4API, CXX_API, [dnl
+extern "C" {
+ typedef int (*pgin_fcn_type)(DB_ENV *dbenv,
+ db_pgno_t pgno, void *pgaddr, DBT *pgcookie);
+ typedef int (*pgout_fcn_type)(DB_ENV *dbenv,
+ db_pgno_t pgno, void *pgaddr, DBT *pgcookie);
+};
+int
+DbEnv::memp_register(int ftype,
+ pgin_fcn_type pgin_fcn, pgout_fcn_type pgout_fcn);
+]))
+
+m4_p([dnl
+The m4_refT(memp_register) registers page-in and page-out
+functions for files of type m4_arg(ftype) in the specified pool.])
+
+m4_p([dnl
+If the m4_arg(pgin_fcn) function is non-NULL, it is called each time
+a page is read into the memory pool from a file of type m4_arg(ftype), or
+a page is created for a file of type m4_arg(ftype) (see the
+DB_MPOOL_CREATE flag for the m4_refT(memp_fget)).])
+
+m4_p([dnl
+If the m4_arg(pgout_fcn) function is non-NULL, it is called each time
+a page is written to a file of type m4_arg(ftype).])
+
+m4_p([dnl
+The purpose of the m4_ref(memp_register) function is to support processing
+when pages are entered into, or flushed from, the pool. For example, this
+functionality might be used to do byte-endian conversion as pages are read
+from, or written to, the underlying file.])
+
+m4_p([dnl
+A file type must be specified to make it possible for unrelated threads
+or processes that are sharing a pool, to evict each other's pages from
+the pool. During initialization, applications should call
+m4_ref(memp_register) for each type of file requiring input or output
+processing that will be sharing the underlying pool. (No registry is
+necessary for the standard m4_db access method types because
+m4_ref(dbh_open) registers them separately.)])
+
+m4_p([dnl
+If a thread or process does not call m4_ref(memp_register) for a file
+type, it is impossible for it to evict pages for any file requiring input
+or output processing from the pool. For this reason,
+m4_ref(memp_register) should always be called by each application sharing
+a pool for each type of file included in the pool, regardless of whether
+or not the application itself uses files of that type.])
+
+m4_return(memp_register, std)
+
+m4_parambegin
+m4_param(ftype, [dnl
+The m4_arg(ftype) parameter specifies the type of file for which the
+page-in and page-out functions will be called.
+m4_p([dnl
+The m4_arg(ftype) value for a file must be a non-zero positive number
+less than 128 (0 and negative numbers are reserved for internal use by
+the m4_db library).])])
+
+m4_param([[pgin_fcn, pgout_fcn]], [dnl
+The page-in and page-out functions.
+m4_p([dnl
+The m4_arg(pgin_fcn) and m4_arg(pgout_fcn) functions are called with a
+reference to the current database environment, the page number being
+read or written, a pointer to the page being read or written, and any
+parameter m4_arg(pgcookie) that was specified to the
+m4_refT(memp_set_pgcookie).])
+m4_p([dnl
+The m4_arg(pgin_fcn) and m4_arg(pgout_fcn) functions should return 0 on
+success, and a non-zero value on failure, in which case the shared m4_db
+library function calling it will also fail, returning that non-zero
+value. The non-zero value should be selected from values outside of the
+m4_db library namespace.])])
+
+m4_paramend
+
+m4_seealso(DbMpool)
+m4_page_footer
diff --git a/db/docs_src/memp/memp_set_clear_len.so b/db/docs_src/memp/memp_set_clear_len.so
new file mode 100644
index 000000000..ac9693cd8
--- /dev/null
+++ b/db/docs_src/memp/memp_set_clear_len.so
@@ -0,0 +1,45 @@
+m4_comment([$Id: memp_set_clear_len.so,v 10.18 2005/11/30 19:46:21 bostic Exp $])
+
+define(M4PAGELOCAL, [memp_set_clear_len, memp_get_clear_len])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(memp_set_clear_len),
+ifelse(M4API, C_API, [dnl
+int
+DB_MPOOLFILE-__GT__set_clear_len(DB_MPOOLFILE *mpf, u_int32_t len);
+m4_blank
+int
+DB_MPOOLFILE-__GT__get_clear_len(DB_MPOOLFILE *mpf, u_int32_t *lenp);
+])dnl
+ifelse(M4API, CXX_API, [dnl
+int
+DbMpoolFile::set(u_int32_t len);
+m4_blank
+int
+DbMpoolFile::get_clear_len(u_int32_t *lenp);
+]))
+
+m4_p([dnl
+The m4_refT(memp_set_clear_len) 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 m4_ref(DB_MPOOL_CREATE) or m4_ref(DB_MPOOL_NEW) flags being
+specified to m4_ref(memp_fget). If no clear length is specified, the
+entire page is cleared when it is created.])
+
+m4_scope_mpf(memp_set_clear_len)
+
+m4_when_mpfopen(memp_set_clear_len, error)
+
+m4_return(memp_set_clear_len, std)
+
+m4_parambegin
+m4_param(len, [dnl
+The m4_arg(len) parameter is the number of initial bytes in a page that
+should be set to nul when the page is created. A value of 0 results in
+the entire page being set to nul bytes.])
+m4_paramend
+
+m4_pf_getter(memp_get_clear_len, bytes to be cleared,, lenp)
+
+m4_seealso(DbMpool)
+m4_page_footer
diff --git a/db/docs_src/memp/memp_set_fileid.so b/db/docs_src/memp/memp_set_fileid.so
new file mode 100644
index 000000000..8a4cda5c0
--- /dev/null
+++ b/db/docs_src/memp/memp_set_fileid.so
@@ -0,0 +1,76 @@
+m4_comment([$Id: memp_set_fileid.so,v 10.14 2005/04/14 13:08:06 sue Exp $])
+
+define(M4PAGELOCAL, [memp_set_fileid, memp_get_fileid])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(memp_set_fileid),
+ifelse(M4API, C_API, [dnl
+int
+DB_MPOOLFILE-__GT__set_fileid(DB_MPOOLFILE *mpf, u_int8_t *fileid);
+m4_blank
+int
+DB_MPOOLFILE-__GT__get_fileid(DB_MPOOLFILE *mpf, u_int8_t *fileid);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbMpoolFile::set(u_int8_t *fileid);
+m4_blank
+int DbMpoolFile::get_fileid(u_int8_t *fileid);
+]))
+
+m4_p([dnl
+The m4_refT(memp_set_fileid) specifies a unique identifier for the file.
+(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.)])
+
+m4_p([dnl
+On most UNIX/POSIX systems, the m4_arg(fileid) field will not need to
+be set, and the memory pool functions will use the file's device and
+inode numbers for this purpose. On Windows systems, the memory pool
+functions use the values returned by GetFileInformationByHandle() by
+default -- these values are known to be constant between processes and
+over reboot in the case of NTFS (in which they are the NTFS MFT
+indices).])
+
+m4_p([dnl
+On other filesystems (for example, FAT or NFS), these default values
+are not necessarily unique between processes or across system reboots.
+m4_bold([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 m4_refT(memp_set_fileid), and each process opening
+the file must provide the same unique identifier.])])
+
+m4_p([dnl
+This call should not be necessary for most applications. Specifically,
+it is not necessary if the memory pool is not shared between processes
+and is reinstantiated after each system reboot, if the application is
+using the m4_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.])
+
+m4_scope_mpf(memp_set_fileid)
+
+m4_when_mpfopen(memp_set_fileid)
+
+m4_return(memp_set_fileid, std)
+
+m4_parambegin
+m4_param(fileid, [dnl
+The m4_arg(fileid) parameter is the unique identifier for the file.
+Unique file identifiers must be a DB_FILE_ID_LEN length array of bytes.])
+m4_paramend
+
+m4_pf_description(m4_ref(memp_get_fileid))
+m4_p([dnl
+The m4_refT(memp_get_fileid) copies the file's identifier into the
+memory location referenced by m4_arg(fileid).])
+
+m4_return(memp_get_fileid, std)
+
+m4_when_any(memp_get_fileid)
+
+m4_seealso(DbMpool)
+m4_page_footer
diff --git a/db/docs_src/memp/memp_set_flags.so b/db/docs_src/memp/memp_set_flags.so
new file mode 100644
index 000000000..a32b277ce
--- /dev/null
+++ b/db/docs_src/memp/memp_set_flags.so
@@ -0,0 +1,67 @@
+m4_comment([$Id: memp_set_flags.so,v 1.19 2007/06/07 15:30:46 bostic Exp $])
+
+define(M4PAGELOCAL,
+ [memp_set_flags, memp_get_flags, DB_MPOOL_NOFILE, DB_MPOOL_UNLINK])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(memp_set_flags),
+ifelse(M4API, C_API, [dnl
+int
+DB_MPOOLFILE-__GT__set_flags(DB_MPOOLFILE *mpf, u_int32_t flags, int onoff)
+m4_blank
+int
+DB_MPOOLFILE-__GT__get_flags(DB_MPOOLFILE *mpf, u_int32_t *flagsp);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbMpoolFile::set_flags(u_int32_t flags, bool onoff);
+m4_blank
+int
+DbMpoolFile::get_flags(u_int32_t *flagsp);
+]))
+
+define(m4_flags_any, [m4_p([dnl
+The m4_ref($1) flag may be used to configure m4_db at any time during
+the life of the application.])])
+
+m4_p([dnl
+Configure a file in the cache.])
+
+m4_p([dnl
+To set the flags for a particular database, call the
+m4_refT(memp_set_flags) using the m4_ref(DbMpoolFile) handle stored in
+the m4_arg(mpf) field of the m4_ref(Db) handle.])
+
+m4_return(memp_set_flags, std)
+
+m4_parambegin
+m4_param(flags, [dnl
+m4_sf_or_must
+
+m4_tagbegin
+m4_tag(m4_idef(DB_MPOOL_NOFILE), [dnl
+If set, no backing temporary file will be opened for the specified
+in-memory database, even if it expands to fill the entire cache.
+Attempts to create new database pages after the cache has been filled
+will fail.
+
+m4_scope_mpf_flags(DB_MPOOL_NOFILE)
+
+m4_flags_any(DB_MPOOL_NOFILE)])
+
+m4_tag(m4_idef(DB_MPOOL_UNLINK), [dnl
+If set, remove the file when the last reference to it is closed.
+m4_scope_mpf_flags(DB_MPOOL_NOFILE)
+m4_flags_any(DB_MPOOL_UNLINK)])
+m4_tagend])
+
+m4_param(onoff, [dnl
+If m4_arg(onoff) is
+ifelse(M4API, C_API, zero, false),
+the specified flags are cleared; otherwise they are set.])
+m4_paramend
+
+m4_pf_getter(memp_get_flags, flags,, flagsp)
+
+m4_seealso(DbMpool)
+m4_page_footer
diff --git a/db/docs_src/memp/memp_set_ftype.so b/db/docs_src/memp/memp_set_ftype.so
new file mode 100644
index 000000000..670688c4e
--- /dev/null
+++ b/db/docs_src/memp/memp_set_ftype.so
@@ -0,0 +1,44 @@
+m4_comment([$Id: memp_set_ftype.so,v 10.17 2005/11/30 19:46:21 bostic Exp $])
+
+define(M4PAGELOCAL, [memp_set_ftype, memp_get_ftype])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(memp_set_ftype),
+ifelse(M4API, C_API, [dnl
+int
+DB_MPOOLFILE-__GT__set_ftype(DB_MPOOLFILE *mpf, int ftype);
+m4_blank
+int
+DB_MPOOLFILE-__GT__get_ftype(DB_MPOOLFILE *mpf, int *ftypep);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbMpoolFile::set(int ftype);
+m4_blank
+int
+DbMpoolFile::get_ftype(int *ftypep);
+]))
+
+m4_p([dnl
+The m4_refT(memp_set_ftype) specifies a file type for the purposes of
+input or output processing of the file's pages as they are read from or
+written to, the backing filesystem store.])
+
+m4_scope_mpf(memp_set_ftype)
+
+m4_when_mpfopen(memp_set_ftype, overwrite)
+
+m4_return(memp_set_ftype, std)
+
+m4_parambegin
+m4_param(ftype, [dnl
+The m4_arg(ftype) parameter sets the file's type for the purposes of input
+and output processing. The m4_arg(ftype) must be the same as a
+m4_arg(ftype) parameter previously specified to the m4_refT(memp_register).
+(See the m4_ref(memp_register) documentation for more information.)])
+m4_paramend
+
+m4_pf_getter(memp_get_ftype, file type,, ftypep)
+
+m4_seealso(DbMpool)
+m4_page_footer
diff --git a/db/docs_src/memp/memp_set_lsn_offset.so b/db/docs_src/memp/memp_set_lsn_offset.so
new file mode 100644
index 000000000..d4525b021
--- /dev/null
+++ b/db/docs_src/memp/memp_set_lsn_offset.so
@@ -0,0 +1,44 @@
+m4_comment([$Id: memp_set_lsn_offset.so,v 10.17 2005/04/14 17:57:54 bostic Exp $])
+
+define(M4PAGELOCAL, [memp_set_lsn_offset, memp_get_lsn_offset])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(memp_set_lsn_offset),
+ifelse(M4API, C_API, [dnl
+int
+DB_MPOOLFILE-__GT__set_lsn_offset(DB_MPOOLFILE *mpf, int32_t lsn_offset);
+m4_blank
+int
+DB_MPOOLFILE-__GT__get_lsn_offset(DB_MPOOLFILE *mpf, int32_t *lsn_offsetp);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbMpoolFile::set(int32_t lsn_offset);
+m4_blank
+int
+DbMpoolFile::get_lsn_offset(int32_t *lsn_offsetp);
+]))
+
+m4_p([dnl
+The m4_refT(memp_set_lsn_offset) specifies the zero-based byte offset
+of a log sequence number (m4_ref(DbLsn)) on the file's pages, for the
+purposes of page-flushing as part of transaction checkpoint. (See the
+m4_ref(memp_sync) documentation for more information.)])
+
+m4_scope_mpf(memp_set_lsn_offset)
+
+m4_when_mpfopen(memp_set_lsn_offset, error)
+
+m4_return(memp_set_lsn_offset, std)
+
+m4_parambegin
+m4_param(lsn_offset, [dnl
+The m4_arg(lsn_offset) parameter is the zero-based byte offset of the
+log sequence number on the file's pages.])
+m4_paramend
+
+m4_pf_getter(memp_get_lsn_offset,
+ log sequence number byte offset,, lsn_offsetp)
+
+m4_seealso(DbMpool)
+m4_page_footer
diff --git a/db/docs_src/memp/memp_set_maxsize.so b/db/docs_src/memp/memp_set_maxsize.so
new file mode 100644
index 000000000..1e8de3e1b
--- /dev/null
+++ b/db/docs_src/memp/memp_set_maxsize.so
@@ -0,0 +1,62 @@
+m4_comment([$Id: memp_set_maxsize.so,v 1.15 2005/09/17 16:30:18 bostic Exp $])
+
+define(M4PAGELOCAL, [memp_set_maxsize, memp_get_maxsize])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(memp_set_maxsize),
+ifelse(M4API, C_API, [dnl
+int
+DB_MPOOLFILE-__GT__set_maxsize(DB_MPOOLFILE *mpf,
+ u_int32_t gbytes, u_int32_t bytes);
+m4_blank
+int
+DB_MPOOLFILE-__GT__get_maxsize(DB_MPOOLFILE *mpf,
+ u_int32_t *gbytesp, u_int32_t *bytesp);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbMpoolFile::set_maxsize(u_int32_t gbytes, u_int32_t bytes);
+m4_blank
+int
+DbMpoolFile::get_maxsize(u_int32_t *gbytesp, u_int32_t *bytesp);
+]))
+
+m4_p([dnl
+Set the maximum size for the file to be m4_arg(gbytes) gigabytes plus
+m4_arg(bytes). Attempts to allocate new pages in the file after the
+limit has been reached will fail.])
+
+m4_p([dnl
+To set the maximum file size for a particular database, call the
+m4_refT(memp_set_maxsize) using the m4_ref(DbMpoolFile) handle stored
+in the m4_arg(mpf) field of the m4_ref(Db) handle. Attempts to insert
+new items into the database after the limit has been reached may fail.])
+
+m4_scope_mpf(memp_set_maxsize)
+
+m4_when_any(memp_set_maxsize)
+
+m4_return(memp_set_maxsize, std)
+
+m4_parambegin
+m4_param(bytes, [dnl
+The maximum size of the file is set to m4_arg(gbytes) gigabytes plus
+m4_arg(bytes).])
+m4_param(gbytes, [dnl
+The maximum size of the file is set to m4_arg(gbytes) gigabytes plus
+m4_arg(bytes).])
+m4_paramend
+
+m4_pf_description(m4_ref(memp_get_maxsize))
+
+m4_return(memp_get_maxsize, std)
+
+m4_when_any(memp_get_maxsize)
+
+m4_parambegin
+m4_param_co(bytesp, additional bytes of memory in the maximum file size)
+m4_param_co(gbytesp, gigabytes of memory in the maximum file size)
+m4_paramend
+
+m4_seealso(DbMpool)
+m4_page_footer
diff --git a/db/docs_src/memp/memp_set_pgcookie.so b/db/docs_src/memp/memp_set_pgcookie.so
new file mode 100644
index 000000000..65bb70c98
--- /dev/null
+++ b/db/docs_src/memp/memp_set_pgcookie.so
@@ -0,0 +1,45 @@
+m4_comment([$Id: memp_set_pgcookie.so,v 10.17 2005/11/30 19:46:21 bostic Exp $])
+
+define(M4PAGELOCAL, [memp_set_pgcookie, memp_get_pgcookie])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(memp_set_pgcookie),
+ifelse(M4API, C_API, [dnl
+int
+DB_MPOOLFILE-__GT__set_pgcookie(DB_MPOOLFILE *mpf, DBT *pgcookie);
+m4_blank
+int
+DB_MPOOLFILE-__GT__get_pgcookie(DB_MPOOLFILE *mpf, DBT *dbt);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbMpoolFile::set(DBT *pgcookie);
+m4_blank
+int
+DbMpoolFile::get_pgcookie(DBT *dbt);
+]))
+
+m4_p([dnl
+The m4_refT(memp_set_pgcookie) 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 m4_ref(memp_register) documentation for more
+information.)])
+
+m4_scope_mpf(memp_set_pgcookie)
+
+m4_when_mpfopen(memp_set_pgcookie, overwrite)
+
+m4_return(memp_set_pgcookie, std)
+
+m4_parambegin
+m4_param(pgcookie, [dnl
+The m4_arg(pgcookie) parameter is a byte string provided to the
+functions registered to do input or output processing of the file's
+pages.])
+m4_paramend
+
+m4_pf_getter(memp_get_pgcookie, byte string,, dbt, reference)
+
+m4_seealso(DbMpool)
+m4_page_footer
diff --git a/db/docs_src/memp/memp_set_priority.so b/db/docs_src/memp/memp_set_priority.so
new file mode 100644
index 000000000..82fb9b829
--- /dev/null
+++ b/db/docs_src/memp/memp_set_priority.so
@@ -0,0 +1,24 @@
+m4_comment([$Id: memp_set_priority.so,v 10.25 2007/05/22 18:06:06 bostic Exp $])
+
+define(M4INTERFACE, memp_set_priority)
+define(M4PAGELOCAL, [memp_set_priority, memp_get_priority,
+ DB_PRIORITY_VERY_LOW, DB_PRIORITY_LOW, DB_PRIORITY_DEFAULT,
+ DB_PRIORITY_HIGH, DB_PRIORITY_VERY_HIGH])
+
+m4_pf_header(m4_ref(memp_set_priority),
+ifelse(M4API, C_API, [dnl
+int
+DB_MPOOLFILE-__GT__set_priority(DB_MPOOLFILE *mpf, DB_CACHE_PRIORITY priority);
+m4_blank
+int
+DB_MPOOLFILE-__GT__get_priority(DB_MPOOLFILE *mpf, DB_CACHE_PRIORITY *priorityp);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbMpoolFile::set_priority(DB_CACHE_PRIORITY priority);
+m4_blank
+int
+DbMpoolFile::get_priority(DB_CACHE_PRIORITY *priorityp);
+]))
+
+include(dbc/dbc_set_priority.so)
diff --git a/db/docs_src/memp/memp_stat.so b/db/docs_src/memp/memp_stat.so
new file mode 100644
index 000000000..abe7496d8
--- /dev/null
+++ b/db/docs_src/memp/memp_stat.so
@@ -0,0 +1,219 @@
+m4_comment([$Id: memp_stat.so,v 10.71 2007/07/06 00:22:53 mjc Exp $])
+
+define(M4PAGELOCAL, [memp_stat, memp_fstat, memp_stat_print])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(memp_stat),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__memp_stat(DB_ENV *env, DB_MPOOL_STAT **gsp,
+ DB_MPOOL_FSTAT *(*fsp)__LB____RB__, u_int32_t flags);
+m4_blank
+int
+DB_ENV-__GT__memp_stat_print(DB_ENV *env, u_int32_t flags);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::memp_stat(DB_MPOOL_STAT **gsp,
+ DB_MPOOL_FSTAT *(*fsp)__LB____RB__, u_int32_t flags);
+m4_blank
+int
+DbEnv::memp_stat_print(u_int32_t flags);
+]))
+
+m4_p([dnl
+The m4_refT(memp_stat) returns the memory pool (that is, the buffer
+cache) subsystem statistics.])
+
+m4_p([dnl
+The m4_refT(memp_stat) creates statistical structures of type DB_MPOOL_STAT
+and DB_MPOOL_FSTAT, and copy pointers to them into user-specified memory
+locations. The cache statistics are stored in the DB_MPOOL_STAT structure
+and the per-file cache statistics are stored the DB_MPOOL_FSTAT structure.])
+
+m4_alloc([Statistical structures])
+
+m4_p([dnl
+If m4_arg(gsp) is non-NULL, the global statistics for the cache
+m4_arg(mp) are copied into the memory location to which it refers.
+The following DB_MPOOL_STAT fields will be filled in:])
+
+m4_tagbegin
+m4_field(size_t, st_gbytes,
+[Gigabytes of cache (total cache size is st_gbytes + st_bytes).])
+
+m4_field(size_t, st_bytes,
+[Bytes of cache (total cache size is st_gbytes + st_bytes).])
+
+m4_field(u_int32_t, st_ncache,
+[Number of caches.])
+
+m4_field(u_int32_t, st_max_ncache,
+[Maximum number of caches, as configured with the
+m4_refT(dbenv_set_cache_max).])
+
+m4_field(roff_t, st_regsize,
+[Individual cache size, in bytes.])
+
+m4_field(size_t, st_mmapsize,
+[Maximum memory-mapped file size.])
+
+m4_field(int, st_maxopenfd,
+[Maximum open file descriptors.])
+
+m4_field(int, st_maxwrite,
+[Maximum sequential buffer writes.])
+
+m4_field(db_timeout_t, st_maxwrite_sleep,
+[Microseconds to pause after writing maximum sequential buffers.])
+
+m4_field(u_int32_t, st_map,
+[Requested pages mapped into the process' address space (there is no
+available information about whether or not this request caused disk I/O,
+although examining the application page fault rate may be helpful).])
+
+m4_field(u_int32_t, st_cache_hit,
+[Requested pages found in the cache.])
+
+m4_field(u_int32_t, st_cache_miss,
+[Requested pages not found in the cache.])
+
+m4_field(u_int32_t, st_page_create,
+[Pages created in the cache.])
+
+m4_field(u_int32_t, st_page_in,
+[Pages read into the cache.])
+
+m4_field(u_int32_t, st_page_out,
+[Pages written from the cache to the backing file.])
+
+m4_field(u_int32_t, st_ro_evict,
+[Clean pages forced from the cache.])
+
+m4_field(u_int32_t, st_rw_evict,
+[Dirty pages forced from the cache.])
+
+m4_field(u_int32_t, st_page_trickle,
+[Dirty pages written using the m4_refT(memp_trickle).])
+
+m4_field(u_int32_t, st_pages,
+[Pages in the cache.])
+
+m4_field(u_int32_t, st_page_clean,
+[Clean pages currently in the cache.])
+
+m4_field(u_int32_t, st_page_dirty,
+[Dirty pages currently in the cache.])
+
+m4_field(u_int32_t, st_hash_buckets,
+[Number of hash buckets in buffer hash table.])
+
+m4_field(u_int32_t, st_hash_searches,
+[Total number of buffer hash table lookups.])
+
+m4_field(u_int32_t, st_hash_longest,
+[Longest chain ever encountered in buffer hash table lookups.])
+
+m4_field(u_int32_t, st_hash_examined,
+[Total number of hash elements traversed during hash table lookups.])
+
+m4_field(u_int32_t, st_hash_nowait,
+[Number of times that a thread of control was able to obtain a hash
+bucket lock without waiting.])
+
+m4_field(u_int32_t, st_hash_wait,
+[Number of times that a thread of control was forced to wait before
+obtaining a hash bucket lock.])
+
+m4_field(u_int32_t, st_hash_max_nowait,
+[The number of times a thread of control was able to obtain the hash
+bucket lock without waiting on the bucket which had the maximum number
+of times that a thread of control needed to wait.])
+
+m4_field(u_int32_t, st_hash_max_wait,
+[Maximum number of times any hash bucket lock was waited for by a
+thread of control.])
+
+m4_field(u_int32_t, st_region_wait,
+[Number of times that a thread of control was forced to wait before
+obtaining a cache region mutex.])
+
+m4_field(u_int32_t, st_region_nowait,
+[Number of times that a thread of control was able to obtain a cache
+region mutex without waiting.])
+
+m4_field(u_int32_t, st_mvcc_frozen,
+[Number of buffers frozen.])
+
+m4_field(u_int32_t, st_mvcc_thawed,
+[Number of buffers thawed.])
+
+m4_field(u_int32_t, st_mvcc_freed,
+[Number of frozen buffers freed.])
+
+m4_field(u_int32_t, st_alloc,
+[Number of page allocations.])
+
+m4_field(u_int32_t, st_alloc_buckets,
+[Number of hash buckets checked during allocation.])
+
+m4_field(u_int32_t, st_alloc_max_buckets,
+[Maximum number of hash buckets checked during an allocation.])
+
+m4_field(u_int32_t, st_alloc_pages,
+[Number of pages checked during allocation.])
+
+m4_field(u_int32_t, st_alloc_max_pages,
+[Maximum number of pages checked during an allocation.])
+
+m4_field(u_int32_t, st_io_wait,
+[Number of operations blocked waiting for I/O to complete.])
+
+m4_tagend
+
+m4_p([dnl
+If m4_arg(fsp) is non-NULL, a pointer to a NULL-terminated
+variable length array of statistics for individual files, in the cache
+m4_arg(mp), is copied into the memory location to which it refers. If
+no individual files currently exist in the cache, m4_arg(fsp) will be
+set to NULL.])
+m4_p([dnl
+The per-file statistics are stored in structures of type DB_MPOOL_FSTAT.
+The following DB_MPOOL_FSTAT fields will be filled in for each file in
+the cache; that is, each element of the array:])
+
+m4_tagbegin
+m4_field(char *, file_name,
+[The name of the file.])
+m4_field(size_t, st_pagesize,
+[Page size in bytes.])
+m4_field(u_int32_t, st_cache_hit,
+[Requested pages found in the cache.])
+m4_field(u_int32_t, st_cache_miss,
+[Requested pages not found in the cache.])
+m4_field(u_int32_t, st_map,
+[Requested pages mapped into the process' address space.])
+m4_field(u_int32_t, st_page_create,
+[Pages created in the cache.])
+m4_field(u_int32_t, st_page_in,
+[Pages read into the cache.])
+m4_field(u_int32_t, st_page_out,
+[Pages written from the cache to the backing file.])
+m4_tagend
+
+m4_when_after_envopen(memp_stat)
+
+m4_return(memp_stat, std)
+
+m4_parambegin
+m4_param(flags, m4_stat_flags)
+m4_param_co(fsp, allocated per-file statistics structures, REF)
+m4_param_co(gsp, allocated global statistics structure, REF)
+m4_paramend
+
+m4_err(memp_stat, einval)
+
+m4_stat_print(memp_stat_print, memory pool subsystem, memp_stat)
+
+m4_seealso(DbMpool)
+m4_page_footer
diff --git a/db/docs_src/memp/memp_sync.so b/db/docs_src/memp/memp_sync.so
new file mode 100644
index 000000000..951b9c484
--- /dev/null
+++ b/db/docs_src/memp/memp_sync.so
@@ -0,0 +1,40 @@
+m4_comment([$Id: memp_sync.so,v 10.43 2007/02/27 19:23:07 bostic Exp $])
+
+define(M4PAGELOCAL, memp_sync)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(memp_sync),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__memp_sync(DB_ENV *env, DB_LSN *lsn);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::memp_sync(DbLsn *lsn);
+]))
+
+m4_p([dnl
+The m4_refT(memp_sync) flushes modified pages in the cache to their
+backing files.])
+
+m4_p([dnl
+Pages in the pool that cannot be immediately written back to disk (for
+example, pages that are currently in use by another thread of control)
+are waited for and written to disk as soon as it is possible to do
+so.])
+
+m4_return(memp_sync, std)
+
+m4_parambegin
+m4_param(lsn, [dnl
+The purpose of the m4_arg(lsn) parameter is to enable a transaction
+manager to ensure, as part of a checkpoint, that all pages modified by
+a certain time have been written to disk.
+m4_p([dnl
+All modified pages with a a log sequence number (m4_ref(DbLsn)) less
+than the m4_arg(lsn) parameter are written to disk. If m4_arg(lsn) is
+NULL, all modified pages in the pool are written to disk.])])
+m4_paramend
+
+m4_seealso(DbMpool)
+m4_page_footer
diff --git a/db/docs_src/memp/memp_trickle.so b/db/docs_src/memp/memp_trickle.so
new file mode 100644
index 000000000..3adbab4f4
--- /dev/null
+++ b/db/docs_src/memp/memp_trickle.so
@@ -0,0 +1,39 @@
+m4_comment([$Id: memp_trickle.so,v 10.36 2004/08/13 03:38:58 bostic Exp $])
+
+define(M4PAGELOCAL, memp_trickle)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(memp_trickle),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__memp_trickle(DB_ENV *env, int percent, int *nwrotep);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::memp_trickle(int percent, int *nwrotep);
+]))
+
+m4_p([dnl
+The m4_refT(memp_trickle) ensures that a specified percent of the pages
+in the shared memory pool are clean, by writing dirty pages to their
+backing files.])
+
+m4_p([dnl
+The purpose of the m4_ref(memp_trickle) function is to enable a memory
+pool manager to ensure that a page is always available for reading in new
+information without having to wait for a write.])
+
+m4_return(memp_trickle, std)
+
+m4_parambegin
+m4_param_co(nwrotep, number of pages written to reach the specified
+percentage)
+m4_param(percent, [dnl
+The m4_arg(percent) parameter is the percent of the pages in the cache
+that should be clean.])
+m4_paramend
+
+m4_err(memp_trickle, einval)
+
+m4_seealso(DbMpool)
+m4_page_footer
diff --git a/db/docs_src/memp/mempfile_class.so b/db/docs_src/memp/mempfile_class.so
new file mode 100644
index 000000000..401a93e63
--- /dev/null
+++ b/db/docs_src/memp/mempfile_class.so
@@ -0,0 +1,58 @@
+m4_comment([$Id: mempfile_class.so,v 10.24 2004/08/13 03:38:58 bostic Exp $])
+
+define(M4PAGELOCAL, DbMpoolFile)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(DbMpoolFile),
+ifelse(M4API, C_API, [dnl
+typedef struct __db_mpoolfile DB_MPOOLFILE;
+])
+ifelse(M4API, CXX_API, [dnl
+class DbMpoolFile {
+public:
+ DB_MPOOLFILE *DbMpoolFile::get_DB_MPOOLFILE();
+ const DB_MPOOLFILE *DbMpoolFile::get_const_DB_MPOOLFILE() const;
+ ...
+};
+]))
+
+m4_p([dnl
+The memory pool interfaces for the m4_db database environment are
+methods of the m4_ref(DbEnv) handle. The m4_ref(DbEnv) memory pool
+methods and the m4_ref(DbMpoolFile) class provide general-purpose,
+page-oriented buffer management of files. Although designed to work
+with the other m4_ref(Db) classes, they are also useful for more general
+purposes. The memory pools are referred to in this document as simply
+m4_italic(pools).])
+
+m4_p([dnl
+Pools may be shared between processes. Pools are usually filled by
+pages from one or more files. Pages in the pool are replaced in LRU
+(least-recently-used) order, with each new page replacing the page that
+has been unused the longest. Pages retrieved from the pool using
+m4_ref(memp_fget) are m4_italic(pinned) in the pool until they are
+returned to the control of the buffer pool using the m4_ref(memp_fput)
+method.])
+
+m4_p([dnl
+The m4_ref(DbMpoolFile) object is the handle for a file in the memory
+pool. The handle is not free-threaded. Once the m4_refT(memp_fclose)
+is called, the handle may not be accessed again, regardless of that
+method's return.])
+
+ifelse(M4API, CXX_API, [dnl
+m4_p([dnl
+Each m4_ref(DbMpoolFile) object has an associated m4_refc(DbMpoolFile)
+structure, which is used by the underlying implementation of m4_db and
+its C-language API. The DbMpoolFile::get_DB_MPOOLFILE method returns a
+pointer to this struct. Given a const m4_ref(DbMpoolFile) object,
+DbMpoolFile::get_const_DB_MPOOLFILE returns a const pointer to the same
+struct.])
+
+m4_p([dnl
+These methods may be useful for m4_db applications including both C
+and C++ language software. It should not be necessary to use these
+calls in a purely C++ application.])])
+
+m4_seealso(DbMpool)
+m4_page_footer
diff --git a/db/docs_src/mutex/m4.methods b/db/docs_src/mutex/m4.methods
new file mode 100644
index 000000000..4e74132ce
--- /dev/null
+++ b/db/docs_src/mutex/m4.methods
@@ -0,0 +1,18 @@
+m4_comment([$Id: m4.methods,v 10.1 2005/07/20 16:33:59 bostic Exp $])
+
+m4_table_begin(, _center)
+
+m4_table_header(Mutexes and Related Methods, Description)
+m4_comment([DbEnv::mutex_alloc])m4_table_element(m4_ref(mutex_alloc), Allocate a mutex)
+m4_comment([DbEnv::mutex_free])m4_table_element(m4_ref(mutex_free), Free a mutex)
+m4_comment([DbEnv::mutex_lock])m4_table_element(m4_ref(mutex_lock), Lock a mutex)
+m4_comment([DbEnv::mutex_stat])m4_table_element(m4_ref(mutex_stat), Mutex statistics)
+m4_comment([DbEnv::mutex_unlock])m4_table_element(m4_ref(mutex_unlock), Unlock a mutex)
+
+m4_table_header(Mutex Configuration, _empty)
+m4_comment([DbEnv::mutex_set_align])m4_table_element(m4_ref(mutex_set_align), Configure mutex alignment)
+m4_comment([DbEnv::mutex_set_increment])m4_table_element(m4_ref(mutex_set_increment), Configure number of additional mutexes)
+m4_comment([DbEnv::mutex_set_max])m4_table_element(m4_ref(mutex_set_max), Configure total number of mutexes)
+m4_comment([DbEnv::mutex_set_tas_spins])m4_table_element(m4_ref(mutex_set_tas_spins), Configure test-and-set mutex spin count)
+
+m4_table_end
diff --git a/db/docs_src/mutex/mutex_alloc.so b/db/docs_src/mutex/mutex_alloc.so
new file mode 100644
index 000000000..87af441d8
--- /dev/null
+++ b/db/docs_src/mutex/mutex_alloc.so
@@ -0,0 +1,48 @@
+m4_comment([$Id: mutex_alloc.so,v 10.2 2006/01/27 16:13:49 bostic Exp $])
+
+define(M4PAGELOCAL, [mutex_alloc, DB_MUTEX_SELF_BLOCK])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(mutex_alloc),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__mutex_alloc(DB_ENV *dbenv, u_int32_t flags, db_mutex_t *mutexp);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::mutex_alloc(u_int32_t flags, db_mutex_t *mutexp);
+]))
+
+m4_p([dnl
+The m4_refT(mutex_alloc) allocates a mutex and returns a reference to
+it into the memory specified by m4_arg(mutexp).])
+
+m4_when_after_envopen(mutex_alloc)
+
+m4_return(mutex_alloc, std)
+
+m4_parambegin
+m4_param(flags, [dnl
+m4_sf_zmust(0)
+m4_tagbegin
+m4_tag(m4_idef(DB_MUTEX_PROCESS_ONLY), [dnl
+The mutex is associated with a single process. The m4_refT(dbenv_failchk)
+will release mutexes held by any process which has exited.])
+m4_tag(m4_idef(DB_MUTEX_SELF_BLOCK), [dnl
+The mutex must be self-blocking. That is, if a thread of control locks
+the mutex and then attempts to lock the mutex again, the thread of
+control will block until another thread of control releases the original
+lock on the mutex, allowing the original thread of control to lock the
+mutex the second time. Attempting to re-acquire a mutex for which the
+m4_ref(DB_MUTEX_SELF_BLOCK) flag was not specified will result in
+undefined behavior.])
+m4_tagend])
+
+m4_param_co(mutexp, mutex reference)
+
+m4_paramend
+
+m4_err(mutex_alloc, einval)
+
+m4_seealso(DbEnv)
+m4_page_footer
diff --git a/db/docs_src/mutex/mutex_free.so b/db/docs_src/mutex/mutex_free.so
new file mode 100644
index 000000000..b4535734e
--- /dev/null
+++ b/db/docs_src/mutex/mutex_free.so
@@ -0,0 +1,32 @@
+m4_comment([$Id: mutex_free.so,v 10.1 2005/07/20 16:33:59 bostic Exp $])
+
+define(M4PAGELOCAL, [mutex_free])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(mutex_free),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__mutex_free(DB_ENV *dbenv, db_mutex_t mutex);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::mutex_free(db_mutex_t mutex);
+]))
+
+m4_p([dnl
+The m4_refT(mutex_free) discards a mutex allocated by m4_ref(mutex_alloc).])
+
+m4_when_after_envopen(mutex_free)
+
+m4_return(mutex_free, std)
+
+m4_parambegin
+m4_param(mutex, [dnl
+The m4_arg(mutex) parameter is a mutex previously allocated by
+m4_ref(mutex_alloc).])
+m4_paramend
+
+m4_err(mutex_free, einval)
+
+m4_seealso(DbEnv)
+m4_page_footer
diff --git a/db/docs_src/mutex/mutex_list.so b/db/docs_src/mutex/mutex_list.so
new file mode 100644
index 000000000..3a0d9ff8f
--- /dev/null
+++ b/db/docs_src/mutex/mutex_list.so
@@ -0,0 +1,7 @@
+m4_comment([$Id: mutex_list.so,v 10.1 2005/07/20 16:33:59 bostic Exp $])
+
+m4_page_title([m4_db: Mutexes and Related Methods])
+
+include(mutex/m4.methods)
+
+m4_page_footer
diff --git a/db/docs_src/mutex/mutex_lock.so b/db/docs_src/mutex/mutex_lock.so
new file mode 100644
index 000000000..0f8cbe09b
--- /dev/null
+++ b/db/docs_src/mutex/mutex_lock.so
@@ -0,0 +1,34 @@
+m4_comment([$Id: mutex_lock.so,v 10.1 2005/07/20 16:33:59 bostic Exp $])
+
+define(M4PAGELOCAL, [mutex_lock])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(mutex_lock),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__mutex_lock(DB_ENV *dbenv, db_mutex_t mutex);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::mutex_lock(db_mutex_t mutex);
+]))
+
+m4_p([dnl
+The m4_refT(mutex_lock) locks the mutex allocated by
+m4_ref(mutex_alloc). The thread of control calling m4_ref(mutex_lock)
+will block until the lock is available.])
+
+m4_when_after_envopen(mutex_lock)
+
+m4_return(mutex_lock, std)
+
+m4_parambegin
+m4_param(mutex, [dnl
+The m4_arg(mutex) parameter is a mutex previously allocated by
+m4_ref(mutex_alloc).])
+m4_paramend
+
+m4_err(mutex_lock, einval)
+
+m4_seealso(DbEnv)
+m4_page_footer
diff --git a/db/docs_src/mutex/mutex_set_align.so b/db/docs_src/mutex/mutex_set_align.so
new file mode 100644
index 000000000..64aab4506
--- /dev/null
+++ b/db/docs_src/mutex/mutex_set_align.so
@@ -0,0 +1,51 @@
+m4_comment([$Id: mutex_set_align.so,v 10.1 2005/07/20 16:34:00 bostic Exp $])
+
+define(M4PAGELOCAL, [mutex_set_align, mutex_get_align])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(mutex_set_align),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__mutex_set_align(DB_ENV *dbenv, u_int32_t align);
+m4_blank
+int
+DB_ENV-__GT__mutex_get_align(DB_ENV *dbenv, u_int32_t *alignp);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::mutex_set_align(u_int32_t align);
+m4_blank
+int
+DbEnv::mutex_get_align(u_int32_t *alignp);
+]))
+
+m4_p([dnl
+Set the mutex alignment, in bytes.])
+
+m4_p([dnl
+It is sometimes advantageous to align mutexes on specific byte
+boundaries in order to minimize cache line collisions. The
+m4_refT(mutex_set_align) specifies an alignment for mutexes allocated
+by m4_db.])
+
+m4_env_config(mutex_set_align,
+[mutex alignment], mutex_set_align, [the mutex alignment in bytes])
+
+m4_scope_env(mutex_set_align)
+
+m4_when_envopen(mutex_set_align, ignored)
+
+m4_return(mutex_set_align, std)
+
+m4_parambegin
+m4_param(align, [dnl
+The m4_arg(align) parameter is the mutex alignment, in bytes. The mutex
+alignment must be a power-of-two.])
+m4_paramend
+
+m4_err(mutex_set_align, einval)
+
+m4_pf_getter(mutex_get_align, [mutex alignment, in bytes],, alignp)
+
+m4_seealso(DbEnv)
+m4_page_footer
diff --git a/db/docs_src/mutex/mutex_set_max.so b/db/docs_src/mutex/mutex_set_max.so
new file mode 100644
index 000000000..9cfe91b94
--- /dev/null
+++ b/db/docs_src/mutex/mutex_set_max.so
@@ -0,0 +1,105 @@
+m4_comment([$Id: mutex_set_max.so,v 10.3 2005/08/03 21:24:59 bostic Exp $])
+
+define(M4PAGELOCAL,
+ [mutex_set_increment, mutex_get_increment, mutex_set_max, mutex_get_max])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(mutex_set_max),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__mutex_set_increment(DB_ENV *dbenv, u_int32_t increment);
+m4_blank
+int
+DB_ENV-__GT__mutex_get_increment(DB_ENV *dbenv, u_int32_t *incrementp);
+m4_blank
+int
+DB_ENV-__GT__mutex_set_max(DB_ENV *dbenv, u_int32_t max);
+m4_blank
+int
+DB_ENV-__GT__mutex_get_max(DB_ENV *dbenv, u_int32_t *maxp);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::mutex_set_increment(u_int32_t increment);
+m4_blank
+int
+DbEnv::mutex_get_increment(u_int32_t *incrementp);
+int
+DbEnv::mutex_set_max(u_int32_t max);
+m4_blank
+int
+DbEnv::mutex_get_max(u_int32_t *maxp);
+]))
+
+m4_p([dnl
+Configure the total number of mutexes to allocate.])
+
+m4_p([dnl
+m4_db allocates a default number of mutexes based on the initial
+configuration of the database environment. That default calculation may
+be too small if the application has an unusual need for mutexes (for
+example, if the application opens an unexpectedly large number of
+databases) or too large (if the application is trying to minimize its
+memory footprint). The m4_refT(mutex_set_max) is used to specify an
+absolute number of mutexes to allocate.])
+
+m4_p([dnl
+Calling the m4_refT(mutex_set_max) discards any value previously
+set using the m4_refT(mutex_set_increment).])
+
+m4_env_config(mutex_set_max,
+[total number of mutexes], mutex_set_max, [the total number of mutexes])
+
+m4_scope_env(mutex_set_max)
+
+m4_when_envopen(mutex_set_max, ignored)
+
+m4_return(mutex_set_max, std)
+
+m4_parambegin
+m4_param(max, [dnl
+The m4_arg(max) parameter is the absolute number of mutexes to
+allocate.])
+m4_paramend
+
+m4_err(mutex_set_max, einval)
+
+m4_pf_getter(mutex_get_max, [total number of mutexes allocated],, maxp)
+
+m4_pf_description(m4_ref(mutex_set_increment))
+
+m4_p([dnl
+Configure the number of additional mutexes to allocate.])
+
+m4_p([dnl
+Additionally, an application may want to allocate mutexes for its own
+use. The m4_refT(mutex_set_increment) is used to add a number of
+mutexes to the default allocation.])
+
+m4_p([dnl
+Calling the m4_refT(mutex_set_increment) discards any value previously
+set using the m4_refT(mutex_set_max).])
+
+m4_env_config(mutex_set_increment,
+[number of additional mutexes],
+mutex_set_increment, [the number of additional mutexes])
+
+m4_scope_env(mutex_set_increment)
+
+m4_when_envopen(mutex_set_increment, ignored)
+
+m4_return(mutex_set_increment, std)
+
+m4_parambegin
+m4_param(increment, [dnl
+The m4_arg(increment) parameter is the number of additional mutexes to
+allocate.])
+m4_paramend
+
+m4_err(mutex_set_increment, einval)
+
+m4_pf_getter(mutex_get_increment,
+ [number of additional mutexes to allocate],, incrementp)
+
+m4_seealso(DbEnv)
+m4_page_footer
diff --git a/db/docs_src/mutex/mutex_set_tas_spins.so b/db/docs_src/mutex/mutex_set_tas_spins.so
new file mode 100644
index 000000000..e4ece2879
--- /dev/null
+++ b/db/docs_src/mutex/mutex_set_tas_spins.so
@@ -0,0 +1,48 @@
+m4_comment([$Id: mutex_set_tas_spins.so,v 10.30 2005/07/20 16:34:01 bostic Exp $])
+
+define(M4PAGELOCAL, [mutex_set_tas_spins, mutex_get_tas_spins])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(mutex_set_tas_spins),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__mutex_set_tas_spins(DB_ENV *dbenv, u_int32_t tas_spins);
+m4_blank
+int
+DB_ENV-__GT__mutex_get_tas_spins(DB_ENV *dbenv, u_int32_t *tas_spinsp);
+
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::mutex_set_tas_spins(u_int32_t tas_spins);
+m4_blank
+int
+DbEnv::mutex_get_tas_spins(u_int32_t *, tas_spinsp);
+]))
+
+m4_p([dnl
+Specify that test-and-set mutexes should spin m4_arg(tas_spins) times
+without blocking. The value defaults to 1 on uniprocessor systems and
+to 50 times the number of processors on multiprocessor systems.])
+
+m4_env_config(mutex_set_tas_spins,
+[test-and-set spin count], set_tas_spins, [the number of spins])
+
+m4_scope_dbenv(mutex_set_tas_spins)
+
+m4_when_any(mutex_set_tas_spins)
+
+m4_return(mutex_set_tas_spins, std)
+
+m4_parambegin
+m4_param(tas_spins, [dnl
+The m4_arg(tas_spins) parameter is the number of spins test-and-set
+mutexes should execute before blocking.])
+m4_paramend
+
+m4_err(mutex_set_tas_spins, einval)
+
+m4_pf_getter(mutex_get_tas_spins, test-and-set spin count,, tas_spinsp)
+
+m4_seealso(DbEnv)
+m4_page_footer
diff --git a/db/docs_src/mutex/mutex_stat.so b/db/docs_src/mutex/mutex_stat.so
new file mode 100644
index 000000000..b39da4ec2
--- /dev/null
+++ b/db/docs_src/mutex/mutex_stat.so
@@ -0,0 +1,80 @@
+m4_comment([$Id: mutex_stat.so,v 10.3 2007/06/22 16:57:16 bostic Exp $])
+
+define(M4PAGELOCAL, [mutex_stat, mutex_stat_print])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(mutex_stat),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__mutex_stat(DB_ENV *env, DB_MUTEX_STAT **statp, u_int32_t flags);
+m4_blank
+int
+DB_ENV-__GT__mutex_stat_print(DB_ENV *env, u_int32_t flags);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::mutex_stat(DB_MUTEX_STAT **statp, u_int32_t flags);
+m4_blank
+int
+DbEnv::mutex_stat_print(u_int32_t flags);
+]))
+
+m4_p([dnl
+The m4_refT(mutex_stat) returns the mutex subsystem statistics.])
+
+m4_p([dnl
+The m4_refT(mutex_stat) creates a statistical structure of type
+DB_MUTEX_STAT and copies a pointer to it into a user-specified memory
+location.])
+
+m4_alloc([Statistical structures])
+
+m4_p([dnl
+The following DB_MUTEX_STAT fields will be filled in:])
+
+m4_tagbegin
+m4_field(u_int32_t, st_mutex_align,
+[The mutex alignment, in bytes.])
+
+m4_field(u_int32_t, st_mutex_tas_spins,
+[The number of times test-and-set mutexes will spin without blocking.])
+
+m4_field(int, st_mutex_cnt,
+[The total number of mutexes configured.])
+
+m4_field(u_int32_t, st_mutex_free,
+[The number of mutexes currently available.])
+
+m4_field(u_int32_t, st_mutex_inuse,
+[The number of mutexes currently in use.])
+
+m4_field(u_int32_t, st_mutex_inuse_max,
+[The maximum number of mutexes ever in use.])
+
+m4_field(roff_t, st_regsize,
+[The size of the mutex region, in bytes.])
+
+m4_field(u_int32_t, st_region_wait,
+[The number of times that a thread of control was forced to wait before
+obtaining the mutex region mutex.])
+
+m4_field(u_int32_t, st_region_nowait,
+[The number of times that a thread of control was able to obtain
+the mutex region mutex without waiting.])
+m4_tagend
+
+m4_when_after_envopen(mutex_stat)
+
+m4_return(mutex_stat, std)
+
+m4_parambegin
+m4_param(flags, m4_stat_flags)
+m4_param_co(statp, allocated statistics structure, REF)
+m4_paramend
+
+m4_err(mutex_stat, einval)
+
+m4_stat_print(mutex_stat_print, mutex subsystem, mutex_stat)
+
+m4_seealso(DbEnv)
+m4_page_footer
diff --git a/db/docs_src/mutex/mutex_unlock.so b/db/docs_src/mutex/mutex_unlock.so
new file mode 100644
index 000000000..c8ced48ef
--- /dev/null
+++ b/db/docs_src/mutex/mutex_unlock.so
@@ -0,0 +1,33 @@
+m4_comment([$Id: mutex_unlock.so,v 10.1 2005/07/20 16:34:02 bostic Exp $])
+
+define(M4PAGELOCAL, [mutex_unlock])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(mutex_unlock),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__mutex_unlock(DB_ENV *dbenv, db_mutex_t mutex);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::mutex_unlock(db_mutex_t mutex);
+]))
+
+m4_p([dnl
+The m4_refT(mutex_unlock) unlocks the mutex locked by
+m4_ref(mutex_lock).])
+
+m4_when_after_envopen(mutex_unlock)
+
+m4_return(mutex_unlock, std)
+
+m4_parambegin
+m4_param(mutex, [dnl
+The m4_arg(mutex) parameter is a mutex previously locked by
+m4_ref(mutex_lock).])
+m4_paramend
+
+m4_err(mutex_unlock, einval)
+
+m4_seealso(DbEnv)
+m4_page_footer
diff --git a/db/docs_src/ref/am/close.so b/db/docs_src/ref/am/close.so
new file mode 100644
index 000000000..c02d34fc8
--- /dev/null
+++ b/db/docs_src/ref/am/close.so
@@ -0,0 +1,36 @@
+m4_comment([$Id: close.so,v 10.18 2003/10/18 19:15:51 bostic Exp $])
+
+m4_ref_title(Access Methods,
+ Database close, @closing a database, am/sync, am/second)
+
+m4_p([dnl
+The m4_refT(dbh_close) closes the m4_ref(Db) database handle. By
+default, m4_ref(dbh_close) also flushes all modified records from the
+database cache to disk.])
+
+m4_p([dnl
+There is one flag that you can set to customize m4_ref(dbh_close):])
+
+m4_tagbegin
+m4_tag([m4_ref(DB_NOSYNC)], [Do not flush cached information to disk.])
+m4_tagend
+
+m4_bold([It is important to understand that flushing cached information
+to disk only minimizes the window of opportunity for corrupted data, it
+does not eliminate the possibility.])
+
+m4_p([dnl
+While unlikely, it is possible for database corruption to happen if a
+system or application crash occurs while writing data to the database. To
+ensure that database corruption never occurs, applications must either:])
+
+m4_bulletbegin
+m4_bullet([Use transactions and logging with automatic recovery.])
+m4_bullet([Use logging and application-specific recovery.])
+m4_bullet([Edit a copy of the database, and, once all applications
+using the database have successfully called m4_ref(dbh_close), use
+system operations (for example, the POSIX rename system call) to
+atomically replace the original database with the updated copy.])
+m4_bulletend
+
+m4_page_footer
diff --git a/db/docs_src/ref/am/count.so b/db/docs_src/ref/am/count.so
new file mode 100644
index 000000000..39881f6d9
--- /dev/null
+++ b/db/docs_src/ref/am/count.so
@@ -0,0 +1,14 @@
+m4_comment([$Id: count.so,v 1.4 2001/05/05 01:49:20 bostic Exp $])
+
+m4_ref_title(Access Methods,
+ Data item count, @counting data items for a key, am/join, am/curclose)
+
+m4_p([dnl
+Once a cursor has been initialized to refer to a particular key in the
+database, it can be used to determine the number of data items that are
+stored for any particular key. The m4_ref(dbc_count) method returns
+this number of data items. The returned value is always one, unless
+the database supports duplicate data items, in which case it may be any
+number of items.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/am/curclose.so b/db/docs_src/ref/am/curclose.so
new file mode 100644
index 000000000..e3c1141c4
--- /dev/null
+++ b/db/docs_src/ref/am/curclose.so
@@ -0,0 +1,14 @@
+m4_comment([$Id: curclose.so,v 10.15 2003/10/18 19:15:51 bostic Exp $])
+
+m4_ref_title(Access Methods, Cursor close,
+ [@closing a cursor, closing a @cursor], am/count, am_misc/align)
+
+m4_p([dnl
+The m4_refT(dbc_close) closes the m4_ref(Dbc) cursor, after which the
+cursor may no longer be used. Although cursors are implicitly closed
+when the database they point to are closed, it is good programming
+practice to explicitly close cursors. In addition, in transactional
+systems, cursors may not exist outside of a transaction and so must be
+explicitly closed.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/am/curdel.so b/db/docs_src/ref/am/curdel.so
new file mode 100644
index 000000000..f5c91d115
--- /dev/null
+++ b/db/docs_src/ref/am/curdel.so
@@ -0,0 +1,13 @@
+m4_comment([$Id: curdel.so,v 10.15 2003/10/18 19:15:52 bostic Exp $])
+
+m4_ref_title(Access Methods, Deleting records with a cursor,
+ [@deleting records with a cursor, deleting records with a @cursor],
+ am/curput, am/curdup)
+
+m4_p([dnl
+The m4_refT(dbc_del) deletes records from the database using a cursor.
+The m4_refT(dbc_del) deletes the record to which the cursor currently
+refers. In all cases, the cursor position is unchanged after a
+delete.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/am/curdup.so b/db/docs_src/ref/am/curdup.so
new file mode 100644
index 000000000..7319ca39e
--- /dev/null
+++ b/db/docs_src/ref/am/curdup.so
@@ -0,0 +1,22 @@
+m4_comment([$Id: curdup.so,v 11.6 2001/03/01 15:57:49 bostic Exp $])
+
+m4_ref_title(Access Methods, Duplicating a cursor,
+ [@duplicating a cursor, duplicating a @cursor], am/curdel, am/join)
+
+m4_p([dnl
+Once a cursor has been initialized (for example, by a call to
+m4_ref(dbc_get)), it can be thought of as identifying a particular
+location in a database. The m4_refT(dbc_dup) permits an application to
+create a new cursor that has the same locking and transactional
+information as the cursor from which it is copied, and which optionally
+refers to the same position in the database.])
+
+m4_p([dnl
+In order to maintain a cursor position when an application is using
+locking, locks are maintained on behalf of the cursor until the cursor is
+closed. In cases when an application is using locking without
+transactions, cursor duplication is often required to avoid
+self-deadlocks. For further details, refer to
+m4_link(M4RELDIR/ref/lock/am_conv, Access method locking conventions).])
+
+m4_page_footer
diff --git a/db/docs_src/ref/am/curget.cs b/db/docs_src/ref/am/curget.cs
new file mode 100644
index 000000000..535d6bec4
--- /dev/null
+++ b/db/docs_src/ref/am/curget.cs
@@ -0,0 +1,78 @@
+m4_ignore([dnl
+#include <sys/types.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <db.h>
+
+#define progname "t"
+
+int display (char *);
+
+int
+main()
+{
+ display("TESTDIR/test001.db");
+ return (0);
+}])
+m4_indent([dnl
+int
+display(database)
+ char *database;
+{
+ DB *dbp;
+ DBC *dbcp;
+ DBT key, data;
+ int close_db, close_dbc, ret;
+m4_blank
+ close_db = close_dbc = 0;
+m4_blank
+ /* Open the database. */
+ if ((ret = db_create(&dbp, NULL, 0)) != 0) {
+ fprintf(stderr,
+ "%s: db_create: %s\n", progname, db_strerror(ret));
+ return (1);
+ }
+ close_db = 1;
+m4_blank
+ /* Turn on additional error output. */
+ dbp-__GT__set_errfile(dbp, stderr);
+ dbp-__GT__set_errpfx(dbp, progname);
+m4_blank
+ /* Open the database. */
+ if ((ret =
+ dbp-__GT__open(dbp, NULL, database, NULL, DB_UNKNOWN, DB_RDONLY, 0)) != 0) {
+ dbp-__GT__err(dbp, ret, "%s: DB-__GT__open", database);
+ goto err;
+ }
+m4_blank
+ /* Acquire a cursor for the database. */
+ if ((ret = dbp-__GT__cursor(dbp, NULL, &dbcp, 0)) != 0) {
+ dbp-__GT__err(dbp, ret, "DB-__GT__cursor");
+ goto err;
+ }
+ close_dbc = 1;
+m4_blank
+ /* Initialize the key/data return pair. */
+ memset(&key, 0, sizeof(key));
+ memset(&data, 0, sizeof(data));
+m4_blank
+ /* Walk through the database and print out the key/data pairs. */
+ while ((ret = dbcp-__GT__c_get(dbcp, &key, &data, DB_NEXT)) == 0)
+ printf("%.*s : %.*s\n",
+ (int)key.size, (char *)key.data,
+ (int)data.size, (char *)data.data);
+ if (ret != DB_NOTFOUND) {
+ dbp-__GT__err(dbp, ret, "DBcursor-__GT__get");
+ goto err;
+ }
+m4_blank
+err: if (close_dbc && (ret = dbcp-__GT__c_close(dbcp)) != 0)
+ dbp-__GT__err(dbp, ret, "DBcursor-__GT__close");
+ if (close_db && (ret = dbp-__GT__close(dbp, 0)) != 0)
+ fprintf(stderr,
+ "%s: DB-__GT__close: %s\n", progname, db_strerror(ret));
+ return (0);
+}])
diff --git a/db/docs_src/ref/am/curget.so b/db/docs_src/ref/am/curget.so
new file mode 100644
index 000000000..e568e36c8
--- /dev/null
+++ b/db/docs_src/ref/am/curget.so
@@ -0,0 +1,109 @@
+m4_comment([$Id: curget.so,v 10.20 2003/10/18 19:15:52 bostic Exp $])
+
+m4_ref_title(Access Methods, Retrieving records with a cursor,
+ [@retrieving records with a cursor, retrieving records with a @cursor],
+ am/cursor, am/curput)
+
+m4_p([dnl
+The m4_refT(dbc_get) retrieves records from the database using a cursor.
+The m4_refT(dbc_get) takes a flag which controls how the cursor is
+positioned within the database and returns the key/data item associated
+with that positioning. Similar to m4_ref(dbh_get), m4_ref(dbc_get) may
+also take a supplied key and retrieve the data associated with that key
+from the database. There are several flags that you can set to
+customize retrieval.])
+
+m4_section(Cursor position flags)
+
+m4_tagbegin
+
+m4_tag([m4_ref(DB_FIRST), m4_ref(DB_LAST)], [dnl
+Return the first (last) record in the database.])
+
+m4_tag([m4_ref(DB_NEXT), m4_ref(DB_PREV)], [dnl
+Return the next (previous) record in the database.])
+
+m4_tag([m4_ref(DB_NEXT_DUP)], [dnl
+Return the next record in the database, if it is a duplicate data item
+for the current key.])
+
+m4_tag([m4_ref(DB_NEXT_NODUP), m4_ref(DB_PREV_NODUP)], [dnl
+Return the next (previous) record in the database that is not a
+duplicate data item for the current key.])
+
+m4_tag([m4_ref(DB_CURRENT)], [dnl
+Return the record from the database to which the cursor currently refers.])
+
+m4_tagend
+
+m4_section(Retrieving specific key/data pairs)
+
+m4_tagbegin
+
+m4_tag([m4_ref(DB_SET)], [dnl
+Return the record from the database that matches the supplied key. In
+the case of duplicates the first duplicate is returned and the cursor
+is positioned at the beginning of the duplicate list. The user can then
+traverse the duplicate entries for the key.])
+
+m4_tag([m4_ref(DB_SET_RANGE)], [dnl
+Return the smallest record in the database greater than or equal to the
+supplied key. This functionality permits partial key matches and range
+searches in the Btree access method.])
+
+m4_tag([m4_ref(DB_GET_BOTH)], [dnl
+Return the record from the database that matches both the supplied key
+and data items. This is particularly useful when there are large
+numbers of duplicate records for a key, as it allows the cursor to
+easily be positioned at the correct place for traversal of some part of
+a large set of duplicate records.])
+
+m4_tag([m4_ref(DB_GET_BOTH_RANGE)], [dnl
+Return the smallest record in the database greater than or equal to the
+supplied key and data items.])
+
+m4_tagend
+
+m4_section(Retrieving based on record numbers)
+
+m4_tagbegin
+
+m4_tag([m4_ref(DB_SET_RECNO)], [dnl
+If the underlying database is a Btree, and was configured so that it is
+possible to search it by logical record number, retrieve a specific
+record based on a record number argument.])
+
+m4_tag([m4_ref(DB_GET_RECNO)], [dnl
+If the underlying database is a Btree, and was configured so that it is
+possible to search it by logical record number, return the record number
+for the record to which the cursor refers.])
+
+m4_tagend
+
+m4_section(Special-purpose flags)
+
+m4_tagbegin
+
+m4_tag([m4_ref(DB_CONSUME)], [dnl
+Read-and-delete: the first record (the head) of the queue is returned and
+deleted. The underlying database must be a Queue.])
+
+m4_tag([m4_ref(DB_RMW)], [dnl
+Read-modify-write: acquire write locks instead of read locks during
+retrieval. This can enhance performance in threaded applications by
+reducing the chance of deadlock.])
+
+m4_tagend
+
+m4_p([dnl
+In all cases, the cursor is repositioned by a m4_ref(dbc_get) operation
+to point to the newly-returned key/data pair in the database.])
+
+m4_p([dnl
+The following is a code example showing a cursor walking through a
+database and displaying the records it contains to the standard
+output:])
+
+include(ref/am/curget.cs)
+
+m4_page_footer
diff --git a/db/docs_src/ref/am/curput.cs b/db/docs_src/ref/am/curput.cs
new file mode 100644
index 000000000..e7460b6e3
--- /dev/null
+++ b/db/docs_src/ref/am/curput.cs
@@ -0,0 +1,87 @@
+m4_ignore([dnl
+#include <sys/types.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <db.h>
+
+#define progname "t"
+#define database "a.db"
+
+int store(DB *);
+
+int
+main()
+{
+ DB *dbp;
+ int ret;
+
+ (void)remove(database);
+
+ (void)db_create(&dbp, NULL, 0);
+ (void)dbp->set_errfile(dbp, stderr);
+ (void)dbp->set_errpfx(dbp, progname);
+ (void)dbp->set_flags(dbp, DB_DUP);
+ if ((ret = dbp->open(dbp, NULL,
+ database, NULL, DB_BTREE, DB_CREATE, 0664)) != 0) {
+ dbp->err(dbp, ret, "%s: DB->open", database);
+ return (1);
+ }
+
+ store(dbp);
+
+ (void)dbp->close(dbp, 0);
+
+ return (0);
+}])
+m4_indent([dnl
+int
+store(dbp)
+ DB *dbp;
+{
+ DBC *dbcp;
+ DBT key, data;
+ int ret;
+m4_blank
+ /*
+ * The DB handle for a Btree database supporting duplicate data
+ * items is the argument; acquire a cursor for the database.
+ */
+ if ((ret = dbp-__GT__cursor(dbp, NULL, &dbcp, 0)) != 0) {
+ dbp-__GT__err(dbp, ret, "DB-__GT__cursor");
+ goto err;
+ }
+m4_blank
+ /* Initialize the key. */
+ memset(&key, 0, sizeof(key));
+ key.data = "new key";
+ key.size = strlen(key.data) + 1;
+m4_blank
+ /* Initialize the data to be the first of two duplicate records. */
+ memset(&data, 0, sizeof(data));
+ data.data = "new key's data: entry #1";
+ data.size = strlen(data.data) + 1;
+m4_blank
+ /* Store the first of the two duplicate records. */
+ if ((ret = dbcp-__GT__c_put(dbcp, &key, &data, DB_KEYFIRST)) != 0)
+ dbp-__GT__err(dbp, ret, "DB-__GT__cursor");
+m4_blank
+ /* Initialize the data to be the second of two duplicate records. */
+ data.data = "new key's data: entry #2";
+ data.size = strlen(data.data) + 1;
+m4_blank
+ /*
+ * Store the second of the two duplicate records. No duplicate
+ * record sort function has been specified, so we explicitly
+ * store the record as the last of the duplicate set.
+ */
+ if ((ret = dbcp-__GT__c_put(dbcp, &key, &data, DB_KEYLAST)) != 0)
+ dbp-__GT__err(dbp, ret, "DB-__GT__cursor");
+m4_blank
+err: if ((ret = dbcp-__GT__c_close(dbcp)) != 0)
+ dbp-__GT__err(dbp, ret, "DBcursor-__GT__close");
+m4_blank
+ return (0);
+}])
diff --git a/db/docs_src/ref/am/curput.so b/db/docs_src/ref/am/curput.so
new file mode 100644
index 000000000..a91635707
--- /dev/null
+++ b/db/docs_src/ref/am/curput.so
@@ -0,0 +1,48 @@
+m4_comment([$Id: curput.so,v 10.18 2003/10/18 19:15:52 bostic Exp $])
+
+m4_ref_title(Access Methods, Storing records with a cursor,
+ [@storing records with a cursor, storing records with a @cursor],
+ am/curget, am/curdel)
+
+m4_p([dnl
+The m4_refT(dbc_put) stores records into the database using a cursor. In
+general, m4_ref(dbc_put) takes a key and inserts the associated data
+into the database, at a location controlled by a specified flag.])
+
+m4_p([dnl
+There are several flags that you can set to customize storage:])
+
+m4_tagbegin
+
+m4_tag([m4_ref(DB_AFTER)], [dnl
+Create a new record, immediately after the record to which the cursor
+refers.])
+
+m4_tag([m4_ref(DB_BEFORE)], [dnl
+Create a new record, immediately before the record to which the cursor
+refers.])
+
+m4_tag([m4_ref(DB_CURRENT)], [dnl
+Replace the data part of the record to which the cursor refers.])
+
+m4_tag([m4_ref(DB_KEYFIRST)], [dnl
+Create a new record as the first of the duplicate records for the
+supplied key.])
+
+m4_tag([m4_ref(DB_KEYLAST)], [dnl
+Create a new record, as the last of the duplicate records for the supplied
+key.])
+
+m4_tagend
+
+m4_p([dnl
+In all cases, the cursor is repositioned by a m4_ref(dbc_put) operation
+to point to the newly inserted key/data pair in the database.])
+
+m4_p([dnl
+The following is a code example showing a cursor storing two data items
+in a database that supports duplicate data items:])
+
+include(ref/am/curput.cs)
+
+m4_page_footer
diff --git a/db/docs_src/ref/am/cursor.so b/db/docs_src/ref/am/cursor.so
new file mode 100644
index 000000000..de4962d4b
--- /dev/null
+++ b/db/docs_src/ref/am/cursor.so
@@ -0,0 +1,32 @@
+m4_comment([$Id: cursor.so,v 10.21 2003/10/18 19:15:52 bostic Exp $])
+
+m4_ref_title(Access Methods,
+ Cursor operations, database @cursors, am/second, am/curget)
+
+m4_p([dnl
+A database cursor refers to a single key/data pair in the database. It
+supports traversal of the database and is the only way to access
+individual duplicate data items. Cursors are used for operating on
+collections of records, for iterating over a database, and for saving
+handles to individual records, so that they can be modified after they
+have been read.])
+
+m4_p([dnl
+The m4_refT(dbh_cursor) opens a cursor into a database. Upon return the
+cursor is uninitialized, cursor positioning occurs as part of the first
+cursor operation.])
+
+m4_p([dnl
+Once a database cursor has been opened, records may be retrieved
+(m4_ref(dbc_get)), stored (m4_ref(dbc_put)), and deleted
+(m4_ref(dbc_del)).])
+
+m4_p([dnl
+Additional operations supported by the cursor handle include duplication
+(m4_ref(dbc_dup)), equality join (m4_ref(dbh_join)), and a count of
+duplicate data items (m4_ref(dbc_count)). Cursors are eventually closed
+using m4_ref(dbc_close).])
+
+include(dbc/m4.methods)
+
+m4_page_footer
diff --git a/db/docs_src/ref/am/delete.so b/db/docs_src/ref/am/delete.so
new file mode 100644
index 000000000..cbe456a90
--- /dev/null
+++ b/db/docs_src/ref/am/delete.so
@@ -0,0 +1,16 @@
+m4_comment([$Id: delete.so,v 10.16 2003/10/18 19:15:52 bostic Exp $])
+
+m4_ref_title(Access Methods,
+ Deleting records, @deleting records, am/put, am/stat)
+
+m4_p([dnl
+The m4_refT(dbh_del) deletes records from the database. In general,
+m4_ref(dbh_del) takes a key and deletes the data item associated with
+it from the database.])
+
+m4_p([dnl
+If the database has been configured to support duplicate records, the
+m4_refT(dbh_del) will remove all of the duplicate records. To remove
+individual duplicate records, you must use a m4_db cursor interface.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/am/get.so b/db/docs_src/ref/am/get.so
new file mode 100644
index 000000000..4b147c797
--- /dev/null
+++ b/db/docs_src/ref/am/get.so
@@ -0,0 +1,36 @@
+m4_comment([$Id: get.so,v 10.18 2003/10/18 19:15:52 bostic Exp $])
+
+m4_ref_title(Access Methods,
+ Retrieving records, @retrieving records, am/opensub, am/put)
+
+m4_p([dnl
+The m4_refT(dbh_get) retrieves records from the database. In general,
+m4_ref(dbh_get) takes a key and returns the associated data from the
+database.])
+
+m4_p([dnl
+There are a few flags that you can set to customize retrieval:])
+
+m4_tagbegin
+m4_tag([m4_ref(DB_GET_BOTH)], [dnl
+Search for a matching key and data item, that is, only return success
+if both the key and the data items match those stored in the database.])
+
+m4_tag([m4_ref(DB_RMW)], [dnl
+Read-modify-write: acquire write locks instead of read locks during
+retrieval. This can enhance performance in threaded applications by
+reducing the chance of deadlock.])
+
+m4_tag([m4_ref(DB_SET_RECNO)], [dnl
+If the underlying database is a Btree, and was configured so that it
+is possible to search it by logical record number, retrieve a specific
+record.])
+
+m4_tagend
+
+m4_p([dnl
+If the database has been configured to support duplicate records,
+m4_ref(dbh_get) will always return the first data item in the duplicate
+set.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/am/join.cs b/db/docs_src/ref/am/join.cs
new file mode 100644
index 000000000..a03dfed04
--- /dev/null
+++ b/db/docs_src/ref/am/join.cs
@@ -0,0 +1,82 @@
+m4_ignore([dnl
+#include <sys/types.h>
+#include <string.h>
+
+#include <db.h>
+
+int foo(void);
+
+DB *job_db, *name_db, *pers_db;
+DB_TXN *txn;
+
+int
+main() {
+ foo();
+ return (0);
+}
+
+int
+foo()
+{])
+m4_indent([dnl
+DBC *name_curs, *job_curs, *join_curs;
+DBC *carray__LB__3__RB__;
+DBT key, data;
+int ret, tret;
+m4_blank
+name_curs = NULL;
+job_curs = NULL;
+memset(&key, 0, sizeof(key));
+memset(&data, 0, sizeof(data));
+m4_blank
+if ((ret =
+ name_db-__GT__cursor(name_db, txn, &name_curs, 0)) != 0)
+ goto err;
+key.data = "smith";
+key.size = sizeof("smith");
+if ((ret =
+ name_curs-__GT__c_get(name_curs, &key, &data, DB_SET)) != 0)
+ goto err;
+m4_blank
+if ((ret = job_db-__GT__cursor(job_db, txn, &job_curs, 0)) != 0)
+ goto err;
+key.data = "manager";
+key.size = sizeof("manager");
+if ((ret =
+ job_curs-__GT__c_get(job_curs, &key, &data, DB_SET)) != 0)
+ goto err;
+m4_blank
+carray__LB__0__RB__ = name_curs;
+carray__LB__1__RB__ = job_curs;
+carray__LB__2__RB__ = NULL;
+m4_blank
+if ((ret =
+ pers_db-__GT__join(pers_db, carray, &join_curs, 0)) != 0)
+ goto err;
+while ((ret =
+ join_curs-__GT__c_get(join_curs, &key, &data, 0)) == 0) {
+ /* Process record returned in key/data. */
+}
+m4_blank
+/*
+ * If we exited the loop because we ran out of records,
+ * then it has completed successfully.
+ */
+if (ret == DB_NOTFOUND)
+ ret = 0;
+m4_blank
+err:
+if (join_curs != NULL &&
+ (tret = join_curs-__GT__c_close(join_curs)) != 0 && ret == 0)
+ ret = tret;
+if (name_curs != NULL &&
+ (tret = name_curs-__GT__c_close(name_curs)) != 0 && ret == 0)
+ ret = tret;
+if (job_curs != NULL &&
+ (tret = job_curs-__GT__c_close(job_curs)) != 0 && ret == 0)
+ ret = tret;
+m4_blank
+return (ret);
+])
+m4_ignore([dnl
+}])
diff --git a/db/docs_src/ref/am/join.so b/db/docs_src/ref/am/join.so
new file mode 100644
index 000000000..d42d5b9e6
--- /dev/null
+++ b/db/docs_src/ref/am/join.so
@@ -0,0 +1,166 @@
+m4_comment([$Id: join.so,v 10.31 2004/01/21 20:39:56 bostic Exp $])
+
+m4_ref_title(Access Methods, Equality Join,
+ [@equality join, equality @join, @natural join], am/curdup, am/count)
+
+m4_p([dnl
+m4_db supports "equality" (also known as "natural"), joins on secondary
+indices. An equality join is a method of retrieving data from a primary
+database using criteria stored in a set of secondary indices. It
+requires the data be organized as a primary database which contains the
+primary key and primary data field, and a set of secondary indices.
+Each of the secondary indices is indexed by a different secondary key,
+and, for each key in a secondary index, there is a set of duplicate data
+items that match the primary keys in the primary database.])
+
+m4_p([dnl
+For example, let's assume the need for an application that will return
+the names of stores in which one can buy fruit of a given color. We
+would first construct a primary database that lists types of fruit as
+the key item, and the store where you can buy them as the data item:])
+
+m4_indentv([dnl
+m4_table_begin
+m4_table_header(Primary key:, Primary data:)
+m4_table_element(_left, apple, Convenience Store)
+m4_table_element(_left, blueberry, Farmer's Market)
+m4_table_element(_left, peach, Shopway)
+m4_table_element(_left, pear, Farmer's Market)
+m4_table_element(_left, raspberry, Shopway)
+m4_table_element(_left, strawberry, Farmer's Market)
+m4_table_end])
+
+m4_p([dnl
+We would then create a secondary index with the key m4_bold(color), and,
+as the data items, the names of fruits of different colors.])
+
+m4_indentv([dnl
+m4_table_begin
+m4_table_header(Secondary key:, Secondary data:)
+m4_table_element(_left, blue, blueberry)
+m4_table_element(_left, red, apple)
+m4_table_element(_left, red, raspberry)
+m4_table_element(_left, red, strawberry)
+m4_table_element(_left, yellow, peach)
+m4_table_element(_left, yellow, pear)
+m4_table_end])
+
+m4_p([dnl
+This secondary index would allow an application to look up a color, and
+then use the data items to look up the stores where the colored fruit
+could be purchased. For example, by first looking up m4_bold(blue),
+the data item m4_bold(blueberry) could be used as the lookup key in the
+primary database, returning m4_bold(Farmer's Market).])
+
+m4_p([dnl
+Your data must be organized in the following manner in order to use the
+m4_refT(dbh_join):])
+
+m4_nlistbegin
+m4_nlist([dnl
+The actual data should be stored in the database represented by the
+m4_ref(Db) object used to invoke this method. Generally, this
+m4_ref(Db) object is called the m4_italic(primary).])
+
+m4_nlist([dnl
+Secondary indices should be stored in separate databases, whose keys
+are the values of the secondary indices and whose data items are the
+primary keys corresponding to the records having the designated
+secondary key value. It is acceptable (and expected) that there may be
+duplicate entries in the secondary indices.
+
+m4_p([dnl
+These duplicate entries should be sorted for performance reasons, although
+it is not required. For more information see the m4_ref(DB_DUPSORT) flag
+to the m4_refT(dbh_set_flags).])])
+m4_nlistend
+
+m4_p([dnl
+What the m4_refT(dbh_join) does is review a list of secondary keys, and,
+when it finds a data item that appears as a data item for all of the
+secondary keys, it uses that data item as a lookup into the primary
+database, and returns the associated data item.])
+
+m4_p([dnl
+If there were another secondary index that had as its key the m4_bold(cost)
+of the fruit, a similar lookup could be done on stores where inexpensive
+fruit could be purchased:])
+
+m4_indentv([dnl
+m4_table_begin
+m4_table_header(Secondary key:, Secondary data:)
+m4_table_element(_left, expensive, blueberry)
+m4_table_element(_left, expensive, peach)
+m4_table_element(_left, expensive, pear)
+m4_table_element(_left, expensive, strawberry)
+m4_table_element(_left, inexpensive, apple)
+m4_table_element(_left, inexpensive, pear)
+m4_table_element(_left, inexpensive, raspberry)
+m4_table_end])
+
+m4_p([dnl
+The m4_refT(dbh_join) provides equality join functionality. While not
+strictly cursor functionality, in that it is not a method off a cursor
+handle, it is more closely related to the cursor operations than to the
+standard m4_ref(Db) operations.])
+
+m4_p([dnl
+It is also possible to do lookups based on multiple criteria in a single
+operation. For example, it is possible to look up fruits that are both
+red and expensive in a single operation. If the same fruit appeared as
+a data item in both the color and expense indices, then that fruit name
+would be used as the key for retrieval from the primary index, and would
+then return the store where expensive, red fruit could be purchased.])
+
+m4_section(Example)
+
+m4_p([dnl
+Consider the following three databases:])
+
+m4_tagbegin
+m4_tag(personnel, [dnl
+m4_bulletbegin
+m4_bullet([key = SSN])
+m4_bullet([data = record containing name, address, phone number, job title])
+m4_bulletend])
+
+m4_tag(lastname, [dnl
+m4_bulletbegin
+m4_bullet([key = lastname])
+m4_bullet([data = SSN])
+m4_bulletend])
+
+m4_tag(jobs, [dnl
+m4_bulletbegin
+m4_bullet([key = job title])
+m4_bullet([data = SSN])
+m4_bulletend])
+m4_tagend
+
+m4_p([dnl
+Consider the following query:])
+
+m4_indent([dnl
+Return the personnel records of all people named smith with the job
+title manager.])
+
+m4_p([dnl
+This query finds are all the records in the primary database (personnel)
+for whom the criteria m4_bold([lastname=smith and job title=manager]) is
+true.])
+
+m4_p([dnl
+Assume that all databases have been properly opened and have the
+handles: pers_db, name_db, job_db. We also assume that we have an
+active transaction to which the handle txn refers.])
+
+include(ref/am/join.cs)
+
+m4_p([dnl
+The name cursor is positioned at the beginning of the duplicate list
+for m4_bold([smith]) and the job cursor is placed at the beginning of
+the duplicate list for m4_bold([manager]). The join cursor is returned
+from the join method. This code then loops over the join cursor getting
+the personnel records of each one until there are no more.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/am/open.so b/db/docs_src/ref/am/open.so
new file mode 100644
index 000000000..54d668484
--- /dev/null
+++ b/db/docs_src/ref/am/open.so
@@ -0,0 +1,52 @@
+m4_comment([$Id: open.so,v 10.18 2003/10/18 19:15:53 bostic Exp $])
+
+m4_ref_title(Access Methods,
+ Database open, @opening a database, am/ops, am/opensub)
+
+m4_p([dnl
+The m4_refT(dbh_open) opens a database, and takes five arguments:])
+
+m4_tagbegin
+
+m4_tag(file, [The name of the file to be opened.])
+
+m4_tag(database, [An optional database name.])
+
+m4_tag(type, [dnl
+The type of database to open. This value will be one of the four access
+methods m4_db supports: DB_BTREE, DB_HASH, DB_QUEUE or DB_RECNO, or the
+special value DB_UNKNOWN, which allows you to open an existing file
+without knowing its type.])
+
+m4_tag(mode, [The permissions to give to any created file.])
+
+m4_tagend
+
+m4_p([dnl
+There are a few flags that you can set to customize open:])
+
+m4_tagbegin
+m4_tag([m4_ref(DB_CREATE)], [dnl
+Create the underlying database and any necessary physical files.])
+
+m4_tag([m4_ref(DB_NOMMAP)], [dnl
+Do not map this database into process memory.])
+
+m4_tag([m4_ref(DB_RDONLY)], [Treat the data base as read-only.])
+
+m4_tag([m4_ref(DB_THREAD)], [dnl
+The returned handle is free-threaded, that is, it can be used
+simultaneously by multiple threads within the process.])
+
+m4_tag([m4_ref(DB_TRUNCATE)], [dnl
+Physically truncate the underlying database file, discarding all
+databases it contained. Underlying filesystem primitives are used to
+implement this flag. For this reason it is only applicable to the
+physical file and cannot be used to discard individual databases from
+within physical files.])
+
+m4_tag([m4_ref(DB_UPGRADE)], [Upgrade the database format as necessary.])
+
+m4_tagend
+
+m4_page_footer
diff --git a/db/docs_src/ref/am/opensub.so b/db/docs_src/ref/am/opensub.so
new file mode 100644
index 000000000..223a27e49
--- /dev/null
+++ b/db/docs_src/ref/am/opensub.so
@@ -0,0 +1,90 @@
+m4_comment([$Id: opensub.so,v 10.20 2007/05/17 18:31:55 bostic Exp $])
+
+m4_ref_title(Access Methods,
+ Opening multiple databases in a single file,, am/open, am/get)
+
+m4_p([dnl
+Applications may create multiple databases within a single physical
+file. This is useful when the databases are both numerous and
+reasonably small, in order to avoid creating a large number of
+underlying files, or when it is desirable to include secondary index
+databases in the same file as the primary index database. Putting
+multiple databases in a single physical file is an administrative
+convenience and unlikely to affect database performance.])
+
+m4_p([dnl
+To open or create a file that will include more than a single database,
+specify a database name when calling the m4_ref(dbh_open) method.])
+
+m4_p([dnl
+Physical files do not need to be comprised of a single type of database,
+and databases in a file may be of any mixture of types, except for Queue
+databases. Queue databases must be created one per file and cannot
+share a file with any other database type. There is no limit on the
+number of databases that may be created in a single file other than the
+standard m4_db file size and disk space limitations.])
+
+m4_p([dnl
+It is an error to attempt to open a second database in a file that was
+not initially created using a database name, that is, the file must
+initially be specified as capable of containing multiple databases for a
+second database to be created in it.])
+
+m4_p([dnl
+It is not an error to open a file that contains multiple databases
+without specifying a database name, however the database type should be
+specified as DB_UNKNOWN and the database must be opened read-only. The
+handle that is returned from such a call is a handle on a database whose
+key values are the names of the databases stored in the database file
+and whose data values are opaque objects. No keys or data values may be
+modified or stored using this database handle.])
+
+m4_section([Configuring databases sharing a file])
+
+m4_p([dnl
+There are four pieces of configuration information which must be
+specified consistently for all databases in a file, rather than
+differing on a per-database basis. They are: byte order, checksum and
+encryption behavior, and page size. When creating additional databases
+in a file, any of these configuration values specified must be
+consistent with the existing databases in the file or an error will be
+returned.])
+
+m4_section([Caching databases sharing a file])
+
+m4_p([dnl
+When storing multiple databases in a single physical file rather than
+in separate files, if any of the databases in a file is opened for
+update, all of the databases in the file must share a memory pool. In
+other words, they must be opened in the same database environment. This
+is so per-physical-file information common between the two databases is
+updated correctly.])
+
+m4_section([Locking in databases based on sharing a file])
+
+m4_p([dnl
+If databases are in separate files (and access to each separate database
+is single-threaded), there is no reason to perform any locking of any
+kind, and the two databases may be read and written simultaneously.
+Further, there would be no requirement to create a shared database
+environment in which to open those two databases.])
+
+m4_p([dnl
+However, since multiple databases in a file exist in a single physical
+file, opening two databases in the same file simultaneously requires
+locking be enabled, unless all of the databases are read-only. As the
+locks for the two databases can only conflict during page allocation,
+this additional locking is unlikely to affect performance. The
+exception is when m4_cam is configured; a single lock is used for all
+databases in the file when m4_cam is configured, and a write to one
+database will block all accesses to all databases.])
+
+m4_p([dnl
+In summary, programmers writing applications that open multiple
+databases in a single file will almost certainly need to create a shared
+database environment in the application as well. For more information
+on database environments, see m4_link(M4RELDIR/ref/env/intro, [Database
+environment introduction.])])
+
+
+m4_page_footer
diff --git a/db/docs_src/ref/am/ops.so b/db/docs_src/ref/am/ops.so
new file mode 100644
index 000000000..ad177c2e8
--- /dev/null
+++ b/db/docs_src/ref/am/ops.so
@@ -0,0 +1,28 @@
+m4_comment([$Id: ops.so,v 10.22 2002/08/30 20:01:36 bostic Exp $])
+
+m4_ref_title(Access Methods,
+ Access method operations,, am_conf/renumber, am/open)
+
+m4_p([dnl
+Once a database handle has been created using m4_ref(dbh_create), there
+are several standard access method operations. Each of these operations
+is performed using a method referred to by the returned handle.
+Generally, the database will be opened using m4_ref(dbh_open). If the
+database is from an old release of m4_db, it may need to be upgraded to
+the current release before it is opened using m4_ref(dbh_upgrade).])
+
+m4_p([dnl
+Once a database has been opened, records may be retrieved (m4_ref(dbh_get)),
+stored (m4_ref(dbh_put)), and deleted (m4_ref(dbh_del)).])
+
+m4_p([dnl
+Additional operations supported by the database handle include
+statistics (m4_ref(dbh_stat)), truncation (m4_ref(dbh_truncate)),
+version upgrade (m4_ref(dbh_upgrade)), verification and salvage
+(m4_ref(dbh_verify)), flushing to a backing file (m4_ref(dbh_sync)),
+and association of secondary indices (m4_ref(dbh_associate)). Database
+handles are eventually closed using m4_ref(dbh_close).])
+
+include(db/m4.methods)
+
+m4_page_footer
diff --git a/db/docs_src/ref/am/put.so b/db/docs_src/ref/am/put.so
new file mode 100644
index 000000000..5648c9a66
--- /dev/null
+++ b/db/docs_src/ref/am/put.so
@@ -0,0 +1,31 @@
+m4_comment([$Id: put.so,v 10.15 2003/10/18 19:15:53 bostic Exp $])
+
+m4_ref_title(Access Methods,
+ Storing records, @storing records, am/get, am/delete)
+
+m4_p([dnl
+The m4_refT(dbh_put) stores records into the database. In general,
+m4_ref(dbh_put) takes a key and stores the associated data into the
+database.])
+
+m4_p([dnl
+There are a few flags that you can set to customize storage:])
+
+m4_tagbegin
+m4_tag([m4_ref(DB_APPEND)],
+[Simply append the data to the end of the database, treating the database
+much like a simple log. This flag is only valid for the Queue and Recno
+access methods.])
+
+m4_tag([m4_ref(DB_NOOVERWRITE)],
+[Only store the data item if the key does not already appear in the database.])
+
+m4_tagend
+
+m4_p([dnl
+If the database has been configured to support duplicate records, the
+m4_refT(dbh_put) will add the new data value at the end of the duplicate
+set. If the database supports sorted duplicates, the new data value is
+inserted at the correct sorted location.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/am/second.javas b/db/docs_src/ref/am/second.javas
new file mode 100644
index 000000000..c8e7799e3
--- /dev/null
+++ b/db/docs_src/ref/am/second.javas
@@ -0,0 +1,155 @@
+/*-
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
+ *
+ * $Id: second.javas,v 10.7 2007/05/17 15:15:11 bostic Exp $
+ */
+package db;
+
+import com.sleepycat.db.*;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.InputStreamReader;
+import java.io.IOException;
+import java.io.PrintStream;
+
+class SecondaryExample
+{
+ private static final String progname = "SecondaryExample";
+ private static final String DATABASE_HOME = "TESTDIR";
+
+ public static void main(String[] args)
+ {
+ try {
+ SecondaryExample app = new SecondaryExample();
+ app.run();
+ } catch(Exception e) {
+ System.err.println(progname + ": " + e);
+ e.printStackTrace(System.err);
+ System.exit(1);
+ }
+ }
+
+ void run() throws DbException, FileNotFoundException
+ {
+ DbEnv dbenv = new DbEnv(0);
+
+ /* Open the environment. */
+ dbenv.open(DATABASE_HOME,
+ Db.DB_CREATE | Db.DB_INIT_LOCK | Db.DB_INIT_LOG |
+ Db.DB_INIT_MPOOL | Db.DB_INIT_TXN, 0);
+
+ try {
+ run_app(dbenv);
+ } finally {
+ dbenv.close(0);
+ }
+ }
+
+ private void run_app(DbEnv dbenv)
+ throws DbException, FileNotFoundException
+ {
+ Db dbp, sdbp;
+ Dbt key, pkey, skey, data;
+ StudentRecord srec;
+
+ /* Open/create primary */
+ dbp = new Db(dbenv, 0);
+ dbp.open(null, "students.db", null, Db.DB_BTREE, Db.DB_CREATE,
+ 0600);
+
+ /*
+ * Open/create secondary. Note that it supports duplicate data
+ * items, since last names might not be unique.
+ */
+ sdbp = new Db(dbenv, 0);
+ sdbp.set_flags(Db.DB_DUP | Db.DB_DUPSORT);
+ sdbp.open(null, "lastname.db", null, Db.DB_BTREE, Db.DB_CREATE,
+ 0600);
+
+ try {
+ /* Associate the secondary with the primary. */
+ dbp.associate(sdbp, new GetName(), 0);
+
+ /* Add a new record */
+ key = new Dbt();
+ key.set_data("WC42".getBytes());
+ key.set_size(4);
+ srec = new StudentRecord();
+ srec.student_id = "WC42";
+ srec.last_name = "Churchill ";
+ srec.first_name = "Winston ";
+ data = new Dbt();
+ srec.encode(data);
+
+ System.out.println("Adding a record with primary key " +
+ new String(key.get_data()) + " and secondary key " +
+ srec.last_name);
+ dbp.put(null, key, data, 0);
+
+ /* Now do a lookup */
+ skey = new Dbt();
+ pkey = new Dbt();
+ data = new Dbt();
+ skey.set_data("Churchill ".getBytes());
+ skey.set_size(15);
+ System.out.println("Searching with secondary key " +
+ new String(skey.get_data()));
+ sdbp.pget(null, skey, pkey, data, 0);
+
+ System.out.println("Found a record with primary key " +
+ new String(pkey.get_data()));
+ } finally {
+ dbp.close(0);
+ sdbp.close(0);
+ }
+ }
+
+ /*
+ * getname -- extracts a secondary key (the last name) from a primary
+ * key/data pair
+ */
+ class GetName implements DbSecondaryKeyCreate {
+ public int secondary_key_create(Db secondary,
+ Dbt pkey, Dbt pdata, Dbt skey) {
+ StudentRecord srec = new StudentRecord();
+ srec.decode(pdata);
+
+ // Make a fixed-length array of last_name
+ byte[] last_name_data = srec.last_name.getBytes();
+ byte[] last_name_raw = new byte[15];
+ System.arraycopy(last_name_data, 0, last_name_raw, 0,
+ last_name_data.length);
+
+ skey.set_data(last_name_raw);
+ skey.set_size(last_name_raw.length);
+ return (0);
+ }
+ }
+
+ class StudentRecord
+ {
+ String student_id; // assumed to be 4 bytes long
+ String last_name; // assumed to be 15 bytes long
+ String first_name; // assumed to be 15 bytes long
+
+ void decode(Dbt dbt) {
+ byte[] data = dbt.get_data();
+ student_id = new String(data, 0, 4);
+ last_name = new String(data, 4, 15);
+ first_name = new String(data, 19, 15);
+ }
+
+ void encode(Dbt dbt) {
+ byte[] data = new byte[34];
+ System.arraycopy(student_id.getBytes(), 0, data, 0, 4);
+ byte[] last_name_raw = last_name.getBytes();
+ System.arraycopy(last_name_raw, 0, data, 4,
+ last_name_raw.length);
+ byte[] first_name_raw = first_name.getBytes();
+ System.arraycopy(first_name_raw, 0, data, 19,
+ first_name_raw.length);
+ dbt.set_data(data);
+ dbt.set_size(data.length);
+ }
+ }
+}
diff --git a/db/docs_src/ref/am/second.so b/db/docs_src/ref/am/second.so
new file mode 100644
index 000000000..e1d98b2f3
--- /dev/null
+++ b/db/docs_src/ref/am/second.so
@@ -0,0 +1,158 @@
+m4_comment([$Id: second.so,v 10.12 2004/09/15 19:40:07 bostic Exp $])
+
+m4_ref_title(Access Methods, Secondary indices,
+ [secondary indices, secondary @indices], am/close, am/cursor)
+
+m4_p([dnl
+A secondary index, put simply, is a way to efficiently access records
+in a database (the primary) by means of some piece of information other
+than the usual (primary) key. In m4_db, this index is simply another
+database whose keys are these pieces of information (the secondary
+keys), and whose data are the primary keys. Secondary indices can be
+created manually by the application; there is no disadvantage, other
+than complexity, to doing so. However, when the secondary key can be
+mechanically derived from the primary key and datum that it points to,
+as is frequently the case, m4_db can automatically and transparently
+manage secondary indices.])
+
+m4_p([dnl
+As an example of how secondary indices might be used, consider a
+database containing a list of students at a college, each of whom has
+a unique student ID number. A typical database would use the student
+ID number as the key; however, one might also reasonably want to be
+able to look up students by last name. To do this, one would construct
+a secondary index in which the secondary key was this last name.])
+
+m4_p([In SQL, this would be done by executing something like the following:])
+
+m4_indent([dnl
+CREATE TABLE students(student_id CHAR(4) NOT NULL,
+ lastname CHAR(15), firstname CHAR(15), PRIMARY KEY(student_id));
+CREATE INDEX lname ON students(lastname);])
+
+m4_p([In m4_db, this would work as follows (a
+m4_linkweb(second.javas, [Java API example is also available])):])
+
+include(ref/am/second1.cs)
+
+m4_p([dnl
+From the application's perspective, putting things into the database
+works exactly as it does without a secondary index; one can simply
+insert records into the primary database. In SQL one would do the
+following:])
+
+m4_indent([dnl
+INSERT INTO student
+ VALUES ("WC42", "Churchill ", "Winston ");])
+
+m4_p([and in m4_db, one does:])
+
+include(ref/am/second2.cs)
+
+m4_p([dnl
+Internally, a record with secondary key "Churchill" is inserted into
+the secondary database (in addition to the insertion of "WC42" into the
+primary, of course).])
+
+m4_p([Deletes are similar. The SQL clause:])
+
+m4_indent([dnl
+DELETE FROM student WHERE (student_id = "WC42");])
+
+m4_p([looks like:])
+
+include(ref/am/second3.cs)
+
+m4_p([dnl
+Deletes can also be performed on the secondary index directly; a delete
+done this way will delete the "real" record in the primary as well. If
+the secondary supports duplicates and there are duplicate occurrences of
+the secondary key, then all records with that secondary key are removed
+from both the secondary index and the primary database. In
+SQL:])
+
+m4_indent([dnl
+DELETE FROM lname WHERE (lastname = "Churchill ");])
+
+m4_p([In m4_db:])
+
+include(ref/am/second4.cs)
+
+m4_p([dnl
+Gets on a secondary automatically return the primary datum. If
+m4_ref(dbh_pget) or m4_ref(dbc_pget) is used in lieu of m4_ref(dbh_get)
+or m4_ref(dbc_get), the primary key is returned as well. Thus, the
+equivalent of:])
+
+m4_indent([dnl
+SELECT * from lname WHERE (lastname = "Churchill ");])
+
+m4_p([would be:])
+
+include(ref/am/second5.cs)
+
+m4_p([dnl
+To create a secondary index to a m4_db database, open the database that
+is to become a secondary index normally, then pass it as the "secondary"
+argument to the m4_refT(dbh_associate) for some primary database.])
+
+m4_p([dnl
+After a m4_ref(dbh_associate) call is made, the secondary indices become
+alternate interfaces to the primary database. All updates to the
+primary will be automatically reflected in each secondary index that has
+been associated with it. All get operations using the m4_ref(dbh_get)
+or m4_refT(dbc_get)s on the secondary index return the primary datum
+associated with the specified (or otherwise current, in the case of
+cursor operations) secondary key. The m4_ref(dbh_pget) and
+m4_refT(dbc_pget)s also become usable; these behave just like
+m4_ref(dbh_get) and m4_ref(dbc_get), but return the primary key in
+addition to the primary datum, for those applications that need it as
+well.])
+
+m4_p([dnl
+Cursor get operations on a secondary index perform as expected; although
+the data returned will by default be those of the primary database, a
+position in the secondary index is maintained normally, and records will
+appear in the order determined by the secondary key and the comparison
+function or other structure of the secondary database.])
+
+m4_p([dnl
+Delete operations on a secondary index delete the item from the primary
+database and all relevant secondaries, including the current one.])
+
+m4_p([dnl
+Put operations of any kind are forbidden on secondary indices, as there
+is no way to specify a primary key for a newly put item. Instead, the
+application should use the m4_ref(dbc_put) or m4_ref(dbh_put) methods
+on the primary database.])
+
+m4_p([dnl
+Any number of secondary indices may be associated with a given primary
+database, up to limitations on available memory and the number of open
+file descriptors.])
+
+m4_p([dnl
+Note that although m4_db guarantees that updates made using any
+m4_ref(Db) handle with an associated secondary will be reflected in the
+that secondary, associating each primary handle with all the appropriate
+secondaries is the responsibility of the application and is not enforced
+by m4_db. It is generally unsafe, but not forbidden by m4_db, to modify
+a database that has secondary indices without having those indices open
+and associated. Similarly, it is generally unsafe, but not forbidden,
+to modify a secondary index directly. Applications that violate these
+rules face the possibility of outdated or incorrect results if the
+secondary indices are later used.])
+
+m4_p([dnl
+If a secondary index becomes outdated for any reason, it should be
+discarded using the m4_ref(dbh_remove) method and a new one created
+using the m4_ref(dbh_associate) method. If a secondary index is no
+longer needed, all of its handles should be closed using the
+m4_ref(dbh_close) method, and then the database should be removed using
+a new database handle and the m4_ref(dbh_remove) method.])
+
+m4_p([dnl
+Closing a primary database handle automatically dis-associates all
+secondary database handles associated with it.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/am/second1.cs b/db/docs_src/ref/am/second1.cs
new file mode 100644
index 000000000..7b84664be
--- /dev/null
+++ b/db/docs_src/ref/am/second1.cs
@@ -0,0 +1,84 @@
+m4_ignore([dnl
+#include <sys/types.h>
+#include <string.h>
+
+#include <db.h>
+
+DB_ENV *dbenv;
+
+void second();
+int getname(DB *, const DBT *, const DBT *, DBT *);
+void handle_error(int);
+
+int
+main()
+{
+ second();
+ return (0);
+}
+
+void
+handle_error(ret)
+ int ret;
+{}])
+m4_literal([m4_indentv([dnl
+struct student_record {
+ char student_id__LB__4__RB__;
+ char last_name__LB__15__RB__;
+ char first_name__LB__15__RB__;
+};
+m4_blank
+void
+second()
+{
+ DB *dbp, *sdbp;
+ int ret;
+ m4_blank
+ /* Open/create primary */
+ if ((ret = db_create(&dbp, dbenv, 0)) != 0)
+ handle_error(ret);
+ if ((ret = dbp-__GT__open(dbp, NULL,
+ "students.db", NULL, DB_BTREE, DB_CREATE, 0600)) != 0)
+ handle_error(ret);
+ m4_blank
+ /*
+ * Open/create secondary. Note that it supports duplicate data
+ * items, since last names might not be unique.
+ */
+ if ((ret = db_create(&sdbp, dbenv, 0)) != 0)
+ handle_error(ret);
+ if ((ret = sdbp-__GT__set_flags(sdbp, DB_DUP | DB_DUPSORT)) != 0)
+ handle_error(ret);
+ if ((ret = sdbp-__GT__open(sdbp, NULL,
+ "lastname.db", NULL, DB_BTREE, DB_CREATE, 0600)) != 0)
+ handle_error(ret);
+ m4_blank
+ /* Associate the secondary with the primary. */
+ if ((ret = dbp-__GT__associate(dbp, NULL, sdbp, getname, 0)) != 0)
+ handle_error(ret);
+}
+m4_blank
+/*
+ * getname -- extracts a secondary key (the last name) from a primary
+ * key/data pair
+ */
+int
+getname(secondary, pkey, pdata, skey)
+ DB *secondary;
+ const DBT *pkey, *pdata;
+ DBT *skey;
+{
+ /*
+ * Since the secondary key is a simple structure member of the
+ * record, we don't have to do anything fancy to return it. If
+ * we have composite keys that need to be constructed from the
+ * record, rather than simply pointing into it, then the user's
+ * function might need to allocate space and copy data. In
+ * this case, the DB_DBT_APPMALLOC flag should be set in the
+ * secondary key DBT.
+ */
+ memset(skey, 0, sizeof(DBT));
+ skey-__GT__data = ((struct student_record *)pdata-__GT__data)-__GT__last_name;
+ skey-__GT__size = sizeof((struct student_record *)pdata-__GT__data)-__GT__last_name;
+ return (0);
+}])])
diff --git a/db/docs_src/ref/am/second2.cs b/db/docs_src/ref/am/second2.cs
new file mode 100644
index 000000000..984688cf8
--- /dev/null
+++ b/db/docs_src/ref/am/second2.cs
@@ -0,0 +1,51 @@
+m4_ignore([dnl
+#include <sys/types.h>
+#include <string.h>
+
+#include <db.h>
+
+void foo();
+void handle_error(int);
+
+DB *dbp;
+DB_TXN *txn;
+int ret;
+
+int
+main()
+{
+ foo();
+ return (0);
+}
+
+void
+handle_error(ret)
+ int ret;
+{}
+
+void
+foo()
+{
+ struct student_record {
+ char student_id__LB__4__RB__;
+ char last_name__LB__15__RB__;
+ char first_name__LB__15__RB__;
+ };])
+
+m4_indent([dnl
+struct student_record s;
+DBT data, key;
+m4_blank
+memset(&key, 0, sizeof(DBT));
+memset(&data, 0, sizeof(DBT));
+memset(&s, 0, sizeof(struct student_record));
+key.data = "WC42";
+key.size = 4;
+memcpy(&s.student_id, "WC42", sizeof(s.student_id));
+memcpy(&s.last_name, "Churchill ", sizeof(s.last_name));
+memcpy(&s.first_name, "Winston ", sizeof(s.first_name));
+data.data = &s;
+data.size = sizeof(s);
+if ((ret = dbp-__GT__put(dbp, txn, &key, &data, 0)) != 0)
+ handle_error(ret);])
+m4_ignore([}])
diff --git a/db/docs_src/ref/am/second3.cs b/db/docs_src/ref/am/second3.cs
new file mode 100644
index 000000000..e9ad561ed
--- /dev/null
+++ b/db/docs_src/ref/am/second3.cs
@@ -0,0 +1,38 @@
+m4_ignore([dnl
+#include <sys/types.h>
+#include <string.h>
+
+#include <db.h>
+
+void foo();
+void handle_error(int);
+
+int ret;
+DB *dbp;
+DB_TXN *txn;
+
+int
+main()
+{
+ foo();
+ return (0);
+}
+
+void
+handle_error(ret)
+ int ret;
+{}
+
+void
+foo()
+{])
+
+m4_indent([dnl
+DBT key;
+m4_blank
+memset(&key, 0, sizeof(DBT));
+key.data = "WC42";
+key.size = 4;
+if ((ret = dbp-__GT__del(dbp, txn, &key, 0)) != 0)
+ handle_error(ret);])
+m4_ignore([}])
diff --git a/db/docs_src/ref/am/second4.cs b/db/docs_src/ref/am/second4.cs
new file mode 100644
index 000000000..692e02e67
--- /dev/null
+++ b/db/docs_src/ref/am/second4.cs
@@ -0,0 +1,38 @@
+m4_ignore([dnl
+#include <sys/types.h>
+#include <string.h>
+
+#include <db.h>
+
+void foo();
+void handle_error(int);
+
+DB *sdbp;
+DB_TXN *txn;
+int ret;
+
+int
+main()
+{
+ foo();
+ return (0);
+}
+
+void
+handle_error(ret)
+ int ret;
+{}
+
+void
+foo()
+{])
+
+m4_indent([dnl
+DBT skey;
+m4_blank
+memset(&skey, 0, sizeof(DBT));
+skey.data = "Churchill ";
+skey.size = 15;
+if ((ret = sdbp-__GT__del(sdbp, txn, &skey, 0)) != 0)
+ handle_error(ret);])
+m4_ignore([}])
diff --git a/db/docs_src/ref/am/second5.cs b/db/docs_src/ref/am/second5.cs
new file mode 100644
index 000000000..5b0971828
--- /dev/null
+++ b/db/docs_src/ref/am/second5.cs
@@ -0,0 +1,43 @@
+m4_ignore([dnl
+#include <sys/types.h>
+#include <string.h>
+
+#include <db.h>
+
+void foo();
+void handle_error(int);
+
+DB *sdbp;
+DB_TXN *txn;
+int ret;
+
+int
+main()
+{
+ foo();
+ return (0);
+}
+
+void
+handle_error(ret)
+ int ret;
+{}
+
+void
+foo()
+{])
+
+m4_indent([dnl
+DBT data, pkey, skey;
+m4_blank
+memset(&skey, 0, sizeof(DBT));
+memset(&pkey, 0, sizeof(DBT));
+memset(&data, 0, sizeof(DBT));
+skey.data = "Churchill ";
+skey.size = 15;
+if ((ret = sdbp-__GT__pget(sdbp, txn, &skey, &pkey, &data, 0)) != 0)
+ handle_error(ret);
+/*
+ * Now pkey contains "WC42" and data contains Winston's record.
+ */])
+m4_ignore([}])
diff --git a/db/docs_src/ref/am/stat.so b/db/docs_src/ref/am/stat.so
new file mode 100644
index 000000000..edf17ef33
--- /dev/null
+++ b/db/docs_src/ref/am/stat.so
@@ -0,0 +1,22 @@
+m4_comment([$Id: stat.so,v 10.21 2003/10/18 19:15:53 bostic Exp $])
+
+m4_ref_title(Access Methods,
+ Database statistics, database @statistics, am/delete, am/truncate)
+
+m4_p([dnl
+The m4_refT(dbh_stat) returns a set of statistics about the underlying
+database, for example, the number of key/data pairs in the database, how
+the database was originally configured, and so on.])
+
+m4_p([dnl
+There is one flag you can set to customize the returned statistics:])
+
+m4_tagbegin
+
+m4_tag([m4_ref(DB_FAST_STAT)], [dnl
+Return only information that can be acquired without traversing the
+entire database.])
+
+m4_tagend
+
+m4_page_footer
diff --git a/db/docs_src/ref/am/sync.so b/db/docs_src/ref/am/sync.so
new file mode 100644
index 000000000..24ce266b4
--- /dev/null
+++ b/db/docs_src/ref/am/sync.so
@@ -0,0 +1,29 @@
+m4_comment([$Id: sync.so,v 10.18 2003/10/18 19:15:53 bostic Exp $])
+
+m4_ref_title(Access Methods, Flushing the database cache,
+ flushing the database @cache, am/verify, am/close)
+
+m4_p([dnl
+The m4_refT(dbh_sync) flushes all modified records from the database
+cache to disk.])
+
+m4_p([dnl
+m4_bold([It is important to understand that flushing cached information
+to disk only minimizes the window of opportunity for corrupted data, it
+does not eliminate the possibility.])])
+
+m4_p([dnl
+While unlikely, it is possible for database corruption to happen if a
+system or application crash occurs while writing data to the database. To
+ensure that database corruption never occurs, applications must either:])
+
+m4_bulletbegin
+m4_bullet([Use transactions and logging with automatic recovery.])
+m4_bullet([Use logging and application-specific recovery.])
+m4_bullet([Edit a copy of the database, and, once all applications
+using the database have successfully called m4_ref(dbh_close), use
+system operations (for example, the POSIX rename system call) to
+atomically replace the original database with the updated copy.])
+m4_bulletend
+
+m4_page_footer
diff --git a/db/docs_src/ref/am/truncate.so b/db/docs_src/ref/am/truncate.so
new file mode 100644
index 000000000..40761156c
--- /dev/null
+++ b/db/docs_src/ref/am/truncate.so
@@ -0,0 +1,10 @@
+m4_comment([$Id: truncate.so,v 10.5 2003/10/18 19:15:53 bostic Exp $])
+
+m4_ref_title(Access Methods,
+ Database truncation, [@truncating a database, @emptying a database],
+ am/stat, am/upgrade)
+
+m4_p([dnl
+The m4_refT(dbh_truncate) empties a database of all records.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/am/upgrade.so b/db/docs_src/ref/am/upgrade.so
new file mode 100644
index 000000000..98f9fd542
--- /dev/null
+++ b/db/docs_src/ref/am/upgrade.so
@@ -0,0 +1,40 @@
+m4_comment([$Id: upgrade.so,v 10.17 2001/03/10 19:05:22 bostic Exp $])
+
+m4_ref_title(Access Methods,
+ Database upgrade, @upgrading databases, am/truncate, am/verify)
+
+m4_p([dnl
+When upgrading to a new release of m4_db, it may be necessary to upgrade
+the on-disk format of already-created database files. m4_bold([m4_db
+database upgrades are done in place, and so are potentially
+destructive.]) This means that if the system crashes during the upgrade
+procedure, or if the upgrade procedure runs out of disk space, the
+databases may be left in an inconsistent and unrecoverable state. To
+guard against failure, the procedures outlined in
+m4_link(M4RELDIR/ref/upgrade/process, Upgrading m4_db installations)
+should be carefully followed. If you are not performing catastrophic
+archival as part of your application upgrade process, you should at
+least copy your database to archival media, verify that your archival
+media is error-free and readable, and that copies of your backups are
+stored offsite!])
+
+m4_p([dnl
+The actual database upgrade is done using the m4_ref(dbh_upgrade)
+method, or by dumping the database using the old version of the m4_db
+software and reloading it using the current version.])
+
+m4_p([dnl
+After an upgrade, m4_db applications must be recompiled to use the new
+m4_db library before they can access an upgraded database.
+m4_bold([There is no guarantee that applications compiled against
+previous releases of m4_db will work correctly with an upgraded database
+format. Nor is there any guarantee that applications compiled against
+newer releases of m4_db will work correctly with the previous database
+format.]) We do guarantee that any archived database may be upgraded
+using a current m4_db software release and the m4_ref(dbh_upgrade)
+method, and there is no need to step-wise upgrade the database using
+intermediate releases of m4_db. Sites should consider archiving
+appropriate copies of their application or application sources if they
+may need to access archived databases without first upgrading them.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/am/verify.so b/db/docs_src/ref/am/verify.so
new file mode 100644
index 000000000..1d7184563
--- /dev/null
+++ b/db/docs_src/ref/am/verify.so
@@ -0,0 +1,42 @@
+m4_comment([$Id: verify.so,v 10.10 2003/10/18 19:15:54 bostic Exp $])
+
+m4_ref_title(Access Methods, Database verification and salvage,
+ [database @verification, database @salvage, salvaging @corrupted databases],
+ am/upgrade, am/sync)
+
+m4_p([dnl
+The m4_refT(dbh_verify) verifies that a file, and any databases it may
+contain, are uncorrupted. In addition, the method may optionally be
+called with a file stream argument to which all key/data pairs found in
+the database are output. There are two modes for finding key/data pairs
+to be output:])
+
+m4_nlistbegin
+m4_nlist([dnl
+If the m4_ref(DB_SALVAGE) flag is specified, the key/data pairs in the
+database are output. When run in this mode, the database is assumed to
+be largely uncorrupted. For example, the m4_ref(dbh_verify) method will
+search for pages that are no longer linked into the database, and will
+output key/data pairs from such pages. However, key/data items that
+have been marked as deleted in the database will not be output, as the
+page structures are generally trusted in this mode.])
+
+m4_nlist([dnl
+If both the m4_ref(DB_SALVAGE) and m4_ref(DB_AGGRESSIVE) flags are
+specified, all possible key/data pairs are output. When run in this mode,
+the database is assumed to be seriously corrupted. For example, key/data
+pairs that have been deleted will re-appear in the output. In addition,
+because pages may have been subsequently reused and modified during
+normal database operations after the key/data pairs were deleted, it is
+not uncommon for apparently corrupted key/data pairs to be output in this
+mode, even when there is no corruption in the underlying database. The
+output will almost always have to be edited by hand or other means before
+the data is ready for reload into another database. We recommend that
+m4_ref(DB_SALVAGE) be tried first, and m4_ref(DB_AGGRESSIVE) only tried
+if the output from that first attempt is obviously missing data items or
+the data is sufficiently valuable that human review of the output is
+preferable to any kind of data loss.])
+
+m4_nlistend
+
+m4_page_footer
diff --git a/db/docs_src/ref/am_conf/bt_compare.so b/db/docs_src/ref/am_conf/bt_compare.so
new file mode 100644
index 000000000..8043002c1
--- /dev/null
+++ b/db/docs_src/ref/am_conf/bt_compare.so
@@ -0,0 +1,57 @@
+m4_comment([$Id: bt_compare.so,v 10.25 2004/03/05 21:39:33 bostic Exp $])
+
+m4_ref_title(Access Methods, Btree comparison,
+ specifying a Btree @comparison function, am_conf/malloc, am_conf/bt_prefix)
+
+m4_p([dnl
+The Btree data structure is a sorted, balanced tree structure storing
+associated key/data pairs. By default, the sort order is lexicographical,
+with shorter keys collating before longer keys. The user can specify the
+sort order for the Btree by using the m4_refT(dbh_set_bt_compare).])
+
+m4_p([dnl
+Sort routines are passed pointers to keys as arguments. The keys are
+represented as m4_ref(Dbt) structures. The routine must return an integer
+less than, equal to, or greater than zero if the first argument is
+considered to be respectively less than, equal to, or greater than the
+second argument. The only fields that the routines may examine in the
+m4_ref(Dbt) structures are m4_arg(data) and m4_arg(size) fields.])
+
+m4_p([dnl
+An example routine that might be used to sort integer keys in the database
+is as follows:])
+
+include(ref/am_conf/bt_compare1.cs)
+
+m4_p([dnl
+Note that the data must first be copied into memory that is appropriately
+aligned, as m4_db does not guarantee any kind of alignment of the
+underlying data, including for comparison routines. When writing
+comparison routines, remember that databases created on machines of
+different architectures may have different integer byte orders, for which
+your code may need to compensate.])
+
+m4_p([dnl
+An example routine that might be used to sort keys based on the first
+five bytes of the key (ignoring any subsequent bytes) is as follows:])
+
+include(ref/am_conf/bt_compare2.cs)
+
+m4_p([dnl
+All comparison functions must cause the keys in the database to be
+well-ordered. The most important implication of being well-ordered is
+that the key relations must be transitive, that is, if key A is less
+than key B, and key B is less than key C, then the comparison routine
+must also return that key A is less than key C.])
+
+m4_p([dnl
+It is reasonable for a comparison function to not examine an entire key
+in some applications, which implies that partial keys may be specified
+to the m4_db interfaces. When partial keys are specified to m4_db,
+interfaces which retrieve data items based on a user-specified key (for
+example, m4_ref(dbh_get) and m4_ref(dbc_get) with the m4_ref(DB_SET)
+flag), will not modify the user-specified key by returning the actual
+key stored in the database. The actual key can be retrieved by calling
+the m4_refT(dbc_get) with the m4_ref(DB_CURRENT) flag.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/am_conf/bt_compare1.cs b/db/docs_src/ref/am_conf/bt_compare1.cs
new file mode 100644
index 000000000..6ab4feee2
--- /dev/null
+++ b/db/docs_src/ref/am_conf/bt_compare1.cs
@@ -0,0 +1,35 @@
+m4_ignore([dnl
+#include <sys/types.h>
+#include <string.h>
+
+#include <db.h>
+
+int compare_int(DB *, const DBT *a, const DBT *b);
+
+int
+main()
+{
+ DB *dbp;
+ DBT key, data;
+
+ (void)compare_int(dbp, &key, &data);
+ return (0);
+}])
+m4_indent([dnl
+int
+compare_int(dbp, a, b)
+ DB *dbp;
+ const DBT *a, *b;
+{
+ int ai, bi;
+m4_blank
+ /*
+ * Returns:
+ * __LT__ 0 if a __LT__ b
+ * = 0 if a = b
+ * __GT__ 0 if a __GT__ b
+ */
+ memcpy(&ai, a-__GT__data, sizeof(int));
+ memcpy(&bi, b-__GT__data, sizeof(int));
+ return (ai - bi);
+}])
diff --git a/db/docs_src/ref/am_conf/bt_compare2.cs b/db/docs_src/ref/am_conf/bt_compare2.cs
new file mode 100644
index 000000000..23ca9ec2d
--- /dev/null
+++ b/db/docs_src/ref/am_conf/bt_compare2.cs
@@ -0,0 +1,36 @@
+m4_ignore([dnl
+#include <sys/types.h>
+
+#include <db.h>
+
+int compare_dbt(DB *, const DBT *a, const DBT *b);
+
+int
+main()
+{
+ DB *dbp;
+ DBT key, data;
+
+ (void)compare_dbt(dbp, &key, &data);
+ return (0);
+}])
+m4_indent([dnl
+int
+compare_dbt(dbp, a, b)
+ DB *dbp;
+ const DBT *a, *b;
+{
+ int len;
+ u_char *p1, *p2;
+m4_blank
+ /*
+ * Returns:
+ * __LT__ 0 if a __LT__ b
+ * = 0 if a = b
+ * __GT__ 0 if a __GT__ b
+ */
+ for (p1 = a-__GT__data, p2 = b-__GT__data, len = 5; len--; ++p1, ++p2)
+ if (*p1 != *p2)
+ return ((long)*p1 - (long)*p2);
+ return (0);
+}])
diff --git a/db/docs_src/ref/am_conf/bt_minkey.so b/db/docs_src/ref/am_conf/bt_minkey.so
new file mode 100644
index 000000000..2f3762b53
--- /dev/null
+++ b/db/docs_src/ref/am_conf/bt_minkey.so
@@ -0,0 +1,51 @@
+m4_comment([$Id: bt_minkey.so,v 10.14 2000/03/18 21:43:08 bostic Exp $])
+
+m4_ref_title(Access Methods,
+ Minimum keys per page,, am_conf/bt_prefix, am_conf/bt_recnum)
+
+m4_p([dnl
+The number of keys stored on each page affects the size of a Btree and
+how it is maintained. Therefore, it also affects the retrieval and search
+performance of the tree. For each Btree, m4_db computes a maximum key
+and data size. This size is a function of the page size and the fact that
+at least two key/data pairs must fit on any Btree page. Whenever key or
+data items exceed the calculated size, they are stored on overflow pages
+instead of in the standard Btree leaf pages.])
+
+m4_p([dnl
+Applications may use the m4_refT(dbh_set_bt_minkey) to change the minimum
+number of keys that must fit on a Btree page from two to another value.
+Altering this value in turn alters the on-page maximum size, and can be
+used to force key and data items which would normally be stored in the
+Btree leaf pages onto overflow pages.])
+
+m4_p([dnl
+Some data sets can benefit from this tuning. For example, consider an
+application using large page sizes, with a data set almost entirely
+consisting of small key and data items, but with a few large items. By
+setting the minimum number of keys that must fit on a page, the
+application can force the outsized items to be stored on overflow pages.
+That in turn can potentially keep the tree more compact, that is, with
+fewer internal levels to traverse during searches.])
+
+m4_p([dnl
+The following calculation is similar to the one performed by the Btree
+implementation. (The m4_bold(minimum_keys) value is multiplied by 2
+because each key/data pair requires 2 slots on a Btree page.)])
+
+m4_indent([maximum_size = page_size / (minimum_keys * 2)])
+
+m4_p([dnl
+Using this calculation, if the page size is 8KB and the default
+m4_bold(minimum_keys) value of 2 is used, then any key or data items
+larger than 2KB will be forced to an overflow page. If an application
+were to specify a m4_bold(minimum_key) value of 100, then any key or data
+items larger than roughly 40 bytes would be forced to overflow pages.])
+
+m4_p([dnl
+It is important to remember that accesses to overflow pages do not perform
+as well as accesses to the standard Btree leaf pages, and so setting the
+value incorrectly can result in overusing overflow pages and decreasing
+the application's overall performance.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/am_conf/bt_prefix.cs b/db/docs_src/ref/am_conf/bt_prefix.cs
new file mode 100644
index 000000000..97326dea8
--- /dev/null
+++ b/db/docs_src/ref/am_conf/bt_prefix.cs
@@ -0,0 +1,43 @@
+m4_ignore([dnl
+#include <sys/types.h>
+
+#include <db.h>
+
+u_int32_t compare_prefix(DB *, const DBT *a, const DBT *b);
+
+int
+main()
+{
+ DB *dbp;
+ DBT key, data;
+
+ (void)compare_prefix(dbp, &key, &data);
+ return (0);
+}])
+
+m4_indent([dnl
+u_int32_t
+compare_prefix(dbp, a, b)
+ DB *dbp;
+ const DBT *a, *b;
+{
+ size_t cnt, len;
+ u_int8_t *p1, *p2;
+m4_blank
+ cnt = 1;
+ len = a-__GT__size __GT__ b-__GT__size ? b-__GT__size : a-__GT__size;
+ for (p1 =
+ a-__GT__data, p2 = b-__GT__data; len--; ++p1, ++p2, ++cnt)
+ if (*p1 != *p2)
+ return (cnt);
+
+ /*
+ * They match up to the smaller of the two sizes.
+ * Collate the longer after the shorter.
+ */
+ if (a-__GT__size __LT__ b-__GT__size)
+ return (a-__GT__size + 1);
+ if (b-__GT__size __LT__ a-__GT__size)
+ return (b-__GT__size + 1);
+ return (b-__GT__size);
+}])
diff --git a/db/docs_src/ref/am_conf/bt_prefix.so b/db/docs_src/ref/am_conf/bt_prefix.so
new file mode 100644
index 000000000..c57a3690e
--- /dev/null
+++ b/db/docs_src/ref/am_conf/bt_prefix.so
@@ -0,0 +1,44 @@
+m4_comment([$Id: bt_prefix.so,v 10.22 2004/02/21 15:50:51 bostic Exp $])
+
+m4_ref_title(Access Methods,
+ Btree prefix comparison,, am_conf/bt_compare, am_conf/bt_minkey)
+
+m4_p([dnl
+The m4_db Btree implementation maximizes the number of keys that can be
+stored on an internal page by storing only as many bytes of each key as
+are necessary to distinguish it from adjacent keys. The prefix
+comparison routine is what determines this minimum number of bytes (that
+is, the length of the unique prefix), that must be stored. A prefix
+comparison function for the Btree can be specified by calling
+m4_ref(dbh_set_bt_prefix).])
+
+m4_p([dnl
+The prefix comparison routine must be compatible with the overall
+comparison function of the Btree, since what distinguishes any two keys
+depends entirely on the function used to compare them. This means that
+if a prefix comparison routine is specified by the application, a
+compatible overall comparison routine must also have been specified.])
+
+m4_p([dnl
+Prefix comparison routines are passed pointers to keys as arguments.
+The keys are represented as m4_ref(Dbt) structures. The only fields
+the routines may examine in the m4_ref(Dbt) structures are m4_arg(data)
+and m4_arg(size) fields.])
+
+m4_p([dnl
+The prefix comparison function must return the number of bytes necessary
+to distinguish the two keys. If the keys are identical (equal and equal
+in length), the length should be returned. If the keys are equal up to
+the smaller of the two lengths, then the length of the smaller key plus
+1 should be returned.])
+
+m4_p([dnl
+An example prefix comparison routine follows:])
+
+include(ref/am_conf/bt_prefix.cs)
+
+m4_p([dnl
+The usefulness of this functionality is data-dependent, but in some data
+sets can produce significantly reduced tree sizes and faster search times.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/am_conf/bt_recnum.so b/db/docs_src/ref/am_conf/bt_recnum.so
new file mode 100644
index 000000000..7a7d313cc
--- /dev/null
+++ b/db/docs_src/ref/am_conf/bt_recnum.so
@@ -0,0 +1,36 @@
+m4_comment([$Id: bt_recnum.so,v 10.23 2002/06/24 14:50:23 bostic Exp $])
+
+m4_ref_title(Access Methods,
+ Retrieving Btree records by logical record number,
+ [retrieving Btree records by logical record @number,
+ retrieving Btree records by @logical record @number],
+ am_conf/bt_minkey, am_conf/h_ffactor)
+
+m4_p([dnl
+The Btree access method optionally supports retrieval by logical record
+numbers. To configure a Btree to support record numbers, call the
+m4_refT(dbh_set_flags) with the m4_ref(DB_RECNUM) flag.])
+
+m4_p([dnl
+Configuring a Btree for record numbers should not be done lightly.
+While often useful, it may significantly slow down the speed at which
+items can be stored into the database, and can severely impact
+application throughput. Generally it should be avoided in trees with
+a need for high write concurrency.])
+
+m4_p([dnl
+To retrieve by record number, use the m4_ref(DB_SET_RECNO) flag to the
+m4_ref(dbh_get) and m4_refT(dbc_get)s. The following is an example of
+a routine that displays the data item for a Btree database created with
+the m4_ref(DB_RECNUM) option.])
+
+include(ref/am_conf/bt_recnum1.cs)
+
+m4_p([dnl
+To determine a key's record number, use the m4_ref(DB_GET_RECNO) flag
+to the m4_refT(dbc_get). The following is an example of a routine that
+displays the record number associated with a specific key.])
+
+include(ref/am_conf/bt_recnum2.cs)
+
+m4_page_footer
diff --git a/db/docs_src/ref/am_conf/bt_recnum1.cs b/db/docs_src/ref/am_conf/bt_recnum1.cs
new file mode 100644
index 000000000..cb690e077
--- /dev/null
+++ b/db/docs_src/ref/am_conf/bt_recnum1.cs
@@ -0,0 +1,202 @@
+m4_ignore([
+#include <sys/types.h>
+
+#include <errno.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <db.h>
+
+#define DATABASE "access.db"
+#define WORDLIST "../test/wordlist"
+
+int rec_display __P((DB *, db_recno_t));
+int recno_display __P((DB *, char *));
+
+int
+main()
+{
+ DB *dbp;
+ DBT key, data;
+ DB_BTREE_STAT *statp;
+ FILE *fp;
+ db_recno_t recno;
+ u_int32_t len;
+ int cnt, ret;
+ char *p, *t, buf[1024], rbuf[1024];
+ const char *progname = "ex_btrec"; /* Program name. */
+
+ /* Open the word database. */
+ if ((fp = fopen(WORDLIST, "r")) == NULL) {
+ fprintf(stderr, "%s: open %s: %s\n",
+ progname, WORDLIST, db_strerror(errno));
+ return (1);
+ }
+
+ /* Remove the previous database. */
+ (void)remove(DATABASE);
+
+ /* Create and initialize database object, open the database. */
+ if ((ret = db_create(&dbp, NULL, 0)) != 0) {
+ fprintf(stderr,
+ "%s: db_create: %s\n", progname, db_strerror(ret));
+ return (1);
+ }
+ dbp->set_errfile(dbp, stderr);
+ dbp->set_errpfx(dbp, progname); /* 1K page sizes. */
+ if ((ret = dbp->set_pagesize(dbp, 1024)) != 0) {
+ dbp->err(dbp, ret, "set_pagesize");
+ return (1);
+ } /* Record numbers. */
+ if ((ret = dbp->set_flags(dbp, DB_RECNUM)) != 0) {
+ dbp->err(dbp, ret, "set_flags: DB_RECNUM");
+ return (1);
+ }
+ if ((ret = dbp->open(dbp,
+ NULL, DATABASE, NULL, DB_BTREE, DB_CREATE, 0664)) != 0) {
+ dbp->err(dbp, ret, "open: %s", DATABASE);
+ return (1);
+ }
+
+ /*
+ * Insert records into the database, where the key is the word
+ * preceded by its record number, and the data is the same, but
+ * in reverse order.
+ */
+ memset(&key, 0, sizeof(DBT));
+ memset(&data, 0, sizeof(DBT));
+ for (cnt = 1; cnt <= 1000; ++cnt) {
+ (void)sprintf(buf, "%04d_", cnt);
+ if (fgets(buf + 4, sizeof(buf) - 4, fp) == NULL)
+ break;
+ len = strlen(buf);
+ for (t = rbuf, p = buf + (len - 2); p >= buf;)
+ *t++ = *p--;
+ *t++ = '\0';
+
+ key.data = buf;
+ data.data = rbuf;
+ data.size = key.size = len - 1;
+
+ if ((ret =
+ dbp->put(dbp, NULL, &key, &data, DB_NOOVERWRITE)) != 0) {
+ dbp->err(dbp, ret, "DB->put");
+ if (ret != DB_KEYEXIST)
+ goto err1;
+ }
+ }
+
+ /* Close the word database. */
+ (void)fclose(fp);
+
+ /* Print out the number of records in the database. */
+ if ((ret = dbp->stat(dbp, NULL, &statp, 0)) != 0) {
+ dbp->err(dbp, ret, "DB->stat");
+ goto err1;
+ }
+ printf("%s: database contains %lu records\n",
+ progname, (u_long)statp->bt_ndata);
+ free(statp);
+
+ /*
+ * Prompt the user for a record number, then retrieve and display
+ * that record.
+ */
+ for (;;) {
+ /* Get a record number. */
+ printf("recno #> ");
+ fflush(stdout);
+ if (fgets(buf, sizeof(buf), stdin) == NULL)
+ break;
+ recno = atoi(buf);
+ rec_display(dbp, recno);
+ }
+
+ recno_display(dbp, "0007atoned");
+
+ if ((ret = dbp->close(dbp, 0)) != 0) {
+ fprintf(stderr,
+ "%s: DB->close: %s\n", progname, db_strerror(ret));
+ return (1);
+ }
+
+ return (0);
+
+err1: (void)dbp->close(dbp, 0);
+ return (ret);
+
+}])
+m4_indent([dnl
+int
+rec_display(dbp, recno)
+ DB *dbp;
+ db_recno_t recno;
+{
+ DBT key, data;
+ int ret;
+m4_blank
+ memset(&key, 0, sizeof(key));
+ key.data = &recno;
+ key.size = sizeof(recno);
+ memset(&data, 0, sizeof(data));
+m4_blank
+ if ((ret = dbp-__GT__get(dbp, NULL, &key, &data, DB_SET_RECNO)) != 0)
+ return (ret);
+ printf("data for %lu: %.*s\n",
+ (u_long)recno, (int)data.size, (char *)data.data);
+ return (0);
+}])
+m4_ignore([
+/*
+ * recno_display --
+ * Display the record number associated with a specific key.
+ */
+int
+recno_display(dbp, keyvalue)
+ DB *dbp;
+ char *keyvalue;
+{
+ DBC *dbcp;
+ DBT key, data;
+ db_recno_t recno;
+ int ret, t_ret;
+
+ /* Acquire a cursor for the database. */
+ if ((ret = dbp->cursor(dbp, NULL, &dbcp, 0)) != 0) {
+ dbp->err(dbp, ret, "DB->cursor");
+ goto err;
+ }
+
+ /* Position the cursor. */
+ memset(&key, 0, sizeof(key));
+ key.data = keyvalue;
+ key.size = strlen(keyvalue);
+ memset(&data, 0, sizeof(data));
+ if ((ret = dbcp->c_get(dbcp, &key, &data, DB_SET)) != 0) {
+ dbp->err(dbp, ret, "DBcursor->c_get(DB_SET): %s", keyvalue);
+ goto err;
+ }
+
+ /*
+ * Request the record number, and store it into appropriately
+ * sized and aligned local memory.
+ */
+ memset(&data, 0, sizeof(data));
+ data.data = &recno;
+ data.ulen = sizeof(recno);
+ data.flags = DB_DBT_USERMEM;
+ if ((ret = dbcp->c_get(dbcp, &key, &data, DB_GET_RECNO)) != 0) {
+ dbp->err(dbp, ret, "DBcursor->c_get(DB_GET_RECNO)");
+ goto err;
+ }
+
+ printf("key for requested key was %lu\n", (u_long)recno);
+
+err: /* Close the cursor. */
+ if ((t_ret = dbcp->c_close(dbcp)) != 0) {
+ if (ret == 0)
+ ret = t_ret;
+ dbp->err(dbp, ret, "DBcursor->close");
+ }
+ return (ret);
+}])
diff --git a/db/docs_src/ref/am_conf/bt_recnum2.cs b/db/docs_src/ref/am_conf/bt_recnum2.cs
new file mode 100644
index 000000000..5c1c3fb73
--- /dev/null
+++ b/db/docs_src/ref/am_conf/bt_recnum2.cs
@@ -0,0 +1,197 @@
+m4_ignore([
+#include <sys/types.h>
+
+#include <errno.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <db.h>
+
+#define DATABASE "access.db"
+#define WORDLIST "../test/wordlist"
+
+int rec_display __P((DB *, db_recno_t));
+int recno_display __P((DB *, char *));
+
+int
+main()
+{
+ DB *dbp;
+ DBT key, data;
+ DB_BTREE_STAT *statp;
+ FILE *fp;
+ db_recno_t recno;
+ u_int32_t len;
+ int cnt, ret;
+ char *p, *t, buf[1024], rbuf[1024];
+ const char *progname = "ex_btrec"; /* Program name. */
+
+ /* Open the word database. */
+ if ((fp = fopen(WORDLIST, "r")) == NULL) {
+ fprintf(stderr, "%s: open %s: %s\n",
+ progname, WORDLIST, db_strerror(errno));
+ return (1);
+ }
+
+ /* Remove the previous database. */
+ (void)remove(DATABASE);
+
+ /* Create and initialize database object, open the database. */
+ if ((ret = db_create(&dbp, NULL, 0)) != 0) {
+ fprintf(stderr,
+ "%s: db_create: %s\n", progname, db_strerror(ret));
+ return (1);
+ }
+ dbp->set_errfile(dbp, stderr);
+ dbp->set_errpfx(dbp, progname); /* 1K page sizes. */
+ if ((ret = dbp->set_pagesize(dbp, 1024)) != 0) {
+ dbp->err(dbp, ret, "set_pagesize");
+ return (1);
+ } /* Record numbers. */
+ if ((ret = dbp->set_flags(dbp, DB_RECNUM)) != 0) {
+ dbp->err(dbp, ret, "set_flags: DB_RECNUM");
+ return (1);
+ }
+ if ((ret = dbp->open(dbp,
+ NULL, DATABASE, NULL, DB_BTREE, DB_CREATE, 0664)) != 0) {
+ dbp->err(dbp, ret, "open: %s", DATABASE);
+ return (1);
+ }
+
+ /*
+ * Insert records into the database, where the key is the word
+ * preceded by its record number, and the data is the same, but
+ * in reverse order.
+ */
+ memset(&key, 0, sizeof(DBT));
+ memset(&data, 0, sizeof(DBT));
+ for (cnt = 1; cnt <= 1000; ++cnt) {
+ (void)sprintf(buf, "%04d_", cnt);
+ if (fgets(buf + 4, sizeof(buf) - 4, fp) == NULL)
+ break;
+ len = strlen(buf);
+ for (t = rbuf, p = buf + (len - 2); p >= buf;)
+ *t++ = *p--;
+ *t++ = '\0';
+
+ key.data = buf;
+ data.data = rbuf;
+ data.size = key.size = len - 1;
+
+ if ((ret =
+ dbp->put(dbp, NULL, &key, &data, DB_NOOVERWRITE)) != 0) {
+ dbp->err(dbp, ret, "DB->put");
+ if (ret != DB_KEYEXIST)
+ goto err1;
+ }
+ }
+
+ /* Close the word database. */
+ (void)fclose(fp);
+
+ /* Print out the number of records in the database. */
+ if ((ret = dbp->stat(dbp, NULL, &statp, 0)) != 0) {
+ dbp->err(dbp, ret, "DB->stat");
+ goto err1;
+ }
+ printf("%s: database contains %lu records\n",
+ progname, (u_long)statp->bt_ndata);
+ free(statp);
+
+ /*
+ * Prompt the user for a record number, then retrieve and display
+ * that record.
+ */
+ for (;;) {
+ /* Get a record number. */
+ printf("recno #> ");
+ fflush(stdout);
+ if (fgets(buf, sizeof(buf), stdin) == NULL)
+ break;
+ recno = atoi(buf);
+ rec_display(dbp, recno);
+ }
+
+ recno_display(dbp, "0007atoned");
+
+ if ((ret = dbp->close(dbp, 0)) != 0) {
+ fprintf(stderr,
+ "%s: DB->close: %s\n", progname, db_strerror(ret));
+ return (1);
+ }
+
+ return (0);
+
+err1: (void)dbp->close(dbp, 0);
+ return (ret);
+
+}
+int
+rec_display(dbp, recno)
+ DB *dbp;
+ db_recno_t recno;
+{
+ DBT key, data;
+ int ret;
+
+ memset(&key, 0, sizeof(key));
+ key.data = &recno;
+ key.size = sizeof(recno);
+ memset(&data, 0, sizeof(data));
+
+ if ((ret = dbp->get(dbp, NULL, &key, &data, DB_SET_RECNO)) != 0)
+ return (ret);
+ printf("data for %lu: %.*s\n",
+ (u_long)recno, (int)data.size, (char *)data.data);
+ return (0);
+}])
+m4_indent([dnl
+int
+recno_display(dbp, keyvalue)
+ DB *dbp;
+ char *keyvalue;
+{
+ DBC *dbcp;
+ DBT key, data;
+ db_recno_t recno;
+ int ret, t_ret;
+m4_blank
+ /* Acquire a cursor for the database. */
+ if ((ret = dbp-__GT__cursor(dbp, NULL, &dbcp, 0)) != 0) {
+ dbp-__GT__err(dbp, ret, "DB-__GT__cursor");
+ goto err;
+ }
+m4_blank
+ /* Position the cursor. */
+ memset(&key, 0, sizeof(key));
+ key.data = keyvalue;
+ key.size = strlen(keyvalue);
+ memset(&data, 0, sizeof(data));
+ if ((ret = dbcp-__GT__c_get(dbcp, &key, &data, DB_SET)) != 0) {
+ dbp-__GT__err(dbp, ret, "DBC-__GT__c_get(DB_SET): %s", keyvalue);
+ goto err;
+ }
+m4_blank
+ /*
+ * Request the record number, and store it into appropriately
+ * sized and aligned local memory.
+ */
+ memset(&data, 0, sizeof(data));
+ data.data = &recno;
+ data.ulen = sizeof(recno);
+ data.flags = DB_DBT_USERMEM;
+ if ((ret = dbcp-__GT__c_get(dbcp, &key, &data, DB_GET_RECNO)) != 0) {
+ dbp-__GT__err(dbp, ret, "DBC-__GT__c_get(DB_GET_RECNO)");
+ goto err;
+ }
+m4_blank
+ printf("key for requested key was %lu\n", (u_long)recno);
+m4_blank
+err: /* Close the cursor. */
+ if ((t_ret = dbcp-__GT__c_close(dbcp)) != 0) {
+ if (ret == 0)
+ ret = t_ret;
+ dbp-__GT__err(dbp, ret, "DBC-__GT__close");
+ }
+ return (ret);
+}])
diff --git a/db/docs_src/ref/am_conf/byteorder.so b/db/docs_src/ref/am_conf/byteorder.so
new file mode 100644
index 000000000..038cda1d4
--- /dev/null
+++ b/db/docs_src/ref/am_conf/byteorder.so
@@ -0,0 +1,29 @@
+m4_comment([$Id: byteorder.so,v 10.17 2001/02/15 22:21:13 bostic Exp $])
+
+m4_ref_title(Access Methods,
+ Selecting a byte order,
+ selecting a @byte order,
+ am_conf/cachesize, am_conf/dup)
+
+m4_p([dnl
+Database files created by m4_db can be created in either little- or
+big-endian formats. The byte order used for the underlying database
+is specified by calling the m4_refT(dbh_set_lorder). If no order
+is selected, the native format of the machine on which the database is
+created will be used.])
+
+m4_p([dnl
+m4_db databases are architecture independent, and any format database can
+be used on a machine with a different native format. In this case, as
+each page that is read into or written from the cache must be converted
+to or from the host format, and databases with non-native formats will
+incur a performance penalty for the run-time conversion.])
+
+m4_p([m4_bold([dnl
+It is important to note that the m4_db access methods do no data
+conversion for application specified data. Key/data pairs written on a
+little-endian format architecture will be returned to the application
+exactly as they were written when retrieved on a big-endian format
+architecture.])])
+
+m4_page_footer
diff --git a/db/docs_src/ref/am_conf/cachesize.so b/db/docs_src/ref/am_conf/cachesize.so
new file mode 100644
index 000000000..8a2036564
--- /dev/null
+++ b/db/docs_src/ref/am_conf/cachesize.so
@@ -0,0 +1,89 @@
+m4_comment([$Id: cachesize.so,v 10.20 2003/02/19 17:41:58 bostic Exp $])
+
+m4_ref_title(Access Methods,
+ Selecting a cache size,
+ selecting a @cache size,
+ am_conf/pagesize, am_conf/byteorder)
+
+m4_p([dnl
+The size of the cache used for the underlying database can be specified
+by calling the m4_refT(dbh_set_cachesize).
+Choosing a cache size is, unfortunately, an art. Your cache must be at
+least large enough for your working set plus some overlap for unexpected
+situations.])
+
+m4_p([dnl
+When using the Btree access method, you must have a cache big enough for
+the minimum working set for a single access. This will include a root
+page, one or more internal pages (depending on the depth of your tree),
+and a leaf page. If your cache is any smaller than that, each new page
+will force out the least-recently-used page, and m4_db will re-read the
+root page of the tree anew on each database request.])
+
+m4_p([dnl
+If your keys are of moderate size (a few tens of bytes) and your pages
+are on the order of 4KB to 8KB, most Btree applications will be only
+three levels. For example, using 20 byte keys with 20 bytes of data
+associated with each key, a 8KB page can hold roughly 400 keys (or 200
+key/data pairs), so a fully populated three-level Btree will hold 32
+million key/data pairs, and a tree with only a 50% page-fill factor will
+still hold 16 million key/data pairs. We rarely expect trees to exceed
+five levels, although m4_db will support trees up to 255 levels.])
+
+m4_p([dnl
+The rule-of-thumb is that cache is good, and more cache is better.
+Generally, applications benefit from increasing the cache size up to a
+point, at which the performance will stop improving as the cache size
+increases. When this point is reached, one of two things have happened:
+either the cache is large enough that the application is almost never
+having to retrieve information from disk, or, your application is doing
+truly random accesses, and therefore increasing size of the cache doesn't
+significantly increase the odds of finding the next requested information
+in the cache. The latter is fairly rare -- almost all applications show
+some form of locality of reference.])
+
+m4_p([dnl
+That said, it is important not to increase your cache size beyond the
+capabilities of your system, as that will result in reduced performance.
+Under many operating systems, tying down enough virtual memory will cause
+your memory and potentially your program to be swapped. This is
+especially likely on systems without unified OS buffer caches and virtual
+memory spaces, as the buffer cache was allocated at boot time and so
+cannot be adjusted based on application requests for large amounts of
+virtual memory.])
+
+m4_p([dnl
+For example, even if accesses are truly random within a Btree, your
+access pattern will favor internal pages to leaf pages, so your cache
+should be large enough to hold all internal pages. In the steady state,
+this requires at most one I/O per operation to retrieve the appropriate
+leaf page.])
+
+m4_p([dnl
+You can use the m4_ref(db_stat) utility to monitor the effectiveness of
+your cache. The following output is excerpted from the output of that
+utility's m4_option(m) option:])
+
+m4_indent([dnl
+prompt: db_stat -m
+131072 Cache size (128K).
+4273 Requested pages found in the cache (97%).
+134 Requested pages not found in the cache.
+18 Pages created in the cache.
+116 Pages read into the cache.
+93 Pages written from the cache to the backing file.
+5 Clean pages forced from the cache.
+13 Dirty pages forced from the cache.
+0 Dirty buffers written by trickle-sync thread.
+130 Current clean buffer count.
+4 Current dirty buffer count.
+])
+
+m4_p([dnl
+The statistics for this cache say that there have been 4,273 requests of
+the cache, and only 116 of those requests required an I/O from disk. This
+means that the cache is working well, yielding a 97% cache hit rate. The
+m4_ref(db_stat) utility will present these statistics both for the cache
+as a whole and for each file within the cache separately.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/am_conf/dup.so b/db/docs_src/ref/am_conf/dup.so
new file mode 100644
index 000000000..ee178b90d
--- /dev/null
+++ b/db/docs_src/ref/am_conf/dup.so
@@ -0,0 +1,76 @@
+m4_comment([$Id: dup.so,v 10.28 2003/10/18 19:15:54 bostic Exp $])
+
+m4_ref_title(Access Methods,
+ Duplicate data items,
+ @duplicate data items,
+ am_conf/byteorder, am_conf/malloc)
+
+m4_p([dnl
+The Btree and Hash access methods support the creation of multiple data
+items for a single key item. By default, multiple data items are not
+permitted, and each database store operation will overwrite any previous
+data item for that key. To configure m4_db for duplicate data items,
+call the m4_refT(dbh_set_flags) with the m4_ref(DB_DUP) flag. Only one
+copy of the key will be stored for each set of duplicate data items.
+If the Btree access method comparison routine returns that two keys
+compare equally, it is undefined which of the two keys will be stored
+and returned from future database operations.])
+
+m4_p([dnl
+By default, m4_db stores duplicates in the order in which they were added,
+that is, each new duplicate data item will be stored after any already
+existing data items. This default behavior can be overridden by using
+the m4_refT(dbc_put) and one of the m4_ref(DB_AFTER), m4_ref(DB_BEFORE)
+m4_ref(DB_KEYFIRST) or m4_ref(DB_KEYLAST) flags. Alternatively, m4_db
+may be configured to sort duplicate data items.])
+
+m4_p([dnl
+When stepping through the database sequentially, duplicate data items will
+be returned individually, as a key/data pair, where the key item only
+changes after the last duplicate data item has been returned. For this
+reason, duplicate data items cannot be accessed using the
+m4_refT(dbh_get), as it always returns the first of the duplicate data
+items. Duplicate data items should be retrieved using a m4_db cursor
+interface such as the m4_refT(dbc_get).])
+
+m4_p([dnl
+There is a flag that permits applications to request the following data
+item only if it m4_bold(is) a duplicate data item of the current entry,
+see m4_ref(DB_NEXT_DUP) for more information. There is a flag that
+permits applications to request the following data item only if it
+m4_bold(is not) a duplicate data item of the current entry, see
+m4_ref(DB_NEXT_NODUP) and m4_ref(DB_PREV_NODUP) for more information.])
+
+m4_p([dnl
+It is also possible to maintain duplicate records in sorted order. Sorting
+duplicates will significantly increase performance when searching them
+and performing equality joins, common operations when using secondary
+indices. To configure m4_db to sort duplicate data items, the application
+must call the m4_refT(dbh_set_flags) with the m4_ref(DB_DUPSORT) flag (in
+addition to the m4_ref(DB_DUP) flag). In addition, a custom comparison
+function may be specified using the m4_refT(dbh_set_dup_compare). If the
+m4_ref(DB_DUPSORT) flag is given, but no comparison routine is specified,
+then m4_db defaults to the same lexicographical sorting used for Btree
+keys, with shorter items collating before longer items.])
+
+m4_p([dnl
+If the duplicate data items are unsorted, applications may store identical
+duplicate data items, or, for those that just like the way it sounds,
+m4_italic(duplicate duplicates).])
+
+m4_p([dnl
+m4_bold([In this release it is an error to attempt to store identical
+duplicate data items when duplicates are being stored in a sorted order.])
+This restriction is expected to be lifted in a future release. There
+is a flag that permits applications to disallow storing duplicate data
+items when the database has been configured for sorted duplicates, see
+m4_ref(DB_NODUPDATA) for more information. Applications not wanting to
+permit duplicate duplicates in databases configured for sorted
+duplicates should begin using the m4_ref(DB_NODUPDATA) flag immediately.])
+
+m4_p([dnl
+For further information on how searching and insertion behaves in the
+presence of duplicates (sorted or not), see the m4_ref(dbh_get),
+m4_ref(dbh_put), m4_ref(dbc_get) and m4_ref(dbc_put) documentation.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/am_conf/extentsize.so b/db/docs_src/ref/am_conf/extentsize.so
new file mode 100644
index 000000000..6c57e2333
--- /dev/null
+++ b/db/docs_src/ref/am_conf/extentsize.so
@@ -0,0 +1,35 @@
+m4_comment([$Id: extentsize.so,v 1.3 2001/05/02 15:53:22 bostic Exp $])
+
+m4_ref_title(Access Methods,
+ Selecting a Queue extent size,
+ selecting a Queue @extent size,
+ am_conf/recno, am_conf/re_source)
+
+m4_p([dnl
+In Queue databases, records are allocated sequentially and directly
+mapped to an offset within the file storage for the database. As
+records are deleted from the Queue, pages will become empty and will
+not be reused in normal queue operations. To facilitate the reclamation
+of disk space a Queue may be partitioned into extents. Each extent is
+kept in a separate physical file.])
+
+m4_p([dnl
+Extent files are automatically created as needed and marked for deletion
+when the head of the queue moves off the extent. The extent will not
+be deleted until all processes close the extent. In addition, m4_db
+caches a small number of extents that have been recently used; this may
+delay when an extent will be deleted. The number of extents left open
+depends on queue activity.])
+
+m4_p([dnl
+The extent size specifies the number of pages that make up each extent.
+By default, if no extent size is specified, the Queue resides in a
+single file and disk space is not reclaimed. In choosing an extent size
+there is a tradeoff between the amount of disk space used and the
+overhead of creating and deleting files. If the extent size is too
+small, the system will pay a performance penalty, creating and deleting
+files frequently. In addition, if the active part of the queue spans
+many files, all those files will need to be open at the same time,
+consuming system and process file resources.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/am_conf/h_ffactor.so b/db/docs_src/ref/am_conf/h_ffactor.so
new file mode 100644
index 000000000..20046d3ec
--- /dev/null
+++ b/db/docs_src/ref/am_conf/h_ffactor.so
@@ -0,0 +1,22 @@
+m4_comment([$Id: h_ffactor.so,v 10.12 2001/04/18 13:44:53 bostic Exp $])
+
+m4_ref_title(Access Methods,
+ Page fill factor,
+ page @fill factor,
+ am_conf/bt_recnum, am_conf/h_hash)
+
+m4_p([dnl
+The density, or page fill factor, is an approximation of the number of
+keys allowed to accumulate in any one bucket, determining when the hash
+table grows or shrinks. If you know the average sizes of the keys and
+data in your data set, setting the fill factor can enhance performance.
+A reasonable rule to use to compute fill factor is:])
+
+m4_indent([(pagesize - 32) / (average_key_size + average_data_size + 8)])
+
+m4_p([dnl
+The desired density within the hash table can be specified by calling
+the m4_refT(dbh_set_h_ffactor). If no density is specified, one will
+be selected dynamically as pages are filled.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/am_conf/h_hash.so b/db/docs_src/ref/am_conf/h_hash.so
new file mode 100644
index 000000000..ce8f45f87
--- /dev/null
+++ b/db/docs_src/ref/am_conf/h_hash.so
@@ -0,0 +1,31 @@
+m4_comment([$Id: h_hash.so,v 10.12 2000/07/04 18:28:27 bostic Exp $])
+
+m4_ref_title(Access Methods,
+ Specifying a database hash,
+ specifying a database @hash,
+ am_conf/h_ffactor, am_conf/h_nelem)
+
+m4_p([dnl
+The database hash determines in which bucket a particular key will reside.
+The goal of hashing keys is to distribute keys equally across the database
+pages, therefore it is important that the hash function work well with
+the specified keys so that the resulting bucket usage is relatively
+uniform. A hash function that does not work well can effectively turn
+into a sequential list.])
+
+m4_p([dnl
+No hash performs equally well on all possible data sets. It is possible
+that applications may find that the default hash function performs poorly
+with a particular set of keys. The distribution resulting from the hash
+function can be checked using m4_ref(db_stat) utility. By comparing the
+number of hash buckets and the number of keys, one can decide if the entries
+are hashing in a well-distributed manner.])
+
+m4_p([dnl
+The hash function for the hash table can be specified by calling the
+m4_refT(dbh_set_h_hash). If no hash function is specified, a default
+function will be used. Any application-specified hash function must
+take a reference to a m4_ref(Db) object, a pointer to a byte string and
+its length, as arguments and return an unsigned, 32-bit hash value.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/am_conf/h_nelem.so b/db/docs_src/ref/am_conf/h_nelem.so
new file mode 100644
index 000000000..be8e75b6a
--- /dev/null
+++ b/db/docs_src/ref/am_conf/h_nelem.so
@@ -0,0 +1,20 @@
+m4_comment([$Id: h_nelem.so,v 10.12 2000/03/18 21:43:08 bostic Exp $])
+
+m4_ref_title(Access Methods,
+ Hash table size, @hash table size, am_conf/h_hash, am_conf/recno)
+
+m4_p([dnl
+When setting up the hash database, knowing the expected number of elements
+that will be stored in the hash table is useful. This value can be used
+by the Hash access method implementation to more accurately construct the
+necessary number of buckets that the database will eventually require.])
+
+m4_p([dnl
+The anticipated number of elements in the hash table can be specified by
+calling the m4_refT(dbh_set_h_nelem). If not specified, or set too low,
+hash tables will expand gracefully as keys are entered, although a slight
+performance degradation may be noticed. In order for the estimated number
+of elements to be a useful value to m4_db, the m4_refT(dbh_set_h_ffactor)
+must also be called to set the page fill factor.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/am_conf/intro.so b/db/docs_src/ref/am_conf/intro.so
new file mode 100644
index 000000000..ebfb925df
--- /dev/null
+++ b/db/docs_src/ref/am_conf/intro.so
@@ -0,0 +1,40 @@
+m4_comment([$Id: intro.so,v 10.25 2004/09/17 19:51:50 bostic Exp $])
+
+m4_ref_title(Access Methods,
+ What are the available access methods?,
+ introduction to the @access methods, intro/products, am_conf/select)
+
+m4_p([dnl
+m4_db currently offers four access methods: Btree, Hash, Queue and Recno.])
+
+m4_section(Btree)
+m4_p([dnl
+The Btree access method is an implementation of a sorted, balanced tree
+structure. Searches, insertions, and deletions in the tree all take O(log
+base_b N) time, where base_b is the average number of keys per page, and
+N is the total number of keys stored. Often, inserting ordered data into
+Btree implementations results in pages that are only half-full. m4_db
+makes ordered (or inverse ordered) insertion the best case, resulting in
+nearly full-page space utilization.])
+
+m4_section(Hash)
+m4_p([dnl
+The Hash access method data structure is an implementation of Extended
+Linear Hashing, as described in "Linear Hashing: A New Tool for File and
+Table Addressing", Witold Litwin, m4_italic([Proceedings of the 6th
+International Conference on Very Large Databases (VLDB)]), 1980.])
+
+m4_section(Queue)
+m4_p([dnl
+The Queue access method stores fixed-length records with logical record
+numbers as keys. It is designed for fast inserts at the tail and has a
+special cursor consume operation that deletes and returns a record from
+the head of the queue. The Queue access method uses record level locking.])
+
+m4_section(Recno)
+m4_p([dnl
+The Recno access method stores both fixed and variable-length records with
+logical record numbers as keys, optionally backed by a flat text (byte
+stream) file.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/am_conf/logrec.cs b/db/docs_src/ref/am_conf/logrec.cs
new file mode 100644
index 000000000..bbabe4ded
--- /dev/null
+++ b/db/docs_src/ref/am_conf/logrec.cs
@@ -0,0 +1,103 @@
+m4_ignore([dnl
+#include <sys/types.h>
+
+#include <stdlib.h>
+#include <string.h>
+
+#include <db.h>
+
+#define DATABASE "access.db"
+#define progname "t"
+
+int recno_build(DB *);
+
+int
+main()
+{
+ DB *dbp;
+ int ret;
+
+ /* Remove the previous database. */
+ (void)remove(DATABASE);
+
+ /* Create and initialize database object, open the database. */
+ if ((ret = db_create(&dbp, NULL, 0)) != 0) {
+ fprintf(stderr,
+ "%s: db_create: %s\n", progname, db_strerror(ret));
+ return (1);
+ }
+ dbp->set_errfile(dbp, stderr);
+ dbp->set_errpfx(dbp, progname);
+ if ((ret = dbp->open(dbp,
+ NULL, DATABASE, NULL, DB_RECNO, DB_CREATE, 0664)) != 0) {
+ dbp->err(dbp, ret, "%s: open", DATABASE);
+ return (1);
+ }
+
+ (void)recno_build(dbp);
+
+ return (0);
+}])
+
+m4_indent([dnl
+int
+recno_build(dbp)
+ DB *dbp;
+{
+ DBC *dbcp;
+ DBT key, data;
+ db_recno_t recno;
+ u_int32_t len;
+ int ret;
+ char buf__LB__1024__RB__;
+m4_blank
+ /* Insert records into the database. */
+ memset(&key, 0, sizeof(DBT));
+ memset(&data, 0, sizeof(DBT));
+ for (recno = 1;; ++recno) {
+ printf("record #%lu__GT__ ", (u_long)recno);
+ fflush(stdout);
+ if (fgets(buf, sizeof(buf), stdin) == NULL)
+ break;
+ if ((len = strlen(buf)) __LT__= 1)
+ continue;
+m4_blank
+ key.data = &recno;
+ key.size = sizeof(recno);
+ data.data = buf;
+ data.size = len - 1;
+m4_blank
+ switch (ret = dbp-__GT__put(dbp, NULL, &key, &data, 0)) {
+ case 0:
+ break;
+ default:
+ dbp-__GT__err(dbp, ret, "DB-__GT__put");
+ break;
+ }
+ }
+ printf("\n");
+m4_blank
+ /* Acquire a cursor for the database. */
+ if ((ret = dbp-__GT__cursor(dbp, NULL, &dbcp, 0)) != 0) {
+ dbp-__GT__err(dbp, ret, "DB-__GT__cursor");
+ return (1);
+ }
+m4_blank
+ /* Re-initialize the key/data pair. */
+ memset(&key, 0, sizeof(key));
+ memset(&data, 0, sizeof(data));
+m4_blank
+ /* Walk through the database and print out the key/data pairs. */
+ while ((ret = dbcp-__GT__c_get(dbcp, &key, &data, DB_NEXT)) == 0)
+ printf("%lu : %.*s\n",
+ *(u_long *)key.data, (int)data.size, (char *)data.data);
+ if (ret != DB_NOTFOUND)
+ dbp-__GT__err(dbp, ret, "DBcursor-__GT__get");
+m4_blank
+ /* Close the cursor. */
+ if ((ret = dbcp-__GT__c_close(dbcp)) != 0) {
+ dbp-__GT__err(dbp, ret, "DBcursor-__GT__close");
+ return (1);
+ }
+ return (0);
+}])
diff --git a/db/docs_src/ref/am_conf/logrec.so b/db/docs_src/ref/am_conf/logrec.so
new file mode 100644
index 000000000..bfe41a336
--- /dev/null
+++ b/db/docs_src/ref/am_conf/logrec.so
@@ -0,0 +1,62 @@
+m4_comment([$Id: logrec.so,v 10.31 2004/08/05 14:16:56 bostic Exp $])
+
+m4_ref_title(Access Methods,
+ Logical record numbers,
+ logical @record numbers,
+ am_conf/select, am_conf/pagesize)
+
+m4_p([dnl
+The m4_db Btree, Queue and Recno access methods can operate on logical
+record numbers. Record numbers are 1-based, not 0-based, that is, the
+first record in a database is record number 1.])
+
+m4_p([dnl
+In all cases for the Queue and Recno access methods, and when calling
+the Btree access method using the m4_ref(dbh_get) and m4_refT(dbc_get)s
+with the m4_ref(DB_SET_RECNO) flag specified, the m4_arg(data) field of
+the key m4_ref(Dbt) must be a pointer to a memory location of type
+m4_arg(db_recno_t), as typedef'd in the standard m4_db include file.
+The m4_arg(size) field of the key m4_ref(Dbt) should be the size of that
+type (for example, "sizeof(db_recno_t)" in the C programming language).
+The m4_arg(db_recno_t) type is a 32-bit unsigned type, which limits the
+number of logical records in a Queue or Recno database, and the maximum
+logical record which may be directly retrieved from a Btree database,
+to 4,294,967,295.])
+
+m4_p([dnl
+Record numbers in Recno databases can be configured to run in either
+mutable or fixed mode: mutable, where logical record numbers change as
+records are deleted or inserted, and fixed, where record numbers never
+change regardless of the database operation. Record numbers in Queue
+databases are always fixed, and never change regardless of the database
+operation. Record numbers in Btree databases are always mutable, and
+as records are deleted or inserted, the logical record number for other
+records in the database can change. See
+m4_link(M4RELDIR/ref/am_conf/renumber, Logically renumbering records)
+for more information.])
+
+m4_p([dnl
+When appending new data items into Queue databases, record numbers wrap
+around. When the tail of the queue reaches the maximum record number,
+the next record appended will be given record number 1. If the head of
+the queue ever catches up to the tail of the queue, m4_db will return
+the system error EFBIG. Record numbers do not wrap around when appending
+new data items into Recno databases.])
+
+m4_p([dnl
+Configuring Btree databases to support record numbers can severely limit
+the throughput of applications with multiple concurrent threads writing
+the database, because locations used to store record counts often become
+hot spots that many different threads all need to update. In the case
+of a Btree supporting duplicate data items, the logical record number
+refers to a key and all of its data items, as duplicate data items are
+not individually numbered.])
+
+m4_p([dnl
+The following is an example function that reads records from standard
+input and stores them into a Recno database. The function then uses a
+cursor to step through the database and display the stored records.])
+
+include(ref/am_conf/logrec.cs)
+
+m4_page_footer
diff --git a/db/docs_src/ref/am_conf/malloc.so b/db/docs_src/ref/am_conf/malloc.so
new file mode 100644
index 000000000..8633160da
--- /dev/null
+++ b/db/docs_src/ref/am_conf/malloc.so
@@ -0,0 +1,21 @@
+m4_comment([$Id: malloc.so,v 10.20 2001/04/03 16:27:58 bostic Exp $])
+
+m4_ref_title(Access Methods,
+ Non-local memory allocation,, am_conf/dup, am_conf/bt_compare)
+
+m4_p([dnl
+m4_db allocates memory for returning key/data pairs and statistical
+information which becomes the responsibility of the application.
+There are also interfaces where an application will allocate memory
+which becomes the responsibility of m4_db.])
+
+m4_p([dnl
+On systems in which there may be multiple library versions of the
+standard allocation routines (notably Windows NT), transferring memory
+between the library and the application will fail because the m4_db
+library allocates memory from a different heap than the application
+uses to free it, or vice versa. To avoid this problem, the
+m4_ref(dbenv_set_alloc) and m4_refT(dbh_set_alloc)s can be used to
+give m4_db references to the application's allocation routines.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/am_conf/pagesize.so b/db/docs_src/ref/am_conf/pagesize.so
new file mode 100644
index 000000000..bda245152
--- /dev/null
+++ b/db/docs_src/ref/am_conf/pagesize.so
@@ -0,0 +1,79 @@
+m4_comment([$Id: pagesize.so,v 10.22 2002/02/11 14:55:53 bostic Exp $])
+
+m4_ref_title(Access Methods,
+ Selecting a page size,
+ selecting a @page size,
+ am_conf/logrec, am_conf/cachesize)
+
+m4_p([dnl
+The size of the pages used in the underlying database can be specified by
+calling the m4_refT(dbh_set_pagesize). The minimum page size is 512 bytes
+and the maximum page size is 64K bytes, and must be a power of two. If
+no page size is specified by the application, a page size is selected
+based on the underlying filesystem I/O block size. (A page size selected
+in this way has a lower limit of 512 bytes and an upper limit of 16K
+bytes.)])
+
+m4_p([dnl
+There are several issues to consider when selecting a pagesize: overflow
+record sizes, locking, I/O efficiency, and recoverability.])
+
+m4_p([dnl
+First, the page size implicitly sets the size of an overflow record.
+Overflow records are key or data items that are too large to fit on a
+normal database page because of their size, and are therefore stored in
+overflow pages. Overflow pages are pages that exist outside of the normal
+database structure. For this reason, there is often a significant
+performance penalty associated with retrieving or modifying overflow
+records. Selecting a page size that is too small, and which forces the
+creation of large numbers of overflow pages, can seriously impact the
+performance of an application.])
+
+m4_p([dnl
+Second, in the Btree, Hash and Recno access methods, the finest-grained
+lock that m4_db acquires is for a page. (The Queue access method
+generally acquires record-level locks rather than page-level locks.)
+Selecting a page size that is too large, and which causes threads or
+processes to wait because other threads of control are accessing or
+modifying records on the same page, can impact the performance of your
+application.])
+
+m4_p([dnl
+Third, the page size specifies the granularity of I/O from the database
+to the operating system. m4_db will give a page-sized unit of bytes to
+the operating system to be scheduled for reading/writing from/to the
+disk. For many operating systems, there is an internal m4_bold(block
+size) which is used as the granularity of I/O from the operating system
+to the disk. Generally, it will be more efficient for m4_db to write
+filesystem-sized blocks to the operating system and for the operating
+system to write those same blocks to the disk.])
+
+m4_p([dnl
+Selecting a database page size smaller than the filesystem block size
+may cause the operating system to coalesce or otherwise manipulate m4_db
+pages and can impact the performance of your application. When the page
+size is smaller than the filesystem block size and a page written by
+m4_db is not found in the operating system's cache, the operating system
+may be forced to read a block from the disk, copy the page into the
+block it read, and then write out the block to disk, rather than simply
+writing the page to disk. Additionally, as the operating system is
+reading more data into its buffer cache than is strictly necessary to
+satisfy each m4_db request for a page, the operating system buffer cache
+may be wasting memory.])
+
+m4_p([dnl
+Alternatively, selecting a page size larger than the filesystem block
+size may cause the operating system to read more data than necessary.
+On some systems, reading filesystem blocks sequentially may cause the
+operating system to begin performing read-ahead. If requesting a single
+database page implies reading enough filesystem blocks to satisfy the
+operating system's criteria for read-ahead, the operating system may do
+more I/O than is required.])
+
+m4_p([dnl
+Fourth, when using the m4_tam product, the page size may affect the errors
+from which your database can recover See
+m4_link(M4RELDIR/ref/transapp/reclimit, [m4_db Recoverability]) for more
+information.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/am_conf/re_source.so b/db/docs_src/ref/am_conf/re_source.so
new file mode 100644
index 000000000..2def24f57
--- /dev/null
+++ b/db/docs_src/ref/am_conf/re_source.so
@@ -0,0 +1,59 @@
+m4_comment([$Id: re_source.so,v 10.16 2003/10/18 19:15:55 bostic Exp $])
+
+m4_ref_title(Access Methods,
+ Flat-text backing files,
+ @text backing files, am_conf/extentsize, am_conf/renumber)
+
+m4_p([dnl
+It is possible to back any Recno database (either fixed or variable
+length) with a flat-text source file. This provides fast read (and
+potentially write) access to databases that are normally created and
+stored as flat-text files. The backing source file may be specified by
+calling the m4_refT(dbh_set_re_source).])
+
+m4_p([dnl
+The backing source file will be read to initialize the database. In the
+case of variable length records, the records are assumed to be separated
+as described for the m4_refT(dbh_set_re_delim). For example, standard
+UNIX byte stream files can be interpreted as a sequence of variable
+length records separated by ASCII newline characters. This is the
+default.])
+
+m4_p([dnl
+When cached data would normally be written back to the underlying
+database file (for example, when the m4_ref(dbh_close) or
+m4_refT(dbh_sync)s are called), the in-memory copy of the database will
+be written back to the backing source file.])
+
+m4_p([dnl
+The backing source file must already exist (but may be zero-length) when
+m4_ref(dbh_open) is called. By default, the backing source file is read
+lazily, that is, records are not read from the backing source file until
+they are requested by the application. If multiple processes (not
+threads) are accessing a Recno database concurrently and either
+inserting or deleting records, the backing source file must be read in
+its entirety before more than a single process accesses the database,
+and only that process should specify the backing source file as part of
+the m4_ref(dbh_open) call. This can be accomplished by calling the
+m4_refT(dbh_set_flags) with the m4_ref(DB_SNAPSHOT) flag.])
+
+m4_p([dnl
+Reading and writing the backing source file cannot be transactionally
+protected because it involves filesystem operations that are not part of
+the m4_db transaction methodology. For this reason, if a temporary
+database is used to hold the records (a NULL was specified as the file
+argument to m4_ref(dbh_open)), m4_bold([it is possible to lose the
+contents of the backing source file if the system crashes at the right
+instant]). If a permanent file is used to hold the database (a filename
+was specified as the file argument to m4_ref(dbh_open)), normal database
+recovery on that file can be used to prevent information loss. It is
+still possible that the contents of the backing source file itself will
+be corrupted or lost if the system crashes.])
+
+m4_p([dnl
+For all of the above reasons, the backing source file is generally used
+to specify databases that are read-only for m4_db applications, and that
+are either generated on the fly by software tools, or modified using a
+different mechanism such as a text editor.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/am_conf/recno.so b/db/docs_src/ref/am_conf/recno.so
new file mode 100644
index 000000000..bcaad410f
--- /dev/null
+++ b/db/docs_src/ref/am_conf/recno.so
@@ -0,0 +1,70 @@
+m4_comment([$Id: recno.so,v 11.11 2003/10/18 19:15:55 bostic Exp $])
+
+m4_ref_title(Access Methods,
+ Managing record-based databases,
+ managing @record-based databases,
+ am_conf/h_nelem, am_conf/extentsize)
+
+m4_p([dnl
+When using fixed- or variable-length record-based databases, particularly
+with flat-text backing files, there are several items that the user can
+control. The Recno access method can be used to store either variable-
+or fixed-length data items. By default, the Recno access method stores
+variable-length data items. The Queue access method can only store
+fixed-length data items.])
+
+m4_section(Record Delimiters)
+
+m4_p([dnl
+When using the Recno access method to store variable-length records,
+records read from any backing source file are separated by a specific
+byte value which marks the end of one record and the beginning of the
+next. This delimiting value is ignored except when reading records from
+a backing source file, that is, records may be stored into the database
+that include the delimiter byte. However, if such records are written
+out to the backing source file and the backing source file is
+subsequently read into a database, the records will be split where
+delimiting bytes were found.])
+
+m4_p([dnl
+For example, UNIX text files can usually be interpreted as a sequence of
+variable-length records separated by ASCII newline characters. This byte
+value (ASCII 0x0a) is the default delimiter. Applications may specify a
+different delimiting byte using the m4_refT(dbh_set_re_delim). If no
+backing source file is being used, there is no reason to set the
+delimiting byte value.])
+
+m4_section(Record Length)
+
+m4_p([dnl
+When using the Recno or Queue access methods to store fixed-length
+records, the record length must be specified. Since the Queue access
+method always uses fixed-length records, the user must always set the
+record length prior to creating the database. Setting the record length
+is what causes the Recno access method to store fixed-length, not
+variable-length, records.])
+
+m4_p([dnl
+The length of the records is specified by calling the
+m4_refT(dbh_set_re_len). The default length of the records is 0 bytes.
+Any record read from a backing source file or otherwise stored in the
+database that is shorter than the declared length will automatically be
+padded as described for the m4_refT(dbh_set_re_pad). Any record stored
+that is longer than the declared length results in an error. For
+further information on backing source files, see
+m4_link(M4RELDIR/ref/am_conf/re_source, Flat-text backing files).])
+
+m4_section(Record Padding Byte Value)
+
+m4_p([dnl
+When storing fixed-length records in a Queue or Recno database, a pad
+character may be specified by calling the m4_refT(dbh_set_re_pad). Any
+record read from the backing source file or otherwise stored in the
+database that is shorter than the expected length will automatically be
+padded with this byte value. If fixed-length records are specified but
+no pad value is specified, a space character (0x20 in the ASCII
+character set) will be used. For further information on backing source
+files, see m4_link(M4RELDIR/ref/am_conf/re_source, Flat-text backing
+files).])
+
+m4_page_footer
diff --git a/db/docs_src/ref/am_conf/renumber.so b/db/docs_src/ref/am_conf/renumber.so
new file mode 100644
index 000000000..b4c62fc68
--- /dev/null
+++ b/db/docs_src/ref/am_conf/renumber.so
@@ -0,0 +1,76 @@
+m4_comment([$Id: renumber.so,v 10.26 2003/10/18 19:15:55 bostic Exp $])
+
+m4_ref_title(Access Methods,
+ Logically renumbering records,
+ logically renumbering @records,
+ am_conf/re_source, am/ops)
+
+m4_p([dnl
+Records stored in the Queue and Recno access methods are accessed by
+logical record number. In all cases in Btree databases, and optionally
+in Recno databases (see the m4_refT(dbh_set_flags) and the
+m4_ref(DB_RENUMBER) flag for more information), record numbers are
+mutable. This means that the record numbers may change as records are
+added to and deleted from the database. The deletion of record number
+4 causes any records numbered 5 and higher to be renumbered downward by
+1; the addition of a new record after record number 4 causes any
+records numbered 5 and higher to be renumbered upward by 1. In all
+cases in Queue databases, and by default in Recno databases, record
+numbers are not mutable, and the addition or deletion of records to the
+database will not cause already-existing record numbers to change. For
+this reason, new records cannot be inserted between already-existing
+records in databases with immutable record numbers.])
+
+m4_p([dnl
+Cursors pointing into a Btree database or a Recno database with mutable
+record numbers maintain a reference to a specific record, rather than
+a record number, that is, the record they reference does not change as
+other records are added or deleted. For example, if a database contains
+three records with the record numbers 1, 2, and 3, and the data items
+"A", "B", and "C", respectively, the deletion of record number 2 ("B")
+will cause the record "C" to be renumbered downward to record number 2.
+A cursor positioned at record number 3 ("C") will be adjusted and
+continue to point to "C" after the deletion. Similarly, a cursor
+previously referring to the now deleted record number 2 will be
+positioned between the new record numbers 1 and 2, and an insertion
+using that cursor will appear between those records. In this manner
+records can be added and deleted to a database without disrupting the
+sequential traversal of the database by a cursor.])
+
+m4_p([dnl
+Only cursors created using a single m4_ref(Db) handle can adjust each
+other's position in this way, however. If multiple m4_ref(Db) handles
+have a renumbering Recno database open simultaneously (as when multiple
+processes share a single database environment), a record referred to by
+one cursor could change underfoot if a cursor created using another
+m4_ref(Db) handle inserts or deletes records into the database. For
+this reason, applications using Recno databases with mutable record
+numbers will usually make all accesses to the database using a single
+m4_ref(Db) handle and cursors created from that handle, or will
+otherwise single-thread access to the database, for example, by using
+the m4_cam product.])
+
+m4_p([dnl
+In any Queue or Recno databases, creating new records will cause the
+creation of multiple records if the record number being created is more
+than one greater than the largest record currently in the database. For
+example, creating record number 28, when record 25 was previously the
+last record in the database, will implicitly create records 26 and 27
+as well as 28. All first, last, next and previous cursor operations
+will automatically skip over these implicitly created records. So, if
+record number 5 is the only record the application has created,
+implicitly creating records 1 through 4, the m4_refT(dbc_get) with the
+m4_ref(DB_FIRST) flag will return record number 5, not record number 1.
+Attempts to explicitly retrieve implicitly created records by their
+record number will result in a special error return,
+m4_ref(DB_KEYEMPTY).])
+
+m4_p([dnl
+In any m4_db database, attempting to retrieve a deleted record, using
+a cursor positioned on the record, results in a special error return,
+m4_ref(DB_KEYEMPTY). In addition, when using Queue databases or Recno
+databases with immutable record numbers, attempting to retrieve a deleted
+record by its record number will also result in the m4_ref(DB_KEYEMPTY)
+return.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/am_conf/select.so b/db/docs_src/ref/am_conf/select.so
new file mode 100644
index 000000000..98ce37309
--- /dev/null
+++ b/db/docs_src/ref/am_conf/select.so
@@ -0,0 +1,129 @@
+m4_comment([$Id: select.so,v 10.25 2001/03/31 17:06:27 bostic Exp $])
+
+m4_ref_title(Access Methods,
+ Selecting an access method,
+ selecting an @access method,
+ am_conf/intro, am_conf/logrec)
+
+m4_p([dnl
+The m4_db access method implementation unavoidably interacts with each
+application's data set, locking requirements and data access patterns.
+For this reason, one access method may result in dramatically better
+performance for an application than another one. Applications whose data
+could be stored using more than one access method may want to benchmark
+their performance using the different candidates.])
+
+m4_p([dnl
+One of the strengths of m4_db is that it provides multiple access methods
+with nearly identical interfaces to the different access methods. This
+means that it is simple to modify an application to use a different access
+method. Applications can easily benchmark the different m4_db access
+methods against each other for their particular data set and access pattern.])
+
+m4_p([dnl
+Most applications choose between using the Btree or Hash access methods
+or between using the Queue and Recno access methods, because each of the
+two pairs offer similar functionality.])
+
+m4_section(Hash or Btree?)
+
+m4_p([dnl
+The Hash and Btree access methods should be used when logical record
+numbers are not the primary key used for data access. (If logical record
+numbers are a secondary key used for data access, the Btree access method
+is a possible choice, as it supports simultaneous access by a key and a
+record number.)])
+
+m4_p([dnl
+Keys in Btrees are stored in sorted order and the relationship between
+them is defined by that sort order. For this reason, the Btree access
+method should be used when there is any locality of reference among keys.
+Locality of reference means that accessing one particular key in the
+Btree implies that the application is more likely to access keys near to
+the key being accessed, where "near" is defined by the sort order. For
+example, if keys are timestamps, and it is likely that a request for an
+8AM timestamp will be followed by a request for a 9AM timestamp, the
+Btree access method is generally the right choice. Or, for example, if
+the keys are names, and the application will want to review all entries
+with the same last name, the Btree access method is again a good choice.])
+
+m4_p([dnl
+There is little difference in performance between the Hash and Btree
+access methods on small data sets, where all, or most of, the data set
+fits into the cache. However, when a data set is large enough that
+significant numbers of data pages no longer fit into the cache, then
+the Btree locality of reference described previously becomes important
+for performance reasons. For example, there is no locality of reference
+for the Hash access method, and so key "AAAAA" is as likely to be stored
+on the same database page with key "ZZZZZ" as with key "AAAAB". In the
+Btree access method, because items are sorted, key "AAAAA" is far more
+likely to be near key "AAAAB" than key "ZZZZZ". So, if the application
+exhibits locality of reference in its data requests, then the Btree page
+read into the cache to satisfy a request for key "AAAAA" is much more
+likely to be useful to satisfy subsequent requests from the application
+than the Hash page read into the cache to satisfy the same request.
+This means that for applications with locality of reference, the cache
+is generally much more effective for the Btree access method than the
+Hash access method, and the Btree access method will make many fewer
+I/O calls.])
+
+m4_p([dnl
+However, when a data set becomes even larger, the Hash access method can
+outperform the Btree access method. The reason for this is that Btrees
+contain more metadata pages than Hash databases. The data set can grow
+so large that metadata pages begin to dominate the cache for the Btree
+access method. If this happens, the Btree can be forced to do an I/O
+for each data request because the probability that any particular data
+page is already in the cache becomes quite small. Because the Hash access
+method has fewer metadata pages, its cache stays "hotter" longer in the
+presence of large data sets. In addition, once the data set is so large
+that both the Btree and Hash access methods are almost certainly doing
+an I/O for each random data request, the fact that Hash does not have to
+walk several internal pages as part of a key search becomes a performance
+advantage for the Hash access method as well.])
+
+m4_p([dnl
+Application data access patterns strongly affect all of these behaviors,
+for example, accessing the data by walking a cursor through the database
+will greatly mitigate the large data set behavior describe above because
+each I/O into the cache will satisfy a fairly large number of subsequent
+data requests.])
+
+m4_p([dnl
+In the absence of information on application data and data access
+patterns, for small data sets either the Btree or Hash access methods
+will suffice. For data sets larger than the cache, we normally recommend
+using the Btree access method. If you have truly large data, then the
+Hash access method may be a better choice. The m4_ref(db_stat) utility
+is a useful tool for monitoring how well your cache is performing.])
+
+m4_section(Queue or Recno?)
+
+m4_p([dnl
+The Queue or Recno access methods should be used when logical record
+numbers are the primary key used for data access. The advantage of the
+Queue access method is that it performs record level locking and for this
+reason supports significantly higher levels of concurrency than the Recno
+access method. The advantage of the Recno access method is that it
+supports a number of additional features beyond those supported by the
+Queue access method, such as variable-length records and support for
+backing flat-text files.])
+
+m4_p([dnl
+Logical record numbers can be mutable or fixed: mutable, where logical
+record numbers can change as records are deleted or inserted, and fixed,
+where record numbers never change regardless of the database operation.
+It is possible to store and retrieve records based on logical record
+numbers in the Btree access method. However, those record numbers are
+always mutable, and as records are deleted or inserted, the logical record
+number for other records in the database will change. The Queue access
+method always runs in fixed mode, and logical record numbers never change
+regardless of the database operation. The Recno access method can be
+configured to run in either mutable or fixed mode.])
+
+m4_p([dnl
+In addition, the Recno access method provides support for databases whose
+permanent storage is a flat text file and the database is used as a fast,
+temporary storage area while the data is being read or modified.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/am_misc/align.so b/db/docs_src/ref/am_misc/align.so
new file mode 100644
index 000000000..bc00661a1
--- /dev/null
+++ b/db/docs_src/ref/am_misc/align.so
@@ -0,0 +1,14 @@
+m4_comment([$Id: align.so,v 1.4 2001/05/28 00:30:40 bostic Exp $])
+
+m4_ref_title(Access Methods,
+ Data alignment, data @alignment, am/curclose, am_misc/get_bulk)
+
+m4_p([dnl
+The m4_db access methods provide no guarantees about byte alignment for
+returned key/data pairs, or callback functions which take m4_ref(Dbt)
+references as arguments, and applications are responsible for arranging
+any necessary alignment. The m4_ref(DB_DBT_MALLOC),
+m4_ref(DB_DBT_REALLOC) and m4_ref(DB_DBT_USERMEM) flags may be used to
+store returned items in memory of arbitrary alignment.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/am_misc/dbsizes.so b/db/docs_src/ref/am_misc/dbsizes.so
new file mode 100644
index 000000000..83aba4532
--- /dev/null
+++ b/db/docs_src/ref/am_misc/dbsizes.so
@@ -0,0 +1,38 @@
+m4_comment([$Id: dbsizes.so,v 10.27 2005/02/24 20:51:50 bostic Exp $])
+
+m4_ref_title(Access Methods,
+ Database limits, database @limits, am_misc/stability, am_misc/diskspace)
+
+m4_p([dnl
+The largest database file that m4_db can handle depends on the page size
+selected by the application. m4_db stores database file page numbers as
+unsigned 32-bit numbers and database file page sizes as unsigned 16-bit
+numbers. Using the maximum database page size of 65536, this results in
+a maximum database file size of m4_sup(2, 48) (256 terabytes). The
+minimum database page size is 512 bytes, which results in a minimum
+maximum database size of m4_sup(2, 41) (2 terabytes).])
+
+m4_p([dnl
+The largest database file m4_db can support is potentially further limited
+if the host system does not have filesystem support for files larger than
+m4_sup(2, 32), including the ability to seek to absolute offsets within
+those files.])
+
+m4_p([dnl
+The largest key or data item that m4_db can support is m4_sup(2, 32),
+or more likely limited by available memory. Specifically, while key and
+data byte strings may be of essentially unlimited length, any one of
+them must fit into available memory so that it can be returned to the
+application. As some of the m4_db interfaces return both key and data
+items to the application, those interfaces will require that any
+key/data pair fit simultaneously into memory. Further, as the access
+methods may need to compare key and data items with other key and data
+items, it may be a requirement that any two key or two data items fit
+into available memory. Finally, when writing applications supporting
+transactions, it may be necessary to have an additional copy of any data
+item in memory for logging purposes.])
+
+m4_p([dnl
+The maximum Btree depth is 255.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/am_misc/diskspace.so b/db/docs_src/ref/am_misc/diskspace.so
new file mode 100644
index 000000000..2ded2e9ff
--- /dev/null
+++ b/db/docs_src/ref/am_misc/diskspace.so
@@ -0,0 +1,190 @@
+m4_comment([$Id: diskspace.so,v 10.17 2002/08/09 13:43:47 bostic Exp $])
+
+m4_ref_title(Access Methods, Disk space requirements,
+ @disk space requirements, am_misc/dbsizes, am_misc/tune)
+
+m4_p([dnl
+It is possible to estimate the total database size based on the size of
+the data. The following calculations are an estimate of how many bytes
+you will need to hold a set of data and then how many pages it will take
+to actually store it on disk.])
+
+m4_p([dnl
+Space freed by deleting key/data pairs from a Btree or Hash database is
+never returned to the filesystem, although it is reused where possible.
+This means that the Btree and Hash databases are grow-only. If enough
+keys are deleted from a database that shrinking the underlying file is
+desirable, you should create a new database and copy the records from
+the old one into it.])
+
+m4_p([dnl
+These are rough estimates at best. For example, they do not take into
+account overflow records, filesystem metadata information, large sets
+of duplicate data items (where the key is only stored once), or
+real-life situations where the sizes of key and data items are wildly
+variable, and the page-fill factor changes over time.])
+
+m4_section(Btree)
+m4_p([dnl
+The formulas for the Btree access method are as follows:])
+
+m4_indent([dnl
+useful-bytes-per-page = (page-size - page-overhead) * page-fill-factor
+m4_blank
+bytes-of-data = n-records *
+ (bytes-per-entry + page-overhead-for-two-entries)
+m4_blank
+n-pages-of-data = bytes-of-data / useful-bytes-per-page
+m4_blank
+total-bytes-on-disk = n-pages-of-data * page-size
+])
+
+m4_p([dnl
+The m4_bold(useful-bytes-per-page) is a measure of the bytes on each page
+that will actually hold the application data. It is computed as the total
+number of bytes on the page that are available to hold application data,
+corrected by the percentage of the page that is likely to contain data.
+The reason for this correction is that the percentage of a page that
+contains application data can vary from close to 50% after a page split
+to almost 100% if the entries in the database were inserted in sorted
+order. Obviously, the m4_bold(page-fill-factor) can drastically alter
+the amount of disk space required to hold any particular data set. The
+page-fill factor of any existing database can be displayed using the
+m4_ref(db_stat) utility.])
+
+m4_p([dnl
+The page-overhead for Btree databases is 26 bytes. As an example, using
+an 8K page size, with an 85% page-fill factor, there are 6941 bytes of
+useful space on each page:])
+
+m4_indent([6941 = (8192 - 26) * .85])
+
+m4_p([dnl
+The total m4_bold(bytes-of-data) is an easy calculation: It is the
+number of key or data items plus the overhead required to store each
+item on a page. The overhead to store a key or data item on a Btree
+page is 5 bytes. So, it would take 1560000000 bytes, or roughly 1.34GB
+of total data to store 60,000,000 key/data pairs, assuming each key or
+data item was 8 bytes long:])
+
+m4_indent([1560000000 = 60000000 * ((8 + 5) * 2)])
+
+m4_p([dnl
+The total pages of data, m4_bold(n-pages-of-data), is the
+m4_bold(bytes-of-data) divided by the m4_bold(useful-bytes-per-page). In
+the example, there are 224751 pages of data.])
+
+m4_indent([224751 = 1560000000 / 6941])
+
+m4_p([dnl
+The total bytes of disk space for the database is m4_bold(n-pages-of-data)
+multiplied by the m4_bold(page-size). In the example, the result is
+1841160192 bytes, or roughly 1.71GB.])
+
+m4_indent([1841160192 = 224751 * 8192])
+
+m4_section(Hash)
+m4_p([dnl
+The formulas for the Hash access method are as follows:])
+
+m4_indent([dnl
+useful-bytes-per-page = (page-size - page-overhead)
+m4_blank
+bytes-of-data = n-records *
+ (bytes-per-entry + page-overhead-for-two-entries)
+m4_blank
+n-pages-of-data = bytes-of-data / useful-bytes-per-page
+m4_blank
+total-bytes-on-disk = n-pages-of-data * page-size
+])
+
+m4_p([dnl
+The m4_bold(useful-bytes-per-page) is a measure of the bytes on each page
+that will actually hold the application data. It is computed as the total
+number of bytes on the page that are available to hold application data.
+If the application has explicitly set a page-fill factor, pages will
+not necessarily be kept full. For databases with a preset fill factor,
+see the calculation below. The page-overhead for Hash databases is 26
+bytes and the page-overhead-for-two-entries is 6 bytes.])
+
+m4_p([dnl
+As an example, using an 8K page size, there are 8166 bytes of useful space
+on each page:])
+
+m4_indent([8166 = (8192 - 26)])
+
+m4_p([dnl
+The total m4_bold(bytes-of-data) is an easy calculation: it is the number
+of key/data pairs plus the overhead required to store each pair on a page.
+In this case that's 6 bytes per pair. So, assuming 60,000,000 key/data
+pairs, each of which is 8 bytes long, there are 1320000000 bytes, or
+roughly 1.23GB of total data:])
+
+m4_indent([1320000000 = 60000000 * (16 + 6)])
+
+m4_p([dnl
+The total pages of data, m4_bold(n-pages-of-data), is the
+m4_bold(bytes-of-data) divided by the m4_bold(useful-bytes-per-page). In
+this example, there are 161646 pages of data.])
+
+m4_indent([161646 = 1320000000 / 8166])
+
+m4_p([dnl
+The total bytes of disk space for the database is m4_bold(n-pages-of-data)
+multiplied by the m4_bold(page-size). In the example, the result is
+1324204032 bytes, or roughly 1.23GB.])
+
+m4_indent([1324204032 = 161646 * 8192])
+
+m4_p([dnl
+Now, let's assume that the application specified a fill factor explicitly.
+The fill factor indicates the target number of items to place on a single
+page (a fill factor might reduce the utilization of each page, but it can
+be useful in avoiding splits and preventing buckets from becoming too
+large). Using our estimates above, each item is 22 bytes (16 + 6), and
+there are 8166 useful bytes on a page (8192 - 26). That means that, on
+average, you can fit 371 pairs per page.])
+
+m4_indent([371 = 8166 / 22])
+
+m4_p([dnl
+However, let's assume that the application designer knows that although
+most items are 8 bytes, they can sometimes be as large as 10, and it's
+very important to avoid overflowing buckets and splitting. Then, the
+application might specify a fill factor of 314.])
+
+m4_indent([314 = 8166 / 26])
+
+m4_p([dnl
+With a fill factor of 314, then the formula for computing database size
+is])
+
+m4_indent([n-pages-of-data = npairs / pairs-per-page])
+
+m4_p([or 191082.])
+
+m4_indent([191082 = 60000000 / 314])
+
+m4_p([dnl
+At 191082 pages, the total database size would be 1565343744, or 1.46GB.])
+
+m4_indent([1565343744 = 191082 * 8192])
+
+m4_p([dnl
+There are a few additional caveats with respect to Hash databases. This
+discussion assumes that the hash function does a good job of evenly
+distributing keys among hash buckets. If the function does not do this,
+you may find your table growing significantly larger than you expected.
+Secondly, in order to provide support for Hash databases coexisting with
+other databases in a single file, pages within a Hash database are
+allocated in power-of-two chunks. That means that a Hash database with 65
+buckets will take up as much space as a Hash database with 128 buckets;
+each time the Hash database grows beyond its current power-of-two number
+of buckets, it allocates space for the next power-of-two buckets. This
+space may be sparsely allocated in the file system, but the files will
+appear to be their full size. Finally, because of this need for
+contiguous allocation, overflow pages and duplicate pages can be allocated
+only at specific points in the file, and this too can lead to sparse hash
+tables.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/am_misc/error.so b/db/docs_src/ref/am_misc/error.so
new file mode 100644
index 000000000..8c7705084
--- /dev/null
+++ b/db/docs_src/ref/am_misc/error.so
@@ -0,0 +1,47 @@
+m4_comment([$Id: error.so,v 10.22 2003/10/18 19:15:56 bostic Exp $])
+
+m4_ref_title(Access Methods,
+ Error support, @error handling, am_misc/perm, am_misc/stability)
+
+m4_p([dnl
+m4_db offers programmatic support for displaying error return values.])
+
+m4_p([dnl
+The m4_ref(dbenv_strerror) function returns a pointer to the error
+message corresponding to any m4_db error return, similar to the ANSI C
+strerror function, but is able to handle both system error returns and
+m4_db specific return values.])
+
+m4_p([dnl
+For example:])
+
+include(ref/am_misc/error1.cs)
+
+m4_p([dnl
+There are also two additional error methods, m4_ref(dbh_err) and
+m4_ref(dbh_errx). These methods work like the m4_ansic_name printf
+function, taking a printf-style format string and argument list, and
+writing a message constructed from the format string and arguments.])
+
+m4_p([dnl
+The m4_refT(dbh_err) appends the standard error string to the
+constructed message; the m4_refT(dbh_errx) does not. These methods
+provide simpler ways of displaying m4_db error messages. For example,
+if your application tracks session IDs in a variable called session_id,
+it can include that information in its error messages:])
+
+m4_p([dnl
+Error messages can additionally be configured to always include a prefix
+(for example, the program name) using the m4_refT(dbh_set_errpfx).])
+
+include(ref/am_misc/error2.cs)
+
+m4_p([dnl
+For example, if the program were called my_app and the open call returned
+an EACCESS system error, the error messages shown would appear as follows:])
+
+m4_indent([dnl
+my_app: access.db: Permission denied.
+my_app: contact your system administrator: session ID was 14])
+
+m4_page_footer
diff --git a/db/docs_src/ref/am_misc/error1.cs b/db/docs_src/ref/am_misc/error1.cs
new file mode 100644
index 000000000..bcae14d05
--- /dev/null
+++ b/db/docs_src/ref/am_misc/error1.cs
@@ -0,0 +1,29 @@
+m4_ignore([dnl
+#include <sys/types.h>
+
+#include <db.h>
+
+int foo();
+
+DB *dbp;
+DBT key, data;
+
+int
+main()
+{
+ (void)foo();
+ return (0);
+}
+
+int
+foo()
+{])
+m4_indent([dnl
+int ret;
+if ((ret = dbp-__GT__put(dbp, NULL, &key, &data, 0)) != 0) {
+ fprintf(stderr, "put failed: %s\n", db_strerror(ret));
+ return (1);
+}])
+m4_ignore([dnl
+ return (0);
+}])
diff --git a/db/docs_src/ref/am_misc/error2.cs b/db/docs_src/ref/am_misc/error2.cs
new file mode 100644
index 000000000..788f49442
--- /dev/null
+++ b/db/docs_src/ref/am_misc/error2.cs
@@ -0,0 +1,41 @@
+m4_ignore([dnl
+#include <sys/types.h>
+
+#include <db.h>
+
+int foo();
+
+int session_id;
+char *program_name;
+
+DB *dbp;
+DBT key, data;
+
+int
+main()
+{
+ (void)foo();
+ return (0);
+}
+
+int
+foo()
+{])
+m4_indent([dnl
+#define DATABASE "access.db"
+m4_blank
+int ret;
+m4_blank
+(void)dbp-__GT__set_errpfx(dbp, program_name);
+m4_blank
+if ((ret = dbp-__GT__open(dbp,
+ NULL, DATABASE, NULL, DB_BTREE, DB_CREATE, 0664)) != 0) {
+ dbp-__GT__err(dbp, ret, "%s", DATABASE);
+ dbp-__GT__errx(dbp,
+ "contact your system administrator: session ID was %d",
+ session_id);
+ return (1);
+}])
+m4_ignore([dnl
+ return (0);
+}])
diff --git a/db/docs_src/ref/am_misc/faq.so b/db/docs_src/ref/am_misc/faq.so
new file mode 100644
index 000000000..a1e66713b
--- /dev/null
+++ b/db/docs_src/ref/am_misc/faq.so
@@ -0,0 +1,158 @@
+m4_comment([$Id: faq.so,v 10.26 2005/10/20 16:10:15 bostic Exp $])
+
+m4_ref_title(Access Methods,
+ Access method FAQ, @access method FAQ, am_misc/tune, java/conf)
+
+m4_nlistbegin
+
+m4_nlist([dnl
+m4_bold([Is a m4_db database the same as a "table"?])
+
+m4_p([dnl
+Yes; "tables" are databases, "rows" are key/data pairs, and "columns"
+are application-encapsulated fields within a data item (to which m4_db
+does not directly provide access).])])
+
+m4_nlist([dnl
+m4_bold([I'm getting an error return in my application, but I can't
+figure out what the library is complaining about.])
+
+m4_p([dnl
+See m4_ref(dbenv_set_errcall), m4_ref(dbenv_set_errfile) and
+m4_ref(dbh_set_errfile) for ways to get additional information about
+error returns from m4_db.])])
+
+m4_nlist([dnl
+m4_bold([Are m4_db databases portable between architectures?])
+
+m4_p([dnl
+Yes. See m4_link(M4RELDIR/ref/am_conf/byteorder, [Selecting a byte
+order]) for more information.])])
+
+m4_nlist([dnl
+m4_bold([I'm seeing database corruption when creating multiple databases
+in a single physical file.])
+
+m4_p([dnl
+This problem is usually the result of m4_ref(Db) handles not sharing an
+underlying database environment. See m4_link(M4RELDIR/ref/am/opensub,
+[Opening multiple databases in a single file]) for more information.])])
+
+m4_nlist([dnl
+m4_bold([I'm using integers as keys for a Btree database, and even
+though the key/data pairs are entered in sorted order, the page-fill
+factor is low.])
+
+m4_p([dnl
+This is usually the result of using integer keys on little-endian
+architectures such as the x86. m4_db sorts keys as byte strings, and
+little-endian integers don't sort well when viewed as byte strings.
+For example, take the numbers 254 through 257. Their byte patterns on
+a little-endian system are:])
+
+m4_indent([dnl
+254 fe 0 0 0
+255 ff 0 0 0
+256 0 1 0 0
+257 1 1 0 0])
+
+m4_p([dnl
+If you treat them as strings, then they sort badly:])
+
+m4_indent([dnl
+256
+257
+254
+255])
+
+m4_p([dnl
+On a big-endian system, their byte patterns are:])
+
+m4_indent([dnl
+254 0 0 0 fe
+255 0 0 0 ff
+256 0 0 1 0
+257 0 0 1 1])
+
+m4_p([dnl
+and so, if you treat them as strings they sort nicely. Which means, if
+you use steadily increasing integers as keys on a big-endian system
+m4_db behaves well and you get compact trees, but on a little-endian
+system m4_db produces much less compact trees. To avoid this problem,
+you may want to convert the keys to flat text or big-endian
+representations, or provide your own
+m4_link(M4RELDIR/ref/am_conf/bt_compare, [Btree comparison function.])])])
+
+m4_idefz(double buffering)
+m4_nlist([dnl
+m4_bold([Is there any way to avoid double buffering in the m4_db system?])
+
+m4_p([dnl
+While you cannot avoid double buffering entirely, there are a few things
+you can do to address this issue:])
+m4_p([dnl
+First, the m4_db cache size can be explicitly set. Rather than allocate
+additional space in the m4_db cache to cover unexpectedly heavy load or
+large table sizes, double buffering may suggest you size the cache to
+function well under normal conditions, and then depend on the file
+buffer cache to cover abnormal conditions. Obviously, this is a
+trade-off, as m4_db may not then perform as well as usual under abnormal
+conditions.])
+m4_p([dnl
+Second, depending on the underlying operating system you're using, you
+may be able to alter the amount of physical memory devoted to the
+system's file buffer cache. Altering this type of resource
+configuration may require appropriate privileges, or even operating
+system reboots and/or rebuilds, on some systems.])
+
+m4_p([dnl
+Third, changing the size of the m4_db environment regions can change
+the amount of space the operating system makes available for the file
+buffer cache, and it's often worth considering exactly how the operating
+system is dividing up its available memory. Further, moving the m4_db
+database environment regions from filesystem backed memory into system
+memory (or heap memory), can often make additional system memory
+available for the file buffer cache, especially on systems without a
+unified buffer cache and VM system.])
+m4_p([dnl
+Finally, for operating systems that allow buffering to be turned off,
+specifying the m4_ref(DB_DIRECT_DB) and m4_ref(DB_DIRECT_LOG) flags
+will attempt to do so.])])
+
+m4_nlist([dnl
+m4_bold([I'm seeing database corruption when I run out of disk space.])
+
+m4_p([dnl
+m4_db can continue to run when when out-of-disk-space errors occur, but
+it requires the application to be transaction protected. Applications
+which do not enclose update operations in transactions cannot recover
+from out-of-disk-space errors, and the result of running out of disk
+space may be database corruption.])])
+
+m4_nlist([dnl
+m4_bold([How can I associate application information with a m4_ref(Db)
+or m4_ref(DbEnv) handle?])
+
+m4_p([dnl
+In the C API, the m4_ref(Db) and m4_ref(DbEnv) structures each contain
+an "app_private" field intended to be used to reference
+application-specific information. See the m4_ref(dbh_create) and
+m4_ref(dbenv_create) documentation for more information.])
+
+m4_p([dnl
+In the C++ or Java APIs, the easiest way to associate
+application-specific data with a handle is to subclass the m4_refcxx(Db)
+or m4_refcxx(DbEnv), for example subclassing m4_refcxx(Db) to get MyDb.
+Objects of type MyDb will still have the m4_db API methods available on
+them, and you can put any extra data or methods you want into the MyDb
+class. If you are using "callback" APIs that take m4_refcxx(Db) or
+m4_refcxx(DbEnv) arguments (for example, m4_refcxx(dbh_set_bt_compare))
+these will always be called with the m4_refcxx(Db) or m4_refcxx(DbEnv)
+objects you create. So if you always use MyDb objects, you will be able
+to take the first argument to the callback function and cast it to a
+MyDb (in C++, cast it to (MyDb*)). That will allow you to access your
+data members or methods.])])
+
+m4_nlistend
+
+m4_page_footer
diff --git a/db/docs_src/ref/am_misc/get_bulk.cs b/db/docs_src/ref/am_misc/get_bulk.cs
new file mode 100644
index 000000000..4f929b3a1
--- /dev/null
+++ b/db/docs_src/ref/am_misc/get_bulk.cs
@@ -0,0 +1,155 @@
+m4_ignore([dnl
+#include <sys/types.h>
+
+#include <errno.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <db.h>
+
+#define DATABASE "access.db"
+#define WORDLIST "../test/wordlist"
+
+int rec_display __P((DB *));
+
+int
+main()
+{
+ DB *dbp;
+ DBT key, data;
+ FILE *fp;
+ u_int32_t len;
+ int cnt, ret;
+ char *p, *t, buf[1024], rbuf[1024];
+ const char *progname = "ex_access"; /* Program name. */
+
+ /* Open the word database. */
+ if ((fp = fopen(WORDLIST, "r")) == NULL) {
+ fprintf(stderr, "%s: open %s: %s\n",
+ progname, WORDLIST, db_strerror(errno));
+ return (1);
+ }
+
+ /* Remove the previous database. */
+ (void)remove(DATABASE);
+
+ /* Create and initialize database object, open the database. */
+ if ((ret = db_create(&dbp, NULL, 0)) != 0) {
+ fprintf(stderr,
+ "%s: db_create: %s\n", progname, db_strerror(ret));
+ return (1);
+ }
+ dbp->set_errfile(dbp, stderr);
+ dbp->set_errpfx(dbp, progname);
+ if ((ret = dbp->set_pagesize(dbp, 1024)) != 0) {
+ dbp->err(dbp, ret, "set_pagesize");
+ return (1);
+ }
+ if ((ret = dbp->set_cachesize(dbp, 0, 32 * 1024, 0)) != 0) {
+ dbp->err(dbp, ret, "set_cachesize");
+ return (1);
+ }
+ if ((ret = dbp->open(dbp,
+ NULL, DATABASE, NULL, DB_BTREE, DB_CREATE, 0664)) != 0) {
+ dbp->err(dbp, ret, "%s: open", DATABASE);
+ return (1);
+ }
+
+ /*
+ * Insert records into the database, where the key is the word
+ * preceded by its record number, and the data is the same, but
+ * in reverse order.
+ */
+ memset(&key, 0, sizeof(DBT));
+ memset(&data, 0, sizeof(DBT));
+ for (cnt = 1; cnt <= 1000; ++cnt) {
+ (void)sprintf(buf, "%04d_", cnt);
+ if (fgets(buf + 4, sizeof(buf) - 4, fp) == NULL)
+ break;
+ len = strlen(buf);
+ for (t = rbuf, p = buf + (len - 2); p >= buf;)
+ *t++ = *p--;
+ *t++ = '\0';
+
+ key.data = buf;
+ data.data = rbuf;
+ data.size = key.size = len - 1;
+
+ if ((ret =
+ dbp->put(dbp, NULL, &key, &data, DB_NOOVERWRITE)) != 0) {
+ dbp->err(dbp, ret, "DB->put");
+ if (ret != DB_KEYEXIST)
+ return (1);
+ }
+ }
+
+ /* Close the word database. */
+ (void)fclose(fp);
+
+ rec_display(dbp);
+
+ return (0);
+}])
+m4_indent([dnl
+int
+rec_display(dbp)
+ DB *dbp;
+{
+ DBC *dbcp;
+ DBT key, data;
+ size_t retklen, retdlen;
+ char *retkey, *retdata;
+ int ret, t_ret;
+ void *p;
+m4_blank
+ memset(&key, 0, sizeof(key));
+ memset(&data, 0, sizeof(data));
+m4_blank
+ /* Review the database in 5MB chunks. */
+#define BUFFER_LENGTH (5 * 1024 * 1024)
+ if ((data.data = malloc(BUFFER_LENGTH)) == NULL)
+ return (errno);
+ data.ulen = BUFFER_LENGTH;
+ data.flags = DB_DBT_USERMEM;
+m4_blank
+ /* Acquire a cursor for the database. */
+ if ((ret = dbp-__GT__cursor(dbp, NULL, &dbcp, 0)) != 0) {
+ dbp-__GT__err(dbp, ret, "DB-__GT__cursor");
+ free(data.data);
+ return (ret);
+ }
+m4_blank
+ for (;;) {
+ /*
+ * Acquire the next set of key/data pairs. This code does
+ * not handle single key/data pairs that won't fit in a
+ * BUFFER_LENGTH size buffer, instead returning DB_BUFFER_SMALL
+ * to our caller.
+ */
+ if ((ret = dbcp-__GT__c_get(dbcp,
+ &key, &data, DB_MULTIPLE_KEY | DB_NEXT)) != 0) {
+ if (ret != DB_NOTFOUND)
+ dbp-__GT__err(dbp, ret, "DBcursor-__GT__c_get");
+ break;
+ }
+m4_blank
+ for (DB_MULTIPLE_INIT(p, &data);;) {
+ DB_MULTIPLE_KEY_NEXT(p,
+ &data, retkey, retklen, retdata, retdlen);
+ if (p == NULL)
+ break;
+ printf("key: %.*s, data: %.*s\n",
+ (int)retklen, retkey, (int)retdlen, retdata);
+ }
+ }
+m4_blank
+ if ((t_ret = dbcp-__GT__c_close(dbcp)) != 0) {
+ dbp-__GT__err(dbp, ret, "DBcursor-__GT__close");
+ if (ret == 0)
+ ret = t_ret;
+ }
+m4_blank
+ free(data.data);
+m4_blank
+ return (ret);
+}])
diff --git a/db/docs_src/ref/am_misc/get_bulk.so b/db/docs_src/ref/am_misc/get_bulk.so
new file mode 100644
index 000000000..4c31b355a
--- /dev/null
+++ b/db/docs_src/ref/am_misc/get_bulk.so
@@ -0,0 +1,74 @@
+m4_comment([$Id: get_bulk.so,v 10.7 2004/09/03 19:47:57 mjc Exp $])
+
+define(BDB_LOC, ..)
+
+m4_ref_title(Access Methods,
+ Retrieving records in bulk, @retrieving records in bulk,
+ am_misc/align, am_misc/partial)
+
+m4_p([dnl
+When retrieving large numbers of records from the database, the number
+of method calls can often dominate performance. m4_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 m4_ref(dbh_get) or m4_refT(dbc_get)s. This is done
+in the C API by setting the m4_arg(data) and m4_arg(ulen) fields of the
+m4_arg(data) m4_ref(Dbt) to reference an application buffer, and the
+m4_arg(flags) field of that structure to m4_ref(DB_DBT_USERMEM). In
+the m4_db C++ and Java APIs, the actions are similar, although there
+are API-specific methods to set the m4_ref(Dbt) values. Then, the
+m4_ref(DB_MULTIPLE) or m4_ref(DB_MULTIPLE_KEY) flags are specified to
+the m4_ref(dbh_get) or m4_refT(dbc_get)s, which cause multiple records
+to be returned in the specified buffer.])
+
+m4_p([dnl
+The difference between m4_ref(DB_MULTIPLE) and m4_ref(DB_MULTIPLE_KEY)
+is as follows: m4_ref(DB_MULTIPLE) returns multiple data items for a
+single key. For example, the m4_ref(DB_MULTIPLE) flag would be used to
+retrieve all of the duplicate data items for a single key in a single
+call. The m4_ref(DB_MULTIPLE_KEY) flag is used to retrieve multiple
+key/data pairs, where each returned key may or may not have duplicate
+data items.])
+
+m4_p([dnl
+Once the m4_ref(dbh_get) or m4_refT(dbc_get) 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:
+m4_ref(DB_MULTIPLE_INIT), m4_ref(DB_MULTIPLE_NEXT),
+m4_ref(DB_MULTIPLE_KEY_NEXT), and m4_ref(DB_MULTIPLE_RECNO_NEXT). For
+the Java API, this is implemented as three iterator classes:
+m4_linkjavadoc(com.sleepycat.db, MultipleDataEntry),
+m4_linkjavadoc(com.sleepycat.db, MultipleKeyDataEntry), and
+m4_linkjavadoc(com.sleepycat.db, MultipleRecnoDataEntry).])
+
+m4_p([dnl
+The m4_ref(DB_MULTIPLE_INIT) macro is always called first. It
+initializes a local application variable and the m4_arg(data)
+m4_ref(Dbt) for stepping through the set of returned records. Then,
+the application calls one of the remaining three macros:
+m4_ref(DB_MULTIPLE_NEXT), m4_ref(DB_MULTIPLE_KEY_NEXT), and
+m4_ref(DB_MULTIPLE_RECNO_NEXT).])
+
+m4_p([dnl
+If the m4_ref(DB_MULTIPLE) flag was specified to the m4_ref(dbh_get) or
+m4_refT(dbc_get), the application will always call the
+m4_ref(DB_MULTIPLE_NEXT) macro. If the m4_ref(DB_MULTIPLE_KEY) flag
+was specified to the m4_ref(dbh_get) or m4_refT(dbc_get), and, the
+underlying database is a Btree or Hash database, the application will
+always call the m4_ref(DB_MULTIPLE_KEY_NEXT) macro. If the
+m4_ref(DB_MULTIPLE_KEY) flag was specified to the m4_ref(dbh_get) or
+m4_refT(dbc_get), and, the underlying database is a Queue or Recno
+database, the application will always call the
+m4_ref(DB_MULTIPLE_RECNO_NEXT) macro. The m4_ref(DB_MULTIPLE_NEXT),
+m4_ref(DB_MULTIPLE_KEY_NEXT), and m4_ref(DB_MULTIPLE_RECNO_NEXT) macros
+are called repeatedly, until the end of the returned records is reached.
+The end of the returned records is detected by the application's local
+pointer variable being set to NULL.])
+
+m4_p([dnl
+The following is an example of a routine that displays the contents of
+a Btree database using the bulk return interfaces.])
+
+include(ref/am_misc/get_bulk.cs)
+
+m4_page_footer
diff --git a/db/docs_src/ref/am_misc/partial.so b/db/docs_src/ref/am_misc/partial.so
new file mode 100644
index 000000000..44c478464
--- /dev/null
+++ b/db/docs_src/ref/am_misc/partial.so
@@ -0,0 +1,148 @@
+m4_comment([$Id: partial.so,v 10.25 2003/10/18 19:15:56 bostic Exp $])
+
+m4_ref_title(Access Methods,
+ Partial record storage and retrieval,
+ @partial record storage and retrieval, am_misc/get_bulk, am_misc/struct)
+
+m4_p([dnl
+It is possible to both store and retrieve parts of data items in all
+m4_db access methods. This is done by setting the
+m4_ref(DB_DBT_PARTIAL) flag in the m4_ref(Dbt) structure passed to the
+m4_db method.])
+
+m4_p([dnl
+The m4_ref(DB_DBT_PARTIAL) flag is based on the values of two fields
+of the m4_ref(Dbt) structure: m4_arg(dlen) and m4_arg(doff). The value
+of m4_arg(dlen) is the number of bytes of the record in which the
+application is interested. The value of m4_arg(doff) is the offset from
+the beginning of the data item where those bytes start.])
+
+m4_p([dnl
+For example, if the data item were m4_bold(ABCDEFGHIJKL), a m4_arg(doff)
+value of 3 would indicate that the bytes of interest started at
+m4_bold(D), and a m4_arg(dlen) value of 4 would indicate that the bytes
+of interest were m4_bold(DEFG).])
+
+m4_p([dnl
+When retrieving a data item from a database, the m4_arg(dlen) bytes
+starting m4_arg(doff) bytes from the beginning of the record are
+returned, as if they comprised the entire record. If any or all of the
+specified bytes do not exist in the record, the retrieval is still
+successful and any existing bytes are returned.])
+
+m4_p([dnl
+When storing a data item into the database, the m4_arg(dlen) bytes
+starting m4_arg(doff) bytes from the beginning of the specified key's
+data record are replaced by the data specified by the m4_arg(data) and
+m4_arg(size) fields. If m4_arg(dlen) is smaller than m4_arg(size), the
+record will grow, and if m4_arg(dlen) is larger than m4_arg(size), the
+record will shrink. If the specified bytes do not exist, the record will
+be extended using nul bytes as necessary, and the store call will still
+succeed.])
+
+m4_p([dnl
+The following are various examples of the put case for the
+m4_ref(DB_DBT_PARTIAL) flag. In all examples, the initial data item is 20
+bytes in length:])
+
+m4_p([m4_bold([ABCDEFGHIJ0123456789])])
+
+m4_nlistbegin
+m4_nlist([m4_indent([dnl
+size = 20
+doff = 0
+dlen = 20
+data = abcdefghijabcdefghij
+m4_blank
+Result: The 20 bytes at offset 0 are replaced by the 20 bytes of data;
+that is, the entire record is replaced.
+m4_blank
+ABCDEFGHIJ0123456789 -__GT__ abcdefghijabcdefghij
+])])
+
+m4_nlist([m4_indent([dnl
+size = 10
+doff = 20
+dlen = 0
+data = abcdefghij
+m4_blank
+Result: The 0 bytes at offset 20 are replaced by the 10 bytes of data;
+that is, the record is extended by 10 bytes.
+m4_blank
+ABCDEFGHIJ0123456789 -__GT__ ABCDEFGHIJ0123456789abcdefghij
+])])
+
+m4_nlist([m4_indent([dnl
+size = 10
+doff = 10
+dlen = 5
+data = abcdefghij
+m4_blank
+Result: The 5 bytes at offset 10 are replaced by the 10 bytes of data.
+m4_blank
+ABCDEFGHIJ0123456789 -__GT__ ABCDEFGHIJabcdefghij56789
+])])
+
+m4_nlist([m4_indent([dnl
+size = 10
+doff = 10
+dlen = 0
+data = abcdefghij
+m4_blank
+Result: The 0 bytes at offset 10 are replaced by the 10 bytes of data;
+that is, 10 bytes are inserted into the record.
+m4_blank
+ABCDEFGHIJ0123456789 -__GT__ ABCDEFGHIJabcdefghij0123456789
+])])
+
+m4_nlist([m4_indent([dnl
+size = 10
+doff = 2
+dlen = 15
+data = abcdefghij
+m4_blank
+Result: The 15 bytes at offset 2 are replaced by the 10 bytes of data.
+m4_blank
+ABCDEFGHIJ0123456789 -__GT__ ABabcdefghij789
+])])
+
+m4_nlist([m4_indent([dnl
+size = 10
+doff = 0
+dlen = 0
+data = abcdefghij
+m4_blank
+Result: The 0 bytes at offset 0 are replaced by the 10 bytes of data;
+that is, the 10 bytes are inserted at the beginning of the record.
+m4_blank
+ABCDEFGHIJ0123456789 -__GT__ abcdefghijABCDEFGHIJ0123456789
+])])
+
+m4_nlist([m4_indent([dnl
+size = 0
+doff = 0
+dlen = 10
+data = ""
+m4_blank
+Result: The 10 bytes at offset 0 are replaced by the 0 bytes of data;
+that is, the first 10 bytes of the record are discarded.
+m4_blank
+ABCDEFGHIJ0123456789 -__GT__ 0123456789
+])])
+
+m4_nlist([m4_indent([dnl
+size = 10
+doff = 25
+dlen = 0
+data = abcdefghij
+m4_blank
+Result: The 0 bytes at offset 25 are replaced by the 10 bytes of data;
+that is, 10 bytes are inserted into the record past the end of the
+current data (\0 represents a nul byte).
+m4_blank
+ABCDEFGHIJ0123456789 -__GT__ ABCDEFGHIJ0123456789\0\0\0\0\0abcdefghij
+])])
+
+m4_nlistend
+
+m4_page_footer
diff --git a/db/docs_src/ref/am_misc/perm.so b/db/docs_src/ref/am_misc/perm.so
new file mode 100644
index 000000000..894fbc105
--- /dev/null
+++ b/db/docs_src/ref/am_misc/perm.so
@@ -0,0 +1,26 @@
+m4_comment([$Id: perm.so,v 1.4 2002/06/20 12:53:58 bostic Exp $])
+
+m4_ref_title(Access Methods,
+ Retrieved key/data permanence for C/C++,
+ [retrieved key/data @permanence, retrieved @key/data permanence],
+ am_misc/struct, am_misc/error)
+
+m4_p([dnl
+When using the non-cursor m4_db calls to retrieve key/data items under
+the C/C++ APIs (for example, m4_ref(dbh_get)), the memory to which the
+pointer stored into the m4_ref(Dbt) refers is only valid until the next
+call to m4_db using the m4_ref(Db) handle. (This includes m4_bold(any)
+use of the returned m4_ref(Db) handle, including by another thread of
+control within the process. For this reason, when multiple threads are
+using the returned m4_ref(Db) handle concurrently, one of the
+m4_ref(DB_DBT_MALLOC), m4_ref(DB_DBT_REALLOC) or m4_ref(DB_DBT_USERMEM)
+flags must be specified with any non-cursor m4_ref(Dbt) used for key or
+data retrieval.)])
+
+m4_p([dnl
+When using the cursor m4_db calls to retrieve key/data items under the
+C/C++ APIs (for example, m4_ref(dbc_get)), the memory to which the
+pointer stored into the m4_ref(Dbt) refers is only valid until the next
+call to m4_db using the m4_ref(Dbc) handle returned by m4_ref(dbh_cursor).])
+
+m4_page_footer
diff --git a/db/docs_src/ref/am_misc/stability.so b/db/docs_src/ref/am_misc/stability.so
new file mode 100644
index 000000000..2662fc02a
--- /dev/null
+++ b/db/docs_src/ref/am_misc/stability.so
@@ -0,0 +1,48 @@
+m4_comment([$Id: stability.so,v 10.30 2005/02/10 20:02:34 bostic Exp $])
+
+m4_ref_title(Access Methods,
+ Cursor stability,
+ [@cursor stability, cursor @stability], am_misc/error, am_misc/dbsizes)
+
+m4_p([dnl
+In the absence of locking, no guarantees are made about the stability
+of cursors in different threads of control. However, the Btree, Queue
+and Recno access methods guarantee that cursor operations, interspersed
+with any other operation in the same thread of control will always
+return keys in order and will return each non-deleted key/data pair
+exactly once. Because the Hash access method uses a dynamic hashing
+algorithm, it cannot guarantee any form of stability in the presence of
+inserts and deletes unless transactional locking is performed.])
+
+m4_p([dnl
+If locking was specified when the m4_db environment was opened, but
+transactions are not in effect, the access methods provide repeatable
+reads with respect to the cursor. That is, a m4_ref(DB_CURRENT) call
+on the cursor is guaranteed to return the same record as was returned
+on the last call to the cursor.])
+
+m4_idefz(degrees of isolation, degrees of @isolation)
+m4_p([dnl
+In the presence of transactions, the Btree, Hash and Recno access
+methods provide degree 3 isolation (serializable transactions). The
+Queue access method provides degree 3 isolation with the exception that
+it permits phantom records to appear between calls. That is, deleted
+records are not locked, therefore another transaction may replace a
+deleted record between two calls to retrieve it. The record would not
+appear in the first call but would be seen by the second call. For
+readers not enclosed in transactions, all access method calls provide
+degree 2 isolation, that is, reads are not repeatable. A transaction
+may be declared to run with degree 2 isolation by specifying the
+m4_ref(DB_READ_COMMITTED) flag. Finally, m4_db provides degree 1 isolation
+when the m4_ref(DB_READ_UNCOMMITTED) flag is specified; that is, reads
+may see data modified in transactions which have not yet committed.])
+
+m4_p([dnl
+For all access methods, a cursor scan of the database performed within
+the context of a transaction is guaranteed to return each key/data pair
+once and only once, except in the following case. If, while performing
+a cursor scan using the Hash access method, the transaction performing
+the scan inserts a new pair into the database, it is possible that
+duplicate key/data pairs will be returned.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/am_misc/struct.so b/db/docs_src/ref/am_misc/struct.so
new file mode 100644
index 000000000..8c6761566
--- /dev/null
+++ b/db/docs_src/ref/am_misc/struct.so
@@ -0,0 +1,103 @@
+m4_comment([$Id: struct.so,v 10.8 2002/12/22 20:42:09 bostic Exp $])
+
+m4_ref_title(Access Methods,
+ Storing C/C++ structures/objects,,
+ am_misc/partial, am_misc/perm)
+
+m4_p([dnl
+m4_db can store any kind of data, that is, it is entirely 8-bit clean.
+How you use this depends, to some extent, on the application language
+you are using. In the C/C++ languages, there are a couple of different
+ways to store structures and objects.])
+
+m4_p([dnl
+First, you can do some form of run-length encoding and copy your
+structure into another piece of memory before storing it:])
+
+m4_indent([dnl
+struct {
+ char *data1;
+ u_int32_t data2;
+ ...
+} info;
+size_t len;
+u_int8_t *p, data_buffer__LB__1024__RB__;
+m4_blank
+p = &data_buffer__LB__0__RB__;
+len = strlen(info.data1);
+memcpy(p, &len, sizeof(len));
+p += sizeof(len);
+memcpy(p, info.data1, len);
+p += len;
+memcpy(p, &info.data2, sizeof(info.data2));
+p += sizeof(info.data2);
+...])
+
+m4_p([dnl
+and so on, until all the fields of the structure have been loaded into
+the byte array. If you want more examples, see the m4_db logging
+routines (for example, btree/btree_auto.c:__bam_split_log()). This
+technique is generally known as "marshalling". If you use this
+technique, you must then un-marshall the data when you read it back:])
+
+m4_indent([dnl
+struct {
+ char *data1;
+ u_int32_t data2;
+ ...
+} info;
+size_t len;
+u_int8_t *p;
+m4_blank
+p = &data_buffer__LB__0__RB__;
+memcpy(&len, p, sizeof(len));
+p += sizeof(len);
+info.data1 = malloc(len);
+memcpy(info.data1, p, len);
+p += len;
+memcpy(&info.data2, p, sizeof(info.data2));
+p += sizeof(info.data2);
+...])
+
+m4_p([dnl
+and so on.])
+
+m4_p([dnl
+The second way to solve this problem only works if you have just one
+variable length field in the structure. In that case, you can declare
+the structure as follows:])
+
+m4_indent([dnl
+struct {
+ int a, b, c;
+ u_int8_t buf__LB__1__RB__;
+} info;])
+
+m4_p([dnl
+Then, let's say you have a string you want to store in this structure.
+When you allocate the structure, you allocate it as:])
+
+m4_indent([dnl
+malloc(sizeof(struct info) + strlen(string));])
+
+m4_p([dnl
+Since the allocated memory is contiguous, you can the initialize the
+structure as:])
+
+m4_indent([dnl
+info.a = 1;
+info.b = 2;
+info.c = 3;
+memcpy(&info.buf__LB__0__RB__, string, strlen(string) + 1);])
+
+m4_p([dnl
+and give it to m4_db to store, with a length of:])
+
+m4_indent([dnl
+sizeof(struct info) + strlen(string);])
+
+m4_p([dnl
+In this case, the structure can be copied out of the database and used
+without any additional work.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/am_misc/tune.so b/db/docs_src/ref/am_misc/tune.so
new file mode 100644
index 000000000..dfc8adb26
--- /dev/null
+++ b/db/docs_src/ref/am_misc/tune.so
@@ -0,0 +1,132 @@
+m4_comment([$Id: tune.so,v 10.10 2006/08/25 23:25:17 bostic Exp $])
+
+m4_ref_title(Access Methods,
+ Access method tuning,
+ [@access method tuning, access method @tuning],
+ am_misc/diskspace, am_misc/faq)
+
+m4_p([dnl
+There are a few different issues to consider when tuning the performance
+of m4_db access method applications.])
+
+m4_tagbegin
+m4_tag(access method, [dnl
+An application's choice of a database access method can significantly
+affect performance. Applications using fixed-length records and integer
+keys are likely to get better performance from the Queue access method.
+Applications using variable-length records are likely to get better
+performance from the Btree access method, as it tends to be faster for
+most applications than either the Hash or Recno access methods. Because
+the access method APIs are largely identical between the m4_db access
+methods, it is easy for applications to benchmark the different access
+methods against each other. See m4_link(M4RELDIR/ref/am_conf/select,
+[Selecting an access method]) for more information.])
+
+m4_tag(cache size, [dnl
+The m4_db database cache defaults to a fairly small size, and most
+applications concerned with performance will want to set it explicitly.
+Using a too-small cache will result in horrible performance. The first
+step in tuning the cache size is to use the db_stat utility (or the
+statistics returned by the m4_ref(dbh_stat) function) to measure the
+effectiveness of the cache. The goal is to maximize the cache's hit
+rate. Typically, increasing the size of the cache until the hit rate
+reaches 100% or levels off will yield the best performance. However,
+if your working set is sufficiently large, you will be limited by the
+system's available physical memory. Depending on the virtual memory
+and file system buffering policies of your system, and the requirements
+of other applications, the maximum cache size will be some amount
+smaller than the size of physical memory. If you find that
+m4_ref(db_stat) shows that increasing the cache size improves your hit
+rate, but performance is not improving (or is getting worse), then it's
+likely you've hit other system limitations. At this point, you should
+review the system's swapping/paging activity and limit the size of the
+cache to the maximum size possible without triggering paging activity.
+Finally, always remember to make your measurements under conditions as
+close as possible to the conditions your deployed application will run
+under, and to test your final choices under worst-case conditions.])
+
+m4_tag(shared memory, [dnl
+By default, m4_db creates its database environment shared regions in
+filesystem backed memory. Some systems do not distinguish between
+regular filesystem pages and memory-mapped pages backed by the
+filesystem, when selecting dirty pages to be flushed back to disk. For
+this reason, dirtying pages in the m4_db cache may cause intense
+filesystem activity, typically when the filesystem sync thread or
+process is run. In some cases, this can dramatically affect application
+throughput. The workaround to this problem is to create the shared
+regions in system shared memory (m4_ref(DB_SYSTEM_MEM)) or application
+private memory (m4_ref(DB_PRIVATE)), or, in cases where this behavior
+is configurable, to turn off the operating system's flushing of
+memory-mapped pages.])
+
+m4_tag(large key/data items, [dnl
+Storing large key/data items in a database can alter the performance
+characteristics of Btree, Hash and Recno databases. The first parameter
+to consider is the database page size. When a key/data item is too
+large to be placed on a database page, it is stored on "overflow" pages
+that are maintained outside of the normal database structure (typically,
+items that are larger than one-quarter of the page size are deemed to
+be too large). Accessing these overflow pages requires at least one
+additional page reference over a normal access, so it is usually better
+to increase the page size than to create a database with a large number
+of overflow pages. Use the m4_ref(db_stat) utility (or the statistics
+returned by the m4_refT(dbh_stat)) to review the number of overflow
+pages in the database.
+m4_p([dnl
+The second issue is using large key/data items instead of duplicate data
+items. While this can offer performance gains to some applications
+(because it is possible to retrieve several data items in a single get
+call), once the key/data items are large enough to be pushed off-page,
+they will slow the application down. Using duplicate data items is
+usually the better choice in the long run.])])
+
+m4_tagend
+
+m4_p([dnl
+A common question when tuning m4_db applications is scalability. For
+example, people will ask why, when adding additional threads or
+processes to an application, the overall database throughput decreases,
+even when all of the operations are read-only queries.])
+
+m4_p([dnl
+First, while read-only operations are logically concurrent, they still
+have to acquire mutexes on internal m4_db data structures. For example,
+when searching a linked list and looking for a database page, the linked
+list has to be locked against other threads of control attempting to add
+or remove pages from the linked list. The more threads of control you
+add, the more contention there will be for those shared data structure
+resources.])
+
+m4_p([dnl
+Second, once contention starts happening, applications will also start
+to see threads of control convoy behind locks (especially on
+architectures supporting only test-and-set spin mutexes, rather than
+blocking mutexes). On test-and-set architectures, threads of control
+waiting for locks must attempt to acquire the mutex, sleep, check the
+mutex again, and so on. Each failed check of the mutex and subsequent
+sleep wastes CPU and decreases the overall throughput of the system.])
+
+m4_p([dnl
+Third, every time a thread acquires a shared mutex, it has to shoot down
+other references to that memory in every other CPU on the system. Many
+modern snoopy cache architectures have slow shoot down characteristics.])
+
+m4_p([dnl
+Fourth, schedulers don't care what application-specific mutexes a thread
+of control might hold when de-scheduling a thread. If a thread of
+control is descheduled while holding a shared data structure mutex,
+other threads of control will be blocked until the scheduler decides to
+run the blocking thread of control again. The more threads of control
+that are running, the smaller their quanta of CPU time, and the more
+likely they will be descheduled while holding a m4_db mutex.])
+
+m4_p([dnl
+The results of adding new threads of control to an application, on the
+application's throughput, is application and hardware specific and
+almost entirely dependent on the application's data access pattern and
+hardware. In general, using operating systems that support blocking
+mutexes will often make a tremendous difference, and limiting threads
+of control to to some small multiple of the number of CPUs is usually
+the right choice to make.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/apprec/auto.so b/db/docs_src/ref/apprec/auto.so
new file mode 100644
index 000000000..fcea4cf81
--- /dev/null
+++ b/db/docs_src/ref/apprec/auto.so
@@ -0,0 +1,199 @@
+m4_comment([$Id: auto.so,v 10.4 2006/09/13 16:21:43 sue Exp $])
+
+m4_ref_title(Application Specific Logging and Recovery,
+ Automatically generated functions,,
+ apprec/def, apprec/config)
+
+m4_p([dnl
+The XXX.src file is processed using the gen_rec.awk script included in
+the dist directory of the m4_db distribution. This is an awk script
+that is executed from with the following command line:])
+
+m4_indent([dnl
+awk -f gen_rec.awk \
+ -v source_file=m4_italic(C_FILE) \
+ -v header_file=m4_italic(H_FILE) \
+ -v template_file=m4_italic(TMP_FILE) __LT__ XXX.src])
+
+m4_p([dnl
+where m4_italic(C_FILE) is the name of the file into which to place the
+automatically generated C code, m4_italic(H_FILE) is the name of the
+file into which to place the automatically generated data structures
+and declarations, and m4_italic(TMP_FILE) is the name of the file into
+which to place a template for the recovery routines.])
+
+m4_p([dnl
+Because the gen_rec.awk script uses sources files located relative to
+the m4_db dist directory, it must be run from the dist directory. For
+example, in building the m4_db logging and recovery routines for
+ex_apprec, the following script is used to rebuild the automatically
+generated files:])
+
+m4_indent([dnl
+E=../examples_c/ex_apprec
+m4_blank
+cd ../../dist
+awk -f gen_rec.awk \
+ -v source_file=$E/ex_apprec_auto.c \
+ -v header_file=$E/ex_apprec_auto.h \
+ -v print_file=$E/ex_apprec_autop.c \
+ -v template_file=$E/ex_apprec_template __LT__ $E/ex_apprec.src])
+
+m4_p([dnl
+For each log record description found in the XXX.src file, the following
+structure declarations and #defines will be created in the file
+m4_italic(header_file):])
+
+m4_indent([dnl
+#define DB_PREFIX_RECORD_TYPE /* Integer ID number */
+m4_blank
+typedef struct _PREFIX_RECORD_TYPE_args {
+ /*
+ * These three fields are generated for every record.
+ */
+ u_int32_t type; /* Record type used for dispatch. */
+m4_blank
+ /*
+ * Transaction handle that identifies the transaction on whose
+ * behalf the record is being logged.
+ */
+ DB_TXN *txnid;
+m4_blank
+ /*
+ * The log sequence number returned by the previous call to log_put
+ * for this transaction.
+ */
+ DB_LSN *prev_lsn;
+m4_blank
+ /*
+ * The rest of the structure contains one field for each of
+ * the entries in the record statement.
+ */
+};])
+
+m4_p([dnl
+Thus, the auto-generated ex_apprec_mkdir_args structure looks as follows:])
+
+m4_indent([dnl
+typedef struct _ex_apprec_mkdir_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ DBT dirname;
+} ex_apprec_mkdir_args;])
+
+m4_p([dnl
+The template_file will contain a template for a recovery function. The
+recovery function is called on each record read from the log during
+system recovery, transaction abort, or the application of log records
+on a replication client, and is expected to redo or undo the operations
+described by that record. The details of the recovery function will be
+specific to the record being logged and need to be written manually,
+but the template provides a good starting point. (Note that the
+template assumes that the record is manipulating the internals of a
+m4_db database and sets up database handles, page structures, and such
+for convenience. Many application-specific log records will not need
+these, and may simply delete much of the template. See
+ex_apprec_template and ex_apprec_rec.c for an example.)])
+
+m4_p([dnl
+The template file should be copied to a source file in the application
+(but not the automatically generated source_file, as that will get
+overwritten each time gen_rec.awk is run) and fully developed there.
+The recovery function takes the following parameters:])
+
+m4_indentv([dnl
+m4_tagbegin
+
+m4_tag(dbenv, [The environment in which recovery is running.])
+m4_tag(rec, [The record being recovered.])
+m4_tag(lsn, [The log sequence number of the record being recovered. The
+prev_lsn field, automatically included in every auto-generated log
+record, should be returned through this argument. The prev_lsn field
+is used to chain log records together to allow transaction aborts;
+because the recovery function is the only place that a log record gets
+parsed, the responsibility for returning this value lies with the
+recovery function writer.])
+m4_tag(op, [dnl
+A parameter of type db_recops, which indicates what operation is being
+run (m4_ref(DB_TXN_ABORT), m4_ref(DB_TXN_APPLY), m4_ref(DB_TXN_BACKWARD_ROLL),
+m4_ref(DB_TXN_FORWARD_ROLL) or m4_ref(DB_TXN_PRINT)).])
+m4_tag(info, [dnl
+A structure passed by the dispatch function. It is used to contain a
+list of committed transactions and information about files that may have
+been deleted. Application-specific log records can usually simply
+ignore this field.])
+
+m4_tagend])
+
+m4_p([dnl
+In addition to the header_file and template_file, a source_file is
+created, containing a log, read, recovery, and print function for each
+record type.])
+
+m4_p([dnl
+The log function marshalls the parameters into a buffer, and calls
+m4_ref(log_put) on that buffer returning 0 on success and non-zero on
+failure. The log function takes the following parameters:])
+
+m4_indentv([dnl
+m4_tagbegin
+
+m4_tag(dbenv, [The environment in which recovery is running.])
+m4_tag(txnid, [dnl
+The transaction identifier for the transaction handle returned by
+m4_ref(txn_begin).])
+m4_tag(lsnp, [dnl
+A pointer to storage for a log sequence number into which the log
+sequence number of the new log record will be returned.])
+m4_tag(syncflag, [dnl
+A flag indicating whether the record must be written synchronously.
+Valid values are 0 and m4_ref(DB_FLUSH).])
+m4_tag(args, [dnl
+The remaining parameters to the log message are the fields described
+in the XXX.src file, in order.])
+
+m4_tagend])
+
+m4_p([dnl
+The read function takes a buffer and unmarshalls its contents into a
+structure of the appropriate type. It returns 0 on success and non-zero
+on error. After the fields of the structure have been used, the pointer
+returned from the read function should be freed. The read function
+takes the following parameters:])
+
+m4_indentv([dnl
+m4_tagbegin
+
+m4_tag(dbenv, [The environment in which recovery is running.])
+m4_tag(recbuf, [A buffer.])
+m4_tag(argp, [A pointer to a structure of the appropriate type.])
+
+m4_tagend])
+
+m4_p([dnl
+The print function displays the contents of the record. The print
+function takes the same parameters as the recovery function described
+previously. Although some of the parameters are unused by the print
+function, taking the same parameters allows a single dispatch loop to
+dispatch to a variety of functions. The print function takes the
+following parameters:])
+
+m4_indentv([dnl
+m4_tagbegin
+
+m4_tag(dbenv, [The environment in which recovery is running.])
+m4_tag(rec, [The record being recovered.])
+m4_tag(lsn, [The log sequence number of the record being recovered.])
+m4_tag(op, Unused.)
+m4_tag(info, Unused.)
+
+m4_tagend])
+
+m4_p([dnl
+Finally, the source file will contain a function (named XXX_init_print,
+where XXX is replaced by the prefix) which should be added to the
+initialization part of the standalone m4_ref(db_printlog) utility code
+so that utility can be used to display application-specific log records.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/apprec/config.so b/db/docs_src/ref/apprec/config.so
new file mode 100644
index 000000000..62506bbd7
--- /dev/null
+++ b/db/docs_src/ref/apprec/config.so
@@ -0,0 +1,155 @@
+m4_comment([$Id: config.so,v 10.4 2002/06/05 21:09:14 bostic Exp $])
+
+m4_ref_title(Application Specific Logging and Recovery,
+ Application configuration,,
+ apprec/auto, program/appsignals)
+
+m4_p([dnl
+The application should include a dispatch function that dispatches to
+appropriate printing and/or recovery functions based on the log record
+type and the operation code. The dispatch function should take the same
+arguments as the recovery function, and should call the appropriate
+recovery and/or printing functions based on the log record type and the
+operation code. For example, the ex_apprec dispatch function is as
+follows:])
+
+m4_indent([dnl
+int
+apprec_dispatch(dbenv, dbt, lsn, op)
+ DB_ENV *dbenv;
+ DBT *dbt;
+ DB_LSN *lsn;
+ db_recops op;
+{
+ u_int32_t rectype;
+
+ /* Pull the record type out of the log record. */
+ memcpy(&rectype, dbt-__GT__data, sizeof(rectype));
+
+ switch (rectype) {
+ case DB_ex_apprec_mkdir:
+ return (ex_apprec_mkdir_recover(dbenv, dbt, lsn, op, NULL));
+ default:
+ /*
+ * We've hit an unexpected, allegedly user-defined record
+ * type.
+ */
+ dbenv-__GT__errx(dbenv, "Unexpected log record type encountered");
+ return (EINVAL);
+ }
+}
+])
+
+m4_p([dnl
+Applications use this dispatch function and the automatically generated
+functions as follows:])
+
+m4_nlistbegin
+
+m4_nlist([dnl
+When the application starts, call the m4_ref(dbenv_set_app_dispatch)
+with your dispatch function.])
+
+m4_nlist([dnl
+Issue a m4_ref(txn_begin) call before any operations you want to be
+transaction-protected.])
+
+m4_nlist([dnl
+Before accessing any data, issue the appropriate lock call to lock the
+data (either for reading or writing).])
+
+m4_nlist([dnl
+Before modifying any data that is transaction-protected, issue a call
+to the appropriate log function.])
+
+m4_nlist([dnl
+Call m4_ref(txn_commit) to save all the changes, or call m4_ref(txn_abort)
+to cancel all of the modifications.])
+
+m4_nlistend
+
+m4_p([dnl
+The recovery functions are called in the three following cases:])
+
+m4_nlistbegin
+m4_nlist([dnl
+During recovery after application or system failure, with op set to
+m4_ref(DB_TXN_FORWARD_ROLL) or m4_ref(DB_TXN_BACKWARD_ROLL).])
+m4_nlist([dnl
+During transaction abort, with op set to m4_ref(DB_TXN_ABORT).])
+m4_nlist([dnl
+On a replicated client to apply updates from the master, with op set to
+m4_ref(DB_TXN_APPLY).])
+m4_nlistend
+
+m4_p([dnl
+For each log record type you declare, you must write the appropriate
+function to undo and redo the modifications. The shell of these
+functions will be generated for you automatically, but you must fill in
+the details.])
+
+m4_p([dnl
+Your code must be able to detect whether the described modifications
+have been applied to the data. The function will be called with the
+"op" parameter set to m4_ref(DB_TXN_ABORT) when a transaction that wrote
+the log record aborts, with m4_ref(DB_TXN_FORWARD_ROLL) and
+m4_ref(DB_TXN_BACKWARD_ROLL) during recovery, and with m4_ref(DB_TXN_APPLY)
+on a replicated client.])
+
+m4_p([dnl
+The actions for m4_ref(DB_TXN_ABORT) and m4_ref(DB_TXN_BACKWARD_ROLL)
+should generally be the same, and the actions for
+m4_ref(DB_TXN_FORWARD_ROLL) and m4_ref(DB_TXN_APPLY) should generally
+be the same. However, if the application is using m4_db replication
+and another thread of control may be performing read operations while
+log records are applied on a replication client, the recovery function
+should perform appropriate locking during m4_ref(DB_TXN_APPLY)
+operations. In this case, the recovery function may encounter deadlocks
+when issuing locking calls. The application should run with the
+deadlock detector, and the recovery function should simply return
+m4_ref(DB_LOCK_DEADLOCK) if a deadlock is detected and a locking
+operation fails with that error.])
+
+m4_p([dnl
+The m4_ref(DB_TXN_PRINT) operation should print the log record,
+typically using the auto-generated print function; it is not used in
+the m4_db library, but may be useful for debugging, as in the
+m4_ref(db_printlog) utility. Applications may safely ignore this
+operation code, they may handle printing from the recovery function, or
+they may dispatch directly to the auto-generated print function.])
+
+m4_p([dnl
+One common way to determine whether operations need to be undone or
+redone is the use of log sequence numbers (LSNs). For example, each
+access method database page contains the LSN of the most recent log
+record that describes a modification to the page. When the access
+method changes a page, it writes a log record describing the change and
+including the LSN that was on the page before the change. This LSN is
+referred to as the previous LSN. The recovery functions read the page
+described by a log record, and compare the LSN on the page to the LSN
+they were passed.])
+
+m4_p([dnl
+If the page LSN is less than the passed LSN and the operation is an
+undo, no action is necessary (because the modifications have not been
+written to the page). If the page LSN is the same as the previous LSN
+and the operation is a redo, the actions described are reapplied to the
+page. If the page LSN is equal to the passed LSN and the operation is
+an undo, the actions are removed from the page; if the page LSN is
+greater than the passed LSN and the operation is a redo, no further
+action is necessary. If the action is a redo and the LSN on the page
+is less than the previous LSN in the log record, it is an error because
+it could happen only if some previous log record was not processed.])
+
+m4_p([dnl
+Examples of other recovery functions can be found in the m4_db library
+recovery functions (found in files named XXX_rec.c) and in the
+application-specific recovery example (specifically, ex_apprec_rec.c).])
+
+m4_p([dnl
+Finally, applications need to ensure that any data modifications they
+have made, that were part of a committed transaction, must be written
+to stable storage before calling the m4_refT(txn_checkpoint). This is
+to allow the periodic removal of database environment log files.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/apprec/def.so b/db/docs_src/ref/apprec/def.so
new file mode 100644
index 000000000..b35390a9f
--- /dev/null
+++ b/db/docs_src/ref/apprec/def.so
@@ -0,0 +1,159 @@
+m4_comment([$Id: def.so,v 10.7 2007/04/05 20:37:29 bostic Exp $])
+
+m4_ref_title(Application Specific Logging and Recovery,
+ Defining application-specific log records,,
+ apprec/intro, apprec/auto)
+
+m4_p([dnl
+By convention, log records are described in files named m4_path(XXX.src),
+where "XXX" is typically a descriptive name for a subsystem or other
+logical group of logging functions. These files contain interface
+definition language descriptions for each type of log record that is
+used by the subsystem.])
+
+m4_p([dnl
+All blank lines and lines beginning with a hash ("[#]") character in
+the XXX.src files are ignored.])
+
+m4_p([dnl
+The first non-comment line in the file should begin with the keyword
+PREFIX, followed by a string that will be prepended to every generated
+function name. Frequently, the PREFIX is either identical or similar
+to the name of the m4_path(XXX.src) file. For example, the m4_db
+application-specific recovery example uses the file
+m4_path(ex_apprec.src), which begins with the following PREFIX line:])
+
+m4_indent([PREFIX ex_apprec])
+
+m4_p([dnl
+Following the PREFIX line are the include files required by the
+automatically generated functions. The include files should be listed
+in order, prefixed by the keyword INCLUDE. For example, the m4_db
+application-specific recovery example lists the following include
+files:])
+
+m4_indent([dnl
+INCLUDE [#]include __LT__ctype.h__GT__
+INCLUDE [#]include __LT__errno.h__GT__
+INCLUDE [#]include __LT__stdlib.h__GT__
+INCLUDE [#]include __LT__string.h__GT__
+INCLUDE
+INCLUDE [#]include __LT__db.h__GT__
+INCLUDE
+INCLUDE [#]include "ex_apprec.h"])
+
+m4_p([dnl
+The rest of the XXX.src file consists of log record descriptions. Each
+log record description begins with one of the following lines:])
+
+m4_indent([BEGIN m4_italic(RECORD_NAME) m4_italic(DB_VERSION_NUMBER) m4_italic(RECORD_NUMBER)])
+m4_indent([BEGIN_BUF m4_italic(RECORD_NAME) m4_italic(DB_VERSION_NUMBER)])
+m4_indent([BEGIN_COMPAT m4_italic(RECORD_NAME) m4_italic(DB_VERSION_NUMBER) m4_italic(RECORD_NUMBER)])
+
+m4_p([dnl
+and ends with the line:])
+
+m4_indent([END])
+
+m4_p([dnl
+The m4_italic(BEGIN) line should be used for most record types.])
+
+m4_p([dnl
+The m4_italic(BEGIN_BUF) is used for records that need only marshalling and
+unmarshalling of the record, that is logging and reading routines, but not
+a recovery routine. These records are specific to the replication system's
+internal initialization process, which sends variable length records containing
+file data and file description records.])
+
+m4_p([dnl
+The m4_italic(BEGIN_COMPAT) is used for log record compatibility to facilitate
+online upgrades of replication groups. Records created with this keyword will
+produce reading and printing routines, but no logging routines. The recovery
+routines are retrieved from older releases, so no recovery templates will be
+generated for these records.])
+
+m4_p([dnl
+The m4_italic(DB_VERSION_NUMBER) variable should be replaced with the
+current major and minor version of m4_db, with all punctuation removed.
+For example, m4_db version 4.2 should be 42, version 4.5 should be 45.])
+
+m4_p([dnl
+The m4_italic(RECORD_NAME) variable should be replaced with a record
+name for this log record. The m4_italic(RECORD_NUMBER) variable should
+be replaced with a record number.])
+
+m4_p([dnl
+The combination of PREFIX name and m4_italic(RECORD_NAME), and the
+m4_italic(RECORD_NUMBER) must be unique for the application, that is,
+values for application-specific and m4_db log records may not overlap.
+Further, because record numbers are stored in log files, which are
+usually portable across application and m4_db releases, any change to
+the record numbers or log record format or should be handled as
+described in the m4_link(M4RELDIR/ref/upgrade/process, Upgrading m4_db
+installations) section on log format changes. The record number space
+below 10,000 is reserved for m4_db itself; applications should choose
+record number values equal to or greater than 10,000.])
+
+m4_p([dnl
+Between the BEGIN and END keywords there should be one optional
+m4_italic(DUPLICATE) line and one line for each
+data item logged as part of this log record.])
+
+m4_p([dnl
+The m4_italic(DUPLICATE) line is of the form:])
+
+m4_indent([DUPLICATE m4_italic(RECORD_NAME) m4_italic(DB_VERSION_NUMBER) m4_italic(RECORD_NUMBER)])
+
+m4_p([dnl
+The m4_italic(DUPLICATE) specifier should be used when creating a record
+that requires its own record number but can use the argument structure,
+reading and printing routines from another record. In this case, we will
+create a new log record type, but use the enclosing log record type for
+the argument structure and the log reading and printing routines.])
+
+m4_p([dnl
+The format of lines for each data item logged is as follows:])
+
+m4_indent([dnl
+ARG | DBT | POINTER m4_italic(variable_name) m4_italic(variable_type) m4_italic(printf_format)])
+
+m4_p([dnl
+The keyword ARG indicates that the argument is a simple parameter of
+the type specified. For example, a file ID might be logged as:])
+
+m4_indent([dnl
+ARG fileID int d])
+
+m4_p([dnl
+The keyword DBT indicates that the argument is a m4_db DBT structure,
+containing a length and pointer to a byte string. The keyword POINTER
+indicates that the argument is a pointer to the data type specified (of
+course the data type, not the pointer, is what is logged).])
+
+m4_p([dnl
+The m4_italic(variable_name) is the field name within the structure that
+will be used to refer to this item. The m4_italic(variable_type) is
+the C-language type of the variable, and the printf format is the
+C-language format string, without the leading percent ("%") character,
+that should be used to display the contents of the field (for example,
+"s" for string, "d" for signed integral type, "u" for unsigned integral
+type, "ld" for signed long integral type, "lu" for long unsigned
+integral type, and so on).])
+
+m4_p([dnl
+For example, ex_apprec.src defines a single log record type, used to
+log a directory name that has been stored in a DBT:])
+
+m4_indent([dnl
+BEGIN mkdir 10000
+DBT dirname DBT s
+END])
+
+m4_p([dnl
+As the name suggests, this example of an application-defined log record
+will be used to log the creation of a directory. There are many more
+examples of XXX.src files in the m4_db distribution. For example, the
+file btree/btree.src contains the definitions for the log records
+supported by the m4_db Btree access method.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/apprec/intro.so b/db/docs_src/ref/apprec/intro.so
new file mode 100644
index 000000000..1cf1eccbf
--- /dev/null
+++ b/db/docs_src/ref/apprec/intro.so
@@ -0,0 +1,84 @@
+m4_comment([$Id: intro.so,v 10.53 2006/11/13 18:04:59 bostic Exp $])
+
+m4_ref_title(Application Specific Logging and Recovery,
+ Introduction to application specific logging and recovery,,
+ xa/faq, apprec/def)
+
+m4_p([dnl
+It is possible to use the Locking, Logging and Transaction subsystems
+of m4_db to provide transaction semantics on objects other than those
+described by the m4_db access methods. In these cases, the application
+will need application-specific logging and recovery functions.])
+
+m4_p([dnl
+For example, consider an application that provides transaction semantics
+on data stored in plain text files accessed using the POSIX read and
+write system calls. The read and write operations for which transaction
+protection is desired will be bracketed by calls to the standard m4_db
+transactional interfaces, m4_ref(txn_begin) and m4_ref(txn_commit), and
+the transaction's locker ID will be used to acquire relevant read and
+write locks.])
+
+m4_p([dnl
+Before data is accessed, the application must make a call to the lock
+manager, m4_ref(lock_get), for a lock of the appropriate type (for
+example, read) on the object being locked. The object might be a page
+in the file, a byte, a range of bytes, or some key. It is up to the
+application to ensure that appropriate locks are acquired. Before a
+write is performed, the application should acquire a write lock on the
+object by making an appropriate call to the lock manager,
+m4_ref(lock_get). Then, the application should make a call to the log
+manager, via the automatically-generated log-writing function described
+as follows. This record should contain enough information to redo the
+operation in case of failure after commit and to undo the operation in
+case of abort.])
+
+m4_p([dnl
+When designing applications that will use the log subsystem, it is
+important to remember that the application is responsible for providing
+any necessary structure to the log record. For example, the application
+must understand what part of the log record is an operation code, what
+part identifies the file being modified, what part is redo information,
+and what part is undo information.])
+
+m4_p([dnl
+After the log message is written, the application may issue the write
+system call. After all requests are issued, the application may call
+m4_ref(txn_commit). When m4_ref(txn_commit) returns, the caller is
+guaranteed that all necessary log writes have been written to disk.])
+
+m4_p([dnl
+At any time before issuing a m4_ref(txn_commit), the application may
+call m4_ref(txn_abort), which will result in restoration of the database
+to a consistent pretransaction state. (The application may specify its
+own recovery function for this purpose using the
+m4_refT(dbenv_set_app_dispatch). The recovery function must be able to
+either reapply or undo the update depending on the context, for each
+different type of log record. The recovery functions must not use m4_db
+methods to access data in the environment as there is no way to
+coordinate these accesses with either the aborting transaction or the
+updates done by recovery or replication.)])
+
+m4_p([dnl
+If the application crashes, the recovery process uses the log to restore
+the database to a consistent state.])
+
+m4_p([dnl
+m4_db includes tools to assist in the development of application-specific
+logging and recovery. Specifically, given a description of information
+to be logged in a family of log records, these tools will automatically
+create log-writing functions (functions that marshall their arguments
+into a single log record), log-reading functions (functions that read
+a log record and unmarshall it into a structure containing fields that
+map into the arguments written to the log), log-printing functions
+(functions that print the contents of a log record for debugging), and
+templates for recovery functions (functions that review log records
+during transaction abort or recovery). The tools and generated code
+are C-language and POSIX-system based, but the generated code should be
+usable on any system, not just POSIX systems.])
+
+m4_p([dnl
+A sample application that does application-specific recovery is included
+in the m4_db distribution, in the directory m4_path(examples_c/ex_apprec).])
+
+m4_page_footer
diff --git a/db/docs_src/ref/arch/apis.so b/db/docs_src/ref/arch/apis.so
new file mode 100644
index 000000000..9a36aedbd
--- /dev/null
+++ b/db/docs_src/ref/arch/apis.so
@@ -0,0 +1,82 @@
+m4_comment([$Id: apis.so,v 10.29 2003/10/18 19:15:57 bostic Exp $])
+
+m4_ref_title(Architecture,
+ Programmatic APIs,
+ programmatic @APIs,
+ arch/progmodel, arch/script)
+
+m4_p([dnl
+The m4_db subsystems can be accessed through interfaces from multiple
+languages. Applications can use m4_db via C, C++ or Java, as well as a
+variety of scripting languages such as Perl, Python, Ruby or Tcl.
+Environments can be shared among applications written by using any of
+these interfaces. For example, you might have a local server written
+in C or C++, a script for an administrator written in Perl or Tcl, and
+a Web-based user interface written in Java -- all sharing a single
+database environment.])
+
+m4_section(C)
+m4_p([dnl
+The m4_db library is written entirely in ANSI C. C applications use a
+single include file:])
+
+m4_indent([m4_include(db.h)])
+
+m4_section(C++)
+m4_p([dnl
+The C++ classes provide a thin wrapper around the C API, with the major
+advantages being improved encapsulation and an optional exception
+mechanism for errors. C++ applications use a single include file:])
+
+m4_indent([m4_include(db_cxx.h)])
+
+m4_p([dnl
+The classes and methods are named in a fashion that directly corresponds
+to structures and functions in the C interface. Likewise, arguments to
+methods appear in the same order as the C interface, except to remove the
+explicit m4_bold(this) pointer. The #defines used for flags are identical
+between the C and C++ interfaces.])
+
+m4_p([dnl
+As a rule, each C++ object has exactly one structure from the underlying
+C API associated with it. The C structure is allocated with each
+constructor call and deallocated with each destructor call. Thus, the
+rules the user needs to follow in allocating and deallocating structures
+are the same between the C and C++ interfaces.])
+
+m4_p([dnl
+To ensure portability to many platforms, both new and old, m4_db makes
+as few assumptions as possible about the C++ compiler and library. For
+example, it does not expect STL, templates, or namespaces to be
+available. The newest C++ feature used is exceptions, which are used
+liberally to transmit error information. Even the use of exceptions
+can be disabled at runtime.])
+
+m4_section(Java)
+m4_p([dnl
+The Java classes provide a layer around the C API that is almost identical
+to the C++ layer. The classes and methods are, for the most part
+identical to the C++ layer. m4_db constants and #defines are represented as
+"static final int" values. Error conditions are communicated as Java
+exceptions.])
+
+m4_p([dnl
+As in C++, each Java object has exactly one structure from the underlying
+C API associated with it. The Java structure is allocated with each
+constructor or open call, but is deallocated only by the Java garbage
+collector. Because the timing of garbage collection is not predictable,
+applications should take care to do a close when finished with any object
+that has a close method.])
+
+m4_section([Dbm/Ndbm, Hsearch])
+m4_p([dnl
+m4_db supports the standard UNIX m4_ref(dbm), m4_ref(ndbm), and
+m4_ref(hsearch) interfaces. After including a new header file and
+recompiling, programs will run orders of magnitude faster, and
+underlying databases can grow as large as necessary. Also, historic
+m4_ref(dbm) and m4_ref(ndbm) applications can fail once some number of
+entries are inserted into the database, in which the number depends on
+the effectiveness of the internal hashing function on the particular
+data set. This is not a problem with m4_db.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/arch/bigpic.fig b/db/docs_src/ref/arch/bigpic.fig
new file mode 100644
index 000000000..ebbeac701
--- /dev/null
+++ b/db/docs_src/ref/arch/bigpic.fig
@@ -0,0 +1,70 @@
+#FIG 3.2
+Landscape
+Center
+Inches
+Letter
+100.00
+Single
+-2
+1200 2
+6 2100 3600 3900 4050
+2 2 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 2100 3600 3900 3600 3900 4050 2100 4050 2100 3600
+4 1 0 0 0 0 16 0.0000 4 165 1170 3000 3900 Buffer Pool\001
+-6
+6 1800 4500 4200 4950
+2 2 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 1800 4500 4200 4500 4200 4950 1800 4950 1800 4500
+-6
+1 2 0 1 0 7 0 0 -1 0.000 1 0.0000 5100 3975 300 150 4800 4125 5400 3825
+1 2 0 1 0 7 0 0 -1 0.000 1 0.0000 5100 4575 300 150 4800 4725 5400 4425
+2 2 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 2550 2700 3450 2700 3450 3150 2550 3150 2550 2700
+2 2 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 3300 1800 5100 1800 5100 2250 3300 2250 3300 1800
+2 2 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 900 1800 2700 1800 2700 2250 900 2250 900 1800
+2 2 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 2100 900 3900 900 3900 1350 2100 1350 2100 900
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 3900 2250 3900 3600
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 2100 2250 2100 3600
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 1800 2250 1800 4500
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 4200 2250 4200 4500
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 2400 4050 2400 4500
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 3600 1350 3600 1800
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 2700 2250 2700 2700
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 3300 2250 3300 2700
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 4800 3975 4800 4575
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 5400 3975 5400 4575
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 3900 3900 4800 3900
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 4200 4575 4800 4575
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 2400 1350 2400 1800
+4 1 0 0 0 0 16 0.0000 4 165 495 3000 3000 Lock\001
+4 1 0 0 0 0 16 0.0000 4 165 1245 4200 2100 Transactions\001
+4 1 0 0 0 0 16 0.0000 4 165 1590 1800 2100 Access Methods\001
+4 0 0 0 0 0 16 0.0000 4 225 1260 2400 1200 Applications\001
+4 1 0 0 0 0 16 0.0000 4 225 390 3000 4800 Log\001
diff --git a/db/docs_src/ref/arch/bigpic.gif b/db/docs_src/ref/arch/bigpic.gif
new file mode 100644
index 000000000..48c52aed5
--- /dev/null
+++ b/db/docs_src/ref/arch/bigpic.gif
Binary files differ
diff --git a/db/docs_src/ref/arch/bigpic.pic b/db/docs_src/ref/arch/bigpic.pic
new file mode 100644
index 000000000..2812f423a
--- /dev/null
+++ b/db/docs_src/ref/arch/bigpic.pic
@@ -0,0 +1,31 @@
+.\" 3 x 3 is just a guess
+.PS 3i 3i
+.ps 11
+"\s16\fRLog\fP" at 2.500,6.544
+"\s16\fRBuffer Pool\fP" at 2.500,7.294
+box with .sw at (1.50,6.38) width 2.00 height 0.38
+ellipse at 4.250,7.188 wid 0.500 ht 0.250
+ellipse at 4.250,6.688 wid 0.500 ht 0.250
+box with .sw at (2.12,7.88) width 0.75 height 0.38
+box with .sw at (2.75,8.62) width 1.50 height 0.38
+box with .sw at (0.75,8.62) width 1.50 height 0.38
+box with .sw at (1.75,9.38) width 1.50 height 0.38
+line -> from 3.250,8.625 to 3.250,7.500
+line -> from 1.750,8.625 to 1.750,7.500
+line -> from 1.500,8.625 to 1.500,6.750
+line -> from 3.500,8.625 to 3.500,6.750
+line -> from 2.000,7.125 to 2.000,6.750
+line -> from 3.000,9.375 to 3.000,9.000
+line -> from 2.250,8.625 to 2.250,8.250
+line -> from 2.750,8.625 to 2.750,8.250
+line from 4.000,7.188 to 4.000,6.688
+line from 4.500,7.188 to 4.500,6.688
+line -> from 3.250,7.250 to 4.000,7.250
+line -> from 3.500,6.688 to 4.000,6.688
+line -> from 2.000,9.375 to 2.000,9.000
+"\s16\fRLock\fP" at 2.500,8.044
+"\s16\fRTransactions\fP" at 3.500,8.794
+"\s16\fRAccess Methods\fP" at 1.500,8.794
+"\s16\fRApplications\fP" at 2.000,9.544 ljust
+box with .sw at (1.75,7.12) width 1.50 height 0.38
+.PE
diff --git a/db/docs_src/ref/arch/bigpic.so b/db/docs_src/ref/arch/bigpic.so
new file mode 100644
index 000000000..b7a495b0e
--- /dev/null
+++ b/db/docs_src/ref/arch/bigpic.so
@@ -0,0 +1,110 @@
+m4_comment([$Id: bigpic.so,v 8.32 2003/11/27 18:25:57 bostic Exp $])
+
+m4_ref_title(Architecture, The big picture,, java/faq, arch/progmodel)
+
+m4_p([dnl
+The previous chapters in this Reference Guide have described
+applications that use the m4_db access methods for fast data storage
+and retrieval. The applications described in the following chapters
+are similar in nature to the access method applications, but they are
+also threaded and/or recoverable in the face of application or system
+failure.])
+
+m4_p([dnl
+Application code that uses only the m4_db access methods might appear
+as follows:])
+
+include(ref/arch/bigpic1.cs)
+
+m4_p([dnl
+The underlying m4_db architecture that supports this is])
+
+m4_picgif(center, smallpic, small)
+
+m4_p([dnl
+As you can see from this diagram, the application makes calls into the
+access methods, and the access methods use the underlying shared memory
+buffer cache to hold recently used file pages in main memory.])
+
+m4_p([dnl
+When applications require recoverability, their calls to the Access
+Methods must be wrapped in calls to the transaction subsystem. The
+application must inform m4_db where to begin and end transactions, and
+must be prepared for the possibility that an operation may fail at any
+particular time, causing the transaction to abort.])
+
+m4_p([dnl
+An example of transaction-protected code might appear as follows:])
+
+include(ref/arch/bigpic2.cs)
+
+m4_p([dnl
+In this example, the same operation is being done as before; however,
+it is wrapped in transaction calls. The transaction is started with
+m4_ref(txn_begin) and finished with m4_ref(txn_commit). If the
+operation fails due to a deadlock, the transaction is aborted using
+m4_ref(txn_abort), after which the operation may be retried.])
+
+m4_p([dnl
+There are actually five major subsystems in m4_db, as follows:])
+
+m4_tagbegin
+m4_tag(Access Methods, [dnl
+The access methods subsystem provides general-purpose support for
+creating and accessing database files formatted as Btrees, Hashed files,
+and Fixed- and Variable-length records. These modules are useful in
+the absence of transactions for applications that need fast formatted
+file support. See m4_ref(dbh_open) and m4_ref(dbh_cursor) for more
+information. These functions were already discussed in detail in the
+previous chapters.])
+
+m4_tag(Memory Pool, [dnl
+The Memory Pool subsystem is the general-purpose shared memory buffer pool
+used by m4_db. This is the shared memory cache that allows multiple
+processes and threads within processes to share access to databases. This
+module is useful outside of the m4_db package for processes that require
+portable, page-oriented, cached, shared file access.])
+
+m4_tag(Transaction, [dnl
+The Transaction subsystem allows a group of database changes to be
+treated as an atomic unit so that either all of the changes are done,
+or none of the changes are done. The transaction subsystem implements
+the m4_db transaction model. This module is useful outside of the m4_db
+package for processes that want to transaction-protect their own data
+modifications.])
+
+m4_tag(Locking, [dnl
+The Locking subsystem is the general-purpose lock manager used by m4_db.
+This module is useful outside of the m4_db package for processes that
+require a portable, fast, configurable lock manager.])
+
+m4_tag(Logging, [dnl
+The Logging subsystem is the write-ahead logging used to support the
+m4_db transaction model. It is largely specific to the m4_db package,
+and unlikely to be useful elsewhere except as a supporting module for
+the m4_db transaction subsystem.])
+
+m4_tagend
+
+m4_p([dnl
+Here is a more complete picture of the m4_db library:])
+
+m4_picgif(center, bigpic, large)
+
+m4_p([dnl
+In this model, the application makes calls to the access methods and to
+the Transaction subsystem. The access methods and Transaction subsystems
+in turn make calls into the Memory Pool, Locking and Logging subsystems
+on behalf of the application.])
+
+m4_p([dnl
+The underlying subsystems can be used independently by applications.
+For example, the Memory Pool subsystem can be used apart from the rest
+of m4_db by applications simply wanting a shared memory buffer pool, or
+the Locking subsystem may be called directly by applications that are
+doing their own locking outside of m4_db. However, this usage is not
+common, and most applications will either use only the access methods
+subsystem, or the access methods subsystem wrapped in calls to the m4_db
+transaction interfaces.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/arch/bigpic1.cs b/db/docs_src/ref/arch/bigpic1.cs
new file mode 100644
index 000000000..b5f6e24c4
--- /dev/null
+++ b/db/docs_src/ref/arch/bigpic1.cs
@@ -0,0 +1,25 @@
+m4_ignore([dnl
+#include <sys/types.h>
+#include <stdlib.h>
+
+#include <db.h>
+
+int
+main()
+{
+ DB *dbp;
+ DBT key, data;
+ int ret;
+])
+m4_indent([dnl
+switch (ret = dbp-__GT__put(dbp, NULL, &key, &data, 0)) {
+case 0:
+ printf("db: %s: key stored.\n", (char *)key.data);
+ break;
+default:
+ dbp-__GT__err(dbp, ret, "dbp-__GT__put");
+ exit (1);
+}])
+m4_ignore([dnl
+return (0);
+}])
diff --git a/db/docs_src/ref/arch/bigpic2.cs b/db/docs_src/ref/arch/bigpic2.cs
new file mode 100644
index 000000000..b78c31b6b
--- /dev/null
+++ b/db/docs_src/ref/arch/bigpic2.cs
@@ -0,0 +1,55 @@
+m4_ignore([dnl
+#include <sys/types.h>
+#include <stdlib.h>
+
+#include <db.h>
+
+int foo();
+
+int
+main()
+{
+ return(foo());
+}
+
+int
+foo()
+{
+#define MAXIMUM_RETRY 5
+ DB_ENV *dbenv;
+ DB *dbp;
+ DBT key, data;
+ DB_TXN *tid;
+ int fail, ret, t_ret;
+])
+m4_indent([dnl
+for (fail = 0;;) {
+ /* Begin the transaction. */
+ if ((ret = dbenv-__GT__txn_begin(dbenv, NULL, &tid, 0)) != 0) {
+ dbenv-__GT__err(dbenv, ret, "dbenv-__GT__txn_begin");
+ exit (1);
+ }
+m4_blank
+ /* Store the key. */
+ switch (ret = dbp-__GT__put(dbp, tid, &key, &data, 0)) {
+ case 0:
+ /* Success: commit the change. */
+ printf("db: %s: key stored.\n", (char *)key.data);
+ if ((ret = tid-__GT__commit(tid, 0)) != 0) {
+ dbenv-__GT__err(dbenv, ret, "DB_TXN-__GT__commit");
+ exit (1);
+ }
+ return (0);
+ case DB_LOCK_DEADLOCK:
+ default:
+ /* Failure: retry the operation. */
+ if ((t_ret = tid-__GT__abort(tid)) != 0) {
+ dbenv-__GT__err(dbenv, t_ret, "DB_TXN-__GT__abort");
+ exit (1);
+ }
+ if (fail++ == MAXIMUM_RETRY)
+ return (ret);
+ continue;
+ }
+}])
+m4_ignore([}])
diff --git a/db/docs_src/ref/arch/progmodel.so b/db/docs_src/ref/arch/progmodel.so
new file mode 100644
index 000000000..6ec0e844a
--- /dev/null
+++ b/db/docs_src/ref/arch/progmodel.so
@@ -0,0 +1,33 @@
+m4_comment([$Id: progmodel.so,v 10.27 2001/03/01 15:57:54 bostic Exp $])
+
+m4_ref_title(Architecture, Programming model,, arch/bigpic, arch/apis)
+
+m4_p([dnl
+m4_db is a database library, in which the library is linked into the
+address space of the application using it. The code using m4_db may be
+a standalone application or it may be a server providing functionality
+to many clients via inter-process or remote-process communication
+(IPC/RPC).])
+
+m4_p([dnl
+In the standalone application model, one or more applications link the
+m4_db library directly into their address spaces. There may be many
+threads of control in this model because m4_db supports locking for both
+multiple processes and for multiple threads within a process. This
+model provides significantly faster access to the database
+functionality, but implies trust among all threads of control sharing
+the database environment because they will have the ability to read,
+write and potentially corrupt each other's data.])
+
+m4_p([dnl
+In the client-server model, developers write a database server
+application that accepts requests via some form of IPC/RPC, and issues
+calls to the m4_db interfaces based on those requests. In this model,
+the database server is the only application linking the m4_db library
+into its address space. The client-server model trades performance for
+protection because it does not require that the applications share a
+protection domain with the server, but IPC/RPC is slower than a function
+call. Of course, this model also greatly simplifies the creation of
+network client-server applications.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/arch/script.so b/db/docs_src/ref/arch/script.so
new file mode 100644
index 000000000..a025d0b3a
--- /dev/null
+++ b/db/docs_src/ref/arch/script.so
@@ -0,0 +1,29 @@
+m4_comment([$Id: script.so,v 10.15 2005/04/18 17:09:45 bostic Exp $])
+
+m4_ref_title(Architecture, Scripting languages,, arch/apis, arch/utilities)
+
+m4_section(Perl)
+
+m4_p([dnl
+Two Perl wrappers are distributed with the m4_db release. The Perl
+interface to m4_db version 1.85 is called DB_File. The Perl interface
+to m4_db version 2 and later is called BerkeleyDB. See
+m4_link(M4RELDIR/ref/ext/perl, Using m4_db with Perl) for more
+information.])
+
+
+m4_section(PHP)
+
+m4_p([dnl
+A PHP wrapper is distributed with the m4_db release. See
+m4_link(M4RELDIR/ref/ext/php, Using m4_db with PHP) for more
+information.])
+
+m4_section(Tcl)
+
+m4_p([dnl
+A Tcl wrapper is distributed with the m4_db release. See
+m4_link(M4RELDIR/ref/tcl/intro, Using m4_db with Tcl) for more
+information.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/arch/smallpic.fig b/db/docs_src/ref/arch/smallpic.fig
new file mode 100644
index 000000000..deca0cad4
--- /dev/null
+++ b/db/docs_src/ref/arch/smallpic.fig
@@ -0,0 +1,35 @@
+#FIG 3.2
+Landscape
+Center
+Inches
+Letter
+100.00
+Single
+-2
+1200 2
+6 2100 3600 3900 4050
+2 2 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 2100 3600 3900 3600 3900 4050 2100 4050 2100 3600
+4 1 0 0 0 0 16 0.0000 4 165 1170 3000 3900 Buffer Pool\001
+-6
+1 2 0 1 0 7 0 0 -1 0.000 1 0.0000 5100 3975 300 150 4800 4125 5400 3825
+1 2 0 1 0 7 0 0 -1 0.000 1 0.0000 5100 4575 300 150 4800 4725 5400 4425
+2 2 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 900 1800 2700 1800 2700 2250 900 2250 900 1800
+2 2 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 2100 900 3900 900 3900 1350 2100 1350 2100 900
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 2100 2250 2100 3600
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 4800 3975 4800 4575
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 5400 3975 5400 4575
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 3900 3900 4800 3900
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 2400 1350 2400 1800
+4 1 0 0 0 0 16 0.0000 4 165 1590 1800 2100 Access Methods\001
+4 0 0 0 0 0 16 0.0000 4 225 1260 2400 1200 Applications\001
diff --git a/db/docs_src/ref/arch/smallpic.gif b/db/docs_src/ref/arch/smallpic.gif
new file mode 100644
index 000000000..5eb7ae8da
--- /dev/null
+++ b/db/docs_src/ref/arch/smallpic.gif
Binary files differ
diff --git a/db/docs_src/ref/arch/smallpic.pic b/db/docs_src/ref/arch/smallpic.pic
new file mode 100644
index 000000000..8406a8a63
--- /dev/null
+++ b/db/docs_src/ref/arch/smallpic.pic
@@ -0,0 +1,16 @@
+.PS 3i 3i
+.ps 11
+"\s16\fRApplications\fP" at 2.000,9.544 ljust
+"\s16\fRBuffer Pool\fP" at 2.500,7.294
+ellipse at 4.250,7.188 wid 0.500 ht 0.250
+ellipse at 4.250,6.688 wid 0.500 ht 0.250
+box with .sw at (0.75,8.62) width 1.50 height 0.38
+box with .sw at (1.75,9.38) width 1.50 height 0.38
+line -> from 1.750,8.625 to 1.750,7.500
+line from 4.000,7.188 to 4.000,6.688
+line from 4.500,7.188 to 4.500,6.688
+line -> from 3.250,7.250 to 4.000,7.250
+line -> from 2.000,9.375 to 2.000,9.000
+"\s16\fRAccess Methods\fP" at 1.500,8.794
+box with .sw at (1.75,7.12) width 1.50 height 0.38
+.PE
diff --git a/db/docs_src/ref/arch/utilities.so b/db/docs_src/ref/arch/utilities.so
new file mode 100644
index 000000000..b04687513
--- /dev/null
+++ b/db/docs_src/ref/arch/utilities.so
@@ -0,0 +1,75 @@
+m4_comment([$Id: utilities.so,v 10.25 2001/03/05 19:15:07 bostic Exp $])
+
+m4_ref_title(Architecture,
+ Supporting utilities, @utilities, arch/script, env/intro)
+
+m4_p([dnl
+The following are the standalone utilities that provide supporting
+functionality for the m4_db environment:])
+
+m4_tagbegin
+
+m4_tag(m4_ref(berkeley_db_svc), [dnl
+The m4_ref(berkeley_db_svc) utility is the m4_db RPC server that
+provides standard server functionality for client applications.])
+
+m4_tag(m4_ref(db_archive), [dnl
+The m4_ref(db_archive) utility supports database backup and archival,
+and log file administration. It facilitates log reclamation and the
+creation of database snapshots. Generally, some form of log archival
+must be done if a database environment has been configured for logging
+or transactions.])
+
+m4_tag(m4_ref(db_checkpoint), [dnl
+The m4_ref(db_checkpoint) utility runs as a daemon process, monitoring
+the database log and periodically issuing checkpoints. It facilitates
+log reclamation and the creation of database snapshots. Generally, some
+form of database checkpointing must be done if a database environment has
+been configured for transactions.])
+
+m4_tag(m4_ref(db_deadlock), [dnl
+The m4_ref(db_deadlock) utility runs as a daemon process, periodically
+traversing the database lock structures and aborting transactions when it
+detects a deadlock. Generally, some form of deadlock detection must be
+done if a database environment has been configured for locking.])
+
+m4_tag(m4_ref(db_dump), [dnl
+The m4_ref(db_dump) utility writes a copy of the database to a flat-text
+file in a portable format.])
+
+m4_tag(m4_ref(db_load), [dnl
+The m4_ref(db_load) utility reads the flat-text file produced by
+m4_ref(db_dump) and loads it into a database file.])
+
+m4_tag(m4_ref(db_printlog), [dnl
+The m4_ref(db_printlog) utility displays the contents of m4_db log files
+in a human-readable and parsable format.])
+
+m4_tag(m4_ref(db_recover), [dnl
+The m4_ref(db_recover) utility runs after an unexpected m4_db or system
+failure to restore the database to a consistent state. Generally, some
+form of database recovery must be done if databases are being modified.])
+
+m4_tag(m4_ref(db_stat) , [dnl
+The m4_ref(db_stat) utility displays statistics for databases and database
+environments.])
+
+m4_tag(m4_ref(db_upgrade), [dnl
+The m4_ref(db_upgrade) utility provides a command-line interface for
+upgrading underlying database formats.])
+
+m4_tag(m4_ref(db_verify), [dnl
+The m4_ref(db_verify) utility provides a command-line interface for
+verifying the database format.])
+
+m4_tagend
+
+m4_p([dnl
+All of the functionality implemented for these utilities is also available
+as part of the standard m4_db API. This means that threaded applications
+can easily create a thread that calls the same m4_db functions as do the
+utilities. This often simplifies an application environment by removing
+the necessity for multiple processes to negotiate database and database
+environment creation and shut down.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/build_brew/intro.so b/db/docs_src/ref/build_brew/intro.so
new file mode 100644
index 000000000..4d4d6a72f
--- /dev/null
+++ b/db/docs_src/ref/build_brew/intro.so
@@ -0,0 +1,135 @@
+m4_comment([$Id: intro.so,v 1.7 2007/07/10 16:54:16 bostic Exp $])
+
+m4_ref_title(Building m4_db for BREW,
+ Building for BREW, @building for BREW, debug/printlog, build_s60/intro)
+
+m4_p([dnl
+This page has general instructions for building the m4_db library
+and applets for the BREW platform.])
+
+m4_section([Building m4_db for the BREW simulator])
+
+m4_p([dnl
+The m4_path(build_brew) directory in the m4_db distribution contains
+project files for Microsoft Visual C++:])
+
+m4_table_begin(, _center)
+m4_table_header(Project File, Description)
+m4_table_element(_left, bdb_brew.dsw, Visual C++ 6.0 workspace)
+m4_table_element(_left, bdb_brew.dsp, Visual C++ 6.0 project)
+m4_table_end
+
+m4_p([dnl
+The project file can be used to build the m4_db library for the BREW
+platform. Both BREW SDK versions 2 and 3 are supported. By default, the
+build is for BREW SDK version 2.])
+
+m4_p([dnl
+The steps for building the m4_db library for the BREW Simulator are as
+follows:])
+
+m4_nlistbegin
+m4_nlist([dnl
+Install the BREW SDK and BREW SDK Tools.])
+m4_nlist([dnl
+To build for BREW SDK version 3, edit the m4_db source distribution file
+m4_path(build_brew/db_config.h) file and m4_bold(remove) the line
+"#define HAVE_BREW_SDK2". No changes are required to build for BREW SDK
+version 2.])
+m4_nlist([dnl
+Select m4_italic(File -__GT__ Open Workspace). Look in the build_brew
+directory for Workspaces, select m4_italic(bdb_brew.dsw), and select
+m4_italic(Open).])
+m4_nlist([dnl
+The BREW SDK creates an environment entry "BREWDIR" after the SDK
+installation. Confirm the entry exists, and if not, create an
+environment entry which points to the BREW SDK's root directory.])
+m4_nlist([dnl
+For the BREW platform, only the project "bdb_brew" is available. Set
+the bdb_brew project as the active project and select the appropriate
+option for the build_all project (Debug or Release). Then select
+m4_italic(OK).])
+m4_nlist([dnl
+To build, press F7.])
+m4_nlistend
+
+m4_p([dnl
+The build results are placed in a subdirectory of build_brew named after
+the selected configuration (for example, m4_path(build_brew\Release) or
+m4_path(build_brew\Debug)).])
+
+m4_p([dnl
+When building the application during development, you should normally
+use compile options "Debug Multithreaded DLL" and link against
+m4_path([build_brew\Debug\bdb_brew.lib]). You can also build using a
+release version of the m4_db libraries and tools, which will be placed
+in m4_path([build_brew\Release\bdb_brew.lib]). When linking against the
+release build, you should compile your code with the "Release
+Multithreaded DLL" compile option. You will also need to add the
+m4_path(build_brew) directory to the list of include directories of your
+application's project, or copy the m4_db include files to another
+location.])
+
+m4_section([Building a BREW applet with m4_db library])
+
+m4_p([dnl
+Building a m4_db application in the BREW environment is similar to
+building in a Windows environment. Ensure that m4_path(db.h) is in the
+build include path and m4_path(bdb_brew.lib) is in the build library
+path (alternatively, you can add project dependencies to the
+m4_path(bdb_brew) project).])
+
+m4_p([dnl
+BREW applets require a few minor additions:])
+
+m4_nlistbegin
+m4_nlist([dnl
+The m4_bold(BDBApp) structure must be extended -- the extended
+definition of BDBApp is found in the include file m4_path(db.h).])
+m4_nlist([dnl
+Before any m4_db operations are performed, the applet must call the "int
+brew_bdb_begin(void)" function. This function returns 0 on success, and
+non-zero on failure.])
+m4_nlist([dnl
+After the last m4_db operation is performed, the applet must call the
+"void brew_bdb_end(void)" function. Note that the brew_bdb_end function
+cannot be called in the applet "cleanup" function. If that is a
+requirement, use the following code instead:
+m4_indent([dnl
+BDBApp *pMe=(BDBApp *)po;
+if (pMe-__GT__db_global_values != NULL)
+ FREE(pMe-__GT__db_global_values);])])
+m4_nlistend
+
+m4_section([Building a BREW applet for the physical device])
+
+m4_p([dnl
+The binaries linked with the m4_db library for the BREW simulator are
+not target files that can run on the physical device. In order to build
+for the physical device, an ARM compiler is needed: the recommended ARM
+compiler is ARM Developer Suite 1.2.])
+
+m4_p([dnl
+The steps for building a BREW applet for the physical device are as
+follows:])
+
+m4_nlistbegin
+m4_nlist([dnl
+Set the target BREW Applet project as the active project.])
+m4_nlist([dnl
+Select "Generate ARM Make file" in the BREW tool bar for VC6, and a make
+file will be generated (if this step does not work, confirm your ADS was
+correctly installed).])
+m4_nlist([dnl
+The m4_db library must then be manually added to this make file. See the
+m4_path(build_brew\bdbread.mak) file in the m4_db distribution for an
+example.])
+m4_nlist([dnl
+Select m4_italic(Tools -__GT__ BREW Application 'Make') to build.])
+m4_nlistend
+
+m4_p([dnl
+The target .mod file will be created in the build directory, and this
+is the file which should be uploaded to the physical device.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/build_s60/intro.so b/db/docs_src/ref/build_s60/intro.so
new file mode 100644
index 000000000..0848302df
--- /dev/null
+++ b/db/docs_src/ref/build_s60/intro.so
@@ -0,0 +1,86 @@
+m4_comment([$Id: intro.so,v 1.7 2007/07/07 14:34:54 bostic Exp $])
+
+m4_ref_title(Building m4_db for S60,
+ Building for S60, @building for S60,
+ build_brew/intro, build_unix/intro)
+
+m4_p([dnl
+This page has general instructions for building the m4_db library and
+applications for the S60 platform.])
+
+m4_p([dnl
+Building m4_db for S60 requires S60 SDK version 3 or above with
+Symbian V9.1 or above; the 3rd Edition FP1 SDK is recommended.])
+
+m4_p([dnl
+The NOKIA OpenC plugin should be installed on both emulator and device.])
+
+m4_p([dnl
+CodeWarrior IDE for S60 V3.1 is recommended.])
+
+m4_section([dnl
+Building m4_db for the S60 Emulator])
+
+m4_p([dnl
+The m4_path(build_s60) directory in the m4_db distribution contains
+a m4_path(bdb_s60.mmp) project file, which can be imported to
+CodeWarrior or Carbide, etc. This project file can be used to build the
+m4_db library for the S60 platform.])
+
+m4_p([dnl
+The steps for building the m4_db library for the S60 emulator are
+as follows:])
+
+m4_nlistbegin
+m4_nlist([dnl
+Install the S60 SDK and OpenC library.])
+m4_nlist([dnl
+In CodeWarrior, select m4_italic([File -__GT__ Import project from .mmp file]).])
+m4_nlist([dnl
+Select an SDK to use with this project: m4_italic([nokia -__GT__S60 S60_3rd_FP1]).])
+m4_nlist([dnl
+Click to browse for MMP file selection. Look in the
+m4_path(build_s60) directory for Workspaces and select
+m4_italic(bdb_s60.mmp).])
+m4_nlist([Click Next.])
+m4_nlist([Click Finish.])
+m4_nlist([dnl
+Select build target to WINSCW UDEB, to build, press F7.])
+m4_nlistend
+
+m4_p([dnl
+The build will create the file m4_path(bdb_s60.lib), which is
+installed into m4_path($EPOCROOT/epoc32/ release/winscw/udeb), which can
+be linked by m4_db applications for the emulator.])
+
+m4_section([Building m4_db Library for the Device])
+
+m4_nlistbegin
+m4_nlist([dnl
+Install the CSL Arm tool chain.])
+m4_nlist([dnl
+From m4_path($EPOCROOT/epoc32/release/armv5/lib), add OpenC library
+libpthread.dso to the GCCE library(libc.dso already added).])
+m4_nlist([dnl
+Since m4_db uses old-style function definitions, it will not be accepted
+by the default compiler:arm-none-symbianelf-g++.exe. Change the
+compiler to arm-none-symbianelf-gcc.exe and specify the "-x c" option
+there.])
+m4_nlist([dnl
+Select build target to GCCE UREL, to build, press F7.])
+m4_nlistend
+
+m4_p([dnl
+The build will create the file m4_path(bdb_s60.lib), which is
+installed into m4_path($EPOCROOT/epoc32/ release/armv5/urel), which can
+be linked by m4_db applications for device.])
+
+m4_section([Building a S60 application with the m4_db library])
+
+m4_p([dnl
+Building a m4_db application in the S60 environment is similar
+to building in a Windows environment. Ensure the include file
+m4_path(build_s60/db.h) is in the build include path and the created
+m4_path(bdb_s60.lib) is in the build library path.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/build_unix/aix.so b/db/docs_src/ref/build_unix/aix.so
new file mode 100644
index 000000000..b48cb495f
--- /dev/null
+++ b/db/docs_src/ref/build_unix/aix.so
@@ -0,0 +1,104 @@
+m4_comment([$Id: aix.so,v 11.27 2005/04/06 01:45:22 mjc Exp $])
+
+m4_ref_title(Building m4_db for UNIX/POSIX systems,
+ AIX, @AIX, build_unix/notes, build_unix/freebsd)
+
+m4_nlistbegin
+
+m4_nlist([dnl
+m4_bold([I can't compile and run multithreaded applications.])
+
+m4_p([dnl
+Special compile-time flags are required when compiling threaded
+applications on AIX. If you are compiling a threaded application, you
+must compile with the _THREAD_SAFE flag and load with specific
+libraries; for example, "-lc_r". Specifying the compiler name with a
+trailing "_r" usually performs the right actions for the system.])
+
+m4_indent([dnl
+xlc_r ...
+cc -D_THREAD_SAFE -lc_r ...])
+
+m4_p([dnl
+The m4_db library will automatically build with the correct options.])])
+
+m4_hl
+m4_nlist([dnl
+m4_bold([I can't run using the m4_ref(DB_SYSTEM_MEM) option to
+m4_ref(dbenv_open).])
+
+m4_p([dnl
+AIX 4.1 allows applications to map only 10 system shared memory
+segments. In AIX 4.3, this has been raised to 256K segments, but only
+if you set the environment variable "export EXTSHM=ON".])])
+
+m4_hl
+m4_nlist([m4_bold([dnl
+On AIX 4.3.2 (or before) I see duplicate symbol warnings when
+building the C++ shared library and when linking applications.])
+
+m4_p([dnl
+We are aware of some duplicate symbol warnings with this platform,
+but they do not appear to affect the correct operation of applications.])])
+
+m4_hl
+m4_nlist([m4_bold([dnl
+On AIX 4.3.3 I see undefined symbols for DbEnv::set_error_stream,
+Db::set_error_stream or DbEnv::verify when linking C++ applications.
+(These undefined symbols also appear when building the m4_db C++ example
+applications).])
+
+m4_p([dnl
+By default, m4_db is built with _LARGE_FILES set to 1 to support the
+creation of "large" database files. However, this also affects how
+standard classes, like iostream, are named internally. When building
+your application, use a "-D_LARGE_FILES=1" compilation option, or insert
+"[#define _LARGE_FILES 1]" before any [#include] statements.])])
+
+m4_hl
+m4_nlist([dnl
+m4_bold([I can't create database files larger than 1GB on AIX.])
+
+m4_p([dnl
+If you're running on AIX 4.1 or earlier, try changing the source code
+for m4_path(os/os_open.c) to always specify the m4_bold(O_LARGEFILE)
+flag to the m4_manref(open, 2) system call, and recompile m4_db from
+scratch.])
+
+m4_p([dnl
+Also, the documentation for the IBM Visual Age compiler states that it
+does not not support the 64-bit filesystem APIs necessary for creating
+large files; the ibmcxx product must be used instead. We have not heard
+whether the GNU gcc compiler supports the 64-bit APIs or not.])
+
+m4_p([dnl
+Finally, to create large files under AIX, the filesystem has to be
+configured to support large files and the system wide user hard-limit
+for file sizes has to be greater than 1GB.])])
+
+m4_hl
+m4_nlist([dnl
+m4_bold([I see errors about "open64" when building m4_db applications.])
+
+m4_p([dnl
+System include files (most commonly fcntl.h) in some releases of AIX,
+HP-UX and Solaris redefine "open" when large-file support is enabled for
+applications. This causes problems when compiling applications because
+"open" is a method in the m4_db APIs. To work around this problem:
+m4_nlistbegin
+m4_nlist([dnl
+Avoid including the problematical system include files in source code
+files which also include m4_db include files and call into the m4_db
+API.])
+m4_nlistns([dnl
+Before building m4_db, modify the generated include file db.h to itself
+include the problematical system include files.])
+m4_nlistns([dnl
+Turn off m4_db large-file support by specifying the
+m4_linkpage(M4RELDIR/ref/build_unix/conf, --disable-largefile,
+--disable-largefile) configuration option and rebuilding.])
+m4_nlistend])])
+
+m4_nlistend
+
+m4_page_footer
diff --git a/db/docs_src/ref/build_unix/conf.so b/db/docs_src/ref/build_unix/conf.so
new file mode 100644
index 000000000..b79640022
--- /dev/null
+++ b/db/docs_src/ref/build_unix/conf.so
@@ -0,0 +1,245 @@
+m4_comment([$Id: conf.so,v 10.66 2007/04/05 20:36:38 bostic Exp $])
+
+m4_ref_title(Building m4_db for UNIX/POSIX systems,
+ Configuring m4_db,
+ [@configuring m4_db for UNIX systems, configuring m4_db for @UNIX systems],
+ build_unix/intro, build_unix/small)
+
+m4_p([dnl
+There are several arguments you can specify when configuring m4_db.
+Although only the m4_db-specific ones are described here, most of the
+standard GNU autoconf arguments are available and supported. To see a
+complete list of possible arguments, specify the --help flag to the
+configure program.])
+
+m4_p([dnl
+The m4_db specific arguments are as follows:])
+
+m4_tagbegin
+
+m4_idefz(configuring without large @file support)
+m4_tag([m4_idef(--disable-largefile)], [dnl
+Some systems, notably versions of HP/UX and Solaris, require special
+compile-time options in order to create files larger than 2^32 bytes.
+These options are automatically enabled when m4_db is compiled. For
+this reason, binaries built on current versions of these systems may
+not run on earlier versions of the system because the library and system
+calls necessary for large files are not available. To disable building
+with these compile-time options, enter --disable-largefile as an argument
+to configure.])
+
+m4_idefz(disabling @shared libraries, disabling @static libraries)
+m4_tag([m4_idef(--disable-shared), m4_idef(--disable-static)], [dnl
+On systems supporting shared libraries, m4_db builds both static and
+shared libraries by default. (Shared libraries are built using
+m4_linkweb(http://www.gnu.org/software/libtool/libtool.html, [the GNU
+Project's Libtool]) distribution, which supports shared library builds
+on many (although not all) systems.) To not build shared libraries,
+configure using the --disable-shared argument. To not build static
+libraries, configure using the --disable-static argument.])
+
+m4_idefz(configuring m4_db @1.85 API compatibility)
+m4_tag([m4_idef(--enable-compat185)], [dnl
+To compile or load m4_db 1.85 applications against this release of the
+m4_db library, enter --enable-compat185 as an argument to configure.
+This will include m4_db 1.85 API compatibility code in the library.])
+
+m4_idefz(configuring the @C++ API)
+m4_tag([m4_idef(--enable-cxx)], [dnl
+To build the m4_db C++ API, enter --enable-cxx as an argument to
+configure.])
+
+m4_tag([m4_idef(--enable-debug)], [dnl
+To build m4_db with m4_bold(-g) as a compiler flag and with
+m4_bold(DEBUG) #defined during compilation, enter --enable-debug as an
+argument to configure. This will create a m4_db library and utilities
+with debugging symbols, as well as load various routines that can be
+called from a debugger to display pages, cursor queues, and so forth.
+If installed, the utilities will not be stripped. This argument should
+not be specified when configuring to build production binaries.])
+
+m4_tag([m4_idef(--enable-debug_rop)], [dnl
+To build m4_db to output log records for read operations, enter
+--enable-debug_rop as an argument to configure. This argument should not
+be specified when configuring to build production binaries.])
+
+m4_tag([m4_idef(--enable-debug_wop)], [dnl
+To build m4_db to output log records for write operations, enter
+--enable-debug_wop as an argument to configure. This argument should not
+be specified when configuring to build production binaries.])
+
+m4_tag([m4_idef(--enable-diagnostic)], [dnl
+To build m4_db with run-time debugging checks, enter --enable-diagnostic
+as an argument to configure. This causes a number of additional checks
+to be performed when m4_db is running, and also causes some failures to
+trigger process abort rather than returning errors to the application.
+Applications built using this argument should not share database
+environments with applications built without this argument. This
+argument should not be specified when configuring to build production
+binaries.])
+
+m4_idefz(building a utility to dump m4_db @1.85 databases)
+m4_tag([m4_idef(--enable-dump185)], [dnl
+To convert m4_db 1.85 (or earlier) databases to this release of m4_db,
+enter --enable-dump185 as an argument to configure. This will build the
+m4_ref(db_dump185) utility, which can dump m4_db 1.85 and 1.86 databases
+in a format readable by the m4_db m4_ref(db_load) utility.
+m4_p([dnl
+The system libraries with which you are loading the m4_ref(db_dump185)
+utility must already contain the m4_db 1.85 library routines for this
+to work because the m4_db distribution does not include them. If you
+are using a non-standard library for the m4_db 1.85 library routines,
+you will have to change the Makefile that the configuration step creates
+to load the m4_ref(db_dump185) utility with that library.])])
+
+m4_idefz(configuring the @Java API)
+m4_tag([m4_idef(--enable-java)], [dnl
+To build the m4_db Java API, enter --enable-java as an argument to
+configure. To build Java, you must also build with shared libraries.
+Before configuring, you must set your PATH environment variable to
+include javac. Note that it is not sufficient to include a symbolic
+link to javac in your PATH because the configuration process uses the
+location of javac to determine the location of the Java include files
+(for example, jni.h). On some systems, additional include directories
+may be needed to process jni.h; see m4_link(flags, Changing compile or
+load options) for more information.])
+
+m4_idefz(configuring the fine-grained lock manager)
+m4_tag([m4_idef(--enable-fine_grained_lock_manager)], [dnl
+For highly concurrent m4_db applications on multithreaded, multi-core
+architectures (for example, Sun Microsystem's Niagara systems), it may
+be advantageous to configure m4_db for finer-grained locking behavior
+in the lock manager subsystem. To build with m4_db with finer-grained
+locking behavior in the lock manager subsystem, enter
+--enable-fine_grained_lock_manager as an argument to configure. This
+option should not be configured without performance testing to confirm
+the finer-grained locking behavior increases overall throughput, as this
+option will decrease overall throughput for some applications.])
+
+m4_tag([m4_idef(--enable-posixmutexes)], [dnl
+To force m4_db to use the POSIX pthread mutex interfaces for underlying
+mutex support, enter --enable-posixmutexes as an argument to configure.
+This is rarely necessary: POSIX mutexes will be selected automatically
+on systems where they are the preferred implementation.
+m4_p([dnl
+The --enable-posixmutexes configuration argument is normally used in
+two ways: First, when there are multiple mutex implementations available
+and the POSIX mutex implementation is not the preferred one (for
+example, on Solaris where the LWP mutexes are used by default). Second,
+by default the m4_db library will only select the POSIX mutex
+implementation if it supports mutexes shared between multiple processes,
+as described for the pthread_condattr_setpshared and
+pthread_mutexattr_setpshared interfaces. The --enable-posixmutexes
+configuration argument can be used to force the selection of POSIX
+mutexes in this case, which can improve application performance
+significantly when the alternative mutex implementation is a
+non-blocking one (for example test-and-set assembly instructions).
+However, configuring to use POSIX mutexes when the implementation does
+not have inter-process support will only allow the creation of private
+database environments, that is, environments where the
+m4_ref(DB_PRIVATE) flag is specified to the m4_refT(dbenv_open).])
+m4_p([dnl
+Specifying the --enable-posixmutexes configuration argument may require
+that applications and m4_db be linked with the -lpthread library.])])
+
+m4_tag([m4_idef(--enable-pthread_api)], [dnl
+To configure m4_db for a POSIX pthreads application (with the exception
+that POSIX pthread mutexes may not be selected as the underlying mutex
+implementation for the build), enter --enable-pthread_api as an argument
+to configure. The build will include the m4_db replication manager
+interfaces and will use the POSIX standard pthread_self and
+pthread_yield functions to identify threads of control and yield the
+processor. The --enable-pthread_api argument requires POSIX pthread
+support already be installed on your system.
+m4_p([dnl
+Specifying the --enable-pthread_api configuration argument may require
+that applications and m4_db be linked with the -lpthread library.])])
+
+m4_idefz(configuring a @RPC client/server)
+m4_tag([m4_idef(--enable-rpc)], [dnl
+To build the m4_db RPC client code and server utility, enter --enable-rpc
+as an argument to configure. The --enable-rpc argument requires that RPC
+support already be installed on your system.])
+
+m4_idefz(configuring a small memory @footprint library)
+m4_tag([m4_idef(--enable-smallbuild)], [dnl
+To build a small memory footprint version of the m4_db library, enter
+--enable-smallbuild as an argument to configure. The
+--enable-smallbuild argument is equivalent to individually specifying
+--disable-cryptography, --disable-hash, --disable-queue,
+--disable-replication, --disable-statistics and --disable-verify,
+turning off cryptography support, the Hash and Queue access methods,
+database environment replication support and database verification
+support. See m4_linkpage(M4RELDIR/ref/build_unix/small, Building a
+small memory footprint library) for more information.])
+
+m4_idefz(configuring the @Tcl API)
+m4_tag([m4_idef(--enable-tcl)], [dnl
+To build the m4_db Tcl API, enter --enable-tcl as an argument to
+configure. This configuration argument expects to find Tcl's tclConfig.sh
+file in the m4_path(/usr/local/lib) directory. See the --with-tcl
+argument for instructions on specifying a non-standard location for the
+Tcl installation. See m4_link(M4RELDIR/ref/tcl/intro, Loading m4_db
+with Tcl) for information on sites from which you can download Tcl and
+which Tcl versions are compatible with m4_db. To build Tcl, you must
+also build with shared libraries.])
+
+m4_idefz(configuring the @test suite)
+m4_tag([m4_idef(--enable-test)], [dnl
+To build the m4_db test suite, enter --enable-test as an argument to
+configure. To run the m4_db test suite, you must also build the Tcl
+API. This argument should not be specified when configuring to build
+production binaries.])
+
+m4_tag([m4_idef(--enable-uimutexes)], [dnl
+To force m4_db to use the UNIX International (UI) mutex interfaces for
+underlying mutex support, enter --enable-uimutexes as an argument to
+configure. This is rarely necessary: UI mutexes will be selected
+automatically on systems where they are the preferred implementation.
+m4_p([dnl
+The --enable-uimutexes configuration argument is normally used when
+there are multiple mutex implementations available and the UI mutex
+implementation is not the preferred one (for example, on Solaris where
+the LWP mutexes are used by default).])
+m4_p([dnl
+Specifying the --enable-uimutexes configuration argument may require
+that applications and m4_db be linked with the -lthread library.])])
+
+m4_tag([m4_idef(--enable-umrw)], [dnl
+Rational Software's Purify product and other run-time tools complain
+about uninitialized reads/writes of structure fields whose only purpose
+is padding, as well as when heap memory that was never initialized is
+written to disk. Specify the --enable-umrw argument during
+configuration to mask these errors. This argument should not be
+specified when configuring to build production binaries.])
+
+m4_tag([m4_idef(--with-mutex=MUTEX)], [dnl
+To force m4_db to use a specific mutex implementation, configure with
+--with-mutex=MUTEX, where MUTEX is the mutex implementation you want.
+For example, --with-mutex=x86/gcc-assembly will configure m4_db to use
+the x86 GNU gcc compiler based test-and-set assembly mutexes. This is
+rarely necessary and should be done only when the default configuration
+selects the wrong mutex implementation. A list of available mutex
+implementations can be found in the distribution file
+m4_path(dist/aclocal/mutex.ac).])
+
+m4_tag([m4_idef(--with-tcl=DIR)], [dnl
+To build the m4_db Tcl API, enter --with-tcl=DIR, replacing DIR with
+the directory in which the Tcl tclConfig.sh file may be found. See
+m4_link(M4RELDIR/ref/tcl/intro, Loading m4_db with Tcl) for information
+on sites from which you can download Tcl and which Tcl versions are
+compatible with m4_db. To build Tcl, you must also build with shared
+libraries.])
+
+m4_tag([m4_idef(--with-uniquename=NAME)], [dnl
+To build m4_db with unique symbol names (in order to avoid conflicts
+with other application modules or libraries), enter --with-uniquename=NAME,
+replacing NAME with a string that to be appended to every m4_db symbol.
+If "=NAME" is not specified, a default value of "_MAJORMINOR" is used,
+where MAJORMINOR is the major and minor release numbers of the m4_db
+release. See m4_link(M4RELDIR/ref/install/multiple, Building with
+multiple versions of m4_db) for more information.])
+
+m4_tagend
+
+m4_page_footer
diff --git a/db/docs_src/ref/build_unix/flags.so b/db/docs_src/ref/build_unix/flags.so
new file mode 100644
index 000000000..1f9212240
--- /dev/null
+++ b/db/docs_src/ref/build_unix/flags.so
@@ -0,0 +1,83 @@
+m4_comment([$Id: flags.so,v 10.13 2006/10/05 01:06:05 bostic Exp $])
+
+define(__m4_product_name, m4_db)
+define(__m4_directory, build_unix)
+define(__m4_prev_link, build_unix/small)
+
+m4_ref_title(Building __m4_product_name for UNIX/POSIX systems,
+ Changing compile or load options,
+ [changing @compile or load options,
+ changing compile or @load options],
+ __m4_prev_link, __m4_directory/install)
+
+m4_p([dnl
+You can specify compiler and/or compile and load time flags by using
+environment variables during __m4_product_name configuration. For
+example, if you want to use a specific compiler, specify the CC
+environment variable before running configure:])
+
+m4_indent([prompt: env CC=gcc ../dist/configure])
+
+m4_p([dnl
+Using anything other than the native compiler will almost certainly mean
+that you'll want to check the flags specified to the compiler and
+loader, too.])
+
+m4_p([dnl
+To specify debugging and optimization options for the C compiler,
+use the CFLAGS environment variable:])
+
+m4_indent([prompt: env CFLAGS=-O2 ../dist/configure])
+
+m4_p([dnl
+To specify header file search directories and other miscellaneous options
+for the C preprocessor and compiler, use the CPPFLAGS environment variable:])
+
+m4_indent([prompt: env CPPFLAGS=-I/usr/contrib/include ../dist/configure])
+
+m4_p([dnl
+To specify debugging and optimization options for the C++ compiler,
+use the CXXFLAGS environment variable:])
+
+m4_indent([prompt: env CXXFLAGS=-Woverloaded-virtual ../dist/configure])
+
+m4_p([dnl
+To specify miscellaneous options or additional library directories for
+the linker, use the LDFLAGS environment variable:])
+
+m4_indent([prompt: env LDFLAGS="-N32 -L/usr/local/lib" ../dist/configure])
+
+m4_p([dnl
+If you want to specify additional libraries, set the LIBS environment
+variable before running configure. For example, the following would
+specify two additional libraries to load, "posix" and "socket":])
+
+m4_indent([prompt: env LIBS="-lposix -lsocket" ../dist/configure])
+
+m4_p([dnl
+Make sure that you prepend -L to any library directory names and that you
+prepend -I to any include file directory names! Also, if the arguments
+you specify contain blank or tab characters, be sure to quote them as
+shown previously; that is with single or double quotes around the values
+you are specifying for LIBS.])
+
+m4_p([dnl
+The env command, which is available on most systems, simply sets one or
+more environment variables before running a command. If the env command
+is not available to you, you can set the environment variables in your
+shell before running configure. For example, in sh or ksh, you could
+do the following:])
+
+m4_indent([prompt: LIBS="-lposix -lsocket" ../dist/configure])
+
+m4_p([dnl
+In csh or tcsh, you could do the following:])
+
+m4_indent([dnl
+prompt: setenv LIBS "-lposix -lsocket"
+prompt: ../dist/configure])
+
+m4_p([dnl
+See your command shell's manual page for further information.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/build_unix/freebsd.so b/db/docs_src/ref/build_unix/freebsd.so
new file mode 100644
index 000000000..fa1ca6087
--- /dev/null
+++ b/db/docs_src/ref/build_unix/freebsd.so
@@ -0,0 +1,68 @@
+m4_comment([$Id: freebsd.so,v 11.18 2003/04/01 17:21:45 bostic Exp $])
+
+m4_ref_title(Building m4_db for UNIX/POSIX systems,
+ FreeBSD, @FreeBSD, build_unix/aix, build_unix/hpux)
+
+m4_nlistbegin
+
+m4_nlist([dnl
+m4_bold([I can't compile and run multithreaded applications.])
+
+m4_p([dnl
+Special compile-time flags are required when compiling threaded
+applications on FreeBSD. If you are compiling a threaded application,
+you must compile with the _THREAD_SAFE and -pthread flags:])
+
+m4_indent([cc -D_THREAD_SAFE -pthread ...])
+
+m4_p([dnl
+The m4_db library will automatically build with the correct options.])])
+
+m4_hl
+m4_nlist([dnl
+m4_bold([I get occasional failures when running RPC-based programs under
+FreeBSD clients.])
+
+m4_p([dnl
+There is a known bug in the XDR implementation in the FreeBSD C library
+from version 2.2 up to version 4.0-RELEASE, that causes certain-sized
+messages to fail and return a zero-filled reply to the client. A bug
+report (#16028) has been filed with FreeBSD. The following patch is the
+FreeBSD fix:])
+
+m4_indent([dnl
+*** /usr/src/lib/libc/xdr/xdr_rec.c.orig Mon Jan 10 10:20:42 2000
+--- /usr/src/lib/libc/xdr/xdr_rec.c Wed Jan 19 10:53:45 2000
+***************
+*** 558,564 ****
+ * but we don't have any way to be certain that they aren't
+ * what the client actually intended to send us.
+ */
+! if ((header & (~LAST_FRAG)) == 0)
+ return(FALSE);
+ rstrm-__GT__fbtbc = header & (~LAST_FRAG);
+ return (TRUE);
+--- 558,564 ----
+ * but we don't have any way to be certain that they aren't
+ * what the client actually intended to send us.
+ */
+! if (header == 0)
+ return(FALSE);
+ rstrm-__GT__fbtbc = header & (~LAST_FRAG);
+ return (TRUE);
+])])
+
+m4_hl
+m4_nlist([dnl
+m4_bold([I see fsync and close system call failures when accessing
+databases or log files on NFS-mounted filesystems.])
+
+m4_p([dnl
+Some FreeBSD releases are known to return ENOLCK from fsync and close
+calls on NFS-mounted filesystems, even though the call has succeeded.
+The m4_db code should be modified to ignore ENOLCK errors, or no m4_db
+files should be placed on NFS-mounted filesystems on these systems.])])
+
+m4_nlistend
+
+m4_page_footer
diff --git a/db/docs_src/ref/build_unix/hpux.so b/db/docs_src/ref/build_unix/hpux.so
new file mode 100644
index 000000000..954848f09
--- /dev/null
+++ b/db/docs_src/ref/build_unix/hpux.so
@@ -0,0 +1,122 @@
+m4_comment([$Id: hpux.so,v 11.17 2004/08/13 03:38:59 bostic Exp $])
+
+m4_ref_title(Building m4_db for UNIX/POSIX systems,
+ HP-UX, @HP-UX, build_unix/freebsd, build_unix/irix)
+
+m4_nlistbegin
+
+m4_nlist([dnl
+m4_bold([I can't specify the m4_ref(DB_SYSTEM_MEM) flag to m4_ref(dbenv_open).])
+
+m4_p([dnl
+The m4_manref(shmget, 2) interfaces are not always used on HP-UX, even
+though they exist, because anonymous memory allocated using m4_manref(shmget, 2)
+cannot be used to store the standard HP-UX msemaphore semaphores. For
+this reason, it may not be possible to specify the m4_ref(DB_SYSTEM_MEM)
+flag on some versions of HP-UX. (We have seen this problem only on HP-UX
+10.XX, so the simplest workaround may be to upgrade your HP-UX release.)])])
+
+m4_hl
+m4_nlist([dnl
+m4_bold([I can't specify both the m4_ref(DB_PRIVATE) and m4_ref(DB_THREAD)
+flags to m4_ref(dbenv_open).])
+
+m4_p([dnl
+It is not possible to store the standard HP-UX msemaphore semaphores in
+memory returned by m4_manref(malloc, 3) in some versions of HP-UX. For
+this reason, it may not be possible to specify both the
+m4_ref(DB_PRIVATE) and m4_ref(DB_THREAD) flags on some versions of
+HP-UX. (We have seen this problem only on HP-UX 10.XX, so the simplest
+workaround may be to upgrade your HP-UX release.)])])
+
+m4_hl
+m4_nlist([dnl
+m4_bold([I can't compile and run multithreaded applications.])
+
+m4_p([dnl
+Special compile-time flags are required when compiling threaded
+applications on HP-UX. If you are compiling a threaded application, you
+must compile with the _REENTRANT flag:])
+
+m4_indent([cc -D_REENTRANT ...])
+
+m4_p([dnl
+The m4_db library will automatically build with the correct options.])])
+
+m4_hl
+m4_nlist([dnl
+m4_bold([An ENOMEM error is returned from m4_ref(dbenv_open) or
+m4_ref(dbenv_remove).])
+
+m4_p([dnl
+Due to the constraints of the PA-RISC memory architecture, HP-UX does not
+allow a process to map a file into its address space multiple times.
+For this reason, each m4_db environment may be opened only once by a
+process on HP-UX; that is, calls to m4_ref(dbenv_open) will fail if the
+specified m4_db environment has been opened and not subsequently closed.])])
+
+m4_hl
+m4_nlist([dnl
+m4_bold([When compiling with gcc, I see the following error:
+m4_indent([dnl
+#error "Large Files (ILP32) not supported in strict ANSI mode."])])
+
+m4_p([dnl
+We believe this is an error in the HP-UX include files, but we don't
+really understand it. The only workaround we have found is to add
+-D__STDC_EXT__ to the C preprocessor defines as part of compilation.])])
+
+m4_hl
+m4_nlist([dnl
+m4_bold([When using the Tcl or Perl APIs (including running the test
+suite), I see the error "Can't shl_load() a library containing Thread
+Local Storage".])
+
+m4_p([dnl
+This problem happens when HP-UX has been configured to use pthread mutex
+locking, and an attempt is made to call m4_db using the Tcl or Perl APIs.
+We have never found any way to fix this problem as part of the m4_db
+build process. To work around the problem, rebuild tclsh or Perl, and
+modify its build process to explicitly link it against the HP-UX pthread
+library (currently /usr/lib/libpthread.a).])])
+
+m4_hl
+m4_nlist([dnl
+m4_bold([When running an executable that has been dynamically linked
+against the m4_db library, I see the error "Can't find path for shared
+library" even though I correctly set the SHLIB_PATH environment variable.])
+
+m4_p([dnl
+By default, some versions of HP-UX ignore the dynamic library search
+path specified by the SHLIB_PATH environment variable. To work around
+this, specify the "+s" flag to ld when linking, or run the following
+command on the executable that is not working:])
+
+m4_indent([chatr +s enable -l /full/path/to/libdb-3.2.sl ...])])
+
+m4_hl
+m4_nlist([dnl
+m4_bold([I see errors about "open64" when building m4_db applications.])
+
+m4_p([dnl
+System include files (most commonly fcntl.h) in some releases of AIX,
+HP-UX and Solaris redefine "open" when large-file support is enabled for
+applications. This causes problems when compiling applications because
+"open" is a method in the m4_db APIs. To work around this problem:
+m4_nlistbegin
+m4_nlist([dnl
+Avoid including the problematical system include files in source code
+files which also include m4_db include files and call into the m4_db
+API.])
+m4_nlistns([dnl
+Before building m4_db, modify the generated include file db.h to itself
+include the problematical system include files.])
+m4_nlistns([dnl
+Turn off m4_db large-file support by specifying the
+m4_linkpage(M4RELDIR/ref/build_unix/conf, --disable-largefile,
+--disable-largefile) configuration option and rebuilding.])
+m4_nlistend])])
+
+m4_nlistend
+
+m4_page_footer
diff --git a/db/docs_src/ref/build_unix/install.so b/db/docs_src/ref/build_unix/install.so
new file mode 100644
index 000000000..d84ae4e35
--- /dev/null
+++ b/db/docs_src/ref/build_unix/install.so
@@ -0,0 +1,77 @@
+m4_comment([$Id: install.so,v 10.18 2006/10/05 01:06:05 bostic Exp $])
+
+define(__m4_product_name, m4_db)
+define(__m4_directory, build_unix)
+define(__m4_install_directory, BerkeleyDB)
+
+m4_ref_title(Building __m4_product_name for UNIX/POSIX systems,
+ Installing __m4_product_name,
+ @installing __m4_product_name for UNIX systems,
+ __m4_directory/flags, __m4_directory/shlib)
+
+m4_p([dnl
+__m4_product_name installs the following files into the following locations,
+with the following default values:])
+
+m4_table_begin(, _center)
+m4_table_header(Configuration Variables, Default value)
+m4_table_element(--prefix,
+ /usr/local/__m4_install_directory[.]m4_bold(Major).m4_bold(Minor))
+m4_table_element(--exec_prefix, $(prefix))
+m4_table_element(--bindir, $(exec_prefix)/bin)
+m4_table_element(--includedir, $(prefix)/include)
+m4_table_element(--libdir, $(exec_prefix)/lib)
+m4_table_element(docdir, $(prefix)/docs)
+m4_table_header(Files, Default location)
+m4_table_element(include files, $(includedir))
+m4_table_element(libraries, $(libdir))
+m4_table_element(utilities, $(bindir))
+m4_table_element(documentation, $(docdir))
+m4_table_end
+
+m4_p([dnl
+With one exception, this follows the GNU Autoconf and GNU Coding
+Standards installation guidelines; please see that documentation for
+more information and rationale.])
+
+m4_p([dnl
+The single exception is the __m4_product_name documentation. The
+__m4_product_name documentation is provided in HTML format, not in
+UNIX-style man or GNU info format. For this reason, __m4_product_name
+configuration does not support m4_bold(--infodir) or m4_bold(--mandir).
+To change the default installation location for the __m4_product_name
+documentation, modify the Makefile variable, m4_bold(docdir).])
+
+m4_p([dnl
+When installing __m4_product_name on filesystems shared by machines of
+different architectures, please note that although __m4_product_name
+include files are installed based on the value of $(prefix), rather than
+$(exec_prefix), the __m4_product_name include files are not always
+architecture independent.])
+
+m4_p([dnl
+To move the entire installation tree to somewhere besides
+m4_bold(/usr/local), change the value of m4_bold(prefix).])
+
+m4_p([dnl
+To move the binaries and libraries to a different location, change the
+value of m4_bold(exec_prefix). The values of m4_bold(includedir) and
+m4_bold(libdir) may be similarly changed.])
+
+m4_p([dnl
+Any of these values except for m4_bold(docdir) may be set as part of
+the configuration:])
+
+m4_indent([prompt: ../dist/configure --bindir=/usr/local/bin])
+
+m4_p([dnl
+Any of these values, including m4_bold(docdir), may be changed when doing
+the install itself:])
+
+m4_indent([prompt: make prefix=/usr/contrib/bdb install])
+
+m4_p([dnl
+The __m4_product_name installation process will attempt to create any
+directories that do not already exist on the system.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/build_unix/intro.so b/db/docs_src/ref/build_unix/intro.so
new file mode 100644
index 000000000..feed2746d
--- /dev/null
+++ b/db/docs_src/ref/build_unix/intro.so
@@ -0,0 +1,72 @@
+m4_comment([$Id: intro.so,v 10.34 2007/07/06 17:12:01 bostic Exp $])
+
+m4_ref_title(Building m4_db for UNIX/POSIX systems,
+ Building for UNIX/POSIX,
+ [@building for UNIX, @building for QNX,
+ building for @UNIX, building for @QNX], build_s60/intro, build_unix/conf)
+
+m4_p([dnl
+The m4_db distribution builds up to four separate libraries: the base
+C API m4_db library and the optional C++, Java, and Tcl API libraries.
+For portability reasons, each library is standalone and contains the
+full m4_db support necessary to build applications; that is, the C++
+API m4_db library does not require any other m4_db libraries to build
+and run C++ applications.])
+
+m4_p([dnl
+Building for Linux, Mac OS X and the QNX Neutrino release is the same
+as building for a conventional UNIX platform.])
+
+m4_p([dnl
+The m4_db distribution uses the Free Software Foundation's
+m4_linkweb(http://www.gnu.org/software/autoconf/autoconf.html, autoconf)
+and m4_linkweb(http://www.gnu.org/software/libtool/libtool.html,
+libtool) tools to build on UNIX platforms. In general, the standard
+configuration and installation options for these tools apply to the
+m4_db distribution.])
+
+m4_p([dnl
+To do a standard UNIX build of m4_db, change to the m4_bold(build_unix)
+directory and then enter the following two commands:])
+
+m4_indent([dnl
+../dist/configure
+make])
+
+m4_p([dnl
+This will build the m4_db library.])
+
+m4_p([dnl
+To install the m4_db library, enter the following command:])
+
+m4_indent([dnl
+make install])
+
+m4_p([dnl
+To rebuild m4_db, enter:])
+
+m4_indent([dnl
+make clean
+make])
+
+m4_p([dnl
+If you change your mind about how m4_db is to be configured, you must
+start from scratch by entering the following command:])
+
+m4_indent([dnl
+make realclean
+../dist/configure
+make])
+
+m4_p([dnl
+To uninstall m4_db, enter:])
+
+m4_indent([dnl
+make uninstall])
+
+m4_p([dnl
+To build multiple UNIX versions of m4_db in the same source tree, create
+a new directory at the same level as the build_unix directory, and then
+configure and build in that directory as described previously.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/build_unix/irix.so b/db/docs_src/ref/build_unix/irix.so
new file mode 100644
index 000000000..3ea31889c
--- /dev/null
+++ b/db/docs_src/ref/build_unix/irix.so
@@ -0,0 +1,23 @@
+m4_comment([$Id: irix.so,v 11.6 2003/03/24 13:46:22 bostic Exp $])
+
+m4_ref_title(Building m4_db for UNIX/POSIX systems,
+ IRIX, @IRIX, build_unix/hpux, build_unix/linux)
+
+m4_nlistbegin
+
+m4_nlist([dnl
+m4_bold([I can't compile and run multithreaded applications.])
+
+m4_p([dnl
+Special compile-time flags are required when compiling threaded
+applications on IRIX. If you are compiling a threaded application, you
+must compile with the _SGI_MP_SOURCE flag:])
+
+m4_indent([cc -D_SGI_MP_SOURCE ...])
+
+m4_p([dnl
+The m4_db library will automatically build with the correct options.])])
+
+m4_nlistend
+
+m4_page_footer
diff --git a/db/docs_src/ref/build_unix/linux.so b/db/docs_src/ref/build_unix/linux.so
new file mode 100644
index 000000000..e661cd842
--- /dev/null
+++ b/db/docs_src/ref/build_unix/linux.so
@@ -0,0 +1,42 @@
+m4_comment([$Id: linux.so,v 11.19 2004/10/18 20:10:41 bostic Exp $])
+
+m4_ref_title(Building m4_db for UNIX/POSIX systems,
+ Linux, @Linux, build_unix/irix, build_unix/macosx)
+
+m4_nlistbegin
+
+m4_nlist([dnl
+m4_bold([I can't compile and run multithreaded applications.])
+
+m4_p([dnl
+Special compile-time flags are required when compiling threaded
+applications on Linux. If you are compiling a threaded application, you
+must compile with the _REENTRANT flag:])
+
+m4_indent([cc -D_REENTRANT ...])
+
+m4_p([dnl
+The m4_db library will automatically build with the correct options.])])
+
+m4_nlist([dnl
+m4_bold([I see database corruption when accessing databases.])
+
+m4_p([dnl
+Some Linux filesystems do not support POSIX filesystem semantics.
+Specifically, ext2 and early releases of ReiserFS, and ext3 in some
+configurations, do not support "ordered data mode" and may insert random
+data into database or log files when systems crash. m4_db files should
+not be placed on a filesystem that does not support, or is not
+configured to support, POSIX semantics.])])
+
+m4_nlist([dnl
+m4_bold([What scheduler should I use?])
+
+m4_p([dnl
+In some Linux kernels you can select schedulers, and the default is the
+"anticipatory" scheduler. We recommend not using the "anticipatory"
+scheduler for transaction processing workloads.])])
+
+m4_nlistend
+
+m4_page_footer
diff --git a/db/docs_src/ref/build_unix/macosx.so b/db/docs_src/ref/build_unix/macosx.so
new file mode 100644
index 000000000..d5db8b51b
--- /dev/null
+++ b/db/docs_src/ref/build_unix/macosx.so
@@ -0,0 +1,64 @@
+m4_comment([$Id: macosx.so,v 11.14 2005/10/21 20:16:41 bostic Exp $])
+
+m4_ref_title(Building m4_db for UNIX/POSIX systems,
+ Mac OS X, Mac OS X, build_unix/linux, build_unix/osf1)
+
+m4_nlistbegin
+
+m4_nlist([dnl
+m4_bold([When trying to link multiple m4_db language interfaces (for
+example, Tcl, C++, Java, Python) into a single process, I get "multiple
+definitions" errors from dyld.])
+
+m4_p([dnl
+To fix this problem, set the environment variable MACOSX_DEPLOYMENT_TARGET
+to 10.3 (or your current version of OS X), and reconfigure and rebuild
+m4_db from scratch. See the OS X ld(1) and dyld(1) man pages for information
+about how OS X handles symbol namespaces, as well as undefined and
+multiply-defined symbols.])])
+
+m4_nlist([dnl
+m4_bold([When trying to use system-backed shared memory on OS X I see
+failures about "too many open files".])
+
+m4_p([dnl
+The default number of shared memory segments on OS X is too low. To fix
+this problem, edit the file /etc/rc, changing the kern.sysv.shmmax and
+kern.sysv.shmseg values as follows:])
+m4_indent([dnl
+*** /etc/rc.orig Fri Dec 19 09:34:09 2003
+--- /etc/rc Fri Dec 19 09:33:53 2003
+***************
+*** 84,93 ****
+
+ __OCT__ System tuning
+ sysctl -w kern.maxvnodes=$(echo $(sysctl -n hw.physmem) '33554432 /
+512 * 1024 +p'|dc)
+! sysctl -w kern.sysv.shmmax=4194304
+ sysctl -w kern.sysv.shmmin=1
+ sysctl -w kern.sysv.shmmni=32
+! sysctl -w kern.sysv.shmseg=8
+ sysctl -w kern.sysv.shmall=1024
+ if __LB__ -f /etc/sysctl-macosxserver.conf __RB__; then
+ awk '{ if (!index($1, "__OCT__") && index($1, "=")) print $1 }' __LT__
+/etc/sysctl-macosxserver.conf | while read
+--- 84,93 ----
+
+ __OCT__ System tuning
+ sysctl -w kern.maxvnodes=$(echo $(sysctl -n hw.physmem) '33554432 /
+512 * 1024 +p'|dc)
+! sysctl -w kern.sysv.shmmax=134217728
+ sysctl -w kern.sysv.shmmin=1
+ sysctl -w kern.sysv.shmmni=32
+! sysctl -w kern.sysv.shmseg=32
+ sysctl -w kern.sysv.shmall=1024
+ if __LB__ -f /etc/sysctl-macosxserver.conf __RB__; then
+ awk '{ if (!index($1, "__OCT__") && index($1, "=")) print $1 }' __LT__
+/etc/sysctl-macosxserver.conf | while read])
+
+m4_p([dnl
+and then reboot the system.])])
+
+m4_nlistend
+
+m4_page_footer
diff --git a/db/docs_src/ref/build_unix/notes.so b/db/docs_src/ref/build_unix/notes.so
new file mode 100644
index 000000000..e7c83fa93
--- /dev/null
+++ b/db/docs_src/ref/build_unix/notes.so
@@ -0,0 +1,223 @@
+m4_comment([$Id: notes.so,v 10.54 2005/06/16 17:04:04 bostic Exp $])
+
+m4_ref_title(Building m4_db for UNIX/POSIX systems,
+ Architecture independent FAQ,
+ [@building for UNIX FAQ, building for @UNIX FAQ],
+ build_unix/test, build_unix/aix)
+
+m4_nlistbegin
+
+m4_nlist([dnl
+m4_bold([I have gcc installed, but configure fails to find it.])
+
+m4_p([dnl
+m4_db defaults to using the native C compiler if none is specified.
+That is usually "cc", but some platforms require a different compiler
+to build multithreaded code. To configure m4_db to build with gcc, run
+configure as follows:])
+
+m4_indent([dnl
+env CC=gcc ../dist/configure ...])])
+
+m4_hl
+m4_nlist([dnl
+m4_bold([When compiling with gcc, I get unreferenced symbols; for example
+the following:
+m4_indent([dnl
+symbol __muldi3: referenced symbol not found
+symbol __cmpdi2: referenced symbol not found])])
+
+m4_p([dnl
+m4_db often uses 64-bit integral types on systems supporting large
+files, and gcc performs operations on those types by calling library
+functions. These unreferenced symbol errors are usually caused by
+linking an application by calling "ld" rather than by calling "gcc":
+gcc will link in libgcc.a and will resolve the symbols. If that does
+not help, another possible workaround is to reconfigure m4_db using the
+m4_linkpage(M4RELDIR/ref/build_unix/conf, --disable-largefile,
+--disable-largefile) configuration option and then rebuild.])])
+
+m4_hl
+m4_nlist([dnl
+m4_bold([My C++ program traps during a failure in a DB call on my
+gcc-based system.])
+
+m4_p([dnl
+We believe there are some severe bugs in the implementation of
+exceptions for some gcc compilers. Exceptions require some interaction
+between compiler, assembler, and runtime libraries. We're not sure
+exactly what is at fault, but one failing combination is gcc 2.7.2.3
+running on SuSE Linux 6.0. The problem on this system can be seen with
+a rather simple test case of an exception thrown from a shared library
+and caught in the main program.])
+
+m4_p([dnl
+A variation of this problem seems to occur on AIX, although we believe it
+does not necessarily involve shared libraries on that platform.])
+
+m4_p([dnl
+If you see a trap that occurs when an exception might be thrown by the
+m4_db runtime, we suggest that you use static libraries instead of
+shared libraries. See the documentation for configuration. If this
+doesn't work and you have a choice of compilers, try using a more recent
+gcc- or a non-gcc based compiler to build m4_db.])
+
+m4_p([dnl
+Finally, you can disable the use of exceptions in the C++ runtime for
+m4_db by using the m4_refcxx(DB_CXX_NO_EXCEPTIONS) flag with the
+m4_refcxx(DbEnv) or m4_refcxx(Db) constructors. When this flag is on,
+all C++ methods fail by returning an error code rather than throwing an
+exception.])])
+
+m4_hl
+m4_nlist([dnl
+m4_bold([I get unexpected results and database corruption when running
+threaded programs.])
+
+m4_p([dnl
+m4_bold([I get error messages that mutex (for example, pthread_mutex_XXX or
+mutex_XXX) functions are undefined when linking applications with m4_db.])])
+
+m4_p([dnl
+On some architectures, the m4_db library uses the ISO POSIX standard
+pthreads and UNIX International (UI) threads interfaces for underlying
+mutex support; for example, Solaris and HP-UX. You can specify
+compilers or compiler flags, or link with the appropriate thread library
+when loading your application to resolve the undefined references:])
+
+m4_indent([dnl
+cc ... -lpthread ...
+cc ... -lthread ...
+xlc_r ...
+cc ... -mt ...])
+
+m4_p([dnl
+See the appropriate architecture-specific Reference Guide pages for more
+information.])
+
+m4_p([dnl
+On systems where more than one type of mutex is available, it may be
+necessary for applications to use the same threads package from which
+m4_db draws its mutexes. For example, if m4_db was built to use the
+POSIX pthreads mutex calls for mutex support, the application may need
+to be written to use the POSIX pthreads interfaces for its threading
+model. This is only conjecture at this time, and although we know of
+no systems that actually have this requirement, it's not unlikely that
+some exist.])
+
+m4_p([dnl
+In a few cases, m4_db can be configured to use specific underlying mutex
+interfaces. You can use the m4_linkpage(M4RELDIR/ref/build_unix/conf,
+--enable-posixmutexes, --enable-posixmutexes) and
+m4_linkpage(M4RELDIR/ref/build_unix/conf, --enable-uimutexes,
+--enable-uimutexes) configuration options to specify the POSIX and Unix
+International (UI) threads packages. This should not, however, be
+necessary in most cases.])
+
+m4_p([dnl
+In some cases, it is vitally important to make sure that you load the
+correct library. For example, on Solaris systems, there are POSIX
+pthread interfaces in the C library, so applications can link m4_db
+using only C library and not see any undefined symbols. However, the
+C library POSIX pthread mutex support is insufficient for m4_db, and
+m4_db cannot detect that fact. Similar errors can arise when
+applications (for example, tclsh) use dlopen to dynamically load m4_db
+as a library.])
+
+m4_p([dnl
+If you are seeing problems in this area after you confirm that you're
+linking with the correct libraries, there are two other things you can
+try. First, if your platform supports interlibrary dependencies, we
+recommend that you change the m4_db Makefile to specify the appropriate
+threads library when creating the m4_db shared library, as an
+interlibrary dependency. Second, if your application is using dlopen
+to dynamically load m4_db, specify the appropriate thread library on
+the link line when you load the application itself.])])
+
+m4_hl
+m4_nlist([dnl
+m4_bold([I get core dumps when running programs that fork children.])
+
+m4_p([dnl
+m4_db handles should not be shared across process forks, each forked
+child should acquire its own m4_db handles.])])
+
+m4_hl
+m4_nlist([dnl
+m4_bold([I get reports of uninitialized memory reads and writes when
+running software analysis tools (for example, Rational Software Corp.'s
+Purify tool).])
+
+m4_p([dnl
+For performance reasons, m4_db does not write the unused portions of
+database pages or fill in unused structure fields. To turn off these
+errors when running software analysis tools, build with the
+m4_linkpage(M4RELDIR/ref/build_unix/conf, --enable-umrw, --enable-umrw)
+configuration option.])])
+
+m4_hl
+m4_nlist([dnl
+m4_bold([m4_db programs or the test suite fail unexpectedly.])
+
+m4_p([dnl
+The m4_db architecture does not support placing the shared memory
+regions on remote filesystems -- for example, the Network File System
+(NFS) or the Andrew File System (AFS). For this reason, the shared
+memory regions (normally located in the database home directory) must
+reside on a local filesystem. See m4_link(M4RELDIR/ref/env/region,
+Shared Memory Regions) for more information.])
+
+m4_p([dnl
+With respect to running the test suite, always check to make sure that
+TESTDIR is not on a remote mounted filesystem.])])
+
+m4_hl
+m4_nlist([dnl
+m4_bold([The m4_ref(db_dump185) utility fails to build.])
+
+m4_p([dnl
+The m4_ref(db_dump185) utility is the utility that supports the
+conversion of m4_db 1.85 and earlier databases to current database
+formats. If the build errors look something like the following, it
+means the db.h include file being loaded is not a m4_db 1.85 version
+include file:])
+
+m4_indent([dnl
+db_dump185.c: In function `main':
+db_dump185.c:210: warning: assignment makes pointer from integer without a cast
+db_dump185.c:212: warning: assignment makes pointer from integer without a cast
+db_dump185.c:227: structure has no member named `seq'
+db_dump185.c:227: `R_NEXT' undeclared (first use in this function)])
+
+m4_p([dnl
+If the build errors look something like the following, it means that
+the m4_db 1.85 code was not found in the standard libraries:])
+
+m4_indent([dnl
+cc -o db_dump185 db_dump185.o
+ld:
+Unresolved:
+dbopen])
+
+m4_p([dnl
+To build m4_ref(db_dump185), the m4_db version 1.85 code must already
+been built and available on the system. If the m4_db 1.85 header file
+is not found in a standard place, or if the library is not part of the
+standard libraries used for loading, you will need to edit your
+Makefile, and change the following lines:])
+
+m4_indent([dnl
+DB185INC=
+DB185LIB=])
+
+m4_p([dnl
+So that the system m4_db 1.85 header file and library are found; for
+example:])
+
+m4_indent([dnl
+DB185INC=/usr/local/include
+DB185LIB=-ldb185])])
+
+m4_nlistend
+
+m4_page_footer
diff --git a/db/docs_src/ref/build_unix/osf1.so b/db/docs_src/ref/build_unix/osf1.so
new file mode 100644
index 000000000..24dd05cce
--- /dev/null
+++ b/db/docs_src/ref/build_unix/osf1.so
@@ -0,0 +1,23 @@
+m4_comment([$Id: osf1.so,v 11.11 2004/10/18 20:10:41 bostic Exp $])
+
+m4_ref_title(Building m4_db for UNIX/POSIX systems,
+ OSF/1, @OSF/1, build_unix/macosx, build_unix/qnx)
+
+m4_nlistbegin
+
+m4_nlist([dnl
+m4_bold([I can't compile and run multithreaded applications.])
+
+m4_p([dnl
+Special compile-time flags are required when compiling threaded
+applications on OSF/1. If you are compiling a threaded application, you
+must compile with the _REENTRANT flag:])
+
+m4_indent([cc -D_REENTRANT ...])
+
+m4_p([dnl
+The m4_db library will automatically build with the correct options.])])
+
+m4_nlistend
+
+m4_page_footer
diff --git a/db/docs_src/ref/build_unix/qnx.so b/db/docs_src/ref/build_unix/qnx.so
new file mode 100644
index 000000000..099197461
--- /dev/null
+++ b/db/docs_src/ref/build_unix/qnx.so
@@ -0,0 +1,107 @@
+m4_comment([$Id: qnx.so,v 11.11 2005/12/20 15:24:38 bostic Exp $])
+
+m4_ref_title(Building m4_db for UNIX/POSIX systems,
+ QNX, @QNX, build_unix/osf1, build_unix/sco)
+
+m4_nlistbegin
+
+m4_nlist([dnl
+m4_bold([To what versions of QNX has DB been ported?])
+
+m4_p([dnl
+m4_db has been ported to the QNX Neutrino technology which is commonly
+referred to as QNX RTP (Real-Time Platform). m4_db has not been
+ported to earlier versions of QNX, such as QNX 4.25.])])
+
+m4_nlist([dnl
+m4_bold([Building m4_db shared libraries fails.])
+
+m4_p([dnl
+The m4_path(/bin/sh) utility distributed with some QNX releases drops
+core when running the GNU libtool script (which is used to build m4_db
+shared libraries). There are two workarounds for this problem: First,
+only build static libraries. You can disable building shared libraries
+by specifying the m4_idef(--disable-shared) configuration flag when
+configuring m4_db.])
+m4_p([dnl
+Second, build m4_db using an alternate shell. QNX distributions include
+an accessories disk with additional tools. One of the included tools
+is the GNU bash shell, which is able to run the libtool script. To
+build m4_db using an alternate shell, move m4_path(/bin/sh) aside, link
+or copy the alternate shell into that location, configure, build and
+install m4_db, and then replace the original shell utility.])])
+
+m4_nlist([dnl
+m4_bold([Are there any QNX filesystem issues?])
+
+m4_p([dnl
+m4_db generates temporary files for use in transactionally
+protected file system operations. Due to the filename length limit of
+48 characters in the QNX filesystem, applications that are using
+transactions should specify a database name that is at most 43 characters.])])
+
+m4_nlist([dnl
+m4_bold([What is the impact of QNX's use of m4_manref(shm_open, 2) for
+shared memory regions?])
+
+m4_p([dnl
+QNX requires the use of the POSIX m4_manref(shm_open, 2) and
+m4_manref(shm_unlink, 2) calls for shared memory regions that will later
+be mapped into memory using m4_manref(mmap, 2). QNX's implementation
+of the shared memory functions requires that the name given must begin
+with a slash, and that no other slash may appear in the name.])
+
+m4_p([dnl
+In order to comply with those requirements and allow relative pathnames
+to find the same environment, m4_db uses only the last component of the
+home directory path and the name of the shared memory file, separated
+by a colon, as the name specified to the shared memory functions. For
+example, if an application specifies a home directory of
+m4_path(/home/db/DB_DIR), m4_db will use m4_path(/DB_DIR:__db.001) as
+the name for the shared memory area argument to m4_manref(shm_open,
+2).])
+
+m4_p([dnl
+The impact of this decision is that the last component of all
+environment home directory pathnames on QNX must be unique with respect
+to each other. Additionally, m4_db requires that environments use home
+directories for QNX in order to generate a reasonable entry in the
+shared memory area.])])
+
+m4_nlist([dnl
+m4_bold([What are the implications of QNX's requirement to use
+m4_manref(shm_open, 2) in order to use m4_manref(mmap, 2)?])
+
+m4_p([dnl
+QNX requires that files mapped with m4_manref(mmap, 2) be opened using
+m4_manref(shm_open, 2). There are other places in addition to the
+environment shared memory regions, where m4_db tries to memory map files
+if it can.])
+
+m4_p([dnl
+The memory pool subsystem normally attempts to use m4_manref(mmap, 2)
+even when using private memory, as indicated by the m4_ref(DB_PRIVATE)
+flag to m4_ref(dbenv_open). In the case of QNX, if an application is
+using private memory, m4_db will not attempt to map the memory and will
+instead use the local cache.])])
+
+m4_nlist([dnl
+m4_bold([What are the implications of QNX's mutex implementation using
+microkernel resources?])
+
+m4_p([dnl
+On QNX, the primitives implementing mutexes consume system resources.
+Therefore, if an application unexpectedly fails, those resources could
+leak. m4_db solves this problem by always allocating mutexes in the
+persistent shared memory regions. Then, if an application fails,
+running recovery or explicitly removing the database environment by
+calling the m4_refT(dbenv_remove) will allow m4_db to release those
+previously held mutex resources. If an application specifies the
+m4_ref(DB_PRIVATE) flag (choosing not to use persistent shared memory),
+and then fails, mutexes allocated in that private memory may leak their
+underlying system resources. Therefore, the m4_ref(DB_PRIVATE) flag
+should be used with caution on QNX.])])
+
+m4_nlistend
+
+m4_page_footer
diff --git a/db/docs_src/ref/build_unix/sco.so b/db/docs_src/ref/build_unix/sco.so
new file mode 100644
index 000000000..612676eed
--- /dev/null
+++ b/db/docs_src/ref/build_unix/sco.so
@@ -0,0 +1,20 @@
+m4_comment([$Id: sco.so,v 11.9 2003/03/24 13:46:23 bostic Exp $])
+
+m4_ref_title(Building m4_db for UNIX/POSIX systems,
+ SCO, @SCO, build_unix/qnx, build_unix/solaris)
+
+m4_nlistbegin
+
+m4_nlist([dnl
+m4_bold([dnl
+If I build with gcc, programs such as db_dump and db_stat core dump
+immediately when invoked.])
+
+m4_p([dnl
+We suspect gcc or the runtime loader may have a bug, but we haven't
+tracked it down. If you want to use gcc, we suggest building static
+libraries.])])
+
+m4_nlistend
+
+m4_page_footer
diff --git a/db/docs_src/ref/build_unix/shlib.so b/db/docs_src/ref/build_unix/shlib.so
new file mode 100644
index 000000000..63ba8df2e
--- /dev/null
+++ b/db/docs_src/ref/build_unix/shlib.so
@@ -0,0 +1,126 @@
+m4_comment([$Id: shlib.so,v 10.19 2006/10/05 01:06:05 bostic Exp $])
+
+define(__m4_product_name, m4_db)
+define(__m4_directory, build_unix)
+define(__m4_lib_name, libdb)
+define(__m4_lib_suffix, db)
+
+m4_ref_title(Building __m4_product_name for UNIX/POSIX systems,
+ Dynamic shared libraries,
+ @shared libraries, __m4_directory/install,
+ ifelse(__m4_product_name, m4_xml, __m4_directory/notes, __m4_directory/test))
+
+m4_p([dnl
+m4_bold(Warning): the following information is intended to be generic and
+is likely to be correct for most UNIX systems. Unfortunately, dynamic
+shared libraries are not standard between UNIX systems, so there may be
+information here that is not correct for your system. If you have
+problems, consult your compiler and linker manual pages, or your system
+administrator.])
+
+m4_p([dnl
+The __m4_product_name dynamic shared libraries are created with the name
+__m4_lib_name-m4_bold(major).m4_bold(minor).so, where m4_bold(major) is
+the major version number and m4_bold(minor) is the minor version number.
+Other shared libraries are created if Java and Tcl support are enabled:
+specifically, __m4_lib_name[_java-]m4_bold(major).m4_bold(minor).so
+and __m4_lib_name[_tcl-]m4_bold(major).m4_bold(minor).so.])
+
+m4_p([dnl
+On most UNIX systems, when any shared library is created, the linker
+stamps it with a "SONAME". In the case of __m4_product_name, the SONAME
+is __m4_lib_name-m4_bold(major).m4_bold(minor).so. It is important to
+realize that applications linked against a shared library remember the
+SONAMEs of the libraries they use and not the underlying names in the
+filesystem.])
+
+m4_p([dnl
+When the __m4_product_name shared library is installed, links are
+created in the install lib directory so that
+__m4_lib_name-m4_bold(major).m4_bold(minor).so,
+__m4_lib_name-m4_bold(major).so, and __m4_lib_name.so all refer to the
+same library. This library will have an SONAME of
+__m4_lib_name-m4_bold(major).m4_bold(minor).so.])
+
+m4_p([dnl
+Any previous versions of the __m4_product_name libraries that are
+present in the install directory (such as __m4_lib_name-2.7.so or
+__m4_lib_name-2.so) are left unchanged. (Removing or moving old shared
+libraries is one drastic way to identify applications that have been
+linked against those vintage releases.)])
+
+m4_p([dnl
+Once you have installed the __m4_product_name libraries, unless they are
+installed in a directory where the linker normally looks for shared
+libraries, you will need to specify the installation directory as part
+of compiling and linking against __m4_product_name. Consult your system
+manuals or system administrator for ways to specify a shared library
+directory when compiling and linking applications with the
+__m4_product_name libraries. Many systems support environment variables
+(for example, LD_LIBRARY_PATH or LD_RUN_PATH), or system configuration
+files (for example, /etc/ld.so.conf) for this purpose.])
+
+m4_p([dnl
+m4_bold(Warning): some UNIX installations may have an already existing
+m4_path(/usr/lib/__m4_lib_name.so), and this library may be an incompatible
+version of __m4_product_name.])
+
+m4_p([dnl
+We recommend that applications link against __m4_lib_name.so (for example,
+using [-l]__m4_lib_suffix). Even though the linker uses the file named
+__m4_lib_name.so, the executable file for the application remembers the
+library's SONAME (__m4_lib_name-m4_bold(major).m4_bold(minor).so). This
+has the effect of marking the applications with the versions they need
+at link time. Because applications locate their needed SONAMEs when
+they are executed, all previously linked applications will continue to
+run using the library they were linked with, even when a new version of
+__m4_product_name is installed and the file m4_path(__m4_lib_name.so)
+is replaced with a new version.])
+
+m4_p([dnl
+Applications that know they are using features specific to a particular
+__m4_product_name release can be linked to that release. For example, an
+application wanting to link to __m4_product_name major release "3" can link
+using [-l]__m4_lib_suffix[-3], and applications that know about a particular
+minor release number can specify both major and minor release numbers;
+for example, [-l]__m4_lib_suffix[-3.5.]])
+
+m4_p([dnl
+If you want to link with __m4_product_name before performing library
+installation, the "make" command will have created a shared library
+object in the m4_path(.libs) subdirectory of the build directory, such
+as m4_path(build_unix/.libs/__m4_lib_name-major.minor.so). If you want
+to link a file against this library, with, for example, a major number
+of "3" and a minor number of "5", you should be able to do something
+like the following:])
+
+m4_indent([dnl
+cc -L BUILD_DIRECTORY/.libs -o testprog testprog.o [-l]__m4_lib_suffix[-3.5]
+env LD_LIBRARY_PATH="BUILD_DIRECTORY/.libs:$LD_LIBRARY_PATH" ./testprog])
+
+m4_p([dnl
+where m4_bold(BUILD_DIRECTORY) is the full directory path to the directory
+where you built __m4_product_name.])
+
+m4_p([dnl
+The libtool program (which is configured in the build directory) can be
+used to set the shared library path and run a program. For example,
+the following runs the gdb debugger on the db_dump utility after setting
+the appropriate paths:])
+
+m4_indent([libtool gdb db_dump])
+
+m4_p([dnl
+Libtool may not know what to do with arbitrary commands (it is hardwired
+to recognize "gdb" and some other commands). If it complains the mode
+argument will usually resolve the problem:])
+
+m4_indent([libtool --mode=execute my_debugger db_dump])
+
+m4_p([dnl
+On most systems, using libtool in this way is exactly equivalent to
+setting the LD_LIBRARY_PATH environment variable and then executing the
+program. On other systems, using libtool has the virtue of knowing about
+any other details on systems that don't behave in this typical way.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/build_unix/small.so b/db/docs_src/ref/build_unix/small.so
new file mode 100644
index 000000000..09cb426d0
--- /dev/null
+++ b/db/docs_src/ref/build_unix/small.so
@@ -0,0 +1,84 @@
+m4_comment([$Id: small.so,v 10.11 2007/06/13 18:56:05 bostic Exp $])
+
+m4_ref_title(Building m4_db for UNIX/POSIX systems,
+ Building a small memory footprint library,,
+ build_unix/conf, build_unix/flags)
+
+m4_p([dnl
+There are a set of configuration options to assist you in building a
+small memory footprint library. These configuration options turn off
+specific functionality in the m4_db library, reducing the code size.
+These configuration options include:])
+
+m4_tagbegin
+m4_tag([m4_idef(--disable-cryptography)], [dnl
+To build m4_db without support for cryptography, enter
+--disable-cryptography as an argument to configure.])
+
+m4_tag([m4_idef(--disable-hash)], [dnl
+To build m4_db without support for the Hash access method, enter
+--disable-hash as an argument to configure.])
+
+m4_tag([m4_idef(--disable-queue)], [dnl
+To build m4_db without support for the Queue access method, enter
+--disable-queue as an argument to configure.])
+
+m4_tag([m4_idef(--disable-replication)], [dnl
+To build m4_db without support for the database environment replication,
+enter --disable-replication as an argument to configure.])
+
+m4_tag([m4_idef(--disable-statistics)], [dnl
+To build m4_db without support for the statistics interfaces, enter
+--disable-statistics as an argument to configure.])
+
+m4_tag([m4_idef(--disable-verify)], [dnl
+To build m4_db without support for database verification, enter
+--disable-verify as an argument to configure.])
+
+m4_tag([m4_idef(--enable-smallbuild)], [dnl
+Equivalent to individually specifying --disable-cryptography,
+--disable-hash, --disable-queue, --disable-replication,
+--disable-statistics and --disable-verify. In addition, when compiling
+building with the GNU gcc compiler, the --enable-smallbuild option uses
+the -Os compiler build flag instead of the default -O3.])
+
+m4_tagend
+
+m4_p([dnl
+The following configuration options will increase the size of the m4_db
+library dramatically and are only useful when debugging applications:])
+
+m4_tagbegin
+m4_tag([m4_linkpage(M4RELDIR/ref/build_unix/conf,
+--enable-debug, --enable-debug)], [dnl
+Build m4_db with symbols for debugging.])
+m4_tag([m4_linkpage(M4RELDIR/ref/build_unix/conf,
+--enable-debug_rop, --enable-debug_rop)], [dnl
+Build m4_db with read-operation logging.])
+m4_tag([m4_linkpage(M4RELDIR/ref/build_unix/conf,
+--enable-debug_wop, --enable-debug_wop)], [dnl
+Build m4_db with write-operation logging.])
+m4_tag([m4_linkpage(M4RELDIR/ref/build_unix/conf,
+--enable-diagnostic, --enable-diagnostic)], [dnl
+Build m4_db with run-time debugging checks.])
+m4_tagend
+
+m4_p([dnl
+In addition, static libraries are usually smaller than shared libraries.
+By default m4_db will build both shared and static libraries. To build
+only a static library, configure m4_db with the
+m4_linkpage(M4RELDIR/ref/build_unix/conf, --disable-shared) option.])
+
+m4_p([dnl
+The size of the m4_db library varies depending on the compiler, machine
+architecture, and configuration options. As an estimate, production
+m4_db libraries built with GNU gcc version 3.X compilers have footprints
+in the range of 400KB to 900KB on 32-bit x86 architectures, and in the
+range of 500KB to 1MB on 64-bit x86 architectures.])
+
+m4_p([dnl
+For assistance in further reducing the size of the m4_db library, or in
+building small memory footprint libraries on other systems, please
+contact m4_db support.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/build_unix/solaris.so b/db/docs_src/ref/build_unix/solaris.so
new file mode 100644
index 000000000..184d741ef
--- /dev/null
+++ b/db/docs_src/ref/build_unix/solaris.so
@@ -0,0 +1,150 @@
+m4_comment([$Id: solaris.so,v 11.26 2007/06/27 14:41:06 bostic Exp $])
+
+m4_ref_title(Building m4_db for UNIX/POSIX systems,
+ Solaris, @Solaris, build_unix/sco, build_unix/sunos)
+
+m4_nlistbegin
+
+m4_nlist([dnl
+m4_bold([I can't compile and run multithreaded applications.])
+
+m4_p([dnl
+Special compile-time flags and additional libraries are required when
+compiling threaded applications on Solaris. If you are compiling a
+threaded application, you must compile with the D_REENTRANT flag and link
+with the libpthread.a or libthread.a libraries:])
+
+m4_indent([dnl
+cc -mt ...
+cc -D_REENTRANT ... -lthread
+cc -D_REENTRANT ... -lpthread])
+
+m4_p([dnl
+The m4_db library will automatically build with the correct options.])])
+
+m4_hl
+m4_nlist([dnl
+m4_bold([I've installed gcc on my Solaris system, but configuration
+fails because the compiler doesn't work.])
+
+m4_p([dnl
+On some versions of Solaris, there is a cc executable in the user's path,
+but all it does is display an error message and fail:])
+
+m4_indent([% which cc
+/usr/ucb/cc
+% cc
+/usr/ucb/cc: language optional software package not installed])
+
+m4_p([dnl
+Because m4_db always uses the native compiler in preference to gcc, this
+is a fatal error. If the error message you are seeing is the following,
+then this may be the problem:])
+
+m4_indent([checking whether the C compiler (cc -O) works... no
+configure: error: installation or configuration problem: C compiler cannot create executables.])
+
+m4_p([dnl
+The simplest workaround is to set your CC environment variable to the
+system compiler and reconfigure; for example:])
+
+m4_indent([env CC=gcc ../dist/configure])
+
+m4_p([dnl
+If you are using the --configure-cxx option, you may also want to specify
+a C++ compiler, for example the following:])
+
+m4_indent([env CC=gcc CCC=g++ ../dist/configure])])
+
+m4_hl
+m4_nlist([dnl
+m4_bold([I see the error
+"libc internal error: _rmutex_unlock: rmutex not held", followed by a core
+dump when running threaded or JAVA programs.])
+
+m4_p([dnl
+This is a known bug in Solaris 2.5 and it is fixed by Sun patch 103187-25.])])
+
+m4_hl
+m4_nlist([dnl
+m4_bold([I see error reports of nonexistent files, corrupted metadata
+pages and core dumps.])
+
+m4_p([dnl
+Solaris 7 contains a bug in the threading libraries (-lpthread,
+-lthread), which causes the wrong version of the pwrite routine to be
+linked into the application if the thread library is linked in after
+the C library. The result will be that the pwrite function is called
+rather than the pwrite64. To work around the problem, use an explicit
+link order when creating your application.])
+
+m4_p([dnl
+Sun Microsystems is tracking this problem with Bug Id's 4291109 and 4267207,
+and patch 106980-09 to Solaris 7 fixes the problem:])
+
+m4_indent([dnl
+Bug Id: 4291109
+Duplicate of: 4267207
+Category: library
+Subcategory: libthread
+State: closed
+Synopsis: pwrite64 mapped to pwrite
+Description:
+When libthread is linked after libc, there is a table of functions in
+libthread that gets "wired into" libc via _libc_threads_interface().
+The table in libthread is wrong in both Solaris 7 and on28_35 for the
+TI_PWRITE64 row (see near the end).])])
+
+m4_hl
+m4_nlist([dnl
+m4_bold([I see corrupted databases when doing hot backups or creating
+a hot failover archive.])
+
+m4_p([dnl
+The Solaris cp utility is implemented using the mmap system call, and
+so writes are not blocked when it reads database pages. See
+m4_link(M4RELDIR/ref/transapp/reclimit, [m4_db recoverability]) for more
+information.])])
+
+m4_hl
+m4_nlist([dnl
+m4_bold([Performance is slow and the application is doing a lot of I/O
+to the disk on which the database environment's files are stored.])
+
+m4_p([dnl
+By default, Solaris periodically flushes dirty blocks from memory-mapped
+files to the backing filesystem. This includes the m4_db database
+environment's shared memory regions and can affect m4_db performance.
+Workarounds include creating the shared regions in system shared memory
+(m4_ref(DB_SYSTEM_MEM)) or application private memory
+(m4_ref(DB_PRIVATE)), or, configuring Solaris to not flush memory-mapped
+pages. For more information, see the "Solaris Tunable Parameters
+Reference Manual: fsflush and Related Tunables".])])
+
+m4_hl
+m4_nlist([dnl
+m4_bold([I see errors about "open64" when building m4_db applications.])
+
+m4_p([dnl
+System include files (most commonly fcntl.h) in some releases of AIX,
+HP-UX and Solaris redefine "open" when large-file support is enabled
+for applications. This causes problems when compiling applications
+because "open" is a method in the m4_db APIs. To work around this
+problem:
+m4_nlistbegin
+m4_nlist([dnl
+Avoid including the problematical system include files in source code
+files which also include m4_db include files and call into the m4_db
+API.])
+m4_nlistns([dnl
+Before building m4_db, modify the generated include file db.h to itself
+include the problematical system include files.])
+m4_nlistns([dnl
+Turn off m4_db large-file support by specifying the
+m4_linkpage(M4RELDIR/ref/build_unix/conf, --disable-largefile,
+--disable-largefile) configuration option and rebuilding.])
+m4_nlistend])])
+
+m4_nlistend
+
+m4_page_footer
diff --git a/db/docs_src/ref/build_unix/sunos.so b/db/docs_src/ref/build_unix/sunos.so
new file mode 100644
index 000000000..53890c44a
--- /dev/null
+++ b/db/docs_src/ref/build_unix/sunos.so
@@ -0,0 +1,20 @@
+m4_comment([$Id: sunos.so,v 11.6 2003/03/24 13:46:24 bostic Exp $])
+
+m4_ref_title(Building m4_db for UNIX/POSIX systems,
+ SunOS, @SunOS, build_unix/solaris, build_unix/ultrix)
+
+m4_nlistbegin
+
+m4_nlist([dnl
+m4_bold([I can't specify the m4_ref(DB_SYSTEM_MEM) flag to m4_ref(dbenv_open).])
+
+m4_p([dnl
+The m4_manref(shmget, 2) interfaces are not used on SunOS releases prior
+to 5.0, even though they apparently exist, because the distributed
+include files did not allow them to be compiled. For this reason, it
+will not be possible to specify the m4_ref(DB_SYSTEM_MEM) flag those
+versions of SunOS.])])
+
+m4_nlistend
+
+m4_page_footer
diff --git a/db/docs_src/ref/build_unix/test.so b/db/docs_src/ref/build_unix/test.so
new file mode 100644
index 000000000..8e9d6de28
--- /dev/null
+++ b/db/docs_src/ref/build_unix/test.so
@@ -0,0 +1,64 @@
+m4_comment([$Id: test.so,v 10.32 2003/11/08 19:17:43 bostic Exp $])
+
+ifdef([__m4_product_name],, [define(__m4_product_name, m4_db)])
+ifelse(__m4_product_name, m4_db, [dnl
+define(__m4_prev_link, build_unix/shlib)
+define(__m4_next_link, build_unix/notes)],[dnl
+define(__m4_prev_link, xml_unix/shlib)
+define(__m4_next_link, xml_unix/notes)])
+
+m4_ref_title(Building __m4_product_name for UNIX/POSIX systems,
+ Running the test suite under UNIX,
+ running the @test suite under UNIX, __m4_prev_link, __m4_next_link)
+
+m4_p([dnl
+The __m4_product_name test suite is built if you specify
+m4_linkpage(M4RELDIR/ref/build_unix/conf, --enable-test, --enable-test)
+as an argument when configuring __m4_product_name. The test suite also
+requires that you configure and build the Tcl interface to the
+library.])
+
+m4_p([dnl
+Before running the tests for the first time, you may need to edit the
+m4_path(include.tcl) file in your build directory. The
+__m4_product_name configuration assumes that you intend to use the
+version of the tclsh utility included in the Tcl installation with which
+__m4_product_name was configured to run the test suite, and further
+assumes that the test suite will be run with the libraries prebuilt in
+the __m4_product_name build directory. If either of these assumptions
+are incorrect, you will need to edit the m4_path(include.tcl) file and
+change the following line to correctly specify the full path to the
+version of tclsh with which you are going to run the test suite:])
+
+m4_indent([set tclsh_path ...])
+
+m4_p([dnl
+You may also need to change the following line to correctly specify the
+path from the directory where you are running the test suite to the
+location of the __m4_product_name Tcl library you built:])
+
+m4_indent([set test_path ...])
+
+m4_p([dnl
+It may not be necessary that this be a full path if you have configured
+your system's shared library mechanisms to search the directory where
+you built or installed the Tcl library.])
+
+m4_p([dnl
+All __m4_product_name tests are run from within m4_bold(tclsh). After
+starting tclsh, you must source the file m4_path(test.tcl) in the test
+directory. For example, if you built in the m4_path(build_unix)
+directory of the distribution, this would be done using the following
+command:])
+
+m4_indent([% source ../test/test.tcl])
+
+m4_p([dnl
+If no errors occur, you should get a "%" prompt.])
+
+m4_p([dnl
+You are now ready to run tests in the test suite; see
+m4_link(M4RELDIR/ref/test/run, Running the test suite) for more
+information.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/build_unix/ultrix.so b/db/docs_src/ref/build_unix/ultrix.so
new file mode 100644
index 000000000..1e690a4f2
--- /dev/null
+++ b/db/docs_src/ref/build_unix/ultrix.so
@@ -0,0 +1,17 @@
+m4_comment([$Id: ultrix.so,v 11.6 2003/03/24 13:46:24 bostic Exp $])
+
+m4_ref_title(Building m4_db for UNIX/POSIX systems,
+ Ultrix, @Ultrix, build_unix/sunos, build_win/intro)
+
+m4_nlistbegin
+
+m4_nlist([dnl
+m4_bold([Configuration complains that mmap(2) interfaces aren't being used.])
+
+m4_p([dnl
+The m4_manref(mmap, 2) interfaces are not used on Ultrix, even though
+they exist, because they are known to not work correctly.])])
+
+m4_nlistend
+
+m4_page_footer
diff --git a/db/docs_src/ref/build_vxworks/faq.so b/db/docs_src/ref/build_vxworks/faq.so
new file mode 100644
index 000000000..f55223f90
--- /dev/null
+++ b/db/docs_src/ref/build_vxworks/faq.so
@@ -0,0 +1,198 @@
+m4_comment([$Id: faq.so,v 1.30 2004/08/17 13:45:35 sue Exp $])
+
+m4_ref_title(Building m4_db for VxWorks systems,
+ VxWorks FAQ,
+ [@building for VxWorks FAQ, building for @VxWorks FAQ],
+ build_vxworks/notes, upgrade/version)
+
+m4_nlistbegin
+m4_nlist([dnl
+m4_bold([dnl
+I get the error "Workspace open failed: This project workspace is an
+older format.", when trying to open the supplied workspace on Tornado 2.0
+under Windows.])
+
+m4_p([dnl
+This error will occur if the files were extracted in a manner that adds
+a CR/LF to lines in the file. Make sure that you download the m4_db
+".zip" version of the m4_db distribution, and, when extracting the m4_db
+sources, that you use an unzipper program that will not do any
+conversion.])])
+
+m4_nlist([dnl
+m4_bold([dnl
+I sometimes see spurious output errors about temporary directories.])
+
+m4_p([dnl
+These messages are coming from the m4_manref(stat, 2) function call
+in VxWorks. Unlike other systems, there may not be a well known
+temporary directory on the target. Therefore, we highly recommend that
+all applications use m4_ref(dbenv_set_tmp_dir) to
+specify a temporary directory for the application.])])
+
+m4_nlist([dnl
+m4_bold([dnl
+How can I build m4_db without using Tornado?])
+
+m4_p([dnl
+The simplest way to build m4_db without using Tornado is to configure
+m4_db on a UNIX system, and then use the Makefile and include files
+generated by that configuration as the starting point for your build.
+The Makefile and include files are created during configuration, in the
+current directory, based on your configuration decisions (for example,
+debugging vs. non-debugging builds), so you'll need to configure the
+system for the way you want m4_db to be built.])
+
+m4_p([dnl
+Additionally, you'll need to account for the slight difference between
+the set of source files used in a UNIX build and the set used in a
+VxWorks build. You can use the following command to create a list of
+the m4_db VxWorks files. The commands assume you are in the build_vxworks
+directory of the m4_db distribution:])
+
+m4_indent([dnl
+% cat __GT__ /tmp/files.sed
+s/__LT__BEGIN__GT__ FILE_//
+s/_objects//
+^D
+% grep FILE_ BerkeleyDB.wpj | grep _objects | sed -f /tmp/files.sed __GT__ /tmp/db.files])
+
+m4_p([dnl
+You will then have a template Makefile and include files, and a list of
+VxWorks-specific source files. You will need to convert this Makefile
+and list of files into a form that is acceptable to your specific build
+environment.])])
+
+m4_nlist([dnl
+m4_bold([dnl
+Does m4_db use floating point registers?])
+
+m4_p([dnl
+Yes, there are a few places in m4_db where floating point computations
+are performed. As a result, all applications that call
+m4_italic(taskSpawn) should specify the m4_bold(VX_FP_TASK) option.])])
+
+m4_nlist([dnl
+m4_bold([dnl
+Can I run the test suite under VxWorks?])
+
+m4_p([dnl
+The test suite requires the m4_db Tcl library. In turn, this library
+requires Tcl 8.4 or greater. In order to run the test suite, you would
+need to port Tcl 8.4 or greater to VxWorks. The Tcl shell included in
+m4_italic(windsh) is not adequate for two reasons. First, it is based on
+Tcl 8.0. Second, it does not include the necessary Tcl components for
+adding a Tcl extension.])])
+
+m4_nlist([dnl
+m4_bold([dnl
+Are all m4_db features available for VxWorks?])
+
+m4_p([dnl
+All m4_db features are available for VxWorks with the exception of the
+m4_ref(DB_TRUNCATE) flag for m4_ref(dbh_open). The underlying mechanism
+needed for that flag is not available consistently across different file
+systems for VxWorks.])])
+
+m4_nlist([dnl
+m4_bold([dnl
+Are there any constraints using particular filesystem drivers?])
+
+m4_p([dnl
+There are constraints using the dosFs filesystems with m4_db. Namely,
+you must configure your dosFs filesystem to support long filenames if
+you are using m4_db logging in your application. The VxWorks' dosFs
+1.0 filesystem, by default, uses the old MS-DOS 8.3 file-naming
+constraints, restricting to 8 character filenames with a 3 character
+extension. If you have configured with VxWorks' dosFs 2.0 you should
+be compatible with Windows FAT32 filesystems which supports long
+filenames.])])
+
+m4_nlist([dnl
+m4_bold([dnl
+Are there any dependencies on particular filesystem drivers?])
+
+m4_p([dnl
+There is one dependency on specifics of filesystem drivers in the port
+of m4_db to VxWorks. m4_db synchronizes data using the FIOSYNC function
+to ioctl() (another option would have been to use the FIOFLUSH function
+instead). The FIOSYNC function was chosen because the NFS client driver,
+nfsDrv, only supports it and doesn't support FIOFLUSH. All local file
+systems, as of VxWorks 5.4, support FIOSYNC -- with the exception of
+rt11fsLib, which only supports FIOFLUSH. To use rt11fsLib, you will need
+to modify the os/os_fsync.c file to use the FIOFLUSH function; note that
+rt11fsLib cannot work with NFS clients.])])
+
+m4_nlist([dnl
+m4_bold([dnl
+Are there any known filesystem problems?])
+
+m4_p([dnl
+During the course of our internal testing, we came across three problems
+with the dosFs 2.0 filesystem that warranted patches from Wind River Systems.
+We strongly recommend you upgrade to dosFs 2.2, m4_bold([SPR 79795 (x86)])
+and m4_bold([SPR 79569 (PPC)]) which fixes all of these problems and
+many more. You should ask Wind River Systems for the patches to these
+problems if you encounter them and are unable to upgrade to dosFs 2.2.])
+
+m4_p([dnl
+The first problem is that files will seem to disappear. You should
+look at m4_bold([SPR 31480]) in the Wind River Systems' Support pages for
+a more detailed description of this problem.])
+
+m4_p([dnl
+The second problem is a semaphore deadlock within the dosFs filesystem
+code. Looking at a stack trace via CrossWind, you will see two or more of
+your application's tasks waiting in semaphore code within dosFs. The patch
+for this problem is under m4_bold([SPR 33221]) at Wind River Systems.
+There are several SPR numbers at Wind River Systems that refer to this
+particular problem.])])
+
+m4_p([dnl
+The third problem is that all tasks will hang on a dosFs semaphore. You should
+look at m4_bold([SPR 72063]) in the Wind River Systems' Support pages for
+a more detailed description of this problem.])
+m4_nlist([dnl
+m4_bold([dnl
+Are there any filesystems I cannot use?])
+
+m4_p([dnl
+Currently both the Target Server File System (TSFS) and NFS are not able
+to be used.])
+
+m4_p([dnl
+The Target Server File System (TSFS) uses the netDrv driver. This driver
+does not support any ioctl that allows flushing to the disk, nor does
+it allow renaming of files via FIORENAME.
+The NFS file system uses nfsDrv and that driver
+does not support FIORENAME and cannot be used
+with m4_db. ])])
+
+m4_nlist([dnl
+m4_bold([dnl
+What VxWorks primitives are used for mutual exclusion in m4_db?])
+
+m4_p([dnl
+Mutexes inside of m4_db use the basic binary semaphores in VxWorks. The
+mutexes are created using the FIFO queue type.])])
+
+m4_nlist([dnl
+m4_bold([What are the implications of VxWorks' mutex implementation
+using microkernel resources?])
+
+m4_p([dnl
+On VxWorks, the semaphore primitives implementing mutexes consume system
+resources. Therefore, if an application unexpectedly fails, those
+resources could leak. m4_db solves this problem by always allocating
+mutexes in the persistent shared memory regions. Then, if an
+application fails, running recovery or explicitly removing the database
+environment by calling the m4_refT(dbenv_remove) will allow m4_db to
+release those previously held mutex resources. If an application
+specifies the m4_ref(DB_PRIVATE) flag (choosing not to use persistent
+shared memory), and then fails, mutexes allocated in that private memory
+may leak their underlying system resources. Therefore, the
+m4_ref(DB_PRIVATE) flag should be used with caution on VxWorks.])])
+
+m4_nlistend
+
+m4_page_footer
diff --git a/db/docs_src/ref/build_vxworks/intro.so b/db/docs_src/ref/build_vxworks/intro.so
new file mode 100644
index 000000000..4bec65a1d
--- /dev/null
+++ b/db/docs_src/ref/build_vxworks/intro.so
@@ -0,0 +1,112 @@
+m4_comment([$Id: intro.so,v 1.26 2007/05/30 08:39:07 alexg Exp $])
+
+m4_ref_title(Building m4_db for VxWorks systems,
+ Building for VxWorks 5.4 and 5.5, @building for VxWorks,
+ build_wince/faq, build_vxworks/notes)
+
+m4_p([dnl
+The build_vxworks directory in the m4_db distribution contains a workspace
+and project files for Tornado 2.0/VxWorks 5.4 and Tornado 2.2/VxWorks 5.5.])
+
+m4_table_begin(, _center)
+m4_table_header(File, Description)
+m4_table_element(_left, BerkeleyDB20.wsp, m4_db Workspace file for Tornado 2.0)
+m4_table_element(_left, BerkeleyDB20.wpj, m4_db Project file for Tornado 2.0)
+m4_table_element(_left, BerkeleyDB22.wsp, m4_db Workspace file for Tornado 2.2)
+m4_table_element(_left, BerkeleyDB22.wpj, m4_db Project file for Tornado 2.2)
+m4_table_element(_left, dbdemo/dbdemo20.wpj, m4_link(M4RELDIR/ref/build_vxworks/notes, Demo program) project file for Tornado 2.0)
+m4_table_element(_left, dbdemo/dbdemo22.wpj, m4_link(M4RELDIR/ref/build_vxworks/notes, Demo program) project file for Tornado 2.2)
+m4_table_element(_left, db_*/*20.wpj, m4_link(M4RELDIR/ref/build_vxworks/notes, Support utilities) project files for Tornado 2.0)
+m4_table_element(_left, db_*/*22.wpj, m4_link(M4RELDIR/ref/build_vxworks/notes, Support utilities) project files for Tornado 2.2)
+m4_table_end
+
+m4_section([Building With Tornado 2.0 or Tornado 2.2])
+m4_p([dnl
+Open the workspace m4_bold(BerkeleyDB20.wsp) or m4_bold(BerkeleyDB22.wsp).
+The list of projects in this workspace will be shown. These projects
+were created for the x86 BSP for VxWorks.])
+
+m4_p([dnl
+The remainder of this document assumes that you already have a VxWorks
+target and a target server, both up and running. It also assumes that
+your VxWorks image is configured properly for your needs. It also
+assumes that you have an acceptable file system already available.
+See m4_link(M4RELDIR/ref/build_vxworks/faq, VxWorks FAQ) for more
+information about file system requirements.
+See m4_link(M4RELDIR/ref/build_vxworks/notes, VxWorks Notes) for more
+information about building a small footprint version of m4_db.])
+
+m4_p([dnl
+First, you need to set the include directories. To do this, go to the
+m4_italic(Builds) tab for the workspace. Open up m4_italic(m4_db
+Builds). You will see several different builds, containing different
+configurations. All of the projects in the m4_db workspace are created
+to be downloadable applications.])
+
+m4_table_begin(, _center)
+m4_table_header(Build, Description)
+m4_table_element(_left, PENTIUM_debug, x86 BSP with debugging)
+m4_table_element(_left, PENTIUM_release, x86 BSP no debugging)
+m4_table_end
+
+m4_p([dnl
+You have to add a new build specification if you use a
+different BSP, want to add a build for the simulator or
+want to customize further. For instance, if you have the Power PC (PPC)
+BSP, you need to add a new build for the PPC tool chain. To do so,
+select the "Builds" tab, select the m4_db project name, and right-click.
+Choose the m4_italic(New Build...) selection and create the new build
+target. For your new build target, you need to decide whether
+it should be built for
+debugging. See the properties of the Pentium builds for ways to
+configure for each case. After you add this build you, you still need
+to configure correctly the include directories, as described in the
+sections that follow.])
+
+m4_p([dnl
+If you are running with a different
+BSP, you should remove the build specifications that do not apply to
+your hardware. We recommend that you do this after you configure any
+new build specifications first. The Tornado tools will get confused if
+you have a PENTIUMgnu build specification for a PPC BSP,
+for instance.])
+
+m4_p([dnl
+Select the build you are interested in, and right-click. Choose the
+m4_italic(Properties...) selection. At this point, a tabbed dialog
+should appear. In this new window, choose the m4_italic(C/C++ compiler)
+tab. In the edit box, you need to modify the full pathname of the
+m4_italic(build_vxworks) subdirectory of m4_db, followed by the full
+pathname of m4_db. Then, click OK.
+Note that some versions of Tornado (such as the version for Windows)
+do not correctly handle relative pathnames in the include paths.])
+
+m4_p([dnl
+To build and download the m4_db downloadable application for the first time
+requires several steps: ])
+
+m4_nlistbegin
+m4_nlist([dnl
+Select the build you are interested in, and right-click. Choose the
+m4_italic(Set... as Active Build) selection.])
+m4_nlist([dnl
+Select the build you are interested in, and right-click. Choose the
+m4_italic(Dependencies...) selection. Run dependencies over all files
+in the m4_db project.])
+m4_nlist([dnl
+Select the build you are interested in, and right-click. Choose the
+m4_italic(Rebuild All (m4_db.out)) selection.])
+m4_nlist([dnl
+Select the m4_db project name, and right-click. Choose the
+m4_italic(Download "m4_db.out") selection.])
+m4_nlistend
+
+m4_p([dnl
+Note that the output file listed about will really be listed as
+m4_italic(BerkeleyDB20.out) or m4_italic(BerkeleyDB22.out)
+depending on which version of Tornado you are running.
+You need to repeat this procedure for all builds you are interested in
+building, as well as for all of the utility project builds you want to
+run.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/build_vxworks/introae.so b/db/docs_src/ref/build_vxworks/introae.so
new file mode 100644
index 000000000..4a31ceaef
--- /dev/null
+++ b/db/docs_src/ref/build_vxworks/introae.so
@@ -0,0 +1,153 @@
+m4_comment([$Id: introae.so,v 1.8 2002/10/01 19:38:33 sue Exp $])
+
+m4_ref_title(Building m4_db for VxWorks systems,
+ Building for VxWorks AE, @building for VxWorks AE,
+ build_vxworks/intro, build_vxworks/notes)
+
+m4_p([dnl
+The build_vxworks directory in the m4_db distribution contains component
+files for Tornado 3.1. The m4_db distribution also contains workspace
+and project files for Tornado 2.X. See
+m4_link(M4RELDIR/ref/build_vxworks/intro, Building for VxWorks) for
+information about Tornado 2.0/VxWorks 5.4 and Tornado 2.2/VxWorks 5.5.])
+
+The VxWorks AE component files are all within subdirectories, and
+all component files are named m4_italic(component.wpj).
+m4_table_begin(, _center)
+m4_table_header(File, Description)
+m4_table_element(_left, m4_db/, m4_db component directory)
+m4_table_element(_left, dbdemo/dbdemo, m4_link(M4RELDIR/ref/build_vxworks/notes, Demo program) component directory)
+m4_table_element(_left, db_*/db_*, m4_link(M4RELDIR/ref/build_vxworks/notes, Support utilities) component directories)
+m4_table_end
+
+m4_section([Building With Tornado 3.1])
+m4_p([dnl
+This document assumes you already have a workspace set up and you
+want to add m4_db as a component in that workspace. You may include
+this component in any domain deemed appropriate for your application.])
+
+m4_p([dnl
+To add the m4_db component into your workspace, right-click on the
+"Components" and choose m4_italic(Add existing...). Enter
+the pathname to your m4_db distribution in the form
+m4_italic(__LT__pathname to your m4_db distribution__GT__)
+m4_bold(/build_vxworks/m4_db/).
+You will see m4_bold(component.wpj) listed under the "Files".
+Choose that filename and click "Ok". You will now have
+a m4_db component in your workspace.])
+
+m4_p([dnl
+There are essentially three options regarding protection
+domains and the m4_db component. The first option is to add
+the m4_db component directly into your application domain. You may
+choose to do this by downloading m4_db into that domain on your
+target, or by adding the component to the domain itself and it will
+be built when the application domain is built. The disadvantage
+of this option is that no other application domain will have access to
+the m4_db interfaces. ])
+
+m4_p([dnl
+The second option is to add the m4_db component directly into your
+m4_italic(vxKernel) domain. The advantage is that any application
+using the m4_db interface would have access to them and no changes
+would be necessary to the linkage path. The disadvantage is that
+all m4_db code would run with system privileges. ])
+
+m4_p([dnl
+The third option is to add a m4_db shared library domain to your
+system. Then add or download the m4_db component to that shared
+library domain. The advantage is that all application domains
+using the m4_db interfaces can access a single copy of the library
+running in user mode. The disadvantages are that one must
+remember to add the m4_db shared library domain to the linkage
+path of every application domain using m4_db and that shared library
+domains may not link against one another, a consideration if the
+application using m4_db is itself a shared library.])
+
+m4_p([dnl
+We believe the options outlined above are the most common methods
+that the m4_db component will be used. We believe that the third
+option, creating a shared library domain, is the most useful option.
+Ultimately, the responsibility of choosing the correct mechanism
+for including the m4_db component into the appropriate domain falls
+to the application developer.])
+
+m4_p([dnl
+The remainder of this document assumes that you already have a
+VxWorks AE target and a target server, both up and running. It also
+assumes that your VxWorks AE image is configured properly for your
+needs. It also assumes that you
+have an acceptable file system already available. See
+m4_link(M4RELDIR/ref/build_vxworks/faq, VxWorks FAQ) for more
+information about file system requirements.])
+
+m4_p([dnl
+To build m4_db, first, you need to set the build selection. To do
+this, right-click on the m4_db component name and choose the
+m4_italic(Build settings...) selection. If you look at the
+m4_italic(Active Build Specification) drop down list, you will see
+several different builds, containing different configurations. ])
+
+m4_table_begin(, _center)
+m4_table_header(Build, Description)
+m4_table_element(_left, PENTIUM2gnu.debug, PII BSP with debugging)
+m4_table_element(_left, PENTIUM2gnu.release, PII BSP no debugging)
+m4_table_end
+
+m4_p([dnl
+You have to add a new build specification if you use a
+different BSP, want to add a build for the simulator or
+want to customize further. For instance, if you have the Power PC (PPC)
+BSP, you need to add a new build for the PPC tool chain. To do so,
+select the "Add..." button in the m4_italic(Build Settings) window.
+A new window will appear giving you a list of all the BSPs
+you have available from which to choose.
+For your new build target, you need to decide whether it should be built for
+debugging. See the m4_italic(C/C++ compiler) tab of the Pentium
+builds for ways to
+configure for each case. After you add this build, you still need
+to configure the include directories correctly, as described in the
+sections that follow.])
+
+m4_p([dnl
+If you are running with a different
+BSP, you should remove the build specifications that do not apply to
+your hardware. We recommend that you do this after you configure any
+new build specifications first. ])
+
+m4_p([dnl
+If you are adding a new build you must set the include directories
+correctly. After you have added the new build in the "Build Settings"
+window, click on the m4_italic(C/C++ compiler) tab.
+In the edit box, you need to add the pathname of the
+m4_italic(build_vxworks) subdirectory of m4_db, followed by the
+pathname of m4_db. You should add these directories
+relative to the project directory, using the m4_bold(PRJ_DIR)
+macro, which is the m4_db subdirectory of m4_italic(build_vxworks).
+Then, click OK. The typical addition of include
+directories will look like:])
+
+m4_indent([-I$(PRJ_DIR)/.. -I$(PRJ_DIR)/../..])
+
+m4_p([dnl
+To build and download the m4_db downloadable application for the first time
+requires several steps: ])
+
+m4_nlistbegin
+m4_nlist([dnl
+Select the build you are interested in using the m4_italic(Build Settings)
+window. Click OK when done.])
+m4_nlist([dnl
+Select the m4_db component and right-click. Choose the
+m4_italic(Clean Build) selection.])
+m4_nlist([dnl
+Select the m4_db component and right-click. Choose the
+m4_italic(Download...) selection.])
+m4_nlistend
+
+m4_p([dnl
+You need to repeat this procedure for all builds you are interested in
+building, as well as for all of the utility project builds you want to
+run.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/build_vxworks/notes.so b/db/docs_src/ref/build_vxworks/notes.so
new file mode 100644
index 000000000..2a89d4369
--- /dev/null
+++ b/db/docs_src/ref/build_vxworks/notes.so
@@ -0,0 +1,67 @@
+m4_comment([$Id: notes.so,v 1.20 2004/10/08 17:16:54 sue Exp $])
+
+m4_ref_title(Building m4_db for VxWorks systems,
+ VxWorks notes, @VxWorks notes, build_vxworks/intro, build_vxworks/faq)
+
+m4_p([dnl
+m4_db currently disallows the DB_TRUNC flag to m4_ref(dbh_open). The
+operations that this flag represents are not fully supported under
+VxWorks.])
+
+m4_p([dnl
+The m4_ref(dbh_sync) function is implemented using an ioctl call into
+the file system driver with the FIOSYNC command. Most, but not all file
+system drivers support this call. m4_db requires the use of a file
+system supporting FIOSYNC.])
+
+m4_section([Building and Running the Demo Program])
+m4_p([dnl
+The demo program should be built in a manner very similar to
+building m4_db. If you want different or additional BSP
+build specifications you should add them by following the
+directions indicated in m4_link(M4RELDIR/ref/build_vxworks/intro, Building
+with Tornado 2.0 or Tornado 2.2).])
+
+m4_p([dnl
+The demo program can be downloaded and run by calling the entry function
+m4_bold(dbdemo) with the pathname of a database to use. The demo
+program will ask for some input keys. It creates a database and adds
+those keys into the database, using the reverse of the key as the data
+value. When complete you can either enter EOF (control-D) or
+m4_bold(quit) and the demo program will display all of the key/data
+items in the database.])
+
+m4_section([Building and Running the Utility Programs])
+m4_p([dnl
+The m4_db m4_link(M4RELDIR/utility/index, utility programs)
+can be downloaded and run by calling the
+function equivalent to the utility's name. The utility functions take
+a string containing all the supported arguments. The program will then
+decompose that string into a traditional argc/argv used internally.
+For example, to execute m4_ref(db_stat) on a database within an
+environment you would execute the following from the windsh prompt.
+Obviously you would change the pathname and database name to reflect
+your system.])
+
+m4_indent([-__GT__ db_stat "-h /tmp/myenvhome -d mydatabase.db"])
+
+m4_section([Notes for VxWorks 5.4/5.5])
+m4_p([dnl
+The memory on VxWorks is always resident and fully shared among all
+tasks running on the target. For this reason, the m4_ref(DB_SYSTEM_MEM)
+flag is implied for any application that does not specify the
+m4_ref(DB_PRIVATE) flag. Additionally, applications must use a segment
+ID to ensure that different applications do not overwrite each other's
+database environments. See the m4_refT(dbenv_set_shm_key) for more
+information. Also, the m4_ref(DB_LOCKDOWN) flag has no effect.])
+
+m4_p([dnl
+A default small footprint build is provided. This default provides
+equivalent to the m4_arg(--enable-smallbuild) configuration option
+described in m4_link(M4RELDIR/ref/build_unix/small, Building a
+small memory footprint library). In order to build the small
+footprint, you should move m4_path([db_config.h]) aside and copy
+m4_path([db_config_small.h]) to m4_path([db_config.h]). Then open up
+the appropriate small workspace file via Tornado and build as usual.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/build_win/faq.so b/db/docs_src/ref/build_win/faq.so
new file mode 100644
index 000000000..f71d5c33c
--- /dev/null
+++ b/db/docs_src/ref/build_win/faq.so
@@ -0,0 +1,80 @@
+m4_comment([$Id: faq.so,v 10.37 2007/05/30 08:39:08 alexg Exp $])
+
+m4_ref_title(Building m4_db for Windows systems,
+ Windows FAQ,
+ [@building for Windows FAQ, building for @Windows FAQ],
+ build_win/notes, build_wince/intro)
+
+m4_nlistbegin
+
+m4_nlist([dnl
+m4_bold([dnl
+Why do I have db_load.dll - where is db_load.exe?])
+
+m4_p([dnl
+Microsoft Visual C++ .NET has some bugs related to converting project
+files from VC++ 6.0 format and incorrectly converts the db_load project.
+For more information, see m4_linkweb(
+[http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q321274&],
+[Microsoft's article about this bug]).])
+
+m4_p([dnl
+The workaround is simply to switch the m4_bold(db_load) project back to
+generating an EXE after converting to VC++ .NET. To do this, right
+click on db_load -__GT__ Properties and change "Configuration Type" from
+"Dynamic Library (.dll)" to "Application (.exe)".])])
+
+m4_nlist([dnl
+m4_bold([dnl
+My Win* C/C++ application crashes in the m4_db library when m4_db calls
+fprintf (or some other standard C library function).])
+
+m4_p([dnl
+You should be using the "Debug Multithreaded DLL" compiler option in
+your application when you link with the
+build_windows\Debug\libdb[]M4MAJOR[]M4MINOR[]d.lib library (this .lib file
+is actually a stub for libdb[]M4MAJOR[]M4MINOR[]d.DLL). To check this
+setting in Visual C++, choose the m4_italic(Project/Settings) menu
+item and select m4_italic(Code Generation) under the tab marked
+m4_italic(C/C++); and see the box marked m4_italic(Use runtime
+library). This should be set to m4_italic(Debug Multithreaded DLL).
+If your application is linked against the static library,
+build_windows\Debug\libdb[]M4MAJOR[]M4MINOR[]sd.lib; then, you will want
+to set m4_italic(Use runtime library) to m4_italic(Debug Multithreaded).])
+
+m4_p([dnl
+Setting this option incorrectly can cause multiple versions of the
+standard libraries to be linked into your application (one on behalf
+of your application, and one on behalf of the m4_db library). That
+violates assumptions made by these libraries, and traps can result.])])
+
+m4_nlist([dnl
+m4_bold([dnl
+Why are the build options for DB_DLL marked as "Use MFC in a Shared DLL"?
+Does m4_db use MFC?])
+
+m4_p([dnl
+m4_db does not use MFC at all. It does however, call malloc and free
+and other facilities provided by the Microsoft C runtime library. We
+found in our work that many applications and libraries are built
+assuming MFC, and specifying this for m4_db solves various
+interoperation issues, and guarantees that the right runtime libraries
+are selected. Note that because we do not use MFC facilities, the MFC
+library DLL is not marked as a dependency for libdb.dll, but the
+appropriate Microsoft C runtime is.])])
+
+m4_idefz(configuring for @MinGW)
+m4_nlist([dnl
+m4_bold([dnl
+How can I build m4_db for m4_linkweb(http://www.mingw.org, MinGW)?])
+
+m4_p([dnl
+Follow the instructions in m4_linkpage(M4RELDIR/ref/build_unix/intro,
+Building for UNIX/POSIX), and specify the --enable-mingw option to the
+configuration script. This configuration option currently only builds
+static versions of the library, it does not yet build a DLL version of
+the library.])])
+
+m4_nlistend
+
+m4_page_footer
diff --git a/db/docs_src/ref/build_win/intro.so b/db/docs_src/ref/build_win/intro.so
new file mode 100644
index 000000000..e6774db1c
--- /dev/null
+++ b/db/docs_src/ref/build_win/intro.so
@@ -0,0 +1,430 @@
+m4_comment([$Id: intro.so,v 10.79 2006/01/27 20:01:45 bostic Exp $])
+
+m4_ref_title(Building m4_db for Windows systems,
+ Building for Windows,
+ @building for Windows, build_unix/ultrix, build_win/small)
+
+define(TCLMAJOR, 8)
+define(TCLMINOR, 4)
+define(TCLDEBUG, g)
+
+m4_p([dnl
+This page contains general instructions on building m4_db for
+specific windows platforms using specific compilers. The
+m4_link(M4RELDIR/ref/build_win/faq, Windows FAQ) also
+contains helpful information.])
+
+m4_p([dnl
+The m4_path(build_windows) directory in the m4_db distribution contains
+project files for Microsoft Visual C++:])
+
+m4_table_begin(, _center)
+m4_table_header(Project File, Description)
+m4_table_element(_center, Berkeley_DB.dsw, Visual C++ 6.0 workspace)
+m4_table_element(_center, *.dsp, Visual C++ 6.0 projects)
+m4_table_end
+
+m4_p([dnl
+These project files can be used to build m4_db for the following platforms:
+Windows NT/2K/XP/2003, Windows 98/ME and 64-bit Windows XP/2003.])
+
+m4_section([Building m4_db for Windows NT/2K/XP/2003])
+m4_subsection([Visual C++ .NET 2005])
+
+m4_nlistbegin
+
+m4_nlist([dnl
+Choose m4_italic([File -__GT__ Open -__GT__ Project/Solution...]).
+In the m4_path(build_windows), select m4_path(Berkeley_DB) and click
+Open.])
+
+m4_nlist([dnl
+You will be prompted to convert the project files to current Visual C++
+format. Select "Yes to All".])
+
+m4_nlist([dnl
+Choose the project configuration from the drop-down menu on the tool
+bar (usually Debug or Release for Win32).])
+
+m4_nlist([dnl
+To build, right-click on the build_all target and select Build.])
+
+m4_nlistend
+
+m4_subsection([Visual C++ .NET or Visual C++ .NET 2003])
+
+m4_p([dnl
+This is very similar to the building with Visual Studio 2005, but some
+menu options have been rearranged:])
+
+m4_nlistbegin
+
+m4_nlist([dnl
+Choose m4_italic([File -__GT__ Open Solution]). Look in the
+m4_path(build_windows) directory for compatible workspace files, select
+m4_path(Berkeley_DB.dsw), and press Open.])
+
+m4_nlist([dnl
+You will be prompted to convert the project files to current Visual C++
+format. Select "Yes to All".])
+
+m4_nlist([dnl
+Choose the project configuration from the drop-down menu on the .NET
+tool bar (Debug or Release).])
+
+m4_nlist([dnl
+To build, right-click on build_all and select Build.])
+
+m4_nlistend
+
+m4_subsection([Visual C++ 6.0])
+
+m4_nlistbegin
+
+m4_nlist([dnl
+Choose m4_italic([File -__GT__ Open Workspace]). Look in the
+m4_path(build_windows) directory for Workspaces, select
+m4_path(Berkeley_DB.dsw), and press Open.])
+
+m4_nlist([dnl
+Choose the desired project configuration by going to m4_italic([Build
+-__GT__ Set Active Configuration]) and select the appropriate option
+to the build_all project (Debug or Release). Then click OK.])
+
+m4_nlist([dnl
+To build, press F7.])
+
+m4_nlistend
+
+m4_subsection([Build results])
+
+m4_p([dnl
+The results of your build will be placed in a subdirectory of
+m4_path(build_windows) named after the configuration you chose (for
+examples, m4_path(build_windows\Release) or
+m4_path(build_windows\Debug)).])
+
+m4_p([dnl
+When building your application during development, you should normally
+use compile options "Debug Multithreaded DLL" and link against
+m4_path(build_windows\Debug\libdb[]M4MAJOR[]M4MINOR[]d.lib). You can
+also build using a release version of the m4_db libraries and tools,
+which will be placed in
+m4_path(build_windows\Release\libdb[]M4MAJOR[]M4MINOR[].lib). When
+linking against the release build, you should compile your code with
+the "Release Multithreaded DLL" compile option. You will also need to
+add the m4_path(build_windows) directory to the list of include
+directories of your application's project, or copy the m4_db include
+files to another location.])
+
+m4_section([Building m4_db for Windows 98/ME])
+
+m4_p([dnl
+By default on Windows, m4_db supports internationalized filenames by
+treating all directory paths and filenames passed to m4_db methods as
+UTF-8 encoded strings. All paths are internally converted to wide
+character strings and passed to the wide character variants of Windows
+system calls.])
+
+m4_p([dnl
+This allows applications to create and open databases with names that
+cannot be represented with ASCII names while maintaining compatibility
+with applications that work purely with ASCII paths.])
+
+m4_p([dnl
+Windows 98 and ME do not support Unicode paths directly. To build for
+those versions of Windows, either follow the above instructions,
+choosing the "Debug ASCII" or "Release ASCII" build targets, or follow
+the instructions at
+m4_linkweb(
+http://www.microsoft.com/globaldev/handson/dev/mslu_announce.mspx,
+Microsoft's web site).])
+
+m4_p([dnl
+The ASCII builds will also work on Windows NT/2K/XP and 2003, but will
+not translate paths to wide character strings.])
+
+m4_section([Building m4_db for 64-bit Windows])
+
+m4_p([dnl
+The following procedure can be used on either to build natively on a
+64-bit system or to cross-compile from a 32-bit system.])
+
+m4_subsection([x64 build with Visual Studio 2005])
+
+m4_nlistbegin
+
+m4_nlist([dnl
+Choose m4_italic([File -__GT__ Open -__GT__ Project/Solution...]).
+In the m4_path(build_windows), select m4_path(Berkeley_DB) and click
+Open.])
+
+m4_nlist([dnl
+You will be prompted to convert the project files to current Visual C++
+format. Select "Yes to All".])
+
+m4_nlist([dnl
+Choose the project configuration from the drop-down menu on the tool
+bar ("Debug AMD64", "Release AMD64"). Change the CPU type from
+Win32 to x64.])
+
+m4_nlist([dnl
+Right-click on the build_all target and select Build.])
+
+m4_nlistend
+
+m4_subsection([64-bit build with Visual Studio .NET 2003 or earlier])
+
+m4_p([dnl
+You will need latest Platform SDK from Microsoft, available from
+m4_linkweb([http://www.microsoft.com/msdownload/platformsdk/sdkupdate/],
+[Microsoft's web site]). You only need the "Core SDK" from there.])
+
+m4_p([dnl
+Once that is installed, you should have an entry in your Start Menu
+called m4_italic([Microsoft Platform SDK (date) -__GT__ Open Build
+Environment Window -__GT__ Windows Server 2003 64-bit Build
+Environment -__GT__ Set Win Svr 2003 x64 Build Env (Debug)]).
+Selecting that will open a command window with the environment set up
+for 64-bit Windows development targeting AMD64-compatible CPUs.])
+
+m4_p([dnl
+Depending on how your computer is configured, you may need to run the
+m4_path(vcvars32.bat) or script to set up the environment to build
+from the command line with Visual Studio.])
+
+m4_p([dnl
+Then, in the m4_path(build_windows) directory in the m4_db
+distribution, run this for Visual Studio .NET:
+m4_indent([devenv Berkeley_DB.dsw])
+Choose "Yes To All" in the dialog box that appears, then close Visual
+Studio, then run:
+m4_indent([devenv Berkeley_DB.sln /build "Debug AMD64" /project "build_all" /useenv])
+For Visual Studio 6, just run this instead:
+m4_indent([msdev Berkeley_DB.dsw /make "build_all - Debug AMD64" /useenv])
+You should now have AMD64 binaries in the "Debug_AMD64" directory.])
+
+m4_p([dnl
+To build a release, open the "Retail" window instead of the "Debug"
+window, and change Debug to Release in the above commands. To build
+for Itanium, change AMD64 and x64 to IA64.])
+
+m4_section([Building m4_db with Cygwin])
+m4_p([dnl
+To build m4_db with Cygwin, follow the instructions in
+m4_link(M4RELDIR/ref/build_unix/intro, Building for UNIX).])
+
+m4_section([Building the C++ API])
+m4_p([dnl
+C++ support is built automatically on Windows.])
+
+m4_section([Building the Java API])
+m4_p([dnl
+Java support is not built automatically. The following instructions
+assume that you have installed the Sun Java Development Kit in
+m4_path(d:\java). Of course, if you installed elsewhere or have
+different Java software, you will need to adjust the pathnames
+accordingly.])
+
+m4_subsection([Building Java with Visual C++ .NET or above])
+
+m4_nlistbegin
+
+m4_nlist([dnl
+Set your include directories. Choose m4_italic([Tools -__GT__ Options
+-__GT__ Projects -__GT__ VC++ Directories]). Under the "Show
+directories for" pull-down, select "Include files". Add the full
+pathnames for the m4_path(d:\java\include) and
+m4_path(d:\java\include\win32) directories. Then click OK. These are
+the directories needed when including jni.h.])
+
+m4_nlist([dnl
+Set the executable files directories. Choose m4_italic([Tools -__GT__
+Options -__GT__ Projects -__GT__ VC++ Directories]). Under the "Show
+directories for" pull-down, select "Executable files". Add the full
+pathname for the m4_path(d:\java\bin) directory, then click OK. This is
+the directory needed to find javac.])
+
+m4_nlist([dnl
+Set the build type to Release or Debug in the drop-down on the .NET
+tool bar.])
+
+m4_nlist([dnl
+To build, right-click on db_java and select Build. This builds the
+Java support library for m4_db and compiles all the java files,
+placing the resulting m4_path(db.jar) and m4_path(dbexamples.jar)
+files in the m4_path(build_windows\Release) or
+m4_path(build_windows\Debug) subdirectory of m4_db.])
+
+m4_nlistend
+
+m4_subsection([Building Java with Visual C++ 6.0])
+
+m4_nlistbegin
+
+m4_nlist([dnl
+Set the include directories. Choose m4_italic([Tools -__GT__ Options
+-__GT__ Directories]). Under the "Show directories for" pull-down,
+select "Include files". Add the full pathnames for the
+m4_path(d:\java\include) and m4_path(d:\java\include\win32) directories.
+These are the directories needed when including m4_path(jni.h).])
+
+m4_nlist([dnl
+Set the executable files directories. Choose m4_italic([Tools -__GT__
+Options -__GT__ Directories]). Under the "Show directories for"
+pull-down, select "Executable files". Add the full pathname for the
+m4_path(d:\java\bin) directory. This is the directory needed to find
+javac.])
+
+m4_nlist([dnl
+Go to m4_italic([Build -__GT__ Set Active Configuration]) and select
+either the Debug or Release version of the db_java project. Then
+press OK.])
+
+m4_nlist([dnl
+To build, select m4_italic([Build -__GT__ Build
+libdb_java[]M4MAJOR[]M4MINOR.dll]). This builds the Java support
+library for m4_db and compiles all the java files, placing the
+resulting m4_path(db.jar) and m4_path(dbexamples.jar) files in the
+m4_path(build_windows\Release) or m4_path(build_windows\Debug)
+subdirectory of m4_db.])
+
+m4_nlistend
+
+m4_p([dnl
+To run Java code, set your environment variable m4_envvar(CLASSPATH)
+to include the full pathname of these jar files, and your environment
+variable m4_envvar(PATH) to include the m4_path(build_windows\Release)
+subdirectory. On Windows, remember that files or directories in the
+m4_envvar(CLASSPATH) and m4_envvar(PATH) variables must be separated
+by semicolons (unlike UNIX). Then, try running the following command
+as a test:])
+
+m4_indent([java db.AccessExample])
+
+m4_p([dnl
+If you want to run Java code using a Debug build, substitute 'Debug'
+for 'Release' in the instructions above. Make sure you use the Debug
+JAR file with the Debug DLL and the Release JAR with the Release
+DLL.])
+
+m4_section([Building the Tcl API])
+m4_p([dnl
+Tcl support is not built automatically. See
+m4_link(M4RELDIR/ref/tcl/intro, Loading m4_db with Tcl) for
+information on sites from which you can download Tcl and which Tcl
+versions are compatible with m4_db. These notes assume that Tcl is
+installed as m4_path(d:\tcl), but you can change that if you want.])
+
+m4_p([dnl
+The Tcl library must be built as the same build type as the m4_db
+library (both Release or both Debug). We found that the binary
+release of Tcl can be used with the Release configuration of m4_db,
+but you will need to build Tcl from sources for the Debug
+configuration. Before building Tcl, you will need to modify its
+makefile to make sure that you are building a debug version, including
+thread support. This is because the set of DLLs linked into the Tcl
+executable must match the corresponding set of DLLs used by m4_db.])
+
+m4_subsection([Building Tcl with Visual C++ .NET or above])
+
+m4_nlistbegin
+
+m4_nlist([dnl
+Set the include directories. Choose m4_italic([Tools -__GT__ Options
+-__GT__ Projects -__GT__ VC++ Directories]). Under the "Show
+directories for" pull-down, select "Include files". Add the full
+pathname for m4_path(d:\tcl\include), then click OK. This is the
+directory that contains m4_path(tcl.h).])
+
+m4_nlist([dnl
+Set the library files directory. Choose m4_italic([Tools -__GT__
+Options -__GT__ Projects -__GT__ VC++ Directories]). Under the "Show
+directories for" pull-down, select "Library files". Add the full
+pathname for the m4_path(d:\tcl\lib) directory, then click OK. This is
+the directory needed to find
+m4_path(tcl[]TCLMAJOR[]TCLMINOR[]TCLDEBUG.lib) (or whatever the
+library is named in your distribution).])
+
+m4_nlist([dnl
+Set the build type to Release or Debug in the drop-down on the .NET
+tool bar.])
+
+m4_nlist([dnl
+To build, right-click on db_tcl and select Build. This builds the Tcl
+support library for m4_db, placing the result into
+m4_path(build_windows\Debug\libdb_tcl[]M4MAJOR[]M4MINOR[]d.dll) or
+m4_path(build_windows\Release\libdb_tcl[]M4MAJOR[]M4MINOR.dll).])
+
+m4_nlistend
+
+m4_p([dnl
+If you use a version different from Tcl TCLMAJOR.TCLMINOR.x you will
+need to change the name of the Tcl library used in the build (for
+example, m4_path(tcl[]TCLMAJOR[]TCLMINOR[]TCLDEBUG.lib)) to the
+appropriate name. To do this, right click on m4_italic(db_tcl), go to
+m4_italic([Properties -__GT__ Linker -__GT__ Input -__GT__ Additional
+dependencies]) and change
+m4_path(tcl[]TCLMAJOR[]TCLMINOR[]TCLDEBUG.lib) to match the Tcl
+version you are using.])
+
+m4_subsection([Building Tcl with Visual C++ 6.0])
+
+m4_nlistbegin
+
+m4_nlist([dnl
+Set the include directories. Choose m4_italic([Tools -__GT__ Options
+-__GT__ Directories]). Under the "Show directories for" pull-down,
+select "Include files". Add the full pathname for
+m4_path(d:\tcl\include), then click OK. This is the directory that
+contains m4_path(tcl.h).])
+
+m4_nlist([dnl
+Set the library files directory. Choose m4_italic([Tools -__GT__
+Options -__GT__ Directories]). Under the "Show directories for"
+pull-down, select "Library files". Add the full pathname for the
+m4_path(d:\tcl\lib) directory, then click OK. This is the directory
+needed to find m4_path(tcl[]TCLMAJOR[]TCLMINOR[]TCLDEBUG.lib) (or
+whatever the library is named in your distribution).])
+
+m4_nlist([dnl
+Go to m4_italic([Build -__GT__ Set Active Configuration]) and select
+either the Debug or Release version of the db_tcl project. Then press
+OK.])
+
+m4_nlist([dnl
+To build, select m4_italic([Build -__GT__ Build
+libdb_tcl[]M4MAJOR[]M4MINOR.dll]). This builds the Tcl support
+library for m4_db, placing the result into
+m4_path(build_windows\Debug\libdb_tcl[]M4MAJOR[]M4MINOR[]d.dll) or
+m4_path(build_windows\Release\libdb_tcl[]M4MAJOR[]M4MINOR.dll).])
+
+m4_nlistend
+
+m4_p([dnl
+If you use a version different from Tcl TCLMAJOR.TCLMINOR.x you will
+need to change the name of the Tcl library used in the build (for
+example, m4_path(tcl[]TCLMAJOR[]TCLMINOR[]TCLDEBUG.lib)) to the
+appropriate name. To do this, choose
+m4_italic([Project -__GT__ Settings -__GT__ db_tcl])
+and change the Tcl library listed in the Object/Library modules
+m4_path(tcl[]TCLMAJOR[]TCLMINOR[]TCLDEBUG.lib) to match the Tcl version
+you are using.])
+
+m4_section([Distributing DLLs])
+m4_p([dnl
+When distributing applications linked against the DLL (not static)
+version of the library, the DLL files you need will be found in the
+m4_path(build_windows\Release) subdirectory, or
+m4_path(build_windows\Debug) if you distribute a debug version. You may
+also need to redistribute DLL files needed for the compiler's runtime.
+For Visual C++ 6.0, these files are m4_path(msvcrt.dll) and
+m4_path(msvcp60.dll) if you built with a Release configuration, or
+m4_path(msvcrtd.dll) and m4_path(msvcp60d.dll) if you are using a
+Debug configuration. Generally, these runtime DLL files can be
+installed in the same directory that will contain your installed m4_db
+DLLs. This directory may need to be added to your System PATH
+environment variable. Check your compiler's license and documentation
+for specifics on redistributing runtime DLLs.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/build_win/notes.so b/db/docs_src/ref/build_win/notes.so
new file mode 100644
index 000000000..48bd1b877
--- /dev/null
+++ b/db/docs_src/ref/build_win/notes.so
@@ -0,0 +1,79 @@
+m4_comment([$Id: notes.so,v 10.32 2006/09/15 18:54:47 bostic Exp $])
+
+m4_ref_title(Building m4_db for Windows systems,
+ Windows notes, @Windows notes, build_win/test, build_win/faq)
+
+m4_nlistbegin
+
+m4_nlist([dnl
+m4_db does not support the Windows/95 platform.])
+
+m4_nlist([dnl
+m4_db does not support replication on the Windows/98 or Windows/ME
+platforms.])
+
+m4_nlist([dnl
+On Windows/98 and Windows/ME, files opened by multiple processes do not
+share data correctly. For this reason, the m4_ref(DB_SYSTEM_MEM) flag
+is implied for any application not specifying the m4_ref(DB_PRIVATE)
+flag, causing the system paging file to be used for sharing data.])
+
+m4_nlist([dnl
+On Windows/98 and Windows/ME, removing or renaming a file using the
+m4_ref(dbenv_dbremove), m4_ref(dbenv_dbrename), m4_ref(dbh_remove) or
+m4_refT(dbh_rename)s may fail if another thread of control has the file
+open for any reason, including checkpointing or flushing pages from the
+underlying shared database environment cache. There is no workaround
+for this problem other than re-attempting the operation after the other
+thread of control has closed its m4_db handles.])
+
+m4_nlist([dnl
+On Windows, system paging file memory is freed on last close. For this
+reason, multiple processes sharing a database environment created using
+the m4_ref(DB_SYSTEM_MEM) flag must arrange for at least one process to
+always have the environment open, or alternatively that any process
+joining the environment be prepared to re-create it.])
+m4_p([dnl
+If a system memory environment is closed by all processes, subsequent
+attempts to open it will return an error. To successfully open a
+transactional environment in this state, recovery must be run by the
+next process to open the environment. For non-transactional
+environments, applications should remove the existing environment and
+then create a new database environment.])
+
+m4_nlist([dnl
+When using the m4_ref(DB_SYSTEM_MEM) flag, m4_db shared regions are
+created without ACLs, which means that the regions are only accessible
+to a single user. If wider sharing is appropriate (for example, both
+user applications and Windows/NT service applications need to access
+the m4_db regions), the m4_db code will need to be modified to create
+the shared regions with the correct ACLs. Alternatively, by not
+specifying the m4_ref(DB_SYSTEM_MEM) flag, filesystem-backed regions
+will be created instead, and the permissions on those files may be
+directly specified through the m4_refT(dbenv_open).])
+
+m4_nlist([dnl
+Applications that operate on wide character strings can use the
+Windows function WideCharToMultiByte with the code page CP_UTF8 to
+convert paths to the form expected by m4_db. Internally, m4_db calls
+MultiByteToWideChar on paths before calling Windows functions.])
+
+m4_nlist([dnl
+Various m4_db methods take a m4_arg(mode) argument, which is intended
+to specify the underlying file permissions for created files. m4_db
+currently ignores this argument on Windows systems.
+m4_p([dnl
+It would be possible to construct a set of security attributes to pass to
+m4_arg(CreateFile) that accurately represents the mode. In the worst
+case, this would involve looking up user and all group names, and creating
+an entry for each. Alternatively, we could call the m4_arg(_chmod)
+(partial emulation) function after file creation, although this leaves us
+with an obvious race.])
+m4_p([dnl
+Practically speaking, however, these efforts would be largely meaningless
+on a FAT file system, which only has a "readable" and "writable" flag,
+applying to all users.])])
+
+m4_nlistend
+
+m4_page_footer
diff --git a/db/docs_src/ref/build_win/small.so b/db/docs_src/ref/build_win/small.so
new file mode 100644
index 000000000..f1a211b93
--- /dev/null
+++ b/db/docs_src/ref/build_win/small.so
@@ -0,0 +1,42 @@
+m4_comment([$Id: small.so,v 10.5 2006/08/24 16:32:27 bostic Exp $])
+
+m4_ref_title(Building m4_db for Windows systems,
+ Building a small memory footprint library,,
+ build_win/intro, build_win/test)
+
+m4_p([dnl
+For applications that don't require all of the functionality of the full
+m4_db library, an option is provided to build a static library with
+certain functionality disabled. In particular, cryptography, hash and
+queue access methods, replication and verification are all turned off.
+This can reduce the memory footprint of m4_db significantly.])
+
+m4_p([dnl
+In general on Windows systems, you will want to evaluate the size of the
+final application, not the library build. The Microsoft LIB file format
+(like UNIX archives) includes copies of all of the object files and
+additional information. The linker rearranges symbols and strips out
+the overhead, and the resulting application is much smaller than the
+library. There is also a Visual C++ optimization to "Minimize size"
+that will reduce the library size by a few percent.])
+
+m4_p([dnl
+A Visual C++ project file called m4_path(db_small.dsp) is provided for
+this small memory configuration, but is not included in the workspace
+by default. To build, open Visual Studio and go to the m4_italic(File)
+menu. Choose m4_italic(Open Workspace), change m4_italic(Files of Type)
+to m4_italic(Projects (.dsp)) and open m4_italic(db_small.dsp).])
+
+m4_p([dnl
+The project supports two configurations - m4_italic(Release) and
+m4_italic(Debug). During a build (F7), static libraries are created in
+m4_path(Release) or m4_path(Debug), respectively. The library name is
+m4_path(libdb_small[]M4MAJOR[]M4MINOR[]sd.lib) for the debug build, or
+m4_path(libdb_small[]M4MAJOR[]M4MINOR[]s.lib) for the release build.])
+
+m4_p([dnl
+For assistance in further reducing the size of the m4_db library, or in
+building small memory footprint libraries on other systems, please
+contact m4_db support.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/build_win/test.so b/db/docs_src/ref/build_win/test.so
new file mode 100644
index 000000000..f7454b63d
--- /dev/null
+++ b/db/docs_src/ref/build_win/test.so
@@ -0,0 +1,113 @@
+m4_comment([$Id: test.so,v 10.45 2005/12/01 03:18:51 bostic Exp $])
+
+ifdef([__m4_product_name],, [define(__m4_product_name, m4_db)])
+ifelse(__m4_product_name, m4_db, [dnl
+define(__m4_tclwinpath, ref/build_win/intro)
+define(__m4_prev_link, build_win/small)
+define(__m4_next_link, build_win/notes)],[dnl
+define(__m4_tclwinpath, ref_xml/xml_win/intro)
+define(__m4_prev_link, xml_win/intro)
+define(__m4_next_link, xml_win/notes)])
+
+m4_ref_title(Building __m4_product_name for Windows systems,
+ Running the test suite under Windows,
+ [running the @test suite under Windows,
+ running the test suite under @Windows], __m4_prev_link, __m4_next_link)
+
+m4_p([dnl
+To build the test suite on Windows platforms, you will need to configure
+Tcl support. You will also need sufficient main memory (at least 64MB),
+and disk (around 250MB of disk will be sufficient).])
+
+m4_section(Building the software needed by the tests)
+
+m4_p([dnl
+To build for testing, perform the following steps:])
+
+m4_nlistbegin
+m4_nlist([The test suite must be run against a Debug version of
+__m4_product_name, so you will need a Debug version of the Tcl
+libraries. This involves building Tcl from its source. See the Tcl
+sources for more information.])
+
+m4_nlist([Open the __m4_product_name workspace.])
+
+m4_nlist([Build the Tcl API (see
+m4_link(M4RELDIR/__m4_tclwinpath, Building the Tcl API) for details).])
+
+ifelse(__m4_product_name, m4_db, [dnl
+m4_nlist([In Visual C++ 6.0, set the active configuration to db_test --
+Debug. To set an active configuration, under the m4_italic(Build) menu,
+select m4_italic(Set Active Configuration). Then choose
+m4_italic(db_test -- Debug). In Visual C++ .NET, just make sure
+m4_italic(Debug) is selected in the drop down list on the tool bar.])
+
+m4_nlist([Build. In Visual C++ 6.0, the IDE menu item for this is
+called "build dbkill.exe", even though dbkill is just one of the things
+that is built. In Visual C++ .NET, right-click on the
+m4_italic(db_test) project and select m4_italic(Build). This step makes
+sure that the base __m4_product_name .dll, tcl support, and various tools that
+are needed by the test suite are all built.])])
+m4_nlistend
+
+m4_section(Running the test suite under Windows)
+
+m4_p([dnl
+Before running the tests for the first time, you must edit the file
+m4_path(include.tcl) in your build directory and change the line
+that reads:])
+
+m4_indent([set tclsh_path SET_YOUR_TCLSH_PATH])
+
+m4_p([dnl
+You will want to use the location of the m4_path(tclsh) program (be
+sure to include the name of the executable). For example, if Tcl is
+installed in m4_path(d:\tcl), this line should be the following:])
+
+m4_indent([set tclsh_path d:\tcl\bin\tclsh84g.exe])
+
+m4_p([dnl
+If your path includes spaces be sure to enclose it in quotes:])
+
+m4_indent([set tclsh_path "c:\Program Files\tcl\bin\tclsh84g.exe"])
+
+m4_p([dnl
+Make sure that the path to __m4_product_name's tcl library is in your
+current path. On Windows NT/2000/XP, edit your PATH using the My
+Computer -__GT__ Properties -__GT__ Advanced -__GT__ Environment
+Variables dialog. On earlier versions of Windows, you may find it
+convenient to add a line to c:\AUTOEXEC.BAT:])
+
+ifelse(__m4_product_name, m4_db, [dnl
+m4_indent([SET PATH=%PATH%;c:\db\build_windows\Debug])], [dnl
+m4_indent([SET PATH=%PATH%;c:\dbxml\build_windows\Debug])
+
+m4_p([dnl
+Repeat the above step for each of the dependent DLLs. This includes the
+m4_db DLL, the Xerces-C DLL, and the Pathan DLL.])
+])
+
+m4_p([dnl
+Then, in a shell of your choice enter the following commands:])
+
+m4_nlistbegin
+
+m4_nlist([cd build_windows])
+
+m4_nlist([run m4_path(d:\tcl\bin\tclsh84g.exe), or the equivalent name of
+the Tcl shell for your system.
+m4_p([dnl
+You should get a "%" prompt.])])
+
+m4_nlist([% source ../test/test.tcl
+m4_p([dnl
+If no errors occur, you should get a "%" prompt.])])
+
+m4_nlistend
+
+m4_p([dnl
+You are now ready to run tests in the test suite; see
+m4_link(M4RELDIR/ref/test/run, Running the test suite) for more
+information.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/build_wince/faq.so b/db/docs_src/ref/build_wince/faq.so
new file mode 100644
index 000000000..3dae42fcf
--- /dev/null
+++ b/db/docs_src/ref/build_wince/faq.so
@@ -0,0 +1,21 @@
+m4_comment([$Id: faq.so,v 1.2 2007/06/04 14:55:40 bostic Exp $])
+
+m4_ref_title(Building m4_db for Windows CE systems,
+ Windows CE FAQ,
+ [@building for Windows CE FAQ, building for @Windows CE FAQ],
+ build_wince/notes, build_vxworks/intro)
+
+m4_nlistbegin
+
+m4_nlist([dnl
+m4_bold([dnl
+Why can't I use the Berkeley_DB workspace in Visual Studio 2005?])
+
+m4_p([dnl
+The automatic workspace upgrade tool included with Visual Studio 2005
+is not compatible with the eMbedded Visual Studio 4.0 project files
+distributed with m4_db.])])
+
+m4_nlistend
+
+m4_page_footer
diff --git a/db/docs_src/ref/build_wince/intro.so b/db/docs_src/ref/build_wince/intro.so
new file mode 100644
index 000000000..3d07a1b72
--- /dev/null
+++ b/db/docs_src/ref/build_wince/intro.so
@@ -0,0 +1,113 @@
+m4_comment([$Id: intro.so,v 1.2 2007/06/04 14:55:40 bostic Exp $])
+
+m4_ref_title(Building m4_db for Windows CE systems,
+ Building for Windows CE,
+ @building for Windows CE, build_win/faq, build_wince/notes)
+
+define(TCLMAJOR, 8)
+define(TCLMINOR, 4)
+define(TCLDEBUG, g)
+
+m4_p([dnl
+This page contains general instructions on building m4_db for
+Windows CE platforms using specific compilers. The
+m4_link(M4RELDIR/ref/build_wince/faq, Windows CE FAQ) also
+contains helpful information.])
+
+m4_p([dnl
+The m4_path(build_wince) directory in the m4_db distribution contains
+project files for Microsoft eMbedded Visual C++:])
+
+m4_table_begin(, _center)
+m4_table_header(Project File, Description)
+m4_table_element(_center, Berkeley_DB.vcw, eMbedded Visual C++ 4.0 workspace)
+m4_table_element(_center, *.vcp, eMbedded Visual C++ 4.0 projects)
+m4_table_end
+
+m4_p([dnl
+These project files can be used to build m4_db for the Windows CE platform.])
+
+m4_section([Building m4_db for Windows CE])
+m4_subsection([eMbedded Visual C++ 4.0])
+
+m4_nlistbegin
+
+m4_nlist([dnl
+Choose m4_italic([File -__GT__ Open Workspace...]).
+Navigate to the m4_path(build_wince) directory, select m4_path(Berkeley_DB)
+and click Open.])
+
+m4_nlist([dnl
+Choose the project configuration from the
+m4_italic([Build -__GT__ Set Active Configuration...]) drop-down menu on the
+tool bar. The correct target will usually db_small - Win32 (WCE emulator)
+Debug or Release.])
+
+m4_nlist([dnl
+To build, press F7, or select m4_italic([Build]) from the drop-down menu on the tool bar.])
+
+m4_nlistend
+
+m4_subsection([Build results])
+
+m4_p([dnl
+The results of your build will be placed in a subdirectory of
+m4_path(build_windows) named after the configuration you chose (for
+examples, m4_path(build_wince\Release) or
+m4_path(build_wince\Debug)).])
+
+m4_p([dnl
+When building your application during development, you should normally
+link against
+m4_path(build_wince\Debug\libdb_small[]M4MAJOR[]M4MINOR[]sd.lib). You can
+also build using a release version of the m4_db libraries and tools,
+which will be placed in
+m4_path(build_windows\Release\libdb_small[]M4MAJOR[]M4MINOR[]s.lib).
+You will also need to add the m4_path(build_wince) directory to the list
+of include directories of your application's project, or copy the m4_db
+include files to a location in your Visual Studio include path.])
+
+m4_section([Building m4_db for different target CPU architectures])
+
+m4_p([dnl
+There are many possible target CPU architectures for a Windows CE
+application. This section outlines the process required to add a new
+target architecture to the project files supplied with m4_db.])
+
+m4_subsection([eMbedded Visual C++ 4.0])
+m4_nlistbegin
+
+m4_nlist([dnl
+Choose m4_italic([File -__GT__ Open Workspace...]).
+Navigate to the m4_path(build_wince) directory, select m4_path(Berkeley_DB)
+and click Open.])
+
+m4_nlist([dnl
+Choose the m4_italic([Build -__GT__ Configurations...]) menu item.])
+
+m4_nlist([dnl
+Click the m4_italic([Add...]) button.])
+
+m4_nlist([dnl
+Select the desired CPU architecture from the first dropdown box. Select an
+existing target to copy the settings from (The corresponding emulator
+target is a good choice). Configuration should be either Debug or Release.
+Click m4_italic([OK]).])
+
+m4_nlist([dnl
+Choose the m4_italic([Build -__GT__ Set Active Configuration...]) menu
+item. Choose the new target then click OK.])
+
+m4_nlist([dnl
+Select the m4_italic([Project -__GT__ Settings...]) menu item. Under
+the C/C++ tab, select the Preprocessor m4_italic([Category]). In the
+m4_italic([Additional include directories:]) field add: ".,.."
+without the quotes. Click OK.])
+
+m4_nlist([dnl
+Build as per the instructions in m4_italic([Building m4_db for Windows
+CE]) above.])
+
+m4_nlistend
+
+m4_page_footer
diff --git a/db/docs_src/ref/build_wince/notes.so b/db/docs_src/ref/build_wince/notes.so
new file mode 100644
index 000000000..c7e96fc93
--- /dev/null
+++ b/db/docs_src/ref/build_wince/notes.so
@@ -0,0 +1,29 @@
+m4_comment([$Id: notes.so,v 1.2 2007/06/04 14:55:40 bostic Exp $])
+
+m4_ref_title(Building m4_db for Windows CE systems,
+ Windows CE notes, @Windows CE notes, build_wince/intro, build_wince/faq)
+
+m4_nlistbegin
+
+m4_nlist([dnl
+The C++ API is not supported on Windows CE. The file stream and
+exception handling functionality provided by the m4_db C++ API are not
+supported by Windows CE. It is possible to build a C++ application
+against the m4_db C API.])
+
+m4_nlist([dnl
+We do not currently ship workspace/project files for Windows CE that are
+compatible with Visual Studio 2005.
+
+You should be able to manually create project files by duplicating the
+structure in the eMbedded Visual C++ 4.0 projects.])
+
+m4_nlist([dnl
+The Java API is not currently supported on Windows CE.])
+
+m4_nlist([dnl
+Tcl support is not currently supported on Windows CE.])
+
+m4_nlistend
+
+m4_page_footer
diff --git a/db/docs_src/ref/cam/app.so b/db/docs_src/ref/cam/app.so
new file mode 100644
index 000000000..830e60092
--- /dev/null
+++ b/db/docs_src/ref/cam/app.so
@@ -0,0 +1,250 @@
+m4_comment([$Id: app.so,v 10.9 2005/12/01 03:18:51 bostic Exp $])
+
+m4_ref_title(m4_cam Applications,
+ Architecting Data Store and Concurrent Data Store applications,,
+ cam/fail, transapp/intro)
+
+m4_p([dnl
+When building Data Store and Concurrent Data Store applications, the
+architecture decisions involve application startup (cleaning up any
+existing databases, the removal of any existing database environment
+and creation of a new environment), and handling system or application
+failure. "Cleaning up" databases involves removal and re-creation
+of the database, restoration from an archival copy and/or verification
+and optional salvage, as described in m4_link(fail, [Handling failure
+in Data Store and Concurrent Data Store applications]).])
+
+m4_p([dnl
+Data Store or Concurrent Data Store applications without database
+environments are single process, by definition. These applications
+should start up, re-create, restore, or verify and optionally salvage
+their databases and run until eventual exit or application or system
+failure. After system or application failure, that process can simply
+repeat this procedure. This document will not discuss the case of these
+applications further.])
+
+m4_p([dnl
+Otherwise, the first question of Data Store and Concurrent Data Store
+architecture is the cleaning up existing databases and the removal of
+existing database environments, and the subsequent creation of a new
+environment. For obvious reasons, the application must serialize the
+re-creation, restoration, or verification and optional salvage of its
+databases. Further, environment removal and creation must be
+single-threaded, that is, one thread of control (where a thread of
+control is either a true thread or a process) must remove and re-create
+the environment before any other thread of control can use the new
+environment. It may simplify matters that m4_db serializes creation of
+the environment, so multiple threads of control attempting to create a
+environment will serialize behind a single creating thread.])
+
+m4_p([dnl
+Removing a database environment will first mark the environment as
+"failed", causing any threads of control still running in the
+environment to fail and return to the application. This feature allows
+applications to remove environments without concern for threads of
+control that might still be running in the removed environment.])
+
+m4_p([dnl
+One consideration in removing a database environment which may be in use
+by another thread, is the type of mutex being used by the m4_db library.
+In the case of database environment failure when using test-and-set
+mutexes, threads of control waiting on a mutex when the environment is
+marked "failed" will quickly notice the failure and will return an error
+from the m4_db API. In the case of environment failure when using
+blocking mutexes, where the underlying system mutex implementation does
+not unblock mutex waiters after the thread of control holding the mutex
+dies, threads waiting on a mutex when an environment is recovered might
+hang forever. Applications blocked on events (for example, an
+application blocked on a network socket or a GUI event) may also fail
+to notice environment recovery within a reasonable amount of time.
+Systems with such mutex implementations are rare, but do exist;
+applications on such systems should use an application architecture
+where the thread recovering the database environment can explicitly
+terminate any process using the failed environment, or configure m4_db
+for test-and-set mutexes, or incorporate some form of long-running timer
+or watchdog process to wake or kill blocked processes should they block
+for too long.])
+
+m4_p([dnl
+Regardless, it makes little sense for multiple threads of control to
+simultaneously attempt to remove and re-create a environment, since the
+last one to run will remove all environments created by the threads of
+control that ran before it. However, for some few applications, it may
+make sense for applications to have a single thread of control that
+checks the existing databases and removes the environment, after which
+the application launches a number of processes, any of which are able
+to create the environment.])
+
+m4_p([dnl
+With respect to cleaning up existing databases, the database environment
+must be removed before the databases are cleaned up. Removing the
+environment causes any m4_db library calls made by threads of control
+running in the failed environment to return failure to the application.
+Removing the database environment first ensures the threads of control
+in the old environment do not race with the threads of control cleaning
+up the databases, possibly overwriting them after the cleanup has
+finished. Where the application architecture and system permit, many
+applications kill all threads of control running in the failed database
+environment before removing the failed database environment, on general
+principles as well as to minimize overall system resource usage. It
+does not matter if the new environment is created before or after the
+databases are cleaned up.])
+
+m4_p([dnl
+After having dealt with database and database environment recovery after
+failure, the next issue to manage is application failure. As described
+in m4_link(fail, [Handling failure in Data Store and Concurrent Data
+Store applications]), when a thread of control in a Data Store or
+Concurrent Data Store application fails, it may exit holding data
+structure mutexes or logical database locks. These mutexes and locks
+must be released to avoid the remaining threads of control hanging
+behind the failed thread of control's mutexes or locks.])
+
+m4_p([dnl
+There are three common ways to architect m4_db Data Store and Concurrent
+Data Store applications. The one chosen is usually based on whether or
+not the application is comprised of a single process or group of
+processes descended from a single process (for example, a server started
+when the system first boots), or if the application is comprised of
+unrelated processes (for example, processes started by web connections
+or users logging into the system).])
+
+m4_nlistbegin
+m4_nlist([dnl
+The first way to architect Data Store and Concurrent Data Store
+applications is as a single process (the process may or may not be
+multithreaded.)
+
+m4_p([dnl
+When this process starts, it removes any existing database environment
+and creates a new environment. It then cleans up the databases and
+opens those databases in the environment. The application can
+subsequently create new threads of control as it chooses. Those threads
+of control can either share already open m4_db m4_ref(DbEnv) and
+m4_ref(Db) handles, or create their own. In this architecture,
+databases are rarely opened or closed when more than a single thread of
+control is running; that is, they are opened when only a single thread
+is running, and closed after all threads but one have exited. The last
+thread of control to exit closes the databases and the database
+environment.])
+
+m4_p([dnl
+This architecture is simplest to implement because thread serialization
+is easy and failure detection does not require monitoring multiple
+processes.])
+
+m4_p([dnl
+If the application's thread model allows the process to continue after
+thread failure, the m4_refT(dbenv_failchk) can be used to determine if
+the database environment is usable after the failure. If the
+application does not call m4_ref(dbenv_failchk), or
+m4_ref(dbenv_failchk) returns m4_ref(DB_RUNRECOVERY), the application
+must behave as if there has been a system failure, removing the
+environment and creating a new environment, and cleaning up any
+databases it wants to continue to use. Once these actions have been
+taken, other threads of control can continue (as long as all existing
+m4_db handles are first discarded), or restarted.])])
+
+m4_nlist([dnl
+The second way to architect Data Store and Concurrent Data Store
+applications is as a group of related processes (the processes may or
+may not be multithreaded).
+
+m4_p([dnl
+This architecture requires the order in which threads of control are
+created be controlled to serialize database environment removal and
+creation, and database cleanup.])
+
+m4_p([dnl
+In addition, this architecture requires that threads of control be
+monitored. If any thread of control exits with open m4_db handles, the
+application may call the m4_refT(dbenv_failchk) to determine if the
+database environment is usable after the exit. If the application does
+not call m4_ref(dbenv_failchk), or m4_ref(dbenv_failchk) returns
+m4_ref(DB_RUNRECOVERY), the application must behave as if there has been
+a system failure, removing the environment and creating a new
+environment, and cleaning up any databases it wants to continue to use.
+Once these actions have been taken, other threads of control can
+continue (as long as all existing m4_db handles are first discarded),
+or restarted.])
+
+m4_p([dnl
+The easiest way to structure groups of related processes is to first
+create a single "watcher" process (often a script) that starts when the
+system first boots, removes and creates the database environment, cleans
+up the databases and then creates the processes or threads that will
+actually perform work. The initial thread has no further
+responsibilities other than to wait on the threads of control it has
+started, to ensure none of them unexpectedly exit. If a thread of
+control exits, the watcher process optionally calls the
+m4_refT(dbenv_failchk). If the application does not call
+m4_ref(dbenv_failchk) or if m4_ref(dbenv_failchk) returns
+m4_ref(DB_RUNRECOVERY), the environment can no longer be used, the
+watcher kills all of the threads of control using the failed
+environment, cleans up, and starts new threads of control to perform
+work.])])
+
+m4_nlist([dnl
+The third way to architect Data Store and Concurrent Data Store
+applications is as a group of unrelated processes (the processes may or
+may not be multithreaded). This is the most difficult architecture to
+implement because of the level of difficulty in some systems of finding
+and monitoring unrelated processes.
+
+m4_p([dnl
+One solution is to log a thread of control ID when a new m4_db handle
+is opened. For example, an initial "watcher" process could open/create
+the database environment, clean up the databases and then create a
+sentinel file. Any "worker" process wanting to use the environment
+would check for the sentinel file. If the sentinel file does not exist,
+the worker would fail or wait for the sentinel file to be created. Once
+the sentinel file exists, the worker would register its process ID with
+the watcher (via shared memory, IPC or some other registry mechanism),
+and then the worker would open its m4_ref(DbEnv) handles and proceed.
+When the worker finishes using the environment, it would unregister its
+process ID with the watcher. The watcher periodically checks to ensure
+that no worker has failed while using the environment. If a worker
+fails while using the environment, the watcher removes the sentinel
+file, kills all of the workers currently using the environment, cleans
+up the environment and databases, and finally creates a new sentinel
+file.])
+
+m4_p([dnl
+The weakness of this approach is that, on some systems, it is difficult
+to determine if an unrelated process is still running. For example,
+POSIX systems generally disallow sending signals to unrelated processes.
+The trick to monitoring unrelated processes is to find a system resource
+held by the process that will be modified if the process dies. On POSIX
+systems, flock- or fcntl-style locking will work, as will LockFile on
+Windows systems. Other systems may have to use other process-related
+information such as file reference counts or modification times. In the
+worst case, threads of control can be required to periodically
+re-register with the watcher process: if the watcher has not heard from
+a thread of control in a specified period of time, the watcher will take
+action, cleaning up the environment.])
+
+m4_p([dnl
+If it is not practical to monitor the processes sharing a database
+environment, it may be possible to monitor the environment to detect if
+a thread of control has failed holding open m4_db handles. This would
+be done by having a "watcher" process periodically call the
+m4_refT(dbenv_failchk). If m4_ref(dbenv_failchk) returns
+m4_ref(DB_RUNRECOVERY), the watcher would then take action, cleaning up
+the environment.])
+
+m4_p([dnl
+The weakness of this approach is that all threads of control using the
+environment must specify an "ID" function and an "is-alive" function
+using the m4_refT(dbenv_set_thread_id). (In other words, the m4_db
+library must be able to assign a unique ID to each thread of control,
+and additionally determine if the thread of control is still running.
+It can be difficult to portably provide that information in applications
+using a variety of different programming languages and running on a
+variety of different platforms.)])]) m4_nlistend
+
+m4_p([dnl
+Obviously, when implementing a process to monitor other threads of
+control, it is important the watcher process' code be as simple and
+well-tested as possible, because the application may hang if it fails.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/cam/fail.so b/db/docs_src/ref/cam/fail.so
new file mode 100644
index 000000000..7559ccf9e
--- /dev/null
+++ b/db/docs_src/ref/cam/fail.so
@@ -0,0 +1,87 @@
+m4_comment([$Id: fail.so,v 10.2 2005/10/19 21:10:31 bostic Exp $])
+
+m4_ref_title(m4_cam Applications,
+ Handling failure in Data Store and Concurrent Data Store applications,,
+ cam/intro, cam/app)
+
+m4_p([dnl
+When building Data Store and Concurrent Data Store applications, there
+are design issues to consider whenever a thread of control with open
+m4_db handles fails for any reason (where a thread of control may be
+either a true thread or a process).])
+
+m4_p([dnl
+The simplest case is handling system failure for any Data Store or
+Concurrent Data Store application. In the case of system failure, it
+doesn't matter if the application has opened a database environment or
+is just using standalone databases: if the system fails, after the
+application has modified a database and has not subsequently flushed the
+database to stable storage (by calling either the m4_ref(dbh_close),
+m4_ref(dbh_sync) or m4_refT(memp_sync)s), the database may be left in a
+corrupted state. In this case, before accessing the database again, the
+database should either be:])
+
+m4_bulletbegin
+m4_bullet([removed and re-created,])
+m4_bullet([removed and restored from the last known good backup, or])
+m4_bullet([dnl
+verified using the m4_refT(dbh_verify) or m4_ref(db_verify) utility. If
+the database does not verify cleanly, the contents may be salvaged using
+the m4_option(R) and m4_option(r) options of the m4_ref(db_dump)
+utility.])
+m4_bulletend
+
+m4_p([dnl
+Applications where the potential for data loss is unacceptable should
+consider the m4_tam product, which offers standard transactional
+durability guarantees, including recoverability after failure.])
+
+m4_p([dnl
+Additionally, system failure requires that any persistent database
+environment (that is, any database environment not created using the
+m4_ref(DB_PRIVATE) flag), be removed. Database environments may be
+removed using the m4_refT(dbenv_remove). If the persistent database
+environment was backed by the filesystem (that is, the environment was
+not created using the m4_ref(DB_SYSTEM_MEM) flag), the database
+environment may also be safely removed by deleting the environment's
+files with standard system utilities.])
+
+m4_p([dnl
+The second case is application failure for a Data Store application,
+with or without a database environment, or application failure for a
+Concurrent Data Store application without a database environment: as in
+the case of system failure, if any thread of control fails, after the
+application has modified a database and has not subsequently flushed the
+database to stable storage, the database may be left in a corrupted
+state. In this case, the database should be handled as described
+previously in the system failure case.])
+
+m4_p([dnl
+The third case is application failure for a Concurrent Data Store
+application with a database environment. There are resources maintained
+in database environments that may be left locked if a thread of control
+exits without first closing all open m4_db handles. Concurrent Data
+Store applications with database environments have an additional option
+for handling the unexpected exit of a thread of control, the
+m4_refT(dbenv_failchk).])
+
+m4_p([dnl
+The m4_refT(dbenv_failchk) will return m4_ref(DB_RUNRECOVERY) if the
+database environment is unusable as a result of the thread of control
+failure. (If a data structure mutex or a database write lock is left
+held by thread of control failure, the application should not continue
+to use the database environment, as subsequent use of the environment
+is likely to result in threads of control convoying behind the held
+locks.) The m4_ref(dbenv_failchk) call will release any database read
+locks that have been left held by the exit of a thread of control. In
+this case, the application can continue to use the database
+environment.])
+
+m4_p([dnl
+A Concurrent Data Store application recovering from a thread of control
+failure should call m4_ref(dbenv_failchk), and, if it returns success,
+the application can continue. If m4_ref(dbenv_failchk) returns
+m4_ref(DB_RUNRECOVERY), the application should proceed as described for
+the case of system failure.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/cam/intro.so b/db/docs_src/ref/cam/intro.so
new file mode 100644
index 000000000..88f20b8b2
--- /dev/null
+++ b/db/docs_src/ref/cam/intro.so
@@ -0,0 +1,136 @@
+m4_comment([$Id: intro.so,v 10.33 2006/11/13 18:05:00 bostic Exp $])
+
+m4_ref_title(m4_cam Applications,
+ Concurrent Data Store introduction,
+ @Concurrent Data Store, env/faq, cam/fail)
+
+m4_p([dnl
+It is often desirable to have concurrent read-write access to a database
+when there is no need for full recoverability or transaction semantics.
+For this class of applications, m4_db provides interfaces supporting
+deadlock-free, multiple-reader/single writer access to the database.
+This means that at any instant in time, there may be either multiple
+readers accessing data or a single writer modifying data. The
+application is entirely unaware of which is happening, and m4_db
+implements the necessary locking and blocking to ensure this behavior.])
+
+m4_p([dnl
+To create m4_cam applications, you must first initialize an environment
+by calling m4_ref(dbenv_open). You must specify the m4_ref(DB_INIT_CDB)
+and m4_ref(DB_INIT_MPOOL) flags to that method. It is an error to
+specify any of the other m4_ref(dbenv_open) subsystem or recovery
+configuration flags, for example, m4_ref(DB_INIT_LOCK),
+m4_ref(DB_INIT_TXN), or m4_ref(DB_RECOVER). All databases must, of
+course, be created in this environment by using the m4_ref(dbh_create)
+function or m4_refcxx(Db) constructor, and specifying the environment
+as an argument.])
+
+m4_p([dnl
+m4_db performs appropriate locking so that safe enforcement of the
+deadlock-free, multiple-reader/single-writer semantic is transparent to
+the application. However, a basic understanding of m4_cam locking
+behavior is helpful when writing m4_cam applications.])
+
+m4_p([dnl
+m4_cam
+avoids deadlocks without the need for a deadlock detector by performing
+all locking on an entire database at once (or on an entire environment
+in the case of the m4_ref(DB_CDB_ALLDB) flag), and by ensuring that at
+any given time only one thread of control is allowed to simultaneously
+hold a read (shared) lock and attempt to acquire a write (exclusive)
+lock.])
+
+m4_p([dnl
+All open m4_db cursors hold a read lock, which serves as a guarantee
+that the database will not change beneath them; likewise, all
+non-cursor m4_ref(dbh_get) operations temporarily acquire and release
+a read lock that is held during the actual traversal of the database.
+Because read locks will not conflict with each other, any number of
+cursors in any number of threads of control may be open simultaneously,
+and any number of m4_ref(dbh_get) operations may be concurrently in
+progress.])
+
+m4_p([dnl
+To enforce the rule that only one thread of control at a time can
+attempt to upgrade a read lock to a write lock, however, m4_db must
+forbid multiple cursors from attempting to write concurrently. This is
+done using the m4_ref(DB_WRITECURSOR) flag to the m4_refT(dbh_cursor).
+This is the only difference between access method calls in m4_cam and
+in the other m4_db products. The m4_ref(DB_WRITECURSOR) flag causes the
+newly created cursor to be a "write" cursor; that is, a cursor capable
+of performing writes as well as reads. Only cursors thus created are
+permitted to perform write operations (either deletes or puts), and only
+one such cursor can exist at any given time.])
+
+m4_p([dnl
+Any attempt to create a second write cursor or to perform a non-cursor
+write operation while a write cursor is open will block until that write
+cursor is closed. Read cursors may open and perform reads without blocking
+while a write cursor is extant. However, any attempts to actually perform
+a write, either using the write cursor or directly using the
+m4_ref(dbh_put) or m4_ref(dbh_del) methods, will block until all read cursors
+are closed. This is how the multiple-reader/single-writer semantic is
+enforced, and prevents reads from seeing an inconsistent database state
+that may be an intermediate stage of a write operation.])
+
+m4_p([dnl
+By default, m4_cam does locking on a per-database basis. For this
+reason, using cursors to access multiple databases in different orders
+in different threads or processes, or leaving cursors open on one
+database while accessing another database, can cause an application to
+hang. If this behavior is a requirement for the application, m4_db
+should be configured to do locking on an environment-wide basis. See
+the m4_ref(DB_CDB_ALLDB) flag of the m4_ref(dbenv_set_flags) function
+for more information.])
+
+m4_p([dnl
+With these behaviors, m4_db can guarantee deadlock-free concurrent
+database access, so that multiple threads of control are free to perform
+reads and writes without needing to handle synchronization themselves
+or having to run a deadlock detector. m4_db has no direct knowledge of
+which cursors belong to which threads, so some care must be taken to
+ensure that applications do not inadvertently block themselves, causing
+the application to hang and be unable to proceed.])
+
+m4_p([dnl
+As a consequence of the m4_cam locking model, the following sequences
+of operations will cause a thread to block itself indefinitely:])
+
+m4_nlistbegin
+m4_nlist([dnl
+Keeping a cursor open while issuing a m4_ref(dbh_put) or m4_ref(dbh_del)
+access method call.])
+
+m4_nlist([dnl
+Attempting to open a write cursor while another cursor is already being
+held open by the same thread of control. Note that it is correct
+operation for one thread of control to attempt to open a write cursor
+or to perform a non-cursor write (m4_ref(dbh_put) or m4_ref(dbh_del))
+while a write cursor is already active in another thread. It is only a
+problem if these things are done within a single thread of control --
+in which case that thread will block and never be able to release the
+lock that is blocking it.])
+
+m4_nlist([dnl
+Not testing m4_db error return codes (if any cursor operation returns
+an unexpected error, that cursor must still be closed).])
+
+m4_nlistend
+
+m4_p([dnl
+If the application needs to open multiple cursors in a single thread to
+perform an operation, it can indicate to m4_db that the cursor locks
+should not block each other by creating a m4_cam m4_bold(group), using
+m4_ref(cdsgroup_begin). This creates a locker ID that is shared by all
+cursors opened in the group.])
+
+m4_p([dnl
+m4_cam groups use a m4_ref(DbTxn) handle to indicate the shared locker
+ID to m4_db calls, and call m4_ref(txn_commit) to end the group. This
+is a convenient way to pass the locked ID to the calls where it is
+needed, but should not be confused with the real transactional semantics
+provided by m4_tam. In particular, m4_cam groups do not provide any
+abort or recovery facilities, and have no impact on durability of
+operations.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/changelog/2.1.html b/db/docs_src/ref/changelog/2.1.html
new file mode 100644
index 000000000..124ecaed6
--- /dev/null
+++ b/db/docs_src/ref/changelog/2.1.html
@@ -0,0 +1,84 @@
+<!--"$Id: 2.1.html,v 1.4 2007/05/17 18:17:17 bostic Exp $ (Sleepycat) $Date: 2007/05/17 18:17:17 $"-->
+<html>
+<head>
+<title>The Berkeley DB Package: Interface Changes introduced in DB 2.1.0</title>
+<meta name="description" content="DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Interface Changes introduced in DB 2.1.0:</h3>
+
+<ol>
+<li>
+We have added a compatibility API for DB 1.85. We had not intended to
+do this, however, versions of the GNU gcc compiler in beta release
+trigger problems in DB 1.85 (and in previous releases of DB 2.0.N),
+causing them to drop core. As we're unwilling to do further work on
+DB 1.85, we're adding in a compatibility mode to the current DB package
+instead.
+<p>
+The DB 1.85 compatibility API is optional (so folks using both DB
+1.85 and DB 2.N in a single library aren't surprised). To include it
+in the DB library, use the configuration option --enable-compat185.
+For consistency, the configuration option --enable-build185, previously
+found in DB 2.N releases, has been renamed to be --enable-dump185.
+See the file build.unix/README in the DB distribution for further
+information.
+<p>
+We have also made other changes in the DB 2.1.0 release so that
+historic DB 1.85 applications will generally perform better using
+the current release than they do using the historic release.
+<p>
+Please note that the underlying databases MUST still be converted
+from the historic format to the current format.
+<p><li>
+We have changed the default behavior of db_appinit(3) so that it
+does NOT create the underlying shared memory regions by default.
+If the calling application wants to create these regions, it must
+now specify the DB_CREATE flag when calling db_appinit(3).
+<p><li>
+Specifying transactions to the db_appinit(3) function now implies
+logging, that is, DB_INIT_TXN now implies DB_INIT_LOG.
+<p><li>
+We have changed the memp_stat(3) interface. It previously took a
+pointer to a memory pool (DB_MPOOL *) and a file pointer (FILE *)
+and wrote memory pool statistics to the specified file pointer.
+The new version is:
+<p>
+<blockquote>
+memp_stat(DB_MPOOL *, DB_MPOOL_STAT **, DB_MPOOL_FSTAT ***);
+</blockquote>
+<p>
+and it returns memory pool statistics to the calling application,
+in two new structures. See the manual page db_mpool(3) in the DB
+distribution for more information. We expect to add similar
+statistical functions to the other DB subsystems in future releases.
+<p>
+There is also a new utility, db_stat(1). This utility presents the
+statistics in human-readable form.
+<p><li>
+We have added new functionality to the mpool interface. There's a new
+field, mp_mmapsize, in the DB_ENV structure, and a new flag to the
+memp_fopen(3) structure (DB_NOMMAP). These features provide a finer
+level of control over which files will be mapped into the process
+address space. See the manual page db_mpool(3) in the DB distribution
+for more information.
+<p><li>
+Page-in and page-out functions specified for buffer pools must now
+return an errno value on failure and 0 on success, instead of the
+previous interface, which was non-zero on failure and 0 on success,
+setting errno. See the manual page db_mpool(3) in the DB distribution
+for more information.
+<p><li>
+There are a couple of major performance improvements in the new DB
+release for small, non-persistent buffer pools, for example,
+applications using the traditional DB 1.85 interface or applications
+creating small, temporary databases. First, the shared memory regions
+are no longer fully populated on startup. Second, the backing file used
+for temporary buffer pools is no longer created until it is actually
+needed. These changes should cause no visible change for applications.
+
+</ol>
+</body>
+</html>
diff --git a/db/docs_src/ref/changelog/2.2.html b/db/docs_src/ref/changelog/2.2.html
new file mode 100644
index 000000000..3403cb1d7
--- /dev/null
+++ b/db/docs_src/ref/changelog/2.2.html
@@ -0,0 +1,348 @@
+<!--"$Id: 2.2.html,v 1.4 2007/05/17 18:17:17 bostic Exp $ (Sleepycat) $Date: 2007/05/17 18:17:17 $"-->
+<html>
+<head>
+<title>The Berkeley DB Package: Interface Changes introduced in DB 2.2.0</title>
+<meta name="description" content="DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Interface Changes introduced in DB 2.2.0:</h3>
+
+<ol>
+
+<li>
+In DB 2.2.0, the handles returned by the DB subsystems, for example, the
+db_appinit() function's DB_ENV, and the db_open() function's DB, are
+free-threaded. If you specify the DB_THREAD flag to each subsystem, or
+globally using db_appinit(), you can then use the returned handle
+concurrently in any number of threads.
+
+<p>
+There are some important caveats for using DB handles concurrently in
+multiple threads:
+
+<p><ol type=a>
+<li>
+The DB_THREAD flag must be specified for all subsystems either explicitly
+by calling the subsystems open() function, or via the db_appinit()
+function. Setting the DB_THREAD flag inconsistently may result in
+database corruption.
+
+<p><li>
+Spinlocks must have be implemented for the compiler/architecture
+combination. Attempting to specify the DB_THREAD flag will fail with an
+EINVAL error if spinlocks are not available.
+
+<p><li>
+Only a single thread may call the close function for a returned database
+or subsystem handle. See
+db_open(3)
+and the appropriate subsystem manual pages for more information.
+
+<p><li>
+Either the DB_DBT_MALLOC or DB_DBT_USERMEM flags must be set in a DBT used
+for key or data retrieval. See
+db_open(3)
+for more information.
+
+<p><li>
+The DB_CURRENT, DB_NEXT and DB_PREV flags to the log_get() function may
+not be used by a free-threaded handle. If such calls are necessary, a
+thread should explicitly create a unique DB_LOG handle by calling log_open().
+See
+db_log(3)
+for more information.
+
+<p><li>
+Each database operation (that is, any call to a function underlying the
+handles returned by db_open() and db_cursor()) is normally performed on
+behalf of a locker associated with the handle. If, within a single
+thread of control, multiple calls on behalf of the same locker are
+desired, then transactions must be used. See db(3) for more
+information.
+
+<p><li>
+Transactions may not span threads, that is, each transaction must begin
+and end in the same thread, and each transaction may only be used by a
+single thread.
+
+</ol>
+
+<p>
+See
+db(3)
+and
+db_appinit(3)
+for more information on using DB in the context of threads.
+
+<p><li>
+We've added spinlock support for OSF/1, HP, Solaris and UTS4, in all cases
+for the native compiler/architecture combination. In the case of Solaris,
+this means that all DB applications must be loaded using the <b>-lthread</b>
+library.
+
+<p><li>
+We've added a C++ API for DB.
+<font color=red>
+There are not yet any manual pages for the C++ API, and the interface is
+going to change!
+</font>
+Please feel free to browse and send us comments, but please remember
+that the C++ interface is going to be different in the next release.
+<p>
+The C++ files and directories in the source distribution are:
+<p>
+<table border>
+<tr>
+<td>db/cxx/</td>
+<td>C++ API</td>
+</tr><tr>
+<td>db/examples_cxx/</td>
+<td>The example programs recoded in C++.</td>
+</tr><tr>
+<td>db/include/cxx_int.h</td>
+<td>Internal C++ include file.</td>
+</tr><tr>
+<td>db/include/db_cxx.h</td>
+<td>External C++ include file.</td>
+</tr>
+</table>
+<p>
+C++ support is automatically built on Win32. To configure it under UNIX,
+specify <b>--enable-cxx</b> as a configuration argument (see the file
+<b>db/build.unix/README</b> for more information).
+
+<p><li>
+The functionality previously embodied in some of the support utilities
+(db_archive(1),
+db_checkpoint(1),
+db_deadlock(1),
+and
+db_recover(1))
+is now available through the DB API as well.
+<p>
+<table border>
+<tr>
+<td><h3>Utility</h3></td>
+<td><h3>Underlying API support:</h3></td>
+</tr>
+<tr>
+<td>db_archive(1)</td>
+<td>Log archival. See the log_archive() function in
+db_log(3)
+</td>
+</tr><tr>
+<td>db_checkpoint(1)</td>
+<td>Transaction checkpoint. See the txn_checkpoint() function in
+db_txn(3).
+</td>
+</tr><tr>
+<td>db_deadlock(1)</td>
+<td>Deadlock detection. See the lock_detect() function in
+db_lock(3).
+</td>
+</tr><tr>
+<td>db_recover(1)</td>
+<td>Database recovery. See the DB_RECOVER and DB_RECOVER_FATAL flags for
+the db_appinit() function in
+db_appinit(3).
+</td>
+</tr>
+</table>
+
+<p><li>
+We've added a new default hashing function, __ham_func5(), written by
+Glenn Fowler, Landon Curt Noll and Phong Vo, and integrated into DB by
+Ariel Faigon of SGI. We've also deleted the previous supplied function
+__ham_func1().
+<p>
+<font color=red>
+This change is NOT transparent to applications.
+</font>
+We incremented the hash access method database version number, and the
+new hash function will only be used in newly created databases, which
+means that applications written using version DB 2.2.0 and greater will
+be able to share databases with applications written using previous
+versions of DB with a major number of 2.
+
+<p>
+However, we now use the __ham_func5() hash function internally, in the
+log and lock subsystems, which means that applications written using
+version DB 2.2.0 and greater will NOT be able to share database
+environments, or read log files, written using previous versions of DB.
+
+<p><li>
+The interfaces that DB uses to export statistics have been enhanced and,
+in one case, modified:
+
+<p><ol type=a>
+<li>
+DB 2.2 exports statistical information via the DB handle for the access
+methods. Currently, the only access method for which this information is
+available is B+tree. See the dbp-&gt;db_stat() function in the
+db_open(3)
+manual page for more information.
+
+<p><li>
+DB 2.2 exports statistical information for the transaction region via a
+new function, txn_stat(). See
+db_txn(3)
+for more information.
+
+<p><li>
+The
+db_stat(1)
+utility has two new options. The <b>-d</b> flag permits users to display
+the access method statistics. The <b>-t</b> flag permits users to display
+the transaction region statistics.
+
+<p><li>
+The interface for shared memory buffer pool statistics in DB 2.2 has been
+revised to make it consistent with the interfaces provided for the
+transaction region and access methods.
+<font color=red>
+This change is NOT transparent to applications.
+</font>
+See
+db_mpool(3)
+for more information.
+</ol>
+
+<p><li>
+The interface to the shared memory buffer pool has been extended in DB
+2.2 to permit applications to control the maximum size of read-only files
+that will be mapped into the application's address space instead of being
+read through the memory pool cache. See the DB_NOMMAP flag to the
+memp_open() function and the mp_mmapsize field in the DB_ENV structure,
+as described in
+db_mpool(3).
+
+<p><li>
+The interface to the transaction subsystem has been extended in DB 2.2 to
+permit applications to specify that the log is not to be synchronously
+flushed on transaction commit. This potentially provides a significant
+performance improvement for applications that do not require database
+durability. See the DB_TXN_NOSYNC flag to the txn_open() function, as
+described in
+db_txn(3).
+
+<p><li>
+There have been several changes to the process of creating a DB environment:
+
+<p><ol type=a>
+<li>
+By default, when a lock is unavailable to a DB thread (or process), the
+thread/process is put to sleep for a period of time, permitting other
+threads/processes to run. This may not be optimal in the presence of
+multiple threads in a single process. The DB_ENV structure has been
+extended to permit applications to specify a ``yield'' function, which is
+called when a DB thread has requested a lock which is unavailable. See
+db_appinit(3)
+for more information.
+
+<p><li>
+In previous versions of DB, the DB_CREATE flag was implied by calling the
+db_appinit() function, that is, initializing the environment implied that
+the application wanted to create the environment if it did not already
+exist. This version of DB no longer supports this semantic, and the
+DB_CREATE must be explicitly specified to db_appinit() if the application
+wants to create the DB environment.
+<font color=red>
+This change is NOT transparent to applications.
+</font>
+
+<p><li>
+The flags that may be specified when creating the DB environment have been
+extended in DB 2.2 to allow the specification of the DB_MPOOL_PRIVATE flag,
+which was previously supported only by the underlying memory pool subsystem.
+<p>
+The flags that may be specified when creating the DB environment have been
+extended in DB 2.2 to provide new functionality: the list of new flags
+includes DB_NOMMAP, DB_THREAD and DB_TXN_NOSYNC.
+
+<p><li>
+The DB_DATA_DIR configuration argument to the db_appinit() function is
+now additive, permitting applications to specify multiple directories in
+which to
+search for database files. If multiple paths are specified, created data
+files will always be created in the <b>first</b> directory specified.
+
+<p><li>
+The db_errbuf field of the DB_ENV structure has been deleted from the
+current release. In its place, we have added the db_errcall field, which
+specifies a function which is called with the information previously found
+in the db_errbuf buffer.
+<font color=red>
+This change is NOT transparent to applications.
+</font>
+
+<p><li>
+The default temporary file location list (used when no DB_TMP_DIR
+configuration argument was specified) has been extended to include any
+directory specified by the <b>TempFolder</b> environment variable, if it
+exists.
+
+</ol>
+
+<p>
+In all cases, see
+db_appinit(3)
+for more information.
+
+<p><li>
+There have been several changes to the logging subsystem:
+
+<p><ol type=a>
+<li>
+The log_get() and log_put() functions now support the
+standard DBT flags described by the
+db_open(3)
+manual page.
+
+<p><li>
+The interface to the log_flush() function has been extended to
+flush the entire log if a NULL LSN is specified. See
+db_log(3)
+for more information.
+
+<p><li>
+The interface to the log_file() function has been changed in DB 2.2
+to eliminate the need for the library to return allocated memory
+that may never be freed.
+<font color=red>
+This change is NOT transparent to applications.
+</font>
+See
+db_log(3)
+for more information.
+
+<p><li>
+The
+db_checkpoint(1)
+and
+db_deadlock(1)
+utilities have a new option, <b>-L</b>, in DB 2.2 to optionally log their
+process ID to a file. If they exit gracefully, or if they receive a
+SIGINT signal, the log file is removed before they exit.
+
+</ol>
+
+<p><li>
+There have been a couple of changes to the source code layout other
+than those specified above:
+
+<p><ol type=a>
+<li>
+Operating system specific functionality is separated out in DB 2.2 into
+a separate subdirectory in the source code, <b>db/os</b>.
+
+<p><li>
+All of the include files in DB 2.2 have been moved into a single
+subdirectory, <b>db/include</b>, as part of the work to port DB to MacOS.
+
+</ol>
+
+</ol>
+</body>
+</html>
diff --git a/db/docs_src/ref/changelog/2.3.10.html b/db/docs_src/ref/changelog/2.3.10.html
new file mode 100644
index 000000000..e67fbf427
--- /dev/null
+++ b/db/docs_src/ref/changelog/2.3.10.html
@@ -0,0 +1,27 @@
+<!--"$Id: 2.3.10.html,v 1.3 2007/05/17 18:17:17 bostic Exp $ (Sleepycat) $Date: 2007/05/17 18:17:17 $"-->
+<html>
+<head>
+<title>The Berkeley DB Package: Interface Changes introduced in DB 2.3.10</title>
+<meta name="description" content="DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Interface Changes introduced in DB 2.3.10:</h3>
+
+<ol>
+
+<li>
+In order to simplify the DB Java API, the type of the <b>flags</b> argument
+to the three functions memp_fget(), memp_fput() and memp_fset() has been
+changed from ``unsigned long'' to ``int''.
+It's possible, although unlikely, that this change could result in compiler
+errors for DB applications on some systems, if the flags were stored in a
+local variable.
+To fix any such errors, change the type of the local variable from
+``unsigned long'' to ``int'' and recompile the application.
+
+</ol>
+
+</body>
+</html>
diff --git a/db/docs_src/ref/changelog/2.3.11.html b/db/docs_src/ref/changelog/2.3.11.html
new file mode 100644
index 000000000..f2f6c82b9
--- /dev/null
+++ b/db/docs_src/ref/changelog/2.3.11.html
@@ -0,0 +1,22 @@
+<!--"$Id: 2.3.11.html,v 1.3 2007/05/17 18:17:18 bostic Exp $ (Sleepycat) $Date: 2007/05/17 18:17:18 $"-->
+<html>
+<head>
+<title>The Berkeley DB Package: Interface Changes introduced in DB 2.3.11</title>
+<meta name="description" content="DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Interface Changes introduced in DB 2.3.11:</h3>
+
+<ol>
+
+<li>
+The values (but not the names) of some of the DB interface flags
+were changed in the 2.3.11 release. DB applications should be
+recompiled after upgrading to 2.3.11.
+
+</ol>
+
+</body>
+</html>
diff --git a/db/docs_src/ref/changelog/2.3.12.html b/db/docs_src/ref/changelog/2.3.12.html
new file mode 100644
index 000000000..7b2c3666a
--- /dev/null
+++ b/db/docs_src/ref/changelog/2.3.12.html
@@ -0,0 +1,66 @@
+<!--"$Id: 2.3.12.html,v 1.5 2007/05/17 18:17:18 bostic Exp $ (Sleepycat) $Date: 2007/05/17 18:17:18 $"-->
+<html>
+<head>
+<title>The Berkeley DB Package: Interface Changes introduced in DB 2.3.12</title>
+<meta name="description" content="DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Interface Changes introduced in DB 2.3.12:</h3>
+
+<ol>
+
+<li>
+A new DB interface, <b>db_jump_set</b>(), has been added. The
+<b>db_jump_set</b> function enables applications to replace underlying
+DB library functionality by replacing entries in a function call jump
+table. This interface is intended for applications needing to do
+run-time linking to specific underlying libraries, for example, for
+systems where the malloc(3) that the application will use is not known
+until run-time. The <b>db_yield</b> field previously found in the
+DB_ENV structure has been removed, and its functionality incorporated
+into the db_jump_set function.
+<p>
+<font color=red>
+The removal of the db_yield field is NOT transparent to applications.
+</font>
+Applications should be converted from using the db_yield field to
+calling the <b>db_jump_set</b>() function with the DB_FUNC_YIELD
+flag.
+If you have a support contract with Sleepycat Software, please contact
+us for further information and assistance in migrating applications
+from previous releases of DB to this release.
+<p>
+See db_jump(3) for more information.
+
+<p><li>
+A new memory pool interface, <b>memp_trickle</b>(), has been added.
+The <b>memp_trickle</b> function permits an application to ensure
+that a certain percentage of the pages in the shared memory pool
+remain clean at all times, so that there are always buffers available
+for reading in new pages from the backing files.
+<p>
+See db_mpool(3) for more information.
+
+<p><li>
+A new log region interface, <b>log_stat</b>(), has been added.
+The <b>log_stat</b> function returns statistical information about
+the log region.
+The <b>db_stat</b>(1) utility has been updated to optionally display
+this information.
+<p>
+See db_log(3) for more information.
+
+<p><li>
+There have been various additions to the memory pool statistics
+structure, as returned by <b>memp_stat</b>() and displayed by
+<b>db_stat</b>(1).
+Applications using the memory pool statistics interface will need
+to be recompiled for this release.
+<p>
+See db_mpool(3) for more information.
+
+</ol>
+</body>
+</html>
diff --git a/db/docs_src/ref/changelog/2.3.14.html b/db/docs_src/ref/changelog/2.3.14.html
new file mode 100644
index 000000000..65b7145e5
--- /dev/null
+++ b/db/docs_src/ref/changelog/2.3.14.html
@@ -0,0 +1,67 @@
+<!--"$Id: 2.3.14.html,v 1.3 2007/05/17 18:17:18 bostic Exp $ (Sleepycat) $Date: 2007/05/17 18:17:18 $"-->
+<html>
+<head>
+<title>The Berkeley DB Package: Interface Changes introduced in DB 2.3.14</title>
+<meta name="description" content="DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Interface Changes introduced in DB 2.3.14:</h3>
+
+<ol>
+
+<li>
+There was a mismatch in previous releases of DB between the
+documented interface to <b>lock_detect</b>(3) (or
+<b>DbLockTab::detect()</b>) and the DB software. This mismatch
+was resolved in favor of the source code. Any software that
+uses this interface should be checked to make sure that the
+second argument is the "flags" argument, and the third argument is
+the "atype" argument.
+<font color=red>
+This change may NOT be transparent to applications.
+</font>
+
+<p><li>
+There is an new DB interface, <b>db_value_set</b>(), described in
+db_internal(3).
+The only purpose of the <b>db_value_set</b>() interface in the DB
+2.3.14 release is to permit applications to set the number of spins
+that mutexes will make before blocking, when a mutex is not immediately
+available. This is intended to permit applications on multi-CPU
+architectures a finer granularity of control over mutexes.
+As with <b>db_jump_set</b>(), <b>db_value_set</b>() is only available
+from the C API, and is expected to be used by few applications.
+
+<p><li>
+We've added a Java API for DB.
+The Java API should be considered a beta release,
+and therefore more subject to change than normal.
+We would very much appreciate email on any comments and/or experiences
+you have in using the DB Java API!
+<p>
+The Java files and directories in the source distribution are:
+<p>
+<table border>
+<tr>
+<td>db/java/src/com/sleepycat/db</td>
+<td>The Java API</td>
+</tr><tr>
+<td>db/java/README</td>
+<td>Information on building the Java API.</td>
+</tr><tr>
+<td>db/man/man.html/index_java.html</td>
+<td>The Java API manual pages (available only in HTML).</td>
+</tr><tr>
+<td>db/java/src/com/sleepycat/examples/</td>
+<td>The example programs recoded in Java.</td>
+</tr><tr>
+<td>db/libdb_java</td>
+<td>Sources to build the libdb_java shared library.</td>
+</tr>
+</table>
+
+</ol>
+</body>
+</html>
diff --git a/db/docs_src/ref/changelog/2.3.16.html b/db/docs_src/ref/changelog/2.3.16.html
new file mode 100644
index 000000000..e0a8a0bd2
--- /dev/null
+++ b/db/docs_src/ref/changelog/2.3.16.html
@@ -0,0 +1,165 @@
+<!--"$Id: 2.3.16.html,v 1.3 2007/05/17 18:17:18 bostic Exp $ (Sleepycat) $Date: 2007/05/17 18:17:18 $"-->
+<html>
+<head>
+<title>The Berkeley DB Package: DB 2.3.16 Change Log</title>
+<meta name="description" content="DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Berkeley DB 2.3.16 Change Log</h3>
+
+<h3>Interface Changes Introduced in DB 2.3.16:</h3>
+
+<ol>
+
+<li>
+The interface to <b>db_jump_set</b>(3) for the DB_FUNC_IOINFO value
+has changed in order to avoid passing <b>off_t</b> types as interface
+arguments.
+Any software that uses this interface must be updated to use the new
+arguments.
+See
+db_internal(3)
+for more information.
+<font color=red>
+This change is NOT transparent to applications.
+</font>
+
+<p><li>
+The output of <b>log_stat</b>(3) has been enhanced to include the
+current log file number and offset within that file.
+See
+db_log(3)
+for more information.
+
+<p><li>
+A new option, <b>-T</b>, has been added to the <b>db_load</b>(1) utility.
+This option simplifies using non-DB applications (or scripts) to create
+DB databases.
+See
+db_load(1)
+for more information.
+
+<p><li>
+Applications wanting to us the dbm, ndbm or hsearch interfaces to
+the DB library must now specify a numeric value when they #define
+DB_DBM_HSEARCH. For example, instead of using:
+<p>
+<ul><code>
+#define DB_DBM_HSEARCH
+<br>
+#include "db.h"
+</code></ul>
+<p>
+in the application, they must now use:
+<p>
+<ul><code>
+#define DB_DBM_HSEARCH 1
+<br>
+#include "db.h"
+</code></ul>
+<p>
+<font color=red>
+This change is NOT transparent to applications.
+</font>
+
+<p><li>
+DB no longer intrudes on the historic <b>dbm</b>(3), <b>ndbm</b>(3) or
+<b>hsearch</b>(3) namespaces. This change permits applications to load
+the DB library and still load the <b>dbm</b>, <b>ndbm</b> or
+<b>hsearch</b> functions from another library.
+
+<p><li>
+The <b>dbm</b>(3) functions are no longer exported in the Win32
+environment. The <b>db_jump_set</b>(3), <b>db_value_set</b>(3) and
+<b>log_stat</b>(3) interfaces are now exported in the Win32 environment.
+
+<p><li>
+In the Java DB API, Dbt's used to retrieve data must specify
+Db.DB_DBT_MALLOC or Db.DB_DBT_USERMEM in the Dbt flags.
+If Db.DB_DBT_USERMEM is used, the data field of the Dbt must
+be set to an appropriately sized byte array.
+
+</ol>
+
+<h3>Bug Fixes:</h3>
+
+<ol>
+
+<p><li>
+When transaction undo was performed during recovery, the Btree access
+method could incorrectly recover pages that were never created because
+of the system or application failure.
+
+<p><li>
+When the last log file did not contain a checkpoint, recovery could
+potentially fail.
+
+<p><li>
+When files were opened and closed between checkpoints, catastrophic
+recovery could potentially fail.
+
+<p><li>
+When log file #2 existed but log file #1 did not, recovery would fail.
+
+<p><li>
+Shared memory regions were not being explicitly initialized in the Win95
+environment, potentially resulting in unexpected behavior.
+
+<p><li>
+An incorrect shared memory region offset was being specified in the shared
+memory buffer cache support for systems using <b>fcntl</b>(2) locking
+(rather than spinlock mutexes). This could potentially lead to incorrect
+locking behavior in that subsystem.
+
+<p><li>
+The shared memory buffer cache had a deadlock situation when a buffer
+writer and a thread or process syncing the pool attempted to write the
+same buffer at the same time, potentially leading to thread/process
+starvation.
+
+<p><li>
+The Java DB API did not correctly interact with the Db.DB_DBT_MALLOC
+and Db.DB_DBT_USERMEM flags, and a number of memory leaks have been
+eliminated.
+
+</ol>
+
+<h3>Additional Changes:</h3>
+
+<ol>
+
+<li>
+There are a large number of source changes to the DB 2.3.16 release,
+intended to clean up compiler warnings that could appear when various
+debugging and warning options were specified to the gcc and Solaris
+compilers.
+
+<p><li>
+DB 2.3.16 has been modified to never pass as arguments or store on disk
+variables of type off_t. This change is intended to increase DB's
+portability to compiler/architecture combinations where the DB library
+and the application may not have been compiled with the same size off_t.
+
+<p><li>
+DB now uses the -O2 compiler optimization flag when building on Linux
+systems.
+
+<p><li>
+The shared memory buffer cache subsystem has been enhanced to no longer
+hold mutex locks across calls to <b>fsync</b>(2).
+
+<p><li>
+The shared memory buffer cache subsystem now explicitly yields the
+processor when waiting on a buffer for which I/O was being performed,
+enhancing overall throughput.
+
+<p><li>
+The test suite has been enhanced to better test recovery and to increase
+dbm/ndbm interface coverage.
+
+</ol>
+
+</body>
+</html>
diff --git a/db/docs_src/ref/changelog/2.3.5.html b/db/docs_src/ref/changelog/2.3.5.html
new file mode 100644
index 000000000..06c2d9215
--- /dev/null
+++ b/db/docs_src/ref/changelog/2.3.5.html
@@ -0,0 +1,36 @@
+<!--"$Id: 2.3.5.html,v 1.4 2007/05/17 18:17:18 bostic Exp $ (Sleepycat) $Date: 2007/05/17 18:17:18 $"-->
+<html>
+<head>
+<title>The Berkeley DB Package: Interface Changes introduced in DB 2.3.5</title>
+<meta name="description" content="DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Interface Changes introduced in DB 2.3.5:</h3>
+
+<ol>
+
+<li>
+It has come to our attention that there are versions of the native Solaris
+compiler that order bit fields inside of structures differently than other
+compilers, for example, gcc.
+Some of the on-page B+tree structures contained bit fields, which meant that
+databases built using these compilers were incompatible with databases built
+on other architectures, for example, a Solaris database could not be
+read on an x86 architecture which used gcc as its compiler. The DB
+2.3.5 release fixes this problem.
+<p>
+<font color=red>
+Unfortunately, depending on the Solaris compiler used, the change may cause
+DB version 2.3.5 on Solaris to be unable to read databases written by earlier
+versions of DB.
+</font>
+If you have a support contract with Sleepycat Software, please contact
+us for further information and assistance in migrating databases from
+previous releases of DB to this release.
+
+</ol>
+
+</body>
+</html>
diff --git a/db/docs_src/ref/changelog/2.3.html b/db/docs_src/ref/changelog/2.3.html
new file mode 100644
index 000000000..d0d3f59bf
--- /dev/null
+++ b/db/docs_src/ref/changelog/2.3.html
@@ -0,0 +1,184 @@
+<!--"$Id: 2.3.html,v 1.4 2007/05/17 18:17:18 bostic Exp $ (Sleepycat) $Date: 2007/05/17 18:17:18 $"-->
+<html>
+<head>
+<title>The Berkeley DB Package: Interface Changes introduced in DB 2.3.0</title>
+<meta name="description" content="DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Interface Changes introduced in DB 2.3.0:</h3>
+
+<ol>
+
+<li>
+The DB 2.3 btree access method has been enhanced to optionally support
+retrieval by record number.
+This functionality is based on a new DB_INFO flag, DB_RECNUM.
+If the btree is created using this flag, applications may retrieve
+records in the tree by record number,
+using the DB_SET_RECNO flag to either the dbp-&gt;get() or cursor-&gt;c_get()
+interfaces.
+This is another additional cursor-&gt;c_get() flag, DB_GET_RECNO which
+returns the record number of the record referenced by the cursor.
+<p>
+<font color=red>
+Adding this feature required a change to the underlying btree database format.
+For this reason, databases created under previous versions of DB cannot
+be read by this release of DB, and vice versa.
+</font>
+If you have a support contract with Sleepycat Software, please contact
+us for further information and assistance in migrating applications and
+databases from previous releases of DB to this release.
+<p>
+See
+db_open(3)
+and
+db_cursor(3)
+for more information, as well as the example program examples/ex_btrec.c.
+
+<p><li>
+In previous versions of the DB library, additions or deletions into recno
+(fixed and variable-length record) databases would automatically renumber
+all records logically after the add/delete point.
+This behavior is no longer the default behavior as of DB version 2.3.
+<p>
+The new default behavior is that deleting records does not cause subsequent
+records to be renumbered, and it is an error to attempt to add new records
+between records already in the database.
+Attempting to retrieve deleted keys using either of the dbp-&gt;get() or
+cursor-&gt;c_get() functions will return DB_KEYEMPTY.
+The historic behavior is still available, based on a new DB_INFO flag,
+DB_RENUMBER.
+Applications depending on the historic recno access method semantics should
+specify the DB_RENUMBER flag, no other change should be necessary.
+<p>
+In previous versions of the DB library, adding a record more than one
+logical record past the current last record in the recno database caused
+the creation of the intermediate missing records as existing records with
+zero-length data.
+While the intermediate missing records are still logically created in
+DB 2.3, it is an error to attempt to retrieve them, and the get() and
+c_get() functions will return DB_KEYEMPTY.
+<p>
+In previous versions of the DB library, attempting to retrieve a deleted
+record <b>using the same cursor with which it was deleted</b> returned
+DB_NOTFOUND.
+For consistency with the new recno access method functionality,
+such attempts now return DB_KEYEMPTY.
+<p>
+See
+db_open(3)
+and
+db_cursor(3)
+for more information.
+<br><font color=red>
+These changes are NOT transparent to applications.
+</font>
+
+<p><li>
+A new flag, DB_APPEND, has been added to the db-&gt;put(3) function in
+DB 2.3.
+This flag is applicable only to the recno access method.
+It permits applications to append to the database without knowing how
+many records are in it or the current last record number.
+The DB example program examples/ex_tpcb has been modified to use this
+functionality.
+<p>
+See
+db_open(3)
+for more information.
+
+<p><li>
+An additional argument has been added to the memp_fopen(3) function
+in DB 2.3.
+The mpool functions must be able to uniquely identify files in order
+that multiple processes sharing a file will correctly share its
+underlying pages. Normally, the mpool functions use the file's device
+and inode numbers for this purpose. On some filesystems, for example,
+FAT or NFS, file device and
+inode numbers are not necessarily unique across system reboots.
+To support applications wanting to maintain a shared memory buffer pool
+across system reboots, where the pool contains pages from files stored
+on such filesystems, it is now possible to specify a unique file identifier
+to the memp_fopen() call, which the memory pool functions will then use to
+identify shared files.
+The DB access method functions have been modified to use this functionality,
+and DB databases in 2.3 will work transparently on such filesystems.
+<p>
+See
+db_mpool(3)
+for more information.
+<br><font color=red>
+This change is NOT transparent to applications using the db_mpool(3)
+interfaces directly.
+</font>
+
+<p><li>
+The interface to the DB access method stat function (dbp-&gt;stat()) has been
+changed.
+Per-thread statistics are no longer returned, only statistics for the entire
+database are returned.
+In addition, the stat function has been changed to take an additional
+``flags'' parameter.
+The only legal value for this parameter in DB 2.3 is DB_RECORDCOUNT,
+which causes the stat function to return a count of records in the tree
+without collecting other statistics.
+<p>
+A number of additional items of information have been added to the
+information returned by the stat function,
+notably database configuration flags and other information normally
+specified to the
+db_open(3)
+function when the database is created.
+<p>
+See
+db_stat(1)
+and
+db_open(3)
+for more information.
+<br><font color=red>
+This change is NOT transparent to applications.
+</font>
+
+<p><li>
+A number of new configuration options have been added to the
+db_load(1)
+utility, allowing databases to be dumped and reloaded in different
+configurations.
+See
+db_load(1)
+for more information.
+
+<p><li>
+The C++ API for DB has been reworked, and is now believed to be fairly
+close to its final form.
+There are still no manual pages for the C++ API, although we expect to
+have them together and released within a couple of weeks.
+<p>
+The C++ files and directories in the source distribution are:
+<p>
+<table border>
+<tr>
+<td>db/cxx/</td>
+<td>C++ API</td>
+</tr><tr>
+<td>db/examples_cxx/</td>
+<td>The example programs recoded in C++.</td>
+</tr><tr>
+<td>db/include/cxx_int.h</td>
+<td>Internal C++ include file.</td>
+</tr><tr>
+<td>db/include/db_cxx.h</td>
+<td>External C++ include file.</td>
+</tr>
+</table>
+<p>
+C++ support is automatically built on Win32. To configure it under UNIX,
+specify <b>--enable-cxx</b> as a configuration argument (see the file
+<b>db/build.unix/README</b> for more information).
+
+</ol>
+
+</body>
+</html>
diff --git a/db/docs_src/ref/changelog/2.4.10.html b/db/docs_src/ref/changelog/2.4.10.html
new file mode 100644
index 000000000..e4d58cec7
--- /dev/null
+++ b/db/docs_src/ref/changelog/2.4.10.html
@@ -0,0 +1,473 @@
+<!--"$Id: 2.4.10.html,v 1.4 2007/05/17 18:17:18 bostic Exp $ (Sleepycat) $Date: 2007/05/17 18:17:18 $"-->
+<html>
+<head>
+<title>The Berkeley DB Package: DB 2.4.10 Change Log</title>
+<meta name="description" content="DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Berkeley DB 2.4.10 Change Log</h3>
+
+<h3>Interface Changes Introduced in DB 2.4.10:</h3>
+<ol>
+
+<p><li>
+Support has been added for architectures with 16-bit integers, largely to
+port Berkeley DB to the Windows 3.1 platform. This required <b>extensive</b>
+code changes, although almost all of them were only semantic in nature.
+In almost all of the DB public interfaces, including any public structure
+elements, all variables of type "int" or "unsigned int" have been converted
+to be either type "int32_t" or "u_int32_t".
+<p>
+Previously built binaries on any 32-bit machine should be backward
+compatible, however, previously built binaries on machines with 64-bit
+integers will not be binarily compatible. Applications should recompile
+correctly without warning or error, unless there are explicit casts in
+the application source code.
+<font color=red>
+This change may NOT be transparent to applications.
+</font>
+
+<p><li>
+Support has been added to allow Berkeley DB to use shared memory backed
+by a paging file or swap space (as opposed to backed by the regular file
+system) on both UNIX and Win95/WNT platforms. This required a major
+rework of the shared memory support in DB, and, for this reason, the DB
+version 2.4.10 release should, perhaps, be tested more thoroughly than
+usual in your local environment before committing to the upgrade. This
+change caused the
+db_jump_set(3)
+and
+db_value_set(3)
+functions to change.
+<p>
+The
+db_jump_set(3)
+function interface specified by the DB_FUNC_MAP flag has changed.
+A new interface, specified by the DB_FUNC_RUNLINK flag has been added.
+Applications replacing these functions at run time will
+require additional care in upgrading to this release of DB.
+<p>
+The
+db_value_set(3)
+function interface has two additional flags: DB_REGION_ANON and
+DB_REGION_NAME, which allow applications to specify regions are
+to be created when using memory backed by a paging file.
+<p>
+See the
+db_internal(3)
+manual page for further information.
+
+<p><li>
+The
+db_jump_set(3)
+interface no longer supports the DB_FUNC_CALLOC and DB_FUNC_STRDUP flags.
+Applications may continue to set the functions associated with those flags,
+but they are no longer needed and no longer have any effect.
+
+<p><li>
+The
+db_value_set(3)
+interface has an additional flag: DB_REGION_INIT, which permits applications
+to specify that regions should be page-faulted into memory immediately upon
+creation.
+This fixes a problem where the additional time required to page-fault in
+region memory caused locks to convoy inside of the shared memory buffer pool.
+<p>
+This additionally required an interface change to the DB_FUNC_SEEK interface
+as specified by the
+db_jump_set(3)
+function interface.
+The "relative" argument is now a "u_int32_t" instead of a "u_long",
+and there is an additional argument "isrewind" in order to support
+seeking in the reverse direction.
+<p>
+See the
+db_internal(3)
+manual page for further information.
+<font color=red>
+This change may NOT be transparent to applications.
+</font>
+
+<p><li>
+The
+log_put(3)
+function has an additional flag: DB_CURLSN, which permits applications
+to determine the next log LSN value which will be used.
+This, coupled with changes to the transaction subsystem to no longer
+write transaction-begin records allows Berkeley DB to avoid writing
+any log records in the case of read-only transactions.
+
+<p><li>
+The interface to the
+hcreate(3)
+function has been changed to take a "size_t" as an argument instead of
+an "unsigned int", for compatibility with vendor platforms, notably Solaris.
+<font color=red>
+This change may NOT be transparent to applications.
+</font>
+
+<p><li>
+Specifying NULL or zero-length keys to DB functions is now explicitly
+disallowed by most of the DB interfaces, and EINVAL will be returned.
+<font color=red>
+This change may NOT be transparent to applications.
+</font>
+
+<p><li>
+Performance measurements of Berkeley DB indicated that a significant
+amount of time was being spent clearing pages created in the shared
+memory buffer pool.
+In order to fix this, additional information has been added to the
+memp_fopen(3)
+interface which allows callers to specify the number of bytes which
+need to be cleared when pages are created in the pool.
+The default behavior of the pool code is unchanged, and by default the
+entire page is cleared.
+<p>
+However, the
+memp_fopen(3)
+function interface has changed: 4 of the lesser-used historic arguments
+and the new argument have been moved to an information structure of type
+DB_MPOOL_FINFO which is passed to the memp_fget function as an argument.
+See the
+db_mpool(3)
+man page for more information.
+<font color=red>
+This change may NOT be transparent to applications.
+</font>
+
+<p><li>
+An interface has been added to the
+db_checkpoint(1)
+function allowing database administrators to force a single checkpoint.
+See the
+db_checkpoint(1)
+man page for more information.
+
+</ol>
+
+<h3>Configuration and Build Changes:</h3>
+
+<ol>
+
+<p><li>
+The environment variables used to specify a compiler, loader or compile
+and loader flags during DB configuration have been changed to be more in
+line with standard GNU autoconf practice. The changes are as follows:
+<p>
+<table border>
+<tr><td>Old Name</td><td>New Name</td></tr>
+<tr><td>ADDCPPFLAGS</td><td>CPPFLAGS</td></tr>
+<tr><td>ADDCXXFLAGS</td><td>CXXFLAGS</td></tr>
+<tr><td>ADDLDFLAGS</td><td>LDFLAGS</td></tr>
+<tr><td>ADDLIBS</td><td>LIBS</td></tr>
+</table>
+<p>
+See the file build.unix/README for further information.
+
+<p><li>
+The DB debugging support (previously configured by specifying
+<b>--enable-debug</b> during configuration) has been split into two
+separate pieces of functionality.
+<p>
+To build DB with -g as a compiler flag and with DEBUG #defined during
+compilation, enter <b>--enable-debug</b> as an argument to configure.
+This will create DB with debugging symbols, as well as load various
+routines that can be called from a debugger to display pages, cursor
+queues and so forth. This flag should probably not be specified when
+configuring to build production binaries, although there shouldn't be
+any significant performance degradation.
+<p>
+To build DB with diagnostic, run-time sanity checks and with DIAGNOSTIC
+#defined during compilation, enter <b>--enable-diagnostic</b> as an
+argument to configure. This will cause a number of special checks to be
+performed when DB is running. This flag should <b>NOT</b> be specified
+when configuring to build production binaries, as you will lose a
+significant amount of performance.
+
+<p><li>
+Some systems, notably versions of AIX, HP/UX and Solaris, require
+special compile-time options in order to create files larger than
+2^32 bytes. These options are automatically enabled when DB is
+compiled. For this reason, binaries built on current versions of
+these systems may not run on earlier versions of the system, as
+the library and system calls necessary for large files are not
+available. To disable building with these compile-time options,
+enter <b>--disable-bigfile</b>.
+
+<p><li>
+The autoconf configure script has been enhanced to correctly support
+<b>--disable-feature</b> or <b>--enable-feature=no</b> options.
+
+<p><li>
+The Berkeley DB test suite has been re-ordered to run system tests before
+the tests of the individual access methods.
+
+<p><li>
+The Berkeley DB test suite has been largely ported to the Windows 3.1
+environment. See the distribution file test/README.win32 for more
+information.
+
+<p><li>
+Mutex lock support for the GCC compiler and the PaRisc architecture has
+been added.
+
+<p><li>
+The db_printlog(1) debugging utility is now built by default,
+and the
+db_stat(1)
+utility is now built on Win95/WNT platforms.
+
+<p><li>
+A number of C, C++ and Java compiler warnings have been fixed.
+
+<p><li>
+Support has been added for the Siemens-Nixdorf Informationssysteme AG
+ReliantUNIX platform.
+
+<p><li>
+Ports of Berkeley DB to the HP MPE/iX and Windows 3.1 environments have
+been begun. They are not yet complete.
+
+</ol>
+
+<h3>B+tree Access Method Bug Fixes:</h3>
+
+<ol>
+
+<p><li>
+When performing btree range searches (that is, using the DB_SET_RANGE
+interface, or using the DB version 1.85 compatibility interface), the
+Btree access method could incorrectly return already deleted records.
+
+<p><li>
+When using a cursor to delete key/data pairs from a btree database, it
+was possible to leave empty pages in the database. This did not cause
+incorrect behavior, however, it could lead to unexpected growth in the
+database.
+
+<p><li>
+When doing a partial put into a off-page (that is, "overflow") record,
+the Btree access method could incorrectly store the data item.
+
+<p><li>
+When an off-page (that is, "overflow") record was promoted to an internal
+page of a Btree database, DB applications could dump core when walking
+the tree on machines where a certain stack variable was not automatically
+initialized to 0.
+
+<p><li>
+When an off-page (that is, "overflow") item was promoted into an internal
+page in a Btree database, DB applications reading databases on machines
+with different byte orders could incorrectly walk the Btree, potentially
+dumping core.
+
+<p><li>
+When Btree databases had record numbering turned on (the DB_RECNUM
+option), it was possible for the record numbers to fail to stay
+synchronized with changes in the database.
+
+</ol>
+
+<h3>Recno Access Method Bug Fixes:</h3>
+
+<ol>
+
+<p><li>
+When iterating through Recno access method databases, DB could incorrectly
+return EINVAL instead of the next key/data pair.
+
+<p><li>
+Previous releases of DB did not permit Recno access method databases to
+be opened read-only.
+
+<p><li>
+When reading the last record in a Recno access method database, DB could
+incorrectly return DB_NOTFOUND instead of the key/data pair.
+
+<p><li>
+When a key/data item was deleted using the cursor interface to a Recno
+access method database, a subsequent put using DB_NOOVERWRITE set would
+fail.
+
+<p><li>
+Because DB version 2 lazily instantiates the underlying shared memory
+buffer pool files, the DB-&gt;fd call for Recno databases in the DB 1.85
+compatibility interface did not always work.
+
+</ol>
+
+<h3>C++ and Java API Bug Fixes:</h3>
+
+<ol>
+
+<p><li>
+When the C++ interface
+Db::get()
+function was called, DB incorrectly treated the DB_NOTFOUND case as an
+exception instead of returning DB_NOTFOUND.
+
+<p><li>
+The DB Java interface now sets the CLASSPATH variable instead of depending
+on -classpath. This allows DB to work with the SGI JDK 3.0.1.
+
+<p><li>
+Using Dbc.next with the DB_SET or DB_SET_RANGE options in the DB Java
+interface would not correctly position the cursor.
+
+<p><li>
+The DB Java interface now works correctly with the Solaris JDK 1.2.
+
+</ol>
+
+<h3>Additional Bug Fixes:</h3>
+
+<ol>
+
+<p><li>
+Shared regions now work correctly for multiple processes on Windows/95
+platforms.
+
+<p><li>
+It was possible under rare conditions to return illegal addresses when
+read-only databases were mapped into the process address space.
+
+<p><li>
+When a DB environment had already been specified, setting the
+"db_cachesize" field of the DB_INFO structure would be silently
+ignored by
+db_open(3).
+In DB version 2.4.10, specifying a DB environment as well as setting
+db_cachesize is considered an error, returning EINVAL.
+
+<p><li>
+Several boundary conditions were identified and fixed in database
+recovery.
+
+<p><li>
+Key-not-found and errno returns were being set incorrectly in the
+dbm/ndbm interface compatibility functions.
+
+<p><li>
+Under some conditions, database files could still be synced to disk on
+close, even if the DB_NOSYNC flag was specified to the DB-&gt;close function.
+
+<p><li>
+Under some conditions, the db_archive utility output could contain
+multiple slashes in pathnames.
+
+<p><li>
+The db_archive utility would always prepend the current working
+directory pathname when the -a option was specified, regardless
+of the DB environment information indicating that the database
+home was at an absolute pathname.
+
+<p><li>
+Page create statistics were not correctly maintained when the
+DB_MPOOL_NEW option was specified to the shared memory buffer
+pool subsystem.
+
+<p><li>
+Under rare conditions, log offsets were not maintained correctly when
+switching between log files.
+
+</ol>
+
+<h3>Additional Changes:</h3>
+
+<ol>
+
+<p><li>
+The transaction ID space in Berkeley DB is 2<sup>31</sup>, or 2 billion
+entries.
+It is possible that some environments may need to be aware of this limitation.
+Consider an application performing 600 transactions a second for 15 hours a
+day.
+The transaction ID space will run out in roughly 66 days:
+<blockquote>
+2<sup>31</sup> / (600 * 15 * 60 * 60) = 66
+</blockquote>
+<p>
+Doing only 100 transactions a second exhausts the transaction ID space in
+roughly one year.
+<p>
+In order to decrease the likelihood of exhausting the transaction ID space,
+Berkeley DB now resets the transaction ID each time that recovery is run.
+See
+db_txn(1)
+for more information.
+
+<p><li>
+The limitations on database lifetime imposed by the Berkeley DB logging
+subsystem has been documented. See
+db_log(3)
+for more information.
+
+<p><li>
+Performance measurements of Berkeley DB indicated that a significant
+amount of time was spent in searching hash queues in the shared memory
+buffer pools. The internal DB hash bucket code has been enhanced to
+handle much larger core memories than was possible previously, which
+should result in increased performance when using large memory pool
+caches.
+
+<p><li>
+Performance measurements of Berkeley DB indicated that a significant
+amount of time was spent in searching lock queues, and, specifically, in
+calculating hash values of lock queue elements. Fast hash functions
+specifically for DB's use have been added to the lock subsystem to
+alleviate this problem.
+
+<p><li>
+Performance measurements of Berkeley DB indicated that a significant
+amount of time was spent in determining the number of processors on
+the Windows/NT platform. The value is now determined initially and
+then stored.
+
+<p><li>
+Historically, the
+db_appinit(3)
+function returned EINVAL if an application attempted recovery, by
+specifying DB_RECOVER or DB_RECOVER_FATAL, and there were no log
+files currently in the database environment. In the 2.4.10 release,
+this is no longer an error.
+
+<p><li>
+The mutex locking code has been enhanced to no longer attempt full
+test-and-set instructions unless there is a strong probability of
+acquiring the mutex. This makes spinning on the mutex significantly
+less expensive.
+
+<p><li>
+The count of attempted mutex locks (mutex_set_wait) has been changed to
+be incremented every time a process/thread is refused the lock, instead
+of only once when it first requests the lock and is denied.
+
+<p><li>
+The
+db_dump185(1)
+utility has been enhanced to dump DB version 1.86 databases as well as
+DB version 1.85 databases.
+
+<p><li>
+The
+db_stat(1)
+utility has been enhanced to display values larger than 10 million in
+a new format, "###M".
+
+<p><li>
+The
+db_stat(1)
+utility has been enhanced to display lock region statistics.
+See
+db_stat(1)
+and
+db_lock(3)
+for more information.
+
+</ol>
+
+</body>
+</html>
diff --git a/db/docs_src/ref/changelog/2.4.14.html b/db/docs_src/ref/changelog/2.4.14.html
new file mode 100644
index 000000000..13b7ce3f1
--- /dev/null
+++ b/db/docs_src/ref/changelog/2.4.14.html
@@ -0,0 +1,198 @@
+<!--"$Id: 2.4.14.html,v 1.3 2007/05/17 18:17:18 bostic Exp $ (Sleepycat) $Date: 2007/05/17 18:17:18 $"-->
+<html>
+<head>
+<title>The Berkeley DB Package: DB 2.4.14 Change Log</title>
+<meta name="description" content="DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Berkeley DB 2.4.14 Change Log</h3>
+
+<h3>Interface Changes Introduced in DB 2.4.14:</h3>
+<ol>
+
+<p><li>
+Enhance the
+db_load(1)
+utility so that the default behavior is to add data to existing databases
+(rather than to always create the database), and to correctly perform
+locking for databases running in Berkeley DB environments. This allows
+the use of
+db_load(1)
+to add key/data pairs to existing, active databases.
+<p>
+Add a <b>-n</b> option to the
+db_load(1)
+This option causes
+db_load(1)
+to refuse to overwrite already existing key/data pairs in databases.
+
+<p><li>
+Enhance the
+db_stat(1)
+utility to display additional information about the shared memory buffer
+pool and lock regions. The new options are <b>-C[Acflmo]</b> for the
+lock region, and <b>-M[Ahlm]</b> for the shared memory buffer pool region.
+This information is normally intended only for Berkeley DB performance
+tuning.
+
+<p>
+Add a <b>-N</b> option to the
+db_stat(1)
+This option keeps
+db_stat(1)
+from acquiring region locks when reading shared regions, which allows
+db_stat(1)
+to be used to display information about regions where applications have
+crashed while holding region locks.
+
+<p>
+Add region reference counts and sizes to all
+db_stat(1)
+region displays.
+
+<p><li>
+Add a new flag, <b>DB_MUTEXLOCKS</b> to the
+db_value_set(1)
+interface. This flag causes requests for mutual exclusion mutexes to
+be immediately granted without test. This flag is only intended for
+debugging purposes.
+
+</ol>
+<h3>B+tree Access Method Bug Fixes:</h3>
+<ol>
+
+<p><li>
+Fix bug in the B+tree access method where additional cursors could be
+incorrectly updated when key/data pairs were added or deleted.
+
+<p><li>
+Fix bug where an aborted transaction during a B+tree split could cause
+pages to be left pinned.
+
+<p><li>
+Fix possible core dump when freeing the (cursor referenced) last item
+in the last page in a duplicate chain.
+
+<p><li>
+Fix possible core dump when deleting overflow items from duplicate pages.
+
+<p><li>
+Fix bug where duplicate page splits could result in database corruption
+(common to both B+tree and Hash Access Methods).
+
+</ol>
+<h3>Hash Access Method Bug Fixes:</h3>
+<ol>
+
+<p><li>
+Fix bug where Hash access method recovery did not always correctly recover
+key/data pair addition or deletion.
+
+<p><li>
+Fix bug where deleting a key in a Hash access method database could cause
+a cursor sequentially walking the database to skip records.
+
+<p><li>
+Fix bug where duplicate page splits could result in database corruption
+(common to both B+tree and Hash Access Methods).
+
+</ol>
+<h3>Shared Memory Buffer Pool Bug Fixes:</h3>
+<ol>
+
+<p><li>
+Fix bug where a DB thread handle could be left locked if a read-only file
+descriptor could not be upgraded to read-write during a buffer pool sync
+to disk.
+
+</ol>
+<h3>Common Shared Region Support Bug Fixes:</h3>
+<ol>
+
+<p><li>
+Fix bug where private shared memory pool regions could not be created on
+architectures without spinlock mutex support.
+
+<p><li>
+Fix possible file descriptor leak on HP/UX architecture (reports #150,
+#158).
+
+<p><li>
+Fix a variety of inconsistencies where, after a failed attempt to open
+shared regions, the code recovery paths were incorrect.
+
+</ol>
+<h3>Additional Bug Fixes:</h3>
+<ol>
+
+<p><li>
+Fix possible core dump in
+lock_open(1)
+when it was called without first creating a Berkeley DB database environment.
+
+</ol>
+<h3>Test Suite, Example Program and Build Procedure Bug Fixes and Changes:</h3>
+<ol>
+
+<p><li>
+Fix build procedures for a number of architectures: affected systems
+include VC++ 5.0 and various releases of SunOS, AIX, OSF/1, FreeBSD
+and Linux (reports #145, #156).
+
+<p><li>
+Fix the Berkeley DB test suite to correctly identify Windows systems
+in all cases (the previous method failed for some releases of the
+Tcl scripting language).
+
+<p><li>
+Fix the <b>ex_thread</b> example program to correctly set the buffer
+cache size.
+
+<p><li>
+Fix the Berkeley DB test suite to ignore errors where System V shared
+memory interfaces (shmget(2)) have not been configured correctly.
+
+<p><li>
+Add support for the BSD/OS 4.0 release.
+
+<p><li>
+Add support for the SCO OpenServer Release 5 (3.2.2). (The test suite
+has not yet run successfully on this architecture, although we currently
+believe that the problems are in the test suite, and not in the Berkeley
+DB library itself.)
+
+<p><li>
+Change configuration to ignore the FreeBSD shmget(2) interfaces when
+ftok(3) is not available from the C library.
+
+<p><li>
+Change configuration to fail on the Nextstep architecture. (Previously,
+Berkeley DB would configure successfully, but then not build on Nextstep.)
+
+</ol>
+<h3>Additional Changes:</h3>
+<ol>
+
+<p><li>
+Return EINVAL if the DB_RECOVER or DB_RECOVER_FATAL flags were specified to
+db_appinit(3) without also specifying the DB_INIT_TXN flag.
+
+<p><li>
+Removed "Additional Change" #7 from the Berkeley DB 2.4.10 release:
+<p>
+<blockquote>
+The mutex locking code has been enhanced to no longer attempt full
+test-and-set instructions unless there is a strong probability of
+acquiring the mutex. This makes spinning on the mutex significantly
+less expensive.
+</blockquote>
+<p>
+Full test-and-set instructions are necessary on some architectures, and
+it this change actually decreased performance in some cases.
+
+</ol>
+
+</body>
+</html>
diff --git a/db/docs_src/ref/changelog/2.5.9.html b/db/docs_src/ref/changelog/2.5.9.html
new file mode 100644
index 000000000..7587d51b7
--- /dev/null
+++ b/db/docs_src/ref/changelog/2.5.9.html
@@ -0,0 +1,644 @@
+<!--"$Id: 2.5.9.html,v 1.4 2007/05/17 18:17:18 bostic Exp $ (Sleepycat) $Date: 2007/05/17 18:17:18 $"-->
+<html>
+<head>
+<title>The Berkeley DB Package: DB 2.5.9 Change Log</title>
+<meta name="description" content="DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Berkeley DB 2.5.9 Change Log</h3>
+
+<h3>Interface Additions in Berkeley DB 2.5.9:</h3>
+
+<ol>
+
+<p><li>
+A new flag is available in this release for the Berkeley DB cursor
+key/data retrieval interface: <b>DB_NEXT_DUP</b>. This flag causes the
+DBcursor-&gt;c_get routine to return the next duplicate in a list of
+duplicates, and DB_NOTFOUND if there are no additional duplicates to
+return.
+
+<p><li>
+A new flag is available in this release for the Berkeley DB cursor
+key/data retrieval interfaces: <b>DB_GET_BOTH</b>. This flag causes the
+DB-&gt;get and DBcursor-&gt;c_get routines to return success only if <b>both</b>
+the specified key and data items match the entry in the database.
+
+<p><li>
+A new flag is available in this release for the Berkeley DB key/data
+retrieval interfaces: <b>DB_RMW</b>. This flag causes the DB-&gt;get and
+DBcursor-&gt;c_get routines to acquire write locks instead of read locks when
+doing the retrieval. Setting this flag may decrease the likelihood of
+deadlock during a read-modify-write cycle by immediately acquiring the
+write lock during the read part of the cycle, so that another thread of
+control acquiring a read lock for the same item, in its own
+read-modify-write cycle, will not result in deadlock.
+
+<p><li>
+A new flag is available in this release: <b>DB_DUPSORT</b>. This flag
+causes duplicate records to be maintained in sorted order. By default,
+the sort order is the same default lexical sort used by the Btree access
+method. A new field, in the DB_INFO structure passed to the db_open
+routine, is available in this release as well: <b>dup_compare</b>. This
+field is a sort function that is optionally used to sort duplicate data
+items. It is intended to allow applications to maintain duplicates in a
+non-standard sort order.
+
+<p><li>
+A new interface is available in this release, <b>DB-&gt;join</b>. This
+interface takes a set of Berkeley DB cursors as arguments, and returns a
+specialized Berkeley DB cursor whose get function performs a database join
+on the records referenced by the set of cursors.
+
+<p><li>
+A new field is available in this release, set in the Berkeley DB structure
+returned by db_open, <b>DB-&gt;byteswapped</b>. This field is set if the
+underlying database was not in the native host byte order, and can be used
+by the application to determine if its stored data will require host-order
+cleanups before use.
+
+<p><li>
+The dbmclose() interface has been added to the Berkeley DB dbm/ndbm
+compatibility interface, for application compatibility with the Sun
+Microsystems Solaris and other dbm/ndbm interfaces.
+
+</ol>
+
+<h3>Interface Changes in Berkeley DB 2.5.9:</h3>
+
+<ol>
+
+<p><li>
+Previous Berkeley DB releases have been inconsistent with respect to which
+<b>DBT structure</b> flags may be specified to which Berkeley DB
+interfaces. For example, calling DB-&gt;put with the DB_DBT_MALLOC flag
+specified makes no sense, and DB has been inconsistent historically as to
+whether this was treated as an error or simply ignored.
+<p>
+As of this release, inappropriate flags in the DBT structure will simply
+be ignored. This is intended to make it easy to, for example, retrieve
+a key/data pair and then use the data DBT as the key DBT for another
+database without having to reinitialize the flags in the DBT.
+<p>
+Previous Berkeley DB releases also required that threaded applications
+always set the DB_DBT_MALLOC or DB_DBT_USERMEM flags in DBT structures
+when retrieving key/data items. As of this release, specifying
+DB_DBT_MALLOC or DB_DBT_USERMEM is only required when using the non-cursor
+DB interfaces (for example, DB-&gt;get). When using cursor interfaces
+(for example, DBcursor-&gt;c_get), the flags are not required, as memory
+in which the key/data items are returned is allocated and maintained on
+a per-cursor basis.
+
+<p><li>
+Berkeley DB log files are now named <b>log.XXXXXXXXXX</b> instead of
+<b>log.XXXXX</b>, in order to ensure that applications do not run out of
+log filename space.
+<p><font color=red>
+This change is transparent to applications, but may NOT be transparent to
+local shell scripts and utilities.
+</font>
+
+<p><li>
+Previous Berkeley DB releases returned statistics for the Btree databases
+that were only valid for the lifetime of the handle with which they were
+requested, that is, these statistics as returned for a particular Berkeley
+DB handle would only reflect database operations done by that Berkeley DB
+handle and any cursors associated with it.
+<p>
+The following statistics have been removed from the returned Btree
+statistical information: <b>bt_freed</b>, <b>bt_pfxsaved</b>,
+<b>bt_split</b>, <b>bt_rootsplit</b>, <b>bt_fastsplit</b>,
+<b>bt_added</b>, <b>bt_deleted</b>, <b>bt_get</b>, <b>bt_cache_hit</b>,
+<b>bt_cache_miss</b>. If any of these are sufficiently useful to
+application writers that they should be put back into the system, please
+let us know.
+<p><font color=red>
+This change is NOT transparent to applications.
+</font>
+
+<p><li>
+Previous Berkeley DB releases did not support embedded white space in
+Berkeley DB environment configuration strings. As of this release,
+configuration NAME/VALUE strings are still separated by one or more
+whitespace characters (which are discarded), but the VALUE string may
+contain embedded whitespace characters and is terminated by trailing
+whitespace characters and a newline character, both of which are also
+discarded. In addition, empty lines and lines whose first character is
+a whitespace or hash (<b>#</b>) character, in the Berkeley DB
+configuration, file are discarded.
+<p><font color=red>
+This change is potentially NOT transparent to applications.
+</font>
+
+<p><li>
+The DB_REGION_INIT flag to the db_value_set interface has been enhanced
+to write a byte to each page in the region. This allows applications
+to use DB_REGION_INIT to ensure that there is sufficient disk space for
+the backing region file.
+
+</ol>
+
+<h3>Berkeley DB Environment failures:</h3>
+<blockquote>
+<p>
+There exists a class of errors that Berkeley DB considers fatal to an
+entire Berkeley DB environment. An example of this type of error is a
+log write failure due to the disk being out of free space. The only way
+to recover from these failures is for the application to exit, run
+recovery of the Berkeley DB environment, and re-enter DB. (It is not
+strictly necessary that the application exit, although that is the only
+way to recover system resources, for example, file descriptors and
+memory, currently allocated by Berkeley DB.)
+<p>
+In previous Berkeley DB releases, the only way an application could
+determine that a fatal error had occurred was to monitor Berkeley DB
+function return values, looking for unexpected ones, such as ENOSPC, or
+EPERM (which has historically been returned by Berkeley DB to indicate a
+potential underlying database corruption).
+<p>
+As of this release, we have added a new error return value, DB_RUNRECOVERY.
+ This error can be returned by <b>any</b> Berkeley DB interface. If a
+fatal error occurs, DB_RUNRECOVERY will then be returned from all
+subsequent DB calls made by any threads or processes participating in the
+DB environment.
+<p>
+The EPERM error return no longer has a special meaning in Berkeley DB.
+<p>
+Optionally, applications may also specify a fatal-error callback function
+by setting the <b>db_paniccall</b> field of the DB_ENV structure before
+initializing the environment with db_appinit (DbEnv::appinit). This
+callback function will be called with two arguments: the DB_ENV structure
+associated with the environment and the errno value associated with the
+underlying error that caused the problem.
+<p>
+Applications can handle fatal errors in one of two ways: by checking for
+DB_RUNRECOVERY as part of their normal Berkeley DB error return checking,
+or, in applications that have no cleanup processing of their own, by
+simply exiting the application when the callback function is called.
+<p>
+We would be very interested in any comments that you'd care to make on
+this interface change, in particular, any comments on the sufficiency
+of the interface for your Berkeley DB application.
+<p><font color=red>
+This change is NOT transparent to applications.
+</font>
+</blockquote>
+
+<h3>Documentation Changes:</h3>
+
+<ol>
+
+<p><li>
+The Berkeley DB documentation has been completely reworked. It is no
+longer available in flat text, UNIX roff or PostScript formats, but is
+now <b>only available in HTML format</b>. To use the Berkeley DB
+documentation, point your browser to the Berkeley DB distribution or
+installation directory <b>db-2.5.9/docs/index.html</b>. This release
+also includes the beginnings of the Berkeley DB Reference Guide, as well
+as the manual pages.
+
+</ol>
+
+<h3>B+tree Access Method Bug Fixes:</h3>
+
+<ol>
+
+<p><li>
+Cursor delete operations were not necessarily being undone after deadlock,
+potentially leading to incorrect data.
+
+<p><li>
+Deleted, off-page duplicate items could be recovered incorrectly,
+potentially leading to incorrect data.
+
+<p><li>
+Log records could be written outside of a transaction under some
+circumstances, potentially corrupting the log so that recovery would fail.
+
+<p><li>
+Completely emptying large trees could cause corruption of the database
+root page during the final reverse split.
+
+<p><li>
+Failure during page split could leave cursors referencing incorrect data.
+
+<p><li>
+Retrieving records based on logical record number could return incorrect
+data if logically adjacent records had previously been deleted.
+
+<p><li>
+The Btree access method is more aggressive in this release about
+discarding locks within transactions that are not needed for correctness.
+This change significantly decreases the probability of deadlock for some
+applications.
+
+</ol>
+
+<h3>Hash Access Method Bug Fixes:</h3>
+
+<ol>
+
+<p><li>
+Storing duplicate data items using the DB_CURRENT flag could result in
+incorrect data.
+
+<p><li>
+Cursors and their locks did not always return unchanged on operation
+failure.
+
+<p><li>
+Entering a sufficient number of duplicate data items into the database
+could result in incorrect cursor positioning and/or a corrupted database.
+
+</ol>
+
+<h3>Recno Access Method Bug Fixes:</h3>
+
+<ol>
+
+<p><li>
+The logical record number returned from DB_APPEND calls was stored into
+library memory instead of into the user-specified memory.
+
+<p><li>
+The memory in which the backing source filename was stored could be freed
+multiple times, potentially leading to application core dump.
+
+</ol>
+
+<h3>General Access Method Bug Fixes:</h3>
+
+<ol>
+
+<p><li>
+Incorrectly treated setting the database cachesize in the presence of a
+Berkeley DB environment to be an error, even if the environment didn't
+not initialize a shared memory buffer pool.
+
+<p><li>
+Using the DBcursor-&gt;c_get interface with the DB_KEYFIRST or DB_KEYLAST
+flags to insert a new key into the database would fail.
+
+<p><li>
+In previous Berkeley DB releases each cursor operation (when not part of
+a transaction) potentially used a different locker ID, making it possible
+for cursor operations to lock against themselves. In the 2.5.9 release,
+the cursor locker ID is maintained for the life of the cursor, instead.
+
+<p><li>
+The optional user-specified transaction recovery function was not being
+called during Berkeley DB recovery, and when using the db_printlog
+utility.
+
+<p><li>
+Pages of duplicate data items were incorrectly split and logged/recovered,
+potentially leading to database corruption.
+
+<p><li>
+During recovery, deleted database files could cause recovery to fail.
+
+</ol>
+
+<h3>C++ API Changes and Bug Fixes</h3>
+
+<ol>
+
+<p><li>
+A DbEnv::version method has been added to allow access to major, minor
+and patch numbers for the current version.
+
+<p><li>
+The DbEnv class has been cleaned up so that inappropriate get and set
+methods have been removed:
+<p>
+<blockquote>
+DbEnv::get_data_cnt<br>
+DbEnv::get_data_dir<br>
+DbEnv::get_data_next<br>
+DbEnv::get_flags<br>
+DbEnv::get_home<br>
+DbEnv::get_log_dir<br>
+DbEnv::get_tmp_dir<br>
+DbEnv::set_data_cnt<br>
+DbEnv::set_data_dir<br>
+DbEnv::set_data_next<br>
+DbEnv::set_flags<br>
+DbEnv::set_home<br>
+DbEnv::set_log_dir<br>
+DbEnv::set_tmp_dir<br>
+</blockquote>
+<p>
+These methods are unneeded because the constructor with arguments,
+or the appinit() method, can be used to set this information.
+<p>
+<blockquote>
+DbEnv::get_errcall<br>
+DbEnv::get_errfile<br>
+DbEnv::get_error_model<br>
+DbEnv::get_error_stream<br>
+DbEnv::get_errpfx<br>
+DbEnv::get_lg_max<br>
+DbEnv::get_lk_conflicts<br>
+DbEnv::get_lk_detect<br>
+DbEnv::get_lk_max<br>
+DbEnv::get_lk_modes<br>
+DbEnv::get_lorder<br>
+DbEnv::get_mp_mmapsize<br>
+DbEnv::get_mp_size<br>
+DbEnv::get_tx_max<br>
+DbEnv::get_tx_recover<br>
+DbEnv::get_verbose<br>
+</blockquote>
+<p>
+These get methods accessed information that was never set by Berkeley DB.
+
+<p><li>
+Remaining DbEnv::set_* methods may throw an exception if they are called
+after the environment has been initialized (either via appinit or the
+constructor with arguments).
+
+<p><li>
+The DbInfo class has been reworked so that inappropriate get methods
+have been removed. These get methods accessed information that was
+never set by Berkeley DB.
+<p>
+<blockquote>
+DbInfo::get_bt_compare<br>
+DbInfo::get_bt_maxkey<br>
+DbInfo::get_bt_minkey<br>
+DbInfo::get_bt_prefix<br>
+DbInfo::get_cachesize<br>
+DbInfo::get_flags<br>
+DbInfo::get_h_ffactor<br>
+DbInfo::get_h_hash<br>
+DbInfo::get_h_nelem<br>
+DbInfo::get_lorder<br>
+DbInfo::get_malloc<br>
+DbInfo::get_pagesize<br>
+DbInfo::get_re_delim<br>
+DbInfo::get_re_len<br>
+DbInfo::get_re_pad<br>
+DbInfo::get_re_source<br>
+</blockquote>
+<p>
+Methods to get and set underlying lock identifiers in a DbLock have
+been removed, as lock identifiers should be completely opaque to the
+application.
+
+</ol>
+
+<h3>Java API Changes and Bug Fixes</h3>
+
+<ol>
+
+<p><li>
+The DB_SET_RANGE flag did not correctly return data items.
+
+<p><li>
+Db.stat() is now declared to return an Object. The object returned is of
+type DbBtreeStat if the file was created using Db.DB_BTREE. In the
+future, this will return other types, for example, DbHashStat.
+<p>
+The DbBtreeStat, DbLockStat, DbMpoolFStat, DbMpoolStat and DbTxnStat classes
+have been changed to allow direct access to their data members. DbLogStat
+is a new class.
+
+<p><li>
+The DbEnv class has been reworked and all inappropriate get and set
+methods have been removed:
+<p>
+<blockquote>
+DbEnv.get_data_cnt<br>
+DbEnv.get_data_next<br>
+DbEnv.get_flags<br>
+DbEnv.get_home<br>
+DbEnv.get_log_dir<br>
+DbEnv.get_tmp_dir<br>
+DbEnv.set_data_cnt<br>
+DbEnv.set_data_next<br>
+DbEnv.set_flags<br>
+DbEnv.set_home<br>
+DbEnv.set_log_dir<br>
+DbEnv.set_tmp_dir<br>
+</blockquote>
+<p>
+These methods are unneeded because the constructor with arguments, or the
+appinit() method, can be used to set this information.
+
+<p>
+<blockquote>
+DbEnv.get_errcall<br>
+DbEnv.get_errpfx<br>
+DbEnv.get_lg_max<br>
+DbEnv.get_lk_conflicts<br>
+DbEnv.get_lk_detect<br>
+DbEnv.get_lk_max<br>
+DbEnv.get_lk_modes<br>
+DbEnv.get_lorder<br>
+DbEnv.get_mp_mmapsize<br>
+DbEnv.get_mp_size<br>
+DbEnv.get_tx_max<br>
+DbEnv.get_verbose<br>
+</blockquote>
+<p>
+These get methods used to access information that was never set by
+Berkeley DB.
+<p>
+The DbEnv.get_java_version_string method has been removed, and the Java
+part of Berkeley DB no longer maintains its own version information.
+
+<p><li>
+Remaining DbEnv.set_* methods may throw a DbException if they are called
+after the environment has been initialized (either via appinit or the
+constructor with arguments).
+
+<p><li>
+The DbInfo class has been reworked so that inappropriate get methods
+have been removed. These get methods used to access information that
+was never set by Berkeley DB.
+<p>
+<blockquote>
+DbInfo.get_bt_maxkey<br>
+DbInfo.get_bt_minkey<br>
+DbInfo.get_cachesize<br>
+DbInfo.get_flags<br>
+DbInfo.get_h_ffactor<br>
+DbInfo.get_h_hash<br>
+DbInfo.get_h_nelem<br>
+DbInfo.get_lorder<br>
+DbInfo.get_pagesize<br>
+DbInfo.get_re_delim<br>
+DbInfo.get_re_len<br>
+DbInfo.get_re_pad<br>
+DbInfo.get_re_source<br>
+</blockquote>
+
+<p><li>
+Methods to get and set underlying lock identifiers in a DbLock have
+been removed, as lock identifiers should be completely opaque to the
+application.
+
+<p><li>
+The DbRunRecoveryException class has been added as a subclass of
+DbException. A DbRunRecoveryException object will be thrown when a
+fatal error occurs in Berkeley DB, requiring recovery to be performed.
+
+</ol>
+
+<h3>Shared Memory Buffer Pool Subsystem Bug Fixes:</h3>
+
+<ol>
+
+<p><li>
+It was possible for threads opening and closing databases in a fairly full
+buffer cache to free memory that was still in use, resulting in
+application failure.
+
+<p><li>
+If the memp_trickle() interface was unable to find a single buffer to
+flush in the entire buffer list, it would return with the shared memory
+region mutex locked.
+
+<p><li>
+Opening underlying files of certain sizes in the buffer pool would
+incorrectly fail.
+
+</ol>
+
+<h3>Locking Subsystem Bug Fixes:</h3>
+
+<ol>
+
+<p><li>
+If the a locker being forced to wait does not currently hold any locks,
+the deadlock detector is no longer run.
+
+</ol>
+
+<h3>Logging Subsystem Bug Fixes:</h3>
+
+<ol>
+
+<p><li>
+If the first log get call after database recovery used the DB_NEXT flag,
+it would fail.
+
+<p><li>
+If databases were opened multiple times without intervening closes,
+recovery could fail.
+
+<p><li>
+A memory leak in the log_archive interface has been fixed.
+
+</ol>
+
+<h3>Additional Bug Fixes:</h3>
+
+<ol>
+
+<p><li>
+Windows/NT: using shared anonymous memory did not work correctly between
+processes sharing the database.
+
+<p><li>
+Utilities: Signal handling and Berkeley DB region exit was incorrect.
+Among other issues, the db_load utility could exit holding a region mutex.
+
+<p><li>
+Dbm/Ndbm: System error values were not always being correctly returned.
+
+</ol>
+
+<h3>System Porting and Build Procedure Changes:</h3>
+
+<ol>
+
+<p><li>
+A alpha-release port to VMS has been added to the Berkeley DB
+distribution. The port has not yet run the Berkeley DB test
+suite, but there are no known problems.
+
+<p><li>
+Berkeley DB now uses the pstat_getdynamic(2) interface on Hewlett-Packard
+HP/UX systems to detect the presence of multiple processors.
+
+<p><li>
+For performance reasons, the Berkeley DB release now uses the Sun
+Microsystems Solaris pread(2) and pwrite(2) UNIX interfaces, if they
+are available.
+
+<p><li>
+Berkeley DB now compiles with the -D_THREAD_SAFE C preprocessor flag
+and loads with the libc_r.a C library by default on FreeBSD systems.
+
+<p><li>
+For portability reasons, shared memory segments allocated using the UNIX
+shmget(2) function are now allocated as IPC_PRIVATE. (Apparently, marking
+them as IPC_PRIVATE does not affect that they are available to other
+processes.)
+
+<p><li>
+The standard UNIX install for the Berkeley DB library now installs
+Berkeley DB into its own hierarchy instead of into separate local
+directories. By default, the install locations are:
+<p>
+<table border=1>
+<tr>
+ <th>Location</th>
+ <th>Contents</th>
+</tr><tr>
+ <td>/usr/local/BerkeleyDB/bin</td>
+ <td>binaries</td>
+</tr><tr>
+ <td>/usr/local/BerkeleyDB/include</td>
+ <td>include files</td>
+</tr><tr>
+ <td>/usr/local/BerkeleyDB/lib</td>
+ <td>libraries</td>
+</tr><tr>
+ <td>/usr/local/BerkeleyDB/docs</td>
+ <td>HTML documentation</td>
+</tr>
+</table>
+
+<p><li>
+For portability reasons, the standard UNIX Berkeley DB library archive is
+built with the <b>-cr</b> options in this release, instead of the
+<b>-cq</b> options as done previously.
+
+<p><li>
+The standard UNIX Berkeley DB configuration will now automatically detect
+and use gcc if no compiler named cc is found.
+
+<p><li>
+When the C pre-processor DIAGNOSTIC value is #defined, memory is
+overwritten with a 0xdb pattern instead of a 0xff pattern.
+
+</ol>
+
+<h3>Additional Changes: db_dump</h3>
+
+<ol>
+
+<p><li>
+The db_dump utility has a new option, <b>-N</b>. This option allows
+db_dump to be run without acquiring any shared region mutexes. This
+option is intended for debugging use only.
+
+<p><li>
+The db_dump utility now allows a Berkeley DB environment directory to be
+specified (the <b>-h</b> option) at the same time as the "debugging
+output" option (the <b>-d</b> option).
+
+<p><li>
+The db_dump utility now uses the shared memory buffer pool region if a
+Berkeley DB environment directory is specified, which allows users to see
+the current state of the database instead of only the database state that
+has already been flushed to disk.
+
+</ol>
+
+</body>
+</html>
diff --git a/db/docs_src/ref/changelog/2.6.4.html b/db/docs_src/ref/changelog/2.6.4.html
new file mode 100644
index 000000000..8e1dfc522
--- /dev/null
+++ b/db/docs_src/ref/changelog/2.6.4.html
@@ -0,0 +1,201 @@
+<!--"$Id: 2.6.4.html,v 1.4 2007/05/17 18:17:18 bostic Exp $ (Sleepycat) $Date: 2007/05/17 18:17:18 $"-->
+<html>
+<head>
+<title>The Berkeley DB Package: DB 2.6.4 Change Log</title>
+<meta name="description" content="Berkeley DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Berkeley DB 2.6.4 Change Log</h3>
+
+<h3>Interface Additions in Berkeley DB 2.6.4:</h3>
+
+<ol>
+
+<p><li>
+Berkeley DB now supports a new mode of operation: Concurrent Access Methods.
+This configuration supports multiple-reader, single-writer access without
+requiring deadlock detection and transaction protection. The new interface
+is specified by using the DB_INIT_CDB flag to the db_appinit() function.
+<p>
+In addition, the DB-&gt;cursor interface has been modified to take a fourth
+argument, a <b>flags</b> argument. This change will require that all
+applications using the DB-&gt;cursor interface be modified and recompiled.
+(The necessary modification is trivial, simply add a final argument of
+<b>0</b> to the DB-&gt;cursor call.)
+<p><font color=red>
+This change is NOT transparent to applications.
+</font>
+
+<p><li>
+In previous Berkeley DB releases, cursors in Recno databases with mutable
+record numbers had to be re-positioned each time they were used to delete
+a record. This is no longer the case, and all of the records in the
+database logically at and above the cursor may now be deleted by
+repeatedly calling the delete function after positioning the cursor once.
+This change causes Berkeley DB practice to conform to the documentation
+found in previous releases.
+<p><font color=red>
+This change is NOT transparent to applications.
+</font>
+
+<p><li>
+Berkeley DB no longer permits applications to specify database page sizes
+that are not powers-of-two. This change fixes a bug which could cause
+application failure, as page alignments were not necessarily correct when
+files with page sizes other than powers-of-two were mapped into process
+memory.
+<p><font color=red>
+This change is NOT transparent to applications.
+</font>
+
+</ol>
+
+<h3>B+tree Access Method Bug Fixes:</h3>
+
+<ol>
+
+<p><li>
+Fix a bug which could cause application failure or corrupted data when
+database operations would split a Btree page and then subsequently fail
+or attempt to physically delete records after being restarted.
+
+<p><li>
+Fix a bug which could cause application failure when deleting records
+failed due to a deadlock.
+
+<p><li>
+Fix a bug which could cause a NULL pointer dereference when the relinking
+of duplicate data item pages failed due to deadlock.
+
+<p><li>
+Fix a memory leak where an internal cursor could be left open when
+databases were opened.
+
+<p><li>
+Fix a single-byte memory leak when the standard DB-&gt;del() interface was
+used to delete key/data pairs with duplicate data items.
+
+</ol>
+
+<h3>Hash Access Method Bug Fixes:</h3>
+
+<ol>
+
+<p><li>
+Fix a bug which could cause application failure or data corruption when
+deleting on-page duplicate items.
+
+<p><li>
+Fix a memory leak when closing cursors.
+
+</ol>
+
+<h3>Recno Access Method Bug Fixes:</h3>
+
+<ol>
+
+<p><li>
+Cursors that referenced deleted records were not correctly updated when
+the record was overwritten with new data, and would continue to return
+that the record was still in a "deleted" state.
+
+<p><li>
+Fix a bug where application specified read-modify-write semantics were
+ignored.
+
+<p><li>
+Remove lock-coupling behavior in tiny databases to avoid perpetual
+deadlock.
+
+<p><li>
+Fix a bug where root pages were not always correctly write-locked.
+
+</ol>
+
+<h3>Java API Changes and Bug Fixes</h3>
+
+<ol>
+
+<p><li>
+Fix compile include directory ordering, which could cause Java to be
+compiled using the wrong db.h include file.
+
+</ol>
+
+<h3>General Access Method Bug Fixes:</h3>
+
+<ol>
+
+<p><li>
+Fix a bug which left the read-modify-write semantics in place after the
+operation for which the application specified it completed.
+
+<p><li>
+Fix a bug which caused application failure if a NULL key argument was
+specified for the DB_AFTER, DB_BEFORE or DB_CURRENT flags to the
+DBcursor-&gt;get() interface.
+
+<p><li>
+Change the initial mutex timer back-off from 10ms to 1ms.
+
+</ol>
+
+<h3>Shared Memory Buffer Pool Subsystem Bug Fixes:</h3>
+
+<ol>
+
+<p><li>
+Fix a bug in large database files (&gt;4Gb), which could potentially cause
+data corruption when a database was closed, reopened and new pages were
+then allocated.
+
+<p><li>
+Modify the memp_sync() interface code to no longer hold Berkeley DB region
+locks across memory allocation calls (for example, malloc(3)). This
+change significantly increases throughput in applications checkpointing
+large memory caches.
+
+<p><li>
+Modify the memory pool qsort(3) comparison function to work when called
+by badly written qsort(3) functions.
+
+</ol>
+
+<h3>Additional Bug Fixes:</h3>
+
+<ol>
+
+<p><li>
+Fix a bug in the Berkeley DB error functions where variable numbers of
+arguments were not correctly accessed on some architectures, for
+example, the PowerPC.
+
+</ol>
+
+<h3>System Porting and Build Procedure Changes:</h3>
+
+<ol>
+
+<p><li>
+Support installation into prefix directories for which multiple directory
+components do not yet exist.
+
+<p><li>
+Support installation into different system directories on a per-type
+basis, for example, all the binaries to one directory, and include files to
+another.
+
+<p><li>
+Fix a bug where the supplied portability routine memcpy() was not
+correctly compiled.
+
+<p><li>
+Modify auto-configuration to refuse to configure in the top-level
+distribution directory.
+
+</ol>
+
+</body>
+</html>
diff --git a/db/docs_src/ref/changelog/2.6.5.html b/db/docs_src/ref/changelog/2.6.5.html
new file mode 100644
index 000000000..6b27dfd59
--- /dev/null
+++ b/db/docs_src/ref/changelog/2.6.5.html
@@ -0,0 +1,17 @@
+<!--"$Id: 2.6.5.html,v 1.3 2007/05/17 18:17:18 bostic Exp $ (Sleepycat) $Date: 2007/05/17 18:17:18 $"-->
+<html>
+<head>
+<title>The Berkeley DB Package: DB 2.6.5 Change Log</title>
+<meta name="description" content="Berkeley DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Berkeley DB 2.6.5 Change Log</h3>
+
+<p>
+Berkeley DB version 2.6.5 is the GA release of version 2.6.4,
+and is the new stable release of Berkeley DB, replacing version 2.4.14.
+
+</body>
+</html>
diff --git a/db/docs_src/ref/changelog/2.6.6.html b/db/docs_src/ref/changelog/2.6.6.html
new file mode 100644
index 000000000..25d7da65f
--- /dev/null
+++ b/db/docs_src/ref/changelog/2.6.6.html
@@ -0,0 +1,80 @@
+<!--"$Id: 2.6.6.html,v 1.4 2007/05/17 18:17:18 bostic Exp $ (Sleepycat) $Date: 2007/05/17 18:17:18 $"-->
+<html>
+<head>
+<title>The Berkeley DB Package: DB 2.6.6 Change Log</title>
+<meta name="description" content="Berkeley DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Berkeley DB 2.6.6 Change Log</h3>
+
+<p>
+Berkeley DB version 2.6.6 is version 2.6.5 with all released patches
+applied.
+
+<h3>Bug Fixes:</h3>
+<ol>
+<p><li>
+When looking for an already open log file, do not examine a filename
+structure if its reference count is 0. This problem cannot cause data
+corruption, but may cause program failure.
+<p><li>
+Berkeley DB recovery assumes that there are at least two checkpoints. It
+was possible for log archival to leave the recovery area with only a single
+checkpoint.
+<p><li>
+Version 2.6.5 cannot recover version 2.4.14 log files.
+<p><li>
+Database file opens after recovery could sometimes fail.
+<p><li>
+If only a single checkpoint is found, perform recovery from the beginning
+of the log.
+<p><li>
+The Btree access method delete-by-key code path did not always detect that
+a key/data pair was also referenced by a cursor, which could cause a cursor
+to reference incorrect data.
+<p><li>
+Concurrent Data Store operations could sometimes fail because write
+cursors were not correctly identified.
+<p><li>
+The DB_SET_RANGE flag did not always correctly deal with on-page deleted
+records in the Btree access method.
+<p><li>
+If the buffer cache was completely dirty, transaction checkpoints could
+pin down too many buffers and cause other operations to fail.
+<p><li>
+In the Btree access method, when creating a new record and specifying a
+<b>dbt.off</b> offset value, the DB_DBT_PARTIAL flag was not handled
+correctly.
+<p><li>
+It was possible for the last-known-LSN-on-disk to not be set correctly
+during recovery, which could cause the loss of recovery's checkpoint
+record.
+<p><li>
+Reclaim lockers when using lock_vec to release locks.
+<p><li>
+Re-order subsystem close when closing the environment so that the logging
+subsystem can potentially flush buffers through the shared memory buffer
+pool.
+<p><li>
+Never attempt to grow the shared regions when initially connecting to the
+Berkeley DB environment.
+</ol>
+
+<h3>Other Changes:</h3>
+<ol>
+<p><li>
+In non-threaded applications, change cursors to share a locker ID in
+order to avoid self-deadlocks.
+<p><li>
+Defend against the possibility that records from multiple log files are
+present in the log buffer cache.
+<p><li>
+Test suite change: generate fail message if environment open doesn't work.
+<p><li>
+Update the version numbers from Berkeley DB 2.6.5 to Berkeley DB 2.6.6.
+</ol>
+
+</body>
+</html>
diff --git a/db/docs_src/ref/changelog/2.6.7.html b/db/docs_src/ref/changelog/2.6.7.html
new file mode 100644
index 000000000..b6717db8c
--- /dev/null
+++ b/db/docs_src/ref/changelog/2.6.7.html
@@ -0,0 +1,55 @@
+<!--"$Id: 2.6.7.html,v 1.3 2007/05/17 18:17:18 bostic Exp $ (Sleepycat) $Date: 2007/05/17 18:17:18 $"-->
+<html>
+<head>
+<title>The Berkeley DB Package: DB 2.6.7 Change Log</title>
+<meta name="description" content="Berkeley DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Berkeley DB 2.6.7 Change Log</h3>
+
+<p>
+Berkeley DB version 2.6.7 is version 2.6.6 with all released patches
+applied.
+
+<p>
+Berkeley DB version 2.6.7 is the current stable release of Berkeley DB,
+replacing version 2.6.6.
+
+<h3>Bug Fixes:</h3>
+<ol>
+<p><li>
+If there are a sufficient number of threads competing for limited numbers
+of pages, it's possible to split Btree pages too many times, and cause a
+core dump.
+<p><li>
+Under some circumstances, lockers could be left on locker chains.
+No incorrect behavior could occur but resources could be leaked.
+<p><li>
+Fix potential races in updating checkpoint buffer counts that can
+cause checkpoint calls to never finish.
+<p><li>
+Fix a potential NULL pointer dereference in the database delete-by-key
+interface.
+<p><li>
+Fix a case where it was possible for EAGAIN to not be returned from the
+database get-by-key interface.
+<p><li>
+Ignore log records not involved in transactions so that actions taken
+outside of transactions are not undone during recovery.
+<p><li>
+Fix a recovery bug when database files are opened/closed multiple times in
+the same session.
+<p><li>
+Fix a memory pool race during buffer discard in memory tight environments.
+</ol>
+
+<h3>Other Changes:</h3>
+<ol>
+<p><li>
+Update the Berkeley DB release version numbers from 2.6.6 to 2.6.7.
+</ol>
+
+</body>
+</html>
diff --git a/db/docs_src/ref/changelog/2.7.1.html b/db/docs_src/ref/changelog/2.7.1.html
new file mode 100644
index 000000000..63ec4a5ff
--- /dev/null
+++ b/db/docs_src/ref/changelog/2.7.1.html
@@ -0,0 +1,40 @@
+<!--"$Id: 2.7.1.html,v 1.3 2007/05/17 18:17:18 bostic Exp $ (Sleepycat) $Date: 2007/05/17 18:17:18 $"-->
+<html>
+<head>
+<title>The Berkeley DB Package: DB 2.7.1 Change Log</title>
+<meta name="description" content="Berkeley DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Berkeley DB 2.7.1 Change Log</h3>
+
+<h3>New Features:</h3>
+<ol>
+
+<p><li>
+This release includes support for nested transactions. (No
+interface changes were required.)
+
+</ol>
+<h3>System Porting and Build Procedure Changes:</h3>
+<ol>
+
+<p><li>
+FreeBSD systems are now built using the flags <b>-D_THREAD_SAFE</b> and
+<b>-pthread</b> instead of directly loading with the <b>-lc_r</b> library.
+
+<p><li>
+Linux systems are now built using the <b>-D_REENTRANT</b> flag.
+
+</ol>
+<h3>Other Changes:</h3>
+<ol>
+
+<p><li>
+The default memory pool cache size has been increase from 128K to 256K.
+
+</ol>
+
+</body>
+</html>
diff --git a/db/docs_src/ref/changelog/2.7.3.html b/db/docs_src/ref/changelog/2.7.3.html
new file mode 100644
index 000000000..67affb3e4
--- /dev/null
+++ b/db/docs_src/ref/changelog/2.7.3.html
@@ -0,0 +1,59 @@
+<!--"$Id: 2.7.3.html,v 1.3 2007/05/17 18:17:18 bostic Exp $ (Sleepycat) $Date: 2007/05/17 18:17:18 $"-->
+<html>
+<head>
+<title>The Berkeley DB Package: DB 2.7.3 Change Log</title>
+<meta name="description" content="Berkeley DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Berkeley DB 2.7.3 Change Log</h3>
+
+<h3>Interface Additions and Changes:</h3>
+<ol>
+
+<p><li>
+This release includes support for nested transactions. No interface
+changes were required.
+
+<p><li>
+This release includes support for Berkeley DB as an XA Resource Manager.
+There is an additional C interface, db_xa_open, and a corresponding C++
+method, Db::xa_open.
+<font color=red>
+<p>XA support is not yet fully tested.
+<p>No Windows XA interface is included.
+</font>
+
+</ol>
+<h3>Configuration and Build Changes:</h3>
+<ol>
+
+<p><li>
+FreeBSD systems are now built using the flags <b>-D_THREAD_SAFE</b> and
+<b>-pthread</b> instead of directly loading with the <b>-lc_r</b> library.
+
+<p><li>
+Linux systems are now built using the <b>-D_REENTRANT</b> flag.
+
+</ol>
+<h3>Additional Changes:</h3>
+<ol>
+
+<p><li>
+The default memory pool cache size has been increase from 128K to 256K.
+
+</ol>
+<h3>Additional Bug Fixes:</h3>
+<ol>
+
+<p><li>
+Freeing memory allocated by the TCL library historically failed on Windows
+platforms, due to a mismatch of malloc/free implementations between the
+TCL library and the Berkeley DB module. (This change only affects the
+Berkeley DB test suite.)
+
+</ol>
+
+</body>
+</html>
diff --git a/db/docs_src/ref/changelog/2.7.4.html b/db/docs_src/ref/changelog/2.7.4.html
new file mode 100644
index 000000000..e2d46e8a5
--- /dev/null
+++ b/db/docs_src/ref/changelog/2.7.4.html
@@ -0,0 +1,102 @@
+<!--"$Id: 2.7.4.html,v 1.4 2007/05/17 18:17:18 bostic Exp $ (Sleepycat) $Date: 2007/05/17 18:17:18 $"-->
+<html>
+<head>
+<title>The Berkeley DB Package: DB 2.7.4 Change Log</title>
+<meta name="description" content="Berkeley DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Berkeley DB 2.7.4 Change Log</h3>
+
+Berkeley DB version 2.7.4 is version 2.7.3 with a set of specific bug
+fixes applied. There were no interface changes or new features.
+
+<h3>Bug Fixes:</h3>
+<ol>
+
+<p><li>
+When looking for an already open log file, do not examine a filename
+structure if its reference count is 0. This problem cannot cause data
+corruption, but may cause program failure.
+
+<p><li>
+Berkeley DB recovery assumes that there are at least two checkpoints. It
+was possible for log archival to leave the recovery area with only a single
+checkpoint.
+
+<p><li>
+Version 2.7.3 could not recover version 2.4.14 log files.
+
+<p><li>
+Database file opens after recovery could sometimes fail.
+
+<p><li>
+If only a single checkpoint is found, perform recovery from the beginning
+of the log.
+
+<p><li>
+The Btree access method delete-by-key code path did not always detect that
+a key/data pair was also referenced by a cursor, which could cause a cursor
+to reference incorrect data.
+
+<p><li>
+Concurrent Data Store operations could sometimes fail because write
+cursors were not correctly identified.
+
+<p><li>
+The DB_SET_RANGE flag did not always correctly deal with on-page deleted
+records in the Btree access method.
+
+<p><li>
+If the buffer cache was completely dirty, transaction checkpoints could
+pin down too many buffers and cause other operations to fail.
+
+<p><li>
+In non-threaded applications, change cursors to share a locker ID in
+order to avoid self-deadlocks.
+
+<p><li>
+In the Btree access method, when creating a new record and specifying a
+<b>dbt.off</b> offset value, the DB_DBT_PARTIAL flag was not handled
+correctly.
+
+<p><li>
+It was possible for the last-known-LSN-on-disk to not be set correctly
+during recovery, which could cause the loss of recovery's checkpoint
+record.
+
+<p><li>
+Test suite change: generate fail message if environment open doesn't work.
+
+<p><li>
+Defend against the possibility that records from multiple log files are
+present in the log buffer cache.
+
+<p><li>
+Reclaim lockers when using lock_vec to release locks.
+
+<p><li>
+Re-order subsystem close when closing the environment so that the logging
+subsystem can potentially flush buffers through the shared memory buffer
+pool.
+
+<p><li>
+Never attempt to grow the shared regions when initially connecting to the
+Berkeley DB environment.
+
+<p><li>
+Invalidate the local transaction structure after commit, abort or prepare,
+as the XA transaction manager does not call xa_end on commit, abort or
+prepare.
+
+<p><li>
+Allow either join or resume operations on XA start.
+
+<p><li>
+Update the version numbers from Berkeley DB 2.7.3 to Berkeley DB 2.7.4.
+
+</ol>
+
+</body>
+</html>
diff --git a/db/docs_src/ref/changelog/2.7.5.html b/db/docs_src/ref/changelog/2.7.5.html
new file mode 100644
index 000000000..44eeafb14
--- /dev/null
+++ b/db/docs_src/ref/changelog/2.7.5.html
@@ -0,0 +1,38 @@
+<!--"$Id: 2.7.5.html,v 1.3 2007/05/17 18:17:18 bostic Exp $ (Sleepycat) $Date: 2007/05/17 18:17:18 $"-->
+<html>
+<head>
+<title>The Berkeley DB Package: DB 2.7.5 Change Log</title>
+<meta name="description" content="Berkeley DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Berkeley DB 2.7.5 Change Log</h3>
+
+Berkeley DB version 2.7.5 is version 2.7.4 with a set of specific bug
+fixes applied. There were no interface changes or new features.
+
+<h3>Bug Fixes:</h3>
+<ol>
+
+<p><li>
+When deleting a Btree key/data pair using the DB-&gt;del interface, there
+was a potential NULL pointer dereference.
+
+<p><li>
+Lockers were being left on locker chains under some circumstances,
+causing a potential resource leak.
+
+<p><li>
+XA cursors were not being linked into the database active queue.
+
+<p><li>
+Modify Berkeley DB recovery to work correctly in an XA environment.
+
+<p><li>
+Update the version numbers from Berkeley DB 2.7.4 to Berkeley DB 2.7.5.
+
+</ol>
+
+</body>
+</html>
diff --git a/db/docs_src/ref/changelog/2.7.7.html b/db/docs_src/ref/changelog/2.7.7.html
new file mode 100644
index 000000000..5ccaedb3a
--- /dev/null
+++ b/db/docs_src/ref/changelog/2.7.7.html
@@ -0,0 +1,51 @@
+<!--"$Id: 2.7.7.html,v 1.3 2007/05/17 18:17:18 bostic Exp $ (Sleepycat) $Date: 2007/05/17 18:17:18 $"-->
+<html>
+<head>
+<title>The Berkeley DB Package: DB 2.7.7 Change Log</title>
+<meta name="description" content="Berkeley DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Berkeley DB 2.7.7 Change Log</h3>
+
+Berkeley DB version 2.7.7 is version 2.7.5 with a set of specific bug
+fixes applied. There were no public interface changes or new features.
+
+<h3>Bug Fixes:</h3>
+<ol>
+
+<p><li>
+Fix potential races in updating checkpoint buffer counts that can
+cause checkpoint calls to never finish.
+<p><li>
+Fix for XA support, allows two-phase commit processing to work.
+<p><li>
+Fix a recovery bug when database files are opened/closed multiple times in
+the same session.
+<p><li>
+Change file descriptor usage to permit Sendmail's fcntl(2) locking scheme.
+<p><li>
+Fix ANSI C++ usage to avoid GNU gcc-2.95 warning messages.
+<p><li>
+If there are a sufficient number of threads competing for limited numbers
+of pages, it's possible to split Btree pages too many times, and cause a
+core dump.
+<p><li>
+Fix a case where it was possible for EAGAIN to not be returned from the
+database get-by-key interface.
+<p><li>
+Ignore log records not involved in transactions so that actions taken
+outside of transactions are not undone during recovery.
+<p><li>
+Fix a memory pool race during buffer discard in memory tight environments.
+</ol>
+
+<h3>Other Changes:</h3>
+<ol>
+<p><li>
+Update the Berkeley DB release version numbers from 2.7.5 to 2.7.7.
+</ol>
+
+</body>
+</html>
diff --git a/db/docs_src/ref/changelog/3.0.55.html b/db/docs_src/ref/changelog/3.0.55.html
new file mode 100644
index 000000000..8ba06775b
--- /dev/null
+++ b/db/docs_src/ref/changelog/3.0.55.html
@@ -0,0 +1,945 @@
+<!--"$Id: 3.0.55.html,v 1.5 2007/05/17 18:17:18 bostic Exp $ (Sleepycat) $Date: 2007/05/17 18:17:18 $"-->
+<html>
+<head>
+<title>The Berkeley DB Package: DB 3.0.55 Change Log</title>
+<meta name="description" content="Berkeley DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Berkeley DB 3.0.55 Change Log</h3>
+
+<h3>Database On-Disk Format Changes:</h3>
+<ol>
+<li>The on-disk Btree/Recno format has changed from version 6 to version
+7, and the on-disk Hash format has changed from version 5 to version 6.
+For information on upgrading database formats, see section 3.3, "Upgrading
+databases" in the Berkeley DB Reference Guide
+</ol>
+
+<h3>Major New Features:</h3>
+<ol>
+<li>A new Access Method has been added to Berkeley DB: the Queue Access
+Method. The Queue Access Method is similar to the Recno Access Method,
+but is implemented to provide significantly higher-concurrency
+queue-oriented append and consume operations.
+<li>Berkeley DB now supports multiple databases (subdatabases) per
+physical file.
+<li>Berkeley DB now supports standard POSIX pthread, UI thread and Solaris
+LWP mutexes.
+<li>Database creation and removal are now optionally transaction protected.
+<li>Berkeley DB now includes a complete Tcl API.
+<li>Berkeley DB now optionally creates dynamic shared libraries.
+</ol>
+
+<h3>Interface Changes:</h3>
+<ol>
+<li>The Berkeley DB interfaces have been reworked in the 3.0.55 release
+for two reasons. The goals were as follows: to make the Berkeley DB
+structures opaque so future releases of Berkeley DB can be binary
+compatible with each other, provide enhanced error checking and reporting
+during Berkeley DB environment and database configuration and creation,
+provide configurability throughout the lifetime of the environment and
+database, and to make the Berkeley DB interfaces consistent across the
+C++, C and Java APIs.
+
+<p>
+While the C API changes are extensive, they are also simple to understand.
+No functionality was removed. The changes required comparatively few
+modifications to the C++ and Java APIs, mostly limited to moving methods
+among classes and the addition of a new flag value to a few interfaces.
+For specific instructions on upgrading Berkeley DB 2.X applications to
+this release, see the "Upgrading Berkeley DB 2.X.X applications to
+Berkeley DB 3.0" chapter in the Berkeley DB Reference Guide.
+
+<p>
+The following individual changes are all part of this larger change.
+
+<h4>Function changes:</h4>
+<ol type=a>
+<li>The db_appinit and db_appexit functions have been replaced by the
+db_env_create function and the DBENV-&gt;open and DBENV-&gt;close methods. The
+db_open function has been removed, replaced by the db_create function and
+the DB-&gt;open method. Berkeley DB environments are now created using the
+db_env_create function followed by methods on the handle it returns.
+Berkeley DB databases are now created using the db_create function
+followed by methods on the handle it returns.
+
+<li>The lock_open, lock_close and lock_unlink functions have been
+replaced by the db_env_create function and the DBENV-&gt;open, DBENV-&gt;close
+and DBENV-&gt;remove methods. The remaining lock subsystem functions now
+take a DBENV handle as their first argument instead of a DB_LOCKTAB
+handle.
+
+<li>The log_open, log_close and log_unlink functions have been replaced
+by the db_env_create function and the DBENV-&gt;open, DBENV-&gt;close and
+DBENV-&gt;remove methods. The remaining log subsystem functions now take a
+DBENV handle as their first argument instead of a DB_LOG handle.
+
+<li>The memp_open, memp_close and memp_unlink functions have been replaced
+by the db_env_create function and the DBENV-&gt;open, DBENV-&gt;close and
+DBENV-&gt;remove methods. The remaining shared memory buffer pool functions
+now take a DBENV handle as their first argument instead of a DB_MPOOL
+handle.
+
+<li>The txn_open, txn_close and txn_unlink functions have been replaced
+by the db_env_create function and the DBENV-&gt;open, DBENV-&gt;close and
+DBENV-&gt;remove methods. The remaining transaction subsystem functions now
+take a DBENV handle as their first argument instead of a DB_TXNMGR handle.
+
+<li>The db_jump_set and db_value_set functions have been replaced by
+methods on the DBENV handle.
+
+<li>The db_xa_open routine has been replaced by a new flag, DB_XA_CREATE,
+which is passed to the db_create function.
+
+</ol>
+
+<h4>DBENV structure changes:</h4>
+<ol type=a>
+
+<li>The db_errcall, db_errfile, db_errpfx and db_paniccall fields of the
+DBENV structure have been deprecated and their functionality replaced by
+the DBENV-&gt;set_errcall, DBENV-&gt;set_errfile, DBENV-&gt;set_errpfx and
+DBENV-&gt;set_paniccall methods.
+
+<li>The db_verbose field of the DBENV structure has been replaced by the
+DBENV-&gt;set_verbose method.
+
+<li>The lk_conflicts, lk_detect, lk_max and lk_modes fields of the DBENV
+structure have been replaced by the DBENV-&gt;set_lk_conflicts,
+DBENV-&gt;set_lk_detect and DBENV-&gt;set_lk_max methods.
+
+<li>The lg_max field of the DBENV structure has been replaced by the
+DBENV-&gt;set_lg_max method.
+
+<li>The mp_mmapsize and mp_size fields of the DBENV structure have been
+replaced by the DBENV-&gt;set_cachesize and DBENV-&gt;set_mp_mmapsize methods.
+
+<li>The tx_info, tx_max and tx_recover fields of the DBENV structure have
+been replaced by the DBENV-&gt;set_tx_max and DBENV-&gt;set_tx_recover methods.
+
+<li>The (unused) DBENV-&gt;db_lorder field has been deleted.
+</ol>
+
+<h4>DB structure changes:</h4>
+<ol type=a>
+
+<li>The byteswapped field of the DB structure has been replaced by the
+DB-&gt;get_byteswapped method.
+
+<li>The db_errcall, db_errfile, db_errpfx and db_paniccall fields of the
+DB structure have been deprecated and their functionality replaced by the
+DB-&gt;set_errcall, DB-&gt;set_errfile, DB-&gt;set_errpfx and DB-&gt;set_paniccall
+methods.
+
+<li>The type field of the DB structure has been replaced by the
+DB-&gt;get_type method.
+</ol>
+
+<h4>DBINFO structure changes:</h4>
+<ol type=a>
+
+<li>The bt_compare field of the DB structure has been replaced by the
+DB-&gt;set_bt_compare method.
+
+<li>The bt_minkey field of the DB structure has been replaced by the
+DB-&gt;set_bt_minkey method.
+
+<li>The bt_prefix field of the DB structure has been replaced by the
+DB-&gt;set_bt_prefix method.
+
+<li>The db_cachesize field of the DB structure has been replaced by the
+DB-&gt;set_cachesize method.
+
+<li>The db_lorder field of the DB structure has been replaced by the
+DB-&gt;set_lorder method.
+
+<li>The db_malloc field of the DB structure has been replaced by the
+DB-&gt;set_malloc method.
+
+<li>The db_pagesize field of the DB structure has been replaced by the
+DB-&gt;set_pagesize method.
+
+<li>The dup_compare field of the DB structure has been replaced by the
+DB-&gt;set_dupcompare method.
+
+<li>The flags field of the DB structure has been replaced by the
+DB-&gt;set_flags method.
+
+<li>The h_ffactor field of the DB structure has been replaced by the
+DB-&gt;set_h_ffactor method.
+
+<li>The h_hash field of the DB structure has been replaced by the
+DB-&gt;set_h_hash method.
+
+<li>The h_nelem field of the DB structure has been replaced by the
+DB-&gt;set_h_nelem method.
+
+<li>The re_delim field of the DB structure has been replaced by the
+DB-&gt;set_re_delim method.
+
+<li>The re_len field of the DB structure has been replaced by the
+DB-&gt;set_re_len method.
+
+<li>The re_pad field of the DB structure has been replaced by the
+DB-&gt;set_re_pad method.
+
+<li>The re_source field of the DB structure has been replaced by the
+DB-&gt;set_re_source method.
+</ol>
+
+<p>
+<li>The use of the POSIX EAGAIN error return to indicate deadlock has been
+replaced with the Berkeley DB specific error DB_LOCK_DEADLOCK. Note: this
+change could potentially cause subtle errors. Programs must be updated or
+the Berkeley DB distribution altered for programs to run correctly. See
+the "Upgrading Berkeley DB 2.X.X applications to Berkeley DB 3.0" chapter
+in the Berkeley DB Reference Guide for more information.
+
+<li>The DB_RMW flag to the DB-&gt;cursor method has been renamed to be
+DB_WRITECURSOR (note, this change is applicable only to the Berkeley DB
+Concurrent Data Store product).
+
+<li>The DB_LOCK structure is no longer a simple integer value. For this
+reason, the DB_LOCK argument to the lock_put interface has been changed
+to be a reference to a DB_LOCK structure instead of the DB_LOCK structure
+itself.
+
+<li>The db_home argument to the environment creation function
+(historically db_appinit, now DBENV-&gt;open) now overrides the DB_HOME
+environment variable; this is necessary so that the -h option to the
+various Berkeley DB utilities can override the user's environment.
+
+<li>A mode argument was added to the environment creation function
+(historically db_appinit, now DBENV-&gt;open) to allow applications to
+specify the mode of files created in the Berkeley DB environment.
+
+<li>The DB_LOCKDOWN flag was added to enable applications to attempt to
+lock shared memory regions into physical memory.
+
+</ol>
+
+<h3>General Environment Changes:</h3>
+<ol>
+
+<li>A new flag has been added to the DBENV-&gt;open method, DB_SYSTEM_MEM.
+This flag causes Berkeley DB to attempt to allocate memory for its shared
+regions from system shared memory. This flag supports functionality
+similar to that previously provided by the DB_REGION_ANON and
+DB_REGION_NAME flags to the db_value_set interface.
+
+<li>A new flag has been added to the DBENV-&gt;open method, DB_PRIVATE. This
+flag causes Berkeley DB to attempt to allocate memory for its shared
+regions from the heap and to assume that only inter-thread mutexes are
+required, and not inter-process ones as well. This flag is a superset of
+the functionality previously provided by the DB_MPOOL_PRIVATE flag to the
+memp_open interface.
+
+<li>There is a new DBENV method, DBENV-&gt;remove, that removes entire
+Berkeley DB environments.
+
+<li>There are two new methods, DBENV-&gt;set_feedback and DB-&gt;set_feedback,
+that allow applications to specify a callback function that is to be
+called with periodic progress updates on various Berkeley DB operations.
+
+<li>There is a new DBENV method, DBENV-&gt;set_recovery_init, that allows
+applications to install application-specific recovery functions before
+Berkeley DB performs recovery.
+
+<li>There is a new DBENV method, DBENV-&gt;set_verbose, that allows
+applications to request verbose information from the Berkeley DB library.
+
+<li>The Berkeley DB 3.0.55 release includes enhanced functionality for
+reporting Berkeley DB returned errors. There are two new DBENV methods,
+DBENV-&gt;err and DBENV-&gt;errx, and two new DB methods, DB-&gt;err and DB-&gt;errx,
+which allow applications to format and report Berkeley DB error returns
+using any of the historic output channels. There is an additional
+function, db_strerror, which is a superset of the ANSI C standard strerror
+function, providing error strings for both the Berkeley DB errors and
+underlying system errors.
+
+<li>There is a new DBENV method, DBENV-&gt;set_lg_bsize, that allows
+applications to specify the size of the in-memory log buffer.
+
+<li>Reduce the number of file descriptors used to support fcntl locking
+from one-per-region to a single one.
+
+<li>Rename the filesystem representations of the Berkeley DB library's
+shared regions.
+
+<li>Rename temporary files created by Berkeley DB from just a printable
+representation of the process ID to "BDB" followed by a printable
+representation of the process ID.
+
+<li>Return an error if environment interfaces called without initial
+environment configuration.
+
+<li>Fix a bug where Concurrent Data Store accepted incorrect flags,
+for example, DB_RECOVERY.
+
+<li>Fix a bug where specifying any one-character directory in the
+db_config argument or other related configuration interface would fail.
+
+<li>Fix a bug where recovery could fail if only a single checkpoint
+had ever been written.
+
+<li>Fix a bug where threads could race when regions were grown. Because
+there exist systems where mutexes cannot be unmapped and then remapped
+back into application memory, the functionality to grow regions has been
+removed from the Berkeley DB 3.0.55 release. This means that selecting a
+correct initial region size (for example, based on the number of active
+transactions) is more important than before. To facilitate this, region
+high-water marks have been added to the region statistics where
+appropriate.
+
+</ol>
+
+<h3>General Access Method Changes:</h3>
+<ol>
+
+<li>There is a new DB method, DB-&gt;remove, that deletes a database in a
+transaction-protected operation.
+
+<li>There is a new DB method, DB-&gt;upgrade, that upgrades the on-disk
+format of an underlying database.
+
+<li>There is a new DB method, DB-&gt;set_realloc, that allows applications
+to specify a local memory reallocation function similarly to the
+previously available DB-&gt;set_malloc functionality.
+
+<li>The DB-&gt;open method supports a new flag, DB_EXCL, which behaves
+similarly to the POSIX O_EXCL system open call flag.
+
+<li>The Berkeley DB 3.0.55 release includes enhanced functionality for
+reporting Berkeley DB returned errors. There are two new DBENV methods,
+DBENV-&gt;err and DBENV-&gt;errx, and two new DB methods, DB-&gt;err and DB-&gt;errx,
+which allow applications to format and report Berkeley DB error returns
+using any of the historic output channels. There is an additional
+function, db_strerror, which is a superset of the ANSI C standard strerror
+function, providing error strings for both the Berkeley DB errors and
+underlying system errors.
+
+<li>The last two arguments to the DB-&gt;join method were reversed for
+consistency with the rest of the Berkeley DB interfaces taking cursor
+references and flags arguments.
+
+<li>A cursor duplication method has been added to the DBcursor handle.
+This method can be used to duplicate a cursor's transaction and locker
+ID, and, optionally, to duplicate its position in the database. This
+change adds useful functionality, and more importantly makes it possible
+to write
+applications that both use locking without transactions and have multiple
+cursors in the same thread of control.
+
+<li>There is a new DBT structure flag, DB_DBT_REALLOC, that allows
+threaded applications to re-use a single piece of memory for
+multiple Berkeley DB retrievals, similarly to the DB_DBT_MALLOC flag.
+
+<li>Enhance in-memory databases so that operations on them may be
+transaction protected. Fix a bug where specifying logging and
+transactions on an in-memory database could cause a core dump.
+
+<li>Change Berkeley DB recovery to not undo operations performed by
+logged, but not transaction protected operations.
+
+<li>Change Berkeley DB to no longer generate new locker IDs for every
+cursor in non-threaded environments to greatly reduce the possibility
+of self-deadlock.
+
+<li>Change the "dbopen" function in the Berkeley DB 1.85 compatibility
+API to "__dbopen185" so that we don't collide with the C library where
+the C library is version 1.85.
+
+<li>Fix multiple bugs where joins did not correctly work in the presence
+of unsorted duplicates or duplicate duplicates.
+
+<li>Fix an erroneous error message by removing diagnostic code which assumed
+that closing a cursor closed all locks held by the cursor locker ID.
+
+<li>Fix a bug in the default overflow comparison routine such that if the
+overflow comparison test failed because we ran out of key bytes, but were
+also on the last page of the overflow item, we would return equality even
+though there were remaining bytes in the overflow item.
+
+<li>Fix a bug where read-only databases were registered with the logging
+subsystem, causing Berkeley DB recovery to open and close them.
+
+<li>Fix a bug where it was (remotely) possible for a file registered with
+the logging subsystem to be incorrectly evaluated as not logging changes.
+
+<li>Fix a bug where the DBcursor-&gt;c_close method didn't correctly release
+locks in the Berkeley DB Concurrent Data Store product.
+
+<li>Fix a bug where the read-modify-write flag was set in the DB-&gt;put
+method when the database was not configured for locking.
+
+<li>Fix two bugs where the DB-&gt;join and DB-&gt;put methods assumed that the
+only possible error was DB_NOTFOUND, thus failing to return deadlock
+errors to the application.
+
+<li>Fix a bug where illegal flags to the DB-&gt;cursor method weren't caught.
+
+<li>Fix a bug where illegal flags to the DBcursor-&gt;c_get method weren't
+caught.
+
+<li>Fix a bug where the DB_NEXT_DUP flag could be specified with an
+uninitialized cursor.
+
+<li>Fix a bug where the DB-&gt;sync and DB-&gt;close methods did not return the
+DB_INCOMPLETE error if it occurred.
+
+<li>Fix a bug where off-page duplicate splits could cause cursors to be
+mis-positioned.
+
+<li>Fix a bug where partial puts of fixed-length records could cause
+data corruption.
+
+<li>Fix a set of potential bugs where the OSF/1 and gcc compilers will
+use instructions requiring alignment on unaligned data.
+
+<li>Fix multiple bugs with large numbers of duplicate records including
+large numbers of duplicate duplicate records.
+
+</ol>
+
+<h3>Btree Access Method Changes:</h3>
+<ol>
+
+<li>The on-disk Btree/Recno format has changed from version 6 to version 7,
+required due to a change in the database metadata page.
+
+<li>The Btree cursor routines have been rewritten to use the new cursor
+duplicate functionality. This fixed a couple of bugs where specific
+sequences of database operations could cause the cursor to become
+mis-positioned in the database and made it less likely that similar bugs
+can be introduced in the future.
+
+<li>Applications may now optionally turn off reverse-splitting in Btree
+databases.
+
+<li>Btree split operations have been reworked to acquire the metadata page
+lock last, and only if the split is going to succeed. This significantly
+increases the possible level of concurrency in small databases.
+
+<li>Fix a bug where database corruption could occur if enough threads
+writing to a small database all schedule page splits.
+
+<li>Fix a bug where the DB_SET_RANGE option could return an already
+deleted on-page duplicate record to the application.
+
+<li>Fix a bug where an application could core dump if deadlock occurred
+during cursor close.
+
+<li>Fix a bug where applications with high-concurrency requirements could
+encounter races.
+
+<li>Fix a bug where read serializability was incorrect.
+
+<li>Fix a bug where records of the wrong endian-ness were not correctly
+imported.
+
+<li>Fix a bug where an application's cursor could be mis-positioned if
+a split failed unexpectedly.
+
+<li>Fix a bug where the DB_SET_RECNO, DB_SET and DB_GET_BOTH flags
+could potentially return inexact matches under some circumstances.
+
+<li>Fix a bug where searches could potentially leave pages in the
+database locked.
+
+<li>Fix a bug where deleted records could potentially be left in the
+database after all cursors were closed.
+
+<li>Fix a bug where deleting the last duplicate entry on a page could
+cause an application core dump.
+
+<li>Fix a bug where a page lock could be incorrectly discarded when
+moving through on-page duplicate items.
+
+<li>Fix a bug where retrieval of a specific duplicate data item could
+cause a core dump.
+
+<li>Fix a bug where DB_CURRENT could erroneously release the cursor's
+page lock.
+
+<li>Fix a bug where the DB-&gt;del interface to a Btree database could leave
+a cursor mis-positioned under some circumstances.
+
+<li>Fix a memory leak when using the DB-&gt;del interface to delete records.
+
+<li>Fix a bug where specifying the DB_DBT_PARTIAL flag and a dbt.off value
+when creating a new record included garbage in the record.
+
+<li>Fix a bug where Btree statistics did not correctly account for
+overflow and off-page duplicate pages.
+
+<li>Fix a bug where Btree statistics could fail and leave database
+pages locked.
+
+<li>Fix a bug where page LSNs could be lost during recovery of a page
+split.
+
+<li>Fix a bug where empty pages in big-endian databases were not
+always correctly converted.
+
+<li>Fix a bug where previously deleted records could be accessed on
+the page, leading to potentially incorrect behavior.
+
+<li>Fix a bug where on-page duplicates could be corrupted when reading
+non-native-endian databases.
+
+</ol>
+
+<h3>Hash Access Method Changes:</h3>
+<ol>
+
+<li>The on-disk Hash format has changed from version 5 to version 6,
+required due to a change in the database metadata page.
+
+<li>In order to allow hash databases as subdatabases, hash will allocate
+groups of contiguous pages. This may cause some hash databases to appear
+much larger than they actually are (that is, they will be sparse files).
+
+<li>Statistics, returned by the DB-&gt;stat method, have been added to the
+Hash Access Method.
+
+<li>Fix a bug where initial access of a duplicate data item could cause
+future access of other items to fail.
+
+<li>Fix a bug where puts or deletes could cause cursors on the same page to
+reference incorrect entries.
+
+<li>Fix a bug where partial gets from on-page duplicates could be wrong.
+
+<li>Fix a set of bugs where error paths could lead to application failure.
+
+<li>Fix a set of bugs where cursors could be mis-positioned after operations
+on off-page duplicates or off-page duplicates could be stored in incorrect
+sorted order.
+
+<li>Fix a bug where overwriting duplicate items could fail.
+
+<li>Fix a bug where an error return value could be overwritten when
+releasing the metadata page.
+
+</ol>
+
+<h3>Queue Access Method Changes:</h3>
+None.
+
+<h3>Recno Access Method Changes:</h3>
+<ol>
+
+<li>Support read-only backing source files for Recno databases.
+
+<li>Fix a bug where accessing the backing source filename could find
+incorrect information or cause a core dump.
+
+<li>Fix a bug where the length of fixed-length Recno records were not
+correctly byte-swapped during database load.
+
+<li>Fix a set of related bugs where the DB_DBT_PARTIAL flag was
+incorrectly handled when manipulating fixed-length records.
+
+<li>Fix a bug where the key created by the DB_AFTER and DB_BEFORE operations
+was not correctly returned.
+
+<li>Fix a set of related bugs where certain sequences of operations could
+leave application cursors mis-positioned.
+
+<li>Fix a bug where deleting the last record in a database could leave an
+application cursor mis-positioned.
+
+<li>Fix a bug where DB_APPEND returned an error instead of appending to
+the database.
+
+<li>Fix a bug where specifying the DB_CURRENT, DB_FIRST or DB_NEXT flags
+could fail because insufficient records had been read from the backing file.
+
+<li>Fix a bug where page splits could result in an incorrect previous
+page pointer.
+
+<li>Fix a bug where the DB_GET_BOTH flag was permitted for Recno, which
+does not support it.
+
+</ol>
+
+<h3>C++ API Changes:</h3>
+<ol>
+<li>Remove the DbLockTab, DbLog, DbMpool and DbTxnMgr classes, moving
+their methods to the DbEnv class.
+
+<li>Replace the set_error_model method with the DB_CXX_NO_EXCEPTIONS flag
+to the DbEnv class constructor.
+
+<li>Added constructor with a single flag argument for DbEnv and Db.
+Added (nonstatic) open methods to DbEnv, Db.
+
+<li>Methods (such as DbLock::put) that used to have a DbMpool, DbLockTab,
+DbLog, or DbTxnMgr pointer argument, now take a DbEnv pointer argument.
+
+<li>Added DbEnv::set_feedback(), DbEnv::set_recovery_init().
+
+<li>Added DbEnv::strerror(), DbEnv::err(), DbEnv::errx()
+
+<li>Added BtrecExample, a Btree record example.
+
+<li>Fix a bug where the error model was not set before the initial
+environment was opened.
+
+</ol>
+
+<h3>Java API Changes:</h3>
+<ol>
+
+<li>Remove the DbLockTab, DbLog, DbMpool and DbTxnMgr classes, moving
+their methods to the DbEnv class.
+
+<li>Added constructor with a single flag argument for DbEnv and Db.
+Added (nonstatic) open methods to DbEnv, Db.
+
+<li>Methods (such as DbLock.put) that used to have a DbMpool, DbLockTab,
+DbLog or DbTxnMgr argument, now take a DbEnv argument.
+
+<li>Added DbEnvFeedback, DbRecoverInit interfaces that are used as 'callbacks'
+with DbEnv.set_feedback(), DbEnv.set_recovery_init().
+
+<li>Added DbEnv.strerror(), DbEnv.err(), DbEnv.errx()
+
+<li>Added DbDeadlockException, DbMemoryException classes to allow catching of
+more specific errors.
+
+<li>Added DbHashStat class.
+
+<li>Added BtrecExample, a Btree record example.
+
+<li>Updated AccessExample to illustrate technique of subclassing from Dbt
+to handle arbitrary data types, in this case to create a StringDbt class.
+
+</ol>
+
+<h3>Tcl API Changes:</h3>
+None.
+
+<h3>XA Resource Manager Changes:</h3>
+<ol>
+<li>Fix a bug where it was possible to specify both JOIN and RESUME to
+the XA start interface.
+
+<li>Fix a bug where the current txn ID was not invalidated after
+commit/prepare/abort, as the resource manager process does not call
+xa_end.
+
+<li>Fix a bug where the TMRESUME and TMONEPHASE flags were incorrectly
+checked in the xa_start interface.
+
+</ol>
+
+<h3>Locking Subsystem Changes:</h3>
+<ol>
+
+<li>The lock_detect interface has been modified to optionally return a
+count of the number of deadlocks broken.
+
+<li>The lock_detect routine has been modified to break as many deadlocks
+as possible during each run instead of returning after breaking a single
+deadlock.
+
+<li>The lock subsystem lock_put and lock_vec calls will no longer return
+DB_LOCK_NOTHELD or EACCES errors under any circumstances to indicate that
+a lock was held by another locker.
+
+<li>The lock_stat function now returns the following additional information:
+<ul><ol type=a>
+<li>st_lock_id: The last allocated lock ID.
+<li>st_maxnlockers: The maximum lockers at any one time.
+</ol></ul>
+The lock_stat function no longer returns the following information:
+<ul><ol type=a>
+<li>st_magic: The magic number that identifies a file as a lock file.
+<li>st_numobjs: The number of unique objects locked.
+<li>st_refcnt: The number of references to the region.
+<li>st_version: The version of the lock file type.
+</ol></ul>
+
+<li>Lock IDs are now allowed to wrap, rather than being limited to two
+billion.
+
+<li>Fix a bug in lock detection where it was possible to lose track of
+lockers.
+
+<li>Fix a bug where all locks held on an object were not necessarily
+released when DB_LOCK_PUT_OBJ was requested.
+
+<li>Fix a bug where the lock subsystem did not detect a lock conflict if
+there was no transaction.
+
+<li>Fix a bug where lock_detect could treat the DB_LOCK_OLDEST and
+DB_LOCK_YOUNGEST flags as semantically equivalent.
+
+<li>Fix a bug where locks waiting on an aborted lock were not correctly
+promoted at the time of the abort.
+
+<li>Fix a bug where committing a child that held no locks was treated
+as an error.
+
+<li>Fix a bug where deadlock detection was done incorrectly in the case
+of transactions with nested children.
+
+<li>Fix a bug where parent transactions which had never obtained locks
+were incorrectly handled when child transactions committed.
+
+<li>Fix a bug where the library could dump core if multiple deadlock
+detectors were running simultaneously.
+
+</ol>
+
+<h3>Logging Subsystem Changes:</h3>
+<ol>
+
+<li>The log_register function no longer takes a DBTYPE argument.
+
+<li>Open log files with the Windows FILE_FLAG_WRITE_THROUGH flag
+on Windows systems that support it.
+
+<li>Make verbose message "Finding last valid log LSN" optional based
+on the DBENV-&gt;set_verbose method.
+
+<li>Modify log to not attempt to allocate unreasonably large buffers
+when reading garbage from the log.
+
+<li>Modify log_register to re-use file identifiers to avoid running
+out in applications that repeatedly open and close files.
+
+<li>The log_stat function now returns the following additional information:
+<ul><ol type=a>
+<li>st_lg_bsize: The in-memory log record cache size.
+<li>st_wcount: The number of times the log has been written to disk.
+<li>st_wcount_fill: The number of times the log has been written to disk
+because the in-memory log record cache filled up.
+</ol></ul>
+The log_stat function no longer returns the following information:
+<ul><ol type=a>
+<li>st_refcnt: The number of references to the region.
+</ol></ul>
+
+<li>Fix a bug where the last-known-LSN-on-disk wasn't being set correctly,
+causing the next log_flush call to decide not to flush the current
+contents of the buffer to disk, and losing the recovery checkpoint record.
+
+<li>Fix a bug where recovery was not returning the next-to-last checkpoint,
+rather it always returned the last checkpoint.
+
+<li>Fix a number of related bugs in file registry, that could lead to
+crashes during recovery in applications that repeatedly created, opened
+and closed files.
+</ol>
+
+<h3>Buffer Pool Subsystem Changes:</h3>
+<ol>
+
+<li>The Berkeley DB 3.0.55 release still limits the buffer pool to a 4GB
+cache. However, the method for setting the Berkeley DB buffer cache size,
+DBENV-&gt;set_cachesize, has been changed to allow applications to specify
+cache sizes larger than 4GB, in preparation for relaxing that limitation.
+In addition, applications may specify that multiple pieces of shared
+memory are to be used to create the cache, for architectures that do not
+support 4GB chunks of contiguous shared memory.
+
+<li>Add a new semantic for memp_sync, if the LSN argument is NULL, flush
+the entire buffer cache.
+
+<li>The DB_MPOOL_PRIVATE flag to the db_appinit and memp_open functions
+has been removed, replaced by the DB_PRIVATE flag to the DBENV-&gt;open
+method.
+
+<li>The memp_stat function no longer returns the following information:
+<ul><ol type=a>
+<li>st_refcnt: The number of references to the region.
+</ol></ul>
+
+<li>Allow for OS-specific functions that preallocate pages in files since
+non-POSIX systems (read as "Windows") will give you garbage in the middle
+of a file (let's talk about security).
+
+<li>Fix a bug where transaction checkpoint could pin down the entire
+buffer cache, starving requests for new buffers.
+
+<li>Fix a bug where systems with large POSIX pthread structures could
+allocate too little memory for the default pool.
+
+<li>Fix a bug where highly concurrent systems could end up with incorrect
+buffers-to-flush counts during cache syncs.
+
+<li>Fix a bug where the wrong page number could be used when allocating
+new pages.
+
+</ol>
+
+<h3>Transaction Subsystem Changes:</h3>
+<ol>
+
+<li>The txn_begin function now takes a flag parameter. This allows
+specification of synchronous or asynchronous log flushing behavior on a
+per-transaction basis during begin. Applications may also specify a flag
+that causes Berkeley DB to return an error immediately if any lock is
+unavailable, rather than waiting for the lock.
+
+<li>The txn_commit function now takes a flag parameter. This allows
+specification of synchronous or asynchronous log flushing behavior on a
+per-transaction basis during commit.
+
+<li>The txn_stat function now returns the following additional information:
+<ul><ol type=a>
+<li>st_maxnactive: The maximum number of active transactions at any one time.
+<li>parentid: The st_txnarray structure includes a new field, parentid,
+which is the transaction ID of the parent transaction (or 0, if no
+parent).
+</ol></ul>
+The txn_stat function no longer returns the following information:
+<ul><ol type=a>
+<li>st_refcnt: The number of references to the region.
+</ol></ul>
+
+<li>Do not complain about "missing files" during recovery if no operations
+were performed on the file.
+
+<li>Free the recovery dispatch table after recovery has completed.
+
+<li>Fix a bug where it was possible to overwrite the checkpoint LSN
+during checkpoint.
+
+<li>Fix a bug where an uncommitted child TXN was not committed when its
+parent TXN committed.
+
+<li>Fix a bug where nested transactions could be undone in an incorrect
+order in the presence of parents making modifications to pages already
+modified by the child.
+</ol>
+
+<h3>Utility Changes:</h3>
+<ol>
+
+<li>Change the output of the db_dump utility to support subdatabases.
+The db_load utility supports both the old and new input formats of
+the db_dump utility.
+
+<li>Add the -k option to the db_dump utility to support dumping Queue and
+Recno databases without altering their key values.
+
+<li>Add the -l and -s options to the db_dump utility to support
+subdatabases.
+
+<li>Modify the -d option to the db_dump utility to support different
+output formats as part of recovery testing.
+
+<li>Modify the -N option for utilities supporting it to not only not
+acquire Berkeley DB mutexes, but to also ignore any other potentially
+fatal errors or corruption.
+
+<li>Add the -e option to db_stat, to display per-environment statistics.
+
+<li>Add the -s options to the db_stat utility to support subdatabases.
+
+<li>The db_stat utility will now print out page or record numbers when
+displaying lock information for locks obtained by the access methods.
+
+<li>Fix a bug where db_stat could drop core if called incorrectly.
+
+<li>Fix a bug where db_recover would force regions to be created at the
+default size instead of the size requested by the application.
+
+<li>Fix bugs where the db_checkpoint and db_deadlock utilities incorrectly
+wrote their process IDs to their log files.
+
+<li>Fix bugs where some of the Berkeley DB provided utilities had
+inconsistent POSIX signal handling. Block SIGPIPE on applicable systems
+in case the utility output is being piped to another process.
+</ol>
+
+<h3>Configuration, Documentation, Portability and Build Changes:</h3>
+
+<ol>
+
+<li>The documentation has been extensively rewritten and enhanced, in
+particular, the Berkeley DB Reference Guide has been completed.
+
+<li>The University of California, Berkeley copyright clause relating to
+acknowledgement within advertising materials has been deleted from the
+Berkeley DB copyrights.
+
+<li>Berkeley DB now optionally builds dynamic shared libraries, see the
+--enable-dynamic configuration option for more information.
+
+<li>Add support on Windows for sharing files in system-specific way
+supporting the new DB_SYSTEM_MEM.
+
+<li>The Windows/3.1 support has been removed from the distribution.
+
+<li>Java support has been integrated in the project file that is part of
+the Visual C++ workspace.
+
+<li>Java support has been integrated into the standard build Makefile.
+
+<li>Changed DLL names to use conventions like libdb30d.dll. Debug vs.
+release libraries and different release numbered libraries can now be
+distinguished.
+
+<li>The Solaris/Sparc V9 platform has 8-byte dev_t, ino_t and time_t
+values, which required the database file unique ID to be rewritten.
+
+<li>The configuration include file for Berkeley DB has been renamed from
+"config.h" to "db_config.h" to minimize the potential for name collision
+with other packages.
+
+<li>Some C++ operator=() methods that did not have a return type now have
+return type void.
+
+<li>Allow for different JNI's implementation of AttachCurrentThread().
+
+<li>Multiple changes to make it easier for applications to use the
+Berkeley DB recovery infrastructure to accomplish recovery of their
+own objects.
+
+<li>Separate out the Berkeley DB distribution script that creates the log
+marshalling/unmarshalling layer source code so that it can be called
+separately by application-specific logging code.
+
+<li>Add a file to the build_unix subdirectory, some Linux releases have
+archive exploders that will not extract directories containing only
+symbolic links.
+
+<li>The external variable errno support has been extracted out of the main
+library source code, and is now encapsulated in a single source file.
+
+<li>Rename the getlong() subroutine to __db_getlong() to eliminate a
+potential namespace collision.
+
+<li>Replace all "int" file descriptors with system-independent file
+handle structures.
+
+<li>The db_jump_set interface has be replaced with methods on the DBENV
+handle.
+
+<li>The db_value_set interface has be replaced with methods on the DBENV
+handle.
+
+<li>The Berkeley DB test suite has been rewritten to match the new Tcl API,
+and a large number of new tests have been added.
+
+<li>All SCCS Ids yanked to 11.X and copyrights updated to include 1999.
+
+<li>Add Gcc/Alpha assembly mutex support.
+
+<li>Add guard-byte support for allocated memory when DIAGNOSTIC #defined.
+
+<li>Fix a bug in ndbm compatibility API code to correct for the O_WRONLY flag.
+
+<li>Fix a bug in the OS layer where the return of the lseek() call could
+be cast to an int.
+
+</ol>
+
+</body>
+</html>
diff --git a/db/docs_src/ref/changelog/3.1.14.html b/db/docs_src/ref/changelog/3.1.14.html
new file mode 100644
index 000000000..b41a99f35
--- /dev/null
+++ b/db/docs_src/ref/changelog/3.1.14.html
@@ -0,0 +1,300 @@
+<!--"$Id-->
+<html>
+<head>
+<title>The Berkeley DB Package: DB 3.1.14 Change Log</title>
+<meta name="description" content="Berkeley DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Berkeley DB 3.1.14 Change Log</h3>
+
+<h3>Database On-Disk Format Changes:</h3>
+<ol>
+<li>The on-disk Btree/Recno format has changed from version 7 to version
+8, and the on-disk Hash format has changed from version 6 to version 7.
+For information on upgrading database formats, see "Upgrading Applications
+to the 3.1 release" in the Berkeley DB Reference Guide for more
+information.
+</ol>
+
+<h3>Major New Features:</h3>
+<ol>
+
+<li>Berkeley DB now includes support for VxWorks systems.
+<li>Off-page duplicates now stored in an on-disk B+tree structure,
+greatly speeding searches in sorted duplicate sets. In addition,
+a count of duplicate items is now maintained for all duplicate sets,
+providing better optimization of logical joins. [#303]
+<li>New cursor method, DBcursor-&gt;c_count, that returns the number of
+duplicate items associated with the referenced key. [#303]
+<li>Berkeley DB now includes a RPC-based client/server implementation. [#426]
+<li>Recovery to a specified time is supported. [#855]
+<li>New cursor method, DB-&gt;verify, that supports database verification
+and salvage. [#588, #827, #1156]
+<li>Add a Berkeley DB method to rename databases. [#1492]
+<li>Significantly increased verbose error output for debugging support. [#1866]
+
+</ol>
+<h3>Interface Additions and Changes:</h3>
+<ol>
+
+<li>All of the Berkeley DB utilities now support the -V option to display
+the library version.
+<li>It is now possible to set almost all the Berkeley DB environment
+configuration options in the environment's DB_CONFIG file. There are new
+DB_ENV handle methods for setting the database directory, logging
+directory and temporary file directory. These were previously set using
+the DB_DATA_DIR, DB_LOG_DIR and DB_TMP_DIR strings in the config argument
+to the DB_ENV-&gt;open and DB_ENV-&gt;remove methods. As part of this change,
+the config argument to the DB_ENV-&gt;open and DB_ENV-&gt;remove methods has
+been removed in favor of the new methods.
+<li>Add a private field to the DBT structure, enabling applications to
+pass private information into the Btree/Hash comparison/hashing functions.
+<li>Change the redo parameter of the function passed to the
+DBENV-&gt;set_tx_recover interface used to be an integer set to any one
+of a number of #defined values. The <b>redo</b> parameter has been
+replaced by the <b>op</b> parameter, an enumerated type. [#606]
+<li>Add support for a new DBcursor-&gt;c_get flags, DB_NEXT_NODUP
+(DB_PREV_NODUP), which return the next (previous) key/data pair where the
+data item is not a duplicate of the current key. [#887, #1985]
+<li>Modify the DB-&gt;put interface, when using the DB_APPEND flag, to
+support DBT conventions. [#1523]
+<li>Add DB_NODUPDATA option to the DB-&gt;put and DBcursor-&gt;c_put
+methods to disallow duplicate duplicates. [#1866]
+<li>Add a fast return of approximate row counts for all access methods,
+add separate key and data statistics for the Hash access method.
+Regularize the naming scheme for all statistics. [#1978]
+<li>Move application-wide configuration interfaces from DbEnv method
+set to static function interfaces. [#2245]
+
+</ol>
+<h3>General Environment Changes:</h3>
+<ol>
+
+<li>It is now possible to build and run Berkeley DB on systems that do
+not have either of the mmap(2) or shmget(2) interfaces.
+<li>Take two checkpoints after recovery completes so that on next recovery
+no work needs to be redone. [#1316]
+<li>Fix a bug where, if DIAGNOSTIC was #defined, recovery could incorrectly
+assert that no files should be open and drop core. [#1316]
+<li>Fix a bug where recovering from deleting a page in a database could
+cause other operations to not be rolled-forward. [#1532]
+<li>Fix a bug where HP-UX msemaphore semaphores could cause mutex races
+on HP-UX 10.XX. [#2199]
+
+</ol>
+<h3>General Access Method Changes:</h3>
+<ol>
+
+<li>Add support for zero-length keys. [#625]
+<li>Fix a bug where join cursors were not automatically closed when the
+primary DB handle was closed. [#1325]
+<li>Fix a bug where the DB-&gt;remove method of an entire database would create
+a backup file even if the application wasn't running with transactions; the
+backup files were never removed. [#1357]
+<li>Fix a bug where when adding a new page in a chain of duplicates the
+LSN of a page could be unnecessarily updated, confusing recovery. [#1412]
+<li>Fix a bug where creating a subdatabase ignored the specification of
+a non-standard page size. [#1422]
+<li>Fix a bug where join cursors didn't correctly support DB_DBT_XXX
+flags. [#1639]
+<li>Fix bugs in join cursor handling of DBTs, and associated memory leaks.
+[#1777, #1929, #1940]
+<li>Change error return for duplicate duplicates from EINVAL to
+DB_KEYEXIST. [#1866]
+<li>Fix a bug where DB handles opened in threaded environments were not
+themselves automatically threaded. [#1943]
+<li>Fix a bug where the DB-&gt;remove method could leak memory. [#2066]
+
+</ol>
+<h3>Btree Access Method Changes:</h3>
+<ol>
+
+<li>Increase the accuracy of the returned statistics count for Btree key
+and data items.
+<li>Fix a bug where the next page in the leaf page chain might not be
+updated during recovery. [#1320]
+<li>Fix a bug where Btrees supporting retrieval by record number could
+become corrupted for some data sets. [#1663]
+<li>Fix a bug where Btrees supporting retrieval by record number could
+have incorrect record counts after reverse splits. [#1688]
+<li>Fix a bug where keys stored as overflow items could be incorrectly
+compared. [#1994]
+
+</ol>
+<h3>Hash Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug where partial puts in the hash access method could lead to
+heap corruption. [#1300]
+<li>Fix a bug where duplicate data items were not correctly identified
+during logging and could be incorrectly restored during recovery. [#1377]
+
+</ol>
+<h3>Queue Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug where an invalid lock was acquired when duplicating a cursor
+in Concurrent Data Store.
+<li>Fix a bug where EAGAIN could be returned instead of DB_LOCK_DEADLOCK.
+[#1354]
+<li>Fix a bug where the Queue Access Method could drop core if a put
+operation failed. [#1449]
+<li>Fix a bug where user requests for non-blocking locks were ignored. [#1970]
+
+</ol>
+<h3>Recno Access Method Changes:</h3>
+
+<blockquote>None.</blockquote>
+
+<h3>C++ API Changes:</h3>
+<ol>
+
+<li>Fix a large number of warnings and portability problems for various
+C++ compilers.
+<li>Add "void" type to operator = in all examples for portability.
+<li>Fix a bug where the DB_CXX_NO_EXCEPTIONS in the Db constructor was
+causing immediate failure of the call. [#1350]
+<li>Fix problems with disposing of Db and DbEnv objects: the underlying
+DB, DB_ENV objects were looked at after a close(), which is illegal,
+since the memory is freed. And in the case where Db::Db() is called
+with a NULL DbEnv, we create our own DbEnv object, and this was not
+being deleted on close(). [#1466, #1467, #1468]
+<li>Fix a bug where Db::remove and Db::upgrade were specified 'static'. [#1469]
+<li>Fix a bug where memory freed during open/close was written to in the
+destructor. [#1889]
+<li>Fix a bug where Db::close and DbEnv::close and their associated
+destructors interacted wrongly. [#1998]
+
+</ol>
+<h3>Java API Changes:</h3>
+<ol>
+
+<li>Fix a bug where, when building with versions 1.1.* of the JDK, an
+explicit reference for the CLASSPATH prevented compilation from within
+MS Visual studio. [#1334]
+<li>Avoid using true/false as they aren't recognized by older C++ systems
+(in this case, SPARC Solaris 2.6 with Sun Workshop 4.2). [#1384]
+<li>Fix a bug where Java could fail to run on Solaris due to memory
+allocation issues with shared libraries. [#1384]
+<li>Rewrite the Java API in C for portability reasons (it was previously
+implemented in C++). [#1384]
+
+</ol>
+<h3>Tcl API Changes:</h3>
+<ol>
+
+<li>The -mpool option to the berkdb env command is now the default.
+<li>The -txn option to the berkdb env command now implies the -lock and -log
+options.
+
+</ol>
+<h3>RPC Client/Server Changes:</h3>
+<blockquote>None.</blockquote>
+
+<h3>XA Resource Manager Changes:</h3>
+<ol>
+
+<li>Fix a bug where returned XID fields (currently unused by Tuxedo) were
+being incorrectly zeroed. [#1840]
+
+</ol>
+<h3>Locking Subsystem Changes:</h3>
+<ol>
+
+<li>Lock objects with waiters are now separately threaded to make deadlock
+detection faster. [#1983]
+<li>Fix a bug where locks could be leaked if the DB_LOCK_NOWAIT flag was
+specified and the lock was already held. [#2072]
+<li>Add a count of the lock requests that failed because DB_LOCK_NOWAIT
+was set to the lock region statistics. [#2072]
+
+</ol>
+<h3>Logging Subsystem Changes:</h3>
+<ol>
+
+<li>Fix a bug where logging print routines displayed file IDs as unsigned
+values instead of signed values.
+<li>Change the Windows/NT release to no longer pre-allocate logfiles.
+[#849, #1780]
+<li>Fix a bug where if you attempt to do catastrophic recovery on a log
+that spans a crash you can get errors of the form "open: invalid
+argument". [#1365]
+<li>Fix a bug where the DB_ARCH_LOG flag to the log_archive interface
+could fail to return the correct set of log filenames. [#1426]
+<li>Fix a bug where free'd memory could be accessed in an error path. [#2053]
+
+</ol>
+<h3>Buffer Pool Subsystem Changes:</h3>
+<ol>
+
+<li>Fix a bug where Berkeley DB could fail when too many databases were
+created in an environment. [#1528]
+
+</ol>
+<h3>Transaction Subsystem Changes:</h3>
+<ol>
+
+<li>Fix a number of bugs in DB file registration that could cause problems
+if files were repeatedly opened and closed. [#1943]
+<li>Remove all requirements that applications flush the log before closing
+the environment to ensure that no additional work needs to be done during
+recovery. [#2006]
+<li>Fix a bug where an unthreaded DB handle could be incorrectly used in
+a threaded environment, during recovery. [#2033]
+
+</ol>
+<h3>Utility Changes:</h3>
+<ol>
+
+<li>Convert the supporting utilities to use common code for signal
+and process-ID log file handling. [#1596]
+
+</ol>
+<h3>Configuration, Documentation, Portability and Build Changes:</h3>
+<ol>
+
+<li>Upgrade to the current Perl BerkeleyDB and DB_File modules.
+<li>Upgrade to the current Scriptics Tcl release (8.3), add the --with-tcl
+option to automatically use the tclConfig.sh information to correctly
+compile the Tcl API and test suite.
+<li>Upgrade to current versions of libtool (1.3.4), autoconf and the
+config scripts.
+<li>Update the test suite to no longer require a large set of UNIX
+utilities to run.
+<li>Convert to CVS/RCS source repository and file revision Ids.
+<li>Include Windows 2000 support.
+<li>Support systems without strtoul(3) support. [#1337]
+<li>Fix a bug where the DB 1.85 API interface was incorrectly named, so
+configuration scripts wouldn't find "dbopen" and applications wouldn't
+load. [#1345]
+<li>Fix a bug where AIX wouldn't compile because there was no MUTEX_INIT
+macro for the test-and-set mutexes. [#1354]
+<li>Fix a bug where Berkeley DB incorrectly aligned memory from the shared
+memory regions for gcc on the UltraSparc. [#1395, #1404]
+<li>Fix a bug where DB did not correctly build on the Siemens Nixdorf
+Reliant Unix because the initspin() function was expected to return an
+int. [#1418]
+<li>Fix a bug where DB would fail on HP-UX, apparently the HP-UX C library
+contains pread/pwrite symbols, but they don't work. [#1459]
+<li>Call GetTempDir() to determine system's temp directory on Windows. [#1478]
+<li>Fix a case where large buffers could be allocated on the stack when
+running on Windows, leading to stack resource starvation in multithreaded
+programs. [#1530]
+<li>Fix a bug where DB would fail to compile on AIX because of a missing
+MUTEX_INIT definition. [#1561]
+<li>Fix a bug where out-of-memory condition when scanning a directory failed
+to close the directory. [#1872]
+<li>Remove all use of signal functions. [#1964]
+<li>Fix a bug where the POSIX fcntl system call would be called even after
+the underlying Berkeley DB open call had been replaced by the application.
+[#2114]
+<li>Fix a bug where the standard free routine was still called when finishing
+a directory scan, even after the application had replaced the underlying OS
+functionality. [#2115]
+
+</ol>
+
+</body>
+</html>
diff --git a/db/docs_src/ref/changelog/3.1.17.html b/db/docs_src/ref/changelog/3.1.17.html
new file mode 100644
index 000000000..50cf9b07a
--- /dev/null
+++ b/db/docs_src/ref/changelog/3.1.17.html
@@ -0,0 +1,213 @@
+<!--$Id: 3.1.17.html,v 1.4 2007/05/17 18:17:18 bostic Exp $-->
+<html>
+<head>
+<title>The Berkeley DB Package: DB 3.1.17 Change Log</title>
+<meta name="description" content="Berkeley DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Berkeley DB 3.1.17 Change Log</h3>
+
+<h3>Database On-Disk Format Changes:</h3>
+
+<blockquote>None.</blockquote>
+
+<h3>Major New Features:</h3>
+
+<blockquote>None.</blockquote>
+
+<h3>Interface Additions and Changes:</h3>
+<ol>
+
+<li>The documentation for DB-&gt;set_feedback stated that the third
+argument to the callback function is "the percent of the operation
+remaining to be completed, specified as an integer value between 0 and
+100", implying that it's a countdown from 100 to 0. The actual
+implementation was to count upward from 0 to 100. The documentation
+has been changed to match the code. [#2310]
+
+</ol>
+<h3>General Environment Changes:</h3>
+<ol>
+
+<li>Fix a bug where attempts to remove a region never returned. [#2379]
+<li>Fix a typo in the freeing of the shared log region. [#2379]
+<li>Remove the requirement that all threads of control using System V
+shared memory for regions specify the base segment ID [#2379]
+<li>Fix a bug where applications using different sets of regions in an
+environment would fail when using System V shared memory for the regions.
+[#2379]
+<li>Fix a bug where the DB_USE_ENVIRON_ROOT flag was incorrectly tested,
+using the environment for processes without sufficient privilege. [#2400]
+<li>Fix a bug where the error prefix was ignored by the Db handle method
+error calls. [#2484]
+<li>Fix a bug where the db_archive utility could create an environment
+that would cause applications or other Berkeley DB utilities to fail. [#2524]
+
+</ol>
+<h3>General Access Method Changes:</h3>
+<ol>
+
+<li>Fix a memory leak in the DB-&gt;verify method. [#2347]
+<li>Fix memory leaks in DB-&gt;rename and DB-&gt;remove method
+recovery [#2363]
+<li>Fix a bug in the DB-&gt;verify method where 64K pages with large
+offsets were incorrectly verified. [#2408]
+<li>Fix a bug where data strings containing % characters could be
+corrupted by the DB-&gt;verify method. [#2427]
+<li>Fix a bug where the DB_TRUNCATE flag could trigger a program error
+if the database type was not specified. [#2423]
+<li>Fix a bug in the Concurrent Data Store product where operations
+could result in application hang or segmentation fault. [#2493]
+
+</ol>
+<h3>Btree Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug where uninitialized parts of a database page could be read
+and an incorrect record count returned. [#2250]
+<li>Fix a bug where reverse splits could corrupt a page under rare
+conditions. [#2362]
+<li>Fix a bug where cursors in the parent of a nested transaction could
+be incorrectly adjusted after a child transaction was aborted. [#2373]
+<li>Fix a bug where threads could race when updating a tree. [#2402]
+<li>Fix a bug where a lock was leaked by the DB-&gt;stat method. [#2418]
+<li>Fix a bug where DB-&gt;put could fail when the data matched a
+duplicate data item previously deleted using a still-open cursor. [#2451]
+<li>Fix a bug where one abort path after a page allocation could leak
+the page. [#2455]
+<li>Fix a bug where recovering the operation of moving on-page duplicates
+into their own tree could cause corruption. [#2459]
+<li>Fix a bug where moving on-page duplicates into their own tree could
+cause cursors on the same page to reference an invalid key/data pair. [#2462]
+<li>Fix a bug where an error could be ignored when reverse splitting
+the tree. [#2472]
+<li>Fix a bug where creating Btrees deeper than 5 levels could cause
+core dumps or out-of-memory errors. [#2514]
+<li>Fix a bug where the DB-&gt;verify method did not correctly diagnose
+Btree/Recno internal page references to invalid pages. [#2525]
+
+</ol>
+<h3>Hash Access Method Changes:</h3>
+
+<blockquote>None.</blockquote>
+
+<h3>Queue Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug where undo could happen incorrectly for record insert and
+delete. [#2298]
+<li>Fix a bug where a page could be leaked during Queue recovery. [#2431]
+
+</ol>
+<h3>Recno Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug where the delete flag was set incorrectly in renumbering
+Recno trees. [#2490]
+
+</ol>
+<h3>C++ API Changes:</h3>
+
+<blockquote>None.</blockquote>
+
+<h3>Java API Changes:</h3>
+<ol>
+
+<li>Fix a bug where the wrong classname was used to find the fieldId in
+storing back the DbEnv.private_dbobj field. [#1628]
+<li>Fix a Java documentation bug, the com.sleepycat.examples.AccessExample
+program removes the database so information from previous runs is not
+available. [#2385]
+<li>Fix a Java documentation bug, Db.del should show it returning int.
+[#2480]
+<li>Fix a bug where the Java Db.del API would fail to return
+Db.DB_NOTFOUND [#2480]
+<li>Fix a bug where the Db.DB_THREAD flag wasn't always set by Java. [#2492]
+
+</ol>
+<h3>Tcl API Changes:</h3>
+<ol>
+
+<li>Fix a bug where DB_USE_ENVIRON_ROOT was specified for the Tcl
+command -use_environ. [#2400]
+
+</ol>
+<h3>RPC Client/Server Changes:</h3>
+
+<blockquote>None.</blockquote>
+
+<h3>XA Resource Manager Changes:</h3>
+
+<blockquote>None.</blockquote>
+
+<h3>Locking Subsystem Changes:</h3>
+
+<blockquote>None.</blockquote>
+
+<h3>Logging Subsystem Changes:</h3>
+<ol>
+
+<li>Fix a bug where the underlying operating system sync interface could
+be unnecessarily (and repeatedly) called when performing transaction
+checkpoints. [#2287]
+<li>Fix a bug where a recovery diagnostic message displayed the wrong
+information. [#2449]
+
+</ol>
+<h3>Buffer Pool Subsystem Changes:</h3>
+<ol>
+
+<li>Fix a bug where calling memp_sync (including by transaction checkpoint)
+could cause shared region corruption and core dumps. [#2348, #2392]
+
+</ol>
+<h3>Transaction Subsystem Changes:</h3>
+<ol>
+
+<li>Fix a bug where recovery would succeed but drop core if no close
+record was ever written after the commit of a remove. [#2316]
+<li>Fix a bug where file ID mapping could be incorrect [#2324]
+<li>Fix a memory leak in abort of a nested transaction. [#2440]
+<li>Fix a freed memory reference when committing active child transactions
+during parent transaction commit. [#2457]
+
+</ol>
+<h3>Utility Changes:</h3>
+
+<blockquote>None.</blockquote>
+
+<h3>Configuration, Documentation, Portability and Build Changes:</h3>
+<ol>
+
+<li>Portability fixes to compile on SunOS 4.1.4. [#2309]
+<li>Fix a bug where VxWorks hash databases could be corrupted on dosFS
+filesystems because Berkeley DB did not correct for dirty filesystem
+reads. [#2317]
+<li>Add a workaround for a MoveFileEx bug in Windows/98 which caused
+the DB-&gt;rename method to fail. [#2341]
+<li>Fix a bug where the VxWorks support did not accept both slash and
+backslash as path separators. [#2393]
+<li>Fix a bug where VxWorks device names were not ignored when evaluating
+paths. [#2393]
+<li>Fix txn_begin documentation to correctly specify operations available
+to parent transactions with active child transactions. [#2457]
+<li>Fix txn_commit documentation to correctly specify effect of parent
+transaction commit on active child transactions. [#2457]
+<li>Fix a bug in the Reference Guide where txn_begin and txn_commit
+examples had the wrong arguments. [#2485]
+<li>Fix the documentation on extending Berkeley DB recovery to reference
+the correct filenames. [#2501]
+<li>Fix a bug where the DB_CLIENT flag was not listed in the C++/Java API
+DbEnv class constructor documentation. [#2510]
+<li>Fix a bug where the DbEnv-&gt;set_server interface was not documented
+for the C++/Java APIs. [#2510]
+<li>Fix the DBENV-&gt;remove method's argument documentation. [#2518]
+<li>Fix a bug where the Java DbEnv.strerror and version number methods
+weren't documented. [#2523]
+
+</ol>
+
+</body>
+</html>
diff --git a/db/docs_src/ref/changelog/3.2.9.html b/db/docs_src/ref/changelog/3.2.9.html
new file mode 100644
index 000000000..74cc450ad
--- /dev/null
+++ b/db/docs_src/ref/changelog/3.2.9.html
@@ -0,0 +1,324 @@
+<!--$Id: 3.2.9.html,v 1.4 2007/05/17 18:17:18 bostic Exp $-->
+<html>
+<head>
+<title>The Berkeley DB Package: DB 3.2.9 Change Log</title>
+<meta name="description" content="Berkeley DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Berkeley DB 3.2.9 Change Log</h3>
+
+<h3>Database On-Disk Format Changes:</h3>
+<ol>
+
+<li>The on-disk Queue format has changed from version 2 to version 3. For
+information on upgrading database formats, see "Upgrading Applications
+to the 3.2 release" in the Berkeley DB Reference Guide.
+
+</ol>
+<h3>Major New Features:</h3>
+<ol>
+
+<li>Berkeley DB now includes support for the QNX Neutrino Real-Time
+Platform.
+
+</ol>
+<h3>Interface Additions and Changes:</h3>
+<ol>
+
+<li>Add support for blocking on a Queue "consume" operation until a
+record is available, with a new flag (DB_CONSUME_WAIT) to support this.
+[#1037]
+<li>Change the Queue "consume" operation (and the DB_CONSUME flag) to
+use the DB-&gt;get() method instead of DBC-&gt;c_get(). [#1037]
+<li>Add support for extent-based queues, and a new method to support
+them, DB-&gt;set_q_extentsize. [#1463]
+<li>Add support for wrap-around record numbers in the Queue access
+method. [#1463]
+<li>Add a DB-&gt;set_feedback interface flag for database verification
+operations. [#2019]
+<li>Add a reference to a DB object as the first argument to
+four application callback functions (the callback functions set by
+DB-&gt;set_bt_compare, DB-&gt;set_bt_prefix, DB-&gt;set_dup_compare, and
+DB-&gt;set_h_hash). [#2179]
+<li>Add a DBENV-&gt;set_flags interface to support configuration of the
+database environment. [#2727]
+<li>Add the DB_CDB_ALLDB flag to the DBENV-&gt;set_flags interface to
+support Concurrent Data Store semantics across multiple databases in an
+environment. [#2727]
+<li>Remove the app_private field from the DBT structure. Add app_private
+fields to the DB and DB_ENV structures. [#2862]
+<li>The db_env_set_mutexlocks function has become a method on the
+environment handle, DBENV-&gt;set_mutexlocks. [#3001]
+
+</ol>
+<h3>General Environment Changes:</h3>
+<ol>
+
+<li>Add support for the destruction of mutexes which may hold system
+resources. [#1953]
+<li>Attempts to join existing regions where the application was built with
+a different version (major, minor, patch) of Berkeley DB than was the
+application that created the region, now returns EINVAL. [#2198]
+<li>Clarify the Berkeley DB documentation that all destructor methods,
+(for example, DB-&gt;close txn_commit, txn_abort and memp_fclose),
+always destroy their respective handles, regardless of their return,
+error or not. Review the appropriate code and apply minor fixes. [#2311]
+<li>Fix a bug in which creating multiple databases in one file could fail
+when using the Concurrent Data Store product. [#2713]
+<li>Fix a bug in which running recovery in one environment could cause
+mutexes to stop working in another environment open in the same process.
+[#3001]
+<li>Fix a set of bugs in which assorted DB interfaces could panic
+and return errors other than DB_RUNRECOVERY. [#3018]
+<li>Fix a bug where calling the DB_ENV-&gt;remove method using a handle
+already passed to the DB_ENV-&gt;open method dumped core. [#3097]
+<li>Fix a bug where the Concurrent Data Store product could enter
+deadlock. [#3065]
+<li>Fix a bug where recovery output spurious error messages when opening
+a previously deleted subdatabase. [#3074]
+
+</ol>
+<h3>General Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug where the DB-&gt;verify method was unable to access
+subdatabases, returning ENOENT. [#2319]
+<li>Change filename processing to not transform database names with
+leading "./" strings. [#2382]
+<li>Fix a bug in which database verification could report the wrong number of pages and fail. [#2559]
+<li>Fix a bug in which overflow pages belonging to duplicate data items
+might not be properly counted by DB-&gt;stat. [#2911]
+<li>Fix a bug in which cursors could be adjusted incorrectly when
+items are inserted into an off-page duplicate set. [#2910]
+<li>Fix a set of bugs which could cause the DB salvager to dump core
+when running with DB_AGGRESSIVE or for certain classes of corrupt databases.
+[#2784]
+<li>Fix a bug in which DB_KEYEXIST could be incorrectly returned
+by DB-&gt;verify. [#2784]
+<li>Add a stricter verification criterion: free lists of pages are not
+allowed on metadata pages other than the master one. [#2784]
+
+</ol>
+<h3>Btree Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug where cursors in the parent of a nested transaction could
+be incorrectly adjusted after a child transaction was aborted. [#2373]
+<li>Fix a bug where an overflow page's reference count was not
+decremented during a reverse split. [#2550]
+<li>Fix a bug where the tree record count in a Btree could be left
+incorrect after an aborted insert or delete. [#2810]
+<li>Fix a bug in which too high a value of bt_minkey could cause an
+infinite loop when executing a Btree split. [#2888]
+<li>Fix a bug in which overflow pages that stored a duplicate
+data item could be leaked when the item was deleted. [#2912]
+
+</ol>
+<h3>Hash Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug where cursors in the parent of a nested transaction could
+be incorrectly adjusted after a child transaction was aborted. [#2373]
+<li>Fix a bug in which cursor gets performed on deleted items could
+return EINVAL instead of the correct DB_KEYEMPTY. [#2596]
+<li>Fix a bug where the verifier could falsely report errors when new
+hash pages were allocated in an aborted transaction. [#2577]
+<li>Fix a bug where hash recovery roll-forward log contains a abort and
+then re-do of a hash table double. [#2599]
+<li>Fix a bug in hash recovery roll-forward that could cause database
+corruption. [#2602]
+<li>Fix a bug where sizes could be miscalculated when adding duplicate
+records. [#2611]
+<li>Fix a bug in which a Hash insert could result in a misplaced
+item or an application crash. [#2842]
+<li>Fix a memory leak in Hash which could cause salvaging of Hash
+databases to waste an amount of memory roughly equal to database size. [#2869]
+<li>Fix a bug in which a failed attempt to put a duplicate duplicate
+item could result in a corrupted database. [#2996]
+<li>Fix a bug in which databases upgraded from version 2.X could
+become corrupted by the upgrade process. [#3061]
+<li>Fix a bug in which verifying a Hash database with the DB_ORDERCHKONLY
+flag could fail. [#3061]
+
+</ol>
+<h3>Queue Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug in which a (possibly nonsense) record number was returned
+when a queue insertion failed. [#2634]
+<li>Add support for circular queues: when UINT32_T_MAX records have
+been added using DB_APPEND, wrap around to record number 1. [#2829]
+<li>Fix a bug where the DB-&gt;stat method incorrectly marked the
+metadata page clean. [#3092]
+
+</ol>
+<h3>Recno Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug where cursors in the parent of a nested transaction could
+be incorrectly adjusted after a child transaction was aborted. [#2373,#2490]
+<li>Fix a bug in which a failure during the open of a Recno database could
+result in application crashes. [#2687]
+<li>Change the Recno statistics to not count logically deleted data
+items in Recno trees with immutable record numbers. [#2629]
+<li>Fix a bug in which overflow pages in Recno databases
+might not be properly counted by DB-&gt;stat. [#2911]
+<li>Change the Recno backing source file implementation to use stdio
+and not memory map the files. [#3076]
+<li>Fix a bug where writing new records past the end of the source text
+file when the entire file hadn't been read failed. [#3276]
+
+</ol>
+<h3>C++ API Changes:</h3>
+<ol>
+
+<li>Fix a bug where calling the Db::remove() method could crash the application. [#2665]
+<li>Stop supporting "reopens" of Db/DbEnv objects in C++, fix API memory
+leaks. [#2783, #2344]
+
+</ol>
+<h3>Java API Changes:</h3>
+<ol>
+
+<li>Java now supports the Db-&gt;set_bt_compare, Db-&gt;set_bt_prefix
+Db-&gt;set_h_hash and DbEnv-&gt;set_tx_recover methods, allowing Java
+applications to specify alternate Btree comparison and prefix methods,
+Hash hashing method and application-specific recovery. [#2179]
+<li>Remove unnecessary local allocation routine setting in Java API. [#2510]
+<li>Fix a bug where the Db.DB_CACHED_COUNTS flag was not properly defined in Java. [#2568]
+<li>Fix a bug where certain DB error returns did not display the correct db_strerror text. [#2679]
+<li>Db.rename, Db.remove, DbEnv.remove now throw
+java.io.FileNotFoundException. [#2320]
+<li>Stop supporting "reopens" of Db/DbEnv objects in Java, fix API
+memory leaks. [#2320]
+
+</ol>
+<h3>Tcl API Changes:</h3>
+<ol>
+
+<li>Fix a bug where closing a Tcl environment handle (when the environment
+included open database handles), the open database handles would be
+discarded and the underlying Berkeley DB resources leaked. [#2325]
+
+</ol>
+<h3>RPC Client/Server Changes:</h3>
+
+<blockquote>None.</blockquote>
+
+<h3>XA Resource Manager Changes:</h3>
+<ol>
+
+<li>Fix a bug in which updates could be performed on behalf of the
+wrong XA transaction. [#2650]
+
+</ol>
+<h3>Locking Subsystem Changes:</h3>
+<ol>
+
+<li>Change the locking subsystem to guarantee that if any request for
+a lock fails, the off field is set to LOCK_INVALID, parts of Berkeley
+DB reasonably depend on this, and it fixes a potential uninitialized
+memory read in Btree root page processing. [#2364]
+
+</ol>
+<h3>Logging Subsystem Changes:</h3>
+<ol>
+
+<li>Fix a bug where an error message was written out if the log_get()
+interface was called and the supplied DBT included the DB_USERMEM flag,
+and there was insufficient space available for the log record. [#2243]
+
+</ol>
+<h3>Buffer Pool Subsystem Changes:</h3>
+<ol>
+
+<li>Avoid flushing the log for each buffer written during a transaction
+checkpoint. [#2287]
+<li>Fix a bug in which the "gbytes" parameter to the set_cachesize functions
+(and to set_cachesize directives in a DB_CONFIG file) was handled incorrectly.
+[#2685]
+<li>Fix a bug which could result in erratic behavior or application
+crashes during buffer pool open. [#2747]
+<li>Fix a bug in which statistics fields belonging to per-file structures
+were not returned when per-file statistics were not requested. [#3038]
+
+</ol>
+<h3>Transaction Subsystem Changes:</h3>
+<ol>
+
+<li>Rework child transaction structures on child commit in order to
+decrease transaction resource usage and ensure abort on error. [#2230] [#2489]
+<li>Display an error message if cursors opened within a transaction are
+still open at transaction commit/abort. [#2235]
+<li>Fix a bug where one abort path after a page allocation could lead to
+a corrupted free list. [#2464]
+<li>Fix bug that caused reference to potentially freed memory. [#2478]
+<li>Fix a bug in which recovery of the deletion of a file that had been
+later re-created with the same name could fail. [#2538]
+<li>Fix a bug where missing pages were handled incorrectly during
+overflow reference count recover. [#2556]
+<li>Fix a bug where recovery of a subdatabase metadata operation could fail. [#2502]
+<li>Change transaction checkpointing to render less likely a situation in which no checkpoint will ever complete because pages remain pinned. [#2569]
+<li>Fix a bug where recovery of a queue metadata operation could fail. [#2690]
+<li>Fix a bug where recovery of a DB_CONSUME operation in queue could fail. [#2698]
+<li>Fix a bug where recovery could fail if done twice without an intervening checkpoint after an unclean shut down. [#2918]
+<li>Fix a bug where an error on recovery could cause a core dump due
+to an incorrect number of arguments in a printf statement. [#2987]
+<li>Change transaction checkpointing so that checkpoints are no longer
+skipped if there are new log records in the log buffer but none which have
+been flushed to disk. [#2949]
+
+</ol>
+<h3>Utility Changes:</h3>
+<ol>
+
+<li>Fix a bug in which db_stat would print extraneous error messages
+when opening a file containing multiple databases. [#2565]
+<li>Fix a bug where db_dump would display keys as numeric strings even
+though data items were being displayed as hex pairs. [#2676]
+<li>Fix a bug where the wrong statistics value was displayed for the
+maximum locks ever requested. [#2979]
+<li>Remove mention of the "-a m" option to db_deadlock, it was never
+implemented. [#3082]
+
+</ol>
+<h3>Configuration, Documentation, Portability and Build Changes:</h3>
+<ol>
+
+<li>Support for MSVC 4 has been removed.
+<li>Add a --enable-umrw configuration option to mask harmless uninitialized
+memory reads/writes. [#2377]
+<li>Remove searching of non-standard directories for Tcl installation,
+search only /usr/local. [#2386]
+<li>Fix a bug where Win32 support did not accept colon as a device/path
+separator. [#2393]
+<li>Ensure that Tcl directory include files do not override Berkeley DB
+include files when building the Tcl API. [#2395]
+<li>Rename "try" variable something else for Compaq Tru64 UNIX 5.0a. [#2410]
+<li>Change the Reference Guide to list page name, not section name as
+the HTML title. [#2485]
+<li>Fix a bug where the DBT documentation incorrectly said that various
+flags were only used during key/data pair retrieval. [#2537]
+<li>Fix a bug where VxWorks applications were restricted to the use of one environment, and add support for DB_ENV-&gt;set_shm_key on VxWorks. [#2528]
+<li>Fix a bug where VxWorks applications incorrectly failed when trying
+to memory-map read-only database files. [#2570]
+<li>Add support in the MSVC project files to build statically on Windows. [#2554]
+<li>Fix a bug in which resolution of absolute pathnames in VxWorks was incorrect. [#2579]
+<li>Fix a bug in which file initialization was being incorrectly performed for temporary files that have not yet been physically instantiated on Windows/95 and /98. [#2341]
+<li>Enable large file support in Linux. [#2871]
+<li>Fix a compiler warning in the Solaris mutex code. [#2905]
+<li>Berkeley DB now works with the Cygwin tools. You need at least DLL
+version 1.1.4. Configure and build as you would on a Unix system. Only
+static library builds are supported, no shared library support is
+included. [#2913]
+<li>Update BSD-style queue.h macros to avoid compilation problems
+on some versions of FreeBSD. [#2999]
+<li>Modify installation sequence such that the db_185.h header file is now
+only installed when --enable-compat185 was specified as an option to configure. [#3064]
+
+</ol>
+
+</body>
+</html>
diff --git a/db/docs_src/ref/changelog/3.3.11.html b/db/docs_src/ref/changelog/3.3.11.html
new file mode 100644
index 000000000..4fcccfc10
--- /dev/null
+++ b/db/docs_src/ref/changelog/3.3.11.html
@@ -0,0 +1,295 @@
+<!--$Id: 3.3.11.html,v 1.6 2007/05/17 18:17:18 bostic Exp $-->
+<html>
+<head>
+<title>The Berkeley DB Package: DB 3.3.11 Change Log</title>
+<meta name="description" content="Berkeley DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Berkeley DB 3.3.11 Change Log</h3>
+
+<h3>Major New Features:</h3>
+<ol>
+
+<li>Berkeley DB now continues to run when no disk space is available. [#637]
+<li>Add Berkeley DB API support for bulk-data returns. [#2934]
+<li>Add Berkeley DB API support for secondary indices. [#3329]
+<li>Add support for degree 1 isolation (dirty reads). [#3395]
+<li>Add support for native Berkeley DB two-phase commit. This requires
+an additional parameter to txn_prepare (a global transaction id), a new
+interface that returns the list of prepared but not yet committed
+transactions, and a new interface that supports transaction discard. [#3563]
+<li>Add support for the Embedix OS. [#3666]
+
+</ol>
+<h3>Interface Additions and Changes:</h3>
+<ol>
+
+<li>The new Db handle method DB-&gt;truncate supports discard of all
+records in a database. [#1984]
+<li>The DB_LOCK_CONFLICT flag has been removed. [#2606]
+<li>The new DbEnv handle method DBENV-&gt;set_lg_regionmax method
+supports sizing the logging subsystem's region. [#3509]
+<li>Add support for deadlock resolution based on the transaction holding
+the fewest, most, and most write locks. [#3020]
+<li>Replace the DB-&gt;set_malloc and DB-&gt;set_realloc functions, and
+the malloc arguments to DB-&gt;stat, lock_stat, log_archive, log_stat,
+memp_stat and txn_stat, with the new DB_ENV-&gt;set_alloc and
+DB-&gt;set_alloc interfaces. [#3329]
+<li>Allow the DB-&gt;get_type and DB-&gt;get_byteswapped methods to
+return error values. [#4071]
+
+</ol>
+<h3>General Environment Changes:</h3>
+<ol>
+
+<li>Fix a bug where threads of control were not properly informed that
+the database environment had failed with DB_RUNRECOVERY. [#3280]
+<li>Fix a bug where it was impossible to remove or run recovery on a
+database environment that had failed with DB_RUNRECOVERY. [#3280]
+<li>Fix a bug where error messages could be lost when performing
+recovery on a database environment as part of a DB-&gt;open call.
+[#3340]
+<li>Detect attempts to use DB handles inside transactions that were not
+originally created in an environment that supports transactions. [#3406]
+<li>Fix a bug where recovery could drop core when a subdatabase metadata
+page was being recovered. [#3454]
+<li>Fix bug where system mutex resources could be leaked when DB_THREAD
+was specified, on OSE, VxWorks and QNX. [#3474]
+<li>Fix a bug where the DBENV-&gt;set_feedback method could
+cause a core dump if the database environment had no
+existing log files. [#3894]
+
+
+</ol>
+<h3>General Access Method Changes:</h3>
+<ol>
+
+<li>Add the DB_FAST_STAT option to the DB-&gt;stat method to return only
+those database statistics that can be acquired without database
+traversal. Deprecate the DB_CACHED_COUNTS and DB_RECORDCOUNT flags to
+the DB-&gt;stat method. [#2090]
+<li>Fix bugs in the salvager where various error cases failed to unpin
+pages. [#2869]
+<li>Fix a bug where join memory could be allocated using the wrong
+allocation routines. [#3403]
+<li>Fix a bug where a transaction handle could be used after it was
+closed. [#3480]
+<li>Fix a bug in which a join cursor get could unexpectedly fail, or
+memory returned by a join cursor get could be freed or corrupted by
+an unrelated call using the primary database handle. [#3749]
+<li>Fix a bug in which DB-managed memory returned by a DB-&gt;get or
+DB-&gt;put call may be corrupted by a later cursor call. [#3576]
+<li>Fix a bug where file descriptors could be leaked when attempting
+to open database files where the metadata page could not be read. [#3786]
+<li>Fix a bug where the Db.open method could throw a DB_INCOMPLETE
+exception. [#3885]
+<li>Fix a bug in which partial gets that specify an offset and length
+beyond the end of the record could return garbage data. [#4117]
+
+</ol>
+<h3>Btree Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug where overwriting a previously deleted data item in a
+sorted, off-page, duplicate set could fail. [#3617]
+<li>Fix a bug where the Btree/Recno DB-&gt;stat method could
+leave a page pinned. [#3761]
+<li>Fix a bug where aborting a child transaction could cause an application
+crash if cursors were open in the parent transaction. [#4002]
+
+</ol>
+<h3>Hash Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug where memory could be freed and then returned to the
+application. [#3506]
+<li>Fix a bug where truncating a hash database with off-page duplicate
+records could drop core.
+<li>Fix a bug where certain record partial put operations could
+be unrecoverable. [#3944]
+<li>Fix a bug where abort when converting from on-page to off-page
+duplicate sets could cause a core dump. [#3975]
+<li>Fix a bug where an error in converting from on-page to off-page
+duplicate sets could leave a page pinned. [#3975]
+<li>Fix a bug where aborting a child transaction could cause open cursors
+belonging to a parent transaction to return corrupt or incomplete data. [#4002]
+<li>Fix a class of bugs in which aborting a child transaction could cause a
+hash cursor that pointed at a deleted item to start pointing at a different,
+incorrect item. [#4052] [#4142]
+
+</ol>
+<h3>Queue Access Method Changes:</h3>
+<ol>
+
+<li>Preserve Queue database extent size across dump/load cycles. [#3323]
+<li>Fix a bug where calling the DB-&gt;stat method on an empty Queue
+database opened in read-only mode dropped core. [#3333]
+<li>Fix a bug in which attempts to get nonexistent records in a Queue
+database could incorrectly return EIO. [#3670]
+<li>Fix a bug where the delete of an extent file could be unrecoverable. [#3927]
+<li>Improve concurrency in the Queue access method by removing a log
+write made while holding a metapage lock during record append. [#3939]
+<li>Fix a bug where the metapage lock was not released on error. [#3998]
+<li>Fix a bug where log_archive with the DB_ARCH_DATA flag specified
+did not return the names of the extent files for Queue databases. [#3968]
+<li>Improve concurrency in the Queue access method by removing a log write made while holding a metapage lock during record append. [#3939]
+
+</ol>
+<h3>Recno Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug in which a DB-&gt;get(DB_GET_BOTH) or DBC-&gt;c_get(DB_GET_BOTH)
+operation on a Recno database could erroneously return an item with
+a matching datum but a different record number from that specified.
+[#3878]
+<li>Fix a bug in which implicitly-created data items could incorrectly
+appear non-empty in a fixed-length Recno database with an re_len
+greater than the threshold for moving items off-page. [#2934]
+<li>Fix a bug where partial backing source file records (records
+terminated by end-of-file) were lost. [#4161]
+
+</ol>
+<h3>C++ API Changes:</h3>
+<ol>
+
+<li>Add C++ methods to support access from C++ class objects to
+underlying C objects. [#3656]
+
+</ol>
+<h3>Java API Changes:</h3>
+<ol>
+
+<li>Fix a bug where calling the env.log_put method caused a core dump. [#3401]
+<li>Fix a bug where the Java lock statistics structure was out-of-date
+with the C version and the documentation. [#3489]
+
+</ol>
+<h3>Tcl API Changes:</h3>
+<ol>
+
+<li>Fix a bug where memory guard bytes were incorrectly checked by the
+Tcl txn_stat call. [#3431]
+<li>Fix a bug in which values too large for a signed 32-bit integer,
+but which would fit in the unsigned 32-bit integer called for by many
+DB interfaces, would be incorrectly rejected by the Tcl interface
+on some platforms. [#4184]
+
+</ol>
+<h3>RPC Client/Server Changes:</h3>
+<ol>
+
+<li>Fix a bug in RPC reply for the DB-&gt;join method. [#3425]
+<li>Change RPC to use Berkeley DB major/minor release numbers as the
+RPC version numbers. [#3425]
+<li>Fix a bug where lock detection wasn't being run.
+<li>Fix a bug where we were not returning the correct value
+for get_byteswapped when running over RPC. [#3771]
+<li>Change the method interface from set_server to set_rpc_server
+and add an argument to allow users to send in a CLIENT structure for
+us to use for RPC. [#3772]
+
+</ol>
+<h3>XA Resource Manager Changes:</h3>
+
+<blockquote>None.</blockquote>
+
+<h3>Locking Subsystem Changes:</h3>
+<ol>
+
+<li>Speed up deadlock detector check by linking lockers together so we
+don't traverse a large and sparse locker table. [#2983]
+<li>Fix a bug where deadlock detection could be incorrect. [#3479]
+<li>Fix a bug where deadlock resolution of youngest/oldest transactions
+incorrectly selected the transaction to abort. [#3149]
+
+</ol>
+<h3>Logging Subsystem Changes:</h3>
+<ol>
+
+<li>Fix a bug where running recovery on a database environment containing
+only logs from a previous release of Berkeley DB, in which log.0000000001
+doesn't exist, could fail. [#3380]
+<li>Fix a bug where opening too many files could cause a core dump. [#3399]
+<li>Fix a bug where resetting the log buffer size could cause a core
+dump. [#3855]
+<li>Fix a bug where files in the database environment similarly named to
+Berkeley DB log files could cause applications to fail. [#4234]
+
+</ol>
+<h3>Buffer Pool Subsystem Changes:</h3>
+<ol>
+
+<li>Fix a bug where incorrect values for the total size of the cache
+were being returned by the memp_stat interface. [#3638]
+<li>Fix a bug where the clean-page count for the Berkeley DB buffer cache could become incorrect. [#3679]
+<li>Fix a bug where checkpoints could not succeed if there was
+a temporary backing file for which the process did not have
+an open file descriptor. [#3826]
+<li>Detect unreasonable cache sizes, fix a bug where 4GB regions
+could drop core. [#3904]
+<li>Fix a bug where checkpoints could be blocked from ever completing if
+an application combined Berkeley DB access method use of the buffer pool
+with non-DB use. [#4058]
+<li>Fix a bug where dirty/clean page counts could be incorrect. [#4249]
+
+</ol>
+<h3>Transaction Subsystem Changes:</h3>
+<ol>
+
+<li>Fix a potential memory leak in the txn_stat interface. [#3426]
+
+</ol>
+<h3>Utility Changes:</h3>
+<ol>
+
+<li>Add a -f option to return only those database statistics that can
+be acquired without database traversal. [#2090]
+<li>Fix a bug in several utilities where a destroyed DB handle could be
+used after it was closed, resulting in core dumps. [#3565]
+<li>Fix a bug where db_load would fail in any environment supporting
+transactions. [#3565]
+<li>Fix a bug where db_stat could drop core if the environment had not
+been configured to support all services. [#3526]
+<li>Increase the size of the cache created by the db_dump utility
+when no pre-existing environment is specified. [#4192]
+
+</ol>
+<h3>Database or Log File On-Disk Format Changes:</h3>
+
+<blockquote>None.</blockquote>
+
+<h3>Configuration, Documentation, Portability and Build Changes:</h3>
+<ol>
+
+<li>Upgrade to config.guess version 1.193, config.sub version 1.207,
+autoconf version 2.50.
+<li>Fix a bug where log_archive could return EINVAL on VxWorks because
+checkpoint could zero out portions of the log.
+<li>Add the --with-uniquename=NAME configuration option so that multiple
+copies of Berkeley DB can be loaded into a single process. [#3025]
+<li>Document the relationship between log in-memory buffer size and log
+file size. [#3340]
+<li>Fix a bug where the user CFLAGS value was overwritten on Linux. [#3375]
+<li>Fix a bug where the db_recops type values were overwritten by
+#defines. [#3407]
+<li>PowerPC/GCC system mutexes were incorrect. [#3417]
+<li>Fix a bug where --enable-bigfile was incorrectly evaluated. [#3559]
+<li>Clarify lock_vec documentation with respect to structure fields. [#3552]
+<li>Fix a mutex memory leak on AIX and HPUX. [#3703]
+<li>Support by static and shared libraries by default. [#3722]
+<li>Add mutex support for GCC and Alpha/Sparc platforms. [#3780]
+<li>Fix Berkeley DB error messages with extraneous trailing
+newline characters. [#3915]
+<li>Fix a bug where installing or uninstalling the documentation
+could remove files other than Berkeley DB's. [#3960]
+<li>Fix a bug where ssize_t was typed as "int" on Win64. [#3948]
+<li>Fix a bug where recovery could fail and/or databases be corrupted
+for applications running on filesystems that do not zero out implicitly
+created blocks (for example, VxWorks and Windows 95/95). [#4025]
+
+</ol>
+
+</body>
+</html>
diff --git a/db/docs_src/ref/changelog/4.0.14.html b/db/docs_src/ref/changelog/4.0.14.html
new file mode 100644
index 000000000..66c931309
--- /dev/null
+++ b/db/docs_src/ref/changelog/4.0.14.html
@@ -0,0 +1,246 @@
+<!--$Id: 4.0.14.html,v 1.5 2007/05/17 18:17:18 bostic Exp $-->
+<html>
+<head>
+<title>The Berkeley DB Package: DB 4.0.14 Change Log</title>
+<meta name="description" content="Berkeley DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Berkeley DB 4.0.14 Change Log</h3>
+
+<h3>Major New Features:</h3>
+<ol>
+
+<li>Group commit. [#42]
+<li>Single-master replication. [#44]
+<li>Support for VxWorks AE; Vxworks support certified by WindRiver Systems
+Inc. [#4401]
+
+</ol>
+
+<h3>General Environment Changes:</h3>
+<ol>
+
+<li>The db_env_set_pageyield interface has been replaced by a new flag
+(DB_YIELDCPU) for the DB_ENV-&gt;set_flags interface.
+<li>The db_env_set_panicstate interface has been replaced by a new flag
+(DB_PANIC_STATE) for the DB_ENV-&gt;set_flags interface.
+<li>The db_env_set_region_init interface has been replaced by a new flag
+(DB_REGION_INIT) for the DB_ENV-&gt;set_flags interface.
+<li>The db_env_set_tas_spins interface has been replaced by the
+DB_ENV-&gt;set_tas_spins method.
+<li>The DB_ENV-&gt;set_mutexlocks interface has been replaced by a new
+flag (DB_NOLOCKING) for the DB_ENV-&gt;set_flags interface.
+<li>Fix a bug where input values from the DB_CONFIG file could overflow.
+<li>The C API lock, log, memory pool and transaction interfaces have
+been converted to method based interfaces; see the Upgrade documentation
+for specific details. [#920]
+<li>Fix a bug in which some DB_ENV configuration information could be lost
+by a failed DB_ENV-&gt;open command. [#4608]
+<li>Fix a bug where Berkeley DB could fail if the application
+attempted to allocate new database pages while the system was
+unable to write new log file buffers. [#4928]
+
+</ol>
+<h3>General Access Method Changes:</h3>
+<ol>
+
+<li>Add a new flag (DB_GET_BOTH_RANGE) that adds support for range
+searches within sorted duplicate data sets. [#3378]
+<li>Fix a bug in which the DB-&gt;get or DB-&gt;pget methods, when used with
+secondary indices, could incorrectly leave an internally-created
+database cursor open. [#4465]
+<li>The DB-&gt;set_alloc method can no longer be called when the
+database is part of a database environment. [#4599]
+
+</ol>
+<h3>Btree Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug where a lock could be leaked when a thread calling DB-&gt;stat
+on a Btree database was selected to resolve a deadlock. [#4509]
+
+</ol>
+<h3>Hash Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug where bulk return using the MULTIPLE_KEY flag on a
+Hash database would only return entries from a single bucket. [#4313]
+
+</ol>
+<h3>Queue Access Method Changes:</h3>
+<ol>
+
+<li>Delete extent files whenever the leading record is deleted, instead
+of only when a DB_CONSUME operation was performed. [#4307]
+
+</ol>
+<h3>Recno Access Method Changes:</h3>
+<ol>
+<li>Fix a bug where the delete of a record in a Recno database
+could leak a lock in non-transactional applications. [#4351]
+<li>Fix a bug where the DB_THREAD flag combined with a backing
+source file could cause an infinite loop. [#4581]
+
+</ol>
+<h3>C++ API Changes:</h3>
+
+<blockquote>None.</blockquote>
+
+<h3>Java API Changes:</h3>
+<ol>
+
+<li>
+Added implementation of DbEnv.lock_vec for Java. [#4094]
+Added some minimal protection so that the same Java Dbt
+cannot be used twice in the same API call, this will
+often catch multithreading programming errors with Dbts. [#4094]
+<li>
+Fix a bug in which a Db.put call with the Db.DB_APPEND would fail
+to correctly return the newly put record's record number. [#4527]
+<li>Fixed problems occurring in multithreaded java apps that use
+callbacks. [#4467]
+</ol>
+<h3>Tcl API Changes:</h3>
+<ol>
+
+<li>Fix a bug in which large integers could be handled incorrectly
+by the Tcl interface on 64-bit machines. [#4371]
+
+</ol>
+<h3>RPC Client/Server Changes:</h3>
+<ol>
+
+<li>The DB_ENV-&gt;set_server interface has been removed.
+
+
+</ol>
+<h3>XA Resource Manager Changes:</h3>
+
+<blockquote>None.</blockquote>
+
+<h3>Locking Subsystem Changes:</h3>
+<ol>
+
+<li>The C++ (Java) API DbLock::put (DbLock.put) method has been changed
+to be a method off the DbEnv handle rather than the DbLock handle.
+<li>Locker IDs may now wrap-around. [#864]
+<li>Explicitly allocated locker IDs must now be freed. [#864]
+<li>Add per-environment, per-lock and per-transaction interfaces to
+support timeout based lock requests and "deadlock" detection. [#1855]
+<li>Add support for interrupting a waiting locker. [#1976]
+<li>Implemented DbEnv.lock_vec for Java. [#4094]
+
+</ol>
+<h3>Logging Subsystem Changes:</h3>
+<ol>
+
+<li>Fix a bug where the size of a log file could not be set to
+the default value. [#4567]
+<li>Fix a bug where specifying a non-default log file size could
+cause other processes to be unable to join the environment and
+read its log files. [#4567]
+<li>Fix a bug where Berkeley DB could keep open file descriptors
+to log files returned by the DB_ENV-&gt;log_archive method (or the
+db_archive utility), making it impossible to move or remove them
+on Windows systems. [#3969]
+<li>Replace the log_get interface with a cursor into the
+log file. [#0043]
+
+</ol>
+<h3>Memory Pool Subsystem Changes:</h3>
+<ol>
+
+<li>Add the DB_ODDFILESIZE flag to the DB_MPOOLFILE-&gt;open method
+supporting files not a multiple of the underlying page size in length.
+<li>Convert memp_XXX functional interfaces to a set of methods, either
+base methods off the DB_ENV handle or methods off of a DB_MPOOLFILE
+handle. [#920]
+<li>Add the DB_ODDFILESIZE flag to the DB_MPOOLFILE-&gt;open method
+supporting files not a multiple of the underlying page size in length.
+<li>Fix a bug where threads of control could deadlock opening a
+database environment with multiple memory pool caches. [#4696]
+<li>Fix a bug where the space needed for per-file memory
+pool statistics was incorrectly calculated. [#4772]
+</ol>
+<h3>Transaction Subsystem Changes:</h3>
+<ol>
+
+<li>Transaction IDs may now wrap-around. [#864]
+<li>Release read locks before performing logging operations at commit. [#4219]
+
+</ol>
+<h3>Utility Changes:</h3>
+<ol>
+
+<li> Fix a bug in which the db_dump utility would incorrectly attach to
+transaction, locking, or logging regions when salvaging, and thus
+could not be used to salvage databases in environments where these
+regions were present. [#4305]
+<li>Fix a bug in which the DB salvager could produce incorrectly
+formatted output for certain classes of corrupt database. [#4305]
+<li>Fix a bug in which the DB salvager could incorrectly salvage
+files containing multiple databases. [#4305]
+<li>Fix a bug where unprintable characters in subdatabase names could
+cause a dump of a database that could not then be loaded. [#4688]
+<li>Increase the size of the cache created by the db_stat and db_verify
+utilities to avoid failure on large databases. [#4688] [#4787]
+<li>Fix a bug in which a database verification performed with the
+DB_ORDERCHKONLY flag could fail incorrectly. [#4757]
+<li>Fix a bug which caused db_stat to display incorrect information about
+GB size caches. [#4812]
+</ol>
+<h3>Database or Log File On-Disk Format Changes:</h3>
+<ol>
+
+<li>The on-disk log format changed.
+
+</ol>
+<h3>Configuration, Documentation, Portability and Build Changes:</h3>
+<ol>
+
+<li>Fix a bug where Win9X systems region names could collide.
+<li>Fix a bug where configuring Berkeley DB to build the C++ API
+without also configuring for a shared library build would fail
+to build the C++ library. [#4343]
+<li>Change Berkeley DB installation to not strip binaries if
+--enable-debug was specified as a configuration option. [#4318]
+<li>Add the -pthread flag to AIX, FreeBSD and OSF/1 library loads. [#4350]
+<li>Fix a bug where the Berkeley DB 1.85 compatibility API
+failed to load in the 3.3.11 release. [#4368]
+<li>Port the Berkeley DB utility programs to the VxWorks environment. [#4378]
+<li>Made change to configuration so that dynamic libraries link
+correctly when C++ is used on AIX. [#4381]
+<li> Fix a variety of problems that prevented the Berkeley DB source tree
+from building on systems without ANSI C compiler support (for example,
+SunOS 4.X). [#4398]
+<li>Added missing DbMultiple*Iterator Java files to Makefile.in. [#4404]
+<li>Fix a bug that could prevent the db_dump185 utility from dumping
+Berkeley DB version 1.86 hash databases. [#4418]
+<li>Reduce the number of calls setting the errno value, to
+improve performance on Windows/NT in MT environments. [#4432]
+<li>Fix for Darwin (and probably some other) OS's that were getting
+'yes' or other garbage in generated makefiles in place of
+a shared library name. [#4453]
+<li>C++: Remove inlining for constructor of tmpString internal class.
+This fixes warnings on Solaris profiling builds. [#4473]
+<li>DB now restarts system calls that are interrupted by signals. [#4480]
+<li>Fixed warnings for compiling Java native code on Solaris and OSF/1. [#4571]
+<li>Added better configuration for Java on Tru64 (OSF/1), Solaris,
+Mac OS/X, BSD/OS. [#3778]
+<li> Java files are now built as jar files. Berkeley DB classes are put
+into db.jar (which is an installed file on UNIX) and examples are put
+into dbexamples.jar. The classes directory is now a subdirectory of
+the build directory, rather than in java/classes. [#4575]
+<li>Support Cygwin installation process. [#4611]
+<li>Correct the Java secondary_key_create method signature. [#4777]
+<li>Export additional Berkeley DB interfaces on Windows to
+support application-specific logging and recovery. [#4827]
+<li>Always complain when using version 2.96 of the gcc compiler. [#4878]
+<li>Add compile and load-time flags to configure for threads on
+UnixWare and OpenUNIX. [#4552] [#4950]
+</ol>
+
+</body>
+</html>
diff --git a/db/docs_src/ref/changelog/4.1.24.html b/db/docs_src/ref/changelog/4.1.24.html
new file mode 100644
index 000000000..4a185f747
--- /dev/null
+++ b/db/docs_src/ref/changelog/4.1.24.html
@@ -0,0 +1,409 @@
+<!--$Id: 4.1.24.html,v 1.6 2007/05/17 18:17:18 bostic Exp $-->
+<html>
+<head>
+<title>The Berkeley DB Package: DB 4.1.24 and 4.1.25 Change Log</title>
+<meta name="description" content="Berkeley DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Berkeley DB 4.1.24 and 4.1.25 Change Log</h3>
+
+<h3>Database or Log File On-Disk Format Changes:</h3>
+<ol>
+
+<li>All of the access method database formats changed in the Berkeley
+DB 4.1 release (Btree/Recno: version 8 to version 9, Hash: version 7
+to version 8, and Queue: version 3 to version 4). <b>The format changes
+are entirely backward-compatible, and no database upgrades are
+needed.</b>
+
+</ol>
+<h3>Major New Features:</h3>
+<ol>
+
+<li>Berkeley DB now includes support for database encryption using the AES
+encryption standard. [#1797]
+<li>Berkeley DB now includes support for database page checksums to
+allow detection of database corruption during I/O. [#1797]
+<li>The shared memory buffer pool code base was substantially reworked
+in the 4.1 release to improve concurrent throughput. [#4655]
+
+</ol>
+<h3>General Environment Changes:</h3>
+<ol>
+
+<li>Allow applications to specify transaction handles to the
+DB-&gt;open method call, so database creation can be grouped
+with other Berkeley DB calls in a single transaction. [#4257]
+<li>Add the DB_ENV-&gt;remove and DB_ENV-&gt;rename method calls that support
+transactional protection of database removal and renaming. [#4257]
+<li>Add the DB_ENV-&gt;set_flags flags DB_DIRECT_DB and DB_DIRECT_LOG,
+which disable the system's buffer cache where possible. [#4526]
+<li>Unlock the pthread mutex if pthread_cond_wait() returns an error. [#4872]
+<li>Fix a memory leak caused by running recovery. [#4913]
+<li>Fix a bug in which closing an environment with open database
+handles could result in application crashes. [#4991]
+<li>Fix a bug where DB_CONFIG files were ignored if the database
+environment defaulted to the application's current working directory. [#5265]
+<li>Fix a bug where transaction abort or commit could fail to destroy
+the handle. [#5633]
+<li>Fix a set of bugs where the Berkeley DB API could return DB_RUNRECOVERY
+without panic-ing the database environment itself or calling the application's
+panic-callback function. [#5743]
+<li>Fix a bug in where DB=&gt;rename and DB-&gt;remove method calls
+could leak a transaction and its locks. [#5824]
+<li>Fix a bug where recovery feedback could return values greater than
+100. [#6193]
+<li>Fix a bug where a page allocated by a transaction, eventually aborted
+because of application or system failure, could appear twice in the free
+list, if catastrophic recovery was performed. [#6222]
+<li>Add a new flag, DB_AUTO_COMMIT, that wraps all database modification
+operations inside a transaction, to the DB_ENV-&gt;set_flags method. [#6395]
+<li>Fix a bug where recovery could fail when upgrading between releases.
+[#6372]
+<li>Fix a recovery bug where pages that were repeatedly freed and
+allocated could be lost. [#6479] [#6501]
+<li>Change DB_CONFIG reading to handle non-&lt;newline&gt; terminated
+last line. [#6490]
+
+</ol>
+<h3>General Access Method Changes:</h3>
+<ol>
+
+<li>Allow applications to specify transaction handles to the
+DB-&gt;associate method call, so secondary index creation can be grouped
+with other Berkeley DB calls in a single transaction. [#4185]
+<li>Add a new flag, DB_AUTO_COMMIT, that wraps single database
+operations inside a transaction. This flag is supported by the
+DB-&gt;del, DB-&gt;open, DB-&gt;put, DB-&gt;truncate,DB_ENV-&gt;remove,
+and DB_ENV-&gt;rename methods. [#4257]
+<li>The DB_EXCL DB-&gt;open method flag has been enhanced to
+work on subdatabases. [#4257]
+<li>Fix a bug in which a DB-&gt;put(DB_APPEND) could result in leaked
+memory or a corruption in the returned record number. [#5002]
+<li>Fix a bug in the database salvage code that could
+leave pages pinned in the cache. [#5037]
+<li>Add a flag to the DB-&gt;verify method to output salvaged
+key/data pairs in printable characters. [#5037]
+<li>Fix a bug in which DB-&gt;verify() might continue and report extraneous
+database corruption after a fatal error. [#5131]
+<li>Fix a bug where calling the DB-&gt;stat method before the DB-&gt;open
+method could drop core. [#5190]
+<li>Fix a bug in which a DB-&gt;get, DBcursor-&gt;c_get, or
+DBcursor-&gt;c_pget on a secondary index, in the Concurrent Data Store
+product, could result in a deadlock. [#5192]
+<li>Fix a bug in which DB-&gt;verify() could correctly report errors but
+still return success. [#5297]
+<li>Add support for the DB-&gt;set_cache_priority interface, that allows
+applications to set the underlying cache priority for their database
+files. [#5375]
+<li>Fix a bug where calling DBcursor-&gt;c_pget with a database that is
+not a secondary index would drop core. [#5391]
+<li>Fix a bug where a bug in the DB-&gt;truncate method could cause recovery
+to fail. [#5679]
+<li>Fix a bug where DB_GET_RECNO would fail if specified to a secondary
+index. [#5811]
+<li>Fix a bug where building a secondary index for an existing primary
+database could fail in Concurrent Data Store environments. [#5811]
+<li>Fix a bug where the DB-&gt;rename method could fail, causing a
+problem during recovery. [#5893]
+<li>Fix a bug in which a DB-&gt;get or DB-&gt;pget call on a secondary
+index could fail when done with a handle shared among multiple threads.
+[#5899]
+<li>Fix a bug in which a DB-&gt;put operation on a database with
+off-page duplicates could leak a duplicate cursor, thereby preventing
+transactions being able to commit. [#5936]
+<li>Fix a bug where overflow page reference counts were not properly
+maintained when databases were truncated. [#6168]
+<li>Fix a bug where the bulk get APIs could allocate large amounts of
+heap memory. [#6439] [#6520]
+
+</ol>
+<h3>Btree Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug that prevented loads of sorted data, with duplicates
+at the end of the tree, from creating compact trees. [#4926]
+<li>No longer return a copy of the key if the DB_GET_BOTH or
+DB_GET_BOTH_RANGE flags are specified. [#4470]
+<li>Fix a bug where the fast-search code could hold an unlocked reference
+to a page, which could lead to recovery failure. [#5518]
+<li>Fix a bug where some cursor operations on a database, for which the
+bt_minkey size had been specified, could fail to use the correct overflow
+key/data item size. [#6183]
+<li>Fix a bug where the recovery of an aborted transaction that did a
+reverse Btree split might leave a page in an inconsistent state. [#6393]
+
+</ol>
+<h3>Hash Access Method Changes:</h3>
+<ol>
+
+<li>Fix bugs that could cause hash recovery to drop core. [#4978]
+<li>Use access method flags instead of interface flags to check for
+read-only access to a hash database with an application-specified hash
+function. [#5121]
+<li>Fix a bug where a hash database allocation of a new set of buckets
+may be improperly recovered by catastrophic recovery if the transaction
+is split across log files and the beginning segment of the transaction
+is not included in the set of logs to be recovered. [#5942]
+<li>Fix a bug where aborting particular hash allocations could lead to
+a database on which the verifier would loop infinitely. [#5966]
+<li>Fix a bug where a memory allocation failure could result in a system
+hang. [#5988]
+<li>Remove nelem from the Hash access method statistics (the value was
+incorrect once items had been added or removed from the database). [#6101]
+<li>Fix a bug where a page allocated by an aborted transaction might
+not be placed on the free list by recovery, if the file holding the page
+was created as part of recovery, and a later page was part of a hash
+bucket allocation. [#6184]
+<li>Fix a bug where allocated pages could be improperly recovered on
+systems that require explicit zero-ing of filesystem pages. [#6534]
+
+</ol>
+<h3>Queue Access Method Changes:</h3>
+<ol>
+
+<li>No longer return a copy of the key if the DB_SET_RANGE flag
+is specified. [#4470]
+<li>Fix a bug where DBcursor-&gt;c_get (with DB_MULTIPLE or DB_MULTIPLE_KEY
+specified) could fail on a Queue database if the record numbers had wrapped.
+[#6397]
+
+</ol>
+<h3>Recno Access Method Changes:</h3>
+<ol>
+
+<li>No longer return a copy of the key if the DB_GET_BOTH or
+DB_GET_BOTH_RANGE flags are specified. [#4470]
+<li>Fix a bug where non-transactional locking applications could leak
+locks when modifying Recno databases. [#5766]
+<li>Fix a bug where DBcursor-&gt;c_get with the DB_GET_RECNO flag would
+panic the environment if the cursor was uninitialized. [#5935]
+<li>Fix a bug where deleting pages from a three-level Recno tree could
+cause the database environment to panic. [#6232]
+
+</ol>
+<h3>C++-specific API Changes:</h3>
+<ol>
+
+<li>C++ DbLock::put is replaced by DbEnv::lock_put to match the
+C and Java API change in Release 4.0. [#5170]
+<li>Declared destructors and methods within Db and DbEnv classes to be
+virtual, making subclassing safer. [#5264]
+<li>Fixed a bug where Dbt objects with no flags set would not be filled
+with data by some operations. [#5706]
+<li>Added DbDeadlockException, DbRunRecoveryException, and
+DbLockNotGrantedException classes to C++, and throw them accordingly. [#6134]
+<li>Added C++ methods to support remaining conversions between C++
+classes and C structs where appropriate. In particular, DbTxn/DB_TXN
+conversions and DbMpoolFile/DB_MPOOLFILE were added. [#6278]
+<li>Fix a bug in DbEnv::~DbEnv() that could cause memory corruption if
+a DbEnv was deleted without being closed. [#6342]
+<li>Reordered C++ class declarations to avoid a GCC g++ warning about
+function inlining. [#6406]
+<li>Fix a bug in the DbEnv destructor that could cause memory corruption
+when an environment was destroyed without closing first. [#6342]
+<li>Change DbEnv and Db destructor behavior to close the handle if it
+was not already closed. [#6342]
+
+</ol>
+<h3>Java-specific API Changes:</h3>
+<ol>
+
+<li>Added check for system property "sleepycat.Berkeley DB.libfile" that
+can be used to specify a complete pathname for the JNI shared library.
+This is needed as a workaround on Mac OS X, where libtool cannot
+currently create a library with a .jnilib extension which is what the
+current JDK expects by default. [#5664]
+<li>Fixed handling of JVM out of memory conditions, when some JNI
+methods return NULL. When the JVM runs out of memory, calls should
+consistently fail with OutOfMemoryErrors. [#5995]
+<li>Added Dbt.get_object and Dbt.set_object convenience routines to the
+Java API to make using serialization easier. [#6113]
+<li>Fixed a bug that prevented Java's Db.set_feedback from working,
+fixed document for Java's Db.set_feedback, some callback methods were
+misnamed. [#6137]
+<li>Fix a NullPointerException in Db.finalize() if the database had been
+closed. [#6504]
+<li>Marked DbEnv constructor with "throws DbException". [#6342]
+
+</ol>
+<h3>Tcl-specific API Changes:</h3>
+
+None.
+
+<h3>RPC-specific Client/Server Changes:</h3>
+<ol>
+
+<li>Fix a bug where Db and DbEnv handles were not thread-safe. [#6102]
+
+</ol>
+<h3>Replication Changes:</h3>
+<ol>
+
+<li>A large number of replication bugs were fixed in this release.
+The replication support is now believed to be production quality.
+<li>Add the DB_ENV-&gt;set_rep_limit interface, allowing applications
+to limit the data sent in response to a single DB_ENV-&gt;rep_process_message
+call. [#5999]
+<li>Add the DB_ENV-&gt;set_rep_stat interface, returning information
+from the replication subsystem [#5919]
+
+</ol>
+<h3>XA Resource Manager Changes:</h3>
+<ol>
+
+<li>Added support for multithreaded XA. Environments can now have
+multiple XA transactions active. db_env_xa_attach() can be used to get
+a DB_TXN that corresponds to the XA transaction in the current thread.
+[#5049]
+<li>Added a com.sleepycat.Berkeley DB.xa package that implements J2EE
+support for XA. This includes new DbXAResource, DbXid classes that
+implement the XAResource and Xid interfaces. [#5049]
+<li>Fix a bug where aborting a prepared transaction after recovery may
+fail. [#6383]
+<li>Fix a bug where recovery might fail if a prepared transaction had
+previously extended the size of a file and then was aborted. [#6387]
+<li>Fix a bug where if the commit of a prepared transaction fails the
+transaction would be aborted. [#6389]
+
+</ol>
+<h3>Locking Subsystem Changes:</h3>
+<ol>
+
+<li>Fix a bug where lock counts were incorrect if a lock request
+returned DB_LOCK_NOTGRANTED or an error occurred. [#4923]
+<li>Fix a bug where lock downgrades were counted as releases, so the
+lock release statistics could be wrong. [#5762]
+<li>Fix a bug where the lock and transaction timeout values could not
+be reset by threads of control joining Berkeley DB database
+environments. [#5996]
+<li>Fix a bug where applications using lock and/or transaction timeouts
+could hit a race condition that would lead to a segmentation fault. [#6061]
+
+</ol>
+<h3>Logging Subsystem Changes:</h3>
+<ol>
+
+<li>DB_ENV-&gt;log_register and DB_ENV-&gt;log_unregister have been
+removed from the interface. [#0046]
+<li>Fix a bug where creating a database environment with a nonexistent
+logging directory could drop core. [#5833]
+<li>Add support allowing applications to change the log file size in
+existing database environments. [#4875]
+<li>Fix a bug where a write error on a log record spanning a buffer
+could cause transaction abort to fail and the database environment to
+panic. [#5830]
+
+</ol>
+
+<h3>Memory Pool Subsystem Changes:</h3>
+<ol>
+
+<li>The DB_INCOMPLETE error has been removed, as cache flushing can no
+longer return without completing. [#4655]
+<li>Fix a bug where Berkeley DB might refuse to open a file if the open
+was attempted while another thread was writing a large buffer. [#4885]
+<li>Prefer clean buffers to dirty buffers when selecting a buffer for
+eviction. [#4934]
+<li>Fix a bug where transaction checkpoint might miss flushing a buffer
+to disk. [#5033]
+<li>Fix a bug where Berkeley DB applications could run out of file
+descriptors. [#5535]
+<li>Fix bugs where Berkeley DB could self-deadlock on systems requiring
+mutex resource reclamation after application failure. [#5722] [#6523]
+
+</ol>
+<h3>Transaction Subsystem Changes:</h3>
+<ol>
+
+<li>Go back only one checkpoint, not two, when performing normal
+recovery. [#4284]
+<li>Fix a bug where an abort of a transaction could fail if there was no
+disk space for the log. [#5740]
+<li>Fix a bug where the checkpoint log-sequence-number could reference
+a nonexistent log record. [#5789]
+<li>Fix a bug where subtransactions which allocated pages from the
+filesystem and subsequently aborted could cause other pages allocated
+by sibling transactions to not be freed if the parent transaction then
+aborted. [#5903]
+<li>Fix a bug where transactions doing multiple updates to a queue
+database which spanned a checkpoint could be improperly handled by
+recovery. [#5898]
+
+</ol>
+<h3>Utility Changes:</h3>
+<ol>
+
+<li>Fix a bug where the -p option could not be specified with
+the -R or -r options. [#5037]
+<li>The utilities were modified to correctly size their private caches
+in order to handle databases with large page sizes. [#5055]
+<li>Fix a bug in which utilities run with the -N option would fail to
+ignore the environment's panic flag. [#5082]
+<li>Fix a bug where invalid log records could cause db_printlog to drop
+core. [#5173]
+<li>Add a new option to the db_verify utility to support verification
+of files that include databases having non-standard sorting or
+hash functions. [#5237]
+
+</ol>
+<h3>Configuration, Documentation, Portability and Build Changes:</h3>
+<ol>
+
+<li>Replace test-and-set mutexes on Windows with a new mutex
+implementation that signals an event to wake blocked threads. [#4413]
+<li>Support configuration of POSIX pthread mutexes on systems
+where the pthread mutexes do not support inter-process locks. [#4942]
+<li>Add mutex support for the ARM architecture using the gcc
+compiler. [#5018]
+<li>On Windows NT/2000/XP, switched to atomic seek-and-read/write
+operations to improve performance of concurrent reads [#0654].
+<li>Support cross-compilation using the GNU compiler tool chain. [#4558]
+<li>Fix a bug where libraries were always installed read-only. [#5096]
+<li>Fix a bug where temporary files on VxWorks could fail. [#5160]
+<li>Fix a bug where Berkeley DB did not install correctly if the system
+cp utility did not support the -f option. [#5111]
+<li>Correct the documentation for the Queue access method statistics
+field qs_cur_recno to be the "Next available record number". [#5190]
+<li>Fix a bug where file rename could fail on Windows/9X. [#5223]
+<li>Removed support for Microsoft Visual Studio 5.0 [#5231]
+<li>Switched to using HANDLEs for all I/O operations on Windows to
+overcome a hard limit of 2048 open file descriptors in Microsoft's C
+runtime library. [#5249]
+<li>Fix a bug where Berkeley DB error message routines could drop core
+on the PowerPC and UltraSPARC architectures. [#5331]
+<li>Rename OSTREAMCLASS to __DB_OSTREAMCLASS in db_cxx.h to avoid
+stepping on application name space. [#5402]
+<li>Support Linux on the S/390 architecture. [#5608]
+<li>Work around a bug in Solaris where the pthread_cond_wait call could
+return because a signal was delivered to the application. [#5640]
+<li>Fix build line for loadable libraries to include -module to support
+Mac OS X. [#5664]
+<li>Fix a bug in the PPC mutex support for the Mac OS X system. [#5781]
+<li>Added support for Java on Mac OS X. A workaround on the Java
+command line is currently necessary; it is documented. [#5664]
+<li>Added support for Tcl on Mac OS X. [#5664]
+<li>Update Windows build instructions to cover Visual C++ .NET. [#5684]
+<li>AIX configuration changes for building on AIX 4.3.3 and 5 with both
+standard and Visual Age compilers. [#5779]
+<li>Add a new UNIX configuration argument, --with-mutex=MUTEX, to allow
+applications to select a mutex implementation. [#6040]
+<li>Changed libtool and configure so we can now correctly build and
+install Tcl and Java loadable shared libraries that work on Mac OS X.
+[#6117]
+<li>Fix mutex alignment problems on historic HP-UX releases that could
+make multiprocess applications fail. [#6250]
+<li>Installed static .a archives on Mac OS X need to be built with the
+ranlib -c option so linked applications will not see undefined __db_jump
+errors. [#6215]
+<li>Upgrade pthread and mmap support in the uClibc library to support
+Berkeley DB. [#6268]
+<li>Fixed error in determining include directories during configuration
+for --enable-java. The error can cause compilation errors on certain
+systems with newer versions of gcc. [#6445]
+
+</ol>
+</body>
+</html>
diff --git a/db/docs_src/ref/changelog/4.1.25.html b/db/docs_src/ref/changelog/4.1.25.html
new file mode 100644
index 000000000..5df48a0bc
--- /dev/null
+++ b/db/docs_src/ref/changelog/4.1.25.html
@@ -0,0 +1,16 @@
+<!--"$Id: 4.1.25.html,v 1.3 2007/05/17 18:17:18 bostic Exp $ (Sleepycat) $Date: 2007/05/17 18:17:18 $"-->
+<html>
+<head>
+<title>The Berkeley DB Package: DB 4.1.25 Change Log</title>
+<meta name="description" content="Berkeley DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Berkeley DB 4.1.25 Change Log</h3>
+
+Berkeley DB version 4.1.25 is version 4.1.24 with all public patches
+applied. There were no public interface changes or new features.
+
+</body>
+</html>
diff --git a/db/docs_src/ref/changelog/4.2.52.html b/db/docs_src/ref/changelog/4.2.52.html
new file mode 100644
index 000000000..343a4f02e
--- /dev/null
+++ b/db/docs_src/ref/changelog/4.2.52.html
@@ -0,0 +1,811 @@
+<!--$Id: 4.2.52.html,v 1.76 2007/05/17 18:17:18 bostic Exp $-->
+<html>
+<head>
+<title>The Berkeley DB Package: DB 4.2.52 Change Log</title>
+<meta name="description" content="Berkeley DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Berkeley DB 4.2.52 Change Log</h3>
+
+<h3>Database or Log File On-Disk Format Changes:</h3>
+<ol>
+
+<li>Queue databases that use encryption or data checksum features with
+extent files will need to be dumped and reloaded prior to using with
+release 4.2. For more details please see the "Upgrading Berkeley DB
+Applications, Queue Access Method" in the Berkeley DB Reference Guide
+included in your download package. [#8671]
+<li>The on-disk log format changed.
+
+</ol>
+<h3>New Features:</h3>
+<ol>
+
+
+<li>Add support for a reduced memory footprint build of the Berkeley DB
+library. [#1967]
+<li>Add the DB_MPOOLFILE-&gt;set_flags interface which disallows the
+creation of backing filesystem files for in-memory databases. [#4224]
+<li>Add cache interfaces to limit the number of buffers written
+sequentially to allow applications to bound the time they will
+monopolize the disk. [#4935]
+<li>Support auto-deletion of log files. [#0040] [#6252]
+<li>The new Java DBX API for Berkeley DB allows Java programmers to use
+a familiar Java Collections style API, including Map, while interacting
+with the transactional Berkeley DB core engine. [#6260]
+<li>Support auto-commit with the DB-&gt;get method's consume operations.
+[#6954]
+<li>Add "get" methods to retrieve most settings. [#7061]
+<li>Add Javadoc documentation to the Berkeley DB release. [#7110]
+<li>Add support to Concurrent Data Store to allow duplication of write
+cursors. [#7167]
+<li>Add C++ utility classes for iterating over multiple key and data
+items returned from a cursor when using the DB_MULTIPLE or
+DB_MULTIPLE_KEY flags. [#7351]
+<li>Add CamelCased methods to the Java API. [#7396]
+<li>Add the DB_MPOOLFILE-&gt;set_maxsize interface to enforce a maximum
+database size. [#7582]
+<li>Add a toString() method for all Java *Stat classes (DbBtreeStat,
+DbHashStat, DbMpoolStat, etc.). This method creates a listing of values
+of all of the class member variables. [#7712]
+
+</ol>
+<h3>Database Environment Changes:</h3>
+<ol>
+
+<li>Add cache interfaces to limit the number of buffers written
+sequentially to allow applications to bound the time they will
+monopolize the disk. [#4935]
+<li>Fix a bug which could cause database environment open to hang, in
+database environments supporting cryptography. [#6621]
+<li>Fix a bug where a database environment panic might result from an
+out-of-disk-space error while rolling back a page allocation. [#6694]
+<li>Fix a bug where a database page write failure, in a database
+environment configured for encryption or byte-swapping, could cause page
+corruption. [#6791]
+<li>Fix a bug where DB-&gt;truncate could drop core if there were active
+cursors in the database. [#6846]
+<li>Fix a bug where for databases sharing a physical file required a
+file descriptor per database. [#6981]
+<li>Fix a bug where the panic callback routine was only being called in
+the first thread of control to detect the error when returning
+DB_RUNRECOVERY. [#7019]
+<li>Fix a bug where a transaction which contained a remove of a
+subdatabase and an allocation to another subdatabase in the same file
+might not properly be aborted. [#7356]
+<li>Fix a bug to now disallow DB_TRUNCATE on opens in locking
+environments, since we cannot prevent race conditions. In the absence
+of locking and transactions, DB_TRUNCATE will truncate ANY file for
+which the user has appropriate permissions. [#7345]
+<li>Fix several bugs around concurrent creation of databases. [#7363]
+<li>Change methods in DbEnv that provide access to statistics
+information so that they now return instances of the proper classes.
+[#7395]
+<li>Replace the DB-&gt;set_cache_priority API with the
+DB_MPOOLFILE-&gt;set_priority API. [#7545]
+<li>Fix a bug where a failure during a creation of a subdatabase could
+then fail in the dbremove cleanup, causing a crash. [#7579]
+<li>Allow creating into a file that was renamed within the same
+transaction. [#7581]
+<li>Fix a bug where DB_ENV-&gt;txn_stat could drop core if there are
+more-than-expected active transactions. [#7638]
+<li>Change Berkeley DB to ignore user-specified byte orders when
+creating a database in an already existing physical file. [#7640]
+<li>Fix a bug where a database rename that is aborted would leak some
+memory. [#7789]
+<li>Fix a bug where files could not be renamed or removed if they were
+not writable. [#7819]
+<li>Fix a bug where an error during a database open may leak memory in
+the mpool region. [#7834]
+<li>Fix a bug where the DB_ENV-&gt;trickle_sync method could flush all of
+the dirty buffers in the cache rather than a subset. [#7863]
+<li>Fix a bug where an attempt to rename or remove an open file in the
+same transaction could succeed, even though this is not allowed and will
+not work on Windows. [#7917]
+<li>Fix a bug where if a recovery interval in the log contained only
+database opens then a recovery might report "Improper file close".
+[#7886]
+<li>Add a flag, DB_INIT_REP to DB_ENV-&gt;open to initialize Replication
+subsystem. [#8299]
+<li>Fix a bug where file remove and rename operations would not block
+each other if they were in different transactions. [#8340]
+<li>Change Berkeley DB to not propagate error returns from the
+application's rep_send function out of the Berkeley DB API.
+[#8496][#8522]
+<li>Remove restriction that DB_TRUNCATE is not allowed on files with
+subdatabases. This restriction was introduced in 4.1.25. [#8852]
+
+</ol>
+<h3>Concurrent Data Store Changes:</h3>
+<ol>
+
+<li>Fix a bug where opens with other threads/processes actively acquiring
+locks on database handles could deadlock. [#6286]
+<li>Add support to Concurrent Data Store to allow duplication of write
+cursors. [#7167]
+
+</ol>
+<h3>General Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug where the truncate of a database with associated secondary
+databases did not truncate the secondaries. [#6585]
+<li>Fix a bug in which an out-of-disk condition during a transactional
+database create, remove, or rename could cause a crash. [#6695]
+<li>Fix a bug where system errors unknown to the C library could cause
+Berkeley DB utilities to drop core on Solaris. [#6728]
+<li>Fix a bug where Berkeley DB could overwrite incorrectly formatted
+files rather than returning an error to the application during open.
+[#6769]
+<li>Fix a bug DB handle reference counts were incorrect, leading to
+spurious warning about open DB handles. [#6818]
+<li>Fix a bug where cursor adjustments across multiple DB handles could
+fail. [#6820]
+<li>Fix a bug where a failure during open could result in a hang.
+[#6902]
+<li>Fix a bug where repeated failures during certain stages of opens
+could cause error messages to appear during recovery. [#7008]
+<li>Fix a bug in secondary indices with multiple threads calling
+DBC-&gtput that resulted in DB_NOTFOUND being returned. [#7124]
+<li>Fix a bug where database verification might reference memory which
+was previously freed after reporting an error. [#7137]
+<li>Rename the DB_CHKSUM_SHA1 to DB_CHKSUM as Berkeley DB only uses SHA1
+for encrypted pages, not for clear text pages. [#7095]
+<li>Fix a bug where DB-&gt;rename could fail silently if the underlying
+system rename call failed. [#7322]
+<li>Fix a bug where Berkeley DB failed to open a file with FCNTL locking
+and 0-length files. [#7345]
+<li>Prohibit the use of the DB_RMW flag on get operations for DB handles
+opened in transactional mode. [#7407]
+<li>Standardize when Berkeley DB will return DB_LOCK_NOTGRANTED, or
+throw DbLockNotGrantedException, versus returning DB_LOCK_DEADLOCK or
+throwing DbDeadlockException. Fix bugs in the C++ and Java APIs where
+DbException was thrown, encapsulating DB_LOCK_NOTGRANTED, rather than
+throwing DbLockNotGrantedException. [#7549]
+<li>Fix a bug where Berkeley DB could hang on a race condition if a
+checkpoint was running at the same time another thread was closing a
+database for the last time. [#7604]
+<li>Fix several bugs that made multiple filesystem level operations
+inside a single transaction break. [#7728]
+<li>Fix a memory leak in the abort path of a sub-database create.
+[#7790]
+<li>Fix a race condition with file close that could cause NULL pointer
+deference under load. [#8235]
+<li>Fix a bug to correct the calculation of the amount of space needed
+to return off page duplicates using the DB_MULTIPLE interface. [#8437]
+<li>Fix a bug where the duplicate data item count could be incorrect if
+a cursor was used to first overwrite and then delete a duplicate which
+was part of a set of duplicates large enough to have been stored outside
+the standard access method pages. [#8445]
+<li>Fix a bug where The DB_MULTIPLE interface might fail to return the
+proper duplicates in some edge cases. [#8485]
+<li>Fix a bug where DB-&gt;get(...DB_MULTIPLE) would not return a
+reasonable estimate of the buffer size required to return a set of
+duplicates. [#8513]
+<li>Fix a bug where the DbCursor.count method could return the wrong
+count in the case of small (on-page) duplicate sets, where a still-open
+cursor has been used to delete one of the duplicate data items. [#8851]
+<li>Fix a bug where a non-transactional cursor using DB_MULTIPLE_KEY
+could briefly be left pointing at an unlocked page. This could lead to
+a race condition with another thread deleting records resulting in the
+wrong record being deleted. [#8926]
+<li>Fix a bug where a key/data item could be lost if a cursor is used
+to do a delete, and then immediately used to do an insert which causes
+a set of duplicates to be shifted to an off-page Btree. [#9085]
+
+</ol>
+<h3>Btree Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug where a deleted item could be left on a database page
+causing database verification to fail. [#6059]
+<li>Fix a bug where a page may be left pinned in the cache if a deadlock
+occurs during a DB-&gt;put operation. [#6875]
+<li>Fix a bug where a deleted record may not be removed from a Btree
+page if the page is split while another cursor is trying to delete a
+record on the page. [#6059]
+<li>Fix a bug where records marked for deletion were incorrectly counted
+when retrieving in a Btree by record number. [#7133]
+<li>Fix a bug where a page and lock were left pinned if an application
+requested a record number past the end of the file when retrieving in a
+Btree by record number. [#7133]
+<li>Fix a bug where deleted keys were included in the key count for the
+DB-&gtstat call. [#7133]
+<li>Fix a bug where specifying MULTIPLE_KEY and NEXT_DUP to the bulk get
+interfaces might return the wrong data if all the duplicates could not
+fit in a single buffer. [#7192]
+<li>Remove assertions that triggered failures that were correct
+executions. [#8032]
+<li>Fix a bug where duplicate data items were moved onto overflow pages
+before it was necessary. [#8082]
+<li>Fix a bug where the DB-&gt;verify method might incorrectly complain
+about a tree's overflow page reference count. [#8061]
+<li>Fix a bug that could cause DB_MULTIPLE on a Btree database to return
+an incorrect data field at the end of buffer. [#8442]
+<li>Fix a bug where DBC-&gt;c_count was returning an incorrect count if the
+cursor was positioned on an item that had just been deleted. [#8851]
+<li>Remove the test for bt_maxkey in the Btree put code. If it is set
+to 1 it can cause an infinite loop. [#8904]
+
+</ol>
+<h3>Hash Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug where Hash databases could be corrupted on filesystems
+that do not zero-fill implicitly created blocks. [#6588]
+<li>Fix a bug where creating a Hash database with an initial size larger
+than 4GB would fail. [#6805]
+<li>Fix a bug where a page in an unused hash bucket might not be empty
+if there was a disk error while writing the log record for the bucket
+split. [#7035]
+<li>Fix a bug where two threads opening a hash database at the same time
+might deadlock. [#7159]
+<li>Fix a bug where a hash cursor was not updated properly when doing a
+put with DB_NODUPDATA specified. [#7361]
+<li>Fix a bug that could cause DB_MULTIPLE_KEY on Hash databases to
+return improper results when moving from a key with duplicates to a key
+without duplicates. [#8442]
+
+</ol>
+<h3>Queue Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug where opening an in-memory Queue database with extent size
+specified will dump core. [#6795]
+<li>Support auto-commit with the DB-&gt;get method's consume operations.
+[#6954]
+<li>Fix a bug where calling the sync method on a queue database with
+extents may hang if there are active consumers. [#7022]
+<li>Fix a bug where a get(...MULTIPLE...) might lead to an infinite loop
+or return the wrong record number(s) if there was a deleted record at
+the beginning of a page or the buffer was filled exactly at the end of
+a page. [#7064]
+<li>Fix a bug where a database environment checkpoint might hang if a
+thread was blocked waiting for a record while doing a DB_CONSUME_WAIT
+on a Queue database. [#7086]
+<li>Fix a bug where queue extent files would not be removed if a queue
+with extents was removed and its record numbers wrapped around the
+maximum record number. [#7191]
+<li>Fix a bug where a DB-&gt;remove of an extent based Queue with a small
+number of pages per extent would generate a segmentation fault. [#7249]
+<li>Fix a bug where verify and salvage on queues with extent files did
+not consider the extent files. [#7294]
+<li>Fix a bug when transaction timeouts are set in the environment they
+would get applied to some non-transactional operations and could cause
+a failure during the abort of a queue operation. [#7641]
+<li>Fix a bug when the record numbers in a queue database wrap around
+at 232, a cursor positioned on a record near the head of the queue that
+is then deleted, may return DB_NOTFOUND when get is specified with
+DB_NEXT rather than the next non-deleted record. [#7979]
+<li>Fix a bug where a record lock will not be removed when the first
+record in the queue is deleted without a transaction (not using
+DB_CONSUME). [#8434]
+<li>Fix a bug where byte swapping was not handled properly in queue
+extent files. [#8358]
+<li>Fix a bug where Queue extent file pages were not properly typed,
+causing the extent files not to use encryption or checksums, even if
+those options had been specified. This fix requires a database upgrade
+for any affected Queue databases. [#8671]
+<li>Fix a bug where truncating a queue with extents may fail to remove
+the last extent file. [#8716]
+<li>Fix a bug where a rename or remove of a QUEUE database with extents
+might leave empty extent files behind. [#8729]
+<li>Fix a bug where on Windows operating systems a "Permission denied"
+error may be raised if a Queue extent is reopened while it is in the
+process of being unlinked. [#8710]
+
+</ol>
+<h3>Recno Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug where the DB-&gt;truncate method may return the wrong record
+count if there are deleted records in the database. [#6788]
+<li>Fix a bug where internal nodes of Recno trees could get wrong record
+count if a log write failed and the log was later applied during
+recovery. [#6841]
+<li>Fix a bug where a cursor next operation could infinitely loop after
+deleting a record, when the deleted record was immediately followed by
+implicitly created records. [#8133]
+
+</ol>
+<h3>C++-specific API Changes:</h3>
+<ol>
+
+<li>Document the DB-&gt;del method can return DB_KEYEMPTY for Queue or
+Recno databases. The C++ and Java APIs now return this value rather than
+throwing an exception. [#7030]
+<li>Add "get" methods to retrieve most settings. [#7061]
+<li>Fix a bug where applications calling DB-&gt;verify from the C++ or Java
+APIs could drop core. Change the DB-&gt;verify method API to act as a DB
+handle destructor. [#7418]
+<li>Add utility classes for iterating over multiple key and data items
+returned from a cursor when using the DB_MULTIPLE or DB_MULTIPLE_KEY
+flags. These classes, DbMultipleDataIterator, DbMultipleKeyDataIterator,
+and DbMultipleRecnoDataIterator, mirror the DB Java API and are provided
+as replacements for the C macros, DB_MULTIPLE_INIT, DB_MULTIPLE_NEXT,
+DB_MULTIPLE_KEY_NEXT, and DB_MULTIPLE. [#7351]
+<li>Fix a bug DbException was thrown, encapsulating DB_LOCK_NOTGRANTED,
+rather than throwing DbLockNotGrantedException. [#7549]
+<li>Add the DbEnv handle to exceptions thrown by the C++ and Java APIs,
+where possible. [#7303]
+<li>Fix a bug in the C++ DbEnv::set_rep_transport signature so that the
+envid parameter is signed. [#8303]
+<li>Make the fields of DB_LSN public in the DbLsn class. [#8422]
+
+</ol>
+<h3>Java-specific API Changes:</h3>
+<ol>
+
+<li>New Java API (com.sleepycat.dbx.*) for the transactional storage of
+data using the Java Collections design pattern. [#6569]
+<li>Fix a bug in the Java Dbt.get_recno_key_data() method when used
+inside callbacks. [#6668]
+<li>Fix Java DbMpoolStat class to match the DB_MPOOL_STAT struct.
+[#6821]
+<li>Fix a bug where Dbc.put expected key data even if the key was
+unused. [#6932]
+<li>Fix a bug in the Java API secondary_key_create callback where memory
+was freed incorrectly, causing JVM crashes. [#6970]
+<li>Re-implement the Java API to improve performance and maintenance.
+Fix several inconsistencies in the Java API:
+<ol type="a">
+<li>Db.put(), Dbc.get() and Dbc.put() preserve key size
+<li>Dbc.get() returns DB_KEYEMPTY rather than throwing an exception
+<li>The return type of Db.close() is now void. [#7002]
+</ol>
+<li>Document the DB-&gt;del method can return DB_KEYEMPTY for Queue or
+Recno databases. The C++ and Java APIs now return this value rather than
+throwing an exception. [#7030]
+<li>Add "get" methods to retrieve most settings. [#7061]
+<li>Add Javadoc documentation to the Berkeley DB release. [#7110]
+<li>Fix a bug that caused potential memory corruption when using the
+Java API and specifying the DB_DBT_REALLOC flag. [#7215]
+<li>Add the DbEnv handle to exceptions thrown by the C++ and Java APIs,
+where possible. [#7303]
+<li>Map existing c-style API to a more Java camel case API with Java
+style naming. Retained deprecated older API for the 4.2 release for
+backwards support in all cases except callback interfaces. Also
+overloaded methods such as get/pget() into multiple different get()
+calls to clean up call structure. [#7378]
+<li>Add CamelCased methods to the Java API. [#7396]
+<li>Fix a bug where applications calling DB-&gt;verify from the C++ or Java
+APIs could drop core. Change the DB-&gt;verify method API to act as a DB
+handle destructor. [#7418]
+<li>Fix a bug DbException was thrown, encapsulating DB_LOCK_NOTGRANTED,
+rather than throwing DbLockNotGrantedException. [#7549]
+<li>Add a toString() method for all Java *Stat classes (DbBtreeStat,
+DbHashStat, DbMpoolStat, etc.). This method creates a listing of values
+of all of the class member variables. [#7712]
+<li>Remove Db.fd() method from Java API as it has no value to a Java
+programmer. [#7716]
+<li>Add an accessible timeout field in the DbLockRequest class, needed
+for the DB_LOCK_GET_TIMEOUT operation of DbEnv.lockVector. [#8043]
+<li>Fix replication method calls from Java API. [#8467]
+<li>Fix a bug where exception returns were inconsistent. [#8622]
+<li>Change the Java API so that it throws an IllegalArgumentException
+rather than a DbException with the platform-specific EINVAL. [#8978]
+
+</ol>
+<h3>Tcl-specific API Changes:</h3>
+<ol>
+
+<li>Add "get" methods to retrieve most settings. [#7061]
+<li>Brought Tcl's $env set_flags command up to date with available flags.
+[#7385]
+<li>Update Berkeley DB to compile cleanly against the Tcl/Tk 8.4 release.
+[#7612]
+<li>Made txn_checkpoint publicly available. [#8594]
+
+</ol>
+<h3>RPC-specific Client/Server Changes:</h3>
+<ol>
+
+<li>Fix two bugs in the RPC server where incorrect handling of illegal
+environment home directories caused server crashes. [#7075]
+<li>Fix a bug where the DB_ENV-&gt;close method would fail in RPC clients
+if the DB_ENV-&gt;open method was never called. [#8200]
+
+</ol>
+<h3>Replication Changes:</h3>
+<ol>
+
+<li>Write prepare records synchronously on replication clients so that
+prepare operations are always honored in the case of failure. [#6416]
+<li>Change replication elections so that the client with the biggest LSN
+wins, and priority is a secondary factor. [#6568]
+<li>Fix a bug where replicas could not remove log files because the
+checkpoint lsn was not being updated properly. [#6620]
+<li>Force prepare records out to disk regardless of the setting of the
+DB_TXN_NOSYNC flag. [#6614]
+<li>Add a new flag, DB_REP_NOBUFFER, which gets passed to the rep_send
+function specified in DBENV-&gt;rep_set_transport, to indicate that the
+message should not be buffered on the master, but should be immediately
+transmitted to the client(s). [#6680]
+<li>Fix a replication election bug where Berkeley DB could fail to elect
+a master even if a master already existed. [#6702]
+<li>Allow environment wide setting of DB_AUTO_COMMIT on replication
+clients. [#6732]
+<li>Fix a replication bug where a client coming up in the midst of an
+election might not participate in the election. [#6826]
+<li>Add log_flushes when sites become replication masters. If log_flush
+fails, panic the environment since the clients already have the commits.
+[#6873]
+<li>Fix a replication bug where a brand new client syncing up could
+generate an error on the master. [#6927]
+<li>Fix a bug where clients synchronize with the master when they come
+up with the same master after a client-side disconnect or failures.
+[#6986]
+<li>Fix several bugs in replication elections turned up by test rep005.
+[#6990]
+<li>Fix a bug where aborted hash group allocations were not properly
+applied on replicas. [#7039]
+<li>Fix race conditions between running client recovery and other
+threads calling replication and other Berkeley DB functions. [#7402]
+[#8035]
+<li>Use shared memory region for all replication flags. [#7573]
+<li>Fix a bug where log archive on clients could prematurely remove log
+files. [#7659]
+<li>Return an error if a non-replication dbenv handle attempts to write
+log records to a replication environment. [#7752]
+<li>Fix a race condition when clients applied log records, where we
+would store a log record locally and then never notice we have it, and
+need to re-request it from the master, causing the client to get far
+behind the master. [#7765]
+<li>Fix inconsistencies between the documentation and actual code
+regarding when replication methods can be called. [#7775]
+<li>Fix a bug where Berkeley DB would wait forever if a NEWMASTER
+message got dropped. [#7897]
+<li>Fix a bug where the master environment ID did not get set when you
+called DBENV-&gt;rep_start as a master. [#7899]
+<li>Fix a bug where operations on a queue database will not get
+replicated if the transactions that include the operations are committed
+out of order with the operations. [#7904]
+<li>Fix bugs in log_c_get where an invalid LSN could access invalid
+addresses. Fix bug in elections where a client upgrading to master
+didn't write a txn_recycle record. [#7964]
+<li>Fix a bug where REP_VERIFY_FAIL during client recovery wasn't being
+handled. [#8040]
+<li>Return an error if the application calls rep_process_message before
+calling rep_start when starting. [#8057]
+<li>Fix a bug to ensure that replication generation numbers always
+increase and are never reset to 1. [#8136]
+<li>Modify log message retransmission protocol to efficiently handle the
+case where a large number of contiguous messages were dropped at once.
+[#8182] [#8169] [#8188]
+<li>Fix a bug where using the wrong mutex in replication which under
+certain conditions could cause replication to hang. Also fix a bug where
+incorrectly setting the checkpoint LSN could cause recovery to take a
+very long time. [#8183]
+<li>Fix bug where a message could get sent to an invalid master. [#8184]
+<li>Fix a bug where a local variable in log_archive was not initialized.
+[#8230]
+<li>Fix a bug where elections could hang. [#8254]
+<li>Fix a bug to ensure that we can always remove/re-create the temporary
+replication database after a failure. [#8266]
+<li>Add a flag, DB_INIT_REP to DB_ENV-&gt;open to initialize Replication
+subsystem. [#8299]
+<li>Add new ret_lsnp argument to rep_process_message so that LSNs can
+be returned to clients on permanent records. Add new lsnp arg to the
+send callback function so that the master can know the LSNs of records
+as well. [#8308]
+<li>Narrow the window where we block due to client recovery. [#8316]
+<li>Fix a bug in log_c_incursor where we would not detect that a record
+was already in the buffer. [#8330]
+<li>Fix a bug that would allow elections to be managed incorrectly.
+[#8360]
+<li>Fix a bug where replicas were not maintaining meta-&gtlast_pgno
+correctly. [#8378]
+<li>Fix a bug in truncating log after recovery to a timestamp or
+replication-based recovery. [#8387]
+<li>Fix a bug where a checkpoint record written as the first record in
+a log could cause recovery to fail. [#8391]
+<li>Fix a bug where a client would return DB_NOTFOUND instead of
+DB_REP_OUTDATED when it was unable to synchronize with the master
+because it ran out of log records. [#8399]
+<li>Fix a bug where log file changes were not handled properly in
+replication. [#8400] [#8420]
+<li>Fix a bug where checking for invalid log header data could fail
+incorrectly. [#8460]
+<li>Fix a bug where DB_REP_PERMANENT was not being set when log records
+were re-transmitted. [#8473]
+<li>Modify elections so that all participants elect in the same election
+generation. [#8590]
+<li>Fix bug where rep_apply was masking an error return. Also return
+DB_RUNRECOVERY if the replication client cannot commit or checkpoint.
+[#8636]
+<li>Fix a bug to update the last_pgno on the meta page on free as well
+as alloc. [#8637]
+<li>Fix a bug to roll back the LSN on a queue database metapage if we're
+going to truncate the log. Fix a bug in MASTER_CHECK so we don't apply
+log messages from an unknown master. Fix a bug to perform a sync on
+rep_close. [#8601]
+<li>Fix a bug so that we reset the LSN when putting pages on the free
+list. [#8685]
+<li>Fix a bug where replication was not properly calling db_shalloc.
+[#8811]
+<li>Fix a bug where replication flags were getting set in multiple steps
+which could cause an Assertion Failure in log_compare. [#8889]
+<li>Fix a bug where open database handles could cause problems on
+clients. [#8936]
+<li>Fix a bug where in dbreg code where an fnp with an invalid fileid
+could be found on the lp-&gt;fq list. [#8963]
+<li>Fix a bug where a reader on a replication client could see partial
+updates when replicating databases with off page duplicates or overflow
+records. [#9041]
+<li>Fix a bug that could result in a self deadlock in dbreg under
+replication. [#9138]
+<li>Fix a memory leak in replication. [#9255]
+
+</ol>
+<h3>XA Resource Manager Changes:</h3>
+<ol>
+
+<li>Fix a bug where a failed write during XA transaction prepare could
+result in a checksum error in the log. [#6760]
+<li>Fix a bug where we were not properly handling DB_AUTO_COMMIT in XA
+transactions and where we were not honoring the XA transaction during
+an XA-protected open. [#6851]
+<li>Add infrastructure support for multithreaded XA. [#6865]
+<li>Display XA status and ID as part of db_stat -t output. [#6413]
+
+</ol>
+<h3>Locking Subsystem Changes:</h3>
+<ol>
+
+<li>Fix a bug where locks were not cleared in an off-page duplicate
+cursor. [#6950]
+<li>Fix a bug where a deadlock may not be detected if dirty reads are
+enabled and the deadlock involves an aborting transaction. [#7143]
+<li>Fix a bug where a transaction doing updates while using dirty read
+locking might fail while aborting the transaction with a deadlock.
+Several other locking issues were also fixed:
+<ol type="a">
+<li>failure to remove dirty read locks prior to aborting a transaction,
+<li>calling upgrade on other than WWRITE locks,
+<li>failure to remove expired locks from the locker queue,
+<li>clearing the lock timeout before looking at it. [#7267]
+</ol>
+<li>Fix a bug when dirty reads are enabled a writer might be blocked on
+a lock that it had previously obtained. Dirty readers would also wait
+behind regular readers when they could have safely read a page. [#7502]
+<li>Fix a bug where a DB-&gtput using CDB gets a lock timeout then the
+error "Closing already closed cursor". [#7597]
+<li>Modify the maximum test-and-set mutex sleep for logical page locks
+at 10ms, everything else at 25ms. [#7675]
+<li>Fix a bug where the DB_LOCK_TIMEOUT mode of env-&gt;lock_vec could
+hang. [#7682]
+<li>Fix a bug where running with only transaction timeouts for deadlock
+detection might deadlock without being detected if more than one
+transaction times out while trying to avoid searching a Btree on
+repeated inserts. [#7787]
+<li>Fix a bug that could cause detection to not run when there was a
+lock that should be timed out. [#8588]
+<li>Fix a bug with using dirty reads with subtransactions. If a writing
+subtransaction aborts and then is blocked, the deadlock may not be
+detected. [#9193]
+<li>Fix a bug where handle locks were not being correctly updated when
+releasing read locks during transaction prepare. [#9275]
+
+</ol>
+<h3>Logging Subsystem Changes:</h3>
+<ol>
+
+<li>Fix a bug where if a write error occurred while committing a
+transaction with DB_WRITE_NOSYNC enabled the transaction may appear to
+be committed in the log while it was really aborted. [#7034]
+<li>Fix a bug where multiprocess applications could violate write-ahead
+logging requirements if one process wrote a log record but didn't flush
+it, the current log file then changed, and another process wrote a
+database page before the log record was written to disk. [#6999]
+<li>Fix a bug where fatal recovery could fail with a "Transaction
+already committed" error if recovery had been run and there are no
+active transactions in the part of the log following the last
+checkpoint. [#7234]
+<li>Fix a bug where recovery would fail to put freed pages onto the free
+list, when both committed and aborted subtransactions that allocated new
+pages were present. This only affected prepared transactions. [#7403]
+<li>Fix a bug where open errors during recovery get propagated unless
+they are reporting missing files, which might correctly have been
+removed. [#7578]
+<li>Fix a bug so that we now validate a log file before writing to it.
+[#7580]
+<li>Fix a bug where Berkeley DB could display the unnecessary error
+message "DB_LOGC-&gt;get: short read" during recovery. [#7700]
+<li>Fix a bug where recovery may fail if it tries to reallocate a page
+to a file that is out of space. [#7780]
+<li>Change Berkeley DB so that operations on databases opened in a
+non-transactional mode do not write records into the database logs.
+[#7843]
+<li>Fix a bug where Berkeley DB could timeout waiting for locks (on
+Queue databases) during recovery. [#7927]
+<li>Fix a bug in truncating log after recovery to a timestamp or
+replication-based recovery. [#8387]
+<li>Fix a bug where recovery can be slow if the log contains many opens
+of files which contain multiple databases. [#8423]
+<li>Fix a bug where a file id could be used before its open was logged.
+[#8496]
+<li>Fix a bug where recovery would partially undo a database create if
+the transaction which created it spanned log files and not all of the
+log files were present during recovery. [#9039]
+
+</ol>
+<h3>Memory Pool Subsystem Changes:</h3>
+<ol>
+
+<li>Fix a bug where checksummed files could not be read on different
+endian systems. [#6429]
+<li>Fix a bug where read-only databases were not mapped into memory but
+were instead read through the Berkeley DB buffer cache. [#6671]
+<li>Fix a bug where Berkeley DB could loop infinitely if the cache was
+sized so small that all of its pages were simultaneously pinned by the
+application. [#6681]
+<li>Fix a bug where DbEnv.sync could fail to write a page if another
+thread unpinned the page at the same time and there were no other pages
+in that hash bucket. [#6793]
+<li>Fix a bug where threads of control may hang if multiple threads of
+control are opening and closing a database at the same time. [#6953]
+<li>Fix a bug where a database created without checksums but later
+opened with checksums would result in a checksum error. [#6959]
+<li>Fix a bug where a multiprocess application suite could see
+incorrect data if one process opened a non-checksummed database
+correctly and another process subsequently opened the same database,
+specifying checksums. [#6959]
+<li>Change to avoid database open and flush when handles are discarded,
+if the handle was never used to write anything. [#7232]
+<li>Fix a bug where applications dirtying the entire cache in a single
+database operation would see large performance degradation. [#7273]
+<li>Fix a bug where contention in the buffer pool could cause the buffer
+allocation algorithm to unnecessarily sleep waiting for buffers to be
+freed. [#7572]
+
+</ol>
+<h3>Transaction Subsystem Changes:</h3>
+<ol>
+
+<li>Fix a bug where disk write errors in encrypted database
+environments, causing transaction abort, could corrupt the log. [#6768]
+<li>Fix a bug where catastrophic recovery may fail on a log which has a
+prepared transaction which aborted the allocation of a new page and was
+rolled forward previously by another recovery session. [#6790]
+<li>Fix a bug where a transaction that contains a database truncate
+followed by page allocations, may not properly undo the truncate if
+aborted. [#6862]
+<li>Fix a bug which causes Berkeley DB to checkpoint quiescent database
+environments. [#6933]
+<li>Fix a bug where if a transaction prepare fails while writing the
+prepare log record, and it contains a subtransaction which did an
+allocation later, recovery of the database may fail with a log sequence
+error. [#6874]
+<li>Do not abort prepared but not yet completed transactions when
+closing an environment. [#6993]
+<li>Fix a bug where operations on the source of a rename in the same
+transaction would fail. [#7537]
+<li>Fix a bug where a parent transaction which aborts when it tries to
+write its commit record could fail with a log sequence error, if the
+parent transaction has an aborted child transaction which allocated a
+new page from the operating system. [#7251]
+<li>Fix a bug where Berkeley DB could try to abort a partial transaction
+because it contained a partial subtransaction. [#7922]
+<li>Fix a bug where Berkeley DB could drop core when transactions were
+configured without locking support. [#9255]
+
+</ol>
+<h3>Utility Changes:</h3>
+<ol>
+
+<li>Fix a bug where db_load could core dump or corrupt record numbers
+by walking off the end of a string. [#6985]
+<li>Fix a bug where db_load could run out of locks when loading large
+numbers of records. [#7173]
+<li>Fix a bug where db_dump could drop core when salvaging unaligned
+entries on a Btree page. [#7247]
+<li>Fix a bug where hash statistics did not include overflow items in
+the count of database data elements. [#7473]
+<li>Fix a bug where an corruption in an overflow page list could cause
+DB-&gt;verify to infinitely loop. [#7663]
+<li>Fix a bug where verify could display extraneous error messages when
+verifying a Btree with corrupt or missing pages. [#7750]
+<li>Fix a bug that could cause the db_stat utility to display values
+larger than 100 for various percentages. [#7779]
+<li>Fix a memory overflow bug in db_load. [#8124]
+<li>Fix a minor leak when verifying queue databases. [#8620]
+
+</ol>
+<h3>Configuration, Documentation, Portability and Build Changes:</h3>
+<ol>
+
+<li>Add support for a reduced memory footprint build of the Berkeley DB
+library. [#1967]
+<li>Change DB_SYSTEM_MEM on Windows to fail immediately when opening an
+environment whose regions were deleted on last close. [#4882]
+<li>Update queue.h to current FreeBSD version. [#5494]
+<li>Support for and certification under Tornado 2.2/VxWorks 5.5. [#5522]
+<li>Add support for IBM OS/390 using the IBM C compiler. [#6486]
+<li>Specify -pthread as a compile flag for Tru64 systems, not just as a
+linker flag. [#6637]
+<li>Remove automatic aggregate initialization for non-ANSI compilers.
+[#6664]
+<li>Fix a link error ("GetLongPathNameA could not be located in the
+dynamic link library KERNEL32.dll") that prevented Berkeley DB from
+loading on Windows NT. [#6665]
+<li>Remove use of U suffix in crypto build to denote unsigned integers
+for non-ANSI compilers. [#6663]
+<li>Fix Java API documentation problems where API return values were int
+and should have been void, or vice versa. [#6675]
+<li>Add an include of &lt;sys/fcntl.h&gt; for old Solaris systems with the
+directio call. [#6707]
+<li>Fix Java API documentation problem where the Db.associate call was
+missing a DbTxn handle. [#6714]
+<li>Clean up source based on gcc's -Wmissing-prototypes option. [#6759]
+<li>Ignore pread/pwrite interfaces on NCR's System V R 4.3 system.
+[#6766]
+<li>Fix an interface compatibility with Sendmail and Postfix releases.
+[#6769]
+<li>Fix warnings when the Tcl API was built without TEST_CONFIG defined.
+[#6789]
+<li>Change Win32 mutexes to use the shared code for all mutexes to fix
+handle leak. [#6822] [#6853]
+<li>Fix the Windows/Tcl API export list for Berkeley DB XML. [#6931]
+<li>Add the --enable-mingw configuration option to build Berkeley DB for
+MinGW. [#6973]
+<li>Add a CPU pause to the mutex spinlock code to improve performance
+on newer Pentium CPUs. [#6975]
+<li>Upgrade read-only file descriptors to read-write during checkpoint,
+it's an error to call FlushFileBuffers on a read-only Windows file
+handle. [#7051]
+<li>Fix configure so that Java applications on HP/UX can access RPC
+environments. [#7066]
+<li>Update Berkeley DB to use libtool 1.5 to allow building of shared
+libraries on various platforms. This should not be visible except for
+changes to the Makefile and internal build procedures. [#7080]
+<li>Fix a bug where the configure script displayed incorrect default
+installation directory information. [#7081]
+<li>Fix a signed/unsigned warning with some Windows compilers. [#7100]
+<li>Fix macro redefinition conflicts between queue.h and
+Vc7\PlatformSDK\Include\WinNT.h when building with Visual Studio.NET
+7.0. [#7103]
+<li>Add a loop to retry system calls that return EBUSY. Also limit
+retries on EINTR to 100 times. [#7118]
+<li>Fix a bug in our use of GetDiskFreeSpace that caused access
+violations on some versions of Windows with DB_DIRECT_DB. [#7122]
+<li>Fix a bug where regions in system memory on Windows were incorrectly
+reinitialized because the magic number was overwritten. [#7127]
+<li>Change version provided to Tcl's package system to reflect Berkeley
+DB's major and minor number. [#7174]
+<li>Support for the Berkeley DB Embedix port has been removed. [#7209]
+<li>Merge all public C++ headers into db_cxx.h, which fixes name clashes
+between Berkeley DB headers and system headers (specifically mutex.h).
+[#7221]
+<li>Fix a bug where the configured Makefile could try and build objects
+for which there were no existing rules. [#7227]
+<li>Port the ex_repquote example to Windows. [#7328]
+<li>Fix a race in the ARM/gcc mutex code which could cause almost
+anything bad you can imagine. [#7468]
+<li>Fix a bug where shared region removal could hang. [#7613]
+<li>Fix a bug so that when using Java in Debug mode on Windows,
+automatically pick the Debug DLL. [#7722]
+<li>Fix configure --disable-shared so that it now creates a Makefile
+that installs static libraries that look the same as a regular shared
+build. This flag will create a libdb&lt;major&gt;.&lt;minor&gt;.a and
+make a libdb.a that is a symlink to it. [#7755]
+<li>Add support for OS/390 2.10 and all versions of z/OS. [#7972]
+<li>Support Java builds on Windows with spaces in the project path.
+[#8141]
+<li>Fix a bug where Berkeley DB mutex locking code for OS X was not
+multiprocessor safe. [#8255]
+<li>Add an error to DB_ENV-&gt;set_flags if the OS does not support Direct
+I/O. [#8596]
+<li>Enable verbose error logging from the test suite on Windows. [#8634]
+<li>Fix a bug with DLL linking on Cygwin under Windows. [#8628]
+<li>Add support for JDK on HP/UX. [#8813]
+<li>Fix a bug where pathnames longer than 2KB could cause processes to
+core dump. [#8886]
+<li>Fix a bug in VxWorks when yielding the CPU, so that we delay at
+least one tick. [#9061]
+
+</ol>
+
+</body>
+</html>
diff --git a/db/docs_src/ref/changelog/4.3.29.html b/db/docs_src/ref/changelog/4.3.29.html
new file mode 100644
index 000000000..d4d475b12
--- /dev/null
+++ b/db/docs_src/ref/changelog/4.3.29.html
@@ -0,0 +1,524 @@
+<!--$Id: 4.3.29.html,v 1.34 2007/05/17 18:17:18 bostic Exp $-->
+<html>
+<head>
+<title>The Berkeley DB Package: DB 4.3.29 Change Log</title>
+<meta name="description" content="Berkeley DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Berkeley DB 4.3.29 Change Log</h3>
+
+<h3>Database or Log File On-Disk Format Changes:</h3>
+<ol>
+
+<li>The on-disk log format has changed.
+
+</ol>
+<h3>New Features:</h3>
+<ol>
+
+<li>Add support for light weight, transactionally protected Sequence
+Number generation. [#5739]
+<li>Add support for Degree 2 isolation. [#8689]
+<li>Add election generation information to replication to support Paxos
+compliance. [#9068]
+<li>Add support for 64-bit and ANSI C implementations of the RPCGEN
+utility. [#9548]
+
+</ol>
+<h3>Database Environment Changes:</h3>
+<ol>
+
+<li>Fix a bug where the permissions on system shared memory segments did
+not match the mode specified in the DB_ENV-&gt;open() method. [#8921]
+<li>Add a new return error from the DB_ENV-&gt;open() method call,
+DB_VERSION_MISMATCH, which is returned in the case of an application
+compiled under one version of Berkeley DB attempting to open an
+environment created under a different version. [#9077]
+<li>Add support for importing databases from a transactional database
+environment into a different environment. [#9324]
+<li>Fix a bug where a core dump could occur if a zero-length database
+environment name was specified. [#9233]
+<li>Increase the number of environment regions to 100. [#9297]
+<li>Remove the DB_ENV-&gt;set_verbose() method flag DB_VERB_CHKPOINT.
+[#9405]
+<li>Fix bugs where database environment getters could return incorrect
+information after the database environment was opened, if a different
+thread of control changed the database environment values. Fix bugs
+where database environment getter/setter functions could race with other
+threads of control. [#9724]
+<li>Change the DbEnv.set_lk_detect method to match the DbEnv.open
+semantics. That is, DbEnv.set_lk_detect may be called after the database
+environment is opened, allowing applications to configure automatic
+deadlock detection if it has not yet been configured. [#9724]
+<li>Fix cursor locks for environments opened without DB_THREAD so that
+they use the same locker ID. This eliminates many common cases of
+application self-deadlock, particularly in CDS. [#9742]
+<li>Fix a bug in DB-&gt;get_env() in the C API where it could return an
+error when it should only return the DB_ENV handle. C++ and Java are
+unchanged. [#9828]
+<li>Fix a bug where we only need to initialize the cryptographic memory
+region when MPOOL, Log or Transactions have been configured. [#9872]
+<li>Change private database environments at process startup to only
+allocate the heap memory required at any particular time, rather than
+always allocating the maximum amount of heap memory configured for the
+environment. [#9889]
+<li>Add a method to create nonexistent intermediate directories when
+opening database files. [#9898]
+<li>Add support for in-memory logging within database environments.
+[#9927]
+<li>Change Berkeley DB so configuring a database environment for
+automatic log file removal affects all threads in the environment, not
+just the DbEnv handle in which the configuration call is made. [#9947]
+<li>Change the signature of the error callback passed to the
+DB_ENV-&gt;set_errcall and DB-&gt;set_errcall methods to add a DB_ENV handle,
+to provide database environment context for the callback function.
+[#10025]
+<li>Fix a race condition between DB-&gt;close and DB-&gt;{remove,rename} on
+filesystems that don't allow file operations on open files (such as
+Windows). [#10180]
+<li>Add a DB_DSYNC_LOG flag to the DbEnv::set_flags method, which
+configures O_DSYNC on POSIX systems and FILE_FLAG_WRITE_THROUGH on Win32
+systems. This offers significantly better performance for some
+applications on certain Solaris/filesystem combinations. [#10205]
+<li>Fix a bug where calling the DB or DBEnv database remove or rename
+methods could cause a transaction checkpoint or cache flush to fail.
+[#10286]
+<li>Change file operations not to flush a file if it hasn't been written.
+[#10537]
+<li>Remove 4GB restriction on region sizes on 64 bit machines. [#10668]
+<li>Simplify the signature of substitute system calls for ftruncate and
+seek. [#10668]
+<li>Change Berkeley DB so that opening an environment without specifying
+a home directory will cause the DB_CONFIG file in the current directory
+to be read, if it exists. [#11424]
+<li>Fix a bug that caused a core dump if DB handles without associated
+database environments were used for database verification. [#11649]
+<li>Fix Windows mutexes shared between processes run as different users.
+[#11985]
+<li>Fix Windows mutexes for some SMP machines. [#12417]
+
+</ol>
+<h3>Concurrent Data Store Changes:</h3>
+<ol>
+
+<li>Fix cursor locks for environments opened without DB_THREAD so that
+they use the same locker ID. This eliminates many common cases of
+application self-deadlock, particularly in CDS. [#9742]
+
+</ol>
+<h3>General Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug where Berkeley DB log cursors would close and reopen the
+underlying log file each time the log file was read. [#8934]
+<li>Improve performance of DB-&gt;open() for existing subdatabases
+maintained within the same database file. [#9156]
+<li>Add a new error, DB_BUFFER_SMALL, to differentiate from ENOMEM. The
+new error indicates that the supplied DBT is too small. ENOMEM is now
+always fatal. [#9314]
+<li>Fix a bug when an update through a secondary index is deadlocked it
+is possible for the deadlock to be ignored, resulting in a partial
+update to the data. [#9492]
+<li>Fix a bug where a record could get inserted into the wrong database
+when a page was deallocated from one subdatabase and reallocated to
+another subdatabase maintained within the same database file. [#9510]
+<li>Enhance file allocation so that if the operating system supports
+decreasing the size of a file and the last page of the file is freed,
+it will be returned to the operating system. [#9620]
+<li>Fix a bug where DB_RUNRECOVERY could be returned if there was no
+more disk space while aborting the allocation of a new page in a
+database. [#9643]
+<li>Fix a bug where the cryptographic code could memcpy too many bytes.
+[#9648]
+<li>Fix a bug with DB-&gt;join() cursors that resulted in a memory leak and
+incomplete results. [#9763]
+<li>Disallow cursor delete, followed a cursor put of the current item
+across all access methods. [#9900]
+<li>Fix a bug where recovery of operations on unnamed databases that
+were never closed, could fail. [#10118]
+<li>Fix a bug where DB-&gt;truncate of a database with overflow records
+that spanned more than one page would loop. [#10151]
+<li>Improve performance in the database open/close path. [#10266]
+<li>Fix a bug that restricted the number of temporary files that could
+be created to 127. [#10415]
+<li>Fix a bug which could cause a Too many files error when trying to
+create temporary files. Limit the number of temporary file creation
+retries. [#10760] [#10773]
+<li>Fix a memory leak bug with Sequence Numbers. [#11589]
+<li>Fix a bug on Windows platforms that prevents database files from
+growing to over 2GB. [#11839]
+<li>Fix a platform independence bug with sequence numbers. Existing
+sequence numbers will be automatically upgraded upon next access.
+[#12202]
+<li>Fix a race between truncate and read/write operations on Windows
+platforms that could cause corrupt database files. [#12598]
+
+</ol>
+<h3>Btree Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug where a record could get placed on the wrong page when two
+threads are simultaneously trying to split a four level (or greater)
+Btree. [#9542]
+<li>Fix a bug where calling DB-&gt;truncate() on a Btree which has
+duplicate keys that overflow the leaf page would not properly free the
+overflow pages and possibly loop. [#10666]
+
+</ol>
+<h3>Hash Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug where a delete to a HASH database with off page duplicates
+could fail to have the proper lock when deleting an off page duplicate
+tree. [#9585]
+<li>Fix a bug where a dirty reader using a HASH database would leave a
+lock on the meta page. [#10105]
+<li>Fix a bug where a DB-&gt;del() on a HASH database supporting dirty
+reads could fail to upgrade a WWRITE lock to a WRITE lock when deleting
+an off page duplicate. [#10649]
+
+</ol>
+<h3>Queue Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug where DB_CONSUME_WAIT may loop rather than wait for a new
+record to enter the queue, if the queue gets into a state where there
+are only deleted records between the head and the end of queue. [#9215]
+<li>Fix a bug where a Queue extent file could be closed when it was
+empty, even if a thread was still accessing a page from that file.
+[#9291]
+<li>Fix a bug where DBC-&gt;c_put(key, data, DB_CURRENT) where inserting a
+new record after the current record had been deleted was returning
+DB_KEYEMPTY. [#9314]
+<li>Fix a bug where a Queue extent file could be reported as not found
+if a race condition was encountered between removing the file and
+writing out a stale buffer. [#9462]
+<li>Fix a bug where the Queue access method might fail to release a
+record lock when running without transactions. [#9487]
+<li>Add DB_INORDER flag for Queue databases to guarantee FIFO (First In,
+First Out) ordering when using DB_CONSUME or DB_CONSUME_WAIT. [#9689]
+<li>Fix a bug where remove and rename calls could fail with a
+"Permission denied" error. [#9775]
+<li>Fix a bug where aborting a transaction that opened and renamed a
+queue database using extents could leave some of the extent files with
+the wrong name on Windows. [#9781]
+<li>Fix a bug where a db_dump of a queue database could return an error
+at the end of the queue if the head or tail of the queue is the first
+record on a page. [#10215]
+<li>Fix a race condition which would leave a Queue extent file open
+until the database handle was closed, preventing it from being removed.
+[#10591]
+<li>Fix a bug where a deadlock of a put on a database handle with dirty
+readers could generate a lock downgrade error. [#10678]
+<li>Fix a bug which caused DB_SET_RANGE and DB_GET_BOTH_RANGE to not
+return the next record when an exact match was not found. [#10860]
+
+</ol>
+<h3>Recno Access Method Changes</h3>
+<ol>
+
+<li>Fix a bug where the key/data counts returned by the Db-&gt;stat method
+for Recno databases did not match the documentation. [#8639]
+<li>Fix a bug where DBC-&gt;c_put(key, data, DB_CURRENT) where inserting a
+new record after the current record had been deleted was returning
+DB_KEYEMPTY. [#9314].
+
+</ol>
+<h3>C++-specific API Changes:</h3>
+<ol>
+
+<li>Change DbException to extend std::exception, making it possible for
+applications to catch all exceptions in one place. [#10022]
+<li>Fix a bug where errors during transaction destructors (commit,
+abort) could cause an invalid memory access. [#10302]
+<li>Fix a bug that could lead to a read through an uninitialized pointer
+when a DbLockNotGrantedException is thrown. [#10470]
+<li>Fix a bug in the C++ DbEnv::rep_elect method API where the arguments
+were swapped, leading to an "Invalid Argument" return when that method
+is called. [#11906]
+
+</ol>
+<h3>Java-specific API Changes:</h3>
+<ol>
+
+<li>Fix a bug where the Java API did not respect non-zero return values
+from secondaryKeyCreate, including DB_DONOTINDEX. [#9474]
+<li>Fix a bug where a self-deadlock occurred with a non-transactional
+class catalog database used in a transactional environment. The bug
+only occurred when the collections API was not used for starting
+transactions. [#9521]
+<li>Improve Javadoc for the Java API. [#9614]
+<li>Improve memory management and performance when large byte arrays are
+being passed to DB methods. [#9801]
+<li>Improve performance of accessing statistics information from the
+Java API. [#9835]
+<li>Allow Java application to run without DB_THREAD so they can be used
+as RPC clients. [#10097]
+<li>Fix a bug where an uninitialized pointer is dereferenced for
+logArchive(Db.DB_ARCH_REMOVE). [#10225]
+<li>Fix a bug in the Collections API where a deadlock exception could
+leave a cursor open. [#10516]
+<li>Fix the replication callback in the Java API so that the parameter
+names match the C API. [#10550]
+<li>Add get methods to the Java statistics classes. [#10807]
+<li>Fix bugs in the Java API handling of null home directories and
+environments opened without a memory pool. [#11424]
+<li>Fix the Java API in the non-crypto package. [#11752]
+<li>Fix a bug that would cause corruption of error prefix strings.
+[#11967]
+<li>Fix handling of LSNs in the Java API. [#12223]
+<li>Dont throw a NullPointerException if the list of files returned by
+log_archive is empty. [#12383]
+
+</ol>
+<h3>Tcl-specific API Changes:</h3>
+
+None.
+
+<h3>RPC-specific Client/Server Changes:</h3>
+<ol>
+
+<li>Add support for 64-bit and ANSI C implementations of the RPCGEN
+utility. [#9548]
+<li>Fix a small memory leak in RPC clients. [#9595]
+<li>Fix a bug in the RPC server to avoid self-deadlock by always setting
+DB_TXN_NOWAIT. [#10181]
+<li>Fix a bug in the RPC server so that if it times out an environment,
+it first closes all the Berkeley DB handles in that environment.
+[#10623]
+
+</ol>
+<h3>Replication Changes:</h3>
+<ol>
+
+<li>Add an Environment ID to distinguish between clients from different
+replication groups. [#7786]
+<li>Add number of votes required and flags parameters to
+DB_ENV-&gt;rep_elect() method. [#7812]
+<li>Fix a bug where a client's env_openfiles pass could start with the
+wrong LSN. This could result in very long initial sync-up times for
+clients joining a replication group. [#8635]
+<li>Add election generation information to replication to support Paxos
+compliance. [#9068]
+<li>Add rep019 to test running normal recovery on clients to make sure
+we synch to the correct LSNs. [#9151]
+<li>Remove support for logs-only replication clients. Use of the
+DB_REP_LOGSONLY flag to the DB_ENV-&gt;rep_start() method should be
+replaced with the DB_REP_CLIENT flag. [#9331]
+<li>Fix a bug where replication clients fail to lock all the necessary
+pages when applying updates when there are more than one database in the
+transaction. [#9569]
+<li>Fix a bug in replication elections where when elections are called
+by multiple threads the wrong master could get elected. [#9770]
+<li>Fix a bug where the master could get a DB_REP_OUTDATED error.
+Instead send an OUTDATED message to the client. [#9881]
+<li>Add support for automatic initialization of replication clients.
+[#9927]
+<li>Modify replication timestamp so that non-replication client
+applications can get a DB_REP_HANDLE_DEAD. [#9986]
+<li>Add a new DB_REP_STARTUPDONE return value for rep_process_message()
+and st_startup_done to rep_stat() to indicate when a client has finished
+syncing up to a master and is processing live messages. [#10310]
+<li>Add _pp to secondary handles, add RPRINT, fix a deadlock. [#10429]
+<li>Fix a bug where an old client (and no master) that dropped the ALIVE
+message would never update to the current generation. [#10469]
+<li>Fix a bug where a message could get sent to a new client before
+NEWSITE has been returned to the application. Broadcast instead.
+[#10508]
+<li>Fix a crash when verbose replication messages are configured and a
+NULL DB_LSN pointer is passed to rep_process_message. [#10508]
+<li>Add code to respect set_rep_limit in LOG_REQ processing. [#10716]
+<li>Fix a synchronization problem between replication recovery and
+database open. [#10731]
+<li>Change elections to adjust timeout if egen changes while we are
+waiting. [#10686]
+<li>Client perm messages now return ISPERM/NOTPERM instead of 0.
+[#10855] [#10905]
+<li>Fix a race condition during rep_start when a role change occurs. Fix
+memory leaks. [#11030]
+<li>Fix problems with duplicate records. A failure will no longer occur
+if the records are old records (LOG_MORE) and archived. [#11090]
+<li>Fix a bug where the replication temporary database would grow during
+automatic client initialization. [#11090]
+<li>Add throttling to PAGE_REQ. [#11130]
+<li>Remove optimization-causing problems with racing threads in
+rep_verify_match. [#11208]
+<li>Fix memory leaks. [#11239]
+<li>Fix an initialization bug when High Availability configurations are
+combined with private database environments, which can cause
+intermittent failures. [#11795]
+<li>Fix a bug in the C++ DbEnv::rep_elect method API where the arguments
+were swapped, leading to an "Invalid Argument" return when that method
+is called. [#11906]
+
+</ol>
+<h3>XA Resource Manager Changes:</h3>
+
+None.
+
+<h3>Locking Subsystem Changes:</h3>
+<ol>
+
+<li>Fix a bug where a deadlock of an upgrade from a dirty read to a
+write lock during an aborted transaction, may not be detected. [#7143]
+<li>Add support for Degree 2 isolation. [#8689]
+<li>Change the system to return DB_LOCK_DEADLOCK if a transaction
+attempts to get new locks after it has been selected as the deadlock
+victim. [#9111]
+<li>Fix a bug where when configured to support dirty reads, a writer may
+not downgrade a write lock as soon as possible, potentially blocking
+dirty readers. [#9197]
+<li>Change the test-and-set mutex implementation to avoid interlocked
+instructions when we know the instruction is unlikely to succeed.
+[#9204]
+<li>Fix a bug where a thread supporting dirty readers can get blocked
+while trying to get a write lock. It will allocate a new lock rather
+than using an existing WAS_WRITE lock when it becomes unblocked, causing
+the application to hang. [#10093]
+<li>The deadlock detector will now note that a parent transaction should
+be considered in abort if one of its children is. [#10394]
+<li>Remove a deadlock where database closes could deadlock with page
+acquisition. [#10726]
+<li>Fix a bug where a dirty reader could read an overflow page that was
+about to be deleted. [#10979]
+<li>Fix a bug that failed to downgrade existing write locks during a
+btree page split when supporting dirty reads. [#10983]
+<li>Fix a bug that would fail to upgrade a write lock when moving a
+cursor off a previously deleted record. [#11042]
+
+</ol> <h3>Logging Subsystem Changes:</h3> <ol>
+
+<li>Fix a bug where recovery could leave too many files open. [#9452]
+<li>Fix a bug where aborting a transaction with a file open in it could
+result in an unrecoverable log file. [#9636]
+<li>Fix a bug where recovery would not return a fatal error if the
+transaction log was corrupted. [#9841]
+<li>Fix a bug in recovery so that the final checkpoint no longer tries
+to flush the log. This will permit recovery to complete even if there
+is no disk space to grow the log file. [#10204]
+<li>Improve performance of log flushes by pre-allocating log files and
+using fdatasync() in preference to fsync(). [#10228]
+<li>Fix a bug where recovery of a page split after a non-transactional
+update to the next page would fail to update the back pointer. [#10421]
+<li>Fix a bug in log_archive() where __env_rep_enter() was called twice.
+[#10577]
+<li>Fix a bug with in-memory logs that could cause a memory leak in the
+log region. [#11505]
+
+</ol>
+<h3>Memory Pool Subsystem Changes:</h3>
+<ol>
+
+<li>Fix a bug in the MPOOLFILE file_written flag value so that
+checkpoint doesn't repeatedly open, flush and sync files in the cache
+for which there are no active application handles. [#9529]
+
+</ol>
+<h3>Transaction Subsystem Changes:</h3>
+<ol>
+
+<li>Fix a bug where the same transaction ID could get allocated twice
+if you wrapped the transaction ID space twice and then had a very old
+transaction. [#9036]
+<li>Fix a bug where a transaction abort that contained a page allocation
+could loop if the filesystem was full. [#9461]
+<li>Fix implementation of DB-&gt;get_transactional() to match
+documentation: there is no possibility of error return, only 0 or 1.
+[#9526]
+<li>Fix a bug where re-setting any of the DB_TXN_NOSYNC,
+DB_TXN_NOT_DURABLE and DB_TXN_WRITE_NOSYNC flags could fail to clear
+previous state, potentially leading to incorrect transactional behavior
+in the application. [#9947]
+<li>Add a feature to configure the maximum number of files that a
+checkpoint will hold open. [#10026]
+<li>An aborting transaction will no longer generate an undetected
+deadlock. [#10394]
+<li>Fix a bug that prevented a child transaction from accessing a
+database handle that was opened by its parent transaction. [#10783]
+<li>Fix a bug where a checkpoint or a delayed write in another process
+could raise an EINVAL error if the database had been opened with the
+DB_TXN_NOT_DURABLE flag. [#10824]
+<li>Fix private transactional environments on 64-bit systems. [#11983]
+
+</ol>
+<h3>Utility Changes:</h3>
+<ol>
+
+<li>Add debugging and performance tuning information to db_stat. Add
+new Berkeley DB handle methods to output debugging and performance
+tuning information to a C library FILE handle (C and C++ APIs only).
+[#9204]
+<li>Fix a bug where db_stat could drop core if DB-&gt;open fails and no
+subdatabase was specified. [#9273]
+<li>Add command-line arguments to the db_printlog utility to restrict
+the range of log file records that are displayed. [#9307]
+<li>Fix a bug in the locking statistics where current locks included
+failed lock requests. [#9314]
+<li>Fix a bug where db_archive would remove all log files when
+--enable-diagnostic and DB_NOTDURABLE were both specified. [#9459]
+<li>Fix a bug where db_dump with the -r flag would output extra copies
+of the subdatabase information. [#9808]
+<li>Fix a bug in db_archive that would cause log file corruption if the
+application had configured the environment with DB_PRIVATE. [#9841]
+<li>Add support in db_load for resetting database LSNs and file IDs
+without having to reload the database. [#9916]
+<li>Change the DB-&gt;stat() method to take a transaction handle as an
+argument, allowing DB-&gt;stat() to be called from within a transaction.
+[#9920]
+<li>Fix a bug in db_printlog where only the first filewould be displayed
+for in-memory logs. [#11505]
+<li>Fix a bug that prevented database salvage from working in Berkeley
+DB 4.3.21. [#11649]
+<li>Fix a bug in db_load which made it impossible to specify more than
+a single option on the command line. [#11676]
+
+</ol>
+<h3>Configuration, Documentation, Portability and Build Changes:</h3>
+<ol>
+
+<li>Add pread and pwrite to the list of system calls applications can
+replace at run-time. [#8954]
+<li>Add support for UTF-8 encoding of filenames on Windows. [#9122]
+<li>Remove C++ dependency on snprintf. Compilers on HPUX 10.20 are
+missing header file support for snprintf(). [#9284]
+<li>Change Berkeley DB to not use the open system call flag O_DIRECT,
+unless DB configured using --enable-o_direct. [#9298]
+<li>Fix several problems with mutex alignment on HP/UX 10.20. [#9404]
+<li>Fix a memory leak when HAVE_MUTEX_SYSTEM_RESOURCES is enabled.
+[#9546]
+<li>Fix a bug in the sec002.tcl test for binary data. [#9626]
+<li>Fix a bug where filesystem blocks were not being zeroed out in the
+On-Time embedded Windows OS. [#9640]
+<li>Fix build problems with the Java API in Visual Studio .NET 2003.
+[#9701]
+<li>Add support for the gcc compiler on the Opteron platform. [#9725]
+<li>Add support for the small_footprint build option for VxWorks.
+[#9820]
+<li>Add support for linking of DLLs with MinGW. [#9957]
+<li>Remove the make target which builds the RPM package from the
+Berkeley DB distribution. [#10233]
+<li>Add a C++/XML example for ex_repquote. [#10380]
+<li>Fix a bug to link with lrt only if detected by configure (Mac OS X
+issue). [#10418]
+<li>Fix a bug and link Java and Tcl shared libraries with lpthread if
+required, for mutexes. [#10418]
+<li>Add support for building Berkeley DB on the HP NonStop OSS (Tandem)
+platform. [10483]
+<li>Change Berkeley DB to ignore EAGAIN from system calls. This fixed
+problems on NFS mounted databases. [#10531]
+<li>Remove a line with bt_compare and bt_prefix from the db_dump
+recovery test suite, which can cause failures on OpenBSD. [#10567]
+<li>Fix a conflict with the lock_init for building Berkeley DB on
+Cygwin. [#10582]
+<li>Add Unicode support for the Berkeley DB Windows API. [#10598]
+<li>Add support for 64-bit builds on Windows. [#10664]
+<li>Libtool version is now 1.5.8. [#10950]
+<li>Remove mt compilation flag for HP-UX 11.0. [#11427]
+<li>Fix a bug to link with lrt on Solaris to support fdatasync. [#11437]
+
+</ol>
+
+</body>
+</html>
diff --git a/db/docs_src/ref/changelog/4.4.16.html b/db/docs_src/ref/changelog/4.4.16.html
new file mode 100644
index 000000000..19c7b93f2
--- /dev/null
+++ b/db/docs_src/ref/changelog/4.4.16.html
@@ -0,0 +1,444 @@
+<!--$Id: 4.4.16.html,v 1.24 2007/05/17 18:17:18 bostic Exp $-->
+<html>
+<head>
+<title>The Berkeley DB Package: DB 4.4.16 Change Log</title>
+<meta name="description" content="Berkeley DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Berkeley DB 4.4.16 Change Log</h3>
+
+<h3>Database or Log File On-Disk Format Changes:</h3>
+<ol>
+
+<li>The on-disk log format has changed.
+
+</ol>
+<h3>New Features:</h3>
+<ol>
+
+<li>Add support to compact an existing Btree database. [#6750]
+<li>Add support for named in-memory databases. [#9927]
+<li>Add support for database environment recovery serialization. This
+simplifies multiprocess application architectures. Add DB_REGISTER flag
+to DB_ENV-&gt;open(). [#11511]
+<li>Add utility for performing hot backups of a database environment.
+[#11536]
+<li>Add replication configuration API. [#12110]
+<li>Add replication support to return error instead of waiting for
+client sync to complete. [#12110]
+<li>Add replication support for delayed client synchronization. [#12110]
+<li>Add replication support for client-to-client synchronization.
+[#12110]
+<li>Add replication support for bulk transfer. [#12110]
+<li>Add new flags DB_DSYNC_DB and DB_DSYNC_LOG [12941]
+<li>Add DbEnv.log_printf, a new DbEnv method which logs printf style
+formatted strings into the Berkeley DB database environment log.
+[#13241]
+
+</ol>
+<h3>Database Environment Changes:</h3>
+<ol>
+
+<li>Add a feature to support arbitrary alignment of mutexes in order to
+minimize cache line collisions. [#9580]
+<li>Change cache regions on 64-bit machines to allow regions larger than
+4GB. [#10668]
+<li>Fix a bug where a loop could occur if the application or system
+failed during modification of the linked list of shared regions.
+[#11532]
+<li>Fix mutex alignment on Linux/PA-RISC, add test-and-set mutexes for
+MIPS and x86_64. [#11575]
+<li>Fix a bug where private database environments (DB_PRIVATE) on 64-bit
+machines would core dump because of 64-bit address truncation. [#11983]
+<li>Fix a bug where freed memory is accessed when DB_PRIVATE
+environments are closed. This can happen on systems where the operating
+system holds mutex resources that must be freed when the mutex is
+destroyed. [#12591]
+<li>Fix a bug where the DbEnv.stat_print method could self-deadlock and
+hang. The DbEnv.stat_print method no longer displays statistics for any
+of the database environments databases. [#12039]
+<li>Fix a bug where Berkeley DB could create fragmented
+filesystem-backed shared region files. [#12125]
+<li>Fix a bug where Berkeley DB stat calls could report a cache size of
+0 after the statistics were cleared. [#12307]
+<li>Threads of control joining database environments are now configured
+for all of the subsystems (lock, log, cache, or transaction) for which
+the environment was originally configured, it is now an error to attempt
+configuration of additional subsystems after an environment is created.
+[#12422]
+<li>Fix a bug where negative percentages could be displayed in
+statistics output. [#12673]
+<li>Fix a bug that could cause a panic if the cache is filled with
+non-logging updated pages. [#12763]
+<li>Fix a bug that could cause an unreported deadlock if the application
+was using the DB_DIRTY_READ flag and the record was an off page
+duplicate record. [#12893]
+<li>Fix a bug where a handle lock could be incorrectly retained during
+a delete or rename operation. [#12906]
+
+</ol>
+<h3>Concurrent Data Store Changes:</h3>
+<ol>
+
+<li>Lock upgrades and downgrades are now accounted for separately from
+lock requests and releases. [#11155]
+<li>Fix a bug where a second process joining a Concurrent Data Store
+environment, with the DB_CDB_ALLDB flag set, would fail. This would
+happen if the first thread were not entirely finished with
+initialization. [#12277]
+
+</ol>
+<h3>General Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug where filesystem operations are improperly synchronized.
+[#10564]
+<li>Add support for database files larger than 2GB on Windows. [#11839]
+<li>Rename DB_DEGREE_2 (and all related flags) to DB_READ_COMMITTED.
+Rename DB_DIRTY (and all related flags) to DB_READ_UNCOMMITTED. [#11776]
+<li>Fix a bug where wrapping of sequences was incorrect when the cache
+size is smaller than the range of the maximum value minus the minimum
+value. [#11997]
+<li>Fix a bug that could result in a hot backup having a page missing
+from a database file if a file truncation was in progress during the
+backup but was then aborted. [#12017]
+<li>Fix a bug where a long filename could cause one too few bytes to
+be allocated when opening a file. [#12085]
+<li>Fix a bug in secondary cursor code if a write lock is not granted.
+[#12109]
+<li>Fix a bug in secondary cursors where the current record would change
+on error. [#12141]
+<li>Fix a bug in Db-&gt;truncate where the method was not checking to see
+if the handle was opened read-only. [#12179]
+<li>Fix a bug in sequences so that they are now platform independent,
+taking into account little-endian and big-endian architectures. They
+will be automatically upgraded in 4.4. [#12202]
+<li>Fix a bug with non-wrapping sequences when initial value was
+INT64_MIN. [#12390]
+<li>Add a retry for operating system operations that return EIO (IO
+Error) to better support NFS mounted filesystems. [#12426]
+<li>Fix sequence wrapping at INT64 limits. [#12520]
+<li>Fix a bug where errors during DB-&gt;associate could leave secondaries
+half associated. [#13173]
+<li>Fix a bug so that we no longer will update in CDS and DS if the file
+size limit will be exceeded. [#13222]
+
+</ol>
+<h3>Btree Access Method Changes:</h3>
+<ol>
+
+<li>Remove maxkey configuration. [#8904]
+<li>Fix a memory leak in operations on large Btrees. [#12000]
+
+</ol>
+<h3>Hash Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug where access to HASH or encrypted database pages might be
+blocked during a checkpoint. [#11031]
+<li>Fix a bug where recovery would fail when a database has a hash page
+on the free list and that hash page was freed without using transactions
+and later allocated and aborted within a transaction. [#11214]
+<li>Fix a bug in hash duplicates where if the caller left garbage in the
+partial length field, we were using it. Fix a bug where a replacement
+of a hash item that should have gone on an overflow page, did not.
+[#11966]
+<li>Fix a bug where free space was miscalculated when adding the first
+duplicate to an existing item and the existing item plus the new item
+does not fit on a page. [#12270]
+<li>Fix a bug where allocations of hash buckets are not recovered
+correctly. [#12846]
+
+</ol>
+<h3>Queue Access Method Changes:</h3>
+<ol>
+
+<li>Improve performance of deletes from a QUEUE database that does not
+have a secondary index. [#11538]
+<li>Fix a bug where updates that do not use transactions, but do enable
+locking, failed to release locks. [#11669]
+<li>Fix a bug where a transaction might not be rolled forward if the
+site was performing hot backups and an application aborted a prepared
+but not committed transaction. [#12181]
+<li>Fix a bug with queue extents not being reclaimed. [#12249]
+<li>Fix a bug where a record being inserted before the head of the queue
+could appear missing if DB_CONSUME is not specified. [#12919]
+<li>Fix a bug that might cause recovery to move the head or tail of the
+queue to exclude a record that was deleted but whose transaction did not
+commit. [#13256]
+<li>Fix a bug that could cause recovery to move the head or tail pointer
+beyond a record that was aborted but was rolled backward by recovery.
+[#13318]
+
+</ol>
+<h3>Recno Access Method Changes</h3>
+
+None.
+
+<h3>C++-specific API Changes:</h3>
+<ol>
+
+<li>Fix a bug so that a DbMemoryException will be raised during a
+DB_BUFFER_SMALL error. [#13273]
+
+</ol>
+<h3>Java-specific API Changes:</h3>
+<ol>
+
+<li>Add VersionMismatchException to map the DB_VERSION_MISMATCH error.
+[#11429]
+<li>Fix a bug in Environment.getConfiguration() method in non-crypto
+builds. [#11752]
+<li>Fix a bug that caused a NullPointerException when using the
+MultipleDataEntry default constructor. [#11753]
+<li>Fix handling of replication errors. [#11822]
+<li>Remove EnvironmentConfig.setReadOnly() method. [#11882]
+<li>Fix a bug where prefix strings in the error handler may be
+corrupted. [#11967]
+<li>Fix a bug so that nested exceptions will appear in stack traces.
+[#11992]
+<li>Fix a bug on LogSequenceNumber objects in the Java API. [#12223]
+<li>Fix a bug when no files are returned from a call to
+DB_ENV-&gt;log_archive. [#12383]
+<li>Fix a bug when multiple verbose flags are set. [#12383]
+<li>Fix a bug so that an OutOfMemoryError is thrown when allocation
+fails in the JNI layer. [#13434]
+
+</ol>
+<h3>Java collections and bind API Changes:</h3>
+<ol>
+
+<li>Binding performance has been improved by using System.arraycopy in
+the FastOutputStream and FastInputStream utility classes. [#12002]
+<li>The objectToEntry method is now implemented in all TupleBinding
+subclasses (IntegerBinding, etc) so that tuple bindings are fully
+nestable. An example of this usage is a custom binding that dynamically
+discovers the data types of each of the properties of a Java bean class.
+For each property, it calls TupleBinding.getPrimitiveBinding using the
+property's type (class). When the custom binding's objectToEntry method
+is called, it in turn calls the objectToEntry method of the nested
+bindings for each property. [#12124]
+<li>The getCause method for IOExceptionWrapper and
+RuntimeExceptionWrapper is now defined so that nested exceptions appear
+in stack traces for exceptions thrown by the collections API. [#11992]
+<li>TupleBinding.getPrimitiveBinding can now be passed a primitive type
+class as well as a primitive wrapper class. The return value for
+Integer.TYPE and Integer.class, for example, will be the same binding.
+[#12035]
+<li>Improvements have been made to prevent the buffer used in serial and
+tuple bindings from growing inefficiently, and to provide more
+alternatives for the application to specify the desired size. For
+details see com.sleepycat.bind.serial.SerialBase and
+com.sleepycat.bind.tuple.TupleBase. [#12398]
+<li>Add StoredContainer.getCursorConfig, deprecate isDirtyRead.
+Deprecate StoredCollections.dirtyReadMap (dirtyReadSet, etc) which is
+replaced by configuredMap (configuredSet, etc). Deprecated
+StoredContainer.isDirtyReadAllowed with no replacement (please use
+DatabaseConfig.getDirtyRead). Also note that
+StoredCollections.configuredMap (configuredSet, etc) can be used to
+configure read committed and write lock containers, as well as read
+uncommitted containers, since all CursorConfig properties are supported.
+[#11776]
+<li>Add the protected method SerialBinding.getClassLoader so that
+subclasses may return a specific or dynamically determined class loader.
+Useful for applications which use multiple class loaders, including
+applications that serialize Groovy-defined classes. [#12764] [#12749]
+
+</ol>
+<h3>Tcl-specific API Changes:</h3>
+<ol>
+
+<li>Fix a bug that could cause a memory leak in the replication test
+code. [#13436]
+
+</ol>
+<h3>RPC-specific Client/Server Changes:</h3>
+<ol>
+
+<li>Fix double-free in RPC server when handling an out-of-memory error.
+[#11852]
+
+</ol>
+<h3>Replication Changes:</h3>
+<ol>
+
+<li>Fix race condition (introduced in 4.3) in rep_start function.
+[#11030]
+<li>Changed internal initialization to no longer store records. [#11090]
+<li>Add support for replication bulk transfer. [#11099]
+<li>Berkeley DB now calls check_doreq function for MASTER_REQ messages.
+[#11207]
+<li>Fix a bug where transactions could be counted incorrectly during
+txn_recover. [#11257]
+<li>Add DB_REP_IGNORE flag so that old messages (especially PERM
+messages) can be ignored by applications. [#11585]
+<li>Fix a bug where op_timestamp was not initialized. [#11795]
+<li>Fix a bug in db_refresh where a client would write a log record on
+closing a file. [#11892]
+<li>Fix backward arguments in C++ rep_elect API. [#11906]
+<li>Fix a bug where a race condition could happen between downgrading a
+master and a database update operation. [#11955]
+<li>Fix a bug on VERIFY_REQ. We now honor wait recs/rcvd. [#12097]
+<li>Fix a bug in rebroadcast of verify_req by initializing lp-&gt;wait_recs
+when finding a new master. [#12097]
+<li>Fix a bug by adding lockout checking to __env_rep_enter since
+rename/remove now call it. [#12192]
+<li>Fix a bug so that we now skip __db_chk_meta if we are a rep client.
+[#12316]
+<li>Fix a replication failure on Windows. [#12331]
+<li>Remove master discovery phase from rep_elect as a performance
+improvement to speed up elections. [#12551]
+<li>Fix a bug to avoid multiple data streams when issuing al ALL_REQ.
+[#12595]
+<li>Fix a bug to request the remaining gap again if the gap record is
+dropped after we receive the singleton. [#12974]
+<li>Fix a bug in internal initialization when master changes in the
+middle of initializing. [#13074]
+<li>Fix a bug in replication/archiving with internal init. [#13110]
+<li>Fix pp handling of db_truncate. [#13115]
+<li>Fix a bug where rep_timestamp could be updated when it should not
+be updated. [#13331]
+<li>Fix a bug with bulk transfer when toggling during updates. [#13339]
+<li>Change EINVAL error return to DB_REP_JOIN_FAILURE. [#12110]
+<li>Add C++ exception for DB_REP_HANDLE_DEAD. [#13361]
+<li>Fix a bug where starting an election concurrently with processing a
+NEWMASTER message could cause the send function to be called with an
+invalid eid. [#13403]
+
+</ol>
+<h3>XA Resource Manager Changes:</h3>
+
+None.
+
+<h3>Locking Subsystem Changes:</h3>
+
+None.
+
+<h3>Logging Subsystem Changes:</h3>
+<ol>
+
+<li>Add set_log_filemode for applications that need to set an absolute
+file mode on log files. [#8747]
+<li>Fix a bug that caused Not Found to be returned if a log file exists
+but is not readable. [#11185]
+<li>Removed checksum of records with an in-memory log buffer. [#11280]
+<li>Fix a bug so that the DB_LOG_INMEMORY flag can no longer be set
+after calling DB_ENV-&gt;open. [#11436]
+<li>Fix a bug introduced after release 4.0 where two simultaneous
+checkpoints could cause ckp_lsn values to be out of order. [#12094]
+<li>Fix a bug when in debug mode and using the DEBUG_ROP which will now
+log read operations in __dbc_logging. [#12303]
+<li>Fix a bug where failing to write a log record on a file close would
+result in a core dump later. [#12460]
+<li>Fix a bug where automatic log file removal, or the return of log
+files using an absolute path, could fail silently if the applications
+current working directory could not be reached using the systems getcwd
+library call. [#12505]
+<li>Avoid locking the log region if we are not going to flush the log.
+This can improve performance for some write-intensive application
+workloads. [#13090]
+<li>Fix a bug with a possible segment fault when memp_stat_print is
+called on a temporary database. [#13315]
+<li>Fix a bug where log_stat_print could deadlock with threads during a
+checkpoint. [#13315]
+
+</ol>
+<h3>Memory Pool Subsystem Changes:</h3>
+<ol>
+
+<li>Fix a bug where modified database pages might not be flushed if
+recovery were run and all pages from a database were found in the system
+cache and up to date, followed by a system crash. [#11654]
+
+</ol>
+<h3>Transaction Subsystem Changes:</h3>
+<ol>
+
+<li>Add new DbTxn class methods allowing applications to set/get a
+descriptive name associated with a transaction. The descriptive name
+is also displayed by the db_stat utility. [#0382]
+<li>Fix a bug where aborting a transaction with a large number of nested
+transactions could take a long time. [#10972]
+<li>Add support to allow the TXN_WRITE_NOSYNC flag to be specified on
+the transaction handle. [#11151]
+<li>Fix a bug that could cause a page to be on the free list twice if
+it was originally put on the free list by a non-transactional update and
+then reallocated in a transaction that aborts. [#11159]
+<li>Remove the requirement for the DB_AUTO_COMMIT flag to make database
+operations transactional. Specifying the database environment as
+transactional or opening the database handle transactionally is
+sufficient. [#11302]
+<li>Fix a bug so that environments created from errant programs that
+called dbp-&gt;close while transactions were still active can now be
+recovered. [#11384]
+<li>Fix a bug that caused free pages at the end of a file to be
+truncated during recovery rather than placed on the free page list.
+[#11643]
+<li>Fix a bug that caused a page to have the wrong type if the truncate
+of a BREE or RECNO database needed to be rolled forward. [#11670]
+<li>Fix a bug when manually undoing a subdb create, dont try to free a
+root page that has not been allocated. [#11925]
+<li>Add a check on database open to see if log files were incorrectly
+removed by system administration mistakes. [#12178]
+<li>Fix a bug when calling DB-&gt;pget and then specifying the
+DB_READ_COMMITTED (DB_DEGREE_2) on a cursor. If followed by a
+DBC-&gt;c_pget, the primary database would incorrectly remain locked.
+[#12410]
+<li>Fix a bug where the abort of a transaction in which a sub database
+was opened with the DB_TXN_NOT_DURABLE flag could fail. [#12420]
+<li>Fix a bug that could cause an abort transaction that allocated new
+pages to a file that were not flushed to disk prior to the abort
+transaction to report out of disk space. [#12743]
+<li>Fix a bug that could prevent multiple creates and destroys of the
+same file to be recovered correctly. [#13026]
+<li>Fix a bug when recovery previously handled a section of the log that
+did not contain any transactions. [#13139]
+<li>Fix a bug that could result in the loss of durability in
+Transactional Environments on Mac OS X. [#13149]
+<li>Fix a bug that could cause the improper reuse of a transaction id
+when recovery restores prepared transactions. [#13256]
+
+</ol>
+<h3>Utility Changes:</h3>
+<ol>
+
+<li>Add utility for performing hot backups of a database environment.
+[#11536]
+<li>Change the Verify utility to now identify any nodes that have
+incorrect record counts. [#11934]
+<li>Fix a bug in the 1.85 compatibility code supporting per-application
+Btree comparison and prefix compression functions. The functions would
+not work on big-endian 64-bit hardware. [#13316]
+
+</ol>
+<h3>Configuration, Documentation, Portability and Build Changes:</h3>
+<ol>
+
+<li>Change the ex_tpcb sample application to no longer displays
+intermediate results. It displays results at the end of the run.
+[#11259]
+<li>Change the Visual Studio projects on Windows so that each is in an
+intermediate directory. [#11441]
+<li>Fix errors in test subdb011. [#11799]
+<li>Fix a bug that could cause applications using gcc on Power PC
+platforms to hang. [#12233]
+<li>Fix a bug where installation will fail if a true program cannot be
+found. [#12278]
+<li>Fix a bug that prevented C++ applications from configuring XA
+[#12300].
+<li>Fix a race condition in the Windows mutex implementation found on
+8-way Itanium systems. [#12417]
+<li>Add pthread mutex support for IBM OS/390 platform (z/OS or MVS).
+[#12639]
+<li>Fix a bug where the Tcl API did not configure on OS X 10.4. [#12699]
+<li>Fix portability issues with queue or recno primary databases.
+[#12872]
+<li>Fix a bug where utility attempted to send replication message.
+[#13446]
+
+</ol>
+
+</body>
+</html>
diff --git a/db/docs_src/ref/changelog/4.4.20.html b/db/docs_src/ref/changelog/4.4.20.html
new file mode 100644
index 000000000..70896221a
--- /dev/null
+++ b/db/docs_src/ref/changelog/4.4.20.html
@@ -0,0 +1,51 @@
+<!--$Id: 4.4.20.html,v 1.5 2007/05/17 18:17:18 bostic Exp $-->
+<html>
+<head>
+<title>The Berkeley DB Package: DB 4.4.20 Change Log</title>
+<meta name="description" content="Berkeley DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Berkeley DB 4.4.20 Change Log</h3>
+
+<h3>Changes since Berkeley DB 4.4.16:</h3>
+<ol>
+
+<li>Add support for Visual Studio 2005. [#13521]
+<li>Fix a bug with in-memory transaction logs when files wrapped around
+the buffer. [#13589]
+<li>Fix a bug where we needed to close replications open files during
+replication initialization. [#13623]
+<li>Fix a bug which could leave locks in the environment if database
+compaction was run in a transactional environment on a non-transactional
+database. This might have also have triggered deadlocks if the database
+was opened transactionally. [#13680]
+<li>Fix a bug where setting the DB_REGISTER flag could result in
+unnecessarily running recovery, or corruption of the registry file on
+Windows systems. [#13789]
+<li>Fix a bug in Database.compact that could cause JVM crashes or
+NullPointerException. [#13791]
+<li>Fix a bug that would cause a trap if an environment was opened
+specifying DB_REGISTER and the environment directory could not be found.
+[#13793]
+<li>Fix a buffer overflow bug when displaying process and thread IDs in
+the Berkeley DB statistics output. [#13796]
+<li>Fix a bug where if there is insufficient memory for a database key
+in a DBT configured to return a key value into user-specified memory,
+the cursor is moved forward to the next entry in the database, which can
+cause applications to skip key/data pairs. [#13815]
+<li>Fix a bug that could cause the loss of an update to a QUEUE database
+in a hot backup. [#13823]
+<li>Fix a bug where retrieval from a secondary index could result in a
+core dump. [#13843]
+<li>Fix a bug that could cause part of the free list to become unlinked
+if a btree compaction was rolled back due to a transaction abort.
+[#13891]
+<li>Fix a bug with in-memory logging that could cause a race condition
+to corrupt the logs. [#13919]
+
+</ol>
+
+</body>
+</html>
diff --git a/db/docs_src/ref/changelog/4.5.20.html b/db/docs_src/ref/changelog/4.5.20.html
new file mode 100644
index 000000000..1506ad74c
--- /dev/null
+++ b/db/docs_src/ref/changelog/4.5.20.html
@@ -0,0 +1,322 @@
+<!--$Id: 4.5.20.html,v 1.25 2007/05/17 18:17:18 bostic Exp $-->
+<html>
+<head>
+<title>The Berkeley DB Package: DB 4.5.20 Change Log</title>
+<meta name="description" content="Berkeley DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Berkeley DB 4.5.20 Change Log</h3>
+
+<h3>Database or Log File On-Disk Format Changes:</h3>
+<ol>
+
+<li>The on-disk log format has changed.
+
+</ol>
+<h3>New Features:</h3>
+<ol>
+
+<li>Multi-Version Concurrency Control for the Btree/Recno access
+methods.
+<li>A new replication framework with a default TCP/IP setup.
+<li>Online replication upgrades for high availability replicated 24/7
+systems.
+<li>A new event-style notification.
+<li>Several enhancements to the Java Collections API including the
+implementation of the size() method.
+
+</ol>
+<h3>Database Environment Changes:</h3>
+<ol>
+
+<li>Update the DB_ENV-&gt;failchk method to garbage collect per-process
+mutexes stranded after unexpected process failure. [#13964]
+<li>Fix a bug that could cause memory used to track threads for
+DB_ENV-&gt;failchk to not be reused when a thread no longer exists.
+[#14425]
+<li>Add set_event_notify behavior as part of new event notification in
+Berkeley DB. [#14534]
+<li>Fix a bug so that we no longer panic on DB_ENV-&gt;close() if a
+previous environment close failed to log. This condition will now return
+an error. [#14693]
+<li>Created os_getenv, removed clib/getenv, implemented Windows specific
+behavior. [#14942]
+<li>Fix a bug where it was possible to corrupt the DB_REGISTER
+information file, making it impossible for Berkeley DB applications to
+join database environments. [#14998]
+
+</ol>
+<h3>Concurrent Data Store Changes:</h3>
+<ol>
+
+<li>Fix a bug where renaming a subdatabase in a Concurrent Data Store
+environment could fail. [#14185]
+
+</ol>
+<h3>General Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug that could leave extra unallocated pages at the end of a
+database file. [#14031]
+<li>Optimize secondary updates when overwriting primary records.
+[#14075]
+<li>Fix a bug to prevent a trap when creating a named in-memory database
+and there are already temporary files open. [#14133]
+<li>Fix a bug which caused a trap if the key parameter to DBC-&gt;c_get was
+omitted with DB_CURRENT. [#14143]
+<li>Fix a bug with secondary cursors when the secondary has off-page
+duplicates. This bug resulted in incorrect primary data being returned.
+[#14240]
+<li>Improve performance when removing a subdatabase by not locking every
+page. [#14366]
+<li>Fix a bug that would not properly upgrade database files from
+releases 3.2.9 (and earlier) to releases 4.0 (and greater). [#14461]
+<li>Fix a bug that could cause a DB_READ_UNCOMMITTED get through a
+secondary index to return DB_SECONDARY_CORRUPT. [#14487]
+<li>Fix a bug so that non-transactional cursor updates of a
+transactional database will generate an error. [#14519]
+<li>Add a message when the system panics due to a page in the wrong
+state at its time of allocation. [#14527]
+<li>Fix a remove failure when attempting to remove a file that is open
+in another thread of control. [#14780]
+<li>Fix a bug where the key was not ignored when doing a cursor put with
+the DB_CURRENT flag. [#14988]
+
+</ol>
+<h3>Btree Access Method Changes:</h3>
+<ol>
+
+<li>Changed the implementation of internal nodes in btrees so that they
+no longer share references to overflow pages with leaf nodes. [#10717]
+<li>Fix a bug that could cause a diagnostic assertion by setting the
+deleted bit on a record in an internal node. [#13944]
+<li>Fix three problems in BTREE compaction: [#14238]
+<ol type="a">
+<li>When deleting a page don't check the next key in the parent if we
+are going to delete the parent too.
+<li>Need to check that the tree has not collapsed between dropping a
+read lock and getting the write lock. If it has collapsed we will fetch
+the root of the tree.
+<li>Fix a case where we fail to lock the next page before reading it.
+</ol>
+<li>Fix a bug that could cause the compaction of a Btree with sorted
+duplicates to fail when attempting to compact an off page duplicate tree
+if a key could not fit in an internal node. [#14771]
+<li>Fix a bug that causes a loop if an empty Btree was compacted.
+[#14493]
+
+</ol>
+<h3>Hash Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug to allow creation of hash pages during truncate recovery.
+[#14247]
+
+</ol>
+<h3>Queue Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug where reads of data items outside the range of the queue
+were not kept locked to the end of the transaction, breaking
+serializability. [#13719]
+<li>Fix a bug that could cause corruption in queue extent files if
+multiple processes tried to open the same extent at the same time.
+[#14438]
+<li>Improve concurrency for in-place updates in queue databases.
+[#14918]
+
+</ol>
+<h3>Recno Access Method Changes:</h3>
+
+None.
+
+<h3>C++-specific API Changes:</h3>
+<ol>
+
+<li>C++ applications that check the error code in exceptions should note
+that DbMemoryException has been changed to have the error code
+DB_BUFFER_SMALL rather than ENOMEM, to match the error returned by the
+C API. DbMemoryException will be thrown when a Dbt is too small to
+contain data returned by Berkeley DB. When a call to malloc fails, or
+some other resource is exhausted, a plain DbException will be thrown
+with error code set to ENOMEM. [#13939]
+
+</ol>
+<h3>Java-specific API Changes:</h3>
+<ol>
+
+<li>Database.verify may now be called. This method is now static and
+takes a DatabaseConfig parameter. [#13971]
+<li>Add DB_ENV-&gt;{fileid_reset, lsn_reset} to the public API. [#14076]
+
+</ol>
+<h3>Java collections and bind API Changes:</h3>
+<ol>
+
+<li>The com.sleepycat.collections package is now fully compatible with
+the Java Collections framework. [#14732]
+
+</ol>
+<h3>Tcl-specific API Changes:</h3>
+<ol>
+
+<li>Fix a conflicting variable, sysscript.tcl. [#15051]
+
+</ol>
+<h3>RPC-specific Client/Server Changes:</h3>
+
+None.
+
+<h3>Replication Changes:</h3>
+<ol>
+
+<li>Fix a bug when running with DEBUG_ROP or DEBUG_WOP. [#13394]
+<li>Add live replication upgrade support [#13670]
+<li>Fix a bug so that client databases are removed at the start of
+internal initialization. [#14147]
+<li>Fix a bug in replication internal initialization so that data_dir
+will be handled correctly. Make internal initialization resilient to
+multiple data_dir calls with the same directory. [#14489]
+<li>Fix a bug in the 4.2 sync-up algorithm that could result in no open
+files. [#14552]
+<li>Fix a bug when clients decide to re-request. [#14642]
+<li>Fix a bug where a PERM bulk buffer could have a zero LSN passed to
+the application callback. [#14675]
+<li>Change names of some existing replication API methods as described
+in "Replication Method Naming" page of the "Upgrading Berkeley DB
+Applications to Release 4.5" section of Berkeley DB Reference Guide.
+[#14723]
+<li>Fix a bug which could cause an election to succeed only after
+waiting for the timeout to expire, even when all sites responded in a
+timely manner. The bug was most easily visible in an election between 2
+sites. [#14752]
+<li>Fix a bug where a process could have an old file handle to a log
+file. [#14797]
+<li>Fix a bug where a "log_more" message could be on a log file
+boundary. [#15034]
+<li>Fix a bug that could cause log corruption if a database open
+operation were attempted during a call to rep_start in another thread.
+[#15035]
+<li>Fix a bug during elections where a vote2 arrives before its vote1.
+[#15055]
+<li>Fix a bug to make sure we are a client if sending a REP_REREQUEST.
+[#15066]
+
+</ol>
+<h3>XA Resource Manager Changes:</h3>
+
+None.
+
+<h3>Locking Subsystem Changes:</h3>
+<ol>
+
+<li>Fix a bug that could cause a write to hang if DB_READ_UNCOMMITTED
+is enabled and it tries to reacquire a write lock. [#14919]
+
+</ol>
+<h3>Logging Subsystem Changes:</h3>
+<ol>
+
+<li>Fix a bug so that log headers are now included in the checksum. This
+avoids a possible race in doing hot backups. [#11636].
+<li>Add a check so that some log sequence errors are diagnosed at run
+time rather than during recovery. [#13231]
+<li>Fix a bug where recovery fails if there is no disk space for the
+forced checkpoint that occurs at the end of processing the log. [#13986]
+<li>Fix a bug which could cause a page to be missing from the end of a
+database file if the page at the end of the file was freed while it
+contained data and the system was restarted before the log record for
+that free was flushed to disk. [#14090]
+<li>Fix a bug that could cause log files to be incorrectly removed by
+log_archive if it was run immediately after recovery. [#14874]
+
+</ol>
+<h3>Memory Pool Subsystem Changes:</h3>
+<ol>
+
+<li>Fix a bug that could cause corruption to the buffer pool cache if a
+race condition was hit while using DB-&gt;compact. [#14360]
+<li>Fix a bug where cache pages could be leaked in applications creating
+temporary files for which the DB_MPOOL_NOFILE flag was set. [#14544]
+
+</ol>
+<h3>Transaction Subsystem Changes:</h3>
+<ol>
+
+<li>Fix a bug that could cause extra empty pages to appear in a database
+file after recovery. [#11118]
+<li>Fix a bug triggered when running recovery with a feedback function
+that could cause a NULL pointer dereference. [#13834]
+<li>Fix a bug where running recovery could create duplicate entries in
+the data directory list. [#13884]
+<li>Fix a bug to not trade locks if a write lock is already owned.
+[#13917]
+<li>Fix a bug that could cause traps or hangs if the DB_TXN-&gt;set_name
+function is used in a multithreaded application. [#14033]
+<li>Fix a bug so that a transaction can no longer be committed after it
+had deadlocked. [#14037]
+<li>Fix a bug that could cause a trap during recovery if multiple
+operations that could remove the same extent are recovered. [#14061]
+<li>Fix a bug that could cause an extent file to be deleted after the
+last record in the extent was consumed but the consuming transaction was
+aborted. [#14179]
+<li>Fix a bug where the parent database would not use
+DB_READ_UNCOMMITTED in certain cases when calling DBC-&gt;c_pget. [#14361]
+<li>Fix a bug so that it is no longer possible to do a non-transactional
+cursor update on a database that is opened transactionally. [#14519]
+<li>Fix a bug that causes a sequence to ignore the DB_AUTO_COMMIT
+settings. [#14582]
+<li>Fix a bug, change txn_recover so that multiple processes will
+recover prepared transactions without requiring that the first process
+stay active. [#14707]
+<li>Fix a bug that could cause the wrong record to be deleted if a
+transaction had a cursor on a record with a pending delete and then
+replaced a record that contained overflow data or replaced a record with
+overflow data and that replace failed. [#14834]
+
+</ol>
+<h3>Utility Changes:</h3>
+<ol>
+
+<li>Fix a bug that caused db_verify to not check the order on leaf pages
+which were the leftmost children of an internal node. [#13004]
+<li>Fix a bug that caused db_hotbackup to not backup queue extent files.
+[#13848]
+<li>Fix a bug so that db_verify no longer reports that an unused hash
+page is not fully zeroed. [#14030]
+<li>Fix a bug where db_stat ignored the -f option to return "fast
+statistics". [#14283]
+<li>Fix a bug that prevented the db_stat utility from opening database
+files with write permission so that meta data statistics would be
+updated. [#14755]
+<li>Fix a bug in db_hotbackup related to windows. Sub-directories are
+now ignored. [#14757]
+
+</ol>
+<h3>Configuration, Documentation, Portability and Build Changes:</h3>
+<ol>
+
+<li>The Berkeley DB 4.3 and 4.4 releases disallowed using the
+--with-uniquename configuration option with the C++, Java, or RPC
+--enable-XXX options. The 4.5 release returns to the 4.2 release
+behavior, allowing those combinations of configuration options. [#14067]
+<li>Fix build issues when CONFIG_TEST is not enabled for Tcl. [#14507]
+<li>There are updated build instructions for Berkeley DB PHP module on
+Linux. [#14249]
+<li>Use libtool's "standard" environment variable names so that you can
+set "AR" to "ar -X64" for example, and modify both libtool and the
+Makefile commands. Remove the install-strip target from the Makefile,
+it is no longer used. [#14726]
+<li>Fix a bug where, when a database is opened with the DB_THREAD flag
+(the default in Java), and an operation in one thread causes the
+database to be truncated (typically when the last page in the database
+is freed) concurrently with a read or write in another thread, there can
+be arbitrary data loss, as Windows zeros out pages from the read/write
+location to the end of the file. [#15063]
+
+</ol>
+
+</body>
+</html>
diff --git a/db/docs_src/ref/changelog/4.6.html b/db/docs_src/ref/changelog/4.6.html
new file mode 100644
index 000000000..7d0ec4947
--- /dev/null
+++ b/db/docs_src/ref/changelog/4.6.html
@@ -0,0 +1,366 @@
+<!--$Id: 4.6.html,v 1.34 2007/07/17 14:50:20 bostic Exp $-->
+<html>
+<head>
+<title>The Berkeley DB Package: DB 4.6.18 Change Log</title>
+<meta name="description" content="Berkeley DB: A database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
+</head>
+<body bgcolor=white>
+
+<h3 align=center>Berkeley DB 4.6.18 Change Log</h3>
+<h3>Database or Log File On-Disk Format Changes:</h3>
+<ol>
+
+<li>The on-disk log format has changed.
+<li>The format of Hash database pages was changed in the Berkeley DB 4.6
+release, and items are now stored in sorted order.
+<b>The format changes are entirely backward-compatible, and no database
+upgrades are needed.</b>
+However, upgrading existing databases can offer significant performance
+improvements. Note that databases created using the 4.6 release may not
+be usable with earlier Berkeley DB releases.
+
+</ol>
+<h3>New Features:</h3>
+<ol>
+
+<li>Add support for a cursor DB_PREV_DUP flag, which moves the cursor
+to the previous key/data pair if it's a duplicate of the current
+key/data pair. [#4801]
+<li>Add the ability to set cache page priority on a database or cursor
+handle. [#11886]
+<li>Add verbose output tracing for filesystem operations. [#13760]
+<li>Port Berkeley DB to Qualcomm's Binary Runtime Environment for
+Wireless (BREW). [#14562]
+<li>Port Berkeley DB to WinCE. [#15312]
+<li>Port Berkeley DB to S60. [#15371]
+<li>Applications may now begin processing new transactions while previously
+prepared, but unresolved, transactions are still pending. [#14754]
+<li>Significant performance improvements in the Hash access method. [#15017]
+
+</ol>
+<h3>Database Environment Changes:</h3>
+<ol>
+
+<li>Add support to close open file handles in the case of catastrophic
+database environment failure so applications that do not exit and
+restart on failure won't leak file handles. [#6538]
+<li>Replace the Berkeley DB shared memory allocator with a new
+implementation, intended to decrease the performance drop-off seen in
+database environments having working sets that are larger than the
+cache, especially database environments with multiple cache page sizes.
+[#13122]
+<li>Fix a bug that would incorrectly cause a thread to appear to be
+in the Berkeley DB API after a call to db_create. [#14562]
+<li>Allow database close prior to resolving all transactions updating
+the database. [#14785]
+<li>Fix a bug where the db_stat utility -Z flag and the statistics
+method's DB_STAT_CLEAR flag could clear mutex statistics too quickly,
+leading to incorrect values being displayed. [#15032]
+<li>Fix a bug where removal of a file after and open/close pair spanning
+the most recent checkpoint log-sequence-numbers made recovery fail.
+[#15092]
+<li>Fix a bug that could leave an environment unrecoverable if FTRUNCATE
+was not set and a roll-forward to a timestamp was interrupted between the
+truncation of the log and the recording of aborted allocations. [#15108]
+<li> Fix a bug where recovery of a rename operation could fail if the
+rename occurred in a directory that no longer existed. [#15119]
+<li>Fix a bug that could cause recovery to report a "File exists"
+error if a committed create was partially recovered by a previously
+failed recovery operation. [#15151]
+<li>Fix a bug where the DbEnv.get_thread_count method implementation was
+missing from the Berkeley DB 4.5 release. [#15201]
+<li>Fix a bug where replication operations were not reported properly
+when the DbEnv.failchk method was called. [#15094]
+<li> Fixed a bug that caused SEQ-&gt;remove not to use a transaction
+if the sequence was opened on a transactional database handle but no
+transaction was specified on the call. [#15235]
+<li>Fix a bug where accesses to the database environment reference count
+could race, causing the DB_ENV-&gt;remove method to incorrectly remove
+or not remove a database environment. [#15240]
+<li>Fix a bug that could cause a recovery failure if a partial record
+was written near the end of a log file before a crash and then never
+overwritten after recovery runs and before a log file switch occurs.
+[#15302]
+<li>Fix a bug that could fire a diagnostic assertion if an error occurred
+during a database environment open. [#15309]
+<li> Fix a bug where memp_trickle attempts to flush an infinite number
+of buffers. [#15342]
+<li>Cause application updates of the DB_ENV-&gt;set_mp_max_write values
+to affect already running cache flush operations. [#15342]
+<li>Fix a bug which could cause system hang if a checkpoint happened at
+the same time as a database file create or rename. [#15346]
+<li>Fix a bug which could cause application failure if the open of a
+subdatabase failed while other database opens were happening. [#15346]
+<li>Fix a bug that could cause recovery to not process a transaction
+properly if the transaction was started before the transaction IDs were
+reset but did not put its first record into the log until after the
+txn_recycle record. [#15400]
+<li>Fix a bug that could cause a thread in cache allocation to loop
+infinitely. [#15406]
+<li>Fix a bug that could cause recovery to report a Log Sequence Error
+on systems without the ftruncate system call where a page allocation
+occurred and the database metadata page was forced out of cache without
+being marked dirty and then had to be recovered. [#15441]
+<li>Fix a bug on systems lacking the ftruncate system call, where a page
+may be improperly linked into the free list if archive recovery was done
+in multiple steps, that is, applying additional logs to the same
+databases. [#15557]
+
+</ol>
+<h3>Concurrent Data Store Changes:</h3>
+
+None.
+
+<h3>General Access Method Changes:</h3>
+<ol>
+
+<li>Add a feature where applications can specify a custom comparison
+function for the Hash access method [#4109]
+<li>Open, create, close and removal of non-transactional databases is
+are longer logged in transactional database environments unless debug
+logging is enabled. [#8037]
+<li>Add the ability to set cache page priority on a database or cursor
+handle. [#11886]
+<li>fix a bug where the DB_ENV-&gt;fileid_reset method failed when
+called on on encrypted or check-summed databases. [#13990]
+<li>Fix a bug where the DB-&gt;fd method failed when called on
+in-memory databases. [#14157]
+<li>Fix a bug where an attempt to open a Recno database with a backing
+file that does not exist could report an error because it couldn't
+remove a temporary file. [#14160]
+<li>Reverse a change found in previous releases which disallowed setting
+"partial" flags on key DBTs for DB and DbCursor put method calls. [#14520]
+<li>Fix a bug where transactional file operations, such as remove or
+rename, could leak file handles. [#15222]
+<li>Fix a bug that could cause the in-memory sorted freelist used by the
+DB-&gt;compact method not to be freed if transaction or lock timeouts
+were set in the environment. [#15292]
+<li>Add the DB-&gt;get_multiple method, which returns if the DB handle
+references a "master" database in the physical file. [#15352]
+<li>Fix a bug that could cause an DB_INORDER, DB-&gt;get method
+DB_CONSUME operation to loop if the Queue database was missing a record
+due to a rollback by a writer or a non-queue insert in the queue.
+[#15452]
+<li>Fix a bug preventing database removal after application or system
+failure in a database environment configured for in-memory logging.
+[#15459]
+
+</ol>
+<h3>Btree Access Method Changes:</h3>
+
+None.
+
+<h3>Hash Access Method Changes:</h3>
+<ol>
+
+<li>Change the internal format of Hash database pages, storing items in
+sorted order. There are no externally visible changes, and hash
+databases using historic on-page formats do not require an explicit
+upgrade. (However, upgrading existing databases can offer significant
+performance improvements.) [#15017]
+
+</ol>
+<h3>Queue Access Method Changes:</h3>
+<ol>
+
+<li>Fix a bug which could cause a Queue extent file to be incorrectly
+removed if an empty extent file was being closed by one thread and being
+updated by another thread (which was using random access operations).
+[#9101]
+
+</ol>
+<h3>Recno Access Method Changes:</h3>
+
+None.
+
+<h3>C++-specific API Changes:</h3>
+
+None.
+
+<h3>Java-specific API Changes:</h3>
+<ol>
+
+<li>Add a feature where an exception is thrown by the Java API, the
+Berkeley DB error message is now included in the exception object.
+[#11870]
+<li>Fix a bug which can cause a JVM crash when doing a partial get
+operation. [#15143]
+<li>Fix a bug which prevented the use of Berkeley DB sequences from
+Java. [#15220]
+<li>Fix multiple bugs where DBTs were not being copied correctly in the
+Java replication APIs. [#15223]
+<li>Add transaction.commitWriteNoSync to the Java API. [#15376]
+
+</ol>
+<h3>Java collections and bind API Changes:</h3>
+<ol>
+
+<li>Change SerialBinding to use the current thread's context class
+loader when loading application classes. This allows the JE jar file
+to be deployed in application servers and other containers as a shared
+library rather than as an application jar. [#15447]
+<li>Tuple bindings now support the java.math.BigInteger type. Like other
+tuple binding values, BigInteger values are sorted in natural integer
+order by default, without using a custom comparator. For details please
+see the Javadoc for: com.sleepycat.bind.tuple.TupleInput.readBigInteger
+com.sleepycat.bind.tuple.TupleOutput.writeBigInteger
+com.sleepycat.bind.tuple.BigIntegerBinding [#15244]
+<li>Add tuple binding methods for reading and writing packed int and
+long values. Packed integer values take less space, but take slightly
+more processing time to read and write. See: TupleInput.readPackedInt
+TupleInput.getPackedIntByteLength TupleInput.readPackedLong
+TupleInput.getPackedLongByteLength TupleOutput.writePackedInt
+TupleOutput.writePackedLong PackedInteger [#15422]
+<li>The Collections API has been enhanced so that auto-commit works for
+the standard Java Iterator.remove(), set() and add() methods. Previously
+it was necessary to explicitly begin and commit a transaction in order
+to call these methods, when the underlying Database was transactional.
+Note that starting a transaction is still necessary when calling these
+methods if the StoredCollection.storedIterator method is used. [#15401]
+<li>Fix a bug that causes a memory leak for applications where both of
+the following are true: many Environment objects are opened and closed,
+and the CurrentTransaction or TransactionRunner class is used. [#15444]
+
+</ol>
+<h3>Tcl-specific API Changes:</h3>
+
+None.
+
+<h3>RPC-specific Client/Server Changes:</h3>
+
+None.
+
+<h3>Replication Changes:</h3>
+<ol>
+
+<li>Fix a bug where transactions could be rolled-back if an existing
+replication group master was partitioned and unable to participate in
+an election. [#14752]
+<li>Add a new event when a replication manager framework master fails
+to send and confirm receipt by clients of a "permanent" message.
+[#14775]
+<li>Fix a race where multiple threads might attempt to process a
+LOGREADY condition. [#14902]
+<li>Change the DB_VERB_REPLICATION flag to no longer require the
+Berkeley DB library be built with the --enable-diagnostic configuration
+option to output additional replication logging information. [#14991]
+<li>Fix a bug with elections occurring during internal init of a
+replication client site. [#15057]
+<li>Fix lockout code to lockout message threads and API separately.
+Send indication that log requests is for internal init. [#15067]
+<li>Replication manager changed to retry host-name look-up failures,
+since they could be caused by transient name server outage.
+[#15081]
+<li>Fix a bug which led to memory corruption when the sending of a bulk
+buffer resulted in an error. [#15100]
+<li>A throttling limit of 10 megabytes is now set by default in a newly
+created database environment (see the DbEnv.rep_set_limit method).
+[#15115]
+<li>Fix a bug in ALL_REQ handling where master could get a DB_NOTFOUND.
+[#15116]
+<li>Fix a bug which could lead to client sites repeatedly but unproductively
+calling for an election, when a master site already exists. [#15128]
+<li>Modify gap processing algorithms so XXX_MORE messages ask for data
+beyond what it just processed, not an earlier gap that might exist.
+[#15136]
+<li>Fixed a bug in the ex_rep example application which could cause the
+last few transactions to disappear when shutting down the sites of the
+replication group gracefully. [#15162]
+<li>Fix a bug where if a client crashed during internal init, its
+database environment would be left in a confused state, making it
+impossible to synchronize again with the master. [#15177]
+<li>Fix a bug where election flags are not cleared atomically with the
+setting of the new master ID. [#15186]
+<li>Fix a bug which would cause Berkeley DB to crash if an internal init
+happened when there were no database files at the master. [#15227]
+<li>It is now guaranteed that the DB_EVENT_REP_STARTUPDONE event will
+be presented to the application after the corresponding
+DB_EVENT_REP_NEWMASTER event, even in the face of extreme scheduling
+anomalies. [#15265]
+<li>Fix minor memory leaks in the replication manager. [#15239] [#15256]
+<li>Fix a bug where a client starting an election when the rest of the
+replication group already had an established master could confuse
+replication management at the other client sites, leading to failure to
+properly acknowledge PERM transactions from the master. [#15428]
+<li>Add support for reporting Replication Manager statistics. [#15430]
+<li>Fix a bug where a send failure during processing of a request
+message from a client could erroneously appear to the application as an
+EPERM system error. [#15436]
+<li>Client now sets STARTUPDONE at the end of the synchronization phase
+when it has caught up to the end of the master's transaction log, without
+requiring ongoing transactions at the master. [#15542]
+<li>Fix a bug in sleep-time calculation which could cause a Replication
+Manager failure. [#15552]
+
+</ol>
+<h3>XA Resource Manager Changes:</h3>
+
+None.
+
+<h3>Locking Subsystem Changes:</h3>
+<ol>
+
+<li>Change the DB_ENV-&gt;lock_detect method to return the number of
+transactions timed out in addition to those were rejected due to
+deadlock. [#15281]
+
+</ol>
+<h3>Logging Subsystem Changes:</h3>
+
+None.
+
+<h3>Memory Pool Subsystem Changes:</h3>
+<ol>
+
+<li>Fix a bug that could cause a checkpoint to hang if a database was
+closed while the checkpoint was forcing that file to disk and all the
+pages for that database were replaced in the cache. [#15135]
+<li>Fix a bug where a system error in closing a file could result in a
+core dump. [#15137]
+<li>Fix MVCC statistics counts for private database environments. [#15218]
+
+</ol>
+<h3>Transaction Subsystem Changes:</h3>
+<ol>
+
+<li>Fix a bug where creating a database with the DB_TXN_NOTDURABLE flag
+set would still write a log record. [#15386]
+<li>Change transaction checkpoint to wait only for pages being updated
+during the checkpoint. [#14710]
+
+</ol>
+<h3>Utility Changes:</h3>
+<ol>
+
+<li>Fix a bug that prevented db_load from handling subdatabase names
+that were of zero length. [#8204]
+<li>Fix a bug where the db_hotbackup utility did not clean out and record
+the log file numbers in the backup directory when both the -u and -D flags
+were specified. [#15395]
+
+</ol>
+<h3>Configuration, Documentation, Portability and Build Changes:</h3>
+<ol>
+
+<li>Berkeley DB no longer supports process-shared database environments
+on Windows 9X platforms; the DB_PRIVATE flag must always be specified
+to the DB_ENV-&gt;open method. [#13766]
+<li>Port Berkeley DB to Qualcomm's Binary Runtime Environment for
+Wireless (BREW). [#14562]
+<li>Compile SWIG-generated code with the -fno-strict-aliasing flag when
+using the GNU gcc compiler. [#14953]
+<li>Changed include files so ENOENT is resolved on Windows. [#15078]
+<li>Port Berkeley DB to WinCE. [#15312]
+<li>Port Berkeley DB to S60. [#15371]
+<li>Add the db_hotbackup executable to the Windows MSI installer. [#15372]
+<li>Change the db_hotbackup utility to use the Berkeley DB library
+portability layer. [#15415]
+<li>Re-write the GNU gcc mutex implementation on the x86 platform to
+avoid compiler errors. [#15461]
+<li>Fix a bug with non-HFS filesystems under OS X which could affect
+data durability. [#15501]
+
+</ol>
+</body>
+</html>
diff --git a/db/docs_src/ref/changelog/spell.ok b/db/docs_src/ref/changelog/spell.ok
new file mode 100644
index 000000000..1a8148d66
--- /dev/null
+++ b/db/docs_src/ref/changelog/spell.ok
@@ -0,0 +1,613 @@
+ADDCPPFLAGS
+ADDCXXFLAGS
+ADDLDFLAGS
+ADDLIBS
+AG
+ALLDB
+API
+APIs
+AccessExample
+Acflmo
+Ahlm
+AttachCurrentThread
+BDB
+BTREE
+BerkeleyDB
+BigInteger
+BigIntegerBinding
+BtrecExample
+Btree
+Btrees
+CALLOC
+CDB
+CDS
+CFLAGS
+CHKPOINT
+CHKSUM
+CLASSPATH
+CONFIG
+CPPFLAGS
+CURLSN
+CVS
+CXX
+CXXFLAGS
+CamelCased
+Compaq
+CurrentTransaction
+CursorConfig
+Cygwin
+DB's
+DBC
+DBENV
+DBEnv
+DBINFO
+DBM
+DBT
+DBTYPE
+DBTs
+DBX
+DBcursor
+DIR
+DLL
+DLLs
+DONOTINDEX
+DS
+DSYNC
+DUPSORT
+DatabaseConfig
+Db
+DbBtreeStat
+DbCursor
+DbDeadlockException
+DbEnv
+DbEnvFeedback
+DbException
+DbHashStat
+DbInfo
+DbLock
+DbLockNotGrantedException
+DbLockRequest
+DbLockStat
+DbLockTab
+DbLog
+DbLogStat
+DbLsn
+DbMemoryException
+DbMpool
+DbMpoolFStat
+DbMpoolFile
+DbMpoolStat
+DbMultiple
+DbMultipleDataIterator
+DbMultipleKeyDataIterator
+DbMultipleRecnoDataIterator
+DbRecoverInit
+DbRunRecoveryException
+DbTxn
+DbTxnMgr
+DbTxnStat
+DbXAResource
+DbXid
+Dbc
+Dbm
+Dbt
+Dbt's
+Dbts
+EACCES
+EAGAIN
+EBUSY
+EE
+EINTR
+EINVAL
+EIO
+ENOENT
+ENOMEM
+ENOSPC
+ENV
+EPERM
+EXCL
+Embedix
+EnvironmentConfig
+Exp
+FCNTL
+FINFO
+FSTAT
+FTRUNCATE
+FUNC
+Faigon
+FastInputStream
+FastOutputStream
+FileNotFoundException
+FlushFileBuffers
+FreeBSD
+GCC
+Gb
+Gcc
+GetDiskFreeSpace
+GetLongPathNameA
+GetTempDir
+HANDLEs
+HFS
+HPUX
+HSEARCH
+IDs
+INIT
+INMEMORY
+INORDER
+INT
+IOExceptionWrapper
+IOINFO
+IPC
+ISPERM
+Ids
+IllegalArgumentException
+Informationssysteme
+IntegerBinding
+Itanium
+JDK
+JE
+JNI
+JNI's
+JVM
+Javadoc
+KEYEMPTY
+KEYEXIST
+KEYFIRST
+KEYLAST
+LDFLAGS
+LIBS
+LOCKDOWN
+LOCKTAB
+LOGC
+LOGREADY
+LOGSONLY
+LSN
+LSNs
+LWP
+Landon
+Libtool
+LogSequenceNumber
+MALLOC
+MIPS
+MPE
+MPOOL
+MPOOLFILE
+MSI
+MSVC
+MT
+MUTEX
+MUTEXLOCKS
+MVCC
+MVS
+MacOS
+Microsystems
+MinGW
+MoveFileEx
+MultipleDataEntry
+Mutex
+NCR's
+NEWMASTER
+NEWSITE
+NOBUFFER
+NODUP
+NODUPDATA
+NOFILE
+NOLOCKING
+NOMMAP
+NOOVERWRITE
+NOSYNC
+NOTDURABLE
+NOTFOUND
+NOTGRANTED
+NOTHELD
+NOTPERM
+NOWAIT
+NT
+Ndbm
+Nextstep
+Nixdorf
+NonStop
+NullPointerException
+OBJ
+ODDFILESIZE
+ORDERCHKONLY
+OSF
+OSS
+OSTREAMCLASS
+OpenBSD
+OpenServer
+OpenUNIX
+Opteron
+OutOfMemoryError
+OutOfMemoryErrors
+PHP
+PPC
+PREV
+PaRisc
+PackedInteger
+Paxos
+Perl
+Phong
+PlatformSDK
+PostScript
+PowerPC
+QNX
+Qualcomm's
+REALLOC
+RECNO
+RECNUM
+RECORDCOUNT
+REQ
+REREQUEST
+RMW
+ROP
+RPCGEN
+RPRINT
+RUNLINK
+RUNRECOVERY
+Recno
+ReliantUNIX
+RuntimeExceptionWrapper
+SCO
+SEQ
+SGI
+SIGINT
+SIGPIPE
+SMP
+STARTUPDONE
+STAT
+STRDUP
+Scriptics
+SerialBase
+SerialBinding
+Siemens
+Sleepycat
+Sparc
+Spinlocks
+Stat
+StoredCollection
+StoredCollections
+StoredContainer
+StringDbt
+SunOS
+Symbian
+TCL
+TMONEPHASE
+TMP
+TMRESUME
+TXN
+TXNMGR
+Tcl
+Tcl's
+TempFolder
+Tk
+TransactionRunner
+Tru
+TupleBase
+TupleBinding
+TupleInput
+TupleOutput
+UI
+UINT
+USERMEM
+UTF
+UTS
+UX
+UltraSPARC
+UltraSparc
+Unicode
+UnixWare
+VC
+Vc
+VersionMismatchException
+Vo
+VxWorks
+Vxworks
+WNT
+WRITECURSOR
+WRONLY
+WWRITE
+WinCE
+WinNT
+WindRiver
+Wmissing
+XA
+XAResource
+XID
+XP
+XXX
+XXXXX
+XXXXXXXXXX
+Xid
+YIELDCPU
+acknowledgement
+alloc
+app
+appexit
+appinit
+apps
+arg
+arraycopy
+atype
+autoconf
+berkdb
+bgcolor
+bigfile
+binarily
+binding's
+blockquote
+bostic
+br
+bsize
+bt
+btrec
+btree
+btrees
+bulletbegin
+bulletend
+byteswapped
+cachesize
+callback
+callbacks
+cc
+chk
+ckp
+classname
+classpath
+clib
+cnt
+com
+commitWriteNoSync
+compat
+config
+configurability
+configuredMap
+configuredSet
+countdown
+cp
+cq
+cr
+crypto
+cxx
+db
+dbc
+dbenv
+dbexamples
+dbm
+dbmclose
+dbobj
+dbopen
+dbp
+dbreg
+dbremove
+dbt
+dbx
+del
+delim
+dir
+directio
+dirtyReadMap
+dirtyReadSet
+dll
+dnl
+docs
+doreq
+dosFS
+dupcompare
+egen
+eid
+endian
+env
+envid
+errbuf
+errcall
+errfile
+errno
+errpfx
+errx
+exploders
+extentsize
+failchk
+fastsplit
+fclose
+fcntl
+fd
+fdatasync
+ffactor
+fget
+fieldId
+fileid
+filemode
+filewould
+fno
+fnp
+fopen
+fput
+fq
+free'd
+freelist
+fset
+fsync
+ftok
+ftruncate
+func
+gbytes
+gcc
+gcc's
+getCause
+getClassLoader
+getConfiguration
+getCursorConfig
+getDirtyRead
+getPackedIntByteLength
+getPackedLongByteLength
+getPrimitiveBinding
+getcwd
+getdynamic
+getenv
+getlong
+gt
+gtlast
+gtput
+gtstat
+hcreate
+hotbackup
+hsearch
+html
+iX
+incursor
+init
+initspin
+inlining
+ino
+inode
+int
+isDirtyRead
+isDirtyReadAllowed
+isrewind
+java
+jnilib
+lc
+len
+lg
+lib
+libc
+libdb
+libfile
+libtool
+libtool's
+lk
+lockVector
+logArchive
+logfiles
+lorder
+lp
+lpthread
+lrt
+lseek
+lsn
+lsnp
+lt
+lthread
+malloc
+marshalling
+maxkey
+maxnactive
+maxnlockers
+maxsize
+memcpy
+memp
+metadata
+metapage
+mingw
+minkey
+mis
+mmap
+mmapsize
+mp
+mpool
+ms
+msemaphore
+mt
+multithreading
+mutex
+mutexes
+mutexlocks
+ndbm
+nelem
+numobjs
+objectToEntry
+ol
+op
+openfiles
+pagesize
+pageyield
+paniccall
+panicstate
+parentid
+pfxsaved
+pget
+pgno
+pp
+pre
+pread
+printf
+printlog
+property's
+pstat
+pthread
+pwrite
+qs
+qsort
+ranlib
+rcvd
+readBigInteger
+readPackedInt
+readPackedLong
+realloc
+recno
+recops
+record's
+recs
+refcnt
+regionmax
+repquote
+req
+roff
+rootsplit
+rpc
+secondaryKeyCreate
+setReadOnly
+shalloc
+shm
+shmget
+sleepycat
+snprintf
+spinlock
+spinlocks
+src
+ssize
+stat
+std
+storedIterator
+strerror
+strtoul
+struct
+structs
+subclassing
+subdatabase
+subdatabases
+subdb
+subtransaction
+subtransactions
+synced
+syncs
+sysscript
+tas
+tcl
+tclConfig
+td
+thread's
+tmp
+tmpString
+toString
+toc
+tpcb
+tr
+tx
+txn
+txnarray
+uClibc
+ul
+umrw
+uninstalling
+uniquename
+unix
+unmarshalling
+usr
+vec
+wcount
+writeBigInteger
+writePackedInt
+writePackedLong
+xa
diff --git a/db/docs_src/ref/changelog/toc.so b/db/docs_src/ref/changelog/toc.so
new file mode 100644
index 000000000..1ce3dd17b
--- /dev/null
+++ b/db/docs_src/ref/changelog/toc.so
@@ -0,0 +1,80 @@
+m4_comment([$Id: toc.so,v 1.7 2007/07/17 14:50:20 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ m4_db Release Change Logs,,
+ upgrade/process, upgrade.2.0/intro)
+
+m4_bulletbegin
+
+m4_bullet([dnl
+m4_link(4.6, [4.6.18])])
+
+m4_bullet([dnl
+m4_link(4.5.20, [4.5.20])])
+
+m4_bullet([dnl
+m4_link(4.4.16, [4.4.16]),
+m4_link(4.4.20, [4.4.20])])
+
+m4_bullet([m4_link(4.3.29, [4.3.29])])
+
+m4_bullet([m4_link(4.2.52, [4.2.52])])
+
+m4_bullet([dnl
+m4_link(4.1.24, [4.1.24]),
+m4_link(4.1.25, [4.1.25])])
+
+m4_bullet([dnl
+m4_link(4.0.14, [4.0.14])])
+
+m4_bullet([dnl
+m4_link(3.3.11, [3.3.11])])
+
+m4_bullet([dnl
+m4_link(3.2.9, [3.2.9])])
+
+m4_bullet([dnl
+m4_link(3.1.14, [3.1.14]),
+m4_link(3.1.17, [3.1.17])])
+
+m4_bullet([dnl
+m4_link(3.0.55, [3.0.55])])
+
+m4_bullet([dnl
+m4_link(2.7.1, [2.7.1]),
+m4_link(2.7.7, [2.7.7]),
+m4_link(2.7.5, [2.7.5]),
+m4_link(2.7.4, [2.7.4]),
+m4_link(2.7.3, [2.7.3])])
+
+m4_bullet([dnl
+m4_link(2.6.4, [2.6.4]),
+m4_link(2.6.5, [2.6.5]),
+m4_link(2.6.6, [2.6.6]),
+m4_link(2.6.7, [2.6.7])])
+
+m4_bullet([dnl
+m4_link(2.5.9, [2.5.9])])
+
+m4_bullet([dnl
+m4_link(2.4.10, [2.4.10]),
+m4_link(2.4.14, [2.4.14])])
+
+m4_bullet([dnl
+m4_link(2.3, [2.3.0]),
+m4_link(2.3.5, [2.3.5])
+m4_link(2.3.10, [2.3.10]),
+m4_link(2.3.11, [2.3.11]),
+m4_link(2.3.12, [2.3.12]),
+m4_link(2.3.14, [2.3.14]),
+m4_link(2.3.16, [2.3.16])])
+
+m4_bullet([dnl
+m4_link(2.2, [2.2.0])])
+
+m4_bullet([dnl
+m4_link(2.1, [2.1.0])])
+
+m4_bulletend
+
+m4_page_footer
diff --git a/db/docs_src/ref/debug/compile.so b/db/docs_src/ref/debug/compile.so
new file mode 100644
index 000000000..4569477d1
--- /dev/null
+++ b/db/docs_src/ref/debug/compile.so
@@ -0,0 +1,42 @@
+m4_comment([$Id: compile.so,v 10.12 2001/03/13 20:39:46 bostic Exp $])
+
+m4_ref_title(Debugging Applications,
+ Compile-time configuration,, debug/intro, debug/runtime)
+
+m4_p([dnl
+There are three compile-time configuration options that assist in
+debugging m4_db and m4_db applications:])
+
+m4_tagbegin
+
+m4_tag([m4_linkpage(dnl
+M4RELDIR/ref/build_unix/conf, --enable-debug, --enable-debug)], [dnl
+If you want to build m4_db with m4_option(g) as the C and C++ compiler
+flag, enter --enable-debug as an argument to configure. This will create
+m4_db with debugging symbols, as well as load various m4_db routines
+that can be called directly from a debugger to display database page
+content, cursor queues, and so forth. (Note that the m4_option(O)
+optimization flag will still be specified. To compile with only the
+m4_option(g), explicitly set the m4_envvar(CFLAGS) environment variable
+before configuring.)])
+
+m4_tag([m4_linkpage(dnl
+M4RELDIR/ref/build_unix/conf, --enable-diagnostic, --enable-diagnostic)], [dnl
+If you want to build m4_db with debugging run-time sanity checks and with
+DIAGNOSTIC #defined during compilation, enter --enable-diagnostic as an
+argument to configure. This will cause a number of special checks to be
+performed when m4_db is running. This flag should not be defined when
+configuring to build production binaries because it degrades performance.])
+
+m4_tag([m4_linkpage(dnl
+M4RELDIR/ref/build_unix/conf, --enable-umrw, --enable-umrw)], [dnl
+When compiling m4_db for use in run-time memory consistency checkers
+(in particular, programs that look for reads and writes of uninitialized
+memory), use --enable-umrw as an argument to configure. This
+guarantees, among other things, that m4_db will completely initialize
+allocated pages rather than initializing only the minimum necessary
+amount.])
+
+m4_tagend
+
+m4_page_footer
diff --git a/db/docs_src/ref/debug/intro.so b/db/docs_src/ref/debug/intro.so
new file mode 100644
index 000000000..f5e0c6d59
--- /dev/null
+++ b/db/docs_src/ref/debug/intro.so
@@ -0,0 +1,57 @@
+m4_comment([$Id: intro.so,v 10.24 2006/11/13 18:05:01 bostic Exp $])
+
+m4_ref_title(Debugging Applications,
+ Introduction to debugging,
+ introduction to @debugging, install/multiple, debug/compile)
+
+m4_p([dnl
+Because m4_db is an embedded library, debugging applications that use
+m4_db is both harder and easier than debugging a separate server.
+Debugging can be harder because when a problem arises, it is not always
+readily apparent whether the problem is in the application, is in the
+database library, or is a result of an unexpected interaction between
+the two. Debugging can be easier because it is easier to track down a
+problem when you can review a stack trace rather than deciphering
+interprocess communication messages. This chapter is intended to assist
+you with debugging applications and reporting bugs to us so that we can
+provide you with the correct answer or fix as quickly as possible.])
+
+m4_p([dnl
+When you encounter a problem, there are a few general actions you can
+take:])
+
+m4_tagbegin
+m4_tag([Review the m4_db error output:], [m4_p([dnl
+If an error output mechanism has been configured in the m4_db
+environment, additional run-time error messages are made available to
+the applications. If you are not using an environment, it is well worth
+modifying your application to create one so that you can get more
+detailed error messages. See m4_link(runtime, Run-time error
+information) for more information on configuring m4_db to output these
+error messages.])])
+
+m4_tag([Review m4_ref(dbenv_set_verbose):], [m4_p([dnl
+Check the list of flags for the m4_ref(dbenv_set_verbose) function, and
+see if any of them will produce additional information that might help
+understand the problem.])])
+
+m4_tag([Add run-time diagnostics:], [m4_p([dnl
+You can configure and build m4_db to perform run-time diagnostics. (By
+default, these checks are not done because they can seriously impact
+performance.) See m4_link(compile, Compile-time configuration) for more
+information.])])
+
+m4_tag([Apply all available patches:], [m4_p([dnl
+Before reporting a problem in m4_db, please upgrade to the latest m4_db
+release, if possible, or at least make sure you have applied any updates
+available for your release from the
+m4_linkweb(http://www.oracle.com/technology/software/products/berkeley-db/db/index.html, m4_db web site).])])
+
+m4_tag([Run the test suite:], [m4_p([dnl
+If you see repeated failures or failures of simple test cases, run the
+m4_db test suite to determine whether the distribution of m4_db you are
+using was built and configured correctly.])])
+
+m4_tagend
+
+m4_page_footer
diff --git a/db/docs_src/ref/debug/printlog.so b/db/docs_src/ref/debug/printlog.so
new file mode 100644
index 000000000..43b53732f
--- /dev/null
+++ b/db/docs_src/ref/debug/printlog.so
@@ -0,0 +1,207 @@
+m4_comment([$Id: printlog.so,v 10.49 2007/07/10 16:54:17 bostic Exp $])
+
+m4_ref_title(Debugging Applications,
+ Reviewing m4_db log files,, debug/runtime, build_brew/intro)
+
+m4_p([dnl
+If you are running with transactions and logging, the m4_ref(db_printlog)
+utility can be a useful debugging aid. The m4_ref(db_printlog) utility
+will display the contents of your log files in a human readable (and
+machine-readable) format.])
+
+m4_p([dnl
+The m4_ref(db_printlog) utility will attempt to display any and all
+log files present in a designated db_home directory. For each log record,
+m4_ref(db_printlog) will display a line of the form:])
+
+m4_indent([dnl
+__LB__22__RB____LB__28__RB__db_big: rec: 43 txnid 80000963 prevlsn __LB__21__RB____LB__10483281__RB__])
+
+m4_p([dnl
+The opening numbers in square brackets are the m4_italic([log sequence
+number]) (m4_italic(LSN)) of the log record being displayed. The first
+number indicates the log file in which the record appears, and the
+second number indicates the offset in that file of the record.])
+
+m4_p([dnl
+The first character string identifies the particular log operation being
+reported. The log records corresponding to particular operations are
+described following. The rest of the line consists of name/value pairs.])
+
+m4_p([dnl
+The rec field indicates the record type (this is used to dispatch records
+in the log to appropriate recovery functions).])
+
+m4_p([dnl
+The txnid field identifies the transaction for which this record was
+written. A txnid of 0 means that the record was written outside the
+context of any transaction. You will see these most frequently for
+checkpoints.])
+
+m4_p([dnl
+Finally, the prevlsn contains the LSN of the last record for this
+transaction. By following prevlsn fields, you can accumulate all the
+updates for a particular transaction. During normal abort processing,
+this field is used to quickly access all the records for a particular
+transaction.])
+
+m4_p([dnl
+After the initial line identifying the record type, each field of the log
+record is displayed, one item per line. There are several fields that
+appear in many different records and a few fields that appear only in
+some records.])
+
+m4_p([dnl
+The following table presents each currently written log record type with
+a brief description of the operation it describes. Any of these
+record types may have the string "_debug" appended if they
+were written because m4_ref(DB_TXN_NOT_DURABLE) was specified and the
+system was configured with m4_linkpage(M4RELDIR/ref/build_unix/conf,
+--enable-diagnostic, --enable-diagnostic).])
+
+m4_comment([START LOG RECORD TYPES])
+m4_table_begin(_center)
+
+m4_table_header(Log Record Type, Description)
+m4_table_element(bam_adj, [Used when we insert/remove an index into/from the page header of a Btree page.])
+m4_table_element(bam_cadjust, [Keeps track of record counts in a Btree or Recno database.])
+m4_table_element(bam_cdel, [Used to mark a record on a page as deleted.])
+m4_table_element(bam_curadj, [Used to adjust a cursor location when a nearby record changes in a Btree database.])
+m4_table_element(bam_merge, [Used to merge two Btree database pages during compaction.])
+m4_table_element(bam_pgno, [Used to replace a page number in a Btree record.])
+m4_table_element(bam_rcuradj, [Used to adjust a cursor location when a nearby record changes in a Recno database.])
+m4_table_element(bam_relink, [Fix leaf page prev/next chain when a page is removed.])
+m4_table_element(bam_repl, [Describes a replace operation on a record.])
+m4_table_element(bam_root, [Describes an assignment of a root page.])
+m4_table_element(bam_rsplit, [Describes a reverse page split.])
+m4_table_element(bam_split, [Describes a page split.])
+m4_table_element(crdel_inmem_create, [Record the creation of an in-memory named database.])
+m4_table_element(crdel_inmem_remove, [Record the removal of an in-memory named database.])
+m4_table_element(crdel_inmem_rename, [Record the rename of an in-memory named database.])
+m4_table_element(crdel_metasub, [Describes the creation of a metadata page for a subdatabase.])
+m4_table_element(db_addrem, [Add or remove an item from a page of duplicates.])
+m4_table_element(db_big, [Add an item to an overflow page (m4_italic(overflow pages) contain items too large to place on the main page)])
+m4_table_element(db_cksum, [Unable to checksum a page.])
+m4_table_element(db_debug, [Log debugging message.])
+m4_table_element(db_noop, [This marks an operation that did nothing but update the LSN on a page.])
+m4_table_element(db_ovref, [Increment or decrement the reference count for a big item.])
+m4_table_element(db_pg_alloc, [Indicates we allocated a page to a database.])
+m4_table_element(db_pg_free, [Indicates we freed a page (freed pages are added to a freelist and reused).])
+m4_table_element(db_pg_freedata, [Indicates we freed a page that still contained data entries (freed pages are added to a freelist and reused.)])
+m4_table_element(db_pg_init, [Indicates we reinitialized a page during a truncate.])
+m4_table_element(db_pg_new, [Indicates that a page was allocated and put on the free list.])
+m4_table_element(db_pg_prepare, [Indicates a new page was allocated during a child transaction of a prepared transaction.])
+m4_table_element(db_pg_sort, [Sort the free page list and free pages at the end of the file.])
+m4_table_element(dbreg_register, [Records an open of a file (mapping the filename to a log-id that is used in subsequent log operations).])
+m4_table_element(fop_create, [Create a file in the file system.])
+m4_table_element(fop_file_remove, [Remove a name in the file system.])
+m4_table_element(fop_remove, [Remove a file in the file system.])
+m4_table_element(fop_rename, [Rename a file in the file system.])
+m4_table_element(fop_write, [Write bytes to an object in the file system.])
+m4_table_element(ham_chgpg, [Used to adjust a cursor location when a Hash page is removed, and its elements are moved to a different Hash page.])
+m4_table_element(ham_copypage, [Used when we empty a bucket page, but there are overflow pages for the bucket; one needs to be copied back into the actual bucket.])
+m4_table_element(ham_curadj, [Used to adjust a cursor location when a nearby record changes in a Hash database.])
+m4_table_element(ham_groupalloc, [Allocate some number of contiguous pages to the Hash database.])
+m4_table_element(ham_insdel, [Insert/delete an item on a Hash page.])
+m4_table_element(ham_metagroup, [Update the metadata page to reflect the allocation of a sequence of contiguous pages.])
+m4_table_element(ham_newpage, [Adds or removes overflow pages from a Hash bucket.])
+m4_table_element(ham_replace, [Handle updates to records that are on the main page.])
+m4_table_element(ham_splitdata, [Record the page data for a split.])
+m4_table_element(qam_add, [Describes the actual addition of a new record to a Queue.])
+m4_table_element(qam_del, [Delete a record in a Queue.])
+m4_table_element(qam_delext, [Delete a record in a Queue with extents.])
+m4_table_element(qam_incfirst, [Increments the record number that refers to the first record in the database.])
+m4_table_element(qam_mvptr, [Indicates we changed the reference to either or both of the first and current records in the file.])
+m4_table_element(txn_child, [Commit a child transaction.])
+m4_table_element(txn_ckp, [Transaction checkpoint.])
+m4_table_element(txn_recycle, [Transaction IDs wrapped.])
+m4_table_element(txn_regop, [Logs a regular (non-child) transaction commit.])
+m4_table_element(txn_xa_regop, [Logs a prepare message.])
+
+m4_table_end
+m4_comment([END LOG RECORD TYPES])
+
+m4_section([Augmenting the Log for Debugging])
+
+m4_p([dnl
+When debugging applications, it is sometimes useful to log not only the
+actual operations that modify pages, but also the underlying m4_db
+functions being executed. This form of logging can add significant bulk
+to your log, but can permit debugging application errors that are almost
+impossible to find any other way. To turn on these log messages, specify
+the --enable-debug_rop and --enable-debug_wop configuration options when
+configuring m4_db. See m4_link(M4RELDIR/ref/build_unix/conf, Configuring
+m4_db) for more information.])
+
+m4_section([Extracting Committed Transactions and Transaction Status])
+
+m4_p([dnl
+Sometimes, it is helpful to use the human-readable log output to
+determine which transactions committed and aborted. The awk script,
+commit.awk, (found in the db_printlog directory of the m4_db
+distribution) allows you to do just that. The following command,
+where log_output is the output of db_printlog, will display a list of
+the transaction IDs of all committed transactions found in the log:])
+
+m4_indent([awk -f commit.awk log_output])
+
+m4_p([dnl
+If you need a complete list of both committed and aborted transactions,
+then the script status.awk will produce it. The syntax is as follows:])
+
+m4_indent([awk -f status.awk log_output])
+
+m4_section([Extracting Transaction Histories])
+
+m4_p([dnl
+Another useful debugging aid is to print out the complete history of a
+transaction. The awk script txn.awk allows you to do that. The
+following command line, where log_output is the output of
+m4_ref(db_printlog) and txnlist is a comma-separated list of transaction
+IDs, will display all log records associated with the designated
+transaction ids:])
+
+m4_indent([awk -f txn.awk TXN=txnlist log_output])
+
+m4_section([Extracting File Histories])
+
+m4_p([dnl
+The awk script fileid.awk allows you to extract all log records that
+refer to a designated file. The syntax for the fileid.awk script is
+the following, where log_output is the output of db_printlog and fids
+is a comma-separated list of fileids:])
+
+m4_indent([awk -f fileid.awk PGNO=fids log_output])
+
+m4_section([Extracting Page Histories])
+
+m4_p([dnl
+The awk script pgno.awk allows you to extract all log records that refer
+to designated page numbers. However, because this script will extract
+records with the designated page numbers for all files, it is most
+useful in conjunction with the fileid script. The syntax for the
+pgno.awk script is the following, where log_output is the output of
+db_printlog and pgnolist is a comma-separated list of page numbers:])
+
+m4_indent([awk -f pgno.awk PGNO=pgnolist log_output])
+
+m4_section([Other log processing tools])
+
+m4_p([dnl
+The awk script count.awk prints out the number of log records
+encountered that belonged to some transaction (that is, the number of
+log records excluding those for checkpoints and
+non-transaction-protected operations).])
+
+m4_p([dnl
+The script range.awk will extract a subset of a log. This is useful
+when the output of m4_ref(db_printlog) is too large to be reasonably
+manipulated with an editor or other tool. The syntax for range.awk is
+the following, where m4_bold(sf) and m4_bold(so) represent the LSN
+of the beginning of the sublog you want to extract, and m4_bold(ef) and
+m4_bold(eo) represent the LSN of the end of the sublog you want to
+extract:])
+
+m4_indent([awk -f range.awk START_FILE=sf START_OFFSET=so END_FILE=ef END_OFFSET=eo log_output])
+
+m4_page_footer
diff --git a/db/docs_src/ref/debug/runtime.so b/db/docs_src/ref/debug/runtime.so
new file mode 100644
index 000000000..fdde19521
--- /dev/null
+++ b/db/docs_src/ref/debug/runtime.so
@@ -0,0 +1,40 @@
+m4_comment([$Id: runtime.so,v 10.21 2007/07/10 17:37:22 bostic Exp $])
+
+m4_ref_title(Debugging Applications,
+ Run-time error information,, debug/compile, debug/printlog)
+
+m4_p([dnl
+Normally, when an error occurs in the m4_db library, an integer value
+(either a m4_db specific value or a system m4_envvar(errno) value) is
+returned by m4_db. In some cases, however, this value may be
+insufficient to completely describe the cause of the error, especially
+during initial application debugging.])
+
+m4_p([dnl
+Most m4_db errors will result in additional information being written
+to a standard file descriptor or output stream. Additionally, m4_db can
+be configured to pass these verbose error messages to an application
+function. There are four methods intended to provide applications with
+additional error information:
+m4_ref(dbenv_set_errcall), m4_ref(dbenv_set_errfile),
+m4_ref(dbenv_set_errpfx), and m4_ref(dbenv_set_verbose).])
+
+m4_p([dnl
+The m4_db error-reporting facilities do not slow performance or
+significantly increase application size, and may be run during normal
+operation as well as during debugging. Where possible, we recommend
+these options always be configured and the output saved in the
+filesystem. We have found that this often saves time when debugging
+installation or other system-integration problems.])
+
+m4_p([dnl
+In addition, there are three methods to assist applications in
+displaying their own error messages: m4_ref(dbenv_strerror),
+m4_ref(dbenv_err), and m4_ref(dbenv_errx). The first is a superset of
+the ANSI C strerror function, and returns a descriptive string for any
+error return from the m4_db library. The m4_ref(dbenv_err) and
+m4_refT(dbenv_errx)s use the error message configuration options
+described previously to format and display error messages to appropriate
+output devices.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/distrib/layout.so b/db/docs_src/ref/distrib/layout.so
new file mode 100644
index 000000000..390fd41ef
--- /dev/null
+++ b/db/docs_src/ref/distrib/layout.so
@@ -0,0 +1,80 @@
+m4_comment([$Id: layout.so,v 10.49 2007/07/06 16:37:23 bostic Exp $])
+
+m4_ref_title(Distribution,
+ Source code layout, @source code layout, distrib/port, refs/refs)
+
+m4_table_begin(, _center)
+m4_table_header(Directory, Description)
+
+m4_table_element(LICENSE, m4_db License)
+m4_table_element(btree, Btree access method source code)
+m4_table_element(build_brew, BREW build directory)
+m4_table_element(build_s60, S60 build directory)
+m4_table_element(build_unix, UNIX build directory)
+m4_table_element(build_vxworks, VxWorks build directory.)
+m4_table_element(build_wince, Windows CE build directory.)
+m4_table_element(build_windows, Windows build directory.)
+m4_table_element(clib, C library replacement functions)
+m4_table_element(common, Common m4_db functions)
+m4_table_element(crypto, Cryptographic support)
+m4_table_element(cxx, C++ API)
+m4_table_element(db, m4_db database support)
+m4_table_element(db185, m4_db version 1.85 compatibility API)
+m4_table_element(db_archive, The db_archive utility)
+m4_table_element(db_checkpoint, The db_checkpoint utility)
+m4_table_element(db_codegen, The db_codegen utility)
+m4_table_element(db_deadlock, The db_deadlock utility)
+m4_table_element(db_dump, The db_dump utility)
+m4_table_element(db_dump185, The db_dump185 utility)
+m4_table_element(db_hotbackup, The db_hotbackup utility)
+m4_table_element(db_load, The db_load utility)
+m4_table_element(db_printlog, The db_printlog debugging utility)
+m4_table_element(db_recover, The db_recover utility)
+m4_table_element(db_stat, The db_stat utility)
+m4_table_element(db_upgrade, The db_upgrade utility)
+m4_table_element(db_verify, The db_verify utility)
+m4_table_element(dbinc, C language include files)
+m4_table_element(dbinc_auto, Automatically generated C language include files)
+m4_table_element(dbm, The dbm/ndbm compatibility APIs)
+m4_table_element(dbreg, m4_db database handle logging support)
+m4_table_element(dist, m4_db administration/distribution tools)
+m4_table_element(docs, Documentation)
+m4_table_element(docs_src, API and Reference Guide documentation sources)
+m4_table_element(env, m4_db environment support)
+m4_table_element(examples_c, C API example programs)
+m4_table_element(examples_cxx, C++ API example programs)
+m4_table_element(examples_java, Java API example programs)
+m4_table_element(fileops, File object operation support)
+m4_table_element(hash, Hash access method)
+m4_table_element(hmac, Checksum support)
+m4_table_element(hsearch, The hsearch compatibility API)
+m4_table_element(java, Java API)
+m4_table_element(libdb_java, The libdb_java shared library)
+m4_table_element(lock, Lock manager)
+m4_table_element(log, Log manager)
+m4_table_element(mod_db4, Apache module support)
+m4_table_element(mp, Shared memory buffer pool)
+m4_table_element(mutex, Mutexes)
+m4_table_element(os, POSIX 1003.1 operating-system specific functionality)
+m4_table_element(os_brew, BREW operating-system specific functionality)
+m4_table_element(os_qnx, QNX operating-system specific functionality)
+m4_table_element(os_s60, S60 operating-system specific functionality)
+m4_table_element(os_vxworks, VxWorks operating-system specific functionality)
+m4_table_element(os_windows, Windows operating-system specific functionality)
+m4_table_element(perl, DB_File and BerkeleyDB Perl modules)
+m4_table_element(php_db4, PHP module support)
+m4_table_element(qam, Queue access method source code)
+m4_table_element(rep, Replication source code)
+m4_table_element(repmgr, Replication Manager Framework source code)
+m4_table_element(rpc_client, RPC client support)
+m4_table_element(rpc_server, RPC server utility)
+m4_table_element(sequence, Sequence source code)
+m4_table_element(tcl, Tcl API)
+m4_table_element(test, Test suite)
+m4_table_element(test_micro, Micro-benchmark test suite)
+m4_table_element(txn, Transaction manager)
+m4_table_element(xa, X/Open Distributed Transaction Processing XA support)
+
+m4_table_end
+
+m4_page_footer
diff --git a/db/docs_src/ref/distrib/port.so b/db/docs_src/ref/distrib/port.so
new file mode 100644
index 000000000..38f4ceb92
--- /dev/null
+++ b/db/docs_src/ref/distrib/port.so
@@ -0,0 +1,108 @@
+m4_comment([$Id: port.so,v 10.5 2006/08/24 16:32:28 bostic Exp $])
+
+m4_ref_title(Distribution,
+ Porting m4_db to new architectures,, test/faq, distrib/layout)
+
+m4_p([dnl
+m4_db is generally easy to port to new architectures. m4_db was
+designed to be as portable as possible, and has been ported to a wide
+variety of systems, from Wind River's Tornado system, to VMS, to
+Windows/NT and Windows/95, and most existing UNIX platforms. It runs
+on 16, 32 and 64-bit machines, little or big-endian. The difficulty of
+a port depends on how much of the ANSI C and POSIX 1003.1 standards the
+new architecture offers.])
+
+m4_p([dnl
+An abstraction layer separates the main m4_db code from the operating
+system and architecture specific components. This layer is comprised
+of approximately 2500 lines of C language code, found in the m4_path(os)
+subdirectory of the m4_db distribution. The following list of files
+include functionality that may need to be modified or implemented in
+order to support a new architecture. Within each file, there is usually
+one, but sometimes several functions (for example, the
+m4_path(os_alloc.c) file contains the malloc, calloc, realloc, free,
+and strdup functions).])
+
+m4_table_begin(, _center)
+m4_table_header(Source file, Description)
+m4_table_element(os_abs.c, [Return if a filename is an absolute pathname])
+m4_table_element(os_alloc.c, [ANSI C malloc, calloc, realloc, strdup, free front-ends])
+m4_table_element(os_clock.c, [Return the current time-of-day])
+m4_table_element(os_config.c, [Return run-time configuration information])
+m4_table_element(os_dir.c, [Read the filenames from a directory])
+m4_table_element(os_errno.c, [Set/get the ANSI C errno value])
+m4_table_element(os_fid.c, [Create a unique ID for a file])
+m4_table_element(os_fsync.c, [POSIX 1003.1 fsync front-end])
+m4_table_element(os_handle.c, [Open file handles])
+m4_table_element(os_id.c, [Return thread ID])
+m4_table_element(os_map.c, [Map a shared memory area])
+m4_table_element(os_method.c, [Run-time replacement of system calls])
+m4_table_element(os_oflags.c, [Convert POSIX 1003.1 open flags, modes to m4_db flags])
+m4_table_element(os_open.c, [Open file handles])
+m4_table_element(os_region.c, [Map a shared memory area])
+m4_table_element(os_rename.c, [POSIX 1003.1 rename call])
+m4_table_element(os_root.c, [Return if application has special permissions])
+m4_table_element(os_rpath.c, [Return last pathname separator])
+m4_table_element(os_rw.c, [POSIX 1003.1 read/write calls])
+m4_table_element(os_seek.c, [POSIX 1003.1 seek call])
+m4_table_element(os_sleep.c, [Cause a thread of control to release the CPU])
+m4_table_element(os_spin.c, [Return the times to spin while waiting for a mutex])
+m4_table_element(os_stat.c, [POSIX 1003.1 stat call])
+m4_table_element(os_tmpdir.c, [Set the path for temporary files])
+m4_table_element(os_unlink.c, [POSIX 1003.1 unlink call])
+m4_table_end
+
+m4_p([dnl
+All but a few of these files contain relatively trivial pieces of code.
+Typically, there is only a single version of the code for all platforms
+m4_db supports, and that code lives in the m4_path(os) directory of the
+distribution. Where different code is required, the code is either
+conditionally compiled or an entirely different version is written. For
+example, VxWorks versions of some of these files can be found in the
+distribution directory os_vxworks, and Windows versions can be found in
+os_windows.])
+
+m4_p([dnl
+Historically, there are only two difficult questions to answer for each
+new port. The first question is how to handle shared memory. In order
+to write multiprocess database applications (not multithreaded, but
+threads of control running in different address spaces), m4_db must be
+able to name pieces of shared memory and access them from multiple
+processes. On UNIX/POSIX systems, we use m4_bold(mmap) and
+m4_bold(shmget) for that purpose, but any interface that provides access
+to named shared memory is sufficient. If you have a simple, flat
+address space, you should be able to use the code in
+m4_path(os_vxworks/os_map.c) as a starting point for the port. If you
+are not intending to write multiprocess database applications, then
+this won't be necessary, as m4_db can simply allocate memory from the
+heap if all threads of control will live in a single address space.])
+
+m4_p([dnl
+The second question is mutex support. m4_db requires some form of
+m4_bold([self-blocking]) mutual exclusion mutex. Blocking mutexes are
+preferred as they tend to be less CPU-expensive and less likely to cause
+thrashing. If blocking mutexes are not available, however, test-and-set
+will work as well. The code for mutexes is in two places in the system:
+the include file m4_path(dbinc/mutex.h), and the distribution directory
+m4_path(mutex).])
+
+m4_p([dnl
+m4_db uses the GNU autoconf tools for configuration on almost all of
+the platforms it supports. Specifically, the include file
+m4_path(db_config.h) configures the m4_db build. The simplest way to
+begin a port is to configure and build m4_db on a UNIX or UNIX-like
+system, and then take the m4_path(Makefile) and m4_path(db_config.h)
+file created by that configuration, and modify it by hand to reflect
+the needs of the new architecture. Unless you're already familiar with
+the GNU autoconf toolset, we don't recommend you take the time to
+integrate your changes back into the m4_db autoconfiguration framework.
+Instead, send us context diffs of your changes and any new source files
+you created, and we'll integrate the changes into our source tree.])
+
+m4_p([dnl
+Finally, we're happy to work with you on the port, or potentially, do
+the port ourselves, if that is of interest to you. Regardless, if you
+have any porting questions, just let us know, and we will be happy to
+answer them.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/dumpload/format.so b/db/docs_src/ref/dumpload/format.so
new file mode 100644
index 000000000..92c3f3a78
--- /dev/null
+++ b/db/docs_src/ref/dumpload/format.so
@@ -0,0 +1,78 @@
+m4_comment([$Id: format.so,v 10.16 2001/03/13 20:39:47 bostic Exp $])
+
+m4_ref_title(Dumping and Reloading,
+ Dump output formats,, dumpload/utility, dumpload/text)
+
+m4_p([dnl
+There are two output formats used by m4_ref(db_dump) and m4_ref(db_dump185).])
+
+m4_p([dnl
+In both output formats, the first few lines of the output contain header
+information describing the underlying access method, filesystem page size,
+and other bookkeeping information.])
+
+m4_p([dnl
+The header information starts with a single line, VERSION=N, where N is
+the version number of the dump output format.])
+
+m4_p([dnl
+The header information is then output in name=value pairs, where name may
+be any of the keywords listed in the m4_ref(db_load) manual page, and
+value will be its value. Although this header information can be manually
+edited before the database is reloaded, there is rarely any reason to do
+so because all of this information can also be specified or overridden by
+command-line arguments to m4_ref(db_load).])
+
+m4_p([dnl
+The header information ends with single line HEADER=END.])
+
+m4_p([dnl
+Following the header information are the key/data pairs from the
+database. If the database being dumped is a Btree or Hash database, or
+if the m4_bold(-k) option was specified, the output will be paired lines
+of text where the first line of the pair is the key item, and the second
+line of the pair is its corresponding data item. If the database being
+dumped is a Queue or Recno database, and the m4_bold(-k) option was not
+specified, the output will be lines of text where each line is the next
+data item for the database. Each of these lines is preceded by a single
+space.])
+
+m4_p([dnl
+If the m4_option(p) option to m4_ref(db_dump) or m4_ref(db_dump185) was
+specified, the key/data lines will consist of single characters
+representing any characters from the database that are m4_italic([printing
+characters]) and backslash (m4_bold(m4_backslash([]))) escaped characters
+for any that were not. Backslash characters appearing in the output mean
+one of two things: if the backslash character precedes another backslash
+character, it means that a literal backslash character occurred in the
+key or data item. If the backslash character precedes any other
+character, the next two characters must be interpreted as hexadecimal
+specification of a single character; for example, m4_bold([m4_backslash()0a])
+is a newline character in the ASCII character set.])
+
+m4_p([dnl
+Although some care should be exercised, it is perfectly reasonable to use
+standard text editors and tools to edit databases dumped using the
+m4_option(p) option before reloading them using the m4_ref(db_load)
+utility.])
+
+m4_p([dnl
+Note that the definition of a printing character may vary from system to
+system, so database representations created using the m4_option(p)
+option may be less portable than those created without it.])
+
+m4_p([dnl
+If the m4_option(p) option to m4_ref(db_dump) or m4_ref(db_dump185) is
+not specified, each output line will consist of paired hexadecimal values;
+for example, the line m4_bold(726f6f74) is the string m4_bold(root) in
+the ASCII character set.])
+
+m4_p([dnl
+In all output formats, the key and data items are ended by a single line
+DATA=END.])
+
+m4_p([dnl
+Where multiple databases have been dumped from a file, the overall output
+will repeat; that is, a new set of headers and a new set of data items.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/dumpload/text.so b/db/docs_src/ref/dumpload/text.so
new file mode 100644
index 000000000..228e82b47
--- /dev/null
+++ b/db/docs_src/ref/dumpload/text.so
@@ -0,0 +1,24 @@
+m4_comment([$Id: text.so,v 10.15 2001/03/13 20:39:47 bostic Exp $])
+
+m4_ref_title(Dumping and Reloading,
+ Loading text into databases,
+ loading @text into databases,
+ dumpload/format, install/file)
+
+m4_p([dnl
+The m4_ref(db_load) utility can be used to load text into databases.
+The m4_option(T) option permits nondatabase applications to create
+flat-text files that are then loaded into databases for fast,
+highly-concurrent access. For example, the following command loads the
+standard UNIX m4_path(/etc/passwd) file into a database, with the login
+name as the key item and the entire password entry as the data item:])
+
+m4_indent([dnl
+awk -F: '{print [$]1; print [$]0}' __LT__ /etc/passwd |m4_backslash([])
+ sed 's/m4_backslash([])m4_backslash([])/m4_backslash([])m4_backslash([])m4_backslash([])m4_backslash([])/g' | db_load -T -t hash passwd.db])
+
+m4_p([dnl
+Note that backslash characters naturally occurring in the text are escaped
+to avoid interpretation as escape characters by m4_ref(db_load).])
+
+m4_page_footer
diff --git a/db/docs_src/ref/dumpload/utility.so b/db/docs_src/ref/dumpload/utility.so
new file mode 100644
index 000000000..a37105f0e
--- /dev/null
+++ b/db/docs_src/ref/dumpload/utility.so
@@ -0,0 +1,43 @@
+m4_comment([$Id: utility.so,v 10.18 2004/10/05 16:44:33 bostic Exp $])
+
+m4_ref_title(Dumping and Reloading,
+ The db_dump and db_load utilities,
+ dumping/loading @text to/from databases,
+ ext/php, dumpload/format)
+
+m4_p([dnl
+There are three utilities used for dumping and loading m4_db
+databases: m4_ref(db_dump), m4_ref(db_dump185), and m4_ref(db_load).])
+
+m4_p([dnl
+The m4_ref(db_dump) and m4_ref(db_dump185) utilities dump m4_db
+databases into a flat-text representation of the data that can be read
+by m4_ref(db_load). The only difference between them is that
+m4_ref(db_dump) reads m4_db version 2 and greater database formats,
+whereas m4_ref(db_dump185) reads m4_db version 1.85 and 1.86 database
+formats.])
+
+m4_p([dnl
+The m4_ref(db_load) utility reads either the output format used
+by the dump utilities or (optionally) a flat-text representation
+created using other tools, and stores it into a m4_db database.])
+
+m4_p([dnl
+Dumping and reloading Hash databases that use user-defined hash functions
+will result in new databases that use the default hash function. Although
+using the default hash function may not be optimal for the new database,
+it will continue to work correctly.])
+
+m4_p([dnl
+Dumping and reloading Btree databases that use user-defined prefix or
+comparison functions will result in new databases that use the default
+prefix and comparison functions. In this case, it is quite likely that
+applications will be unable to retrieve records, and it is possible that
+the load process itself will fail.])
+
+m4_p([dnl
+The only available workaround for either Hash or Btree databases is to
+modify the sources for the m4_ref(db_load) utility to load the database
+using the correct hash, prefix, and comparison functions.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/env/create.cs b/db/docs_src/ref/env/create.cs
new file mode 100644
index 000000000..1d873a4ec
--- /dev/null
+++ b/db/docs_src/ref/env/create.cs
@@ -0,0 +1,66 @@
+m4_ignore([dnl
+#include <sys/types.h>
+
+#include <stddef.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <db.h>
+
+DB_ENV *db_setup(char *, char *, FILE *, char *);
+
+int
+main()
+{
+ DB_ENV *dbenv;
+
+ system("rm -rf /tmp/__dbenv__; mkdir -p /tmp/__dbenv__/test");
+ dbenv = db_setup("/tmp/__dbenv__", "test", stderr, "test_app");
+ system("rm -rf /tmp/__dbenv__");
+ return (0);
+}])
+m4_indent([dnl
+DB_ENV *
+db_setup(home, data_dir, errfp, progname)
+ char *home, *data_dir, *progname;
+ FILE *errfp;
+{
+ DB_ENV *dbenv;
+ int ret;
+m4_blank
+ /*
+ * Create an environment and initialize it for additional error
+ * reporting.
+ */
+ if ((ret = db_env_create(&dbenv, 0)) != 0) {
+ fprintf(errfp, "%s: %s\n", progname, db_strerror(ret));
+ return (NULL);
+ }
+ dbenv-__GT__set_errfile(dbenv, errfp);
+ dbenv-__GT__set_errpfx(dbenv, progname);
+m4_blank
+ /*
+ * Specify the shared memory buffer pool cachesize: 5MB.
+ * Databases are in a subdirectory of the environment home.
+ */
+ if ((ret = dbenv-__GT__set_cachesize(dbenv, 0, 5 * 1024 * 1024, 0)) != 0) {
+ dbenv-__GT__err(dbenv, ret, "set_cachesize");
+ goto err;
+ }
+ if ((ret = dbenv-__GT__set_data_dir(dbenv, data_dir)) != 0) {
+ dbenv-__GT__err(dbenv, ret, "set_data_dir: %s", data_dir);
+ goto err;
+ }
+m4_blank
+ /* Open the environment with full transactional support. */
+ if ((ret = dbenv-__GT__open(dbenv, home, DB_CREATE |
+ DB_INIT_LOG | DB_INIT_LOCK | DB_INIT_MPOOL | DB_INIT_TXN, 0)) != 0) {
+ dbenv-__GT__err(dbenv, ret, "environment open: %s", home);
+ goto err;
+ }
+m4_blank
+ return (dbenv);
+m4_blank
+err: (void)dbenv-__GT__close(dbenv, 0);
+ return (NULL);
+}])
diff --git a/db/docs_src/ref/env/create.so b/db/docs_src/ref/env/create.so
new file mode 100644
index 000000000..11e3c7d4b
--- /dev/null
+++ b/db/docs_src/ref/env/create.so
@@ -0,0 +1,95 @@
+m4_comment([$Id: create.so,v 10.30 2005/09/23 16:22:42 bostic Exp $])
+
+m4_ref_title(Environment,
+ Creating a database environment,
+ database @environment, env/intro, env/open)
+
+m4_p([dnl
+The m4_db environment is created and described by the m4_ref(dbenv_create)
+and m4_ref(dbenv_open) interfaces. In situations where customization is
+desired, such as storing log files on a separate disk drive or selection
+of a particular cache size, applications must describe the customization
+by either creating an environment configuration file in the environment
+home directory or by arguments passed to other m4_ref(DbEnv) handle methods.])
+
+m4_p([dnl
+Once an environment has been created, database files specified using
+relative pathnames will be named relative to the home directory. Using
+pathnames relative to the home directory allows the entire environment
+to be easily moved, simplifying restoration and recovery of a database
+in a different directory or on a different system.])
+
+m4_p([dnl
+Applications first obtain an environment handle using the
+m4_refT(dbenv_create), then call the m4_refT(dbenv_open) which creates
+or joins the database environment. There are a number of options you
+can set to customize m4_ref(dbenv_open) for your environment. These
+options fall into four broad categories:])
+
+m4_tagbegin
+
+m4_tag([Subsystem Initialization:], [dnl
+These flags indicate which m4_db subsystems will be initialized for the
+environment, and what operations will happen automatically when
+databases are accessed within the environment. The flags include
+m4_ref(DB_INIT_CDB), m4_ref(DB_INIT_LOCK), m4_ref(DB_INIT_LOG),
+m4_ref(DB_INIT_MPOOL), and m4_ref(DB_INIT_TXN). The m4_ref(DB_INIT_CDB)
+flag does initialization for m4_cam applications. (See
+m4_link(M4RELDIR/ref/cam/intro, Building m4_cam applications) for more
+information.) The rest of the flags initialize a single subsystem; that
+is, when m4_ref(DB_INIT_LOCK) is specified, applications reading and
+writing databases opened in this environment will be using locking to
+ensure that they do not overwrite each other's changes.])
+
+m4_tag([Recovery options:], [dnl
+These flags, which include m4_ref(DB_RECOVER) and
+m4_ref(DB_RECOVER_FATAL), indicate what recovery is to be performed on
+the environment before it is opened for normal use.])
+
+m4_tag([Naming options:], [dnl
+These flags, which include m4_ref(DB_USE_ENVIRON) and
+m4_ref(DB_USE_ENVIRON_ROOT), modify how file naming happens in the
+environment.])
+
+m4_tag([Miscellaneous:], [dnl
+Finally, there are a number of miscellaneous flags, for example,
+m4_ref(DB_CREATE) which causes underlying files to be created as
+necessary. See the m4_ref(dbenv_open) manual pages for further
+information.])
+
+m4_tagend
+
+m4_p([dnl
+Most applications either specify only the m4_ref(DB_INIT_MPOOL) flag or
+they specify all four subsystem initialization flags
+(m4_ref(DB_INIT_MPOOL), m4_ref(DB_INIT_LOCK), m4_ref(DB_INIT_LOG), and
+m4_ref(DB_INIT_TXN)). The former configuration is for applications that
+simply want to use the basic Access Method interfaces with a shared
+underlying buffer pool, but don't care about recoverability after
+application or system failure. The latter is for applications that need
+recoverability. There are situations in which other combinations of
+the initialization flags make sense, but they are rare.])
+
+m4_p([dnl
+The m4_ref(DB_RECOVER) flag is specified by applications that want to
+perform any necessary database recovery when they start running. That
+is, if there was a system or application failure the last time they ran,
+they want the databases to be made consistent before they start running
+again. It is not an error to specify this flag when no recovery needs
+to be done.])
+
+m4_p([dnl
+The m4_ref(DB_RECOVER_FATAL) flag is more special-purpose. It performs
+catastrophic database recovery, and normally requires that some initial
+arrangements be made; that is, archived log files be brought back into
+the filesystem. Applications should not normally specify this flag.
+Instead, under these rare conditions, the m4_ref(db_recover) utility
+should be used.])
+
+m4_p([dnl
+The following is a simple example of a function that opens a database
+environment for a transactional program.])
+
+include(ref/env/create.cs)
+
+m4_page_footer
diff --git a/db/docs_src/ref/env/db_config.so b/db/docs_src/ref/env/db_config.so
new file mode 100644
index 000000000..bfdba2eaa
--- /dev/null
+++ b/db/docs_src/ref/env/db_config.so
@@ -0,0 +1,37 @@
+m4_comment([$Id: db_config.so,v 10.3 2004/11/18 01:57:39 bostic Exp $])
+
+define(M4PAGELOCAL, DB_CONFIG)
+
+m4_ref_title(Environment, DB_CONFIG configuration file,
+ [DB_CONFIG, database environment @configuration], env/error, env/naming)
+
+m4_p([dnl
+Almost all of the configuration information that can be specified to
+m4_ref(DbEnv) methods can also be specified using a configuration file.
+If a file named m4_ref(DB_CONFIG) exists in the database home directory,
+it will be read for lines of the format m4_bold([NAME VALUE]).])
+
+m4_p([dnl
+One or more whitespace characters are used to delimit the two parts of
+the line, and trailing whitespace characters are discarded. All empty
+lines or lines whose first character is a whitespace or hash
+(m4_bold([#])) character will be ignored. Each line must specify both
+the NAME and the VALUE of the pair. The specific NAME VALUE pairs are
+documented in the manual for the corresponding methods (for example,
+the m4_ref(dbenv_set_data_dir) documentation includes NAME VALUE pair
+information m4_db administrators can use to configure locations for
+database files).])
+
+m4_p([dnl
+The m4_ref(DB_CONFIG) configuration file is intended to allow database
+environment administrators to customize environments independent of
+applications using the environment. For example, a database
+administrator can move the database log and data files to a different
+location without application recompilation. In addition, because the
+m4_ref(DB_CONFIG) file is read when the database environment is opened,
+it can be used to overrule application configuration done before that
+time. For example a database administrator could override the
+compiled-in application cache size to a size more appropriate for a
+specific machine.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/env/encrypt.so b/db/docs_src/ref/env/encrypt.so
new file mode 100644
index 000000000..8c5b14deb
--- /dev/null
+++ b/db/docs_src/ref/env/encrypt.so
@@ -0,0 +1,97 @@
+m4_comment([$Id: encrypt.so,v 11.13 2007/03/27 14:20:56 sue Exp $])
+
+m4_ref_title(Environment, Encryption, @encryption, env/security, env/remote)
+
+m4_p([dnl
+m4_db optionally supports encryption using the Rijndael/AES (also known
+as the Advanced Encryption Standard and Federal Information Processing
+Standard (FIPS) 197) algorithm for encryption or decryption. The
+algorithm is configured to use a 128-bit key. m4_db uses a 16-byte
+initialization vector generated using the Mersenne Twister. All
+encrypted information is additionally checksummed using the SHA1 Secure
+Hash Algorithm, using a 160-bit message digest.])
+
+m4_p([dnl
+The encryption support provided with m4_db is intended to protect
+applications from an attacker obtaining physical access to the media on
+which a m4_db database is stored, or an attacker compromising a system
+on which m4_db is running but who is unable to read system or process
+memory on that system.
+m4_bold([dnl
+The encryption support provided with m4_db will not protect applications
+from attackers able to read system memory on the system where m4_db is
+running.])])
+
+m4_p([dnl
+Encryption is not the default for created databases, even in database
+environments configured for encryption. In addition to configuring for
+encryption by calling the m4_ref(dbenv_set_encrypt) or
+m4_refT(dbh_set_encrypt)s, applications must specify the
+m4_ref(DB_ENCRYPT) flag before creating the database in order for the
+database to be encrypted. Further, databases cannot be converted to an
+encrypted format after they have been created without dumping and
+re-creating them. Finally, encrypted databases cannot be read
+on systems with a different endianness than the system that created
+the encrypted database.])
+
+m4_p([dnl
+Each encrypted database environment (including all its encrypted
+databases) is encrypted using a single password and a single algorithm.
+Applications wanting to provide a finer granularity of database access
+must either use multiple database environments or implement additional
+access controls outside of m4_db.])
+
+m4_p([dnl
+The only encrypted parts of a database environment are its databases
+and its log files. Specifically, the m4_link(M4RELDIR/ref/env/region,
+[shared memory regions]) supporting the database environment are not
+encrypted. For this reason, it may be possible for an attacker to read
+some or all of an encrypted database by reading the on-disk files that
+back these shared memory regions. To prevent such attacks, applications
+may want to use in-memory filesystem support (on systems that support
+it), or the m4_ref(DB_PRIVATE) or m4_ref(DB_SYSTEM_MEM) flags to the
+m4_refT(dbenv_open), to place the shared memory regions in memory that
+is never written to a disk. As some systems page system memory to a
+backing disk, it is important to consider the specific operating system
+running on the machine as well. Finally, when backing database
+environment shared regions with the filesystem, m4_db can be configured
+to overwrite the shared regions before removing them by specifying the
+m4_ref(DB_OVERWRITE) flag. This option is only effective in the
+presence of fixed-block filesystems, journaling or logging filesystems
+will require operating system support and probably modification of the
+m4_db sources.])
+
+m4_p([dnl
+While all user data is encrypted, parts of the databases and log files
+in an encrypted environment are maintained in an unencrypted state.
+Specifically, log record headers are not encrypted, only the actual log
+records. Additionally, database internal page header fields are not
+encrypted. These page header fields includes information such as the
+page's m4_ref(DbLsn), number, and position in the database's sort
+order.])
+
+m4_p([dnl
+Log records distributed by a replication master to replicated clients are
+transmitted to the clients in unencrypted form. If encryption is
+desired in a replicated application, the use of a secure transport
+is strongly suggested.])
+
+m4_p([dnl
+We gratefully acknowledge:])
+
+m4_bulletbegin
+m4_bullet([dnl
+Vincent Rijmen, Antoon Bosselaers and Paulo Barreto for writing the
+Rijndael/AES code used in m4_db.])
+m4_bullet([dnl
+Steve Reid and James H. Brown for writing the SHA1 checksum code used
+in m4_db.])
+m4_bullet([dnl
+Makoto Matsumoto and Takuji Nishimura for writing the Mersenne Twister
+code used in m4_db.])
+m4_bullet([dnl
+Adam Stubblefield for integrating the Rijndael/AES, SHA1 checksum and
+Mersenne Twister code into m4_db.])
+m4_bulletend
+
+m4_page_footer
diff --git a/db/docs_src/ref/env/error.so b/db/docs_src/ref/env/error.so
new file mode 100644
index 000000000..6d4948a62
--- /dev/null
+++ b/db/docs_src/ref/env/error.so
@@ -0,0 +1,45 @@
+m4_comment([$Id: error.so,v 10.20 2003/10/18 19:16:00 bostic Exp $])
+
+m4_ref_title(Environment, Error support,, env/open, env/db_config)
+
+m4_p([dnl
+m4_db offers programmatic support for displaying error return values.
+The m4_ref(dbenv_strerror) function returns a pointer to the error
+message corresponding to any m4_db error return. This is similar to the
+ANSI C strerror interface, but can handle both system error returns and
+m4_db-specific return values.])
+
+m4_p([dnl
+For example:])
+
+include(ref/env/error1.cs)
+
+m4_p([dnl
+There are also two additional error methods: m4_ref(dbenv_err) and
+m4_ref(dbenv_errx). These methods work like the ANSI C printf function,
+taking a printf-style format string and argument list, and writing a
+message constructed from the format string and arguments.])
+
+m4_p([dnl
+The m4_ref(dbenv_err) function appends the standard error string to the
+constructed message; the m4_ref(dbenv_errx) function does not.])
+
+m4_p([dnl
+Error messages can be configured always to include a prefix (for
+example, the program name) using the m4_refT(dbenv_set_errpfx).])
+
+m4_p([dnl
+These functions provide simpler ways of displaying m4_db error messages:])
+
+include(ref/env/error2.cs)
+
+m4_p([dnl
+For example, if the program was called "my_app", and it tried to open
+an environment home directory in "/tmp/home" and the open call returned
+a permission error, the error messages shown would look like this:])
+
+m4_indent([dnl
+my_app: open: /tmp/home: Permission denied.
+my_app: contact your system administrator: session ID was 2])
+
+m4_page_footer
diff --git a/db/docs_src/ref/env/error1.cs b/db/docs_src/ref/env/error1.cs
new file mode 100644
index 000000000..e6b3873e9
--- /dev/null
+++ b/db/docs_src/ref/env/error1.cs
@@ -0,0 +1,19 @@
+m4_ignore([dnl
+#include <sys/types.h>
+
+#include <db.h>
+
+int
+main()
+{
+ DB_ENV *dbenv;
+])
+m4_indent([dnl
+int ret;
+if ((ret = dbenv-__GT__set_cachesize(dbenv, 0, 32 * 1024, 1)) != 0) {
+ fprintf(stderr, "set_cachesize failed: %s\n", db_strerror(ret));
+ return (1);
+}])
+m4_ignore([dnl
+return (0);
+}])
diff --git a/db/docs_src/ref/env/error2.cs b/db/docs_src/ref/env/error2.cs
new file mode 100644
index 000000000..5053e0a4b
--- /dev/null
+++ b/db/docs_src/ref/env/error2.cs
@@ -0,0 +1,27 @@
+m4_ignore([dnl
+#include <sys/types.h>
+
+#include <db.h>
+
+int
+main()
+{
+ DB_ENV *dbenv;
+ int session_id;
+ char *home, *program_name;
+])
+m4_indent([dnl
+int ret;
+dbenv-__GT__set_errpfx(dbenv, program_name);
+if ((ret = dbenv-__GT__open(dbenv, home,
+ DB_CREATE | DB_INIT_LOG | DB_INIT_TXN | DB_USE_ENVIRON, 0))
+ != 0) {
+ dbenv-__GT__err(dbenv, ret, "open: %s", home);
+ dbenv-__GT__errx(dbenv,
+ "contact your system administrator: session ID was %d",
+ session_id);
+ return (1);
+}])
+m4_ignore([dnl
+return (0);
+}])
diff --git a/db/docs_src/ref/env/faq.so b/db/docs_src/ref/env/faq.so
new file mode 100644
index 000000000..250370714
--- /dev/null
+++ b/db/docs_src/ref/env/faq.so
@@ -0,0 +1,46 @@
+m4_comment([$Id: faq.so,v 10.6 2006/05/01 15:32:01 bostic Exp $])
+
+m4_ref_title(Environment,
+ Environment FAQ, database @environment FAQ, env/remote, cam/intro)
+
+m4_nlistbegin
+
+m4_nlist([dnl
+m4_bold([I'm using multiple processes to access an m4_db database
+environment; is there any way to ensure that two processes don't run
+transactional recovery at the same time, or that all processes have
+exited the database environment so that recovery can be run?])
+
+m4_p([dnl
+See m4_link(M4RELDIR/ref/transapp/fail, Handling failure in
+Transactional Data Store applications) and
+m4_link(M4RELDIR/ref/transapp/app, Architecting Transactional Data Store
+applications) for a full discussion of this topic.])])
+
+m4_nlist([dnl
+m4_bold([How can I associate application information with a m4_ref(Db)
+or m4_ref(DbEnv) handle?])
+
+m4_p([dnl
+In the C API, the m4_ref(Db) and m4_ref(DbEnv) structures each contain
+an "app_private" field intended to be used to reference
+application-specific information. See the m4_ref(dbh_create) and
+m4_ref(dbenv_create) documentation for more information.])
+
+m4_p([dnl
+In the C++ or Java APIs, the easiest way to associate
+application-specific data with a handle is to subclass the m4_refcxx(Db)
+or m4_refcxx(DbEnv), for example subclassing m4_refcxx(Db) to get MyDb.
+Objects of type MyDb will still have the m4_db API methods available on
+them, and you can put any extra data or methods you want into the MyDb
+class. If you are using "callback" APIs that take m4_refcxx(Db) or
+m4_refcxx(DbEnv) arguments (for example, m4_refcxx(dbh_set_bt_compare))
+these will always be called with the m4_refcxx(Db) or m4_refcxx(DbEnv)
+objects you create. So if you always use MyDb objects, you will be able
+to take the first argument to the callback function and cast it to a
+MyDb (in C++, cast it to (MyDb*)). That will allow you to access your
+data members or methods.])])
+
+m4_nlistend
+
+m4_page_footer
diff --git a/db/docs_src/ref/env/intro.so b/db/docs_src/ref/env/intro.so
new file mode 100644
index 000000000..7feb8c4d8
--- /dev/null
+++ b/db/docs_src/ref/env/intro.so
@@ -0,0 +1,44 @@
+m4_comment([$Id: intro.so,v 10.32 2003/04/15 16:48:42 bostic Exp $])
+
+m4_ref_title(Environment, Database environment introduction,
+ introduction to database @environments, arch/utilities, env/create)
+
+m4_p([dnl
+A m4_db environment is an encapsulation of one or more databases, log
+files and region files. Region files are the shared memory areas that
+contain information about the database environment such as memory pool
+cache pages. Only databases are byte-order independent and only
+database files can be moved between machines of different byte orders.
+Log files can be moved between machines of the same byte order. Region
+files are usually unique to a specific machine and potentially to a
+specific operating system release.])
+
+m4_p([dnl
+The simplest way to administer a m4_db application environment is to
+create a single m4_bold(home) directory that stores the files for the
+applications that will share the environment. The environment home
+directory must be created before any m4_db applications are run. m4_db
+itself never creates the environment home directory. The environment can
+then be identified by the name of that directory.])
+
+m4_p([dnl
+An environment may be shared by any number of processes, as well as by
+any number of threads within those processes. It is possible for an
+environment to include resources from other directories on the system,
+and applications often choose to distribute resources to other
+directories or disks for performance or other reasons. However, by
+default, the databases, shared regions (the locking, logging, memory
+pool, and transaction shared memory areas) and log files will be stored
+in a single directory hierarchy.])
+
+m4_p([dnl
+It is important to realize that all applications sharing a database
+environment implicitly trust each other. They have access to each
+other's data as it resides in the shared regions, and they will share
+resources such as buffer space and locks. At the same time, any
+applications using the same databases m4_bold(must) share an environment
+if consistency is to be maintained between them.])
+
+include(env/m4.methods)
+
+m4_page_footer
diff --git a/db/docs_src/ref/env/naming.so b/db/docs_src/ref/env/naming.so
new file mode 100644
index 000000000..3d99d4c97
--- /dev/null
+++ b/db/docs_src/ref/env/naming.so
@@ -0,0 +1,159 @@
+m4_comment([$Id: naming.so,v 10.50 2004/08/13 03:39:00 bostic Exp $])
+
+define(M4PAGELOCAL, [DB_HOME, db_home])
+
+m4_ref_title(Environment, File naming, file @naming, env/db_config, env/region)
+
+m4_p([dnl
+One of the most important tasks of the database environment is to
+structure file naming within m4_db. Cooperating applications (or
+multiple invocations of the same application) must agree on the location
+of the database environment, log files and other files used by the m4_db
+subsystems, and, of course, the database files. Although it is possible
+to specify full pathnames to all m4_db methods, this is cumbersome and
+requires applications be recompiled when database files are moved.])
+
+m4_p([dnl
+Applications are normally expected to specify a single directory home
+for the database environment. This can be done easily in the call to
+m4_ref(dbenv_open) by specifying a value for the m4_arg(db_home)
+argument. There are more complex configurations in which it may be
+desirable to override m4_arg(db_home) or provide supplementary path
+information.])
+
+m4_section([Specifying file naming to m4_db])
+m4_p([dnl
+The following list describes the possible ways in which file naming
+information may be specified to the m4_db library. The specific
+circumstances and order in which these ways are applied are described
+in a subsequent paragraph.])
+
+m4_tagbegin
+
+m4_tag(m4_idef(db_home), [dnl
+If the m4_arg(db_home) argument to m4_ref(dbenv_open) is non-NULL,
+its value may be used as the database home, and files named relative to
+its path.])
+
+m4_tag(m4_idef(DB_HOME), [dnl
+If the DB_HOME environment variable is set when m4_ref(dbenv_open) is
+called, its value may be used as the database home, and files named
+relative to its path.
+m4_p([dnl
+The DB_HOME environment variable is intended to permit users and system
+administrators to override application and installation defaults. For
+example::])
+
+m4_indent([env DB_HOME=/database/my_home application])
+
+m4_p([dnl
+Application writers are encouraged to support the m4_option(h) option
+found in the supporting m4_db utilities to let users specify a database
+home.])])
+
+m4_tag([m4_ref(DbEnv) methods], [dnl
+There are three m4_ref(DbEnv) methods that affect file naming. The
+m4_refT(dbenv_set_data_dir) specifies a directory to search for database
+files. The m4_refT(dbenv_set_lg_dir) specifies a directory in which to
+create logging files. The m4_refT(dbenv_set_tmp_dir) specifies a
+directory in which to create backing temporary files. These methods
+are intended to permit applications to customize a file location for a
+database. For example, an application writer can place data files and
+log files in different directories or instantiate a new log directory
+each time the application runs.])
+
+m4_tag(m4_ref(DB_CONFIG), [dnl
+The same information specified to the m4_ref(DbEnv) methods may also be
+specified using the m4_ref(DB_CONFIG) configuration file.])
+
+m4_tagend
+
+m4_section([Filename resolution in m4_db])
+
+m4_p([dnl
+The following list describes the specific circumstances and order in
+which the different ways of specifying file naming information are
+applied. m4_db filename processing proceeds sequentially through the
+following steps:])
+
+m4_tagbegin
+m4_tag([absolute pathnames], [dnl
+If the filename specified to a m4_db function is an m4_italic(absolute
+pathname), that filename is used without modification by m4_db.
+m4_p([dnl
+On UNIX systems, an absolute pathname is defined as any pathname that
+begins with a leading slash (m4_bold(/)).])
+m4_p([dnl
+On Windows systems, an absolute pathname is any pathname that begins with
+a leading slash or leading backslash (m4_bold(m4_backslash([]))); or any
+pathname beginning with a single alphabetic character, a colon and a
+leading slash or backslash (for example, m4_path(C:/tmp)).])])
+
+m4_tag([m4_ref(DbEnv) methods, DB_CONFIG], [dnl
+If a relevant configuration string (for example, set_data_dir), is
+specified either by calling a m4_ref(DbEnv) method or as a line in the
+DB_CONFIG configuration file, the value is prepended to the filename.
+If the resulting filename is an absolute pathname, the filename is used
+without further modification by m4_db.])
+
+m4_tag(db_home, [dnl
+If the application specified a non-NULL m4_arg(db_home) argument to
+m4_ref(dbenv_open), its value is prepended to the filename. If the
+resulting filename is an absolute pathname, the filename is used without
+further modification by m4_db.])
+
+m4_tag(DB_HOME, [dnl
+If the m4_arg(db_home) argument is NULL, the DB_HOME environment
+variable was set, and the application has set the appropriate
+m4_ref(DB_USE_ENVIRON) or m4_ref(DB_USE_ENVIRON_ROOT) flags, its value
+is prepended to the filename. If the resulting filename is an absolute
+pathname, the filename is used without further modification by m4_db.])
+
+m4_tag(default, [dnl
+Finally, all filenames are interpreted relative to the current working
+directory of the process.])
+
+m4_tagend
+
+m4_p([dnl
+The common model for a m4_db environment is one in which only the DB_HOME
+environment variable, or the m4_arg(db_home) argument is specified. In
+this case, all data filenames are relative to that directory, and all
+files created by the m4_db subsystems will be created in that directory.])
+
+m4_p([dnl
+The more complex model for a transaction environment might be one in
+which a database home is specified, using either the DB_HOME environment
+variable or the m4_arg(db_home) argument to m4_ref(dbenv_open); and then
+the data directory and logging directory are set to the relative
+pathnames of directories underneath the environment home.])
+
+m4_section(Examples)
+
+m4_p([dnl
+Store all files in the directory m4_path(/a/database):])
+
+include(ref/env/naming1.cs)
+
+m4_p([dnl
+Create temporary backing files in m4_path(/b/temporary), and all other files
+in m4_path(/a/database):])
+
+include(ref/env/naming2.cs)
+
+m4_p([dnl
+Store data files in m4_path(/a/database/datadir), log files in
+m4_path(/a/database/logdir), and all other files in the directory
+m4_path(/a/database):])
+
+include(ref/env/naming3.cs)
+
+m4_p([dnl
+Store data files in m4_path(/a/database/data1) and m4_path(/b/data2), and
+all other files in the directory m4_path(/a/database). Any data files
+that are created will be created in m4_path(/b/data2), because it is
+the first data file directory specified:])
+
+include(ref/env/naming4.cs)
+
+m4_page_footer
diff --git a/db/docs_src/ref/env/naming1.cs b/db/docs_src/ref/env/naming1.cs
new file mode 100644
index 000000000..67a380471
--- /dev/null
+++ b/db/docs_src/ref/env/naming1.cs
@@ -0,0 +1,17 @@
+m4_ignore([dnl
+#include <sys/types.h>
+
+#include <db.h>
+
+int
+main()
+{
+ DB_ENV *dbenv;
+ u_int32_t flags;
+ int mode;
+])
+m4_indent([dnl
+dbenv-__GT__open(dbenv, "/a/database", flags, mode);])
+m4_ignore([dnl
+ return (0);
+}])
diff --git a/db/docs_src/ref/env/naming2.cs b/db/docs_src/ref/env/naming2.cs
new file mode 100644
index 000000000..ddbf6a6ee
--- /dev/null
+++ b/db/docs_src/ref/env/naming2.cs
@@ -0,0 +1,18 @@
+m4_ignore([dnl
+#include <sys/types.h>
+
+#include <db.h>
+
+int
+main()
+{
+ DB_ENV *dbenv;
+ u_int32_t flags;
+ int mode;
+])
+m4_indent([dnl
+dbenv-__GT__set_tmp_dir(dbenv, "/b/temporary");
+dbenv-__GT__open(dbenv, "/a/database", flags, mode);])
+m4_ignore([dnl
+ return (0);
+}])
diff --git a/db/docs_src/ref/env/naming3.cs b/db/docs_src/ref/env/naming3.cs
new file mode 100644
index 000000000..687fd2bbf
--- /dev/null
+++ b/db/docs_src/ref/env/naming3.cs
@@ -0,0 +1,19 @@
+m4_ignore([dnl
+#include <sys/types.h>
+
+#include <db.h>
+
+int
+main()
+{
+ DB_ENV *dbenv;
+ u_int32_t flags;
+ int mode;
+])
+m4_indent([dnl
+dbenv-__GT__set_lg_dir(dbenv, "logdir");
+dbenv-__GT__set_data_dir(dbenv, "datadir");
+dbenv-__GT__open(dbenv, "/a/database", flags, mode);])
+m4_ignore([dnl
+ return (0);
+}])
diff --git a/db/docs_src/ref/env/naming4.cs b/db/docs_src/ref/env/naming4.cs
new file mode 100644
index 000000000..3867835ad
--- /dev/null
+++ b/db/docs_src/ref/env/naming4.cs
@@ -0,0 +1,19 @@
+m4_ignore([dnl
+#include <sys/types.h>
+
+#include <db.h>
+
+int
+main()
+{
+ DB_ENV *dbenv;
+ u_int32_t flags;
+ int mode;
+])
+m4_indent([dnl
+dbenv-__GT__set_data_dir(dbenv, "/b/data2");
+dbenv-__GT__set_data_dir(dbenv, "data1");
+dbenv-__GT__open(dbenv, "/a/database", flags, mode);])
+m4_ignore([dnl
+ return (0);
+}])
diff --git a/db/docs_src/ref/env/open.cs b/db/docs_src/ref/env/open.cs
new file mode 100644
index 000000000..6e3fca5b7
--- /dev/null
+++ b/db/docs_src/ref/env/open.cs
@@ -0,0 +1,82 @@
+m4_ignore([dnl
+#include <sys/types.h>
+
+#include <stddef.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <db.h>
+
+#define DATABASE1 "foo"
+#define DATABASE2 "bar"
+
+int db_setup(char *, char *, FILE *, char *);
+
+int
+main()
+{
+ return (db_setup("/tmp/__dbenv__", "test", stderr, "test_app"));
+}
+int
+db_setup(home, data_dir, errfp, progname)
+ char *home, *data_dir, *progname;
+ FILE *errfp;
+{])
+m4_indent([dnl
+ DB_ENV *dbenv;
+ DB *dbp1, *dbp2;
+ int ret;
+m4_blank
+ dbenv = NULL;
+ dbp1 = dbp2 = NULL;
+m4_blank
+ /*
+ * Create an environment and initialize it for additional error
+ * reporting.
+ */
+ if ((ret = db_env_create(&dbenv, 0)) != 0) {
+ fprintf(errfp, "%s: %s\n", progname, db_strerror(ret));
+ return (ret);
+ }
+m4_blank
+ dbenv-__GT__set_errfile(dbenv, errfp);
+ dbenv-__GT__set_errpfx(dbenv, progname);
+m4_blank
+ /* Open an environment with just a memory pool. */
+ if ((ret =
+ dbenv-__GT__open(dbenv, home, DB_CREATE | DB_INIT_MPOOL, 0)) != 0) {
+ dbenv-__GT__err(dbenv, ret, "environment open: %s", home);
+ goto err;
+ }
+m4_blank
+ /* Open database #1. */
+ if ((ret = db_create(&dbp1, dbenv, 0)) != 0) {
+ dbenv-__GT__err(dbenv, ret, "database create");
+ goto err;
+ }
+ if ((ret = dbp1-__GT__open(dbp1,
+ NULL, DATABASE1, NULL, DB_BTREE, DB_CREATE, 0664)) != 0) {
+ dbenv-__GT__err(dbenv, ret, "DB-__GT__open: %s", DATABASE1);
+ goto err;
+ }
+m4_blank
+ /* Open database #2. */
+ if ((ret = db_create(&dbp2, dbenv, 0)) != 0) {
+ dbenv-__GT__err(dbenv, ret, "database create");
+ goto err;
+ }
+ if ((ret = dbp2-__GT__open(dbp2,
+ NULL, DATABASE2, NULL, DB_HASH, DB_CREATE, 0664)) != 0) {
+ dbenv-__GT__err(dbenv, ret, "DB-__GT__open: %s", DATABASE2);
+ goto err;
+ }
+m4_blank
+ return (0);
+m4_blank
+err: if (dbp2 != NULL)
+ (void)dbp2-__GT__close(dbp2, 0);
+ if (dbp1 != NULL)
+ (void)dbp2-__GT__close(dbp1, 0);
+ (void)dbenv-__GT__close(dbenv, 0);
+ return (1);
+}])
diff --git a/db/docs_src/ref/env/open.so b/db/docs_src/ref/env/open.so
new file mode 100644
index 000000000..a9b119f34
--- /dev/null
+++ b/db/docs_src/ref/env/open.so
@@ -0,0 +1,25 @@
+m4_comment([$Id: open.so,v 10.19 2003/10/18 19:16:01 bostic Exp $])
+
+m4_ref_title(Environment,
+ Opening databases within the environment,, env/create, env/error)
+
+m4_p([dnl
+Once the environment has been created, database handles may be created
+and then opened within the environment. This is done by calling the
+m4_ref(dbh_create) function and specifying the appropriate environment
+as an argument.])
+
+m4_p([dnl
+File naming, database operations, and error handling will all be done as
+specified for the environment. For example, if the m4_ref(DB_INIT_LOCK)
+or m4_ref(DB_INIT_CDB) flags were specified when the environment was
+created or joined, database operations will automatically perform all
+necessary locking operations for the application.])
+
+m4_p([dnl
+The following is a simple example of opening two databases within a
+database environment:])
+
+include(ref/env/open.cs)
+
+m4_page_footer
diff --git a/db/docs_src/ref/env/region.so b/db/docs_src/ref/env/region.so
new file mode 100644
index 000000000..997997363
--- /dev/null
+++ b/db/docs_src/ref/env/region.so
@@ -0,0 +1,83 @@
+m4_comment([$Id: region.so,v 10.33 2005/06/11 12:32:49 bostic Exp $])
+
+m4_ref_title(Environment, Shared memory regions,, env/naming, env/security)
+
+m4_p([dnl
+Each of the m4_db subsystems within an environment is described by one
+or more regions, or chunks of memory. The regions contain all of the
+per-process and per-thread shared information (including mutexes), that
+comprise a m4_db environment. These regions are created in one of three
+types of memory, depending on the flags specified to the
+m4_refT(dbenv_open):])
+
+m4_nlistbegin
+m4_nlist([dnl
+If the m4_ref(DB_PRIVATE) flag is specified to the m4_refT(dbenv_open),
+regions are created in per-process heap memory; that is, memory returned
+by m4_manref(malloc, 3).
+m4_p([dnl
+This flag should not be specified if more than a single process is
+accessing the environment because it is likely to cause database
+corruption and unpredictable behavior. For example, if both a server
+application and m4_db utilities (for example, m4_ref(db_archive),
+m4_ref(db_checkpoint) or m4_ref(db_stat)) are expected to access the
+environment, the m4_ref(DB_PRIVATE) flag should not be specified.])])
+
+m4_nlist([dnl
+If the m4_ref(DB_SYSTEM_MEM) flag is specified to m4_ref(dbenv_open),
+shared regions are created in system memory rather than files. This is
+an alternative mechanism for sharing the m4_db environment among
+multiple processes and multiple threads within processes.])
+
+m4_p([dnl
+The system memory used by m4_db is potentially useful past the lifetime
+of any particular process. Therefore, additional cleanup may be
+necessary after an application fails because there may be no way for
+m4_db to ensure that system resources backing the shared memory regions
+are returned to the system.])
+
+m4_p([dnl
+The system memory that is used is architecture-dependent. For example,
+on systems supporting X/Open-style shared memory interfaces, such as
+UNIX systems, the m4_manref(shmget, 2) and related System V IPC
+interfaces are used. Additionally, VxWorks systems use system memory.
+In these cases, an initial segment ID must be specified by the
+application to ensure that applications do not overwrite each other's
+database environments, so that the number of segments created does not
+grow without bounds. See the m4_refT(dbenv_set_shm_key) for more
+information.])
+
+m4_p([dnl
+On Windows platforms, the use of the m4_ref(DB_SYSTEM_MEM) flag is
+problematic because the operating system uses reference counting to
+clean up shared objects in the paging file automatically. In addition,
+the default access permissions for shared objects are different from
+files, which may cause problems when an environment is accessed by
+multiple processes running as different users. See
+m4_link(M4RELDIR/ref/build_win/notes, [Windows Notes]) for more
+information.])
+
+m4_nlist([dnl
+If no memory-related flags are specified to m4_ref(dbenv_open), memory
+backed by the filesystem is used to store the regions. On UNIX systems,
+the m4_db library will use the POSIX mmap interface. If mmap is not available,
+the UNIX shmget interfaces may be used instead, if they are available.])
+
+m4_nlistend
+
+m4_idefz(__db.001)
+m4_p([dnl
+Any files created in the filesystem to back the regions are created in
+the environment home directory specified to the m4_ref(dbenv_open) call.
+These files are named [__db.###] (for example, __db.001, __db.002 and
+so on). When region files are backed by the filesystem, one file per
+region is created. When region files are backed by system memory, a
+single file will still be created because there must be a well-known
+name in the filesystem so that multiple processes can locate the system
+shared memory that is being used by the environment.])
+
+m4_p([dnl
+Statistics about the shared memory regions in the environment can be
+displayed using the m4_option(e) option to the m4_ref(db_stat) utility.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/env/remote.so b/db/docs_src/ref/env/remote.so
new file mode 100644
index 000000000..6488bf137
--- /dev/null
+++ b/db/docs_src/ref/env/remote.so
@@ -0,0 +1,61 @@
+m4_comment([$Id: remote.so,v 11.12 2005/06/24 05:04:09 mjc Exp $])
+
+m4_ref_title(Environment,
+ Remote filesystems,
+ [remote @filesystems, NFS problems], env/encrypt, env/faq)
+
+m4_p([dnl
+When m4_db database environment shared memory regions are backed by the
+filesystem, it is a common application error to create database
+environments backed by remote filesystems such as the Network File
+System (NFS), Windows network shares (SMB/CIFS) or the Andrew File
+System (AFS). Remote filesystems rarely support mapping files into
+process memory, and even more rarely support correct semantics for
+mutexes if the mapping succeeds. For this reason, we recommend database
+environment directories be created in a local filesystem.])
+
+m4_p([dnl
+For remote filesystems that do allow remote files to be mapped into
+process memory, database environment directories accessed via remote
+filesystems cannot be used simultaneously from multiple clients (that
+is, from multiple computers). No commercial remote filesystem of which
+we're aware supports coherent, distributed shared memory for
+remote-mounted files. As a result, different machines will see
+different versions of these shared region files, and the behavior is
+undefined.])
+
+m4_p([dnl
+Databases, log files, and temporary files may be placed on remote
+filesystems, as long as the remote filesystem fully supports standard
+POSIX filesystem semantics (although the application may incur a
+performance penalty for doing so). Further, read-only databases on
+remote filesystems can be accessed from multiple systems simultaneously.
+However, it is difficult (or impossible) for modifiable databases on
+remote filesystems to be accessed from multiple systems simultaneously.
+The reason is the m4_db library caches modified database pages, and when
+those modified pages are written to the backing file is not entirely
+under application control. If two systems were to write database pages
+to the remote filesystem at the same time, database corruption could
+result. If a system were to write a database page back to the remote
+filesystem at the same time as another system read a page, a core dump
+in the reader could result.])
+
+m4_tagbegin
+
+m4_tag([FreeBSD note:], [dnl
+Some historic FreeBSD releases will return ENOLCK from fsync and close
+calls on NFS-mounted filesystems, even though the call has succeeded.
+To support m4_db on these releases, the m4_db code should be modified
+to ignore ENOLCK errors, or no m4_db files should be placed on
+NFS-mounted filesystems on these systems. Note that current FreeBSD
+releases do not suffer from this problem.])
+
+m4_tag([Linux note:], [dnl
+Some historic Linux releases do not support complete semantics for the
+POSIX fsync call on NFS-mounted filesystems. No m4_db files should be
+placed on NFS-mounted filesystems on these systems. Note that current
+Linux releases do not suffer from this problem.])
+
+m4_tagend
+
+m4_page_footer
diff --git a/db/docs_src/ref/env/security.so b/db/docs_src/ref/env/security.so
new file mode 100644
index 000000000..1b96bdbb1
--- /dev/null
+++ b/db/docs_src/ref/env/security.so
@@ -0,0 +1,50 @@
+m4_comment([$Id: security.so,v 10.17 2002/02/04 17:52:38 bostic Exp $])
+
+m4_ref_title(Environment, Security, @security, env/region, env/encrypt)
+
+m4_p([dnl
+The following are security issues that should be considered when writing
+m4_db applications:])
+
+m4_tagbegin
+
+m4_tag(Database environment permissions, [dnl
+The directory used as the m4_db database environment should have its
+permissions set to ensure that files in the environment are not accessible
+to users without appropriate permissions. Applications that add to the
+user's permissions (for example, UNIX setuid or setgid applications),
+must be carefully checked to not permit illegal use of those permissions
+such as general file access in the environment directory.])
+
+m4_tag(Environment variables, [dnl
+Setting the m4_ref(DB_USE_ENVIRON) and m4_ref(DB_USE_ENVIRON_ROOT) flags
+and allowing the use of environment variables during file naming can be
+dangerous. Setting those flags in m4_db applications with additional
+permissions (for example, UNIX setuid or setgid applications) could
+potentially allow users to read and write databases to which they would
+not normally have access.])
+
+m4_tag(File permissions, [dnl
+By default, m4_db always creates files readable and writable by the owner
+and the group (that is, S_IRUSR, S_IWUSR, S_IRGRP and S_IWGRP; or octal mode
+0660 on historic UNIX systems). The group ownership of created files is
+based on the system and directory defaults, and is not further specified
+by m4_db.])
+
+m4_tag(Temporary backing files, [dnl
+If an unnamed database is created and the cache is too small to hold
+the database in memory, m4_db will create a temporary physical file to
+enable it to page the database to disk as needed. In this case,
+environment variables such as m4_bold(TMPDIR) may be used to specify
+the location of that temporary file. Although temporary backing files
+are created readable and writable by the owner only (S_IRUSR and
+S_IWUSR, or octal mode 0600 on historic UNIX systems), some filesystems
+may not sufficiently protect temporary files created in random
+directories from improper access. To be absolutely safe, applications
+storing sensitive data in unnamed databases should use the
+m4_ref(dbenv_set_tmp_dir) method to specify a temporary directory with
+known permissions.])
+
+m4_tagend
+
+m4_page_footer
diff --git a/db/docs_src/ref/ext/mod.so b/db/docs_src/ref/ext/mod.so
new file mode 100644
index 000000000..58288211d
--- /dev/null
+++ b/db/docs_src/ref/ext/mod.so
@@ -0,0 +1,100 @@
+m4_comment([$Id: mod.so,v 10.6 2007/07/07 14:45:24 bostic Exp $])
+
+m4_ref_title(m4_db Extensions,
+ Using m4_db with Apache, [Apache, mod], tcl/faq, ext/perl)
+
+m4_p([dnl
+A mod_db4 Apache module is included in the m4_db distribution, providing
+a safe framework for running m4_db applications in an Apache 1.3
+environment. Apache natively provides no interface for communication
+between threads or processes, so the mod_db4 module exists to provide
+this communication.])
+
+m4_p([dnl
+In general, it is dangerous to run m4_db in a multiprocess system
+without some facility to coordinate database recovery between processes
+sharing the database environment after application or system failure.
+Failure to run recovery after failure can include process hangs and an
+inability to access the database environment. The mod_db4 Apache module
+oversees the proper management of m4_db database environment resources.
+Developers building applications using m4_db as the storage manager
+within an Apache module should employ this technique for proper resource
+management.])
+
+m4_p([dnl
+Specifically, mod_db4 provides the following facilities:])
+
+m4_nlistbegin
+m4_nlist([dnl
+New constructors for m4_ref(DbEnv) and m4_ref(Db) handles, which install
+replacement open/close methods.])
+m4_nlist([dnl
+Transparent caching of open m4_ref(DbEnv) and m4_ref(Db) handles.])
+m4_nlist([dnl
+Reference counting on all structures, allowing the module to detect the
+initial opening of any managed database and automatically perform recovery.])
+m4_nlist([dnl
+Automatic detection of unexpected failures (segfaults, or a module
+actually calling exit() and avoiding shut down phases), and automatic
+termination of all child processes with open database resources to
+attempt consistency.])
+m4_nlistend
+
+m4_p([dnl
+mod_db4 is designed to be used as an alternative interface to m4_db. To
+have another Apache module (for example, mod_foo) use mod_db4, do not
+link mod_foo against the m4_db library. In your mod_foo makefile, you
+should:])
+
+m4_indent([#include "mod_db4_export.h"])
+
+m4_p([dnl
+and add your Apache include directory to your CPPFLAGS.])
+
+m4_p([dnl
+In mod_foo, to create a mod_db4 managed m4_ref(DbEnv) handle, use the
+following:])
+
+m4_indent([dnl
+int mod_db4_db_env_create(DB_ENV **dbenvp, u_int32_t flags);])
+
+m4_p([dnl
+which takes identical arguments to m4_ref(dbenv_create).])
+
+m4_p([dnl
+To create a mod_db4 managed m4_ref(Db) handle, use the following:])
+
+m4_indent([dnl
+int mod_db4_db_create(DB **dbp, DB_ENV *dbenv, u_int32_t flags);])
+
+m4_p([dnl
+which takes identical arguments to m4_ref(dbh_create).])
+
+m4_p([dnl
+Otherwise the API is completely consistent with the standard m4_db
+API.])
+
+m4_p([dnl
+The mod_db4 module requires the m4_db library be compiled with C++
+extensions and the MM library. (The MM library provides an abstraction
+layer which allows related processes to share data easily. On systems
+where shared memory or other inter-process communication mechanisms are
+not available, the MM library emulates them using temporary files. MM
+is used in several operating systems to provide shared memory pools to
+Apache modules.)])
+
+m4_p([dnl
+To build this apache module, perform the following steps:])
+
+m4_indent([dnl
+% ./configure --with-apxs=__LB__path to the apxs utility__RB__ \
+ --with-db4=__LB__[]m4_db library installation directory__RB__ \
+ --with-mm=__LB__libmm installation directory__RB__
+% make
+% make install])
+
+m4_p([dnl
+Post-installation, modules can use this extension via the functions
+documented in $APACHE_INCLUDEDIR/mod_db4_export.h.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/ext/perl.so b/db/docs_src/ref/ext/perl.so
new file mode 100644
index 000000000..eb6f9fd26
--- /dev/null
+++ b/db/docs_src/ref/ext/perl.so
@@ -0,0 +1,33 @@
+m4_comment([$Id: perl.so,v 10.29 2006/12/05 19:12:12 bostic Exp $])
+
+m4_ref_title(m4_db Extensions, Using m4_db with Perl, @Perl, ext/mod, ext/php)
+
+m4_p([dnl
+The original Perl module for m4_db was DB_File, which was written to
+interface to m4_db version 1.85. The newer Perl module for m4_db is
+BerkeleyDB, which was written to interface to version 2.0 and subsequent
+releases. Because m4_db version 2.X has a compatibility API for version
+1.85, you can (and should!) build DB_File using version 2.X of m4_db,
+although DB_File will still only support the 1.85 functionality.])
+
+m4_p([dnl
+DB_File is distributed with the standard Perl source distribution (look
+in the directory "ext/DB_File"). You can find both DB_File and BerkeleyDB
+on CPAN, the Comprehensive Perl Archive Network of mirrored FTP sites.
+The master CPAN site is
+m4_linkweb(ftp://ftp.funet.fi/, ftp://ftp.funet.fi/).])
+
+m4_p([dnl
+Versions of both BerkeleyDB and DB_File that are known to work correctly
+with each release of m4_db are included in the distributed m4_db source
+tree, in the subdirectories m4_path(perl.BerkeleyDB) and
+m4_path(perl.DB_File). Each of those directories contains a
+m4_path(README) file with instructions on installing and using those
+modules.])
+
+m4_p([dnl
+The Perl interface is not maintained by Oracle. Questions about the
+DB_File and BerkeleyDB modules are best asked on the Usenet newsgroup
+comp.lang.perl.modules.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/ext/php.so b/db/docs_src/ref/ext/php.so
new file mode 100644
index 000000000..405d860fc
--- /dev/null
+++ b/db/docs_src/ref/ext/php.so
@@ -0,0 +1,118 @@
+m4_comment([$Id: php.so,v 10.3 2004/10/18 17:08:43 bostic Exp $])
+
+m4_ref_title(m4_db Extensions,
+ Using m4_db with PHP, PHP, ext/perl, dumpload/utility)
+
+m4_p([dnl
+A PHP 4 extension for this release of m4_db is included in the
+distribution package. It can either either link directly against the
+installed m4_db library (which is necessary for running in a
+non-Apache/mod_php4 environment), or against mod_db4, which provides
+additional safety when running under Apache/mod_php4.])
+
+m4_p([dnl
+The PHP extension provides the following classes, which mirror the
+standard m4_db C++ API.])
+
+m4_indent([dnl
+class Db4Env {
+m4_indent([dnl
+function Db4Env($flags = 0) {}
+function close($flags = 0) {}
+function dbremove($txn, $filename, $database = null, $flags = 0) {}
+function dbrename($txn, $file, $database, $new_database, $flags = 0) {}
+function open($home, $flags = DB_CREATE | DB_INIT_LOCK | DB_INIT_LOG | DB_INIT_MPOOL | DB_INIT_TXN, $mode = 0666) {}
+function remove($home, $flags = 0) {}
+function set_data_dir($directory) {}
+function txn_begin($parent_txn = null, $flags = 0) {}
+function txn_checkpoint($kbytes, $minutes, $flags = 0) {}])
+}
+m4_blank
+class Db4 {
+m4_indent([dnl
+function Db4($dbenv = null) {} // create a new Db4 object using the optional DbEnv
+function open($txn = null, $file = null, $database = null, $flags = DB_CREATE, $mode = 0) {}
+function close() {}
+function del($key, $txn = null) {}
+function get($key, $txn = null, $flags = 0) {}
+function pget($key, &$pkey, $txn = null, $flags = 0) {}
+function get_type() {} // returns the stringified database type name
+function stat($txn = null, $flags = 0) {} // returns statistics as an as
+function join($cursor_list, $flags = 0) {}
+function sync() {}
+function truncate($txn = null, $flags = 0) {}
+function cursor($txn = null, flags = 0) {}])
+}
+m4_blank
+class Db4Txn {
+m4_indent([dnl
+function abort() {}
+function commit() {}
+function discard() {
+function id() {}
+function set_timeout($timeout, $flags = 0) {}])
+}
+m4_blank
+class Db4Cursor {
+m4_indent([dnl
+function close() {}
+function count() {}
+function del() {}
+function dup($flags = 0) {}
+function get($key, $flags = 0) {}
+function pget($key, &$primary_key, $flags = 0) {}
+function put($key, $data, $flags = 0) {}])
+}])
+
+m4_p([dnl
+The PHP extension attempts to be "smart" for you by:])
+
+m4_nlistbegin
+m4_nlist([dnl
+Auto-committing operations on transactional databases if no explicit
+Db4Txn object is specified.])
+m4_nlist([dnl
+Performing reference and dependency checking to insure that all
+resources are closed in the correct order.])
+m4_nlist([dnl
+Supplying default values for flags.])
+m4_nlistend
+
+m4_p([dnl
+To install this PHP module linked against the mod_db4 framework, perform
+the following steps:])
+
+m4_indent([dnl
+% phpize
+% ./configure --with-db4=__LB__[]m4_db library installation directory__RB__ \
+ --with-mod_db4=$APACHE_INCLUDEDIR
+% make
+% make install])
+
+m4_p([dnl
+Then, in your php.ini file add the following:])
+
+m4_indent([extension=db4.so])
+
+m4_p([dnl
+This extension will now only run in a SAPI linked into Apache httpd
+(mod_php4, most likely), and will take advantage of all of its
+auto-recovery and handle-caching facilities.])
+
+m4_p([dnl
+To install this php module linked against the m4_db library and not the
+mod_db4 framework, perform the following steps:])
+
+m4_indent([dnl
+% phpize
+% ./configure --with-db4=__LB__[]m4_db library installation directory__RB__
+% make
+% make install])
+
+m4_p([dnl
+Then in your php.ini file add:])
+
+m4_indent([dnl
+extension=db4.so])
+
+m4_page_footer
diff --git a/db/docs_src/ref/install/ARCHIVE/README b/db/docs_src/ref/install/ARCHIVE/README
new file mode 100644
index 000000000..5984fc8b3
--- /dev/null
+++ b/db/docs_src/ref/install/ARCHIVE/README
@@ -0,0 +1,8 @@
+Database files to use to test the magic files.
+__B == btree
+__H == hash
+ .BE == big-endian
+ .LE == little-endian
+ .185 == DB 1.85
+ .186 == DB 1.86
+ .2 == DB 2.X
diff --git a/db/docs_src/ref/install/ARCHIVE/__B.BE.185 b/db/docs_src/ref/install/ARCHIVE/__B.BE.185
new file mode 100644
index 000000000..fe11c34bd
--- /dev/null
+++ b/db/docs_src/ref/install/ARCHIVE/__B.BE.185
Binary files differ
diff --git a/db/docs_src/ref/install/ARCHIVE/__B.BE.186 b/db/docs_src/ref/install/ARCHIVE/__B.BE.186
new file mode 100644
index 000000000..ac6d352c6
--- /dev/null
+++ b/db/docs_src/ref/install/ARCHIVE/__B.BE.186
Binary files differ
diff --git a/db/docs_src/ref/install/ARCHIVE/__B.BE.2 b/db/docs_src/ref/install/ARCHIVE/__B.BE.2
new file mode 100644
index 000000000..591e6b0c7
--- /dev/null
+++ b/db/docs_src/ref/install/ARCHIVE/__B.BE.2
Binary files differ
diff --git a/db/docs_src/ref/install/ARCHIVE/__B.LE.185 b/db/docs_src/ref/install/ARCHIVE/__B.LE.185
new file mode 100644
index 000000000..f6bb5e7df
--- /dev/null
+++ b/db/docs_src/ref/install/ARCHIVE/__B.LE.185
Binary files differ
diff --git a/db/docs_src/ref/install/ARCHIVE/__B.LE.186 b/db/docs_src/ref/install/ARCHIVE/__B.LE.186
new file mode 100644
index 000000000..b46f04790
--- /dev/null
+++ b/db/docs_src/ref/install/ARCHIVE/__B.LE.186
Binary files differ
diff --git a/db/docs_src/ref/install/ARCHIVE/__B.LE.2 b/db/docs_src/ref/install/ARCHIVE/__B.LE.2
new file mode 100644
index 000000000..363884f50
--- /dev/null
+++ b/db/docs_src/ref/install/ARCHIVE/__B.LE.2
Binary files differ
diff --git a/db/docs_src/ref/install/ARCHIVE/__H.BE.185 b/db/docs_src/ref/install/ARCHIVE/__H.BE.185
new file mode 100644
index 000000000..8fe739090
--- /dev/null
+++ b/db/docs_src/ref/install/ARCHIVE/__H.BE.185
Binary files differ
diff --git a/db/docs_src/ref/install/ARCHIVE/__H.BE.186 b/db/docs_src/ref/install/ARCHIVE/__H.BE.186
new file mode 100644
index 000000000..6cce52d17
--- /dev/null
+++ b/db/docs_src/ref/install/ARCHIVE/__H.BE.186
Binary files differ
diff --git a/db/docs_src/ref/install/ARCHIVE/__H.BE.2 b/db/docs_src/ref/install/ARCHIVE/__H.BE.2
new file mode 100644
index 000000000..ea25ccea6
--- /dev/null
+++ b/db/docs_src/ref/install/ARCHIVE/__H.BE.2
Binary files differ
diff --git a/db/docs_src/ref/install/ARCHIVE/__H.LE.185 b/db/docs_src/ref/install/ARCHIVE/__H.LE.185
new file mode 100644
index 000000000..385ee98fe
--- /dev/null
+++ b/db/docs_src/ref/install/ARCHIVE/__H.LE.185
Binary files differ
diff --git a/db/docs_src/ref/install/ARCHIVE/__H.LE.186 b/db/docs_src/ref/install/ARCHIVE/__H.LE.186
new file mode 100644
index 000000000..b72e7cece
--- /dev/null
+++ b/db/docs_src/ref/install/ARCHIVE/__H.LE.186
Binary files differ
diff --git a/db/docs_src/ref/install/ARCHIVE/__H.LE.2 b/db/docs_src/ref/install/ARCHIVE/__H.LE.2
new file mode 100644
index 000000000..158832c6f
--- /dev/null
+++ b/db/docs_src/ref/install/ARCHIVE/__H.LE.2
Binary files differ
diff --git a/db/docs_src/ref/install/file.so b/db/docs_src/ref/install/file.so
new file mode 100644
index 000000000..2072ebc1d
--- /dev/null
+++ b/db/docs_src/ref/install/file.so
@@ -0,0 +1,28 @@
+m4_comment([$Id: file.so,v 10.19 2001/04/10 20:44:04 bostic Exp $])
+
+m4_ref_title(System Installation Notes,
+ File utility /etc/magic information,
+ [@/etc/magic, @file utility], dumpload/text, install/multiple)
+
+m4_p([dnl
+The m4_manref(file, 1) utility is a UNIX utility that examines and
+classifies files, based on information found in its database of file
+types, the /etc/magic file. The following information may be added
+to your system's /etc/magic file to enable m4_manref(file, 1) to
+correctly identify m4_db database files.])
+
+m4_p([dnl
+The m4_manref(file, 1) utility m4_manref(magic, 5) information for the
+standard System V UNIX implementation of the m4_manref(file, 1) utility
+is included in the m4_db distribution for both
+m4_linkweb(magic.s5.be.txt, big-endian) (for example, Sparc) and
+m4_linkweb(magic.s5.le.txt, little-endian) (for example, x86) architectures.])
+
+m4_p([dnl
+The m4_manref(file, 1) utility m4_manref(magic, 5) information for
+Release 3.X of Ian Darwin's implementation of the file utility (as
+distributed by FreeBSD and most Linux distributions) is included in the
+m4_db distribution. This m4_linkweb(magic.txt, magic.txt) information
+is correct for both big-endian and little-endian architectures.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/install/magic.s5.be.txt b/db/docs_src/ref/install/magic.s5.be.txt
new file mode 100644
index 000000000..36a905f52
--- /dev/null
+++ b/db/docs_src/ref/install/magic.s5.be.txt
@@ -0,0 +1,123 @@
+# Berkeley DB
+# $Id: magic.s5.be.txt,v 10.5 2004/12/30 17:05:05 bostic Exp $
+#
+# System V /etc/magic files: big-endian version.
+#
+# Hash 1.85/1.86 databases store metadata in network byte order.
+# Btree 1.85/1.86 databases store the metadata in host byte order.
+# Hash and Btree 2.X and later databases store the metadata in host byte order.
+
+0 long 0x00053162 Berkeley DB 1.85/1.86 (Btree,
+>4 long 0x00000002 version 2,
+>4 long 0x00000003 version 3,
+>0 long 0x00053162 native byte-order)
+
+0 long 0x62310500 Berkeley DB 1.85/1.86 (Btree,
+>4 long 0x02000000 version 2,
+>4 long 0x03000000 version 3,
+>0 long 0x62310500 little-endian)
+
+12 long 0x00053162 Berkeley DB (Btree,
+>16 long 0x00000004 version 4,
+>16 long 0x00000005 version 5,
+>16 long 0x00000006 version 6,
+>16 long 0x00000007 version 7,
+>16 long 0x00000008 version 8,
+>16 long 0x00000009 version 9,
+>12 long 0x00053162 native byte-order)
+
+12 long 0x62310500 Berkeley DB (Btree,
+>16 long 0x04000000 version 4,
+>16 long 0x05000000 version 5,
+>16 long 0x06000000 version 6,
+>16 long 0x07000000 version 7,
+>16 long 0x08000000 version 8,
+>16 long 0x09000000 version 9,
+>12 long 0x62310500 little-endian)
+
+0 long 0x00061561 Berkeley DB
+>4 long >2 1.86
+>4 long <3 1.85
+>0 long 0x00061561 (Hash,
+>4 long 2 version 2,
+>4 long 3 version 3,
+>8 long 0x000004D2 little-endian)
+>8 long 0x000010E1 native byte-order)
+
+12 long 0x00061561 Berkeley DB (Hash,
+>16 long 0x00000004 version 4,
+>16 long 0x00000005 version 5,
+>16 long 0x00000006 version 6,
+>16 long 0x00000007 version 7,
+>16 long 0x00000008 version 8,
+>16 long 0x00000009 version 9,
+>12 long 0x00061561 native byte-order)
+
+12 long 0x61150600 Berkeley DB (Hash,
+>16 long 0x04000000 version 4,
+>16 long 0x05000000 version 5,
+>16 long 0x06000000 version 6,
+>16 long 0x07000000 version 7,
+>16 long 0x08000000 version 8,
+>16 long 0x09000000 version 9,
+>12 long 0x61150600 little-endian)
+
+12 long 0x00042253 Berkeley DB (Queue,
+>16 long 0x00000001 version 1,
+>16 long 0x00000002 version 2,
+>16 long 0x00000003 version 3,
+>16 long 0x00000004 version 4,
+>16 long 0x00000005 version 5,
+>16 long 0x00000006 version 6,
+>16 long 0x00000007 version 7,
+>16 long 0x00000008 version 8,
+>16 long 0x00000009 version 9,
+>12 long 0x00042253 native byte-order)
+
+12 long 0x53220400 Berkeley DB (Queue,
+>16 long 0x01000000 version 1,
+>16 long 0x02000000 version 2,
+>16 long 0x03000000 version 3,
+>16 long 0x04000000 version 4,
+>16 long 0x05000000 version 5,
+>16 long 0x06000000 version 6,
+>16 long 0x07000000 version 7,
+>16 long 0x08000000 version 8,
+>16 long 0x09000000 version 9,
+>12 long 0x53220400 little-endian)
+
+12 long 0x00040988 Berkeley DB (Log,
+>16 long 0x00000001 version 1,
+>16 long 0x00000002 version 2,
+>16 long 0x00000003 version 3,
+>16 long 0x00000004 version 4,
+>16 long 0x00000005 version 5,
+>16 long 0x00000006 version 6,
+>16 long 0x00000007 version 7,
+>16 long 0x00000008 version 8,
+>16 long 0x00000009 version 9,
+>16 long 0x0000000a version 10,
+>16 long 0x0000000b version 11,
+>16 long 0x0000000c version 12,
+>16 long 0x0000000d version 13,
+>16 long 0x0000000e version 14,
+>16 long 0x0000000f version 15,
+>12 long 0x00040988 native byte-order)
+
+12 long 0x88090400 Berkeley DB (Log,
+>16 long 0x01000000 version 1,
+>16 long 0x02000000 version 2,
+>16 long 0x03000000 version 3,
+>16 long 0x04000000 version 4,
+>16 long 0x05000000 version 5,
+>16 long 0x06000000 version 6,
+>16 long 0x07000000 version 7,
+>16 long 0x08000000 version 8,
+>16 long 0x09000000 version 9,
+>16 long 0x0a000000 version 10,
+>16 long 0x0b000000 version 11,
+>16 long 0x0c000000 version 12,
+>16 long 0x0d000000 version 13,
+>16 long 0x0e000000 version 14,
+>16 long 0x0f000000 version 15,
+>12 long 0x88090400 little-endian)
diff --git a/db/docs_src/ref/install/magic.s5.le.txt b/db/docs_src/ref/install/magic.s5.le.txt
new file mode 100644
index 000000000..e859d979b
--- /dev/null
+++ b/db/docs_src/ref/install/magic.s5.le.txt
@@ -0,0 +1,123 @@
+# Berkeley DB
+# $Id: magic.s5.le.txt,v 10.5 2004/12/30 17:05:05 bostic Exp $
+#
+# System V /etc/magic files: little-endian version.
+#
+# Hash 1.85/1.86 databases store metadata in network byte order.
+# Btree 1.85/1.86 databases store the metadata in host byte order.
+# Hash and Btree 2.X and later databases store the metadata in host byte order.
+
+0 long 0x00053162 Berkeley DB 1.85/1.86 (Btree,
+>4 long 0x00000002 version 2,
+>4 long 0x00000003 version 3,
+>0 long 0x00053162 native byte-order)
+
+0 long 0x62310500 Berkeley DB 1.85/1.86 (Btree,
+>4 long 0x02000000 version 2,
+>4 long 0x03000000 version 3,
+>0 long 0x62310500 big-endian)
+
+12 long 0x00053162 Berkeley DB (Btree,
+>16 long 0x00000004 version 4,
+>16 long 0x00000005 version 5,
+>16 long 0x00000006 version 6,
+>16 long 0x00000007 version 7,
+>16 long 0x00000008 version 8,
+>16 long 0x00000009 version 9,
+>12 long 0x00053162 native byte-order)
+
+12 long 0x62310500 Berkeley DB (Btree,
+>16 long 0x04000000 version 4,
+>16 long 0x05000000 version 5,
+>16 long 0x06000000 version 6,
+>16 long 0x07000000 version 7,
+>16 long 0x08000000 version 8,
+>16 long 0x09000000 version 9,
+>12 long 0x62310500 big-endian)
+
+0 long 0x61150600 Berkeley DB
+>4 long >0x02000000 1.86
+>4 long <0x03000000 1.85
+>0 long 0x00061561 (Hash,
+>4 long 0x02000000 version 2,
+>4 long 0x03000000 version 3,
+>8 long 0xD2040000 native byte-order)
+>8 long 0xE1100000 big-endian)
+
+12 long 0x00061561 Berkeley DB (Hash,
+>16 long 0x00000004 version 4,
+>16 long 0x00000005 version 5,
+>16 long 0x00000006 version 6,
+>16 long 0x00000007 version 7,
+>16 long 0x00000008 version 8,
+>16 long 0x00000009 version 9,
+>12 long 0x00061561 native byte-order)
+
+12 long 0x61150600 Berkeley DB (Hash,
+>16 long 0x04000000 version 4,
+>16 long 0x05000000 version 5,
+>16 long 0x06000000 version 6,
+>16 long 0x07000000 version 7,
+>16 long 0x08000000 version 8,
+>16 long 0x09000000 version 9,
+>12 long 0x61150600 big-endian)
+
+12 long 0x00042253 Berkeley DB (Queue,
+>16 long 0x00000001 version 1,
+>16 long 0x00000002 version 2,
+>16 long 0x00000003 version 3,
+>16 long 0x00000004 version 4,
+>16 long 0x00000005 version 5,
+>16 long 0x00000006 version 6,
+>16 long 0x00000007 version 7,
+>16 long 0x00000008 version 8,
+>16 long 0x00000009 version 9,
+>12 long 0x00042253 native byte-order)
+
+12 long 0x53220400 Berkeley DB (Queue,
+>16 long 0x01000000 version 1,
+>16 long 0x02000000 version 2,
+>16 long 0x03000000 version 3,
+>16 long 0x04000000 version 4,
+>16 long 0x05000000 version 5,
+>16 long 0x06000000 version 6,
+>16 long 0x07000000 version 7,
+>16 long 0x08000000 version 8,
+>16 long 0x09000000 version 9,
+>12 long 0x53220400 big-endian)
+
+12 long 0x00040988 Berkeley DB (Log,
+>16 long 0x00000001 version 1,
+>16 long 0x00000002 version 2,
+>16 long 0x00000003 version 3,
+>16 long 0x00000004 version 4,
+>16 long 0x00000005 version 5,
+>16 long 0x00000006 version 6,
+>16 long 0x00000007 version 7,
+>16 long 0x00000008 version 8,
+>16 long 0x00000009 version 9,
+>16 long 0x0000000a version 10,
+>16 long 0x0000000b version 11,
+>16 long 0x0000000c version 12,
+>16 long 0x0000000d version 13,
+>16 long 0x0000000e version 14,
+>16 long 0x0000000f version 15,
+>12 long 0x00040988 native byte-order)
+
+12 long 0x88090400 Berkeley DB (Log,
+>16 long 0x01000000 version 1,
+>16 long 0x02000000 version 2,
+>16 long 0x03000000 version 3,
+>16 long 0x04000000 version 4,
+>16 long 0x05000000 version 5,
+>16 long 0x06000000 version 6,
+>16 long 0x07000000 version 7,
+>16 long 0x08000000 version 8,
+>16 long 0x09000000 version 9,
+>16 long 0x0a000000 version 10,
+>16 long 0x0b000000 version 11,
+>16 long 0x0c000000 version 12,
+>16 long 0x0d000000 version 13,
+>16 long 0x0e000000 version 14,
+>16 long 0x0f000000 version 15,
+>12 long 0x88090400 big-endian)
diff --git a/db/docs_src/ref/install/magic.txt b/db/docs_src/ref/install/magic.txt
new file mode 100644
index 000000000..3edc4682b
--- /dev/null
+++ b/db/docs_src/ref/install/magic.txt
@@ -0,0 +1,63 @@
+# Berkeley DB
+# $Id: magic.txt,v 10.11 2004/12/30 17:05:05 bostic Exp $
+#
+# Ian Darwin's file /etc/magic files: big/little-endian version.
+#
+# Hash 1.85/1.86 databases store metadata in network byte order.
+# Btree 1.85/1.86 databases store the metadata in host byte order.
+# Hash and Btree 2.X and later databases store the metadata in host byte order.
+
+0 long 0x00061561 Berkeley DB
+>8 belong 4321
+>>4 belong >2 1.86
+>>4 belong <3 1.85
+>>4 belong >0 (Hash, version %d, native byte-order)
+>8 belong 1234
+>>4 belong >2 1.86
+>>4 belong <3 1.85
+>>4 belong >0 (Hash, version %d, little-endian)
+
+0 belong 0x00061561 Berkeley DB
+>8 belong 4321
+>>4 belong >2 1.86
+>>4 belong <3 1.85
+>>4 belong >0 (Hash, version %d, big-endian)
+>8 belong 1234
+>>4 belong >2 1.86
+>>4 belong <3 1.85
+>>4 belong >0 (Hash, version %d, native byte-order)
+
+0 long 0x00053162 Berkeley DB 1.85/1.86
+>4 long >0 (Btree, version %d, native byte-order)
+0 belong 0x00053162 Berkeley DB 1.85/1.86
+>4 belong >0 (Btree, version %d, big-endian)
+0 lelong 0x00053162 Berkeley DB 1.85/1.86
+>4 lelong >0 (Btree, version %d, little-endian)
+
+12 long 0x00061561 Berkeley DB
+>16 long >0 (Hash, version %d, native byte-order)
+12 belong 0x00061561 Berkeley DB
+>16 belong >0 (Hash, version %d, big-endian)
+12 lelong 0x00061561 Berkeley DB
+>16 lelong >0 (Hash, version %d, little-endian)
+
+12 long 0x00053162 Berkeley DB
+>16 long >0 (Btree, version %d, native byte-order)
+12 belong 0x00053162 Berkeley DB
+>16 belong >0 (Btree, version %d, big-endian)
+12 lelong 0x00053162 Berkeley DB
+>16 lelong >0 (Btree, version %d, little-endian)
+
+12 long 0x00042253 Berkeley DB
+>16 long >0 (Queue, version %d, native byte-order)
+12 belong 0x00042253 Berkeley DB
+>16 belong >0 (Queue, version %d, big-endian)
+12 lelong 0x00042253 Berkeley DB
+>16 lelong >0 (Queue, version %d, little-endian)
+
+12 long 0x00040988 Berkeley DB
+>16 long >0 (Log, version %d, native byte-order)
+12 belong 0x00040988 Berkeley DB
+>16 belong >0 (Log, version %d, big-endian)
+12 lelong 0x00040988 Berkeley DB
+>16 lelong >0 (Log, version %d, little-endian)
diff --git a/db/docs_src/ref/install/multiple.so b/db/docs_src/ref/install/multiple.so
new file mode 100644
index 000000000..c89586757
--- /dev/null
+++ b/db/docs_src/ref/install/multiple.so
@@ -0,0 +1,51 @@
+m4_comment([$Id: multiple.so,v 10.4 2004/06/10 16:39:28 bostic Exp $])
+
+m4_ref_title(System Installation Notes,
+ Building with multiple versions of m4_db,, install/file, debug/intro)
+
+m4_p([dnl
+In some cases it may be necessary to build applications which include
+multiple versions of m4_db. Examples include applications which include
+software from other vendors, or applications running on a system where
+the system C library itself uses m4_db. In such cases, the two versions
+of m4_db may be incompatible, that is, they may have different external
+and internal interfaces, and may even have different underlying database
+formats.])
+
+m4_p([dnl
+To create a m4_db library whose symbols won't collide with other m4_db
+libraries (or other application or library modules, for that matter),
+configure m4_db using the m4_linkpage(M4RELDIR/ref/build_unix/conf,
+--with-uniquename=NAME, --with-uniquename=NAME) configuration option,
+and then build m4_db as usual. (Note that
+m4_linkpage(M4RELDIR/ref/build_unix/conf, --with-uniquename=NAME,
+--with-uniquename) only affects the m4_db C language library build;
+loading multiple versions of the C++ or Java APIs will require
+additional work.) The modified symbol names are hidden from the
+application in the m4_db header files, that is, there is no need for
+the application to be aware that it is using a special library build as
+long as it includes the appropriate m4_db header file.])
+
+m4_p([dnl
+If "NAME" is not specified when configuring with
+m4_linkpage(M4RELDIR/ref/build_unix/conf, --with-uniquename=NAME,
+--with-uniquename), a default value built from the major and minor
+numbers of the m4_db release will be used. It is rarely necessary to
+specify NAME; using the major and minor release numbers will ensure that
+only one copy of the library will be loaded into the application unless
+two distinct versions really are necessary.])
+
+m4_p([dnl
+When distributing any library software that uses m4_db, or any software
+which will be recompiled by users for their systems, we recommend two
+things: First, include the m4_db release as part of your release. This
+will insulate your software from potential m4_db API changes as well as
+simplifying your coding because you will only have to code to a single
+version of the m4_db API instead of adapting at compile time to whatever
+version of m4_db happens to be installed on the target system. Second,
+use m4_linkpage(M4RELDIR/ref/build_unix/conf, --with-uniquename=NAME,
+--with-uniquename) when configuring m4_db, because that will insure that
+you do not unexpectedly collide with other application code or a library
+already installed on the target system.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/intro/data.so b/db/docs_src/ref/intro/data.so
new file mode 100644
index 000000000..4e2a6e8a6
--- /dev/null
+++ b/db/docs_src/ref/intro/data.so
@@ -0,0 +1,48 @@
+m4_comment([$Id: data.so,v 10.2 2006/08/25 23:24:38 bostic Exp $])
+
+m4_ref_title(Introduction, An introduction to data management,,, intro/terrain)
+
+m4_p([dnl
+Cheap, powerful computing and networking have created countless new
+applications that could not have existed a decade ago. The advent of the
+World-Wide Web, and its influence in driving the Internet into homes and
+businesses, is one obvious example. Equally important, though, is the
+[shift] from large, general-purpose desktop and server computers toward
+smaller, special-purpose devices with built-in processing and
+communications services.])
+
+m4_p([dnl
+As computer hardware has spread into virtually every corner of our
+lives, of course, software has followed. Software developers today are
+building applications not just for conventional desktop and server
+environments, but also for handheld computers, home appliances,
+networking hardware, cars and trucks, factory floor automation systems,
+and more.])
+
+m4_p([dnl
+While these operating environments are diverse, the problems that
+software engineers must solve in them are often strikingly similar. Most
+systems must deal with the outside world, whether that means
+communicating with users or controlling machinery. As a result, most
+need some sort of I/O system. Even a simple, single-function system
+generally needs to handle multiple tasks, and so needs some kind of
+operating system to schedule and manage control threads. Also, many
+computer systems must store and retrieve data to track history, record
+configuration settings, or manage access.])
+
+m4_p([dnl
+Data management can be very simple. In some cases, just recording
+configuration in a flat text file is enough. More often, though,
+programs need to store and search a large amount of data, or
+structurally complex data. Database management systems are tools that
+programmers can use to do this work quickly and efficiently using
+off-the-shelf software.])
+
+m4_p([dnl
+Of course, database management systems have been around for a long time.
+Data storage is a problem dating back to the earliest days of computing.
+Software developers can choose from hundreds of good,
+commercially-available database systems. The problem is selecting the
+one that best solves the problems that their applications face.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/intro/dbis.so b/db/docs_src/ref/intro/dbis.so
new file mode 100644
index 000000000..4e16b0a41
--- /dev/null
+++ b/db/docs_src/ref/intro/dbis.so
@@ -0,0 +1,188 @@
+m4_comment([$Id: dbis.so,v 10.11 2006/09/19 16:21:42 bostic Exp $])
+
+m4_ref_title(Introduction, What is m4_db?,, intro/terrain, intro/dbisnot)
+
+m4_p([dnl
+So far, we've discussed database systems in general terms. It's time
+now to consider m4_db in particular and see how it fits into the
+framework we have introduced. The key question is, what kinds of
+applications should use m4_db?])
+
+m4_p([dnl
+m4_db is an Open Source embedded database library that provides
+scalable, high-performance, transaction-protected data management
+services to applications. m4_db provides a simple function-call API for
+data access and management.])
+
+m4_p([dnl
+By "Open Source," we mean m4_db is distributed under a license that
+conforms to the m4_linkweb(http://www.opensource.org/osd.html, [Open
+Source Definition]). This license guarantees m4_db is freely available
+for use and redistribution in other Open Source applications. Oracle
+Corporation sells commercial licenses allowing the redistribution of
+m4_db in proprietary applications. In all cases the complete source
+code for m4_db is freely available for download and use.])
+
+m4_p([dnl
+m4_db is "embedded" because it links directly into the application. It
+runs in the same address space as the application. As a result, no
+inter-process communication, either over the network or between
+processes on the same machine, is required for database operations.
+m4_db provides a simple function-call API for a number of programming
+languages, including C, C++, Java, Perl, Tcl, Python, and PHP. All
+database operations happen inside the library. Multiple processes, or
+multiple threads in a single process, can all use the database at the
+same time as each uses the m4_db library. Low-level services like
+locking, transaction logging, shared buffer management, memory
+management, and so on are all handled transparently by the library.])
+
+m4_p([dnl
+The m4_db library is extremely portable. It runs under almost all UNIX
+and Linux variants, Windows, and a number of embedded real-time
+operating systems. It runs on both 32-bit and 64-bit systems. It has
+been deployed on high-end Internet servers, desktop machines, and on
+palmtop computers, set-top boxes, in network switches, and elsewhere.
+Once m4_db is linked into the application, the end user generally does
+not know that there's a database present at all.])
+
+m4_p([dnl
+m4_db is scalable in a number of respects. The database library itself
+is quite compact (under 300 kilobytes of text space on common
+architectures), but it can manage databases up to 256 terabytes in size.
+It also supports high concurrency, with thousands of users operating on
+the same database at the same time. m4_db is small enough to run in
+tightly constrained embedded systems, but can take advantage of
+gigabytes of memory and terabytes of disk on high-end server machines.])
+
+m4_p([dnl
+m4_db generally outperforms relational and object-oriented database
+systems in embedded applications for a couple of reasons. First, because
+the library runs in the same address space, no inter-process
+communication is required for database operations. The cost of
+communicating between processes on a single machine, or among machines
+on a network, is much higher than the cost of making a function call.
+Second, because m4_db uses a simple function-call interface for all
+operations, there is no query language to parse, and no execution plan
+to produce.])
+
+m4_section([Data Access Services])
+
+m4_p([dnl
+m4_db applications can choose the storage structure that best suits the
+application. m4_db supports hash tables, Btrees, simple
+record-number-based storage, and persistent queues. Programmers can
+create tables using any of these storage structures, and can mix
+operations on different kinds of tables in a single application.])
+
+m4_p([dnl
+Hash tables are generally good for very large databases that need
+predictable search and update times for random-access records. Hash
+tables allow users to ask, "Does this key exist?" or to fetch a record
+with a known key. Hash tables do not allow users to ask for records
+with keys that are close to a known key.])
+
+m4_p([dnl
+Btrees are better for range-based searches, as when the application
+needs to find all records with keys between some starting and ending
+value. Btrees also do a better job of exploiting m4_italic([locality
+of reference]). If the application is likely to touch keys near each
+other at the same time, the Btrees work well. The tree structure keeps
+keys that are close together near one another in storage, so fetching
+nearby values usually doesn't require a disk access.])
+
+m4_p([dnl
+Record-number-based storage is natural for applications that need to
+store and fetch records, but that do not have a simple way to generate
+keys of their own. In a record number table, the record number is the
+key for the record. m4_db will generate these record numbers
+automatically.])
+
+m4_p([dnl
+Queues are well-suited for applications that create records, and then
+must deal with those records in creation order. A good example is
+on-line purchasing systems. Orders can enter the system at any time,
+but should generally be filled in the order in which they were placed.])
+
+m4_section([Data management services])
+
+m4_p([dnl
+m4_db offers important data management services, including concurrency,
+transactions, and recovery. All of these services work on all of the
+storage structures.])
+
+m4_p([dnl
+Many users can work on the same database concurrently. m4_db handles
+locking transparently, ensuring that two users working on the same
+record do not interfere with one another.])
+
+m4_p([dnl
+The library provides strict ACID transaction semantics, by default.
+However, applications are allowed to relax the isolation guarantees
+the database system makes.])
+
+m4_p([dnl
+Multiple operations can be grouped into a single transaction, and can
+be committed or rolled back atomically. m4_db uses a technique called
+m4_italic([two-phase locking]) to be sure that concurrent transactions
+are isolated from one another, and a technique called
+m4_italic([write-ahead logging]) to guarantee that committed changes
+survive application, system, or hardware failures.])
+
+m4_p([dnl
+When an application starts up, it can ask m4_db to run recovery.
+Recovery restores the database to a clean state, with all committed
+changes present, even after a crash. The database is guaranteed to be
+consistent and all committed changes are guaranteed to be present when
+recovery completes.])
+
+m4_p([dnl
+An application can specify, when it starts up, which data management
+services it will use. Some applications need fast, single-user,
+non-transactional Btree data storage. In that case, the application can
+disable the locking and transaction systems, and will not incur the
+overhead of locking or logging. If an application needs to support
+multiple concurrent users, but doesn't need transactions, it can turn
+on locking without transactions. Applications that need concurrent,
+transaction-protected database access can enable all of the
+subsystems.])
+
+m4_p([dnl
+In all these cases, the application uses the same function-call API to
+fetch and update records.])
+
+m4_section([Design])
+
+m4_p([dnl
+m4_db was designed to provide industrial-strength database services to
+application developers, without requiring them to become database
+experts. It is a classic C-library style m4_italic(toolkit), providing
+a broad base of functionality to application writers. m4_db was designed
+by programmers, for programmers: its modular design surfaces simple,
+orthogonal interfaces to core services, and it provides mechanism (for
+example, good thread support) without imposing policy (for example, the
+use of threads is not required). Just as importantly, m4_db allows
+developers to balance performance against the need for crash recovery
+and concurrent use. An application can use the storage structure that
+provides the fastest access to its data and can request only the degree
+of logging and locking that it needs.])
+
+m4_p([dnl
+Because of the tool-based approach and separate interfaces for each
+m4_db subsystem, you can support a complete transaction environment for
+other system operations. m4_db even allows you to wrap transactions
+around the standard UNIX file read and write operations! Further, m4_db
+was designed to interact correctly with the native system's toolset, a
+feature no other database package offers. For example, m4_db supports
+hot backups (database backups while the database is in use), using
+standard UNIX system utilities, for example, dump, tar, cpio, pax or
+even cp.])
+
+m4_p([dnl
+Finally, because scripting language interfaces are available for m4_db
+(notably Tcl and Perl), application writers can build incredibly powerful
+database engines with little effort. You can build transaction-protected
+database applications using your favorite scripting languages, an
+increasingly important feature in a world using CGI scripts to deliver
+HTML.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/intro/dbisnot.so b/db/docs_src/ref/intro/dbisnot.so
new file mode 100644
index 000000000..6abde2333
--- /dev/null
+++ b/db/docs_src/ref/intro/dbisnot.so
@@ -0,0 +1,167 @@
+m4_comment([$Id: dbisnot.so,v 10.8 2002/08/23 20:36:50 bostic Exp $])
+
+m4_ref_title(Introduction, What m4_db is not,, intro/dbis, intro/need)
+
+m4_p([dnl
+In contrast to most other database systems, m4_db provides relatively
+simple data access services.])
+
+m4_p([dnl
+Records in m4_db are (m4_italic([key]), m4_italic([value])) pairs. m4_db
+supports only a few logical operations on records. They are:])
+
+m4_bulletbegin
+m4_bullet([Insert a record in a table.])
+m4_bullet([Delete a record from a table.])
+m4_bullet([Find a record in a table by looking up its key.])
+m4_bullet([Update a record that has already been found.])
+m4_bulletend
+
+m4_p([dnl
+Notice that m4_db never operates on the value part of a record.
+Values are simply payload, to be
+stored with keys and reliably delivered back to the application on
+demand.])
+
+m4_p([dnl
+Both keys and values can be arbitrary byte strings, either fixed-length
+or variable-length. As a result, programmers can put native programming
+language data structures into the database without converting them to
+a foreign record format first. Storage and retrieval are very simple,
+but the application needs to know what the structure of a key and a
+value is in advance. It cannot ask m4_db, because m4_db doesn't know.])
+
+m4_p([dnl
+This is an important feature of m4_db, and one worth considering more
+carefully. On the one hand, m4_db cannot provide the programmer with
+any information on the contents or structure of the values that it
+stores. The application must understand the keys and values that it
+uses. On the other hand, there is literally no limit to the data types
+that can be store in a m4_db database. The application never needs to
+convert its own program data into the data types that m4_db supports.
+m4_db is able to operate on any data type the application uses, no
+matter how complex.])
+
+m4_p([dnl
+Because both keys and values can be up to four gigabytes in length, a
+single record can store images, audio streams, or other large data
+values. Large values are not treated specially in m4_db. They are
+simply broken into page-sized chunks, and reassembled on demand when
+the application needs them. Unlike some other database systems, m4_db
+offers no special support for binary large objects (BLOBs).])
+
+m4_section([Not a relational database])
+
+m4_p([dnl
+m4_db is not a relational database.])
+
+m4_p([dnl
+First, m4_db does not support SQL queries. All access to data is through
+the m4_db API. Developers must learn a new set of interfaces in order
+to work with m4_db. Although the interfaces are fairly simple, they are
+non-standard.])
+
+m4_p([dnl
+SQL support is a double-edged sword. One big advantage of relational
+databases is that they allow users to write simple declarative queries
+in a high-level language. The database system knows everything about
+the data and can carry out the command. This means that it's simple to
+search for data in new ways, and to ask new questions of the database.
+No programming is required.])
+
+m4_p([dnl
+On the other hand, if a programmer can predict in advance how an
+application will access data, then writing a low-level program to get
+and store records can be faster. It eliminates the overhead of query
+parsing, optimization, and execution. The programmer must understand
+the data representation, and must write the code to do the work, but
+once that's done, the application can be very fast.])
+
+m4_p([dnl
+Second, m4_db has no notion of m4_italic([schema]) and data types in
+the way that relational systems do. Schema is the structure of records
+in tables, and the relationships among the tables in the database. For
+example, in a relational system the programmer can create a record from
+a fixed menu of data types. Because the record types are declared to
+the system, the relational engine can reach inside records and examine
+individual values in them. In addition, programmers can use SQL to
+declare relationships among tables, and to create indices on tables.
+Relational engines usually maintain these relationships and indices
+automatically.])
+
+m4_p([dnl
+In m4_db, the key and value in a record are opaque to m4_db. They may
+have a rich internal structure, but the library is unaware of it. As a
+result, m4_db cannot decompose the value part of a record into its
+constituent parts, and cannot use those parts to find values of
+interest. Only the application, which knows the data structure, can do
+that. m4_db does support indices on tables and automatically maintain
+those indices as their associated tables are modified.])
+
+m4_p([dnl
+m4_db is not a relational system. Relational database systems are
+semantically rich and offer high-level database access. Compared to such
+systems, m4_db is a high-performance, transactional library for record
+storage. It's possible to build a relational system on top of m4_db. In
+fact, the popular MySQL relational system uses m4_db for
+transaction-protected table management, and takes care of all the SQL
+parsing and execution. It uses m4_db for the storage level, and provides
+the semantics and access tools.])
+
+m4_section([Not an object-oriented database])
+
+m4_p([dnl
+Object-oriented databases are designed for very tight integration with
+object-oriented programming languages. m4_db is written entirely in the
+C programming language. It includes language bindings for C++, Java,
+and other languages, but the library has no information about the
+objects created in any object-oriented application. m4_db never makes
+method calls on any application object. It has no idea what methods are
+defined on user objects, and cannot see the public or private members
+of any instance. The key and value part of all records are opaque to
+m4_db.])
+
+m4_p([dnl
+m4_db cannot automatically page in objects as they are accessed, as some
+object-oriented databases do. The object-oriented application programmer
+must decide what records are required, and must fetch them by making
+method calls on m4_db objects.])
+
+m4_section([Not a network database])
+
+m4_p([dnl
+m4_db does not support network-style navigation among records, as
+network databases do. Records in a m4_db table may move around over
+time, as new records are added to the table and old ones are deleted.
+m4_db is able to do fast searches for records based on keys, but there
+is no way to create a persistent physical pointer to a record.
+Applications can only refer to records by key, not by address.])
+
+m4_section([Not a database server])
+
+m4_p([dnl
+m4_db is not a standalone database server. It is a library, and runs in
+the address space of the application that uses it. If more than one
+application links in m4_db, then all can use the same database at the
+same time; the library handles coordination among the applications, and
+guarantees that they do not interfere with one another.])
+
+m4_p([dnl
+Recent releases of m4_db allow programmers to compile the library as a
+standalone process, and to use RPC stubs to connect to it and to carry
+out operations. However, there are some important limitations to this
+feature. The RPC stubs provide exactly the same API that the library
+itself does. There is no higher-level access provided by the standalone
+process. Tuning the standalone process is difficult, since m4_db does
+no threading in the library (applications can be threaded, but the
+library never creates a thread on its own).])
+
+m4_p([dnl
+It is possible to build a server application that uses m4_db for data
+management. For example, many commercial and open source Lightweight
+Directory Access Protocol (LDAP) servers use m4_db for record storage.
+LDAP clients connect to these servers over the network. Individual
+servers make calls through the m4_db API to find records and return them
+to clients. On its own, however, m4_db is not a server.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/intro/distrib.so b/db/docs_src/ref/intro/distrib.so
new file mode 100644
index 000000000..e1c45a386
--- /dev/null
+++ b/db/docs_src/ref/intro/distrib.so
@@ -0,0 +1,14 @@
+m4_comment([$Id: distrib.so,v 10.18 2006/08/24 16:32:30 bostic Exp $])
+
+m4_ref_title(Introduction,
+ What does the m4_db distribution include?,, intro/what, intro/where)
+
+m4_p([dnl
+The m4_db distribution includes complete source code for the m4_db
+library, including all three m4_db products and their supporting
+utilities, as well as complete documentation in HTML format. The
+distribution includes prebuilt binaries and libraries for a small
+number of platforms. The distribution does not include hard-copy
+documentation.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/intro/need.so b/db/docs_src/ref/intro/need.so
new file mode 100644
index 000000000..3182b889d
--- /dev/null
+++ b/db/docs_src/ref/intro/need.so
@@ -0,0 +1,56 @@
+m4_comment([$Id: need.so,v 10.2 2000/12/08 23:59:06 mao Exp $])
+
+m4_ref_title(Introduction, Do you need m4_db?,, intro/dbisnot, intro/what)
+
+m4_p([dnl
+m4_db is an ideal database system for applications that need fast,
+scalable, and reliable embedded database management. For applications
+that need different services, however, it can be a poor choice.])
+
+m4_p([dnl
+First, do you need the ability to access your data in ways you cannot
+predict in advance? If your users want to be able to enter SQL
+queries to perform
+complicated searches that you cannot program into your application to
+begin with, then you should consider a relational engine instead. m4_db
+requires a programmer to write code in order to run a new kind of query.])
+
+m4_p([dnl
+On the other hand, if you can predict your data access patterns up front
+-- and in particular if you need fairly simple key/value lookups -- then
+m4_db is a good choice. The queries can be coded up once, and will then
+run very quickly because there is no SQL to parse and execute.])
+
+m4_p([dnl
+Second, are there political arguments for or against a standalone
+relational server? If you're building an application for your own use
+and have a relational system installed with administrative support
+already, it may be simpler to use that than to build and learn m4_db.
+On the other hand, if you'll be shipping many copies of your application
+to customers, and don't want your customers to have to buy, install,
+and manage a separate database system, then m4_db may be a better
+choice.])
+
+m4_p([dnl
+Third, are there any technical advantages to an embedded database? If
+you're building an application that will run unattended for long periods
+of time, or for end users who are not sophisticated administrators, then
+a separate server process may be too big a burden. It will require
+separate installation and management, and if it creates new ways for
+the application to fail, or new complexities to master in the field,
+then m4_db may be a better choice.])
+
+m4_p([dnl
+The fundamental question is, how closely do your requirements match the
+m4_db design? m4_db was conceived and built to provide fast, reliable,
+transaction-protected record storage. The library itself was never
+intended to provide interactive query support, graphical reporting
+tools, or similar services that some other database systems provide. We
+have tried always to err on the side of minimalism and simplicity. By
+keeping the library small and simple, we create fewer opportunities for
+bugs to creep in, and we guarantee that the database system stays fast,
+because there is very little code to execute. If your application needs
+that set of features, then m4_db is almost certainly the best choice
+for you.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/intro/products.so b/db/docs_src/ref/intro/products.so
new file mode 100644
index 000000000..10ea2097d
--- /dev/null
+++ b/db/docs_src/ref/intro/products.so
@@ -0,0 +1,69 @@
+m4_comment([$Id: products.so,v 10.20 2006/12/05 19:12:12 bostic Exp $])
+
+m4_ref_title(Introduction,
+ The m4_db products,
+ m4_db @products,
+ intro/where, am_conf/intro)
+
+m4_p([dnl
+Oracle licenses four different products that use the m4_db technology.
+Each product offers a distinct level of database support. It is not
+possible to mix-and-match products, that is, each application or group
+of applications must use the same m4_db product.])
+
+m4_p([dnl
+All four products are included in the single Open Source distribution
+of m4_db from Oracle, and building that distribution automatically
+builds all four products. Each product adds new interfaces and services
+to the product that precedes it in the list. As a result, developers
+can download m4_db and build an application that does only single-user,
+read-only database access, and easily add support later for more users
+and more complex database access patterns.])
+
+m4_p([dnl
+Users who distribute m4_db must ensure that they are licensed for the
+m4_db interfaces they use. Information on licensing is available from
+Oracle.])
+
+m4_section(m4_am)
+m4_p([dnl
+The m4_am product is an embeddable, high-performance data store. It
+supports multiple concurrent threads of control (including multiple
+processes and multiple threads of control within a process) reading
+information managed by m4_db. When updates are required, only a single
+thread of control may be using the database. The m4_am does no locking,
+and so provides no guarantees of correct behavior if more than one
+thread of control is updating the database at a time. The m4_am is
+intended for use in read-only applications or applications which can
+guarantee no more than one thread of control will ever update the
+database at a time.])
+
+m4_section(m4_cam)
+m4_p([dnl
+The m4_cam product adds multiple-reader, single writer capabilities to
+the m4_am product, supporting applications that need concurrent updates
+and do not want to implement their own locking protocols. m4_cam is
+intended for applications that require occasional write access to a
+database that is largely used for reading.])
+
+m4_section(m4_tam)
+m4_p([dnl
+The m4_tam product adds full transactional support and recoverability
+to the m4_am product. m4_tam is intended for applications that require
+industrial-strength database services, including excellent performance
+under high-concurrency workloads with a mixture of readers and writers,
+the ability to commit or roll back multiple changes to the database at
+a single instant, and the guarantee that even in the event of a
+catastrophic system or hardware failure, any committed database changes
+will be preserved.])
+
+m4_section(m4_ha)
+m4_p([dnl
+The m4_ha product support for data replication. A single master system
+handles all updates, and distributes them to as many replicas as the
+application requires. All replicas can handle read requests during
+normal processing. If the master system fails for any reason, one of
+the replicas takes over as the new master system, and distributes
+updates to the remaining replicas.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/intro/terrain.so b/db/docs_src/ref/intro/terrain.so
new file mode 100644
index 000000000..f96947c20
--- /dev/null
+++ b/db/docs_src/ref/intro/terrain.so
@@ -0,0 +1,307 @@
+m4_comment([$Id: terrain.so,v 10.4 2001/05/05 01:49:26 bostic Exp $])
+
+m4_ref_title(Introduction,
+ Mapping the terrain: theory and practice,, intro/data, intro/dbis)
+
+m4_p([dnl
+The first step in selecting a database system is figuring out what the
+choices are. Decades of research and real-world deployment have produced
+countless systems. We need to organize them somehow to reduce the number
+of options.])
+
+m4_p([dnl
+One obvious way to group systems is to use the common labels that
+vendors apply to them. The buzzwords here include "network,"
+"relational," "object-oriented," and "embedded," with some
+cross-fertilization like "object-relational" and "embedded network".
+Understanding the buzzwords is important. Each has some grounding in
+theory, but has also evolved into a practical label for categorizing
+systems that work in a certain way.])
+
+m4_p([dnl
+All database systems, regardless of the buzzwords that apply to them,
+provide a few common services. All of them store data, for example.
+We'll begin by exploring the common services that all systems provide,
+and then examine the differences among the different kinds of systems.])
+
+m4_section([Data access and data management])
+
+m4_p([dnl
+Fundamentally, database systems provide two services.])
+
+m4_p([dnl
+The first service is m4_italic(data access). Data access means adding
+new data to the database (inserting), finding data of interest
+(searching), changing data already stored (updating), and removing data
+from the database (deleting). All databases provide these services. How
+they work varies from category to category, and depends on the record
+structure that the database supports.])
+
+m4_p([dnl
+Each record in a database is a collection of values. For example, the
+record for a Web site customer might include a name, email address,
+shipping address, and payment information. Records are usually stored
+in tables. Each table holds records of the same kind. For example, the
+m4_bold(customer) table at an e-commerce Web site might store the
+customer records for every person who shopped at the site. Often,
+database records have a different structure from the structures or
+instances supported by the programming language in which an application
+is written. As a result, working with records can mean:])
+
+m4_bulletbegin
+m4_bullet([dnl
+using database operations like searches and updates on records; and])
+m4_bullet([dnl
+converting between programming language structures and database record
+types in the application.])
+m4_bulletend
+
+m4_p([dnl
+The second service is m4_italic(data management). Data management is
+more complicated than data access. Providing good data management
+services is the hard part of building a database system. When you
+choose a database system to use in an application you build, making sure
+it supports the data management services you need is critical.])
+
+m4_p([dnl
+Data management services include allowing multiple users to work on the
+database simultaneously (concurrency), allowing multiple records to be
+changed instantaneously (transactions), and surviving application and
+system crashes (recovery). Different database systems offer different
+data management services. Data management services are entirely
+independent of the data access services listed above. For example,
+nothing about relational database theory requires that the system
+support transactions, but most commercial relational systems do.])
+
+m4_p([dnl
+Concurrency means that multiple users can operate on the database at
+the same time. Support for concurrency ranges from none (single-user
+access only) to complete (many readers and writers working
+simultaneously).])
+
+m4_p([dnl
+Transactions permit users to make multiple changes appear at once. For
+example, a transfer of funds between bank accounts needs to be a
+transaction because the balance in one account is reduced and the
+balance in the other increases. If the reduction happened before the
+increase, than a poorly-timed system crash could leave the customer
+poorer; if the bank used the opposite order, then the same system crash
+could make the customer richer. Obviously, both the customer and the
+bank are best served if both operations happen at the same instant.])
+
+m4_p([dnl
+Transactions have well-defined properties in database systems. They are
+m4_italic(atomic), so that the changes happen all at once or not at all.
+They are m4_italic(consistent), so that the database is in a legal state
+when the transaction begins and when it ends. They are typically
+m4_italic(isolated), which means that any other users in the database
+cannot interfere with them while they are in progress. And they are
+m4_italic(durable), so that if the system or application crashes after
+a transaction finishes, the changes are not lost. Together, the
+properties of m4_italic(atomicity), m4_italic(consistency),
+m4_italic(isolation), and m4_italic(durability) are known as the ACID
+properties.])
+
+m4_p([dnl
+As is the case for concurrency, support for transactions varies among
+databases. Some offer atomicity without making guarantees about
+durability. Some ignore isolatability, especially in single-user
+systems; there's no need to isolate other users from the effects of
+changes when there are no other users.])
+
+m4_p([dnl
+Another important data management service is recovery. Strictly
+speaking, recovery is a procedure that the system carries out when it
+starts up. The purpose of recovery is to guarantee that the database is
+complete and usable. This is most important after a system or
+application crash, when the database may have been damaged. The recovery
+process guarantees that the internal structure of the database is good.
+Recovery usually means that any completed transactions are checked, and
+any lost changes are reapplied to the database. At the end of the
+recovery process, applications can use the database as if there had been
+no interruption in service.])
+
+m4_p([dnl
+Finally, there are a number of data management services that permit
+copying of data. For example, most database systems are able to import
+data from other sources, and to export it for use elsewhere. Also, most
+systems provide some way to back up databases and to restore in the
+event of a system failure that damages the database. Many commercial
+systems allow m4_italic(hot backups), so that users can back up
+databases while they are in use. Many applications must run without
+interruption, and cannot be shut down for backups.])
+
+m4_p([dnl
+A particular database system may provide other data management services.
+Some provide browsers that show database structure and contents. Some
+include tools that enforce data integrity rules, such as the rule that
+no employee can have a negative salary. These data management services
+are not common to all systems, however. Concurrency, recovery, and
+transactions are the data management services that most database vendors
+support.])
+
+m4_p([dnl
+Deciding what kind of database to use means understanding the data
+access and data management services that your application needs. m4_db
+is an embedded database that supports fairly simple data access with a
+rich set of data management services. To highlight its strengths and
+weaknesses, we can compare it to other database system categories.])
+
+m4_section([Relational databases])
+
+m4_p([dnl
+Relational databases are probably the best-known database variant,
+because of the success of companies like Oracle. Relational databases
+are based on the mathematical field of set theory. The term "relation"
+is really just a synonym for "set" -- a relation is just a set of
+records or, in our terminology, a table. One of the main innovations in
+early relational systems was to insulate the programmer from the
+physical organization of the database. Rather than walking through
+arrays of records or traversing pointers, programmers make statements
+about tables in a high-level language, and the system executes those
+statements.])
+
+m4_p([dnl
+Relational databases operate on m4_italic(tuples), or records, composed
+of values of several different data types, including integers, character
+strings, and others. Operations include searching for records whose
+values satisfy some criteria, updating records, and so on.])
+
+m4_p([dnl
+Virtually all relational databases use the Structured Query Language,
+or SQL. This language permits people and computer programs to work with
+the database by writing simple statements. The database engine reads
+those statements and determines how to satisfy them on the tables in
+the database.])
+
+m4_p([dnl
+SQL is the main practical advantage of relational database systems.
+Rather than writing a computer program to find records of interest, the
+relational system user can just type a query in a simple syntax, and
+let the engine do the work. This gives users enormous flexibility; they
+do not need to decide in advance what kind of searches they want to do,
+and they do not need expensive programmers to find the data they need.
+Learning SQL requires some effort, but it's much simpler than a
+full-blown high-level programming language for most purposes. And there
+are a lot of programmers who have already learned SQL.])
+
+m4_section([Object-oriented databases])
+
+m4_p([dnl
+Object-oriented databases are less common than relational systems, but
+are still fairly widespread. Most object-oriented databases were
+originally conceived as persistent storage systems closely wedded to
+particular high-level programming languages like C++. With the spread
+of Java, most now support more than one programming language, but
+object-oriented database systems fundamentally provide the same class
+and method abstractions as do object-oriented programming languages.])
+
+m4_p([dnl
+Many object-oriented systems allow applications to operate on objects
+uniformly, whether they are in memory or on disk. These systems create
+the illusion that all objects are in memory all the time. The advantage
+to object-oriented programmers who simply want object storage and
+retrieval is clear. They need never be aware of whether an object is in
+memory or not. The application simply uses objects, and the database
+system moves them between disk and memory transparently. All of the
+operations on an object, and all its behavior, are determined by the
+programming language.])
+
+m4_p([dnl
+Object-oriented databases aren't nearly as widely deployed as relational
+systems. In order to attract developers who understand relational
+systems, many of the object-oriented systems have added support for
+query languages very much like SQL. In practice, though, object-oriented
+databases are mostly used for persistent storage of objects in C++ and
+Java programs.])
+
+m4_section([Network databases])
+
+m4_p([dnl
+The "network model" is a fairly old technique for managing and
+navigating application data. Network databases are designed to make
+pointer traversal very fast. Every record stored in a network database
+is allowed to contain pointers to other records. These pointers are
+generally physical addresses, so fetching the record to which it refers
+just means reading it from disk by its disk address.])
+
+m4_p([dnl
+Network database systems generally permit records to contain integers,
+floating point numbers, and character strings, as well as references to
+other records. An application can search for records of interest. After
+retrieving a record, the application can fetch any record to which it
+refers, quickly.])
+
+m4_p([dnl
+Pointer traversal is fast because most network systems use physical disk
+addresses as pointers. When the application wants to fetch a record,
+the database system uses the address to fetch exactly the right string
+of bytes from the disk. This requires only a single disk access in all
+cases. Other systems, by contrast, often must do more than one disk read
+to find a particular record.])
+
+m4_p([dnl
+The key advantage of the network model is also its main drawback. The
+fact that pointer traversal is so fast means that applications that do
+it will run well. On the other hand, storing pointers all over the
+database makes it very hard to reorganize the database. In effect, once
+you store a pointer to a record, it is difficult to move that record
+elsewhere. Some network databases handle this by leaving forwarding
+pointers behind, but this defeats the speed advantage of doing a single
+disk access in the first place. Other network databases find, and fix,
+all the pointers to a record when it moves, but this makes
+reorganization very expensive. Reorganization is often necessary in
+databases, since adding and deleting records over time will consume
+space that cannot be reclaimed without reorganizing. Without periodic
+reorganization to compact network databases, they can end up with a
+considerable amount of wasted space.])
+
+m4_section([Clients and servers])
+
+m4_p([dnl
+Database vendors have two choices for system architecture. They can
+build a server to which remote clients connect, and do all the database
+management inside the server. Alternatively, they can provide a module
+that links directly into the application, and does all database
+management locally. In either case, the application developer needs
+some way of communicating with the database (generally, an Application
+Programming Interface (API) that does work in the process or that
+communicates with a server to get work done).])
+
+m4_p([dnl
+Almost all commercial database products are implemented as servers, and
+applications connect to them as clients. Servers have several features
+that make them attractive.])
+
+m4_p([dnl
+First, because all of the data is managed by a separate process, and
+possibly on a separate machine, it's easy to isolate the database server
+from bugs and crashes in the application.])
+
+m4_p([dnl
+Second, because some database products (particularly relational engines)
+are quite large, splitting them off as separate server processes keeps
+applications small, which uses less disk space and memory. Relational
+engines include code to parse SQL statements, to analyze them and
+produce plans for execution, to optimize the plans, and to execute
+them.])
+
+m4_p([dnl
+Finally, by storing all the data in one place and managing it with a
+single server, it's easier for organizations to back up, protect, and
+set policies on their databases. The enterprise databases for large
+companies often have several full-time administrators caring for them,
+making certain that applications run quickly, granting and denying
+access to users, and making backups.])
+
+m4_p([dnl
+However, centralized administration can be a disadvantage in some cases.
+In particular, if a programmer wants to build an application that uses
+a database for storage of important information, then shipping and
+supporting the application is much harder. The end user needs to install
+and administer a separate database server, and the programmer must
+support not just one product, but two. Adding a server process to the
+application creates new opportunity for installation mistakes and
+run-time problems.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/intro/what.so b/db/docs_src/ref/intro/what.so
new file mode 100644
index 000000000..9ead592a9
--- /dev/null
+++ b/db/docs_src/ref/intro/what.so
@@ -0,0 +1,52 @@
+m4_comment([$Id: what.so,v 10.23 2001/03/01 15:58:06 bostic Exp $])
+
+m4_ref_title(Introduction,
+ What other services does m4_db provide?,, intro/need, intro/distrib)
+
+m4_p([dnl
+m4_db also provides core database services to developers. These
+services include:])
+
+m4_tagbegin
+
+m4_tag(Page cache management:, [dnl
+The page cache provides fast access to a cache of database pages,
+handling the I/O associated with the cache to ensure that dirty pages
+are written back to the file system and that new pages are allocated on
+demand. Applications may use the m4_db shared memory buffer manager to
+serve their own files and pages.])
+
+m4_tag(Transactions and logging:, [dnl
+The transaction and logging systems provide recoverability and atomicity
+for multiple database operations. The transaction system uses two-phase
+locking and write-ahead logging protocols to ensure that database
+operations may be undone or redone in the case of application or system
+failure. Applications may use m4_db transaction and logging subsystems
+to protect their own data structures and operations from application or
+system failure.])
+
+m4_tag(Locking:, [dnl
+The locking system provides multiple reader or single writer access to
+objects. The m4_db access methods use the locking system to acquire
+the right to read or write database pages. Applications may use the
+m4_db locking subsystem to support their own locking needs.])
+
+m4_tagend
+
+m4_p([dnl
+By combining the page cache, transaction, locking, and logging systems,
+m4_db provides the same services found in much larger, more complex and
+more expensive database systems. m4_db supports multiple simultaneous
+readers and writers and guarantees that all changes are recoverable, even
+in the case of a catastrophic hardware failure during a database update.])
+
+m4_p([dnl
+Developers may select some or all of the core database services for any
+access method or database. Therefore, it is possible to choose the
+appropriate storage structure and the right degrees of concurrency and
+recoverability for any application. In addition, some of the subsystems
+(for example, the Locking subsystem) can be called separately from the
+m4_db access method. As a result, developers can integrate non-database
+objects into their transactional applications using m4_db.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/intro/where.so b/db/docs_src/ref/intro/where.so
new file mode 100644
index 000000000..798514764
--- /dev/null
+++ b/db/docs_src/ref/intro/where.so
@@ -0,0 +1,39 @@
+m4_comment([$Id: where.so,v 10.32 2003/05/26 16:04:06 bostic Exp $])
+
+m4_ref_title(Introduction,
+ Where does m4_db run?,, intro/distrib, intro/products)
+
+m4_p([dnl
+m4_db requires only underlying m4_posix1_name system calls and can be
+ported easily to new architectures by adding stub routines to connect
+the native system interfaces to the m4_db POSIX-style system calls.
+See m4_link(M4RELDIR/ref/distrib/port, Porting m4_db to new
+architectures) for more information.])
+
+m4_p([dnl
+m4_db will autoconfigure and run on almost any modern UNIX, POSIX or
+Linux systems, and on most historical UNIX platforms. m4_db will
+autoconfigure and run on almost any GNU gcc toolchain-based embedded
+platform, including Cygwin, OpenLinux and others. See
+m4_link(M4RELDIR/ref/build_unix/intro, Building for UNIX systems) for
+more information.])
+
+m4_p([dnl
+The m4_db distribution includes support for QNX Neutrino. See
+m4_link(M4RELDIR/ref/build_unix/intro, Building for UNIX systems) for
+more information.])
+
+m4_p([dnl
+The m4_db distribution includes support for VxWorks, via a workspace
+and project files for Tornado 2.0. See
+m4_link(M4RELDIR/ref/build_vxworks/intro, Building for VxWorks) for more
+information.])
+
+m4_p([dnl
+The m4_db distribution includes support for Windows/95, Windows/98,
+Windows/NT, Windows/2000 and Windows/XP, via the Microsoft Visual C++
+6.0 and .NET development environments. See
+m4_link(M4RELDIR/ref/build_win/intro, Building for Windows systems)
+for more information.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/java/compat.so b/db/docs_src/ref/java/compat.so
new file mode 100644
index 000000000..4c4497f99
--- /dev/null
+++ b/db/docs_src/ref/java/compat.so
@@ -0,0 +1,11 @@
+m4_comment([$Id: compat.so,v 10.16 2007/07/06 00:22:53 mjc Exp $])
+
+m4_ref_title(Java API,
+ Compatibility, @Java compatibility, java/conf, java/program)
+
+m4_p([dnl
+The m4_db Java API has been tested with the Sun Microsystem's JDK 1.4
+and Java 5 on Linux, Windows and OS X. It should work with any JDK
+1.4- or 5-compatible environment.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/java/conf.so b/db/docs_src/ref/java/conf.so
new file mode 100644
index 000000000..bf154325d
--- /dev/null
+++ b/db/docs_src/ref/java/conf.so
@@ -0,0 +1,120 @@
+m4_comment([$Id: conf.so,v 10.30 2005/12/01 03:18:51 bostic Exp $])
+
+m4_ref_title(Java API,
+ Java configuration, @Java configuration, am_misc/faq, java/compat)
+
+m4_p([dnl
+Building the m4_db java classes, the examples and the native support
+library is integrated into the normal build process. See
+m4_linkpage(M4RELDIR/ref/build_unix/conf, --enable-java, [Configuring
+m4_db]) and m4_link(M4RELDIR/ref/build_win/intro, [Building for Windows])
+for more information.])
+
+m4_p([dnl
+We expect that you already installed the Java JDK or equivalent on your
+system. For the sake of discussion, we assume that it is in a directory
+called db-VERSION; for example, you downloaded a m4_db archive, and you
+did not change the top-level directory name. The files related to Java
+are in three subdirectories of db-VERSION: java (the java source files),
+libdb_java (the C++ files that provide the "glue" between java and
+m4_db) and examples_java (containing all examples code). The directory
+tree looks like this:])
+
+m4_indent([dnl
+db-VERSION
+|-- java
+| `-- src
+| `-- com
+| `-- sleepycat
+| |-- bdb
+| | |-- ...
+| | |-- bind
+| | | `-- ...
+| | `-- util
+| | `-- ...
+| `-- db
+|-- examples_java
+| `-- src
+| `-- com
+| `-- sleepycat
+| `-- examples
+| |-- bdb
+| | `-- ...
+| `-- db
+| `-- ...
+`-- libdb_java
+ `-- ...
+])
+
+m4_p([dnl
+This naming conforms to the de facto standard for naming java packages.
+When the java code is built, it is placed into two jar files:
+m4_path(db.jar), containing the db package,
+and m4_path(dbexamples.jar), containing the examples.])
+
+m4_p([dnl
+For your application to use m4_db successfully, you must set your
+m4_envvar(CLASSPATH) environment variable to include the full pathname of
+the db jar files as well as the classes in your java distribution.
+On UNIX, m4_envvar(CLASSPATH) is a colon-separated
+list of directories and jar files;
+on Windows, it is separated by semicolons.
+On UNIX, the jar files are put in your build directory, and when
+you do the make install step, they are copied to the lib directory
+of your installation tree. On Windows, the jar files are placed
+in the Release or Debug subdirectory with your other objects.])
+
+m4_p([dnl
+The m4_db Java classes are mostly implemented in native
+methods. Before you can use them, you need to make sure that the
+DLL or shared library containing the native methods can be found
+by your Java runtime. On Windows, you should set your PATH variable
+to include:])
+
+m4_indent(m4_path([db-VERSION\build_windows\Release]))
+
+m4_p([dnl
+On UNIX, you should set the
+m4_envvar(LD_LIBRARY_PATH) environment variable or local equivalent
+to include the m4_db library installation directory. Of course, the
+standard install directory may have been changed for your site; see your
+system administrator for details.])
+
+m4_p([dnl
+On other platforms, the path can be set on the command line as follows
+(assuming the shared library is in m4_path(/usr/local/BerkeleyDB/lib):)])
+
+m4_indent([% java -Djava.library.path=/usr/local/BerkeleyDB/lib ...])
+
+m4_p([dnl
+Regardless, if you get the following exception when you run, you
+probably do not have the library search path configured correctly:])
+
+m4_indent([java.lang.UnsatisfiedLinkError])
+
+m4_p([dnl
+Different Java interpreters provide different error messages if the
+m4_envvar(CLASSPATH) value is incorrect, a typical error is the following:])
+
+m4_indent([java.lang.NoClassDefFoundError])
+
+m4_p([dnl
+To ensure that everything is running correctly, you may want to try a
+simple test from the example programs in])
+
+m4_indent(m4_path([db-VERSION/examples_java/src/db]))
+
+m4_p([dnl
+For example, the following sample program will prompt for text input
+lines, which are then stored in a Btree database named m4_path(access.db) in
+your current directory:])
+
+m4_indent([% java db.AccessExample])
+
+m4_p([dnl
+Try giving it a few lines of input text and then end-of-file. Before
+it exits, you should see a list of the lines you entered display with
+data items. This is a simple check to make sure the fundamental
+configuration is working correctly.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/java/faq.so b/db/docs_src/ref/java/faq.so
new file mode 100644
index 000000000..2ce9c7230
--- /dev/null
+++ b/db/docs_src/ref/java/faq.so
@@ -0,0 +1,120 @@
+m4_comment([$Id: faq.so,v 1.16 2007/07/11 11:13:30 mjc Exp $])
+
+m4_ref_title(Java API,
+ Java FAQ, [Java @FAQ, Java FAQ], java/program, arch/bigpic)
+
+m4_nlistbegin
+
+m4_nlist([dnl
+m4_bold([On what platforms is the m4_db Java API supported?])
+
+m4_p([dnl
+All platforms supported by m4_db that have a JVM compatible with J2SE
+1.4 or above.])])
+
+m4_nlist([dnl
+m4_bold([How does the m4_db Java API relate to the J2EE standard?])
+
+m4_p([dnl
+The m4_db Java API does not currently implement any part of the J2EE
+standard. That said, it does implement the implicit standard for Java
+m4_linkweb(http://java.sun.com/j2se/1.5.0/docs/guide/collections/,dnl
+[Java Collections]). The concept of a transaction exists in several
+Java packages (J2EE, XA, JINI to name a few). Support for these APIs
+will be added based on demand in future versions of m4_db.])])
+
+m4_nlist([dnl
+m4_bold([How should I incorporate db.jar and the db native library into
+a Tomcat or other J2EE application servers?])
+
+m4_p([dnl
+Tomcat and other J2EE application servers have the ability to rebuild
+and reload code automatically. When using Tomcat this is the case when
+"reloadable" is set to "true". If your WAR file includes the db.jar it
+too will be reloaded each time your code is reloaded. This causes
+exceptions as the native library can't be loaded more than once and
+there is no way to unload native code. The solution is to place the
+db.jar in $TOMCAT_HOME/common/lib and let Tomcat load that library once
+at start time rather than putting it into the WAR that gets reloaded
+over and over.])])
+
+m4_nlist([dnl
+m4_bold([Can I use the m4_db Java API from within a EJB, a Servlet or a
+JSP page?])
+
+m4_p([dnl
+Yes. The m4_db Java API can be used from within all the popular J2EE
+application servers in many different ways.])])
+
+m4_nlist([dnl
+m4_bold([During one of the first calls to the m4_db Java API, a
+DbException is thrown with a "Bad file number" or "Bad file descriptor"
+message.])
+
+m4_p([dnl
+There are known large-file support bugs under JNI in various releases
+of the JDK. Please upgrade to the latest release of the JDK, and, if
+that does not solve the problem, disable big file support using the
+--disable-largefile configuration option.])])
+
+m4_nlist([dnl
+m4_bold([How can I use native methods from a debug build of the
+Java library?])
+
+m4_p([dnl
+Set Java's library path so that the debug version of m4_db's Java
+library appears, but the release version does not. m4_db tries to load
+the release library first, and if that fails tries the debug library.])])
+
+m4_nlist([dnl
+m4_bold([Why is ClassNotFoundException thrown when adding a record to
+the database, when a SerialBinding is used?])
+
+m4_p([dnl
+This problem occurs if you copy the db.jar file into the Java extensions
+(ext) directory. This will cause the database code to run under the
+System class loader, and it won't be able to find your application
+classes.])
+
+m4_p([dnl
+You'll have to actually remove db.jar from the Java extension directory.
+If you have more than one installation of Java, be sure to remove it
+from all of them. This is necessary even if db.jar is specified in the
+classpath.])
+
+m4_p([dnl
+An example of the exception is:])
+m4_indent([dnl
+collections.ship.basic.SupplierKey
+at java.net.URLClassLoader$1.run(Unknown Source)
+at java.security.AccessController.doPrivileged(Native Method)
+at java.net.URLClassLoader.findClass(Unknown Source)
+at java.lang.ClassLoader.loadClass(Unknown Source)
+at java.lang.ClassLoader.loadClass(Unknown Source)
+at java.lang.ClassLoader.loadClassInternal(Unknown Source)
+at java.lang.Class.forName0(Native Method)
+at java.lang.Class.forName(Unknown Source)
+at com.sleepycat.bind.serial.StoredClassCatalog.getClassInfo(StoredClassCatalog.java:211)
+...])])
+
+m4_nlist([dnl
+m4_bold([I'm upgrading my Java application to m4_db 4.3. Can I use the
+com.sleepycat.db.internal package rather than porting my code to the new
+API?])
+
+m4_p([dnl
+While it is possible to use the low-level API from applications, there
+are some caveats that should be considered when upgrading. The first is
+that the internal API depends on some classes in the public API such as
+DatabaseEntry.])
+
+m4_p([dnl
+In addition, the internal API is closer to the C API and doesn't have
+some of the default settings that were part of the earlier Java API.
+For example, applications will need to set the DB_THREAD flag explicitly
+if handles are to be used from multiple threads, or subtle errors may
+occur.])])
+
+m4_nlistend
+
+m4_page_footer
diff --git a/db/docs_src/ref/java/program.so b/db/docs_src/ref/java/program.so
new file mode 100644
index 000000000..7867cd1ae
--- /dev/null
+++ b/db/docs_src/ref/java/program.so
@@ -0,0 +1,86 @@
+m4_comment([$Id: program.so,v 10.35 2004/09/10 13:04:01 bostic Exp $])
+
+m4_ref_title(Java API, Java programming notes,, java/compat, java/faq)
+
+dnl #################################################################
+dnl This whole page is Java.
+dnl #################################################################
+pushdef([M4API], JAVA_API)
+
+m4_p([dnl
+Although the Java API parallels the m4_db C++/C interface in many ways,
+it differs where the Java language requires. For example, the handle
+method names are camel-cased and conform to Java naming patterns. (The
+C++/C method names are currently provided, but are deprecated.)])
+
+m4_nlistbegin
+
+m4_nlist([dnl
+The Java runtime does not automatically close m4_db objects on
+finalization. There are several reasons for this. One is that
+finalization is generally run only when garbage collection occurs, and
+there is no guarantee that this occurs at all, even on exit. Allowing
+specific m4_db actions to occur in ways that cannot be replicated seems
+wrong. Second, finalization of objects may happen in an arbitrary
+order, so we would have to do extra bookkeeping to make sure that
+everything was closed in the proper order. The best word of advice is
+to always do a close() for any matching open() call. Specifically, the
+m4_db package requires that you explicitly call close on each individual
+m4_linkjavadoc(com.sleepycat.db, Database) and
+m4_linkjavadoc(com.sleepycat.db, Cursor) object that you opened. Your database
+activity may not be synchronized to disk unless you do so.])
+
+m4_nlist([dnl
+Some methods in the Java API have no return type, and throw a
+m4_linkjavadoc(com.sleepycat.db, DatabaseException) when an severe error
+arises. There are some notable methods that do have a return value, and
+can also throw an exception. The "get" methods in
+m4_linkjavadoc(com.sleepycat.db, Database) and
+m4_linkjavadoc(com.sleepycat.db, Cursor) both return 0 when a get
+succeeds, m4_ref(DB_NOTFOUND) when the key is not found, and throw an
+error when there is a severe error. This approach allows the programmer
+to check for typical data-driven errors by watching return values
+without special casing exceptions.
+m4_p([dnl
+An object of type m4_linkjavadoc(com.sleepycat.db, MemoryException) is
+thrown when a Dbt is too small to hold the corresponding key or data item.])
+m4_p([dnl
+An object of type m4_linkjavadoc(com.sleepycat.db, DeadlockException) is
+thrown when a deadlock would occur.])
+m4_p([dnl
+An object of type m4_linkjavadoc(com.sleepycat.db, RunRecoveryException), a
+subclass of m4_linkjavadoc(com.sleepycat.db, DatabaseException), is thrown when
+there is an error that requires a recovery of the database using
+m4_ref(db_recover).])
+m4_p([dnl
+An object of type m4_linkjavadoc(java.lang, IllegalArgumentException)
+a standard Java Language exception, is thrown when there is an error in
+method arguments.])
+m4_p([dnl
+An object of type m4_linkjavadoc(java.lang, OutOfMemoryError) is thrown
+when the system cannot provide enough memory to complete the operation
+(the ENOMEM system error on UNIX).])])
+
+m4_nlist([dnl
+If there are embedded nulls in the m4_arg(curslist) argument for
+m4_linkjavadoc(com.sleepycat.db, Database,
+ [join(com.sleepycat.db.Cursor__BRACKETS__, com.sleepycat.db.JoinConfig)]),
+they will be treated as the end of the list of cursors, even if you
+may have allocated a longer array. Fill in all the cursors in your
+array unless you intend to cut it short.])
+
+m4_nlist([dnl
+If you are using custom class loaders in your application, make sure
+that the m4_db classes are loaded by the system class loader, not a
+custom class loader. This is due to a JVM bug that can cause an access
+violation during finalization (see the bug 4238486 in Sun Microsystem's
+Java Bug Database).])
+
+m4_nlistend
+
+dnl #################################################################
+dnl This whole page is Java.
+dnl #################################################################
+popdef([M4API])
+
+m4_page_footer
diff --git a/db/docs_src/ref/lock/am_conv.so b/db/docs_src/ref/lock/am_conv.so
new file mode 100644
index 000000000..222dbb17e
--- /dev/null
+++ b/db/docs_src/ref/lock/am_conv.so
@@ -0,0 +1,131 @@
+m4_comment([$Id: am_conv.so,v 10.24 2003/04/02 16:15:32 bostic Exp $])
+
+m4_ref_title(Locking Subsystem, m4_tam locking conventions,
+ m4_tam @locking conventions, lock/cam_conv, lock/nondb)
+
+m4_p([dnl
+All m4_db access methods follow the same conventions for locking
+database objects. Applications that do their own locking and also do
+locking via the access methods must be careful to adhere to these
+conventions.])
+
+m4_p([dnl
+Whenever a m4_db database is opened, the m4_ref(Db) handle is assigned
+a unique locker ID. Unless transactions are specified, that ID is used
+as the locker for all calls that the m4_db methods make to the lock
+subsystem. In order to lock a file, pages in the file, or records in
+the file, we must create a unique ID that can be used as the object to
+be locked in calls to the lock manager. Under normal operation, that
+object is a 28-byte value created by the concatenation of a unique file
+identifier, a page or record number, and an object type (page or record).])
+
+m4_p([dnl
+In a transaction-protected environment, database create and delete
+operations are recoverable and single-threaded. This single-threading
+is achieved using a single lock for the entire environment that must be
+acquired before beginning a create or delete operation. In this case,
+the object on which m4_db will lock is a 4-byte unsigned integer with
+a value of 0.])
+
+m4_p([dnl
+If applications are using the lock subsystem directly while they are
+also using locking via the access methods, they must take care not to
+inadvertently lock objects that happen to be equal to the unique file
+IDs used to lock files. This is most easily accomplished by using a
+lock object with a length different from the values used by m4_db.])
+
+m4_p([dnl
+All the access methods other than Queue use standard read/write locks
+in a simple multiple-reader/single writer page-locking scheme. An
+operation that returns data (for example, m4_ref(dbh_get) or
+m4_ref(dbc_get)) obtains a read lock on all the pages accessed while
+locating the requested record. When an update operation is requested
+(for example, m4_ref(dbh_put) or m4_ref(dbc_del)), the page containing
+the updated (or new) data is write-locked. As read-modify-write cycles
+are quite common and are deadlock-prone under normal circumstances, the
+m4_db interfaces allow the application to specify the m4_ref(DB_RMW)
+flag, which causes operations to immediately obtain a write lock, even
+though they are only reading the data. Although this may reduce
+concurrency somewhat, it reduces the probability of deadlock. In the
+presence of transactions, page locks are held until transaction commit.])
+
+m4_p([dnl
+The Queue access method does not hold long-term page locks. Instead,
+page locks are held only long enough to locate records or to change
+metadata on a page, and record locks are held for the appropriate
+duration. In the presence of transactions, record locks are held until
+transaction commit. For m4_db operations, record locks are held until
+operation completion; for m4_ref(Dbc) operations, record locks are held
+until subsequent records are returned or the cursor is closed.])
+
+m4_p([dnl
+Under non-transaction operations, the access methods do not normally
+hold locks across calls to the m4_db interfaces. The one exception to
+this rule is when cursors are used. Because cursors maintain a position
+in a file, they must hold locks across calls; in fact, they will hold
+a lock until the cursor is closed.])
+
+m4_p([dnl
+In this mode, the assignment of locker IDs to m4_ref(Db) and cursor
+handles is complicated. If the m4_ref(DB_THREAD) option was specified
+when the m4_ref(Db) handle was opened, each use of a m4_ref(Db) has its
+own unique locker ID, and each cursor is assigned its own unique locker
+ID when it is created, so m4_ref(Db) handle and cursor operations can
+all conflict with one another. (This is because when m4_db handles
+may be shared by multiple threads of control the m4_db library cannot
+identify which operations are performed by which threads of control,
+and it must ensure that two different threads of control are not
+simultaneously modifying the same data structure. By assigning each
+m4_ref(Db) handle and cursor its own locker, two threads of control
+sharing a handle cannot inadvertently interfere with each other.)])
+
+m4_p([dnl
+This has important implications. If a single thread of control opens
+two cursors, uses a combination of cursor and non-cursor operations, or
+begins two separate transactions, the operations are performed on behalf
+of different lockers. Conflicts that arise between these different
+lockers may not cause actual deadlocks, but can, in fact, permanently
+block the thread of control. For example, assume that an application
+creates a cursor and uses it to read record A. Now, assume a second
+cursor is opened, and the application attempts to write record A using
+the second cursor. Unfortunately, the first cursor has a read lock, so
+the second cursor cannot obtain its write lock. However, that read lock
+is held by the same thread of control, so the read lock can never be
+released if we block waiting for the write lock. This might appear to
+be a deadlock from the application's perspective, but m4_db cannot
+identify it as such because it has no knowledge of which lockers belong
+to which threads of control. For this reason, application designers
+are encouraged to close cursors as soon as they are done with them.])
+
+m4_p([dnl
+If the m4_ref(DB_THREAD) option was not specified when the m4_ref(Db)
+handle was opened, all uses of the m4_ref(Db) handle and all cursors
+created using that handle will use the same locker ID for all
+operations. In this case, if a single thread of control opens two
+cursors or uses a combination of cursor and non-cursor operations, these
+operations are performed on behalf of the same locker, and so cannot
+deadlock or block the thread of control.])
+
+m4_p([dnl
+Complicated operations that require multiple cursors (or combinations
+of cursor and non-cursor operations) can be performed in two ways.
+First, they may be performed within a transaction, in which case all
+operations lock on behalf of the designated transaction. Second, they
+may be performed using a local m4_ref(Db) handle, although, as
+m4_ref(dbh_open) operations are relatively slow, this may not be a good
+idea. Finally, the m4_ref(dbc_dup) function duplicates a cursor, using
+the same locker ID as the originating cursor. There is no way to
+achieve this duplication functionality through the m4_ref(Db) handle
+calls, but any m4_ref(Db) call can be implemented by one or more calls
+through a cursor.])
+
+m4_p([dnl
+When the access methods use transactions, many of these problems disappear.
+The transaction ID is used as the locker ID for all operations performed
+on behalf of the transaction. This means that the application may open
+multiple cursors on behalf of the same transaction and these cursors will
+all share a common locker ID. This is safe because transactions cannot
+span threads of control, so the library knows that two cursors in the same
+transaction cannot modify the database concurrently.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/lock/cam_conv.so b/db/docs_src/ref/lock/cam_conv.so
new file mode 100644
index 000000000..5c248f7b4
--- /dev/null
+++ b/db/docs_src/ref/lock/cam_conv.so
@@ -0,0 +1,48 @@
+m4_comment([$Id: cam_conv.so,v 10.14 2003/10/18 19:16:02 bostic Exp $])
+
+m4_ref_title(Locking Subsystem,
+ m4_cam locking conventions,
+ m4_cam @locking conventions, lock/twopl, lock/am_conv)
+
+m4_p([dnl
+The m4_cam product has a simple set of conventions for locking. It
+provides multiple-reader/single-writer semantics, but not per-page
+locking or transaction recoverability. As such, it does its locking
+entirely in the m4_db interface layer.])
+
+m4_p([dnl
+The object it locks is the file, identified by its unique file number.
+The locking matrix is not one of the two standard lock modes, instead,
+we use a four-lock set, consisting of the following:])
+
+m4_tagbegin
+m4_tag(DB_LOCK_NG, [not granted (always 0)])
+m4_tagns(DB_LOCK_READ, [read (shared)])
+m4_tagns(DB_LOCK_WRITE, [write (exclusive)])
+m4_tagns(DB_LOCK_IWRITE, [intention-to-write (shared with NG and READ, but conflicts with WRITE and IWRITE)])
+m4_tagend
+
+m4_p([dnl
+The IWRITE lock is used for cursors that will be used for updating
+(IWRITE locks are implicitly obtained for write operations through the
+m4_db handles, for example, m4_ref(dbh_put) or m4_ref(dbh_del)). While
+the cursor is reading, the IWRITE lock is held; but as soon as the
+cursor is about to modify the database, the IWRITE is upgraded to a
+WRITE lock. This upgrade blocks until all readers have exited the
+database. Because only one IWRITE lock is allowed at any one time, no
+two cursors can ever try to upgrade to a WRITE lock at the same time,
+and therefore deadlocks are prevented, which is essential because m4_cam
+does not include deadlock detection and recovery.])
+
+m4_p([dnl
+Applications that need to lock compatibly with m4_cam must obey the
+following rules:])
+
+m4_nlistbegin
+m4_nlist([Use only lock modes DB_LOCK_NG, DB_LOCK_READ, DB_LOCK_WRITE,
+DB_LOCK_IWRITE.])
+m4_nlist([Never attempt to acquire a WRITE lock on an object that is
+already locked with a READ lock.])
+m4_nlistend
+
+m4_page_footer
diff --git a/db/docs_src/ref/lock/config.so b/db/docs_src/ref/lock/config.so
new file mode 100644
index 000000000..102901ad3
--- /dev/null
+++ b/db/docs_src/ref/lock/config.so
@@ -0,0 +1,35 @@
+m4_comment([$Id: config.so,v 10.21 2003/10/18 19:16:02 bostic Exp $])
+
+m4_ref_title(Locking Subsystem,
+ Configuring locking, @locking configuration, lock/intro, lock/max)
+
+m4_p([dnl
+The m4_refT(dbenv_set_lk_detect) specifies that the deadlock detector
+should be run whenever a lock is about to block. This option provides
+for rapid detection of deadlocks at the expense of potentially frequent
+invocations of the deadlock detector. On a fast processor with a highly
+contentious application where response time is critical, this is a good
+choice. An option argument to the m4_refT(dbenv_set_lk_detect)
+indicates which lock requests should be rejected.])
+
+m4_p([dnl
+In general, when applications are not specifying lock and transaction
+timeout values, the m4_ref(DB_LOCK_DEFAULT) option is probably the
+correct first choice, and other options should only be selected based
+on evidence that they improve transaction throughput. If an application
+has long-running transactions, m4_ref(DB_LOCK_YOUNGEST) will guarantee
+that transactions eventually complete, but it may do so at the expense
+of a large number of lock request rejections (and therefore, transaction
+aborts).])
+
+m4_p([dnl
+The alternative to using the m4_refT(dbenv_set_lk_detect) is to
+explicitly perform deadlock detection using the m4_db
+m4_refT(lock_detect).])
+
+m4_p([dnl
+The m4_refT(dbenv_set_lk_conflicts) allows you to specify your own
+locking conflicts matrix. This is an advanced configuration option,
+and is almost never necessary.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/lock/dead.so b/db/docs_src/ref/lock/dead.so
new file mode 100644
index 000000000..2bc6812cf
--- /dev/null
+++ b/db/docs_src/ref/lock/dead.so
@@ -0,0 +1,77 @@
+m4_comment([$Id: dead.so,v 10.21 2005/12/02 17:27:50 alanb Exp $])
+
+m4_ref_title(Locking Subsystem,
+ Deadlock detection, @deadlocks, lock/stdmode, lock/timeout)
+
+m4_p([dnl
+Practically any application that uses locking may deadlock. The
+exceptions to this rule are when all the threads of control accessing
+the database are read-only or when the m4_cam product is used; the
+m4_cam product guarantees deadlock-free operation at the expense of
+reduced concurrency. While there are data access patterns that are
+deadlock free (for example, an application doing nothing but overwriting
+fixed-length records in an already existing database), they are
+extremely rare.])
+
+m4_p([dnl
+When a deadlock exists in the system, all the threads of control
+involved in the deadlock are, by definition, waiting on a lock. The
+deadlock detector examines the state of the lock manager and identifies
+a deadlock, and selects one of the lock requests to reject. (See
+m4_link(M4RELDIR/ref/lock/config, [Configuring locking]) for a
+discussion of how a participant is selected). The m4_ref(lock_get) or
+m4_ref(lock_vec) call for which the selected participant is waiting then
+returns a m4_ref(DB_LOCK_DEADLOCK) error. When using the m4_db access
+methods, this error return is propagated back through the m4_db database
+handle method to the calling application.])
+
+m4_p([dnl
+The deadlock detector identifies deadlocks by looking for a cycle in
+what is commonly referred to as its "waits-for" graph. More precisely,
+the deadlock detector reads through the lock table, and reviews each
+lock object currently locked. Each object has lockers that currently
+hold locks on the object and possibly a list of lockers waiting for a
+lock on the object. Each object's list of waiting lockers defines a
+partial ordering. That is, for a particular object, every waiting
+locker comes after every holding locker because that holding locker must
+release its lock before the waiting locker can make forward progress.
+Conceptually, after each object has been examined, the partial orderings
+are topologically sorted. If this topological sort reveals any cycles,
+the lockers forming the cycle are involved in a deadlock. One of the
+lockers is selected for rejection.])
+
+m4_p([dnl
+It is possible that rejecting a single lock request involved in a
+deadlock is not enough to allow other lockers to make forward progress.
+Unfortunately, at the time a lock request is selected for rejection,
+there is not enough information available to determine whether rejecting
+that single lock request will allow forward progress or not. Because
+most applications have few deadlocks, m4_db takes the conservative
+approach, rejecting as few requests as may be necessary to resolve the
+existing deadlocks. In particular, for each unique cycle found in the
+waits-for graph described in the previous paragraph, only one lock
+request is selected for rejection. However, if there are multiple
+cycles, one lock request from each cycle is selected for rejection.
+Only after the enclosing transactions have received the lock request
+rejection return and aborted their transactions can it be determined
+whether it is necessary to reject additional lock requests in order to
+allow forward progress.])
+
+m4_p([dnl
+The m4_ref(db_deadlock) utility performs deadlock detection by calling
+the underlying m4_db m4_refT(lock_detect) at regular intervals
+(m4_ref(lock_detect) runs a single iteration of the m4_db deadlock
+detector). Alternatively, applications can create their own deadlock
+utility or thread by calling the m4_refT(lock_detect) directly, or by
+using the m4_refT(dbenv_set_lk_detect) to configure m4_db to
+automatically run the deadlock detector whenever there is a conflict
+over a lock. The tradeoffs between using the m4_ref(lock_detect) and
+m4_refT(dbenv_set_lk_detect)s is that automatic deadlock detection will
+resolve deadlocks more quickly (because the deadlock detector runs
+as soon as the lock request blocks), however, automatic deadlock
+detection often runs the deadlock detector when there is no need for
+it, and for applications with large numbers of locks and/or where many
+operations block temporarily on locks but are soon able to proceed,
+automatic detection can decrease performance.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/lock/deaddbg.so b/db/docs_src/ref/lock/deaddbg.so
new file mode 100644
index 000000000..c91d039d1
--- /dev/null
+++ b/db/docs_src/ref/lock/deaddbg.so
@@ -0,0 +1,173 @@
+m4_comment([$Id: deaddbg.so,v 10.5 2005/12/02 17:27:50 alanb Exp $])
+
+m4_ref_title(Locking Subsystem,
+ Deadlock debugging,, lock/timeout, lock/page)
+
+m4_p([dnl
+An occasional debugging problem in m4_db applications is unresolvable
+deadlock. The output of the m4_option(Co) flags of the m4_ref(db_stat)
+utility can be used to detect and debug these problems. The following
+is a typical example of the output of this utility:])
+
+m4_indent([dnl
+Locks grouped by object
+Locker Mode Count Status ----------- Object ----------
+ 1 READ 1 HELD a.db handle 0
+80000004 WRITE 1 HELD a.db page 3])
+
+m4_p([dnl
+In this example, we have opened a database and stored a single key/data
+pair in it. Because we have a database handle open, we have a read lock
+on that database handle. The database handle lock is the read lock
+labeled m4_italic(handle). (We can normally ignore handle locks for
+the purposes of database debugging, as they will only conflict with
+other handle operations, for example, an attempt to remove the database
+will block because we are holding the handle locked, but reading and
+writing the database will not conflict with the handle lock.)])
+
+m4_p([dnl
+It is important to note that locker IDs are 32-bit unsigned integers,
+and are divided into two name spaces. Locker IDs with the high bit set
+(that is, values 80000000 or higher), are locker IDs associated with
+transactions. Locker IDs without the high bit set are locker IDs that
+are not associated with a transaction. Locker IDs associated with
+transactions map one-to-one with the transaction, that is, a transaction
+never has more than a single locker ID, and all of the locks acquired
+by the transaction will be acquired on behalf of the same locker ID.])
+
+m4_p([dnl
+We also hold a write lock on the database page where we stored the new
+key/data pair. The page lock is labeled m4_italic(page) and is on page
+number 3. If we were to put an additional key/data pair in the
+database, we would see the following output:])
+
+m4_indent([dnl
+Locks grouped by object
+Locker Mode Count Status ----------- Object ----------
+80000004 WRITE 2 HELD a.db page 3
+ 1 READ 1 HELD a.db handle 0])
+
+m4_p([dnl
+That is, we have acquired a second reference count to page number 3, but
+have not acquired any new locks. If we add an entry to a different page
+in the database, we would acquire additional locks:])
+
+m4_indent([dnl
+Locks grouped by object
+Locker Mode Count Status ----------- Object ----------
+ 1 READ 1 HELD a.db handle 0
+80000004 WRITE 2 HELD a.db page 3
+80000004 WRITE 1 HELD a.db page 2])
+
+m4_p([dnl
+Here's a simple example of one lock blocking another one:])
+
+m4_indent([dnl
+Locks grouped by object
+Locker Mode Count Status ----------- Object ----------
+80000004 WRITE 1 HELD a.db page 2
+80000005 WRITE 1 WAIT a.db page 2
+ 1 READ 1 HELD a.db handle 0
+80000004 READ 1 HELD a.db page 1])
+
+m4_p([dnl
+In this example, there are two different transactional lockers (80000004 and
+80000005). Locker 80000004 is holding a write lock on page 2, and
+locker 80000005 is waiting for a write lock on page 2. This is not a
+deadlock, because locker 80000004 is not blocked on anything.
+Presumably, the thread of control using locker 80000004 will proceed,
+eventually release its write lock on page 2, at which point the thread
+of control using locker 80000005 can also proceed, acquiring a write
+lock on page 2.])
+
+m4_p([dnl
+If lockers 80000004 and 80000005 are not in different threads of
+control, the result would be m4_italic(self deadlock). Self deadlock
+is not a true deadlock, and won't be detected by the m4_db deadlock
+detector. It's not a true deadlock because, if work could continue to
+be done on behalf of locker 80000004, then the lock would eventually be
+released, and locker 80000005 could acquire the lock and itself proceed.
+So, the key element is that the thread of control holding the lock
+cannot proceed because it is the same thread as is blocked waiting on the
+lock.])
+
+m4_p([dnl
+Here's an example of three transactions reaching true deadlock. First,
+three different threads of control opened the database, acquiring three
+database handle read locks.])
+
+m4_indent([dnl
+Locks grouped by object
+Locker Mode Count Status ----------- Object ----------
+ 1 READ 1 HELD a.db handle 0
+ 3 READ 1 HELD a.db handle 0
+ 5 READ 1 HELD a.db handle 0])
+
+m4_p([dnl
+The three threads then each began a transaction, and put a key/data pair
+on a different page:])
+
+m4_indent([dnl
+Locks grouped by object
+Locker Mode Count Status ----------- Object ----------
+80000008 WRITE 1 HELD a.db page 4
+
+ 1 READ 1 HELD a.db handle 0
+ 3 READ 1 HELD a.db handle 0
+ 5 READ 1 HELD a.db handle 0
+
+80000006 READ 1 HELD a.db page 1
+80000007 READ 1 HELD a.db page 1
+80000008 READ 1 HELD a.db page 1
+
+80000006 WRITE 1 HELD a.db page 2
+
+80000007 WRITE 1 HELD a.db page 3])
+
+m4_p([dnl
+The thread using locker 80000006 put a new key/data pair on page 2, the
+thread using locker 80000007, on page 3, and the thread using locker
+80000008 on page 4. Because the database is a 2-level Btree, the tree
+was searched, and so each transaction acquired a read lock on the Btree
+root page (page 1) as part of this operation.])
+
+m4_p([dnl
+The three threads then each attempted to put a second key/data pair on
+a page currently locked by another thread. The thread using locker
+80000006 tried to put a key/data pair on page 3, the thread using locker
+80000007 on page 4, and the thread using locker 80000008 on page 2:])
+
+m4_indent([dnl
+Locks grouped by object
+Locker Mode Count Status ----------- Object ----------
+80000008 WRITE 1 HELD a.db page 4
+80000007 WRITE 1 WAIT a.db page 4
+
+ 1 READ 1 HELD a.db handle 0
+ 3 READ 1 HELD a.db handle 0
+ 5 READ 1 HELD a.db handle 0
+
+80000006 READ 2 HELD a.db page 1
+80000007 READ 2 HELD a.db page 1
+80000008 READ 2 HELD a.db page 1
+
+80000006 WRITE 1 HELD a.db page 2
+80000008 WRITE 1 WAIT a.db page 2
+
+80000007 WRITE 1 HELD a.db page 3
+80000006 WRITE 1 WAIT a.db page 3])
+
+m4_p([dnl
+Now, each of the threads of control is blocked, waiting on a different
+thread of control.
+The thread using locker 80000007 is blocked by
+the thread using locker 80000008, due to the lock on page 4.
+The thread using locker 80000008 is blocked by
+the thread using locker 80000006, due to the lock on page 2.
+And the thread using locker 80000006 is blocked by
+the thread using locker 80000007, due to the lock on page 3.
+Since none of the threads of control can make
+progress, one of them will have to be killed in order to resolve the
+deadlock.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/lock/intro.so b/db/docs_src/ref/lock/intro.so
new file mode 100644
index 000000000..d75c40651
--- /dev/null
+++ b/db/docs_src/ref/lock/intro.so
@@ -0,0 +1,96 @@
+m4_comment([$Id: intro.so,v 10.27 2006/11/13 18:05:02 bostic Exp $])
+
+m4_ref_title(Locking Subsystem,
+ Introduction to the locking subsystem,
+ introduction to the @locking subsystem, program/faq, lock/config)
+
+m4_p([dnl
+The locking subsystem provides interprocess and intraprocess concurrency
+control mechanisms. Although the lock system is used extensively by
+the m4_db access methods and transaction system, it may also be used as
+a standalone subsystem to provide concurrency control to any set of
+designated resources.])
+
+m4_p([dnl
+The Lock subsystem is created, initialized, and opened by calls to
+m4_ref(dbenv_open) with the m4_ref(DB_INIT_LOCK) or m4_ref(DB_INIT_CDB)
+flags specified.])
+
+m4_p([dnl
+The m4_refT(lock_vec) is used to acquire and release locks. The
+m4_refT(lock_vec) performs any number of lock operations atomically. It
+also provides the capability to release all locks held by a particular
+locker and release all the locks on a particular object. (Performing
+multiple lock operations atomically is useful in performing Btree
+traversals -- you want to acquire a lock on a child page and once
+acquired, immediately release the lock on its parent. This is
+traditionally referred to as m4_italic(lock-coupling)). Two additional
+methods, m4_ref(lock_get) and m4_ref(lock_put), are provided. These
+methods are simpler front-ends to the m4_ref(lock_vec) functionality,
+where m4_ref(lock_get) acquires a lock, and m4_ref(lock_put) releases a
+lock that was acquired using m4_ref(lock_get) or m4_ref(lock_vec). All
+locks explicitly requested by an application should be released via
+calls to m4_ref(lock_put) or m4_ref(lock_vec). Using m4_ref(lock_vec)
+instead of separate calls to m4_ref(lock_put) and m4_ref(lock_get) also
+reduces the synchronization overhead between multiple threads or
+processes. The three methods are fully compatible, and may be used
+interchangeably.])
+
+m4_p([dnl
+Applications must specify lockers and lock objects appropriately. When
+used with the m4_db access methods, lockers and objects are handled
+completely internally, but an application using the lock manager
+directly must either use the same conventions as the access methods or
+define its own convention to which it adheres. If an application is
+using the access methods with locking at the same time that it is
+calling the lock manager directly, the application must follow a
+convention that is compatible with the access methods' use of the
+locking subsystem. See m4_link(M4RELDIR/ref/lock/am_conv, [Access
+method locking conventions]) for more information.])
+
+m4_p([dnl
+The m4_ref(lock_id) function returns a unique ID that may safely be used
+as the locker parameter to the m4_refT(lock_vec). The access methods
+use m4_ref(lock_id) to generate unique lockers for the cursors
+associated with a database.])
+
+m4_p([dnl
+The m4_ref(lock_detect) function provides the programmatic interface to
+the m4_db deadlock detector. Whenever two threads of control issue lock
+requests concurrently, the possibility for deadlock arises. A deadlock
+occurs when two or more threads of control are blocked, waiting for
+actions that another one of the blocked threads must take. For example,
+assume that threads A and B have each obtained read locks on object X.
+Now suppose that both threads want to obtain write locks on object X.
+Neither thread can be granted its write lock (because of the other
+thread's read lock). Both threads block and will never unblock because
+the event for which they are waiting can never happen.])
+
+m4_p([dnl
+The deadlock detector examines all the locks held in the environment,
+and identifies situations where no thread can make forward progress.
+It then selects one of the participants in the deadlock (according to
+the argument that was specified to m4_ref(dbenv_set_lk_detect)), and
+forces it to return the value m4_ref(DB_LOCK_DEADLOCK), which indicates
+that a deadlock occurred. The thread receiving such an error must
+release all of its locks and undo any incomplete modifications to the
+locked resource. Locks are typically released, and modifications
+undone, by closing any cursors involved in the operation and aborting
+any transaction enclosing the operation. The operation may optionally
+be retried.])
+
+m4_p([dnl
+The m4_ref(lock_stat) function returns information about the status of
+the lock subsystem. It is the programmatic interface used by the
+m4_ref(db_stat) utility.])
+
+m4_p([dnl
+The locking subsystem is closed by the call to m4_ref(dbenv_close).])
+
+m4_p([dnl
+Finally, the entire locking subsystem may be discarded using the
+m4_refT(dbenv_remove).])
+
+include(lock/m4.methods)
+
+m4_page_footer
diff --git a/db/docs_src/ref/lock/max.so b/db/docs_src/ref/lock/max.so
new file mode 100644
index 000000000..a53eda249
--- /dev/null
+++ b/db/docs_src/ref/lock/max.so
@@ -0,0 +1,114 @@
+m4_comment([$Id: max.so,v 10.11 2006/01/05 16:51:59 bostic Exp $])
+
+m4_ref_title(Locking Subsystem,
+ Configuring locking: sizing the system,
+ sizing the @locking subsystem, lock/config, lock/stdmode)
+
+m4_p([dnl
+The lock system is sized using the following three methods:])
+
+m4_indent([dnl
+m4_ref(dbenv_set_lk_max_locks)
+m4_ref(dbenv_set_lk_max_lockers)
+m4_ref(dbenv_set_lk_max_objects)])
+
+m4_p([dnl
+The m4_ref(dbenv_set_lk_max_locks), m4_ref(dbenv_set_lk_max_lockers),
+and m4_refT(dbenv_set_lk_max_objects)s specify the maximum number of
+locks, lockers, and locked objects supported by the lock subsystem,
+respectively. The maximum number of locks is the number of locks that
+can be simultaneously requested in the system. The maximum number of
+lockers is the number of lockers that can simultaneously request locks
+in the system. The maximum number of lock objects is the number of
+objects that can simultaneously be locked in the system. Selecting
+appropriate values requires an understanding of your application and its
+databases. If the values are too small, requests for locks in an
+application will fail. If the values are too large, the locking
+subsystem will consume more resources than is necessary. It is better
+to err in the direction of allocating too many locks, lockers, and
+objects because increasing the number of locks does not require large
+amounts of additional resources. The default values are 1000 of
+each type of object.])
+
+m4_p([dnl
+When configuring a m4_cam application, the number of lock objects needed
+is two per open database (one for the database lock, and one for the
+cursor lock when the m4_ref(DB_CDB_ALLDB) option is not specified). The
+number of locks needed is one per open database handle plus one per
+simultaneous cursor or non-cursor operation.])
+
+m4_p([dnl
+Configuring a m4_tam application is more complicated. The recommended
+algorithm for selecting the maximum number of locks, lockers, and lock
+objects is to run the application under stressful conditions and then
+review the lock system's statistics to determine the maximum number of
+locks, lockers, and lock objects that were used. Then, double these
+values for safety. However, in some large applications, finer
+granularity of control is necessary in order to minimize the size of the
+Lock subsystem.])
+
+m4_p([dnl
+The maximum number of lockers can be estimated as follows:])
+
+m4_bulletbegin
+m4_bullet([dnl
+If the database environment is using transactions, the maximum number
+of lockers can be estimated by adding the number of simultaneously
+active non-transactional cursors open database handles to the number of
+simultaneously active transactions and child transactions (where a child
+transaction is active until it commits or aborts, not until its parent
+commits or aborts).])
+m4_bullet([dnl
+If the database environment is not using transactions, the maximum
+number of lockers can be estimated by adding the number of
+simultaneously active non-transactional cursors and open database
+handles to the number of simultaneous non-cursor operations.])
+m4_bulletend
+
+m4_p([dnl
+The maximum number of lock objects needed for a single database
+operation can be estimated as follows:])
+m4_bulletbegin
+m4_bullet([dnl
+For Btree and Recno access methods, you will need one lock object per
+level of the database tree, at a minimum. (Unless keys are quite large
+with respect to the page size, neither Recno nor Btree database trees
+should ever be deeper than five levels.) Then, you will need one lock
+object for each leaf page of the database tree that will be
+simultaneously accessed.])
+m4_bullet([dnl
+For the Queue access method, you will need one lock object per record
+that is simultaneously accessed. To this, add one lock object per page
+that will be simultaneously accessed. (Because the Queue access method
+uses fixed-length records and the database page size is known, it is
+possible to calculate the number of pages -- and, therefore, the lock
+objects -- required.) Deleted records skipped by a m4_ref(DB_NEXT) or
+m4_ref(DB_PREV) operation do not require a separate lock object.
+Further, if your application is using transactions, no database
+operation will ever use more than three lock objects at any time.])
+m4_bullet([dnl
+For the Hash access method, you only need a single lock object.])
+m4_bulletend
+
+m4_p([dnl
+For all access methods, you should then add an additional lock object
+per database for the database's metadata page.])
+
+m4_p([dnl
+Note that transactions accumulate locks over the transaction lifetime,
+and the lock objects required by a single transaction is the total lock
+objects required by all of the database operations in the transaction.
+However, a database page (or record, in the case of the Queue access
+method), that is accessed multiple times within a transaction only
+requires a single lock object for the entire transaction.])
+
+m4_p([dnl
+The maximum number of locks required by an application cannot be easily
+estimated. It is possible to calculate a maximum number of locks by
+multiplying the maximum number of lockers, times the maximum number of
+lock objects, times two (two for the two possible lock modes for each
+object, read and write). However, this is a pessimal value, and real
+applications are unlikely to actually need that many locks. Reviewing
+the Lock subsystem statistics is the best way to determine this value.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/lock/nondb.so b/db/docs_src/ref/lock/nondb.so
new file mode 100644
index 000000000..7d0145fbc
--- /dev/null
+++ b/db/docs_src/ref/lock/nondb.so
@@ -0,0 +1,43 @@
+m4_comment([$Id: nondb.so,v 10.15 2001/05/22 19:39:31 bostic Exp $])
+
+m4_ref_title(Locking Subsystem,
+ Locking and non-m4_db applications,
+ @locking and non-m4_db applications, lock/am_conv, log/intro)
+
+m4_p([dnl
+The Lock subsystem is useful outside the context of m4_db. It can be
+used to manage concurrent access to any collection of either ephemeral
+or persistent objects. That is, the lock region can persist across
+invocations of an application, so it can be used to provide long-term
+locking (for example, conference room scheduling).])
+
+m4_p([dnl
+In order to use the locking subsystem in such a general way, the
+applications must adhere to a convention for identifying objects and
+lockers. Consider a conference room scheduling problem, in which there
+are three conference rooms scheduled in half-hour intervals. The
+scheduling application must then select a way to identify each
+conference room/time slot combination. In this case, we could describe
+the objects being locked as bytestrings consisting of the conference
+room name, the date when it is needed, and the beginning of the
+appropriate half-hour slot.])
+
+m4_p([dnl
+Lockers are 32-bit numbers, so we might choose to use the User ID of
+the individual running the scheduling program. To schedule half-hour
+slots, all the application needs to do is issue a m4_ref(lock_get) call
+for the appropriate locker/object pair. To schedule a longer slot, the
+application needs to issue a m4_ref(lock_vec) call, with one
+m4_ref(lock_get) operation per half-hour -- up to the total length. If
+the m4_ref(lock_vec) call fails, the application would have to release
+the parts of the time slot that were obtained.])
+
+m4_p([dnl
+To cancel a reservation, the application would make the appropriate
+m4_ref(lock_put) calls. To reschedule a reservation, the
+m4_ref(lock_get) and m4_ref(lock_put) calls could all be made inside of
+a single m4_ref(lock_vec) call. The output of m4_ref(lock_stat) could
+be post-processed into a human-readable schedule of conference room
+use.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/lock/notxn.so b/db/docs_src/ref/lock/notxn.so
new file mode 100644
index 000000000..762251067
--- /dev/null
+++ b/db/docs_src/ref/lock/notxn.so
@@ -0,0 +1,35 @@
+m4_comment([$Id: notxn.so,v 10.15 2001/05/22 19:39:31 bostic Exp $])
+
+m4_ref_title(Locking Subsystem,
+ Locking without transactions,
+ @locking without transactions, lock/page, lock/twopl)
+
+m4_p([dnl
+If an application runs with locking specified, but not transactions (for
+example, m4_ref(dbenv_open) is called with m4_ref(DB_INIT_LOCK) or
+m4_ref(DB_INIT_CDB) specified, but not m4_ref(DB_INIT_TXN)), locks are
+normally acquired during each m4_db operation and released before the
+operation returns to the caller. The only exception is in the case of
+cursor operations. Cursors identify a particular position in a file.
+For this reason, cursors must retain read locks across cursor calls to
+make sure that the position is uniquely identifiable during a subsequent
+cursor call, and so that an operation using m4_ref(DB_CURRENT) will
+always refer to the same record as a previous cursor call. These cursor
+locks cannot be released until the cursor is either repositioned and a
+new cursor lock established (for example, using the m4_ref(DB_NEXT)
+or m4_ref(DB_SET) flags), or the cursor is closed. As a result,
+application writers are encouraged to close cursors as soon as
+possible.])
+
+m4_p([dnl
+It is important to realize that concurrent applications that use locking
+must ensure that two concurrent threads do not block each other.
+However, because Btree and Hash access method page splits can occur at
+any time, there is virtually no way to guarantee that an application
+that writes the database cannot deadlock. Applications running without
+the protection of transactions may deadlock, and can leave the database
+in an inconsistent state when they do so. Applications that need
+concurrent access, but not transactions, are more safely implemented
+using the m4_cam Product.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/lock/page.so b/db/docs_src/ref/lock/page.so
new file mode 100644
index 000000000..b8780dcff
--- /dev/null
+++ b/db/docs_src/ref/lock/page.so
@@ -0,0 +1,91 @@
+m4_comment([$Id: page.so,v 10.19 2002/06/01 23:42:12 bostic Exp $])
+
+m4_ref_title(Locking Subsystem, Locking granularity,
+ [page-level @locking, locking granularity], lock/deaddbg, lock/notxn)
+
+m4_p([dnl
+With the exception of the Queue access method, the m4_db access methods
+do page-level locking. The size of pages in a database may be set when
+the database is created by calling the m4_refT(dbh_set_pagesize). If
+not specified by the application, m4_db selects a page size that will
+provide the best I/O performance by setting the page size equal to the
+block size of the underlying file system. Selecting a smaller page size
+can result in increased concurrency for some applications.])
+
+m4_p([dnl
+In the Btree access method, m4_db uses a technique called lock coupling
+to improve concurrency. The traversal of a Btree requires reading a
+page, searching that page to determine which page to search next, and
+then repeating this process on the next page. Once a page has been
+searched, it will never be accessed again for this operation, unless a
+page split is required. To improve concurrency in the tree, once the
+next page to read/search has been determined, that page is locked and
+then the original page lock is released atomically (that is, without
+relinquishing control of the lock manager). When page splits become
+necessary, write locks are reacquired.])
+
+m4_p([dnl
+Because the Recno access method is built upon Btree, it also uses lock
+coupling for read operations. However, because the Recno access method
+must maintain a count of records on its internal pages, it cannot
+lock-couple during write operations. Instead, it retains write locks
+on all internal pages during every update operation. For this reason,
+it is not possible to have high concurrency in the Recno access method
+in the presence of write operations.])
+
+m4_p([dnl
+The Queue access method uses only short-term page locks. That is, a page
+lock is released prior to requesting another page lock. Record locks are
+used for transaction isolation. The provides a high degree of concurrency
+for write operations. A metadata page is used to keep track of the head
+and tail of the queue. This page is never locked during other locking or
+I/O operations.])
+
+m4_p([dnl
+The Hash access method does not have such traversal issues, but it must
+always refer to its metadata while computing a hash function because it
+implements dynamic hashing. This metadata is stored on a special page
+in the hash database. This page must therefore be read-locked on every
+operation. Fortunately, it needs to be write-locked only when new pages
+are allocated to the file, which happens in three cases:])
+
+m4_bulletbegin
+m4_bullet([a hash bucket becomes full and needs to split])
+m4_bullet([a key or data item is too large to fit on a normal page])
+m4_bullet([dnl
+the number of duplicate items for a fixed key becomes so large that they
+are moved to an auxiliary page])
+m4_bulletend
+
+m4_p([dnl
+In this case, the access method must obtain a write lock on the metadata
+page, thus requiring that all readers be blocked from entering the tree
+until the update completes.])
+
+m4_p([dnl
+Finally, when traversing duplicate data items for a key, the lock on
+the key value also acts as a lock on all duplicates of that key.
+Therefore, two conflicting threads of control cannot access the same
+duplicate set simultaneously.])
+
+m4_ignore([dnl
+As the Hash access method implements dynamic hashing, it must always refer
+to its metadata while computing a hash function. This metadata is
+stored on a special page in the hash database. The hash access uses a
+similar lock coupling technique to coordinate access between its metadata
+page and the remaining buckets in the database. The metadata page is
+read-locked in order to determine the next bucket to traverse. That
+bucket is then locked, and the metadata page lock is atomically released.
+If it is later necessary to write lock the metadata page, the Hash method
+uses an algorithm similar to that used for Btree splits. It releases its
+bucket lock, obtains a write lock on the metadata page and then
+reacquires the lock on the appropriate bucket (which may have changed
+while the lock was released). The conditions under which this scenario
+occurs are: 1) a hash bucket becomes full and needs to split, 2) a key
+or data item is too large to fit on a normal page, and 3) the number of
+duplicate items for a fixed key becomes sufficiently large that they are
+moved to an auxiliary page. This algorithm provides much better
+concurrency and fewer deadlocks than previous algorithms, which required
+that the metadata page remain locked for the duration of every operation.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/lock/stdmode.so b/db/docs_src/ref/lock/stdmode.so
new file mode 100644
index 000000000..d6a8a9f50
--- /dev/null
+++ b/db/docs_src/ref/lock/stdmode.so
@@ -0,0 +1,55 @@
+m4_comment([$Id: stdmode.so,v 10.26 2001/05/22 19:39:32 bostic Exp $])
+
+m4_ref_title(Locking Subsystem,
+ Standard lock modes, standard @lock modes, lock/max, lock/dead)
+
+m4_p([dnl
+The m4_db locking protocol is described by a conflict matrix. A
+conflict matrix is an NxN array in which N is the number of different
+lock modes supported, and the (i, j)th entry of the array indicates
+whether a lock of mode i conflicts with a lock of mode j. In addition,
+m4_db defines the type m4_arg(db_lockmode_t), which is the type of a
+lock mode within a conflict matrix.])
+
+m4_p([dnl
+The following is an example of a conflict matrix. The actual conflict
+matrix used by m4_db to support the underlying access methods is more
+complicated, but this matrix shows the lock mode relationships available
+to applications using the m4_db Locking subsystem interfaces directly.])
+
+m4_tagbegin
+m4_tag(DB_LOCK_NG, [not granted (always 0)])
+m4_tagns(DB_LOCK_READ, [read (shared)])
+m4_tagns(DB_LOCK_WRITE, [write (exclusive)])
+m4_tagns(DB_LOCK_IWRITE, [intention to write (shared)])
+m4_tagns(DB_LOCK_IREAD, [intention to read (shared)])
+m4_tagns(DB_LOCK_IWR, [intention to read and write (shared)])
+m4_tagend
+
+m4_p([dnl
+In a conflict matrix, the rows indicate the lock that is held, and the
+columns indicate the lock that is requested. A 1 represents a conflict
+(that is, do not grant the lock if the indicated lock is held), and a
+0 indicates that it is OK to grant the lock.])
+
+m4_indent([dnl
+ Notheld Read Write IWrite IRead IRW
+Notheld 0 0 0 0 0 0
+Read* 0 0 1 1 0 1
+Write** 0 1 1 1 1 1
+Intent Write 0 1 1 0 0 0
+Intent Read 0 0 1 0 0 0
+Intent RW 0 1 1 0 0 0])
+
+m4_tagbegin
+m4_tag(*, [dnl
+In this case, suppose that there is a read lock held on an object. A new
+request for a read lock would be granted, but a request for a write lock
+would not.])
+
+m4_tag(**, [dnl
+In this case, suppose that there is a write lock held on an object. A
+new request for either a read or write lock would be denied.])
+m4_tagend
+
+m4_page_footer
diff --git a/db/docs_src/ref/lock/timeout.so b/db/docs_src/ref/lock/timeout.so
new file mode 100644
index 000000000..036b9a071
--- /dev/null
+++ b/db/docs_src/ref/lock/timeout.so
@@ -0,0 +1,66 @@
+m4_comment([$Id: timeout.so,v 1.9 2005/12/02 17:27:49 alanb Exp $])
+
+m4_ref_title(Locking Subsystem,
+ Deadlock detection using timers,
+ [lock @timeouts, transaction @timeouts], lock/dead, lock/deaddbg)
+
+m4_p([dnl
+Lock and transaction timeouts may be used in place of, or in addition
+to, regular deadlock detection. If lock timeouts are set, lock requests
+will return m4_ref(DB_LOCK_NOTGRANTED) from a lock call when it is
+detected that the lock's timeout has expired, that is, the lock request
+has blocked, waiting, longer than the specified timeout. If transaction
+timeouts are set, lock requests will return m4_ref(DB_LOCK_NOTGRANTED)
+from a lock call when it has been detected that the transaction has been
+active longer than the specified timeout.])
+
+m4_p([dnl
+If lock or transaction timeouts have been set, database operations will
+return m4_ref(DB_LOCK_DEADLOCK) when the lock timeout has expired or the
+transaction has been active longer than the specified timeout.
+Applications wanting to distinguish between true deadlock and timeout
+can use the m4_ref(DB_TIME_NOTGRANTED) configuration flag, which causes
+database operations to instead return m4_ref(DB_LOCK_NOTGRANTED) in the
+case of timeout.])
+
+m4_p([dnl
+As lock and transaction timeouts are only checked when lock requests
+first block or when deadlock detection is performed, the accuracy of
+the timeout depends on how often deadlock detection is performed. More
+specifically, transactions will continue to run after their timeout has
+expired if they do not block on a lock request after that time.
+A separate deadlock detection thread (or process) should always
+be used if the application depends on timeouts; otherwise, if
+there are no new blocked lock requests a pending timeout will
+never trigger.])
+
+m4_p([dnl
+If the database environment deadlock detector has been configured with
+the m4_ref(DB_LOCK_EXPIRE) option, timeouts are the only mechanism by
+which deadlocks will be broken. If the deadlock detector has been
+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.])
+
+m4_p([dnl
+Lock and transaction timeouts may be specified on a database environment
+wide basis using the m4_refT(dbenv_set_timeout). Lock timeouts may be
+specified on a per-lock request basis using the m4_refT(lock_vec). Lock
+and transaction timeouts may be specified on a per-transaction basis
+using the m4_refT(txn_set_timeout). Per-lock and per-transaction
+timeouts supersede environment wide timeouts.])
+
+m4_p([dnl
+For example, consider that the environment wide transaction timeout has
+been set to 20ms, the environment wide lock timeout has been set to
+10ms, a transaction has been created in this environment and its timeout
+value set to 8ms, and a specific lock request has been made on behalf
+of this transaction where the lock timeout was set to 4ms. By default,
+transactions in this environment will be timed out if they block waiting
+for a lock after 20ms. The specific transaction described will be timed
+out if it blocks waiting for a lock after 8ms. By default, any lock
+request in this system will be timed out if it blocks longer than 10ms,
+and the specific lock described will be timed out if it blocks longer
+than 4ms.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/lock/twopl.so b/db/docs_src/ref/lock/twopl.so
new file mode 100644
index 000000000..f745f8297
--- /dev/null
+++ b/db/docs_src/ref/lock/twopl.so
@@ -0,0 +1,45 @@
+m4_comment([$Id: twopl.so,v 10.11 2001/05/22 19:39:32 bostic Exp $])
+
+m4_ref_title(Locking Subsystem,
+ Locking with transactions: two-phase locking,
+ two-phase @locking, lock/notxn, lock/cam_conv)
+
+m4_p([dnl
+m4_db uses a locking protocol called m4_italic(two-phase locking (2PL)). This
+is the traditional protocol used in conjunction with lock-based transaction
+systems.])
+
+m4_p([dnl
+In a two-phase locking system, transactions are divided into two
+distinct phases. During the first phase, the transaction only acquires
+locks; during the second phase, the transaction only releases locks.
+More formally, once a transaction releases a lock, it may not acquire
+any additional locks. Practically, this translates into a system in
+which locks are acquired as they are needed throughout a transaction
+and retained until the transaction ends, either by committing or
+aborting. In m4_db, locks are released during m4_ref(txn_abort) or
+m4_ref(txn_commit). The only exception to this protocol occurs when we
+use lock-coupling to traverse a data structure. If the locks are held
+only for traversal purposes, it is safe to release locks before
+transactions commit or abort.])
+
+m4_p([dnl
+For applications, the implications of 2PL are that long-running
+transactions will hold locks for a long time. When designing
+applications, lock contention should be considered. In order to reduce
+the probability of deadlock and achieve the best level of concurrency
+possible, the following guidelines are helpful.])
+
+m4_nlistbegin
+m4_nlist([dnl
+When accessing multiple databases, design all transactions so that they
+access the files in the same order.])
+m4_nlist([dnl
+If possible, access your most hotly contested resources last (so that
+their locks are held for the shortest time possible).])
+m4_nlist([dnl
+If possible, use nested transactions to protect the parts of your
+transaction most likely to deadlock.])
+m4_nlistend
+
+m4_page_footer
diff --git a/db/docs_src/ref/log/config.so b/db/docs_src/ref/log/config.so
new file mode 100644
index 000000000..08ed48da8
--- /dev/null
+++ b/db/docs_src/ref/log/config.so
@@ -0,0 +1,36 @@
+m4_comment([$Id: config.so,v 10.20 2006/08/30 10:08:16 bostic Exp $])
+
+m4_ref_title(Logging Subsystem,
+ Configuring logging, @logging configuration, log/intro, log/limits)
+
+m4_p([dnl
+The aspects of logging that may be configured are the size of the
+logging subsystem's region, the size of the log files on disk and the
+size of the log buffer in memory. The m4_refT(dbenv_set_lg_regionmax)
+specifies the size of the logging subsystem's region, in bytes. The
+logging subsystem's default size is approximately 60KB. This value may
+need to be increased if a large number of files are registered with the
+m4_db log manager, for example, by opening a large number of m4_db
+database files in a transactional application.])
+
+m4_p([dnl
+The m4_refT(dbenv_set_lg_max) specifies the individual log file size for
+all the applications sharing the m4_db environment. Setting the log
+file size is largely a matter of convenience and a reflection of the
+application's preferences in backup media and frequency. However,
+setting the log file size too low can potentially cause problems because
+it would be possible to run out of log sequence numbers, which requires
+a full archival and application restart to reset. See
+m4_link(M4RELDIR/ref/log/limits, [Log file limits]) for more
+information.])
+
+m4_p([dnl
+The m4_refT(dbenv_set_lg_bsize) specifies the size of the in-memory log
+buffer, in bytes. Log information is stored in memory until the buffer
+fills up or transaction commit forces the buffer to be written to disk.
+Larger buffer sizes can significantly increase throughput in the
+presence of long-running transactions, highly concurrent applications,
+or transactions producing large amounts of data. By default, the buffer
+is approximately 32KB.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/log/intro.so b/db/docs_src/ref/log/intro.so
new file mode 100644
index 000000000..b0fda8411
--- /dev/null
+++ b/db/docs_src/ref/log/intro.so
@@ -0,0 +1,61 @@
+m4_comment([$Id: intro.so,v 10.25 2006/11/13 18:05:02 bostic Exp $])
+
+m4_ref_title(Logging Subsystem,
+ Introduction to the logging subsystem,
+ introduction to the @logging subsystem, lock/nondb, log/config)
+
+m4_p([dnl
+The Logging subsystem is the logging facility used by m4_db. It is
+largely m4_db-specific, although it is potentially useful outside of
+the m4_db package for applications wanting write-ahead logging support.
+Applications wanting to use the log for purposes other than logging file
+modifications based on a set of open file descriptors will almost
+certainly need to make source code modifications to the m4_db code
+base.])
+
+m4_p([dnl
+A log can be shared by any number of threads of control. The
+m4_refT(dbenv_open) is used to open a log. When the log is no longer
+in use, it should be closed using the m4_refT(dbenv_close).])
+
+m4_p([dnl
+Individual log entries are identified by log sequence numbers. Log
+sequence numbers are stored in an opaque object, a m4_ref(DbLsn).])
+
+m4_p([dnl
+The m4_refT(log_cursor) is used to allocate a log cursor. Log cursors
+have two methods: m4_refT(logc_get) to retrieve log records from the
+log, and m4_refT(logc_close) to destroy the cursor.])
+
+m4_p([dnl
+There are additional methods for integrating the log subsystem with a
+transaction processing system:])
+
+m4_tagbegin
+m4_tag(m4_ref(log_flush), [dnl
+Flushes the log up to a particular log sequence number.])
+
+m4_tag(m4_ref(log_compare), [dnl
+Allows applications to compare any two log sequence numbers.])
+
+m4_tag([m4_ref(log_file) ], [dnl
+Maps a log sequence number to the specific log file that contains it.])
+
+m4_tag(m4_ref(log_archive), [dnl
+Returns various sets of log filenames. These methods are used for
+database administration; for example, to determine if log files may
+safely be removed from the system.])
+
+m4_tag([m4_ref(log_stat) ], [dnl
+The display m4_ref(db_stat) utility uses the m4_refT(log_stat) to
+display statistics about the log.])
+
+m4_tag(m4_ref(dbenv_remove), [dnl
+The log meta-information (but not the log files themselves) may be
+removed using the m4_refT(dbenv_remove).])
+
+m4_tagend
+
+include(log/m4.methods)
+
+m4_page_footer
diff --git a/db/docs_src/ref/log/limits.so b/db/docs_src/ref/log/limits.so
new file mode 100644
index 000000000..e3e6b98fc
--- /dev/null
+++ b/db/docs_src/ref/log/limits.so
@@ -0,0 +1,50 @@
+m4_comment([$Id: limits.so,v 10.26 2004/08/13 03:48:05 bostic Exp $])
+
+m4_ref_title(Logging Subsystem,
+ Log file limits, @log file limits, log/config, mp/intro)
+
+m4_p([dnl
+Log filenames and sizes impose a limit on how long databases may be
+used in a m4_db database environment. It is quite unlikely that an
+application will reach this limit; however, if the limit is reached,
+the m4_db environment's databases must be dumped and reloaded.])
+
+m4_p([dnl
+The log filename consists of m4_bold(log.) followed by 10 digits, with
+a maximum of 2,000,000,000 log files. Consider an application performing
+6000 transactions per second for 24 hours a day, logged into 10MB log
+files, in which each transaction is logging approximately 500 bytes of data.
+The following calculation:])
+
+m4_indent([(10 * 2^20 * 2000000000) / (6000 * 500 * 365 * 60 * 60 * 24) = ~221])
+
+m4_p([dnl
+indicates that the system will run out of log filenames in roughly 221
+years.])
+
+m4_p([dnl
+There is no way to reset the log filename space in m4_db. If your
+application is reaching the end of its log filename space, you must do
+the following:])
+
+m4_nlistbegin
+
+m4_nlist([dnl
+Archive your databases as if to prepare for catastrophic failure (see
+m4_link(M4RELDIR/ref/transapp/archival, [Database and log file archival])
+for more information).])
+
+m4_nlist([dnl
+Reset the database's log sequence numbers (see the m4_option(r) option
+to the m4_ref(db_load) utility for more information).])
+
+m4_nlist([dnl
+Remove all of the log files from the database environment. (This is the
+only situation in which all the log files are removed from an environment;
+in all other cases, at least a single log file is retained.)])
+
+m4_nlist([Restart your application.])
+
+m4_nlistend
+
+m4_page_footer
diff --git a/db/docs_src/ref/mp/config.so b/db/docs_src/ref/mp/config.so
new file mode 100644
index 000000000..e182f8f99
--- /dev/null
+++ b/db/docs_src/ref/mp/config.so
@@ -0,0 +1,45 @@
+m4_comment([$Id: config.so,v 10.20 2003/10/18 19:16:04 bostic Exp $])
+
+m4_ref_title(Memory Pool Subsystem,
+ Configuring the memory pool,
+ @memory pool configuration, mp/intro, txn/intro)
+
+m4_p([dnl
+There are two issues to consider when configuring the memory pool.])
+
+m4_p([dnl
+The first issue, the most important tuning parameter for m4_db
+applications, is the size of the memory pool. There are two ways to
+specify the pool size. First, calling the m4_refT(dbenv_set_cachesize)
+specifies the pool size for all of the applications sharing the m4_db
+environment. Second, the m4_refT(dbh_set_cachesize) only specifies a
+pool size for the specific database. Note: It is meaningless to call
+m4_ref(dbh_set_cachesize) for a database opened inside of a m4_db
+environment because the environment pool size will override any pool
+size specified for a single database. For information on tuning the
+m4_db cache size, see m4_link(M4RELDIR/ref/am_conf/cachesize, [Selecting
+a cache size]).])
+
+m4_p([dnl
+The second memory pool configuration issue is the maximum size an
+underlying file can be and still be mapped into the process address
+space (instead of reading the file's pages into the cache). Mapping
+files into the process address space can result in better performance
+because available virtual memory is often much larger than the local
+cache, and page faults are faster than page copying on many systems.
+However, in the presence of limited virtual memory, it can cause
+resource starvation; and in the presence of large databases, it can
+result in immense process sizes. In addition, because of the
+requirements of the m4_db transactional implementation, only read-only
+files can be mapped into process memory.])
+
+m4_p([dnl
+To specify that no files are to be mapped into the process address
+space, specify the m4_ref(DB_NOMMAP) flag to the
+m4_refT(dbenv_set_flags). To specify that any individual file should
+not be mapped into the process address space, specify the
+m4_ref(DB_NOMMAP) flag to the m4_ref(memp_fopen) interface. To limit
+the size of files mapped into the process address space, use the
+m4_refT(dbenv_set_mp_mmapsize).])
+
+m4_page_footer
diff --git a/db/docs_src/ref/mp/intro.so b/db/docs_src/ref/mp/intro.so
new file mode 100644
index 000000000..76e795a9a
--- /dev/null
+++ b/db/docs_src/ref/mp/intro.so
@@ -0,0 +1,93 @@
+m4_comment([$Id: intro.so,v 10.26 2007/04/05 20:54:56 bostic Exp $])
+
+m4_ref_title(Memory Pool Subsystem,
+ Introduction to the memory pool subsystem,
+ [introduction to the @memory pool subsystem,
+ introduction to the memory @cache subsystem,
+ introduction to the @buffer pool subsystem], log/limits, mp/config)
+
+m4_p([dnl
+The Memory Pool subsystem is the general-purpose shared memory buffer
+pool used by m4_db. This module is useful outside of the m4_db package
+for processes that require page-oriented, shared and cached file access.])
+
+m4_p([dnl
+A m4_italic(memory pool) is a memory cache shared among any number of
+threads of control. The m4_ref(DB_INIT_MPOOL) flag to the
+m4_refT(dbenv_open) opens and optionally creates a memory pool. When
+that pool is no longer in use, it should be closed using the
+m4_refT(dbenv_close).])
+
+m4_p([dnl
+The m4_refT(memp_fcreate) returns a m4_ref(DbMpoolFile) handle on an
+underlying file within the memory pool. The file may be opened using
+the m4_refT(memp_fopen). The m4_refT(memp_fget) is used to retrieve
+pages from files in the pool. All retrieved pages must be subsequently
+returned using the m4_refT(memp_fput). At the time pages are returned,
+they may be marked m4_bold(dirty), which causes them to be written to
+the underlying file before being discarded from the pool. If there is
+insufficient room to bring a new page in the pool, a page is selected
+to be discarded from the pool using a least-recently-used algorithm.
+All dirty pages in the pool from the file may be flushed using the
+m4_refT(memp_fsync). When the file handle is no longer in use, it
+should be closed using the m4_refT(memp_fclose).])
+
+m4_p([dnl
+There are additional configuration interfaces that apply when opening
+a new file in the memory pool:])
+
+m4_bulletbegin
+m4_bullet([dnl
+The m4_refT(memp_set_clear_len) specifies the number of bytes to clear
+when creating a new page in the memory pool.])
+
+m4_bullet([dnl
+The m4_refT(memp_set_fileid) specifies a unique ID associated with the file.])
+
+m4_bullet([dnl
+The m4_refT(memp_set_ftype) specifies the type of file for the purposes of
+page input and output processing.])
+
+m4_bullet([dnl
+The m4_refT(memp_set_lsn_offset) specifies the byte offset of each page's
+log sequence number (m4_ref(DbLsn)) for the purposes of transaction
+checkpoints.])
+
+m4_bullet([dnl
+The m4_refT(memp_set_pgcookie) specifies an application provided argument
+for the purposes of page input and output processing.])
+
+m4_bulletend
+
+m4_p([dnl
+There are additional interfaces for the memory pool as a whole:])
+
+m4_bulletbegin
+m4_bullet([dnl
+It is possible to gradually flush buffers from the pool in order to
+maintain a consistent percentage of clean buffers in the pool using
+the m4_refT(memp_trickle).])
+
+m4_bullet([dnl
+Because special-purpose processing may be necessary when pages are read
+or written (for example, endian conversion, or page checksums), the
+m4_ref(memp_register) function allows applications to specify automatic
+input and output processing in these cases.])
+
+m4_bullet([dnl
+The m4_ref(db_stat) utility uses the m4_refT(memp_stat) to display
+statistics about the efficiency of the pool.])
+
+m4_bullet([dnl
+All dirty pages in the pool may be flushed using the m4_refT(memp_sync).
+In addition, m4_ref(memp_sync) takes an argument that is specific to
+database systems, and which allows the memory pool to be flushed up to
+a specified log sequence number (m4_ref(DbLsn)).])
+
+m4_bullet([dnl
+The entire pool may be discarded using the m4_refT(dbenv_remove).])
+m4_bulletend
+
+include(memp/m4.methods)
+
+m4_page_footer
diff --git a/db/docs_src/ref/program/appsignals.so b/db/docs_src/ref/program/appsignals.so
new file mode 100644
index 000000000..964fbd5e7
--- /dev/null
+++ b/db/docs_src/ref/program/appsignals.so
@@ -0,0 +1,28 @@
+m4_comment([$Id: appsignals.so,v 10.28 2002/02/23 20:05:24 bostic Exp $])
+
+m4_ref_title(Programmer Notes, Signal handling,
+ signal handling, apprec/config, program/errorret)
+
+m4_p([dnl
+When applications using m4_db receive signals, it is important that they
+exit gracefully, discarding any m4_db locks that they may hold. This is
+normally done by setting a flag when a signal arrives and then checking
+for that flag periodically within the application. Because m4_db is not
+re-entrant, the signal handler should not attempt to release locks and/or
+close the database handles itself. Re-entering m4_db is not guaranteed to
+work correctly, and the results are undefined.])
+
+m4_p([dnl
+If an application exits holding a lock, the situation is no different
+than if the application crashed, and all applications participating in
+the database environment must be shut down, and then recovery must be
+performed. If this is not done, databases may be left in an
+inconsistent state, or locks the application held may cause unresolvable
+deadlocks inside the environment, causing applications to hang.])
+
+m4_p([dnl
+m4_db restarts all system calls interrupted by signals, that is, any
+underlying system calls that return failure with errno set to EINTR will
+be restarted rather than failing.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/program/cache.so b/db/docs_src/ref/program/cache.so
new file mode 100644
index 000000000..d6471fc7e
--- /dev/null
+++ b/db/docs_src/ref/program/cache.so
@@ -0,0 +1,23 @@
+m4_comment([$Id: cache.so,v 10.3 2002/09/26 01:38:32 bostic Exp $])
+
+m4_ref_title(Programmer Notes,
+ Disk drive caches,, program/ram, program/copy)
+
+m4_p([dnl
+Many disk drives contain onboard caches. Some of these drives include
+battery-backup or other functionality that guarantees that all cached
+data will be completely written if the power fails. These drives can
+offer substantial performance improvements over drives without caching
+support. However, some caching drives rely on capacitors or other
+mechanisms that guarantee only that the write of the current sector
+will complete. These drives can endanger your database and potentially
+cause corruption of your data.])
+
+m4_p([dnl
+To avoid losing your data, make sure the caching on your disk drives is
+properly configured so the drive will never report that data has been written
+unless the data is guaranteed to be written in the face of a power failure.
+Many times, this means that write-caching on the disk drive must
+be disabled.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/program/compatible.so b/db/docs_src/ref/program/compatible.so
new file mode 100644
index 000000000..b4dd944e3
--- /dev/null
+++ b/db/docs_src/ref/program/compatible.so
@@ -0,0 +1,21 @@
+m4_comment([$Id: compatible.so,v 10.34 2002/02/23 20:05:24 bostic Exp $])
+
+m4_ref_title(Programmer Notes,
+ Compatibility with historic UNIX interfaces,
+ @interface compatibility, program/copy, program/runtime)
+
+m4_p([dnl
+The m4_db version 2 library provides backward-compatible interfaces for
+the historic UNIX m4_ref(dbm), m4_ref(ndbm), and m4_ref(hsearch)
+interfaces. It also provides a backward-compatible interface for the
+historic m4_db 1.85 release.])
+
+m4_p([dnl
+m4_db version 2 does not provide database compatibility for any of the
+previous interfaces, and existing databases must be converted manually.
+To convert existing databases from the m4_db 1.85 format to the m4_db
+version 2 format, review the m4_ref(db_dump185) and m4_ref(db_load)
+information. No utilities are provided to convert UNIX m4_ref(dbm),
+m4_ref(ndbm), or m4_ref(hsearch) databases.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/program/copy.so b/db/docs_src/ref/program/copy.so
new file mode 100644
index 000000000..1ea57a572
--- /dev/null
+++ b/db/docs_src/ref/program/copy.so
@@ -0,0 +1,90 @@
+m4_comment([$Id: copy.so,v 10.17 2005/06/16 17:07:07 bostic Exp $])
+
+m4_ref_title(Programmer Notes,
+ Copying or moving databases,, program/cache, program/compatible)
+
+m4_idefz(copying databases)
+m4_idefz(moving databases)
+
+m4_p([dnl
+There are two issues with copying or moving databases: database page log
+sequence numbers (LSNs), and database file identification strings.])
+
+m4_p([dnl
+Because database pages contain references to the database environment
+log records (LSNs), databases cannot be copied or moved from one
+transactional database environment to another without first clearing the
+LSNs. Note that this is not a concern for non-transactional database
+environments and applications, and can be ignored if the database is not
+being used transactionally. Specifically, databases created and written
+non-transactionally (for example, as part of a bulk load procedure), can
+be copied or moved into a transactional database environment without
+resetting the LSNs. The database's LSNs may be reset in one of three
+ways: the application can call the m4_refT(dbenv_lsn_reset) to reset the
+LSNs in place, or a system administrator can reset the LSNs in place
+using the m4_option(r) option to the m4_ref(db_load) utility, or by
+dumping and reloading the database (using the m4_ref(db_dump) and
+m4_ref(db_load) utilities).])
+
+m4_p([dnl
+Because system file identification information (for example, filenames,
+device and inode numbers, volume and file IDs, and so on) are not
+necessarily unique or maintained across system reboots, each m4_db
+database file contains a unique 20-byte file identification bytestring.
+When multiple processes or threads open the same database file in m4_db,
+it is this bytestring that is used to ensure the same underlying pages
+are updated in the database environment cache, no matter which m4_db
+handle is used for the operation.])
+
+m4_p([dnl
+The database file identification string is not a concern when moving
+databases, and databases may be moved or renamed without resetting the
+identification string. However, when copying a database, you must
+ensure there are never two databases with the same file identification
+bytestring in the same cache at the same time. Copying databases is
+further complicated because m4_db caches do not discard cached database
+pages when database handles are closed. Cached pages are only discarded
+when the database is removed by calling the m4_ref(dbenv_remove) or
+m4_refT(dbh_remove)s.])
+
+m4_p([dnl
+Before physically copying a database file, first ensure that all
+modified pages have been written from the cache to the backing database
+file. This is done using the m4_ref(dbh_sync) or m4_refT(dbh_close)s.])
+
+m4_p([dnl
+Before using a copy of a database file in a database environment, you
+must ensure that all pages from any other database with the same
+bytestring have been removed from the memory pool cache. If the
+environment in which you will open the copy of the database has pages
+from files with identical bytestrings to the copied database, there are
+a few possible solutions:])
+
+m4_nlistbegin
+
+m4_nlist([dnl
+Remove the environment, either using system utilities or by calling the
+m4_refT(dbenv_remove). Obviously, this will not allow you to access
+both the original database and the copy of the database at the same
+time.])
+
+m4_nlist([dnl
+Create a new file that will have a new bytestring. The simplest way to
+create a new file that will have a new bytestring is to call the
+m4_ref(db_dump) utility to dump out the contents of the database and
+then use the m4_ref(db_load) utility to load the dumped output into a
+new file. This allows you to access both the original and copy of the
+database at the same time.])
+
+m4_nlist([dnl
+If your database is too large to be dumped and reloaded, you can copy
+the database by other means, and then reset the bytestring in the copied
+database to a new bytestring. There are two ways to reset the
+bytestring in the copy: the application can call the
+m4_refT(dbenv_fileid_reset), or a system administrator can use the
+m4_option(r) option to the m4_ref(db_load) utility. This allows you to
+access both the original and copy of the database at the same time.])
+
+m4_nlistend
+
+m4_page_footer
diff --git a/db/docs_src/ref/program/environ.so b/db/docs_src/ref/program/environ.so
new file mode 100644
index 000000000..686aa218e
--- /dev/null
+++ b/db/docs_src/ref/program/environ.so
@@ -0,0 +1,29 @@
+m4_comment([$Id: environ.so,v 10.21 2001/04/16 17:11:40 bostic Exp $])
+
+m4_ref_title(Programmer Notes,
+ Environment variables,
+ @environment variables, program/errorret, program/mt)
+
+m4_p([dnl
+The m4_db library uses the following environment variables:])
+
+m4_tagbegin
+m4_tag(DB_HOME, [dnl
+If the environment variable DB_HOME is set, it is used as part of
+m4_link(M4RELDIR/ref/env/naming, [File Naming]).
+Note: For the DB_HOME variable to take effect, either the
+m4_ref(DB_USE_ENVIRON) or m4_ref(DB_USE_ENVIRON_ROOT) flags must be
+specified to m4_ref(dbenv_open).])
+
+dnl Note, one of the
+dnl flags, m4_ref(DB_USE_ENVIRON) or m4_ref(DB_USE_ENVIRON_ROOT) must be
+dnl specified to m4_ref(dbenv_open) for the DB_HOME variable to take effect.
+
+m4_tag([TMPDIR, TEMP, TMP, TempFolder], [dnl
+The TMPDIR, TEMP, TMP, and TempFolder environment variables are all
+checked as locations in which to create temporary files. See
+m4_ref(dbenv_set_tmp_dir) for more information.])
+
+m4_tagend
+
+m4_page_footer
diff --git a/db/docs_src/ref/program/errorret.so b/db/docs_src/ref/program/errorret.so
new file mode 100644
index 000000000..1c6da329b
--- /dev/null
+++ b/db/docs_src/ref/program/errorret.so
@@ -0,0 +1,132 @@
+m4_comment([$Id: errorret.so,v 10.49 2006/08/25 18:22:01 bostic Exp $])
+
+define(M4PAGELOCAL,
+ [DB_KEYEMPTY, DB_KEYEXIST, DB_LOCK_DEADLOCK, DB_LOCK_NOTGRANTED,
+ DB_NOTFOUND, DB_RUNRECOVERY])
+
+m4_ref_title(Programmer Notes,
+ Error returns to applications,
+ @error returns, program/appsignals, program/environ)
+
+m4_p([dnl
+Except for the historic m4_ref(dbm), m4_ref(ndbm), and m4_ref(hsearch)
+interfaces, m4_db does not use the global variable m4_envvar(errno) to
+return error values. The return values for all m4_db functions are
+grouped into the following three categories:])
+
+m4_tagbegin
+m4_tag(0, [A return value of 0 indicates that the operation was successful.])
+
+m4_tag([__GT__ 0], [dnl
+A return value that is greater than 0 indicates that there was a system
+error. The m4_bold(errno) value returned by the system is returned by
+the function; for example, when a m4_db function is unable to allocate
+memory, the return value from the function will be ENOMEM.])
+
+m4_tag([__LT__ 0], [dnl
+A return value that is less than 0 indicates a condition that was not
+a system failure, but was not an unqualified success, either. For
+example, a routine to retrieve a key/data pair from the database may
+return m4_ref(DB_NOTFOUND) when the key/data pair does not appear in
+the database; as opposed to the value of 0, which would be returned if
+the key/data pair were found in the database.
+m4_p([dnl
+m4_idefz(error name space)
+All values returned by m4_db functions are less than 0 in order to avoid
+conflict with possible values of m4_bold(errno). Specifically, m4_db
+reserves all values from -30,800 to -30,999 to itself as possible error
+values. There are a few m4_db interfaces where it is possible for an
+application function to be called by a m4_db function and subsequently
+fail with an application-specific return. Such failure returns will be
+passed back to the function that originally called a m4_db interface.
+To avoid ambiguity about the cause of the error, error values separate
+from the m4_db error name space should be used.])])
+m4_tagend
+
+m4_p([dnl
+Although possible error returns are specified by each individual function's
+manual page, there are a few error returns that deserve general mention:])
+
+m4_section(m4_idef(DB_NOTFOUND) and m4_idef(DB_KEYEMPTY))
+m4_p([dnl
+There are two special return values that are similar in meaning and that
+are returned in similar situations, and therefore might be confused:
+m4_ref(DB_NOTFOUND) and m4_ref(DB_KEYEMPTY).])
+
+m4_p([dnl
+The m4_ref(DB_NOTFOUND) error return indicates that the requested key/data
+pair did not exist in the database or that start-of- or end-of-file has
+been reached by a cursor.])
+
+m4_p([dnl
+The m4_ref(DB_KEYEMPTY) error return indicates that the requested
+key/data pair logically exists but was never explicitly created by the
+application (the Recno and Queue access methods will automatically
+create key/data pairs under some circumstances; see m4_ref(dbh_open)
+for more information), or that the requested key/data pair was deleted
+and never re-created. In addition, the Queue access method will return
+m4_ref(DB_KEYEMPTY) for records that were created as part of a
+transaction that was later aborted and never re-created.])
+
+m4_section(m4_idef(DB_KEYEXIST))
+m4_p([dnl
+The m4_ref(DB_KEYEXIST) error return indicates the m4_ref(DB_NOOVERWRITE)
+option was specified when inserting a key/data pair into the database and
+the key already exists in the database, or the m4_ref(DB_NODUPDATA)
+option was specified and the key/data pair already exists in the data.])
+
+m4_idefz(DB_LOCK_DEADLOCK)
+m4_section(m4_idef(DB_LOCK_DEADLOCK))
+m4_p([dnl
+When multiple threads of control are modifying the database, there is
+normally the potential for deadlock. In m4_db, deadlock is signified by
+an error return from the m4_db function of the value
+m4_ref(DB_LOCK_DEADLOCK). Whenever a m4_db function returns
+m4_ref(DB_LOCK_DEADLOCK), the enclosing transaction should be aborted.])
+
+m4_p([dnl
+Any m4_db function that attempts to acquire locks can potentially return
+m4_ref(DB_LOCK_DEADLOCK). Practically speaking, the safest way to deal
+with applications that can deadlock is to anticipate a
+m4_ref(DB_LOCK_DEADLOCK) return from any m4_ref(Db) or m4_ref(Dbc)
+handle method call, or any m4_ref(DbEnv) handle method call that
+references a database, including the database's backing physical file.])
+
+m4_section(m4_idef(DB_LOCK_NOTGRANTED))
+m4_p([dnl
+If a lock is requested from the m4_ref(lock_get) or m4_refT(lock_vec)s
+with the m4_ref(DB_LOCK_NOWAIT) flag specified, the method will return
+m4_ref(DB_LOCK_NOTGRANTED) if the lock is not immediately available.])
+m4_p([dnl
+If the m4_ref(DB_TIME_NOTGRANTED) flag is specified to the
+m4_refT(dbenv_set_flags), database calls timing out based on lock or
+transaction timeout values will return m4_ref(DB_LOCK_NOTGRANTED)
+instead of m4_ref(DB_LOCK_DEADLOCK).])
+
+m4_section(m4_idef(DB_RUNRECOVERY))
+m4_p([dnl
+There exists a class of errors that m4_db considers fatal to an entire
+m4_db environment. An example of this type of error is a corrupted
+database page. The only way to recover from these failures is to have
+all threads of control exit the m4_db environment, run recovery of the
+environment, and re-enter m4_db. (It is not strictly necessary that the
+processes exit, although that is the only way to recover system
+resources, such as file descriptors and memory, allocated by m4_db.)])
+
+m4_p([dnl
+When this type of error is encountered, the error value
+m4_ref(DB_RUNRECOVERY) is returned. This error can be returned by any
+m4_db interface. Once m4_ref(DB_RUNRECOVERY) is returned by any
+interface, it will be returned from all subsequent m4_db calls made by
+any threads of control participating in the environment.])
+
+m4_p([dnl
+Applications can handle such fatal errors in one of two ways: first, by
+checking for m4_ref(DB_RUNRECOVERY) as part of their normal m4_db error
+return checking, similarly to m4_ref(DB_LOCK_DEADLOCK) or any other
+error. Alternatively, applications can specify a fatal-error callback
+function using the m4_refT(dbenv_set_event_notify). Applications with
+no cleanup processing of their own should simply exit from the callback
+function.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/program/faq.so b/db/docs_src/ref/program/faq.so
new file mode 100644
index 000000000..2adbb4954
--- /dev/null
+++ b/db/docs_src/ref/program/faq.so
@@ -0,0 +1,39 @@
+m4_comment([$Id: faq.so,v 10.3 2002/12/10 23:41:42 mjc Exp $])
+
+m4_ref_title(Programmer Notes,
+ Programmer notes FAQ,, program/runtime, lock/intro)
+
+m4_nlistbegin
+
+m4_idefz(task/thread @priority)
+m4_nlist([dnl
+m4_bold([What priorities should threads/tasks executing m4_db functions
+be given?])
+
+m4_p([dnl
+Tasks executing m4_db functions should have the same, or roughly
+equivalent, system priorities. For example, it can be dangerous to give
+tasks of control performing checkpoints a lower priority than tasks of
+control doing database lookups, and starvation can sometimes result.])])
+
+m4_nlist([dnl
+m4_bold([Why isn't the C++ API exception safe?])
+
+m4_p([dnl
+The m4_db C++ API is a thin wrapper around the C API that maps most
+return values to exceptions, and gives the C++ handles the same
+lifecycles as their C counterparts. One consequence is that if an
+exception occurs while a cursor or transaction handle is open, the
+application must explicitly close the cursor or abort the transaction.])
+
+m4_p([dnl
+Applications can be simplified and bugs avoided by creating wrapper
+classes around m4_ref(Dbc) and m4_ref(DbTxn) that call the appropriate
+cleanup method in the wrapper's destructor. By creating an instance
+of the wrappers on the stack, C++ scoping rules will ensure that the
+destructor is called before exception handling unrolls the block that
+contains the wrapper object.])])
+
+m4_nlistend
+
+m4_page_footer
diff --git a/db/docs_src/ref/program/mt.so b/db/docs_src/ref/program/mt.so
new file mode 100644
index 000000000..8cf5401a3
--- /dev/null
+++ b/db/docs_src/ref/program/mt.so
@@ -0,0 +1,92 @@
+m4_comment([$Id: mt.so,v 10.48 2005/07/20 16:34:05 bostic Exp $])
+
+m4_ref_title(Programmer Notes,
+ Multithreaded applications,
+ building @threaded applications,
+ program/environ, program/scope)
+
+m4_p([dnl
+m4_db fully supports multithreaded applications. The m4_db library is
+not itself multithreaded, and was deliberately architected to not use
+threads internally because of the portability problems that would
+introduce. Database environment and database object handles returned
+from m4_db library functions are free-threaded. No other object handles
+returned from the m4_db library are free-threaded. The following rules
+should be observed when using threads to access the m4_db library:])
+
+m4_nlistbegin
+m4_nlist([dnl
+The m4_ref(DB_THREAD) flag must be specified to the m4_ref(dbenv_open)
+and m4_refT(dbh_open)s if the m4_db handles returned by those interfaces
+will be used in the context of more than one thread. Setting the
+m4_ref(DB_THREAD) flag inconsistently may result in database corruption.
+
+m4_p([dnl
+Threading is assumed in the Java API, so no special flags are required;
+and m4_db functions will always behave as if the m4_ref(DB_THREAD) flag
+was specified.])
+
+m4_p([dnl
+Only a single thread may call the m4_ref(dbenv_close) or m4_refT(dbh_close)s
+for a returned environment or database handle.])
+
+m4_p([dnl
+No other m4_db handles are free-threaded.])])
+
+m4_nlist([dnl
+When using the non-cursor m4_db calls to retrieve key/data items (for
+example, m4_ref(dbh_get)), the memory to which the pointer stored into
+the Dbt refers is valid only until the next call using the m4_ref(Db)
+handle returned by m4_ref(dbh_open). This includes m4_bold(any) use of
+the returned m4_ref(Db) handle, including by another thread within the
+process.
+
+m4_p([dnl
+For this reason, if the m4_ref(DB_THREAD) handle was specified to the
+m4_refT(dbh_open), either m4_ref(DB_DBT_MALLOC), m4_ref(DB_DBT_REALLOC),
+or m4_ref(DB_DBT_USERMEM) must be specified in the m4_ref(Dbt) when
+performing any non-cursor key or data retrieval.])])
+
+m4_nlist([dnl
+Cursors may not span transactions. Each cursor must be
+allocated and deallocated within the same transaction.
+
+m4_p([dnl
+Transactions and cursors may span threads, but only serially, that is,
+the application must serialize access to the m4_ref(DbTxn) and
+m4_ref(Dbc) handles. In the case of nested transactions, since all
+child transactions are part of the same parent transaction, they must observe
+the same constraints. That is, children may execute in different threads
+only if each child executes serially.])])
+
+m4_nlist([dnl
+User-level synchronization mutexes must have been implemented for the
+compiler/architecture combination. Attempting to specify the DB_THREAD
+flag will fail if fast mutexes are not available.
+
+m4_p([dnl
+If blocking mutexes are available (for example POSIX pthreads), they
+will be used. Otherwise, the m4_db library will make a system call to
+pause for some amount of time when it is necessary to wait on a lock.
+This may not be optimal, especially in a thread-only environment, in
+which it is usually more efficient to explicitly yield the processor to
+another thread.])
+
+m4_p([dnl
+It is possible to specify a yield function on an per-application basis.
+See m4_ref(dbenv_set_func_yield) for more information.])
+
+m4_p([dnl
+It is possible to specify the number of attempts that will be made to
+acquire the mutex before waiting. See m4_ref(mutex_set_tas_spins) for
+more information.])])
+
+m4_nlistend
+
+m4_p([dnl
+When creating multiple databases in a single physical file, multithreaded
+programs may have additional requirements. For more information, see
+m4_link(M4RELDIR/ref/am/opensub, [Opening multiple databases in a single
+file].)])
+
+m4_page_footer
diff --git a/db/docs_src/ref/program/namespace.so b/db/docs_src/ref/program/namespace.so
new file mode 100644
index 000000000..bff5c57b8
--- /dev/null
+++ b/db/docs_src/ref/program/namespace.so
@@ -0,0 +1,51 @@
+m4_comment([$Id: namespace.so,v 10.22 2004/03/08 15:09:20 bostic Exp $])
+
+m4_ref_title(Programmer Notes, Name spaces,
+ m4_db library @name spaces, program/scope, program/ram)
+
+m4_section(C Language Name Space)
+m4_p([dnl
+The m4_db library is careful to avoid C language programmer name spaces,
+but there are a few potential areas for concern, mostly in the m4_db
+include file db.h. The db.h include file defines a number of types and
+strings. Where possible, all of these types and strings are prefixed with
+"DB_" or "db_". There are a few notable exceptions.])
+
+m4_p([dnl
+The m4_db library uses a macro named "__P" to configure for systems that
+do not provide ANSI C function prototypes. This could potentially collide
+with other systems using a "__P" macro for similar or different purposes.])
+
+m4_p([dnl
+The m4_db library needs information about specifically sized types for
+each architecture. If they are not provided by the system, they are
+typedef'd in the db.h include file. The types that may be typedef'd
+by db.h include the following: u_int8_t, int16_t, u_int16_t, int32_t,
+u_int32_t, u_char, u_short, u_int, and u_long.])
+
+m4_p([dnl
+The m4_db library declares a few external routines. All these routines
+are prefixed with the strings "db_". All internal m4_db routines are
+prefixed with the strings "__XXX_", where "XXX" is the subsystem prefix
+(for example, "__db_XXX_" and "__txn_XXX_").])
+
+m4_section(Filesystem Name Space)
+m4_p([dnl
+m4_db environments create or use some number of files in environment
+home directories. These files are named m4_ref(DB_CONFIG), "log.NNNNN"
+(for example, log.0000000003, where the number of digits following the
+dot is unspecified), or with the string prefix "__db" (for example,
+__db.001). Applications should never create files or databases in
+database environment home directories with names beginning with the
+characters "log" or "__db".])
+
+m4_p([dnl
+In some cases, applications may choose to remove m4_db files as part of
+their cleanup procedures, using system utilities instead of m4_db
+interfaces (for example, using the UNIX rm utility instead of the
+m4_refT(dbenv_remove)). This is not a problem, as long as applications
+limit themselves to removing only files named "__db.###", where "###"
+are the digits 0 through 9. Applications should never remove any files
+named with the prefix "__db" or "log", other than "__db.###" files.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/program/ram.so b/db/docs_src/ref/program/ram.so
new file mode 100644
index 000000000..e097e329a
--- /dev/null
+++ b/db/docs_src/ref/program/ram.so
@@ -0,0 +1,139 @@
+m4_comment([$Id: ram.so,v 10.10 2006/09/19 15:42:31 bostic Exp $])
+
+m4_ref_title(Programmer Notes,
+ Memory-only or Flash configurations,
+ Flash memory configurations, program/namespace, program/cache)
+
+m4_p([dnl
+m4_db supports a variety of memory-based configurations for systems
+where filesystem space is either limited in availability or entirely
+replaced by some combination of memory and Flash. In addition, m4_db
+can be configured to minimize writes to the filesystem when the
+filesystem is backed by Flash memory.])
+
+m4_p([dnl
+There are three parts of the m4_db database environment normally written
+to the filesystem: the database environment region files, the database
+files and the database environment log files. Each of these items can
+be configured to live in memory rather than in the filesystem:])
+
+m4_tagbegin
+
+m4_tag([The database environment region files:], [dnl
+Each of the m4_db subsystems in a database environment is described by
+one or more regions, or chunks of memory. The regions contain all of the
+per-process and per-thread shared information (including mutexes), that
+comprise a m4_db environment. By default, these regions are backed by
+the filesystem. In situations where filesystem backed regions aren't
+optimal, applications can create memory-only database environments in
+two different types of memory: either in the application's heap memory
+or in system shared memory.
+
+m4_p([dnl
+To create the database environment in heap memory, specify the
+m4_ref(DB_PRIVATE) flag to the m4_refT(dbenv_open). Note that database
+environments created in heap memory are only accessible to the threads
+of a single process, however.])
+
+m4_p([dnl
+To create the database environment in system shared memory, specify the
+m4_ref(DB_SYSTEM_MEM) flag to the m4_refT(dbenv_open). Database
+environments created in system memory are accessible to multiple
+processes, but note that database environments created in system shared
+memory do create a small (roughly 8 byte) file in the filesystem, read
+by the processes to identify which system shared memory segments to
+use.])
+
+m4_p([dnl
+For more information, see m4_link(M4RELDIR/ref/env/region, [Shared
+memory regions]).])])
+
+m4_tag([The database files:], [dnl
+By default, databases are periodically flushed from the m4_db memory
+cache to backing physical files in the filesystem. To keep databases
+from being written to backing physical files, pass the
+m4_ref(DB_MPOOL_NOFILE) flag to the m4_refT(memp_set_flags). This flag
+implies the application's databases must fit entirely in the m4_db
+cache, of course. To avoid a database file growing to consume the
+entire cache, applications can limit the size of individual databases
+in the cache by calling the m4_refT(memp_set_maxsize).])
+
+m4_tag([The database environment log files:], [dnl
+If a database environment is not intended to be transactionally
+recoverable after application or system failure (that is, if it will not
+exhibit the transactional attribute of "durability"), applications
+should not configure the database environment for logging or
+transactions, in which case no log files will be created. If the
+database environment is intended to be durable, log files must either
+be written to stable storage and recovered after application or system
+failure, or they must be replicated to other systems.
+
+m4_p([dnl
+In applications running on systems without any form of stable storage,
+durability must be accomplished through replication. In this case,
+database environments should be configured to maintain database logs in
+memory, rather than in the filesystem, by specifying the
+m4_ref(DB_LOG_INMEMORY) flag to the m4_refT(dbenv_set_flags).])])
+
+m4_tagend
+
+m4_p([dnl
+In systems where the filesystem is backed by Flash memory, the number
+of times the Flash memory is written may be a concern. Each of the
+three parts of the m4_db database environment normally written to the
+filesystem can be configured to minimize the number of times the
+filesystem is written:])
+
+m4_tagbegin
+
+m4_tag([The database environment region files:], [dnl
+On a Flash-based filesystem, the database environment should be placed
+in heap or system memory, as described previously.])
+
+m4_tag([The database files:], [dnl
+The m4_db library maintains a cache of database pages. The database
+pages are only written to backing physical files when the application
+checkpoints the database environment with the m4_refT(txn_checkpoint),
+when database handles are closed with the m4_refT(dbh_close), or when
+the application explicitly flushes the cache with the m4_ref(dbh_sync)
+or m4_refT(memp_sync)s.
+
+m4_p([dnl
+To avoid unnecessary writes of Flash memory due to checkpoints,
+applications should decrease the frequency of their checkpoints. This
+is especially important in applications which repeatedly modify a
+specific database page, as repeatedly writing a database page to the
+backing physical file will repeatedly update the same blocks of the
+filesystem.])
+
+m4_p([dnl
+To avoid unnecessary writes of the filesystem due to closing a database
+handle, applications should specify the m4_ref(DB_NOSYNC) flag to the
+m4_refT(dbh_close).])
+
+m4_p([dnl
+To avoid unnecessary writes of the filesystem due to flushing the cache,
+applications should not explicitly flush the cache under normal
+conditions -- flushing the cache is rarely if ever needed in a
+normally-running application.])])
+
+m4_tag([The database environment log files:], [dnl
+The m4_db log files do not repeatedly overwrite the same blocks of the
+filesystem as the m4_db log files are not implemented as a circular
+buffer and log files are not re-used. For this reason, the m4_db log
+files should not cause any difficulties for Flash memory configurations.
+
+m4_p([dnl
+However, as m4_db does not write log records in filesystem block sized
+pieces, it is probable that sequential transaction commits (each of
+which flush the log file to the backing filesystem), will write a block
+of Flash memory twice, as the last log record from the first commit will
+write the same block of Flash memory as the first log record from the
+second commit. Applications not requiring absolute durability should
+specify the m4_ref(DB_TXN_WRITE_NOSYNC) or m4_ref(DB_TXN_NOSYNC) flags
+to the m4_refT(dbenv_set_flags) to avoid this overwrite of a block of
+Flash memory.])])
+
+m4_tagend
+
+m4_page_footer
diff --git a/db/docs_src/ref/program/runtime.so b/db/docs_src/ref/program/runtime.so
new file mode 100644
index 000000000..891f32ae8
--- /dev/null
+++ b/db/docs_src/ref/program/runtime.so
@@ -0,0 +1,51 @@
+m4_comment([$Id: runtime.so,v 10.36 2006/06/08 13:04:29 bostic Exp $])
+
+m4_ref_title(Programmer Notes,
+ Run-time configuration,, program/compatible, program/faq)
+
+m4_p([dnl
+It is possible for applications to configure m4_db at run-time to
+redirect m4_db library and system calls to alternate interfaces. For
+example, an application might want m4_db to call debugging memory
+allocation routines rather than the standard C library interfaces. The
+following interfaces support this functionality:])
+
+m4_indent([dnl
+m4_ref(dbenv_set_func_close)
+m4_ref(dbenv_set_func_dirfree)
+m4_ref(dbenv_set_func_dirlist)
+m4_ref(dbenv_set_func_exists)
+m4_ref(dbenv_set_func_free)
+m4_ref(dbenv_set_func_fsync)
+m4_ref(dbenv_set_func_ftruncate)
+m4_ref(dbenv_set_func_ioinfo)
+m4_ref(dbenv_set_func_malloc)
+m4_ref(dbenv_set_func_map)
+m4_ref(dbenv_set_func_open)
+m4_ref(dbenv_set_func_pread)
+m4_ref(dbenv_set_func_pwrite)
+m4_ref(dbenv_set_func_read)
+m4_ref(dbenv_set_func_realloc)
+m4_ref(dbenv_set_func_rename)
+m4_ref(dbenv_set_func_seek)
+m4_ref(dbenv_set_func_sleep)
+m4_ref(dbenv_set_func_unlink)
+m4_ref(dbenv_set_func_unmap)
+m4_ref(dbenv_set_func_write)
+m4_ref(dbenv_set_func_yield)])
+
+m4_p([dnl
+These interfaces are available only on POSIX platforms and from the
+m4_db C language API.])
+
+m4_p([dnl
+A not-uncommon problem for applications is the new API in Solaris 2.6
+for manipulating large files. Because this API was not part of Solaris
+2.5, it is difficult to create a single binary that takes advantage of
+the large file functionality in Solaris 2.6, but still runs on Solaris
+2.5. m4_linkweb(solaris.txt, [Example code]) that supports this is
+included in the m4_db distribution, however, the example code was
+written using previous versions of the m4_db APIs, and is only useful
+as an example.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/program/scope.so b/db/docs_src/ref/program/scope.so
new file mode 100644
index 000000000..b3553875a
--- /dev/null
+++ b/db/docs_src/ref/program/scope.so
@@ -0,0 +1,80 @@
+m4_comment([$Id: scope.so,v 10.12 2007/06/14 17:41:59 bostic Exp $])
+
+m4_ref_title(Programmer Notes, m4_db handles,
+ [m4_db handle @scope, m4_db @free-threaded handles],
+ program/mt, program/namespace)
+
+m4_p([dnl
+The m4_db library has a number of object handles. The following table
+lists those handles, their scope, and whether they are free-threaded
+(that is, whether multiple threads within a process can share them).])
+
+m4_tagbegin
+
+m4_tag(m4_ref(DbEnv), [dnl
+The m4_ref(DbEnv) handle, created by the m4_refT(dbenv_create), refers
+to a m4_db database environment -- a collection of m4_db subsystems,
+log files and databases. m4_ref(DbEnv) handles are free-threaded if
+the m4_ref(DB_THREAD) flag is specified to the m4_refT(dbenv_open) when
+the environment is opened. The handle should not be closed while any
+other handle remains open that is using it as a reference (for example,
+m4_ref(Db) or m4_ref(DbTxn)). Once either the m4_ref(dbenv_close) or
+m4_refT(dbenv_remove)s are called, the handle may not be accessed again,
+regardless of the method's return.])
+
+m4_tag(m4_ref(DbTxn), [dnl
+The m4_ref(DbTxn) handle, created by the m4_refT(txn_begin), refers to
+a single transaction. The handle is not free-threaded. Transactions
+may span threads, but only serially, that is, the application must
+serialize access to the m4_ref(DbTxn) handles. In the case of nested
+transactions, since all child transactions are part of the same parent
+transaction, they must observe the same constraints. That is, children
+may execute in different threads only if each child executes serially.
+m4_p([dnl
+Once the m4_ref(txn_abort) or m4_refT(txn_commit)s are called, the
+handle may not be accessed again, regardless of the method's return.
+In addition, parent transactions may not issue any m4_db operations
+while they have active child transactions (child transactions that
+have not yet been committed or aborted) except for m4_ref(txn_begin),
+m4_ref(txn_abort) and m4_ref(txn_commit).])])
+
+m4_tag(m4_ref(DbLogc), [dnl
+The m4_ref(DbLogc) handle refers to a cursor into the log files. The
+handle is not free-threaded. Once the m4_refT(logc_close) is called,
+the handle may not be accessed again, regardless of the method's
+return.])
+
+m4_tag(m4_ref(DbMpoolFile), [dnl
+The m4_ref(DbMpoolFile) handle refers to an open file in the shared
+memory buffer pool of the database environment. The handle is not
+free-threaded. Once the m4_refT(memp_fclose) is called, the handle may
+not be accessed again, regardless of the method's return.])
+
+m4_tag(m4_ref(Db), [dnl
+The m4_ref(Db) handle, created by the m4_refT(dbh_create), refers to a
+single m4_db database, which may or may not be part of a database
+environment. m4_ref(Db) handles are free-threaded if the
+m4_ref(DB_THREAD) flag is specified to the m4_refT(dbh_open) when the
+database is opened or if the database environment in which the database
+is opened is free-threaded. The handle should not be closed while any
+other handle that refers to the database is in use; for example,
+database handles should be left open while cursor handles into the
+database remain open, or transactions that include operations on the
+database have not yet been committed or aborted. Once the
+m4_ref(dbh_close), m4_ref(dbh_remove), or m4_refT(dbh_rename)s are
+called, the handle may not be accessed again, regardless of the method's
+return.])
+
+m4_tag(m4_ref(Dbc), [dnl
+The m4_ref(Dbc) handle refers to a cursor into a m4_db database. The
+handle is not free-threaded. Cursors may span threads, but only
+serially, that is, the application must serialize access to the
+m4_ref(Dbc) handles. If the cursor is to be used to perform operations
+on behalf of a transaction, the cursor must be opened and closed within
+the context of that single transaction. Once m4_ref(dbc_close) has been
+called, the handle may not be accessed again, regardless of the
+method's return.])
+
+m4_tagend
+
+m4_page_footer
diff --git a/db/docs_src/ref/program/solaris.txt b/db/docs_src/ref/program/solaris.txt
new file mode 100644
index 000000000..d2ec31682
--- /dev/null
+++ b/db/docs_src/ref/program/solaris.txt
@@ -0,0 +1,213 @@
+#ifdef OS_solaris
+ * This is all for Solaris 2.6.
+ *
+ * Sun defined a new API in Solaris2.6 to be used when manipulating large
+ * (>2Gbyte) files. This API isn't present in 2.5.x, so we can't simply
+ * call it -- that would mean two binaries, one for 2.5.x and the other for
+ * 2.6. Not pretty. So, what we do here is determine the OS on which we're
+ * running at runtime, and adjust the underlying Berkeley DB calls to use
+ * the new API if it's there.
+ */
+
+/* This must match the definition of stat64 in Solaris2.6 */
+struct our_stat64 {
+ dev_t st_dev;
+ long st_pad1[3]; /* reserve for dev expansion */
+ u_longlong_t st_ino;
+ mode_t st_mode;
+ nlink_t st_nlink;
+ uid_t st_uid;
+ gid_t st_gid;
+ dev_t st_rdev;
+ long st_pad2[2];
+ longlong_t st_size;
+ timestruc_t mst_atime;
+ timestruc_t mst_mtime;
+ timestruc_t mst_ctime;
+ long st_blksize;
+ longlong_t st_blocks; /* large file support */
+ char st_fstype[_ST_FSTYPSZ];
+ long st_pad4[8]; /* expansion area */
+};
+
+#define MEGABYTE (1024 * 1024)
+
+typedef int (*open_fn)(const char *path, int flags, ...);
+typedef longlong_t (*lseek64_fn)(int fildes, longlong_t offset, int whence);
+typedef longlong_t (*fstat64_fn)(int fildes, struct our_stat64 *s);
+typedef void* (*mmap64_fn)(void* addr, size_t len, int prot, int flags,
+int filedes, longlong_t off);
+
+static fstat64_fn os_fstat64_fn = NULL;
+static lseek64_fn os_lseek64_fn = NULL;
+static mmap64_fn os_mmap64_fn = NULL;
+static open_fn os_open64_fn = NULL;
+
+static int dblayer_load_largefile_fns()
+{
+ void *lib_handle = NULL;
+ void *function_found = NULL;
+ int ret = 0;
+
+ lib_handle = dlopen(NULL, RTLD_NOW);
+ if (NULL == lib_handle)
+ return (-1);
+
+ function_found = dlsym(lib_handle,"open64");
+ if (NULL == function_found)
+ return (-1);
+ os_open64_fn = (open_fn)function_found;
+
+ function_found = dlsym(lib_handle,"lseek64");
+ if (NULL == function_found)
+ return (-1);
+ os_lseek64_fn = (lseek64_fn)function_found;
+
+ function_found = dlsym(lib_handle,"fstat64");
+ if (NULL == function_found)
+ return (-1);
+ os_fstat64_fn = (fstat64_fn)function_found;
+
+ function_found = dlsym(lib_handle,"mmap64");
+ if (NULL == function_found)
+ return (-1);
+ os_mmap64_fn = (mmap64_fn)function_found;
+
+ return 0;
+}
+
+/* Helper function for large seeks */
+static int dblayer_seek_fn_solaris(int fd,
+ size_t pgsize, db_pgno_t pageno, u_long relative, int whence)
+{
+ longlong_t offset = 0;
+ longlong_t ret = 0;
+
+ if (NULL == os_lseek64_fn) {
+ return -1;
+ }
+
+ offset = (longlong_t)pgsize * pageno + relative;
+
+ ret = (*os_lseek64_fn)(fd,offset,whence);
+
+ return (ret == -1) ? errno : 0;
+}
+
+/* Helper function for large file mmap */
+static int dblayer_map_solaris(fd, len, is_private, is_rdonly, addr)
+ int fd, is_private, is_rdonly;
+ size_t len;
+ void **addr;
+{
+ void *p;
+ int flags, prot;
+
+ flags = is_private ? MAP_PRIVATE : MAP_SHARED;
+ prot = PROT_READ | (is_rdonly ? 0 : PROT_WRITE);
+
+ if ((p = (*os_mmap64_fn)(NULL,
+ len, prot, flags, fd, (longlong_t)0)) == (void *)MAP_FAILED)
+ return (errno);
+
+ *addr = p;
+ return (0);
+}
+
+/* Helper function for large fstat */
+static int dblayer_ioinfo_solaris(const char *path,
+ int fd, u_int32_t *mbytesp, u_int32_t *bytesp, u_int32_t *iosizep)
+{
+ struct our_stat64 sb;
+
+ if (NULL == os_fstat64_fn) {
+ return -1;
+ }
+
+ if ((*os_fstat64_fn)(fd, &sb) == -1)
+ return (errno);
+
+ /* Return the size of the file. */
+ if (mbytesp != NULL)
+ *mbytesp = (u_int32_t) (sb.st_size / (longlong_t)MEGABYTE);
+ if (bytesp != NULL)
+ *bytesp = (u_int32_t) (sb.st_size % (longlong_t)MEGABYTE);
+
+ /*
+ * Return the underlying filesystem blocksize, if available. Default
+ * to 8K on the grounds that most OS's use less than 8K as their VM
+ * page size.
+ */
+ if (iosizep != NULL)
+ *iosizep = sb.st_blksize;
+ return (0);
+}
+#endif
+
+#ifdef irix
+ * A similar mess to Solaris: a new API added in IRIX6.2 to support large
+ * files. We always build on 6.2 or later, so no need to do the same song
+ * and dance as on Solaris -- we always have the header files for the
+ * 64-bit API.
+ */
+
+/* Helper function for large seeks */
+static int dblayer_seek_fn_irix(int fd,
+ size_t pgsize, db_pgno_t pageno, u_long relative, int whence)
+{
+ off64_t offset = 0;
+ off64_t ret = 0;
+
+ offset = (off64_t)pgsize * pageno + relative;
+
+ ret = lseek64(fd,offset,whence);
+
+ return (ret == -1) ? errno : 0;
+}
+
+/* Helper function for large fstat */
+static int dblayer_ioinfo_irix(const char *path,
+ int fd, u_int32_t *mbytesp, u_int32_t *bytesp, u_int32_t *iosizep)
+{
+ struct stat64 sb;
+
+ if (fstat64(fd, &sb) == -1) {
+ return (errno);
+ }
+
+ /* Return the size of the file. */
+ if (mbytesp != NULL)
+ *mbytesp = (u_int32_t) (sb.st_size / (off64_t)MEGABYTE);
+ if (bytesp != NULL)
+ *bytesp = (u_int32_t) (sb.st_size % (off64_t)MEGABYTE);
+
+ if (iosizep != NULL)
+ *iosizep = sb.st_blksize;
+ return (0);
+}
+#endif /* irix */
+
+static int dblayer_override_libdb_functions(dblayer_private *priv)
+{
+#if defined(OS_solaris)
+ int ret = 0;
+
+ ret = dblayer_load_largefile_fns();
+ if (0 != ret) {
+ Debug("Not Solaris2.6: no large file support enabled\n");
+ } else {
+ /* Means we did get the XXX64 functions, so let's use them */
+ db_jump_set((void*)os_open64_fn, DB_FUNC_OPEN);
+ db_jump_set((void*)dblayer_seek_fn_solaris, DB_FUNC_SEEK);
+ db_jump_set((void*)dblayer_ioinfo_solaris, DB_FUNC_IOINFO);
+ db_jump_set((void*)dblayer_map_solaris, DB_FUNC_MAP);
+ Debug("Solaris2.6: selected 64-bit file handling.\n");
+ }
+#else
+#if defined (irix)
+ db_jump_set((void*)dblayer_seek_fn_irix, DB_FUNC_SEEK);
+ db_jump_set((void*)dblayer_ioinfo_irix, DB_FUNC_IOINFO);
+#endif /* irix */
+#endif /* OS_solaris */
+ return 0;
+}
diff --git a/db/docs_src/ref/refs/bdb_usenix.ps b/db/docs_src/ref/refs/bdb_usenix.ps
new file mode 100644
index 000000000..82e678971
--- /dev/null
+++ b/db/docs_src/ref/refs/bdb_usenix.ps
@@ -0,0 +1,1441 @@
+%!PS-Adobe-3.0
+%%Creator: groff version 1.11
+%%CreationDate: Mon Apr 26 13:38:12 1999
+%%DocumentNeededResources: font Times-Bold
+%%+ font Times-Roman
+%%+ font Times-Italic
+%%+ font Courier
+%%DocumentSuppliedResources: procset grops 1.11 0
+%%Pages: 9
+%%PageOrder: Ascend
+%%Orientation: Portrait
+%%EndComments
+%%BeginProlog
+%%BeginResource: procset grops 1.11 0
+/setpacking where{
+pop
+currentpacking
+true setpacking
+}if
+/grops 120 dict dup begin
+/SC 32 def
+/A/show load def
+/B{0 SC 3 -1 roll widthshow}bind def
+/C{0 exch ashow}bind def
+/D{0 exch 0 SC 5 2 roll awidthshow}bind def
+/E{0 rmoveto show}bind def
+/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def
+/G{0 rmoveto 0 exch ashow}bind def
+/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/I{0 exch rmoveto show}bind def
+/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def
+/K{0 exch rmoveto 0 exch ashow}bind def
+/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/M{rmoveto show}bind def
+/N{rmoveto 0 SC 3 -1 roll widthshow}bind def
+/O{rmoveto 0 exch ashow}bind def
+/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/Q{moveto show}bind def
+/R{moveto 0 SC 3 -1 roll widthshow}bind def
+/S{moveto 0 exch ashow}bind def
+/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/SF{
+findfont exch
+[exch dup 0 exch 0 exch neg 0 0]makefont
+dup setfont
+[exch/setfont cvx]cvx bind def
+}bind def
+/MF{
+findfont
+[5 2 roll
+0 3 1 roll
+neg 0 0]makefont
+dup setfont
+[exch/setfont cvx]cvx bind def
+}bind def
+/level0 0 def
+/RES 0 def
+/PL 0 def
+/LS 0 def
+/MANUAL{
+statusdict begin/manualfeed true store end
+}bind def
+/PLG{
+gsave newpath clippath pathbbox grestore
+exch pop add exch pop
+}bind def
+/BP{
+/level0 save def
+1 setlinecap
+1 setlinejoin
+72 RES div dup scale
+LS{
+90 rotate
+}{
+0 PL translate
+}ifelse
+1 -1 scale
+}bind def
+/EP{
+level0 restore
+showpage
+}bind def
+/DA{
+newpath arcn stroke
+}bind def
+/SN{
+transform
+.25 sub exch .25 sub exch
+round .25 add exch round .25 add exch
+itransform
+}bind def
+/DL{
+SN
+moveto
+SN
+lineto stroke
+}bind def
+/DC{
+newpath 0 360 arc closepath
+}bind def
+/TM matrix def
+/DE{
+TM currentmatrix pop
+translate scale newpath 0 0 .5 0 360 arc closepath
+TM setmatrix
+}bind def
+/RC/rcurveto load def
+/RL/rlineto load def
+/ST/stroke load def
+/MT/moveto load def
+/CL/closepath load def
+/FL{
+currentgray exch setgray fill setgray
+}bind def
+/BL/fill load def
+/LW/setlinewidth load def
+/RE{
+findfont
+dup maxlength 1 index/FontName known not{1 add}if dict begin
+{
+1 index/FID ne{def}{pop pop}ifelse
+}forall
+/Encoding exch def
+dup/FontName exch def
+currentdict end definefont pop
+}bind def
+/DEFS 0 def
+/EBEGIN{
+moveto
+DEFS begin
+}bind def
+/EEND/end load def
+/CNT 0 def
+/level1 0 def
+/PBEGIN{
+/level1 save def
+translate
+div 3 1 roll div exch scale
+neg exch neg exch translate
+0 setgray
+0 setlinecap
+1 setlinewidth
+0 setlinejoin
+10 setmiterlimit
+[]0 setdash
+/setstrokeadjust where{
+pop
+false setstrokeadjust
+}if
+/setoverprint where{
+pop
+false setoverprint
+}if
+newpath
+/CNT countdictstack def
+userdict begin
+/showpage{}def
+}bind def
+/PEND{
+clear
+countdictstack CNT sub{end}repeat
+level1 restore
+}bind def
+end def
+/setpacking where{
+pop
+setpacking
+}if
+%%EndResource
+%%IncludeResource: font Times-Bold
+%%IncludeResource: font Times-Roman
+%%IncludeResource: font Times-Italic
+%%IncludeResource: font Courier
+grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72
+def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron
+/scaron/zcaron/Ydieresis/trademark/quotesingle/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent
+/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen
+/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon
+/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O
+/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex
+/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y
+/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft
+/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl
+/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut
+/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
+/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen
+/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft
+/logicalnot/minus/registered/macron/degree/plusminus/twosuperior
+/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior
+/ordmasculine/guilsinglright/onequarter/onehalf/threequarters
+/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE
+/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
+/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
+/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn
+/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
+/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
+/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash
+/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def
+/Courier@0 ENC0/Courier RE/Times-Italic@0 ENC0/Times-Italic RE
+/Times-Roman@0 ENC0/Times-Roman RE/Times-Bold@0 ENC0/Times-Bold RE
+%%EndProlog
+%%Page: 1 1
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 14/Times-Bold@0 SF(Berk)275.358 100.8 Q(eley DB)-.14 E/F1 12
+/Times-Roman@0 SF(Michael A. Olson)270.372 129.6 Q -.3(Ke)283.182 144 S
+(ith Bostic).3 E(Mar)279.15 158.4 Q(go Seltzer)-.216 E/F2 12
+/Times-Italic@0 SF(Sleepycat Softwar)255.492 174.24 Q .24 -.12(e, I)
+-.444 H(nc.).12 E/F3 12/Times-Bold@0 SF(Abstract)290.874 210.24 Q/F4 10
+/Times-Roman@0 SF(Berk)79.2 226.44 Q(ele)-.1 E 2.925(yD)-.15 G 2.925(Bi)
+-2.925 G 2.924(sa)-2.925 G 2.924(nO)-2.924 G .424
+(pen Source embedded database system with a number of k)-2.924 F .724
+-.15(ey a)-.1 H(dv).15 E .424(antages o)-.25 F -.15(ve)-.15 G 2.924(rc)
+.15 G .424(omparable sys-)-2.924 F 3.102(tems. It)79.2 238.44 R .602(is simple to use, supports concurrent access by multiple users, and pro)
+3.102 F .602(vides industrial-strength transaction)-.15 F 1.555
+(support, including survi)79.2 250.44 R 1.555
+(ving system and disk crashes.)-.25 F 1.554
+(This paper describes the design and technical features of)6.555 F(Berk)
+79.2 262.44 Q(ele)-.1 E 2.5(yD)-.15 G(B, the distrib)-2.5 E
+(ution, and its license.)-.2 E F3 3(1. Intr)79.2 286.44 R(oduction)-.216
+E F4 .691(The Berk)79.2 302.64 R(ele)-.1 E 3.191(yD)-.15 G .691
+(atabase \(Berk)-3.191 F(ele)-.1 E 3.191(yD)-.15 G .692
+(B\) is an embedded)-3.191 F .253
+(database system that can be used in applications requir)79.2 314.64 R
+(-)-.2 E 1.636(ing high-performance concurrent storage and retrie)79.2
+326.64 R -.25(va)-.25 G(l).25 E 2.619(of k)79.2 338.64 R -.15(ey)-.1 G
+(/v).15 E 2.619(alue pairs.)-.25 F 2.619(The softw)7.619 F 2.619
+(are is distrib)-.1 F 2.618(uted as a)-.2 F .057
+(library that can be link)79.2 350.64 R .058
+(ed directly into an application.)-.1 F(It)5.058 E(pro)79.2 362.64 Q
+1.454(vides a v)-.15 F 1.453(ariety of programmatic interf)-.25 F 1.453
+(aces, includ-)-.1 F .237
+(ing callable APIs for C, C++, Perl, Tcl and Ja)79.2 374.64 R -.25(va)
+-.2 G 5.237(.U).25 G(sers)-5.237 E .327(may do)79.2 386.64 R .327
+(wnload Berk)-.25 F(ele)-.1 E 2.827(yD)-.15 G 2.827(Bf)-2.827 G .326
+(rom Sleep)-2.827 F .326(ycat Softw)-.1 F(are')-.1 E(s)-.55 E -.8(We)
+79.2 398.64 S 2.5(bs).8 G(ite, at)-2.5 E/F5 10/Times-Italic@0 SF(www)2.5
+E(.sleepycat.com)-.74 E F4(.)A(Sleep)79.2 414.84 Q 1.33(ycat distrib)-.1
+F 1.33(utes Berk)-.2 F(ele)-.1 E 3.83(yD)-.15 G 3.83(Ba)-3.83 G 3.83(sa)
+-3.83 G 3.83(nO)-3.83 G 1.33(pen Source)-3.83 F 3.3(product. The)79.2
+426.84 R(compan)3.3 E 3.3(yc)-.15 G .8(ollects license fees for certain)
+-3.3 F(uses of the softw)79.2 438.84 Q
+(are and sells support and services.)-.1 E F3 3(1.1. History)79.2 468.84
+R F4(Berk)79.2 485.04 Q(ele)-.1 E 3.057(yD)-.15 G 3.057(Bb)-3.057 G
+-2.25 -.15(eg a)-3.057 H 3.058(na).15 G 3.058(san)-3.058 G 1.058 -.25
+(ew i)-3.058 H .558(mplementation of a hash).25 F .843
+(access method to replace both)79.2 497.04 R/F6 10/Courier@0 SF(hsearch)
+3.342 E F4 .842(and the v)3.342 F(ari-)-.25 E(ous)79.2 509.04 Q F6(dbm)
+5.466 E F4 2.967(implementations \()5.466 F F6(dbm)A F4 2.967(from A)
+5.467 F(T&T)-1.11 E(,)-.74 E F6(ndbm)5.467 E F4 1.334(from Berk)79.2
+521.04 R(ele)-.1 E 2.634 -.65(y, a)-.15 H(nd).65 E F6(gdbm)3.834 E F4
+1.334(from the GNU project\).)3.834 F(In)6.333 E .367
+(1990 Seltzer and Y)79.2 533.04 R .368
+(igit produced a package called Hash)-.55 F(to do this [Selt91].)79.2
+545.04 Q 3.106(The \214rst general release of Berk)79.2 561.24 R(ele)-.1
+E 5.606(yD)-.15 G 3.106(B, in 1991,)-5.606 F 3.038(included some interf)
+79.2 573.24 R 3.039(ace changes and a ne)-.1 F 5.539(wB)-.25 G(+tree)
+-5.539 E .887(access method.)79.2 585.24 R .886
+(At roughly the same time, Seltzer and)5.887 F 1.201(Olson de)79.2
+597.24 R -.15(ve)-.25 G 1.202
+(loped a prototype transaction system based).15 F 3.356(on Berk)79.2
+609.24 R(ele)-.1 E 5.856(yD)-.15 G 3.356(B, called LIBTP [Selt92], b)
+-5.856 F 3.355(ut ne)-.2 F -.15(ve)-.25 G(r).15 E(released the code.)
+79.2 621.24 Q .653(The 4.4BSD UNIX release included Berk)79.2 637.44 R
+(ele)-.1 E 3.153(yD)-.15 G 3.153(B1)-3.153 G(.85)-3.153 E .602(in 1992.)
+79.2 649.44 R .601(Seltzer and Bostic maintained the code in the)5.601 F
+1.545(early 1990s in Berk)79.2 661.44 R(ele)-.1 E 4.046(ya)-.15 G 1.546
+(nd in Massachusetts.)-4.046 F(Man)6.546 E(y)-.15 E
+(users adopted the code during this period.)79.2 673.44 Q .432
+(By mid-1996, users w)79.2 689.64 R .431
+(anted commercial support for the)-.1 F(softw)79.2 701.64 Q 7.033
+(are. In)-.1 F 4.533(response, Bostic and Seltzer formed)7.033 F(Sleep)
+79.2 713.64 Q 10.128(ycat Softw)-.1 F 12.628(are. The)-.1 F(compan)
+12.627 E 15.127(ye)-.15 G(nhances,)-15.127 E(distrib)323.2 286.44 Q
+1.623(utes, and supports Berk)-.2 F(ele)-.1 E 4.123(yD)-.15 G 4.124(Ba)
+-4.123 G 1.624(nd supporting)-4.124 F(softw)323.2 298.44 Q 2.2
+(are and documentation.)-.1 F(Sleep)7.2 E 2.2(ycat released v)-.1 F(er)
+-.15 E(-)-.2 E 1.677(sion 2.1 of Berk)323.2 310.44 R(ele)-.1 E 4.177(yD)
+-.15 G 4.178(Bi)-4.177 G 4.178(nm)-4.178 G 1.678(id-1997 with important)
+-4.178 F(ne)323.2 322.44 Q 2.56(wf)-.25 G .06
+(eatures, including support for concurrent access to)-2.56 F 4.176
+(databases. The)323.2 334.44 R(compan)4.176 E 4.177(ym)-.15 G(ak)-4.177
+E 1.677(es about three commer)-.1 F(-)-.2 E .958(cial releases a year)
+323.2 346.44 R 3.458(,a)-.4 G .957(nd most recently shipped v)-3.458 F
+(ersion)-.15 E(2.8.)323.2 358.44 Q F3 3(1.2. Ov)323.2 388.44 R(er)-.12 E
+(view of Berk)-.12 E(eley DB)-.12 E F4 3.094(The C interf)323.2 404.64 R
+3.094(aces in Berk)-.1 F(ele)-.1 E 5.594(yD)-.15 G 5.595(Bp)-5.594 G
+(ermit)-5.595 E F6(dbm)5.595 E F4(-style)A 4.586
+(record management for databases, with signi\214cant)323.2 416.64 R -.15
+(ex)323.2 428.64 S 1.273(tensions to handle duplicate data items ele).15
+F -.05(ga)-.15 G(ntly).05 E 3.773(,t)-.65 G(o)-3.773 E 2.427
+(deal with concurrent access, and to pro)323.2 440.64 R 2.427
+(vide transac-)-.15 F .71
+(tional support so that multiple changes can be simulta-)323.2 452.64 R
+1.273(neously committed \(so that the)323.2 464.64 R 3.773(ya)-.15 G
+1.273(re made permanent\))-3.773 F 1.848
+(or rolled back \(so that the database is restored to its)323.2 476.64 R
+(state at the be)323.2 488.64 Q(ginning of the transaction\).)-.15 E
+1.034(C++ and Ja)323.2 504.84 R 1.534 -.25(va i)-.2 H(nterf).25 E 1.033
+(aces pro)-.1 F 1.033(vide a small set of classes)-.15 F 1.961
+(for operating on a database.)323.2 516.84 R 1.961
+(The main class in both)6.961 F .587(cases is called)323.2 528.84 R F6
+(Db)3.086 E F4 3.086(,a)C .586(nd pro)-3.086 F .586
+(vides methods that encapsu-)-.15 F 1.128(late the)323.2 540.84 R F6
+(dbm)3.628 E F4 1.129(-style interf)B 1.129(aces that the C interf)-.1 F
+1.129(aces pro-)-.1 F(vide.)323.2 552.84 Q 2.565(Tcl and Perl interf)
+323.2 569.04 R 2.564(aces allo)-.1 F 5.064(wd)-.25 G -2.15 -.25(ev e)
+-5.064 H 2.564(lopers w).25 F 2.564(orking in)-.1 F 1.716
+(those languages to use Berk)323.2 581.04 R(ele)-.1 E 4.216(yD)-.15 G
+4.216(Bi)-4.216 G 4.217(nt)-4.216 G 1.717(heir applica-)-4.217 F 3.419
+(tions. Bindings)323.2 593.04 R .919
+(for both languages are included in the)3.419 F(distrib)323.2 605.04 Q
+(ution.)-.2 E(De)323.2 621.24 Q -.15(ve)-.25 G 1.069
+(lopers may compile their applications and link in).15 F(Berk)323.2
+633.24 Q(ele)-.1 E 2.5(yD)-.15 G 2.5(Bs)-2.5 G(tatically or dynamically)
+-2.5 E(.)-.65 E F3 3(1.3. Ho)323.2 663.24 R 3(wB)-.12 G(erk)-3 E
+(eley DB is used)-.12 E F4 .655(The Berk)323.2 679.44 R(ele)-.1 E 3.155
+(yD)-.15 G 3.154(Bl)-3.155 G .654(ibrary supports concurrent access to)
+-3.154 F 5.115(databases. It)323.2 691.44 R 2.616(can be link)5.115 F
+2.616(ed into standalone applica-)-.1 F 1.487
+(tions, into a collection of cooperating applications, or)323.2 703.44 R
+4.21(into serv)323.2 715.44 R 4.21
+(ers that handle requests and do database)-.15 F EP
+%%Page: 2 2
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF(operations on behalf of clients.)79.2 84 Q .858
+(Compared to using a standalone database management)79.2 100.2 R .846
+(system, Berk)79.2 112.2 R(ele)-.1 E 3.346(yD)-.15 G 3.346(Bi)-3.346 G
+3.346(se)-3.346 G .846(asy to understand and simple)-3.346 F 3.826
+(to use.)79.2 124.2 R 3.826(The softw)8.826 F 3.826
+(are stores and retrie)-.1 F -.15(ve)-.25 G 6.325(sr).15 G(ecords,)
+-6.325 E 2.77(which consist of k)79.2 136.2 R -.15(ey)-.1 G(/v).15 E
+2.77(alue pairs.)-.25 F -2.15 -.25(Ke y)7.77 H 5.27(sa).25 G 2.77
+(re used to)-5.27 F .698(locate items and can be an)79.2 148.2 R 3.198
+(yd)-.15 G .698(ata type or structure sup-)-3.198 F
+(ported by the programming language.)79.2 160.2 Q .813
+(The programmer can pro)79.2 176.4 R .813(vide the functions that Berk)
+-.15 F(e-)-.1 E(le)79.2 188.4 Q 3.264(yD)-.15 G 3.264(Bu)-3.264 G .763
+(ses to operate on k)-3.264 F -.15(ey)-.1 G 3.263(s. F).15 F .763(or e)
+-.15 F .763(xample, B+trees)-.15 F 1.72
+(can use a custom comparison function, and the Hash)79.2 200.4 R .519
+(access method can use a custom hash function.)79.2 212.4 R(Berk)5.518 E
+(e-)-.1 E(le)79.2 224.4 Q 5.222(yD)-.15 G 5.222(Bu)-5.222 G 2.722
+(ses def)-5.222 F 2.723(ault functions if none are supplied.)-.1 F .873
+(Otherwise, Berk)79.2 236.4 R(ele)-.1 E 3.373(yD)-.15 G 3.373(Bd)-3.373
+G .873(oes not e)-3.373 F .873(xamine or interpret)-.15 F .934(either k)
+79.2 248.4 R -.15(ey)-.1 G 3.434(so).15 G 3.434(rv)-3.434 G .934
+(alues in an)-3.684 F 3.434(yw)-.15 G(ay)-3.534 E 5.934(.V)-.65 G .934
+(alues may be arbi-)-7.044 F(trarily long.)79.2 260.4 Q .69
+(It is also important to understand what Berk)79.2 276.6 R(ele)-.1 E
+3.19(yD)-.15 G 3.19(Bi)-3.19 G(s)-3.19 E 4.365(not. It)79.2 288.6 R
+1.865(is not a database serv)4.365 F 1.866(er that handles netw)-.15 F
+(ork)-.1 E 2.797(requests. It)79.2 300.6 R .297
+(is not an SQL engine that e)2.797 F -.15(xe)-.15 G .296(cutes queries.)
+.15 F 1.547(It is not a relational or object-oriented database man-)79.2
+312.6 R(agement system.)79.2 324.6 Q 1.101(It is possible to b)79.2
+340.8 R 1.101(uild an)-.2 F 3.601(yo)-.15 G 3.601(ft)-3.601 G 1.101
+(hose on top of Berk)-3.601 F(ele)-.1 E(y)-.15 E 2.116(DB, b)79.2 352.8
+R 2.116(ut the package, as distrib)-.2 F 2.117(uted, is an embedded)-.2
+F 1.444(database engine.)79.2 364.8 R 1.444
+(It has been designed to be portable,)6.444 F(small, f)79.2 376.8 Q
+(ast, and reliable.)-.1 E/F1 12/Times-Bold@0 SF 3(1.4. A)79.2 406.8 R
+(pplications that use Berk)-.3 E(eley DB)-.12 E F0(Berk)79.2 423 Q(ele)
+-.1 E 4.248(yD)-.15 G 4.248(Bi)-4.248 G 4.249(se)-4.248 G 1.749
+(mbedded in a v)-4.249 F 1.749(ariety of proprietary)-.25 F 3.84
+(and Open Source softw)79.2 435 R 3.84(are packages.)-.1 F 3.84
+(This section)8.84 F(highlights a fe)79.2 447 Q 2.5(wo)-.25 G 2.5(ft)
+-2.5 G(he products that use it.)-2.5 E 1.467(Directory serv)79.2 463.2 R
+1.467(ers, which do data storage and retrie)-.15 F -.25(va)-.25 G(l).25
+E 2.823(using the Local Directory Access Protocol \(LD)79.2 475.2 R
+(AP\),)-.4 E(pro)79.2 487.2 Q .956
+(vide naming and directory lookup service on local-)-.15 F 2.837
+(area netw)79.2 499.2 R 5.337(orks. This)-.1 F 2.837
+(service is, essentially)5.337 F 5.336(,d)-.65 G(atabase)-5.336 E .039
+(query and update, b)79.2 511.2 R .039
+(ut uses a simple protocol rather than)-.2 F 2.202(SQL or ODBC.)79.2
+523.2 R(Berk)7.201 E(ele)-.1 E 4.701(yD)-.15 G 4.701(Bi)-4.701 G 4.701
+(st)-4.701 G 2.201(he embedded data)-4.701 F 1.288
+(manager in the majority of deplo)79.2 535.2 R 1.289(yed directory serv)
+-.1 F(ers)-.15 E(today)79.2 547.2 Q 4.855(,i)-.65 G 2.355(ncluding LD)
+-4.855 F 2.355(AP serv)-.4 F 2.355(ers from Netscape, Mes-)-.15 F
+(sageDirect \(formerly Isode\), and others.)79.2 559.2 Q(Berk)79.2 575.4
+Q(ele)-.1 E 4.385(yD)-.15 G 4.385(Bi)-4.385 G 4.385(sa)-4.385 G 1.886
+(lso embedded in a lar)-4.385 F 1.886(ge number of)-.18 F 5.302
+(mail serv)79.2 587.4 R 7.802(ers. Intermail,)-.15 F 5.302(from Softw)
+7.802 F 5.302(are.com, uses)-.1 F(Berk)79.2 599.4 Q(ele)-.1 E 4.613(yD)
+-.15 G 4.613(Ba)-4.613 G 4.613(sam)-4.613 G 2.114
+(essage store and as the backing)-4.613 F 3.597
+(store for its directory serv)79.2 611.4 R(er)-.15 E 8.597(.T)-.55 G
+3.597(he sendmail serv)-8.597 F(er)-.15 E 1.175
+(\(including both the commercial Sendmail Pro of)79.2 623.4 R(fering)
+-.25 E 3.283(from Sendmail, Inc. and the v)79.2 635.4 R 3.283
+(ersion distrib)-.15 F 3.282(uted by)-.2 F(sendmail.or)79.2 647.4 Q
+2.304(g\) uses Berk)-.18 F(ele)-.1 E 4.804(yD)-.15 G 4.804(Bt)-4.804 G
+4.804(os)-4.804 G 2.305(tore aliases and)-4.804 F 9.01
+(other information.)79.2 659.4 R(Similarly)14.01 E 11.51(,P)-.65 G 9.01
+(ost\214x \(formerly)-11.51 F 3.465(VMailer\) uses Berk)79.2 671.4 R
+(ele)-.1 E 5.965(yD)-.15 G 5.965(Bt)-5.965 G 5.965(os)-5.965 G 3.465
+(tore administrati)-5.965 F -.15(ve)-.25 G(information.)79.2 683.4 Q
+.134(In addition, Berk)79.2 699.6 R(ele)-.1 E 2.634(yD)-.15 G 2.633(Bi)
+-2.634 G 2.633(se)-2.633 G .133(mbedded in a wide v)-2.633 F(ariety)-.25
+E 4.994(of other softw)79.2 711.6 R 4.994(are products.)-.1 F 4.994
+(Example applications)9.994 F .373
+(include managing access control lists, storing user k)323.2 84 R -.15
+(ey)-.1 G(s).15 E 2.75(in a public-k)323.2 96 R 3.05 -.15(ey i)-.1 H
+2.75(nfrastructure, recording machine-to-).15 F(netw)323.2 108 Q .519
+(ork-address mappings in address serv)-.1 F .518(ers, and stor)-.15 F(-)
+-.2 E .411(ing con\214guration and de)323.2 120 R .412
+(vice information in video post-)-.25 F(production softw)323.2 132 Q
+(are.)-.1 E(Finally)323.2 148.2 Q 4.978(,B)-.65 G(erk)-4.978 E(ele)-.1 E
+4.978(yD)-.15 G 4.978(Bi)-4.978 G 4.978(sap)-4.978 G 2.478(art of man)
+-4.978 F 4.977(yo)-.15 G 2.477(ther Open)-4.977 F .005(Source softw)
+323.2 160.2 R .005(are packages a)-.1 F -.25(va)-.2 G .006
+(ilable on the Internet.).25 F -.15(Fo)5.006 G(r).15 E -.15(ex)323.2
+172.2 S .604(ample, the softw).15 F .604
+(are is embedded in the Apache W)-.1 F(eb)-.8 E(serv)323.2 184.2 Q
+(er and the Gnome desktop.)-.15 E F1 3(2. Access)323.2 214.2 R(Methods)3
+E F0 .828(In database terminology)323.2 230.4 R 3.329(,a)-.65 G 3.329
+(na)-3.329 G .829(ccess method is the disk-)-3.329 F 1.964
+(based structure used to store data and the operations)323.2 242.4 R -.2
+(av)323.2 254.4 S 6.053(ailable on that structure.)-.05 F -.15(Fo)11.053
+G 8.554(re).15 G 6.054(xample, man)-8.704 F(y)-.15 E 3.853
+(database systems support a B+tree access method.)323.2 266.4 R 1.203
+(B+trees allo)323.2 278.4 R 3.703(we)-.25 G 1.203
+(quality-based lookups \(\214nd k)-3.703 F -.15(ey)-.1 G 3.704(se).15 G
+(qual)-3.704 E 4(to some constant\), range-based lookups \(\214nd k)
+323.2 290.4 R -.15(ey)-.1 G(s).15 E 1.188(between tw)323.2 302.4 R 3.688
+(oc)-.1 G 1.189(onstants\) and record insertion and dele-)-3.688 F
+(tion.)323.2 314.4 Q(Berk)323.2 330.6 Q(ele)-.1 E 4.729(yD)-.15 G 4.729
+(Bs)-4.729 G 2.228(upports three access methods: B+tree,)-4.729 F 1.553
+(Extended Linear Hashing \(Hash\), and Fix)323.2 342.6 R 1.553(ed- or V)
+-.15 F(ari-)-1.11 E 3.639(able-length Records \(Recno\).)323.2 354.6 R
+3.638(All three operate on)8.638 F 1.956(records composed of a k)323.2
+366.6 R 2.256 -.15(ey a)-.1 H 1.956(nd a data v).15 F 4.456(alue. In)
+-.25 F(the)4.456 E 1.301(B+tree and Hash access methods, k)323.2 378.6 R
+-.15(ey)-.1 G 3.801(sc).15 G 1.301(an ha)-3.801 F 1.601 -.15(ve a)-.2 H
+(rbi-).15 E 3.595(trary structure.)323.2 390.6 R 3.596
+(In the Recno access method, each)8.595 F .266
+(record is assigned a record number)323.2 402.6 R 2.765(,w)-.4 G .265
+(hich serv)-2.765 F .265(es as the)-.15 F -.1(ke)323.2 414.6 S 4.106
+-.65(y. I)-.05 H 2.806(na).65 G .306(ll the access methods, the v)-2.806
+F .306(alue can ha)-.25 F .606 -.15(ve a)-.2 H(rbi-).15 E 1.417
+(trary structure.)323.2 426.6 R 1.417
+(The programmer can supply compari-)6.417 F 2.129
+(son or hashing functions for k)323.2 438.6 R -.15(ey)-.1 G 2.129
+(s, and Berk).15 F(ele)-.1 E 4.629(yD)-.15 G(B)-4.629 E
+(stores and retrie)323.2 450.6 Q -.15(ve)-.25 G 2.5(sv).15 G
+(alues without interpreting them.)-2.75 E 1.069
+(All of the access methods use the host \214lesystem as a)323.2 466.8 R
+(backing store.)323.2 478.8 Q F1 3(2.1. Hash)323.2 508.8 R F0(Berk)323.2
+525 Q(ele)-.1 E 6.485(yD)-.15 G 6.485(Bi)-6.485 G 3.986
+(ncludes a Hash access method that)-6.485 F 9.863(implements e)323.2 537
+R 9.862(xtended linear hashing [Litw80].)-.15 F .017
+(Extended linear hashing adjusts the hash function as the)323.2 549 R
+.507(hash table gro)323.2 561 R .506(ws, attempting to k)-.25 F .506
+(eep all b)-.1 F(uck)-.2 E .506(ets under)-.1 F(-)-.2 E
+(full in the steady state.)323.2 573 Q 1.649
+(The Hash access method supports insertion and dele-)323.2 589.2 R .259
+(tion of records and lookup by e)323.2 601.2 R .259(xact match only)-.15
+F 5.258(.A)-.65 G(ppli-)-5.258 E .038(cations may iterate o)323.2 613.2
+R -.15(ve)-.15 G 2.538(ra).15 G .038(ll records stored in a table, b)
+-2.538 F(ut)-.2 E(the order in which the)323.2 625.2 Q 2.5(ya)-.15 G
+(re returned is unde\214ned.)-2.5 E F1 3(2.2. B+tr)323.2 655.2 R(ee)
+-.216 E F0(Berk)323.2 671.4 Q(ele)-.1 E 7.184(yD)-.15 G 7.184(Bi)-7.184
+G 4.683(ncludes a B+tree [Come79] access)-7.184 F 2.502(method. B+trees)
+323.2 683.4 R .002(store records of k)2.502 F -.15(ey)-.1 G(/v).15 E
+.003(alue pairs in leaf)-.25 F .52(pages, and pairs of \(k)323.2 695.4 R
+-.15(ey)-.1 G 3.02(,c)-.5 G .52(hild page address\) at internal)-3.02 F
+5.384(nodes. K)323.2 707.4 R -.15(ey)-.25 G 5.384(si).15 G 5.384(nt)
+-5.384 G 2.885(he tree are stored in sorted order)-5.384 F(,)-.4 E EP
+%%Page: 3 3
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF .576
+(where the order is determined by the comparison func-)79.2 84 R .815
+(tion supplied when the database w)79.2 96 R .815(as created.)-.1 F -.15
+(Pa)5.815 G .815(ges at).15 F .389(the leaf le)79.2 108 R -.15(ve)-.25 G
+2.889(lo).15 G 2.889(ft)-2.889 G .389
+(he tree include pointers to their neigh-)-2.889 F 1.444
+(bors to simplify tra)79.2 120 R -.15(ve)-.2 G 3.944(rsal. B+trees).15 F
+1.445(support lookup by)3.944 F -.15(ex)79.2 132 S .068
+(act match \(equality\) or range \(greater than or equal to).15 F 2.891
+(ak)79.2 144 S -.15(ey)-2.991 G 2.891(\). Lik).15 F 2.891(eH)-.1 G .391
+(ash tables, B+trees support record inser)-2.891 F(-)-.2 E
+(tion, deletion, and iteration o)79.2 156 Q -.15(ve)-.15 G 2.5(ra).15 G
+(ll records in the tree.)-2.5 E .646
+(As records are inserted and pages in the B+tree \214ll up,)79.2 172.2 R
+(the)79.2 184.2 Q 2.722(ya)-.15 G .223(re split, with about half the k)
+-2.722 F -.15(ey)-.1 G 2.723(sg).15 G .223(oing into a ne)-2.723 F(w)
+-.25 E 1.603(peer page at the same le)79.2 196.2 R -.15(ve)-.25 G 4.103
+(li).15 G 4.103(nt)-4.103 G 1.603(he tree.)-4.103 F 1.603(Most B+tree)
+6.603 F .387(implementations lea)79.2 208.2 R .687 -.15(ve b)-.2 H .387
+(oth nodes half-full after a split.).15 F 2.763
+(This leads to poor performance in a common case,)79.2 220.2 R 1.522
+(where the caller inserts k)79.2 232.2 R -.15(ey)-.1 G 4.022(si).15 G
+4.022(no)-4.022 G(rder)-4.022 E 6.522(.T)-.55 G 4.023(oh)-7.322 G 1.523
+(andle this)-4.023 F 1.643(case, Berk)79.2 244.2 R(ele)-.1 E 4.143(yD)
+-.15 G 4.143(Bk)-4.143 G 1.642(eeps track of the insertion order)-4.243
+F(,)-.4 E 2.023(and splits pages une)79.2 256.2 R -.15(ve)-.25 G 2.024
+(nly to k).15 F 2.024(eep pages fuller)-.1 F 7.024(.T)-.55 G(his)-7.024
+E 2.3(reduces tree size, yielding better search performance)79.2 268.2 R
+(and smaller databases.)79.2 280.2 Q 3.177
+(On deletion, empty pages are coalesced by re)79.2 296.4 R -.15(ve)-.25
+G(rse).15 E 2.03(splits into single pages.)79.2 308.4 R 2.03
+(The access method does no)7.03 F .347
+(other page balancing on insertion or deletion.)79.2 320.4 R -2.15 -.25
+(Ke y)5.348 H 2.848(sa).25 G(re)-2.848 E 1.927(not mo)79.2 332.4 R -.15
+(ve)-.15 G 4.427(da).15 G 1.927(mong pages at e)-4.427 F -.15(ve)-.25 G
+1.926(ry update to k).15 F 1.926(eep the)-.1 F 2.206
+(tree well-balanced.)79.2 344.4 R 2.207(While this could impro)7.206 F
+2.507 -.15(ve s)-.15 H(earch).15 E 2.341
+(times in some cases, the additional code comple)79.2 356.4 R(xity)-.15
+E(leads to slo)79.2 368.4 Q(wer updates and is prone to deadlocks.)-.25
+E -.15(Fo)79.2 384.6 S 2.948(rs).15 G(implicity)-2.948 E 2.948(,B)-.65 G
+(erk)-2.948 E(ele)-.1 E 2.949(yD)-.15 G 2.949(BB)-2.949 G .449
+(+trees do no pre\214x com-)-2.949 F(pression of k)79.2 396.6 Q -.15(ey)
+-.1 G 2.5(sa).15 G 2.5(ti)-2.5 G(nternal or leaf nodes.)-2.5 E/F1 12
+/Times-Bold@0 SF 3(2.3. Recno)79.2 426.6 R F0(Berk)79.2 442.8 Q(ele)-.1
+E 2.736(yD)-.15 G 2.736(Bi)-2.736 G .236(ncludes a \214x)-2.736 F .236
+(ed- or v)-.15 F .235(ariable-length record)-.25 F 5.075
+(access method, called)79.2 454.8 R/F2 10/Times-Italic@0 SF(Recno)7.575
+E F0 10.075(.T)C 5.075(he Recno access)-10.075 F .896
+(method assigns logical record numbers to each record,)79.2 466.8 R .978
+(and can search for and update records by record num-)79.2 478.8 R(ber)
+79.2 490.8 Q 5.037(.R)-.55 G .037(ecno is able, for e)-5.037 F .037
+(xample, to load a te)-.15 F .036(xt \214le into a)-.15 F 1.514
+(database, treating each line as a record.)79.2 502.8 R 1.514
+(This permits)6.514 F -.1(fa)79.2 514.8 S 1.313
+(st searches by line number for applications lik).1 F 3.812(et)-.1 G
+-.15(ex)-3.812 G(t).15 E(editors [Ston82].)79.2 526.8 Q 2.59
+(Recno is actually b)79.2 543 R 2.59(uilt on top of the B+tree access)
+-.2 F 3.192(method and pro)79.2 555 R 3.191(vides a simple interf)-.15 F
+3.191(ace for storing)-.1 F 3.14(sequentially-ordered data v)79.2 567 R
+5.64(alues. The)-.25 F 3.14(Recno access)5.64 F 2.266
+(method generates k)79.2 579 R -.15(ey)-.1 G 4.766(si).15 G(nternally)
+-4.766 E 7.266(.T)-.65 G 2.266(he programmer')-7.266 F(s)-.55 E(vie)79.2
+591 Q 4.102(wo)-.25 G 4.102(ft)-4.102 G 1.602(he v)-4.102 F 1.602
+(alues is that the)-.25 F 4.102(ya)-.15 G 1.603(re numbered sequen-)
+-4.102 F .254(tially from one.)79.2 603 R(De)5.254 E -.15(ve)-.25 G .254
+(lopers can choose to ha).15 F .553 -.15(ve r)-.2 H(ecords).15 E 9
+(automatically renumbered when lo)79.2 615 R(wer)-.25 E(-numbered)-.2 E
+.041(records are added or deleted.)79.2 627 R .041(In this case, ne)
+5.041 F 2.541(wk)-.25 G -.15(ey)-2.641 G 2.541(sc).15 G(an)-2.541 E
+(be inserted between e)79.2 639 Q(xisting k)-.15 E -.15(ey)-.1 G(s.).15
+E F1 3(3. F)79.2 669 R(eatur)-.3 E(es)-.216 E F0 1.827
+(This section describes important features of Berk)79.2 685.2 R(ele)-.1
+E(y)-.15 E 3.456(DB. In)79.2 697.2 R .956(general, de)3.456 F -.15(ve)
+-.25 G .956(lopers can choose which features).15 F .488
+(are useful to them, and use only those that are required)79.2 709.2 R
+(by their application.)323.2 84 Q -.15(Fo)323.2 100.2 S 3.529(re).15 G
+1.029(xample, when an application opens a database, it)-3.679 F .101
+(can declare the de)323.2 112.2 R .101(gree of concurrenc)-.15 F 2.601
+(ya)-.15 G .102(nd reco)-2.601 F -.15(ve)-.15 G .102(ry that).15 F .049
+(it requires.)323.2 124.2 R .048
+(Simple stand-alone applications, and in par)5.049 F(-)-.2 E .491
+(ticular ports of applications that used)323.2 136.2 R/F3 10/Courier@0
+SF(dbm)2.991 E F0 .491(or one of its)2.991 F -.25(va)323.2 148.2 S 1.093
+(riants, generally do not require concurrent access or).25 F .975
+(crash reco)323.2 160.2 R -.15(ve)-.15 G(ry).15 E 5.975(.O)-.65 G .975
+(ther applications, such as enterprise-)-5.975 F 3.08
+(class database management systems that store sales)323.2 172.2 R 2.643
+(transactions or other critical data, need full transac-)323.2 184.2 R
+3.93(tional service.)323.2 196.2 R 3.93(Single-user operation is f)8.93
+F 3.93(aster than)-.1 F 1.175(multi-user operation, since no o)323.2
+208.2 R -.15(ve)-.15 G 1.176(rhead is incurred by).15 F 3.156
+(locking. Running)323.2 220.2 R .656(with the reco)3.156 F -.15(ve)-.15
+G .655(ry system disabled is).15 F -.1(fa)323.2 232.2 S 1.732
+(ster than running with it enabled, since log records).1 F 2.703
+(need not be written when changes are made to the)323.2 244.2 R
+(database.)323.2 256.2 Q .851
+(In addition, some core subsystems, including the lock-)323.2 272.4 R
+.345(ing system and the logging f)323.2 284.4 R(acility)-.1 E 2.844(,c)
+-.65 G .344(an be used outside)-2.844 F 1.772(the conte)323.2 296.4 R
+1.772(xt of the access methods as well.)-.15 F(Although)6.773 E(fe)323.2
+308.4 Q 4.284(wu)-.25 G 1.784(sers ha)-4.284 F 2.084 -.15(ve c)-.2 H
+1.784(hosen to do so, it is possible to use).15 F .939
+(only the lock manager in Berk)323.2 320.4 R(ele)-.1 E 3.439(yD)-.15 G
+3.439(Bt)-3.439 G 3.439(oc)-3.439 G .939(ontrol con-)-3.439 F(currenc)
+323.2 332.4 Q 4.743(yi)-.15 G 4.743(na)-4.743 G 4.743(na)-4.743 G 2.242
+(pplication, without using an)-4.743 F 4.742(yo)-.15 G 4.742(ft)-4.742 G
+(he)-4.742 E .158(standard database services.)323.2 344.4 R(Alternati)
+5.158 E -.15(ve)-.25 G(ly).15 E 2.658(,t)-.65 G .159(he caller can)
+-2.658 F(inte)323.2 356.4 Q .07
+(grate locking of non-database resources with Berk)-.15 F(e-)-.1 E(le)
+323.2 368.4 Q 5.201(yD)-.15 G(B')-5.201 E 5.201(st)-.55 G 2.702
+(ransactional tw)-5.201 F 2.702(o-phase locking system, to)-.1 F 2.892
+(impose transaction semantics on objects outside the)323.2 380.4 R
+(database.)323.2 392.4 Q F1 3(3.1. Pr)323.2 422.4 R
+(ogrammatic interfaces)-.216 E F0(Berk)323.2 438.6 Q(ele)-.1 E 4.008(yD)
+-.15 G 4.008(Bd)-4.008 G 1.509(e\214nes a simple API for database man-)
+-4.008 F 3.452(agement. The)323.2 450.6 R .952
+(package does not include industry-stan-)3.452 F 1.898
+(dard programmatic interf)323.2 462.6 R 1.898
+(aces such as Open Database)-.1 F(Connecti)323.2 474.6 Q .852
+(vity \(ODBC\), Object Linking and Embedding)-.25 F .817
+(for Databases \(OleDB\), or Structured Query Language)323.2 486.6 R
+4.027(\(SQL\). These)323.2 498.6 R(interf)4.027 E 1.527
+(aces, while useful, were designed)-.1 F 2.477
+(to promote interoperability of database systems, and)323.2 510.6 R
+(not simplicity or performance.)323.2 522.6 Q 3.192
+(In response to customer demand, Berk)323.2 538.8 R(ele)-.1 E 5.691(yD)
+-.15 G 5.691(B2)-5.691 G(.5)-5.691 E .538
+(introduced support for the XA standard [Open94].)323.2 550.8 R(XA)5.539
+E .52(permits Berk)323.2 562.8 R(ele)-.1 E 3.02(yD)-.15 G 3.02(Bt)-3.02
+G 3.02(op)-3.02 G .52(articipate in distrib)-3.02 F .52(uted trans-)-.2
+F 3.373(actions under a transaction processing monitor lik)323.2 574.8 R
+(e)-.1 E -.45(Tu)323.2 586.8 S -.15(xe).45 G 1.31(do from BEA Systems.)
+.15 F(Lik)6.31 E 3.81(eX)-.1 G 1.31(A, other standard)-3.81 F(interf)
+323.2 598.8 Q .99(aces can be b)-.1 F .99
+(uilt on top of the core system.)-.2 F(The)5.99 E .846
+(standards do not belong inside Berk)323.2 610.8 R(ele)-.1 E 3.346(yD)
+-.15 G .846(B, since not)-3.346 F(all applications need them.)323.2
+622.8 Q F1 3(3.2. W)323.2 652.8 R(orking with r)-.9 E(ecords)-.216 E F0
+3.134(Ad)323.2 669 S .634
+(atabase user may need to search for particular k)-3.134 F -.15(ey)-.1 G
+(s).15 E .908(in a database, or may simply w)323.2 681 R .908
+(ant to bro)-.1 F .907(wse a)-.25 F -.25(va)-.2 G(ilable).25 E 4.101
+(records. Berk)323.2 693 R(ele)-.1 E 4.101(yD)-.15 G 4.101(Bs)-4.101 G
+1.601(upports both k)-4.101 F -.15(ey)-.1 G 1.602(ed access, to).15 F
+.173(\214nd one or more records with a gi)323.2 705 R -.15(ve)-.25 G
+2.673(nk).15 G -.15(ey)-2.773 G 2.673(,o)-.5 G 2.673(rs)-2.673 G
+(equential)-2.673 E .53(access, to retrie)323.2 717 R .83 -.15(ve a)-.25
+H .53(ll the records in the database one at).15 F EP
+%%Page: 4 4
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF 6.34(at)79.2 84 S 6.34(ime. The)-6.34 F 3.84
+(order of the records returned during)6.34 F .208
+(sequential scans depends on the access method.)79.2 96 R(B+tree)5.209 E
+1.495(and Recno databases return records in sort order)79.2 108 R 3.995
+(,a)-.4 G(nd)-3.995 E .023
+(Hash databases return them in apparently random order)79.2 120 R(.)-.55
+E(Similarly)79.2 136.2 Q 4.959(,B)-.65 G(erk)-4.959 E(ele)-.1 E 4.959
+(yD)-.15 G 4.958(Bd)-4.959 G 2.458(e\214nes simple interf)-4.958 F 2.458
+(aces for)-.1 F
+(inserting, updating, and deleting records in a database.)79.2 148.2 Q
+/F1 12/Times-Bold@0 SF 3(3.3. Long)79.2 178.2 R -.12(ke)3 G(ys and v).12
+E(alues)-.12 E F0(Berk)79.2 194.4 Q(ele)-.1 E 3.553(yD)-.15 G 3.553(Bm)
+-3.553 G 1.053(anages k)-3.553 F -.15(ey)-.1 G 3.553(sa).15 G 1.053
+(nd v)-3.553 F 1.053(alues as lar)-.25 F 1.054(ge as 2)-.18 F/F2 8
+/Times-Roman@0 SF(32)-5 I F0 3.192(bytes. Since)79.2 206.4 R .692
+(the time required to cop)3.192 F 3.192(yar)-.1 G .692(ecord is pro-)
+-3.192 F 1.895(portional to its size, Berk)79.2 218.4 R(ele)-.1 E 4.396
+(yD)-.15 G 4.396(Bi)-4.396 G 1.896(ncludes interf)-4.396 F(aces)-.1 E
+4.507(that operate on partial records.)79.2 230.4 R 4.507
+(If an application)9.507 F 1.273(requires only part of a lar)79.2 242.4
+R 1.274(ge record, it requests partial)-.18 F .026(record retrie)79.2
+254.4 R -.25(va)-.25 G .026(l, and recei).25 F -.15(ve)-.25 G 2.526(sj)
+.15 G .025(ust the bytes that it needs.)-2.526 F(The smaller cop)79.2
+266.4 Q 2.5(ys)-.1 G -2.25 -.2(av e)-2.5 H 2.5(sb).2 G
+(oth time and memory)-2.5 E(.)-.65 E(Berk)79.2 282.6 Q(ele)-.1 E 3.206
+(yD)-.15 G 3.206(Ba)-3.206 G(llo)-3.206 E .706
+(ws the programmer to de\214ne the data)-.25 F 2.72(types of k)79.2
+294.6 R -.15(ey)-.1 G 5.22(sa).15 G 2.72(nd v)-5.22 F 5.22(alues. De)
+-.25 F -.15(ve)-.25 G 2.72(lopers use an).15 F 5.22(yt)-.15 G(ype)-5.22
+E -.15(ex)79.2 306.6 S(pressible in the programming language.).15 E F1 3
+(3.4. Lar)79.2 336.6 R(ge databases)-.12 E F0 3.255(As)79.2 352.8 S .755
+(ingle database managed by Berk)-3.255 F(ele)-.1 E 3.256(yD)-.15 G 3.256
+(Bc)-3.256 G .756(an be up)-3.256 F 1.716(to 2)79.2 364.8 R F2(48)-5 I
+F0 1.716(bytes, or 256 petabytes, in size.)4.216 5 N(Berk)6.715 E(ele)
+-.1 E 4.215(yD)-.15 G(B)-4.215 E 2.144
+(uses the host \214lesystem as the backing store for the)79.2 376.8 R
+2.668(database, so lar)79.2 388.8 R 2.667
+(ge databases require big \214le support)-.18 F 3.113
+(from the operating system.)79.2 400.8 R(Sleep)8.113 E 3.114(ycat Softw)
+-.1 F 3.114(are has)-.1 F 5.712(customers using Berk)79.2 412.8 R(ele)
+-.1 E 8.212(yD)-.15 G 8.212(Bt)-8.212 G 8.211(om)-8.212 G 5.711
+(anage single)-8.211 F(databases in e)79.2 424.8 Q(xcess of 100 gig)-.15
+E(abytes.)-.05 E F1 3(3.5. Main)79.2 454.8 R(memory databases)3 E F0
+1.171(Applications that do not require persistent storage can)79.2 471 R
+.119(create databases that e)79.2 483 R .119(xist only in main memory)
+-.15 F 5.118(.T)-.65 G(hese)-5.118 E .542(databases bypass the o)79.2
+495 R -.15(ve)-.15 G .543(rhead imposed by the I/O sys-).15 F
+(tem altogether)79.2 507 Q(.)-.55 E 2.144
+(Some applications do need to use disk as a backing)79.2 523.2 R 2.248
+(store, b)79.2 535.2 R 2.249(ut run on machines with v)-.2 F 2.249
+(ery lar)-.15 F 2.249(ge memory)-.18 F(.)-.65 E(Berk)79.2 547.2 Q(ele)
+-.1 E 2.799(yD)-.15 G 2.799(Bi)-2.799 G 2.799(sa)-2.799 G .299
+(ble to manage v)-2.799 F .299(ery lar)-.15 F .299(ge shared mem-)-.18 F
+.128(ory re)79.2 559.2 R .129
+(gions for cached data pages, log records, and lock)-.15 F 3.938
+(management. F)79.2 571.2 R 1.437(or e)-.15 F 1.437
+(xample, the cache re)-.15 F 1.437(gion used for)-.15 F .033
+(data pages may be gig)79.2 583.2 R .034
+(abytes in size, reducing the lik)-.05 F(eli-)-.1 E .639(hood that an)
+79.2 595.2 R 3.139(yr)-.15 G .639
+(ead operation will need to visit the disk)-3.139 F 1.201
+(in the steady state.)79.2 607.2 R 1.201
+(The programmer declares the size)6.201 F(of the cache re)79.2 619.2 Q
+(gion at startup.)-.15 E(Finally)79.2 635.4 Q 7.048(,m)-.65 G(an)-7.048
+E 7.048(yo)-.15 G 4.548(perating systems pro)-7.048 F 4.548
+(vide memory-)-.15 F 2.532(mapped \214le services that are much f)79.2
+647.4 R 2.533(aster than their)-.1 F 2.602
+(general-purpose \214le system interf)79.2 659.4 R 5.102(aces. Berk)-.1
+F(ele)-.1 E 5.102(yD)-.15 G(B)-5.102 E 5.118
+(can memory-map its database \214les for read-only)79.2 671.4 R 3.917
+(database use.)79.2 683.4 R 3.917(The application operates on records)
+8.917 F 2.069(stored directly on the pages, with no cache manage-)79.2
+695.4 R 1.557(ment o)79.2 707.4 R -.15(ve)-.15 G 4.057(rhead. Because)
+.15 F 1.556(the application gets pointers)4.057 F 1.265
+(directly into the Berk)323.2 84 R(ele)-.1 E 3.765(yD)-.15 G 3.765(Bp)
+-3.765 G 1.265(ages, writes cannot be)-3.765 F 3.775
+(permitted. Otherwise,)323.2 96 R 1.275(changes could bypass the lock-)
+3.775 F .23(ing and logging systems, and softw)323.2 108 R .23
+(are errors could cor)-.1 F(-)-.2 E 4.007(rupt the database.)323.2 120 R
+4.006(Read-only applications can use)9.007 F(Berk)323.2 132 Q(ele)-.1 E
+2.893(yD)-.15 G(B')-2.893 E 2.893(sm)-.55 G .393
+(emory-mapped \214le service to impro)-2.893 F -.15(ve)-.15 G
+(performance on most architectures.)323.2 144 Q F1 3
+(3.6. Con\214gurable)323.2 174 R(page size)3 E F0 .111
+(Programmers declare the size of the pages used by their)323.2 190.2 R
+.403(access methods when the)323.2 202.2 R 2.903(yc)-.15 G .403
+(reate a database.)-2.903 F(Although)5.403 E(Berk)323.2 214.2 Q(ele)-.1
+E 4.046(yD)-.15 G 4.046(Bp)-4.046 G(ro)-4.046 E 1.546
+(vides reasonable def)-.15 F 1.546(aults, de)-.1 F -.15(ve)-.25 G
+(lopers).15 E 3.64(may o)323.2 226.2 R -.15(ve)-.15 G 3.64
+(rride them to control system performance.).15 F .793
+(Small pages reduce the number of records that \214t on a)323.2 238.2 R
+.353(single page.)323.2 250.2 R(Fe)5.353 E .353
+(wer records on a page means that fe)-.25 F(wer)-.25 E .724
+(records are lock)323.2 262.2 R .724(ed when the page is lock)-.1 F .723
+(ed, impro)-.1 F(ving)-.15 E(concurrenc)323.2 274.2 Q 5.262 -.65(y. T)
+-.15 H 1.462(he per).65 F 1.462(-page o)-.2 F -.15(ve)-.15 G 1.462
+(rhead is proportionally).15 F 2.29
+(higher with smaller pages, of course, b)323.2 286.2 R 2.29(ut de)-.2 F
+-.15(ve)-.25 G(lopers).15 E(can trade of)323.2 298.2 Q 2.5(fs)-.25 G
+(pace for time as an application requires.)-2.5 E F1 3(3.7. Small)323.2
+328.2 R -.3(fo)3 G(otprint).3 E F0(Berk)323.2 344.4 Q(ele)-.1 E 3.973
+(yD)-.15 G 3.973(Bi)-3.973 G 3.974(sac)-3.973 G 1.474(ompact system.)
+-3.974 F 1.474(The full package,)6.474 F .832
+(including all access methods, reco)323.2 356.4 R -.15(ve)-.15 G
+(rability).15 E 3.331(,a)-.65 G .831(nd trans-)-3.331 F 1.235
+(action support is roughly 175K of te)323.2 368.4 R 1.236
+(xt space on com-)-.15 F(mon architectures.)323.2 380.4 Q F1 3
+(3.8. Cursors)323.2 410.4 R F0 1.57(In database terminology)323.2 426.6
+R 4.07(,ac)-.65 G 1.57(ursor is a pointer into an)-4.07 F 1.806
+(access method that can be called iterati)323.2 438.6 R -.15(ve)-.25 G
+1.807(ly to return).15 F 3.68(records in sequence.)323.2 450.6 R(Berk)
+8.68 E(ele)-.1 E 6.18(yD)-.15 G 6.18(Bi)-6.18 G 3.68(ncludes cursor)
+-6.18 F(interf)323.2 462.6 Q 2.814(aces for all access methods.)-.1 F
+2.815(This permits, for)7.814 F -.15(ex)323.2 474.6 S .34
+(ample, users to tra).15 F -.15(ve)-.2 G .34(rse a B+tree and vie).15 F
+2.84(wr)-.25 G .34(ecords in)-2.84 F(order)323.2 486.6 Q 6.233(.P)-.55 G
+1.234(ointers to records in cursors are persistent, so)-6.233 F 1.779
+(that once fetched, a record may be updated in place.)323.2 498.6 R
+(Finally)323.2 510.6 Q 4.438(,c)-.65 G 1.939
+(ursors support access to chains of duplicate)-4.438 F
+(data items in the v)323.2 522.6 Q(arious access methods.)-.25 E F1 3
+(3.9. J)323.2 552.6 R(oins)-.18 E F0 2.703(In database terminology)323.2
+568.8 R 5.203(,aj)-.65 G 2.702(oin is an operation that)-5.203 F .616
+(spans multiple separate tables \(or in the case of Berk)323.2 580.8 R
+(e-)-.1 E(le)323.2 592.8 Q 4.518(yD)-.15 G 2.018
+(B, multiple separate DB \214les\).)-4.518 F -.15(Fo)7.017 G 4.517(re)
+.15 G 2.017(xample, a)-4.667 F(compan)323.2 604.8 Q 3.372(ym)-.15 G .873
+(ay store information about its customers in)-3.372 F 1.545
+(one table and information about sales in another)323.2 616.8 R 6.545
+(.A)-.55 G(n)-6.545 E 1.498(application will lik)323.2 628.8 R 1.499
+(ely w)-.1 F 1.499(ant to look up sales informa-)-.1 F .933
+(tion by customer name; this requires matching records)323.2 640.8 R
+2.28(in the tw)323.2 652.8 R 4.78(ot)-.1 G 2.28
+(ables that share a common customer ID)-4.78 F 2.515(\214eld. This)323.2
+664.8 R .015(combining of records from multiple tables is)2.515 F
+(called a join.)323.2 676.8 Q(Berk)323.2 693 Q(ele)-.1 E 5.561(yD)-.15 G
+5.561(Bi)-5.561 G 3.061(ncludes interf)-5.561 F 3.062
+(aces for joining tw)-.1 F 5.562(oo)-.1 G(r)-5.562 E(more tables.)323.2
+705 Q EP
+%%Page: 5 5
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 12/Times-Bold@0 SF 3(3.10. T)79.2 84 R(ransactions)-.888 E/F1 10
+/Times-Roman@0 SF -.35(Tr)79.2 100.2 S(ansactions ha).35 E .3 -.15(ve f)
+-.2 H(our properties [Gray93]:).15 E/F2 8/Times-Roman@0 SF<83>84.2 116.4
+Q F1(The)17.2 E 5.489(ya)-.15 G 2.989(re atomic.)-5.489 F 2.989
+(That is, all of the changes)7.989 F 1.475
+(made in a single transaction must be applied at)104.2 128.4 R 1.31
+(the same instant or not at all.)104.2 140.4 R 1.31(This permits, for)
+6.31 F -.15(ex)104.2 152.4 S 3.565(ample, the transfer of mone).15 F
+6.065(yb)-.15 G 3.565(etween tw)-6.065 F(o)-.1 E 3.68
+(accounts to be accomplished, by making the)104.2 164.4 R 1.27
+(reduction of the balance in one account and the)104.2 176.4 R
+(increase in the other into a single, atomic action.)104.2 188.4 Q F2
+<83>84.2 204.6 Q F1(The)17.2 E 3.125(ym)-.15 G .625(ust be consistent.)
+-3.125 F .625(That is, changes to the)5.625 F 3.628(database by an)104.2
+216.6 R 6.128(yt)-.15 G 3.628(ransaction cannot lea)-6.128 F 3.929 -.15
+(ve t)-.2 H(he).15 E(database in an ille)104.2 228.6 Q -.05(ga)-.15 G
+2.5(lo).05 G 2.5(rc)-2.5 G(orrupt state.)-2.5 E F2<83>84.2 244.8 Q F1
+(The)17.2 E 3.006(ym)-.15 G .506(ust be isolatable.)-3.006 F(Re)5.506 E
+-.05(ga)-.15 G .505(rdless of the num-).05 F .8(ber of users w)104.2
+256.8 R .8(orking in the database at the same)-.1 F 1.88(time, e)104.2
+268.8 R -.15(ve)-.25 G 1.88(ry user must ha).15 F 2.18 -.15(ve t)-.2 H
+1.88(he illusion that no).15 F(other acti)104.2 280.8 Q
+(vity is going on.)-.25 E F2<83>84.2 297 Q F1(The)17.2 E 5.54(ym)-.15 G
+3.04(ust be durable.)-5.54 F(Ev)8.04 E 3.04(en if the disk that)-.15 F
+.877(stores the database is lost, it must be possible to)104.2 309 R
+(reco)104.2 321 Q -.15(ve)-.15 G 2.668(rt).15 G .168
+(he database to its last transaction-consis-)-2.668 F(tent state.)104.2
+333 Q 2.49(This combination of properties \212 atomicity)79.2 349.2 R
+4.99(,c)-.65 G(onsis-)-4.99 E(tenc)79.2 361.2 Q 4.542 -.65(y, i)-.15 H
+3.243(solation, and durability \212 is referred to as).65 F -.4(AC)79.2
+373.2 S 3.459(IDity in the literature.).4 F(Berk)8.459 E(ele)-.1 E 5.958
+(yD)-.15 G 3.458(B, lik)-5.958 F 5.958(em)-.1 G(ost)-5.958 E .993
+(database systems, pro)79.2 385.2 R .993(vides A)-.15 F .994
+(CIDity using a collection)-.4 F(of core services.)79.2 397.2 Q .257
+(Programmers can choose to use Berk)79.2 413.4 R(ele)-.1 E 2.757(yD)-.15
+G(B')-2.757 E 2.757(st)-.55 G(ransac-)-2.757 E
+(tion services for applications that need them.)79.2 425.4 Q F0 3
+(3.10.1. Write-ahead)79.2 455.4 R(logging)3 E F1 .479
+(Programmers can enable the logging system when the)79.2 471.6 R(y)-.15
+E .918(start up Berk)79.2 483.6 R(ele)-.1 E 3.418(yD)-.15 G 3.418
+(B. During)-3.418 F 3.417(at)3.417 G .917(ransaction, the appli-)-3.417
+F .493(cation mak)79.2 495.6 R .493
+(es a series of changes to the database.)-.1 F(Each)5.494 E .552
+(change is captured in a log entry)79.2 507.6 R 3.052(,w)-.65 G .552
+(hich holds the state)-3.052 F .207
+(of the database record both before and after the change.)79.2 519.6 R
+2.208(The log record is guaranteed to be \215ushed to stable)79.2 531.6
+R .871(storage before an)79.2 543.6 R 3.371(yo)-.15 G 3.371(ft)-3.371 G
+.871(he changed data pages are writ-)-3.371 F 3.989(ten. This)79.2 555.6
+R(beha)3.989 E 1.489(vior \212 writing the log before the data)-.2 F
+(pages \212 is called)79.2 567.6 Q/F3 10/Times-Italic@0 SF
+(write-ahead lo)2.5 E -.1(gg)-.1 G(ing).1 E F1(.)A .835(At an)79.2 583.8
+R 3.335(yt)-.15 G .835(ime during the transaction, the application can)
+-3.335 F F3(commit)79.2 595.8 Q F1 4.202(,m)C 1.702
+(aking the changes permanent, or)-4.202 F F3 -.45(ro)4.201 G 1.701
+(ll bac).45 F(k)-.2 E F1(,)A .852
+(cancelling all changes and restoring the database to its)79.2 607.8 R
+1.57(pre-transaction state.)79.2 619.8 R 1.57
+(If the application rolls back the)6.57 F 1.003
+(transaction, then the log holds the state of all changed)79.2 631.8 R
+.5(pages prior to the transaction, and Berk)79.2 643.8 R(ele)-.1 E 3(yD)
+-.15 G 3(Bs)-3 G(imply)-3 E .226(restores that state.)79.2 655.8 R .226
+(If the application commits the trans-)5.226 F .538(action, Berk)79.2
+667.8 R(ele)-.1 E 3.038(yD)-.15 G 3.038(Bw)-3.038 G .538
+(rites the log records to disk.)-3.038 F(In-)5.537 E 2.312
+(memory copies of the data pages already re\215ect the)79.2 679.8 R
+1.399(changes, and will be \215ushed as necessary during nor)79.2 691.8
+R(-)-.2 E 2.35(mal processing.)79.2 703.8 R 2.35
+(Since log writes are sequential, b)7.35 F(ut)-.2 E 8.732
+(data page writes are random, this impro)79.2 715.8 R -.15(ve)-.15 G(s)
+.15 E(performance.)323.2 84 Q F0 3(3.10.2. Crashes)323.2 114 R(and r)3 E
+(eco)-.216 E -.12(ve)-.12 G(ry).12 E F1(Berk)323.2 130.2 Q(ele)-.1 E
+3.592(yD)-.15 G(B')-3.592 E 3.592(sw)-.55 G 1.093
+(rite-ahead log is used by the transac-)-3.592 F .415
+(tion system to commit or roll back transactions.)323.2 142.2 R .414
+(It also)5.414 F(gi)323.2 154.2 Q -.15(ve)-.25 G 3.23(st).15 G .73
+(he reco)-3.23 F -.15(ve)-.15 G .73
+(ry system the information that it needs).15 F .824(to protect ag)323.2
+166.2 R .824(ainst data loss or corruption from crashes.)-.05 F(Berk)
+323.2 178.2 Q(ele)-.1 E 2.703(yD)-.15 G 2.703(Bi)-2.703 G 2.704(sa)
+-2.703 G .204(ble to survi)-2.704 F .504 -.15(ve a)-.25 H .204
+(pplication crashes, sys-).15 F .408(tem crashes, and e)323.2 190.2 R
+-.15(ve)-.25 G 2.908(nc).15 G .407(atastrophic f)-2.908 F .407
+(ailures lik)-.1 F 2.907(et)-.1 G .407(he loss)-2.907 F
+(of a hard disk, without losing an)323.2 202.2 Q 2.5(yd)-.15 G(ata.)-2.5
+E(Survi)323.2 218.4 Q .538(ving crashes requires data stored in se)-.25
+F -.15(ve)-.25 G .539(ral dif).15 F(fer)-.25 E(-)-.2 E 2.52(ent places.)
+323.2 230.4 R 2.52(During normal processing, Berk)7.52 F(ele)-.1 E 5.02
+(yD)-.15 G(B)-5.02 E .766(has copies of acti)323.2 242.4 R 1.066 -.15
+(ve l)-.25 H .766(og records and recently-used data).15 F 1.539
+(pages in memory)323.2 254.4 R 6.539(.L)-.65 G 1.539
+(og records are \215ushed to the log)-6.539 F .694
+(disk when transactions commit.)323.2 266.4 R .695
+(Data pages trickle out)5.694 F .008(to the data disk as pages mo)323.2
+278.4 R .308 -.15(ve t)-.15 H .008(hrough the b).15 F(uf)-.2 E .008
+(fer cache.)-.25 F(Periodically)323.2 290.4 Q 2.691(,t)-.65 G .191
+(he system administrator backs up the data)-2.691 F .278
+(disk, creating a safe cop)323.2 302.4 R 2.778(yo)-.1 G 2.778(ft)-2.778
+G .278(he database at a particular)-2.778 F 2.609(instant. When)323.2
+314.4 R .109(the database is back)2.609 F .109(ed up, the log can be)-.1
+F 3.838(truncated. F)323.2 326.4 R 1.337(or maximum rob)-.15 F 1.337
+(ustness, the log disk and)-.2 F(data disk should be separate de)323.2
+338.4 Q(vices.)-.25 E(Dif)323.2 354.6 Q 1.29(ferent system f)-.25 F 1.29
+(ailures can destro)-.1 F 3.79(ym)-.1 G(emory)-3.79 E 3.79(,t)-.65 G
+1.29(he log)-3.79 F 1.106(disk, or the data disk.)323.2 366.6 R(Berk)
+6.106 E(ele)-.1 E 3.606(yD)-.15 G 3.606(Bi)-3.606 G 3.606(sa)-3.606 G
+1.106(ble to survi)-3.606 F -.15(ve)-.25 G .679(the loss of an)323.2
+378.6 R 3.179(yo)-.15 G .679(ne of these repositories without losing)
+-3.179 F(an)323.2 390.6 Q 2.5(yc)-.15 G(ommitted transactions.)-2.5 E
+1.372(If the computer')323.2 406.8 R 3.871(sm)-.55 G 1.371
+(emory is lost, through an applica-)-3.871 F 1.619
+(tion or operating system crash, then the log holds all)323.2 418.8 R
+1.789(committed transactions.)323.2 430.8 R 1.788(On restart, the reco)
+6.789 F -.15(ve)-.15 G 1.788(ry sys-).15 F .49(tem rolls the log forw)
+323.2 442.8 R .49(ard ag)-.1 F .49(ainst the database, reapply-)-.05 F
+.682(ing an)323.2 454.8 R 3.181(yc)-.15 G .681
+(hanges to on-disk pages that were in memory)-3.181 F .14
+(at the time of the crash.)323.2 466.8 R .14
+(Since the log contains pre- and)5.14 F .957
+(post-change state for transactions, the reco)323.2 478.8 R -.15(ve)-.15
+G .956(ry system).15 F 1.14(also uses the log to restore an)323.2 490.8
+R 3.64(yp)-.15 G 1.14(ages to their original)-3.64 F 1.615(state if the)
+323.2 502.8 R 4.115(yw)-.15 G 1.615
+(ere modi\214ed by transactions that ne)-4.115 F -.15(ve)-.25 G(r).15 E
+(committed.)323.2 514.8 Q 2.051
+(If the data disk is lost, the system administrator can)323.2 531 R .887
+(restore the most recent cop)323.2 543 R 3.386(yf)-.1 G .886
+(rom backup.)-3.386 F .886(The reco)5.886 F(v-)-.15 E 1.298
+(ery system will roll the entire log forw)323.2 555 R 1.298(ard ag)-.1 F
+1.298(ainst the)-.05 F 2.64
+(original database, reapplying all committed changes.)323.2 567 R 4.363
+(When it \214nishes, the database will contain e)323.2 579 R -.15(ve)
+-.25 G(ry).15 E .535(change made by e)323.2 591 R -.15(ve)-.25 G .534
+(ry transaction that e).15 F -.15(ve)-.25 G 3.034(rc).15 G(ommitted.)
+-3.034 E .494(If the log disk is lost, then the reco)323.2 607.2 R -.15
+(ve)-.15 G .495(ry system can use).15 F 1.853
+(the in-memory copies of log entries to roll back an)323.2 619.2 R(y)
+-.15 E .026(uncommitted transactions, \215ush all in-memory database)
+323.2 631.2 R 1.659(pages to the data disk, and shut do)323.2 643.2 R
+1.659(wn gracefully)-.25 F 6.658(.A)-.65 G(t)-6.658 E 2.204
+(that point, the system administrator can back up the)323.2 655.2 R .039
+(database disk, install a ne)323.2 667.2 R 2.539(wl)-.25 G .039
+(og disk, and restart the sys-)-2.539 F(tem.)323.2 679.2 Q EP
+%%Page: 6 6
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 12/Times-Bold@0 SF 3(3.10.3. Checkpoints)79.2 84 R/F1 10
+/Times-Roman@0 SF(Berk)79.2 100.2 Q(ele)-.1 E 6.085(yD)-.15 G 6.085(Bi)
+-6.085 G 3.585(ncludes a checkpointing service that)-6.085 F .263
+(interacts with the reco)79.2 112.2 R -.15(ve)-.15 G .263(ry system.).15
+F .263(During normal pro-)5.263 F 2.415
+(cessing, both the log and the database are changing)79.2 124.2 R
+(continually)79.2 136.2 Q 5.925(.A)-.65 G 3.425(ta)-5.925 G 1.224 -.15
+(ny g)-3.425 H -2.15 -.25(iv e).15 H 3.424(ni).25 G .924
+(nstant, the on-disk v)-3.424 F(ersions)-.15 E .414(of the tw)79.2 148.2
+R 2.914(oa)-.1 G .414(re not guaranteed to be consistent.)-2.914 F .414
+(The log)5.414 F 3.838
+(probably contains changes that are not yet in the)79.2 160.2 R
+(database.)79.2 172.2 Q .085(When an application mak)79.2 188.4 R .086
+(es a)-.1 F/F2 10/Times-Italic@0 SF -.15(ch)2.586 G(ec).15 E(kpoint)-.2
+E F1 2.586(,a)C .086(ll committed)-2.586 F .443
+(changes in the log up to that point are guaranteed to be)79.2 200.4 R
+.631(present on the data disk, too.)79.2 212.4 R .632
+(Checkpointing is moder)5.631 F(-)-.2 E .046(ately e)79.2 224.4 R
+(xpensi)-.15 E .346 -.15(ve d)-.25 H .046(uring normal processing, b).15
+F .045(ut limits the)-.2 F(time spent reco)79.2 236.4 Q -.15(ve)-.15 G
+(ring from crashes.).15 E 3.117
+(After an application or operating system crash, the)79.2 252.6 R(reco)
+79.2 264.6 Q -.15(ve)-.15 G 7.419(ry system only needs to go back tw).15
+F(o)-.1 E(checkpoints)79.2 278.6 Q/F3 7/Times-Roman@0 SF(1)-4 I F1 1.376
+(to start rolling the log forw)3.876 4 N 3.875(ard. W)-.1 F(ithout)-.4 E
+3.264(checkpoints, there is no w)79.2 290.6 R 3.265(ay to be sure ho)-.1
+F 5.765(wl)-.25 G(ong)-5.765 E .395(restarting after a crash will tak)
+79.2 302.6 R 2.895(e. W)-.1 F .395(ith checkpoints, the)-.4 F .088
+(restart interv)79.2 314.6 R .089(al can be \214x)-.25 F .089
+(ed by the programmer)-.15 F 5.089(.R)-.55 G(eco)-5.089 E(v-)-.15 E .668
+(ery processing can be guaranteed to complete in a sec-)79.2 326.6 R
+(ond or tw)79.2 338.6 Q(o.)-.1 E(Softw)79.2 354.8 Q 2.457
+(are crashes are much more common than disk)-.1 F -.1(fa)79.2 366.8 S
+3.385(ilures. Man).1 F 3.385(yd)-.15 G -2.15 -.25(ev e)-3.385 H .884
+(lopers w).25 F .884(ant to guarantee that soft-)-.1 F -.1(wa)79.2 378.8
+S .158(re b).1 F .158(ugs do not destro)-.2 F 2.658(yd)-.1 G .158
+(ata, b)-2.658 F .158(ut are willing to restore)-.2 F .631
+(from tape, and to tolerate a day or tw)79.2 390.8 R 3.131(oo)-.1 G
+3.131(fl)-3.131 G .63(ost w)-3.131 F .63(ork, in)-.1 F .89(the unlikle)
+79.2 402.8 R 3.39(ye)-.15 G -.15(ve)-3.64 G .89(nt of a disk crash.).15
+F -.4(Wi)5.89 G .89(th Berk).4 F(ele)-.1 E 3.39(yD)-.15 G(B,)-3.39 E
+1.093(programmers may truncate the log at checkpoints.)79.2 414.8 R(As)
+6.092 E .09(long as the tw)79.2 426.8 R 2.59(om)-.1 G .09
+(ost recent checkpoints are present, the)-2.59 F(reco)79.2 438.8 Q -.15
+(ve)-.15 G .106(ry system can guarantee that no committed trans-).15 F
+.611(actions are lost after a softw)79.2 450.8 R .611(are crash.)-.1 F
+.611(In this case, the)5.611 F(reco)79.2 462.8 Q -.15(ve)-.15 G 1.439
+(ry system does not require that the log and the).15 F 1.328
+(data be on separate de)79.2 474.8 R 1.329
+(vices, although separating them)-.25 F(can still impro)79.2 486.8 Q .3
+-.15(ve p)-.15 H(erformance by spreading out writes.).15 E F0 3
+(3.10.4. T)79.2 516.8 R -.12(wo)-.888 G(-phase locking).12 E F1(Berk)
+79.2 533 Q(ele)-.1 E 4.416(yD)-.15 G 4.416(Bp)-4.416 G(ro)-4.416 E 1.916
+(vides a service kno)-.15 F 1.915(wn as tw)-.25 F(o-phase)-.1 E 3.017
+(locking. In)79.2 545 R .517(order to reduce the lik)3.017 F .518
+(elihood of deadlocks)-.1 F 2.547(and to guarantee A)79.2 557 R 2.546
+(CID properties, database systems)-.4 F .063(manage locks in tw)79.2 569
+R 2.564(op)-.1 G 2.564(hases. First,)-2.564 F .064(during the operation)
+2.564 F 1.574(of a transaction, the)79.2 581 R 4.074(ya)-.15 G 1.574
+(cquire locks, b)-4.074 F 1.573(ut ne)-.2 F -.15(ve)-.25 G 4.073(rr).15
+G(elease)-4.073 E 6.147(them. Second,)79.2 593 R 3.648
+(at the end of the transaction, the)6.147 F(y)-.15 E .235
+(release locks, b)79.2 605 R .235(ut ne)-.2 F -.15(ve)-.25 G 2.735(ra)
+.15 G .235(cquire them.)-2.735 F .235(In practice, most)5.235 F 4.69
+(database systems, including Berk)79.2 617 R(ele)-.1 E 7.19(yD)-.15 G
+4.69(B, acquire)-7.19 F 2.314(locks on demand o)79.2 629 R -.15(ve)-.15
+G 4.814(rt).15 G 2.314(he course of the transaction,)-4.814 F
+(then \215ush the log, then release all locks.)79.2 641 Q .32 LW 83.2
+650.6 79.2 650.6 DL 87.2 650.6 83.2 650.6 DL 91.2 650.6 87.2 650.6 DL
+95.2 650.6 91.2 650.6 DL 99.2 650.6 95.2 650.6 DL 103.2 650.6 99.2 650.6
+DL 107.2 650.6 103.2 650.6 DL 111.2 650.6 107.2 650.6 DL 115.2 650.6
+111.2 650.6 DL 119.2 650.6 115.2 650.6 DL 123.2 650.6 119.2 650.6 DL
+127.2 650.6 123.2 650.6 DL 131.2 650.6 127.2 650.6 DL 135.2 650.6 131.2
+650.6 DL 139.2 650.6 135.2 650.6 DL 143.2 650.6 139.2 650.6 DL 147.2
+650.6 143.2 650.6 DL 151.2 650.6 147.2 650.6 DL 155.2 650.6 151.2 650.6
+DL 159.2 650.6 155.2 650.6 DL 163.2 650.6 159.2 650.6 DL 167.2 650.6
+163.2 650.6 DL 171.2 650.6 167.2 650.6 DL 175.2 650.6 171.2 650.6 DL
+179.2 650.6 175.2 650.6 DL 183.2 650.6 179.2 650.6 DL 187.2 650.6 183.2
+650.6 DL 191.2 650.6 187.2 650.6 DL 195.2 650.6 191.2 650.6 DL 199.2
+650.6 195.2 650.6 DL 203.2 650.6 199.2 650.6 DL 207.2 650.6 203.2 650.6
+DL 211.2 650.6 207.2 650.6 DL 215.2 650.6 211.2 650.6 DL 219.2 650.6
+215.2 650.6 DL 223.2 650.6 219.2 650.6 DL/F4 5/Times-Roman@0 SF(1)100.8
+661 Q/F5 8/Times-Roman@0 SF .338(One checkpoint is not f)2.338 3.2 N
+.338(ar enough.)-.08 F .338(The reco)4.338 F -.12(ve)-.12 G .338
+(ry system can-).12 F .211
+(not be sure that the most recent checkpoint completed \212 it may ha)
+79.2 673.8 R -.12(ve)-.16 G .734
+(been interrupted by the crash that forced the reco)79.2 683.4 R -.12
+(ve)-.12 G .734(ry system to run).12 F(in the \214rst place.)79.2 693 Q
+F1(Berk)323.2 84 Q(ele)-.1 E 3.306(yD)-.15 G 3.306(Bc)-3.306 G .806
+(an lock entire database \214les, which cor)-3.306 F(-)-.2 E .845
+(respond to tables, or indi)323.2 96 R .844(vidual pages in them.)-.25 F
+.844(It does)5.844 F 2.141(no record-le)323.2 108 R -.15(ve)-.25 G 4.641
+(ll).15 G 4.641(ocking. By)-4.641 F 2.142(shrinking the page size,)4.641
+F(ho)323.2 120 Q(we)-.25 E -.15(ve)-.25 G 4.427 -.4(r, d).15 H -2.15
+-.25(ev e).4 H 3.627(lopers can guarantee that e).25 F -.15(ve)-.25 G
+3.626(ry page).15 F 2.101(holds only a small number of records.)323.2
+132 R 2.102(This reduces)7.102 F(contention.)323.2 144 Q .388
+(If locking is enabled, then read and write operations on)323.2 160.2 R
+5.317(ad)323.2 172.2 S 2.817(atabase acquire tw)-5.317 F 2.817
+(o-phase locks, which are held)-.1 F 3.635
+(until the transaction completes.)323.2 184.2 R 3.635(Which objects are)
+8.635 F(lock)323.2 196.2 Q .738
+(ed and the order of lock acquisition depend on the)-.1 F -.1(wo)323.2
+208.2 S .503(rkload for each transaction.).1 F .502
+(It is possible for tw)5.502 F 3.002(oo)-.1 G(r)-3.002 E 1.315
+(more transactions to deadlock, so that each is w)323.2 220.2 R(aiting)
+-.1 E(for a lock that is held by another)323.2 232.2 Q(.)-.55 E(Berk)
+323.2 248.4 Q(ele)-.1 E 3.307(yD)-.15 G 3.307(Bd)-3.307 G .807
+(etects deadlocks and automatically rolls)-3.307 F 1.825
+(back one of the transactions.)323.2 260.4 R 1.825
+(This releases the locks)6.825 F 1.926(that it held and allo)323.2 272.4
+R 1.925(ws the other transactions to con-)-.25 F 3.346(tinue. The)323.2
+284.4 R .847(caller is noti\214ed that its transaction did not)3.346 F
+1.747(complete, and may restart it.)323.2 296.4 R(De)6.747 E -.15(ve)
+-.25 G 1.747(lopers can specify).15 F .646
+(the deadlock detection interv)323.2 308.4 R .647(al and the polic)-.25
+F 3.147(yt)-.15 G 3.147(ou)-3.147 G .647(se in)-3.147 F
+(choosing a transaction to roll back.)323.2 320.4 Q 6.686(The tw)323.2
+336.6 R 6.686(o-phase locking interf)-.1 F 6.686(aces are separately)-.1
+F .927(callable by applications that link Berk)323.2 348.6 R(ele)-.1 E
+3.427(yD)-.15 G .928(B, though)-3.427 F(fe)323.2 360.6 Q 5.64(wu)-.25 G
+3.14(sers ha)-5.64 F 3.44 -.15(ve n)-.2 H 3.14(eeded to use that f).15 F
+3.14(acility directly)-.1 F(.)-.65 E 2.211(Using these interf)323.2
+372.6 R 2.211(aces, Berk)-.1 F(ele)-.1 E 4.711(yD)-.15 G 4.712(Bp)-4.711
+G(ro)-4.712 E 2.212(vides a f)-.15 F(ast,)-.1 E 2.4
+(platform-portable locking system for general-purpose)323.2 384.6 R
+2.917(use. It)323.2 396.6 R .418
+(also lets users include non-database objects in a)2.917 F 3.497
+(database transaction, by controlling access to them)323.2 408.6 R -.15
+(ex)323.2 420.6 S(actly as if the).15 E 2.5(yw)-.15 G
+(ere inside the database.)-2.5 E .583(The Berk)323.2 436.8 R(ele)-.1 E
+3.083(yD)-.15 G 3.084(Bt)-3.083 G -.1(wo)-3.084 G .584(-phase locking f)
+.1 F .584(acility is b)-.1 F .584(uilt on)-.2 F .609(the f)323.2 448.8 R
+.609(astest correct locking primiti)-.1 F -.15(ve)-.25 G 3.108(st).15 G
+.608(hat are supported)-3.108 F 1.967(by the underlying architecture.)
+323.2 460.8 R 1.967(In the current imple-)6.967 F .593
+(mentation, this means that the locking system is dif)323.2 472.8 R(fer)
+-.25 E(-)-.2 E 1.709(ent on the v)323.2 484.8 R 1.709
+(arious UNIX platforms, and is still more)-.25 F(dif)323.2 496.8 Q .695
+(ferent on W)-.25 F(indo)-.4 E .695(ws NT)-.25 F 5.695(.I)-.74 G 3.195
+(no)-5.695 G .695(ur e)-3.195 F .695(xperience, the most)-.15 F(dif)
+323.2 508.8 Q 2.634
+(\214cult aspect of performance tuning is \214nding the)-.25 F -.1(fa)
+323.2 520.8 S .883(stest locking primiti).1 F -.15(ve)-.25 G 3.383(st)
+.15 G .883(hat w)-3.383 F .882(ork correctly on a par)-.1 F(-)-.2 E 1.26
+(ticular architecture and then inte)323.2 532.8 R 1.26(grating the ne)
+-.15 F 3.76(wi)-.25 G(nter)-3.76 E(-)-.2 E -.1(fa)323.2 544.8 S
+(ce with the se).1 E -.15(ve)-.25 G(ral that we already support.).15 E
+.536(The w)323.2 561 R .536(orld w)-.1 F .536
+(ould be a better place if the operating sys-)-.1 F 2.096
+(tems community w)323.2 573 R 2.096(ould uniformly implement POSIX)-.1 F
+1.31(locking primiti)323.2 585 R -.15(ve)-.25 G 3.81(sa).15 G 1.31(nd w)
+-3.81 F 1.31(ould guarantee that acquiring)-.1 F 1.085
+(an uncontested lock w)323.2 597 R 1.085(as a f)-.1 F 1.085
+(ast operation.)-.1 F 1.085(Locks must)6.085 F -.1(wo)323.2 609 S 3.641
+(rk both among threads in a single process and).1 F(among processes.)
+323.2 621 Q F0 3(3.11. Concurr)323.2 651 R(ency)-.216 E F1 .383
+(Good performance under concurrent operation is a crit-)323.2 667.2 R
+.766(ical design point for Berk)323.2 679.2 R(ele)-.1 E 3.266(yD)-.15 G
+3.265(B. Although)-3.266 F(Berk)3.265 E(ele)-.1 E(y)-.15 E 1.961
+(DB is itself not multi-threaded, it is thread-safe, and)323.2 691.2 R
+.547(runs well in threaded applications.)323.2 703.2 R(Philosophically)
+5.546 E 3.046(,w)-.65 G(e)-3.046 E(vie)323.2 715.2 Q 4.764(wt)-.25 G
+2.264(he use of threads and the choice of a threads)-4.764 F EP
+%%Page: 7 7
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF .066(package as a polic)79.2 84 R 2.566(yd)-.15
+G .065(ecision, and prefer to of)-2.566 F .065(fer mecha-)-.25 F .042
+(nism \(the ability to run threaded or not\), allo)79.2 96 R .043
+(wing appli-)-.25 F(cations to choose their o)79.2 108 Q(wn policies.)
+-.25 E 1.947(The locking, logging, and b)79.2 124.2 R(uf)-.2 E 1.947
+(fer pool subsystems all)-.25 F .711
+(use shared memory or other OS-speci\214c sharing f)79.2 136.2 R(acili-)
+-.1 E 1.713(ties to communicate.)79.2 148.2 R 1.713(Locks, b)6.713 F(uf)
+-.2 E 1.713(fer pool fetches, and)-.25 F 1.061(log writes beha)79.2
+160.2 R 1.361 -.15(ve i)-.2 H 3.561(nt).15 G 1.061(he same w)-3.561 F
+1.061(ay across threads in a)-.1 F .033(single process as the)79.2 172.2
+R 2.532(yd)-.15 G 2.532(oa)-2.532 G .032(cross dif)-2.532 F .032
+(ferent processes on a)-.25 F(single machine.)79.2 184.2 Q .896
+(As a result, concurrent database applications may start)79.2 200.4 R
+1.651(up a ne)79.2 212.4 R 4.151(wp)-.25 G 1.651(rocess for e)-4.151 F
+-.15(ve)-.25 G 1.651(ry single user).15 F 4.151(,m)-.4 G 1.651
+(ay create a)-4.151 F 2.848(single serv)79.2 224.4 R 2.848(er which spa)
+-.15 F 2.849(wns a ne)-.15 F 5.349(wt)-.25 G 2.849(hread for e)-5.349 F
+-.15(ve)-.25 G(ry).15 E(client request, or may choose an)79.2 236.4 Q
+2.5(yp)-.15 G(olic)-2.5 E 2.5(yi)-.15 G 2.5(nb)-2.5 G(etween.)-2.5 E
+(Berk)79.2 252.6 Q(ele)-.1 E 3.629(yD)-.15 G 3.629(Bh)-3.629 G 1.128
+(as been carefully designed to minimize)-3.629 F .07
+(contention and maximize concurrenc)79.2 264.6 R 3.87 -.65(y. T)-.15 H
+.07(he cache man-).65 F .57(ager allo)79.2 276.6 R .57
+(ws all threads or processes to bene\214t from I/O)-.25 F 2.917
+(done by one.)79.2 288.6 R 2.917(Shared resources must sometimes be)
+7.917 F(lock)79.2 300.6 Q 1.804(ed for e)-.1 F(xclusi)-.15 E 2.104 -.15
+(ve a)-.25 H 1.804(ccess by one thread of control.).15 F 1.757 -.8(We h)
+79.2 312.6 T -2.25 -.2(av e).8 H -.1(ke)2.857 G .158
+(pt critical sections small, and are careful not).1 F 1.199
+(to hold critical resource locks across system calls that)79.2 324.6 R
+.538(could deschedule the locking thread or process.)79.2 336.6 R
+(Sleep-)5.539 E .979(ycat Softw)79.2 348.6 R .979
+(are has customers with hundreds of concur)-.1 F(-)-.2 E(rent users w)
+79.2 360.6 Q(orking on a single database in production.)-.1 E/F1 12
+/Times-Bold@0 SF 3(4. Engineering)79.2 390.6 R(Philosoph)3 E(y)-.18 E F0
+(Fundamentally)79.2 406.8 Q 3.998(,B)-.65 G(erk)-3.998 E(ele)-.1 E 3.998
+(yD)-.15 G 3.998(Bi)-3.998 G 3.999(sac)-3.998 G 1.499
+(ollection of access)-3.999 F .19(methods with important f)79.2 418.8 R
+.19(acilities, lik)-.1 F 2.69(el)-.1 G .19(ogging, locking,)-2.69 F
+1.251(and transactional access underlying them.)79.2 430.8 R 1.252
+(In both the)6.252 F .992(research and the commercial w)79.2 442.8 R
+.991(orld, the techniques for)-.1 F -.2(bu)79.2 454.8 S 2.727
+(ilding systems lik).2 F 5.227(eB)-.1 G(erk)-5.227 E(ele)-.1 E 5.227(yD)
+-.15 G 5.227(Bh)-5.227 G -2.25 -.2(av e)-5.227 H 2.728(been well-)5.427
+F(kno)79.2 466.8 Q(wn for a long time.)-.25 E .443(The k)79.2 483 R .743
+-.15(ey a)-.1 H(dv).15 E .442(antage of Berk)-.25 F(ele)-.1 E 2.942(yD)
+-.15 G 2.942(Bi)-2.942 G 2.942(st)-2.942 G .442(he careful atten-)-2.942
+F 1.059(tion that has been paid to engineering details through-)79.2 495
+R 1.039(out its life.)79.2 507 R 2.639 -.8(We h)6.039 H -2.25 -.2(av e)
+.8 H 1.039(carefully designed the system so)3.739 F .452
+(that the core f)79.2 519 R .452(acilities, lik)-.1 F 2.952(el)-.1 G
+.452(ocking and I/O, surf)-2.952 F .453(ace the)-.1 F .972(right interf)
+79.2 531 R .971(aces and are otherwise opaque to the caller)-.1 F(.)-.55
+E .294(As programmers, we understand the v)79.2 543 R .295
+(alue of simplicity)-.25 F .206(and ha)79.2 555 R .506 -.15(ve w)-.2 H
+(ork).05 E .206(ed hard to simplify the interf)-.1 F .205(aces we sur)
+-.1 F(-)-.2 E -.1(fa)79.2 567 S(ce to users of the database system.).1 E
+(Berk)79.2 583.2 Q(ele)-.1 E 4.531(yD)-.15 G 4.531(Ba)-4.531 G -.2(vo)
+-4.731 G 2.031(ids limits in the code.).2 F 2.031(It places no)7.031 F
+.474(practical limit on the size of k)79.2 595.2 R -.15(ey)-.1 G .473
+(s, v).15 F .473(alues, or databases;)-.25 F(the)79.2 607.2 Q 2.5(ym)
+-.15 G(ay gro)-2.5 E 2.5(wt)-.25 G 2.5(oo)-2.5 G(ccup)-2.5 E 2.5(yt)-.1
+G(he a)-2.5 E -.25(va)-.2 G(ilable storage space.).25 E 1.857
+(The locking and logging subsystems ha)79.2 623.4 R 2.157 -.15(ve b)-.2
+H 1.858(een care-).15 F .184
+(fully crafted to reduce contention and impro)79.2 635.4 R .484 -.15
+(ve t)-.15 H(hrough-).15 E 2.16
+(put by shrinking or eliminating critical sections, and)79.2 647.4 R
+(reducing the sizes of lock)79.2 659.4 Q(ed re)-.1 E
+(gions and log entries.)-.15 E 2.238
+(There is nothing in the design or implementation of)79.2 675.6 R(Berk)
+79.2 687.6 Q(ele)-.1 E 2.818(yD)-.15 G 2.818(Bt)-2.818 G .318
+(hat pushes the state of the art in database)-2.818 F 3.545
+(systems. Rather)79.2 699.6 R 3.545(,w)-.4 G 3.545(eh)-3.545 G -2.25 -.2
+(av e)-3.545 H 1.044(been v)3.745 F 1.044(ery careful to get the)-.15 F
+4.321(engineering right.)79.2 711.6 R 4.321
+(The result is a system that is)9.321 F(superior)323.2 84 Q 2.867(,a)-.4
+G 2.867(sa)-2.867 G 2.866(ne)-2.867 G .366
+(mbedded database system, to an)-2.866 F 2.866(yo)-.15 G(ther)-2.866 E
+(solution a)323.2 96 Q -.25(va)-.2 G(ilable.).25 E .811
+(Most database systems trade of)323.2 112.2 R 3.312(fs)-.25 G .812
+(implicity for correct-)-3.312 F 4.151(ness. Either)323.2 124.2 R 1.651
+(the system is easy to use, or it supports)4.151 F 1.17
+(concurrent use and survi)323.2 136.2 R -.15(ve)-.25 G 3.67(ss).15 G
+1.17(ystem f)-3.67 F 3.67(ailures. Berk)-.1 F(ele)-.1 E(y)-.15 E 1.013
+(DB, because of its careful design and implementation,)323.2 148.2 R(of)
+323.2 160.2 Q(fers both simplicity and correctness.)-.25 E .759
+(The system has a small footprint, mak)323.2 176.4 R .759
+(es simple opera-)-.1 F 1.012
+(tions simple to carry out \(inserting a ne)323.2 188.4 R 3.512(wr)-.25
+G 1.012(ecord tak)-3.512 F(es)-.1 E 1.16(just a fe)323.2 200.4 R 3.66
+(wl)-.25 G 1.16(ines of code\), and beha)-3.66 F -.15(ve)-.2 G 3.66(sc)
+.15 G 1.16(orrectly in the)-3.66 F -.1(fa)323.2 212.4 S .528(ce of hea)
+.1 F .527(vy concurrent use, system crashes, and e)-.2 F -.15(ve)-.25 G
+(n).15 E(catastrophic f)323.2 224.4 Q(ailures lik)-.1 E 2.5(el)-.1 G
+(oss of a hard disk.)-2.5 E F1 3(5. The)323.2 254.4 R(Berk)3 E
+(eley DB 2.x Distrib)-.12 E(ution)-.24 E F0(Berk)323.2 270.6 Q(ele)-.1 E
+4.171(yD)-.15 G 4.171(Bi)-4.171 G 4.171(sd)-4.171 G(istrib)-4.171 E
+1.671(uted in source code form from)-.2 F/F2 10/Times-Italic@0 SF(www)
+323.2 282.6 Q(.sleepycat.com)-.74 E F0 7.322(.U)C 2.322
+(sers are free to do)-7.322 F 2.321(wnload and)-.25 F -.2(bu)323.2 294.6
+S(ild the softw).2 E(are, and to use it in their applications.)-.1 E F1
+3(5.1. What)323.2 324.6 R(is in the distrib)3 E(ution)-.24 E F0 4.827
+(The distrib)323.2 340.8 R 4.827(ution is a compressed archi)-.2 F 5.127
+-.15(ve \214)-.25 H 7.328(le. It).15 F .057
+(includes the source code for the Berk)323.2 352.8 R(ele)-.1 E 2.556(yD)
+-.15 G 2.556(Bl)-2.556 G(ibrary)-2.556 E 2.556(,a)-.65 G(s)-2.556 E .453
+(well as documentation, test suites, and supporting utili-)323.2 364.8 R
+(ties.)323.2 376.8 Q 2.613(The source code includes b)323.2 393 R 2.612
+(uild support for all sup-)-.2 F .254(ported platforms.)323.2 405 R .254
+(On UNIX systems Berk)5.254 F(ele)-.1 E 2.755(yD)-.15 G 2.755(Bu)-2.755
+G(ses)-2.755 E 1.28(the GNU autocon\214guration tool,)323.2 417 R/F3 10
+/Courier@0 SF(autoconf)3.78 E F0 3.78(,t)C 3.78(oi)-3.78 G(den-)-3.78 E
+.992(tify the system and to b)323.2 429 R .992
+(uild the library and supporting)-.2 F 3.589(utilities. Berk)323.2 441 R
+(ele)-.1 E 3.589(yD)-.15 G 3.588(Bi)-3.589 G 1.088(ncludes speci\214c b)
+-3.588 F 1.088(uild en)-.2 F(viron-)-.4 E .515
+(ments for other platforms, such as VMS and W)323.2 453 R(indo)-.4 E
+(ws.)-.25 E F1 3(5.1.1. Documentation)323.2 483 R F0 5.008(The distrib)
+323.2 499.2 R 5.008(uted system includes documentation in)-.2 F 1.626
+(HTML format.)323.2 511.2 R 1.626(The documentation is in tw)6.626 F
+4.127(op)-.1 G 1.627(arts: a)-4.127 F .725
+(UNIX-style reference manual for use by programmers,)323.2 523.2 R
+(and a reference guide which is tutorial in nature.)323.2 535.2 Q F1 3
+(5.1.2. T)323.2 565.2 R(est suite)-1.104 E F0 1.107(The softw)323.2
+581.4 R 1.108(are also includes a complete test suite, writ-)-.1 F .155
+(ten in Tcl.)323.2 593.4 R 1.754 -.8(We b)5.154 H(elie).8 E .454 -.15
+(ve t)-.25 H .154(hat the test suite is a k).15 F .454 -.15(ey a)-.1 H
+(dv).15 E(an-)-.25 E(tage of Berk)323.2 605.4 Q(ele)-.1 E 2.5(yD)-.15 G
+2.5(Bo)-2.5 G -.15(ve)-2.65 G 2.5(rc).15 G(omparable systems.)-2.5 E
+2.612(First, the test suite allo)323.2 621.6 R 2.613(ws users who do)
+-.25 F 2.613(wnload and)-.25 F -.2(bu)323.2 633.6 S 1.731(ild the softw)
+.2 F 1.731(are to be sure that it is operating cor)-.1 F(-)-.2 E(rectly)
+323.2 645.6 Q(.)-.65 E .893(Second, the test suite allo)323.2 661.8 R
+.894(ws us, lik)-.25 F 3.394(eo)-.1 G .894(ther commercial)-3.394 F(de)
+323.2 673.8 Q -.15(ve)-.25 G .536(lopers of database softw).15 F .536
+(are, to e)-.1 F -.15(xe)-.15 G .535(rcise the system).15 F 2.256
+(thoroughly at e)323.2 685.8 R -.15(ve)-.25 G 2.256(ry release.).15 F
+2.256(When we learn of ne)7.256 F(w)-.25 E -.2(bu)323.2 697.8 S 1.719
+(gs, we add them to the test suite.).2 F 3.319 -.8(We r)6.719 H 1.719
+(un the test).8 F 5.692(suite continually during de)323.2 709.8 R -.15
+(ve)-.25 G 5.692(lopment c).15 F 5.692(ycles, and)-.15 F EP
+%%Page: 8 8
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF(al)79.2 84 Q -.1(wa)-.1 G .314
+(ys prior to release.).1 F .314(The result is a much more reli-)5.314 F
+(able system by the time it reaches beta release.)79.2 96 Q/F1 12
+/Times-Bold@0 SF 3(5.2. Binary)79.2 126 R(distrib)3 E(ution)-.24 E F0
+(Sleep)79.2 142.2 Q .893(ycat mak)-.1 F .893
+(es compiled libraries and general binary)-.1 F(distrib)79.2 154.2 Q
+(utions a)-.2 E -.25(va)-.2 G(ilable to customers for a fee.).25 E F1 3
+(5.3. Supported)79.2 184.2 R(platf)3 E(orms)-.3 E F0(Berk)79.2 200.4 Q
+(ele)-.1 E 5.623(yD)-.15 G 5.623(Br)-5.623 G 3.123(uns on an)-5.623 F
+5.622(yo)-.15 G 3.122(perating system with a)-5.622 F .816
+(POSIX 1003.1 interf)79.2 212.4 R .817(ace [IEEE96], which includes vir)
+-.1 F(-)-.2 E 1.998(tually e)79.2 224.4 R -.15(ve)-.25 G 1.997
+(ry UNIX system.).15 F 1.997(In addition, the softw)6.997 F(are)-.1 E
+2.85(runs on VMS, W)79.2 236.4 R(indo)-.4 E 2.85(ws/95, W)-.25 F(indo)
+-.4 E 2.85(ws/98, and W)-.25 F(in-)-.4 E(do)79.2 248.4 Q(ws/NT)-.25 E
+10.21(.S)-.74 G(leep)-10.21 E 5.21(ycat Softw)-.1 F 5.21
+(are no longer supports)-.1 F(deplo)79.2 260.4 Q(yment on sixteen-bit W)
+-.1 E(indo)-.4 E(ws systems.)-.25 E F1 3(6. Berk)79.2 290.4 R
+(eley DB 2.x Licensing)-.12 E F0(Berk)79.2 306.6 Q(ele)-.1 E 2.627(yD)
+-.15 G 2.627(B2)-2.627 G .128(.x is distrib)-2.627 F .128
+(uted as an Open Source prod-)-.2 F 4.709(uct. The)79.2 318.6 R(softw)
+4.709 E 2.209(are is freely a)-.1 F -.25(va)-.2 G 2.209
+(ilable from us at our).25 F -.8(We)79.2 330.6 S 3.372(bs).8 G .872
+(ite, and in other media.)-3.372 F .872(Users are free to do)5.872 F
+(wn-)-.25 E(load the softw)79.2 342.6 Q(are and b)-.1 E
+(uild applications with it.)-.2 E 1.023(The 1.x v)79.2 358.8 R 1.022
+(ersions of Berk)-.15 F(ele)-.1 E 3.522(yD)-.15 G 3.522(Bw)-3.522 G
+1.022(ere co)-3.522 F -.15(ve)-.15 G 1.022(red by the).15 F 3.763
+(UC Berk)79.2 370.8 R(ele)-.1 E 6.263(yc)-.15 G(op)-6.263 E 3.763
+(yright that co)-.1 F -.15(ve)-.15 G 3.764(rs softw).15 F 3.764
+(are freely)-.1 F(redistrib)79.2 382.8 Q 1.742(utable in source form.)
+-.2 F 1.741(When Sleep)6.742 F 1.741(ycat Soft-)-.1 F -.1(wa)79.2 394.8
+S .906(re w).1 F .907(as formed, we needed to draft a license consis-)
+-.1 F 2.319(tent with the cop)79.2 406.8 R 2.319(yright go)-.1 F -.15
+(ve)-.15 G 2.318(rning the e).15 F 2.318(xisting, older)-.15 F(softw)
+79.2 418.8 Q 5.328(are. Because)-.1 F 2.828(of important dif)5.328 F
+2.828(ferences between)-.25 F .497(the UC Berk)79.2 430.8 R(ele)-.1 E
+2.997(yc)-.15 G(op)-2.997 E .497(yright and the GPL, it w)-.1 F .496
+(as impos-)-.1 F .884(sible for us to use the GPL.)79.2 442.8 R 3.384
+(As)5.884 G .884(econd cop)-3.384 F .884(yright, with)-.1 F .87
+(terms contradictory to the \214rst, simply w)79.2 454.8 R .87
+(ould not ha)-.1 F -.15(ve)-.2 G -.1(wo)79.2 466.8 S(rk).1 E(ed.)-.1 E
+(Sleep)79.2 483 Q 2.533(ycat w)-.1 F 2.533
+(anted to continue Open Source de)-.1 F -.15(ve)-.25 G(lop-).15 E 2.079
+(ment of Berk)79.2 495 R(ele)-.1 E 4.579(yD)-.15 G 4.579(Bf)-4.579 G
+2.079(or se)-4.579 F -.15(ve)-.25 G 2.079(ral reasons.).15 F 3.678 -.8
+(We a)7.078 H(gree).8 E .853
+(with Raymond [Raym98] and others that Open Source)79.2 507 R(softw)79.2
+519 Q .763(are is typically of higher quality than proprietary)-.1 F(,)
+-.65 E 2.616(binary-only products.)79.2 531 R 2.617
+(Our customers bene\214t from a)7.616 F .983(community of de)79.2 543 R
+-.15(ve)-.25 G .983(lopers who kno).15 F 3.483(wa)-.25 G .983
+(nd use Berk)-3.483 F(ele)-.1 E(y)-.15 E 1.317
+(DB, and can help with application design, deb)79.2 555 R(ugging,)-.2 E
+1.65(and performance tuning.)79.2 567 R -.4(Wi)6.65 G 1.65
+(despread distrib).4 F 1.65(ution and)-.2 F 1.017
+(use of the source code tends to isolate b)79.2 579 R 1.017(ugs early)
+-.2 F 3.517(,a)-.65 G(nd)-3.517 E .032(to get \214x)79.2 591 R .031
+(es back into the distrib)-.15 F .031(uted system quickly)-.2 F 5.031
+(.A)-.65 G(s)-5.031 E 3.553(ar)79.2 603 S 1.053(esult, Berk)-3.553 F
+(ele)-.1 E 3.553(yD)-.15 G 3.553(Bi)-3.553 G 3.553(sm)-3.553 G 1.053
+(ore reliable.)-3.553 F 1.054(Just as impor)6.054 F(-)-.2 E(tantly)79.2
+615 Q 3.695(,i)-.65 G(ndi)-3.695 E 1.195
+(vidual users are able to contrib)-.25 F 1.195(ute ne)-.2 F 3.695(wf)
+-.25 G(ea-)-3.695 E 1.056
+(tures and performance enhancements, to the bene\214t of)79.2 627 R
+-2.15 -.25(ev e)79.2 639 T .359(ryone who uses Berk).25 F(ele)-.1 E
+2.859(yD)-.15 G 2.859(B. From)-2.859 F 2.858(ab)2.859 G .358
+(usiness per)-3.058 F(-)-.2 E(specti)79.2 651 Q -.15(ve)-.25 G 3.115(,O)
+.15 G .615(pen Source and free distrib)-3.115 F .615(ution of the soft-)
+-.2 F -.1(wa)79.2 663 S 1.605(re creates share for us, and gi).1 F -.15
+(ve)-.25 G 4.105(su).15 G 4.105(sam)-4.105 G(ark)-4.105 E 1.605(et into)
+-.1 F .412(which we can sell products and services.)79.2 675 R(Finally)
+5.413 E 2.913(,m)-.65 G(ak-)-2.913 E .148(ing the source code freely a)
+79.2 687 R -.25(va)-.2 G .147(ilable reduces our support).25 F 2.436
+(load, since customers can \214nd and \214x b)79.2 699 R 2.437
+(ugs without)-.2 F(recourse to us, in man)79.2 711 Q 2.5(yc)-.15 G
+(ases.)-2.5 E 4.727 -.8(To p)323.2 84 T(reserv).8 E 5.627(et)-.15 G
+3.126(he Open Source heritage of the older)-5.627 F(Berk)323.2 96 Q(ele)
+-.1 E 3.003(yD)-.15 G 3.003(Bc)-3.003 G .504(ode, we drafted a ne)-3.003
+F 3.004(wl)-.25 G .504(icense go)-3.004 F -.15(ve)-.15 G(rning).15 E
+.417(the distrib)323.2 108 R .417(ution of Berk)-.2 F(ele)-.1 E 2.916
+(yD)-.15 G 2.916(B2)-2.916 G 2.916(.x. W)-2.916 F 2.916(ea)-.8 G .416
+(dopted terms)-2.916 F .411(from the GPL that mak)323.2 120 R 2.911(ei)
+-.1 G 2.911(ti)-2.911 G .411(mpossible to turn our Open)-2.911 F 1.289
+(Source code into proprietary code o)323.2 132 R 1.288(wned by someone)
+-.25 F(else.)323.2 144 Q(Brie\215y)323.2 160.2 Q 3.18(,t)-.65 G .68
+(he terms go)-3.18 F -.15(ve)-.15 G .68(rning the use and distrib).15 F
+.68(ution of)-.2 F(Berk)323.2 172.2 Q(ele)-.1 E 2.5(yD)-.15 G 2.5(Ba)
+-2.5 G(re:)-2.5 E/F2 8/Times-Roman@0 SF<83>328.2 188.4 Q F0
+(your application must be internal to your site, or)17.2 E F2<83>328.2
+204.6 Q F0 .612(your application must be freely redistrib)17.2 F .611
+(utable in)-.2 F(source form, or)348.2 216.6 Q F2<83>328.2 232.8 Q F0
+(you must get a license from us.)17.2 E -.15(Fo)323.2 249 S 2.631(rc).15
+G .131(ustomers who prefer not to distrib)-2.631 F .132(ute Open Source)
+-.2 F 1.493(products, we sell licenses to use and e)323.2 261 R 1.492
+(xtend Berk)-.15 F(ele)-.1 E(y)-.15 E(DB at a reasonable cost.)323.2 273
+Q 2.675 -.8(We w)323.2 289.2 T 1.076
+(ork hard to accommodate the needs of the Open).7 F .606
+(Source community)323.2 301.2 R 5.606(.F)-.65 G .606(or e)-5.756 F .606
+(xample, we ha)-.15 F .905 -.15(ve c)-.2 H .605(rafted spe-).15 F 1.415
+(cial licensing arrangements with Gnome to encourage)323.2 313.2 R
+(its use and distrib)323.2 325.2 Q(ution of Berk)-.2 E(ele)-.1 E 2.5(yD)
+-.15 G(B.)-2.5 E(Berk)323.2 341.4 Q(ele)-.1 E 4.103(yD)-.15 G 4.103(Bc)
+-4.103 G 1.603(onforms to the Open Source de\214nition)-4.103 F 4.867
+([Open99]. The)323.2 353.4 R 2.367
+(license has been carefully crafted to)4.867 F -.1(ke)323.2 365.4 S .643
+(ep the product a).1 F -.25(va)-.2 G .642(ilable as an Open Source of)
+.25 F(fering,)-.25 E(while pro)323.2 377.4 Q
+(viding enough of a return on our in)-.15 E -.15(ve)-.4 G(stment to).15
+E 1.546(fund continued de)323.2 389.4 R -.15(ve)-.25 G 1.546
+(lopment and support of the prod-).15 F 3.033(uct. The)323.2 401.4 R
+.534(current license has created a b)3.033 F .534(usiness capable)-.2 F
+.916(of funding three years of de)323.2 413.4 R -.15(ve)-.25 G .916
+(lopment on the softw).15 F(are)-.1 E(that simply w)323.2 425.4 Q
+(ould not ha)-.1 E .3 -.15(ve h)-.2 H(appened otherwise.).15 E F1 3
+(7. Summary)323.2 455.4 R F0(Berk)323.2 471.6 Q(ele)-.1 E 2.991(yD)-.15
+G 2.991(Bo)-2.991 G -.25(ff)-2.991 G .491
+(ers a unique collection of features, tar).25 F(-)-.2 E .175
+(geted squarely at softw)323.2 483.6 R .174(are de)-.1 F -.15(ve)-.25 G
+.174(lopers who need simple,).15 F .492
+(reliable database management services in their applica-)323.2 495.6 R
+5.3(tions. Good)323.2 507.6 R 2.8(design and implementation and careful)
+5.3 F 1.633(engineering throughout mak)323.2 519.6 R 4.133(et)-.1 G
+1.633(he softw)-4.133 F 1.634(are better than)-.1 F(man)323.2 531.6 Q
+2.5(yo)-.15 G(ther systems.)-2.5 E(Berk)323.2 547.8 Q(ele)-.1 E 4.1(yD)
+-.15 G 4.1(Bi)-4.1 G 4.1(sa)-4.1 G 4.1(nO)-4.1 G 1.6
+(pen Source product, a)-4.1 F -.25(va)-.2 G 1.6(ilable at).25 F/F3 10
+/Times-Italic@0 SF(www)323.2 559.8 Q(.sleepycat.com)-.74 E F0 .654
+(for do)3.154 F 3.154(wnload. The)-.25 F(distrib)3.154 E .654(uted sys-)
+-.2 F .383(tem includes e)323.2 571.8 R -.15(ve)-.25 G .383
+(rything needed to b).15 F .382(uild and deplo)-.2 F 2.882(yt)-.1 G(he)
+-2.882 E(softw)323.2 583.8 Q(are or to port it to ne)-.1 E 2.5(ws)-.25 G
+(ystems.)-2.5 E(Sleep)323.2 600 Q 2.633(ycat Softw)-.1 F 2.633
+(are distrib)-.1 F 2.633(utes Berk)-.2 F(ele)-.1 E 5.133(yD)-.15 G 5.134
+(Bu)-5.133 G 2.634(nder a)-5.134 F .764(license agreement that dra)323.2
+612 R .764(ws on both the UC Berk)-.15 F(ele)-.1 E(y)-.15 E(cop)323.2
+624 Q 2.377(yright and the GPL.)-.1 F 2.377(The license guarantees that)
+7.377 F(Berk)323.2 636 Q(ele)-.1 E 3.384(yD)-.15 G 3.384(Bw)-3.384 G
+.884(ill remain an Open Source product and)-3.384 F(pro)323.2 648 Q
+1.493(vides Sleep)-.15 F 1.493(ycat with opportunities to mak)-.1 F
+3.994(em)-.1 G(one)-3.994 E(y)-.15 E(to fund continued de)323.2 660 Q
+-.15(ve)-.25 G(lopment on the softw).15 E(are.)-.1 E EP
+%%Page: 9 9
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 12/Times-Bold@0 SF 3(8. Refer)79.2 84 R(ences)-.216 E/F1 10
+/Times-Roman@0 SF([Come79])79.2 100.2 Q(Comer)104.2 112.2 Q 3.127(,D)-.4
+G .627(., \231The Ubiquitous B-tree,)-3.127 F<9a>-.7 E/F2 10
+/Times-Italic@0 SF -.3(AC)3.126 G 3.126(MC).3 G(om-)-3.126 E .404
+(puting Surve)104.2 124.2 R(ys)-.3 E F1 -1.29(Vo)2.904 G .404
+(lume 11, number 2, June 1979.)1.29 F([Gray93])79.2 140.4 Q(Gray)104.2
+152.4 Q 2.982(,J)-.65 G .482(., and Reuter)-2.982 F 2.982(,A)-.4 G(.,)
+-2.982 E F2 -1.55 -.55(Tr a)2.981 H .481(nsaction Pr).55 F(ocessing:)
+-.45 E 6.776(Concepts and T)104.2 164.4 R(ec)-.92 E(hniques)-.15 E F1
+9.277(,M)C(or)-9.277 E -.05(ga)-.18 G(n-Kaufman).05 E(Publishers, 1993.)
+104.2 176.4 Q([IEEE96])79.2 192.6 Q .364
+(Institute for Electrical and Electronics Engineers,)104.2 204.6 R F2
+(IEEE/ANSI Std 1003.1)104.2 216.6 Q F1 2.5(,1)C(996 Edition.)-2.5 E
+([Litw80])79.2 232.8 Q 2.365(Litwin, W)104.2 244.8 R 2.366
+(., \231Linear Hashing: A Ne)-.92 F 4.866(wT)-.25 G 2.366(ool for)-5.666
+F 1.784(File and T)104.2 256.8 R 1.783(able Addressing,)-.8 F<9a>-.7 E
+F2(Pr)4.283 E 1.783(oceedings of the)-.45 F 4.804
+(6th International Confer)104.2 268.8 R 4.804(ence on V)-.37 F 4.804
+(ery Lar)-1.11 F -.1(ge)-.37 G 1.983(Databases \(VLDB\))104.2 280.8 R F1
+4.483(,M)C 1.982(ontreal, Quebec, Canada,)-4.483 F(October 1980.)104.2
+292.8 Q([Open94])79.2 309 Q 4.068(The Open Group,)104.2 321 R F2
+(Distrib)6.568 E 4.069(uted TP: The XA+)-.2 F .78(Speci\214cation, V)
+104.2 333 R(er)-1.11 E .78(sion 2)-.1 F F1 3.28(,T)C .78
+(he Open Group, 1994.)-3.28 F([Open99])79.2 349.2 Q(Opensource.or)104.2
+361.2 Q 8.307(g, \231Open Source De\214nition,)-.18 F<9a>-.7 E F2(www)
+104.2 373.2 Q(.opensour)-.74 E(ce)-.37 E(.or)-.15 E(g/osd.html)-.37 E F1
+3.13(,v)C .63(ersion 1.4, 1999.)-3.28 F([Raym98])79.2 389.4 Q .718
+(Raymond, E.S., \231The Cathedral and the Bazaar)104.2 401.4 R -.7<2c9a>
+-.4 G F2(www)104.2 413.4 Q(.tuxedo.or)-.74 E(g/~esr/writings/cathedr)
+-.37 E(al-)-.15 E(bazaar/cathedr)104.2 425.4 Q(al-bazaar)-.15 E(.html)
+-1.11 E F1 2.5(,J)C(anuary 1998.)-2.5 E([Selt91])79.2 441.6 Q(Seltzer)
+104.2 453.6 Q 2.578(,M)-.4 G .078(., and Y)-2.578 F .079(igit, O., \231)
+-.55 F 2.579(AN)-.8 G .579 -.25(ew H)-2.579 H .079(ashing P).25 F(ack-)
+-.15 E 6.704(age for UNIX,)104.2 465.6 R<9a>-.7 E F2(Pr)9.204 E 6.704
+(oceedings 1991 W)-.45 F(inter)-.55 E(USENIX Confer)104.2 477.6 Q(ence)
+-.37 E F1 2.5(,D)C(allas, TX, January 1991.)-2.5 E([Selt92])79.2 493.8 Q
+(Seltzer)104.2 505.8 Q 5.365(,M)-.4 G 2.865
+(., and Olson, M., \231LIBTP: Portable)-5.365 F 2.845(Modular T)104.2
+517.8 R 2.845(ransactions for UNIX,)-.35 F<9a>-.7 E F2(Pr)5.345 E
+(oceedings)-.45 E 1.49(1992 W)104.2 529.8 R 1.49(inter Usenix Confer)
+-.55 F(ence)-.37 E F1 3.99(,S)C 1.49(an Francisco,)-3.99 F
+(CA, January 1992.)104.2 541.8 Q([Ston82])79.2 558 Q(Stonebrak)104.2 570
+Q(er)-.1 E 10.04(,M)-.4 G 7.54(., Stettner)-10.04 F 10.04(,H)-.4 G 7.54
+(., Kalash, J.,)-10.04 F .763(Guttman, A., and L)104.2 582 R .764
+(ynn, N., \231Document Process-)-.55 F .557
+(ing in a Relational Database System,)104.2 594 R 3.056<9a4d>-.7 G
+(emoran-)-3.056 E .825(dum No. UCB/ERL M82/32, Uni)104.2 606 R -.15(ve)
+-.25 G .825(rsity of Cali-).15 F(fornia at Berk)104.2 618 Q(ele)-.1 E
+1.3 -.65(y, B)-.15 H(erk).65 E(ele)-.1 E 1.3 -.65(y, C)-.15 H
+(A, May 1982.).65 E EP
+%%Trailer
+end
+%%EOF
diff --git a/db/docs_src/ref/refs/embedded.html b/db/docs_src/ref/refs/embedded.html
new file mode 100644
index 000000000..b7641d931
--- /dev/null
+++ b/db/docs_src/ref/refs/embedded.html
@@ -0,0 +1,672 @@
+<html>
+<head>
+<title>Challenges in Embedded Database System Administration</title>
+</head>
+<body bgcolor=white>
+<center>
+<h1>Challenges in Embedded Database System Administration</h1>
+<h3>Margo Seltzer, Harvard University</h3>
+<h3>Michael Olson, Sleepycat Software, Inc.</h3>
+<em>{margo,mao}@sleepycat.com</em>
+</center>
+<p>
+Database configuration and maintenance have historically been complex tasks,
+often
+requiring expert knowledge of database design and application
+behavior.
+In an embedded environment, it is not feasible to require such
+expertise and ongoing database maintenance.
+This paper discusses the database administration
+challenges posed by embedded systems and describes how the
+Berkeley DB architecture addresses these challenges.
+
+<h2>1. Introduction</h2>
+
+Embedded systems provide a combination of opportunities and challenges
+in application and system configuration and management.
+As an embedded system is most often dedicated to a single application or
+small set of tasks, the operating conditions of the system are
+typically better understood than those of general purpose computing
+environments.
+Similarly, as embedded systems are dedicated to a small set of tasks,
+one would expect that the software to manage them should be small
+and simple.
+On the other hand, once an embedded system is deployed, it must
+continue to function without interruption and without administrator
+intervention.
+<p>
+Database administration consists of two components,
+initial configuration and ongoing maintenance.
+Initial configuration consists of database design, manifestation,
+and tuning.
+The instantiation of the design includes decomposing the design
+into tables, relations, or objects and designating proper indices
+and their implementations (e.g., Btrees, hash tables, etc.).
+Tuning a design requires selecting a location for the log and
+data files, selecting appropriate database page sizes, specifying
+the size of in-memory caches, and specifying the limits of
+multi-threading and concurrency.
+As embedded systems define a specific environment and set of tasks,
+requiring expertise during the initial system
+configuration process is acceptable, and we focus our efforts on
+the ongoing maintenance of the system.
+In this way, our emphasis differs from other projects such as
+Microsoft's AutoAdmin project <a href="#Chaud982">[3]</a>, and the "no-knobs"
+administration that is identified as an area of important future
+research by the Asilomar authors<a href="#Bern98">[1]</a>.
+<p>
+In this paper, we focus on what the authors
+of the Asilomar report call "gizmo" databases <a href="#Bern98"> [1]</a>,
+databases
+that reside in devices such as smart cards, toasters, or telephones.
+The key characteristics of such databases are that their
+functionality is completely transparent to users, no one ever
+performs explicit database operations or
+database maintenance, the database may crash at any time and
+must recover instantly, the device may undergo a hard reset at
+any time, requiring that the database return to its initial
+state, and the semantic integrity of the database must be maintained
+at all times.
+In Section 2, we provide more detail on the sorts of tasks
+typically performed by database administrators (DBAs) that must
+be automated in an embedded system.
+<p>
+The rest of this paper is structured as follows.
+In Section 2, we outline the requirements for embedded database support.
+In Section 3, we discuss how Berkeley DB
+is conducive to the hands-off management
+required in embedded systems.
+In Section 4, we discuss novel features that
+enhance Berkeley
+DB's suitability for the embedded applications.
+In Section 5, we discuss issues of footprint size.
+In Section 6 we discuss related work, and we conclude
+in Section 7.
+
+<h2>2. Embedded Database Requirements</h2>
+Historically, much of the commercial database industry has been driven
+by the requirements of high performance online transaction
+processing (OLTP), complex query processing, and the industry
+standard benchmarks that have emerged (e.g., TPC-C <a href="#TPCC">[9]</a>,
+TPC-D <a href="#TPCD">[10]</a>) to
+allow for system comparisons.
+As embedded systems typically perform fairly simple queries,
+such metrics are not nearly as relevant for embedded database
+systems as are ease of maintenance, robustness, and small footprint.
+Of these three requirements, robustness and ease of maintenance
+are the key issues.
+Users must trust the data stored in their devices and must not need
+to manually perform anything resembling system administration in order
+to get their unit to work properly.
+Fortunately, ease of use and robustness are important side
+effects of simplicity and good design.
+These, in turn, lead to a small size, providing the third
+requirement of an embedded system.
+<h3>2.1 The User Perspective</h3>
+<p>
+In the embedded database arena, it is the ongoing maintenance tasks
+that must be automated, not necessarily the initial system configuration.
+There are five tasks
+that are traditionally performed by DBAs,
+but must be performed automatically
+in embedded database systems.
+These tasks are
+log archival and reclamation,
+backup,
+data compaction/reorganization,
+automatic and rapid recovery, and
+reinitialization from scratch.
+<P>
+Log archival and backup are tightly coupled.
+Database backups are part of any
+large database installation, and log archival is analogous to incremental
+backup.
+It is not clear what the implications of backup and archival are in
+an embedded system.
+Consumers do not back up their VCRs or refrigerators, yet they do
+(or should) back up their personal computers or personal digital
+assistants.
+For the remainder of this paper, we assume that backups, in some form,
+are required for gizmo databases (imagine having to reprogram, manually,
+the television viewing access pattern learned by some set-top television
+systems today).
+Furthermore, we require that those backups are nearly instantaneous or
+completely transparent,
+as users should not be aware that their gizmos are being backed up
+and should not have to explicitly initiate such backups.
+<p>
+Data compaction or reorganization has traditionally required periodic
+dumping and restoration of
+database tables and the recreation of indices.
+In an embedded system, such reorganization must happen automatically.
+<p>
+Recovery issues are similar in embedded and traditional environments
+with a few exceptions.
+While a few seconds or even a minute recovery is acceptable
+for a large server installation, no one is willing to wait
+for their telephone or television to reboot.
+As with archival, recovery must be nearly instantaneous in an embedded product.
+Secondly, it is often the case that a system will be completely
+reinitialized, rather than simply rebooted.
+In this case, the embedded database must be restored to its initial
+state, freeing all its resources.
+This is not typically a requirement of large server systems.
+<h3>2.2 The Developer Perspective</h3>
+<p>
+In addition to the maintenance-free operation required of the
+embedded systems, there are a number of requirements that fall
+out of the constrained resources typically found in the "gizmos"
+using gizmo databases. These requirements are:
+small footprint,
+short code-path,
+programmatic interface for tight application coupling and
+to avoid the overhead (in both time and size) of
+interfaces such as SQL and ODBC,
+application configurability and flexibility,
+support for complete memory-resident operation (e.g., these systems
+must run on gizmos without file systems), and
+support for multi-threading.
+<p>
+A small footprint and short code-path are self-explanatory, however
+what is not as obvious is that the programmatic interface requirement
+is the logical result of them.
+Traditional interfaces such as ODBC and SQL add significant
+size overhead and frequently add multiple context/thread switches
+per operation, not to mention several IPC calls.
+An embedded product is less likely to require the complex
+query processing that SQL enables.
+Instead, in the embedded space, the ability for an application
+to configure the database for the specific tasks in question
+is more important than a general query interface.
+<p>
+As some systems do not provide storage other than RAM and ROM,
+it is essential that an embedded database work seemlessly
+in memory-only environments.
+Similarly, many of today's embedded operating systems provide a
+single address space architecture, so a simple, multi-threaded
+capability is essential for application requiring any concurrency.
+<p>
+In general, embedded applications run on gizmos whose native
+operating system support varies tremendously.
+For example, the embedded OS may or may
+not support user-level processing or multi-threading.
+Even if it does, a particular embedded
+application may or may not need it.
+Not all applications need more than one thread of control.
+An embedded database must provide mechanisms to developers
+without deciding policy.
+For example, the threading model in an application is a matter of policy,
+and depends
+not on the database software, but on the hardware, operating
+system, and the application's feature set.
+Therefore, the data manager must provide for the use of multi-threading,
+but not require it.
+
+<h2>3. Berkeley DB: A Database for Embedded Systems</h2>
+Berkeley DB is the result of implementing database functionality
+using the UNIX tool-based philosophy.
+The current Berkeley DB package, as distributed by Sleepycat
+Software, is a descendant of the hash and btree access methods
+distributed with 4.4BSD and its descendents.
+The original package (referred to as DB-1.85),
+while intended as a public domain replacement for dbm and
+its followers (e.g., ndbm, gdbm, etc), rapidly became widely
+used as an efficient, easy-to-use data store.
+It was incorporated into a number of Open Source packages including
+Perl, Sendmail, Kerberos, and the GNU C-library.
+<p>
+Versions 2.X and higher are distributed by Sleepycat Software and
+add functionality for concurrency, logging, transactions, and
+recovery.
+Each piece of additional functionality is implemented as an independent
+module, which means that the subsystems can be used outside the
+context of Berkeley DB. For example, the locking subsystem can
+easily be used to implement locking for a non-DB application and
+the shared memory buffer pool can be used for any application
+caching data in main memory.
+This subsystem design allows a designer to pick and choose
+the functionality necessary for the application, minimizing
+memory footprint and maximizing performance.
+This addresses the small footprint and short code-path criteria
+mentioned in the previous section.
+<p>
+As Berkeley DB grew out of a replacement for dbm, its primary
+implementation language has always been C and its interface has
+been programmatic. The C interface is the native interface,
+unlike many database systems where the programmatic API is simply
+a layer on top of an already-costly query interface (e.g. embedded
+SQL).
+Berkeley DB's heritage is also apparent in its data model; it has
+none.
+The database stores unstructured key/data pairs, specified as
+variable length byte strings.
+This leaves schema design and representation issues the responsibility
+of the application, which is ideal for an embedded environment.
+Applications retain full control over specification of their data
+types, representation, index values, and index relationships.
+In other words, Berkeley DB provides a robust, high-performance,
+keyed storage system, not a particular database management system.
+We have designed for simplicity and performance, trading off
+complex, general purpose support that is better encapsulated in
+applications.
+<p>
+Another element of Berkeley DB's programmatic interface is its
+customizability; applications can specify Btree comparison and
+prefix compression functions, hash functions, error routines,
+and recovery models.
+This means that embedded applications can tailor the underlying
+database to best suit their data demands.
+Similarly, the utilities traditionally bundled with a database
+manager (e.g., recovery, dump/restore, archive) are implemented
+as tiny wrapper programs around library routines. This means
+that it is not necessary to run separate applications for the
+utilities. Instead, independent threads can act as utility
+daemons, or regular query threads can perform utility functions.
+Many of the current products built on Berkeley DB are bundled as
+a single large server with independent threads that perform functions
+such as checkpoint, deadlock detection, and performance monitoring.
+<p>
+As mentioned earlier, living in an embedded environment requires
+flexible management of storage.
+Berkeley DB does not require any preallocation of disk space
+for log or data files.
+While many commercial database systems take complete control
+of a raw device, Berkeley DB uses a normal file system, and
+can therefore, safely and easily share a data space with other
+programs.
+All databases and log files are native files of the host environment,
+so whatever utilities are provided by the environment can be used
+to manage database files as well.
+<p>
+Berkeley DB provides three different memory models for its
+management of shared information.
+Applications can use the IEEE Std 1003.1b-1993 (POSIX) <tt>mmap</tt>
+interface to share
+data, they can use system shared memory, as frequently provided
+by the shmget family of interfaces, or they can use per-process
+heap memory (e.g., malloc).
+Applications that require no permanent storage and do not provide
+shared memory facilities can still use Berkeley DB by requesting
+strictly private memory and specifying that all databases be
+memory-resident.
+This provides pure-memory operation.
+<p>
+Lastly, Berkeley DB is designed for rapid startup -- recovery can
+happen automatically as part of system initialization.
+This means that Berkeley DB works correctly in environments where
+gizmos are suddenly shut down and restarted.
+
+<h2>4. Extensions for Embedded Environments </h2>
+While the Berkeley DB library has been designed for use in
+embedded systems, all the features described above are useful
+in more conventional systems as well.
+In this section, we discuss a number of features and "automatic
+knobs" that are specifically geared
+toward the more constrained environments found in gizmo databases.
+
+<h3>4.1 Automatic compression</h3>
+Following the programmatic interface design philosophy, we
+support application-specific (or default) compression routines.
+These can be geared toward the particular data types present
+in the application's dataset, thus providing better compression
+than a general purpose routine.
+Note that the application could instead specify an encryption
+function and create encrypted databases instead of compressed ones.
+Alternately, the application might specify a function that performs
+both compression and encryption.
+<p>
+As applications are also permitted to specify comparison and hash
+functions, the application can chose to organize its data based
+either on uncompressed and clear-text data or compressed and encrypted
+data.
+If the application indicates that data should be compared in its
+processed form (i.e., compressed and encrypted), then the compression
+and encryption are performed on individual data items and the in-memory
+representation retains these characteristics.
+However, if the application indicates that data should be compared in
+its original form, then entire pages are transformed upon being read
+into or written out of the main memory buffer cache.
+These two alternatives provide the flexibility to trade space
+and security for performance.
+
+<h3>4.2 In-memory logging & transactions</h3>
+One of the four key properties of transaction systems is durability.
+This means that transaction systems are designed for permanent storage
+(most commonly disk). However, as mentioned above, embedded systems
+do not necessarily contain any such storage.
+Nevertheless, transactions can be useful in this environment to
+preserve the semantic integrity of the underlying storage.
+Berkeley DB optionally provides logging functionality and
+transaction support regardless of whether the database and logs
+are on disk or in memory.
+
+<h3>4.3 Remote Logs</h3>
+While we do not expect users to backup their television sets and
+toasters, it is conceivable that a set-top box provided by a
+cable carrier should, in fact, be backed up by that cable carrier.
+The ability to store logs remotely can provide "information appliance"
+functionality, and can also be used in conjunction with local logs
+to enhance reliability.
+Furthermore, remote logs provide for catastrophic recovery, e.g., loss
+of the gizmo, destruction of the gizmo, etc.
+
+<h3>4.4 Application References to Database Buffers</h3>
+
+Typically, when data is returned to the user, it must be copied
+from the data manager's buffer cache (or data page) into the
+application's memory.
+However, in an embedded environment, the robustness of the
+total software package is of paramount importance, not the
+isolation between the application and the data manager.
+As a result, it is possible for the data manager to avoid
+copies by giving applications direct references to data items
+in a shared memory cache.
+This is a significant performance optimization that can be
+allowed when the application and data manager are tightly
+integrated.
+
+<h3>4.5 Recoverable database creation/deletion</h3>
+
+In a conventional database management system, the creation of
+database tables (relations) and indices are heavyweight operations
+that are not recoverable.
+This is not acceptable in a complex embedded environment where
+instantaneous recovery and robust operation in the face of
+all types of database operations is essential.
+While Berkeley DB files can be removed using normal file system
+utilities, we provide transaction protected utilities that
+allow us to recover both database creation and deletion.
+
+<h3>4.6 Adaptive concurrency control</h3>
+The Berkeley DB package uses page-level locking by default.
+This trades off fine grain concurrency control for simplicity
+during recovery. (Finer grain concurrency control can be
+obtained by reducing the page size in the database.)
+However, when multiple threads/processes perform page-locking
+in the presence of writing operations, there is the
+potential for deadlock.
+As some environments do not need or desire the overhead of
+logging and transactions, it is important to provide the
+ability for concurrent access without the potential for
+deadlock.
+<p>
+Berkeley DB provides an option to perform coarser grain,
+deadlock-free locking.
+Rather than locking on pages, locking is performed at the
+interface to the database.
+Multiple readers or a single writer are allowed to be
+active in the database at any instant in time, with
+conflicting requests queued automatically.
+The presence of cursors, through which applications can both
+read and write data, complicates this design.
+If a cursor is currently being used for reading, but will later
+be used to write, the system will be deadlock prone if no
+special precautions are taken.
+To handle this situation, we require that, when a cursor is
+created, the application specify any future intention to write.
+If there is an intention to write, the cursor is granted an
+intention-to-write lock which does not conflict with readers,
+but does conflict with other intention-to-write locks and write
+locks.
+The end result is that the application is limited to a single
+potentially writing cursor accessing the database at any point
+in time.
+<p>
+Under periods of low contention (but potentially high throughput),
+the normal page-level locking provides the best overall throughput.
+However, as contention rises, so does the potential for deadlock.
+As some cross-over point, switching to the less concurrent, but
+deadlock-free locking protocol will result in higher throughput
+as operations must never be retried.
+Given the operating conditions of an embedded database manager,
+it is useful to make this change automatically as the system
+itself detects high contention.
+
+<h3>4.7 Adaptive synchronization</h3>
+
+In addition to the logical locks that protect the integrity of the
+database pages, Berkeley DB must synchronize access to shared memory
+data structures, such as the lock table, in-memory buffer pool, and
+in-memory log buffer.
+Each independent module uses a single mutex to protect its shared
+data structures, under the assumption that operations that require
+the mutex are very short and the potential for conflict is
+low.
+Unfortunately, in highly concurrent environments with multiple processors
+present, this assumption is not always true.
+When this assumption becomes invalid (that is, we observe significant
+contention for the subsystem mutexes), we can switch over to a finer-grained
+concurrency model for the mutexes.
+Once again, there is a performance trade-off. Fine-grain mutexes
+impose a penalty of approximately 25% (due to the increased number
+of mutexes required for each operation), but allow for higher throughput.
+Using fine-grain mutexes under low contention would cause a decrease
+in performance, so it is important to monitor the system carefully,
+so that the change can be executed only when it will increase system
+throughput without jeopardizing latency.
+
+<h2>5. Footprint of an Embedded System</h2>
+While traditional systems compete on price-performance, the
+embedded players will compete on price, features, and footprint.
+The earlier sections have focused on features; in this section
+we focus on footprint.
+<p>
+Oracle reports that Oracle Lite 3.0 requires 350 KB to 750 KB
+of memory and approximately 2.5 MB of hard disk space <a href="#Oracle">[7]</a>.
+This includes drivers for interfaces such as ODBC and JDBC.
+In contrast, Berkeley DB ranges in size from 75 KB to under 200 KB,
+foregoing heavyweight interfaces such as ODBC and JDBC and
+providing a variety of deployed sizes that can be used depending
+on application needs. At the low end, applications requiring
+a simple single-user access method can choose from either extended
+linear hashing, B+ trees, or record-number based retrieval and
+pay only the 75 KB space requirement.
+Applications requiring all three access methods will observe the
+110 KB footprint.
+At the high end, a fully recoverable, high-performance system
+occupies less than a quarter megabyte of memory.
+This is a system you can easily incorporate in your toaster oven.
+Table 1 shows the per-module break down of the entire Berkeley DB
+library. Note that this does not include memory used to cache database
+pages.
+
+<table border>
+<tr><th colspan=4>Object sizes in bytes</th></tr>
+<tr><th align=left>Subsystem</th><th align=center>Text</th><th align=center>Data</th><th align=center>Bss</th></tr>
+<tr><td>Btree-specific routines</td><td align=right>28812</td><td align=right>0</td><td align=right>0</td></tr>
+<tr><td>Recno-specific routines</td><td align=right>7211</td><td align=right>0</td><td align=right>0</td></tr>
+<tr><td>Hash-specific routines</td><td align=right>23742</td><td align=right>0</td><td align=right>0</td></tr>
+<tr><td colspan=4></td></tr>
+<tr><td>Memory Pool</td><td align=right>14535</td><td align=right>0</td><td align=right>0</td></tr>
+<tr><td>Access method common code</td><td align=right>23252</td><td align=right>0</td><td align=right>0</td></tr>
+<tr><td>OS compatibility library</td><td align=right>4980</td><td align=right>52</td><td align=right>0</td></tr>
+<tr><td>Support utilities</td><td align=right>6165</td><td align=right>0</td><td align=right>0</td></tr>
+<tr><td colspan=4></td></tr>
+<tr><th>All modules for Btree access method only</th><td align=right>77744</td><td align=right>52</td><td align=right>0</td></tr>
+<tr><th>All modules for Recno access method only</th><td align=right>84955</td><td align=right>52</td><td align=right>0</td></tr>
+<tr><th>All modules for Hash access method only</th><td align=right>72674</td><td align=right>52</td><td align=right>0</td></tr>
+<tr><td colspan=4></td></tr>
+<tr><th align=left>All Access Methods</th><td align=right>108697</td><td align=right>52</td><td align=right>0</td></tr>
+<tr><td colspan=4><br></td></tr>
+<tr><td>Locking</td><td align=right>12533</td><td align=right>0</td><td align=right>0</td></tr>
+<tr><td colspan=4></td></tr>
+<tr><td>Recovery</td><td align=right>26948</td><td align=right>8</td><td align=right>4</td></tr>
+<tr><td>Logging</td><td align=right>37367</td><td align=right>0</td><td align=right>0</td></tr>
+<tr><td colspan=4></td></tr>
+<tr><th align=left>Full Package</th><td align=right>185545</td><td align=right>60</td><td align=right>4</td></tr>
+<tr><br></tr>
+</table>
+
+<h2>6. Related Work</h2>
+
+Every three to five years, leading researchers in the database
+community convene to identify future directions in database
+research.
+They produce a report of this meeting, named for the year and
+location of the meeting.
+The most recent of these reports, the 1998 Asilomar report,
+identifies the embedded database market as one of the
+high growth areas in database research <a href="#Bern98">[1]</a>.
+Not surprisingly, market analysts identify the embedded database
+market as a high-growth area in the commercial sector as well <a href="#Host98">
+[5]</a>.
+<p>
+The Asilomar report identifies a new class of database applications, which they
+term "gizmo" databases, small databases embedded in tiny mobile
+appliances, e.g., smart-cards, telephones, personal digital assistants.
+Such databases must be self-managing, secure and reliable.
+Thus, the idea is that gizmo databases require plug and play data
+management with no database administrator (DBA), no human settable
+parameters, and the ability to adapt to changing conditions.
+More specifically, the Asilomar authors claim that the goal is
+self-tuning, including defining the physical DB design, the
+logical DB design, and automatic reports and utilities <a href="#Bern98">[1]</a>
+To date,
+few researchers have accepted this challenge, and there is a dearth
+of research literature on the subject.
+<p>
+Our approach to embedded database administration is fundamentally
+different than that described by the Asilomar authors.
+We adopt their terminology, but view the challenge in supporting
+gizmo databases to be that of self-sustenance <em>after</em> initial
+deployment. Therefore, we find it, not only acceptable, but
+desirable to assume that application developers control initial
+database design and configuration. To the best of our knowledge,
+none of the published work in this area addresses this approach.
+<p>
+As the research community has not provided guidance in this
+arena, most work in embedded database administration has fallen
+to the commercial vendors.
+These vendors fall into two camps, companies selling databases
+specifically designed for embedding or programmatic access
+and the major database vendors (e.g., Oracle, Informix, Sybase).
+<p>
+The embedded vendors all acknowledge the need for automatic
+administration, but fail to identify precisely how their
+products actually accomplish this.
+A notable exception is Interbase whose white paper
+comparison with Sybase and Microsoft's SQL servers
+explicitly address features of maintenance ease.
+Interbase claims that as they use no log files, there is
+no need for log reclamation, checkpoint tuning, or other
+tasks associated with log management. However, Interbase
+uses Transaction Information Pages, and it is unclear
+how these are reused or reclaimed <a href="#Interbase">[6]</a>.
+Additionally, with a log-free system, they must use
+a FORCE policy (write all pages to disk at commit),
+as defined by Haerder and Reuter <a href="#Haerder">[4]</a>. This has
+serious performance consequences for disk-based systems.
+The approach described in this paper does use logs and
+therefore requires log reclamation,
+but provides hooks so the application may reclaim logs
+safely and programmatically.
+While Berkeley DB does require checkpoints, the goal of
+tuning the checkpoint interval is to bound recovery time.
+Since the checkpoint interval in Berkeley DB can be expressed
+by the amount of log data written, it requires no tuning.
+The application designer sets a target recovery time, and
+selects the amount of log data that can be read in that interval
+and specifies the checkpoint interval appropriately. Even as
+load changes, the time to recover does not.
+<p>
+The backup approaches taken by Interbase and Berkeley DB
+are similar in that they both allow online backup, but
+rather different in their affect on transactions running
+during backup. As Interbase performs backups as transactions
+<a href="#Interbase">[6]</a>, concurrent queries can suffer potentially long
+delays. Berkeley DB uses native operating system system utilities
+and recovery for backups, so there is no interference with
+concurrent activity, other than potential contention on disk
+arms.
+<p>
+There are a number of database vendors selling in
+the embedded market (e.g., Raima,
+Centura, Pervasive, Faircom), but none highlight
+the special requirements of embedded database
+applications.
+On the other end of the spectrum, the major vendors,
+Oracle, Sybase, Microsoft, are all becoming convinced
+of the importance of the embedded market.
+As mentioned earlier, Oracle has announced its
+Oracle Lite server for embedded use.
+Sybase has announced its UltraLite platform for "application-optimized,
+high-performance, SQL database engine for professional
+application developers building solutions for mobile and embedded platforms."
+<a href="#Sybase">[8]</a>.
+We believe that SQL is incompatible with the
+gizmo database environment or truly embedded systems for which Berkeley
+DB is most suitable.
+Microsoft research is taking a different approach, developing
+technology to assist in automating initial database design and
+index specification <a href="#Chaud98">[2]</a><a href="#Chaud982">[3]</a>.
+As mentioned earlier, we believe that such configuration is, not only
+acceptable in the embedded market, but desirable so that applications
+can tune their database management for the target environment.
+<h2>7. Conclusions</h2>
+The coming wave of embedded systems poses a new set of challenges
+for data management.
+The traditional server-based, big footprint systems designed for
+high performance on big iron are not the right approach in this
+environment.
+Instead, application developers need small, fast, versatile systems
+that can be tailored to a specific environment.
+In this paper, we have identified several of the key issues in
+providing these systems and shown how Berkeley DB provides
+many of the characteristics necessary for such applications.
+
+<h2>8. References</h2>
+<p>
+[1] <a name="Bern98"> Bernstein, P., Brodie, M., Ceri, S., DeWitt, D., Franklin, M.,
+Garcia-Molina, H., Gray, J., Held, J., Hellerstein, J.,
+Jagadish, H., Lesk, M., Maier, D., Naughton, J.,
+Pirahesh, H., Stonebraker, M., Ullman, J.,
+"The Asilomar Report on Database Research,"
+SIGMOD Record 27(4): 74-80, 1998.
+</a>
+<p>
+[2] <a name="Chaud98"> Chaudhuri, S., Narasayya, V.,
+"AutoAdmin 'What-If' Index Analysis Utility,"
+<em>Proceedings of the ACM SIGMOD Conference</em>, Seattle, 1998.
+</a>
+<p>
+[3] <a name="Chaud982"> Chaudhuri, S., Narasayya, V.,
+"An Efficient, Cost-Driver Index Selection Tool for Microsoft SQL Server,"
+<em>Proceedings of the 23rd VLDB Conference</em>, Athens, Greece, 1997.
+</a>
+<p>
+[4] <a name="Harder"> Haerder, T., Reuter, A.,
+"Principles of Transaction-Oriented Database Recovery,"
+<em>Computing Surveys 15</em>,4 (1983), 237-318.
+</a>
+<p>
+[5] <a name="Host98"> Hostetler, M., "Cover Is Off A New Type of Database,"
+Embedded DB News,
+http://www.theadvisors.com/embeddeddbnews.htm,
+5/6/98.
+</a>
+<p>
+[6] <a name="Interbase"> Interbase, "A Comparison of Borland InterBase 4.0
+Sybase SQL Server and Microsoft SQL Server,"
+http://web.interbase.com/products/doc_info_f.html.
+</a>
+<p>
+[7] <a name="Oracle"> Oracle, "Oracle Delivers New Server, Application Suite
+to Power the Web for Mission-Critical Business,"
+http://www.oracle.com.sg/partners/news/newserver.htm,
+May 1998.
+</a>
+<p>
+[8] <a name="Sybase"> Sybase, Sybase UltraLite, http://www.sybase.com/products/ultralite/beta.
+</a>
+<p>
+[9] <a name="TPCC"> Transaction Processing Council, "TPC-C Benchmark Specification,
+Version 3.4," San Jose, CA, August 1998.
+</a>
+<p>
+[10] <a name="TPCD"> Transaction Processing Council, "TPC-D Benchmark Specification,
+Version 2.1," San Jose, CA, April 1999.
+</a>
+</body>
+</html>
+
+
diff --git a/db/docs_src/ref/refs/hash_usenix.ps b/db/docs_src/ref/refs/hash_usenix.ps
new file mode 100644
index 000000000..c88477883
--- /dev/null
+++ b/db/docs_src/ref/refs/hash_usenix.ps
@@ -0,0 +1,12209 @@
+%!PS-Adobe-1.0
+%%Creator: utopia:margo (& Seltzer,608-13E,8072,)
+%%Title: stdin (ditroff)
+%%CreationDate: Tue Dec 11 15:06:45 1990
+%%EndComments
+% @(#)psdit.pro 1.3 4/15/88
+% lib/psdit.pro -- prolog for psdit (ditroff) files
+% Copyright (c) 1984, 1985 Adobe Systems Incorporated. All Rights Reserved.
+% last edit: shore Sat Nov 23 20:28:03 1985
+% RCSID: $Header: psdit.pro,v 2.1 85/11/24 12:19:43 shore Rel $
+
+% Changed by Edward Wang (edward@ucbarpa.berkeley.edu) to handle graphics,
+% 17 Feb, 87.
+
+/$DITroff 140 dict def $DITroff begin
+/fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def
+/xi{0 72 11 mul translate 72 resolution div dup neg scale 0 0 moveto
+ /fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def F
+ /pagesave save def}def
+/PB{save /psv exch def currentpoint translate
+ resolution 72 div dup neg scale 0 0 moveto}def
+/PE{psv restore}def
+/arctoobig 90 def /arctoosmall .05 def
+/m1 matrix def /m2 matrix def /m3 matrix def /oldmat matrix def
+/tan{dup sin exch cos div}def
+/point{resolution 72 div mul}def
+/dround {transform round exch round exch itransform}def
+/xT{/devname exch def}def
+/xr{/mh exch def /my exch def /resolution exch def}def
+/xp{}def
+/xs{docsave restore end}def
+/xt{}def
+/xf{/fontname exch def /slotno exch def fontnames slotno get fontname eq not
+ {fonts slotno fontname findfont put fontnames slotno fontname put}if}def
+/xH{/fontheight exch def F}def
+/xS{/fontslant exch def F}def
+/s{/fontsize exch def /fontheight fontsize def F}def
+/f{/fontnum exch def F}def
+/F{fontheight 0 le{/fontheight fontsize def}if
+ fonts fontnum get fontsize point 0 0 fontheight point neg 0 0 m1 astore
+ fontslant 0 ne{1 0 fontslant tan 1 0 0 m2 astore m3 concatmatrix}if
+ makefont setfont .04 fontsize point mul 0 dround pop setlinewidth}def
+/X{exch currentpoint exch pop moveto show}def
+/N{3 1 roll moveto show}def
+/Y{exch currentpoint pop exch moveto show}def
+/S{show}def
+/ditpush{}def/ditpop{}def
+/AX{3 -1 roll currentpoint exch pop moveto 0 exch ashow}def
+/AN{4 2 roll moveto 0 exch ashow}def
+/AY{3 -1 roll currentpoint pop exch moveto 0 exch ashow}def
+/AS{0 exch ashow}def
+/MX{currentpoint exch pop moveto}def
+/MY{currentpoint pop exch moveto}def
+/MXY{moveto}def
+/cb{pop}def % action on unknown char -- nothing for now
+/n{}def/w{}def
+/p{pop showpage pagesave restore /pagesave save def}def
+/Dt{/Dlinewidth exch def}def 1 Dt
+/Ds{/Ddash exch def}def -1 Ds
+/Di{/Dstipple exch def}def 1 Di
+/Dsetlinewidth{2 Dlinewidth mul setlinewidth}def
+/Dsetdash{Ddash 4 eq{[8 12]}{Ddash 16 eq{[32 36]}
+ {Ddash 20 eq{[32 12 8 12]}{[]}ifelse}ifelse}ifelse 0 setdash}def
+/Dstroke{gsave Dsetlinewidth Dsetdash 1 setlinecap stroke grestore
+ currentpoint newpath moveto}def
+/Dl{rlineto Dstroke}def
+/arcellipse{/diamv exch def /diamh exch def oldmat currentmatrix pop
+ currentpoint translate 1 diamv diamh div scale /rad diamh 2 div def
+ currentpoint exch rad add exch rad -180 180 arc oldmat setmatrix}def
+/Dc{dup arcellipse Dstroke}def
+/De{arcellipse Dstroke}def
+/Da{/endv exch def /endh exch def /centerv exch def /centerh exch def
+ /cradius centerv centerv mul centerh centerh mul add sqrt def
+ /eradius endv endv mul endh endh mul add sqrt def
+ /endang endv endh atan def
+ /startang centerv neg centerh neg atan def
+ /sweep startang endang sub dup 0 lt{360 add}if def
+ sweep arctoobig gt
+ {/midang startang sweep 2 div sub def /midrad cradius eradius add 2 div def
+ /midh midang cos midrad mul def /midv midang sin midrad mul def
+ midh neg midv neg endh endv centerh centerv midh midv Da
+ Da}
+ {sweep arctoosmall ge
+ {/controldelt 1 sweep 2 div cos sub 3 sweep 2 div sin mul div 4 mul def
+ centerv neg controldelt mul centerh controldelt mul
+ endv neg controldelt mul centerh add endh add
+ endh controldelt mul centerv add endv add
+ centerh endh add centerv endv add rcurveto Dstroke}
+ {centerh endh add centerv endv add rlineto Dstroke}
+ ifelse}
+ ifelse}def
+/Dpatterns[
+[%cf[widthbits]
+[8<0000000000000010>]
+[8<0411040040114000>]
+[8<0204081020408001>]
+[8<0000103810000000>]
+[8<6699996666999966>]
+[8<0000800100001008>]
+[8<81c36666c3810000>]
+[8<0f0e0c0800000000>]
+[8<0000000000000010>]
+[8<0411040040114000>]
+[8<0204081020408001>]
+[8<0000001038100000>]
+[8<6699996666999966>]
+[8<0000800100001008>]
+[8<81c36666c3810000>]
+[8<0f0e0c0800000000>]
+[8<0042660000246600>]
+[8<0000990000990000>]
+[8<0804020180402010>]
+[8<2418814242811824>]
+[8<6699996666999966>]
+[8<8000000008000000>]
+[8<00001c3e363e1c00>]
+[8<0000000000000000>]
+[32<00000040000000c00000004000000040000000e0000000000000000000000000>]
+[32<00000000000060000000900000002000000040000000f0000000000000000000>]
+[32<000000000000000000e0000000100000006000000010000000e0000000000000>]
+[32<00000000000000002000000060000000a0000000f00000002000000000000000>]
+[32<0000000e0000000000000000000000000000000f000000080000000e00000001>]
+[32<0000090000000600000000000000000000000000000007000000080000000e00>]
+[32<00010000000200000004000000040000000000000000000000000000000f0000>]
+[32<0900000006000000090000000600000000000000000000000000000006000000>]]
+[%ug
+[8<0000020000000000>]
+[8<0000020000002000>]
+[8<0004020000002000>]
+[8<0004020000402000>]
+[8<0004060000402000>]
+[8<0004060000406000>]
+[8<0006060000406000>]
+[8<0006060000606000>]
+[8<00060e0000606000>]
+[8<00060e000060e000>]
+[8<00070e000060e000>]
+[8<00070e000070e000>]
+[8<00070e020070e000>]
+[8<00070e020070e020>]
+[8<04070e020070e020>]
+[8<04070e024070e020>]
+[8<04070e064070e020>]
+[8<04070e064070e060>]
+[8<06070e064070e060>]
+[8<06070e066070e060>]
+[8<06070f066070e060>]
+[8<06070f066070f060>]
+[8<060f0f066070f060>]
+[8<060f0f0660f0f060>]
+[8<060f0f0760f0f060>]
+[8<060f0f0760f0f070>]
+[8<0e0f0f0760f0f070>]
+[8<0e0f0f07e0f0f070>]
+[8<0e0f0f0fe0f0f070>]
+[8<0e0f0f0fe0f0f0f0>]
+[8<0f0f0f0fe0f0f0f0>]
+[8<0f0f0f0ff0f0f0f0>]
+[8<1f0f0f0ff0f0f0f0>]
+[8<1f0f0f0ff1f0f0f0>]
+[8<1f0f0f8ff1f0f0f0>]
+[8<1f0f0f8ff1f0f0f8>]
+[8<9f0f0f8ff1f0f0f8>]
+[8<9f0f0f8ff9f0f0f8>]
+[8<9f0f0f9ff9f0f0f8>]
+[8<9f0f0f9ff9f0f0f9>]
+[8<9f8f0f9ff9f0f0f9>]
+[8<9f8f0f9ff9f8f0f9>]
+[8<9f8f1f9ff9f8f0f9>]
+[8<9f8f1f9ff9f8f1f9>]
+[8<bf8f1f9ff9f8f1f9>]
+[8<bf8f1f9ffbf8f1f9>]
+[8<bf8f1fdffbf8f1f9>]
+[8<bf8f1fdffbf8f1fd>]
+[8<ff8f1fdffbf8f1fd>]
+[8<ff8f1fdffff8f1fd>]
+[8<ff8f1ffffff8f1fd>]
+[8<ff8f1ffffff8f1ff>]
+[8<ff9f1ffffff8f1ff>]
+[8<ff9f1ffffff9f1ff>]
+[8<ff9f9ffffff9f1ff>]
+[8<ff9f9ffffff9f9ff>]
+[8<ffbf9ffffff9f9ff>]
+[8<ffbf9ffffffbf9ff>]
+[8<ffbfdffffffbf9ff>]
+[8<ffbfdffffffbfdff>]
+[8<ffffdffffffbfdff>]
+[8<ffffdffffffffdff>]
+[8<fffffffffffffdff>]
+[8<ffffffffffffffff>]]
+[%mg
+[8<8000000000000000>]
+[8<0822080080228000>]
+[8<0204081020408001>]
+[8<40e0400000000000>]
+[8<66999966>]
+[8<8001000010080000>]
+[8<81c36666c3810000>]
+[8<f0e0c08000000000>]
+[16<07c00f801f003e007c00f800f001e003c007800f001f003e007c00f801f003e0>]
+[16<1f000f8007c003e001f000f8007c003e001f800fc007e003f001f8007c003e00>]
+[8<c3c300000000c3c3>]
+[16<0040008001000200040008001000200040008000000100020004000800100020>]
+[16<0040002000100008000400020001800040002000100008000400020001000080>]
+[16<1fc03fe07df0f8f8f07de03fc01f800fc01fe03ff07df8f87df03fe01fc00f80>]
+[8<80>]
+[8<8040201000000000>]
+[8<84cc000048cc0000>]
+[8<9900009900000000>]
+[8<08040201804020100800020180002010>]
+[8<2418814242811824>]
+[8<66999966>]
+[8<8000000008000000>]
+[8<70f8d8f870000000>]
+[8<0814224180402010>]
+[8<aa00440a11a04400>]
+[8<018245aa45820100>]
+[8<221c224180808041>]
+[8<88000000>]
+[8<0855800080550800>]
+[8<2844004482440044>]
+[8<0810204080412214>]
+[8<00>]]]def
+/Dfill{
+ transform /maxy exch def /maxx exch def
+ transform /miny exch def /minx exch def
+ minx maxx gt{/minx maxx /maxx minx def def}if
+ miny maxy gt{/miny maxy /maxy miny def def}if
+ Dpatterns Dstipple 1 sub get exch 1 sub get
+ aload pop /stip exch def /stipw exch def /stiph 128 def
+ /imatrix[stipw 0 0 stiph 0 0]def
+ /tmatrix[stipw 0 0 stiph 0 0]def
+ /minx minx cvi stiph idiv stiph mul def
+ /miny miny cvi stipw idiv stipw mul def
+ gsave eoclip 0 setgray
+ miny stiph maxy{
+ tmatrix exch 5 exch put
+ minx stipw maxx{
+ tmatrix exch 4 exch put tmatrix setmatrix
+ stipw stiph true imatrix {stip} imagemask
+ }for
+ }for
+ grestore
+}def
+/Dp{Dfill Dstroke}def
+/DP{Dfill currentpoint newpath moveto}def
+end
+
+/ditstart{$DITroff begin
+ /nfonts 60 def % NFONTS makedev/ditroff dependent!
+ /fonts[nfonts{0}repeat]def
+ /fontnames[nfonts{()}repeat]def
+/docsave save def
+}def
+
+% character outcalls
+/oc{
+ /pswid exch def /cc exch def /name exch def
+ /ditwid pswid fontsize mul resolution mul 72000 div def
+ /ditsiz fontsize resolution mul 72 div def
+ ocprocs name known{ocprocs name get exec}{name cb}ifelse
+}def
+/fractm [.65 0 0 .6 0 0] def
+/fraction{
+ /fden exch def /fnum exch def gsave /cf currentfont def
+ cf fractm makefont setfont 0 .3 dm 2 copy neg rmoveto
+ fnum show rmoveto currentfont cf setfont(\244)show setfont fden show
+ grestore ditwid 0 rmoveto
+}def
+/oce{grestore ditwid 0 rmoveto}def
+/dm{ditsiz mul}def
+/ocprocs 50 dict def ocprocs begin
+(14){(1)(4)fraction}def
+(12){(1)(2)fraction}def
+(34){(3)(4)fraction}def
+(13){(1)(3)fraction}def
+(23){(2)(3)fraction}def
+(18){(1)(8)fraction}def
+(38){(3)(8)fraction}def
+(58){(5)(8)fraction}def
+(78){(7)(8)fraction}def
+(sr){gsave 0 .06 dm rmoveto(\326)show oce}def
+(is){gsave 0 .15 dm rmoveto(\362)show oce}def
+(->){gsave 0 .02 dm rmoveto(\256)show oce}def
+(<-){gsave 0 .02 dm rmoveto(\254)show oce}def
+(==){gsave 0 .05 dm rmoveto(\272)show oce}def
+(uc){gsave currentpoint 400 .009 dm mul add translate
+ 8 -8 scale ucseal oce}def
+end
+
+% an attempt at a PostScript FONT to implement ditroff special chars
+% this will enable us to
+% cache the little buggers
+% generate faster, more compact PS out of psdit
+% confuse everyone (including myself)!
+50 dict dup begin
+/FontType 3 def
+/FontName /DIThacks def
+/FontMatrix [.001 0 0 .001 0 0] def
+/FontBBox [-260 -260 900 900] def% a lie but ...
+/Encoding 256 array def
+0 1 255{Encoding exch /.notdef put}for
+Encoding
+ dup 8#040/space put %space
+ dup 8#110/rc put %right ceil
+ dup 8#111/lt put %left top curl
+ dup 8#112/bv put %bold vert
+ dup 8#113/lk put %left mid curl
+ dup 8#114/lb put %left bot curl
+ dup 8#115/rt put %right top curl
+ dup 8#116/rk put %right mid curl
+ dup 8#117/rb put %right bot curl
+ dup 8#120/rf put %right floor
+ dup 8#121/lf put %left floor
+ dup 8#122/lc put %left ceil
+ dup 8#140/sq put %square
+ dup 8#141/bx put %box
+ dup 8#142/ci put %circle
+ dup 8#143/br put %box rule
+ dup 8#144/rn put %root extender
+ dup 8#145/vr put %vertical rule
+ dup 8#146/ob put %outline bullet
+ dup 8#147/bu put %bullet
+ dup 8#150/ru put %rule
+ dup 8#151/ul put %underline
+ pop
+/DITfd 100 dict def
+/BuildChar{0 begin
+ /cc exch def /fd exch def
+ /charname fd /Encoding get cc get def
+ /charwid fd /Metrics get charname get def
+ /charproc fd /CharProcs get charname get def
+ charwid 0 fd /FontBBox get aload pop setcachedevice
+ 2 setlinejoin 40 setlinewidth
+ newpath 0 0 moveto gsave charproc grestore
+ end}def
+/BuildChar load 0 DITfd put
+/CharProcs 50 dict def
+CharProcs begin
+/space{}def
+/.notdef{}def
+/ru{500 0 rls}def
+/rn{0 840 moveto 500 0 rls}def
+/vr{0 800 moveto 0 -770 rls}def
+/bv{0 800 moveto 0 -1000 rls}def
+/br{0 840 moveto 0 -1000 rls}def
+/ul{0 -140 moveto 500 0 rls}def
+/ob{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath stroke}def
+/bu{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath fill}def
+/sq{80 0 rmoveto currentpoint dround newpath moveto
+ 640 0 rlineto 0 640 rlineto -640 0 rlineto closepath stroke}def
+/bx{80 0 rmoveto currentpoint dround newpath moveto
+ 640 0 rlineto 0 640 rlineto -640 0 rlineto closepath fill}def
+/ci{500 360 rmoveto currentpoint newpath 333 0 360 arc
+ 50 setlinewidth stroke}def
+
+/lt{0 -200 moveto 0 550 rlineto currx 800 2cx s4 add exch s4 a4p stroke}def
+/lb{0 800 moveto 0 -550 rlineto currx -200 2cx s4 add exch s4 a4p stroke}def
+/rt{0 -200 moveto 0 550 rlineto currx 800 2cx s4 sub exch s4 a4p stroke}def
+/rb{0 800 moveto 0 -500 rlineto currx -200 2cx s4 sub exch s4 a4p stroke}def
+/lk{0 800 moveto 0 300 -300 300 s4 arcto pop pop 1000 sub
+ 0 300 4 2 roll s4 a4p 0 -200 lineto stroke}def
+/rk{0 800 moveto 0 300 s2 300 s4 arcto pop pop 1000 sub
+ 0 300 4 2 roll s4 a4p 0 -200 lineto stroke}def
+/lf{0 800 moveto 0 -1000 rlineto s4 0 rls}def
+/rf{0 800 moveto 0 -1000 rlineto s4 neg 0 rls}def
+/lc{0 -200 moveto 0 1000 rlineto s4 0 rls}def
+/rc{0 -200 moveto 0 1000 rlineto s4 neg 0 rls}def
+end
+
+/Metrics 50 dict def Metrics begin
+/.notdef 0 def
+/space 500 def
+/ru 500 def
+/br 0 def
+/lt 416 def
+/lb 416 def
+/rt 416 def
+/rb 416 def
+/lk 416 def
+/rk 416 def
+/rc 416 def
+/lc 416 def
+/rf 416 def
+/lf 416 def
+/bv 416 def
+/ob 350 def
+/bu 350 def
+/ci 750 def
+/bx 750 def
+/sq 750 def
+/rn 500 def
+/ul 500 def
+/vr 0 def
+end
+
+DITfd begin
+/s2 500 def /s4 250 def /s3 333 def
+/a4p{arcto pop pop pop pop}def
+/2cx{2 copy exch}def
+/rls{rlineto stroke}def
+/currx{currentpoint pop}def
+/dround{transform round exch round exch itransform} def
+end
+end
+/DIThacks exch definefont pop
+ditstart
+(psc)xT
+576 1 1 xr
+1(Times-Roman)xf 1 f
+2(Times-Italic)xf 2 f
+3(Times-Bold)xf 3 f
+4(Times-BoldItalic)xf 4 f
+5(Helvetica)xf 5 f
+6(Helvetica-Bold)xf 6 f
+7(Courier)xf 7 f
+8(Courier-Bold)xf 8 f
+9(Symbol)xf 9 f
+10(DIThacks)xf 10 f
+10 s
+1 f
+xi
+%%EndProlog
+
+%%Page: 1 1
+10 s 10 xH 0 xS 1 f
+3 f
+22 s
+1249 626(A)N
+1420(N)X
+1547(ew)X
+1796(H)X
+1933(ashing)X
+2467(P)X
+2574(ackage)X
+3136(for)X
+3405(U)X
+3532(N)X
+3659(IX)X
+2 f
+20 s
+3855 562(1)N
+1 f
+12 s
+1607 779(Margo)N
+1887(Seltzer)X
+9 f
+2179(-)X
+1 f
+2256(University)X
+2686(of)X
+2790(California,)X
+3229(Berkeley)X
+2015 875(Ozan)N
+2242(Yigit)X
+9 f
+2464(-)X
+1 f
+2541(York)X
+2762(University)X
+3 f
+2331 1086(ABSTRACT)N
+1 f
+10 s
+1152 1222(UNIX)N
+1385(support)X
+1657(of)X
+1756(disk)X
+1921(oriented)X
+2216(hashing)X
+2497(was)X
+2654(originally)X
+2997(provided)X
+3314(by)X
+2 f
+3426(dbm)X
+1 f
+3595([ATT79])X
+3916(and)X
+1152 1310(subsequently)N
+1595(improved)X
+1927(upon)X
+2112(in)X
+2 f
+2199(ndbm)X
+1 f
+2402([BSD86].)X
+2735(In)X
+2826(AT&T)X
+3068(System)X
+3327(V,)X
+3429(in-memory)X
+3809(hashed)X
+1152 1398(storage)N
+1420(and)X
+1572(access)X
+1814(support)X
+2090(was)X
+2251(added)X
+2479(in)X
+2577(the)X
+2 f
+2711(hsearch)X
+1 f
+3000(library)X
+3249(routines)X
+3542([ATT85].)X
+3907(The)X
+1152 1486(result)N
+1367(is)X
+1457(a)X
+1530(system)X
+1789(with)X
+1968(two)X
+2125(incompatible)X
+2580(hashing)X
+2865(schemes,)X
+3193(each)X
+3377(with)X
+3555(its)X
+3666(own)X
+3840(set)X
+3965(of)X
+1152 1574(shortcomings.)N
+1152 1688(This)N
+1316(paper)X
+1517(presents)X
+1802(the)X
+1922(design)X
+2152(and)X
+2289(performance)X
+2717(characteristics)X
+3198(of)X
+3286(a)X
+3343(new)X
+3498(hashing)X
+3768(package)X
+1152 1776(providing)N
+1483(a)X
+1539(superset)X
+1822(of)X
+1909(the)X
+2027(functionality)X
+2456(provided)X
+2761(by)X
+2 f
+2861(dbm)X
+1 f
+3019(and)X
+2 f
+3155(hsearch)X
+1 f
+3409(.)X
+3469(The)X
+3614(new)X
+3768(package)X
+1152 1864(uses)N
+1322(linear)X
+1537(hashing)X
+1818(to)X
+1912(provide)X
+2189(ef\256cient)X
+2484(support)X
+2755(of)X
+2853(both)X
+3026(memory)X
+3324(based)X
+3538(and)X
+3685(disk)X
+3849(based)X
+1152 1952(hash)N
+1319(tables)X
+1526(with)X
+1688(performance)X
+2115(superior)X
+2398(to)X
+2480(both)X
+2 f
+2642(dbm)X
+1 f
+2800(and)X
+2 f
+2936(hsearch)X
+1 f
+3210(under)X
+3413(most)X
+3588(conditions.)X
+3 f
+1380 2128(Introduction)N
+1 f
+892 2260(Current)N
+1196(UNIX)X
+1456(systems)X
+1768(offer)X
+1984(two)X
+2163(forms)X
+2409(of)X
+720 2348(hashed)N
+973(data)X
+1137(access.)X
+2 f
+1413(Dbm)X
+1 f
+1599(and)X
+1745(its)X
+1850(derivatives)X
+2231(provide)X
+720 2436(keyed)N
+939(access)X
+1171(to)X
+1259(disk)X
+1418(resident)X
+1698(data)X
+1858(while)X
+2 f
+2062(hsearch)X
+1 f
+2342(pro-)X
+720 2524(vides)N
+929(access)X
+1175(for)X
+1309(memory)X
+1616(resident)X
+1910(data.)X
+2124(These)X
+2356(two)X
+720 2612(access)N
+979(methods)X
+1302(are)X
+1453(incompatible)X
+1923(in)X
+2037(that)X
+2209(memory)X
+720 2700(resident)N
+1011(hash)X
+1195(tables)X
+1419(may)X
+1593(not)X
+1731(be)X
+1843(stored)X
+2075(on)X
+2191(disk)X
+2360(and)X
+720 2788(disk)N
+884(resident)X
+1169(tables)X
+1387(cannot)X
+1632(be)X
+1739(read)X
+1909(into)X
+2063(memory)X
+2360(and)X
+720 2876(accessed)N
+1022(using)X
+1215(the)X
+1333(in-memory)X
+1709(routines.)X
+2 f
+892 2990(Dbm)N
+1 f
+1091(has)X
+1241(several)X
+1512(shortcomings.)X
+2026(Since)X
+2247(data)X
+2423(is)X
+720 3078(assumed)N
+1032(to)X
+1130(be)X
+1242(disk)X
+1411(resident,)X
+1721(each)X
+1905(access)X
+2146(requires)X
+2440(a)X
+720 3166(system)N
+963(call,)X
+1120(and)X
+1257(almost)X
+1491(certainly,)X
+1813(a)X
+1869(disk)X
+2022(operation.)X
+2365(For)X
+720 3254(extremely)N
+1072(large)X
+1264(databases,)X
+1623(where)X
+1851(caching)X
+2131(is)X
+2214(unlikely)X
+720 3342(to)N
+810(be)X
+914(effective,)X
+1244(this)X
+1386(is)X
+1466(acceptable,)X
+1853(however,)X
+2177(when)X
+2378(the)X
+720 3430(database)N
+1022(is)X
+1100(small)X
+1298(\(i.e.)X
+1447(the)X
+1569(password)X
+1896(\256le\),)X
+2069(performance)X
+720 3518(improvements)N
+1204(can)X
+1342(be)X
+1443(obtained)X
+1744(through)X
+2018(caching)X
+2293(pages)X
+720 3606(of)N
+818(the)X
+947(database)X
+1255(in)X
+1348(memory.)X
+1685(In)X
+1782(addition,)X
+2 f
+2094(dbm)X
+1 f
+2262(cannot)X
+720 3694(store)N
+902(data)X
+1062(items)X
+1261(whose)X
+1492(total)X
+1660(key)X
+1802(and)X
+1943(data)X
+2102(size)X
+2252(exceed)X
+720 3782(the)N
+850(page)X
+1034(size)X
+1191(of)X
+1290(the)X
+1420(hash)X
+1599(table.)X
+1827(Similarly,)X
+2176(if)X
+2257(two)X
+2409(or)X
+720 3870(more)N
+907(keys)X
+1076(produce)X
+1357(the)X
+1477(same)X
+1664(hash)X
+1833(value)X
+2029(and)X
+2166(their)X
+2334(total)X
+720 3958(size)N
+876(exceeds)X
+1162(the)X
+1291(page)X
+1474(size,)X
+1650(the)X
+1779(table)X
+1966(cannot)X
+2210(store)X
+2396(all)X
+720 4046(the)N
+838(colliding)X
+1142(keys.)X
+892 4160(The)N
+1050(in-memory)X
+2 f
+1439(hsearch)X
+1 f
+1725(routines)X
+2015(have)X
+2199(different)X
+720 4248(shortcomings.)N
+1219(First,)X
+1413(the)X
+1539(notion)X
+1771(of)X
+1865(a)X
+1928(single)X
+2146(hash)X
+2320(table)X
+720 4336(is)N
+807(embedded)X
+1171(in)X
+1266(the)X
+1397(interface,)X
+1732(preventing)X
+2108(an)X
+2217(applica-)X
+720 4424(tion)N
+902(from)X
+1116(accessing)X
+1482(multiple)X
+1806(tables)X
+2050(concurrently.)X
+720 4512(Secondly,)N
+1063(the)X
+1186(routine)X
+1438(to)X
+1525(create)X
+1743(a)X
+1804(hash)X
+1976(table)X
+2157(requires)X
+2440(a)X
+720 4600(parameter)N
+1066(which)X
+1286(declares)X
+1573(the)X
+1694(size)X
+1842(of)X
+1932(the)X
+2053(hash)X
+2223(table.)X
+2422(If)X
+720 4688(this)N
+856(size)X
+1001(is)X
+1074(set)X
+1183(too)X
+1305(low,)X
+1465(performance)X
+1892(degradation)X
+2291(or)X
+2378(the)X
+720 4776(inability)N
+1008(to)X
+1092(add)X
+1230(items)X
+1425(to)X
+1509(the)X
+1628(table)X
+1805(may)X
+1964(result.)X
+2223(In)X
+2311(addi-)X
+720 4864(tion,)N
+2 f
+910(hsearch)X
+1 f
+1210(requires)X
+1515(that)X
+1681(the)X
+1825(application)X
+2226(allocate)X
+720 4952(memory)N
+1037(for)X
+1181(the)X
+1329(key)X
+1495(and)X
+1661(data)X
+1845(items.)X
+2108(Lastly,)X
+2378(the)X
+2 f
+720 5040(hsearch)N
+1 f
+1013(routines)X
+1310(provide)X
+1594(no)X
+1713(interface)X
+2034(to)X
+2135(store)X
+2329(hash)X
+720 5128(tables)N
+927(on)X
+1027(disk.)X
+16 s
+720 5593 MXY
+864 0 Dl
+2 f
+8 s
+760 5648(1)N
+1 f
+9 s
+5673(UNIX)Y
+990(is)X
+1056(a)X
+1106(registered)X
+1408(trademark)X
+1718(of)X
+1796(AT&T.)X
+10 s
+2878 2128(The)N
+3032(goal)X
+3199(of)X
+3295(our)X
+3431(work)X
+3625(was)X
+3779(to)X
+3870(design)X
+4108(and)X
+4253(imple-)X
+2706 2216(ment)N
+2900(a)X
+2970(new)X
+3138(package)X
+3436(that)X
+3590(provides)X
+3899(a)X
+3968(superset)X
+4264(of)X
+4364(the)X
+2706 2304(functionality)N
+3144(of)X
+3240(both)X
+2 f
+3411(dbm)X
+1 f
+3578(and)X
+2 f
+3723(hsearch)X
+1 f
+3977(.)X
+4045(The)X
+4198(package)X
+2706 2392(had)N
+2871(to)X
+2982(overcome)X
+3348(the)X
+3495(interface)X
+3826(shortcomings)X
+4306(cited)X
+2706 2480(above)N
+2930(and)X
+3078(its)X
+3185(implementation)X
+3719(had)X
+3867(to)X
+3961(provide)X
+4238(perfor-)X
+2706 2568(mance)N
+2942(equal)X
+3142(or)X
+3235(superior)X
+3524(to)X
+3612(that)X
+3758(of)X
+3851(the)X
+3975(existing)X
+4253(imple-)X
+2706 2656(mentations.)N
+3152(In)X
+3274(order)X
+3498(to)X
+3614(provide)X
+3913(a)X
+4003(compact)X
+4329(disk)X
+2706 2744(representation,)N
+3224(graceful)X
+3531(table)X
+3729(growth,)X
+4018(and)X
+4176(expected)X
+2706 2832(constant)N
+3033(time)X
+3234(performance,)X
+3720(we)X
+3873(selected)X
+4191(Litwin's)X
+2706 2920(linear)N
+2923(hashing)X
+3206(algorithm)X
+3551([LAR88,)X
+3872(LIT80].)X
+4178(We)X
+4324(then)X
+2706 3008(enhanced)N
+3037(the)X
+3161(algorithm)X
+3498(to)X
+3586(handle)X
+3826(page)X
+4004(over\257ows)X
+4346(and)X
+2706 3096(large)N
+2900(key)X
+3049(handling)X
+3362(with)X
+3537(a)X
+3606(single)X
+3830(mechanism,)X
+4248(named)X
+2706 3184(buddy-in-waiting.)N
+3 f
+2975 3338(Existing)N
+3274(UNIX)X
+3499(Hashing)X
+3802(Techniques)X
+1 f
+2878 3470(Over)N
+3076(the)X
+3210(last)X
+3357(decade,)X
+3637(several)X
+3901(dynamic)X
+4213(hashing)X
+2706 3558(schemes)N
+3000(have)X
+3174(been)X
+3348(developed)X
+3700(for)X
+3816(the)X
+3936(UNIX)X
+4159(timeshar-)X
+2706 3646(ing)N
+2856(system,)X
+3146(starting)X
+3433(with)X
+3622(the)X
+3767(inclusion)X
+4107(of)X
+2 f
+4221(dbm)X
+1 f
+4359(,)X
+4426(a)X
+2706 3734(minimal)N
+3008(database)X
+3321(library)X
+3571(written)X
+3834(by)X
+3950(Ken)X
+4120(Thompson)X
+2706 3822([THOM90],)N
+3141(in)X
+3248(the)X
+3391(Seventh)X
+3694(Edition)X
+3974(UNIX)X
+4220(system.)X
+2706 3910(Since)N
+2916(then,)X
+3106(an)X
+3214(extended)X
+3536(version)X
+3804(of)X
+3903(the)X
+4032(same)X
+4228(library,)X
+2 f
+2706 3998(ndbm)N
+1 f
+2884(,)X
+2933(and)X
+3078(a)X
+3142(public-domain)X
+3637(clone)X
+3839(of)X
+3934(the)X
+4060(latter,)X
+2 f
+4273(sdbm)X
+1 f
+4442(,)X
+2706 4086(have)N
+2902(been)X
+3098(developed.)X
+3491(Another)X
+3797 0.1645(interface-compatible)AX
+2706 4174(library)N
+2 f
+2950(gdbm)X
+1 f
+3128(,)X
+3178(was)X
+3333(recently)X
+3622(made)X
+3826(available)X
+4145(as)X
+4241(part)X
+4395(of)X
+2706 4262(the)N
+2829(Free)X
+2997(Software)X
+3312(Foundation's)X
+3759(\(FSF\))X
+3970(software)X
+4271(distri-)X
+2706 4350(bution.)N
+2878 4464(All)N
+3017(of)X
+3121(these)X
+3323(implementations)X
+3893(are)X
+4029(based)X
+4248(on)X
+4364(the)X
+2706 4552(idea)N
+2871(of)X
+2969(revealing)X
+3299(just)X
+3445(enough)X
+3711(bits)X
+3856(of)X
+3953(a)X
+4019(hash)X
+4196(value)X
+4400(to)X
+2706 4640(locate)N
+2920(a)X
+2978(page)X
+3151(in)X
+3234(a)X
+3291(single)X
+3503(access.)X
+3770(While)X
+2 f
+3987(dbm/ndbm)X
+1 f
+4346(and)X
+2 f
+2706 4728(sdbm)N
+1 f
+2908(map)X
+3079(the)X
+3210(hash)X
+3390(value)X
+3597(directly)X
+3874(to)X
+3968(a)X
+4036(disk)X
+4201(address,)X
+2 f
+2706 4816(gdbm)N
+1 f
+2921(uses)X
+3096(the)X
+3231(hash)X
+3414(value)X
+3624(to)X
+3722(index)X
+3936(into)X
+4096(a)X
+2 f
+4168(directory)X
+1 f
+2706 4904([ENB88])N
+3020(containing)X
+3378(disk)X
+3531(addresses.)X
+2878 5018(The)N
+2 f
+3033(hsearch)X
+1 f
+3317(routines)X
+3605(in)X
+3697(System)X
+3962(V)X
+4049(are)X
+4177(designed)X
+2706 5106(to)N
+2804(provide)X
+3085(memory-resident)X
+3669(hash)X
+3852(tables.)X
+4115(Since)X
+4328(data)X
+2706 5194(access)N
+2948(does)X
+3131(not)X
+3269(require)X
+3533(disk)X
+3702(access,)X
+3964(simple)X
+4213(hashing)X
+2706 5282(schemes)N
+3010(which)X
+3238(may)X
+3408(require)X
+3667(multiple)X
+3964(probes)X
+4209(into)X
+4364(the)X
+2706 5370(table)N
+2889(are)X
+3015(used.)X
+3209(A)X
+3294(more)X
+3486(interesting)X
+3851(version)X
+4114(of)X
+2 f
+4208(hsearch)X
+1 f
+2706 5458(is)N
+2784(a)X
+2845(public)X
+3070(domain)X
+3335(library,)X
+2 f
+3594(dynahash)X
+1 f
+3901(,)X
+3945(that)X
+4089(implements)X
+2706 5546(Larson's)N
+3036(in-memory)X
+3440(adaptation)X
+3822([LAR88])X
+4164(of)X
+4279(linear)X
+2706 5634(hashing)N
+2975([LIT80].)X
+3 f
+720 5960(USENIX)N
+9 f
+1042(-)X
+3 f
+1106(Winter)X
+1371('91)X
+9 f
+1498(-)X
+3 f
+1562(Dallas,)X
+1815(TX)X
+1 f
+4424(1)X
+
+2 p
+%%Page: 2 2
+10 s 10 xH 0 xS 1 f
+3 f
+432 258(A)N
+510(New)X
+682(Hashing)X
+985(Package)X
+1290(for)X
+1413(UNIX)X
+3663(Seltzer)X
+3920(&)X
+4007(Yigit)X
+2 f
+1074 538(dbm)N
+1 f
+1232(and)X
+2 f
+1368(ndbm)X
+1 f
+604 670(The)N
+2 f
+760(dbm)X
+1 f
+928(and)X
+2 f
+1074(ndbm)X
+1 f
+1282(library)X
+1526(implementations)X
+2089(are)X
+432 758(based)N
+667(on)X
+799(the)X
+949(same)X
+1166(algorithm)X
+1529(by)X
+1661(Ken)X
+1846(Thompson)X
+432 846([THOM90,)N
+824(TOR88,)X
+1113(WAL84],)X
+1452(but)X
+1582(differ)X
+1789(in)X
+1879(their)X
+2054(pro-)X
+432 934(grammatic)N
+801(interfaces.)X
+1160(The)X
+1311(latter)X
+1502(is)X
+1581(a)X
+1643(modi\256ed)X
+1952(version)X
+432 1022(of)N
+533(the)X
+665(former)X
+918(which)X
+1148(adds)X
+1328(support)X
+1601(for)X
+1728(multiple)X
+2027(data-)X
+432 1110(bases)N
+634(to)X
+724(be)X
+828(open)X
+1011(concurrently.)X
+1484(The)X
+1636(discussion)X
+1996(of)X
+2090(the)X
+432 1198(algorithm)N
+774(that)X
+925(follows)X
+1196(is)X
+1280(applicable)X
+1640(to)X
+1732(both)X
+2 f
+1904(dbm)X
+1 f
+2072(and)X
+2 f
+432 1286(ndbm)N
+1 f
+610(.)X
+604 1400(The)N
+760(basic)X
+956(structure)X
+1268(of)X
+2 f
+1366(dbm)X
+1 f
+1535(calls)X
+1712(for)X
+1836(\256xed-sized)X
+432 1488(disk)N
+612(blocks)X
+868(\(buckets\))X
+1214(and)X
+1377(an)X
+2 f
+1499(access)X
+1 f
+1755(function)X
+2068(that)X
+432 1576(maps)N
+623(a)X
+681(key)X
+819(to)X
+902(a)X
+959(bucket.)X
+1234(The)X
+1380(interface)X
+1683(routines)X
+1962(use)X
+2090(the)X
+2 f
+432 1664(access)N
+1 f
+673(function)X
+970(to)X
+1062(obtain)X
+1292(the)X
+1420(appropriate)X
+1816(bucket)X
+2060(in)X
+2152(a)X
+432 1752(single)N
+643(disk)X
+796(access.)X
+604 1866(Within)N
+869(the)X
+2 f
+1010(access)X
+1 f
+1263(function,)X
+1593(a)X
+1672(bit-randomizing)X
+432 1954(hash)N
+610(function)X
+2 f
+8 s
+877 1929(2)N
+1 f
+10 s
+940 1954(is)N
+1024(used)X
+1202(to)X
+1294(convert)X
+1565(a)X
+1631(key)X
+1777(into)X
+1931(a)X
+1997(32-bit)X
+432 2042(hash)N
+605(value.)X
+825(Out)X
+971(of)X
+1064(these)X
+1254(32)X
+1359(bits,)X
+1519(only)X
+1686(as)X
+1778(many)X
+1981(bits)X
+2121(as)X
+432 2130(necessary)N
+773(are)X
+900(used)X
+1075(to)X
+1165(determine)X
+1514(the)X
+1639(particular)X
+1974(bucket)X
+432 2218(on)N
+533(which)X
+750(a)X
+807(key)X
+944(resides.)X
+1228(An)X
+1347(in-memory)X
+1724(bitmap)X
+1967(is)X
+2041(used)X
+432 2306(to)N
+533(determine)X
+893(how)X
+1070(many)X
+1287(bits)X
+1441(are)X
+1579(required.)X
+1905(Each)X
+2104(bit)X
+432 2394(indicates)N
+746(whether)X
+1033(its)X
+1136(associated)X
+1494(bucket)X
+1736(has)X
+1871(been)X
+2051(split)X
+432 2482(yet)N
+562(\(a)X
+657(0)X
+728(indicating)X
+1079(that)X
+1230(the)X
+1359(bucket)X
+1604(has)X
+1742(not)X
+1875(yet)X
+2004(split\).)X
+432 2570(The)N
+590(use)X
+730(of)X
+830(the)X
+961(hash)X
+1141(function)X
+1441(and)X
+1590(the)X
+1720(bitmap)X
+1974(is)X
+2059(best)X
+432 2658(described)N
+769(by)X
+878(stepping)X
+1177(through)X
+1454(database)X
+1759(creation)X
+2046(with)X
+432 2746(multiple)N
+718(invocations)X
+1107(of)X
+1194(a)X
+2 f
+1250(store)X
+1 f
+1430(operation.)X
+604 2860(Initially,)N
+906(the)X
+1033(hash)X
+1209(table)X
+1394(contains)X
+1690(a)X
+1755(single)X
+1974(bucket)X
+432 2948(\(bucket)N
+711(0\),)X
+836(the)X
+972(bit)X
+1094(map)X
+1270(contains)X
+1575(a)X
+1649(single)X
+1878(bit)X
+2000(\(bit)X
+2148(0)X
+432 3036(corresponding)N
+913(to)X
+997(bucket)X
+1233(0\),)X
+1342(and)X
+1480(0)X
+1542(bits)X
+1699(of)X
+1788(a)X
+1846(hash)X
+2014(value)X
+432 3124(are)N
+560(examined)X
+901(to)X
+992(determine)X
+1342(where)X
+1568(a)X
+1633(key)X
+1778(is)X
+1860(placed)X
+2099(\(in)X
+432 3212(bucket)N
+670(0\).)X
+801(When)X
+1017(bucket)X
+1255(0)X
+1319(is)X
+1396(full,)X
+1551(its)X
+1650(bit)X
+1758(in)X
+1844(the)X
+1966(bitmap)X
+432 3300(\(bit)N
+564(0\))X
+652(is)X
+726(set,)X
+856(and)X
+993(its)X
+1089(contents)X
+1377(are)X
+1497(split)X
+1655(between)X
+1943(buckets)X
+432 3388(0)N
+499(and)X
+641(1,)X
+727(by)X
+833(considering)X
+1233(the)X
+1357(0)X
+2 f
+7 s
+3356(th)Y
+10 s
+1 f
+1480 3388(bit)N
+1590(\(the)X
+1741(lowest)X
+1976(bit)X
+2086(not)X
+432 3476(previously)N
+800(examined\))X
+1169(of)X
+1266(the)X
+1393(hash)X
+1569(value)X
+1772(for)X
+1895(each)X
+2072(key)X
+432 3564(within)N
+668(the)X
+798(bucket.)X
+1064(Given)X
+1292(a)X
+1359(well-designed)X
+1840(hash)X
+2018(func-)X
+432 3652(tion,)N
+613(approximately)X
+1112(half)X
+1273(of)X
+1376(the)X
+1510(keys)X
+1693(will)X
+1853(have)X
+2041(hash)X
+432 3740(values)N
+666(with)X
+837(the)X
+964(0)X
+2 f
+7 s
+3708(th)Y
+10 s
+1 f
+1090 3740(bit)N
+1203(set.)X
+1341(All)X
+1471(such)X
+1646(keys)X
+1821(and)X
+1965(associ-)X
+432 3828(ated)N
+586(data)X
+740(are)X
+859(moved)X
+1097(to)X
+1179(bucket)X
+1413(1,)X
+1493(and)X
+1629(the)X
+1747(rest)X
+1883(remain)X
+2126(in)X
+432 3916(bucket)N
+666(0.)X
+604 4030(After)N
+804(this)X
+949(split,)X
+1135(the)X
+1262(\256le)X
+1393(now)X
+1560(contains)X
+1856(two)X
+2005(buck-)X
+432 4118(ets,)N
+562(and)X
+699(the)X
+818(bitmap)X
+1061(contains)X
+1349(three)X
+1530(bits:)X
+1687(the)X
+1805(0)X
+2 f
+7 s
+4086(th)Y
+10 s
+1 f
+1922 4118(bit)N
+2026(is)X
+2099(set)X
+432 4206(to)N
+525(indicate)X
+810(a)X
+876(bucket)X
+1120(0)X
+1190(split)X
+1357(when)X
+1561(no)X
+1671(bits)X
+1816(of)X
+1913(the)X
+2041(hash)X
+432 4294(value)N
+648(are)X
+789(considered,)X
+1199(and)X
+1357(two)X
+1519(more)X
+1726(unset)X
+1937(bits)X
+2094(for)X
+432 4382(buckets)N
+706(0)X
+775(and)X
+920(1.)X
+1029(The)X
+1183(placement)X
+1542(of)X
+1638(an)X
+1742(incoming)X
+2072(key)X
+432 4470(now)N
+604(requires)X
+897(examination)X
+1327(of)X
+1428(the)X
+1560(0)X
+2 f
+7 s
+4438(th)Y
+10 s
+1 f
+1691 4470(bit)N
+1809(of)X
+1910(the)X
+2041(hash)X
+432 4558(value,)N
+667(and)X
+824(the)X
+963(key)X
+1119(is)X
+1212(placed)X
+1462(either)X
+1685(in)X
+1787(bucket)X
+2041(0)X
+2121(or)X
+432 4646(bucket)N
+674(1.)X
+782(If)X
+864(either)X
+1075(bucket)X
+1317(0)X
+1385(or)X
+1480(bucket)X
+1722(1)X
+1790(\256lls)X
+1937(up,)X
+2064(it)X
+2135(is)X
+432 4734(split)N
+598(as)X
+693(before,)X
+947(its)X
+1050(bit)X
+1162(is)X
+1243(set)X
+1360(in)X
+1450(the)X
+1576(bitmap,)X
+1846(and)X
+1990(a)X
+2054(new)X
+432 4822(set)N
+541(of)X
+628(unset)X
+817(bits)X
+952(are)X
+1071(added)X
+1283(to)X
+1365(the)X
+1483(bitmap.)X
+604 4936(Each)N
+791(time)X
+959(we)X
+1079(consider)X
+1376(a)X
+1437(new)X
+1596(bit)X
+1705(\(bit)X
+1841(n\),)X
+1953(we)X
+2072(add)X
+432 5024(2)N
+2 f
+7 s
+4992(n)Y
+9 f
+509(+)X
+1 f
+540(1)X
+10 s
+595 5024(bits)N
+737(to)X
+826(the)X
+951(bitmap)X
+1199(and)X
+1341(obtain)X
+1567(2)X
+2 f
+7 s
+4992(n)Y
+9 f
+1644(+)X
+1 f
+1675(1)X
+10 s
+1729 5024(more)N
+1920(address-)X
+432 5112(able)N
+595(buckets)X
+869(in)X
+960(the)X
+1087(\256le.)X
+1258(As)X
+1376(a)X
+1441(result,)X
+1668(the)X
+1795(bitmap)X
+2045(con-)X
+432 5200(tains)N
+618(the)X
+751(previous)X
+1062(2)X
+2 f
+7 s
+5168(n)Y
+9 f
+1139(+)X
+1 f
+1170(1)X
+2 f
+10 s
+9 f
+5200(-)Y
+1 f
+1242(1)X
+1317(bits)X
+1467(\(1)X
+2 f
+9 f
+1534(+)X
+1 f
+1578(2)X
+2 f
+9 f
+(+)S
+1 f
+1662(4)X
+2 f
+9 f
+(+)S
+1 f
+1746(...)X
+2 f
+9 f
+(+)S
+1 f
+1850(2)X
+2 f
+7 s
+5168(n)Y
+10 s
+1 f
+1931 5200(\))N
+1992(which)X
+432 5288(trace)N
+649(the)X
+807(entire)X
+2 f
+1050(split)X
+1247(history)X
+1 f
+1529(of)X
+1656(the)X
+1813(addressable)X
+16 s
+432 5433 MXY
+864 0 Dl
+2 f
+8 s
+472 5488(2)N
+1 f
+9 s
+523 5513(This)N
+670(bit-randomizing)X
+1153(property)X
+1416(is)X
+1482(important)X
+1780(to)X
+1854(obtain)X
+2052(radi-)X
+432 5593(cally)N
+599(different)X
+874(hash)X
+1033(values)X
+1244(for)X
+1355(nearly)X
+1562(identical)X
+1836(keys,)X
+2012(which)X
+432 5673(in)N
+506(turn)X
+640(avoids)X
+846(clustering)X
+1148(of)X
+1226(such)X
+1376(keys)X
+1526(in)X
+1600(a)X
+1650(single)X
+1840(bucket.)X
+10 s
+2418 538(buckets.)N
+2590 652(Given)N
+2809(a)X
+2868(key)X
+3007(and)X
+3146(the)X
+3267(bitmap)X
+3512(created)X
+3768(by)X
+3871(this)X
+4009(algo-)X
+2418 740(rithm,)N
+2638(we)X
+2759(\256rst)X
+2910(examine)X
+3209(bit)X
+3320(0)X
+3386(of)X
+3479(the)X
+3603(bitmap)X
+3851(\(the)X
+4002(bit)X
+4112(to)X
+2418 828(consult)N
+2673(when)X
+2871(0)X
+2934(bits)X
+3072(of)X
+3162(the)X
+3283(hash)X
+3453(value)X
+3650(are)X
+3772(being)X
+3973(exam-)X
+2418 916(ined\).)N
+2631(If)X
+2713(it)X
+2785(is)X
+2866(set)X
+2982(\(indicating)X
+3356(that)X
+3503(the)X
+3628(bucket)X
+3869(split\),)X
+4080(we)X
+2418 1004(begin)N
+2617(considering)X
+3012(the)X
+3131(bits)X
+3267(of)X
+3355(the)X
+3473(32-bit)X
+3684(hash)X
+3851(value.)X
+4085(As)X
+2418 1092(bit)N
+2525(n)X
+2587(is)X
+2662(revealed,)X
+2977(a)X
+3035(mask)X
+3226(equal)X
+3422(to)X
+3506(2)X
+2 f
+7 s
+1060(n)Y
+9 f
+3583(+)X
+1 f
+3614(1)X
+2 f
+10 s
+9 f
+1092(-)Y
+1 f
+3686(1)X
+3748(will)X
+3894(yield)X
+4076(the)X
+2418 1180(current)N
+2675(bucket)X
+2918(address.)X
+3228(Adding)X
+3496(2)X
+2 f
+7 s
+1148(n)Y
+9 f
+3573(+)X
+1 f
+3604(1)X
+2 f
+10 s
+9 f
+1180(-)Y
+1 f
+3676(1)X
+3744(to)X
+3834(the)X
+3960(bucket)X
+2418 1268(address)N
+2701(identi\256es)X
+3035(which)X
+3272(bit)X
+3397(in)X
+3500(the)X
+3639(bitmap)X
+3902(must)X
+4098(be)X
+2418 1356(checked.)N
+2743(We)X
+2876(continue)X
+3173(revealing)X
+3493(bits)X
+3628(of)X
+3715(the)X
+3833(hash)X
+4000(value)X
+2418 1444(until)N
+2591(all)X
+2698(set)X
+2814(bits)X
+2955(in)X
+3043(the)X
+3167(bitmap)X
+3415(are)X
+3540(exhausted.)X
+3907(The)X
+4058(fol-)X
+2418 1532(lowing)N
+2682(algorithm,)X
+3055(a)X
+3133(simpli\256cation)X
+3614(of)X
+3723(the)X
+3863(algorithm)X
+2418 1620(due)N
+2565(to)X
+2658(Ken)X
+2823(Thompson)X
+3196([THOM90,)X
+3590(TOR88],)X
+3908(uses)X
+4076(the)X
+2418 1708(hash)N
+2625(value)X
+2839(and)X
+2995(the)X
+3133(bitmap)X
+3395(to)X
+3497(calculate)X
+3823(the)X
+3960(bucket)X
+2418 1796(address)N
+2679(as)X
+2766(discussed)X
+3093(above.)X
+0(Courier)xf 0 f
+1 f
+0 f
+8 s
+2418 2095(hash)N
+2608(=)X
+2684 -0.4038(calchash\(key\);)AX
+2418 2183(mask)N
+2608(=)X
+2684(0;)X
+2418 2271(while)N
+2646 -0.4018(\(isbitset\(\(hash)AX
+3254(&)X
+3330(mask\))X
+3558(+)X
+3634(mask\)\))X
+2706 2359(mask)N
+2896(=)X
+2972(\(mask)X
+3200(<<)X
+3314(1\))X
+3428(+)X
+3504(1;)X
+2418 2447(bucket)N
+2684(=)X
+2760(hash)X
+2950(&)X
+3026(mask;)X
+2 f
+10 s
+3211 2812(sdbm)N
+1 f
+2590 2944(The)N
+2 f
+2738(sdbm)X
+1 f
+2930(library)X
+3167(is)X
+3243(a)X
+3302(public-domain)X
+3791(clone)X
+3987(of)X
+4076(the)X
+2 f
+2418 3032(ndbm)N
+1 f
+2638(library,)X
+2914(developed)X
+3286(by)X
+3408(Ozan)X
+3620(Yigit)X
+3826(to)X
+3929(provide)X
+2 f
+2418 3120(ndbm)N
+1 f
+2596('s)X
+2692(functionality)X
+3139(under)X
+3359(some)X
+3565(versions)X
+3869(of)X
+3973(UNIX)X
+2418 3208(that)N
+2559(exclude)X
+2830(it)X
+2894(for)X
+3008(licensing)X
+3317(reasons)X
+3578([YIG89].)X
+3895(The)X
+4040(pro-)X
+2418 3296(grammer)N
+2735(interface,)X
+3064(and)X
+3207(the)X
+3332(basic)X
+3524(structure)X
+3832(of)X
+2 f
+3926(sdbm)X
+1 f
+4121(is)X
+2418 3384(identical)N
+2733(to)X
+2 f
+2834(ndbm)X
+1 f
+3051(but)X
+3192(internal)X
+3476(details)X
+3723(of)X
+3828(the)X
+2 f
+3964(access)X
+1 f
+2418 3472(function,)N
+2726(such)X
+2894(as)X
+2982(the)X
+3101(calculation)X
+3474(of)X
+3561(the)X
+3679(bucket)X
+3913(address,)X
+2418 3560(and)N
+2563(the)X
+2690(use)X
+2825(of)X
+2920(different)X
+3225(hash)X
+3400(functions)X
+3726(make)X
+3928(the)X
+4054(two)X
+2418 3648(incompatible)N
+2856(at)X
+2934(the)X
+3052(database)X
+3349(level.)X
+2590 3762(The)N
+2 f
+2740(sdbm)X
+1 f
+2934(library)X
+3173(is)X
+3251(based)X
+3458(on)X
+3562(a)X
+3622(simpli\256ed)X
+3965(imple-)X
+2418 3850(mentation)N
+2778(of)X
+2885(Larson's)X
+3206(1978)X
+2 f
+3406(dynamic)X
+3717(hashing)X
+1 f
+4009(algo-)X
+2418 3938(rithm)N
+2616(including)X
+2943(the)X
+2 f
+3066(re\256nements)X
+3461(and)X
+3605(variations)X
+1 f
+3953(of)X
+4044(sec-)X
+2418 4026(tion)N
+2562(5)X
+2622([LAR78].)X
+2956(Larson's)X
+3257(original)X
+3526(algorithm)X
+3857(calls)X
+4024(for)X
+4138(a)X
+2418 4114(forest)N
+2635(of)X
+2736(binary)X
+2975(hash)X
+3156(trees)X
+3341(that)X
+3494(are)X
+3626(accessed)X
+3941(by)X
+4054(two)X
+2418 4202(hash)N
+2586(functions.)X
+2925(The)X
+3071(\256rst)X
+3216(hash)X
+3384(function)X
+3672(selects)X
+3907(a)X
+3964(partic-)X
+2418 4290(ular)N
+2571(tree)X
+2720(within)X
+2952(the)X
+3078(forest.)X
+3309(The)X
+3462(second)X
+3713(hash)X
+3887(function,)X
+2418 4378(which)N
+2659(is)X
+2757(required)X
+3070(to)X
+3177(be)X
+3297(a)X
+3377(boolean)X
+3675(pseudo-random)X
+2418 4466(number)N
+2687(generator)X
+3015(that)X
+3159(is)X
+3236(seeded)X
+3479(by)X
+3583(the)X
+3705(key,)X
+3865(is)X
+3942(used)X
+4112(to)X
+2418 4554(traverse)N
+2733(the)X
+2890(tree)X
+3070(until)X
+3275(internal)X
+3579(\(split\))X
+3829(nodes)X
+4075(are)X
+2418 4642(exhausted)N
+2763(and)X
+2903(an)X
+3003(external)X
+3286(\(non-split\))X
+3648(node)X
+3827(is)X
+3903(reached.)X
+2418 4730(The)N
+2571(bucket)X
+2813(addresses)X
+3149(are)X
+3276(stored)X
+3500(directly)X
+3772(in)X
+3861(the)X
+3986(exter-)X
+2418 4818(nal)N
+2536(nodes.)X
+2590 4932(Larson's)N
+2903(re\256nements)X
+3309(are)X
+3440(based)X
+3655(on)X
+3767(the)X
+3897(observa-)X
+2418 5020(tion)N
+2570(that)X
+2718(the)X
+2844(nodes)X
+3059(can)X
+3199(be)X
+3303(represented)X
+3702(by)X
+3809(a)X
+3872(single)X
+4090(bit)X
+2418 5108(that)N
+2569(is)X
+2653(set)X
+2773(for)X
+2898(internal)X
+3174(nodes)X
+3392(and)X
+3539(not)X
+3672(set)X
+3791(for)X
+3915(external)X
+2418 5196(nodes,)N
+2652(resulting)X
+2959(in)X
+3048(a)X
+3111(radix)X
+3303(search)X
+3536(trie.)X
+3709(Figure)X
+3944(1)X
+4010(illus-)X
+2418 5284(trates)N
+2621(this.)X
+2804(Nodes)X
+3037(A)X
+3123(and)X
+3267(B)X
+3348(are)X
+3475(internal)X
+3748(\(split\))X
+3967(nodes,)X
+2418 5372(thus)N
+2573(having)X
+2813(no)X
+2915(bucket)X
+3151(addresses)X
+3480(associated)X
+3831(with)X
+3994(them.)X
+2418 5460(Instead,)N
+2693(the)X
+2814(external)X
+3096(nodes)X
+3306(\(C,)X
+3429(D,)X
+3530(and)X
+3669(E\))X
+3768(each)X
+3938(need)X
+4112(to)X
+2418 5548(refer)N
+2594(to)X
+2679(a)X
+2738(bucket)X
+2975(address.)X
+3279(These)X
+3494(bucket)X
+3731(addresses)X
+4062(can)X
+2418 5636(be)N
+2529(stored)X
+2760(in)X
+2857(the)X
+2990(trie)X
+3132(itself)X
+3327(where)X
+3559(the)X
+3691(subtries)X
+3974(would)X
+3 f
+432 5960(2)N
+2970(USENIX)X
+9 f
+3292(-)X
+3 f
+3356(Winter)X
+3621('91)X
+9 f
+3748(-)X
+3 f
+3812(Dallas,)X
+4065(TX)X
+
+3 p
+%%Page: 3 3
+0(Courier)xf 0 f
+10 s 10 xH 0 xS 0 f
+3 f
+720 258(Seltzer)N
+977(&)X
+1064(Yigit)X
+3278(A)X
+3356(New)X
+3528(Hashing)X
+3831(Package)X
+4136(for)X
+4259(UNIX)X
+1 f
+720 538(live)N
+862(if)X
+933(they)X
+1092(existed)X
+1340([KNU68].)X
+1709(For)X
+1841(example,)X
+2154(if)X
+2224(nodes)X
+2432(F)X
+720 626(and)N
+858(G)X
+938(were)X
+1117(the)X
+1237(children)X
+1522(of)X
+1610(node)X
+1787(C,)X
+1881(the)X
+2000(bucket)X
+2235(address)X
+720 714(L00)N
+886(could)X
+1101(reside)X
+1330(in)X
+1429(the)X
+1563(bits)X
+1714(that)X
+1870(will)X
+2030(eventually)X
+2400(be)X
+720 802(used)N
+887(to)X
+969(store)X
+1145(nodes)X
+1352(F)X
+1416(and)X
+1552(G)X
+1630(and)X
+1766(all)X
+1866(their)X
+2033(children.)X
+10 f
+720 890 -0.0930(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)AN
+3 f
+1894 2247(L1)N
+784 1925(A)N
+1431(E)X
+1106 2247(D)N
+1428 1281(C)N
+1109 1603(B)N
+1884 1930(L01)N
+1879 1286(L00)N
+1221 1814(1)N
+903 2131(1)N
+1221 1402(0)N
+903 1714(0)N
+1 Dt
+1397 1821 MXY
+-8 -32 Dl
+-5 19 Dl
+-20 6 Dl
+33 7 Dl
+-187 -182 Dl
+1397 1322 MXY
+-33 7 Dl
+20 6 Dl
+5 19 Dl
+8 -32 Dl
+-187 182 Dl
+1069 1639 MXY
+-32 7 Dl
+20 6 Dl
+5 19 Dl
+7 -32 Dl
+-186 182 Dl
+1374 1891 MXY
+185 Dc
+1779 2133 MXY
+0 161 Dl
+322 0 Dl
+0 -161 Dl
+-322 0 Dl
+1811 MY
+0 161 Dl
+322 0 Dl
+0 -161 Dl
+-322 0 Dl
+1166 MY
+0 161 Dl
+322 0 Dl
+0 -161 Dl
+-322 0 Dl
+1052 2213 MXY
+185 Dc
+1569 MY
+185 Dc
+720 1881 MXY
+185 Dc
+1779 2213 MXY
+-28 -17 Dl
+10 17 Dl
+-10 18 Dl
+28 -18 Dl
+-543 0 Dl
+1769 1891 MXY
+-28 -18 Dl
+10 18 Dl
+-10 18 Dl
+28 -18 Dl
+-201 0 Dl
+1364 1247 MXY
+185 Dc
+1769 MX
+-28 -18 Dl
+10 18 Dl
+-10 18 Dl
+28 -18 Dl
+-201 0 Dl
+1064 2143 MXY
+-7 -32 Dl
+-5 19 Dl
+-20 6 Dl
+32 7 Dl
+-181 -181 Dl
+3 Dt
+-1 Ds
+8 s
+720 2482(Figure)N
+925(1:)X
+1 f
+1002(Radix)X
+1179(search)X
+1365(trie)X
+1474(with)X
+1612(internal)X
+1831(nodes)X
+2004(A)X
+2074(and)X
+2189(B,)X
+2271(external)X
+720 2570(nodes)N
+891(C,)X
+972(D,)X
+1056(and)X
+1170(E,)X
+1247(and)X
+1361(bucket)X
+1553(addresses)X
+1819(stored)X
+1997(in)X
+2069(the)X
+2168(unused)X
+2370(por-)X
+720 2658(tion)N
+836(of)X
+905(the)X
+999(trie.)X
+10 s
+10 f
+720 2922 -0.0930(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)AN
+1 f
+892 3124(Further)N
+1153(simpli\256cations)X
+1647(of)X
+1738(the)X
+1860(above)X
+2076([YIG89])X
+2377(are)X
+720 3212(possible.)N
+1038(Using)X
+1265(a)X
+1337(single)X
+1564(radix)X
+1765(trie)X
+1908(to)X
+2006(avoid)X
+2219(the)X
+2352(\256rst)X
+720 3300(hash)N
+904(function,)X
+1227(replacing)X
+1562(the)X
+1696(pseudo-random)X
+2231(number)X
+720 3388(generator)N
+1052(with)X
+1222(a)X
+1286(well)X
+1452(designed,)X
+1785(bit-randomizing)X
+2329(hash)X
+720 3476(function,)N
+1053(and)X
+1215(using)X
+1434(the)X
+1578(portion)X
+1855(of)X
+1967(the)X
+2110(hash)X
+2302(value)X
+720 3564(exposed)N
+1021(during)X
+1268(the)X
+1404(trie)X
+1549(traversal)X
+1864(as)X
+1969(a)X
+2042(direct)X
+2262(bucket)X
+720 3652(address)N
+990(results)X
+1228(in)X
+1319(an)X
+2 f
+1424(access)X
+1 f
+1663(function)X
+1959(that)X
+2108(works)X
+2333(very)X
+720 3740(similar)N
+974(to)X
+1068(Thompson's)X
+1499(algorithm)X
+1841(above.)X
+2084(The)X
+2240(follow-)X
+720 3828(ing)N
+847(algorithm)X
+1183(uses)X
+1346(the)X
+1469(hash)X
+1641(value)X
+1840(to)X
+1927(traverse)X
+2206(a)X
+2266(linear-)X
+720 3916(ized)N
+874(radix)X
+1059(trie)X
+2 f
+8 s
+1166 3891(3)N
+1 f
+10 s
+1218 3916(starting)N
+1478(at)X
+1556(the)X
+1674(0)X
+2 f
+7 s
+3884(th)Y
+10 s
+1 f
+1791 3916(bit.)N
+0 f
+8 s
+720 4215(tbit)N
+910(=)X
+986(0;)X
+1296(/*)X
+1410(radix)X
+1638(trie)X
+1828(index)X
+2056(*/)X
+720 4303(hbit)N
+910(=)X
+986(0;)X
+1296(/*)X
+1410(hash)X
+1600(bit)X
+1752(index)X
+2056(*/)X
+720 4391(mask)N
+910(=)X
+986(0;)X
+720 4479(hash)N
+910(=)X
+986 -0.4038(calchash\(key\);)AX
+720 4655(for)N
+872(\(mask)X
+1100(=)X
+1176(0;)X
+910 4743 -0.4018(isbitset\(tbit\);)AN
+910 4831(mask)N
+1100(=)X
+1176(\(mask)X
+1404(<<)X
+1518(1\))X
+1632(+)X
+1708(1\))X
+1008 4919(if)N
+1122(\(hash)X
+1350(&)X
+1426(\(1)X
+1540(<<)X
+1654 -0.4219(hbit++\)\)\))AX
+1160 5007(/*)N
+1274(right)X
+1502(son)X
+1692(*/)X
+1160 5095(tbit)N
+1350(=)X
+1426(2)X
+1502(*)X
+1578(tbit)X
+1768(+)X
+1844(2;)X
+1008 5183(else)N
+1 f
+16 s
+720 5353 MXY
+864 0 Dl
+2 f
+8 s
+760 5408(3)N
+1 f
+9 s
+818 5433(A)N
+896(linearized)X
+1206(radix)X
+1380(trie)X
+1502(is)X
+1576(merely)X
+1802(an)X
+1895(array)X
+2068(representation)X
+720 5513(of)N
+800(the)X
+908(radix)X
+1076(search)X
+1280(trie)X
+1396(described)X
+1692(above.)X
+1920(The)X
+2052(children)X
+2308(of)X
+2388(the)X
+720 5593(node)N
+885(with)X
+1038(index)X
+1223(i)X
+1267(can)X
+1391(be)X
+1483(found)X
+1675(at)X
+1751(the)X
+1863(nodes)X
+2055(indexed)X
+2307(2*i+1)X
+720 5673(and)N
+842(2*i+2.)X
+0 f
+8 s
+3146 538(/*)N
+3260(left)X
+3450(son)X
+3678(*/)X
+3146 626(tbit)N
+3336(=)X
+3412(2)X
+3488(*)X
+3564(tbit)X
+3754(+)X
+3830(1;)X
+2706 802(bucket)N
+2972(=)X
+3048(hash)X
+3238(&)X
+3314(mask;)X
+2 f
+10 s
+3495 1167(gdbm)N
+1 f
+2878 1299(The)N
+3027(gdbm)X
+3233(\(GNU)X
+3458(data)X
+3616(base)X
+3783(manager\))X
+4111(library)X
+4349(is)X
+4426(a)X
+2706 1387(UNIX)N
+2933(database)X
+3236(manager)X
+3539(written)X
+3792(by)X
+3897(Philip)X
+4112(A.)X
+4215(Nelson,)X
+2706 1475(and)N
+2848(made)X
+3048(available)X
+3364(as)X
+3457(a)X
+3518(part)X
+3668(of)X
+3760(the)X
+3883(FSF)X
+4040(software)X
+4342(dis-)X
+2706 1563(tribution.)N
+3052(The)X
+3207(gdbm)X
+3419(library)X
+3663(provides)X
+3969(the)X
+4097(same)X
+4292(func-)X
+2706 1651(tionality)N
+3028(of)X
+3151(the)X
+2 f
+3304(dbm)X
+1 f
+3442(/)X
+2 f
+3464(ndbm)X
+1 f
+3697(libraries)X
+4015([NEL90])X
+4360(but)X
+2706 1739(attempts)N
+3018(to)X
+3121(avoid)X
+3340(some)X
+3550(of)X
+3658(their)X
+3846(shortcomings.)X
+4337(The)X
+2706 1827(gdbm)N
+2918(library)X
+3162(allows)X
+3401(for)X
+3525(arbitrary-length)X
+4059(data,)X
+4242(and)X
+4387(its)X
+2706 1915(database)N
+3027(is)X
+3124(a)X
+3203(singular,)X
+3524(non-sparse)X
+2 f
+8 s
+3872 1890(4)N
+1 f
+10 s
+3947 1915(\256le.)N
+4112(The)X
+4280(gdbm)X
+2706 2003(library)N
+2947(also)X
+3103(includes)X
+2 f
+3396(dbm)X
+1 f
+3560(and)X
+2 f
+3702(ndbm)X
+1 f
+3906(compatible)X
+4288(inter-)X
+2706 2091(faces.)N
+2878 2205(The)N
+3025(gdbm)X
+3229(library)X
+3465(is)X
+3540(based)X
+3745(on)X
+2 f
+3847(extensible)X
+4189(hashing)X
+1 f
+4442(,)X
+2706 2293(a)N
+2766(dynamic)X
+3066(hashing)X
+3339(algorithm)X
+3674(by)X
+3778(Fagin)X
+3984(et)X
+4066(al)X
+4148([FAG79].)X
+2706 2381(This)N
+2881(algorithm)X
+3225(differs)X
+3467(from)X
+3655(the)X
+3785(previously)X
+4155(discussed)X
+2706 2469(algorithms)N
+3069(in)X
+3152(that)X
+3293(it)X
+3358(uses)X
+3517(a)X
+2 f
+3574(directory)X
+1 f
+3889(that)X
+4030(is)X
+4103(a)X
+4159(collapsed)X
+2706 2557(representation)N
+3192([ENB88])X
+3517(of)X
+3615(the)X
+3744(radix)X
+3940(search)X
+4177(trie)X
+4315(used)X
+2706 2645(by)N
+2 f
+2806(sdbm)X
+1 f
+2975(.)X
+10 f
+2706 2733 -0.0930(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)AN
+3 f
+7 s
+3572 3761(L1)N
+1 Dt
+3485 3738 MXY
+-20 -13 Dl
+7 13 Dl
+-7 13 Dl
+20 -13 Dl
+-400 0 Dl
+3180 3027 MXY
+136 Dc
+2706 3494 MXY
+136 Dc
+2950 3264 MXY
+136 Dc
+3738 MY
+136 Dc
+3485 2968 MXY
+0 118 Dl
+238 0 Dl
+0 -118 Dl
+-238 0 Dl
+3442 MY
+0 119 Dl
+238 0 Dl
+0 -119 Dl
+-238 0 Dl
+3679 MY
+0 119 Dl
+238 0 Dl
+0 -119 Dl
+-238 0 Dl
+3187 3501 MXY
+136 Dc
+2963 3316 MXY
+-24 5 Dl
+15 4 Dl
+4 15 Dl
+5 -24 Dl
+-137 134 Dl
+3204 3083 MXY
+-24 5 Dl
+15 4 Dl
+3 14 Dl
+6 -23 Dl
+-137 133 Dl
+3204 3450 MXY
+-6 -24 Dl
+-3 14 Dl
+-15 5 Dl
+24 5 Dl
+-137 -134 Dl
+2842 3369(0)N
+3075 3139(0)N
+2842 3676(1)N
+3075 3443(1)N
+3562 3054(L00)N
+3565 3528(L01)N
+4197 2968 MXY
+0 118 Dl
+237 0 Dl
+0 -118 Dl
+-237 0 Dl
+3205 MY
+0 119 Dl
+237 0 Dl
+0 -119 Dl
+-237 0 Dl
+3561 MY
+0 118 Dl
+237 0 Dl
+0 -118 Dl
+-237 0 Dl
+3960 2909 MXY
+0 237 Dl
+118 0 Dl
+0 -237 Dl
+-118 0 Dl
+3146 MY
+0 237 Dl
+118 0 Dl
+0 -237 Dl
+-118 0 Dl
+3383 MY
+0 237 Dl
+118 0 Dl
+0 -237 Dl
+-118 0 Dl
+3620 MY
+0 237 Dl
+118 0 Dl
+0 -237 Dl
+-118 0 Dl
+4197 3027 MXY
+-21 -13 Dl
+8 13 Dl
+-8 13 Dl
+21 -13 Dl
+-119 0 Dl
+4197 3264 MXY
+-21 -13 Dl
+8 13 Dl
+-8 13 Dl
+21 -13 Dl
+-119 0 Dl
+3501 MY
+59 0 Dl
+0 89 Dl
+4078 3738 MXY
+59 0 Dl
+0 -88 Dl
+4197 3590 MXY
+-21 -13 Dl
+8 13 Dl
+-8 13 Dl
+21 -13 Dl
+-60 0 Dl
+4197 3650 MXY
+-21 -13 Dl
+8 13 Dl
+-8 13 Dl
+21 -13 Dl
+-60 0 Dl
+3991 3050(00)N
+3991 3287(01)N
+3991 3524(10)N
+3991 3761(11)N
+4269 3050(L00)N
+4269 3287(L01)N
+4283 3643(L1)N
+3485 3501 MXY
+-20 -13 Dl
+7 13 Dl
+-7 13 Dl
+20 -13 Dl
+-155 0 Dl
+3485 3027 MXY
+-20 -13 Dl
+7 13 Dl
+-7 13 Dl
+20 -13 Dl
+-163 0 Dl
+2967 3687 MXY
+-5 -24 Dl
+-4 14 Dl
+-15 4 Dl
+24 6 Dl
+-141 -141 Dl
+3 Dt
+-1 Ds
+8 s
+2706 4033(Figure)N
+2903(2:)X
+1 f
+2972(A)X
+3034(radix)X
+3181(search)X
+3359(trie)X
+3460(and)X
+3568(a)X
+3612(directory)X
+3858(representing)X
+4189(the)X
+4283(trie.)X
+10 s
+10 f
+2706 4209 -0.0930(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)AN
+1 f
+2878 4411(In)N
+2968(this)X
+3106(algorithm,)X
+3460(a)X
+3519(directory)X
+3832(consists)X
+4108(of)X
+4198(a)X
+4256(search)X
+2706 4499(trie)N
+2847(of)X
+2947(depth)X
+2 f
+3158(n)X
+1 f
+3211(,)X
+3264(containing)X
+3635(2)X
+2 f
+7 s
+4467(n)Y
+10 s
+1 f
+3749 4499(bucket)N
+3996(addresses)X
+4337(\(i.e.)X
+2706 4587(each)N
+2897(element)X
+3194(of)X
+3304(the)X
+3445(trie)X
+3594(is)X
+3689(a)X
+3767(bucket)X
+4023(address\).)X
+4373(To)X
+2706 4675(access)N
+2935(the)X
+3056(hash)X
+3226(table,)X
+3425(a)X
+3483(32-bit)X
+3696(hash)X
+3865(value)X
+4061(is)X
+4136(calculated)X
+2706 4763(and)N
+2 f
+2861(n)X
+1 f
+2953(bits)X
+3107(of)X
+3213(the)X
+3350(value)X
+3563(are)X
+3701(used)X
+3886(to)X
+3986(index)X
+4202(into)X
+4364(the)X
+2706 4851(directory)N
+3018(to)X
+3102(obtain)X
+3324(a)X
+3382(bucket)X
+3618(address.)X
+3921(It)X
+3992(is)X
+4067(important)X
+4400(to)X
+2706 4939(note)N
+2866(that)X
+3008(multiple)X
+3296(entries)X
+3532(of)X
+3620(this)X
+3756(directory)X
+4067(may)X
+4226(contain)X
+2706 5027(the)N
+2833(same)X
+3026(bucket)X
+3268(address)X
+3537(as)X
+3632(a)X
+3696(result)X
+3902(of)X
+3997(directory)X
+4315(dou-)X
+2706 5115(bling)N
+2903(during)X
+3145(bucket)X
+3392(splitting.)X
+3706(Figure)X
+3948(2)X
+4021(illustrates)X
+4364(the)X
+2706 5203(relationship)N
+3126(between)X
+3436(a)X
+3513(typical)X
+3772(\(skewed\))X
+4108(search)X
+4355(trie)X
+2706 5291(and)N
+2850(its)X
+2953(directory)X
+3271(representation.)X
+3774(The)X
+3927(formation)X
+4270(of)X
+4364(the)X
+2706 5379(directory)N
+3016(shown)X
+3245(in)X
+3327(the)X
+3445(\256gure)X
+3652(is)X
+3725(as)X
+3812(follows.)X
+16 s
+2706 5593 MXY
+864 0 Dl
+2 f
+8 s
+2746 5648(4)N
+1 f
+9 s
+2796 5673(It)N
+2858(does)X
+3008(not)X
+3118(contain)X
+3348(holes.)X
+3 f
+10 s
+720 5960(USENIX)N
+9 f
+1042(-)X
+3 f
+1106(Winter)X
+1371('91)X
+9 f
+1498(-)X
+3 f
+1562(Dallas,)X
+1815(TX)X
+4424(3)X
+
+4 p
+%%Page: 4 4
+0(Courier)xf 0 f
+10 s 10 xH 0 xS 0 f
+3 f
+432 258(A)N
+510(New)X
+682(Hashing)X
+985(Package)X
+1290(for)X
+1413(UNIX)X
+3663(Seltzer)X
+3920(&)X
+4007(Yigit)X
+1 f
+604 538(Initially,)N
+937(there)X
+1158(is)X
+1271(one)X
+1446(slot)X
+1620(in)X
+1741(the)X
+1898(directory)X
+432 626(addressing)N
+802(a)X
+865(single)X
+1083(bucket.)X
+1364(The)X
+1515(depth)X
+1719(of)X
+1812(the)X
+1936(trie)X
+2069(is)X
+2148(0)X
+432 714(and)N
+577(0)X
+646(bits)X
+790(of)X
+886(each)X
+1063(hash)X
+1239(value)X
+1442(are)X
+1570(examined)X
+1910(to)X
+2000(deter-)X
+432 802(mine)N
+624(in)X
+718(which)X
+946(bucket)X
+1192(to)X
+1286(place)X
+1488(a)X
+1556(key;)X
+1726(all)X
+1837(keys)X
+2015(go)X
+2126(in)X
+432 890(bucket)N
+682(0.)X
+797(When)X
+1024(this)X
+1174(bucket)X
+1423(is)X
+1511(full,)X
+1677(its)X
+1787(contents)X
+2089(are)X
+432 978(divided)N
+698(between)X
+992(L0)X
+1107(and)X
+1249(L1)X
+1363(as)X
+1455(was)X
+1605(done)X
+1786(in)X
+1873(the)X
+1996(previ-)X
+432 1066(ously)N
+664(discussed)X
+1030(algorithms.)X
+1471(After)X
+1700(this)X
+1874(split,)X
+2090(the)X
+432 1154(address)N
+710(of)X
+814(the)X
+948(second)X
+1207(bucket)X
+1457(must)X
+1648(be)X
+1760(stored)X
+1992(in)X
+2090(the)X
+432 1242(directory.)N
+796(To)X
+939(accommodate)X
+1438(the)X
+1589(new)X
+1776(address,)X
+2090(the)X
+432 1330(directory)N
+752(is)X
+835(split)X
+2 f
+8 s
+972 1305(5)N
+1 f
+10 s
+1330(,)Y
+1054(by)X
+1163(doubling)X
+1476(it,)X
+1569(thus)X
+1731(increasing)X
+2090(the)X
+432 1418(depth)N
+630(of)X
+717(the)X
+835(directory)X
+1145(by)X
+1245(one.)X
+604 1532(After)N
+813(this)X
+967(split,)X
+1163(a)X
+1237(single)X
+1466(bit)X
+1588(of)X
+1693(the)X
+1829(hash)X
+2014(value)X
+432 1620(needs)N
+663(to)X
+773(be)X
+896(examined)X
+1255(to)X
+1364(decide)X
+1621(whether)X
+1927(the)X
+2072(key)X
+432 1708(belongs)N
+711(to)X
+803(L0)X
+922(or)X
+1019(L1.)X
+1158(Once)X
+1358(one)X
+1504(of)X
+1601(these)X
+1795(buckets)X
+2069(\256lls)X
+432 1796(\(L0)N
+578(for)X
+702(example\),)X
+1051(it)X
+1125(is)X
+1208(split)X
+1375(as)X
+1472(before,)X
+1728(and)X
+1873(the)X
+2000(direc-)X
+432 1884(tory)N
+585(is)X
+662(split)X
+823(again)X
+1021(to)X
+1107(make)X
+1305(room)X
+1498(for)X
+1615(the)X
+1736(address)X
+2000(of)X
+2090(the)X
+432 1972(third)N
+618(bucket.)X
+927(This)X
+1104(splitting)X
+1400(causes)X
+1645(the)X
+1778(addresses)X
+2121(of)X
+432 2060(the)N
+567(non-splitting)X
+1012(bucket)X
+1263(\(L1\))X
+1443(to)X
+1541(be)X
+1653(duplicated.)X
+2063(The)X
+432 2148(directory)N
+766(now)X
+948(has)X
+1099(four)X
+1277(entries,)X
+1555(a)X
+1635(depth)X
+1857(of)X
+1968(2,)X
+2072(and)X
+432 2236(indexes)N
+700(the)X
+821(buckets)X
+1089(L00,)X
+1261(L01)X
+1413(and)X
+1552(L1,)X
+1684(as)X
+1774(shown)X
+2006(in)X
+2090(the)X
+432 2324(Figure)N
+661(2.)X
+604 2438(The)N
+756(crucial)X
+1002(part)X
+1154(of)X
+1247(the)X
+1371(algorithm)X
+1708(is)X
+1787(the)X
+1911(observa-)X
+432 2526(tion)N
+580(that)X
+724(L1)X
+837(is)X
+914(addressed)X
+1255(twice)X
+1453(in)X
+1539(the)X
+1661(directory.)X
+1995(If)X
+2073(this)X
+432 2614(bucket)N
+679(were)X
+869(to)X
+964(split)X
+1134(now,)X
+1324(the)X
+1454(directory)X
+1776(already)X
+2045(con-)X
+432 2702(tains)N
+611(room)X
+808(to)X
+898(hold)X
+1067(the)X
+1192(address)X
+1460(of)X
+1554(the)X
+1679(new)X
+1840(bucket.)X
+2121(In)X
+432 2790(general,)N
+711(the)X
+831(relationship)X
+1231(between)X
+1521(the)X
+1641(directory)X
+1953(and)X
+2090(the)X
+432 2878(number)N
+704(of)X
+798(bucket)X
+1039(addresses)X
+1374(contained)X
+1713(therein)X
+1962(is)X
+2041(used)X
+432 2966(to)N
+517(decide)X
+750(when)X
+947(to)X
+1031(split)X
+1190(the)X
+1310(directory.)X
+1662(Each)X
+1845(bucket)X
+2081(has)X
+432 3054(a)N
+505(depth,)X
+740(\()X
+2 f
+767(n)X
+7 s
+3070(b)Y
+10 s
+1 f
+848 3054(\),)N
+932(associated)X
+1299(with)X
+1478(it)X
+1558(and)X
+1710(appears)X
+1992(in)X
+2090(the)X
+432 3142(directory)N
+744(exactly)X
+998(2)X
+2 f
+7 s
+3106(n)Y
+9 f
+1075(-)X
+2 f
+1106(n)X
+4 s
+3110(b)Y
+7 s
+1 f
+10 s
+1181 3142(times.)N
+1396(When)X
+1610(a)X
+1668(bucket)X
+1904(splits,)X
+2113(its)X
+432 3230(depth)N
+638(increases)X
+961(by)X
+1069(one.)X
+1253(The)X
+1406(directory)X
+1724(must)X
+1907(split)X
+2072(any)X
+432 3318(time)N
+602(a)X
+665(bucket's)X
+964(depth)X
+1169(exceeds)X
+1451(the)X
+1576(depth)X
+1781(of)X
+1875(the)X
+2000(direc-)X
+432 3406(tory.)N
+630(The)X
+784(following)X
+1123(code)X
+1303(fragment)X
+1621(helps)X
+1818(to)X
+1908(illustrate)X
+432 3494(the)N
+554(extendible)X
+912(hashing)X
+1185(algorithm)X
+1520([FAG79])X
+1838(for)X
+1955(access-)X
+432 3582(ing)N
+554(individual)X
+898(buckets)X
+1163(and)X
+1299(maintaining)X
+1701(the)X
+1819(directory.)X
+0 f
+8 s
+432 3881(hash)N
+622(=)X
+698 -0.4038(calchash\(key\);)AX
+432 3969(mask)N
+622(=)X
+698 -0.4018(maskvec[depth];)AX
+432 4145(bucket)N
+698(=)X
+774 -0.4038(directory[hash)AX
+1344(&)X
+1420(mask];)X
+432 4321(/*)N
+546(Key)X
+698 -0.4219(Insertion)AX
+1078(*/)X
+432 4409(if)N
+546 -0.4038(\(store\(bucket,)AX
+1116(key,)X
+1306(data\))X
+1534(==)X
+1648(FAIL\))X
+1876({)X
+720 4497(newbl)N
+948(=)X
+1024 -0.4167(getpage\(\);)AX
+720 4585 -0.4000(bucket->depth++;)AN
+720 4673 -0.4091(newbl->depth)AN
+1214(=)X
+1290 -0.4038(bucket->depth;)AX
+720 4761(if)N
+834 -0.4038(\(bucket->depth)AX
+1404(>)X
+1480(depth\))X
+1746({)X
+1008 4849(/*)N
+1122(double)X
+1388 -0.4219(directory)AX
+1768(*/)X
+1008 4937(depth++;)N
+1 f
+16 s
+432 5033 MXY
+864 0 Dl
+2 f
+8 s
+472 5088(5)N
+1 f
+9 s
+534 5113(This)N
+692(decision)X
+962(to)X
+1048(split)X
+1202(the)X
+1319(directory)X
+1608(is)X
+1685(based)X
+1878(on)X
+1979(a)X
+2040(com-)X
+432 5193(parison)N
+666(of)X
+748(the)X
+858(depth)X
+1040(of)X
+1121(the)X
+1230(page)X
+1387(being)X
+1568(split)X
+1713(and)X
+1838(the)X
+1947(depth)X
+2128(of)X
+432 5273(the)N
+543(trie.)X
+698(In)X
+781(Figure)X
+992(2,)X
+1069(the)X
+1180(depths)X
+1390(of)X
+1472(both)X
+1622(L00)X
+1760(and)X
+1886(L01)X
+2024(are)X
+2134(2,)X
+432 5353(whereas)N
+689(the)X
+798(depth)X
+979(of)X
+1060(L1)X
+1161(is)X
+1230(1.)X
+1323(Therefore,)X
+1646(if)X
+1710(L1)X
+1810(were)X
+1970(to)X
+2046(split,)X
+432 5433(the)N
+543(directory)X
+826(would)X
+1029(not)X
+1144(need)X
+1303(to)X
+1382(split.)X
+1565(In)X
+1648(reality,)X
+1872(a)X
+1926(bucket)X
+2140(is)X
+432 5513(allocated)N
+727(for)X
+846(the)X
+969(directory)X
+1264(at)X
+1351(the)X
+1474(time)X
+1637(of)X
+1732(\256le)X
+1858(creation)X
+2124(so)X
+432 5593(although)N
+707(the)X
+818(directory)X
+1100(splits)X
+1274(logically,)X
+1566(physical)X
+1828(splits)X
+2002(do)X
+2096(not)X
+432 5673(occur)N
+610(until)X
+760(the)X
+866(\256le)X
+976(becomes)X
+1246(quite)X
+1408(large.)X
+0 f
+8 s
+2994 538 -0.4219(directory)AN
+3374(=)X
+3450 -0.3971(double\(directory\);)AX
+2706 626(})N
+2706 714 -0.3958(splitbucket\(bucket,)AN
+3466(newbl\))X
+2706 802(...)N
+2418 890(})N
+2 f
+10 s
+3169 1255(hsearch)N
+1 f
+2590 1387(Since)N
+2 f
+2807(hsearch)X
+1 f
+3100(does)X
+3286(not)X
+3427(have)X
+3617(to)X
+3717(translate)X
+4027(hash)X
+2418 1475(values)N
+2659(into)X
+2819(disk)X
+2988(addresses,)X
+3352(it)X
+3432(can)X
+3579(use)X
+3721(much)X
+3934(simpler)X
+2418 1563(algorithms)N
+2808(than)X
+2994(those)X
+3211(de\256ned)X
+3495(above.)X
+3775(System)X
+4058(V's)X
+2 f
+2418 1651(hsearch)N
+1 f
+2708(constructs)X
+3069(a)X
+3141(\256xed-size)X
+3489(hash)X
+3671(table)X
+3862(\(speci\256ed)X
+2418 1739(by)N
+2519(the)X
+2637(user)X
+2791(at)X
+2869(table)X
+3045(creation\).)X
+3391(By)X
+3504(default,)X
+3767(a)X
+3823(multiplica-)X
+2418 1827(tive)N
+2570(hash)X
+2748(function)X
+3046(based)X
+3260(on)X
+3371(that)X
+3522(described)X
+3861(in)X
+3954(Knuth,)X
+2418 1915(Volume)N
+2710(3,)X
+2804(section)X
+3065(6.4)X
+3199([KNU68])X
+3541(is)X
+3628(used)X
+3809(to)X
+3905(obtain)X
+4138(a)X
+2418 2003(primary)N
+2694(bucket)X
+2930(address.)X
+3233(If)X
+3309(this)X
+3446(bucket)X
+3681(is)X
+3755(full,)X
+3907(a)X
+3964(secon-)X
+2418 2091(dary)N
+2593(multiplicative)X
+3069(hash)X
+3248(value)X
+3454(is)X
+3538(computed)X
+3885(to)X
+3978(de\256ne)X
+2418 2179(the)N
+2542(probe)X
+2751(interval.)X
+3062(The)X
+3213(probe)X
+3422(interval)X
+3693(is)X
+3772(added)X
+3989(to)X
+4076(the)X
+2418 2267(original)N
+2712(bucket)X
+2971(address)X
+3257(\(modulo)X
+3573(the)X
+3716(table)X
+3916(size\))X
+4112(to)X
+2418 2355(obtain)N
+2658(a)X
+2734(new)X
+2908(bucket)X
+3162(address.)X
+3483(This)X
+3665(process)X
+3946(repeats)X
+2418 2443(until)N
+2588(an)X
+2688(empty)X
+2911(bucket)X
+3148(is)X
+3224(found.)X
+3474(If)X
+3551(no)X
+3654(bucket)X
+3891(is)X
+3967(found,)X
+2418 2531(an)N
+2514(insertion)X
+2814(fails)X
+2972(with)X
+3134(a)X
+3190(``table)X
+3420(full'')X
+3605(condition.)X
+2590 2645(The)N
+2768(basic)X
+2986(algorithm)X
+3350(may)X
+3541(be)X
+3670(modi\256ed)X
+4006(by)X
+4138(a)X
+2418 2733(number)N
+2705(of)X
+2813(compile)X
+3112(time)X
+3295(options)X
+3571(available)X
+3902(to)X
+4005(those)X
+2418 2821(users)N
+2604(with)X
+2767(AT&T)X
+3006(source)X
+3237(code.)X
+3450(First,)X
+3637(the)X
+3756(package)X
+4040(pro-)X
+2418 2909(vides)N
+2638(two)X
+2809(options)X
+3094(for)X
+3238(hash)X
+3435(functions.)X
+3803(Users)X
+4036(may)X
+2418 2997(specify)N
+2690(their)X
+2877(own)X
+3055(hash)X
+3242(function)X
+3549(by)X
+3669(compiling)X
+4032(with)X
+2418 3085(``USCR'')N
+2757(de\256ned)X
+3016(and)X
+3155(declaring)X
+3477(and)X
+3616(de\256ning)X
+3901(the)X
+4022(vari-)X
+2418 3173(able)N
+2 f
+2578(hcompar)X
+1 f
+2863(,)X
+2909(a)X
+2971(function)X
+3263(taking)X
+3488(two)X
+3633(string)X
+3840(arguments)X
+2418 3261(and)N
+2560(returning)X
+2880(an)X
+2982(integer.)X
+3271(Users)X
+3480(may)X
+3643(also)X
+3797(request)X
+4054(that)X
+2418 3349(hash)N
+2587(values)X
+2814(be)X
+2912(computed)X
+3250(simply)X
+3489(by)X
+3590(taking)X
+3811(the)X
+3930(modulo)X
+2418 3437(of)N
+2521(key)X
+2673(\(using)X
+2909(division)X
+3201(rather)X
+3424(than)X
+3597(multiplication)X
+4080(for)X
+2418 3525(hash)N
+2589(value)X
+2787(calculation\).)X
+3230(If)X
+3308(this)X
+3447(technique)X
+3783(is)X
+3859(used,)X
+4049(col-)X
+2418 3613(lisions)N
+2651(are)X
+2775(resolved)X
+3072(by)X
+3176(scanning)X
+3485(sequentially)X
+3896(from)X
+4076(the)X
+2418 3701(selected)N
+2702(bucket)X
+2941(\(linear)X
+3176(probing\).)X
+3517(This)X
+3684(option)X
+3913(is)X
+3991(avail-)X
+2418 3789(able)N
+2572(by)X
+2672(de\256ning)X
+2954(the)X
+3072(variable)X
+3351(``DIV'')X
+3622(at)X
+3700(compile)X
+3978(time.)X
+2590 3903(A)N
+2720(second)X
+3015(option,)X
+3311(based)X
+3565(on)X
+3716(an)X
+3863(algorithm)X
+2418 3991(discovered)N
+2787(by)X
+2888(Richard)X
+3163(P.)X
+3248(Brent,)X
+3466(rearranges)X
+3822(the)X
+3940(table)X
+4116(at)X
+2418 4079(the)N
+2549(time)X
+2724(of)X
+2824(insertion)X
+3137(in)X
+3232(order)X
+3434(to)X
+3528(speed)X
+3743(up)X
+3855(retrievals.)X
+2418 4167(The)N
+2571(basic)X
+2764(idea)X
+2926(is)X
+3007(to)X
+3097(shorten)X
+3361(long)X
+3531(probe)X
+3741(sequences)X
+4094(by)X
+2418 4255(lengthening)N
+2833(short)X
+3030(probe)X
+3249(sequences.)X
+3651(Once)X
+3857(the)X
+3991(probe)X
+2418 4343(chain)N
+2613(has)X
+2741(exceeded)X
+3062(some)X
+3252(threshold)X
+3571(\(Brent)X
+3796(suggests)X
+4087(2\),)X
+2418 4431(we)N
+2541(attempt)X
+2809(to)X
+2899(shuf\257e)X
+3145(any)X
+3289(colliding)X
+3601(keys)X
+3776(\(keys)X
+3978(which)X
+2418 4519(appeared)N
+2734(in)X
+2821(the)X
+2944(probe)X
+3152(sequence)X
+3471(of)X
+3562(the)X
+3684(new)X
+3842(key\).)X
+4049(The)X
+2418 4607(details)N
+2652(of)X
+2744(this)X
+2884(key)X
+3025(shuf\257ing)X
+3333(can)X
+3469(be)X
+3569(found)X
+3780(in)X
+3866([KNU68])X
+2418 4695(and)N
+2576([BRE73].)X
+2946(This)X
+3129(algorithm)X
+3481(may)X
+3660(be)X
+3777(obtained)X
+4094(by)X
+2418 4783(de\256ning)N
+2700(the)X
+2818(variable)X
+3097(``BRENT'')X
+3487(at)X
+3565(compile)X
+3843(time.)X
+2590 4897(A)N
+2698(third)X
+2899(set)X
+3038(of)X
+3154(options,)X
+3458(obtained)X
+3783(by)X
+3912(de\256ning)X
+2418 4985(``CHAINED'',)N
+2943(use)X
+3086(linked)X
+3321(lists)X
+3484(to)X
+3581(resolve)X
+3848(collisions.)X
+2418 5073(Either)N
+2647(of)X
+2747(the)X
+2878(primary)X
+3164(hash)X
+3343(function)X
+3642(described)X
+3982(above)X
+2418 5161(may)N
+2584(be)X
+2688(used,)X
+2882(but)X
+3011(all)X
+3118(collisions)X
+3451(are)X
+3577(resolved)X
+3876(by)X
+3983(build-)X
+2418 5249(ing)N
+2554(a)X
+2623(linked)X
+2856(list)X
+2986(of)X
+3086(entries)X
+3333(from)X
+3522(the)X
+3653(primary)X
+3940(bucket.)X
+2418 5337(By)N
+2542(default,)X
+2816(new)X
+2981(entries)X
+3226(will)X
+3381(be)X
+3488(added)X
+3711(to)X
+3804(a)X
+3871(bucket)X
+4116(at)X
+2418 5425(the)N
+2541(beginning)X
+2886(of)X
+2978(the)X
+3101(bucket)X
+3339(chain.)X
+3577(However,)X
+3916(compile)X
+2418 5513(options)N
+2706(``SORTUP'')X
+3173(or)X
+3293(``SORTDOWN'')X
+3908(may)X
+4098(be)X
+2418 5601(speci\256ed)N
+2723(to)X
+2805(order)X
+2995(the)X
+3113(hash)X
+3280(chains)X
+3505(within)X
+3729(each)X
+3897(bucket.)X
+3 f
+432 5960(4)N
+2970(USENIX)X
+9 f
+3292(-)X
+3 f
+3356(Winter)X
+3621('91)X
+9 f
+3748(-)X
+3 f
+3812(Dallas,)X
+4065(TX)X
+
+5 p
+%%Page: 5 5
+0(Courier)xf 0 f
+10 s 10 xH 0 xS 0 f
+3 f
+720 258(Seltzer)N
+977(&)X
+1064(Yigit)X
+3278(A)X
+3356(New)X
+3528(Hashing)X
+3831(Package)X
+4136(for)X
+4259(UNIX)X
+2 f
+1444 538(dynahash)N
+1 f
+892 670(The)N
+2 f
+1054(dynahash)X
+1 f
+1398(library,)X
+1669(written)X
+1932(by)X
+2048(Esmond)X
+2346(Pitt,)X
+720 758(implements)N
+1183(Larson's)X
+1554(linear)X
+1827(hashing)X
+2165(algorithm)X
+720 846([LAR88])N
+1097(with)X
+1302(an)X
+2 f
+1440(hsearch)X
+1 f
+1756(compatible)X
+2174(interface.)X
+720 934(Intuitively,)N
+1099(a)X
+1161(hash)X
+1334(table)X
+1516(begins)X
+1751(as)X
+1844(a)X
+1905(single)X
+2121(bucket)X
+2360(and)X
+720 1022(grows)N
+941(in)X
+1028(generations,)X
+1443(where)X
+1665(a)X
+1725(generation)X
+2088(corresponds)X
+720 1110(to)N
+815(a)X
+884(doubling)X
+1201(in)X
+1296(the)X
+1427(size)X
+1585(of)X
+1685(the)X
+1815(hash)X
+1994(table.)X
+2222(The)X
+2379(0)X
+2 f
+7 s
+1078(th)Y
+10 s
+1 f
+720 1198(generation)N
+1085(occurs)X
+1321(as)X
+1414(the)X
+1538(table)X
+1719(grows)X
+1940(from)X
+2121(one)X
+2262(bucket)X
+720 1286(to)N
+814(two.)X
+1006(In)X
+1105(the)X
+1235(next)X
+1405(generation)X
+1776(the)X
+1906(table)X
+2093(grows)X
+2320(from)X
+720 1374(two)N
+862(to)X
+946(four.)X
+1122(During)X
+1371(each)X
+1541(generation,)X
+1921(every)X
+2121(bucket)X
+2356(that)X
+720 1462(existed)N
+967(at)X
+1045(the)X
+1163(beginning)X
+1503(of)X
+1590(the)X
+1708(generation)X
+2067(is)X
+2140(split.)X
+892 1576(The)N
+1041(table)X
+1221(starts)X
+1414(as)X
+1505(a)X
+1565(single)X
+1780(bucket)X
+2018(\(numbered)X
+2389(0\),)X
+720 1664(the)N
+839(current)X
+1088(split)X
+1245(bucket)X
+1479(is)X
+1552(set)X
+1661(to)X
+1743(bucket)X
+1977(0,)X
+2057(and)X
+2193(the)X
+2311(max-)X
+720 1752(imum)N
+933(split)X
+1097(point)X
+1288(is)X
+1368(set)X
+1483(to)X
+1571(twice)X
+1771(the)X
+1895(current)X
+2149(split)X
+2312(point)X
+720 1840(\(0\).)N
+863(When)X
+1084(it)X
+1157(is)X
+1239(time)X
+1410(for)X
+1532(a)X
+1596(bucket)X
+1838(to)X
+1928(split,)X
+2113(the)X
+2239(keys)X
+2414(in)X
+720 1928(the)N
+872(current)X
+1154(split)X
+1345(bucket)X
+1612(are)X
+1764(divided)X
+2057(between)X
+2378(the)X
+720 2016(current)N
+981(split)X
+1151(bucket)X
+1397(and)X
+1545(a)X
+1613(new)X
+1779(bucket)X
+2025(whose)X
+2262(bucket)X
+720 2104(number)N
+1000(is)X
+1088(equal)X
+1297(to)X
+1394(1)X
+1469(+)X
+1549(current)X
+1812(split)X
+1984(bucket)X
+2232(+)X
+2311(max-)X
+720 2192(imum)N
+927(split)X
+1085(point.)X
+1310(We)X
+1442(can)X
+1574(determine)X
+1915(which)X
+2131(keys)X
+2298(move)X
+720 2280(to)N
+807(the)X
+929(new)X
+1087(bucket)X
+1325(by)X
+1429(examining)X
+1791(the)X
+2 f
+1913(n)X
+7 s
+1962 2248(th)N
+10 s
+1 f
+2043 2280(bit)N
+2151(of)X
+2242(a)X
+2302(key's)X
+720 2368(hash)N
+899(value)X
+1105(where)X
+1334(n)X
+1406(is)X
+1491(the)X
+1620(generation)X
+1990(number.)X
+2306(After)X
+720 2456(the)N
+846(bucket)X
+1088(at)X
+1174(the)X
+1300(maximum)X
+1651(split)X
+1815(point)X
+2006(has)X
+2140(been)X
+2319(split,)X
+720 2544(the)N
+839(generation)X
+1198(number)X
+1463(is)X
+1536(incremented,)X
+1973(the)X
+2091(current)X
+2339(split)X
+720 2632(point)N
+908(is)X
+985(set)X
+1098(back)X
+1274(to)X
+1360(zero,)X
+1543(and)X
+1683(the)X
+1805(maximum)X
+2152(split)X
+2312(point)X
+720 2720(is)N
+815(set)X
+946(to)X
+1050(the)X
+1190(number)X
+1477(of)X
+1586(the)X
+1725(last)X
+1877(bucket)X
+2132(in)X
+2235(the)X
+2374(\256le)X
+720 2808(\(which)N
+971(is)X
+1052(equal)X
+1253(to)X
+1342(twice)X
+1543(the)X
+1668(old)X
+1797(maximum)X
+2148(split)X
+2312(point)X
+720 2896(plus)N
+873(1\).)X
+892 3010(To)N
+1031(facilitate)X
+1361(locating)X
+1668(keys,)X
+1884(we)X
+2027(maintain)X
+2356(two)X
+720 3098(masks.)N
+989(The)X
+1143(low)X
+1291(mask)X
+1488(is)X
+1569(equal)X
+1771(to)X
+1861(the)X
+1987(maximum)X
+2339(split)X
+720 3186(bucket)N
+967(and)X
+1116(the)X
+1247(high)X
+1422(mask)X
+1624(is)X
+1710(equal)X
+1917(to)X
+2011(the)X
+2141(next)X
+2311(max-)X
+720 3274(imum)N
+931(split)X
+1093(bucket.)X
+1372(To)X
+1486(locate)X
+1703(a)X
+1764(speci\256c)X
+2033(key,)X
+2193(we)X
+2311(com-)X
+720 3362(pute)N
+881(a)X
+940(32-bit)X
+1154(hash)X
+1324(value)X
+1520(using)X
+1715(a)X
+1773(bit-randomizing)X
+2311(algo-)X
+720 3450(rithm)N
+932(such)X
+1118(as)X
+1224(the)X
+1361(one)X
+1516(described)X
+1862(in)X
+1962([LAR88].)X
+2334(This)X
+720 3538(hash)N
+893(value)X
+1093(is)X
+1172(then)X
+1336(masked)X
+1607(with)X
+1775(the)X
+1898(high)X
+2065(mask.)X
+2299(If)X
+2378(the)X
+720 3626(resulting)N
+1026(number)X
+1297(is)X
+1376(greater)X
+1626(than)X
+1790(the)X
+1913(maximum)X
+2262(bucket)X
+720 3714(in)N
+823(the)X
+962(table)X
+1159(\(current)X
+1455(split)X
+1633(bucket)X
+1888(+)X
+1974(maximum)X
+2339(split)X
+720 3802(point\),)N
+962(the)X
+1091(hash)X
+1269(value)X
+1474(is)X
+1558(masked)X
+1834(with)X
+2007(the)X
+2136(low)X
+2287(mask.)X
+720 3890(In)N
+825(either)X
+1046(case,)X
+1242(the)X
+1377(result)X
+1592(of)X
+1696(the)X
+1831(mask)X
+2037(is)X
+2127(the)X
+2262(bucket)X
+720 3978(number)N
+989(for)X
+1107(the)X
+1229(given)X
+1431(key.)X
+1611(The)X
+1759(algorithm)X
+2093(below)X
+2312(illus-)X
+720 4066(trates)N
+914(this)X
+1049(process.)X
+0 f
+8 s
+720 4365(h)N
+796(=)X
+872 -0.4038(calchash\(key\);)AX
+720 4453(bucket)N
+986(=)X
+1062(h)X
+1138(&)X
+1214 -0.4167(high_mask;)AX
+720 4541(if)N
+834(\()X
+910(bucket)X
+1176(>)X
+1252 -0.4167(max_bucket)AX
+1670(\))X
+1008 4629(bucket)N
+1274(=)X
+1350(h)X
+1426(&)X
+1502 -0.4219(low_mask;)AX
+720 4717 -0.4018(return\(bucket\);)AN
+1 f
+10 s
+892 5042(In)N
+1013(order)X
+1237(to)X
+1353(decide)X
+1617(when)X
+1845(to)X
+1961(split)X
+2152(a)X
+2242(bucket,)X
+2 f
+720 5130(dynahash)N
+1 f
+1050(uses)X
+2 f
+1210(controlled)X
+1561(splitting)X
+1 f
+1822(.)X
+1884(A)X
+1964(hash)X
+2133(table)X
+2311(has)X
+2440(a)X
+720 5218(\256ll)N
+837(factor)X
+1054(which)X
+1279(is)X
+1361(expressed)X
+1707(in)X
+1798(terms)X
+2004(of)X
+2099(the)X
+2225(average)X
+720 5306(number)N
+990(of)X
+1082(keys)X
+1253(in)X
+1339(each)X
+1511(bucket.)X
+1789(Each)X
+1974(time)X
+2140(the)X
+2262(table's)X
+720 5394(total)N
+885(number)X
+1153(of)X
+1243(keys)X
+1413(divided)X
+1676(by)X
+1778(its)X
+1875(number)X
+2142(of)X
+2231(buckets)X
+720 5482(exceeds)N
+995(this)X
+1130(\256ll)X
+1238(factor,)X
+1466(a)X
+1522(bucket)X
+1756(is)X
+1829(split.)X
+2878 538(Since)N
+3079(the)X
+2 f
+3200(hsearch)X
+1 f
+3477(create)X
+3693(interface)X
+3998(\()X
+2 f
+4025(hcreate)X
+1 f
+4266(\))X
+4315(calls)X
+2706 626(for)N
+2842(an)X
+2960(estimate)X
+3269(of)X
+3378(the)X
+3518(\256nal)X
+3702(size)X
+3869(of)X
+3978(the)X
+4118(hash)X
+4306(table)X
+2706 714(\()N
+2 f
+2733(nelem)X
+1 f
+2925(\),)X
+2 f
+3007(dynahash)X
+1 f
+3349(uses)X
+3522(this)X
+3672(information)X
+4085(to)X
+4182(initialize)X
+2706 802(the)N
+2848(table.)X
+3088(The)X
+3257(initial)X
+3486(number)X
+3774(of)X
+3884(buckets)X
+4172(is)X
+4268(set)X
+4400(to)X
+2 f
+2706 890(nelem)N
+1 f
+2926(rounded)X
+3217(to)X
+3306(the)X
+3431(next)X
+3596(higher)X
+3828(power)X
+4056(of)X
+4150(two.)X
+4337(The)X
+2706 978(current)N
+2958(split)X
+3118(point)X
+3305(is)X
+3381(set)X
+3493(to)X
+3578(0)X
+3641(and)X
+3780(the)X
+3901(maximum)X
+4248(bucket)X
+2706 1066(and)N
+2842(maximum)X
+3186(split)X
+3343(point)X
+3527(are)X
+3646(set)X
+3755(to)X
+3837(this)X
+3972(rounded)X
+4255(value.)X
+3 f
+3148 1220(The)N
+3301(New)X
+3473(Implementation)X
+1 f
+2878 1352(Our)N
+3042(implementation)X
+3583(is)X
+3675(also)X
+3842(based)X
+4063(on)X
+4181(Larson's)X
+2706 1440(linear)N
+2939(hashing)X
+3238([LAR88])X
+3582(algorithm)X
+3943(as)X
+4060(well)X
+4248(as)X
+4364(the)X
+2 f
+2706 1528(dynahash)N
+1 f
+3047(implementation.)X
+3623(The)X
+2 f
+3782(dbm)X
+1 f
+3954(family)X
+4197(of)X
+4297(algo-)X
+2706 1616(rithms)N
+2942(decide)X
+3184(dynamically)X
+3612(which)X
+3840(bucket)X
+4085(to)X
+4178(split)X
+4346(and)X
+2706 1704(when)N
+2914(to)X
+3010(split)X
+3180(it)X
+3257(\(when)X
+3491(it)X
+3568(over\257ows\))X
+3944(while)X
+2 f
+4155(dynahash)X
+1 f
+2706 1792(splits)N
+2933(in)X
+3054(a)X
+3149(prede\256ned)X
+3547(order)X
+3776(\(linearly\))X
+4134(and)X
+4309(at)X
+4426(a)X
+2706 1880(prede\256ned)N
+3116(time)X
+3328(\(when)X
+3599(the)X
+3767(table)X
+3993(\256ll)X
+4151(factor)X
+4409(is)X
+2706 1968(exceeded\).)N
+3121(We)X
+3280(use)X
+3434(a)X
+3517(hybrid)X
+3773(of)X
+3887(these)X
+4099(techniques.)X
+2706 2056(Splits)N
+2913(occur)X
+3118(in)X
+3206(the)X
+3330(prede\256ned)X
+3695(order)X
+3891(of)X
+3984(linear)X
+4193(hashing,)X
+2706 2144(but)N
+2845(the)X
+2980(time)X
+3159(at)X
+3253(which)X
+3485(pages)X
+3704(are)X
+3839(split)X
+4012(is)X
+4101(determined)X
+2706 2232(both)N
+2869(by)X
+2970(page)X
+3143(over\257ows)X
+3480(\()X
+2 f
+3507(uncontrolled)X
+3937(splitting)X
+1 f
+4198(\))X
+4246(and)X
+4382(by)X
+2706 2320(exceeding)N
+3052(the)X
+3170(\256ll)X
+3278(factor)X
+3486(\()X
+2 f
+3513(controlled)X
+3862(splitting)X
+1 f
+4123(\))X
+2878 2434(A)N
+2962(hash)X
+3135(table)X
+3317(is)X
+3395(parameterized)X
+3876(by)X
+3981(both)X
+4148(its)X
+4248(bucket)X
+2706 2522(size)N
+2904(\()X
+2 f
+2931(bsize)X
+1 f
+(\))S
+3191(and)X
+3380(\256ll)X
+3541(factor)X
+3801(\()X
+2 f
+3828(ffactor)X
+1 f
+4041(\).)X
+4180(Whereas)X
+2 f
+2706 2610(dynahash's)N
+1 f
+3095(buckets)X
+3364(can)X
+3500(be)X
+3599(represented)X
+3993(as)X
+4083(a)X
+4142(linked)X
+4365(list)X
+2706 2698(of)N
+2798(elements)X
+3108(in)X
+3195(memory,)X
+3507(our)X
+3639(package)X
+3928(needs)X
+4136(to)X
+4222(support)X
+2706 2786(disk)N
+2874(access,)X
+3135(and)X
+3286(must)X
+3476(represent)X
+3806(buckets)X
+4086(in)X
+4183(terms)X
+4395(of)X
+2706 2874(pages.)N
+2955(The)X
+2 f
+3106(bsize)X
+1 f
+3291(is)X
+3369(the)X
+3492(size)X
+3642(\(in)X
+3756(bytes\))X
+3977(of)X
+4069(these)X
+4259(pages.)X
+2706 2962(As)N
+2833(in)X
+2933(linear)X
+3154(hashing,)X
+3461(the)X
+3597(number)X
+3879(of)X
+3983(buckets)X
+4265(in)X
+4364(the)X
+2706 3050(table)N
+2906(is)X
+3003(equal)X
+3221(to)X
+3327(the)X
+3469(number)X
+3758(of)X
+3869(keys)X
+4060(in)X
+4165(the)X
+4306(table)X
+2706 3138(divided)N
+2988(by)X
+2 f
+3110(ffactor)X
+1 f
+3323(.)X
+2 f
+8 s
+3113(6)Y
+1 f
+10 s
+3417 3138(The)N
+3584(controlled)X
+3950(splitting)X
+4252(occurs)X
+2706 3226(each)N
+2878(time)X
+3044(the)X
+3166(number)X
+3435(of)X
+3526(keys)X
+3697(in)X
+3783(the)X
+3905(table)X
+4085(exceeds)X
+4364(the)X
+2706 3314(\256ll)N
+2814(factor)X
+3022(multiplied)X
+3370(by)X
+3470(the)X
+3588(number)X
+3853(of)X
+3940(buckets.)X
+2878 3428(Inserting)N
+3187(keys)X
+3358(and)X
+3498(splitting)X
+3783(buckets)X
+4051(is)X
+4127(performed)X
+2706 3516(precisely)N
+3018(as)X
+3107(described)X
+3437(previously)X
+3796(for)X
+2 f
+3911(dynahash)X
+1 f
+4218(.)X
+4279(How-)X
+2706 3604(ever,)N
+2897(since)X
+3094(buckets)X
+3371(are)X
+3502(now)X
+3671(comprised)X
+4036(of)X
+4134(pages,)X
+4368(we)X
+2706 3692(must)N
+2883(be)X
+2981(prepared)X
+3284(to)X
+3367(handle)X
+3602(cases)X
+3793(where)X
+4011(the)X
+4130(size)X
+4276(of)X
+4364(the)X
+2706 3780(keys)N
+2873(and)X
+3009(data)X
+3163(in)X
+3245(a)X
+3301(bucket)X
+3535(exceed)X
+3779(the)X
+3897(bucket)X
+4131(size.)X
+3 f
+3318 3934(Over\257ow)N
+3654(Pages)X
+1 f
+2878 4066(There)N
+3095(are)X
+3223(two)X
+3372(cases)X
+3571(where)X
+3797(a)X
+3862(key)X
+4007(may)X
+4174(not)X
+4305(\256t)X
+4400(in)X
+2706 4154(its)N
+2802(designated)X
+3166(bucket.)X
+3441(In)X
+3529(the)X
+3647(\256rst)X
+3791(case,)X
+3970(the)X
+4088(total)X
+4250(size)X
+4395(of)X
+2706 4242(the)N
+2833(key)X
+2978(and)X
+3123(data)X
+3286(may)X
+3453(exceed)X
+3706(the)X
+3833(bucket)X
+4076(size.)X
+4269(In)X
+4364(the)X
+2706 4330(second,)N
+3008(addition)X
+3328(of)X
+3453(a)X
+3547(new)X
+3739(key)X
+3913(could)X
+4149(cause)X
+4386(an)X
+2706 4418(over\257ow,)N
+3068(but)X
+3227(the)X
+3382(bucket)X
+3652(in)X
+3770(question)X
+4097(is)X
+4206(not)X
+4364(yet)X
+2706 4506(scheduled)N
+3049(to)X
+3133(be)X
+3230(split.)X
+3428(In)X
+3516(existing)X
+3790(implementations,)X
+4364(the)X
+2706 4594(second)N
+2953(case)X
+3115(never)X
+3317(arises)X
+3523(\(since)X
+3738(buckets)X
+4006(are)X
+4128(split)X
+4288(when)X
+2706 4682(they)N
+2871(over\257ow\))X
+3210(and)X
+3352(the)X
+3476(\256rst)X
+3626(case)X
+3791(is)X
+3870(not)X
+3998(handled)X
+4278(at)X
+4362(all.)X
+2706 4770(Although)N
+3036(large)X
+3225(key/data)X
+3525(pair)X
+3678(handling)X
+3986(is)X
+4066(dif\256cult)X
+4346(and)X
+2706 4858(expensive,)N
+3083(it)X
+3163(is)X
+3252(essential.)X
+3604(In)X
+3706(a)X
+3777(linear)X
+3995(hashed)X
+4253(imple-)X
+2706 4946(mentation,)N
+3087(over\257ow)X
+3413(pages)X
+3636(are)X
+3775(required)X
+4083(for)X
+4217(buckets)X
+2706 5034(which)N
+2935(over\257ow)X
+3253(before)X
+3492(they)X
+3662(are)X
+3793(split,)X
+3982(so)X
+4085(we)X
+4211(can)X
+4355(use)X
+2706 5122(the)N
+2833(same)X
+3027(mechanism)X
+3421(for)X
+3544(large)X
+3734(key/data)X
+4035(pairs)X
+4220(that)X
+4368(we)X
+2706 5210(use)N
+2837(for)X
+2955(over\257ow)X
+3264(pages.)X
+3511(Logically,)X
+3862(we)X
+3980(chain)X
+4177(over\257ow)X
+16 s
+2706 5353 MXY
+864 0 Dl
+2 f
+8 s
+2746 5408(6)N
+1 f
+9 s
+2801 5433(This)N
+2952(is)X
+3023(not)X
+3138(strictly)X
+3361(true.)X
+3532(The)X
+3667(\256le)X
+3782(does)X
+3937(not)X
+4052(contract)X
+4306(when)X
+2706 5513(keys)N
+2861(are)X
+2972(deleted,)X
+3221(so)X
+3308(the)X
+3419(number)X
+3662(of)X
+3744(buckets)X
+3986(is)X
+4056(actually)X
+4306(equal)X
+2706 5593(to)N
+2782(the)X
+2890(maximum)X
+3202(number)X
+3441(of)X
+3520(keys)X
+3671(ever)X
+3814(present)X
+4041(in)X
+4116(the)X
+4223(table)X
+4382(di-)X
+2706 5673(vided)N
+2884(by)X
+2974(the)X
+3080(\256ll)X
+3178(factor.)X
+3 f
+10 s
+720 5960(USENIX)N
+9 f
+1042(-)X
+3 f
+1106(Winter)X
+1371('91)X
+9 f
+1498(-)X
+3 f
+1562(Dallas,)X
+1815(TX)X
+4424(5)X
+
+6 p
+%%Page: 6 6
+0(Courier)xf 0 f
+10 s 10 xH 0 xS 0 f
+3 f
+432 258(A)N
+510(New)X
+682(Hashing)X
+985(Package)X
+1290(for)X
+1413(UNIX)X
+3663(Seltzer)X
+3920(&)X
+4007(Yigit)X
+1 f
+432 538(pages)N
+639(to)X
+725(the)X
+847(buckets)X
+1116(\(also)X
+1296(called)X
+1512(primary)X
+1789(pages\).)X
+2062(In)X
+2152(a)X
+432 626(memory)N
+730(based)X
+943(representation,)X
+1448(over\257ow)X
+1763(pages)X
+1976(do)X
+2086(not)X
+432 714(pose)N
+628(any)X
+792(special)X
+1063(problems)X
+1409(because)X
+1712(we)X
+1854(can)X
+2014(chain)X
+432 802(over\257ow)N
+776(pages)X
+1017(to)X
+1137(primary)X
+1449(pages)X
+1690(using)X
+1921(memory)X
+432 890(pointers.)N
+776(However,)X
+1137(mapping)X
+1463(these)X
+1674(over\257ow)X
+2005(pages)X
+432 978(into)N
+584(a)X
+648(disk)X
+809(\256le)X
+939(is)X
+1019(more)X
+1211(of)X
+1305(a)X
+1368(challenge,)X
+1723(since)X
+1915(we)X
+2036(need)X
+432 1066(to)N
+547(be)X
+675(able)X
+861(to)X
+975(address)X
+1268(both)X
+1462(bucket)X
+1728(pages,)X
+1983(whose)X
+432 1154(numbers)N
+729(are)X
+849(growing)X
+1137(linearly,)X
+1422(and)X
+1558(some)X
+1747(indeterminate)X
+432 1242(number)N
+715(of)X
+820(over\257ow)X
+1143(pages)X
+1364(without)X
+1646(reorganizing)X
+2090(the)X
+432 1330(\256le.)N
+604 1444(One)N
+789(simple)X
+1053(solution)X
+1361(would)X
+1612(be)X
+1739(to)X
+1852(allocate)X
+2152(a)X
+432 1532(separate)N
+737(\256le)X
+880(for)X
+1015(over\257ow)X
+1341(pages.)X
+1604(The)X
+1769(disadvantage)X
+432 1620(with)N
+605(such)X
+783(a)X
+850(technique)X
+1193(is)X
+1276(that)X
+1426(it)X
+1500(requires)X
+1789(an)X
+1895(extra)X
+2086(\256le)X
+432 1708(descriptor,)N
+794(an)X
+891(extra)X
+1073(system)X
+1316(call)X
+1453(on)X
+1554(open)X
+1731(and)X
+1867(close,)X
+2072(and)X
+432 1796(logically)N
+739(associating)X
+1122(two)X
+1269(independent)X
+1687(\256les.)X
+1886(For)X
+2023(these)X
+432 1884(reasons,)N
+728(we)X
+857(wanted)X
+1123(to)X
+1219(map)X
+1391(both)X
+1567(primary)X
+1855(pages)X
+2072(and)X
+432 1972(over\257ow)N
+737(pages)X
+940(into)X
+1084(the)X
+1202(same)X
+1387(\256le)X
+1509(space.)X
+604 2086(The)N
+799(buddy-in-waiting)X
+1425(algorithm)X
+1806(provides)X
+2152(a)X
+432 2174(mechanism)N
+851(to)X
+966(support)X
+1259(multiple)X
+1578(pages)X
+1814(per)X
+1970(logical)X
+432 2262(bucket)N
+685(while)X
+902(retaining)X
+1226(the)X
+1362(simple)X
+1613(split)X
+1788(sequence)X
+2121(of)X
+432 2350(linear)N
+681(hashing.)X
+1015(Over\257ow)X
+1383(pages)X
+1631(are)X
+1795(preallocated)X
+432 2438(between)N
+781(generations)X
+1232(of)X
+1379(primary)X
+1713(pages.)X
+1996(These)X
+432 2526(over\257ow)N
+759(pages)X
+984(are)X
+1125(used)X
+1314(by)X
+1436(any)X
+1594(bucket)X
+1850(containing)X
+432 2614(more)N
+646(keys)X
+842(than)X
+1029(\256t)X
+1144(on)X
+1273(the)X
+1420(primary)X
+1723(page)X
+1924(and)X
+2089(are)X
+432 2702(reclaimed,)N
+808(if)X
+896(possible,)X
+1217(when)X
+1430(the)X
+1567(bucket)X
+1819(later)X
+2000(splits.)X
+432 2790(Figure)N
+687(3)X
+773(depicts)X
+1045(the)X
+1188(layout)X
+1433(of)X
+1545(primary)X
+1844(pages)X
+2072(and)X
+432 2878(over\257ow)N
+752(pages)X
+970(within)X
+1209(the)X
+1342(same)X
+1542(\256le.)X
+1699(Over\257ow)X
+2036(page)X
+432 2966(use)N
+586(information)X
+1011(is)X
+1111(recorded)X
+1440(in)X
+1548(bitmaps)X
+1847(which)X
+2089(are)X
+432 3054(themselves)N
+819(stored)X
+1046(on)X
+1157(over\257ow)X
+1472(pages.)X
+1725(The)X
+1880(addresses)X
+432 3142(of)N
+520(the)X
+639(bitmap)X
+882(pages)X
+1086(and)X
+1223(the)X
+1342(number)X
+1608(of)X
+1695(pages)X
+1898(allocated)X
+432 3230(at)N
+515(each)X
+688(split)X
+850(point)X
+1039(are)X
+1163(stored)X
+1384(in)X
+1470(the)X
+1592(\256le)X
+1718(header.)X
+1997(Using)X
+432 3318(this)N
+577(information,)X
+1005(both)X
+1177(over\257ow)X
+1492(addresses)X
+1829(and)X
+1974(bucket)X
+432 3406(addresses)N
+764(can)X
+900(be)X
+999(mapped)X
+1276(to)X
+1361(disk)X
+1517(addresses)X
+1848(by)X
+1951(the)X
+2072(fol-)X
+432 3494(lowing)N
+674(calculation:)X
+0 f
+8 s
+432 3793(int)N
+736(bucket;)X
+1192(/*)X
+1306(bucket)X
+1572(address)X
+1876(*/)X
+432 3881(u_short)N
+736(oaddr;)X
+1192(/*)X
+1306(OVERFLOW)X
+1648(address)X
+1952(*/)X
+432 3969(int)N
+736 -0.4125(nhdr_pages;)AX
+1192(/*)X
+1306(npages)X
+1572(in)X
+1686 -112.4062(\256le)AX
+1838(header)X
+2104(*/)X
+432 4057(int)N
+736 -0.4125(spares[32];)AX
+1192(/*)X
+1306(npages)X
+1572(at)X
+1686(each)X
+1876(split)X
+2104(*/)X
+432 4145(int)N
+736(log2\(\);)X
+1198(/*)X
+1312(ceil\(log)X
+1654(base)X
+1844(2\))X
+1958(*/)X
+432 4321(#DEFINE)N
+736 -0.3929(BUCKET_TO_PAGE\(bucket\))AX
+1610(\\)X
+584 4409(bucket)N
+850(+)X
+926 -0.4167(nhdr_pages)AX
+1344(+)X
+1420(\\)X
+584 4497 -0.3894(\(bucket?spares[logs2\(bucket)AN
+1648(+)X
+1724(1\)-1]:0\))X
+432 4673(#DEFINE)N
+736 -0.3947(OADDR_TO_PAGE\(oaddr\))AX
+1534(\\)X
+584 4761 -0.3984(BUCKET_TO_PAGE\(\(1)AN
+1268(<<)X
+1382 -0.4091(\(oaddr>>11\)\))AX
+1876(-)X
+1952(1\))X
+2066(+)X
+2142(\\)X
+584 4849(oaddr)N
+812(&)X
+888(0x7ff;)X
+1 f
+10 s
+604 5262(An)N
+728(over\257ow)X
+1039(page)X
+1217(is)X
+1295(addressed)X
+1637(by)X
+1742(its)X
+1842(split)X
+2004(point,)X
+432 5350(identifying)N
+858(the)X
+1031(generations)X
+1476(between)X
+1819(which)X
+2090(the)X
+432 5438(over\257ow)N
+740(page)X
+915(is)X
+991(allocated,)X
+1324(and)X
+1463(its)X
+1561(page)X
+1736(number,)X
+2023(iden-)X
+432 5526(tifying)N
+665(the)X
+783(particular)X
+1111(page)X
+1283(within)X
+1507(the)X
+1625(split)X
+1782(point.)X
+1986(In)X
+2073(this)X
+432 5614(implementation,)N
+983(offsets)X
+1225(within)X
+1457(pages)X
+1668(are)X
+1795(16)X
+1903(bits)X
+2046(long)X
+432 5702(\(limiting)N
+732(the)X
+851(maximum)X
+1196(page)X
+1368(size)X
+1513(to)X
+1595(32K\),)X
+1800(so)X
+1891(we)X
+2005(select)X
+2418 538(an)N
+2535(over\257ow)X
+2860(page)X
+3052(addressing)X
+3435(algorithm)X
+3786(that)X
+3946(can)X
+4098(be)X
+2418 626(expressed)N
+2760(in)X
+2847(16)X
+2952(bits)X
+3091(and)X
+3231(which)X
+3451(allows)X
+3684(quick)X
+3886(retrieval.)X
+2418 714(The)N
+2568(top)X
+2695(\256ve)X
+2840(bits)X
+2980(indicate)X
+3258(the)X
+3380(split)X
+3541(point)X
+3729(and)X
+3869(the)X
+3991(lower)X
+2418 802(eleven)N
+2650(indicate)X
+2926(the)X
+3046(page)X
+3220(number)X
+3487(within)X
+3713(the)X
+3832(split)X
+3990(point.)X
+2418 890(Since)N
+2633(\256ve)X
+2789(bits)X
+2940(are)X
+3075(reserved)X
+3384(for)X
+3514(the)X
+3648(split)X
+3821(point,)X
+4041(\256les)X
+2418 978(may)N
+2578(split)X
+2737(32)X
+2839(times)X
+3034(yielding)X
+3318(a)X
+3376(maximum)X
+3721(\256le)X
+3844(size)X
+3990(of)X
+4078(2)X
+7 s
+946(32)Y
+10 s
+2418 1066(buckets)N
+2698(and)X
+2849(32)X
+2 f
+(*)S
+1 f
+2982(2)X
+7 s
+1034(11)Y
+10 s
+3113 1066(over\257ow)N
+3433(pages.)X
+3691(The)X
+3850(maximum)X
+2418 1154(page)N
+2597(size)X
+2749(is)X
+2829(2)X
+7 s
+1122(15)Y
+10 s
+1154(,)Y
+2971(yielding)X
+3259(a)X
+3321(maximum)X
+3671(\256le)X
+3799(size)X
+3950(greater)X
+2418 1242(than)N
+2601(131,000)X
+2906(GB)X
+3061(\(on)X
+3212(\256le)X
+3358(systems)X
+3655(supporting)X
+4041(\256les)X
+2418 1330(larger)N
+2626(than)X
+2784(4GB\).)X
+10 f
+2418 1418 -0.0930(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)AN
+1 Dt
+4014 2275 MXY
+0 133 Dl
+3881 2275 MXY
+0 133 Dl
+3748 2275 MXY
+0 133 Dl
+3083 2275 MXY
+0 133 Dl
+5 s
+1 f
+3523 2475(2/3)N
+3390(2/2)X
+3257(2/1)X
+2859(1/2)X
+2726(1/1)X
+5 Dt
+3814 1743 MXY
+0 133 Dl
+3282 1743 MXY
+0 133 Dl
+3017 1743 MXY
+0 133 Dl
+2884 1743 MXY
+0 133 Dl
+1 Dt
+3681 1743 MXY
+0 133 Dl
+133 0 Dl
+0 -133 Dl
+-133 0 Dl
+3548 MX
+0 133 Dl
+133 0 Dl
+0 -133 Dl
+-133 0 Dl
+3415 MX
+0 133 Dl
+133 0 Dl
+0 -133 Dl
+-133 0 Dl
+3282 MX
+0 133 Dl
+133 0 Dl
+0 -133 Dl
+-133 0 Dl
+3150 MX
+0 133 Dl
+132 0 Dl
+0 -133 Dl
+-132 0 Dl
+3017 MX
+0 133 Dl
+133 0 Dl
+0 -133 Dl
+-133 0 Dl
+2884 MX
+0 133 Dl
+133 0 Dl
+0 -133 Dl
+-133 0 Dl
+3 f
+8 s
+3017 2601(Over\257ow)N
+3285(Addresses)X
+3515 2833(Over\257ow)N
+3783(Pages)X
+2850(Buckets)X
+1 Di
+3349 2740 MXY
+ 3349 2740 lineto
+ 3482 2740 lineto
+ 3482 2873 lineto
+ 3349 2873 lineto
+ 3349 2740 lineto
+closepath 3 3349 2740 3482 2873 Dp
+2684 MX
+0 133 Dl
+133 0 Dl
+0 -133 Dl
+-133 0 Dl
+5 Dt
+4146 2275 MXY
+0 133 Dl
+3216 2275 MXY
+0 133 Dl
+2684 2275 MXY
+0 133 Dl
+2551 2275 MXY
+0 133 Dl
+1 f
+3798 1963(3)N
+3266 1980(2)N
+3001(1)X
+2868(0)X
+1 Dt
+2751 1743 MXY
+0 133 Dl
+133 0 Dl
+0 -133 Dl
+-133 0 Dl
+3548 2275 MXY
+-15 -22 Dl
+2 16 Dl
+-13 11 Dl
+26 -5 Dl
+-282 -117 Dl
+3432 2275 MXY
+-10 -25 Dl
+-2 16 Dl
+-15 8 Dl
+27 1 Dl
+-166 -117 Dl
+3282 2275 MXY
+12 -25 Dl
+-14 10 Dl
+-15 -6 Dl
+17 21 Dl
+-16 -117 Dl
+2884 2275 MXY
+26 7 Dl
+-12 -12 Dl
+3 -16 Dl
+-17 21 Dl
+382 -117 Dl
+2751 2275 MXY
+25 9 Dl
+-11 -12 Dl
+5 -17 Dl
+-19 20 Dl
+515 -117 Dl
+3 f
+3070 2152(Over\257ow)N
+3338(Pages)X
+3482 2275 MXY
+ 3482 2275 lineto
+ 3615 2275 lineto
+ 3615 2408 lineto
+ 3482 2408 lineto
+ 3482 2275 lineto
+closepath 3 3482 2275 3615 2408 Dp
+3349 MX
+ 3349 2275 lineto
+ 3482 2275 lineto
+ 3482 2408 lineto
+ 3349 2408 lineto
+ 3349 2275 lineto
+closepath 3 3349 2275 3482 2408 Dp
+3216 MX
+ 3216 2275 lineto
+ 3349 2275 lineto
+ 3349 2408 lineto
+ 3216 2408 lineto
+ 3216 2275 lineto
+closepath 3 3216 2275 3349 2408 Dp
+2817 MX
+ 2817 2275 lineto
+ 2950 2275 lineto
+ 2950 2408 lineto
+ 2817 2408 lineto
+ 2817 2275 lineto
+closepath 3 2817 2275 2950 2408 Dp
+2684 MX
+ 2684 2275 lineto
+ 2817 2275 lineto
+ 2817 2408 lineto
+ 2684 2408 lineto
+ 2684 2275 lineto
+closepath 3 2684 2275 2817 2408 Dp
+3615 MX
+0 133 Dl
+531 0 Dl
+0 -133 Dl
+-531 0 Dl
+2950 MX
+0 133 Dl
+266 0 Dl
+0 -133 Dl
+-266 0 Dl
+2551 MX
+0 133 Dl
+133 0 Dl
+0 -133 Dl
+-133 0 Dl
+3798 1726 MXY
+-21 -18 Dl
+6 16 Dl
+-10 13 Dl
+25 -11 Dl
+-599 -99 Dl
+3266 1726 MXY
+-1 -27 Dl
+-7 15 Dl
+-17 1 Dl
+25 11 Dl
+-67 -99 Dl
+3033 1726 MXY
+27 1 Dl
+-14 -8 Dl
+-1 -17 Dl
+-12 24 Dl
+166 -99 Dl
+2900 1726 MXY
+27 7 Dl
+-13 -11 Dl
+3 -17 Dl
+-17 21 Dl
+299 -99 Dl
+3058 1621(Split)N
+3203(Points)X
+2418 2275 MXY
+0 133 Dl
+133 0 Dl
+0 -133 Dl
+-133 0 Dl
+3 Dt
+-1 Ds
+3137(Figure)Y
+2619(3:)X
+1 f
+2691(Split)X
+2832(points)X
+3008(occur)X
+3168(between)X
+3399(generations)X
+3712(and)X
+3823(are)X
+3919(numbered)X
+2418 3225(from)N
+2560(0.)X
+2642(In)X
+2713(this)X
+2824(\256gure)X
+2991(there)X
+3136(are)X
+3231(two)X
+3345(over\257ow)X
+3590(pages)X
+3753(allocated)X
+4000(at)X
+4063(split)X
+2418 3313(point)N
+2566(1)X
+2614(and)X
+2722(three)X
+2865(allocated)X
+3111(at)X
+3173(split)X
+3300(point)X
+3448(2.)X
+10 s
+10 f
+2418 3489 -0.0930(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)AN
+3 f
+2949 3731(Buffer)N
+3192(Management)X
+1 f
+2590 3863(The)N
+2744(hash)X
+2920(table)X
+3105(is)X
+3187(stored)X
+3412(in)X
+3502(memory)X
+3797(as)X
+3892(a)X
+3956(logical)X
+2418 3951(array)N
+2633(of)X
+2749(bucket)X
+3012(pointers.)X
+3359(Physically,)X
+3761(the)X
+3907(array)X
+4121(is)X
+2418 4039(arranged)N
+2728(in)X
+2818(segments)X
+3144(of)X
+3239(256)X
+3387(pointers.)X
+3713(Initially,)X
+4013(there)X
+2418 4127(is)N
+2530(space)X
+2767(to)X
+2887(allocate)X
+3195(256)X
+3373(segments.)X
+3769(Reallocation)X
+2418 4215(occurs)N
+2651(when)X
+2847(the)X
+2967(number)X
+3234(of)X
+3323(buckets)X
+3590(exceeds)X
+3867(32K)X
+4027(\(256)X
+2418 4303(*)N
+2508(256\).)X
+2745(Primary)X
+3053(pages)X
+3286(may)X
+3473(be)X
+3598(accessed)X
+3929(directly)X
+2418 4391(through)N
+2711(the)X
+2853(array)X
+3062(by)X
+3185(bucket)X
+3442(number)X
+3730(and)X
+3889(over\257ow)X
+2418 4479(pages)N
+2628(are)X
+2754 0.4028(referenced)AX
+3122(logically)X
+3429(by)X
+3536(their)X
+3710(over\257ow)X
+4022(page)X
+2418 4567(address.)N
+2726(For)X
+2864(small)X
+3063(hash)X
+3236(tables,)X
+3469(it)X
+3539(is)X
+3618(desirable)X
+3934(to)X
+4022(keep)X
+2418 4655(all)N
+2525(pages)X
+2735(in)X
+2823(main)X
+3009(memory)X
+3302(while)X
+3506(on)X
+3612(larger)X
+3826(tables,)X
+4059(this)X
+2418 4743(is)N
+2523(probably)X
+2860(impossible.)X
+3298(To)X
+3438(satisfy)X
+3698(both)X
+3891(of)X
+4009(these)X
+2418 4831(requirements,)N
+2900(the)X
+3041(package)X
+3348(includes)X
+3658(buffer)X
+3897(manage-)X
+2418 4919(ment)N
+2598(with)X
+2760(LRU)X
+2940(\(least)X
+3134(recently)X
+3413(used\))X
+3607(replacement.)X
+2590 5033(By)N
+2730(default,)X
+3020(the)X
+3165(package)X
+3475(allocates)X
+3802(up)X
+3928(to)X
+4036(64K)X
+2418 5121(bytes)N
+2616(of)X
+2712(buffered)X
+3014(pages.)X
+3246(All)X
+3377(pages)X
+3589(in)X
+3680(the)X
+3807(buffer)X
+4032(pool)X
+2418 5209(are)N
+2542(linked)X
+2766(in)X
+2852(LRU)X
+3036(order)X
+3230(to)X
+3316(facilitate)X
+3621(fast)X
+3761(replacement.)X
+2418 5297(Whereas)N
+2724(ef\256cient)X
+3011(access)X
+3241(to)X
+3327(primary)X
+3605(pages)X
+3812(is)X
+3889(provided)X
+2418 5385(by)N
+2521(the)X
+2642(bucket)X
+2879(array,)X
+3087(ef\256cient)X
+3372(access)X
+3600(to)X
+3684(over\257ow)X
+3991(pages)X
+2418 5473(is)N
+2501(provided)X
+2816(by)X
+2926(linking)X
+3182(over\257ow)X
+3497(page)X
+3679(buffers)X
+3936(to)X
+4027(their)X
+2418 5561(predecessor)N
+2827(page)X
+3008(\(either)X
+3247(the)X
+3374(primary)X
+3657(page)X
+3838(or)X
+3933(another)X
+2418 5649(over\257ow)N
+2742(page\).)X
+3000(This)X
+3181(means)X
+3425(that)X
+3584(an)X
+3699(over\257ow)X
+4022(page)X
+3 f
+432 5960(6)N
+2970(USENIX)X
+9 f
+3292(-)X
+3 f
+3356(Winter)X
+3621('91)X
+9 f
+3748(-)X
+3 f
+3812(Dallas,)X
+4065(TX)X
+
+7 p
+%%Page: 7 7
+0(Courier)xf 0 f
+10 s 10 xH 0 xS 0 f
+3 f
+720 258(Seltzer)N
+977(&)X
+1064(Yigit)X
+3278(A)X
+3356(New)X
+3528(Hashing)X
+3831(Package)X
+4136(for)X
+4259(UNIX)X
+1 f
+720 538(cannot)N
+955(be)X
+1052(present)X
+1305(in)X
+1388(the)X
+1507(buffer)X
+1724(pool)X
+1886(if)X
+1955(its)X
+2050(primary)X
+2324(page)X
+720 626(is)N
+804(not)X
+937(present.)X
+1240(This)X
+1413(does)X
+1591(not)X
+1724(impact)X
+1972(performance)X
+2409(or)X
+720 714(functionality,)N
+1209(because)X
+1524(an)X
+1660(over\257ow)X
+2005(page)X
+2217(will)X
+2400(be)X
+720 802(accessed)N
+1048(only)X
+1236(after)X
+1430(its)X
+1550(predecessor)X
+1975(page)X
+2172(has)X
+2324(been)X
+720 890(accessed.)N
+1068(Figure)X
+1303(4)X
+1369(depicts)X
+1622(the)X
+1746(data)X
+1905(structures)X
+2242(used)X
+2414(to)X
+720 978(manage)N
+990(the)X
+1108(buffer)X
+1325(pool.)X
+892 1092(The)N
+1040(in-memory)X
+1419(bucket)X
+1656(array)X
+1845(contains)X
+2134(pointers)X
+2414(to)X
+720 1180(buffer)N
+975(header)X
+1248(structures)X
+1617(which)X
+1870(represent)X
+2222(primary)X
+720 1268(pages.)N
+968(Buffer)X
+1203(headers)X
+1474(contain)X
+1735(modi\256ed)X
+2043(bits,)X
+2202(the)X
+2324(page)X
+720 1356(address)N
+995(of)X
+1096(the)X
+1228(buffer,)X
+1479(a)X
+1548(pointer)X
+1808(to)X
+1903(the)X
+2034(actual)X
+2259(buffer,)X
+720 1444(and)N
+875(a)X
+950(pointer)X
+1216(to)X
+1317(the)X
+1454(buffer)X
+1690(header)X
+1944(for)X
+2077(an)X
+2191(over\257ow)X
+720 1532(page)N
+901(if)X
+979(it)X
+1052(exists,)X
+1283(in)X
+1374(addition)X
+1665(to)X
+1756(the)X
+1883(LRU)X
+2072(links.)X
+2296(If)X
+2378(the)X
+720 1620(buffer)N
+950(corresponding)X
+1442(to)X
+1537(a)X
+1606(particular)X
+1947(bucket)X
+2194(is)X
+2280(not)X
+2414(in)X
+720 1708(memory,)N
+1048(its)X
+1164(pointer)X
+1432(is)X
+1526(NULL.)X
+1801(In)X
+1909(effect,)X
+2154(pages)X
+2377(are)X
+720 1796(linked)N
+950(in)X
+1042(three)X
+1233(ways.)X
+1468(Using)X
+1689(the)X
+1817(buffer)X
+2043(headers,)X
+2338(they)X
+720 1884(are)N
+851(linked)X
+1083(physically)X
+1444(through)X
+1725(the)X
+1854(LRU)X
+2045(links)X
+2231(and)X
+2378(the)X
+720 1972(over\257ow)N
+1036(links.)X
+1241(Using)X
+1462(the)X
+1590(pages)X
+1803(themselves,)X
+2209(they)X
+2377(are)X
+720 2060(linked)N
+943(logically)X
+1246(through)X
+1518(the)X
+1639(over\257ow)X
+1946(addresses)X
+2276(on)X
+2378(the)X
+720 2148(page.)N
+948(Since)X
+1162(over\257ow)X
+1482(pages)X
+1700(are)X
+1834(accessed)X
+2151(only)X
+2328(after)X
+720 2236(their)N
+904(predecessor)X
+1321(pages,)X
+1560(they)X
+1734(are)X
+1869(removed)X
+2186(from)X
+2378(the)X
+720 2324(buffer)N
+937(pool)X
+1099(when)X
+1293(their)X
+1460(primary)X
+1734(is)X
+1807(removed.)X
+10 f
+720 2412 -0.0930(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)AN
+1 Dt
+2309 3177 MXY
+24 15 Dl
+-8 -15 Dl
+8 -15 Dl
+-24 15 Dl
+52 0 Dl
+789 3160 MXY
+-35 0 Dl
+0 -156 Dl
+1607 0 Dl
+0 173 Dl
+789 3091 MXY
+-24 -15 Dl
+9 15 Dl
+-9 15 Dl
+24 -15 Dl
+-69 0 Dl
+2309 3125 MXY
+104 0 Dl
+0 -155 Dl
+-1693 0 Dl
+0 121 Dl
+927 3160 MXY
+24 15 Dl
+-9 -15 Dl
+9 -15 Dl
+-24 15 Dl
+553 0 Dl
+1618 3177 MXY
+8 27 Dl
+4 -17 Dl
+16 -6 Dl
+-28 -4 Dl
+138 121 Dl
+1895 3315 MXY
+28 3 Dl
+-15 -9 Dl
+1 -18 Dl
+-14 24 Dl
+276 -138 Dl
+3108 MY
+-28 -3 Dl
+15 10 Dl
+-1 17 Dl
+14 -24 Dl
+-276 138 Dl
+1756 3229 MXY
+-8 -27 Dl
+-3 17 Dl
+-16 6 Dl
+27 4 Dl
+-138 -121 Dl
+1480 MX
+-24 -15 Dl
+9 15 Dl
+-9 15 Dl
+24 -15 Dl
+-553 0 Dl
+3 f
+5 s
+1083 3073(LRU)N
+1178(chain)X
+4 Ds
+1402 3851 MXY
+ 1402 3851 lineto
+ 1471 3851 lineto
+ 1471 3920 lineto
+ 1402 3920 lineto
+ 1402 3851 lineto
+closepath 19 1402 3851 1471 3920 Dp
+1445 3747(Over\257ow)N
+1613(Address)X
+1549 3609 MXY
+0 69 Dl
+1756 MX
+-23 -15 Dl
+8 15 Dl
+-8 15 Dl
+23 -15 Dl
+-207 0 Dl
+-1 Ds
+3 Dt
+1756 3419 MXY
+-6 -28 Dl
+-4 17 Dl
+-17 5 Dl
+27 6 Dl
+-138 -138 Dl
+2240 3471 MXY
+15 -24 Dl
+-15 9 Dl
+-15 -9 Dl
+15 24 Dl
+0 -138 Dl
+1826 3609 MXY
+15 -24 Dl
+-15 9 Dl
+-16 -9 Dl
+16 24 Dl
+0 -138 Dl
+1549 MX
+15 -24 Dl
+-15 9 Dl
+-15 -9 Dl
+15 24 Dl
+0 -138 Dl
+858 3471 MXY
+15 -24 Dl
+-15 9 Dl
+-15 -9 Dl
+15 24 Dl
+0 -138 Dl
+2240 3056 MXY
+15 -24 Dl
+-15 9 Dl
+-15 -9 Dl
+15 24 Dl
+0 -138 Dl
+1549 3056 MXY
+15 -24 Dl
+-15 9 Dl
+-15 -9 Dl
+15 24 Dl
+0 -138 Dl
+858 3056 MXY
+15 -24 Dl
+-15 9 Dl
+-15 -9 Dl
+15 24 Dl
+0 -138 Dl
+1 Dt
+2171 3471 MXY
+ 2171 3471 lineto
+ 2448 3471 lineto
+ 2448 3609 lineto
+ 2171 3609 lineto
+ 2171 3471 lineto
+closepath 19 2171 3471 2448 3609 Dp
+1756 3609 MXY
+ 1756 3609 lineto
+ 2033 3609 lineto
+ 2033 3747 lineto
+ 1756 3747 lineto
+ 1756 3609 lineto
+closepath 3 1756 3609 2033 3747 Dp
+1480 3471 MXY
+ 1480 3471 lineto
+ 1756 3471 lineto
+ 1756 3609 lineto
+ 1480 3609 lineto
+ 1480 3471 lineto
+closepath 19 1480 3471 1756 3609 Dp
+789 MX
+ 789 3471 lineto
+ 1065 3471 lineto
+ 1065 3609 lineto
+ 789 3609 lineto
+ 789 3471 lineto
+closepath 19 789 3471 1065 3609 Dp
+962 3903(Buffer)N
+1083(Header)X
+849 3851 MXY
+ 849 3851 lineto
+ 918 3851 lineto
+ 918 3920 lineto
+ 849 3920 lineto
+ 849 3851 lineto
+closepath 14 849 3851 918 3920 Dp
+1756 3194 MXY
+ 1756 3194 lineto
+ 1895 3194 lineto
+ 1895 3471 lineto
+ 1756 3471 lineto
+ 1756 3194 lineto
+closepath 14 1756 3194 1895 3471 Dp
+2171 3056 MXY
+ 2171 3056 lineto
+ 2309 3056 lineto
+ 2309 3333 lineto
+ 2171 3333 lineto
+ 2171 3056 lineto
+closepath 14 2171 3056 2309 3333 Dp
+1480 MX
+ 1480 3056 lineto
+ 1618 3056 lineto
+ 1618 3333 lineto
+ 1480 3333 lineto
+ 1480 3056 lineto
+closepath 14 1480 3056 1618 3333 Dp
+789 MX
+ 789 3056 lineto
+ 927 3056 lineto
+ 927 3333 lineto
+ 789 3333 lineto
+ 789 3056 lineto
+closepath 14 789 3056 927 3333 Dp
+2780 MY
+0 138 Dl
+138 0 Dl
+0 -138 Dl
+-138 0 Dl
+927 MX
+0 138 Dl
+138 0 Dl
+0 -138 Dl
+-138 0 Dl
+1065 MX
+0 138 Dl
+138 0 Dl
+0 -138 Dl
+-138 0 Dl
+1203 MX
+0 138 Dl
+139 0 Dl
+0 -138 Dl
+-139 0 Dl
+1342 MX
+0 138 Dl
+138 0 Dl
+0 -138 Dl
+-138 0 Dl
+1480 MX
+0 138 Dl
+138 0 Dl
+0 -138 Dl
+-138 0 Dl
+1618 MX
+0 138 Dl
+138 0 Dl
+0 -138 Dl
+-138 0 Dl
+1756 MX
+0 138 Dl
+139 0 Dl
+0 -138 Dl
+-139 0 Dl
+1895 MX
+0 138 Dl
+138 0 Dl
+0 -138 Dl
+-138 0 Dl
+2033 MX
+0 138 Dl
+138 0 Dl
+0 -138 Dl
+-138 0 Dl
+2171 MX
+0 138 Dl
+138 0 Dl
+0 -138 Dl
+-138 0 Dl
+2309 MX
+0 138 Dl
+139 0 Dl
+0 -138 Dl
+-139 0 Dl
+13 s
+1048 2720(In)N
+1173(Memory)X
+1580(Bucket)X
+1918(Array)X
+867 3584(B0)N
+1558(B5)X
+2223(B10)X
+1788 3722(O1/1)N
+5 s
+1515 3903(Primay)N
+1651(Buffer)X
+4 Ds
+1990 3851 MXY
+ 1990 3851 lineto
+ 2059 3851 lineto
+ 2059 3920 lineto
+ 1990 3920 lineto
+ 1990 3851 lineto
+closepath 3 1990 3851 2059 3920 Dp
+2102 3903(Over\257ow)N
+2270(Buffer)X
+3 Dt
+-1 Ds
+8 s
+720 4184(Figure)N
+922(4:)X
+1 f
+996(Three)X
+1164(primary)X
+1386(pages)X
+1551(\(B0,)X
+1683(B5,)X
+1794(B10\))X
+1942(are)X
+2039(accessed)X
+2281(directly)X
+720 4272(from)N
+862(the)X
+958(bucket)X
+1146(array.)X
+1326(The)X
+1443(one)X
+1553(over\257ow)X
+1798(page)X
+1935(\(O1/1\))X
+2122(is)X
+2182(linked)X
+2359(phy-)X
+720 4360(sically)N
+915(from)X
+1067(its)X
+1155(primary)X
+1384(page's)X
+1577(buffer)X
+1759(header)X
+1955(as)X
+2035(well)X
+2172(as)X
+2252(logically)X
+720 4448(from)N
+860(its)X
+937(predecessor)X
+1253(page)X
+1389(buffer)X
+1560(\(B5\).)X
+10 s
+10 f
+720 4624 -0.0930(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)AN
+3 f
+1191 4954(Table)N
+1406(Parameterization)X
+1 f
+892 5086(When)N
+1107(a)X
+1166(hash)X
+1336(table)X
+1515(is)X
+1590(created,)X
+1865(the)X
+1985(bucket)X
+2221(size,)X
+2388(\256ll)X
+720 5174(factor,)N
+953(initial)X
+1164(number)X
+1434(of)X
+1526(elements,)X
+1856(number)X
+2125(of)X
+2216(bytes)X
+2409(of)X
+720 5262(main)N
+919(memory)X
+1225(used)X
+1411(for)X
+1543(caching,)X
+1851(and)X
+2005(a)X
+2079(user-de\256ned)X
+720 5350(hash)N
+892(function)X
+1184(may)X
+1347(be)X
+1448(speci\256ed.)X
+1797(The)X
+1946(bucket)X
+2184(size)X
+2333(\(and)X
+720 5438(page)N
+906(size)X
+1064(for)X
+1191(over\257ow)X
+1509(pages\))X
+1752(defaults)X
+2039(to)X
+2134(256)X
+2287(bytes.)X
+720 5526(For)N
+858(tables)X
+1072(with)X
+1241(large)X
+1429(data)X
+1590(items,)X
+1810(it)X
+1881(may)X
+2046(be)X
+2149(preferable)X
+720 5614(to)N
+803(increase)X
+1088(the)X
+1207(page)X
+1380(size,)X
+1545(and,)X
+1701(conversely,)X
+2089(applications)X
+720 5702(storing)N
+1002(small)X
+1235(items)X
+1467(exclusively)X
+1891(in)X
+2012(memory)X
+2338(may)X
+2706 538(bene\256t)N
+2966(from)X
+3164(a)X
+3242(smaller)X
+3520(bucket)X
+3776(size.)X
+3983(A)X
+4082(bucket)X
+4337(size)X
+2706 626(smaller)N
+2962(than)X
+3120(64)X
+3220(bytes)X
+3409(is)X
+3482(not)X
+3604(recommended.)X
+2878 740(The)N
+3031(\256ll)X
+3147(factor)X
+3363(indicates)X
+3676(a)X
+3740(desired)X
+4000(density)X
+4258(within)X
+2706 828(the)N
+2833(hash)X
+3009(table.)X
+3234(It)X
+3312(is)X
+3394(an)X
+3499(approximation)X
+3995(of)X
+4091(the)X
+4217(number)X
+2706 916(of)N
+2815(keys)X
+3004(allowed)X
+3300(to)X
+3404(accumulate)X
+3811(in)X
+3914(any)X
+4071(one)X
+4228(bucket,)X
+2706 1004(determining)N
+3119(when)X
+3319(the)X
+3442(hash)X
+3614(table)X
+3795(grows.)X
+4056(Its)X
+4161(default)X
+4409(is)X
+2706 1092(eight.)N
+2953(If)X
+3054(the)X
+3199(user)X
+3380(knows)X
+3636(the)X
+3781(average)X
+4079(size)X
+4251(of)X
+4364(the)X
+2706 1180(key/data)N
+3008(pairs)X
+3194(being)X
+3402(stored)X
+3627(in)X
+3718(the)X
+3845(table,)X
+4050(near)X
+4218(optimal)X
+2706 1268(bucket)N
+2943(sizes)X
+3122(and)X
+3261(\256ll)X
+3372(factors)X
+3614(may)X
+3775(be)X
+3874(selected)X
+4155(by)X
+4257(apply-)X
+2706 1356(ing)N
+2828(the)X
+2946(equation:)X
+0 f
+8 s
+2706 1655(\(1\))N
+2994 -0.3938(\(\(average_pair_length)AX
+3830(+)X
+3906(4\))X
+4020(*)X
+3032 1743(ffactor\))N
+3374(>=)X
+3488(bsize)X
+1 f
+10 s
+2706 2042(For)N
+2859(highly)X
+3104(time)X
+3287(critical)X
+3551(applications,)X
+3999(experimenting)X
+2706 2130(with)N
+2919(different)X
+3266(bucket)X
+3550(sizes)X
+3776(and)X
+3962(\256ll)X
+4120(factors)X
+4409(is)X
+2706 2218(encouraged.)N
+2878 2332(Figures)N
+3144(5a,b,)X
+3326(and)X
+3468(c)X
+3530(illustrate)X
+3836(the)X
+3960(effects)X
+4200(of)X
+4292(vary-)X
+2706 2420(ing)N
+2841(page)X
+3026(sizes)X
+3215(and)X
+3363(\256ll)X
+3483(factors)X
+3734(for)X
+3860(the)X
+3990(same)X
+4187(data)X
+4353(set.)X
+2706 2508(The)N
+2864(data)X
+3031(set)X
+3152(consisted)X
+3482(of)X
+3581(24474)X
+3813(keys)X
+3992(taken)X
+4198(from)X
+4386(an)X
+2706 2596(online)N
+2931(dictionary.)X
+3301(The)X
+3451(data)X
+3609(value)X
+3807(for)X
+3925(each)X
+4097(key)X
+4237(was)X
+4386(an)X
+2706 2684(ASCII)N
+2938(string)X
+3143(for)X
+3260(an)X
+3359(integer)X
+3605(from)X
+3784(1)X
+3847(to)X
+3931(24474)X
+4153(inclusive.)X
+2706 2772(The)N
+2867(test)X
+3013(run)X
+3155(consisted)X
+3488(of)X
+3590(creating)X
+3884(a)X
+3955(new)X
+4124(hash)X
+4306(table)X
+2706 2860(\(where)N
+2966(the)X
+3100(ultimate)X
+3398(size)X
+3559(of)X
+3662(the)X
+3796(table)X
+3987(was)X
+4147(known)X
+4400(in)X
+2706 2948(advance\),)N
+3054(entering)X
+3354(each)X
+3539(key/data)X
+3848(pair)X
+4010(into)X
+4171(the)X
+4306(table)X
+2706 3036(and)N
+2849(then)X
+3014(retrieving)X
+3353(each)X
+3528(key/data)X
+3827(pair)X
+3979(from)X
+4162(the)X
+4286(table.)X
+2706 3124(Each)N
+2898(of)X
+2996(the)X
+3125(graphs)X
+3369(shows)X
+3599(the)X
+3727(timings)X
+3996(resulting)X
+4306(from)X
+2706 3212(varying)N
+2973(the)X
+3093(pagesize)X
+3392(from)X
+3570(128)X
+3712(bytes)X
+3903(to)X
+3986(1M)X
+4118(and)X
+4255(the)X
+4374(\256ll)X
+2706 3300(factor)N
+2929(from)X
+3120(1)X
+3195(to)X
+3292(128.)X
+3486(For)X
+3631(each)X
+3813(run,)X
+3974(the)X
+4106(buffer)X
+4337(size)X
+2706 3388(was)N
+2874(set)X
+3006(at)X
+3106(1M.)X
+3299(The)X
+3466(tests)X
+3650(were)X
+3849(all)X
+3971(run)X
+4120(on)X
+4242(an)X
+4360(HP)X
+2706 3476(9000/370)N
+3077(\(33.3)X
+3312(Mhz)X
+3527(MC68030\),)X
+3966(with)X
+4176(16M)X
+4395(of)X
+2706 3564(memory,)N
+3042(64K)X
+3228(physically)X
+3605(addressed)X
+3970(cache,)X
+4222(and)X
+4386(an)X
+2706 3652(HP7959S)N
+3055(disk)X
+3231(drive,)X
+3459(running)X
+3751(4.3BSD-Reno)X
+4244(single-)X
+2706 3740(user.)N
+2878 3854(Both)N
+3066(system)X
+3321(time)X
+3496(\(Figure)X
+3764(5a\))X
+3899(and)X
+4047(elapsed)X
+4320(time)X
+2706 3942(\(Figure)N
+2966(5b\))X
+3097(show)X
+3290(that)X
+3434(for)X
+3552(all)X
+3655(bucket)X
+3892(sizes,)X
+4091(the)X
+4212(greatest)X
+2706 4030(performance)N
+3137(gains)X
+3329(are)X
+3451(made)X
+3648(by)X
+3751(increasing)X
+4104(the)X
+4225(\256ll)X
+4336(fac-)X
+2706 4118(tor)N
+2822(until)X
+2995(equation)X
+3298(1)X
+3365(is)X
+3445(satis\256ed.)X
+3774(The)X
+3925(user)X
+4085(time)X
+4253(shown)X
+2706 4206(in)N
+2791(Figure)X
+3023(5c)X
+3122(gives)X
+3314(a)X
+3373(more)X
+3561(detailed)X
+3838(picture)X
+4083(of)X
+4172(how)X
+4332(per-)X
+2706 4294(formance)N
+3054(varies.)X
+3330(The)X
+3499(smaller)X
+3778(bucket)X
+4035(sizes)X
+4234(require)X
+2706 4382(fewer)N
+2921(keys)X
+3099(per)X
+3233(page)X
+3416(to)X
+3509(satisfy)X
+3749(equation)X
+4056(1)X
+4127(and)X
+4274(there-)X
+2706 4470(fore)N
+2860(incur)X
+3049(fewer)X
+3257(collisions.)X
+3607(However,)X
+3946(when)X
+4144(the)X
+4265(buffer)X
+2706 4558(pool)N
+2884(size)X
+3045(is)X
+3134(\256xed,)X
+3349(smaller)X
+3620(pages)X
+3838(imply)X
+4059(more)X
+4259(pages.)X
+2706 4646(An)N
+2830(increased)X
+3160(number)X
+3430(of)X
+3522(pages)X
+3730(means)X
+3960(more)X
+2 f
+4150(malloc\(3\))X
+1 f
+2706 4734(calls)N
+2879(and)X
+3021(more)X
+3212(overhead)X
+3533(in)X
+3621(the)X
+3745(hash)X
+3918(package's)X
+4265(buffer)X
+2706 4822(manager)N
+3003(to)X
+3085(manage)X
+3355(the)X
+3473(additional)X
+3813(pages.)X
+2878 4936(The)N
+3028(tradeoff)X
+3308(works)X
+3529(out)X
+3655(most)X
+3834(favorably)X
+4166(when)X
+4364(the)X
+2706 5024(page)N
+2886(size)X
+3039(is)X
+3120(256)X
+3268(and)X
+3412(the)X
+3538(\256ll)X
+3654(factor)X
+3870(is)X
+3950(8.)X
+4057(Similar)X
+4319(con-)X
+2706 5112(clusions)N
+3009(were)X
+3207(obtained)X
+3524(if)X
+3614(the)X
+3753(test)X
+3905(was)X
+4071(run)X
+4218(without)X
+2706 5200(knowing)N
+3007(the)X
+3126(\256nal)X
+3289(table)X
+3466(size)X
+3612(in)X
+3695(advance.)X
+4020(If)X
+4095(the)X
+4214(\256le)X
+4337(was)X
+2706 5288(closed)N
+2942(and)X
+3088(written)X
+3345(to)X
+3437(disk,)X
+3620(the)X
+3748(conclusions)X
+4156(were)X
+4343(still)X
+2706 5376(the)N
+2832(same.)X
+3065(However,)X
+3408(rereading)X
+3740(the)X
+3865(\256le)X
+3994(from)X
+4177(disk)X
+4337(was)X
+2706 5464(slightly)N
+2983(faster)X
+3199(if)X
+3285(a)X
+3358(larger)X
+3583(bucket)X
+3834(size)X
+3996(and)X
+4149(\256ll)X
+4274(factor)X
+2706 5552(were)N
+2898(used)X
+3079(\(1K)X
+3238(bucket)X
+3486(size)X
+3645(and)X
+3795(32)X
+3909(\256ll)X
+4031(factor\).)X
+4320(This)X
+2706 5640(follows)N
+2987(intuitively)X
+3356(from)X
+3553(the)X
+3691(improved)X
+4038(ef\256ciency)X
+4395(of)X
+3 f
+720 5960(USENIX)N
+9 f
+1042(-)X
+3 f
+1106(Winter)X
+1371('91)X
+9 f
+1498(-)X
+3 f
+1562(Dallas,)X
+1815(TX)X
+4424(7)X
+
+8 p
+%%Page: 8 8
+0(Courier)xf 0 f
+10 s 10 xH 0 xS 0 f
+3 f
+432 258(A)N
+510(New)X
+682(Hashing)X
+985(Package)X
+1290(for)X
+1413(UNIX)X
+3663(Seltzer)X
+3920(&)X
+4007(Yigit)X
+1 f
+432 538(performing)N
+830(1K)X
+965(reads)X
+1172(from)X
+1365(the)X
+1500(disk)X
+1670(rather)X
+1894(than)X
+2068(256)X
+432 626(byte)N
+609(reads.)X
+857(In)X
+962(general,)X
+1257(performance)X
+1702(for)X
+1834(disk)X
+2005(based)X
+432 714(tables)N
+639(is)X
+712(best)X
+861(when)X
+1055(the)X
+1173(page)X
+1345(size)X
+1490(is)X
+1563(approximately)X
+2046(1K.)X
+10 f
+432 802 -0.0930(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)AN
+619 2380 MXY
+-12 24 Dl
+24 0 Dl
+-12 -24 Dl
+629 2437 MXY
+-12 24 Dl
+24 0 Dl
+-12 -24 Dl
+648 2504 MXY
+-12 25 Dl
+24 0 Dl
+-12 -25 Dl
+686 2515 MXY
+-12 24 Dl
+24 0 Dl
+-12 -24 Dl
+762 2516 MXY
+-12 24 Dl
+25 0 Dl
+-13 -24 Dl
+916 2515 MXY
+-13 24 Dl
+25 0 Dl
+-12 -24 Dl
+1222 2516 MXY
+-12 24 Dl
+24 0 Dl
+-12 -24 Dl
+1834 2515 MXY
+-12 24 Dl
+24 0 Dl
+-12 -24 Dl
+1 Dt
+619 2392 MXY
+10 57 Dl
+19 67 Dl
+38 11 Dl
+76 1 Dl
+154 -1 Dl
+306 1 Dl
+612 -1 Dl
+8 s
+1 f
+1628 2522(128)N
+3 Dt
+607 2245 MXY
+24 Dc
+617 2375 MXY
+23 Dc
+635 2442 MXY
+24 Dc
+674 2525 MXY
+23 Dc
+750 2529 MXY
+24 Dc
+904 2527 MXY
+23 Dc
+1210 MX
+23 Dc
+1822 2528 MXY
+23 Dc
+20 Ds
+1 Dt
+619 2245 MXY
+10 130 Dl
+19 67 Dl
+38 83 Dl
+76 4 Dl
+154 -2 Dl
+306 0 Dl
+612 1 Dl
+678 2482(256)N
+-1 Ds
+3 Dt
+619 2127 MXY
+0 24 Dl
+0 -12 Dl
+12 0 Dl
+-24 0 Dl
+629 2191 MXY
+0 25 Dl
+0 -12 Dl
+12 0 Dl
+-24 0 Dl
+648 2334 MXY
+0 24 Dl
+0 -12 Dl
+12 0 Dl
+-24 0 Dl
+686 2409 MXY
+0 25 Dl
+0 -13 Dl
+12 0 Dl
+-24 0 Dl
+762 2516 MXY
+0 25 Dl
+0 -12 Dl
+13 0 Dl
+-25 0 Dl
+916 2516 MXY
+0 24 Dl
+0 -12 Dl
+12 0 Dl
+-25 0 Dl
+1222 2515 MXY
+0 24 Dl
+0 -12 Dl
+12 0 Dl
+-24 0 Dl
+1834 2515 MXY
+0 24 Dl
+0 -12 Dl
+12 0 Dl
+-24 0 Dl
+5 Dt
+619 2139 MXY
+10 65 Dl
+19 142 Dl
+38 75 Dl
+76 108 Dl
+154 -1 Dl
+306 -1 Dl
+612 0 Dl
+694 2401(512)N
+3 Dt
+631 2064 MXY
+-24 24 Dl
+12 -12 Dl
+-12 -12 Dl
+24 24 Dl
+641 2077 MXY
+-24 25 Dl
+12 -12 Dl
+-12 -13 Dl
+24 25 Dl
+660 2132 MXY
+-24 24 Dl
+12 -12 Dl
+-12 -12 Dl
+24 24 Dl
+698 2292 MXY
+-24 24 Dl
+12 -12 Dl
+-12 -12 Dl
+24 24 Dl
+775 2382 MXY
+-25 24 Dl
+12 -12 Dl
+-12 -12 Dl
+25 24 Dl
+928 2516 MXY
+-25 24 Dl
+13 -12 Dl
+-13 -12 Dl
+25 24 Dl
+1234 2516 MXY
+-24 25 Dl
+12 -12 Dl
+-12 -13 Dl
+24 25 Dl
+1846 2516 MXY
+-24 24 Dl
+12 -12 Dl
+-12 -12 Dl
+24 24 Dl
+16 Ds
+1 Dt
+619 2076 MXY
+10 14 Dl
+19 54 Dl
+38 160 Dl
+76 90 Dl
+154 134 Dl
+306 1 Dl
+612 -1 Dl
+694 2257(1024)N
+-1 Ds
+3 Dt
+619 1877 MXY
+12 -24 Dl
+-24 0 Dl
+12 24 Dl
+629 1855 MXY
+12 -24 Dl
+-24 0 Dl
+12 24 Dl
+648 1838 MXY
+12 -24 Dl
+-24 0 Dl
+12 24 Dl
+686 1860 MXY
+12 -25 Dl
+-24 0 Dl
+12 25 Dl
+762 1923 MXY
+13 -24 Dl
+-25 0 Dl
+12 24 Dl
+916 2087 MXY
+12 -24 Dl
+-25 0 Dl
+13 24 Dl
+1222 2256 MXY
+12 -24 Dl
+-24 0 Dl
+12 24 Dl
+1834 2541 MXY
+12 -25 Dl
+-24 0 Dl
+12 25 Dl
+619 1865 MXY
+10 -22 Dl
+19 -17 Dl
+38 21 Dl
+76 64 Dl
+154 164 Dl
+306 169 Dl
+612 285 Dl
+1645 2427(4096)N
+619 1243 MXY
+0 24 Dl
+0 -12 Dl
+12 0 Dl
+-24 0 Dl
+629 1196 MXY
+0 24 Dl
+0 -12 Dl
+12 0 Dl
+-24 0 Dl
+648 1146 MXY
+0 24 Dl
+0 -12 Dl
+12 0 Dl
+-24 0 Dl
+686 1174 MXY
+0 25 Dl
+0 -13 Dl
+12 0 Dl
+-24 0 Dl
+762 1249 MXY
+0 24 Dl
+0 -12 Dl
+13 0 Dl
+-25 0 Dl
+916 1371 MXY
+0 24 Dl
+0 -12 Dl
+12 0 Dl
+-25 0 Dl
+1222 1680 MXY
+0 24 Dl
+0 -12 Dl
+12 0 Dl
+-24 0 Dl
+1834 1999 MXY
+0 24 Dl
+0 -12 Dl
+12 0 Dl
+-24 0 Dl
+619 1255 MXY
+10 -47 Dl
+19 -50 Dl
+38 28 Dl
+76 75 Dl
+154 122 Dl
+306 309 Dl
+612 319 Dl
+1741 1934(8192)N
+5 Dt
+609 2531 MXY
+1225 0 Dl
+609 MX
+0 -1553 Dl
+2531 MY
+0 16 Dl
+4 Ds
+1 Dt
+2531 MY
+0 -1553 Dl
+593 2625(0)N
+-1 Ds
+5 Dt
+916 2531 MXY
+0 16 Dl
+4 Ds
+1 Dt
+2531 MY
+0 -1553 Dl
+884 2625(32)N
+-1 Ds
+5 Dt
+1222 2531 MXY
+0 16 Dl
+4 Ds
+1 Dt
+2531 MY
+0 -1553 Dl
+1190 2625(64)N
+-1 Ds
+5 Dt
+1528 2531 MXY
+0 16 Dl
+4 Ds
+1 Dt
+2531 MY
+0 -1553 Dl
+1496 2625(96)N
+-1 Ds
+5 Dt
+1834 2531 MXY
+0 16 Dl
+4 Ds
+1 Dt
+2531 MY
+0 -1553 Dl
+1786 2625(128)N
+-1 Ds
+5 Dt
+609 2531 MXY
+-16 0 Dl
+4 Ds
+1 Dt
+609 MX
+1225 0 Dl
+545 2558(0)N
+-1 Ds
+5 Dt
+609 2013 MXY
+-16 0 Dl
+4 Ds
+1 Dt
+609 MX
+1225 0 Dl
+481 2040(100)N
+-1 Ds
+5 Dt
+609 1496 MXY
+-16 0 Dl
+4 Ds
+1 Dt
+609 MX
+1225 0 Dl
+481 1523(200)N
+-1 Ds
+5 Dt
+609 978 MXY
+-16 0 Dl
+4 Ds
+1 Dt
+609 MX
+1225 0 Dl
+481 1005(300)N
+1088 2724(Fill)N
+1194(Factor)X
+422 1611(S)N
+426 1667(e)N
+426 1724(c)N
+424 1780(o)N
+424 1837(n)N
+424 1893(d)N
+428 1949(s)N
+3 Dt
+-1 Ds
+3 f
+432 2882(Figure)N
+636(5a:)X
+1 f
+744(System)X
+956(Time)X
+1113(for)X
+1209(dictionary)X
+1490(data)X
+1618(set)X
+1711(with)X
+1847(1M)X
+1958(of)X
+2033(buffer)X
+432 2970(space)N
+594(and)X
+707(varying)X
+923(bucket)X
+1114(sizes)X
+1259(and)X
+1372(\256ll)X
+1465(factors.)X
+1675(Each)X
+1823(line)X
+1940(is)X
+2004(labeled)X
+432 3058(with)N
+562(its)X
+639(bucket)X
+825(size.)X
+10 s
+10 f
+432 3234 -0.0930(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)AN
+8 s
+1 f
+428 4381(s)N
+424 4325(d)N
+424 4269(n)N
+424 4212(o)N
+426 4156(c)N
+426 4099(e)N
+422 4043(S)N
+1116 5156(Fill)N
+1222(Factor)X
+506 3437(3200)N
+4 Ds
+1 Dt
+666 3410 MXY
+1168 0 Dl
+-1 Ds
+5 Dt
+666 MX
+-16 0 Dl
+506 3825(2400)N
+4 Ds
+1 Dt
+666 3799 MXY
+1168 0 Dl
+-1 Ds
+5 Dt
+666 MX
+-16 0 Dl
+506 4214(1600)N
+4 Ds
+1 Dt
+666 4186 MXY
+1168 0 Dl
+-1 Ds
+5 Dt
+666 MX
+-16 0 Dl
+538 4602(800)N
+4 Ds
+1 Dt
+666 4575 MXY
+1168 0 Dl
+-1 Ds
+5 Dt
+666 MX
+-16 0 Dl
+602 4990(0)N
+4 Ds
+1 Dt
+666 4963 MXY
+1168 0 Dl
+-1 Ds
+5 Dt
+666 MX
+-16 0 Dl
+1786 5057(128)N
+4 Ds
+1 Dt
+1834 4963 MXY
+0 -1553 Dl
+-1 Ds
+5 Dt
+4963 MY
+0 16 Dl
+1510 5057(96)N
+4 Ds
+1 Dt
+1542 4963 MXY
+0 -1553 Dl
+-1 Ds
+5 Dt
+4963 MY
+0 16 Dl
+1218 5057(64)N
+4 Ds
+1 Dt
+1250 4963 MXY
+0 -1553 Dl
+-1 Ds
+5 Dt
+4963 MY
+0 16 Dl
+926 5057(32)N
+4 Ds
+1 Dt
+958 4963 MXY
+0 -1553 Dl
+-1 Ds
+5 Dt
+4963 MY
+0 16 Dl
+650 5057(0)N
+4 Ds
+1 Dt
+666 4963 MXY
+0 -1553 Dl
+-1 Ds
+5 Dt
+4963 MY
+0 16 Dl
+4963 MY
+0 -1553 Dl
+4963 MY
+1168 0 Dl
+1741 4752(8192)N
+3 Dt
+675 3732 MXY
+9 -172 Dl
+18 -118 Dl
+37 128 Dl
+73 -121 Dl
+146 623 Dl
+292 497 Dl
+584 245 Dl
+4802 MY
+0 24 Dl
+0 -12 Dl
+12 0 Dl
+-24 0 Dl
+1250 4557 MXY
+0 25 Dl
+0 -13 Dl
+12 0 Dl
+-24 0 Dl
+958 4060 MXY
+0 24 Dl
+0 -12 Dl
+12 0 Dl
+-24 0 Dl
+812 3437 MXY
+0 24 Dl
+0 -12 Dl
+12 0 Dl
+-24 0 Dl
+739 3558 MXY
+0 24 Dl
+0 -12 Dl
+12 0 Dl
+-24 0 Dl
+702 3430 MXY
+0 25 Dl
+0 -13 Dl
+13 0 Dl
+-25 0 Dl
+684 3548 MXY
+0 24 Dl
+0 -12 Dl
+12 0 Dl
+-24 0 Dl
+675 3720 MXY
+0 24 Dl
+0 -12 Dl
+12 0 Dl
+-24 0 Dl
+1637 4912(4096)N
+675 4307 MXY
+9 -58 Dl
+18 30 Dl
+37 89 Dl
+73 144 Dl
+146 235 Dl
+292 122 Dl
+584 89 Dl
+4970 MY
+12 -24 Dl
+-24 0 Dl
+12 24 Dl
+1250 4881 MXY
+12 -24 Dl
+-24 0 Dl
+12 24 Dl
+958 4759 MXY
+12 -24 Dl
+-24 0 Dl
+12 24 Dl
+812 4524 MXY
+12 -24 Dl
+-24 0 Dl
+12 24 Dl
+739 4380 MXY
+12 -24 Dl
+-24 0 Dl
+12 24 Dl
+702 4291 MXY
+13 -24 Dl
+-25 0 Dl
+12 24 Dl
+684 4261 MXY
+12 -24 Dl
+-24 0 Dl
+12 24 Dl
+675 4319 MXY
+12 -24 Dl
+-24 0 Dl
+12 24 Dl
+734 4662(1024)N
+16 Ds
+1 Dt
+675 4352 MXY
+9 60 Dl
+18 134 Dl
+37 266 Dl
+73 117 Dl
+146 30 Dl
+292 0 Dl
+584 -1 Dl
+-1 Ds
+3 Dt
+1846 4946 MXY
+-24 24 Dl
+12 -12 Dl
+-12 -12 Dl
+24 24 Dl
+1262 4946 MXY
+-24 25 Dl
+12 -12 Dl
+-12 -13 Dl
+24 25 Dl
+970 4947 MXY
+-24 24 Dl
+12 -12 Dl
+-12 -12 Dl
+24 24 Dl
+824 4917 MXY
+-24 24 Dl
+12 -12 Dl
+-12 -12 Dl
+24 24 Dl
+751 4800 MXY
+-24 24 Dl
+12 -12 Dl
+-12 -12 Dl
+24 24 Dl
+715 4534 MXY
+-25 25 Dl
+12 -13 Dl
+-12 -12 Dl
+25 25 Dl
+696 4400 MXY
+-24 24 Dl
+12 -12 Dl
+-12 -12 Dl
+24 24 Dl
+687 4339 MXY
+-24 25 Dl
+12 -12 Dl
+-12 -13 Dl
+24 25 Dl
+718 4792(512)N
+5 Dt
+675 4422 MXY
+9 137 Dl
+18 278 Dl
+37 105 Dl
+73 18 Dl
+146 -1 Dl
+292 0 Dl
+584 -1 Dl
+3 Dt
+4946 MY
+0 24 Dl
+0 -12 Dl
+12 0 Dl
+-24 0 Dl
+1250 4946 MXY
+0 25 Dl
+0 -12 Dl
+12 0 Dl
+-24 0 Dl
+958 4947 MXY
+0 24 Dl
+0 -12 Dl
+12 0 Dl
+-24 0 Dl
+812 4948 MXY
+0 24 Dl
+0 -12 Dl
+12 0 Dl
+-24 0 Dl
+739 4930 MXY
+0 24 Dl
+0 -12 Dl
+12 0 Dl
+-24 0 Dl
+702 4824 MXY
+0 25 Dl
+0 -12 Dl
+13 0 Dl
+-25 0 Dl
+684 4547 MXY
+0 24 Dl
+0 -12 Dl
+12 0 Dl
+-24 0 Dl
+675 4410 MXY
+0 25 Dl
+0 -13 Dl
+12 0 Dl
+-24 0 Dl
+750 4921(256)N
+20 Ds
+1 Dt
+675 4597 MXY
+9 246 Dl
+18 106 Dl
+37 10 Dl
+73 0 Dl
+146 0 Dl
+292 0 Dl
+584 -1 Dl
+-1 Ds
+3 Dt
+1822 MX
+23 Dc
+1238 4959 MXY
+23 Dc
+946 MX
+23 Dc
+800 MX
+23 Dc
+727 MX
+23 Dc
+691 4949 MXY
+23 Dc
+672 4843 MXY
+24 Dc
+663 4597 MXY
+24 Dc
+1395 4961(128)N
+1 Dt
+675 4855 MXY
+9 93 Dl
+18 10 Dl
+37 1 Dl
+73 0 Dl
+146 -1 Dl
+292 0 Dl
+584 0 Dl
+3 Dt
+4946 MY
+-12 24 Dl
+24 0 Dl
+-12 -24 Dl
+1250 MX
+-12 24 Dl
+24 0 Dl
+-12 -24 Dl
+958 MX
+-12 24 Dl
+24 0 Dl
+-12 -24 Dl
+812 MX
+-12 25 Dl
+24 0 Dl
+-12 -25 Dl
+739 4947 MXY
+-12 24 Dl
+24 0 Dl
+-12 -24 Dl
+702 4946 MXY
+-12 24 Dl
+25 0 Dl
+-13 -24 Dl
+684 4936 MXY
+-12 24 Dl
+24 0 Dl
+-12 -24 Dl
+675 4843 MXY
+-12 24 Dl
+24 0 Dl
+-12 -24 Dl
+3 Dt
+-1 Ds
+3 f
+432 5314(Figure)N
+634(5b:)X
+1 f
+744(Elapsed)X
+967(Time)X
+1123(for)X
+1218(dictionary)X
+1498(data)X
+1625(set)X
+1717(with)X
+1851(1M)X
+1960(of)X
+2033(buffer)X
+432 5402(space)N
+593(and)X
+705(varying)X
+920(bucket)X
+1110(sizes)X
+1254(and)X
+1366(\256ll)X
+1457(factors.)X
+1681(Each)X
+1827(line)X
+1942(is)X
+2004(labeled)X
+432 5490(with)N
+562(its)X
+639(bucket)X
+825(size.)X
+10 s
+2590 538(If)N
+2677(an)X
+2785(approximation)X
+3284(of)X
+3383(the)X
+3513(number)X
+3790(of)X
+3889(elements)X
+2418 626(ultimately)N
+2773(to)X
+2866(be)X
+2973(stored)X
+3200(in)X
+3293(the)X
+3422(hash)X
+3599(table)X
+3785(is)X
+3868(known)X
+4116(at)X
+2418 714(the)N
+2564(time)X
+2754(of)X
+2869(creation,)X
+3196(the)X
+3342(hash)X
+3536(package)X
+3847(takes)X
+4059(this)X
+2418 802(number)N
+2688(as)X
+2779(a)X
+2839(parameter)X
+3185(and)X
+3325(uses)X
+3487(it)X
+3555(to)X
+3641(hash)X
+3812(entries)X
+4050(into)X
+2418 890(the)N
+2541(full)X
+2677(sized)X
+2867(table)X
+3048(rather)X
+3261(than)X
+3424(growing)X
+3716(the)X
+3838(table)X
+4018(from)X
+2418 978(a)N
+2477(single)X
+2691(bucket.)X
+2968(If)X
+3044(this)X
+3181(number)X
+3448(is)X
+3523(not)X
+3647(known,)X
+3907(the)X
+4027(hash)X
+2418 1066(table)N
+2632(starts)X
+2859(with)X
+3059(a)X
+3153(single)X
+3402(bucket)X
+3674(and)X
+3848(gracefully)X
+2418 1154(expands)N
+2707(as)X
+2800(elements)X
+3111(are)X
+3236(added,)X
+3474(although)X
+3780(a)X
+3842(slight)X
+4044(per-)X
+2418 1242(formance)N
+2747(degradation)X
+3151(may)X
+3313(be)X
+3413(noticed.)X
+3713(Figure)X
+3946(6)X
+4010(illus-)X
+2418 1330(trates)N
+2625(the)X
+2756(difference)X
+3116(in)X
+3211(performance)X
+3651(between)X
+3952(storing)X
+2418 1418(keys)N
+2588(in)X
+2673(a)X
+2732(\256le)X
+2857(when)X
+3054(the)X
+3174(ultimate)X
+3458(size)X
+3605(is)X
+3680(known)X
+3920(\(the)X
+4067(left)X
+2418 1506(bars)N
+2581(in)X
+2672(each)X
+2849(set\),)X
+3014(compared)X
+3360(to)X
+3450(building)X
+3744(the)X
+3870(\256le)X
+4000(when)X
+2418 1594(the)N
+2550(ultimate)X
+2846(size)X
+3005(is)X
+3091(unknown)X
+3422(\(the)X
+3580(right)X
+3764(bars)X
+3931(in)X
+4026(each)X
+2418 1682(set\).)N
+2609(Once)X
+2814(the)X
+2947(\256ll)X
+3069(factor)X
+3291(is)X
+3378(suf\256ciently)X
+3772(high)X
+3948(for)X
+4076(the)X
+2418 1770(page)N
+2596(size)X
+2747(\(8\),)X
+2887(growing)X
+3180(the)X
+3304(table)X
+3486(dynamically)X
+3908(does)X
+4081(lit-)X
+2418 1858(tle)N
+2518(to)X
+2600(degrade)X
+2875(performance.)X
+10 f
+2418 1946 -0.0930(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)AN
+9 s
+1 f
+2413 3238(s)N
+2409 3173(d)N
+2409 3108(n)N
+2409 3043(o)N
+2411 2979(c)N
+2411 2914(e)N
+2407 2849(S)N
+3143 4129(Fill)N
+3261(Factor)X
+2448 2152(15)N
+4 Ds
+1 Dt
+2557 2122 MXY
+1473 0 Dl
+-1 Ds
+5 Dt
+2557 MX
+-19 0 Dl
+2448 2747(10)N
+4 Ds
+1 Dt
+2557 2717 MXY
+1473 0 Dl
+-1 Ds
+5 Dt
+2557 MX
+-19 0 Dl
+2484 3343(5)N
+4 Ds
+1 Dt
+2557 3313 MXY
+1473 0 Dl
+-1 Ds
+5 Dt
+2557 MX
+-19 0 Dl
+2484 3938(0)N
+4 Ds
+1 Dt
+2557 3908 MXY
+1473 0 Dl
+-1 Ds
+5 Dt
+2557 MX
+-19 0 Dl
+3976 4015(128)N
+4 Ds
+1 Dt
+4030 3908 MXY
+0 -1786 Dl
+-1 Ds
+5 Dt
+3908 MY
+0 19 Dl
+3626 4015(96)N
+4 Ds
+1 Dt
+3662 3908 MXY
+0 -1786 Dl
+-1 Ds
+5 Dt
+3908 MY
+0 19 Dl
+3258 4015(64)N
+4 Ds
+1 Dt
+3294 3908 MXY
+0 -1786 Dl
+-1 Ds
+5 Dt
+3908 MY
+0 19 Dl
+2889 4015(32)N
+4 Ds
+1 Dt
+2925 3908 MXY
+0 -1786 Dl
+-1 Ds
+5 Dt
+3908 MY
+0 19 Dl
+2539 4015(0)N
+4 Ds
+1 Dt
+2557 3908 MXY
+0 -1786 Dl
+-1 Ds
+5 Dt
+3908 MY
+0 19 Dl
+3908 MY
+0 -1786 Dl
+3908 MY
+1473 0 Dl
+4053 2378(8192)N
+3 Dt
+2569 2277 MXY
+11 0 Dl
+23 48 Dl
+46 -167 Dl
+92 35 Dl
+184 12 Dl
+369 143 Dl
+736 0 Dl
+2334 MY
+0 28 Dl
+0 -14 Dl
+14 0 Dl
+-28 0 Dl
+3294 2334 MXY
+0 28 Dl
+0 -14 Dl
+13 0 Dl
+-27 0 Dl
+2925 2192 MXY
+0 27 Dl
+0 -14 Dl
+14 0 Dl
+-28 0 Dl
+2741 2180 MXY
+0 27 Dl
+0 -14 Dl
+14 0 Dl
+-28 0 Dl
+2649 2144 MXY
+0 28 Dl
+0 -14 Dl
+14 0 Dl
+-28 0 Dl
+2603 2311 MXY
+0 27 Dl
+0 -13 Dl
+14 0 Dl
+-28 0 Dl
+2580 2263 MXY
+0 28 Dl
+0 -14 Dl
+14 0 Dl
+-28 0 Dl
+2569 2263 MXY
+0 28 Dl
+0 -14 Dl
+13 0 Dl
+-27 0 Dl
+4053 2591(4096)N
+2569 2348 MXY
+11 -11 Dl
+23 -96 Dl
+46 71 Dl
+92 72 Dl
+184 226 Dl
+369 48 Dl
+736 -60 Dl
+2612 MY
+14 -28 Dl
+-28 0 Dl
+14 28 Dl
+3294 2672 MXY
+13 -28 Dl
+-27 0 Dl
+14 28 Dl
+2925 2624 MXY
+14 -28 Dl
+-28 0 Dl
+14 28 Dl
+2741 2398 MXY
+14 -28 Dl
+-28 0 Dl
+14 28 Dl
+2649 2326 MXY
+14 -27 Dl
+-28 0 Dl
+14 27 Dl
+2603 2255 MXY
+14 -28 Dl
+-28 0 Dl
+14 28 Dl
+2580 2350 MXY
+14 -27 Dl
+-28 0 Dl
+14 27 Dl
+2569 2362 MXY
+13 -28 Dl
+-27 0 Dl
+14 28 Dl
+4053 2681(1024)N
+16 Ds
+1 Dt
+2569 2300 MXY
+11 48 Dl
+23 96 Dl
+46 95 Dl
+92 274 Dl
+184 202 Dl
+369 -155 Dl
+736 -190 Dl
+-1 Ds
+3 Dt
+4044 2656 MXY
+-28 28 Dl
+14 -14 Dl
+-14 -14 Dl
+28 28 Dl
+3307 2846 MXY
+-27 28 Dl
+14 -14 Dl
+-14 -14 Dl
+27 28 Dl
+2939 3001 MXY
+-28 28 Dl
+14 -14 Dl
+-14 -14 Dl
+28 28 Dl
+2755 2799 MXY
+-28 28 Dl
+14 -14 Dl
+-14 -14 Dl
+28 28 Dl
+2663 2525 MXY
+-28 28 Dl
+14 -14 Dl
+-14 -14 Dl
+28 28 Dl
+2617 2430 MXY
+-28 28 Dl
+14 -14 Dl
+-14 -14 Dl
+28 28 Dl
+2594 2334 MXY
+-28 28 Dl
+14 -14 Dl
+-14 -14 Dl
+28 28 Dl
+2582 2287 MXY
+-27 27 Dl
+14 -14 Dl
+-14 -13 Dl
+27 27 Dl
+4053 2851(512)N
+5 Dt
+2569 2372 MXY
+11 -24 Dl
+23 405 Dl
+46 83 Dl
+92 227 Dl
+184 -72 Dl
+369 -119 Dl
+736 -107 Dl
+3 Dt
+2751 MY
+0 28 Dl
+0 -14 Dl
+14 0 Dl
+-28 0 Dl
+3294 2858 MXY
+0 28 Dl
+0 -14 Dl
+13 0 Dl
+-27 0 Dl
+2925 2977 MXY
+0 28 Dl
+0 -14 Dl
+14 0 Dl
+-28 0 Dl
+2741 3049 MXY
+0 27 Dl
+0 -13 Dl
+14 0 Dl
+-28 0 Dl
+2649 2823 MXY
+0 27 Dl
+0 -14 Dl
+14 0 Dl
+-28 0 Dl
+2603 2739 MXY
+0 28 Dl
+0 -14 Dl
+14 0 Dl
+-28 0 Dl
+2580 2334 MXY
+0 28 Dl
+0 -14 Dl
+14 0 Dl
+-28 0 Dl
+2569 2358 MXY
+0 28 Dl
+0 -14 Dl
+13 0 Dl
+-27 0 Dl
+4053 2795(256)N
+20 Ds
+1 Dt
+2569 2456 MXY
+11 285 Dl
+23 95 Dl
+46 251 Dl
+92 -60 Dl
+184 -84 Dl
+369 -107 Dl
+736 -71 Dl
+-1 Ds
+3 Dt
+4016 MX
+27 Dc
+3280 2836 MXY
+27 Dc
+2912 2943 MXY
+27 Dc
+2728 3027 MXY
+27 Dc
+2635 3087 MXY
+28 Dc
+2589 2836 MXY
+28 Dc
+2566 2741 MXY
+27 Dc
+2554 2456 MXY
+28 Dc
+4053 2741(128)N
+1 Dt
+2569 2729 MXY
+11 203 Dl
+23 131 Dl
+46 -60 Dl
+92 -119 Dl
+184 -60 Dl
+369 -83 Dl
+736 -12 Dl
+3 Dt
+2716 MY
+-14 27 Dl
+28 0 Dl
+-14 -27 Dl
+3294 2727 MXY
+-14 28 Dl
+27 0 Dl
+-13 -28 Dl
+2925 2811 MXY
+-14 27 Dl
+28 0 Dl
+-14 -27 Dl
+2741 2870 MXY
+-14 28 Dl
+28 0 Dl
+-14 -28 Dl
+2649 2989 MXY
+-14 28 Dl
+28 0 Dl
+-14 -28 Dl
+2603 3049 MXY
+-14 27 Dl
+28 0 Dl
+-14 -27 Dl
+2580 2918 MXY
+-14 28 Dl
+28 0 Dl
+-14 -28 Dl
+2569 2716 MXY
+-14 27 Dl
+27 0 Dl
+-13 -27 Dl
+3 Dt
+-1 Ds
+3 f
+8 s
+2418 4286(Figure)N
+2628(5c:)X
+1 f
+2738(User)X
+2887(Time)X
+3051(for)X
+3154(dictionary)X
+3442(data)X
+3577(set)X
+3677(with)X
+3820(1M)X
+3938(of)X
+4019(buffer)X
+2418 4374(space)N
+2579(and)X
+2691(varying)X
+2906(bucket)X
+3096(sizes)X
+3240(and)X
+3352(\256ll)X
+3443(factors.)X
+3667(Each)X
+3813(line)X
+3928(is)X
+3990(labeled)X
+2418 4462(with)N
+2548(its)X
+2625(bucket)X
+2811(size.)X
+10 s
+10 f
+2418 4638 -0.0930(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)AN
+1 f
+2590 4840(Since)N
+2796(no)X
+2904(known)X
+3150(hash)X
+3325(function)X
+3620(performs)X
+3938(equally)X
+2418 4928(well)N
+2589(on)X
+2702(all)X
+2815(possible)X
+3110(data,)X
+3297(the)X
+3428(user)X
+3595(may)X
+3766(\256nd)X
+3923(that)X
+4076(the)X
+2418 5016(built-in)N
+2678(hash)X
+2849(function)X
+3140(does)X
+3311(poorly)X
+3544(on)X
+3648(a)X
+3708(particular)X
+4040(data)X
+2418 5104(set.)N
+2548(In)X
+2636(this)X
+2771(case,)X
+2950(a)X
+3006(hash)X
+3173(function,)X
+3480(taking)X
+3700(two)X
+3840(arguments)X
+2418 5192(\(a)N
+2507(pointer)X
+2760(to)X
+2848(a)X
+2910(byte)X
+3074(string)X
+3282(and)X
+3424(a)X
+3486(length\))X
+3739(and)X
+3880(returning)X
+2418 5280(an)N
+2517(unsigned)X
+2829(long)X
+2993(to)X
+3077(be)X
+3175(used)X
+3344(as)X
+3433(the)X
+3553(hash)X
+3722(value,)X
+3938(may)X
+4098(be)X
+2418 5368(speci\256ed)N
+2731(at)X
+2817(hash)X
+2992(table)X
+3176(creation)X
+3463(time.)X
+3673(When)X
+3893(an)X
+3996(exist-)X
+2418 5456(ing)N
+2570(hash)X
+2767(table)X
+2973(is)X
+3076(opened)X
+3358(and)X
+3524(a)X
+3609(hash)X
+3805(function)X
+4121(is)X
+2418 5544(speci\256ed,)N
+2752(the)X
+2879(hash)X
+3054(package)X
+3346(will)X
+3498(try)X
+3615(to)X
+3705(determine)X
+4054(that)X
+2418 5632(the)N
+2546(hash)X
+2723(function)X
+3020(supplied)X
+3321(is)X
+3404(the)X
+3532(one)X
+3678(with)X
+3850(which)X
+4076(the)X
+2418 5720(table)N
+2630(was)X
+2811(created.)X
+3139(There)X
+3382(are)X
+3536(a)X
+3627(variety)X
+3905(of)X
+4027(hash)X
+3 f
+432 5960(8)N
+2970(USENIX)X
+9 f
+3292(-)X
+3 f
+3356(Winter)X
+3621('91)X
+9 f
+3748(-)X
+3 f
+3812(Dallas,)X
+4065(TX)X
+
+9 p
+%%Page: 9 9
+0(Courier)xf 0 f
+10 s 10 xH 0 xS 0 f
+3 f
+720 258(Seltzer)N
+977(&)X
+1064(Yigit)X
+3278(A)X
+3356(New)X
+3528(Hashing)X
+3831(Package)X
+4136(for)X
+4259(UNIX)X
+1 f
+720 538(functions)N
+1065(provided)X
+1397(with)X
+1586(the)X
+1731(package.)X
+2082(The)X
+2253(default)X
+720 626(function)N
+1014(for)X
+1135(the)X
+1260(package)X
+1551(is)X
+1631(the)X
+1755(one)X
+1897(which)X
+2119(offered)X
+2378(the)X
+720 714(best)N
+875(performance)X
+1308(in)X
+1396(terms)X
+1600(of)X
+1693(cycles)X
+1920(executed)X
+2232(per)X
+2360(call)X
+720 802(\(it)N
+827(did)X
+965(not)X
+1103(produce)X
+1398(the)X
+1531(fewest)X
+1776(collisions)X
+2117(although)X
+2432(it)X
+720 890(was)N
+866(within)X
+1091(a)X
+1148(small)X
+1341(percentage)X
+1710(of)X
+1797(the)X
+1915(function)X
+2202(that)X
+2342(pro-)X
+720 978(duced)N
+947(the)X
+1080(fewest)X
+1324(collisions\).)X
+1731(Again,)X
+1981(in)X
+2077(time)X
+2253(critical)X
+720 1066(applications,)N
+1152(users)X
+1342(are)X
+1466(encouraged)X
+1862(to)X
+1949(experiment)X
+2334(with)X
+720 1154(a)N
+783(variety)X
+1032(of)X
+1125(hash)X
+1298(functions)X
+1622(to)X
+1710(achieve)X
+1982(optimal)X
+2252(perfor-)X
+720 1242(mance.)N
+10 f
+720 1330 -0.0930(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)AN
+3 f
+7 s
+1038 2925(Full)N
+1149(size)X
+1251(table)X
+1384(\(left\))X
+1547 2718(Fill)N
+1643(Factor)X
+2268 2662(64)N
+1964(32)X
+1674(16)X
+1384(8)X
+1093(4)X
+4 Ds
+1 Dt
+900 2280 MXY
+1548 0 Dl
+900 1879 MXY
+1548 0 Dl
+900 1506 MXY
+1548 0 Dl
+1563 2902 MXY
+111 0 Dl
+-1 Ds
+900 MX
+110 0 Dl
+1425 2828(System)N
+983(User)X
+1895 2778 MXY
+ 1895 2778 lineto
+ 1950 2778 lineto
+ 1950 2833 lineto
+ 1895 2833 lineto
+ 1895 2778 lineto
+closepath 21 1895 2778 1950 2833 Dp
+1342 MX
+ 1342 2778 lineto
+ 1397 2778 lineto
+ 1397 2833 lineto
+ 1342 2833 lineto
+ 1342 2778 lineto
+closepath 14 1342 2778 1397 2833 Dp
+900 MX
+ 900 2778 lineto
+ 955 2778 lineto
+ 955 2833 lineto
+ 900 2833 lineto
+ 900 2778 lineto
+closepath 3 900 2778 955 2833 Dp
+5 Dt
+2283 2211 MXY
+96 0 Dl
+1992 MX
+97 0 Dl
+1702 MX
+97 0 Dl
+1411 2252 MXY
+97 0 Dl
+4 Ds
+1 Dt
+2283 2211 MXY
+ 2283 2211 lineto
+ 2379 2211 lineto
+ 2379 2252 lineto
+ 2283 2252 lineto
+ 2283 2211 lineto
+closepath 14 2283 2211 2379 2252 Dp
+1992 MX
+ 1992 2211 lineto
+ 2089 2211 lineto
+ 2089 2252 lineto
+ 1992 2252 lineto
+ 1992 2211 lineto
+closepath 14 1992 2211 2089 2252 Dp
+1702 MX
+ 1702 2211 lineto
+ 1799 2211 lineto
+ 1799 2252 lineto
+ 1702 2252 lineto
+ 1702 2211 lineto
+closepath 14 1702 2211 1799 2252 Dp
+1411 2252 MXY
+ 1411 2252 lineto
+ 1508 2252 lineto
+ 1508 2294 lineto
+ 1411 2294 lineto
+ 1411 2252 lineto
+closepath 14 1411 2252 1508 2294 Dp
+2283 MX
+ 2283 2252 lineto
+ 2379 2252 lineto
+ 2379 2612 lineto
+ 2283 2612 lineto
+ 2283 2252 lineto
+closepath 3 2283 2252 2379 2612 Dp
+1992 MX
+ 1992 2252 lineto
+ 2089 2252 lineto
+ 2089 2612 lineto
+ 1992 2612 lineto
+ 1992 2252 lineto
+closepath 3 1992 2252 2089 2612 Dp
+1702 MX
+ 1702 2252 lineto
+ 1799 2252 lineto
+ 1799 2612 lineto
+ 1702 2612 lineto
+ 1702 2252 lineto
+closepath 3 1702 2252 1799 2612 Dp
+1411 2294 MXY
+ 1411 2294 lineto
+ 1508 2294 lineto
+ 1508 2612 lineto
+ 1411 2612 lineto
+ 1411 2294 lineto
+closepath 3 1411 2294 1508 2612 Dp
+-1 Ds
+2158 2238 MXY
+ 2158 2238 lineto
+ 2255 2238 lineto
+ 2255 2252 lineto
+ 2158 2252 lineto
+ 2158 2238 lineto
+closepath 21 2158 2238 2255 2252 Dp
+1868 MX
+ 1868 2238 lineto
+ 1965 2238 lineto
+ 1965 2280 lineto
+ 1868 2280 lineto
+ 1868 2238 lineto
+closepath 21 1868 2238 1965 2280 Dp
+1577 MX
+ 1577 2238 lineto
+ 1674 2238 lineto
+ 1674 2308 lineto
+ 1577 2308 lineto
+ 1577 2238 lineto
+closepath 21 1577 2238 1674 2308 Dp
+1287 2308 MXY
+ 1287 2308 lineto
+ 1287 2280 lineto
+ 1384 2280 lineto
+ 1384 2308 lineto
+ 1287 2308 lineto
+closepath 21 1287 2280 1384 2308 Dp
+2158 2280 MXY
+ 2158 2280 lineto
+ 2158 2252 lineto
+ 2255 2252 lineto
+ 2255 2280 lineto
+ 2158 2280 lineto
+closepath 14 2158 2252 2255 2280 Dp
+1868 2308 MXY
+ 1868 2308 lineto
+ 1868 2280 lineto
+ 1965 2280 lineto
+ 1965 2308 lineto
+ 1868 2308 lineto
+closepath 14 1868 2280 1965 2308 Dp
+1577 2335 MXY
+ 1577 2335 lineto
+ 1577 2308 lineto
+ 1674 2308 lineto
+ 1674 2335 lineto
+ 1577 2335 lineto
+closepath 14 1577 2308 1674 2335 Dp
+1287 2363 MXY
+ 1287 2363 lineto
+ 1287 2308 lineto
+ 1384 2308 lineto
+ 1384 2363 lineto
+ 1287 2363 lineto
+closepath 14 1287 2308 1384 2363 Dp
+2158 2280 MXY
+ 2158 2280 lineto
+ 2255 2280 lineto
+ 2255 2612 lineto
+ 2158 2612 lineto
+ 2158 2280 lineto
+closepath 3 2158 2280 2255 2612 Dp
+1868 2308 MXY
+ 1868 2308 lineto
+ 1965 2308 lineto
+ 1965 2612 lineto
+ 1868 2612 lineto
+ 1868 2308 lineto
+closepath 3 1868 2308 1965 2612 Dp
+1577 2335 MXY
+ 1577 2335 lineto
+ 1674 2335 lineto
+ 1674 2612 lineto
+ 1577 2612 lineto
+ 1577 2335 lineto
+closepath 3 1577 2335 1674 2612 Dp
+1287 2363 MXY
+ 1287 2363 lineto
+ 1384 2363 lineto
+ 1384 2612 lineto
+ 1287 2612 lineto
+ 1287 2363 lineto
+closepath 3 1287 2363 1384 2612 Dp
+4 Ds
+1121 2066 MXY
+ 1121 2066 lineto
+ 1218 2066 lineto
+ 1224 2080 lineto
+ 1127 2080 lineto
+ 1121 2066 lineto
+closepath 21 1121 2066 1224 2080 Dp
+2080 MY
+ 1121 2080 lineto
+ 1218 2080 lineto
+ 1218 2273 lineto
+ 1121 2273 lineto
+ 1121 2080 lineto
+closepath 14 1121 2080 1218 2273 Dp
+2273 MY
+ 1121 2273 lineto
+ 1218 2273 lineto
+ 1218 2612 lineto
+ 1121 2612 lineto
+ 1121 2273 lineto
+closepath 3 1121 2273 1218 2612 Dp
+-1 Ds
+997 1589 MXY
+ 997 1589 lineto
+ 1093 1589 lineto
+ 1093 1644 lineto
+ 997 1644 lineto
+ 997 1589 lineto
+closepath 21 997 1589 1093 1644 Dp
+1644 MY
+ 997 1644 lineto
+ 1093 1644 lineto
+ 1093 2280 lineto
+ 997 2280 lineto
+ 997 1644 lineto
+closepath 14 997 1644 1093 2280 Dp
+2280 MY
+ 997 2280 lineto
+ 1093 2280 lineto
+ 1093 2612 lineto
+ 997 2612 lineto
+ 997 2280 lineto
+closepath 3 997 2280 1093 2612 Dp
+10 s
+719 2093(s)N
+712 2037(d)N
+712 1982(n)N
+714 1927(o)N
+716 1872(c)N
+716 1816(e)N
+712 1761(S)N
+804 2286(10)N
+804 1899(20)N
+804 1540(30)N
+3 Dt
+900 1506 MXY
+0 1106 Dl
+1548 0 Dl
+7 s
+1978 2828(Elapsed)N
+1701 2925(Dynamically)N
+2018(grown)X
+2184(table)X
+2317(\(right\))X
+3 Dt
+-1 Ds
+8 s
+720 3180(Figure)N
+934(6:)X
+1 f
+1020(The)X
+1152(total)X
+1299(regions)X
+1520(indicate)X
+1755(the)X
+1865(difference)X
+2154(between)X
+2398(the)X
+720 3268(elapsed)N
+931(time)X
+1065(and)X
+1177(the)X
+1275(sum)X
+1402(of)X
+1475(the)X
+1573(system)X
+1771(and)X
+1883(user)X
+2008(time.)X
+2173(The)X
+2291(left)X
+2395(bar)X
+720 3356(of)N
+798(each)X
+939(set)X
+1035(depicts)X
+1241(the)X
+1344(timing)X
+1537(of)X
+1615(the)X
+1718(test)X
+1831(run)X
+1940(when)X
+2102(the)X
+2204(number)X
+2423(of)X
+720 3444(entries)N
+910(is)X
+973(known)X
+1167(in)X
+1237(advance.)X
+1496(The)X
+1614(right)X
+1754(bars)X
+1879(depict)X
+2054(the)X
+2151(timing)X
+2338(when)X
+720 3532(the)N
+814(\256le)X
+912(is)X
+971(grown)X
+1150(from)X
+1290(a)X
+1334(single)X
+1503(bucket.)X
+10 s
+10 f
+720 3708 -0.0930(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)AN
+1 f
+892 3910(Since)N
+1131(this)X
+1307(hashing)X
+1617(package)X
+1942(provides)X
+2279(buffer)X
+720 3998(management,)N
+1188(the)X
+1323(amount)X
+1600(of)X
+1704(space)X
+1920(allocated)X
+2247(for)X
+2378(the)X
+720 4086(buffer)N
+948(pool)X
+1121(may)X
+1290(be)X
+1397(speci\256ed)X
+1713(by)X
+1824(the)X
+1953(user.)X
+2157(Using)X
+2378(the)X
+720 4174(same)N
+910(data)X
+1069(set)X
+1183(and)X
+1324(test)X
+1459(procedure)X
+1805(as)X
+1896(used)X
+2067(to)X
+2153(derive)X
+2378(the)X
+720 4262(graphs)N
+962(in)X
+1052(Figures)X
+1320(5a-c,)X
+1507(Figure)X
+1744(7)X
+1812(shows)X
+2039(the)X
+2164(impact)X
+2409(of)X
+720 4350(varying)N
+997(the)X
+1126(size)X
+1282(of)X
+1380(the)X
+1509(buffer)X
+1737(pool.)X
+1950(The)X
+2106(bucket)X
+2351(size)X
+720 4438(was)N
+873(set)X
+989(to)X
+1078(256)X
+1225(bytes)X
+1421(and)X
+1564(the)X
+1689(\256ll)X
+1804(factor)X
+2019(was)X
+2171(set)X
+2287(to)X
+2376(16.)X
+720 4526(The)N
+869(buffer)X
+1090(pool)X
+1256(size)X
+1404(was)X
+1552(varied)X
+1776(from)X
+1955(0)X
+2018(\(the)X
+2166(minimum)X
+720 4614(number)N
+986(of)X
+1074(pages)X
+1277(required)X
+1565(to)X
+1647(be)X
+1743(buffered\))X
+2063(to)X
+2145(1M.)X
+2316(With)X
+720 4702(1M)N
+854(of)X
+944(buffer)X
+1164(space,)X
+1386(the)X
+1507(package)X
+1794(performed)X
+2151(no)X
+2253(I/O)X
+2382(for)X
+720 4790(this)N
+871(data)X
+1040(set.)X
+1204(As)X
+1328(Figure)X
+1572(7)X
+1647(illustrates,)X
+2013(increasing)X
+2378(the)X
+720 4878(buffer)N
+944(pool)X
+1113(size)X
+1265(can)X
+1404(have)X
+1583(a)X
+1646(dramatic)X
+1954(affect)X
+2165(on)X
+2271(result-)X
+720 4966(ing)N
+842(performance.)X
+2 f
+8 s
+1269 4941(7)N
+1 f
+16 s
+720 5353 MXY
+864 0 Dl
+2 f
+8 s
+760 5408(7)N
+1 f
+9 s
+826 5433(Some)N
+1024(allocators)X
+1338(are)X
+1460(extremely)X
+1782(inef\256cient)X
+2107(at)X
+2192(allocating)X
+720 5513(memory.)N
+1029(If)X
+1110(you)X
+1251(\256nd)X
+1396(that)X
+1536(applications)X
+1916(are)X
+2036(running)X
+2292(out)X
+2416(of)X
+720 5593(memory)N
+1005(before)X
+1234(you)X
+1386(think)X
+1578(they)X
+1746(should,)X
+2000(try)X
+2124(varying)X
+2388(the)X
+720 5673(pagesize)N
+986(to)X
+1060(get)X
+1166(better)X
+1348(utilization)X
+1658(from)X
+1816(the)X
+1922(memory)X
+2180(allocator.)X
+10 s
+2830 1975 MXY
+0 -28 Dl
+28 0 Dl
+0 28 Dl
+-28 0 Dl
+2853 2004 MXY
+0 -27 Dl
+28 0 Dl
+0 27 Dl
+-28 0 Dl
+2876 2016 MXY
+0 -27 Dl
+27 0 Dl
+0 27 Dl
+-27 0 Dl
+2922 1998 MXY
+0 -27 Dl
+27 0 Dl
+0 27 Dl
+-27 0 Dl
+2967 2025 MXY
+0 -28 Dl
+28 0 Dl
+0 28 Dl
+-28 0 Dl
+3013 2031 MXY
+0 -28 Dl
+28 0 Dl
+0 28 Dl
+-28 0 Dl
+3059 MX
+0 -28 Dl
+27 0 Dl
+0 28 Dl
+-27 0 Dl
+3196 2052 MXY
+0 -28 Dl
+27 0 Dl
+0 28 Dl
+-27 0 Dl
+3561 2102 MXY
+0 -28 Dl
+28 0 Dl
+0 28 Dl
+-28 0 Dl
+4292 2105 MXY
+0 -28 Dl
+27 0 Dl
+0 28 Dl
+-27 0 Dl
+4 Ds
+1 Dt
+2844 1961 MXY
+23 30 Dl
+23 12 Dl
+45 -18 Dl
+46 26 Dl
+46 6 Dl
+45 0 Dl
+137 21 Dl
+366 50 Dl
+730 3 Dl
+9 s
+4227 2158(User)N
+-1 Ds
+3 Dt
+2830 1211 MXY
+27 Dc
+2853 1261 MXY
+27 Dc
+2876 1267 MXY
+27 Dc
+2921 1341 MXY
+27 Dc
+2967 1385 MXY
+27 Dc
+3013 1450 MXY
+27 Dc
+3059 1497 MXY
+27 Dc
+3196 1686 MXY
+27 Dc
+3561 2109 MXY
+27 Dc
+4292 2295 MXY
+27 Dc
+20 Ds
+1 Dt
+2844 1211 MXY
+23 50 Dl
+23 6 Dl
+45 74 Dl
+46 44 Dl
+46 65 Dl
+45 47 Dl
+137 189 Dl
+366 423 Dl
+730 186 Dl
+4181 2270(System)N
+-1 Ds
+3 Dt
+2844 583 MXY
+0 28 Dl
+0 -14 Dl
+14 0 Dl
+-28 0 Dl
+2867 672 MXY
+0 27 Dl
+0 -14 Dl
+14 0 Dl
+-28 0 Dl
+2890 701 MXY
+0 28 Dl
+0 -14 Dl
+13 0 Dl
+-27 0 Dl
+2935 819 MXY
+0 28 Dl
+0 -14 Dl
+14 0 Dl
+-27 0 Dl
+2981 849 MXY
+0 28 Dl
+0 -14 Dl
+14 0 Dl
+-28 0 Dl
+3027 908 MXY
+0 27 Dl
+0 -13 Dl
+14 0 Dl
+-28 0 Dl
+3072 1026 MXY
+0 27 Dl
+0 -13 Dl
+14 0 Dl
+-27 0 Dl
+3209 1292 MXY
+0 27 Dl
+0 -14 Dl
+14 0 Dl
+-27 0 Dl
+3575 1823 MXY
+0 28 Dl
+0 -14 Dl
+14 0 Dl
+-28 0 Dl
+4305 2059 MXY
+0 28 Dl
+0 -14 Dl
+14 0 Dl
+-27 0 Dl
+5 Dt
+2844 597 MXY
+23 88 Dl
+23 30 Dl
+45 118 Dl
+46 30 Dl
+46 59 Dl
+45 118 Dl
+137 265 Dl
+366 532 Dl
+730 236 Dl
+4328 2103(Total)N
+2844 2310 MXY
+1461 0 Dl
+2844 MX
+0 -1772 Dl
+2310 MY
+0 18 Dl
+4 Ds
+1 Dt
+2310 MY
+0 -1772 Dl
+2826 2416(0)N
+-1 Ds
+5 Dt
+3209 2310 MXY
+0 18 Dl
+4 Ds
+1 Dt
+2310 MY
+0 -1772 Dl
+3155 2416(256)N
+-1 Ds
+5 Dt
+3575 2310 MXY
+0 18 Dl
+4 Ds
+1 Dt
+2310 MY
+0 -1772 Dl
+3521 2416(512)N
+-1 Ds
+5 Dt
+3940 2310 MXY
+0 18 Dl
+4 Ds
+1 Dt
+2310 MY
+0 -1772 Dl
+3886 2416(768)N
+-1 Ds
+5 Dt
+4305 2310 MXY
+0 18 Dl
+4 Ds
+1 Dt
+2310 MY
+0 -1772 Dl
+4233 2416(1024)N
+-1 Ds
+5 Dt
+2844 2310 MXY
+-18 0 Dl
+4 Ds
+1 Dt
+2844 MX
+1461 0 Dl
+2771 2340(0)N
+-1 Ds
+5 Dt
+2844 2014 MXY
+-18 0 Dl
+2844 1719 MXY
+-18 0 Dl
+4 Ds
+1 Dt
+2844 MX
+1461 0 Dl
+2735 1749(20)N
+-1 Ds
+5 Dt
+2844 1423 MXY
+-18 0 Dl
+2844 1128 MXY
+-18 0 Dl
+4 Ds
+1 Dt
+2844 MX
+1461 0 Dl
+2735 1158(40)N
+-1 Ds
+5 Dt
+2844 833 MXY
+-18 0 Dl
+2844 538 MXY
+-18 0 Dl
+4 Ds
+1 Dt
+2844 MX
+1461 0 Dl
+2735 568(60)N
+3239 2529(Buffer)N
+3445(Pool)X
+3595(Size)X
+3737(\(in)X
+3835(K\))X
+2695 1259(S)N
+2699 1324(e)N
+2699 1388(c)N
+2697 1452(o)N
+2697 1517(n)N
+2697 1581(d)N
+2701 1645(s)N
+3 Dt
+-1 Ds
+3 f
+8 s
+2706 2773(Figure)N
+2908(7:)X
+1 f
+2982(User)X
+3123(time)X
+3258(is)X
+3322(virtually)X
+3560(insensitive)X
+3854(to)X
+3924(the)X
+4022(amount)X
+4234(of)X
+4307(buffer)X
+2706 2861(pool)N
+2852(available,)X
+3130(however,)X
+3396(both)X
+3541(system)X
+3750(time)X
+3895(and)X
+4018(elapsed)X
+4240(time)X
+4385(are)X
+2706 2949(inversely)N
+2960(proportional)X
+3296(to)X
+3366(the)X
+3464(size)X
+3583(of)X
+3656(the)X
+3753(buffer)X
+3927(pool.)X
+4092(Even)X
+4242(for)X
+4335(large)X
+2706 3037(data)N
+2831(sets)X
+2946(where)X
+3120(one)X
+3230(expects)X
+3439(few)X
+3552(collisions,)X
+3832(specifying)X
+4116(a)X
+4162(large)X
+4307(buffer)X
+2706 3125(pool)N
+2836(dramatically)X
+3171(improves)X
+3425(performance.)X
+10 s
+10 f
+2706 3301 -0.0930(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)AN
+3 f
+3175 3543(Enhanced)N
+3536(Functionality)X
+1 f
+2878 3675(This)N
+3046(hashing)X
+3320(package)X
+3609(provides)X
+3910(a)X
+3971(set)X
+4085(of)X
+4177(compati-)X
+2706 3763(bility)N
+2895(routines)X
+3174(to)X
+3257(implement)X
+3620(the)X
+2 f
+3739(ndbm)X
+1 f
+3937(interface.)X
+4279(How-)X
+2706 3851(ever,)N
+2893(when)X
+3095(the)X
+3220(native)X
+3443(interface)X
+3752(is)X
+3832(used,)X
+4026(the)X
+4151(following)X
+2706 3939(additional)N
+3046(functionality)X
+3475(is)X
+3548(provided:)X
+10 f
+2798 4071(g)N
+1 f
+2946(Inserts)X
+3197(never)X
+3413(fail)X
+3556(because)X
+3847(too)X
+3985(many)X
+4199(keys)X
+2946 4159(hash)N
+3113(to)X
+3195(the)X
+3313(same)X
+3498(value.)X
+10 f
+2798 4247(g)N
+1 f
+2946(Inserts)X
+3187(never)X
+3393(fail)X
+3527(because)X
+3808(key)X
+3950(and/or)X
+4181(asso-)X
+2946 4335(ciated)N
+3158(data)X
+3312(is)X
+3385(too)X
+3507(large)X
+10 f
+2798 4423(g)N
+1 f
+2946(Hash)X
+3131(functions)X
+3449(may)X
+3607(be)X
+3703(user-speci\256ed.)X
+10 f
+2798 4511(g)N
+1 f
+2946(Multiple)X
+3268(pages)X
+3498(may)X
+3683(be)X
+3806(cached)X
+4077(in)X
+4186(main)X
+2946 4599(memory.)N
+2706 4731(It)N
+2801(also)X
+2976(provides)X
+3298(a)X
+3380(set)X
+3514(of)X
+3626(compatibility)X
+4097(routines)X
+4400(to)X
+2706 4819(implement)N
+3087(the)X
+2 f
+3224(hsearch)X
+1 f
+3516(interface.)X
+3876(Again,)X
+4130(the)X
+4266(native)X
+2706 4907(interface)N
+3008(offers)X
+3216(enhanced)X
+3540(functionality:)X
+10 f
+2798 5039(g)N
+1 f
+2946(Files)X
+3121(may)X
+3279(grow)X
+3464(beyond)X
+2 f
+3720(nelem)X
+1 f
+3932(elements.)X
+10 f
+2798 5127(g)N
+1 f
+2946(Multiple)X
+3247(hash)X
+3420(tables)X
+3632(may)X
+3795(be)X
+3896(accessed)X
+4203(con-)X
+2946 5215(currently.)N
+10 f
+2798 5303(g)N
+1 f
+2946(Hash)X
+3134(tables)X
+3344(may)X
+3505(be)X
+3604(stored)X
+3823(and)X
+3962(accessed)X
+4266(on)X
+2946 5391(disk.)N
+10 f
+2798 5479(g)N
+1 f
+2946(Hash)X
+3155(functions)X
+3497(may)X
+3679(be)X
+3799(user-speci\256ed)X
+4288(at)X
+2946 5567(runtime.)N
+3 f
+720 5960(USENIX)N
+9 f
+1042(-)X
+3 f
+1106(Winter)X
+1371('91)X
+9 f
+1498(-)X
+3 f
+1562(Dallas,)X
+1815(TX)X
+4424(9)X
+
+10 p
+%%Page: 10 10
+0(Courier)xf 0 f
+10 s 10 xH 0 xS 0 f
+3 f
+432 258(A)N
+510(New)X
+682(Hashing)X
+985(Package)X
+1290(for)X
+1413(UNIX)X
+3663(Seltzer)X
+3920(&)X
+4007(Yigit)X
+459 538(Relative)N
+760(Performance)X
+1227(of)X
+1314(the)X
+1441(New)X
+1613(Implementation)X
+1 f
+604 670(The)N
+761(performance)X
+1200(testing)X
+1445(of)X
+1544(the)X
+1674(new)X
+1840(package)X
+2135(is)X
+432 758(divided)N
+711(into)X
+874(two)X
+1033(test)X
+1183(suites.)X
+1424(The)X
+1588(\256rst)X
+1751(suite)X
+1941(of)X
+2046(tests)X
+432 846(requires)N
+727(that)X
+882(the)X
+1015(tables)X
+1237(be)X
+1348(read)X
+1522(from)X
+1713(and)X
+1864(written)X
+2126(to)X
+432 934(disk.)N
+640(In)X
+742(these)X
+942(tests,)X
+1139(the)X
+1272(basis)X
+1467(for)X
+1595(comparison)X
+2003(is)X
+2090(the)X
+432 1022(4.3BSD-Reno)N
+908(version)X
+1169(of)X
+2 f
+1260(ndbm)X
+1 f
+1438(.)X
+1502(Based)X
+1722(on)X
+1826(the)X
+1948(designs)X
+432 1110(of)N
+2 f
+521(sdbm)X
+1 f
+712(and)X
+2 f
+850(gdbm)X
+1 f
+1028(,)X
+1070(they)X
+1230(are)X
+1351(expected)X
+1659(to)X
+1743(perform)X
+2024(simi-)X
+432 1198(larly)N
+605(to)X
+2 f
+693(ndbm)X
+1 f
+871(,)X
+917(and)X
+1059(we)X
+1179(do)X
+1285(not)X
+1413(show)X
+1608(their)X
+1781(performance)X
+432 1286(numbers.)N
+800(The)X
+977(second)X
+1252(suite)X
+1454(contains)X
+1772(the)X
+1921(memory)X
+432 1374(resident)N
+712(test)X
+849(which)X
+1071(does)X
+1243(not)X
+1370(require)X
+1623(that)X
+1768(the)X
+1891(\256les)X
+2049(ever)X
+432 1462(be)N
+533(written)X
+784(to)X
+870(disk,)X
+1047(only)X
+1213(that)X
+1357(hash)X
+1528(tables)X
+1739(may)X
+1901(be)X
+2001(mani-)X
+432 1550(pulated)N
+692(in)X
+778(main)X
+961(memory.)X
+1291(In)X
+1381(this)X
+1519(test,)X
+1673(we)X
+1790(compare)X
+2090(the)X
+432 1638(performance)N
+859(to)X
+941(that)X
+1081(of)X
+1168(the)X
+2 f
+1286(hsearch)X
+1 f
+1560(routines.)X
+604 1752(For)N
+760(both)X
+947(suites,)X
+1194(two)X
+1358(different)X
+1679(databases)X
+2031(were)X
+432 1840(used.)N
+656(The)X
+818(\256rst)X
+979(is)X
+1069(the)X
+1204(dictionary)X
+1566(database)X
+1880(described)X
+432 1928(previously.)N
+836(The)X
+987(second)X
+1236(was)X
+1386(constructed)X
+1781(from)X
+1962(a)X
+2023(pass-)X
+432 2016(word)N
+647(\256le)X
+799(with)X
+990(approximately)X
+1502(300)X
+1671(accounts.)X
+2041(Two)X
+432 2104(records)N
+700(were)X
+887(constructed)X
+1287(for)X
+1411(each)X
+1589(account.)X
+1909(The)X
+2064(\256rst)X
+432 2192(used)N
+604(the)X
+727(logname)X
+1028(as)X
+1120(the)X
+1243(key)X
+1384(and)X
+1525(the)X
+1648(remainder)X
+1999(of)X
+2090(the)X
+432 2280(password)N
+768(entry)X
+965(for)X
+1091(the)X
+1221(data.)X
+1427(The)X
+1584(second)X
+1839(was)X
+1996(keyed)X
+432 2368(by)N
+541(uid)X
+672(and)X
+817(contained)X
+1157(the)X
+1283(entire)X
+1494(password)X
+1825(entry)X
+2018(as)X
+2113(its)X
+432 2456(data)N
+589(\256eld.)X
+794(The)X
+942(tests)X
+1107(were)X
+1287(all)X
+1389(run)X
+1518(on)X
+1620(the)X
+1740(HP)X
+1864(9000)X
+2046(with)X
+432 2544(the)N
+574(same)X
+783(con\256guration)X
+1254(previously)X
+1636(described.)X
+2027(Each)X
+432 2632(test)N
+576(was)X
+734(run)X
+874(\256ve)X
+1027(times)X
+1232(and)X
+1380(the)X
+1510(timing)X
+1750(results)X
+1991(of)X
+2090(the)X
+432 2720(runs)N
+602(were)X
+791(averaged.)X
+1154(The)X
+1311(variance)X
+1616(across)X
+1849(the)X
+1979(5)X
+2050(runs)X
+432 2808(was)N
+591(approximately)X
+1088(1%)X
+1229(of)X
+1330(the)X
+1462(average)X
+1746(yielding)X
+2041(95%)X
+432 2896(con\256dence)N
+800(intervals)X
+1096(of)X
+1183(approximately)X
+1666(2%.)X
+3 f
+1021 3050(Disk)N
+1196(Based)X
+1420(Tests)X
+1 f
+604 3182(In)N
+693(these)X
+880(tests,)X
+1064(we)X
+1180(use)X
+1308(a)X
+1365(bucket)X
+1600(size)X
+1746(of)X
+1834(1024)X
+2015(and)X
+2152(a)X
+432 3270(\256ll)N
+540(factor)X
+748(of)X
+835(32.)X
+3 f
+432 3384(create)N
+663(test)X
+1 f
+547 3498(The)N
+703(keys)X
+881(are)X
+1011(entered)X
+1279(into)X
+1433(the)X
+1561(hash)X
+1738(table,)X
+1944(and)X
+2090(the)X
+547 3586(\256le)N
+669(is)X
+742(\257ushed)X
+993(to)X
+1075(disk.)X
+3 f
+432 3700(read)N
+608(test)X
+1 f
+547 3814(A)N
+640(lookup)X
+897(is)X
+984(performed)X
+1353(for)X
+1481(each)X
+1663(key)X
+1813(in)X
+1909(the)X
+2041(hash)X
+547 3902(table.)N
+3 f
+432 4016(verify)N
+653(test)X
+1 f
+547 4130(A)N
+640(lookup)X
+897(is)X
+984(performed)X
+1353(for)X
+1481(each)X
+1663(key)X
+1813(in)X
+1909(the)X
+2041(hash)X
+547 4218(table,)N
+759(and)X
+911(the)X
+1045(data)X
+1215(returned)X
+1519(is)X
+1608(compared)X
+1961(against)X
+547 4306(that)N
+687(originally)X
+1018(stored)X
+1234(in)X
+1316(the)X
+1434(hash)X
+1601(table.)X
+3 f
+432 4420(sequential)N
+798(retrieve)X
+1 f
+547 4534(All)N
+674(keys)X
+846(are)X
+970(retrieved)X
+1281(in)X
+1367(sequential)X
+1716(order)X
+1910(from)X
+2090(the)X
+547 4622(hash)N
+724(table.)X
+950(The)X
+2 f
+1105(ndbm)X
+1 f
+1313(interface)X
+1625(allows)X
+1863(sequential)X
+547 4710(retrieval)N
+848(of)X
+948(the)X
+1079(keys)X
+1259(from)X
+1448(the)X
+1578(database,)X
+1907(but)X
+2041(does)X
+547 4798(not)N
+701(return)X
+945(the)X
+1094(data)X
+1279(associated)X
+1660(with)X
+1853(each)X
+2052(key.)X
+547 4886(Therefore,)N
+929(we)X
+1067(compare)X
+1388(the)X
+1530(performance)X
+1980(of)X
+2090(the)X
+547 4974(new)N
+703(package)X
+989(to)X
+1073(two)X
+1215(different)X
+1514(runs)X
+1674(of)X
+2 f
+1763(ndbm)X
+1 f
+1941(.)X
+2002(In)X
+2090(the)X
+547 5062(\256rst)N
+697(case,)X
+2 f
+882(ndbm)X
+1 f
+1086(returns)X
+1335(only)X
+1503(the)X
+1627(keys)X
+1800(while)X
+2003(in)X
+2090(the)X
+547 5150(second,)N
+2 f
+823(ndbm)X
+1 f
+1034(returns)X
+1290(both)X
+1465(the)X
+1596(keys)X
+1776(and)X
+1924(the)X
+2054(data)X
+547 5238(\(requiring)N
+894(a)X
+956(second)X
+1204(call)X
+1345(to)X
+1432(the)X
+1555(library\).)X
+1861(There)X
+2074(is)X
+2152(a)X
+547 5326(single)N
+764(run)X
+897(for)X
+1017(the)X
+1141(new)X
+1300(library)X
+1539(since)X
+1729(it)X
+1798(returns)X
+2046(both)X
+547 5414(the)N
+665(key)X
+801(and)X
+937(the)X
+1055(data.)X
+3 f
+3014 538(In-Memory)N
+3431(Test)X
+1 f
+2590 670(This)N
+2757(test)X
+2892(uses)X
+3054(a)X
+3114(bucket)X
+3352(size)X
+3501(of)X
+3592(256)X
+3736(and)X
+3876(a)X
+3936(\256ll)X
+4048(fac-)X
+2418 758(tor)N
+2527(of)X
+2614(8.)X
+3 f
+2418 872(create/read)N
+2827(test)X
+1 f
+2533 986(In)N
+2627(this)X
+2769(test,)X
+2927(a)X
+2989(hash)X
+3162(table)X
+3344(is)X
+3423(created)X
+3682(by)X
+3788(inserting)X
+4094(all)X
+2533 1074(the)N
+2660(key/data)X
+2961(pairs.)X
+3186(Then)X
+3380(a)X
+3445(keyed)X
+3666(retrieval)X
+3963(is)X
+4044(per-)X
+2533 1162(formed)N
+2801(for)X
+2931(each)X
+3115(pair,)X
+3295(and)X
+3446(the)X
+3579(hash)X
+3761(table)X
+3952(is)X
+4040(des-)X
+2533 1250(troyed.)N
+3 f
+2938 1404(Performance)N
+3405(Results)X
+1 f
+2590 1536(Figures)N
+2866(8a)X
+2978(and)X
+3130(8b)X
+3246(show)X
+3451(the)X
+3585(user)X
+3755(time,)X
+3952(system)X
+2418 1624(time,)N
+2608(and)X
+2752(elapsed)X
+3021(time)X
+3191(for)X
+3312(each)X
+3487(test)X
+3625(for)X
+3746(both)X
+3915(the)X
+4040(new)X
+2418 1712(implementation)N
+2951(and)X
+3098(the)X
+3227(old)X
+3360(implementation)X
+3893(\()X
+2 f
+3920(hsearch)X
+1 f
+2418 1800(or)N
+2 f
+2528(ndbm)X
+1 f
+2706(,)X
+2769(whichever)X
+3147(is)X
+3243(appropriate\))X
+3678(as)X
+3787(well)X
+3967(as)X
+4076(the)X
+2418 1888(improvement.)N
+2929(The)X
+3098(improvement)X
+3569(is)X
+3666(expressed)X
+4027(as)X
+4138(a)X
+2418 1976(percentage)N
+2787(of)X
+2874(the)X
+2992(old)X
+3114(running)X
+3383(time:)X
+0 f
+8 s
+2418 2275(%)N
+2494(=)X
+2570(100)X
+2722(*)X
+2798 -0.4219(\(old_time)AX
+3178(-)X
+3254 -0.4219(new_time\))AX
+3634(/)X
+3710(old_time)X
+1 f
+10 s
+2590 2600(In)N
+2700(nearly)X
+2944(all)X
+3067(cases,)X
+3299(the)X
+3439(new)X
+3615(routines)X
+3915(perform)X
+2418 2688(better)N
+2628(than)X
+2793(the)X
+2918(old)X
+3047(routines)X
+3332(\(both)X
+2 f
+3527(hsearch)X
+1 f
+3807(and)X
+2 f
+3949(ndbm)X
+1 f
+4127(\).)X
+2418 2776(Although)N
+2755(the)X
+3 f
+2888(create)X
+1 f
+3134(tests)X
+3311(exhibit)X
+3567(superior)X
+3864(user)X
+4032(time)X
+2418 2864(performance,)N
+2869(the)X
+2991(test)X
+3126(time)X
+3292(is)X
+3369(dominated)X
+3731(by)X
+3834(the)X
+3955(cost)X
+4107(of)X
+2418 2952(writing)N
+2677(the)X
+2803(actual)X
+3023(\256le)X
+3153(to)X
+3243(disk.)X
+3444(For)X
+3583(the)X
+3709(large)X
+3897(database)X
+2418 3040(\(the)N
+2564(dictionary\),)X
+2957(this)X
+3093(completely)X
+3470(overwhelmed)X
+3927(the)X
+4045(sys-)X
+2418 3128(tem)N
+2570(time.)X
+2783(However,)X
+3129(for)X
+3254(the)X
+3383(small)X
+3587(data)X
+3752(base,)X
+3946(we)X
+4071(see)X
+2418 3216(that)N
+2569(differences)X
+2958(in)X
+3051(both)X
+3224(user)X
+3389(and)X
+3536(system)X
+3788(time)X
+3960(contri-)X
+2418 3304(bute)N
+2576(to)X
+2658(the)X
+2776(superior)X
+3059(performance)X
+3486(of)X
+3573(the)X
+3691(new)X
+3845(package.)X
+2590 3418(The)N
+3 f
+2764(read)X
+1 f
+2920(,)X
+3 f
+2989(verify)X
+1 f
+3190(,)X
+3259(and)X
+3 f
+3424(sequential)X
+1 f
+3818(results)X
+4075(are)X
+2418 3506(deceptive)N
+2758(for)X
+2883(the)X
+3012(small)X
+3216(database)X
+3524(since)X
+3720(the)X
+3849(entire)X
+4063(test)X
+2418 3594(ran)N
+2551(in)X
+2643(under)X
+2856(a)X
+2922(second.)X
+3215(However,)X
+3560(on)X
+3669(the)X
+3796(larger)X
+4013(data-)X
+2418 3682(base)N
+2590(the)X
+3 f
+2716(read)X
+1 f
+2900(and)X
+3 f
+3044(verify)X
+1 f
+3273(tests)X
+3443(bene\256t)X
+3689(from)X
+3873(the)X
+3999(cach-)X
+2418 3770(ing)N
+2546(of)X
+2639(buckets)X
+2910(in)X
+2998(the)X
+3122(new)X
+3282(package)X
+3571(to)X
+3658(improve)X
+3950(perfor-)X
+2418 3858(mance)N
+2666(by)X
+2784(over)X
+2965(80%.)X
+3169(Since)X
+3384(the)X
+3519(\256rst)X
+3 f
+3680(sequential)X
+1 f
+4063(test)X
+2418 3946(does)N
+2598(not)X
+2733(require)X
+2 f
+2994(ndbm)X
+1 f
+3205(to)X
+3299(return)X
+3523(the)X
+3653(data)X
+3819(values,)X
+4076(the)X
+2418 4034(user)N
+2573(time)X
+2735(is)X
+2808(lower)X
+3011(than)X
+3169(for)X
+3283(the)X
+3401(new)X
+3555(package.)X
+3879(However)X
+2418 4122(when)N
+2613(we)X
+2728(require)X
+2977(both)X
+3139(packages)X
+3454(to)X
+3536(return)X
+3748(data,)X
+3922(the)X
+4040(new)X
+2418 4210(package)N
+2702(excels)X
+2923(in)X
+3005(all)X
+3105(three)X
+3286(timings.)X
+2590 4324(The)N
+2773(small)X
+3003(database)X
+3337(runs)X
+3532(so)X
+3660(quickly)X
+3957(in)X
+4076(the)X
+2418 4412(memory-resident)N
+3000(case)X
+3173(that)X
+3326(the)X
+3457(results)X
+3699(are)X
+3831(uninterest-)X
+2418 4500(ing.)N
+2589(However,)X
+2933(for)X
+3056(the)X
+3183(larger)X
+3400(database)X
+3706(the)X
+3833(new)X
+3995(pack-)X
+2418 4588(age)N
+2567(pays)X
+2751(a)X
+2824(small)X
+3033(penalty)X
+3305(in)X
+3403(system)X
+3661(time)X
+3839(because)X
+4130(it)X
+2418 4676(limits)N
+2636(its)X
+2748(main)X
+2944(memory)X
+3247(utilization)X
+3607(and)X
+3759(swaps)X
+3991(pages)X
+2418 4764(out)N
+2550(to)X
+2642(temporary)X
+3002(storage)X
+3264(in)X
+3356(the)X
+3484(\256le)X
+3616(system)X
+3868(while)X
+4076(the)X
+2 f
+2418 4852(hsearch)N
+1 f
+2698(package)X
+2988(requires)X
+3273(that)X
+3419(the)X
+3543(application)X
+3924(allocate)X
+2418 4940(enough)N
+2692(space)X
+2909(for)X
+3041(all)X
+3159(key/data)X
+3468(pair.)X
+3670(However,)X
+4022(even)X
+2418 5028(with)N
+2600(the)X
+2738(system)X
+3000(time)X
+3182(penalty,)X
+3477(the)X
+3614(resulting)X
+3933(elapsed)X
+2418 5116(time)N
+2580(improves)X
+2898(by)X
+2998(over)X
+3161(50%.)X
+3 f
+432 5960(10)N
+2970(USENIX)X
+9 f
+3292(-)X
+3 f
+3356(Winter)X
+3621('91)X
+9 f
+3748(-)X
+3 f
+3812(Dallas,)X
+4065(TX)X
+
+11 p
+%%Page: 11 11
+0(Courier)xf 0 f
+10 s 10 xH 0 xS 0 f
+3 f
+720 258(Seltzer)N
+977(&)X
+1064(Yigit)X
+3278(A)X
+3356(New)X
+3528(Hashing)X
+3831(Package)X
+4136(for)X
+4259(UNIX)X
+1 f
+10 f
+908 454(i)N
+927(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
+2 f
+1379 546(hash)N
+1652(ndbm)X
+1950(%change)X
+1 f
+10 f
+908 550(i)N
+927(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
+1 f
+948 642(CREATE)N
+10 f
+908 646(i)N
+927(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
+1 f
+1125 738(user)N
+1424(6.4)X
+1671(12.2)X
+2073(48)X
+1157 826(sys)N
+1384(32.5)X
+1671(34.7)X
+2113(6)X
+3 f
+1006 914(elapsed)N
+10 f
+1310 922(c)N
+890(c)Y
+810(c)Y
+730(c)Y
+3 f
+1384 914(90.4)N
+10 f
+1581 922(c)N
+890(c)Y
+810(c)Y
+730(c)Y
+3 f
+1671 914(99.6)N
+10 f
+1883 922(c)N
+890(c)Y
+810(c)Y
+730(c)Y
+3 f
+2113 914(9)N
+1 f
+10 f
+908 910(i)N
+927(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
+908 926(i)N
+927(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
+1 f
+948 1010(READ)N
+10 f
+908 1014(i)N
+927(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
+1 f
+1125 1106(user)N
+1424(3.4)X
+1711(6.1)X
+2073(44)X
+1157 1194(sys)N
+1424(1.2)X
+1671(15.3)X
+2073(92)X
+3 f
+1006 1282(elapsed)N
+10 f
+1310 1290(c)N
+1258(c)Y
+1178(c)Y
+1098(c)Y
+3 f
+1424 1282(4.0)N
+10 f
+1581 1290(c)N
+1258(c)Y
+1178(c)Y
+1098(c)Y
+3 f
+1671 1282(21.2)N
+10 f
+1883 1290(c)N
+1258(c)Y
+1178(c)Y
+1098(c)Y
+3 f
+2073 1282(81)N
+1 f
+10 f
+908 1278(i)N
+927(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
+908 1294(i)N
+927(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
+1 f
+948 1378(VERIFY)N
+10 f
+908 1382(i)N
+927(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
+1 f
+1125 1474(user)N
+1424(3.5)X
+1711(6.3)X
+2073(44)X
+1157 1562(sys)N
+1424(1.2)X
+1671(15.3)X
+2073(92)X
+3 f
+1006 1650(elapsed)N
+10 f
+1310 1658(c)N
+1626(c)Y
+1546(c)Y
+1466(c)Y
+3 f
+1424 1650(4.0)N
+10 f
+1581 1658(c)N
+1626(c)Y
+1546(c)Y
+1466(c)Y
+3 f
+1671 1650(21.2)N
+10 f
+1883 1658(c)N
+1626(c)Y
+1546(c)Y
+1466(c)Y
+3 f
+2073 1650(81)N
+1 f
+10 f
+908 1646(i)N
+927(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
+908 1662(i)N
+927(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
+1 f
+948 1746(SEQUENTIAL)N
+10 f
+908 1750(i)N
+927(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
+1 f
+1125 1842(user)N
+1424(2.7)X
+1711(1.9)X
+2046(-42)X
+1157 1930(sys)N
+1424(0.7)X
+1711(3.9)X
+2073(82)X
+3 f
+1006 2018(elapsed)N
+10 f
+1310 2026(c)N
+1994(c)Y
+1914(c)Y
+1834(c)Y
+3 f
+1424 2018(3.0)N
+10 f
+1581 2026(c)N
+1994(c)Y
+1914(c)Y
+1834(c)Y
+3 f
+1711 2018(5.0)N
+10 f
+1883 2026(c)N
+1994(c)Y
+1914(c)Y
+1834(c)Y
+3 f
+2073 2018(40)N
+1 f
+10 f
+908 2014(i)N
+927(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
+908 2030(i)N
+927(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
+1 f
+948 2114(SEQUENTIAL)N
+1467(\(with)X
+1656(data)X
+1810(retrieval\))X
+10 f
+908 2118(i)N
+927(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
+1 f
+1125 2210(user)N
+1424(2.7)X
+1711(8.2)X
+2073(67)X
+1157 2298(sys)N
+1424(0.7)X
+1711(4.3)X
+2073(84)X
+3 f
+1006 2386(elapsed)N
+1424(3.0)X
+1671(12.0)X
+2073(75)X
+1 f
+10 f
+908 2390(i)N
+927(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
+899 2394(c)N
+2378(c)Y
+2298(c)Y
+2218(c)Y
+2138(c)Y
+2058(c)Y
+1978(c)Y
+1898(c)Y
+1818(c)Y
+1738(c)Y
+1658(c)Y
+1578(c)Y
+1498(c)Y
+1418(c)Y
+1338(c)Y
+1258(c)Y
+1178(c)Y
+1098(c)Y
+1018(c)Y
+938(c)Y
+858(c)Y
+778(c)Y
+698(c)Y
+618(c)Y
+538(c)Y
+1310 2394(c)N
+2362(c)Y
+2282(c)Y
+2202(c)Y
+1581 2394(c)N
+2362(c)Y
+2282(c)Y
+2202(c)Y
+1883 2394(c)N
+2362(c)Y
+2282(c)Y
+2202(c)Y
+2278 2394(c)N
+2378(c)Y
+2298(c)Y
+2218(c)Y
+2138(c)Y
+2058(c)Y
+1978(c)Y
+1898(c)Y
+1818(c)Y
+1738(c)Y
+1658(c)Y
+1578(c)Y
+1498(c)Y
+1418(c)Y
+1338(c)Y
+1258(c)Y
+1178(c)Y
+1098(c)Y
+1018(c)Y
+938(c)Y
+858(c)Y
+778(c)Y
+698(c)Y
+618(c)Y
+538(c)Y
+905 2574(i)N
+930(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
+2 f
+1318 2666(hash)N
+1585(hsearch)X
+1953(%change)X
+1 f
+10 f
+905 2670(i)N
+930(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
+1 f
+945 2762(CREATE/READ)N
+10 f
+905 2766(i)N
+930(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
+1 f
+1064 2858(user)N
+1343(6.6)X
+1642(17.2)X
+2096(62)X
+1096 2946(sys)N
+1343(1.1)X
+1682(0.3)X
+2029(-266)X
+3 f
+945 3034(elapsed)N
+1343(7.8)X
+1642(17.0)X
+2096(54)X
+1 f
+10 f
+905 3038(i)N
+930(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
+896 3050(c)N
+2978(c)Y
+2898(c)Y
+2818(c)Y
+2738(c)Y
+2658(c)Y
+1249 3034(c)N
+3010(c)Y
+2930(c)Y
+2850(c)Y
+1520 3034(c)N
+3010(c)Y
+2930(c)Y
+2850(c)Y
+1886 3034(c)N
+3010(c)Y
+2930(c)Y
+2850(c)Y
+2281 3050(c)N
+2978(c)Y
+2898(c)Y
+2818(c)Y
+2738(c)Y
+2658(c)Y
+3 f
+720 3174(Figure)N
+967(8a:)X
+1 f
+1094(Timing)X
+1349(results)X
+1578(for)X
+1692(the)X
+1810(dictionary)X
+2155(database.)X
+10 f
+720 3262 -0.0930(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)AN
+3 f
+1407 3504(Conclusion)N
+1 f
+892 3636(This)N
+1063(paper)X
+1271(has)X
+1407(presented)X
+1744(the)X
+1871(design,)X
+2129(implemen-)X
+720 3724(tation)N
+928(and)X
+1070(performance)X
+1503(of)X
+1596(a)X
+1658(new)X
+1818(hashing)X
+2093(package)X
+2382(for)X
+720 3812(UNIX.)N
+993(The)X
+1150(new)X
+1316(package)X
+1612(provides)X
+1919(a)X
+1986(superset)X
+2280(of)X
+2378(the)X
+720 3900(functionality)N
+1159(of)X
+1255(existing)X
+1537(hashing)X
+1815(packages)X
+2139(and)X
+2284(incor-)X
+720 3988(porates)N
+975(additional)X
+1318(features)X
+1596(such)X
+1766(as)X
+1855(large)X
+2038(key)X
+2176(handling,)X
+720 4076(user)N
+876(de\256ned)X
+1134(hash)X
+1302(functions,)X
+1641(multiple)X
+1928(hash)X
+2096(tables,)X
+2324(vari-)X
+720 4164(able)N
+894(sized)X
+1099(pages,)X
+1342(and)X
+1498(linear)X
+1721(hashing.)X
+2050(In)X
+2156(nearly)X
+2396(all)X
+720 4252(cases,)N
+954(the)X
+1096(new)X
+1274(package)X
+1582(provides)X
+1902(improved)X
+2252(perfor-)X
+720 4340(mance)N
+974(on)X
+1098(the)X
+1240(order)X
+1454(of)X
+1565(50-80%)X
+1863(for)X
+2001(the)X
+2142(workloads)X
+720 4428(shown.)N
+990(Applications)X
+1420(such)X
+1588(as)X
+1676(the)X
+1794(loader,)X
+2035(compiler,)X
+2360(and)X
+720 4516(mail,)N
+921(which)X
+1156(currently)X
+1485(implement)X
+1866(their)X
+2051(own)X
+2227(hashing)X
+720 4604(routines,)N
+1032(should)X
+1279(be)X
+1389(modi\256ed)X
+1706(to)X
+1801(use)X
+1941(the)X
+2072(generic)X
+2342(rou-)X
+720 4692(tines.)N
+892 4806(This)N
+1087(hashing)X
+1389(package)X
+1705(is)X
+1810(one)X
+1978(access)X
+2236(method)X
+720 4894(which)N
+953(is)X
+1043(part)X
+1205(of)X
+1309(a)X
+1382(generic)X
+1656(database)X
+1970(access)X
+2212(package)X
+720 4982(being)N
+955(developed)X
+1342(at)X
+1457(the)X
+1612(University)X
+2007(of)X
+2131(California,)X
+720 5070(Berkeley.)N
+1089(It)X
+1177(will)X
+1340(include)X
+1614(a)X
+1688(btree)X
+1887(access)X
+2131(method)X
+2409(as)X
+720 5158(well)N
+916(as)X
+1041(\256xed)X
+1259(and)X
+1433(variable)X
+1750(length)X
+2007(record)X
+2270(access)X
+720 5246(methods)N
+1024(in)X
+1119(addition)X
+1414(to)X
+1509(the)X
+1640(hashed)X
+1896(support)X
+2168(presented)X
+720 5334(here.)N
+948(All)X
+1099(of)X
+1215(the)X
+1361(access)X
+1615(methods)X
+1934(are)X
+2081(based)X
+2312(on)X
+2440(a)X
+720 5422(key/data)N
+1037(pair)X
+1207(interface)X
+1533(and)X
+1693(appear)X
+1952(identical)X
+2272(to)X
+2378(the)X
+720 5510(application)N
+1121(layer,)X
+1347(allowing)X
+1671(application)X
+2071(implementa-)X
+720 5598(tions)N
+906(to)X
+999(be)X
+1106(largely)X
+1360(independent)X
+1783(of)X
+1881(the)X
+2010(database)X
+2318(type.)X
+720 5686(The)N
+873(package)X
+1165(is)X
+1246(expected)X
+1560(to)X
+1650(be)X
+1754(an)X
+1858(integral)X
+2131(part)X
+2284(of)X
+2378(the)X
+2706 538(4.4BSD)N
+3006(system,)X
+3293(with)X
+3479(various)X
+3759(standard)X
+4075(applications)X
+2706 626(such)N
+2879(as)X
+2972(more\(1\),)X
+3277(sort\(1\))X
+3517(and)X
+3659(vi\(1\))X
+3841(based)X
+4050(on)X
+4156(it.)X
+4266(While)X
+2706 714(the)N
+2833(current)X
+3089(design)X
+3326(does)X
+3501(not)X
+3631(support)X
+3899(multi-user)X
+4256(access)X
+2706 802(or)N
+2804(transactions,)X
+3238(they)X
+3407(could)X
+3616(be)X
+3723(incorporated)X
+4159(relatively)X
+2706 890(easily.)N
+10 f
+2894 938(i)N
+2913(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
+2 f
+3365 1030(hash)N
+3638(ndbm)X
+3936(%change)X
+1 f
+10 f
+2894 1034(i)N
+2913(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
+1 f
+2934 1126(CREATE)N
+10 f
+2894 1130(i)N
+2913(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
+1 f
+3111 1222(user)N
+3390(0.2)X
+3677(0.4)X
+4079(50)X
+3143 1310(sys)N
+3390(0.1)X
+3677(1.0)X
+4079(90)X
+3 f
+2992 1398(elapsed)N
+10 f
+3296 1406(c)N
+1374(c)Y
+1294(c)Y
+1214(c)Y
+3 f
+3390 1398(0)N
+10 f
+3567 1406(c)N
+1374(c)Y
+1294(c)Y
+1214(c)Y
+3 f
+3677 1398(3.2)N
+10 f
+3869 1406(c)N
+1374(c)Y
+1294(c)Y
+1214(c)Y
+3 f
+4039 1398(100)N
+1 f
+10 f
+2894 1394(i)N
+2913(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
+2894 1410(i)N
+2913(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
+1 f
+2934 1494(READ)N
+10 f
+2894 1498(i)N
+2913(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
+1 f
+3111 1590(user)N
+3390(0.1)X
+3677(0.1)X
+4119(0)X
+3143 1678(sys)N
+3390(0.1)X
+3677(0.4)X
+4079(75)X
+3 f
+2992 1766(elapsed)N
+10 f
+3296 1774(c)N
+1742(c)Y
+1662(c)Y
+1582(c)Y
+3 f
+3390 1766(0.0)N
+10 f
+3567 1774(c)N
+1742(c)Y
+1662(c)Y
+1582(c)Y
+3 f
+3677 1766(0.0)N
+10 f
+3869 1774(c)N
+1742(c)Y
+1662(c)Y
+1582(c)Y
+3 f
+4119 1766(0)N
+1 f
+10 f
+2894 1762(i)N
+2913(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
+2894 1778(i)N
+2913(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
+1 f
+2934 1862(VERIFY)N
+10 f
+2894 1866(i)N
+2913(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
+1 f
+3111 1958(user)N
+3390(0.1)X
+3677(0.2)X
+4079(50)X
+3143 2046(sys)N
+3390(0.1)X
+3677(0.3)X
+4079(67)X
+3 f
+2992 2134(elapsed)N
+10 f
+3296 2142(c)N
+2110(c)Y
+2030(c)Y
+1950(c)Y
+3 f
+3390 2134(0.0)N
+10 f
+3567 2142(c)N
+2110(c)Y
+2030(c)Y
+1950(c)Y
+3 f
+3677 2134(0.0)N
+10 f
+3869 2142(c)N
+2110(c)Y
+2030(c)Y
+1950(c)Y
+3 f
+4119 2134(0)N
+1 f
+10 f
+2894 2130(i)N
+2913(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
+2894 2146(i)N
+2913(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
+1 f
+2934 2230(SEQUENTIAL)N
+10 f
+2894 2234(i)N
+2913(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
+1 f
+3111 2326(user)N
+3390(0.1)X
+3677(0.0)X
+4012(-100)X
+3143 2414(sys)N
+3390(0.1)X
+3677(0.1)X
+4119(0)X
+3 f
+2992 2502(elapsed)N
+10 f
+3296 2510(c)N
+2478(c)Y
+2398(c)Y
+2318(c)Y
+3 f
+3390 2502(0.0)N
+10 f
+3567 2510(c)N
+2478(c)Y
+2398(c)Y
+2318(c)Y
+3 f
+3677 2502(0.0)N
+10 f
+3869 2510(c)N
+2478(c)Y
+2398(c)Y
+2318(c)Y
+3 f
+4119 2502(0)N
+1 f
+10 f
+2894 2498(i)N
+2913(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
+2894 2514(i)N
+2913(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
+1 f
+2934 2598(SEQUENTIAL)N
+3453(\(with)X
+3642(data)X
+3796(retrieval\))X
+10 f
+2894 2602(i)N
+2913(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
+1 f
+3111 2694(user)N
+3390(0.1)X
+3677(0.1)X
+4119(0)X
+3143 2782(sys)N
+3390(0.1)X
+3677(0.1)X
+4119(0)X
+3 f
+2992 2870(elapsed)N
+3390(0.0)X
+3677(0.0)X
+4119(0)X
+1 f
+10 f
+2894 2874(i)N
+2913(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
+2885 2878(c)N
+2862(c)Y
+2782(c)Y
+2702(c)Y
+2622(c)Y
+2542(c)Y
+2462(c)Y
+2382(c)Y
+2302(c)Y
+2222(c)Y
+2142(c)Y
+2062(c)Y
+1982(c)Y
+1902(c)Y
+1822(c)Y
+1742(c)Y
+1662(c)Y
+1582(c)Y
+1502(c)Y
+1422(c)Y
+1342(c)Y
+1262(c)Y
+1182(c)Y
+1102(c)Y
+1022(c)Y
+3296 2878(c)N
+2846(c)Y
+2766(c)Y
+2686(c)Y
+3567 2878(c)N
+2846(c)Y
+2766(c)Y
+2686(c)Y
+3869 2878(c)N
+2846(c)Y
+2766(c)Y
+2686(c)Y
+4264 2878(c)N
+2862(c)Y
+2782(c)Y
+2702(c)Y
+2622(c)Y
+2542(c)Y
+2462(c)Y
+2382(c)Y
+2302(c)Y
+2222(c)Y
+2142(c)Y
+2062(c)Y
+1982(c)Y
+1902(c)Y
+1822(c)Y
+1742(c)Y
+1662(c)Y
+1582(c)Y
+1502(c)Y
+1422(c)Y
+1342(c)Y
+1262(c)Y
+1182(c)Y
+1102(c)Y
+1022(c)Y
+2891 3058(i)N
+2916(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
+2 f
+3304 3150(hash)N
+3571(hsearch)X
+3939(%change)X
+1 f
+10 f
+2891 3154(i)N
+2916(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
+1 f
+2931 3246(CREATE/READ)N
+10 f
+2891 3250(i)N
+2916(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
+1 f
+3050 3342(user)N
+3329(0.3)X
+3648(0.4)X
+4048(25)X
+3082 3430(sys)N
+3329(0.0)X
+3648(0.0)X
+4088(0)X
+3 f
+2931 3518(elapsed)N
+3329(0.0)X
+3648(0.0)X
+4088(0)X
+1 f
+10 f
+2891 3522(i)N
+2916(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
+2882 3534(c)N
+3462(c)Y
+3382(c)Y
+3302(c)Y
+3222(c)Y
+3142(c)Y
+3235 3518(c)N
+3494(c)Y
+3414(c)Y
+3334(c)Y
+3506 3518(c)N
+3494(c)Y
+3414(c)Y
+3334(c)Y
+3872 3518(c)N
+3494(c)Y
+3414(c)Y
+3334(c)Y
+4267 3534(c)N
+3462(c)Y
+3382(c)Y
+3302(c)Y
+3222(c)Y
+3142(c)Y
+3 f
+2706 3658(Figure)N
+2953(8b:)X
+1 f
+3084(Timing)X
+3339(results)X
+3568(for)X
+3682(the)X
+3800(password)X
+4123(database.)X
+10 f
+2706 3746 -0.0930(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)AN
+3 f
+3396 3988(References)N
+1 f
+2706 4120([ATT79])N
+3058(AT&T,)X
+3358(DBM\(3X\),)X
+2 f
+3773(Unix)X
+3990(Programmer's)X
+2878 4208(Manual,)N
+3194(Seventh)X
+3491(Edition,)X
+3793(Volume)X
+4085(1)X
+1 f
+(,)S
+4192(January,)X
+2878 4296(1979.)N
+2706 4472([ATT85])N
+3027(AT&T,)X
+3296(HSEARCH\(BA_LIB\),)X
+2 f
+4053(Unix)X
+4239(System)X
+2878 4560(User's)N
+3112(Manual,)X
+3401(System)X
+3644(V.3)X
+1 f
+3753(,)X
+3793(pp.)X
+3913(506-508,)X
+4220(1985.)X
+2706 4736([BRE73])N
+3025(Brent,)X
+3253(Richard)X
+3537(P.,)X
+3651(``Reducing)X
+4041(the)X
+4168(Retrieval)X
+2878 4824(Time)N
+3071(of)X
+3162(Scatter)X
+3409(Storage)X
+3678(Techniques'',)X
+2 f
+4146(Commun-)X
+2878 4912(ications)N
+3175(of)X
+3281(the)X
+3422(ACM)X
+1 f
+3591(,)X
+3654(Volume)X
+3955(16,)X
+4098(No.)X
+4259(2,)X
+4362(pp.)X
+2878 5000(105-109,)N
+3185(February,)X
+3515(1973.)X
+2706 5176([BSD86])N
+3055(NDBM\(3\),)X
+2 f
+3469(4.3BSD)X
+3775(Unix)X
+3990(Programmer's)X
+2878 5264(Manual)N
+3155(Reference)X
+3505(Guide)X
+1 f
+3701(,)X
+3749(University)X
+4114(of)X
+4208(Califor-)X
+2878 5352(nia,)N
+3016(Berkeley,)X
+3346(1986.)X
+2706 5528([ENB88])N
+3025(Enbody,)X
+3319(R.)X
+3417(J.,)X
+3533(Du,)X
+3676(H.)X
+3779(C.,)X
+3897(``Dynamic)X
+4270(Hash-)X
+2878 5616(ing)N
+3034(Schemes'',)X
+2 f
+3427(ACM)X
+3630(Computing)X
+4019(Surveys)X
+1 f
+4269(,)X
+4322(Vol.)X
+2878 5704(20,)N
+2998(No.)X
+3136(2,)X
+3216(pp.)X
+3336(85-113,)X
+3603(June)X
+3770(1988.)X
+3 f
+720 5960(USENIX)N
+9 f
+1042(-)X
+3 f
+1106(Winter)X
+1371('91)X
+9 f
+1498(-)X
+3 f
+1562(Dallas,)X
+1815(TX)X
+4384(11)X
+
+12 p
+%%Page: 12 12
+0(Courier)xf 0 f
+10 s 10 xH 0 xS 0 f
+3 f
+432 258(A)N
+510(New)X
+682(Hashing)X
+985(Package)X
+1290(for)X
+1413(UNIX)X
+3663(Seltzer)X
+3920(&)X
+4007(Yigit)X
+1 f
+432 538([FAG79])N
+776(Ronald)X
+1057(Fagin,)X
+1308(Jurg)X
+1495(Nievergelt,)X
+1903(Nicholas)X
+604 626(Pippenger,)N
+1003(H.)X
+1135(Raymond)X
+1500(Strong,)X
+1787(``Extendible)X
+604 714(Hashing)N
+901(--)X
+985(A)X
+1073(Fast)X
+1236(Access)X
+1493(Method)X
+1771(for)X
+1894(Dynamic)X
+604 802(Files'',)N
+2 f
+855(ACM)X
+1046(Transactions)X
+1485(on)X
+1586(Database)X
+1914(Systems)X
+1 f
+2168(,)X
+604 890(Volume)N
+882(4,)X
+962(No.)X
+1100(3.,)X
+1200(September)X
+1563(1979,)X
+1763(pp)X
+1863(315-34)X
+432 1066([KNU68],)N
+802(Knuth,)X
+1064(D.E.,)X
+2 f
+1273(The)X
+1434(Art)X
+1577(of)X
+1680(Computer)X
+2041(Pro-)X
+604 1154(gramming)N
+971(Vol.)X
+1140(3:)X
+1245(Sorting)X
+1518(and)X
+1676(Searching)X
+1 f
+2001(,)X
+2058(sec-)X
+604 1242(tions)N
+779(6.3-6.4,)X
+1046(pp)X
+1146(481-550.)X
+432 1418([LAR78])N
+747(Larson,)X
+1011(Per-Ake,)X
+1319(``Dynamic)X
+1687(Hashing'',)X
+2 f
+2048(BIT)X
+1 f
+(,)S
+604 1506(Vol.)N
+764(18,)X
+884(1978,)X
+1084(pp.)X
+1204(184-201.)X
+432 1682([LAR88])N
+752(Larson,)X
+1021(Per-Ake,)X
+1335(``Dynamic)X
+1709(Hash)X
+1900(Tables'',)X
+2 f
+604 1770(Communications)N
+1183(of)X
+1281(the)X
+1415(ACM)X
+1 f
+1584(,)X
+1640(Volume)X
+1934(31,)X
+2070(No.)X
+604 1858(4.,)N
+704(April)X
+893(1988,)X
+1093(pp)X
+1193(446-457.)X
+432 2034([LIT80])N
+731(Witold,)X
+1013(Litwin,)X
+1286(``Linear)X
+1590(Hashing:)X
+1939(A)X
+2036(New)X
+604 2122(Tool)N
+786(for)X
+911(File)X
+1065(and)X
+1211(Table)X
+1424(Addressing'',)X
+2 f
+1893(Proceed-)X
+604 2210(ings)N
+761(of)X
+847(the)X
+969(6th)X
+1095(International)X
+1540(Conference)X
+1933(on)X
+2036(Very)X
+604 2298(Large)N
+815(Databases)X
+1 f
+1153(,)X
+1193(1980.)X
+432 2474([NEL90])N
+743(Nelson,)X
+1011(Philip)X
+1222(A.,)X
+2 f
+1341(Gdbm)X
+1558(1.4)X
+1679(source)X
+1913(distribu-)X
+604 2562(tion)N
+748(and)X
+888(README)X
+1 f
+1209(,)X
+1249(August)X
+1500(1990.)X
+432 2738([THOM90])N
+840(Ken)X
+1011(Thompson,)X
+1410(private)X
+1670(communication,)X
+604 2826(Nov.)N
+782(1990.)X
+432 3002([TOR87])N
+790(Torek,)X
+1066(C.,)X
+1222(``Re:)X
+1470(dbm.a)X
+1751(and)X
+1950(ndbm.a)X
+604 3090(archives'',)N
+2 f
+966(USENET)X
+1279(newsgroup)X
+1650(comp.unix)X
+1 f
+2002(1987.)X
+432 3266([TOR88])N
+760(Torek,)X
+1006(C.,)X
+1133(``Re:)X
+1351(questions)X
+1686(regarding)X
+2027(data-)X
+604 3354(bases)N
+826(created)X
+1106(with)X
+1295(dbm)X
+1484(and)X
+1647(ndbm)X
+1876(routines'')X
+2 f
+604 3442(USENET)N
+937(newsgroup)X
+1328(comp.unix.questions)X
+1 f
+1982(,)X
+2041(June)X
+604 3530(1988.)N
+432 3706([WAL84])N
+773(Wales,)X
+1018(R.,)X
+1135(``Discussion)X
+1564(of)X
+1655("dbm")X
+1887(data)X
+2045(base)X
+604 3794(system'',)N
+2 f
+973(USENET)X
+1339(newsgroup)X
+1762(unix.wizards)X
+1 f
+2168(,)X
+604 3882(January,)N
+894(1984.)X
+432 4058([YIG89])N
+751(Ozan)X
+963(S.)X
+1069(Yigit,)X
+1294(``How)X
+1545(to)X
+1648(Roll)X
+1826(Your)X
+2032(Own)X
+604 4146(Dbm/Ndbm'',)N
+2 f
+1087(unpublished)X
+1504(manuscript)X
+1 f
+(,)S
+1910(Toronto,)X
+604 4234(July,)N
+777(1989)X
+3 f
+432 5960(12)N
+2970(USENIX)X
+9 f
+3292(-)X
+3 f
+3356(Winter)X
+3621('91)X
+9 f
+3748(-)X
+3 f
+3812(Dallas,)X
+4065(TX)X
+
+13 p
+%%Page: 13 13
+0(Courier)xf 0 f
+10 s 10 xH 0 xS 0 f
+3 f
+720 258(Seltzer)N
+977(&)X
+1064(Yigit)X
+3278(A)X
+3356(New)X
+3528(Hashing)X
+3831(Package)X
+4136(for)X
+4259(UNIX)X
+1 f
+720 538(Margo)N
+960(I.)X
+1033(Seltzer)X
+1282(is)X
+1361(a)X
+1423(Ph.D.)X
+1631(student)X
+1887(in)X
+1974(the)X
+2097(Department)X
+720 626(of)N
+823(Electrical)X
+1167(Engineering)X
+1595(and)X
+1747(Computer)X
+2102(Sciences)X
+2418(at)X
+720 714(the)N
+850(University)X
+1220(of)X
+1318(California,)X
+1694(Berkeley.)X
+2055(Her)X
+2207(research)X
+720 802(interests)N
+1017(include)X
+1283(\256le)X
+1415(systems,)X
+1718(databases,)X
+2076(and)X
+2221(transac-)X
+720 890(tion)N
+896(processing)X
+1291(systems.)X
+1636(She)X
+1807(spent)X
+2027(several)X
+2306(years)X
+720 978(working)N
+1026(at)X
+1123(startup)X
+1380(companies)X
+1762(designing)X
+2112(and)X
+2267(imple-)X
+720 1066(menting)N
+1048(\256le)X
+1216(systems)X
+1535(and)X
+1716(transaction)X
+2133(processing)X
+720 1154(software)N
+1026(and)X
+1170(designing)X
+1509(microprocessors.)X
+2103(Ms.)X
+2253(Seltzer)X
+720 1242(received)N
+1057(her)X
+1223(AB)X
+1397(in)X
+1522(Applied)X
+1843(Mathematics)X
+2320(from)X
+720 1330 0.1953(Harvard/Radcliffe)AN
+1325(College)X
+1594(in)X
+1676(1983.)X
+720 1444(In)N
+810(her)X
+936(spare)X
+1129(time,)X
+1313(Margo)X
+1549(can)X
+1683(usually)X
+1936(be)X
+2034(found)X
+2243(prepar-)X
+720 1532(ing)N
+868(massive)X
+1171(quantities)X
+1527(of)X
+1639(food)X
+1831(for)X
+1970(hungry)X
+2242(hoards,)X
+720 1620(studying)N
+1022(Japanese,)X
+1355(or)X
+1449(playing)X
+1716(soccer)X
+1948(with)X
+2116(an)X
+2218(exciting)X
+720 1708(Bay)N
+912(Area)X
+1132(Women's)X
+1507(Soccer)X
+1788(team,)X
+2026(the)X
+2186(Berkeley)X
+720 1796(Bruisers.)N
+720 1910(Ozan)N
+915(\()X
+3 f
+942(Oz)X
+1 f
+1040(\))X
+1092(Yigit)X
+1281(is)X
+1358(currently)X
+1672(a)X
+1732(software)X
+2033(engineer)X
+2334(with)X
+720 1998(the)N
+886(Communications)X
+1499(Research)X
+1861(and)X
+2044(Development)X
+720 2086(group,)N
+948(Computing)X
+1328(Services,)X
+1641(York)X
+1826(University.)X
+2224(His)X
+2355(for-)X
+720 2174(mative)N
+967(years)X
+1166(were)X
+1352(also)X
+1510(spent)X
+1708(at)X
+1795(York,)X
+2009(where)X
+2234(he)X
+2338(held)X
+720 2262(system)N
+985(programmer)X
+1425(and)X
+1583(administrator)X
+2052(positions)X
+2382(for)X
+720 2350(various)N
+995(mixtures)X
+1314(of)X
+1420(of)X
+1526(UNIX)X
+1765(systems)X
+2056(starting)X
+2334(with)X
+720 2438(Berkeley)N
+1031(4.1)X
+1151(in)X
+1233(1982,)X
+1433(while)X
+1631(at)X
+1709(the)X
+1827(same)X
+2012(time)X
+2174(obtaining)X
+720 2526(a)N
+776(degree)X
+1011(in)X
+1093(Computer)X
+1433(Science.)X
+720 2640(In)N
+813(his)X
+931(copious)X
+1205(free)X
+1356(time,)X
+1543(Oz)X
+1662(enjoys)X
+1896(working)X
+2188(on)X
+2293(what-)X
+720 2728(ever)N
+890(software)X
+1197(looks)X
+1400(interesting,)X
+1788(which)X
+2014(often)X
+2209(includes)X
+720 2816(language)N
+1044(interpreters,)X
+1464(preprocessors,)X
+1960(and)X
+2110(lately,)X
+2342(pro-)X
+720 2904(gram)N
+905(generators)X
+1260(and)X
+1396(expert)X
+1617(systems.)X
+720 3018(Oz)N
+836(has)X
+964(authored)X
+1266(several)X
+1515(public-domain)X
+2003(software)X
+2301(tools,)X
+720 3106(including)N
+1069(an)X
+1191(nroff-like)X
+1545(text)X
+1711(formatter)X
+2 f
+2056(proff)X
+1 f
+2257(that)X
+2423(is)X
+720 3194(apparently)N
+1083(still)X
+1226(used)X
+1397(in)X
+1483(some)X
+1676(basement)X
+2002(PCs.)X
+2173(His)X
+2307(latest)X
+720 3282(obsessions)N
+1143(include)X
+1460(the)X
+1639(incredible)X
+2040(programming)X
+720 3370(language)N
+1030(Scheme,)X
+1324(and)X
+1460(Chinese)X
+1738(Brush)X
+1949(painting.)X
+3 f
+720 5960(USENIX)N
+9 f
+1042(-)X
+3 f
+1106(Winter)X
+1371('91)X
+9 f
+1498(-)X
+3 f
+1562(Dallas,)X
+1815(TX)X
+4384(13)X
+
+14 p
+%%Page: 14 14
+0(Courier)xf 0 f
+10 s 10 xH 0 xS 0 f
+3 f
+432 5960(14)N
+2970(USENIX)X
+9 f
+3292(-)X
+3 f
+3356(Winter)X
+3621('91)X
+9 f
+3748(-)X
+3 f
+3812(Dallas,)X
+4065(TX)X
+
+14 p
+%%Trailer
+xt
+
+xs
diff --git a/db/docs_src/ref/refs/libtp_usenix.ps b/db/docs_src/ref/refs/libtp_usenix.ps
new file mode 100644
index 000000000..ea821a914
--- /dev/null
+++ b/db/docs_src/ref/refs/libtp_usenix.ps
@@ -0,0 +1,12340 @@
+%!PS-Adobe-1.0
+%%Creator: utopia:margo (& Seltzer,608-13E,8072,)
+%%Title: stdin (ditroff)
+%%CreationDate: Thu Dec 12 15:32:11 1991
+%%EndComments
+% @(#)psdit.pro 1.3 4/15/88
+% lib/psdit.pro -- prolog for psdit (ditroff) files
+% Copyright (c) 1984, 1985 Adobe Systems Incorporated. All Rights Reserved.
+% last edit: shore Sat Nov 23 20:28:03 1985
+% RCSID: $Header: psdit.pro,v 2.1 85/11/24 12:19:43 shore Rel $
+
+% Changed by Edward Wang (edward@ucbarpa.berkeley.edu) to handle graphics,
+% 17 Feb, 87.
+
+/$DITroff 140 dict def $DITroff begin
+/fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def
+/xi{0 72 11 mul translate 72 resolution div dup neg scale 0 0 moveto
+ /fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def F
+ /pagesave save def}def
+/PB{save /psv exch def currentpoint translate
+ resolution 72 div dup neg scale 0 0 moveto}def
+/PE{psv restore}def
+/arctoobig 90 def /arctoosmall .05 def
+/m1 matrix def /m2 matrix def /m3 matrix def /oldmat matrix def
+/tan{dup sin exch cos div}def
+/point{resolution 72 div mul}def
+/dround {transform round exch round exch itransform}def
+/xT{/devname exch def}def
+/xr{/mh exch def /my exch def /resolution exch def}def
+/xp{}def
+/xs{docsave restore end}def
+/xt{}def
+/xf{/fontname exch def /slotno exch def fontnames slotno get fontname eq not
+ {fonts slotno fontname findfont put fontnames slotno fontname put}if}def
+/xH{/fontheight exch def F}def
+/xS{/fontslant exch def F}def
+/s{/fontsize exch def /fontheight fontsize def F}def
+/f{/fontnum exch def F}def
+/F{fontheight 0 le{/fontheight fontsize def}if
+ fonts fontnum get fontsize point 0 0 fontheight point neg 0 0 m1 astore
+ fontslant 0 ne{1 0 fontslant tan 1 0 0 m2 astore m3 concatmatrix}if
+ makefont setfont .04 fontsize point mul 0 dround pop setlinewidth}def
+/X{exch currentpoint exch pop moveto show}def
+/N{3 1 roll moveto show}def
+/Y{exch currentpoint pop exch moveto show}def
+/S{show}def
+/ditpush{}def/ditpop{}def
+/AX{3 -1 roll currentpoint exch pop moveto 0 exch ashow}def
+/AN{4 2 roll moveto 0 exch ashow}def
+/AY{3 -1 roll currentpoint pop exch moveto 0 exch ashow}def
+/AS{0 exch ashow}def
+/MX{currentpoint exch pop moveto}def
+/MY{currentpoint pop exch moveto}def
+/MXY{moveto}def
+/cb{pop}def % action on unknown char -- nothing for now
+/n{}def/w{}def
+/p{pop showpage pagesave restore /pagesave save def}def
+/Dt{/Dlinewidth exch def}def 1 Dt
+/Ds{/Ddash exch def}def -1 Ds
+/Di{/Dstipple exch def}def 1 Di
+/Dsetlinewidth{2 Dlinewidth mul setlinewidth}def
+/Dsetdash{Ddash 4 eq{[8 12]}{Ddash 16 eq{[32 36]}
+ {Ddash 20 eq{[32 12 8 12]}{[]}ifelse}ifelse}ifelse 0 setdash}def
+/Dstroke{gsave Dsetlinewidth Dsetdash 1 setlinecap stroke grestore
+ currentpoint newpath moveto}def
+/Dl{rlineto Dstroke}def
+/arcellipse{/diamv exch def /diamh exch def oldmat currentmatrix pop
+ currentpoint translate 1 diamv diamh div scale /rad diamh 2 div def
+ currentpoint exch rad add exch rad -180 180 arc oldmat setmatrix}def
+/Dc{dup arcellipse Dstroke}def
+/De{arcellipse Dstroke}def
+/Da{/endv exch def /endh exch def /centerv exch def /centerh exch def
+ /cradius centerv centerv mul centerh centerh mul add sqrt def
+ /eradius endv endv mul endh endh mul add sqrt def
+ /endang endv endh atan def
+ /startang centerv neg centerh neg atan def
+ /sweep startang endang sub dup 0 lt{360 add}if def
+ sweep arctoobig gt
+ {/midang startang sweep 2 div sub def /midrad cradius eradius add 2 div def
+ /midh midang cos midrad mul def /midv midang sin midrad mul def
+ midh neg midv neg endh endv centerh centerv midh midv Da
+ Da}
+ {sweep arctoosmall ge
+ {/controldelt 1 sweep 2 div cos sub 3 sweep 2 div sin mul div 4 mul def
+ centerv neg controldelt mul centerh controldelt mul
+ endv neg controldelt mul centerh add endh add
+ endh controldelt mul centerv add endv add
+ centerh endh add centerv endv add rcurveto Dstroke}
+ {centerh endh add centerv endv add rlineto Dstroke}
+ ifelse}
+ ifelse}def
+/Dpatterns[
+[%cf[widthbits]
+[8<0000000000000010>]
+[8<0411040040114000>]
+[8<0204081020408001>]
+[8<0000103810000000>]
+[8<6699996666999966>]
+[8<0000800100001008>]
+[8<81c36666c3810000>]
+[8<0f0e0c0800000000>]
+[8<0000000000000010>]
+[8<0411040040114000>]
+[8<0204081020408001>]
+[8<0000001038100000>]
+[8<6699996666999966>]
+[8<0000800100001008>]
+[8<81c36666c3810000>]
+[8<0f0e0c0800000000>]
+[8<0042660000246600>]
+[8<0000990000990000>]
+[8<0804020180402010>]
+[8<2418814242811824>]
+[8<6699996666999966>]
+[8<8000000008000000>]
+[8<00001c3e363e1c00>]
+[8<0000000000000000>]
+[32<00000040000000c00000004000000040000000e0000000000000000000000000>]
+[32<00000000000060000000900000002000000040000000f0000000000000000000>]
+[32<000000000000000000e0000000100000006000000010000000e0000000000000>]
+[32<00000000000000002000000060000000a0000000f00000002000000000000000>]
+[32<0000000e0000000000000000000000000000000f000000080000000e00000001>]
+[32<0000090000000600000000000000000000000000000007000000080000000e00>]
+[32<00010000000200000004000000040000000000000000000000000000000f0000>]
+[32<0900000006000000090000000600000000000000000000000000000006000000>]]
+[%ug
+[8<0000020000000000>]
+[8<0000020000002000>]
+[8<0004020000002000>]
+[8<0004020000402000>]
+[8<0004060000402000>]
+[8<0004060000406000>]
+[8<0006060000406000>]
+[8<0006060000606000>]
+[8<00060e0000606000>]
+[8<00060e000060e000>]
+[8<00070e000060e000>]
+[8<00070e000070e000>]
+[8<00070e020070e000>]
+[8<00070e020070e020>]
+[8<04070e020070e020>]
+[8<04070e024070e020>]
+[8<04070e064070e020>]
+[8<04070e064070e060>]
+[8<06070e064070e060>]
+[8<06070e066070e060>]
+[8<06070f066070e060>]
+[8<06070f066070f060>]
+[8<060f0f066070f060>]
+[8<060f0f0660f0f060>]
+[8<060f0f0760f0f060>]
+[8<060f0f0760f0f070>]
+[8<0e0f0f0760f0f070>]
+[8<0e0f0f07e0f0f070>]
+[8<0e0f0f0fe0f0f070>]
+[8<0e0f0f0fe0f0f0f0>]
+[8<0f0f0f0fe0f0f0f0>]
+[8<0f0f0f0ff0f0f0f0>]
+[8<1f0f0f0ff0f0f0f0>]
+[8<1f0f0f0ff1f0f0f0>]
+[8<1f0f0f8ff1f0f0f0>]
+[8<1f0f0f8ff1f0f0f8>]
+[8<9f0f0f8ff1f0f0f8>]
+[8<9f0f0f8ff9f0f0f8>]
+[8<9f0f0f9ff9f0f0f8>]
+[8<9f0f0f9ff9f0f0f9>]
+[8<9f8f0f9ff9f0f0f9>]
+[8<9f8f0f9ff9f8f0f9>]
+[8<9f8f1f9ff9f8f0f9>]
+[8<9f8f1f9ff9f8f1f9>]
+[8<bf8f1f9ff9f8f1f9>]
+[8<bf8f1f9ffbf8f1f9>]
+[8<bf8f1fdffbf8f1f9>]
+[8<bf8f1fdffbf8f1fd>]
+[8<ff8f1fdffbf8f1fd>]
+[8<ff8f1fdffff8f1fd>]
+[8<ff8f1ffffff8f1fd>]
+[8<ff8f1ffffff8f1ff>]
+[8<ff9f1ffffff8f1ff>]
+[8<ff9f1ffffff9f1ff>]
+[8<ff9f9ffffff9f1ff>]
+[8<ff9f9ffffff9f9ff>]
+[8<ffbf9ffffff9f9ff>]
+[8<ffbf9ffffffbf9ff>]
+[8<ffbfdffffffbf9ff>]
+[8<ffbfdffffffbfdff>]
+[8<ffffdffffffbfdff>]
+[8<ffffdffffffffdff>]
+[8<fffffffffffffdff>]
+[8<ffffffffffffffff>]]
+[%mg
+[8<8000000000000000>]
+[8<0822080080228000>]
+[8<0204081020408001>]
+[8<40e0400000000000>]
+[8<66999966>]
+[8<8001000010080000>]
+[8<81c36666c3810000>]
+[8<f0e0c08000000000>]
+[16<07c00f801f003e007c00f800f001e003c007800f001f003e007c00f801f003e0>]
+[16<1f000f8007c003e001f000f8007c003e001f800fc007e003f001f8007c003e00>]
+[8<c3c300000000c3c3>]
+[16<0040008001000200040008001000200040008000000100020004000800100020>]
+[16<0040002000100008000400020001800040002000100008000400020001000080>]
+[16<1fc03fe07df0f8f8f07de03fc01f800fc01fe03ff07df8f87df03fe01fc00f80>]
+[8<80>]
+[8<8040201000000000>]
+[8<84cc000048cc0000>]
+[8<9900009900000000>]
+[8<08040201804020100800020180002010>]
+[8<2418814242811824>]
+[8<66999966>]
+[8<8000000008000000>]
+[8<70f8d8f870000000>]
+[8<0814224180402010>]
+[8<aa00440a11a04400>]
+[8<018245aa45820100>]
+[8<221c224180808041>]
+[8<88000000>]
+[8<0855800080550800>]
+[8<2844004482440044>]
+[8<0810204080412214>]
+[8<00>]]]def
+/Dfill{
+ transform /maxy exch def /maxx exch def
+ transform /miny exch def /minx exch def
+ minx maxx gt{/minx maxx /maxx minx def def}if
+ miny maxy gt{/miny maxy /maxy miny def def}if
+ Dpatterns Dstipple 1 sub get exch 1 sub get
+ aload pop /stip exch def /stipw exch def /stiph 128 def
+ /imatrix[stipw 0 0 stiph 0 0]def
+ /tmatrix[stipw 0 0 stiph 0 0]def
+ /minx minx cvi stiph idiv stiph mul def
+ /miny miny cvi stipw idiv stipw mul def
+ gsave eoclip 0 setgray
+ miny stiph maxy{
+ tmatrix exch 5 exch put
+ minx stipw maxx{
+ tmatrix exch 4 exch put tmatrix setmatrix
+ stipw stiph true imatrix {stip} imagemask
+ }for
+ }for
+ grestore
+}def
+/Dp{Dfill Dstroke}def
+/DP{Dfill currentpoint newpath moveto}def
+end
+
+/ditstart{$DITroff begin
+ /nfonts 60 def % NFONTS makedev/ditroff dependent!
+ /fonts[nfonts{0}repeat]def
+ /fontnames[nfonts{()}repeat]def
+/docsave save def
+}def
+
+% character outcalls
+/oc{
+ /pswid exch def /cc exch def /name exch def
+ /ditwid pswid fontsize mul resolution mul 72000 div def
+ /ditsiz fontsize resolution mul 72 div def
+ ocprocs name known{ocprocs name get exec}{name cb}ifelse
+}def
+/fractm [.65 0 0 .6 0 0] def
+/fraction{
+ /fden exch def /fnum exch def gsave /cf currentfont def
+ cf fractm makefont setfont 0 .3 dm 2 copy neg rmoveto
+ fnum show rmoveto currentfont cf setfont(\244)show setfont fden show
+ grestore ditwid 0 rmoveto
+}def
+/oce{grestore ditwid 0 rmoveto}def
+/dm{ditsiz mul}def
+/ocprocs 50 dict def ocprocs begin
+(14){(1)(4)fraction}def
+(12){(1)(2)fraction}def
+(34){(3)(4)fraction}def
+(13){(1)(3)fraction}def
+(23){(2)(3)fraction}def
+(18){(1)(8)fraction}def
+(38){(3)(8)fraction}def
+(58){(5)(8)fraction}def
+(78){(7)(8)fraction}def
+(sr){gsave 0 .06 dm rmoveto(\326)show oce}def
+(is){gsave 0 .15 dm rmoveto(\362)show oce}def
+(->){gsave 0 .02 dm rmoveto(\256)show oce}def
+(<-){gsave 0 .02 dm rmoveto(\254)show oce}def
+(==){gsave 0 .05 dm rmoveto(\272)show oce}def
+(uc){gsave currentpoint 400 .009 dm mul add translate
+ 8 -8 scale ucseal oce}def
+end
+
+% an attempt at a PostScript FONT to implement ditroff special chars
+% this will enable us to
+% cache the little buggers
+% generate faster, more compact PS out of psdit
+% confuse everyone (including myself)!
+50 dict dup begin
+/FontType 3 def
+/FontName /DIThacks def
+/FontMatrix [.001 0 0 .001 0 0] def
+/FontBBox [-260 -260 900 900] def% a lie but ...
+/Encoding 256 array def
+0 1 255{Encoding exch /.notdef put}for
+Encoding
+ dup 8#040/space put %space
+ dup 8#110/rc put %right ceil
+ dup 8#111/lt put %left top curl
+ dup 8#112/bv put %bold vert
+ dup 8#113/lk put %left mid curl
+ dup 8#114/lb put %left bot curl
+ dup 8#115/rt put %right top curl
+ dup 8#116/rk put %right mid curl
+ dup 8#117/rb put %right bot curl
+ dup 8#120/rf put %right floor
+ dup 8#121/lf put %left floor
+ dup 8#122/lc put %left ceil
+ dup 8#140/sq put %square
+ dup 8#141/bx put %box
+ dup 8#142/ci put %circle
+ dup 8#143/br put %box rule
+ dup 8#144/rn put %root extender
+ dup 8#145/vr put %vertical rule
+ dup 8#146/ob put %outline bullet
+ dup 8#147/bu put %bullet
+ dup 8#150/ru put %rule
+ dup 8#151/ul put %underline
+ pop
+/DITfd 100 dict def
+/BuildChar{0 begin
+ /cc exch def /fd exch def
+ /charname fd /Encoding get cc get def
+ /charwid fd /Metrics get charname get def
+ /charproc fd /CharProcs get charname get def
+ charwid 0 fd /FontBBox get aload pop setcachedevice
+ 2 setlinejoin 40 setlinewidth
+ newpath 0 0 moveto gsave charproc grestore
+ end}def
+/BuildChar load 0 DITfd put
+/CharProcs 50 dict def
+CharProcs begin
+/space{}def
+/.notdef{}def
+/ru{500 0 rls}def
+/rn{0 840 moveto 500 0 rls}def
+/vr{0 800 moveto 0 -770 rls}def
+/bv{0 800 moveto 0 -1000 rls}def
+/br{0 840 moveto 0 -1000 rls}def
+/ul{0 -140 moveto 500 0 rls}def
+/ob{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath stroke}def
+/bu{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath fill}def
+/sq{80 0 rmoveto currentpoint dround newpath moveto
+ 640 0 rlineto 0 640 rlineto -640 0 rlineto closepath stroke}def
+/bx{80 0 rmoveto currentpoint dround newpath moveto
+ 640 0 rlineto 0 640 rlineto -640 0 rlineto closepath fill}def
+/ci{500 360 rmoveto currentpoint newpath 333 0 360 arc
+ 50 setlinewidth stroke}def
+
+/lt{0 -200 moveto 0 550 rlineto currx 800 2cx s4 add exch s4 a4p stroke}def
+/lb{0 800 moveto 0 -550 rlineto currx -200 2cx s4 add exch s4 a4p stroke}def
+/rt{0 -200 moveto 0 550 rlineto currx 800 2cx s4 sub exch s4 a4p stroke}def
+/rb{0 800 moveto 0 -500 rlineto currx -200 2cx s4 sub exch s4 a4p stroke}def
+/lk{0 800 moveto 0 300 -300 300 s4 arcto pop pop 1000 sub
+ 0 300 4 2 roll s4 a4p 0 -200 lineto stroke}def
+/rk{0 800 moveto 0 300 s2 300 s4 arcto pop pop 1000 sub
+ 0 300 4 2 roll s4 a4p 0 -200 lineto stroke}def
+/lf{0 800 moveto 0 -1000 rlineto s4 0 rls}def
+/rf{0 800 moveto 0 -1000 rlineto s4 neg 0 rls}def
+/lc{0 -200 moveto 0 1000 rlineto s4 0 rls}def
+/rc{0 -200 moveto 0 1000 rlineto s4 neg 0 rls}def
+end
+
+/Metrics 50 dict def Metrics begin
+/.notdef 0 def
+/space 500 def
+/ru 500 def
+/br 0 def
+/lt 416 def
+/lb 416 def
+/rt 416 def
+/rb 416 def
+/lk 416 def
+/rk 416 def
+/rc 416 def
+/lc 416 def
+/rf 416 def
+/lf 416 def
+/bv 416 def
+/ob 350 def
+/bu 350 def
+/ci 750 def
+/bx 750 def
+/sq 750 def
+/rn 500 def
+/ul 500 def
+/vr 0 def
+end
+
+DITfd begin
+/s2 500 def /s4 250 def /s3 333 def
+/a4p{arcto pop pop pop pop}def
+/2cx{2 copy exch}def
+/rls{rlineto stroke}def
+/currx{currentpoint pop}def
+/dround{transform round exch round exch itransform} def
+end
+end
+/DIThacks exch definefont pop
+ditstart
+(psc)xT
+576 1 1 xr
+1(Times-Roman)xf 1 f
+2(Times-Italic)xf 2 f
+3(Times-Bold)xf 3 f
+4(Times-BoldItalic)xf 4 f
+5(Helvetica)xf 5 f
+6(Helvetica-Bold)xf 6 f
+7(Courier)xf 7 f
+8(Courier-Bold)xf 8 f
+9(Symbol)xf 9 f
+10(DIThacks)xf 10 f
+10 s
+1 f
+xi
+%%EndProlog
+
+%%Page: 1 1
+10 s 10 xH 0 xS 1 f
+3 f
+14 s
+1205 1206(LIBTP:)N
+1633(Portable,)X
+2100(M)X
+2206(odular)X
+2551(Transactions)X
+3202(for)X
+3374(UNIX)X
+1 f
+11 s
+3661 1162(1)N
+2 f
+12 s
+2182 1398(Margo)N
+2467(Seltzer)X
+2171 1494(Michael)N
+2511(Olson)X
+1800 1590(University)N
+2225(of)X
+2324(California,)X
+2773(Berkeley)X
+3 f
+2277 1878(Abstract)N
+1 f
+10 s
+755 2001(Transactions)N
+1198(provide)X
+1475(a)X
+1543(useful)X
+1771(programming)X
+2239(paradigm)X
+2574(for)X
+2700(maintaining)X
+3114(logical)X
+3364(consistency,)X
+3790(arbitrating)X
+4156(con-)X
+555 2091(current)N
+808(access,)X
+1059(and)X
+1200(managing)X
+1540(recovery.)X
+1886(In)X
+1977(traditional)X
+2330(UNIX)X
+2555(systems,)X
+2852(the)X
+2974(only)X
+3140(easy)X
+3307(way)X
+3465(of)X
+3556(using)X
+3753(transactions)X
+4160(is)X
+4237(to)X
+555 2181(purchase)N
+876(a)X
+947(database)X
+1258(system.)X
+1554(Such)X
+1748(systems)X
+2035(are)X
+2168(often)X
+2367(slow,)X
+2572(costly,)X
+2817(and)X
+2967(may)X
+3139(not)X
+3275(provide)X
+3554(the)X
+3686(exact)X
+3890(functionality)X
+555 2271(desired.)N
+848(This)X
+1011(paper)X
+1210(presents)X
+1493(the)X
+1611(design,)X
+1860(implementation,)X
+2402(and)X
+2538(performance)X
+2965(of)X
+3052(LIBTP,)X
+3314(a)X
+3370(simple,)X
+3623(non-proprietary)X
+4147(tran-)X
+555 2361(saction)N
+809(library)X
+1050(using)X
+1249(the)X
+1373(4.4BSD)X
+1654(database)X
+1957(access)X
+2189(routines)X
+2473(\()X
+3 f
+2500(db)X
+1 f
+2588(\(3\)\).)X
+2775(On)X
+2899(a)X
+2961(conventional)X
+3401(transaction)X
+3779(processing)X
+4148(style)X
+555 2451(benchmark,)N
+959(its)X
+1061(performance)X
+1495(is)X
+1575(approximately)X
+2065(85%)X
+2239(that)X
+2386(of)X
+2480(the)X
+2604(database)X
+2907(access)X
+3139(routines)X
+3423(without)X
+3693(transaction)X
+4071(protec-)X
+555 2541(tion,)N
+725(200%)X
+938(that)X
+1084(of)X
+1177(using)X
+3 f
+1376(fsync)X
+1 f
+1554(\(2\))X
+1674(to)X
+1761(commit)X
+2030(modi\256cations)X
+2490(to)X
+2577(disk,)X
+2755(and)X
+2896(125%)X
+3108(that)X
+3253(of)X
+3345(a)X
+3406(commercial)X
+3810(relational)X
+4138(data-)X
+555 2631(base)N
+718(system.)X
+3 f
+555 2817(1.)N
+655(Introduction)X
+1 f
+755 2940(Transactions)N
+1186(are)X
+1306(used)X
+1474(in)X
+1557(database)X
+1855(systems)X
+2129(to)X
+2212(enable)X
+2443(concurrent)X
+2807(users)X
+2992(to)X
+3074(apply)X
+3272(multi-operation)X
+3790(updates)X
+4055(without)X
+555 3030(violating)N
+863(the)X
+985(integrity)X
+1280(of)X
+1371(the)X
+1493(database.)X
+1814(They)X
+2003(provide)X
+2271(the)X
+2392(properties)X
+2736(of)X
+2826(atomicity,)X
+3171(consistency,)X
+3588(isolation,)X
+3906(and)X
+4045(durabil-)X
+555 3120(ity.)N
+701(By)X
+816(atomicity,)X
+1160(we)X
+1276(mean)X
+1472(that)X
+1614(the)X
+1734(set)X
+1845(of)X
+1934(updates)X
+2200(comprising)X
+2581(a)X
+2638(transaction)X
+3011(must)X
+3187(be)X
+3284(applied)X
+3541(as)X
+3629(a)X
+3686(single)X
+3898(unit;)X
+4085(that)X
+4226(is,)X
+555 3210(they)N
+714(must)X
+890(either)X
+1094(all)X
+1195(be)X
+1292(applied)X
+1549(to)X
+1632(the)X
+1751(database)X
+2049(or)X
+2137(all)X
+2238(be)X
+2335(absent.)X
+2601(Consistency)X
+3013(requires)X
+3293(that)X
+3434(a)X
+3491(transaction)X
+3864(take)X
+4019(the)X
+4138(data-)X
+555 3300(base)N
+725(from)X
+908(one)X
+1051(logically)X
+1358(consistent)X
+1704(state)X
+1877(to)X
+1965(another.)X
+2272(The)X
+2423(property)X
+2721(of)X
+2814(isolation)X
+3115(requires)X
+3400(that)X
+3546(concurrent)X
+3916(transactions)X
+555 3390(yield)N
+750(results)X
+994(which)X
+1225(are)X
+1358(indistinguishable)X
+1938(from)X
+2128(the)X
+2260(results)X
+2503(which)X
+2733(would)X
+2967(be)X
+3077(obtained)X
+3387(by)X
+3501(running)X
+3784(the)X
+3916(transactions)X
+555 3480(sequentially.)N
+1002(Finally,)X
+1268(durability)X
+1599(requires)X
+1878(that)X
+2018(once)X
+2190(transactions)X
+2593(have)X
+2765(been)X
+2937(committed,)X
+3319(their)X
+3486(results)X
+3715(must)X
+3890(be)X
+3986(preserved)X
+555 3570(across)N
+776(system)X
+1018(failures)X
+1279([TPCB90].)X
+755 3693(Although)N
+1080(these)X
+1268(properties)X
+1612(are)X
+1734(most)X
+1912(frequently)X
+2265(discussed)X
+2595(in)X
+2680(the)X
+2801(context)X
+3060(of)X
+3150(databases,)X
+3501(they)X
+3661(are)X
+3782(useful)X
+4000(program-)X
+555 3783(ming)N
+750(paradigms)X
+1114(for)X
+1238(more)X
+1433(general)X
+1700(purpose)X
+1984(applications.)X
+2441(There)X
+2659(are)X
+2788(several)X
+3046(different)X
+3353(situations)X
+3689(where)X
+3916(transactions)X
+555 3873(can)N
+687(be)X
+783(used)X
+950(to)X
+1032(replace)X
+1285(current)X
+1533(ad-hoc)X
+1772(mechanisms.)X
+755 3996(One)N
+910(situation)X
+1206(is)X
+1280(when)X
+1475(multiple)X
+1762(\256les)X
+1916(or)X
+2004(parts)X
+2181(of)X
+2269(\256les)X
+2422(need)X
+2594(to)X
+2676(be)X
+2772(updated)X
+3046(in)X
+3128(an)X
+3224(atomic)X
+3462(fashion.)X
+3758(For)X
+3889(example,)X
+4201(the)X
+555 4086(traditional)N
+907(UNIX)X
+1131(\256le)X
+1256(system)X
+1501(uses)X
+1661(ordering)X
+1955(constraints)X
+2324(to)X
+2408(achieve)X
+2676(recoverability)X
+3144(in)X
+3228(the)X
+3348(face)X
+3505(of)X
+3594(crashes.)X
+3893(When)X
+4107(a)X
+4165(new)X
+555 4176(\256le)N
+678(is)X
+752(created,)X
+1026(its)X
+1122(inode)X
+1321(is)X
+1395(written)X
+1642(to)X
+1724(disk)X
+1877(before)X
+2103(the)X
+2221(new)X
+2375(\256le)X
+2497(is)X
+2570(added)X
+2782(to)X
+2864(the)X
+2982(directory)X
+3292(structure.)X
+3633(This)X
+3795(guarantees)X
+4159(that,)X
+555 4266(if)N
+627(the)X
+748(system)X
+993(crashes)X
+1253(between)X
+1544(the)X
+1665(two)X
+1808(I/O's,)X
+2016(the)X
+2137(directory)X
+2450(does)X
+2620(not)X
+2744(contain)X
+3002(a)X
+3060 0.4531(reference)AX
+3383(to)X
+3467(an)X
+3565(invalid)X
+3809(inode.)X
+4049(In)X
+4138(actu-)X
+555 4356(ality,)N
+741(the)X
+863(desired)X
+1119(effect)X
+1326(is)X
+1402(that)X
+1545(these)X
+1733(two)X
+1876(updates)X
+2144(have)X
+2319(the)X
+2440(transactional)X
+2873(property)X
+3168(of)X
+3258(atomicity)X
+3583(\(either)X
+3816(both)X
+3981(writes)X
+4200(are)X
+555 4446(visible)N
+790(or)X
+879(neither)X
+1124(is\).)X
+1266(Rather)X
+1501(than)X
+1660(building)X
+1947(special)X
+2191(purpose)X
+2466(recovery)X
+2769(mechanisms)X
+3186(into)X
+3331(the)X
+3450(\256le)X
+3573(system)X
+3816(or)X
+3904(related)X
+4144(tools)X
+555 4536(\()N
+2 f
+582(e.g.)X
+3 f
+726(fsck)X
+1 f
+864(\(8\)\),)X
+1033(one)X
+1177(could)X
+1383(use)X
+1518(general)X
+1783(purpose)X
+2064(transaction)X
+2443(recovery)X
+2752(protocols)X
+3077(after)X
+3252(system)X
+3501(failure.)X
+3778(Any)X
+3943(application)X
+555 4626(that)N
+705(needs)X
+918(to)X
+1010(keep)X
+1192(multiple,)X
+1508(related)X
+1757(\256les)X
+1920(\(or)X
+2044(directories\))X
+2440(consistent)X
+2790(should)X
+3032(do)X
+3141(so)X
+3241(using)X
+3443(transactions.)X
+3895(Source)X
+4147(code)X
+555 4716(control)N
+805(systems,)X
+1101(such)X
+1271(as)X
+1361(RCS)X
+1534(and)X
+1673(SCCS,)X
+1910(should)X
+2146(use)X
+2276(transaction)X
+2651(semantics)X
+2990(to)X
+3075(allow)X
+3276(the)X
+3397(``checking)X
+3764(in'')X
+3903(of)X
+3992(groups)X
+4232(of)X
+555 4806(related)N
+801(\256les.)X
+1001(In)X
+1095(this)X
+1237(way,)X
+1418(if)X
+1493(the)X
+1617 0.2841(``check-in'')AX
+2028(fails,)X
+2212(the)X
+2336(transaction)X
+2714(may)X
+2878(be)X
+2980(aborted,)X
+3267(backing)X
+3547(out)X
+3675(the)X
+3799(partial)X
+4030(``check-)X
+555 4896(in'')N
+691(leaving)X
+947(the)X
+1065(source)X
+1295(repository)X
+1640(in)X
+1722(a)X
+1778(consistent)X
+2118(state.)X
+755 5019(A)N
+842(second)X
+1094(situation)X
+1398(where)X
+1624(transactions)X
+2036(can)X
+2177(be)X
+2282(used)X
+2458(to)X
+2549(replace)X
+2811(current)X
+3068(ad-hoc)X
+3316(mechanisms)X
+3741(is)X
+3822(in)X
+3912(applications)X
+555 5109(where)N
+776(concurrent)X
+1144(updates)X
+1413(to)X
+1499(a)X
+1559(shared)X
+1793(\256le)X
+1919(are)X
+2042(desired,)X
+2318(but)X
+2444(there)X
+2629(is)X
+2706(logical)X
+2948(consistency)X
+3345(of)X
+3435(the)X
+3556(data)X
+3713(which)X
+3932(needs)X
+4138(to)X
+4223(be)X
+555 5199(preserved.)N
+928(For)X
+1059(example,)X
+1371(when)X
+1565(the)X
+1683(password)X
+2006(\256le)X
+2128(is)X
+2201(updated,)X
+2495(\256le)X
+2617(locking)X
+2877(is)X
+2950(used)X
+3117(to)X
+3199(disallow)X
+3490(concurrent)X
+3854(access.)X
+4120(Tran-)X
+555 5289(saction)N
+804(semantics)X
+1142(on)X
+1244(the)X
+1364(password)X
+1689(\256les)X
+1844(would)X
+2066(allow)X
+2266(concurrent)X
+2632(updates,)X
+2919(while)X
+3119(preserving)X
+3479(the)X
+3598(logical)X
+3837(consistency)X
+4232(of)X
+555 5379(the)N
+681(password)X
+1012(database.)X
+1357(Similarly,)X
+1702(UNIX)X
+1930(utilities)X
+2196(which)X
+2419(rewrite)X
+2674(\256les)X
+2834(face)X
+2996(a)X
+3059(potential)X
+3366(race)X
+3528(condition)X
+3857(between)X
+4152(their)X
+555 5469(rewriting)N
+871(a)X
+929(\256le)X
+1053(and)X
+1191(another)X
+1453(process)X
+1715(reading)X
+1977(the)X
+2096(\256le.)X
+2259(For)X
+2391(example,)X
+2704(the)X
+2823(compiler)X
+3129(\(more)X
+3342(precisely,)X
+3673(the)X
+3792(assembler\))X
+4161(may)X
+8 s
+10 f
+555 5541(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)N
+5 s
+1 f
+727 5619(1)N
+8 s
+763 5644(To)N
+850(appear)X
+1035(in)X
+1101(the)X
+2 f
+1195(Proceedings)X
+1530(of)X
+1596(the)X
+1690(1992)X
+1834(Winter)X
+2024(Usenix)X
+1 f
+2201(,)X
+2233(San)X
+2345(Francisco,)X
+2625(CA,)X
+2746(January)X
+2960(1992.)X
+
+2 p
+%%Page: 2 2
+8 s 8 xH 0 xS 1 f
+10 s
+3 f
+1 f
+555 630(have)N
+737(to)X
+829(rewrite)X
+1087(a)X
+1152(\256le)X
+1283(to)X
+1374(which)X
+1599(it)X
+1672(has)X
+1808(write)X
+2002(permission)X
+2382(in)X
+2473(a)X
+2538(directory)X
+2857(to)X
+2948(which)X
+3173(it)X
+3246(does)X
+3422(not)X
+3553(have)X
+3734(write)X
+3928(permission.)X
+555 720(While)N
+779(the)X
+904(``.o'')X
+1099(\256le)X
+1228(is)X
+1308(being)X
+1513(written,)X
+1787(another)X
+2055(utility)X
+2272(such)X
+2446(as)X
+3 f
+2540(nm)X
+1 f
+2651(\(1\))X
+2772(or)X
+3 f
+2866(ar)X
+1 f
+2942(\(1\))X
+3063(may)X
+3228(read)X
+3394(the)X
+3519(\256le)X
+3648(and)X
+3791(produce)X
+4077(invalid)X
+555 810(results)N
+790(since)X
+981(the)X
+1105(\256le)X
+1233(has)X
+1366(not)X
+1494(been)X
+1672(completely)X
+2054(written.)X
+2347(Currently,)X
+2700(some)X
+2895(utilities)X
+3160(use)X
+3293(special)X
+3542(purpose)X
+3821(code)X
+3998(to)X
+4085(handle)X
+555 900(such)N
+722(cases)X
+912(while)X
+1110(others)X
+1326(ignore)X
+1551(the)X
+1669(problem)X
+1956(and)X
+2092(force)X
+2278(users)X
+2463(to)X
+2545(live)X
+2685(with)X
+2847(the)X
+2965(consequences.)X
+755 1023(In)N
+845(this)X
+983(paper,)X
+1205(we)X
+1322(present)X
+1577(a)X
+1635(simple)X
+1870(library)X
+2106(which)X
+2324(provides)X
+2622(transaction)X
+2996(semantics)X
+3334(\(atomicity,)X
+3705(consistency,)X
+4121(isola-)X
+555 1113(tion,)N
+720(and)X
+857(durability\).)X
+1236(The)X
+1382(4.4BSD)X
+1658(database)X
+1956(access)X
+2182(methods)X
+2473(have)X
+2645(been)X
+2817(modi\256ed)X
+3121(to)X
+3203(use)X
+3330(this)X
+3465(library,)X
+3719(optionally)X
+4063(provid-)X
+555 1203(ing)N
+682(shared)X
+917(buffer)X
+1139(management)X
+1574(between)X
+1867(applications,)X
+2298(locking,)X
+2582(and)X
+2722(transaction)X
+3098(semantics.)X
+3478(Any)X
+3640(UNIX)X
+3865(program)X
+4161(may)X
+555 1293(transaction)N
+930(protect)X
+1176(its)X
+1274(data)X
+1430(by)X
+1532(requesting)X
+1888(transaction)X
+2262(protection)X
+2609(with)X
+2773(the)X
+3 f
+2893(db)X
+1 f
+2981(\(3\))X
+3097(library)X
+3333(or)X
+3422(by)X
+3524(adding)X
+3764(appropriate)X
+4152(calls)X
+555 1383(to)N
+646(the)X
+773(transaction)X
+1154(manager,)X
+1480(buffer)X
+1706(manager,)X
+2032(lock)X
+2199(manager,)X
+2525(and)X
+2670(log)X
+2801(manager.)X
+3147(The)X
+3301(library)X
+3543(routines)X
+3829(may)X
+3995(be)X
+4099(linked)X
+555 1473(into)N
+708(the)X
+834(host)X
+995(application)X
+1379(and)X
+1523(called)X
+1743(by)X
+1851(subroutine)X
+2217(interface,)X
+2547(or)X
+2642(they)X
+2808(may)X
+2974(reside)X
+3194(in)X
+3284(a)X
+3348(separate)X
+3640(server)X
+3865(process.)X
+4174(The)X
+555 1563(server)N
+772(architecture)X
+1172(provides)X
+1468(for)X
+1582(network)X
+1865(access)X
+2091(and)X
+2227(better)X
+2430(protection)X
+2775(mechanisms.)X
+3 f
+555 1749(2.)N
+655(Related)X
+938(Work)X
+1 f
+755 1872(There)N
+1000(has)X
+1164(been)X
+1373(much)X
+1608(discussion)X
+1998(in)X
+2117(recent)X
+2371(years)X
+2597(about)X
+2831(new)X
+3021(transaction)X
+3429(models)X
+3716(and)X
+3888(architectures)X
+555 1962 0.1172([SPEC88][NODI90][CHEN91][MOHA91].)AN
+2009(Much)X
+2220(of)X
+2310(this)X
+2448(work)X
+2636(focuses)X
+2900(on)X
+3003(new)X
+3160(ways)X
+3348(to)X
+3433(model)X
+3656(transactions)X
+4062(and)X
+4201(the)X
+555 2052(interactions)N
+953(between)X
+1245(them,)X
+1449(while)X
+1651(the)X
+1772(work)X
+1960(presented)X
+2291(here)X
+2453(focuses)X
+2717(on)X
+2820(the)X
+2941(implementation)X
+3466(and)X
+3605(performance)X
+4035(of)X
+4125(tradi-)X
+555 2142(tional)N
+757(transaction)X
+1129(techniques)X
+1492(\(write-ahead)X
+1919(logging)X
+2183(and)X
+2319(two-phase)X
+2669(locking\))X
+2956(on)X
+3056(a)X
+3112(standard)X
+3404(operating)X
+3727(system)X
+3969(\(UNIX\).)X
+755 2265(Such)N
+947(traditional)X
+1308(operating)X
+1643(systems)X
+1928(are)X
+2059(often)X
+2256(criticized)X
+2587(for)X
+2713(their)X
+2892(inability)X
+3190(to)X
+3283(perform)X
+3573(transaction)X
+3956(processing)X
+555 2355(adequately.)N
+971([STON81])X
+1342(cites)X
+1517(three)X
+1706(main)X
+1894(areas)X
+2088(of)X
+2183(inadequate)X
+2559(support:)X
+2849(buffer)X
+3074(management,)X
+3532(the)X
+3658(\256le)X
+3788(system,)X
+4058(and)X
+4201(the)X
+555 2445(process)N
+823(structure.)X
+1191(These)X
+1410(arguments)X
+1771(are)X
+1897(summarized)X
+2316(in)X
+2405(table)X
+2587(one.)X
+2769(Fortunately,)X
+3184(much)X
+3388(has)X
+3521(changed)X
+3815(since)X
+4006(1981.)X
+4232(In)X
+555 2535(the)N
+683(area)X
+848(of)X
+945(buffer)X
+1172(management,)X
+1632(most)X
+1817(UNIX)X
+2048(systems)X
+2331(provide)X
+2606(the)X
+2734(ability)X
+2968(to)X
+3060(memory)X
+3357(map)X
+3525(\256les,)X
+3708(thus)X
+3870(obviating)X
+4201(the)X
+555 2625(need)N
+734(for)X
+855(a)X
+918(copy)X
+1101(between)X
+1396(kernel)X
+1624(and)X
+1766(user)X
+1926(space.)X
+2171(If)X
+2251(a)X
+2313(database)X
+2616(system)X
+2864(is)X
+2943(going)X
+3151(to)X
+3239(use)X
+3372(the)X
+3496(\256le)X
+3624(system)X
+3872(buffer)X
+4095(cache,)X
+555 2715(then)N
+719(a)X
+781(system)X
+1029(call)X
+1171(is)X
+1250(required.)X
+1584(However,)X
+1924(if)X
+1998(buffering)X
+2322(is)X
+2400(provided)X
+2710(at)X
+2793(user)X
+2952(level)X
+3133(using)X
+3331(shared)X
+3566(memory,)X
+3878(as)X
+3970(in)X
+4057(LIBTP,)X
+555 2805(buffer)N
+776(management)X
+1210(is)X
+1287(only)X
+1452(as)X
+1542(slow)X
+1716(as)X
+1806(access)X
+2035(to)X
+2120(shared)X
+2353(memory)X
+2643(and)X
+2782(any)X
+2921(replacement)X
+3337(algorithm)X
+3671(may)X
+3832(be)X
+3931(used.)X
+4121(Since)X
+555 2895(multiple)N
+849(processes)X
+1185(can)X
+1325(access)X
+1559(the)X
+1685(shared)X
+1923(data,)X
+2105(prefetching)X
+2499(may)X
+2665(be)X
+2769(accomplished)X
+3238(by)X
+3346(separate)X
+3638(processes)X
+3973(or)X
+4067(threads)X
+555 2985(whose)N
+782(sole)X
+932(purpose)X
+1207(is)X
+1281(to)X
+1364(prefetch)X
+1649(pages)X
+1853(and)X
+1990(wait)X
+2149(on)X
+2250(them.)X
+2471(There)X
+2680(is)X
+2754(still)X
+2894(no)X
+2995(way)X
+3150(to)X
+3233(enforce)X
+3496(write)X
+3682(ordering)X
+3975(other)X
+4161(than)X
+555 3075(keeping)N
+829(pages)X
+1032(in)X
+1114(user)X
+1268(memory)X
+1555(and)X
+1691(using)X
+1884(the)X
+3 f
+2002(fsync)X
+1 f
+2180(\(3\))X
+2294(system)X
+2536(call)X
+2672(to)X
+2754(perform)X
+3033(synchronous)X
+3458(writes.)X
+755 3198(In)N
+845(the)X
+966(area)X
+1124(of)X
+1214(\256le)X
+1339(systems,)X
+1635(the)X
+1756(fast)X
+1895(\256le)X
+2020(system)X
+2265(\(FFS\))X
+2474([MCKU84])X
+2871(allows)X
+3103(allocation)X
+3442(in)X
+3527(units)X
+3704(up)X
+3806(to)X
+3890(64KBytes)X
+4232(as)X
+555 3288(opposed)N
+846(to)X
+932(the)X
+1054(4KByte)X
+1327(and)X
+1466(8KByte)X
+1738(\256gures)X
+1979(quoted)X
+2220(in)X
+2305([STON81].)X
+2711(The)X
+2859(measurements)X
+3341(in)X
+3426(this)X
+3564(paper)X
+3766(were)X
+3946(taken)X
+4143(from)X
+555 3378(an)N
+655(8KByte)X
+928(FFS,)X
+1104(but)X
+1230(as)X
+1320(LIBTP)X
+1565(runs)X
+1726(exclusively)X
+2114(in)X
+2199(user)X
+2356(space,)X
+2578(there)X
+2762(is)X
+2838(nothing)X
+3105(to)X
+3190(prevent)X
+3454(it)X
+3521(from)X
+3700(being)X
+3901(run)X
+4031(on)X
+4134(other)X
+555 3468(UNIX)N
+776(compatible)X
+1152(\256le)X
+1274(systems)X
+1547(\(e.g.)X
+1710(log-structured)X
+2180([ROSE91],)X
+2558(extent-based,)X
+3004(or)X
+3091(multi-block)X
+3484([SELT91]\).)X
+755 3591(Finally,)N
+1029(with)X
+1199(regard)X
+1433(to)X
+1523(the)X
+1648(process)X
+1916(structure,)X
+2244(neither)X
+2494(context)X
+2757(switch)X
+2993(time)X
+3162(nor)X
+3296(scheduling)X
+3670(around)X
+3920(semaphores)X
+555 3681(seems)N
+785(to)X
+881(affect)X
+1099(the)X
+1231(system)X
+1487(performance.)X
+1968(However,)X
+2317(the)X
+2449(implementation)X
+2984(of)X
+3084(semaphores)X
+3496(can)X
+3641(impact)X
+3892(performance)X
+555 3771(tremendously.)N
+1051(This)X
+1213(is)X
+1286(discussed)X
+1613(in)X
+1695(more)X
+1880(detail)X
+2078(in)X
+2160(section)X
+2407(4.3.)X
+755 3894(The)N
+908(Tuxedo)X
+1181(system)X
+1431(from)X
+1615(AT&T)X
+1861(is)X
+1941(a)X
+2004(transaction)X
+2383(manager)X
+2687(which)X
+2910(coordinates)X
+3307(distributed)X
+3676(transaction)X
+4055(commit)X
+555 3984(from)N
+738(a)X
+801(variety)X
+1051(of)X
+1145(different)X
+1449(local)X
+1632(transaction)X
+2011(managers.)X
+2386(At)X
+2493(this)X
+2634(time,)X
+2822(LIBTP)X
+3070(does)X
+3243(not)X
+3371(have)X
+3549(its)X
+3650(own)X
+3814(mechanism)X
+4205(for)X
+555 4074(distributed)N
+942(commit)X
+1231(processing,)X
+1639(but)X
+1786(could)X
+2009(be)X
+2130(used)X
+2322(as)X
+2434(a)X
+2515(local)X
+2716(transaction)X
+3113(agent)X
+3331(by)X
+3455(systems)X
+3752(such)X
+3943(as)X
+4054(Tuxedo)X
+555 4164([ANDR89].)N
+10 f
+863 4393(i)N
+870(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
+1 f
+903 4483(Buffer)N
+1133(Management)X
+10 f
+1672(g)X
+1 f
+1720(Data)X
+1892(must)X
+2067(be)X
+2163(copied)X
+2397(between)X
+2685(kernel)X
+2906(space)X
+3105(and)X
+3241(user)X
+3395(space.)X
+10 f
+1672 4573(g)N
+1 f
+1720(Buffer)X
+1950(pool)X
+2112(access)X
+2338(is)X
+2411(too)X
+2533(slow.)X
+10 f
+1672 4663(g)N
+1 f
+1720(There)X
+1928(is)X
+2001(no)X
+2101(way)X
+2255(to)X
+2337(request)X
+2589(prefetch.)X
+10 f
+1672 4753(g)N
+1 f
+1720(Replacement)X
+2159(is)X
+2232(usually)X
+2483(LRU)X
+2663(which)X
+2879(may)X
+3037(be)X
+3133(suboptimal)X
+3508(for)X
+3622(databases.)X
+10 f
+1672 4843(g)N
+1 f
+1720(There)X
+1928(is)X
+2001(no)X
+2101(way)X
+2255(to)X
+2337(guarantee)X
+2670(write)X
+2855(ordering.)X
+10 f
+863 4853(i)N
+870(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
+1 f
+903 4943(File)N
+1047(System)X
+10 f
+1672(g)X
+1 f
+1720(Allocation)X
+2078(is)X
+2151(done)X
+2327(in)X
+2409(small)X
+2602(blocks)X
+2831(\(usually)X
+3109(4K)X
+3227(or)X
+3314(8K\).)X
+10 f
+1672 5033(g)N
+1 f
+1720(Logical)X
+1985(organization)X
+2406(of)X
+2493(\256les)X
+2646(is)X
+2719(redundantly)X
+3122(expressed.)X
+10 f
+863 5043(i)N
+870(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
+1 f
+903 5133(Process)N
+1168(Structure)X
+10 f
+1672(g)X
+1 f
+1720(Context)X
+1993(switching)X
+2324(and)X
+2460(message)X
+2752(passing)X
+3012(are)X
+3131(too)X
+3253(slow.)X
+10 f
+1672 5223(g)N
+1 f
+1720(A)X
+1798(process)X
+2059(may)X
+2217(be)X
+2313(descheduled)X
+2730(while)X
+2928(holding)X
+3192(a)X
+3248(semaphore.)X
+10 f
+863 5233(i)N
+870(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
+863(c)X
+5193(c)Y
+5113(c)Y
+5033(c)Y
+4953(c)Y
+4873(c)Y
+4793(c)Y
+4713(c)Y
+4633(c)Y
+4553(c)Y
+4473(c)Y
+3990 5233(c)N
+5193(c)Y
+5113(c)Y
+5033(c)Y
+4953(c)Y
+4873(c)Y
+4793(c)Y
+4713(c)Y
+4633(c)Y
+4553(c)Y
+4473(c)Y
+3 f
+1156 5446(Table)N
+1371(One:)X
+1560(Shortcomings)X
+2051(of)X
+2138(UNIX)X
+2363(transaction)X
+2770(support)X
+3056(cited)X
+3241(in)X
+3327([STON81].)X
+
+3 p
+%%Page: 3 3
+10 s 10 xH 0 xS 3 f
+1 f
+755 630(The)N
+901(transaction)X
+1274(architecture)X
+1675(presented)X
+2004(in)X
+2087([YOUN91])X
+2474(is)X
+2548(very)X
+2712(similar)X
+2955(to)X
+3038(that)X
+3179(implemented)X
+3618(in)X
+3701(the)X
+3820(LIBTP.)X
+4103(While)X
+555 720([YOUN91])N
+947(presents)X
+1236(a)X
+1298(model)X
+1524(for)X
+1644(providing)X
+1981(transaction)X
+2359(services,)X
+2663(this)X
+2803(paper)X
+3007(focuses)X
+3273(on)X
+3378(the)X
+3501(implementation)X
+4028(and)X
+4169(per-)X
+555 810(formance)N
+881(of)X
+970(a)X
+1028(particular)X
+1358(system.)X
+1642(In)X
+1731(addition,)X
+2034(we)X
+2149(provide)X
+2415(detailed)X
+2690(comparisons)X
+3116(with)X
+3279(alternative)X
+3639(solutions:)X
+3970(traditional)X
+555 900(UNIX)N
+776(services)X
+1055(and)X
+1191(commercial)X
+1590(database)X
+1887(management)X
+2317(systems.)X
+3 f
+555 1086(3.)N
+655(Architecture)X
+1 f
+755 1209(The)N
+906(library)X
+1146(is)X
+1224(designed)X
+1534(to)X
+1621(provide)X
+1891(well)X
+2054(de\256ned)X
+2315(interfaces)X
+2653(to)X
+2740(the)X
+2863(services)X
+3147(required)X
+3440(for)X
+3559(transaction)X
+3936(processing.)X
+555 1299(These)N
+777(services)X
+1066(are)X
+1195(recovery,)X
+1527(concurrency)X
+1955(control,)X
+2232(and)X
+2378(the)X
+2506(management)X
+2946(of)X
+3043(shared)X
+3283(data.)X
+3487(First)X
+3663(we)X
+3787(will)X
+3941(discuss)X
+4201(the)X
+555 1389(design)N
+795(tradeoffs)X
+1112(in)X
+1205(the)X
+1334(selection)X
+1650(of)X
+1748(recovery,)X
+2081(concurrency)X
+2510(control,)X
+2787(and)X
+2933(buffer)X
+3160(management)X
+3600(implementations,)X
+4183(and)X
+555 1479(then)N
+713(we)X
+827(will)X
+971(present)X
+1223(the)X
+1341(overall)X
+1584(library)X
+1818(architecture)X
+2218(and)X
+2354(module)X
+2614(descriptions.)X
+3 f
+555 1665(3.1.)N
+715(Design)X
+966(Tradeoffs)X
+1 f
+3 f
+555 1851(3.1.1.)N
+775(Crash)X
+1004(Recovery)X
+1 f
+755 1974(The)N
+909(recovery)X
+1220(protocol)X
+1516(is)X
+1598(responsible)X
+1992(for)X
+2115(providing)X
+2455(the)X
+2582(transaction)X
+2963(semantics)X
+3308(discussed)X
+3644(earlier.)X
+3919(There)X
+4136(are)X
+4263(a)X
+555 2064(wide)N
+739(range)X
+946(of)X
+1041(recovery)X
+1351(protocols)X
+1677(available)X
+1995([HAER83],)X
+2395(but)X
+2525(we)X
+2647(can)X
+2786(crudely)X
+3054(divide)X
+3281(them)X
+3468(into)X
+3619(two)X
+3766(main)X
+3953(categories.)X
+555 2154(The)N
+706(\256rst)X
+856(category)X
+1159(records)X
+1422(all)X
+1528(modi\256cations)X
+1989(to)X
+2077(the)X
+2201(database)X
+2504(in)X
+2592(a)X
+2653(separate)X
+2942(\256le,)X
+3089(and)X
+3230(uses)X
+3393(this)X
+3533(\256le)X
+3660(\(log\))X
+3841(to)X
+3928(back)X
+4105(out)X
+4232(or)X
+555 2244(reapply)N
+825(these)X
+1019(modi\256cations)X
+1483(if)X
+1561(a)X
+1626(transaction)X
+2007(aborts)X
+2232(or)X
+2328(the)X
+2455(system)X
+2706(crashes.)X
+3012(We)X
+3153(call)X
+3298(this)X
+3442(set)X
+3560(the)X
+3 f
+3687(logging)X
+3963(protocols)X
+1 f
+4279(.)X
+555 2334(The)N
+703(second)X
+949(category)X
+1249(avoids)X
+1481(the)X
+1602(use)X
+1732(of)X
+1822(a)X
+1881(log)X
+2006(by)X
+2109(carefully)X
+2418(controlling)X
+2792(when)X
+2989(data)X
+3146(are)X
+3268(written)X
+3518(to)X
+3603(disk.)X
+3799(We)X
+3934(call)X
+4073(this)X
+4210(set)X
+555 2424(the)N
+3 f
+673(non-logging)X
+1096(protocols)X
+1 f
+1412(.)X
+755 2547(Non-logging)N
+1185(protocols)X
+1504(hold)X
+1666(dirty)X
+1837(buffers)X
+2085(in)X
+2167(main)X
+2347(memory)X
+2634(or)X
+2721(temporary)X
+3071(\256les)X
+3224(until)X
+3390(commit)X
+3654(and)X
+3790(then)X
+3948(force)X
+4134(these)X
+555 2637(pages)N
+769(to)X
+862(disk)X
+1026(at)X
+1115(transaction)X
+1498(commit.)X
+1813(While)X
+2040(we)X
+2165(can)X
+2308(use)X
+2446(temporary)X
+2807(\256les)X
+2971(to)X
+3064(hold)X
+3237(dirty)X
+3418(pages)X
+3631(that)X
+3781(may)X
+3949(need)X
+4131(to)X
+4223(be)X
+555 2727(evicted)N
+810(from)X
+988(memory)X
+1277(during)X
+1508(a)X
+1566(long-running)X
+2006(transaction,)X
+2400(the)X
+2520(only)X
+2684(user-level)X
+3023(mechanism)X
+3410(to)X
+3494(force)X
+3682(pages)X
+3887(to)X
+3971(disk)X
+4126(is)X
+4201(the)X
+3 f
+555 2817(fsync)N
+1 f
+733(\(2\))X
+850(system)X
+1095(call.)X
+1274(Unfortunately,)X
+3 f
+1767(fsync)X
+1 f
+1945(\(2\))X
+2062(is)X
+2138(an)X
+2237(expensive)X
+2581(system)X
+2826(call)X
+2965(in)X
+3050(that)X
+3193(it)X
+3260(forces)X
+3480(all)X
+3583(pages)X
+3789(of)X
+3879(a)X
+3938(\256le)X
+4062(to)X
+4146(disk,)X
+555 2907(and)N
+691(transactions)X
+1094(that)X
+1234(manage)X
+1504(more)X
+1689(than)X
+1847(one)X
+1983(\256le)X
+2105(must)X
+2280(issue)X
+2460(one)X
+2596(call)X
+2732(per)X
+2855(\256le.)X
+755 3030(In)N
+853(addition,)X
+3 f
+1166(fsync)X
+1 f
+1344(\(2\))X
+1469(provides)X
+1776(no)X
+1887(way)X
+2051(to)X
+2143(control)X
+2400(the)X
+2528(order)X
+2728(in)X
+2820(which)X
+3046(dirty)X
+3227(pages)X
+3440(are)X
+3569(written)X
+3826(to)X
+3918(disk.)X
+4121(Since)X
+555 3120(non-logging)N
+976(protocols)X
+1304(must)X
+1489(sometimes)X
+1861(order)X
+2061(writes)X
+2287(carefully)X
+2603([SULL92],)X
+2987(they)X
+3155(are)X
+3284(dif\256cult)X
+3567(to)X
+3659(implement)X
+4030(on)X
+4139(Unix)X
+555 3210(systems.)N
+868(As)X
+977(a)X
+1033(result,)X
+1251(we)X
+1365(have)X
+1537(chosen)X
+1780(to)X
+1862(implement)X
+2224(a)X
+2280(logging)X
+2544(protocol.)X
+755 3333(Logging)N
+1050(protocols)X
+1372(may)X
+1534(be)X
+1634(categorized)X
+2029(based)X
+2236(on)X
+2340(how)X
+2502(information)X
+2904(is)X
+2981(logged)X
+3223(\(physically)X
+3602(or)X
+3692(logically\))X
+4022(and)X
+4161(how)X
+555 3423(much)N
+767(is)X
+854(logged)X
+1106(\(before)X
+1373(images,)X
+1654(after)X
+1836(images)X
+2097(or)X
+2198(both\).)X
+2441(In)X
+3 f
+2542(physical)X
+2855(logging)X
+1 f
+3103(,)X
+3157(images)X
+3417(of)X
+3517(complete)X
+3844(physical)X
+4144(units)X
+555 3513(\(pages)N
+786(or)X
+874(buffers\))X
+1150(are)X
+1270(recorded,)X
+1593(while)X
+1792(in)X
+3 f
+1875(logical)X
+2118(logging)X
+1 f
+2387(a)X
+2444(description)X
+2820(of)X
+2907(the)X
+3025(operation)X
+3348(is)X
+3421(recorded.)X
+3763(Therefore,)X
+4121(while)X
+555 3603(we)N
+675(may)X
+839(record)X
+1071(entire)X
+1280(pages)X
+1489(in)X
+1577(a)X
+1639(physical)X
+1932(log,)X
+2080(we)X
+2200(need)X
+2378(only)X
+2546(record)X
+2777(the)X
+2900(records)X
+3162(being)X
+3365(modi\256ed)X
+3674(in)X
+3761(a)X
+3822(logical)X
+4065(log.)X
+4232(In)X
+555 3693(fact,)N
+718(physical)X
+1006(logging)X
+1271(can)X
+1404(be)X
+1501(thought)X
+1766(of)X
+1854(as)X
+1942(a)X
+1999(special)X
+2243(case)X
+2403(of)X
+2491(logical)X
+2730(logging,)X
+3015(since)X
+3201(the)X
+3320 0.3125(``records'')AX
+3686(that)X
+3827(we)X
+3942(log)X
+4065(in)X
+4148(logi-)X
+555 3783(cal)N
+673(logging)X
+941(might)X
+1151(be)X
+1251(physical)X
+1542(pages.)X
+1789(Since)X
+1991(logical)X
+2233(logging)X
+2501(is)X
+2578(both)X
+2743(more)X
+2931(space-ef\256cient)X
+3423(and)X
+3562(more)X
+3750(general,)X
+4030(we)X
+4147(have)X
+555 3873(chosen)N
+798(it)X
+862(for)X
+976(our)X
+1103(logging)X
+1367(protocol.)X
+755 3996(In)N
+3 f
+843(before-image)X
+1315(logging)X
+1 f
+1563(,)X
+1604(we)X
+1719(log)X
+1842(a)X
+1899(copy)X
+2076(of)X
+2164(the)X
+2283(data)X
+2438(before)X
+2665(the)X
+2784(update,)X
+3039(while)X
+3238(in)X
+3 f
+3321(after-image)X
+3739(logging)X
+1 f
+3987(,)X
+4027(we)X
+4141(log)X
+4263(a)X
+555 4086(copy)N
+740(of)X
+836(the)X
+963(data)X
+1126(after)X
+1303(the)X
+1429(update.)X
+1711(If)X
+1793(we)X
+1915(log)X
+2045(only)X
+2215(before-images,)X
+2723(then)X
+2889(there)X
+3078(is)X
+3159(suf\256cient)X
+3485(information)X
+3891(in)X
+3981(the)X
+4107(log)X
+4237(to)X
+555 4176(allow)N
+761(us)X
+860(to)X
+3 f
+950(undo)X
+1 f
+1150(the)X
+1276(transaction)X
+1656(\(go)X
+1791(back)X
+1971(to)X
+2061(the)X
+2187(state)X
+2361(represented)X
+2759(by)X
+2866(the)X
+2991(before-image\).)X
+3514(However,)X
+3876(if)X
+3952(the)X
+4077(system)X
+555 4266(crashes)N
+814(and)X
+952(a)X
+1010(committed)X
+1374(transaction's)X
+1806(changes)X
+2087(have)X
+2261(not)X
+2385(reached)X
+2658(the)X
+2778(disk,)X
+2953(we)X
+3068(have)X
+3241(no)X
+3342(means)X
+3568(to)X
+3 f
+3651(redo)X
+1 f
+3828(the)X
+3947(transaction)X
+555 4356(\(reapply)N
+849(the)X
+973(updates\).)X
+1311(Therefore,)X
+1675(logging)X
+1945(only)X
+2113(before-images)X
+2599(necessitates)X
+3004(forcing)X
+3262(dirty)X
+3439(pages)X
+3648(at)X
+3732(commit)X
+4002(time.)X
+4210(As)X
+555 4446(mentioned)N
+913(above,)X
+1145(forcing)X
+1397(pages)X
+1600(at)X
+1678(commit)X
+1942(is)X
+2015(considered)X
+2383(too)X
+2505(costly.)X
+755 4569(If)N
+834(we)X
+953(log)X
+1080(only)X
+1247(after-images,)X
+1694(then)X
+1857(there)X
+2043(is)X
+2121(suf\256cient)X
+2444(information)X
+2847(in)X
+2934(the)X
+3057(log)X
+3184(to)X
+3271(allow)X
+3474(us)X
+3570(to)X
+3657(redo)X
+3825(the)X
+3947(transaction)X
+555 4659(\(go)N
+687(forward)X
+967(to)X
+1054(the)X
+1177(state)X
+1348(represented)X
+1743(by)X
+1847(the)X
+1969(after-image\),)X
+2411(but)X
+2537(we)X
+2655(do)X
+2759(not)X
+2885(have)X
+3061(the)X
+3183(information)X
+3585(required)X
+3877(to)X
+3963(undo)X
+4147(tran-)X
+555 4749(sactions)N
+845(which)X
+1073(aborted)X
+1346(after)X
+1526(dirty)X
+1709(pages)X
+1924(were)X
+2113(written)X
+2372(to)X
+2466(disk.)X
+2670(Therefore,)X
+3039(logging)X
+3314(only)X
+3487(after-images)X
+3920(necessitates)X
+555 4839(holding)N
+819(all)X
+919(dirty)X
+1090(buffers)X
+1338(in)X
+1420(main)X
+1600(memory)X
+1887(until)X
+2053(commit)X
+2317(or)X
+2404(writing)X
+2655(them)X
+2835(to)X
+2917(a)X
+2973(temporary)X
+3323(\256le.)X
+755 4962(Since)N
+956(neither)X
+1202(constraint)X
+1541(\(forcing)X
+1823(pages)X
+2029(on)X
+2132(commit)X
+2399(or)X
+2489(buffering)X
+2811(pages)X
+3016(until)X
+3184(commit\))X
+3477(was)X
+3624(feasible,)X
+3916(we)X
+4032(chose)X
+4237(to)X
+555 5052(log)N
+683(both)X
+851(before)X
+1083(and)X
+1225(after)X
+1399(images.)X
+1672(The)X
+1823(only)X
+1991(remaining)X
+2342(consideration)X
+2800(is)X
+2879(when)X
+3079(changes)X
+3363(get)X
+3486(written)X
+3738(to)X
+3825(disk.)X
+4023(Changes)X
+555 5142(affect)N
+764(both)X
+931(data)X
+1090(pages)X
+1298(and)X
+1438(the)X
+1560(log.)X
+1726(If)X
+1804(the)X
+1926(changed)X
+2218(data)X
+2376(page)X
+2552(is)X
+2629(written)X
+2880(before)X
+3110(the)X
+3232(log)X
+3358(page,)X
+3554(and)X
+3694(the)X
+3816(system)X
+4062(crashes)X
+555 5232(before)N
+787(the)X
+911(log)X
+1039(page)X
+1217(is)X
+1296(written,)X
+1569(the)X
+1693(log)X
+1820(will)X
+1969(contain)X
+2230(insuf\256cient)X
+2615(information)X
+3018(to)X
+3105(undo)X
+3290(the)X
+3413(change.)X
+3706(This)X
+3873(violates)X
+4147(tran-)X
+555 5322(saction)N
+803(semantics,)X
+1160(since)X
+1346(some)X
+1536(changed)X
+1825(data)X
+1980(pages)X
+2184(may)X
+2343(not)X
+2466(have)X
+2638(been)X
+2810(written,)X
+3077(and)X
+3213(the)X
+3331(database)X
+3628(cannot)X
+3862(be)X
+3958(restored)X
+4237(to)X
+555 5412(its)N
+650(pre-transaction)X
+1152(state.)X
+755 5535(The)N
+914(log)X
+1050(record)X
+1290(describing)X
+1658(an)X
+1768(update)X
+2016(must)X
+2205(be)X
+2315(written)X
+2576(to)X
+2672(stable)X
+2893(storage)X
+3159(before)X
+3398(the)X
+3529(modi\256ed)X
+3846(page.)X
+4071(This)X
+4246(is)X
+3 f
+555 5625(write-ahead)N
+992(logging)X
+1 f
+1240(.)X
+1307(If)X
+1388(log)X
+1517(records)X
+1781(are)X
+1907(safely)X
+2126(written)X
+2380(to)X
+2469(disk,)X
+2649(data)X
+2810(pages)X
+3020(may)X
+3185(be)X
+3288(written)X
+3542(at)X
+3627(any)X
+3770(time)X
+3939(afterwards.)X
+555 5715(This)N
+721(means)X
+950(that)X
+1094(the)X
+1216(only)X
+1382(\256le)X
+1508(that)X
+1652(ever)X
+1815(needs)X
+2022(to)X
+2108(be)X
+2208(forced)X
+2438(to)X
+2524(disk)X
+2681(is)X
+2758(the)X
+2880(log.)X
+3046(Since)X
+3248(the)X
+3370(log)X
+3495(is)X
+3571(append-only,)X
+4015(modi\256ed)X
+
+4 p
+%%Page: 4 4
+10 s 10 xH 0 xS 1 f
+3 f
+1 f
+555 630(pages)N
+760(always)X
+1005(appear)X
+1242(at)X
+1322(the)X
+1442(end)X
+1580(and)X
+1718(may)X
+1878(be)X
+1976(written)X
+2224(to)X
+2307(disk)X
+2461(ef\256ciently)X
+2807(in)X
+2890(any)X
+3027(\256le)X
+3150(system)X
+3393(that)X
+3534(favors)X
+3756(sequential)X
+4102(order-)X
+555 720(ing)N
+677(\()X
+2 f
+704(e.g.)X
+1 f
+820(,)X
+860(FFS,)X
+1032(log-structured)X
+1502(\256le)X
+1624(system,)X
+1886(or)X
+1973(an)X
+2069(extent-based)X
+2495(system\).)X
+3 f
+555 906(3.1.2.)N
+775(Concurrency)X
+1245(Control)X
+1 f
+755 1029(The)N
+918(concurrency)X
+1354(control)X
+1619(protocol)X
+1923(is)X
+2013(responsible)X
+2415(for)X
+2546(maintaining)X
+2965(consistency)X
+3376(in)X
+3475(the)X
+3610(presence)X
+3929(of)X
+4033(multiple)X
+555 1119(accesses.)N
+897(There)X
+1114(are)X
+1242(several)X
+1499(alternative)X
+1867(solutions)X
+2183(such)X
+2358(as)X
+2453(locking,)X
+2741(optimistic)X
+3088(concurrency)X
+3514(control)X
+3769([KUNG81],)X
+4183(and)X
+555 1209(timestamp)N
+912(ordering)X
+1208([BERN80].)X
+1619(Since)X
+1821(optimistic)X
+2164(methods)X
+2459(and)X
+2599(timestamp)X
+2956(ordering)X
+3252(are)X
+3374(generally)X
+3696(more)X
+3884(complex)X
+4183(and)X
+555 1299(restrict)N
+804(concurrency)X
+1228(without)X
+1498(eliminating)X
+1888(starvation)X
+2230(or)X
+2323(deadlocks,)X
+2690(we)X
+2810(chose)X
+3018(two-phase)X
+3373(locking)X
+3638(\(2PL\).)X
+3890(Strict)X
+4088(2PL)X
+4246(is)X
+555 1389(suboptimal)N
+935(for)X
+1054(certain)X
+1297(data)X
+1455(structures)X
+1791(such)X
+1962(as)X
+2053(B-trees)X
+2309(because)X
+2588(it)X
+2656(can)X
+2792(limit)X
+2966(concurrency,)X
+3408(so)X
+3503(we)X
+3621(use)X
+3752(a)X
+3812(special)X
+4059(locking)X
+555 1479(protocol)N
+842(based)X
+1045(on)X
+1145(one)X
+1281(described)X
+1609(in)X
+1691([LEHM81].)X
+755 1602(The)N
+901(B-tree)X
+1123(locking)X
+1384(protocol)X
+1672(we)X
+1787(implemented)X
+2226(releases)X
+2502(locks)X
+2691(at)X
+2769(internal)X
+3034(nodes)X
+3241(in)X
+3323(the)X
+3441(tree)X
+3582(as)X
+3669(it)X
+3733(descends.)X
+4083(A)X
+4161(lock)X
+555 1692(on)N
+658(an)X
+757(internal)X
+1025(page)X
+1200(is)X
+1276(always)X
+1522(released)X
+1808(before)X
+2036(a)X
+2094(lock)X
+2254(on)X
+2356(its)X
+2453(child)X
+2635(is)X
+2710(obtained)X
+3008(\(that)X
+3177(is,)X
+3272(locks)X
+3463(are)X
+3584(not)X
+3 f
+3708(coupled)X
+1 f
+3996([BAY77])X
+555 1782(during)N
+786(descent\).)X
+1116(When)X
+1330(a)X
+1388(leaf)X
+1531(\(or)X
+1647(internal\))X
+1941(page)X
+2115(is)X
+2190(split,)X
+2369(a)X
+2427(write)X
+2614(lock)X
+2774(is)X
+2849(acquired)X
+3148(on)X
+3250(the)X
+3370(parent)X
+3593(before)X
+3821(the)X
+3941(lock)X
+4100(on)X
+4201(the)X
+555 1872(just-split)N
+855(page)X
+1028(is)X
+1102(released)X
+1387(\(locks)X
+1604(are)X
+3 f
+1724(coupled)X
+1 f
+2011(during)X
+2241(ascent\).)X
+2530(Write)X
+2734(locks)X
+2924(on)X
+3025(internal)X
+3291(pages)X
+3495(are)X
+3615(released)X
+3899(immediately)X
+555 1962(after)N
+723(the)X
+841(page)X
+1013(is)X
+1086(updated,)X
+1380(but)X
+1502(locks)X
+1691(on)X
+1791(leaf)X
+1932(pages)X
+2135(are)X
+2254(held)X
+2412(until)X
+2578(the)X
+2696(end)X
+2832(of)X
+2919(the)X
+3037(transaction.)X
+755 2085(Since)N
+964(locks)X
+1164(are)X
+1294(released)X
+1589(during)X
+1828(descent,)X
+2119(the)X
+2247(structure)X
+2558(of)X
+2655(the)X
+2783(tree)X
+2934(may)X
+3102(change)X
+3360(above)X
+3582(a)X
+3648(node)X
+3834(being)X
+4042(used)X
+4219(by)X
+555 2175(some)N
+752(process.)X
+1061(If)X
+1143(that)X
+1291(process)X
+1560(must)X
+1743(later)X
+1914(ascend)X
+2161(the)X
+2287(tree)X
+2435(because)X
+2717(of)X
+2811(a)X
+2874(page)X
+3053(split,)X
+3237(any)X
+3380(such)X
+3554(change)X
+3809(must)X
+3991(not)X
+4120(cause)X
+555 2265(confusion.)N
+938(We)X
+1077(use)X
+1211(the)X
+1336(technique)X
+1675(described)X
+2010(in)X
+2099([LEHM81])X
+2487(which)X
+2710(exploits)X
+2989(the)X
+3113(ordering)X
+3411(of)X
+3504(data)X
+3664(on)X
+3770(a)X
+3832(B-tree)X
+4059(page)X
+4237(to)X
+555 2355(guarantee)N
+888(that)X
+1028(no)X
+1128(process)X
+1389(ever)X
+1548(gets)X
+1697(lost)X
+1832(as)X
+1919(a)X
+1975(result)X
+2173(of)X
+2260(internal)X
+2525(page)X
+2697(updates)X
+2962(made)X
+3156(by)X
+3256(other)X
+3441(processes.)X
+755 2478(If)N
+836(a)X
+899(transaction)X
+1278(that)X
+1425(updates)X
+1697(a)X
+1760(B-tree)X
+1988(aborts,)X
+2231(the)X
+2356(user-visible)X
+2757(changes)X
+3043(to)X
+3131(the)X
+3255(tree)X
+3402(must)X
+3583(be)X
+3685(rolled)X
+3898(back.)X
+4116(How-)X
+555 2568(ever,)N
+735(changes)X
+1015(to)X
+1097(the)X
+1215(internal)X
+1480(nodes)X
+1687(of)X
+1774(the)X
+1892(tree)X
+2033(need)X
+2205(not)X
+2327(be)X
+2423(rolled)X
+2630(back,)X
+2822(since)X
+3007(these)X
+3192(pages)X
+3395(contain)X
+3651(no)X
+3751(user-visible)X
+4145(data.)X
+555 2658(When)N
+771(rolling)X
+1008(back)X
+1184(a)X
+1244(transaction,)X
+1640(we)X
+1758(roll)X
+1893(back)X
+2069(all)X
+2173(leaf)X
+2318(page)X
+2494(updates,)X
+2783(but)X
+2909(no)X
+3013(internal)X
+3281(insertions)X
+3615(or)X
+3705(page)X
+3880(splits.)X
+4111(In)X
+4201(the)X
+555 2748(worst)N
+759(case,)X
+944(this)X
+1085(will)X
+1235(leave)X
+1431(a)X
+1493(leaf)X
+1640(page)X
+1818(less)X
+1964(than)X
+2128(half)X
+2279(full.)X
+2456(This)X
+2624(may)X
+2788(cause)X
+2993(poor)X
+3166(space)X
+3371(utilization,)X
+3741(but)X
+3869(does)X
+4042(not)X
+4170(lose)X
+555 2838(user)N
+709(data.)X
+755 2961(Holding)N
+1038(locks)X
+1228(on)X
+1329(leaf)X
+1471(pages)X
+1675(until)X
+1842(transaction)X
+2215(commit)X
+2480(guarantees)X
+2845(that)X
+2986(no)X
+3087(other)X
+3273(process)X
+3535(can)X
+3668(insert)X
+3866(or)X
+3953(delete)X
+4165(data)X
+555 3051(that)N
+711(has)X
+854(been)X
+1042(touched)X
+1332(by)X
+1448(this)X
+1598(process.)X
+1914(Rolling)X
+2188(back)X
+2375(insertions)X
+2721(and)X
+2872(deletions)X
+3196(on)X
+3311(leaf)X
+3467(pages)X
+3685(guarantees)X
+4064(that)X
+4219(no)X
+555 3141(aborted)N
+819(updates)X
+1087(are)X
+1209(ever)X
+1371(visible)X
+1607(to)X
+1692(other)X
+1880(transactions.)X
+2326(Leaving)X
+2612(page)X
+2787(splits)X
+2978(intact)X
+3179(permits)X
+3442(us)X
+3536(to)X
+3621(release)X
+3867(internal)X
+4134(write)X
+555 3231(locks)N
+744(early.)X
+965(Thus)X
+1145(transaction)X
+1517(semantics)X
+1853(are)X
+1972(preserved,)X
+2325(and)X
+2461(locks)X
+2650(are)X
+2769(held)X
+2927(for)X
+3041(shorter)X
+3284(periods.)X
+755 3354(The)N
+901(extra)X
+1083(complexity)X
+1464(introduced)X
+1828(by)X
+1929(this)X
+2065(locking)X
+2326(protocol)X
+2614(appears)X
+2881(substantial,)X
+3264(but)X
+3387(it)X
+3452(is)X
+3525(important)X
+3856(for)X
+3970(multi-user)X
+555 3444(execution.)N
+950(The)X
+1118(bene\256ts)X
+1410(of)X
+1520(non-two-phase)X
+2040(locking)X
+2323(on)X
+2446(B-trees)X
+2721(are)X
+2863(well)X
+3044(established)X
+3443(in)X
+3548(the)X
+3689(database)X
+4009(literature)X
+555 3534([BAY77],)N
+899([LEHM81].)X
+1320(If)X
+1394(a)X
+1450(process)X
+1711(held)X
+1869(locks)X
+2058(until)X
+2224(it)X
+2288(committed,)X
+2670(then)X
+2828(a)X
+2884(long-running)X
+3322(update)X
+3556(could)X
+3754(lock)X
+3912(out)X
+4034(all)X
+4134(other)X
+555 3624(transactions)N
+967(by)X
+1076(preventing)X
+1448(any)X
+1593(other)X
+1787(process)X
+2057(from)X
+2241(locking)X
+2509(the)X
+2635(root)X
+2792(page)X
+2972(of)X
+3067(the)X
+3193(tree.)X
+3382(The)X
+3535(B-tree)X
+3764(locking)X
+4032(protocol)X
+555 3714(described)N
+884(above)X
+1096(guarantees)X
+1460(that)X
+1600(locks)X
+1789(on)X
+1889(internal)X
+2154(pages)X
+2357(are)X
+2476(held)X
+2634(for)X
+2748(extremely)X
+3089(short)X
+3269(periods,)X
+3545(thereby)X
+3806(increasing)X
+4156(con-)X
+555 3804(currency.)N
+3 f
+555 3990(3.1.3.)N
+775(Management)X
+1245(of)X
+1332(Shared)X
+1596(Data)X
+1 f
+755 4113(Database)N
+1075(systems)X
+1353(permit)X
+1587(many)X
+1790(users)X
+1980(to)X
+2067(examine)X
+2364(and)X
+2505(update)X
+2744(the)X
+2866(same)X
+3055(data)X
+3213(concurrently.)X
+3683(In)X
+3774(order)X
+3968(to)X
+4054(provide)X
+555 4203(this)N
+702(concurrent)X
+1078(access)X
+1316(and)X
+1464(enforce)X
+1738(the)X
+1868(write-ahead)X
+2280(logging)X
+2556(protocol)X
+2855(described)X
+3195(in)X
+3289(section)X
+3548(3.1.1,)X
+3759(we)X
+3884(use)X
+4022(a)X
+4089(shared)X
+555 4293(memory)N
+848(buffer)X
+1071(manager.)X
+1414(Not)X
+1559(only)X
+1726(does)X
+1898(this)X
+2038(provide)X
+2308(the)X
+2431(guarantees)X
+2800(we)X
+2919(require,)X
+3192(but)X
+3319(a)X
+3380(user-level)X
+3722(buffer)X
+3944(manager)X
+4246(is)X
+555 4383(frequently)N
+916(faster)X
+1126(than)X
+1295(using)X
+1498(the)X
+1626(\256le)X
+1758(system)X
+2010(buffer)X
+2237(cache.)X
+2491(Reads)X
+2717(or)X
+2814(writes)X
+3040(involving)X
+3376(the)X
+3504(\256le)X
+3636(system)X
+3888(buffer)X
+4115(cache)X
+555 4473(often)N
+746(require)X
+1000(copying)X
+1284(data)X
+1444(between)X
+1738(user)X
+1898(and)X
+2040(kernel)X
+2266(space)X
+2470(while)X
+2673(a)X
+2734(user-level)X
+3076(buffer)X
+3298(manager)X
+3600(can)X
+3737(return)X
+3954(pointers)X
+4237(to)X
+555 4563(data)N
+709(pages)X
+912(directly.)X
+1217(Additionally,)X
+1661(if)X
+1730(more)X
+1915(than)X
+2073(one)X
+2209(process)X
+2470(uses)X
+2628(the)X
+2746(same)X
+2931(page,)X
+3123(then)X
+3281(fewer)X
+3485(copies)X
+3710(may)X
+3868(be)X
+3964(required.)X
+3 f
+555 4749(3.2.)N
+715(Module)X
+997(Architecture)X
+1 f
+755 4872(The)N
+913(preceding)X
+1262(sections)X
+1552(described)X
+1892(modules)X
+2195(for)X
+2321(managing)X
+2669(the)X
+2799(transaction)X
+3183(log,)X
+3337(locks,)X
+3558(and)X
+3706(a)X
+3774(cache)X
+3990(of)X
+4089(shared)X
+555 4962(buffers.)N
+847(In)X
+938(addition,)X
+1244(we)X
+1362(need)X
+1538(to)X
+1624(provide)X
+1893(functionality)X
+2326(for)X
+2444(transaction)X
+2 f
+2819(begin)X
+1 f
+2997(,)X
+2 f
+3040(commit)X
+1 f
+3276(,)X
+3319(and)X
+2 f
+3458(abort)X
+1 f
+3654(processing,)X
+4040(necessi-)X
+555 5052(tating)N
+769(a)X
+837(transaction)X
+1221(manager.)X
+1570(In)X
+1669(order)X
+1871(to)X
+1965(arbitrate)X
+2265(concurrent)X
+2641(access)X
+2879(to)X
+2973(locks)X
+3173(and)X
+3320(buffers,)X
+3599(we)X
+3724(include)X
+3991(a)X
+4058(process)X
+555 5142(management)N
+995(module)X
+1264(which)X
+1489(manages)X
+1799(a)X
+1864(collection)X
+2209(of)X
+2305(semaphores)X
+2713(used)X
+2889(to)X
+2980(block)X
+3187(and)X
+3332(release)X
+3585(processes.)X
+3962(Finally,)X
+4237(in)X
+555 5232(order)N
+752(to)X
+841(provide)X
+1113(a)X
+1176(simple,)X
+1436(standard)X
+1735(interface)X
+2044(we)X
+2165(have)X
+2344(modi\256ed)X
+2655(the)X
+2780(database)X
+3084(access)X
+3317(routines)X
+3602(\()X
+3 f
+3629(db)X
+1 f
+3717(\(3\)\).)X
+3904(For)X
+4041(the)X
+4165(pur-)X
+555 5322(poses)N
+758(of)X
+850(this)X
+990(paper)X
+1194(we)X
+1313(call)X
+1453(the)X
+1575(modi\256ed)X
+1883(package)X
+2171(the)X
+3 f
+2293(Record)X
+2567(Manager)X
+1 f
+2879(.)X
+2943(Figure)X
+3176(one)X
+3316(shows)X
+3540(the)X
+3662(main)X
+3846(interfaces)X
+4183(and)X
+555 5412(architecture)N
+955(of)X
+1042(LIBTP.)X
+
+5 p
+%%Page: 5 5
+10 s 10 xH 0 xS 1 f
+3 f
+1 f
+11 s
+1851 1520(log_commit)N
+2764 2077(buf_unpin)N
+2764 1987(buf_get)N
+3633 1408(buf_unpin)N
+3633 1319(buf_pin)N
+3633 1230(buf_get)N
+3 f
+17 s
+1163 960(Txn)N
+1430(M)X
+1559(anager)X
+2582(Record)X
+3040(M)X
+3169(anager)X
+1 Dt
+2363 726 MXY
+0 355 Dl
+1426 0 Dl
+0 -355 Dl
+-1426 0 Dl
+3255 1616 MXY
+0 535 Dl
+534 0 Dl
+0 -535 Dl
+-534 0 Dl
+2185 MX
+0 535 Dl
+535 0 Dl
+0 -535 Dl
+-535 0 Dl
+1116 MX
+0 535 Dl
+534 0 Dl
+0 -535 Dl
+-534 0 Dl
+726 MY
+0 355 Dl
+891 0 Dl
+0 -355 Dl
+-891 0 Dl
+1 f
+11 s
+2207 1297(lock)N
+2564 1386(log)N
+865(unlock_all)X
+1851 1609(log_unroll)N
+1650 2508 MXY
+0 178 Dl
+1605 0 Dl
+0 -178 Dl
+-1605 0 Dl
+1294 1616 MXY
+19 -30 Dl
+-19 11 Dl
+-20 -11 Dl
+20 30 Dl
+0 -535 Dl
+2319 2508 MXY
+-22 -30 Dl
+4 23 Dl
+-18 14 Dl
+36 -7 Dl
+-936 -357 Dl
+3277 2455(sleep_on)N
+1405 1616 MXY
+36 4 Dl
+-18 -13 Dl
+1 -22 Dl
+-19 31 Dl
+1070 -535 Dl
+2631 2508 MXY
+36 6 Dl
+-18 -14 Dl
+3 -22 Dl
+-21 30 Dl
+891 -357 Dl
+1426 2455(sleep_on)N
+3255 1884 MXY
+-31 -20 Dl
+11 20 Dl
+-11 19 Dl
+31 -19 Dl
+-535 0 Dl
+1554 2366(wake)N
+3277(wake)X
+2185 1884 MXY
+-31 -20 Dl
+12 20 Dl
+-12 19 Dl
+31 -19 Dl
+-356 0 Dl
+0 -803 Dl
+3 f
+17 s
+1236 1851(Lock)N
+1118 2030(M)N
+1247(anager)X
+2339 1851(Log)N
+2187 2030(M)N
+2316(anager)X
+3333 1851(Buffer)N
+3257 2030(M)N
+3386(anager)X
+3522 1616 MXY
+20 -30 Dl
+-20 11 Dl
+-20 -11 Dl
+20 30 Dl
+0 -535 Dl
+1950 2654(Process)N
+2424(M)X
+2553(anager)X
+2542 1616 MXY
+19 -30 Dl
+-19 11 Dl
+-20 -11 Dl
+20 30 Dl
+0 -535 Dl
+1 f
+11 s
+2207 1364(unlock)N
+2452 2508 MXY
+20 -31 Dl
+-20 11 Dl
+-19 -11 Dl
+19 31 Dl
+0 -357 Dl
+2497 2322(sleep_on)N
+2497 2233(wake)N
+3 Dt
+-1 Ds
+3 f
+10 s
+1790 2830(Figure)N
+2037(1:)X
+2144(Library)X
+2435(module)X
+2708(interfaces.)X
+1 f
+10 f
+555 3010(h)N
+579(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)X
+3 f
+555 3286(3.2.1.)N
+775(The)X
+928(Log)X
+1081(Manager)X
+1 f
+755 3409(The)N
+3 f
+907(Log)X
+1067(Manager)X
+1 f
+1406(enforces)X
+1706(the)X
+1831(write-ahead)X
+2238(logging)X
+2509(protocol.)X
+2843(Its)X
+2949(primitive)X
+3268(operations)X
+3628(are)X
+2 f
+3753(log)X
+1 f
+3855(,)X
+2 f
+3901(log_commit)X
+1 f
+4279(,)X
+2 f
+555 3499(log_read)N
+1 f
+844(,)X
+2 f
+889(log_roll)X
+1 f
+1171(and)X
+2 f
+1312(log_unroll)X
+1 f
+1649(.)X
+1714(The)X
+2 f
+1864(log)X
+1 f
+1991(call)X
+2132(performs)X
+2447(a)X
+2508(buffered)X
+2806(write)X
+2996(of)X
+3088(the)X
+3211(speci\256ed)X
+3520(log)X
+3646(record)X
+3876(and)X
+4016(returns)X
+4263(a)X
+555 3589(unique)N
+809(log)X
+947(sequence)X
+1278(number)X
+1559(\(LSN\).)X
+1840(This)X
+2017(LSN)X
+2203(may)X
+2376(then)X
+2549(be)X
+2660(used)X
+2842(to)X
+2939(retrieve)X
+3220(a)X
+3291(record)X
+3532(from)X
+3723(the)X
+3856(log)X
+3993(using)X
+4201(the)X
+2 f
+555 3679(log_read)N
+1 f
+865(call.)X
+1042(The)X
+2 f
+1188(log)X
+1 f
+1311(interface)X
+1614(knows)X
+1844(very)X
+2008(little)X
+2175(about)X
+2374(the)X
+2493(internal)X
+2759(format)X
+2993(of)X
+3080(the)X
+3198(log)X
+3320(records)X
+3577(it)X
+3641(receives.)X
+3965(Rather,)X
+4219(all)X
+555 3769(log)N
+681(records)X
+942(are)X
+1065 0.4028(referenced)AX
+1430(by)X
+1534(a)X
+1594(header)X
+1833(structure,)X
+2158(a)X
+2218(log)X
+2344(record)X
+2574(type,)X
+2756(and)X
+2896(a)X
+2956(character)X
+3276(buffer)X
+3497(containing)X
+3859(the)X
+3981(data)X
+4138(to)X
+4223(be)X
+555 3859(logged.)N
+834(The)X
+980(log)X
+1103(record)X
+1330(type)X
+1489(is)X
+1563(used)X
+1731(to)X
+1814(call)X
+1951(the)X
+2070(appropriate)X
+2457(redo)X
+2621(and)X
+2758(undo)X
+2939(routines)X
+3217(during)X
+2 f
+3446(abort)X
+1 f
+3639(and)X
+2 f
+3775(commit)X
+1 f
+4031(process-)X
+555 3949(ing.)N
+721(While)X
+941(we)X
+1059(have)X
+1235(used)X
+1406(the)X
+3 f
+1528(Log)X
+1684(Manager)X
+1 f
+2019(to)X
+2104(provide)X
+2372(before)X
+2601(and)X
+2740(after)X
+2911(image)X
+3130(logging,)X
+3417(it)X
+3484(may)X
+3645(also)X
+3797(be)X
+3896(used)X
+4066(for)X
+4183(any)X
+555 4039(of)N
+642(the)X
+760(logging)X
+1024(algorithms)X
+1386(discussed.)X
+755 4162(The)N
+2 f
+905(log_commit)X
+1 f
+1308(operation)X
+1636(behaves)X
+1920(exactly)X
+2177(like)X
+2322(the)X
+2 f
+2445(log)X
+1 f
+2572(operation)X
+2900(but)X
+3026(guarantees)X
+3394(that)X
+3538(the)X
+3660(log)X
+3786(has)X
+3917(been)X
+4093(forced)X
+555 4252(to)N
+643(disk)X
+802(before)X
+1034(returning.)X
+1394(A)X
+1478(discussion)X
+1837(of)X
+1930(our)X
+2063(commit)X
+2333(strategy)X
+2613(appears)X
+2884(in)X
+2971(the)X
+3094(implementation)X
+3621(section)X
+3873(\(section)X
+4152(4.2\).)X
+2 f
+555 4342(Log_unroll)N
+1 f
+935(reads)X
+1126(log)X
+1249(records)X
+1507(from)X
+1684(the)X
+1803(log,)X
+1946(following)X
+2278(backward)X
+2611(transaction)X
+2983(pointers)X
+3261(and)X
+3397(calling)X
+3635(the)X
+3753(appropriate)X
+4139(undo)X
+555 4432(routines)N
+839(to)X
+927(implement)X
+1295(transaction)X
+1673(abort.)X
+1904(In)X
+1997(a)X
+2059(similar)X
+2307(manner,)X
+2 f
+2594(log_roll)X
+1 f
+2877(reads)X
+3073(log)X
+3201(records)X
+3464(sequentially)X
+3877(forward,)X
+4178(cal-)X
+555 4522(ling)N
+699(the)X
+817(appropriate)X
+1203(redo)X
+1366(routines)X
+1644(to)X
+1726(recover)X
+1988(committed)X
+2350(transactions)X
+2753(after)X
+2921(a)X
+2977(system)X
+3219(crash.)X
+3 f
+555 4708(3.2.2.)N
+775(The)X
+928(Buffer)X
+1171(Manager)X
+1 f
+755 4831(The)N
+3 f
+912(Buffer)X
+1167(Manager)X
+1 f
+1511(uses)X
+1681(a)X
+1749(pool)X
+1923(of)X
+2022(shared)X
+2264(memory)X
+2563(to)X
+2657(provide)X
+2934(a)X
+3002(least-recently-used)X
+3641(\(LRU\))X
+3886(block)X
+4095(cache.)X
+555 4921(Although)N
+886(the)X
+1013(current)X
+1270(library)X
+1513(provides)X
+1818(an)X
+1923(LRU)X
+2112(cache,)X
+2345(it)X
+2418(would)X
+2647(be)X
+2752(simple)X
+2994(to)X
+3085(add)X
+3229(alternate)X
+3534(replacement)X
+3955(policies)X
+4232(as)X
+555 5011(suggested)N
+903(by)X
+1015([CHOU85])X
+1408(or)X
+1507(to)X
+1601(provide)X
+1878(multiple)X
+2176(buffer)X
+2405(pools)X
+2610(with)X
+2784(different)X
+3092(policies.)X
+3412(Transactions)X
+3853(request)X
+4116(pages)X
+555 5101(from)N
+736(the)X
+859(buffer)X
+1081(manager)X
+1383(and)X
+1524(keep)X
+1701(them)X
+3 f
+1886(pinned)X
+1 f
+2145(to)X
+2232(ensure)X
+2466(that)X
+2610(they)X
+2772(are)X
+2895(not)X
+3021(written)X
+3272(to)X
+3358(disk)X
+3515(while)X
+3717(they)X
+3879(are)X
+4002(in)X
+4088(a)X
+4148(logi-)X
+555 5191(cally)N
+732(inconsistent)X
+1135(state.)X
+1343(When)X
+1556(page)X
+1729(replacement)X
+2143(is)X
+2217(necessary,)X
+2571(the)X
+3 f
+2689(Buffer)X
+2932(Manager)X
+1 f
+3264(\256nds)X
+3439(an)X
+3535(unpinned)X
+3853(page)X
+4025(and)X
+4161(then)X
+555 5281(checks)N
+794(with)X
+956(the)X
+3 f
+1074(Log)X
+1227(Manager)X
+1 f
+1559(to)X
+1641(ensure)X
+1871(that)X
+2011(the)X
+2129(write-ahead)X
+2529(protocol)X
+2816(is)X
+2889(enforced.)X
+3 f
+555 5467(3.2.3.)N
+775(The)X
+928(Lock)X
+1121(Manager)X
+1 f
+755 5590(The)N
+3 f
+901(Lock)X
+1095(Manager)X
+1 f
+1428(supports)X
+1720(general)X
+1978(purpose)X
+2253(locking)X
+2514(\(single)X
+2753(writer,)X
+2986(multiple)X
+3273(readers\))X
+3553(which)X
+3769(is)X
+3842(currently)X
+4152(used)X
+555 5680(to)N
+638(provide)X
+904(two-phase)X
+1254(locking)X
+1514(and)X
+1650(high)X
+1812(concurrency)X
+2230(B-tree)X
+2451(locking.)X
+2751(However,)X
+3086(the)X
+3204(general)X
+3461(purpose)X
+3735(nature)X
+3956(of)X
+4043(the)X
+4161(lock)X
+
+6 p
+%%Page: 6 6
+10 s 10 xH 0 xS 1 f
+3 f
+1 f
+555 630(manager)N
+857(provides)X
+1158(the)X
+1281(ability)X
+1510(to)X
+1597(support)X
+1862(a)X
+1923(variety)X
+2171(of)X
+2263(locking)X
+2528(protocols.)X
+2890(Currently,)X
+3241(all)X
+3345(locks)X
+3538(are)X
+3661(issued)X
+3885(at)X
+3967(the)X
+4089(granu-)X
+555 720(larity)N
+747(of)X
+837(a)X
+896(page)X
+1071(\(the)X
+1219(size)X
+1367(of)X
+1457(a)X
+1516(buffer)X
+1736(in)X
+1821(the)X
+1942(buffer)X
+2161(pool\))X
+2352(which)X
+2570(is)X
+2645(identi\256ed)X
+2969(by)X
+3071(two)X
+3213(4-byte)X
+3440(integers)X
+3716(\(a)X
+3801(\256le)X
+3925(id)X
+4009(and)X
+4147(page)X
+555 810(number\).)N
+898(This)X
+1071(provides)X
+1378(the)X
+1507(necessary)X
+1851(information)X
+2259(to)X
+2351(extend)X
+2595(the)X
+3 f
+2723(Lock)X
+2926(Manager)X
+1 f
+3268(to)X
+3360(perform)X
+3649(hierarchical)X
+4059(locking)X
+555 900([GRAY76].)N
+982(The)X
+1133(current)X
+1387(implementation)X
+1915(does)X
+2088(not)X
+2216(support)X
+2482(locks)X
+2677(at)X
+2760(other)X
+2950(granularities)X
+3376(and)X
+3517(does)X
+3689(not)X
+3816(promote)X
+4108(locks;)X
+555 990(these)N
+740(are)X
+859(obvious)X
+1132(future)X
+1344(additions)X
+1657(to)X
+1739(the)X
+1857(system.)X
+755 1113(If)N
+831(an)X
+929(incoming)X
+1253(lock)X
+1413(request)X
+1667(cannot)X
+1903(be)X
+2001(granted,)X
+2284(the)X
+2404(requesting)X
+2760(process)X
+3023(is)X
+3098(queued)X
+3352(for)X
+3467(the)X
+3586(lock)X
+3745(and)X
+3882(descheduled.)X
+555 1203(When)N
+769(a)X
+827(lock)X
+987(is)X
+1062(released,)X
+1368(the)X
+1488(wait)X
+1647(queue)X
+1860(is)X
+1934(traversed)X
+2250(and)X
+2387(any)X
+2524(newly)X
+2741(compatible)X
+3118(locks)X
+3308(are)X
+3428(granted.)X
+3730(Locks)X
+3947(are)X
+4067(located)X
+555 1293(via)N
+680(a)X
+743(\256le)X
+872(and)X
+1015(page)X
+1194(hash)X
+1368(table)X
+1551(and)X
+1694(are)X
+1820(chained)X
+2097(both)X
+2266(by)X
+2373(object)X
+2595(and)X
+2737(by)X
+2843(transaction,)X
+3241(facilitating)X
+3614(rapid)X
+3805(traversal)X
+4108(of)X
+4201(the)X
+555 1383(lock)N
+713(table)X
+889(during)X
+1118(transaction)X
+1490(commit)X
+1754(and)X
+1890(abort.)X
+755 1506(The)N
+907(primary)X
+1188(interfaces)X
+1528(to)X
+1617(the)X
+1742(lock)X
+1907(manager)X
+2211(are)X
+2 f
+2337(lock)X
+1 f
+2471(,)X
+2 f
+2518(unlock)X
+1 f
+2732(,)X
+2779(and)X
+2 f
+2922(lock_unlock_all)X
+1 f
+3434(.)X
+2 f
+3500(Lock)X
+1 f
+3682(obtains)X
+3939(a)X
+4001(new)X
+4161(lock)X
+555 1596(for)N
+680(a)X
+747(speci\256c)X
+1023(object.)X
+1290(There)X
+1509(are)X
+1638(also)X
+1797(two)X
+1947(variants)X
+2231(of)X
+2328(the)X
+2 f
+2456(lock)X
+1 f
+2620(request,)X
+2 f
+2902(lock_upgrade)X
+1 f
+3373(and)X
+2 f
+3519(lock_downgrade)X
+1 f
+4053(,)X
+4103(which)X
+555 1686(allow)N
+755(the)X
+875(caller)X
+1076(to)X
+1160(atomically)X
+1519(trade)X
+1701(a)X
+1758(lock)X
+1917(of)X
+2005(one)X
+2142(type)X
+2301(for)X
+2416(a)X
+2473(lock)X
+2632(of)X
+2720(another.)X
+2 f
+3022(Unlock)X
+1 f
+3275(releases)X
+3551(a)X
+3608(speci\256c)X
+3874(mode)X
+4073(of)X
+4161(lock)X
+555 1776(on)N
+655(a)X
+711(speci\256c)X
+976(object.)X
+2 f
+1232(Lock_unlock_all)X
+1 f
+1786(releases)X
+2061(all)X
+2161(the)X
+2279(locks)X
+2468(associated)X
+2818(with)X
+2980(a)X
+3036(speci\256c)X
+3301(transaction.)X
+3 f
+555 1962(3.2.4.)N
+775(The)X
+928(Process)X
+1207(Manager)X
+1 f
+755 2085(The)N
+3 f
+900(Process)X
+1179(Manager)X
+1 f
+1511(acts)X
+1656(as)X
+1743(a)X
+1799(user-level)X
+2136(scheduler)X
+2464(to)X
+2546(make)X
+2740(processes)X
+3068(wait)X
+3226(on)X
+3326(unavailable)X
+3716(locks)X
+3905(and)X
+4041(pending)X
+555 2175(buffer)N
+778(cache)X
+988(I/O.)X
+1161(For)X
+1297(each)X
+1470(process,)X
+1756(a)X
+1817(semaphore)X
+2190(is)X
+2268(maintained)X
+2649(upon)X
+2834(which)X
+3055(that)X
+3200(process)X
+3466(waits)X
+3660(when)X
+3859(it)X
+3928(needs)X
+4136(to)X
+4223(be)X
+555 2265(descheduled.)N
+1014(When)X
+1228(a)X
+1286(process)X
+1549(needs)X
+1754(to)X
+1838(be)X
+1936(run,)X
+2084(its)X
+2180(semaphore)X
+2549(is)X
+2623(cleared,)X
+2897(and)X
+3034(the)X
+3153(operating)X
+3477(system)X
+3720(reschedules)X
+4116(it.)X
+4201(No)X
+555 2355(sophisticated)N
+1002(scheduling)X
+1378(algorithm)X
+1718(is)X
+1799(applied;)X
+2085(if)X
+2162(the)X
+2288(lock)X
+2454(for)X
+2576(which)X
+2800(a)X
+2864(process)X
+3133(was)X
+3286(waiting)X
+3554(becomes)X
+3863(available,)X
+4201(the)X
+555 2445(process)N
+824(is)X
+905(made)X
+1107(runnable.)X
+1456(It)X
+1533(would)X
+1761(have)X
+1941(been)X
+2121(possible)X
+2411(to)X
+2501(change)X
+2757(the)X
+2883(kernel's)X
+3170(process)X
+3439(scheduler)X
+3775(to)X
+3865(interact)X
+4134(more)X
+555 2535(ef\256ciently)N
+900(with)X
+1062(the)X
+1180(lock)X
+1338(manager,)X
+1655(but)X
+1777(doing)X
+1979(so)X
+2070(would)X
+2290(have)X
+2462(compromised)X
+2918(our)X
+3045(commitment)X
+3469(to)X
+3551(a)X
+3607(user-level)X
+3944(package.)X
+3 f
+555 2721(3.2.5.)N
+775(The)X
+928(Transaction)X
+1361(Manager)X
+1 f
+755 2844(The)N
+3 f
+901(Transaction)X
+1335(Manager)X
+1 f
+1668(provides)X
+1965(the)X
+2084(standard)X
+2377(interface)X
+2680(of)X
+2 f
+2768(txn_begin)X
+1 f
+3084(,)X
+2 f
+3125(txn_commit)X
+1 f
+3499(,)X
+3540(and)X
+2 f
+3676(txn_abort)X
+1 f
+3987(.)X
+4047(It)X
+4116(keeps)X
+555 2934(track)N
+742(of)X
+835(all)X
+941(active)X
+1159(transactions,)X
+1588(assigns)X
+1845(unique)X
+2089(transaction)X
+2467(identi\256ers,)X
+2833(and)X
+2974(directs)X
+3213(the)X
+3336(abort)X
+3526(and)X
+3667(commit)X
+3936(processing.)X
+555 3024(When)N
+772(a)X
+2 f
+833(txn_begin)X
+1 f
+1174(is)X
+1252(issued,)X
+1497(the)X
+3 f
+1620(Transaction)X
+2058(Manager)X
+1 f
+2395(assigns)X
+2651(the)X
+2773(next)X
+2935(available)X
+3249(transaction)X
+3625(identi\256er,)X
+3958(allocates)X
+4263(a)X
+555 3114(per-process)N
+948(transaction)X
+1322(structure)X
+1625(in)X
+1709(shared)X
+1941(memory,)X
+2249(increments)X
+2622(the)X
+2741(count)X
+2940(of)X
+3028(active)X
+3241(transactions,)X
+3665(and)X
+3802(returns)X
+4046(the)X
+4165(new)X
+555 3204(transaction)N
+937(identi\256er)X
+1256(to)X
+1348(the)X
+1476(calling)X
+1724(process.)X
+2034(The)X
+2188(in-memory)X
+2573(transaction)X
+2954(structure)X
+3264(contains)X
+3560(a)X
+3625(pointer)X
+3881(into)X
+4034(the)X
+4161(lock)X
+555 3294(table)N
+734(for)X
+851(locks)X
+1043(held)X
+1204(by)X
+1307(this)X
+1445(transaction,)X
+1840(the)X
+1961(last)X
+2095(log)X
+2220(sequence)X
+2538(number,)X
+2826(a)X
+2885(transaction)X
+3260(state)X
+3430(\()X
+2 f
+3457(idle)X
+1 f
+(,)S
+2 f
+3620(running)X
+1 f
+3873(,)X
+2 f
+3915(aborting)X
+1 f
+4190(,)X
+4232(or)X
+2 f
+555 3384(committing\))N
+1 f
+942(,)X
+982(an)X
+1078(error)X
+1255(code,)X
+1447(and)X
+1583(a)X
+1639(semaphore)X
+2007(identi\256er.)X
+755 3507(At)N
+859(commit,)X
+1147(the)X
+3 f
+1269(Transaction)X
+1706(Manager)X
+1 f
+2042(calls)X
+2 f
+2213(log_commit)X
+1 f
+2615(to)X
+2700(record)X
+2929(the)X
+3050(end)X
+3189(of)X
+3279(transaction)X
+3654(and)X
+3793(to)X
+3878(\257ush)X
+4056(the)X
+4177(log.)X
+555 3597(Then)N
+743(it)X
+810(directs)X
+1047(the)X
+3 f
+1168(Lock)X
+1364(Manager)X
+1 f
+1699(to)X
+1784(release)X
+2031(all)X
+2134(locks)X
+2325(associated)X
+2677(with)X
+2841(the)X
+2961(given)X
+3161(transaction.)X
+3575(If)X
+3651(a)X
+3709(transaction)X
+4083(aborts,)X
+555 3687(the)N
+3 f
+680(Transaction)X
+1120(Manager)X
+1 f
+1459(calls)X
+1633(on)X
+2 f
+1739(log_unroll)X
+1 f
+2102(to)X
+2190(read)X
+2355(the)X
+2479(transaction's)X
+2915(log)X
+3043(records)X
+3306(and)X
+3448(undo)X
+3634(any)X
+3776(modi\256cations)X
+4237(to)X
+555 3777(the)N
+673(database.)X
+1010(As)X
+1119(in)X
+1201(the)X
+1319(commit)X
+1583(case,)X
+1762(it)X
+1826(then)X
+1984(calls)X
+2 f
+2151(lock_unlock_all)X
+1 f
+2683(to)X
+2765(release)X
+3009(the)X
+3127(transaction's)X
+3557(locks.)X
+3 f
+555 3963(3.2.6.)N
+775(The)X
+928(Record)X
+1198(Manager)X
+1 f
+755 4086(The)N
+3 f
+919(Record)X
+1208(Manager)X
+1 f
+1559(supports)X
+1869(the)X
+2006(abstraction)X
+2397(of)X
+2503(reading)X
+2783(and)X
+2938(writing)X
+3208(records)X
+3484(to)X
+3585(a)X
+3660(database.)X
+3996(We)X
+4147(have)X
+555 4176(modi\256ed)N
+861(the)X
+981(the)X
+1101(database)X
+1399(access)X
+1626(routines)X
+3 f
+1905(db)X
+1 f
+1993(\(3\))X
+2108([BSD91])X
+2418(to)X
+2501(call)X
+2638(the)X
+2757(log,)X
+2900(lock,)X
+3079(and)X
+3216(buffer)X
+3434(managers.)X
+3803(In)X
+3891(order)X
+4082(to)X
+4165(pro-)X
+555 4266(vide)N
+718(functionality)X
+1152(to)X
+1239(perform)X
+1523(undo)X
+1708(and)X
+1849(redo,)X
+2037(the)X
+3 f
+2160(Record)X
+2434(Manager)X
+1 f
+2770(de\256nes)X
+3021(a)X
+3081(collection)X
+3421(of)X
+3512(log)X
+3638(record)X
+3868(types)X
+4061(and)X
+4201(the)X
+555 4356(associated)N
+920(undo)X
+1115(and)X
+1266(redo)X
+1444(routines.)X
+1777(The)X
+3 f
+1937(Log)X
+2105(Manager)X
+1 f
+2452(performs)X
+2777(a)X
+2848(table)X
+3039(lookup)X
+3296(on)X
+3411(the)X
+3543(record)X
+3783(type)X
+3955(to)X
+4051(call)X
+4201(the)X
+555 4446(appropriate)N
+951(routines.)X
+1299(For)X
+1440(example,)X
+1762(the)X
+1890(B-tree)X
+2121(access)X
+2356(method)X
+2625(requires)X
+2913(two)X
+3062(log)X
+3193(record)X
+3428(types:)X
+3648(insert)X
+3855(and)X
+4000(delete.)X
+4241(A)X
+555 4536(replace)N
+808(operation)X
+1131(is)X
+1204(implemented)X
+1642(as)X
+1729(a)X
+1785(delete)X
+1997(followed)X
+2302(by)X
+2402(an)X
+2498(insert)X
+2696(and)X
+2832(is)X
+2905(logged)X
+3143(accordingly.)X
+3 f
+555 4722(3.3.)N
+715(Application)X
+1134(Architectures)X
+1 f
+755 4845(The)N
+907(structure)X
+1215(of)X
+1309(LIBTP)X
+1558(allows)X
+1794(application)X
+2177(designers)X
+2507(to)X
+2596(trade)X
+2784(off)X
+2905(performance)X
+3339(and)X
+3481(protection.)X
+3872(Since)X
+4076(a)X
+4138(large)X
+555 4935(portion)N
+810(of)X
+901(LIBTP's)X
+1205(functionality)X
+1638(is)X
+1715(provided)X
+2024(by)X
+2128(managing)X
+2468(structures)X
+2804(in)X
+2889(shared)X
+3122(memory,)X
+3432(its)X
+3530(structures)X
+3865(are)X
+3987(subject)X
+4237(to)X
+555 5025(corruption)N
+926(by)X
+1043(applications)X
+1467(when)X
+1678(the)X
+1813(library)X
+2064(is)X
+2154(linked)X
+2391(directly)X
+2673(with)X
+2852(the)X
+2987(application.)X
+3420(For)X
+3568(this)X
+3720(reason,)X
+3987(LIBTP)X
+4246(is)X
+555 5115(designed)N
+864(to)X
+950(allow)X
+1152(compilation)X
+1558(into)X
+1706(a)X
+1766(separate)X
+2053(server)X
+2273(process)X
+2537(which)X
+2756(may)X
+2917(be)X
+3016(accessed)X
+3321(via)X
+3442(a)X
+3501(socket)X
+3729(interface.)X
+4094(In)X
+4184(this)X
+555 5205(way)N
+712(LIBTP's)X
+1015(data)X
+1172(structures)X
+1507(are)X
+1629(protected)X
+1951(from)X
+2130(application)X
+2509(code,)X
+2704(but)X
+2829(communication)X
+3349(overhead)X
+3666(is)X
+3741(increased.)X
+4107(When)X
+555 5295(applications)N
+975(are)X
+1107(trusted,)X
+1377(LIBTP)X
+1631(may)X
+1801(be)X
+1909(compiled)X
+2239(directly)X
+2516(into)X
+2672(the)X
+2802(application)X
+3190(providing)X
+3533(improved)X
+3872(performance.)X
+555 5385(Figures)N
+815(two)X
+955(and)X
+1091(three)X
+1272(show)X
+1461(the)X
+1579(two)X
+1719(alternate)X
+2016(application)X
+2392(architectures.)X
+755 5508(There)N
+964(are)X
+1084(potentially)X
+1447(two)X
+1588(modes)X
+1818(in)X
+1901(which)X
+2118(one)X
+2255(might)X
+2462(use)X
+2590(LIBTP)X
+2833(in)X
+2916(a)X
+2972(server)X
+3189(based)X
+3392(architecture.)X
+3832(In)X
+3919(the)X
+4037(\256rst,)X
+4201(the)X
+555 5598(server)N
+778(would)X
+1004(provide)X
+1275(the)X
+1399(capability)X
+1741(to)X
+1829(respond)X
+2109(to)X
+2197(requests)X
+2486(to)X
+2574(each)X
+2747(of)X
+2839(the)X
+2962(low)X
+3107(level)X
+3288(modules)X
+3584(\(lock,)X
+3794(log,)X
+3941(buffer,)X
+4183(and)X
+555 5688(transaction)N
+944(managers\).)X
+1356(Unfortunately,)X
+1863(the)X
+1998(performance)X
+2442(of)X
+2546(such)X
+2730(a)X
+2803(system)X
+3062(is)X
+3152(likely)X
+3371(to)X
+3470(be)X
+3583(blindingly)X
+3947(slow)X
+4134(since)X
+
+7 p
+%%Page: 7 7
+10 s 10 xH 0 xS 1 f
+3 f
+1 f
+1 Dt
+1864 1125 MXY
+15 -26 Dl
+-15 10 Dl
+-14 -10 Dl
+14 26 Dl
+0 -266 Dl
+1315 1125 MXY
+15 -26 Dl
+-15 10 Dl
+-14 -10 Dl
+14 26 Dl
+0 -266 Dl
+3 Dt
+1133 1125 MXY
+0 798 Dl
+931 0 Dl
+0 -798 Dl
+-931 0 Dl
+1 Dt
+1266 1257 MXY
+0 133 Dl
+665 0 Dl
+0 -133 Dl
+-665 0 Dl
+3 f
+8 s
+1513 1351(driver)N
+1502 1617(LIBTP)N
+1266 1390 MXY
+0 400 Dl
+665 0 Dl
+0 -400 Dl
+-665 0 Dl
+3 Dt
+1133 726 MXY
+0 133 Dl
+931 0 Dl
+0 -133 Dl
+-931 0 Dl
+1 f
+1029 1098(txn_abort)N
+964 1015(txn_commit)N
+1018 932(txn_begin)N
+1910 1015(db_ops)N
+3 f
+1308 820(Application)N
+1645(Program)X
+1398 1218(Server)N
+1594(Process)X
+1 f
+1390 986(socket)N
+1569(interface)X
+1 Dt
+1848 967 MXY
+-23 -14 Dl
+8 14 Dl
+-8 15 Dl
+23 -15 Dl
+-50 0 Dl
+1324 MX
+23 15 Dl
+-9 -15 Dl
+9 -14 Dl
+-23 14 Dl
+50 0 Dl
+3 Dt
+2862 859 MXY
+0 1064 Dl
+932 0 Dl
+0 -1064 Dl
+-932 0 Dl
+1 Dt
+3178 1390 MXY
+24 -12 Dl
+-17 0 Dl
+-8 -15 Dl
+1 27 Dl
+150 -265 Dl
+3494 1390 MXY
+0 -27 Dl
+-8 15 Dl
+-16 1 Dl
+24 11 Dl
+-166 -265 Dl
+3 f
+3232 1617(LIBTP)N
+2995 1390 MXY
+0 400 Dl
+666 0 Dl
+0 -400 Dl
+-666 0 Dl
+992 MY
+0 133 Dl
+666 0 Dl
+0 -133 Dl
+-666 0 Dl
+3168 1086(Application)N
+1 f
+2939 1201(txn_begin)N
+2885 1284(txn_commit)N
+2950 1368(txn_abort)N
+3465 1284(db_ops)N
+3 f
+3155 766(Single)N
+3339(Process)X
+3 Dt
+-1 Ds
+811 2100(Figure)N
+1023(2:)X
+1107(Server)X
+1318(Architecture.)X
+1 f
+1727(In)X
+1811(this)X
+1934(con\256guration,)X
+811 2190(the)N
+916(library)X
+1113(is)X
+1183(loaded)X
+1380(into)X
+1507(a)X
+1562(server)X
+1744(process)X
+1962(which)X
+2145(is)X
+2214(ac-)X
+811 2280(cessed)N
+993(via)X
+1087(a)X
+1131(socket)X
+1310(interface.)X
+3 f
+2563 2100(Figure)N
+2803(3:)X
+2914(Single)X
+3140(Process)X
+3403(Architecture.)X
+1 f
+3839(In)X
+3950(this)X
+2563 2190(con\256guration,)N
+2948(the)X
+3053(library)X
+3250(routines)X
+3483(are)X
+3587(loaded)X
+3784(as)X
+3864(part)X
+3990(of)X
+2563 2280(the)N
+2657(application)X
+2957(and)X
+3065(accessed)X
+3303(via)X
+3397(a)X
+3441(subroutine)X
+3727(interface.)X
+10 s
+10 f
+555 2403(h)N
+579(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)X
+1 f
+555 2679(modifying)N
+909(a)X
+966(piece)X
+1157(of)X
+1245(data)X
+1400(would)X
+1621(require)X
+1870(three)X
+2051(or)X
+2138(possibly)X
+2424(four)X
+2578(separate)X
+2862(communications:)X
+3433(one)X
+3569(to)X
+3651(lock)X
+3809(the)X
+3927(data,)X
+4101(one)X
+4237(to)X
+555 2769(obtain)N
+781(the)X
+905(data,)X
+1085(one)X
+1227(to)X
+1315(log)X
+1443(the)X
+1567(modi\256cation,)X
+2017(and)X
+2159(possibly)X
+2451(one)X
+2593(to)X
+2681(transmit)X
+2969(the)X
+3093(modi\256ed)X
+3403(data.)X
+3583(Figure)X
+3817(four)X
+3976(shows)X
+4201(the)X
+555 2859(relative)N
+826(performance)X
+1263(for)X
+1387(retrieving)X
+1728(a)X
+1793(single)X
+2013(record)X
+2248(using)X
+2450(the)X
+2577(record)X
+2812(level)X
+2997(call)X
+3142(versus)X
+3376(using)X
+3578(the)X
+3705(lower)X
+3917(level)X
+4102(buffer)X
+555 2949(management)N
+987(and)X
+1125(locking)X
+1387(calls.)X
+1616(The)X
+1763(2:1)X
+1887(ratio)X
+2056(observed)X
+2367(in)X
+2450(the)X
+2569(single)X
+2781(process)X
+3043(case)X
+3203(re\257ects)X
+3456(the)X
+3575(additional)X
+3916(overhead)X
+4232(of)X
+555 3039(parsing)N
+819(eight)X
+1006(commands)X
+1380(rather)X
+1595(than)X
+1760(one)X
+1903(while)X
+2108(the)X
+2233(3:1)X
+2362(ratio)X
+2536(observed)X
+2853(in)X
+2942(the)X
+3067(client/server)X
+3491(architecture)X
+3898(re\257ects)X
+4157(both)X
+555 3129(the)N
+679(parsing)X
+941(and)X
+1083(the)X
+1207(communication)X
+1731(overheard.)X
+2118(Although)X
+2445(there)X
+2631(may)X
+2794(be)X
+2895(applications)X
+3307(which)X
+3528(could)X
+3731(tolerate)X
+3997(such)X
+4169(per-)X
+555 3219(formance,)N
+904(it)X
+973(seems)X
+1194(far)X
+1309(more)X
+1499(feasible)X
+1774(to)X
+1861(support)X
+2126(a)X
+2187(higher)X
+2417(level)X
+2597(interface,)X
+2923(such)X
+3094(as)X
+3185(that)X
+3329(provided)X
+3638(by)X
+3742(a)X
+3802(query)X
+4009(language)X
+555 3309(\()N
+2 f
+582(e.g.)X
+1 f
+718(SQL)X
+889([SQL86]\).)X
+755 3432(Although)N
+1081(LIBTP)X
+1327(does)X
+1498(not)X
+1624(have)X
+1800(an)X
+1900(SQL)X
+2075(parser,)X
+2316(we)X
+2433(have)X
+2608(built)X
+2777(a)X
+2836(server)X
+3056(application)X
+3435(using)X
+3631(the)X
+3752(toolkit)X
+3983(command)X
+555 3522(language)N
+882(\(TCL\))X
+1124([OUST90].)X
+1544(The)X
+1706(server)X
+1940(supports)X
+2248(a)X
+2321(command)X
+2674(line)X
+2831(interface)X
+3150(similar)X
+3409(to)X
+3508(the)X
+3643(subroutine)X
+4017(interface)X
+555 3612(de\256ned)N
+811(in)X
+3 f
+893(db)X
+1 f
+981(\(3\).)X
+1135(Since)X
+1333(it)X
+1397(is)X
+1470(based)X
+1673(on)X
+1773(TCL,)X
+1964(it)X
+2028(provides)X
+2324(control)X
+2571(structures)X
+2903(as)X
+2990(well.)X
+3 f
+555 3798(4.)N
+655(Implementation)X
+1 f
+3 f
+555 3984(4.1.)N
+715(Locking)X
+1014(and)X
+1162(Deadlock)X
+1502(Detection)X
+1 f
+755 4107(LIBTP)N
+1007(uses)X
+1175(two-phase)X
+1535(locking)X
+1805(for)X
+1929(user)X
+2093(data.)X
+2297(Strictly)X
+2562(speaking,)X
+2897(the)X
+3024(two)X
+3173(phases)X
+3416(in)X
+3507(two-phase)X
+3866(locking)X
+4135(are)X
+4263(a)X
+3 f
+555 4197(grow)N
+1 f
+756(phase,)X
+986(during)X
+1221(which)X
+1443(locks)X
+1638(are)X
+1763(acquired,)X
+2086(and)X
+2228(a)X
+3 f
+2290(shrink)X
+1 f
+2537(phase,)X
+2766(during)X
+3001(which)X
+3223(locks)X
+3418(are)X
+3543(released.)X
+3873(No)X
+3997(lock)X
+4161(may)X
+555 4287(ever)N
+720(be)X
+822(acquired)X
+1124(during)X
+1358(the)X
+1481(shrink)X
+1706(phase.)X
+1954(The)X
+2104(grow)X
+2294(phase)X
+2502(lasts)X
+2669(until)X
+2840(the)X
+2963(\256rst)X
+3112(release,)X
+3381(which)X
+3602(marks)X
+3823(the)X
+3946(start)X
+4109(of)X
+4201(the)X
+555 4377(shrink)N
+780(phase.)X
+1028(In)X
+1120(practice,)X
+1420(the)X
+1543(grow)X
+1733(phase)X
+1941(lasts)X
+2108(for)X
+2227(the)X
+2350(duration)X
+2642(of)X
+2734(a)X
+2795(transaction)X
+3172(in)X
+3259(LIBTP)X
+3506(and)X
+3647(in)X
+3734(commercial)X
+4138(data-)X
+555 4467(base)N
+721(systems.)X
+1037(The)X
+1184(shrink)X
+1406(phase)X
+1611(takes)X
+1798(place)X
+1990(during)X
+2221(transaction)X
+2595(commit)X
+2861(or)X
+2950(abort.)X
+3177(This)X
+3341(means)X
+3568(that)X
+3710(locks)X
+3901(are)X
+4022(acquired)X
+555 4557(on)N
+655(demand)X
+929(during)X
+1158(the)X
+1276(lifetime)X
+1545(of)X
+1632(a)X
+1688(transaction,)X
+2080(and)X
+2216(held)X
+2374(until)X
+2540(commit)X
+2804(time,)X
+2986(at)X
+3064(which)X
+3280(point)X
+3464(all)X
+3564(locks)X
+3753(are)X
+3872(released.)X
+755 4680(If)N
+832(multiple)X
+1121(transactions)X
+1527(are)X
+1649(active)X
+1864(concurrently,)X
+2313(deadlocks)X
+2657(can)X
+2792(occur)X
+2994(and)X
+3133(must)X
+3311(be)X
+3410(detected)X
+3701(and)X
+3840(resolved.)X
+4174(The)X
+555 4770(lock)N
+715(table)X
+893(can)X
+1027(be)X
+1125(thought)X
+1391(of)X
+1480(as)X
+1569(a)X
+1627(representation)X
+2104(of)X
+2193(a)X
+2251(directed)X
+2532(graph.)X
+2777(The)X
+2924(nodes)X
+3133(in)X
+3216(the)X
+3335(graph)X
+3539(are)X
+3659(transactions.)X
+4103(Edges)X
+555 4860(represent)N
+878(the)X
+3 f
+1004(waits-for)X
+1 f
+1340(relation)X
+1613(between)X
+1909(transactions;)X
+2342(if)X
+2419(transaction)X
+2 f
+2799(A)X
+1 f
+2876(is)X
+2957(waiting)X
+3225(for)X
+3347(a)X
+3411(lock)X
+3577(held)X
+3743(by)X
+3851(transaction)X
+2 f
+4230(B)X
+1 f
+4279(,)X
+555 4950(then)N
+716(a)X
+775(directed)X
+1057(edge)X
+1232(exists)X
+1437(from)X
+2 f
+1616(A)X
+1 f
+1687(to)X
+2 f
+1771(B)X
+1 f
+1842(in)X
+1926(the)X
+2046(graph.)X
+2291(A)X
+2371(deadlock)X
+2683(exists)X
+2887(if)X
+2958(a)X
+3016(cycle)X
+3208(appears)X
+3476(in)X
+3560(the)X
+3680(graph.)X
+3925(By)X
+4040(conven-)X
+555 5040(tion,)N
+719(no)X
+819(transaction)X
+1191(ever)X
+1350(waits)X
+1539(for)X
+1653(a)X
+1709(lock)X
+1867(it)X
+1931(already)X
+2188(holds,)X
+2401(so)X
+2492(re\257exive)X
+2793(edges)X
+2996(are)X
+3115(impossible.)X
+755 5163(A)N
+836(distinguished)X
+1285(process)X
+1549(monitors)X
+1856(the)X
+1977(lock)X
+2138(table,)X
+2337(searching)X
+2668(for)X
+2785(cycles.)X
+3048(The)X
+3195(frequency)X
+3539(with)X
+3703(which)X
+3921(this)X
+4058(process)X
+555 5253(runs)N
+716(is)X
+792(user-settable;)X
+1243(for)X
+1360(the)X
+1481(multi-user)X
+1833(tests)X
+1998(discussed)X
+2328(in)X
+2413(section)X
+2663(5.1.2,)X
+2866(it)X
+2933(has)X
+3063(been)X
+3238(set)X
+3350(to)X
+3435(wake)X
+3628(up)X
+3731(every)X
+3932(second,)X
+4197(but)X
+555 5343(more)N
+742(sophisticated)X
+1182(schedules)X
+1516(are)X
+1636(certainly)X
+1938(possible.)X
+2261(When)X
+2474(a)X
+2531(cycle)X
+2722(is)X
+2796(detected,)X
+3105(one)X
+3242(of)X
+3330(the)X
+3449(transactions)X
+3853(in)X
+3936(the)X
+4055(cycle)X
+4246(is)X
+555 5433(nominated)N
+917(and)X
+1057(aborted.)X
+1362(When)X
+1578(the)X
+1700(transaction)X
+2076(aborts,)X
+2315(it)X
+2382(rolls)X
+2547(back)X
+2722(its)X
+2820(changes)X
+3102(and)X
+3241(releases)X
+3519(its)X
+3617(locks,)X
+3829(thereby)X
+4093(break-)X
+555 5523(ing)N
+677(the)X
+795(cycle)X
+985(in)X
+1067(the)X
+1185(graph.)X
+
+8 p
+%%Page: 8 8
+10 s 10 xH 0 xS 1 f
+3 f
+1 f
+4 Ds
+1 Dt
+1866 865 MXY
+1338 0 Dl
+1866 1031 MXY
+1338 0 Dl
+1866 1199 MXY
+1338 0 Dl
+1866 1366 MXY
+1338 0 Dl
+1866 1533 MXY
+1338 0 Dl
+1866 1701 MXY
+1338 0 Dl
+-1 Ds
+5 Dt
+1866 1868 MXY
+1338 0 Dl
+1 Dt
+1 Di
+2981 MX
+ 2981 1868 lineto
+ 2981 1575 lineto
+ 3092 1575 lineto
+ 3092 1868 lineto
+ 2981 1868 lineto
+closepath 21 2981 1575 3092 1868 Dp
+2646 MX
+ 2646 1868 lineto
+ 2646 949 lineto
+ 2758 949 lineto
+ 2758 1868 lineto
+ 2646 1868 lineto
+closepath 14 2646 949 2758 1868 Dp
+2312 MX
+ 2312 1868 lineto
+ 2312 1701 lineto
+ 2423 1701 lineto
+ 2423 1868 lineto
+ 2312 1868 lineto
+closepath 3 2312 1701 2423 1868 Dp
+1977 MX
+ 1977 1868 lineto
+ 1977 1512 lineto
+ 2089 1512 lineto
+ 2089 1868 lineto
+ 1977 1868 lineto
+closepath 19 1977 1512 2089 1868 Dp
+3 f
+2640 2047(Client/Server)N
+1957(Single)X
+2185(Process)X
+7 s
+2957 1957(record)N
+2570(component)X
+2289(record)X
+1890(components)X
+1733 1724(.1)N
+1733 1556(.2)N
+1733 1389(.3)N
+1733 1222(.4)N
+1733 1055(.5)N
+1733 889(.6)N
+1590 726(Elapsed)N
+1794(Time)X
+1613 782(\(in)N
+1693(seconds\))X
+3 Dt
+-1 Ds
+8 s
+555 2255(Figure)N
+756(4:)X
+829(Comparison)X
+1187(of)X
+1260(High)X
+1416(and)X
+1540(Low)X
+1681(Level)X
+1850(Interfaces.)X
+1 f
+2174(Elapsed)X
+2395(time)X
+2528(in)X
+2597(seconds)X
+2818(to)X
+2887(perform)X
+3111(a)X
+3158(single)X
+3330(record)X
+3511(retrieval)X
+3742(from)X
+3885(a)X
+3932(command)X
+4203(line)X
+555 2345(\(rather)N
+751(than)X
+888(a)X
+943(procedural)X
+1241(interface\))X
+1510(is)X
+1579(shown)X
+1772(on)X
+1862(the)X
+1966(y)X
+2024(axis.)X
+2185(The)X
+2310(``component'')X
+2704(numbers)X
+2950(re\257ect)X
+3135(the)X
+3239(timings)X
+3458(when)X
+3622(the)X
+3726(record)X
+3914(is)X
+3983(retrieved)X
+4235(by)X
+555 2435(separate)N
+785(calls)X
+924(to)X
+996(the)X
+1096(lock)X
+1228(manager)X
+1469(and)X
+1583(buffer)X
+1760(manager)X
+2001(while)X
+2165(the)X
+2264(``record'')X
+2531(timings)X
+2745(were)X
+2889(obtained)X
+3130(by)X
+3215(using)X
+3375(a)X
+3424(single)X
+3598(call)X
+3711(to)X
+3782(the)X
+3881(record)X
+4064(manager.)X
+555 2525(The)N
+674(2:1)X
+776(ratio)X
+913(observed)X
+1163(for)X
+1257(the)X
+1355(single)X
+1528(process)X
+1739(case)X
+1868(is)X
+1930(a)X
+1977(re\257ection)X
+2237(of)X
+2309(the)X
+2406(parsing)X
+2613(overhead)X
+2865(for)X
+2958(executing)X
+3225(eight)X
+3372(separate)X
+3599(commands)X
+3895(rather)X
+4062(than)X
+4191(one.)X
+555 2615(The)N
+673(additional)X
+948(factor)X
+1115(of)X
+1187(one)X
+1298(re\257ected)X
+1536(in)X
+1605(the)X
+1702(3:1)X
+1803(ratio)X
+1939(for)X
+2031(the)X
+2127(client/server)X
+2460(architecture)X
+2794(is)X
+2855(due)X
+2965(to)X
+3033(the)X
+3129(communication)X
+3545(overhead.)X
+3828(The)X
+3945(true)X
+4062(ratios)X
+4222(are)X
+555 2705(actually)N
+775(worse)X
+945(since)X
+1094(the)X
+1190(component)X
+1492(timings)X
+1703(do)X
+1785(not)X
+1884(re\257ect)X
+2060(the)X
+2155(search)X
+2334(times)X
+2490(within)X
+2671(each)X
+2804(page)X
+2941(or)X
+3011(the)X
+3106(time)X
+3237(required)X
+3466(to)X
+3533(transmit)X
+3760(the)X
+3855(page)X
+3992(between)X
+4221(the)X
+555 2795(two)N
+667(processes.)X
+10 s
+10 f
+555 2885(h)N
+579(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)X
+3 f
+555 3161(4.2.)N
+715(Group)X
+961(Commit)X
+1 f
+755 3284(Since)N
+959(the)X
+1083(log)X
+1211(must)X
+1392(be)X
+1494(\257ushed)X
+1751(to)X
+1839(disk)X
+1997(at)X
+2080(commit)X
+2349(time,)X
+2536(disk)X
+2694(bandwidth)X
+3057(fundamentally)X
+3545(limits)X
+3751(the)X
+3874(rate)X
+4020(at)X
+4103(which)X
+555 3374(transactions)N
+959(complete.)X
+1314(Since)X
+1513(most)X
+1688(transactions)X
+2091(write)X
+2276(only)X
+2438(a)X
+2494(few)X
+2635(small)X
+2828(records)X
+3085(to)X
+3167(the)X
+3285(log,)X
+3427(the)X
+3545(last)X
+3676(page)X
+3848(of)X
+3935(the)X
+4053(log)X
+4175(will)X
+555 3464(be)N
+658(\257ushed)X
+916(once)X
+1095(by)X
+1202(every)X
+1408(transaction)X
+1787(which)X
+2010(writes)X
+2233(to)X
+2322(it.)X
+2433(In)X
+2527(the)X
+2652(naive)X
+2853(implementation,)X
+3402(these)X
+3593(\257ushes)X
+3841(would)X
+4067(happen)X
+555 3554(serially.)N
+755 3677(LIBTP)N
+1008(uses)X
+3 f
+1177(group)X
+1412(commit)X
+1 f
+1702([DEWI84])X
+2077(in)X
+2170(order)X
+2371(to)X
+2464(amortize)X
+2775(the)X
+2903(cost)X
+3062(of)X
+3159(one)X
+3305(synchronous)X
+3740(disk)X
+3903(write)X
+4098(across)X
+555 3767(multiple)N
+851(transactions.)X
+1304(Group)X
+1539(commit)X
+1812(provides)X
+2117(a)X
+2182(way)X
+2345(for)X
+2468(a)X
+2533(group)X
+2749(of)X
+2845(transactions)X
+3257(to)X
+3348(commit)X
+3621(simultaneously.)X
+4174(The)X
+555 3857(\256rst)N
+709(several)X
+967(transactions)X
+1380(to)X
+1472(commit)X
+1745(write)X
+1939(their)X
+2115(changes)X
+2403(to)X
+2494(the)X
+2621(in-memory)X
+3006(log)X
+3137(page,)X
+3338(then)X
+3505(sleep)X
+3699(on)X
+3808(a)X
+3873(distinguished)X
+555 3947(semaphore.)N
+966(Later,)X
+1179(a)X
+1238(committing)X
+1629(transaction)X
+2004(\257ushes)X
+2249(the)X
+2370(page)X
+2545(to)X
+2630(disk,)X
+2805(and)X
+2943(wakes)X
+3166(up)X
+3268(all)X
+3370(its)X
+3467(sleeping)X
+3756(peers.)X
+3988(The)X
+4135(point)X
+555 4037(at)N
+635(which)X
+853(changes)X
+1134(are)X
+1255(actually)X
+1531(written)X
+1780(is)X
+1855(determined)X
+2238(by)X
+2340(three)X
+2523(thresholds.)X
+2914(The)X
+3061(\256rst)X
+3207(is)X
+3281(the)X
+2 f
+3400(group)X
+3612(threshold)X
+1 f
+3935(and)X
+4072(de\256nes)X
+555 4127(the)N
+674(minimum)X
+1005(number)X
+1271(of)X
+1359(transactions)X
+1763(which)X
+1979(must)X
+2154(be)X
+2250(active)X
+2462(in)X
+2544(the)X
+2662(system)X
+2904(before)X
+3130(transactions)X
+3533(are)X
+3652(forced)X
+3878(to)X
+3960(participate)X
+555 4217(in)N
+646(a)X
+711(group)X
+927(commit.)X
+1240(The)X
+1394(second)X
+1646(is)X
+1728(the)X
+2 f
+1855(wait)X
+2021(threshold)X
+1 f
+2352(which)X
+2577(is)X
+2658(expressed)X
+3003(as)X
+3098(the)X
+3224(percentage)X
+3601(of)X
+3696(active)X
+3916(transactions)X
+555 4307(waiting)N
+826(to)X
+919(be)X
+1026(committed.)X
+1439(The)X
+1595(last)X
+1737(is)X
+1821(the)X
+2 f
+1950(logdelay)X
+2257(threshold)X
+1 f
+2590(which)X
+2816(indicates)X
+3131(how)X
+3299(much)X
+3507(un\257ushed)X
+3848(log)X
+3980(should)X
+4223(be)X
+555 4397(allowed)N
+829(to)X
+911(accumulate)X
+1297(before)X
+1523(a)X
+1579(waiting)X
+1839(transaction's)X
+2289(commit)X
+2553(record)X
+2779(is)X
+2852(\257ushed.)X
+755 4520(Group)N
+981(commit)X
+1246(can)X
+1379(substantially)X
+1803(improve)X
+2090(performance)X
+2517(for)X
+2631(high-concurrency)X
+3218(environments.)X
+3714(If)X
+3788(only)X
+3950(a)X
+4006(few)X
+4147(tran-)X
+555 4610(sactions)N
+836(are)X
+957(running,)X
+1248(it)X
+1314(is)X
+1389(unlikely)X
+1673(to)X
+1757(improve)X
+2046(things)X
+2263(at)X
+2343(all.)X
+2485(The)X
+2632(crossover)X
+2962(point)X
+3148(is)X
+3223(the)X
+3343(point)X
+3529(at)X
+3609(which)X
+3827(the)X
+3947(transaction)X
+555 4700(commit)N
+823(rate)X
+968(is)X
+1045(limited)X
+1295(by)X
+1399(the)X
+1521(bandwidth)X
+1883(of)X
+1974(the)X
+2096(device)X
+2330(on)X
+2434(which)X
+2654(the)X
+2776(log)X
+2902(resides.)X
+3189(If)X
+3267(processes)X
+3599(are)X
+3722(trying)X
+3937(to)X
+4023(\257ush)X
+4201(the)X
+555 4790(log)N
+677(faster)X
+876(than)X
+1034(the)X
+1152(log)X
+1274(disk)X
+1427(can)X
+1559(accept)X
+1785(data,)X
+1959(then)X
+2117(group)X
+2324(commit)X
+2588(will)X
+2732(increase)X
+3016(the)X
+3134(commit)X
+3398(rate.)X
+3 f
+555 4976(4.3.)N
+715(Kernel)X
+971(Intervention)X
+1418(for)X
+1541(Synchronization)X
+1 f
+755 5099(Since)N
+954(LIBTP)X
+1197(uses)X
+1356(data)X
+1511(in)X
+1594(shared)X
+1825(memory)X
+2113(\()X
+2 f
+2140(e.g.)X
+1 f
+2277(the)X
+2395(lock)X
+2553(table)X
+2729(and)X
+2865(buffer)X
+3082(pool\))X
+3271(it)X
+3335(must)X
+3510(be)X
+3606(possible)X
+3888(for)X
+4002(a)X
+4058(process)X
+555 5189(to)N
+640(acquire)X
+900(exclusive)X
+1226(access)X
+1454(to)X
+1538(shared)X
+1770(data)X
+1926(in)X
+2010(order)X
+2202(to)X
+2286(prevent)X
+2549(corruption.)X
+2945(In)X
+3034(addition,)X
+3338(the)X
+3458(process)X
+3721(manager)X
+4020(must)X
+4197(put)X
+555 5279(processes)N
+886(to)X
+971(sleep)X
+1159(when)X
+1356(the)X
+1477(lock)X
+1638(or)X
+1728(buffer)X
+1948(they)X
+2109(request)X
+2364(is)X
+2440(in)X
+2525(use)X
+2655(by)X
+2758(some)X
+2950(other)X
+3138(process.)X
+3441(In)X
+3530(the)X
+3650(LIBTP)X
+3894(implementa-)X
+555 5385(tion)N
+705(under)X
+914(Ultrix)X
+1131(4.0)X
+7 s
+5353(2)Y
+10 s
+5385(,)Y
+1305(we)X
+1424(use)X
+1556(System)X
+1816(V)X
+1899(semaphores)X
+2303(to)X
+2390(provide)X
+2660(this)X
+2800(synchronization.)X
+3377(Semaphores)X
+3794(implemented)X
+4237(in)X
+555 5475(this)N
+701(fashion)X
+968(turn)X
+1128(out)X
+1261(to)X
+1354(be)X
+1461(an)X
+1568(expensive)X
+1920(choice)X
+2161(for)X
+2285(synchronization,)X
+2847(because)X
+3132(each)X
+3310(access)X
+3546(traps)X
+3732(to)X
+3824(the)X
+3952(kernel)X
+4183(and)X
+8 s
+10 f
+555 5547(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)N
+5 s
+1 f
+727 5625(2)N
+8 s
+763 5650(Ultrix)N
+932(and)X
+1040(DEC)X
+1184(are)X
+1277(trademarks)X
+1576(of)X
+1645(Digital)X
+1839(Equipment)X
+2136(Corporation.)X
+
+9 p
+%%Page: 9 9
+8 s 8 xH 0 xS 1 f
+10 s
+3 f
+1 f
+555 630(executes)N
+852(atomically)X
+1210(there.)X
+755 753(On)N
+878(architectures)X
+1314(that)X
+1459(support)X
+1724(atomic)X
+1967(test-and-set,)X
+2382(a)X
+2443(much)X
+2646(better)X
+2854(choice)X
+3089(would)X
+3314(be)X
+3415(to)X
+3502(attempt)X
+3767(to)X
+3854(obtain)X
+4079(a)X
+4139(spin-)X
+555 843(lock)N
+714(with)X
+877(a)X
+934(test-and-set,)X
+1345(and)X
+1482(issue)X
+1663(a)X
+1720(system)X
+1963(call)X
+2100(only)X
+2263(if)X
+2333(the)X
+2452(spinlock)X
+2744(is)X
+2818(unavailable.)X
+3249(Since)X
+3447(virtually)X
+3738(all)X
+3838(semaphores)X
+4237(in)X
+555 933(LIBTP)N
+801(are)X
+924(uncontested)X
+1330(and)X
+1469(are)X
+1591(held)X
+1752(for)X
+1869(very)X
+2035(short)X
+2218(periods)X
+2477(of)X
+2567(time,)X
+2752(this)X
+2890(would)X
+3113(improve)X
+3403(performance.)X
+3873(For)X
+4007(example,)X
+555 1023(processes)N
+885(must)X
+1062(acquire)X
+1321(exclusive)X
+1646(access)X
+1874(to)X
+1958(buffer)X
+2177(pool)X
+2341(metadata)X
+2653(in)X
+2737(order)X
+2929(to)X
+3013(\256nd)X
+3159(and)X
+3297(pin)X
+3421(a)X
+3479(buffer)X
+3698(in)X
+3781(shared)X
+4012(memory.)X
+555 1113(This)N
+721(semaphore)X
+1093(is)X
+1170(requested)X
+1502(most)X
+1681(frequently)X
+2034(in)X
+2119(LIBTP.)X
+2404(However,)X
+2742(once)X
+2917(it)X
+2984(is)X
+3060(acquired,)X
+3380(only)X
+3545(a)X
+3604(few)X
+3748(instructions)X
+4144(must)X
+555 1203(be)N
+656(executed)X
+966(before)X
+1196(it)X
+1264(is)X
+1341(released.)X
+1669(On)X
+1791(one)X
+1931(architecture)X
+2335(for)X
+2453(which)X
+2673(we)X
+2791(were)X
+2972(able)X
+3130(to)X
+3216(gather)X
+3441(detailed)X
+3719(pro\256ling)X
+4018(informa-)X
+555 1293(tion,)N
+729(the)X
+857(cost)X
+1015(of)X
+1111(the)X
+1238(semaphore)X
+1615(calls)X
+1791(accounted)X
+2146(for)X
+2269(25%)X
+2445(of)X
+2541(the)X
+2668(total)X
+2839(time)X
+3010(spent)X
+3208(updating)X
+3517(the)X
+3644(metadata.)X
+4003(This)X
+4174(was)X
+555 1383(fairly)N
+749(consistent)X
+1089(across)X
+1310(most)X
+1485(of)X
+1572(the)X
+1690(critical)X
+1933(sections.)X
+755 1506(In)N
+848(an)X
+950(attempt)X
+1216(to)X
+1304(quantify)X
+1597(the)X
+1720(overhead)X
+2040(of)X
+2132(kernel)X
+2358(synchronization,)X
+2915(we)X
+3034(ran)X
+3162(tests)X
+3329(on)X
+3434(a)X
+3495(version)X
+3756(of)X
+3848(4.3BSD-Reno)X
+555 1596(which)N
+786(had)X
+937(been)X
+1123(modi\256ed)X
+1441(to)X
+1537(support)X
+1811(binary)X
+2050(semaphore)X
+2432(facilities)X
+2742(similar)X
+2998(to)X
+3094(those)X
+3297(described)X
+3639(in)X
+3735([POSIX91].)X
+4174(The)X
+555 1686(hardware)N
+880(platform)X
+1181(consisted)X
+1504(of)X
+1595(an)X
+1695(HP300)X
+1941(\(33MHz)X
+2237(MC68030\))X
+2612(workstation)X
+3014(with)X
+3180(16MBytes)X
+3537(of)X
+3628(main)X
+3812(memory,)X
+4123(and)X
+4263(a)X
+555 1776(600MByte)N
+920(HP7959)X
+1205(SCSI)X
+1396(disk)X
+1552(\(17)X
+1682(ms)X
+1798(average)X
+2072(seek)X
+2237(time\).)X
+2468(We)X
+2602(ran)X
+2727(three)X
+2910(sets)X
+3052(of)X
+3141(comparisons)X
+3568(which)X
+3786(are)X
+3907(summarized)X
+555 1866(in)N
+645(\256gure)X
+860(\256ve.)X
+1028(In)X
+1123(each)X
+1299(comparison)X
+1701(we)X
+1823(ran)X
+1954(two)X
+2102(tests,)X
+2292(one)X
+2436(using)X
+2637(hardware)X
+2965(spinlocks)X
+3295(and)X
+3438(the)X
+3563(other)X
+3755(using)X
+3955(kernel)X
+4183(call)X
+555 1956(synchronization.)N
+1135(Since)X
+1341(the)X
+1467(test)X
+1606(was)X
+1758(run)X
+1892(single-user,)X
+2291(none)X
+2474(of)X
+2568(the)X
+2693(the)X
+2818(locks)X
+3014(were)X
+3198(contested.)X
+3568(In)X
+3662(the)X
+3787(\256rst)X
+3938(two)X
+4085(sets)X
+4232(of)X
+555 2046(tests,)N
+743(we)X
+863(ran)X
+992(the)X
+1116(full)X
+1253(transaction)X
+1631(processing)X
+2000(benchmark)X
+2383(described)X
+2717(in)X
+2805(section)X
+3058(5.1.)X
+3223(In)X
+3315(one)X
+3456(case)X
+3620(we)X
+3739(ran)X
+3867(with)X
+4034(both)X
+4201(the)X
+555 2136(database)N
+854(and)X
+992(log)X
+1116(on)X
+1218(the)X
+1338(same)X
+1525(disk)X
+1680(\(1)X
+1769(Disk\))X
+1969(and)X
+2107(in)X
+2191(the)X
+2311(second,)X
+2576(we)X
+2692(ran)X
+2817(with)X
+2981(the)X
+3101(database)X
+3400(and)X
+3538(log)X
+3661(on)X
+3762(separate)X
+4047(disks)X
+4232(\(2)X
+555 2226(Disk\).)N
+800(In)X
+894(the)X
+1019(last)X
+1157(test,)X
+1315(we)X
+1436(wanted)X
+1695(to)X
+1784(create)X
+2004(a)X
+2067(CPU)X
+2249(bound)X
+2476(environment,)X
+2928(so)X
+3026(we)X
+3146(used)X
+3319(a)X
+3381(database)X
+3684(small)X
+3883(enough)X
+4145(to)X
+4233(\256t)X
+555 2316(completely)N
+941(in)X
+1033(the)X
+1161(cache)X
+1375(and)X
+1521(issued)X
+1751(read-only)X
+2089(transactions.)X
+2541(The)X
+2695(results)X
+2933(in)X
+3024(\256gure)X
+3240(\256ve)X
+3389(express)X
+3659(the)X
+3786(kernel)X
+4016(call)X
+4161(syn-)X
+555 2406(chronization)N
+980(performance)X
+1411(as)X
+1502(a)X
+1562(percentage)X
+1935(of)X
+2026(the)X
+2148(spinlock)X
+2443(performance.)X
+2914(For)X
+3049(example,)X
+3365(in)X
+3451(the)X
+3573(1)X
+3637(disk)X
+3794(case,)X
+3977(the)X
+4098(kernel)X
+555 2496(call)N
+697(implementation)X
+1225(achieved)X
+1537(4.4)X
+1662(TPS)X
+1824(\(transactions)X
+2259(per)X
+2387(second\))X
+2662(while)X
+2865(the)X
+2988(semaphore)X
+3361(implementation)X
+3888(achieved)X
+4199(4.6)X
+555 2586(TPS,)N
+735(and)X
+874(the)X
+995(relative)X
+1259(performance)X
+1689(of)X
+1779(the)X
+1900(kernel)X
+2123(synchronization)X
+2657(is)X
+2732(96%)X
+2901(that)X
+3043(of)X
+3132(the)X
+3252(spinlock)X
+3545(\(100)X
+3714(*)X
+3776(4.4)X
+3898(/)X
+3942(4.6\).)X
+4111(There)X
+555 2676(are)N
+674(two)X
+814(striking)X
+1078(observations)X
+1503(from)X
+1679(these)X
+1864(results:)X
+10 f
+635 2799(g)N
+1 f
+755(even)X
+927(when)X
+1121(the)X
+1239(system)X
+1481(is)X
+1554(disk)X
+1707(bound,)X
+1947(the)X
+2065(CPU)X
+2240(cost)X
+2389(of)X
+2476(synchronization)X
+3008(is)X
+3081(noticeable,)X
+3451(and)X
+10 f
+635 2922(g)N
+1 f
+755(when)X
+949(we)X
+1063(are)X
+1182(CPU)X
+1357(bound,)X
+1597(the)X
+1715(difference)X
+2062(is)X
+2135(dramatic)X
+2436(\(67%\).)X
+3 f
+555 3108(4.4.)N
+715(Transaction)X
+1148(Protected)X
+1499(Access)X
+1747(Methods)X
+1 f
+755 3231(The)N
+903(B-tree)X
+1127(and)X
+1266(\256xed)X
+1449(length)X
+1671(recno)X
+1872(\(record)X
+2127(number\))X
+2421(access)X
+2649(methods)X
+2942(have)X
+3116(been)X
+3290(modi\256ed)X
+3596(to)X
+3680(provide)X
+3947(transaction)X
+555 3321(protection.)N
+941(Whereas)X
+1244(the)X
+1363(previously)X
+1722(published)X
+2054(interface)X
+2357(to)X
+2440(the)X
+2559(access)X
+2786(routines)X
+3065(had)X
+3202(separate)X
+3487(open)X
+3664(calls)X
+3832(for)X
+3946(each)X
+4114(of)X
+4201(the)X
+10 f
+555 3507(h)N
+579(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)X
+1 Dt
+2978 5036 MXY
+ 2978 5036 lineto
+ 2978 4662 lineto
+ 3093 4662 lineto
+ 3093 5036 lineto
+ 2978 5036 lineto
+closepath 21 2978 4662 3093 5036 Dp
+2518 MX
+ 2518 5036 lineto
+ 2518 3960 lineto
+ 2633 3960 lineto
+ 2633 5036 lineto
+ 2518 5036 lineto
+closepath 3 2518 3960 2633 5036 Dp
+2059 MX
+ 2059 5036 lineto
+ 2059 3946 lineto
+ 2174 3946 lineto
+ 2174 5036 lineto
+ 2059 5036 lineto
+closepath 1 2059 3946 2174 5036 Dp
+3 f
+7 s
+2912 5141(Read-only)N
+1426 3767(of)N
+1487(Spinlock)X
+1710(Throughput)X
+1480 3710(Throughput)N
+1786(as)X
+1850(a)X
+1892(%)X
+11 s
+1670 4843(20)N
+1670 4614(40)N
+1670 4384(60)N
+1670 4155(80)N
+1648 3925(100)N
+7 s
+2041 5141(1)N
+2083(Disk)X
+2490(2)X
+2532(Disks)X
+5 Dt
+1829 5036 MXY
+1494 0 Dl
+4 Ds
+1 Dt
+1829 4806 MXY
+1494 0 Dl
+1829 4577 MXY
+1494 0 Dl
+1829 4347 MXY
+1494 0 Dl
+1829 4118 MXY
+1494 0 Dl
+1829 3888 MXY
+1494 0 Dl
+3 Dt
+-1 Ds
+8 s
+555 5360(Figure)N
+753(5:)X
+823(Kernel)X
+1028(Overhead)X
+1315(for)X
+1413(System)X
+1625(Call)X
+1756(Synchronization.)X
+1 f
+2254(The)X
+2370(performance)X
+2708(of)X
+2778(the)X
+2873(kernel)X
+3049(call)X
+3158(synchronization)X
+3583(is)X
+3643(expressed)X
+3911(as)X
+3980(a)X
+4024(percentage)X
+555 5450(of)N
+625(the)X
+720(spinlock)X
+954(synchronization)X
+1379(performance.)X
+1749(In)X
+1819(disk)X
+1943(bound)X
+2120(cases)X
+2271(\(1)X
+2341(Disk)X
+2479(and)X
+2588(2)X
+2637(Disks\),)X
+2837(we)X
+2928(see)X
+3026(that)X
+3139(4-6%)X
+3294(of)X
+3364(the)X
+3459(performance)X
+3797(is)X
+3857(lost)X
+3966(due)X
+4074(to)X
+4140(kernel)X
+555 5540(calls)N
+688(while)X
+846(in)X
+912(the)X
+1006(CPU)X
+1147(bound)X
+1323(case,)X
+1464(we)X
+1554(have)X
+1690(lost)X
+1799(67%)X
+1932(of)X
+2001(the)X
+2095(performance)X
+2432(due)X
+2540(to)X
+2606(kernel)X
+2781(calls.)X
+
+10 p
+%%Page: 10 10
+8 s 8 xH 0 xS 1 f
+10 s
+3 f
+1 f
+555 630(access)N
+781(methods,)X
+1092(we)X
+1206(now)X
+1364(have)X
+1536(an)X
+1632(integrated)X
+1973(open)X
+2149(call)X
+2285(with)X
+2447(the)X
+2565(following)X
+2896(calling)X
+3134(conventions:)X
+7 f
+715 753(DB)N
+859(*dbopen)X
+1243(\(const)X
+1579(char)X
+1819(*file,)X
+2155(int)X
+2347(flags,)X
+2683(int)X
+2875(mode,)X
+3163(DBTYPE)X
+3499(type,)X
+1291 843(int)N
+1483(dbflags,)X
+1915(const)X
+2203(void)X
+2443(*openinfo\))X
+1 f
+555 966(where)N
+2 f
+774(\256le)X
+1 f
+894(is)X
+969(the)X
+1089(name)X
+1285(of)X
+1374(the)X
+1494(\256le)X
+1618(being)X
+1818(opened,)X
+2 f
+2092(\257ags)X
+1 f
+2265(and)X
+2 f
+2402(mode)X
+1 f
+2597(are)X
+2717(the)X
+2836(standard)X
+3129(arguments)X
+3484(to)X
+3 f
+3567(open)X
+1 f
+3731(\(2\),)X
+2 f
+3866(type)X
+1 f
+4021(is)X
+4095(one)X
+4232(of)X
+555 1056(the)N
+680(access)X
+913(method)X
+1180(types,)X
+2 f
+1396(db\257ags)X
+1 f
+1654(indicates)X
+1966(the)X
+2091(mode)X
+2296(of)X
+2390(the)X
+2515(buffer)X
+2739(pool)X
+2907(and)X
+3049(transaction)X
+3427(protection,)X
+3798(and)X
+2 f
+3940(openinfo)X
+1 f
+4246(is)X
+555 1146(the)N
+681(access)X
+915(method)X
+1183(speci\256c)X
+1456(information.)X
+1902(Currently,)X
+2257(the)X
+2383(possible)X
+2673(values)X
+2906(for)X
+2 f
+3028(db\257ags)X
+1 f
+3287(are)X
+3414(DB_SHARED)X
+3912(and)X
+4055(DB_TP)X
+555 1236(indicating)N
+895(that)X
+1035(buffers)X
+1283(should)X
+1516(be)X
+1612(kept)X
+1770(in)X
+1852(a)X
+1908(shared)X
+2138(buffer)X
+2355(pool)X
+2517(and)X
+2653(that)X
+2793(the)X
+2911(\256le)X
+3033(should)X
+3266(be)X
+3362(transaction)X
+3734(protected.)X
+755 1359(The)N
+900(modi\256cations)X
+1355(required)X
+1643(to)X
+1725(add)X
+1861(transaction)X
+2233(protection)X
+2578(to)X
+2660(an)X
+2756(access)X
+2982(method)X
+3242(are)X
+3361(quite)X
+3541(simple)X
+3774(and)X
+3910(localized.)X
+715 1482(1.)N
+795(Replace)X
+1074(\256le)X
+2 f
+1196(open)X
+1 f
+1372(with)X
+2 f
+1534(buf_open)X
+1 f
+1832(.)X
+715 1572(2.)N
+795(Replace)X
+1074(\256le)X
+2 f
+1196(read)X
+1 f
+1363(and)X
+2 f
+1499(write)X
+1 f
+1683(calls)X
+1850(with)X
+2012(buffer)X
+2229(manager)X
+2526(calls)X
+2693(\()X
+2 f
+2720(buf_get)X
+1 f
+(,)S
+2 f
+3000(buf_unpin)X
+1 f
+3324(\).)X
+715 1662(3.)N
+795(Precede)X
+1070(buffer)X
+1287(manager)X
+1584(calls)X
+1751(with)X
+1913(an)X
+2009(appropriate)X
+2395(\(read)X
+2581(or)X
+2668(write\))X
+2880(lock)X
+3038(call.)X
+715 1752(4.)N
+795(Before)X
+1034(updates,)X
+1319(issue)X
+1499(a)X
+1555(logging)X
+1819(operation.)X
+715 1842(5.)N
+795(After)X
+985(data)X
+1139(have)X
+1311(been)X
+1483(accessed,)X
+1805(release)X
+2049(the)X
+2167(buffer)X
+2384(manager)X
+2681(pin.)X
+715 1932(6.)N
+795(Provide)X
+1064(undo/redo)X
+1409(code)X
+1581(for)X
+1695(each)X
+1863(type)X
+2021(of)X
+2108(log)X
+2230(record)X
+2456(de\256ned.)X
+555 2071(The)N
+702(following)X
+1035(code)X
+1209(fragments)X
+1552(show)X
+1743(how)X
+1903(to)X
+1987(transaction)X
+2361(protect)X
+2606(several)X
+2856(updates)X
+3123(to)X
+3206(a)X
+3263(B-tree.)X
+7 s
+3484 2039(3)N
+10 s
+3533 2071(In)N
+3621(the)X
+3740(unprotected)X
+4140(case,)X
+555 2161(an)N
+652(open)X
+829(call)X
+966(is)X
+1040(followed)X
+1346(by)X
+1447(a)X
+1504(read)X
+1664(call)X
+1801(to)X
+1884(obtain)X
+2105(the)X
+2224(meta-data)X
+2562(for)X
+2677(the)X
+2796(B-tree.)X
+3058(Instead,)X
+3331(we)X
+3446(issue)X
+3627(an)X
+3724(open)X
+3901(to)X
+3984(the)X
+4102(buffer)X
+555 2251(manager)N
+852(to)X
+934(obtain)X
+1154(a)X
+1210(\256le)X
+1332(id)X
+1414(and)X
+1550(a)X
+1606(buffer)X
+1823(request)X
+2075(to)X
+2157(obtain)X
+2377(the)X
+2495(meta-data)X
+2832(as)X
+2919(shown)X
+3148(below.)X
+7 f
+715 2374(char)N
+955(*path;)X
+715 2464(int)N
+907(fid,)X
+1147(flags,)X
+1483(len,)X
+1723(mode;)X
+715 2644(/*)N
+859(Obtain)X
+1195(a)X
+1291(file)X
+1531(id)X
+1675(with)X
+1915(which)X
+2203(to)X
+2347(access)X
+2683(the)X
+2875(buffer)X
+3211(pool)X
+3451(*/)X
+715 2734(fid)N
+907(=)X
+1003(buf_open\(path,)X
+1723(flags,)X
+2059(mode\);)X
+715 2914(/*)N
+859(Read)X
+1099(the)X
+1291(meta)X
+1531(data)X
+1771(\(page)X
+2059(0\))X
+2203(for)X
+2395(the)X
+2587(B-tree)X
+2923(*/)X
+715 3004(if)N
+859(\(tp_lock\(fid,)X
+1531(0,)X
+1675(READ_LOCK\)\))X
+1003 3094(return)N
+1339(error;)X
+715 3184(meta_data_ptr)N
+1387(=)X
+1483(buf_get\(fid,)X
+2107(0,)X
+2251(BF_PIN,)X
+2635(&len\);)X
+1 f
+555 3307(The)N
+714(BF_PIN)X
+1014(argument)X
+1350(to)X
+2 f
+1445(buf_get)X
+1 f
+1718(indicates)X
+2036(that)X
+2189(we)X
+2316(wish)X
+2500(to)X
+2595(leave)X
+2798(this)X
+2946(page)X
+3131(pinned)X
+3382(in)X
+3477(memory)X
+3777(so)X
+3881(that)X
+4034(it)X
+4111(is)X
+4197(not)X
+555 3397(swapped)N
+862(out)X
+990(while)X
+1194(we)X
+1314(are)X
+1439(accessing)X
+1772(it.)X
+1881(The)X
+2031(last)X
+2167(argument)X
+2495(to)X
+2 f
+2582(buf_get)X
+1 f
+2847(returns)X
+3095(the)X
+3218(number)X
+3488(of)X
+3580(bytes)X
+3774(on)X
+3879(the)X
+4002(page)X
+4179(that)X
+555 3487(were)N
+732(valid)X
+912(so)X
+1003(that)X
+1143(the)X
+1261(access)X
+1487(method)X
+1747(may)X
+1905(initialize)X
+2205(the)X
+2323(page)X
+2495(if)X
+2564(necessary.)X
+755 3610(Next,)N
+955(consider)X
+1251(inserting)X
+1555(a)X
+1615(record)X
+1845(on)X
+1949(a)X
+2009(particular)X
+2341(page)X
+2517(of)X
+2608(a)X
+2668(B-tree.)X
+2932(In)X
+3022(the)X
+3143(unprotected)X
+3545(case,)X
+3727(we)X
+3844(read)X
+4006(the)X
+4127(page,)X
+555 3700(call)N
+2 f
+693(_bt_insertat)X
+1 f
+1079(,)X
+1121(and)X
+1258(write)X
+1444(the)X
+1563(page.)X
+1776(Instead,)X
+2049(we)X
+2164(lock)X
+2323(the)X
+2442(page,)X
+2635(request)X
+2888(the)X
+3007(buffer,)X
+3245(log)X
+3368(the)X
+3487(change,)X
+3756(modify)X
+4008(the)X
+4127(page,)X
+555 3790(and)N
+691(release)X
+935(the)X
+1053(buffer.)X
+7 f
+715 3913(int)N
+907(fid,)X
+1147(len,)X
+1387(pageno;)X
+1867(/*)X
+2011(Identifies)X
+2539(the)X
+2731(buffer)X
+3067(*/)X
+715 4003(int)N
+907(index;)X
+1867(/*)X
+2011(Location)X
+2443(at)X
+2587(which)X
+2875(to)X
+3019(insert)X
+3355(the)X
+3547(new)X
+3739(pair)X
+3979(*/)X
+715 4093(DBT)N
+907(*keyp,)X
+1243(*datap;)X
+1867(/*)X
+2011(Key/Data)X
+2443(pair)X
+2683(to)X
+2827(be)X
+2971(inserted)X
+3403(*/)X
+715 4183(DATUM)N
+1003(*d;)X
+1867(/*)X
+2011(Key/data)X
+2443(structure)X
+2923(to)X
+3067(insert)X
+3403(*/)X
+715 4363(/*)N
+859(Lock)X
+1099(and)X
+1291(request)X
+1675(the)X
+1867(buffer)X
+2203(*/)X
+715 4453(if)N
+859(\(tp_lock\(fid,)X
+1531(pageno,)X
+1915(WRITE_LOCK\)\))X
+1003 4543(return)N
+1339(error;)X
+715 4633(buffer_ptr)N
+1243(=)X
+1339(buf_get\(fid,)X
+1963(pageno,)X
+2347(BF_PIN,)X
+2731(&len\);)X
+715 4813(/*)N
+859(Log)X
+1051(and)X
+1243(perform)X
+1627(the)X
+1819(update)X
+2155(*/)X
+715 4903(log_insdel\(BTREE_INSERT,)N
+1915(fid,)X
+2155(pageno,)X
+2539(keyp,)X
+2827(datap\);)X
+715 4993(_bt_insertat\(buffer_ptr,)N
+1915(d,)X
+2059(index\);)X
+715 5083(buf_unpin\(buffer_ptr\);)N
+1 f
+555 5206(Succinctly,)N
+942(the)X
+1068(algorithm)X
+1407(for)X
+1529(turning)X
+1788(unprotected)X
+2195(code)X
+2375(into)X
+2527(protected)X
+2854(code)X
+3034(is)X
+3115(to)X
+3205(replace)X
+3466(read)X
+3633(operations)X
+3995(with)X
+2 f
+4165(lock)X
+1 f
+555 5296(and)N
+2 f
+691(buf_get)X
+1 f
+951(operations)X
+1305(and)X
+1441(write)X
+1626(operations)X
+1980(with)X
+2 f
+2142(log)X
+1 f
+2264(and)X
+2 f
+2400(buf_unpin)X
+1 f
+2744(operations.)X
+8 s
+10 f
+555 5458(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)N
+5 s
+1 f
+727 5536(3)N
+8 s
+766 5561(The)N
+884(following)X
+1152(code)X
+1291(fragments)X
+1565(are)X
+1661(examples,)X
+1937(but)X
+2038(do)X
+2120(not)X
+2220(de\256ne)X
+2394(the)X
+2490(\256nal)X
+2622(interface.)X
+2894(The)X
+3011(\256nal)X
+3143(interface)X
+3383(will)X
+3501(be)X
+3579(determined)X
+3884(after)X
+4018(LIBTP)X
+4214(has)X
+555 5633(been)N
+691(fully)X
+828(integrated)X
+1099(with)X
+1229(the)X
+1323(most)X
+1464(recent)X
+3 f
+1635(db)X
+1 f
+1707(\(3\))X
+1797(release)X
+1989(from)X
+2129(the)X
+2223(Computer)X
+2495(Systems)X
+2725(Research)X
+2974(Group)X
+3153(at)X
+3215(University)X
+3501(of)X
+3570(California,)X
+3861(Berkeley.)X
+
+11 p
+%%Page: 11 11
+8 s 8 xH 0 xS 1 f
+10 s
+3 f
+555 630(5.)N
+655(Performance)X
+1 f
+755 753(In)N
+845(this)X
+983(section,)X
+1253(we)X
+1370(present)X
+1625(the)X
+1746(results)X
+1978(of)X
+2067(two)X
+2209(very)X
+2374(different)X
+2673(benchmarks.)X
+3103(The)X
+3250(\256rst)X
+3396(is)X
+3471(an)X
+3569(online)X
+3791(transaction)X
+4165(pro-)X
+555 843(cessing)N
+824(benchmark,)X
+1234(similar)X
+1489(to)X
+1584(the)X
+1715(standard)X
+2020(TPCB,)X
+2272(but)X
+2407(has)X
+2547(been)X
+2732(adapted)X
+3015(to)X
+3110(run)X
+3250(in)X
+3345(a)X
+3414(desktop)X
+3696(environment.)X
+4174(The)X
+555 933(second)N
+798(emulates)X
+1103(a)X
+1159(computer-aided)X
+1683(design)X
+1912(environment)X
+2337(and)X
+2473(provides)X
+2769(more)X
+2954(complex)X
+3250(query)X
+3453(processing.)X
+3 f
+555 1119(5.1.)N
+715(Transaction)X
+1148(Processing)X
+1533(Benchmark)X
+1 f
+755 1242(For)N
+887(this)X
+1023(section,)X
+1291(all)X
+1392(performance)X
+1820(numbers)X
+2117(shown)X
+2346(except)X
+2576(for)X
+2690(the)X
+2808(commercial)X
+3207(database)X
+3504(system)X
+3746(were)X
+3923(obtained)X
+4219(on)X
+555 1332(a)N
+614(DECstation)X
+1009(5000/200)X
+1333(with)X
+1497(32MBytes)X
+1852(of)X
+1941(memory)X
+2230(running)X
+2501(Ultrix)X
+2714(V4.0,)X
+2914(accessing)X
+3244(a)X
+3302(DEC)X
+3484(RZ57)X
+3688(1GByte)X
+3959(disk)X
+4114(drive.)X
+555 1422(The)N
+720(commercial)X
+1139(relational)X
+1482(database)X
+1799(system)X
+2061(tests)X
+2242(were)X
+2438(run)X
+2584(on)X
+2703(a)X
+2778(comparable)X
+3192(machine,)X
+3523(a)X
+3598(Sparcstation)X
+4033(1+)X
+4157(with)X
+555 1512(32MBytes)N
+915(memory)X
+1209(and)X
+1352(a)X
+1415(1GByte)X
+1691(external)X
+1976(disk)X
+2135(drive.)X
+2366(The)X
+2517(database,)X
+2840(binaries)X
+3120(and)X
+3262(log)X
+3390(resided)X
+3648(on)X
+3754(the)X
+3878(same)X
+4069(device.)X
+555 1602(Reported)N
+869(times)X
+1062(are)X
+1181(the)X
+1299(means)X
+1524(of)X
+1611(\256ve)X
+1751(tests)X
+1913(and)X
+2049(have)X
+2221(standard)X
+2513(deviations)X
+2862(within)X
+3086(two)X
+3226(percent)X
+3483(of)X
+3570(the)X
+3688(mean.)X
+755 1725(The)N
+905(test)X
+1041(database)X
+1343(was)X
+1493(con\256gured)X
+1861(according)X
+2203(to)X
+2290(the)X
+2413(TPCB)X
+2637(scaling)X
+2889(rules)X
+3070(for)X
+3189(a)X
+3250(10)X
+3355(transaction)X
+3732(per)X
+3860(second)X
+4108(\(TPS\))X
+555 1815(system)N
+817(with)X
+999(1,000,000)X
+1359(account)X
+1649(records,)X
+1946(100)X
+2106(teller)X
+2311(records,)X
+2607(and)X
+2762(10)X
+2881(branch)X
+3139(records.)X
+3455(Where)X
+3709(TPS)X
+3885(numbers)X
+4200(are)X
+555 1905(reported,)N
+865(we)X
+981(are)X
+1102(running)X
+1373(a)X
+1431(modi\256ed)X
+1737(version)X
+1995(of)X
+2084(the)X
+2203(industry)X
+2486(standard)X
+2779(transaction)X
+3152(processing)X
+3516(benchmark,)X
+3914(TPCB.)X
+4174(The)X
+555 1995(TPCB)N
+780(benchmark)X
+1163(simulates)X
+1491(a)X
+1553(withdrawal)X
+1940(performed)X
+2301(by)X
+2407(a)X
+2469(hypothetical)X
+2891(teller)X
+3082(at)X
+3166(a)X
+3228(hypothetical)X
+3650(bank.)X
+3872(The)X
+4022(database)X
+555 2085(consists)N
+831(of)X
+921(relations)X
+1220(\(\256les\))X
+1430(for)X
+1547(accounts,)X
+1871(branches,)X
+2200(tellers,)X
+2439(and)X
+2578(history.)X
+2863(For)X
+2997(each)X
+3168(transaction,)X
+3563(the)X
+3684(account,)X
+3976(teller,)X
+4183(and)X
+555 2175(branch)N
+795(balances)X
+1093(must)X
+1269(be)X
+1366(updated)X
+1641(to)X
+1724(re\257ect)X
+1946(the)X
+2065(withdrawal)X
+2447(and)X
+2584(a)X
+2640(history)X
+2882(record)X
+3108(is)X
+3181(written)X
+3428(which)X
+3644(contains)X
+3931(the)X
+4049(account)X
+555 2265(id,)N
+657(branch)X
+896(id,)X
+998(teller)X
+1183(id,)X
+1285(and)X
+1421(the)X
+1539(amount)X
+1799(of)X
+1886(the)X
+2004(withdrawal)X
+2385([TPCB90].)X
+755 2388(Our)N
+914(implementation)X
+1450(of)X
+1551(the)X
+1683(benchmark)X
+2074(differs)X
+2317(from)X
+2506(the)X
+2637(speci\256cation)X
+3075(in)X
+3170(several)X
+3431(aspects.)X
+3736(The)X
+3894(speci\256cation)X
+555 2478(requires)N
+840(that)X
+985(the)X
+1108(database)X
+1410(keep)X
+1587(redundant)X
+1933(logs)X
+2091(on)X
+2196(different)X
+2498(devices,)X
+2784(but)X
+2911(we)X
+3030(use)X
+3162(a)X
+3223(single)X
+3439(log.)X
+3606(Furthermore,)X
+4052(all)X
+4157(tests)X
+555 2568(were)N
+734(run)X
+863(on)X
+965(a)X
+1023(single,)X
+1256(centralized)X
+1631(system)X
+1875(so)X
+1968(there)X
+2151(is)X
+2226(no)X
+2328(notion)X
+2553(of)X
+2641(remote)X
+2885(accesses.)X
+3219(Finally,)X
+3486(we)X
+3601(calculated)X
+3948(throughput)X
+555 2658(by)N
+662(dividing)X
+955(the)X
+1080(total)X
+1249(elapsed)X
+1517(time)X
+1686(by)X
+1793(the)X
+1918(number)X
+2190(of)X
+2284(transactions)X
+2694(processed)X
+3038(rather)X
+3253(than)X
+3418(by)X
+3525(computing)X
+3894(the)X
+4018(response)X
+555 2748(time)N
+717(for)X
+831(each)X
+999(transaction.)X
+755 2871(The)N
+912(performance)X
+1351(comparisons)X
+1788(focus)X
+1993(on)X
+2104(traditional)X
+2464(Unix)X
+2655(techniques)X
+3029(\(unprotected,)X
+3486(using)X
+3 f
+3690(\257ock)X
+1 f
+3854(\(2\))X
+3979(and)X
+4126(using)X
+3 f
+555 2961(fsync)N
+1 f
+733(\(2\)\))X
+884(and)X
+1030(a)X
+1096(commercial)X
+1504(relational)X
+1836(database)X
+2142(system.)X
+2433(Well-behaved)X
+2913(applications)X
+3329(using)X
+3 f
+3531(\257ock)X
+1 f
+3695(\(2\))X
+3818(are)X
+3946(guaranteed)X
+555 3051(that)N
+704(concurrent)X
+1077(processes')X
+1441(updates)X
+1715(do)X
+1824(not)X
+1955(interact)X
+2225(with)X
+2396(one)X
+2541(another,)X
+2831(but)X
+2962(no)X
+3070(guarantees)X
+3442(about)X
+3648(atomicity)X
+3978(are)X
+4105(made.)X
+555 3141(That)N
+731(is,)X
+833(if)X
+911(the)X
+1038(system)X
+1289(crashes)X
+1555(in)X
+1646(mid-transaction,)X
+2198(only)X
+2369(parts)X
+2554(of)X
+2649(that)X
+2797(transaction)X
+3177(will)X
+3329(be)X
+3433(re\257ected)X
+3738(in)X
+3828(the)X
+3954 0.3125(after-crash)AX
+555 3231(state)N
+725(of)X
+815(the)X
+936(database.)X
+1276(The)X
+1424(use)X
+1554(of)X
+3 f
+1643(fsync)X
+1 f
+1821(\(2\))X
+1937(at)X
+2017(transaction)X
+2391(commit)X
+2657(time)X
+2821(provides)X
+3119(guarantees)X
+3485(of)X
+3574(durability)X
+3907(after)X
+4077(system)X
+555 3321(failure.)N
+825(However,)X
+1160(there)X
+1341(is)X
+1414(no)X
+1514(mechanism)X
+1899(to)X
+1981(perform)X
+2260(transaction)X
+2632(abort.)X
+3 f
+555 3507(5.1.1.)N
+775(Single-User)X
+1191(Tests)X
+1 f
+755 3630(These)N
+978(tests)X
+1151(compare)X
+1459(LIBTP)X
+1712(in)X
+1804(a)X
+1870(variety)X
+2123(of)X
+2220(con\256gurations)X
+2708(to)X
+2800(traditional)X
+3159(UNIX)X
+3390(solutions)X
+3708(and)X
+3854(a)X
+3920(commercial)X
+555 3720(relational)N
+884(database)X
+1187(system)X
+1435(\(RDBMS\).)X
+1814(To)X
+1929(demonstrate)X
+2347(the)X
+2471(server)X
+2694(architecture)X
+3100(we)X
+3220(built)X
+3392(a)X
+3454(front)X
+3636(end)X
+3777(test)X
+3913(process)X
+4179(that)X
+555 3810(uses)N
+732(TCL)X
+922([OUST90])X
+1304(to)X
+1405(parse)X
+1614(database)X
+1930(access)X
+2175(commands)X
+2561(and)X
+2716(call)X
+2870(the)X
+3006(database)X
+3321(access)X
+3565(routines.)X
+3901(In)X
+4006(one)X
+4160(case)X
+555 3900(\(SERVER\),)N
+956(frontend)X
+1249(and)X
+1386(backend)X
+1675(processes)X
+2004(were)X
+2181(created)X
+2434(which)X
+2650(communicated)X
+3142(via)X
+3260(an)X
+3356(IP)X
+3447(socket.)X
+3712(In)X
+3799(the)X
+3917(second)X
+4160(case)X
+555 3990(\(TCL\),)N
+802(a)X
+860(single)X
+1073(process)X
+1336(read)X
+1497(queries)X
+1751(from)X
+1929(standard)X
+2223(input,)X
+2429(parsed)X
+2660(them,)X
+2861(and)X
+2998(called)X
+3211(the)X
+3330(database)X
+3628(access)X
+3855(routines.)X
+4174(The)X
+555 4080(performance)N
+987(difference)X
+1338(between)X
+1630(the)X
+1752(TCL)X
+1927(and)X
+2067(SERVER)X
+2397(tests)X
+2563(quanti\256es)X
+2898(the)X
+3020(communication)X
+3542(overhead)X
+3861(of)X
+3952(the)X
+4074(socket.)X
+555 4170(The)N
+732(RDBMS)X
+1063(implementation)X
+1617(used)X
+1816(embedded)X
+2198(SQL)X
+2401(in)X
+2515(C)X
+2620(with)X
+2814(stored)X
+3062(database)X
+3391(procedures.)X
+3835(Therefore,)X
+4224(its)X
+555 4260(con\256guration)N
+1003(is)X
+1076(a)X
+1132(hybrid)X
+1361(of)X
+1448(the)X
+1566(single)X
+1777(process)X
+2038(architecture)X
+2438(and)X
+2574(the)X
+2692(server)X
+2909(architecture.)X
+3349(The)X
+3494(graph)X
+3697(in)X
+3779(\256gure)X
+3986(six)X
+4099(shows)X
+555 4350(a)N
+611(comparison)X
+1005(of)X
+1092(the)X
+1210(following)X
+1541(six)X
+1654(con\256gurations:)X
+1126 4506(LIBTP)N
+1552(Uses)X
+1728(the)X
+1846(LIBTP)X
+2088(library)X
+2322(in)X
+2404(a)X
+2460(single)X
+2671(application.)X
+1126 4596(TCL)N
+1552(Uses)X
+1728(the)X
+1846(LIBTP)X
+2088(library)X
+2322(in)X
+2404(a)X
+2460(single)X
+2671(application,)X
+3067(requires)X
+3346(query)X
+3549(parsing.)X
+1126 4686(SERVER)N
+1552(Uses)X
+1728(the)X
+1846(LIBTP)X
+2088(library)X
+2322(in)X
+2404(a)X
+2460(server)X
+2677(con\256guration,)X
+3144(requires)X
+3423(query)X
+3626(parsing.)X
+1126 4776(NOTP)N
+1552(Uses)X
+1728(no)X
+1828(locking,)X
+2108(logging,)X
+2392(or)X
+2479(concurrency)X
+2897(control.)X
+1126 4866(FLOCK)N
+1552(Uses)X
+3 f
+1728(\257ock)X
+1 f
+1892(\(2\))X
+2006(for)X
+2120(concurrency)X
+2538(control)X
+2785(and)X
+2921(nothing)X
+3185(for)X
+3299(durability.)X
+1126 4956(FSYNC)N
+1552(Uses)X
+3 f
+1728(fsync)X
+1 f
+1906(\(2\))X
+2020(for)X
+2134(durability)X
+2465(and)X
+2601(nothing)X
+2865(for)X
+2979(concurrency)X
+3397(control.)X
+1126 5046(RDBMS)N
+1552(Uses)X
+1728(a)X
+1784(commercial)X
+2183(relational)X
+2506(database)X
+2803(system.)X
+755 5235(The)N
+902(results)X
+1133(show)X
+1324(that)X
+1466(LIBTP,)X
+1730(both)X
+1894(in)X
+1978(the)X
+2098(procedural)X
+2464(and)X
+2602(parsed)X
+2834(environments,)X
+3312(is)X
+3387(competitive)X
+3787(with)X
+3951(a)X
+4009(commer-)X
+555 5325(cial)N
+692(system)X
+935(\(comparing)X
+1326(LIBTP,)X
+1589(TCL,)X
+1781(and)X
+1917(RDBMS\).)X
+2263(Compared)X
+2617(to)X
+2699(existing)X
+2972(UNIX)X
+3193(solutions,)X
+3521(LIBTP)X
+3763(is)X
+3836(approximately)X
+555 5415(15%)N
+738(slower)X
+988(than)X
+1162(using)X
+3 f
+1371(\257ock)X
+1 f
+1535(\(2\))X
+1665(or)X
+1768(no)X
+1884(protection)X
+2245(but)X
+2383(over)X
+2562(80%)X
+2745(better)X
+2964(than)X
+3137(using)X
+3 f
+3345(fsync)X
+1 f
+3523(\(2\))X
+3652(\(comparing)X
+4057(LIBTP,)X
+555 5505(FLOCK,)N
+857(NOTP,)X
+1106(and)X
+1242(FSYNC\).)X
+
+12 p
+%%Page: 12 12
+10 s 10 xH 0 xS 1 f
+3 f
+8 s
+3500 2184(RDBMS)N
+1 Dt
+3553 2085 MXY
+ 3553 2085 lineto
+ 3676 2085 lineto
+ 3676 1351 lineto
+ 3553 1351 lineto
+ 3553 2085 lineto
+closepath 16 3553 1351 3676 2085 Dp
+2018 2184(SERVER)N
+1720 1168 MXY
+0 917 Dl
+122 0 Dl
+0 -917 Dl
+-122 0 Dl
+1715 2184(TCL)N
+2087 1534 MXY
+ 2087 1534 lineto
+ 2209 1534 lineto
+ 2209 2085 lineto
+ 2087 2085 lineto
+ 2087 1534 lineto
+closepath 12 2087 1534 2209 2085 Dp
+3187 MX
+ 3187 1534 lineto
+ 3309 1534 lineto
+ 3309 2085 lineto
+ 3187 2085 lineto
+ 3187 1534 lineto
+closepath 19 3187 1534 3309 2085 Dp
+3142 2184(FSYNC)N
+2425(NOTP)X
+2453 955 MXY
+ 2453 955 lineto
+ 2576 955 lineto
+ 2576 2085 lineto
+ 2453 2085 lineto
+ 2453 955 lineto
+closepath 21 2453 955 2576 2085 Dp
+2820 1000 MXY
+ 2820 1000 lineto
+ 2942 1000 lineto
+ 2942 2085 lineto
+ 2820 2085 lineto
+ 2820 1000 lineto
+closepath 14 2820 1000 2942 2085 Dp
+5 Dt
+1231 2085 MXY
+2567 0 Dl
+4 Ds
+1 Dt
+1231 1840 MXY
+2567 0 Dl
+1231 1596 MXY
+2567 0 Dl
+1231 1351 MXY
+2567 0 Dl
+1231 1108 MXY
+2567 0 Dl
+1231 863 MXY
+2567 0 Dl
+11 s
+1087 1877(2)N
+1087 1633(4)N
+1087 1388(6)N
+1087 1145(8)N
+1065 900(10)N
+1028 763(TPS)N
+-1 Ds
+1353 2085 MXY
+ 1353 2085 lineto
+ 1353 1151 lineto
+ 1476 1151 lineto
+ 1476 2085 lineto
+ 1353 2085 lineto
+closepath 3 1353 1151 1476 2085 Dp
+8 s
+1318 2184(LIBTP)N
+2767(FLOCK)X
+3 Dt
+-1 Ds
+10 s
+1597 2399(Figure)N
+1844(6:)X
+1931(Single-User)X
+2347(Performance)X
+2814(Comparison.)X
+1 f
+10 f
+555 2579(h)N
+579(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)X
+3 f
+555 2855(5.1.2.)N
+775(Multi-User)X
+1174(Tests)X
+1 f
+755 2978(While)N
+975(the)X
+1097(single-user)X
+1473(tests)X
+1639(form)X
+1819(a)X
+1878(basis)X
+2061(for)X
+2178(comparing)X
+2544(LIBTP)X
+2789(to)X
+2874(other)X
+3062(systems,)X
+3358(our)X
+3488(goal)X
+3649(in)X
+3734(multi-user)X
+4086(testing)X
+555 3068(was)N
+714(to)X
+810(analyze)X
+1089(its)X
+1197(scalability.)X
+1579(To)X
+1701(this)X
+1849(end,)X
+2018(we)X
+2145(have)X
+2330(run)X
+2470(the)X
+2601(benchmark)X
+2991(in)X
+3086(three)X
+3280(modes,)X
+3542(the)X
+3673(normal)X
+3933(disk)X
+4099(bound)X
+555 3158(con\256guration)N
+1010(\(\256gure)X
+1252(seven\),)X
+1510(a)X
+1573(CPU)X
+1755(bound)X
+1982(con\256guration)X
+2436(\(\256gure)X
+2677(eight,)X
+2884(READ-ONLY\),)X
+3426(and)X
+3569(lock)X
+3734(contention)X
+4099(bound)X
+555 3248(\(\256gure)N
+796(eight,)X
+1003(NO_FSYNC\).)X
+1510(Since)X
+1715(the)X
+1840(normal)X
+2094(con\256guration)X
+2548(is)X
+2628(completely)X
+3011(disk)X
+3171(bound)X
+3398(\(each)X
+3600(transaction)X
+3978(requires)X
+4263(a)X
+555 3354(random)N
+823(read,)X
+1005(a)X
+1064(random)X
+1332(write,)X
+1540(and)X
+1679(a)X
+1738(sequential)X
+2086(write)X
+7 s
+2251 3322(4)N
+10 s
+3354(\))Y
+2329(we)X
+2446(expect)X
+2679(to)X
+2764(see)X
+2890(little)X
+3059(performance)X
+3489(improvement)X
+3939(as)X
+4028(the)X
+4148(mul-)X
+555 3444(tiprogramming)N
+1064(level)X
+1249(increases.)X
+1613(In)X
+1709(fact,)X
+1879(\256gure)X
+2095(seven)X
+2307(reveals)X
+2564(that)X
+2713(we)X
+2836(are)X
+2964(able)X
+3127(to)X
+3218(overlap)X
+3487(CPU)X
+3670(and)X
+3814(disk)X
+3975(utilization)X
+555 3534(slightly)N
+825(producing)X
+1181(approximately)X
+1674(a)X
+1740(10%)X
+1917(performance)X
+2354(improvement)X
+2811(with)X
+2983(two)X
+3133(processes.)X
+3511(After)X
+3711(that)X
+3861(point,)X
+4075(perfor-)X
+555 3624(mance)N
+785(drops)X
+983(off,)X
+1117(and)X
+1253(at)X
+1331(a)X
+1387(multi-programming)X
+2038(level)X
+2214(of)X
+2301(4,)X
+2381(we)X
+2495(are)X
+2614(performing)X
+2995(worse)X
+3207(than)X
+3365(in)X
+3447(the)X
+3565(single)X
+3776(process)X
+4037(case.)X
+755 3747(Similar)N
+1021(behavior)X
+1333(was)X
+1489(reported)X
+1787(on)X
+1897(the)X
+2025(commercial)X
+2434(relational)X
+2767(database)X
+3074(system)X
+3326(using)X
+3529(the)X
+3657(same)X
+3852(con\256guration.)X
+555 3837(The)N
+707(important)X
+1045(conclusion)X
+1419(to)X
+1508(draw)X
+1696(from)X
+1879(this)X
+2021(is)X
+2101(that)X
+2248(you)X
+2395(cannot)X
+2636(attain)X
+2841(good)X
+3028(multi-user)X
+3384(scaling)X
+3638(on)X
+3745(a)X
+3808(badly)X
+4013(balanced)X
+555 3927(system.)N
+839(If)X
+915(multi-user)X
+1266(performance)X
+1695(on)X
+1797(applications)X
+2205(of)X
+2293(this)X
+2429(sort)X
+2570(is)X
+2644(important,)X
+2996(one)X
+3133(must)X
+3309(have)X
+3482(a)X
+3539(separate)X
+3824(logging)X
+4089(device)X
+555 4017(and)N
+697(horizontally)X
+1110(partition)X
+1407(the)X
+1531(database)X
+1834(to)X
+1921(allow)X
+2124(a)X
+2185(suf\256ciently)X
+2570(high)X
+2737(degree)X
+2977(of)X
+3069(multiprogramming)X
+3698(that)X
+3843(group)X
+4055(commit)X
+555 4107(can)N
+687(amortize)X
+988(the)X
+1106(cost)X
+1255(of)X
+1342(log)X
+1464(\257ushing.)X
+755 4230(By)N
+871(using)X
+1067(a)X
+1126(very)X
+1292(small)X
+1488(database)X
+1788(\(one)X
+1954(that)X
+2097(can)X
+2232(be)X
+2331(entirely)X
+2599(cached)X
+2846(in)X
+2930(main)X
+3112(memory\))X
+3428(and)X
+3566(read-only)X
+3896(transactions,)X
+555 4320(we)N
+670(generated)X
+1004(a)X
+1061(CPU)X
+1236(bound)X
+1456(environment.)X
+1921(By)X
+2034(using)X
+2227(the)X
+2345(same)X
+2530(small)X
+2723(database,)X
+3040(the)X
+3158(complete)X
+3472(TPCB)X
+3691(transaction,)X
+4083(and)X
+4219(no)X
+3 f
+555 4410(fsync)N
+1 f
+733(\(2\))X
+862(on)X
+977(the)X
+1110(log)X
+1247(at)X
+1340(commit,)X
+1639(we)X
+1768(created)X
+2036(a)X
+2107(lock)X
+2280(contention)X
+2652(bound)X
+2886(environment.)X
+3365(The)X
+3524(small)X
+3731(database)X
+4042(used)X
+4223(an)X
+555 4500(account)N
+828(\256le)X
+953(containing)X
+1314(only)X
+1479(1000)X
+1662(records)X
+1922(rather)X
+2133(than)X
+2294(the)X
+2415(full)X
+2549(1,000,000)X
+2891(records)X
+3150(and)X
+3288(ran)X
+3413(enough)X
+3671(transactions)X
+4076(to)X
+4160(read)X
+555 4590(the)N
+677(entire)X
+883(database)X
+1183(into)X
+1330(the)X
+1451(buffer)X
+1671(pool)X
+1836(\(2000\))X
+2073(before)X
+2302(beginning)X
+2645(measurements.)X
+3147(The)X
+3295(read-only)X
+3626(transaction)X
+4001(consisted)X
+555 4680(of)N
+646(three)X
+831(database)X
+1132(reads)X
+1326(\(from)X
+1533(the)X
+1655(1000)X
+1839(record)X
+2069(account)X
+2343(\256le,)X
+2489(the)X
+2611(100)X
+2754(record)X
+2983(teller)X
+3171(\256le,)X
+3316(and)X
+3455(the)X
+3576(10)X
+3679(record)X
+3908(branch)X
+4150(\256le\).)X
+555 4770(Since)N
+759(no)X
+865(data)X
+1025(were)X
+1208(modi\256ed)X
+1518(and)X
+1660(no)X
+1766(history)X
+2014(records)X
+2277(were)X
+2460(written,)X
+2733(no)X
+2839(log)X
+2966(records)X
+3228(were)X
+3410(written.)X
+3702(For)X
+3838(the)X
+3961(contention)X
+555 4860(bound)N
+780(con\256guration,)X
+1252(we)X
+1371(used)X
+1543(the)X
+1666(normal)X
+1918(TPCB)X
+2142(transaction)X
+2519(\(against)X
+2798(the)X
+2920(small)X
+3117(database\))X
+3445(and)X
+3585(disabled)X
+3876(the)X
+3998(log)X
+4124(\257ush.)X
+555 4950(Figure)N
+784(eight)X
+964(shows)X
+1184(both)X
+1346(of)X
+1433(these)X
+1618(results.)X
+755 5073(The)N
+902(read-only)X
+1231(test)X
+1363(indicates)X
+1669(that)X
+1810(we)X
+1925(barely)X
+2147(scale)X
+2329(at)X
+2408(all)X
+2509(in)X
+2592(the)X
+2711(CPU)X
+2887(bound)X
+3108(case.)X
+3308(The)X
+3454(explanation)X
+3849(for)X
+3964(that)X
+4105(is)X
+4179(that)X
+555 5163(even)N
+735(with)X
+905(a)X
+969(single)X
+1188(process,)X
+1477(we)X
+1599(are)X
+1726(able)X
+1888(to)X
+1978(drive)X
+2171(the)X
+2297(CPU)X
+2480(utilization)X
+2832(to)X
+2922(96%.)X
+3137(As)X
+3254(a)X
+3317(result,)X
+3542(that)X
+3689(gives)X
+3885(us)X
+3983(very)X
+4153(little)X
+555 5253(room)N
+753(for)X
+876(improvement,)X
+1352(and)X
+1497(it)X
+1570(takes)X
+1764(a)X
+1829(multiprogramming)X
+2462(level)X
+2647(of)X
+2743(four)X
+2906(to)X
+2997(approach)X
+3321(100%)X
+3537(CPU)X
+3721(saturation.)X
+4106(In)X
+4201(the)X
+555 5343(case)N
+718(where)X
+939(we)X
+1057(do)X
+1161(perform)X
+1444(writes,)X
+1684(we)X
+1802(are)X
+1925(interested)X
+2261(in)X
+2347(detecting)X
+2665(when)X
+2863(lock)X
+3025(contention)X
+3387(becomes)X
+3691(a)X
+3750(dominant)X
+4075(perfor-)X
+555 5433(mance)N
+787(factor.)X
+1037(Contention)X
+1414(will)X
+1560(cause)X
+1761(two)X
+1903(phenomena;)X
+2317(we)X
+2433(will)X
+2579(see)X
+2704(transactions)X
+3109(queueing)X
+3425(behind)X
+3665(frequently)X
+4017(accessed)X
+555 5523(data,)N
+731(and)X
+869(we)X
+985(will)X
+1131(see)X
+1256(transaction)X
+1629(abort)X
+1815(rates)X
+1988(increasing)X
+2339(due)X
+2476(to)X
+2559(deadlock.)X
+2910(Given)X
+3127(that)X
+3268(the)X
+3387(branch)X
+3627(\256le)X
+3750(contains)X
+4038(only)X
+4201(ten)X
+8 s
+10 f
+555 5595(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)N
+5 s
+1 f
+727 5673(4)N
+8 s
+763 5698(Although)N
+1021(the)X
+1115(log)X
+1213(is)X
+1272(written)X
+1469(sequentially,)X
+1810(we)X
+1900(do)X
+1980(not)X
+2078(get)X
+2172(the)X
+2266(bene\256t)X
+2456(of)X
+2525(sequentiality)X
+2868(since)X
+3015(the)X
+3109(log)X
+3207(and)X
+3315(database)X
+3550(reside)X
+3718(on)X
+3798(the)X
+3892(same)X
+4039(disk.)X
+
+13 p
+%%Page: 13 13
+8 s 8 xH 0 xS 1 f
+10 s
+3 f
+1 f
+3187 2051 MXY
+0 18 Dl
+0 -9 Dl
+9 0 Dl
+-18 0 Dl
+3286 2028 MXY
+0 17 Dl
+0 -9 Dl
+9 0 Dl
+-18 0 Dl
+3384 1926 MXY
+0 18 Dl
+0 -9 Dl
+9 0 Dl
+-18 0 Dl
+3483 1910 MXY
+0 18 Dl
+0 -9 Dl
+9 0 Dl
+-18 0 Dl
+3581 1910 MXY
+0 18 Dl
+0 -9 Dl
+9 0 Dl
+-18 0 Dl
+3680 1832 MXY
+0 18 Dl
+0 -9 Dl
+9 0 Dl
+-18 0 Dl
+3778 1909 MXY
+0 18 Dl
+0 -9 Dl
+9 0 Dl
+-18 0 Dl
+3877 1883 MXY
+0 18 Dl
+0 -9 Dl
+9 0 Dl
+-18 0 Dl
+3975 1679 MXY
+0 17 Dl
+0 -8 Dl
+9 0 Dl
+-18 0 Dl
+4074 1487 MXY
+0 17 Dl
+0 -8 Dl
+9 0 Dl
+-18 0 Dl
+5 Dt
+3187 2060 MXY
+99 -24 Dl
+98 -101 Dl
+99 -16 Dl
+98 0 Dl
+99 -78 Dl
+98 77 Dl
+99 -26 Dl
+98 -204 Dl
+99 -192 Dl
+3 f
+6 s
+4088 1516(SMALL)N
+3 Dt
+3187 2051 MXY
+0 18 Dl
+0 -9 Dl
+9 0 Dl
+-18 0 Dl
+3286 2051 MXY
+0 18 Dl
+0 -9 Dl
+9 0 Dl
+-18 0 Dl
+3384 2041 MXY
+0 18 Dl
+0 -9 Dl
+9 0 Dl
+-18 0 Dl
+3483 1990 MXY
+0 18 Dl
+0 -9 Dl
+9 0 Dl
+-18 0 Dl
+3581 1843 MXY
+0 17 Dl
+0 -8 Dl
+9 0 Dl
+-18 0 Dl
+3680 1578 MXY
+0 18 Dl
+0 -9 Dl
+9 0 Dl
+-18 0 Dl
+3778 1496 MXY
+0 18 Dl
+0 -9 Dl
+9 0 Dl
+-18 0 Dl
+3877 1430 MXY
+0 18 Dl
+0 -9 Dl
+9 0 Dl
+-18 0 Dl
+3975 1269 MXY
+0 18 Dl
+0 -9 Dl
+9 0 Dl
+-18 0 Dl
+4074 1070 MXY
+0 18 Dl
+0 -9 Dl
+9 0 Dl
+-18 0 Dl
+1 Dt
+3187 2060 MXY
+99 0 Dl
+98 -10 Dl
+99 -51 Dl
+98 -147 Dl
+99 -265 Dl
+98 -82 Dl
+99 -66 Dl
+98 -161 Dl
+99 -199 Dl
+4088 1099(LARGE)N
+5 Dt
+3089 2060 MXY
+985 0 Dl
+3089 MX
+0 -1174 Dl
+4 Ds
+1 Dt
+3581 2060 MXY
+0 -1174 Dl
+4074 2060 MXY
+0 -1174 Dl
+3089 1825 MXY
+985 0 Dl
+9 s
+2993 1855(25)N
+3089 1591 MXY
+985 0 Dl
+2993 1621(50)N
+3089 1356 MXY
+985 0 Dl
+2993 1386(75)N
+3089 1121 MXY
+985 0 Dl
+2957 1151(100)N
+3089 886 MXY
+985 0 Dl
+2957 916(125)N
+3281 2199(Multiprogramming)N
+3071 2152(0)N
+3569(5)X
+4038(10)X
+2859 787(Aborts)N
+3089(per)X
+3211(500)X
+2901 847(transactions)N
+-1 Ds
+3 Dt
+2037 1342 MXY
+0 18 Dl
+0 -9 Dl
+9 0 Dl
+-18 0 Dl
+2125 1358 MXY
+0 18 Dl
+0 -9 Dl
+9 0 Dl
+-18 0 Dl
+2213 1341 MXY
+0 18 Dl
+0 -9 Dl
+9 0 Dl
+-18 0 Dl
+2301 1191 MXY
+0 18 Dl
+0 -9 Dl
+9 0 Dl
+-18 0 Dl
+2388 1124 MXY
+0 18 Dl
+0 -9 Dl
+9 0 Dl
+-17 0 Dl
+2476 1157 MXY
+0 18 Dl
+0 -9 Dl
+9 0 Dl
+-18 0 Dl
+2564 1157 MXY
+0 18 Dl
+0 -9 Dl
+9 0 Dl
+-18 0 Dl
+2652 1161 MXY
+0 18 Dl
+0 -9 Dl
+9 0 Dl
+-18 0 Dl
+2740 1153 MXY
+0 18 Dl
+0 -9 Dl
+9 0 Dl
+-18 0 Dl
+2828 1150 MXY
+0 18 Dl
+0 -9 Dl
+8 0 Dl
+-17 0 Dl
+5 Dt
+2037 1351 MXY
+88 16 Dl
+88 -17 Dl
+88 -150 Dl
+87 -67 Dl
+88 33 Dl
+88 0 Dl
+88 4 Dl
+88 -8 Dl
+88 -3 Dl
+6 s
+2685 1234(READ-ONLY)N
+3 Dt
+2037 1464 MXY
+0 18 Dl
+0 -9 Dl
+9 0 Dl
+-18 0 Dl
+2125 1640 MXY
+0 18 Dl
+0 -9 Dl
+9 0 Dl
+-18 0 Dl
+2213 1854 MXY
+0 18 Dl
+0 -9 Dl
+9 0 Dl
+-18 0 Dl
+2301 1872 MXY
+0 18 Dl
+0 -9 Dl
+9 0 Dl
+-18 0 Dl
+2388 1871 MXY
+0 17 Dl
+0 -9 Dl
+9 0 Dl
+-17 0 Dl
+2476 1933 MXY
+0 18 Dl
+0 -9 Dl
+9 0 Dl
+-18 0 Dl
+2564 1914 MXY
+0 18 Dl
+0 -9 Dl
+9 0 Dl
+-18 0 Dl
+2652 1903 MXY
+0 18 Dl
+0 -9 Dl
+9 0 Dl
+-18 0 Dl
+2740 1980 MXY
+0 18 Dl
+0 -9 Dl
+9 0 Dl
+-18 0 Dl
+2828 2004 MXY
+0 18 Dl
+0 -9 Dl
+8 0 Dl
+-17 0 Dl
+1 Dt
+2037 1473 MXY
+88 176 Dl
+88 214 Dl
+88 18 Dl
+87 -2 Dl
+88 63 Dl
+88 -19 Dl
+88 -11 Dl
+88 77 Dl
+88 24 Dl
+2759 1997(NO-FSYNC)N
+5 Dt
+1949 2060 MXY
+879 0 Dl
+1949 MX
+0 -1174 Dl
+4 Ds
+1 Dt
+2388 2060 MXY
+0 -1174 Dl
+2828 2060 MXY
+0 -1174 Dl
+1949 1825 MXY
+879 0 Dl
+9 s
+1842 1855(40)N
+1949 1591 MXY
+879 0 Dl
+1842 1621(80)N
+1949 1356 MXY
+879 0 Dl
+1806 1386(120)N
+1949 1121 MXY
+879 0 Dl
+1806 1151(160)N
+1949 886 MXY
+879 0 Dl
+1806 916(200)N
+2088 2199(Multiprogramming)N
+1844 863(in)N
+1922(TPS)X
+1761 792(Throughput)N
+1931 2121(0)N
+2370 2133(5)N
+2792(10)X
+6 s
+1679 1833(LIBTP)N
+-1 Ds
+3 Dt
+837 1019 MXY
+0 17 Dl
+0 -9 Dl
+9 0 Dl
+-18 0 Dl
+929 878 MXY
+0 17 Dl
+0 -9 Dl
+9 0 Dl
+-18 0 Dl
+1021 939 MXY
+0 18 Dl
+0 -9 Dl
+9 0 Dl
+-18 0 Dl
+1113 1043 MXY
+0 18 Dl
+0 -9 Dl
+9 0 Dl
+-18 0 Dl
+1205 1314 MXY
+0 18 Dl
+0 -9 Dl
+9 0 Dl
+-18 0 Dl
+1297 1567 MXY
+0 18 Dl
+0 -9 Dl
+9 0 Dl
+-18 0 Dl
+1389 1665 MXY
+0 18 Dl
+0 -9 Dl
+9 0 Dl
+-18 0 Dl
+1481 1699 MXY
+0 18 Dl
+0 -9 Dl
+9 0 Dl
+-18 0 Dl
+1573 1828 MXY
+0 18 Dl
+0 -9 Dl
+9 0 Dl
+-18 0 Dl
+1665 1804 MXY
+0 18 Dl
+0 -9 Dl
+8 0 Dl
+-17 0 Dl
+5 Dt
+837 1027 MXY
+92 -141 Dl
+92 62 Dl
+92 104 Dl
+92 271 Dl
+92 253 Dl
+92 98 Dl
+92 34 Dl
+92 129 Dl
+92 -24 Dl
+745 2060 MXY
+920 0 Dl
+745 MX
+0 -1174 Dl
+4 Ds
+1 Dt
+1205 2060 MXY
+0 -1174 Dl
+1665 2060 MXY
+0 -1174 Dl
+745 1766 MXY
+920 0 Dl
+9 s
+673 1796(3)N
+745 1473 MXY
+920 0 Dl
+673 1503(5)N
+745 1180 MXY
+920 0 Dl
+673 1210(8)N
+745 886 MXY
+920 0 Dl
+637 916(10)N
+905 2199(Multiprogramming)N
+622 851(in)N
+700(TPS)X
+575 792(Throughput)N
+733 2152(0)N
+1196(5)X
+1629(10)X
+3 Dt
+-1 Ds
+8 s
+655 2441(Figure)N
+872(7:)X
+960(Multi-user)X
+1286(Performance.)X
+1 f
+655 2531(Since)N
+825(the)X
+931(con\256guration)X
+1300(is)X
+1371(completely)X
+655 2621(disk)N
+790(bound,)X
+994(we)X
+1096(see)X
+1204(only)X
+1345(a)X
+1400(small)X
+1566(im-)X
+655 2711(provement)N
+964(by)X
+1064(adding)X
+1274(a)X
+1337(second)X
+1549(pro-)X
+655 2801(cess.)N
+849(Adding)X
+1081(any)X
+1213(more)X
+1383(concurrent)X
+655 2891(processes)N
+935(causes)X
+1137(performance)X
+1493(degra-)X
+655 2981(dation.)N
+3 f
+1927 2441(Figure)N
+2149(8:)X
+2243(Multi-user)X
+2574(Performance)X
+1927 2531(on)N
+2021(a)X
+2079(small)X
+2251(database.)X
+1 f
+2551(With)X
+2704(one)X
+2821(pro-)X
+1927 2621(cess,)N
+2075(we)X
+2174(are)X
+2276(driving)X
+2486(the)X
+2589(CPU)X
+2739(at)X
+2810(96%)X
+1927 2711(utilization)N
+2215(leaving)X
+2430(little)X
+2575(room)X
+2737(for)X
+2838(im-)X
+1927 2801(provement)N
+2238(as)X
+2328(the)X
+2443(multiprogramming)X
+1927 2891(level)N
+2091(increases.)X
+2396(In)X
+2489(the)X
+2607(NO-FSYNC)X
+1927 2981(case,)N
+2076(lock)X
+2209(contention)X
+2502(degrades)X
+2751(perfor-)X
+1927 3071(mance)N
+2117(as)X
+2194(soon)X
+2339(as)X
+2416(a)X
+2468(second)X
+2669(process)X
+2884(is)X
+1927 3161(added.)N
+3 f
+3199 2441(Figure)N
+3405(9:)X
+3482(Abort)X
+3669(rates)X
+3827(on)X
+3919(the)X
+4028(TPCB)X
+3199 2531(Benchmark.)N
+1 f
+3589(The)X
+3726(abort)X
+3895(rate)X
+4028(climbs)X
+3199 2621(more)N
+3366(quickly)X
+3594(for)X
+3704(the)X
+3818(large)X
+3980(database)X
+3199 2711(test)N
+3324(since)X
+3491(processes)X
+3771(are)X
+3884(descheduled)X
+3199 2801(more)N
+3409(frequently,)X
+3766(allowing)X
+4068(more)X
+3199 2891(processes)N
+3459(to)X
+3525(vie)X
+3619(for)X
+3709(the)X
+3803(same)X
+3950(locks.)X
+10 s
+10 f
+555 3284(h)N
+579(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)X
+1 f
+555 3560(records,)N
+835(we)X
+952(expect)X
+1185(contention)X
+1546(to)X
+1631(become)X
+1904(a)X
+1963(factor)X
+2174(quickly)X
+2437(and)X
+2576(the)X
+2697(NO-FSYNC)X
+3120(line)X
+3263(in)X
+3348(\256gure)X
+3557(eight)X
+3739(demonstrates)X
+4184(this)X
+555 3650(dramatically.)N
+1022(Each)X
+1209(additional)X
+1555(process)X
+1822(causes)X
+2058(both)X
+2226(more)X
+2417(waiting)X
+2682(and)X
+2823(more)X
+3013(deadlocking.)X
+3470(Figure)X
+3704(nine)X
+3867(shows)X
+4092(that)X
+4237(in)X
+555 3740(the)N
+681(small)X
+882(database)X
+1187(case)X
+1353(\(SMALL\),)X
+1725(waiting)X
+1992(is)X
+2072(the)X
+2197(dominant)X
+2526(cause)X
+2732(of)X
+2826(declining)X
+3151(performance)X
+3585(\(the)X
+3737(number)X
+4009(of)X
+4103(aborts)X
+555 3830(increases)N
+878(less)X
+1026(steeply)X
+1281(than)X
+1447(the)X
+1573(performance)X
+2008(drops)X
+2214(off)X
+2336(in)X
+2426(\256gure)X
+2641(eight\),)X
+2876(while)X
+3082(in)X
+3172(the)X
+3298(large)X
+3487(database)X
+3792(case)X
+3958(\(LARGE\),)X
+555 3920(deadlocking)N
+967(contributes)X
+1343(more)X
+1528(to)X
+1610(the)X
+1728(declining)X
+2046(performance.)X
+755 4043(Deadlocks)N
+1116(are)X
+1237(more)X
+1424(likely)X
+1628(to)X
+1712(occur)X
+1913(in)X
+1997(the)X
+2116(LARGE)X
+2404(test)X
+2536(than)X
+2695(in)X
+2778(the)X
+2897(SMALL)X
+3189(test)X
+3321(because)X
+3597(there)X
+3779(are)X
+3899(more)X
+4085(oppor-)X
+555 4133(tunities)N
+814(to)X
+900(wait.)X
+1082(In)X
+1173(the)X
+1295(SMALL)X
+1590(case,)X
+1773(processes)X
+2105(never)X
+2307(do)X
+2410(I/O)X
+2540(and)X
+2679(are)X
+2801(less)X
+2944(likely)X
+3149(to)X
+3234(be)X
+3333(descheduled)X
+3753(during)X
+3985(a)X
+4044(transac-)X
+555 4223(tion.)N
+740(In)X
+828(the)X
+947(LARGE)X
+1235(case,)X
+1415(processes)X
+1744(will)X
+1889(frequently)X
+2240(be)X
+2337(descheduled)X
+2755(since)X
+2941(they)X
+3100(have)X
+3273(to)X
+3356(perform)X
+3636(I/O.)X
+3804(This)X
+3967(provides)X
+4263(a)X
+555 4313(window)N
+837(where)X
+1058(a)X
+1118(second)X
+1365(process)X
+1630(can)X
+1766(request)X
+2022(locks)X
+2215(on)X
+2318(already)X
+2578(locked)X
+2815(pages,)X
+3041(thus)X
+3197(increasing)X
+3550(the)X
+3671(likelihood)X
+4018(of)X
+4108(build-)X
+555 4403(ing)N
+677(up)X
+777(long)X
+939(chains)X
+1164(of)X
+1251(waiting)X
+1511(processes.)X
+1879(Eventually,)X
+2266(this)X
+2401(leads)X
+2586(to)X
+2668(deadlock.)X
+3 f
+555 4589(5.2.)N
+715(The)X
+868(OO1)X
+1052(Benchmark)X
+1 f
+755 4712(The)N
+903(TPCB)X
+1125(benchmark)X
+1505(described)X
+1836(in)X
+1921(the)X
+2042(previous)X
+2341(section)X
+2591(measures)X
+2913(performance)X
+3343(under)X
+3549(a)X
+3608(conventional)X
+4044(transac-)X
+555 4802(tion)N
+706(processing)X
+1076(workload.)X
+1446(Other)X
+1656(application)X
+2039(domains,)X
+2357(such)X
+2531(as)X
+2625(computer-aided)X
+3156(design,)X
+3412(have)X
+3591(substantially)X
+4022(different)X
+555 4892(access)N
+786(patterns.)X
+1105(In)X
+1197(order)X
+1392(to)X
+1479(measure)X
+1772(the)X
+1895(performance)X
+2327(of)X
+2418(LIBTP)X
+2664(under)X
+2871(workloads)X
+3229(of)X
+3320(this)X
+3459(type,)X
+3641(we)X
+3759(implemented)X
+4201(the)X
+555 4982(OO1)N
+731(benchmark)X
+1108(described)X
+1436(in)X
+1518([CATT91].)X
+755 5105(The)N
+908(database)X
+1213(models)X
+1472(a)X
+1535(set)X
+1651(of)X
+1745(electronics)X
+2120(components)X
+2534(with)X
+2703(connections)X
+3113(among)X
+3358(them.)X
+3585(One)X
+3746(table)X
+3929(stores)X
+4143(parts)X
+555 5195(and)N
+696(another)X
+962(stores)X
+1174(connections.)X
+1622(There)X
+1835(are)X
+1959(three)X
+2145(connections)X
+2552(originating)X
+2927(at)X
+3009(any)X
+3149(given)X
+3351(part.)X
+3540(Ninety)X
+3782(percent)X
+4043(of)X
+4134(these)X
+555 5285(connections)N
+960(are)X
+1081(to)X
+1165(nearby)X
+1406(parts)X
+1584(\(those)X
+1802(with)X
+1966(nearby)X
+2 f
+2207(ids)X
+1 f
+2300(\))X
+2348(to)X
+2431(model)X
+2652(the)X
+2771(spatial)X
+3001(locality)X
+3262(often)X
+3448(exhibited)X
+3767(in)X
+3850(CAD)X
+4040(applica-)X
+555 5375(tions.)N
+779(Ten)X
+933(percent)X
+1198(of)X
+1293(the)X
+1419(connections)X
+1830(are)X
+1957(randomly)X
+2292(distributed)X
+2662(among)X
+2908(all)X
+3016(other)X
+3209(parts)X
+3393(in)X
+3483(the)X
+3609(database.)X
+3954(Every)X
+4174(part)X
+555 5465(appears)N
+829(exactly)X
+1089(three)X
+1278(times)X
+1479(in)X
+1569(the)X
+2 f
+1695(from)X
+1 f
+1874(\256eld)X
+2043(of)X
+2137(a)X
+2200(connection)X
+2579(record,)X
+2832(and)X
+2975(zero)X
+3141(or)X
+3235(more)X
+3427(times)X
+3627(in)X
+3716(the)X
+2 f
+3841(to)X
+1 f
+3930(\256eld.)X
+4139(Parts)X
+555 5555(have)N
+2 f
+727(x)X
+1 f
+783(and)X
+2 f
+919(y)X
+1 f
+975(locations)X
+1284(set)X
+1393(randomly)X
+1720(in)X
+1802(an)X
+1898(appropriate)X
+2284(range.)X
+
+14 p
+%%Page: 14 14
+10 s 10 xH 0 xS 1 f
+3 f
+1 f
+755 630(The)N
+900(intent)X
+1102(of)X
+1189(OO1)X
+1365(is)X
+1438(to)X
+1520(measure)X
+1808(the)X
+1926(overall)X
+2169(cost)X
+2318(of)X
+2405(a)X
+2461(query)X
+2664(mix)X
+2808(characteristic)X
+3257(of)X
+3344(engineering)X
+3743(database)X
+4040(applica-)X
+555 720(tions.)N
+770(There)X
+978(are)X
+1097(three)X
+1278(tests:)X
+10 f
+635 843(g)N
+2 f
+755(Lookup)X
+1 f
+1022(generates)X
+1353(1,000)X
+1560(random)X
+1832(part)X
+2 f
+1984(ids)X
+1 f
+2077(,)X
+2124(fetches)X
+2378(the)X
+2502(corresponding)X
+2987(parts)X
+3169(from)X
+3351(the)X
+3475(database,)X
+3798(and)X
+3940(calls)X
+4113(a)X
+4175(null)X
+755 933(procedure)N
+1097(in)X
+1179(the)X
+1297(host)X
+1450(programming)X
+1906(language)X
+2216(with)X
+2378(the)X
+2496(parts')X
+2 f
+2699(x)X
+1 f
+2755(and)X
+2 f
+2891(y)X
+1 f
+2947(positions.)X
+10 f
+635 1056(g)N
+2 f
+755(Traverse)X
+1 f
+1067(retrieves)X
+1371(a)X
+1434(random)X
+1706(part)X
+1858(from)X
+2041(the)X
+2166(database)X
+2470(and)X
+2613(follows)X
+2880(connections)X
+3290(from)X
+3473(it)X
+3544(to)X
+3632(other)X
+3823(parts.)X
+4045(Each)X
+4232(of)X
+755 1146(those)N
+947(parts)X
+1126(is)X
+1202(retrieved,)X
+1531(and)X
+1670(all)X
+1773(connections)X
+2179(from)X
+2358(it)X
+2424(followed.)X
+2771(This)X
+2935(procedure)X
+3279(is)X
+3354(repeated)X
+3649(depth-\256rst)X
+4000(for)X
+4116(seven)X
+755 1236(hops)N
+930(from)X
+1110(the)X
+1232(original)X
+1505(part,)X
+1674(for)X
+1792(a)X
+1852(total)X
+2018(of)X
+2109(3280)X
+2293(parts.)X
+2513(Backward)X
+2862(traversal)X
+3162(also)X
+3314(exists,)X
+3539(and)X
+3678(follows)X
+3941(all)X
+4044(connec-)X
+755 1326(tions)N
+930(into)X
+1074(a)X
+1130(given)X
+1328(part)X
+1473(to)X
+1555(their)X
+1722(origin.)X
+10 f
+635 1449(g)N
+2 f
+755(Insert)X
+1 f
+962(adds)X
+1129(100)X
+1269(new)X
+1423(parts)X
+1599(and)X
+1735(their)X
+1902(connections.)X
+755 1572(The)N
+913(benchmark)X
+1303(is)X
+1389(single-user,)X
+1794(but)X
+1929(multi-user)X
+2291(access)X
+2530(controls)X
+2821(\(locking)X
+3120(and)X
+3268(transaction)X
+3652(protection\))X
+4036(must)X
+4223(be)X
+555 1662(enforced.)N
+898(It)X
+968(is)X
+1042(designed)X
+1348(to)X
+1431(be)X
+1528(run)X
+1656(on)X
+1757(a)X
+1814(database)X
+2112(with)X
+2275(20,000)X
+2516(parts,)X
+2713(and)X
+2850(on)X
+2951(one)X
+3087(with)X
+3249(200,000)X
+3529(parts.)X
+3745(Because)X
+4033(we)X
+4147(have)X
+555 1752(insuf\256cient)N
+935(disk)X
+1088(space)X
+1287(for)X
+1401(the)X
+1519(larger)X
+1727(database,)X
+2044(we)X
+2158(report)X
+2370(results)X
+2599(only)X
+2761(for)X
+2875(the)X
+2993(20,000)X
+3233(part)X
+3378(database.)X
+3 f
+555 1938(5.2.1.)N
+775(Implementation)X
+1 f
+755 2061(The)N
+920(LIBTP)X
+1182(implementation)X
+1724(of)X
+1831(OO1)X
+2027(uses)X
+2205(the)X
+2342(TCL)X
+2532([OUST90])X
+2914(interface)X
+3235(described)X
+3582(earlier.)X
+3867(The)X
+4031(backend)X
+555 2151(accepts)N
+813(commands)X
+1181(over)X
+1345(an)X
+1442(IP)X
+1534(socket)X
+1760(and)X
+1897(performs)X
+2208(the)X
+2327(requested)X
+2656(database)X
+2954(actions.)X
+3242(The)X
+3387(frontend)X
+3679(opens)X
+3886(and)X
+4022(executes)X
+555 2241(a)N
+618(TCL)X
+796(script.)X
+1041(This)X
+1210(script)X
+1415(contains)X
+1709(database)X
+2013(accesses)X
+2313(interleaved)X
+2697(with)X
+2866(ordinary)X
+3165(program)X
+3463(control)X
+3716(statements.)X
+4120(Data-)X
+555 2331(base)N
+718(commands)X
+1085(are)X
+1204(submitted)X
+1539(to)X
+1621(the)X
+1739(backend)X
+2027(and)X
+2163(results)X
+2392(are)X
+2511(bound)X
+2731(to)X
+2813(program)X
+3105(variables.)X
+755 2454(The)N
+903(parts)X
+1082(table)X
+1261(was)X
+1409(stored)X
+1628(as)X
+1718(a)X
+1776(B-tree)X
+1999(indexed)X
+2275(by)X
+2 f
+2377(id)X
+1 f
+2439(.)X
+2501(The)X
+2648(connection)X
+3022(table)X
+3200(was)X
+3347(stored)X
+3565(as)X
+3654(a)X
+3712(set)X
+3823(of)X
+3912(\256xed-length)X
+555 2544(records)N
+824(using)X
+1029(the)X
+1159(4.4BSD)X
+1446(recno)X
+1657(access)X
+1895(method.)X
+2207(In)X
+2306(addition,)X
+2620(two)X
+2771(B-tree)X
+3003(indices)X
+3261(were)X
+3449(maintained)X
+3836(on)X
+3947(connection)X
+555 2634(table)N
+732(entries.)X
+1007(One)X
+1162(index)X
+1360(mapped)X
+1634(the)X
+2 f
+1752(from)X
+1 f
+1923(\256eld)X
+2085(to)X
+2167(a)X
+2223(connection)X
+2595(record)X
+2821(number,)X
+3106(and)X
+3242(the)X
+3360(other)X
+3545(mapped)X
+3819(the)X
+2 f
+3937(to)X
+1 f
+4019(\256eld)X
+4181(to)X
+4263(a)X
+555 2724(connection)N
+932(record)X
+1163(number.)X
+1473(These)X
+1690(indices)X
+1941(support)X
+2205(fast)X
+2345(lookups)X
+2622(on)X
+2726(connections)X
+3133(in)X
+3219(both)X
+3385(directions.)X
+3765(For)X
+3900(the)X
+4022(traversal)X
+555 2814(tests,)N
+743(the)X
+867(frontend)X
+1165(does)X
+1338(an)X
+1439(index)X
+1642(lookup)X
+1889(to)X
+1976(discover)X
+2273(the)X
+2396(connected)X
+2747(part's)X
+2 f
+2955(id)X
+1 f
+3017(,)X
+3062(and)X
+3203(then)X
+3366(does)X
+3538(another)X
+3804(lookup)X
+4051(to)X
+4138(fetch)X
+555 2904(the)N
+673(part)X
+818(itself.)X
+3 f
+555 3090(5.2.2.)N
+775(Performance)X
+1242(Measurements)X
+1766(for)X
+1889(OO1)X
+1 f
+755 3213(We)N
+888(compare)X
+1186(LIBTP's)X
+1487(OO1)X
+1664(performance)X
+2092(to)X
+2174(that)X
+2314(reported)X
+2602(in)X
+2684([CATT91].)X
+3087(Those)X
+3303(results)X
+3532(were)X
+3709(collected)X
+4019(on)X
+4119(a)X
+4175(Sun)X
+555 3303(3/280)N
+759(\(25)X
+888(MHz)X
+1075(MC68020\))X
+1448(with)X
+1612(16)X
+1714(MBytes)X
+1989(of)X
+2078(memory)X
+2367(and)X
+2505(two)X
+2647(Hitachi)X
+2904(892MByte)X
+3267(disks)X
+3452(\(15)X
+3580(ms)X
+3694(average)X
+3966(seek)X
+4130(time\))X
+555 3393(behind)N
+793(an)X
+889(SMD-4)X
+1149(controller.)X
+1521(Frontends)X
+1861(ran)X
+1984(on)X
+2084(an)X
+2180(8MByte)X
+2462(Sun)X
+2606(3/260.)X
+755 3516(In)N
+844(order)X
+1036(to)X
+1120(measure)X
+1410(performance)X
+1839(on)X
+1941(a)X
+1999(machine)X
+2293(of)X
+2382(roughly)X
+2653(equivalent)X
+3009(processor)X
+3339(power,)X
+3582(we)X
+3698(ran)X
+3822(one)X
+3959(set)X
+4069(of)X
+4157(tests)X
+555 3606(on)N
+666(a)X
+733(standalone)X
+1107(MC68030-based)X
+1671(HP300)X
+1923(\(33MHz)X
+2225(MC68030\).)X
+2646(The)X
+2801(database)X
+3108(was)X
+3263(stored)X
+3489(on)X
+3599(a)X
+3665(300MByte)X
+4037(HP7959)X
+555 3696(SCSI)N
+744(disk)X
+898(\(17)X
+1026(ms)X
+1139(average)X
+1410(seek)X
+1573(time\).)X
+1802(Since)X
+2000(this)X
+2135(machine)X
+2427(is)X
+2500(not)X
+2622(connected)X
+2968(to)X
+3050(a)X
+3106(network,)X
+3409(we)X
+3523(ran)X
+3646(local)X
+3822(tests)X
+3984(where)X
+4201(the)X
+555 3786(frontend)N
+855(and)X
+999(backend)X
+1295(run)X
+1430(on)X
+1538(the)X
+1664(same)X
+1856(machine.)X
+2195(We)X
+2334(compare)X
+2638(these)X
+2830(measurements)X
+3316(with)X
+3485(Cattell's)X
+3783(local)X
+3966(Sun)X
+4117(3/280)X
+555 3876(numbers.)N
+755 3999(Because)N
+1051(the)X
+1177(benchmark)X
+1562(requires)X
+1849(remote)X
+2100(access,)X
+2354(we)X
+2476(ran)X
+2607(another)X
+2876(set)X
+2993(of)X
+3088(tests)X
+3258(on)X
+3365(a)X
+3428(DECstation)X
+3828(5000/200)X
+4157(with)X
+555 4089(32M)N
+732(of)X
+825(memory)X
+1118(running)X
+1393(Ultrix)X
+1610(V4.0)X
+1794(and)X
+1936(a)X
+1998(DEC)X
+2184(1GByte)X
+2459(RZ57)X
+2666(SCSI)X
+2859(disk.)X
+3057(We)X
+3194(compare)X
+3496(the)X
+3619(local)X
+3800(performance)X
+4232(of)X
+555 4179(OO1)N
+734(on)X
+837(the)X
+958(DECstation)X
+1354(to)X
+1439(its)X
+1536(remote)X
+1781(performance.)X
+2250(For)X
+2383(the)X
+2503(remote)X
+2748(case,)X
+2929(we)X
+3045(ran)X
+3170(the)X
+3290(frontend)X
+3584(on)X
+3686(a)X
+3744(DECstation)X
+4139(3100)X
+555 4269(with)N
+717(16)X
+817(MBytes)X
+1090(of)X
+1177(main)X
+1357(memory.)X
+755 4392(The)N
+900(databases)X
+1228(tested)X
+1435(in)X
+1517([CATT91])X
+1880(are)X
+10 f
+635 4515(g)N
+1 f
+755(INDEX,)X
+1045(a)X
+1101(highly-optimized)X
+1672(access)X
+1898(method)X
+2158(package)X
+2442(developed)X
+2792(at)X
+2870(Sun)X
+3014(Microsystems.)X
+10 f
+635 4638(g)N
+1 f
+755(OODBMS,)X
+1137(a)X
+1193(beta)X
+1347(release)X
+1591(of)X
+1678(a)X
+1734(commercial)X
+2133(object-oriented)X
+2639(database)X
+2936(management)X
+3366(system.)X
+10 f
+635 4761(g)N
+1 f
+755(RDBMS,)X
+1076(a)X
+1133(UNIX-based)X
+1565(commercial)X
+1965(relational)X
+2289(data)X
+2444(manager)X
+2742(at)X
+2821(production)X
+3189(release.)X
+3474(The)X
+3620(OO1)X
+3797(implementation)X
+755 4851(used)N
+922(embedded)X
+1272(SQL)X
+1443(in)X
+1525(C.)X
+1638(Stored)X
+1867(procedures)X
+2240(were)X
+2417(de\256ned)X
+2673(to)X
+2755(reduce)X
+2990(client-server)X
+3412(traf\256c.)X
+755 4974(Table)N
+974(two)X
+1130(shows)X
+1366(the)X
+1500(measurements)X
+1995(from)X
+2187([CATT91])X
+2566(and)X
+2718(LIBTP)X
+2976(for)X
+3106(a)X
+3178(local)X
+3370(test)X
+3517(on)X
+3632(the)X
+3765(MC680x0-based)X
+555 5064(hardware.)N
+915(All)X
+1037(caches)X
+1272(are)X
+1391(cleared)X
+1644(before)X
+1870(each)X
+2038(test.)X
+2209(All)X
+2331(times)X
+2524(are)X
+2643(in)X
+2725(seconds.)X
+755 5187(Table)N
+960(two)X
+1102(shows)X
+1324(that)X
+1466(LIBTP)X
+1710(outperforms)X
+2123(the)X
+2242(commercial)X
+2642(relational)X
+2966(system,)X
+3229(but)X
+3352(is)X
+3426(slower)X
+3661(than)X
+3820(OODBMS)X
+4183(and)X
+555 5277(INDEX.)N
+872(Since)X
+1077(the)X
+1202(caches)X
+1444(were)X
+1628(cleared)X
+1888(at)X
+1973(the)X
+2098(start)X
+2263(of)X
+2356(each)X
+2530(test,)X
+2687(disk)X
+2846(throughput)X
+3223(is)X
+3302(critical)X
+3551(in)X
+3639(this)X
+3780(test.)X
+3957(The)X
+4108(single)X
+555 5367(SCSI)N
+749(HP)X
+877(drive)X
+1068(used)X
+1241(by)X
+1347(LIBTP)X
+1595(is)X
+1674(approximately)X
+2163(13%)X
+2336(slower)X
+2576(than)X
+2739(the)X
+2862(disks)X
+3051(used)X
+3223(in)X
+3310([CATT91])X
+3678(which)X
+3899(accounts)X
+4205(for)X
+555 5457(part)N
+700(of)X
+787(the)X
+905(difference.)X
+755 5580(OODBMS)N
+1118(and)X
+1255(INDEX)X
+1525(outperform)X
+1906(LIBTP)X
+2148(most)X
+2323(dramatically)X
+2744(on)X
+2844(traversal.)X
+3181(This)X
+3343(is)X
+3416(because)X
+3691(we)X
+3805(use)X
+3932(index)X
+4130(look-)X
+555 5670(ups)N
+689(to)X
+774(\256nd)X
+921(connections,)X
+1347(whereas)X
+1634(the)X
+1755(other)X
+1942(two)X
+2084(systems)X
+2359(use)X
+2488(a)X
+2546(link)X
+2692(access)X
+2920(method.)X
+3222(The)X
+3369(index)X
+3569(requires)X
+3850(us)X
+3943(to)X
+4027(examine)X
+
+15 p
+%%Page: 15 15
+10 s 10 xH 0 xS 1 f
+3 f
+1 f
+10 f
+555 679(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)N
+2 f
+606 769(Measure)N
+1 f
+1019(INDEX)X
+1389(OODBMS)X
+1851(RDBMS)X
+2250(LIBTP)X
+10 f
+555 771(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)N
+555 787(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)N
+1 f
+595 869(Lookup)N
+1114(5.4)X
+1490(12.9)X
+1950(27)X
+2291(27.2)X
+595 959(Traversal)N
+1074(13)X
+1530(9.8)X
+1950(90)X
+2291(47.3)X
+595 1049(Insert)N
+1114(7.4)X
+1530(1.5)X
+1950(22)X
+2331(9.7)X
+10 f
+555 1059(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)N
+555(c)X
+999(c)Y
+919(c)Y
+839(c)Y
+759(c)Y
+959 1059(c)N
+999(c)Y
+919(c)Y
+839(c)Y
+759(c)Y
+1329 1059(c)N
+999(c)Y
+919(c)Y
+839(c)Y
+759(c)Y
+1791 1059(c)N
+999(c)Y
+919(c)Y
+839(c)Y
+759(c)Y
+2190 1059(c)N
+999(c)Y
+919(c)Y
+839(c)Y
+759(c)Y
+2512 1059(c)N
+999(c)Y
+919(c)Y
+839(c)Y
+759(c)Y
+2618 679(i)N
+2629(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
+2 f
+2829 769(Measure)N
+3401(Cache)X
+3726(Local)X
+4028(Remote)X
+1 f
+10 f
+2618 771(i)N
+2629(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
+2618 787(i)N
+2629(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
+1 f
+2658 869(Lookup)N
+3401(cold)X
+3747(15.7)X
+4078(20.6)X
+3401 959(warm)N
+3787(7.8)X
+4078(12.4)X
+10 f
+2618 969(i)N
+2629(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
+1 f
+2658 1059(Forward)N
+2950(traversal)X
+3401(cold)X
+3747(28.4)X
+4078(52.6)X
+3401 1149(warm)N
+3747(23.5)X
+4078(47.4)X
+10 f
+2618 1159(i)N
+2629(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
+1 f
+2658 1249(Backward)N
+3004(traversal)X
+3401(cold)X
+3747(24.2)X
+4078(47.4)X
+3401 1339(warm)N
+3747(24.3)X
+4078(47.6)X
+10 f
+2618 1349(i)N
+2629(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
+1 f
+2658 1439(Insert)N
+3401(cold)X
+3787(7.5)X
+4078(10.3)X
+3401 1529(warm)N
+3787(6.7)X
+4078(10.9)X
+10 f
+2618 1539(i)N
+2629(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X
+2618(c)X
+1479(c)Y
+1399(c)Y
+1319(c)Y
+1239(c)Y
+1159(c)Y
+1079(c)Y
+999(c)Y
+919(c)Y
+839(c)Y
+759(c)Y
+3341 1539(c)N
+1479(c)Y
+1399(c)Y
+1319(c)Y
+1239(c)Y
+1159(c)Y
+1079(c)Y
+999(c)Y
+919(c)Y
+839(c)Y
+759(c)Y
+3666 1539(c)N
+1479(c)Y
+1399(c)Y
+1319(c)Y
+1239(c)Y
+1159(c)Y
+1079(c)Y
+999(c)Y
+919(c)Y
+839(c)Y
+759(c)Y
+3968 1539(c)N
+1479(c)Y
+1399(c)Y
+1319(c)Y
+1239(c)Y
+1159(c)Y
+1079(c)Y
+999(c)Y
+919(c)Y
+839(c)Y
+759(c)Y
+4309 1539(c)N
+1479(c)Y
+1399(c)Y
+1319(c)Y
+1239(c)Y
+1159(c)Y
+1079(c)Y
+999(c)Y
+919(c)Y
+839(c)Y
+759(c)Y
+3 f
+587 1785(Table)N
+823(2:)X
+931(Local)X
+1163(MC680x0)X
+1538(Performance)X
+2026(of)X
+2133(Several)X
+587 1875(Systems)N
+883(on)X
+987(OO1.)X
+2667 1785(Table)N
+2909(3:)X
+3023(Local)X
+3260(vs.)X
+3397(Remote)X
+3707(Performance)X
+4200(of)X
+2667 1875(LIBTP)N
+2926(on)X
+3030(OO1.)X
+1 f
+10 f
+555 1998(h)N
+579(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)X
+1 f
+555 2274(two)N
+696(disk)X
+850(pages,)X
+1074(but)X
+1197(the)X
+1316(links)X
+1492(require)X
+1741(only)X
+1904(one,)X
+2061(regardless)X
+2408(of)X
+2496(database)X
+2794(size.)X
+2980(Cattell)X
+3214(reports)X
+3458(that)X
+3599(lookups)X
+3873(using)X
+4067(B-trees)X
+555 2364(instead)N
+808(of)X
+901(links)X
+1082(makes)X
+1313(traversal)X
+1616(take)X
+1776(twice)X
+1976(as)X
+2069(long)X
+2237(in)X
+2325(INDEX.)X
+2641(Adding)X
+2907(a)X
+2969(link)X
+3119(access)X
+3351(method)X
+3617(to)X
+3 f
+3704(db)X
+1 f
+3792(\(3\))X
+3911(or)X
+4003(using)X
+4201(the)X
+555 2454(existing)N
+828(hash)X
+995(method)X
+1255(would)X
+1475(apparently)X
+1834(be)X
+1930(a)X
+1986(good)X
+2166(idea.)X
+755 2577(Both)N
+936(OODBMS)X
+1304(and)X
+1446(INDEX)X
+1722(issue)X
+1908 0.1944(coarser-granularity)AX
+2545(locks)X
+2739(than)X
+2902(LIBTP.)X
+3189(This)X
+3356(limits)X
+3562(concurrency)X
+3985(for)X
+4104(multi-)X
+555 2667(user)N
+711(applications,)X
+1140(but)X
+1264(helps)X
+1455(single-user)X
+1829(applications.)X
+2278(In)X
+2367(addition,)X
+2671(the)X
+2791(fact)X
+2934(that)X
+3076(LIBTP)X
+3319(releases)X
+3595(B-tree)X
+3817(locks)X
+4007(early)X
+4189(is)X
+4263(a)X
+555 2757(drawback)N
+896(in)X
+986(OO1.)X
+1210(Since)X
+1416(there)X
+1605(is)X
+1686(no)X
+1793(concurrency)X
+2218(in)X
+2307(the)X
+2432(benchmark,)X
+2836(high-concurrency)X
+3430(strategies)X
+3760(only)X
+3929(show)X
+4125(up)X
+4232(as)X
+555 2847(increased)N
+882(locking)X
+1145(overhead.)X
+1503(Finally,)X
+1772(the)X
+1892(architecture)X
+2294(of)X
+2383(the)X
+2503(LIBTP)X
+2747(implementation)X
+3271(was)X
+3418(substantially)X
+3844(different)X
+4143(from)X
+555 2937(that)N
+702(of)X
+796(either)X
+1006(OODBMS)X
+1375(or)X
+1469(INDEX.)X
+1786(Both)X
+1968(of)X
+2062(those)X
+2258(systems)X
+2538(do)X
+2645(the)X
+2770(searches)X
+3070(in)X
+3159(the)X
+3284(user's)X
+3503(address)X
+3771(space,)X
+3997(and)X
+4139(issue)X
+555 3027(requests)N
+844(for)X
+964(pages)X
+1173(to)X
+1260(the)X
+1383(server)X
+1605(process.)X
+1911(Pages)X
+2123(are)X
+2247(cached)X
+2496(in)X
+2583(the)X
+2706(client,)X
+2929(and)X
+3070(many)X
+3273(queries)X
+3530(can)X
+3667(be)X
+3768(satis\256ed)X
+4055(without)X
+555 3117(contacting)N
+910(the)X
+1029(server)X
+1247(at)X
+1326(all.)X
+1467(LIBTP)X
+1710(submits)X
+1979(all)X
+2080(the)X
+2199(queries)X
+2452(to)X
+2535(the)X
+2653(server)X
+2870(process,)X
+3151(and)X
+3287(receives)X
+3571(database)X
+3868(records)X
+4125(back;)X
+555 3207(it)N
+619(does)X
+786(no)X
+886(client)X
+1084(caching.)X
+755 3330(The)N
+911(RDBMS)X
+1221(architecture)X
+1632(is)X
+1716(much)X
+1925(closer)X
+2148(to)X
+2241(that)X
+2392(of)X
+2490(LIBTP.)X
+2783(A)X
+2872(server)X
+3100(process)X
+3372(receives)X
+3667(queries)X
+3930(and)X
+4076(returns)X
+555 3420(results)N
+786(to)X
+870(a)X
+928(client.)X
+1168(The)X
+1315(timing)X
+1545(results)X
+1776(in)X
+1860(table)X
+2038(two)X
+2180(clearly)X
+2421(show)X
+2612(that)X
+2754(the)X
+2874(conventional)X
+3309(database)X
+3607(client/server)X
+4025(model)X
+4246(is)X
+555 3510(expensive.)N
+941(LIBTP)X
+1188(outperforms)X
+1605(the)X
+1728(RDBMS)X
+2032(on)X
+2136(traversal)X
+2437(and)X
+2577(insertion.)X
+2921(We)X
+3057(speculate)X
+3380(that)X
+3524(this)X
+3663(is)X
+3740(due)X
+3880(in)X
+3966(part)X
+4115(to)X
+4201(the)X
+555 3600(overhead)N
+870(of)X
+957(query)X
+1160(parsing,)X
+1436(optimization,)X
+1880(and)X
+2016(repeated)X
+2309(interpretation)X
+2761(of)X
+2848(the)X
+2966(plan)X
+3124(tree)X
+3265(in)X
+3347(the)X
+3465(RDBMS')X
+3791(query)X
+3994(executor.)X
+755 3723(Table)N
+962(three)X
+1147(shows)X
+1371(the)X
+1492(differences)X
+1873(between)X
+2164(local)X
+2343(and)X
+2482(remote)X
+2728(execution)X
+3063(of)X
+3153(LIBTP's)X
+3456(OO1)X
+3635(implementation)X
+4160(on)X
+4263(a)X
+555 3813(DECstation.)N
+989(We)X
+1122(measured)X
+1451(performance)X
+1879(with)X
+2042(a)X
+2099(populated)X
+2436(\(warm\))X
+2694(cache)X
+2899(and)X
+3036(an)X
+3133(empty)X
+3354(\(cold\))X
+3567(cache.)X
+3812(Reported)X
+4126(times)X
+555 3903(are)N
+681(the)X
+806(means)X
+1037(of)X
+1130(twenty)X
+1374(tests,)X
+1562(and)X
+1704(are)X
+1829(in)X
+1917(seconds.)X
+2237(Standard)X
+2548(deviations)X
+2903(were)X
+3086(within)X
+3316(seven)X
+3525(percent)X
+3788(of)X
+3881(the)X
+4005(mean)X
+4205(for)X
+555 3993(remote,)N
+818(and)X
+954(two)X
+1094(percent)X
+1351(of)X
+1438(the)X
+1556(mean)X
+1750(for)X
+1864(local.)X
+755 4116(The)N
+914(20ms)X
+1121(overhead)X
+1450(of)X
+1551(TCP/IP)X
+1824(on)X
+1938(an)X
+2048(Ethernet)X
+2354(entirely)X
+2633(accounts)X
+2948(for)X
+3076(the)X
+3207(difference)X
+3567(in)X
+3662(speed.)X
+3918(The)X
+4076(remote)X
+555 4206(traversal)N
+857(times)X
+1055(are)X
+1179(nearly)X
+1405(double)X
+1648(the)X
+1771(local)X
+1952(times)X
+2150(because)X
+2430(we)X
+2549(do)X
+2653(index)X
+2855(lookups)X
+3132(and)X
+3272(part)X
+3421(fetches)X
+3673(in)X
+3759(separate)X
+4047(queries.)X
+555 4296(It)N
+629(would)X
+854(make)X
+1053(sense)X
+1252(to)X
+1339(do)X
+1444(indexed)X
+1723(searches)X
+2021(on)X
+2126(the)X
+2248(server,)X
+2489(but)X
+2615(we)X
+2733(were)X
+2914(unwilling)X
+3244(to)X
+3330(hard-code)X
+3676(knowledge)X
+4052(of)X
+4143(OO1)X
+555 4386(indices)N
+803(into)X
+948(our)X
+1075(LIBTP)X
+1317(TCL)X
+1488(server.)X
+1745(Cold)X
+1920(and)X
+2056(warm)X
+2259(insertion)X
+2559(times)X
+2752(are)X
+2871(identical)X
+3167(since)X
+3352(insertions)X
+3683(do)X
+3783(not)X
+3905(bene\256t)X
+4143(from)X
+555 4476(caching.)N
+755 4599(One)N
+915(interesting)X
+1279(difference)X
+1632(shown)X
+1867(by)X
+1973(table)X
+2155(three)X
+2342(is)X
+2421(the)X
+2545(cost)X
+2700(of)X
+2793(forward)X
+3074(versus)X
+3305(backward)X
+3644(traversal.)X
+3987(When)X
+4205(we)X
+555 4689(built)N
+725(the)X
+847(database,)X
+1168(we)X
+1285(inserted)X
+1562(parts)X
+1741(in)X
+1826(part)X
+2 f
+1974(id)X
+1 f
+2059(order.)X
+2292(We)X
+2427(built)X
+2596(the)X
+2717(indices)X
+2967(at)X
+3048(the)X
+3169(same)X
+3357(time.)X
+3562(Therefore,)X
+3923(the)X
+4044(forward)X
+555 4779(index)N
+757(had)X
+897(keys)X
+1068(inserted)X
+1346(in)X
+1432(order,)X
+1646(while)X
+1848(the)X
+1970(backward)X
+2307(index)X
+2509(had)X
+2649(keys)X
+2820(inserted)X
+3098(more)X
+3286(randomly.)X
+3656(In-order)X
+3943(insertion)X
+4246(is)X
+555 4885(pessimal)N
+858(for)X
+975(B-tree)X
+1199(indices,)X
+1469(so)X
+1563(the)X
+1684(forward)X
+1962(index)X
+2163(is)X
+2239(much)X
+2440(larger)X
+2651(than)X
+2812(the)X
+2933(backward)X
+3269(one)X
+7 s
+3385 4853(5)N
+10 s
+4885(.)Y
+3476(This)X
+3640(larger)X
+3850(size)X
+3997(shows)X
+4219(up)X
+555 4975(as)N
+642(extra)X
+823(disk)X
+976(reads)X
+1166(in)X
+1248(the)X
+1366(cold)X
+1524(benchmark.)X
+3 f
+555 5161(6.)N
+655(Conclusions)X
+1 f
+755 5284(LIBTP)N
+1006(provides)X
+1311(the)X
+1438(basic)X
+1632(building)X
+1927(blocks)X
+2165(to)X
+2256(support)X
+2525(transaction)X
+2906(protection.)X
+3300(In)X
+3396(comparison)X
+3799(with)X
+3970(traditional)X
+555 5374(Unix)N
+746(libraries)X
+1040(and)X
+1187(commercial)X
+1597(systems,)X
+1900(it)X
+1974(offers)X
+2192(a)X
+2258(variety)X
+2511(of)X
+2608(tradeoffs.)X
+2964(Using)X
+3185(complete)X
+3509(transaction)X
+3891(protection)X
+4246(is)X
+555 5464(more)N
+747(complicated)X
+1166(than)X
+1331(simply)X
+1575(adding)X
+3 f
+1820(fsync)X
+1 f
+1998(\(2\))X
+2119(and)X
+3 f
+2262(\257ock)X
+1 f
+2426(\(2\))X
+2547(calls)X
+2721(to)X
+2810(code,)X
+3008(but)X
+3136(it)X
+3206(is)X
+3285(faster)X
+3490(in)X
+3578(some)X
+3773(cases)X
+3969(and)X
+4111(offers)X
+8 s
+10 f
+555 5536(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)N
+5 s
+1 f
+727 5614(5)N
+8 s
+763 5639(The)N
+878(next)X
+1004(release)X
+1196(of)X
+1265(the)X
+1359(4.4BSD)X
+1580(access)X
+1758(method)X
+1966(will)X
+2082(automatically)X
+2446(detect)X
+2614(and)X
+2722(compensate)X
+3039(for)X
+3129(in-order)X
+3350(insertion,)X
+3606(eliminating)X
+3914(this)X
+4023(problem.)X
+
+16 p
+%%Page: 16 16
+8 s 8 xH 0 xS 1 f
+10 s
+3 f
+1 f
+555 630(stricter)N
+801(guarantees)X
+1168(\(atomicity,)X
+1540(consistency,)X
+1957(isolation,)X
+2275(and)X
+2414(durability\).)X
+2815(If)X
+2892(the)X
+3013(data)X
+3170(to)X
+3255(be)X
+3354(protected)X
+3676(are)X
+3798(already)X
+4058(format-)X
+555 720(ted)N
+675(\()X
+2 f
+702(i.e.)X
+1 f
+821(use)X
+949(one)X
+1086(of)X
+1174(the)X
+1293(database)X
+1591(access)X
+1818(methods\),)X
+2157(then)X
+2316(adding)X
+2555(transaction)X
+2928(protection)X
+3274(requires)X
+3554(no)X
+3655(additional)X
+3996(complex-)X
+555 810(ity,)N
+679(but)X
+801(incurs)X
+1017(a)X
+1073(performance)X
+1500(penalty)X
+1756(of)X
+1843(approximately)X
+2326(15%.)X
+755 933(In)N
+844(comparison)X
+1240(with)X
+1404(commercial)X
+1805(database)X
+2104(systems,)X
+2399(the)X
+2519(tradeoffs)X
+2827(are)X
+2948(more)X
+3135(complex.)X
+3473(LIBTP)X
+3717(does)X
+3886(not)X
+4009(currently)X
+555 1023(support)N
+825(a)X
+891(standard)X
+1193(query)X
+1406(language.)X
+1766(The)X
+1921(TCL-based)X
+2312(server)X
+2539(process)X
+2810(allows)X
+3049(a)X
+3115(certain)X
+3364(ease)X
+3533(of)X
+3630(use)X
+3767(which)X
+3993(would)X
+4223(be)X
+555 1113(enhanced)N
+882(with)X
+1047(a)X
+1106(more)X
+1294(user-friendly)X
+1732(interface)X
+2037(\()X
+2 f
+2064(e.g.)X
+1 f
+2203(a)X
+2261(windows)X
+2572(based)X
+2777(query-by-form)X
+3272(application\),)X
+3697(for)X
+3813(which)X
+4031(we)X
+4147(have)X
+555 1203(a)N
+620(working)X
+916(prototype.)X
+1292(When)X
+1513(accesses)X
+1815(do)X
+1924(not)X
+2055(require)X
+2312(sophisticated)X
+2758(query)X
+2969(processing,)X
+3360(the)X
+3486(TCL)X
+3665(interface)X
+3975(is)X
+4056(an)X
+4160(ade-)X
+555 1293(quate)N
+756(solution.)X
+1080(What)X
+1281(LIBTP)X
+1529(fails)X
+1693(to)X
+1781(provide)X
+2052(in)X
+2140(functionality,)X
+2595(it)X
+2665(makes)X
+2896(up)X
+3002(for)X
+3122(in)X
+3210(performance)X
+3643(and)X
+3785(\257exibility.)X
+4161(Any)X
+555 1383(application)N
+931(may)X
+1089(make)X
+1283(use)X
+1410(of)X
+1497(its)X
+1592(record)X
+1818(interface)X
+2120(or)X
+2207(the)X
+2325(more)X
+2510(primitive)X
+2823(log,)X
+2965(lock,)X
+3143(and)X
+3279(buffer)X
+3496(calls.)X
+755 1506(Future)N
+987(work)X
+1175(will)X
+1322(focus)X
+1519(on)X
+1621(overcoming)X
+2026(some)X
+2217(of)X
+2306(the)X
+2426(areas)X
+2614(in)X
+2698(which)X
+2916(LIBTP)X
+3160(is)X
+3235(currently)X
+3547(de\256cient)X
+3845(and)X
+3983(extending)X
+555 1596(its)N
+652(transaction)X
+1026(model.)X
+1288(The)X
+1435(addition)X
+1719(of)X
+1808(an)X
+1905(SQL)X
+2077(parser)X
+2295(and)X
+2432(forms)X
+2640(front)X
+2817(end)X
+2954(will)X
+3099(improve)X
+3387(the)X
+3506(system's)X
+3807(ease)X
+3967(of)X
+4055(use)X
+4183(and)X
+555 1686(make)N
+750(it)X
+815(more)X
+1001(competitive)X
+1400(with)X
+1563(commercial)X
+1963(systems.)X
+2277(In)X
+2365(the)X
+2484(long)X
+2647(term,)X
+2835(we)X
+2950(would)X
+3170(like)X
+3310(to)X
+3392(add)X
+3528(generalized)X
+3919(hierarchical)X
+555 1776(locking,)N
+836(nested)X
+1062(transactions,)X
+1486(parallel)X
+1748(transactions,)X
+2171(passing)X
+2431(of)X
+2518(transactions)X
+2921(between)X
+3209(processes,)X
+3557(and)X
+3693(distributed)X
+4055(commit)X
+555 1866(handling.)N
+900(In)X
+992(the)X
+1115(short)X
+1300(term,)X
+1492(the)X
+1614(next)X
+1776(step)X
+1929(is)X
+2006(to)X
+2092(integrate)X
+2397(LIBTP)X
+2643(with)X
+2809(the)X
+2931(most)X
+3110(recent)X
+3331(release)X
+3579(of)X
+3670(the)X
+3792(database)X
+4093(access)X
+555 1956(routines)N
+833(and)X
+969(make)X
+1163(it)X
+1227(freely)X
+1435(available)X
+1745(via)X
+1863(anonymous)X
+2252(ftp.)X
+3 f
+555 2142(7.)N
+655(Acknowledgements)X
+1 f
+755 2265(We)N
+888(would)X
+1109(like)X
+1250(to)X
+1332(thank)X
+1530(John)X
+1701(Wilkes)X
+1948(and)X
+2084(Carl)X
+2242(Staelin)X
+2484(of)X
+2571(Hewlett-Packard)X
+3131(Laboratories)X
+3557(and)X
+3693(Jon)X
+3824(Krueger.)X
+4148(John)X
+555 2355(and)N
+694(Carl)X
+855(provided)X
+1162(us)X
+1255(with)X
+1419(an)X
+1517(extra)X
+1700(disk)X
+1855(for)X
+1971(the)X
+2091(HP)X
+2215(testbed)X
+2464(less)X
+2606(than)X
+2766(24)X
+2868(hours)X
+3068(after)X
+3238(we)X
+3354(requested)X
+3684(it.)X
+3770(Jon)X
+3903(spent)X
+4094(count-)X
+555 2445(less)N
+699(hours)X
+901(helping)X
+1164(us)X
+1258(understand)X
+1633(the)X
+1754(intricacies)X
+2107(of)X
+2197(commercial)X
+2599(database)X
+2899(products)X
+3198(and)X
+3337(their)X
+3507(behavior)X
+3811(under)X
+4017(a)X
+4076(variety)X
+555 2535(of)N
+642(system)X
+884(con\256gurations.)X
+3 f
+555 2721(8.)N
+655(References)X
+1 f
+555 2901([ANDR89])N
+942(Andrade,)X
+1265(J.,)X
+1361(Carges,)X
+1629(M.,)X
+1765(Kovach,)X
+2060(K.,)X
+2183(``Building)X
+2541(an)X
+2642(On-Line)X
+2939(Transaction)X
+3343(Processing)X
+3715(System)X
+3975(On)X
+4098(UNIX)X
+727 2991(System)N
+982(V'',)X
+2 f
+1134(CommUNIXations)X
+1 f
+1725(,)X
+1765 0.2188(November/December)AX
+2477(1989.)X
+555 3171([BAY77])N
+878(Bayer,)X
+1110(R.,)X
+1223(Schkolnick,)X
+1623(M.,)X
+1754(``Concurrency)X
+2243(of)X
+2330(Operations)X
+2702(on)X
+2802(B-Trees'',)X
+2 f
+3155(Acta)X
+3322(Informatica)X
+1 f
+3700(,)X
+3740(1977.)X
+555 3351([BERN80])N
+936(Bernstein,)X
+1297(P.,)X
+1415(Goodman,)X
+1785(N.,)X
+1917(``Timestamp)X
+2365(Based)X
+2595(Algorithms)X
+2992(for)X
+3119(Concurrency)X
+3567(Control)X
+3844(in)X
+3939(Distributed)X
+727 3441(Database)N
+1042(Systems'',)X
+2 f
+1402(Proceedings)X
+1823(6th)X
+1945(International)X
+2387(Conference)X
+2777(on)X
+2877(Very)X
+3049(Large)X
+3260(Data)X
+3440(Bases)X
+1 f
+3627(,)X
+3667(October)X
+3946(1980.)X
+555 3621([BSD91])N
+864(DB\(3\),)X
+2 f
+1109(4.4BSD)X
+1376(Unix)X
+1552(Programmer's)X
+2044(Manual)X
+2313(Reference)X
+2655(Guide)X
+1 f
+2851(,)X
+2891(University)X
+3249(of)X
+3336(California,)X
+3701(Berkeley,)X
+4031(1991.)X
+555 3801([CATT91])N
+923(Cattell,)X
+1181(R.G.G.,)X
+1455(``An)X
+1632(Engineering)X
+2049(Database)X
+2369(Benchmark'',)X
+2 f
+2838(The)X
+2983(Benchmark)X
+3373(Handbook)X
+3731(for)X
+3848(Database)X
+4179(and)X
+727 3891(Transaction)N
+1133(Processing)X
+1509(Systems)X
+1 f
+1763(,)X
+1803(J.)X
+1874(Gray,)X
+2075(editor,)X
+2302(Morgan)X
+2576(Kaufman)X
+2895(1991.)X
+555 4071([CHEN91])N
+929(Cheng,)X
+1180(E.,)X
+1291(Chang,)X
+1542(E.,)X
+1653(Klein,)X
+1872(J.,)X
+1964(Lee,)X
+2126(D.,)X
+2245(Lu,)X
+2375(E.,)X
+2485(Lutgardo,)X
+2820(A.,)X
+2939(Obermarck,)X
+3342(R.,)X
+3456(``An)X
+3629(Open)X
+3824(and)X
+3961(Extensible)X
+727 4161(Event-Based)N
+1157(Transaction)X
+1556(Manager'',)X
+2 f
+1936(Proceedings)X
+2357(1991)X
+2537(Summer)X
+2820(Usenix)X
+1 f
+3043(,)X
+3083(Nashville,)X
+3430(TN,)X
+3577(June)X
+3744(1991.)X
+555 4341([CHOU85])N
+943(Chou,)X
+1163(H.,)X
+1288(DeWitt,)X
+1570(D.,)X
+1694(``An)X
+1872(Evaluation)X
+2245(of)X
+2338(Buffer)X
+2574(Management)X
+3019(Strategies)X
+3361(for)X
+3481(Relational)X
+3836(Database)X
+4157(Sys-)X
+727 4431(tems'',)N
+2 f
+972(Proceedings)X
+1393(of)X
+1475(the)X
+1593(11th)X
+1755(International)X
+2197(Conference)X
+2587(on)X
+2687(Very)X
+2859(Large)X
+3070(Databases)X
+1 f
+3408(,)X
+3448(1985.)X
+555 4611([DEWI84])N
+925(DeWitt,)X
+1207(D.,)X
+1331(Katz,)X
+1529(R.,)X
+1648(Olken,)X
+1890(F.,)X
+2000(Shapiro,)X
+2295(L.,)X
+2410(Stonebraker,)X
+2843(M.,)X
+2979(Wood,)X
+3220(D.,)X
+3343(``Implementation)X
+3929(Techniques)X
+727 4701(for)N
+841(Main)X
+1030(Memory)X
+1326(Database)X
+1641(Systems'',)X
+2 f
+2001(Proceedings)X
+2422(of)X
+2504(SIGMOD)X
+1 f
+2812(,)X
+2852(pp.)X
+2972(1-8,)X
+3119(June)X
+3286(1984.)X
+555 4881([GRAY76])N
+944(Gray,)X
+1153(J.,)X
+1252(Lorie,)X
+1474(R.,)X
+1595(Putzolu,)X
+1887(F.,)X
+1999(and)X
+2143(Traiger,)X
+2428(I.,)X
+2522(``Granularity)X
+2973(of)X
+3067(locks)X
+3263(and)X
+3406(degrees)X
+3679(of)X
+3773(consistency)X
+4174(in)X
+4263(a)X
+727 4971(large)N
+909(shared)X
+1140(data)X
+1295(base'',)X
+2 f
+1533(Modeling)X
+1861(in)X
+1944(Data)X
+2125(Base)X
+2301(Management)X
+2740(Systems)X
+1 f
+2994(,)X
+3034(Elsevier)X
+3317(North)X
+3524(Holland,)X
+3822(New)X
+3994(York,)X
+4199(pp.)X
+727 5061(365-394.)N
+555 5241([HAER83])N
+931(Haerder,)X
+1235(T.)X
+1348(Reuter,)X
+1606(A.)X
+1728(``Principles)X
+2126(of)X
+2217(Transaction-Oriented)X
+2928(Database)X
+3246(Recovery'',)X
+2 f
+3651(Computing)X
+4029(Surveys)X
+1 f
+4279(,)X
+727 5331(15\(4\);)N
+943(237-318,)X
+1250(1983.)X
+555 5511([KUNG81])N
+943(Kung,)X
+1162(H.)X
+1261(T.,)X
+1371(Richardson,)X
+1777(J.,)X
+1869(``On)X
+2042(Optimistic)X
+2400(Methods)X
+2701(for)X
+2816(Concurrency)X
+3252(Control'',)X
+2 f
+3591(ACM)X
+3781(Transactions)X
+4219(on)X
+727 5601(Database)N
+1054(Systems)X
+1 f
+1328(6\(2\);)X
+1504(213-226,)X
+1811(1981.)X
+
+17 p
+%%Page: 17 17
+10 s 10 xH 0 xS 1 f
+3 f
+1 f
+555 630([LEHM81])N
+939(Lehman,)X
+1245(P.,)X
+1352(Yao,)X
+1529(S.,)X
+1636(``Ef\256cient)X
+1989(Locking)X
+2279(for)X
+2396(Concurrent)X
+2780(Operations)X
+3155(on)X
+3258(B-trees'',)X
+2 f
+3587(ACM)X
+3779(Transactions)X
+4219(on)X
+727 720(Database)N
+1054(Systems)X
+1 f
+1308(,)X
+1348(6\(4\),)X
+1522(December)X
+1873(1981.)X
+555 900([MOHA91])N
+964(Mohan,)X
+1241(C.,)X
+1364(Pirahesh,)X
+1690(H.,)X
+1818(``ARIES-RRH:)X
+2366(Restricted)X
+2721(Repeating)X
+3076(of)X
+3173(History)X
+3442(in)X
+3533(the)X
+3660(ARIES)X
+3920(Transaction)X
+727 990(Recovery)N
+1055(Method'',)X
+2 f
+1398(Proceedings)X
+1819(7th)X
+1941(International)X
+2383(Conference)X
+2773(on)X
+2873(Data)X
+3053(Engineering)X
+1 f
+3449(,)X
+3489(Kobe,)X
+3703(Japan,)X
+3926(April)X
+4115(1991.)X
+555 1170([NODI90])N
+914(Nodine,)X
+1194(M.,)X
+1328(Zdonik,)X
+1602(S.,)X
+1709(``Cooperative)X
+2178(Transaction)X
+2580(Hierarchies:)X
+2996(A)X
+3077(Transaction)X
+3479(Model)X
+3711(to)X
+3796(Support)X
+4072(Design)X
+727 1260(Applications'',)N
+2 f
+1242(Proceedings)X
+1675(16th)X
+1849(International)X
+2303(Conference)X
+2704(on)X
+2815(Very)X
+2998(Large)X
+3220(Data)X
+3411(Bases)X
+1 f
+3598(,)X
+3649(Brisbane,)X
+3985(Australia,)X
+727 1350(August)N
+978(1990.)X
+555 1530([OUST90])N
+923(Ousterhout,)X
+1324(J.,)X
+1420(``Tcl:)X
+1648(An)X
+1771(Embeddable)X
+2197(Command)X
+2555(Language'',)X
+2 f
+2971(Proceedings)X
+3396(1990)X
+3580(Winter)X
+3822(Usenix)X
+1 f
+4045(,)X
+4089(Wash-)X
+727 1620(ington,)N
+971(D.C.,)X
+1162(January)X
+1432(1990.)X
+555 1800([POSIX91])N
+955(``Unapproved)X
+1441(Draft)X
+1645(for)X
+1773(Realtime)X
+2096(Extension)X
+2450(for)X
+2578(Portable)X
+2879(Operating)X
+3234(Systems'',)X
+3608(Draft)X
+3812(11,)X
+3946(October)X
+4239(7,)X
+727 1890(1991,)N
+927(IEEE)X
+1121(Computer)X
+1461(Society.)X
+555 2070([ROSE91])N
+925(Rosenblum,)X
+1341(M.,)X
+1484(Ousterhout,)X
+1892(J.,)X
+1995(``The)X
+2206(Design)X
+2464(and)X
+2611(Implementation)X
+3149(of)X
+3247(a)X
+3314(Log-Structured)X
+3835(File)X
+3990(System'',)X
+2 f
+727 2160(Proceedings)N
+1148(of)X
+1230(the)X
+1348(13th)X
+1510(Symposium)X
+1895(on)X
+1995(Operating)X
+2344(Systems)X
+2618(Principles)X
+1 f
+2947(,)X
+2987(1991.)X
+555 2340([SELT91])N
+904(Seltzer,)X
+1171(M.,)X
+1306(Stonebraker,)X
+1738(M.,)X
+1873(``Read)X
+2116(Optimized)X
+2478(File)X
+2626(Systems:)X
+2938(A)X
+3020(Performance)X
+3454(Evaluation'',)X
+2 f
+3898(Proceedings)X
+727 2430(7th)N
+849(Annual)X
+1100(International)X
+1542(Conference)X
+1932(on)X
+2032(Data)X
+2212(Engineering)X
+1 f
+2608(,)X
+2648(Kobe,)X
+2862(Japan,)X
+3085(April)X
+3274(1991.)X
+555 2610([SPEC88])N
+907(Spector,)X
+1200(Rausch,)X
+1484(Bruell,)X
+1732(``Camelot:)X
+2107(A)X
+2192(Flexible,)X
+2501(Distributed)X
+2888(Transaction)X
+3294(Processing)X
+3668(System'',)X
+2 f
+4004(Proceed-)X
+727 2700(ings)N
+880(of)X
+962(Spring)X
+1195(COMPCON)X
+1606(1988)X
+1 f
+(,)S
+1806(February)X
+2116(1988.)X
+555 2880([SQL86])N
+862(American)X
+1201(National)X
+1499(Standards)X
+1836(Institute,)X
+2139(``Database)X
+2509(Language)X
+2847(SQL'',)X
+3093(ANSI)X
+3301(X3.135-1986)X
+3747(\(ISO)X
+3924(9075\),)X
+4152(May)X
+727 2970(1986.)N
+555 3150([STON81])N
+919(Stonebraker,)X
+1348(M.,)X
+1480(``Operating)X
+1876(System)X
+2132(Support)X
+2406(for)X
+2520(Database)X
+2835(Management'',)X
+2 f
+3348(Communications)X
+3910(of)X
+3992(the)X
+4110(ACM)X
+1 f
+4279(,)X
+727 3240(1981.)N
+555 3420([SULL92])N
+925(Sullivan,)X
+1247(M.,)X
+1394(Olson,)X
+1641(M.,)X
+1788(``An)X
+1976(Index)X
+2195(Implementation)X
+2737(Supporting)X
+3127(Fast)X
+3295(Recovery)X
+3638(for)X
+3767(the)X
+3900(POSTGRES)X
+727 3510(Storage)N
+1014(System'',)X
+1365(to)X
+1469(appear)X
+1726(in)X
+2 f
+1830(Proceedings)X
+2272(8th)X
+2415(Annual)X
+2687(International)X
+3150(Conference)X
+3561(on)X
+3682(Data)X
+3883(Engineering)X
+1 f
+4279(,)X
+727 3600(Tempe,)N
+990(Arizona,)X
+1289(February)X
+1599(1992.)X
+555 3780([TPCB90])N
+914(Transaction)X
+1319(Processing)X
+1692(Performance)X
+2129(Council,)X
+2428(``TPC)X
+2653(Benchmark)X
+3048(B'',)X
+3200(Standard)X
+3510(Speci\256cation,)X
+3973(Waterside)X
+727 3870(Associates,)N
+1110(Fremont,)X
+1421(CA.,)X
+1592(1990.)X
+555 4050([YOUN91])N
+947(Young,)X
+1211(M.)X
+1328(W.,)X
+1470(Thompson,)X
+1858(D.)X
+1962(S.,)X
+2072(Jaffe,)X
+2274(E.,)X
+2388(``A)X
+2525(Modular)X
+2826(Architecture)X
+3253(for)X
+3372(Distributed)X
+3757(Transaction)X
+4161(Pro-)X
+727 4140(cessing'',)N
+2 f
+1057(Proceedings)X
+1478(1991)X
+1658(Winter)X
+1896(Usenix)X
+1 f
+2119(,)X
+2159(Dallas,)X
+2404(TX,)X
+2551(January)X
+2821(1991.)X
+3 f
+755 4263(Margo)N
+1008(I.)X
+1080(Seltzer)X
+1 f
+1338(is)X
+1411(a)X
+1467(Ph.D.)X
+1669(student)X
+1920(in)X
+2002(the)X
+2120(Department)X
+2519(of)X
+2606(Electrical)X
+2934(Engineering)X
+3346(and)X
+3482(Computer)X
+3822(Sciences)X
+4123(at)X
+4201(the)X
+555 4353(University)N
+919(of)X
+1012(California,)X
+1383(Berkeley.)X
+1739(Her)X
+1886(research)X
+2181(interests)X
+2474(include)X
+2735(\256le)X
+2862(systems,)X
+3160(databases,)X
+3513(and)X
+3654(transaction)X
+4031(process-)X
+555 4443(ing)N
+686(systems.)X
+1008(She)X
+1157(spent)X
+1355(several)X
+1612(years)X
+1811(working)X
+2107(at)X
+2194(startup)X
+2441(companies)X
+2813(designing)X
+3153(and)X
+3298(implementing)X
+3771(\256le)X
+3902(systems)X
+4183(and)X
+555 4533(transaction)N
+929(processing)X
+1294(software)X
+1592(and)X
+1729(designing)X
+2061(microprocessors.)X
+2648(Ms.)X
+2791(Seltzer)X
+3035(received)X
+3329(her)X
+3453(AB)X
+3585(in)X
+3668(Applied)X
+3947(Mathemat-)X
+555 4623(ics)N
+664(from)X
+840 0.1953(Harvard/Radcliffe)AX
+1445(College)X
+1714(in)X
+1796(1983.)X
+755 4746(In)N
+845(her)X
+971(spare)X
+1163(time,)X
+1347(Margo)X
+1583(can)X
+1717(usually)X
+1970(be)X
+2068(found)X
+2277(preparing)X
+2607(massive)X
+2887(quantities)X
+3220(of)X
+3309(food)X
+3478(for)X
+3594(hungry)X
+3843(hordes,)X
+4099(study-)X
+555 4836(ing)N
+677(Japanese,)X
+1003(or)X
+1090(playing)X
+1350(soccer)X
+1576(with)X
+1738(an)X
+1834(exciting)X
+2112(Bay)X
+2261(Area)X
+2438(Women's)X
+2770(Soccer)X
+3009(team,)X
+3205(the)X
+3323(Berkeley)X
+3633(Bruisers.)X
+3 f
+755 5049(Michael)N
+1056(A.)X
+1159(Olson)X
+1 f
+1383(is)X
+1461(a)X
+1522(Master's)X
+1828(student)X
+2084(in)X
+2170(the)X
+2292(Department)X
+2695(of)X
+2786(Electrical)X
+3118(Engineering)X
+3534(and)X
+3674(Computer)X
+4018(Sciences)X
+555 5139(at)N
+645(the)X
+774(University)X
+1143(of)X
+1241(California,)X
+1617(Berkeley.)X
+1978(His)X
+2120(primary)X
+2405(interests)X
+2703(are)X
+2833(database)X
+3141(systems)X
+3425(and)X
+3572(mass)X
+3763(storage)X
+4026(systems.)X
+555 5229(Mike)N
+759(spent)X
+963(two)X
+1118(years)X
+1323(working)X
+1625(for)X
+1754(a)X
+1825(commercial)X
+2239(database)X
+2551(system)X
+2808(vendor)X
+3066(before)X
+3307(joining)X
+3567(the)X
+3699(Postgres)X
+4004(Research)X
+555 5319(Group)N
+780(at)X
+858(Berkeley)X
+1168(in)X
+1250(1988.)X
+1470(He)X
+1584(received)X
+1877(his)X
+1990(B.A.)X
+2161(in)X
+2243(Computer)X
+2583(Science)X
+2853(from)X
+3029(Berkeley)X
+3339(in)X
+3421(May)X
+3588(1991.)X
+755 5442(Mike)N
+945(only)X
+1108(recently)X
+1388(transferred)X
+1758(into)X
+1903(Sin)X
+2030(City,)X
+2208(but)X
+2330(is)X
+2403(rapidly)X
+2650(adopting)X
+2950(local)X
+3126(customs)X
+3408(and)X
+3544(coloration.)X
+3929(In)X
+4016(his)X
+4129(spare)X
+555 5532(time,)N
+742(he)X
+843(organizes)X
+1176(informal)X
+1477(Friday)X
+1711(afternoon)X
+2043(study)X
+2240(groups)X
+2482(to)X
+2568(discuss)X
+2823(recent)X
+3044(technical)X
+3358(and)X
+3498(economic)X
+3834(developments.)X
+555 5622(Among)N
+815(his)X
+928(hobbies)X
+1197(are)X
+1316(Charles)X
+1581(Dickens,)X
+1884(Red)X
+2033(Rock,)X
+2242(and)X
+2378(speaking)X
+2683(Dutch)X
+2899(to)X
+2981(anyone)X
+3233(who)X
+3391(will)X
+3535(permit)X
+3764(it.)X
+
+17 p
+%%Trailer
+xt
+
+xs
+
diff --git a/db/docs_src/ref/refs/refs.so b/db/docs_src/ref/refs/refs.so
new file mode 100644
index 000000000..3b616da7e
--- /dev/null
+++ b/db/docs_src/ref/refs/refs.so
@@ -0,0 +1,102 @@
+m4_comment([$Id: refs.so,v 10.30 2007/06/27 14:46:51 bostic Exp $])
+
+m4_ref_title(Additional References, Additional references,, distrib/layout,)
+
+m4_p([dnl
+For more information on m4_db or on database systems theory in general,
+we recommend the following sources:])
+
+m4_section(Technical Papers on m4_db)
+m4_p([dnl
+These papers have appeared in refereed conference proceedings, and are
+subject to copyrights held by the conference organizers and the authors
+of the papers. Oracle makes them available here as a courtesy with the
+permission of the copyright holders.])
+
+m4_tagbegin
+m4_tag([m4_italic(m4_db)
+(m4_linkweb(bdb_usenix.ps, Postscript))],
+[Michael Olson, Keith Bostic, and Margo Seltzer, Proceedings of the 1999
+Summer Usenix Technical Conference, Monterey, California, June 1999. This
+paper describes recent commercial releases of m4_db, its most important
+features, the history of the software, and Sleepycat Software's Open Source
+licensing policies.])
+
+m4_tag([m4_italic(Challenges in Embedded Database System Administration)
+(m4_linkpage(embedded, HTML))],
+[Margo Seltzer and Michael Olson, First Workshop on Embedded Systems,
+Cambridge, Massachusetts, March 1999. This paper describes the challenges
+that face embedded systems developers, and how m4_db has been designed to
+address them.])
+
+m4_tag([m4_italic(LIBTP: Portable Modular Transactions for UNIX)
+(m4_linkweb(libtp_usenix.ps, Postscript))],
+[Margo Seltzer and Michael Olson, USENIX Conference Proceedings, Winter
+1992. This paper describes an early prototype of the transactional system
+for m4_db.])
+
+m4_tag([m4_italic(A New Hashing Package for UNIX)
+(m4_linkweb(hash_usenix.ps, Postscript))],
+[Margo Seltzer and Oz Yigit, USENIX Conference Proceedings, Winter 1991.
+This paper describes the Extended Linear Hashing techniques used by m4_db.])
+
+m4_tagend
+
+m4_section(Background on m4_db Features)
+m4_p([dnl
+These papers, although not specific to m4_db, give a good overview of the
+way different m4_db features were implemented.])
+
+m4_tagbegin
+
+m4_tag([m4_italic(Operating System Support for Database Management)],
+[Michael Stonebraker, Communications of the ACM 24(7), 1981, pp. 412-418.])
+
+m4_tag([m4_italic(Dynamic Hash Tables)],
+[Per-Ake Larson, Communications of the ACM, April 1988.])
+
+m4_tag([m4_italic(Linear Hashing: A New Tool for File and Table Addressing)],
+[m4_link(witold, Witold Litwin), Proceedings of the 6th International
+Conference on Very Large Databases (VLDB), 1980])
+
+m4_tag([m4_italic(The Ubiquitous B-tree)],
+[Douglas Comer, ACM Comput. Surv. 11, 2 (June 1979), pp. 121-138.])
+
+m4_tag([m4_italic(Prefix B-trees)],
+[Bayer and Unterauer, ACM Transactions on Database Systems, Vol. 2, 1
+(March 1977), pp. 11-26.])
+
+m4_tag([m4_italic(The Art of Computer Programming Vol. 3: Sorting and Searching)],
+[D.E. Knuth, 1968, pp. 471-480.])
+
+m4_tag([m4_italic(Document Processing in a Relational Database System)],
+[Michael Stonebraker, Heidi Stettner, Joseph Kalash, Antonin Guttman,
+Nadene Lynn, Memorandum No. UCB/ERL M82/32, May 1982.])
+
+m4_tagend
+
+m4_section(Database Systems Theory)
+m4_p([dnl
+These publications are standard reference works on the design and
+implementation of database systems. m4_db uses many of the ideas they
+describe.])
+
+m4_tagbegin
+
+m4_tag(m4_italic([Transaction Processing Concepts and Techniques]),
+[by Jim Gray and Andreas Reuter, Morgan Kaufmann Publishers.
+We recommend chapters 1, 4 (skip 4.6, 4.7, 4.9, 4.10 and 4.11),
+7, 9, 10.3, and 10.4.])
+
+m4_tag([m4_italic([An Introduction to Database Systems, Volume 1])],
+[by C.J. Date, Addison Wesley Longman Publishers.
+In the 5th Edition, we recommend chapters 1, 2, 3, 16 and 17.])
+
+m4_tag(m4_italic([Concurrency Control and Recovery in Database Systems]),
+[by Bernstein, Goodman, Hadzilaco. Currently out of print, but available
+from m4_linkweb(http://research.microsoft.com/pubs/ccontrol/,
+http://research.microsoft.com/pubs/ccontrol/).])
+
+m4_tagend
+
+m4_page_footer
diff --git a/db/docs_src/ref/refs/witold.so b/db/docs_src/ref/refs/witold.so
new file mode 100644
index 000000000..0f5d8987c
--- /dev/null
+++ b/db/docs_src/ref/refs/witold.so
@@ -0,0 +1,9 @@
+m4_comment([$Id: witold.so,v 10.5 2001/06/09 14:34:45 bostic Exp $])
+
+m4_ref_title(Additional References, Witold Litwin,,,)
+
+m4_p([dnl
+Witold is a hell of a guy to take you on a late-night high-speed car
+chase up the mountains of Austria in search of very green wine.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/rep/app.so b/db/docs_src/ref/rep/app.so
new file mode 100644
index 000000000..2e42dbf56
--- /dev/null
+++ b/db/docs_src/ref/rep/app.so
@@ -0,0 +1,121 @@
+m4_comment([$Id: app.so,v 1.31 2007/05/17 18:17:18 bostic Exp $])
+
+m4_ref_title(m4_db Replication,
+ Building replicated applications,, rep/pri, rep/mgr_meth)
+
+m4_p([dnl
+The simplest way to build a replicated m4_db application is to first
+build (and debug!) the transactional version of the same application.
+Then, add a thin replication layer: application initialization must be
+changed and the application's communication infrastructure must be
+added.])
+
+m4_p([dnl
+The application initialization changes are relatively simple.
+Replication Manager provides a communication infrastructure, but
+in order to use the Base replication API you must provide your own.])
+
+m4_p([dnl
+For implementation reasons, all replicated databases must reside in
+the data directories set from m4_ref(dbenv_set_data_dir) (or in the
+default environment home directory, if not using
+m4_ref(dbenv_set_data_dir)), rather than in a subdirectory below the
+specified directory. Care must be taken in applications using
+relative pathnames and changing working directories after opening the
+environment. In such applications the replication initialization code
+may not be able to locate the databases, and applications that change
+their working directories may need to use absolute pathnames.])
+
+m4_p([dnl
+During application initialization, the application performs three
+additional tasks: first, it must specify the m4_ref(DB_INIT_REP) flag
+when opening its database environment; second, it must provide m4_db
+information about its communications infrastructure; and third, it must
+start the m4_db replication system. Generally, a replicated application
+will do normal m4_db recovery and configuration, exactly like any other
+transactional application.])
+
+m4_p([dnl
+Replication Manager applications configure the built-in communications
+infrastructure by calling the m4_refT(repmgr_set_local_site)
+once and the m4_refT(repmgr_add_remote_site) zero or more
+times. Once the environment has been opened, the application starts
+the replication system by calling the m4_refT(repmgr_start).])
+
+m4_p([dnl
+If using the Base replication API, the application calls the
+m4_refT(rep_set_transport) to configure the entry point to its own
+communications infrastructure, and then it calls the
+m4_refT(rep_start) to join or create the replication group.])
+
+m4_p([dnl
+When starting the replication system, an application has two choices:
+it may choose the group master site explicitly, or alternatively it
+may configure all group members as clients and then call for an
+election, letting the clients select the master from among
+themselves. Either is correct, and the choice is entirely up to the
+application.])
+
+m4_p([dnl
+For an application that uses the Base replication API, the result of
+calling m4_ref(rep_start) 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 m4_ref(rep_elect) to call for an election.])
+
+m4_p([dnl
+Replication Manager applications have these same two choices. But
+they configure their start-up behavior simply by setting the flags
+parameter to the m4_refT(repmgr_start).])
+
+m4_p([dnl
+Consider the case of multiple processes or multiple environment handles
+that modify databases in the replicated environment. All modifications
+must be done on the master environment. The first process to join or
+create the master environment must call both the
+m4_refT(rep_set_transport) and the m4_refT(rep_start). Subsequent
+replication processes must at least call the m4_refT(rep_set_transport).
+Those processes may call the m4_refT(rep_start) (as long as they use the
+same master or client argument). If multiple processes are modifying
+the master environment there must be a unified communication
+infrastructure such that messages arriving at clients have a single
+master ID. Additionally the application must be structured so that all
+incoming messages are able to be processed by a single m4_ref(DbEnv)
+handle.])
+
+m4_p([dnl
+Note that not all processes running in replicated environments need to
+call m4_ref(rep_set_transport) or m4_ref(rep_start). Read-only
+processes running in a master environment do not need to be configured
+for replication in any way. Processes running in a client environment
+are read-only by definition, and so do not need to be configured for
+replication either (although, in the case of clients that may become
+masters, it is usually simplest to configure for replication on process
+startup rather than trying to reconfigure when the client becomes a
+master). Obviously, at least one thread of control on each client must
+be configured for replication as messages must be passed between the
+master and the client.])
+
+m4_p([dnl
+Any site in a replication group may have its own private
+transactional databases in the environment as well. A site may
+create a local database by using the m4_ref(DB_TXN_NOT_DURABLE)
+flag to the m4_ref(dbh_set_flags). The application
+must never create a private database with the same name
+as a database replicated across the entire environment
+as data corruption can result.])
+
+m4_p([dnl
+For implementation reasons, all incoming replication messages must be
+processed using the same m4_ref(DbEnv) 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.])
+
+m4_p([dnl
+No additional calls are 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 m4_refT(dbenv_close).
+For Replication Manager applications, this also terminates all network
+connections and background processing threads.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/rep/base_meth.so b/db/docs_src/ref/rep/base_meth.so
new file mode 100644
index 000000000..b324fe72a
--- /dev/null
+++ b/db/docs_src/ref/rep/base_meth.so
@@ -0,0 +1,69 @@
+m4_comment([$Id: base_meth.so,v 1.3 2007/03/21 23:48:54 alanb Exp $])
+
+m4_ref_title(m4_db Replication,
+ Base replication API,, rep/mgr_meth, rep/comm)
+
+m4_p([dnl
+Applications which use the Base replication API use the following
+m4_db methods.])
+
+m4_tagbegin
+
+m4_tag(m4_ref(rep_set_transport), [dnl
+The m4_refT(rep_set_transport) configures the replication system's
+communications infrastructure.])
+
+m4_tag(m4_ref(rep_start), [dnl
+The m4_refT(rep_start) configures (or reconfigures) an existing database
+environment to be a replication master or client.])
+
+m4_tag(m4_ref(rep_message), [dnl
+The m4_refT(rep_message) 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. This method should only be called
+after the environment has been configured as a replication master or
+client via m4_ref(rep_start).])
+
+m4_tag(m4_ref(rep_elect), [dnl
+The m4_refT(rep_elect) causes the replication group to elect a new
+master; it is called whenever contact with the master is lost and the
+application wants the remaining sites to select a new master.])
+
+m4_tag(m4_ref(dbenv_set_event_notify), [dnl
+The m4_refT(dbenv_set_event_notify) is needed for applications to
+discover important replication-related events, such as the result of
+an election and appointment of a new master.])
+
+m4_tag(m4_ref(rep_set_priority), [dnl
+The m4_refT(rep_set_priority) configures the local site's priority for
+the purpose of elections.])
+
+m4_tag(m4_ref(rep_set_timeout), [dnl
+Note that of all the various timeouts this method can set, only
+m4_ref(DB_REP_ELECTION_TIMEOUT) is relevant for applications which use
+the Base replication API. The others are used only by Replication
+Manager.])
+
+m4_tag(m4_ref(rep_set_limit), [dnl
+The m4_refT(rep_set_limit) imposes an upper bound on the amount of data
+that will be sent in response to a single call to m4_ref(rep_message).
+During client recovery, that is, when a replica site is trying to
+synchronize with the master, clients may ask the master for a large
+number of log records. If it is going to harm an application for the
+master message loop to remain busy for an extended period transmitting
+records to the replica, then the application will want to use
+m4_ref(rep_set_limit) to limit the amount of data the master will send
+before relinquishing control and accepting other messages.])
+
+m4_tagend
+
+m4_p([dnl
+In addition to the methods previously described, applications which use
+the Base replication API may also call the following methods, as needed:
+m4_ref(rep_stat), m4_ref(rep_sync), m4_ref(rep_set_config).])
+
+m4_page_footer
diff --git a/db/docs_src/ref/rep/bulk.so b/db/docs_src/ref/rep/bulk.so
new file mode 100644
index 000000000..08d34f30b
--- /dev/null
+++ b/db/docs_src/ref/rep/bulk.so
@@ -0,0 +1,35 @@
+m4_comment([$Id: bulk.so,v 1.4 2006/07/14 23:04:42 alanb Exp $])
+
+m4_ref_title(m4_db Replication,
+ Bulk transfer,, rep/init, rep/trans)
+
+m4_p([dnl
+Sites in a replication group may be configured to use bulk transfer by
+calling the m4_refT(rep_set_config) with the m4_ref(DB_REP_CONF_BULK)
+flag. When configured for bulk transfer, sites will accumulate records
+in a buffer and transfer them to another site in a single network
+transfer. Configuring bulk transfer makes sense for master sites, of
+course. Additionally, applications using client-to-client
+synchronization may find it helpful to configure bulk transfer for
+client sites as well.])
+
+m4_p([dnl
+When a master is generating new log records, or any information request
+is made of a master, and bulk transfer has been configured, records will
+accumulate in a bulk buffer. The bulk buffer will be sent to the client
+if either the buffer is full or if a permanent record (for example, a
+transaction commit or checkpoint record) is queued for the client.])
+
+m4_p([dnl
+When a client is responding to another client's request for information,
+and bulk transfer has been configured, records will accumulate in a bulk
+buffer. The bulk buffer will be sent to the client when the buffer is
+full or when the client's request has been satisfied; no particular type
+of record will cause the buffer to be sent.])
+
+m4_p([dnl
+The size of the bulk buffer itself is internally determined and cannot
+be configured. However, the overall size of a transfer may be limited
+using the m4_refT(rep_set_limit).])
+
+m4_page_footer
diff --git a/db/docs_src/ref/rep/comm.so b/db/docs_src/ref/rep/comm.so
new file mode 100644
index 000000000..9693a5a59
--- /dev/null
+++ b/db/docs_src/ref/rep/comm.so
@@ -0,0 +1,104 @@
+m4_comment([$Id: comm.so,v 1.19 2007/03/20 20:20:27 alanb Exp $])
+
+m4_ref_title(m4_db Replication,
+ Building the communications infrastructure,, rep/base_meth, rep/newsite)
+
+m4_p([dnl
+Replication Manager provides a built-in communications
+infrastructure.])
+
+m4_p([dnl
+For applications that use the Base replication API, which must provide
+their own communications infrastructure, it is typically written with one
+or more threads of control looping on one or more communication
+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 m4_refT(rep_message). Messages from the local environment are
+passed to the application for transmission using the callback function
+specified to the m4_refT(rep_set_transport).])
+
+m4_p([dnl
+Processes establish communication channels by calling the
+m4_refT(rep_set_transport), regardless of whether they are running in
+client or server environments. This method specifies the m4_arg(send)
+function, a callback function used by m4_db for sending messages to
+other database environments in the replication group. The m4_arg(send)
+function takes an environment ID and two opaque data objects. It is the
+responsibility of the m4_arg(send) function to transmit the information
+in the two data objects to the database environment corresponding to the
+ID, with the receiving application then calling the m4_refT(rep_message)
+to process the message.])
+
+m4_p([dnl
+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 m4_ref(Dbt)s passed to the m4_arg(send)
+function on the sending site be faithfully copied and delivered to the
+receiving site by means of a call to m4_ref(rep_message) with
+corresponding arguments. Messages that are broadcast (whether by
+broadcast media or when directed by setting the
+m4_refT(rep_set_transport)'s envid parameter DB_EID_BROADCAST), should
+not be processed by the message sender. In all cases, the application's
+transport media or software must ensure that m4_ref(rep_message) is
+never called with a message intended for a different database
+environment or a broadcast message sent from the same environment on
+which m4_ref(rep_message) will be called. The m4_refT(rep_message) is
+free-threaded; it is safe to deliver any number of messages
+simultaneously, and from any arbitrary thread or process in the m4_db
+environment.])
+
+m4_p([dnl
+There are a number of informational returns from the
+m4_refT(rep_message):])
+
+m4_tagbegin
+
+m4_tag([m4_ref(DB_REP_DUPMASTER)], [dnl
+When m4_ref(rep_message) returns m4_ref(DB_REP_DUPMASTER), it means that
+another database environment in the replication group also believes
+itself to be the master. The application should complete all active
+transactions, close all open database handles, reconfigure itself as
+a client using the m4_refT(rep_start), and then call for an election by
+calling the m4_refT(rep_elect).])
+
+m4_tag([m4_ref(DB_REP_HOLDELECTION)], [dnl
+When m4_ref(rep_message) returns m4_ref(DB_REP_HOLDELECTION), it means
+that another database environment in the replication group has called
+for an election. The application should call the m4_refT(rep_elect).])
+
+m4_tag([m4_ref(DB_REP_IGNORE)], [dnl
+When m4_ref(rep_message) returns m4_ref(DB_REP_IGNORE), it means that
+this message cannot be processed.
+This is normally an indication that this message
+is irrelevant to the current replication state, such as a message
+from an old generation that arrived late.])
+
+m4_tag([m4_ref(DB_REP_ISPERM)], [dnl
+When m4_ref(rep_message) returns m4_ref(DB_REP_ISPERM), it means a
+permanent record, perhaps a message previously returned as
+m4_ref(DB_REP_NOTPERM) was successfully
+written to disk. This record may have filled a gap in the log record that
+allowed additional records to be written. The m4_arg(ret_lsnp)
+contains the maximum LSN of the permanent records written.])
+
+m4_tag([m4_ref(DB_REP_NEWSITE)], [dnl
+When m4_ref(rep_message) returns m4_ref(DB_REP_NEWSITE), it means that
+a message from a previously unknown member of the replication group has
+been received. The application should reconfigure itself as necessary
+so it is able to send messages to this site.])
+
+m4_tag([m4_ref(DB_REP_NOTPERM)], [dnl
+When m4_ref(rep_message) returns m4_ref(DB_REP_NOTPERM), it means a
+message marked as m4_ref(DB_REP_PERMANENT) was processed successfully
+but was not written to disk. This is normally an indication that one
+or more messages, which should have arrived before this message, have
+not yet arrived. This operation will be written to disk when the
+missing messages arrive. The m4_arg(ret_lsnp) argument will contain
+the LSN of this record. The application should take whatever action
+is deemed necessary to retain its recoverability characteristics.])
+
+m4_tagend
+
+m4_page_footer
diff --git a/db/docs_src/ref/rep/elect.so b/db/docs_src/ref/rep/elect.so
new file mode 100644
index 000000000..95c3a4f03
--- /dev/null
+++ b/db/docs_src/ref/rep/elect.so
@@ -0,0 +1,164 @@
+m4_comment([$Id: elect.so,v 1.27 2007/04/05 20:37:29 bostic Exp $])
+
+m4_ref_title(m4_db Replication,
+ Elections,, rep/newsite, rep/mastersync)
+
+m4_p([dnl
+When using the Base replication API, it is the responsibility of the
+application to initiate elections if desired. It is never dangerous
+to hold an election, as the m4_db election process ensures there is
+never more than a single master database environment. Clients should
+initiate an election whenever they lose contact with the master
+environment, whenever they see a return of m4_ref(DB_REP_HOLDELECTION)
+from the m4_refT(rep_message), 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 discovered after calling m4_ref(rep_start). If no master has
+been found after a short wait period, then the application should call
+for an election.])
+
+m4_p([dnl
+For a client to win an election, the replication group must currently
+have no master, and the client must have the most recent log records.
+In the case of clients having equivalent log records, the priority of
+the database environments participating in the election will determine
+the winner. The application specifies the minimum number of replication
+group members that must participate in an election for a winner to be
+declared. We recommend at least ((N/2) + 1) members. If fewer than the
+simple majority are specified, a warning will be given.])
+
+m4_p([dnl
+If an application's policy for what site should win an election can be
+parameterized in terms of the database environment's information (that
+is, the number of sites, available log records and a relative priority
+are all that matter), then m4_db can handle all elections transparently.
+However, there are cases where the application has more complete
+knowledge and needs to affect the outcome of elections. For example,
+applications may choose to handle master selection, explicitly
+designating master and client sites. Applications in these cases may
+never need to call for an election. Alternatively, applications may
+choose to use m4_ref(rep_elect)'s arguments to force the correct outcome
+to an election. That is, if an application has three sites, A, B, and
+C, and after a failure of C determines that A must become the winner,
+the application can guarantee an election's outcome by specifying
+priorities appropriately after an election:])
+
+m4_indent([dnl
+on A: priority 100, nsites 2
+on B: priority 0, nsites 2])
+
+m4_p([dnl
+It is dangerous to configure more than one master environment using the
+m4_refT(rep_start), 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 knows it has won an election when it receives the
+m4_ref(DB_EVENT_REP_ELECTED) event.])
+
+m4_p([dnl
+Normally, when a master failure is detected it is desired that an
+election finish quickly so the application can continue to service
+updates. Also, participating sites are already up and can participate.
+However, in the case of restarting a whole group after an administrative
+shut down, it is possible that a slower booting site had later logs than
+any other site. To cover that case, an application would like to give
+the election more time to ensure all sites have a chance to participate.
+Since it is intractable to for a starting site to determine which case
+the whole group is in, the use of a long timeout gives all sites a
+reasonable chance to participate. If an application wanting full
+participation sets the m4_arg(nvotes) arg to the m4_refT(rep_elect) to
+the number of sites in the group and one site does not reboot, a master
+can never be elected without manual intervention.])
+
+m4_p([
+In those cases, the desired action at a group level is to hold
+a full election if all sites crashed and a majority election if
+a subset of sites crashed or rebooted. Since an individual site cannot know
+which number of votes to require, a mechanism is available to
+accomplish this using timeouts. By setting a long timeout (perhaps
+on the order of minutes) using the m4_arg(DB_REP_FULL_ELECTION_TIMEOUT)
+flag to the m4_refT(rep_set_timeout), an application can
+allow m4_db to elect a master even without full participation.
+Sites may also want to set a normal election timeout for majority
+based elections using the m4_arg(DB_REP_ELECTION_TIMEOUT) flag
+to the m4_refT(rep_set_timeout).])
+
+m4_p([
+Consider 3 sites, A, B, and C where A is the master. In the
+case where all three sites crash and all reboot, all sites
+will set a timeout for a full election, say 10 minutes, but only
+require a majority for m4_arg(nvotes) to the m4_refT(rep_elect).
+Once all three sites are booted the election will complete
+immediately if they reboot within 10 minutes of each other. Consider
+if all three sites crash and only two reboot. The two sites will
+enter the election, but after the 10 minute timeout they will
+elect with the majority of two sites. Using the full election
+timeout sets a threshold for allowing a site to reboot and rejoin
+the group.])
+
+m4_p([dnl
+To add a database environment to the replication group with the intent
+of it becoming the master, first add it as a client. Since it may be
+out-of-date with respect to the current master, allow it to update
+itself from the current master. Then, shut the current master down.
+Presumably, the added client will win the subsequent election. If the
+client does not win the election, it is likely that it was not given
+sufficient time to update itself with respect to the current master.])
+
+m4_p([dnl
+If a client is unable to find a master or win an election, it means that
+the network has been partitioned and there are not enough environments
+participating in the election for one of the participants to win.
+In this case, the application should repeatedly call m4_ref(rep_start)
+and m4_ref(rep_elect), alternating between attempting to discover an
+existing master, and holding an election to declare a new one. In
+desperate circumstances, an application could simply declare itself the
+master by calling m4_ref(rep_start), or by reducing the number of
+participants required to win an election until the election is won.
+Neither of these solutions is recommended: in the case of a network
+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. In the case of a two-system replication group, the application
+may want to require access to a remote network site, or some other
+external tie-breaker to allow a system to declare itself master.])
+
+m4_p([dnl
+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
+machine might lose to an environment on a badly connected but faster
+booting machine. In the case of a number of environments crashing at
+the same time (for example, a set of replicated servers in a single
+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.])
+
+m4_p([dnl
+If, for any reason, a less-preferred database environment becomes the
+master, it is possible to switch masters in a replicated environment.
+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:])
+
+m4_nlistbegin
+m4_nlist([dnl
+The preferred master should reboot and re-join the replication group
+as a client.])
+m4_nlistns([dnl
+Once the preferred master has caught up with the replication group, the
+application on the current master should complete all active transactions
+and reconfigure itself as a client using the m4_refT(rep_start).])
+m4_nlistns([dnl
+Then, the current or preferred master should call for an election using
+the m4_refT(rep_elect).])
+m4_nlistend
+
+m4_p([dnl
+Replication Manager automatically conducts elections when necessary,
+based on configuration information supplied to the
+m4_refT(rep_set_priority) and the m4_refT(rep_set_nsites).])
+
+m4_page_footer
diff --git a/db/docs_src/ref/rep/ex.so b/db/docs_src/ref/rep/ex.so
new file mode 100644
index 000000000..827a1968a
--- /dev/null
+++ b/db/docs_src/ref/rep/ex.so
@@ -0,0 +1,85 @@
+m4_comment([$Id: ex.so,v 1.8 2006/10/05 01:06:08 bostic Exp $])
+
+include(m4/m4.utility)
+
+m4_ref_title(m4_db Replication,
+ Ex_rep: a replication example,, rep/faq, rep/ex_comm)
+
+m4_p([dnl
+Ex_rep, found in the m4_path(examples_c/ex_rep) subdirectory
+of the m4_db distribution, is a simple but complete demonstration of a
+replicated application. The application is a mock stock ticker. The
+master accepts a stock symbol and an numerical value as input, and
+stores this information into a replicated database; either master or
+clients can display the contents of the database, given an empty input
+line.])
+
+m4_p([dnl
+There are two versions of the application: ex_rep_mgr uses Replication
+Manager, while ex_rep_base uses the Base replication API. This is
+intended to demonstrate that, while the basic function of the
+application is the same in either case, the replication support
+infrastructure differs markedly.])
+
+m4_p([dnl
+The communication infrastructure demonstrated with ex_rep_base has the
+same dependencies on system networking and threading support as does
+the Replication Manager (see the m4_link(M4RELDIR/ref/rep/intro,
+Introduction)). The Makefile created by the standard UNIX
+configuration will build the ex_rep examples on most platforms. Enter
+"make ex_rep_mgr" and/or "make ex_rep_base" to attempt to build
+them.])
+
+m4_p([The synopsis for both programs is as follows:])
+m4_literal([dnl
+ex_rep_xxx m4_utilarg(MC) m4_utilarg([h home]) m4_utilarg([m host:port]) m4_utilarg([o host:port]) m4_utilarg([n sites]) m4_utilarg([p priority])])
+
+m4_p([where "ex_rep_xxx" is either "ex_rep_mgr" or "ex_rep_base".])
+
+m4_p([The options, to either version of the program, are as follows:])
+
+m4_tagbegin
+m4_tagopt(M, [dnl
+Configure this process as a master.])
+m4_tagopt(C, [dnl
+Configure this process as a client.])
+m4_hflag
+m4_tagopt(m, [dnl
+Listen on port "port" of host "host" for incoming connections.])
+m4_tagopt(o, [dnl
+Attempt to connect to another member of the replication group which is
+listening on host "host" at port "port". Members of a replication group
+should be able to find all other members of a replication group so long
+as they are in contact with at least one other member of the replication
+group.])
+m4_tagopt(n, [dnl
+Specify the total number of sites in the replication group.])
+m4_tagopt(p, [dnl
+Set the election priority. See m4_ref(rep_elect) for more
+information.])
+m4_tagend
+
+m4_p([dnl
+A typical ex_rep session begins with a command such as the
+following, to start a master:])
+
+m4_indent([dnl
+ex_rep_mgr -M -p 100 -n 4 -h DIR1 -m localhost:6000])
+
+m4_p([dnl
+and several clients:])
+
+m4_indent([dnl
+ex_rep_mgr -C -p 50 -n 4 -h DIR2 -m localhost:6001 -o localhost:6000
+ex_rep_mgr -C -p 10 -n 4 -h DIR3 -m localhost:6002 -o localhost:6000
+ex_rep_mgr -C -p 0 -n 4 -h DIR4 -m localhost:6003 -o localhost:6000])
+
+m4_p([dnl
+In this example, the client with home directory DIR4 can never become
+a master (its priority is 0). Both of the other clients can become
+masters, but the one with home directory DIR2 is preferred. Priorities
+are assigned by the application and should reflect the desirability of
+having particular clients take over as master in the case that the
+master fails.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/rep/ex_comm.so b/db/docs_src/ref/rep/ex_comm.so
new file mode 100644
index 000000000..82e523db7
--- /dev/null
+++ b/db/docs_src/ref/rep/ex_comm.so
@@ -0,0 +1,88 @@
+m4_comment([$Id: ex_comm.so,v 1.9 2006/08/24 17:59:56 bostic Exp $])
+
+m4_ref_title(m4_db Replication,
+ Ex_rep_base: a TCP/IP based communication infrastructure,, rep/ex, rep/ex_rq)
+
+m4_p([dnl
+
+Applications which use the Base replication API must implement a
+communication infrastructure. The communication infrastructure
+consists of three parts: a way to map environment IDs to particular
+sites, the functions to get and receive messages, and the application
+architecture that supports the particular communication infrastructure
+used (for example, individual threads per communicating site, a shared
+message handler for all sites, a hybrid solution). The communication
+infrastructure for ex_rep_base is implemented in the file
+m4_path(ex_rep/base/rep_net.c), and each part of that infrastructure
+is described as follows.])
+
+m4_p([dnl
+Ex_rep_base maintains a table of environment ID to TCP/IP port
+mappings. A pointer to this table is stored in a structure pointed to
+by the app_private field of the m4_ref(DbEnv) 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 are defined in
+m4_path(ex_rep/base/rep_net.c). Each member_t contains the host and
+port identification, the environment ID, and a file descriptor.])
+
+m4_p([dnl
+This design is particular to this application and communication
+infrastructure, but provides an indication of the sort of functionality
+that is needed to maintain the application-specific state for a
+TCP/IP-based infrastructure. The goal of the table and its interfaces
+is threefold: First, it must guarantee that given an environment ID,
+the send function can send a message to the appropriate place. Second,
+when given the special environment ID m4_ref(DB_EID_BROADCAST), the send
+function can send messages to all the machines in the group. Third,
+upon receipt of an incoming message, the receive function can correctly
+identify the sender and pass the appropriate environment ID to the
+m4_ref(rep_message) method.])
+
+m4_p([dnl
+Mapping a particular environment ID to a specific port is accomplished
+by looping through the linked list until the desired environment ID is
+found. Broadcast communication is implemented by looping through the
+linked list and sending to each member found. Since each port
+communicates with only a single other environment, receipt of a message
+on a particular port precisely identifies the sender.])
+
+m4_p([dnl
+This is implemented in the quote_send, quote_send_broadcast and
+quote_send_one functions, which can be found in
+m4_path(ex_rep/base/rep_net.c).])
+
+m4_p([dnl
+The example provided is merely one way to satisfy these requirements,
+and there are alternative implementations as well. For instance,
+instead of associating separate socket connections with each remote
+environment, an application might instead label each message with a
+sender identifier; instead of looping through a table and sending a
+copy of a message to each member of the replication group, the
+application could send a single message using a broadcast protocol.])
+
+m4_p([dnl
+The quote_send function is passed as the callback to
+m4_ref(rep_set_transport); m4_db automatically sends messages as needed
+for replication. The receive function is a mirror to the quote_send_one
+function. It is not a callback function (the application is responsible
+for collecting messages and calling m4_ref(rep_message) on them as is
+convenient). In the sample application, all messages transmitted are
+m4_db messages that get handled by m4_ref(rep_message), however, this
+is not always going to be the case. The application may want to pass
+its own messages across the same channels, distinguish between its own
+messages and those of m4_db, and then pass only the m4_db ones to
+m4_ref(rep_message).])
+
+m4_p([dnl
+The final component of the communication infrastructure is the process
+model used to communicate with all the sites in the replication group.
+Each site creates a thread of control that listens on its designated
+socket (as specified by the m4_option(m) command line argument) and
+then creates a new channel for each site that contacts it. In addition,
+each site explicitly connects to the sites specified in the
+m4_option(o) command line argument. This is a fairly standard TCP/IP
+process architecture and is implemented by the following functions (all
+in m4_path(ex_rep/base/rep_net.c)).])
+
+m4_page_footer
diff --git a/db/docs_src/ref/rep/ex_rq.so b/db/docs_src/ref/rep/ex_rq.so
new file mode 100644
index 000000000..ace89b9c6
--- /dev/null
+++ b/db/docs_src/ref/rep/ex_rq.so
@@ -0,0 +1,58 @@
+m4_comment([$Id: ex_rq.so,v 1.7 2006/08/24 18:01:51 bostic Exp $])
+
+m4_ref_title(m4_db Replication,
+ Ex_rep_base: putting it all together,, rep/ex_comm, xa/intro)
+
+m4_p([dnl
+Beyond simply initializing a replicated environment, an application
+that uses the Base replication API must set up its communication
+infrastructure, and then make sure that incoming messages are received
+and processed.])
+
+m4_p([dnl
+To initialize replication, ex_rep_base creates a m4_db environment and
+calls m4_ref(rep_set_transport) to establish a send function. (See
+the main function in m4_path(ex_rep/base/rep_base.c), including its
+calls to the create_env and env_init functions in
+m4_path(ex_rep/common/rep_common.c).)])
+
+m4_p([dnl
+ex_rep_base opens a listening socket for incoming connections and opens
+an outgoing connection to every machine that it knows about (that is,
+all the sites listed in the m4_option(o) command line argument).
+Applications can structure the details of this in different ways, but
+ex_rep_base creates a user-level thread to listen on its socket, plus
+a thread to loop and handle messages on each socket, in addition to the
+threads needed to manage the user interface, update the database on the
+master, and read from the database on the client (in other words, in
+addition to the normal functionality of any database application).])
+
+m4_p([dnl
+Once the initial threads have all been started and the communications
+infrastructure is initialized, the application signals that it is ready
+for replication and joins a replication group by calling
+m4_ref(rep_start). (Again, see the main function in
+m4_path(ex_rep/base/rep_base.c).)])
+
+m4_p([dnl
+Note the use of the optional second argument to m4_ref(rep_start) in
+the client initialization code. The argument "local" is a piece of
+data, opaque to m4_db, that will be broadcast to each member of a
+replication group; it allows new clients to join a replication group,
+without knowing the location of all its members; the new client will
+be contacted by the members it does not know about, who will receive
+the new client's contact information that was specified in "myaddr."
+See m4_link(M4RELDIR/ref/rep/newsite, Connecting to a new site) for more
+information.])
+
+m4_p([dnl
+The final piece of a replicated application is the code that loops,
+receives, and processes messages from a given remote environment.
+ex_rep_base runs one of these loops in a parallel thread for each
+socket connection (see the hm_loop function in
+m4_path(ex_rep/base/rep_msg.c)). Other applications may want to queue
+messages somehow and process them asynchronously, or select() on a
+number of sockets and either look up the correct environment ID for each
+or encapsulate the ID in the communications protocol.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/rep/faq.so b/db/docs_src/ref/rep/faq.so
new file mode 100644
index 000000000..2956b9120
--- /dev/null
+++ b/db/docs_src/ref/rep/faq.so
@@ -0,0 +1,122 @@
+m4_comment([$Id: faq.so,v 1.12 2006/09/07 19:26:44 alanb Exp $])
+
+m4_ref_title(m4_db Replication,
+ Replication FAQ,, rep/partition, rep/ex)
+
+m4_nlistbegin
+
+m4_nlist([dnl
+m4_bold([Does m4_db provide support for forwarding write queries from
+clients to masters?])
+
+m4_p([dnl
+No, it does not. The m4_db RPC server code could be modified to support
+this functionality, but in general this protocol is left entirely to the
+application. Note, there is no reason not to use the communications
+channels the application establishes for replication support to forward
+database update messages to the master, since m4_db does not require
+those channels to be used exclusively for replication messages.
+Replication Manager does not currently offer this service to the
+application.])])
+
+m4_nlist([dnl
+m4_bold([Can I use replication to partition my environment across
+multiple sites?])
+
+m4_p([dnl
+No, this is not possible. All replicated databases must be equally
+shared by all environments in the replication group.])])
+
+m4_nlist([dnl
+m4_bold([I'm running with replication but I don't see my databases
+on the client.])
+
+m4_p([dnl
+This problem may be the result of the application using absolute path
+names for its databases, and the pathnames are not valid on the client
+system.])])
+
+m4_nlist([dnl
+m4_bold([How can I distinguish m4_db messages from application messages?])
+
+m4_p([dnl
+There is no way to distinguish m4_db messages from application-specific
+messages, nor does m4_db offer any way to wrap application messages
+inside of m4_db messages. Distributed applications exchanging their
+own messages should either enclose m4_db messages in their own wrappers,
+or use separate network connections to send and receive m4_db messages.
+The one exception to this rule is connection information for new sites;
+m4_db offers a simple method for sites joining replication groups to
+send connection information to the other database environments in the
+group (see m4_link(M4RELDIR/ref/rep/newsite, Connecting to a new site)
+for more information).])])
+
+m4_nlist([dnl
+m4_bold([How should I build my m4_arg(send) function?])
+
+m4_p([dnl
+This depends on the specifics of the application. One common way is to
+write the m4_arg(rec) and m4_arg(control) arguments' sizes and data to
+a socket connected to each remote site. On a fast, local area net, the
+simplest method is likely to be to construct broadcast messages. Each
+m4_db message would be encapsulated inside an application specific
+message, with header information specifying the intended recipient(s)
+for the message. This will likely require a global numbering scheme,
+however, as the m4_db library has to be able to send specific log
+records to clients apart from the general broadcast of new log records
+intended for all members of a replication group.])])
+
+m4_nlist([dnl
+m4_bold([Does every one of my threads of control on the master have to
+set up its own connection to every client? And, does every one of my
+threads of control on the client have to set up its own connection to
+every master?])
+
+m4_p([dnl
+This is not always necessary. In the m4_db replication model, any
+thread of control which modifies a database in the master environment
+must be prepared to send a message to the client environments, and any
+thread of control which delivers a message to a client environment must
+be prepared to send a message to the master. There are many ways in
+which these requirements can be satisfied.])
+
+m4_p([dnl
+The simplest case is probably a single, multithreaded process running
+on the master and clients. The process running on the master would
+require a single write connection to each client and a single read
+connection from each client. A process running on each client would
+require a single read connection from the master and a single write
+connection to the master. Threads running in these processes on the
+master and clients would use the same network connections to pass
+messages back and forth.])
+
+m4_p([dnl
+A common complication is when there are multiple processes running on
+the master and clients. A straight-forward solution is to increase the
+numbers of connections on the master -- each process running on the
+master has its own write connection to each client. However, this
+requires only one additional connection for each possible client in the
+master process. The master environment still requires only a single
+read connection from each client (this can be done by allocating a
+separate thread of control which does nothing other than receive client
+messages and forward them into the database). Similarly, each client
+still only requires a single thread of control that receives master
+messages and forwards them into the database, and which also takes
+database messages and forwards them back to the master. This model
+requires the networking infrastructure support many-to-one
+writers-to-readers, of course.])
+
+m4_p([dnl
+If the number of network connections is a problem in the multiprocess
+model, and inter-process communication on the system is inexpensive
+enough, an alternative is have a single process which communicates
+between the master the each client, and whenever a process'
+m4_bold(send) function is called, the process passes the message to the
+communications process which is responsible for forwarding the message
+to the appropriate client. Alternatively, a broadcast mechanism will
+simplify the entire networking infrastructure, as processes will likely
+no longer have to maintain their own specific network connections.])])
+
+m4_nlistend
+
+m4_page_footer
diff --git a/db/docs_src/ref/rep/id.so b/db/docs_src/ref/rep/id.so
new file mode 100644
index 000000000..d36f6c692
--- /dev/null
+++ b/db/docs_src/ref/rep/id.so
@@ -0,0 +1,45 @@
+m4_comment([$Id: id.so,v 1.8 2006/07/14 23:04:42 alanb Exp $])
+
+m4_ref_title(m4_db Replication,
+ Replication environment IDs,, rep/intro, rep/pri)
+
+m4_p([dnl
+Each database environment included in a replication group must have a
+unique identifier for itself and for the other members of the
+replication group. The identifiers do not need to be global, that is,
+each database environment can assign local identifiers to members of
+the replication group as it encounters them. For example, given three
+sites: A, B and C, site A might assign the identifiers 1 and 2 to sites
+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.])
+
+m4_p([dnl
+It is the responsibility of the application to label each incoming
+replication message passed to m4_refT(rep_message) with the appropriate
+identifier. Subsequently, m4_db will label outgoing messages to the
+m4_arg(send) function with those same identifiers.])
+
+m4_p([dnl
+Negative identifiers are reserved for use by m4_db, and should never be
+assigned to environments by the application. Two of these reserved
+identifiers are intended for application use, as follows:])
+
+m4_tagbegin
+
+m4_tag([m4_ref(DB_EID_BROADCAST)], [dnl
+The m4_ref(DB_EID_BROADCAST) identifier indicates a message should be
+broadcast to all members of a replication group.])
+
+m4_tag([m4_ref(DB_EID_INVALID)], [dnl
+The m4_ref(DB_EID_INVALID) identifier is an invalid environment ID, and
+may be used to initialize environment ID variables that are subsequently
+checked for validity.])
+
+m4_tagend
+
+m4_p([dnl
+Replication Manager assigns and manages environment IDs on behalf of
+the application.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/rep/init.so b/db/docs_src/ref/rep/init.so
new file mode 100644
index 000000000..352a0b5b8
--- /dev/null
+++ b/db/docs_src/ref/rep/init.so
@@ -0,0 +1,62 @@
+m4_comment([$Id: init.so,v 1.6 2005/10/19 19:11:20 bostic Exp $])
+
+m4_ref_title(m4_db Replication,
+ Initializing a new site,, rep/mastersync, rep/bulk)
+
+m4_p([dnl
+By default, adding a new site to a replication group only requires the
+client to join. m4_db will automatically perform internal
+initialization from the master to the client, bringing the client into
+sync with the master.])
+
+m4_p([dnl
+However, depending on the network and infrastructure, it can be
+advantageous in a few instances to use a "hot backup" to initialize a
+client into a replication group. Clients not wanting to automatically
+perform internal initialization should call the m4_refT(rep_set_config)
+with the m4_ref(DB_REP_CONF_NOAUTOINIT) flag. This configuration flag
+causes m4_db to return m4_ref(DB_REP_JOIN_FAILURE) to the application's
+m4_refT(rep_message) instead of performing internal initialization.])
+
+m4_p([dnl
+To use a hot backup to initialize a client into a replication group,
+perform the following steps:])
+
+m4_nlistbegin
+
+m4_nlist([dnl
+Do an archival backup of the master's environment, as described in
+m4_link(M4RELDIR/ref/transapp/archival, [Database and log file
+archival]). The backup can either be a conventional backup or a hot
+backup.])
+
+m4_nlist([dnl
+Copy the archival backup into a clean environment directory on the
+client.])
+
+m4_nlist([dnl
+Run catastrophic recovery on the client's new environment, as described
+in m4_link(M4RELDIR/ref/transapp/recovery, [Recovery procedures]).])
+
+m4_nlist([dnl
+Reconfigure and reopen the environment as a client member of the
+replication group.])
+
+m4_nlistend
+
+m4_p([dnl
+If copying the backup to the client takes a long time relative to the
+frequency with which log files are reclaimed using the
+m4_ref(db_archive) utility or the m4_refT(log_archive), 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.])
+
+m4_p([dnl
+As with any m4_db application, the database environment must be in a
+consistent state at application startup. This is most easily assured
+by running recovery at startup time in one thread or process; it is
+harmless to do this on both clients and masters even when not strictly
+necessary.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/rep/intro.so b/db/docs_src/ref/rep/intro.so
new file mode 100644
index 000000000..859880e99
--- /dev/null
+++ b/db/docs_src/ref/rep/intro.so
@@ -0,0 +1,95 @@
+m4_comment([$Id: intro.so,v 1.11 2006/11/13 18:05:02 bostic Exp $])
+
+m4_ref_title(m4_db Replication, Replication introduction,
+ introduction to @replication, transapp/faq, rep/id)
+
+m4_p([dnl
+m4_db includes support for building highly available applications based
+on replication. m4_db replication groups consist of some number of
+independently configured database environments. There is a single
+m4_italic(master) database environment and one or more m4_italic(client)
+database environments. Master environments support both database reads
+and writes; client environments support only database reads. If the
+master environment fails, applications may upgrade a client to be the
+new master. The database environments might be on separate computers,
+on separate hardware partitions in a non-uniform memory access (NUMA)
+system, or on separate disks in a single server. The only constraint
+is that all the participants in a replication group all be on machines
+of the same endianness. (We expect this constraint to be removed in a
+future release.) As always with m4_db environments, any number of
+concurrent processes or threads may access a database environment. In
+the case of a master environment, any number of threads of control may
+read and write the environment, and in the case of a client environment,
+any number of threads of control may read the environment.])
+
+m4_p([dnl
+Applications may be written to provide various degrees of consistency
+between the master and clients. The system can be run synchronously
+such that replicas are guaranteed to be up-to-date with all committed
+transactions, but doing so may incur a significant performance penalty.
+Higher performance solutions sacrifice total consistency, allowing the
+clients to be out of date for an application-controlled amount of
+time.])
+
+m4_p([dnl
+There are two ways to build replicated applications. The simpler way
+is to use the m4_db Replication Manager. The Replication Manager
+provides a standard communications infrastructure, and it creates and
+manages the background threads needed for processing replication
+messages. (Note that in Replication Manager applications, all updates
+to databases at the master environment must be done through a single
+DB_ENV environment handle, though they may occur in multiple threads.
+This of course means that only a single process may update data.)])
+
+m4_p([dnl
+The Replication Manager implementation is based on TCP/IP sockets, and
+uses POSIX 1003.1 style networking and thread support. (On Windows
+systems, it uses standard Windows thread support.) As a result, it is
+not as portable as the rest of the m4_db library itself.])
+
+m4_p([dnl
+The alternative is to use the lower-level "Base" replication API. This
+approach affords more flexibility, but requires the application to
+provide some critical components:])
+
+m4_nlistbegin
+m4_nlist([dnl
+A communication infrastructure. Applications may use whatever wire
+protocol is appropriate for their application (for example, RPC, TCP/IP,
+UDP, VI or message-passing over the backplane).])
+m4_nlist([dnl
+The application is responsible for naming. m4_db refers to the members
+of a replication group using an application-provided ID, and
+applications must map that ID to a particular database environment or
+communication channel.])
+m4_nlist([dnl
+The application is responsible for monitoring the status of the master
+and clients, and identifying any unavailable database environments.])
+m4_nlist([dnl
+The application must provide whatever security policies are needed.
+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.])
+m4_nlistend
+
+m4_p([dnl
+(Note that Replication Manager does not provide wire security for
+replication messages.)])
+
+m4_p([dnl
+The following pages present various programming considerations, many of
+which are directly relevant only for applications which use the Base
+replication API. However, even when using Replication Manager it is
+important to understand the concepts.])
+
+m4_p([dnl
+Finally, the m4_db replication implementation has one other additional
+feature to increase application reliability. Replication in m4_db is
+implemented to perform database updates using a different code path than
+the standard ones. This means operations that manage to crash the
+replication master due to a software bug will not necessarily also crash
+replication clients.])
+
+include(rep/m4.methods)
+
+m4_page_footer
diff --git a/db/docs_src/ref/rep/mastersync.so b/db/docs_src/ref/rep/mastersync.so
new file mode 100644
index 000000000..3981294cc
--- /dev/null
+++ b/db/docs_src/ref/rep/mastersync.so
@@ -0,0 +1,132 @@
+m4_comment([$Id: mastersync.so,v 1.13 2007/03/20 20:20:27 alanb Exp $])
+
+m4_ref_title(m4_db Replication,
+ Synchronizing with a master,, rep/elect, rep/init)
+
+m4_p([dnl
+When a client detects a new replication group master, the client must
+synchronize with the new master before the client can process new
+database changes. Synchronizing is a heavyweight operation which can
+place a burden on both the client and the master. There are several
+controls an application can use to reduce the synchronization burden.])
+
+m4_section([Delaying client synchronization])
+
+m4_p([dnl
+When a replication group has a new master, either as specified by the
+application or as a result of winning an election, all clients in the
+replication group must synchronize with the new master. This can
+strain the resources of the new master since a large number of clients
+may be attempting to communicate with and transfer records from the
+master. Client applications wanting to delay client synchronization
+should call the m4_refT(rep_set_config) with the
+m4_ref(DB_REP_CONF_DELAYCLIENT) flag. The application will be
+notified of the establishment of the new master as usual, but the
+client will not proceed to synchronize with the new master.])
+
+m4_p([dnl
+Applications learn of a new master via the
+m4_ref(DB_EVENT_REP_NEWMASTER) event.])
+
+m4_p([dnl
+Client applications choosing to delay synchronization in this manner are
+responsible for synchronizing the client environment at some future time
+using the m4_refT(rep_sync).])
+
+m4_section([Client-to-client synchronization])
+
+m4_p([dnl
+Instead of synchronizing with the new master, it is sometimes possible
+for a client to synchronize with another client. m4_db initiates
+synchronization at the client by sending a request message via the
+transport call-back function of the communication infrastructure. The
+message is destined for the master site, but is also marked with a
+m4_ref(DB_REP_ANYWHERE) flag. The application may choose to send such
+a request to another client, or to ignore the flag, sending it to its
+indicated destination.])
+
+m4_p([dnl
+Furthermore, when the other client receives such a request it may be
+unable to satisfy it. In this case it will reply to the requesting
+client, telling it that it is unable to provide the requested
+information. The requesting client will then re-issue the request.
+Additionally, if the original request never reaches the other client,
+the requesting client will again re-issue the request. In either of
+these cases the message will be marked with the m4_ref(DB_REP_REREQUEST)
+flag. The application may continue trying to find another client to
+service the request, or it may give up and simply send it to the master
+(that is, the environment ID explicitly specified to the transport
+function).])
+
+m4_p([dnl
+Applications written to the Base replication API have complete freedom
+in choosing where to send these m4_ref(DB_REP_ANYWHERE) requests, and
+in deciding how to handle m4_ref(DB_REP_REREQUEST).])
+
+m4_p([dnl
+Replication Manager allows an application to designate one remote site
+(called its "peer") to receive client-to-client requests, via the
+flags parameter to the m4_refT(repmgr_add_remote_site). Replication
+Manager will always first try to send requests marked with the
+m4_ref(DB_REP_ANYWHERE) flag to its peer, if available. However, it
+will always send a m4_ref(DB_REP_REREQUEST) to the master site.])
+
+m4_p([dnl
+The delayed synchronization and client-to-client synchronization
+features allow applications to do load balancing within replication
+groups. For example, consider a replication group with 5 sites, A, B,
+C, D and E. Site E just crashed, and site A was elected master. Sites
+C and D have been configured for delayed synchronization. When site B
+is notified that site A is a new master, it immediately synchronizes.
+When B finishes synchronizing with the master, the application calls the
+m4_refT(rep_sync) on sites C and D to cause them to synchronize as well.
+Sites C and D (and E, when it has finished rebooting) can send their
+requests to site B, and B then bears the brunt of the work and
+network traffic for synchronization, making master site A available to
+handle the normal application load and any write requests paused by
+the election.])
+
+m4_section([Blocked client operations])
+
+m4_p([dnl
+Clients in the process of synchronizing with the master block access to
+m4_db operations. By default, most m4_db(Db) methods will block until
+client synchronization is complete, and then the method call proceeds.])
+
+m4_p([dnl
+Client applications which cannot wait and would prefer an immediate
+error return instead of blocking, should call the
+m4_refT(rep_set_config) with the m4_ref(DB_REP_CONF_NOWAIT) flag. This
+configuration causes m4_ref(Db) method calls to immediately return a
+m4_ref(DB_REP_LOCKOUT) error instead of blocking, if the client is
+currently synchronizing with the master.])
+
+m4_section([Clients too far out-of-date to synchronize])
+
+m4_p([dnl
+Clients attempting to synchronize with the master may discover that
+synchronization is not possible because the client and master have been
+out of contact for too long. By default, the master and client
+automatically detect this state and perform an internal initialization
+of the client. Because internal initialization requires transfer of
+entire databases to the client, it can take a relatively long period of
+time and may require database handles to be reopened in the client
+applications.])
+
+m4_p([dnl
+Client applications which cannot wait and would prefer to postpone
+internal initialization until a more convenient time, or would prefer
+to do a hot backup instead of performing internal initialization, should
+call the m4_refT(rep_set_config) with the m4_ref(DB_REP_CONF_NOAUTOINIT)
+flag. This configuration flag causes m4_db to return
+m4_ref(DB_REP_JOIN_FAILURE) to the application instead of performing
+internal initialization.])
+
+m4_p([dnl
+Client applications choosing to delay synchronization in this manner are
+responsible for synchronizing the client with the master at some future
+time. This can be accomplished by turning off the
+m4_ref(DB_REP_CONF_NOAUTOINIT) flag and calling the m4_refT(rep_sync),
+or by performing a hot backup.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/rep/mgr_meth.so b/db/docs_src/ref/rep/mgr_meth.so
new file mode 100644
index 000000000..dc07ed7d3
--- /dev/null
+++ b/db/docs_src/ref/rep/mgr_meth.so
@@ -0,0 +1,79 @@
+m4_comment([$Id: mgr_meth.so,v 1.8 2006/09/08 18:33:38 bostic Exp $])
+
+m4_ref_title(m4_db Replication,
+ Replication Manager methods,, rep/app, rep/base_meth)
+
+m4_p([dnl
+Applications which use the Replication Manager support generally call
+the following m4_db methods. The general pattern is to call various
+methods to configure Replication Manager, and then start it by calling
+m4_ref(repmgr_start). Once this initialization is complete, the
+application rarely needs to call any of these methods. (A prime
+example of an exception to this rule would be the m4_refT(rep_sync),
+if the application is doing m4_link(M4RELDIR/ref/rep/mastersync,
+delayed synchronization).)])
+
+m4_tagbegin
+
+m4_tag(m4_ref(repmgr_set_local_site), [dnl
+The m4_refT(repmgr_set_local_site) configures the TCP/IP address of
+the local site, by specifying the port number on which it is to listen
+for incoming connection requests. This method must be called exactly
+once before calling m4_ref(repmgr_start).])
+
+m4_tag(m4_ref(repmgr_add_remote_site), [dnl
+The m4_refT(repmgr_add_remote_site) adds a remote site to the list of
+sites initially known by the local site. The remote site is specified
+in terms of a TCP/IP network address: host name and port number. This
+method may be called as many times as necessary to configure all known
+remote sites. Note that it is usually not necessary for each site in
+the replication group initially to know about all other sites in the
+group. Sites can discover each other dynamically, as described in
+m4_link(M4RELDIR/ref/rep/newsite, Connecting to a new site).])
+
+m4_tag(m4_ref(repmgr_set_ack_policy), [dnl
+The m4_refT(repmgr_set_ack_policy) configures the acknowledgement
+policy to be used in the replication group, in other words, the
+behavior of the master with respect to acknowledgements for
+"permanent" messages, which implements the application's requirements
+for m4_link(M4RELDIR/ref/rep/trans, transactional guarantees). The
+current implementation requires all sites in the replication group
+configure the same acknowledgement policy.])
+
+m4_tag(m4_ref(rep_set_nsites), [dnl
+The m4_refT(rep_set_nsites) tells Replication Manager the total number
+of sites in the replication group. This is usually necessary for
+proper operation of elections, and for counting message
+acknowledgements (depending on the acknowledgement policy).])
+
+m4_tag(m4_ref(rep_set_priority), [dnl
+The m4_refT(rep_set_priority) configures the local site's priority for
+the purpose of elections.])
+
+m4_tag(m4_ref(rep_set_timeout), [dnl
+This method optionally configures various timeout values. Otherwise
+default timeout values as specified in m4_ref(rep_set_timeout) are
+used.])
+
+m4_tag(m4_ref(dbenv_set_event_notify), [dnl
+Once configured and started, Replication Manager does virtually all of
+its work in the background, usually without the need for any direct
+communication with the application. However, occasionally events
+occur which the application may be interested in knowing about. The
+application can request notification of these events by calling the
+m4_refT(dbenv_set_event_notify).])
+
+m4_tag(m4_ref(repmgr_start), [dnl
+The m4_refT(repmgr_start) starts the replication system. It opens the
+listening TCP/IP socket and creates all the background processing
+threads that will be needed.])
+
+m4_tagend
+
+m4_p([dnl
+In addition to the methods previously described, Replication Manager
+applications may also call the following methods, as needed:
+m4_ref(rep_set_config), m4_ref(rep_set_limit), m4_ref(rep_sync),
+m4_ref(rep_stat).])
+
+m4_page_footer
diff --git a/db/docs_src/ref/rep/newsite.so b/db/docs_src/ref/rep/newsite.so
new file mode 100644
index 000000000..aa99f9178
--- /dev/null
+++ b/db/docs_src/ref/rep/newsite.so
@@ -0,0 +1,44 @@
+m4_comment([$Id: newsite.so,v 1.7 2006/08/24 17:58:53 bostic Exp $])
+
+m4_ref_title(m4_db Replication,
+ Connecting to a new site,, rep/comm, rep/elect)
+
+m4_p([dnl
+To add a new site to the replication group all that is needed
+is for the client member to join. m4_db will perform an
+internal initialization from the master to the client automatically
+and will run recovery on the client to bring it up to date
+with the master.])
+
+m4_p([dnl
+For applications that use the Base replication API, connecting to a
+new site in the replication group happens whenever the
+m4_refT(rep_message) returns m4_ref(DB_REP_NEWSITE). The application
+should assign the new site a local environment ID number, and all future
+messages from the site passed to m4_ref(rep_message) should include that
+environment ID number. It is possible, of course, for the application
+to be aware of a new site before the return of m4_ref(rep_message) (for
+example, applications using connection-oriented protocols are likely to
+detect new sites immediately, while applications using broadcast
+protocols may not).])
+
+m4_p([dnl
+Regardless, in applications supporting the dynamic addition of database
+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 m4_arg(cdata) parameter to the m4_refT(rep_start). The information
+referenced by m4_arg(cdata) is wrapped in the initial contact message
+sent by the new environment, and is provided to the existing members of
+the group using the m4_arg(rec) parameter returned by m4_ref(rep_message).
+If no additional information was provided for m4_db to forward to the
+existing members of the group, the m4_arg(data) field of the m4_arg(rec)
+parameter passed to the m4_refT(rep_message) will be NULL after
+m4_ref(rep_message) returns m4_ref(DB_REP_NEWSITE).])
+
+m4_p([dnl
+Replication Manager automatically distributes contact information using
+the mechanisms previously described.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/rep/partition.so b/db/docs_src/ref/rep/partition.so
new file mode 100644
index 000000000..193a44409
--- /dev/null
+++ b/db/docs_src/ref/rep/partition.so
@@ -0,0 +1,110 @@
+m4_comment([$Id: partition.so,v 1.6 2006/08/25 12:56:00 bostic Exp $])
+
+m4_ref_title(m4_db Replication,
+ Network partitions,, rep/trans, rep/faq)
+
+m4_p([dnl
+The m4_db replication implementation can be affected by network
+partitioning problems.])
+
+m4_p([dnl
+For example, consider a replication group with N members. The network
+partitions with the master on one side and more than N/2 of the sites
+on the other side. The sites on the side with the master will continue
+forward, and the master will continue to accept write queries for the
+databases. Unfortunately, the sites on the other side of the partition,
+realizing they no longer have a master, will hold an election. The
+election will succeed as there are more than N/2 of the total sites
+participating, and there will then be two masters for the replication
+group. Since both masters are potentially accepting write queries, the
+databases could diverge in incompatible ways.])
+
+m4_p([dnl
+If multiple masters are ever found to exist in a replication group, a
+master detecting the problem will return m4_ref(DB_REP_DUPMASTER). If
+the application sees this return, it should reconfigure itself as a
+client (by calling m4_ref(rep_start)), and then call for an election
+(by calling m4_ref(rep_elect)). The site that wins the election may be
+one of the two previous masters, or it may be another site entirely.
+Regardless, the winning system will bring all of the other systems into
+conformance.])
+
+m4_p([dnl
+As another example, consider a replication group with a master
+environment and two clients A and B, where client A may upgrade to
+master status and client B cannot. Then, assume client A is partitioned
+from the other two database environments, and it becomes out-of-date
+with respect to the master. Then, assume the master crashes and does
+not come back on-line. Subsequently, the network partition is restored,
+and clients A and B hold an election. As client B cannot win the
+election, client A will win by default, and in order to get back into
+sync with client B, possibly committed transactions on client B will be
+unrolled until the two sites can once again move forward together.])
+
+m4_p([dnl
+In both of these examples, there is a phase where a newly elected master
+brings the members of a replication group into conformance with itself
+so that it can start sending new information to them. This can result
+in the loss of information as previously committed transactions are
+unrolled.])
+
+m4_p([dnl
+In architectures where network partitions are an issue, applications
+may want to implement a heart-beat protocol to minimize the consequences
+of a bad network partition. As long as a master is able to contact at
+least half of the sites in the replication group, it is impossible for
+there to be two masters. If the master can no longer contact a
+sufficient number of systems, it should reconfigure itself as a client,
+and hold an election. Replication Manager does not currently
+implement such a feature, so this technique is only available to
+applications which use the Base replication API.])
+
+m4_p([dnl
+There is another tool applications can use to minimize the damage in
+the case of a network partition. By specifying an m4_arg(nsites)
+argument to m4_ref(rep_elect) that is larger than the actual number of
+database environments in the replication group, applications can keep
+systems from declaring themselves the master unless they can talk to
+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 m4_refT(rep_elect), then a system will have
+to be able to talk to at least 16 of the sites to declare itself the
+master.])
+
+m4_p([dnl
+Replication Manager uses the value of m4_arg(nsites) (configured by
+the m4_refT(rep_set_nsites)) for elections as well as in calculating how
+many acknowledgements to wait for when sending a
+m4_ref(DB_REP_PERMANENT) message. So this technique may be useful here
+as well, unless the application uses the m4_ref(DB_REPMGR_ACKS_ALL) or
+m4_ref(DB_REPMGR_ACKS_ALL_PEERS) acknowledgement policies.])
+
+m4_p([dnl
+Specifying a m4_arg(nsites) argument to m4_ref(rep_elect) that is
+smaller than the actual number of database environments in the
+replication group has its uses as well. For example, consider a
+replication group with 2 environments. If they are partitioned from
+each other, neither of the sites could ever get enough votes to become
+the master. A reasonable alternative would be to specify a
+m4_arg(nsites) argument of 2 to one of the systems and a m4_arg(nsites)
+argument of 1 to the other. That way, one of the systems could win
+elections even when partitioned, while the other one could not. This
+would allow one of the systems to continue accepting write
+queries after the partition.])
+
+m4_p([dnl
+In a 2-site group, Replication Manager reacts to the loss of
+communication with the master by assuming the master has crashed: the
+surviving client simply declares itself to be master. Thus it avoids
+the problem of the survivor never being able to get enough votes to
+prevail. But it does leave the group vulnerable to the risk of
+multiple masters, if both sites are running but cannot communicate.])
+
+m4_p([dnl
+These scenarios stress the importance of good network infrastructure in
+m4_db replicated environments. When replicating database environments
+over sufficiently lossy networking, the best solution may well be to
+pick a single master, and only hold elections when human intervention
+has determined the selected master is unable to recover at all.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/rep/pri.so b/db/docs_src/ref/rep/pri.so
new file mode 100644
index 000000000..90434f069
--- /dev/null
+++ b/db/docs_src/ref/rep/pri.so
@@ -0,0 +1,31 @@
+m4_comment([$Id: pri.so,v 1.7 2006/07/14 23:04:42 alanb Exp $])
+
+m4_ref_title(m4_db Replication,
+ Replication environment priorities,, rep/id, rep/app)
+
+m4_p([dnl
+Each database environment included in a replication group must have
+a priority, which specifies a relative ordering among the different
+environments in a replication group. This ordering is a factor in
+determining which environment will be selected as a new master in case
+the existing master fails. Both Replication Manager applications and
+applications which use the Base replication API should specify
+environment priorities.])
+
+m4_p([dnl
+Priorities must be a non-negative integer, but do not need to be unique
+throughout the replication group. A priority of 0 means the system can
+never become a master, regardless. Otherwise, larger valued priorities
+indicate a more desirable master. For example, if a replication group
+consists of three database environments, two of which are connected by
+an OC3 and the third of which is connected by a T1, the third database
+environment should be assigned a priority value which is lower than
+either of the other two.])
+
+m4_p([dnl
+Desirability of the master is first determined by the client having
+the most recent log records. Ties in log records are broken with
+the client priority. If both sites have the same number of log
+records and the same priority, one is selected at random.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/rep/trans.so b/db/docs_src/ref/rep/trans.so
new file mode 100644
index 000000000..edc53835b
--- /dev/null
+++ b/db/docs_src/ref/rep/trans.so
@@ -0,0 +1,303 @@
+m4_comment([$Id: trans.so,v 1.18 2006/08/24 17:58:53 bostic Exp $])
+
+m4_ref_title(m4_db Replication,
+ Transactional guarantees,, rep/bulk, rep/partition)
+
+m4_p([dnl
+It is important to consider replication in the context of the overall
+database environment's transactional guarantees. To briefly review,
+transactional guarantees in a non-replicated application are based on
+the writing of log file records to "stable storage", usually a disk
+drive. If the application or system then fails, the m4_db logging
+information is reviewed during recovery, and the databases are updated
+so that all changes made as part of committed transactions appear, and
+all changes made as part of uncommitted transactions do not appear. In
+this case, no information will have been lost.])
+
+m4_p([dnl
+If a database environment does not require the log be flushed to
+stable storage on transaction commit (using the m4_ref(DB_TXN_NOSYNC)
+flag to increase performance at the cost of sacrificing transactional
+durability), m4_db recovery will only be able to restore the system to
+the state of the last commit found on stable storage. In this case,
+information may have been lost (for example, the changes made by some
+committed transactions may not appear in the databases after recovery).])
+
+m4_p([dnl
+Further, if there is database or log file loss or corruption (for
+example, if a disk drive fails), then catastrophic recovery is
+necessary, and m4_db recovery will only be able to restore the system
+to the state of the last archived log file. In this case, information
+may also have been lost.])
+
+m4_p([dnl
+Replicating the database environment extends this model, by adding a
+new component to "stable storage": the client's replicated information.
+If a database environment is replicated, there is no lost information
+in the case of database or log file loss, because the replicated system
+can be configured to contain a complete set of databases and log records
+up to the point of failure. A database environment that loses a disk
+drive can have the drive replaced, and it can then rejoin the
+replication group.])
+
+m4_p([dnl
+Because of this new component of stable storage, specifying
+m4_ref(DB_TXN_NOSYNC) in a replicated environment no longer sacrifices
+durability, as long as one or more clients have acknowledged receipt of
+the messages sent by the master. Since network connections are often
+faster than local synchronous disk writes, replication becomes a way
+for applications to significantly improve their performance as well as
+their reliability.])
+
+m4_p([dnl
+The return status from the application's m4_arg(send) function must be
+set by the application to ensure the transactional guarantees the
+application wants to provide. Whenever the m4_arg(send) function
+returns failure, the local database environment's log is flushed as
+necessary to ensure that any information critical to database integrity
+is not lost. Because this flush is an expensive operation in terms of
+database performance, applications should avoid returning an error from
+the m4_arg(send) function, if at all possible.])
+
+m4_p([dnl
+The only interesting message type for replication transactional
+guarantees is when the application's m4_arg(send) function was called
+with the m4_ref(DB_REP_PERMANENT) flag specified. There is no reason
+for the m4_arg(send) function to ever return failure unless the
+m4_ref(DB_REP_PERMANENT) flag was specified -- messages without the
+m4_ref(DB_REP_PERMANENT) flag do not make visible changes to databases,
+and the m4_arg(send) function can return success to m4_db as soon as
+the message has been sent to the client(s) or even just copied to local
+application memory in preparation for being sent.])
+
+m4_p([dnl
+When a client receives a m4_ref(DB_REP_PERMANENT) message, the client
+will flush its log to stable storage before returning (unless the client
+environment has been configured with the m4_ref(DB_TXN_NOSYNC) option).
+If the client is unable to flush a complete transactional record to disk
+for any reason (for example, there is a missing log record before the
+flagged message), the call to the m4_refT(rep_message) on the client
+will return m4_ref(DB_REP_NOTPERM) and return the LSN of this record
+to the application in the m4_arg(ret_lsnp) parameter.
+The application's client or master
+message handling loops should take proper action to ensure the correct
+transactional guarantees in this case. When missing records arrive
+and allow subsequent processing of previously stored permanent
+records, the call to the m4_refT(rep_message) on the client will
+return m4_ref(DB_REP_ISPERM) and return the largest LSN of the
+permanent records that were flushed to disk. Client applications
+can use these LSNs to know definitively if any particular LSN is
+permanently stored or not.])
+
+m4_p([dnl
+An application relying on a client's ability to become a master and
+guarantee that no data has been lost will need to write the m4_arg(send)
+function to return an error whenever it cannot guarantee the site that
+will win the next election has the record. Applications not requiring
+this level of transactional guarantees need not have the m4_arg(send)
+function return failure (unless the master's database environment has
+been configured with m4_ref(DB_TXN_NOSYNC)), as any information critical
+to database integrity has already been flushed to the local log before
+m4_arg(send) was called.])
+
+m4_p([dnl
+To sum up, the only reason for the m4_arg(send) function to return
+failure is when the master database environment has been configured to
+not synchronously flush the log on transaction commit (that is,
+m4_ref(DB_TXN_NOSYNC) was configured on the master), the
+m4_ref(DB_REP_PERMANENT) flag is specified for the message, and the
+m4_arg(send) function was unable to determine that some number of
+clients have received the current message (and all messages preceding
+the current message). How many clients need to receive the message
+before the m4_arg(send) function can return success is an application
+choice (and may not depend as much on a specific number of clients
+reporting success as one or more geographically distributed clients).])
+
+m4_p([dnl
+If, however, the application does require on-disk durability on the master,
+the master should be configured to synchronously flush the log on commit.
+If clients are not configured to synchronously flush the log,
+that is, if a client is running with m4_ref(DB_TXN_NOSYNC) configured,
+then it is up to the application to reconfigure that client
+appropriately when it becomes a master. That is, the
+application must explicitly call m4_ref(dbenv_set_flags) to
+disable asynchronous log flushing as part of re-configuring
+the client as the new master.])
+
+m4_p([dnl
+Of course, it is important to ensure that the replicated master and
+client environments are truly independent of each other. For example,
+it does not help matters that a client has acknowledged receipt of a
+message if both master and clients are on the same power supply, as the
+failure of the power supply will still potentially lose information.])
+
+m4_p([dnl
+Configuring your replication-based application to achieve the proper
+mix of performance and transactional guarantees can be complex. In
+brief, there are a few controls an application can set to configure the
+guarantees it makes: specification of m4_ref(DB_TXN_NOSYNC) for the
+master environment, specification of m4_ref(DB_TXN_NOSYNC) for the
+client environment, the priorities of different sites participating in
+an election, and the behavior of the application's m4_arg(send)
+function.])
+
+m4_p([dnl
+Applications using Replication Manager are free to use
+m4_ref(DB_TXN_NOSYNC) at the master and/or clients as they see fit. The
+behavior of the m4_arg(send) function that Replication Manager provides
+on the application's behalf is determined by an "acknowledgement
+policy", which is configured by the m4_refT(repmgr_set_ack_policy).
+Clients always send acknowledgements for m4_ref(DB_REP_PERMANENT)
+messages (unless the acknowledgement policy in effect indicates that the
+master doesn't care about them). For a m4_ref(DB_REP_PERMANENT)
+message, the master blocks the sending thread until either it receives
+the proper number of acknowledgements, or the m4_ref(DB_REP_ACK_TIMEOUT)
+expires. In the case of timeout, Replication Manager returns an error
+code from the m4_arg(send) function, causing m4_db to flush the
+transaction log before returning to the application, as previously
+described. The default acknowledgement policy is
+m4_ref(DB_REPMGR_ACKS_QUORUM), which ensures that the effect of a
+permanent record remains durable following an election.])
+
+m4_p([dnl
+First, it is rarely useful to write and synchronously flush the log when
+a transaction commits on a replication client. It may be useful where
+systems share resources and multiple systems commonly fail at the same
+time. By default, all m4_db database environments, whether master or
+client, synchronously flush the log on transaction commit or prepare.
+Generally, replication masters and clients turn log flush off for
+transaction commit using the m4_ref(DB_TXN_NOSYNC) flag.])
+
+m4_p([dnl
+Consider two systems connected by a network interface. One acts as the
+master, the other as a read-only client. The client takes over as
+master if the master crashes and the master rejoins the replication
+group after such a failure. Both master and client are configured to
+not synchronously flush the log on transaction commit (that is,
+m4_ref(DB_TXN_NOSYNC) was configured on both systems). The
+application's m4_arg(send) function never returns failure to the m4_db
+library, simply forwarding messages to the client (perhaps over a
+broadcast mechanism), and always returning success. On the client, any
+m4_ref(DB_REP_NOTPERM) returns from the client's m4_refT(rep_message)
+are ignored, as well. This system configuration has excellent
+performance, but may lose data in some failure modes.])
+
+m4_p([dnl
+If both the master and the client crash at once, it is possible to lose
+committed transactions, that is, transactional durability is not being
+maintained. Reliability can be increased by providing separate power
+supplies for the systems and placing them in separate physical locations.])
+
+m4_p([dnl
+If the connection between the two machines fails (or just some number
+of messages are lost), and subsequently the master crashes, it is
+possible to lose committed transactions. Again, because transactional
+durability is not being maintained. Reliability can be improved in a
+couple of ways:])
+
+m4_nlistbegin
+
+m4_nlist([dnl
+Use a reliable network protocol (for example, TCP/IP instead of UDP).])
+
+m4_nlist([dnl
+Increase the number of clients and network paths to make it less likely
+that a message will be lost. In this case, it is important to also make
+sure a client that did receive the message wins any subsequent election.
+If a client that did not receive the message wins a subsequent election,
+data can still be lost.])
+
+m4_nlistend
+
+m4_p([dnl
+Further, systems may want to guarantee message delivery to the client(s)
+(for example, to prevent a network connection from simply discarding
+messages). Some systems may want to ensure clients never return
+out-of-date information, that is, once a transaction commit returns
+success on the master, no client will return old information to a
+read-only query. Some of the following changes may be used to address
+these issues:])
+
+m4_nlistbegin
+
+m4_nlist([dnl
+Write the application's m4_arg(send) function to not return to m4_db
+until one or more clients have acknowledged receipt of the message.
+The number of clients chosen will be dependent on the application: you
+will want to consider likely network partitions (ensure that a client
+at each physical site receives the message) and geographical diversity
+(ensure that a client on each coast receives the message).])
+
+m4_nlist([dnl
+Write the client's message processing loop to not acknowledge receipt
+of the message until a call to the m4_refT(rep_message) has returned
+success. Messages resulting in a return of m4_ref(DB_REP_NOTPERM) from
+the m4_refT(rep_message) mean the message could not be flushed to the
+client's disk. If the client does not acknowledge receipt of such
+messages to the master until a subsequent call to the
+m4_refT(rep_message) returns m4_ref(DB_REP_ISPERM) and the LSN
+returned is at least as large as this message's LSN, then the master's
+m4_arg(send) function will not return success to the m4_db library.
+This means the thread committing the transaction on the master will not
+be allowed to proceed based on the transaction having committed until
+the selected set of clients have received the message and consider it
+complete.
+
+m4_p([dnl
+Alternatively, the client's message processing loop could acknowledge
+the message to the master, but with an error code indicating that the
+application's m4_arg(send) function should not return to the m4_db
+library until a subsequent acknowledgement from the same client
+indicates success.])
+
+m4_p([dnl
+The application send callback function invoked by m4_db contains
+an LSN of the record being sent (if appropriate for that record).
+When m4_refT(rep_message) returns indicators that a permanent
+record has been written then it also returns the maximum LSN of the
+permanent record written.])])
+
+m4_nlistend
+
+m4_p([dnl
+There is one final pair of failure scenarios to consider. First, it is
+not possible to abort transactions after the application's m4_arg(send)
+function has been called, as the master may have already written the
+commit log records to disk, and so abort is no longer an option.
+Second, a related problem is that even though the master will attempt
+to flush the local log if the m4_arg(send) function returns failure,
+that flush may fail (for example, when the local disk is full). Again,
+the transaction cannot be aborted as one or more clients may have
+committed the transaction even if m4_arg(send) returns failure. Rare
+applications may not be able to tolerate these unlikely failure modes.
+In that case the application may want to:])
+
+m4_nlistbegin
+m4_nlist([dnl
+Configure the master to do always local synchronous commits (turning
+off the m4_ref(DB_TXN_NOSYNC) configuration). This will decrease
+performance significantly, of course (one of the reasons to use
+replication is to avoid local disk writes.) In this configuration,
+failure to write the local log will cause the transaction to abort in
+all cases.])
+
+m4_nlist([dnl
+Do not return from the application's m4_arg(send) function under any
+conditions, until the selected set of clients has acknowledged the
+message. Until the m4_arg(send) function returns to the m4_db library,
+the thread committing the transaction on the master will wait, and so
+no application will be able to act on the knowledge that the transaction
+has committed.])
+
+m4_nlistend
+
+m4_p([dnl
+The final alternative for applications concerned about these types of
+failure is to use distributed transactions as an alternative means of
+replication, guaranteeing full consistency at the cost of implementing
+a Global Transaction Manager and performing two-phase commit across
+multiple m4_db database environments. More information on this topic
+can be found in the m4_link(M4RELDIR/ref/xa/intro, [Distributed
+Transactions]) chapter.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/rpc/client.so b/db/docs_src/ref/rpc/client.so
new file mode 100644
index 000000000..1639d6268
--- /dev/null
+++ b/db/docs_src/ref/rpc/client.so
@@ -0,0 +1,87 @@
+m4_comment([$Id: client.so,v 1.12 2003/10/18 19:16:07 bostic Exp $])
+
+m4_ref_title(RPC Client/Server,
+ Client program, @RPC client, rpc/intro, rpc/server)
+
+m4_p([dnl
+Changing a m4_db application to remotely call a server program requires
+only a few changes on the client side:])
+
+m4_nlistbegin
+m4_nlist([dnl
+The client application must create and use a m4_db environment; that
+is, it cannot simply call the m4_ref(dbh_create) function, but must
+first call the m4_ref(dbenv_create) function to create an environment
+in which the database will live.])
+
+m4_nlist([dnl
+The client application must call m4_ref(dbenv_create) using the
+m4_ref(DB_RPCCLIENT) flag.])
+
+m4_nlist([dnl
+The client application must call the additional m4_ref(DbEnv) method
+m4_ref(dbenv_set_rpc_server) to specify the database server. This call must
+be made before opening the environment with the m4_ref(dbenv_open)
+call.])
+m4_nlistend
+
+m4_p([dnl
+The client application provides a few pieces of information to m4_db as
+part of the m4_ref(dbenv_set_rpc_server) call:])
+
+m4_nlistbegin
+m4_nlist([dnl
+A client structure. Applications wanting to control their own client
+structures can pass one in, and m4_db will use it to connect to the
+server. Most applications will not make use of this argument and should pass
+in NULL. If this argument is used, the hostname and client timeout
+arguments are ignored. Applications using this mechanism must
+create their client structures using DB_RPC_SERVERPROG as the program
+number and DB_RPC_SERVERVERS as the version number.])
+m4_nlist([dnl
+The hostname of the server. The hostname format is not specified by
+m4_db, but must be in a format acceptable to the local network support
+-- specifically, the RPC clnt_create interface.])
+m4_nlist([The client
+timeout. This is the number of seconds the client will wait for the
+server to respond to its requests. A default is used if this value is
+zero.])
+m4_nlist([dnl
+The server timeout. This is the number of seconds the server will allow
+client resources to remain idle before releasing those resources. The
+resources this applies to are transactions and cursors because those
+objects hold locks; and if a client dies, the server needs to release
+those resources in a timely manner. This value is really a hint to the
+server because the server may choose to override this value with its
+own.])
+m4_nlistend
+
+m4_p([dnl
+The only other item of interest to the client is the home directory
+that is given to the m4_ref(dbenv_open) call.
+The server is started with a list of allowed home directories.
+The client must use one of those names (where a name is the last
+component of the home directory). This allows the pathname structure
+on the server to change without client applications needing to be
+aware of it.])
+
+m4_p([dnl
+Once the m4_ref(dbenv_set_rpc_server) call has been made, the client is
+connected to the server, and all subsequent m4_db
+operations will be forwarded to the server. The client does not need to
+be otherwise aware that it is using a database server rather than
+accessing the database locally.])
+
+m4_p([dnl
+It is important to realize that the client portion of the m4_db library
+acts as a simple conduit, forwarding m4_db interface arguments to the
+server without interpretation. This has two important implications.
+First, all pathnames must be specified relative to the server. For
+example, the home directory and other configuration information passed
+by the application when creating its environment or databases must be
+pathnames for the server, not the client system. In addition, because
+there is no logical bundling of operations at the server, performance
+is usually significantly less than when m4_db is embedded within the
+client's address space, even if the RPC is to a local address.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/rpc/faq.so b/db/docs_src/ref/rpc/faq.so
new file mode 100644
index 000000000..d3968b565
--- /dev/null
+++ b/db/docs_src/ref/rpc/faq.so
@@ -0,0 +1,20 @@
+m4_comment([$Id: faq.so,v 1.3 2004/10/05 16:44:35 bostic Exp $])
+
+m4_ref_title(RPC Client/Server, RPC FAQ, @RPC FAQ, rpc/server, tcl/intro)
+
+m4_nlistbegin
+
+m4_nlist([m4_bold([dnl
+I get the m4_ref(DB_NOSERVER) error back from a
+m4_ref(dbenv_set_rpc_server) call that is using the default client
+timeout value.])])
+
+m4_p([dnl
+Some systems have a default RPC client timeout value that is too small,
+and the client times out the request before the server has a chance to
+process and reply. If you get this error, try explicitly setting the
+client timeout value.])
+
+m4_nlistend
+
+m4_page_footer
diff --git a/db/docs_src/ref/rpc/intro.so b/db/docs_src/ref/rpc/intro.so
new file mode 100644
index 000000000..26e4f439d
--- /dev/null
+++ b/db/docs_src/ref/rpc/intro.so
@@ -0,0 +1,92 @@
+m4_comment([$Id: intro.so,v 1.18 2006/11/13 18:05:03 bostic Exp $])
+
+m4_ref_title(RPC Client/Server, Introduction to the RPC client/server,
+ introduction to @rpc client/server, sequence/intro, rpc/client)
+
+m4_p([dnl
+m4_db includes an implementation of a client-server protocol using Sun
+Microsystem's Remote Procedure Call Protocol. RPC support is
+available only for UNIX systems, and is not included in the m4_db library by
+default, but must be enabled during configuration. See
+m4_link(M4RELDIR/ref/build_unix/conf, Configuring m4_db) for more
+information. For more information on RPC itself, see your UNIX system
+documentation or m4_italic([RPC: Remote Procedure Call Protocol
+Specification, RFC1831, Sun Microsystems, Inc., USC-ISI]).])
+
+m4_p([dnl
+Only some of the complete m4_db functionality is available when using RPC.
+The following functionality is available:])
+
+m4_nlistbegin
+
+m4_nlistns([dnl
+The m4_ref(dbenv_create) function and the m4_ref(DbEnv) handle
+methods.])
+
+m4_nlistns([dnl
+The m4_ref(dbh_create) function and the m4_ref(Db) handle methods.])
+
+m4_nlistns([dnl
+The m4_ref(txn_begin), m4_ref(txn_commit), and m4_refT(txn_abort)s.])
+
+m4_nlistend
+
+m4_p([dnl
+The m4_ref(DB_THREAD) flag to the m4_ref(dbenv_open) and m4_refT(dbh_open)s
+may not be specified, that is, m4_ref(DbEnv) and m4_ref(Db) handles used
+in RPC clients are not free-threaded.])
+
+m4_p([dnl
+The RPC client/server code does not support any of the user-defined
+comparison or allocation functions; for example, an application using
+the RPC support may not specify its own Btree comparison function. If
+your application requires only those portions of m4_db, then using RPC
+is fairly simple. If your application requires other m4_db
+functionality, such as direct access to locking, logging or shared
+memory buffer memory pools, then your application cannot use the RPC
+support.])
+
+m4_p([dnl
+Although a client cannot specify a callback, m4_db does support the
+m4_ref(dbh_associate) call in a limited manner. A client program
+wanting to use a secondary index may do so only in a read-only fashion.
+The primary and secondary databases must have been created locally on
+the server machine. Client programs must then open both the primary
+and secondary databases with the m4_ref(DB_RDONLY) flag set. The client
+must also specify a NULL callback for the m4_ref(dbh_associate) call.])
+
+m4_p([dnl
+The m4_db RPC code requires that the client and server programs be
+running the exact same version numbers.
+The m4_db RPC protocol version number is tied to the m4_db major
+and minor release numbers.
+As such, the server program will reject requests from clients
+using a different version number.])
+
+m4_p([m4_bold([dnl
+The m4_db RPC support does not provide any security or authentication of
+any kind.]) Sites needing any kind of data security measures must modify
+the client and server code to provide whatever level of security they
+require.])
+
+m4_p([dnl
+One particularly interesting use of the RPC support is for debugging m4_db
+applications. The seamless nature of the interface means that with very
+minor application code changes, an application can run outside of the
+m4_db address space, making it far easier to track down many types of
+errors -- such as memory misuse.])
+
+m4_p([dnl
+Using the RPC mechanisms in m4_db involves two basic steps:])
+
+m4_nlistbegin
+m4_nlist([dnl
+Modify your m4_db application to act as a client and call the RPC
+server.])
+
+m4_nlistns([dnl
+Run the m4_ref(berkeley_db_svc) server program on the system where the
+database resides.])
+m4_nlistend
+
+m4_page_footer
diff --git a/db/docs_src/ref/rpc/server.so b/db/docs_src/ref/rpc/server.so
new file mode 100644
index 000000000..ba6c92ec8
--- /dev/null
+++ b/db/docs_src/ref/rpc/server.so
@@ -0,0 +1,48 @@
+m4_comment([$Id: server.so,v 1.8 2002/06/17 18:38:43 bostic Exp $])
+
+m4_ref_title(RPC Client/Server,
+ Server program, @RPC server, rpc/client, rpc/faq)
+
+m4_p([dnl
+The m4_db server utility, m4_ref(berkeley_db_svc), handles all the
+client application requests.])
+
+m4_p([dnl
+Currently, the m4_ref(berkeley_db_svc) utility is single-threaded,
+limiting the number of requests that it can handle. Modifying the
+server implementation to run in multithread or multiprocess mode
+requires modification of the server code automatically generated by the
+rpcgen program.])
+
+m4_p([dnl
+There are two different types of timeouts used by m4_ref(berkeley_db_svc).
+The first timeout (which can be modified within some constraints by the
+client application), is the resource timeout. When clients use
+transactions or cursors, those resources hold locks in m4_db across calls
+to the server. If a client application dies or loses its connection to
+the server while holding those resources, it prevents any other client
+from acquiring them. Therefore, it is important to detect that a client
+has not used a resource for some period of time and release them. In the
+case of transactions, the server aborts the transaction. In the case of
+cursors, the server closes the cursor.])
+
+m4_p([dnl
+The second timeout is an idle timeout. A client application may remain
+idle with an open handle to an environment and a database. Doing so
+simply consumes some memory; it does not hold locks. However, the m4_db
+server may want to eventually reclaim resources if a client dies or
+remains disconnected for a long period of time, so there is a separate
+idle timeout for open m4_db handles.])
+
+m4_p([dnl
+The list of home directories specified to m4_ref(berkeley_db_svc) are
+the only ones client applications are allowed to use. When
+m4_ref(berkeley_db_svc) is started, it is given a list of pathnames.
+Clients are expected to specify the name of the home directory (defined
+as the last component in the directory pathname) as the database
+environment they are opening. In this manner, clients need to know only
+the name of their home environment; not its full pathname on the server
+machine. This means, of course, that only one environment of a
+particular name is allowed on the server at any given time.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/sequence/intro.so b/db/docs_src/ref/sequence/intro.so
new file mode 100644
index 000000000..e9e127e12
--- /dev/null
+++ b/db/docs_src/ref/sequence/intro.so
@@ -0,0 +1,40 @@
+m4_comment([$Id: intro.so,v 1.5 2006/11/13 18:05:03 bostic Exp $])
+
+m4_ref_title(Sequences,
+ Introduction to sequences,
+ introduction to @sequences, txn/limits, rpc/intro)
+
+m4_p([dnl
+Sequences provide an arbitrary number of persistent objects that return
+an increasing or decreasing sequence of integers. Opening a sequence
+handle associates it with a record in a database. The handle can
+maintain a cache of values from the database so that a database update
+is not needed as the application allocates a value.])
+
+m4_p([dnl
+A sequence is stored as a record pair in a database. The database may
+be of any type, but may not have been configured to support duplicate
+data items. The sequence is referenced by the key used when the
+sequence is created, therefore the key must be compatible with the
+underlying access method. If the database stores fixed-length records,
+the record size must be at least 64 bytes long.])
+
+m4_p([dnl
+Since a sequence handle is opened using a database handle, the use of
+transactions with the sequence must follow how the database handle was
+opened. In other words, if the database handle was opened within a
+transaction, operations on the sequence handle must use transactions.
+Of course, if sequences are cached, not all operations will actually
+trigger a transaction.])
+
+m4_p([dnl
+For the highest concurrency, caching should be used and the
+m4_ref(DB_AUTO_COMMIT) and m4_ref(DB_TXN_NOSYNC) flags should be
+specified to the m4_refT(seq_get) call. If the allocation of the
+sequence value must be part of a transaction, and rolled back if the
+transaction aborts, then no caching should be specified and the
+transaction handle must be passed to the m4_ref(seq_get) method.])
+
+include(seq/m4.methods)
+
+m4_page_footer
diff --git a/db/docs_src/ref/spell.ok b/db/docs_src/ref/spell.ok
new file mode 100644
index 000000000..2cf5042ec
--- /dev/null
+++ b/db/docs_src/ref/spell.ok
@@ -0,0 +1,1453 @@
+AAAAA
+AAAAB
+ABCDEFGHIJ
+ABCDEFGHIJKL
+ABCDEFGHIJabcdefghij
+ABabcdefghij
+ACI
+ACK
+ACKS
+ACLs
+AE
+AES
+AFS
+AIX
+ALLDB
+AMD
+API
+API's
+APIs
+ARG
+AUTOEXEC
+AUTOREMOVE
+AccessController
+AccessExample
+Ake
+Andrade
+Andreas
+Antonin
+Antoon
+Applet
+Architecting
+Autoconf
+BDB
+BDBApp
+BLOBs
+BREWDIR
+BSP
+BSPs
+BTREE
+BUF
+Barreto
+Bayer
+BerkeleyDB
+BerkeleyDBXML
+Bosselaers
+Bostic
+Btree
+Btrees
+CAE
+CC
+CCC
+CD
+CDB
+CFLAGS
+CGI
+CHKPOINT
+CHKSUM
+CIFS
+CLASSPATH
+COMPAT
+CONF
+CONFIG
+COREAPI
+COREPACKAGE
+CP
+CPAN
+CPPFLAGS
+CR
+CSL
+CURLSN
+CXX
+CXXFLAGS
+Carges
+ClassLoader
+ClassNotFoundException
+Co
+CodeWarrior
+Comput
+CreateFile
+CrossWind
+CurrentTransaction
+Cygwin
+DBC
+DBINFO
+DBRM
+DBT
+DBTYPE
+DBX
+DBXML
+DBcursor
+DEFG
+DELAYCLIENT
+DIR
+DIRFREE
+DIRLIST
+DLL
+DLLs
+DNS
+DUP
+DUPMASTER
+DUPSORT
+Darwin's
+DataIndex
+DataInput
+DataOutput
+DataStore
+DatabaseConfig
+DatabaseEntry
+DatabaseException
+DatabaseType
+Db
+DbAppDispatch
+DbAppendRecno
+DbBtreeCompare
+DbBtreePrefix
+DbConstants
+DbDeadlockException
+DbEnv
+DbEnvFeedback
+DbEnvFeedbackHandler
+DbErrcall
+DbErrorHandler
+DbException
+DbFeedback
+DbFeedbackHandler
+DbInfo
+DbLock
+DbLockNotGrantedException
+DbLog
+DbLogc
+DbLsn
+DbMemoryException
+DbMpool
+DbMpoolFile
+DbMultipleDataIterator
+DbMultipleKeyDataIterator
+DbMultipleRecnoDataIterator
+DbRunRecoveryException
+DbSecondaryKeyCreate
+DbTxn
+DbTxnMgr
+Dbc
+Dbm
+Dbt
+DeadlockException
+Djava
+Dsleepycat
+Dwyer
+EACCES
+EACCESS
+EAGAIN
+EE
+EFBIG
+EID
+EINTR
+EINVAL
+EIO
+EJB
+ENOLCK
+ENOMEM
+ENV
+EOF
+EPOCROOT
+ERL
+EXCL
+EXE
+EXT
+EXTSHM
+EmployeeNumber
+EntityBinding
+EntryBinding
+Env
+EnvironmentConfig
+ExceptionUnwrapper
+Exp
+FILEOPEN
+FINFO
+FIOFLUSH
+FIORENAME
+FIOSYNC
+FIPS
+FIXEDLEN
+FP
+FSYNC
+FUNC
+FileNotFoundException
+Filesystem
+ForeignKeyDeleteAction
+ForeignKeyIndex
+ForeignKeyNullifier
+FreeBSD
+GB
+GCCE
+GID
+GIDs
+GRPNO
+GT
+GTM
+GTMs
+GetTempPath
+Greybird
+Guttman
+HOLDELECTION
+HTML
+Hadzilaco
+Hsearch
+IA
+IDE
+IDs
+ILP
+INCLUDEDIR
+INIT
+INMEMORY
+INSTALLHOME
+IOINFO
+IP
+IPC
+IREAD
+IRGRP
+IRIX
+IRUSR
+IRW
+IRead
+ISI
+ISPERM
+IWGRP
+IWR
+IWRITE
+IWUSR
+IWrite
+IllegalArgumentException
+Itanium
+JDK
+JDO
+JE
+JINI
+JNI
+JOINENV
+JSP
+JSR
+JVM
+JoinConfig
+KB
+KEYEMPTY
+KEYEXIST
+KEYFIRST
+KEYLAST
+Kalash
+Kaufmann
+LARGEFILE
+LD
+LDAP
+LDFLAGS
+LF
+LIB
+LIBS
+LIBTP
+LIBTSO
+LMID
+LOC
+LOCKDOWN
+LOCKTAB
+LOGSONLY
+LP
+LSN
+LSNs
+LT
+LWP
+Libtool
+Libtool's
+Linux
+ListIterator
+Litwin
+LockFile
+Longman
+MACOSX
+MAJORMINOR
+MALLOC
+MB
+MC
+MEM
+MFC
+MINORd
+MMP
+MP
+MPOOL
+MPOOLFILE
+MULTIVERSION
+MUTEX
+MVCC
+Makoto
+Margo
+MarshalledTupleEntry
+Matsumoto
+MemoryException
+Mersenne
+Microsystem's
+Microsystems
+MinGW
+Mon
+Mpool
+MultiByteToWideChar
+MultipleDataEntry
+MultipleKeyDataEntry
+MultipleRecnoDataEntry
+Multithreaded
+Mutex
+Mutexes
+MyDb
+MySQL
+NAMEs
+NEWMASTER
+NEWSITE
+NG
+NL
+NN
+NNNNN
+NOAUTOINIT
+NODUP
+NODUPDATA
+NOFILE
+NOKIA
+NOLOCKING
+NOMMAP
+NOOVERWRITE
+NOPANIC
+NOSERVER
+NOSYNC
+NOTFOUND
+NOTGRANTED
+NOTHELD
+NOTPERM
+NOWAIT
+NT
+NUMA
+Nadene
+Ndbm
+Nishimura
+NoClassDefFoundError
+Notheld
+NxN
+OC
+OCT
+ODMG
+OPENFILES
+OPENINFO
+OSF
+OSO
+Ob
+Ok
+OpenC
+OpenLinux
+OutOfMemoryError
+PAGELOCAL
+PENTIUM
+PENTIUMgnu
+PGNO
+PHP
+PII
+PL
+POSIX
+PPC
+PREV
+PRJ
+PWRITE
+Part's
+PartBinding
+PartData
+PartKey
+PartKeyBinding
+PartNumber
+Pathan
+Paulo
+Pentium
+Perl
+PopulateDatabase
+Prebuilt
+PrimaryKeyAssigner
+PrintDatabase
+QNX
+QNX's
+RB
+RDONLY
+README
+REALLOC
+RECNO
+RECNUM
+RECORDCOUNT
+RELDIR
+REP
+REPMGR
+REREQUEST
+REVSPLITOFF
+RFC
+RM
+RMW
+RP
+RPC
+RPCCLIENT
+RTP
+RUNLINK
+RUNRECOVERY
+RW
+Recno
+RecordNumberBinding
+ReiserFS
+Reuter
+Rijmen
+Rijndael
+RunRecoveryException
+RuntimeExceptionWrapper
+SAPI
+SCO
+SDK
+SDK's
+SERVERPROG
+SERVERVERS
+SGI
+SHA
+SHLIB
+SMB
+SONAME
+SONAMEs
+SPR
+SQL
+SSN
+STARTUPDONE
+STAT
+STDC
+STL
+SampleDatabase
+SampleViews
+SecondaryConfig
+SecondaryDatabase
+SecondaryKeyCreator
+SerialBinding
+SerialSerialBinding
+SerialSerialKeyCreator
+Servlet
+ShipmentBinding
+ShipmentByPartKeyCreator
+ShipmentBySupplierKeyCreator
+ShipmentData
+ShipmentKey
+ShipmentKeyBinding
+Shopway
+Sleepycat
+Sleepycat's
+Solaris
+SortedMap
+SortedSet
+Sourceforge
+Sparc
+Stettner
+Stonebraker
+StoredClassCatalog
+StoredCollection
+StoredCollections
+StoredEntrySet
+StoredIterator
+StoredList
+StoredMap
+StoredSortedEntrySet
+StoredSortedKeySet
+StoredSortedMap
+StoredSortedValueSet
+StoredValueSet
+SuSE
+Subcategory
+SunOS
+SupplierBinding
+SupplierByCityKeyCreator
+SupplierData
+SupplierKey
+SupplierKeyBinding
+SupplierNumber
+Surv
+Svr
+Symbian
+TCL
+TCLDEBUG
+TCLMAJOR
+TCLMINOR
+TCLSH
+TESTDIR
+TMP
+TMPDIR
+TMSCOUNT
+TMSNAME
+TODO
+TRUNC
+TSFS
+TSL
+TUXCONFIG
+TXN
+TXNAPP
+TXNMGR
+Takuji
+Tcl
+Tcl's
+TempFolder
+Tk
+TransactionRunner
+TransactionWorker
+Tunables
+TupleBinding
+TupleInput
+TupleMarshalledBinding
+TupleOutput
+TupleSerialBinding
+TupleSerialKeyCreator
+Txn
+UCB
+UDEB
+UDP
+UI
+UNICODE
+UNMAP
+UREL
+URLClassLoader
+USERMEM
+UTF
+UX
+Unicode
+UnsatisfiedLinkError
+UnsupportedOperationException
+Unterauer
+VC
+VERSIONd
+VI
+VLDB
+VM
+VX
+VxWorks
+WC
+WCE
+WINSCW
+WRITECURSOR
+WideCharToMultiByte
+Witold
+Woverloaded
+XA
+XDR
+XIDDATASIZE
+XML
+XO
+XP
+XXX
+Xchange
+Xerces
+YIELDCPU
+Yigit
+ZZZZZ
+abc
+abcde
+abcdefghij
+abcdefghijABCDEFGHIJ
+abcdefghijabcdefghij
+abortTransaction
+abs
+ac
+ack
+acknowledgement
+acknowledgements
+aclocal
+addAll
+addParts
+addShipments
+addSuppliers
+addr
+addrem
+adj
+admin
+ai
+aix
+alanb
+alexg
+alloc
+ansic
+ap
+api
+apis
+app
+appDispatch
+appexit
+appinit
+applet
+applets
+applog
+apprec
+apps
+appsignals
+apxs
+architected
+arg
+argc
+argp
+args
+argv
+armv
+aspx
+asr
+autocommit
+autoconf
+autoconfiguration
+autoconfigure
+autop
+awk
+backtrace
+bam
+bcd
+bdb
+bdbread
+beasys
+beginTransaction
+berkdb
+berkeley
+bi
+bigfile
+bigpic
+bindir
+bostic
+bottlenecked
+brtl
+bsize
+bt
+btree
+btstat
+buf
+buildtms
+bulletbegin
+bulletend
+byteorder
+bytestring
+bytestrings
+byteswapped
+bzero
+cachesize
+cadjust
+callback
+calloc
+camelize
+cbold
+cc
+ccontrol
+cd
+cdata
+cde
+cdel
+cdsgroup
+cerr
+ch
+changelog
+chatr
+checkpointing
+chgpg
+chmod
+cityKeyBinding
+ckp
+cksum
+classpath
+clib
+clnt
+cmp
+cmpdi
+cnt
+co
+codegen
+com
+comm
+commitTransaction
+comp
+compareDuplicates
+compat
+condattr
+conf
+config
+const
+containsAll
+containsKey
+contrib
+conv
+copypage
+cp
+cpio
+cput
+crdel
+createSecondaryKey
+crypto
+cs
+csh
+ctype
+curadj
+curclose
+curdel
+curdup
+curget
+curput
+curslist
+cxx
+datadir
+datafiles
+datastore
+dave
+db
+db's
+dbAppendRecno
+dbc
+dbdemo
+dbe
+dbenv
+dbenvp
+dberr
+dbexamples
+dbh
+dbhome
+dbinc
+dbinfo
+dbis
+dbisnot
+dbkill
+dbm
+dbopen
+dbp
+dbreg
+dbremove
+dbrename
+dbsizes
+dbt
+dbx
+dbxml
+dc
+dd
+dda
+deaddbg
+def
+del
+delext
+delim
+descheduled
+deserialized
+destructors
+dev
+devenv
+diffs
+dir
+dirfree
+dirlist
+dirname
+diskspace
+dist
+distrib
+dlen
+dll
+dlopen
+dnl
+doPrivileged
+doWork
+doc
+docdir
+docs
+dosFs
+downloadable
+downtime
+dropdown
+dso
+dsp
+dsw
+dumpload
+dup
+duplexed
+dyld
+eMbedded
+eacces
+eagain
+ef
+eg
+eid
+eidp
+embeddable
+endian
+endianness
+enomem
+entrySet
+entryToObject
+env
+envid
+envopen
+envvar
+eo
+epoc
+errcall
+errfile
+errno
+errorInfo
+errorret
+errpfx
+errx
+excl
+exe
+ext
+extentsize
+failchk
+failover
+faq
+fbtbc
+fclose
+fcntl
+fcreate
+fd
+fdatasync
+fe
+ff
+ffactor
+fget
+fi
+fid
+fids
+fileID
+fileid
+fileids
+fileopen
+fileops
+filesys
+filesystem
+filesystems
+findClass
+firstname
+flushcommit
+flushcommits
+foo
+fopen
+forName
+fprintf
+fput
+freebsd
+freedata
+freelist
+fsLib
+fset
+fsflush
+fsync
+ftok
+ftruncate
+ftype
+func
+funet
+gburd
+gbytes
+gcc
+gdb
+gen
+getCause
+getClassCatalog
+getClassInfo
+getCurrent
+getInstance
+getPartMap
+getPrimitiveBinding
+getSupplierEntrySet
+getinfo
+getswap
+gettype
+gh
+gigabytes
+globaldev
+gmf
+grep
+greybird
+groupalloc
+gt
+gz
+gzipped
+handheld
+handle's
+handson
+hasPrevious
+hflag
+hl
+hm
+hmac
+homeDir
+hostaddr
+hostname
+hostp
+hotbackup
+hotfail
+hpux
+hsearch
+htm
+html
+http
+httpd
+hw
+ibmcxx
+ic
+idef
+idefz
+ids
+ifdef
+ifelse
+inc
+incfirst
+includedir
+indentv
+infodir
+ini
+init
+initially
+inmem
+inode
+insdel
+instanceof
+int
+interoperation
+introae
+io
+ioinfo
+iostream
+irix
+isalive
+isolatability
+java
+javac
+javadoc
+javas
+javasoft
+jcp
+jd
+jdocref
+jni
+jnilib
+joinenv
+journaling
+jsr
+kbytes
+key's
+keySet
+keydata
+keyvalue
+ksh
+ktrace
+lang
+lappend
+largefile
+lastname
+lc
+ld
+ldb
+ldl
+le
+len
+lg
+li
+lib
+libc
+libdb
+libdbxml
+libdir
+libfile
+libgcc
+libmm
+libname
+libpthread
+libs
+libtcl
+libthread
+libtool
+libtp
+lifecycles
+linefeed
+linkjavadoc
+linkpage
+linkweb
+linux
+lk
+lm
+ln
+lname
+loadClass
+loadClassInternal
+loc
+localhost
+lock's
+lockmode
+lockng
+lockstat
+logalloc
+logc
+logdir
+logfile
+logrec
+lorder
+lposix
+lpthread
+lsn
+lsnp
+lsocket
+lt
+lthread
+lu
+machtab
+machtabp
+macosx
+macosxserver
+mak
+malloc
+mandir
+manref
+mao
+margo
+marshall
+marshalled
+marshalling
+marshalls
+mastersync
+maxsize
+maxvnodes
+mdkir
+memcpy
+memp
+memset
+metadata
+metagroup
+metasub
+meth
+mgr
+mhayes
+microkernel
+microsoft
+mingw
+minkey
+misc
+mjc
+mkIndex
+mkdir
+mmap
+mmapsize
+mmp
+mp
+mpool
+ms
+msdev
+msdownload
+msec
+msemaphore
+msg
+msgcall
+msgfile
+mslu
+mspx
+msvcp
+msvcrt
+msvcrtd
+mt
+muldi
+multithread
+multithreaded
+multithreading
+multiversion
+mutex
+mutexalign
+mutexattr
+mutexes
+mutexlock
+mutexlocks
+mv
+mvptr
+myaddr
+mydata
+mydatabase
+myenvhome
+myname
+myprog
+namespace
+namespaces
+nconflicts
+ndata
+ndbm
+nelem
+netDrv
+newcat
+newname
+newpage
+newsite
+nextIndex
+nfsDrv
+nkeys
+nlist
+nlistbegin
+nlistend
+nlistns
+nnowaits
+nokia
+nolonger
+nondatabase
+nondb
+nonstatic
+noop
+nooverwrite
+nosync
+notfound
+notheld
+notxn
+nowait
+npairs
+nrecs
+nsites
+nul
+nullifyForeignKey
+numobjs
+nump
+nvotes
+objectToData
+objectToKey
+odmg
+offsite
+oflags
+ol
+onboard
+op
+openCursor
+openDatabase
+openSecondaryDatabase
+opensource
+opensub
+ops
+org
+orig
+os
+osd
+osf
+ossp
+ostream
+overcount
+overusing
+ovref
+pMe
+pagesize
+pageyield
+palmtop
+paniccall
+panicstate
+parm
+parsable
+partKeyBinding
+partMap
+partValueBinding
+passwd
+perl
+pers
+pg
+pgcookie
+pget
+pgin
+pgno
+pgnolist
+pgout
+php
+phpize
+physmem
+picgif
+pkey
+pkg
+pl
+placeholder
+platformsdk
+plugin
+pm
+popdef
+portp
+posix
+posixmutexes
+pp
+pre
+pread
+prebuilt
+pretransaction
+prev
+previousIndex
+prevlsn
+pri
+primaryKeyInput
+printEntries
+printf
+printlog
+priorityp
+proc
+progmodel
+progname
+ps
+psdkredist
+pthread
+pthreads
+pushdef
+putAll
+pwrite
+qam
+qnx
+qs
+quis
+rb
+rc
+rcuradj
+reacquired
+reacquires
+readString
+realclean
+realloc
+reapplied
+reapply
+rec
+recbuf
+reclimit
+recno
+recnum
+recompilation
+recops
+record's
+rectype
+ref
+refT
+refc
+refcnt
+refcxx
+refs
+regionmax
+regionp
+regop
+reinit
+relink
+relinked
+reloadable
+rem
+remotehost
+removeAll
+rep
+repinit
+repl
+repmgr
+repquote
+repquote's
+resending
+retainAll
+rm
+rmutex
+rmw
+rop
+rpath
+rpc
+rpcgen
+rpm
+rq
+rsplit
+rstrm
+rt
+rtc
+rw
+sarette
+sb
+scid
+sco
+scount
+sd
+sdkupdate
+se
+secondaryKeyCreate
+sed
+segfaults
+sentity
+seq
+setAllowCreate
+setBtreeComparator
+setBtreeRecordNumbers
+setDatabaseType
+setForeignKeyDatabase
+setForeignKeyDeleteAction
+setInitializeCache
+setInitializeLocking
+setKey
+setRenumbering
+setSortedDuplicates
+setTransactional
+setUnsortedDuplicates
+setValue
+setenv
+setgid
+setpshared
+setuid
+sf
+sh
+shipmentByPartMap
+shipmentBySupplierMap
+shipmentValueBinding
+shl
+shlib
+shm
+shmall
+shmget
+shmmax
+shmmin
+shmmni
+shmseg
+sizeof
+sl
+sleepycat
+sln
+smallbuild
+smallpic
+solaris
+sourceforge
+splitdata
+src
+standalone
+standardCollection
+stat
+std
+stderr
+stdlib
+stdmode
+storedCollection
+storedIterator
+strdup
+strerror
+stringified
+strlen
+struct
+subMap
+subSet
+subclassed
+subclassing
+subdatabase
+subdatabases
+sublog
+submaps
+suboperations
+sunos
+supplierByCityDb
+supplierByCityMap
+supplierDb
+supplierEntries
+supplierKeyBinding
+supplierMap
+supplierValueBinding
+svc
+symbian
+symbianelf
+syncflag
+sysctl
+sysmem
+sysv
+t's
+tabbed
+tagbegin
+tagend
+tagns
+tagopt
+tam
+tas
+taskSpawn
+tbinding
+tcl
+tclConfig
+tclsh
+tclwinpath
+tcsh
+terabytes
+testdir
+testfile
+testprog
+thang
+thread's
+throwables
+timeoutp
+timestamp
+timestamps
+tk
+tm
+tmloadcf
+tmp
+tmpdir
+toString
+toc
+toolchain
+toolset
+tr
+trans
+transactionally
+transapp
+tsbinding
+twopl
+tx
+txn
+txnid
+txnlist
+txt
+typedef'd
+ubb
+ubbconfig
+ubell
+ucb
+udataobj
+udeb
+uimutexes
+ulen
+ultrix
+umrw
+un
+uncorrupted
+undef
+undefine
+unencrypted
+unicode
+uninstall
+uniquename
+unix
+unmap
+unmarshall
+unmarshalling
+unmarshalls
+unresolvable
+unzipper
+urel
+useenv
+usenix
+usr
+util
+utilarg
+va
+var
+vc
+vcp
+vcvars
+vcw
+vec
+vxKernel
+vxworks
+wb
+windsh
+winscw
+witold
+wpj
+writable
+writeAllowed
+writeString
+writetest
+wsp
+www
+xa
+xdr
+xlc
+xml
+xxx
diff --git a/db/docs_src/ref/tcl/error.so b/db/docs_src/ref/tcl/error.so
new file mode 100644
index 000000000..f33357d0e
--- /dev/null
+++ b/db/docs_src/ref/tcl/error.so
@@ -0,0 +1,72 @@
+m4_comment([$Id: error.so,v 11.17 2001/06/19 19:45:47 bostic Exp $])
+
+m4_ref_title(Tcl API, Tcl error handling,, tcl/program, tcl/faq)
+
+m4_p([dnl
+The Tcl interfaces to m4_db generally return TCL_OK on success and throw
+a Tcl error on failure, using the appropriate Tcl interfaces to provide
+the user with an informative error message. There are some "expected"
+failures, however, for which no Tcl error will be thrown and for which
+Tcl commands will return TCL_OK. These failures include times when a
+searched-for key is not found, a requested key/data pair was previously
+deleted, or a key/data pair cannot be written because the key already
+exists.])
+
+m4_p([dnl
+These failures can be detected by searching the m4_db error message that
+is returned. For example, use the following to detect that an attempt
+to put a record into the database failed because the key already
+existed:])
+
+m4_indent([dnl
+% berkdb open -create -btree a.db
+db0
+% db0 put dog cat
+0
+% set ret __LB__db0 put -nooverwrite dog newcat__RB__
+DB_KEYEXIST: Key/data pair already exists
+% if { __LB__string first DB_KEYEXIST $ret__RB__ != -1 } {
+ puts "This was an error; the key existed"
+}
+This was an error; the key existed
+% db0 close
+0
+% exit])
+
+m4_p([dnl
+To simplify parsing, it is recommended that the initial m4_db error name
+be checked; for example, m4_ref(DB_KEYEXIST) in the previous example.
+To ensure that Tcl scripts are not broken by upgrading to new releases
+of m4_db, these values will not change in future releases of m4_db.
+There are currently only three such "expected" error returns:])
+
+m4_indent([dnl
+DB_NOTFOUND: No matching key/data pair found
+DB_KEYEMPTY: Nonexistent key/data pair
+DB_KEYEXIST: Key/data pair already exists])
+
+m4_p([dnl
+Finally, sometimes m4_db will output additional error information when
+a m4_db error occurs. By default, all m4_db error messages will be
+prefixed with the created command in whose context the error occurred
+(for example, "env0", "db2", and so on). There are several ways to
+capture and access this information.])
+
+m4_p([dnl
+First, if m4_db invokes the error callback function, the additional
+information will be placed in the error result returned from the command
+and in the errorInfo backtrace variable in Tcl.])
+
+m4_p([dnl
+Also, the two calls to open an environment and open a database take an
+option, m4_arg(-errfile filename), which sets an output file to which
+these additional error messages should be written.])
+
+m4_p([dnl
+Additionally, the two calls to open an environment and open a database
+take an option, m4_arg(-errpfx string), which sets the error prefix to
+the given string. This option may be useful in circumstances where a
+more descriptive prefix is desired or where a constant prefix indicating
+an error is desired.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/tcl/faq.so b/db/docs_src/ref/tcl/faq.so
new file mode 100644
index 000000000..9025a6c74
--- /dev/null
+++ b/db/docs_src/ref/tcl/faq.so
@@ -0,0 +1,60 @@
+m4_comment([$Id: faq.so,v 11.10 2004/10/05 16:44:35 bostic Exp $])
+
+m4_ref_title(Tcl API, Tcl FAQ, [Tcl @FAQ, Tcl FAQ], tcl/error, ext/mod)
+
+m4_nlistbegin
+
+m4_nlist([dnl
+m4_bold([I have several versions of Tcl installed. How do I configure
+m4_db to use a particular version?])
+
+m4_p([dnl
+To compile the Tcl interface with a particular version of Tcl, use the
+--with-tcl option to specify the Tcl installation directory that
+contains the tclConfig.sh file. See
+m4_link(M4RELDIR/ref/build_unix/flags, [Changing compile or load
+options]) for more information.])])
+
+m4_hl
+m4_nlist([dnl
+m4_bold([m4_db was configured using --enable-tcl or --with-tcl and fails
+to build.])
+
+m4_p([dnl
+The m4_db Tcl interface requires Tcl version 8.4 or greater.])])
+
+m4_hl
+m4_nlist([dnl
+m4_bold([m4_db was configured using --enable-tcl or --with-tcl and fails
+to build.])
+
+m4_p([dnl
+If the Tcl installation was moved after it was configured and installed,
+try reconfiguring and reinstalling Tcl.])
+
+m4_p([dnl
+Also, some systems do not search for shared libraries by default, or do
+not search for shared libraries named the way the Tcl installation names
+them, or are searching for a different kind of library than those in
+your Tcl installation. For example, Linux systems often require linking
+"libtcl.a" to "libtcl#.#.a", whereas AIX systems often require adding the
+"-brtl" flag to the linker. A simpler solution that almost always works
+on all systems is to create a link from "libtcl.#.#.a" or "libtcl.so"
+(or whatever you happen to have) to "libtcl.a" and reconfigure.])])
+
+m4_hl
+m4_nlist([dnl
+m4_bold([Loading the m4_db library into Tcl on AIX causes a core dump.])
+
+m4_p([dnl
+In some versions of Tcl, the "tclConfig.sh" autoconfiguration script
+created by the Tcl installation does not work properly under AIX, and
+you may have to modify values in the tclConfig.sh file to in order to
+load the m4_db library into Tcl. Specifically, the TCL_LIB_SPEC
+variable should contain sufficient linker flags to find and link against
+the installed libtcl library. In some circumstances, the tclConfig.sh
+file built by Tcl does not.])])
+
+m4_nlistend
+
+m4_page_footer
diff --git a/db/docs_src/ref/tcl/intro.so b/db/docs_src/ref/tcl/intro.so
new file mode 100644
index 000000000..7f15dc026
--- /dev/null
+++ b/db/docs_src/ref/tcl/intro.so
@@ -0,0 +1,81 @@
+m4_comment([$Id: intro.so,v 11.25 2006/06/06 17:21:17 bostic Exp $])
+
+m4_ref_title(Tcl API,
+ Loading m4_db with Tcl, loading m4_db with @Tcl, rpc/faq, tcl/using)
+
+m4_p([dnl
+m4_db includes a dynamically loadable Tcl API, which requires that
+Tcl/Tk 8.4 or later already be installed on your system. You can
+download a copy of Tcl from the m4_linkweb(http://www.tcl.tk, Tcl
+Developer Xchange) Web site.])
+
+m4_p([dnl
+This document assumes that you already configured m4_db for Tcl
+support, and you have built and installed everything where you want it
+to be. If you have not done so, see
+m4_link(M4RELDIR/ref/build_unix/conf, Configuring m4_db) or
+m4_link(M4RELDIR/ref/build_win/intro, Building for Windows) for more
+information.])
+
+m4_section(Installing as a Tcl Package)
+
+m4_p([dnl
+Once enabled, the m4_db shared library for Tcl is automatically installed
+as part of the standard installation process. However, if you want to be
+able to dynamically load it as a Tcl package into your script, there are
+several steps that must be performed:])
+
+m4_nlistbegin
+m4_nlist([Run the Tcl shell in the install directory.])
+m4_nlistns([Append this directory to your auto_path variable.])
+m4_nlistns([dnl
+Run the pkg_mkIndex proc, giving the name of the m4_db Tcl library.])
+m4_nlistend
+
+m4_p([dnl
+For example:])
+
+m4_indent([dnl
+# tclsh8.4
+% lappend auto_path /usr/local/BerkeleyDB.M4MAJOR.M4MINOR/lib
+% pkg_mkIndex /usr/local/BerkeleyDB.M4MAJOR.M4MINOR/lib libdb_tcl-M4MAJOR.M4MINOR.so])
+
+m4_p([dnl
+Note that your Tcl and m4_db version numbers may differ from the
+example, and so your tclsh and library names may be different.])
+
+m4_section([Loading m4_db with Tcl])
+
+m4_p([dnl
+The m4_db package may be loaded into the user's interactive Tcl script
+(or wish session) via the m4_bold(load) command. For example:])
+
+m4_indent([load /usr/local/BerkeleyDB.M4MAJOR.M4MINOR/lib/libdb_tcl-M4MAJOR.M4MINOR.so])
+
+m4_p([dnl
+Note that your m4_db version numbers may differ from the example, and so
+the library name may be different.])
+
+m4_p([dnl
+If you installed your library to run as a Tcl package, Tcl application
+scripts should use the m4_bold(package) command to indicate to the Tcl
+interpreter that it needs the m4_db package and where to find it. For
+example:])
+
+m4_indent([dnl
+lappend auto_path "/usr/local/BerkeleyDB.M4MAJOR.M4MINOR/lib"
+package require Db_tcl])
+
+m4_p([dnl
+No matter which way the library gets loaded, it creates a command named
+m4_bold(berkdb). All the m4_db functionality is accessed via this
+command and additional commands it creates on behalf of the application.
+A simple test to determine whether everything is loaded and ready is to
+display the library version, as follows:])
+
+m4_indent([berkdb version -string])
+
+m4_p([dnl
+This should return you the m4_db version in a string format.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/tcl/program.so b/db/docs_src/ref/tcl/program.so
new file mode 100644
index 000000000..393a97011
--- /dev/null
+++ b/db/docs_src/ref/tcl/program.so
@@ -0,0 +1,24 @@
+m4_comment([$Id: program.so,v 11.15 2006/07/24 17:46:17 sue Exp $])
+
+m4_ref_title(Tcl API,
+ Tcl API programming notes, @Tcl API programming notes, tcl/using, tcl/error)
+
+m4_p([dnl
+The Tcl API closely parallels the m4_db programmatic interfaces. If you
+are already familiar with one of those interfaces, there will not be many
+surprises in the Tcl API.])
+
+m4_p([dnl
+The Tcl API currently does not support multithreading although
+it could be made to do so. The Tcl shell itself is
+not multithreaded and the m4_db extensions use global data unprotected
+from multiple threads.])
+
+m4_p([dnl
+Several pieces of m4_db functionality are not available in the Tcl API.
+Any of the functions that require a user-provided function are not
+supported via the Tcl API. For example, there is no equivalent to the
+m4_refc(dbh_set_dup_compare) or the m4_refc(dbenv_set_errcall)
+methods.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/tcl/using.so b/db/docs_src/ref/tcl/using.so
new file mode 100644
index 000000000..3d3ab9039
--- /dev/null
+++ b/db/docs_src/ref/tcl/using.so
@@ -0,0 +1,51 @@
+m4_comment([$Id: using.so,v 11.9 2004/11/03 16:38:07 bostic Exp $])
+
+m4_ref_title(Tcl API,
+ Using m4_db with Tcl, using m4_db with @Tcl, tcl/intro, tcl/program)
+
+m4_p([dnl
+All commands in the m4_db Tcl interface are in the following form:])
+
+m4_indent([command_handle operation options])
+
+m4_p([dnl
+The m4_italic(command handle) is m4_bold(berkdb) or one of the additional
+commands that may be created. The m4_italic(operation) is what you want
+to do to that handle, and the m4_italic(options) apply to the operation.
+Commands that get created on behalf of the application have their own sets
+of operations. Generally, any calls in DB that result in new object
+handles will translate into a new command handle in Tcl. Then, the user
+can access the operations of the handle via the new Tcl command handle.])
+
+m4_p([dnl
+Newly created commands are named with an abbreviated form of their
+objects, followed by a number. Some created commands are subcommands of
+other created commands and will be the first command, followed by a
+period (.), and then followed by the new subcommand. For example,
+suppose that you have a database already existing called my_data.db.
+The following example shows the commands created when you open the
+database and when you open a cursor:])
+
+m4_indent([dnl
+# First open the database and get a database command handle
+% berkdb open my_data.db
+db0
+#Get some data from that database
+% db0 get my_key
+{{my_key my_data0}{my_key my_data1}}
+#Open a cursor in this database, get a new cursor handle
+% db0 cursor
+db0.c0
+#Get the first data from the cursor
+% db0.c0 get -first
+{{first_key first_data}}])
+
+m4_p([dnl
+All commands in the library support a special option m4_bold(-?) that will
+list the correct operations for a command or the correct options.])
+
+m4_p([dnl
+A list of commands and operations can be found in the
+m4_link(M4RELDIR/api_tcl/api_tcl, Tcl Interface) documentation.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/test/faq.so b/db/docs_src/ref/test/faq.so
new file mode 100644
index 000000000..05ad1735b
--- /dev/null
+++ b/db/docs_src/ref/test/faq.so
@@ -0,0 +1,20 @@
+m4_comment([$Id: faq.so,v 10.5 2003/03/19 20:20:34 bostic Exp $])
+
+m4_ref_title(Test Suite,
+ Test suite FAQ,, test/run, distrib/port)
+
+m4_nlistbegin
+
+m4_nlist([dnl
+m4_bold([dnl
+The test suite has been running for over a day. What's wrong?])
+
+m4_p([dnl
+The test suite can take anywhere from some number of hours to several
+days to run, depending on your hardware configuration. As long as the
+run is making forward progress and new lines are being written to the
+m4_path(ALL.OUT) files, everything is probably fine.])])
+
+m4_nlistend
+
+m4_page_footer
diff --git a/db/docs_src/ref/test/run.so b/db/docs_src/ref/test/run.so
new file mode 100644
index 000000000..a87ac74df
--- /dev/null
+++ b/db/docs_src/ref/test/run.so
@@ -0,0 +1,63 @@
+m4_comment([$Id: run.so,v 10.48 2006/10/02 15:56:35 bostic Exp $])
+
+m4_ref_title(Test Suite,
+ Running the test suite,
+ running the @test suite, upgrade.4.6/disk, test/faq)
+
+m4_p([dnl
+Once you have started tclsh and have loaded the test.tcl source file
+(see m4_link(M4RELDIR/ref/build_unix/test, Running the test suite under
+UNIX) and m4_link(M4RELDIR/ref/build_win/test, Running the test suite
+under Windows) for more information), you are ready to run the test
+suite. At the tclsh prompt, to run the standard test suite, enter the
+following:])
+
+m4_indent([% run_std])
+
+m4_p([dnl
+A more exhaustive version of the test suite runs all the tests several
+more times, testing encryption, replication, and different page sizes.
+After you have a clean run for run_std, you may choose to run this
+lengthier set of tests. At the tclsh prompt, enter:])
+
+m4_indent([% run_all])
+
+m4_p([dnl
+Running the standard tests can take from several hours to a few days to
+complete, depending on your hardware, and running all the tests will
+take at least twice as long. For this reason, the output from these
+commands are redirected to a file in the current directory named
+m4_path(ALL.OUT). Periodically, a line will be written to the standard
+output, indicating what test is being run. When the test suite has
+finished, a final message will be written indicating the test suite has
+completed successfully or that it has failed. If the run failed, you
+should review the m4_path(ALL.OUT) file to determine which tests failed.
+Errors will appear in that file as output lines, beginning with the
+string "FAIL".])
+
+m4_p([dnl
+Tests are run in the directory m4_path(TESTDIR), by default. However,
+the test files are often large, and you should use a filesystem with at
+least several hundred megabytes of free space. To use a different
+directory for the test directory, edit the file include.tcl in your
+build directory, and change the following line to a more appropriate
+value for your system:])
+
+m4_indent([dnl
+set testdir ./TESTDIR])
+
+m4_p([dnl
+For example, you might change it to the following:])
+
+m4_indent([dnl
+set testdir /var/tmp/db.test])
+
+m4_p([dnl
+Alternatively, you can create a symbolic link named TESTDIR in your
+build directory to an appropriate location for running the tests.
+Regardless of where you run the tests, the TESTDIR directory should be
+on a local filesystem. Using a remote filesystem (for example, an NFS
+mounted filesystem) will almost certainly cause spurious test
+failures.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/toc.html b/db/docs_src/ref/toc.html
new file mode 100644
index 000000000..288b86de9
--- /dev/null
+++ b/db/docs_src/ref/toc.html
@@ -0,0 +1,391 @@
+<!--$Id: toc.html,v 10.295 2007/07/10 16:56:58 bostic Exp $-->
+<html>
+<head>
+<title>__EDIT_PRODUCT Reference Guide (Version: __EDIT_VERSION_MAJOR.__EDIT_VERSION_MINOR.__EDIT_VERSION_PATCH)</title>
+<meta name="description" content="__EDIT_PRODUCT: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
+</head>
+<body bgcolor=white>
+
+<center>
+<h2><b>__EDIT_PRODUCT Reference Guide, Version __EDIT_VERSION_MAJOR.__EDIT_VERSION_MINOR.__EDIT_VERSION_PATCH</b></h2>
+</center>
+
+<ol>
+<font size="+1"><li><a name="intro">Introduction</a></font>
+ <ol>
+ <li><a href="intro/data.html">An introduction to data management</a>
+ <li><a href="intro/terrain.html">Mapping the terrain: theory and practice</a>
+ <li><a href="intro/dbis.html">What is Berkeley DB?</a>
+ <li><a href="intro/dbisnot.html">What Berkeley DB is not</a>
+ <li><a href="intro/need.html">Do you need Berkeley DB?</a>
+ <li><a href="intro/what.html">What other services does Berkeley DB provide?</a>
+ <li><a href="intro/distrib.html">What does the Berkeley DB distribution include?</a>
+ <li><a href="intro/where.html">Where does Berkeley DB run?</a>
+ <li><a href="intro/products.html">The Berkeley DB products</a>
+ </ol>
+<font size="+1"><li><a name="am_conf">Access Method Configuration</a></font>
+ <ol>
+ <li><a href="am_conf/intro.html">What are the available access methods?</a>
+ <li><a href="am_conf/select.html">Selecting an access method</a>
+ <li><a href="am_conf/logrec.html">Logical record numbers</a>
+ <li>General access method configuration
+ <ol>
+ <li><a href="am_conf/pagesize.html">Selecting a page size</a>
+ <li><a href="am_conf/cachesize.html">Selecting a cache size</a>
+ <li><a href="am_conf/byteorder.html">Selecting a byte order</a>
+ <li><a href="am_conf/dup.html">Duplicate data items</a>
+ <li><a href="am_conf/malloc.html">Non-local memory allocation</a>
+ </ol>
+ <li>Btree access method specific configuration
+ <ol>
+ <li><a href="am_conf/bt_compare.html">Btree comparison</a>
+ <li><a href="am_conf/bt_prefix.html">Btree prefix comparison</a>
+ <li><a href="am_conf/bt_minkey.html">Minimum keys per page</a>
+ <li><a href="am_conf/bt_recnum.html">
+ Retrieving Btree records by logical record number</a>
+ </ol>
+ <li>Hash access method specific configuration
+ <ol>
+ <li><a href="am_conf/h_ffactor.html">Page fill factor</a>
+ <li><a href="am_conf/h_hash.html">Specifying a database hash</a>
+ <li><a href="am_conf/h_nelem.html">Hash table size</a>
+ </ol>
+ <li>Queue and Recno access method specific configuration
+ <ol>
+ <li><a href="am_conf/recno.html">Managing record-based databases</a>
+ <li><a href="am_conf/extentsize.html">Selecting a Queue extent size</a>
+ <li><a href="am_conf/re_source.html">Flat-text backing files</a>
+ <li><a href="am_conf/renumber.html">Logically renumbering records</a>
+ </ol>
+ </ol>
+<font size="+1"><li><a name="am">Access Method Operations</a></font>
+ <ol>
+ <li><a href="am/ops.html">Access method operations</a>
+ <li><a href="am/open.html">Database open</a>
+ <li><a href="am/opensub.html">Opening multiple databases in a single file</a>
+ <li><a href="am/get.html">Retrieving records</a>
+ <li><a href="am/put.html">Storing records</a>
+ <li><a href="am/delete.html">Deleting records</a>
+ <li><a href="am/stat.html">Database statistics</a>
+ <li><a href="am/truncate.html">Database truncation</a>
+ <li><a href="am/upgrade.html">Database upgrade</a>
+ <li><a href="am/verify.html">Database verification and salvage</a>
+ <li><a href="am/sync.html">Flushing the database cache</a>
+ <li><a href="am/close.html">Database close</a>
+ <li><a href="am/second.html">Secondary indices</a>
+ <li><a href="am/cursor.html">Cursor operations</a>
+ <ol>
+ <li><a href="am/curget.html">Retrieving records with a cursor</a>
+ <li><a href="am/curput.html">Storing records with a cursor</a>
+ <li><a href="am/curdel.html">Deleting records with a cursor</a>
+ <li><a href="am/curdup.html">Duplicating a cursor</a>
+ <li><a href="am/join.html">Equality join</a>
+ <li><a href="am/count.html">Data item count</a>
+ <li><a href="am/curclose.html">Cursor close</a>
+ </ol>
+ </ol>
+<font size="+1"><li><a name="am_misc">Access Method Wrapup</a></font>
+ <ol>
+ <li><a href="am_misc/align.html">Data alignment</a>
+ <li><a href="am_misc/get_bulk.html">Retrieving records in bulk</a>
+ <li><a href="am_misc/partial.html">Partial record storage and retrieval</a>
+ <li><a href="am_misc/struct.html">Storing C/C++ structures/objects</a>
+ <li><a href="am_misc/perm.html">Retrieved key/data permanence for C/C++</a>
+ <li><a href="am_misc/error.html">Error support</a>
+ <li><a href="am_misc/stability.html">Cursor stability</a>
+ <li><a href="am_misc/dbsizes.html">Database limits</a>
+ <li><a href="am_misc/diskspace.html">Disk space requirements</a>
+ <li><a href="am_misc/tune.html">Access method tuning</a>
+ <li><a href="am_misc/faq.html">Access method FAQ</a>
+ </ol>
+<font size="+1"><li><a name="java">Java API</a></font>
+ <ol>
+ <li><a href="java/conf.html">Java configuration</a>
+ <li><a href="java/compat.html">Compatibility</a>
+ <li><a href="java/program.html">Java programming notes</a>
+ <li><a href="java/faq.html">Java FAQ</a>
+ </ol>
+<font size="+1"><li><a name="arch">Berkeley DB Architecture</a></font>
+ <ol>
+ <li><a href="arch/bigpic.html">The big picture</a>
+ <li><a href="arch/progmodel.html">Programming model</a>
+ <li><a href="arch/apis.html">Programmatic APIs</a>
+ <li><a href="arch/script.html">Scripting languages</a>
+ <li><a href="arch/utilities.html">Supporting utilities</a>
+ </ol>
+<font size="+1"><li><a name="env">The Berkeley DB Environment</a></font>
+ <ol>
+ <li><a href="env/intro.html">Database environment introduction</a>
+ <li><a href="env/create.html">Creating a database environment</a>
+ <li><a href="env/open.html">Opening databases within the environment</a>
+ <li><a href="env/error.html">Error support</a>
+ <li><a href="env/db_config.html">DB_CONFIG configuration file</a>
+ <li><a href="env/naming.html">File naming</a>
+ <li><a href="env/region.html">Shared memory regions</a>
+ <li><a href="env/security.html">Security</a>
+ <li><a href="env/encrypt.html">Encryption</a>
+ <li><a href="env/remote.html">Remote filesystems</a>
+ <li><a href="env/faq.html">Environment FAQ</a>
+ </ol>
+<font size="+1"><li><a name="cam">Berkeley DB Concurrent Data Store Applications</a></font>
+ <ol>
+ <li><a href="cam/intro.html">Concurrent Data Store introduction</a>
+ <li><a href="cam/fail.html">Handling failure in Data Store and Concurrent Data Store applications</a>
+ <li><a href="cam/app.html">Architecting Data Store and Concurrent Data Store applications</a>
+ </ol>
+<font size="+1"><li><a name="transapp">Berkeley DB Transactional Data Store Applications</a></font>
+ <ol>
+ <li><a href="transapp/intro.html">Transactional Data Store introduction</a>
+ <li><a href="transapp/why.html">Why transactions?</a>
+ <li><a href="transapp/term.html">Terminology</a>
+ <li><a href="transapp/fail.html">Handling failure in Transactional Data Store applications</a>
+ <li><a href="transapp/app.html">Architecting Transactional Data Store applications</a>
+ <li><a href="transapp/env_open.html">Opening the environment</a>
+ <li><a href="transapp/data_open.html">Opening the databases</a>
+ <li><a href="transapp/put.html">Recoverability and deadlock handling</a>
+ <li><a href="transapp/atomicity.html">Atomicity</a>
+ <li><a href="transapp/inc.html">Isolation</a>
+ <li><a href="transapp/read.html">Degrees of isolation</a>
+ <li><a href="transapp/cursor.html">Transactional cursors</a>
+ <li><a href="transapp/nested.html">Nested transactions</a>
+ <li><a href="transapp/admin.html">Environment infrastructure</a>
+ <li><a href="transapp/deadlock.html">Deadlock detection</a>
+ <li><a href="transapp/checkpoint.html">Checkpoints</a>
+ <li><a href="transapp/archival.html">Database and log file archival</a>
+ <li><a href="transapp/logfile.html">Log file removal</a>
+ <li><a href="transapp/recovery.html">Recovery procedures</a>
+ <li><a href="transapp/hotfail.html">Hot failover</a>
+ <li><a href="transapp/filesys.html">Recovery and filesystem operations</a>
+ <li><a href="transapp/reclimit.html">Berkeley DB recoverability</a>
+ <li><a href="transapp/tune.html">Transaction tuning</a>
+ <li><a href="transapp/throughput.html">Transaction throughput</a>
+ <li><a href="transapp/faq.html">Transaction FAQ</a>
+ </ol>
+<font size="+1"><li><a name="rep">Berkeley DB Replication</a></font>
+ <ol>
+ <li><a href="rep/intro.html">Replication introduction</a>
+ <li><a href="rep/id.html">Replication environment IDs</a>
+ <li><a href="rep/pri.html">Replication environment priorities</a>
+ <li><a href="rep/app.html">Building replicated applications</a>
+ <li><a href="rep/mgr_meth.html">Replication Manager methods</a>
+ <li><a href="rep/base_meth.html">Base replication API</a>
+ <li><a href="rep/comm.html">Building the communications infrastructure</a>
+ <li><a href="rep/newsite.html">Connecting to a new site</a>
+ <li><a href="rep/elect.html">Elections</a>
+ <li><a href="rep/mastersync.html">Synchronizing with a master</a>
+ <li><a href="rep/init.html">Initializing a new site</a>
+ <li><a href="rep/bulk.html">Bulk transfer</a>
+ <li><a href="rep/trans.html">Transactional guarantees</a>
+ <li><a href="rep/partition.html">Network partitions</a>
+ <li><a href="rep/faq.html">Replication FAQ</a>
+ <li><a href="rep/ex.html">Ex_rep: a replication example</a>
+ <li><a href="rep/ex_comm.html">Ex_rep_base: a TCP/IP based communication infrastructure</a>
+ <li><a href="rep/ex_rq.html">Ex_rep_base: putting it all together</a>
+ </ol>
+<font size="+1"><li><a name="xa">Distributed Transactions</a></font>
+ <ol>
+ <li><a href="xa/intro.html">Introduction to distributed transactions</a>
+ <li><a href="xa/build.html">Building a Global Transaction Manager</a>
+ <li><a href="xa/xa_intro.html">XA Introduction</a>
+ <li><a href="xa/xa_config.html">Configuring Berkeley DB with the Tuxedo System</a>
+ <li><a href="xa/faq.html">XA: Frequently Asked Questions</a>
+ </ol>
+<font size="+1"><li><a name="apprec">Application Specific Logging and Recovery</a></font>
+ <ol>
+ <li><a href="apprec/intro.html">Introduction to application specific logging and recovery</a>
+ <li><a href="apprec/def.html">Defining application-specific log records</a>
+ <li><a href="apprec/auto.html">Automatically generated functions</a>
+ <li><a href="apprec/config.html">Application configuration</a>
+ </ol>
+<font size="+1"><li><a name="program">Programmer Notes</a></font>
+ <ol>
+ <li><a href="program/appsignals.html">Signal handling</a>
+ <li><a href="program/errorret.html">Error returns to applications</a>
+ <li><a href="program/environ.html">Environmental variables</a>
+ <li><a href="program/mt.html">Multithreaded applications</a>
+ <li><a href="program/scope.html">Berkeley DB handles</a>
+ <li><a href="program/namespace.html">Name spaces</a>
+ <li><a href="program/ram.html">Memory-only or Flash configurations</a>
+ <li><a href="program/cache.html">Disk drive caches</a>
+ <li><a href="program/copy.html">Copying or moving databases</a>
+ <li><a href="program/compatible.html">Compatibility with historic UNIX interfaces</a>
+ <li><a href="program/runtime.html">Run-time configuration</a>
+ <li><a href="program/faq.html">Programmer notes FAQ</a>
+ </ol>
+<font size="+1"><li><a name="lock">The Locking Subsystem</a></font>
+ <ol>
+ <li><a href="lock/intro.html">Introduction to the locking subsystem</a>
+ <li><a href="lock/config.html">Configuring locking</a>
+ <li><a href="lock/max.html">Configuring locking: sizing the system</a>
+ <li><a href="lock/stdmode.html">Standard lock modes</a>
+ <li><a href="lock/dead.html">Deadlock detection</a>
+ <li><a href="lock/timeout.html">Deadlock detection using timers</a>
+ <li><a href="lock/deaddbg.html">Deadlock debugging</a>
+ <li><a href="lock/page.html">Locking granularity</a>
+ <li><a href="lock/notxn.html">Locking without transactions</a>
+ <li><a href="lock/twopl.html">Locking with transactions: two-phase locking</a>
+ <li><a href="lock/cam_conv.html">Berkeley DB Concurrent Data Store locking conventions</a>
+ <li><a href="lock/am_conv.html">Berkeley DB Transactional Data Store locking conventions</a>
+ <li><a href="lock/nondb.html">Locking and non-Berkeley DB applications</a>
+ </ol>
+<font size="+1"><li><a name="log">The Logging Subsystem</a></font>
+ <ol>
+ <li><a href="log/intro.html">Introduction to the logging subsystem</a>
+ <li><a href="log/config.html">Configuring logging</a>
+ <li><a href="log/limits.html">Log file limits</a>
+ </ol>
+<font size="+1"><li><a name="mp">The Memory Pool Subsystem</a></font>
+ <ol>
+ <li><a href="mp/intro.html">Introduction to the memory pool subsystem</a>
+ <li><a href="mp/config.html">Configuring the memory pool</a>
+ </ol>
+<font size="+1"><li><a name="txn">The Transaction Subsystem</a></font>
+ <ol>
+ <li><a href="txn/intro.html">Introduction to the transaction subsystem</a>
+ <li><a href="txn/config.html">Configuring transactions</a>
+ <li><a href="txn/limits.html">Transaction limits</a>
+ </ol>
+<font size="+1"><li><a name="sequence">Sequences</a></font>
+ <ol>
+ <li><a href="sequence/intro.html">Introduction to sequences</a>
+ </ol>
+<font size="+1"><li><a name="rpc">RPC Client/Server</a></font>
+ <ol>
+ <li><a href="rpc/intro.html">Introduction to the RPC client/server</a>
+ <li><a href="rpc/client.html">Client program</a>
+ <li><a href="rpc/server.html">Server program</a>
+ <li><a href="rpc/faq.html">RPC FAQ</a>
+ </ol>
+<font size="+1"><li><a name="tcl">Berkeley DB Extensions: Tcl</a></font>
+ <ol>
+ <li><a href="tcl/intro.html">Loading Berkeley DB with Tcl</a>
+ <li><a href="tcl/using.html">Using Berkeley DB with Tcl</a>
+ <li><a href="tcl/program.html">Tcl API programming notes</a>
+ <li><a href="tcl/error.html">Tcl error handling</a>
+ <li><a href="tcl/faq.html">Tcl FAQ</a>
+ </ol>
+<font size="+1"><li><a name="ext">Berkeley DB Extensions</a></font>
+ <ol>
+ <li><a href="ext/mod.html">Using Berkeley DB with Apache</a>
+ <li><a href="ext/perl.html">Using Berkeley DB with Perl</a>
+ <li><a href="ext/php.html">Using Berkeley DB with PHP</a>
+ </ol>
+<font size="+1"><li><a name="dumpload">Dumping and Reloading Databases</a></font>
+ <ol>
+ <li><a href="dumpload/utility.html">The db_dump and db_load utilities</a>
+ <li><a href="dumpload/format.html">Dump output formats</a>
+ <li><a href="dumpload/text.html">Loading text into databases</a>
+ </ol>
+<font size="+1"><li><a name="install">System Installation Notes</a></font>
+ <ol>
+ <li><a href="install/file.html">File utility /etc/magic information</a>
+ <li><a href="install/multiple.html">Building with multiple versions of Berkeley DB</a>
+ </ol>
+<font size="+1"><li><a name="debug">Debugging Applications</a></font>
+ <ol>
+ <li><a href="debug/intro.html">Introduction to debugging</a>
+ <li><a href="debug/compile.html">Compile-time configuration</a>
+ <li><a href="debug/runtime.html">Run-time error information</a>
+ <li><a href="debug/printlog.html">Reviewing Berkeley DB log files</a>
+ </ol>
+<font size="+1"><li><a name="build_brew">Building Berkeley DB for BREW</a></font>
+ <ol>
+ <li><a href="build_brew/intro.html">Building for BREW</a>
+ </ol>
+<font size="+1"><li><a name="build_brew">Building Berkeley DB for S60</a></font>
+ <ol>
+ <li><a href="build_s60/intro.html">Building for S60</a>
+ </ol>
+<font size="+1"><li><a name="build_unix">Building Berkeley DB for UNIX/POSIX</a></font>
+ <ol>
+ <li><a href="build_unix/intro.html">Building for UNIX/POSIX</a>
+ <li><a href="build_unix/conf.html">Configuring Berkeley DB</a>
+ <li><a href="build_unix/small.html">Building a small memory footprint library</a>
+ <li><a href="build_unix/flags.html">Changing compile or load options</a>
+ <li><a href="build_unix/install.html">Installing Berkeley DB</a>
+ <li><a href="build_unix/shlib.html">Dynamic shared libraries</a>
+ <li><a href="build_unix/test.html">Running the test suite under UNIX</a>
+ <li><a href="build_unix/notes.html">Architecture independent FAQ</a>
+ <li>Architecture specific FAQs:<br>
+ <a href="build_unix/aix.html">AIX</a>,
+ <a href="build_unix/freebsd.html">FreeBSD</a>,
+ <a href="build_unix/hpux.html">HP-UX</a>,
+ <a href="build_unix/irix.html">IRIX</a>,
+ <a href="build_unix/linux.html">Linux</a>,
+ <a href="build_unix/macosx.html">Mac OS X</a>,
+ <a href="build_unix/osf1.html">OSF/1</a>,
+ <a href="build_unix/qnx.html">QNX</a>,
+ <a href="build_unix/sco.html">SCO</a>,
+ <a href="build_unix/solaris.html">Solaris</a>,
+ <a href="build_unix/sunos.html">SunOS</a>,
+ <a href="build_unix/ultrix.html">Ultrix</a>
+ </ol>
+<font size="+1"><li><a name="build_win">Building Berkeley DB for Windows</a></font>
+ <ol>
+ <li><a href="build_win/intro.html">Building for Windows</a>
+ <li><a href="build_win/small.html">Building a small memory footprint library</a>
+ <li><a href="build_win/test.html">Running the test suite under Windows</a>
+ <li><a href="build_win/notes.html">Windows notes</a>
+ <li><a href="build_win/faq.html">Windows FAQ</a>
+ </ol>
+<font size="+1"><li><a name="build_wince">Building Berkeley DB for Windows CE</a></font>
+ <ol>
+ <li><a href="build_wince/intro.html">Building for Windows CE</a>
+ <li><a href="build_wince/notes.html">Windows CE notes</a>
+ <li><a href="build_wince/faq.html">Windows CE FAQ</a>
+ </ol>
+<font size="+1"><li><a name="build_vxworks">Building Berkeley DB for VxWorks</a></font>
+ <ol>
+ <li><a href="build_vxworks/intro.html">Building for VxWorks 5.4 and 5.5</a>
+ <li><a href="build_vxworks/notes.html">VxWorks notes</a>
+ <li><a href="build_vxworks/faq.html">VxWorks FAQ</a>
+ </ol>
+<font size="+1"><li><a name="upgrade">Upgrading Berkeley DB Applications</a></font>
+ <ol>
+ <li><a href="upgrade/version.html">Library version information</a>
+ <li><a href="upgrade/process.html">Upgrading Berkeley DB installations</a>
+ <li><a href="changelog/toc.html">Berkeley DB Release Change Logs</a>
+ <li><a href="upgrade.2.0/toc.html">
+ Upgrading Berkeley DB 1.85 and 1.86 applications to Berkeley DB 2.0</a>
+ <li><a href="upgrade.3.0/toc.html">
+ Upgrading Berkeley DB 2.X applications to Berkeley DB 3.0</a>
+ <li><a href="upgrade.3.1/toc.html">
+ Upgrading Berkeley DB 3.0 applications to Berkeley DB 3.1</a>
+ <li><a href="upgrade.3.2/toc.html">
+ Upgrading Berkeley DB 3.1 applications to Berkeley DB 3.2</a>
+ <li><a href="upgrade.3.3/toc.html">
+ Upgrading Berkeley DB 3.2 applications to Berkeley DB 3.3</a>
+ <li><a href="upgrade.4.0/toc.html">
+ Upgrading Berkeley DB 3.3 applications to Berkeley DB 4.0</a>
+ <li><a href="upgrade.4.1/toc.html">
+ Upgrading Berkeley DB 4.0 applications to Berkeley DB 4.1</a>
+ <li><a href="upgrade.4.2/toc.html">
+ Upgrading Berkeley DB 4.1 applications to Berkeley DB 4.2</a>
+ <li><a href="upgrade.4.3/toc.html">
+ Upgrading Berkeley DB 4.2 applications to Berkeley DB 4.3</a>
+ <li><a href="upgrade.4.4/toc.html">
+ Upgrading Berkeley DB 4.3 applications to Berkeley DB 4.4</a>
+ <li><a href="upgrade.4.5/toc.html">
+ Upgrading Berkeley DB 4.4 applications to Berkeley DB 4.5</a>
+ <li><a href="upgrade.4.6/toc.html">
+ Upgrading Berkeley DB 4.5 applications to Berkeley DB 4.6</a>
+ </ol>
+<font size="+1"><li><a name="test">Test Suite</a></font>
+ <ol>
+ <li><a href="test/run.html">Running the test suite</a>
+ <li><a href="test/faq.html">Test suite FAQ</a>
+ </ol>
+<font size="+1"><li><a name="distrib">Distribution</a></font>
+ <ol>
+ <li><a href="distrib/port.html">Porting Berkeley DB to new architectures</a>
+ <li><a href="distrib/layout.html">Source code layout</a>
+ </ol>
+<font size="+1"><li><a name="refs">Additional References</a></font>
+ <ol>
+ <li><a href="refs/refs.html">Additional references</a>
+ </ol>
+</ol>
+
+</body>
+</html>
diff --git a/db/docs_src/ref/transapp/admin.so b/db/docs_src/ref/transapp/admin.so
new file mode 100644
index 000000000..60672d260
--- /dev/null
+++ b/db/docs_src/ref/transapp/admin.so
@@ -0,0 +1,38 @@
+m4_comment([$Id: admin.so,v 10.17 2001/03/02 21:01:21 bostic Exp $])
+
+m4_ref_title(m4_tam Applications,
+ Environment infrastructure,
+ administering @transaction protected applications,
+ transapp/nested, transapp/deadlock)
+
+m4_p([dnl
+When building transactional applications, it is usually necessary to
+build an administrative infrastructure around the database environment.
+There are five components to this infrastructure, and each is
+supported by the m4_db package in two different ways: a standalone
+utility and one or more library interfaces.])
+
+m4_bulletbegin
+m4_bullet([Deadlock detection: m4_ref(db_deadlock),
+m4_ref(lock_detect), m4_ref(dbenv_set_lk_detect)])
+m4_bullet([Checkpoints: m4_ref(db_checkpoint), m4_ref(txn_checkpoint)])
+m4_bullet([Database and log file archival:
+m4_ref(db_archive), m4_ref(log_archive)])
+m4_bullet([Log file removal: m4_ref(db_archive), m4_ref(log_archive)])
+m4_bullet([Recovery procedures: m4_ref(db_recover), m4_ref(dbenv_open)])
+m4_bulletend
+
+m4_p([dnl
+When writing multithreaded server applications and/or applications
+intended for download from the Web, it is usually simpler to create
+local threads that are responsible for administration of the database
+environment as scheduling is often simpler in a single-process model,
+and only a single binary need be installed and run. However, the
+supplied utilities can be generally useful tools even when the
+application is responsible for doing its own administration because
+applications rarely offer external interfaces to database
+administration. The utilities are required when programming to a m4_db
+scripting interface because the scripting APIs do not always offer
+interfaces to the administrative functionality.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/transapp/app.so b/db/docs_src/ref/transapp/app.so
new file mode 100644
index 000000000..00f4f05b2
--- /dev/null
+++ b/db/docs_src/ref/transapp/app.so
@@ -0,0 +1,249 @@
+m4_comment([$Id: app.so,v 10.28 2006/02/28 16:30:53 bostic Exp $])
+
+m4_ref_title(m4_tam Applications,
+ Architecting Transactional Data Store applications,,
+ transapp/fail, transapp/env_open)
+
+m4_p([dnl
+When building Transactional Data Store applications, the architecture
+decisions involve application startup (running recovery) and handling
+system or application failure. For details on performing recovery,
+see the m4_link(recovery, [Recovery procedures]).])
+
+m4_p([dnl
+Recovery in a database environment is a single-threaded procedure, that
+is, one thread of control or process must complete database environment
+recovery before any other thread of control or process operates in the
+m4_db environment. It may simplify matters that m4_db serializes
+recovery and creation of a new database environment.])
+
+m4_p([dnl
+Performing recovery first marks any existing database environment as
+"failed" and then removes it, causing threads of control running in the
+database environment to fail and return to the application. This
+feature allows applications to recover environments without concern for
+threads of control that might still be running in the removed
+environment. The subsequent re-creation of the database environment is
+serialized, so multiple threads of control attempting to create a
+database environment will serialize behind a single creating thread.])
+
+m4_p([dnl
+One consideration in removing (as part of recovering) a database
+environment which may be in use by another thread, is the type of mutex
+being used by the m4_db library. In the case of database environment
+failure when using test-and-set mutexes, threads of control waiting on
+a mutex when the environment is marked "failed" will quickly notice the
+failure and will return an error from the m4_db API. In the case of
+environment failure when using blocking mutexes, where the underlying
+system mutex implementation does not unblock mutex waiters after the
+thread of control holding the mutex dies, threads waiting on a mutex
+when an environment is recovered might hang forever. Applications
+blocked on events (for example, an application blocked on a network
+socket, or a GUI event) may also fail to notice environment recovery
+within a reasonable amount of time. Systems with such mutex
+implementations are rare, but do exist; applications on such systems
+should use an application architecture where the thread recovering the
+database environment can explicitly terminate any process using the
+failed environment, or configure m4_db for test-and-set mutexes, or
+incorporate some form of long-running timer or watchdog process to wake
+or kill blocked processes should they block for too long.])
+
+m4_p([dnl
+Regardless, it makes little sense for multiple threads of control to
+simultaneously attempt recovery of a database environment, since the
+last one to run will remove all database environments created by the
+threads of control that ran before it. However, for some applications,
+it may make sense for applications to have a single thread of control
+that performs recovery and then removes the database environment, after
+which the application launches a number of processes, any of which will
+create the database environment and continue forward.])
+
+m4_p([dnl
+There are three common ways to architect m4_db Transactional Data Store
+applications. The one chosen is usually based on whether or not the
+application is comprised of a single process or group of processes
+descended from a single process (for example, a server started when the
+system first boots), or if the application is comprised of unrelated
+processes (for example, processes started by web connections or users
+logged into the system).])
+
+m4_nlistbegin
+m4_nlist([dnl
+The first way to architect Transactional Data Store applications is as
+a single process (the process may or may not be multithreaded.)
+
+m4_p([dnl
+When this process starts, it runs recovery on the database environment
+and then opens its databases. The application can subsequently create
+new threads of control as it chooses. Those threads of control can
+either share already open m4_db m4_ref(DbEnv) and m4_ref(Db) handles,
+or create their own. In this architecture, databases are rarely opened
+or closed when more than a single thread of control is running; that is,
+they are opened when only a single thread is running, and closed after
+all threads but one have exited. The last thread of control to exit
+closes the databases and the database environment.])
+
+m4_p([dnl
+This architecture is simplest to implement because thread serialization
+is easy and failure detection does not require monitoring multiple
+processes.])
+
+m4_p([dnl
+If the application's thread model allows processes to continue after
+thread failure, the m4_refT(dbenv_failchk) can be used to determine if
+the database environment is usable after thread failure. If the
+application does not call m4_ref(dbenv_failchk), or
+m4_ref(dbenv_failchk) returns m4_ref(DB_RUNRECOVERY), the application
+must behave as if there has been a system failure, performing recovery
+and re-creating the database environment. Once these actions have been
+taken, other threads of control can continue (as long as all existing
+m4_db handles are first discarded), or restarted.])])
+
+m4_nlist([dnl
+The second way to architect Transactional Data Store applications is as
+a group of related processes (the processes may or may not be
+multithreaded).
+
+m4_p([dnl
+This architecture requires the order in which threads of control are
+created be controlled to serialize database environment recovery.])
+
+m4_p([dnl
+In addition, this architecture requires that threads of control be
+monitored. If any thread of control exits with open m4_db handles, the
+application may call the m4_refT(dbenv_failchk) to detect lost mutexes
+and locks and determine if the application can continue. If the
+application does not call m4_ref(dbenv_failchk), or
+m4_ref(dbenv_failchk) returns that the database environment can no
+longer be used, the application must behave as if there has been a
+system failure, performing recovery and creating a new database
+environment. Once these actions have been taken, other threads of
+control can be continued (as long as all existing m4_db handles are
+first discarded), or restarted.])
+
+m4_p([dnl
+The easiest way to structure groups of related processes is to first
+create a single "watcher" process (often a script) that starts when the
+system first boots, runs recovery on the database environment and then
+creates the processes or threads that will actually perform work. The
+initial thread has no further responsibilities other than to wait on the
+threads of control it has started, to ensure none of them unexpectedly
+exit. If a thread of control exits, the watcher process optionally
+calls the m4_refT(dbenv_failchk). If the application does not call
+m4_ref(dbenv_failchk) or if m4_ref(dbenv_failchk) returns that the
+environment can no longer be used, the watcher kills all of the threads
+of control using the failed environment, runs recovery, and starts new
+threads of control to perform work.])])
+
+m4_nlist([dnl
+The third way to architect Transactional Data Store applications is as
+a group of unrelated processes (the processes may or may not be
+multithreaded). This is the most difficult architecture to implement
+because of the level of difficulty in some systems of finding and
+monitoring unrelated processes.
+
+m4_p([dnl
+One solution is to log a thread of control ID when a new m4_db handle
+is opened. For example, an initial "watcher" process could run recovery
+on the database environment and then create a sentinel file. Any
+"worker" process wanting to use the environment would check for the
+sentinel file. If the sentinel file does not exist, the worker would
+fail or wait for the sentinel file to be created. Once the sentinel
+file exists, the worker would register its process ID with the watcher
+(via shared memory, IPC or some other registry mechanism), and then the
+worker would open its m4_ref(DbEnv) handles and proceed. When the
+worker finishes using the environment, it would unregister its process
+ID with the watcher. The watcher periodically checks to ensure that no
+worker has failed while using the environment. If a worker fails while
+using the environment, the watcher removes the sentinel file, kills all
+of the workers currently using the environment, runs recovery on the
+environment, and finally creates a new sentinel file.])
+
+m4_p([dnl
+The weakness of this approach is that, on some systems, it is difficult
+to determine if an unrelated process is still running. For example,
+POSIX systems generally disallow sending signals to unrelated processes.
+The trick to monitoring unrelated processes is to find a system resource
+held by the process that will be modified if the process dies. On POSIX
+systems, flock- or fcntl-style locking will work, as will LockFile on
+Windows systems. Other systems may have to use other process-related
+information such as file reference counts or modification times. In the
+worst case, threads of control can be required to periodically
+re-register with the watcher process: if the watcher has not heard from
+a thread of control in a specified period of time, the watcher will take
+action, recovering the environment.])
+
+m4_p([dnl
+The m4_db library includes one built-in implementation of this approach,
+the m4_refT(dbenv_open)'s m4_ref(DB_REGISTER) flag:])
+
+m4_p([dnl
+If the m4_ref(DB_REGISTER) flag is set, each process opening the
+database environment first checks to see if recovery needs to be
+performed. If recovery needs to be performed for any reason (including
+the initial creation of the database environment), and
+m4_ref(DB_RECOVER) is also specified, recovery will be performed and
+then the open will proceed normally. If recovery needs to be performed
+and m4_ref(DB_RECOVER) is not specified, m4_ref(DB_RUNRECOVERY) will be
+returned. If recovery does not need to be performed, m4_ref(DB_RECOVER)
+will be ignored.])
+
+m4_p([dnl
+There are two additional requirements for the m4_ref(DB_REGISTER)
+architecture to work: First, all applications using the database
+environment must specify the m4_ref(DB_REGISTER) flag when opening the
+environment. However, there is no additional requirement the
+application choose a single process to recover the environment, as the
+first process to open the database environment will know to perform
+recovery. Second, there can only be a single m4_ref(DbEnv) handle per
+database environment in each process. As the m4_ref(DB_REGISTER)
+locking is per-process, not per-thread, multiple m4_ref(DbEnv) handles
+in a single environment could race with each other, potentially causing
+data corruption.])
+
+m4_p([dnl
+A second solution for groups of unrelated processes is also based on a
+"watcher process". This solution is intended for systems where it is
+not practical to monitor the processes sharing a database environment,
+but it is possible to monitor the environment to detect if a thread of
+control has failed holding open m4_db handles. This would be done by
+having a "watcher" process periodically call the m4_refT(dbenv_failchk).
+If m4_ref(dbenv_failchk) returns that the environment can no longer be
+used, the watcher would then take action, recovering the environment.])
+
+m4_p([dnl
+The weakness of this approach is that all threads of control using the
+environment must specify an "ID" function and an "is-alive" function
+using the m4_refT(dbenv_set_thread_id). (In other words, the m4_db
+library must be able to assign a unique ID to each thread of control,
+and additionally determine if the thread of control is still running.
+It can be difficult to portably provide that information in applications
+using a variety of different programming languages and running on a
+variety of different platforms.)])
+
+m4_p([dnl
+The two described approaches are different, and should not be combined.
+Applications might use either the m4_ref(DB_REGISTER) approach or the
+m4_ref(dbenv_failchk) approach, but not both together in the same
+application. For example, a POSIX application written as a library
+underneath a wide variety of interfaces and differing APIs might choose
+the m4_ref(DB_REGISTER) approach for a few reasons: first, it does not
+require making periodic calls to the m4_refT(dbenv_failchk); second,
+when implementing in a variety of languages, is may be more difficult
+to specify unique IDs for each thread of control; third, it may be more
+difficult determine if a thread of control is still running, as any
+particular thread of control is likely to lack sufficient permissions
+to signal other processes. Alternatively, an application with a
+dedicated watcher process, running with appropriate permissions, might
+choose the m4_ref(dbenv_failchk) approach as supporting higher overall
+throughput and reliability, as that approach allows the application to
+abort unresolved transactions and continue forward without having to
+recover the database environment.])])
+m4_nlistend
+
+m4_p([dnl
+Obviously, when implementing a process to monitor other threads of
+control, it is important the watcher process' code be as simple and
+well-tested as possible, because the application may hang if it fails.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/transapp/archival.cs b/db/docs_src/ref/transapp/archival.cs
new file mode 100644
index 000000000..af519d399
--- /dev/null
+++ b/db/docs_src/ref/transapp/archival.cs
@@ -0,0 +1,53 @@
+m4_ignore([dnl
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include <errno.h>
+#include <pthread.h>
+#include <stdarg.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include <db.h>
+
+void log_archlist(DB_ENV *);
+
+int
+main()
+{
+ DB_ENV *dbenv;
+ log_archlist(dbenv);
+ return (0);
+}])
+m4_indent([dnl
+void
+log_archlist(DB_ENV *dbenv)
+{
+ int ret;
+ char **begin, **list;
+m4_blank
+ /* Get the list of database files. */
+ if ((ret = dbenv-__GT__log_archive(dbenv,
+ &list, DB_ARCH_ABS | DB_ARCH_DATA)) != 0) {
+ dbenv-__GT__err(dbenv, ret, "DB_ENV-__GT__log_archive: DB_ARCH_DATA");
+ exit (1);
+ }
+ if (list != NULL) {
+ for (begin = list; *list != NULL; ++list)
+ printf("database file: %s\n", *list);
+ free (begin);
+ }
+m4_blank
+ /* Get the list of log files. */
+ if ((ret = dbenv-__GT__log_archive(dbenv,
+ &list, DB_ARCH_ABS | DB_ARCH_LOG)) != 0) {
+ dbenv-__GT__err(dbenv, ret, "DB_ENV-__GT__log_archive: DB_ARCH_LOG");
+ exit (1);
+ }
+ if (list != NULL) {
+ for (begin = list; *list != NULL; ++list)
+ printf("log file: %s\n", *list);
+ free (begin);
+ }
+}])
diff --git a/db/docs_src/ref/transapp/archival.so b/db/docs_src/ref/transapp/archival.so
new file mode 100644
index 000000000..5363d7191
--- /dev/null
+++ b/db/docs_src/ref/transapp/archival.so
@@ -0,0 +1,153 @@
+m4_comment([$Id: archival.so,v 10.56 2005/02/10 20:02:41 bostic Exp $])
+
+m4_ref_title(m4_tam Applications,
+ Database and log file archival,
+ [archival in @transaction protected applications, catastrophic recovery],
+ transapp/checkpoint, transapp/logfile)
+
+m4_p([dnl
+The third component of the administrative infrastructure, archival for
+catastrophic recovery, concerns the recoverability of the database in
+the face of catastrophic failure. Recovery after catastrophic failure
+is intended to minimize data loss when physical hardware has been
+destroyed -- for example, loss of a disk that contains databases or log
+files. Although the application may still experience data loss in this
+case, it is possible to minimize it.])
+
+m4_p([dnl
+First, you may want to periodically create snapshots (that is, backups)
+of your databases to make it possible to recover from catastrophic
+failure. These snapshots are either a standard backup, which creates a
+consistent picture of the databases as of a single instant in time; or
+an on-line backup (also known as a m4_italic(hot) backup), which creates
+a consistent picture of the databases as of an unspecified instant
+during the period of time when the snapshot was made. The advantage of
+a hot backup is that applications may continue to read and write the
+databases while the snapshot is being taken. The disadvantage of a hot
+backup is that more information must be archived, and recovery based on
+a hot backup is to an unspecified time between the start of the backup
+and when the backup is completed.])
+
+m4_p([dnl
+Second, after taking a snapshot, you should periodically archive the
+log files being created in the environment. It is often helpful to
+think of database archival in terms of full and incremental filesystem
+backups. A snapshot is a full backup, whereas the periodic archival of
+the current log files is an incremental backup. For example, it might
+be reasonable to take a full snapshot of a database environment weekly
+or monthly, and archive additional log files daily. Using both the
+snapshot and the log files, a catastrophic crash at any time can be
+recovered to the time of the most recent log archival; a time long after
+the original snapshot.])
+
+m4_p([dnl
+To create a standard backup of your database that can be used to recover
+from catastrophic failure, take the following steps:])
+
+m4_nlistbegin
+m4_nlist([Commit or abort all ongoing transactions.])
+m4_nlist([dnl
+Stop writing your databases until the backup has completed. Read-only
+operations are permitted, but no write operations and no filesystem
+operations may be performed (for example, the m4_ref(dbenv_remove) and
+m4_refT(dbh_open)s may not be called).])
+m4_nlist([dnl
+Force an environment checkpoint (see m4_ref(db_checkpoint) for more
+information).])
+m4_nlist([dnl
+Run m4_ref(db_archive) m4_option(s) to identify all the database data
+files, and copy them to a backup device such as CD-ROM, alternate disk,
+or tape.])
+m4_p([dnl
+If the database files are stored in a separate directory from the other
+m4_db files, it may be simpler to archive the directory itself instead
+of the individual files (see m4_ref(dbenv_set_data_dir) for additional
+information). m4_bold([Note: if any of the database files did not have
+an open m4_ref(Db) handle during the lifetime of the current log files,
+m4_ref(db_archive) will not list them in its output!]) This is another
+reason it may be simpler to use a separate database file directory and
+archive the entire directory instead of archiving only the files listed
+by m4_ref(db_archive).])
+m4_nlist([dnl
+Run m4_ref(db_archive) m4_option(l) to identify all the log files,
+and copy the last one (that is, the one with the highest number) to a
+backup device such as CD-ROM, alternate disk, or tape.])
+m4_nlistend
+
+m4_idefz(hot @backup)
+m4_p([dnl
+To create a m4_italic(hot) backup of your database that can be used to
+recover from catastrophic failure, take the following steps:])
+
+m4_nlistbegin
+m4_nlist([Archive your databases, as described in the previous step [#4].
+You do not have to halt ongoing transactions or force a checkpoint. As
+this is a hot backup, and the databases may be modified during the copy,
+the utility you use to copy the databases must read database pages
+atomically (as described by m4_link(M4RELDIR/ref/transapp/reclimit,
+[m4_db recoverability])).])
+m4_nlist([dnl
+Archive m4_bold(all) of the log files. The order of these two operations
+is required, and the database files must be archived m4_bold(before) the
+log files. This means that if the database files and log files are in
+the same directory, you cannot simply archive the directory; you must
+make sure that the correct order of archival is maintained.
+m4_p([dnl
+To archive your log files, run the m4_ref(db_archive) utility using
+the m4_option(l) option to identify all the database log files, and
+copy them to your backup media. If the database log files are stored
+in a separate directory from the other database files, it may be simpler
+to archive the directory itself instead of the individual files (see
+the m4_refT(dbenv_set_lg_dir) for more information).])])
+m4_nlistend
+
+m4_p([dnl
+To minimize the archival space needed for log files when doing a hot
+backup, run db_archive to identify those log files which are not in use.
+Log files which are not in use do not need to be included when creating
+a hot backup, and you can discard them or move them aside for use with
+previous backups (whichever is appropriate), before beginning the hot
+backup.])
+
+m4_p([dnl
+After completing one of these two sets of steps, the database
+environment can be recovered from catastrophic failure (see
+m4_link(recovery, Recovery procedures) for more information).])
+
+m4_p([dnl
+For an example of a hot backup implementation in the m4_db distribution,
+see the source code for the m4_ref(db_hotbackup) utility.])
+
+m4_p([dnl
+To update either a hot or cold backup so that recovery from catastrophic
+failure is possible to a new point in time, repeat step [#2] under the
+hot backup instructions and archive m4_bold(all) of the log files in the
+database environment. Each time both the database and log files are
+copied to backup media, you may discard all previous database snapshots
+and saved log files. Archiving additional log files does not allow you
+to discard either previous database snapshots or log files. Generally,
+updating a backup must be integrated with the application's log file
+removal procedures.])
+
+m4_p([dnl
+The time to restore from catastrophic failure is a function of the
+number of log records that have been written since the snapshot was
+originally created. Perhaps more importantly, the more separate pieces
+of backup media you use, the more likely it is that you will have a
+problem reading from one of them. For these reasons, it is often best
+to make snapshots on a regular basis.])
+
+m4_p([m4_bold([dnl
+Obviously, the reliability of your archive media will affect the safety
+of your data. For archival safety, ensure that you have multiple copies
+of your database backups, verify that your archival media is error-free
+and readable, and that copies of your backups are stored offsite!])])
+
+m4_p([dnl
+The functionality provided by the m4_ref(db_archive) utility is also
+available directly from the m4_db library. The following code fragment
+prints out a list of log and database files that need to be archived:])
+
+include(ref/transapp/archival.cs)
+
+m4_page_footer
diff --git a/db/docs_src/ref/transapp/atomicity.so b/db/docs_src/ref/transapp/atomicity.so
new file mode 100644
index 000000000..a8c3d2eaf
--- /dev/null
+++ b/db/docs_src/ref/transapp/atomicity.so
@@ -0,0 +1,55 @@
+m4_comment([$Id: atomicity.so,v 10.3 2002/05/17 15:48:41 bostic Exp $])
+
+m4_ref_title(m4_tam Applications,
+ Atomicity,, transapp/put, transapp/inc)
+
+m4_p([dnl
+The second reason listed for using transactions was m4_italic(atomicity).
+Atomicity means that multiple operations can be grouped into a single
+logical entity, that is, other threads of control accessing the database
+will either see all of the changes or none of the changes. Atomicity
+is important for applications wanting to update two related databases
+(for example, a primary database and secondary index) in a single
+logical action. Or, for an application wanting to update multiple
+records in one database in a single logical action.])
+
+m4_p([dnl
+Any number of operations on any number of databases can be included in
+a single transaction to ensure the atomicity of the operations. There
+is, however, a trade-off between the number of operations included in
+a single transaction and both throughput and the possibility of
+deadlock. The reason for this is because transactions acquire locks
+throughout their lifetime and do not release the locks until commit or
+abort time. So, the more operations included in a transaction, the more
+likely it is that a transaction will block other operations and that
+deadlock will occur. However, each transaction commit requires a
+synchronous disk I/O, so grouping multiple operations into a transaction
+can increase overall throughput. (There is one exception to this: the
+m4_ref(DB_TXN_WRITE_NOSYNC) and m4_ref(DB_TXN_NOSYNC) flags cause
+transactions to exhibit the ACI (atomicity, consistency and isolation)
+properties, but not D (durability); avoiding the write and/or
+synchronous disk I/O on transaction commit greatly increases transaction
+throughput for some applications.)])
+
+m4_p([dnl
+When applications do create complex transactions, they often avoid
+having more than one complex transaction at a time because simple
+operations like a single m4_ref(dbh_put) are unlikely to deadlock with
+each other or the complex transaction; while multiple complex
+transactions are likely to deadlock with each other because they will
+both acquire many locks over their lifetime. Alternatively, complex
+transactions can be broken up into smaller sets of operations, and each
+of those sets may be encapsulated in a nested transaction. Because
+nested transactions may be individually aborted and retried without
+causing the entire transaction to be aborted, this allows complex
+transactions to proceed even in the face of heavy contention, repeatedly
+trying the suboperations until they succeed.])
+
+m4_p([dnl
+It is also helpful to order operations within a transaction; that is,
+access the databases and items within the databases in the same order,
+to the extent possible, in all transactions. Accessing databases and
+items in different orders greatly increases the likelihood of operations
+being blocked and failing due to deadlocks.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/transapp/checkpoint.cs b/db/docs_src/ref/transapp/checkpoint.cs
new file mode 100644
index 000000000..551444a84
--- /dev/null
+++ b/db/docs_src/ref/transapp/checkpoint.cs
@@ -0,0 +1,113 @@
+m4_ignore([dnl
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include <errno.h>
+#include <pthread.h>
+#include <stdarg.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include <db.h>
+
+void *checkpoint_thread(void *);
+
+int add_cat(DB_ENV *a, DB *b, char *c, ...) {
+ a = NULL; b = NULL; c = NULL;
+ return (0);
+}
+int add_color(DB_ENV *a, DB *b, char *c, int d) {
+ a = NULL; b = NULL; c = NULL; d = 0;
+ return (0);
+}
+int add_fruit(DB_ENV *a, DB *b, char *c, char *d) {
+ a = NULL; b = NULL; c = NULL; d = 0;
+ return (0);
+}
+void db_open(DB_ENV *a, DB **b, char *c, int d) {
+ a = NULL; b = NULL; c = NULL; d = 0;
+}
+void usage(){}
+void env_open(DB_ENV **a) { a = NULL; }
+void env_dir_create() {}
+])
+m4_indent([dnl
+int
+main(int argc, char *argv[])
+{
+ extern int optind;
+ DB *db_cats, *db_color, *db_fruit;
+ DB_ENV *dbenv;
+ pthread_t ptid;
+ int ch;
+m4_blank
+ while ((ch = getopt(argc, argv, "")) != EOF)
+ switch (ch) {
+ case '?':
+ default:
+ usage();
+ }
+ argc -= optind;
+ argv += optind;
+m4_blank
+ env_dir_create();
+ env_open(&dbenv);
+m4_blank
+m4_cbold([dnl
+ /* Start a checkpoint thread. */
+ if ((errno = pthread_create(
+ &ptid, NULL, checkpoint_thread, (void *)dbenv)) != 0) {
+ fprintf(stderr,
+ "txnapp: failed spawning checkpoint thread: %s\n",
+ strerror(errno));
+ exit (1);
+ }])
+m4_blank
+ /* Open database: Key is fruit class; Data is specific type. */
+ db_open(dbenv, &db_fruit, "fruit", 0);
+m4_blank
+ /* Open database: Key is a color; Data is an integer. */
+ db_open(dbenv, &db_color, "color", 0);
+m4_blank
+ /*
+ * Open database:
+ * Key is a name; Data is: company name, cat breeds.
+ */
+ db_open(dbenv, &db_cats, "cats", 1);
+m4_blank
+ add_fruit(dbenv, db_fruit, "apple", "yellow delicious");
+m4_blank
+ add_color(dbenv, db_color, "blue", 0);
+ add_color(dbenv, db_color, "blue", 3);
+m4_blank
+ add_cat(dbenv, db_cats,
+ "Amy Adams",
+ "Oracle",
+ "abyssinian",
+ "bengal",
+ "chartreaux",
+ NULL);
+m4_blank
+ return (0);
+}
+m4_blank
+m4_cbold([dnl
+void *
+checkpoint_thread(void *arg)
+{
+ DB_ENV *dbenv;
+ int ret;
+m4_blank
+ dbenv = arg;
+ dbenv-__GT__errx(dbenv, "Checkpoint thread: %lu", (u_long)pthread_self());
+m4_blank
+ /* Checkpoint once a minute. */
+ for (;; sleep(60))
+ if ((ret = dbenv-__GT__txn_checkpoint(dbenv, 0, 0, 0)) != 0) {
+ dbenv-__GT__err(dbenv, ret, "checkpoint thread");
+ exit (1);
+ }
+m4_blank
+ /* NOTREACHED */
+}])])
diff --git a/db/docs_src/ref/transapp/checkpoint.so b/db/docs_src/ref/transapp/checkpoint.so
new file mode 100644
index 000000000..ef4c94307
--- /dev/null
+++ b/db/docs_src/ref/transapp/checkpoint.so
@@ -0,0 +1,46 @@
+m4_comment([$Id: checkpoint.so,v 10.22 2003/12/09 18:57:46 bostic Exp $])
+
+m4_ref_title(m4_tam Applications,
+ Checkpoints,
+ checkpoints in @transaction protected applications,
+ transapp/deadlock, transapp/archival)
+
+m4_p([dnl
+The second component of the infrastructure is performing checkpoints of
+the log files. Performing checkpoints is necessary for two reasons.])
+
+m4_p([dnl
+First, you may be able to remove m4_db log files from your database
+environment after a checkpoint. Change records are written into the log
+files when databases are modified, but the actual changes to the
+database are not necessarily written to disk. When a checkpoint is
+performed, changes to the database are written into the backing database
+file. Once the database pages are written, log files can be archived
+and removed from the database environment because they will never be
+needed for anything other than catastrophic failure. (Log files which
+are involved in active transactions may not be removed, and there must
+always be at least one log file in the database environment.)])
+
+m4_p([dnl
+The second reason to perform checkpoints is because checkpoint frequency
+is inversely proportional to the amount of time it takes to run database
+recovery after a system or application failure. This is because
+recovery after failure has to redo or undo changes only since the last
+checkpoint, as changes before the checkpoint have all been flushed to
+the databases.])
+
+m4_p([dnl
+m4_db provides a separate utility, m4_ref(db_checkpoint), which can be
+used to perform checkpoints. Alternatively, applications can write
+their own checkpoint utility using the underlying m4_ref(txn_checkpoint)
+function. The following code fragment checkpoints the database
+environment every 60 seconds:])
+
+include(ref/transapp/checkpoint.cs)
+
+m4_p([dnl
+Because checkpoints can be quite expensive, choosing how often to
+perform a checkpoint is a common tuning parameter for m4_db
+applications.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/transapp/cursor.cs b/db/docs_src/ref/transapp/cursor.cs
new file mode 100644
index 000000000..703a7f655
--- /dev/null
+++ b/db/docs_src/ref/transapp/cursor.cs
@@ -0,0 +1,169 @@
+m4_ignore([dnl
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include <errno.h>
+#include <stdarg.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include <db.h>
+
+#define MAXIMUM_RETRY 5
+
+int add_cat(DB_ENV *dbenv, DB *db, char *name, ...);
+
+int add_color(DB_ENV *a, DB *b, char *c, int d) {
+ a = NULL; b = NULL; c = NULL; d = 0;
+ return (0);
+}
+int add_fruit(DB_ENV *a, DB *b, char *c, char *d) {
+ a = NULL; b = NULL; c = NULL; d = 0;
+ return (0);
+}
+void db_open(DB_ENV *a, DB **b, char *c, int d) {
+ a = NULL; b = NULL; c = NULL; d = 0;
+}
+void usage(){}
+void env_open(DB_ENV **a) { a = NULL; }
+void env_dir_create() {}
+])
+m4_indent([dnl
+int
+main(int argc, char *argv[])
+{
+ extern int optind;
+ DB *db_cats, *db_color, *db_fruit;
+ DB_ENV *dbenv;
+ int ch;
+m4_blank
+ while ((ch = getopt(argc, argv, "")) != EOF)
+ switch (ch) {
+ case '?':
+ default:
+ usage();
+ }
+ argc -= optind;
+ argv += optind;
+m4_blank
+ env_dir_create();
+ env_open(&dbenv);
+m4_blank
+ /* Open database: Key is fruit class; Data is specific type. */
+ db_open(dbenv, &db_fruit, "fruit", 0);
+m4_blank
+ /* Open database: Key is a color; Data is an integer. */
+ db_open(dbenv, &db_color, "color", 0);
+m4_blank
+ /*
+ * Open database:
+ * Key is a name; Data is: company name, cat breeds.
+ */
+ db_open(dbenv, &db_cats, "cats", 1);
+m4_blank
+ add_fruit(dbenv, db_fruit, "apple", "yellow delicious");
+m4_blank
+ add_color(dbenv, db_color, "blue", 0);
+ add_color(dbenv, db_color, "blue", 3);
+m4_blank
+m4_cbold([dnl
+ add_cat(dbenv, db_cats,
+ "Amy Adams",
+ "Oracle",
+ "abyssinian",
+ "bengal",
+ "chartreaux",
+ NULL);])
+m4_blank
+ return (0);
+}
+m4_blank
+m4_cbold([dnl
+int
+add_cat(DB_ENV *dbenv, DB *db, char *name, ...)
+{
+ va_list ap;
+ DBC *dbc;
+ DBT key, data;
+ DB_TXN *tid;
+ int fail, ret, t_ret;
+ char *s;
+m4_blank
+ /* Initialization. */
+ fail = 0;
+m4_blank
+ memset(&key, 0, sizeof(key));
+ memset(&data, 0, sizeof(data));
+ key.data = name;
+ key.size = strlen(name);
+m4_blank
+retry: /* Begin the transaction. */
+ if ((ret = dbenv-__GT__txn_begin(dbenv, NULL, &tid, 0)) != 0) {
+ dbenv-__GT__err(dbenv, ret, "DB_ENV-__GT__txn_begin");
+ exit (1);
+ }
+m4_blank
+ /* Delete any previously existing item. */
+ switch (ret = db-__GT__del(db, tid, &key, 0)) {
+ case 0:
+ case DB_NOTFOUND:
+ break;
+ case DB_LOCK_DEADLOCK:
+ default:
+ /* Retry the operation. */
+ if ((t_ret = tid-__GT__abort(tid)) != 0) {
+ dbenv-__GT__err(dbenv, t_ret, "DB_TXN-__GT__abort");
+ exit (1);
+ }
+ if (fail++ == MAXIMUM_RETRY)
+ return (ret);
+ goto retry;
+ }
+m4_blank
+ /* Create a cursor. */
+ if ((ret = db-__GT__cursor(db, tid, &dbc, 0)) != 0) {
+ dbenv-__GT__err(dbenv, ret, "db-__GT__cursor");
+ exit (1);
+ }
+m4_blank
+ /* Append the items, in order. */
+ va_start(ap, name);
+ while ((s = va_arg(ap, char *)) != NULL) {
+ data.data = s;
+ data.size = strlen(s);
+ switch (ret = dbc-__GT__c_put(dbc, &key, &data, DB_KEYLAST)) {
+ case 0:
+ break;
+ case DB_LOCK_DEADLOCK:
+ default:
+ va_end(ap);
+m4_blank
+ /* Retry the operation. */
+ if ((t_ret = dbc-__GT__c_close(dbc)) != 0) {
+ dbenv-__GT__err(
+ dbenv, t_ret, "dbc-__GT__c_close");
+ exit (1);
+ }
+ if ((t_ret = tid-__GT__abort(tid)) != 0) {
+ dbenv-__GT__err(dbenv, t_ret, "DB_TXN-__GT__abort");
+ exit (1);
+ }
+ if (fail++ == MAXIMUM_RETRY)
+ return (ret);
+ goto retry;
+ }
+ }
+ va_end(ap);
+m4_blank
+ /* Success: commit the change. */
+ if ((ret = dbc-__GT__c_close(dbc)) != 0) {
+ dbenv-__GT__err(dbenv, ret, "dbc-__GT__c_close");
+ exit (1);
+ }
+ if ((ret = tid-__GT__commit(tid, 0)) != 0) {
+ dbenv-__GT__err(dbenv, ret, "DB_TXN-__GT__commit");
+ exit (1);
+ }
+ return (0);
+}])])
diff --git a/db/docs_src/ref/transapp/cursor.so b/db/docs_src/ref/transapp/cursor.so
new file mode 100644
index 000000000..96bdb13fd
--- /dev/null
+++ b/db/docs_src/ref/transapp/cursor.so
@@ -0,0 +1,24 @@
+m4_comment([$Id: cursor.so,v 1.12 2004/03/05 21:47:36 bostic Exp $])
+
+m4_ref_title(m4_tam Applications,
+ Transactional cursors,, transapp/read, transapp/nested)
+
+m4_p([dnl
+m4_db cursors may be used inside a transaction, exactly as any other
+m4_ref(Db) method. The enclosing transaction ID must be specified when
+the cursor is created, but it does not then need to be further specified
+on operations performed using the cursor. One important point to
+remember is that a cursor m4_bold([must be closed]) before the enclosing
+transaction is committed or aborted.])
+
+m4_p([dnl
+The following code fragment uses a cursor to store a new key in the cats
+database with four associated data items. The key is a name. The data
+items are a company name and a list of the breeds of cat owned. Each
+of the data entries is stored as a duplicate data item. In this
+example, transactions are necessary to ensure that either all or none
+of the data items appear in case of system or application failure.])
+
+include(ref/transapp/cursor.cs)
+
+m4_page_footer
diff --git a/db/docs_src/ref/transapp/data_open.cs b/db/docs_src/ref/transapp/data_open.cs
new file mode 100644
index 000000000..9ac0b5d12
--- /dev/null
+++ b/db/docs_src/ref/transapp/data_open.cs
@@ -0,0 +1,94 @@
+m4_ignore([dnl
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include <errno.h>
+#include <stdarg.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include <db.h>
+
+int db_open(DB_ENV *, DB **, char *, int);
+
+void usage(){}
+void env_open(DB_ENV **a) { a = NULL; }
+void env_dir_create() {}
+])
+m4_indent([dnl
+int
+main(int argc, char *argv[])
+{
+ extern int optind;
+ DB *db_cats, *db_color, *db_fruit;
+ DB_ENV *dbenv;
+ int ch;
+m4_blank
+ while ((ch = getopt(argc, argv, "")) != EOF)
+ switch (ch) {
+ case '?':
+ default:
+ usage();
+ }
+ argc -= optind;
+ argv += optind;
+m4_blank
+ env_dir_create();
+ env_open(&dbenv);
+m4_blank
+m4_cbold([dnl
+ /* Open database: Key is fruit class; Data is specific type. */
+ if (db_open(dbenv, &db_fruit, "fruit", 0))
+ return (1);
+m4_blank
+ /* Open database: Key is a color; Data is an integer. */
+ if (db_open(dbenv, &db_color, "color", 0))
+ return (1);
+m4_blank
+ /*
+ * Open database:
+ * Key is a name; Data is: company name, cat breeds.
+ */
+ if (db_open(dbenv, &db_cats, "cats", 1))
+ return (1);])
+m4_blank
+ return (0);
+}
+m4_blank
+m4_cbold([dnl
+int
+db_open(DB_ENV *dbenv, DB **dbp, char *name, int dups)
+{
+ DB *db;
+ int ret;
+m4_blank
+ /* Create the database handle. */
+ if ((ret = db_create(&db, dbenv, 0)) != 0) {
+ dbenv-__GT__err(dbenv, ret, "db_create");
+ return (1);
+ }
+m4_blank
+ /* Optionally, turn on duplicate data items. */
+ if (dups && (ret = db-__GT__set_flags(db, DB_DUP)) != 0) {
+ (void)db-__GT__close(db, 0);
+ dbenv-__GT__err(dbenv, ret, "db-__GT__set_flags: DB_DUP");
+ return (1);
+ }
+m4_blank
+ /*
+ * Open a database in the environment:
+ * create if it doesn't exist
+ * free-threaded handle
+ * read/write owner only
+ */
+ if ((ret = db-__GT__open(db, NULL, name, NULL, DB_BTREE,
+ DB_AUTO_COMMIT | DB_CREATE | DB_THREAD, S_IRUSR | S_IWUSR)) != 0) {
+ (void)db-__GT__close(db, 0);
+ dbenv-__GT__err(dbenv, ret, "db-__GT__open: %s", name);
+ return (1);
+ }
+m4_blank
+ *dbp = db;
+ return (0);
+}])])
diff --git a/db/docs_src/ref/transapp/data_open.so b/db/docs_src/ref/transapp/data_open.so
new file mode 100644
index 000000000..98b45675d
--- /dev/null
+++ b/db/docs_src/ref/transapp/data_open.so
@@ -0,0 +1,68 @@
+m4_comment([$Id: data_open.so,v 1.13 2004/04/28 13:15:29 bostic Exp $])
+
+m4_ref_title(m4_tam Applications,
+ Opening the databases,, transapp/env_open, transapp/put)
+
+m4_p([dnl
+Next, we open three databases ("color" and "fruit" and "cats"), in the
+database environment. Again, our m4_ref(Db) database handles are
+declared to be free-threaded using the m4_ref(DB_THREAD) flag, and so
+may be used by any number of threads we subsequently create.])
+
+include(ref/transapp/data_open.cs)
+
+m4_p([dnl
+After opening the database, we can use the m4_ref(db_stat) utility to
+display information about a database we have created:])
+
+m4_indent([dnl
+prompt__GT__ db_stat -h TXNAPP -d color
+53162 Btree magic number.
+8 Btree version number.
+Flags:
+2 Minimum keys per-page.
+8192 Underlying database page size.
+1 Number of levels in the tree.
+0 Number of unique keys in the tree.
+0 Number of data items in the tree.
+0 Number of tree internal pages.
+0 Number of bytes free in tree internal pages (0% ff).
+1 Number of tree leaf pages.
+8166 Number of bytes free in tree leaf pages (0.% ff).
+0 Number of tree duplicate pages.
+0 Number of bytes free in tree duplicate pages (0% ff).
+0 Number of tree overflow pages.
+0 Number of bytes free in tree overflow pages (0% ff).
+0 Number of pages on the free list.])
+
+m4_p([dnl
+The database open must be enclosed within a transaction in order to be
+recoverable. The transaction will ensure that created files are
+re-created in recovered environments (or do not appear at all).
+Additional database operations or operations on other databases can be
+included in the same transaction, of course. In the simple case, where
+the open is the only operation in the transaction, an application can
+set the m4_ref(DB_AUTO_COMMIT) flag instead of creating and managing
+its own transaction handle. The m4_ref(DB_AUTO_COMMIT) flag will
+internally wrap the operation in a transaction, simplifying application
+code.])
+
+m4_p([dnl
+The previous example is the simplest case of transaction protection for
+database open. Obviously, additional database operations can be done
+in the scope of the same transaction. For example, an application
+maintaining a list of the databases in a database environment in a
+well-known file might include an update of the list in the same
+transaction in which the database is created. Or, an application might
+create both a primary and secondary database in a single transaction.])
+
+m4_p([dnl
+m4_ref(Db) handles that will later be used for transactionally protected
+database operations must be opened within a transaction. Specifying a
+transaction handle to database operations using m4_ref(Db) handles not
+opened within a transaction will return an error. Similarly, not
+specifying a transaction handle to database operations that will modify
+the database, using handles that were opened within a transaction, will
+also return an error.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/transapp/deadlock.cs b/db/docs_src/ref/transapp/deadlock.cs
new file mode 100644
index 000000000..d2c0caac2
--- /dev/null
+++ b/db/docs_src/ref/transapp/deadlock.cs
@@ -0,0 +1,66 @@
+m4_ignore([dnl
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include <errno.h>
+#include <pthread.h>
+#include <stdarg.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include <db.h>
+
+void env_open(DB_ENV **);
+
+#define ENV_DIRECTORY "/tmp"
+
+int
+main()
+{
+ DB_ENV *dbenv;
+ env_open(&dbenv);
+ return (0);
+}])
+m4_indent([dnl
+void
+env_open(DB_ENV **dbenvp)
+{
+ DB_ENV *dbenv;
+ int ret;
+m4_blank
+ /* Create the environment handle. */
+ if ((ret = db_env_create(&dbenv, 0)) != 0) {
+ fprintf(stderr,
+ "txnapp: db_env_create: %s\n", db_strerror(ret));
+ exit (1);
+ }
+m4_blank
+ /* Set up error handling. */
+ dbenv-__GT__set_errpfx(dbenv, "txnapp");
+ dbenv-__GT__set_errfile(dbenv, stderr);
+m4_blank
+m4_cbold([dnl
+ /* Do deadlock detection internally. */
+ if ((ret = dbenv-__GT__set_lk_detect(dbenv, DB_LOCK_DEFAULT)) != 0) {
+ dbenv-__GT__err(dbenv, ret, "set_lk_detect: DB_LOCK_DEFAULT");
+ exit (1);
+ }])
+m4_blank
+ /*
+ * Open a transactional environment:
+ * create if it doesn't exist
+ * free-threaded handle
+ * run recovery
+ * read/write owner only
+ */
+ if ((ret = dbenv-__GT__open(dbenv, ENV_DIRECTORY,
+ DB_CREATE | DB_INIT_LOCK | DB_INIT_LOG |
+ DB_INIT_MPOOL | DB_INIT_TXN | DB_RECOVER | DB_THREAD,
+ S_IRUSR | S_IWUSR)) != 0) {
+ dbenv-__GT__err(dbenv, ret, "dbenv-__GT__open: %s", ENV_DIRECTORY);
+ exit (1);
+ }
+m4_blank
+ *dbenvp = dbenv;
+}])
diff --git a/db/docs_src/ref/transapp/deadlock.so b/db/docs_src/ref/transapp/deadlock.so
new file mode 100644
index 000000000..608cb5cd2
--- /dev/null
+++ b/db/docs_src/ref/transapp/deadlock.so
@@ -0,0 +1,65 @@
+m4_comment([$Id: deadlock.so,v 10.20 2002/06/24 14:51:07 bostic Exp $])
+
+m4_ref_title(m4_tam Applications,
+ Deadlock detection,
+ deadlock detection in @transaction protected applications,
+ transapp/admin, transapp/checkpoint)
+
+m4_p([dnl
+The first component of the infrastructure, m4_italic(deadlock
+detection), is not so much a requirement specific to
+transaction-protected applications, but instead is necessary for almost
+all applications in which more than a single thread of control will be
+accessing the database at one time. Even when m4_db automatically
+handles database locking, it is normally possible for deadlock to occur.
+Because the underlying database access methods may update multiple pages
+during a single m4_db API call, deadlock is possible even when threads
+of control are making only single update calls into the database. The
+exception to this rule is when all the threads of control accessing the
+database are read-only or when the m4_cam product is used; the m4_cam
+product guarantees deadlock-free operation at the expense of reduced
+concurrency.])
+
+m4_p([dnl
+When the deadlock occurs, two (or more) threads of control each request
+additional locks that can never be granted because one of the threads
+of control waiting holds the requested resource. For example, consider
+two processes: A and B. Let's say that A obtains a write lock on item
+X, and B obtains a write lock on item Y. Then, A requests a lock on Y,
+and B requests a lock on X. A will wait until resource Y becomes
+available and B will wait until resource X becomes available.
+Unfortunately, because both A and B are waiting, neither will release
+the locks they hold and neither will ever obtain the resource on which
+it is waiting. For another example, consider two transactions, A and
+B, each of which may want to modify item X. Assume that transaction A
+obtains a read lock on X and confirms that a modification is needed.
+Then it is descheduled and the thread containing transaction B runs.
+At that time, transaction B obtains a read lock on X and confirms that
+it also wants to make a modification. Both transactions A and B will
+block when they attempt to upgrade their read locks to write locks
+because the other already holds a read lock. This is a deadlock.
+Transaction A cannot make forward progress until Transaction B releases
+its read lock on X, but Transaction B cannot make forward progress until
+Transaction A releases its read lock on X.])
+
+m4_p([dnl
+In order to detect that deadlock has happened, a separate process or
+thread must review the locks currently held in the database. If
+deadlock has occurred, a victim must be selected, and that victim will
+then return the error m4_ref(DB_LOCK_DEADLOCK) from whatever m4_db call
+it was making. m4_db provides a separate UNIX-style utility that can
+be used to perform this deadlock detection, named m4_ref(db_deadlock).
+Alternatively, applications can create their own deadlock utility or
+thread using the underlying m4_ref(lock_detect) function, or specify
+that m4_db run the deadlock detector internally whenever there is a
+conflict over a lock (see m4_ref(dbenv_set_lk_detect) for more
+information). The following code fragment does the latter:])
+
+include(ref/transapp/deadlock.cs)
+
+m4_p([dnl
+Deciding how often to run the deadlock detector and which of the
+deadlocked transactions will be forced to abort when the deadlock is
+detected is a common tuning parameter for m4_db applications.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/transapp/env_open.cs b/db/docs_src/ref/transapp/env_open.cs
new file mode 100644
index 000000000..9b0c8ecaf
--- /dev/null
+++ b/db/docs_src/ref/transapp/env_open.cs
@@ -0,0 +1,99 @@
+m4_indent([dnl
+m4_include(sys/types.h)
+m4_include(sys/stat.h)
+m4_blank
+m4_include(errno.h)
+m4_include(stdarg.h)
+m4_include(stdlib.h)
+m4_include(string.h)
+m4_include(unistd.h)
+m4_blank
+m4_include(db.h)
+m4_blank
+#define ENV_DIRECTORY "TXNAPP"
+m4_blank
+void env_dir_create(void);
+void env_open(DB_ENV **);
+m4_blank
+m4_ignore([void usage(){}])
+int
+main(int argc, char *argv[])
+{
+ extern int optind;
+ DB *db_cats, *db_color, *db_fruit;
+ DB_ENV *dbenv;
+ int ch;
+m4_ignore([db_fruit = NULL; db_color = NULL; db_cats = NULL;])
+m4_blank
+ while ((ch = getopt(argc, argv, "")) != EOF)
+ switch (ch) {
+ case '?':
+ default:
+ usage();
+ }
+ argc -= optind;
+ argv += optind;
+m4_blank
+ env_dir_create();
+ env_open(&dbenv);
+m4_blank
+ return (0);
+}
+m4_blank
+void
+env_dir_create()
+{
+ struct stat sb;
+m4_blank
+ /*
+ * If the directory exists, we're done. We do not further check
+ * the type of the file, DB will fail appropriately if it's the
+ * wrong type.
+ */
+ if (stat(ENV_DIRECTORY, &sb) == 0)
+ return;
+m4_blank
+ /* Create the directory, read/write/access owner only. */
+ if (mkdir(ENV_DIRECTORY, S_IRWXU) != 0) {
+ fprintf(stderr,
+ "txnapp: mkdir: %s: %s\n", ENV_DIRECTORY, strerror(errno));
+ exit (1);
+ }
+}
+m4_blank
+void
+env_open(DB_ENV **dbenvp)
+{
+ DB_ENV *dbenv;
+ int ret;
+m4_blank
+ /* Create the environment handle. */
+ if ((ret = db_env_create(&dbenv, 0)) != 0) {
+ fprintf(stderr,
+ "txnapp: db_env_create: %s\n", db_strerror(ret));
+ exit (1);
+ }
+m4_blank
+ /* Set up error handling. */
+ dbenv-__GT__set_errpfx(dbenv, "txnapp");
+ dbenv-__GT__set_errfile(dbenv, stderr);
+m4_blank
+ /*
+ * Open a transactional environment:
+ * create if it doesn't exist
+ * free-threaded handle
+ * run recovery
+ * read/write owner only
+ */
+ if ((ret = dbenv-__GT__open(dbenv, ENV_DIRECTORY,
+ DB_CREATE | DB_INIT_LOCK | DB_INIT_LOG |
+ DB_INIT_MPOOL | DB_INIT_TXN | DB_RECOVER | DB_THREAD,
+ S_IRUSR | S_IWUSR)) != 0) {
+ (void)dbenv-__GT__close(dbenv, 0);
+ fprintf(stderr, "dbenv-__GT__open: %s: %s\n",
+ ENV_DIRECTORY, db_strerror(ret));
+ exit (1);
+ }
+m4_blank
+ *dbenvp = dbenv;
+}])
diff --git a/db/docs_src/ref/transapp/env_open.so b/db/docs_src/ref/transapp/env_open.so
new file mode 100644
index 000000000..04429a525
--- /dev/null
+++ b/db/docs_src/ref/transapp/env_open.so
@@ -0,0 +1,78 @@
+m4_comment([$Id: env_open.so,v 1.4 2002/06/24 14:51:07 bostic Exp $])
+
+m4_ref_title(m4_tam Applications,
+ Opening the environment,, transapp/app, transapp/data_open)
+
+m4_p([dnl
+Creating transaction-protected applications using the m4_db library is
+quite easy. Applications first use m4_ref(dbenv_open) to initialize
+the database environment. Transaction-protected applications normally
+require all four m4_db subsystems, so the m4_ref(DB_INIT_MPOOL),
+m4_ref(DB_INIT_LOCK), m4_ref(DB_INIT_LOG), and m4_ref(DB_INIT_TXN) flags
+should be specified.])
+
+m4_p([dnl
+Once the application has called m4_ref(dbenv_open), it opens its
+databases within the environment. Once the databases are opened, the
+application makes changes to the databases inside of transactions. Each
+set of changes that entails a unit of work should be surrounded by the
+appropriate m4_ref(txn_begin), m4_ref(txn_commit), and m4_ref(txn_abort)
+calls. The m4_db access methods will make the appropriate calls into
+the Lock, Log and Memory Pool subsystems in order to guarantee
+transaction semantics. When the application is ready to exit, all
+outstanding transactions should have been committed or aborted.])
+
+m4_p([dnl
+Databases accessed by a transaction must not be closed during the
+transaction. Once all outstanding transactions are finished, all open
+m4_db files should be closed. When the m4_db database files have been
+closed, the environment should be closed by calling
+m4_ref(dbenv_close).])
+
+m4_p([dnl
+The following code fragment creates the database environment directory
+then opens the environment, running recovery. Our m4_ref(DbEnv)
+database environment handle is declared to be free-threaded using the
+m4_ref(DB_THREAD) flag, and so may be used by any number of threads that
+we may subsequently create.])
+
+include(ref/transapp/env_open.cs)
+
+m4_p([dnl
+After running this initial program, we can use the m4_ref(db_stat)
+utility to display the contents of the environment directory:])
+
+m4_indent([dnl
+prompt__GT__ db_stat -e -h TXNAPP
+3.2.1 Environment version.
+120897 Magic number.
+0 Panic value.
+1 References.
+6 Locks granted without waiting.
+0 Locks granted after waiting.
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+Mpool Region: 4.
+264KB Size (270336 bytes).
+-1 Segment ID.
+1 Locks granted without waiting.
+0 Locks granted after waiting.
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+Log Region: 3.
+96KB Size (98304 bytes).
+-1 Segment ID.
+3 Locks granted without waiting.
+0 Locks granted after waiting.
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+Lock Region: 2.
+240KB Size (245760 bytes).
+-1 Segment ID.
+1 Locks granted without waiting.
+0 Locks granted after waiting.
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+Txn Region: 5.
+8KB Size (8192 bytes).
+-1 Segment ID.
+1 Locks granted without waiting.
+0 Locks granted after waiting.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/transapp/fail.so b/db/docs_src/ref/transapp/fail.so
new file mode 100644
index 000000000..0f6489f05
--- /dev/null
+++ b/db/docs_src/ref/transapp/fail.so
@@ -0,0 +1,74 @@
+m4_comment([$Id: fail.so,v 10.2 2005/10/19 21:10:31 bostic Exp $])
+
+m4_ref_title(m4_tam Applications,
+ Handling failure in Transactional Data Store applications,,
+ transapp/term, transapp/app)
+
+m4_p([dnl
+When building Transactional Data Store applications, there are design
+issues to consider whenever a thread of control with open m4_db handles
+fails for any reason (where a thread of control may be either a true
+thread or a process).])
+
+m4_p([dnl
+The first case is handling system failure: if the system fails, the
+database environment and the databases may be left in a corrupted state.
+In this case, recovery must be performed on the database environment
+before any further action is taken, in order to:])
+
+m4_bulletbegin
+m4_bullet([recover the database environment resources,])
+m4_bullet([dnl
+release any locks or mutexes that may have been held to avoid starvation
+as the remaining threads of control convoy behind the held locks, and])
+m4_bullet([dnl
+resolve any partially completed operations that may have left a database
+in an inconsistent or corrupted state.])
+m4_bulletend
+
+m4_p([dnl
+For details on performing recovery, see the m4_link(recovery, [Recovery
+procedures]).])
+
+m4_p([dnl
+The second case is handling the failure of a thread of control. There
+are resources maintained in database environments that may be left
+locked or corrupted if a thread of control exits unexpectedly. These
+resources include data structure mutexes, logical database locks and
+unresolved transactions (that is, transactions which were never aborted
+or committed). While Transactional Data Store applications can treat
+the failure of a thread of control in the same way as they do a system
+failure, they have an alternative choice, the m4_refT(dbenv_failchk).])
+
+m4_p([dnl
+The m4_refT(dbenv_failchk) will return m4_ref(DB_RUNRECOVERY) if the
+database environment is unusable as a result of the thread of control
+failure. (If a data structure mutex or a database write lock is left
+held by thread of control failure, the application should not continue
+to use the database environment, as subsequent use of the environment
+is likely to result in threads of control convoying behind the held
+locks.) The m4_ref(dbenv_failchk) call will release any database read
+locks that have been left held by the exit of a thread of control, and
+abort any unresolved transactions. In this case, the application can
+continue to use the database environment.])
+
+m4_p([dnl
+A Transactional Data Store application recovering from a thread of
+control failure should call m4_ref(dbenv_failchk), and, if it returns
+success, the application can continue. If m4_ref(dbenv_failchk) returns
+m4_ref(DB_RUNRECOVERY), the application should proceed as described for
+the case of system failure.])
+
+m4_p([dnl
+It greatly simplifies matters that recovery may be performed regardless
+of whether recovery needs to be performed; that is, it is not an error
+to recover a database environment for which recovery is not strictly
+necessary. For this reason, applications should not try to determine
+if the database environment was active when the application or system
+failed. Instead, applications should run recovery any time the
+m4_refT(dbenv_failchk) returns m4_ref(DB_RUNRECOVERY), or, if the
+application is not calling m4_refT(dbenv_failchk), any time any thread
+of control accessing the database environment fails, as well as any time
+the system reboots.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/transapp/faq.so b/db/docs_src/ref/transapp/faq.so
new file mode 100644
index 000000000..4f334b0cd
--- /dev/null
+++ b/db/docs_src/ref/transapp/faq.so
@@ -0,0 +1,129 @@
+m4_comment([$Id: faq.so,v 10.11 2006/05/09 19:46:59 bostic Exp $])
+
+m4_ref_title(m4_tam Applications,
+ Transaction FAQ, @transaction FAQ,
+ transapp/throughput, rep/intro)
+
+m4_nlistbegin
+
+m4_nlist([dnl
+m4_bold([What should a transactional program do when an error occurs?])
+
+m4_p([dnl
+Any time an error occurs, such that a transactionally protected set of
+operations cannot complete successfully, the transaction must be
+aborted. While deadlock is by far the most common of these errors,
+there are other possibilities; for example, running out of disk space
+for the filesystem. In m4_db transactional applications, there are
+three classes of error returns: "expected" errors, "unexpected but
+recoverable" errors, and a single "unrecoverable" error. Expected
+errors are errors like m4_ref(DB_NOTFOUND), which indicates that a
+searched-for key item is not present in the database. Applications may
+want to explicitly test for and handle this error, or, in the case where
+the absence of a key implies the enclosing transaction should fail,
+simply call m4_ref(txn_abort). Unexpected but recoverable errors are
+errors like m4_ref(DB_LOCK_DEADLOCK), which indicates that an operation
+has been selected to resolve a deadlock, or a system error such as EIO,
+which likely indicates that the filesystem has no available disk space.
+Applications must immediately call m4_ref(txn_abort) when these returns
+occur, as it is not possible to proceed otherwise. The only
+unrecoverable error is m4_ref(DB_RUNRECOVERY), which indicates that the
+system must stop and recovery must be run.])])
+
+m4_nlist([dnl
+m4_bold([How can hot backups work? Can't you get an inconsistent picture
+of the database when you copy it?])
+
+m4_p([dnl
+First, m4_db is based on the technique of "write-ahead logging", which
+means that before any change is made to a database, a log record is
+written that describes the change. Further, m4_db guarantees that the
+log record that describes the change will always be written to stable
+storage (that is, disk) before the database page where the change was
+made is written to stable storage. Because of this guarantee, we know
+that any change made to a database will appear either in just a log
+file, or both the database and a log file, but never in just the
+database.])
+m4_p([dnl
+Second, you can always create a consistent and correct database based
+on the log files and the databases from a database environment. So,
+during a hot backup, we first make a copy of the databases and then a
+copy of the log files. The tricky part is that there may be pages in
+the database that are related for which we won't get a consistent
+picture during this copy. For example, let's say that we copy pages
+1-4 of the database, and then are swapped out. For whatever reason
+(perhaps because we needed to flush pages from the cache, or because of
+a checkpoint), the database pages 1 and 5 are written. Then, the hot
+backup process is re-scheduled, and it copies page 5. Obviously, we
+have an inconsistent database snapshot, because we have a copy of page
+1 from before it was written by the other thread of control, and a copy
+of page 5 after it was written by the other thread. What makes this
+work is the order of operations in a hot backup. Because of the
+write-ahead logging guarantees, we know that any page written to the
+database will first be referenced in the log. If we copy the database
+first, then we can also know that any inconsistency in the database will
+be described in the log files, and so we know that we can fix everything
+up during recovery.])])
+
+m4_nlist([dnl
+m4_bold([My application has m4_ref(DB_LOCK_DEADLOCK) errors. Is the
+normal, and what should I do?])
+
+m4_p([dnl
+It is quite rare for a transactional application to be deadlock free.
+All applications should be prepared to handle deadlock returns, because
+even if the application is deadlock free when deployed, future changes
+to the application or the m4_db implementation might introduce
+deadlocks.])
+
+m4_p([dnl
+Practices which reduce the chance of deadlock include:
+m4_bulletbegin
+m4_bullet([dnl
+Not using cursors which move backwards through the database (m4_ref(DB_PREV)),
+as backward scanning cursors can deadlock with page splits;])
+m4_bullet([dnl
+Configuring m4_ref(DB_REVSPLITOFF) to turn off reverse splits in
+applications which repeatedly delete and re-insert the same keys, to
+minimize the number of page splits as keys are re-inserted;])
+m4_bullet([dnl
+Not configuring m4_ref(DB_READ_UNCOMMITTED) as that flag requires write
+transactions upgrade their locks when aborted, which can lead to deadlock.
+Generally, m4_ref(DB_READ_COMMITTED) or non-transactional read operations
+are less prone to deadlock than m4_ref(DB_READ_UNCOMMITTED).])
+m4_bulletend])])
+
+m4_nlist([dnl
+m4_bold([How can I move a database from one transactional environment
+into another?])
+
+m4_p([dnl
+Because database pages contain references to log records, databases
+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 using the m4_refT(dbenv_lsn_reset) or
+the m4_option(r) argument to the m4_link(M4RELDIR/utility/db_load,
+db_load) utility.])])
+
+m4_nlist([dnl
+m4_bold([I'm seeing the error "log_flush: LSN past current end-of-log",
+what does that mean?])
+
+m4_p([dnl
+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 the database is too large to
+dump and reload, the database may be reset in place using the
+m4_refT(dbenv_lsn_reset) or the m4_option(r) argument to the
+m4_link(M4RELDIR/utility/db_load, db_load) utility. However, if you
+reset the database in place, you should verify your databases before
+using them again. (It is possible for the databases to be corrupted by
+running after all of the log files have been removed, and the longer the
+application runs, the worse it can get.)])])
+
+m4_nlistend
+
+m4_page_footer
diff --git a/db/docs_src/ref/transapp/filesys.so b/db/docs_src/ref/transapp/filesys.so
new file mode 100644
index 000000000..d0480ca59
--- /dev/null
+++ b/db/docs_src/ref/transapp/filesys.so
@@ -0,0 +1,64 @@
+m4_comment([$Id: filesys.so,v 10.35 2002/02/05 18:34:09 bostic Exp $])
+
+m4_ref_title(m4_tam Applications,
+ Recovery and filesystem operations,
+ recovery and @filesystem operations,
+ transapp/hotfail, transapp/reclimit)
+
+m4_p([dnl
+The m4_db API supports creating, removing and renaming files. Creating
+files is supported by the m4_refT(dbh_open). Removing files is
+supported by the m4_ref(dbenv_dbremove) and m4_refT(dbh_remove)s.
+Renaming files is supported by the m4_ref(dbenv_dbrename) and
+m4_refT(dbh_rename)s. (There are two methods for removing and renaming
+files because one of the methods is transactionally protected and one
+is not.)])
+
+m4_p([dnl
+m4_db does not permit specifying the m4_ref(DB_TRUNCATE) flag when
+opening a file in a transaction-protected environment. This is an
+implicit file deletion, but one that does not always require the same
+operating system file permissions as deleting and creating a file do.])
+
+m4_p([dnl
+If you have changed the name of a file or deleted it outside of the
+m4_db library (for example, you explicitly removed a file using your
+normal operating system utilities), then it is possible that recovery
+will not be able to find a database to which the log refers. In this
+case, m4_ref(db_recover) will produce a warning message, saying it was
+unable to locate a file it expected to find. This message is only a
+warning because the file may have been subsequently deleted as part of
+normal database operations before the failure occurred, so is not
+necessarily a problem.])
+
+m4_p([dnl
+Generally, any filesystem operations that are performed outside the
+m4_db interface should be performed at the same time as making a
+snapshot of the database. To perform filesystem operations correctly,
+do the following:])
+
+m4_nlistbegin
+m4_nlist([dnl
+Cleanly shut down database operations.
+m4_p([dnl
+To shut down database operations cleanly, all applications accessing
+the database environment must be shut down and a transaction checkpoint
+must be taken. If the applications are not implemented so they can be
+shut down gracefully (that is, closing all references to the database
+environment), recovery must be performed after all applications have
+been killed to ensure that the underlying databases are consistent on
+disk.])])
+m4_nlist([dnl
+Perform the filesystem operations; for example, remove or rename one or
+more files.])
+m4_nlist([Make an archival snapshot of the database.
+m4_p([dnl
+Although this step is not strictly necessary, it is strongly
+recommended. If this step is not performed, recovery from catastrophic
+failure will require that recovery first be performed up to the time of
+the filesystem operations, the filesystem operations be redone, and then
+recovery be performed from the filesystem operations forward.])])
+m4_nlist([Restart the database applications.])
+m4_nlistend
+
+m4_page_footer
diff --git a/db/docs_src/ref/transapp/hotfail.so b/db/docs_src/ref/transapp/hotfail.so
new file mode 100644
index 000000000..704cfe705
--- /dev/null
+++ b/db/docs_src/ref/transapp/hotfail.so
@@ -0,0 +1,92 @@
+m4_comment([$Id: hotfail.so,v 10.5 2005/02/10 20:02:41 bostic Exp $])
+
+m4_ref_title(m4_tam Applications,
+ Hot failover,
+ hot @failover,
+ transapp/recovery, transapp/filesys)
+
+m4_p([dnl
+For some applications, it may be useful to periodically snapshot the
+database environment for use as a hot failover should the primary system
+fail. The following steps can be taken to keep a backup environment in
+close synchrony with an active environment. The active environment is
+entirely unaffected by these procedures, and both read and write
+operations are allowed during all steps described here.])
+
+m4_nlistbegin
+m4_nlist([dnl
+Run m4_ref(db_archive) m4_option(s) in the active environment to
+identify all of the active environment's database files, and copy them
+to the backup directory.
+m4_p([dnl
+If the database files are stored in a separate directory from the other
+m4_db files, it will be simpler (and much faster!) to copy the directory
+itself instead of the individual files (see m4_ref(dbenv_set_data_dir)
+for additional information). m4_bold([Note: if any of the database
+files did not have an open m4_ref(Db) handle during the lifetime of the
+current log files, m4_ref(db_archive) will not list them in its
+output!]) 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 m4_ref(db_archive).])])
+m4_nlist([dnl
+Remove all existing log files from the backup directory.])
+m4_nlist([dnl
+Run m4_ref(db_archive) m4_option(l) in the active environment to
+identify all of the active environment's log files, and copy them to
+the backup directory.])
+m4_nlist([dnl
+Run m4_ref(db_recover) m4_option(c) in the backup directory to
+catastrophically recover the copied environment.])
+m4_nlistend
+
+m4_p([dnl
+Steps 2, 3 and 4 may be repeated as often as you like. If Step 1 (the
+initial copy of the database files) is repeated, then Steps 2, 3 and 4
+m4_bold(must) be performed at least once in order to ensure a consistent
+database environment snapshot.])
+
+m4_p([dnl
+These procedures must be integrated with your other archival procedures,
+of course. If you are periodically removing log files from your active
+environment, you must be sure to copy them to the backup directory
+before removing them from the active directory. Not copying a log file
+to the backup directory and subsequently running recovery with it
+present may leave the backup snapshot of the environment corrupted. A
+simple way to ensure this never happens is to archive the log files in
+Step 2 as you remove them from the backup directory, and move inactive
+log files from your active environment into your backup directory
+(rather than copying them), in Step 3. The following steps describe
+this procedure in more detail:])
+
+m4_nlistbegin
+m4_nlist([dnl
+Run m4_ref(db_archive) m4_option(s) in the active environment to
+identify all of the active environment's database files, and copy them
+to the backup directory.])
+m4_nlist([dnl
+Archive all existing log files from the backup directory, moving them
+to a backup device such as CD-ROM, alternate disk, or tape.])
+m4_nlist([dnl
+Run m4_ref(db_archive) (without any option) in the active environment
+to identify all of the log files in the active environment that are no
+longer in use, and m4_bold(move) them to the backup directory.])
+m4_nlist([dnl
+Run m4_ref(db_archive) m4_option(l) in the active environment to
+identify all of the remaining log files in the active environment, and
+m4_bold(copy) the log files to the backup directory.])
+m4_nlist([dnl
+Run m4_ref(db_recover) m4_option(c) in the backup directory to
+catastrophically recover the copied environment.])
+m4_nlistend
+
+m4_p([dnl
+As before, steps 2, 3, 4 and 5 may be repeated as often as you like.
+If Step 1 (the initial copy of the database files) is repeated, then
+Steps 2 through 5 m4_bold(must) be performed at least once in order to
+ensure a consistent database environment snapshot.])
+
+m4_p([dnl
+For an example of a hot backup implementation in the m4_db distribution,
+see the source code for the m4_ref(db_hotbackup) utility.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/transapp/inc.cs b/db/docs_src/ref/transapp/inc.cs
new file mode 100644
index 000000000..2b5b5e9ea
--- /dev/null
+++ b/db/docs_src/ref/transapp/inc.cs
@@ -0,0 +1,144 @@
+m4_ignore([dnl
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include <errno.h>
+#include <stdarg.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include <db.h>
+
+#define MAXIMUM_RETRY 5
+
+int add_color(DB_ENV *, DB *, char *, int);
+
+int add_fruit(DB_ENV *a, DB *b, char *c, char *d) {
+ a = NULL; b = NULL; c = NULL; d = 0;
+ return (0);
+}
+void db_open(DB_ENV *a, DB **b, char *c, int d) {
+ a = NULL; b = NULL; c = NULL; d = 0;
+}
+void usage(){}
+void env_open(DB_ENV **a) { a = NULL; }
+void env_dir_create() {}
+])
+m4_indent([dnl
+int
+main(int argc, char *argv[])
+{
+ extern int optind;
+ DB *db_cats, *db_color, *db_fruit;
+ DB_ENV *dbenv;
+ int ch;
+m4_blank
+ while ((ch = getopt(argc, argv, "")) != EOF)
+ switch (ch) {
+ case '?':
+ default:
+ usage();
+ }
+ argc -= optind;
+ argv += optind;
+m4_blank
+ env_dir_create();
+ env_open(&dbenv);
+m4_blank
+ /* Open database: Key is fruit class; Data is specific type. */
+ db_open(dbenv, &db_fruit, "fruit", 0);
+m4_blank
+ /* Open database: Key is a color; Data is an integer. */
+ db_open(dbenv, &db_color, "color", 0);
+m4_blank
+ /*
+ * Open database:
+ * Key is a name; Data is: company name, cat breeds.
+ */
+ db_open(dbenv, &db_cats, "cats", 1);
+m4_blank
+ add_fruit(dbenv, db_fruit, "apple", "yellow delicious");
+m4_blank
+m4_cbold([dnl
+ add_color(dbenv, db_color, "blue", 0);
+ add_color(dbenv, db_color, "blue", 3);])
+m4_blank
+ return (0);
+}
+m4_blank
+m4_cbold([dnl
+int
+add_color(DB_ENV *dbenv, DB *dbp, char *color, int increment)
+{
+ DBT key, data;
+ DB_TXN *tid;
+ int fail, original, ret, t_ret;
+ char buf[64];
+m4_blank
+ /* Initialization. */
+ memset(&key, 0, sizeof(key));
+ key.data = color;
+ key.size = strlen(color);
+ memset(&data, 0, sizeof(data));
+ data.flags = DB_DBT_MALLOC;
+m4_blank
+ for (fail = 0;;) {
+ /* Begin the transaction. */
+ if ((ret = dbenv-__GT__txn_begin(dbenv, NULL, &tid, 0)) != 0) {
+ dbenv-__GT__err(dbenv, ret, "DB_ENV-__GT__txn_begin");
+ exit (1);
+ }
+m4_blank
+ /*
+ * Get the key. If it exists, we increment the value. If it
+ * doesn't exist, we create it.
+ */
+ switch (ret = dbp-__GT__get(dbp, tid, &key, &data, DB_RMW)) {
+ case 0:
+ original = atoi(data.data);
+ break;
+ case DB_LOCK_DEADLOCK:
+ default:
+ /* Retry the operation. */
+ if ((t_ret = tid-__GT__abort(tid)) != 0) {
+ dbenv-__GT__err(dbenv, t_ret, "DB_TXN-__GT__abort");
+ exit (1);
+ }
+ if (fail++ == MAXIMUM_RETRY)
+ return (ret);
+ continue;
+ case DB_NOTFOUND:
+ original = 0;
+ break;
+ }
+ if (data.data != NULL)
+ free(data.data);
+m4_blank
+ /* Create the new data item. */
+ (void)snprintf(buf, sizeof(buf), "%d", original + increment);
+ data.data = buf;
+ data.size = strlen(buf) + 1;
+m4_blank
+ /* Store the new value. */
+ switch (ret = dbp-__GT__put(dbp, tid, &key, &data, 0)) {
+ case 0:
+ /* Success: commit the change. */
+ if ((ret = tid-__GT__commit(tid, 0)) != 0) {
+ dbenv-__GT__err(dbenv, ret, "DB_TXN-__GT__commit");
+ exit (1);
+ }
+ return (0);
+ case DB_LOCK_DEADLOCK:
+ default:
+ /* Retry the operation. */
+ if ((t_ret = tid-__GT__abort(tid)) != 0) {
+ dbenv-__GT__err(dbenv, t_ret, "DB_TXN-__GT__abort");
+ exit (1);
+ }
+ if (fail++ == MAXIMUM_RETRY)
+ return (ret);
+ break;
+ }
+ }
+}])])
diff --git a/db/docs_src/ref/transapp/inc.so b/db/docs_src/ref/transapp/inc.so
new file mode 100644
index 000000000..288d568cb
--- /dev/null
+++ b/db/docs_src/ref/transapp/inc.so
@@ -0,0 +1,54 @@
+m4_comment([$Id: inc.so,v 1.17 2006/08/31 15:26:59 ubell Exp $])
+
+m4_ref_title(m4_tam Applications,
+ Isolation,, transapp/atomicity, transapp/read)
+
+m4_p([dnl
+The third reason listed for using transactions was m4_italic(isolation).
+Consider an application suite in which multiple threads of control
+(multiple processes or threads in one or more processes) are changing
+the values associated with a key in one or more databases. Specifically,
+they are taking the current value, incrementing it, and then storing it
+back into the database.])
+
+m4_p([dnl
+Such an application requires isolation. Because we want to change a value
+in the database, we must make sure that after we read it, no other thread
+of control modifies it. For example, assume that both thread #1 and
+thread #2 are doing similar operations in the database, where thread #1
+is incrementing records by 3, and thread #2 is incrementing records by
+5. We want to increment the record by a total of 8. If the operations
+interleave in the right (well, wrong) order, that is not what will
+happen:])
+
+m4_indent([dnl
+thread [#]1 m4_bold(read) record: the value is 2
+thread [#]2 m4_bold(read) record: the value is 2
+thread [#]2 m4_bold(write) record + 5 back into the database (new value 7)
+thread [#]1 m4_bold(write) record + 3 back into the database (new value 5)])
+
+m4_p([dnl
+As you can see, instead of incrementing the record by a total of 8,
+we've incremented it only by 3 because thread #1 overwrote thread #2's
+change. By wrapping the operations in transactions, we ensure that this
+cannot happen. In a transaction, when the first thread reads the
+record, locks are acquired that will not be released until the
+transaction finishes, guaranteeing that all writers
+will block, waiting for the first thread's transaction to complete (or
+to be aborted).])
+
+m4_p([dnl
+Here is an example function that does transaction-protected increments
+on database records to ensure isolation:])
+
+include(ref/transapp/inc.cs)
+
+m4_p([dnl
+The m4_ref(DB_RMW) flag in the m4_ref(dbh_get) call specifies a write lock
+should be acquired on the key/data pair, instead of the more obvious read
+lock. We do this because the application expects to write the key/data
+pair in a subsequent operation, and the transaction is much more likely to
+deadlock if we first obtain a read lock and subsequently a write lock, than
+if we obtain the write lock initially.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/transapp/intro.so b/db/docs_src/ref/transapp/intro.so
new file mode 100644
index 000000000..0b744c83d
--- /dev/null
+++ b/db/docs_src/ref/transapp/intro.so
@@ -0,0 +1,30 @@
+m4_comment([$Id: intro.so,v 10.40 2006/11/13 18:05:03 bostic Exp $])
+
+m4_ref_title(m4_tam Applications,
+ Transactional Data Store introduction,
+ @Transactional Data Store, cam/app, transapp/why)
+
+m4_p([dnl
+It is difficult to write a useful transactional tutorial and still keep
+within reasonable bounds of documentation; that is, without writing a
+book on transactional programming. We have two goals in this section:
+to familiarize readers with the transactional interfaces of m4_db and
+to provide code building blocks that will be useful for creating
+applications.])
+
+m4_p([dnl
+We have not attempted to present this information using a real-world
+application. First, transactional applications are often complex and
+time-consuming to explain. Also, one of our goals is to give you an
+understanding of the wide variety of tools m4_db makes available to you,
+and no single application would use most of the interfaces included in
+the m4_db library. For these reasons, we have chosen to simply present
+the m4_db data structures and programming solutions, using examples that
+differ from page to page. All the examples are included in a standalone
+program you can examine, modify, and run; and from which you will be able
+to extract code blocks for your own applications. Fragments of the
+program will be presented throughout this chapter, and the complete text
+of the m4_linkweb(transapp.cs, [example program]) for m4_posix1_name
+standard systems is included in the m4_db distribution.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/transapp/logfile.cs b/db/docs_src/ref/transapp/logfile.cs
new file mode 100644
index 000000000..be095cf59
--- /dev/null
+++ b/db/docs_src/ref/transapp/logfile.cs
@@ -0,0 +1,68 @@
+m4_ignore([dnl
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include <errno.h>
+#include <pthread.h>
+#include <stdarg.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include <db.h>
+
+void *logfile_thread(void *);
+
+DB_ENV *dbenv;
+pthread_t ptid;
+int ret;
+])
+m4_indent([dnl
+int
+main(int argc, char *argv[])
+{
+m4_cbold([dnl
+ /* Start a logfile removal thread. */
+ if ((ret = pthread_create(
+ &ptid, NULL, logfile_thread, (void *)dbenv)) != 0) {
+ fprintf(stderr,
+ "txnapp: failed spawning log file removal thread: %s\n",
+ strerror(ret));
+ exit (1);
+ }])
+m4_ignore([return (0);])
+}
+m4_blank
+m4_cbold([dnl
+void *
+logfile_thread(void *arg)
+{
+ DB_ENV *dbenv;
+ int ret;
+ char **begin, **list;
+m4_blank
+ dbenv = arg;
+ dbenv-__GT__errx(dbenv,
+ "Log file removal thread: %lu", (u_long)pthread_self());
+m4_blank
+ /* Check once every 5 minutes. */
+ for (;; sleep(300)) {
+ /* Get the list of log files. */
+ if ((ret = dbenv-__GT__log_archive(dbenv, &list, DB_ARCH_ABS)) != 0) {
+ dbenv-__GT__err(dbenv, ret, "DB_ENV-__GT__log_archive");
+ exit (1);
+ }
+m4_blank
+ /* Remove the log files. */
+ if (list != NULL) {
+ for (begin = list; *list != NULL; ++list)
+ if ((ret = remove(*list)) != 0) {
+ dbenv-__GT__err(dbenv,
+ ret, "remove %s", *list);
+ exit (1);
+ }
+ free (begin);
+ }
+ }
+ /* NOTREACHED */
+}])])
diff --git a/db/docs_src/ref/transapp/logfile.so b/db/docs_src/ref/transapp/logfile.so
new file mode 100644
index 000000000..3da77e131
--- /dev/null
+++ b/db/docs_src/ref/transapp/logfile.so
@@ -0,0 +1,59 @@
+m4_comment([$Id: logfile.so,v 11.9 2002/11/13 21:49:24 bostic Exp $])
+
+m4_ref_title(m4_tam Applications,
+ Log file removal,
+ @log file removal,
+ transapp/archival, transapp/recovery)
+
+m4_p([dnl
+The fourth component of the infrastructure, log file removal, concerns
+the ongoing disk consumption of the database log files. Depending on
+the rate at which the application writes to the databases and the
+available disk space, the number of log files may increase quickly
+enough so that disk space will be a resource problem. For this reason,
+you will periodically want to remove log files in order to conserve disk
+space. This procedure is distinct from database and log file archival
+for catastrophic recovery, and you cannot remove the current log files
+simply because you have created a database snapshot or copied log files
+to archival media.])
+
+m4_p([dnl
+Log files may be removed at any time, as long as:])
+m4_bulletbegin
+m4_bullet([the log file is not involved in an active transaction.])
+m4_bullet([a checkpoint has been written subsequent to the log file's
+creation.])
+m4_bullet([the log file is not the only log file in the environment.])
+m4_bulletend
+
+m4_p([dnl
+If you are preparing for catastrophic failure, you will want to copy
+the log files to archival media before you remove them as described in
+m4_link(archival, Database and log file archival).])
+
+m4_p([dnl
+If you are not preparing for catastrophic failure, any one of the
+following methods can be used to remove log files:])
+
+m4_nlistbegin
+
+m4_nlist([dnl
+Run the standalone m4_ref(db_archive) utility with the m4_option(d)
+option, to remove any log files that are no longer needed at the time
+the command is executed.])
+
+m4_nlist([dnl
+Call the m4_refT(log_archive) from the application, with the
+m4_ref(DB_ARCH_REMOVE) flag, to remove any log files that are no longer
+needed at the time the call is made.])
+
+m4_nlist([dnl
+Call the m4_refT(dbenv_set_flags) from the application, with the
+m4_ref(DB_LOG_AUTOREMOVE) flag, to remove any log files that are no
+longer needed on an ongoing basis. With this configuration, m4_db will
+automatically remove log files, and the application will not have an
+opportunity to copy the log files to backup media.])
+
+m4_nlistend
+
+m4_page_footer
diff --git a/db/docs_src/ref/transapp/nested.so b/db/docs_src/ref/transapp/nested.so
new file mode 100644
index 000000000..f6c454ef0
--- /dev/null
+++ b/db/docs_src/ref/transapp/nested.so
@@ -0,0 +1,61 @@
+m4_comment([$Id: nested.so,v 10.23 2003/01/24 18:01:58 bostic Exp $])
+
+m4_ref_title(m4_tam Applications,
+ Nested transactions,
+ nested @transactions, transapp/cursor, transapp/admin)
+
+m4_p([dnl
+m4_db provides support for nested transactions. Nested transactions
+allow an application to decompose a large or long-running transaction
+into smaller units that may be independently aborted.])
+
+m4_p([dnl
+Normally, when beginning a transaction, the application will pass a NULL
+value for the parent argument to m4_ref(txn_begin). If, however, the
+parent argument is a m4_ref(DbTxn) handle, the newly created transaction
+will be treated as a nested transaction within the parent. Transactions
+may nest arbitrarily deeply. For the purposes of this discussion,
+transactions created with a parent identifier will be called
+m4_italic(child transactions).])
+
+m4_p([dnl
+Once a transaction becomes a parent, as long as any of its child
+transactions are unresolved (that is, they have neither committed nor
+aborted), the parent may not issue any m4_db calls except to begin more
+child transactions, or to commit or abort. For example, it may not
+issue any access method or cursor calls. After all of a parent's
+children have committed or aborted, the parent may again request
+operations on its own behalf.])
+
+m4_p([dnl
+The semantics of nested transactions are as follows. When a child
+transaction is begun, it inherits all the locks of its parent. This
+means that the child will never block waiting on a lock held by its
+parent. Further, locks held by two children of the same parent will
+also conflict. To make this concrete, consider the following set of
+transactions and lock acquisitions.])
+
+m4_p([dnl
+Transaction T1 is the parent transaction. It acquires a write lock on
+item A and then begins two child transactions: C1 and C2. C1 also wants
+to acquire a write lock on A; this succeeds. If C2 attempts to acquire
+a write lock on A, it will block until C1 releases the lock, at which
+point it will succeed. Now, let's say that C1 acquires a write lock on
+B. If C2 now attempts to obtain a lock on B, it will block. However,
+let's now assume that C1 commits. Its locks are anti-inherited, which
+means they are given to T1, so T1 will now hold a lock on B. At this
+point, C2 would be unblocked and would then acquire a lock on B.])
+
+m4_p([dnl
+Child transactions are entirely subservient to their parent transaction.
+They may abort, undoing their operations regardless of the eventual fate
+of the parent. However, even if a child transaction commits, if its
+parent transaction is eventually aborted, the child's changes are undone
+and the child's transaction is effectively aborted. Any child
+transactions that are not yet resolved when the parent commits or aborts
+are resolved based on the parent's resolution -- committing if the
+parent commits and aborting if the parent aborts. Any child
+transactions that are not yet resolved when the parent prepares are also
+prepared.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/transapp/put.cs b/db/docs_src/ref/transapp/put.cs
new file mode 100644
index 000000000..521461098
--- /dev/null
+++ b/db/docs_src/ref/transapp/put.cs
@@ -0,0 +1,107 @@
+m4_ignore([dnl
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include <errno.h>
+#include <stdarg.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include <db.h>
+
+#define MAXIMUM_RETRY 5
+
+int add_fruit(DB_ENV *, DB *, char *, char *);
+
+void db_open(DB_ENV *a, DB **b, char *c, int d) {
+ a = NULL; b = NULL; c = NULL; d = 0;
+}
+void usage(){}
+void env_open(DB_ENV **a) { a = NULL; }
+void env_dir_create() {}
+])
+m4_indent([dnl
+int
+main(int argc, char *argv[])
+{
+ extern int optind;
+ DB *db_cats, *db_color, *db_fruit;
+ DB_ENV *dbenv;
+ int ch;
+m4_blank
+ while ((ch = getopt(argc, argv, "")) != EOF)
+ switch (ch) {
+ case '?':
+ default:
+ usage();
+ }
+ argc -= optind;
+ argv += optind;
+m4_blank
+ env_dir_create();
+ env_open(&dbenv);
+m4_blank
+ /* Open database: Key is fruit class; Data is specific type. */
+ db_open(dbenv, &db_fruit, "fruit", 0);
+m4_blank
+ /* Open database: Key is a color; Data is an integer. */
+ db_open(dbenv, &db_color, "color", 0);
+m4_blank
+ /*
+ * Open database:
+ * Key is a name; Data is: company name, cat breeds.
+ */
+ db_open(dbenv, &db_cats, "cats", 1);
+m4_blank
+m4_cbold([dnl
+ add_fruit(dbenv, db_fruit, "apple", "yellow delicious");])
+m4_blank
+ return (0);
+}
+m4_blank
+m4_cbold([dnl
+int
+add_fruit(DB_ENV *dbenv, DB *db, char *fruit, char *name)
+{
+ DBT key, data;
+ DB_TXN *tid;
+ int fail, ret, t_ret;
+m4_blank
+ /* Initialization. */
+ memset(&key, 0, sizeof(key));
+ memset(&data, 0, sizeof(data));
+ key.data = fruit;
+ key.size = strlen(fruit);
+ data.data = name;
+ data.size = strlen(name);
+m4_blank
+ for (fail = 0;;) {
+ /* Begin the transaction. */
+ if ((ret = dbenv-__GT__txn_begin(dbenv, NULL, &tid, 0)) != 0) {
+ dbenv-__GT__err(dbenv, ret, "DB_ENV-__GT__txn_begin");
+ exit (1);
+ }
+m4_blank
+ /* Store the value. */
+ switch (ret = db-__GT__put(db, tid, &key, &data, 0)) {
+ case 0:
+ /* Success: commit the change. */
+ if ((ret = tid-__GT__commit(tid, 0)) != 0) {
+ dbenv-__GT__err(dbenv, ret, "DB_TXN-__GT__commit");
+ exit (1);
+ }
+ return (0);
+ case DB_LOCK_DEADLOCK:
+ default:
+ /* Retry the operation. */
+ if ((t_ret = tid-__GT__abort(tid)) != 0) {
+ dbenv-__GT__err(dbenv, t_ret, "DB_TXN-__GT__abort");
+ exit (1);
+ }
+ if (fail++ == MAXIMUM_RETRY)
+ return (ret);
+ break;
+ }
+ }
+}])])
diff --git a/db/docs_src/ref/transapp/put.so b/db/docs_src/ref/transapp/put.so
new file mode 100644
index 000000000..07df64455
--- /dev/null
+++ b/db/docs_src/ref/transapp/put.so
@@ -0,0 +1,129 @@
+m4_comment([$Id: put.so,v 1.20 2006/04/24 17:26:33 bostic Exp $])
+
+m4_ref_title(m4_tam Applications,
+ Recoverability and deadlock handling,, transapp/data_open, transapp/atomicity)
+
+m4_p([dnl
+The first reason listed for using transactions was recoverability. Any
+logical change to a database may require multiple changes to underlying
+data structures. For example, modifying a record in a Btree may require
+leaf and internal pages to split, so a single m4_ref(dbh_put) method
+call can potentially require that multiple physical database pages be
+written. If only some of those pages are written and then the system
+or application fails, the database is left inconsistent and cannot be
+used until it has been recovered; that is, until the partially completed
+changes have been undone.])
+
+m4_p([dnl
+m4_italic(Write-ahead-logging) is the term that describes the underlying
+implementation that m4_db uses to ensure recoverability. What it means
+is that before any change is made to a database, information about the
+change is written to a database log. During recovery, the log is read,
+and databases are checked to ensure that changes described in the log
+for committed transactions appear in the database. Changes that appear
+in the database but are related to aborted or unfinished transactions
+in the log are undone from the database.])
+
+m4_p([dnl
+For recoverability after application or system failure, operations that
+modify the database must be protected by transactions. More
+specifically, operations are not recoverable unless a transaction is
+begun and each operation is associated with the transaction via the
+m4_db interfaces, and then the transaction successfully committed. This
+is true even if logging is turned on in the database environment.])
+
+m4_p([dnl
+Here is an example function that updates a record in a database in a
+transactionally protected manner. The function takes a key and data
+items as arguments and then attempts to store them into the database.])
+
+include(ref/transapp/put.cs)
+
+m4_p([dnl
+m4_db also uses transactions to recover from deadlock. Database
+operations (that is, any call to a function underlying the handles
+returned by m4_ref(dbh_open) and m4_ref(dbh_cursor)) are usually
+performed on behalf of a unique locker. Transactions can be used to
+perform multiple calls on behalf of the same locker within a single
+thread of control. For example, consider the case in which an
+application uses a cursor scan to locate a record and then the
+application accesses another other item in the database, based on the
+key returned by the cursor, without first closing the cursor. If these
+operations are done using default locker IDs, they may conflict. If the
+locks are obtained on behalf of a transaction, using the transaction's
+locker ID instead of the database handle's locker ID, the operations
+will not conflict.])
+
+m4_p([dnl
+There is a new error return in this function that you may not have seen
+before. In transactional (not Concurrent Data Store) applications
+supporting both readers and writers, or just multiple writers, m4_db
+functions have an additional possible error return:
+m4_ref(DB_LOCK_DEADLOCK). This means two threads of control deadlocked,
+and the thread receiving the m4_ref(DB_LOCK_DEADLOCK) error return has
+been selected to discard its locks in order to resolve the problem.
+When an application receives a m4_ref(DB_LOCK_DEADLOCK) return, the
+correct action is to close any cursors involved in the operation and
+abort any enclosing transaction. In the sample code, any time the
+m4_refT(dbh_put) returns m4_ref(DB_LOCK_DEADLOCK), m4_ref(txn_abort) is
+called (which releases the transaction's m4_db resources and undoes any
+partial changes to the databases), and then the transaction is retried
+from the beginning.])
+
+m4_p([dnl
+There is no requirement that the transaction be attempted again, but
+that is a common course of action for applications. Applications may
+want to set an upper bound on the number of times an operation will be
+retried because some operations on some data sets may simply be unable
+to succeed. For example, updating all of the pages on a large Web site
+during prime business hours may simply be impossible because of the high
+access rate to the database.])
+
+m4_p([dnl
+The m4_refT(txn_abort) is called in error cases other than deadlock.
+Any time an error occurs, such that a transactionally protected set of
+operations cannot complete successfully, the transaction must be
+aborted. While deadlock is by far the most common of these errors,
+there are other possibilities; for example, running out of disk space
+for the filesystem. In m4_db transactional applications, there are
+three classes of error returns: "expected" errors, "unexpected but
+recoverable" errors, and a single "unrecoverable" error. Expected
+errors are errors like m4_ref(DB_NOTFOUND), which indicates that a
+searched-for key item is not present in the database. Applications may
+want to explicitly test for and handle this error, or, in the case where
+the absence of a key implies the enclosing transaction should fail,
+simply call m4_ref(txn_abort). Unexpected but recoverable errors are
+errors like m4_ref(DB_LOCK_DEADLOCK), which indicates that an operation
+has been selected to resolve a deadlock, or a system error such as EIO,
+which likely indicates that the filesystem has no available disk space.
+Applications must immediately call m4_ref(txn_abort) when these returns
+occur, as it is not possible to proceed otherwise. The only
+unrecoverable error is m4_ref(DB_RUNRECOVERY), which indicates that the
+system must stop and recovery must be run.])
+
+m4_p([dnl
+The above code can be simplified in the case of a transaction comprised
+entirely of a single database put or delete operation, as operations
+occurring in transactional databases are implicitly transaction
+protected. For example, in a transactional database, the above code
+could be more simply written as:])
+
+include(ref/transapp/put2.cs)
+
+m4_p([dnl
+and the underlying transaction would be automatically handled by m4_db.])
+
+m4_p([dnl
+Programmers should not attempt to enumerate all possible error returns
+in their software. Instead, they should explicitly handle expected
+returns and default to aborting the transaction for the rest. It is
+entirely the choice of the programmer whether to check for
+m4_ref(DB_RUNRECOVERY) explicitly or not -- attempting new m4_db
+operations after m4_ref(DB_RUNRECOVERY) is returned does not worsen the
+situation. Alternatively, using the m4_refT(dbenv_set_event_notify) to
+handle an unrecoverable error and simply doing some number of
+abort-and-retry cycles for any unexpected m4_db or system error in the
+mainline code often results in the simplest and cleanest application
+code.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/transapp/put2.cs b/db/docs_src/ref/transapp/put2.cs
new file mode 100644
index 000000000..c04bb5e26
--- /dev/null
+++ b/db/docs_src/ref/transapp/put2.cs
@@ -0,0 +1,80 @@
+m4_ignore([dnl
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include <errno.h>
+#include <stdarg.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include <db.h>
+
+#define MAXIMUM_RETRY 5
+
+int add_fruit(DB_ENV *, DB *, char *, char *);
+
+void db_open(DB_ENV *a, DB **b, char *c, int d) {
+ a = NULL; b = NULL; c = NULL; d = 0;
+}
+void usage(){}
+void env_open(DB_ENV **a) { a = NULL; }
+void env_dir_create() {}
+int
+main(int argc, char *argv[])
+{
+ extern int optind;
+ DB *db_cats, *db_color, *db_fruit;
+ DB_ENV *dbenv;
+ int ch;
+
+ while ((ch = getopt(argc, argv, "")) != EOF)
+ switch (ch) {
+ case '?':
+ default:
+ usage();
+ }
+ argc -= optind;
+ argv += optind;
+
+ env_dir_create();
+ env_open(&dbenv);
+
+ /* Open database: Key is fruit class; Data is specific type. */
+ db_open(dbenv, &db_fruit, "fruit", 0);
+
+ /* Open database: Key is a color; Data is an integer. */
+ db_open(dbenv, &db_color, "color", 0);
+
+ /*
+ * Open database:
+ * Key is a name; Data is: company name, cat breeds.
+ */
+ db_open(dbenv, &db_cats, "cats", 1);
+
+ add_fruit(dbenv, db_fruit, "apple", "yellow delicious");
+
+ return (0);
+}
+
+int
+add_fruit(DB_ENV *dbenv, DB *db, char *fruit, char *name)
+{
+ DBT key, data;
+ int fail, ret;
+
+ /* Initialization. */
+ memset(&key, 0, sizeof(key));
+ memset(&data, 0, sizeof(data));
+ key.data = fruit;
+ key.size = strlen(fruit);
+ data.data = name;
+ data.size = strlen(name);
+])
+m4_indent([m4_cbold([dnl
+ for (fail = 0; fail++ __LT__= MAXIMUM_RETRY &&
+ (ret = db-__GT__put(db, NULL, &key, &data, 0)) == DB_LOCK_DEADLOCK;)
+ ;
+ return (ret == 0 ? 0 : 1);])])
+m4_ignore([
+}])
diff --git a/db/docs_src/ref/transapp/read.so b/db/docs_src/ref/transapp/read.so
new file mode 100644
index 000000000..c45eb2886
--- /dev/null
+++ b/db/docs_src/ref/transapp/read.so
@@ -0,0 +1,138 @@
+m4_comment([$Id: read.so,v 1.14 2006/09/13 14:30:56 mjc Exp $])
+
+m4_ref_title(m4_tam Applications,
+ Degrees of isolation,, transapp/inc, transapp/cursor)
+
+m4_idefz(repeatable reads)
+m4_p([dnl
+Transactions can be isolated from each other to different degrees.
+m4_italic(Serializable) provides the most isolation, and means that, for
+the life of the transaction, every time a thread of control reads a data
+item, it will be unchanged from its previous value (assuming, of course,
+the thread of control does not itself modify the item). By default,
+m4_db enforces serializability whenever database reads are wrapped in
+transactions. This is also known as m4_italic(degree 3 isolation).])
+
+m4_p([dnl
+Most applications do not need to enclose all reads in transactions, and
+when possible, transactionally protected reads at serializable isolation
+should be avoided as they can cause performance problems. For example,
+a serializable cursor sequentially reading each key/data pair in a
+database, will acquire a read lock on most of the pages in the database
+and so will gradually block all write operations on the databases until
+the transaction commits or aborts. Note, however, that if there are
+update transactions present in the application, the read operations must
+still use locking, and must be prepared to repeat any operation
+(possibly closing and reopening a cursor) that fails with a return value
+of m4_ref(DB_LOCK_DEADLOCK). Applications that need repeatable reads
+are ones that require the ability to repeatedly access a data item
+knowing that it will not have changed (for example, an operation
+modifying a data item based on its existing value).])
+
+m4_p([dnl
+m4_italic(Snapshot isolation) also guarantees repeatable reads, but
+avoids read locks by using multiversion concurrency control (MVCC).
+This makes update operations more expensive, because they have to
+allocate space for new versions of pages in cache and make copies, but
+avoiding read locks can significantly increase throughput for many
+applications. Snapshot isolation is discussed in detail below.])
+
+m4_idefz(cursor @stability)
+m4_idefz(cursor stability)
+m4_idefz(degree 2 @isolation)
+m4_idefz(degree 2 isolation)
+m4_p([dnl
+A transaction may only require m4_italic(cursor stability), that is only
+be guaranteed that cursors see committed data that does not change so
+long as it is addressed by the cursor, but may change before the reading
+transaction completes. This is also called m4_italic(degree 2
+isolation). m4_db provides this level of isolation when a transaction
+is started with the m4_ref(DB_READ_COMMITTED) flag. This flag may also
+be specified when opening a cursor within a fully isolated
+transaction.])
+
+m4_idefz(degree 1 @isolation)
+m4_idefz(degree 1 isolation)
+m4_idefz(dirty @reads)
+m4_idefz(dirty reads)
+m4_p([dnl
+m4_db optionally supports reading uncommitted data; that is, read
+operations may request data which has been modified but not yet
+committed by another transaction. This is also called m4_italic(degree
+1 isolation). This is done by first specifying the
+m4_ref(DB_READ_UNCOMMITTED) flag when opening the underlying database,
+and then specifying the m4_ref(DB_READ_UNCOMMITTED) flag when beginning
+a transaction, opening a cursor, or performing a read operation. The
+advantage of using m4_ref(DB_READ_UNCOMMITTED) is that read operations
+will not block when another transaction holds a write lock on the
+requested data; the disadvantage is that read operations may return data
+that will disappear should the transaction holding the write lock
+abort.])
+
+m4_idefz(snapshot isolation)
+m4_idefz(multiversion concurrency control)
+m4_idefz(MVCC)
+m4_section([Snapshot Isolation])
+
+m4_p([dnl
+To make use of snapshot isolation, databases must first be configured
+for multiversion access by calling m4_ref(dbh_open) with the
+m4_ref(DB_MULTIVERSION) flag. Then transactions or cursors must be
+configured with the m4_ref(DB_TXN_SNAPSHOT) flag.])
+
+m4_p([dnl
+When configuring an environment for snapshot isolation, it is important
+to realize that having multiple versions of pages in cache means that
+the working set will take up more of the cache. As a result, snapshot
+isolation is best suited for use with larger cache sizes.])
+
+m4_p([dnl
+If the cache becomes full of page copies before the old copies can be
+discarded, additional I/O will occur as pages are written to temporary
+"freezer" files. This can substantially reduce throughput, and should
+be avoided if possible by configuring a large cache and keeping snapshot
+isolation transactions short. The amount of cache required to avoid
+freezing buffers can be estimated by taking a checkpoint followed by a
+call to m4_ref(log_archive). The amount of cache required is
+approximately double the size of logs that remains.])
+
+m4_p([dnl
+The environment should also be configured for sufficient transactions
+using m4_ref(dbenv_set_tx_max). The maximum number of transactions
+needs to include all transactions executed concurrently by the
+application plus all cursors configured for snapshot isolation.
+Further, the transactions are retained until the last page they created
+is evicted from cache, so in the extreme case, an additional transaction
+may be needed for each page in the cache.])
+
+m4_p([dnl
+So when m4_italic(should) applications use snapshot isolation?
+
+m4_bulletbegin
+m4_bullet([dnl
+There is a large cache relative to size of updates performed by
+concurrent transactions; and])
+
+m4_bullet([dnl
+Read/write contention is limiting the throughput of the application;
+or])
+
+m4_bullet([dnl
+The application is all or mostly read-only, and contention for the lock
+manager mutex is limiting throughput.])
+m4_bulletend])
+
+m4_p([dnl
+The simplest way to take advantage of snapshot isolation is for queries:
+keep update transactions using full read/write locking and set
+m4_ref(DB_TXN_SNAPSHOT) on read-only transactions or cursors. This
+should minimize blocking of snapshot isolation transactions and will
+avoid introducing new m4_ref(DB_LOCK_DEADLOCK) errors.])
+
+m4_p([dnl
+If the application has update transactions which read many items and
+only update a small set (for example, scanning until a desired record is
+found, then modifying it), throughput may be improved by running some
+updates at snapshot isolation as well.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/transapp/reclimit.so b/db/docs_src/ref/transapp/reclimit.so
new file mode 100644
index 000000000..50cb9ea5c
--- /dev/null
+++ b/db/docs_src/ref/transapp/reclimit.so
@@ -0,0 +1,166 @@
+m4_comment([$Id: reclimit.so,v 11.32 2005/06/16 17:13:55 bostic Exp $])
+
+m4_ref_title(m4_tam Applications,
+ m4_db recoverability,
+ m4_db @recoverability,
+ transapp/filesys, transapp/tune)
+
+m4_p([dnl
+m4_db recovery is based on write-ahead logging. This means that
+when a change is made to a database page, a description of the change is
+written into a log file. This description in the log file is guaranteed
+to be written to stable storage before the database pages that were
+changed are written to stable storage. This is the fundamental feature
+of the logging system that makes durability and rollback work.])
+
+m4_p([dnl
+If the application or system crashes, the log is reviewed during
+recovery. Any database changes described in the log that were part of
+committed transactions and that were never written to the actual
+database itself are written to the database as part of recovery. Any
+database changes described in the log that were never committed and that
+were written to the actual database itself are backed-out of the
+database as part of recovery. This design allows the database to be
+written lazily, and only blocks from the log file have to be forced to
+disk as part of transaction commit.])
+
+m4_p([dnl
+There are two interfaces that are a concern when considering m4_db
+recoverability:])
+
+m4_nlistbegin
+m4_nlist([The interface between m4_db and the operating system/filesystem.])
+m4_nlistns([The interface between the operating system/filesystem and the
+underlying stable storage hardware.])
+m4_nlistend
+
+m4_p([dnl
+m4_db uses the operating system interfaces and its underlying filesystem
+when writing its files. This means that m4_db can fail if the underlying
+filesystem fails in some unrecoverable way. Otherwise, the interface
+requirements here are simple: The system call that m4_db uses to flush
+data to disk (normally fsync or fdatasync), must guarantee that all the
+information necessary for a file's recoverability has been written to
+stable storage before it returns to m4_db, and that no possible
+application or system crash can cause that file to be unrecoverable.])
+
+m4_p([dnl
+In addition, m4_db implicitly uses the interface between the operating
+system and the underlying hardware. The interface requirements here are
+not as simple.])
+
+m4_p([dnl
+First, it is necessary to consider the underlying page size of the m4_db
+databases. The m4_db library performs all database writes using the
+page size specified by the application, and m4_db assumes pages are
+written atomically. This means that if the operating system performs
+filesystem I/O in blocks of different sizes than the database page size,
+it may increase the possibility for database corruption. For example,
+assume that m4_db is writing 32KB pages for a database, and the
+operating system does filesystem I/O in 16KB blocks. If the operating
+system writes the first 16KB of the database page successfully, but
+crashes before being able to write the second 16KB of the database, the
+database has been corrupted and this corruption may or may not be
+detected during recovery. For this reason, it may be important to
+select database page sizes that will be written as single block
+transfers by the underlying operating system. If you do not select a
+page size that the underlying operating system will write as a single
+block, you may want to configure the database to use checksums (see the
+m4_ref(DB_CHKSUM) flag for more information). By configuring checksums,
+you guarantee this kind of corruption will be detected at the expense
+of the CPU required to generate the checksums. When such an error is
+detected, the only course of recovery is to perform catastrophic
+recovery to restore the database.])
+
+m4_p([dnl
+Second, if you are copying database files (either as part of doing a
+hot backup or creation of a hot failover area), there is an additional
+question related to the page size of the m4_db databases. You must copy
+databases atomically, in units of the database page size. In other
+words, the reads made by the copy program must not be interleaved with
+writes by other threads of control, and the copy program must read the
+databases in multiples of the underlying database page size. Generally,
+this is not a problem, as operating systems already make this guarantee
+and system utilities normally read in power-of-2 sized chunks, which
+are larger than the largest possible m4_db database page size.])
+
+m4_p([dnl
+One problem we have seen in this area was in some releases of Solaris
+where the cp utility was implemented using the mmap system call rather
+than the read system call. Because the Solaris' mmap system call did
+not make the same guarantee of read atomicity as the read system call,
+using the cp utility could create corrupted copies of the databases.
+Another problem we have seen is implementations of the tar utility doing
+10KB block reads by default, and even when an output block size was
+specified to that utility, not reading from the underlying databases in
+multiples of the block size. Using the dd utility instead of the cp or
+tar utilities (and specifying an appropriate block size), fixes these
+problems. If you plan to use a system utility to copy database files,
+you may want to use a system call trace utility (for example, ktrace or
+truss) to check for an I/O size smaller than or not a multiple of the
+database page size and system calls other than read.])
+
+m4_p([dnl
+Third, it is necessary to consider the behavior of the system's
+underlying stable storage hardware. For example, consider a SCSI
+controller that has been configured to cache data and return to the
+operating system that the data has been written to stable storage, when,
+in fact, it has only been written into the controller RAM cache. If
+power is lost before the controller is able to flush its cache to disk,
+and the controller cache is not stable (that is, the writes will not be
+flushed to disk when power returns), the writes will be lost. If the
+writes include database blocks, there is no loss because recovery will
+correctly update the database. If the writes include log file blocks,
+it is possible that transactions that were already committed may not
+appear in the recovered database, although the recovered database will
+be coherent after a crash.])
+
+m4_p([dnl
+If the underlying hardware can fail in any way so that only part of the
+block was written, the failure conditions are the same as those
+described previously for an operating system failure that writes only
+part of a logical database block. In such cases, configuring the
+database for checksums will ensure the corruption is detected.])
+
+m4_p([dnl
+For these reasons, it may be important to select hardware that does not
+do partial writes and does not cache data writes (or does not return
+that the data has been written to stable storage until it has either
+been written to stable storage or the actual writing of all of the data
+is guaranteed, barring catastrophic hardware failure -- that is, your
+disk drive exploding).])
+
+m4_p([dnl
+If the disk drive on which you are storing your databases explodes, you
+can perform normal m4_db catastrophic recovery, because it requires only
+a snapshot of your databases plus the log files you have archived since
+those snapshots were taken. In this case, you should lose no database
+changes at all.])
+
+m4_p([dnl
+If the disk drive on which you are storing your log files explodes, you
+can also perform catastrophic recovery, but you will lose any database
+changes made as part of transactions committed since your last archival
+of the log files. Alternatively, if your database environment and
+databases are still available after you lose the log file disk, you
+should be able to dump your databases. However, you may see an
+inconsistent snapshot of your data after doing the dump, because
+changes that were part of transactions that were not yet committed
+may appear in the database dump. Depending on the value of the data,
+a reasonable alternative may be to perform both the database dump and
+the catastrophic recovery and then compare the databases created by
+the two methods.])
+
+m4_p([dnl
+Regardless, for these reasons, storing your databases and log files on
+different disks should be considered a safety measure as well as a
+performance enhancement.])
+
+m4_p([dnl
+Finally, you should be aware that m4_db does not protect against all
+cases of stable storage hardware failure, nor does it protect against
+simple hardware misbehavior (for example, a disk controller writing
+incorrect data to the disk). However, configuring the database for
+checksums will ensure that any such corruption is detected.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/transapp/recovery.so b/db/docs_src/ref/transapp/recovery.so
new file mode 100644
index 000000000..57f8831c6
--- /dev/null
+++ b/db/docs_src/ref/transapp/recovery.so
@@ -0,0 +1,112 @@
+m4_comment([$Id: recovery.so,v 10.35 2005/06/16 17:52:20 bostic Exp $])
+
+m4_ref_title(m4_tam Applications,
+ Recovery procedures,
+ recovery in @transaction protected applications,
+ transapp/logfile, transapp/hotfail)
+
+m4_p([dnl
+The fifth component of the infrastructure, recovery procedures, concerns
+the recoverability of the database. After any application or system
+failure, there are two possible approaches to database recovery:])
+
+m4_nlistbegin
+
+m4_nlist([dnl
+There is no need for recoverability, and all databases can be re-created
+from scratch. Although these applications may still need transaction
+protection for other reasons, recovery usually consists of removing the
+m4_db environment home directory and all files it contains, and then
+restarting the application.
+Such an application may use the m4_ref(DB_TXN_NOT_DURABLE) flag to avoid
+writing log records.])
+
+m4_nlist([dnl
+It is necessary to recover information after system or application
+failure. In this case, recovery processing must be performed on any
+database environments that were active at the time of the failure.
+Recovery processing involves running the m4_ref(db_recover) utility or
+calling the m4_refT(dbenv_open) with the m4_ref(DB_RECOVER) or
+m4_ref(DB_RECOVER_FATAL) flags.
+
+m4_p([dnl
+During recovery processing, all database changes made by aborted or
+unfinished transactions are undone, and all database changes made by
+committed transactions are redone, as necessary. Database applications
+must not be restarted until recovery completes. After recovery
+finishes, the environment is properly initialized so that applications
+may be restarted.])])
+
+m4_nlistend
+
+m4_p([dnl
+If performing recovery, there are two types of recovery processing:
+m4_italic(normal) and m4_italic(catastrophic). Which you choose depends
+on the source for the database and log files you are using to recover.])
+
+m4_p([dnl
+If up-to-the-minute database and log files are accessible on a stable
+filesystem, normal recovery is sufficient. Run the m4_ref(db_recover)
+utility or call the m4_refT(dbenv_open) specifying the
+m4_ref(DB_RECOVER) flag. However, the normal recovery case
+m4_bold(never) includes recovery using hot backups of the database
+environment. For example, you cannot perform a hot backup of databases
+and log files, restore the backup and then run normal recovery -- you
+must always run catastrophic recovery when using hot backups.])
+
+m4_p([dnl
+If the database or log files have been destroyed or corrupted, or normal
+recovery fails, catastrophic recovery is required. For example,
+catastrophic failure includes the case where the disk drive on which
+the database or log files are stored has been physically destroyed, or
+when the underlying filesystem is corrupted and the operating system's
+normal filesystem checking procedures cannot bring that filesystem to
+a consistent state. This is often difficult to detect, and a common
+sign of the need for catastrophic recovery is when normal m4_db recovery
+procedures fail, or when checksum errors are displayed during normal
+database procedures. When catastrophic recovery is necessary, take the
+following steps:])
+
+m4_nlistbegin
+
+m4_nlist([dnl
+Restore the most recent snapshots of the database and log files from
+the backup media into the directory where recovery will be performed.])
+
+m4_nlist([dnl
+If any log files were archived since the last snapshot was made, they
+should be restored into the directory where recovery will be performed.
+
+m4_p([dnl
+If any log files are available from the database environment that failed
+(for example, the disk holding the database files crashed, but the disk
+holding the log files is fine), those log files should be copied into
+the directory where recovery will be performed.])
+
+m4_p([dnl
+Be sure to restore all log files in the order they were written. The
+order is important because it's possible the same log file appears on
+multiple backups, and you want to run recovery using the most recent
+version of each log file.])
+
+m4_nlist([dnl
+Run the m4_ref(db_recover) utility, specifying its m4_option(c) option;
+or call the m4_refT(dbenv_open), specifying the m4_ref(DB_RECOVER_FATAL)
+flag. The catastrophic recovery process will review the logs and
+database files to bring the environment databases to a consistent state
+as of the time of the last uncorrupted log file that is found. It is
+important to realize that only transactions committed before that date
+will appear in the databases.])
+
+m4_p([dnl
+It is possible to re-create the database in a location different from
+the original by specifying appropriate pathnames to the m4_option(h)
+option of the m4_ref(db_recover) utility. In order for this to work
+properly, it is important that your application refer to files by names
+relative to the database home directory or the pathname(s) specified in
+calls to m4_ref(dbenv_set_data_dir), instead of using full
+pathnames.])])
+
+m4_nlistend
+
+m4_page_footer
diff --git a/db/docs_src/ref/transapp/term.so b/db/docs_src/ref/transapp/term.so
new file mode 100644
index 000000000..4656e3193
--- /dev/null
+++ b/db/docs_src/ref/transapp/term.so
@@ -0,0 +1,67 @@
+m4_comment([$Id: term.so,v 10.19 2005/09/23 16:26:40 bostic Exp $])
+
+m4_ref_title(m4_tam Applications,
+ Terminology,, transapp/why, transapp/fail)
+
+m4_p([dnl
+Here are some definitions that will be helpful in understanding
+transactions:])
+
+m4_tagbegin
+
+m4_tag(Thread of control, [dnl
+m4_db is indifferent to the type or style of threads being used by the
+application; or, for that matter, if threads are being used at all --
+because m4_db supports multiprocess access. In the m4_db documentation,
+any time we refer to a m4_italic(thread of control), it can be read as
+a true thread (one of many in an application's address space) or a
+process.])
+
+m4_tag(Free-threaded, [dnl
+A m4_db handle that can be used by multiple threads simultaneously
+without any application-level synchronization is called
+m4_italic(free-threaded).])
+
+m4_tag(Transaction, [dnl
+A m4_italic(transaction) is a one or more operations on one or more
+databases that should be treated as a single unit of work. For example,
+changes to a set of databases, in which either all of the changes must be
+applied to the database(s) or none of them should. Applications specify
+when each transaction starts, what database operations are included in
+it, and when it ends.])
+
+m4_tag([Transaction abort/commit], [dnl
+Every transaction ends by m4_italic(committing) or m4_italic(aborting).
+If a transaction commits, m4_db guarantees that any database changes
+included in the transaction will never be lost, even after system or
+application failure. If a transaction aborts, or is uncommitted when
+the system or application fails, then the changes involved will never
+appear in the database.])
+
+m4_tag(System or application failure, [dnl
+m4_italic(System or application failure) is the phrase we use to
+describe something bad happening near your data. It can be an
+application dumping core, being interrupted by a signal, the disk
+filling up, or the entire system crashing. In any case, for whatever
+reason, the application can no longer make forward progress, and its
+databases are left in an unknown state.])
+
+m4_tag(Recovery, [dnl
+m4_italic(Recovery) is what makes the database consistent after a system
+or application failure. The recovery process includes review of log
+files and databases to ensure that the changes from each committed
+transaction appear in the database, and that no changes from an
+unfinished (or aborted) transaction do. Whenever system or application
+failure occurs, applications must usually run recovery.])
+
+m4_tag(Deadlock, [dnl
+m4_italic(Deadlock), in its simplest form, happens when one thread of
+control owns resource A, but needs resource B; while another thread of
+control owns resource B, but needs resource A. Neither thread of
+control can make progress, and so one has to give up and release all
+its resources, at which time the remaining thread of control can make
+forward progress.])
+
+m4_tagend
+
+m4_page_footer
diff --git a/db/docs_src/ref/transapp/throughput.so b/db/docs_src/ref/transapp/throughput.so
new file mode 100644
index 000000000..ebeb2eb24
--- /dev/null
+++ b/db/docs_src/ref/transapp/throughput.so
@@ -0,0 +1,148 @@
+m4_comment([$Id: throughput.so,v 10.31 2002/04/02 17:07:05 bostic Exp $])
+
+m4_ref_title(m4_tam Applications,
+ Transaction throughput,
+ @transaction throughput, transapp/tune, transapp/faq)
+
+m4_p([dnl
+Generally, the speed of a database system is measured by the
+m4_italic(transaction throughput), expressed as a number of
+transactions per second. The two gating factors for m4_db performance
+in a transactional system are usually the underlying database files and
+the log file. Both are factors because they require disk I/O, which is
+slow relative to other system resources such as CPU.])
+
+m4_p([dnl
+In the worst-case scenario:])
+
+m4_bulletbegin
+m4_bullet([dnl
+Database access is truly random and the database is too large for any
+significant percentage of it to fit into the cache, resulting in a
+single I/O per requested key/data pair.])
+m4_bullet([Both the database and the log are on a single disk.])
+m4_bulletend
+
+m4_p([dnl
+This means that for each transaction, m4_db is potentially performing
+several filesystem operations:])
+
+m4_bulletbegin
+m4_bullet([Disk seek to database file])
+m4_bullet([Database file read])
+m4_bullet([Disk seek to log file])
+m4_bullet([Log file write])
+m4_bullet([Flush log file information to disk])
+m4_bullet([dnl
+Disk seek to update log file metadata (for example, inode information)])
+m4_bullet([Log metadata write])
+m4_bullet([Flush log file metadata to disk])
+m4_bulletend
+
+m4_p([dnl
+There are a number of ways to increase transactional throughput, all of
+which attempt to decrease the number of filesystem operations per
+transaction. First, the m4_db software includes support for
+m4_italic(group commit). Group commit simply means that when the
+information about one transaction is flushed to disk, the information
+for any other waiting transactions will be flushed to disk at the same
+time, potentially amortizing a single log write over a large number of
+transactions. There are additional tuning parameters which may be
+useful to application writers:])
+
+m4_bulletbegin
+
+m4_bullet([dnl
+Tune the size of the database cache. If the m4_db key/data pairs used
+during the transaction are found in the database cache, the seek and read
+from the database are no longer necessary, resulting in two fewer
+filesystem operations per transaction. To determine whether your cache
+size is too small, see m4_link(M4RELDIR/ref/am_conf/cachesize, Selecting
+a cache size).])
+
+m4_bullet([dnl
+Put the database and the log files on different disks. This allows reads
+and writes to the log files and the database files to be performed
+concurrently.])
+
+m4_bullet([dnl
+Set the filesystem configuration so that file access and modification times
+are not updated. Note that although the file access and modification times
+are not used by m4_db, this may affect other programs -- so be careful.])
+
+m4_bullet([dnl
+Upgrade your hardware. When considering the hardware on which to run your
+application, however, it is important to consider the entire system. The
+controller and bus can have as much to do with the disk performance as
+the disk itself. It is also important to remember that throughput is
+rarely the limiting factor, and that disk seek times are normally the true
+performance issue for m4_db.])
+
+m4_bullet([dnl
+Turn on the m4_ref(DB_TXN_WRITE_NOSYNC) or m4_ref(DB_TXN_NOSYNC) flags.
+This changes the m4_db behavior so that the log files are not written
+and/or flushed when transactions are committed. Although this change
+will greatly increase your transaction throughput, it means that
+transactions will exhibit the ACI (atomicity, consistency, and
+isolation) properties, but not D (durability). Database integrity will
+be maintained, but it is possible that some number of the most recently
+committed transactions may be undone during recovery instead of being
+redone.])
+
+m4_bulletend
+
+m4_p([dnl
+If you are bottlenecked on logging, the following test will help you
+confirm that the number of transactions per second that your application
+does is reasonable for the hardware on which you're running. Your test
+program should repeatedly perform the following operations:])
+
+m4_bulletbegin
+m4_bullet([Seek to the beginning of a file])
+m4_bullet([Write to the file])
+m4_bullet([Flush the file write to disk])
+m4_bulletend
+
+m4_p([dnl
+The number of times that you can perform these three operations per
+second is a rough measure of the minimum number of transactions per
+second of which the hardware is capable. This test simulates the
+operations applied to the log file. (As a simplifying assumption in this
+experiment, we assume that the database files are either on a separate
+disk; or that they fit, with some few exceptions, into the database
+cache.) We do not have to directly simulate updating the log file
+directory information because it will normally be updated and flushed
+to disk as a result of flushing the log file write to disk.])
+
+m4_p([dnl
+Running this test program, in which we write 256 bytes for 1000 operations
+on reasonably standard commodity hardware (Pentium II CPU, SCSI disk),
+returned the following results:])
+
+m4_indent([dnl
+% testfile -b256 -o1000
+running: 1000 ops
+Elapsed time: 16.641934 seconds
+1000 ops: 60.09 ops per second])
+
+m4_p([dnl
+Note that the number of bytes being written to the log as part of each
+transaction can dramatically affect the transaction throughput. The
+test run used 256, which is a reasonable size log write. Your log
+writes may be different. To determine your average log write size, use
+the m4_ref(db_stat) utility to display your log statistics.])
+
+m4_p([dnl
+As a quick sanity check, the average seek time is 9.4 msec for this
+particular disk, and the average latency is 4.17 msec. That results in
+a minimum requirement for a data transfer to the disk of 13.57 msec, or
+a maximum of 74 transfers per second. This is close enough to the
+previous 60 operations per second (which wasn't done on a quiescent
+disk) that the number is believable.])
+
+m4_p([dnl
+An implementation of the previous m4_linkweb(writetest.cs, [example test
+program]) for m4_posix1_name standard systems is included in the m4_db
+distribution.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/transapp/transapp.cs b/db/docs_src/ref/transapp/transapp.cs
new file mode 100644
index 000000000..5ed613afa
--- /dev/null
+++ b/db/docs_src/ref/transapp/transapp.cs
@@ -0,0 +1,490 @@
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include <errno.h>
+#include <pthread.h>
+#include <stdarg.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include <db.h>
+
+#define ENV_DIRECTORY "TXNAPP"
+
+void add_cat(DB_ENV *, DB *, char *, ...);
+void add_color(DB_ENV *, DB *, char *, int);
+void add_fruit(DB_ENV *, DB *, char *, char *);
+void *checkpoint_thread(void *);
+void log_archlist(DB_ENV *);
+void *logfile_thread(void *);
+void db_open(DB_ENV *, DB **, char *, int);
+void env_dir_create(void);
+void env_open(DB_ENV **);
+void usage(void);
+
+int
+main(int argc, char *argv[])
+{
+ extern int optind;
+ DB *db_cats, *db_color, *db_fruit;
+ DB_ENV *dbenv;
+ pthread_t ptid;
+ int ch, ret;
+
+ while ((ch = getopt(argc, argv, "")) != EOF)
+ switch (ch) {
+ case '?':
+ default:
+ usage();
+ }
+ argc -= optind;
+ argv += optind;
+
+ env_dir_create();
+ env_open(&dbenv);
+
+ /* Start a checkpoint thread. */
+ if ((ret = pthread_create(
+ &ptid, NULL, checkpoint_thread, (void *)dbenv)) != 0) {
+ fprintf(stderr,
+ "txnapp: failed spawning checkpoint thread: %s\n",
+ strerror(ret));
+ exit (1);
+ }
+
+ /* Start a logfile removal thread. */
+ if ((ret = pthread_create(
+ &ptid, NULL, logfile_thread, (void *)dbenv)) != 0) {
+ fprintf(stderr,
+ "txnapp: failed spawning log file removal thread: %s\n",
+ strerror(ret));
+ exit (1);
+ }
+
+ /* Open database: Key is fruit class; Data is specific type. */
+ db_open(dbenv, &db_fruit, "fruit", 0);
+
+ /* Open database: Key is a color; Data is an integer. */
+ db_open(dbenv, &db_color, "color", 0);
+
+ /*
+ * Open database:
+ * Key is a name; Data is: company name, address, cat breeds.
+ */
+ db_open(dbenv, &db_cats, "cats", 1);
+
+ add_fruit(dbenv, db_fruit, "apple", "yellow delicious");
+
+ add_color(dbenv, db_color, "blue", 0);
+ add_color(dbenv, db_color, "blue", 3);
+
+ add_cat(dbenv, db_cats,
+ "Amy Adams",
+ "Oracle",
+ "394 E. Riding Dr., Carlisle, MA 01741, USA",
+ "abyssinian",
+ "bengal",
+ "chartreaux",
+ NULL);
+
+ return (0);
+}
+
+void
+env_dir_create()
+{
+ struct stat sb;
+
+ /*
+ * If the directory exists, we're done. We do not further check
+ * the type of the file, DB will fail appropriately if it's the
+ * wrong type.
+ */
+ if (stat(ENV_DIRECTORY, &sb) == 0)
+ return;
+
+ /* Create the directory, read/write/access owner only. */
+ if (mkdir(ENV_DIRECTORY, S_IRWXU) != 0) {
+ fprintf(stderr,
+ "txnapp: mkdir: %s: %s\n", ENV_DIRECTORY, strerror(errno));
+ exit (1);
+ }
+}
+
+void
+env_open(DB_ENV **dbenvp)
+{
+ DB_ENV *dbenv;
+ int ret;
+
+ /* Create the environment handle. */
+ if ((ret = db_env_create(&dbenv, 0)) != 0) {
+ fprintf(stderr,
+ "txnapp: db_env_create: %s\n", db_strerror(ret));
+ exit (1);
+ }
+
+ /* Set up error handling. */
+ dbenv->set_errpfx(dbenv, "txnapp");
+ dbenv->set_errfile(dbenv, stderr);
+
+ /* Do deadlock detection internally. */
+ if ((ret = dbenv->set_lk_detect(dbenv, DB_LOCK_DEFAULT)) != 0) {
+ dbenv->err(dbenv, ret, "set_lk_detect: DB_LOCK_DEFAULT");
+ exit (1);
+ }
+
+ /*
+ * Open a transactional environment:
+ * create if it doesn't exist
+ * free-threaded handle
+ * run recovery
+ * read/write owner only
+ */
+ if ((ret = dbenv->open(dbenv, ENV_DIRECTORY,
+ DB_CREATE | DB_INIT_LOCK | DB_INIT_LOG |
+ DB_INIT_MPOOL | DB_INIT_TXN | DB_RECOVER | DB_THREAD,
+ S_IRUSR | S_IWUSR)) != 0) {
+ dbenv->err(dbenv, ret, "dbenv->open: %s", ENV_DIRECTORY);
+ exit (1);
+ }
+
+ *dbenvp = dbenv;
+}
+
+void *
+checkpoint_thread(void *arg)
+{
+ DB_ENV *dbenv;
+ int ret;
+
+ dbenv = arg;
+ dbenv->errx(dbenv, "Checkpoint thread: %lu", (u_long)pthread_self());
+
+ /* Checkpoint once a minute. */
+ for (;; sleep(60))
+ if ((ret = dbenv->txn_checkpoint(dbenv, 0, 0, 0)) != 0) {
+ dbenv->err(dbenv, ret, "checkpoint thread");
+ exit (1);
+ }
+
+ /* NOTREACHED */
+}
+
+void *
+logfile_thread(void *arg)
+{
+ DB_ENV *dbenv;
+ int ret;
+ char **begin, **list;
+
+ dbenv = arg;
+ dbenv->errx(dbenv,
+ "Log file removal thread: %lu", (u_long)pthread_self());
+
+ /* Check once every 5 minutes. */
+ for (;; sleep(300)) {
+ /* Get the list of log files. */
+ if ((ret =
+ dbenv->log_archive(dbenv, &list, DB_ARCH_ABS)) != 0) {
+ dbenv->err(dbenv, ret, "DB_ENV->log_archive");
+ exit (1);
+ }
+
+ /* Remove the log files. */
+ if (list != NULL) {
+ for (begin = list; *list != NULL; ++list)
+ if ((ret = remove(*list)) != 0) {
+ dbenv->err(dbenv,
+ ret, "remove %s", *list);
+ exit (1);
+ }
+ free (begin);
+ }
+ }
+ /* NOTREACHED */
+}
+
+void
+log_archlist(DB_ENV *dbenv)
+{
+ int ret;
+ char **begin, **list;
+
+ /* Get the list of database files. */
+ if ((ret = dbenv->log_archive(dbenv,
+ &list, DB_ARCH_ABS | DB_ARCH_DATA)) != 0) {
+ dbenv->err(dbenv, ret, "DB_ENV->log_archive: DB_ARCH_DATA");
+ exit (1);
+ }
+ if (list != NULL) {
+ for (begin = list; *list != NULL; ++list)
+ printf("database file: %s\n", *list);
+ free (begin);
+ }
+
+ /* Get the list of log files. */
+ if ((ret = dbenv->log_archive(dbenv,
+ &list, DB_ARCH_ABS | DB_ARCH_LOG)) != 0) {
+ dbenv->err(dbenv, ret, "DB_ENV->log_archive: DB_ARCH_LOG");
+ exit (1);
+ }
+ if (list != NULL) {
+ for (begin = list; *list != NULL; ++list)
+ printf("log file: %s\n", *list);
+ free (begin);
+ }
+}
+
+void
+db_open(DB_ENV *dbenv, DB **dbp, char *name, int dups)
+{
+ DB *db;
+ int ret;
+
+ /* Create the database handle. */
+ if ((ret = db_create(&db, dbenv, 0)) != 0) {
+ dbenv->err(dbenv, ret, "db_create");
+ exit (1);
+ }
+
+ /* Optionally, turn on duplicate data items. */
+ if (dups && (ret = db->set_flags(db, DB_DUP)) != 0) {
+ dbenv->err(dbenv, ret, "db->set_flags: DB_DUP");
+ exit (1);
+ }
+
+ /*
+ * Open a database in the environment:
+ * create if it doesn't exist
+ * free-threaded handle
+ * read/write owner only
+ */
+ if ((ret = db->open(db, NULL, name, NULL, DB_BTREE,
+ DB_AUTO_COMMIT | DB_CREATE | DB_THREAD, S_IRUSR | S_IWUSR)) != 0) {
+ (void)db->close(db, 0);
+ dbenv->err(dbenv, ret, "db->open: %s", name);
+ exit (1);
+ }
+
+ *dbp = db;
+}
+
+void
+add_fruit(DB_ENV *dbenv, DB *db, char *fruit, char *name)
+{
+ DBT key, data;
+ DB_TXN *tid;
+ int ret;
+
+ /* Initialization. */
+ memset(&key, 0, sizeof(key));
+ memset(&data, 0, sizeof(data));
+ key.data = fruit;
+ key.size = strlen(fruit);
+ data.data = name;
+ data.size = strlen(name);
+
+ for (;;) {
+ /* Begin the transaction. */
+ if ((ret = dbenv->txn_begin(dbenv, NULL, &tid, 0)) != 0) {
+ dbenv->err(dbenv, ret, "DB_ENV->txn_begin");
+ exit (1);
+ }
+
+ /* Store the value. */
+ switch (ret = db->put(db, tid, &key, &data, 0)) {
+ case 0:
+ /* Success: commit the change. */
+ if ((ret = tid->commit(tid, 0)) != 0) {
+ dbenv->err(dbenv, ret, "DB_TXN->commit");
+ exit (1);
+ }
+ return;
+ case DB_LOCK_DEADLOCK:
+ /* Deadlock: retry the operation. */
+ if ((ret = tid->abort(tid)) != 0) {
+ dbenv->err(dbenv, ret, "DB_TXN->abort");
+ exit (1);
+ }
+ break;
+ default:
+ /* Error: run recovery. */
+ dbenv->err(dbenv, ret, "dbc->put: %s/%s", fruit, name);
+ exit (1);
+ }
+ }
+}
+
+void
+add_color(DB_ENV *dbenv, DB *dbp, char *color, int increment)
+{
+ DBT key, data;
+ DB_TXN *tid;
+ int original, ret;
+ char buf[64];
+
+ /* Initialization. */
+ memset(&key, 0, sizeof(key));
+ key.data = color;
+ key.size = strlen(color);
+ memset(&data, 0, sizeof(data));
+ data.flags = DB_DBT_MALLOC;
+
+ for (;;) {
+ /* Begin the transaction. */
+ if ((ret = dbenv->txn_begin(dbenv, NULL, &tid, 0)) != 0) {
+ dbenv->err(dbenv, ret, "DB_ENV->txn_begin");
+ exit (1);
+ }
+
+ /*
+ * Get the key. If it exists, we increment the value. If it
+ * doesn't exist, we create it.
+ */
+ switch (ret = dbp->get(dbp, tid, &key, &data, 0)) {
+ case 0:
+ original = atoi(data.data);
+ break;
+ case DB_LOCK_DEADLOCK:
+ /* Deadlock: retry the operation. */
+ if ((ret = tid->abort(tid)) != 0) {
+ dbenv->err(dbenv, ret, "DB_TXN->abort");
+ exit (1);
+ }
+ continue;
+ case DB_NOTFOUND:
+ original = 0;
+ break;
+ default:
+ /* Error: run recovery. */
+ dbenv->err(
+ dbenv, ret, "dbc->get: %s/%d", color, increment);
+ exit (1);
+ }
+ if (data.data != NULL)
+ free(data.data);
+
+ /* Create the new data item. */
+ (void)snprintf(buf, sizeof(buf), "%d", original + increment);
+ data.data = buf;
+ data.size = strlen(buf) + 1;
+
+ /* Store the new value. */
+ switch (ret = dbp->put(dbp, tid, &key, &data, 0)) {
+ case 0:
+ /* Success: commit the change. */
+ if ((ret = tid->commit(tid, 0)) != 0) {
+ dbenv->err(dbenv, ret, "DB_TXN->commit");
+ exit (1);
+ }
+ return;
+ case DB_LOCK_DEADLOCK:
+ /* Deadlock: retry the operation. */
+ if ((ret = tid->abort(tid)) != 0) {
+ dbenv->err(dbenv, ret, "DB_TXN->abort");
+ exit (1);
+ }
+ break;
+ default:
+ /* Error: run recovery. */
+ dbenv->err(
+ dbenv, ret, "dbc->put: %s/%d", color, increment);
+ exit (1);
+ }
+ }
+}
+
+void
+add_cat(DB_ENV *dbenv, DB *db, char *name, ...)
+{
+ va_list ap;
+ DBC *dbc;
+ DBT key, data;
+ DB_TXN *tid;
+ int ret;
+ char *s;
+
+ /* Initialization. */
+ memset(&key, 0, sizeof(key));
+ memset(&data, 0, sizeof(data));
+ key.data = name;
+ key.size = strlen(name);
+
+retry: /* Begin the transaction. */
+ if ((ret = dbenv->txn_begin(dbenv, NULL, &tid, 0)) != 0) {
+ dbenv->err(dbenv, ret, "DB_ENV->txn_begin");
+ exit (1);
+ }
+
+ /* Delete any previously existing item. */
+ switch (ret = db->del(db, tid, &key, 0)) {
+ case 0:
+ case DB_NOTFOUND:
+ break;
+ case DB_LOCK_DEADLOCK:
+ /* Deadlock: retry the operation. */
+ if ((ret = tid->abort(tid)) != 0) {
+ dbenv->err(dbenv, ret, "DB_TXN->abort");
+ exit (1);
+ }
+ goto retry;
+ default:
+ dbenv->err(dbenv, ret, "db->del: %s", name);
+ exit (1);
+ }
+
+ /* Create a cursor. */
+ if ((ret = db->cursor(db, tid, &dbc, 0)) != 0) {
+ dbenv->err(dbenv, ret, "db->cursor");
+ exit (1);
+ }
+
+ /* Append the items, in order. */
+ va_start(ap, name);
+ while ((s = va_arg(ap, char *)) != NULL) {
+ data.data = s;
+ data.size = strlen(s);
+ switch (ret = dbc->c_put(dbc, &key, &data, DB_KEYLAST)) {
+ case 0:
+ break;
+ case DB_LOCK_DEADLOCK:
+ va_end(ap);
+
+ /* Deadlock: retry the operation. */
+ if ((ret = dbc->c_close(dbc)) != 0) {
+ dbenv->err(
+ dbenv, ret, "dbc->c_close");
+ exit (1);
+ }
+ if ((ret = tid->abort(tid)) != 0) {
+ dbenv->err(dbenv, ret, "DB_TXN->abort");
+ exit (1);
+ }
+ goto retry;
+ default:
+ /* Error: run recovery. */
+ dbenv->err(dbenv, ret, "dbc->put: %s/%s", name, s);
+ exit (1);
+ }
+ }
+ va_end(ap);
+
+ /* Success: commit the change. */
+ if ((ret = dbc->c_close(dbc)) != 0) {
+ dbenv->err(dbenv, ret, "dbc->c_close");
+ exit (1);
+ }
+ if ((ret = tid->commit(tid, 0)) != 0) {
+ dbenv->err(dbenv, ret, "DB_TXN->commit");
+ exit (1);
+ }
+}
+
+void
+usage()
+{
+ (void)fprintf(stderr, "usage: txnapp\n");
+ exit(1);
+}
diff --git a/db/docs_src/ref/transapp/tune.so b/db/docs_src/ref/transapp/tune.so
new file mode 100644
index 000000000..24fd3ee81
--- /dev/null
+++ b/db/docs_src/ref/transapp/tune.so
@@ -0,0 +1,165 @@
+m4_comment([$Id: tune.so,v 11.24 2006/08/08 05:24:09 mjc Exp $])
+
+m4_ref_title(m4_tam Applications,
+ Transaction tuning,
+ [@transaction tuning, transaction @tuning],
+ transapp/reclimit, transapp/throughput)
+
+m4_p([dnl
+There are a few different issues to consider when tuning the performance
+of m4_db transactional applications. First, you should review
+m4_link(M4RELDIR/ref/am_misc/tune, [Access method tuning]), as the
+tuning issues for access method applications are applicable to
+transactional applications as well. The following are additional tuning
+issues for m4_db transactional applications:])
+
+m4_tagbegin
+m4_tag(access method, [dnl
+Highly concurrent applications should use the Queue access method, where
+possible, as it provides finer-granularity of locking than the other
+access methods. Otherwise, applications usually see better concurrency
+when using the Btree access method than when using either the Hash or
+Recno access methods.])
+
+m4_tag(record numbers, [dnl
+Using record numbers outside of the Queue access method will often slow
+down concurrent applications as they limit the degree of concurrency
+available in the database. Using the Recno access method, or the Btree
+access method with retrieval by record number configured can slow
+applications down.])
+
+m4_tag(Btree database size, [dnl
+When using the Btree access method, applications supporting concurrent
+access may see excessive numbers of deadlocks in small databases. There
+are two different approaches to resolving this problem. First, as the
+Btree access method uses page-level locking, decreasing the database
+page size can result in fewer lock conflicts. Second, in the case of
+databases that are cyclically growing and shrinking, turning off reverse
+splits (with m4_ref(DB_REVSPLITOFF)) can leave the database with enough
+pages that there will be fewer lock conflicts.])
+
+m4_tag(read locks, [dnl
+Performing all read operations outside of transactions or at
+m4_link(M4RELDIR/ref/transapp/read, snapshot isolation) can often
+significantly increase application throughput. In addition, limiting
+the lifetime of non-transactional cursors will reduce the length of
+times locks are held, thereby improving concurrency.])
+
+m4_tag([m4_ref(DB_DIRECT_DB), m4_ref(DB_DIRECT_LOG)], [dnl
+Consider using the m4_ref(DB_DIRECT_DB) and m4_ref(DB_DIRECT_LOG) flags.
+On some systems, avoiding caching in the operating system can improve
+write throughput and allow the creation of larger m4_db caches.])
+
+m4_tag([m4_ref(DB_READ_UNCOMMITTED), m4_ref(DB_READ_COMMITTED)], [dnl
+Consider decreasing the level of isolation of transaction using the
+m4_ref(DB_READ_UNCOMMITTED) or m4_ref(DB_READ_COMMITTED) flags for
+transactions or cursors or the m4_ref(DB_READ_UNCOMMITTED) flag on
+individual read operations. The m4_ref(DB_READ_COMMITTED) flag will
+release read locks on cursors as soon as the data page is nolonger
+referenced. This is also called m4_italic(degree 2 isolation). This
+will tend to block write operations for shorter periods for applications
+that do not need to have repeatable reads for cursor operations.
+m4_p([dnl
+The m4_ref(DB_READ_UNCOMMITTED) flag will allow read operations to
+potentially return data which has been modified but not yet committed,
+and can significantly increase application throughput in applications
+that do not require data be guaranteed to be permanent in the database.
+This is also called m4_italic(degree 1 isolation), or m4_italic(dirty
+reads).])])
+
+m4_tag([m4_ref(DB_RMW)], [dnl
+If there are many deadlocks, consider using the m4_ref(DB_RMW) flag to
+immediate acquire write locks when reading data items that will
+subsequently be modified. Although this flag may increase contention
+(because write locks are held longer than they would otherwise be), it
+may decrease the number of deadlocks that occur.])
+
+m4_tag([m4_ref(DB_TXN_WRITE_NOSYNC), m4_ref(DB_TXN_NOSYNC)], [dnl
+By default, transactional commit in m4_db implies durability, that is,
+all committed operations will be present in the database after recovery
+from any application or system failure. For applications not requiring
+that level of certainty, specifying the m4_ref(DB_TXN_NOSYNC) flag will
+often provide a significant performance improvement. In this case, the
+database will still be fully recoverable, but some number of committed
+transactions might be lost after application or system failure.])
+
+m4_tag(access databases in order, [dnl
+When modifying multiple databases in a single transaction, always access
+physical files and databases within physical files, in the same order
+where possible. In addition, avoid returning to a physical file or
+database, that is, avoid accessing a database, moving on to another
+database and then returning to the first database. This can
+significantly reduce the chance of deadlock between threads of
+control.])
+
+m4_tag(large key/data items, [dnl
+Transactional protections in m4_db are guaranteed by before and after
+physical image logging. This means applications modifying large
+key/data items also write large log records, and, in the case of the
+default transaction commit, threads of control must wait until those
+log records have been flushed to disk. Applications supporting
+concurrent access should try and keep key/data items small wherever
+possible.])
+
+m4_tag(mutex selection, [dnl
+During configuration, m4_db selects a mutex implementation for the
+architecture. m4_db normally prefers blocking-mutex implementations over
+non-blocking ones. For example, m4_db will select POSIX pthread mutex
+interfaces rather than assembly-code test-and-set spin mutexes because
+pthread mutexes are usually more efficient and less likely to waste CPU
+cycles spinning without getting any work accomplished.
+m4_p([dnl
+For some applications and systems (generally highly concurrent
+applications on large multiprocessor systems), m4_db makes the wrong
+choice. In some cases, better performance can be achieved by
+configuring with the
+m4_linkpage(M4RELDIR/ref/build_unix/conf, --with-mutex, --with-mutex)
+argument and selecting a different mutex implementation than the one
+selected by m4_db. When a test-and-set spin mutex implementation is
+selected, it may be useful to tune the number of spins made before
+yielding the processor and sleeping. For more information, see the
+m4_refT(mutex_set_tas_spins).])
+m4_p([dnl
+Finally, m4_db may put multiple mutexes on individual cache lines. When
+tuning m4_db for large multiprocessor systems, it may be useful to tune
+mutex alignment using the
+m4_ref(mutex_set_align) method.])])
+
+m4_tag([m4_linkpage(M4RELDIR/ref/build_unix/conf,
+--enable-posixmutexes, --enable-posixmutexes)], [dnl
+By default, the m4_db library will only select the POSIX pthread mutex
+implementation if it supports mutexes shared between multiple processes.
+If your application does not share its database environment between
+processes and your system's POSIX mutex support was not selected because
+it did not support inter-process mutexes, you may be able to increase
+performance and transactional throughput by configuring with the
+m4_linkpage(M4RELDIR/ref/build_unix/conf, --enable-posixmutexes,
+--enable-posixmutexes) argument.])
+
+m4_tag(log buffer size, [dnl
+m4_db internally maintains a buffer of log writes. The buffer is
+written to disk at transaction commit, by default, or, whenever it
+is filled. If it is consistently being filled before transaction
+commit, it will be written multiple times per transaction, costing
+application performance. In these cases, increasing the size of the
+log buffer can increase application throughput.])
+
+m4_tag(log file location, [dnl
+If the database environment's log files are on the same disk as the
+databases, the disk arms will have to seek back-and-forth between the
+two. Placing the log files and the databases on different disk arms
+can often increase application throughput.])
+
+m4_tag(trickle write, [dnl
+In some applications, the cache is sufficiently active and dirty that
+readers frequently need to write a dirty page in order to have space in
+which to read a new page from the backing database file. You can use
+the m4_ref(db_stat) utility (or the statistics returned by the
+m4_refT(memp_stat)) to see how often this is happening in your
+application's cache. In this case, using a separate thread of control
+and the m4_refT(memp_trickle) to trickle-write pages can often increase
+the overall throughput of the application.])
+
+m4_tagend
+
+m4_page_footer
diff --git a/db/docs_src/ref/transapp/why.so b/db/docs_src/ref/transapp/why.so
new file mode 100644
index 000000000..8175b5105
--- /dev/null
+++ b/db/docs_src/ref/transapp/why.so
@@ -0,0 +1,34 @@
+m4_comment([$Id: why.so,v 1.7 2003/11/04 14:53:27 bostic Exp $])
+
+m4_ref_title(m4_tam Applications,
+ Why transactions?,, transapp/intro, transapp/term)
+
+m4_p([dnl
+Perhaps the first question to answer is "Why transactions?" There are
+a number of reasons to include transactional support in your applications.
+The most common ones are the following:])
+
+m4_tagbegin
+
+m4_tag([Recoverability], [dnl
+Applications often need to ensure that no matter how the system or
+application fails, previously saved data is available the next time the
+application runs. This is often called Durability.])
+
+m4_tag([Atomicity], [dnl
+Applications may need to make multiple changes to one or more databases,
+but ensure that either all of the changes happen, or none of them
+happens. Transactions guarantee that a group of changes are atomic;
+that is, if the application or system fails, either all of the changes
+to the databases will appear when the application next runs, or none of
+them.])
+
+m4_tag([Isolation], [dnl
+Applications may need to make changes in isolation, that is, ensure that
+only a single thread of control is modifying a key/data pair at a time.
+Transactions ensure each thread of control sees all records as if all
+other transactions either completed before or after its transaction.])
+
+m4_tagend
+
+m4_page_footer
diff --git a/db/docs_src/ref/transapp/writetest.cs b/db/docs_src/ref/transapp/writetest.cs
new file mode 100644
index 000000000..8971a4e7c
--- /dev/null
+++ b/db/docs_src/ref/transapp/writetest.cs
@@ -0,0 +1,118 @@
+/*
+ * writetest --
+ *
+ * $Id: writetest.cs,v 10.8 2005/09/13 18:15:36 bostic Exp $
+ */
+#include <sys/types.h>
+#include <sys/time.h>
+
+#include <errno.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+void usage(void);
+
+int
+main(argc, argv)
+ int argc;
+ char *argv[];
+{
+ struct timeval start_time, end_time;
+ double usecs;
+ long val;
+ int bytes, ch, cnt, fd, ops;
+ char *fname, buf[100 * 1024];
+
+ bytes = 256;
+ fname = "testfile";
+ ops = 1000;
+ while ((ch = getopt(argc, argv, "b:f:o:")) != EOF)
+ switch (ch) {
+ case 'b':
+ if ((bytes = atoi(optarg)) > sizeof(buf)) {
+ fprintf(stderr,
+ "max -b option %d\n", sizeof(buf));
+ exit (1);
+ }
+ break;
+ case 'f':
+ fname = optarg;
+ break;
+ case 'o':
+ if ((ops = atoi(optarg)) <= 0) {
+ fprintf(stderr, "illegal -o option value\n");
+ exit (1);
+ }
+ break;
+ case '?':
+ default:
+ usage();
+ }
+ argc -= optind;
+ argv += optind;
+
+ (void)unlink(fname);
+ if ((fd = open(fname, O_RDWR | O_CREAT, 0666)) == -1) {
+ perror(fname);
+ exit (1);
+ }
+
+ memset(buf, 0, bytes);
+
+ printf("Running: %d ops\n", ops);
+
+ (void)gettimeofday(&start_time, NULL);
+ for (cnt = 0; cnt < ops; ++cnt) {
+ if (write(fd, buf, bytes) != bytes) {
+ fprintf(stderr, "write: %s\n", strerror(errno));
+ exit (1);
+ }
+ if (lseek(fd, (off_t)0, SEEK_SET) == -1) {
+ fprintf(stderr, "lseek: %s\n", strerror(errno));
+ exit (1);
+ }
+ if (fsync(fd) != 0) {
+ fprintf(stderr, "fsync: %s\n", strerror(errno));
+ exit (1);
+ }
+ }
+ (void)gettimeofday(&end_time, NULL);
+
+ /*
+ * Guarantee end_time fields are greater than or equal to start_time
+ * fields.
+ */
+ if (end_time.tv_sec > start_time.tv_sec) {
+ --end_time.tv_sec;
+ end_time.tv_usec += 1000000;
+ }
+
+ /* Display elapsed time. */
+ val = end_time.tv_sec - start_time.tv_sec;
+ printf("Elapsed time: %ld:", val / (60 * 60));
+ val %= 60 * 60;
+ printf("%ld:", val / 60);
+ val %= 60;
+ printf("%ld.%ld\n", val, end_time.tv_usec - start_time.tv_usec);
+
+ /* Display operations per second. */
+ usecs =
+ (end_time.tv_sec - start_time.tv_sec) * 1000000 +
+ (end_time.tv_usec - start_time.tv_usec);
+ printf("%d operations: %7.2f operations per second\n",
+ ops, (ops / usecs) * 1000000);
+
+ (void)unlink(fname);
+ exit (0);
+}
+
+void
+usage()
+{
+ (void)fprintf(stderr,
+ "usage: testfile [-b bytes] [-f file] [-o ops]\n");
+ exit(1);
+}
diff --git a/db/docs_src/ref/txn/config.so b/db/docs_src/ref/txn/config.so
new file mode 100644
index 000000000..877a83aa5
--- /dev/null
+++ b/db/docs_src/ref/txn/config.so
@@ -0,0 +1,30 @@
+m4_comment([$Id: config.so,v 10.19 2002/07/22 05:11:58 bostic Exp $])
+
+m4_ref_title(Transaction Subsystem,
+ Configuring transactions, @transaction configuration, txn/intro, txn/limits)
+
+m4_p([dnl
+The application may change the number of simultaneous outstanding
+transactions supported by the m4_db environment by calling the
+m4_refT(dbenv_set_tx_max). This will also set the size of the
+underlying transaction subsystem's region. When the number of
+outstanding transactions is reached, additional calls to
+m4_ref(txn_begin) will fail until some active transactions complete.])
+
+m4_p([dnl
+There is an additional parameter used in configuring transactions; the
+m4_ref(DB_TXN_NOSYNC) flag. Setting the m4_ref(DB_TXN_NOSYNC) flag to
+m4_ref(dbenv_set_flags) when opening a transaction region changes the
+behavior of transactions to not write or synchronously flush the log
+during transaction commit.])
+
+m4_p([dnl
+This change may significantly increase application transactional
+throughput. However, it means that although transactions will continue
+to exhibit the ACI (atomicity, consistency, and isolation) properties,
+they will not have D (durability). Database integrity will be
+maintained, but it is possible that some number of the most recently
+committed transactions may be undone during recovery instead of being
+redone.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/txn/intro.so b/db/docs_src/ref/txn/intro.so
new file mode 100644
index 000000000..23ecdc5e5
--- /dev/null
+++ b/db/docs_src/ref/txn/intro.so
@@ -0,0 +1,88 @@
+m4_comment([$Id: intro.so,v 10.26 2006/11/13 18:05:04 bostic Exp $])
+
+m4_ref_title(Transaction Subsystem,
+ Introduction to the transaction subsystem,
+ introduction to the @transaction subsystem, mp/config, txn/config)
+
+m4_p([dnl
+The Transaction subsystem makes operations atomic, consistent, isolated,
+and durable in the face of system and application failures. The subsystem
+requires that the data be properly logged and locked in order to attain
+these properties. m4_db contains all the components necessary to
+transaction-protect the m4_db access methods, and other forms of data may
+be protected if they are logged and locked appropriately.])
+
+m4_p([dnl
+The Transaction subsystem is created, initialized, and opened by calls to
+m4_ref(dbenv_open) with the m4_ref(DB_INIT_TXN) flag specified. Note
+that enabling transactions automatically enables logging, but does not
+enable locking because a single thread of control that needed atomicity
+and recoverability would not require it.])
+
+m4_p([dnl
+The m4_ref(txn_begin) function starts a transaction, returning an opaque
+handle to a transaction. If the parent parameter to m4_ref(txn_begin) is
+non-NULL, the new transaction is a child of the designated parent
+transaction.])
+
+m4_p([dnl
+The m4_ref(txn_abort) function ends the designated transaction and causes
+all updates performed by the transaction to be undone. The end result is
+that the database is left in a state identical to the state that existed
+prior to the m4_ref(txn_begin). If the aborting transaction has any child
+transactions associated with it (even ones that have already been
+committed), they are also aborted. Any transactions that are unresolved
+(neither committed nor aborted) when the application or system fails
+are aborted during recovery.])
+
+m4_p([dnl
+The m4_ref(txn_commit) function ends the designated transaction and makes
+all the updates performed by the transaction permanent, even in the face
+of application or system failure. If this is a parent transaction
+committing, all child transactions that individually committed or
+had not been resolved are also committed.])
+
+m4_p([dnl
+Transactions are identified by 32-bit unsigned integers. The ID
+associated with any transaction can be obtained using the m4_ref(txn_id)
+function. If an application is maintaining information outside of m4_db
+it wants to transaction-protect, it should use this transaction ID as
+the locking ID.])
+
+m4_p([dnl
+The m4_ref(txn_checkpoint) function causes a transaction checkpoint. A
+checkpoint is performed using to a specific log sequence number (LSN),
+referred to as the checkpoint LSN. When a checkpoint completes
+successfully, it means that all data buffers whose updates are described
+by LSNs less than the checkpoint LSN have been written to disk. This, in
+turn, means that the log records less than the checkpoint LSN are no
+longer necessary for normal recovery (although they would be required for
+catastrophic recovery if the database files were lost), and all log files
+containing only records prior to the checkpoint LSN may be safely archived
+and removed.])
+
+m4_p([dnl
+The time required to run normal recovery is proportional to the amount
+of work done between checkpoints. If a large number of modifications
+happen between checkpoints, many updates recorded in the log may
+not have been written to disk when failure occurred, and recovery may
+take longer to run. Generally, if the interval between checkpoints is
+short, data may be being written to disk more frequently, but the
+recovery time will be shorter. Often, the checkpoint interval is tuned
+for each specific application.])
+
+m4_p([dnl
+The m4_refT(txn_stat) returns information about the status of the
+transaction subsystem. It is the programmatic interface used by the
+m4_ref(db_stat) utility.])
+
+m4_p([dnl
+The transaction system is closed by a call to m4_ref(dbenv_close).])
+
+m4_p([dnl
+Finally, the entire transaction system may be removed using the
+m4_refT(dbenv_remove).])
+
+include(txn/m4.methods)
+
+m4_page_footer
diff --git a/db/docs_src/ref/txn/limits.so b/db/docs_src/ref/txn/limits.so
new file mode 100644
index 000000000..12d529f8c
--- /dev/null
+++ b/db/docs_src/ref/txn/limits.so
@@ -0,0 +1,48 @@
+m4_comment([$Id: limits.so,v 10.38 2004/08/18 19:57:37 bostic Exp $])
+
+m4_ref_title(Transaction Subsystem,
+ Transaction limits, @transaction limits, txn/config, sequence/intro)
+
+m4_section([Transaction IDs])
+
+m4_p([dnl
+Transactions are identified by 31-bit unsigned integers, which means
+there are just over two billion unique transaction IDs. When a database
+environment is initially created or recovery is run, the transaction ID
+name space is reset, and new transactions are numbered starting from
+0x80000000 (2,147,483,648). The IDs will wrap if the maximum
+transaction ID is reached, starting again from 0x80000000. The most
+recently allocated transaction ID is the m4_arg(st_last_txnid) value in
+the transaction statistics information, and can be displayed by the
+m4_ref(db_stat) utility.])
+
+m4_section([Cursors])
+
+m4_p([dnl
+When using transactions, cursors are localized to a single transaction.
+That is, a cursor may not span transactions, and must be opened and
+closed within a single transaction. In addition, intermingling
+transaction-protected cursor operations and non-transaction-protected
+cursor operations on the same database in a single thread of control is
+practically guaranteed to deadlock because the locks obtained for
+transactions and non-transactions can conflict.])
+
+m4_section([Multiple Threads of Control])
+
+m4_p([dnl
+Because transactions must hold all their locks until commit, a single
+transaction may accumulate a large number of long-term locks during its
+lifetime. As a result, when two concurrently running transactions
+access the same database, there is strong potential for conflict.
+Although m4_db allows an application to have multiple outstanding
+transactions active within a single thread of control, great care must
+be taken to ensure that the transactions do not block each other (for
+example, attempt to obtain conflicting locks on the same data). If two
+concurrently active transactions in the same thread of control do
+encounter a lock conflict, the thread of control will deadlock so that
+the deadlock detector cannot detect the problem. In this case, there
+is no true deadlock, but because the transaction on which a transaction
+is waiting is in the same thread of control, no forward progress can be
+made.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.2.0/convert.so b/db/docs_src/ref/upgrade.2.0/convert.so
new file mode 100644
index 000000000..e64753e03
--- /dev/null
+++ b/db/docs_src/ref/upgrade.2.0/convert.so
@@ -0,0 +1,81 @@
+m4_comment([$Id: convert.so,v 11.6 2000/03/18 21:43:19 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 2.0: converting applications,,
+ upgrade.2.0/system, upgrade.2.0/disk)
+
+m4_p([dnl
+Mapping the m4_db 1.85 functionality into m4_db version 2 is almost always
+simple. The manual page m4_ref(dbh_open) replaces the m4_db 1.85 manual
+pages m4_manref(dbopen, 3), m4_manref(btree, 3), m4_manref(hash, 3) and
+m4_manref(recno, 3). You should be able to convert each 1.85 function
+call into a m4_db version 2 function call using just the m4_ref(dbh_open)
+documentation.])
+
+m4_p([dnl
+Some guidelines and things to watch out for:])
+
+m4_nlistbegin
+
+m4_nlist([dnl
+Most access method functions have exactly the same semantics as in m4_db
+1.85, although the arguments to the functions have changed in some cases.
+To get your code to compile, the most common change is to add the
+transaction ID as an argument (NULL, since m4_db 1.85 did not support
+transactions.)])
+
+m4_nlist([dnl
+You must always initialize DBT structures to zero before using them with
+any m4_db version 2 function. (They do not normally have to be
+reinitialized each time, only when they are first allocated. Do this by
+declaring the DBT structure external or static, or by calling the C
+library routine m4_manref(bzero, 3) or m4_manref(memset, 3).)])
+
+m4_nlist([dnl
+The error returns are completely different in the two versions. In m4_db
+1.85, __LT__ 0 meant an error, and __GT__ 0 meant a minor m4_db exception.
+In m4_db 2.0, __GT__ 0 means an error (the m4_db version 2 functions
+return m4_envvar(errno) on error) and __LT__ 0 means a m4_db exception.
+See m4_link(M4RELDIR/ref/program/errorret, Error Returns to Applications)
+for more information.])
+
+m4_nlist([dnl
+The m4_db 1.85 DB-__GT__seq function has been replaced by cursors in m4_db
+version 2. The semantics are approximately the same, but cursors require
+the creation of an extra object (the DBC object), which is then used to
+access the database.
+m4_p([dnl
+Specifically, the partial key match and range search functionality of the
+R_CURSOR flag in DB-__GT__seq has been replaced by the
+m4_ref(DB_SET_RANGE) flag in m4_ref(dbc_get).])])
+
+m4_nlist([dnl
+In version 2 of the m4_db library, additions or deletions into Recno
+(fixed and variable-length record) databases no longer automatically
+logically renumber all records after the add/delete point, by default.
+The default behavior is that deleting records does not cause subsequent
+records to be renumbered, and it is an error to attempt to add new records
+between records already in the database. Applications wanting the
+historic Recno access method semantics should call the
+m4_refT(dbh_set_flags) with the m4_ref(DB_RENUMBER) flag.])
+
+m4_nlist([dnl
+Opening a database in m4_db version 2 is a much heavier-weight operation
+than it was in m4_db 1.85. Therefore, if your historic applications were
+written to open a database, perform a single operation, and close the
+database, you may observe performance degradation. In most cases, this
+is due to the expense of creating the environment upon each open. While
+we encourage restructuring your application to avoid repeated opens and
+closes, you can probably recover most of the lost performance by simply
+using a persistent environment across invocations.])
+
+m4_nlistend
+
+m4_p([dnl
+While simply converting m4_db 1.85 function calls to m4_db version 2
+function calls will work, we recommend that you eventually reconsider your
+application's interface to the m4_db database library in light of the
+additional functionality supplied by m4_db version 2, as it is likely to
+result in enhanced application performance.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.2.0/disk.so b/db/docs_src/ref/upgrade.2.0/disk.so
new file mode 100644
index 000000000..804114abd
--- /dev/null
+++ b/db/docs_src/ref/upgrade.2.0/disk.so
@@ -0,0 +1,15 @@
+m4_comment([$Id: disk.so,v 11.6 2000/12/05 20:36:25 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 2.0: upgrade requirements,,
+ upgrade.2.0/convert, upgrade.3.0/intro)
+
+m4_p([dnl
+You will need to upgrade your on-disk databases, as all access method
+database formats changed in the m4_db 2.0 release. For information on
+converting databases from m4_db 1.85 to m4_db 2.0, see the
+m4_ref(db_dump185) and m4_ref(db_load) documentation. As database
+environments did not exist prior to the 2.0 release, there is no
+question of upgrading existing database environments.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.2.0/intro.so b/db/docs_src/ref/upgrade.2.0/intro.so
new file mode 100644
index 000000000..2e5315a6e
--- /dev/null
+++ b/db/docs_src/ref/upgrade.2.0/intro.so
@@ -0,0 +1,21 @@
+m4_comment([$Id: intro.so,v 11.10 2006/10/09 16:51:34 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 2.0: introduction,,
+ changelog/toc, upgrade.2.0/system)
+
+m4_p([dnl
+The following pages describe how to upgrade applications coded against
+the m4_db 1.85 and 1.86 release interfaces to the m4_db 2.0 release
+interfaces. They do not describe how to upgrade to the current m4_db
+release interfaces.])
+
+m4_p([dnl
+It is not difficult to upgrade m4_db 1.85 applications to use the m4_db
+version 2 library. The m4_db version 2 library has a m4_db 1.85
+compatibility API, which you can use by either recompiling your
+application's source code or by relinking its object files against the
+version 2 library. The underlying databases must be converted, however,
+as the m4_db version 2 library has a different underlying database format.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.2.0/system.so b/db/docs_src/ref/upgrade.2.0/system.so
new file mode 100644
index 000000000..21ade00e3
--- /dev/null
+++ b/db/docs_src/ref/upgrade.2.0/system.so
@@ -0,0 +1,93 @@
+m4_comment([$Id: system.so,v 11.5 2000/03/18 21:43:20 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 2.0: system integration,, upgrade.2.0/intro, upgrade.2.0/convert)
+
+m4_nlistbegin
+m4_nlist([dnl
+It is possible to maintain both the m4_db 1.85 and m4_db version 2
+libraries on your system. However, the m4_path(db.h) include file that
+was distributed with m4_db 1.85 is not compatible with the m4_path(db.h)
+file distributed with m4_db version 2, so you will have to install them
+in different locations. In addition, both the m4_db 1.85 and m4_db
+version 2 libraries are named m4_path(libdb.a).
+
+m4_p([dnl
+As the m4_db 1.85 library did not have an installation target in the
+Makefile, there's no way to know exactly where it was installed on the
+system. In addition, many vendors included it in the C library instead
+of as a separate library, and so it may actually be part of libc and the
+m4_path(db.h) include file may be installed in m4_path(/usr/include).])
+
+m4_p([dnl
+For these reasons, the simplest way to maintain both libraries is to
+install m4_db version 2 in a completely separate area of your system.
+The m4_db version 2 installation process allows you to install into a
+standalone directory hierarchy on your system. See the
+m4_link(M4RELDIR/ref/build_unix/intro, Building for UNIX systems)
+documentation for more information and instructions on how to install the
+m4_db version 2 library, include files and documentation into specific
+locations.])])
+
+m4_nlist([dnl
+Alternatively, you can replace m4_db 1.85 on your system with m4_db
+version 2. In this case, you'll probably want to install m4_db version
+2 in the normal place on your system, wherever that may be, and delete
+the m4_db 1.85 include files, manual pages and libraries.
+
+m4_p([dnl
+To replace 1.85 with version 2, you must either convert your 1.85
+applications to use the version 2 API or build the m4_db version 2 library
+to include m4_db 1.85 interface compatibility code. Whether converting
+your applications to use the version 2 interface or using the version 1.85
+compatibility API, you will need to recompile or relink your 1.85
+applications, and you must convert any persistent application databases
+to the m4_db version 2 database formats.])
+
+m4_p([dnl
+If you want to recompile your m4_db 1.85 applications, you will have to
+change them to include the file m4_path(db_185.h) instead of
+m4_path(db.h). (The m4_path(db_185.h) file is automatically installed
+during the m4_db version 2 installation process.) You can then recompile
+the applications, linking them against the m4_db version 2 library.])
+
+m4_p([dnl
+For more information on compiling the m4_db 1.85 compatibility code into
+the m4_db version 2 library, see m4_link(M4RELDIR/ref/build_unix/intro,
+Building for UNIX platforms).])
+
+m4_p([dnl
+For more information on converting databases from the m4_db 1.85 formats
+to the m4_db version 2 formats, see the m4_ref(db_dump185) and
+m4_ref(db_load) documentation.])])
+
+m4_nlist([dnl
+Finally, although we certainly do not recommend it, it is possible to
+load both m4_db 1.85 and m4_db version 2 into the same library.
+Similarly, it is possible to use both m4_db 1.85 and m4_db version 2
+within a single application, although it is not possible to use them from
+within the same file.
+
+m4_p([dnl
+The name space in m4_db version 2 has been changed from that of previous
+m4_db versions, notably version 1.85, for portability and consistency
+reasons. The only name collisions in the two libraries are the names used
+by the historic m4_ref(dbm), m4_ref(ndbm) and m4_ref(hsearch) interfaces,
+and the m4_db 1.85 compatibility interfaces in the m4_db version 2
+library.])
+
+m4_p([dnl
+If you are loading both m4_db 1.85 and m4_db version 2 into a single
+library, remove the historic interfaces from one of the two library
+builds, and configure the m4_db version 2 build to not include the m4_db
+1.85 compatibility API, otherwise you could have collisions and undefined
+behavior. This can be done by editing the library Makefiles and
+reconfiguring and rebuilding the m4_db version 2 library. Obviously, if
+you use the historic interfaces, you will get the version in the library
+from which you did not remove them. Similarly, you will not be able to
+access m4_db version 2 files using the m4_db 1.85 compatibility interface,
+since you have removed that from the library as well.])])
+
+m4_nlistend
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.2.0/toc.so b/db/docs_src/ref/upgrade.2.0/toc.so
new file mode 100644
index 000000000..8a9f35dd2
--- /dev/null
+++ b/db/docs_src/ref/upgrade.2.0/toc.so
@@ -0,0 +1,14 @@
+m4_comment([$Id: toc.so,v 11.6 2006/10/02 15:56:35 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Upgrading m4_db 1.85 or 1.86 applications to m4_db 2.0,
+ Upgrading to release 2.0,,)
+
+m4_nlistbegin
+m4_nlist([m4_link(intro, [Release 2.0: introduction])])
+m4_nlistns([m4_link(system, [Release 2.0: system integration])])
+m4_nlistns([m4_link(convert, [Release 2.0: converting applications])])
+m4_nlistns([m4_link(disk, [Release 2.0: upgrade requirements])])
+m4_nlistend
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.0/close.so b/db/docs_src/ref/upgrade.3.0/close.so
new file mode 100644
index 000000000..5a8a48ddd
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.0/close.so
@@ -0,0 +1,24 @@
+m4_comment([$Id: close.so,v 11.10 2002/03/06 15:51:57 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.0: DB-__GT__sync and DB-__GT__close,,
+ upgrade.3.0/stat, upgrade.3.0/lock_put)
+
+m4_p([dnl
+In previous m4_db releases, the m4_ref(dbh_close) and m4_refT(dbh_sync)s
+discarded any return of DB_INCOMPLETE from the underlying buffer
+pool interfaces, and returned success to its caller. (The
+DB_INCOMPLETE error will be returned if the buffer pool functions
+are unable to flush all of the database's dirty blocks from the pool.
+This often happens if another thread is reading or writing the database's
+pages in the pool.)])
+
+m4_p([dnl
+In the 3.X release, m4_ref(dbh_sync) and m4_ref(dbh_close) will return
+DB_INCOMPLETE to the application. The best solution is to not
+call m4_ref(dbh_sync) and specify the m4_ref(DB_NOSYNC) flag to the
+m4_refT(dbh_close) when multiple threads are expected to be accessing the
+database. Alternatively, the caller can ignore any error return of
+DB_INCOMPLETE.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.0/cxx.so b/db/docs_src/ref/upgrade.3.0/cxx.so
new file mode 100644
index 000000000..5cc3bcd96
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.0/cxx.so
@@ -0,0 +1,24 @@
+m4_comment([$Id: cxx.so,v 11.5 2000/03/18 21:43:20 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.0: additional C++ changes,, upgrade.3.0/db_cxx, upgrade.3.0/java)
+
+m4_p([dnl
+The Db::set_error_model method is gone. The way to change the C++ API to
+return errors rather than throw exceptions is via a flag on the DbEnv or
+Db constructor. For example:])
+
+m4_indent([dnl
+int dberr;
+DbEnv *dbenv = new DbEnv(DB_CXX_NO_EXCEPTIONS);])
+
+m4_p([dnl
+creates an environment that will never throw exceptions, and method
+returns should be checked instead.])
+
+m4_p([dnl
+There are a number of smaller changes to the API that bring the C, C++
+and Java APIs much closer in terms of functionality and usage. Please
+refer to the pages for upgrading C applications for further details.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.0/db.so b/db/docs_src/ref/upgrade.3.0/db.so
new file mode 100644
index 000000000..4b62d658a
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.0/db.so
@@ -0,0 +1,44 @@
+m4_comment([$Id: db.so,v 11.10 2006/04/24 17:26:34 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.0: the DB structure,, upgrade.3.0/xa, upgrade.3.0/dbinfo)
+
+m4_p([dnl
+The m4_ref(Db) structure is now opaque for applications in the m4_db 3.0
+release. Accesses to any fields within that structure by the application
+should be replaced with method calls. The following example illustrates
+this using the historic type structure field. In the m4_db 2.X releases,
+applications could find the type of an underlying database using code
+similar to the following:])
+
+m4_indent([dnl
+DB *db;
+DB_TYPE type;
+m4_blank
+ type = db-__GT__type;])
+
+m4_p([dnl
+in the m4_db 3.X releases, this should be done using the
+m4_ref(dbh_get_type) method, as follows:])
+
+m4_indent([dnl
+DB *db;
+DB_TYPE type;
+m4_blank
+ type = db-__GT__get_type(db);])
+
+m4_p([dnl
+The following table lists the m4_ref(Db) fields previously used by
+applications and the methods that should now be used to get or set them.])
+
+m4_table_begin(, _center)
+m4_table_header(m4_ref(Db) field, m4_db 3.X method)
+m4_table_element(byteswapped, m4_ref(dbh_get_byteswapped))
+m4_table_element(db_errcall, m4_ref(dbh_set_errcall))
+m4_table_element(db_errfile, m4_ref(dbh_set_errfile))
+m4_table_element(db_errpfx, m4_ref(dbh_set_errpfx))
+m4_table_element(db_paniccall, DB-__GT__set_paniccall)
+m4_table_element(type, m4_ref(dbh_get_type))
+m4_table_end
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.0/db_cxx.so b/db/docs_src/ref/upgrade.3.0/db_cxx.so
new file mode 100644
index 000000000..90117941c
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.0/db_cxx.so
@@ -0,0 +1,53 @@
+m4_comment([$Id: db_cxx.so,v 11.9 2000/03/22 22:02:14 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.0: the Db class for C++ and Java,,
+ upgrade.3.0/dbenv_cxx, upgrade.3.0/cxx)
+
+m4_p([dnl
+The static Db::open method and the DbInfo class have been removed in the
+m4_db 3.0 release. The way to open a database file is to use the new Db
+constructor with two arguments, followed by set_XXX methods to configure
+the Db object, and finally a call to the new (nonstatic) Db::open(). In
+comparing the m4_db 3.0 release open method with the 2.X static open
+method, the second argument is new. It is a database name, which can
+be null. The DbEnv argument has been removed, as the environment is now
+specified in the constructor. The open method no longer returns a Db,
+since it operates on one.])
+
+m4_p([dnl
+Here's a C++ example opening a m4_db database using the 2.X interface:])
+
+m4_indent([dnl
+// Note: by default, errors are thrown as exceptions
+Db *table;
+Db::open("lookup.db", DB_BTREE, DB_CREATE, 0644, dbenv, 0, &table);])
+
+m4_p([dnl
+In the m4_db 3.0 release, this code would be written as:])
+
+m4_indent([dnl
+// Note: by default, errors are thrown as exceptions
+Db *table = new Db(dbenv, 0);
+table-__GT__open("lookup.db", NULL, DB_BTREE, DB_CREATE, 0644);])
+
+m4_p([dnl
+Here's a Java example opening a m4_db database using the 2.X interface:])
+
+m4_indent([dnl
+// Note: errors are thrown as exceptions
+Db table = Db.open("lookup.db", Db.DB_BTREE, Db.DB_CREATE, 0644, dbenv, 0);])
+
+m4_p([dnl
+In the m4_db 3.0 release, this code would be written as:])
+
+m4_indent([dnl
+// Note: errors are thrown as exceptions
+Db table = new Db(dbenv, 0);
+table.open("lookup.db", null, Db.DB_BTREE, Db.DB_CREATE, 0644);])
+
+m4_p([dnl
+Note that if the dbenv argument is null, the database will not exist
+within an environment.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.0/dbenv.so b/db/docs_src/ref/upgrade.3.0/dbenv.so
new file mode 100644
index 000000000..e9ee0eb93
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.0/dbenv.so
@@ -0,0 +1,75 @@
+m4_comment([$Id: dbenv.so,v 11.13 2006/04/24 17:26:34 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.0: the DB_ENV structure,, upgrade.3.0/func, upgrade.3.0/open)
+
+m4_p([dnl
+The m4_ref(DbEnv) structure is now opaque for applications in the m4_db
+3.0 release. Accesses to any fields within that structure by the
+application should be replaced with method calls. The following example
+illustrates this using the historic errpfx structure field. In the m4_db
+2.X releases, applications set error prefixes using code similar to the
+following:])
+
+m4_indent([dnl
+DB_ENV *dbenv;
+m4_blank
+ dbenv-__GT__errpfx = "my prefix";])
+
+m4_p([dnl
+in the m4_db 3.X releases, this should be done using the
+m4_ref(dbenv_set_errpfx) method, as follows:])
+
+m4_indent([dnl
+DB_ENV *dbenv;
+m4_blank
+ dbenv-__GT__set_errpfx(dbenv, "my prefix");])
+
+m4_p([dnl
+The following table lists the m4_ref(DbEnv) fields previously used by
+applications and the methods that should now be used to set them.])
+
+m4_table_begin(, _center)
+m4_table_header(m4_ref(DbEnv) field, m4_db 3.X method)
+m4_table_element(db_errcall, m4_ref(dbenv_set_errcall))
+m4_table_element(db_errfile, m4_ref(dbenv_set_errfile))
+m4_table_element(db_errpfx, m4_ref(dbenv_set_errpfx))
+
+m4_table_element(db_lorder,
+[This field was removed from the m4_ref(DbEnv) structure in the m4_db
+3.0 release as no application should have ever used it. Any code using
+it should be evaluated for potential bugs.])
+m4_table_element(db_paniccall, DB_ENV-__GT__set_paniccall)
+
+m4_table_element(db_verbose,
+[m4_ref(dbenv_set_verbose)
+m4_p([dnl
+Note: the db_verbose field was a simple boolean toggle, the
+m4_ref(dbenv_set_verbose) method takes arguments that specify exactly
+which verbose messages are desired.])])
+
+m4_table_element(lg_max, m4_ref(dbenv_set_lg_max))
+m4_table_element(lk_conflicts, m4_ref(dbenv_set_lk_conflicts))
+m4_table_element(lk_detect, m4_ref(dbenv_set_lk_detect))
+m4_table_element(lk_max, dbenv-__GT__set_lk_max)
+m4_table_element(lk_modes, m4_ref(dbenv_set_lk_conflicts))
+m4_table_element(mp_mmapsize, m4_ref(dbenv_set_mp_mmapsize))
+
+m4_table_element(mp_size,
+[m4_ref(dbenv_set_cachesize)
+m4_p([dnl
+Note: the m4_ref(dbenv_set_cachesize) function takes additional arguments.
+Setting both the second argument (the number of GB in the pool) and the
+last argument (the number of memory pools to create) to 0 will result in
+behavior that is backward-compatible with previous m4_db releases.])])
+
+m4_table_element(tx_info,
+[This field was used by applications as an argument to the transaction
+subsystem functions. As those functions take references to a
+m4_ref(DbEnv) structure as arguments in the m4_db 3.0 release, it should
+no longer be used by any application.])
+m4_table_element(tx_max, m4_ref(dbenv_set_tx_max))
+m4_table_element(tx_recover, dbenv-__GT__set_tx_recover)
+m4_table_end
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.0/dbenv_cxx.so b/db/docs_src/ref/upgrade.3.0/dbenv_cxx.so
new file mode 100644
index 000000000..034c6c9bb
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.0/dbenv_cxx.so
@@ -0,0 +1,78 @@
+m4_comment([$Id: dbenv_cxx.so,v 11.10 2000/12/01 17:59:32 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.0: the DbEnv class for C++ and Java,,
+ upgrade.3.0/value_set, upgrade.3.0/db_cxx)
+
+m4_p([dnl
+The DbEnv::appinit() method and two constructors for the DbEnv class are
+gone. There is now a single way to create and initialize the environment.
+The way to create an environment is to use the new DbEnv constructor with
+one argument. After this call, the DbEnv can be configured with various
+set_XXX methods. Finally, a call to DbEnv::open is made to initialize
+the environment.])
+
+m4_p([dnl
+Here's a C++ example creating a m4_db environment using the 2.X interface])
+
+m4_indent([dnl
+int dberr;
+DbEnv *dbenv = new DbEnv();
+m4_blank
+dbenv-__GT__set_error_stream(&cerr);
+dbenv-__GT__set_errpfx("myprog");
+m4_blank
+if ((dberr = dbenv-__GT__appinit("/database/home",
+ NULL, DB_CREATE | DB_INIT_LOCK | DB_INIT_MPOOL)) != 0) {
+ cerr __LT____LT__ "failure: " __LT____LT__ strerror(dberr);
+ exit (1);
+}])
+
+m4_p([dnl
+In the m4_db 3.0 release, this code would be written as:])
+
+m4_indent([dnl
+int dberr;
+DbEnv *dbenv = new DbEnv(0);
+m4_blank
+dbenv-__GT__set_error_stream(&cerr);
+dbenv-__GT__set_errpfx("myprog");
+m4_blank
+if ((dberr = dbenv-__GT__open("/database/home",
+ NULL, DB_CREATE | DB_INIT_LOCK | DB_INIT_MPOOL, 0)) != 0) {
+ cerr __LT____LT__ "failure: " __LT____LT__ dbenv-__GT__strerror(dberr);
+ exit (1);
+}])
+
+m4_p([dnl
+Here's a Java example creating a m4_db environment using the 2.X interface:])
+
+m4_indent([dnl
+int dberr;
+DbEnv dbenv = new DbEnv();
+m4_blank
+dbenv.set_error_stream(System.err);
+dbenv.set_errpfx("myprog");
+m4_blank
+dbenv.appinit("/database/home",
+ null, Db.DB_CREATE | Db.DB_INIT_LOCK | Db.DB_INIT_MPOOL);])
+
+m4_p([dnl
+In the m4_db 3.0 release, this code would be written as:])
+
+m4_indent([dnl
+int dberr;
+DbEnv dbenv = new DbEnv(0);
+m4_blank
+dbenv.set_error_stream(System.err);
+dbenv.set_errpfx("myprog");
+m4_blank
+dbenv.open("/database/home",
+ null, Db.DB_CREATE | Db.DB_INIT_LOCK | Db.DB_INIT_MPOOL, 0);])
+
+m4_p([dnl
+In the m4_db 2.X release, DbEnv had accessors to obtain "managers" of type
+DbTxnMgr, DbMpool, DbLog, DbTxnMgr. If you used any of these managers,
+all their methods are now found directly in the DbEnv class.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.0/dbinfo.so b/db/docs_src/ref/upgrade.3.0/dbinfo.so
new file mode 100644
index 000000000..a0f357273
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.0/dbinfo.so
@@ -0,0 +1,78 @@
+m4_comment([$Id: dbinfo.so,v 11.10 2001/04/03 19:39:02 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.0: the DBINFO structure,, upgrade.3.0/db, upgrade.3.0/join)
+
+m4_p([dnl
+The DB_INFO structure has been removed from the m4_db 3.0 release.
+Accesses to any fields within that structure by the application should be
+replaced with method calls on the m4_ref(Db) handle. The following
+example illustrates this using the historic db_cachesize structure field.
+In the m4_db 2.X releases, applications could set the size of an
+underlying database cache using code similar to the following:])
+
+m4_indent([dnl
+DB_INFO dbinfo;
+m4_blank
+ memset(dbinfo, 0, sizeof(dbinfo));
+ dbinfo.db_cachesize = 1024 * 1024;])
+
+m4_p([dnl
+in the m4_db 3.X releases, this should be done using the
+m4_ref(dbh_set_cachesize) method, as follows:])
+
+m4_indent([dnl
+DB *db;
+int ret;
+m4_blank
+ ret = db-__GT__set_cachesize(db, 0, 1024 * 1024, 0);])
+
+m4_p([dnl
+The DB_INFO structure is no longer used in any way by the m4_db 3.0
+release, and should be removed from the application.])
+
+m4_p([dnl
+The following table lists the DB_INFO fields previously used by
+applications and the methods that should now be used to set
+them. Because these calls provide configuration for the
+database open, they must precede the call to m4_ref(dbh_open).
+Calling them after the call to m4_ref(dbh_open) will return an
+error.])
+
+m4_table_begin(, _center)
+m4_table_header(DB_INFO field, m4_db 3.X method)
+m4_table_element(bt_compare, m4_ref(dbh_set_bt_compare))
+m4_table_element(bt_minkey, m4_ref(dbh_set_bt_minkey))
+m4_table_element(bt_prefix, m4_ref(dbh_set_bt_prefix))
+
+m4_table_element(db_cachesize,
+[m4_ref(dbh_set_cachesize)
+m4_p([dnl
+Note: the m4_ref(dbh_set_cachesize) function takes additional arguments.
+Setting both the second argument (the number of GB in the pool) and the
+last argument (the number of memory pools to create) to 0 will result in
+behavior that is backward-compatible with previous m4_db releases.])])
+
+m4_table_element(db_lorder, m4_ref(dbh_set_lorder))
+m4_table_element(db_malloc, DB-__GT__set_malloc)
+m4_table_element(db_pagesize, m4_ref(dbh_set_pagesize))
+m4_table_element(dup_compare, m4_ref(dbh_set_dup_compare))
+
+m4_table_element(flags,
+[m4_ref(dbh_set_flags)
+m4_p([dnl
+Note: the DB_DELIMITER, DB_FIXEDLEN and DB_PAD flags no longer need to be
+set as there are specific methods off the m4_ref(Db) handle that set the
+file delimiter, the length of fixed-length records and the fixed-length
+record pad character. They should simply be discarded from the application.])])
+
+m4_table_element(h_ffactor, m4_ref(dbh_set_h_ffactor))
+m4_table_element(h_hash, m4_ref(dbh_set_h_hash))
+m4_table_element(h_nelem, m4_ref(dbh_set_h_nelem))
+m4_table_element(re_delim, m4_ref(dbh_set_re_delim))
+m4_table_element(re_len, m4_ref(dbh_set_re_len))
+m4_table_element(re_pad, m4_ref(dbh_set_re_pad))
+m4_table_element(re_source, m4_ref(dbh_set_re_source))
+m4_table_end
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.0/disk.so b/db/docs_src/ref/upgrade.3.0/disk.so
new file mode 100644
index 000000000..b2297d98a
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.0/disk.so
@@ -0,0 +1,19 @@
+m4_comment([$Id: disk.so,v 11.15 2000/12/21 18:37:09 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.0: upgrade requirements,, upgrade.3.0/java, upgrade.3.1/intro)
+
+m4_p([dnl
+Log file formats and the Btree, Recno and Hash Access Method database
+formats changed in the m4_db 3.0 release. (The on-disk Btree/Recno
+format changed from version 6 to version 7. The on-disk Hash format
+changed from version 5 to version 6.) Until the underlying databases
+are upgraded, the m4_refT(dbh_open) will return a m4_ref(DB_OLD_VERSION)
+error.])
+
+m4_p([dnl
+For further information on upgrading m4_db installations, see
+m4_link(M4RELDIR/ref/upgrade/process, Upgrading m4_db
+installations).])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.0/eacces.so b/db/docs_src/ref/upgrade.3.0/eacces.so
new file mode 100644
index 000000000..3dfa05fc1
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.0/eacces.so
@@ -0,0 +1,15 @@
+m4_comment([$Id: eacces.so,v 11.8 2001/07/26 18:35:50 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.0: EACCES,, upgrade.3.0/eagain, upgrade.3.0/jump_set)
+
+m4_p([dnl
+There was an error in previous releases of the m4_db documentation that
+said that the lock_put and lock_vec interfaces could return EACCES as
+an error to indicate that a lock could not be released because it was
+held by another locker. The application should be searched for any
+occurrences of EACCES. For each of these, any that are checking for an
+error return from lock_put or lock_vec should have the test and any
+error handling removed.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.0/eagain.so b/db/docs_src/ref/upgrade.3.0/eagain.so
new file mode 100644
index 000000000..efeaed8e4
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.0/eagain.so
@@ -0,0 +1,25 @@
+m4_comment([$Id: eagain.so,v 11.6 2001/07/10 13:16:34 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.0: EAGAIN,, upgrade.3.0/lock_notheld, upgrade.3.0/eacces)
+
+m4_p([dnl
+Historically, the m4_db interfaces have returned the POSIX error value
+EAGAIN to indicate a deadlock. This has been removed from the m4_db 3.0
+release in order to make it possible for applications to distinguish
+between EAGAIN errors returned by the system and returns from m4_db
+indicating deadlock.])
+
+m4_p([dnl
+The application should be searched for any occurrences of EAGAIN. For
+each of these, any that are checking for a deadlock return from m4_db
+should be changed to check for the DB_LOCK_DEADLOCK return value.])
+
+m4_p([dnl
+If, for any reason, this is a difficult change for the application to
+make, the m4_path(include/db.src) distribution file should be modified to
+translate all returns of DB_LOCK_DEADLOCK to EAGAIN. Search for the
+string EAGAIN in that file, there is a comment that describes how to make
+the change.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.0/envopen.so b/db/docs_src/ref/upgrade.3.0/envopen.so
new file mode 100644
index 000000000..3d02f8f95
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.0/envopen.so
@@ -0,0 +1,191 @@
+m4_comment([$Id: envopen.so,v 11.14 2003/10/18 19:16:12 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.0: environment open/close/unlink,,
+ upgrade.3.0/intro, upgrade.3.0/func)
+
+m4_p([dnl
+The hardest part of upgrading your application from a 2.X code base to
+the 3.0 release is translating the m4_db environment open, close and
+remove calls.])
+
+m4_p([dnl
+There were two logical changes in this part of the m4_db interface.
+First, in m4_db 3.0, there are no longer separate structures that
+represent each subsystem (for example, DB_LOCKTAB or DB_TXNMGR) and an
+overall m4_ref(DbEnv) environment structure. Instead there is only the
+m4_ref(DbEnv) structure. This means that m4_ref(DbEnv) references
+should be passed around by your application instead of passing around
+DB_LOCKTAB or DB_TXNMGR references. This is likely to be a simple
+change for most applications as few applications use the lock_XXX,
+log_XXX, memp_XXX or txn_XXX interfaces to create m4_db environments.])
+
+m4_p([dnl
+The second change is that there are no longer separate open, close, and
+unlink interfaces to the m4_db subsystems. For example, in previous
+releases, it was possible to open a lock subsystem either using
+db_appinit or using the lock_open call. In the 3.0 release the XXX_open
+interfaces to the subsystems have been removed, and subsystems must now
+be opened using the 3.0 replacement for the db_appinit call.])
+
+m4_p([dnl
+To upgrade your application, first find each place your application opens,
+closes and/or removes a m4_db environment. This will be code of the form:])
+
+m4_indent([dnl
+db_appinit, db_appexit
+lock_open, lock_close, lock_unlink
+log_open, log_close, log_unlink
+memp_open, memp_close, memp_unlink
+txn_open, txn_close, txn_unlink])
+
+m4_p([dnl
+Each of these groups of calls should be replaced with calls to:])
+
+m4_indent([dnl
+m4_ref(dbenv_create), m4_ref(dbenv_open), m4_ref(dbenv_close),
+m4_ref(dbenv_remove)])
+
+m4_p([dnl
+The m4_ref(dbenv_create) call and the call to the m4_ref(dbenv_open)
+method replace the db_appinit, lock_open, log_open, memp_open and txn_open
+calls. The m4_ref(dbenv_close) method replaces the db_appexit,
+lock_close, log_close, memp_close and txn_close calls. The
+m4_ref(dbenv_remove) call replaces the lock_unlink, log_unlink,
+memp_unlink and txn_unlink calls.])
+
+m4_p([dnl
+Here's an example creating a m4_db environment using the 2.X interface:])
+
+m4_indent([dnl
+/*
+ * db_init --
+ * Initialize the environment.
+ */
+DB_ENV *
+db_init(home)
+ char *home;
+{
+ DB_ENV *dbenv;
+m4_blank
+ if ((dbenv = (DB_ENV *)calloc(sizeof(DB_ENV), 1)) == NULL)
+ return (errno);
+m4_blank
+ if ((errno = db_appinit(home, NULL, dbenv,
+ DB_INIT_LOCK | DB_INIT_LOG | DB_INIT_MPOOL | DB_INIT_TXN |
+ DB_USE_ENVIRON)) == 0)
+ return (dbenv);
+m4_blank
+ free(dbenv);
+ return (NULL);
+}])
+
+m4_p([dnl
+In the m4_db 3.0 release, this code would be written as:])
+
+m4_indent([dnl
+/*
+ * db_init --
+ * Initialize the environment.
+ */
+int
+db_init(home, dbenvp)
+ char *home;
+ DB_ENV **dbenvp;
+{
+ int ret;
+ DB_ENV *dbenv;
+m4_blank
+ if ((ret = db_env_create(&dbenv, 0)) != 0)
+ return (ret);
+m4_blank
+ if ((ret = dbenv-__GT__open(dbenv, home, NULL,
+ DB_INIT_LOCK | DB_INIT_LOG | DB_INIT_MPOOL | DB_INIT_TXN |
+ DB_USE_ENVIRON, 0)) == 0) {
+ *dbenvp = dbenv;
+ return (0);
+ }
+m4_blank
+ (void)dbenv-__GT__close(dbenv, 0);
+ return (ret);
+}])
+
+m4_p([dnl
+As you can see, the arguments to db_appinit and to m4_ref(dbenv_open) are
+largely the same. There is some minor re-organization: the mapping is
+that arguments #1, 2, 3, and 4 to db_appinit become arguments #2, 3, 1
+and 4 to m4_ref(dbenv_open). There is one additional argument to
+m4_ref(dbenv_open), argument #5. For backward compatibility with the 2.X
+m4_db releases, simply set that argument to 0.])
+
+m4_p([dnl
+It is only slightly more complex to translate calls to XXX_open to the
+m4_ref(dbenv_open) method. Here's an example of creating a lock region
+using the 2.X interface:])
+
+m4_indent([dnl
+lock_open(dir, DB_CREATE, 0664, dbenv, &regionp);])
+
+m4_p([dnl
+In the m4_db 3.0 release, this code would be written as:])
+
+m4_indent([dnl
+if ((ret = db_env_create(&dbenv, 0)) != 0)
+ return (ret);
+m4_blank
+if ((ret = dbenv-__GT__open(dbenv,
+ dir, NULL, DB_CREATE | DB_INIT_LOCK, 0664)) == 0) {
+ *dbenvp = dbenv;
+ return (0);
+}])
+
+m4_p([dnl
+Note that in this example, you no longer need the DB_LOCKTAB structure
+reference that was required in m4_db 2.X releases.])
+
+m4_p([dnl
+The final issue with upgrading the db_appinit call is the DB_MPOOL_PRIVATE
+option previously provided for the db_appinit call. If your application
+is using this flag, it should almost certainly use the new
+m4_ref(DB_PRIVATE) flag to the m4_refT(dbenv_open). Regardless, you
+should carefully consider this change before converting to use the
+m4_ref(DB_PRIVATE) flag.])
+
+m4_p([dnl
+Translating db_appexit or XXX_close calls to m4_ref(dbenv_close) is equally
+simple. Instead of taking a reference to a per-subsystem structure such
+as DB_LOCKTAB or DB_TXNMGR, all calls take a reference to a m4_ref(DbEnv)
+structure. The calling sequence is otherwise unchanged. Note that as
+the application no longer allocates the memory for the DB_ENV structure,
+application code to discard it after the call to db_appexit() is no longer
+needed.])
+
+m4_p([dnl
+Translating XXX_unlink calls to m4_ref(dbenv_remove) is slightly more complex.
+As with m4_ref(dbenv_close), the call takes a reference to a m4_ref(DbEnv)
+structure instead of a per-subsystem structure. The calling sequence is
+slightly different, however. Here is an example of removing a lock region
+using the 2.X interface:])
+
+m4_indent([dnl
+DB_ENV *dbenv;
+m4_blank
+ret = lock_unlink(dir, 1, dbenv);])
+
+m4_p([dnl
+In the m4_db 3.0 release, this code fragment would be written as:])
+
+m4_indent([dnl
+DB_ENV *dbenv;
+m4_blank
+ret = dbenv-__GT__remove(dbenv, dir, NULL, DB_FORCE);])
+
+m4_p([dnl
+The additional argument to the m4_ref(dbenv_remove) function is a
+configuration argument similar to that previously taken by db_appinit and
+now taken by the m4_ref(dbenv_open) method. For backward compatibility
+this new argument should simply be set to NULL. The force argument to
+XXX_unlink is now a flag value that is set by m4_or it the
+m4_ref(dbenv_remove) flag argument.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.0/func.so b/db/docs_src/ref/upgrade.3.0/func.so
new file mode 100644
index 000000000..08c851c29
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.0/func.so
@@ -0,0 +1,80 @@
+m4_comment([$Id: func.so,v 11.9 2001/03/01 15:58:20 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.0: function arguments,, upgrade.3.0/envopen, upgrade.3.0/dbenv)
+
+m4_p([dnl
+In m4_db 3.0, there are no longer separate structures that represent
+each subsystem (for example, DB_LOCKTAB or DB_TXNMGR), and an overall
+m4_ref(DbEnv) environment structure. Instead there is only the
+m4_ref(DbEnv) structure. This means that m4_ref(DbEnv) references
+should be passed around by your application instead of passing around
+DB_LOCKTAB or DB_TXNMGR references.])
+
+m4_p([dnl
+Each of the following functions:])
+
+m4_indent([dnl
+lock_detect
+lock_get
+lock_id
+lock_put
+lock_stat
+lock_vec])
+
+m4_p([dnl
+should have its first argument, a reference to the DB_LOCKTAB structure,
+replaced with a reference to the enclosing m4_ref(DbEnv) structure. For
+example, the following line of code from a m4_db 2.X application:])
+
+m4_indent([dnl
+DB_LOCKTAB *lt;
+DB_LOCK lock;
+ ret = lock_put(lt, lock);])
+
+m4_p([dnl
+should now be written as follows:])
+
+m4_indent([dnl
+DB_ENV *dbenv;
+DB_LOCK *lock;
+ ret = lock_put(dbenv, lock);])
+
+m4_p([dnl
+Similarly, all of the functions:])
+
+m4_indent([dnl
+log_archive
+log_compare
+log_file
+log_flush
+log_get
+log_put
+log_register
+log_stat
+log_unregister])
+
+m4_p([dnl
+should have their DB_LOG argument replaced with a reference to a
+m4_ref(DbEnv) structure, and the functions:])
+
+m4_indent([dnl
+memp_fopen
+memp_register
+memp_stat
+memp_sync
+memp_trickle])
+
+m4_p([dnl
+should have their DB_MPOOL argument replaced with a reference to a
+m4_ref(DbEnv) structure.])
+
+m4_p([dnl
+You should remove all references to DB_LOCKTAB, DB_LOG, DB_MPOOL, and
+DB_TXNMGR structures from your application, they are no longer useful
+in any way. In fact, a simple way to identify all of the places that
+need to be upgraded is to remove all such structures and variables
+they declare, and then compile. You will see a warning message from
+your compiler in each case that needs to be upgraded.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.0/intro.so b/db/docs_src/ref/upgrade.3.0/intro.so
new file mode 100644
index 000000000..8f62fe8e2
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.0/intro.so
@@ -0,0 +1,13 @@
+m4_comment([$Id: intro.so,v 11.7 2004/09/28 14:13:07 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.0: introduction,,
+ upgrade.2.0/disk, upgrade.3.0/envopen)
+
+m4_p([dnl
+The following pages describe how to upgrade applications coded against
+the m4_db 2.X release interfaces to the m4_db 3.0 release interfaces.
+This information does not describe how to upgrade m4_db 1.85 release
+applications.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.0/java.so b/db/docs_src/ref/upgrade.3.0/java.so
new file mode 100644
index 000000000..426f1cee0
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.0/java.so
@@ -0,0 +1,37 @@
+m4_comment([$Id: java.so,v 11.10 2004/08/15 03:22:57 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.0: additional Java changes,, upgrade.3.0/cxx, upgrade.3.0/disk)
+
+dnl #################################################################
+dnl This whole page is Java.
+dnl #################################################################
+pushdef([M4API], JAVA_API)
+
+m4_p([dnl
+There are several additional types of exceptions thrown in the m4_db 3.0
+Java API.])
+
+m4_p([dnl
+DbMemoryException and DbDeadlockException can be caught independently of
+DbException if you want to do special handling for these kinds of errors.
+Since they are subclassed from DbException, a try block that catches
+DbException will catch these also, so code is not required to change.
+The catch clause for these new exceptions should appear before the catch
+clause for DbException.])
+
+m4_p([dnl
+You will need to add a catch clause for java.io.FileNotFoundException,
+since that can be thrown by Db.open and DbEnv.open.])
+
+m4_p([dnl
+There are a number of smaller changes to the API that bring the C, C++
+and Java APIs much closer in terms of functionality and usage. Please
+refer to the pages for upgrading C applications for further details.])
+
+dnl #################################################################
+dnl This whole page is Java.
+dnl #################################################################
+popdef([M4API])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.0/join.so b/db/docs_src/ref/upgrade.3.0/join.so
new file mode 100644
index 000000000..f6a4dce03
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.0/join.so
@@ -0,0 +1,17 @@
+m4_comment([$Id: join.so,v 11.10 2003/10/18 19:16:12 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.0: DB-__GT__join,, upgrade.3.0/dbinfo, upgrade.3.0/stat)
+
+m4_p([dnl
+Historically, the last two arguments to the m4_refT(dbh_join) were a
+flags value followed by a reference to a memory location to store the
+returned cursor object. In the m4_db 3.0 release, the order of those
+two arguments has been swapped for consistency with other m4_db
+interfaces.])
+
+m4_p([dnl
+The application should be searched for any occurrences of m4_ref(dbh_join).
+For each of these, the order of the last two arguments should be swapped.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.0/jump_set.so b/db/docs_src/ref/upgrade.3.0/jump_set.so
new file mode 100644
index 000000000..825713aaa
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.0/jump_set.so
@@ -0,0 +1,39 @@
+m4_comment([$Id: jump_set.so,v 11.6 2000/03/18 21:43:20 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.0: db_jump_set,, upgrade.3.0/eacces, upgrade.3.0/value_set)
+
+m4_p([dnl
+The db_jump_set interface has been removed from the m4_db 3.0 release,
+replaced by method calls on the m4_ref(DbEnv) handle.])
+
+m4_p([dnl
+The following table lists the db_jump_set arguments previously used by
+applications and the methods that should now be used instead.])
+
+m4_table_begin(, _center)
+m4_table_header(db_jump_set argument, m4_db 3.X method)
+m4_table_element(DB_FUNC_CLOSE, m4_ref(dbenv_set_func_close))
+m4_table_element(DB_FUNC_DIRFREE, m4_ref(dbenv_set_func_dirfree))
+m4_table_element(DB_FUNC_DIRLIST, m4_ref(dbenv_set_func_dirlist))
+m4_table_element(DB_FUNC_EXISTS, m4_ref(dbenv_set_func_exists))
+m4_table_element(DB_FUNC_FREE, m4_ref(dbenv_set_func_free))
+m4_table_element(DB_FUNC_FSYNC, m4_ref(dbenv_set_func_fsync))
+m4_table_element(DB_FUNC_IOINFO, m4_ref(dbenv_set_func_ioinfo))
+m4_table_element(DB_FUNC_MALLOC, m4_ref(dbenv_set_func_malloc))
+m4_table_element(DB_FUNC_MAP, m4_ref(dbenv_set_func_map))
+m4_table_element(DB_FUNC_OPEN, m4_ref(dbenv_set_func_open))
+m4_table_element(DB_FUNC_READ, m4_ref(dbenv_set_func_read))
+m4_table_element(DB_FUNC_REALLOC, m4_ref(dbenv_set_func_realloc))
+m4_table_element(DB_FUNC_RUNLINK,
+[The DB_FUNC_RUNLINK functionality has been removed from the m4_db
+3.0 release, and should be removed from the application.])
+m4_table_element(DB_FUNC_SEEK, m4_ref(dbenv_set_func_seek))
+m4_table_element(DB_FUNC_SLEEP, m4_ref(dbenv_set_func_sleep))
+m4_table_element(DB_FUNC_UNLINK, m4_ref(dbenv_set_func_unlink))
+m4_table_element(DB_FUNC_UNMAP, m4_ref(dbenv_set_func_unmap))
+m4_table_element(DB_FUNC_WRITE, m4_ref(dbenv_set_func_write))
+m4_table_element(DB_FUNC_YIELD, m4_ref(dbenv_set_func_yield))
+m4_table_end
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.0/lock_detect.so b/db/docs_src/ref/upgrade.3.0/lock_detect.so
new file mode 100644
index 000000000..be4f45885
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.0/lock_detect.so
@@ -0,0 +1,14 @@
+m4_comment([$Id: lock_detect.so,v 11.10 2003/10/18 19:16:13 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.0: lock_detect,,
+ upgrade.3.0/lock_put, upgrade.3.0/lock_stat)
+
+m4_p([dnl
+An additional argument has been added to the lock_detect function.])
+
+m4_p([dnl
+The application should be searched for any occurrences of lock_detect.
+For each one, a NULL argument should be appended to the current arguments.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.0/lock_notheld.so b/db/docs_src/ref/upgrade.3.0/lock_notheld.so
new file mode 100644
index 000000000..8cb272191
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.0/lock_notheld.so
@@ -0,0 +1,14 @@
+m4_comment([$Id: lock_notheld.so,v 11.8 2001/07/26 18:35:51 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.0: DB_LOCK_NOTHELD,, upgrade.3.0/rmw, upgrade.3.0/eagain)
+
+m4_p([dnl
+Historically, the m4_db lock_put and lock_vec interfaces could return
+the DB_LOCK_NOTHELD error to indicate that a lock could not be released
+as it was held by another locker. This error can no longer be returned
+under any circumstances. The application should be searched for any
+occurrences of DB_LOCK_NOTHELD. For each of these, the test and any
+error processing should be removed.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.0/lock_put.so b/db/docs_src/ref/upgrade.3.0/lock_put.so
new file mode 100644
index 000000000..47ef46c3a
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.0/lock_put.so
@@ -0,0 +1,14 @@
+m4_comment([$Id: lock_put.so,v 11.10 2003/10/18 19:16:13 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.0: lock_put,, upgrade.3.0/close, upgrade.3.0/lock_detect)
+
+m4_p([dnl
+An argument change has been made in the lock_put function.])
+
+m4_p([dnl
+The application should be searched for any occurrences of lock_put.
+For each one, instead of passing a DB_LOCK variable as the last argument
+to the function, the address of the DB_LOCK variable should be passed.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.0/lock_stat.so b/db/docs_src/ref/upgrade.3.0/lock_stat.so
new file mode 100644
index 000000000..7144cef14
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.0/lock_stat.so
@@ -0,0 +1,12 @@
+m4_comment([$Id: lock_stat.so,v 11.5 2003/10/18 19:16:13 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.0: lock_stat,,
+ upgrade.3.0/lock_detect, upgrade.3.0/log_register)
+
+m4_p([dnl
+The m4_arg(st_magic), m4_arg(st_version), m4_arg(st_numobjs) and
+m4_arg(st_refcnt) fields returned from the lock_stat function
+have been removed, and this information is no longer available.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.0/log_register.so b/db/docs_src/ref/upgrade.3.0/log_register.so
new file mode 100644
index 000000000..c8d76b657
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.0/log_register.so
@@ -0,0 +1,13 @@
+m4_comment([$Id: log_register.so,v 11.10 2003/10/18 19:16:13 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.0: log_register,,
+ upgrade.3.0/lock_stat, upgrade.3.0/log_stat)
+
+m4_p([dnl
+An argument has been removed from the log_register function. The
+application should be searched for any occurrences of log_register. In
+each of these, the DBTYPE argument (it is the fourth argument) should
+be removed.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.0/log_stat.so b/db/docs_src/ref/upgrade.3.0/log_stat.so
new file mode 100644
index 000000000..57e0e7112
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.0/log_stat.so
@@ -0,0 +1,11 @@
+m4_comment([$Id: log_stat.so,v 11.5 2003/10/18 19:16:13 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.0: log_stat,,
+ upgrade.3.0/log_register, upgrade.3.0/memp_stat)
+
+m4_p([dnl
+The m4_arg(st_refcnt) field returned from the log_stat function
+has been removed, and this information is no longer available.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.0/memp_stat.so b/db/docs_src/ref/upgrade.3.0/memp_stat.so
new file mode 100644
index 000000000..735dc4c01
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.0/memp_stat.so
@@ -0,0 +1,16 @@
+m4_comment([$Id: memp_stat.so,v 11.5 2003/10/18 19:16:13 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.0: memp_stat,,
+ upgrade.3.0/log_stat, upgrade.3.0/txn_begin)
+
+m4_p([dnl
+The m4_arg(st_refcnt) field returned from the memp_stat function
+has been removed, and this information is no longer available.])
+
+m4_p([dnl
+The m4_arg(st_cachesize) field returned from the memp_stat function
+has been replaced with two new fields, m4_arg(st_gbytes) and
+m4_arg(st_bytes).])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.0/open.so b/db/docs_src/ref/upgrade.3.0/open.so
new file mode 100644
index 000000000..5cd621030
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.0/open.so
@@ -0,0 +1,70 @@
+m4_comment([$Id: open.so,v 11.11 2003/10/18 19:16:14 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.0: database open/close,, upgrade.3.0/dbenv, upgrade.3.0/xa)
+
+m4_p([dnl
+Database opens were changed in the m4_db 3.0 release in a similar way to
+environment opens.])
+
+m4_p([dnl
+To upgrade your application, first find each place your application opens
+a database, that is, calls the db_open function. Each of these calls
+should be replaced with calls to m4_ref(dbh_create) and m4_ref(dbh_open).])
+
+m4_p([dnl
+Here's an example creating a m4_db database using the 2.X interface:])
+
+m4_indent([dnl
+DB *dbp;
+DB_ENV *dbenv;
+int ret;
+m4_blank
+if ((ret = db_open(DATABASE,
+ DB_BTREE, DB_CREATE, 0664, dbenv, NULL, &dbp)) != 0)
+ return (ret);])
+
+m4_p([dnl
+In the m4_db 3.0 release, this code would be written as:])
+
+m4_indent([dnl
+DB *dbp;
+DB_ENV *dbenv;
+int ret;
+m4_blank
+if ((ret = db_create(&dbp, dbenv, 0)) != 0)
+ return (ret);
+m4_blank
+if ((ret = dbp-__GT__open(dbp,
+ DATABASE, NULL, DB_BTREE, DB_CREATE, 0664)) != 0) {
+ (void)dbp-__GT__close(dbp, 0);
+ return (ret);
+}])
+
+m4_p([dnl
+As you can see, the arguments to db_open and to m4_ref(dbh_open) are
+largely the same. There is some re-organization, and note that the
+enclosing m4_ref(DbEnv) structure is specified when the m4_ref(Db) object
+is created using the m4_ref(dbh_create) function. There is one
+additional argument to m4_ref(dbh_open), argument #3. For backward
+compatibility with the 2.X m4_db releases, simply set that argument to
+NULL.])
+
+m4_p([dnl
+There are two additional issues with the db_open call.])
+
+m4_p([dnl
+First, it was possible in the 2.X releases for an application to provide
+an environment that did not contain a shared memory buffer pool as the
+database environment, and m4_db would create a private one automatically.
+This functionality is no longer available, applications must specify the
+m4_ref(DB_INIT_MPOOL) flag if databases are going to be opened in the
+environment.])
+
+m4_p([dnl
+The final issue with upgrading the db_open call is that the DB_INFO
+structure is no longer used, having been replaced by individual methods
+on the m4_ref(Db) handle. That change is discussed in detail later in
+this chapter.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.0/rmw.so b/db/docs_src/ref/upgrade.3.0/rmw.so
new file mode 100644
index 000000000..88f926b2f
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.0/rmw.so
@@ -0,0 +1,22 @@
+m4_comment([$Id: rmw.so,v 11.10 2003/10/18 19:16:14 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.0: DB_RMW,, upgrade.3.0/txn_stat, upgrade.3.0/lock_notheld)
+
+m4_p([dnl
+The following change applies only to applications using the
+m4_cam product. If your application is not using that product,
+you can ignore this change.])
+
+m4_p([dnl
+Historically, the m4_refT(dbh_cursor) took the DB_RMW flag to indicate
+that the created cursor would be used for write operations on the
+database. This flag has been renamed to the m4_ref(DB_WRITECURSOR)
+flag.])
+
+m4_p([dnl
+The application should be searched for any occurrences of DB_RMW. For
+each of these, any that are arguments to the m4_ref(dbh_cursor) function
+should be changed to pass in the m4_ref(DB_WRITECURSOR) flag instead.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.0/stat.so b/db/docs_src/ref/upgrade.3.0/stat.so
new file mode 100644
index 000000000..288f043d8
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.0/stat.so
@@ -0,0 +1,12 @@
+m4_comment([$Id: stat.so,v 11.4 2003/10/18 19:16:14 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.0: DB-__GT__stat,,
+ upgrade.3.0/join, upgrade.3.0/close)
+
+m4_p([dnl
+The m4_arg(bt_flags) field returned from the m4_refT(dbh_stat) for Btree
+and Recno databases has been removed, and this information is no longer
+available.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.0/toc.so b/db/docs_src/ref/upgrade.3.0/toc.so
new file mode 100644
index 000000000..2af03df63
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.0/toc.so
@@ -0,0 +1,41 @@
+m4_comment([$Id: toc.so,v 11.6 2006/10/02 15:56:36 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Upgrading m4_db 2.X applications to m4_db 3.0,
+ Upgrading to release 3.0,,)
+
+m4_nlistbegin
+m4_nlist([m4_link(intro, [Release 3.0: introduction])])
+m4_nlistns([m4_link(envopen, [Release 3.0: environment open/close/unlink])])
+m4_nlistns([m4_link(func, [Release 3.0: function arguments])])
+m4_nlistns([m4_link(dbenv, [Release 3.0: the DB_ENV structure])])
+m4_nlistns([m4_link(open, [Release 3.0: database open/close])])
+m4_nlistns([m4_link(xa, [Release 3.0: db_xa_open])])
+m4_nlistns([m4_link(db, [Release 3.0: the DB structure])])
+m4_nlistns([m4_link(dbinfo, [Release 3.0: the DBINFO structure])])
+m4_nlistns([m4_link(join, [Release 3.0: DB-__GT__join])])
+m4_nlistns([m4_link(stat, [Release 3.0: DB-__GT__stat])])
+m4_nlistns([m4_link(close, [Release 3.0: DB-__GT__sync and DB-__GT__close])])
+m4_nlistns([m4_link(lock_put, [Release 3.0: lock_put])])
+m4_nlistns([m4_link(lock_detect, [Release 3.0: lock_detect])])
+m4_nlistns([m4_link(lock_stat, [Release 3.0: lock_stat])])
+m4_nlistns([m4_link(log_register, [Release 3.0: log_register])])
+m4_nlistns([m4_link(log_stat, [Release 3.0: log_stat])])
+m4_nlistns([m4_link(memp_stat, [Release 3.0: memp_stat])])
+m4_nlistns([m4_link(txn_begin, [Release 3.0: txn_begin])])
+m4_nlistns([m4_link(txn_commit, [Release 3.0: txn_commit])])
+m4_nlistns([m4_link(txn_stat, [Release 3.0: txn_stat])])
+m4_nlistns([m4_link(rmw, [Release 3.0: DB_RMW])])
+m4_nlistns([m4_link(lock_notheld, [Release 3.0: DB_LOCK_NOTHELD])])
+m4_nlistns([m4_link(eagain, [Release 3.0: EAGAIN])])
+m4_nlistns([m4_link(eacces, [Release 3.0: EACCES])])
+m4_nlistns([m4_link(jump_set, [Release 3.0: db_jump_set])])
+m4_nlistns([m4_link(value_set, [Release 3.0: db_value_set])])
+m4_nlistns([m4_link(dbenv_cxx, [Release 3.0: the DbEnv class for C++ and Java])])
+m4_nlistns([m4_link(db_cxx, [Release 3.0: the Db class for C++ and Java])])
+m4_nlistns([m4_link(cxx, [Release 3.0: additional C++ changes])])
+m4_nlistns([m4_link(java, [Release 3.0: additional Java changes])])
+m4_nlistns([m4_link(disk, [Release 3.0: upgrade requirements])])
+m4_nlistend
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.0/txn_begin.so b/db/docs_src/ref/upgrade.3.0/txn_begin.so
new file mode 100644
index 000000000..1fb16a49e
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.0/txn_begin.so
@@ -0,0 +1,15 @@
+m4_comment([$Id: txn_begin.so,v 11.9 2003/10/18 19:16:14 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.0: txn_begin,,
+ upgrade.3.0/memp_stat, upgrade.3.0/txn_commit)
+
+m4_p([dnl
+An additional argument has been added to the txn_begin function.])
+
+m4_p([dnl
+The application should be searched for any occurrences of txn_begin.
+For each one, an argument of 0 should be appended to the current
+arguments.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.0/txn_commit.so b/db/docs_src/ref/upgrade.3.0/txn_commit.so
new file mode 100644
index 000000000..dd36d459a
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.0/txn_commit.so
@@ -0,0 +1,15 @@
+m4_comment([$Id: txn_commit.so,v 11.10 2003/10/18 19:16:14 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.0: txn_commit,,
+ upgrade.3.0/txn_begin, upgrade.3.0/txn_stat)
+
+m4_p([dnl
+An additional argument has been added to the txn_commit function.])
+
+m4_p([dnl
+The application should be searched for any occurrences of txn_commit.
+For each one, an argument of 0 should be appended to the current
+arguments.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.0/txn_stat.so b/db/docs_src/ref/upgrade.3.0/txn_stat.so
new file mode 100644
index 000000000..66ef8a8e3
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.0/txn_stat.so
@@ -0,0 +1,11 @@
+m4_comment([$Id: txn_stat.so,v 11.5 2003/10/18 19:16:14 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.0: txn_stat,,
+ upgrade.3.0/txn_commit, upgrade.3.0/rmw)
+
+m4_p([dnl
+The m4_arg(st_refcnt) field returned from the txn_stat function
+has been removed, and this information is no longer available.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.0/value_set.so b/db/docs_src/ref/upgrade.3.0/value_set.so
new file mode 100644
index 000000000..07676cd3b
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.0/value_set.so
@@ -0,0 +1,31 @@
+m4_comment([$Id: value_set.so,v 11.10 2003/10/18 19:16:14 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.0: db_value_set,, upgrade.3.0/jump_set, upgrade.3.0/dbenv_cxx)
+
+m4_p([dnl
+The db_value_set function has been removed from the m4_db 3.0 release,
+replaced by method calls on the m4_ref(DbEnv) handle.])
+
+m4_p([dnl
+The following table lists the db_value_set arguments previously used by
+applications and the function that should now be used instead.])
+
+m4_table_begin(, _center)
+m4_table_header(db_value_set argument, m4_db 3.X method)
+m4_table_element(DB_MUTEX_LOCKS, dbenv_set_mutexlocks)
+m4_table_element(DB_REGION_ANON, [The DB_REGION_ANON functionality has
+been replaced by the m4_ref(DB_SYSTEM_MEM) and m4_ref(DB_PRIVATE) flags
+to the m4_ref(dbenv_open) function. A direct translation is not
+available, please review the m4_ref(dbenv_open) manual page for more
+information.])
+m4_table_element(DB_REGION_INIT, dbenv_set_region_init)
+m4_table_element(DB_REGION_NAME, [The DB_REGION_NAME functionality has
+been replaced by the m4_ref(DB_SYSTEM_MEM) and m4_ref(DB_PRIVATE) flags
+to the m4_ref(dbenv_open) function. A direct translation is not
+available, please review the m4_ref(dbenv_open) manual page for more
+information.])
+m4_table_element(DB_TSL_SPINS, dbenv_set_tas_spins)
+m4_table_end
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.0/xa.so b/db/docs_src/ref/upgrade.3.0/xa.so
new file mode 100644
index 000000000..34cae6b0e
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.0/xa.so
@@ -0,0 +1,24 @@
+m4_comment([$Id: xa.so,v 11.7 2000/03/18 21:43:21 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.0: db_xa_open,, upgrade.3.0/open, upgrade.3.0/db)
+
+m4_p([dnl
+The following change applies only to applications using m4_db as an XA
+Resource Manager. If your application is not using m4_db in this way,
+you can ignore this change.])
+
+m4_p([dnl
+The db_xa_open function has been replaced with the m4_ref(DB_XA_CREATE)
+flag to the m4_ref(dbh_create) function. All calls to db_xa_open should
+be replaced with calls to m4_ref(dbh_create) with the m4_ref(DB_XA_CREATE)
+flag set, followed by a call to the m4_ref(dbh_open) function.])
+
+m4_p([dnl
+A similar change has been made for the C++ API, where the
+m4_ref(DB_XA_CREATE) flag should be specified to the Db constructor. All
+calls to the Db::xa_open method should be replaced with the
+m4_ref(DB_XA_CREATE) flag to the Db constructor, followed by a call to
+the DB::open method.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.1/btstat.so b/db/docs_src/ref/upgrade.3.1/btstat.so
new file mode 100644
index 000000000..0fdd9658e
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.1/btstat.so
@@ -0,0 +1,42 @@
+m4_comment([$Id: btstat.so,v 1.12 2003/10/18 19:16:15 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.1: DB-__GT__stat,,
+ upgrade.3.1/dup, upgrade.3.1/sysmem)
+
+m4_p([dnl
+For Btree database statistics, the m4_refT(dbh_stat) field
+m4_arg(bt_nrecs) has been removed, replaced by two fields:
+m4_arg(bt_nkeys) and m4_arg(bt_ndata). The m4_arg(bt_nkeys) field returns
+a count of the unique keys in the database. The m4_arg(bt_ndata) field
+returns a count of the key/data pairs in the database. Neither exactly
+matches the previous value of the m4_arg(bt_nrecs) field, which returned
+a count of keys in the database, but, in the case of Btree databases,
+could overcount as it sometimes counted duplicate data items as unique
+keys. The application should be searched for any uses of the
+m4_arg(bt_nrecs) field and the field should be changed to be either
+m4_arg(bt_nkeys) or m4_arg(bt_ndata), whichever is more appropriate.])
+
+m4_p([dnl
+For Hash database statistics, the m4_refT(dbh_stat) field
+m4_arg(hash_nrecs) has been removed, replaced by two fields:
+m4_arg(hash_nkeys) and m4_arg(hash_ndata). The m4_arg(hash_nkeys) field
+returns a count of the unique keys in the database. The
+m4_arg(hash_ndata) field returns a count of the key/data pairs in the
+database. The new m4_arg(hash_nkeys) field exactly matches the previous
+value of the m4_arg(hash_nrecs) field. The application should be
+searched for any uses of the m4_arg(hash_nrecs) field, and the field
+should be changed to be m4_arg(hash_nkeys).])
+
+m4_p([dnl
+For Queue database statistics, the m4_refT(dbh_stat) field
+m4_arg(qs_nrecs) has been removed, replaced by two fields:
+m4_arg(qs_nkeys) and m4_arg(qs_ndata). The m4_arg(qs_nkeys) field returns
+a count of the unique keys in the database. The m4_arg(qs_ndata) field
+returns a count of the key/data pairs in the database. The new
+m4_arg(qs_nkeys) field exactly matches the previous value of the
+m4_arg(qs_nrecs) field. The application should be searched for any uses
+of the m4_arg(qs_nrecs) field, and the field should be changed to be
+m4_arg(qs_nkeys).])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.1/config.so b/db/docs_src/ref/upgrade.3.1/config.so
new file mode 100644
index 000000000..1daf83a10
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.1/config.so
@@ -0,0 +1,24 @@
+m4_comment([$Id: config.so,v 1.4 2001/05/15 14:44:16 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ [Release 3.1: DB_ENV-__GT__open, DB_ENV-__GT__remove],,
+ upgrade.3.1/intro, upgrade.3.1/set_tx_recover)
+
+m4_p([dnl
+In the m4_db 3.1 release, the m4_arg(config) argument to the
+m4_ref(dbenv_open), m4_ref(dbenv_remove) methods has been removed,
+replaced by additional methods on the m4_ref(DbEnv) handle. If your
+application calls m4_ref(dbenv_open) or m4_ref(dbenv_remove) with a NULL
+m4_arg(config) argument, find those functions and remove the config
+argument from the call. If your application has non-NULL m4_arg(config)
+argument, the strings values in that argument are replaced with calls to
+m4_ref(DbEnv) methods as follows:])
+
+m4_table_begin(, _center)
+m4_table_header(Previous config string, m4_db 3.1 version method)
+m4_table_element(DB_DATA_DIR, m4_ref(dbenv_set_data_dir))
+m4_table_element(DB_LOG_DIR, m4_ref(dbenv_set_lg_dir))
+m4_table_element(DB_TMP_DIR, m4_ref(dbenv_set_tmp_dir))
+m4_table_end
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.1/disk.so b/db/docs_src/ref/upgrade.3.1/disk.so
new file mode 100644
index 000000000..8d961cbef
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.1/disk.so
@@ -0,0 +1,26 @@
+m4_comment([$Id: disk.so,v 1.9 2000/12/21 18:37:09 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.1: upgrade requirements,,
+ upgrade.3.1/logalloc, upgrade.3.2/intro)
+
+m4_p([dnl
+Log file formats and the Btree, Queue, Recno and Hash Access Method
+database formats changed in the m4_db 3.1 release. (The on-disk
+Btree/Recno format changed from version 7 to version 8. The on-disk
+Hash format changed from version 6 to version 7. The on-disk Queue
+format changed from version 1 to version 2.) Until the underlying
+databases are upgraded, the m4_refT(dbh_open) will return a
+m4_ref(DB_OLD_VERSION) error.])
+
+m4_p([dnl
+An additional flag, m4_ref(DB_DUPSORT), has been added to the
+m4_refT(dbh_upgrade) for this upgrade. Please review the
+m4_ref(dbh_upgrade) documentation for further information.])
+
+m4_p([dnl
+For further information on upgrading m4_db installations, see
+m4_link(M4RELDIR/ref/upgrade/process, Upgrading m4_db
+installations).])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.1/dup.so b/db/docs_src/ref/upgrade.3.1/dup.so
new file mode 100644
index 000000000..167af1765
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.1/dup.so
@@ -0,0 +1,21 @@
+m4_comment([$Id: dup.so,v 1.1 2000/05/31 18:53:28 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.1: identical duplicate data items,,
+ upgrade.3.1/put, upgrade.3.1/btstat)
+
+m4_p([dnl
+In previous releases of m4_db, it was not an error to store identical
+duplicate data items, or, for those that just like the way it sounds,
+duplicate duplicates. However, there were implementation bugs where
+storing duplicate duplicates could cause database corruption.])
+
+m4_p([dnl
+In this release, applications may store identical duplicate data items
+as long as the data items are unsorted. It is an error to attempt to
+store identical duplicate data items when duplicates are being stored
+in a sorted order. This restriction is expected to be lifted in a future
+release. See m4_link(M4RELDIR/ref/am_conf/dup, Duplicate data items)
+for more information.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.1/env.so b/db/docs_src/ref/upgrade.3.1/env.so
new file mode 100644
index 000000000..76901feec
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.1/env.so
@@ -0,0 +1,42 @@
+m4_comment([$Id: env.so,v 1.6 2001/08/07 01:42:34 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.1: environment configuration,,
+ upgrade.3.1/txn_check, upgrade.3.1/tcl)
+
+m4_p([dnl
+A set of m4_ref(DbEnv) configuration methods which were not environment
+specific, but which instead affected the entire application space, have
+been removed from the m4_ref(DbEnv) object and replaced by static
+functions. The following table lists the m4_ref(DbEnv) methods previously
+available to applications and the static functions that should now be used
+instead.])
+
+m4_table_begin(, _center)
+m4_table_header(m4_ref(DbEnv) method, m4_db 3.1 function)
+m4_table_element(DB_ENV-__GT__set_func_close, m4_ref(dbenv_set_func_close))
+m4_table_element(DB_ENV-__GT__set_func_dirfree, m4_ref(dbenv_set_func_dirfree))
+m4_table_element(DB_ENV-__GT__set_func_dirlist, m4_ref(dbenv_set_func_dirlist))
+m4_table_element(DB_ENV-__GT__set_func_exists, m4_ref(dbenv_set_func_exists))
+m4_table_element(DB_ENV-__GT__set_func_free, m4_ref(dbenv_set_func_free))
+m4_table_element(DB_ENV-__GT__set_func_fsync, m4_ref(dbenv_set_func_fsync))
+m4_table_element(DB_ENV-__GT__set_func_ioinfo, m4_ref(dbenv_set_func_ioinfo))
+m4_table_element(DB_ENV-__GT__set_func_malloc, m4_ref(dbenv_set_func_malloc))
+m4_table_element(DB_ENV-__GT__set_func_map, m4_ref(dbenv_set_func_map))
+m4_table_element(DB_ENV-__GT__set_func_open, m4_ref(dbenv_set_func_open))
+m4_table_element(DB_ENV-__GT__set_func_read, m4_ref(dbenv_set_func_read))
+m4_table_element(DB_ENV-__GT__set_func_realloc, m4_ref(dbenv_set_func_realloc))
+m4_table_element(DB_ENV-__GT__set_func_rename, m4_ref(dbenv_set_func_rename))
+m4_table_element(DB_ENV-__GT__set_func_seek, m4_ref(dbenv_set_func_seek))
+m4_table_element(DB_ENV-__GT__set_func_sleep, m4_ref(dbenv_set_func_sleep))
+m4_table_element(DB_ENV-__GT__set_func_unlink, m4_ref(dbenv_set_func_unlink))
+m4_table_element(DB_ENV-__GT__set_func_unmap, m4_ref(dbenv_set_func_unmap))
+m4_table_element(DB_ENV-__GT__set_func_write, m4_ref(dbenv_set_func_write))
+m4_table_element(DB_ENV-__GT__set_func_yield, m4_ref(dbenv_set_func_yield))
+m4_table_element(DB_ENV-__GT__set_pageyield, dbenv_set_pageyield)
+m4_table_element(DB_ENV-__GT__set_region_init, dbenv_set_region_init)
+m4_table_element(DB_ENV-__GT__set_mutexlocks, dbenv_set_mutexlocks)
+m4_table_element(DB_ENV-__GT__set_tas_spins, dbenv_set_tas_spins)
+m4_table_end
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.1/intro.so b/db/docs_src/ref/upgrade.3.1/intro.so
new file mode 100644
index 000000000..0ebdcb96b
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.1/intro.so
@@ -0,0 +1,13 @@
+m4_comment([$Id: intro.so,v 1.5 2004/09/28 14:13:07 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.1: introduction,,
+ upgrade.3.0/disk, upgrade.3.1/config)
+
+m4_p([dnl
+The following pages describe how to upgrade applications coded against
+the m4_db 3.0 release interfaces to the m4_db 3.1 release interfaces.
+This information does not describe how to upgrade m4_db 1.85 release
+applications.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.1/log_register.so b/db/docs_src/ref/upgrade.3.1/log_register.so
new file mode 100644
index 000000000..27650f029
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.1/log_register.so
@@ -0,0 +1,16 @@
+m4_comment([$Id: log_register.so,v 1.4 2001/07/26 19:53:12 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.1: log_register,,
+ upgrade.3.1/sysmem, upgrade.3.1/memp_register)
+
+m4_p([dnl
+The arguments to the log_register and log_unregister interfaces have
+changed. Instead of returning (and passing in) a logging file ID, a
+reference to the m4_ref(Db) structure being registered (or unregistered)
+is passed. The application should be searched for any occurrences of
+log_register and log_unregister. For each one, change the arguments to
+be a reference to the m4_ref(Db) structure being registered or
+unregistered.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.1/logalloc.so b/db/docs_src/ref/upgrade.3.1/logalloc.so
new file mode 100644
index 000000000..4ba1ad8c8
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.1/logalloc.so
@@ -0,0 +1,15 @@
+m4_comment([$Id: logalloc.so,v 1.2 2006/08/24 16:32:32 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.1: log file pre-allocation,, upgrade.3.1/tmp, upgrade.3.1/disk)
+
+m4_p([This change only affects Win/32 applications.])
+
+m4_p([dnl
+On Win/32 platforms m4_db no longer pre-allocates log files. The problem
+was a noticeable performance spike as each log file was created. To turn
+this feature back on, search for the flag DB_OSO_LOG in the source file
+m4_path(log/log_put.c) and make the change described there, or contact
+us for assistance.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.1/memp_register.so b/db/docs_src/ref/upgrade.3.1/memp_register.so
new file mode 100644
index 000000000..4b1651e6e
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.1/memp_register.so
@@ -0,0 +1,18 @@
+m4_comment([$Id: memp_register.so,v 1.5 2003/10/18 19:16:15 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.1: memp_register,,
+ upgrade.3.1/log_register, upgrade.3.1/txn_check)
+
+m4_p([dnl
+An additional argument has been added to the m4_arg(pgin) and
+m4_arg(pgout) functions provided to the memp_register function.
+The application should be searched for any occurrences of
+memp_register. For each one, if m4_arg(pgin) or m4_arg(pgout)
+functions are specified, the m4_arg(pgin) and m4_arg(pgout) functions
+should be modified to take an initial argument of a m4_arg(DB_ENV *).
+This argument is intended to support better error reporting for
+applications, and may be entirely ignored by the m4_arg(pgin) and
+m4_arg(pgout) functions themselves.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.1/put.so b/db/docs_src/ref/upgrade.3.1/put.so
new file mode 100644
index 000000000..3ab51e198
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.1/put.so
@@ -0,0 +1,65 @@
+m4_comment([$Id: put.so,v 1.11 2003/10/18 19:16:15 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.1: DB-__GT__put,,
+ upgrade.3.1/set_paniccall, upgrade.3.1/dup)
+
+m4_p([dnl
+For the Queue and Recno access methods, when the m4_ref(DB_APPEND) flag
+is specified to the m4_refT(dbh_put), the allocated record number is
+returned to the application in the m4_arg(key) m4_ref(Dbt) argument. In
+previous releases of m4_db, this m4_ref(Dbt) structure did not follow
+the usual m4_ref(Dbt) conventions. For example, it was not possible to
+cause m4_db to allocate space for the returned record number. Rather,
+it was always assumed that the m4_arg(data) field of the m4_arg(key)
+structure referred to memory that could be used as storage for a
+db_recno_t type.])
+
+m4_p([dnl
+As of the m4_db 3.1.0 release, the m4_arg(key) structure behaves as
+described in the m4_ref(Dbt) C++/Java class or C structure documentation.])
+
+m4_p([dnl
+Applications which are using the m4_ref(DB_APPEND) flag for Queue and
+Recno access method databases will require a change to upgrade to the
+m4_db 3.1 releases. The simplest change is likely to be to add the
+m4_ref(DB_DBT_USERMEM) flag to the m4_arg(key) structure. For example,
+code that appears as follows:])
+
+m4_indent([dnl
+DBT key;
+db_recno_t recno;
+m4_blank
+memset(&key, 0, sizeof(DBT));
+key.data = &recno;
+key.size = sizeof(recno);
+DB-__GT__put(DB, NULL, &key, &data, DB_APPEND);
+printf("new record number is %lu\n", (u_long)recno);])
+
+m4_p([would be changed to:])
+
+m4_indent([dnl
+DBT key;
+db_recno_t recno;
+m4_blank
+memset(&key, 0, sizeof(DBT));
+key.data = &recno;
+key.ulen = sizeof(recno);
+key.flags = DB_DBT_USERMEM;
+DB-__GT__put(DB, NULL, &key, &data, DB_APPEND);
+printf("new record number is %lu\n", (u_long)recno);])
+
+m4_p([dnl
+Note that the m4_arg(ulen) field is now set as well as the flag value.
+An alternative change would be:])
+
+m4_indent([dnl
+DBT key;
+db_recno_t recno;
+m4_blank
+memset(&key, 0, sizeof(DBT));
+DB-__GT__put(DB, NULL, &key, &data, DB_APPEND);
+recno = *(db_recno_t *)key-__GT__data;
+printf("new record number is %lu\n", (u_long)recno);])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.1/set_feedback.so b/db/docs_src/ref/upgrade.3.1/set_feedback.so
new file mode 100644
index 000000000..7eaafee65
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.1/set_feedback.so
@@ -0,0 +1,17 @@
+m4_comment([$Id: set_feedback.so,v 1.4 2001/05/15 14:44:17 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ [Release 3.1: DB_ENV-__GT__set_feedback, DB-__GT__set_feedback],,
+ upgrade.3.1/set_tx_recover, upgrade.3.1/set_paniccall)
+
+m4_p([dnl
+Starting with the 3.1 release of m4_db, the m4_ref(dbenv_set_feedback)
+and m4_refT(dbh_set_feedback)s may return an error value, that is, they
+are no longer declared as returning no value, instead they return an int
+or throw an exception as appropriate when an error occurs.])
+
+m4_p([dnl
+If your application calls these functions, you may want to check for a
+possible error on return.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.1/set_paniccall.so b/db/docs_src/ref/upgrade.3.1/set_paniccall.so
new file mode 100644
index 000000000..16166079a
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.1/set_paniccall.so
@@ -0,0 +1,17 @@
+m4_comment([$Id: set_paniccall.so,v 1.6 2006/04/24 17:26:34 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ [Release 3.1: DB_ENV-__GT__set_paniccall, DB-__GT__set_paniccall],,
+ upgrade.3.1/set_feedback, upgrade.3.1/put)
+
+m4_p([dnl
+Starting with the 3.1 release of m4_db, the DB_ENV-__GT__set_paniccall
+and DB-__GT__set_paniccall methods may return an error value, that is,
+they are no longer declared as returning no value, instead they return
+an int or throw an exception as appropriate when an error occurs.])
+
+m4_p([dnl
+If your application calls these functions, you may want to check for a
+possible error on return.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.1/set_tx_recover.so b/db/docs_src/ref/upgrade.3.1/set_tx_recover.so
new file mode 100644
index 000000000..7e25acde0
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.1/set_tx_recover.so
@@ -0,0 +1,27 @@
+m4_comment([$Id: set_tx_recover.so,v 1.12 2002/02/23 20:05:28 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.1: DB_ENV-__GT__set_tx_recover,,
+ upgrade.3.1/config, upgrade.3.1/set_feedback)
+
+m4_p([dnl
+The redo parameter of the function passed to DB_ENV-__GT__set_tx_recover
+used to be an integer set to any one of a number of #defined values. In
+the 3.1 release of m4_db, the redo parameter has been replaced by the op
+parameter which is an enumerated type of type db_recops.])
+
+m4_p([dnl
+If your application calls DB_ENV-__GT__set_tx_recover, then find the
+function referred to by the call. Replace the flag values in that
+function as follows:])
+
+m4_table_begin(, _center)
+m4_table_header(Previous flag, m4_db 3.1 version flag)
+m4_table_element(TXN_BACKWARD_ROLL, DB_TXN_BACKWARD_ROLL)
+m4_table_element(TXN_FORWARD_ROLL, DB_TXN_FORWARD_ROLL)
+m4_table_element(TXN_OPENFILES, DB_TXN_OPENFILES)
+m4_table_element(TXN_REDO, DB_TXN_FORWARD_ROLL)
+m4_table_element(TXN_UNDO, DB_TXN_ABORT)
+m4_table_end
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.1/sysmem.so b/db/docs_src/ref/upgrade.3.1/sysmem.so
new file mode 100644
index 000000000..1e9c61bf8
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.1/sysmem.so
@@ -0,0 +1,13 @@
+m4_comment([$Id: sysmem.so,v 1.4 2003/10/18 19:16:16 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.1: DB_SYSTEM_MEM,,
+ upgrade.3.1/btstat, upgrade.3.1/log_register)
+
+m4_p([dnl
+Using the m4_ref(DB_SYSTEM_MEM) option on UNIX systems now requires the
+specification of a base system memory segment ID, using the
+m4_refT(dbenv_set_shm_key). Any valid segment ID may be specified, for
+example, one returned by the UNIX m4_manref(ftok, 3) function.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.1/tcl.so b/db/docs_src/ref/upgrade.3.1/tcl.so
new file mode 100644
index 000000000..9281ed994
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.1/tcl.so
@@ -0,0 +1,20 @@
+m4_comment([$Id: tcl.so,v 1.6 2001/03/01 15:58:21 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.1: Tcl API,, upgrade.3.1/env, upgrade.3.1/tmp)
+
+m4_p([dnl
+The m4_db Tcl API has been modified so that the m4_arg(-mpool) option to
+the m4_bold(berkdb env) command is now the default behavior. The Tcl API
+has also been modified so that the m4_arg(-txn) option to the
+m4_bold(berkdb env) command implies the m4_arg(-lock) and m4_arg(-log)
+options. Tcl scripts should be updated to remove the m4_arg(-mpool),
+m4_arg(-lock) and m4_arg(-log) options.])
+
+m4_p([dnl
+The m4_db Tcl API has been modified to follow the Tcl standard rules
+for integer conversion, for example, if the first two characters of a
+record number are "0x", the record number is expected to be in
+hexadecimal form.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.1/tmp.so b/db/docs_src/ref/upgrade.3.1/tmp.so
new file mode 100644
index 000000000..4ea2ffca8
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.1/tmp.so
@@ -0,0 +1,25 @@
+m4_comment([$Id: tmp.so,v 1.7 2000/05/22 20:26:35 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.1: DB_TMP_DIR,, upgrade.3.1/tcl, upgrade.3.1/logalloc)
+
+m4_p([dnl
+This change only affects Win/32 applications that create in-memory
+databases.])
+
+m4_p([dnl
+On Win/32 platforms an additional test has been added when searching for
+the appropriate directory in which to create the temporary files that are
+used to back in-memory databases. m4_db now uses any return value from
+the GetTempPath interface as the temporary file directory name before
+resorting to the static list of compiled-in pathnames.])
+
+m4_p([dnl
+If the system registry does not return the same directory as m4_db has
+been using previously, this change could cause temporary backing files to
+move to a new directory when applications are upgraded to the 3.1 release.
+In extreme cases, this could create (or fix) security problems if the file
+protection modes for the system registry directory are different from
+those on the directory previously used by m4_db.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.1/toc.so b/db/docs_src/ref/upgrade.3.1/toc.so
new file mode 100644
index 000000000..5d52897fe
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.1/toc.so
@@ -0,0 +1,27 @@
+m4_comment([$Id: toc.so,v 1.7 2006/10/02 15:56:36 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Upgrading m4_db 3.0 applications to m4_db 3.1,
+ Upgrading to release 3.1,,)
+
+m4_nlistbegin
+m4_nlist([m4_link(intro, [Release 3.1: introduction])])
+m4_nlistns([m4_link(config, [Release 3.1: DB_ENV-__GT__open, DB_ENV-__GT__remove])])
+m4_nlistns([m4_link(set_tx_recover, [Release 3.1: DB_ENV-__GT__set_tx_recover])])
+m4_nlistns([m4_link(set_feedback, [Release 3.1: DB_ENV-__GT__set_feedback, DB-__GT__set_feedback])])
+m4_nlistns([m4_link(set_paniccall, [Release 3.1: DB_ENV-__GT__set_paniccall, DB-__GT__set_paniccall])])
+m4_nlistns([m4_link(put, [Release 3.1: DB-__GT__put])])
+m4_nlistns([m4_link(dup, [Release 3.1: identical duplicate data items])])
+m4_nlistns([m4_link(btstat, [Release 3.1: DB-__GT__stat])])
+m4_nlistns([m4_link(sysmem, [Release 3.1: DB_SYSTEM_MEM])])
+m4_nlistns([m4_link(log_register, [Release 3.1: log_register])])
+m4_nlistns([m4_link(memp_register, [Release 3.1: memp_register])])
+m4_nlistns([m4_link(txn_check, [Release 3.1: txn_checkpoint])])
+m4_nlistns([m4_link(env, [Release 3.1: environment configuration])])
+m4_nlistns([m4_link(tcl, [Release 3.1: Tcl API])])
+m4_nlistns([m4_link(tmp, [Release 3.1: DB_TMP_DIR])])
+m4_nlistns([m4_link(logalloc, [Release 3.1: log file pre-allocation])])
+m4_nlistns([m4_link(disk, [Release 3.1: upgrade requirements])])
+m4_nlistend
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.1/txn_check.so b/db/docs_src/ref/upgrade.3.1/txn_check.so
new file mode 100644
index 000000000..a67cc34a7
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.1/txn_check.so
@@ -0,0 +1,15 @@
+m4_comment([$Id: txn_check.so,v 1.8 2003/10/18 19:16:16 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.1: txn_checkpoint,,
+ upgrade.3.1/memp_register, upgrade.3.1/env)
+
+m4_p([dnl
+An additional argument has been added to the txn_checkpoint function.])
+
+m4_p([dnl
+The application should be searched for any occurrences of
+txn_checkpoint. For each one, an argument of 0 should be appended to
+the current arguments.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.2/callback.so b/db/docs_src/ref/upgrade.3.2/callback.so
new file mode 100644
index 000000000..bc08b9be6
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.2/callback.so
@@ -0,0 +1,31 @@
+m4_comment([$Id: callback.so,v 1.5 2000/10/26 15:20:40 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ [Release 3.2: DB callback functions, app_private field],,
+ upgrade.3.2/set_flags, upgrade.3.2/renumber)
+
+m4_p([dnl
+In the m4_db 3.2 release, four application callback functions (the
+callback functions set by m4_ref(dbh_set_bt_compare),
+m4_ref(dbh_set_bt_prefix), m4_ref(dbh_set_dup_compare) and
+m4_ref(dbh_set_h_hash)) were modified to take a reference to a
+m4_ref(Db) object as their first argument. This change allows the m4_db
+Java API to reasonably support these interfaces. There is currently no
+need for the callback functions to do anything with this additional
+argument.])
+
+m4_p([dnl
+C and C++ applications that specify their own Btree key comparison,
+Btree prefix comparison, duplicate data item comparison or Hash
+functions should modify these functions to take a reference to a
+m4_ref(Db) structure as their first argument. No further change is
+required.])
+
+m4_p([dnl
+The app_private field of the m4_ref(Dbt) structure (accessible only from
+the m4_db C API) has been removed in the 3.2 release. It was replaced
+with app_private fields in the m4_ref(DbEnv) and m4_ref(Db) handles.
+Applications using this field will have to convert to using one of the
+replacement fields.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.2/db_dump.so b/db/docs_src/ref/upgrade.3.2/db_dump.so
new file mode 100644
index 000000000..57798e204
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.2/db_dump.so
@@ -0,0 +1,17 @@
+m4_comment([$Id: db_dump.so,v 1.3 2000/11/28 21:27:49 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.2: db_dump,,
+ upgrade.3.2/notfound, upgrade.3.2/disk)
+
+m4_p([dnl
+In previous releases of m4_db, the m4_ref(db_dump) utility dumped Recno
+access method database keys as numeric strings. For consistency, the
+m4_ref(db_dump) utility has been changed in the 3.2 release to dump
+record numbers as hex pairs when the data items are being dumped as hex
+pairs. (See the m4_option(k) and m4_option(p) options to the
+m4_ref(db_dump) utility for more information.) Any applications or
+scripts post-processing the m4_ref(db_dump) output of Recno databases
+under these conditions may require modification.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.2/disk.so b/db/docs_src/ref/upgrade.3.2/disk.so
new file mode 100644
index 000000000..0a7b0d33b
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.2/disk.so
@@ -0,0 +1,18 @@
+m4_comment([$Id: disk.so,v 1.5 2001/03/28 13:55:10 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.2: upgrade requirements,,
+ upgrade.3.2/db_dump, upgrade.3.3/intro)
+
+m4_p([dnl
+Log file formats and the Queue Access Method database formats changed
+in the m4_db 3.2 release. (The on-disk Queue format changed from
+version 2 to version 3.) Until the underlying databases are upgraded,
+the m4_refT(dbh_open) will return a m4_ref(DB_OLD_VERSION) error.])
+
+m4_p([dnl
+For further information on upgrading m4_db installations, see
+m4_link(M4RELDIR/ref/upgrade/process, Upgrading m4_db
+installations).])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.2/handle.so b/db/docs_src/ref/upgrade.3.2/handle.so
new file mode 100644
index 000000000..04c3e94c1
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.2/handle.so
@@ -0,0 +1,17 @@
+m4_comment([$Id: handle.so,v 1.6 2004/08/15 03:22:57 bostic Exp $])
+
+define(BDB_LOC, ..)
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.2: Java and C++ object reuse,,
+ upgrade.3.2/mutexlock, upgrade.3.2/notfound)
+
+m4_p([dnl
+In previous releases of m4_db, Java DbEnv and Db objects, and C++
+m4_refcxx(DbEnv) and m4_refcxx(Db) objects could be reused after they
+were closed, by calling open on them again. This is no longer
+permitted, and these objects no longer allow any operations after a
+close. Applications reusing these objects should be modified to create
+new objects instead.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.2/incomplete.so b/db/docs_src/ref/upgrade.3.2/incomplete.so
new file mode 100644
index 000000000..7def3dc90
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.2/incomplete.so
@@ -0,0 +1,34 @@
+m4_comment([$Id: incomplete.so,v 1.9 2004/08/15 03:22:57 bostic Exp $])
+
+define(BDB_LOC, ..)
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.2: DB_INCOMPLETE,,
+ upgrade.3.2/renumber, upgrade.3.2/tx_recover)
+
+m4_p([dnl
+There are a number of functions that flush pages from the m4_db shared
+memory buffer pool to disk. Most of those functions can potentially
+fail because a page that needs to be flushed is not currently available.
+However, this is not a hard failure and is rarely cause for concern.
+In the m4_db 3.2 release, the C++ API (if that API is configured to
+throw exceptions) and the Java API have been changed so that this
+failure does not throw an exception, but rather returns a non-zero error
+code of DB_INCOMPLETE.])
+
+m4_p([dnl
+The following C++ methods will return DB_INCOMPLETE rather than throw
+an exception: m4_refcxx(dbh_close), m4_refcxx(dbh_sync), DbEnv::memp_sync,
+DbEnv::txn_checkpoint, DbMpoolFile::memp_fsync.])
+
+m4_p([dnl
+The following Java methods are now declared "public int" rather than
+"public void", and will return Db.DB_INCOMPLETE rather than throw an
+exception: Db.close, Db.sync, and DbEnv.checkpoint.])
+
+m4_p([dnl
+It is likely that the only change required by any application will be
+those currently checking for a DB_INCOMPLETE return that has
+been encapsulated in an exception.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.2/intro.so b/db/docs_src/ref/upgrade.3.2/intro.so
new file mode 100644
index 000000000..0dd02c245
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.2/intro.so
@@ -0,0 +1,13 @@
+m4_comment([$Id: intro.so,v 1.4 2004/09/28 14:13:07 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.2: introduction,,
+ upgrade.3.1/disk, upgrade.3.2/set_flags)
+
+m4_p([dnl
+The following pages describe how to upgrade applications coded against
+the m4_db 3.1 release interfaces to the m4_db 3.2 release interfaces.
+This information does not describe how to upgrade m4_db 1.85 release
+applications.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.2/mutexlock.so b/db/docs_src/ref/upgrade.3.2/mutexlock.so
new file mode 100644
index 000000000..b34ffd459
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.2/mutexlock.so
@@ -0,0 +1,16 @@
+m4_comment([$Id: mutexlock.so,v 1.4 2003/10/18 19:16:16 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.2: DB_ENV-__GT__set_mutexlocks,,
+ upgrade.3.2/tx_recover, upgrade.3.2/handle)
+
+m4_p([dnl
+Previous m4_db releases included the db_env_set_mutexlocks function,
+intended for debugging, that allows applications to always obtain
+requested mutual exclusion mutexes without regard for their
+availability. This function has been replaced with
+dbenv_set_mutexlocks, which provides the same functionality on a
+per-database environment basis. Applications using the old function
+should be updated to use the new one.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.2/notfound.so b/db/docs_src/ref/upgrade.3.2/notfound.so
new file mode 100644
index 000000000..f5dd1b178
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.2/notfound.so
@@ -0,0 +1,15 @@
+m4_comment([$Id: notfound.so,v 1.4 2004/08/15 03:22:57 bostic Exp $])
+
+define(BDB_LOC, ..)
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.2: Java java.io.FileNotFoundException,,
+ upgrade.3.2/handle, upgrade.3.2/db_dump)
+
+m4_p([dnl
+The Java DbEnv.remove, Db.remove and Db.rename methods now throw
+java.io.FileNotFoundException in the case where the named file does not
+exist. Applications should be modified to catch this exception where
+appropriate.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.2/renumber.so b/db/docs_src/ref/upgrade.3.2/renumber.so
new file mode 100644
index 000000000..47b85c3dd
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.2/renumber.so
@@ -0,0 +1,29 @@
+m4_comment([$Id: renumber.so,v 1.4 2001/05/05 01:49:34 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.2: Logically renumbering records,,
+ upgrade.3.2/callback, upgrade.3.2/incomplete)
+
+m4_p([dnl
+In the m4_db 3.2 release, cursor adjustment semantics changed for Recno
+databases with mutable record numbers. Before the 3.2 release, cursors
+were adjusted to point to the previous or next record at the time the
+record to which the cursor referred was deleted. This could lead to
+unexpected behaviors. For example, two cursors referring to sequential
+records that were both deleted would lose their relationship to each
+other and would refer to the same position in the database instead of
+their original sequential relationship. There were also command
+sequences that would have unexpected results. For example, DB_AFTER
+and DB_BEFORE cursor put operations, using a cursor previously used to
+delete an item, would perform the put relative to the cursor's adjusted
+position and not its original position.])
+
+m4_p([dnl
+In the m4_db 3.2 release, cursors maintain their position in the tree
+regardless of deletion operations using the cursor. Applications that
+perform database operations, using cursors previously used to delete
+entries in Recno databases with mutable record numbers, should be
+evaluated to ensure that the new semantics do not cause application
+failure.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.2/set_flags.so b/db/docs_src/ref/upgrade.3.2/set_flags.so
new file mode 100644
index 000000000..ad5d9741e
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.2/set_flags.so
@@ -0,0 +1,25 @@
+m4_comment([$Id: set_flags.so,v 1.3 2003/10/18 19:16:16 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.2: DB_ENV-__GT__set_flags,,
+ upgrade.3.2/intro, upgrade.3.2/callback)
+
+m4_p([dnl
+A new method has been added to the m4_db environment handle,
+m4_ref(dbenv_set_flags). This method currently takes three flags:
+m4_ref(DB_CDB_ALLDB), m4_ref(DB_NOMMAP) and m4_ref(DB_TXN_NOSYNC). The
+first of these flags, m4_ref(DB_CDB_ALLDB), provides new functionality,
+allowing m4_cam applications to do locking across multiple databases.])
+
+m4_p([dnl
+The other two flags, m4_ref(DB_NOMMAP) and m4_ref(DB_TXN_NOSYNC), were
+specified to the m4_ref(dbenv_open) method in previous releases. In
+the 3.2 release, they have been moved to the m4_refT(dbenv_set_flags)
+because this allows the database environment's value to be toggled
+during the life of the application as well as because it is a more
+appropriate place for them. Applications specifying either the
+m4_ref(DB_NOMMAP) or m4_ref(DB_TXN_NOSYNC) flags to the
+m4_refT(dbenv_open) should replace those flags with calls to the
+m4_refT(dbenv_set_flags).])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.2/toc.so b/db/docs_src/ref/upgrade.3.2/toc.so
new file mode 100644
index 000000000..2f9ed9fac
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.2/toc.so
@@ -0,0 +1,21 @@
+m4_comment([$Id: toc.so,v 1.13 2006/10/02 15:56:36 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Upgrading m4_db 3.1 applications to m4_db 3.2,
+ Upgrading to release 3.2,,)
+
+m4_nlistbegin
+m4_nlist([m4_link(intro, [Release 3.2: introduction])])
+m4_nlistns([m4_link(set_flags, [Release 3.2: DB_ENV-__GT__set_flags])])
+m4_nlistns([m4_link(callback, [Release 3.2: DB callback functions, app_private field])])
+m4_nlistns([m4_link(renumber, [Release 3.2: logically renumbering records])])
+m4_nlistns([m4_link(incomplete, [Release 3.2: DB_INCOMPLETE])])
+m4_nlistns([m4_link(tx_recover, [Release 3.2: DB_ENV-__GT__set_tx_recover])])
+m4_nlistns([m4_link(mutexlock, [Release 3.2: DB_ENV-__GT__set_mutexlocks])])
+m4_nlistns([m4_link(handle, [Release 3.2: Java and C++ object reuse])])
+m4_nlistns([m4_link(notfound, [Release 3.2: Java java.io.FileNotFoundException])])
+m4_nlistns([m4_link(db_dump, [Release 3.2: db_dump])])
+m4_nlistns([m4_link(disk, [Release 3.2: upgrade requirements])])
+m4_nlistend
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.2/tx_recover.so b/db/docs_src/ref/upgrade.3.2/tx_recover.so
new file mode 100644
index 000000000..769ff0390
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.2/tx_recover.so
@@ -0,0 +1,24 @@
+m4_comment([$Id: tx_recover.so,v 1.14 2002/02/23 20:05:28 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.2: DB_ENV-__GT__set_tx_recover,,
+ upgrade.3.2/incomplete, upgrade.3.2/mutexlock)
+
+m4_p([dnl
+The m4_arg(info) parameter of the function passed to
+DB_ENV-__GT__set_tx_recover is no longer needed. If your application
+calls DB_ENV-__GT__set_tx_recover, find the callback function referred
+to by that call and remove the m4_arg(info) parameter.])
+
+m4_p([dnl
+In addition, the called function no longer needs to handle m4_db log
+records, m4_db will handle them internally as well as call the
+application-specified function. Any handling of m4_db log records in the
+application's callback function may be removed.])
+
+m4_p([dnl
+In addition, the callback function will no longer be called with the
+m4_ref(DB_TXN_FORWARD_ROLL) flag specified unless the transaction
+enclosing the operation successfully committed.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.3/alloc.so b/db/docs_src/ref/upgrade.3.3/alloc.so
new file mode 100644
index 000000000..d3ca356bd
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.3/alloc.so
@@ -0,0 +1,66 @@
+m4_comment([$Id: alloc.so,v 1.12 2004/08/13 03:39:00 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ [Release 3.3: DB-__GT__set_malloc, DB-__GT__set_realloc],,
+ upgrade.3.3/getswap, upgrade.3.3/conflict)
+
+m4_p([dnl
+There are two new methods in the m4_db 3.3 release:
+m4_ref(dbenv_set_alloc) and m4_ref(dbh_set_alloc). These functions
+allow applications to specify a set of allocation functions for the
+m4_db library to use when allocating memory to be owned by the
+application and when freeing memory that was originally allocated by the
+application.])
+
+m4_p([dnl
+The new methods affect or replace the following historic methods:])
+
+m4_tagbegin
+m4_tag(DB-__GT__set_malloc, [dnl
+The DB-__GT__set_malloc method has been replaced in its entirety.
+Applications using this method should replace the call with a call
+to m4_ref(dbh_set_alloc).])
+m4_tag(DB-__GT__set_realloc, [dnl
+The DB-__GT__set_realloc method has been replaced in its entirety.
+Applications using this method should replace the call with a call
+to m4_ref(dbh_set_alloc).])
+m4_tag(m4_ref(dbh_stat), [dnl
+The historic m4_arg(db_malloc) argument to the m4_refT(dbh_stat) has
+been replaced. Applications using this method should do as follows:
+if the argument is NULL, it should simply be removed. If non-NULL,
+it should be replaced with a call to m4_ref(dbh_set_alloc).])
+m4_tag(lock_stat, [dnl
+The historic m4_arg(db_malloc) argument to the lock_stat function has
+been replaced. Applications using this function should do as follows:
+if the argument is NULL, it should simply be removed. If
+non-NULL, it should be replaced with a call to m4_ref(dbenv_set_alloc).])
+m4_tag(log_archive, [dnl
+The historic m4_arg(db_malloc) argument to the log_archive function has
+been replaced. Applications using this function should do as follows:
+if the argument is NULL, it should simply be removed. If non-NULL,
+it should be replaced with a call to m4_ref(dbenv_set_alloc).])
+m4_tag(log_stat, [dnl
+The historic m4_arg(db_malloc) argument to the log_stat function has
+been replaced. Applications using this function should do as follows:
+if the argument is NULL, it should simply be removed. If non-NULL,
+it should be replaced with a call to m4_ref(dbenv_set_alloc).])
+m4_tag(memp_stat, [dnl
+The historic m4_arg(db_malloc) argument to the memp_stat function has
+been replaced. Applications using this function should do as follows:
+if the argument is NULL, it should simply be removed. If non-NULL,
+it should be replaced with a call to m4_ref(dbenv_set_alloc).])
+m4_tag(txn_stat, [dnl
+The historic m4_arg(db_malloc) argument to the txn_stat function has
+been replaced. Applications using this function should do as follows:
+if the argument is NULL, it should simply be removed. If non-NULL,
+it should be replaced with a call to m4_ref(dbenv_set_alloc).])
+m4_tagend
+
+m4_p([dnl
+One potential incompatibility for historic applications is that the
+allocation functions for a database environment must now be set before
+the environment is opened. Historically, m4_db applications could open
+the environment first, and subsequently call the DB-__GT__set_malloc
+and DB-__GT__set_realloc methods; that use is no longer supported.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.3/bigfile.so b/db/docs_src/ref/upgrade.3.3/bigfile.so
new file mode 100644
index 000000000..db3031862
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.3/bigfile.so
@@ -0,0 +1,16 @@
+m4_comment([$Id: bigfile.so,v 1.2 2001/06/07 19:03:21 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.3: --disable-bigfile,,
+ upgrade.3.3/shared, upgrade.3.3/disk)
+
+m4_p([dnl
+In previous releases, m4_db UNIX used the --disable-bigfile configuration
+option for systems that could not, for whatever reason, include large
+file support in a particular m4_db configuration. However, large file
+support has been integrated into the autoconf configuration tool as of
+version 2.50. For that reason, m4_db configuration no longer supports
+--disable-bigfile, the autoconf standard --disable-largefile should be
+used instead.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.3/conflict.so b/db/docs_src/ref/upgrade.3.3/conflict.so
new file mode 100644
index 000000000..01f818381
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.3/conflict.so
@@ -0,0 +1,12 @@
+m4_comment([$Id: conflict.so,v 1.6 2003/10/18 19:16:18 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.3: DB_LOCK_CONFLICT,,
+ upgrade.3.3/alloc, upgrade.3.3/memp_fget)
+
+m4_p([dnl
+The DB_LOCK_CONFLICT flag has been removed from the lock_detect function.
+Applications specifying the DB_LOCK_CONFLICT flag should simply replace
+it with a flags argument of 0.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.3/disk.so b/db/docs_src/ref/upgrade.3.3/disk.so
new file mode 100644
index 000000000..04430150f
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.3/disk.so
@@ -0,0 +1,14 @@
+m4_comment([$Id: disk.so,v 1.3 2001/07/18 02:28:22 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.3: upgrade requirements,,
+ upgrade.3.3/bigfile, upgrade.4.0/intro)
+
+m4_p([dnl
+No database formats or log file formats changed in the m4_db 3.3 release.])
+
+m4_p([dnl
+For further information on upgrading m4_db installations, see
+m4_link(M4RELDIR/ref/upgrade/process, Upgrading m4_db installations).])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.3/getswap.so b/db/docs_src/ref/upgrade.3.3/getswap.so
new file mode 100644
index 000000000..393e7e0ca
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.3/getswap.so
@@ -0,0 +1,16 @@
+m4_comment([$Id: getswap.so,v 1.1 2001/06/07 19:00:21 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.3: DB-__GT__get_byteswapped,,
+ upgrade.3.3/gettype, upgrade.3.3/alloc)
+
+m4_p([dnl
+The m4_refT(dbh_get_byteswapped) method can return an error in the m4_db
+3.3 release, and so requires an interface change. C and C++
+applications calling m4_ref(dbh_get_byteswapped) should be changed to
+treat the method's return as an error code, and to pass an additional
+second argument of type m4_bold(int *) to the method. The additional
+argument is used as a memory location in which to store the requested
+information.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.3/gettype.so b/db/docs_src/ref/upgrade.3.3/gettype.so
new file mode 100644
index 000000000..cb7d657cd
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.3/gettype.so
@@ -0,0 +1,15 @@
+m4_comment([$Id: gettype.so,v 1.1 2001/06/07 19:00:21 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.3: DB-__GT__get_type,,
+ upgrade.3.3/rpc, upgrade.3.3/getswap)
+
+m4_p([dnl
+The m4_refT(dbh_get_type) method can return an error in the m4_db 3.3
+release, and so requires an interface change. C and C++ applications
+calling m4_ref(dbh_get_type) should be changed to treat the method's
+return as an error code, and to pass an additional second argument of
+type m4_bold(DBTYPE *) to the method. The additional argument is used
+as a memory location in which to store the requested information.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.3/intro.so b/db/docs_src/ref/upgrade.3.3/intro.so
new file mode 100644
index 000000000..778c1a3f5
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.3/intro.so
@@ -0,0 +1,13 @@
+m4_comment([$Id: intro.so,v 1.4 2004/09/28 14:13:08 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.3: introduction,,
+ upgrade.3.2/disk, upgrade.3.3/rpc)
+
+m4_p([dnl
+The following pages describe how to upgrade applications coded against
+the m4_db 3.2 release interfaces to the m4_db 3.3 release interfaces.
+This information does not describe how to upgrade m4_db 1.85 release
+applications.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.3/memp_fget.so b/db/docs_src/ref/upgrade.3.3/memp_fget.so
new file mode 100644
index 000000000..9bd89615f
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.3/memp_fget.so
@@ -0,0 +1,26 @@
+m4_comment([$Id: memp_fget.so,v 1.5 2003/10/18 19:16:18 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ [Release 3.3: memp_fget, EIO],,
+ upgrade.3.3/conflict, upgrade.3.3/txn_prepare)
+
+m4_p([dnl
+Previous releases of m4_db returned the system error EIO when the
+memp_fget function was called to retrieve a page, the page did not
+exist, and the m4_ref(DB_MPOOL_CREATE) flag was not set. In the 3.3
+release, the error m4_ref(DB_PAGE_NOTFOUND) is returned instead, to
+allow applications to distinguish between recoverable and
+non-recoverable errors. Applications calling the memp_fget function
+and checking for a return of EIO should check for
+m4_ref(DB_PAGE_NOTFOUND) instead.])
+
+m4_p([dnl
+Previous releases of m4_db treated filesystem I/O failure (the most
+common of which the filesystem running out of space), as a fatal error,
+returning m4_ref(DB_RUNRECOVERY). When a filesystem failure happens in
+the 3.3 release m4_db returns the underlying system error (usually EIO),
+but can continue to run. Applications should abort any enclosing
+transaction when a recoverable system error occurs in order to recover
+from the error.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.3/rpc.so b/db/docs_src/ref/upgrade.3.3/rpc.so
new file mode 100644
index 000000000..94bb140d7
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.3/rpc.so
@@ -0,0 +1,16 @@
+m4_comment([$Id: rpc.so,v 1.5 2004/08/13 03:39:00 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.3: DB_ENV-__GT__set_server,,
+ upgrade.3.3/intro, upgrade.3.3/gettype)
+
+m4_p([dnl
+The DB_ENV-__GT__set_server method has been deprecated and replaced
+with the m4_refT(dbenv_set_rpc_server). The DB_ENV-__GT__set_server
+method will be removed in a future release, and so applications using
+it should convert. The DB_ENV-__GT__set_server method can be easily
+converted to the m4_refT(dbenv_set_rpc_server) by changing the name,
+and specifying a NULL for the added argument, second in the argument
+list.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.3/shared.so b/db/docs_src/ref/upgrade.3.3/shared.so
new file mode 100644
index 000000000..e835f3ba3
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.3/shared.so
@@ -0,0 +1,18 @@
+m4_comment([$Id: shared.so,v 1.2 2001/07/10 13:16:34 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ [Release 3.3: --enable-dynamic, --enable-shared],,
+ upgrade.3.3/txn_prepare, upgrade.3.3/bigfile)
+
+m4_p([dnl
+In previous releases, m4_db required separate configuration and builds
+to create both static and shared libraries. This has changed in the
+3.3 release, and m4_db now builds and installs both shared and static
+versions of the m4_db libraries by default. This change was based on
+m4_db upgrading to release 1.4 of the GNU Project's Libtool distribution.
+For this reason, m4_db no longer supports the previous --enable-dynamic
+and --enable-shared configuration options. Instead, as m4_db now builds
+both static and shared libraries by default, the useful options are
+Libtool's --disable-shared and --disable-static options.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.3/toc.so b/db/docs_src/ref/upgrade.3.3/toc.so
new file mode 100644
index 000000000..9edbf32d1
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.3/toc.so
@@ -0,0 +1,21 @@
+m4_comment([$Id: toc.so,v 1.14 2006/10/02 15:56:37 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Upgrading m4_db 3.2 applications to m4_db 3.3,
+ Upgrading to release 3.3,,)
+
+m4_nlistbegin
+m4_nlist([m4_link(intro, [Release 3.3: introduction])])
+m4_nlistns([m4_link(rpc, [Release 3.3: DB_ENV-__GT__set_server])])
+m4_nlistns([m4_link(gettype, [Release 3.3: DB-__GT__get_type])])
+m4_nlistns([m4_link(getswap, [Release 3.3: DB-__GT__get_byteswapped])])
+m4_nlistns([m4_link(alloc, [Release 3.3: DB-__GT__set_malloc, DB-__GT__set_realloc])])
+m4_nlistns([m4_link(conflict, [Release 3.3: DB_LOCK_CONFLICT])])
+m4_nlistns([m4_link(memp_fget, [Release 3.3: memp_fget, EIO])])
+m4_nlistns([m4_link(txn_prepare, [Release 3.3: txn_prepare])])
+m4_nlistns([m4_link(shared, [Release 3.3: --enable-dynamic, --enable-shared])])
+m4_nlistns([m4_link(bigfile, [Release 3.3: --disable-bigfile])])
+m4_nlistns([m4_link(disk, [Release 3.3: upgrade requirements])])
+m4_nlistend
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.3.3/txn_prepare.so b/db/docs_src/ref/upgrade.3.3/txn_prepare.so
new file mode 100644
index 000000000..66cdf4ebd
--- /dev/null
+++ b/db/docs_src/ref/upgrade.3.3/txn_prepare.so
@@ -0,0 +1,14 @@
+m4_comment([$Id: txn_prepare.so,v 1.9 2003/10/18 19:16:18 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 3.3: txn_prepare,,
+ upgrade.3.3/memp_fget, upgrade.3.3/shared)
+
+m4_p([dnl
+An additional argument has been added to the txn_prepare function. If
+your application calls txn_prepare (that is, is performing two-phase
+commit using m4_db as a local resource manager), see
+m4_link(M4RELDIR/ref/xa/intro, Distributed Transactions) for more
+information.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.0/asr.so b/db/docs_src/ref/upgrade.4.0/asr.so
new file mode 100644
index 000000000..5a81def98
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.0/asr.so
@@ -0,0 +1,34 @@
+m4_comment([$Id: asr.so,v 1.3 2006/08/24 16:32:32 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.0: application-specific recovery,,
+ upgrade.4.0/cxx, upgrade.4.0/disk)
+
+m4_p([dnl
+If you have created your own logging and recovery routines, you may need
+to upgrade them to the m4_db 4.0 release.])
+
+m4_p([dnl
+First, you should regenerate your logging, print, read and the other
+automatically generated routines, using the dist/gen_rec.awk tool
+included in the m4_db distribution.])
+
+m4_p([dnl
+Next, compare the template file code generated by the gen_rec.awk tool
+against the code generated by the last release in which you built a
+template file. Any changes in the templates should be incorporated into
+the recovery routines you have written.])
+
+m4_p([dnl
+Third, if your recovery functions refer to m4_ref(DB_TXN_FORWARD_ROLL)
+(that is, your code checks for that particular operation code), you
+should replace it with DB_REDO(op) which compares the operation code to
+both m4_ref(DB_TXN_FORWARD_ROLL) and m4_ref(DB_TXN_APPLY).
+(m4_ref(DB_TXN_APPLY) is a potential value for the operation code as of
+the 4.0 release.)])
+
+m4_p([dnl
+Finally, if you have created your own logging and recovery routines, we
+recommend you contact us and ask us to review those routines for you.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.0/cxx.so b/db/docs_src/ref/upgrade.4.0/cxx.so
new file mode 100644
index 000000000..bb89b5ba7
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.0/cxx.so
@@ -0,0 +1,46 @@
+m4_comment([$Id: cxx.so,v 1.3 2005/12/01 03:18:53 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.0: C++ ostream objects,,
+ upgrade.4.0/java, upgrade.4.0/asr)
+
+m4_p([dnl
+In the 4.0 release, the m4_db C++ API has been changed to use the ISO
+standard C++ API in preference to the older, less portable interfaces,
+where available. This means the m4_db methods that used to take an
+ostream object as a parameter now expect a std::ostream. Specifically,
+the following methods have changed:])
+
+m4_indent([dnl
+DbEnv::set_error_stream
+Db::set_error_stream
+Db::verify])
+
+m4_p([dnl
+On many platforms, the old and the new C++ styles are interchangeable;
+on some platforms (notably Windows systems), they are incompatible. If
+your code uses these methods and you have trouble with the 4.0 release,
+you should update code that looks like this:])
+
+m4_indent([dnl
+#include __LT__iostream.h__GT__
+#include __LT__db_cxx.h__GT__
+m4_blank
+void foo(Db db) {
+ db.set_error_stream(&cerr);
+}])
+
+m4_p([dnl
+to look like this:])
+
+m4_indent([dnl
+#include __LT__iostream__GT__
+#include __LT__db_cxx.h__GT__
+m4_blank
+using std::cerr;
+m4_blank
+void foo(Db db) {
+ db.set_error_stream(&cerr);
+}])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.0/deadlock.so b/db/docs_src/ref/upgrade.4.0/deadlock.so
new file mode 100644
index 000000000..1b7ecd949
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.0/deadlock.so
@@ -0,0 +1,13 @@
+m4_comment([$Id: deadlock.so,v 1.1 2001/09/07 16:55:56 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.0: db_deadlock,,
+ upgrade.4.0/intro, upgrade.4.0/lock)
+
+m4_p([dnl
+The m4_option(w) option to the m4_ref(db_deadlock) utility has been
+deprecated. Applications can get the functionality of the m4_option(w)
+option by using the m4_option(t) option with an argument of
+m4_arg(.100000).])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.0/disk.so b/db/docs_src/ref/upgrade.4.0/disk.so
new file mode 100644
index 000000000..6115368d9
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.0/disk.so
@@ -0,0 +1,15 @@
+m4_comment([$Id: disk.so,v 1.11 2001/12/10 15:14:06 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.0: upgrade requirements,,
+ upgrade.4.0/asr, upgrade.4.1/intro)
+
+m4_p([dnl
+The log file format changed in the m4_db 4.0 release. No database
+formats changed in the m4_db 4.0 release.])
+
+m4_p([dnl
+For further information on upgrading m4_db installations, see
+m4_link(M4RELDIR/ref/upgrade/process, Upgrading m4_db installations).])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.0/env.so b/db/docs_src/ref/upgrade.4.0/env.so
new file mode 100644
index 000000000..e564fc8c1
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.0/env.so
@@ -0,0 +1,77 @@
+m4_comment([$Id: env.so,v 1.8 2005/08/03 21:24:02 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.0: db_env_set_XXX,,
+ upgrade.4.0/txn, upgrade.4.0/rpc)
+
+m4_p([dnl
+The db_env_set_region_init function was removed in the 4.0 release and
+replaced with the m4_ref(DB_REGION_INIT) flag to the
+m4_refT(dbenv_set_flags). This is an interface change: historically,
+the db_env_set_region_init function operated on the entire m4_db
+library, not a single environment. The new method only operates on
+a single m4_ref(DbEnv) handle (and any handles created in the scope of
+that handle). Applications calling the db_env_set_region_init function
+should update their calls: calls to the historic routine with an
+argument of 1 (0) are equivalent to calling m4_ref(dbenv_set_flags) with
+the m4_ref(DB_REGION_INIT) flag and an argument of 1 (0).])
+
+m4_p([dnl
+The db_env_set_tas_spins function was removed in the 4.0 release and
+replaced with the DB_ENV-__GT__set_tas_spins method. This is an
+interface change: historically, the db_env_set_tas_spins function
+operated on the entire m4_db library, not a single environment. The new
+method only operates on a single m4_ref(DbEnv) handle (and any handles
+created in the scope of that handle). Applications calling the
+db_env_set_tas_spins function should update their calls: calls to the
+historic routine are equivalent to calling DB_ENV-__GT__set_tas_spins
+with the same argument. In addition, for consistent behavior, all
+m4_ref(DbEnv) handles opened by the application should make the same
+configuration call, or the value will need to be entered into the
+environment's m4_path(DB_CONFIG) file.])
+
+m4_p([dnl
+Also, three of the standard m4_db debugging interfaces changed in the
+4.0 release. It is quite unlikely that m4_db applications use these
+interfaces.])
+
+m4_p([dnl
+The DB_ENV-__GT__set_mutexlocks method was removed in the 4.0 release
+and replaced with the m4_ref(DB_NOLOCKING) flag to the
+m4_refT(dbenv_set_flags). Applications calling the
+DB_ENV-__GT__set_mutexlocks method should update their calls: calls
+to the historic routine with an argument of 1 (0) are equivalent to
+calling m4_ref(dbenv_set_flags) with the m4_ref(DB_NOLOCKING) flag and
+an argument of 1 (0).])
+
+m4_p([dnl
+The db_env_set_pageyield function was removed in the 4.0 release and
+replaced with the m4_ref(DB_YIELDCPU) flag to the
+m4_refT(dbenv_set_flags). This is an interface change: historically,
+the db_env_set_pageyield function operated on the entire m4_db library,
+not a single environment. The new method only operates on a single
+m4_ref(DbEnv) handle (and any handles created in the scope of that
+handle). Applications calling the db_env_set_pageyield function should
+update their calls: calls to the historic routine with an argument of 1
+(0) are equivalent to calling m4_ref(dbenv_set_flags) with the
+m4_ref(DB_YIELDCPU) flag and an argument of 1 (0). In addition, all
+m4_ref(DbEnv) handles opened by the application will need to make the
+same call, or the m4_ref(DB_YIELDCPU) flag will need to be entered into
+the environment's m4_path(DB_CONFIG) file.])
+
+m4_p([dnl
+The db_env_set_panicstate function was removed in the 4.0 release,
+replaced with the m4_ref(DB_PANIC_ENVIRONMENT) and m4_ref(DB_NOPANIC)
+flags to the m4_refT(dbenv_set_flags). (The
+m4_ref(DB_PANIC_ENVIRONMENT) flag will cause an environment to panic,
+affecting all threads of control using that environment. The
+m4_ref(DB_NOPANIC) flag will cause a single m4_ref(DbEnv) handle to
+ignore the current panic state of the environment.) This is an
+interface change: historically the db_env_set_panicstate function
+operated on the entire m4_db library, not a single environment.
+Applications calling the db_env_set_panicstate function should update
+their calls, replacing the historic call with a call to
+m4_ref(dbenv_set_flags) and the appropriate flag, depending on their
+usage of the historic interface.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.0/intro.so b/db/docs_src/ref/upgrade.4.0/intro.so
new file mode 100644
index 000000000..7d531abda
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.0/intro.so
@@ -0,0 +1,13 @@
+m4_comment([$Id: intro.so,v 1.6 2004/09/28 14:13:08 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.0: introduction,,
+ upgrade.3.3/disk, upgrade.4.0/deadlock)
+
+m4_p([dnl
+The following pages describe how to upgrade applications coded against
+the m4_db 3.3 release interfaces to the m4_db 4.0 release interfaces.
+This information does not describe how to upgrade m4_db 1.85 release
+applications.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.0/java.so b/db/docs_src/ref/upgrade.4.0/java.so
new file mode 100644
index 000000000..7e9d2c03e
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.0/java.so
@@ -0,0 +1,28 @@
+m4_comment([$Id: java.so,v 1.7 2005/12/01 03:18:53 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.0: Java CLASSPATH environment variable,,
+ upgrade.4.0/lock_id_free, upgrade.4.0/cxx)
+
+m4_p([dnl
+The m4_db Java class files are now packaged as jar files. In the 4.0
+release, the m4_envvar(CLASSPATH) environment variable must change to
+include at least the m4_path(db.jar) file. It can optionally include
+the m4_path(dbexamples.jar) file if you want to run the examples. For
+example, on UNIX:])
+
+m4_indent([dnl
+export CLASSPATH="/usr/local/BerkeleyDB.M4MAJOR.M4MINOR/lib/db.jar:/usr/local/BerkeleyDB.M4MAJOR.M4MINOR/lib/dbexamples.jar"])
+
+m4_p([dnl
+For example, on Windows:])
+
+m4_indent([dnl
+set CLASSPATH="D:\db\build_windows\Release\db.jar;D:\db\build_windows\Release\dbexamples.jar"])
+
+m4_p([dnl
+For more information on Java configuration, please see
+m4_link(M4RELDIR/ref/java/conf, Java configuration) and
+m4_link(M4RELDIR/ref/build_win/intro, Building for Windows).])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.0/lock.so b/db/docs_src/ref/upgrade.4.0/lock.so
new file mode 100644
index 000000000..a860b862b
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.0/lock.so
@@ -0,0 +1,40 @@
+m4_comment([$Id: lock.so,v 1.6 2001/09/27 02:25:51 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.0: lock_XXX,,
+ upgrade.4.0/deadlock, upgrade.4.0/log)
+
+m4_p([dnl
+The C API for the m4_db Locking subsystem was reworked in the 4.0
+release as follows:])
+
+m4_table_begin(, _center)
+m4_table_header(Historic functional interface, m4_db 4.X method)
+m4_table_element(lock_detect, m4_ref(lock_detect))
+m4_table_element(lock_get, m4_ref(lock_get))
+m4_table_element(lock_id, m4_ref(lock_id))
+m4_table_element(lock_put, m4_ref(lock_put))
+m4_table_element(lock_stat, m4_ref(lock_stat))
+m4_table_element(lock_vec, m4_ref(lock_vec))
+m4_table_end
+
+m4_p([dnl
+Applications calling any of these functions should update their calls
+to use the enclosing m4_ref(DbEnv) handle's method (easily done as the
+first argument to the existing call is the correct handle to use).])
+
+m4_p([dnl
+In addition, the m4_ref(lock_stat) 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 m4_ref(lock_stat).])
+
+m4_p([dnl
+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 m4_ref(DbEnv) handle rather than the DbLock handle. Applications
+calling the DbLock::put or DbLock.put method should update their calls
+to use the enclosing m4_ref(DbEnv) handle's method (easily done as the
+first argument to the existing call is the correct handle to use).])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.0/lock_id_free.so b/db/docs_src/ref/upgrade.4.0/lock_id_free.so
new file mode 100644
index 000000000..fac2b3e1b
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.0/lock_id_free.so
@@ -0,0 +1,13 @@
+m4_comment([$Id: lock_id_free.so,v 1.1 2001/09/25 21:05:24 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.0: DB_ENV-__GT__lock_id_free,,
+ upgrade.4.0/set_lk_max, upgrade.4.0/java)
+
+m4_p([dnl
+A new locker ID related API, the m4_refT(lock_id_free), was added to
+m4_db 4.0 release. Applications using the m4_refT(lock_id) to allocate
+locker IDs may want to update their applications to free the locker ID
+when it is no longer needed.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.0/log.so b/db/docs_src/ref/upgrade.4.0/log.so
new file mode 100644
index 000000000..124ee1651
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.0/log.so
@@ -0,0 +1,50 @@
+m4_comment([$Id: log.so,v 1.5 2003/10/18 19:16:19 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.0: log_XXX,,
+ upgrade.4.0/lock, upgrade.4.0/mp)
+
+m4_p([dnl
+The C API for the m4_db Logging subsystem was reworked in the 4.0
+release as follows:])
+
+m4_table_begin(, _center)
+m4_table_header(Historic functional interface, m4_db 4.X method)
+m4_table_element(log_archive, m4_ref(log_archive))
+m4_table_element(log_file, m4_ref(log_file))
+m4_table_element(log_flush, m4_ref(log_flush))
+m4_table_element(log_get, [m4_ref(log_cursor), m4_ref(logc_get), m4_ref(logc_close)])
+m4_table_element(log_put, m4_ref(log_put))
+m4_table_element(log_register, DB_ENV-__GT__log_register)
+m4_table_element(log_stat, m4_ref(log_stat))
+m4_table_element(log_unregister, DB_ENV-__GT__log_unregister)
+m4_table_end
+
+m4_p([dnl
+Applications calling any of these functions should update their calls
+to use the enclosing m4_ref(DbEnv) 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).])
+
+m4_p([dnl
+Application calls to the historic log_get function must be replaced
+with the creation of a log file cursor (a m4_ref(DbLogc) object), using
+the m4_refT(log_cursor), calls to the m4_refT(logc_get) to retrieve log
+records and calls to the m4_refT(logc_close) to destroy the cursor. It
+may also be possible to simplify some applications. In previous
+releases of m4_db, the DB_CURRENT, DB_NEXT, and DB_PREV flags to the
+log_get function could not be used by a free-threaded m4_ref(DbEnv)
+handle. If their m4_ref(DbEnv) handle was free-threaded, applications
+had to create an additional, unique environment handle by separately
+calling m4_ref(dbenv_open) without specifying m4_ref(DB_THREAD). 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
+m4_ref(DbEnv) object.])
+
+m4_p([dnl
+Finally, the m4_ref(log_stat) 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
+m4_ref(log_stat).])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.0/mp.so b/db/docs_src/ref/upgrade.4.0/mp.so
new file mode 100644
index 000000000..9eeb36ef7
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.0/mp.so
@@ -0,0 +1,62 @@
+m4_comment([$Id: mp.so,v 1.4 2007/04/05 21:19:31 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.0: memp_XXX,,
+ upgrade.4.0/log, upgrade.4.0/txn)
+
+m4_p([dnl
+The C API for the m4_db Memory Pool subsystem was reworked in the 4.0
+release as follows:])
+
+m4_table_begin(, _center)
+m4_table_header(Historic functional interface, m4_db 4.X method)
+m4_table_element(memp_register, m4_ref(memp_register))
+m4_table_element(memp_stat, m4_ref(memp_stat))
+m4_table_element(memp_sync, m4_ref(memp_sync))
+m4_table_element(memp_trickle, m4_ref(memp_trickle))
+m4_table_element(memp_fopen, m4_ref(memp_fcreate))
+m4_table_element(DB_MPOOL_FINFO: ftype, m4_ref(memp_set_ftype))
+m4_table_element(DB_MPOOL_FINFO: pgcookie, m4_ref(memp_set_pgcookie))
+m4_table_element(DB_MPOOL_FINFO: fileid, m4_ref(memp_set_fileid))
+m4_table_element(DB_MPOOL_FINFO: lsn_offset, m4_ref(memp_set_lsn_offset))
+m4_table_element(DB_MPOOL_FINFO: clear_len, m4_ref(memp_set_clear_len))
+m4_table_element(memp_fopen, m4_ref(memp_fopen))
+m4_table_element(memp_fclose, m4_ref(memp_fclose))
+m4_table_element(memp_fput, m4_ref(memp_fput))
+m4_table_element(memp_fset, DB_MPOOLFILE-__GT__set)
+m4_table_element(memp_fsync, m4_ref(memp_fsync))
+m4_table_end
+
+m4_p([dnl
+Applications calling any of the memp_register, memp_stat, memp_sync or
+memp_trickle functions should update those calls to use the enclosing
+m4_ref(DbEnv) handle's method (easily done as the first argument to the
+existing call is the correct m4_ref(DbEnv) handle).])
+
+m4_p([dnl
+In addition, the m4_ref(memp_stat) 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 m4_ref(memp_stat).])
+
+m4_p([dnl
+Applications calling the memp_fopen function should update those calls
+as follows: First, acquire a m4_ref(DbMpoolFile) handle using the
+m4_refT(memp_fcreate). Second, if the DB_MPOOL_FINFO structure
+reference passed to the memp_fopen function was non-NULL, call the
+m4_ref(DbMpoolFile) method corresponding to each initialized field in
+the DB_MPOOL_FINFO structure. Third, call the m4_refT(memp_fopen)
+method to open the underlying file. If the m4_refT(memp_fopen) call
+fails, then m4_refT(memp_fclose) must be called to destroy the allocated
+handle.])
+
+m4_p([dnl
+Applications calling the memp_fopen, memp_fclose, memp_fput, memp_fset,
+or memp_fsync functions should update those calls to use the enclosing
+m4_ref(DbMpoolFile) handle's method. Again, this is easily done as the
+first argument to the existing call is the correct m4_ref(DbMpoolFile)
+handle. With one exception, the calling conventions of the old and new
+interfaces are identical; the one exception is the m4_refT(memp_fclose),
+which requires an additional flag parameter that should be set to 0.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.0/rpc.so b/db/docs_src/ref/upgrade.4.0/rpc.so
new file mode 100644
index 000000000..c4fb20153
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.0/rpc.so
@@ -0,0 +1,14 @@
+m4_comment([$Id: rpc.so,v 1.7 2004/08/13 03:39:01 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.0: DB_ENV-__GT__set_server,,
+ upgrade.4.0/env, upgrade.4.0/set_lk_max)
+
+m4_p([dnl
+The DB_ENV-__GT__set_server method has been replaced with the
+m4_refT(dbenv_set_rpc_server). The DB_ENV-__GT__set_server method can
+be easily converted to the m4_refT(dbenv_set_rpc_server) by changing the
+name, and specifying a NULL for the added argument, second in the
+argument list.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.0/set_lk_max.so b/db/docs_src/ref/upgrade.4.0/set_lk_max.so
new file mode 100644
index 000000000..3e5d9e1ca
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.0/set_lk_max.so
@@ -0,0 +1,14 @@
+m4_comment([$Id: set_lk_max.so,v 1.4 2003/10/18 19:16:20 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.0: DB_ENV-__GT__set_lk_max,,
+ upgrade.4.0/rpc, upgrade.4.0/lock_id_free)
+
+m4_p([dnl
+The DB_ENV-__GT__set_lk_max method has been deprecated in favor of
+the m4_ref(dbenv_set_lk_max_locks), m4_ref(dbenv_set_lk_max_lockers),
+and m4_refT(dbenv_set_lk_max_objects)s. The DB_ENV-__GT__set_lk_max
+method continues to be available, but is no longer documented and
+is expected to be removed in a future release.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.0/toc.so b/db/docs_src/ref/upgrade.4.0/toc.so
new file mode 100644
index 000000000..e53b0cc83
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.0/toc.so
@@ -0,0 +1,24 @@
+m4_comment([$Id: toc.so,v 1.18 2006/10/02 15:56:37 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Upgrading m4_db 3.3 applications to m4_db 4.0,
+ Upgrading to release 4.0,,)
+
+m4_nlistbegin
+m4_nlist([m4_link(intro, [Release 4.0: introduction])])
+m4_nlistns([m4_link(deadlock, [Release 4.0: db_deadlock])])
+m4_nlistns([m4_link(lock, [Release 4.0: lock_XXX])])
+m4_nlistns([m4_link(log, [Release 4.0: log_XXX])])
+m4_nlistns([m4_link(mp, [Release 4.0: memp_XXX])])
+m4_nlistns([m4_link(txn, [Release 4.0: txn_XXX])])
+m4_nlistns([m4_link(env, [Release 4.0: db_env_set_XXX])])
+m4_nlistns([m4_link(rpc, [Release 4.0: DB_ENV-__GT__set_server])])
+m4_nlistns([m4_link(set_lk_max, [Release 4.0: DB_ENV-__GT__set_lk_max])])
+m4_nlistns([m4_link(lock_id_free, [Release 4.0: DB_ENV-__GT__lock_id_free])])
+m4_nlistns([m4_link(java, [Release 4.0: Java CLASSPATH environment variable])])
+m4_nlistns([m4_link(cxx, [Release 4.0: C++ ostream objects])])
+m4_nlistns([m4_link(asr, [Release 4.0: application-specific recovery])])
+m4_nlistns([m4_link(disk, [Release 4.0: upgrade requirements])])
+m4_nlistend
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.0/txn.so b/db/docs_src/ref/upgrade.4.0/txn.so
new file mode 100644
index 000000000..e6a5377ed
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.0/txn.so
@@ -0,0 +1,41 @@
+m4_comment([$Id: txn.so,v 1.6 2003/10/18 19:16:20 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.0: txn_XXX,,
+ upgrade.4.0/mp, upgrade.4.0/env)
+
+m4_p([dnl
+The C API for the m4_db Transaction subsystem was reworked in the 4.0
+release as follows:])
+
+m4_table_begin(, _center)
+m4_table_header(Historic functional interface, m4_db 4.X method)
+m4_table_element(txn_abort, m4_ref(txn_abort))
+m4_table_element(txn_begin, m4_ref(txn_begin))
+m4_table_element(txn_checkpoint, m4_ref(txn_checkpoint))
+m4_table_element(txn_commit, m4_ref(txn_commit))
+m4_table_element(txn_discard, m4_ref(txn_discard))
+m4_table_element(txn_id, m4_ref(txn_id))
+m4_table_element(txn_prepare, m4_ref(txn_prepare))
+m4_table_element(txn_recover, m4_ref(txn_recover))
+m4_table_element(txn_stat, m4_ref(txn_stat))
+m4_table_end
+
+m4_p([dnl
+Applications calling any of these functions should update their calls
+to use the enclosing m4_ref(DbEnv) or m4_ref(DbTxn) handle's method
+(easily done as the first argument to the existing call is the correct
+handle to use).])
+
+m4_p([dnl
+As a special case, since applications might potentially have many calls
+to the txn_abort, txn_begin and txn_commit functions, those functions
+continue to work unchanged in the m4_db 4.0 release.])
+
+m4_p([dnl
+In addition, the m4_ref(txn_stat) 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 m4_ref(txn_stat).])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.1/app_dispatch.so b/db/docs_src/ref/upgrade.4.1/app_dispatch.so
new file mode 100644
index 000000000..ab93c56b8
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.1/app_dispatch.so
@@ -0,0 +1,19 @@
+m4_comment([$Id: app_dispatch.so,v 1.6 2002/08/26 23:05:28 mjc Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ [Release 4.1: Application-specific logging and recovery],,
+ upgrade.4.1/cxx, upgrade.4.1/disk)
+
+m4_p([dnl
+The application-specific logging and recovery tools and interfaces have
+been reworked in the 4.1 release to make it simpler for applications to
+use m4_db to support their own logging and recovery of non-m4_db
+objects. Specifically, the DB_ENV-__GT__set_recovery_init and
+DB_ENV-__GT__set_tx_recover interfaces have been removed, replaced by
+m4_ref(dbenv_set_app_dispatch). Applications using either of the
+removed interfaces should be updated to call
+m4_ref(dbenv_set_app_dispatch). For more information see
+m4_link(M4RELDIR/ref/apprec/intro, "Application-specific logging and
+recovery") and the m4_ref(dbenv_set_app_dispatch) documentation.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.1/checkpoint.so b/db/docs_src/ref/upgrade.4.1/checkpoint.so
new file mode 100644
index 000000000..4197d81cf
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.1/checkpoint.so
@@ -0,0 +1,18 @@
+m4_comment([$Id: checkpoint.so,v 1.5 2006/08/24 16:32:33 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ [Release 4.1: DB_CHECKPOINT, DB_CURLSN],,
+ upgrade.4.1/log_stat, upgrade.4.1/incomplete)
+
+m4_p([dnl
+The DB_CHECKPOINT flag has been removed from the m4_ref(logc_get) and
+m4_refT(log_put)s. It is very unlikely application programs used this
+flag. If your application used this flag, please contact us for help
+in upgrading.])
+
+m4_p([dnl
+The DB_CURLSN flag has been removed from the m4_refT(log_put). It is
+very unlikely application programs used this flag. If your application
+used this flag, please contact us for help in upgrading.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.1/cxx.so b/db/docs_src/ref/upgrade.4.1/cxx.so
new file mode 100644
index 000000000..e799f7eaa
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.1/cxx.so
@@ -0,0 +1,41 @@
+m4_comment([$Id: cxx.so,v 1.3 2002/08/27 02:28:31 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.1: C++ exceptions,,
+ upgrade.4.1/java, upgrade.4.1/app_dispatch)
+
+m4_p([dnl
+With default flags, the C++ m4_refcxx(DbEnv) and m4_refcxx(Db) classes
+can throw exceptions from their constructors. For example, this can
+happen if invalid parameters are passed in or the underlying C
+structures could not be created. If the objects are created in an
+environment that is not configured for exceptions (that is, the
+m4_ref(DB_CXX_NO_EXCEPTIONS) flag is specified), errors from the
+constructor will be returned when the handle's open method is called.])
+
+m4_p([dnl
+In addition, the behavior of the m4_refcxx(DbEnv) and m4_refcxx(Db)
+destructors has changed to simplify exception handling in applications.
+The destructors will now close the handle if the handle's close method
+was not called prior to the object being destroyed. The return value
+of the call is discarded, and no exceptions will be thrown.
+Applications should call the close method in normal situations so any
+errors while closing can be handled by the application.])
+
+m4_p([dnl
+This change allows applications to be structured as follows:])
+
+m4_indent([dnl
+try {
+ DbEnv env(0);
+ env.open(/* ... */);
+ Db db(&env, 0);
+ db.open(/* ... */);
+ /* ... */
+ db.close(0);
+ env.close(0);
+} catch (DbException &dbe) {
+ // Handle the exception, the handles have already been closed.
+}])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.1/disk.so b/db/docs_src/ref/upgrade.4.1/disk.so
new file mode 100644
index 000000000..6da519ab5
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.1/disk.so
@@ -0,0 +1,22 @@
+m4_comment([$Id: disk.so,v 1.8 2007/06/14 18:31:18 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.1: upgrade requirements,,
+ upgrade.4.1/app_dispatch, upgrade.4.2/intro)
+
+m4_p([dnl
+The log file format changed in the m4_db 4.1 release.])
+
+m4_p([dnl
+All of the access method database formats changed in the m4_db 4.1
+release (Btree/Recno: version 8 to version 9, Hash: version 7 to version
+8, and Queue: version 3 to version 4). m4_bold([The format changes are
+entirely backward-compatible, and no database upgrades are needed.])
+Note that databases created using the 4.1 release may not be usable with
+earlier m4_db releases.])
+
+m4_p([dnl
+For further information on upgrading m4_db installations, see
+m4_link(M4RELDIR/ref/upgrade/process, Upgrading m4_db installations).])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.1/excl.so b/db/docs_src/ref/upgrade.4.1/excl.so
new file mode 100644
index 000000000..8a8211bd8
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.1/excl.so
@@ -0,0 +1,13 @@
+m4_comment([$Id: excl.so,v 1.1 2002/01/16 20:12:08 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.1: DB_EXCL,,
+ upgrade.4.1/intro, upgrade.4.1/fop)
+
+m4_p([dnl
+The m4_ref(DB_EXCL) flag to the m4_ref(dbh_open) method now works for
+subdatabases as well as physical files, and it is now possible to use
+the m4_ref(DB_EXCL) flag to check for the previous existence of
+subdatabases.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.1/fop.so b/db/docs_src/ref/upgrade.4.1/fop.so
new file mode 100644
index 000000000..100634afb
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.1/fop.so
@@ -0,0 +1,149 @@
+m4_comment([$Id: fop.so,v 1.8 2004/08/13 03:39:01 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+[Release 4.1: DB-__GT__associate, DB-__GT__open, DB-__GT__remove, DB-__GT__rename],,
+ upgrade.4.1/excl, upgrade.4.1/log_register)
+
+m4_p([dnl
+Historic releases of m4_db transaction-protected the m4_ref(dbh_open),
+m4_ref(dbh_remove) and m4_refT(dbh_rename)s, but did it in an implicit
+way, that is, applications did not specify the m4_ref(DbTxn) handles
+associated with the operations. This approach had a number of problems,
+the most significant of which was there was no way to group operations
+that included database creation, removal or rename. For example,
+applications wanting to maintain a list of the databases in an
+environment in a well-known database had no way to update the well-known
+database and create a database within a single transaction, and so there
+was no way to guarantee the list of databases was correct for the
+environment after system or application failure. Another example might
+be the creation of both a primary database and a database intended to
+serve as a secondary index, where again there was no way to group the
+creation of both databases in a single atomic operation.])
+
+m4_p([dnl
+In the 4.1 release of m4_db, this is no longer the case. The
+m4_ref(dbh_open) and m4_refT(dbh_associate)s now take a m4_ref(DbTxn)
+handle returned by m4_ref(txn_begin) as an optional argument. New
+m4_ref(dbenv_dbremove) and m4_refT(dbenv_dbrename)s taking a
+m4_ref(DbTxn) handle as an optional argument have been added.])
+
+m4_p([dnl
+To upgrade, applications must add a m4_ref(DbTxn) parameter in the
+appropriate location for the m4_refT(dbh_open) calls, and the
+m4_refT(dbh_associate) calls (in both cases, the second argument for
+the C API, the first for the C++ or Java APIs).])
+
+m4_p([dnl
+Applications wanting to transaction-protect their m4_ref(dbh_open) and
+m4_ref(dbh_associate) method calls can add a NULL m4_ref(DbTxn)
+argument and specify the m4_ref(DB_AUTO_COMMIT) flag to the two calls,
+which wraps the operation in an internal m4_db transaction.
+Applications wanting to transaction-protect the remove and rename
+operations must rewrite their calls to the m4_ref(dbh_remove) and
+m4_refT(dbh_rename)s to be, instead, calls to the new
+m4_ref(dbenv_dbremove) and m4_refT(dbenv_dbrename)s. Applications not
+wanting to transaction-protect any of the operations can add a NULL
+argument to their m4_ref(dbh_open) and m4_refT(dbh_associate) calls and
+require no further changes.])
+
+m4_p([dnl
+For example, an application currently opening and closing a database as
+follows:])
+
+m4_indent([dnl
+DB *dbp;
+DB_ENV *dbenv;
+int ret;
+m4_blank
+if ((ret = db_create(&dbp, dbenv, 0)) != 0)
+ goto err_handler;
+m4_blank
+if ((ret = dbp-__GT__open(dbp, "file", NULL, DB_BTREE, DB_CREATE, 0664)) != 0) {
+ (void)dbp-__GT__close(dbp);
+ goto err_handler;
+}])
+
+m4_p([dnl
+could transaction-protect the m4_ref(dbh_open) call as follows:])
+
+m4_indent([dnl
+DB *dbp;
+DB_ENV *dbenv;
+int ret;
+m4_blank
+if ((ret = db_create(&dbp, dbenv, 0)) != 0)
+ goto err_handler;
+m4_blank
+if ((ret = dbp-__GT__open(dbp,
+ NULL, "file", NULL, DB_BTREE, DB_CREATE | DB_AUTO_COMMIT, 0664)) != 0) {
+ (void)dbp-__GT__close(dbp);
+ goto err_handler;
+}])
+
+m4_p([dnl
+An application currently removing a database as follows:])
+
+m4_indent([dnl
+DB *dbp;
+DB_ENV *dbenv;
+int ret;
+m4_blank
+if ((ret = db_create(&dbp, dbenv, 0)) != 0)
+ goto err_handler;
+m4_blank
+if ((ret = dbp-__GT__remove(dbp, "file", NULL, 0)) != 0)
+ goto err_handler;])
+
+m4_p([dnl
+could transaction-protect the database removal as follows:])
+
+m4_indent([dnl
+DB *dbp;
+DB_ENV *dbenv;
+int ret;
+m4_blank
+if ((ret =
+ dbenv-__GT__dbremove(dbenv, NULL, "file", NULL, DB_AUTO_COMMIT)) != 0)
+ goto err_handler;])
+
+m4_p([dnl
+An application currently renaming a database as follows:])
+
+m4_indent([dnl
+DB *dbp;
+DB_ENV *dbenv;
+int ret;
+m4_blank
+if ((ret = db_create(&dbp, dbenv, 0)) != 0)
+ goto err_handler;
+m4_blank
+if ((ret = dbp-__GT__rename(dbp, "file", NULL, "newname", 0)) != 0)
+ goto err_handler;])
+
+m4_p([dnl
+could transaction-protect the database renaming as follows:])
+
+m4_indent([dnl
+DB *dbp;
+DB_ENV *dbenv;
+int ret;
+m4_blank
+if ((ret = dbenv-__GT__dbrename(
+ dbenv, NULL, "file", NULL, "newname", DB_AUTO_COMMIT)) != 0)
+ goto err_handler;])
+
+m4_p([dnl
+These examples are the simplest possible translation, and will result in
+behavior matching that of previous releases. For further discussion on
+how to transaction-protect m4_refT(dbh_open) calls, see
+m4_link(M4RELDIR/ref/transapp/data_open, Opening the databases).])
+
+m4_p([dnl
+m4_ref(Db) handles that will later be used for transaction-protected
+operations must be opened within a transaction. Specifying a
+transaction handle to operations using handles not opened within a
+transaction will return an error. Similarly, not specifying a
+transaction handle to operations using handles that were opened within
+a transaction will also return an error.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.1/hash_nelem.so b/db/docs_src/ref/upgrade.4.1/hash_nelem.so
new file mode 100644
index 000000000..31e53ebd4
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.1/hash_nelem.so
@@ -0,0 +1,12 @@
+m4_comment([$Id: hash_nelem.so,v 1.2 2002/08/26 23:05:29 mjc Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ [Release 4.1: DB-__GT__stat.hash_nelem],,
+ upgrade.4.1/memp_sync, upgrade.4.1/java)
+
+m4_p([dnl
+The m4_arg(hash_nelem) field of the m4_ref(dbh_stat) method for Hash
+databases has been removed from the 4.1 release, this information is no
+longer available to applications.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.1/incomplete.so b/db/docs_src/ref/upgrade.4.1/incomplete.so
new file mode 100644
index 000000000..4cb86051b
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.1/incomplete.so
@@ -0,0 +1,21 @@
+m4_comment([$Id: incomplete.so,v 1.8 2004/08/15 03:22:57 bostic Exp $])
+
+define(BDB_LOC, ..)
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.1: DB_INCOMPLETE,,
+ upgrade.4.1/checkpoint, upgrade.4.1/memp_sync)
+
+m4_p([dnl
+The DB_INCOMPLETE error has been removed from the 4.1 release, and is
+no longer returned by the m4_db library. Applications no longer need
+to check for this error return, as the underlying m4_db interfaces that
+could historically fail to checkpoint or flush the cache and return this
+error can no longer fail for that reason. Applications should remove
+all uses of DB_INCOMPLETE.])
+
+m4_p([dnl
+Additionally, the DbEnv.checkpoint and Db.sync methods have been changed
+from returning int to returning void.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.1/intro.so b/db/docs_src/ref/upgrade.4.1/intro.so
new file mode 100644
index 000000000..7a6a7c133
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.1/intro.so
@@ -0,0 +1,13 @@
+m4_comment([$Id: intro.so,v 1.3 2004/09/28 14:13:08 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.1: introduction,,
+ upgrade.4.0/disk, upgrade.4.1/excl)
+
+m4_p([dnl
+The following pages describe how to upgrade applications coded against
+the m4_db 4.0 release interfaces to the m4_db 4.1 release interfaces.
+This information does not describe how to upgrade m4_db 1.85 release
+applications.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.1/java.so b/db/docs_src/ref/upgrade.4.1/java.so
new file mode 100644
index 000000000..e77b2a914
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.1/java.so
@@ -0,0 +1,17 @@
+m4_comment([$Id: java.so,v 1.5 2004/08/15 03:22:57 bostic Exp $])
+
+define(BDB_LOC, ..)
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.1: Java exceptions,,
+ upgrade.4.1/hash_nelem, upgrade.4.1/cxx)
+
+m4_p([dnl
+The Java DbEnv constructor is now marked with "throws DbException".
+This means applications must construct DbEnv objects in a context where
+DbException throwables are handled (either in a try/catch block or in a
+method that propagates the exception up the stack). Note that previous
+versions of the m4_db Java API could throw this exception from the
+constructor but it was not marked.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.1/log_register.so b/db/docs_src/ref/upgrade.4.1/log_register.so
new file mode 100644
index 000000000..681c92648
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.1/log_register.so
@@ -0,0 +1,13 @@
+m4_comment([$Id: log_register.so,v 1.4 2006/08/24 16:32:33 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.1: DB_ENV-__GT__log_register,,
+ upgrade.4.1/fop, upgrade.4.1/log_stat)
+
+m4_p([dnl
+The DB_ENV-__GT__log_register and DB_ENV-__GT__log_unregister interfaces
+were removed from the m4_db 4.1 release. It is very unlikely
+application programs used these interfaces. If your application used
+these interfaces, please contact us for help in upgrading.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.1/log_stat.so b/db/docs_src/ref/upgrade.4.1/log_stat.so
new file mode 100644
index 000000000..c5f493b66
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.1/log_stat.so
@@ -0,0 +1,13 @@
+m4_comment([$Id: log_stat.so,v 1.1 2002/01/11 16:33:12 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.1: st_flushcommit,,
+ upgrade.4.1/log_register, upgrade.4.1/checkpoint)
+
+m4_p([dnl
+The DB_ENV-__GT__log_stat "st_flushcommits" statistic has been removed
+from m4_db, as it is now the same as the "st_scount" statistic. Any
+application using the "st_flushcommits" statistic should remove it, or
+replace it with the "st_count" statistic.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.1/memp_sync.so b/db/docs_src/ref/upgrade.4.1/memp_sync.so
new file mode 100644
index 000000000..4d4f777c8
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.1/memp_sync.so
@@ -0,0 +1,22 @@
+m4_comment([$Id: memp_sync.so,v 1.6 2006/08/24 16:32:33 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ [Release 4.1: DB_ENV-__GT__memp_sync],,
+ upgrade.4.1/incomplete, upgrade.4.1/hash_nelem)
+
+m4_p([dnl
+Historical documentation for the m4_refT(memp_sync) stated:])
+
+m4_indent([dnl
+In addition, if m4_ref(memp_sync) returns success, the value of
+m4_arg(lsn) will be overwritten with the largest log sequence number
+from any page that was written by m4_ref(memp_sync) to satisfy this
+request.])
+
+m4_p([dnl
+This functionality was never correctly implemented, and has been removed
+in the m4_db 4.1 release. It is very unlikely application programs used
+this information. If your application used this information, please
+contact us for help in upgrading.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.1/toc.so b/db/docs_src/ref/upgrade.4.1/toc.so
new file mode 100644
index 000000000..15fecfc80
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.1/toc.so
@@ -0,0 +1,23 @@
+m4_comment([$Id: toc.so,v 1.18 2006/10/02 15:56:38 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Upgrading m4_db 4.0 applications to m4_db 4.1,
+ Upgrading to release 4.1,,)
+
+m4_nlistbegin
+m4_nlist([m4_link(intro, [Release 4.1: introduction])])
+m4_nlistns([m4_link(excl, [Release 4.1: DB_EXCL])])
+m4_nlistns([m4_link(fop, [Release 4.1: DB-__GT__associate, DB-__GT__open, DB-__GT__remove, DB-__GT__rename])])
+m4_nlistns([m4_link(log_register, [Release 4.1: DB_ENV-__GT__log_register])])
+m4_nlistns([m4_link(log_stat, [Release 4.1: st_flushcommit])])
+m4_nlistns([m4_link(checkpoint, [Release 4.1: DB_CHECKPOINT, DB_CURLSN])])
+m4_nlistns([m4_link(incomplete, [Release 4.1: DB_INCOMPLETE])])
+m4_nlistns([m4_link(memp_sync, [Release 4.1: DB_ENV-__GT__memp_sync])])
+m4_nlistns([m4_link(hash_nelem, [Release 4.1: DB-__GT__stat.hash_nelem])])
+m4_nlistns([m4_link(java, [Release 4.1: Java exceptions])])
+m4_nlistns([m4_link(cxx, [Release 4.1: C++ exceptions])])
+m4_nlistns([m4_link(app_dispatch, [Release 4.1: Application-specific logging and recovery])])
+m4_nlistns([m4_link(disk, [Release 4.1: upgrade requirements])])
+m4_nlistend
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.2/cksum.so b/db/docs_src/ref/upgrade.4.2/cksum.so
new file mode 100644
index 000000000..28ea78199
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.2/cksum.so
@@ -0,0 +1,16 @@
+m4_comment([$Id: cksum.so,v 1.4 2004/09/28 14:13:08 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.2: DB_CHKSUM_SHA1,,
+ upgrade.4.2/queue, upgrade.4.2/client)
+
+m4_p([dnl
+The flag to enable checksumming of m4_db databases pages was renamed
+from DB_CHKSUM_SHA1 to m4_ref(DB_CHKSUM), as m4_db uses an internal
+function to generate hash values for unencrypted database pages, not
+the SHA1 Secure Hash Algorithm. m4_db continues to use the SHA1 Secure
+Hash Algorithm to generate hashes for encrypted database pages.
+Applications using the DB_CHKSUM_SHA1 flag should change that use to
+m4_ref(DB_CHKSUM); no other change is required.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.2/client.so b/db/docs_src/ref/upgrade.4.2/client.so
new file mode 100644
index 000000000..a03a0e79d
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.2/client.so
@@ -0,0 +1,14 @@
+m4_comment([$Id: client.so,v 1.2 2004/09/28 14:13:09 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.2: DB_CLIENT,,
+ upgrade.4.2/cksum, upgrade.4.2/del)
+
+m4_p([dnl
+The flag to create a client to connect to a RPC server was renamed from
+DB_CLIENT to m4_ref(DB_RPCCLIENT), in order to avoid confusion between
+RPC clients and replication clients. Applications using the DB_CLIENT
+flag should change that use to m4_ref(DB_RPCCLIENT); no other change is
+required.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.2/del.so b/db/docs_src/ref/upgrade.4.2/del.so
new file mode 100644
index 000000000..54275f523
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.2/del.so
@@ -0,0 +1,22 @@
+m4_comment([$Id: del.so,v 1.11 2004/09/28 14:13:09 bostic Exp $])
+
+define(BDB_LOC, ..)
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.2: DB-__GT__del,,
+ upgrade.4.2/client, upgrade.4.2/priority)
+
+m4_p([dnl
+In previous releases, the C++ m4_refcxx(dbh_del) and Java Db.delete
+methods threw exceptions encapsulating the m4_ref(DB_KEYEMPTY) error in
+some cases when called on Queue and Recno databases. Unfortunately,
+this was undocumented behavior.])
+
+m4_p([dnl
+For consistency with the other m4_db methods that handle
+m4_ref(DB_KEYEMPTY), this is no longer the case. Applications calling
+the m4_refcxx(dbh_del) or Db.delete methods on Queue or Recno databases,
+and handling the m4_ref(DB_KEYEMPTY) exception specially, should be
+modified to check for a return value of m4_ref(DB_KEYEMPTY) instead.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.2/disk.so b/db/docs_src/ref/upgrade.4.2/disk.so
new file mode 100644
index 000000000..5194ee69f
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.2/disk.so
@@ -0,0 +1,15 @@
+m4_comment([$Id: disk.so,v 1.5 2003/12/10 16:24:35 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.2: upgrade requirements,,
+ upgrade.4.2/tcl, upgrade.4.3/intro)
+
+m4_p([dnl
+The log file format changed in the m4_db 4.2 release. No database
+formats changed in the m4_db 4.2 release.])
+
+m4_p([dnl
+For further information on upgrading m4_db installations, see
+m4_link(M4RELDIR/ref/upgrade/process, Upgrading m4_db installations).])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.2/intro.so b/db/docs_src/ref/upgrade.4.2/intro.so
new file mode 100644
index 000000000..71fd3174d
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.2/intro.so
@@ -0,0 +1,13 @@
+m4_comment([$Id: intro.so,v 1.3 2004/09/28 14:13:09 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.2: introduction,,
+ upgrade.4.1/disk, upgrade.4.2/java)
+
+m4_p([dnl
+The following pages describe how to upgrade applications coded against
+the m4_db 4.1 release interfaces to the m4_db 4.2 release interfaces.
+This information does not describe how to upgrade m4_db 1.85 release
+applications.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.2/java.so b/db/docs_src/ref/upgrade.4.2/java.so
new file mode 100644
index 000000000..39a34ebd2
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.2/java.so
@@ -0,0 +1,118 @@
+m4_comment([$Id: java.so,v 1.21 2006/08/24 16:32:33 bostic Exp $])
+
+define(BDB_LOC, ..)
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.2: Java,,
+ upgrade.4.2/intro, upgrade.4.2/queue)
+
+m4_p([dnl
+There are a number of major changes to the Java support in m4_db in this
+release. Despite that we have tried to make this a bridge release, a
+release where we don't require you to change anything. We've done this
+using the standard approach to deprecation in Java. If you do not
+compile with deprecation warnings on, your existing sources should work
+with this new release with only minor changes despite the large number
+of changes. Expect that in a future release we will remove all the
+deprecated API and only support the new API names.])
+
+m4_p([dnl
+This is a list of areas where we have broken compatibility with the
+4.1 release. In most cases it is a name change in an interface class.
+])
+m4_bulletbegin
+
+m4_bullet([dnl
+m4_bold([DbAppDispatch.app_dispatch(DbEnv,Dbt,DbLsn,int)])m4_p([is now:
+m4_bold([DbAppDispatch.appDispatch(DbEnv,Dbt,DbLsn,int)])])])
+
+m4_bullet([dnl
+m4_bold([DbAppendRecno.db_append_recno(Db,Dbt,int)])m4_p([is now:
+m4_bold([DbAppendRecno.dbAppendRecno(Db,Dbt,int)])])])
+
+m4_bullet([dnl
+m4_bold([DbBtreeCompare.bt_compare(Db,Dbt,Dbt)])m4_p([is now:
+m4_bold([DbBtreeCompare.compare(Db,Dbt,Dbt)])])])
+
+m4_bullet([dnl
+m4_bold([DbBtreeCompare.dup_compare(Db,Dbt,Dbt)])m4_p([is now:
+m4_bold([DbBtreeCompare.compareDuplicates(Db,Dbt,Dbt)])])])
+
+m4_bullet([dnl
+m4_bold([DbBtreePrefix.bt_prefix(Db,Dbt,Dbt)])m4_p([is now:
+m4_bold([DbBtreePrefix.prefix(Db,Dbt,Dbt)])])])
+
+m4_bullet([dnl
+m4_bold([DbSecondaryKeyCreate.secondary_key_create(Db,Dbt,Dbt,Dbt)])m4_p([is now:
+m4_bold([DbSecondaryKeyCreate.secondaryKeyCreate(Db,Dbt,Dbt,Dbt)])])])
+
+m4_bulletend
+
+m4_p([dnl
+The 4.2 release of m4_db requires at minimum a J2SE 1.3.1 certified Java
+virtual machine and associated classes to properly build and execute.
+To determine what version virtual machine you are running, enter:])
+
+m4_indent([java -version])
+
+m4_p([dnl
+at a command line and look for the version number. If you need to
+deploy to a version 1.1 or 1.0 Java environment, it may be possible to
+do so by not including the classes in the com.sleepycat.bdb package
+in the Java build process (however, that workaround has not been tested
+by us).])
+
+m4_p([dnl
+A few inconsistent methods have been cleaned up (for example, Db.close
+now returns void; previously, it returned an int which was always zero).
+The synchronized attributed has been toggled on some methods -- this is
+an attempt to prevent multithreaded applications from calling close or
+similar methods concurrently from multiple threads.])
+
+m4_p([dnl
+The m4_db API has up until now been consistent across all language APIs.
+Although consistency has is benefits, it made our Java API look strange to
+Java programmers. Many methods have been renamed in this release of the
+Java API to conform with Java naming conventions. Sometimes this renaming
+was simply "camel casing", sometimes it required rewording. The mapping
+file for these name changes is in m4_path(dist/camel.pm). The Perl script
+we use to convert code to the new names is called
+m4_path(dist/camelize.pl), and may help with updating Java applications
+written for earlier versions of m4_db.])
+
+m4_p([dnl
+m4_db has a number of places where as a C library it uses function pointers
+to move into custom code for the purpose of notification of some event. In
+Java the best parallel is the registration of some class which implements
+an interface. In this version of m4_db we have made an effort to make those
+interfaces more uniform and predictable. Specifically, DbEnvFeedback is now
+DbEnvFeedbackHandler, DbErrcall is DbErrorHandler and DbFeedback is
+DbFeedbackHandler. In every case we have kept the older interfaces and the
+older registration methods so as to allow for backward compatibility in this
+release. Expect them to be removed in future releases.])
+
+m4_p([dnl
+As you upgrade to this release of m4_db you will notice that we have
+added an entirely new layer inside the package com.sleepycat.bdb. This
+was formerly the Greybird project by Mark Hayes. Sleepycat Software and
+Mark worked together to incorporate his work. We have done this in
+hopes of reducing the learning curve when using m4_db in a Java project.
+When you upgrade you should consider switching to this layer as over
+time the historical classes and the new bdb package classes will be more
+and more integrated providing a simple yet powerful interface from Java
+into the m4_db library.])
+
+m4_p([dnl
+m4_db's Java API is now generated with m4_linkweb(http://www.swig.org, SWIG).
+The new Java API is significantly faster for many operations.])
+
+m4_p([dnl
+Some internal methods and constructors that were previously public have
+been hidden or removed.])
+
+m4_p([Packages found under com.sleepycat are considered different APIs into
+the m4_db system. These include the core db api (com.sleepycat.db), the
+collections style access layer (com.sleepycat.bdb) and the now relocated XA
+system (com.sleepycat.xa).])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.2/lockng.so b/db/docs_src/ref/upgrade.4.2/lockng.so
new file mode 100644
index 000000000..64f5a9b5c
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.2/lockng.so
@@ -0,0 +1,45 @@
+m4_comment([$Id: lockng.so,v 1.6 2004/09/28 14:13:09 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.2: DB_LOCK_NOTGRANTED,,
+ upgrade.4.2/verify, upgrade.4.2/repinit)
+
+m4_p([dnl
+In previous releases, configuring lock or transaction timeout values or
+calling the m4_refT(txn_begin) with the m4_ref(DB_TXN_NOWAIT) flag
+caused database operation methods to return m4_ref(DB_LOCK_NOTGRANTED),
+or throw a m4_refcxx(DbLockNotGrantedException) exception. This
+required applications to unnecessarily handle multiple errors or
+exception types.])
+
+m4_p([dnl
+In the m4_db 4.2 release, with one exception, database operations will
+no longer return m4_ref(DB_LOCK_NOTGRANTED) or throw a
+m4_refcxx(DbLockNotGrantedException) exception. Instead, database
+operations will return m4_ref(DB_LOCK_DEADLOCK) or throw a
+m4_refcxx(DbDeadlockException) exception. This change should require
+no application changes, as applications must already be dealing with the
+possible m4_ref(DB_LOCK_DEADLOCK) error return or
+m4_refcxx(DbDeadlockException) exception from database operations.])
+
+m4_p([dnl
+The one exception to this rule is the m4_ref(dbh_get) method using the
+m4_ref(DB_CONSUME_WAIT) flag to consume records from a Queue. If lock
+or transaction timeouts are set, this method and flag combination may
+return m4_ref(DB_LOCK_NOTGRANTED) or throw a
+m4_refcxx(DbLockNotGrantedException) exception.])
+
+m4_p([dnl
+Applications wanting to distinguish between true deadlocks and timeouts
+can configure database operation methods to return
+m4_ref(DB_LOCK_NOTGRANTED) or throw a
+m4_refcxx(DbLockNotGrantedException) exception using the
+m4_ref(DB_TIME_NOTGRANTED) flag.])
+
+m4_p([dnl
+The m4_ref(lock_get) and m4_refT(lock_vec)s will continue to return
+m4_ref(DB_LOCK_NOTGRANTED), or throw a
+m4_refcxx(DbLockNotGrantedException) exception as they have previously
+done.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.2/nosync.so b/db/docs_src/ref/upgrade.4.2/nosync.so
new file mode 100644
index 000000000..432a3c517
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.2/nosync.so
@@ -0,0 +1,23 @@
+m4_comment([$Id: nosync.so,v 1.7 2004/09/28 14:13:09 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.2: Client replication environments,,
+ upgrade.4.2/repinit, upgrade.4.2/tcl)
+
+m4_p([dnl
+In previous m4_db releases, replication clients always behaved as if
+m4_ref(DB_TXN_NOSYNC) behavior was configured, that is, clients would
+not write or synchronously flush their log when receiving a transaction
+commit or prepare message. However, applications needing a high level
+of transactional guarantee may need a write and synchronous flush on
+the client. By default in the m4_db 4.2 release, client database
+environments write and synchronously flush their logs when receiving a
+transaction commit or prepare message. Applications not needing such
+a high level of transactional guarantee should use the environment's
+m4_ref(DB_TXN_NOSYNC) flag to configure their client database
+environments to not do the write or flush on transaction commit, as this
+will increase their performance. Regardless of the setting of the
+m4_ref(DB_TXN_NOSYNC) flag, clients will always write and flush on
+transaction prepare.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.2/priority.so b/db/docs_src/ref/upgrade.4.2/priority.so
new file mode 100644
index 000000000..354ca843e
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.2/priority.so
@@ -0,0 +1,17 @@
+m4_comment([$Id: priority.so,v 1.2 2004/09/28 14:13:09 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.2: DB-__GT__set_cache_priority,,
+ upgrade.4.2/del, upgrade.4.2/verify)
+
+m4_p([dnl
+In previous releases, applications set the priority of a database's
+pages in the m4_db buffer cache with the DB-__GT__set_cache_priority
+method. This method is no longer available. Applications wanting to
+set database page priorities in the buffer cache should use the
+m4_refT(memp_set_priority) instead. The new call takes the same
+arguments and behaves identically to the old call, except that a
+m4_ref(DbMpoolFile) buffer cache file handle is used instead of the
+m4_ref(Db) database handle.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.2/queue.so b/db/docs_src/ref/upgrade.4.2/queue.so
new file mode 100644
index 000000000..38fbb4208
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.2/queue.so
@@ -0,0 +1,28 @@
+m4_comment([$Id: queue.so,v 1.4 2004/09/28 14:13:09 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.2: Queue access method,,
+ upgrade.4.2/java, upgrade.4.2/cksum)
+
+m4_p([dnl
+We have discovered a problem where applications that specify m4_db's
+encryption or data checksum features on Queue databases with extent
+files, the database data will not be protected. This is obviously a
+security problem, and we encourage you to upgrade these applications to
+the 4.2 release as soon as possible.])
+
+m4_p([dnl
+The Queue databases must be dumped and reloaded in order to fix this
+problem. First build the m4_db 4.2 release, then use your previous
+release to dump the database, and the 4.2 release to reload the
+database. For example:])
+
+m4_indent([dnl
+db-4.1.25/db_dump [-P password] -k database | db-4.2.xx/db_load [-P password] new_database])
+
+m4_p([dnl
+Note this is m4_bold(only) necessary for Queue access method databases,
+where extent files were configured along with either encryption or
+checksums.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.2/repinit.so b/db/docs_src/ref/upgrade.4.2/repinit.so
new file mode 100644
index 000000000..ede6d98f8
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.2/repinit.so
@@ -0,0 +1,37 @@
+m4_comment([$Id: repinit.so,v 1.11 2004/09/28 14:13:09 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.2: Replication,,
+ upgrade.4.2/lockng, upgrade.4.2/nosync)
+
+m4_section(Replication initialization)
+m4_p([dnl
+In the m4_db 4.2 release, replication environments must be specifically
+initialized by any process that will ever do anything other than open
+databases in read-only mode (that is, any process which might call any
+of the m4_db replication interfaces or modify databases). This
+initialization is done when the replication database environment handle
+is opened, by specifying the m4_ref(DB_INIT_REP) flag to the
+m4_refT(dbenv_open).])
+
+m4_section(Database methods and replication clients)
+m4_p([dnl
+All of the m4_ref(Db) object methods may now return
+m4_ref(DB_REP_HANDLE_DEAD) when a replication client changes masters.
+When this happens the m4_ref(Db) handle is no longer able to be used and
+the application must close the handle using the m4_refT(dbh_close) and
+open a new handle. This new return value is returned when a client
+unrolls a transaction in order to synchronize with the new master.
+Otherwise, if the application was permitted to use the original handle,
+it's possible the handle might attempt to access nonexistent resources.])
+
+m4_section(m4_ref(rep_message))
+m4_p([dnl
+The m4_refT(rep_message) has new return values and an log sequence
+number (LSN) associated with those return values. The new argument is
+m4_arg(ret_lsnp), which is the returned LSN when the
+m4_refT(rep_message) returns m4_ref(DB_REP_ISPERM) or
+m4_ref(DB_REP_NOTPERM). See m4_link(M4RELDIR/ref/rep/trans,
+Transactional guarantees) for more information.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.2/tcl.so b/db/docs_src/ref/upgrade.4.2/tcl.so
new file mode 100644
index 000000000..12aa3a9d6
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.2/tcl.so
@@ -0,0 +1,11 @@
+m4_comment([$Id: tcl.so,v 1.2 2003/05/09 20:01:41 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.2: Tcl API,,
+ upgrade.4.2/nosync, upgrade.4.2/disk)
+
+m4_p([dnl
+The Tcl API included in the m4_db 4.2 release requires Tcl release 8.4
+or later.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.2/toc.so b/db/docs_src/ref/upgrade.4.2/toc.so
new file mode 100644
index 000000000..981dd9e85
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.2/toc.so
@@ -0,0 +1,23 @@
+m4_comment([$Id: toc.so,v 1.16 2006/11/13 18:05:04 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Upgrading m4_db 4.1 applications to m4_db 4.2,
+ Upgrading to release 4.2,,)
+
+m4_nlistbegin
+m4_nlistns([m4_link(intro, [Release 4.2: introduction])])
+m4_nlistns([m4_link(java, [Release 4.2: Java])])
+m4_nlistns([m4_link(queue, [Release 4.2: Queue access method])])
+m4_nlistns([m4_link(cksum, [Release 4.2: DB_CHKSUM_SHA1])])
+m4_nlistns([m4_link(client, [Release 4.2: DB_CLIENT])])
+m4_nlistns([m4_link(del, [Release 4.2: DB-__GT__del])])
+m4_nlistns([m4_link(priority, [Release 4.2: DB-__GT__set_cache_priority])])
+m4_nlistns([m4_link(verify, [Release 4.2: DB-__GT__verify])])
+m4_nlistns([m4_link(lockng, [Release 4.2: DB_LOCK_NOTGRANTED])])
+m4_nlistns([m4_link(repinit, [Release 4.2: Replication])])
+m4_nlistns([m4_link(nosync, [Release 4.2: Client replication environments])])
+m4_nlistns([m4_link(tcl, [Release 4.2: Tcl API])])
+m4_nlistns([m4_link(disk, [Release 4.2: upgrade requirements])])
+m4_nlistend
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.2/verify.so b/db/docs_src/ref/upgrade.4.2/verify.so
new file mode 100644
index 000000000..34349e187
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.2/verify.so
@@ -0,0 +1,22 @@
+m4_comment([$Id: verify.so,v 1.5 2004/09/28 14:13:09 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.2: DB-__GT__verify,,
+ upgrade.4.2/priority, upgrade.4.2/lockng)
+
+m4_p([dnl
+In previous releases, applications calling the m4_refT(dbh_verify) had
+to explicitly discard the m4_ref(Db) handle by calling the
+m4_refT(dbh_close). Further, using the m4_ref(Db) handle in other ways
+after calling the m4_refT(dbh_verify) was not prohibited by the
+documentation, although such use was likely to lead to problems.])
+
+m4_p([dnl
+For consistency with other m4_db methods, m4_refT(dbh_verify) has been
+documented in the current release as a m4_ref(Db) handle destructor.
+Applications using the m4_ref(Db) handle in any way (including calling
+the m4_refT(dbh_close)) after calling m4_ref(dbh_verify) should be
+updated to make no further use of any kind of the m4_ref(Db) handle
+after m4_ref(dbh_verify) returns.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.3/cput.so b/db/docs_src/ref/upgrade.4.3/cput.so
new file mode 100644
index 000000000..62a0533bb
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.3/cput.so
@@ -0,0 +1,13 @@
+m4_comment([$Id: cput.so,v 1.3 2004/09/28 14:13:09 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.3: DBcursor-__GT__c_put,,
+ upgrade.4.3/err, upgrade.4.3/stat)
+
+m4_p([dnl
+The 4.3 release disallows the m4_ref(DB_CURRENT) flag to the m4_refT(dbc_put)
+after the current item referenced by the cursor has been deleted. Applications
+using this sequence of operations should be changed to do the put without first
+deleting the item.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.3/disk.so b/db/docs_src/ref/upgrade.4.3/disk.so
new file mode 100644
index 000000000..f72253111
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.3/disk.so
@@ -0,0 +1,15 @@
+m4_comment([$Id: disk.so,v 1.6 2004/12/16 19:13:03 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.3: upgrade requirements,,
+ upgrade.4.3/rtc, upgrade.4.4/intro)
+
+m4_p([dnl
+The log file format changed in the m4_db 4.3 release. No database
+formats changed in the m4_db 4.3 release.])
+
+m4_p([dnl
+For further information on upgrading m4_db installations, see
+m4_link(M4RELDIR/ref/upgrade/process, Upgrading m4_db installations).])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.3/enomem.so b/db/docs_src/ref/upgrade.4.3/enomem.so
new file mode 100644
index 000000000..8eb50bba9
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.3/enomem.so
@@ -0,0 +1,38 @@
+m4_comment([$Id: enomem.so,v 1.2 2004/09/28 14:13:09 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.3: ENOMEM and DbMemoryException,,
+ upgrade.4.3/fileopen, upgrade.4.3/repl)
+
+m4_p([dnl
+In versions of m4_db before 4.3, the error m4_bold(ENOMEM) was used to
+indicate that the buffer in a m4_ref(Dbt) configured with
+m4_ref(DB_DBT_USERMEM) was too small to hold a key or data item being
+retrieved. The 4.3 release adds a new error, m4_ref(DB_BUFFER_SMALL),
+that is returned in this case.])
+
+m4_p([dnl
+The reason for the change is that the use of m4_bold(ENOMEM) was
+ambiguous: calls such as m4_ref(dbh_get) or m4_ref(dbc_get) could return
+m4_bold(ENOMEM) either if a m4_ref(Dbt) was too small or if some resource
+was exhausted.])
+
+m4_p([dnl
+The result is that starting with the 4.3 release, C applications should
+always treat m4_bold(ENOMEM) as a fatal error. Code that checked for
+the m4_bold(ENOMEM) return and allocated a new buffer should be changed
+to check for m4_ref(DB_BUFFER_SMALL).])
+
+m4_p([dnl
+In C++ applications configured for exceptions, a
+m4_refcxx(DbMemoryException) will continue to be thrown in both cases,
+and applications should check the errno in the exception to determine
+which error occurred.])
+
+m4_p([dnl
+In Java applications, a m4_bold(DbMemoryException) will be thrown
+when a m4_bold(Dbt) is too small to hold a return value, and an
+m4_bold(OutOfMemoryError) will be thrown in all cases of resource
+exhaustion.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.3/err.so b/db/docs_src/ref/upgrade.4.3/err.so
new file mode 100644
index 000000000..98bd1d1ef
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.3/err.so
@@ -0,0 +1,28 @@
+m4_comment([$Id: err.so,v 1.3 2004/09/28 14:13:09 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ [Release 4.3: DB_ENV-__GT__set_errcall, DB-__GT__set_errcall],,
+ upgrade.4.3/java, upgrade.4.3/cput)
+
+m4_p([dnl
+The signature of the error callback passed to the
+m4_ref(dbenv_set_errcall) and m4_refT(dbh_set_errcall)s has changed in
+the 4.3 release. For example, if you previously had a function such as
+this:])
+
+m4_indent([dnl
+void handle_db_error(const char *prefix, char *message);])
+
+m4_p([dnl
+it should be changed to this:])
+
+m4_indent([dnl
+void handle_db_error(const DB_ENV *dbenv,
+ const char *prefix, const char *message);])
+
+m4_p([dnl
+This change adds the m4_ref(DbEnv) handle to provide database
+environment context for the callback function, and incidentally makes
+it clear the message parameter cannot be changed by the callback.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.3/fileopen.so b/db/docs_src/ref/upgrade.4.3/fileopen.so
new file mode 100644
index 000000000..f5888fc6f
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.3/fileopen.so
@@ -0,0 +1,11 @@
+m4_comment([$Id: fileopen.so,v 1.6 2004/09/28 14:13:09 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.3: DB_FILEOPEN,,
+ upgrade.4.3/log, upgrade.4.3/enomem)
+
+m4_p([dnl
+The 4.3 release removes the DB_FILEOPEN error return. Any application
+check for the DB_FILEOPEN error should be removed.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.3/intro.so b/db/docs_src/ref/upgrade.4.3/intro.so
new file mode 100644
index 000000000..132075ab3
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.3/intro.so
@@ -0,0 +1,13 @@
+m4_comment([$Id: intro.so,v 1.6 2004/09/28 14:13:09 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.3: introduction,,
+ upgrade.4.2/disk, upgrade.4.3/java)
+
+m4_p([dnl
+The following pages describe how to upgrade applications coded against
+the m4_db 4.2 release interfaces to the m4_db 4.3 release interfaces.
+This information does not describe how to upgrade m4_db 1.85 release
+applications.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.3/java.so b/db/docs_src/ref/upgrade.4.3/java.so
new file mode 100644
index 000000000..37839b768
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.3/java.so
@@ -0,0 +1,72 @@
+m4_comment([$Id: java.so,v 1.3 2006/09/18 14:45:52 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.3: Java,,
+ upgrade.4.3/intro, upgrade.4.3/err)
+
+m4_p([dnl
+The m4_db Java API has changed significantly in the 4.3 release, in ways
+incompatible with previous releases. This has been done to provide a
+consistent Java-like API for m4_db as well as to make the m4_db Java API
+match the API in m4_db Java Edition, to ease application-porting between
+the two libraries.])
+
+m4_p([dnl
+Here is a summary of the major changes:])
+
+m4_nlistbegin
+
+m4_nlist([dnl
+The low-level wrapper around the C API has been moved into a package
+called com.sleepycat.db.internal.])
+
+m4_nlist([dnl
+There is a new public API in the package com.sleepycat.db.])
+
+m4_nlist([dnl
+All flags and error numbers have been eliminated from the public API.
+All configuration is done through method calls on configuration objects.])
+
+m4_nlist([dnl
+All classes and methods are named to Java standards, matching m4_db Java
+Edition. For example:])
+
+m4_indent([dnl
+m4_bulletbegin
+m4_bullet([Db -__GT__ Database])
+m4_bullet([Dbc -__GT__ Cursor])
+m4_bullet([Dbt -__GT__ DatabaseEntry])
+m4_bullet([DbEnv -__GT__ Environment])
+m4_bullet([DbTxn -__GT__ Transaction])
+m4_bullet([Db.cursor -__GT__ Database.openCursor])
+m4_bullet([Dbc.get(..., DbConstants.DB_CURRENT) -__GT__ Cursor.getCurrent(...)])
+m4_bulletend])
+
+m4_nlist([dnl
+The statistics classes have "getter" methods for all fields.])
+
+m4_nlist([dnl
+In transactional applications, the Java API infers whether to
+auto-commit operations: if an update is performed on a transactional
+database without supplying a transaction, it is implicitly
+auto-committed.])
+
+m4_nlist([dnl
+The com.sleepycat.bdb.* packages have been reorganized so that the binding
+classes can be used with the base API in the com.sleepycat.db package. The
+bind and collection classes are now essentially the same in m4_db and m4_db
+Java Edition. The former com.sleepycat.bdb.bind.* packages are now the
+com.sleepycat.bind.* packages. The former com.sleepycat.bdb,
+com.sleepycat.bdb.collections, and com.sleepycat.bdb.factory packages are now
+combined in the new com.sleepycat.collections package.])
+
+m4_nlist([dnl
+A layer of the former collections API has been removed to simplify the API and
+to remove the redundant implementation of secondary indices. The former
+DataStore, DataIndex, and ForeignKeyIndex classes have been removed. Instead
+of wrapping a Database in a DataStore or DataIndex, the Database object is now
+passed directly to the constructor of a StoredMap, StoredList, etc.])
+
+m4_nlistend
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.3/log.so b/db/docs_src/ref/upgrade.4.3/log.so
new file mode 100644
index 000000000..7a18583c4
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.3/log.so
@@ -0,0 +1,24 @@
+m4_comment([$Id: log.so,v 1.2 2004/09/28 14:13:09 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.3: Logging,,
+ upgrade.4.3/verb, upgrade.4.3/fileopen)
+
+m4_p([dnl
+In previous releases, the m4_refT(dbenv_set_flags) flag
+DB_TXN_NOT_DURABLE specified that transactions for the entire database
+environment were not durable. However, it was not possible to set this
+flag in environments that were part of replication groups, and physical
+log files were still created. The 4.3 release adds support for true
+in-memory logging for both replication and non-replicated sites.])
+
+m4_p([dnl
+Existing applications setting the DB_TXN_NOT_DURABLE flag for database
+environments should be upgraded to set the m4_ref(DB_LOG_INMEMORY) flag
+instead.])
+
+m4_p([dnl
+In previous releases, log buffer sizes were restricted to be less than
+or equal to the log file size; this restriction is no longer required.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.3/repl.so b/db/docs_src/ref/upgrade.4.3/repl.so
new file mode 100644
index 000000000..0d1f410f3
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.3/repl.so
@@ -0,0 +1,29 @@
+m4_comment([$Id: repl.so,v 1.10 2005/10/19 19:11:22 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.3: Replication,,
+ upgrade.4.3/enomem, upgrade.4.3/rtc)
+
+m4_p([dnl
+The 4.3 release removes support for logs-only replication clients. Use
+of the DB_REP_LOGSONLY flag to the m4_ref(rep_start) should be replaced
+with the m4_ref(DB_REP_CLIENT) flag.])
+
+m4_p([dnl
+The 4.3 release adds two new arguments to the m4_refT(rep_elect),
+m4_arg(nvotes) and m4_arg(flags). The m4_arg(nvotes) argument sets the
+required number of replication group members that must participate in
+an election in order for a master to be declared. For backward
+compatibility, set the m4_arg(nvotes) argument to 0. The flags argument
+is currently unused and should be set to 0. See m4_refT(rep_elect) or
+"Replication Elections" for more information.])
+
+m4_p([dnl
+In the 4.3 release it is no longer necessary to do a database
+environment hot backup to initialize a replication client. All that is
+needed now is for the client to join the replication group. m4_db will
+perform an internal backup from the master to the client automatically
+and will run recovery on the client to bring it up to date with the
+master.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.3/rtc.so b/db/docs_src/ref/upgrade.4.3/rtc.so
new file mode 100644
index 000000000..0541dc9d6
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.3/rtc.so
@@ -0,0 +1,12 @@
+m4_comment([$Id: rtc.so,v 1.2 2004/09/28 14:13:10 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.3: Run-time configuration,,
+ upgrade.4.3/repl, upgrade.4.3/disk)
+
+m4_p([dnl
+The signatures of the m4_ref(dbenv_set_func_ftruncate) and
+m4_ref(dbenv_set_func_seek) functions have been simplified to take a byte
+offset in one parameter rather than a page size and a page number.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.3/stat.so b/db/docs_src/ref/upgrade.4.3/stat.so
new file mode 100644
index 000000000..84e980b47
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.3/stat.so
@@ -0,0 +1,15 @@
+m4_comment([$Id: stat.so,v 1.4 2006/09/20 16:04:05 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.3: DB-__GT__stat,,
+ upgrade.4.3/cput, upgrade.4.3/verb)
+
+m4_p([dnl
+The 4.3 release adds transactional support to the m4_refT(dbh_stat).])
+
+m4_p([dnl
+Application writers can simply add a NULL m4_arg(txnid) argument to the
+m4_refT(dbh_stat) calls in their application to leave the application's
+behavior unchanged.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.3/toc.so b/db/docs_src/ref/upgrade.4.3/toc.so
new file mode 100644
index 000000000..618bbaa72
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.3/toc.so
@@ -0,0 +1,23 @@
+m4_comment([$Id: toc.so,v 1.15 2006/11/13 18:05:04 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Upgrading m4_db 4.2 applications to m4_db 4.3,
+ Upgrading to release 4.3,,)
+
+m4_nlistbegin
+m4_nlistns([m4_link(intro, [Release 4.3: introduction])])
+m4_nlistns([m4_link(java, [Release 4.3: Java])])
+m4_nlistns([m4_link(err,
+ [Release 4.3: DB_ENV-__GT__set_errcall, DB-__GT__set_errcall])])
+m4_nlistns([m4_link(cput, [Release 4.3: DBcursor-__GT__c_put])])
+m4_nlistns([m4_link(stat, [Release 4.3: DB-__GT__stat])])
+m4_nlistns([m4_link(verb, [Release 4.3: DB_ENV-__GT__set_verbose])])
+m4_nlistns([m4_link(log, [Release 4.3: Logging])])
+m4_nlistns([m4_link(fileopen, [Release 4.3: DB_FILEOPEN])])
+m4_nlistns([m4_link(enomem, [Release 4.3: ENOMEM and DbMemoryException])])
+m4_nlistns([m4_link(repl, [Release 4.3: Replication])])
+m4_nlistns([m4_link(rtc, [Release 4.3: Run-time configuration])])
+m4_nlistns([m4_link(disk, [Release 4.3: upgrade requirements])])
+m4_nlistend
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.3/verb.so b/db/docs_src/ref/upgrade.4.3/verb.so
new file mode 100644
index 000000000..323444681
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.3/verb.so
@@ -0,0 +1,22 @@
+m4_comment([$Id: verb.so,v 1.8 2004/09/28 14:13:10 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.3: DB_ENV-__GT__set_verbose,,
+ upgrade.4.3/stat, upgrade.4.3/log)
+
+m4_p([dnl
+The 4.3 release removes support for the m4_refT(dbenv_set_verbose) flag
+DB_VERB_CHKPOINT. Application writers should simply remove any use of
+this flag from their applications.])
+
+m4_p([dnl
+The 4.3 release redirects output configured by the m4_refT(dbenv_set_verbose)
+from the error output channels (see the m4_ref(dbenv_set_errfile) and
+m4_refT(dbenv_set_errcall)s for more information) to the new
+m4_ref(dbenv_set_msgcall) and m4_ref(dbenv_set_msgfile) message output
+channels. This change means the error output channels are now only used
+for errors, and not for debugging and performance tuning messages as
+well as errors. Application writers using m4_ref(dbenv_set_verbose)
+should confirm that output is handled appropriately.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.4/autocommit.so b/db/docs_src/ref/upgrade.4.4/autocommit.so
new file mode 100644
index 000000000..ce8f4e080
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.4/autocommit.so
@@ -0,0 +1,34 @@
+m4_comment([$Id: autocommit.so,v 1.3 2005/02/10 20:02:42 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.4: DB_AUTO_COMMIT,,
+ upgrade.4.4/intro, upgrade.4.4/isolation)
+
+m4_p([dnl
+In previous m4_db releases, the m4_ref(DB_AUTO_COMMIT) flag was used in
+the C and C++ m4_db APIs to wrap operations within a transaction without
+explicitly creating a transaction and passing the m4_ref(DbTxn) handle
+as part of the operation method call. In the 4.4 release, the
+m4_ref(DB_AUTO_COMMIT) flag no longer needs to be explicitly specified.])
+
+m4_p([dnl
+In the 4.4 release, specifying the m4_ref(DB_AUTO_COMMIT) flag to the
+m4_refT(dbenv_set_flags) causes all database modifications in that
+environment to be transactional; specifying m4_ref(DB_AUTO_COMMIT) to
+the m4_refT(dbh_open) causes all modifications to that database to be
+transactional; specifying m4_ref(DB_AUTO_COMMIT) to the
+m4_ref(dbenv_dbremove) and m4_refT(dbenv_dbrename)s causes those
+specific operations to be transactional.])
+
+m4_p([dnl
+No related application changes are required for this release, as the
+m4_ref(DB_AUTO_COMMIT) flag is ignored where it is no longer needed.
+However, application writers are encouraged to remove uses of the
+m4_ref(DB_AUTO_COMMIT) flag in places where it is no longer needed.])
+
+m4_p([dnl
+Similar changes have been made to the m4_db Tcl API. These changes are
+not optional, and Tcl applications will need to remove the -auto_commit
+flag from methods where it is no longer needed.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.4/clear.so b/db/docs_src/ref/upgrade.4.4/clear.so
new file mode 100644
index 000000000..4042f0f40
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.4/clear.so
@@ -0,0 +1,21 @@
+m4_comment([$Id: clear.so,v 1.2 2005/12/13 16:47:06 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.4: DB_MPOOLFILE-__GT__set_clear_len,,
+ upgrade.4.4/mutex, upgrade.4.4/lockstat)
+
+m4_p([dnl
+The meaning of a 0 "clear length" argument to the
+m4_refT(memp_set_clear_len) changed in the m4_db 4.4 release. In
+previous releases, specifying a length of 0 was equivalent to the
+default, and the entire created page was cleared. Unfortunately, this
+left no way to specify that no part of the page needed to be cleared.
+In the 4.4 release, specifying a "clear length" argument of 0 means that
+no part of the page need be cleared.])
+
+m4_p([dnl
+Applications specifying a 0 "clear length" argument to the
+m4_refT(memp_set_clear_len) should simply remove the call, as the
+default behavior is to clear the entire created page.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.4/disk.so b/db/docs_src/ref/upgrade.4.4/disk.so
new file mode 100644
index 000000000..eba4f016e
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.4/disk.so
@@ -0,0 +1,15 @@
+m4_comment([$Id: disk.so,v 1.3 2005/12/08 13:41:56 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.4: upgrade requirements,,
+ upgrade.4.4/lockstat, upgrade.4.5/intro)
+
+m4_p([dnl
+The log file format changed in the m4_db 4.4 release. No database
+formats changed in the m4_db 4.4 release.])
+
+m4_p([dnl
+For further information on upgrading m4_db installations, see
+m4_link(M4RELDIR/ref/upgrade/process, Upgrading m4_db installations).])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.4/intro.so b/db/docs_src/ref/upgrade.4.4/intro.so
new file mode 100644
index 000000000..61ff1a013
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.4/intro.so
@@ -0,0 +1,13 @@
+m4_comment([$Id: intro.so,v 1.1 2004/12/16 19:13:03 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.4: introduction,,
+ upgrade.4.3/disk, upgrade.4.4/autocommit)
+
+m4_p([dnl
+The following pages describe how to upgrade applications coded against
+the m4_db 4.3 release interfaces to the m4_db 4.4 release interfaces.
+This information does not describe how to upgrade m4_db 1.85 release
+applications.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.4/isolation.so b/db/docs_src/ref/upgrade.4.4/isolation.so
new file mode 100644
index 000000000..24fe4d4ee
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.4/isolation.so
@@ -0,0 +1,15 @@
+m4_comment([$Id: isolation.so,v 1.4 2005/10/20 16:14:24 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ [Release 4.4: DB_DEGREE_2, DB_DIRTY_READ],,
+ upgrade.4.4/autocommit, upgrade.4.4/joinenv)
+
+m4_p([dnl
+The names of two isolation-level flags changed in the m4_db 4.4 release.
+The DB_DEGREE_2 flag was renamed to m4_ref(DB_READ_COMMITTED), and the
+DB_DIRTY_READ flag was renamed to m4_ref(DB_READ_UNCOMMITTED), to match
+ANSI standard names for isolation levels. The historic flag names
+continue to work in this release, but may be removed from future
+releases.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.4/joinenv.so b/db/docs_src/ref/upgrade.4.4/joinenv.so
new file mode 100644
index 000000000..802ef3cf8
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.4/joinenv.so
@@ -0,0 +1,59 @@
+m4_comment([$Id: joinenv.so,v 1.1 2005/09/09 12:40:34 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ [Release 4.4: DB_JOINENV],,
+ upgrade.4.4/isolation, upgrade.4.4/mutex)
+
+m4_p([dnl
+The semantics of joining existing m4_db database environments has changed
+in the 4.4 release. Previously:])
+
+m4_nlistbegin
+m4_nlist([dnl
+Applications joining existing environments, but not configuring some of
+the subsystems configured in the environment when it was created, would
+not be configured for those subsystems.])
+m4_nlist([dnl
+Applications joining existing environments, but configuring additional
+subsystems in addition to the subsystems configured in the environment
+when it was created, would cause additional subsystems to be configured
+in the database environment.])
+m4_nlistend
+
+m4_p([dnl
+In the 4.4 release, the semantics have been simplified to make it easier
+to write robust applications. In the 4.4 release:])
+
+m4_nlistbegin
+m4_nlist([dnl
+Applications joining existing environments, but not configuring some of
+the subsystems configured in the environment when it was created, will
+now automatically be configured for all of the subsystems configured in
+the environment.])
+m4_nlist([dnl
+Applications joining existing environments, but configuring additional
+subsystems in addition to the subsystems configured in the environment
+when it was created, will fail, as no additional subsystems can be
+configured for a database environment after it is created.])
+m4_nlistend
+
+m4_p([dnl
+In other words, the choice of subsystems initialized for a m4_db
+database environment is specified by the thread of control initially
+creating the environment. Any subsequent thread of control joining the
+environment will automatically be configured to use the same subsystems
+as were created in the environment (unless the thread of control
+requests a subsystem not available in the environment, which will fail).
+Applications joining an environment, able to adapt to whatever
+subsystems have been configured in the environment, should open the
+environment without specifying any subsystem flags. Applications
+joining an environment, requiring specific subsystems from their
+environments, should open the environment specifying those specific
+subsystem flags.])
+
+m4_p([dnl
+The DB_JOINENV flag has been changed to have no effect in the m4_db 4.4
+release. Applications should require no changes, although uses of the
+DB_JOINENV flag may be removed.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.4/lockstat.so b/db/docs_src/ref/upgrade.4.4/lockstat.so
new file mode 100644
index 000000000..a34d7b3d5
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.4/lockstat.so
@@ -0,0 +1,15 @@
+m4_comment([$Id: lockstat.so,v 1.4 2005/11/08 02:45:19 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.4: lock statistics,,
+ upgrade.4.4/clear, upgrade.4.4/disk)
+
+m4_p([dnl
+The names of two fields in the lock statistics changed in the m4_db 4.4
+release. The m4_arg(st_nconflicts) field was renamed to be
+m4_arg(st_lock_wait), and the m4_arg(st_nnowaits) field was renamed to
+be m4_arg(st_lock_nowait). The meaning of the fields is unchanged
+(although the documentation has been updated to make it clear what these
+fields really represent).])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.4/mutex.so b/db/docs_src/ref/upgrade.4.4/mutex.so
new file mode 100644
index 000000000..1f6554234
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.4/mutex.so
@@ -0,0 +1,23 @@
+m4_comment([$Id: mutex.so,v 1.3 2005/11/08 02:45:20 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.4: mutexes,,
+ upgrade.4.4/joinenv, upgrade.4.4/clear)
+
+m4_p([dnl
+The DB_ENV__GT__set_tas_spins and DB_ENV__GT__get_tas_spins methods have
+been renamed to m4_ref(mutex_set_tas_spins) and
+m4_ref(mutex_get_tas_spins) to match the new mutex support in the m4_db
+4.4 release. Applications calling the old methods should be updated to
+use the new method names.])
+
+m4_p([dnl
+For backward compatibility, the string "set_tas_spins" is still supported
+in DB_CONFIG files.])
+
+m4_p([dnl
+The --with-mutexalign=ALIGNMENT compile-time configuration option has
+been removed from m4_db configuration. Mutex alignment should now be
+configured at run-time, using the m4_refT(mutex_set_align).])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.4/toc.so b/db/docs_src/ref/upgrade.4.4/toc.so
new file mode 100644
index 000000000..daa5bbff0
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.4/toc.so
@@ -0,0 +1,18 @@
+m4_comment([$Id: toc.so,v 1.7 2006/10/02 15:56:39 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Upgrading m4_db 4.3 applications to m4_db 4.4,
+ Upgrading to release 4.4,,)
+
+m4_nlistbegin
+m4_nlistns([m4_link(intro, [Release 4.4: introduction])])
+m4_nlistns([m4_link(autocommit, [Release 4.4: DB_AUTO_COMMIT])])
+m4_nlistns([m4_link(isolation, [Release 4.4: DB_DEGREE_2, DB_DIRTY_READ])])
+m4_nlistns([m4_link(joinenv, [Release 4.4: DB_JOINENV])])
+m4_nlistns([m4_link(mutex, [Release 4.4: mutexes])])
+m4_nlistns([m4_link(clear, [Release 4.4: DB_MPOOLFILE-__GT__set_clear_len])])
+m4_nlistns([m4_link(lockstat, [Release 4.4: lock statistics])])
+m4_nlistns([m4_link(disk, [Release 4.4: upgrade requirements])])
+m4_nlistend
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.5/alive.so b/db/docs_src/ref/upgrade.4.5/alive.so
new file mode 100644
index 000000000..cdc11204f
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.5/alive.so
@@ -0,0 +1,19 @@
+m4_comment([$Id: alive.so,v 1.2 2006/03/15 19:39:19 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.5: DB-__GT__set_isalive,,
+ upgrade.4.5/deprecate, upgrade.4.5/elect)
+
+m4_p([dnl
+In previous releases, the function specified to the
+m4_refT(dbenv_set_isalive) did not take a flags parameter. In the m4_db
+4.5 release, an additional flags argument has been added:
+m4_ref(DB_MUTEX_PROCESS_ONLY).])
+
+m4_p([dnl
+Applications configuring an is-alive function should add a flags
+argument to the function, and change the function to ignore any thread
+ID and return the status of just the process, when the
+m4_ref(DB_MUTEX_PROCESS_ONLY) flag is specified.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.5/applog.so b/db/docs_src/ref/upgrade.4.5/applog.so
new file mode 100644
index 000000000..ac4a8ccd3
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.5/applog.so
@@ -0,0 +1,25 @@
+m4_comment([$Id: applog.so,v 1.1 2006/09/13 16:43:03 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.5: Application-specific logging,,
+ upgrade.4.5/source, upgrade.4.5/disk)
+
+m4_p([dnl
+In previous releases of m4_db, "BEGIN" lines in the XXX.src files used
+to build application-specific logging support only required a log record
+number. In the 4.5 release, those lines require a m4_db library version
+as well. For example, the entry:])
+
+m4_indent([BEGIN mdkir 10000])
+
+m4_p([must now be:])
+
+m4_indent([BEGIN mdkir 44 10000])
+
+m4_p([dnl
+that is, the version of the m4_db release where the log record was
+introduced must be included. The version is the major and minor numbers
+for the m4_db library, with all punctuation removed. For example, m4_db
+version 4.2 should be 42, version 4.5 should be 45.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.5/collect.so b/db/docs_src/ref/upgrade.4.5/collect.so
new file mode 100644
index 000000000..8dc5ac3f0
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.5/collect.so
@@ -0,0 +1,18 @@
+m4_comment([$Id: collect.so,v 1.1 2006/06/05 17:32:22 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.5: Collections API,,
+ upgrade.4.5/pagesize, upgrade.4.5/config)
+
+m4_p([dnl
+The changes to the Collections API are compatible with prior releases,
+with one exception: the Iterator object returned by the
+StoredCollection.iterator() method can no longer be explicitly cast to
+StoredIterator because a different implementation class is now used for
+iterators. If you depend on the StoredIterator class, you must now call
+StoredCollection.storedIterator() instead. Note the
+StoredIterator.close(Iterator) static method is compatible with the new
+iterator implementation, so no changes are necessary if you are using
+that method to close iterators.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.5/config.so b/db/docs_src/ref/upgrade.4.5/config.so
new file mode 100644
index 000000000..fa7d988ba
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.5/config.so
@@ -0,0 +1,19 @@
+m4_comment([$Id: config.so,v 1.5 2006/09/15 19:34:26 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.5: --enable-pthread_self,,
+ upgrade.4.5/collect, upgrade.4.5/source)
+
+m4_p([dnl
+In previous releases, the --enable-pthread_self configuration option was
+used to force m4_db to use the POSIX pthread pthread_self function to
+identify threads of control (even when m4_db was configured for
+test-and-set mutexes). In the 4.5 release, the --enable-pthread_self
+option has been replaced with the
+m4_linkpage(M4RELDIR/ref/build_unix/conf, --enable-pthread_api,
+--with-enable-pthread_api) option. This option has the same effect as
+the previous option, but configures the m4_db build for a POSIX pthread
+application in other ways (for example, configuring m4_db to use the
+pthread_self function).])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.5/deprecate.so b/db/docs_src/ref/upgrade.4.5/deprecate.so
new file mode 100644
index 000000000..3194d6f91
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.5/deprecate.so
@@ -0,0 +1,27 @@
+m4_comment([$Id: deprecate.so,v 1.3 2006/01/27 16:13:51 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.5: deprecated interfaces,,
+ upgrade.4.5/intro, upgrade.4.5/alive)
+
+m4_p([dnl
+Some previously deprecated interfaces were removed from the m4_db 4.5
+release:])
+
+m4_bulletbegin
+m4_bullet([dnl
+The DB_ENV-__GT__set_lk_max method was removed. This method has been
+deprecated and undocumented since the m4_db 4.0 release.])
+
+m4_bullet([dnl
+The DB-__GT__stat method flags DB_CACHED_COUNT and DB_RECORDCOUNT were
+removed. These flags have been deprecated and undocumented since the
+m4_db 4.1 release.])
+
+m4_bullet([dnl
+The m4_option(w) option to the m4_ref(db_deadlock) utility was removed.
+This option has been deprecated and undocumented since the m4_db 4.0
+release.])
+m4_bulletend
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.5/disk.so b/db/docs_src/ref/upgrade.4.5/disk.so
new file mode 100644
index 000000000..0671f6161
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.5/disk.so
@@ -0,0 +1,15 @@
+m4_comment([$Id: disk.so,v 1.8 2006/10/02 15:56:39 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.5: upgrade requirements,,
+ upgrade.4.5/applog, upgrade.4.6/intro)
+
+m4_p([dnl
+The log file format changed in the m4_db 4.5 release. No database
+formats changed in the m4_db 4.5 release.])
+
+m4_p([dnl
+For further information on upgrading m4_db installations, see
+m4_link(M4RELDIR/ref/upgrade/process, Upgrading m4_db installations).])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.5/elect.so b/db/docs_src/ref/upgrade.4.5/elect.so
new file mode 100644
index 000000000..91dbce345
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.5/elect.so
@@ -0,0 +1,30 @@
+m4_comment([$Id: elect.so,v 1.1 2006/03/15 19:39:19 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.5: DB_ENV-__GT__rep_elect,,
+ upgrade.4.5/alive, upgrade.4.5/rep_set)
+
+m4_p([dnl
+Two of the historic arguments for the m4_refT(rep_elect) have been moved
+from the interface to separate methods in order to make them available
+within the new replication manager framework.])
+
+m4_p([dnl
+The m4_arg(priority) parameter should now be explicitly set using the
+m4_refT(rep_set_priority). To upgrade existing replication applications
+to the m4_db 4.5 m4_ref(rep_elect) interface, it may be simplest to
+insert a call to m4_ref(rep_set_priority) immediately before the
+existing call to m4_ref(rep_elect). Alternatively, it may make more
+sense to add a single call to m4_ref(rep_set_priority) during database
+environment configuration.])
+
+m4_p([dnl
+The m4_arg(timeout) parameter should now be explicitly set using the
+m4_refT(rep_set_timeout). To upgrade existing replication applications
+to the m4_db 4.5 m4_ref(rep_elect) interface, it may be simplest to
+insert a call to m4_ref(rep_set_timeout) immediately before the existing
+call to m4_ref(rep_elect). Alternatively, it may make more sense to add
+a single call to m4_ref(rep_set_timeout) during database environment
+configuration.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.5/intro.so b/db/docs_src/ref/upgrade.4.5/intro.so
new file mode 100644
index 000000000..e57eb1854
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.5/intro.so
@@ -0,0 +1,13 @@
+m4_comment([$Id: intro.so,v 1.1 2005/12/08 13:41:56 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.5: introduction,,
+ upgrade.4.4/disk, upgrade.4.5/deprecate)
+
+m4_p([dnl
+The following pages describe how to upgrade applications coded against
+the m4_db 4.4 release interfaces to the m4_db 4.5 release interfaces.
+This information does not describe how to upgrade m4_db 1.85 release
+applications.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.5/memp.so b/db/docs_src/ref/upgrade.4.5/memp.so
new file mode 100644
index 000000000..a273e2cdb
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.5/memp.so
@@ -0,0 +1,21 @@
+m4_comment([$Id: memp.so,v 1.3 2007/04/05 21:19:32 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.5: Memory Pool API,,
+ upgrade.4.5/rep_event, upgrade.4.5/paniccall)
+
+m4_p([dnl
+As part of implementing support for multi-version concurrency control,
+the m4_ref(DB_MPOOL_DIRTY) flag is now specified to the
+m4_refT(memp_fget) instead of m4_ref(memp_fput), and the
+DB_MPOOLFILE-__GT__set method has been removed. In addition, a new
+transaction handle parameter has been added to the m4_refT(memp_fget).])
+
+m4_p([dnl
+The DB_MPOOL_CLEAN flag is no longer supported.])
+
+m4_p([dnl
+Applications which use the memory pool API directly should update to
+the new API in order to use 4.5.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.5/pagesize.so b/db/docs_src/ref/upgrade.4.5/pagesize.so
new file mode 100644
index 000000000..df5439034
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.5/pagesize.so
@@ -0,0 +1,14 @@
+m4_comment([$Id: pagesize.so,v 1.6 2006/06/05 17:32:22 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.5: DB-__GT__set_pagesize,,
+ upgrade.4.5/paniccall, upgrade.4.5/collect)
+
+m4_p([dnl
+In previous releases, when creating a new database in a physical file
+which already contained databases, it was an error to specify a page
+size different from the existing databases in the file. In the m4_db
+4.5 release, any page size specified is ignored if the file in which the
+database is being created already exists.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.5/paniccall.so b/db/docs_src/ref/upgrade.4.5/paniccall.so
new file mode 100644
index 000000000..1c6d6efb0
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.5/paniccall.so
@@ -0,0 +1,23 @@
+m4_comment([$Id: paniccall.so,v 1.4 2006/09/15 19:35:29 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.5: DB_ENV-__GT__set_paniccall,,
+ upgrade.4.5/memp, upgrade.4.5/pagesize)
+
+m4_p([dnl
+In previous m4_db releases, the DB_ENV-__GT__set_paniccall and
+DB-__GT__set_paniccall methods were used to register a callback
+function, called if the database environment failed. In the 4.5
+release, this functionality has been replaced by a general-purpose event
+notification callback function, set with the
+m4_refT(dbenv_set_event_notify). Applications should be updated to
+replace DB_ENV-__GT__set_paniccall and DB-__GT__set_paniccall calls with
+a call to m4_ref(dbenv_set_event_notify). This also requires the
+callback function itself change, as the callback signatures are
+different.])
+
+m4_p([dnl
+The DB_ENV-__GT__set_paniccall and DB-__GT__set_paniccall calls are
+expected to be removed in a future release of m4_db.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.5/rep_event.so b/db/docs_src/ref/upgrade.4.5/rep_event.so
new file mode 100644
index 000000000..db891cb96
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.5/rep_event.so
@@ -0,0 +1,18 @@
+m4_comment([$Id: rep_event.so,v 1.3 2006/08/08 05:24:10 mjc Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.5: Replication events,,
+ upgrade.4.5/rep_set, upgrade.4.5/memp)
+
+m4_p([dnl
+One of the informational returns from the m4_refT(rep_message) found
+in previous releases of m4_db has been changed to an event. The
+DB_REP_STARTUPDONE return from m4_ref(rep_message) is now the
+m4_ref(DB_EVENT_REP_STARTUPDONE) value to the
+m4_ref(dbenv_set_event_notify) callback.])
+
+m4_p([dnl
+Applications should update their handling of this event as
+necessary.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.5/rep_set.so b/db/docs_src/ref/upgrade.4.5/rep_set.so
new file mode 100644
index 000000000..33426a0c4
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.5/rep_set.so
@@ -0,0 +1,19 @@
+m4_comment([$Id: rep_set.so,v 1.6 2006/06/09 15:28:21 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.5: Replication method naming,,
+ upgrade.4.5/elect, upgrade.4.5/rep_event)
+
+m4_p([dnl
+The method names DB_ENV-__GT__set_rep_limit, DB_ENV-__GT__get_rep_limit
+and DB_ENV-__GT__set_rep_transport have been changed to
+m4_ref(rep_set_limit), m4_ref(rep_get_limit) and
+m4_ref(rep_set_transport) in order to be consistent with the other
+replication method names. That is, the characters "set_rep" and
+"get_rep" have been changed to "rep_set" and "rep_get".])
+
+m4_p([dnl
+Applications should modify the method names, no other change is
+required.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.5/source.so b/db/docs_src/ref/upgrade.4.5/source.so
new file mode 100644
index 000000000..95f6a909d
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.5/source.so
@@ -0,0 +1,28 @@
+m4_comment([$Id: source.so,v 1.4 2006/11/13 18:05:05 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.5: Recno backing text source files,,
+ upgrade.4.5/config, upgrade.4.5/applog)
+
+m4_p([dnl
+In previous releases of m4_db, Recno access method backing source text
+files were opened using the ANSI C fopen function with the "r" and "w"
+modes. This caused Windows systems to translate carriage-return and
+linefeed characters on input and output and could lead to database
+corruption.])
+
+m4_p([dnl
+In the current release, m4_db opens the backing source text files using
+the "rb" and "wb" modes, consequently carriage-return and linefeed
+characters will not be translated on Windows systems.])
+
+m4_p([dnl
+Applications using the backing source text file feature on systems where
+the "r/w" and "rb/wb" modes differ should evaluate their application as part
+of upgrading to the 4.5 release. There is the possibility that
+characters have been translated or stripped and the backing source file
+has been corrupted. (Applications on other systems, for example,
+POSIX-like systems, should not require any changes related to this
+issue.)])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.5/toc.so b/db/docs_src/ref/upgrade.4.5/toc.so
new file mode 100644
index 000000000..08ffb3705
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.5/toc.so
@@ -0,0 +1,24 @@
+m4_comment([$Id: toc.so,v 1.12 2006/10/02 15:56:39 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Upgrading m4_db 4.4 applications to m4_db 4.5,
+ Upgrading to release 4.5,,)
+
+m4_nlistbegin
+m4_nlistns([m4_link(intro, [Release 4.5: introduction])])
+m4_nlistns([m4_link(deprecate, [Release 4.5: deprecated interfaces])])
+m4_nlistns([m4_link(alive, [Release 4.5: DB_ENV-__GT__set_isalive])])
+m4_nlistns([m4_link(elect, [Release 4.5: DB_ENV-__GT__rep_elect])])
+m4_nlistns([m4_link(rep_set, [Release 4.5: Replication method naming])])
+m4_nlistns([m4_link(rep_event, [Release 4.5: Replication events])])
+m4_nlistns([m4_link(memp, [Release 4.5: Memory Pool API])])
+m4_nlistns([m4_link(paniccall, [Release 4.5: DB_ENV-__GT__set_paniccall])])
+m4_nlistns([m4_link(pagesize, [Release 4.5: DB-__GT__set_pagesize])])
+m4_nlistns([m4_link(collect, [Release 4.5: Collections API])])
+m4_nlistns([m4_link(config, [Release 4.5: --enable-pthread_self])])
+m4_nlistns([m4_link(source, [Release 4.5: Recno backing text source files])])
+m4_nlistns([m4_link(applog, [Release 4.5: Application-specific logging])])
+m4_nlistns([m4_link(disk, [Release 4.5: upgrade requirements])])
+m4_nlistend
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.6/cursor.so b/db/docs_src/ref/upgrade.4.6/cursor.so
new file mode 100644
index 000000000..2cc077d5e
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.6/cursor.so
@@ -0,0 +1,26 @@
+m4_comment([$Id: cursor.so,v 1.4 2006/11/30 21:19:37 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.6: C API cursor handle method names,,
+ upgrade.4.6/intro, upgrade.4.6/memp_fput)
+
+m4_p([dnl
+In the m4_db 4.6 release, the C API m4_ref(Dbc) handle methods have been
+renamed for consistency with the C++ and Java APIs. The change is the
+removal of the leading "c_" from the names, as follows:])
+
+m4_tagbegin
+m4_tag([DBC-__GT__c_close], [Renamed DBC-__GT__close])
+m4_tag([DBC-__GT__c_count], [Renamed DBC-__GT__count])
+m4_tag([DBC-__GT__c_del], [Renamed DBC-__GT__del])
+m4_tag([DBC-__GT__c_dup], [Renamed DBC-__GT__dup])
+m4_tag([DBC-__GT__c_get], [Renamed DBC-__GT__get])
+m4_tag([DBC-__GT__c_pget], [Renamed DBC-__GT__pget])
+m4_tag([DBC-__GT__c_put], [Renamed DBC-__GT__put])
+m4_tagend
+
+m4_p([dnl
+The old m4_ref(Dbc) method names are deprecated but will continue for
+work for some number of future releases.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.6/disk.so b/db/docs_src/ref/upgrade.4.6/disk.so
new file mode 100644
index 000000000..3f5764751
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.6/disk.so
@@ -0,0 +1,22 @@
+m4_comment([$Id: disk.so,v 1.5 2007/06/14 18:31:18 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.6: upgrade requirements,,
+ upgrade.4.6/win, test/run)
+
+m4_p([dnl
+The log file format changed in the m4_db 4.6 release.])
+
+m4_p([dnl
+The format of Hash database pages was changed in the m4_db 4.6 release,
+and items are now stored in sorted order. m4_bold([The format changes
+are entirely backward-compatible, and no database upgrades are needed.])
+However, upgrading existing databases can offer significant performance
+improvements. Note that databases created using the 4.1 release may
+not be usable with earlier m4_db releases.])
+
+m4_p([dnl
+For further information on upgrading m4_db installations, see
+m4_link(M4RELDIR/ref/upgrade/process, Upgrading m4_db installations).])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.6/event.so b/db/docs_src/ref/upgrade.4.6/event.so
new file mode 100644
index 000000000..5c9e18cfb
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.6/event.so
@@ -0,0 +1,46 @@
+m4_comment([$Id: event.so,v 1.2 2007/05/14 16:03:56 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.6: replication events,,
+ upgrade.4.6/memp_fset, upgrade.4.6/full_election)
+
+m4_p([dnl
+It is now guaranteed the m4_ref(DB_EVENT_REP_STARTUPDONE) event will be
+presented to the application after the corresponding
+m4_ref(DB_EVENT_REP_NEWMASTER) event, even in the face of extreme
+thread-scheduling anomalies. (In previous releases, if the thread
+processing the NEWMASTER message was starved, and STARTUPDONE occurred
+soon after, the order might have been reversed.)])
+
+m4_p([dnl
+In addition, the m4_ref(DB_EVENT_REP_NEWMASTER) event is now presented
+to all types of replication applications: users of either the
+Replication Framework or the Base Replication API. In both cases, the
+m4_ref(DB_EVENT_REP_NEWMASTER) event always means that a site other than
+the local environment has become master.])
+
+m4_p([dnl
+The m4_arg(envid) parameter to m4_ref(rep_message) has been changed to
+be of type "int" rather than "int *", and the environment ID of a new
+master is presented to the application along with the
+m4_ref(DB_EVENT_REP_NEWMASTER) event. Replication applications should
+be modified to use the m4_ref(DB_EVENT_REP_NEWMASTER) event to determine
+the ID of the new master.])
+
+m4_p([dnl
+The m4_arg(envid) parameter has been removed from the m4_ref(rep_elect)
+method and a new event type has been added. The
+m4_ref(DB_EVENT_REP_ELECTED) event is presented to the application at
+the site which wins an election. In the m4_db 4.6 release, the normal
+result of a successful election is either the
+m4_ref(DB_EVENT_REP_NEWMASTER) event (with the winner's environment ID),
+or the m4_ref(DB_EVENT_REP_ELECTED) event. Only one of the two events
+will ever be delivered.])
+
+m4_p([dnl
+The DB_REP_NEWMASTER return code has been removed from the
+m4_refT(rep_message). Replication applications should be modified to
+use the m4_ref(DB_EVENT_REP_NEWMASTER) and m4_ref(DB_EVENT_REP_ELECTED)
+events to determine the existence of a new master.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.6/full_election.so b/db/docs_src/ref/upgrade.4.6/full_election.so
new file mode 100644
index 000000000..467007bae
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.6/full_election.so
@@ -0,0 +1,19 @@
+m4_comment([$Id: full_election.so,v 1.3 2007/05/04 12:37:15 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.6: DB_REP_FULL_ELECTION,,
+ upgrade.4.6/event, upgrade.4.6/verbose)
+
+m4_p([dnl
+The DB_REP_FULL_ELECTION flag historically specified to the
+m4_refT(repmgr_start) has been removed from the 4.6 release.])
+
+m4_p([dnl
+In the m4_db 4.6 release, a simpler and more flexible implementation of
+this functionality is available. Applications needing to configure the
+first election of a replication group differently from subsequent
+elections should use the m4_ref(DB_REP_FULL_ELECTION_TIMEOUT) flag to
+the m4_refT(rep_set_timeout) to specify a different timeout for the
+first election.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.6/intro.so b/db/docs_src/ref/upgrade.4.6/intro.so
new file mode 100644
index 000000000..1ab69015b
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.6/intro.so
@@ -0,0 +1,13 @@
+m4_comment([$Id: intro.so,v 1.3 2006/10/26 15:34:01 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.6: introduction,,
+ upgrade.4.5/disk, upgrade.4.6/cursor)
+
+m4_p([dnl
+The following pages describe how to upgrade applications coded against
+the m4_db 4.5 release interfaces to the m4_db 4.6 release interfaces.
+This information does not describe how to upgrade m4_db 1.85 release
+applications.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.6/memp_fput.so b/db/docs_src/ref/upgrade.4.6/memp_fput.so
new file mode 100644
index 000000000..460100ec5
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.6/memp_fput.so
@@ -0,0 +1,18 @@
+m4_comment([$Id: memp_fput.so,v 1.1 2006/11/30 19:06:51 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.6: DB_MPOOLFILE-__GT__put,,
+ upgrade.4.6/cursor, upgrade.4.6/memp_fset)
+
+m4_p([dnl
+The m4_refT(memp_fput) takes a new parameter in the m4_db 4.6 release, a
+page priority. This parameter allows applications to specify the page's
+priority when returning the page to the cache.])
+
+m4_p([dnl
+Applications calling the m4_refT(memp_fput) can upgrade by adding a
+m4_ref(DB_PRIORITY_UNCHANGED) parameter to their calls to the
+m4_refT(memp_fput). This will result in no change in the application's
+behavior.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.6/memp_fset.so b/db/docs_src/ref/upgrade.4.6/memp_fset.so
new file mode 100644
index 000000000..c949b4072
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.6/memp_fset.so
@@ -0,0 +1,13 @@
+m4_comment([$Id: memp_fset.so,v 1.2 2007/05/04 12:37:15 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.6: DB_MPOOLFILE-__GT__set,,
+ upgrade.4.6/memp_fput, upgrade.4.6/event)
+
+m4_p([dnl
+The DB_MPOOLFILE-__GT__set method has been removed from the m4_db 4.6
+release. Applications calling this method can upgrade by removing all
+calls to the method. This will result in no change in the application's
+behavior.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.6/toc.so b/db/docs_src/ref/upgrade.4.6/toc.so
new file mode 100644
index 000000000..33776e546
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.6/toc.so
@@ -0,0 +1,20 @@
+m4_comment([$Id: toc.so,v 1.7 2007/05/04 12:37:15 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Upgrading m4_db 4.5 applications to m4_db 4.6,
+ Upgrading to release 4.6,,)
+
+m4_nlistbegin
+m4_nlistns([m4_link(intro, [Release 4.6: introduction])])
+m4_nlistns([m4_link(cursor, [Release 4.6: C API cursor handle method names])])
+m4_nlistns([m4_link(memp_fput, [Release 4.6: DB_MPOOLFILE-__GT__put])])
+m4_nlistns([m4_link(memp_fset, [Release 4.6: DB_MPOOLFILE-__GT__set])])
+m4_nlistns([m4_link(event, [Release 4.6: replication events])])
+m4_nlistns([m4_link(full_election, [Release 4.6: DB_REP_FULL_ELECTION])])
+m4_nlistns([m4_link(verbose, [Release 4.6: verbose output])])
+m4_nlistns([m4_link(verb, [Release 4.6: DB_VERB_REPLICATION])])
+m4_nlistns([m4_link(win, [Release 4.6: Windows 9X])])
+m4_nlistns([m4_link(disk, [Release 4.6: upgrade requirements])])
+m4_nlistend
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.6/verb.so b/db/docs_src/ref/upgrade.4.6/verb.so
new file mode 100644
index 000000000..a24db213f
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.6/verb.so
@@ -0,0 +1,15 @@
+m4_comment([$Id: verb.so,v 1.3 2007/01/29 22:24:39 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.6: DB_VERB_REPLICATION,,
+ upgrade.4.6/verbose, upgrade.4.6/win)
+
+m4_p([dnl
+The m4_ref(DB_VERB_REPLICATION) flag no longer requires the m4_db
+library be built with the
+m4_linkpage(dnl
+M4RELDIR/ref/build_unix/conf, --enable-diagnostic, --enable-diagnostic)
+configuration option to output additional replication logging
+information.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.6/verbose.so b/db/docs_src/ref/upgrade.4.6/verbose.so
new file mode 100644
index 000000000..d1a02f10f
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.6/verbose.so
@@ -0,0 +1,41 @@
+m4_comment([$Id: verbose.so,v 1.2 2006/11/17 17:44:12 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.6: verbose output,,
+ upgrade.4.6/full_election, upgrade.4.6/verb)
+
+m4_p([dnl
+When an error occurs in the m4_db library, an exception is thrown or an
+error return value is returned by the interface. In some cases,
+however, the exception or returned value may be insufficient to
+completely describe the cause of the error, especially during initial
+application debugging. Applications can configure m4_db for verbose
+messages to be output when an error occurs, but it's a common cause of
+confusion for new users that no verbose messages are available by
+default.])
+
+m4_p([dnl
+In the m4_db 4.6 release, verbose messages are configured by default.
+For the C and C++ APIs, this means the default configuration when
+applications first create m4_ref(Db) or m4_ref(DbEnv) handles is as if
+the m4_ref(dbenv_set_errfile) or m4_refT(dbh_set_errfile)s were called
+with the standard error output (stderr) specified as the FILE *
+argument. Applications wanting no output at all can turn off this
+default configuration by calling the m4_ref(dbenv_set_errfile) or
+m4_refT(dbh_set_errfile)s with NULL as the FILE * argument.
+Additionally, explicitly configuring the error output channel using any
+of the m4_ref(dbenv_set_errfile), m4_ref(dbh_set_errfile),
+m4_ref(dbenv_set_errcall), m4_ref(dbh_set_errcall),
+m4_ref(dbenv_set_error_stream) or m4_refT(dbh_set_error_stream)s will
+also turn off this default output for the application.])
+
+m4_p([dnl
+Applications which configure m4_db with any error output channel should
+not require any changes.])
+
+m4_p([dnl
+Applications which depend on having no output from the m4_db library by
+default, should be changed to call the m4_ref(dbenv_set_errfile) or
+m4_refT(dbh_set_errfile)s with NULL as the FILE * argument.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade.4.6/win.so b/db/docs_src/ref/upgrade.4.6/win.so
new file mode 100644
index 000000000..b86962c86
--- /dev/null
+++ b/db/docs_src/ref/upgrade.4.6/win.so
@@ -0,0 +1,12 @@
+m4_comment([$Id: win.so,v 1.2 2007/04/05 21:20:38 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Release 4.6: Windows 9X,,
+ upgrade.4.6/verb, upgrade.4.6/disk)
+
+m4_p([dnl
+m4_db no longer supports process-shared database environments on Windows
+9X platforms; the m4_ref(DB_PRIVATE) flag must always be specified to
+the m4_refT(dbenv_open).])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade/process.so b/db/docs_src/ref/upgrade/process.so
new file mode 100644
index 000000000..327fc0e9a
--- /dev/null
+++ b/db/docs_src/ref/upgrade/process.so
@@ -0,0 +1,186 @@
+m4_comment([$Id: process.so,v 1.15 2006/10/09 16:51:34 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Upgrading m4_db installations,,
+ upgrade/version, changelog/toc)
+
+m4_p([dnl
+The following information describes the general process of upgrading
+m4_db installations. There are four areas to be considered when
+upgrading m4_db applications and database environments: the application
+API, the database environment's region files, the underlying database
+formats, and, in the case of transactional database environments, the
+log files. The upgrade procedures required depend on whether or not
+the release is a major or minor release (in which either the major or
+minor number of the version changed), or a patch release (in which only
+the patch number in the version changed). m4_db major and minor
+releases may optionally include changes in all four areas, that is, the
+application API, region files, database formats, and log files may not
+be backward-compatible with previous releases.])
+
+m4_p([dnl
+Each m4_db major or minor release has information in this chapter of
+the Reference Guide, describing how to upgrade to the new release. The
+section describes any API changes made in the release. Application
+maintainers should review the API changes and update their applications
+as necessary before recompiling with the new release. In addition, each
+section includes a page specifying whether the log file format or
+database formats changed in non-backward-compatible ways as part of the
+release. Because there are several underlying m4_db database formats,
+and they do not all necessarily change in the same release, changes to
+a database format in a release may not affect any particular
+application. Further, database and log file formats may have changed
+but be entirely backward-compatible, in which case no upgrade will be
+necessary.])
+
+m4_p([dnl
+A m4_db patch release will never modify the API, regions, log files, or
+database formats in incompatible ways, and so applications need only be
+relinked (or, in the case of a shared library, pointed at the new
+version of the shared library) to upgrade to a new release. Note that
+internal m4_db interfaces may change at any time and in any release
+(including patch releases) without warning. This means the library must
+be entirely recompiled and reinstalled when upgrading to new releases
+of the library because there is no guarantee that modules from one
+version of the library will interact correctly with modules from another
+release. We recommend using the same compiler release when building
+patch releases as was used to build the original release; in the default
+configuration, the m4_db library shares data structures from underlying
+shared memory between threads of control, and should the compiler
+re-order fields or otherwise change those data structures between the
+two builds, errors may result.])
+
+m4_p([If the release is a patch release, do the following:])
+
+m4_nlistbegin
+m4_nlist([Shut down the old version of the application.])
+m4_nlistns([dnl
+Install the new version of the application by relinking or installing
+a new version of the m4_db shared library.])
+m4_nlistns([Restart the application.])
+m4_nlistend
+
+m4_p([dnl
+Otherwise, if the application m4_bold(does not) have a m4_db
+transactional environment, the application may be installed in the field
+using the following steps:])
+
+m4_nlistbegin
+m4_nlist([Shut down the old version of the application.])
+m4_nlistns([dnl
+Remove any m4_db environment using the m4_refT(dbenv_remove) or an
+appropriate system utility.])
+m4_nlistns([Recompile and install the new version of the application.])
+m4_nlistns([dnl
+If necessary, upgrade the application's databases. See
+m4_link(M4RELDIR/ref/am/upgrade, Upgrading databases) for more
+information.])
+m4_nlistns([Restart the application.])
+m4_nlistend
+
+m4_p([dnl
+Otherwise, if the application has a m4_db transactional environment,
+but neither the log file nor database formats need upgrading, the
+application may be installed in the field using the following steps:])
+
+m4_nlistbegin
+m4_nlist([Shut down the old version of the application.])
+m4_nlistns([dnl
+Run recovery on the database environment using the m4_refT(dbenv_open)
+or the m4_ref(db_recover) utility.])
+m4_nlistns([dnl
+Remove any m4_db environment using the m4_refT(dbenv_remove) or an
+appropriate system utility.])
+m4_nlistns([Recompile and install the new version of the application.])
+m4_nlistns([Restart the application.])
+m4_nlistend
+
+m4_p([dnl
+If the application has a m4_db transactional environment, and the log
+files need upgrading but the databases do not, the application may be
+installed in the field using the following steps:])
+
+m4_nlistbegin
+m4_nlist([Shut down the old version of the application.])
+m4_nlistns([dnl
+Still using the old version of m4_db, run recovery on the database
+environment using the m4_refT(dbenv_open) or the m4_ref(db_recover)
+utility.])
+m4_nlistns([dnl
+If you used the m4_refT(dbenv_open) to run recovery, make sure that the
+m4_db environment is removed using the m4_refT(dbenv_remove) or an
+appropriate system utility. ])
+m4_nlistns([dnl
+Archive the database environment for catastrophic recovery. See
+m4_link(M4RELDIR/ref/transapp/archival, Archival procedures) for more
+information.])
+m4_nlistns([Recompile and install the new version of the application.])
+m4_nlistns([Force a checkpoint using the m4_refT(txn_checkpoint) or the
+m4_ref(db_checkpoint) utility. If you use the m4_ref(db_checkpoint)
+utility, make sure to use the new version of the utility; that is, the
+version that came with the release of m4_db to which you are upgrading.])
+m4_nlistns([Restart the application.])
+m4_nlistend
+
+m4_p([dnl
+Otherwise, if the application has a m4_db transactional environment and
+the databases need upgrading, the application may be installed in the
+field using the following steps:])
+
+m4_nlistbegin
+m4_nlist([Shut down the old version of the application.])
+m4_nlistns([dnl
+Still using the old version of m4_db, run recovery on the database
+environment using the m4_refT(dbenv_open) or the m4_ref(db_recover)
+utility.])
+m4_nlistns([dnl
+If you used the m4_refT(dbenv_open) to run recovery, make sure that the
+m4_db environment is removed using the m4_refT(dbenv_remove) or an
+appropriate system utility. ])
+m4_nlistns([dnl
+Archive the database environment for catastrophic recovery. See
+m4_link(M4RELDIR/ref/transapp/archival, Archival procedures) for more
+information.])
+m4_nlistns([Recompile and install the new version of the application.])
+m4_nlistns([dnl
+Upgrade the application's databases. See
+m4_link(M4RELDIR/ref/am/upgrade, Upgrading databases) for more
+information.])
+m4_nlistns([dnl
+Archive the database for catastrophic recovery again (using different
+media than before, of course). Note: This archival is not strictly
+necessary. However, if you have to perform catastrophic recovery after
+restarting the application, that recovery must be done based on the
+last archive you have made. If you make this second archive, you can
+use it as the basis of that catastrophic recovery. If you do not make
+this second archive, you have to use the archive you made in step 4 as
+the basis of your recovery, and you have to do a full upgrade on it
+before you can apply log files created after the upgrade to it.])
+m4_nlistns([Force a checkpoint using the m4_refT(txn_checkpoint) or the
+m4_ref(db_checkpoint) utility. If you use the m4_ref(db_checkpoint)
+utility, make sure to use the new version of the utility; that is, the
+version that came with the release of m4_db to which you are upgrading.])
+m4_nlistns([Restart the application.])
+m4_nlistend
+
+m4_p([dnl
+Finally, upgrading a m4_db replication group requires a few additional
+steps. To upgrade a replication group, you must:])
+
+m4_nlistbegin
+m4_nlist([Bring all clients up to date with the master (that is, all
+clients must be brought up to the most current log record as measured
+by the master's log sequence number (LSN)).])
+m4_nlistns([Perform the upgrade procedures described previously on each
+of the individual database environments that are part of the replication
+group.])
+m4_nlistns([Restart the replication group.])
+m4_nlistend
+
+m4_p([dnl
+Alternatively, it may be simpler to discard the contents of all of the
+client database environments, upgrade the master database environment,
+and then re-add all of the clients to the replication group using the
+standard replication procedures for new sites.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/upgrade/version.so b/db/docs_src/ref/upgrade/version.so
new file mode 100644
index 000000000..4e1d25fbd
--- /dev/null
+++ b/db/docs_src/ref/upgrade/version.so
@@ -0,0 +1,43 @@
+m4_comment([$Id: version.so,v 10.24 2003/11/27 18:26:01 bostic Exp $])
+
+m4_ref_title(Upgrading m4_db Applications,
+ Library version information,, build_vxworks/faq, upgrade/process)
+
+m4_p([dnl
+Each release of the m4_db library has a major version number, a minor
+version number, and a patch number.])
+
+m4_p([dnl
+The major version number changes only when major portions of the m4_db
+functionality have been changed. In this case, it may be necessary to
+significantly modify applications in order to upgrade them to use the new
+version of the library.])
+
+m4_p([dnl
+The minor version number changes when m4_db interfaces have changed,
+and the new release is not entirely backward-compatible with previous
+releases. To upgrade applications to the new version, they must be
+recompiled and potentially, minor modifications made (for example, the
+order of arguments to a function might have changed).])
+
+m4_p([dnl
+The patch number changes on each release. If only the patch number has
+changed in a release, applications do not need to be recompiled, and
+they can be upgraded to the new version by installing the new version
+of a shared library or by relinking the application to the new version
+of a static library.])
+
+m4_p([dnl
+Internal m4_db interfaces may change at any time and during any release,
+without warning. This means that the library must be entirely recompiled
+and reinstalled when upgrading to new releases of the library because
+there is no guarantee that modules from the current version of the
+library will interact correctly with modules from a previous release.])
+
+m4_p([dnl
+To retrieve the m4_db version information, applications should use the
+m4_ref(dbenv_version) function. In addition to the previous
+information, the m4_ref(dbenv_version) function returns a string
+encapsulating the version information, suitable for display to a user.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/xa/build.so b/db/docs_src/ref/xa/build.so
new file mode 100644
index 000000000..2dee1e2b0
--- /dev/null
+++ b/db/docs_src/ref/xa/build.so
@@ -0,0 +1,210 @@
+m4_comment([$Id: build.so,v 10.11 2003/10/18 19:16:21 bostic Exp $])
+
+m4_ref_title(Distributed Transactions,
+ Building a Global Transaction Manager, [Transaction Manager],
+ xa/intro, xa/xa_intro)
+
+m4_p([dnl
+Managing distributed transactions and using the two-phase commit
+protocol of m4_db from an application requires the application provide
+the functionality of a global transaction manager (GTM). The GTM is
+responsible for the following:])
+
+m4_bulletbegin
+m4_bullet([dnl
+Communicating with the multiple environments (potentially on separate
+systems).])
+m4_bullet([Managing the global transaction ID name space.])
+m4_bullet([Maintaining state information about each distributed transaction.])
+m4_bullet([Recovering from failures of individual environments.])
+m4_bullet([dnl
+Recovering the global transaction state after failure of the global
+transaction manager.])
+m4_bulletend
+
+m4_section([Communicating with multiple m4_db environments])
+
+m4_p([dnl
+Two-phase commit is required if an application wants to transaction
+protect m4_db calls across multiple environments. If the environments
+reside on the same machine, the application can communicate with each
+environment through its own address space with no additional complexity.
+If the environments reside on separate machines, the application can
+either use the m4_db RPC server to manage the remote environments or it
+may use its own messaging capability, translating messages on the remote
+machine into calls into the m4_db library (including the recovery
+calls). For some applications, it might be sufficient to use Tcl's
+remote invocation to remote copies of the tclsh utility into which the
+m4_db library has been dynamically loaded.])
+
+m4_section([Managing the Global Transaction ID (GID) name space])
+
+m4_p([dnl
+A global transaction is a transaction that spans multiple environments.
+Each global transaction must have a unique transaction ID. This unique
+ID is the global transaction ID (GID). In m4_db, global transaction
+IDs must be represented with the confines of a m4_ref(DB_XIDDATASIZE)
+size (currently 128 bytes) array. It is the responsibility of the
+global transaction manager to assign GIDs, guarantee their uniqueness,
+and manage the mapping of local transactions to GID. That is, for each
+GID, the GTM should know which local transactions managers participated.
+The m4_db logging system or a m4_db table could be used to record this
+information.])
+
+m4_section([Maintaining state for each distributed transaction.])
+
+m4_p([dnl
+In addition to knowing which local environments participate in each
+global transaction, the GTM must also know the state of each active
+global transaction. As soon as a transaction becomes distributed (that
+is, a second environment participates), the GTM must record the
+existence of the global transaction and all participants (whether this
+must reside on stable storage or not depends on the exact configuration
+of the system). As new environments participate, the GTM must keep this
+information up to date.])
+
+m4_p([dnl
+When the GTM is ready to begin commit processing, it should issue
+m4_ref(txn_prepare) calls to each participating environment, indicating
+the GID of the global transaction. Once all the participants have
+successfully prepared, then the GTM must record that the global
+transaction will be committed. This record should go to stable
+storage. Once written to stable storage, the GTM can send
+m4_ref(txn_commit) requests to each participating environment. Once
+all environments have successfully completed the commit, the GTM can
+either record the successful commit or can somehow "forget" the global
+transaction.])
+
+m4_p([dnl
+If nested transactions are used (that is, the m4_arg(parent) parameter
+is specified to m4_ref(txn_begin)), no m4_ref(txn_prepare) call should
+be made on behalf of any child transaction. Only the ultimate parent
+should even issue a m4_ref(txn_prepare).
+])
+
+m4_p([dnl
+Should any participant fail to prepare, then the GTM must abort the
+global transaction. The fact that the transaction is going to be
+aborted should be written to stable storage. Once written, the GTM can
+then issue m4_ref(txn_abort) requests to each environment. When all
+aborts have returned successfully, the GTM can either record the
+successful abort or "forget" the global transaction.])
+
+m4_p([dnl
+In summary, for each transaction, the GTM must maintain the following:])
+
+m4_bulletbegin
+m4_bullet([A list of participating environments])
+m4_bullet([dnl
+The current state of each transaction (pre-prepare, preparing,
+committing, aborting, done)])
+m4_bulletend
+
+m4_section([Recovering from the failure of a single environment])
+
+m4_p([dnl
+If a single environment fails, there is no need to bring down or recover
+other environments (the only exception to this is if all environments
+are managed in the same application address space and there is a risk
+the failure of the environment corrupted other environments). Instead,
+once the failing environment comes back up, it should be recovered (that
+is, conventional recovery, via m4_ref(db_recover) or by specifying the
+m4_ref(DB_RECOVER) flag to m4_ref(dbenv_open) should be run). If the
+m4_ref(db_recover) utility is used, then the -e option must be
+specified. In this case, the application will almost certainly want to
+specify environmental parameters via a DB_CONFIG file in the
+environment's home directory, so that m4_ref(db_recover) can create an
+appropriately configured environment. If the m4_ref(db_recover) utility
+is not used, then m4_ref(DB_PRIVATE) should not be specified, unless
+all processing including recovery, calls to m4_ref(txn_recover), and
+calls to finish prepared, but not yet complete transactions take place
+using the same database environment handle. The GTM should then issue
+a m4_ref(txn_recover) call to the environment. This call will return
+a list of prepared, but not yet committed or aborted transactions. For
+each transaction, the GTM should look up the GID in its local store to
+determine if the transaction should commit or abort.])
+
+m4_p([dnl
+If the GTM is running in a system with multiple GTMs, it is possible
+that some of the transactions returned via m4_ref(txn_recover) do not
+belong to the current environment. The GTM should detect this and call
+m4_ref(txn_discard) on each such transaction handle. Furthermore, it
+is important to note the environment does not retain information about
+which GTM has issued m4_ref(txn_recover) operations. Therefore, each
+GTM should issue all its m4_ref(txn_recover) calls, before another GTM
+issues its calls. If the calls are interleaved, each GTM may not get
+a complete and consistent set of transactions. The simplest way to
+enforce this is for each GTM to make sure it can receive all its
+outstanding transactions in a single m4_ref(txn_recover) call. The
+maximum number of possible outstanding transactions is roughly the
+maximum number of active transactions in the environment (which value
+can be obtained using the m4_refT(txn_stat) or the m4_ref(db_stat)
+utility). To simplify this procedure, the caller should allocate an
+array large enough to be certain to hold the list of transactions (for
+example, allocate an array able to hold three times the maximum number
+of transactions). If that's not possible, callers should check that the
+array was not completely filled in when m4_ref(txn_recover) returns.
+If the array was completely filled in, each transaction should be
+explicitly discarded, and the call repeated with a larger array.])
+
+m4_p([dnl
+The newly recovered environment will forbid any new transactions from
+being started until the prepared but not yet committed/aborted
+transactions have been resolved. In the multiple GTM case, this means
+that all GTMs must recover before any GTM can begin issuing new transactions.])
+
+m4_p([dnl
+Because m4_db flushed both commit and abort records to disk for
+two-phase transaction, once the global transaction has either committed
+or aborted, no action will be necessary in any environment. If local
+environments are running with the m4_ref(DB_TXN_WRITE_NOSYNC) or
+m4_ref(DB_TXN_NOSYNC) options (that is, is not writing and/or flushing
+the log synchronously at commit time), then it is possible that a commit
+or abort operation may not have been written in the environment. In
+this case, the GTM must always have a record of completed transactions
+to determine if prepared transactions should be committed or aborted.])
+
+m4_section([Recovering from GTM failure])
+
+m4_p([dnl
+If the GTM fails, it must first recover its local state. Assuming the
+GTM uses m4_db tables to maintain state, it should run
+m4_ref(db_recover) (or the m4_ref(DB_RECOVER) option to
+m4_ref(dbenv_open)) upon startup. Once the GTM is back up and running,
+it needs to review all its outstanding global transactions, that is all
+transaction which are recorded, but not yet committed or aborted.])
+
+m4_p([dnl
+Any global transactions which have not yet reached the prepare phase
+should be aborted. If these transactions were on remote systems, the
+remote systems should eventually time them out and abort them. If these
+transactions are on the local system, we assume they crashed and were
+aborted as part of GTM startup.])
+
+m4_p([dnl
+The GTM must then identify all environments which need to have their
+m4_refT(txn_recover)s called. This includes all environments that
+participated in any transaction that is in the preparing, aborting, or
+committing state. For each environment, the GTM should issue a
+m4_ref(txn_recover) call. Once each environment has responded, the GTM
+can determine the fate of each transaction. The correct behavior is
+defined depending on the state of the global transaction according to
+the table below.])
+
+m4_tagbegin
+m4_tag(preparing, [dnl
+if all participating environments return the transaction in the prepared
+but not yet committed/aborted state, then the GTM should commit the
+transaction. If any participating environment fails to return it, then
+the GTM should issue an abort to all environments that did return it.])
+m4_tag(committing, [dnl
+the GTM should send a commit to any environment that returned this
+transaction in its list of prepared but not yet committed/aborted
+transactions.])
+m4_tag(aborting, [dnl
+the GTM should send an abort to any environment that returned this
+transaction in its list of prepared but not yet committed/aborted
+transactions.])
+m4_tagend
+
+m4_page_footer
diff --git a/db/docs_src/ref/xa/faq.so b/db/docs_src/ref/xa/faq.so
new file mode 100644
index 000000000..55b64289c
--- /dev/null
+++ b/db/docs_src/ref/xa/faq.so
@@ -0,0 +1,73 @@
+m4_comment([$Id: faq.so,v 10.22 2006/11/13 18:05:06 bostic Exp $])
+
+m4_ref_title(Distributed Transactions,
+ XA: Frequently Asked Questions,
+ [XA @FAQ, XA FAQ], xa/xa_config, apprec/intro)
+
+m4_nlistbegin
+
+m4_nlist([dnl
+m4_bold([Is it possible to mix XA and non-XA transactions?])
+
+m4_p([dnl
+Yes. It is also possible for XA and non-XA transactions to coexist in
+the same m4_db environment. To do this, specify the same environment
+to the non-XA m4_ref(dbenv_open) calls as was specified in the Tuxedo
+configuration file.])])
+
+m4_hl
+m4_nlist([dnl
+m4_bold([Does converting an application to run within XA change any of
+the already existing C/C++ API calls it does?])
+
+m4_p([dnl
+When converting an application to run under XA, the application's m4_db
+calls are unchanged, with three exceptions:])
+
+m4_nlistbegin
+
+m4_nlist([The application must specify the m4_ref(DB_XA_CREATE) flag to
+the m4_ref(dbh_create) function.])
+
+m4_nlist([Unless the application is performing an operation for a non-XA
+transaction, the application should never explicitly call
+m4_ref(txn_commit), m4_ref(txn_abort) or m4_ref(txn_begin), and those
+calls should be replaced by calls into the Tuxedo transaction manager.])
+
+m4_nlist([Unless the application is performing an operation for a non-XA
+transaction, the application should specify a transaction argument of NULL
+to m4_db methods taking transaction arguments (for example, m4_ref(dbh_put)
+or m4_ref(dbh_cursor)).])
+
+m4_nlistend
+
+m4_p([dnl
+Otherwise, the application should be unchanged.])])
+
+m4_hl
+m4_nlist([dnl
+m4_bold([How does m4_db recovery interact with recovery by the Tuxedo
+transaction manager?])
+
+m4_p([dnl
+Recovery is completed in two steps. First, each resource manager should
+recover its environment(s). This can be done via a program that calls
+m4_ref(dbenv_open) or by calling the m4_ref(db_recover) utility. If
+using the m4_ref(db_recover) utility, then the m4_option(e) option
+should be specified so that the regions that are recovered persist after
+the utility exits. Any transactions that were prepared, but neither
+completed nor aborted, are restored to their prepared state so that they
+may be aborted or committed via the Tuxedo recovery mechanisms. After
+each resource manager has recovered, then Tuxedo recovery may begin.
+Tuxedo will interact with each resource manager via the __db_xa_recover
+function which returns the list of prepared, but not yet completed
+transactions. It should issue a commit or abort for each one, and only
+after having completed each transaction will normal processing resume.])
+
+m4_p([dnl
+Finally, standard log file archival and catastrophic recovery procedures
+should occur independently of XA operation.])])
+
+m4_nlistend
+
+m4_page_footer
diff --git a/db/docs_src/ref/xa/intro.so b/db/docs_src/ref/xa/intro.so
new file mode 100644
index 000000000..4e0132b80
--- /dev/null
+++ b/db/docs_src/ref/xa/intro.so
@@ -0,0 +1,44 @@
+m4_comment([$Id: intro.so,v 10.7 2006/11/13 18:05:06 bostic Exp $])
+
+m4_ref_title(Distributed Transactions,
+ Introduction to distributed transactions,
+ [Distributed Transactions, Resource Manager], rep/ex_rq, xa/build)
+
+m4_p([dnl
+m4_db provides support for distributed transactions using a two-phase
+commit protocol via its m4_ref(txn_prepare) and m4_ref(txn_recover)
+interfaces. The m4_refT(txn_prepare) performs the first phase of a
+two-phase commit, flushing the log to disk, and associating a global
+transaction ID with the underlying m4_db transaction. This global
+transaction ID should be used by the global transaction manager to
+identify the m4_db transaction, and will be returned by the
+m4_refT(txn_recover) when it is called during recovery.])
+
+m4_p([dnl
+Distributed transactions are necessary whenever an application wants to
+transaction-protect data in multiple m4_db environments, even if those
+environments are on the same machine. However, m4_db does not perform
+distributed deadlock detection, therefore it is the responsibility of
+the application to ensure that accesses in different environments cannot
+deadlock (this can be accomplished through careful ordering of
+operations to the multiple environments), or by using the
+m4_ref(DB_LOCK_NOWAIT) option and eventually abort transactions that
+have been waiting "too long" (where "too long" is determined by an
+application-specific timeout).])
+
+m4_p([dnl
+In order to use the two-phase commit feature of m4_db, an application
+must either implement its own global transaction manager or use an
+XA-compliant transaction manager (as m4_db can act as an XA-compliant
+resource manager).])
+
+m4_p([dnl
+When using distributed transactions, there is no way to perform
+hot backups of multiple environments and guarantee that the backups
+are global-transaction-consistent across these multiple environments.
+If backups are desired, then all write transactions should be suspended;
+that is, active write transactions must be allowed to complete and no
+new write transactions should be begun. Once there are no active write
+transactions, the logs may be copied for backup purposes and the backup
+will be consistent across the multiple environments.])
+m4_page_footer
diff --git a/db/docs_src/ref/xa/xa_config.so b/db/docs_src/ref/xa/xa_config.so
new file mode 100644
index 000000000..fa60eecc4
--- /dev/null
+++ b/db/docs_src/ref/xa/xa_config.so
@@ -0,0 +1,107 @@
+m4_comment([$Id: xa_config.so,v 10.23 2003/06/27 17:38:24 bostic Exp $])
+
+m4_ref_title(Distributed Transactions,
+ Configuring m4_db with the Tuxedo System,
+ configuring m4_db with the @Tuxedo System,
+ xa/xa_intro, xa/faq)
+
+m4_p([dnl
+This information assumes that you have already installed the m4_db
+library.])
+
+m4_p([dnl
+First, you must update the resource manager file in Tuxedo. For the
+purposes of this discussion, assume that the Tuxedo home directory is in])
+
+m4_indent([/home/tuxedo])
+
+In that case, the resource manager file will be located in
+
+m4_indent([/home/tuxedo/udataobj/RM])
+
+Edit the resource manager file, adding the line
+
+m4_indent([dnl
+BERKELEY-DB:db_xa_switch:-L${DB_INSTALL}/lib -ldb m4_backslash([])
+ -lsocket -ldl -lm])
+
+m4_p([dnl
+where ${DB_INSTALLHOME} is the directory into which you installed the m4_db
+library.])
+
+m4_p([dnl
+m4_bold([Note that the previous load options are for a Sun Microsystems
+Solaris 5.6 Sparc installation of Tuxedo, and may not be correct for
+your system.])])
+
+m4_p([dnl
+Next, you must build the transaction manager server. To do this, use the
+Tuxedo m4_manref(buildtms, 1) utility. The buildtms utility will create
+the Berkeley-DB resource manager in the directory from which it was run.
+The parameters to buildtms should be])
+
+m4_indent([buildtms [-v] -o DBRM -r BERKELEY-DB])
+
+m4_p([dnl
+This will create an executable transaction manager server, DBRM, which is
+called by Tuxedo to process begins, commits, and aborts.])
+
+m4_p([dnl
+Finally, you must make sure that your TUXCONFIG environment variable
+identifies an ubbconfig file that properly identifies your resource
+managers. In the GROUPS section of the ubb file, you should identify the
+group's LMID and GRPNO, as well as the transaction manager server name
+"TMSNAME=DBRM." You must also specify the OPENINFO parameter, setting it
+equal to the string])
+
+m4_indent([rm_name:dir])
+
+m4_p([dnl
+where rm_name is the resource name specified in the RM file (that is,
+BERKELEY-DB) and dir is the directory for the m4_db home environment
+(see m4_ref(dbenv_open) for a discussion of m4_db environments).])
+
+m4_p([dnl
+Because Tuxedo resource manager startup accepts only a single string
+for configuration, any environment customization that might have been
+done via the config parameter to m4_ref(dbenv_open) must instead be done
+by placing a m4_ref(DB_CONFIG) file in the m4_db environment directory.
+See m4_link(M4RELDIR/ref/env/naming, [m4_db File Naming]) for further
+information.])
+
+m4_p([dnl
+Consider the following configuration. We have built a transaction
+manager server, as described previously. We want the m4_db environment
+to be m4_path([/home/dbhome]), our database files to be maintained in
+m4_path([/home/datafiles]), our log files to be maintained in
+m4_path([/home/log]), and we want a duplexed server.])
+
+m4_p([dnl
+The GROUPS section of the ubb file might look like the following])
+
+m4_indent([dnl
+group_tm LMID=myname GRPNO=1 TMSNAME=DBRM TMSCOUNT=2 m4_backslash([])
+ OPENINFO="BERKELEY-DB:/home/dbhome"])
+
+m4_p([dnl
+There would be a m4_ref(DB_CONFIG) configuration file in the directory
+m4_path([/home/dbhome]) that contained the following two lines:])
+
+m4_indent([dnl
+set_data_dir /home/datafiles
+set_lg_dir /home/log])
+
+m4_p([dnl
+Finally, the ubb file must be translated into a binary version using
+Tuxedo's m4_manref(tmloadcf, 1) utility, and then the pathname of that
+binary file must be specified as your TUXCONFIG environment variable.])
+
+m4_p([dnl
+At this point, your system is properly initialized to use the m4_db
+resource manager.])
+
+m4_p([dnl
+See m4_ref(dbh_create) for further information on accessing data files
+using XA.])
+
+m4_page_footer
diff --git a/db/docs_src/ref/xa/xa_intro.so b/db/docs_src/ref/xa/xa_intro.so
new file mode 100644
index 000000000..bba008be4
--- /dev/null
+++ b/db/docs_src/ref/xa/xa_intro.so
@@ -0,0 +1,70 @@
+m4_comment([$Id: xa_intro.so,v 10.22 2001/03/30 20:34:54 bostic Exp $])
+
+m4_ref_title(Distributed Transactions,
+ XA Introduction, [@XA Resource Manager, XA @Resource Manager],
+ xa/build, xa/xa_config)
+
+m4_p([dnl
+m4_db can be used as an XA-compliant resource manager. The XA
+implementation is known to work with the Tuxedo(tm) transaction
+manager.])
+
+m4_p([dnl
+The XA support is encapsulated in the resource manager switch
+db_xa_switch, which defines the following functions:])
+
+m4_indent([dnl
+__db_xa_close Close the resource manager.
+__db_xa_commit Commit the specified transaction.
+__db_xa_complete Wait for asynchronous operations to
+ complete.
+__db_xa_end Disassociate the application from a
+ transaction.
+__db_xa_forget Forget about a transaction that was heuristically
+ completed. (m4_db does not support heuristic
+ completion.)
+__db_xa_open Open the resource manager.
+__db_xa_prepare Prepare the specified transaction.
+__db_xa_recover Return a list of prepared, but not yet
+ committed transactions.
+__db_xa_rollback Abort the specified transaction.
+__db_xa_start Associate the application with a
+ transaction.
+])
+
+m4_p([dnl
+The m4_db resource manager does not support the following optional
+XA features:])
+
+m4_bulletbegin
+m4_bullet([Asynchronous operations])
+m4_bullet([Transaction migration])
+m4_bulletend
+
+m4_p([dnl
+The Tuxedo System is available from m4_linkweb(http://www.beasys.com,
+[BEA Systems, Inc.])])
+
+m4_p([dnl
+For additional information on Tuxedo, see])
+
+m4_indentv([dnl
+m4_italic([Building Client/Server Applications Using Tuxedo]),
+by Hall (John Wiley & Sons, Inc.).])
+
+m4_p([dnl
+For additional information on XA Resource Managers, see])
+
+m4_indentv([dnl
+X/Open CAE Specification
+m4_italic([Distributed Transaction Processing: The XA Specification]),
+X/Open Document Number: XO/CAE/91/300.])
+
+m4_p([dnl
+For additional information on The Tuxedo System, see])
+
+m4_indentv([dnl
+m4_italic([The Tuxedo System]),
+by Andrade, Carges, Dwyer and Felts (Addison Wesley Longman).])
+
+m4_page_footer
diff --git a/db/docs_src/rep/m4.methods b/db/docs_src/rep/m4.methods
new file mode 100644
index 000000000..a0513e273
--- /dev/null
+++ b/db/docs_src/rep/m4.methods
@@ -0,0 +1,31 @@
+m4_comment([$Id: m4.methods,v 1.10 2007/06/22 16:57:17 bostic Exp $])
+
+m4_table_begin(, _center)
+
+m4_table_header(Replication Manager Methods, Description)
+m4_comment([DbEnv::repmgr_add_remote_site])m4_table_element(m4_ref(repmgr_add_remote_site), Specify the replication manager's remote sites)
+m4_comment([DbEnv::repmgr_set_ack_policy])m4_table_element(m4_ref(repmgr_set_ack_policy), Specify the replication manager's client acknowledgement policy)
+m4_comment([DbEnv::repmgr_set_local_site])m4_table_element(m4_ref(repmgr_set_local_site), Specify the replication manager's local site)
+m4_comment([DbEnv::repmgr_site_list])m4_table_element(m4_ref(repmgr_site_list), List the sites and their status)
+m4_comment([DbEnv::repmgr_start])m4_table_element(m4_ref(repmgr_start), Start the replication manager)
+m4_comment([DbEnv::repmgr_stat])m4_table_element(m4_ref(repmgr_stat), Replication manager statistics)
+
+m4_table_header(Base Replication API, _empty)
+m4_comment([DbEnv::rep_elect])m4_table_element(m4_ref(rep_elect), Hold a replication election)
+m4_comment([DbEnv::rep_process_message])m4_table_element(m4_ref(rep_message), Process a replication message)
+m4_comment([DbEnv::rep_start])m4_table_element(m4_ref(rep_start), Configure an environment for replication)
+
+m4_table_header(Additional Replication Methods, _empty)
+m4_comment([DbEnv::rep_stat])m4_table_element(m4_ref(rep_stat), Replication statistics)
+m4_comment([DbEnv::rep_sync])m4_table_element(m4_ref(rep_sync), Replication synchronization)
+
+m4_table_header(Replication Configuration, _empty)
+m4_comment([DbEnv::rep_set_config])m4_table_element(m4_ref(rep_set_config), Configure the replication subsystem)
+m4_comment([DbEnv::rep_set_limit])m4_table_element(m4_ref(rep_set_limit), Limit data sent in response to a single message)
+m4_comment([DbEnv::rep_set_nsites])m4_table_element(m4_ref(rep_set_nsites), Configure replication group site count)
+m4_comment([DbEnv::rep_set_priority])m4_table_element(m4_ref(rep_set_priority), Configure replication site priority)
+m4_comment([DbEnv::rep_set_request])m4_table_element(m4_ref(rep_set_request), Configure replication client retransmission requests)
+m4_comment([DbEnv::rep_set_timeout])m4_table_element(m4_ref(rep_set_timeout), Configure replication timeouts)
+m4_comment([DbEnv::rep_set_transport])m4_table_element(m4_ref(rep_set_transport), Configure replication transport callback)
+
+m4_table_end
diff --git a/db/docs_src/rep/rep_config.so b/db/docs_src/rep/rep_config.so
new file mode 100644
index 000000000..5dcf8199d
--- /dev/null
+++ b/db/docs_src/rep/rep_config.so
@@ -0,0 +1,87 @@
+m4_comment([$Id: rep_config.so,v 1.4 2007/02/13 19:32:52 bostic Exp $])
+
+define(M4PAGELOCAL, [dnl
+ rep_set_config, rep_get_config, DB_REP_CONF_BULK,
+ DB_REP_CONF_DELAYCLIENT, DB_REP_CONF_NOAUTOINIT, DB_REP_CONF_NOWAIT])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(rep_set_config),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__rep_set_config(DB_ENV *env, u_int32_t which, int onoff);
+m4_blank
+int
+DB_ENV-__GT__rep_get_config(DB_ENV *dbenv, u_int32_t which, int *onoffp);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::rep_set_config(u_int32_t which, int onoff);
+m4_blank
+int
+DbEnv::rep_get_config(u_int32_t which, int *onoffp);
+]))
+
+m4_p([dnl
+The m4_refT(rep_set_config) method configures the m4_db replication
+subsystem.])
+
+m4_env_config(rep_set_config, replication subsystem, rep_set_config, [dnl
+the method m4_arg(which) parameter as a string; for example,
+"rep_set_config REP_CONF_NOWAIT"])
+
+m4_scope_env(rep_set_config)
+m4_when_any(rep_set_config)
+m4_return(rep_set_config, std)
+
+m4_parambegin
+m4_param(onoff, [dnl
+If the m4_arg(onoff) parameter is zero, the configuration flag is turned
+off. Otherwise, it is turned on.])
+
+m4_param(which, [dnl
+The m4_arg(which) parameter must be set to one of the following values:
+
+m4_tagbegin
+m4_tag(m4_idef(DB_REP_CONF_BULK), [dnl
+The replication master sends groups of records to the clients in a
+single network transfer (defaults to off).])
+
+m4_tag(m4_idef(DB_REP_CONF_DELAYCLIENT), [dnl
+The client should delay synchronizing to a newly declared master
+(defaults to off). Clients configured in this way will remain
+unsynchronized until the application calls the m4_refT(rep_sync).])
+
+m4_tag(m4_idef(DB_REP_CONF_NOAUTOINIT), [dnl
+The replication master will not automatically re-initialize outdated
+clients (defaults to off).])
+
+m4_tag(m4_idef(DB_REP_CONF_NOWAIT), [dnl
+m4_db method calls that would normally block while clients are in
+recovery will return errors immediately (defaults to off).])
+
+m4_tagend])
+m4_paramend
+
+m4_err(rep_set_config, einval)
+
+m4_pf_description(m4_ref(rep_get_config))
+m4_p([dnl
+The m4_refT(rep_get_config) returns whether the specified m4_arg(which)
+parameter is currently set or not.])
+
+m4_when_any(rep_get_config)
+
+m4_return(rep_get_config, std)
+
+m4_parambegin
+m4_param(which, [dnl
+The m4_arg(which) parameter is the message value for which configuration
+is being checked.])
+m4_param_co(onoffp, [dnl
+configuration of the specified m4_arg(which) parameter],, [dnl
+If the returned m4_arg(onoff) value is zero, the parameter is off;
+otherwise on.])
+m4_paramend
+
+m4_seealso(Replication)
+m4_page_footer
diff --git a/db/docs_src/rep/rep_elect.so b/db/docs_src/rep/rep_elect.so
new file mode 100644
index 000000000..8d17d8982
--- /dev/null
+++ b/db/docs_src/rep/rep_elect.so
@@ -0,0 +1,117 @@
+m4_comment([$Id: rep_elect.so,v 1.26 2007/03/20 20:20:26 alanb Exp $])
+
+define(M4PAGELOCAL, [rep_elect, DB_REP_UNAVAIL])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(rep_elect),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__rep_elect(DB_ENV *env,
+ int nsites, int nvotes, u_int32_t flags);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::rep_elect(int nsites, int nvotes, u_int32_t flags);
+]))
+
+m4_p([dnl
+The m4_refT(rep_elect) holds an election for the master of a replication
+group.])
+
+m4_repl_lower(rep_elect)
+
+m4_p([dnl
+If the election is successful, m4_db will notify the application of
+the results of the election by means of either the
+m4_ref(DB_EVENT_REP_ELECTED) or m4_ref(DB_EVENT_REP_NEWMASTER) events
+(see m4_refT(dbenv_set_event_notify) for more information). The
+application is responsible for adjusting its relationship to the other
+database environments in the replication group, including directing
+all database updates to the newly selected master, in accordance with
+the results of the election.])
+
+m4_p([dnl
+The thread of control that calls the m4_refT(rep_elect) must not be the
+thread of control that processes incoming messages; processing the
+incoming messages is necessary to successfully complete an election.])
+
+m4_parambegin
+m4_param(nsites, [dnl
+The m4_arg(nsites) parameter specifies the number of replication sites
+expected to participate in the election. Once the current site has
+election information from that many sites, it will short-circuit the
+election and immediately cast its vote for a new master. The
+m4_arg(nsites) parameter must be a positive integer, no less than
+m4_arg(nvotes), or 0 if the election should use the value previously set
+using the m4_refT(rep_set_nsites).])
+
+m4_param(nvotes, [dnl
+The m4_arg(nvotes) parameter specifies the minimum number of replication
+sites from which the current site must have election information, before
+the current site will cast a vote for a new master. The m4_arg(nvotes)
+parameter must be a positive integer and no greater than m4_arg(nsites),
+or 0 if the election should use the value ((m4_arg(nsites) / 2) + 1) as
+the m4_arg(nvotes) argument.])
+
+m4_unusedflags
+m4_paramend
+
+m4_p([dnl
+Elections are done in two parts: first, replication sites collect
+information from the other replication sites they know about, and
+second, replication sites cast their votes for a new master. The second
+phase is triggered by one of two things: either the replication site
+gets election information from m4_arg(nsites) sites, or the election
+m4_arg(timeout) expires. Once the second phase is triggered, the
+replication site will cast a vote for the new master of its choice if,
+and only if, the site has election information from at least
+m4_arg(nvotes) sites. If a site receives m4_arg(nvotes) votes for it
+to become the new master, then it will become the new master.])
+
+m4_p([dnl
+We recommend m4_arg(nvotes) be set to at least:])
+m4_indent([(sites participating in the election / 2) + 1])
+m4_p([dnl
+to ensure there are never more than two masters active at the same time
+even in the case of a network partition. When a network partitions, the
+side of the partition with more than half the environments will elect a
+new master and continue, while the environments communicating with fewer
+than half of the environments will fail to find a new master, as no site
+can get m4_arg(nvotes) votes.])
+
+m4_p([dnl
+We recommend m4_arg(nsites) be set to:])
+m4_indent([number of sites in the replication group - 1])
+m4_p([dnl
+when choosing a new master after a current master fails. This allows
+the group to reach a consensus without having to wait for the timeout
+to expire.])
+
+m4_p([dnl
+When choosing a master from among a group of client
+sites all restarting at the same time, it makes more sense to set
+m4_arg(nsites) to the total number of sites in the group, since there is no
+known missing site. Furthermore, in order to ensure the best choice
+from among sites that may take longer to boot than the local site,
+setting m4_arg(nvotes) also to this same total number of sites will
+guarantee that every site in the group is considered. Alternatively,
+using the special timeout for full elections allows full participation
+on restart but allows election of a master if one site does not
+reboot and rejoin the group in a reasonable amount of time. (See the
+m4_link(M4RELDIR/ref/rep/elect, [Elections])
+section in the m4_db Reference Guide for more information.)])
+
+m4_p([dnl
+Setting m4_arg(nsites) to lower values can increase the speed of an
+election, but can also result in election failure, and is usually not
+recommended.])
+
+m4_idefz(DB_REP_UNAVAIL)
+m4_err(rep_elect,
+DB_REP_UNAVAIL, [dnl
+The replication group was unable to elect a master, or was unable to
+complete the election in the election timeout period (see
+m4_refT(rep_set_timeout) for more information).])
+
+m4_seealso(Replication)
+m4_page_footer
diff --git a/db/docs_src/rep/rep_limit.so b/db/docs_src/rep/rep_limit.so
new file mode 100644
index 000000000..0ceaa9171
--- /dev/null
+++ b/db/docs_src/rep/rep_limit.so
@@ -0,0 +1,60 @@
+m4_comment([$Id: rep_limit.so,v 1.25 2006/11/30 21:19:38 bostic Exp $])
+
+define(M4PAGELOCAL, [rep_set_limit, rep_get_limit])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(rep_set_limit),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__rep_set_limit(DB_ENV *env, u_int32_t gbytes, u_int32_t bytes);
+m4_blank
+int
+DB_ENV-__GT__rep_get_limit(DB_ENV *dbenv, u_int32_t *gbytesp, u_int32_t *bytesp);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::rep_set_limit(u_int32_t gbytes, u_int32_t bytes);
+m4_blank
+int
+DbEnv::rep_get_limit(u_int32_t *gbytesp, u_int32_t *bytesp);
+]))
+
+m4_p([dnl
+The m4_refT(rep_set_limit) sets a byte-count limit on the amount of data
+that will be transmitted from a site in response to a single message
+processed by the m4_refT(rep_message). The limit is not a hard limit,
+and the record that exceeds the limit is the last record to be sent.])
+
+m4_p([dnl
+Record transmission throttling is turned on by default with a limit of
+10MB.])
+
+m4_p([dnl
+If the values passed to the m4_refT(rep_set_limit) are both zero, then
+the transmission limit is turned off.])
+
+m4_scope_env(rep_set_limit)
+m4_when_any(rep_set_limit)
+m4_return(rep_set_limit, std)
+
+m4_parambegin
+m4_param(bytes, [dnl
+The m4_arg(gbytes) and m4_arg(bytes) parameters specify the maximum
+number of bytes that will be sent in a single call to m4_refT(rep_message).])
+m4_param(gbytes, [dnl
+The m4_arg(gbytes) and m4_arg(bytes) parameters specify the maximum
+number of bytes that will be sent in a single call to m4_refT(rep_message).])
+m4_paramend
+
+m4_pf_description(rep_get_limit)
+
+m4_when_any(rep_get_limit)
+m4_return(rep_get_limit, std)
+
+m4_parambegin
+m4_param_co(bytesp, additional bytes of memory in the current transmit limit)
+m4_param_co(gbytesp, gigabytes of memory in the in the current transmit limit)
+m4_paramend
+
+m4_seealso(Replication)
+m4_page_footer
diff --git a/db/docs_src/rep/rep_list.so b/db/docs_src/rep/rep_list.so
new file mode 100644
index 000000000..4285387bf
--- /dev/null
+++ b/db/docs_src/rep/rep_list.so
@@ -0,0 +1,7 @@
+m4_comment([$Id: rep_list.so,v 1.1 2002/08/30 20:02:36 bostic Exp $])
+
+m4_page_title([m4_db: Replication and Related Methods])
+
+include(rep/m4.methods)
+
+m4_page_footer
diff --git a/db/docs_src/rep/rep_message.so b/db/docs_src/rep/rep_message.so
new file mode 100644
index 000000000..a27375d9d
--- /dev/null
+++ b/db/docs_src/rep/rep_message.so
@@ -0,0 +1,114 @@
+m4_comment([$Id: rep_message.so,v 1.39 2007/03/20 20:20:26 alanb Exp $])
+
+define(M4PAGELOCAL,
+ [rep_message, DB_REP_DUPMASTER, DB_REP_HOLDELECTION, DB_REP_IGNORE,
+ DB_REP_ISPERM, DB_REP_JOIN_FAILURE, DB_REP_NEWSITE, DB_REP_NOTPERM])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(rep_message),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__rep_process_message(DB_ENV *env,
+ DBT *control, DBT *rec, int envid, DB_LSN *ret_lsnp)
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::rep_process_message(Dbt *control, Dbt *rec, int envid, DbLsn *ret_lsnp)
+]))
+
+m4_p([dnl
+The m4_refT(rep_message) processes an incoming replication message sent
+by a member of the replication group to the local database environment.])
+
+m4_repl_lower(rep_message)
+
+m4_p([dnl
+For implementation reasons, all incoming replication messages must be
+processed using the same m4_ref(DbEnv) 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.])
+
+m4_p([dnl
+The m4_refT(rep_message) has additional return values:])
+
+m4_tagbegin
+m4_tag(m4_idef(DB_REP_DUPMASTER), [dnl
+m4_return(rep_message, except, DB_REP_DUPMASTER,
+[if the replication group has more than one master],
+[The application should reconfigure itself as a client by calling the
+m4_refT(rep_start), and then call for an election by calling
+m4_ref(rep_elect).])])
+
+m4_tag(m4_idef(DB_REP_HOLDELECTION), [dnl
+m4_return(rep_message, except, DB_REP_HOLDELECTION,
+[if an election is needed],
+[The application should call for an election by calling m4_ref(rep_elect).])])
+
+m4_tag(m4_idef(DB_REP_IGNORE), [dnl
+m4_return(rep_message, specific, DB_REP_IGNORE,
+[if this message cannot be processed],
+[This is an indication that this message is irrelevant to the current
+replication state (for example, an old message
+from a previous generation arrives and is processed late).])])
+
+m4_tag(m4_idef(DB_REP_ISPERM), [dnl
+m4_return(rep_message, specific, DB_REP_ISPERM,
+[if processing this message results in the processing of records
+that are permanent],
+[The maximum LSN of the permanent records stored is returned.])])
+
+m4_tag(m4_idef(DB_REP_JOIN_FAILURE), [dnl
+m4_return(rep_message, specific, DB_REP_JOIN_FAILURE,
+[if a new master has been chosen but the client is unable to synchronize
+with the new master (possibly because the client has been configured
+with the m4_ref(DB_REP_CONF_NOAUTOINIT) flag to turn-off automatic
+internal initialization)])])
+
+m4_tag(m4_idef(DB_REP_NEWSITE), [dnl
+m4_return(rep_message, specific, DB_REP_NEWSITE,
+[if the system received contact information from a new environment],
+[The m4_arg(rec) parameter contains the opaque data specified in the
+m4_arg(cdata) parameter to the m4_ref(rep_start). The application
+should take whatever action is needed to establish a communication
+channel with this new environment.])])
+
+m4_tag(m4_idef(DB_REP_NOTPERM), [dnl
+m4_return(rep_message, specific, DB_REP_NOTPERM,
+[if a message carrying a m4_ref(DB_REP_PERMANENT) flag was processed
+successfully, but was not written to disk],
+[The LSN of this record is returned. The application should take
+whatever action is deemed necessary to retain its recoverability
+characteristics.])])
+
+m4_tagend
+
+m4_return(rep_message, prev)
+
+m4_parambegin
+m4_param(control, [dnl
+The m4_arg(control) parameter should reference a copy of the
+m4_arg(control) parameter specified by m4_db on the sending
+environment.])
+
+m4_param(envid, [dnl
+The m4_arg(envid) parameter should contain the local identifier that
+corresponds to the environment that sent the message to be processed
+(see m4_link(M4RELDIR/ref/rep/id, Replication environment IDs) for more
+information).])
+
+m4_param(rec, [dnl
+The m4_arg(rec) parameter should reference a copy of the m4_arg(rec)
+parameter specified by m4_db on the sending environment.])
+
+m4_param(ret_lsnp, [dnl
+If m4_refT(rep_message) returns DB_REP_NOTPERM then the m4_arg(ret_lsnp)
+parameter will contain the log sequence number of this permanent log
+message that could not be written to disk. If m4_refT(rep_message)
+returns DB_REP_ISPERM then the m4_arg(ret_lsnp) parameter will contain
+largest log sequence number of the permanent records that are now
+written to disk as a result of processing this message. In all other
+cases the value of m4_arg( ret_lsnp) is undefined.])
+m4_paramend
+
+m4_seealso(Replication)
+m4_page_footer
diff --git a/db/docs_src/rep/rep_nsites.so b/db/docs_src/rep/rep_nsites.so
new file mode 100644
index 000000000..97bc4dc65
--- /dev/null
+++ b/db/docs_src/rep/rep_nsites.so
@@ -0,0 +1,47 @@
+m4_comment([$Id: rep_nsites.so,v 1.2 2006/06/23 01:28:47 alanb Exp $])
+
+define(M4PAGELOCAL, [rep_set_nsites, rep_get_nsites])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(rep_set_nsites),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__rep_set_nsites(DB_ENV *env, int nsites);
+m4_blank
+int
+DB_ENV-__GT__rep_get_nsites(DB_ENV *env, int *nsitesp);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::rep_set_nsites(int nsites);
+m4_blank
+int
+DbEnv::rep_get_nsites(int *nsitesp);
+]))
+
+m4_p([dnl
+The m4_refT(rep_set_nsites) specifies the total number of sites
+in a replication group.])
+
+m4_p([dnl
+The m4_refT(rep_set_nsites) is typically called by applications which
+use the m4_db library "replication manager" support. (However, see
+also the m4_ref(rep_elect) man page, the description of the m4_arg(nsites)
+parameter.)])
+
+m4_scope_env(rep_set_nsites)
+m4_when_any(rep_set_nsites)
+m4_return(rep_set_nsites, std)
+
+m4_parambegin
+m4_param(nsites, [dnl
+A positive integer specifying the total number of sites in the replication
+group.])
+m4_paramend
+
+m4_pf_getter(rep_get_nsites,
+total number of sites in the replication group,,
+nsitesp)
+
+m4_seealso(Replication)
+m4_page_footer
diff --git a/db/docs_src/rep/rep_priority.so b/db/docs_src/rep/rep_priority.so
new file mode 100644
index 000000000..53385629b
--- /dev/null
+++ b/db/docs_src/rep/rep_priority.so
@@ -0,0 +1,41 @@
+m4_comment([$Id: rep_priority.so,v 1.1 2006/03/15 19:39:22 bostic Exp $])
+
+define(M4PAGELOCAL, [rep_set_priority, rep_get_priority])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(rep_set_priority),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__rep_set_priority(DB_ENV *env, int priority);
+int
+DB_ENV-__GT__rep_get_priority(DB_ENV *env, int *priorityp);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::rep_set_priority(int priority);
+int
+DbEnv::rep_get_priority(int *priorityp);
+]))
+
+m4_p([dnl
+The m4_refT(rep_set_priority) specifies the database environment's
+priority in replication group elections. The priority must be a
+positive integer, or 0 if this environment cannot be a replication
+group master.])
+
+m4_scope_env(rep_set_priority)
+m4_when_any(rep_set_priority)
+m4_return(rep_set_priority, std)
+
+m4_parambegin
+m4_param(priority, [dnl
+The priority of this database environment in the replication group. The
+priority must be a positive integer, or 0 if this environment cannot be
+a replication group master. (See m4_link(M4RELDIR/ref/rep/pri,
+Replication environment priorities) for more information).])
+m4_paramend
+
+m4_pf_getter(rep_get_priority, database environment priority,, priorityp)
+
+m4_seealso(Replication)
+m4_page_footer
diff --git a/db/docs_src/rep/rep_request.so b/db/docs_src/rep/rep_request.so
new file mode 100644
index 000000000..1fc6d4861
--- /dev/null
+++ b/db/docs_src/rep/rep_request.so
@@ -0,0 +1,69 @@
+m4_comment([$Id: rep_request.so,v 1.2 2006/11/30 22:28:28 bostic Exp $])
+
+define(M4PAGELOCAL, [rep_set_request, rep_get_request])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(rep_set_request),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__rep_set_request(DB_ENV *env, u_int32_t min, u_int32_t max);
+m4_blank
+int
+DB_ENV-__GT__rep_get_request(DB_ENV *env, u_int32_t *minp, u_int32_t *maxp);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::rep_set_request(u_int32_t min, u_int32_t max);
+m4_blank
+int
+DbEnv::rep_get_request(u_int32_t *minp, u_int32_t *maxp);
+]))
+
+m4_p([dnl
+The m4_refT(rep_set_request) sets the minimum and maximum number of
+missing log records that a client waits before requesting
+retransmission. Specifically, if a log record is missing, m4_db will
+wait for m4_arg(min) more records to arrive before requesting
+retransmission of the missing record. m4_db will wait double that
+amount before requesting the same missing record again, and so on, up
+to a maximum wait of m4_arg(max) records.])
+
+m4_p([dnl
+By default the minimum is 4 and the maximum is 128, and applications
+rarely need to use values other than the defaults.])
+
+m4_scope_env(rep_set_request)
+m4_when_any(rep_set_request)
+m4_return(rep_set_request, std)
+
+m4_parambegin
+m4_param(max, [dnl
+The maximum number of missing log records a client waits before
+requesting retransmission.])
+m4_param(min, [dnl
+The minimum number of missing log records a client waits before
+requesting retransmission.])
+m4_paramend
+
+m4_err(rep_set_request, einval)
+
+m4_pf_description(m4_ref(rep_get_request))
+m4_p([dnl
+The m4_refT(rep_get_request) returns the minimum and maximum number of
+missing log records a client waits before requesting retransmission.])
+
+m4_when_any(rep_get_request)
+
+m4_return(rep_get_request, std)
+
+m4_parambegin
+m4_param_co(maxp, [dnl
+maximum number of missing log records a client will wait before requesting
+retransmission])
+m4_param_co(minp, [dnl
+minimum number of missing log records a client will wait before requesting
+retransmission])
+m4_paramend
+
+m4_seealso(Replication)
+m4_page_footer
diff --git a/db/docs_src/rep/rep_start.so b/db/docs_src/rep/rep_start.so
new file mode 100644
index 000000000..19e156b96
--- /dev/null
+++ b/db/docs_src/rep/rep_start.so
@@ -0,0 +1,61 @@
+m4_comment([$Id: rep_start.so,v 1.17 2006/03/15 19:39:22 bostic Exp $])
+
+define(M4PAGELOCAL, [rep_start, DB_REP_CLIENT, DB_REP_MASTER])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(rep_start),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__rep_start(DB_ENV *env, DBT *cdata, u_int32_t flags);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::rep_start(Dbt *cdata, u_int32_t flags);
+]))
+
+m4_p([dnl
+The m4_refT(rep_start) configures the database environment as a client
+or master in a group of replicated database environments.])
+
+m4_repl_lower(rep_start)
+
+m4_p([dnl
+Replication master environments are the only database environments where
+replicated databases may be modified. Replication client environments
+are 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.])
+
+m4_p([dnl
+The enclosing database environment must already have been opened by
+calling the m4_refT(dbenv_open) and must already have been configured
+to send replication messages by calling the m4_refT(rep_set_transport).])
+
+m4_return(rep_start, std)
+
+m4_parambegin
+m4_param(cdata, [dnl
+The m4_arg(cdata) parameter is an opaque data item that is sent over the
+communication infrastructure when the client comes online (see
+m4_link(M4RELDIR/ref/rep/newsite, Connecting to a new site) for more
+information). If no such information is useful, m4_arg(cdata) should
+be NULL.])
+
+m4_param(flags, [dnl
+m4_sf_must
+
+m4_tagbegin
+m4_tag(m4_idef(DB_REP_CLIENT), [dnl
+Configure the environment as a replication client.])
+m4_tag(m4_idef(DB_REP_MASTER), [dnl
+Configure the environment as a replication master.])
+m4_tagend])
+m4_paramend
+
+m4_err(rep_start, einval,
+[the database environment was not already configured to communicate with
+a replication group by a call to m4_ref([rep_set_transport]);
+the database environment was not already opened])
+
+m4_seealso(Replication)
+m4_page_footer
diff --git a/db/docs_src/rep/rep_stat.so b/db/docs_src/rep/rep_stat.so
new file mode 100644
index 000000000..881930234
--- /dev/null
+++ b/db/docs_src/rep/rep_stat.so
@@ -0,0 +1,236 @@
+m4_comment([$Id: rep_stat.so,v 10.42 2007/06/22 16:57:17 bostic Exp $])
+
+define(M4PAGELOCAL, [rep_stat, rep_stat_print])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(rep_stat),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__rep_stat(DB_ENV *env, DB_REP_STAT **statp, u_int32_t flags);
+m4_blank
+int
+DB_ENV-__GT__rep_stat_print(DB_ENV *env, u_int32_t flags);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::rep_stat(DB_REP_STAT **statp, u_int32_t flags);
+m4_blank
+int
+DbEnv::rep_stat_print(u_int32_t flags);
+]))
+
+m4_p([dnl
+The m4_refT(rep_stat) returns the replication subsystem statistics.])
+
+m4_p([dnl
+The m4_refT(rep_stat) creates a statistical structure of type
+DB_REP_STAT and copies a pointer to it into a user-specified memory
+location.])
+
+m4_alloc([Statistical structures])
+
+m4_p([dnl
+The following DB_REP_STAT fields will be filled in:])
+
+m4_tagbegin
+m4_field(u_int32_t, st_bulk_fills,
+[The number of times the bulk buffer filled up, forcing the buffer content
+to be sent.])
+
+m4_field(u_int32_t, st_bulk_overflows,
+[The number of times a record was bigger than the entire bulk buffer,
+and therefore had to be sent as a singleton.])
+
+m4_field(u_int32_t, st_bulk_records,
+[The number of records added to a bulk buffer.])
+
+m4_field(u_int32_t, st_bulk_transfers,
+[The number of bulk buffers transferred (via a call to the
+application's m4_arg(send) function).])
+
+m4_field(u_int32_t, st_client_rerequests,
+[The number of times this client site received a "re-request" message,
+indicating that a request it previously sent to another client could
+not be serviced by that client. (Compare to
+m4_arg(st_client_svc_miss).)])
+
+m4_field(u_int32_t, st_client_svc_miss,
+[The number of "request" type messages received by this client that
+could not be processed, forcing the originating requester to try sending
+the request to the master (or another client).])
+
+m4_field(u_int32_t, st_client_svc_req,
+[The number of "request" type messages received by this client.
+("Request" messages are usually sent from a client to the master, but a
+message marked with the m4_ref(DB_REP_ANYWHERE) flag in the invocation
+of the application's m4_arg(send) function may be sent to another client
+instead.)])
+
+m4_field(u_int32_t, st_dupmasters,
+[The number of duplicate master conditions detected.])
+
+m4_field(u_int32_t, st_egen,
+[The current election generation number.])
+
+m4_field(u_int32_t, st_election_cur_winner,
+[The election winner.])
+
+m4_field(u_int32_t, st_election_gen,
+[The election generation number.])
+
+m4_field(DB_LSN, st_election_lsn,
+[The maximum LSN of election winner.])
+
+m4_field(u_int32_t, st_election_nsites,
+[The number sites responding to this site during the last election.])
+
+m4_field(u_int32_t, st_election_nvotes,
+[The number of votes required in the last election.])
+
+m4_field(u_int32_t, st_election_priority,
+[The election priority.])
+
+m4_field(u_int32_t, st_election_sec,
+[The number of seconds the last election took (the total election time
+is m4_arg(st_election_sec) plus m4_arg(st_election_usec)).])
+
+m4_field(u_int32_t, st_election_status,
+[The current election phase (0 if no election is in progress).])
+
+m4_field(u_int32_t, st_election_tiebreaker,
+[The election tiebreaker value.])
+
+m4_field(u_int32_t, st_election_usec,
+[The number of microseconds the last election took (the total election
+time is m4_arg(st_election_sec) plus m4_arg(st_election_usec)).])
+
+m4_field(u_int32_t, st_election_votes,
+[The number of votes received in the last election.])
+
+m4_field(u_int32_t, st_elections,
+[The number of elections held.])
+
+m4_field(u_int32_t, st_elections_won,
+[The number of elections won.])
+
+m4_field(u_int32_t, st_env_id,
+[The current environment ID.])
+
+m4_field(u_int32_t, st_env_priority,
+[The current environment priority.])
+
+m4_field(u_int32_t, st_gen,
+[The current generation number.])
+
+m4_field(u_int32_t, st_log_duplicated,
+[The number of duplicate log records received.])
+
+m4_field(u_int32_t, st_log_queued,
+[The number of log records currently queued.])
+
+m4_field(u_int32_t, st_log_queued_max,
+[The maximum number of log records ever queued at once.])
+
+m4_field(u_int32_t, st_log_queued_total,
+[The total number of log records queued.])
+
+m4_field(u_int32_t, st_log_records,
+[The number of log records received and appended to the log.])
+
+m4_field(u_int32_t, st_log_requested,
+[The number of times log records were missed and requested.])
+
+m4_field(u_int32_t, st_master,
+[The current master environment ID.])
+
+m4_field(u_int32_t, st_master_changes,
+[The number of times the master has changed.])
+
+m4_field(u_int32_t, st_msgs_badgen,
+[The number of messages received with a bad generation number.])
+
+m4_field(u_int32_t, st_msgs_processed,
+[The number of messages received and processed.])
+
+m4_field(u_int32_t, st_msgs_recover,
+[The number of messages ignored due to pending recovery.])
+
+m4_field(u_int32_t, st_msgs_send_failures,
+[The number of failed message sends.])
+
+m4_field(u_int32_t, st_msgs_sent,
+[The number of messages sent.])
+
+m4_field(u_int32_t, st_newsites,
+[The number of new site messages received.])
+
+m4_field(DB_LSN, st_next_lsn,
+[In replication environments configured as masters, the next LSN expected.
+In replication environments configured as clients, the next LSN to be used.])
+
+m4_field(u_int32_t, st_next_pg,
+[The next page number we expect to receive.])
+
+m4_field(int, st_nsites,
+[The number of sites used in the last election.])
+
+m4_field(u_int32_t, st_nthrottles,
+[Transmission limited. This indicates the number of times that data
+transmission was stopped to limit the amount of data sent in response
+to a single call to m4_ref(rep_message).])
+
+m4_field(u_int32_t, st_outdated,
+[The number of outdated conditions detected.])
+
+m4_field(u_int32_t, st_pg_duplicated,
+[The number of duplicate pages received.])
+
+m4_field(u_int32_t, st_pg_records,
+[The number of pages received and stored.])
+
+m4_field(u_int32_t, st_pg_requested,
+[The number of pages missed and requested from the master.])
+
+m4_field(u_int32_t, st_startsync_delayed,
+[The number of times the client had to delay the start of a
+cache flush operation (initiated by the master for an impending
+checkpoint) because it was missing some previous log record(s).])
+
+m4_field(u_int32_t, st_startup_complete,
+[The client site has completed its startup procedures and is now
+handling live records from the master.])
+
+m4_field(u_int32_t, st_status,
+[The current replication mode. Set to m4_ref(DB_REP_MASTER) if the
+environment is a replication master, m4_ref(DB_REP_CLIENT) if the
+environment is a replication client, or 0 if replication is not
+configured.])
+
+m4_field(u_int32_t, st_txns_applied,
+[The number of transactions applied.])
+
+m4_field(DB_LSN, st_waiting_lsn,
+[The LSN of the first log record we have after missing log records
+being waited for, or 0 if no log records are currently missing.])
+
+m4_field(u_int32_t, st_waiting_pg,
+[The page number of the first page we have after missing pages
+being waited for, or 0 if no pages are currently missing.])
+
+m4_tagend
+
+m4_when_after_envopen(rep_stat)
+
+m4_return(rep_stat, std)
+
+m4_parambegin
+m4_param(flags, m4_stat_flags)
+m4_param_co(statp, allocated statistics structure, REF)
+m4_paramend
+
+m4_err(rep_stat, einval)
+
+m4_stat_print(rep_stat_print, replication subsystem, rep_stat)
+
+m4_seealso(Replication)
+m4_page_footer
diff --git a/db/docs_src/rep/rep_sync.so b/db/docs_src/rep/rep_sync.so
new file mode 100644
index 000000000..b72ba6c0f
--- /dev/null
+++ b/db/docs_src/rep/rep_sync.so
@@ -0,0 +1,38 @@
+m4_comment([$Id: rep_sync.so,v 1.10 2007/03/20 20:20:26 alanb Exp $])
+
+define(M4PAGELOCAL, [rep_sync])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(rep_sync),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__rep_sync(DB_ENV *env, u_int32_t flags);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::rep_sync(u_int32_t flags);
+]))
+
+m4_p([dnl
+The m4_refT(rep_sync) forces master synchronization to begin for this
+client. This method is the other half of setting the
+m4_ref(DB_REP_CONF_DELAYCLIENT) flag via the m4_refT(rep_set_config).])
+
+m4_p([dnl
+If an application has configured delayed master synchronization, the
+application must synchronize explicitly (otherwise the client will
+remain out-of-date and will ignore all database changes forwarded from
+the replication group master). The m4_refT(rep_sync) may be called any
+time after the client application learns that the new master has been
+established (by receiving a m4_ref(DB_EVENT_REP_NEWMASTER) event
+notification).])
+
+m4_when_after_envopen(rep_sync)
+m4_return(rep_sync, std)
+
+m4_parambegin
+m4_unusedflags
+m4_paramend
+
+m4_seealso(Replication)
+m4_page_footer
diff --git a/db/docs_src/rep/rep_timeout.so b/db/docs_src/rep/rep_timeout.so
new file mode 100644
index 000000000..980424411
--- /dev/null
+++ b/db/docs_src/rep/rep_timeout.so
@@ -0,0 +1,94 @@
+m4_comment([$Id: rep_timeout.so,v 1.5 2007/03/02 18:46:41 bostic Exp $])
+
+define(M4PAGELOCAL,
+ [rep_set_timeout, rep_get_timeout, DB_REP_ACK_TIMEOUT,
+ DB_REP_CONNECTION_RETRY,
+ DB_REP_ELECTION_TIMEOUT, DB_REP_ELECTION_RETRY,
+ DB_REP_FULL_ELECTION_TIMEOUT])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(rep_set_timeout),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__rep_set_timeout(DB_ENV *env, int which, u_int32_t timeout);
+m4_blank
+int
+DB_ENV-__GT__rep_get_timeout(DB_ENV *env, int which, u_int32_t *timeoutp);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::rep_set_timeout(int which, u_int32_t timeout);
+m4_blank
+int
+DbEnv::rep_get_timeout(int which, u_int32_t *timeoutp);
+]))
+
+m4_p([dnl
+The m4_refT(rep_set_timeout) specifies a variety of replication timeout
+values.])
+
+m4_scope_env(rep_set_timeout)
+m4_when_any(rep_set_timeout)
+m4_return(rep_set_timeout, std)
+
+m4_parambegin
+m4_param(which, [dnl
+The m4_arg(which) parameter must be set to one of the following values:
+
+m4_tagbegin
+m4_tag(m4_idef(DB_REP_ACK_TIMEOUT), [dnl
+Configure the amount of time the replication manager's transport
+function waits to collect enough acknowledgments from replication group
+clients, before giving up and returning a failure indication. The
+default wait time is 1 second.])
+m4_tag(m4_idef(DB_REP_CHECKPOINT_DELAY), [dnl
+Configure the amount of time the replication manager will delay between
+completing a checkpoint and writing a checkpoint record into the log.
+This delay allows clients to complete their own checkpoints before the
+master requires completion of them. The default is 30 seconds.])
+m4_tag(m4_idef(DB_REP_CONNECTION_RETRY), [dnl
+Configure the amount of time the replication manager will wait before
+trying to re-establish a connection to another site after a communication
+failure. The default wait time is 30 seconds.])
+m4_tag(m4_idef(DB_REP_ELECTION_TIMEOUT), [dnl
+The timeout period for an election. The default timeout is 2 seconds.])
+m4_tag(m4_idef(DB_REP_ELECTION_RETRY), [dnl
+Configure the amount of time the replication manager will wait before
+retrying a failed election. The default wait time is 10 seconds.])
+m4_tag(m4_idef(DB_REP_FULL_ELECTION_TIMEOUT), [dnl
+An optional configuration timeout period to wait for full election
+participation the first time the replication group finds a master.
+By default this option is turned off and normal election
+timeouts are used.
+(See the m4_link(M4RELDIR/ref/rep/elect, [Elections])
+section in the m4_db Reference Guide for more information.)])
+m4_tagend
+
+m4_param(timeout, [dnl
+The m4_arg(timeout) parameter is the timeout value. It must be specified
+as an unsigned 32-bit number of microseconds, limiting the maximum timeout
+to roughly 71 minutes.])])
+m4_paramend
+
+m4_err(rep_set_timeout, einval)
+
+m4_pf_description(m4_ref(rep_get_timeout))
+m4_p([dnl
+The m4_refT(rep_get_timeout) returns the timeout value for the specified
+m4_arg(which) parameter.])
+
+m4_when_any(rep_get_timeout)
+
+m4_return(rep_get_timeout, std)
+
+m4_parambegin
+m4_param(which, [dnl
+The m4_arg(which) parameter is the timeout value for which the value
+is being returned.])
+m4_param_co(timeoutp, [dnl
+timeout value of the specified m4_arg(which) parameter],, [dnl
+The returned m4_arg(timeout) value is in microseconds.])
+m4_paramend
+
+m4_seealso(Replication)
+m4_page_footer
diff --git a/db/docs_src/rep/rep_transport.so b/db/docs_src/rep/rep_transport.so
new file mode 100644
index 000000000..6a44918d9
--- /dev/null
+++ b/db/docs_src/rep/rep_transport.so
@@ -0,0 +1,113 @@
+m4_comment([$Id: rep_transport.so,v 1.35 2006/06/05 23:03:53 alanb Exp $])
+
+define(M4PAGELOCAL,
+ [rep_set_transport, DB_REP_ANYWHERE, DB_REP_NOBUFFER, DB_REP_PERMANENT,
+ DB_REP_REREQUEST, DB_EID_BROADCAST])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(rep_set_transport),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__rep_set_transport(DB_ENV *env, int envid,
+ int (*send)(DB_ENV *dbenv,
+ const DBT *control, const DBT *rec, const DB_LSN *lsnp,
+ int envid, u_int32_t flags));
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::rep_set_transport(int envid,
+ int (*send)(DB_ENV *dbenv,
+ const Dbt *control, const Dbt *rec, const DbLsn *lsnp,
+ int envid, u_int32_t flags));
+]))
+
+m4_p([dnl
+The m4_refT(rep_set_transport) initializes the communication infrastructure
+for a database environment participating in a replicated application.])
+
+m4_repl_lower(rep_set_transport)
+
+m4_scope_dbenv(rep_set_transport)
+
+m4_when_any(rep_set_transport)
+
+m4_return(rep_set_transport, std)
+
+m4_parambegin
+m4_param(envid, [dnl
+The m4_arg(envid) parameter is the local environment's ID. It must be
+a non-negative integer and uniquely identify this m4_db database environment
+(see m4_link(M4RELDIR/ref/rep/id, Replication environment IDs) for more
+information).])
+
+m4_param(send, [dnl
+The m4_arg(send) callback function is used to transmit data using the
+replication application's communication infrastructure. The parameters
+to m4_arg(send) are as follows:
+
+m4_tagbegin
+m4_tag(m4_arg(dbenv), [dnl
+The m4_arg(dbenv) parameter is the enclosing database environment handle.])
+m4_tag(m4_arg(control), [dnl
+The m4_arg(control) parameter is the first of the two data elements to be
+transmitted by the m4_arg(send) function.])
+m4_tag(m4_arg(rec), [dnl
+The m4_arg(rec) parameter is the second of the two data elements to be
+transmitted by the m4_arg(send) function.])
+m4_tag(m4_arg(lsnp), [dnl
+If the type of message to be sent has an LSN associated with it, then
+the m4_arg(lsnp) parameter contains the LSN of the record being sent.
+This LSN can be used to determine that certain records have been
+processed successfully by clients.])
+m4_tag(m4_arg(envid), [dnl
+The m4_arg(envid) parameter is a positive integer identifier that
+specifies the replication environment to which the message should be
+sent (see m4_link(M4RELDIR/ref/rep/id, Replication environment IDs) for
+more information).
+m4_idefz(DB_EID_BROADCAST)
+m4_p([dnl
+The special identifier m4_ref(DB_EID_BROADCAST) indicates that a message
+should be broadcast to every environment in the replication group. The
+application may use a true broadcast protocol or may send the message
+in sequence to each machine with which it is in communication. In both
+cases, the sending site should not be asked to process the message.])])
+m4_tag(m4_arg(flags), [m4_sf_or_may
+m4_tagbegin
+m4_tag(m4_idef(DB_REP_ANYWHERE), [dnl
+The message is a client request that can be satisfied by another client
+as well as by the master.])
+m4_tag(m4_idef(DB_REP_NOBUFFER), [dnl
+The record being sent should be transmitted immediately and not buffered
+or delayed.])
+m4_tag(m4_idef(DB_REP_PERMANENT), [dnl
+The record being sent is critical for maintaining database integrity
+(for example, the message includes a transaction commit). The
+application should take appropriate action to enforce the reliability
+guarantees it has chosen, such as waiting for acknowledgement from one
+or more clients.])
+m4_tag(m4_idef(DB_REP_REREQUEST), [dnl
+The message is a client request that has already been made and to which
+no response was received.])
+m4_tagend])
+m4_tagend
+
+m4_p([dnl
+It may sometimes be useful to pass application-specific data to the
+m4_arg(send) function; see m4_link(M4RELDIR/ref/env/faq, Environment
+FAQ) for a discussion on how to do this.])
+
+m4_p([dnl
+The m4_arg(send) function must return 0 on success and non-zero on
+failure. If the m4_arg(send) function fails, the message being sent is
+necessary to maintain database integrity, and the local log is not
+configured for synchronous flushing, the local log will be flushed;
+otherwise, any error from the m4_arg(send) function will be ignored.])
+
+m4_not_reentrant])
+
+m4_paramend
+
+m4_err(rep_set_transport, einval)
+
+m4_seealso(Replication)
+m4_page_footer
diff --git a/db/docs_src/rep/repmgr_ack_policy.so b/db/docs_src/rep/repmgr_ack_policy.so
new file mode 100644
index 000000000..31eb2bd55
--- /dev/null
+++ b/db/docs_src/rep/repmgr_ack_policy.so
@@ -0,0 +1,86 @@
+m4_comment([$Id: repmgr_ack_policy.so,v 1.5 2006/09/07 19:26:44 alanb Exp $])
+
+define(M4PAGELOCAL, [repmgr_set_ack_policy, repmgr_get_ack_policy,
+ DB_REPMGR_ACKS_ALL, DB_REPMGR_ACKS_ALL_PEERS, DB_REPMGR_ACKS_NONE,
+ DB_REPMGR_ACKS_ONE, DB_REPMGR_ACKS_ONE_PEER, DB_REPMGR_ACKS_QUORUM])
+
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(repmgr_set_ack_policy),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__repmgr_set_ack_policy(DB_ENV *env, int ack_policy);
+m4_blank
+int
+DB_ENV-__GT__repmgr_get_ack_policy(DB_ENV *env, int *ack_policyp);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::repmgr_set_ack_policy(int ack_policy);
+m4_blank
+int
+DbEnv::repmgr_get_ack_policy(int *ack_policyp);
+]))
+
+m4_p([dnl
+The m4_refT(repmgr_set_ack_policy) specifies how master and client sites
+will handle acknowledgment of replication messages which are necessary
+for "permanent" records. The current implementation requires all
+sites in a replication group configure the same acknowledgement
+policy.])
+
+m4_scope_env(repmgr_set_ack_policy)
+m4_when_any(repmgr_set_ack_policy)
+m4_return(repmgr_set_ack_policy, std)
+
+m4_parambegin
+m4_param(ack_policy, [dnl
+The m4_arg(ack_policy) parameter must be set to one of the following
+values:])
+
+m4_tagbegin
+m4_tag(m4_idef(DB_REPMGR_ACKS_ALL), [dnl
+The master should wait until all replication clients have acknowledged
+each permanent replication message.])
+
+m4_tag(m4_idef(DB_REPMGR_ACKS_ALL_PEERS), [dnl
+The master should wait until all electable peers have acknowledged each
+permanent replication message (where "electable peer" means a client
+capable of being subsequently elected master of the replication
+group).])
+
+m4_tag(m4_idef(DB_REPMGR_ACKS_NONE), [dnl
+The master should not wait for any client replication message
+acknowledgments.])
+
+m4_tag(m4_idef(DB_REPMGR_ACKS_ONE), [dnl
+The master should wait until at least one client site has acknowledged
+each permanent replication message.])
+
+m4_tag(m4_idef(DB_REPMGR_ACKS_ONE_PEER), [dnl
+The master should wait until at least one electable peer has
+acknowledged each permanent replication message (where "electable peer"
+means a client capable of being subsequently elected master of the
+replication group).])
+
+m4_tag(m4_idef(DB_REPMGR_ACKS_QUORUM), [dnl
+The master should wait until it has received acknowledgements from the
+minimum number of electable peers sufficient to ensure that the effect
+of the permanent record remains durable if an election is held (where
+"electable peer" means a client capable of being subsequently elected
+master of the replication group). This is the default acknowledgement
+policy.])
+
+m4_tagend
+
+m4_p([dnl
+Waiting for client acknowledgements is always limited by the
+m4_ref(DB_REP_ACK_TIMEOUT) specified by m4_ref(rep_set_timeout).])
+
+m4_paramend
+
+m4_pf_getter(repmgr_get_ack_policy,
+replication manager's client acknowledgment policy,, ack_policyp)
+
+m4_seealso(Replication)
+m4_page_footer
diff --git a/db/docs_src/rep/repmgr_local_site.so b/db/docs_src/rep/repmgr_local_site.so
new file mode 100644
index 000000000..6d77130b4
--- /dev/null
+++ b/db/docs_src/rep/repmgr_local_site.so
@@ -0,0 +1,33 @@
+m4_comment([$Id: repmgr_local_site.so,v 1.2 2006/04/27 18:07:38 bostic Exp $])
+
+define(M4PAGELOCAL, [repmgr_set_local_site])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(repmgr_set_local_site),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__repmgr_set_local_site(DB_ENV *env,
+ const char *host, u_int port, u_int32_t flags);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::repmgr_set_add_site(const char *host, u_int port, u_int32_t flags);
+]))
+
+m4_p([dnl
+The m4_refT(repmgr_set_local_site) specifies the host identification
+string and port number for the local system.])
+
+m4_when_before_repmgr_start(repmgr_set_local_site)
+m4_return(repmgr_set_local_site, std)
+
+m4_parambegin
+m4_unusedflags
+m4_param(host, [dnl
+The site's host identification string, generally a TCP/IP host name.])
+m4_param(port, [dnl
+The port number on which the local site is listening.])
+m4_paramend
+
+m4_seealso(Replication)
+m4_page_footer
diff --git a/db/docs_src/rep/repmgr_remote_site.so b/db/docs_src/rep/repmgr_remote_site.so
new file mode 100644
index 000000000..39e87ed46
--- /dev/null
+++ b/db/docs_src/rep/repmgr_remote_site.so
@@ -0,0 +1,48 @@
+m4_comment([$Id: repmgr_remote_site.so,v 1.5 2006/09/08 18:33:38 bostic Exp $])
+
+define(M4PAGELOCAL, [repmgr_add_remote_site, DB_REPMGR_PEER])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(repmgr_add_remote_site),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__repmgr_add_remote_site(DB_ENV *env,
+ const char *host, u_int port, int *eidp, u_int32_t flags);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::repmgr_add_remote_site(
+ const char *host, u_int port, int *eidp, u_int32_t flags);
+]))
+
+m4_p([dnl
+The m4_refT(repmgr_add_remote_site) adds a new replication site to the
+replication manager's list of known sites. It is not necessary for
+all sites in a replication group to know about all other sites in the
+group.])
+
+m4_when_any(repmgr_add_remote_site)
+m4_return(repmgr_add_remote_site, std)
+
+m4_parambegin
+m4_param(eidp, [dnl
+If m4_arg(eidp) is non-NULL, the
+environment ID assigned to the remote site is
+returned in the memory location referenced by m4_arg(eidp).])
+m4_tag(m4_arg(flags), [m4_sf_or_may
+m4_tagbegin
+m4_tag(m4_idef(DB_REPMGR_PEER), [dnl
+Specifying the m4_ref(DB_REPMGR_PEER) flag configures client-to-client
+synchronization with the specified remote site.
+m4_p([dnl
+Currently, the replication manager framework only supports a single client
+peer, and the last specified peer is used.])])
+m4_tagend])
+m4_param(host, [dnl
+The site's host identification string, generally a TCP/IP host name.])
+m4_param(port, [dnl
+The port number on which the remote site is receiving.])
+m4_paramend
+
+m4_seealso(Replication)
+m4_page_footer
diff --git a/db/docs_src/rep/repmgr_site_list.so b/db/docs_src/rep/repmgr_site_list.so
new file mode 100644
index 000000000..8dde1546b
--- /dev/null
+++ b/db/docs_src/rep/repmgr_site_list.so
@@ -0,0 +1,59 @@
+m4_comment([$Id: repmgr_site_list.so,v 1.7 2006/09/11 16:57:54 bostic Exp $])
+
+define(M4PAGELOCAL,
+ [repmgr_site_list, DB_REPMGR_CONNECTED, DB_REPMGR_DISCONNECTED])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(repmgr_site_list),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__repmgr_site_list(DB_ENV *env,
+ u_int *countp, DB_REPMGR_SITE **listp);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::repmgr_site_list(u_int *countp, DB_REPMGR_SITE **listp);
+]))
+
+m4_p([dnl
+The m4_refT(repmgr_site_list) returns the status of the sites currently
+known by the replication manager.])
+
+m4_p([dnl
+The m4_refT(repmgr_site_list) creates a statistical structure of type
+DB_REPMGR_SITE and copies a pointer to it into a user-specified memory
+location.])
+
+m4_alloc([Statistical structures])
+
+m4_p([dnl
+The following DB_REPMGR_SITE fields will be filled in:])
+
+m4_tagbegin
+m4_field(int, eid, [dnl
+Environment ID assigned by the replication manager.
+This is the same value that is passed to the application's
+event notification function for the m4_ref(DB_EVENT_REP_NEWMASTER) event.])
+m4_field(char, host__LB____RB__, [Nul-terminated host name.])
+m4_field(u_int, port, [dnl
+TCP/IP port number.])
+m4_field(u_int32_t, status, [dnl
+One of the following list of constants: m4_idef(DB_REPMGR_CONNECTED),
+m4_idef(DB_REPMGR_DISCONNECTED).])
+m4_tagend
+
+m4_when_any(repmgr_site_list)
+
+m4_return(repmgr_site_list, std)
+
+m4_parambegin
+m4_param(countp, [dnl
+A count of the returned structures will be stored into the memory
+referenced by m4_arg(countp).])
+m4_param(listp, [dnl
+A reference to an array of structures will be stored into the memory
+referenced by m4_arg(listp).])
+m4_paramend
+
+m4_seealso(Replication)
+m4_page_footer
diff --git a/db/docs_src/rep/repmgr_start.so b/db/docs_src/rep/repmgr_start.so
new file mode 100644
index 000000000..7d9dcdbc5
--- /dev/null
+++ b/db/docs_src/rep/repmgr_start.so
@@ -0,0 +1,93 @@
+m4_comment([$Id: repmgr_start.so,v 1.6 2006/11/30 21:19:38 bostic Exp $])
+
+define(M4PAGELOCAL,
+ [repmgr_start, DB_REP_MASTER, DB_REP_CLIENT, DB_REP_ELECTION,
+ DB_REP_FULL_ELECTION])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(repmgr_start),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__repmgr_start(DB_ENV *env, int nthreads, u_int32_t flags);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::repmgr_start(int nthreads, u_int32_t flags);
+]))
+
+m4_p([dnl
+The m4_refT(repmgr_start) starts the replication manager.])
+
+m4_p([dnl
+There are two ways to build m4_db replication applications: the most
+common approach is to use the m4_db library "replication manager"
+support, where the m4_db library manages the replication group,
+including network transport, all replication message processing and
+acknowledgment, and group elections. Applications using the replication
+manager support generally make the following calls:])
+
+m4_nlistbegin
+m4_nlist([dnl
+Call m4_ref(repmgr_set_local_site) to configure the local site in the
+replication group.])
+
+m4_nlist([dnl
+Call m4_ref(repmgr_add_remote_site) to configure the remote site(s) in
+the replication group.])
+
+m4_nlist([dnl
+Call m4_ref(repmgr_set_ack_policy) to configure the message
+acknowledgment policy which provides the replication group's
+transactional needs.])
+
+m4_nlist([dnl
+Call m4_ref(rep_set_priority) to configure the local site's election
+priority.])
+
+m4_nlist([dnl
+Call m4_ref(repmgr_start) to start the replication application.])
+
+m4_nlistend
+
+m4_p([dnl
+For more information on building replication manager applications,
+please see the "Replication Manager Getting Started Guide" included in
+the m4_db documentation.])
+
+m4_p([dnl
+Applications with special needs (for example, applications using network
+protocols not supported by the m4_db replication manager), must perform
+additional configuration and call other m4_db replication methods. For
+more information on building advanced replication applications, please
+see the "Advanced Replication Applications Guide" included in the m4_db
+documentation.])
+
+m4_when_after_envopen(repmgr_start)
+m4_return(repmgr_start, std)
+
+m4_parambegin
+m4_param(flags, [dnl
+m4_sf_must
+m4_tagbegin
+m4_tag(m4_idef(DB_REP_MASTER), [dnl
+Start as a master site, and do not call for an election. Note there
+must never be more than a single master in any replication group, and
+only one site at a time should ever be started with the
+m4_ref(DB_REP_MASTER) flag specified.])
+
+m4_tag(m4_idef(DB_REP_CLIENT), [dnl
+Start as a client site, and do not call for an election.])
+
+m4_tag(m4_idef(DB_REP_ELECTION), [dnl
+Start as a client, and call for an election if no master is found.])
+m4_tagend])
+
+m4_param(nthreads, [dnl
+Specify the number of threads of control created and dedicated to processing
+replication messages. In addition to these message processing threads,
+the replication manager creates and manages a few of its own threads of
+control.])
+m4_paramend
+
+m4_seealso(Replication)
+m4_page_footer
diff --git a/db/docs_src/rep/repmgr_stat.so b/db/docs_src/rep/repmgr_stat.so
new file mode 100644
index 000000000..f99b7a458
--- /dev/null
+++ b/db/docs_src/rep/repmgr_stat.so
@@ -0,0 +1,76 @@
+m4_comment([$Id: repmgr_stat.so,v 10.1 2007/06/22 16:57:17 bostic Exp $])
+
+define(M4PAGELOCAL, [repmgr_stat, repmgr_stat_print])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(repmgr_stat),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__repmgr_stat(DB_ENV *env, DB_REPMGR_STAT **statp, u_int32_t flags);
+m4_blank
+int
+DB_ENV-__GT__repmgr_stat_print(DB_ENV *env, u_int32_t flags);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::repmgr_stat(DB_REPMGR_STAT **statp, u_int32_t flags);
+m4_blank
+int
+DbEnv::repmgr_stat_print(u_int32_t flags);
+]))
+
+m4_p([dnl
+The m4_refT(repmgr_stat) returns the replication manager statistics.])
+
+m4_p([dnl
+The m4_refT(repmgr_stat) creates a statistical structure of type
+DB_REPMGR_STAT and copies a pointer to it into a user-specified memory
+location.])
+
+m4_alloc([Statistical structures])
+
+m4_p([dnl
+The following DB_REPMGR_STAT fields will be filled in:])
+
+m4_tagbegin
+
+m4_field(u_int32_t, st_perm_failed, [dnl
+The number of times a message critical for maintaining database
+integrity (for example, a transaction commit), originating at this site,
+did not receive sufficient acknowledgement from clients, according to
+the configured acknowledgement policy and acknowledgement timeout.])
+
+m4_field(u_int32_t, st_msgs_queued, [dnl
+The number of outgoing messages which could not be transmitted
+immediately, due to a full network buffer, and had to be queued for
+later delivery.])
+
+m4_field(u_int32_t, st_msgs_dropped, [dnl
+The number of outgoing messages that were completely dropped, because
+the outgoing message queue was full. (m4_db replication is tolerant of
+dropped messages, and will automatically request retransmission of any
+missing messages as needed.)])
+
+m4_field(u_int32_t, st_connection_drop, [dnl
+The number of times an existing TCP/IP connection failed.])
+
+m4_field(u_int32_t, st_connect_fail, [dnl
+The number of times an attempt to open a new TCP/IP connection failed.])
+
+m4_tagend
+
+m4_when_after_envopen(repmgr_stat)
+
+m4_return(repmgr_stat, std)
+
+m4_parambegin
+m4_param(flags, m4_stat_flags)
+m4_param_co(statp, allocated statistics structure, REF)
+m4_paramend
+
+m4_err(repmgr_stat, einval)
+
+m4_stat_print(repmgr_stat_print, replication manager, repmgr_stat)
+
+m4_seealso(Replication)
+m4_page_footer
diff --git a/db/docs_src/rtc/set_func_close.so b/db/docs_src/rtc/set_func_close.so
new file mode 100644
index 000000000..e2810925e
--- /dev/null
+++ b/db/docs_src/rtc/set_func_close.so
@@ -0,0 +1,23 @@
+m4_comment([$Id: set_func_close.so,v 10.14 2003/09/25 15:28:06 bostic Exp $])
+
+define(M4PAGELOCAL, dbenv_set_func_close)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbenv_set_func_close),
+ifelse(M4API, C_API, [dnl
+int
+db_env_set_func_close(int (*func_close)(int fd));
+]))
+
+m4_posix_func(close)
+
+m4_scope_process(dbenv_set_func_close)
+
+m4_when_init(dbenv_set_func_close)
+
+m4_return(dbenv_set_func_close, std)
+
+m4_param_replace(func_close)
+
+m4_rtc_seealso
+m4_page_footer
diff --git a/db/docs_src/rtc/set_func_dirfree.so b/db/docs_src/rtc/set_func_dirfree.so
new file mode 100644
index 000000000..67ad5f6f4
--- /dev/null
+++ b/db/docs_src/rtc/set_func_dirfree.so
@@ -0,0 +1,34 @@
+m4_comment([$Id: set_func_dirfree.so,v 10.19 2004/08/13 03:39:02 bostic Exp $])
+
+define(M4PAGELOCAL, dbenv_set_func_dirfree)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbenv_set_func_dirfree),
+ifelse(M4API, C_API, [dnl
+int
+db_env_set_func_dirfree(void (*func_dirfree)(char **namesp, int cnt));
+]))
+
+m4_p([dnl
+The m4_db library requires the ability to return any memory allocated as part
+of the routine which reads through a directory and creates a list of files
+that the directory contains (see m4_ref(dbenv_set_func_dirlist)).])
+
+m4_scope_process(dbenv_set_func_dirfree)
+
+m4_when_init(dbenv_set_func_dirfree)
+
+m4_return(dbenv_set_func_dirfree, std)
+
+m4_parambegin
+m4_param(func_dirfree, [dnl
+The m4_arg(func_dirfree) parameter is a function which frees the memory
+returned from the m4_ref(dbenv_set_func_dirlist) function.
+m4_p([dnl
+The m4_arg(namesp) and m4_arg(cnt) parameters to this function are the
+same values as were returned by the m4_ref(dbenv_set_func_dirlist)
+function.])])
+m4_paramend
+
+m4_rtc_seealso
+m4_page_footer
diff --git a/db/docs_src/rtc/set_func_dirlist.so b/db/docs_src/rtc/set_func_dirlist.so
new file mode 100644
index 000000000..b8d151dd3
--- /dev/null
+++ b/db/docs_src/rtc/set_func_dirlist.so
@@ -0,0 +1,39 @@
+m4_comment([$Id: set_func_dirlist.so,v 10.19 2004/08/13 03:39:02 bostic Exp $])
+
+define(M4PAGELOCAL, dbenv_set_func_dirlist)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbenv_set_func_dirlist),
+ifelse(M4API, C_API, [dnl
+int
+db_env_set_func_dirlist(
+ int (*func_dirlist)(const char *dir, char ***namesp, int *cntp));
+]))
+
+m4_p([dnl
+The m4_db library requires the ability to read through a directory and
+create a list of files that the directory contains.])
+
+m4_scope_process(dbenv_set_func_dirlist)
+
+m4_when_init(dbenv_set_func_dirlist)
+
+m4_return(dbenv_set_func_dirlist, std)
+
+m4_parambegin
+m4_param(func_dirlist, [dnl
+The m4_arg(func_dirlist) parameter is the function which reads through
+a directory and returns a list of the files it contains.
+m4_p([dnl
+The m4_arg(dir) parameter to this function is the name of the directory
+to be searched.])
+m4_p([dnl
+The function must return a pointer to an array of nul-terminated file
+names into the memory location to which the m4_arg(namesp) parameter
+refers, and a count of the number of elements in the array into the
+memory location to which m4_arg(cntp) refers.])])
+m4_ret_internal(func_dirlist)
+m4_paramend
+
+m4_rtc_seealso
+m4_page_footer
diff --git a/db/docs_src/rtc/set_func_exists.so b/db/docs_src/rtc/set_func_exists.so
new file mode 100644
index 000000000..4dd0d638a
--- /dev/null
+++ b/db/docs_src/rtc/set_func_exists.so
@@ -0,0 +1,36 @@
+m4_comment([$Id: set_func_exists.so,v 10.18 2004/08/13 03:39:02 bostic Exp $])
+
+define(M4PAGELOCAL, dbenv_set_func_exists)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbenv_set_func_exists),
+ifelse(M4API, C_API, [dnl
+int
+db_env_set_func_exists(int (*func_exists)(const char *path, int *isdirp));
+]))
+
+m4_p([dnl
+The m4_db library requires the ability to determine whether a file
+exists and whether it is a file of type directory.])
+
+m4_scope_process(dbenv_set_func_exists)
+
+m4_when_init(dbenv_set_func_exists)
+
+m4_return(dbenv_set_func_exists, std)
+
+m4_parambegin
+m4_param(func_exists, [dnl
+The m4_arg(func_exists) parameter is the function which returns if a
+file exists and if it is a file of type directory.
+m4_p([dnl
+The m4_arg(path) parameter to this function is the pathname of the file
+to be checked.])
+m4_p([dnl
+If the m4_arg(isdirp) parameter is non-NULL, it must be set to non-0 if
+m4_arg(path) is a directory, and 0 if m4_arg(path) is not a directory.])
+m4_ret_internal(func_exists)])
+m4_paramend
+
+m4_rtc_seealso
+m4_page_footer
diff --git a/db/docs_src/rtc/set_func_free.so b/db/docs_src/rtc/set_func_free.so
new file mode 100644
index 000000000..9cb62856d
--- /dev/null
+++ b/db/docs_src/rtc/set_func_free.so
@@ -0,0 +1,23 @@
+m4_comment([$Id: set_func_free.so,v 10.14 2003/09/25 15:28:07 bostic Exp $])
+
+define(M4PAGELOCAL, dbenv_set_func_free)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbenv_set_func_free),
+ifelse(M4API, C_API, [dnl
+int
+db_env_set_func_free(void (*func_free)(void *ptr));
+]))
+
+m4_ansi_func(free)
+
+m4_scope_process(dbenv_set_func_free)
+
+m4_when_init(dbenv_set_func_free)
+
+m4_return(dbenv_set_func_free, std)
+
+m4_param_replace(func_free)
+
+m4_rtc_seealso
+m4_page_footer
diff --git a/db/docs_src/rtc/set_func_fsync.so b/db/docs_src/rtc/set_func_fsync.so
new file mode 100644
index 000000000..62562a92f
--- /dev/null
+++ b/db/docs_src/rtc/set_func_fsync.so
@@ -0,0 +1,23 @@
+m4_comment([$Id: set_func_fsync.so,v 10.14 2003/09/25 15:28:07 bostic Exp $])
+
+define(M4PAGELOCAL, dbenv_set_func_fsync)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbenv_set_func_fsync),
+ifelse(M4API, C_API, [dnl
+int
+db_env_set_func_fsync(int (*func_fsync)(int fd));
+]))
+
+m4_posix_func(fsync)
+
+m4_scope_process(dbenv_set_func_fsync)
+
+m4_when_init(dbenv_set_func_fsync)
+
+m4_return(dbenv_set_func_fsync, std)
+
+m4_param_replace(func_fsync)
+
+m4_rtc_seealso
+m4_page_footer
diff --git a/db/docs_src/rtc/set_func_ftruncate.so b/db/docs_src/rtc/set_func_ftruncate.so
new file mode 100644
index 000000000..6ad84d523
--- /dev/null
+++ b/db/docs_src/rtc/set_func_ftruncate.so
@@ -0,0 +1,34 @@
+m4_comment([$Id: set_func_ftruncate.so,v 1.3 2004/09/20 14:29:50 mjc Exp $])
+
+define(M4PAGELOCAL, dbenv_set_func_ftruncate)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbenv_set_func_ftruncate),
+ifelse(M4API, C_API, [dnl
+int
+db_env_set_func_ftruncate(int (*func_ftruncate)(int fd, off_t offset));
+]))
+
+m4_p([dnl
+The m4_db library requires the ability to truncate a file.])
+
+m4_scope_process(dbenv_set_func_ftruncate)
+
+m4_when_init(dbenv_set_func_ftruncate)
+
+m4_return(dbenv_set_func_ftruncate, std)
+
+m4_parambegin
+m4_param(func_ftruncate, [dnl
+The m4_arg(func_ftruncate) parameter is the function which truncates a file.
+m4_p([dnl
+The m4_arg(fd) parameter is an open file descriptor on the file.])
+m4_p([dnl
+The m4_arg(ftruncate) function must truncate the file to the byte
+length specified by the m4_arg(offset) parameter.])
+
+m4_ret_internal(func_ftruncate)])
+m4_paramend
+
+m4_rtc_seealso
+m4_page_footer
diff --git a/db/docs_src/rtc/set_func_ioinfo.so b/db/docs_src/rtc/set_func_ioinfo.so
new file mode 100644
index 000000000..326a63efd
--- /dev/null
+++ b/db/docs_src/rtc/set_func_ioinfo.so
@@ -0,0 +1,45 @@
+m4_comment([$Id: set_func_ioinfo.so,v 10.17 2004/08/13 03:39:02 bostic Exp $])
+
+define(M4PAGELOCAL, dbenv_set_func_ioinfo)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbenv_set_func_ioinfo),
+ifelse(M4API, C_API, [dnl
+int
+db_env_set_func_ioinfo(int (*func_ioinfo)(const char *path,
+ int fd, u_int32_t *mbytesp, u_int32_t *bytesp, u_int32_t *iosizep));
+]))
+
+m4_p([dnl
+The m4_db library requires the ability to determine the size and I/O
+characteristics of a file.])
+
+m4_scope_process(dbenv_set_func_ioinfo)
+
+m4_when_init(dbenv_set_func_ioinfo)
+
+m4_return(dbenv_set_func_ioinfo, std)
+
+m4_parambegin
+m4_param(func_ioinfo, [dnl
+The m4_arg(func_ioinfo) parameter is the function which returns the size
+and I/O characteristics of a file.
+m4_p([dnl
+The m4_arg(path) parameter is the pathname of the file to be checked, and the
+m4_arg(fd) parameter is an open file descriptor on the file.])
+m4_p([dnl
+If the m4_arg(mbytesp) and m4_arg(bytesp) parameters are non-NULL, the
+m4_arg(ioinfo) function must return in them the size of the file: the
+number of megabytes in the file into the memory location to which the
+m4_arg(mbytesp) parameter refers, and the number of bytes over and above
+that number of megabytes into the memory location to which the
+m4_arg(bytesp) parameter refers.])
+m4_p([dnl
+In addition, if the m4_arg(iosizep) parameter is non-NULL, the m4_arg(ioinfo)
+function must return the optimum granularity for I/O operations to the file
+into the memory location to which it refers.])
+m4_ret_internal(func_ioinfo)])
+m4_paramend
+
+m4_rtc_seealso
+m4_page_footer
diff --git a/db/docs_src/rtc/set_func_malloc.so b/db/docs_src/rtc/set_func_malloc.so
new file mode 100644
index 000000000..9546d43c6
--- /dev/null
+++ b/db/docs_src/rtc/set_func_malloc.so
@@ -0,0 +1,23 @@
+m4_comment([$Id: set_func_malloc.so,v 10.14 2003/09/25 15:28:07 bostic Exp $])
+
+define(M4PAGELOCAL, dbenv_set_func_malloc)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbenv_set_func_malloc),
+ifelse(M4API, C_API, [dnl
+int
+db_env_set_func_malloc(void *(*func_malloc)(size_t size));
+]))
+
+m4_ansi_func(malloc)
+
+m4_scope_process(dbenv_set_func_malloc)
+
+m4_when_init(dbenv_set_func_malloc)
+
+m4_return(dbenv_set_func_malloc, std)
+
+m4_param_replace(func_malloc)
+
+m4_rtc_seealso
+m4_page_footer
diff --git a/db/docs_src/rtc/set_func_map.so b/db/docs_src/rtc/set_func_map.so
new file mode 100644
index 000000000..70071d35c
--- /dev/null
+++ b/db/docs_src/rtc/set_func_map.so
@@ -0,0 +1,50 @@
+m4_comment([$Id: set_func_map.so,v 10.20 2004/08/13 03:39:02 bostic Exp $])
+
+define(M4PAGELOCAL, dbenv_set_func_map)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbenv_set_func_map),
+ifelse(M4API, C_API, [dnl
+int
+db_env_set_func_map(int (*func_map)(char *path,
+ size_t len, int is_region, int is_rdonly, void **addr));
+]))
+
+m4_p([dnl
+The m4_db library requires the ability to map a file into memory and to
+create shared memory regions (which may or may not be backed by files).])
+
+m4_scope_process(dbenv_set_func_map)
+
+m4_when_init(dbenv_set_func_map)
+
+m4_return(dbenv_set_func_map, std)
+
+m4_parambegin
+m4_param(func_map, [dnl
+The m4_arg(func_map) parameter is the function which maps a file into
+memory and creates shared memory regions.
+m4_p([dnl
+The m4_arg(path) parameter is the name of a file.])
+m4_p([dnl
+The m4_arg(is_region) parameter will be zero if the intention is to map
+a file into shared memory. In this case, the m4_arg(map) function must
+map the first m4_arg(len) bytes of the file into memory and return a
+pointer to the mapped location into the memory location to which the
+parameter m4_arg(addr) refers. The m4_arg(is_rdonly) parameter will be
+non-zero if the file is considered read-only by the caller.])
+m4_p([dnl
+The m4_arg(is_region) parameter will be non-zero if the memory is
+intended to be used as a shared memory region for synchronization
+between m4_db threads/processes. In this case, the returned memory may
+be of any kind (for example, anonymous memory), but must be able to
+support semaphores. In this case, the m4_arg(path) parameter may be
+ignored (although future m4_arg(map) calls using the same m4_arg(path)
+must return the same memory), and the m4_arg(is_rdonly) parameter will
+always be zero.])
+m4_ret_internal(func_map)])
+m4_paramend
+
+m4_rtc_seealso
+m4_page_footer
+
diff --git a/db/docs_src/rtc/set_func_open.so b/db/docs_src/rtc/set_func_open.so
new file mode 100644
index 000000000..a532d8b8d
--- /dev/null
+++ b/db/docs_src/rtc/set_func_open.so
@@ -0,0 +1,23 @@
+m4_comment([$Id: set_func_open.so,v 10.14 2003/09/25 15:28:07 bostic Exp $])
+
+define(M4PAGELOCAL, dbenv_set_func_open)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbenv_set_func_open),
+ifelse(M4API, C_API, [dnl
+int
+db_env_set_func_open(int (*func_open)(const char *path, int flags, int mode));
+]))
+
+m4_posix_func(open)
+
+m4_scope_process(dbenv_set_func_open)
+
+m4_when_init(dbenv_set_func_open)
+
+m4_return(dbenv_set_func_open, std)
+
+m4_param_replace(func_open)
+
+m4_rtc_seealso
+m4_page_footer
diff --git a/db/docs_src/rtc/set_func_pread.so b/db/docs_src/rtc/set_func_pread.so
new file mode 100644
index 000000000..47fdca7bd
--- /dev/null
+++ b/db/docs_src/rtc/set_func_pread.so
@@ -0,0 +1,23 @@
+m4_comment([$Id: set_func_pread.so,v 1.1 2003/12/11 21:32:46 bostic Exp $])
+
+define(M4PAGELOCAL, dbenv_set_func_pread)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbenv_set_func_pread),
+ifelse(M4API, C_API, [dnl
+int
+db_env_set_func_pread(ssize_t (*func_pread)(int fd, void *buf, size_t nbytes, off_t offset));
+]))
+
+m4_posix_func(pread)
+
+m4_scope_process(dbenv_set_func_pread)
+
+m4_when_init(dbenv_set_func_pread)
+
+m4_return(dbenv_set_func_pread, std)
+
+m4_param_replace(func_pread)
+
+m4_rtc_seealso
+m4_page_footer
diff --git a/db/docs_src/rtc/set_func_pwrite.so b/db/docs_src/rtc/set_func_pwrite.so
new file mode 100644
index 000000000..fbd736d6f
--- /dev/null
+++ b/db/docs_src/rtc/set_func_pwrite.so
@@ -0,0 +1,23 @@
+m4_comment([$Id: set_func_pwrite.so,v 1.1 2003/12/11 21:32:47 bostic Exp $])
+
+define(M4PAGELOCAL, dbenv_set_func_pwrite)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbenv_set_func_pwrite),
+ifelse(M4API, C_API, [dnl
+int
+db_env_set_func_pwrite(ssize_t (*func_pwrite)(int fd, const void *buf, size_t nbytes, off_t offset));
+]))
+
+m4_posix_func(pwrite)
+
+m4_scope_process(dbenv_set_func_pwrite)
+
+m4_when_init(dbenv_set_func_pwrite)
+
+m4_return(dbenv_set_func_pwrite, std)
+
+m4_param_replace(func_pwrite)
+
+m4_rtc_seealso
+m4_page_footer
diff --git a/db/docs_src/rtc/set_func_read.so b/db/docs_src/rtc/set_func_read.so
new file mode 100644
index 000000000..bc794cfe1
--- /dev/null
+++ b/db/docs_src/rtc/set_func_read.so
@@ -0,0 +1,23 @@
+m4_comment([$Id: set_func_read.so,v 10.14 2003/09/25 15:28:08 bostic Exp $])
+
+define(M4PAGELOCAL, dbenv_set_func_read)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbenv_set_func_read),
+ifelse(M4API, C_API, [dnl
+int
+db_env_set_func_read(ssize_t (*func_read)(int fd, void *buf, size_t nbytes));
+]))
+
+m4_posix_func(read)
+
+m4_scope_process(dbenv_set_func_read)
+
+m4_when_init(dbenv_set_func_read)
+
+m4_return(dbenv_set_func_read, std)
+
+m4_param_replace(func_read)
+
+m4_rtc_seealso
+m4_page_footer
diff --git a/db/docs_src/rtc/set_func_realloc.so b/db/docs_src/rtc/set_func_realloc.so
new file mode 100644
index 000000000..4da68dec3
--- /dev/null
+++ b/db/docs_src/rtc/set_func_realloc.so
@@ -0,0 +1,23 @@
+m4_comment([$Id: set_func_realloc.so,v 10.14 2003/09/25 15:28:08 bostic Exp $])
+
+define(M4PAGELOCAL, dbenv_set_func_realloc)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbenv_set_func_realloc),
+ifelse(M4API, C_API, [dnl
+int
+db_env_set_func_realloc(void *(*func_realloc)(void *ptr, size_t size));
+]))
+
+m4_ansi_func(realloc)
+
+m4_scope_process(dbenv_set_func_realloc)
+
+m4_when_init(dbenv_set_func_realloc)
+
+m4_return(dbenv_set_func_realloc, std)
+
+m4_param_replace(func_realloc)
+
+m4_rtc_seealso
+m4_page_footer
diff --git a/db/docs_src/rtc/set_func_rename.so b/db/docs_src/rtc/set_func_rename.so
new file mode 100644
index 000000000..940defd2c
--- /dev/null
+++ b/db/docs_src/rtc/set_func_rename.so
@@ -0,0 +1,23 @@
+m4_comment([$Id: set_func_rename.so,v 10.16 2003/09/25 15:28:08 bostic Exp $])
+
+define(M4PAGELOCAL, dbenv_set_func_rename)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbenv_set_func_rename),
+ifelse(M4API, C_API, [dnl
+int
+db_env_set_func_rename(int (*func_rename)(const char *from, const char *to));
+]))
+
+m4_posix_func(rename)
+
+m4_scope_process(dbenv_set_func_rename)
+
+m4_when_init(dbenv_set_func_rename)
+
+m4_return(dbenv_set_func_rename, std)
+
+m4_param_replace(func_rename)
+
+m4_rtc_seealso
+m4_page_footer
diff --git a/db/docs_src/rtc/set_func_seek.so b/db/docs_src/rtc/set_func_seek.so
new file mode 100644
index 000000000..be0617d67
--- /dev/null
+++ b/db/docs_src/rtc/set_func_seek.so
@@ -0,0 +1,40 @@
+m4_comment([$Id: set_func_seek.so,v 10.19 2004/09/20 14:29:50 mjc Exp $])
+
+define(M4PAGELOCAL, dbenv_set_func_seek)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbenv_set_func_seek),
+ifelse(M4API, C_API, [dnl
+int
+db_env_set_func_seek(int (*func_seek)(int fd, off_t offset, int whence));
+]))
+
+m4_p([dnl
+The m4_db library requires the ability to specify that a subsequent read
+from or write to a file will occur at a specific location in that file.])
+
+m4_scope_process(dbenv_set_func_seek)
+
+m4_when_init(dbenv_set_func_seek)
+
+m4_return(dbenv_set_func_seek, std)
+
+m4_parambegin
+m4_param(func_seek, [dnl
+The m4_arg(func_seek) parameter is the function which seeks to a specific
+location in a file.
+m4_p([dnl
+The m4_arg(fd) parameter is an open file descriptor on the file.])
+m4_p([dnl
+The m4_arg(seek) function must cause a subsequent read from or write to
+the file to occur at the byte offset specified by the m4_arg(offset)
+parameter.])
+m4_p([dnl
+The m4_arg(whence) parameter specifies where in the file the byte offset
+is relative to, as described by the m4_posix1_name m4_arg(lseek) system
+call.])
+m4_ret_internal(func_seek)])
+m4_paramend
+
+m4_rtc_seealso
+m4_page_footer
diff --git a/db/docs_src/rtc/set_func_sleep.so b/db/docs_src/rtc/set_func_sleep.so
new file mode 100644
index 000000000..caa5982db
--- /dev/null
+++ b/db/docs_src/rtc/set_func_sleep.so
@@ -0,0 +1,38 @@
+m4_comment([$Id: set_func_sleep.so,v 10.21 2007/05/07 18:03:09 bostic Exp $])
+
+define(M4PAGELOCAL, dbenv_set_func_sleep)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbenv_set_func_sleep),
+ifelse(M4API, C_API, [dnl
+int
+db_env_set_func_sleep(int (*func_sleep)(u_long seconds, u_long microseconds));
+]))
+
+m4_p([dnl
+The m4_db library requires the ability to cause a thread of control to
+suspend itself for a period of time, relinquishing control of the
+processor to any other waiting thread of control.])
+
+m4_scope_process(dbenv_set_func_sleep)
+
+m4_when_init(dbenv_set_func_sleep)
+
+m4_return(dbenv_set_func_sleep, std)
+
+m4_parambegin
+m4_param(func_sleep, [dnl
+The m4_arg(func_sleep) parameter is the function which suspends execution
+of a thread of control.
+m4_p([dnl
+The m4_arg(seconds) and m4_arg(microseconds) parameters specify the amount
+of time to wait until the suspending thread of control should run again.])
+m4_p([dnl
+The m4_arg(seconds) and m4_arg(microseconds) parameters may not be
+normalized when the m4_arg(sleep) function is called; that is, the
+m4_arg(microseconds) parameter may be greater than 1000000.])
+m4_ret_internal(func_sleep)])
+m4_paramend
+
+m4_rtc_seealso
+m4_page_footer
diff --git a/db/docs_src/rtc/set_func_unlink.so b/db/docs_src/rtc/set_func_unlink.so
new file mode 100644
index 000000000..d7946be98
--- /dev/null
+++ b/db/docs_src/rtc/set_func_unlink.so
@@ -0,0 +1,23 @@
+m4_comment([$Id: set_func_unlink.so,v 10.14 2003/09/25 15:28:09 bostic Exp $])
+
+define(M4PAGELOCAL, dbenv_set_func_unlink)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbenv_set_func_unlink),
+ifelse(M4API, C_API, [dnl
+int
+db_env_set_func_unlink(int (*func_unlink)(const char *path));
+]))
+
+m4_posix_func(unlink)
+
+m4_scope_process(dbenv_set_func_unlink)
+
+m4_when_init(dbenv_set_func_unlink)
+
+m4_return(dbenv_set_func_unlink, std)
+
+m4_param_replace(func_unlink)
+
+m4_rtc_seealso
+m4_page_footer
diff --git a/db/docs_src/rtc/set_func_unmap.so b/db/docs_src/rtc/set_func_unmap.so
new file mode 100644
index 000000000..287abe92d
--- /dev/null
+++ b/db/docs_src/rtc/set_func_unmap.so
@@ -0,0 +1,36 @@
+m4_comment([$Id: set_func_unmap.so,v 10.18 2004/08/13 03:39:02 bostic Exp $])
+
+define(M4PAGELOCAL, dbenv_set_func_unmap)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbenv_set_func_unmap),
+ifelse(M4API, C_API, [dnl
+int
+db_env_set_func_unmap(int (*func_unmap)(void *addr, size_t len));
+]))
+
+m4_p([dnl
+The m4_db library requires the ability to unmap a file or shared memory
+region from memory.])
+
+m4_scope_process(dbenv_set_func_unmap)
+
+m4_when_init(dbenv_set_func_unmap)
+
+m4_return(dbenv_set_func_unmap, std)
+
+m4_parambegin
+m4_param(func_unmap, [dnl
+The m4_arg(func_unmap) parameter is the function which unmaps a file or
+shared memory region.
+m4_p([dnl
+The m4_arg(addr) parameter is the value returned by the
+m4_ref(dbenv_set_func_map) function when the file or region was mapped
+into memory, and the m4_arg(len) parameter is the same as the m4_arg(len)
+parameter specified to the m4_ref(dbenv_set_func_map) function when the
+file or region was mapped into memory.])
+m4_ret_internal(func_unmap)])
+m4_paramend
+
+m4_rtc_seealso
+m4_page_footer
diff --git a/db/docs_src/rtc/set_func_write.so b/db/docs_src/rtc/set_func_write.so
new file mode 100644
index 000000000..726e5b9cc
--- /dev/null
+++ b/db/docs_src/rtc/set_func_write.so
@@ -0,0 +1,24 @@
+m4_comment([$Id: set_func_write.so,v 10.14 2003/09/25 15:28:09 bostic Exp $])
+
+define(M4PAGELOCAL, dbenv_set_func_write)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbenv_set_func_write),
+ifelse(M4API, C_API, [dnl
+int
+db_env_set_func_write(
+ ssize_t (*func_write)(int fd, const void *buffer, size_t nbytes));
+]))
+
+m4_posix_func(write)
+
+m4_scope_process(dbenv_set_func_write)
+
+m4_when_init(dbenv_set_func_write)
+
+m4_return(dbenv_set_func_write, std)
+
+m4_param_replace(func_write)
+
+m4_rtc_seealso
+m4_page_footer
diff --git a/db/docs_src/rtc/set_func_yield.so b/db/docs_src/rtc/set_func_yield.so
new file mode 100644
index 000000000..5cfed1fb6
--- /dev/null
+++ b/db/docs_src/rtc/set_func_yield.so
@@ -0,0 +1,47 @@
+m4_comment([$Id: set_func_yield.so,v 10.20 2004/08/13 03:39:02 bostic Exp $])
+
+define(M4PAGELOCAL, dbenv_set_func_yield)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbenv_set_func_yield),
+ifelse(M4API, C_API, [dnl
+int
+db_env_set_func_yield(int (*func_yield)(void));
+]))
+
+m4_p([dnl
+The m4_db library requires the ability to yield the processor from the current
+thread of control to any other waiting threads of control.])
+
+m4_p([dnl
+The m4_arg(func_yield) function must be able to cause the rescheduling
+of all participants in the current m4_db environment, whether threaded
+or not. It may be incorrect to supply a thread m4_arg(yield) function
+if more than a single process is operating in the m4_db environment.
+This is because many thread-yield functions will not allow other
+processes to run, and the contested lock may be held by another process,
+not by another thread.])
+
+m4_p([dnl
+If no m4_arg(func_yield) function is specified, or if the m4_arg(yield)
+function returns an error, the function specified by the
+m4_ref(dbenv_set_func_sleep) entry will be used instead or subsequently;
+that is, if no m4_arg(yield) function is specified, or if it is possible
+for the m4_arg(yield) function to fail, the m4_arg(sleep) function
+m4_bold(must) cause the processor to reschedule any waiting threads of
+control for execution.])
+
+m4_scope_process(dbenv_set_func_yield)
+
+m4_when_init(dbenv_set_func_yield)
+
+m4_return(dbenv_set_func_yield, std)
+
+m4_parambegin
+m4_param(func_yield, [dnl
+The m4_arg(func_yield) parameter is the function which yields the processor.
+m4_ret_internal(func_yield)])
+m4_paramend
+
+m4_rtc_seealso
+m4_page_footer
diff --git a/db/docs_src/seq/m4.methods b/db/docs_src/seq/m4.methods
new file mode 100644
index 000000000..0bd2a6c01
--- /dev/null
+++ b/db/docs_src/seq/m4.methods
@@ -0,0 +1,21 @@
+m4_comment([$Id: m4.methods,v 1.7 2004/11/29 15:34:22 bostic Exp $])
+
+m4_table_begin(, _center)
+
+m4_table_header(Sequences and Related Methods, Description)
+m4_comment([DbSequence::])m4_table_element(ifelse(M4API, C_API, m4_ref(seq_create), m4_ref(DbSequence)), Create a sequence handle)
+m4_comment([DbSequence::close])m4_table_element(m4_ref(seq_close), Close a sequence)
+m4_comment([DbSequence::get])m4_table_element(m4_ref(seq_get), Get the next sequence element(s))
+m4_comment([DbSequence::get_dbp])m4_table_element(m4_ref(seq_get_dbp), Return a handle for the underlying sequence database)
+m4_comment([DbSequence::get_key])m4_table_element(m4_ref(seq_get_key), Return the key for a sequence)
+m4_comment([DbSequence::initial_value])m4_table_element(m4_ref(seq_initial_value), Set the initial value of a sequence)
+m4_comment([DbSequence::open])m4_table_element(m4_ref(seq_open), Open a sequence)
+m4_comment([DbSequence::remove])m4_table_element(m4_ref(seq_remove), Remove a sequence)
+m4_comment([DbSequence::stat])m4_table_element(m4_ref(seq_stat), Return sequence statistics)
+
+m4_table_header(Sequences Configuration, _empty)
+m4_comment([DbSequence::set_cachesize])m4_table_element(m4_ref(seq_set_cachesize), Set the cache size of a sequence)
+m4_comment([DbSequence::set_flags])m4_table_element(m4_ref(seq_set_flags), Set the flags for a sequence)
+m4_comment([DbSequence::set_range])m4_table_element(m4_ref(seq_set_range), Set the range for a sequence)
+
+m4_table_end
diff --git a/db/docs_src/seq/seq_class.so b/db/docs_src/seq/seq_class.so
new file mode 100644
index 000000000..84c6838de
--- /dev/null
+++ b/db/docs_src/seq/seq_class.so
@@ -0,0 +1,71 @@
+m4_comment([$Id: seq_class.so,v 1.12 2004/10/18 19:46:31 bostic Exp $])
+
+define(M4PAGELOCAL, [seq_create, DbSequence])
+include(m4/m4.seealso)
+
+ifelse(M4API, C_API, [dnl
+m4_pf_header(m4_ref(seq_create), [dnl
+typedef struct __db_sequence DB_SEQUENCE;
+m4_blank
+int
+db_sequence_create(DB_SEQUENCE **seq, DB *db, u_int32_t flags);
+])])
+ifelse(M4API, CXX_API, [dnl
+m4_pf_header(m4_ref(DbSequence), [dnl
+class DbSequence {
+public:
+ DbSequence(Db *db, u_int32_t flags);
+ ~DbSequence();
+m4_blank
+ DB_SEQUENCE *DbSequence::get_DB();
+ const DB *DbSequence::get_const_DB() const;
+ static DbSequence *DbSequence::get_DbSequence(DB *db);
+ static const DbSequence *DbSequence::get_const_DbSequence(const DB *db);
+ ...
+};])])
+
+m4_p([dnl
+The m4_ref(DbSequence) handle is the handle used to manipulate a
+sequence object. A sequence object is stored in a record in a
+database.])
+
+m4_p([dnl
+m4_ref(DbSequence) handles are free-threaded if the m4_ref(DB_THREAD)
+flag is specified to the m4_refT(seq_open) when the sequence is opened.
+Once the m4_ref(seq_close) or m4_refT(seq_remove)s are called, the
+handle may not be accessed again, regardless of the method's return.])
+
+m4_p([dnl
+Each handle opened on a sequence may maintain a separate cache of values
+which are returned to the application using the m4_ref(seq_get) method
+either singly or in groups depending on its m4_arg(delta) parameter.])
+
+m4_p([dnl
+The
+ifelse(M4API, C_API, m4_refT(DbSequence), constructor) creates a
+m4_ref(DbSequence) object that serves as the handle for a sequence.
+Calling the m4_ref(seq_close) or m4_refT(seq_remove)s will discard the
+handle.])
+
+ifelse(M4API, C_API, [m4_return(seq_create, std)])
+
+m4_parambegin
+
+ifelse(M4API, C_API, [dnl
+m4_param(seq, [dnl
+The m4_arg(seq) parameter references the memory into which the returned
+structure pointer is stored.])])
+
+m4_param(db, [dnl
+The m4_arg(db) parameter is an open database handle which holds the
+persistent data for the sequence. The database may be of any type,
+but may not have been configured to support duplicate data items.])
+
+m4_unusedflags(0)
+
+m4_paramend
+
+ifelse(M4API, C_API, [m4_err(seq_create, einval)])
+
+m4_seealso(DbSequence)
+m4_page_footer
diff --git a/db/docs_src/seq/seq_close.so b/db/docs_src/seq/seq_close.so
new file mode 100644
index 000000000..6e9845dfb
--- /dev/null
+++ b/db/docs_src/seq/seq_close.so
@@ -0,0 +1,31 @@
+m4_comment([$Id: seq_close.so,v 1.2 2004/08/13 03:39:02 bostic Exp $])
+
+define(M4PAGELOCAL, seq_close)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(seq_close),
+ifelse(M4API, C_API, [dnl
+int
+DB_SEQUENCE-__GT__close(DB_SEQUENCE *seq, u_int32_t flags);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbSequence::close(u_int32_t flags);
+]))
+
+m4_p([dnl
+The m4_refT(seq_close) closes the sequence handle. Any unused cached
+values are lost.])
+
+m4_destructor(DbSequence, seq_close)
+
+m4_return(seq_close, std)
+
+m4_parambegin
+m4_unusedflags
+m4_paramend
+
+m4_err(seq_close, einval)
+
+m4_seealso(DbSequence)
+m4_page_footer
diff --git a/db/docs_src/seq/seq_get.so b/db/docs_src/seq/seq_get.so
new file mode 100644
index 000000000..18b631a2e
--- /dev/null
+++ b/db/docs_src/seq/seq_get.so
@@ -0,0 +1,75 @@
+m4_comment([$Id: seq_get.so,v 1.11 2005/08/09 14:23:30 bostic Exp $])
+
+define(M4PAGELOCAL,
+ [seq_get])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(seq_get),
+ifelse(M4API, C_API, [dnl
+int
+DB_SEQUENCE-__GT__get(DB_SEQUENCE *seq,
+ DB_TXN *txnid, int32_t delta, db_seq_t *retp, u_int32_t flags);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbSequence::get(DbTxn *txnid, int32_t delta, db_seq_t *retp, u_int32_t flags);
+]))
+
+m4_p([dnl
+The m4_refT(seq_get) returns the next available element in the sequence
+and changes the sequence value by m4_arg(delta). The value of
+m4_arg(delta) must be greater than zero. If there are enough cached
+values in the sequence handle then they will be returned. Otherwise the
+next value will be fetched from the database and incremented
+(decremented) by enough to cover the m4_arg(delta) and the next batch
+of cached values.])
+
+m4_p([dnl
+For maximum concurrency a non-zero cache size should be specified prior
+to opening the sequence handle and m4_ref(DB_TXN_NOSYNC) should be
+specified for each m4_refT(seq_get) call.])
+
+m4_p([dnl
+By default, sequence ranges do not wrap; to cause the sequence to wrap
+around the beginning or end of its range, specify the m4_ref(DB_SEQ_WRAP)
+flag to the m4_refT(seq_set_flags).])
+
+m4_return(seq_get,
+specific, EINVAL, [if the record in the database is not a valid sequence
+record, or the sequence has reached the beginning or end of its range
+and is not configured to wrap])
+
+m4_parambegin
+m4_param(delta, [dnl
+Specifies the amount to increment or decrement the sequence.])
+m4_param(flags, [dnl
+m4_sf_or_may
+
+m4_tagbegin
+m4_tag(m4_idef(DB_TXN_NOSYNC), [dnl
+If the operation is implicitly transaction protected (the m4_arg(txnid)
+argument is NULL but the operation occurs to a transactional database),
+do not synchronously flush the log when the transaction commits.])
+m4_tagend])
+
+m4_param(retp, [dnl
+m4_arg(retp) points to the memory to hold the return value from
+the sequence.])
+m4_param_txn(seq_get,, [dnl
+No m4_arg(txnid) handle may be specified if the sequence handle was
+opened with a non-zero cache size.
+m4_p([dnl
+If the underlying database handle was opened in a transaction, calling
+m4_ref(seq_get) may result in changes to the sequence object; these
+changes will be automatically committed in a transaction internal to the
+m4_db library. If the thread of control calling m4_ref(seq_get) has
+an active transaction, which holds locks on the same database as the
+one in which the sequence object is stored, it is possible for a thread
+of control calling m4_ref(seq_get) to self-deadlock because the active
+transaction's locks conflict with the internal transaction's locks.
+For this reason, it is often preferable for sequence objects to be
+stored in their own database.])])
+m4_paramend
+
+m4_seealso(DbSequence)
+m4_page_footer
diff --git a/db/docs_src/seq/seq_initial_value.so b/db/docs_src/seq/seq_initial_value.so
new file mode 100644
index 000000000..8694601a7
--- /dev/null
+++ b/db/docs_src/seq/seq_initial_value.so
@@ -0,0 +1,34 @@
+m4_comment([$Id: seq_initial_value.so,v 1.6 2004/11/29 15:30:23 bostic Exp $])
+
+define(M4PAGELOCAL, [seq_initial_value])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(seq_initial_value),
+ifelse(M4API, C_API, [dnl
+int
+DB_SEQUENCE-__GT__initial_value(DB_SEQUENCE *seq, db_seq_t value);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbSequence::initial_value(db_seq_t value);
+]))
+
+m4_p([dnl
+Set the initial value for a sequence. This call is only effective when
+the sequence is being created.])
+
+m4_p([dnl
+The m4_refT(seq_initial_value) may not be called after the
+m4_ref(seq_open) method is called.])
+
+m4_return(seq_initial_value, std)
+
+m4_parambegin
+m4_param(value, [dnl
+The initial value to set.])
+m4_paramend
+
+m4_err(seq_initial_value, einval)
+
+m4_seealso(DbSequence)
+m4_page_footer
diff --git a/db/docs_src/seq/seq_list.so b/db/docs_src/seq/seq_list.so
new file mode 100644
index 000000000..08660e55a
--- /dev/null
+++ b/db/docs_src/seq/seq_list.so
@@ -0,0 +1,7 @@
+m4_comment([$Id: seq_list.so,v 1.2 2004/08/18 02:34:52 bostic Exp $])
+
+m4_page_title([m4_db: Sequences and Related Methods])
+
+include(seq/m4.methods)
+
+m4_page_footer
diff --git a/db/docs_src/seq/seq_open.so b/db/docs_src/seq/seq_open.so
new file mode 100644
index 000000000..21d854302
--- /dev/null
+++ b/db/docs_src/seq/seq_open.so
@@ -0,0 +1,87 @@
+m4_comment([$Id: seq_open.so,v 1.9 2005/01/20 01:15:15 ubell Exp $])
+
+define(M4PAGELOCAL, [dnl
+ seq_open, seq_get_dbp, seq_get_key])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(seq_open),
+ifelse(M4API, C_API, [dnl
+int
+DB_SEQUENCE-__GT__open(DB_SEQUENCE *seq, DB_TXN *txnid, DBT *key, u_int32_t flags);
+m4_blank
+int
+DB_SEQUENCE-__GT__get_dbp(DB_SEQUENCE *seq, DB **dbp);
+m4_blank
+int
+DB_SEQUENCE-__GT__get_key(DB_SEQUENCE *seq, DBT *key);
+m4_blank
+])
+int
+ifelse(M4API, CXX_API, [dnl
+int
+DbSequence::open(DbTxn *txnid, Dbt *key, u_int32_t flags);
+m4_blank
+int
+DbSequence::get_dbp(Db **dbp);
+m4_blank
+int
+DbSequence::get_key(Dbt *key);
+]))
+
+m4_p([dnl
+The m4_refT(seq_open) opens the sequence represented by the m4_arg(key).
+The key must be compatible with the underlying database specified in the
+corresponding call to m4_ref(seq_create).])
+
+m4_parambegin
+m4_param(key, [dnl
+The m4_arg(key) specifies which record in the database stores
+the persistent sequence data.])
+m4_param(flags, [dnl
+m4_sf_or_may
+
+m4_tagbegin
+m4_tag(m4_idef(DB_CREATE), [dnl
+Create the sequence. If the sequence does not already exist and the
+DB_CREATE flag is not specified, the m4_ref(seq_open) will fail.])
+
+m4_tag(m4_idef(DB_EXCL), [dnl
+Return an error if the sequence already exists. The m4_ref(DB_EXCL)
+flag is only meaningful when specified with the m4_ref(DB_CREATE)
+flag.])
+
+m4_tag(m4_idef(DB_THREAD), [dnl
+Cause the m4_ref(DbSequence) handle returned by m4_ref(seq_open) to be
+m4_italic(free-threaded); that is, usable by multiple threads within a
+single address space. Note that if multiple threads create multiple
+sequences using the same database handle that handle must have been
+opened specifying m4_idef(DB_THREAD).])
+m4_tagend])
+
+m4_param_txn(seq_open,, [dnl
+Transactionally protected operations on a m4_ref(DbSequence) handle
+require the m4_ref(DbSequence) handle itself be transactionally
+protected during its open if the open creates the sequence.])
+
+m4_paramend
+
+m4_pf_description(m4_ref(seq_get_dbp))
+m4_p([dnl
+The m4_refT(seq_get_dbp) returns the database handle.])
+m4_parambegin
+m4_param_co(dbp, database handle, REF)
+m4_paramend
+m4_when_any(seq_get_dbp)
+m4_return(seq_get_dbp, std)
+
+m4_pf_description(m4_ref(seq_get_key))
+m4_p([dnl
+The m4_refT(seq_get_key) returns the key for the sequence.])
+m4_parambegin
+m4_param_co(key, key data, REF)
+m4_paramend
+m4_when_any(seq_get_key)
+m4_return(seq_get_key, std)
+
+m4_seealso(DbSequence)
+m4_page_footer
diff --git a/db/docs_src/seq/seq_remove.so b/db/docs_src/seq/seq_remove.so
new file mode 100644
index 000000000..d7a2db1d3
--- /dev/null
+++ b/db/docs_src/seq/seq_remove.so
@@ -0,0 +1,41 @@
+m4_comment([$Id: seq_remove.so,v 1.6 2004/12/16 19:13:04 bostic Exp $])
+
+define(M4PAGELOCAL, seq_remove)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(seq_remove),
+ifelse(M4API, C_API, [dnl
+int
+DB_SEQUENCE-__GT__remove(DB_SEQUENCE *seq, DB_TXN *txnid, u_int32_t flags);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbSequence::remove(u_int32_t flags);
+]))
+
+m4_p([dnl
+The m4_refT(seq_remove) removes the sequence from the database. This
+method should not be called if there are other open handles on this
+sequence.])
+
+m4_destructor(DbSequence, seq_remove)
+
+m4_return(seq_remove, std)
+
+m4_parambegin
+m4_param(flags, [dnl
+m4_sf_or_may
+
+m4_tagbegin
+m4_tag(m4_idef(DB_TXN_NOSYNC), [dnl
+If the operation is implicitly transaction protected (the m4_arg(txnid)
+argument is NULL but the operation occurs to a transactional database),
+do not synchronously flush the log when the transaction commits.])
+m4_tagend])
+m4_param_txn(seq_get)
+m4_paramend
+
+m4_err(seq_remove, einval)
+
+m4_seealso(DbSequence)
+m4_page_footer
diff --git a/db/docs_src/seq/seq_set_cachesize.so b/db/docs_src/seq/seq_set_cachesize.so
new file mode 100644
index 000000000..622854eb8
--- /dev/null
+++ b/db/docs_src/seq/seq_set_cachesize.so
@@ -0,0 +1,41 @@
+m4_comment([$Id: seq_set_cachesize.so,v 1.8 2004/09/07 15:37:41 bostic Exp $])
+
+define(M4PAGELOCAL,
+ [seq_set_cachesize, seq_get_cachesize])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(seq_set_cachesize),
+ifelse(M4API, C_API, [dnl
+int
+DB_SEQUENCE-__GT__set_cachesize(DB_SEQUENCE *seq, int32_t size);
+m4_blank
+int
+DB_SEQUENCE-__GT__get_cachesize(DB_SEQUENCE *seq, int32_t *sizep);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbSequence::set_cachesize(int32_t size);
+m4_blank
+int DbSequence::get_cachesize(*sizep);
+]))
+
+m4_p([dnl
+Configure the number of elements cached by a sequence handle.])
+
+m4_p([dnl
+The m4_ref(seq_set_cachesize) method may not be called after the
+m4_ref(seq_open) method is called.])
+
+m4_return(seq_set_cachesize, std)
+
+m4_parambegin
+m4_param(size, [dnl
+The number of elements in the cache.])
+m4_paramend
+
+m4_err(seq_set_cachesize, einval)
+
+m4_pf_getter(seq_get_cachesize, current cache size,, sizep)
+
+m4_seealso(DbSequence)
+m4_page_footer
diff --git a/db/docs_src/seq/seq_set_flags.so b/db/docs_src/seq/seq_set_flags.so
new file mode 100644
index 000000000..954d104ba
--- /dev/null
+++ b/db/docs_src/seq/seq_set_flags.so
@@ -0,0 +1,63 @@
+m4_comment([$Id: seq_set_flags.so,v 1.7 2004/09/07 15:37:41 bostic Exp $])
+
+define(M4PAGELOCAL,
+ [seq_set_flags, seq_get_flags, DB_SEQ_DEC, DB_SEQ_INC, DB_SEQ_WRAP])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(seq_set_flags),
+ifelse(M4API, C_API, [dnl
+int
+DB_SEQUENCE-__GT__set_flags(DB_SEQUENCE *seq, u_int32_t flags);
+m4_blank
+int
+DB_SEQUENCE-__GT__get_flags(DB_SEQUENCE *seq, u_int32_t *flagsp);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbSequence::set_flags(u_int32_t flags);
+m4_blank
+int DbSequence::get_flags(u_int32_t *flagsp);
+]))
+
+m4_p([dnl
+Configure a sequence. The flags are only effective when creating a
+sequence. Calling m4_ref(seq_set_flags) is additive; there is no way
+to clear flags.])
+
+m4_p([dnl
+The m4_ref(seq_set_flags) method may not be called after the
+m4_ref(seq_open) method is called.])
+
+m4_return(seq_set_flags, std)
+
+m4_parambegin
+m4_param(flags, [dnl
+m4_sf_or_may
+
+m4_tagbegin
+
+m4_tag(m4_idef(DB_SEQ_DEC), [dnl
+Specify that the sequence should be decremented.])
+
+m4_tagend
+m4_tagbegin
+
+m4_tag(m4_idef(DB_SEQ_INC), [dnl
+Specify that the sequence should be incremented. This is the default.])
+
+m4_tagend
+m4_tagbegin
+
+m4_tag(m4_idef(DB_SEQ_WRAP), [dnl
+Specify that the sequence should wrap around when it is incremented
+(decremented) past the specified maximum (minimum) value.])
+
+m4_tagend])
+m4_paramend
+
+m4_err(seq_set_flags, einval)
+
+m4_pf_getter(seq_get_flags, current flags,, flagsp)
+
+m4_seealso(DbSequence)
+m4_page_footer
diff --git a/db/docs_src/seq/seq_set_range.so b/db/docs_src/seq/seq_set_range.so
new file mode 100644
index 000000000..c173592c1
--- /dev/null
+++ b/db/docs_src/seq/seq_set_range.so
@@ -0,0 +1,57 @@
+m4_comment([$Id: seq_set_range.so,v 1.6 2004/09/07 15:37:41 bostic Exp $])
+
+define(M4PAGELOCAL,
+ [seq_set_range, seq_get_range])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(seq_set_range),
+ifelse(M4API, C_API, [dnl
+int
+DB_SEQUENCE-__GT__set_range(DB_SEQUENCE *seq, db_seq_t min, db_seq_t max);
+m4_blank
+int
+DB_SEQUENCE-__GT__get_range(DB_SEQUENCE *seq, db_seq_t *minp, db_seq_t *maxp);
+])dnl
+ifelse(M4API, CXX_API, [dnl
+int
+DbSequence::set_range(db_seq_t min, db_seq_t max);
+m4_blank
+int DbSequence::get_range(u_int32_t, db_seq_t *minp, db_seq_t *maxp);
+]))
+
+m4_p([dnl
+Configure a sequence range. This call is only effective when the
+sequence is being created. The range is limited to a signed 64 bit
+integer.])
+
+m4_p([dnl
+The m4_ref(seq_set_range) method may not be called after the
+m4_ref(seq_open) method is called.])
+
+m4_return(seq_set_range, std)
+
+m4_parambegin
+m4_param(min, [dnl
+Specifies the minimum value for the sequence.])
+m4_param(max, [dnl
+Specifies the maximum value for the sequence.])
+m4_paramend
+
+m4_err(seq_set_range, einval)
+
+m4_pf_description(m4_ref(seq_get_range))
+m4_p([dnl
+The m4_refT(seq_get_range) returns the range of values in the sequence.])
+m4_when_any(seq_get_range)
+
+m4_return(seq_get_range, std)
+
+m4_parambegin
+m4_param(minp,
+[The m4_refT(seq_get_range) returns the minimum value in m4_arg(minp).])
+m4_param(maxp,
+[The m4_refT(seq_get_range) returns the maximum value in m4_arg(maxp).])
+m4_paramend
+
+m4_seealso(DbSequence)
+m4_page_footer
diff --git a/db/docs_src/seq/seq_stat.so b/db/docs_src/seq/seq_stat.so
new file mode 100644
index 000000000..a0af7bd0b
--- /dev/null
+++ b/db/docs_src/seq/seq_stat.so
@@ -0,0 +1,95 @@
+m4_comment([$Id: seq_stat.so,v 1.9 2007/06/22 16:57:17 bostic Exp $])
+
+define(M4PAGELOCAL, [seq_stat, seq_stat_print])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(seq_stat),
+ifelse(M4API, C_API, [dnl
+int
+DB_SEQUENCE-__GT__stat(DB_SEQUENCE *db, void *sp, u_int32_t flags);
+m4_blank
+int
+DB_SEQUENCE-__GT__stat_print(DB_SEQUENCE *db, u_int32_t flags);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+Db::stat(void *sp, u_int32_t flags);
+m4_blank
+int
+Db::stat_print(u_int32_t flags);
+]))
+
+m4_p([dnl
+The m4_refT(seq_stat) creates a statistical structure and copies a
+pointer to it into user-specified memory locations. Specifically, if
+m4_arg(sp) is non-NULL, a pointer to the statistics for the database are
+copied into the memory location to which it refers.])
+
+m4_alloc([Statistical structures])
+
+m4_p([dnl
+In the presence of multiple threads or processes accessing an active
+sequence, the information returned by m4_ref(seq_stat) may be out-of-date.])
+
+m4_p([dnl
+The m4_refT(seq_stat) cannot be transaction-protected. For this reason,
+it should be called in a thread of control that has no open cursors or
+active transactions.])
+
+m4_p([dnl
+The statistics are stored in a structure of type DB_SEQUENCE_STAT. The
+following fields will be filled in:])
+
+m4_tagbegin
+m4_field(u_int32_t, st_wait,
+[The number of times a thread of control was forced to wait on the
+handle mutex.])
+m4_field(u_int32_t, st_nowait,
+[The number of times that a thread of control was able to obtain handle
+mutex without waiting.])
+m4_field(db_seq_t, st_current,
+[The current value of the sequence in the database.])
+m4_field(db_seq_t, st_value,
+[The current cached value of the sequence.])
+m4_field(db_seq_t, st_last_value,
+[The last cached value of the sequence.])
+m4_field(db_seq_t, st_min,
+[The minimum permitted value of the sequence.])
+m4_field(db_seq_t, st_max,
+[The maximum permitted value of the sequence.])
+m4_field(int32_t, st_cache_size,
+[The number of values that will be cached in this handle.])
+m4_field(u_int32_t, st_flags,
+[The flags value for the sequence.])
+m4_tagend
+
+m4_parambegin
+m4_param(flags, [dnl
+m4_sf_or_must
+m4_tagbegin
+m4_tag(m4_idef(DB_STAT_CLEAR), [dnl
+Reset statistics after printing their values.])
+m4_tagend])
+m4_paramend
+
+m4_p([dnl
+The m4_refT(seq_stat) may not be called before the m4_refT(seq_open) has
+been called.])
+
+m4_return(seq_stat, std)
+
+m4_pf_description(m4_ref(seq_stat_print))
+m4_p([dnl
+The m4_refT(seq_stat_print) prints diagnostic information to the output
+channel described by the m4_refT(dbenv_set_msgfile).])
+m4_parambegin
+m4_param(flags, [dnl
+m4_sf_or_must
+m4_tagbegin
+m4_tag(m4_idef(DB_STAT_CLEAR), [dnl
+Reset statistics after printing their values.])
+m4_tagend])
+m4_paramend
+
+m4_seealso(DbSequence)
+m4_page_footer
diff --git a/db/docs_src/spell.ok b/db/docs_src/spell.ok
new file mode 100644
index 000000000..48c5c9a97
--- /dev/null
+++ b/db/docs_src/spell.ok
@@ -0,0 +1,1240 @@
+ABS
+ABSDIR
+ACI
+ACK
+ACKS
+AES
+ALLDB
+API
+APIREL
+APIs
+APPMALLOC
+AUTOREMOVE
+Aclop
+Architecting
+BDB
+BTREE
+BerkeleyDB
+Btree
+CC
+CDB
+CHKSUM
+CONF
+CONFIG
+CXX
+Callback
+CandidateDocuments
+Compaq
+ContainerType
+DBC
+DBM
+DBT
+DBTYPE
+DBXML
+DB_XIDDATASIZE
+DBcursor
+DD
+DELAYCLIENT
+DFAR
+DIR
+DOM
+DOMDocument
+DOMNode
+DOMNodeList
+DONOTINDEX
+DSYNC
+DTD
+DTDs
+DUP
+DUPMASTER
+DUPSORT
+DWORD
+Db
+DbCursor
+DbDeadlockException
+DbEnv
+DbException
+DbLock
+DbLockNotGrantedException
+DbLockRequest
+DbLog
+DbLogc
+DbLsn
+DbMemoryException
+DbMpool
+DbMpoolFile
+DbMultipleDataIterator
+DbMultipleIterator
+DbMultipleKeyDataIterator
+DbMultipleRecnoDataIterator
+DbRunRecoveryException
+DbSequence
+DbTxn
+DbXml
+Dbc
+Dbenv
+Dbm
+Dbt
+DeadValues
+EACCES
+EACCESS
+EAGAIN
+EBUSY
+EDT
+EEXIST
+EID
+EINVAL
+ENOENT
+ENOMEM
+ENOSPC
+ENV
+EOPNOTSUPP
+EPERM
+EQ
+EXCL
+Env
+EvaluationType
+ExceptionCode
+Exp
+FILEOPS
+FIPS
+FREELIST
+FSTAT
+Filenotfound
+GB
+GETINTERFACE
+GT
+GTE
+GetCurrentThreadID
+GetFileInformationByHandle
+GetTempPath
+Gif
+Gigabytes
+HOLDELECTION
+HSEARCH
+Hsearch
+IDs
+INIT
+INMEMORY
+INORDER
+IP
+IPC
+IREAD
+ISPERM
+IWR
+IWRITE
+Inline
+InsertAfter
+InsertAfterStep
+InsertBefore
+InsertBeforeStep
+JE
+KB
+KEYEMPTY
+KEYEXIST
+KEYFIRST
+KEYLAST
+LOC
+LOCKDOWN
+LOCKNOTGRANTED
+LOCKREQ
+LOGC
+LRU
+LSN
+LSNs
+LT
+LTE
+LWP
+Lflag
+LiveValues
+LockNotGranted
+LogCategory
+LogLevel
+MALLOC
+MAXLOCKS
+MAXWRITE
+MB
+MEM
+MEMP
+METADATA
+MFT
+MINLOCKS
+MINWRITE
+MMDDhhmm
+MPOOL
+MPOOLFILE
+MULTIVERSION
+MUTEX
+Mailto
+Memp
+Metadata
+Microsystems
+ModificationType
+Mutex
+Mutexes
+NEWMASTER
+NEWSITE
+NOAPI
+NOAUTOINIT
+NOBUFFER
+NODELIST
+NODESTORE
+NODUP
+NODUPDATA
+NOFILE
+NOLOCKING
+NOMMAP
+NOORDERCHK
+NOOVERWRITE
+NOPANIC
+NOSERVER
+NOSORT
+NOSYNC
+NOTFOUND
+NOTGRANTED
+NOTPERM
+NOWAIT
+NRrV
+NT
+NTFS
+Namespaces
+Ndbm
+Nflag
+NodeContainer
+NodeStorage
+NodeType
+NoqV
+NrV
+NsV
+NsVv
+OBJ
+OC
+OCT
+ODDFILESIZE
+OPENINFO
+OR'd
+OR'ing
+ORDERCHKONLY
+OutputStream
+PAGELOCAL
+PAGEPATH
+PARAMS
+POSIX
+PREPLIST
+PREV
+Pflag
+PicGif
+Prev
+ProcessingInstruction
+QNAME
+QNX
+QName
+RB
+RDONLY
+REALLOC
+REC
+RECNO
+RECNUM
+REF
+RELDIR
+REPMGR
+REREQUEST
+REVSPLITOFF
+RMW
+ROFF
+RPC
+RPCCLIENT
+RUNRECOVERY
+Recno
+Reindex
+ResultDocuments
+ResultDocumentsAndValues
+ResultValues
+ReturnType
+Rijndael
+SEQ
+SHA
+SIGINT
+SS
+STARTUPDONE
+STAT
+STRLEN
+Solaris
+Stat
+Std
+SunOS
+TCL
+THREADID
+TMP
+TMPDIR
+TR
+TXN
+Tcl
+TempFolder
+TestResolver
+Torvalds
+UI
+UNAVAIL
+UNREF
+URIs
+USERMEM
+UTF
+UX
+Unicode
+Variadic
+Veritas
+Vflag
+Vv
+VxFS
+VxWorks
+WAITSFOR
+WRITECURSOR
+WholedocContainer
+XA
+XIDDATASIZE
+XML
+XML's
+XMLMAJOR
+XMLMINOR
+XMLPATCH
+XP
+XPATH
+XQuery
+XXX
+Xerces
+XercesC
+XmlContainer
+XmlContainers
+XmlData
+XmlDocument
+XmlDocument's
+XmlException
+XmlIndexLookup
+XmlIndexSpecification
+XmlInputStream
+XmlManager
+XmlManager's
+XmlMetaDataIterator
+XmlModify
+XmlObject
+XmlQuery
+XmlQueryContext
+XmlQueryExpression
+XmlResolver
+XmlResult
+XmlResults
+XmlStatistics
+XmlTransaction
+XmlUpdateContext
+XmlValue
+YIELDCPU
+YY
+YYY
+abc
+ack
+acknowledgement
+acknowledgements
+addAlias
+addAppendStep
+addDefaultIndex
+addIndex
+addInsertAfterStep
+addInsertBeforeStep
+addRemoveStep
+addRenameStep
+addUpdateStep
+adddocument
+addr
+adlsVv
+adoptBuffer
+ahr
+alanb
+alignp
+alloc
+alt
+ansi
+ansic
+anyURI
+api
+app
+appDispatch
+applyChanges
+arg
+asAttribute
+asBinary
+asBoolean
+asDocument
+asNode
+asNodeList
+asNumber
+asString
+asattribute
+asdocument
+asnodelist
+attr
+attribute's
+atype
+autocommit
+awk
+badgen
+baseId
+baseURI
+bdb
+bdbxml
+berkdb
+berkeley
+berkeleydb
+bfree
+bgcolor
+bigpages
+blockquote
+bmp
+bool
+bostic
+br
+bsize
+bsizep
+bt
+btree
+buf
+bufId
+buffersmall
+builtin
+bulletbegin
+bulletend
+byteCount
+bytesp
+byteswapped
+bzero
+cDuVv
+cEelmNrtVZ
+cX
+cY
+cZ
+cachesize
+callback
+callbacks
+cbold
+cdata
+cdbperm
+cdsgroup
+ceVv
+cefVv
+cerr
+changequote
+checkpointed
+chksum
+chmod
+ckp
+cl
+clearNamespaces
+clearerr
+clr
+cnt
+cntp
+co
+codegen
+cols
+com
+compareDuplicates
+conf
+config
+conflictsp
+conformant
+const
+contactus
+container's
+contextItem
+conv
+copyBuffer
+countp
+cpp
+createChild
+createContainer
+createDocument
+createIndexLookup
+createLocalFileInputStream
+createMemBufInputStream
+createModify
+createQueryContext
+createResults
+createStdInInputStream
+createTransaction
+createURLInputStream
+createUpdateContext
+cs
+ctVvx
+curPos
+curslist
+cursorp
+cuv
+cxx
+dateStamp
+dateTime
+dayTimeDuration
+db
+dbAppendRecno
+dbN
+dbc
+dbcp
+dbenv
+dbenvp
+dberr
+dbh
+dbm
+dbmclose
+dbmfp
+dbminit
+dbname
+dbnamep
+dbopen
+dbp
+dbremove
+dbrename
+dbsizes
+dbt
+dbtvalue
+dbxml
+dbxmlsh
+dd
+deconstruct
+deconstructed
+defs
+del
+deleteDefaultIndex
+deleteDocument
+deleteIndex
+delim
+delimp
+desc
+detectp
+dir
+dirfno
+dirfree
+dirlist
+dirname
+dirp
+dirpp
+dirs
+dirtyread
+dl
+dlen
+dnl
+docs
+dptr
+ds
+dsize
+dt
+dumpContainer
+dumpload
+dupflag
+dupmasters
+dupsort
+dupsortflag
+edi
+egen
+eid
+eidp
+einval
+elistp
+encryptaes
+encryptany
+endian
+enum
+env
+envN
+envid
+envopen
+envremove
+envvar
+equiv
+errapi
+errcall
+errfile
+errfilep
+errheader
+errloop
+errneedheader
+errno
+errorret
+errpfx
+errpfxp
+errprint
+errstr
+errval
+errx
+evaluationType
+exc
+excl
+existsContainer
+expr
+extentsize
+extentsizep
+fN
+failchk
+failover
+failp
+failsweep
+faq
+faststat
+fclose
+fcn
+fcntl
+fcreate
+fd
+fdp
+fetchAllData
+ffactor
+ffactorp
+fget
+fileid
+filemode
+filenamep
+filenotfound
+filestore
+filesystem
+filesystems
+filesysystem
+fillpercent
+firstkey
+flagsp
+fmt
+fn
+foo
+fopen
+fp
+fput
+frameset
+fset
+fsp
+fstat
+fsync
+ftruncate
+ftype
+ftypep
+fucntion
+func
+gDay
+gMonth
+gMonthDay
+gYear
+gYearMonth
+gbytes
+gbytesp
+gen
+getAllDocuments
+getApplyChangesToContainers
+getAttributes
+getBaseURI
+getContainer
+getContainerType
+getContent
+getContentAsDOM
+getContentAsString
+getContentAsXmlInputStream
+getDOM
+getDb
+getDbEnv
+getDbErrno
+getDbError
+getDbTxn
+getDbt
+getDefaultCollection
+getDefaultContainer
+getDefaultContainerFlags
+getDefaultContainerType
+getDefaultIndex
+getDefaultPageSize
+getDefaultSequenceIncrement
+getDocument
+getErrorCode
+getEvaluationType
+getExceptionCode
+getFirstChild
+getHighBound
+getHighBoundOperation
+getHighBoundValue
+getHome
+getIndex
+getIndexNodes
+getIndexSpecification
+getLastChild
+getLocalName
+getLowBound
+getLowBoundOperation
+getLowBoundValue
+getManager
+getMetaData
+getMetaDataIterator
+getName
+getNameURI
+getNamespace
+getNamespaceURI
+getNextSibling
+getNodeName
+getNodeType
+getNodeURI
+getNodeValue
+getNumDocuments
+getNumModifications
+getNumberOfIndexedKeys
+getNumberOfUniqueKeys
+getObj
+getObject
+getOwnerElement
+getPageSize
+getParentName
+getParentNode
+getParentURI
+getPrefix
+getPreviousSibling
+getQuery
+getReturnType
+getType
+getVariableValue
+getWithMetaData
+getdberror
+getenv
+getpid
+gid
+gmf
+gsp
+gt
+hasNext
+hasPrevious
+hcreate
+hdestroy
+hexBinary
+hflag
+hh
+hl
+homep
+hotbackup
+hpp
+hr
+hreading
+href
+hsearch
+html
+htmlquote
+http
+icnt
+idef
+idefz
+idp
+ids
+ifdef
+ifelse
+img
+incextra
+incr
+incrementp
+indentv
+index's
+indexlookup
+ing
+init
+initially
+inode
+int
+inuse
+io
+ioinfo
+iosizep
+ipath
+isBinary
+isBoolean
+isDocument
+isNode
+isNull
+isNumber
+isString
+isType
+isVariable
+isalive
+isdirp
+isnull
+isprint
+isswapped
+istream
+iurl
+java
+javadoc
+javasrcref
+journaling
+jsnelson
+kb
+kbyte
+kbytes
+key's
+keyfirst
+keylast
+keyp
+keytype
+keywork
+klNpRrV
+lang
+lazydoc
+ldbm
+len
+lenp
+lg
+li
+lineno
+linkjavadoc
+linkpage
+linkweb
+listp
+lk
+loadContainer
+lockmode
+lockng
+locknotgranted
+lockop
+locktimeout
+logc
+lookupIndex
+lookupStatistics
+lorder
+lorderp
+lref
+lseek
+lsn
+lsnp
+lt
+mailto
+majorp
+malloc
+manref
+margo
+materialised
+maxToRead
+maxcommitperflush
+maxid
+maxlockers
+maxlocks
+maxnactive
+maxnlockers
+maxnlocks
+maxnobjects
+maxnsnapshot
+maxobjects
+maxopenfd
+maxopenfdp
+maxp
+maxsize
+maxtxns
+maxwrite
+maxwritep
+mbytes
+mbytesp
+memp
+mempfile
+memset
+meow
+metaDataName
+metaDataNamespace
+metadata
+mgr
+mincommitperflush
+minkey
+minkeyp
+minorp
+minp
+misc
+misconfigured
+mjc
+mmapsize
+mmapsizep
+modep
+modesp
+modifydocument
+mp
+mpf
+mpfopen
+mpoolfile
+ms
+msg
+msgcall
+msgfile
+msgfilep
+msgs
+multigranularity
+multithreaded
+multiversion
+mutex
+mutexes
+mutexp
+mvcc
+myContainer
+myQuery
+myQueryContext
+mycontainer
+mydata
+mydoc
+myenv
+nTV
+naborts
+nactive
+nameSpace
+namep
+namesp
+nbegins
+nbytes
+ncache
+ncachep
+ncommits
+ndata
+ndbm
+ndeadlocks
+ndowngrade
+nelem
+nelemp
+newEncoding
+newName
+newname
+newsite
+newsites
+nextdup
+nextkey
+nextnodup
+nkeys
+nlist
+nlistbegin
+nlistend
+nlistns
+nlockers
+nlocks
+nlocktimeouts
+nmodes
+nobjects
+noframes
+nontransactional
+nooverwrite
+noshade
+nosync
+nowait
+nref
+nreleases
+nrequests
+nrestores
+nsites
+nsitesp
+nsnapshot
+nthreads
+nthrottles
+ntxntimeouts
+nul
+nupgrade
+nvotes
+nwrotep
+obj
+objs
+offsetp
+ol
+oldName
+onoff
+onoffp
+op
+openContainer
+openfd
+opensub
+operation's
+org
+ostream
+outfile
+ovfl
+padp
+pag
+pageSize
+pagecnt
+pagename
+pagep
+pagesize
+pagesizep
+pagfno
+paniccall
+param
+parambegin
+paramend
+paramname
+parentid
+parms
+parsexpathexpression
+passwd
+patchp
+pathsubst
+pf
+pg
+pgaddr
+pgcookie
+pget
+pgflags
+pgfree
+pgin
+pgno
+pgnoaddr
+pgout
+picgif
+pid
+pindex
+pkey
+policyp
+popdef
+posix
+pre
+pread
+preplist
+prev
+prevnodup
+pri
+printf
+printlog
+priorityp
+pthread
+pthreads
+ptr
+publicId
+pushdef
+putDocument
+pwrite
+qs
+queryContext
+queryString
+queryWithXPath
+randomNS
+rcount
+rdonly
+readBytes
+readonly
+realloc
+rec
+recno
+recnum
+recops
+redistributable
+refO
+refT
+refc
+refcxx
+regionagain
+regionmax
+regionmaxp
+registerResolver
+regsize
+reindex
+reindexContainer
+reindexed
+reindexing
+reinstantiated
+removeAlias
+removeContainer
+removeMetaData
+removeNamespace
+renameContainer
+repinval
+repl
+replaceDefaultIndex
+replaceIndex
+repmgr
+req
+rerequests
+resolveCollection
+resolveDocument
+resolveEntity
+resolveSchema
+retapi
+retdata
+retdlen
+retkey
+retklen
+retloop
+retp
+rf
+rmw
+rn
+ro
+roff
+rpc
+rpcclient
+rt
+rtc
+runrec
+rw
+sarette
+schemaLocation
+scount
+se
+secondaryKeyCreate
+sed
+seealso
+selectionExpr
+sema
+seq
+setApplyChangesToContainers
+setBaseURI
+setContainer
+setContent
+setContentAsDOM
+setContentAsXmlInputStream
+setDefaultCollection
+setDefaultContainer
+setDefaultContainerFlags
+setDefaultContainerType
+setDefaultPageSize
+setDefaultSequenceIncrement
+setEvaluationType
+setHighBound
+setIndex
+setIndexSpecification
+setLogCategory
+setLogLevel
+setLowBound
+setMetaData
+setName
+setNamespace
+setNewEncoding
+setNode
+setObj
+setObject
+setParent
+setReturnType
+setVariableValue
+setWithMetaData
+setret
+sf
+shm
+shmget
+shmid
+shtml
+sizep
+sleepp
+sleepycat
+sourcep
+sp
+spinsp
+src
+srcDocBytes
+ssize
+standalone
+startsync
+stat
+statp
+std
+stdarg
+stderr
+stdin
+stdmode
+str
+strerror
+struct
+subclassed
+subdatabase
+sv
+svc
+sxml
+syscmd
+systemId
+tVvx
+tagbegin
+tagend
+tagns
+tagopt
+tagoptns
+tas
+taskIdSelf
+tcl
+td
+thang
+thr
+threadid
+tid
+tiebreaker
+timeoutp
+timestamp
+timestampp
+tmp
+toAdopt
+toFill
+toModify
+toString
+toc
+tr
+transapp
+translit
+tt
+tx
+txn
+txnX
+txnarray
+txnbegin
+txnid
+txnopt
+txns
+txntimeout
+txt
+typedef'd
+ubbconfig
+ubell
+uc
+uintmax
+ul
+ulen
+umask
+unconfigures
+uncorrupted
+undefine
+underfunc
+undivert
+unix
+unmap
+untypedAtomic
+unusedflags
+updateDocument
+upgradeContainer
+uri
+url
+usec
+usr
+utf
+util
+utilarg
+utilenv
+utilexit
+valign
+value's
+var
+vec
+verifyContainer
+vsnprintf
+wc
+wcount
+webforms
+wellformed
+wholedoc
+wildcard
+withMetaData
+writable
+xa
+xerces
+xercesc
+xid
+xm
+xml
+xmlc
+xmlconst
+xmldoc
+xmlexception
+xmllinks
+xmllist
+xmlns
+xmlq
+xmlr
+xmlv
+xmlvalue
+xpathexpression
+xquery
+xtv
+xxx
+yearMonthDuration
+zmust
diff --git a/db/docs_src/support/Xindex b/db/docs_src/support/Xindex
new file mode 100644
index 000000000..9a83122d7
--- /dev/null
+++ b/db/docs_src/support/Xindex
@@ -0,0 +1,53 @@
+#! /bin/sh
+#
+# $Id: Xindex,v 10.24 2007/05/17 15:15:11 bostic Exp $
+
+test -d $BDB_SRC -a -d $TARGET || {
+ echo "Xindex: \$BDB_SRC or \$TARGET not set"
+ exit 1
+}
+
+# Build the HTML from the index.
+# $1 API Name
+# $2 API Directory name
+build()
+{
+ echo '<html>'
+ echo '<head>'
+ echo "<title>Berkeley DB: $1 API Index</title>"
+ echo '<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">'
+ echo '<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">'
+ echo '</head>'
+ echo '<body bgcolor=white>'
+ echo "<h1 align=center>$1 API Index</h1>"
+ echo "<center>"
+ echo "<table cellspacing=0 cellpadding=0>"
+
+ # The reference guide is done using the C_API, so we have to
+ # copy references from it for the C++ API.
+ (cat $BDB_SRC/docs_src/support/static.src $TARGET/$2/pindex.src;
+ egrep '^__APIREL__/ref/|^__APIREL__/ref_xml/' \
+ $TARGET/api_c/pindex.src) |
+ sort -u |
+ sort -f -t@ +1 |
+ sed -f $BDB_SRC/docs_src/support/html.sed |
+ sed -e 's/__APIREL__/../' \
+ -e 's/\([^ ]\)@/\1 @/' \
+ -e 's/^\([^ ]*\) \([^@]*\)@\([^ ]*\)\(.*\)/<tr><td align=right>\2<\/td><td>\&nbsp;<a href="\1">\3<\/a>\4<\/td><\/tr>/'
+
+ echo "</table>"
+ echo "</center>"
+ echo "<p><font size=1>Copyright (c) 1996,2007 Oracle. All rights reserved.</font>"
+ echo "</body>"
+ echo "</html>"
+}
+
+[ -f $TARGET/api_c/pindex.src ] &&
+ build C api_c > $TARGET/api_c/c_pindex.html
+
+[ -f $TARGET/api_cxx/pindex.src ] &&
+ build C++ api_cxx > $TARGET/api_cxx/cxx_pindex.html
+
+[ -f $TARGET/api_tcl/pindex.src ] &&
+ build Tcl api_tcl > $TARGET/api_tcl/tcl_pindex.html
+exit 0
diff --git a/db/docs_src/support/check b/db/docs_src/support/check
new file mode 100644
index 000000000..8750c6a7b
--- /dev/null
+++ b/db/docs_src/support/check
@@ -0,0 +1,797 @@
+# $Id: check,v 10.155 2007/07/06 16:37:23 bostic Exp $
+#
+# Script to check HTML output for links that reference nonexistent
+# pages, and for pages that aren't referenced by anything.
+
+###################################################
+# Tests
+###################################################
+t1()
+{
+ echo "$of: CVS conflicts (<<<<<<< and >>>>>>>)..."
+ cat ${SO_FILES} |
+ xargs egrep '<<<<<<<|>>>>>>>' > ${T}/check_$of
+ [ -s ${T}/check_$of ] || rm ${T}/check_$of
+}
+
+t2()
+{
+ echo "$of: Inline HTML (&gt; and &lt;)..."
+ cat ${SO_FILES} |
+ xargs egrep '&[lg]t;' > ${T}/check_$of
+ [ -s ${T}/check_$of ] || rm ${T}/check_$of
+}
+
+t3()
+{
+ echo "$of: Berkeley DB (should be m4_db)..."
+ cat ${SO_FILES} |
+ xargs egrep -w 'Berkeley DB' > ${T}/check_$of
+ [ -s ${T}/check_$of ] || rm ${T}/check_$of
+}
+
+t4()
+{
+ echo "$of: dialogue (should be dialog)..."
+ cat ${HTML_FILES} |
+ xargs egrep -i 'dialogue' > ${T}/check_$of
+ [ -s ${T}/check_$of ] || rm ${T}/check_$of
+}
+
+t5()
+{
+ echo "$of: dataset (should be data set)..."
+ cat ${HTML_FILES} |
+ xargs egrep -i -w 'dataset' |
+ sed -e '/embedded.html:/d' > ${T}/check_$of
+ [ -s ${T}/check_$of ] || rm ${T}/check_$of
+}
+
+t6()
+{
+ echo "$of: co-existing (should be coexisting)..."
+ cat ${HTML_FILES} |
+ xargs egrep -i 'co-existing' > ${T}/check_$of
+ [ -s ${T}/check_$of ] || rm ${T}/check_$of
+}
+
+t7()
+{
+ echo "$of: writeable (should be writable)..."
+ cat ${HTML_FILES} |
+ xargs egrep -i 'writeable' > ${T}/check_$of
+ [ -s ${T}/check_$of ] || rm ${T}/check_$of
+}
+
+t8()
+{
+ echo "$of: indexes (should be indices)..."
+ cat ${HTML_FILES} |
+ xargs egrep -i 'indexes' > ${T}/check_$of
+ [ -s ${T}/check_$of ] || rm ${T}/check_$of
+}
+
+t9()
+{
+ echo "$of: useable (should be usable)..."
+ cat ${HTML_FILES} |
+ xargs egrep -i 'useable' > ${T}/check_$of
+ [ -s ${T}/check_$of ] || rm ${T}/check_$of
+}
+
+t10()
+{
+ echo "$of: B-tree, B+tree (should be Btree)..."
+ cat ${SO_FILES} |
+ xargs egrep -i 'B[+-]tree' |
+ sed -e '/refs.so:.*The Ubiquitous B-tree/d' \
+ -e '/refs.so:.*Prefix B-trees/d' > ${T}/check_$of
+ [ -s ${T}/check_$of ] || rm ${T}/check_$of
+}
+
+t11()
+{
+ echo "$of: two phase (should be two-phase)..."
+ cat ${SO_FILES} |
+ xargs egrep -i 'two phase' > ${T}/check_$of
+ [ -s ${T}/check_$of ] || rm ${T}/check_$of
+}
+
+t12()
+{
+ echo "$of: Punctuation/macro typos"
+ cat ${HTML_FILES} |
+ xargs egrep ' [,;)]|\( ' > ${T}/check_$of
+ [ -s ${T}/check_$of ] || rm ${T}/check_$of
+}
+
+t13()
+{
+ echo "$of: Too many closing/opening m4 quotes..."
+ (cat ${HTML_FILES} |
+ xargs egrep '\(\[|\]\)' |
+ sed -e '/(\*fsp)\[\]/d' \
+ -e 's/Object\[\]//g' \
+ -e 's/\[DB_XIDDATASIZE\]//g' \
+ -e 's/byte\[\]//g' \
+ -e 's/byte\[\]\[\]//g' \
+ -e 's/char\[\]//g' \
+ -e 's/\[\]\&nbsp;//g' \
+ -e 's/raceElement\[\]//g' \
+ -e 's/onflicts(\[\])//g' |
+ egrep '\(\[|\]\)') > ${T}/check_$of
+ [ -s ${T}/check_$of ] || rm ${T}/check_$of
+}
+
+t14()
+{
+ echo "$of: i.e. or e.g. (should be that is, for example)..."
+ cat ${HTML_FILES} |
+ xargs egrep 'i\.e\.|e\.g\.' |
+ sed -e '/embedded.html:/d' > ${T}/check_$of
+ [ -s ${T}/check_$of ] || rm ${T}/check_$of
+}
+
+t15()
+{
+ echo "$of: multi-thread, multi-process (should be multiXXX)..."
+ cat ${HTML_FILES} |
+ xargs egrep -i 'multi-thread|multi-process' |
+ sed -e '/bdb_usenix.html:/d' \
+ -e '/embedded.html:/d' > ${T}/check_$of
+ [ -s ${T}/check_$of ] || rm ${T}/check_$of
+}
+
+t16()
+{
+ echo "$of: readonly (should be read-only)..."
+ cat ${HTML_FILES} |
+ xargs egrep -w -i 'readonly' > ${T}/check_$of
+ [ -s ${T}/check_$of ] || rm ${T}/check_$of
+}
+
+t17()
+{
+ echo "$of: off-site (should be offsite)..."
+ cat ${HTML_FILES} |
+ xargs egrep -i 'off-site' > ${T}/check_$of
+ [ -s ${T}/check_$of ] || rm ${T}/check_$of
+}
+
+t18()
+{
+ echo "$of: user defined/specified (should be user-XXX)..."
+ cat ${HTML_FILES} |
+ xargs egrep -i 'user defined|user specified' > ${T}/check_$of
+ [ -s ${T}/check_$of ] || rm ${T}/check_$of
+}
+
+t19()
+{
+ echo "$of: on-going (should be ongoing)..."
+ cat ${HTML_FILES} |
+ xargs egrep -i 'on-going' > ${T}/check_$of
+ [ -s ${T}/check_$of ] || rm ${T}/check_$of
+}
+
+t20()
+{
+ echo "$of: vice-versa (should be vice versa)..."
+ cat ${HTML_FILES} |
+ xargs egrep -i 'vice-versa' > ${T}/check_$of
+ [ -s ${T}/check_$of ] || rm ${T}/check_$of
+}
+
+t21()
+{
+ echo "$of: data dependent (should be data-dependent)..."
+ cat ${HTML_FILES} |
+ xargs egrep -i 'data dependent' > ${T}/check_$of
+ [ -s ${T}/check_$of ] || rm ${T}/check_$of
+}
+
+t22()
+{
+ echo "$of: non-existXXX (should be nonexistXXX)..."
+ cat ${HTML_FILES} |
+ xargs egrep -i 'non-exist' > ${T}/check_$of
+ [ -s ${T}/check_$of ] || rm ${T}/check_$of
+}
+
+t23()
+{
+ echo "$of: pre-built (should be prebuilt)..."
+ cat ${HTML_FILES} |
+ xargs egrep -i 'pre-built' > ${T}/check_$of
+ [ -s ${T}/check_$of ] || rm ${T}/check_$of
+}
+
+t24()
+{
+ echo "$of: file/path name (should be filename/pathname)..."
+ cat ${HTML_FILES} |
+ xargs egrep -i 'file name|path name' |
+ sed '/file named/d' > ${T}/check_$of
+ [ -s ${T}/check_$of ] || rm ${T}/check_$of
+}
+
+t25()
+{
+ echo "$of: wish/wishes/wishing (should be want/wants/wanting)..."
+ cat ${HTML_FILES} |
+ xargs egrep -i -w 'wish|wishes|wishing' |
+ sed '/wish session/d' > ${T}/check_$of
+ [ -s ${T}/check_$of ] || rm ${T}/check_$of
+}
+
+t26()
+{
+ echo "$of: file systems (should be filesystems)..."
+ cat ${HTML_FILES} |
+ xargs egrep -i 'file systems' |
+ sed '/embedded.html:/d' > ${T}/check_$of
+ [ -s ${T}/check_$of ] || rm ${T}/check_$of
+}
+
+t27()
+{
+ # The rule is that reXXX is re-XXX if there are two ways to read it
+ # (re-creation vs. recreation) or if the first X is 'e' (re-entrant
+ # vs. reentrant).
+ echo "$of: re-XXX (that should be reXXX)..."
+ cat ${HTML_FILES} |
+ xargs egrep -i \
+ 're-acquired|re-alloc|re-compile|re-configure|re-direct|re-instantiat|re-link|re-load|re-number|re-open|re-start' |
+ sed '/pre-/d' > ${T}/check_$of
+ [ -s ${T}/check_$of ] || rm ${T}/check_$of
+}
+
+t28()
+{
+ echo "$of: reXXX (that should be re-XXX)..."
+ cat ${HTML_FILES} |
+ xargs egrep -i 'reent|recreat' |
+ sed -e '/_REENTRANT/d' -e '/embedded.html:/d' > ${T}/check_$of
+ [ -s ${T}/check_$of ] || rm ${T}/check_$of
+}
+
+t29()
+{
+ echo "$of: stand-alone (should be standalone)..."
+ cat ${HTML_FILES} |
+ xargs egrep -i 'stand-alone' |
+ sed '/bdb_usenix.html:/d' > ${T}/check_$of
+ [ -s ${T}/check_$of ] || rm ${T}/check_$of
+}
+
+t30()
+{
+ echo "$of: meta-data (should be metadata)..."
+ cat ${HTML_FILES} |
+ xargs egrep -i 'meta-data' |
+ sed '/bdb_usenix.html:/d' > ${T}/check_$of
+ [ -s ${T}/check_$of ] || rm ${T}/check_$of
+}
+
+t31()
+{
+ echo "$of: the the, and and, or or, that that..."
+ cat ${HTML_FILES} |
+ xargs egrep -i -w 'the the|and and|or or|that that' > ${T}/check_$of
+ [ -s ${T}/check_$of ] || rm ${T}/check_$of
+}
+
+t32()
+{
+ echo "$of: doubled punctuation..."
+ cat ${HTML_FILES} |
+ xargs egrep -i '\.\.' |
+ sed -e '/"\.\."/d' \
+ -e '/\.\.\//d' \
+ -e '/\.\.\./d' > ${T}/check_$of
+ [ -s ${T}/check_$of ] || rm ${T}/check_$of
+}
+
+t33()
+{
+ echo "$of: transaction protect (should be transaction-protect)..."
+ cat ${HTML_FILES} |
+ xargs egrep -i -w 'transaction protect' |
+ sed '/embedded.html:/d' > ${T}/check_$of
+ [ -s ${T}/check_$of ] || rm ${T}/check_$of
+}
+
+t34()
+{
+ echo "$of: backward compatible (should be backward-compatible)..."
+ cat ${HTML_FILES} |
+ xargs egrep -i 'backward compatible' > ${T}/check_$of
+ [ -s ${T}/check_$of ] || rm ${T}/check_$of
+}
+
+t35()
+{
+ echo "$of: shutdown (should be shut down)..."
+ cat ${HTML_FILES} |
+ xargs egrep -i -w 'shutdown' > ${T}/check_$of
+ [ -s ${T}/check_$of ] || rm ${T}/check_$of
+}
+
+t36()
+{
+ echo "$of: described above/below (should be previously/as follows)..."
+ cat ${HTML_FILES} |
+ xargs egrep -i 'described above|described below' |
+ sed '/embedded.html:/d' > ${T}/check_$of
+ [ -s ${T}/check_$of ] || rm ${T}/check_$of
+}
+
+t37()
+{
+ echo "$of: dnl..."
+ cat ${HTML_FILES} |
+ xargs egrep -w dnl > ${T}/check_$of
+ [ -s ${T}/check_$of ] || rm ${T}/check_$of
+}
+
+t38()
+{
+ echo "$of: NOAPI..."
+ cat ${HTML_FILES} |
+ xargs egrep -w NOAPI > ${T}/check_$of
+ [ -s ${T}/check_$of ] || rm ${T}/check_$of
+}
+
+t39()
+{
+ echo "$of: Trailing whitespace..."
+ cat ${SO_FILES} |
+ xargs egrep -l '[ ]$' > ${T}/check_$of
+ [ -s ${T}/check_$of ] || rm ${T}/check_$of
+}
+
+t40()
+{
+ echo "$of: Unprintable characters..."
+ (for i in `cat ${SO_FILES}`; do
+ tr -d '\0-\10\13-\37\177-\377' < $i > ${T}/1
+ cmp $i ${T}/1 > /dev/null || echo $i
+ done) > ${T}/check_$of
+ [ -s ${T}/check_$of ] || rm ${T}/check_$of
+}
+
+t41()
+{
+ echo "$of: Empty brackets..."
+ cat ${SO_FILES} ${M4_FILES} |
+ xargs egrep '\[\]' |
+ sed -e 's/M4XMLMAJOR\[\]//g' \
+ -e 's/M4XMLMINOR\[\]//g' \
+ -e 's/__LB__\[\]//g' \
+ -e 's/libdbxml\[\]//g' \
+ -e 's/libdbxml_tcl\[\]//g' \
+ -e '/txn_recover.so:.*DB_XIDDATASIZE/d' \
+ -e '/\/m4\/m4.links:/d' \
+ -e '/\/ref\/build_win\/faq.so:/d' \
+ -e '/\/ref\/build_win\/intro.so:/d' \
+ -e '/\/ref\/dumpload\/format.so:/d' \
+ -e '/\/ref\/dumpload\/text.so:/d' \
+ -e '/\/ref\/env\/naming.so:/d' \
+ -e '/\/ref\/xa\/xa_config.so:/d' \
+ -e '/\/ref_xml\/xml_win\/intro.so:/d' |
+ egrep '\[\]' > ${T}/check_$of
+ [ -s ${T}/check_$of ] || rm ${T}/check_$of
+}
+
+t42()
+{
+ echo "$of: parenthesis count ..."
+cat << END-OF-PROGRAM > /tmp/paren.c
+ #include <stdio.h>
+ main(argc, argv)
+ int argc;
+ char *argv[];
+ {
+ int ch, c, o;
+ for (o = c = 0; (ch = getchar()) != EOF;) {
+ if (ch == '(')
+ ++o;
+ if (ch == ')')
+ ++c;
+ if (c > o) {
+ printf("%s: too many closing parenthesis\n",
+ argv[1]);
+ exit (0);
+ }
+ }
+ if (c != o)
+ printf("%s: too many open parenthesis\n", argv[1]);
+ exit (0);
+ }
+END-OF-PROGRAM
+
+ cc -O /tmp/paren.c -o /tmp/paren
+
+ (for i in `cat ${HTML_FILES}`; do
+ /tmp/paren $i < $i >> ${T}/check_$of
+ done)
+ [ -s ${T}/check_$of ] || rm ${T}/check_$of
+ rm -f /tmp/paren /tmp/paren.c
+}
+
+t43()
+{
+ if [ "$PRODUCT" = "XML" ]; then
+ echo "$of: Missing log records... (skipping test for XML)"
+ return
+ fi
+ echo "$of: Missing log records..."
+ f=$BDB_SRC/test/logtrack.list
+ if [ ! -f $f ]; then
+ echo "$of: $f: file not found (skipping test)"
+ return
+ fi
+ egrep 'BEGIN|PREFIX' $f |
+ awk '/PREFIX/{p = $2} /BEGIN/{printf "%s_%s\n", p, $2}' |
+ sed 's/^__//' |
+ sort > ${T}/1
+ sed -e '/START LOG RECORD TYPES/,/STOP LOG RECORD TYPES/p' \
+ -e d ref/debug/printlog.so |
+ egrep 'm4_table_element' |
+ sed -e 's/[^(]*(//' -e 's/,.*//' | sort > ${T}/2
+ cmp ${T}/1 ${T}/2 > /dev/null ||
+ (echo "<<< Source code >>> Ref Guide" &&
+ diff ${T}/1 ${T}/2) > ${T}/check_$of
+}
+
+###################################################
+# Chapter headings.
+###################################################
+t44()
+{
+ echo "$of: Chapter headings ..."
+ (cat ${HTML_FILES} | xargs egrep '<td><h3><dl><dt>' |
+ sed -e 's/docs\/ref\///' \
+ -e 's/:.*<dd>/@/' -e 's/<\/dl>.*//' |
+ sed -e '/\/am.*@Access Methods$/d' \
+ -e '/\/apprec.*@Application Specific Logging and Recovery$/d' \
+ -e '/\/arch\/.*@Architecture$/d' \
+ -e '/\/build_brew\/.*@Building Berkeley DB for BREW$/d' \
+ -e '/\/build_s60\/.*@Building Berkeley DB for S60$/d' \
+ -e '/\/build_unix\/.*@Building Berkeley DB for UNIX\/POSIX systems$/d' \
+ -e '/\/build_vxworks\/.*@Building Berkeley DB for VxWorks systems$/d' \
+ -e '/\/build_win\/.*@Building Berkeley DB for Windows systems$/d' \
+ -e '/\/build_wince\/.*@Building Berkeley DB for Windows CE systems$/d' \
+ -e '/\/cam\/.*@Berkeley DB Concurrent Data Store Applications$/d' \
+ -e '/\/changelog\/.*@Upgrading Berkeley DB Applications$/d' \
+ -e '/\/debug\/.*@Debugging Applications$/d' \
+ -e '/\/distrib\/.*@Distribution$/d' \
+ -e '/\/dumpload\/.*@Dumping and Reloading$/d' \
+ -e '/\/env\/.*@Environment$/d' \
+ -e '/\/ext\/.*@Berkeley DB Extensions$/d' \
+ -e '/\/install\/.*@System Installation Notes$/d' \
+ -e '/\/intro\/.*@Introduction$/d' \
+ -e '/\/java\/.*@Java API$/d' \
+ -e '/\/lock\/.*@Locking Subsystem$/d' \
+ -e '/\/log\/.*@Logging Subsystem$/d' \
+ -e '/\/mp\/.*@Memory Pool Subsystem$/d' \
+ -e '/\/program\/.*@Programmer Notes$/d' \
+ -e '/\/refs\/.*@Additional References$/d' \
+ -e '/\/rep\/.*@Berkeley DB Replication$/d' \
+ -e '/\/rpc\/.*@RPC Client\/Server$/d' \
+ -e '/\/sendmail\/.*@Sendmail$/d' \
+ -e '/\/sequence\/.*@Sequences$/d' \
+ -e '/\/tcl\/.*@Tcl API$/d' \
+ -e '/\/test\/.*@Test Suite$/d' \
+ -e '/\/transapp\/.*@Berkeley DB Transactional Data Store Applications$/d' \
+ -e '/\/txn\/.*@Transaction Subsystem$/d' \
+ -e '/\/upgrade[\.0-9\]*\/.*@Upgrading Berkeley DB.*Applications$/d' \
+ -e '/\/xa\/.*@Distributed Transactions$/d' \
+ -e '/\/xml\/.*@Berkeley DB XML$/d' \
+ -e '/\/xml_unix\/.*@Building Berkeley DB XML for UNIX\/POSIX systems$/d' \
+ -e '/\/xml_win\/.*@Building Berkeley DB XML for Windows systems$/d' \
+ -e '/\/xquery\/.*@Berkeley DB XML XQuery Extensions$/d' |
+ column -t -s@) > ${T}/check_$of
+ [ -s ${T}/check_$of ] || rm ${T}/check_$of
+}
+
+###################################################
+# Layout document.
+###################################################
+t45()
+{
+ if [ "$PRODUCT" = "XML" ]; then
+ echo "$of: Layout document... (skipping test for XML)"
+ return
+ fi
+ echo "$of: Layout document..."
+ egrep m4_table_element ref/distrib/layout.so |
+ sed -e 's/,.*//' \
+ -e 's/.*(//' |
+ sort > ${T}/1
+ ls $BDB_SRC |
+ sed -e /CVS/d \
+ -e /README/d \
+ -e /build[0-9]/d \
+ -e /test_cxx/d \
+ -e /test_perf/d \
+ -e /test_purify/d \
+ -e /test_rep/d \
+ -e /test_server/d \
+ -e /test_thread/d \
+ -e /test_vxworks/d > ${T}/2
+
+ cmp ${T}/1 ${T}/2 > /dev/null ||
+ (echo "<<< Ref Guide >>> Directory ls" && diff ${T}/1 ${T}/2) > ${T}/check_$of
+}
+
+###################################################
+# Missing flags.
+###################################################
+t46()
+{
+ echo "$of: Missing flags..."
+
+ # Compare all the items in the source files against the table of
+ # C flags.
+ cat ${SO_FILES} ${M4_FILES} |
+ xargs egrep 'm4_idef[(]DB_|m4_idefz*[(]DB_' |
+ tr -c 'A-Z0-9_' '\012' |
+ egrep DB_ |
+ sort -u > ${T}/1
+
+ sed -e 's/^\$1, \(DB_[^,]*\),.*/\1/p' \
+ -e d $BDB_SRC/docs_src/m4/m4.links | sort > ${T}/2
+ (echo "<<< source files >>> m4/m4.links file" &&
+ diff ${T}/1 ${T}/2 | egrep '^[<>]') >> ${T}/check_$of
+}
+
+###################################################
+# Makefile install
+###################################################
+t47()
+{
+ echo "$of: Makefile.in document install list..."
+
+ f=$DOCS_SRC/../dist/Makefile.in
+ if [ ! -f $f ]; then
+ echo "$of: $f: file not found"
+ exit 1
+ fi
+ (echo java && ls $TARGET) | sed /CVS/d | sort -u > ${T}/1
+ sed -n \
+ -e '/DOCLIST/,/install_docs/{' \
+ -e '/install_docs/q' \
+ -e 's/\\//' \
+ -e 's/DOCLIST=[ ]*//' \
+ -e 's/^[ ]*//' \
+ -e 's/[ ]*$//' \
+ -e '/^$/d' \
+ -e 'p' \
+ -e '}' < $f | tr -s ' ' '\012' | sort > ${T}/2
+ cmp ${T}/1 ${T}/2 > /dev/null ||
+ (echo "<<< docs directory >>> Makefile.in document install list" &&
+ diff ${T}/1 ${T}/2) > ${T}/check_$of
+}
+
+###################################################
+# Spelling checks.
+###################################################
+t48()
+{
+ echo "$of: Spelling checks..."
+ for i in `find . -type d ! -name '*CVS' ! -name 'support'`; do
+ (cd $i
+ s="NO"
+ rm -f ${T}/1 ${T}/2
+ test -f ../spell.ok && s="../spell.ok"
+ test -f spell.ok && s="spell.ok"
+ if test $s != "NO"; then
+ sort -u $s > ${T}/1
+ [ "`echo m4.*`" != "m4.*" ] && \
+ spell m4.* | \
+ sort -u | comm -23 /dev/stdin ${T}/1 >> ${T}/2
+ [ "`echo *.so`" != "*.so" ] && \
+ spell *.so | \
+ sort -u | comm -23 /dev/stdin ${T}/1 >> ${T}/2
+ fi
+ [ -s ${T}/2 ] &&
+ (echo "==== $i" && cat ${T}/2) >> ${T}/check_$of)
+ done
+}
+
+###################################################
+# Check for unexpanded m4 macros.
+###################################################
+t49()
+{
+ echo "$of: Unexpanded M4 macros..."
+
+ (cat ${HTML_FILES} | xargs egrep 'm4_|UNREF' > ${T}/check_$of)
+ [ -s ${T}/check_$of ] || rm ${T}/check_$of
+}
+
+###################################################
+# weblint
+###################################################
+t50()
+{
+ echo "$of: Weblint..."
+
+cat << END-OF-WEBPAGE > ${T}/1
+<html>
+<head>
+<title>
+title
+</title>
+</head>
+<body>
+body
+</body>
+</html>
+END-OF-WEBPAGE
+ wb=/a/db/bin/weblint
+ $wb -f ${T}/1 > /dev/null
+ if [ $? -eq 0 ] ; then
+ (cd $TARGET/.. && $wb -d heading-order -i -l docs | \
+ sed -e '/\/frame.html/d' \
+ -e '/\/object.html/d' \
+ -e '/recommends the TITLE be no longer than 64 characters/d' \
+ -e '/ref.html.*expected tag(s) not seen: BODY/d' \
+ -e '/directory does not have an index file/d' \
+ -e '/docs\/articles\//d' \
+ -e '/docs\/collections\//d' \
+ -e '/docs\/gsg\//d' \
+ -e '/docs\/gsg_db_rep\//d' \
+ -e '/docs\/gsg_txn\//d' \
+ -e '/docs\/gsg_xml\//d' \
+ -e '/docs\/gsg_xml_txn\//d' \
+ -e '/docs\/intro_xml\//d' \
+ -e '/docs\/java\//d' \
+ -e '/docs\/javaxml\//d' \
+ > ${T}/check_$of)
+ [ -s ${T}/check_$of ] || rm ${T}/check_$of
+ else
+ echo "$of: weblint not found (skipping test)"
+ fi
+}
+
+###################################################
+# Non-existent page links, unreferenced pages.
+###################################################
+missing_page()
+{
+ # $1 == path
+ d=`dirname $1`
+ f=`basename $1`
+
+ (cd $d &&
+ cat $f | tr '[:space:]' '\n' | egrep -i 'href="' | \
+ sed -e 's/[Hh][Rr][Ee][Ff]="//' \
+ -e 's/".*//' \
+ -e 's/#.*//' \
+ -e '/.ps$/d' \
+ -e '/[Hh][Tt][Tt][Pp]:\/\//d' \
+ -e '/examples_java\/src\/com\/sleepycat\/examples\//d' \
+ -e '/ftp:\/\//d' \
+ -e '/java\/index.html/d' \
+ -e '/mailto:/d' | \
+ while read i; do
+ if [ -z $i ]; then
+ continue;
+ fi
+ if [ ! -f $i ]; then
+ echo "$1: $i missing" >> ${BAD_LINKS}
+ else
+ (cd `dirname $i` && echo $PWD/`basename $i`)
+ fi
+ done)
+}
+
+t51()
+{
+ echo "$of: Non-existent page links, unreferenced pages..."
+ BAD_LINKS=${T}/bad_links
+ UNREF_FILES=${T}/unref_files
+
+ # Check for links referencing nonexistent pages.
+ for i in `cat ${HTML_FILES}`; do
+ missing_page $i
+ done > ${T}/1 2>&1
+ [ -s ${BAD_LINKS} ] || rm -f ${BAD_LINKS}
+
+ # Check for pages that aren't referenced by any link.
+ (cat ${T}/1 |
+ sed -e 's;.*/docs/;docs/;' |
+ sort -u;
+ cat ${HTML_FILES} |
+ sed -e 's;.*/docs/;docs/;') |
+ sort |
+ uniq -u |
+ sed -e '/docs\/api_c\/c_pindex.html/d' \
+ -e '/docs\/api_c\/frame.html/d' \
+ -e '/docs\/api_c\/object.html/d' \
+ -e '/docs\/api_cxx\/cxx_pindex.html/d' \
+ -e '/docs\/api_cxx\/object.html/d' \
+ -e '/docs\/api_tcl\/tcl_pindex.html/d' \
+ -e '/docs\/collections\//d' \
+ -e '/docs\/gsg.*pdf$/d' \
+ -e '/docs\/gsg\/CXX\/index.html/d' \
+ -e '/docs\/gsg\/C\/index.html/d' \
+ -e '/docs\/gsg\/JAVA\/index.html/d' \
+ -e '/docs\/gsg_txn\/CXX\/index.html/d' \
+ -e '/docs\/gsg_txn\/C\/index.html/d' \
+ -e '/docs\/gsg_txn\/JAVA\/index.html/d' \
+ -e '/docs\/gsg_xml\/cxx\/index.html/d' \
+ -e '/docs\/gsg_xml\/cxx\/introduction.html/d' \
+ -e '/docs\/gsg_xml\/java\/introduction.html/d' \
+ -e '/docs\/gsg_xml_txn\/cxx\/index.html/d' \
+ -e '/docs\/intro_xml\/BerkeleyDBXML-Intro.pdf/d' \
+ -e '/docs\/intro_xml\/index.html/d' \
+ -e '/docs\/java\//d' \
+ -e '/docs\/ref\/am\/second.javas/d' \
+ -e '/docs\/ref\/install\/magic.s5.be.txt/d' \
+ -e '/docs\/ref\/install\/magic.s5.le.txt/d' \
+ -e '/docs\/ref\/install\/magic.txt/d' \
+ -e '/docs\/ref\/program\/solaris.txt/d' \
+ -e '/docs\/ref\/transapp\/hotbackup.txt/d' \
+ -e '/docs\/ref\/transapp\/transapp.cs/d' \
+ -e '/docs\/ref\/transapp\/writetest.cs/d' \
+ > ${UNREF_FILES}
+ [ -s ${UNREF_FILES} ] || rm ${UNREF_FILES}
+}
+
+###################################################
+# Initialization
+###################################################
+T=$PWD/DOC.errors
+rm -rf ${T}
+mkdir ${T}
+
+HTML_FILES=${T}/html_files
+M4_FILES=${T}/m4_files
+SO_FILES=${T}/so_files
+
+trap 'rm -f ${T}/[0-9] \
+ ${HTML_FILES} ${M4_FILES} ${SO_FILES}; exit 0' 0 1 2 3 13 15
+
+###################################################
+# Build list of output files.
+###################################################
+echo "Build local list of all HTML files..."
+find $TARGET -name '*.html' |
+ sed -e '/\/docs\/articles\//d' \
+ -e '/\/docs\/collections\//d' \
+ -e '/\/docs\/gsg\//d' \
+ -e '/\/docs\/gsg_db_rep\//d' \
+ -e '/\/docs\/gsg_txn\//d' \
+ -e '/\/docs\/gsg_xml\//d' \
+ -e '/\/docs\/gsg_xml_txn\//d' \
+ -e '/\/docs\/intro_xml\//d' \
+ -e '/\/docs\/java\//d' | sort > ${HTML_FILES}
+
+[ -z $BDB_SRC ] || f="$f $BDB_SRC/docs_src"
+[ -z $XML_SRC ] || f="$f $XML_SRC/docs_src"
+
+echo "Build list of all M4 source files..."
+find $f -name 'm4.*' | sort -u > ${M4_FILES}
+
+echo "Build list of all .so source files..."
+find $f -name '*.so' -print | sort -u > ${SO_FILES}
+
+if [ $# -eq 1 ]; then
+ of=1
+ maxtest=51
+ while [ $of -le $maxtest ] ; do
+ t$of
+ of=`expr $of + 1`
+ done
+else
+ case $2 in
+ spell) of=47;;
+ *) of=$2;;
+ esac
+ t$of
+fi
+
+exit 0
diff --git a/db/docs_src/support/copy b/db/docs_src/support/copy
new file mode 100644
index 000000000..234685ef3
--- /dev/null
+++ b/db/docs_src/support/copy
@@ -0,0 +1,8 @@
+# $Id: copy,v 1.4 2006/10/05 01:06:19 bostic Exp $
+
+copy:
+ @for i in ${COPY}; do \
+ cmp ${DOCS_SRC}/${BUILDDIR}/$$i $$i > /dev/null 2>&1 || \
+ (echo ${BUILDDIR}/$$i && \
+ cp ${DOCS_SRC}/${BUILDDIR}/$$i .); \
+ done
diff --git a/db/docs_src/support/html.sed b/db/docs_src/support/html.sed
new file mode 100644
index 000000000..9141d4c80
--- /dev/null
+++ b/db/docs_src/support/html.sed
@@ -0,0 +1,9 @@
+s/__GT__/\&gt;/g
+s/__LB__/[/g
+s/__LT__/\&lt;/g
+s/__RB__/]/g
+s/__OCT__/#/g
+/__M4_META__/c\
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">\
+<meta name="keywords" content="embedded,database,programmatic,toolkit,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++">
+/^[ ]*$/d
diff --git a/db/docs_src/support/static.src b/db/docs_src/support/static.src
new file mode 100644
index 000000000..db9988cf3
--- /dev/null
+++ b/db/docs_src/support/static.src
@@ -0,0 +1,3 @@
+http://www.oracle.com/technology/software/products/berkeley-db/db/index.html @Patches, Updates and Change logs
+http://www.oracle.com/technology/software/products/berkeley-db/db/index.html Patches, @Updates and Change logs
+http://www.oracle.com/technology/software/products/berkeley-db/db/index.html Patches, Updates and @Change logs
diff --git a/db/docs_src/support/suffix b/db/docs_src/support/suffix
new file mode 100644
index 000000000..e2c3e1a68
--- /dev/null
+++ b/db/docs_src/support/suffix
@@ -0,0 +1,25 @@
+# $Id: suffix,v 1.14 2007/04/05 19:38:45 bostic Exp $
+
+.SUFFIXES: .html .so
+.so.html:
+ @f=$<; echo "$${f##*..} -> ${BUILDDIR}/$@"
+ @rm -f "$@"
+ @m4 -DM4API=${API} \
+ -DM4MAJOR=${DB_VERSION_MAJOR} \
+ -DM4MINOR=${DB_VERSION_MINOR} \
+ -DM4PAGEPATH=${BUILDDIR}/$@ \
+ -DM4PATCH=${DB_VERSION_PATCH} \
+ -DM4PRODUCT=${PRODUCT} \
+ -DM4RELDIR=${RELDIR} \
+ -DM4XMLMAJOR=${DBXML_VERSION_MAJOR} \
+ -DM4XMLMINOR=${DBXML_VERSION_MINOR} \
+ -DM4XMLPATCH=${DBXML_VERSION_PATCH} \
+ -I${BDB_SRC}/docs_src \
+ -I${DOCS_SRC} \
+ ${BDB_SRC}/docs_src/m4/m4.db $< | \
+ sed -f ${BDB_SRC}/docs_src/support/html.sed > $@
+
+# Avoid global make variables stepping on our name space.
+C=
+COMMON=
+CXX=
diff --git a/db/docs_src/tcl/api_tcl.so b/db/docs_src/tcl/api_tcl.so
new file mode 100644
index 000000000..fc570cd53
--- /dev/null
+++ b/db/docs_src/tcl/api_tcl.so
@@ -0,0 +1,51 @@
+m4_comment([$Id: api_tcl.so,v 11.21 2003/10/18 19:16:23 bostic Exp $])
+
+m4_page_title([Tcl API])
+include(tcl/m4.tcl)
+
+m4_table_begin(, _center)
+
+m4_table_header([Tcl Command], Description)
+m4_table_element(m4_link(M4RELDIR/api_tcl/env_open, m4_tcl_env_open), Create an environment handle)
+m4_table_element(m4_link(M4RELDIR/api_tcl/env_remove, m4_tcl_env_remove), Remove an environment)
+m4_table_element(m4_link(M4RELDIR/api_tcl/env_close, m4_tcl_env_close), Close an environment)
+m4_table_element(m4_link(M4RELDIR/api_tcl/env_dbremove, m4_tcl_env_dbremove), Remove a database)
+m4_table_element(m4_link(M4RELDIR/api_tcl/env_dbrename, m4_tcl_env_dbrename), Rename a database)
+
+m4_table_element(_empty, _empty)
+m4_table_element(m4_link(M4RELDIR/api_tcl/txn, m4_tcl_txn), Begin a transaction)
+m4_table_element(m4_link(M4RELDIR/api_tcl/txn_checkpoint, m4_tcl_txn_ckp), Checkpoint the environment)
+m4_table_element(m4_link(M4RELDIR/api_tcl/txn_abort, m4_tcl_txn_abort), Abort a transaction)
+m4_table_element(m4_link(M4RELDIR/api_tcl/txn_commit, m4_tcl_txn_commit), Commit a transaction)
+
+m4_table_element(_empty, _empty)
+m4_table_element(m4_link(M4RELDIR/api_tcl/db_open, m4_tcl_db_open), Create a database handle)
+m4_table_element(m4_link(M4RELDIR/api_tcl/db_remove, m4_tcl_db_remove), Remove a database)
+m4_table_element(m4_link(M4RELDIR/api_tcl/db_rename, m4_tcl_db_rename), Rename a database)
+m4_table_element(m4_link(M4RELDIR/api_tcl/db_close, m4_tcl_db_close), Close a database)
+m4_table_element(m4_link(M4RELDIR/api_tcl/db_count, m4_tcl_db_count), Return a count of a key's data items)
+m4_table_element(m4_link(M4RELDIR/api_tcl/db_cursor, m4_tcl_db_cursor), Open a cursor into a database)
+m4_table_element(m4_link(M4RELDIR/api_tcl/db_del, m4_tcl_db_del), Delete items from a database)
+m4_table_element(m4_link(M4RELDIR/api_tcl/db_get, m4_tcl_db_get), Get items from a database)
+m4_table_element(m4_link(M4RELDIR/api_tcl/db_get_join, m4_tcl_db_get_join), Get items from a database join)
+m4_table_element(m4_link(M4RELDIR/api_tcl/db_get_type, m4_tcl_db_get_type), Return the database type)
+m4_table_element(m4_link(M4RELDIR/api_tcl/db_is_byteswapped, m4_tcl_db_is_byteswapped), Return if the underlying database is in host order)
+m4_table_element(m4_link(M4RELDIR/api_tcl/db_join, m4_tcl_db_join), Perform a database join on cursors)
+m4_table_element(m4_link(M4RELDIR/api_tcl/db_put, m4_tcl_db_put), Store items into a database)
+m4_table_element(m4_link(M4RELDIR/api_tcl/db_stat, m4_tcl_db_stat), Return database statistics)
+m4_table_element(m4_link(M4RELDIR/api_tcl/db_sync, m4_tcl_db_sync), Flush a database to stable storage)
+m4_table_element(m4_link(M4RELDIR/api_tcl/db_truncate, m4_tcl_db_truncate), Truncate a database)
+
+m4_table_element(_empty, _empty)
+m4_table_element(m4_link(M4RELDIR/api_tcl/dbc_close, m4_tcl_dbc_close), Close a cursor)
+m4_table_element(m4_link(M4RELDIR/api_tcl/dbc_del, m4_tcl_dbc_del), Delete by cursor)
+m4_table_element(m4_link(M4RELDIR/api_tcl/dbc_dup, m4_tcl_dbc_dup), Duplicate a cursor)
+m4_table_element(m4_link(M4RELDIR/api_tcl/dbc_get, m4_tcl_dbc_get), Retrieve by cursor)
+m4_table_element(m4_link(M4RELDIR/api_tcl/dbc_put, m4_tcl_dbc_put), Store by cursor)
+
+m4_table_element(_empty, _empty)
+m4_table_element(m4_link(M4RELDIR/api_tcl/version, m4_tcl_version), Return version information)
+
+m4_table_end
+
+m4_page_footer
diff --git a/db/docs_src/tcl/db_close.so b/db/docs_src/tcl/db_close.so
new file mode 100644
index 000000000..7840761ff
--- /dev/null
+++ b/db/docs_src/tcl/db_close.so
@@ -0,0 +1,50 @@
+m4_comment([$Id: db_close.so,v 11.15 2002/08/18 21:17:23 bostic Exp $])
+
+define(M4PAGELOCAL, )
+include(tcl/m4.tcl)
+
+m4_tcl_header(db close, m4_tcl_db_close, [dnl
+db close
+ m4_tcl_arg([-nosync])
+])
+
+m4_p([dnl
+The m4_tcl_db_close command flushes any cached database information to
+disk, closes any open cursors, frees any allocated resources, and closes
+any underlying files. Because key/data pairs are cached in memory, failing
+to sync the file with the m4_tcl_db_close or m4_tcl_db_sync command may
+result in inconsistent or lost information.])
+
+m4_p([dnl
+The options are as follows:])
+
+m4_tagbegin
+
+m4_tag(-nosync, [dnl
+Do not flush cached information to disk.
+m4_p([dnl
+The -nosync flag is a dangerous option. It should only be set if the
+application is doing logging (with transactions) so that the database is
+recoverable after a system or application crash, or if the database is
+always generated from scratch after any system or application crash.])
+m4_p([dnl
+It is important to understand that flushing cached information to disk
+only minimizes the window of opportunity for corrupted data. Although
+unlikely, it is possible for database corruption to happen if a system or
+application crash occurs while writing data to the database. To ensure
+that database corruption never occurs, applications must either use
+transactions and logging with automatic recovery, use logging and
+application-specific recovery, or edit a copy of the database; and after
+all applications using the database have successfully called
+m4_tcl_db_close, atomically replace the original database with the
+updated copy.])])
+
+m4_tagend
+
+m4_p([dnl
+After m4_tcl_db_close has been called, regardless of its return, the DB
+handle may not be accessed again.])
+
+m4_tcl_ret_standard(m4_tcl_db_close)
+
+m4_page_footer
diff --git a/db/docs_src/tcl/db_count.so b/db/docs_src/tcl/db_count.so
new file mode 100644
index 000000000..1e771d51b
--- /dev/null
+++ b/db/docs_src/tcl/db_count.so
@@ -0,0 +1,18 @@
+m4_comment([$Id: db_count.so,v 11.4 2002/08/18 21:17:24 bostic Exp $])
+
+define(M4PAGELOCAL,)
+include(tcl/m4.tcl)
+
+m4_tcl_header(db count, m4_tcl_db_count, [dnl
+db count key
+])
+
+m4_p([dnl
+The m4_tcl_db_count command returns a count of the number of duplicate
+data items for the key given. If the key does not exist, a value of 0
+is returned. If there are no duplicates, or if the database does not
+support duplicates, but a key/data pair exists, a value of 1 is
+returned. If an error occurs, a m4_db error message is returned or a
+Tcl error is thrown.])
+
+m4_page_footer
diff --git a/db/docs_src/tcl/db_cursor.so b/db/docs_src/tcl/db_cursor.so
new file mode 100644
index 000000000..2e79d6a3c
--- /dev/null
+++ b/db/docs_src/tcl/db_cursor.so
@@ -0,0 +1,29 @@
+m4_comment([$Id: db_cursor.so,v 11.13 2002/08/18 21:17:25 bostic Exp $])
+
+define(M4PAGELOCAL,)
+include(tcl/m4.tcl)
+
+m4_tcl_header(db cursor, m4_tcl_db_cursor, [dnl
+db cursor
+ m4_tcl_arg([-txn txnid])
+])
+
+m4_p([dnl
+The m4_tcl_db_cursor command creates a database cursor. The returned
+cursor handle is bound to a Tcl command of the form m4_bold(dbN.cX),
+where X is an integer starting at 0 (for example, db0.c0 and db0.c1).
+It is through this Tcl command that the script accesses the cursor
+methods.])
+
+m4_p([dnl
+The options are as follows:])
+
+m4_tagbegin
+
+m4_tcl_txnopt
+
+m4_tagend
+
+m4_tcl_ret_error
+
+m4_page_footer
diff --git a/db/docs_src/tcl/db_del.so b/db/docs_src/tcl/db_del.so
new file mode 100644
index 000000000..a89fd525c
--- /dev/null
+++ b/db/docs_src/tcl/db_del.so
@@ -0,0 +1,37 @@
+m4_comment([$Id: db_del.so,v 11.15 2004/12/16 19:13:04 bostic Exp $])
+
+define(M4PAGELOCAL, )
+include(tcl/m4.tcl)
+
+m4_tcl_header(db del, m4_tcl_db_del, [dnl
+db del
+ m4_tcl_arg([-glob])
+ m4_tcl_arg([-txn txnid])
+ key
+])
+
+m4_p([dnl
+The m4_tcl_db_del command removes key/data pairs from the database.])
+
+m4_p([dnl
+In the presence of duplicate key values, all records associated with the
+designated key will be discarded.])
+
+m4_p([dnl
+The options are as follows:])
+
+m4_tagbegin
+
+m4_tag([-glob], [dnl
+The specified key is a wildcard pattern, and all keys matching that
+pattern are discarded from the database. The pattern is a simple
+wildcard, any characters after the wildcard character are ignored.
+This option only works on databases using the Btree access method.])
+
+m4_tcl_txnopt
+
+m4_tagend
+
+m4_tcl_ret_standard(m4_tcl_db_del)
+
+m4_page_footer
diff --git a/db/docs_src/tcl/db_get.so b/db/docs_src/tcl/db_get.so
new file mode 100644
index 000000000..79c7da9a8
--- /dev/null
+++ b/db/docs_src/tcl/db_get.so
@@ -0,0 +1,105 @@
+m4_comment([$Id: db_get.so,v 11.20 2004/12/16 19:13:04 bostic Exp $])
+
+define(M4PAGELOCAL, )
+include(tcl/m4.tcl)
+
+m4_tcl_header(db get, m4_tcl_db_get, [dnl
+db get
+ m4_tcl_arg([-consume])
+ m4_tcl_arg([-consume_wait])
+ m4_tcl_arg([-glob])
+ m4_tcl_arg([-partial {doff dlen}])
+ m4_tcl_arg([-recno])
+ m4_tcl_arg([-rmw])
+ m4_tcl_arg([-txn txnid])
+ key
+db get
+ -get_both
+ m4_tcl_arg([-partial {doff dlen}])
+ m4_tcl_arg([-rmw])
+ m4_tcl_arg([-txn txnid])
+ key data
+])
+
+m4_p([dnl
+The m4_tcl_db_get command returns key/data pairs from the database.])
+
+m4_p([dnl
+In the presence of duplicate key values, m4_tcl_db_get will return all
+duplicate items. Duplicates are sorted by insert order except where this
+order has been overridden by cursor operations.])
+
+m4_p([dnl
+The options are as follows:])
+
+m4_tagbegin
+
+m4_tag([-consume], [dnl
+Return the record number and data from the available record closest to
+the head of the queue, and delete the record. The cursor will be
+positioned on the deleted record. A record is available if it is not
+deleted and is not currently locked. The underlying database must be
+of type Queue for m4_arg(-consume) to be specified.])
+
+m4_tag([-consume_wait], [dnl
+The same as the m4_arg(-consume) flag except that if the Queue database
+is empty, the thread of control will wait until there is data in the
+queue before returning. The underlying database must be of type Queue
+for m4_arg(-consume_wait) to be specified.])
+
+m4_tag([-get_both key data], [dnl
+Retrieve the key/data pair only if both the key and data match the
+arguments.])
+
+m4_tag([-glob], [dnl
+Return all keys matching the given key, where the key is a simple
+wildcard pattern. Where it is used, it replaces the use of the key with
+the given pattern of a set of keys. Any characters after the wildcard
+character are ignored. For example, in a database of last names, the
+command "db0 get Jones" will return all occurrences of "Jones" in the
+database, and the command "db0 get -glob Jo*" will return both "Jones"
+and "Johnson" from the database. The command "db0 get -glob *" will
+return all of the key/data pairs in the database.
+This option only works on databases using the Btree access method.])
+
+m4_tag([-partial {doff dlen}], [dnl
+The m4_arg(dlen) bytes starting m4_arg(doff) bytes from the beginning
+of the retrieved data record are returned as if they comprised the
+entire record. If any or all of the specified bytes do not exist in the
+record, the command is successful and any existing bytes are returned.])
+
+m4_tag([-recno], [dnl
+Retrieve the specified numbered key/data pair from a database. For
+m4_arg(-recno) to be specified, the specified key must be a record
+number; and the underlying database must be of type Recno or Queue, or
+of type Btree that was created with the m4_arg(-recnum) option.])
+
+m4_tag([-rmw], [dnl
+Acquire write locks instead of read locks when doing the retrieval.
+Setting this flag may decrease the likelihood of deadlock during a
+read-modify-write cycle by immediately acquiring the write lock during
+the read part of the cycle so that another thread of control acquiring a
+read lock for the same item, in its own read-modify-write cycle, will not
+result in deadlock.
+m4_p([dnl
+Because the m4_tcl_db_get command will not hold locks across m4_db
+interface calls in nontransactional environments, the m4_arg(-rmw)
+argument to the m4_tcl_db_get call is only meaningful in the presence
+of transactions.])])
+
+m4_tcl_txnopt
+
+m4_tagend
+
+m4_p([dnl
+If the underlying database is a Queue or Recno database, the given key
+will be interpreted by Tcl as an integer. For all other database types,
+the key is interpreted by Tcl as a byte array, unless indicated by a
+given option.])
+
+m4_p([dnl
+A list of key/data pairs is returned. In the error case that no matching
+key exists, an empty list is returned. In all other cases, a Tcl error
+is thrown.])
+
+m4_page_footer
diff --git a/db/docs_src/tcl/db_get_join.so b/db/docs_src/tcl/db_get_join.so
new file mode 100644
index 000000000..9dc8005af
--- /dev/null
+++ b/db/docs_src/tcl/db_get_join.so
@@ -0,0 +1,31 @@
+m4_comment([$Id: db_get_join.so,v 11.18 2002/08/18 21:17:25 bostic Exp $])
+
+define(M4PAGELOCAL,)
+include(tcl/m4.tcl)
+
+m4_tcl_header(db get_join, m4_tcl_db_get_join, [dnl
+db get_join
+ m4_tcl_arg([-txn txnid])
+ {m4_italic(db) key}
+ {m4_italic(db) key}
+ ...
+])
+
+m4_p([dnl
+The m4_tcl_db_get_join command performs the cursor operations required to
+join the specified keys and returns a list of joined {key data} pairs.
+See m4_link(M4RELDIR/ref/am/join, Equality join) for more information on
+the underlying requirements for joining.])
+
+m4_p([dnl
+The options are as follows:])
+
+m4_tagbegin
+
+m4_tcl_txnopt
+
+m4_tagend
+
+m4_tcl_ret_error
+
+m4_page_footer
diff --git a/db/docs_src/tcl/db_get_type.so b/db/docs_src/tcl/db_get_type.so
new file mode 100644
index 000000000..a27478db2
--- /dev/null
+++ b/db/docs_src/tcl/db_get_type.so
@@ -0,0 +1,16 @@
+m4_comment([$Id: db_get_type.so,v 11.11 2002/08/18 21:17:25 bostic Exp $])
+
+define(M4PAGELOCAL,)
+include(tcl/m4.tcl)
+
+m4_tcl_header(db get_type, m4_tcl_db_get_type, [dnl
+db get_type
+])
+
+m4_p([dnl
+The m4_tcl_db_get_type command returns the underlying database type,
+returning one of "btree", "hash", "queue" or "recno".])
+
+m4_tcl_ret_error
+
+m4_page_footer
diff --git a/db/docs_src/tcl/db_is_byteswapped.so b/db/docs_src/tcl/db_is_byteswapped.so
new file mode 100644
index 000000000..182e8883a
--- /dev/null
+++ b/db/docs_src/tcl/db_is_byteswapped.so
@@ -0,0 +1,20 @@
+m4_comment([$Id: db_is_byteswapped.so,v 11.15 2003/10/13 19:57:26 bostic Exp $])
+
+define(M4PAGELOCAL,)
+include(tcl/m4.tcl)
+
+m4_tcl_header(db is_byteswapped, m4_tcl_db_is_byteswapped, [dnl
+db is_byteswapped
+])
+
+m4_p([dnl
+The m4_tcl_db_is_byteswapped command returns 0 if the underlying
+database files were created on an architecture of the same byte order
+as the current one, and 1 if they were not (that is, big-endian on a
+little-endian machine, or vice versa). This information may be used to
+determine if application data needs to be adjusted for this architecture
+or not.])
+
+m4_tcl_ret_error
+
+m4_page_footer
diff --git a/db/docs_src/tcl/db_join.so b/db/docs_src/tcl/db_join.so
new file mode 100644
index 000000000..19f7adb7a
--- /dev/null
+++ b/db/docs_src/tcl/db_join.so
@@ -0,0 +1,36 @@
+m4_comment([$Id: db_join.so,v 11.22 2002/08/18 21:17:26 bostic Exp $])
+
+define(M4PAGELOCAL,)
+include(tcl/m4.tcl)
+
+m4_tcl_header(db join, m4_tcl_db_join, [dnl
+db join
+ m4_italic(db.cX)
+ m4_italic(db.cY)
+ m4_italic(db.cZ)
+ ...
+])
+
+m4_p([dnl
+The m4_tcl_db_join command joins the specified cursors and returns a
+cursor handle that can be used to iterate through the joined {key data}
+pairs. The returned cursor handle is bound to a Tcl command of the form
+m4_bold(dbN.cX), where X is an integer starting at 0 (for example,
+db0.c0 and db0.c1). It is through this Tcl command that the script
+accesses the cursor methods.])
+
+m4_p([dnl
+The returned join cursor has limited cursor functionality, and only the
+m4_tcl_dbc_get and m4_tcl_dbc_close commands will succeed.])
+
+m4_p([dnl
+See m4_link(M4RELDIR/ref/am/join, Equality join) for more information on
+the underlying requirements for joining.])
+
+m4_p([dnl
+In a transaction-protected environment, all the cursors listed must have
+been created within the same transaction.])
+
+m4_tcl_ret_error
+
+m4_page_footer
diff --git a/db/docs_src/tcl/db_open.so b/db/docs_src/tcl/db_open.so
new file mode 100644
index 000000000..76e5f3d23
--- /dev/null
+++ b/db/docs_src/tcl/db_open.so
@@ -0,0 +1,359 @@
+m4_comment([$Id: db_open.so,v 11.34 2004/12/16 19:13:04 bostic Exp $])
+
+define(M4PAGELOCAL, )
+include(tcl/m4.tcl)
+
+m4_tcl_header(berkdb open, m4_tcl_db_open, [dnl
+berkdb open
+ m4_tcl_arg([-auto_commit])
+ m4_tcl_arg([-btree | -hash | -recno | -queue | -unknown])
+ m4_tcl_arg([-cachesize {gbytes bytes ncache}])
+ m4_tcl_arg([-create])
+ m4_tcl_arg([-delim delim])
+ m4_tcl_arg([-dup])
+ m4_tcl_arg([-dupsort])
+ m4_tcl_arg([-encrypt])
+ m4_tcl_arg([-encryptaes passwd])
+ m4_tcl_arg([-encryptany passwd])
+ m4_tcl_arg([-env env])
+ m4_tcl_arg([-errfile filename])
+ m4_tcl_arg([-excl])
+ m4_tcl_arg([-extent size])
+ m4_tcl_arg([-ffactor density])
+ m4_tcl_arg([-len len])
+ m4_tcl_arg([-mode mode])
+ m4_tcl_arg([-nelem size])
+ m4_tcl_arg([-pad pad])
+ m4_tcl_arg([-pagesize pagesize])
+ m4_tcl_arg([-rdonly])
+ m4_tcl_arg([-recnum])
+ m4_tcl_arg([-renumber])
+ m4_tcl_arg([-snapshot])
+ m4_tcl_arg([-source file])
+ m4_tcl_arg([-truncate])
+ m4_tcl_arg([-txn txnid])
+ m4_tcl_arg([--])
+ m4_tcl_arg([file __LB__database__RB__])
+])
+
+m4_p([dnl
+The m4_tcl_db_open command opens and optionally creates a database.
+The returned database handle is bound to a Tcl command of the form
+m4_bold(dbN), where N is an integer starting at 0 (for example, db0 and
+db1). It is through this Tcl command that the script accesses the
+database methods.])
+
+m4_p([dnl
+The options are as follows:])
+
+m4_tagbegin
+
+m4_tag([-auto_commit], [dnl
+Enclose the call within a transaction. If the call succeeds, the open
+operation will be recoverable and all subsequent database modification
+operations based on this handle will be transactionally protected. If
+the call fails, no database will have been created.])
+
+m4_tag([-btree], [Open/create a database of type Btree. The Btree format
+is a representation of a sorted, balanced tree structure.])
+
+m4_tag([-hash], [Open/create a database of type Hash. The Hash format is
+an extensible, dynamic hashing scheme.])
+
+m4_tag([-queue], [Open/create a database of type Queue. The Queue format
+supports fast access to fixed-length records accessed by sequentially or
+logical record number.])
+
+m4_tag([-recno], [Open/create a database of type Recno. The Recno format
+supports fixed- or variable-length records, accessed sequentially or by
+logical record number, and optionally retrieved from a flat text file.])
+
+m4_tag([-unknown], [dnl
+The database is of an unknown type, and must already exist.])
+
+m4_tag([-cachesize {gbytes bytes ncache}], [dnl
+m4_set_cachesize
+m4_p([dnl
+Because databases opened within m4_db environments use the cache
+specified to the environment, it is an error to attempt to set a cache
+in a database created within an environment.])])
+
+m4_tag([-create], [dnl
+Create any underlying files, as necessary. If the files do not already
+exist and the m4_arg(-create) argument is not specified, the call will
+fail.])
+
+m4_tag([-delim delim], [dnl
+Set the delimiting byte used to mark the end of a record in the backing
+source file for the Recno access method.
+m4_p([dnl
+This byte is used for variable length records if the m4_arg(-source)
+argument file is specified. If the m4_arg(-source) argument file is
+specified and no delimiting byte was specified, m4_htmlquote(newline)
+characters (that is, ASCII 0x0a) are interpreted as end-of-record
+markers.])])
+
+m4_tag([-dup], [dnl
+Permit duplicate data items in the tree, that is, insertion when the
+key of the key/data pair being inserted already exists in the tree will
+be successful. The ordering of duplicates in the tree is determined by
+the order of insertion unless the ordering is otherwise specified by
+use of a cursor or a duplicate comparison function. m4_p([dnl It is an
+error to specify both m4_arg(-dup) and m4_arg(-recnum).])])
+
+m4_tag([-dupsort], [dnl
+Sort duplicates within a set of data items. A default lexical
+comparison will be used. Specifying that duplicates are to be sorted
+changes the behavior of the m4_tcl_db_put operation as well as the
+m4_tcl_dbc_put operation when the m4_arg(-keyfirst), m4_arg(-keylast)
+and m4_arg(-current) options are specified.])
+
+m4_tag([-encrypt], [dnl
+Specify the database in an environment should be encrypted with the
+same password that is being used in the environment.])
+
+m4_tag([-encryptaes passwd], [dnl
+Specify the database should be encrypted with the given password
+using the Rijndael/AES (also known as the Advanced Encryption Standard
+and Federal Information Processing Standard (FIPS) 197) algorithm.])
+
+m4_tag([-encryptany passwd], [dnl
+Specify the already existing database should be opened
+with the given password. This option is used if the database is
+known to be encrypted, but the specific algorithm used is not known.])
+
+m4_tag([-env env], [dnl
+If no m4_arg(-env) argument is given, the database is standalone; that
+is, it is not part of any m4_db environment.
+m4_p([dnl
+If a m4_arg(-env) argument is given, the database is created within the
+specified m4_db environment. The database access methods automatically
+make calls to the other subsystems in m4_db, based on the enclosing
+environment. For example, if the environment has been configured to use
+locking, the access methods will automatically acquire the correct locks
+when reading and writing pages of the database.])])
+
+m4_tag([-errfile filename], [dnl
+m4_tcl_errfile(db)
+m4_p([dnl
+For database handles opened inside of m4_db environments, specifying the
+m4_arg(-errfile) argument affects the entire environment and is equivalent
+to specifying the same argument to the m4_tcl_env_open command.])])
+
+m4_tag([-excl], [dnl
+Return an error if the database already exists.])
+
+m4_tag([-extent size], [dnl
+Set the size of the extents of the Queue database; the size is specified
+as the number of pages in an extent. Each extent is created as a
+separate physical file. If no extent size is set, the default behavior
+is to create only a single underlying database file.])
+
+m4_p([dnl
+For information on tuning the extent size, see
+m4_link(M4RELDIR/ref/am_conf/extentsize, [Selecting a extent size]).])
+
+m4_tag([-ffactor density],
+Set the desired density within the hash table.
+m4_p([dnl
+The density is an approximation of the number of keys allowed to
+accumulate in any one bucket, determining when the hash table grows or
+shrinks. If you know the average sizes of the keys and data in your data
+set, setting the fill factor can enhance performance. A reasonable rule
+computing fill factor is to set it to:])
+
+m4_indent([dnl
+(pagesize - 32) / (average_key_size + average_data_size + 8)])
+
+m4_p([dnl
+If no value is specified, the fill factor will be selected dynamically as
+pages are filled.])])
+
+m4_tag([-len len], [dnl
+For the Queue access method, specify that the records are of length
+m4_arg(len).
+m4_p([dnl
+For the Recno access method, specify that the records are fixed-length,
+not byte-delimited, and are of length m4_arg(len).])
+m4_p([dnl
+Any records added to the database that are less than m4_arg(len) bytes
+long are automatically padded (see the m4_arg(-pad) argument for more
+information).])
+m4_p([dnl
+Any attempt to insert records into the database that are greater than
+m4_arg(len) bytes long will cause the call to fail immediately and return
+an error.])])
+
+m4_tag([-mode mode], [m4_tcl_filemode([the access methods])])
+
+m4_tag([-nelem size], [dnl
+Set an estimate of the final size of the hash table.
+m4_p([dnl
+If not set or set too low, hash tables will still expand gracefully as
+keys are entered, although a slight performance degradation may be
+noticed.])])
+
+m4_tag([-pad pad], [dnl
+Set the padding character for short, fixed-length records for the Queue
+and Recno access methods.
+m4_p([dnl
+If no pad character is specified, __LT__space__GT__ characters (that is,
+ASCII 0x20) are used for padding.])])
+
+m4_tag([-pagesize pagesize], [dnl
+Set the size of the pages used to hold items in the database, in bytes.
+The minimum page size is 512 bytes, and the maximum page size is 64K
+bytes. If the page size is not explicitly set, one is selected based
+on the underlying filesystem I/O block size. The automatically selected
+size has a lower limit of 512 bytes and an upper limit of 16K bytes.
+m4_p([dnl
+For information on tuning the m4_db page size, see
+m4_link(M4RELDIR/ref/am_conf/pagesize, [Selecting a page size]).])])
+
+m4_tag([-rdonly], [dnl
+Open the database for reading only. Any attempt to modify items in the
+database will fail, regardless of the actual permissions of any
+underlying files.])
+
+m4_tag([-recnum], [dnl
+Support retrieval from the Btree using record numbers.
+m4_p([dnl
+Logical record numbers in Btree databases are mutable in the face of
+record insertion or deletion. See the m4_arg(-renumber) argument for
+further discussion.])
+m4_p([dnl
+Maintaining record counts within a Btree introduces a serious point of
+contention, namely the page locations where the record counts are stored. In
+addition, the entire tree must be locked during both insertions and
+deletions, effectively single-threading the tree for those operations.
+Specifying m4_arg(-recnum) can result in serious performance degradation
+for some applications and data sets.])
+m4_p([dnl
+It is an error to specify both m4_arg(-dup) and m4_arg(-recnum).])])
+
+m4_tag([-renumber], [dnl
+Specifying the m4_arg(-renumber) argument causes the logical record
+numbers to be mutable, and change as records are added to and deleted from
+the database. For example, the deletion of record number 4 causes records
+numbered 5 and greater to be renumbered downward by one. If a cursor was
+positioned to record number 4 before the deletion, it will refer to the
+new record number 4, if any such record exists, after the deletion. If a
+cursor was positioned after record number 4 before the deletion, it will
+be shifted downward one logical record, continuing to refer to the same
+record as it did before.
+m4_p([dnl
+Using the m4_tcl_db_put or m4_tcl_dbc_put interfaces to create new records will
+cause the creation of multiple records if the record number is more than one
+greater than the largest record currently in the database. For example,
+creating record 28 when record 25 was previously the last record in the
+database, will create records 26 and 27 as well as 28.])
+m4_p([dnl
+If a created record is not at the end of the database, all records following
+the new record will be automatically renumbered upward by one. For example,
+the creation of a new record numbered 8 causes records numbered 8 and
+greater to be renumbered upward by one. If a cursor was positioned to record
+number 8 or greater before the insertion, it will be shifted upward one
+logical record, continuing to refer to the same record as it did before.])
+m4_p([dnl
+For these reasons, concurrent access to a Recno database with the
+m4_arg(-renumber) flag specified may be largely meaningless, although it
+is supported.])])
+
+m4_tag([-snapshot], [dnl
+This argument specifies that any specified m4_arg(-source) file be read
+in its entirety when the database is opened. If this argument is not
+specified, the m4_arg(-source) file may be read lazily.])
+
+m4_tag([-source file], [dnl
+Set the underlying source file for the Recno access method. The purpose
+of the m4_arg(-source) file is to provide fast access and modification
+to databases that are normally stored as flat text files.
+m4_p([dnl
+If the m4_arg(-source) argument is give, it specifies an underlying flat
+text database file that is read to initialize a transient record number
+index. In the case of variable length records, the records are separated
+as specified by m4_arg(-delim). For example, standard UNIX byte stream
+files can be interpreted as a sequence of variable length records
+separated by m4_htmlquote(newline) characters.])
+m4_p([dnl
+In addition, when cached data would normally be written back to the
+underlying database file (for example, when the m4_tcl_db_close or
+m4_tcl_db_sync commands are called), the in-memory copy of the database
+will be written back to the m4_arg(-source) file.])
+m4_p([dnl
+By default, the backing source file is read lazily, that is, records
+are not read from the file until they are requested by the application.
+m4_bold([dnl
+If multiple processes (not threads) are accessing a Recno database
+concurrently and either inserting or deleting records, the backing source
+file must be read in its entirety before more than a single process
+accesses the database, and only that process should specify the backing
+source argument as part of the m4_tcl_db_open call. See the m4_arg(-snapshot)
+argument for more information.])])
+m4_p([m4_bold([dnl
+Reading and writing the backing source file specified by m4_arg(-source)
+cannot be transaction protected because it involves filesystem
+operations that are not part of the m4_db transaction methodology.])
+For this reason, if a temporary database is used to hold the records,
+it is possible to lose the contents of the m4_arg(-file) file, for
+example, if the system crashes at the right instant. If a file is used
+to hold the database, that is, a filename was specified as the
+m4_arg(file) argument to m4_tcl_db_open, normal database recovery on
+that file can be used to prevent information loss, although it is still
+possible that the contents of m4_arg(-source) will be lost if the system
+crashes.])
+m4_p([dnl
+The m4_arg(-source) file must already exist (but may be zero-length) when
+m4_tcl_db_open is called.])
+m4_p([dnl
+It is not an error to specify a read-only m4_arg(-source) file when
+creating a database, nor is it an error to modify the resulting database.
+However, any attempt to write the changes to the backing source file using
+either the m4_tcl_db_close or m4_tcl_db_sync commands will fail, of course.
+Specify the m4_arg(-nosync) argument to the m4_tcl_db_close command will
+stop it from attempting to write the changes to the backing file; instead,
+they will be silently discarded.])
+m4_p([dnl
+For all of the previous reasons, the m4_arg(-source) file is generally
+used to specify databases that are read-only for m4_db applications,
+and that are either generated on the fly by software tools, or modified
+using a different mechanism such as a text editor.])])
+
+m4_tag([-truncate], [dnl
+Physically truncate the underlying file, discarding all previous databases
+it might have held. Underlying filesystem primitives are used to
+implement this flag. For this reason, it is only applicable to the
+physical file and cannot be used to discard databases within a file.
+m4_p([dnl
+The m4_arg(-truncate) argument cannot be transaction-protected, and it is
+an error to specify it in a transaction-protected environment.])])
+
+m4_tcl_txnopt(auto)
+
+m4_tag([--], [Mark the end of the command arguments.])
+
+m4_tag([file], [dnl
+The name of a single physical file on disk that will be used to back the
+database.])
+
+m4_tag([database], [dnl
+The m4_arg(database) argument allows applications to have multiple
+databases inside of a single physical file. This is useful when the
+databases are both numerous and reasonably small, in order to avoid
+creating a large number of underlying files. It is an error to attempt
+to open a second database file that was not initially created using a
+m4_arg(database) name.
+m4_p([dnl
+Applications opening multiple databases in a single file will almost
+certainly need to create a shared database environment. See
+m4_link(M4RELDIR/ref/am/opensub, [Opening multiple databases in a single
+file]) for more information.])])
+
+m4_tagend
+
+m4_p([dnl
+The m4_tcl_db_open command returns a database handle on success.])
+
+m4_tcl_ret_error
+
+m4_page_footer
diff --git a/db/docs_src/tcl/db_put.so b/db/docs_src/tcl/db_put.so
new file mode 100644
index 000000000..1961bd25c
--- /dev/null
+++ b/db/docs_src/tcl/db_put.so
@@ -0,0 +1,55 @@
+m4_comment([$Id: db_put.so,v 11.14 2004/12/16 19:13:05 bostic Exp $])
+
+define(M4PAGELOCAL,)
+include(tcl/m4.tcl)
+
+m4_tcl_header(db put, m4_tcl_db_put, [dnl
+db put
+ -append
+ m4_tcl_arg([-partial {doff dlen}])
+ m4_tcl_arg([-txn txnid])
+ data
+db put
+ m4_tcl_arg([-nooverwrite])
+ m4_tcl_arg([-partial {doff dlen}])
+ m4_tcl_arg([-txn txnid])
+ key data
+])
+
+m4_p([dnl
+The m4_tcl_db_put command stores the specified key/data pair into the
+database.])
+
+m4_p([dnl
+The options are as follows:])
+
+m4_tagbegin
+
+m4_tag([-append], [dnl
+Append the data item to the end of the database. For the m4_arg(-append)
+option to be specified, the underlying database must be a Queue or Recno
+database. The record number allocated to the record is returned on
+success.])
+
+m4_tag([-nooverwrite], [dnl
+Enter the new key/data pair only if the key does not already appear in
+the database.])
+
+m4_tag([-partial {doff dlen}], [m4_tcl_partial_put(m4_tcl_db_put)])
+
+m4_tcl_txnopt
+
+m4_tagend
+
+m4_p([dnl
+The m4_tcl_db_put command returns either 0 or a record number for success
+(the record number is returned if the m4_arg(-append) option was specified).
+If an error occurs, a m4_db error message is returned or a Tcl error is
+thrown.])
+
+m4_p([dnl
+If the underlying database is a Queue or Recno database, then the given
+key will be interpreted by Tcl as an integer. For all other database
+types, the key is interpreted by Tcl as a byte array.])
+
+m4_page_footer
diff --git a/db/docs_src/tcl/db_remove.so b/db/docs_src/tcl/db_remove.so
new file mode 100644
index 000000000..ef7a3ff06
--- /dev/null
+++ b/db/docs_src/tcl/db_remove.so
@@ -0,0 +1,56 @@
+m4_comment([$Id: db_remove.so,v 11.12 2002/09/26 17:34:02 bostic Exp $])
+
+define(M4PAGELOCAL,)
+include(tcl/m4.tcl)
+
+m4_tcl_header(berkdb dbremove, m4_tcl_db_remove, [dnl
+berkdb dbremove
+ m4_tcl_arg([-encrypt])
+ m4_tcl_arg([-encryptaes passwd])
+ m4_tcl_arg([-encryptany passwd])
+ m4_tcl_arg([-env env])
+ m4_tcl_arg([--])
+ file
+ m4_tcl_arg([database])
+])
+
+m4_p([dnl
+Remove the m4_db database specified by the database name m4_arg(file) and
+m4_tcl_arg(database) name arguments. If no m4_arg(database) is specified,
+the physical file represented by m4_arg(file) is removed, incidentally
+removing all databases that it contained.])
+
+m4_p([dnl
+No reference count of database use is maintained by m4_db. Applications
+should not remove databases that are currently in use.])
+
+m4_p([dnl
+The options are as follows:])
+
+m4_tagbegin
+
+m4_tag([-encrypt], [dnl
+Specify the database in an environment is encrypted with the
+same password that is being used in the environment.])
+
+m4_tag([-encryptaes passwd], [dnl
+Specify the database is encrypted with the given password
+using the Rijndael/AES (also known as the Advanced Encryption Standard
+and Federal Information Processing Standard (FIPS) 197) algorithm.])
+
+m4_tag([-encryptany passwd], [dnl
+Specify the already existing database is encrypted
+with the given password. This option is used if the database is
+known to be encrypted, but the specific algorithm used is not known.])
+
+m4_tag([-env env],
+[If a m4_arg(-env) argument is given, the database in the specified m4_db
+environment is removed.])
+
+m4_tag([--], [Mark the end of the command arguments.])
+
+m4_tagend
+
+m4_tcl_ret_standard(m4_tcl_db_remove)
+
+m4_page_footer
diff --git a/db/docs_src/tcl/db_rename.so b/db/docs_src/tcl/db_rename.so
new file mode 100644
index 000000000..0eea322fb
--- /dev/null
+++ b/db/docs_src/tcl/db_rename.so
@@ -0,0 +1,57 @@
+m4_comment([$Id: db_rename.so,v 11.7 2002/09/26 17:34:02 bostic Exp $])
+
+define(M4PAGELOCAL,)
+include(tcl/m4.tcl)
+
+m4_tcl_header(berkdb dbrename, m4_tcl_db_rename, [dnl
+berkdb rename
+ m4_tcl_arg([-encrypt])
+ m4_tcl_arg([-encryptaes passwd])
+ m4_tcl_arg([-encryptany passwd])
+ m4_tcl_arg([-env env])
+ m4_tcl_arg([--])
+ file
+ m4_tcl_arg([database]
+ newname)
+])
+
+m4_p([dnl
+Renames the m4_db database specified by the database name m4_arg(file) and
+m4_tcl_arg(database) name arguments to the new name given.
+If no m4_arg(database) is specified,
+the physical file represented by m4_arg(file) is renamed.])
+
+m4_p([dnl
+No reference count of database use is maintained by m4_db. Applications
+should not rename databases that are currently in use.])
+
+m4_p([dnl
+The options are as follows:])
+
+m4_tagbegin
+
+m4_tag([-encrypt], [dnl
+Specify the database in an environment is encrypted with the
+same password that is being used in the environment.])
+
+m4_tag([-encryptaes passwd], [dnl
+Specify the database is encrypted with the given password
+using the Rijndael/AES (also known as the Advanced Encryption Standard
+and Federal Information Processing Standard (FIPS) 197) algorithm.])
+
+m4_tag([-encryptany passwd], [dnl
+Specify the already existing database is encrypted
+with the given password. This option is used if the database is
+known to be encrypted, but the specific algorithm used is not known.])
+
+m4_tag([-env env], [dnl
+If a m4_arg(-env) argument is given, the database in the specified m4_db
+environment is renamed.])
+
+m4_tag([--], [Mark the end of the command arguments.])
+
+m4_tagend
+
+m4_tcl_ret_standard(m4_tcl_db_rename)
+
+m4_page_footer
diff --git a/db/docs_src/tcl/db_stat.so b/db/docs_src/tcl/db_stat.so
new file mode 100644
index 000000000..e73368de8
--- /dev/null
+++ b/db/docs_src/tcl/db_stat.so
@@ -0,0 +1,28 @@
+m4_comment([$Id: db_stat.so,v 11.12 2002/08/18 21:17:27 bostic Exp $])
+
+define(M4PAGELOCAL,)
+include(tcl/m4.tcl)
+
+m4_tcl_header(db stat, m4_tcl_db_stat, [dnl
+db stat
+ m4_tcl_arg([-faststat])
+])
+
+m4_p([dnl
+The m4_tcl_db_stat command returns a list of name/value pairs comprising
+the statistics of the database.])
+
+m4_p([dnl
+The options are as follows:])
+
+m4_tagbegin
+
+m4_tag([-faststat], [dnl
+Return only that information which does not require a traversal
+of the database.])
+
+m4_tagend
+
+m4_tcl_ret_error
+
+m4_page_footer
diff --git a/db/docs_src/tcl/db_sync.so b/db/docs_src/tcl/db_sync.so
new file mode 100644
index 000000000..1669a1382
--- /dev/null
+++ b/db/docs_src/tcl/db_sync.so
@@ -0,0 +1,19 @@
+m4_comment([$Id: db_sync.so,v 11.12 2004/12/02 18:21:08 bostic Exp $])
+
+define(M4PAGELOCAL,)
+include(tcl/m4.tcl)
+
+m4_tcl_header(db sync, m4_tcl_db_sync, [dnl
+db sync
+])
+
+m4_p([dnl
+The m4_tcl_db_sync command function flushes any database cached
+information to disk.])
+
+m4_p([dnl
+See m4_tcl_db_close for a discussion of m4_db and cached data.])
+
+m4_tcl_ret_standard(m4_tcl_db_sync)
+
+m4_page_footer
diff --git a/db/docs_src/tcl/db_truncate.so b/db/docs_src/tcl/db_truncate.so
new file mode 100644
index 000000000..4dc7d72d8
--- /dev/null
+++ b/db/docs_src/tcl/db_truncate.so
@@ -0,0 +1,29 @@
+m4_comment([$Id: db_truncate.so,v 11.6 2004/12/16 19:13:05 bostic Exp $])
+
+define(M4PAGELOCAL,)
+include(tcl/m4.tcl)
+
+m4_tcl_header(db truncate, m4_tcl_db_truncate, [dnl
+db truncate
+ m4_tcl_arg([-txn txnid])
+])
+
+m4_p([dnl
+Empties the database, discarding all records it contains.])
+
+m4_p([dnl
+The options are as follows:])
+
+m4_tagbegin
+
+m4_tcl_txnopt
+
+m4_tagend
+
+m4_p([dnl
+The m4_tcl_db_truncate command returns the number of records discarded
+from the database on success.])
+
+m4_tcl_ret_error(m4_tcl_db_truncate)
+
+m4_page_footer
diff --git a/db/docs_src/tcl/dbc_close.so b/db/docs_src/tcl/dbc_close.so
new file mode 100644
index 000000000..8e7440cda
--- /dev/null
+++ b/db/docs_src/tcl/dbc_close.so
@@ -0,0 +1,19 @@
+m4_comment([$Id: dbc_close.so,v 11.14 2004/12/02 18:21:08 bostic Exp $])
+
+define(M4PAGELOCAL,)
+include(tcl/m4.tcl)
+
+m4_tcl_header(db close, m4_tcl_dbc_close, [dnl
+dbc close
+])
+
+m4_p([dnl
+The m4_tcl_dbc_close command discards the cursor.])
+
+m4_p([dnl
+After m4_tcl_dbc_close has been called, regardless of its return, the
+cursor handle may not be used again.])
+
+m4_tcl_ret_standard(m4_tcl_dbc_close)
+
+m4_page_footer
diff --git a/db/docs_src/tcl/dbc_del.so b/db/docs_src/tcl/dbc_del.so
new file mode 100644
index 000000000..6075f6aeb
--- /dev/null
+++ b/db/docs_src/tcl/dbc_del.so
@@ -0,0 +1,21 @@
+m4_comment([$Id: dbc_del.so,v 11.13 2002/08/18 21:17:28 bostic Exp $])
+
+define(M4PAGELOCAL,)
+include(tcl/m4.tcl)
+
+m4_tcl_header(db del, m4_tcl_dbc_del, [dnl
+dbc del
+])
+
+m4_p([dnl
+The m4_tcl_dbc_del command deletes the key/data pair to which the cursor
+currently refers.])
+
+m4_p([dnl
+The cursor position is unchanged after a delete, and subsequent calls to
+cursor commands expecting the cursor to refer to an existing key will
+fail.])
+
+m4_tcl_ret_standard(m4_tcl_dbc_del)
+
+m4_page_footer
diff --git a/db/docs_src/tcl/dbc_dup.so b/db/docs_src/tcl/dbc_dup.so
new file mode 100644
index 000000000..c4ad1931a
--- /dev/null
+++ b/db/docs_src/tcl/dbc_dup.so
@@ -0,0 +1,33 @@
+m4_comment([$Id: dbc_dup.so,v 11.8 2002/08/18 21:17:28 bostic Exp $])
+
+define(M4PAGELOCAL,)
+include(tcl/m4.tcl)
+
+m4_tcl_header(db dup, m4_tcl_dbc_dup, [dnl
+dbc dup
+ m4_tcl_arg([-position])
+])
+
+m4_p([dnl
+The m4_tcl_dbc_dup command duplicates the cursor, creates a new cursor
+that uses the same transaction and locker ID as the original cursor. This
+is useful when an application is using locking and requires two or more
+cursors in the same thread of control.])
+
+m4_p([dnl
+The options are as follows:])
+
+m4_tagbegin
+
+m4_tag([-position], [dnl
+The newly created cursor is initialized to refer to the same position
+in the database as the original cursor and hold the same locks. If the
+m4_arg(-position) flag is not specified, the created cursor is
+uninitialized and will behave like a cursor newly created using the
+m4_tcl_db_cursor command.])
+
+m4_tagend
+
+m4_tcl_ret_standard(m4_tcl_dbc_dup)
+
+m4_page_footer
diff --git a/db/docs_src/tcl/dbc_get.so b/db/docs_src/tcl/dbc_get.so
new file mode 100644
index 000000000..47990ae9a
--- /dev/null
+++ b/db/docs_src/tcl/dbc_get.so
@@ -0,0 +1,212 @@
+m4_comment([$Id: dbc_get.so,v 11.22 2004/12/02 18:21:08 bostic Exp $])
+
+define(M4PAGELOCAL,)
+include(tcl/m4.tcl)
+
+m4_tcl_header(db get, m4_tcl_dbc_get, [dnl
+dbc get
+ m4_tcl_arg([-current])
+ m4_tcl_arg([-first])
+ m4_tcl_arg([-get_recno])
+ m4_tcl_arg([-join_item])
+ m4_tcl_arg([-last])
+ m4_tcl_arg([-next])
+ m4_tcl_arg([-nextdup])
+ m4_tcl_arg([-nextnodup])
+ m4_tcl_arg([-partial {offset length}])
+ m4_tcl_arg([-prev])
+ m4_tcl_arg([-prevnodup])
+ m4_tcl_arg([-rmw])
+
+dbc get
+ m4_tcl_arg([-partial {offset length}])
+ m4_tcl_arg([-rmw])
+ m4_tcl_arg([-set])
+ m4_tcl_arg([-set_range])
+ m4_tcl_arg([-set_recno])
+ key
+dbc get
+ -get_both
+ m4_tcl_arg([-partial {offset length}])
+ m4_tcl_arg([-rmw])
+ key data
+])
+
+m4_p([dnl
+The m4_tcl_dbc_get command returns a list of {key value} pairs, except in
+the case of the m4_arg(-get_recno) and m4_arg(-join_item) options. In
+the case of the m4_arg(-get_recno) option, m4_tcl_dbc_get returns a list
+of the record number. In the case of the m4_arg(-join_item) option,
+m4_tcl_dbc_get returns a list containing the joined key.])
+
+m4_p([dnl
+The options are as follows:])
+
+m4_tagbegin
+
+m4_tag([-current], [dnl
+Return the key/data pair to which the cursor currently refers.
+m4_p([dnl
+If the cursor key/data pair was deleted, m4_tcl_dbc_get will return an
+empty list.])])
+
+m4_tag([-first], [dnl
+The cursor is set to refer to the first key/data pair of the database, and
+that pair is returned. In the presence of duplicate key values, the first
+data item in the set of duplicates is returned.
+m4_p([dnl
+If the database is a Queue or Recno database, m4_tcl_dbc_get using the
+m4_arg(-first) option will skip any keys that exist but were never
+explicitly created by the application, or were created and later deleted.])
+m4_p([dnl
+If the database is empty, m4_tcl_dbc_get will return an empty list.])])
+
+m4_tag([-last], [dnl
+The cursor is set to refer to the last key/data pair of the database, and
+that pair is returned. In the presence of duplicate key values, the last
+data item in the set of duplicates is returned.
+m4_p([dnl
+If the database is a Queue or Recno database, m4_tcl_dbc_get using the
+m4_arg(-last) option will skip any keys that exist but were never
+explicitly created by the application, or were created and later deleted.])
+m4_p([dnl
+If the database is empty, m4_tcl_dbc_get will return an empty list.])])
+
+m4_tag([-next], [dnl
+If the cursor is not yet initialized, the m4_arg(-next) option is
+identical to m4_arg(-first).
+m4_p([dnl
+Otherwise, the cursor is moved to the next key/data pair of the database,
+and that pair is returned. In the presence of duplicate key values, the
+value of the key may not change.])
+m4_p([dnl
+If the database is a Queue or Recno database, m4_tcl_dbc_get using the
+m4_arg(-next) option will skip any keys that exist but were never
+explicitly created by the application, or were created and later deleted.])
+m4_p([dnl
+If the cursor is already on the last record in the database, m4_tcl_dbc_get
+will return an empty list.])])
+
+m4_tag([-nextdup], [dnl
+If the next key/data pair of the database is a duplicate record for the
+current key/data pair, the cursor is moved to the next key/data pair of the
+database, and that pair is returned. Otherwise, m4_tcl_dbc_get will return
+an empty list.])
+
+m4_tag([-nextnodup], [dnl
+If the cursor is not yet initialized, the m4_arg(-nextnodup) option is
+identical to m4_arg(-first).
+m4_p([dnl
+Otherwise, the cursor is moved to the next non-duplicate
+key/data pair of the database, and that pair is returned.])
+m4_p([dnl
+If no non-duplicate key/data pairs occur after the cursor
+position in the database, m4_tcl_dbc_get will return an empty list.])])
+
+m4_tag([-prev], [dnl
+If the cursor is not yet initialized, m4_arg(-prev) is identical to
+m4_arg(-last).
+m4_p([dnl
+Otherwise, the cursor is moved to the previous key/data pair of the
+database, and that pair is returned. In the presence of duplicate key
+values, the value of the key may not change.])
+m4_p([dnl
+If the database is a Queue or Recno database, m4_tcl_dbc_get using the
+m4_arg(-prev) flag will skip any keys that exist but were never explicitly
+created by the application, or were created and later deleted.])
+m4_p([dnl
+If the cursor is already on the first record in the database,
+m4_tcl_dbc_get will return an empty list.])])
+
+m4_tag([-prevnodup], [dnl
+If the cursor is not yet initialized, the m4_arg(-prevnodup) option is
+identical to m4_arg(-last).
+m4_p([dnl
+Otherwise, the cursor is moved to the previous non-duplicate
+key/data pair of the database, and that pair is returned.])
+m4_p([dnl
+If no non-duplicate key/data pairs occur before the cursor
+position in the database, m4_tcl_dbc_get will return an empty list.])])
+
+m4_tag([-set], [dnl
+Move the cursor to the specified key/data pair of the database, and return
+the datum associated with the given key.
+m4_p([dnl
+In the presence of duplicate key values, m4_tcl_dbc_get will return the
+first data item for the given key.])
+m4_p([dnl
+If the database is a Queue or Recno database and the requested key exists,
+but was never explicitly created by the application or was later deleted,
+m4_tcl_dbc_get will return an empty list.])
+m4_p([dnl
+If no matching keys are found, m4_tcl_dbc_get will return an empty list.])])
+
+m4_tag([-set_range], [dnl
+The m4_arg(-set_range) option is identical to the m4_arg(-set) option,
+except that the key is returned as well as the data item, and, in the case
+of the Btree access method, the returned key/data pair is the smallest
+key greater than or equal to the specified key (as determined by the
+comparison function), permitting partial key matches and range searches.])
+
+m4_tag([-get_both], [dnl
+The m4_arg(-get_both) option is identical to the m4_arg(-set) option,
+except that both the key and the data arguments must be matched by the
+key and data item in the database.
+m4_p([dnl
+For m4_arg(-get_both) to be specified, the underlying database must be of
+type Btree or Hash.])])
+
+m4_tag([-set_recno], [dnl
+Move the cursor to the specific numbered record of the database, and
+return the associated key/data pair. The key
+must be a record number.
+m4_p([dnl
+For the m4_arg(-set_recno) option to be specified, the underlying database
+must be of type Btree, and it must have been created with the m4_arg(-recnum)
+option.])])
+
+m4_tag([-get_recno], [dnl
+Return a list of the record number associated with the current cursor
+position. No key argument should be specified.
+m4_p([dnl
+For m4_arg(-get_recno) to be specified, the underlying database must be
+of type Btree, and it must have been created with the m4_arg(-recnum)
+option.])])
+
+m4_tag([-join_item], [dnl
+Do not use the data value found in all the cursors as a lookup key for
+the primary database, but simply return it in the key parameter instead.
+The data parameter is left unchanged.
+m4_p([dnl
+For m4_arg(-join_item) to be specified, the cursor must have been created
+by the m4_tcl_db_join command.])])
+
+m4_tag([-partial {offset length}], [dnl
+The m4_arg(dlen) bytes starting m4_arg(doff) bytes from the beginning
+of the retrieved data record are returned as if they comprised the
+entire record. If any or all of the specified bytes do not exist in
+the record, the command is successful and any existing bytes are
+returned.])
+
+m4_tag([-rmw], [dnl
+Acquire write locks instead of read locks when doing the retrieval. Setting
+this flag may decrease the likelihood of deadlock during a read-modify-write
+cycle by immediately acquiring the write lock during the read part of the
+cycle so that another thread of control acquiring a read lock for the same
+item, in its own read-modify-write cycle, will not result in deadlock.])
+
+m4_tagend
+
+m4_p([dnl
+If a key is specified, and if the underlying database is a Queue or
+Recno database, the given key will be interpreted by Tcl as an integer.
+For all other database types, the key is interpreted by Tcl as a byte
+array, unless indicated by a given option.])
+
+m4_p([dnl
+In the normal error case of attempting to retrieve a key that does not
+exist an empty list is returned.])
+
+m4_tcl_ret_error
+
+m4_page_footer
diff --git a/db/docs_src/tcl/dbc_put.so b/db/docs_src/tcl/dbc_put.so
new file mode 100644
index 000000000..2e0d9079c
--- /dev/null
+++ b/db/docs_src/tcl/dbc_put.so
@@ -0,0 +1,130 @@
+m4_comment([$Id: dbc_put.so,v 11.18 2004/12/02 18:21:08 bostic Exp $])
+
+define(M4PAGELOCAL,)
+include(tcl/m4.tcl)
+
+m4_tcl_header(dbc put, m4_tcl_dbc_put, [dnl
+dbc put
+ m4_tcl_arg([-after])
+ m4_tcl_arg([-before])
+ m4_tcl_arg([-current])
+ m4_tcl_arg([-partial {doff dlen}])
+ data
+dbc put
+ m4_tcl_arg([-keyfirst])
+ m4_tcl_arg([-keylast])
+ m4_tcl_arg([-partial {doff dlen}])
+ key data
+])
+
+m4_p([dnl
+The m4_tcl_dbc_put command stores the specified key/data pair into the
+database. One of the following options must be specified:])
+
+m4_tagbegin
+
+m4_tag([-after], [dnl
+In the case of the Btree and Hash access methods, insert the data element
+as a duplicate element of the key to which the cursor refers. The new
+element appears immediately after the current cursor position. It is an
+error to specify m4_arg(-after) if the underlying Btree or Hash database
+was not created with the m4_arg(-dup) option. No key argument should be
+specified.
+m4_p([dnl
+In the case of the Recno access method, it is an error to specify the
+m4_arg(-after) option if the underlying Recno database was not created
+with the m4_arg(-renumber) option. If the m4_arg(-renumber) option was
+specified, a new key is created, all records after the inserted item
+are automatically renumbered, and the key of the new record is returned
+in the structure to which the key argument refers. The initial value of
+the key parameter is ignored. See m4_tcl_db_open for more information.])
+m4_p([dnl
+In the case of the Queue access method, it is always an error to specify
+m4_arg(-after).])
+m4_p([dnl
+If the current cursor record has already been deleted, and the underlying
+access method is Hash, m4_tcl_dbc_put will throw a Tcl error. If the
+underlying access method is Btree or Recno, the operation will succeed.])])
+
+m4_tag([-before], [dnl
+In the case of the Btree and Hash access methods, insert the data element
+as a duplicate element of the key to which the cursor refers. The new
+element appears immediately before the current cursor position. It is an
+error to specify m4_arg(-before) if the underlying Btree or Hash database
+was not created with the m4_arg(-dup) option. No key argument should be
+specified.
+m4_p([dnl
+In the case of the Recno access method, it is an error to specify
+m4_arg(-before) if the underlying Recno database was not created with the
+m4_arg(-before) option. If the m4_arg(-before) option was specified, a
+new key is created, the current record and all records after it are
+automatically renumbered, and the key of the new record is returned in
+the structure to which the key argument refers. The initial value of the
+key parameter is ignored. See m4_tcl_db_open for more information.])
+m4_p([dnl
+In the case of the Queue access method, it is always an error to specify
+m4_arg(-before).])
+m4_p([dnl
+If the current cursor record has already been deleted and the underlying
+access method is Hash, m4_tcl_dbc_put will throw a Tcl error. If the
+underlying access method is Btree or Recno, the operation will succeed.])])
+
+m4_tag([-current], [dnl
+Overwrite the data of the key/data pair to which the cursor refers with
+the specified data item. No key argument should be specified.
+m4_p([dnl
+If the m4_arg(-dupsort) option was specified to m4_tcl_db_open and the
+data item of the key/data pair to which the cursor refers does not
+compare equally to the data parameter, m4_tcl_dbc_put will throw a Tcl
+error.])
+m4_p([dnl
+If the current cursor record has already been deleted and the underlying
+access method is Hash, m4_tcl_dbc_put will throw a Tcl error. If the
+underlying access method is Btree, Queue, or Recno, the operation will
+succeed.])])
+
+m4_tag([-keyfirst], [dnl
+In the case of the Btree and Hash access methods, insert the specified
+key/data pair into the database.
+m4_p([dnl
+If the key already exists in the database, and the m4_arg(-dupsort) option
+was specified to m4_tcl_db_open, the inserted data item is added in its
+sorted location. If the key already exists in the database, and the
+m4_arg(-dupsort) option was not specified, the inserted data item is added
+as the first of the data items for that key.])
+m4_p([dnl
+The m4_arg(-keyfirst) option may not be specified to the Queue or Recno
+access methods.])])
+
+m4_tag([-keylast], [dnl
+In the case of the Btree and Hash access methods, insert the specified
+key/data pair into the database.
+m4_p([dnl
+If the key already exists in the database, and the m4_arg(-dupsort) option
+was specified to m4_tcl_db_open, the inserted data item is added in its
+sorted location. If the key already exists in the database, and the
+m4_arg(-dupsort) option was not specified, the inserted data item is added
+as the last of the data items for that key.])
+m4_p([dnl
+The m4_arg(-keylast) option may not be specified to the Queue or Recno
+access methods.])])
+
+m4_tag([-partial {doff dlen}], [m4_tcl_partial_put(m4_tcl_dbc_put)])
+
+m4_tagend
+
+m4_p([dnl
+If a key is specified, and
+if the underlying database is a Queue or Recno database, the given key
+will be interpreted by Tcl as an integer. For all other database types,
+the key is interpreted by Tcl as a byte array.])
+
+m4_p([dnl
+If m4_tcl_dbc_put fails for any reason, the state of the cursor will be
+unchanged. If m4_tcl_dbc_put succeeds and an item is inserted into the
+database, the cursor is always positioned to refer to the newly inserted
+item.])
+
+m4_tcl_ret_standard(m4_tcl_dbc_put)
+
+m4_page_footer
diff --git a/db/docs_src/tcl/env_close.so b/db/docs_src/tcl/env_close.so
new file mode 100644
index 000000000..18a9ae0d7
--- /dev/null
+++ b/db/docs_src/tcl/env_close.so
@@ -0,0 +1,29 @@
+m4_comment([$Id: env_close.so,v 11.14 2002/08/18 21:17:29 bostic Exp $])
+
+define(M4PAGELOCAL,)
+include(tcl/m4.tcl)
+
+m4_tcl_header(env close, m4_tcl_env_close, [dnl
+env close
+])
+
+m4_p([dnl
+Close the m4_db environment, freeing any allocated resources and closing
+any underlying subsystems.])
+
+m4_p([dnl
+This does not imply closing any databases that were opened in the
+environment.])
+
+m4_p([dnl
+Where the environment was initialized with the m4_arg(-txn) option,
+calling m4_tcl_env_close does not release any locks still held by the
+closing process, providing functionality for long-lived locks.])
+
+m4_p([dnl
+After m4_tcl_env_close has been called the m4_arg(env) handle may not be
+accessed again.])
+
+m4_tcl_ret_standard(m4_tcl_env_close)
+
+m4_page_footer
diff --git a/db/docs_src/tcl/env_dbremove.so b/db/docs_src/tcl/env_dbremove.so
new file mode 100644
index 000000000..49d883090
--- /dev/null
+++ b/db/docs_src/tcl/env_dbremove.so
@@ -0,0 +1,33 @@
+m4_comment([$Id: env_dbremove.so,v 11.4 2004/12/16 19:13:05 bostic Exp $])
+
+define(M4PAGELOCAL,)
+include(tcl/m4.tcl)
+
+m4_tcl_header(env dbremove, m4_tcl_env_dbremove, [dnl
+env dbremove
+ m4_tcl_arg([-auto_commit])
+ m4_tcl_arg([-txn txnid])
+ m4_tcl_arg([--])
+ file
+])
+
+m4_p([dnl
+Remove the m4_db database m4_arg(file).])
+
+m4_p([dnl
+The options are as follows:])
+
+m4_tagbegin
+
+m4_tag([-auto_commit], [dnl
+Enclose the call within a transaction. If the call succeeds, changes
+made by the operation will be recoverable. If the call fails, the
+operation will have made no changes.])
+
+m4_tcl_txnopt(auto)
+
+m4_tagend
+
+m4_tcl_ret_standard(m4_tcl_env_dbremove)
+
+m4_page_footer
diff --git a/db/docs_src/tcl/env_dbrename.so b/db/docs_src/tcl/env_dbrename.so
new file mode 100644
index 000000000..31eb7108a
--- /dev/null
+++ b/db/docs_src/tcl/env_dbrename.so
@@ -0,0 +1,34 @@
+m4_comment([$Id: env_dbrename.so,v 11.4 2004/12/16 19:13:05 bostic Exp $])
+
+define(M4PAGELOCAL,)
+include(tcl/m4.tcl)
+
+m4_tcl_header(env dbrename, m4_tcl_env_dbrename, [dnl
+env dbrename
+ m4_tcl_arg([-auto_commit])
+ m4_tcl_arg([-txn txnid])
+ m4_tcl_arg([--])
+ file
+ newname
+])
+
+m4_p([dnl
+Rename the m4_db database m4_arg(file) to m4_arg(newname).])
+
+m4_p([dnl
+The options are as follows:])
+
+m4_tagbegin
+
+m4_tag([-auto_commit], [dnl
+Enclose the call within a transaction. If the call succeeds, changes
+made by the operation will be recoverable. If the call fails, the
+operation will have made no changes.])
+
+m4_tcl_txnopt(auto)
+
+m4_tagend
+
+m4_tcl_ret_standard(m4_tcl_env_dbrename)
+
+m4_page_footer
diff --git a/db/docs_src/tcl/env_open.so b/db/docs_src/tcl/env_open.so
new file mode 100644
index 000000000..cf87b4738
--- /dev/null
+++ b/db/docs_src/tcl/env_open.so
@@ -0,0 +1,147 @@
+m4_comment([$Id: env_open.so,v 11.29 2002/12/22 21:11:07 bostic Exp $])
+
+define(M4PAGELOCAL, )
+include(tcl/m4.tcl)
+
+m4_tcl_header(berkdb env, m4_tcl_env_open, [dnl
+berkdb env
+ m4_tcl_arg([-cachesize {gbytes bytes ncache}])
+ m4_tcl_arg([-create])
+ m4_tcl_arg([-data_dir dirname])
+ m4_tcl_arg([-encryptaes passwd])
+ m4_tcl_arg([-encryptany passwd])
+ m4_tcl_arg([-errfile filename])
+ m4_tcl_arg([-home directory])
+ m4_tcl_arg([-log_dir dirname])
+ m4_tcl_arg([-mode mode])
+ m4_tcl_arg([-private])
+ m4_tcl_arg([-recover])
+ m4_tcl_arg([-recover_fatal])
+ m4_tcl_arg([-shm_key shmid])
+ m4_tcl_arg([-system_mem])
+ m4_tcl_arg([-tmp_dir dirname])
+ m4_tcl_arg([-txn __LB__nosync__RB__])
+ m4_tcl_arg([-txn_max max])
+ m4_tcl_arg([-use_environ])
+ m4_tcl_arg([-use_environ_root])
+])
+
+m4_p([dnl
+The m4_tcl_env_open command opens and optionally creates a database
+environment. The returned environment handle is bound to a Tcl command
+of the form m4_bold(envN), where N is an integer starting at 0 (for
+example, env0 and env1). It is through this Tcl command that the script
+accesses the environment methods. The command automatically initializes
+the Shared Memory Buffer Pool subsystem. This subsystem is used
+whenever the application is using any m4_db access method.])
+
+m4_p([dnl
+The options are as follows:])
+
+m4_tagbegin
+
+m4_tag([-cachesize {gbytes bytes ncache}], [m4_set_cachesize])
+
+m4_tag([-create], [dnl
+Cause m4_db subsystems to create any underlying files, as necessary.])
+
+m4_tag([-data_dir dirname], [dnl
+Specify the environment's data directory as described in
+m4_link(M4RELDIR/ref/env/naming, [m4_db File Naming]).])
+
+m4_tag([-encryptaes passwd], [dnl
+Specify the database should be encrypted with the given password
+using the Rijndael/AES (also known as the Advanced Encryption Standard
+and Federal Information Processing Standard (FIPS) 197) algorithm.])
+
+m4_tag([-encryptany passwd], [dnl
+Specify the already existing environment should be opened
+with the given password. This option is used if the environment is
+known to be encrypted, but the specific algorithm used is not known.])
+
+m4_tag([-errfile filename], [m4_tcl_errfile(env)])
+
+m4_tag([-home directory], [dnl
+The m4_arg(-home) argument is described in
+m4_link(M4RELDIR/ref/env/naming, [m4_db File Naming]).])
+
+m4_tag([-log_dir dirname], [dnl
+Specify the environment's logging file directory as described in
+m4_link(M4RELDIR/ref/env/naming, [m4_db File Naming]).])
+
+m4_tag([-mode mode], [m4_tcl_filemode([m4_db])])
+
+m4_tag([-private], [dnl
+Specify that the environment will only be accessed by a single process
+(although that process may be multithreaded). This flag has two effects
+on the m4_db environment. First, all underlying data structures are
+allocated from per-process memory instead of from shared memory that is
+potentially accessible to more than a single process. Second, mutexes
+are only configured to work between threads.
+m4_p([dnl
+This flag should not be specified if more than a single process is
+accessing the environment, as it is likely to cause database corruption
+and unpredictable behavior. For example, if both a server application
+and the m4_db utility m4_ref(db_stat) will access the environment, the
+m4_arg(-private) option should not be specified.])])
+
+m4_tag([-recover], [dnl
+Run normal recovery on this environment before opening it for normal use.
+If this flag is set, the m4_arg(-create) option must also be set because
+the regions will be removed and re-created.])
+
+m4_tag([-recover_fatal], [dnl
+Run catastrophic recovery on this environment before opening it for
+normal use. If this flag is set, the m4_arg(-create) option must also be
+set since the regions will be removed and re-created.])
+
+m4_tag([-shm_key key], [dnl
+Specify a base segment ID for m4_db environment shared memory regions
+created in system memory on systems supporting X/Open-style shared
+memory interfaces, for example, UNIX systems supporting shmget(2) and
+related System V IPC interfaces. See m4_link(M4RELDIR/ref/env/region,
+[Shared Memory Regions]) for more information.])
+
+m4_tag([-system_mem], [dnl
+Allocate memory from system shared memory instead of memory backed by the
+filesystem. See m4_link(M4RELDIR/ref/env/region, [Shared Memory Regions])
+for more information.])
+
+m4_tag([-tmp_dir dirname], [dnl
+Specify the environment's tmp directory, as described in
+m4_link(M4RELDIR/ref/env/naming, [m4_db File Naming]).])
+
+m4_tag([-txn __LB__nosync__RB__],
+[Initialize the Transaction subsystem. This subsystem is used when
+recovery and atomicity of multiple operations and recovery are important.
+The m4_arg(-txn) option implies the initialization of the logging
+and locking subsystems as well.
+m4_p([dnl
+If the optional m4_arg(nosync) argument is specified, the log will not
+be synchronously flushed on transaction commit. This means that
+transactions exhibit the ACI (atomicity, consistency, and isolation)
+properties, but not D (durability); that is, database integrity will be
+maintained, but it is possible that some number of the most recently
+committed transactions may be undone during recovery instead of being
+redone.])
+m4_p([dnl
+The number of transactions that are potentially at risk is governed by
+how often the log is checkpointed (see m4_ref(db_checkpoint) for more
+information) and how many log updates can fit on a single log page.])])
+
+m4_tag([-txn_max max], [dnl
+Set the maximum number of simultaneous transactions that are supported
+by the environment, which bounds the size of backing files. When there
+are more than the specified number of concurrent transactions, calls to
+m4_tcl_txn will fail (until some active transactions complete).])
+
+m4_tcl_environ
+
+m4_tagend
+
+m4_p([dnl
+The m4_tcl_env_open command returns an environment handle on success.])
+
+m4_tcl_ret_error
+
+m4_page_footer
diff --git a/db/docs_src/tcl/env_remove.so b/db/docs_src/tcl/env_remove.so
new file mode 100644
index 000000000..3fe9ac225
--- /dev/null
+++ b/db/docs_src/tcl/env_remove.so
@@ -0,0 +1,54 @@
+m4_comment([$Id: env_remove.so,v 11.17 2002/08/18 21:17:29 bostic Exp $])
+
+define(M4PAGELOCAL,)
+include(tcl/m4.tcl)
+
+m4_tcl_header(berkdb envremove, m4_tcl_env_remove, [dnl
+berkdb envremove
+ m4_tcl_arg([-data_dir directory])
+ m4_tcl_arg([-force])
+ m4_tcl_arg([-home directory])
+ m4_tcl_arg([-log_dir directory])
+ m4_tcl_arg([-tmp_dir directory])
+ m4_tcl_arg([-use_environ])
+ m4_tcl_arg([-use_environ_root])
+])
+
+m4_p([dnl
+Remove a m4_db environment.])
+
+m4_p([dnl
+The options are as follows:])
+
+m4_tagbegin
+m4_tag([-data_dir dirname], [dnl
+Specify the environment's data directory, as described in
+m4_link(M4RELDIR/ref/env/naming, [m4_db File Naming]).])
+
+m4_tag([-force], [dnl
+If there are processes that have called m4_tcl_env_open without calling
+m4_tcl_env_close (that is, there are processes currently using the
+environment), m4_tcl_env_remove will fail without further action, unless
+the m4_arg(-force) flag is set, in which case m4_tcl_env_remove will
+attempt to remove the environment regardless of any processes still
+using it.])
+
+m4_tag([-home directory], [dnl
+The m4_arg(-home) argument is described in
+m4_link(M4RELDIR/ref/env/naming, [m4_db File Naming]).])
+
+m4_tag([-log_dir dirname], [dnl
+Specify the environment's log directory, as described in
+m4_link(M4RELDIR/ref/env/naming, [m4_db File Naming]).])
+
+m4_tag([-tmp_dir dirname], [dnl
+Specify the environment's tmp directory, as described in
+m4_link(M4RELDIR/ref/env/naming, [m4_db File Naming]).])
+
+m4_tcl_environ
+
+m4_tagend
+
+m4_tcl_ret_standard(m4_tcl_env_remove)
+
+m4_page_footer
diff --git a/db/docs_src/tcl/m4.tcl b/db/docs_src/tcl/m4.tcl
new file mode 100644
index 000000000..08e26247a
--- /dev/null
+++ b/db/docs_src/tcl/m4.tcl
@@ -0,0 +1,178 @@
+m4_comment([$Id: m4.tcl,v 11.28 2004/12/16 19:13:05 bostic Exp $])
+
+define(m4_tcl_version, [m4_bold(berkdb version)])
+
+define(m4_tcl_env_open, [m4_bold(berkdb env)])
+define(m4_tcl_env_close, [m4_italic(env) m4_bold(close)])
+define(m4_tcl_env_remove, [m4_bold(berkdb envremove)])
+define(m4_tcl_env_dbremove, [m4_italic(env) m4_bold(dbremove)])
+define(m4_tcl_env_dbrename, [m4_italic(env) m4_bold(dbrename)])
+
+define(m4_tcl_db_open, [m4_bold(berkdb open)])
+define(m4_tcl_db_remove, [m4_bold(berkdb dbremove)])
+define(m4_tcl_db_rename, [m4_bold(berkdb dbrename)])
+define(m4_tcl_db_close, [m4_italic(db) m4_bold(close)])
+define(m4_tcl_db_count, [m4_italic(db) m4_bold(count)])
+define(m4_tcl_db_del, [m4_italic(db) m4_bold(del)])
+define(m4_tcl_db_get, [m4_italic(db) m4_bold(get)])
+define(m4_tcl_db_get_join, [m4_italic(db) m4_bold(get_join)])
+define(m4_tcl_db_get_type, [m4_italic(db) m4_bold(get_type)])
+define(m4_tcl_db_is_byteswapped,[m4_italic(db) m4_bold(is_byteswapped)])
+define(m4_tcl_db_join, [m4_italic(db) m4_bold(join)])
+define(m4_tcl_db_put, [m4_italic(db) m4_bold(put)])
+define(m4_tcl_db_stat, [m4_italic(db) m4_bold(stat)])
+define(m4_tcl_db_sync, [m4_italic(db) m4_bold(sync)])
+define(m4_tcl_db_truncate, [m4_italic(db) m4_bold(truncate)])
+
+define(m4_tcl_db_cursor, [m4_italic(db) m4_bold(cursor)])
+define(m4_tcl_dbc_close, [m4_italic(dbc) m4_bold(close)])
+define(m4_tcl_dbc_del, [m4_italic(dbc) m4_bold(del)])
+define(m4_tcl_dbc_dup, [m4_italic(dbc) m4_bold(dup)])
+define(m4_tcl_dbc_get, [m4_italic(dbc) m4_bold(get)])
+define(m4_tcl_dbc_put, [m4_italic(dbc) m4_bold(put)])
+
+define(m4_tcl_txn, [m4_italic(env) m4_bold(txn)])
+define(m4_tcl_txn_commit, [m4_italic(txn) m4_bold(commit)])
+define(m4_tcl_txn_abort, [m4_italic(txn) m4_bold(abort)])
+define(m4_tcl_txn_ckp, [m4_italic(env) m4_bold(txn_checkpoint)])
+
+dnl m4_tcl_arg
+dnl Tcl function argument.
+define(m4_tcl_arg, [__LB__$1__RB__])
+
+dnl m4_tcl_txnopt:
+dnl
+dnl $1: auto if -auto_commit is a flag
+dnl $1: env if an environment operation
+define(m4_tcl_txnopt, [dnl
+m4_tag([-txn txnid], [dnl
+If the operation is part of an application-specified transaction, the
+m4_arg(txnid) parameter is a transaction handle returned from
+m4_tcl_txn. If no transaction handle is specified, but the
+ifelse([$1], auto, [-auto_commit flag is specified],
+[operation occurs in a transactional
+ifelse([$1], env, database environment, database)]),
+the operation will be implicitly transaction protected.])])
+
+dnl m4_tcl_ret_error:
+dnl
+define(m4_tcl_ret_error, [m4_p([In the case of error, a Tcl error is thrown.])])
+
+dnl m4_tcl_ret_previous:
+dnl arg 1: command.
+dnl
+define(m4_tcl_ret_previous, [m4_p([dnl
+Otherwise, the $1 command returns 0 on success, and in the case of error,
+a Tcl error is thrown.])])
+
+dnl m4_tcl_ret_standard:
+dnl arg 1: command.
+dnl
+define(m4_tcl_ret_standard, [m4_p([dnl
+The $1 command returns 0 on success, and in the case of error, a Tcl error
+is thrown.])])
+
+define(m4_set_cachesize, [dnl
+Set the size of the database's shared memory buffer pool (that is, the
+cache), to m4_arg(gbytes) gigabytes plus m4_arg(bytes). The cache
+should be the size of the normal working data set of the application,
+with some small amount of additional memory for unusual situations.
+(Note: The working set is not the same as the number of simultaneously
+referenced pages, and should be quite a bit larger!)
+
+m4_p([dnl
+The default cache size is 256KB, and may not be specified as less than
+20KB. Any cache size less than 500MB is automatically increased by 25%
+to account for buffer pool overhead; cache sizes larger than 500MB are
+used as specified.])
+
+m4_p([dnl
+It is possible to specify caches to m4_db that are large enough so that
+they cannot be allocated contiguously on some architectures; for example,
+some releases of Solaris limit the amount of memory that may be
+allocated contiguously by a process. If m4_arg(ncache) is 0 or 1, the
+cache will be allocated contiguously in memory. If it is greater than
+1, the cache will be broken up into m4_arg(ncache) equally sized
+separate pieces of memory.])
+
+m4_p([dnl
+For information on tuning the m4_db cache size, see
+m4_link(M4RELDIR/ref/am_conf/cachesize, [Selecting a cache size]).])])
+
+dnl m4_tcl_errfile
+dnl #1: if db or environment.
+define(m4_tcl_errfile, [m4_p([dnl
+When an error occurs in the m4_db library, a m4_db error or an error
+return value is returned by the function. In some cases, however, the
+errno value may be insufficient to completely describe the cause of the
+error especially during initial application debugging.])
+m4_p([dnl
+The m4_arg(-errfile) argument is used to enhance the mechanism for
+reporting error messages to the application by specifying a file to be
+used for displaying additional m4_db error messages. In some cases, when
+an error occurs, m4_db will output an additional error message to the
+specified file reference.])
+m4_p([dnl
+ifelse($1, db, [dnl
+The error message will consist of a Tcl command name and a colon (":"),
+an error string, and a trailing m4_htmlquote(newline) character. If
+the database was opened in an environment, the Tcl command name will be
+the environment name (for example, env0), otherwise it will be the
+database command name (for example, db0).],[dnl The error message will
+consist of the environment command name (for example, env0) and a colon
+(":"), an error string, and a trailing m4_htmlquote(newline)
+character.])])
+m4_p([dnl
+This error-logging enhancement does not slow performance or significantly
+increase application size, and may be run during normal operation as well
+as during application debugging.])])
+
+define(m4_tcl_environ, [dnl
+m4_tag([-use_environ], [dnl
+The m4_db process' environment may be permitted to specify information
+to be used when naming files; see
+m4_link(M4RELDIR/ref/env/naming, [m4_db File Naming]).
+Because permitting users to specify which files are used can create
+security problems, environment information will be used in file naming
+for all users only if the m4_arg(-use_environ) flag is set.])
+
+m4_tag([-use_environ_root], [dnl
+The m4_db process' environment may be permitted to specify information
+to be used when naming files; see
+m4_link(M4RELDIR/ref/env/naming, [m4_db File Naming]).
+As permitting users to specify which files are used can create security
+problems, if the m4_arg(-use_environ_root) flag is set, environment
+information will be used for file naming only for users with appropriate
+permissions (for example, users with a user-ID of 0 on m4_posix1_name
+systems).])])
+
+dnl The mode argument language.
+dnl #1: the subsystem name.
+define(m4_tcl_filemode, [m4_p([dnl
+On UNIX systems, or in m4_posix1_name environments, all files created by $1
+are created with mode m4_arg(mode) (as described in m4_manref(chmod, 2)) and
+modified by the process' umask value at the time of creation (see
+m4_manref(umask, 2)). The group ownership of created files is based on
+the system and directory defaults, and is not further specified by m4_db.
+If m4_arg(mode) is 0, files are created readable and writable by both
+owner and group. On Windows systems, the mode argument is ignored.])])
+
+dnl Partial put language.
+dnl #1: the command name
+define(m4_tcl_partial_put, [m4_p([dnl
+The m4_arg(dlen) bytes starting m4_arg(doff) bytes from the beginning
+of the specified key's data record are replaced by the data specified
+by the data and size structure elements. If m4_arg(dlen) is smaller
+than the length of the supplied data, the record will grow; if
+m4_arg(dlen) is larger than the length of the supplied data, the record
+will shrink. If the specified bytes do not exist, the record will be
+extended using nul bytes as necessary, and the $1 call will succeed.
+ifelse($1, m4_tcl_db_put, [dnl])])
+m4_p([dnl
+It is an error to attempt a partial put using the $1 command in a database
+that supports duplicate records. Partial puts in databases supporting
+duplicate records must be done using a m4_tcl_dbc_put command.])
+m4_p([dnl
+It is an error to attempt a partial put with differing m4_arg(dlen) and
+supplied data length values in Queue or Recno databases with fixed-length
+records.])])
diff --git a/db/docs_src/tcl/txn.so b/db/docs_src/tcl/txn.so
new file mode 100644
index 000000000..7dc4ae5b2
--- /dev/null
+++ b/db/docs_src/tcl/txn.so
@@ -0,0 +1,61 @@
+m4_comment([$Id: txn.so,v 11.17 2003/10/18 19:16:24 bostic Exp $])
+
+define(M4PAGELOCAL,)
+include(tcl/m4.tcl)
+
+m4_tcl_header(env txn, m4_tcl_txn, [dnl
+env txn
+ m4_tcl_arg([-nosync])
+ m4_tcl_arg([-nowait])
+ m4_tcl_arg([-parent txnid])
+ m4_tcl_arg([-sync])
+])
+
+m4_p([dnl
+The m4_tcl_txn command begins a transaction. The returned transaction
+handle is bound to a Tcl command of the form m4_bold(env.txnX), where
+X is an integer starting at 0 (for example, env0.txn0 and env0.txn1).
+It is through this Tcl command that the script accesses the transaction
+methods.])
+
+m4_p([dnl
+The options are as follows:])
+
+m4_tagbegin
+
+m4_tag([-nosync], [dnl
+Do not synchronously flush the log when this transaction commits or
+prepares. This means the transaction will exhibit the ACI (atomicity,
+consistency, and isolation) properties, but not D (durability); that
+is, database integrity will be maintained, but it is possible that this
+transaction may be undone during recovery instead of being redone.
+m4_p([dnl
+This behavior may be set for an entire m4_db environment as part of the
+m4_tcl_env_open call.])])
+
+m4_tag([-nowait], [dnl
+If a lock is unavailable for any m4_db operation performed in the context
+of this transaction, throw a Tcl error immediately instead of blocking on
+the lock.])
+
+m4_tag([-parent txnid], [dnl
+Create the new transaction as a nested transaction, with the specified
+transaction indicated as its parent. Transactions may be nested to any
+level.])
+
+m4_tag([-sync], [dnl
+Synchronously flush the log when this transaction commits or prepares.
+This means the transaction will exhibit all of the ACID (atomicity,
+consistency, isolation, and durability) properties.
+m4_p([dnl
+This behavior is the default for m4_db environments unless the
+m4_arg(-nosync) option was specified to the m4_tcl_env_open call.])])
+
+m4_tagend
+
+m4_p([dnl
+The m4_tcl_txn command returns a transaction handle on success.])
+
+m4_tcl_ret_error
+
+m4_page_footer
diff --git a/db/docs_src/tcl/txn_abort.so b/db/docs_src/tcl/txn_abort.so
new file mode 100644
index 000000000..66591b1bb
--- /dev/null
+++ b/db/docs_src/tcl/txn_abort.so
@@ -0,0 +1,32 @@
+m4_comment([$Id: txn_abort.so,v 11.15 2002/08/18 21:17:30 bostic Exp $])
+
+define(M4PAGELOCAL,)
+include(tcl/m4.tcl)
+
+m4_tcl_header(txn abort, m4_tcl_txn_abort, [dnl
+txn abort
+])
+
+m4_p([dnl
+The m4_tcl_txn_abort command causes an abnormal termination of the
+transaction.])
+
+m4_p([dnl
+The log is played backward, and any necessary recovery operations are
+performed. After recovery is completed, all locks held by the
+transaction are acquired by the parent transaction in the case of a
+nested transaction, or released in the case of a non-nested transaction.
+As is the case for m4_tcl_txn_commit, applications that require strict
+two-phase locking should not explicitly release any locks.])
+
+m4_p([dnl
+In the case of nested transactions, aborting the parent transaction
+causes all children of that transaction to be aborted.])
+
+m4_p([dnl
+After m4_tcl_txn_abort has been called, regardless of its return, the
+m4_arg(txn) handle may not be accessed again.])
+
+m4_tcl_ret_standard(m4_tcl_txn_abort)
+
+m4_page_footer
diff --git a/db/docs_src/tcl/txn_checkpoint.so b/db/docs_src/tcl/txn_checkpoint.so
new file mode 100644
index 000000000..750d44630
--- /dev/null
+++ b/db/docs_src/tcl/txn_checkpoint.so
@@ -0,0 +1,36 @@
+m4_comment([$Id: txn_checkpoint.so,v 11.1 2003/09/02 14:38:51 sue Exp $])
+
+define(M4PAGELOCAL,)
+include(tcl/m4.tcl)
+
+m4_tcl_header(env txn_checkpoint, m4_tcl_txn_ckp, [dnl
+env txn_checkpoint
+ m4_tcl_arg([-force])
+ m4_tcl_arg([-kbyte kb])
+ m4_tcl_arg([-min minutes])
+])
+
+m4_p([dnl
+The m4_tcl_txn_ckp command writes a checkpoint.])
+
+m4_p([dnl
+The options are as follows:])
+
+m4_tagbegin
+
+m4_tag([-force], [dnl
+The checkpoint will occur regardless of activity level.])
+
+m4_tag([-kbyte kb], [dnl
+The checkpoint will occur only if at least the specified number
+of kilobytes of log data has been written since the last checkpoint.])
+
+m4_tag([-min minutes], [dnl
+The checkpoint will occur only if at least the specified number
+of minutes has passed since the last checkpoint.])
+
+m4_tagend
+
+m4_tcl_ret_error
+
+m4_page_footer
diff --git a/db/docs_src/tcl/txn_commit.so b/db/docs_src/tcl/txn_commit.so
new file mode 100644
index 000000000..c6d62add0
--- /dev/null
+++ b/db/docs_src/tcl/txn_commit.so
@@ -0,0 +1,68 @@
+m4_comment([$Id: txn_commit.so,v 11.20 2004/12/02 18:21:08 bostic Exp $])
+
+define(M4PAGELOCAL,)
+include(tcl/m4.tcl)
+
+m4_tcl_header(txn commit, m4_tcl_txn_commit, [dnl
+txn commit
+ m4_tcl_arg([-nosync])
+ m4_tcl_arg([-sync])
+])
+
+m4_p([dnl
+The m4_tcl_txn_commit command ends the transaction.])
+
+m4_p([dnl
+In the case of nested transactions, if the transaction is a parent
+transaction with unresolved (neither committed or aborted) child
+transactions, the child transactions are aborted and the commit of the
+parent will succeed.])
+
+m4_p([dnl
+In the case of nested transactions, if the transaction is a child
+transaction, its locks are not released, but are acquired by its parent.
+Although the commit of the child transaction will succeed, the actual
+resolution of the child transaction is postponed until the parent
+transaction is committed or aborted; that is, if its parent transaction
+commits, it will be committed, and if its parent transaction aborts, it
+will be aborted.])
+
+m4_p([dnl
+If the m4_arg(-nosync) option is not specified, a commit log record is
+written and flushed to disk, as are all previously written log records.])
+
+m4_p([dnl
+The options are as follows:])
+
+m4_tagbegin
+
+m4_tag([-nosync], [dnl
+Do not synchronously flush the log. This means the transaction will
+exhibit the ACI (atomicity, consistency, and isolation) properties, but
+not D (durability); that is, database integrity will be maintained, but
+it is possible that this transaction may be undone during recovery
+instead of being redone.
+m4_p([dnl
+This behavior may be set for an entire m4_db environment as part of
+the m4_tcl_env_open call.])])
+
+m4_tag([-sync], [dnl
+Synchronously flush the log. This means the transaction will exhibit
+all of the ACID (atomicity, consistency, isolation and durability)
+properties.
+m4_p([dnl
+This behavior is the default for m4_db environments unless the
+m4_arg(-nosync) option was specified to the m4_tcl_env_open or
+m4_tcl_txn calls.])])
+
+m4_tagend
+
+m4_p([dnl
+After m4_tcl_txn_commit has been called, regardless of its return, the
+m4_arg(txn) handle may not be accessed again. If m4_tcl_txn_commit
+encounters an error, this transaction and all child transactions of this
+transaction are aborted.])
+
+m4_tcl_ret_standard(m4_tcl_txn_commit)
+
+m4_page_footer
diff --git a/db/docs_src/tcl/version.so b/db/docs_src/tcl/version.so
new file mode 100644
index 000000000..fb1d19728
--- /dev/null
+++ b/db/docs_src/tcl/version.so
@@ -0,0 +1,27 @@
+m4_comment([$Id: version.so,v 11.12 2002/08/18 21:17:30 bostic Exp $])
+
+define(M4PAGELOCAL,)
+include(tcl/m4.tcl)
+
+m4_tcl_header(berkdb version, m4_tcl_version, [dnl
+berkdb version
+ m4_tcl_arg([-string])
+])
+
+m4_p([dnl
+Return a list of the form {major minor patch} for the major, minor and
+patch levels of the underlying m4_db release.])
+
+m4_p([dnl
+The options are as follows:])
+
+m4_tagbegin
+
+m4_tag([-string], [dnl
+Return a string with formatted m4_db version information.])
+
+m4_tagend
+
+m4_tcl_ret_error
+
+m4_page_footer
diff --git a/db/docs_src/txn/env_set_tx_max.so b/db/docs_src/txn/env_set_tx_max.so
new file mode 100644
index 000000000..5a802f7e4
--- /dev/null
+++ b/db/docs_src/txn/env_set_tx_max.so
@@ -0,0 +1,61 @@
+m4_comment([$Id: env_set_tx_max.so,v 10.47 2006/06/19 22:25:31 bostic Exp $])
+
+define(M4PAGELOCAL, [dbenv_set_tx_max, dbenv_get_tx_max])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbenv_set_tx_max),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__set_tx_max(DB_ENV *dbenv, u_int32_t max);
+m4_blank
+int
+DB_ENV-__GT__get_tx_max(DB_ENV *dbenv, u_int32_t *tx_maxp);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::set_tx_max(u_int32_t max);
+m4_blank
+int
+DbEnv::get_tx_max(u_int32_t *tx_maxp);
+]))
+
+m4_p([dnl
+Configure the m4_db database environment to support at least m4_arg(max)
+active transactions. This value bounds the size of the memory allocated
+for transactions. Child transactions are counted as active until they
+either commit or abort.])
+
+m4_p([dnl
+Transactions that update multiversion databases are not freed until the
+last page version that the transaction created is flushed from cache.
+This means that applications using multi-version concurrency control may
+need a transaction for each page in cache, in the extreme case.])
+
+m4_p([dnl
+When all of the memory available in the database environment for
+transactions is in use, calls to m4_ref(txn_begin) will fail (until some
+active transactions complete). If this interface is never called, the
+database environment is configured to support at least 100 active
+transactions.])
+
+m4_env_config(dbenv_set_tx_max, [number of active transactions],
+set_tx_max, [the number of transactions])
+
+m4_scope_env(dbenv_set_tx_max)
+m4_when_envopen(dbenv_set_tx_max, ignored)
+m4_return(dbenv_set_tx_max, std)
+
+m4_parambegin
+m4_param(max, [dnl
+The m4_arg(max) parameter configures the minimum number of
+simultaneously active transactions supported by m4_db database
+environment.])
+m4_paramend
+
+m4_err(dbenv_set_tx_max,
+einval, [the method was called after m4_ref(dbenv_open) was called])
+
+m4_pf_getter(dbenv_get_tx_max, number of active transactions,, tx_maxp)
+
+m4_seealso(DbTxn)
+m4_page_footer
diff --git a/db/docs_src/txn/env_set_tx_timestamp.so b/db/docs_src/txn/env_set_tx_timestamp.so
new file mode 100644
index 000000000..5d8ce4d49
--- /dev/null
+++ b/db/docs_src/txn/env_set_tx_timestamp.so
@@ -0,0 +1,55 @@
+m4_comment([$Id: env_set_tx_timestamp.so,v 10.29 2004/09/28 15:04:23 bostic Exp $])
+
+define(M4PAGELOCAL, [dbenv_set_tx_timestamp, dbenv_get_tx_timestamp])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(dbenv_set_tx_timestamp),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__set_tx_timestamp(DB_ENV *dbenv, time_t *timestamp);
+m4_blank
+int
+DB_ENV-__GT__get_tx_timestamp(DB_ENV *dbenv, time_t *timestampp);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::set_tx_timestamp(time_t *timestamp);
+m4_blank
+int
+DbEnv::get_tx_timestamp(time_t *timestampp);
+]))
+
+m4_p([dnl
+Recover to the time specified by m4_arg(timestamp) rather than to the
+most current possible date.])
+
+m4_p([dnl
+Once a database environment has been upgraded to a new version of m4_db
+involving a log format change (see m4_link(M4RELDIR/ref/upgrade/process,
+[Upgrading m4_db installations])), it is no longer possible to recover
+to a specific time before that upgrade.])
+
+m4_scope_dbenv(dbenv_set_tx_timestamp)
+
+m4_when_envopen(dbenv_set_tx_timestamp)
+
+m4_return(dbenv_set_tx_timestamp, std)
+
+m4_parambegin
+m4_param(timestamp, [dnl
+The m4_arg(timestamp) parameter references the memory location where the
+recovery timestamp is located.
+m4_p([dnl
+The m4_arg(timestamp) parameter should be the number of seconds since 0
+hours, 0 minutes, 0 seconds, January 1, 1970, Coordinated Universal
+Time; that is, the Epoch.])])
+m4_paramend
+
+m4_err(dbenv_set_tx_timestamp, einval,
+[it is not possible to recover to the specified time using the log files
+currently present in the environment])
+
+m4_pf_getter(dbenv_get_tx_timestamp, recovery timestamp,, timestampp)
+
+m4_seealso(DbTxn)
+m4_page_footer
diff --git a/db/docs_src/txn/m4.methods b/db/docs_src/txn/m4.methods
new file mode 100644
index 000000000..6ba9a2934
--- /dev/null
+++ b/db/docs_src/txn/m4.methods
@@ -0,0 +1,26 @@
+m4_comment([$Id: m4.methods,v 1.6 2005/03/16 21:26:51 bostic Exp $])
+
+m4_table_begin(, _center)
+
+m4_table_header(Transaction Subsystem and Related Methods, Description)
+m4_comment([DbEnv::txn_checkpoint])m4_table_element(m4_ref(txn_checkpoint), Checkpoint the transaction subsystem)
+m4_comment([DbEnv::txn_recover])m4_table_element(m4_ref(txn_recover), Distributed transaction recovery)
+m4_comment([DbEnv::txn_stat])m4_table_element(m4_ref(txn_stat), Return transaction subsystem statistics)
+
+m4_table_header(Transaction Subsystem Configuration, _empty)
+m4_comment([DbEnv::set_timeout])m4_table_element(m4_ref(dbenv_set_timeout), Set lock and transaction timeout)
+m4_comment([DbEnv::set_tx_max])m4_table_element(m4_ref(dbenv_set_tx_max), Set maximum number of transactions)
+m4_comment([DbEnv::set_tx_timestamp])m4_table_element(m4_ref(dbenv_set_tx_timestamp), Set recovery timestamp)
+
+m4_table_header(Transaction Operations, _empty)
+m4_comment([DbEnv::txn_begin])m4_table_element(m4_ref(txn_begin), Begin a transaction)
+m4_comment([DbTxn::])ifelse(M4API, CXX_API, [m4_table_element(m4_ref(DbTxn), Transaction object)])
+m4_comment([DbTxn::abort])m4_table_element(m4_ref(txn_abort), Abort a transaction)
+m4_comment([DbTxn::commit])m4_table_element(m4_ref(txn_commit), Commit a transaction)
+m4_comment([DbTxn::discard])m4_table_element(m4_ref(txn_discard), Discard a prepared but not resolved transaction handle)
+m4_comment([DbTxn::id])m4_table_element(m4_ref(txn_id), Return a transaction's ID)
+m4_comment([DbTxn::prepare])m4_table_element(m4_ref(txn_prepare), Prepare a transaction for commit)
+m4_comment([DbTxn::set_name])m4_table_element(m4_ref(txn_set_name), Associate a string with a transaction)
+m4_comment([DbTxn::set_timeout])m4_table_element(m4_ref(txn_set_timeout), Set transaction timeout)
+
+m4_table_end
diff --git a/db/docs_src/txn/txn_abort.so b/db/docs_src/txn/txn_abort.so
new file mode 100644
index 000000000..66b4d9ae4
--- /dev/null
+++ b/db/docs_src/txn/txn_abort.so
@@ -0,0 +1,38 @@
+m4_comment([$Id: txn_abort.so,v 10.39 2004/08/13 03:39:03 bostic Exp $])
+
+define(M4PAGELOCAL, txn_abort)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(txn_abort),
+ifelse(M4API, C_API, [dnl
+int
+DB_TXN-__GT__abort(DB_TXN *tid);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbTxn::abort();
+]))
+
+m4_p([dnl
+The m4_refT(txn_abort) causes an abnormal termination of the transaction.
+The log is played backward, and any necessary undo operations are done
+through the m4_arg(tx_recover) function specified to
+m4_ref(dbenv_set_app_dispatch). Before m4_ref(txn_abort) returns, any
+locks held by the transaction will have been released.])
+
+m4_p([dnl
+In the case of nested transactions, aborting a parent transaction causes
+all children (unresolved or not) of the parent transaction to be aborted.])
+
+m4_p([dnl
+All cursors opened within the transaction must be closed before the
+transaction is aborted.])
+
+m4_p([dnl
+After m4_ref(txn_abort) has been called, regardless of its return, the
+m4_ref(DbTxn) handle may not be accessed again.])
+
+m4_return(txn_abort, std)
+
+m4_seealso(DbTxn)
+m4_page_footer
diff --git a/db/docs_src/txn/txn_begin.so b/db/docs_src/txn/txn_begin.so
new file mode 100644
index 000000000..86c6d1cdb
--- /dev/null
+++ b/db/docs_src/txn/txn_begin.so
@@ -0,0 +1,150 @@
+m4_comment([$Id: txn_begin.so,v 10.80 2006/12/13 18:09:09 bostic Exp $])
+
+define(M4PAGELOCAL,
+ [txn_begin, DB_READ_COMMITTED, DB_READ_UNCOMMITTED, DB_TXN_NOSYNC,
+ DB_TXN_NOWAIT, DB_TXN_NOWAIT, DB_TXN_SNAPSHOT, DB_TXN_SYNC, DB_TXN_WAIT,
+ DB_TXN_WRITE_NOSYNC])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(txn_begin),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__txn_begin(DB_ENV *env,
+ DB_TXN *parent, DB_TXN **tid, u_int32_t flags);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::txn_begin(DbTxn *parent, DbTxn **tid, u_int32_t flags);
+]))
+
+m4_p([dnl
+The m4_ref(txn_begin) method creates a new transaction in the environment
+and copies a pointer to a m4_ref(DbTxn) that uniquely identifies it into
+the memory to which m4_arg(tid) refers. Calling the m4_ref(txn_abort),
+m4_ref(txn_commit) or m4_refT(txn_discard)s will discard the returned
+handle.])
+
+m4_p([m4_bold([dnl
+Note: Transactions may only span threads if they do so serially;
+that is, each transaction must be active in only a single thread
+of control at a time. This restriction holds for parents of nested
+transactions as well; no two children may be concurrently active in
+more than one thread of control at any one time.])])
+
+m4_p([m4_bold([dnl
+Note: Cursors may not span transactions; that is, each cursor must be
+opened and closed within a single transaction.])])
+
+m4_p([m4_bold([dnl
+Note: A parent transaction may not issue any m4_db operations -- except for
+m4_ref(txn_begin), m4_ref(txn_abort) and m4_ref(txn_commit) -- while it has
+active child transactions (child transactions that have not yet been
+committed or aborted).])])
+
+m4_return(txn_begin, std)
+
+m4_parambegin
+m4_param(flags, [dnl
+m4_sf_or_may
+
+m4_tagbegin
+m4_tag(m4_idef(DB_READ_COMMITTED), [dnl
+This transaction will have degree 2 isolation. This provides for cursor
+stability but not repeatable reads. Data items which have been
+previously read by this transaction may be deleted or modified by other
+transactions before this transaction completes.])
+
+m4_tag(m4_idef(DB_READ_UNCOMMITTED), [dnl
+This transaction will have degree 1 isolation. Read operations
+performed by the transaction may read modified but not yet committed
+data. Silently ignored if the m4_ref(DB_READ_UNCOMMITTED) flag was not
+specified when the underlying database was opened.])
+
+m4_tag(m4_idef(DB_TXN_NOSYNC), [dnl
+Do not synchronously flush the log when this transaction commits or
+prepares. This means the transaction will exhibit the ACI (atomicity,
+consistency, and isolation) properties, but not D (durability); that is,
+database integrity will be maintained but it is possible that this
+transaction may be undone during recovery.
+m4_p([dnl
+This behavior may be set for a m4_db environment using the
+m4_refT(dbenv_set_flags). Any value specified to this method overrides
+that setting.])])
+
+m4_tag(m4_idef(DB_TXN_NOWAIT), [dnl
+If a lock is unavailable for any m4_db operation performed in the context
+of this transaction, cause the operation to
+ifelse(M4EXCEPT, return_only, [dnl
+return m4_ref(DB_LOCK_DEADLOCK) (or m4_ref(DB_LOCK_NOTGRANTED) if the
+database environment has been configured using the
+m4_ref(DB_TIME_NOTGRANTED) flag).],[dnl
+either return m4_ref(DB_LOCK_DEADLOCK) or throw a
+m4_ref(DbDeadlockException) exception (or return
+m4_ref(DB_LOCK_NOTGRANTED) or throw a m4_ref(DbLockNotGrantedException)
+exception if the database environment has been configured using the
+m4_ref(DB_TIME_NOTGRANTED) flag).])
+m4_p([dnl
+This behavior may be set for a m4_db environment using the
+m4_refT(dbenv_set_flags). Any value specified to this method overrides
+that setting.])])
+
+m4_tag(m4_idef(DB_TXN_SNAPSHOT), [dnl
+This transaction will execute with m4_link(M4RELDIR/ref/transapp/read,
+snapshot isolation). For databases with the m4_ref(DB_MULTIVERSION)
+flag set, data values will be read as they are when the transaction
+begins, without taking read locks. Silently ignored for operations on
+databases with m4_ref(DB_MULTIVERSION) not set on the underlying
+database (read locks are acquired).
+m4_p([dnl
+The error m4_idef(DB_LOCK_DEADLOCK) will be returned from update
+operations if a snapshot transaction attempts to update data
+which was modified after the snapshot transaction read it.])])
+
+m4_tag(m4_idef(DB_TXN_SYNC), [dnl
+Synchronously flush the log when this transaction commits or prepares.
+This means the transaction will exhibit all of the ACID (atomicity,
+consistency, isolation, and durability) properties.
+m4_p([dnl
+This behavior is the default for m4_db environments unless the
+m4_ref(DB_TXN_NOSYNC) flag was specified to the
+m4_refT(dbenv_set_flags). Any value specified to this method overrides
+that setting.])])
+
+m4_tag(m4_idef(DB_TXN_WAIT), [dnl
+If a lock is unavailable for any m4_db operation performed in the context
+of this transaction, wait for the lock.
+m4_p([dnl
+This behavior is the default for m4_db environments unless the
+m4_ref(DB_TXN_NOWAIT) flag was specified to the
+m4_refT(dbenv_set_flags). Any value specified to this method overrides
+that setting.])])
+
+m4_tag(m4_idef(DB_TXN_WRITE_NOSYNC), [dnl
+Write, but do not synchronously flush, the log when this transaction
+commits. This means the transaction will exhibit the ACI (atomicity,
+consistency, and isolation) properties, but not D (durability); that is,
+database integrity will be maintained, but if the system fails, it is
+possible some number of the most recently committed transactions may be
+undone during recovery. The number of transactions at risk is governed
+by how often the system flushes dirty buffers to disk and how often the
+log is flushed or checkpointed.
+m4_p([dnl
+This behavior may be set for a m4_db environment using the
+m4_refT(dbenv_set_flags). Any value specified to this method overrides
+that setting.])])
+m4_tagend])
+
+m4_param(parent, [dnl
+If the m4_arg(parent) parameter is non-NULL, the new transaction will
+be a nested transaction, with the transaction indicated by
+m4_arg(parent) as its parent. Transactions may be nested to any level.
+In the presence of distributed transactions and two-phase commit, only
+the parental transaction, that is a transaction without a m4_arg(parent)
+specified, should be passed as an parameter to m4_ref(txn_prepare).])
+m4_paramend
+
+m4_err(txn_begin, memory,
+[maximum number of concurrent transactions has been reached])
+
+m4_seealso(DbTxn)
+m4_page_footer
diff --git a/db/docs_src/txn/txn_checkpoint.so b/db/docs_src/txn/txn_checkpoint.so
new file mode 100644
index 000000000..0b4196ff7
--- /dev/null
+++ b/db/docs_src/txn/txn_checkpoint.so
@@ -0,0 +1,50 @@
+m4_comment([$Id: txn_checkpoint.so,v 10.49 2005/03/02 22:57:15 bostic Exp $])
+
+define(M4PAGELOCAL, txn_checkpoint)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(txn_checkpoint),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__txn_checkpoint(const DB_ENV *env,
+ u_int32_t kbyte, u_int32_t min, u_int32_t flags);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::txn_checkpoint(u_int32_t kbyte, u_int32_t min, u_int32_t flags) const;
+]))
+
+m4_p([dnl
+If there has been any logging activity in the database environment since
+the last checkpoint, the m4_refT(txn_checkpoint) flushes the underlying
+memory pool, writes a checkpoint record to the log, and then flushes the
+log.])
+
+m4_return(txn_checkpoint, std)
+
+m4_underfunc(txn_checkpoint, txn_checkpoint, db_checkpoint)
+
+m4_parambegin
+m4_param(flags, [dnl
+m4_sf_zmust(0)
+
+m4_tagbegin
+m4_tag(m4_idef(DB_FORCE), [dnl
+Force a checkpoint record, even if there has been no activity since the
+last checkpoint.])
+m4_tagend])
+
+m4_param(kbyte, [dnl
+If the m4_arg(kbyte) parameter is non-zero, a checkpoint will be done
+if more than m4_arg(kbyte) kilobytes of log data have been written since
+the last checkpoint.])
+
+m4_param(min, [dnl
+If the m4_arg(min) parameter is non-zero, a checkpoint will be done if
+more than m4_arg(min) minutes have passed since the last checkpoint.])
+m4_paramend
+
+m4_err(txn_checkpoint, einval)
+
+m4_seealso(DbTxn)
+m4_page_footer
diff --git a/db/docs_src/txn/txn_class.so b/db/docs_src/txn/txn_class.so
new file mode 100644
index 000000000..57d746356
--- /dev/null
+++ b/db/docs_src/txn/txn_class.so
@@ -0,0 +1,61 @@
+m4_comment([$Id: txn_class.so,v 10.25 2005/05/17 15:25:50 bostic Exp $])
+
+define(M4PAGELOCAL, DbTxn)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(DbTxn),
+ifelse(M4API, C_API, [dnl
+typedef struct __db_txn DB_TXN;
+])
+ifelse(M4API, CXX_API, [dnl
+class DbTxn {
+public:
+ DB_TXN *DbTxn::get_DB_TXN();
+ const DB_TXN *DbTxn::get_const_DB_TXN() const;
+ static DbTxn *DbTxn::get_DbTxn(DB_TXN *txn);
+ static const DbTxn *DbTxn::get_const_DbTxn(const DB_TXN *txn);
+ ...
+};
+]))
+
+m4_p([dnl
+The m4_ref(DbTxn) object is the handle for a transaction. Methods of
+the m4_ref(DbTxn) handle are used to configure, abort and commit the
+transaction. m4_ref(DbTxn) handles are provided to m4_ref(Db) methods
+in order to transactionally protect those database operations.])
+
+m4_p([dnl
+m4_ref(DbTxn) handles are not free-threaded; transactions handles may
+be used by multiple threads, but only serially, that is, the application
+must serialize access to the m4_ref(DbTxn) handle. Once the
+m4_ref(txn_abort) or m4_refT(txn_commit)s are called, the handle may
+not be accessed again, regardless of the method's return. In addition,
+parent transactions may not issue any m4_db operations while they have
+active child transactions (child transactions that have not yet been
+committed or aborted) except for m4_ref(txn_begin), m4_ref(txn_abort)
+and m4_ref(txn_commit).])
+
+ifelse(M4API, CXX_API, [dnl
+m4_p([dnl
+Each m4_ref(DbTxn) object has an associated m4_refc(DbTxn) struct, which
+is used by the underlying implementation of m4_db and its C-language
+API. The DbTxn::get_DB_TXN method returns a pointer to this struct.
+Given a const m4_ref(DbTxn) object, DbTxn::get_const_DB_TXN returns a
+const pointer to the same struct.])
+
+m4_p([dnl
+Given a m4_refc(DbTxn) struct, the Db::get_DbTxn method returns the
+corresponding m4_ref(DbTxn) object, if there is one. If the
+m4_refc(DbTxn) object was not associated with a m4_ref(DbTxn) (that is,
+it was not returned from a call to DbTxn::get_DB_TXN), then the result
+of DbTxn::get_DbTxn is undefined. Given a const m4_refc(DbTxn) struct,
+DbTxn::get_const_DbTxn returns the associated const m4_ref(DbTxn)
+object, if there is one.])
+
+m4_p([dnl
+These methods may be useful for m4_db applications including both C
+and C++ language software. It should not be necessary to use these
+calls in a purely C++ application.])])
+
+m4_seealso(DbTxn)
+m4_page_footer
diff --git a/db/docs_src/txn/txn_commit.so b/db/docs_src/txn/txn_commit.so
new file mode 100644
index 000000000..68b341ba7
--- /dev/null
+++ b/db/docs_src/txn/txn_commit.so
@@ -0,0 +1,72 @@
+m4_comment([$Id: txn_commit.so,v 10.49 2004/08/13 03:39:03 bostic Exp $])
+
+define(M4PAGELOCAL, txn_commit)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(txn_commit),
+ifelse(M4API, C_API, [dnl
+int
+DB_TXN-__GT__commit(DB_TXN *tid, u_int32_t flags);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbTxn::commit(u_int32_t flags);
+]))
+
+m4_p([dnl
+The m4_refT(txn_commit) ends the transaction.])
+
+m4_p([dnl
+In the case of nested transactions, if the transaction is a parent
+transaction, committing the parent transaction causes all unresolved
+children of the parent to be committed. In the case of nested
+transactions, if the transaction is a child transaction, its locks are
+not released, but are acquired by its parent. Although the commit of the
+child transaction will succeed, the actual resolution of the child
+transaction is postponed until the parent transaction is committed or
+aborted; that is, if its parent transaction commits, it will be
+committed; and if its parent transaction aborts, it will be aborted.])
+
+m4_p([dnl
+All cursors opened within the transaction must be closed before the
+transaction is committed.])
+
+m4_p([dnl
+After m4_ref(txn_commit) has been called, regardless of its return, the
+m4_ref(DbTxn) handle may not be accessed again. If m4_ref(txn_commit)
+encounters an error, the transaction and all child transactions of the
+transaction are aborted.])
+
+m4_return(txn_commit, std)
+
+m4_parambegin
+m4_param(flags, [dnl
+m4_sf_zmust(1)
+m4_tagbegin
+
+m4_tag(m4_idef(DB_TXN_NOSYNC), [dnl
+Do not synchronously flush the log. This means the transaction will
+exhibit the ACI (atomicity, consistency, and isolation) properties, but
+not D (durability); that is, database integrity will be maintained, but
+it is possible that this transaction may be undone during recovery.
+m4_p([dnl
+This behavior may be set for a m4_db environment using the
+m4_refT(dbenv_set_flags) or for a single transaction using the
+m4_refT(txn_begin). Any value specified to this method overrides
+both of those settings.])])
+
+m4_tag(m4_idef(DB_TXN_SYNC), [dnl
+Synchronously flush the log. This means the transaction will exhibit
+all of the ACID (atomicity, consistency, isolation, and durability)
+properties.
+m4_p([dnl
+This behavior is the default for m4_db environments unless the
+m4_ref(DB_TXN_NOSYNC) flag was specified to the
+m4_refT(dbenv_set_flags). This behavior may also be set for a single
+transaction using the m4_refT(txn_begin). Any value specified to this
+method overrides both of those settings.])])
+m4_tagend])
+m4_paramend
+
+m4_seealso(DbTxn)
+m4_page_footer
diff --git a/db/docs_src/txn/txn_discard.so b/db/docs_src/txn/txn_discard.so
new file mode 100644
index 000000000..f1ff6cacf
--- /dev/null
+++ b/db/docs_src/txn/txn_discard.so
@@ -0,0 +1,41 @@
+m4_comment([$Id: txn_discard.so,v 10.16 2004/08/13 03:39:03 bostic Exp $])
+
+define(M4PAGELOCAL, txn_discard)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(txn_discard),
+ifelse(M4API, C_API, [dnl
+int
+DB_TXN-__GT__discard(DB_TXN *tid, u_int32_t flags);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbTxn::discard(u_int32_t flags);
+]))
+
+m4_p([dnl
+The m4_refT(txn_discard) frees up all the per-process resources
+associated with the specified m4_ref(DbTxn) handle, neither committing
+nor aborting the transaction. This call may be used only after calls
+to m4_ref(txn_recover) when there are multiple global transaction
+managers recovering transactions in a single m4_db environment. Any
+transactions returned by m4_ref(txn_recover) that are not handled by
+the current global transaction manager should be discarded using
+m4_ref(txn_discard).])
+
+m4_return(txn_discard, std)
+
+m4_p([dnl
+After m4_ref(txn_discard) has been called, regardless of its return, the
+m4_ref(DbTxn) handle may not be accessed again.])
+
+m4_parambegin
+m4_unusedflags
+m4_paramend
+
+m4_err(txn_discard, einval,
+[the transaction handle does not refer to a transaction that was
+recovered into a prepared but not yet completed state])
+
+m4_seealso(DbTxn)
+m4_page_footer
diff --git a/db/docs_src/txn/txn_id.so b/db/docs_src/txn/txn_id.so
new file mode 100644
index 000000000..af87bf0a2
--- /dev/null
+++ b/db/docs_src/txn/txn_id.so
@@ -0,0 +1,23 @@
+m4_comment([$Id: txn_id.so,v 10.21 2004/08/13 03:39:03 bostic Exp $])
+
+define(M4PAGELOCAL, txn_id)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(txn_id),
+ifelse(M4API, C_API, [dnl
+u_int32_t
+DB_TXN-__GT__id(DB_TXN *tid);
+])
+ifelse(M4API, CXX_API, [dnl
+u_int32_t
+DbTxn::id();
+]))
+
+m4_p([dnl
+The m4_refT(txn_id) returns the unique transaction id associated with the
+specified transaction. Locking calls made on behalf of this transaction
+should use the value returned from m4_ref(txn_id) as the locker parameter
+to the m4_ref(lock_get) or m4_ref(lock_vec) calls.])
+
+m4_seealso(DbTxn)
+m4_page_footer
diff --git a/db/docs_src/txn/txn_list.so b/db/docs_src/txn/txn_list.so
new file mode 100644
index 000000000..adcff3195
--- /dev/null
+++ b/db/docs_src/txn/txn_list.so
@@ -0,0 +1,7 @@
+m4_comment([$Id: txn_list.so,v 1.3 2004/11/02 20:04:11 bostic Exp $])
+
+m4_page_title([m4_db: Transaction Subsystem and Related Methods])
+
+include(txn/m4.methods)
+
+m4_page_footer
diff --git a/db/docs_src/txn/txn_prepare.so b/db/docs_src/txn/txn_prepare.so
new file mode 100644
index 000000000..3f9fe4c84
--- /dev/null
+++ b/db/docs_src/txn/txn_prepare.so
@@ -0,0 +1,47 @@
+m4_comment([$Id: txn_prepare.so,v 10.35 2004/08/13 03:39:03 bostic Exp $])
+
+define(M4PAGELOCAL, [txn_prepare, DB_XIDDATASIZE])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(txn_prepare),
+ifelse(M4API, C_API, [dnl
+int
+DB_TXN-__GT__prepare(DB_TXN *tid, u_int8_t gid__LB__DB_XIDDATASIZE__RB__);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbTxn::prepare(u_int8_t gid__LB__DB_XIDDATASIZE__RB__);
+]))
+
+m4_idefz(DB_XIDDATASIZE)
+m4_p([dnl
+The m4_refT(txn_prepare) initiates the beginning of a two-phase commit.])
+
+m4_p([dnl
+In a distributed transaction environment, m4_db can be used as a local
+transaction manager. In this case, the distributed transaction manager
+must send m4_italic(prepare) messages to each local manager. The local
+manager must then issue a m4_ref(txn_prepare) and await its successful
+return before responding to the distributed transaction manager. Only
+after the distributed transaction manager receives successful responses
+from all of its m4_italic(prepare) messages should it issue any
+m4_italic(commit) messages.])
+
+m4_p([dnl
+In the case of nested transactions, preparing the parent causes all
+unresolved children of the parent transaction to be committed. Child
+transactions should never be explicitly prepared. Their fate will be
+resolved along with their parent's during global recovery.])
+
+m4_return(txn_prepare, std)
+
+m4_parambegin
+m4_param(gid, [dnl
+The m4_arg(gid) parameter specifies the global transaction ID by which this
+transaction will be known. This global transaction ID will be returned
+in calls to m4_ref(txn_recover), telling the application which global
+transactions must be resolved.])
+m4_paramend
+
+m4_seealso(DbTxn)
+m4_page_footer
diff --git a/db/docs_src/txn/txn_recover.so b/db/docs_src/txn/txn_recover.so
new file mode 100644
index 000000000..03ec0ac9b
--- /dev/null
+++ b/db/docs_src/txn/txn_recover.so
@@ -0,0 +1,86 @@
+m4_comment([$Id: txn_recover.so,v 10.28 2007/05/30 17:24:41 margo Exp $])
+
+define(M4PAGELOCAL, txn_recover)
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(txn_recover),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__txn_recover(DB_ENV *dbenv, DB_PREPLIST preplist__LB____RB__,
+ long count, long *retp, u_int32_t flags);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::txn_recover(DB_PREPLIST preplist__LB____RB__,
+ long count, long *retp, u_int32_t flags);
+]))
+
+m4_p([dnl
+Database environment recovery restores transactions that were prepared,
+but not yet resolved at the time of the system shut down or crash, to
+their state prior to the shut down or crash, including any locks
+previously held. The m4_refT(txn_recover) returns a list of those
+prepared transactions.])
+
+m4_p([dnl
+The m4_refT(txn_recover) should only be called after the environment has
+been recovered.])
+
+m4_p([dnl
+Multiple threads of control may call m4_ref(txn_recover), but only one
+thread of control may resolve each returned transaction, that is, only
+one thread of control may call m4_ref(txn_commit) or m4_ref(txn_abort)
+on each returned transaction. Callers of m4_ref(txn_recover) must call
+m4_ref(txn_discard) to discard each transaction they do not resolve.])
+
+m4_p([dnl
+On return from m4_ref(txn_recover), the m4_arg(preplist) parameter will
+be filled in with a list of transactions that must be resolved by the
+application (committed, aborted or discarded). The m4_arg(preplist)
+parameter is a structure of type DB_PREPLIST; the following DB_PREPLIST
+fields will be filled in:])
+
+m4_tagbegin
+
+m4_field(DB_TXN *, txn,
+[The transaction handle for the transaction.])
+
+m4_field(u_int8_t, gid__LB__DB_XIDDATASIZE__RB__,
+[The global transaction ID for the transaction. The global transaction
+ID is the one specified when the transaction was prepared. The
+application is responsible for ensuring uniqueness among global
+transaction IDs.])
+
+m4_tagend
+
+m4_return(txn_recover, std)
+
+m4_parambegin
+m4_param(count, [dnl
+The m4_arg(count) parameter specifies the number of available entries
+in the passed-in m4_arg(preplist) array. The m4_arg(retp) parameter
+returns the number of entries m4_ref(txn_recover) has filled in, in the
+array.])
+
+m4_param(flags, [dnl
+m4_sf_must
+
+m4_tagbegin
+m4_tag(m4_idef(DB_FIRST), [dnl
+Begin returning a list of prepared, but not yet resolved transactions.
+Specifying this flag begins a new pass over all prepared, but not yet
+completed transactions, regardless of whether they have already been returned
+in previous calls to m4_ref(txn_recover).
+Calls to m4_ref(txn_recover) from different threads of control should not
+be intermixed in the same environment.])
+
+m4_tag(m4_idef(DB_NEXT), [dnl
+Continue returning a list of prepared, but not yet resolved transactions,
+starting where the last call to m4_ref(txn_recover) left off.])
+m4_tagend])
+
+m4_param_co(preplist, list of transactions to be resolved by the application)
+m4_paramend
+
+m4_seealso(DbTxn)
+m4_page_footer
diff --git a/db/docs_src/txn/txn_set_name.so b/db/docs_src/txn/txn_set_name.so
new file mode 100644
index 000000000..bfc1a260f
--- /dev/null
+++ b/db/docs_src/txn/txn_set_name.so
@@ -0,0 +1,48 @@
+m4_comment([$Id: txn_set_name.so,v 10.2 2005/05/17 04:01:01 mjc Exp $])
+
+define(M4PAGELOCAL, [txn_set_name, txn_get_name])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(txn_set_name),
+ifelse(M4API, C_API, [dnl
+int
+DB_TXN-__GT__set_name(DB_TXN *txn, const char *name);
+m4_blank
+int
+DB_TXN-__GT__get_name(DB_TXN *txn, const char **namep);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbTxn::set_name(const char *name);
+m4_blank
+int
+DbTxn::get_name(const char **namep);
+]))
+
+m4_p([dnl
+The m4_refT(txn_set_name) associates the specified string with the
+transaction. The string is returned by m4_ref(txn_stat) and displayed
+by m4_ref(txn_stat_print).])
+
+m4_p([dnl
+If the database environment has been configured for logging and the
+m4_db library was configured with
+m4_linkpage(M4RELDIR/ref/build_unix/conf, --enable-diagnostic,
+--enable-diagnostic), a debugging log record is written including the
+transaction ID and the name.])
+
+m4_when_any(txn_set_name)
+m4_return(txn_set_name, std)
+
+m4_parambegin
+m4_param(name, [dnl
+The m4_arg(name) parameter is the string to associate with the
+transaction.])
+m4_paramend
+
+m4_pf_getter(txn_get_name,
+string associated with the transaction,, namep, reference)
+
+m4_seealso(DbTxn)
+m4_page_footer
+
diff --git a/db/docs_src/txn/txn_set_timeout.so b/db/docs_src/txn/txn_set_timeout.so
new file mode 100644
index 000000000..a8d487149
--- /dev/null
+++ b/db/docs_src/txn/txn_set_timeout.so
@@ -0,0 +1,60 @@
+m4_comment([$Id: txn_set_timeout.so,v 10.22 2006/12/16 13:52:36 bostic Exp $])
+
+define(M4PAGELOCAL, [txn_set_timeout, DB_SET_LOCK_TIMEOUT, DB_SET_TXN_TIMEOUT])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(txn_set_timeout),
+ifelse(M4API, C_API, [dnl
+u_int32_t
+DB_TXN-__GT__set_timeout(DB_TXN *tid, db_timeout_t timeout, u_int32_t flags);
+])
+ifelse(M4API, CXX_API, [dnl
+u_int32_t
+DbTxn::set_timeout(db_timeout_t timeout, u_int32_t flags);
+]))
+
+m4_p([dnl
+The m4_refT(txn_set_timeout) sets timeout values for locks or
+transactions for the specified transaction.])
+
+m4_p([dnl
+Timeouts are checked whenever a thread of control blocks on a lock or
+when deadlock detection is performed. In the case of
+m4_ref(DB_SET_LOCK_TIMEOUT), the timeout is for any single lock request.
+In the case of m4_ref(DB_SET_TXN_TIMEOUT), the timeout is for the life
+of the transaction. As timeouts are only checked when the lock request
+first blocks or when deadlock detection is performed, the accuracy of
+the timeout depends on how often deadlock detection is performed.])
+
+m4_p([dnl
+Timeout values may be specified for the database environment as a whole.
+See m4_ref(dbenv_set_timeout) and for more information.])
+
+m4_scope_tx(txn_set_timeout)
+
+m4_when_any(txn_set_timeout)
+
+m4_return(txn_set_timeout, std)
+
+m4_parambegin
+m4_param(flags, [dnl
+m4_sf_must
+
+m4_tagbegin
+m4_tag(m4_idef(DB_SET_LOCK_TIMEOUT), [dnl
+Set the timeout value for locks in this transaction.])
+
+m4_tag(m4_idef(DB_SET_TXN_TIMEOUT), [dnl
+Set the timeout value for this transaction.])
+m4_tagend])
+
+m4_param(timeout, [dnl
+The m4_arg(timeout) parameter is specified as an unsigned 32-bit number
+of microseconds, limiting the maximum timeout to roughly 71 minutes. A
+value of 0 disables timeouts for the transaction.])
+m4_paramend
+
+m4_err(txn_set_timeout, einval)
+
+m4_seealso(DbTxn)
+m4_page_footer
diff --git a/db/docs_src/txn/txn_stat.so b/db/docs_src/txn/txn_stat.so
new file mode 100644
index 000000000..fad715b21
--- /dev/null
+++ b/db/docs_src/txn/txn_stat.so
@@ -0,0 +1,152 @@
+m4_comment([$Id: txn_stat.so,v 10.67 2007/06/22 16:57:17 bostic Exp $])
+
+define(M4PAGELOCAL, [txn_stat, txn_stat_print])
+include(m4/m4.seealso)
+
+m4_pf_header(m4_ref(txn_stat),
+ifelse(M4API, C_API, [dnl
+int
+DB_ENV-__GT__txn_stat(DB_ENV *env, DB_TXN_STAT **statp, u_int32_t flags);
+m4_blank
+int
+DB_ENV-__GT__txn_stat_print(DB_ENV *env, u_int32_t flags);
+])
+ifelse(M4API, CXX_API, [dnl
+int
+DbEnv::txn_stat(DB_TXN_STAT **statp, u_int32_t flags);
+m4_blank
+int
+DbEnv::txn_stat_print(u_int32_t flags);
+]))
+
+m4_p([dnl
+The m4_refT(txn_stat) returns the transaction subsystem statistics.])
+
+m4_p([dnl
+The m4_refT(txn_stat) creates a statistical structure of type
+DB_TXN_STAT and copies a pointer to it into a user-specified memory
+location.])
+
+m4_alloc([Statistical structures])
+
+m4_p([dnl
+The following DB_TXN_STAT fields will be filled in:])
+
+m4_tagbegin
+m4_field(DbLsn, st_last_ckp,
+[The LSN of the last checkpoint.])
+
+m4_field(time_t, st_time_ckp,
+[The time the last completed checkpoint finished (as the number of seconds
+since the Epoch, returned by the m4_posix1_name m4_arg(time) function).])
+
+m4_field(u_int32_t, st_last_txnid,
+[The last transaction ID allocated.])
+
+m4_field(u_int32_t, st_maxtxns,
+[The maximum number of active transactions configured.])
+
+m4_field(u_int32_t, st_nactive,
+[The number of transactions that are currently active.])
+
+m4_field(u_int32_t, st_nsnapshot,
+[The number of transactions on the snapshot list. These are transactions
+which modified a database opened with m4_ref(DB_MULTIVERSION),
+and which have committed or aborted, but the copies of pages they
+created are still in the cache.])
+
+m4_field(u_int32_t, st_maxnactive,
+[The maximum number of active transactions at any one time.])
+
+m4_field(u_int32_t, st_maxnsnapshot,
+[The maximum number of transactions on the snapshot list at any one time.])
+
+m4_field(u_int32_t, st_nbegins,
+[The number of transactions that have begun.])
+
+m4_field(u_int32_t, st_naborts,
+[The number of transactions that have aborted.])
+
+m4_field(u_int32_t, st_ncommits,
+[The number of transactions that have committed.])
+
+m4_field(u_int32_t, st_nrestores,
+[The number of transactions that have been restored.])
+
+m4_field(roff_t, st_regsize,
+[The size of the transaction region, in bytes.])
+
+m4_field(u_int32_t, st_region_wait,
+[The number of times that a thread of control was forced to wait before
+obtaining the transaction region mutex.])
+
+m4_field(u_int32_t, st_region_nowait,
+[The number of times that a thread of control was able to obtain
+the transaction region mutex without waiting.])
+
+m4_field(DB_TXN_ACTIVE, *st_txnarray, [dnl
+A pointer to an array of m4_arg(st_nactive) DB_TXN_ACTIVE structures,
+describing the currently active transactions. The following fields of
+the DB_TXN_ACTIVE structure will be filled in:])
+
+m4_tagbegin
+m4_field(u_int32_t, txnid,
+[The transaction ID of the transaction.])
+
+m4_field(u_int32_t, parentid,
+[The transaction ID of the parent transaction (or 0, if no parent).])
+
+m4_field(pid_t, pid,
+[The process ID of the originator of the transaction.])
+
+m4_field(uintmax_t, tid,
+[The thread of control ID of the originator of the transaction.])
+
+m4_field(DbLsn, lsn,
+[The current log sequence number when the transaction was begun.])
+
+m4_field(DbLsn, read_lsn,
+[The log sequence number of reads for snapshot transactions.])
+
+m4_field(u_int32_t, mvcc_ref,
+[The number of buffer copies created by this transaction that remain in cache.])
+
+m4_field(u_int32_t, status, [dnl
+One of the following list of constants: TXN_ABORTED, TXN_COMMITTED,
+TXN_PREPARED, TXN_RUNNING.])
+
+m4_field(u_int32_t, xa_status, [dnl
+If the transaction is an XA transaction, the m4_arg(xa_status) of the
+transaction will be one of the following list of constants:
+TXN_XA_ABORTED, TXN_XA_DEADLOCKED, TXN_XA_ENDED, TXN_XA_PREPARED,
+TXN_XA_STARTED, or TXN_XA_SUSPENDED. Otherwise, the m4_arg(xa_status)
+will be 0.])
+
+m4_field(u_int8_t, xid__LB__DB_XIDDATASIZE__RB__, [dnl
+If the transaction is an XA transaction, the transaction's XA ID. If
+the transaction was prepared separately from the XA interfaces, the
+transaction's Global ID. Otherwise, the m4_arg(xid) contents are
+undefined.])
+
+m4_field(char, name__LB____RB__,
+[If a name was specified for the transaction, up to the first 50 bytes
+of that name, followed by a nul termination byte.])
+m4_tagend
+
+m4_tagend
+
+m4_when_after_envopen(txn_stat)
+
+m4_return(txn_stat, std)
+
+m4_parambegin
+m4_param(flags, m4_stat_flags)
+m4_param_co(statp, allocated statistics structure, REF)
+m4_paramend
+
+m4_err(txn_stat, einval)
+
+m4_stat_print(txn_stat_print, transaction subsystem, txn_stat)
+
+m4_seealso(DbTxn)
+m4_page_footer
diff --git a/db/docs_src/utility/berkeley_db_svc.so b/db/docs_src/utility/berkeley_db_svc.so
new file mode 100644
index 000000000..c7617a4c8
--- /dev/null
+++ b/db/docs_src/utility/berkeley_db_svc.so
@@ -0,0 +1,60 @@
+m4_comment([$Id: berkeley_db_svc.so,v 10.17 2006/10/05 01:06:08 bostic Exp $])
+
+include(m4/m4.utility)
+define(M4PAGELOCAL, berkeley_db_svc)
+
+m4_util_header(berkeley_db_svc, [dnl
+berkeley_db_svc m4_utilarg([Vv]) m4_utilarg([h home])
+ m4_utilarg([I seconds]) m4_utilarg([L file]) m4_utilarg([t seconds]) m4_utilarg([T seconds])])
+m4_idefz(utility to support @RPC client/server)
+
+m4_p([dnl
+The m4_ref(berkeley_db_svc) utility is the m4_db RPC server.])
+
+m4_p([The options are as follows:])
+
+m4_tagbegin
+
+m4_tagopt(h, [dnl
+Add the specified home directory to the list of allowed home directories
+that can be specified by the client. The home directory should be an
+absolute pathname. The last component of each home directory specified
+must be unique because that is how clients specify which database environment
+they want to join.
+m4_p([dnl
+Recovery will be run on each specified environment before the server
+begins accepting requests from clients. For this reason, only one copy
+of the server program should ever be run at any time because recovery
+must always be single-threaded.])])
+
+m4_tagopt(I, [dnl
+Set the default idle timeout for client environments to the specified
+number of seconds. The default timeout is 24 hours.])
+
+m4_Lflag(berkeley_db_svc)
+
+m4_tagopt(t, [dnl
+Set the default timeout for client resources (idle transactions and
+cursors) to the specified number of seconds. When the timeout expires,
+if the resource is a transaction, it is aborted; if the resource is a
+cursor, it is closed. The default timeout is 5 minutes.])
+
+m4_tagopt(T, [dnl
+Set the maximum timeout allowed for client resources. The default
+timeout is 20 minutes. If a client application requests a server
+timeout greater than the maximum timeout set for this server, the
+client's timeout will be capped at the maximum timeout value.])
+
+m4_Vflag
+
+m4_tagopt(v, [Run in verbose mode.])
+
+m4_tagend
+
+m4_utilexit(berkeley_db_svc)
+
+m4_header([Environment Variables])
+
+m4_utilenv(berkeley_db_svc)
+
+m4_page_footer
diff --git a/db/docs_src/utility/db_archive.so b/db/docs_src/utility/db_archive.so
new file mode 100644
index 000000000..512c0c2e7
--- /dev/null
+++ b/db/docs_src/utility/db_archive.so
@@ -0,0 +1,84 @@
+m4_comment([$Id: db_archive.so,v 10.30 2006/10/05 01:06:08 bostic Exp $])
+
+include(m4/m4.utility)
+define(M4PAGELOCAL, db_archive)
+
+m4_util_header(db_archive, [db_archive m4_utilarg(adlsVv) m4_utilarg([h home]) m4_utilarg([P password])])
+m4_idefz(utility to @archive log files)
+
+m4_p([dnl
+The m4_ref(db_archive) utility writes the pathnames of log files that
+are no longer in use (for example, no longer involved in active
+transactions), to the standard output, one pathname per line. These
+log files should be written to backup media to provide for recovery in
+the case of catastrophic failure (which also requires a snapshot of the
+database files), but they may then be deleted from the system to reclaim
+disk space.])
+
+m4_p([The options are as follows:])
+
+m4_tagbegin
+m4_tagopt(a, [dnl
+Write all pathnames as absolute pathnames, instead of relative to the
+database home directories.])
+
+m4_tagopt(d, [dnl
+Remove log files that are no longer needed; no filenames are written.
+Automatic log file removal is likely to make catastrophic recovery
+impossible.])
+
+m4_hflag
+
+m4_tagopt(l, [dnl
+Write out the pathnames of all the database log files, whether or not
+they are involved in active transactions.])
+
+m4_Pflag
+
+m4_tagopt(s, [dnl
+Write the pathnames of all the database files that need to be archived
+in order to recover the database from catastrophic failure. If any of
+the database files have not been accessed during the lifetime of the
+current log files, m4_ref(db_archive) will not include them in this
+output.
+m4_p([dnl
+It is possible that some of the files to which the log refers have since
+been deleted from the system. In this case, m4_ref(db_archive) will
+ignore them. When m4_ref(db_recover) is run, any files to which the
+log refers that are not present during recovery are assumed to have been
+deleted and will not be recovered.])])
+
+m4_Vflag
+
+m4_tagopt(v, [dnl
+Run in verbose mode.])
+m4_tagend
+
+m4_p([dnl
+Log cursor handles (returned by the m4_refT(log_cursor)) may have open
+file descriptors for log files in the database environment. Also, the
+m4_db interfaces to the database environment logging subsystem (for
+example, m4_ref(log_put) and m4_ref(txn_abort)) may allocate log cursors
+and have open file descriptors for log files as well. On operating
+systems where filesystem related system calls (for example, rename and
+unlink on Windows/NT) can fail if a process has an open file descriptor
+for the affected file, attempting to move or remove the log files listed
+by m4_ref(db_archive) may fail. All m4_db internal use of log cursors
+operates on active log files only and furthermore, is short-lived in
+nature. So, an application seeing such a failure should be restructured
+to close any open log cursors it may have, and otherwise to retry the
+operation until it succeeds. (Although the latter is not likely to be
+necessary; it is hard to imagine a reason to move or rename a log file
+in which transactions are being logged or aborted.)])
+
+m4_detach(db_archive, uses)
+
+m4_underfunc(log_archive, log_archive, db_archive)
+
+m4_utilexit(db_archive)
+
+m4_header([Environment Variables])
+
+m4_utilenv(db_archive)
+
+m4_page_footer
diff --git a/db/docs_src/utility/db_checkpoint.so b/db/docs_src/utility/db_checkpoint.so
new file mode 100644
index 000000000..6971cde3e
--- /dev/null
+++ b/db/docs_src/utility/db_checkpoint.so
@@ -0,0 +1,70 @@
+m4_comment([$Id: db_checkpoint.so,v 10.28 2006/10/05 01:06:08 bostic Exp $])
+
+include(m4/m4.utility)
+define(M4PAGELOCAL, db_checkpoint)
+
+m4_util_header(db_checkpoint, [dnl
+db_checkpoint m4_utilarg(1Vv) m4_utilarg([h home])
+ m4_utilarg([k kbytes]) m4_utilarg([L file]) m4_utilarg([P password]) m4_utilarg([p min])])
+m4_idefz(utility to take @checkpoints)
+
+m4_p([dnl
+The m4_ref(db_checkpoint) utility is a daemon process that monitors the
+database log, and periodically calls m4_ref(txn_checkpoint) to checkpoint
+it.])
+
+m4_p([dnl
+The options are as follows:])
+
+m4_tagbegin
+m4_tagopt(1, [dnl
+Force a single checkpoint of the log (regardless of whether or not there
+has been activity since the last checkpoint), and then exit.
+m4_p([
+When the m4_option(1) flag is specified, the m4_ref(db_checkpoint)
+utility will checkpoint the log even if unable to find an existing
+database environment. This functionality is useful when upgrading
+database environments from one version of m4_db to another.])])
+
+m4_hflag
+
+m4_tagopt(k, [dnl
+Checkpoint the database at least as often as every m4_arg(kbytes) of log
+file are written.])
+
+m4_Lflag(db_checkpoint)
+
+m4_Pflag
+
+m4_tagopt(p, [dnl
+Checkpoint the database at least every m4_arg(min) minutes if there has
+been any activity since the last checkpoint.])
+
+m4_Vflag
+
+m4_tagopt(v, [dnl
+Write the time of each checkpoint attempt to the standard output.])
+
+m4_tagend
+
+m4_p([dnl
+At least one of the m4_option(1), m4_option(k), and m4_option(p) options
+must be specified.])
+
+m4_detach(db_checkpoint, uses)
+
+m4_p([dnl
+The m4_ref(db_checkpoint) utility does not attempt to create the m4_db
+shared memory regions if they do not already exist. The application
+that creates the region should be started first, and once the region is
+created, the m4_ref(db_checkpoint) utility should be started.])
+
+m4_underfunc(txn_checkpoint, txn_checkpoint, db_checkpoint)
+
+m4_utilexit(db_checkpoint)
+
+m4_header([Environment Variables])
+
+m4_utilenv(db_checkpoint)
+
+m4_page_footer
diff --git a/db/docs_src/utility/db_codegen.so b/db/docs_src/utility/db_codegen.so
new file mode 100644
index 000000000..5385bae1d
--- /dev/null
+++ b/db/docs_src/utility/db_codegen.so
@@ -0,0 +1,279 @@
+m4_comment([$Id: db_codegen.so,v 10.6 2007/05/17 18:29:34 bostic Exp $])
+
+include(m4/m4.utility)
+define(M4PAGELOCAL, db_codegen)
+
+m4_util_header(db_codegen, [db_codegen m4_utilarg(Vv) m4_utilarg([a c]) m4_utilarg([i file]) m4_utilarg([o file])])
+m4_idefz(code generation utility)
+
+m4_p([dnl
+The m4_ref(db_codegen) utility generates application code to create and
+configure m4_db database environments and databases based on a simple
+description language, and writes it to one or more output files. The
+generated code may need modification, in the case of complicated
+applications, but will usually significantly reduce the time required
+to create m4_db applications.])
+
+m4_p([The options are as follows:])
+
+m4_tagbegin
+m4_tagopt(a, [dnl
+Generate code for the specified API (currently, only "c" is accepted).])
+
+m4_tagopt(i, [dnl
+Specify an input file; by default, stdin is used.])
+
+m4_tagopt(o, [dnl
+Specify an output file prefix; by default, "application" is used.])
+
+m4_Vflag
+
+m4_tagopt(v, [dnl
+Run in verbose mode.])
+m4_tagend
+
+m4_utilexit(db_codegen)
+
+m4_section(C Language Specific Information)
+m4_p([dnl
+By default, when the m4_ref(db_codegen) utility generates C-language
+code, the output file is named "application.c". The output filename
+can be specified with m4_option(o) option.])
+
+m4_p([dnl
+At the beginning of the output file is a list of public database
+environment (m4_ref(DbEnv)) handles and database (m4_ref(Db)) handles,
+as specified by the description language. The database environment
+handle variables are named "XXX_dbenv", where "XXX" is the name of the
+environment in the input specification. For databases associated with
+a database environment, the database handle variables are named
+"XXX_YYY", where "XXX" is the name of the environment, and "YYY" is the
+name of the database. For standalone databases, the database handle
+variables are named "XXX", where "XXX" is the name of the database.])
+
+m4_p([dnl
+There are two public functions in the output file: bdb_startup and
+bdb_shutdown. The bdb_startup function should be called to create and
+configure the database environments and databases, and the bdb_shutdown
+function should be called to gracefully shut down the environments and
+databases.])
+
+m4_section(Specification Language)
+
+m4_p([dnl
+The m4_ref(db_codegen) uses a simple description language:])
+
+m4_bulletbegin
+m4_bullet([Lines in the input consist of white-space separated tokens.])
+m4_bullet([Tokens are case-insensitive.])
+m4_bullet([Empty lines, and lines where the first non-space character
+is hash mark ("#"). are ignored. In addition, hash marks may appear
+in lines, in which case the content of the line from the hash mark to
+the end of the line is ignored.])
+m4_bulletend
+
+m4_p([dnl
+There are two top-level objects: "environment" and "database", which
+correspond to database environments and databases, respectively. These
+top-level objects can be associated with keywords to describe their
+configuration and relationships.])
+
+m4_p([dnl
+For example, the following input would create two standalone databases:])
+
+m4_indent([dnl
+database data_one {
+ type btree
+}
+database data_two {
+ type btree
+}])
+
+m4_p([dnl
+In this case, there would be no m4_ref(DbEnv) handle, and the public
+m4_ref(Db) handles would be:])
+
+m4_indent([dnl
+DB *data_one;
+DB *data_two;])
+
+m4_p([dnl
+For example, the following input would create a database environment
+which contains three databases:])
+
+m4_indent([dnl
+environment myenv {
+ database data_one {
+ type btree
+ }
+ database data_two {
+ type btree
+ }
+ database data_three {
+ type btree
+ }
+}])
+
+m4_p([dnl
+In this case, the public m4_ref(DbEnv) and m4_ref(Db) handles would be:])
+
+m4_indent([dnl
+DB_ENV *myenv_dbenv;
+DB *myenv_data_one;
+DB *myenv_data_two;
+DB *myenv_data_three;])
+
+m4_p([dnl
+A variety of keywords can be specified for the databases and the
+environments. For example, the cache size can be specified for
+the database environment, and the page size can be specified for
+the database, as well as secondary relationships:])
+
+m4_indent([dnl
+environment myenv {
+ cachesize 2 0 10
+ database data_one {
+ type btree
+ pagesize 1024
+ }
+ database data_two {
+ primary data_one
+ secondary_offset 10 15
+ type btree
+ pagesize 32768
+ }
+ database data_three {
+ type btree
+ pagesize 512
+ }
+}])
+
+m4_section(Environment Keywords)
+
+m4_tagbegin
+
+m4_tag(environment, [dnl
+Start a database environment block.
+m4_p([dnl
+There must be three tokens on the line: the keyword, the name of the
+environment and an opening brace ("{").])])
+
+m4_tag(home, [dnl
+Specify the database environment home directory.
+m4_p([dnl
+There must be two tokens on the line: the keyword, and the home
+directory.])])
+
+m4_tag(cachesize, [dnl
+Specify the database environment cache size.
+m4_p([dnl
+There must be two tokens on the line: the keyword, the gigabytes of
+cache, the bytes of cache, and the number of caches (the number of
+underlying physical areas into which the cache is logically
+divided).])])
+
+m4_tag(private, [dnl
+Specify the database environment is private.
+m4_p([dnl
+There must be one token on the line: the keyword by itself.])])
+
+m4_tag(}, [dnl
+End the database environment block.
+m4_p([dnl
+There must be one token on the line: the keyword by itself.])])
+
+m4_tagend
+
+m4_section(Database Keywords)
+
+m4_tagbegin
+
+m4_tag(database, [dnl
+Start a database block.
+m4_p([dnl
+There must be three tokens on the line: the keyword, the name of the
+database and an opening brace ("{").])])
+
+m4_tag(custom, [dnl
+Specify a custom key-comparison routine. This is used when the Btree
+database requires a specific sort that m4_ref(db_codegen) cannot
+generate. A stub key comparison routine will be created and configured
+for the database which should be modified as necessary. See the
+"key_type" keyword for more information.
+m4_p([dnl
+There must be one token on the line: the keyword by itself.])])
+
+m4_tag(dupsort, [dnl
+Configure the database to support sorted duplicates.
+m4_p([dnl
+There must be one token on the line: the keyword by itself.])])
+
+m4_tag(extentsize, [dnl
+Configure the size of the Queue database extent files.
+m4_p([dnl
+There must be two tokens on the line: the keyword, and the extent file size,
+as a number of pages.])])
+
+m4_tag(key_type, [dnl
+Configure a integral type key-comparison routine. This is used when the
+Btree database Btree database key is an integral type (such as "unsigned
+int", or "u_int32_t"). Any C-language integral type may be specified.
+See the "custom" keyword for more information. A Btree comparison routine
+based on the type of the key will be created and configured.
+m4_p([dnl
+There must be two tokens on the line: the keyword, and the type.])])
+
+m4_tag(pagesize, [dnl
+Configure the database page size.
+m4_p([dnl
+There must be two tokens on the line: the keyword, and the page size
+in bytes.])])
+
+m4_tag(primary, [dnl
+Configure the database as a secondary index. A stub secondary callback
+routine will be created and configured for the database, which should
+be modified as necessary. See the "secondary_offset" keyword for more
+information.
+m4_p([dnl There must be two tokens on the line: the keyword, and the
+name of the primary database for which this database is a secondary.])])
+
+m4_tag(recnum, [dnl
+Configure the Btree database to support record number access.
+m4_p([dnl
+There must be one token on the line: the keyword by itself.])])
+
+m4_tag(re_len, [dnl
+Configure the record length for a Queue database or a fixed-length Recno
+database.
+m4_p([dnl
+There must be two tokens on the line: the keyword, and the length of
+a record, in bytes.])])
+
+m4_tag(secondary_offset, [dnl
+Configure a secondary callback routine based on a byte string found in
+the primary database's data item.
+m4_p([dnl
+There must be three tokens on the line: the keyword, the byte offset
+from the beginning of the primary data item where the secondary key
+occurs, and the length of the secondary key in bytes.])])
+
+m4_tag(transaction, [dnl
+Configure the database (and, by extension, the database environment),
+to be transactional.
+m4_p([dnl
+There must be one token on the line: the keyword by itself.])])
+
+m4_tag(type, [dnl
+Configure the database type.
+m4_p([dnl
+There must be two tokens on the line: the keyword, and the type, where
+the type is one of "btree", "hash", "queue" or "recno".])])
+
+m4_tag(}, [dnl
+End the database environment block.
+m4_p([dnl
+There must be one token on the line: the keyword by itself.])])
+
+m4_tagend
+
+m4_page_footer
diff --git a/db/docs_src/utility/db_deadlock.so b/db/docs_src/utility/db_deadlock.so
new file mode 100644
index 000000000..a10dde51b
--- /dev/null
+++ b/db/docs_src/utility/db_deadlock.so
@@ -0,0 +1,79 @@
+m4_comment([$Id: db_deadlock.so,v 10.32 2006/10/05 01:06:08 bostic Exp $])
+
+include(m4/m4.utility)
+define(M4PAGELOCAL, db_deadlock)
+
+m4_util_header(db_deadlock, [dnl
+db_deadlock m4_utilarg(Vv)
+ m4_utilarg([a e | m | n | o | W | w | y]) m4_utilarg([h home]) m4_utilarg([L file]) m4_utilarg([t sec.usec])])
+m4_idefz(utility to detect @deadlocks)
+
+m4_p([dnl
+The m4_ref(db_deadlock) utility traverses the database environment lock
+region, and aborts a lock request each time it detects a deadlock or a
+lock request that has timed out. By default, in the case of a deadlock,
+a random lock request is chosen to be aborted.])
+
+m4_p([dnl
+This utility should be run as a background daemon, or the underlying
+m4_db deadlock detection interfaces should be called in some other way,
+whenever there are multiple threads or processes accessing a database
+and at least one of them is modifying it.])
+
+m4_p([The options are as follows:])
+
+m4_tagbegin
+m4_tagopt(a, [dnl
+When a deadlock is detected, abort the locker:
+m4_tagbegin
+m4_tag(m, [with the most locks])
+m4_tagns(n, [with the fewest locks])
+m4_tagns(o, [with the oldest lock])
+m4_tagns(W, [with the most write locks])
+m4_tagns(w, [with the fewest write locks])
+m4_tagns(y, [with the youngest lock])
+m4_tagend])
+m4_p([dnl
+When lock or transaction timeouts have been specified:
+m4_tagbegin
+m4_tag(e, [abort any lock request that has timed out])
+m4_tagend])
+
+m4_hflag
+
+m4_Lflag(db_deadlock)
+
+m4_tagopt(t, [dnl
+Check the database environment every m4_arg(sec) seconds plus
+m4_arg(usec) microseconds to see if a process has been forced to wait
+for a lock; if one has, review the database environment lock
+structures.])
+
+m4_Vflag
+
+m4_tagopt(v, [dnl
+Run in verbose mode, generating messages each time the detector runs.])
+
+m4_tagend
+
+m4_p([dnl
+If the m4_option(t) option is not specified, m4_ref(db_deadlock) will
+run once and exit.])
+
+m4_detach(db_deadlock, uses)
+
+m4_p([dnl
+The m4_ref(db_deadlock) utility does not attempt to create the m4_db
+shared memory regions if they do not already exist. The application
+which creates the region should be started first, and then, once the
+region is created, the m4_ref(db_deadlock) utility should be started.])
+
+m4_underfunc(lock_detect, lock_detect, db_deadlock)
+
+m4_utilexit(db_deadlock)
+
+m4_header([Environment Variables])
+
+m4_utilenv(db_deadlock)
+
+m4_page_footer
diff --git a/db/docs_src/utility/db_dump.so b/db/docs_src/utility/db_dump.so
new file mode 100644
index 000000000..ecda360da
--- /dev/null
+++ b/db/docs_src/utility/db_dump.so
@@ -0,0 +1,133 @@
+m4_comment([$Id: db_dump.so,v 10.34 2006/10/05 01:06:08 bostic Exp $])
+
+include(m4/m4.utility)
+define(M4PAGELOCAL, db_dump)
+
+m4_util_header(db_dump, [dnl
+db_dump m4_utilarg(klNpRrV) m4_utilarg([d ahr])
+ m4_utilarg([f output]) m4_utilarg([h home]) m4_utilarg([P password]) m4_utilarg([s database]) file
+db_dump185 m4_utilarg(p) m4_utilarg([f output]) file])
+m4_idefz(utility to @dump databases as text files)
+
+m4_p([dnl
+The m4_ref(db_dump) utility reads the database file m4_arg(file) and
+writes it to the standard output using a portable flat-text format
+understood by the m4_ref(db_load) utility. The m4_arg(file) argument
+must be a file produced using the m4_db library functions.])
+
+m4_p([dnl
+The m4_ref(db_dump185) utility is similar to the m4_ref(db_dump) utility,
+except that it reads databases in the format used by m4_db versions 1.85
+and 1.86.])
+
+m4_p([The options are as follows:])
+
+m4_tagbegin
+
+m4_tagopt(d, [dnl
+Dump the specified database in a format helpful for debugging the m4_db
+library routines.
+m4_tagbegin
+m4_tag(a, [Display all information.])
+m4_tagns(h, [Display only page headers.])
+m4_tagns(r, [Do not display the free-list or pages on the free list. This
+mode is used by the recovery tests.])
+m4_tagend
+m4_p([m4_bold([dnl
+The output format of the m4_option(d) option is not standard and may change,
+without notice, between releases of the m4_db library.])])])
+
+m4_tagopt(f, [dnl
+Write to the specified m4_arg(file) instead of to the standard output.])
+
+m4_hflag
+
+m4_tagopt(k, [Dump record numbers from Queue and Recno databases as keys.])
+
+m4_tagopt(l, [List the databases stored in the file.])
+
+m4_Nflag
+
+m4_Pflag
+
+m4_tagopt(p, [dnl
+If characters in either the key or data items are printing characters (as
+defined by m4_manref(isprint, 3)), use printing characters in m4_arg(file)
+to represent them. This option permits users to use standard text editors
+and tools to modify the contents of databases.
+
+m4_p([dnl
+Note: different systems may have different notions about what characters
+are considered m4_italic(printing characters), and databases dumped in
+this manner may be less portable to external systems.])])
+
+m4_tagopt(R, [dnl
+Aggressively salvage data from a possibly corrupt file. The m4_option(R)
+flag differs from the m4_option(r) option in that it will return all
+possible data from the file at the risk of also returning already deleted
+or otherwise nonsensical items. Data dumped in this fashion will almost
+certainly have to be edited by hand or other means before the data is
+ready for reload into another database])
+
+m4_tagopt(r, [dnl
+Salvage data from a possibly corrupt file. When used on a uncorrupted
+database, this option should return equivalent data to a normal dump, but
+most likely in a different order.])
+
+m4_tagopt(s, [dnl
+Specify a single database to dump. If no database is specified, all
+databases in the database file are dumped.])
+
+m4_Vflag
+
+m4_tagend
+
+m4_p([dnl
+Dumping and reloading Hash databases that use user-defined hash
+functions will result in new databases that use the default hash
+function. Although using the default hash function may not be optimal
+for the new database, it will continue to work correctly.])
+
+m4_p([dnl
+Dumping and reloading Btree databases that use user-defined prefix or
+comparison functions will result in new databases that use the default
+prefix and comparison functions.
+m4_bold([dnl
+In this case, it is quite likely that the database will be damaged
+beyond repair permitting neither record storage or retrieval.])])
+
+m4_p([dnl
+The only available workaround for either case is to modify the sources
+for the m4_ref(db_load) utility to load the database using the correct
+hash, prefix, and comparison functions.])
+
+m4_p([dnl
+The m4_ref(db_dump185) utility may not be available on your system
+because it is not always built when the m4_db libraries and utilities
+are installed. If you are unable to find it, see your system
+administrator for further information.])
+
+m4_p([dnl
+The m4_ref(db_dump) and m4_ref(db_dump185) utility output formats are
+documented in the m4_link(M4RELDIR/ref/dumpload/format, [Dump Output
+Formats]) section of the m4_db Reference Guide.])
+
+m4_detach(db_dump, may be used with)
+
+m4_p([dnl
+Even when using a m4_db database environment, the m4_ref(db_dump)
+utility does not use any kind of database locking if it is invoked with
+the m4_bold(-d), m4_bold(-R), or m4_bold(-r) arguments. If used with
+one of these arguments, the m4_ref(db_dump) utility may only be safely
+run on databases that are not being modified by any other process;
+otherwise, the output may be corrupt.])
+
+m4_utilexit(db_dump)
+
+m4_utilexit(db_dump185)
+
+m4_header([Environment Variables])
+
+m4_utilenv(db_dump)
+
+m4_page_footer
diff --git a/db/docs_src/utility/db_hotbackup.so b/db/docs_src/utility/db_hotbackup.so
new file mode 100644
index 000000000..e25353551
--- /dev/null
+++ b/db/docs_src/utility/db_hotbackup.so
@@ -0,0 +1,148 @@
+m4_comment([$Id: db_hotbackup.so,v 1.10 2007/04/13 15:45:27 bostic Exp $])
+
+include(m4/m4.utility)
+define(M4PAGELOCAL, db_hotbackup)
+
+m4_util_header(db_hotbackup, [db_hotbackup m4_utilarg(cDuVv) m4_utilarg([d data_dir ...]) m4_utilarg([h home]) m4_utilarg([l log_dir]) m4_utilarg([P password]) m4_option(b) backup_dir])
+m4_idefz(utility to hot @backup database environments)
+
+m4_p([dnl
+The m4_ref(db_hotbackup) utility creates "hot backup" or "hot failover"
+snapshots of m4_db database environments.])
+
+m4_p([dnl
+The m4_ref(db_hotbackup) utility performs the following steps:])
+
+m4_nlistbegin
+m4_nlist([dnl
+If the m4_option(c) option is specified, checkpoint the source home
+database environment, and remove any unnecessary log files.])
+m4_nlist([dnl
+If the target directory for the backup does not exist, it is created
+with mode read-write-execute for the owner.
+m4_p([dnl
+If the target directory for the backup does exist and the m4_option(u)
+option was specified, all log files in the target directory are removed;
+if the m4_option(u) option was not specified, all files in the target
+directory are removed.])])
+m4_nlist([dnl
+If the m4_option(u) option was not specified, copy application-specific
+files found in the database environment home directory, and any
+directories specified using the m4_option(d) option, into the target
+directory for the backup.])
+m4_nlist([dnl
+Copy all log files found in the directory specified by the m4_option(l)
+option (or in the database environment home directory, if no m4_option(l)
+option was specified), into the target directory for the backup.])
+m4_nlist([dnl
+Perform catastrophic recovery in the target directory for the backup.])
+m4_nlist([dnl
+Remove any unnecessary log files from the target directory for the
+backup.])
+m4_nlistend
+
+m4_p([dnl
+The m4_ref(db_hotbackup) utility does not resolve pending transactions that
+are in the prepared state. Applications that use m4_ref(txn_prepare)
+should specify m4_ref(DB_RECOVER_FATAL) when opening the environment,
+and run m4_ref(txn_recover) to resolve any pending transactions, when
+failing over to the backup.])
+
+m4_p([The options are as follows:])
+
+m4_tagbegin
+
+m4_tagopt(b, [dnl
+Specify the target directory for the backup.])
+
+m4_tagopt(c, [dnl
+Before performing the backup, checkpoint the source database environment
+and remove any log files that are no longer required in that environment.
+m4_bold([To avoid making catastrophic recovery impossible, log file
+removal must be integrated with log file archival.])])
+
+m4_tagopt(D, [dnl
+Use the data and log directories listed in a m4_ref(DB_CONFIG) configuration
+file in the source directory. This option has four effects:
+
+m4_bulletbegin
+m4_bullet([dnl
+The specified data and log directories will be created relative to the
+target directory, with mode read-write-execute owner, if they do not
+already exist.])
+
+m4_bullet([dnl
+In step #3 above, all files in any source data directories specified in
+the m4_ref(DB_CONFIG) file will be copied to the target data directories.])
+
+m4_bullet([dnl
+In step #4 above, log files will be copied from any log directory specified
+in the m4_ref(DB_CONFIG) file, instead of from the default locations.])
+
+m4_bullet([dnl
+The m4_ref(DB_CONFIG) configuration file will be copied from the source
+directory to the target directory, and subsequently used for configuration
+if recovery is run in the target directory.])
+m4_bulletend
+
+m4_p([dnl
+Care should be taken with the m4_option(D) option where data and log
+directories are named relative to the source directory but are not
+subdirectories (that is, the name includes the element "..")
+Specifically, the constructed target directory names must be meaningful
+and distinct from the source directory names, otherwise running recovery
+in the target directory might corrupt the source data files.])
+
+m4_p([m4_bold([dnl
+It is an error to use absolute pathnames for data or log directories in
+this mode, as the m4_ref(DB_CONFIG) configuration file copied into the
+target directory would then point at the source directories and running
+recovery would corrupt the source data files.])])])
+
+m4_tagopt(d, [dnl
+Specify one or more directories that contain data files to be copied to
+the target directory.
+m4_p([m4_bold([dnl
+As all database files are copied into a single target directory, files
+named the same, stored in different source directories, would overwrite
+each other when copied to the target directory.])])
+m4_p([dnl
+Please note the database environment recovery log references database
+files as they are named by the application program. m4_bold([If the
+application uses absolute or relative pathnames to name database files,
+(rather than filenames and the m4_refT(dbenv_set_data_dir) or the
+m4_ref(DB_CONFIG) configuration file to specify filenames), running
+recovery in the target directory may not properly find the copies of
+the files or might even find the source files, potentially resulting in
+corruption.])])])
+
+m4_tagopt(h, [dnl
+Specify the target directory for the backup, that is, the database
+environment home directory.])
+
+m4_tagopt(l, [dnl
+Specify a source directory that contains log files; if none is specified,
+the database environment home directory will be searched for log files.])
+
+m4_Pflag
+
+m4_tagopt(u, [dnl
+Update a pre-existing hot backup snapshot by copying in new log files.
+If the m4_option(u) option is specified, no databases will be copied
+into the target directory.])
+
+m4_Vflag
+
+m4_tagopt(v, [dnl
+Run in verbose mode, listing operations as they are done.])
+m4_tagend
+
+m4_detach(db_hotbackup, uses)
+
+m4_utilexit(db_hotbackup)
+
+m4_header([Environment Variables])
+
+m4_utilenv(db_hotbackup)
+
+m4_page_footer
diff --git a/db/docs_src/utility/db_load.so b/db/docs_src/utility/db_load.so
new file mode 100644
index 000000000..ceb19e3e9
--- /dev/null
+++ b/db/docs_src/utility/db_load.so
@@ -0,0 +1,186 @@
+m4_comment([$Id: db_load.so,v 10.43 2006/10/05 01:06:08 bostic Exp $])
+
+include(m4/m4.utility)
+define(M4PAGELOCAL, db_load)
+
+m4_util_header(db_load, [dnl
+db_load m4_utilarg(nTV) m4_utilarg([c name=value]) m4_utilarg([f file])
+ m4_utilarg([h home]) m4_utilarg([P password]) m4_utilarg([t btree | hash | queue | recno]) file
+db_load m4_utilarg([r lsn | fileid]) m4_utilarg([h home]) m4_utilarg([P password]) file])
+m4_idefz(utility to @load text files into databases)
+
+m4_p([dnl
+The m4_ref(db_load) utility reads from the standard input and loads it
+into the database m4_arg(file). The database m4_arg(file) is created if
+it does not already exist.])
+
+m4_p([dnl
+The input to m4_ref(db_load) must be in the output format specified by the
+m4_ref(db_dump) utility, utilities, or as specified for the m4_option(T)
+below.])
+
+m4_p([The options are as follows:])
+
+m4_tagbegin
+m4_tagopt(c, [dnl
+Specify configuration options ignoring any value they may have based on
+the input. The command-line format is m4_bold(name=value). See the
+Supported Keywords section below for a list of keywords supported by
+the m4_option(c) option.])
+
+m4_tagopt(f, [dnl
+Read from the specified m4_arg(input) file instead of from the standard
+input.])
+
+m4_tagopt(h, [dnl
+Specify a home directory for the database environment.
+m4_p([dnl
+If a home directory is specified, the database environment is opened
+using the m4_ref(DB_INIT_LOCK), m4_ref(DB_INIT_LOG),
+m4_ref(DB_INIT_MPOOL), m4_ref(DB_INIT_TXN), and m4_ref(DB_USE_ENVIRON)
+flags to m4_ref(dbenv_open). (This means that m4_ref(db_load) can be
+used to load data into databases while they are in use by other
+processes.) If the m4_ref(dbenv_open) call fails, or if no home
+directory is specified, the database is still updated, but the
+environment is ignored; for example, no locking is done.])])
+
+m4_tagopt(n, [dnl
+Do not overwrite existing keys in the database when loading into an
+already existing database. If a key/data pair cannot be loaded into the
+database for this reason, a warning message is displayed on the standard
+error output, and the key/data pair are skipped.])
+
+m4_Pflag
+
+m4_tagopt(r, [dnl
+Reset the database's file ID or log sequence numbers (LSNs).
+m4_p([dnl
+All database pages in transactional environments contain references to
+the environment's log records. In order to copy a database into a
+different database environment, database page references to the old
+environment's log records must be reset, otherwise data corruption can
+occur when the database is modified in the new environment. The
+m4_option(r) m4_arg(lsn) option resets a database's log sequence
+numbers.])
+m4_p([dnl
+All databases contain an ID string used to identify the database in the
+database environment cache. If a database is copied, and used in the
+same environment as another file with the same ID string, corruption can
+occur. The m4_option(r) m4_arg(fileid) option resets a database's file
+ID to a new value.])
+m4_p([m4_bold([dnl
+In both cases, the physical file specified by the m4_arg(file) argument
+is modified in-place.])])])
+
+m4_tagopt(T, [dnl
+The m4_option(T) option allows non-m4_db applications to easily load text
+files into databases.
+m4_p([dnl
+If the database to be created is of type Btree or Hash, or the keyword
+m4_bold(keys) is specified as set, the input must be paired lines of text,
+where the first line of the pair is the key item, and the second line of
+the pair is its corresponding data item. If the database to be created
+is of type Queue or Recno and the keywork m4_bold(keys) is not set, the
+input must be lines of text, where each line is a new data item for the
+database.])
+m4_p([dnl
+A simple escape mechanism, where newline and backslash (m4_backslash())
+characters are special, is applied to the text input. Newline characters
+are interpreted as record separators. Backslash characters in the text
+will be interpreted in one of two ways: If the backslash character
+precedes another backslash character, the pair will be interpreted as a
+literal backslash. If the backslash character precedes any other
+character, the two characters following the backslash will be interpreted
+as a hexadecimal specification of a single character; for example,
+m4_backslash(0a) is a newline character in the ASCII character set.])
+
+m4_p([dnl
+For this reason, any backslash or newline characters that naturally
+occur in the text input must be escaped to avoid misinterpretation by
+m4_ref(db_load).])
+m4_p([dnl
+If the m4_option(T) option is specified, the underlying access method type
+must be specified using the m4_option(t) option.])])
+
+m4_tagopt(t, [dnl
+Specify the underlying access method. If no m4_option(t) option is
+specified, the database will be loaded into a database of the same type
+as was dumped; for example, a Hash database will be created if a Hash
+database was dumped.
+m4_p([dnl
+Btree and Hash databases may be converted from one to the other. Queue
+and Recno databases may be converted from one to the other. If the
+m4_bold(-k) option was specified on the call to m4_ref(db_dump) then Queue
+and Recno databases may be converted to Btree or Hash, with the key being
+the integer record number.])])
+
+m4_Vflag
+
+m4_tagend
+
+m4_detach(db_load, may be used with)
+
+m4_p([dnl
+The m4_ref(db_load) utility exits 0 on success, 1 if one or more key/data
+pairs were not loaded into the database because the key already existed,
+and __GT__1 if an error occurs.])
+
+m4_section(Examples)
+m4_p([dnl
+The m4_ref(db_load) utility can be used to load text files into databases.
+For example, the following command loads the standard UNIX
+m4_italic(/etc/passwd) file into a database, with the login name as the
+key item and the entire password entry as the data item:])
+
+m4_indent([dnl
+awk -F: '{print $1; print $0}' __LT__ /etc/passwd |
+ sed 's/m4_backslash()m4_backslash()/m4_backslash()m4_backslash()m4_backslash()m4_backslash()/g' | db_load -T -t hash passwd.db])
+
+m4_p([dnl
+Note that backslash characters naturally occurring in the text are escaped
+to avoid interpretation as escape characters by m4_ref(db_load).])
+
+m4_header([Environment Variables])
+
+m4_utilenv(db_load)
+
+m4_section(Supported Keywords)
+The following keywords are supported for the m4_option(c) command-line
+option to the m4_ref(db_load) utility. See m4_ref(dbh_open) for further
+discussion of these keywords and what values should be specified.
+
+m4_p([dnl
+The parenthetical listing specifies how the value part of the
+m4_bold(name=value) pair is interpreted. Items listed as (boolean)
+expect value to be m4_bold(1) (set) or m4_bold(0) (unset). Items listed
+as (number) convert value to a number. Items listed as (string) use
+the string value without modification.])
+
+m4_tagbegin
+
+m4_tagns([bt_minkey (number)], [The minimum number of keys per page.])
+m4_tagns([chksum (boolean)], [Enable page checksums.])
+m4_tagns([database (string)], [The database to load.])
+m4_tagns([db_lorder (number)], [dnl
+The byte order for integers in the stored database metadata.])
+m4_tagns([db_pagesize (number)], [dnl
+The size of database pages, in bytes.])
+m4_tagns([duplicates (boolean)], [The value of the m4_ref(DB_DUP) flag.])
+m4_tagns([dupsort (boolean)], [The value of the m4_ref(DB_DUPSORT) flag.])
+m4_tagns([extentsize (number)], [dnl
+The size of database extents, in pages, for Queue databases configured
+to use extents.])
+m4_tagns([h_ffactor (number)], [The density within the Hash database.])
+m4_tagns([h_nelem (number)], [The size of the Hash database.])
+m4_tagns([keys (boolean)], [dnl
+Specify whether keys are present for Queue or Recno databases.])
+m4_tagns([re_len (number)], [dnl
+Specify fixed-length records of the specified length.])
+m4_tagns([re_pad (string)], [Specify the fixed-length record pad character.])
+m4_tagns([recnum (boolean)], [The value of the m4_ref(DB_RECNUM) flag.])
+m4_tagns([renumber (boolean)], [The value of the m4_ref(DB_RENUMBER) flag.])
+m4_tagns([subdatabase (string)], [The subdatabase to load.])
+
+m4_tagend
+
+m4_page_footer
diff --git a/db/docs_src/utility/db_printlog.so b/db/docs_src/utility/db_printlog.so
new file mode 100644
index 000000000..9613e992d
--- /dev/null
+++ b/db/docs_src/utility/db_printlog.so
@@ -0,0 +1,45 @@
+m4_comment([$Id: db_printlog.so,v 10.16 2006/10/05 01:06:08 bostic Exp $])
+
+include(m4/m4.utility)
+define(M4PAGELOCAL, db_printlog)
+
+m4_util_header(db_printlog, [dnl
+db_printlog m4_utilarg(NrV) m4_utilarg([b start-LSN]) m4_utilarg([e stop-LSN]) m4_utilarg([h home]) m4_utilarg([P password])])
+m4_idefz(utility to display @log files as text)
+
+m4_p([dnl
+The m4_ref(db_printlog) utility is a debugging utility that dumps m4_db
+log files in a human-readable format.])
+
+m4_p([The options are as follows:])
+
+m4_tagbegin
+m4_tagopt(b, [dnl
+Display log records starting at log sequence number (LSN) m4_arg(start-LSN);
+m4_arg(start-LSN) is specified as a file number, followed by a slash (/)
+character, followed by an offset number, with no intervening whitespace.])
+m4_tagopt(e, [dnl
+Stop displaying log records at log sequence number (LSN) m4_arg(stop-LSN);
+m4_arg(stop-LSN) is specified as a file number, followed by a slash (/)
+character, followed by an offset number, with no intervening whitespace.])
+m4_hflag
+m4_Nflag
+m4_Pflag
+m4_tagopt(r, [Read the log files in reverse order.])
+m4_Vflag
+m4_tagend
+
+m4_p([dnl
+For more information on the m4_ref(db_printlog) output and using it to
+debug applications, see m4_link(M4RELDIR/ref/debug/printlog, Reviewing
+m4_db log files).])
+
+m4_detach(db_printlog, uses)
+
+m4_utilexit(db_printlog)
+
+m4_header([Environment Variables])
+
+m4_utilenv(db_printlog)
+
+m4_page_footer
diff --git a/db/docs_src/utility/db_recover.so b/db/docs_src/utility/db_recover.so
new file mode 100644
index 000000000..e0f6c76a1
--- /dev/null
+++ b/db/docs_src/utility/db_recover.so
@@ -0,0 +1,89 @@
+m4_comment([$Id: db_recover.so,v 10.30 2006/10/12 22:09:38 bostic Exp $])
+
+include(m4/m4.utility)
+define(M4PAGELOCAL, db_recover)
+
+m4_util_header(db_recover, [dnl
+db_recover m4_utilarg(cefVv) m4_utilarg([h home]) m4_utilarg([P password]) m4_utilarg([t __LB____LB__CC__RB__YY__RB__MMDDhhmm__LB__.SS__RB____RB__])])
+m4_idefz(utility to @recover database environments)
+
+m4_p([dnl
+The m4_ref(db_recover) utility must be run after an unexpected application,
+m4_db, or system failure to restore the database to a consistent state.
+All committed transactions are guaranteed to appear after m4_ref(db_recover)
+has run, and all uncommitted transactions will be completely undone.])
+
+m4_p([The options are as follows:])
+
+m4_tagbegin
+
+m4_tagopt(c, [Perform catastrophic recovery instead of normal recovery.])
+
+m4_tagopt(e, [Retain the environment after running recovery. This option
+will rarely be used unless a DB_CONFIG file is present in the home
+directory. If a DB_CONFIG file is not present, then the regions will be
+created with default parameter values.])
+
+m4_tagopt(f, [Display a message on the standard output showing the
+percent of recovery completed.])
+
+m4_hflag
+
+m4_Pflag
+
+m4_tagopt(t, [dnl
+Recover to the time specified rather than to the most current possible
+date. The timestamp argument should be in the form
+__LB____LB__CC__RB__YY__RB__MMDDhhmm__LB__.SS__RB__ where each pair of
+letters represents the following:])
+m4_tagbegin
+m4_tag(CC, [The first two digits of the year (the century).])
+m4_tagns(YY, [dnl
+The second two digits of the year. If "YY" is specified, but "CC" is not,
+a value for "YY" between 69 and 99 results in a "CC" value of 19. Otherwise,
+a "CC" value of 20 is used.])
+m4_tagns(MM, [The month of the year, from 1 to 12.])
+m4_tagns(DD, [The day of the month, from 1 to 31.])
+m4_tagns(hh, [The hour of the day, from 0 to 23.])
+m4_tagns(mm, [The minute of the hour, from 0 to 59.])
+m4_tagns(SS, [The second of the minute, from 0 to 61.])
+m4_tagend
+m4_p([dnl
+If the "CC" and "YY" letter pairs are not specified, the values default
+to the current year. If the "SS" letter pair is not specified, the value
+defaults to 0.])
+
+m4_Vflag
+
+m4_tagopt(v, [Run in verbose mode.])
+
+m4_tagend
+
+m4_p([dnl
+In the case of catastrophic recovery, an archival copy -- or
+m4_italic(snapshot) -- of all database files must be restored along with
+all of the log files written since the database file snapshot was made.
+(If disk space is a problem, log files may be referenced by symbolic
+links). For further information on creating a database snapshot, see
+m4_link(M4RELDIR/ref/transapp/archival, [Archival Procedures]). For
+further information on performing recovery, see
+m4_link(M4RELDIR/ref/transapp/recovery, [Recovery Procedures]).])
+
+m4_p([dnl
+If the failure was not catastrophic, the files present on the system at the
+time of failure are sufficient to perform recovery.])
+
+m4_p([dnl
+If log files are missing, m4_ref(db_recover) will identify the missing
+log file(s) and fail, in which case the missing log files need to be
+restored and recovery performed again.])
+
+m4_detach(db_recover, uses)
+
+m4_utilexit(db_recover)
+
+m4_header([Environment Variables])
+
+m4_utilenv(db_recover)
+
+m4_page_footer
diff --git a/db/docs_src/utility/db_stat.so b/db/docs_src/utility/db_stat.so
new file mode 100644
index 000000000..c2dde3470
--- /dev/null
+++ b/db/docs_src/utility/db_stat.so
@@ -0,0 +1,110 @@
+m4_comment([$Id: db_stat.so,v 10.47 2006/10/05 01:06:08 bostic Exp $])
+
+include(m4/m4.utility)
+define(M4PAGELOCAL, db_stat)
+
+m4_util_header(db_stat, [dnl
+db_stat m4_option(d) m4_arg(file) m4_utilarg(fN) m4_utilarg([h home]) m4_utilarg([P password]) m4_utilarg([s database])
+
+db_stat m4_utilarg(cEelmNrtVZ) m4_utilarg([C Aclop]) m4_utilarg([h home]) m4_utilarg([L A]) m4_utilarg([M A]) m4_utilarg([R A]) m4_utilarg([P password])])
+
+m4_idefz(utility to display database and environment @statistics)
+
+m4_p([dnl
+The m4_ref(db_stat) utility displays statistics for m4_db environments.])
+
+m4_p([The options are as follows:])
+
+m4_tagbegin
+m4_tagopt(C, [dnl
+Display detailed information about the locking subsystem.
+m4_tagbegin
+m4_tag(A, [Display all information.])
+m4_tagns(c, [Display lock conflict matrix.])
+m4_tagns(l, [Display lockers within hash chains.])
+m4_tagns(o, [Display lock objects within hash chains.])
+m4_tagns(p, [Display locking subsystem parameters.])
+m4_tagend])
+
+m4_tagopt(c, [dnl
+Display locking subsystem statistics, as described in m4_ref(lock_stat).])
+
+m4_tagopt(d, [dnl
+Display database statistics for the specified file, as described in
+m4_ref(dbh_stat).
+m4_p([dnl
+If the database contains multiple databases and the m4_option(s) flag is
+not specified, the statistics are for the internal database that describes
+the other databases the file contains, and not for the file as a whole.])])
+
+m4_tagopt(E, [dnl
+Display detailed information about the database environment.])
+
+m4_tagopt(e, [dnl
+Display information about the database environment, including
+all configured subsystems of the database environment.])
+
+m4_tagopt(f, [Display only those database statistics that can be
+acquired without traversing the database.])
+
+m4_hflag
+
+m4_tagopt(l, [dnl
+Display logging subsystem statistics, as described in m4_ref(log_stat).])
+
+m4_tagopt(M, [dnl
+Display detailed information about the cache.])
+m4_tagbegin
+m4_tag(A, [Display all information.])
+m4_tagns(h, [Display buffers within hash chains.])
+m4_tagend
+
+m4_tagopt(m, [dnl
+Display cache statistics, as described in m4_ref(memp_stat).])
+
+m4_Nflag
+
+m4_Pflag
+
+m4_tagopt(R, [dnl
+Display detailed information about the replication subsystem.])
+m4_tagbegin
+m4_tag(A, [Display all information.])
+m4_tagend
+
+m4_tagopt(r, [dnl
+Display replication statistics, as described in m4_ref(rep_stat).])
+
+m4_tagopt(s, [dnl
+Display statistics for the specified database contained in the file
+specified with the m4_option(d) flag.])
+
+m4_tagopt(t, [dnl
+Display transaction subsystem statistics, as described in m4_ref(txn_stat).])
+
+m4_Vflag
+
+m4_tagopt(Z, [dnl
+Reset the statistics after reporting them; valid only with the m4_option(C),
+m4_option(c), m4_option(E), m4_option(e), m4_option(L), m4_option(l),
+m4_option(M), m4_option(m), m4_option(R), m4_option(r), and m4_option(t)
+options.])
+
+m4_tagend
+
+m4_p([dnl
+Values normally displayed in quantities of bytes are displayed as a
+combination of gigabytes (GB), megabytes (MB), kilobytes (KB), and bytes
+(B). Otherwise, values smaller than 10 million are displayed without
+any special notation, and values larger than 10 million are displayed
+as a number followed by "M".])
+
+m4_detach(db_stat, may be used with)
+
+m4_utilexit(db_stat)
+
+m4_header([Environment Variables])
+
+m4_utilenv(db_stat)
+
+m4_page_footer
diff --git a/db/docs_src/utility/db_upgrade.so b/db/docs_src/utility/db_upgrade.so
new file mode 100644
index 000000000..7a1b35989
--- /dev/null
+++ b/db/docs_src/utility/db_upgrade.so
@@ -0,0 +1,72 @@
+m4_comment([$Id: db_upgrade.so,v 1.10 2006/10/05 01:06:08 bostic Exp $])
+
+include(m4/m4.utility)
+define(M4PAGELOCAL, db_upgrade)
+
+m4_util_header(db_upgrade, [dnl
+db_upgrade m4_utilarg(NsVv) m4_utilarg([h home]) m4_utilarg([P password]) file ...])
+m4_idefz(utility to upgrade @database files, utility to @upgrade database files)
+
+m4_p([dnl
+The m4_ref(db_upgrade) utility upgrades the m4_db version of one or more
+files and the databases they contain to the current release version.])
+
+m4_p([The options are as follows:])
+
+m4_tagbegin
+
+m4_hflag
+
+m4_Nflag
+
+m4_Pflag
+
+m4_tagopt(s, [dnl
+This flag is only meaningful when upgrading databases from releases
+before the m4_db 3.1 release.
+m4_p([dnl
+As part of the upgrade from the m4_db 3.0 release to the 3.1 release,
+the on-disk format of duplicate data items changed. To correctly upgrade
+the format requires that applications specify whether duplicate data
+items in the database are sorted or not. Specifying the m4_option(s)
+flag means that the duplicates are sorted; otherwise, they are assumed
+to be unsorted. Incorrectly specifying the value of this flag may lead
+to database corruption.])
+m4_p([dnl
+Because the m4_ref(db_upgrade) utility upgrades a physical file
+(including all the databases it contains), it is not possible to use
+m4_ref(db_upgrade) to upgrade files where some of the databases it
+includes have sorted duplicate data items, and some of the databases it
+includes have unsorted duplicate data items. If the file does not have
+more than a single database, if the databases do not support duplicate
+data items, or if all the databases that support duplicate data items
+support the same style of duplicates (either sorted or unsorted),
+m4_ref(db_upgrade) will work correctly as long as the m4_option(s) flag
+is correctly specified. Otherwise, the file cannot be upgraded using
+m4_ref(db_upgrade), and must be upgraded manually using the
+m4_ref(db_dump) and m4_ref(db_load) utilities.])])
+
+m4_Vflag
+
+m4_tagopt(v, [dnl
+Run in verbose mode, displaying a message for each successful upgrade.])
+
+m4_tagend
+
+m4_p([dnl
+m4_bold([It is important to realize that m4_db database upgrades are done
+in place, and so are potentially destructive.]) This means that if the
+system crashes during the upgrade procedure, or if the upgrade procedure
+runs out of disk space, the databases may be left in an inconsistent and
+unrecoverable state. See m4_link(M4RELDIR/ref/am/upgrade, [Upgrading
+databases]) for more information.])
+
+m4_detach(db_upgrade, may be used with)
+
+m4_utilexit(db_upgrade)
+
+m4_header([Environment Variables])
+
+m4_utilenv(db_upgrade)
+
+m4_page_footer
diff --git a/db/docs_src/utility/db_verify.so b/db/docs_src/utility/db_verify.so
new file mode 100644
index 000000000..d14a6192d
--- /dev/null
+++ b/db/docs_src/utility/db_verify.so
@@ -0,0 +1,59 @@
+m4_comment([$Id: db_verify.so,v 10.11 2006/10/05 01:06:08 bostic Exp $])
+
+include(m4/m4.utility)
+define(M4PAGELOCAL, db_verify)
+
+m4_util_header(db_verify, [dnl
+db_verify m4_utilarg(NoqV) m4_utilarg([h home]) m4_utilarg([P password]) file ...])
+m4_idefz(utility to verify @database files, utility to @verify database files)
+
+m4_p([dnl
+The m4_ref(db_verify) utility verifies the structure of one or more
+files and the databases they contain.])
+
+m4_p([The options are as follows:])
+
+m4_tagbegin
+
+m4_hflag
+
+m4_tagopt(o, [dnl
+Skip the database checks for btree and duplicate sort order and for
+hashing.
+m4_p([dnl
+If the file being verified contains databases with non-default
+comparison or hashing configurations, calling the m4_ref(db_verify)
+utility without the m4_option(o) flag will usually return failure. The
+m4_option(o) flag causes m4_ref(db_verify) to ignore database sort or
+hash ordering and allows m4_ref(db_verify) to be used on these files.
+To fully verify these files, verify them explicitly using the
+m4_refT(dbh_verify), after configuring the correct comparison or hashing
+functions.])])
+
+m4_Nflag
+
+m4_Pflag
+
+m4_tagopt(q, [dnl
+Suppress the printing of any error descriptions, simply exit success or
+failure.])
+
+m4_Vflag
+
+m4_tagend
+
+m4_p([m4_bold([dnl
+The m4_ref(db_verify) utility does not perform any locking, even in
+m4_db environments that are configured with a locking subsystem. As
+such, it should only be used on files that are not being modified by
+another thread of control.])])
+
+m4_detach(db_verify, may be used with)
+
+m4_utilexit(db_verify)
+
+m4_header([Environment Variables])
+
+m4_utilenv(db_verify)
+
+m4_page_footer
diff --git a/db/docs_src/utility/index.so b/db/docs_src/utility/index.so
new file mode 100644
index 000000000..96cd2a325
--- /dev/null
+++ b/db/docs_src/utility/index.so
@@ -0,0 +1,30 @@
+m4_comment([$Id: index.so,v 10.19 2007/05/04 14:13:45 bostic Exp $])
+
+m4_page_title([m4_db Supporting Utilities])
+
+m4_table_begin(, _center)
+
+m4_table_header(Utility, Description)
+m4_table_element(m4_ref(berkeley_db_svc), RPC server utility)
+m4_table_element(m4_ref(db_archive), Archival utility)
+m4_table_element(m4_ref(db_checkpoint), Transaction checkpoint utility)
+m4_table_element(m4_ref(db_codegen), Code generation utility)
+m4_table_element(m4_ref(db_deadlock), Deadlock detection utility)
+m4_table_element(m4_ref(db_dump), Database dump utility)
+m4_table_element(m4_ref(db_hotbackup), Hot backup utility)
+m4_table_element(m4_ref(db_load), Database load utility)
+m4_table_element(m4_ref(db_printlog), Transaction log display utility)
+m4_table_element(m4_ref(db_recover), Recovery utility)
+m4_table_element(m4_ref(db_stat), Statistics utility)
+m4_table_element(m4_ref(db_upgrade), Database upgrade utility)
+m4_table_element(m4_ref(db_verify), Verification utility)
+
+ifelse(M4PRODUCT, XML, [dnl
+m4_table_element(m4_ref(dbxml_dump), XML container dump utility)
+m4_table_element(m4_ref(dbxml_load), XML container load utility)
+m4_table_element(m4_ref(dbxml_load_container), Load XML files into an XML container)
+m4_table_element(m4_ref(dbxml), m4_xml interactive shell)])
+
+m4_table_end
+
+m4_page_footer
diff --git a/db/env/db_salloc.c b/db/env/db_salloc.c
deleted file mode 100644
index edd4fcb8e..000000000
--- a/db/env/db_salloc.c
+++ /dev/null
@@ -1,356 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
- *
- * $Id: db_salloc.c,v 12.10 2006/08/24 14:45:38 bostic Exp $
- */
-
-#include "db_config.h"
-
-#include "db_int.h"
-
-/*
- * Implement shared memory region allocation, using simple first-fit algorithm.
- * The model is that we take a "chunk" of shared memory store and begin carving
- * it up into areas, similarly to how malloc works. We do coalescing on free.
- *
- * The "len" field in the __data struct contains the length of the free region
- * (less the size_t bytes that holds the length). We use the address provided
- * by the caller to find this length, which allows us to free a chunk without
- * requiring that the caller pass in the length of the chunk they're freeing.
- */
-SH_LIST_HEAD(__head);
-struct __data {
- size_t len;
- SH_LIST_ENTRY links;
-};
-
-#define ILLEGAL_SIZE 1 /* An illegal size. */
-
-/*
- * __db_shalloc_init --
- * Initialize the area as one large chunk.
- *
- * PUBLIC: void __db_shalloc_init __P((REGINFO *, size_t));
- */
-void
-__db_shalloc_init(infop, size)
- REGINFO *infop;
- size_t size;
-{
- struct __data *elp;
- struct __head *hp;
-
- /* No initialization needed for heap memory regions. */
- if (F_ISSET(infop->dbenv, DB_ENV_PRIVATE))
- return;
-
- hp = infop->addr;
- SH_LIST_INIT(hp);
-
- elp = (struct __data *)(hp + 1);
- elp->len = (size - sizeof(struct __head)) - sizeof(elp->len);
- SH_LIST_INSERT_HEAD(hp, elp, links, __data);
-}
-
-/*
- * __db_shalloc_size --
- * Return the space needed for an allocation, including alignment.
- *
- * PUBLIC: size_t __db_shalloc_size __P((size_t, size_t));
- */
-size_t
-__db_shalloc_size(len, align)
- size_t len, align;
-{
- /* Never allocate less than the size of a struct __data. */
- if (len < sizeof(struct __data))
- len = sizeof(struct __data);
-
-#ifdef DIAGNOSTIC
- /* Add room for a guard byte. */
- ++len;
-#endif
-
- /* Never align to less than a uintmax_t boundary. */
- if (align <= sizeof(uintmax_t))
- align = sizeof(uintmax_t);
-
- return ((size_t)DB_ALIGN(len, align) + sizeof(struct __data));
-}
-
-/*
- * __db_shalloc --
- * Allocate space from the shared region.
- *
- * PUBLIC: int __db_shalloc __P((REGINFO *, size_t, size_t, void *));
- */
-int
-__db_shalloc(infop, len, align, retp)
- REGINFO *infop;
- size_t len, align;
- void *retp;
-{
- DB_ENV *dbenv;
- struct __data *elp;
- size_t *sp;
- int ret;
- void *p, *rp;
-
- dbenv = infop->dbenv;
-
- /* Never align to less than a uintmax_t boundary. */
- if (align <= sizeof(uintmax_t))
- align = sizeof(uintmax_t);
-
- /* In a private region, we call malloc for additional space. */
- if (F_ISSET(dbenv, DB_ENV_PRIVATE)) {
- /* Check to see if we're over our limit. */
- if (infop->allocated >= infop->max_alloc)
- return (ENOMEM);
-
- /* Add enough room for a size. */
- len += sizeof(size_t);
-
- /* Add enough room to guarantee alignment is possible. */
- len += align - 1;
-
- /* Allocate the space. */
- if ((ret = __os_malloc(dbenv, len, &p)) != 0)
- return (ret);
- infop->allocated += len;
-
- /* Store the size. */
- sp = p;
- *sp++ = len;
-
- /* Find the aligned location. */
- *(void **)retp = rp = ALIGNP_INC(sp, align);
-
- /* Fill in any gaps with illegal sizes. */
- for (; (void *)sp < rp; ++sp)
- *sp = ILLEGAL_SIZE;
-
- return (0);
- }
-
- /* Never allocate less than the size of a struct __data. */
- if (len < sizeof(struct __data))
- len = sizeof(struct __data);
-
-#ifdef DIAGNOSTIC
- /* Add room for a guard byte. */
- ++len;
-#endif
-
- p = infop->addr;
-
- /* Walk the list, looking for a slot. */
- SH_LIST_FOREACH(elp, (struct __head *)p, links, __data) {
- /*
- * Skip chunks that are too small to work. This avoids address
- * wrap-around in the subsequent calculations (if len were too
- * large).
- */
- if (elp->len < len)
- continue;
-
- /*
- * Calculate the value of the returned pointer if we were to
- * use this chunk.
- * + Find the end of the chunk.
- * + Subtract the memory the user wants.
- * + Find the closest previous correctly-aligned address.
- */
- rp = (u_int8_t *)elp + sizeof(size_t) + elp->len;
- rp = (u_int8_t *)rp - len;
- rp = ALIGNP_DEC(rp, align);
-
- /*
- * Rp may now point before elp->links, in which case the chunk
- * was too small, and we have to try again.
- */
- if ((u_int8_t *)rp < (u_int8_t *)&elp->links)
- continue;
-
- *(void **)retp = rp;
-#ifdef DIAGNOSTIC
- /*
- * At this point, whether or not we still need to split up a
- * chunk, retp is the address of the region we are returning,
- * and (u_int8_t *)elp + sizeof(size_t) + elp->len gives us
- * the address of the first byte after the end of the chunk.
- * Make the byte immediately before that the guard byte.
- */
- *((u_int8_t *)elp + sizeof(size_t) + elp->len - 1) = GUARD_BYTE;
-#endif
-
-#define SHALLOC_FRAGMENT 32
- /*
- * If there are at least SHALLOC_FRAGMENT additional bytes of
- * memory, divide the chunk into two chunks.
- */
- if ((u_int8_t *)rp >=
- (u_int8_t *)&elp->links + SHALLOC_FRAGMENT) {
- sp = rp;
- *--sp = elp->len -
- ((u_int8_t *)rp - (u_int8_t *)&elp->links);
- elp->len -= *sp + sizeof(size_t);
- return (0);
- }
-
- /*
- * Otherwise, we return the entire chunk, wasting some amount
- * of space to keep the list compact. However, because the
- * address we're returning to the user may not be the address
- * of the start of the region for alignment reasons, set the
- * size_t length fields back to the "real" length field to a
- * flag value, so that we can find the real length during free.
- */
- SH_LIST_REMOVE(elp, links, __data);
- for (sp = rp; (u_int8_t *)--sp >= (u_int8_t *)&elp->links;)
- *sp = ILLEGAL_SIZE;
- return (0);
- }
-
- return (ENOMEM);
-}
-
-/*
- * __db_shalloc_free --
- * Free space into the shared region.
- *
- * PUBLIC: void __db_shalloc_free __P((REGINFO *, void *));
- */
-void
-__db_shalloc_free(infop, ptr)
- REGINFO *infop;
- void *ptr;
-{
- DB_ENV *dbenv;
- struct __data *elp, *lastp, *newp;
- struct __head *hp;
- size_t free_size, *sp;
- int merged;
-
- dbenv = infop->dbenv;
-
- /*
- * Step back over flagged length fields to find the beginning of
- * the object and its real size.
- */
- for (sp = (size_t *)ptr; sp[-1] == ILLEGAL_SIZE; --sp)
- ;
- ptr = sp;
-
- newp = (struct __data *)((u_int8_t *)ptr - sizeof(size_t));
- free_size = newp->len;
-
- /* In a private region, we call free. */
- if (F_ISSET(dbenv, DB_ENV_PRIVATE)) {
- DB_ASSERT(dbenv, infop->allocated >= free_size);
- infop->allocated -= free_size;
-
- __os_free(dbenv, newp);
- return;
- }
-
-#ifdef DIAGNOSTIC
- /*
- * The "real size" includes the guard byte; it's just the last
- * byte in the chunk, and the caller never knew it existed.
- *
- * Check it to make sure it hasn't been stomped.
- */
- DB_ASSERT(dbenv, *((u_int8_t *)ptr + free_size - 1) == GUARD_BYTE);
-
- /* Trash the returned memory (including guard byte). */
- memset(ptr, CLEAR_BYTE, free_size);
-#endif
- /*
- * Walk the list, looking for where this entry goes.
- *
- * We keep the free list sorted by address so that coalescing is
- * trivial.
- *
- * XXX
- * Probably worth profiling this to see how expensive it is.
- */
- hp = (struct __head *)(infop->addr);
- for (elp = SH_LIST_FIRST(hp, __data), lastp = NULL;
- elp != NULL && (void *)elp < (void *)ptr;
- lastp = elp, elp = SH_LIST_NEXT(elp, links, __data))
- ;
-
- /*
- * Elp is either NULL (we reached the end of the list), or the slot
- * after the one that's being returned. Lastp is either NULL (we're
- * returning the first element of the list) or the element before the
- * one being returned.
- *
- * Check for coalescing with the next element.
- */
- merged = 0;
- if ((u_int8_t *)ptr + free_size == (u_int8_t *)elp) {
- newp->len += elp->len + sizeof(size_t);
- SH_LIST_REMOVE(elp, links, __data);
- if (lastp != NULL)
- SH_LIST_INSERT_AFTER(lastp, newp, links, __data);
- else
- SH_LIST_INSERT_HEAD(hp, newp, links, __data);
- merged = 1;
- }
-
- /* Check for coalescing with the previous element. */
- if (lastp != NULL && (u_int8_t *)lastp +
- lastp->len + sizeof(size_t) == (u_int8_t *)newp) {
- lastp->len += newp->len + sizeof(size_t);
-
- /*
- * If we have already put the new element into the list take
- * it back off again because it's just been merged with the
- * previous element.
- */
- if (merged)
- SH_LIST_REMOVE(newp, links, __data);
- merged = 1;
- }
-
- if (!merged) {
- if (lastp == NULL)
- SH_LIST_INSERT_HEAD(hp, newp, links, __data);
- else
- SH_LIST_INSERT_AFTER(lastp, newp, links, __data);
- }
-}
-
-/*
- * __db_shalloc_sizeof --
- * Return the size of a shalloc'd piece of memory.
- *
- * !!!
- * Note that this is from an internal standpoint -- it includes not only
- * the size of the memory being used, but also the extra alignment bytes
- * in front and, #ifdef DIAGNOSTIC, the guard byte at the end.
- *
- * PUBLIC: size_t __db_shalloc_sizeof __P((void *));
- */
-size_t
-__db_shalloc_sizeof(ptr)
- void *ptr;
-{
- struct __data *elp;
- size_t *sp;
-
- /*
- * Step back over flagged length fields to find the beginning of
- * the object and its real size.
- */
- for (sp = (size_t *)ptr; sp[-1] == ILLEGAL_SIZE; --sp)
- ;
-
- elp = (struct __data *)((u_int8_t *)sp - sizeof(size_t));
- return (elp->len);
-}
diff --git a/db/env/db_shash.c b/db/env/db_shash.c
deleted file mode 100644
index 15dccf139..000000000
--- a/db/env/db_shash.c
+++ /dev/null
@@ -1,114 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
- *
- * $Id: db_shash.c,v 12.4 2006/08/24 14:45:38 bostic Exp $
- */
-
-#include "db_config.h"
-
-#include "db_int.h"
-
-/*
- * Table of good hash values. Up to ~250,000 buckets, we use powers of 2.
- * After that, we slow the rate of increase by half. For each choice, we
- * then use a nearby prime number as the hash value.
- *
- * If a terabyte is the maximum cache we'll see, and we assume there are
- * 10 1K buckets on each hash chain, then 107374182 is the maximum number
- * of buckets we'll ever need.
- */
-static const struct {
- u_int32_t power;
- u_int32_t prime;
-} list[] = {
- { 32, 37}, /* 2^5 */
- { 64, 67}, /* 2^6 */
- { 128, 131}, /* 2^7 */
- { 256, 257}, /* 2^8 */
- { 512, 521}, /* 2^9 */
- { 1024, 1031}, /* 2^10 */
- { 2048, 2053}, /* 2^11 */
- { 4096, 4099}, /* 2^12 */
- { 8192, 8191}, /* 2^13 */
- { 16384, 16381}, /* 2^14 */
- { 32768, 32771}, /* 2^15 */
- { 65536, 65537}, /* 2^16 */
- { 131072, 131071}, /* 2^17 */
- { 262144, 262147}, /* 2^18 */
- { 393216, 393209}, /* 2^18 + 2^18/2 */
- { 524288, 524287}, /* 2^19 */
- { 786432, 786431}, /* 2^19 + 2^19/2 */
- { 1048576, 1048573}, /* 2^20 */
- { 1572864, 1572869}, /* 2^20 + 2^20/2 */
- { 2097152, 2097169}, /* 2^21 */
- { 3145728, 3145721}, /* 2^21 + 2^21/2 */
- { 4194304, 4194301}, /* 2^22 */
- { 6291456, 6291449}, /* 2^22 + 2^22/2 */
- { 8388608, 8388617}, /* 2^23 */
- { 12582912, 12582917}, /* 2^23 + 2^23/2 */
- { 16777216, 16777213}, /* 2^24 */
- { 25165824, 25165813}, /* 2^24 + 2^24/2 */
- { 33554432, 33554393}, /* 2^25 */
- { 50331648, 50331653}, /* 2^25 + 2^25/2 */
- { 67108864, 67108859}, /* 2^26 */
- { 100663296, 100663291}, /* 2^26 + 2^26/2 */
- { 134217728, 134217757}, /* 2^27 */
- { 201326592, 201326611}, /* 2^27 + 2^27/2 */
- { 268435456, 268435459}, /* 2^28 */
- { 402653184, 402653189}, /* 2^28 + 2^28/2 */
- { 536870912, 536870909}, /* 2^29 */
- { 805306368, 805306357}, /* 2^29 + 2^29/2 */
- {1073741824, 1073741827}, /* 2^30 */
- {0, 0}
-};
-
-/*
- * __db_tablesize --
- * Choose a size for the hash table.
- *
- * PUBLIC: u_int32_t __db_tablesize __P((u_int32_t));
- */
-u_int32_t
-__db_tablesize(n_buckets)
- u_int32_t n_buckets;
-{
- u_int i;
-
- /*
- * We try to be clever about how big we make the hash tables. Use a
- * prime number close to the "suggested" number of elements that will
- * be in the hash table. Use 64 as the minimum hash table size.
- *
- * Ref: Sedgewick, Algorithms in C, "Hash Functions"
- */
- if (n_buckets < 32)
- n_buckets = 32;
-
- for (i = 0; i < sizeof(list)/sizeof(list[0]); ++i)
- if (list[i].power >= n_buckets)
- return (list[i].prime);
- return (list[--i].prime);
-}
-
-/*
- * __db_hashinit --
- * Initialize a hash table that resides in shared memory.
- *
- * PUBLIC: void __db_hashinit __P((void *, u_int32_t));
- */
-void
-__db_hashinit(begin, nelements)
- void *begin;
- u_int32_t nelements;
-{
- u_int32_t i;
- SH_TAILQ_HEAD(hash_head) *headp;
-
- headp = (struct hash_head *)begin;
-
- for (i = 0; i < nelements; i++, headp++)
- SH_TAILQ_INIT(headp);
-}
diff --git a/db/env/env_alloc.c b/db/env/env_alloc.c
new file mode 100644
index 000000000..603e70dd5
--- /dev/null
+++ b/db/env/env_alloc.c
@@ -0,0 +1,455 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
+ *
+ * $Id: env_alloc.c,v 12.17 2007/05/22 18:35:39 ubell Exp $
+ */
+
+#include "db_config.h"
+
+#include "db_int.h"
+
+/*
+ * Implement shared memory region allocation. The initial list is a single
+ * memory "chunk" which is carved up as memory is requested. Chunks are
+ * coalesced when free'd. We maintain two linked-lists of chunks: a list of
+ * all chunks sorted by address, and a list of free chunks sorted by size.
+ *
+ * The ALLOC_LAYOUT structure is the governing structure for the chunk.
+ *
+ * The ALLOC_ELEMENT structure is the structure that describes any single
+ * chunk of memory, and is immediately followed by the user's memory.
+ *
+ * The internal memory chunks are always aligned to a uintmax_t boundary so
+ * we don't drop core accessing the fields of the ALLOC_ELEMENT structure.
+ *
+ * The memory chunks returned to the user are aligned to a uintmax_t boundary.
+ * This is enforced by terminating the ALLOC_ELEMENT structure with a uintmax_t
+ * field as that immediately precedes the user's memory.
+ *
+ * Any caller needing more than uintmax_t alignment is responsible for doing
+ * the work themselves.
+ */
+typedef struct __alloc_layout {
+ SH_TAILQ_HEAD(__addrq) addrq; /* Sorted by address */
+ SH_TAILQ_HEAD(__sizeq) sizeq; /* Sorted by size */
+
+#ifdef HAVE_STATISTICS
+ u_int32_t success; /* Successful allocations */
+ u_int32_t failure; /* Failed allocations */
+ u_int32_t freed; /* Free calls */
+ u_int32_t longest; /* Longest chain walked */
+#ifdef __ALLOC_DISPLAY_ALLOCATION_SIZES
+ u_int32_t pow2_size[32]; /* Allocation size tracking */
+#endif
+#endif
+ uintmax_t unused; /* Guarantee alignment */
+} ALLOC_LAYOUT;
+
+typedef struct __alloc_element {
+ SH_TAILQ_ENTRY addrq; /* List by address */
+ SH_TAILQ_ENTRY sizeq; /* List by size */
+
+ /*
+ * The "len" field is the total length of the chunk, not the size
+ * available to the caller.
+ */
+ size_t len; /* Chunk length */
+
+ /*
+ * The "ulen" field is the length returned to the caller.
+ *
+ * Set to 0 if the chunk is not currently in use.
+ */
+ uintmax_t ulen; /* User's length */
+} ALLOC_ELEMENT;
+
+/*
+ * __env_alloc_init --
+ * Initialize the area as one large chunk.
+ *
+ * PUBLIC: void __env_alloc_init __P((REGINFO *, size_t));
+ */
+void
+__env_alloc_init(infop, size)
+ REGINFO *infop;
+ size_t size;
+{
+ DB_ENV *dbenv;
+ ALLOC_ELEMENT *elp;
+ ALLOC_LAYOUT *head;
+
+ dbenv = infop->dbenv;
+
+ /* No initialization needed for heap memory regions. */
+ if (F_ISSET(dbenv, DB_ENV_PRIVATE))
+ return;
+
+ /*
+ * The first chunk of memory is the ALLOC_LAYOUT structure.
+ */
+ head = infop->addr;
+ SH_TAILQ_INIT(&head->addrq);
+ SH_TAILQ_INIT(&head->sizeq);
+ STAT((head->success = head->failure = head->freed = 0));
+ COMPQUIET(head->unused, 0);
+
+ /*
+ * The rest of the memory is the first available chunk.
+ */
+ elp = (ALLOC_ELEMENT *)((u_int8_t *)head + sizeof(ALLOC_LAYOUT));
+ elp->len = size - sizeof(ALLOC_LAYOUT);
+ elp->ulen = 0;
+
+ SH_TAILQ_INSERT_HEAD(&head->addrq, elp, addrq, __alloc_element);
+ SH_TAILQ_INSERT_HEAD(&head->sizeq, elp, sizeq, __alloc_element);
+}
+
+/*
+ * The length, the ALLOC_ELEMENT structure and an optional guard byte,
+ * rounded up to standard alignment.
+ */
+#ifdef DIAGNOSTIC
+#define DB_ALLOC_SIZE(len) \
+ (size_t)DB_ALIGN((len) + sizeof(ALLOC_ELEMENT) + 1, sizeof(uintmax_t))
+#else
+#define DB_ALLOC_SIZE(len) \
+ (size_t)DB_ALIGN((len) + sizeof(ALLOC_ELEMENT), sizeof(uintmax_t))
+#endif
+
+/*
+ * __env_alloc_overhead --
+ * Return the overhead needed for an allocation.
+ *
+ * PUBLIC: size_t __env_alloc_overhead __P((void));
+ */
+size_t
+__env_alloc_overhead()
+{
+ return (sizeof(ALLOC_ELEMENT));
+}
+
+/*
+ * __env_alloc_size --
+ * Return the space needed for an allocation, including alignment.
+ *
+ * PUBLIC: size_t __env_alloc_size __P((size_t));
+ */
+size_t
+__env_alloc_size(len)
+ size_t len;
+{
+ return (DB_ALLOC_SIZE(len));
+}
+
+/*
+ * __env_alloc --
+ * Allocate space from the shared region.
+ *
+ * PUBLIC: int __env_alloc __P((REGINFO *, size_t, void *));
+ */
+int
+__env_alloc(infop, len, retp)
+ REGINFO *infop;
+ size_t len;
+ void *retp;
+{
+ ALLOC_ELEMENT *elp, *frag, *elp_tmp;
+ ALLOC_LAYOUT *head;
+ DB_ENV *dbenv;
+ size_t total_len;
+ u_int8_t *p;
+ int ret;
+#ifdef HAVE_STATISTICS
+ u_long st_search;
+#endif
+
+ dbenv = infop->dbenv;
+
+ *(void **)retp = NULL;
+
+ /*
+ * In a heap-backed environment, we call malloc for additional space.
+ * (Malloc must return memory correctly aligned for our use.)
+ *
+ * In a heap-backed environment, memory is laid out as follows:
+ *
+ * { size_t total-length } { user-memory } { guard-byte }
+ */
+ if (F_ISSET(dbenv, DB_ENV_PRIVATE)) {
+ /* Check if we're over the limit. */
+ if (infop->allocated >= infop->max_alloc)
+ return (ENOMEM);
+
+ /* We need an additional size_t to hold the length. */
+ len += sizeof(size_t);
+
+#ifdef DIAGNOSTIC
+ /* Plus one byte for the guard byte. */
+ ++len;
+#endif
+ /* Allocate the space. */
+ if ((ret = __os_malloc(dbenv, len, &p)) != 0)
+ return (ret);
+ infop->allocated += len;
+
+ *(size_t *)p = len;
+#ifdef DIAGNOSTIC
+ p[len - 1] = GUARD_BYTE;
+#endif
+ *(void **)retp = p + sizeof(size_t);
+ return (0);
+ }
+
+ head = infop->addr;
+
+ total_len = DB_ALLOC_SIZE(len);
+#ifdef __ALLOC_DISPLAY_ALLOCATION_SIZES
+ STAT((++head->pow2_size[__db_log2(len) - 1]));
+#endif
+
+ /*
+ * If the chunk can be split into two pieces, with the fragment holding
+ * at least 64 bytes of memory, we divide the chunk into two parts.
+ */
+#define SHALLOC_FRAGMENT (sizeof(ALLOC_ELEMENT) + 64)
+
+ /*
+ * Walk the size queue, looking for the smallest slot that satisfies
+ * the request.
+ */
+ elp = NULL;
+ STAT((st_search = 0));
+ SH_TAILQ_FOREACH(elp_tmp, &head->sizeq, sizeq, __alloc_element) {
+ STAT((++st_search));
+ if (elp_tmp->len < total_len)
+ break;
+ elp = elp_tmp;
+ /*
+ * We might have a long list of chunks of the same size. Stop
+ * looking if we won't fragment memory by picking the current
+ * slot.
+ */
+ if (elp->len - total_len <= SHALLOC_FRAGMENT)
+ break;
+ }
+#ifdef HAVE_STATISTICS
+ if (head->longest < st_search)
+ head->longest = st_search;
+#endif
+
+ /*
+ * If we don't find an element of the right size, we're done.
+ */
+ if (elp == NULL) {
+ STAT((++head->failure));
+ return (ENOMEM);
+ }
+ STAT((++head->success));
+
+ /* Pull the chunk off of the size queue. */
+ SH_TAILQ_REMOVE(&head->sizeq, elp, sizeq, __alloc_element);
+
+ if (elp->len - total_len > SHALLOC_FRAGMENT) {
+ frag = (ALLOC_ELEMENT *)((u_int8_t *)elp + total_len);
+ frag->len = elp->len - total_len;
+ frag->ulen = 0;
+
+ elp->len = total_len;
+
+ /* The fragment follows the chunk on the address queue. */
+ SH_TAILQ_INSERT_AFTER(
+ &head->addrq, elp, frag, addrq, __alloc_element);
+
+ /*
+ * Insert the fragment into the appropriate place in the
+ * size queue.
+ */
+ SH_TAILQ_FOREACH(elp_tmp, &head->sizeq, sizeq, __alloc_element)
+ if (elp_tmp->len < frag->len)
+ break;
+ if (elp_tmp == NULL)
+ SH_TAILQ_INSERT_TAIL(&head->sizeq, frag, sizeq);
+ else
+ SH_TAILQ_INSERT_BEFORE(&head->sizeq,
+ elp_tmp, frag, sizeq, __alloc_element);
+ }
+
+ p = (u_int8_t *)elp + sizeof(ALLOC_ELEMENT);
+ elp->ulen = len;
+#ifdef DIAGNOSTIC
+ p[len] = GUARD_BYTE;
+#endif
+ *(void **)retp = p;
+
+ return (0);
+}
+
+/*
+ * __env_alloc_free --
+ * Free space into the shared region.
+ *
+ * PUBLIC: void __env_alloc_free __P((REGINFO *, void *));
+ */
+void
+__env_alloc_free(infop, ptr)
+ REGINFO *infop;
+ void *ptr;
+{
+ ALLOC_ELEMENT *elp, *elp_tmp;
+ ALLOC_LAYOUT *head;
+ DB_ENV *dbenv;
+ size_t len;
+ u_int8_t *p;
+
+ dbenv = infop->dbenv;
+
+ /* In a private region, we call free. */
+ if (F_ISSET(dbenv, DB_ENV_PRIVATE)) {
+ /* Find the start of the memory chunk and its length. */
+ p = (u_int8_t *)((size_t *)ptr - 1);
+ len = *(size_t *)p;
+
+ infop->allocated -= len;
+
+#ifdef DIAGNOSTIC
+ /* Check the guard byte. */
+ DB_ASSERT(dbenv, p[len - 1] == GUARD_BYTE);
+
+ /* Trash the memory chunk. */
+ memset(p, CLEAR_BYTE, len);
+#endif
+ __os_free(dbenv, p);
+ return;
+ }
+
+ head = infop->addr;
+ STAT((++head->freed));
+
+ p = ptr;
+ elp = (ALLOC_ELEMENT *)(p - sizeof(ALLOC_ELEMENT));
+
+#ifdef DIAGNOSTIC
+ /* Check the guard byte. */
+ DB_ASSERT(dbenv, p[elp->ulen] == GUARD_BYTE);
+
+ /* Trash the memory chunk. */
+ memset(p, CLEAR_BYTE, elp->len - sizeof(ALLOC_ELEMENT));
+#endif
+
+ /* Mark the memory as no longer in use. */
+ elp->ulen = 0;
+
+ /*
+ * Try and merge this chunk with chunks on either side of it. Two
+ * chunks can be merged if they're contiguous and not in use.
+ */
+ if ((elp_tmp =
+ SH_TAILQ_PREV(&head->addrq, elp, addrq, __alloc_element)) != NULL &&
+ elp_tmp->ulen == 0 &&
+ (u_int8_t *)elp_tmp + elp_tmp->len == (u_int8_t *)elp) {
+ /*
+ * If we're merging the entry into a previous entry, remove the
+ * current entry from the addr queue and the previous entry from
+ * the size queue, and merge.
+ */
+ SH_TAILQ_REMOVE(&head->addrq, elp, addrq, __alloc_element);
+ SH_TAILQ_REMOVE(&head->sizeq, elp_tmp, sizeq, __alloc_element);
+
+ elp_tmp->len += elp->len;
+ elp = elp_tmp;
+ }
+ if ((elp_tmp = SH_TAILQ_NEXT(elp, addrq, __alloc_element)) != NULL &&
+ elp_tmp->ulen == 0 &&
+ (u_int8_t *)elp + elp->len == (u_int8_t *)elp_tmp) {
+ /*
+ * If we're merging the current entry into a subsequent entry,
+ * remove the subsequent entry from the addr and size queues
+ * and merge.
+ */
+ SH_TAILQ_REMOVE(&head->addrq, elp_tmp, addrq, __alloc_element);
+ SH_TAILQ_REMOVE(&head->sizeq, elp_tmp, sizeq, __alloc_element);
+
+ elp->len += elp_tmp->len;
+ }
+
+ /* Find the correct slot in the size queue. */
+ SH_TAILQ_FOREACH(elp_tmp, &head->sizeq, sizeq, __alloc_element)
+ if (elp->len >= elp_tmp->len)
+ break;
+ if (elp_tmp == NULL)
+ SH_TAILQ_INSERT_TAIL(&head->sizeq, elp, sizeq);
+ else
+ SH_TAILQ_INSERT_BEFORE(&head->sizeq,
+ elp_tmp, elp, sizeq, __alloc_element);
+}
+
+#ifdef HAVE_STATISTICS
+/*
+ * __env_alloc_print --
+ * Display the lists of memory chunks.
+ *
+ * PUBLIC: void __env_alloc_print __P((REGINFO *, u_int32_t));
+ */
+void
+__env_alloc_print(infop, flags)
+ REGINFO *infop;
+ u_int32_t flags;
+{
+#ifdef __ALLOC_DISPLAY_ALLOCATION_LISTS
+ ALLOC_ELEMENT *elp;
+#endif
+ ALLOC_LAYOUT *head;
+ DB_ENV *dbenv;
+#ifdef __ALLOC_DISPLAY_ALLOCATION_SIZES
+ DB_MSGBUF mb;
+ int i;
+#endif
+
+ dbenv = infop->dbenv;
+ head = infop->addr;
+
+ if (F_ISSET(dbenv, DB_ENV_PRIVATE))
+ return;
+
+ __db_msg(dbenv,
+ "Region allocations: %lu allocations, %lu failures, %lu frees, %lu longest",
+ (u_long)head->success, (u_long)head->failure, (u_long)head->freed,
+ (u_long)head->longest);
+
+ if (!LF_ISSET(DB_STAT_ALL))
+ return;
+
+#ifdef __ALLOC_DISPLAY_ALLOCATION_SIZES
+ /*
+ * We don't normally display the allocation history by size, it's too
+ * expensive to calculate.
+ */
+ DB_MSGBUF_INIT(&mb);
+ for (i = 0; i < 32; ++i)
+ __db_msgadd(dbenv, &mb, "%s%2d/%lu",
+ i == 0 ? "Allocations by power-of-two sizes: " : ", ",
+ i + 1, (u_long)head->pow2_size[i]);
+ DB_MSGBUF_FLUSH(dbenv, &mb);
+#endif
+
+#ifdef __ALLOC_DISPLAY_ALLOCATION_LISTS
+ /*
+ * We don't normally display the list of address/chunk pairs, a few
+ * thousand lines of output is too voluminous for even DB_STAT_ALL.
+ */
+ __db_msg(dbenv,
+ "Allocation list by address: {chunk length, user length}");
+ SH_TAILQ_FOREACH(elp, &head->addrq, addrq, __alloc_element)
+ __db_msg(dbenv, "\t%#lx {%lu, %lu}",
+ P_TO_ULONG(elp), (u_long)elp->len, (u_long)elp->ulen);
+
+ __db_msg(dbenv, "Allocation free list by size: {chunk length}");
+ SH_TAILQ_FOREACH(elp, &head->sizeq, sizeq, __alloc_element)
+ __db_msg(dbenv, "\t%#lx {%lu}",
+ P_TO_ULONG(elp), (u_long)elp->len);
+#endif
+ return;
+}
+#endif
diff --git a/db/env/env_config.c b/db/env/env_config.c
index 1a098e277..895599f77 100644
--- a/db/env/env_config.c
+++ b/db/env/env_config.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: env_config.c,v 12.67 2006/09/19 14:14:07 mjc Exp $
+ * $Id: env_config.c,v 12.73 2007/05/17 15:15:11 bostic Exp $
*/
#include "db_config.h"
@@ -15,11 +14,7 @@
#include "dbinc/mp.h"
#include "dbinc/txn.h"
-#undef CONFIG_SLOTS
-#define CONFIG_SLOTS 10
-
static int __config_parse __P((DB_ENV *, char *, int));
-static int __config_split __P((char *, char *[CONFIG_SLOTS]));
/*
* __env_read_db_config --
@@ -111,6 +106,9 @@ __env_read_db_config(dbenv)
} \
} while (0)
+#undef CONFIG_SLOTS
+#define CONFIG_SLOTS 10
+
/*
* __config_parse --
* Parse a single NAME VALUE pair.
@@ -212,6 +210,8 @@ format: __db_errx(dbenv,
return (__env_set_flags(dbenv, DB_REGION_INIT, 1));
if (strcasecmp(argv[1], "db_txn_nosync") == 0)
return (__env_set_flags(dbenv, DB_TXN_NOSYNC, 1));
+ if (strcasecmp(argv[1], "db_txn_nowait") == 0)
+ return (__env_set_flags(dbenv, DB_TXN_NOWAIT, 1));
if (strcasecmp(argv[1], "db_txn_snapshot") == 0)
return (__env_set_flags(dbenv, DB_TXN_SNAPSHOT, 1));
if (strcasecmp(argv[1], "db_txn_write_nosync") == 0)
@@ -279,7 +279,8 @@ format: __db_errx(dbenv,
goto format;
CONFIG_GET_INT(argv[1], &lv1);
CONFIG_GET_INT(argv[2], &lv2);
- return (__memp_set_mp_max_write(dbenv, (int)lv1, (int)lv2));
+ return (__memp_set_mp_max_write(
+ dbenv, (int)lv1, (db_timeout_t)lv2));
}
CONFIG_UINT32("set_mp_mmapsize", __memp_set_mp_mmapsize);
@@ -329,6 +330,10 @@ format: __db_errx(dbenv,
goto format;
if (strcasecmp(argv[1], "db_verb_deadlock") == 0)
flags = DB_VERB_DEADLOCK;
+ else if (strcasecmp(argv[1], "db_verb_fileops") == 0)
+ flags = DB_VERB_FILEOPS;
+ else if (strcasecmp(argv[1], "db_verb_fileops_all") == 0)
+ flags = DB_VERB_FILEOPS_ALL;
else if (strcasecmp(argv[1], "db_verb_recovery") == 0)
flags = DB_VERB_RECOVERY;
else if (strcasecmp(argv[1], "db_verb_register") == 0)
@@ -350,8 +355,10 @@ format: __db_errx(dbenv,
* __config_split --
* Split lines into white-space separated fields, returning the count of
* fields.
+ *
+ * PUBLIC: int __config_split __P((char *, char *[]));
*/
-static int
+int
__config_split(input, argv)
char *input, *argv[CONFIG_SLOTS];
{
diff --git a/db/env/env_failchk.c b/db/env/env_failchk.c
index 96348d44c..120a654b7 100644
--- a/db/env/env_failchk.c
+++ b/db/env/env_failchk.c
@@ -1,19 +1,18 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2005-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2005,2007 Oracle. All rights reserved.
*
- * $Id: env_failchk.c,v 12.28 2006/08/24 14:45:39 bostic Exp $
+ * $Id: env_failchk.c,v 12.33 2007/06/06 15:34:41 bostic Exp $
*/
#include "db_config.h"
#include "db_int.h"
-#include "dbinc/mutex_int.h"
+#ifndef HAVE_SIMPLE_THREAD_TYPE
#include "dbinc/db_page.h"
-#include "dbinc/db_am.h"
#include "dbinc/hash.h" /* Needed for call to __ham_func5. */
+#endif
#include "dbinc/lock.h"
#include "dbinc/txn.h"
@@ -64,7 +63,9 @@ __env_failchk_pp(dbenv, flags)
if (TXN_ON(dbenv) && (ret = __txn_failchk(dbenv)) != 0)
goto err;
+#ifdef HAVE_MUTEX_SUPPORT
ret = __mut_failchk(dbenv);
+#endif
err: ENV_LEAVE(dbenv, ip);
return (ret);
@@ -77,22 +78,19 @@ err: ENV_LEAVE(dbenv, ip);
* PUBLIC: int __env_thread_init __P((DB_ENV *, int));
*/
int
-__env_thread_init(dbenv, created)
+__env_thread_init(dbenv, during_creation)
DB_ENV *dbenv;
- int created;
+ int during_creation;
{
DB_HASHTAB *htab;
- DB_MUTEXMGR *mtxmgr;
- DB_MUTEXREGION *mtxregion;
REGINFO *infop;
+ REGENV *renv;
THREAD_INFO *thread;
int ret;
- mtxmgr = dbenv->mutex_handle;
- mtxregion = mtxmgr->reginfo.primary;
- infop = &mtxmgr->reginfo;
-
- if (mtxregion->thread_off == INVALID_ROFF) {
+ infop = dbenv->reginfo;
+ renv = infop->primary;
+ if (renv->thread_off == INVALID_ROFF) {
if (dbenv->thr_nbucket == 0) {
dbenv->thr_hashtab = NULL;
if (ALIVE_ON(dbenv)) {
@@ -103,29 +101,29 @@ __env_thread_init(dbenv, created)
return (0);
}
- if (!created) {
+ if (!during_creation) {
__db_errx(dbenv,
- "thread table must be allocated at environment create time");
+ "thread table must be allocated when the database environment is created");
return (EINVAL);
}
- if ((ret = __db_shalloc(infop,
- sizeof(THREAD_INFO), 0, &thread)) != 0) {
- __db_errx(dbenv,
- "cannot allocate a thread status block");
+ if ((ret =
+ __env_alloc(infop, sizeof(THREAD_INFO), &thread)) != 0) {
+ __db_err(dbenv, ret,
+ "unable to allocate a thread status block");
return (ret);
}
memset(thread, 0, sizeof(*thread));
- mtxregion->thread_off = R_OFFSET(infop, thread);
+ renv->thread_off = R_OFFSET(infop, thread);
thread->thr_nbucket = __db_tablesize(dbenv->thr_nbucket);
- if ((ret = __db_shalloc(infop,
- thread->thr_nbucket * sizeof(DB_HASHTAB), 0, &htab)) != 0)
+ if ((ret = __env_alloc(infop,
+ thread->thr_nbucket * sizeof(DB_HASHTAB), &htab)) != 0)
return (ret);
thread->thr_hashoff = R_OFFSET(infop, htab);
__db_hashinit(htab, thread->thr_nbucket);
thread->thr_max = dbenv->thr_max;
} else {
- thread = R_ADDR(infop, mtxregion->thread_off);
+ thread = R_ADDR(infop, renv->thread_off);
htab = R_ADDR(infop, thread->thr_hashoff);
}
@@ -144,9 +142,8 @@ __env_in_api(dbenv)
DB_ENV *dbenv;
{
DB_HASHTAB *htab;
- DB_MUTEXMGR *mtxmgr;
- DB_MUTEXREGION *mtxregion;
DB_THREAD_INFO *ip;
+ REGENV *renv;
REGINFO *infop;
THREAD_INFO *thread;
u_int32_t i;
@@ -154,10 +151,9 @@ __env_in_api(dbenv)
if ((htab = dbenv->thr_hashtab) == NULL)
return (EINVAL);
- mtxmgr = dbenv->mutex_handle;
- mtxregion = mtxmgr->reginfo.primary;
- infop = &mtxmgr->reginfo;
- thread = R_ADDR(infop, mtxregion->thread_off);
+ infop = dbenv->reginfo;
+ renv = infop->primary;
+ thread = R_ADDR(infop, renv->thread_off);
for (i = 0; i < dbenv->thr_nbucket; i++)
SH_TAILQ_FOREACH(ip, &htab[i], dbth_links, __db_thread_info) {
@@ -195,16 +191,16 @@ __env_set_state(dbenv, ipp, state)
DB_THREAD_INFO **ipp;
DB_THREAD_STATE state;
{
+ struct __db_threadid id;
DB_HASHTAB *htab;
- DB_MUTEXMGR *mtxmgr;
- DB_MUTEXREGION *mtxregion;
DB_THREAD_INFO *ip;
- struct __db_threadid id;
+ REGENV *renv;
REGINFO *infop;
THREAD_INFO *thread;
- int ret;
u_int32_t indx;
+ int ret;
+ *ipp = NULL;
htab = (DB_HASHTAB *)dbenv->thr_hashtab;
dbenv->thread_id(dbenv, &id.pid, &id.tid);
@@ -245,11 +241,10 @@ __env_set_state(dbenv, ipp, state)
ret = 0;
if (ip == NULL) {
- mtxmgr = dbenv->mutex_handle;
- mtxregion = mtxmgr->reginfo.primary;
- infop = &mtxmgr->reginfo;
- thread = R_ADDR(infop, mtxregion->thread_off);
- MUTEX_SYSTEM_LOCK(dbenv);
+ infop = dbenv->reginfo;
+ renv = infop->primary;
+ thread = R_ADDR(infop, renv->thread_off);
+ MUTEX_LOCK(dbenv, renv->mtx_regenv);
/*
* If we are passed the specified max, try to reclaim one from
@@ -271,8 +266,8 @@ __env_set_state(dbenv, ipp, state)
}
thread->thr_count++;
- if ((ret = __db_shalloc(infop,
- sizeof(DB_THREAD_INFO), 0, &ip)) == 0) {
+ if ((ret = __env_alloc(infop,
+ sizeof(DB_THREAD_INFO), &ip)) == 0) {
memset(ip, 0, sizeof(*ip));
/*
* This assumes we can link atomically since we do
@@ -286,7 +281,7 @@ init: ip->dbth_pid = id.pid;
ip->dbth_tid = id.tid;
ip->dbth_state = state;
}
- MUTEX_SYSTEM_UNLOCK(dbenv);
+ MUTEX_UNLOCK(dbenv, renv->mtx_regenv);
} else
ip->dbth_state = state;
*ipp = ip;
diff --git a/db/env/env_file.c b/db/env/env_file.c
index 09ff5c6fd..16b5f0f49 100644
--- a/db/env/env_file.c
+++ b/db/env/env_file.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: env_file.c,v 12.12 2006/08/24 14:45:39 bostic Exp $
+ * $Id: env_file.c,v 12.15 2007/05/17 15:15:11 bostic Exp $
*/
#include "db_config.h"
@@ -68,7 +67,7 @@ __db_file_multi_write(dbenv, path)
u_int32_t mbytes, bytes;
int ret;
- if ((ret = __os_open(dbenv, path, DB_OSO_REGION, 0, &fhp)) == 0 &&
+ if ((ret = __os_open(dbenv, path, 0, DB_OSO_REGION, 0, &fhp)) == 0 &&
(ret = __os_ioinfo(dbenv, path, fhp, &mbytes, &bytes, NULL)) == 0) {
/*
* !!!
diff --git a/db/env/env_globals.c b/db/env/env_globals.c
new file mode 100644
index 000000000..14af751a3
--- /dev/null
+++ b/db/env/env_globals.c
@@ -0,0 +1,18 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 1999,2007 Oracle. All rights reserved.
+ *
+ * $Id: env_globals.c,v 1.2 2007/05/17 15:15:11 bostic Exp $
+ */
+
+#include "db_config.h"
+
+/*
+ * This is the file that initializes the global array. Do it this way because
+ * people keep changing the structure without changing the initialization code.
+ * Having declaration and initialization in one file will hopefully fix that.
+ */
+#define DB_INITIALIZE_DB_GLOBALS 1
+
+#include "db_int.h"
diff --git a/db/env/env_method.c b/db/env/env_method.c
index a2c2acbec..7454bd956 100644
--- a/db/env/env_method.c
+++ b/db/env/env_method.c
@@ -1,21 +1,13 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1999-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1999,2007 Oracle. All rights reserved.
*
- * $Id: env_method.c,v 12.47 2006/09/11 15:40:20 bostic Exp $
+ * $Id: env_method.c,v 12.69 2007/05/17 15:15:11 bostic Exp $
*/
#include "db_config.h"
-/*
- * This is the file that initializes the global array. Do it this way because
- * people keep changing one without changing the other. Having declaration and
- * initialization in one file will hopefully fix that.
- */
-#define DB_INITIALIZE_DB_GLOBALS 1
-
#include "db_int.h"
#include "dbinc/crypto.h"
#include "dbinc/hmac.h"
@@ -27,7 +19,7 @@
#include "dbinc/txn.h"
#ifdef HAVE_RPC
-#ifndef NO_SYSTEM_INCLUDES
+#ifdef HAVE_SYSTEM_INCLUDE_FILES
#include <rpc/rpc.h>
#endif
#include "db_server.h"
@@ -40,6 +32,7 @@ static int __env_get_data_dirs __P((DB_ENV *, const char ***));
static int __env_get_flags __P((DB_ENV *, u_int32_t *));
static int __env_get_home __P((DB_ENV *, const char **));
static int __env_get_shm_key __P((DB_ENV *, long *));
+static int __env_get_thread_count __P((DB_ENV *, u_int32_t *));
static int __env_get_tmp_dir __P((DB_ENV *, const char **));
static int __env_get_verbose __P((DB_ENV *, u_int32_t, int *));
static int __env_init __P((DB_ENV *));
@@ -59,10 +52,6 @@ static int __env_set_thread_count __P((DB_ENV *, u_int32_t));
static int __env_set_rpc_server
__P((DB_ENV *, void *, const char *, long, long, u_int32_t));
-#ifndef HAVE_REPLICATION_THREADS
-static int __db_norepmgr __P((DB_ENV *));
-#endif
-
/*
* db_env_create --
* DB_ENV constructor.
@@ -97,13 +86,13 @@ db_env_create(dbenvpp, flags)
F_SET(dbenv, DB_ENV_RPCCLIENT);
#endif
if ((ret = __env_init(dbenv)) != 0 ||
- (ret = __lock_dbenv_create(dbenv)) != 0 ||
- (ret = __log_dbenv_create(dbenv)) != 0 ||
- (ret = __memp_dbenv_create(dbenv)) != 0 ||
+ (ret = __lock_env_create(dbenv)) != 0 ||
+ (ret = __log_env_create(dbenv)) != 0 ||
+ (ret = __memp_env_create(dbenv)) != 0 ||
#ifdef HAVE_REPLICATION
- (ret = __rep_dbenv_create(dbenv)) != 0 ||
+ (ret = __rep_env_create(dbenv)) != 0 ||
#endif
- (ret = __txn_dbenv_create(dbenv)))
+ (ret = __txn_env_create(dbenv)))
goto err;
#ifdef HAVE_RPC
@@ -140,13 +129,13 @@ void
__db_env_destroy(dbenv)
DB_ENV *dbenv;
{
- __lock_dbenv_destroy(dbenv);
- __log_dbenv_destroy(dbenv);
- __memp_dbenv_destroy(dbenv);
+ __lock_env_destroy(dbenv);
+ __log_env_destroy(dbenv);
+ __memp_env_destroy(dbenv);
#ifdef HAVE_REPLICATION
- __rep_dbenv_destroy(dbenv);
+ __rep_env_destroy(dbenv);
#endif
- __txn_dbenv_destroy(dbenv);
+ __txn_env_destroy(dbenv);
memset(dbenv, CLEAR_BYTE, sizeof(DB_ENV));
__os_free(NULL, dbenv);
@@ -178,6 +167,7 @@ __env_init(dbenv)
dbenv->failchk = __env_failchk_pp;
dbenv->fileid_reset = __env_fileid_reset_pp;
dbenv->get_cachesize = __memp_get_cachesize;
+ dbenv->get_cache_max = __memp_get_cache_max;
dbenv->get_data_dirs = __env_get_data_dirs;
dbenv->get_encrypt_flags = __env_get_encrypt_flags;
dbenv->get_errfile = __env_get_errfile;
@@ -200,6 +190,7 @@ __env_init(dbenv)
dbenv->get_msgfile = __env_get_msgfile;
dbenv->get_open_flags = __env_get_open_flags;
dbenv->get_shm_key = __env_get_shm_key;
+ dbenv->get_thread_count = __env_get_thread_count;
dbenv->get_timeout = __lock_get_env_timeout;
dbenv->get_tmp_dir = __env_get_tmp_dir;
dbenv->get_tx_max = __txn_get_tx_max;
@@ -240,8 +231,8 @@ __env_init(dbenv)
dbenv->mutex_set_increment = __mutex_set_increment;
dbenv->mutex_set_max = __mutex_set_max;
dbenv->mutex_set_tas_spins = __mutex_set_tas_spins;
- dbenv->mutex_stat = __mutex_stat;
- dbenv->mutex_stat_print = __mutex_stat_print;
+ dbenv->mutex_stat = __mutex_stat_pp;
+ dbenv->mutex_stat_print = __mutex_stat_print_pp;
dbenv->mutex_unlock = __mutex_unlock_pp;
dbenv->open = __env_open_pp;
dbenv->remove = __env_remove;
@@ -254,6 +245,7 @@ __env_init(dbenv)
dbenv->rep_get_timeout = __rep_get_timeout;
dbenv->rep_process_message = __rep_process_message;
dbenv->rep_set_config = __rep_set_config;
+ dbenv->rep_set_lease = __rep_set_lease;
dbenv->rep_set_limit = __rep_set_limit;
dbenv->rep_set_nsites = __rep_set_nsites;
dbenv->rep_set_priority = __rep_set_priority;
@@ -263,27 +255,18 @@ __env_init(dbenv)
dbenv->rep_stat = __rep_stat_pp;
dbenv->rep_stat_print = __rep_stat_print_pp;
dbenv->rep_sync = __rep_sync;
-#ifdef HAVE_REPLICATION_THREADS
dbenv->repmgr_add_remote_site = __repmgr_add_remote_site;
dbenv->repmgr_get_ack_policy = __repmgr_get_ack_policy;
dbenv->repmgr_set_ack_policy = __repmgr_set_ack_policy;
dbenv->repmgr_set_local_site = __repmgr_set_local_site;
dbenv->repmgr_site_list = __repmgr_site_list;
dbenv->repmgr_start = __repmgr_start;
-#else /* !HAVE_REPLICATION_THREADS */
- dbenv->repmgr_add_remote_site = (int (*)(DB_ENV *,
- const char *, u_int, int *, u_int32_t))__db_norepmgr;
- dbenv->repmgr_get_ack_policy = (int (*)(DB_ENV *, int *))__db_norepmgr;
- dbenv->repmgr_set_ack_policy = (int (*)(DB_ENV *, int))__db_norepmgr;
- dbenv->repmgr_set_local_site =
- (int (*)(DB_ENV *, const char *, u_int, u_int32_t))__db_norepmgr;
- dbenv->repmgr_site_list =
- (int (*)(DB_ENV *, u_int *, DB_REPMGR_SITE **))__db_norepmgr;
- dbenv->repmgr_start = (int (*)(DB_ENV *, int, u_int32_t))__db_norepmgr;
-#endif /* HAVE_REPLICATION_THREADS */
+ dbenv->repmgr_stat = __repmgr_stat_pp;
+ dbenv->repmgr_stat_print = __repmgr_stat_print_pp;
dbenv->set_alloc = __env_set_alloc;
dbenv->set_app_dispatch = __env_set_app_dispatch;
dbenv->set_cachesize = __memp_set_cachesize;
+ dbenv->set_cache_max = __memp_set_cache_max;
dbenv->set_data_dir = __env_set_data_dir;
dbenv->set_encrypt = __env_set_encrypt;
dbenv->set_errcall = __env_set_errcall;
@@ -336,15 +319,19 @@ __env_init(dbenv)
__os_id(NULL, &dbenv->pid_cache, NULL);
dbenv->thread_id = __os_id;
dbenv->thread_id_string = __env_thread_id_string;
+
dbenv->db_ref = 0;
dbenv->shm_key = INVALID_REGION_SEGID;
+ TAILQ_INIT(&dbenv->fdlist);
+
+ F_SET(dbenv, DB_ENV_NO_OUTPUT_SET);
return (0);
}
/*
* __env_err --
- * Error message, including the standard error string.
+ * DbEnv.err method.
*/
static void
#ifdef STDC_HEADERS
@@ -357,12 +344,13 @@ __env_err(dbenv, error, fmt, va_alist)
va_dcl
#endif
{
+ /* Message with error string, to stderr by default. */
DB_REAL_ERR(dbenv, error, DB_ERROR_SET, 1, fmt);
}
/*
* __env_errx --
- * Error message.
+ * DbEnv.errx method.
*/
static void
#ifdef STDC_HEADERS
@@ -374,6 +362,7 @@ __env_errx(dbenv, fmt, va_alist)
va_dcl
#endif
{
+ /* Message without error string, to stderr by default. */
DB_REAL_ERR(dbenv, 0, DB_ERROR_NOT_SET, 1, fmt);
}
@@ -538,84 +527,46 @@ __env_map_flags(dbenv, inflagsp, outflagsp)
DB_ENV *dbenv;
u_int32_t *inflagsp, *outflagsp;
{
+#ifndef HAVE_BREW
+ static
+#endif
+ const struct {
+ u_int32_t inflag, outflag;
+ } *fmp, flagmap[] = {
+ { DB_AUTO_COMMIT, DB_ENV_AUTO_COMMIT },
+ { DB_CDB_ALLDB, DB_ENV_CDB_ALLDB },
+ { DB_DIRECT_DB, DB_ENV_DIRECT_DB },
+ { DB_DIRECT_LOG, DB_ENV_DIRECT_LOG },
+ { DB_DSYNC_DB, DB_ENV_DSYNC_DB },
+ { DB_DSYNC_LOG, DB_ENV_DSYNC_LOG },
+ { DB_LOG_AUTOREMOVE, DB_ENV_LOG_AUTOREMOVE },
+ { DB_LOG_INMEMORY, DB_ENV_LOG_INMEMORY },
+ { DB_MULTIVERSION, DB_ENV_MULTIVERSION },
+ { DB_NOLOCKING, DB_ENV_NOLOCKING },
+ { DB_NOMMAP, DB_ENV_NOMMAP },
+ { DB_NOPANIC, DB_ENV_NOPANIC },
+ { DB_OVERWRITE, DB_ENV_OVERWRITE },
+ { DB_REGION_INIT, DB_ENV_REGION_INIT },
+ { DB_TIME_NOTGRANTED, DB_ENV_TIME_NOTGRANTED },
+ { DB_TXN_NOSYNC, DB_ENV_TXN_NOSYNC },
+ { DB_TXN_NOWAIT, DB_ENV_TXN_NOWAIT },
+ { DB_TXN_SNAPSHOT, DB_ENV_TXN_SNAPSHOT },
+ { DB_TXN_WRITE_NOSYNC, DB_ENV_TXN_WRITE_NOSYNC },
+ { DB_YIELDCPU, DB_ENV_YIELDCPU }
+ };
+
+ u_int i;
+
COMPQUIET(dbenv, NULL);
- if (FLD_ISSET(*inflagsp, DB_AUTO_COMMIT)) {
- FLD_SET(*outflagsp, DB_ENV_AUTO_COMMIT);
- FLD_CLR(*inflagsp, DB_AUTO_COMMIT);
- }
- if (FLD_ISSET(*inflagsp, DB_CDB_ALLDB)) {
- FLD_SET(*outflagsp, DB_ENV_CDB_ALLDB);
- FLD_CLR(*inflagsp, DB_CDB_ALLDB);
- }
- if (FLD_ISSET(*inflagsp, DB_DIRECT_DB)) {
- FLD_SET(*outflagsp, DB_ENV_DIRECT_DB);
- FLD_CLR(*inflagsp, DB_DIRECT_DB);
- }
- if (FLD_ISSET(*inflagsp, DB_DIRECT_LOG)) {
- FLD_SET(*outflagsp, DB_ENV_DIRECT_LOG);
- FLD_CLR(*inflagsp, DB_DIRECT_LOG);
- }
- if (FLD_ISSET(*inflagsp, DB_DSYNC_DB)) {
- FLD_SET(*outflagsp, DB_ENV_DSYNC_DB);
- FLD_CLR(*inflagsp, DB_DSYNC_DB);
- }
- if (FLD_ISSET(*inflagsp, DB_DSYNC_LOG)) {
- FLD_SET(*outflagsp, DB_ENV_DSYNC_LOG);
- FLD_CLR(*inflagsp, DB_DSYNC_LOG);
- }
- if (FLD_ISSET(*inflagsp, DB_LOG_AUTOREMOVE)) {
- FLD_SET(*outflagsp, DB_ENV_LOG_AUTOREMOVE);
- FLD_CLR(*inflagsp, DB_LOG_AUTOREMOVE);
- }
- if (FLD_ISSET(*inflagsp, DB_LOG_INMEMORY)) {
- FLD_SET(*outflagsp, DB_ENV_LOG_INMEMORY);
- FLD_CLR(*inflagsp, DB_LOG_INMEMORY);
- }
- if (FLD_ISSET(*inflagsp, DB_MULTIVERSION)) {
- FLD_SET(*outflagsp, DB_ENV_MULTIVERSION);
- FLD_CLR(*inflagsp, DB_MULTIVERSION);
- }
- if (FLD_ISSET(*inflagsp, DB_NOLOCKING)) {
- FLD_SET(*outflagsp, DB_ENV_NOLOCKING);
- FLD_CLR(*inflagsp, DB_NOLOCKING);
- }
- if (FLD_ISSET(*inflagsp, DB_NOMMAP)) {
- FLD_SET(*outflagsp, DB_ENV_NOMMAP);
- FLD_CLR(*inflagsp, DB_NOMMAP);
- }
- if (FLD_ISSET(*inflagsp, DB_NOPANIC)) {
- FLD_SET(*outflagsp, DB_ENV_NOPANIC);
- FLD_CLR(*inflagsp, DB_NOPANIC);
- }
- if (FLD_ISSET(*inflagsp, DB_OVERWRITE)) {
- FLD_SET(*outflagsp, DB_ENV_OVERWRITE);
- FLD_CLR(*inflagsp, DB_OVERWRITE);
- }
- if (FLD_ISSET(*inflagsp, DB_REGION_INIT)) {
- FLD_SET(*outflagsp, DB_ENV_REGION_INIT);
- FLD_CLR(*inflagsp, DB_REGION_INIT);
- }
- if (FLD_ISSET(*inflagsp, DB_TIME_NOTGRANTED)) {
- FLD_SET(*outflagsp, DB_ENV_TIME_NOTGRANTED);
- FLD_CLR(*inflagsp, DB_TIME_NOTGRANTED);
- }
- if (FLD_ISSET(*inflagsp, DB_TXN_NOSYNC)) {
- FLD_SET(*outflagsp, DB_ENV_TXN_NOSYNC);
- FLD_CLR(*inflagsp, DB_TXN_NOSYNC);
- }
- if (FLD_ISSET(*inflagsp, DB_TXN_SNAPSHOT)) {
- FLD_SET(*outflagsp, DB_ENV_TXN_SNAPSHOT);
- FLD_CLR(*inflagsp, DB_TXN_SNAPSHOT);
- }
- if (FLD_ISSET(*inflagsp, DB_TXN_WRITE_NOSYNC)) {
- FLD_SET(*outflagsp, DB_ENV_TXN_WRITE_NOSYNC);
- FLD_CLR(*inflagsp, DB_TXN_WRITE_NOSYNC);
- }
- if (FLD_ISSET(*inflagsp, DB_YIELDCPU)) {
- FLD_SET(*outflagsp, DB_ENV_YIELDCPU);
- FLD_CLR(*inflagsp, DB_YIELDCPU);
- }
+ for (i = 0, fmp = flagmap;
+ i < sizeof(flagmap) / sizeof(flagmap[0]); ++i, ++fmp)
+ if (FLD_ISSET(*inflagsp, fmp->inflag)) {
+ FLD_SET(*outflagsp, fmp->outflag);
+ FLD_CLR(*inflagsp, fmp->inflag);
+ if (*inflagsp == 0)
+ break;
+ }
}
static int
@@ -640,6 +591,7 @@ __env_get_flags(dbenv, flagsp)
DB_REGION_INIT,
DB_TIME_NOTGRANTED,
DB_TXN_NOSYNC,
+ DB_TXN_NOWAIT,
DB_TXN_SNAPSHOT,
DB_TXN_WRITE_NOSYNC,
DB_YIELDCPU,
@@ -689,8 +641,8 @@ __env_set_flags(dbenv, flags, on)
DB_LOG_INMEMORY | DB_MULTIVERSION | DB_NOLOCKING | \
DB_NOMMAP | DB_NOPANIC | DB_OVERWRITE | \
DB_PANIC_ENVIRONMENT | DB_REGION_INIT | \
- DB_TIME_NOTGRANTED | DB_TXN_NOSYNC | DB_TXN_SNAPSHOT | \
- DB_TXN_WRITE_NOSYNC | DB_YIELDCPU)
+ DB_TIME_NOTGRANTED | DB_TXN_NOSYNC | DB_TXN_NOWAIT | \
+ DB_TXN_SNAPSHOT | DB_TXN_WRITE_NOSYNC | DB_YIELDCPU)
if (LF_ISSET(~OK_FLAGS))
return (__db_ferr(dbenv, "DB_ENV->set_flags", 0));
@@ -722,7 +674,7 @@ __env_set_flags(dbenv, flags, on)
__db_errx(dbenv, "Environment panic set");
(void)__db_panic(dbenv, DB_RUNRECOVERY);
} else
- __db_panic_set(dbenv, 0);
+ __env_panic_set(dbenv, 0);
}
if (LF_ISSET(DB_REGION_INIT))
ENV_ILLEGAL_AFTER_OPEN(dbenv,
@@ -842,6 +794,7 @@ __env_set_errcall(dbenv, errcall)
DB_ENV *dbenv;
void (*errcall) __P((const DB_ENV *, const char *, const char *));
{
+ F_CLR(dbenv, DB_ENV_NO_OUTPUT_SET);
dbenv->db_errcall = errcall;
}
@@ -870,6 +823,7 @@ __env_set_errfile(dbenv, errfile)
DB_ENV *dbenv;
FILE *errfile;
{
+ F_CLR(dbenv, DB_ENV_NO_OUTPUT_SET);
dbenv->db_errfile = errfile;
}
@@ -955,6 +909,19 @@ __env_set_isalive(dbenv, is_alive)
}
/*
+ * __env_get_thread_count --
+ * DB_ENV->get_thread_count
+ */
+static int
+__env_get_thread_count(dbenv, countp)
+ DB_ENV *dbenv;
+ u_int32_t *countp;
+{
+ *countp = dbenv->thr_max;
+ return (0);
+}
+
+/*
* __env_set_thread_count --
* DB_ENV->set_thread_count
*/
@@ -967,9 +934,8 @@ __env_set_thread_count(dbenv, count)
dbenv->thr_max = count;
/*
- * Set the number of buckets to be 1/8th the number of
- * proposed threads control blocks. This is rather
- * arbitrary.
+ * Set the number of buckets to be 1/8th the number of thread control
+ * blocks. This is rather arbitrary.
*/
dbenv->thr_nbucket = count / 8;
return (0);
@@ -1105,6 +1071,8 @@ __env_get_verbose(dbenv, which, onoffp)
{
switch (which) {
case DB_VERB_DEADLOCK:
+ case DB_VERB_FILEOPS:
+ case DB_VERB_FILEOPS_ALL:
case DB_VERB_RECOVERY:
case DB_VERB_REGISTER:
case DB_VERB_REPLICATION:
@@ -1131,6 +1099,8 @@ __env_set_verbose(dbenv, which, on)
{
switch (which) {
case DB_VERB_DEADLOCK:
+ case DB_VERB_FILEOPS:
+ case DB_VERB_FILEOPS_ALL:
case DB_VERB_RECOVERY:
case DB_VERB_REGISTER:
case DB_VERB_REPLICATION:
@@ -1236,18 +1206,3 @@ __env_set_rpc_server(dbenv, cl, host, tsec, ssec, flags)
__db_errx(dbenv, "Berkeley DB was not configured for RPC support");
return (DB_OPNOTSUP);
}
-
-#ifndef HAVE_REPLICATION_THREADS
-/*
- * __db_norepmgr --
- * Error when a Berkeley DB build doesn't include the replication manager.
- */
-static int
-__db_norepmgr(dbenv)
- DB_ENV *dbenv;
-{
- __db_errx(dbenv,
- "Berkeley DB library build did not include replication manager support");
- return (DB_OPNOTSUP);
-}
-#endif
diff --git a/db/env/env_name.c b/db/env/env_name.c
new file mode 100644
index 000000000..5cf2dc34d
--- /dev/null
+++ b/db/env/env_name.c
@@ -0,0 +1,262 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
+ *
+ * $Id: env_name.c,v 12.87 2007/05/17 15:15:11 bostic Exp $
+ */
+
+#include "db_config.h"
+
+#include "db_int.h"
+
+static int __db_tmp_open __P((DB_ENV *, u_int32_t, char *, DB_FH **));
+
+#define DB_ADDSTR(add) { \
+ /* \
+ * The string might be NULL or zero-length, and the p[-1] \
+ * might indirect to before the beginning of our buffer. \
+ */ \
+ if ((add) != NULL && (add)[0] != '\0') { \
+ /* If leading slash, start over. */ \
+ if (__os_abspath(add)) { \
+ p = str; \
+ slash = 0; \
+ } \
+ /* Append to the current string. */ \
+ len = strlen(add); \
+ if (slash) \
+ *p++ = PATH_SEPARATOR[0]; \
+ memcpy(p, add, len); \
+ p += len; \
+ slash = strchr(PATH_SEPARATOR, p[-1]) == NULL; \
+ } \
+}
+
+/*
+ * __db_appname --
+ * Given an optional DB environment, directory and file name and type
+ * of call, build a path based on the DB_ENV->open rules, and return
+ * it in allocated space.
+ *
+ * PUBLIC: int __db_appname __P((DB_ENV *, APPNAME,
+ * PUBLIC: const char *, u_int32_t, DB_FH **, char **));
+ */
+int
+__db_appname(dbenv, appname, file, tmp_oflags, fhpp, namep)
+ DB_ENV *dbenv;
+ APPNAME appname;
+ const char *file;
+ u_int32_t tmp_oflags;
+ DB_FH **fhpp;
+ char **namep;
+{
+ enum { TRY_NOTSET, TRY_DATA_DIR, TRY_ENV_HOME, TRY_CREATE } try_state;
+ size_t len, str_len;
+ int data_entry, ret, slash, tmp_create;
+ const char *a, *b;
+ char *p, *str;
+
+ try_state = TRY_NOTSET;
+ a = b = NULL;
+ data_entry = 0;
+ tmp_create = 0;
+
+ /*
+ * We don't return a name when creating temporary files, just a file
+ * handle. Default to an error now.
+ */
+ if (fhpp != NULL)
+ *fhpp = NULL;
+ if (namep != NULL)
+ *namep = NULL;
+
+ /*
+ * Absolute path names are never modified. If the file is an absolute
+ * path, we're done.
+ */
+ if (file != NULL && __os_abspath(file))
+ return (__os_strdup(dbenv, file, namep));
+
+ /* Everything else is relative to the environment home. */
+ if (dbenv != NULL)
+ a = dbenv->db_home;
+
+retry: /*
+ * DB_APP_NONE:
+ * DB_HOME/file
+ * DB_APP_DATA:
+ * DB_HOME/DB_DATA_DIR/file
+ * DB_APP_LOG:
+ * DB_HOME/DB_LOG_DIR/file
+ * DB_APP_TMP:
+ * DB_HOME/DB_TMP_DIR/<create>
+ */
+ switch (appname) {
+ case DB_APP_NONE:
+ break;
+ case DB_APP_DATA:
+ if (dbenv == NULL || dbenv->db_data_dir == NULL) {
+ try_state = TRY_CREATE;
+ break;
+ }
+
+ /*
+ * First, step through the data_dir entries, if any, looking
+ * for the file.
+ */
+ if ((b = dbenv->db_data_dir[data_entry]) != NULL) {
+ ++data_entry;
+ try_state = TRY_DATA_DIR;
+ break;
+ }
+
+ /* Second, look in the environment home directory. */
+ if (try_state != TRY_ENV_HOME) {
+ try_state = TRY_ENV_HOME;
+ break;
+ }
+
+ /* Third, try creation in the first data_dir entry. */
+ try_state = TRY_CREATE;
+ b = dbenv->db_data_dir[0];
+ break;
+ case DB_APP_LOG:
+ if (dbenv != NULL)
+ b = dbenv->db_log_dir;
+ break;
+ case DB_APP_TMP:
+ if (dbenv != NULL)
+ b = dbenv->db_tmp_dir;
+ tmp_create = 1;
+ break;
+ }
+
+ len =
+ (a == NULL ? 0 : strlen(a) + 1) +
+ (b == NULL ? 0 : strlen(b) + 1) +
+ (file == NULL ? 0 : strlen(file) + 1);
+
+ /*
+ * Allocate space to hold the current path information, as well as any
+ * temporary space that we're going to need to create a temporary file
+ * name.
+ */
+#define DB_TRAIL "BDBXXXXX"
+ str_len = len + sizeof(DB_TRAIL) + 10;
+ if ((ret = __os_malloc(dbenv, str_len, &str)) != 0)
+ return (ret);
+
+ slash = 0;
+ p = str;
+ DB_ADDSTR(a);
+ DB_ADDSTR(b);
+ DB_ADDSTR(file);
+ *p = '\0';
+
+ /*
+ * If we're opening a data file, see if it exists. If it does,
+ * return it, otherwise, try and find another one to open.
+ */
+ if (appname == DB_APP_DATA &&
+ __os_exists(dbenv, str, NULL) != 0 && try_state != TRY_CREATE) {
+ __os_free(dbenv, str);
+ b = NULL;
+ goto retry;
+ }
+
+ /* Create the file if so requested. */
+ if (tmp_create &&
+ (ret = __db_tmp_open(dbenv, tmp_oflags, str, fhpp)) != 0) {
+ __os_free(dbenv, str);
+ return (ret);
+ }
+
+ if (namep == NULL)
+ __os_free(dbenv, str);
+ else
+ *namep = str;
+ return (0);
+}
+
+/*
+ * __db_tmp_open --
+ * Create a temporary file.
+ */
+static int
+__db_tmp_open(dbenv, tmp_oflags, path, fhpp)
+ DB_ENV *dbenv;
+ u_int32_t tmp_oflags;
+ char *path;
+ DB_FH **fhpp;
+{
+ pid_t pid;
+ int filenum, i, isdir, ret;
+ char *firstx, *trv;
+
+ /*
+ * Check the target directory; if you have six X's and it doesn't
+ * exist, this runs for a *very* long time.
+ */
+ if ((ret = __os_exists(dbenv, path, &isdir)) != 0) {
+ __db_err(dbenv, ret, "%s", path);
+ return (ret);
+ }
+ if (!isdir) {
+ __db_err(dbenv, EINVAL, "%s", path);
+ return (EINVAL);
+ }
+
+ /* Build the path. */
+ (void)strncat(path, PATH_SEPARATOR, 1);
+ (void)strcat(path, DB_TRAIL);
+
+ /* Replace the X's with the process ID (in decimal). */
+ __os_id(dbenv, &pid, NULL);
+ for (trv = path + strlen(path); *--trv == 'X'; pid /= 10)
+ *trv = '0' + (u_char)(pid % 10);
+ firstx = trv + 1;
+
+ /* Loop, trying to open a file. */
+ for (filenum = 1;; filenum++) {
+ if ((ret = __os_open(dbenv, path, 0,
+ tmp_oflags | DB_OSO_CREATE | DB_OSO_EXCL | DB_OSO_TEMP,
+ __db_omode(OWNER_RW), fhpp)) == 0)
+ return (0);
+
+ /*
+ * !!!:
+ * If we don't get an EEXIST error, then there's something
+ * seriously wrong. Unfortunately, if the implementation
+ * doesn't return EEXIST for O_CREAT and O_EXCL regardless
+ * of other possible errors, we've lost.
+ */
+ if (ret != EEXIST) {
+ __db_err(dbenv, ret, "temporary open: %s", path);
+ return (ret);
+ }
+
+ /*
+ * Generate temporary file names in a backwards-compatible way.
+ * If pid == 12345, the result is:
+ * <path>/DB12345 (tried above, the first time through).
+ * <path>/DBa2345 ... <path>/DBz2345
+ * <path>/DBaa345 ... <path>/DBaz345
+ * <path>/DBba345, and so on.
+ *
+ * XXX
+ * This algorithm is O(n**2) -- that is, creating 100 temporary
+ * files requires 5,000 opens, creating 1000 files requires
+ * 500,000. If applications open a lot of temporary files, we
+ * could improve performance by switching to timestamp-based
+ * file names.
+ */
+ for (i = filenum, trv = firstx; i > 0; i = (i - 1) / 26)
+ if (*trv++ == '\0')
+ return (EINVAL);
+
+ for (i = filenum; i > 0; i = (i - 1) / 26)
+ *--trv = 'a' + ((i - 1) % 26);
+ }
+ /* NOTREACHED */
+}
diff --git a/db/env/env_open.c b/db/env/env_open.c
index 61e284e5e..46aaf2fbe 100644
--- a/db/env/env_open.c
+++ b/db/env/env_open.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: env_open.c,v 12.71 2006/08/24 14:45:39 bostic Exp $
+ * $Id: env_open.c,v 12.98 2007/06/08 17:34:55 bostic Exp $
*/
#include "db_config.h"
@@ -18,8 +17,8 @@
#include "dbinc/mp.h"
#include "dbinc/txn.h"
-static int __db_tmp_open __P((DB_ENV *, u_int32_t, char *, DB_FH **));
static int __env_refresh __P((DB_ENV *, u_int32_t, int));
+static int __file_handle_cleanup __P((DB_ENV *));
/*
* db_version --
@@ -179,7 +178,7 @@ __env_open(dbenv, db_home, flags, mode)
DB_THREAD_INFO *ip;
REGINFO *infop;
u_int32_t init_flags, orig_flags;
- int register_recovery, rep_check, ret, t_ret;
+ int create_ok, register_recovery, rep_check, ret, t_ret;
ip = NULL;
register_recovery = rep_check = 0;
@@ -227,19 +226,23 @@ __env_open(dbenv, db_home, flags, mode)
* want to remove files left over for any reason, from any session.
*/
if (LF_ISSET(DB_RECOVER | DB_RECOVER_FATAL))
- if ((ret = __db_e_remove(dbenv, DB_FORCE)) != 0 ||
+#ifdef HAVE_REPLICATION
+ if ((ret = __rep_reset_init(dbenv)) != 0 ||
+ (ret = __env_remove_env(dbenv)) != 0 ||
+#else
+ if ((ret = __env_remove_env(dbenv)) != 0 ||
+#endif
(ret = __env_refresh(dbenv, orig_flags, 0)) != 0)
goto err;
/* Convert the DB_ENV->open flags to internal flags. */
- if (LF_ISSET(DB_CREATE))
- F_SET(dbenv, DB_ENV_CREATE);
+ create_ok = LF_ISSET(DB_CREATE) ? 1 : 0;
if (LF_ISSET(DB_LOCKDOWN))
F_SET(dbenv, DB_ENV_LOCKDOWN);
if (LF_ISSET(DB_PRIVATE))
F_SET(dbenv, DB_ENV_PRIVATE);
if (LF_ISSET(DB_RECOVER_FATAL))
- F_SET(dbenv, DB_ENV_FATAL);
+ F_SET(dbenv, DB_ENV_RECOVER_FATAL);
if (LF_ISSET(DB_SYSTEM_MEM))
F_SET(dbenv, DB_ENV_SYSTEM_MEM);
if (LF_ISSET(DB_THREAD))
@@ -278,11 +281,11 @@ __env_open(dbenv, db_home, flags, mode)
FLD_SET(init_flags, DB_INITENV_REP);
if (LF_ISSET(DB_INIT_TXN))
FLD_SET(init_flags, DB_INITENV_TXN);
- if ((ret = __db_e_attach(dbenv, &init_flags)) != 0)
+ if ((ret = __env_attach(dbenv, &init_flags, create_ok, 1)) != 0)
goto err;
/*
- * __db_e_attach will return the saved init_flags field, which contains
+ * __env_attach will return the saved init_flags field, which contains
* the DB_INIT_* flags used when the environment was created.
*
* We may be joining an environment -- reset our flags to match the
@@ -325,18 +328,41 @@ __env_open(dbenv, db_home, flags, mode)
F_SET(dbenv, DB_ENV_OPEN_CALLED);
/*
+ * Initialize thread tracking and enter the API.
+ */
+ infop = dbenv->reginfo;
+ if ((ret = __env_thread_init(
+ dbenv, F_ISSET(infop, REGION_CREATE) ? 1 : 0)) != 0)
+ goto err;
+
+ ENV_ENTER(dbenv, ip);
+
+ /*
* Initialize the subsystems.
- *
+ */
+#ifdef HAVE_MUTEX_SUPPORT
+ /*
* Initialize the mutex regions first. There's no ordering requirement,
* but it's simpler to get this in place so we don't have to keep track
* of mutexes for later allocation, once the mutex region is created we
* can go ahead and do the allocation for real.
*/
- if ((ret = __mutex_open(dbenv)) != 0)
+ if ((ret = __mutex_open(dbenv, create_ok)) != 0)
+ goto err;
+#endif
+ /*
+ * We can now acquire/create mutexes: increment the region's reference
+ * count.
+ */
+ if ((ret = __env_ref_increment(dbenv)) != 0)
goto err;
- /* __mutex_open creates the thread info region, enter it now. */
- ENV_ENTER(dbenv, ip);
+ /*
+ * Initialize the handle's mutex.
+ */
+ if ((ret = __mutex_alloc(dbenv,
+ MTX_ENV_HANDLE, DB_MUTEX_PROCESS_ONLY, &dbenv->mtx_env)) != 0)
+ goto err;
/*
* Initialize the replication area next, so that we can lock out this
@@ -349,12 +375,39 @@ __env_open(dbenv, db_home, flags, mode)
if (rep_check && (ret = __env_rep_enter(dbenv, 0)) != 0)
goto err;
- if (LF_ISSET(DB_INIT_MPOOL))
- if ((ret = __memp_open(dbenv)) != 0)
+ if (LF_ISSET(DB_INIT_MPOOL)) {
+ if ((ret = __memp_open(dbenv, create_ok)) != 0)
goto err;
+
+ /*
+ * BDB does do cache I/O during recovery and when starting up
+ * replication. If creating a new environment, then suppress
+ * any application max-write configuration.
+ */
+ if (create_ok)
+ (void)__memp_set_config(
+ dbenv, DB_MEMP_SUPPRESS_WRITE, 1);
+
+ /*
+ * Initialize the DB list and its mutex. If the mpool is
+ * not initialized, we can't ever open a DB handle, which
+ * is why this code lives here.
+ */
+ TAILQ_INIT(&dbenv->dblist);
+ if ((ret = __mutex_alloc(dbenv, MTX_ENV_DBLIST,
+ DB_MUTEX_PROCESS_ONLY, &dbenv->mtx_dblist)) != 0)
+ goto err;
+
+ /* Register DB's pgin/pgout functions. */
+ if ((ret = __memp_register(
+ dbenv, DB_FTYPE_SET, __db_pgin, __db_pgout)) != 0)
+ goto err;
+ }
+
/*
* Initialize the ciphering area prior to any running of recovery so
- * that we can initialize the keys, etc. before recovery.
+ * that we can initialize the keys, etc. before recovery, including
+ * the MT mutex.
*
* !!!
* This must be after the mpool init, but before the log initialization
@@ -363,6 +416,9 @@ __env_open(dbenv, db_home, flags, mode)
if (LF_ISSET(DB_INIT_MPOOL | DB_INIT_LOG | DB_INIT_TXN) &&
(ret = __crypto_region_init(dbenv)) != 0)
goto err;
+ if ((ret = __mutex_alloc(dbenv, MTX_TWISTER,
+ DB_MUTEX_PROCESS_ONLY, &dbenv->mtx_mt)) != 0)
+ goto err;
/*
* Transactions imply logging but do not imply locking. While almost
@@ -371,14 +427,14 @@ __env_open(dbenv, db_home, flags, mode)
* atomicity guarantees, but not necessarily need concurrency.
*/
if (LF_ISSET(DB_INIT_LOG | DB_INIT_TXN))
- if ((ret = __log_open(dbenv)) != 0)
+ if ((ret = __log_open(dbenv, create_ok)) != 0)
goto err;
if (LF_ISSET(DB_INIT_LOCK))
- if ((ret = __lock_open(dbenv)) != 0)
+ if ((ret = __lock_open(dbenv, create_ok)) != 0)
goto err;
if (LF_ISSET(DB_INIT_TXN)) {
- if ((ret = __txn_open(dbenv)) != 0)
+ if ((ret = __txn_open(dbenv, create_ok)) != 0)
goto err;
/*
@@ -389,36 +445,6 @@ __env_open(dbenv, db_home, flags, mode)
goto err;
}
- /*
- * Initialize the DB list, and its mutex as necessary. If the env
- * handle isn't free-threaded we don't need a mutex because there
- * will never be more than a single DB handle on the list. If the
- * mpool wasn't initialized, then we can't ever open a DB handle.
- *
- * We also need to initialize the MT mutex as necessary, so do them
- * both.
- *
- * !!!
- * This must come after the __memp_open call above because if we are
- * recording mutexes for system resources, we will do it in the mpool
- * region for environments and db handles. So, the mpool region must
- * already be initialized.
- */
- TAILQ_INIT(&dbenv->dblist);
- if (LF_ISSET(DB_INIT_MPOOL)) {
- if ((ret = __mutex_alloc(dbenv, MTX_ENV_DBLIST,
- DB_MUTEX_PROCESS_ONLY, &dbenv->mtx_dblist)) != 0)
- goto err;
- if ((ret = __mutex_alloc(dbenv, MTX_TWISTER,
- DB_MUTEX_PROCESS_ONLY, &dbenv->mtx_mt)) != 0)
- goto err;
-
- /* Register DB's pgin/pgout functions. */
- if ((ret = __memp_register(
- dbenv, DB_FTYPE_SET, __db_pgin, __db_pgout)) != 0)
- goto err;
- }
-
/* Perform recovery for any previous run. */
if (LF_ISSET(DB_RECOVER | DB_RECOVER_FATAL) &&
(ret = __db_apprec(dbenv, NULL, NULL, 1,
@@ -435,7 +461,6 @@ __env_open(dbenv, db_home, flags, mode)
* transaction ID and logs the reset if that's appropriate, so we
* don't need to do anything here in the recover case.
*/
- infop = dbenv->reginfo;
if (TXN_ON(dbenv) &&
!F_ISSET(dbenv, DB_ENV_LOG_INMEMORY) &&
F_ISSET(infop, REGION_CREATE) &&
@@ -444,15 +469,19 @@ __env_open(dbenv, db_home, flags, mode)
goto err;
/* The database environment is ready for business. */
- if ((ret = __db_e_golive(dbenv)) != 0)
+ if ((ret = __env_turn_on(dbenv)) != 0)
goto err;
if (rep_check)
ret = __env_db_rep_exit(dbenv);
-err: ENV_LEAVE(dbenv, ip);
+ /* Turn any application-specific max-write configuration back on. */
+ if (LF_ISSET(DB_INIT_MPOOL))
+ (void)__memp_set_config(dbenv, DB_MEMP_SUPPRESS_WRITE, 0);
- if (ret != 0) {
+err: if (ret == 0)
+ ENV_LEAVE(dbenv, ip);
+ else {
/*
* If we fail after creating the regions, panic and remove them.
*
@@ -466,7 +495,7 @@ err: ENV_LEAVE(dbenv, ip);
/* Refresh the DB_ENV so can use it to call remove. */
(void)__env_refresh(dbenv, orig_flags, rep_check);
- (void)__db_e_remove(dbenv, DB_FORCE);
+ (void)__env_remove_env(dbenv);
(void)__env_refresh(dbenv, orig_flags, 0);
} else
(void)__env_refresh(dbenv, orig_flags, rep_check);
@@ -516,7 +545,14 @@ __env_remove(dbenv, db_home, flags)
if ((ret = __env_config(dbenv, db_home, flags, 0)) != 0)
return (ret);
- ret = __db_e_remove(dbenv, flags);
+ /*
+ * Turn the environment off -- if the environment is corrupted, this
+ * could fail. Ignore any error if we're forcing the question.
+ */
+ if ((ret = __env_turn_off(dbenv, flags)) != 0 && !LF_ISSET(DB_FORCE))
+ return (ret);
+
+ ret = __env_remove_env(dbenv);
if ((t_ret = __env_close(dbenv, 0)) != 0 && ret == 0)
ret = t_ret;
@@ -596,7 +632,16 @@ __env_close_pp(dbenv, flags)
ret = 0;
- PANIC_CHECK(dbenv);
+ if (PANIC_ISSET(dbenv)) {
+ /* Close all underlying file handles. */
+ (void)__file_handle_cleanup(dbenv);
+
+ /* Close all underlying threads and sockets. */
+ if (IS_ENV_REPLICATED(dbenv))
+ (void)__repmgr_close(dbenv);
+
+ PANIC_CHECK(dbenv);
+ }
ENV_ENTER(dbenv, ip);
/*
@@ -647,15 +692,14 @@ __env_close(dbenv, rep_check)
ret = 0;
/*
- * Before checking the reference count, we have to see if we were in
- * the middle of restoring transactions and need to close the open
- * files.
+ * Check to see if we were in the middle of restoring transactions and
+ * need to close the open files.
*/
if (TXN_ON(dbenv) && (t_ret = __txn_preclose(dbenv)) != 0 && ret == 0)
ret = t_ret;
#ifdef HAVE_REPLICATION
- if ((t_ret = __rep_close(dbenv)) != 0 && ret == 0)
+ if ((t_ret = __rep_env_close(dbenv)) != 0 && ret == 0)
ret = t_ret;
#endif
@@ -671,15 +715,20 @@ __env_close(dbenv, rep_check)
* Crypto comes last, because higher level close functions need
* cryptography.
*/
- if ((t_ret = __crypto_dbenv_close(dbenv)) != 0 && ret == 0)
+ if ((t_ret = __crypto_env_close(dbenv)) != 0 && ret == 0)
ret = t_ret;
#endif
+
/* If we're registered, clean up. */
if (dbenv->registry != NULL) {
(void)__envreg_unregister(dbenv, 0);
dbenv->registry = NULL;
}
+ /* Check we've closed all underlying file handles. */
+ if ((t_ret = __file_handle_cleanup(dbenv)) != 0 && ret == 0)
+ ret = t_ret;
+
/* Release any string-based configuration parameters we've copied. */
if (dbenv->db_log_dir != NULL)
__os_free(dbenv, dbenv->db_log_dir);
@@ -736,11 +785,11 @@ __env_refresh(dbenv, orig_flags, rep_check)
* __env_close.
*/
if (TXN_ON(dbenv) &&
- (t_ret = __txn_dbenv_refresh(dbenv)) != 0 && ret == 0)
+ (t_ret = __txn_env_refresh(dbenv)) != 0 && ret == 0)
ret = t_ret;
if (LOGGING_ON(dbenv) &&
- (t_ret = __log_dbenv_refresh(dbenv)) != 0 && ret == 0)
+ (t_ret = __log_env_refresh(dbenv)) != 0 && ret == 0)
ret = t_ret;
/*
@@ -750,24 +799,26 @@ __env_refresh(dbenv, orig_flags, rep_check)
if (LOCKING_ON(dbenv)) {
if (!F_ISSET(dbenv, DB_ENV_THREAD) &&
dbenv->env_lref != NULL && (t_ret = __lock_id_free(dbenv,
- ((DB_LOCKER *)dbenv->env_lref)->id)) != 0 && ret == 0)
+ (DB_LOCKER *)dbenv->env_lref)) != 0 && ret == 0)
ret = t_ret;
dbenv->env_lref = NULL;
- if ((t_ret = __lock_dbenv_refresh(dbenv)) != 0 && ret == 0)
+ if ((t_ret = __lock_env_refresh(dbenv)) != 0 && ret == 0)
ret = t_ret;
}
+ /* Discard the DB_ENV handle mutex. */
+ if ((t_ret = __mutex_free(dbenv, &dbenv->mtx_env)) != 0 && ret == 0)
+ ret = t_ret;
+
/*
* Discard DB list and its mutex.
* Discard the MT mutex.
*
* !!!
- * This must be done before we close the mpool region because we
- * may have allocated the DB handle mutex in the mpool region.
- * It must be done *after* we close the log region, though, because
- * we close databases and try to acquire the mutex when we close
- * log file handles. Ick.
+ * This must be done after we close the log region, because we close
+ * database handles and so acquire this mutex when we close log file
+ * handles.
*/
if (dbenv->db_ref != 0) {
__db_errx(dbenv,
@@ -781,7 +832,6 @@ __env_refresh(dbenv, orig_flags, rep_check)
ret = EINVAL;
}
TAILQ_INIT(&dbenv->dblist);
-
if ((t_ret = __mutex_free(dbenv, &dbenv->mtx_dblist)) != 0 && ret == 0)
ret = t_ret;
if ((t_ret = __mutex_free(dbenv, &dbenv->mtx_mt)) != 0 && ret == 0)
@@ -797,11 +847,17 @@ __env_refresh(dbenv, orig_flags, rep_check)
* If it's a private environment, flush the contents to disk.
* Recovery would have put everything back together, but it's
* faster and cleaner to flush instead.
+ *
+ * Ignore application max-write configuration, we're shutting
+ * down.
*/
if (F_ISSET(dbenv, DB_ENV_PRIVATE) &&
- (t_ret = __memp_sync(dbenv, NULL)) != 0 && ret == 0)
+ (t_ret = __memp_sync_int(dbenv, NULL, 0,
+ DB_SYNC_CACHE | DB_SYNC_SUPPRESS_WRITE, NULL, NULL)) != 0 &&
+ ret == 0)
ret = t_ret;
- if ((t_ret = __memp_dbenv_refresh(dbenv)) != 0 && ret == 0)
+
+ if ((t_ret = __memp_env_refresh(dbenv)) != 0 && ret == 0)
ret = t_ret;
}
@@ -820,12 +876,22 @@ __env_refresh(dbenv, orig_flags, rep_check)
ret = t_ret;
/*
- * Detach from the region.
+ * Refresh the replication region.
*
* Must come after we call __env_db_rep_exit above.
*/
- if (REP_ON(dbenv))
- __rep_dbenv_refresh(dbenv);
+ if (REP_ON(dbenv) &&
+ (t_ret = __rep_env_refresh(dbenv)) != 0 && ret == 0)
+ ret = t_ret;
+
+#ifdef HAVE_CRYPTO
+ /*
+ * Crypto comes last, because higher level close functions need
+ * cryptography.
+ */
+ if ((t_ret = __crypto_env_refresh(dbenv)) != 0 && ret == 0)
+ ret = t_ret;
+#endif
/*
* Mark the thread as out of the env before we get rid of the handles
@@ -835,17 +901,48 @@ __env_refresh(dbenv, orig_flags, rep_check)
(t_ret = __env_set_state(dbenv, &ip, THREAD_OUT)) != 0 && ret == 0)
ret = t_ret;
+ /*
+ * We are about to detach from the mutex region. This is the last
+ * chance we have to acquire/destroy a mutex -- acquire/destroy the
+ * mutex and release our reference.
+ *
+ * !!!
+ * There are two DbEnv methods that care about environment reference
+ * counts: DbEnv.close and DbEnv.remove. The DbEnv.close method is
+ * not a problem because it only decrements the reference count and
+ * no actual resources are discarded -- lots of threads of control
+ * can call DbEnv.close at the same time, and regardless of racing
+ * on the reference count mutex, we wouldn't have a problem. Since
+ * the DbEnv.remove method actually discards resources, we can have
+ * a problem.
+ *
+ * If we decrement the reference count to 0 here, go to sleep, and
+ * the DbEnv.remove method is called, by the time we run again, the
+ * underlying shared regions could have been removed. That's fine,
+ * except we might actually need the regions to resolve outstanding
+ * operations in the various subsystems, and if we don't have hard
+ * OS references to the regions, we could get screwed. Of course,
+ * we should have hard OS references to everything we need, but just
+ * in case, we put off decrementing the reference count as long as
+ * possible.
+ */
+ if ((t_ret = __env_ref_decrement(dbenv)) != 0 && ret == 0)
+ ret = t_ret;
+
+#ifdef HAVE_MUTEX_SUPPORT
if (MUTEX_ON(dbenv) &&
- (t_ret = __mutex_dbenv_refresh(dbenv)) != 0 && ret == 0)
+ (t_ret = __mutex_env_refresh(dbenv)) != 0 && ret == 0)
+ ret = t_ret;
+#endif
+
+ if (dbenv->reginfo != NULL && (t_ret = __env_detach(
+ dbenv, F_ISSET(dbenv, DB_ENV_PRIVATE) ? 1 : 0)) != 0 && ret == 0) {
ret = t_ret;
- if (dbenv->reginfo != NULL) {
- if ((t_ret = __db_e_detach(dbenv, 0)) != 0 && ret == 0)
- ret = t_ret;
/*
* !!!
* Don't free dbenv->reginfo or set the reference to NULL,
- * that was done by __db_e_detach().
+ * that was done by __env_detach().
*/
}
@@ -865,25 +962,26 @@ __env_refresh(dbenv, orig_flags, rep_check)
return (ret);
}
-#define DB_ADDSTR(add) { \
- /* \
- * The string might be NULL or zero-length, and the p[-1] \
- * might indirect to before the beginning of our buffer. \
- */ \
- if ((add) != NULL && (add)[0] != '\0') { \
- /* If leading slash, start over. */ \
- if (__os_abspath(add)) { \
- p = str; \
- slash = 0; \
- } \
- /* Append to the current string. */ \
- len = strlen(add); \
- if (slash) \
- *p++ = PATH_SEPARATOR[0]; \
- memcpy(p, add, len); \
- p += len; \
- slash = strchr(PATH_SEPARATOR, p[-1]) == NULL; \
- } \
+/*
+ * __file_handle_cleanup --
+ * Close any underlying open file handles so we don't leak system
+ * resources.
+ */
+static int
+__file_handle_cleanup(dbenv)
+ DB_ENV *dbenv;
+{
+ DB_FH *fhp;
+
+ if (TAILQ_FIRST(&dbenv->fdlist) == NULL)
+ return (0);
+
+ __db_errx(dbenv, "File handles still open at environment close");
+ while ((fhp = TAILQ_FIRST(&dbenv->fdlist)) != NULL) {
+ __db_errx(dbenv, "Open file handle: %s", fhp->name);
+ (void)__os_closehandle(dbenv, fhp);
+ }
+ return (EINVAL);
}
/*
@@ -902,231 +1000,3 @@ __env_get_open_flags(dbenv, flagsp)
*flagsp = dbenv->open_flags;
return (0);
}
-
-/*
- * __db_appname --
- * Given an optional DB environment, directory and file name and type
- * of call, build a path based on the DB_ENV->open rules, and return
- * it in allocated space.
- *
- * PUBLIC: int __db_appname __P((DB_ENV *, APPNAME,
- * PUBLIC: const char *, u_int32_t, DB_FH **, char **));
- */
-int
-__db_appname(dbenv, appname, file, tmp_oflags, fhpp, namep)
- DB_ENV *dbenv;
- APPNAME appname;
- const char *file;
- u_int32_t tmp_oflags;
- DB_FH **fhpp;
- char **namep;
-{
- enum { TRY_NOTSET, TRY_DATA_DIR, TRY_ENV_HOME, TRY_CREATE } try_state;
- size_t len, str_len;
- int data_entry, ret, slash, tmp_create;
- const char *a, *b;
- char *p, *str;
-
- try_state = TRY_NOTSET;
- a = b = NULL;
- data_entry = 0;
- tmp_create = 0;
-
- /*
- * We don't return a name when creating temporary files, just a file
- * handle. Default to an error now.
- */
- if (fhpp != NULL)
- *fhpp = NULL;
- if (namep != NULL)
- *namep = NULL;
-
- /*
- * Absolute path names are never modified. If the file is an absolute
- * path, we're done.
- */
- if (file != NULL && __os_abspath(file))
- return (__os_strdup(dbenv, file, namep));
-
- /* Everything else is relative to the environment home. */
- if (dbenv != NULL)
- a = dbenv->db_home;
-
-retry: /*
- * DB_APP_NONE:
- * DB_HOME/file
- * DB_APP_DATA:
- * DB_HOME/DB_DATA_DIR/file
- * DB_APP_LOG:
- * DB_HOME/DB_LOG_DIR/file
- * DB_APP_TMP:
- * DB_HOME/DB_TMP_DIR/<create>
- */
- switch (appname) {
- case DB_APP_NONE:
- break;
- case DB_APP_DATA:
- if (dbenv == NULL || dbenv->db_data_dir == NULL) {
- try_state = TRY_CREATE;
- break;
- }
-
- /*
- * First, step through the data_dir entries, if any, looking
- * for the file.
- */
- if ((b = dbenv->db_data_dir[data_entry]) != NULL) {
- ++data_entry;
- try_state = TRY_DATA_DIR;
- break;
- }
-
- /* Second, look in the environment home directory. */
- if (try_state != TRY_ENV_HOME) {
- try_state = TRY_ENV_HOME;
- break;
- }
-
- /* Third, try creation in the first data_dir entry. */
- try_state = TRY_CREATE;
- b = dbenv->db_data_dir[0];
- break;
- case DB_APP_LOG:
- if (dbenv != NULL)
- b = dbenv->db_log_dir;
- break;
- case DB_APP_TMP:
- if (dbenv != NULL)
- b = dbenv->db_tmp_dir;
- tmp_create = 1;
- break;
- }
-
- len =
- (a == NULL ? 0 : strlen(a) + 1) +
- (b == NULL ? 0 : strlen(b) + 1) +
- (file == NULL ? 0 : strlen(file) + 1);
-
- /*
- * Allocate space to hold the current path information, as well as any
- * temporary space that we're going to need to create a temporary file
- * name.
- */
-#define DB_TRAIL "BDBXXXXX"
- str_len = len + sizeof(DB_TRAIL) + 10;
- if ((ret = __os_malloc(dbenv, str_len, &str)) != 0)
- return (ret);
-
- slash = 0;
- p = str;
- DB_ADDSTR(a);
- DB_ADDSTR(b);
- DB_ADDSTR(file);
- *p = '\0';
-
- /*
- * If we're opening a data file, see if it exists. If it does,
- * return it, otherwise, try and find another one to open.
- */
- if (appname == DB_APP_DATA &&
- __os_exists(dbenv, str, NULL) != 0 && try_state != TRY_CREATE) {
- __os_free(dbenv, str);
- b = NULL;
- goto retry;
- }
-
- /* Create the file if so requested. */
- if (tmp_create &&
- (ret = __db_tmp_open(dbenv, tmp_oflags, str, fhpp)) != 0) {
- __os_free(dbenv, str);
- return (ret);
- }
-
- if (namep == NULL)
- __os_free(dbenv, str);
- else
- *namep = str;
- return (0);
-}
-
-/*
- * __db_tmp_open --
- * Create a temporary file.
- */
-static int
-__db_tmp_open(dbenv, tmp_oflags, path, fhpp)
- DB_ENV *dbenv;
- u_int32_t tmp_oflags;
- char *path;
- DB_FH **fhpp;
-{
- pid_t pid;
- int filenum, i, isdir, ret;
- char *firstx, *trv;
-
- /*
- * Check the target directory; if you have six X's and it doesn't
- * exist, this runs for a *very* long time.
- */
- if ((ret = __os_exists(dbenv, path, &isdir)) != 0) {
- __db_err(dbenv, ret, "%s", path);
- return (ret);
- }
- if (!isdir) {
- __db_err(dbenv, EINVAL, "%s", path);
- return (EINVAL);
- }
-
- /* Build the path. */
- (void)strncat(path, PATH_SEPARATOR, 1);
- (void)strcat(path, DB_TRAIL);
-
- /* Replace the X's with the process ID (in decimal). */
- __os_id(dbenv, &pid, NULL);
- for (trv = path + strlen(path); *--trv == 'X'; pid /= 10)
- *trv = '0' + (u_char)(pid % 10);
- firstx = trv + 1;
-
- /* Loop, trying to open a file. */
- for (filenum = 1;; filenum++) {
- if ((ret = __os_open(dbenv, path,
- tmp_oflags | DB_OSO_CREATE | DB_OSO_EXCL | DB_OSO_TEMP,
- __db_omode(OWNER_RW), fhpp)) == 0)
- return (0);
-
- /*
- * !!!:
- * If we don't get an EEXIST error, then there's something
- * seriously wrong. Unfortunately, if the implementation
- * doesn't return EEXIST for O_CREAT and O_EXCL regardless
- * of other possible errors, we've lost.
- */
- if (ret != EEXIST) {
- __db_err(dbenv, ret, "temporary open: %s", path);
- return (ret);
- }
-
- /*
- * Generate temporary file names in a backwards-compatible way.
- * If pid == 12345, the result is:
- * <path>/DB12345 (tried above, the first time through).
- * <path>/DBa2345 ... <path>/DBz2345
- * <path>/DBaa345 ... <path>/DBaz345
- * <path>/DBba345, and so on.
- *
- * XXX
- * This algorithm is O(n**2) -- that is, creating 100 temporary
- * files requires 5,000 opens, creating 1000 files requires
- * 500,000. If applications open a lot of temporary files, we
- * could improve performance by switching to timestamp-based
- * file names.
- */
- for (i = filenum, trv = firstx; i > 0; i = (i - 1) / 26)
- if (*trv++ == '\0')
- return (EINVAL);
-
- for (i = filenum; i > 0; i = (i - 1) / 26)
- *--trv = 'a' + ((i - 1) % 26);
- }
- /* NOTREACHED */
-}
diff --git a/db/env/env_recover.c b/db/env/env_recover.c
index 46d927dc1..3d0f0da98 100644
--- a/db/env/env_recover.c
+++ b/db/env/env_recover.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: env_recover.c,v 12.34 2006/09/09 14:28:22 bostic Exp $
+ * $Id: env_recover.c,v 12.49 2007/06/08 17:34:55 bostic Exp $
*/
#include "db_config.h"
@@ -21,15 +20,18 @@
#ifndef lint
static const char copyright[] =
- "Copyright (c) 1996-2006\nOracle Corporation. All rights reserved.\n";
+ "Copyright (c) 1996,2007 Oracle. All rights reserved.\n";
#endif
static int __db_log_corrupt __P((DB_ENV *, DB_LSN *));
static int __env_init_rec_42 __P((DB_ENV *));
static int __env_init_rec_43 __P((DB_ENV *));
-static int __env_init_rec_45 __P((DB_ENV *));
+static int __env_init_rec_46 __P((DB_ENV *));
static int __log_earliest __P((DB_ENV *, DB_LOGC *, int32_t *, DB_LSN *));
+
+#ifndef HAVE_BREW
static double __lsn_diff __P((DB_LSN *, DB_LSN *, DB_LSN *, u_int32_t, int));
+#endif
/*
* __db_apprec --
@@ -204,7 +206,7 @@ __db_apprec(dbenv, max_lsn, trunclsn, update, flags)
ZERO_LSN(last_lsn);
#endif
memset(&data, 0, sizeof(data));
- if ((ret = __log_c_get(logc, &last_lsn, &data, DB_LAST)) != 0) {
+ if ((ret = __logc_get(logc, &last_lsn, &data, DB_LAST)) != 0) {
if (ret == DB_NOTFOUND)
ret = 0;
else
@@ -219,7 +221,7 @@ __db_apprec(dbenv, max_lsn, trunclsn, update, flags)
if (txnid != 0)
break;
- } while ((ret = __log_c_get(logc, &lsn, &data, DB_PREV)) == 0);
+ } while ((ret = __logc_get(logc, &lsn, &data, DB_PREV)) == 0);
/*
* There are no transactions, so there is nothing to do unless
@@ -249,7 +251,7 @@ __db_apprec(dbenv, max_lsn, trunclsn, update, flags)
* Get the first LSN in the log; it's an initial default
* even if this is not a catastrophic recovery.
*/
- if ((ret = __log_c_get(logc, &ckp_lsn, &data, DB_FIRST)) != 0) {
+ if ((ret = __logc_get(logc, &ckp_lsn, &data, DB_FIRST)) != 0) {
if (ret == DB_NOTFOUND)
ret = 0;
else
@@ -261,7 +263,7 @@ __db_apprec(dbenv, max_lsn, trunclsn, update, flags)
if (!LF_ISSET(DB_RECOVER_FATAL)) {
if ((ret = __txn_getckp(dbenv, &ckp_lsn)) == 0 &&
- (ret = __log_c_get(logc, &ckp_lsn, &data, DB_SET)) == 0) {
+ (ret = __logc_get(logc, &ckp_lsn, &data, DB_SET)) == 0) {
/* We have a recent checkpoint. This is LSN (1). */
if ((ret = __txn_ckp_read(dbenv,
data.data, &ckp_args)) != 0) {
@@ -303,12 +305,13 @@ __db_apprec(dbenv, max_lsn, trunclsn, update, flags)
/* Get the record at first_lsn if we don't have it already. */
if (!have_rec &&
- (ret = __log_c_get(logc, &first_lsn, &data, DB_SET)) != 0) {
+ (ret = __logc_get(logc, &first_lsn, &data, DB_SET)) != 0) {
__db_errx(dbenv, "Checkpoint LSN record [%ld][%ld] not found",
(u_long)first_lsn.file, (u_long)first_lsn.offset);
goto err;
}
+#ifndef HAVE_BREW
if (dbenv->db_feedback != NULL) {
if (last_lsn.file == first_lsn.file)
nfiles = (double)
@@ -321,6 +324,7 @@ __db_apprec(dbenv, max_lsn, trunclsn, update, flags)
if (nfiles < 0.001)
nfiles = 0.001;
}
+#endif
/* Find a low txnid. */
ret = 0;
@@ -331,7 +335,7 @@ __db_apprec(dbenv, max_lsn, trunclsn, update, flags)
if (txnid != 0)
break;
- } while ((ret = __log_c_get(logc, &lsn, &data, DB_NEXT)) == 0);
+ } while ((ret = __logc_get(logc, &lsn, &data, DB_NEXT)) == 0);
/*
* There are no transactions and we're not recovering to an LSN (see
@@ -346,7 +350,7 @@ __db_apprec(dbenv, max_lsn, trunclsn, update, flags)
/* Reset to the first lsn. */
if (ret != 0 ||
- (ret = __log_c_get(logc, &first_lsn, &data, DB_SET)) != 0)
+ (ret = __logc_get(logc, &first_lsn, &data, DB_SET)) != 0)
goto err;
/* Initialize the transaction list. */
@@ -378,14 +382,18 @@ __db_apprec(dbenv, max_lsn, trunclsn, update, flags)
(u_long)first_lsn.file, (u_long)first_lsn.offset);
pass = "backward";
- for (ret = __log_c_get(logc, &lsn, &data, DB_LAST);
+ for (ret = __logc_get(logc, &lsn, &data, DB_LAST);
ret == 0 && LOG_COMPARE(&lsn, &first_lsn) >= 0;
- ret = __log_c_get(logc, &lsn, &data, DB_PREV)) {
+ ret = __logc_get(logc, &lsn, &data, DB_PREV)) {
+#ifdef HAVE_BREW
+ COMPQUIET(progress, 0);
+#else
if (dbenv->db_feedback != NULL) {
progress = 34 + (int)(33 * (__lsn_diff(&first_lsn,
&last_lsn, &lsn, log_size, 0) / nfiles));
dbenv->db_feedback(dbenv, DB_RECOVER, progress);
}
+#endif
tlsn = lsn;
ret = __db_dispatch(dbenv, dbenv->recover_dtab,
dbenv->recover_dtab_size, &data, &tlsn,
@@ -421,13 +429,15 @@ __db_apprec(dbenv, max_lsn, trunclsn, update, flags)
if (max_lsn != NULL || dbenv->tx_timestamp != 0)
stop_lsn = ((DB_TXNHEAD *)txninfo)->maxlsn;
- for (ret = __log_c_get(logc, &lsn, &data, DB_NEXT);
- ret == 0; ret = __log_c_get(logc, &lsn, &data, DB_NEXT)) {
+ for (ret = __logc_get(logc, &lsn, &data, DB_NEXT);
+ ret == 0; ret = __logc_get(logc, &lsn, &data, DB_NEXT)) {
+#ifndef HAVE_BREW
if (dbenv->db_feedback != NULL) {
progress = 67 + (int)(33 * (__lsn_diff(&first_lsn,
&last_lsn, &lsn, log_size, 1) / nfiles));
dbenv->db_feedback(dbenv, DB_RECOVER, progress);
}
+#endif
tlsn = lsn;
ret = __db_dispatch(dbenv, dbenv->recover_dtab,
dbenv->recover_dtab_size, &data, &tlsn,
@@ -467,11 +477,18 @@ __db_apprec(dbenv, max_lsn, trunclsn, update, flags)
if (dbenv->tx_timestamp != 0) {
/* We are going to truncate, so we'd best close the cursor. */
- if (logc != NULL && (ret = __log_c_close(logc)) != 0)
- goto err;
- logc = NULL;
- /* Flush everything to disk, we are losing the log. */
- if ((ret = __memp_sync(dbenv, NULL)) != 0)
+ if (logc != NULL) {
+ if ((ret = __logc_close(logc)) != 0)
+ goto err;
+ logc = NULL;
+ }
+
+ /*
+ * Flush everything to disk, we are losing the log. It's
+ * recovery, ignore any application max-write configuration.
+ */
+ if ((ret = __memp_sync_int(dbenv, NULL, 0,
+ DB_SYNC_CACHE | DB_SYNC_SUPPRESS_WRITE, NULL, NULL)) != 0)
goto err;
region->last_ckp = ((DB_TXNHEAD *)txninfo)->ckplsn;
if ((ret = __log_vtruncate(dbenv,
@@ -487,15 +504,16 @@ __db_apprec(dbenv, max_lsn, trunclsn, update, flags)
* if we roll things further back from here.
* These pages are only known in memory at this pont.
*/
- if ((ret = __db_do_the_limbo(dbenv,
- NULL, NULL, txninfo, LIMBO_COMPENSATE)) != 0)
+ if ((ret = __db_do_the_limbo(dbenv,
+ NULL, NULL, txninfo, LIMBO_COMPENSATE)) != 0)
goto err;
#endif
}
done:
/* Take a checkpoint here to force any dirty data pages to disk. */
- if ((ret = __txn_checkpoint(dbenv, 0, 0, DB_FORCE)) != 0) {
+ if (!IS_REP_CLIENT(dbenv) && (ret = __txn_checkpoint(dbenv, 0, 0,
+ DB_CKP_INTERNAL | DB_FORCE)) != 0) {
/*
* If there was no space for the checkpoint we can
* still bring the environment up. No updates will
@@ -508,9 +526,15 @@ done:
goto err;
}
- /* Close all the db files that are open. */
- if ((ret = __dbreg_close_files(dbenv)) != 0)
- goto err;
+ if (region->stat.st_nrestores == 0) {
+ /* Close all the db files that are open. */
+ if ((ret = __dbreg_close_files(dbenv, 0)) != 0)
+ goto err;
+ } else {
+ if ((ret = __dbreg_mark_restored(dbenv)) != 0)
+ goto err;
+ F_SET(dbenv->lg_handle, DBLOG_OPENFILES);
+ }
if (max_lsn != NULL) {
if (!IS_ZERO_LSN(((DB_TXNHEAD *)txninfo)->ckplsn))
@@ -520,7 +544,7 @@ done:
goto err;
/* We are going to truncate, so we'd best close the cursor. */
- if (logc != NULL && (ret = __log_c_close(logc)) != 0)
+ if (logc != NULL && (ret = __logc_close(logc)) != 0)
goto err;
logc = NULL;
if ((ret = __log_vtruncate(dbenv,
@@ -536,7 +560,7 @@ done:
if ((ret = __log_cursor(dbenv, &logc)) != 0)
goto err;
if ((ret =
- __log_c_get(logc, &first_lsn, &data, DB_FIRST)) != 0) {
+ __logc_get(logc, &first_lsn, &data, DB_FIRST)) != 0) {
if (ret == DB_NOTFOUND)
ret = 0;
else
@@ -544,7 +568,7 @@ done:
goto err;
}
if ((ret = __txn_getckp(dbenv, &first_lsn)) == 0 &&
- (ret = __log_c_get(logc, &first_lsn, &data, DB_SET)) == 0) {
+ (ret = __logc_get(logc, &first_lsn, &data, DB_SET)) == 0) {
/* We have a recent checkpoint. This is LSN (1). */
if ((ret = __txn_ckp_read(dbenv,
data.data, &ckp_args)) != 0) {
@@ -557,7 +581,7 @@ done:
first_lsn = ckp_args->ckp_lsn;
__os_free(dbenv, ckp_args);
}
- if ((ret = __log_c_get(logc, &first_lsn, &data, DB_SET)) != 0)
+ if ((ret = __logc_get(logc, &first_lsn, &data, DB_SET)) != 0)
goto err;
if ((ret = __env_openfiles(dbenv, logc,
txninfo, &data, &first_lsn, max_lsn, nfiles, 1)) != 0)
@@ -570,17 +594,30 @@ done:
if ((ret = __txn_reset(dbenv)) != 0)
goto err;
} else {
- /*
- * If we have restored prepared txns then they are in process
- * as far as replication is concerned.
- */
- if (REP_ON(dbenv))
- dbenv->rep_handle->region->op_cnt =
- region->stat.st_nrestores;
if ((ret = __txn_recycle_id(dbenv)) != 0)
goto err;
}
+ /*
+ * We must be sure to zero the tail of the log. Otherwise a partial
+ * record may be at the end of the log and it may never be fully
+ * overwritten.
+ */
+ if (max_lsn == NULL && dbenv->tx_timestamp == 0) {
+ /* We are going to truncate, so we'd best close the cursor. */
+ if (logc != NULL && (ret = __logc_close(logc)) != 0)
+ goto err;
+ logc = NULL;
+
+ /* Truncate from beyond the last record in the log. */
+ if ((ret =
+ __log_current_lsn(dbenv, &last_lsn, NULL, NULL)) != 0)
+ goto err;
+ if ((ret = __log_vtruncate(dbenv,
+ &last_lsn, &region->last_ckp, NULL)) != 0)
+ goto err;
+ }
+
if (FLD_ISSET(dbenv->verbose, DB_VERB_RECOVERY)) {
(void)time(&now);
__db_msg(dbenv,
@@ -600,7 +637,7 @@ msgerr: __db_errx(dbenv,
(u_long)lsn.file, (u_long)lsn.offset, pass);
}
-err: if (logc != NULL && (t_ret = __log_c_close(logc)) != 0 && ret == 0)
+err: if (logc != NULL && (t_ret = __logc_close(logc)) != 0 && ret == 0)
ret = t_ret;
if (txninfo != NULL)
@@ -614,6 +651,7 @@ err: if (logc != NULL && (t_ret = __log_c_close(logc)) != 0 && ret == 0)
return (ret);
}
+#ifndef HAVE_BREW
/*
* Figure out how many logfiles we have processed. If we are moving
* forward (is_forward != 0), then we're computing current - low. If
@@ -658,6 +696,7 @@ __lsn_diff(low, high, current, max, is_forward)
}
return (nf);
}
+#endif
/*
* __log_backup --
@@ -695,7 +734,7 @@ __log_backup(dbenv, logc, max_lsn, start_lsn, cmp)
* Cmp tells us whether to check the ckp_lsn or the last_ckp
* fields in the checkpoint record.
*/
- while ((ret = __log_c_get(logc, &lsn, &data, DB_SET)) == 0) {
+ while ((ret = __logc_get(logc, &lsn, &data, DB_SET)) == 0) {
if ((ret = __txn_ckp_read(dbenv, data.data, &ckp_args)) != 0)
return (ret);
if (cmp == CKPLSN_CMP) {
@@ -742,7 +781,7 @@ __log_backup(dbenv, logc, max_lsn, start_lsn, cmp)
*/
err: if (IS_ZERO_LSN(*start_lsn) && cmp == CKPLSN_CMP &&
(ret == 0 || ret == DB_NOTFOUND))
- ret = __log_c_get(logc, start_lsn, &data, DB_FIRST);
+ ret = __logc_get(logc, start_lsn, &data, DB_FIRST);
return (ret);
}
@@ -772,8 +811,8 @@ __log_earliest(dbenv, logc, lowtime, lowlsn)
* Read forward through the log looking for the first checkpoint
* record whose ckp_lsn is greater than first_lsn.
*/
- for (ret = __log_c_get(logc, &first_lsn, &data, DB_FIRST);
- ret == 0; ret = __log_c_get(logc, &lsn, &data, DB_NEXT)) {
+ for (ret = __logc_get(logc, &first_lsn, &data, DB_FIRST);
+ ret == 0; ret = __logc_get(logc, &lsn, &data, DB_NEXT)) {
memcpy(&rectype, data.data, sizeof(rectype));
if (rectype != DB___txn_ckp)
continue;
@@ -831,12 +870,17 @@ __env_openfiles(dbenv, logc, txninfo,
lsn = *open_lsn;
for (;;) {
+#ifdef HAVE_BREW
+ COMPQUIET(nfiles, (double)0.001);
+ COMPQUIET(progress, 0);
+#else
if (in_recovery && dbenv->db_feedback != NULL) {
DB_ASSERT(dbenv, last_lsn != NULL);
progress = (int)(33 * (__lsn_diff(open_lsn,
last_lsn, &lsn, log_size, 1) / nfiles));
dbenv->db_feedback(dbenv, DB_RECOVER, progress);
}
+#endif
tlsn = lsn;
ret = __db_dispatch(dbenv,
dbenv->recover_dtab, dbenv->recover_dtab_size, data, &tlsn,
@@ -848,7 +892,7 @@ __env_openfiles(dbenv, logc, txninfo,
(u_long)lsn.file, (u_long)lsn.offset);
break;
}
- if ((ret = __log_c_get(logc, &lsn, data, DB_NEXT)) != 0) {
+ if ((ret = __logc_get(logc, &lsn, data, DB_NEXT)) != 0) {
if (ret == DB_NOTFOUND) {
if (last_lsn != NULL &&
LOG_COMPARE(&lsn, last_lsn) != 0)
@@ -890,14 +934,18 @@ __env_init_rec(dbenv, version)
* functions. Then we overwrite only specific entries based on
* each previous version we support.
*/
- if ((ret = __env_init_rec_45(dbenv)) != 0)
+ if ((ret = __env_init_rec_46(dbenv)) != 0)
return (ret);
ret = 0;
switch (version) {
/*
* There are no log record/recovery differences between
* 4.4 and 4.5. The log version changed due to checksum.
+ * There are no log recovery differences between
+ * 4.5 and 4.6. The name of the rep_gen in txn_checkpoint
+ * changed (to spare, since we don't use it anymore).
*/
+ case DB_LOGVERSION_46:
case DB_LOGVERSION_45:
case DB_LOGVERSION_44:
break;
@@ -979,11 +1027,11 @@ err:
}
/*
- * __env_init_rec_45 --
+ * __env_init_rec_46 --
*
*/
static int
-__env_init_rec_45(dbenv)
+__env_init_rec_46(dbenv)
DB_ENV *dbenv;
{
int ret;
diff --git a/db/env/env_region.c b/db/env/env_region.c
index 76d7958d8..8207e9454 100644
--- a/db/env/env_region.c
+++ b/db/env/env_region.c
@@ -1,40 +1,38 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: env_region.c,v 12.19 2006/08/24 14:45:40 bostic Exp $
+ * $Id: env_region.c,v 12.35 2007/06/05 13:25:26 ubell Exp $
*/
#include "db_config.h"
#include "db_int.h"
-#include "dbinc/crypto.h"
#include "dbinc/mp.h"
-static void __db_des_destroy __P((DB_ENV *, REGION *));
-static int __db_des_get __P((DB_ENV *, REGINFO *, REGINFO *, REGION **));
-static int __db_e_remfile __P((DB_ENV *));
-static int __db_faultmem __P((DB_ENV *, void *, size_t, int));
+static void __env_des_destroy __P((DB_ENV *, REGION *));
+static int __env_des_get __P((DB_ENV *, REGINFO *, REGINFO *, REGION **));
+static int __env_faultmem __P((DB_ENV *, void *, size_t, int));
+static void __env_remove_file __P((DB_ENV *));
/*
- * __db_e_attach
+ * __env_attach
* Join/create the environment
*
- * PUBLIC: int __db_e_attach __P((DB_ENV *, u_int32_t *));
+ * PUBLIC: int __env_attach __P((DB_ENV *, u_int32_t *, int, int));
*/
int
-__db_e_attach(dbenv, init_flagsp)
+__env_attach(dbenv, init_flagsp, create_ok, retry_ok)
DB_ENV *dbenv;
u_int32_t *init_flagsp;
+ int create_ok, retry_ok;
{
REGENV *renv;
REGENV_REF ref;
REGINFO *infop;
REGION *rp, tregion;
- size_t size;
- size_t nrw;
+ size_t nrw, s, size;
u_int32_t bytes, i, mbytes, nregions;
u_int retry_cnt;
int majver, minver, patchver, ret, segid;
@@ -53,7 +51,7 @@ loop: renv = NULL;
infop->type = REGION_TYPE_ENV;
infop->id = REGION_ID_ENV;
infop->flags = REGION_JOIN_OK;
- if (F_ISSET(dbenv, DB_ENV_CREATE))
+ if (create_ok)
F_SET(infop, REGION_CREATE_OK);
/*
@@ -88,8 +86,8 @@ loop: renv = NULL;
* failure in all but one. POSIX 1003.1 requires that EEXIST be the
* errno return value -- I sure hope they're right.
*/
- if (F_ISSET(dbenv, DB_ENV_CREATE)) {
- if ((ret = __os_open(dbenv, infop->name,
+ if (create_ok) {
+ if ((ret = __os_open(dbenv, infop->name, 0,
DB_OSO_CREATE | DB_OSO_EXCL | DB_OSO_REGION,
dbenv->db_mode, &dbenv->lockfhp)) == 0)
goto creation;
@@ -104,7 +102,7 @@ loop: renv = NULL;
* we're done.)
*/
if ((ret = __os_open(
- dbenv, infop->name, DB_OSO_REGION, 0, &dbenv->lockfhp)) != 0)
+ dbenv, infop->name, 0, DB_OSO_REGION, 0, &dbenv->lockfhp)) != 0)
goto err;
/* The region exists, it's not okay to recreate it. */
@@ -206,8 +204,8 @@ loop: renv = NULL;
/*
* The environment's REGENV structure has to live at offset 0 instead
- * of the usual shalloc information. Set the primary reference and
- * correct the "addr" value to reference the shalloc region. Note,
+ * of the usual alloc information. Set the primary reference and
+ * correct the "addr" value to reference the alloc region. Note,
* this means that all of our offsets (R_ADDR/R_OFFSET) get shifted
* as well, but that should be fine.
*/
@@ -218,10 +216,6 @@ loop: renv = NULL;
/*
* Make sure the region matches our build. Special case a region
* that's all nul bytes, just treat it like any other corruption.
- *
- * !!!
- * We don't display the major/minor version from the environment,
- * because it may be in a different place in the two regions.
*/
if (renv->majver != DB_VERSION_MAJOR ||
renv->minver != DB_VERSION_MINOR) {
@@ -261,7 +255,7 @@ loop: renv = NULL;
* Get a reference to the underlying REGION information for this
* environment.
*/
- if ((ret = __db_des_get(dbenv, infop, infop, &rp)) != 0 || rp == NULL)
+ if ((ret = __env_des_get(dbenv, infop, infop, &rp)) != 0 || rp == NULL)
goto find_err;
infop->rp = rp;
@@ -276,11 +270,6 @@ loop: renv = NULL;
if (rp->size != size)
goto retry;
- /* Increment the reference count. */
- MUTEX_LOCK(dbenv, renv->mtx_regenv);
- ++renv->refcnt;
- MUTEX_UNLOCK(dbenv, renv->mtx_regenv);
-
/*
* Check our callers configuration flags, it's an error to configure
* incompatible or additional subsystems in an existing environment.
@@ -302,7 +291,7 @@ loop: renv = NULL;
* Fault the pages into memory. Note, do this AFTER releasing the
* lock, because we're only reading the pages, not writing them.
*/
- (void)__db_faultmem(dbenv, infop->primary, rp->size, 0);
+ (void)__env_faultmem(dbenv, infop->primary, rp->size, 0);
/* Everything looks good, we're done. */
dbenv->reginfo = infop;
@@ -316,14 +305,23 @@ creation:
* Allocate room for REGION structures plus overhead.
*
* XXX
- * Overhead is so high because encryption passwds are stored in the
- * base environment region, as are replication vote arrays. This is
- * a bug, not a feature, replication needs its own region.
+ * Overhead is so high because encryption passwds, replication vote
+ * arrays and the thread control block table are all stored in the
+ * base environment region. This is a bug, at the least replication
+ * should have its own region.
+ *
+ * Allocate space for thread info blocks. Max is only advisory,
+ * so we allocate 25% more.
*/
memset(&tregion, 0, sizeof(tregion));
- nregions = dbenv->mp_ncache + 10;
- tregion.size =
- (roff_t)(nregions * sizeof(REGION) + dbenv->passwd_len + 16 * 1024);
+ nregions = __memp_max_regions(dbenv) + 10;
+ s = nregions * sizeof(REGION);
+ s += dbenv->passwd_len;
+ s += (dbenv->thr_max + dbenv->thr_max / 4) *
+ __env_alloc_size(sizeof(DB_THREAD_INFO));
+ s += dbenv->thr_nbucket * __env_alloc_size(sizeof(DB_HASHTAB));
+ s += 16 * 1024;
+ tregion.size = s;
tregion.segid = INVALID_REGION_SEGID;
if ((ret = __os_r_attach(dbenv, infop, &tregion)) != 0)
goto err;
@@ -332,7 +330,7 @@ creation:
* Fault the pages into memory. Note, do this BEFORE we initialize
* anything, because we're writing the pages, not just reading them.
*/
- (void)__db_faultmem(dbenv, infop->addr, tregion.size, 1);
+ (void)__env_faultmem(dbenv, infop->addr, tregion.size, 1);
/*
* The first object in the region is the REGENV structure. This is
@@ -348,13 +346,13 @@ creation:
* the entire region as allocation space.
*
* Set the primary reference and correct the "addr" value to reference
- * the shalloc region. Note, this requires that we "uncorrect" it at
+ * the alloc region. Note, this requires that we "uncorrect" it at
* region detach, and that all of our offsets (R_ADDR/R_OFFSET) will be
* shifted as well, but that should be fine.
*/
infop->primary = infop->addr;
infop->addr = (u_int8_t *)infop->addr + sizeof(REGENV);
- __db_shalloc_init(infop, tregion.size - sizeof(REGENV));
+ __env_alloc_init(infop, tregion.size - sizeof(REGENV));
/*
* Initialize the rest of the REGENV structure. (Don't set the magic
@@ -372,11 +370,6 @@ creation:
(void)time(&renv->timestamp);
__os_unique_id(dbenv, &renv->envid);
- if ((ret = __mutex_alloc(
- dbenv, MTX_ENV_REGION, 0, &renv->mtx_regenv)) != 0)
- goto err;
- renv->refcnt = 1;
-
/*
* Initialize init_flags to store the flags that any other environment
* handle that uses DB_JOINENV to join this environment will need.
@@ -390,8 +383,7 @@ creation:
* we're manipulating the list.
*/
renv->region_cnt = nregions;
- if ((ret =
- __db_shalloc(infop, nregions * sizeof(REGION), 0, &rp)) != 0) {
+ if ((ret = __env_alloc(infop, nregions * sizeof(REGION), &rp)) != 0) {
__db_err(
dbenv, ret, "unable to create new master region array");
goto err;
@@ -400,11 +392,10 @@ creation:
for (i = 0; i < nregions; ++i, ++rp)
rp->id = INVALID_REGION_ID;
- renv->cipher_off = INVALID_ROFF;
-
- renv->rep_off = INVALID_ROFF;
+ renv->cipher_off = renv->thread_off = renv->rep_off = INVALID_ROFF;
renv->flags = 0;
renv->op_timestamp = renv->rep_timestamp = 0;
+ renv->mtx_regenv = MUTEX_INVALID;
/*
* Get the underlying REGION structure for this environment. Note,
@@ -412,7 +403,7 @@ creation:
* structure, which is backwards from the normal procedure. Update
* the REGION structure.
*/
- if ((ret = __db_des_get(dbenv, infop, infop, &rp)) != 0) {
+ if ((ret = __env_des_get(dbenv, infop, infop, &rp)) != 0) {
find_err: __db_errx(dbenv, "%s: unable to find environment", infop->name);
if (ret == 0)
ret = EINVAL;
@@ -494,7 +485,7 @@ retry: /* Close any open file handle. */
/* If we had a temporary error, wait awhile and try again. */
if (ret == 0) {
- if (++retry_cnt > 3) {
+ if (!retry_ok || ++retry_cnt > 3) {
__db_errx(dbenv, "unable to join the environment");
ret = EAGAIN;
} else {
@@ -507,13 +498,13 @@ retry: /* Close any open file handle. */
}
/*
- * __db_e_golive --
+ * __env_turn_on --
* Turn on the created environment.
*
- * PUBLIC: int __db_e_golive __P((DB_ENV *));
+ * PUBLIC: int __env_turn_on __P((DB_ENV *));
*/
int
-__db_e_golive(dbenv)
+__env_turn_on(dbenv)
DB_ENV *dbenv;
{
REGENV *renv;
@@ -536,36 +527,173 @@ __db_e_golive(dbenv)
}
/*
- * __db_e_detach --
- * Detach from the environment.
+ * __env_turn_off --
+ * Turn off the environment.
*
- * PUBLIC: int __db_e_detach __P((DB_ENV *, int));
+ * PUBLIC: int __env_turn_off __P((DB_ENV *, u_int32_t));
*/
int
-__db_e_detach(dbenv, destroy)
+__env_turn_off(dbenv, flags)
DB_ENV *dbenv;
- int destroy;
+ u_int32_t flags;
{
REGENV *renv;
REGINFO *infop;
- REGION rp;
int ret, t_ret;
- infop = dbenv->reginfo;
- renv = infop->primary;
ret = 0;
- if (F_ISSET(dbenv, DB_ENV_PRIVATE))
- destroy = 1;
+ /*
+ * Connect to the environment: If we can't join the environment, we
+ * guess it's because it doesn't exist and we're done.
+ *
+ * If the environment exists, attach and lock the environment.
+ */
+ if (__env_attach(dbenv, NULL, 0, 1) != 0)
+ return (0);
+
+ infop = dbenv->reginfo;
+ renv = infop->primary;
- /* Decrement the reference count. */
MUTEX_LOCK(dbenv, renv->mtx_regenv);
- if (renv->refcnt == 0)
- __db_errx(dbenv, "environment reference count went negative");
+
+ /*
+ * If the environment is in use, we're done unless we're forcing the
+ * issue or the environment has panic'd. (If the environment panic'd,
+ * the thread holding the reference count may not have cleaned up, so
+ * we clean up. It's possible the application didn't plan on removing
+ * the environment in this particular call, but panic'd environments
+ * aren't useful to anyone.)
+ *
+ * Otherwise, panic the environment and overwrite the magic number so
+ * any thread of control attempting to connect (or racing with us) will
+ * back off and retry, or just die.
+ */
+ if (renv->refcnt > 0 && !LF_ISSET(DB_FORCE) && !renv->panic)
+ ret = EBUSY;
else
- --renv->refcnt;
+ renv->panic = 1;
+
+ /*
+ * Unlock the environment (nobody should need this lock because
+ * we've poisoned the pool) and detach from the environment.
+ */
MUTEX_UNLOCK(dbenv, renv->mtx_regenv);
+ if ((t_ret = __env_detach(dbenv, 0)) != 0 && ret == 0)
+ ret = t_ret;
+
+ return (ret);
+}
+
+/*
+ * __env_panic_set --
+ * Set/clear unrecoverable error.
+ *
+ * PUBLIC: void __env_panic_set __P((DB_ENV *, int));
+ */
+void
+__env_panic_set(dbenv, on)
+ DB_ENV *dbenv;
+ int on;
+{
+ if (dbenv != NULL && dbenv->reginfo != NULL)
+ ((REGENV *)
+ ((REGINFO *)dbenv->reginfo)->primary)->panic = on ? 1 : 0;
+}
+
+/*
+ * __env_ref_increment --
+ * Increment the environment's reference count.
+ *
+ * PUBLIC: int __env_ref_increment __P((DB_ENV *));
+ */
+int
+__env_ref_increment(dbenv)
+ DB_ENV *dbenv;
+{
+ REGENV *renv;
+ REGINFO *infop;
+ int ret;
+
+ infop = dbenv->reginfo;
+ renv = infop->primary;
+
+ /* If we're creating the primary region, allocate a mutex. */
+ if (F_ISSET(infop, REGION_CREATE)) {
+ if ((ret = __mutex_alloc(
+ dbenv, MTX_ENV_REGION, 0, &renv->mtx_regenv)) != 0)
+ return (ret);
+ renv->refcnt = 1;
+ } else {
+ /* Lock the environment, increment the reference, unlock. */
+ MUTEX_LOCK(dbenv, renv->mtx_regenv);
+ ++renv->refcnt;
+ MUTEX_UNLOCK(dbenv, renv->mtx_regenv);
+ }
+
+ F_SET(dbenv, DB_ENV_REF_COUNTED);
+ return (0);
+}
+
+/*
+ * __env_ref_decrement --
+ * Decrement the environment's reference count.
+ *
+ * PUBLIC: int __env_ref_decrement __P((DB_ENV *));
+ */
+int
+__env_ref_decrement(dbenv)
+ DB_ENV *dbenv;
+{
+ REGENV *renv;
+ REGINFO *infop;
+
+ /* Be cautious -- we may not have an environment. */
+ if ((infop = dbenv->reginfo) == NULL)
+ return (0);
+
+ renv = infop->primary;
+
+ /* Even if we have an environment, may not have reference counted it. */
+ if (F_ISSET(dbenv, DB_ENV_REF_COUNTED)) {
+ /* Lock the environment, decrement the reference, unlock. */
+ MUTEX_LOCK(dbenv, renv->mtx_regenv);
+ if (renv->refcnt == 0)
+ __db_errx(dbenv,
+ "environment reference count went negative");
+ else
+ --renv->refcnt;
+ MUTEX_UNLOCK(dbenv, renv->mtx_regenv);
+
+ F_CLR(dbenv, DB_ENV_REF_COUNTED);
+ }
+
+ /* If a private environment, we're done with the mutex, destroy it. */
+ return (F_ISSET(dbenv, DB_ENV_PRIVATE) ?
+ __mutex_free(dbenv, &renv->mtx_regenv) : 0);
+}
+
+/*
+ * __env_detach --
+ * Detach from the environment.
+ *
+ * PUBLIC: int __env_detach __P((DB_ENV *, int));
+ */
+int
+__env_detach(dbenv, destroy)
+ DB_ENV *dbenv;
+ int destroy;
+{
+ REGENV *renv;
+ REGINFO *infop;
+ REGION rp;
+ int ret, t_ret;
+
+ infop = dbenv->reginfo;
+ renv = infop->primary;
+ ret = 0;
+
/* Close the locking file handle. */
if (dbenv->lockfhp != NULL) {
if ((t_ret =
@@ -575,24 +703,11 @@ __db_e_detach(dbenv, destroy)
}
/*
- * Release the region, and kill our reference.
+ * If a private region, return the memory to the heap. Not needed for
+ * filesystem-backed or system shared memory regions, that memory isn't
+ * owned by any particular process.
*/
if (destroy) {
-#ifdef HAVE_CRYPTO
- /*
- * Destroy any system resources the crypto subsystem may have
- * acquired.
- */
- if ((t_ret = __crypto_region_destroy(dbenv)) != 0 && ret == 0)
- ret = t_ret;
-#endif
- /*
- * Destroy any system resources the replication subsystem may
- * have acquired.
- */
- if ((t_ret = __rep_region_destroy(dbenv)) != 0 && ret == 0)
- ret = t_ret;
-
/*
* Free the REGION array.
*
@@ -605,25 +720,15 @@ __db_e_detach(dbenv, destroy)
infop->rp = &rp;
if (renv->region_off != INVALID_ROFF)
- __db_shalloc_free(
+ __env_alloc_free(
infop, R_ADDR(infop, renv->region_off));
-
- /* Discard any mutex resources we may have acquired. */
- if ((t_ret =
- __mutex_free(dbenv, &renv->mtx_regenv)) != 0 && ret == 0)
- ret = t_ret;
}
/*
- * Set the DB_ENV->reginfo field to NULL. First, DB_ENV->remove calls
- * __env_remove to do the region remove, and __envremove attached and
- * then detaches from the region. We don't want to return to
- * DB_ENV->remove with a non-NULL DB_ENV->reginfo field because it will
- * attempt to detach again as part of its cleanup.
- *
- * Second, DB code uses DB_ENV->reginfo to decide if it's OK to read
- * the underlying region. We're about to destroy what it references,
- * so it needs to be cleared.
+ * Set the DB_ENV->reginfo field to NULL. BDB uses the DB_ENV->reginfo
+ * field to decide if the underlying region can be accessed or needs
+ * cleanup. We're about to destroy what it references, so it needs to
+ * be cleared.
*/
dbenv->reginfo = NULL;
@@ -642,160 +747,110 @@ __db_e_detach(dbenv, destroy)
}
/*
- * __db_e_remove --
- * Discard an environment if it's not in use.
+ * __env_remove_env --
+ * Remove an environment.
*
- * PUBLIC: int __db_e_remove __P((DB_ENV *, u_int32_t));
+ * PUBLIC: int __env_remove_env __P((DB_ENV *));
*/
int
-__db_e_remove(dbenv, flags)
+__env_remove_env(dbenv)
DB_ENV *dbenv;
- u_int32_t flags;
{
REGENV *renv;
REGINFO *infop, reginfo;
REGION *rp;
- u_int32_t db_env_reset, i;
- int ret;
+ u_int32_t flags_orig, i;
- db_env_reset = F_ISSET(dbenv, DB_ENV_NOLOCKING | DB_ENV_NOPANIC);
+ /*
+ * We do not want to hang on a mutex request, nor do we care about
+ * panics.
+ */
+ flags_orig = F_ISSET(dbenv, DB_ENV_NOLOCKING | DB_ENV_NOPANIC);
+ F_SET(dbenv, DB_ENV_NOLOCKING | DB_ENV_NOPANIC);
/*
- * This routine has to walk a nasty line between not looking into
- * the environment (which may be corrupted after an app or system
- * crash), and removing everything that needs removing. What we
- * do is:
- * 1. Connect to the environment.
- * 2. If the environment is in use (reference count is non-zero),
- * return EBUSY.
- * 3. Panic it and overwrite the magic number so any threads of
- * control attempting to connect (or racing with us) backoff
- * and retry or just die.
- * 4. Walk the array of regions. Connect to each region and then
- * disconnect with the destroy flag set. This shouldn't cause
- * any problems, even if the region is corrupted, because we
- * never look inside the region (with the single exception of
- * mutex regions on systems where we have to return resources
- * to the underlying system).
- * 5. Walk the list of files in the directory, unlinking any
- * files that match a region name. Unlink the environment
- * file last.
+ * This routine has to walk a nasty line between not looking into the
+ * environment (which may be corrupted after an app or system crash),
+ * and removing everything that needs removing.
*
- * If the force flag is set, we do not acquire any locks during this
- * process.
- *
- * We're going to panic the environment, so we'll want to ignore that
- * flag.
+ * Connect to the environment: If we can't join the environment, we
+ * guess it's because it doesn't exist. Remove the underlying files,
+ * at least.
*/
- if (LF_ISSET(DB_FORCE))
- F_SET(dbenv, DB_ENV_NOLOCKING);
- F_SET(dbenv, DB_ENV_NOPANIC);
-
- /* Join the environment. */
- if ((ret = __db_e_attach(dbenv, NULL)) != 0) {
- /*
- * If we can't join it, we assume that's because it doesn't
- * exist. It would be better to know why we failed, but it
- * probably isn't important.
- */
- ret = 0;
- if (LF_ISSET(DB_FORCE))
- goto remfiles;
- goto done;
- }
+ if (__env_attach(dbenv, NULL, 0, 0) != 0)
+ goto remfiles;
infop = dbenv->reginfo;
renv = infop->primary;
- /* Lock the environment. */
- MUTEX_LOCK(dbenv, renv->mtx_regenv);
+ /*
+ * Kill the environment, if it's not already dead.
+ */
+ renv->panic = 1;
/*
- * If it's in use, we're done unless we're forcing the issue or the
- * environment has panic'd. (Presumably, if the environment panic'd,
- * the thread holding the reference count may not have cleaned up.)
+ * Walk the array of regions. Connect to each region and disconnect
+ * with the destroy flag set. This shouldn't cause any problems, even
+ * if the region is corrupted, because we never look inside the region
+ * (with the single exception of mutex regions on systems where we have
+ * to return resources to the underlying system).
*/
- if (renv->refcnt == 1 || renv->panic == 1 || LF_ISSET(DB_FORCE)) {
+ for (rp = R_ADDR(infop, renv->region_off),
+ i = 0; i < renv->region_cnt; ++i, ++rp) {
+ if (rp->id == INVALID_REGION_ID || rp->type == REGION_TYPE_ENV)
+ continue;
/*
- * Set the panic flag and overwrite the magic number.
- *
* !!!
- * From this point on, there's no going back, we pretty
- * much ignore errors, and just whack on whatever we can.
+ * The REGION_CREATE_OK flag is set for Windows/95 -- regions
+ * are zero'd out when the last reference to the region goes
+ * away, in which case the underlying OS region code requires
+ * callers be prepared to create the region in order to join it.
*/
- renv->magic = 0;
- renv->panic = 1;
+ memset(&reginfo, 0, sizeof(reginfo));
+ reginfo.id = rp->id;
+ reginfo.flags = REGION_CREATE_OK;
/*
- * Unlock the environment -- nobody should need this lock
- * because we've poisoned the pool.
+ * If we get here and can't attach and/or detach to the
+ * region, it's a mess. Ignore errors, there's nothing
+ * we can do about them.
*/
- MUTEX_UNLOCK(dbenv, renv->mtx_regenv);
-
- /* Attach to each sub-region and destroy it. */
- for (rp = R_ADDR(infop, renv->region_off),
- i = 0; i < renv->region_cnt; ++i, ++rp) {
- if (rp->id == INVALID_REGION_ID ||
- rp->type == REGION_TYPE_ENV)
- continue;
- /*
- * !!!
- * The REGION_CREATE_OK flag is set for Windows/95 --
- * regions are zero'd out when the last reference to
- * the region goes away, in which case the underlying
- * OS region code requires callers be prepared to
- * create the region in order to join it.
- */
- memset(&reginfo, 0, sizeof(reginfo));
- reginfo.id = rp->id;
- reginfo.flags = REGION_CREATE_OK;
-
- /*
- * If we get here and can't attach and/or detach to the
- * region, it's a mess. Ignore errors, there's nothing
- * we can do about them.
- */
- if (__db_r_attach(dbenv, &reginfo, 0) != 0)
- continue;
+ if (__env_region_attach(dbenv, &reginfo, 0) != 0)
+ continue;
#ifdef HAVE_MUTEX_SYSTEM_RESOURCES
- /*
- * If destroying the mutex region, return any system
- * resources to the system.
- */
- if (reginfo.type == REGION_TYPE_MUTEX)
- __mutex_resource_return(dbenv, &reginfo);
+ /*
+ * If destroying the mutex region, return any system
+ * resources to the system.
+ */
+ if (reginfo.type == REGION_TYPE_MUTEX)
+ __mutex_resource_return(dbenv, &reginfo);
#endif
- (void)__db_r_detach(dbenv, &reginfo, 1);
- }
-
- /* Destroy the environment's region. */
- (void)__db_e_detach(dbenv, 1);
-
- /* Discard any remaining physical files. */
-remfiles: (void)__db_e_remfile(dbenv);
- } else {
- /* Unlock the environment. */
- MUTEX_UNLOCK(dbenv, renv->mtx_regenv);
+ (void)__env_region_detach(dbenv, &reginfo, 1);
+ }
- /* Discard the environment. */
- (void)__db_e_detach(dbenv, 0);
+ /* Detach from the environment's primary region. */
+ (void)__env_detach(dbenv, 1);
- ret = EBUSY;
- }
+remfiles:
+ /*
+ * Walk the list of files in the directory, unlinking files in the
+ * Berkeley DB name space.
+ */
+ __env_remove_file(dbenv);
-done: F_CLR(dbenv, DB_ENV_NOLOCKING | DB_ENV_NOPANIC);
- F_SET(dbenv, db_env_reset);
+ F_CLR(dbenv, DB_ENV_NOLOCKING | DB_ENV_NOPANIC);
+ F_SET(dbenv, flags_orig);
- return (ret);
+ return (0);
}
/*
- * __db_e_remfile --
+ * __env_remove_file --
* Discard any region files in the filesystem.
*/
-static int
-__db_e_remfile(dbenv)
+static void
+__env_remove_file(dbenv)
DB_ENV *dbenv;
{
int cnt, fcnt, lastrm, ret;
@@ -805,7 +860,7 @@ __db_e_remfile(dbenv)
/* Get the full path of a file in the environment. */
(void)snprintf(buf, sizeof(buf), "%s", DB_REGION_ENV);
if ((ret = __db_appname(dbenv, DB_APP_NONE, buf, 0, NULL, &path)) != 0)
- return (ret);
+ return;
/* Get the parent directory for the environment. */
if ((p = __db_rpath(path)) == NULL) {
@@ -829,7 +884,7 @@ __db_e_remfile(dbenv)
__os_free(dbenv, path);
if (ret != 0)
- return (ret);
+ return;
/*
* Remove files from the region directory.
@@ -890,18 +945,16 @@ __db_e_remfile(dbenv)
__os_free(dbenv, path);
}
__os_dirfree(dbenv, names, fcnt);
-
- return (0);
}
/*
- * __db_r_attach
+ * __env_region_attach
* Join/create a region.
*
- * PUBLIC: int __db_r_attach __P((DB_ENV *, REGINFO *, size_t));
+ * PUBLIC: int __env_region_attach __P((DB_ENV *, REGINFO *, size_t));
*/
int
-__db_r_attach(dbenv, infop, size)
+__env_region_attach(dbenv, infop, size)
DB_ENV *dbenv;
REGINFO *infop;
size_t size;
@@ -915,7 +968,7 @@ __db_r_attach(dbenv, infop, size)
* it, the REGION_CREATE flag will be set in the infop structure.
*/
F_CLR(infop, REGION_CREATE);
- if ((ret = __db_des_get(dbenv, dbenv->reginfo, infop, &rp)) != 0)
+ if ((ret = __env_des_get(dbenv, dbenv->reginfo, infop, &rp)) != 0)
return (ret);
infop->dbenv = dbenv;
infop->rp = rp;
@@ -923,7 +976,7 @@ __db_r_attach(dbenv, infop, size)
infop->id = rp->id;
/*
- * __db_des_get may have created the region and reset the create
+ * __env_des_get may have created the region and reset the create
* flag. If we're creating the region, set the desired size.
*/
if (F_ISSET(infop, REGION_CREATE))
@@ -942,7 +995,7 @@ __db_r_attach(dbenv, infop, size)
* anything because we're writing pages in created regions, not just
* reading them.
*/
- (void)__db_faultmem(dbenv,
+ (void)__env_faultmem(dbenv,
infop->addr, rp->size, F_ISSET(infop, REGION_CREATE));
/*
@@ -954,7 +1007,7 @@ __db_r_attach(dbenv, infop, size)
* If we created the region, initialize it for allocation.
*/
if (F_ISSET(infop, REGION_CREATE))
- __db_shalloc_init(infop, rp->size);
+ __env_alloc_init(infop, rp->size);
return (0);
@@ -967,7 +1020,7 @@ err: /* Discard the underlying region. */
/* Discard the REGION structure if we created it. */
if (F_ISSET(infop, REGION_CREATE)) {
- __db_des_destroy(dbenv, rp);
+ __env_des_destroy(dbenv, rp);
F_CLR(infop, REGION_CREATE);
}
@@ -975,13 +1028,13 @@ err: /* Discard the underlying region. */
}
/*
- * __db_r_detach --
+ * __env_region_detach --
* Detach from a region.
*
- * PUBLIC: int __db_r_detach __P((DB_ENV *, REGINFO *, int));
+ * PUBLIC: int __env_region_detach __P((DB_ENV *, REGINFO *, int));
*/
int
-__db_r_detach(dbenv, infop, destroy)
+__env_region_detach(dbenv, infop, destroy)
DB_ENV *dbenv;
REGINFO *infop;
int destroy;
@@ -1000,14 +1053,14 @@ __db_r_detach(dbenv, infop, destroy)
* we make.
*/
if (F_ISSET(dbenv, DB_ENV_PRIVATE) && infop->primary != NULL)
- __db_shalloc_free(infop, infop->primary);
+ __env_alloc_free(infop, infop->primary);
/* Detach from the underlying OS region. */
ret = __os_r_detach(dbenv, infop, destroy);
/* If we destroyed the region, discard the REGION structure. */
if (destroy)
- __db_des_destroy(dbenv, rp);
+ __env_des_destroy(dbenv, rp);
/* Destroy the structure. */
if (infop->name != NULL)
@@ -1017,12 +1070,12 @@ __db_r_detach(dbenv, infop, destroy)
}
/*
- * __db_des_get --
+ * __env_des_get --
* Return a reference to the shared information for a REGION,
* optionally creating a new entry.
*/
static int
-__db_des_get(dbenv, env_infop, infop, rpp)
+__env_des_get(dbenv, env_infop, infop, rpp)
DB_ENV *dbenv;
REGINFO *env_infop, *infop;
REGION **rpp;
@@ -1114,11 +1167,11 @@ __db_des_get(dbenv, env_infop, infop, rpp)
}
/*
- * __db_des_destroy --
+ * __env_des_destroy --
* Destroy a reference to a REGION.
*/
static void
-__db_des_destroy(dbenv, rp)
+__env_des_destroy(dbenv, rp)
DB_ENV *dbenv;
REGION *rp;
{
@@ -1128,11 +1181,11 @@ __db_des_destroy(dbenv, rp)
}
/*
- * __db_faultmem --
+ * __env_faultmem --
* Fault the region into memory.
*/
static int
-__db_faultmem(dbenv, addr, size, created)
+__env_faultmem(dbenv, addr, size, created)
DB_ENV *dbenv;
void *addr;
size_t size;
diff --git a/db/env/env_register.c b/db/env/env_register.c
index 1936da9f2..1e122a61e 100644
--- a/db/env/env_register.c
+++ b/db/env/env_register.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2004-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2004,2007 Oracle. All rights reserved.
*
- * $Id: env_register.c,v 1.30 2006/09/09 14:28:22 bostic Exp $
+ * $Id: env_register.c,v 1.35 2007/05/17 15:15:11 bostic Exp $
*/
#include "db_config.h"
@@ -122,7 +121,7 @@ __envreg_register(dbenv, need_recoveryp)
if ((ret =
__db_appname(dbenv, DB_APP_NONE, REGISTER_FILE, 0, NULL, &pp)) != 0)
goto err;
- if ((ret = __os_open(dbenv, pp,
+ if ((ret = __os_open(dbenv, pp, 0,
DB_OSO_CREATE, __db_omode("rw-rw----"), &dbenv->registry)) != 0)
goto err;
@@ -206,7 +205,7 @@ __envreg_add(dbenv, need_recoveryp)
snprintf(pid_buf, sizeof(pid_buf), PID_FMT, (u_long)pid);
if (FLD_ISSET(dbenv->verbose, DB_VERB_REGISTER))
- __db_msg(dbenv, "===== %lu: before add", (u_long)pid);
+ __db_msg(dbenv, "%lu: adding self to registry", (u_long)pid);
/*
* Read the file. Skip empty slots, and check that a lock is held
@@ -278,6 +277,9 @@ __envreg_add(dbenv, need_recoveryp)
* exiting Berkeley DB -- they'll discard their lock when they exit.
*/
if (need_recovery) {
+ if (FLD_ISSET(dbenv->verbose, DB_VERB_REGISTER))
+ __db_msg(dbenv, "%lu: recovery required", (u_long)pid);
+
/* Figure out how big the file is. */
if ((ret = __os_ioinfo(
dbenv, NULL, dbenv->registry, &mbytes, &bytes, NULL)) != 0)
diff --git a/db/env/env_stat.c b/db/env/env_stat.c
index 241a1c5cd..f87034976 100644
--- a/db/env/env_stat.c
+++ b/db/env/env_stat.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: env_stat.c,v 12.36 2006/09/08 19:25:15 bostic Exp $
+ * $Id: env_stat.c,v 12.49 2007/05/17 17:17:59 bostic Exp $
*/
#include "db_config.h"
@@ -20,7 +19,7 @@
#ifdef HAVE_STATISTICS
static int __env_print_all __P((DB_ENV *, u_int32_t));
static int __env_print_stats __P((DB_ENV *, u_int32_t));
-static int __env_print_threads __P((DB_ENV *));
+static int __env_print_thread __P((DB_ENV *));
static int __env_stat_print __P((DB_ENV *, u_int32_t));
static char *__env_thread_state_print __P((DB_THREAD_STATE));
static const char *
@@ -76,15 +75,12 @@ __env_stat_print(dbenv, flags)
(ret = __env_print_all(dbenv, flags)) != 0)
return (ret);
- if ((ret = __env_print_threads(dbenv)) != 0)
+ if ((ret = __env_print_thread(dbenv)) != 0)
return (ret);
if (!LF_ISSET(DB_STAT_SUBSYSTEM))
return (0);
- /* The subsystems don't know anything about DB_STAT_SUBSYSTEM. */
- LF_CLR(DB_STAT_SUBSYSTEM);
-
if (LOGGING_ON(dbenv)) {
__db_msg(dbenv, "%s", DB_GLOBAL(db_line));
if ((ret = __log_stat_print(dbenv, flags)) != 0)
@@ -119,11 +115,18 @@ __env_stat_print(dbenv, flags)
return (ret);
}
+#ifdef HAVE_MUTEX_SUPPORT
+ /*
+ * Dump the mutexes last. If DB_STAT_CLEAR is set this will
+ * clear out the mutex counters and we want to see them in
+ * the context of the other subsystems first.
+ */
if (MUTEX_ON(dbenv)) {
__db_msg(dbenv, "%s", DB_GLOBAL(db_line));
if ((ret = __mutex_stat_print(dbenv, flags)) != 0)
return (ret);
}
+#endif
return (0);
}
@@ -153,6 +156,13 @@ __env_print_stats(dbenv, flags)
STAT_LONG("Panic value", renv->panic);
__db_msg(dbenv, "%d.%d.%d\tEnvironment version",
renv->majver, renv->minver, renv->patchver);
+ STAT_LONG("Btree version", DB_BTREEVERSION);
+ STAT_LONG("Hash version", DB_HASHVERSION);
+ STAT_LONG("Lock version", DB_LOCKVERSION);
+ STAT_LONG("Log version", DB_LOGVERSION);
+ STAT_LONG("Queue version", DB_QAMVERSION);
+ STAT_LONG("Sequence version", DB_SEQUENCE_VERSION);
+ STAT_LONG("Txn version", DB_TXNVERSION);
__db_msg(dbenv,
"%.24s\tCreation time", __db_ctime(&renv->timestamp, time_buf));
STAT_HEX("Environment ID", renv->envid);
@@ -177,13 +187,12 @@ __env_print_all(dbenv, flags)
{ DB_ENV_AUTO_COMMIT, "DB_ENV_AUTO_COMMIT" },
{ DB_ENV_CDB, "DB_ENV_CDB" },
{ DB_ENV_CDB_ALLDB, "DB_ENV_CDB_ALLDB" },
- { DB_ENV_CREATE, "DB_ENV_CREATE" },
{ DB_ENV_DBLOCAL, "DB_ENV_DBLOCAL" },
{ DB_ENV_DIRECT_DB, "DB_ENV_DIRECT_DB" },
{ DB_ENV_DIRECT_LOG, "DB_ENV_DIRECT_LOG" },
{ DB_ENV_DSYNC_DB, "DB_ENV_DSYNC_DB" },
{ DB_ENV_DSYNC_LOG, "DB_ENV_DSYNC_LOG" },
- { DB_ENV_FATAL, "DB_ENV_FATAL" },
+ { DB_ENV_RECOVER_FATAL, "DB_ENV_RECOVER_FATAL" },
{ DB_ENV_LOCKDOWN, "DB_ENV_LOCKDOWN" },
{ DB_ENV_LOG_AUTOREMOVE, "DB_ENV_LOG_AUTOREMOVE" },
{ DB_ENV_LOG_INMEMORY, "DB_ENV_LOG_INMEMORY" },
@@ -200,6 +209,7 @@ __env_print_all(dbenv, flags)
{ DB_ENV_THREAD, "DB_ENV_THREAD" },
{ DB_ENV_TIME_NOTGRANTED, "DB_ENV_TIME_NOTGRANTED" },
{ DB_ENV_TXN_NOSYNC, "DB_ENV_TXN_NOSYNC" },
+ { DB_ENV_TXN_NOWAIT, "DB_ENV_TXN_NOWAIT" },
{ DB_ENV_TXN_WRITE_NOSYNC, "DB_ENV_TXN_WRITE_NOSYNC" },
{ DB_ENV_YIELDCPU, "DB_ENV_YIELDCPU" },
{ 0, NULL }
@@ -229,6 +239,8 @@ __env_print_all(dbenv, flags)
};
static const FN vfn[] = {
{ DB_VERB_DEADLOCK, "DB_VERB_DEADLOCK" },
+ { DB_VERB_FILEOPS, "DB_VERB_FILEOPS" },
+ { DB_VERB_FILEOPS_ALL, "DB_VERB_FILEOPS_ALL" },
{ DB_VERB_RECOVERY, "DB_VERB_RECOVERY" },
{ DB_VERB_REGISTER, "DB_VERB_REGISTER" },
{ DB_VERB_REPLICATION, "DB_VERB_REPLICATION" },
@@ -311,6 +323,8 @@ __env_print_all(dbenv, flags)
STAT_LONG("DB reference count", dbenv->db_ref);
STAT_LONG("Shared memory key", dbenv->shm_key);
__mutex_print_debug_single(
+ dbenv, "DB_ENV handle mutex", dbenv->mtx_env, flags);
+ __mutex_print_debug_single(
dbenv, "DB handle mutex", dbenv->mtx_dblist, flags);
STAT_ISSET("api1 internal", dbenv->api1_internal);
@@ -338,23 +352,38 @@ __env_thread_state_print(state)
default:
return ("unknown");
}
+ /* NOTREACHED */
}
/*
- * __env_print_threads --
- * Display the current active threads
- *
+ * __env_print_thread --
+ * Display the thread block state.
*/
static int
-__env_print_threads(dbenv)
+__env_print_thread(dbenv)
DB_ENV *dbenv;
{
DB_HASHTAB *htab;
DB_THREAD_INFO *ip;
+ REGENV *renv;
+ REGINFO *infop;
+ THREAD_INFO *thread;
u_int32_t i;
char buf[DB_THREADID_STRLEN];
- htab = (DB_HASHTAB *)dbenv->thr_hashtab;
+ /* The thread table may not be configured. */
+ if ((htab = (DB_HASHTAB *)dbenv->thr_hashtab) == NULL)
+ return (0);
+
+ /* Dump out the info we have on thread tracking. */
+ infop = dbenv->reginfo;
+ renv = infop->primary;
+ thread = R_ADDR(infop, renv->thread_off);
+ STAT_ULONG("Thread blocks allocated", thread->thr_count);
+ STAT_ULONG("Thread allocation threshold", thread->thr_max);
+ STAT_ULONG("Thread hash buckets", thread->thr_nbucket);
+
+ /* Dump out the info we have on active threads. */
__db_msg(dbenv, "Thread status blocks:");
for (i = 0; i < dbenv->thr_nbucket; i++)
SH_TAILQ_FOREACH(ip, &htab[i], dbth_links, __db_thread_info) {
@@ -553,13 +582,15 @@ __db_dlbytes(dbenv, msg, gbytes, mbytes, bytes)
* __db_print_reginfo --
* Print out underlying shared region information.
*
- * PUBLIC: void __db_print_reginfo __P((DB_ENV *, REGINFO *, const char *));
+ * PUBLIC: void __db_print_reginfo
+ * PUBLIC: __P((DB_ENV *, REGINFO *, const char *, u_int32_t));
*/
void
-__db_print_reginfo(dbenv, infop, s)
+__db_print_reginfo(dbenv, infop, s, flags)
DB_ENV *dbenv;
REGINFO *infop;
const char *s;
+ u_int32_t flags;
{
static const FN fn[] = {
{ REGION_CREATE, "REGION_CREATE" },
@@ -578,6 +609,7 @@ __db_print_reginfo(dbenv, infop, s)
STAT_POINTER("Region primary address", infop->primary);
STAT_ULONG("Region maximum allocation", infop->max_alloc);
STAT_ULONG("Region allocated", infop->allocated);
+ __env_alloc_print(infop, flags);
__db_prflags(dbenv, NULL, infop->flags, fn, NULL, "\tRegion flags");
}
diff --git a/db/examples_c/bench_001.c b/db/examples_c/bench_001.c
index 3d342ea58..625e3a92b 100644
--- a/db/examples_c/bench_001.c
+++ b/db/examples_c/bench_001.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2001-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2001,2007 Oracle. All rights reserved.
*
- * $Id: bench_001.c,v 12.5 2006/08/24 14:45:41 bostic Exp $
+ * $Id: bench_001.c,v 12.8 2007/05/17 15:15:12 bostic Exp $
*/
/*
@@ -136,7 +135,7 @@ get(dbp, txn, datalen, num, dups, iter, countp)
goto err;
j = random() % num;
- if ((ret = dbcp->c_get(dbcp, &key, &data, flags)) != 0)
+ if ((ret = dbcp->get(dbcp, &key, &data, flags)) != 0)
goto err;
DB_MULTIPLE_INIT(pointer, &data);
if (dups)
@@ -152,7 +151,7 @@ get(dbp, txn, datalen, num, dups, iter, countp)
if (kp != NULL)
count++;
}
- if ((ret = dbcp->c_close(dbcp)) != 0)
+ if ((ret = dbcp->close(dbcp)) != 0)
goto err;
if (txn)
if ((ret = txnp->commit(txnp, 0)) != 0)
diff --git a/db/examples_c/csv/DbRecord.c b/db/examples_c/csv/DbRecord.c
index 9b3662b5c..3ba394d92 100644
--- a/db/examples_c/csv/DbRecord.c
+++ b/db/examples_c/csv/DbRecord.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2005-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2005,2007 Oracle. All rights reserved.
*
- * $Id: DbRecord.c,v 1.12 2006/08/24 14:45:42 bostic Exp $
+ * $Id: DbRecord.c,v 1.14 2007/05/17 15:15:13 bostic Exp $
*/
#include "csv.h"
diff --git a/db/examples_c/csv/README b/db/examples_c/csv/README
index c96718e62..d4bf16c59 100644
--- a/db/examples_c/csv/README
+++ b/db/examples_c/csv/README
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2005-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2005,2007 Oracle. All rights reserved.
*
- * $Id: README,v 1.18 2006/08/24 14:45:42 bostic Exp $
+ * $Id: README,v 1.20 2007/05/17 15:15:13 bostic Exp $
*/
The "comma-separated value" (csv) directory is a suite of three programs:
diff --git a/db/examples_c/csv/code.c b/db/examples_c/csv/code.c
index 85569f2b4..55df46a55 100644
--- a/db/examples_c/csv/code.c
+++ b/db/examples_c/csv/code.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2005-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2005,2007 Oracle. All rights reserved.
*
- * $Id: code.c,v 1.12 2006/08/24 14:45:42 bostic Exp $
+ * $Id: code.c,v 1.14 2007/05/17 15:15:13 bostic Exp $
*/
#include "csv.h"
diff --git a/db/examples_c/csv/csv.h b/db/examples_c/csv/csv.h
index c6cfd93f4..0e923deb7 100644
--- a/db/examples_c/csv/csv.h
+++ b/db/examples_c/csv/csv.h
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2005-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2005,2007 Oracle. All rights reserved.
*
- * $Id: csv.h,v 1.15 2006/08/24 14:45:43 bostic Exp $
+ * $Id: csv.h,v 1.18 2007/05/17 17:26:05 bostic Exp $
*/
#include <sys/types.h>
@@ -17,7 +16,7 @@
#include <string.h>
#ifdef _WIN32
-#define WIN32_LEAN_AND_MEAN 1
+#define WIN32_LEAN_AND_MEAN 1
#include <direct.h>
#include <db.h>
@@ -95,8 +94,8 @@ extern char *progname; /* Program name */
extern int verbose; /* Program verbosity */
#ifdef _WIN32
#undef strcasecmp
-#define strcasecmp _stricmp
+#define strcasecmp _stricmp
#undef strncasecmp
-#define strncasecmp _strnicmp
-#define mkdir(d, perm) _mkdir(d)
+#define strncasecmp _strnicmp
+#define mkdir(d, perm) _mkdir(d)
#endif
diff --git a/db/examples_c/csv/csv_extern.h b/db/examples_c/csv/csv_extern.h
index 534bae2b5..ada2a2b56 100644
--- a/db/examples_c/csv/csv_extern.h
+++ b/db/examples_c/csv/csv_extern.h
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2005-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2005,2007 Oracle. All rights reserved.
*
- * $Id: csv_extern.h,v 1.7 2006/08/24 14:45:43 bostic Exp $
+ * $Id: csv_extern.h,v 1.9 2007/05/17 15:15:13 bostic Exp $
*/
extern DbRecord DbRecord_base; /* Initialized structure. */
diff --git a/db/examples_c/csv/db.c b/db/examples_c/csv/db.c
index 0e7d2cd58..5e7229d73 100644
--- a/db/examples_c/csv/db.c
+++ b/db/examples_c/csv/db.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2005-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2005,2007 Oracle. All rights reserved.
*
- * $Id: db.c,v 1.14 2006/08/24 14:45:43 bostic Exp $
+ * $Id: db.c,v 1.16 2007/05/17 15:15:13 bostic Exp $
*/
#include "csv.h"
diff --git a/db/examples_c/csv/load.c b/db/examples_c/csv/load.c
index c581e69ee..0732fe1a5 100644
--- a/db/examples_c/csv/load.c
+++ b/db/examples_c/csv/load.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2005-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2005,2007 Oracle. All rights reserved.
*
- * $Id: load.c,v 1.9 2006/08/24 14:45:43 bostic Exp $
+ * $Id: load.c,v 1.11 2007/05/17 15:15:13 bostic Exp $
*/
#include "csv.h"
diff --git a/db/examples_c/csv/load_main.c b/db/examples_c/csv/load_main.c
index 9f83e3388..96850f768 100644
--- a/db/examples_c/csv/load_main.c
+++ b/db/examples_c/csv/load_main.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2005-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2005,2007 Oracle. All rights reserved.
*
- * $Id: load_main.c,v 1.10 2006/08/24 14:45:43 bostic Exp $
+ * $Id: load_main.c,v 1.12 2007/05/17 15:15:13 bostic Exp $
*/
#include "csv.h"
diff --git a/db/examples_c/csv/query.c b/db/examples_c/csv/query.c
index bd11da9dd..c30b68d6b 100644
--- a/db/examples_c/csv/query.c
+++ b/db/examples_c/csv/query.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2005-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2005,2007 Oracle. All rights reserved.
*
- * $Id: query.c,v 1.14 2006/08/24 14:45:43 bostic Exp $
+ * $Id: query.c,v 1.16 2007/05/17 15:15:13 bostic Exp $
*/
#include "csv.h"
diff --git a/db/examples_c/csv/query_main.c b/db/examples_c/csv/query_main.c
index 69c0109f1..56adc8bdd 100644
--- a/db/examples_c/csv/query_main.c
+++ b/db/examples_c/csv/query_main.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2005-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2005,2007 Oracle. All rights reserved.
*
- * $Id: query_main.c,v 1.10 2006/08/24 14:45:43 bostic Exp $
+ * $Id: query_main.c,v 1.12 2007/05/17 15:15:13 bostic Exp $
*/
#include "csv.h"
diff --git a/db/examples_c/csv/util.c b/db/examples_c/csv/util.c
index 60382e251..36ac57a45 100644
--- a/db/examples_c/csv/util.c
+++ b/db/examples_c/csv/util.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2005-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2005,2007 Oracle. All rights reserved.
*
- * $Id: util.c,v 1.19 2006/08/24 14:45:43 bostic Exp $
+ * $Id: util.c,v 1.21 2007/05/17 15:15:13 bostic Exp $
*/
#include "csv.h"
diff --git a/db/examples_c/ex_access.c b/db/examples_c/ex_access.c
index f19302862..7029bb62f 100644
--- a/db/examples_c/ex_access.c
+++ b/db/examples_c/ex_access.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: ex_access.c,v 12.3 2006/08/24 14:45:41 bostic Exp $
+ * $Id: ex_access.c,v 12.6 2007/05/17 15:15:12 bostic Exp $
*/
#include <sys/types.h>
@@ -128,7 +127,7 @@ main(argc, argv)
memset(&data, 0, sizeof(data));
/* Walk through the database and print out the key/data pairs. */
- while ((ret = dbcp->c_get(dbcp, &key, &data, DB_NEXT)) == 0)
+ while ((ret = dbcp->get(dbcp, &key, &data, DB_NEXT)) == 0)
printf("%.*s : %.*s\n",
(int)key.size, (char *)key.data,
(int)data.size, (char *)data.data);
@@ -138,7 +137,7 @@ main(argc, argv)
}
/* Close everything down. */
- if ((ret = dbcp->c_close(dbcp)) != 0) {
+ if ((ret = dbcp->close(dbcp)) != 0) {
dbp->err(dbp, ret, "DBcursor->close");
goto err1;
}
@@ -149,7 +148,7 @@ main(argc, argv)
}
return (EXIT_SUCCESS);
-err2: (void)dbcp->c_close(dbcp);
+err2: (void)dbcp->close(dbcp);
err1: (void)dbp->close(dbp, 0);
return (EXIT_FAILURE);
}
diff --git a/db/examples_c/ex_apprec/ex_apprec.c b/db/examples_c/ex_apprec/ex_apprec.c
index 0d58baa6a..a7359bd96 100644
--- a/db/examples_c/ex_apprec/ex_apprec.c
+++ b/db/examples_c/ex_apprec/ex_apprec.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: ex_apprec.c,v 12.3 2006/08/24 14:45:43 bostic Exp $
+ * $Id: ex_apprec.c,v 12.5 2007/05/17 15:15:13 bostic Exp $
*/
#include <sys/types.h>
diff --git a/db/examples_c/ex_apprec/ex_apprec.h b/db/examples_c/ex_apprec/ex_apprec.h
index 26be8cafa..6381cfb0b 100644
--- a/db/examples_c/ex_apprec/ex_apprec.h
+++ b/db/examples_c/ex_apprec/ex_apprec.h
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: ex_apprec.h,v 12.3 2006/08/24 14:45:43 bostic Exp $
+ * $Id: ex_apprec.h,v 12.5 2007/05/17 15:15:13 bostic Exp $
*/
#ifndef _EX_APPREC_H_
diff --git a/db/examples_c/ex_apprec/ex_apprec.src b/db/examples_c/ex_apprec/ex_apprec.src
index 89535ae7a..3680fb4fe 100644
--- a/db/examples_c/ex_apprec/ex_apprec.src
+++ b/db/examples_c/ex_apprec/ex_apprec.src
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: ex_apprec.src,v 12.4 2006/09/13 16:22:27 sue Exp $
+ * $Id: ex_apprec.src,v 12.6 2007/05/17 15:15:13 bostic Exp $
*/
PREFIX ex_apprec
diff --git a/db/examples_c/ex_apprec/ex_apprec_rec.c b/db/examples_c/ex_apprec/ex_apprec_rec.c
index 95c1681e8..ed5e2cd27 100644
--- a/db/examples_c/ex_apprec/ex_apprec_rec.c
+++ b/db/examples_c/ex_apprec/ex_apprec_rec.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: ex_apprec_rec.c,v 12.3 2006/08/24 14:45:43 bostic Exp $
+ * $Id: ex_apprec_rec.c,v 12.5 2007/05/17 15:15:13 bostic Exp $
*/
/*
diff --git a/db/examples_c/ex_btrec.c b/db/examples_c/ex_btrec.c
index 61646798c..a2b5fe598 100644
--- a/db/examples_c/ex_btrec.c
+++ b/db/examples_c/ex_btrec.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: ex_btrec.c,v 12.3 2006/08/24 14:45:41 bostic Exp $
+ * $Id: ex_btrec.c,v 12.6 2007/05/17 15:15:12 bostic Exp $
*/
#include <sys/types.h>
@@ -133,19 +132,19 @@ ex_btrec()
recno = atoi(buf);
/*
- * Reset the key each time, the dbp->c_get() routine returns
+ * Reset the key each time, the dbp->get() routine returns
* the key and data pair, not just the key!
*/
key.data = &recno;
key.size = sizeof(recno);
- if ((ret = dbcp->c_get(dbcp, &key, &data, DB_SET_RECNO)) != 0)
+ if ((ret = dbcp->get(dbcp, &key, &data, DB_SET_RECNO)) != 0)
goto get_err;
/* Display the key and data. */
show("k/d\t", &key, &data);
/* Move the cursor a record forward. */
- if ((ret = dbcp->c_get(dbcp, &key, &data, DB_NEXT)) != 0)
+ if ((ret = dbcp->get(dbcp, &key, &data, DB_NEXT)) != 0)
goto get_err;
/* Display the key and data. */
@@ -159,7 +158,7 @@ ex_btrec()
data.size = sizeof(recno);
data.ulen = sizeof(recno);
data.flags |= DB_DBT_USERMEM;
- if ((ret = dbcp->c_get(dbcp, &key, &data, DB_GET_RECNO)) != 0) {
+ if ((ret = dbcp->get(dbcp, &key, &data, DB_GET_RECNO)) != 0) {
get_err: dbp->err(dbp, ret, "DBcursor->get");
if (ret != DB_NOTFOUND && ret != DB_KEYEMPTY)
goto err2;
@@ -170,7 +169,7 @@ get_err: dbp->err(dbp, ret, "DBcursor->get");
memset(&data, 0, sizeof(data));
}
- if ((ret = dbcp->c_close(dbcp)) != 0) {
+ if ((ret = dbcp->close(dbcp)) != 0) {
dbp->err(dbp, ret, "DBcursor->close");
goto err1;
}
@@ -182,7 +181,7 @@ get_err: dbp->err(dbp, ret, "DBcursor->get");
return (0);
-err2: (void)dbcp->c_close(dbcp);
+err2: (void)dbcp->close(dbcp);
err1: (void)dbp->close(dbp, 0);
return (ret);
diff --git a/db/examples_c/ex_dbclient.c b/db/examples_c/ex_dbclient.c
index 4dc12391f..18d5de4ff 100644
--- a/db/examples_c/ex_dbclient.c
+++ b/db/examples_c/ex_dbclient.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: ex_dbclient.c,v 12.3 2006/08/24 14:45:41 bostic Exp $
+ * $Id: ex_dbclient.c,v 12.5 2007/05/17 15:15:12 bostic Exp $
*/
#include <sys/types.h>
diff --git a/db/examples_c/ex_env.c b/db/examples_c/ex_env.c
index 5f80e6ff0..d7863828d 100644
--- a/db/examples_c/ex_env.c
+++ b/db/examples_c/ex_env.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: ex_env.c,v 12.3 2006/08/24 14:45:41 bostic Exp $
+ * $Id: ex_env.c,v 12.5 2007/05/17 15:15:12 bostic Exp $
*/
#include <sys/types.h>
diff --git a/db/examples_c/ex_lock.c b/db/examples_c/ex_lock.c
index 78d4ff99a..160207eeb 100644
--- a/db/examples_c/ex_lock.c
+++ b/db/examples_c/ex_lock.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: ex_lock.c,v 12.3 2006/08/24 14:45:42 bostic Exp $
+ * $Id: ex_lock.c,v 12.5 2007/05/17 15:15:12 bostic Exp $
*/
#include <sys/types.h>
diff --git a/db/examples_c/ex_mpool.c b/db/examples_c/ex_mpool.c
index 326802389..78feff888 100644
--- a/db/examples_c/ex_mpool.c
+++ b/db/examples_c/ex_mpool.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: ex_mpool.c,v 12.4 2006/08/24 14:45:42 bostic Exp $
+ * $Id: ex_mpool.c,v 12.7 2007/05/17 15:15:12 bostic Exp $
*/
#include <sys/types.h>
@@ -228,7 +227,7 @@ run(hits, cachesize, pagesize, npages, progname)
(u_long)pageno, *(int *)p);
goto err;
}
- if ((ret = mfp->put(mfp, p, 0)) != 0) {
+ if ((ret = mfp->put(mfp, p, DB_PRIORITY_UNCHANGED, 0)) != 0) {
dbenv->err(dbenv, ret,
"unable to return page %lu", (u_long)pageno);
goto err;
diff --git a/db/examples_c/ex_rep/base/rep_base.c b/db/examples_c/ex_rep/base/rep_base.c
index 18aec58df..8fed3d868 100644
--- a/db/examples_c/ex_rep/base/rep_base.c
+++ b/db/examples_c/ex_rep/base/rep_base.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2001-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2001,2007 Oracle. All rights reserved.
*
- * $Id: rep_base.c,v 12.15 2006/09/08 20:32:06 bostic Exp $
+ * $Id: rep_base.c,v 12.20 2007/05/17 17:29:27 bostic Exp $
*/
#include <sys/types.h>
@@ -16,7 +15,6 @@
#include <db.h>
#include "rep_base.h"
-#include "../common/rep_common.h"
/*
* Process globals (we could put these in the machtab I suppose).
@@ -25,6 +23,8 @@ int master_eid;
char *myaddr;
unsigned short myport;
+static void event_callback __P((DB_ENV *, u_int32_t, void *));
+
int
main(argc, argv)
int argc;
@@ -52,7 +52,8 @@ main(argc, argv)
master_eid = DB_EID_INVALID;
- my_app_data.is_master = 0; /* assume I start out as client */
+ my_app_data.elected = 0;
+ my_app_data.shared_data.is_master = 0; /* assume start out as client */
dbenv = NULL;
whoami = UNKNOWN;
machtab = NULL;
@@ -60,11 +61,12 @@ main(argc, argv)
maxsites = nsites = ret = totalsites = 0;
priority = 100;
home = "TESTDIR";
- progname = "ex_rep_adv";
+ progname = "ex_rep_base";
if ((ret = create_env(progname, &dbenv)) != 0)
goto err;
dbenv->app_private = &my_app_data;
+ (void)dbenv->set_event_notify(dbenv, event_callback);
while ((ch = getopt(argc, argv, "Ch:Mm:n:o:p:v")) != EOF)
switch (ch) {
@@ -142,7 +144,6 @@ main(argc, argv)
dbenv->rep_set_priority(dbenv, priority);
-
#ifdef _WIN32
/* Initialize the Windows sockets DLL. */
if ((ret = WSAStartup(MAKEWORD(2, 2), &wsaData)) != 0) {
@@ -227,18 +228,33 @@ main(argc, argv)
/* Sleep to give ourselves time to find a master. */
sleep(5);
}
- if ((ret = doloop(dbenv, &my_app_data)) != 0) {
+ if ((ret = doloop(dbenv, &my_app_data.shared_data)) != 0) {
dbenv->err(dbenv, ret, "Main loop failed");
goto err;
}
/* Wait on the connection threads. */
- if (thread_join(all_thr, &astatus) || thread_join(conn_thr, &cstatus))
+ if (thread_join(all_thr, &astatus) || thread_join(conn_thr, &cstatus)) {
ret = -1;
- if (ret == 0 &&
- ((uintptr_t)astatus != EXIT_SUCCESS ||
- (uintptr_t)cstatus != EXIT_SUCCESS))
+ goto err;
+ }
+ if ((uintptr_t)astatus != EXIT_SUCCESS ||
+ (uintptr_t)cstatus != EXIT_SUCCESS) {
ret = -1;
+ goto err;
+ }
+
+ /*
+ * We have used the DB_TXN_NOSYNC environment flag for improved
+ * performance without the usual sacrifice of transactional durability,
+ * as discussed in the "Transactional guarantees" page of the Reference
+ * Guide: if one replication site crashes, we can expect the data to
+ * exist at another site. However, in case we shut down all sites
+ * gracefully, we push out the end of the log here so that the most
+ * recent transactions don't mysteriously disappear.
+ */
+ if ((ret = dbenv->log_flush(dbenv, NULL)) != 0)
+ dbenv->err(dbenv, ret, "log_flush");
err: if (machtab != NULL)
free(machtab);
@@ -250,3 +266,39 @@ err: if (machtab != NULL)
#endif
return (ret);
}
+
+static void
+event_callback(dbenv, which, info)
+ DB_ENV *dbenv;
+ u_int32_t which;
+ void *info;
+{
+ APP_DATA *app = dbenv->app_private;
+ SHARED_DATA *shared = &app->shared_data;
+
+ switch (which) {
+ case DB_EVENT_REP_CLIENT:
+ shared->is_master = 0;
+ break;
+
+ case DB_EVENT_REP_ELECTED:
+ app->elected = 1;
+ master_eid = SELF_EID;
+ break;
+
+ case DB_EVENT_REP_MASTER:
+ shared->is_master = 1;
+ break;
+
+ case DB_EVENT_REP_NEWMASTER:
+ master_eid = *(int*)info;
+ break;
+
+ case DB_EVENT_REP_STARTUPDONE:
+ /* I don't care about this, for now. */
+ break;
+
+ default:
+ dbenv->errx(dbenv, "ignoring event %d", which);
+ }
+}
diff --git a/db/examples_c/ex_rep/base/rep_base.h b/db/examples_c/ex_rep/base/rep_base.h
index b252efc34..9aacf0673 100644
--- a/db/examples_c/ex_rep/base/rep_base.h
+++ b/db/examples_c/ex_rep/base/rep_base.h
@@ -1,15 +1,16 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2001-2005
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2001,2007 Oracle. All rights reserved.
*
- * $Id: rep_base.h,v 12.11 2006/08/24 14:45:45 bostic Exp $
+ * $Id: rep_base.h,v 12.15 2007/05/17 17:29:27 bostic Exp $
*/
#ifndef _EX_REPQUOTE_H_
#define _EX_REPQUOTE_H_
+#include "../common/rep_common.h"
+
#define SELF_EID 1
typedef struct {
@@ -18,6 +19,12 @@ typedef struct {
} repsite_t;
/* Globals */
+typedef struct {
+ SHARED_DATA shared_data;
+ int elected;
+ void *comm_infrastructure;
+} APP_DATA;
+
extern int master_eid;
extern char *myaddr;
extern unsigned short myport;
@@ -78,7 +85,7 @@ typedef HANDLE mutex_t;
#define sleep(s) Sleep(1000 * (s))
typedef SOCKET socket_t;
-#define SOCKET_CREATION_FAILURE INVALID_SOCKET
+#define SOCKET_CREATION_FAILURE INVALID_SOCKET
#define readsocket(s, buf, sz) recv((s), (buf), (int)(sz), 0)
#define writesocket(s, buf, sz) send((s), (const char *)(buf), (int)(sz), 0)
#define net_errno WSAGetLastError()
@@ -104,7 +111,7 @@ typedef pthread_mutex_t mutex_t;
#define mutex_unlock(m) pthread_mutex_unlock(m)
typedef int socket_t;
-#define SOCKET_CREATION_FAILURE -1
+#define SOCKET_CREATION_FAILURE -1
#define closesocket(fd) close(fd)
#define net_errno errno
#define readsocket(s, buf, sz) read((s), (buf), (sz))
@@ -121,7 +128,8 @@ socket_t get_connected_socket
__P((machtab_t *, const char *, const char *, int, int *, int *));
int get_next_message __P((socket_t, DBT *, DBT *));
socket_t listen_socket_init __P((const char *, int));
-socket_t listen_socket_accept __P((machtab_t *, const char *, socket_t, int *));
+socket_t listen_socket_accept
+ __P((machtab_t *, const char *, socket_t, int *));
int machtab_getinfo __P((machtab_t *, int, u_int32_t *, int *));
int machtab_init __P((machtab_t **, int));
void machtab_parm __P((machtab_t *, int *, u_int32_t *));
diff --git a/db/examples_c/ex_rep/base/rep_msg.c b/db/examples_c/ex_rep/base/rep_msg.c
index 87d668980..a75a79320 100644
--- a/db/examples_c/ex_rep/base/rep_msg.c
+++ b/db/examples_c/ex_rep/base/rep_msg.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2001-2005
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2001,2007 Oracle. All rights reserved.
*
- * $Id: rep_msg.c,v 12.10 2006/08/24 14:45:45 bostic Exp $
+ * $Id: rep_msg.c,v 12.15 2007/05/17 17:29:27 bostic Exp $
*/
#include <sys/types.h>
@@ -18,7 +17,7 @@
#include "rep_base.h"
static int connect_site __P((DB_ENV *, machtab_t *,
- const char *, repsite_t *, int *, int *, thread_t *));
+ const char *, repsite_t *, int *, thread_t *));
static void *elect_thread __P((void *));
static void *hm_loop __P((void *));
@@ -48,6 +47,7 @@ hm_loop(args)
DB_ENV *dbenv;
DB_LSN permlsn;
DBT rec, control;
+ APP_DATA *app;
const char *c, *home, *progname;
elect_args *ea;
hm_loop_args *ha;
@@ -55,8 +55,8 @@ hm_loop(args)
thread_t elect_thr, *site_thrs, *tmp, tid;
repsite_t self;
u_int32_t timeout;
- int eid, n, nsites, newm, nsites_allocd;
- int already_open, r, ret, t_ret, tmpid;
+ int eid, n, nsites, nsites_allocd;
+ int already_open, r, ret, t_ret;
socket_t fd;
void *status;
@@ -73,6 +73,7 @@ hm_loop(args)
progname = ha->progname;
tab = ha->tab;
free(ha);
+ app = dbenv->app_private;
memset(&rec, 0, sizeof(DBT));
memset(&control, 0, sizeof(DBT));
@@ -107,22 +108,23 @@ hm_loop(args)
(void)dbenv->rep_set_timeout(dbenv,
DB_REP_ELECTION_TIMEOUT, timeout);
if ((ret = dbenv->rep_elect(dbenv,
- n, (n/2+1), &newm, 0)) != 0)
+ n, (n/2+1), 0)) != 0)
continue;
/*
* Regardless of the results, the site I was talking
* to is gone, so I have nothing to do but exit.
*/
- if (newm == SELF_EID)
+ if (app->elected) {
+ app->elected = 0;
ret = dbenv->rep_start(dbenv,
NULL, DB_REP_MASTER);
+ }
break;
}
- tmpid = eid;
switch (r = dbenv->rep_process_message(dbenv,
- &control, &rec, &tmpid, &permlsn)) {
+ &control, &rec, eid, &permlsn)) {
case DB_REP_NEWSITE:
/*
* Check if we got sent connect information and if we
@@ -155,8 +157,9 @@ hm_loop(args)
*/
if (nsites == nsites_allocd) {
/* Need to allocate more space. */
- if ((tmp = realloc(site_thrs,
- (10 + nsites) * sizeof(thread_t))) == NULL) {
+ if ((tmp = realloc(
+ site_thrs, (10 + nsites) *
+ sizeof(thread_t))) == NULL) {
ret = errno;
goto out;
}
@@ -164,10 +167,11 @@ hm_loop(args)
nsites_allocd += 10;
}
if ((ret = connect_site(dbenv, tab, progname,
- &self, &already_open, &tmpid, &tid)) != 0)
+ &self, &already_open, &tid)) != 0)
goto out;
if (!already_open)
- memcpy(&site_thrs[nsites++], &tid, sizeof(thread_t));
+ memcpy(&site_thrs
+ [nsites++], &tid, sizeof(thread_t));
break;
case DB_REP_HOLDELECTION:
if (master_eid == SELF_EID)
@@ -194,10 +198,11 @@ hm_loop(args)
"can't create election thread");
}
break;
- case DB_REP_NEWMASTER:
- /* Check if it's us. */
- master_eid = tmpid;
- if (tmpid == SELF_EID) {
+ case DB_REP_ISPERM:
+ break;
+ case 0:
+ if (app->elected) {
+ app->elected = 0;
if ((ret = dbenv->rep_start(dbenv,
NULL, DB_REP_MASTER)) != 0) {
dbenv->err(dbenv, ret,
@@ -206,10 +211,6 @@ hm_loop(args)
}
}
break;
- case DB_REP_ISPERM:
- /* FALLTHROUGH */
- case 0:
- break;
default:
dbenv->err(dbenv, r, "DB_ENV->rep_process_message");
break;
@@ -316,7 +317,7 @@ connect_all(args)
all_args *aa;
const char *home, *progname;
hm_loop_args *ha;
- int failed, i, eid, nsites, open, ret, *success;
+ int failed, i, nsites, open, ret, *success;
machtab_t *machtab;
thread_t *hm_thr;
repsite_t *sites;
@@ -353,7 +354,7 @@ connect_all(args)
continue;
ret = connect_site(dbenv, machtab,
- progname, &sites[i], &open, &eid, &hm_thr[i]);
+ progname, &sites[i], &open, &hm_thr[i]);
/*
* If we couldn't make the connection, this isn't
@@ -385,20 +386,20 @@ err: if (success != NULL)
}
static int
-connect_site(dbenv, machtab, progname, site, is_open, eidp, hm_thrp)
+connect_site(dbenv, machtab, progname, site, is_open, hm_thrp)
DB_ENV *dbenv;
machtab_t *machtab;
const char *progname;
repsite_t *site;
- int *is_open, *eidp;
+ int *is_open;
thread_t *hm_thrp;
{
- int ret;
+ int eid, ret;
socket_t s;
hm_loop_args *ha;
if ((s = get_connected_socket(machtab, progname,
- site->host, site->port, is_open, eidp)) < 0)
+ site->host, site->port, is_open, &eid)) < 0)
return (DB_REP_UNAVAIL);
if (*is_open)
@@ -412,7 +413,7 @@ connect_site(dbenv, machtab, progname, site, is_open, eidp, hm_thrp)
ha->progname = progname;
ha->fd = s;
- ha->eid = *eidp;
+ ha->eid = eid;
ha->tab = machtab;
ha->dbenv = dbenv;
@@ -442,23 +443,25 @@ elect_thread(args)
machtab_t *machtab;
u_int32_t timeout;
int n, ret;
+ APP_DATA *app;
eargs = (elect_args *)args;
dbenv = eargs->dbenv;
machtab = eargs->machtab;
free(eargs);
+ app = dbenv->app_private;
machtab_parm(machtab, &n, &timeout);
(void)dbenv->rep_set_timeout(dbenv, DB_REP_ELECTION_TIMEOUT, timeout);
- while ((ret = dbenv->rep_elect(dbenv, n, (n/2+1),
- &master_eid, 0)) != 0)
+ while ((ret = dbenv->rep_elect(dbenv, n, (n/2+1), 0)) != 0)
sleep(2);
- /* Check if it's us. */
- if (master_eid == SELF_EID)
+ if (app->elected) {
+ app->elected = 0;
if ((ret = dbenv->rep_start(dbenv, NULL, DB_REP_MASTER)) != 0)
dbenv->err(dbenv, ret,
"can't start as master in election thread");
+ }
return (NULL);
}
diff --git a/db/examples_c/ex_rep/base/rep_net.c b/db/examples_c/ex_rep/base/rep_net.c
index cc22f585e..2ad8d4c5a 100644
--- a/db/examples_c/ex_rep/base/rep_net.c
+++ b/db/examples_c/ex_rep/base/rep_net.c
@@ -1,14 +1,12 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2001-2005
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2001,2007 Oracle. All rights reserved.
*
- * $Id: rep_net.c,v 12.12 2006/08/24 14:45:45 bostic Exp $
+ * $Id: rep_net.c,v 12.17 2007/05/17 17:29:27 bostic Exp $
*/
#include <sys/types.h>
-#include <assert.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
@@ -16,7 +14,6 @@
#include <db.h>
#include "rep_base.h"
-#include "../common/rep_common.h"
#ifndef _SYS_QUEUE_H
/*
* Some *BSD Unix variants include the Queue macros in their libraries and
@@ -340,7 +337,7 @@ listen_socket_init(progname, port)
*/
sockopt = 1;
setsockopt(s, SOL_SOCKET, SO_REUSEADDR,
- (const char *)&sockopt, sizeof (sockopt));
+ (const char *)&sockopt, sizeof(sockopt));
if (bind(s, (struct sockaddr *)&si, sizeof(si)) != 0) {
perror("can't bind listen socket");
@@ -639,9 +636,9 @@ quote_send(dbenv, control, rec, lsnp, eid, flags)
fprintf(stderr, "socket write error in send() function\n");
if ((t_ret = mutex_unlock(&machtab->mtmutex)) != 0) {
- dbenv->errx(dbenv, "can't unlock mutex");
- if (ret == 0)
- ret = t_ret;
+ dbenv->errx(dbenv, "can't unlock mutex");
+ if (ret == 0)
+ ret = t_ret;
}
return (ret);
diff --git a/db/examples_c/ex_rep/common/rep_common.c b/db/examples_c/ex_rep/common/rep_common.c
index ecffa461e..03a311724 100644
--- a/db/examples_c/ex_rep/common/rep_common.c
+++ b/db/examples_c/ex_rep/common/rep_common.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2006,2007 Oracle. All rights reserved.
*
- * $Id: rep_common.c,v 12.13 2006/09/08 20:32:06 bostic Exp $
+ * $Id: rep_common.c,v 12.20 2007/05/17 17:29:27 bostic Exp $
*/
#include <errno.h>
@@ -20,43 +19,13 @@
#define SLEEPTIME 3
#ifdef _WIN32
-#define WIN32_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#define sleep(s) Sleep(1000 * (s))
#endif
-static void event_callback __P((DB_ENV *, u_int32_t, void *));
static int print_stocks __P((DB *));
-static void
-event_callback(dbenv, which, info)
- DB_ENV *dbenv;
- u_int32_t which;
- void *info;
-{
- APP_DATA *app = dbenv->app_private;
-
- info = NULL; /* Currently unused. */
-
- switch (which) {
- case DB_EVENT_REP_MASTER:
- app->is_master = 1;
- break;
-
- case DB_EVENT_REP_CLIENT:
- app->is_master = 0;
- break;
-
- case DB_EVENT_REP_STARTUPDONE: /* FALLTHROUGH */
- case DB_EVENT_REP_NEWMASTER:
- /* I don't care about these, for now. */
- break;
-
- default:
- dbenv->errx(dbenv, "ignoring event %d", which);
- }
-}
-
static int
print_stocks(dbp)
DB *dbp;
@@ -69,7 +38,7 @@ print_stocks(dbp)
int ret, t_ret;
u_int32_t keysize, datasize;
- if ((ret = dbp->cursor(dbp, NULL, &dbc, 0)) != 0) {
+ if ((ret = dbp->cursor(dbp, NULL, &dbc, 0)) != 0) {
dbp->err(dbp, ret, "can't open cursor");
return (ret);
}
@@ -80,9 +49,9 @@ print_stocks(dbp)
printf("\tSymbol\tPrice\n");
printf("\t======\t=====\n");
- for (ret = dbc->c_get(dbc, &key, &data, DB_FIRST);
+ for (ret = dbc->get(dbc, &key, &data, DB_FIRST);
ret == 0;
- ret = dbc->c_get(dbc, &key, &data, DB_NEXT)) {
+ ret = dbc->get(dbc, &key, &data, DB_NEXT)) {
keysize = key.size > MAXKEYSIZE ? MAXKEYSIZE : key.size;
memcpy(keybuf, key.data, keysize);
keybuf[keysize] = '\0';
@@ -96,7 +65,7 @@ print_stocks(dbp)
printf("\n");
fflush(stdout);
- if ((t_ret = dbc->c_close(dbc)) != 0 && ret == 0)
+ if ((t_ret = dbc->close(dbc)) != 0 && ret == 0)
ret = t_ret;
switch (ret) {
@@ -112,13 +81,13 @@ print_stocks(dbp)
#define BUFSIZE 1024
int
-doloop(dbenv, app_data)
+doloop(dbenv, shared_data)
DB_ENV *dbenv;
- APP_DATA *app_data;
+ SHARED_DATA *shared_data;
{
DB *dbp;
DBT key, data;
- char buf[BUFSIZE], *rbuf;
+ char buf[BUFSIZE], *first, *price;
u_int32_t flags;
int ret;
@@ -128,6 +97,32 @@ doloop(dbenv, app_data)
memset(&data, 0, sizeof(data));
for (;;) {
+ printf("QUOTESERVER%s> ",
+ shared_data->is_master ? "" : " (read-only)");
+ fflush(stdout);
+
+ if (fgets(buf, sizeof(buf), stdin) == NULL)
+ break;
+
+#define DELIM " \t\n"
+ if ((first = strtok(&buf[0], DELIM)) == NULL) {
+ /* Blank input line. */
+ price = NULL;
+ } else if ((price = strtok(NULL, DELIM)) == NULL) {
+ /* Just one input token. */
+ if (strncmp(buf, "exit", 4) == 0 ||
+ strncmp(buf, "quit", 4) == 0)
+ break;
+ dbenv->errx(dbenv, "Format: TICKER VALUE");
+ continue;
+ } else {
+ /* Normal two-token input line. */
+ if (first != NULL && !shared_data->is_master) {
+ dbenv->errx(dbenv, "Can't update at client");
+ continue;
+ }
+ }
+
if (dbp == NULL) {
if ((ret = db_create(&dbp, dbenv, 0)) != 0)
return (ret);
@@ -137,7 +132,7 @@ doloop(dbenv, app_data)
goto err;
flags = DB_AUTO_COMMIT;
- if (app_data->is_master)
+ if (shared_data->is_master)
flags |= DB_CREATE;
if ((ret = dbp->open(dbp,
NULL, DATABASE, NULL, DB_BTREE, flags, 0)) != 0) {
@@ -150,7 +145,6 @@ doloop(dbenv, app_data)
goto err;
}
dbp = NULL;
- sleep(SLEEPTIME);
continue;
}
dbenv->err(dbenv, ret, "DB->open");
@@ -158,14 +152,7 @@ doloop(dbenv, app_data)
}
}
-
- printf("QUOTESERVER%s> ",
- app_data->is_master ? "" : " (read-only)");
- fflush(stdout);
-
- if (fgets(buf, sizeof(buf), stdin) == NULL)
- break;
- if (strtok(&buf[0], " \t\n") == NULL) {
+ if (first == NULL)
switch ((ret = print_stocks(dbp))) {
case 0:
continue;
@@ -176,31 +163,18 @@ doloop(dbenv, app_data)
dbp->err(dbp, ret, "Error traversing data");
goto err;
}
- }
- rbuf = strtok(NULL, " \t\n");
- if (rbuf == NULL || rbuf[0] == '\0') {
- if (strncmp(buf, "exit", 4) == 0 ||
- strncmp(buf, "quit", 4) == 0)
- break;
- dbenv->errx(dbenv, "Format: TICKER VALUE");
- continue;
- }
-
- if (!app_data->is_master) {
- dbenv->errx(dbenv, "Can't update at client");
- continue;
- }
+ else {
+ key.data = first;
+ key.size = (u_int32_t)strlen(first);
- key.data = buf;
- key.size = (u_int32_t)strlen(buf);
+ data.data = price;
+ data.size = (u_int32_t)strlen(price);
- data.data = rbuf;
- data.size = (u_int32_t)strlen(rbuf);
-
- if ((ret = dbp->put(dbp,
- NULL, &key, &data, DB_AUTO_COMMIT)) != 0) {
- dbp->err(dbp, ret, "DB->put");
- goto err;
+ if ((ret = dbp->put(dbp,
+ NULL, &key, &data, DB_AUTO_COMMIT)) != 0) {
+ dbp->err(dbp, ret, "DB->put");
+ goto err;
+ }
}
}
@@ -226,13 +200,11 @@ create_env(progname, dbenvp)
dbenv->set_errfile(dbenv, stderr);
dbenv->set_errpfx(dbenv, progname);
- (void)dbenv->set_event_notify(dbenv, event_callback);
*dbenvp = dbenv;
return (0);
}
-
/* Open and configure an environment. */
int
env_init(dbenv, home)
@@ -258,10 +230,10 @@ env_init(dbenv, home)
* in the system would be maintained in some sort of configuration file. The
* critical part of this interface is that we assume at startup that we can
* find out
- * 1) what host/port we wish to listen on for connections,
- * 2) a (possibly empty) list of other sites we should attempt to connect
- * to; and
- * 3) what our Berkeley DB home environment is.
+ * 1) what host/port we wish to listen on for connections,
+ * 2) a (possibly empty) list of other sites we should attempt to connect
+ * to; and
+ * 3) what our Berkeley DB home environment is.
*
* These pieces of information are expressed by the following flags.
* -m host:port (required; m stands for me)
@@ -283,4 +255,3 @@ usage(progname)
"[-n nsites][-p priority]\n");
exit(EXIT_FAILURE);
}
-
diff --git a/db/examples_c/ex_rep/common/rep_common.h b/db/examples_c/ex_rep/common/rep_common.h
index 4dafe5f16..fb9f24111 100644
--- a/db/examples_c/ex_rep/common/rep_common.h
+++ b/db/examples_c/ex_rep/common/rep_common.h
@@ -1,18 +1,17 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2006,2007 Oracle. All rights reserved.
*
- * $Id: rep_common.h,v 12.2 2006/08/24 14:45:46 bostic Exp $
+ * $Id: rep_common.h,v 12.5 2007/05/17 15:15:29 bostic Exp $
*/
+/* Data shared by both repmgr and base versions of this program. */
typedef struct {
int is_master;
- void *comm_infrastructure;
-} APP_DATA;
+} SHARED_DATA;
int create_env __P((const char *progname, DB_ENV **));
-int doloop __P((DB_ENV *, APP_DATA *));
+int doloop __P((DB_ENV *, SHARED_DATA *));
int env_init __P((DB_ENV *, const char *));
void usage __P((const char *));
diff --git a/db/examples_c/ex_rep/mgr/rep_mgr.c b/db/examples_c/ex_rep/mgr/rep_mgr.c
index 21017581b..15e58bcd9 100644
--- a/db/examples_c/ex_rep/mgr/rep_mgr.c
+++ b/db/examples_c/ex_rep/mgr/rep_mgr.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2001-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2001,2007 Oracle. All rights reserved.
*
- * $Id: rep_mgr.c,v 12.15 2006/09/08 20:32:06 bostic Exp $
+ * $Id: rep_mgr.c,v 12.21 2007/05/17 17:29:28 bostic Exp $
*/
#include <sys/types.h>
@@ -19,12 +18,17 @@
#include "../common/rep_common.h"
+typedef struct {
+ SHARED_DATA shared_data;
+} APP_DATA;
+
const char *progname = "ex_rep";
#ifdef _WIN32
extern int getopt(int, char * const *, const char *);
#endif
+static void event_callback __P((DB_ENV *, u_int32_t, void *));
int
main(argc, argv)
@@ -41,7 +45,7 @@ main(argc, argv)
u_int32_t start_policy;
int priority;
- my_app_data.is_master = 0; /* assume I start out as client */
+ my_app_data.shared_data.is_master = 0; /* assume start out as client */
dbenv = NULL;
ret = got_listen_address = 0;
home = "TESTDIR";
@@ -49,19 +53,17 @@ main(argc, argv)
if ((ret = create_env(progname, &dbenv)) != 0)
goto err;
dbenv->app_private = &my_app_data;
+ (void)dbenv->set_event_notify(dbenv, event_callback);
start_policy = DB_REP_ELECTION; /* default */
priority = 100; /* default */
- while ((ch = getopt(argc, argv, "CFf:h:Mm:n:o:p:v")) != EOF) {
+ while ((ch = getopt(argc, argv, "Cf:h:Mm:n:o:p:v")) != EOF) {
friend = 0;
switch (ch) {
case 'C':
start_policy = DB_REP_CLIENT;
break;
- case 'F':
- start_policy = DB_REP_FULL_ELECTION;
- break;
case 'h':
home = optarg;
break;
@@ -78,14 +80,16 @@ main(argc, argv)
if ((ret = dbenv->repmgr_set_local_site(dbenv,
host, port, 0)) != 0) {
fprintf(stderr,
- "Could not set listen address (%d).\n", ret);
+ "Could not set listen address (%d).\n",
+ ret);
goto err;
}
got_listen_address = 1;
break;
case 'n':
totalsites = atoi(optarg);
- if ((ret = dbenv->rep_set_nsites(dbenv, totalsites)) != 0)
+ if ((ret =
+ dbenv->rep_set_nsites(dbenv, totalsites)) != 0)
dbenv->err(dbenv, ret, "set_nsites");
break;
case 'f':
@@ -131,11 +135,25 @@ main(argc, argv)
if ((ret = dbenv->repmgr_start(dbenv, 3, start_policy)) != 0)
goto err;
- if ((ret = doloop(dbenv, &my_app_data)) != 0) {
+ if ((ret = doloop(dbenv, &my_app_data.shared_data)) != 0) {
dbenv->err(dbenv, ret, "Client failed");
goto err;
}
+ /*
+ * We have used the DB_TXN_NOSYNC environment flag for improved
+ * performance without the usual sacrifice of transactional durability,
+ * as discussed in the "Transactional guarantees" page of the Reference
+ * Guide: if one replication site crashes, we can expect the data to
+ * exist at another site. However, in case we shut down all sites
+ * gracefully, we push out the end of the log here so that the most
+ * recent transactions don't mysteriously disappear.
+ */
+ if ((ret = dbenv->log_flush(dbenv, NULL)) != 0) {
+ dbenv->err(dbenv, ret, "log_flush");
+ goto err;
+ }
+
err:
if (dbenv != NULL &&
(t_ret = dbenv->close(dbenv, 0)) != 0) {
@@ -147,3 +165,37 @@ err:
return (ret);
}
+
+static void
+event_callback(dbenv, which, info)
+ DB_ENV *dbenv;
+ u_int32_t which;
+ void *info;
+{
+ APP_DATA *app = dbenv->app_private;
+ SHARED_DATA *shared = &app->shared_data;
+
+ info = NULL; /* Currently unused. */
+
+ switch (which) {
+ case DB_EVENT_REP_CLIENT:
+ shared->is_master = 0;
+ break;
+
+ case DB_EVENT_REP_MASTER:
+ shared->is_master = 1;
+ break;
+
+ case DB_EVENT_REP_PERM_FAILED:
+ printf("insufficient acks\n");
+ break;
+
+ case DB_EVENT_REP_STARTUPDONE: /* FALLTHROUGH */
+ case DB_EVENT_REP_NEWMASTER:
+ /* I don't care about these, for now. */
+ break;
+
+ default:
+ dbenv->errx(dbenv, "ignoring event %d", which);
+ }
+}
diff --git a/db/examples_c/ex_repquote/ex_repquote.h b/db/examples_c/ex_repquote/ex_repquote.h
deleted file mode 100644
index 7a7fe338b..000000000
--- a/db/examples_c/ex_repquote/ex_repquote.h
+++ /dev/null
@@ -1,128 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2001-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: ex_repquote.h,v 1.35 2004/01/28 03:36:03 bostic Exp $
- */
-
-#ifndef _EX_REPQUOTE_H_
-#define _EX_REPQUOTE_H_
-
-#define SELF_EID 1
-
-typedef struct {
- char *host; /* Host name. */
- u_int32_t port; /* Port on which to connect to this site. */
-} repsite_t;
-
-/* Globals */
-extern int master_eid;
-extern char *myaddr;
-extern unsigned short myport;
-
-struct __member; typedef struct __member member_t;
-struct __machtab; typedef struct __machtab machtab_t;
-
-/* Arguments for the connect_all thread. */
-typedef struct {
- DB_ENV *dbenv;
- const char *progname;
- const char *home;
- machtab_t *machtab;
- repsite_t *sites;
- int nsites;
-} all_args;
-
-/* Arguments for the connect_loop thread. */
-typedef struct {
- DB_ENV *dbenv;
- const char * home;
- const char * progname;
- machtab_t *machtab;
- int port;
-} connect_args;
-
-#define CACHESIZE (10 * 1024 * 1024)
-#define DATABASE "quote.db"
-#define MAX_THREADS 25
-#define SLEEPTIME 3
-
-void *connect_all __P((void *args));
-void *connect_thread __P((void *args));
-int doclient __P((DB_ENV *, const char *, machtab_t *));
-int domaster __P((DB_ENV *, const char *));
-int get_accepted_socket __P((const char *, int));
-int get_connected_socket
- __P((machtab_t *, const char *, const char *, int, int *, int *));
-int get_next_message __P((int, DBT *, DBT *));
-int listen_socket_init __P((const char *, int));
-int listen_socket_accept __P((machtab_t *, const char *, int, int *));
-int machtab_getinfo __P((machtab_t *, int, u_int32_t *, int *));
-int machtab_init __P((machtab_t **, int, int));
-void machtab_parm __P((machtab_t *, int *, int *, u_int32_t *));
-int machtab_rem __P((machtab_t *, int, int));
-int quote_send __P((DB_ENV *, const DBT *, const DBT *, const DB_LSN *,
- int, u_int32_t));
-
-#ifndef COMPQUIET
-#define COMPQUIET(x,y) x = (y)
-#endif
-
-/* Portability macros for basic threading and networking */
-#ifdef _WIN32
-
-#include <windows.h>
-
-extern int getopt(int, char * const *, const char *);
-
-typedef HANDLE thread;
-#define thread_create(thrp, attr, func, arg) \
- (((*(thrp) = CreateThread(NULL, 0, \
- (LPTHREAD_START_ROUTINE)(func), (arg), 0, NULL)) == NULL) ? -1 : 0)
-#define thread_join(thr, statusp) \
- ((WaitForSingleObject((thr), INFINITE) == WAIT_OBJECT_0) && \
- GetExitCodeThread((thr), (LPDWORD)(statusp)) ? 0 : -1)
-
-typedef HANDLE mutex_t;
-#define mutex_init(m, attr) \
- (((*(m) = CreateMutex(NULL, FALSE, NULL)) != NULL) ? 0 : -1)
-#define mutex_lock(m) \
- ((WaitForSingleObject(*(m), INFINITE) == WAIT_OBJECT_0) ? 0 : -1)
-#define mutex_unlock(m) (ReleaseMutex(*(m)) ? 0 : -1)
-#define sleep(s) Sleep(1000 * (s))
-
-#define readsocket(s, buf, sz) recv((s), (buf), (sz), 0)
-#define writesocket(s, buf, sz) send((s), (buf), (sz), 0)
-#define net_errno WSAGetLastError()
-
-#else /* !_WIN32 */
-
-#include <netinet/in.h>
-#include <sys/socket.h>
-#include <sys/wait.h>
-#include <netdb.h>
-#include <pthread.h>
-#include <signal.h>
-#include <unistd.h>
-
-typedef pthread_t thread;
-#define thread_create(thrp, attr, func, arg) \
- pthread_create((thrp), (attr), (func), (arg))
-#define thread_join(thr, statusp) pthread_join((thr), (statusp))
-#define closesocket(fd) close(fd)
-
-typedef pthread_mutex_t mutex_t;
-#define mutex_init(m, attr) pthread_mutex_init((m), (attr))
-#define mutex_lock(m) pthread_mutex_lock(m)
-#define mutex_unlock(m) pthread_mutex_unlock(m)
-
-#define readsocket(s, buf, sz) read((s), (buf), (sz))
-#define writesocket(s, buf, sz) write((s), (buf), (sz))
-#define closesocket(fd) close(fd)
-#define net_errno errno
-
-#endif
-
-#endif /* !_EX_REPQUOTE_H_ */
diff --git a/db/examples_c/ex_repquote/ex_rq_client.c b/db/examples_c/ex_repquote/ex_rq_client.c
deleted file mode 100644
index d26552f63..000000000
--- a/db/examples_c/ex_repquote/ex_rq_client.c
+++ /dev/null
@@ -1,274 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2001-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: ex_rq_client.c,v 1.39 2004/01/28 03:36:03 bostic Exp $
- */
-
-#include <sys/types.h>
-#include <errno.h>
-#include <signal.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <db.h>
-
-#include "ex_repquote.h"
-
-static void *check_loop __P((void *));
-static void *display_loop __P((void *));
-static int print_stocks __P((DBC *));
-
-typedef struct {
- const char *progname;
- DB_ENV *dbenv;
-} disploop_args;
-
-typedef struct {
- DB_ENV *dbenv;
- machtab_t *machtab;
- const char *progname;
-} checkloop_args;
-
-int
-doclient(dbenv, progname, machtab)
- DB_ENV *dbenv;
- const char *progname;
- machtab_t *machtab;
-{
- checkloop_args cargs;
- disploop_args dargs;
- thread check_thr, disp_thr;
- void *cstatus, *dstatus;
- int rval, s;
-
- rval = EXIT_SUCCESS;
- s = -1;
-
- memset(&dargs, 0, sizeof(dargs));
-
- dargs.progname = progname;
- dargs.dbenv = dbenv;
- if (thread_create(&disp_thr, NULL, display_loop, (void *)&dargs)) {
- dbenv->err(dbenv, errno, "display_loop thread creation failed");
- goto err;
- }
-
- cargs.dbenv = dbenv;
- cargs.machtab = machtab;
- cargs.progname = progname;
- if (thread_create(&check_thr, NULL, check_loop, (void *)&cargs)) {
- dbenv->err(dbenv, errno, "check_thread pthread_create failed");
- goto err;
- }
- if (thread_join(disp_thr, &dstatus) ||
- thread_join(check_thr, &cstatus)) {
- dbenv->err(dbenv, errno, "pthread_join failed");
- goto err;
- }
-
- if (0) {
-err: rval = EXIT_FAILURE;
- }
- return (rval);
-}
-
-/*
- * Our only job is to check that the master is valid and if it's not
- * for an extended period, to trigger an election. We do two phases.
- * If we do not have a master, first we send out a request for a master
- * to identify itself (that would be a call to rep_start). If that fails,
- * we trigger an election.
- */
-static void *
-check_loop(args)
- void *args;
-{
- DB_ENV *dbenv;
- DBT dbt;
- const char *progname;
- checkloop_args *cargs;
- int count, n, pri;
- machtab_t *machtab;
- u_int32_t timeout;
-
- cargs = (checkloop_args *)args;
- dbenv = cargs->dbenv;
- machtab = cargs->machtab;
- progname = cargs->progname;
-
-#define IDLE_INTERVAL 1
-
- count = 0;
- while (master_eid == DB_EID_INVALID) {
- /*
- * Call either rep_start or rep_elect depending on if
- * count is 0 or 1.
- */
-
- if (count == 0) {
- memset(&dbt, 0, sizeof(dbt));
- dbt.data = myaddr;
- dbt.size = strlen(myaddr) + 1;
- (void)dbenv->rep_start(dbenv, &dbt, DB_REP_CLIENT);
- count = 1;
- } else {
- machtab_parm(machtab, &n, &pri, &timeout);
- if (dbenv->rep_elect(dbenv,
- n, (n/2+1), pri, timeout, &master_eid, 0) == 0)
- break;
- count = 0;
- }
- sleep(IDLE_INTERVAL);
- }
-
- /* Check if I won the election. */
- if (master_eid == SELF_EID &&
- dbenv->rep_start(dbenv, NULL, DB_REP_MASTER) == 0)
- (void)domaster(dbenv, progname);
-
- return ((void *)EXIT_SUCCESS);
-}
-
-static void *
-display_loop(args)
- void *args;
-{
- DB *dbp;
- DB_ENV *dbenv;
- DBC *dbc;
- const char *progname;
- disploop_args *dargs;
- int ret, rval, t_ret;
-
- dargs = (disploop_args *)args;
- progname = dargs->progname;
- dbenv = dargs->dbenv;
-
- dbc = NULL;
- dbp = NULL;
- ret = 0;
-
-retry: for (;;) {
- /* If we become master, shut this loop off. */
- if (master_eid == SELF_EID)
- break;
-
- if (dbp == NULL) {
- if ((ret = db_create(&dbp, dbenv, 0)) != 0) {
- dbenv->err(dbenv, ret, "db_create");
- return ((void *)EXIT_FAILURE);
- }
-
- if ((ret = dbp->open(dbp, NULL,
- DATABASE, NULL, DB_BTREE, DB_RDONLY, 0)) != 0) {
- if (ret == ENOENT) {
- printf(
- "No stock database yet available.\n");
- if ((ret = dbp->close(dbp, 0)) != 0) {
- dbenv->err(dbenv,
- ret, "DB->close");
- goto err;
- }
- dbp = NULL;
- sleep(SLEEPTIME);
- continue;
- }
- dbenv->err(dbenv, ret, "DB->open");
- goto err;
- }
- }
-
- if ((ret = dbp->cursor(dbp, NULL, &dbc, 0)) != 0)
- dbenv->err(dbenv, ret, "DB->cursor");
- else {
- if ((ret = print_stocks(dbc)) != 0)
- dbenv->err(dbenv, ret,
- "database traversal failed");
-
- if ((t_ret = dbc->c_close(dbc)) != 0) {
- dbenv->err(dbenv, ret, "DBC->c_close");
-
- if (ret == 0)
- ret = t_ret;
- }
- }
-
- if (ret == DB_REP_HANDLE_DEAD) {
- dbp = NULL;
- continue;
- } else if (ret != 0)
- goto err;
-
- dbc = NULL;
-
- sleep(SLEEPTIME);
- }
-
-err: rval = EXIT_SUCCESS;
- switch (ret) {
- case DB_LOCK_DEADLOCK:
- if (dbc != NULL) {
- (void)dbc->c_close(dbc);
- dbc = NULL;
- }
- ret = 0;
- goto retry;
- case DB_REP_HANDLE_DEAD:
- if (dbp != NULL) {
- (void)dbp->close(dbp, DB_NOSYNC);
- dbp = NULL;
- }
- ret = 0;
- goto retry;
- default:
- break;
- }
-
- if (ret != 0)
- rval = EXIT_FAILURE;
-
- if (dbp != NULL && (ret = dbp->close(dbp, 0)) != 0) {
- dbenv->err(dbenv, ret, "DB->close");
- return ((void *)EXIT_FAILURE);
- }
-
- return ((void *)rval);
-}
-
-static int
-print_stocks(dbc)
- DBC *dbc;
-{
- DBT key, data;
-#define MAXKEYSIZE 10
-#define MAXDATASIZE 20
- char keybuf[MAXKEYSIZE + 1], databuf[MAXDATASIZE + 1];
- int ret;
- u_int32_t keysize, datasize;
-
- memset(&key, 0, sizeof(key));
- memset(&data, 0, sizeof(data));
-
- printf("\tSymbol\tPrice\n");
- printf("\t======\t=====\n");
-
- for (ret = dbc->c_get(dbc, &key, &data, DB_FIRST);
- ret == 0;
- ret = dbc->c_get(dbc, &key, &data, DB_NEXT)) {
- keysize = key.size > MAXKEYSIZE ? MAXKEYSIZE : key.size;
- memcpy(keybuf, key.data, keysize);
- keybuf[keysize] = '\0';
-
- datasize = data.size >= MAXDATASIZE ? MAXDATASIZE : data.size;
- memcpy(databuf, data.data, datasize);
- databuf[datasize] = '\0';
-
- printf("\t%s\t%s\n", keybuf, databuf);
- }
- printf("\n");
- return (ret == DB_NOTFOUND ? 0 : ret);
-}
diff --git a/db/examples_c/ex_repquote/ex_rq_main.c b/db/examples_c/ex_repquote/ex_rq_main.c
deleted file mode 100644
index 0fb98176d..000000000
--- a/db/examples_c/ex_repquote/ex_rq_main.c
+++ /dev/null
@@ -1,322 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2001-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: ex_rq_main.c,v 1.34 2004/07/16 14:56:22 bostic Exp $
- */
-
-#include <sys/types.h>
-#include <errno.h>
-#include <signal.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <db.h>
-
-#include "ex_repquote.h"
-
-/*
- * Process globals (we could put these in the machtab I suppose).
- */
-int master_eid;
-char *myaddr;
-unsigned short myport;
-
-static int env_init
- __P((const char *, const char *, DB_ENV **, machtab_t *, u_int32_t));
-static void usage __P((const char *));
-
-int
-main(argc, argv)
- int argc;
- char *argv[];
-{
- extern char *optarg;
- DB_ENV *dbenv;
- DBT local;
- enum { MASTER, CLIENT, UNKNOWN } whoami;
- all_args aa;
- connect_args ca;
- machtab_t *machtab;
- thread all_thr, conn_thr;
- void *astatus, *cstatus;
-#ifdef _WIN32
- WSADATA wsaData;
-#else
- struct sigaction sigact;
-#endif
- repsite_t site, *sitep, self, *selfp;
- int maxsites, nsites, ret, priority, totalsites, verbose;
- char *c, ch;
- const char *home, *progname;
-
- master_eid = DB_EID_INVALID;
-
- dbenv = NULL;
- whoami = UNKNOWN;
- machtab = NULL;
- selfp = sitep = NULL;
- maxsites = nsites = ret = totalsites = verbose = 0;
- priority = 100;
- home = "TESTDIR";
- progname = "ex_repquote";
-
- while ((ch = getopt(argc, argv, "Ch:Mm:n:o:p:v")) != EOF)
- switch (ch) {
- case 'M':
- whoami = MASTER;
- master_eid = SELF_EID;
- break;
- case 'C':
- whoami = CLIENT;
- break;
- case 'h':
- home = optarg;
- break;
- case 'm':
- if ((myaddr = strdup(optarg)) == NULL) {
- fprintf(stderr,
- "System error %s\n", strerror(errno));
- goto err;
- }
- self.host = optarg;
- self.host = strtok(self.host, ":");
- if ((c = strtok(NULL, ":")) == NULL) {
- fprintf(stderr, "Bad host specification.\n");
- goto err;
- }
- myport = self.port = (unsigned short)atoi(c);
- selfp = &self;
- break;
- case 'n':
- totalsites = atoi(optarg);
- break;
- case 'o':
- site.host = optarg;
- site.host = strtok(site.host, ":");
- if ((c = strtok(NULL, ":")) == NULL) {
- fprintf(stderr, "Bad host specification.\n");
- goto err;
- }
- site.port = atoi(c);
- if (sitep == NULL || nsites >= maxsites) {
- maxsites = maxsites == 0 ? 10 : 2 * maxsites;
- if ((sitep = realloc(sitep,
- maxsites * sizeof(repsite_t))) == NULL) {
- fprintf(stderr, "System error %s\n",
- strerror(errno));
- goto err;
- }
- }
- sitep[nsites++] = site;
- break;
- case 'p':
- priority = atoi(optarg);
- break;
- case 'v':
- verbose = 1;
- break;
- case '?':
- default:
- usage(progname);
- }
-
- /* Error check command line. */
- if (whoami == UNKNOWN) {
- fprintf(stderr, "Must specify -M or -C.\n");
- goto err;
- }
-
- if (selfp == NULL)
- usage(progname);
-
- if (home == NULL)
- usage(progname);
-
-#ifdef _WIN32
- /* Initialize the Windows sockets DLL. */
- if ((ret = WSAStartup(MAKEWORD(2, 2), &wsaData)) != 0) {
- fprintf(stderr,
- "Unable to initialize Windows sockets: %d\n", ret);
- goto err;
- }
-#else
- /*
- * Turn off SIGPIPE so that we don't kill processes when they
- * happen to lose a connection at the wrong time.
- */
- memset(&sigact, 0, sizeof(sigact));
- sigact.sa_handler = SIG_IGN;
- if ((ret = sigaction(SIGPIPE, &sigact, NULL)) != 0) {
- fprintf(stderr,
- "Unable to turn off SIGPIPE: %s\n", strerror(ret));
- goto err;
- }
-#endif
-
- /*
- * We are hardcoding priorities here that all clients have the
- * same priority except for a designated master who gets a higher
- * priority.
- */
- if ((ret =
- machtab_init(&machtab, priority, totalsites)) != 0)
- goto err;
-
- /*
- * We can now open our environment, although we're not ready to
- * begin replicating. However, we want to have a dbenv around
- * so that we can send it into any of our message handlers.
- */
- if ((ret = env_init(progname, home, &dbenv, machtab, DB_RECOVER)) != 0)
- goto err;
- if (verbose &&
- (ret = dbenv->set_verbose(dbenv, DB_VERB_REPLICATION, 1)) != 0)
- goto err;
-
- /*
- * Now sets up comm infrastructure. There are two phases. First,
- * we open our port for listening for incoming connections. Then
- * we attempt to connect to every host we know about.
- */
-
- ca.dbenv = dbenv;
- ca.home = home;
- ca.progname = progname;
- ca.machtab = machtab;
- ca.port = selfp->port;
- if ((ret = thread_create(&conn_thr, NULL, connect_thread, &ca)) != 0)
- goto err;
-
- aa.dbenv = dbenv;
- aa.progname = progname;
- aa.home = home;
- aa.machtab = machtab;
- aa.sites = sitep;
- aa.nsites = nsites;
- if ((ret = thread_create(&all_thr, NULL, connect_all, &aa)) != 0)
- goto err;
-
- /*
- * We have now got the entire communication infrastructure set up.
- * It's time to declare ourselves to be a client or master.
- */
- if (whoami == MASTER) {
- if ((ret = dbenv->rep_start(dbenv, NULL, DB_REP_MASTER)) != 0) {
- dbenv->err(dbenv, ret, "dbenv->rep_start failed");
- goto err;
- }
- if ((ret = domaster(dbenv, progname)) != 0) {
- dbenv->err(dbenv, ret, "Master failed");
- goto err;
- }
- } else {
- memset(&local, 0, sizeof(local));
- local.data = myaddr;
- local.size = strlen(myaddr) + 1;
- if ((ret =
- dbenv->rep_start(dbenv, &local, DB_REP_CLIENT)) != 0) {
- dbenv->err(dbenv, ret, "dbenv->rep_start failed");
- goto err;
- }
- /* Sleep to give ourselves time to find a master. */
- sleep(5);
- if ((ret = doclient(dbenv, progname, machtab)) != 0) {
- dbenv->err(dbenv, ret, "Client failed");
- goto err;
- }
-
- }
-
- /* Wait on the connection threads. */
- if (thread_join(all_thr, &astatus) || thread_join(conn_thr, &cstatus))
- ret = -1;
- if (ret == 0 &&
- ((int)astatus != EXIT_SUCCESS || (int)cstatus != EXIT_SUCCESS))
- ret = -1;
-
-err: if (machtab != NULL)
- free(machtab);
- if (dbenv != NULL)
- (void)dbenv->close(dbenv, 0);
-#ifdef _WIN32
- /* Shut down the Windows sockets DLL. */
- (void)WSACleanup();
-#endif
- return (ret);
-}
-
-/*
- * In this application, we specify all communication via the command line.
- * In a real application, we would expect that information about the other
- * sites in the system would be maintained in some sort of configuration
- * file. The critical part of this interface is that we assume at startup
- * that we can find out 1) what host/port we wish to listen on for connections,
- * 2) a (possibly empty) list of other sites we should attempt to connect to.
- * 3) whether we are a master or client (if we don't know, we should come up
- * as a client and see if there is a master out there) and 4) what our
- * Berkeley DB home environment is.
- *
- * These pieces of information are expressed by the following flags.
- * -m host:port (required; m stands for me)
- * -o host:port (optional; o stands for other; any number of these may be
- * specified)
- * -[MC] M for master/C for client
- * -h home directory
- * -n nsites (optional; number of sites in replication group; defaults to 0
- * in which case we try to dynamically compute the number of sites in
- * the replication group.)
- * -p priority (optional: defaults to 100)
- */
-static void
-usage(progname)
- const char *progname;
-{
- fprintf(stderr, "usage: %s ", progname);
- fprintf(stderr, "[-CM][-h home][-o host:port][-m host:port]%s",
- "[-n nsites][-p priority]\n");
- exit(EXIT_FAILURE);
-}
-
-/* Open and configure an environment. */
-static int
-env_init(progname, home, dbenvp, machtab, flags)
- const char *progname, *home;
- DB_ENV **dbenvp;
- machtab_t *machtab;
- u_int32_t flags;
-{
- DB_ENV *dbenv;
- int ret;
- char *prefix;
-
- if ((prefix = malloc(strlen(progname) + 2)) == NULL) {
- fprintf(stderr,
- "%s: System error: %s\n", progname, strerror(errno));
- return (errno);
- }
- sprintf(prefix, "%s:", progname);
-
- if ((ret = db_env_create(&dbenv, 0)) != 0) {
- fprintf(stderr, "%s: env create failed: %s\n",
- progname, db_strerror(ret));
- return (ret);
- }
- dbenv->set_errfile(dbenv, stderr);
- dbenv->set_errpfx(dbenv, prefix);
- (void)dbenv->set_cachesize(dbenv, 0, CACHESIZE, 0);
- /* (void)dbenv->set_flags(dbenv, DB_TXN_NOSYNC, 1); */
-
- dbenv->app_private = machtab;
- (void)dbenv->set_rep_transport(dbenv, SELF_EID, quote_send);
-
- flags |= DB_CREATE | DB_THREAD | DB_INIT_REP |
- DB_INIT_LOCK | DB_INIT_LOG | DB_INIT_MPOOL | DB_INIT_TXN;
-
- ret = dbenv->open(dbenv, home, flags, 0);
-
- *dbenvp = dbenv;
- return (ret);
-}
diff --git a/db/examples_c/ex_repquote/ex_rq_master.c b/db/examples_c/ex_repquote/ex_rq_master.c
deleted file mode 100644
index 59e6abaf1..000000000
--- a/db/examples_c/ex_repquote/ex_rq_master.c
+++ /dev/null
@@ -1,169 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2001-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: ex_rq_master.c,v 1.27 2004/01/28 03:36:03 bostic Exp $
- */
-
-#include <sys/types.h>
-#include <errno.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <db.h>
-
-#include "ex_repquote.h"
-
-static void *master_loop __P((void *));
-
-#define BUFSIZE 1024
-
-int
-domaster(dbenv, progname)
- DB_ENV *dbenv;
- const char *progname;
-{
- int ret;
- thread interface_thr;
-#ifndef _WIN32
- int t_ret;
- pthread_attr_t attr;
-
- /* Spawn off a thread to handle the basic master interface. */
- if ((ret = pthread_attr_init(&attr)) != 0 &&
- (ret = pthread_attr_setdetachstate(&attr,
- PTHREAD_CREATE_DETACHED)) != 0)
- goto err;
-#endif
-
- if ((ret = thread_create(&interface_thr,
- &attr, master_loop, (void *)dbenv)) != 0)
- goto err;
-
-err:
-#ifndef _WIN32
- if ((t_ret = pthread_attr_destroy(&attr)) != 0 && ret == 0)
- ret = t_ret;
-#endif
- COMPQUIET(progname, NULL);
-
- return (ret);
-}
-
-static void *
-master_loop(dbenvv)
- void *dbenvv;
-{
- DB *dbp;
- DB_ENV *dbenv;
- DB_TXN *txn;
- DBT key, data;
- char buf[BUFSIZE], *rbuf;
- int ret;
-
- dbp = NULL;
- txn = NULL;
-
- dbenv = (DB_ENV *)dbenvv;
- /*
- * Check if the database exists and if it verifies cleanly.
- * If it does, run with it; else recreate it and go. Note
- * that we have to verify outside of the environment.
- */
-#ifdef NOTDEF
- if ((ret = db_create(&dbp, NULL, 0)) != 0)
- return (ret);
- if ((ret = dbp->verify(dbp, DATABASE, NULL, NULL, 0)) != 0) {
- if ((ret = dbp->remove(dbp, DATABASE, NULL, 0)) != 0 &&
- ret != DB_NOTFOUND && ret != ENOENT)
- return (ret);
-#endif
- if ((ret = db_create(&dbp, dbenv, 0)) != 0)
- return ((void *)ret);
- /* Set page size small so we can easily do page allocation. */
- if ((ret = dbp->set_pagesize(dbp, 512)) != 0)
- goto err;
-
- if ((ret = dbenv->txn_begin(dbenv, NULL, &txn, 0)) != 0)
- goto err;
- if ((ret = dbp->open(dbp, txn, DATABASE,
- NULL, DB_BTREE, DB_CREATE /* | DB_THREAD */, 0)) != 0)
- goto err;
- ret = txn->commit(txn, 0);
- txn = NULL;
- if (ret != 0) {
- dbp = NULL;
- goto err;
- }
-
-#ifdef NOTDEF
- } else {
- /* Reopen in the environment. */
- if ((ret = dbp->close(dbp, 0)) != 0)
- return (ret);
- if ((ret = db_create(&dbp, dbenv, 0)) != 0)
- return (ret);
- if ((ret = dbp->open(dbp,
- DATABASE, NULL, DB_UNKNOWN, DB_THREAD, 0)) != 0)
- goto err;
- }
-#endif
- /*
- * XXX
- * It would probably be kind of cool to do this in Tcl and
- * have a nice GUI. It would also be cool to be independently
- * wealthy.
- */
- memset(&key, 0, sizeof(key));
- memset(&data, 0, sizeof(data));
- for (;;) {
- printf("QUOTESERVER> ");
- fflush(stdout);
-
- if (fgets(buf, sizeof(buf), stdin) == NULL)
- break;
- (void)strtok(&buf[0], " \t\n");
- rbuf = strtok(NULL, " \t\n");
- if (rbuf == NULL || rbuf[0] == '\0') {
- if (strncmp(buf, "exit", 4) == 0 ||
- strncmp(buf, "quit", 4) == 0)
- break;
- dbenv->errx(dbenv, "Format: TICKER VALUE");
- continue;
- }
-
- key.data = buf;
- key.size = strlen(buf);
-
- data.data = rbuf;
- data.size = strlen(rbuf);
-
- if ((ret = dbenv->txn_begin(dbenv, NULL, &txn, 0)) != 0)
- goto err;
- switch (ret =
- dbp->put(dbp, txn, &key, &data, 0)) {
- case 0:
- break;
- default:
- dbp->err(dbp, ret, "DB->put");
- if (ret != DB_KEYEXIST)
- goto err;
- break;
- }
- ret = txn->commit(txn, 0);
- txn = NULL;
- if (ret != 0)
- goto err;
- }
-
-err: if (txn != NULL)
- (void)txn->abort(txn);
-
- if (dbp != NULL)
- (void)dbp->close(dbp, DB_NOSYNC);
-
- return ((void *)ret);
-}
diff --git a/db/examples_c/ex_repquote/ex_rq_net.c b/db/examples_c/ex_repquote/ex_rq_net.c
deleted file mode 100644
index 828aab582..000000000
--- a/db/examples_c/ex_repquote/ex_rq_net.c
+++ /dev/null
@@ -1,749 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2001-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: ex_rq_net.c,v 1.47 2004/01/28 03:36:03 bostic Exp $
- */
-
-#include <sys/types.h>
-#include <assert.h>
-#include <errno.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <db.h>
-#include "ex_repquote.h"
-#ifndef _SYS_QUEUE_H
-/*
- * Some *BSD Unix variants include the Queue macros in their libraries and
- * these might already have been included. In that case, it would be bad
- * to include them again.
- */
-#include <dbinc/queue.h> /* !!!: for the LIST_XXX macros. */
-#endif
-
-
-int machtab_add __P((machtab_t *, int, u_int32_t, int, int *));
-#ifdef DIAGNOSTIC
-void machtab_print __P((machtab_t *));
-#endif
-ssize_t readn __P((int, void *, size_t));
-
-/*
- * This file defines the communication infrastructure for the ex_repquote
- * sample application.
- *
- * This application uses TCP/IP for its communication. In an N-site
- * replication group, this means that there are N * N communication
- * channels so that every site can communicate with every other site
- * (this allows elections to be held when the master fails). We do
- * not require that anyone know about all sites when the application
- * starts up. In order to communicate, the application should know
- * about someone, else it has no idea how to ever get in the game.
- *
- * Communication is handled via a number of different threads. These
- * thread functions are implemented in rep_util.c In this file, we
- * define the data structures that maintain the state that describes
- * the comm infrastructure, the functions that manipulates this state
- * and the routines used to actually send and receive data over the
- * sockets.
- */
-
-/*
- * The communication infrastructure is represented by a machine table,
- * machtab_t, which is essentially a mutex-protected linked list of members
- * of the group. The machtab also contains the parameters that are needed
- * to call for an election. We hardwire values for these parameters in the
- * init function, but these could be set via some configuration setup in a
- * real application. We reserve the machine-id 1 to refer to ourselves and
- * make the machine-id 0 be invalid.
- */
-
-#define MACHID_INVALID 0
-#define MACHID_SELF 1
-
-struct __machtab {
- LIST_HEAD(__machlist, __member) machlist;
- int nextid;
- mutex_t mtmutex;
- u_int32_t timeout_time;
- int current;
- int max;
- int nsites;
- int priority;
-};
-
-/* Data structure that describes each entry in the machtab. */
-struct __member {
- u_int32_t hostaddr; /* Host IP address. */
- int port; /* Port number. */
- int eid; /* Application-specific machine id. */
- int fd; /* File descriptor for the socket. */
- LIST_ENTRY(__member) links;
- /* For linked list of all members we know of. */
-};
-
-static int quote_send_broadcast __P((machtab_t *,
- const DBT *, const DBT *, u_int32_t));
-static int quote_send_one __P((const DBT *, const DBT *, int, u_int32_t));
-
-/*
- * machtab_init --
- * Initialize the machine ID table.
- * XXX Right now we treat the number of sites as the maximum
- * number we've ever had on the list at one time. We probably
- * want to make that smarter.
- */
-int
-machtab_init(machtabp, pri, nsites)
- machtab_t **machtabp;
- int pri, nsites;
-{
- int ret;
- machtab_t *machtab;
-
- if ((machtab = malloc(sizeof(machtab_t))) == NULL)
- return (ENOMEM);
-
- LIST_INIT(&machtab->machlist);
-
- /* Reserve eid's 0 and 1. */
- machtab->nextid = 2;
- machtab->timeout_time = 2 * 1000000; /* 2 seconds. */
- machtab->current = machtab->max = 0;
- machtab->priority = pri;
- machtab->nsites = nsites;
-
- ret = mutex_init(&machtab->mtmutex, NULL);
- *machtabp = machtab;
-
- return (ret);
-}
-
-/*
- * machtab_add --
- * Add a file descriptor to the table of machines, returning
- * a new machine ID.
- */
-int
-machtab_add(machtab, fd, hostaddr, port, idp)
- machtab_t *machtab;
- int fd;
- u_int32_t hostaddr;
- int port, *idp;
-{
- int ret;
- member_t *m, *member;
-
- ret = 0;
- if ((member = malloc(sizeof(member_t))) == NULL)
- return (ENOMEM);
-
- member->fd = fd;
- member->hostaddr = hostaddr;
- member->port = port;
-
- if ((ret = mutex_lock(&machtab->mtmutex)) != 0)
- return (ret);
-
- for (m = LIST_FIRST(&machtab->machlist);
- m != NULL; m = LIST_NEXT(m, links))
- if (m->hostaddr == hostaddr && m->port == port)
- break;
-
- if (m == NULL) {
- member->eid = machtab->nextid++;
- LIST_INSERT_HEAD(&machtab->machlist, member, links);
- } else
- member->eid = m->eid;
-
- ret = mutex_unlock(&machtab->mtmutex);
-
- if (idp != NULL)
- *idp = member->eid;
-
- if (m == NULL) {
- if (++machtab->current > machtab->max)
- machtab->max = machtab->current;
- } else {
- free(member);
- ret = EEXIST;
- }
-#ifdef DIAGNOSTIC
- printf("Exiting machtab_add\n");
- machtab_print(machtab);
-#endif
- return (ret);
-}
-
-/*
- * machtab_getinfo --
- * Return host and port information for a particular machine id.
- */
-int
-machtab_getinfo(machtab, eid, hostp, portp)
- machtab_t *machtab;
- int eid;
- u_int32_t *hostp;
- int *portp;
-{
- int ret;
- member_t *member;
-
- if ((ret = mutex_lock(&machtab->mtmutex)) != 0)
- return (ret);
-
- for (member = LIST_FIRST(&machtab->machlist);
- member != NULL;
- member = LIST_NEXT(member, links))
- if (member->eid == eid) {
- *hostp = member->hostaddr;
- *portp = member->port;
- break;
- }
-
- if ((ret = mutex_unlock(&machtab->mtmutex)) != 0)
- return (ret);
-
- return (member != NULL ? 0 : EINVAL);
-}
-
-/*
- * machtab_rem --
- * Remove a mapping from the table of machines. Lock indicates
- * whether we need to lock the machtab or not (0 indicates we do not
- * need to lock; non-zero indicates that we do need to lock).
- */
-int
-machtab_rem(machtab, eid, lock)
- machtab_t *machtab;
- int eid;
- int lock;
-{
- int found, ret;
- member_t *member;
-
- ret = 0;
- if (lock && (ret = mutex_lock(&machtab->mtmutex)) != 0)
- return (ret);
-
- for (found = 0, member = LIST_FIRST(&machtab->machlist);
- member != NULL;
- member = LIST_NEXT(member, links))
- if (member->eid == eid) {
- found = 1;
- LIST_REMOVE(member, links);
- (void)closesocket(member->fd);
- free(member);
- machtab->current--;
- break;
- }
-
- if (LIST_FIRST(&machtab->machlist) == NULL)
- machtab->nextid = 2;
-
- if (lock)
- ret = mutex_unlock(&machtab->mtmutex);
-
-#ifdef DIAGNOSTIC
- printf("Exiting machtab_rem\n");
- machtab_print(machtab);
-#endif
- return (ret);
-}
-
-void
-machtab_parm(machtab, nump, prip, timeoutp)
- machtab_t *machtab;
- int *nump, *prip;
- u_int32_t *timeoutp;
-{
- if (machtab->nsites == 0)
- *nump = machtab->max;
- else
- *nump = machtab->nsites;
- *prip = machtab->priority;
- *timeoutp = machtab->timeout_time;
-}
-
-#ifdef DIAGNOSTIC
-void
-machtab_print(machtab)
- machtab_t *machtab;
-{
- member_t *m;
-
- (void)mutex_lock(&machtab->mtmutex);
-
- for (m = LIST_FIRST(&machtab->machlist);
- m != NULL; m = LIST_NEXT(m, links)) {
-
- printf("IP: %lx Port: %6d EID: %2d FD: %3d\n",
- (long)m->hostaddr, m->port, m->eid, m->fd);
- }
-
- (void)mutex_unlock(&machtab->mtmutex);
-
-}
-#endif
-/*
- * listen_socket_init --
- * Initialize a socket for listening on the specified port. Returns
- * a file descriptor for the socket, ready for an accept() call
- * in a thread that we're happy to let block.
- */
-int
-listen_socket_init(progname, port)
- const char *progname;
- int port;
-{
- int s, sockopt;
- struct protoent *proto;
- struct sockaddr_in si;
-
- if ((proto = getprotobyname("tcp")) == NULL)
- return (-1);
-
- if ((s = socket(AF_INET, SOCK_STREAM, proto->p_proto)) < 0)
- return (-1);
-
- memset(&si, 0, sizeof(si));
- si.sin_family = AF_INET;
- si.sin_addr.s_addr = htonl(INADDR_ANY);
- si.sin_port = htons((unsigned short)port);
-
- /*
- * When using this example for testing, it's common to kill and restart
- * regularly. On some systems, this causes bind to fail with "address
- * in use" errors unless this option is set.
- */
- sockopt = 1;
- setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &sockopt, sizeof (sockopt));
-
- if (bind(s, (struct sockaddr *)&si, sizeof(si)) != 0)
- goto err;
-
- if (listen(s, 5) != 0)
- goto err;
-
- return (s);
-
-err: fprintf(stderr, "%s: %s", progname, strerror(net_errno));
- closesocket(s);
- return (-1);
-}
-
-/*
- * listen_socket_accept --
- * Accept a connection on a socket. This is essentially just a wrapper
- * for accept(3).
- */
-int
-listen_socket_accept(machtab, progname, s, eidp)
- machtab_t *machtab;
- const char *progname;
- int s, *eidp;
-{
- struct sockaddr_in si;
- int si_len;
- int host, ns, ret;
- u_int16_t port;
-
- COMPQUIET(progname, NULL);
-
-wait: memset(&si, 0, sizeof(si));
- si_len = sizeof(si);
- ns = accept(s, (struct sockaddr *)&si, &si_len);
- host = ntohl(si.sin_addr.s_addr);
-
- /*
- * Sites send their listening port when connections are first
- * established, as it will be different from the outgoing port
- * for this connection.
- */
- if (readn(ns, &port, 2) != 2)
- goto err;
- port = ntohs(port);
-
- ret = machtab_add(machtab, ns, host, port, eidp);
- if (ret == EEXIST) {
- closesocket(ns);
- goto wait;
- } else if (ret != 0)
- goto err;
-printf("Connected to host %x port %d, eid = %d\n", host, port, *eidp);
- return (ns);
-
-err: closesocket(ns);
- return (-1);
-}
-
-/*
- * get_accepted_socket --
- * Listen on the specified port, and return a file descriptor
- * when we have accepted a connection on it.
- */
-int
-get_accepted_socket(progname, port)
- const char *progname;
- int port;
-{
- struct protoent *proto;
- struct sockaddr_in si;
- int si_len;
- int s, ns;
-
- if ((proto = getprotobyname("tcp")) == NULL)
- return (-1);
-
- if ((s = socket(AF_INET, SOCK_STREAM, proto->p_proto)) < 0)
- return (-1);
-
- memset(&si, 0, sizeof(si));
- si.sin_family = AF_INET;
- si.sin_addr.s_addr = htonl(INADDR_ANY);
- si.sin_port = htons((unsigned short)port);
-
- if (bind(s, (struct sockaddr *)&si, sizeof(si)) != 0)
- goto err;
-
- if (listen(s, 5) != 0)
- goto err;
-
- memset(&si, 0, sizeof(si));
- si_len = sizeof(si);
- ns = accept(s, (struct sockaddr *)&si, &si_len);
-
- return (ns);
-
-err: fprintf(stderr, "%s: %s", progname, strerror(net_errno));
- closesocket(s);
- return (-1);
-}
-
-/*
- * get_connected_socket --
- * Connect to the specified port of the specified remote machine,
- * and return a file descriptor when we have accepted a connection on it.
- * Add this connection to the machtab. If we already have a connection
- * open to this machine, then don't create another one, return the eid
- * of the connection (in *eidp) and set is_open to 1. Return 0.
- */
-int
-get_connected_socket(machtab, progname, remotehost, port, is_open, eidp)
- machtab_t *machtab;
- const char *progname, *remotehost;
- int port, *is_open, *eidp;
-{
- int ret, s;
- struct hostent *hp;
- struct protoent *proto;
- struct sockaddr_in si;
- u_int32_t addr;
- u_int16_t nport;
-
- *is_open = 0;
-
- if ((proto = getprotobyname("tcp")) == NULL)
- return (-1);
-
- if ((hp = gethostbyname(remotehost)) == NULL) {
- fprintf(stderr, "%s: host not found: %s\n", progname,
- strerror(net_errno));
- return (-1);
- }
-
- if ((s = socket(AF_INET, SOCK_STREAM, proto->p_proto)) < 0)
- return (-1);
- memset(&si, 0, sizeof(si));
- memcpy((char *)&si.sin_addr, hp->h_addr, hp->h_length);
- addr = ntohl(si.sin_addr.s_addr);
- ret = machtab_add(machtab, s, addr, port, eidp);
- if (ret == EEXIST) {
- *is_open = 1;
- closesocket(s);
- return (0);
- } else if (ret != 0) {
- closesocket(s);
- return (-1);
- }
-
- si.sin_family = AF_INET;
- si.sin_port = htons((unsigned short)port);
- if (connect(s, (struct sockaddr *)&si, sizeof(si)) < 0) {
- fprintf(stderr, "%s: connection failed: %s",
- progname, strerror(net_errno));
- (void)machtab_rem(machtab, *eidp, 1);
- return (-1);
- }
-
- /*
- * The first thing we send on the socket is our (listening) port
- * so the site we are connecting to can register us correctly in
- * its machtab.
- */
- nport = htons(myport);
- writesocket(s, &nport, 2);
-
- return (s);
-}
-
-/*
- * get_next_message --
- * Read a single message from the specified file descriptor, and
- * return it in the format used by rep functions (two DBTs and a type).
- *
- * This function is called in a loop by both clients and masters, and
- * the resulting DBTs are manually dispatched to DB_ENV->rep_process_message().
- */
-int
-get_next_message(fd, rec, control)
- int fd;
- DBT *rec, *control;
-{
- size_t nr;
- u_int32_t rsize, csize;
- u_int8_t *recbuf, *controlbuf;
-
- /*
- * The protocol we use on the wire is dead simple:
- *
- * 4 bytes - rec->size
- * (# read above) - rec->data
- * 4 bytes - control->size
- * (# read above) - control->data
- */
-
- /* Read rec->size. */
- nr = readn(fd, &rsize, 4);
- if (nr != 4)
- return (1);
-
- /* Read the record itself. */
- if (rsize > 0) {
- if (rec->size < rsize)
- rec->data = realloc(rec->data, rsize);
- recbuf = rec->data;
- nr = readn(fd, recbuf, rsize);
- } else {
- if (rec->data != NULL)
- free(rec->data);
- rec->data = NULL;
- }
- rec->size = rsize;
-
- /* Read control->size. */
- nr = readn(fd, &csize, 4);
- if (nr != 4)
- return (1);
-
- /* Read the control struct itself. */
- if (csize > 0) {
- controlbuf = control->data;
- if (control->size < csize)
- controlbuf = realloc(controlbuf, csize);
- nr = readn(fd, controlbuf, csize);
- if (nr != csize)
- return (1);
- } else {
- if (control->data != NULL)
- free(control->data);
- controlbuf = NULL;
- }
- control->data = controlbuf;
- control->size = csize;
-
- return (0);
-}
-
-/*
- * readn --
- * Read a full n characters from a file descriptor, unless we get an error
- * or EOF.
- */
-ssize_t
-readn(fd, vptr, n)
- int fd;
- void *vptr;
- size_t n;
-{
- size_t nleft;
- ssize_t nread;
- char *ptr;
-
- ptr = vptr;
- nleft = n;
- while (nleft > 0) {
- if ((nread = readsocket(fd, ptr, nleft)) < 0) {
- /*
- * Call read() again on interrupted system call;
- * on other errors, bail.
- */
- if (net_errno == EINTR)
- nread = 0;
- else
- return (-1);
- } else if (nread == 0)
- break; /* EOF */
-
- nleft -= nread;
- ptr += nread;
- }
-
- return (n - nleft);
-}
-
-/*
- * quote_send --
- * The f_send function for DB_ENV->set_rep_transport.
- */
-int
-quote_send(dbenv, control, rec, lsnp, eid, flags)
- DB_ENV *dbenv;
- const DBT *control, *rec;
- const DB_LSN *lsnp;
- int eid;
- u_int32_t flags;
-{
- int fd, n, ret, t_ret;
- machtab_t *machtab;
- member_t *m;
-
- COMPQUIET(lsnp, NULL);
- machtab = (machtab_t *)dbenv->app_private;
-
- if (eid == DB_EID_BROADCAST) {
- /*
- * Right now, we do not require successful transmission.
- * I'd like to move this requiring at least one successful
- * transmission on PERMANENT requests.
- */
- n = quote_send_broadcast(machtab, rec, control, flags);
- if (n < 0 /*|| (n == 0 && LF_ISSET(DB_REP_PERMANENT))*/)
- return (DB_REP_UNAVAIL);
- return (0);
- }
-
- if ((ret = mutex_lock(&machtab->mtmutex)) != 0)
- return (ret);
-
- fd = 0;
- for (m = LIST_FIRST(&machtab->machlist); m != NULL;
- m = LIST_NEXT(m, links)) {
- if (m->eid == eid) {
- fd = m->fd;
- break;
- }
- }
-
- if (fd == 0) {
- dbenv->err(dbenv, DB_REP_UNAVAIL,
- "quote_send: cannot find machine ID %d", eid);
- return (DB_REP_UNAVAIL);
- }
-
- ret = quote_send_one(rec, control, fd, flags);
-
- if ((t_ret = mutex_unlock(&machtab->mtmutex)) != 0 && ret == 0)
- ret = t_ret;
-
- return (ret);
-}
-
-/*
- * quote_send_broadcast --
- * Send a message to everybody.
- * Returns the number of sites to which this message was successfully
- * communicated. A -1 indicates a fatal error.
- */
-static int
-quote_send_broadcast(machtab, rec, control, flags)
- machtab_t *machtab;
- const DBT *rec, *control;
- u_int32_t flags;
-{
- int ret, sent;
- member_t *m, *next;
-
- if ((ret = mutex_lock(&machtab->mtmutex)) != 0)
- return (0);
-
- sent = 0;
- for (m = LIST_FIRST(&machtab->machlist); m != NULL; m = next) {
- next = LIST_NEXT(m, links);
- if ((ret = quote_send_one(rec, control, m->fd, flags)) != 0) {
- (void)machtab_rem(machtab, m->eid, 0);
- } else
- sent++;
- }
-
- if (mutex_unlock(&machtab->mtmutex) != 0)
- return (-1);
-
- return (sent);
-}
-
-/*
- * quote_send_one --
- * Send a message to a single machine, given that machine's file
- * descriptor.
- *
- * !!!
- * Note that the machtab mutex should be held through this call.
- * It doubles as a synchronizer to make sure that two threads don't
- * intersperse writes that are part of two single messages.
- */
-static int
-quote_send_one(rec, control, fd, flags)
- const DBT *rec, *control;
- int fd;
- u_int32_t flags;
-
-{
- int retry;
- ssize_t bytes_left, nw;
- u_int8_t *wp;
-
- COMPQUIET(flags, 0);
-
- /*
- * The protocol is simply: write rec->size, write rec->data,
- * write control->size, write control->data.
- */
- nw = writesocket(fd, (const char *)&rec->size, 4);
- if (nw != 4)
- return (DB_REP_UNAVAIL);
-
- if (rec->size > 0) {
- nw = writesocket(fd, rec->data, rec->size);
- if (nw < 0)
- return (DB_REP_UNAVAIL);
- if (nw != (ssize_t)rec->size) {
- /* Try a couple of times to finish the write. */
- wp = (u_int8_t *)rec->data + nw;
- bytes_left = rec->size - nw;
- for (retry = 0; bytes_left > 0 && retry < 3; retry++) {
- nw = writesocket(fd, wp, bytes_left);
- if (nw < 0)
- return (DB_REP_UNAVAIL);
- bytes_left -= nw;
- wp += nw;
- }
- if (bytes_left > 0)
- return (DB_REP_UNAVAIL);
- }
- }
-
- nw = writesocket(fd, (const char *)&control->size, 4);
- if (nw != 4)
- return (DB_REP_UNAVAIL);
- if (control->size > 0) {
- nw = writesocket(fd, control->data, control->size);
- if (nw != (ssize_t)control->size)
- return (DB_REP_UNAVAIL);
- }
- return (0);
-}
diff --git a/db/examples_c/ex_repquote/ex_rq_util.c b/db/examples_c/ex_repquote/ex_rq_util.c
deleted file mode 100644
index 8f922d4dd..000000000
--- a/db/examples_c/ex_repquote/ex_rq_util.c
+++ /dev/null
@@ -1,438 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2001-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: ex_rq_util.c,v 1.38 2004/07/16 14:57:38 bostic Exp $
- */
-
-#include <sys/types.h>
-#include <errno.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <db.h>
-
-#include "ex_repquote.h"
-
-static int connect_site __P((DB_ENV *, machtab_t *,
- const char *, repsite_t *, int *, int *, thread *));
-static void *elect_thread __P((void *));
-static void *hm_loop __P((void *));
-
-typedef struct {
- DB_ENV *dbenv;
- machtab_t *machtab;
-} elect_args;
-
-typedef struct {
- DB_ENV *dbenv;
- const char *progname;
- const char *home;
- int fd;
- u_int32_t eid;
- machtab_t *tab;
-} hm_loop_args;
-
-/*
- * This is a generic message handling loop that is used both by the
- * master to accept messages from a client as well as by clients
- * to communicate with other clients.
- */
-static void *
-hm_loop(args)
- void *args;
-{
- DB_ENV *dbenv;
- DB_LSN permlsn;
- DBT rec, control;
- const char *c, *home, *progname;
- int fd, eid, n, nsites, newm, nsites_allocd;
- int open, pri, r, ret, t_ret, tmpid;
- elect_args *ea;
- hm_loop_args *ha;
- machtab_t *tab;
- thread elect_thr, *site_thrs, *tmp;
- repsite_t self;
- u_int32_t timeout;
- void *status;
-
- ea = NULL;
- site_thrs = NULL;
- nsites_allocd = 0;
- nsites = 0;
-
- ha = (hm_loop_args *)args;
- dbenv = ha->dbenv;
- fd = ha->fd;
- home = ha->home;
- eid = ha->eid;
- progname = ha->progname;
- tab = ha->tab;
- free(ha);
-
- memset(&rec, 0, sizeof(DBT));
- memset(&control, 0, sizeof(DBT));
-
- for (ret = 0; ret == 0;) {
- if ((ret = get_next_message(fd, &rec, &control)) != 0) {
- /*
- * Close this connection; if it's the master call
- * for an election.
- */
- closesocket(fd);
- if ((ret = machtab_rem(tab, eid, 1)) != 0)
- break;
-
- /*
- * If I'm the master, I just lost a client and this
- * thread is done.
- */
- if (master_eid == SELF_EID)
- break;
-
- /*
- * If I was talking with the master and the master
- * went away, I need to call an election; else I'm
- * done.
- */
- if (master_eid != eid)
- break;
-
- master_eid = DB_EID_INVALID;
- machtab_parm(tab, &n, &pri, &timeout);
- if ((ret = dbenv->rep_elect(dbenv,
- n, (n/2+1), pri, timeout, &newm, 0)) != 0)
- continue;
-
- /*
- * Regardless of the results, the site I was talking
- * to is gone, so I have nothing to do but exit.
- */
- if (newm == SELF_EID && (ret =
- dbenv->rep_start(dbenv, NULL, DB_REP_MASTER)) == 0)
- ret = domaster(dbenv, progname);
- break;
- }
-
- tmpid = eid;
- switch (r = dbenv->rep_process_message(dbenv,
- &control, &rec, &tmpid, &permlsn)) {
- case DB_REP_NEWSITE:
- /*
- * Check if we got sent connect information and if we
- * did, if this is me or if we already have a
- * connection to this new site. If we don't,
- * establish a new one.
- */
-
- /* No connect info. */
- if (rec.size == 0)
- break;
-
- /* It's me, do nothing. */
- if (strncmp(myaddr, rec.data, rec.size) == 0)
- break;
-
- self.host = (char *)rec.data;
- self.host = strtok(self.host, ":");
- if ((c = strtok(NULL, ":")) == NULL) {
- dbenv->errx(dbenv, "Bad host specification");
- goto out;
- }
- self.port = atoi(c);
-
- /*
- * We try to connect to the new site. If we can't,
- * we treat it as an error since we know that the site
- * should be up if we got a message from it (even
- * indirectly).
- */
- if (nsites == nsites_allocd) {
- /* Need to allocate more space. */
- if ((tmp = realloc(site_thrs,
- (10 + nsites) * sizeof(thread))) == NULL) {
- ret = errno;
- goto out;
- }
- site_thrs = tmp;
- nsites_allocd += 10;
- }
- if ((ret = connect_site(dbenv, tab, progname,
- &self, &open, &tmpid, &site_thrs[nsites++])) != 0)
- goto out;
- break;
- case DB_REP_HOLDELECTION:
- if (master_eid == SELF_EID)
- break;
- /* Make sure that previous election has finished. */
- if (ea != NULL) {
- (void)thread_join(elect_thr, &status);
- ea = NULL;
- }
- if ((ea = calloc(sizeof(elect_args), 1)) == NULL) {
- ret = errno;
- goto out;
- }
- ea->dbenv = dbenv;
- ea->machtab = tab;
- ret = thread_create(&elect_thr,
- NULL, elect_thread, (void *)ea);
- break;
- case DB_REP_NEWMASTER:
- /* Check if it's us. */
- master_eid = tmpid;
- if (tmpid == SELF_EID) {
- if ((ret = dbenv->rep_start(dbenv,
- NULL, DB_REP_MASTER)) != 0)
- goto out;
- ret = domaster(dbenv, progname);
- }
- break;
- case DB_REP_ISPERM:
- /* FALLTHROUGH */
- case 0:
- break;
- default:
- dbenv->err(dbenv, r, "DB_ENV->rep_process_message");
- break;
- }
- }
-
-out: if ((t_ret = machtab_rem(tab, eid, 1)) != 0 && ret == 0)
- ret = t_ret;
-
- /* Don't close the environment before any children exit. */
- if (ea != NULL)
- (void)thread_join(elect_thr, &status);
-
- if (site_thrs != NULL)
- while (--nsites >= 0)
- (void)thread_join(site_thrs[nsites], &status);
-
- return ((void *)ret);
-}
-
-/*
- * This is a generic thread that spawns a thread to listen for connections
- * on a socket and then spawns off child threads to handle each new
- * connection.
- */
-void *
-connect_thread(args)
- void *args;
-{
- DB_ENV *dbenv;
- const char *home, *progname;
- hm_loop_args *ha;
- connect_args *cargs;
- machtab_t *machtab;
- thread hm_thrs[MAX_THREADS];
- void *status;
- int fd, i, eid, ns, port, ret;
-
- ha = NULL;
- cargs = (connect_args *)args;
- dbenv = cargs->dbenv;
- home = cargs->home;
- progname = cargs->progname;
- machtab = cargs->machtab;
- port = cargs->port;
-
- /*
- * Loop forever, accepting connections from new machines,
- * and forking off a thread to handle each.
- */
- if ((fd = listen_socket_init(progname, port)) < 0) {
- ret = errno;
- goto err;
- }
-
- for (i = 0; i < MAX_THREADS; i++) {
- if ((ns = listen_socket_accept(machtab,
- progname, fd, &eid)) < 0) {
- ret = errno;
- goto err;
- }
- if ((ha = calloc(sizeof(hm_loop_args), 1)) == NULL) {
- ret = errno;
- goto err;
- }
- ha->progname = progname;
- ha->home = home;
- ha->fd = ns;
- ha->eid = eid;
- ha->tab = machtab;
- ha->dbenv = dbenv;
- if ((ret = thread_create(&hm_thrs[i++], NULL,
- hm_loop, (void *)ha)) != 0)
- goto err;
- ha = NULL;
- }
-
- /* If we fell out, we ended up with too many threads. */
- dbenv->errx(dbenv, "Too many threads");
- ret = ENOMEM;
-
- /* Do not return until all threads have exited. */
- while (--i >= 0)
- (void)thread_join(hm_thrs[i], &status);
-
-err: return (ret == 0 ? (void *)EXIT_SUCCESS : (void *)EXIT_FAILURE);
-}
-
-/*
- * Open a connection to everyone that we've been told about. If we
- * cannot open some connections, keep trying.
- */
-void *
-connect_all(args)
- void *args;
-{
- DB_ENV *dbenv;
- all_args *aa;
- const char *home, *progname;
- hm_loop_args *ha;
- int failed, i, eid, nsites, open, ret, *success;
- machtab_t *machtab;
- thread *hm_thr;
- repsite_t *sites;
-
- ha = NULL;
- aa = (all_args *)args;
- dbenv = aa->dbenv;
- progname = aa->progname;
- home = aa->home;
- machtab = aa->machtab;
- nsites = aa->nsites;
- sites = aa->sites;
-
- ret = 0;
- hm_thr = NULL;
- success = NULL;
-
- /* Some implementations of calloc are sad about allocating 0 things. */
- if ((success = calloc(nsites > 0 ? nsites : 1, sizeof(int))) == NULL) {
- dbenv->err(dbenv, errno, "connect_all");
- ret = 1;
- goto err;
- }
-
- if (nsites > 0 && (hm_thr = calloc(nsites, sizeof(int))) == NULL) {
- dbenv->err(dbenv, errno, "connect_all");
- ret = 1;
- goto err;
- }
-
- for (failed = nsites; failed > 0;) {
- for (i = 0; i < nsites; i++) {
- if (success[i])
- continue;
-
- ret = connect_site(dbenv, machtab,
- progname, &sites[i], &open, &eid, &hm_thr[i]);
-
- /*
- * If we couldn't make the connection, this isn't
- * fatal to the loop, but we have nothing further
- * to do on this machine at the moment.
- */
- if (ret == DB_REP_UNAVAIL)
- continue;
-
- if (ret != 0)
- goto err;
-
- failed--;
- success[i] = 1;
-
- /* If the connection is already open, we're done. */
- if (ret == 0 && open == 1)
- continue;
-
- }
- sleep(1);
- }
-
-err: if (success != NULL)
- free(success);
- if (hm_thr != NULL)
- free(hm_thr);
- return (ret ? (void *)EXIT_FAILURE : (void *)EXIT_SUCCESS);
-}
-
-static int
-connect_site(dbenv, machtab, progname, site, is_open, eidp, hm_thrp)
- DB_ENV *dbenv;
- machtab_t *machtab;
- const char *progname;
- repsite_t *site;
- int *is_open, *eidp;
- thread *hm_thrp;
-{
- int ret, s;
- hm_loop_args *ha;
-
- if ((s = get_connected_socket(machtab, progname,
- site->host, site->port, is_open, eidp)) < 0)
- return (DB_REP_UNAVAIL);
-
- if (*is_open)
- return (0);
-
- if ((ha = calloc(sizeof(hm_loop_args), 1)) == NULL) {
- ret = errno;
- goto err;
- }
-
- ha->progname = progname;
- ha->fd = s;
- ha->eid = *eidp;
- ha->tab = machtab;
- ha->dbenv = dbenv;
-
- if ((ret = thread_create(hm_thrp, NULL,
- hm_loop, (void *)ha)) != 0) {
- dbenv->err(dbenv, ret, "connect site");
- goto err1;
- }
-
- return (0);
-
-err1: free(ha);
-err:
- return (ret);
-}
-
-/*
- * We need to spawn off a new thread in which to hold an election in
- * case we are the only thread listening on for messages.
- */
-static void *
-elect_thread(args)
- void *args;
-{
- DB_ENV *dbenv;
- elect_args *eargs;
- int n, ret, pri;
- machtab_t *machtab;
- u_int32_t timeout;
-
- eargs = (elect_args *)args;
- dbenv = eargs->dbenv;
- machtab = eargs->machtab;
- free(eargs);
-
- machtab_parm(machtab, &n, &pri, &timeout);
- while ((ret = dbenv->rep_elect(dbenv, n, (n/2+1), pri, timeout,
- &master_eid, 0)) != 0)
- sleep(2);
-
- /* Check if it's us. */
- if (master_eid == SELF_EID)
- ret = dbenv->rep_start(dbenv, NULL, DB_REP_MASTER);
-
- return ((void *)(ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE));
-}
diff --git a/db/examples_c/ex_sequence.c b/db/examples_c/ex_sequence.c
index d797a299d..5c1cc6c7d 100644
--- a/db/examples_c/ex_sequence.c
+++ b/db/examples_c/ex_sequence.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: ex_sequence.c,v 12.5 2006/08/24 14:45:42 bostic Exp $
+ * $Id: ex_sequence.c,v 12.7 2007/05/17 15:15:12 bostic Exp $
*/
#include <sys/types.h>
diff --git a/db/examples_c/ex_thread.c b/db/examples_c/ex_thread.c
index e1ce36097..d2a626a62 100644
--- a/db/examples_c/ex_thread.c
+++ b/db/examples_c/ex_thread.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: ex_thread.c,v 12.4 2006/08/24 14:45:42 bostic Exp $
+ * $Id: ex_thread.c,v 12.7 2007/06/13 12:31:31 bostic Exp $
*/
#include <sys/types.h>
@@ -442,10 +441,8 @@ db_init(home)
"%s: db_env_create: %s\n", progname, db_strerror(ret));
return (EXIT_FAILURE);
}
- if (punish) {
+ if (punish)
(void)dbenv->set_flags(dbenv, DB_YIELDCPU, 1);
- (void)db_env_set_func_yield(sched_yield);
- }
dbenv->set_errfile(dbenv, stderr);
dbenv->set_errpfx(dbenv, progname);
diff --git a/db/examples_c/ex_tpcb.c b/db/examples_c/ex_tpcb.c
index e60cbeda0..d11c22682 100644
--- a/db/examples_c/ex_tpcb.c
+++ b/db/examples_c/ex_tpcb.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: ex_tpcb.c,v 12.5 2006/08/24 14:45:42 bostic Exp $
+ * $Id: ex_tpcb.c,v 12.8 2007/05/17 15:15:12 bostic Exp $
*/
#include <sys/types.h>
@@ -636,26 +635,26 @@ tp_txn(dbenv, adb, bdb, tdb, hdb, accounts, branches, tellers, verbose)
/* Account record */
k_dbt.data = &account;
- if (acurs->c_get(acurs, &k_dbt, &d_dbt, DB_SET) != 0)
+ if (acurs->get(acurs, &k_dbt, &d_dbt, DB_SET) != 0)
goto err;
rec.balance += 10;
- if (acurs->c_put(acurs, &k_dbt, &d_dbt, DB_CURRENT) != 0)
+ if (acurs->put(acurs, &k_dbt, &d_dbt, DB_CURRENT) != 0)
goto err;
/* Branch record */
k_dbt.data = &branch;
- if (bcurs->c_get(bcurs, &k_dbt, &d_dbt, DB_SET) != 0)
+ if (bcurs->get(bcurs, &k_dbt, &d_dbt, DB_SET) != 0)
goto err;
rec.balance += 10;
- if (bcurs->c_put(bcurs, &k_dbt, &d_dbt, DB_CURRENT) != 0)
+ if (bcurs->put(bcurs, &k_dbt, &d_dbt, DB_CURRENT) != 0)
goto err;
/* Teller record */
k_dbt.data = &teller;
- if (tcurs->c_get(tcurs, &k_dbt, &d_dbt, DB_SET) != 0)
+ if (tcurs->get(tcurs, &k_dbt, &d_dbt, DB_SET) != 0)
goto err;
rec.balance += 10;
- if (tcurs->c_put(tcurs, &k_dbt, &d_dbt, DB_CURRENT) != 0)
+ if (tcurs->put(tcurs, &k_dbt, &d_dbt, DB_CURRENT) != 0)
goto err;
/* History record */
@@ -665,8 +664,8 @@ tp_txn(dbenv, adb, bdb, tdb, hdb, accounts, branches, tellers, verbose)
if (hdb->put(hdb, t, &k_histdbt, &d_histdbt, DB_APPEND) != 0)
goto err;
- if (acurs->c_close(acurs) != 0 || bcurs->c_close(bcurs) != 0 ||
- tcurs->c_close(tcurs) != 0)
+ if (acurs->close(acurs) != 0 || bcurs->close(bcurs) != 0 ||
+ tcurs->close(tcurs) != 0)
goto err;
ret = t->commit(t, 0);
@@ -678,11 +677,11 @@ tp_txn(dbenv, adb, bdb, tdb, hdb, accounts, branches, tellers, verbose)
return (0);
err: if (acurs != NULL)
- (void)acurs->c_close(acurs);
+ (void)acurs->close(acurs);
if (bcurs != NULL)
- (void)bcurs->c_close(bcurs);
+ (void)bcurs->close(bcurs);
if (tcurs != NULL)
- (void)tcurs->c_close(tcurs);
+ (void)tcurs->close(tcurs);
if (t != NULL)
(void)t->abort(t);
diff --git a/db/examples_c/ex_tpcb.h b/db/examples_c/ex_tpcb.h
deleted file mode 100644
index c4868ae60..000000000
--- a/db/examples_c/ex_tpcb.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1996-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: ex_tpcb.h,v 11.8 2004/01/28 03:36:03 bostic Exp $
- */
-
-#ifndef _TPCB_H_
-#define _TPCB_H_
-
-typedef enum { ACCOUNT, BRANCH, TELLER } FTYPE;
-
-#define TELLERS_PER_BRANCH 100
-#define ACCOUNTS_PER_TELLER 1000
-
-#define ACCOUNTS 1000000
-#define BRANCHES 10
-#define TELLERS 1000
-#define HISTORY 1000000
-#define HISTORY_LEN 100
-#define RECLEN 100
-#define BEGID 1000000
-
-typedef struct _defrec {
- u_int32_t id;
- u_int32_t balance;
- u_int8_t pad[RECLEN - sizeof(u_int32_t) - sizeof(u_int32_t)];
-} defrec;
-
-typedef struct _histrec {
- u_int32_t aid;
- u_int32_t bid;
- u_int32_t tid;
- u_int32_t amount;
- u_int8_t pad[RECLEN - 4 * sizeof(u_int32_t)];
-} histrec;
-#endif /* _TPCB_H_ */
diff --git a/db/examples_c/getting_started/example_database_load.c b/db/examples_c/getting_started/example_database_load.c
index aacef8c2b..0cf13bc31 100644
--- a/db/examples_c/getting_started/example_database_load.c
+++ b/db/examples_c/getting_started/example_database_load.c
@@ -1,8 +1,7 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2004-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2004,2007 Oracle. All rights reserved.
*/
#include "gettingstarted_common.h"
diff --git a/db/examples_c/getting_started/example_database_read.c b/db/examples_c/getting_started/example_database_read.c
index 72824a23b..090004fdf 100644
--- a/db/examples_c/getting_started/example_database_read.c
+++ b/db/examples_c/getting_started/example_database_read.c
@@ -1,8 +1,7 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2004-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2004,2007 Oracle. All rights reserved.
*/
#include "gettingstarted_common.h"
@@ -104,7 +103,7 @@ int show_all_records(STOCK_DBS *my_stock)
*/
exit_value = 0;
while ((ret =
- inventory_cursorp->c_get(inventory_cursorp, &key, &data, DB_NEXT)) == 0)
+ inventory_cursorp->get(inventory_cursorp, &key, &data, DB_NEXT)) == 0)
{
the_vendor = show_inventory_item(data.data);
ret = show_vendor_record(the_vendor, my_stock->vendor_dbp);
@@ -115,7 +114,7 @@ int show_all_records(STOCK_DBS *my_stock)
}
/* Close the cursor */
- inventory_cursorp->c_close(inventory_cursorp);
+ inventory_cursorp->close(inventory_cursorp);
return (exit_value);
}
@@ -152,7 +151,7 @@ show_records(STOCK_DBS *my_stock, char *itemname)
* database that has the appropriate key.
*/
exit_value = 0;
- ret = itemname_cursorp->c_get(itemname_cursorp, &key, &data, DB_SET);
+ ret = itemname_cursorp->get(itemname_cursorp, &key, &data, DB_SET);
if (!ret) {
do {
/*
@@ -170,14 +169,14 @@ show_records(STOCK_DBS *my_stock, char *itemname)
* the next duplicate records and show them all. This is done
* because an inventory item's name is not a unique value.
*/
- } while (itemname_cursorp->c_get(itemname_cursorp, &key, &data,
+ } while (itemname_cursorp->get(itemname_cursorp, &key, &data,
DB_NEXT_DUP) == 0);
} else {
printf("No records found for '%s'\n", itemname);
}
/* Close the cursor */
- itemname_cursorp->c_close(itemname_cursorp);
+ itemname_cursorp->close(itemname_cursorp);
return (exit_value);
}
diff --git a/db/examples_c/getting_started/gettingstarted_common.c b/db/examples_c/getting_started/gettingstarted_common.c
index 910b2b61e..314842217 100644
--- a/db/examples_c/getting_started/gettingstarted_common.c
+++ b/db/examples_c/getting_started/gettingstarted_common.c
@@ -1,8 +1,7 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2004-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2004,2007 Oracle. All rights reserved.
*/
#include "gettingstarted_common.h"
diff --git a/db/examples_c/getting_started/gettingstarted_common.h b/db/examples_c/getting_started/gettingstarted_common.h
index 65c6e44dc..823dfcf75 100644
--- a/db/examples_c/getting_started/gettingstarted_common.h
+++ b/db/examples_c/getting_started/gettingstarted_common.h
@@ -1,8 +1,7 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2004-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2004,2007 Oracle. All rights reserved.
*/
#include <db.h>
diff --git a/db/examples_c/txn_guide/txn_guide.c b/db/examples_c/txn_guide/txn_guide.c
index 48f8aafeb..1585a7723 100644
--- a/db/examples_c/txn_guide/txn_guide.c
+++ b/db/examples_c/txn_guide/txn_guide.c
@@ -385,7 +385,7 @@ count_records(DB *dbp, DB_TXN *txn)
memset(&key, 0, sizeof(DBT));
memset(&value, 0, sizeof(DBT));
do {
- ret = cursorp->c_get(cursorp, &key, &value, DB_NEXT);
+ ret = cursorp->get(cursorp, &key, &value, DB_NEXT);
switch (ret) {
case 0:
count++;
@@ -401,7 +401,7 @@ count_records(DB *dbp, DB_TXN *txn)
cursor_err:
if (cursorp != NULL) {
- ret = cursorp->c_close(cursorp);
+ ret = cursorp->close(cursorp);
if (ret != 0) {
dbp->err(dbp, ret,
"count_records: cursor close failed.");
diff --git a/db/examples_c/txn_guide/txn_guide_inmemory.c b/db/examples_c/txn_guide/txn_guide_inmemory.c
index 7b3cca1c6..6b5aaaf35 100644
--- a/db/examples_c/txn_guide/txn_guide_inmemory.c
+++ b/db/examples_c/txn_guide/txn_guide_inmemory.c
@@ -374,7 +374,7 @@ count_records(DB *dbp, DB_TXN *txn)
memset(&key, 0, sizeof(DBT));
memset(&value, 0, sizeof(DBT));
do {
- ret = cursorp->c_get(cursorp, &key, &value, DB_NEXT);
+ ret = cursorp->get(cursorp, &key, &value, DB_NEXT);
switch (ret) {
case 0:
count++;
@@ -390,7 +390,7 @@ count_records(DB *dbp, DB_TXN *txn)
cursor_err:
if (cursorp != NULL) {
- ret = cursorp->c_close(cursorp);
+ ret = cursorp->close(cursorp);
if (ret != 0) {
dbp->err(dbp, ret,
"count_records: cursor close failed.");
diff --git a/db/examples_cxx/AccessExample.cpp b/db/examples_cxx/AccessExample.cpp
index 6e578f05b..514796b3e 100644
--- a/db/examples_cxx/AccessExample.cpp
+++ b/db/examples_cxx/AccessExample.cpp
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: AccessExample.cpp,v 12.3 2006/08/24 14:45:48 bostic Exp $
+ * $Id: AccessExample.cpp,v 12.5 2007/05/17 15:15:31 bostic Exp $
*/
#include <sys/types.h>
diff --git a/db/examples_cxx/BtRecExample.cpp b/db/examples_cxx/BtRecExample.cpp
index b2808c3e3..8f3e743a2 100644
--- a/db/examples_cxx/BtRecExample.cpp
+++ b/db/examples_cxx/BtRecExample.cpp
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: BtRecExample.cpp,v 12.3 2006/08/24 14:45:49 bostic Exp $
+ * $Id: BtRecExample.cpp,v 12.5 2007/05/17 15:15:31 bostic Exp $
*/
#include <sys/types.h>
diff --git a/db/examples_cxx/EnvExample.cpp b/db/examples_cxx/EnvExample.cpp
index 8de964d49..57b1556a3 100644
--- a/db/examples_cxx/EnvExample.cpp
+++ b/db/examples_cxx/EnvExample.cpp
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: EnvExample.cpp,v 12.3 2006/08/24 14:45:49 bostic Exp $
+ * $Id: EnvExample.cpp,v 12.5 2007/05/17 15:15:31 bostic Exp $
*/
#include <sys/types.h>
diff --git a/db/examples_cxx/LockExample.cpp b/db/examples_cxx/LockExample.cpp
index 5fbc4747a..f54224174 100644
--- a/db/examples_cxx/LockExample.cpp
+++ b/db/examples_cxx/LockExample.cpp
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: LockExample.cpp,v 12.3 2006/08/24 14:45:49 bostic Exp $
+ * $Id: LockExample.cpp,v 12.5 2007/05/17 15:15:31 bostic Exp $
*/
#include <sys/types.h>
diff --git a/db/examples_cxx/MpoolExample.cpp b/db/examples_cxx/MpoolExample.cpp
index 8d2d43be6..16e4a15f0 100644
--- a/db/examples_cxx/MpoolExample.cpp
+++ b/db/examples_cxx/MpoolExample.cpp
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: MpoolExample.cpp,v 12.4 2006/08/24 14:45:49 bostic Exp $
+ * $Id: MpoolExample.cpp,v 12.7 2007/05/17 15:15:31 bostic Exp $
*/
#include <sys/types.h>
@@ -199,7 +198,7 @@ MpoolExample::run(int hits, int pagesize, int npages)
<< *(int *)p << ")\n";
return (EXIT_FAILURE);
}
- if ((ret = mfp->put(p, 0)) != 0) {
+ if ((ret = mfp->put(p, DB_PRIORITY_UNCHANGED, 0)) != 0) {
cerr << "MpoolExample: unable to return page "
<< (unsigned long)pageno << ": "
<< strerror(ret) << "\n";
diff --git a/db/examples_cxx/SequenceExample.cpp b/db/examples_cxx/SequenceExample.cpp
index 7b8830f4e..551d529a6 100644
--- a/db/examples_cxx/SequenceExample.cpp
+++ b/db/examples_cxx/SequenceExample.cpp
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: SequenceExample.cpp,v 12.4 2006/08/24 14:45:49 bostic Exp $
+ * $Id: SequenceExample.cpp,v 12.6 2007/05/17 15:15:31 bostic Exp $
*/
#include <sys/types.h>
diff --git a/db/examples_cxx/TpcbExample.cpp b/db/examples_cxx/TpcbExample.cpp
index 50093a47d..99db12cf1 100644
--- a/db/examples_cxx/TpcbExample.cpp
+++ b/db/examples_cxx/TpcbExample.cpp
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: TpcbExample.cpp,v 12.5 2006/08/24 14:45:49 bostic Exp $
+ * $Id: TpcbExample.cpp,v 12.7 2007/05/17 15:15:31 bostic Exp $
*/
#include <sys/types.h>
diff --git a/db/examples_cxx/excxx_repquote/RepConfigInfo.cpp b/db/examples_cxx/excxx_repquote/RepConfigInfo.cpp
index d1a24fda8..675180d6f 100644
--- a/db/examples_cxx/excxx_repquote/RepConfigInfo.cpp
+++ b/db/examples_cxx/excxx_repquote/RepConfigInfo.cpp
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2001-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2001,2007 Oracle. All rights reserved.
*
- * $Id: RepConfigInfo.cpp,v 1.4 2006/08/24 14:45:50 bostic Exp $
+ * $Id: RepConfigInfo.cpp,v 1.6 2007/05/17 15:15:31 bostic Exp $
*/
#include "RepConfigInfo.h"
diff --git a/db/examples_cxx/excxx_repquote/RepConfigInfo.h b/db/examples_cxx/excxx_repquote/RepConfigInfo.h
index da42dea7d..755269126 100644
--- a/db/examples_cxx/excxx_repquote/RepConfigInfo.h
+++ b/db/examples_cxx/excxx_repquote/RepConfigInfo.h
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2001-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2001,2007 Oracle. All rights reserved.
*
- * $Id: RepConfigInfo.h,v 1.2 2006/08/24 14:45:50 bostic Exp $
+ * $Id: RepConfigInfo.h,v 1.5 2007/05/17 17:32:00 bostic Exp $
*/
#include <db_cxx.h>
@@ -33,4 +32,3 @@ public:
// used to store a set of optional other hosts.
REP_HOST_INFO *other_hosts;
};
-
diff --git a/db/examples_cxx/excxx_repquote/RepQuoteExample.cpp b/db/examples_cxx/excxx_repquote/RepQuoteExample.cpp
index a3e8e780b..be65dd40d 100644
--- a/db/examples_cxx/excxx_repquote/RepQuoteExample.cpp
+++ b/db/examples_cxx/excxx_repquote/RepQuoteExample.cpp
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2001-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2001,2007 Oracle. All rights reserved.
*
- * $Id: RepQuoteExample.cpp,v 1.11 2006/09/09 14:15:56 bostic Exp $
+ * $Id: RepQuoteExample.cpp,v 1.15 2007/05/17 15:15:31 bostic Exp $
*/
/*
@@ -118,15 +117,12 @@ int main(int argc, char **argv)
int ret;
// Extract the command line parameters
- while ((ch = getopt(argc, argv, "CFf:h:Mm:n:o:p:v")) != EOF) {
+ while ((ch = getopt(argc, argv, "Cf:h:Mm:n:o:p:v")) != EOF) {
tmppeer = false;
switch (ch) {
case 'C':
config.start_policy = DB_REP_CLIENT;
break;
- case 'F':
- config.start_policy = DB_REP_FULL_ELECTION;
- break;
case 'h':
config.home = optarg;
break;
@@ -399,6 +395,7 @@ void RepQuoteExample::event_callback(DbEnv* dbenv, u_int32_t which, void *info)
case DB_EVENT_REP_STARTUPDONE: /* FALLTHROUGH */
case DB_EVENT_REP_NEWMASTER:
+ case DB_EVENT_REP_PERM_FAILED:
// I don't care about this one, for now.
break;
diff --git a/db/examples_cxx/wce_tpcb/Readme.txt b/db/examples_cxx/wce_tpcb/Readme.txt
new file mode 100644
index 000000000..65ec66415
--- /dev/null
+++ b/db/examples_cxx/wce_tpcb/Readme.txt
@@ -0,0 +1,6 @@
+
+This sample application is a GUI application used to
+demonstrate Berkeley DB running on Windows CE.
+
+If you are not developing for Windows CE, this is probably not where you
+want to be looking.
diff --git a/db/examples_cxx/wce_tpcb/TpcbExample.cpp b/db/examples_cxx/wce_tpcb/TpcbExample.cpp
new file mode 100644
index 000000000..ee01d5941
--- /dev/null
+++ b/db/examples_cxx/wce_tpcb/TpcbExample.cpp
@@ -0,0 +1,546 @@
+
+#include "TpcbExample.h"
+
+#define HISTORY_LEN 100
+#define RECLEN 100
+#define BEGID 1000000
+
+struct Defrec {
+ u_int32_t id;
+ u_int32_t balance;
+ u_int8_t pad[RECLEN - sizeof(u_int32_t) - sizeof(u_int32_t)];
+};
+
+struct Histrec {
+ u_int32_t aid;
+ u_int32_t bid;
+ u_int32_t tid;
+ u_int32_t amount;
+ u_int8_t pad[RECLEN - 4 * sizeof(u_int32_t)];
+};
+
+const char *progname = "wce_tpcb";
+
+TpcbExample::TpcbExample()
+: dbenv(0), accounts(ACCOUNTS), branches(BRANCHES),
+ tellers(TELLERS), history(HISTORY), fast_mode(1), verbose(0),
+ cachesize(0)
+{
+ rand_seed = GetTickCount();
+ setHomeDir(TESTDIR);
+}
+
+int TpcbExample::createEnv(int flags)
+{
+ int ret;
+ u_int32_t local_flags;
+
+ // If the env object already exists, close and re-open
+ // don't just return immediately, since advanced options
+ // may have been altered (cachesize, NOSYNC..)
+ if (dbenv != NULL)
+ closeEnv();
+
+ srand(rand_seed);
+
+ if ((ret = db_env_create(&dbenv, 0)) != 0) {
+ _snprintf(msgString, ERR_STRING_MAX,
+ "%s: db_env_create: %s\n", progname, db_strerror(ret));
+ return (1);
+ }
+ dbenv->set_errcall(dbenv, &tpcb_errcallback);
+ dbenv->set_errpfx(dbenv, "TpcbExample");
+ dbenv->set_cachesize(dbenv, 0, cachesize == 0 ?
+ 1 * 1024 * 1024 : (u_int32_t)cachesize, 0);
+
+ if (fast_mode)
+ dbenv->set_flags(dbenv, DB_TXN_NOSYNC, 1);
+
+ local_flags = DB_CREATE | DB_INIT_LOCK | DB_INIT_LOG |
+ DB_INIT_MPOOL | DB_INIT_TXN;
+ dbenv->open(dbenv, homeDirName, local_flags, 0);
+ return (0);
+}
+
+void TpcbExample::closeEnv()
+{
+ if (dbenv != NULL) {
+ dbenv->close(dbenv, 0);
+ dbenv = 0;
+ }
+}
+
+//
+// Initialize the database to the specified number of accounts, branches,
+// history records, and tellers.
+//
+int
+TpcbExample::populate()
+{
+ DB *dbp;
+
+ int err;
+ u_int32_t balance, idnum;
+ u_int32_t end_anum, end_bnum, end_tnum;
+ u_int32_t start_anum, start_bnum, start_tnum;
+
+ idnum = BEGID;
+ balance = 500000;
+
+ if ((err = db_create(&dbp, dbenv, 0)) != 0) {
+ _snprintf(msgString, ERR_STRING_MAX,
+ "db_create of accounts db failed.");
+ return (1);
+ }
+ dbp->set_h_nelem(dbp, (unsigned int)accounts);
+
+ if ((err = dbp->open(dbp, NULL, "account", NULL, DB_HASH,
+ DB_CREATE, 0644)) != 0) {
+ _snprintf(msgString, ERR_STRING_MAX,
+ "Account file create failed. error: %s.", db_strerror(err));
+ return (1);
+ }
+
+ start_anum = idnum;
+ if ((err =
+ populateTable(dbp, idnum, balance, accounts, "account")) != 0)
+ return (1);
+ idnum += accounts;
+ end_anum = idnum - 1;
+ if ((err = dbp->close(dbp, 0)) != 0) {
+ _snprintf(msgString, ERR_STRING_MAX,
+ "Account file close failed. error: %s.", db_strerror(err));
+ return (1);
+ }
+
+ if ((err = db_create(&dbp, dbenv, 0)) != 0) {
+ _snprintf(msgString, ERR_STRING_MAX,
+ "db_create of branches db failed.");
+ return (1);
+ }
+ //
+ // Since the number of branches is very small, we want to use very
+ // small pages and only 1 key per page. This is the poor-man's way
+ // of getting key locking instead of page locking.
+ //
+ dbp->set_h_ffactor(dbp, 1);
+ dbp->set_h_nelem(dbp, (unsigned int)branches);
+ dbp->set_pagesize(dbp, 512);
+
+ if ((err = dbp->open(dbp, NULL, "branch", NULL, DB_HASH,
+ DB_CREATE, 0644)) != 0) {
+ _snprintf(msgString, ERR_STRING_MAX,
+ "Branch file create failed. error: %s.", db_strerror(err));
+ return (1);
+ }
+ start_bnum = idnum;
+ if ((err = populateTable(dbp, idnum, balance, branches, "branch")) != 0)
+ return (1);
+ idnum += branches;
+ end_bnum = idnum - 1;
+ if ((err = dbp->close(dbp, 0)) != 0) {
+ _snprintf(msgString, ERR_STRING_MAX,
+ "Close of branch file failed. error: %s.",
+ db_strerror(err));
+ return (1);
+ }
+
+ if ((err = db_create(&dbp, dbenv, 0)) != 0) {
+ _snprintf(msgString, ERR_STRING_MAX,
+ "db_create of teller db failed.");
+ return (1);
+ }
+ //
+ // In the case of tellers, we also want small pages, but we'll let
+ // the fill factor dynamically adjust itself.
+ //
+ dbp->set_h_ffactor(dbp, 0);
+ dbp->set_h_nelem(dbp, (unsigned int)tellers);
+ dbp->set_pagesize(dbp, 512);
+
+ if ((err = dbp->open(dbp, NULL, "teller", NULL, DB_HASH,
+ DB_CREATE, 0644)) != 0) {
+ _snprintf(msgString, ERR_STRING_MAX,
+ "Teller file create failed. error: %s.", db_strerror(err));
+ return (1);
+ }
+
+ start_tnum = idnum;
+ if ((err = populateTable(dbp, idnum, balance, tellers, "teller")) != 0)
+ return (1);
+ idnum += tellers;
+ end_tnum = idnum - 1;
+ if ((err = dbp->close(dbp, 0)) != 0) {
+ _snprintf(msgString, ERR_STRING_MAX,
+ "Close of teller file failed. error: %s.",
+ db_strerror(err));
+ return (1);
+ }
+
+ if ((err = db_create(&dbp, dbenv, 0)) != 0) {
+ _snprintf(msgString, ERR_STRING_MAX,
+ "db_create of history db failed.");
+ return (1);
+ }
+ dbp->set_re_len(dbp, HISTORY_LEN);
+ if ((err = dbp->open(dbp, NULL, "history", NULL, DB_RECNO,
+ DB_CREATE, 0644)) != 0) {
+ _snprintf(msgString, ERR_STRING_MAX,
+ "Create of history file failed. error: %s.",
+ db_strerror(err));
+ return (1);
+ }
+
+ populateHistory(dbp, history, accounts, branches, tellers);
+ if ((err = dbp->close(dbp, 0)) != 0) {
+ _snprintf(msgString, ERR_STRING_MAX,
+ "Close of history file failed. error: %s.",
+ db_strerror(err));
+ return (1);
+ }
+
+ _snprintf(msgString, ERR_STRING_MAX, "Populated OK.");
+ return (0);
+}
+
+int
+TpcbExample::populateTable(DB *dbp,
+ u_int32_t start_id, u_int32_t balance,
+ int nrecs, const char *msg)
+{
+ DBT kdbt, ddbt;
+ Defrec drec;
+ memset(&drec.pad[0], 1, sizeof(drec.pad));
+
+ memset(&kdbt, 0, sizeof(kdbt));
+ memset(&ddbt, 0, sizeof(ddbt));
+ kdbt.data = &drec.id;
+ kdbt.size = sizeof(u_int32_t);
+ ddbt.data = &drec;
+ ddbt.size = sizeof(drec);
+
+ for (int i = 0; i < nrecs; i++) {
+ drec.id = start_id + (u_int32_t)i;
+ drec.balance = balance;
+ int err;
+ if ((err =
+ dbp->put(dbp, NULL, &kdbt, &ddbt, DB_NOOVERWRITE)) != 0) {
+ _snprintf(msgString, ERR_STRING_MAX,
+ "Failure initializing %s file: %s. Likely re-initializing.",
+ msg, db_strerror(err));
+ return (1);
+ }
+ }
+ return (0);
+}
+
+int
+TpcbExample::populateHistory(DB *dbp, int nrecs, u_int32_t accounts,
+ u_int32_t branches, u_int32_t tellers)
+{
+ DBT kdbt, ddbt;
+ Histrec hrec;
+ memset(&hrec.pad[0], 1, sizeof(hrec.pad));
+ hrec.amount = 10;
+ db_recno_t key;
+
+ memset(&kdbt, 0, sizeof(kdbt));
+ memset(&ddbt, 0, sizeof(ddbt));
+ kdbt.data = &key;
+ kdbt.size = sizeof(u_int32_t);
+ ddbt.data = &hrec;
+ ddbt.size = sizeof(hrec);
+
+ for (int i = 1; i <= nrecs; i++) {
+ hrec.aid = randomId(ACCOUNT, accounts, branches, tellers);
+ hrec.bid = randomId(BRANCH, accounts, branches, tellers);
+ hrec.tid = randomId(TELLER, accounts, branches, tellers);
+
+ int err;
+ key = (db_recno_t)i;
+ if ((err = dbp->put(dbp, NULL, &kdbt, &ddbt, DB_APPEND)) != 0) {
+ _snprintf(msgString, ERR_STRING_MAX,
+ "Failure initializing history file: %s.",
+ db_strerror(err));
+ return (1);
+ }
+ }
+ return (0);
+}
+
+int
+TpcbExample::run(int n)
+{
+ DB *adb, *bdb, *hdb, *tdb;
+ int failed, ret, txns;
+ DWORD start_time, end_time;
+ double elapsed_secs;
+
+ //
+ // Open the database files.
+ //
+
+ int err;
+ if ((err = db_create(&adb, dbenv, 0)) != 0) {
+ _snprintf(msgString, ERR_STRING_MAX,
+ "db_create of account db failed. Error: %s",
+ db_strerror(err));
+ return (1);
+ }
+ if ((err = adb->open(adb, NULL, "account", NULL, DB_UNKNOWN,
+ DB_AUTO_COMMIT, 0)) != 0) {
+ _snprintf(msgString, ERR_STRING_MAX,
+ "Open of account file failed. Error: %s", db_strerror(err));
+ return (1);
+ }
+
+ if ((err = db_create(&bdb, dbenv, 0)) != 0) {
+ _snprintf(msgString, ERR_STRING_MAX,
+ "db_create of branch db failed. Error: %s",
+ db_strerror(err));
+ return (1);
+ }
+ if ((err = bdb->open(bdb, NULL, "branch", NULL, DB_UNKNOWN,
+ DB_AUTO_COMMIT, 0)) != 0) {
+ _snprintf(msgString, ERR_STRING_MAX,
+ "Open of branch file failed. Error: %s", db_strerror(err));
+ return (1);
+ }
+
+ if ((err = db_create(&tdb, dbenv, 0)) != 0) {
+ _snprintf(msgString, ERR_STRING_MAX,
+ "db_create of teller db failed. Error: %s",
+ db_strerror(err));
+ return (1);
+ }
+ if ((err = tdb->open(tdb, NULL, "teller", NULL, DB_UNKNOWN,
+ DB_AUTO_COMMIT, 0)) != 0) {
+ _snprintf(msgString, ERR_STRING_MAX,
+ "Open of teller file failed. Error: %s", db_strerror(err));
+ return (1);
+ }
+
+ if ((err = db_create(&hdb, dbenv, 0)) != 0) {
+ _snprintf(msgString, ERR_STRING_MAX,
+ "db_create of teller db failed. Error: %s",
+ db_strerror(err));
+ return (1);
+ }
+ if ((err = hdb->open(hdb, NULL, "history", NULL, DB_UNKNOWN,
+ DB_AUTO_COMMIT, 0)) != 0) {
+ _snprintf(msgString, ERR_STRING_MAX,
+ "Open of history file failed. Error: %s", db_strerror(err));
+ return (1);
+ }
+
+ start_time = GetTickCount();
+ for (txns = n, failed = 0; n-- > 0;)
+ if ((ret = txn(adb, bdb, tdb, hdb,
+ accounts, branches, tellers)) != 0)
+ ++failed;
+ end_time = GetTickCount();
+ if (end_time == start_time)
+ ++end_time;
+#define MILLISECS_PER_SEC 1000
+ elapsed_secs = (double)((end_time - start_time))/MILLISECS_PER_SEC;
+ _snprintf(msgString, ERR_STRING_MAX,
+ "%s: %d txns: %d failed, %.2f TPS\n", progname, txns, failed,
+ (txns - failed) / elapsed_secs);
+
+ (void)adb->close(adb, 0);
+ (void)bdb->close(bdb, 0);
+ (void)tdb->close(tdb, 0);
+ (void)hdb->close(hdb, 0);
+
+ return (0);
+}
+
+//
+// XXX Figure out the appropriate way to pick out IDs.
+//
+int
+TpcbExample::txn(DB *adb, DB *bdb, DB *tdb, DB *hdb,
+ int accounts, int branches, int tellers)
+{
+ DBC *acurs, *bcurs, *tcurs;
+ DB_TXN *t;
+ DBT d_dbt, d_histdbt, k_dbt, k_histdbt;
+
+ db_recno_t key;
+ Defrec rec;
+ Histrec hrec;
+ int account, branch, teller, ret;
+
+ memset(&d_dbt, 0, sizeof(d_dbt));
+ memset(&d_histdbt, 0, sizeof(d_histdbt));
+ memset(&k_dbt, 0, sizeof(k_dbt));
+ memset(&k_histdbt, 0, sizeof(k_histdbt));
+ k_histdbt.data = &key;
+ k_histdbt.size = sizeof(key);
+
+ // !!!
+ // This is sample code -- we could move a lot of this into the driver
+ // to make it faster.
+ //
+ account = randomId(ACCOUNT, accounts, branches, tellers);
+ branch = randomId(BRANCH, accounts, branches, tellers);
+ teller = randomId(TELLER, accounts, branches, tellers);
+
+ k_dbt.size = sizeof(int);
+
+ d_dbt.flags |= DB_DBT_USERMEM;
+ d_dbt.data = &rec;
+ d_dbt.ulen = sizeof(rec);
+
+ hrec.aid = account;
+ hrec.bid = branch;
+ hrec.tid = teller;
+ hrec.amount = 10;
+ // Request 0 bytes since we're just positioning.
+ d_histdbt.flags |= DB_DBT_PARTIAL;
+
+ // START PER-TRANSACTION TIMING.
+ //
+ // Technically, TPCB requires a limit on response time, you only get
+ // to count transactions that complete within 2 seconds. That's not
+ // an issue for this sample application -- regardless, here's where
+ // the transaction begins.
+ if (dbenv->txn_begin(dbenv, NULL, &t, 0) != 0)
+ goto err;
+
+ if (adb->cursor(adb, t, &acurs, 0) != 0 ||
+ bdb->cursor(bdb, t, &bcurs, 0) != 0 ||
+ tdb->cursor(tdb, t, &tcurs, 0) != 0)
+ goto err;
+
+ // Account record
+ k_dbt.data = &account;
+ if (acurs->get(acurs, &k_dbt, &d_dbt, DB_SET) != 0)
+ goto err;
+ rec.balance += 10;
+ if (acurs->put(acurs, &k_dbt, &d_dbt, DB_CURRENT) != 0)
+ goto err;
+
+ // Branch record
+ k_dbt.data = &branch;
+ if (bcurs->get(bcurs, &k_dbt, &d_dbt, DB_SET) != 0)
+ goto err;
+ rec.balance += 10;
+ if (bcurs->put(bcurs, &k_dbt, &d_dbt, DB_CURRENT) != 0)
+ goto err;
+
+ // Teller record
+ k_dbt.data = &teller;
+ if (tcurs->get(tcurs, &k_dbt, &d_dbt, DB_SET) != 0)
+ goto err;
+ rec.balance += 10;
+ if (tcurs->put(tcurs, &k_dbt, &d_dbt, DB_CURRENT) != 0)
+ goto err;
+
+ // History record
+ d_histdbt.flags = 0;
+ d_histdbt.data = &hrec;
+ d_histdbt.ulen = sizeof(hrec);
+ if (hdb->put(hdb, t, &k_histdbt, &d_histdbt, DB_APPEND) != 0)
+ goto err;
+
+ if (acurs->close(acurs) != 0 || bcurs->close(bcurs) != 0
+ || tcurs->close(tcurs) != 0)
+ goto err;
+
+ ret = t->commit(t, 0);
+ t = NULL;
+ if (ret != 0)
+ goto err;
+
+ // END PER-TRANSACTION TIMING.
+ return (0);
+
+err:
+ if (acurs != NULL)
+ (void)acurs->close(acurs);
+ if (bcurs != NULL)
+ (void)bcurs->close(bcurs);
+ if (tcurs != NULL)
+ (void)tcurs->close(tcurs);
+ if (t != NULL)
+ (void)t->abort(t);
+
+ return (-1);
+}
+
+// Utility functions
+
+u_int32_t
+TpcbExample::randomInt(u_int32_t lo, u_int32_t hi)
+{
+ u_int32_t ret;
+ int t;
+
+ t = rand();
+ ret = (u_int32_t)(((double)t / ((double)(RAND_MAX) + 1)) *
+ (hi - lo + 1));
+ ret += lo;
+ return (ret);
+}
+
+u_int32_t
+TpcbExample::randomId(FTYPE type, u_int32_t accounts,
+ u_int32_t branches, u_int32_t tellers)
+{
+ u_int32_t min, max, num;
+
+ max = min = BEGID;
+ num = accounts;
+ switch (type) {
+ case TELLER:
+ min += branches;
+ num = tellers;
+ // Fallthrough
+ case BRANCH:
+ if (type == BRANCH)
+ num = branches;
+ min += accounts;
+ // Fallthrough
+ case ACCOUNT:
+ max = min + num - 1;
+ }
+ return (randomInt(min, max));
+}
+
+char *
+TpcbExample::getHomeDir(char *path, int max)
+{
+ memcpy(path, homeDirName, min(max, MAX_PATH));
+ return path;
+}
+
+wchar_t *
+TpcbExample::getHomeDirW(wchar_t *path, int max)
+{
+ memcpy(path, wHomeDirName, min(max, MAX_PATH)*sizeof(wchar_t));
+ return path;
+}
+
+void
+TpcbExample::setHomeDir(char *path)
+{
+ int path_len;
+
+ path_len = strlen(path);
+ strncpy(homeDirName, path, MAX_PATH);
+ MultiByteToWideChar(CP_ACP, 0, path, path_len, wHomeDirName, MAX_PATH);
+ wHomeDirName[path_len] = L'\0';
+}
+
+void
+TpcbExample::setHomeDirW(wchar_t *path)
+{
+ int path_len;
+
+ path_len = wcslen(path);
+ wcsncpy(wHomeDirName, path, MAX_PATH);
+ WideCharToMultiByte(CP_ACP, 0, path, path_len, homeDirName,
+ MAX_PATH, 0, 0);
+ homeDirName[path_len] = '\0';
+}
diff --git a/db/examples_cxx/wce_tpcb/TpcbExample.h b/db/examples_cxx/wce_tpcb/TpcbExample.h
new file mode 100644
index 000000000..b531aea8d
--- /dev/null
+++ b/db/examples_cxx/wce_tpcb/TpcbExample.h
@@ -0,0 +1,63 @@
+
+#ifndef _TPCBEXAMPLE_H_INCLUDE__
+#define _TPCBEXAMPLE_H_INCLUDE__
+
+#include <windows.h>
+#include "db.h"
+
+#define ACCOUNTS 1000
+#define BRANCHES 10
+#define TELLERS 100
+#define HISTORY 10000
+#define TRANSACTIONS 1000
+#define TESTDIR "TESTDIR"
+
+typedef enum { ACCOUNT, BRANCH, TELLER } FTYPE;
+
+extern "C" {
+void tpcb_errcallback(const DB_ENV *, const char *, const char *);
+}
+
+class TpcbExample
+{
+public:
+ int createEnv(int);
+ void closeEnv();
+ int populate();
+ int run(int);
+ int txn(DB *, DB *, DB *, DB *, int, int, int);
+ int populateHistory(DB *, int, u_int32_t, u_int32_t, u_int32_t);
+ int populateTable(DB *, u_int32_t, u_int32_t, int, const char *);
+
+ TpcbExample();
+
+ char *getHomeDir(char *, int);
+ wchar_t *getHomeDirW(wchar_t *, int);
+ void setHomeDir(char *);
+ void setHomeDirW(wchar_t *);
+
+#define ERR_STRING_MAX 1024
+ char msgString[ERR_STRING_MAX];
+ int accounts;
+ int branches;
+ int history;
+ int tellers;
+
+ // options configured through the advanced dialog.
+ int fast_mode;
+ int verbose;
+ int cachesize;
+ int rand_seed;
+private:
+ DB_ENV *dbenv;
+ char homeDirName[MAX_PATH];
+ wchar_t wHomeDirName[MAX_PATH];
+
+ u_int32_t randomId(FTYPE, u_int32_t, u_int32_t, u_int32_t);
+ u_int32_t randomInt(u_int32_t, u_int32_t);
+ // no need for copy and assignment
+ TpcbExample(const TpcbExample &);
+ void operator = (const TpcbExample &);
+};
+
+#endif
diff --git a/db/examples_cxx/wce_tpcb/TpcbUI.cpp b/db/examples_cxx/wce_tpcb/TpcbUI.cpp
new file mode 100644
index 000000000..fc3898102
--- /dev/null
+++ b/db/examples_cxx/wce_tpcb/TpcbUI.cpp
@@ -0,0 +1,478 @@
+// TpcbUI.cpp : Defines the entry point for the application.
+//
+
+#include <windows.h>
+#include "resource.h"
+#include "TpcbExample.h"
+#include <commctrl.h>
+
+#define MAX_LOADSTRING 100
+
+// Global Variables:
+HINSTANCE hInst; // The current instance
+HWND hWndDlgMain; // Handle to the main dialog window.
+HWND hWndFrame; // Handle to the main window.
+TpcbExample *tpcb;
+
+// Forward declarations of functions included in this code module:
+ATOM MyRegisterClass (HINSTANCE, LPTSTR);
+BOOL InitInstance (HINSTANCE, int);
+LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);
+LRESULT CALLBACK MainDialog (HWND, UINT, WPARAM, LPARAM);
+LRESULT CALLBACK InitDialog (HWND, UINT, WPARAM, LPARAM);
+LRESULT CALLBACK AdvancedDialog (HWND, UINT, WPARAM, LPARAM);
+LRESULT CALLBACK RunDialog (HWND, UINT, WPARAM, LPARAM);
+BOOL GetHomeDirectory(HWND, BOOL);
+BOOL RecursiveDirRemove(wchar_t *);
+
+int WINAPI WinMain( HINSTANCE hInstance,
+ HINSTANCE hPrevInstance,
+ LPTSTR lpCmdLine,
+ int nCmdShow)
+{
+ MSG msg;
+ HACCEL hAccelTable;
+
+ hWndDlgMain = NULL;
+ // Initialize the tpcb object.
+ tpcb = new TpcbExample();
+
+ // Perform application initialization:
+ if (!InitInstance (hInstance, nCmdShow))
+ {
+ return FALSE;
+ }
+
+ hAccelTable = LoadAccelerators(hInstance, (LPCTSTR)IDC_WCE_TPCB);
+
+ // Main message loop:
+ while (GetMessage(&msg, NULL, 0, 0))
+ {
+ if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
+ {
+ TranslateMessage(&msg);
+ DispatchMessage(&msg);
+ }
+ }
+
+ return msg.wParam;
+}
+
+//
+// FUNCTION: MyRegisterClass()
+//
+// PURPOSE: Registers the window class.
+//
+// COMMENTS:
+//
+// It is important to call this function so that the application
+// will get 'well formed' small icons associated with it.
+//
+ATOM MyRegisterClass(HINSTANCE hInstance, LPTSTR szWindowClass)
+{
+ WNDCLASS wc;
+
+ wc.style = CS_HREDRAW | CS_VREDRAW;
+ wc.lpfnWndProc = (WNDPROC) WndProc;
+ wc.cbClsExtra = 0;
+ wc.cbWndExtra = 0;
+ wc.hInstance = hInstance;
+ wc.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_WCE_TPCB));
+ wc.hCursor = 0;
+ wc.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);
+ wc.lpszMenuName = 0;
+ wc.lpszClassName = szWindowClass;
+
+ return RegisterClass(&wc);
+}
+
+//
+// FUNCTION: InitInstance(HANDLE, int)
+//
+// PURPOSE: Saves instance handle and creates main window
+//
+// COMMENTS:
+//
+// In this function, we save the instance handle in a global variable and
+// create and display the main program window.
+//
+BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
+{
+ TCHAR szTitle[MAX_LOADSTRING]; // The title bar text
+ TCHAR szWindowClass[MAX_LOADSTRING]; // The window class name
+
+ hInst = hInstance; // Store instance handle in our global variable
+ // Initialize global strings
+ LoadString(hInstance, IDC_WCE_TPCB, szWindowClass, MAX_LOADSTRING);
+ MyRegisterClass(hInstance, szWindowClass);
+ LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
+
+ hWndFrame = CreateWindow(szWindowClass, szTitle,
+ WS_VISIBLE | WS_MINIMIZEBOX, CW_USEDEFAULT, CW_USEDEFAULT,
+ CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);
+
+ if (!hWndFrame)
+ {
+ return FALSE;
+ }
+
+ ShowWindow(hWndDlgMain, nCmdShow);
+ UpdateWindow(hWndDlgMain);
+
+ return TRUE;
+}
+
+//
+// FUNCTION: WndProc(HWND, unsigned, WORD, LONG)
+//
+// PURPOSE: Processes messages for the main window.
+//
+// WM_COMMAND - process the application menu
+// WM_DESTROY - post a quit message and return
+//
+//
+LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
+{
+ HWND hDlg;
+
+ switch (message)
+ {
+ case WM_COMMAND:
+ DefWindowProc(hWnd, message, wParam, lParam);
+ break;
+ case WM_CREATE:
+ hDlg = CreateDialog(hInst,
+ MAKEINTRESOURCE(IDD_MAINDIALOG), hWnd,
+ (DLGPROC)MainDialog);
+ break;
+ case WM_DESTROY:
+ PostQuitMessage(0);
+ break;
+ default:
+ return DefWindowProc(hWnd, message, wParam, lParam);
+ }
+ return 0;
+}
+
+// Message handler for the Main dialog box
+LRESULT CALLBACK MainDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
+{
+ RECT rt;
+ HWND hCurrentRadioButton;
+ wchar_t wdirname[MAX_PATH], msg[1024], *title;
+ int ret, valid, ntxns, written;
+
+ switch (message)
+ {
+ case WM_INITDIALOG:
+ // maximize the dialog.
+ GetClientRect(GetParent(hDlg), &rt);
+ SetWindowPos(hDlg, HWND_TOP, 0, 0, rt.right, rt.bottom,
+ SWP_SHOWWINDOW);
+ CheckRadioButton(hDlg, IDC_MEDIUM_RADIO,
+ IDC_SMALL_RADIO, IDC_SMALL_RADIO);
+ SetDlgItemText(hDlg, IDC_HOME_EDIT,
+ tpcb->getHomeDirW(wdirname, MAX_PATH));
+ SetDlgItemInt(hDlg, IDC_TXN_EDIT, 1000, 0);
+
+ SetWindowText(hDlg, L"BDB TPCB Example app");
+ ShowWindow(hDlg, SW_SHOWNORMAL);
+ return TRUE;
+ case WM_COMMAND:
+ if (LOWORD(wParam) == IDC_INIT_BUTTON ||
+ LOWORD(wParam) == IDC_RUN_BUTTON ) {
+ hCurrentRadioButton = GetDlgItem(hDlg,
+ IDC_SMALL_RADIO);
+ if(BST_CHECKED ==
+ SendMessage(hCurrentRadioButton,
+ BM_GETCHECK, NULL, NULL)) {
+ tpcb->accounts = 500;
+ tpcb->branches = 10;
+ tpcb->tellers = 50;
+ tpcb->history = 5000;
+ }
+ hCurrentRadioButton = GetDlgItem(hDlg,
+ IDC_MEDIUM_RADIO);
+ if(BST_CHECKED ==
+ SendMessage(hCurrentRadioButton,
+ BM_GETCHECK, NULL, NULL)) {
+ tpcb->accounts = 1000;
+ tpcb->branches = 10;
+ tpcb->tellers = 100;
+ tpcb->history = 10000;
+ }
+ hCurrentRadioButton = GetDlgItem(hDlg,
+ IDC_LARGE_RADIO);
+ if(BST_CHECKED ==
+ SendMessage(hCurrentRadioButton,
+ BM_GETCHECK, NULL, NULL)) {
+ tpcb->accounts = 100000;
+ tpcb->branches = 10;
+ tpcb->tellers = 100;
+ tpcb->history = 259200;
+ }
+ EnableWindow(GetDlgItem(hDlg, IDC_INIT_BUTTON),
+ FALSE);
+ EnableWindow(GetDlgItem(hDlg, IDC_RUN_BUTTON),
+ FALSE);
+ EnableWindow(GetDlgItem(hDlg, IDC_ADV_BUTTON),
+ FALSE);
+ }
+ if (LOWORD(wParam) == IDC_ADV_BUTTON) {
+ CreateDialog(hInst,
+ MAKEINTRESOURCE(IDD_ADVANCEDDIALOG), hDlg,
+ (DLGPROC)AdvancedDialog);
+ } else if (LOWORD(wParam) == IDC_INIT_BUTTON) {
+ // Close the environment first.
+ // In case this is a re-initialization.
+ tpcb->closeEnv();
+ GetHomeDirectory(hDlg, TRUE);
+ tpcb->createEnv(0);
+ ret = tpcb->populate();
+ } else if (LOWORD(wParam) == IDC_RUN_BUTTON) {
+ GetHomeDirectory(hDlg, FALSE);
+ if (GetFileAttributes(
+ tpcb->getHomeDirW(wdirname, MAX_PATH)) !=
+ FILE_ATTRIBUTE_DIRECTORY) {
+ _snwprintf(msg, 1024,
+L"Target directory: %s does not exist, or is not a directory.\nMake sure the "
+L"directory name is correct, and that you ran the initialization phase.",
+ wdirname);
+ MessageBox(hDlg, msg, L"Error", MB_OK);
+ EnableWindow(GetDlgItem(hDlg,
+ IDC_INIT_BUTTON), TRUE);
+ EnableWindow(GetDlgItem(hDlg,
+ IDC_RUN_BUTTON), TRUE);
+ EnableWindow(GetDlgItem(hDlg,
+ IDC_ADV_BUTTON), TRUE);
+ return FALSE;
+ }
+ // TODO: Check for an empty directory?
+ ntxns = GetDlgItemInt(hDlg, IDC_TXN_EDIT,
+ &valid, FALSE);
+ if (valid == FALSE) {
+ MessageBox(hDlg,
+ L"Invalid number in transaction field.",
+ L"Error", MB_OK);
+ EnableWindow(GetDlgItem(hDlg,
+ IDC_INIT_BUTTON), TRUE);
+ EnableWindow(GetDlgItem(hDlg,
+ IDC_RUN_BUTTON), TRUE);
+ EnableWindow(GetDlgItem(hDlg,
+ IDC_ADV_BUTTON), TRUE);
+ return FALSE;
+ }
+ tpcb->createEnv(0);
+ ret = tpcb->run(ntxns);
+ } else if (LOWORD(wParam) == IDC_EXIT_BUTTON) {
+ tpcb->closeEnv();
+ EndDialog(hDlg, LOWORD(wParam));
+ DestroyWindow(hDlg);
+ DestroyWindow(hWndFrame);
+ return FALSE;
+ }
+ if (LOWORD(wParam) == IDC_INIT_BUTTON ||
+ LOWORD(wParam) == IDC_RUN_BUTTON ) {
+ if (ret == 0)
+ title = L"Results";
+ else
+ title = L"Error message";
+ written = MultiByteToWideChar(CP_ACP, NULL,
+ tpcb->msgString, strlen(tpcb->msgString),
+ msg, sizeof(msg)/sizeof(msg[0]));
+ msg[written] = L'\0';
+ MessageBox(hDlg, msg, title, MB_OK);
+ EnableWindow(GetDlgItem(hDlg, IDC_INIT_BUTTON), TRUE);
+ EnableWindow(GetDlgItem(hDlg, IDC_RUN_BUTTON),
+ TRUE);
+ EnableWindow(GetDlgItem(hDlg, IDC_ADV_BUTTON),
+ TRUE);
+ }
+ break;
+ case WM_DESTROY:
+ // Same functionality as WM_COMMAND->IDC_EXIT_BUTTON
+ tpcb->closeEnv();
+ EndDialog(hDlg, LOWORD(wParam));
+ DestroyWindow(hDlg);
+ DestroyWindow(hWndFrame);
+ return FALSE;
+ default:
+ return DefWindowProc(hDlg, message, wParam, lParam);
+ }
+ return TRUE;
+}
+
+// Message handler for the Advanced dialog box
+LRESULT CALLBACK AdvancedDialog(HWND hDlg, UINT message,
+ WPARAM wParam, LPARAM lParam)
+{
+ RECT rt;
+ HWND hCurrentCheckBox;
+ int currentInt, valid;
+
+ switch (message)
+ {
+ case WM_INITDIALOG:
+ GetClientRect(GetParent(hDlg), &rt);
+ SetWindowPos(hDlg, HWND_TOP, 0, 0, rt.right, rt.bottom,
+ SWP_SHOWWINDOW);
+ if (tpcb->fast_mode == 0) {
+ hCurrentCheckBox =
+ GetDlgItem(hDlg, IDC_FASTMODE_CHECK);
+ SendMessage(hCurrentCheckBox, BM_SETCHECK,
+ BST_CHECKED, 0);
+ }
+ if (tpcb->verbose == 1) {
+ hCurrentCheckBox =
+ GetDlgItem(hDlg, IDC_VERBOSE_CHECK);
+ SendMessage(hCurrentCheckBox, BM_SETCHECK,
+ BST_CHECKED, 0);
+ }
+ if (tpcb->cachesize != 0) {
+ SetDlgItemInt(hDlg, IDC_CACHE_EDIT,
+ tpcb->cachesize/1024, FALSE);
+ }
+ break;
+ case WM_COMMAND:
+ if (LOWORD(wParam) == IDC_DONE_BUTTON) {
+ hCurrentCheckBox =
+ GetDlgItem(hDlg, IDC_FASTMODE_CHECK);
+ if(BST_CHECKED == SendMessage(hCurrentCheckBox,
+ BM_GETCHECK, NULL, NULL))
+ tpcb->fast_mode = 0;
+ else
+ tpcb->fast_mode = 1;
+ hCurrentCheckBox =
+ GetDlgItem(hDlg, IDC_VERBOSE_CHECK);
+ if(BST_CHECKED == SendMessage(hCurrentCheckBox,
+ BM_GETCHECK, NULL, NULL))
+ tpcb->verbose = 1;
+ else
+ tpcb->verbose = 0;
+ currentInt = GetDlgItemInt(hDlg,
+ IDC_RANDOM_EDIT, &valid, FALSE);
+ if (valid != FALSE)
+ tpcb->rand_seed = currentInt;
+ currentInt = GetDlgItemInt(hDlg,
+ IDC_CACHE_EDIT, &valid, FALSE);
+ if (valid != FALSE) {
+ if (currentInt < 20) {
+ MessageBox(hDlg,
+ L"Min cache size is 20kb.",
+ L"Error", MB_OK);
+ return FALSE;
+ }
+ tpcb->cachesize = currentInt*1024;
+ }
+ EndDialog(hDlg, LOWORD(wParam));
+ DestroyWindow(hDlg);
+ }
+ break;
+ default:
+ return DefWindowProc(hDlg, message, wParam, lParam);
+ }
+ return TRUE;
+}
+
+// Utility function to retrieve the directory name
+// from the control, and set it in the tpcb object.
+// Optionally remove and create requested directory.
+BOOL
+GetHomeDirectory(HWND hDlg, BOOL init)
+{
+ wchar_t wdirname[MAX_PATH];
+ DWORD attrs;
+
+ if (GetDlgItemText(hDlg, IDC_HOME_EDIT, wdirname, MAX_PATH) == 0)
+ tpcb->setHomeDir(TESTDIR);
+ else
+ tpcb->setHomeDirW(wdirname);
+
+ if (init == TRUE) {
+ // Ensure that wdirname holds the correct version:
+ tpcb->getHomeDirW(wdirname, MAX_PATH);
+
+ // If the directory exists, ensure that it is empty.
+ attrs = GetFileAttributes(wdirname);
+ if (attrs == FILE_ATTRIBUTE_DIRECTORY)
+ RecursiveDirRemove(wdirname);
+ else if (attrs == FILE_ATTRIBUTE_NORMAL)
+ DeleteFile(wdirname);
+ else if (attrs != 0xFFFFFFFF) {
+ // Not a directory or normal file, don't try to remove
+ // it, or create a new directory over the top.
+ return FALSE;
+ }
+
+ // Create the requested directory.
+ return CreateDirectory(wdirname, NULL);
+ }
+ return TRUE;
+}
+
+BOOL
+RecursiveDirRemove(wchar_t *dirname)
+{
+ HANDLE hFind; // file handle
+ WIN32_FIND_DATA findFileData;
+
+ wchar_t DirPath[MAX_PATH];
+ wchar_t FileName[MAX_PATH];
+
+ wcscpy(DirPath, dirname);
+ wcscat(DirPath, L"\\*"); // searching all files
+ wcscpy(FileName, dirname);
+ wcscat(FileName, L"\\");
+
+ MessageBox(hWndDlgMain, L"Cleaning directory.", L"Message", MB_OK);
+ // find the first file
+ if ((hFind = FindFirstFile(DirPath,&findFileData)) ==
+ INVALID_HANDLE_VALUE)
+ return FALSE;
+
+ wcscpy(DirPath,FileName);
+ MessageBox(hWndDlgMain, L"Found files in directory.",
+ L"Message", MB_OK);
+
+ bool bSearch = true;
+ do {
+
+ wcscpy(FileName + wcslen(DirPath), findFileData.cFileName);
+ if (findFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
+ {
+ // we have found a directory, recurse
+ if (!RecursiveDirRemove(FileName))
+ break; // directory couldn't be deleted
+ } else {
+ if (findFileData.dwFileAttributes &
+ FILE_ATTRIBUTE_READONLY)
+ SetFileAttributes(findFileData.cFileName,
+ FILE_ATTRIBUTE_NORMAL);
+ if (!DeleteFile(FileName)) {
+ MessageBox(hWndDlgMain, L"Delete failed.",
+ L"Message", MB_OK);
+ break; // file couldn't be deleted
+ }
+ }
+ } while (FindNextFile(hFind,&findFileData));
+
+ FindClose(hFind); // closing file handle
+ return RemoveDirectory(dirname); // remove the empty directory
+}
+
+// Callback function used to receive error messages from DB
+// Needs to have a C calling convention.
+// Using this function, since the implementation is presenting
+// the error to the user in a message box.
+extern "C" {
+void tpcb_errcallback(const DB_ENV *, const char *errpfx, const char *errstr)
+{
+ wchar_t wstr[ERR_STRING_MAX];
+ memset(wstr, 0, sizeof(wstr));
+ MultiByteToWideChar(CP_ACP, 0, errstr, strlen(errstr),
+ wstr, ERR_STRING_MAX-1);
+ MessageBox(hWndDlgMain, wstr, L"Error Message", MB_OK);
+ exit(1);
+}
+}
+
diff --git a/db/examples_cxx/wce_tpcb/newres.h b/db/examples_cxx/wce_tpcb/newres.h
new file mode 100644
index 000000000..c93b64d0c
--- /dev/null
+++ b/db/examples_cxx/wce_tpcb/newres.h
@@ -0,0 +1,38 @@
+#ifndef __NEWRES_H__
+#define __NEWRES_H__
+
+#if !defined(UNDER_CE)
+ #define UNDER_CE _WIN32_WCE
+#endif
+
+#if defined(_WIN32_WCE)
+ #if !defined(WCEOLE_ENABLE_DIALOGEX)
+ #define DIALOGEX DIALOG DISCARDABLE
+ #endif
+ #include <commctrl.h>
+ #define SHMENUBAR RCDATA
+ #if defined(WIN32_PLATFORM_PSPC) && (_WIN32_WCE >= 300)
+ #include <aygshell.h>
+ #else
+ #define I_IMAGENONE (-2)
+ #define NOMENU 0xFFFF
+ #define IDS_SHNEW 1
+
+ #define IDM_SHAREDNEW 10
+ #define IDM_SHAREDNEWDEFAULT 11
+ #endif
+#endif // _WIN32_WCE
+
+#ifdef RC_INVOKED
+#ifndef _INC_WINDOWS
+#define _INC_WINDOWS
+ #include "winuser.h" // extract from windows header
+#endif
+#endif
+
+#ifdef IDC_STATIC
+#undef IDC_STATIC
+#endif
+#define IDC_STATIC (-1)
+
+#endif //__NEWRES_H__
diff --git a/db/examples_cxx/wce_tpcb/oracle_bdb.bmp b/db/examples_cxx/wce_tpcb/oracle_bdb.bmp
new file mode 100644
index 000000000..1bb1a1dab
--- /dev/null
+++ b/db/examples_cxx/wce_tpcb/oracle_bdb.bmp
Binary files differ
diff --git a/db/examples_cxx/wce_tpcb/resource.h b/db/examples_cxx/wce_tpcb/resource.h
new file mode 100644
index 000000000..fb6ccdb64
--- /dev/null
+++ b/db/examples_cxx/wce_tpcb/resource.h
@@ -0,0 +1,57 @@
+//{{NO_DEPENDENCIES}}
+// Microsoft eMbedded Visual C++ generated include file.
+// Used by wce_tpcb.rc
+//
+#define IDS_APP_TITLE 1
+#define IDS_HELLO 2
+#define IDC_WCE_TPCB 3
+#define IDI_WCE_TPCB 101
+#define IDM_MENU 102
+#define IDD_ABOUTBOX 103
+#define IDD_MAINDIALOG 104
+#define IDD_INITDIALOG 106
+#define IDD_ADVANCEDIALOG 107
+#define IDD_ADVANCEDDIALOG 107
+#define IDD_RUNDIALOG 108
+#define IDB_ORACLE_BITMAP 113
+#define IDEXIT 1001
+#define IDC_DIRENTRY 1002
+#define IDC_HOMEDIR 1003
+#define IDC_INITIALIZE 1004
+#define IDC_RUN 1005
+#define IDC_TXN_EDIT 1006
+#define IDC_HISTORY_EDIT 1007
+#define IDC_TELLER_EDIT 1008
+#define IDC_ACCT_EDIT 1009
+#define IDC_BRANCH_EDIT 1010
+#define IDC_INITHOME 1011
+#define IDC_HOME_EDIT 1020
+#define IDC_FASTMODE_CHECK 1023
+#define IDC_VERBOSE_CHECK 1024
+#define IDC_RANDOM_STATIC 1025
+#define IDC_RANDOM_EDIT 1026
+#define IDC_CACHE_STATIC 1027
+#define IDC_CACHE_EDIT 1028
+#define IDC_DONE_BUTTON 1029
+#define IDC_TXNS_STATIC 1030
+#define IDC_TXNS_EDIT 1031
+#define IDC_RUN_BUTTON 1032
+#define IDC_INIT_BUTTON 1033
+#define IDC_ADV_BUTTON 1034
+#define IDC_EXIT_BUTTON 1037
+#define IDC_MEDIUM_RADIO 1041
+#define IDC_LARGE_RADIO 1042
+#define IDC_SMALL_RADIO 1043
+#define IDM_FILE_EXIT 40002
+#define IDM_HELP_ABOUT 40003
+
+// Next default values for new objects
+//
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NEXT_RESOURCE_VALUE 114
+#define _APS_NEXT_COMMAND_VALUE 40004
+#define _APS_NEXT_CONTROL_VALUE 1049
+#define _APS_NEXT_SYMED_VALUE 101
+#endif
+#endif
diff --git a/db/examples_cxx/wce_tpcb/wce_tpcb.ico b/db/examples_cxx/wce_tpcb/wce_tpcb.ico
new file mode 100644
index 000000000..83b30142e
--- /dev/null
+++ b/db/examples_cxx/wce_tpcb/wce_tpcb.ico
Binary files differ
diff --git a/db/examples_cxx/wce_tpcb/wce_tpcb.rc b/db/examples_cxx/wce_tpcb/wce_tpcb.rc
new file mode 100644
index 000000000..3bd957c69
--- /dev/null
+++ b/db/examples_cxx/wce_tpcb/wce_tpcb.rc
@@ -0,0 +1,176 @@
+//Microsoft eMbedded Visual C++ generated resource script.
+//
+#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include "newres.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// English (U.S.) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+#pragma code_page(1252)
+#endif //_WIN32
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Icon
+//
+
+// Icon with lowest ID value placed first to ensure application icon
+// remains consistent on all systems.
+IDI_WCE_TPCB ICON DISCARDABLE "wce_tpcb.ICO"
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "resource.h\0"
+END
+
+2 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "#include ""newres.h""\r\n"
+ "\0"
+END
+
+3 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "\r\n"
+ "\0"
+END
+
+#endif // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+IDD_MAINDIALOG DIALOG DISCARDABLE 0, 0, 138, 182
+STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
+CAPTION "Berkeley DB TPCB"
+FONT 8, "System"
+BEGIN
+ PUSHBUTTON "Initialize",IDC_INIT_BUTTON,8,77,50,14
+ PUSHBUTTON "Advanced...",IDC_ADV_BUTTON,78,76,50,14
+ PUSHBUTTON "Run...",IDC_RUN_BUTTON,77,94,50,14
+ CONTROL "Medium",IDC_MEDIUM_RADIO,"Button",BS_AUTORADIOBUTTON,51,
+ 45,40,10
+ CONTROL "Large",IDC_LARGE_RADIO,"Button",BS_AUTORADIOBUTTON,95,
+ 45,32,10
+ CONTROL "Small",IDC_SMALL_RADIO,"Button",BS_AUTORADIOBUTTON,14,
+ 45,32,10
+ LTEXT "Home Dir:",IDC_STATIC,7,62,32,8
+ EDITTEXT IDC_HOME_EDIT,39,59,89,14,ES_AUTOHSCROLL
+ GROUPBOX "Benchmark data volume",IDC_STATIC,7,35,123,22
+ LTEXT "# txns:",IDC_STATIC,8,96,25,8
+ EDITTEXT IDC_TXN_EDIT,33,94,40,14,ES_AUTOHSCROLL
+ GROUPBOX "",IDC_STATIC,7,88,123,23
+ PUSHBUTTON "Exit",IDC_EXIT_BUTTON,43,115,50,14
+ CONTROL 113,IDC_STATIC,"Static",SS_BITMAP,40,7,15,13
+END
+
+IDD_ADVANCEDDIALOG DIALOG DISCARDABLE 0, 0, 147, 162
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Advanced options"
+FONT 8, "System"
+BEGIN
+ CONTROL "Disable fast mode",IDC_FASTMODE_CHECK,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,7,14,73,10
+ CONTROL "Enable verbose mode",IDC_VERBOSE_CHECK,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,7,27,85,10
+ LTEXT "Random seed:",IDC_RANDOM_STATIC,7,44,47,8
+ EDITTEXT IDC_RANDOM_EDIT,59,42,40,14,ES_AUTOHSCROLL
+ LTEXT "Cache size (kb):",IDC_CACHE_STATIC,7,67,52,8
+ EDITTEXT IDC_CACHE_EDIT,59,64,40,14,ES_AUTOHSCROLL
+ PUSHBUTTON "Done",IDC_DONE_BUTTON,7,90,50,14
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// DESIGNINFO
+//
+
+#ifdef APSTUDIO_INVOKED
+GUIDELINES DESIGNINFO DISCARDABLE
+BEGIN
+ IDD_MAINDIALOG, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 130
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 175
+ END
+
+ IDD_ADVANCEDDIALOG, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 140
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 155
+ END
+END
+#endif // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Accelerator
+//
+
+IDC_WCE_TPCB ACCELERATORS DISCARDABLE
+BEGIN
+ "/", IDM_HELP_ABOUT, ASCII, ALT, NOINVERT
+ VK_F4, IDM_FILE_EXIT, VIRTKEY, ALT, NOINVERT
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Bitmap
+//
+
+IDB_ORACLE_BITMAP BITMAP DISCARDABLE "oracle_bdb.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ IDS_APP_TITLE "wce_tpcb"
+ IDC_WCE_TPCB "WCE_TPCB"
+END
+
+#endif // English (U.S.) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif // not APSTUDIO_INVOKED
+
diff --git a/db/examples_java/src/collections/access/AccessExample.java b/db/examples_java/src/collections/access/AccessExample.java
index c79d6340e..6fff75b7e 100644
--- a/db/examples_java/src/collections/access/AccessExample.java
+++ b/db/examples_java/src/collections/access/AccessExample.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: AccessExample.java,v 12.4 2006/08/24 14:45:51 bostic Exp $
+ * $Id: AccessExample.java,v 12.6 2007/05/17 15:15:32 bostic Exp $
*/
package collections.access;
diff --git a/db/examples_java/src/collections/hello/HelloDatabaseWorld.java b/db/examples_java/src/collections/hello/HelloDatabaseWorld.java
index ff35a570c..6cca00dbf 100644
--- a/db/examples_java/src/collections/hello/HelloDatabaseWorld.java
+++ b/db/examples_java/src/collections/hello/HelloDatabaseWorld.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: HelloDatabaseWorld.java,v 12.4 2006/08/24 14:45:51 bostic Exp $
+ * $Id: HelloDatabaseWorld.java,v 12.6 2007/05/17 15:15:32 bostic Exp $
*/
package collections.hello;
diff --git a/db/examples_java/src/collections/ship/basic/PartData.java b/db/examples_java/src/collections/ship/basic/PartData.java
index 8bbcf1436..526cf991c 100644
--- a/db/examples_java/src/collections/ship/basic/PartData.java
+++ b/db/examples_java/src/collections/ship/basic/PartData.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: PartData.java,v 12.4 2006/08/24 14:45:52 bostic Exp $
+ * $Id: PartData.java,v 12.6 2007/05/17 15:15:33 bostic Exp $
*/
package collections.ship.basic;
diff --git a/db/examples_java/src/collections/ship/basic/PartKey.java b/db/examples_java/src/collections/ship/basic/PartKey.java
index 745789a19..22580f907 100644
--- a/db/examples_java/src/collections/ship/basic/PartKey.java
+++ b/db/examples_java/src/collections/ship/basic/PartKey.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: PartKey.java,v 12.4 2006/08/24 14:45:52 bostic Exp $
+ * $Id: PartKey.java,v 12.6 2007/05/17 15:15:33 bostic Exp $
*/
package collections.ship.basic;
diff --git a/db/examples_java/src/collections/ship/basic/Sample.java b/db/examples_java/src/collections/ship/basic/Sample.java
index d98235a6b..c64a72991 100644
--- a/db/examples_java/src/collections/ship/basic/Sample.java
+++ b/db/examples_java/src/collections/ship/basic/Sample.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: Sample.java,v 12.4 2006/08/24 14:45:53 bostic Exp $
+ * $Id: Sample.java,v 12.6 2007/05/17 15:15:33 bostic Exp $
*/
package collections.ship.basic;
diff --git a/db/examples_java/src/collections/ship/basic/SampleDatabase.java b/db/examples_java/src/collections/ship/basic/SampleDatabase.java
index 61ca83c54..84310abb1 100644
--- a/db/examples_java/src/collections/ship/basic/SampleDatabase.java
+++ b/db/examples_java/src/collections/ship/basic/SampleDatabase.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: SampleDatabase.java,v 12.4 2006/08/24 14:45:53 bostic Exp $
+ * $Id: SampleDatabase.java,v 12.6 2007/05/17 15:15:33 bostic Exp $
*/
package collections.ship.basic;
diff --git a/db/examples_java/src/collections/ship/basic/SampleViews.java b/db/examples_java/src/collections/ship/basic/SampleViews.java
index 14065a714..af9a002b2 100644
--- a/db/examples_java/src/collections/ship/basic/SampleViews.java
+++ b/db/examples_java/src/collections/ship/basic/SampleViews.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: SampleViews.java,v 12.4 2006/08/24 14:45:53 bostic Exp $
+ * $Id: SampleViews.java,v 12.6 2007/05/17 15:15:33 bostic Exp $
*/
package collections.ship.basic;
diff --git a/db/examples_java/src/collections/ship/basic/ShipmentData.java b/db/examples_java/src/collections/ship/basic/ShipmentData.java
index 3c596dfb9..a508f89fa 100644
--- a/db/examples_java/src/collections/ship/basic/ShipmentData.java
+++ b/db/examples_java/src/collections/ship/basic/ShipmentData.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: ShipmentData.java,v 12.4 2006/08/24 14:45:53 bostic Exp $
+ * $Id: ShipmentData.java,v 12.6 2007/05/17 15:15:33 bostic Exp $
*/
package collections.ship.basic;
diff --git a/db/examples_java/src/collections/ship/basic/ShipmentKey.java b/db/examples_java/src/collections/ship/basic/ShipmentKey.java
index c34fa067f..6f2ea5c15 100644
--- a/db/examples_java/src/collections/ship/basic/ShipmentKey.java
+++ b/db/examples_java/src/collections/ship/basic/ShipmentKey.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: ShipmentKey.java,v 12.4 2006/08/24 14:45:53 bostic Exp $
+ * $Id: ShipmentKey.java,v 12.6 2007/05/17 15:15:33 bostic Exp $
*/
package collections.ship.basic;
diff --git a/db/examples_java/src/collections/ship/basic/SupplierData.java b/db/examples_java/src/collections/ship/basic/SupplierData.java
index 7f0e80112..4891a1037 100644
--- a/db/examples_java/src/collections/ship/basic/SupplierData.java
+++ b/db/examples_java/src/collections/ship/basic/SupplierData.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: SupplierData.java,v 12.4 2006/08/24 14:45:53 bostic Exp $
+ * $Id: SupplierData.java,v 12.6 2007/05/17 15:15:33 bostic Exp $
*/
package collections.ship.basic;
diff --git a/db/examples_java/src/collections/ship/basic/SupplierKey.java b/db/examples_java/src/collections/ship/basic/SupplierKey.java
index f08f96195..bb1bb086f 100644
--- a/db/examples_java/src/collections/ship/basic/SupplierKey.java
+++ b/db/examples_java/src/collections/ship/basic/SupplierKey.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: SupplierKey.java,v 12.4 2006/08/24 14:45:53 bostic Exp $
+ * $Id: SupplierKey.java,v 12.6 2007/05/17 15:15:33 bostic Exp $
*/
package collections.ship.basic;
diff --git a/db/examples_java/src/collections/ship/basic/Weight.java b/db/examples_java/src/collections/ship/basic/Weight.java
index 9862d9d9e..07569ed77 100644
--- a/db/examples_java/src/collections/ship/basic/Weight.java
+++ b/db/examples_java/src/collections/ship/basic/Weight.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: Weight.java,v 12.4 2006/08/24 14:45:53 bostic Exp $
+ * $Id: Weight.java,v 12.6 2007/05/17 15:15:33 bostic Exp $
*/
package collections.ship.basic;
diff --git a/db/examples_java/src/collections/ship/entity/Part.java b/db/examples_java/src/collections/ship/entity/Part.java
index 5e95cd48f..589a25405 100644
--- a/db/examples_java/src/collections/ship/entity/Part.java
+++ b/db/examples_java/src/collections/ship/entity/Part.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: Part.java,v 12.4 2006/08/24 14:45:54 bostic Exp $
+ * $Id: Part.java,v 12.6 2007/05/17 15:15:33 bostic Exp $
*/
package collections.ship.entity;
diff --git a/db/examples_java/src/collections/ship/entity/PartData.java b/db/examples_java/src/collections/ship/entity/PartData.java
index dbd70ab96..f927ba861 100644
--- a/db/examples_java/src/collections/ship/entity/PartData.java
+++ b/db/examples_java/src/collections/ship/entity/PartData.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: PartData.java,v 12.4 2006/08/24 14:45:54 bostic Exp $
+ * $Id: PartData.java,v 12.6 2007/05/17 15:15:33 bostic Exp $
*/
package collections.ship.entity;
diff --git a/db/examples_java/src/collections/ship/entity/PartKey.java b/db/examples_java/src/collections/ship/entity/PartKey.java
index bfe702f08..a5137aadb 100644
--- a/db/examples_java/src/collections/ship/entity/PartKey.java
+++ b/db/examples_java/src/collections/ship/entity/PartKey.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: PartKey.java,v 12.4 2006/08/24 14:45:54 bostic Exp $
+ * $Id: PartKey.java,v 12.6 2007/05/17 15:15:33 bostic Exp $
*/
package collections.ship.entity;
diff --git a/db/examples_java/src/collections/ship/entity/Sample.java b/db/examples_java/src/collections/ship/entity/Sample.java
index b041cf7c4..98b6207a9 100644
--- a/db/examples_java/src/collections/ship/entity/Sample.java
+++ b/db/examples_java/src/collections/ship/entity/Sample.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: Sample.java,v 12.4 2006/08/24 14:45:55 bostic Exp $
+ * $Id: Sample.java,v 12.6 2007/05/17 15:15:33 bostic Exp $
*/
package collections.ship.entity;
diff --git a/db/examples_java/src/collections/ship/entity/SampleDatabase.java b/db/examples_java/src/collections/ship/entity/SampleDatabase.java
index fa643929b..cbfbf75b5 100644
--- a/db/examples_java/src/collections/ship/entity/SampleDatabase.java
+++ b/db/examples_java/src/collections/ship/entity/SampleDatabase.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: SampleDatabase.java,v 12.4 2006/08/24 14:45:55 bostic Exp $
+ * $Id: SampleDatabase.java,v 12.6 2007/05/17 15:15:33 bostic Exp $
*/
package collections.ship.entity;
diff --git a/db/examples_java/src/collections/ship/entity/SampleViews.java b/db/examples_java/src/collections/ship/entity/SampleViews.java
index a091d4a9d..31ff5befc 100644
--- a/db/examples_java/src/collections/ship/entity/SampleViews.java
+++ b/db/examples_java/src/collections/ship/entity/SampleViews.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: SampleViews.java,v 12.4 2006/08/24 14:45:55 bostic Exp $
+ * $Id: SampleViews.java,v 12.6 2007/05/17 15:15:33 bostic Exp $
*/
package collections.ship.entity;
diff --git a/db/examples_java/src/collections/ship/entity/Shipment.java b/db/examples_java/src/collections/ship/entity/Shipment.java
index 10ada4f31..45ad8acf3 100644
--- a/db/examples_java/src/collections/ship/entity/Shipment.java
+++ b/db/examples_java/src/collections/ship/entity/Shipment.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: Shipment.java,v 12.4 2006/08/24 14:45:55 bostic Exp $
+ * $Id: Shipment.java,v 12.6 2007/05/17 15:15:33 bostic Exp $
*/
package collections.ship.entity;
diff --git a/db/examples_java/src/collections/ship/entity/ShipmentData.java b/db/examples_java/src/collections/ship/entity/ShipmentData.java
index f70cc7534..72fbcc628 100644
--- a/db/examples_java/src/collections/ship/entity/ShipmentData.java
+++ b/db/examples_java/src/collections/ship/entity/ShipmentData.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: ShipmentData.java,v 12.4 2006/08/24 14:45:55 bostic Exp $
+ * $Id: ShipmentData.java,v 12.6 2007/05/17 15:15:33 bostic Exp $
*/
package collections.ship.entity;
diff --git a/db/examples_java/src/collections/ship/entity/ShipmentKey.java b/db/examples_java/src/collections/ship/entity/ShipmentKey.java
index 021a98a15..fd7bea45e 100644
--- a/db/examples_java/src/collections/ship/entity/ShipmentKey.java
+++ b/db/examples_java/src/collections/ship/entity/ShipmentKey.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: ShipmentKey.java,v 12.4 2006/08/24 14:45:55 bostic Exp $
+ * $Id: ShipmentKey.java,v 12.6 2007/05/17 15:15:33 bostic Exp $
*/
package collections.ship.entity;
diff --git a/db/examples_java/src/collections/ship/entity/Supplier.java b/db/examples_java/src/collections/ship/entity/Supplier.java
index 167d7f6df..0a17ea583 100644
--- a/db/examples_java/src/collections/ship/entity/Supplier.java
+++ b/db/examples_java/src/collections/ship/entity/Supplier.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: Supplier.java,v 12.4 2006/08/24 14:45:55 bostic Exp $
+ * $Id: Supplier.java,v 12.6 2007/05/17 15:15:33 bostic Exp $
*/
package collections.ship.entity;
diff --git a/db/examples_java/src/collections/ship/entity/SupplierData.java b/db/examples_java/src/collections/ship/entity/SupplierData.java
index 3397f918d..672cfdc17 100644
--- a/db/examples_java/src/collections/ship/entity/SupplierData.java
+++ b/db/examples_java/src/collections/ship/entity/SupplierData.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: SupplierData.java,v 12.4 2006/08/24 14:45:55 bostic Exp $
+ * $Id: SupplierData.java,v 12.6 2007/05/17 15:15:33 bostic Exp $
*/
package collections.ship.entity;
diff --git a/db/examples_java/src/collections/ship/entity/SupplierKey.java b/db/examples_java/src/collections/ship/entity/SupplierKey.java
index d60c7a1c4..fb7ec940f 100644
--- a/db/examples_java/src/collections/ship/entity/SupplierKey.java
+++ b/db/examples_java/src/collections/ship/entity/SupplierKey.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: SupplierKey.java,v 12.4 2006/08/24 14:45:55 bostic Exp $
+ * $Id: SupplierKey.java,v 12.6 2007/05/17 15:15:33 bostic Exp $
*/
package collections.ship.entity;
diff --git a/db/examples_java/src/collections/ship/entity/Weight.java b/db/examples_java/src/collections/ship/entity/Weight.java
index aa662af04..b4196285c 100644
--- a/db/examples_java/src/collections/ship/entity/Weight.java
+++ b/db/examples_java/src/collections/ship/entity/Weight.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: Weight.java,v 12.4 2006/08/24 14:45:55 bostic Exp $
+ * $Id: Weight.java,v 12.6 2007/05/17 15:15:33 bostic Exp $
*/
package collections.ship.entity;
diff --git a/db/examples_java/src/collections/ship/factory/Part.java b/db/examples_java/src/collections/ship/factory/Part.java
index 87e575837..933416a4c 100644
--- a/db/examples_java/src/collections/ship/factory/Part.java
+++ b/db/examples_java/src/collections/ship/factory/Part.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: Part.java,v 12.4 2006/08/24 14:45:55 bostic Exp $
+ * $Id: Part.java,v 12.6 2007/05/17 15:15:34 bostic Exp $
*/
package collections.ship.factory;
diff --git a/db/examples_java/src/collections/ship/factory/PartKey.java b/db/examples_java/src/collections/ship/factory/PartKey.java
index e3641e115..c4b39c5e1 100644
--- a/db/examples_java/src/collections/ship/factory/PartKey.java
+++ b/db/examples_java/src/collections/ship/factory/PartKey.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: PartKey.java,v 12.4 2006/08/24 14:45:56 bostic Exp $
+ * $Id: PartKey.java,v 12.6 2007/05/17 15:15:34 bostic Exp $
*/
package collections.ship.factory;
diff --git a/db/examples_java/src/collections/ship/factory/Sample.java b/db/examples_java/src/collections/ship/factory/Sample.java
index 49173875b..97f20b56c 100644
--- a/db/examples_java/src/collections/ship/factory/Sample.java
+++ b/db/examples_java/src/collections/ship/factory/Sample.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: Sample.java,v 12.4 2006/08/24 14:45:56 bostic Exp $
+ * $Id: Sample.java,v 12.6 2007/05/17 15:15:34 bostic Exp $
*/
package collections.ship.factory;
diff --git a/db/examples_java/src/collections/ship/factory/SampleDatabase.java b/db/examples_java/src/collections/ship/factory/SampleDatabase.java
index d01920ca8..58a5494d8 100644
--- a/db/examples_java/src/collections/ship/factory/SampleDatabase.java
+++ b/db/examples_java/src/collections/ship/factory/SampleDatabase.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: SampleDatabase.java,v 12.4 2006/08/24 14:45:56 bostic Exp $
+ * $Id: SampleDatabase.java,v 12.6 2007/05/17 15:15:34 bostic Exp $
*/
package collections.ship.factory;
diff --git a/db/examples_java/src/collections/ship/factory/SampleViews.java b/db/examples_java/src/collections/ship/factory/SampleViews.java
index 028b474f6..39264ab5d 100644
--- a/db/examples_java/src/collections/ship/factory/SampleViews.java
+++ b/db/examples_java/src/collections/ship/factory/SampleViews.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: SampleViews.java,v 12.4 2006/08/24 14:45:56 bostic Exp $
+ * $Id: SampleViews.java,v 12.6 2007/05/17 15:15:34 bostic Exp $
*/
package collections.ship.factory;
diff --git a/db/examples_java/src/collections/ship/factory/Shipment.java b/db/examples_java/src/collections/ship/factory/Shipment.java
index e8fb27164..fc4e6533c 100644
--- a/db/examples_java/src/collections/ship/factory/Shipment.java
+++ b/db/examples_java/src/collections/ship/factory/Shipment.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: Shipment.java,v 12.4 2006/08/24 14:45:56 bostic Exp $
+ * $Id: Shipment.java,v 12.6 2007/05/17 15:15:34 bostic Exp $
*/
package collections.ship.factory;
diff --git a/db/examples_java/src/collections/ship/factory/ShipmentKey.java b/db/examples_java/src/collections/ship/factory/ShipmentKey.java
index 19a86cb9d..2bca54e9b 100644
--- a/db/examples_java/src/collections/ship/factory/ShipmentKey.java
+++ b/db/examples_java/src/collections/ship/factory/ShipmentKey.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: ShipmentKey.java,v 12.4 2006/08/24 14:45:56 bostic Exp $
+ * $Id: ShipmentKey.java,v 12.6 2007/05/17 15:15:34 bostic Exp $
*/
package collections.ship.factory;
diff --git a/db/examples_java/src/collections/ship/factory/Supplier.java b/db/examples_java/src/collections/ship/factory/Supplier.java
index ebb1bcadf..cafaa38c5 100644
--- a/db/examples_java/src/collections/ship/factory/Supplier.java
+++ b/db/examples_java/src/collections/ship/factory/Supplier.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: Supplier.java,v 12.4 2006/08/24 14:45:56 bostic Exp $
+ * $Id: Supplier.java,v 12.6 2007/05/17 15:15:34 bostic Exp $
*/
package collections.ship.factory;
diff --git a/db/examples_java/src/collections/ship/factory/SupplierKey.java b/db/examples_java/src/collections/ship/factory/SupplierKey.java
index de35c2549..d76344f18 100644
--- a/db/examples_java/src/collections/ship/factory/SupplierKey.java
+++ b/db/examples_java/src/collections/ship/factory/SupplierKey.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: SupplierKey.java,v 12.4 2006/08/24 14:45:56 bostic Exp $
+ * $Id: SupplierKey.java,v 12.6 2007/05/17 15:15:34 bostic Exp $
*/
package collections.ship.factory;
diff --git a/db/examples_java/src/collections/ship/factory/Weight.java b/db/examples_java/src/collections/ship/factory/Weight.java
index 4d7370443..55417766d 100644
--- a/db/examples_java/src/collections/ship/factory/Weight.java
+++ b/db/examples_java/src/collections/ship/factory/Weight.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: Weight.java,v 12.4 2006/08/24 14:45:56 bostic Exp $
+ * $Id: Weight.java,v 12.6 2007/05/17 15:15:34 bostic Exp $
*/
package collections.ship.factory;
diff --git a/db/examples_java/src/collections/ship/index/PartData.java b/db/examples_java/src/collections/ship/index/PartData.java
index 59bee2640..dd2616953 100644
--- a/db/examples_java/src/collections/ship/index/PartData.java
+++ b/db/examples_java/src/collections/ship/index/PartData.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: PartData.java,v 12.4 2006/08/24 14:45:57 bostic Exp $
+ * $Id: PartData.java,v 12.6 2007/05/17 15:15:34 bostic Exp $
*/
package collections.ship.index;
diff --git a/db/examples_java/src/collections/ship/index/PartKey.java b/db/examples_java/src/collections/ship/index/PartKey.java
index 973f20fe9..fd6b784fe 100644
--- a/db/examples_java/src/collections/ship/index/PartKey.java
+++ b/db/examples_java/src/collections/ship/index/PartKey.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: PartKey.java,v 12.4 2006/08/24 14:45:57 bostic Exp $
+ * $Id: PartKey.java,v 12.6 2007/05/17 15:15:34 bostic Exp $
*/
package collections.ship.index;
diff --git a/db/examples_java/src/collections/ship/index/Sample.java b/db/examples_java/src/collections/ship/index/Sample.java
index feb0513ae..3e145e746 100644
--- a/db/examples_java/src/collections/ship/index/Sample.java
+++ b/db/examples_java/src/collections/ship/index/Sample.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: Sample.java,v 12.4 2006/08/24 14:45:57 bostic Exp $
+ * $Id: Sample.java,v 12.6 2007/05/17 15:15:34 bostic Exp $
*/
package collections.ship.index;
diff --git a/db/examples_java/src/collections/ship/index/SampleDatabase.java b/db/examples_java/src/collections/ship/index/SampleDatabase.java
index 3b77dddc2..c03f3b1e1 100644
--- a/db/examples_java/src/collections/ship/index/SampleDatabase.java
+++ b/db/examples_java/src/collections/ship/index/SampleDatabase.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: SampleDatabase.java,v 12.4 2006/08/24 14:45:57 bostic Exp $
+ * $Id: SampleDatabase.java,v 12.6 2007/05/17 15:15:34 bostic Exp $
*/
package collections.ship.index;
diff --git a/db/examples_java/src/collections/ship/index/SampleViews.java b/db/examples_java/src/collections/ship/index/SampleViews.java
index 1d48ab183..8ed81b685 100644
--- a/db/examples_java/src/collections/ship/index/SampleViews.java
+++ b/db/examples_java/src/collections/ship/index/SampleViews.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: SampleViews.java,v 12.4 2006/08/24 14:45:57 bostic Exp $
+ * $Id: SampleViews.java,v 12.6 2007/05/17 15:15:34 bostic Exp $
*/
package collections.ship.index;
diff --git a/db/examples_java/src/collections/ship/index/ShipmentData.java b/db/examples_java/src/collections/ship/index/ShipmentData.java
index 8f43933de..0dc59a83d 100644
--- a/db/examples_java/src/collections/ship/index/ShipmentData.java
+++ b/db/examples_java/src/collections/ship/index/ShipmentData.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: ShipmentData.java,v 12.4 2006/08/24 14:45:57 bostic Exp $
+ * $Id: ShipmentData.java,v 12.6 2007/05/17 15:15:34 bostic Exp $
*/
package collections.ship.index;
diff --git a/db/examples_java/src/collections/ship/index/ShipmentKey.java b/db/examples_java/src/collections/ship/index/ShipmentKey.java
index bdcbd85e2..022ae177c 100644
--- a/db/examples_java/src/collections/ship/index/ShipmentKey.java
+++ b/db/examples_java/src/collections/ship/index/ShipmentKey.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: ShipmentKey.java,v 12.4 2006/08/24 14:45:57 bostic Exp $
+ * $Id: ShipmentKey.java,v 12.6 2007/05/17 15:15:34 bostic Exp $
*/
package collections.ship.index;
diff --git a/db/examples_java/src/collections/ship/index/SupplierData.java b/db/examples_java/src/collections/ship/index/SupplierData.java
index fd7264316..1dac33fba 100644
--- a/db/examples_java/src/collections/ship/index/SupplierData.java
+++ b/db/examples_java/src/collections/ship/index/SupplierData.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: SupplierData.java,v 12.4 2006/08/24 14:45:57 bostic Exp $
+ * $Id: SupplierData.java,v 12.6 2007/05/17 15:15:34 bostic Exp $
*/
package collections.ship.index;
diff --git a/db/examples_java/src/collections/ship/index/SupplierKey.java b/db/examples_java/src/collections/ship/index/SupplierKey.java
index dcd2b4fec..7e17d2295 100644
--- a/db/examples_java/src/collections/ship/index/SupplierKey.java
+++ b/db/examples_java/src/collections/ship/index/SupplierKey.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: SupplierKey.java,v 12.4 2006/08/24 14:45:58 bostic Exp $
+ * $Id: SupplierKey.java,v 12.6 2007/05/17 15:15:34 bostic Exp $
*/
package collections.ship.index;
diff --git a/db/examples_java/src/collections/ship/index/Weight.java b/db/examples_java/src/collections/ship/index/Weight.java
index 16d629218..8f9eda2f6 100644
--- a/db/examples_java/src/collections/ship/index/Weight.java
+++ b/db/examples_java/src/collections/ship/index/Weight.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: Weight.java,v 12.4 2006/08/24 14:45:58 bostic Exp $
+ * $Id: Weight.java,v 12.6 2007/05/17 15:15:34 bostic Exp $
*/
package collections.ship.index;
diff --git a/db/examples_java/src/collections/ship/marshal/MarshalledEnt.java b/db/examples_java/src/collections/ship/marshal/MarshalledEnt.java
index d750f7ea6..599a9b031 100644
--- a/db/examples_java/src/collections/ship/marshal/MarshalledEnt.java
+++ b/db/examples_java/src/collections/ship/marshal/MarshalledEnt.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: MarshalledEnt.java,v 12.4 2006/08/24 14:45:58 bostic Exp $
+ * $Id: MarshalledEnt.java,v 12.6 2007/05/17 15:15:35 bostic Exp $
*/
package collections.ship.marshal;
diff --git a/db/examples_java/src/collections/ship/marshal/MarshalledKey.java b/db/examples_java/src/collections/ship/marshal/MarshalledKey.java
index b3d4e5302..143445b02 100644
--- a/db/examples_java/src/collections/ship/marshal/MarshalledKey.java
+++ b/db/examples_java/src/collections/ship/marshal/MarshalledKey.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: MarshalledKey.java,v 12.4 2006/08/24 14:45:58 bostic Exp $
+ * $Id: MarshalledKey.java,v 12.6 2007/05/17 15:15:35 bostic Exp $
*/
package collections.ship.marshal;
diff --git a/db/examples_java/src/collections/ship/marshal/Part.java b/db/examples_java/src/collections/ship/marshal/Part.java
index 2de3311de..a48a841ab 100644
--- a/db/examples_java/src/collections/ship/marshal/Part.java
+++ b/db/examples_java/src/collections/ship/marshal/Part.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: Part.java,v 12.4 2006/08/24 14:45:58 bostic Exp $
+ * $Id: Part.java,v 12.6 2007/05/17 15:15:35 bostic Exp $
*/
package collections.ship.marshal;
diff --git a/db/examples_java/src/collections/ship/marshal/PartKey.java b/db/examples_java/src/collections/ship/marshal/PartKey.java
index 7d0d62d4d..0abca9640 100644
--- a/db/examples_java/src/collections/ship/marshal/PartKey.java
+++ b/db/examples_java/src/collections/ship/marshal/PartKey.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: PartKey.java,v 12.4 2006/08/24 14:45:58 bostic Exp $
+ * $Id: PartKey.java,v 12.6 2007/05/17 15:15:35 bostic Exp $
*/
package collections.ship.marshal;
diff --git a/db/examples_java/src/collections/ship/marshal/Sample.java b/db/examples_java/src/collections/ship/marshal/Sample.java
index b6b5663d1..8377606a8 100644
--- a/db/examples_java/src/collections/ship/marshal/Sample.java
+++ b/db/examples_java/src/collections/ship/marshal/Sample.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: Sample.java,v 12.4 2006/08/24 14:45:58 bostic Exp $
+ * $Id: Sample.java,v 12.6 2007/05/17 15:15:35 bostic Exp $
*/
package collections.ship.marshal;
diff --git a/db/examples_java/src/collections/ship/marshal/SampleDatabase.java b/db/examples_java/src/collections/ship/marshal/SampleDatabase.java
index e902f38fa..fa1b7a463 100644
--- a/db/examples_java/src/collections/ship/marshal/SampleDatabase.java
+++ b/db/examples_java/src/collections/ship/marshal/SampleDatabase.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: SampleDatabase.java,v 12.4 2006/08/24 14:45:58 bostic Exp $
+ * $Id: SampleDatabase.java,v 12.6 2007/05/17 15:15:35 bostic Exp $
*/
package collections.ship.marshal;
diff --git a/db/examples_java/src/collections/ship/marshal/SampleViews.java b/db/examples_java/src/collections/ship/marshal/SampleViews.java
index 7424e5d45..1a0fad76d 100644
--- a/db/examples_java/src/collections/ship/marshal/SampleViews.java
+++ b/db/examples_java/src/collections/ship/marshal/SampleViews.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: SampleViews.java,v 12.4 2006/08/24 14:45:58 bostic Exp $
+ * $Id: SampleViews.java,v 12.6 2007/05/17 15:15:35 bostic Exp $
*/
package collections.ship.marshal;
diff --git a/db/examples_java/src/collections/ship/marshal/Shipment.java b/db/examples_java/src/collections/ship/marshal/Shipment.java
index 0863a510e..ed7ad26b2 100644
--- a/db/examples_java/src/collections/ship/marshal/Shipment.java
+++ b/db/examples_java/src/collections/ship/marshal/Shipment.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: Shipment.java,v 12.4 2006/08/24 14:45:58 bostic Exp $
+ * $Id: Shipment.java,v 12.6 2007/05/17 15:15:35 bostic Exp $
*/
package collections.ship.marshal;
diff --git a/db/examples_java/src/collections/ship/marshal/ShipmentKey.java b/db/examples_java/src/collections/ship/marshal/ShipmentKey.java
index 6f2f829e1..b5ea871be 100644
--- a/db/examples_java/src/collections/ship/marshal/ShipmentKey.java
+++ b/db/examples_java/src/collections/ship/marshal/ShipmentKey.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: ShipmentKey.java,v 12.4 2006/08/24 14:45:58 bostic Exp $
+ * $Id: ShipmentKey.java,v 12.6 2007/05/17 15:15:35 bostic Exp $
*/
package collections.ship.marshal;
diff --git a/db/examples_java/src/collections/ship/marshal/Supplier.java b/db/examples_java/src/collections/ship/marshal/Supplier.java
index fc9ca3709..6c7eeb08c 100644
--- a/db/examples_java/src/collections/ship/marshal/Supplier.java
+++ b/db/examples_java/src/collections/ship/marshal/Supplier.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: Supplier.java,v 12.4 2006/08/24 14:45:58 bostic Exp $
+ * $Id: Supplier.java,v 12.6 2007/05/17 15:15:35 bostic Exp $
*/
package collections.ship.marshal;
diff --git a/db/examples_java/src/collections/ship/marshal/SupplierKey.java b/db/examples_java/src/collections/ship/marshal/SupplierKey.java
index 4aaed3379..b002442a4 100644
--- a/db/examples_java/src/collections/ship/marshal/SupplierKey.java
+++ b/db/examples_java/src/collections/ship/marshal/SupplierKey.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: SupplierKey.java,v 12.4 2006/08/24 14:45:58 bostic Exp $
+ * $Id: SupplierKey.java,v 12.6 2007/05/17 15:15:35 bostic Exp $
*/
package collections.ship.marshal;
diff --git a/db/examples_java/src/collections/ship/marshal/Weight.java b/db/examples_java/src/collections/ship/marshal/Weight.java
index 9ca19886b..454d2ac11 100644
--- a/db/examples_java/src/collections/ship/marshal/Weight.java
+++ b/db/examples_java/src/collections/ship/marshal/Weight.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: Weight.java,v 12.4 2006/08/24 14:45:59 bostic Exp $
+ * $Id: Weight.java,v 12.6 2007/05/17 15:15:35 bostic Exp $
*/
package collections.ship.marshal;
diff --git a/db/examples_java/src/collections/ship/sentity/Part.java b/db/examples_java/src/collections/ship/sentity/Part.java
index 3e2b48f43..827a602a0 100644
--- a/db/examples_java/src/collections/ship/sentity/Part.java
+++ b/db/examples_java/src/collections/ship/sentity/Part.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: Part.java,v 12.4 2006/08/24 14:45:59 bostic Exp $
+ * $Id: Part.java,v 12.6 2007/05/17 15:15:35 bostic Exp $
*/
package collections.ship.sentity;
diff --git a/db/examples_java/src/collections/ship/sentity/PartKey.java b/db/examples_java/src/collections/ship/sentity/PartKey.java
index 70caa83c6..2f78e7de6 100644
--- a/db/examples_java/src/collections/ship/sentity/PartKey.java
+++ b/db/examples_java/src/collections/ship/sentity/PartKey.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: PartKey.java,v 12.4 2006/08/24 14:45:59 bostic Exp $
+ * $Id: PartKey.java,v 12.6 2007/05/17 15:15:35 bostic Exp $
*/
package collections.ship.sentity;
diff --git a/db/examples_java/src/collections/ship/sentity/Sample.java b/db/examples_java/src/collections/ship/sentity/Sample.java
index 56cca90c3..d18e6733d 100644
--- a/db/examples_java/src/collections/ship/sentity/Sample.java
+++ b/db/examples_java/src/collections/ship/sentity/Sample.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: Sample.java,v 12.4 2006/08/24 14:45:59 bostic Exp $
+ * $Id: Sample.java,v 12.6 2007/05/17 15:15:35 bostic Exp $
*/
package collections.ship.sentity;
diff --git a/db/examples_java/src/collections/ship/sentity/SampleDatabase.java b/db/examples_java/src/collections/ship/sentity/SampleDatabase.java
index e30b85523..e92a4cb30 100644
--- a/db/examples_java/src/collections/ship/sentity/SampleDatabase.java
+++ b/db/examples_java/src/collections/ship/sentity/SampleDatabase.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: SampleDatabase.java,v 12.4 2006/08/24 14:45:59 bostic Exp $
+ * $Id: SampleDatabase.java,v 12.6 2007/05/17 15:15:35 bostic Exp $
*/
package collections.ship.sentity;
diff --git a/db/examples_java/src/collections/ship/sentity/SampleViews.java b/db/examples_java/src/collections/ship/sentity/SampleViews.java
index a322951f9..d9d7e9ba9 100644
--- a/db/examples_java/src/collections/ship/sentity/SampleViews.java
+++ b/db/examples_java/src/collections/ship/sentity/SampleViews.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: SampleViews.java,v 12.4 2006/08/24 14:45:59 bostic Exp $
+ * $Id: SampleViews.java,v 12.6 2007/05/17 15:15:35 bostic Exp $
*/
package collections.ship.sentity;
diff --git a/db/examples_java/src/collections/ship/sentity/Shipment.java b/db/examples_java/src/collections/ship/sentity/Shipment.java
index 914f0d479..a9853165a 100644
--- a/db/examples_java/src/collections/ship/sentity/Shipment.java
+++ b/db/examples_java/src/collections/ship/sentity/Shipment.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: Shipment.java,v 12.4 2006/08/24 14:45:59 bostic Exp $
+ * $Id: Shipment.java,v 12.6 2007/05/17 15:15:35 bostic Exp $
*/
package collections.ship.sentity;
diff --git a/db/examples_java/src/collections/ship/sentity/ShipmentKey.java b/db/examples_java/src/collections/ship/sentity/ShipmentKey.java
index f03e82e6c..9cdc0cc54 100644
--- a/db/examples_java/src/collections/ship/sentity/ShipmentKey.java
+++ b/db/examples_java/src/collections/ship/sentity/ShipmentKey.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: ShipmentKey.java,v 12.4 2006/08/24 14:45:59 bostic Exp $
+ * $Id: ShipmentKey.java,v 12.6 2007/05/17 15:15:35 bostic Exp $
*/
package collections.ship.sentity;
diff --git a/db/examples_java/src/collections/ship/sentity/Supplier.java b/db/examples_java/src/collections/ship/sentity/Supplier.java
index f6f033b3c..0a868cf8d 100644
--- a/db/examples_java/src/collections/ship/sentity/Supplier.java
+++ b/db/examples_java/src/collections/ship/sentity/Supplier.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: Supplier.java,v 12.4 2006/08/24 14:45:59 bostic Exp $
+ * $Id: Supplier.java,v 12.6 2007/05/17 15:15:35 bostic Exp $
*/
package collections.ship.sentity;
diff --git a/db/examples_java/src/collections/ship/sentity/SupplierKey.java b/db/examples_java/src/collections/ship/sentity/SupplierKey.java
index ac9478a7c..b21dca84b 100644
--- a/db/examples_java/src/collections/ship/sentity/SupplierKey.java
+++ b/db/examples_java/src/collections/ship/sentity/SupplierKey.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: SupplierKey.java,v 12.4 2006/08/24 14:46:00 bostic Exp $
+ * $Id: SupplierKey.java,v 12.6 2007/05/17 15:15:35 bostic Exp $
*/
package collections.ship.sentity;
diff --git a/db/examples_java/src/collections/ship/sentity/Weight.java b/db/examples_java/src/collections/ship/sentity/Weight.java
index 0d045d6e6..04db4160b 100644
--- a/db/examples_java/src/collections/ship/sentity/Weight.java
+++ b/db/examples_java/src/collections/ship/sentity/Weight.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: Weight.java,v 12.4 2006/08/24 14:46:00 bostic Exp $
+ * $Id: Weight.java,v 12.6 2007/05/17 15:15:35 bostic Exp $
*/
package collections.ship.sentity;
diff --git a/db/examples_java/src/collections/ship/tuple/Part.java b/db/examples_java/src/collections/ship/tuple/Part.java
index 644902e6a..0c3965a4f 100644
--- a/db/examples_java/src/collections/ship/tuple/Part.java
+++ b/db/examples_java/src/collections/ship/tuple/Part.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: Part.java,v 12.4 2006/08/24 14:46:00 bostic Exp $
+ * $Id: Part.java,v 12.6 2007/05/17 15:15:36 bostic Exp $
*/
package collections.ship.tuple;
diff --git a/db/examples_java/src/collections/ship/tuple/PartData.java b/db/examples_java/src/collections/ship/tuple/PartData.java
index 797d06c2b..69c962ff4 100644
--- a/db/examples_java/src/collections/ship/tuple/PartData.java
+++ b/db/examples_java/src/collections/ship/tuple/PartData.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: PartData.java,v 12.4 2006/08/24 14:46:00 bostic Exp $
+ * $Id: PartData.java,v 12.6 2007/05/17 15:15:36 bostic Exp $
*/
package collections.ship.tuple;
diff --git a/db/examples_java/src/collections/ship/tuple/PartKey.java b/db/examples_java/src/collections/ship/tuple/PartKey.java
index 8cb5612ef..8446efd18 100644
--- a/db/examples_java/src/collections/ship/tuple/PartKey.java
+++ b/db/examples_java/src/collections/ship/tuple/PartKey.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: PartKey.java,v 12.4 2006/08/24 14:46:00 bostic Exp $
+ * $Id: PartKey.java,v 12.6 2007/05/17 15:15:36 bostic Exp $
*/
package collections.ship.tuple;
diff --git a/db/examples_java/src/collections/ship/tuple/Sample.java b/db/examples_java/src/collections/ship/tuple/Sample.java
index 9770c6285..819f567b7 100644
--- a/db/examples_java/src/collections/ship/tuple/Sample.java
+++ b/db/examples_java/src/collections/ship/tuple/Sample.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: Sample.java,v 12.4 2006/08/24 14:46:00 bostic Exp $
+ * $Id: Sample.java,v 12.6 2007/05/17 15:15:36 bostic Exp $
*/
package collections.ship.tuple;
diff --git a/db/examples_java/src/collections/ship/tuple/SampleDatabase.java b/db/examples_java/src/collections/ship/tuple/SampleDatabase.java
index dfbba0de7..49a0c227d 100644
--- a/db/examples_java/src/collections/ship/tuple/SampleDatabase.java
+++ b/db/examples_java/src/collections/ship/tuple/SampleDatabase.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: SampleDatabase.java,v 12.4 2006/08/24 14:46:00 bostic Exp $
+ * $Id: SampleDatabase.java,v 12.6 2007/05/17 15:15:36 bostic Exp $
*/
package collections.ship.tuple;
diff --git a/db/examples_java/src/collections/ship/tuple/SampleViews.java b/db/examples_java/src/collections/ship/tuple/SampleViews.java
index 9429f08bd..e9eefd8fb 100644
--- a/db/examples_java/src/collections/ship/tuple/SampleViews.java
+++ b/db/examples_java/src/collections/ship/tuple/SampleViews.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: SampleViews.java,v 12.4 2006/08/24 14:46:00 bostic Exp $
+ * $Id: SampleViews.java,v 12.6 2007/05/17 15:15:36 bostic Exp $
*/
package collections.ship.tuple;
diff --git a/db/examples_java/src/collections/ship/tuple/Shipment.java b/db/examples_java/src/collections/ship/tuple/Shipment.java
index 60f086b3a..be8f49e8a 100644
--- a/db/examples_java/src/collections/ship/tuple/Shipment.java
+++ b/db/examples_java/src/collections/ship/tuple/Shipment.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: Shipment.java,v 12.4 2006/08/24 14:46:00 bostic Exp $
+ * $Id: Shipment.java,v 12.6 2007/05/17 15:15:36 bostic Exp $
*/
package collections.ship.tuple;
diff --git a/db/examples_java/src/collections/ship/tuple/ShipmentData.java b/db/examples_java/src/collections/ship/tuple/ShipmentData.java
index e40fac898..b3f137aa4 100644
--- a/db/examples_java/src/collections/ship/tuple/ShipmentData.java
+++ b/db/examples_java/src/collections/ship/tuple/ShipmentData.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: ShipmentData.java,v 12.4 2006/08/24 14:46:00 bostic Exp $
+ * $Id: ShipmentData.java,v 12.6 2007/05/17 15:15:36 bostic Exp $
*/
package collections.ship.tuple;
diff --git a/db/examples_java/src/collections/ship/tuple/ShipmentKey.java b/db/examples_java/src/collections/ship/tuple/ShipmentKey.java
index 8691a9fb3..ab468bc53 100644
--- a/db/examples_java/src/collections/ship/tuple/ShipmentKey.java
+++ b/db/examples_java/src/collections/ship/tuple/ShipmentKey.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: ShipmentKey.java,v 12.4 2006/08/24 14:46:00 bostic Exp $
+ * $Id: ShipmentKey.java,v 12.6 2007/05/17 15:15:36 bostic Exp $
*/
package collections.ship.tuple;
diff --git a/db/examples_java/src/collections/ship/tuple/Supplier.java b/db/examples_java/src/collections/ship/tuple/Supplier.java
index beb9c32c9..3414d29c0 100644
--- a/db/examples_java/src/collections/ship/tuple/Supplier.java
+++ b/db/examples_java/src/collections/ship/tuple/Supplier.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: Supplier.java,v 12.4 2006/08/24 14:46:00 bostic Exp $
+ * $Id: Supplier.java,v 12.6 2007/05/17 15:15:36 bostic Exp $
*/
package collections.ship.tuple;
diff --git a/db/examples_java/src/collections/ship/tuple/SupplierData.java b/db/examples_java/src/collections/ship/tuple/SupplierData.java
index ebaad6146..5d0464703 100644
--- a/db/examples_java/src/collections/ship/tuple/SupplierData.java
+++ b/db/examples_java/src/collections/ship/tuple/SupplierData.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: SupplierData.java,v 12.4 2006/08/24 14:46:00 bostic Exp $
+ * $Id: SupplierData.java,v 12.6 2007/05/17 15:15:36 bostic Exp $
*/
package collections.ship.tuple;
diff --git a/db/examples_java/src/collections/ship/tuple/SupplierKey.java b/db/examples_java/src/collections/ship/tuple/SupplierKey.java
index cc9758510..46579894f 100644
--- a/db/examples_java/src/collections/ship/tuple/SupplierKey.java
+++ b/db/examples_java/src/collections/ship/tuple/SupplierKey.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: SupplierKey.java,v 12.4 2006/08/24 14:46:00 bostic Exp $
+ * $Id: SupplierKey.java,v 12.6 2007/05/17 15:15:36 bostic Exp $
*/
package collections.ship.tuple;
diff --git a/db/examples_java/src/collections/ship/tuple/Weight.java b/db/examples_java/src/collections/ship/tuple/Weight.java
index c3dae4fa9..2d753fdc8 100644
--- a/db/examples_java/src/collections/ship/tuple/Weight.java
+++ b/db/examples_java/src/collections/ship/tuple/Weight.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: Weight.java,v 12.4 2006/08/24 14:46:00 bostic Exp $
+ * $Id: Weight.java,v 12.6 2007/05/17 15:15:36 bostic Exp $
*/
package collections.ship.tuple;
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/access/AccessExample.java b/db/examples_java/src/com/sleepycat/examples/collections/access/AccessExample.java
deleted file mode 100644
index 64cd3e5fa..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/access/AccessExample.java
+++ /dev/null
@@ -1,286 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: AccessExample.java,v 1.1 2004/04/09 16:34:05 mark Exp $
- */
-
-package com.sleepycat.examples.collections.access;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.PrintStream;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.SortedMap;
-
-import com.sleepycat.bind.ByteArrayBinding;
-import com.sleepycat.collections.StoredIterator;
-import com.sleepycat.collections.StoredSortedMap;
-import com.sleepycat.collections.TransactionRunner;
-import com.sleepycat.collections.TransactionWorker;
-import com.sleepycat.db.Database;
-import com.sleepycat.db.DatabaseConfig;
-import com.sleepycat.db.DatabaseException;
-import com.sleepycat.db.DatabaseType;
-import com.sleepycat.db.Environment;
-import com.sleepycat.db.EnvironmentConfig;
-
-/**
- * AccesssExample mirrors the functionality of a class by the same name
- * used to demonstrate the com.sleepycat.je Java API. This version makes
- * use of the new com.sleepycat.collections.* collections style classes to make
- * life easier.
- *
- *@author Gregory Burd <gburd@sleepycat.com>
- *@created October 22, 2002
- */
-public class AccessExample
- implements Runnable {
-
- // Class Variables of AccessExample class
- private static boolean create = true;
- private static final int EXIT_SUCCESS = 0;
- private static final int EXIT_FAILURE = 1;
-
- public static void usage() {
-
- System.out.println("usage: java " + AccessExample.class.getName() +
- " [-r] [database]\n");
- System.exit(EXIT_FAILURE);
- }
-
- /**
- * The main program for the AccessExample class
- *
- *@param argv The command line arguments
- */
- public static void main(String[] argv) {
-
- boolean removeExistingDatabase = false;
- String databaseName = "access.db";
-
- for (int i = 0; i < argv.length; i++) {
- if (argv[i].equals("-r")) {
- removeExistingDatabase = true;
- } else if (argv[i].equals("-?")) {
- usage();
- } else if (argv[i].startsWith("-")) {
- usage();
- } else {
- if ((argv.length - i) != 1)
- usage();
- databaseName = argv[i];
- break;
- }
- }
-
- try {
-
- EnvironmentConfig envConfig = new EnvironmentConfig();
- envConfig.setTransactional(true);
- envConfig.setInitializeCache(true);
- envConfig.setInitializeLocking(true);
- if (create) {
- envConfig.setAllowCreate(true);
- }
- Environment env = new Environment(new File("."), envConfig);
- // Remove the previous database.
- if (removeExistingDatabase) {
- env.removeDatabase(null, databaseName, null);
- }
-
- // create the app and run it
- AccessExample app = new AccessExample(env, databaseName);
- app.run();
- } catch (DatabaseException e) {
- e.printStackTrace();
- System.exit(1);
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- System.exit(1);
- } catch (Exception e) {
- e.printStackTrace();
- System.exit(1);
- }
- System.exit(0);
- }
-
-
- private Database db;
- private SortedMap map;
- private Environment env;
-
-
- /**
- * Constructor for the AccessExample object
- *
- *@param env Description of the Parameter
- *@exception Exception Description of the Exception
- */
- public AccessExample(Environment env, String databaseName)
- throws Exception {
-
- this.env = env;
-
- //
- // Lets mimic the com.sleepycat.examples.db.AccessExample 100%
- // and use plain old byte arrays to store the key and data strings.
- //
- ByteArrayBinding keyBinding = new ByteArrayBinding();
- ByteArrayBinding dataBinding = new ByteArrayBinding();
-
- //
- // Open a data store.
- //
- DatabaseConfig dbConfig = new DatabaseConfig();
- if (create) {
- dbConfig.setAllowCreate(true);
- dbConfig.setType(DatabaseType.BTREE);
- }
- this.db = env.openDatabase(null, databaseName, null, dbConfig);
-
- //
- // Now create a collection style map view of the data store
- // so that it is easy to work with the data in the database.
- //
- this.map = new StoredSortedMap(db, keyBinding, dataBinding, true);
- }
-
-
- /**
- * Main processing method for the AccessExample object
- */
- public void run() {
- //
- // Insert records into a Stored Sorted Map DatabaseImpl, where
- // the key is the user input and the data is the user input
- // in reverse order.
- //
- final InputStreamReader reader = new InputStreamReader(System.in);
-
- for (; ; ) {
- final String line = askForLine(reader, System.out, "input> ");
- if (line == null) {
- break;
- }
-
- final String reversed =
- (new StringBuffer(line)).reverse().toString();
-
- log("adding: \"" +
- line + "\" : \"" +
- reversed + "\"");
-
- // Do the work to add the key/data to the HashMap here.
- TransactionRunner tr = new TransactionRunner(env);
- try {
- tr.run(
- new TransactionWorker() {
- public void doWork() {
- if (!map.containsKey(line.getBytes()))
- map.put(line.getBytes(),
- reversed.getBytes());
- else
- System.out.println("Key " + line +
- " already exists.");
- }
- });
- } catch (com.sleepycat.db.DatabaseException e) {
- System.err.println("AccessExample: " + e.toString());
- System.exit(1);
- } catch (java.lang.Exception e) {
- System.err.println("AccessExample: " + e.toString());
- System.exit(1);
- }
- }
- System.out.println("");
-
- // Do the work to traverse and print the HashMap key/data
- // pairs here get iterator over map entries.
- Iterator iter = map.entrySet().iterator();
- try {
- System.out.println("Reading data");
- while (iter.hasNext()) {
- Map.Entry entry = (Map.Entry) iter.next();
- log("found \"" +
- new String((byte[]) entry.getKey()) +
- "\" key with data \"" +
- new String((byte[]) entry.getValue()) + "\"");
- }
- } finally {
- // Ensure that all database iterators are closed. This is very
- // important.
- StoredIterator.close(iter);
- }
- }
-
-
- /**
- * Prompts for a line, and keeps prompting until a non blank line is
- * returned. Returns null on error.
- *
- *@param reader stream from which to read user input
- *@param out stream on which to prompt for user input
- *@param prompt prompt to use to solicit input
- *@return the string supplied by the user
- */
- String askForLine(InputStreamReader reader, PrintStream out,
- String prompt) {
-
- String result = "";
- while (result != null && result.length() == 0) {
- out.print(prompt);
- out.flush();
- result = getLine(reader);
- }
- return result;
- }
-
-
- /**
- * Read a single line. Gets the line attribute of the AccessExample object
- * Not terribly efficient, but does the job. Works for reading a line from
- * stdin or a file.
- *
- *@param reader stream from which to read the line
- *@return either a String or null on EOF, if EOF appears in the
- * middle of a line, returns that line, then null on next call.
- */
- String getLine(InputStreamReader reader) {
-
- StringBuffer b = new StringBuffer();
- int c;
- try {
- while ((c = reader.read()) != -1 && c != '\n') {
- if (c != '\r') {
- b.append((char) c);
- }
- }
- } catch (IOException ioe) {
- c = -1;
- }
-
- if (c == -1 && b.length() == 0) {
- return null;
- } else {
- return b.toString();
- }
- }
-
-
- /**
- * A simple log method.
- *
- *@param s The string to be logged.
- */
- private void log(String s) {
-
- System.out.println(s);
- System.out.flush();
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/hello/HelloDatabaseWorld.java b/db/examples_java/src/com/sleepycat/examples/collections/hello/HelloDatabaseWorld.java
deleted file mode 100644
index edd8f2fa5..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/hello/HelloDatabaseWorld.java
+++ /dev/null
@@ -1,163 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: HelloDatabaseWorld.java,v 1.2 2004/09/22 16:17:09 mark Exp $
- */
-
-package com.sleepycat.examples.collections.hello;
-
-import java.io.File;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.SortedMap;
-
-import com.sleepycat.bind.serial.ClassCatalog;
-import com.sleepycat.bind.serial.SerialBinding;
-import com.sleepycat.bind.serial.StoredClassCatalog;
-import com.sleepycat.bind.tuple.TupleBinding;
-import com.sleepycat.collections.StoredIterator;
-import com.sleepycat.collections.StoredSortedMap;
-import com.sleepycat.collections.TransactionRunner;
-import com.sleepycat.collections.TransactionWorker;
-import com.sleepycat.db.Database;
-import com.sleepycat.db.DatabaseConfig;
-import com.sleepycat.db.DatabaseType;
-import com.sleepycat.db.Environment;
-import com.sleepycat.db.EnvironmentConfig;
-
-/**
- * @author Mark Hayes
- */
-public class HelloDatabaseWorld implements TransactionWorker {
-
- private static final String[] INT_NAMES = {
- "Hello", "Database", "World",
- };
- private static boolean create = true;
-
- private Environment env;
- private ClassCatalog catalog;
- private Database db;
- private SortedMap map;
-
- /** Creates the environment and runs a transaction */
- public static void main(String[] argv)
- throws Exception {
-
- String dir = "./tmp";
-
- // environment is transactional
- EnvironmentConfig envConfig = new EnvironmentConfig();
- envConfig.setTransactional(true);
- envConfig.setInitializeCache(true);
- envConfig.setInitializeLocking(true);
- if (create) {
- envConfig.setAllowCreate(true);
- }
- Environment env = new Environment(new File(dir), envConfig);
-
- // create the application and run a transaction
- HelloDatabaseWorld worker = new HelloDatabaseWorld(env);
- TransactionRunner runner = new TransactionRunner(env);
- try {
- // open and access the database within a transaction
- runner.run(worker);
- } finally {
- // close the database outside the transaction
- worker.close();
- }
- }
-
- /** Creates the database for this application */
- private HelloDatabaseWorld(Environment env)
- throws Exception {
-
- this.env = env;
- open();
- }
-
- /** Performs work within a transaction. */
- public void doWork()
- throws Exception {
-
- writeAndRead();
- }
-
- /** Opens the database and creates the Map. */
- private void open()
- throws Exception {
-
- // use a generic database configuration
- DatabaseConfig dbConfig = new DatabaseConfig();
- dbConfig.setTransactional(true);
- if (create) {
- dbConfig.setAllowCreate(true);
- dbConfig.setType(DatabaseType.BTREE);
- }
-
- // catalog is needed for serial bindings (java serialization)
- Database catalogDb = env.openDatabase(null, "catalog", null, dbConfig);
- catalog = new StoredClassCatalog(catalogDb);
-
- // use Integer tuple binding for key entries
- TupleBinding keyBinding =
- TupleBinding.getPrimitiveBinding(Integer.class);
-
- // use String serial binding for data entries
- SerialBinding dataBinding = new SerialBinding(catalog, String.class);
-
- this.db = env.openDatabase(null, "helloworld", null, dbConfig);
-
- // create a map view of the database
- this.map = new StoredSortedMap(db, keyBinding, dataBinding, true);
- }
-
- /** Closes the database. */
- private void close()
- throws Exception {
-
- if (catalog != null) {
- catalog.close();
- catalog = null;
- }
- if (db != null) {
- db.close();
- db = null;
- }
- if (env != null) {
- env.close();
- env = null;
- }
- }
-
- /** Writes and reads the database via the Map. */
- private void writeAndRead() {
-
- // check for existing data
- Integer key = new Integer(0);
- String val = (String) map.get(key);
- if (val == null) {
- System.out.println("Writing data");
- // write in reverse order to show that keys are sorted
- for (int i = INT_NAMES.length - 1; i >= 0; i -= 1) {
- map.put(new Integer(i), INT_NAMES[i]);
- }
- }
- // get iterator over map entries
- Iterator iter = map.entrySet().iterator();
- try {
- System.out.println("Reading data");
- while (iter.hasNext()) {
- Map.Entry entry = (Map.Entry) iter.next();
- System.out.println(entry.getKey().toString() + ' ' +
- entry.getValue());
- }
- } finally {
- // all database iterators must be closed!!
- StoredIterator.close(iter);
- }
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/basic/PartData.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/basic/PartData.java
deleted file mode 100644
index 809d7f5bc..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/basic/PartData.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: PartData.java,v 1.2 2004/09/22 16:17:09 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.basic;
-
-import java.io.Serializable;
-
-/**
- * A PartData serves as the data in the key/data pair for a part entity.
- *
- * <p> In this sample, PartData is used both as the storage entry for the
- * data as well as the object binding to the data. Because it is used
- * directly as storage data using serial format, it must be Serializable. </p>
- *
- * @author Mark Hayes
- */
-public class PartData implements Serializable {
-
- private String name;
- private String color;
- private Weight weight;
- private String city;
-
- public PartData(String name, String color, Weight weight, String city) {
-
- this.name = name;
- this.color = color;
- this.weight = weight;
- this.city = city;
- }
-
- public final String getName() {
-
- return name;
- }
-
- public final String getColor() {
-
- return color;
- }
-
- public final Weight getWeight() {
-
- return weight;
- }
-
- public final String getCity() {
-
- return city;
- }
-
- public String toString() {
-
- return "[PartData: name=" + name +
- " color=" + color +
- " weight=" + weight +
- " city=" + city + ']';
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/basic/PartKey.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/basic/PartKey.java
deleted file mode 100644
index 6ea90b4d4..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/basic/PartKey.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: PartKey.java,v 1.2 2004/09/22 16:17:09 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.basic;
-
-import java.io.Serializable;
-
-/**
- * A PartKey serves as the key in the key/data pair for a part entity.
- *
- * <p> In this sample, PartKey is used both as the storage entry for the key as
- * well as the object binding to the key. Because it is used directly as
- * storage data using serial format, it must be Serializable. </p>
- *
- * @author Mark Hayes
- */
-public class PartKey implements Serializable {
-
- private String number;
-
- public PartKey(String number) {
-
- this.number = number;
- }
-
- public final String getNumber() {
-
- return number;
- }
-
- public String toString() {
-
- return "[PartKey: number=" + number + ']';
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/basic/Sample.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/basic/Sample.java
deleted file mode 100644
index 68208eb5f..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/basic/Sample.java
+++ /dev/null
@@ -1,267 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: Sample.java,v 1.3 2004/09/22 16:17:09 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.basic;
-
-import java.io.FileNotFoundException;
-import java.util.Iterator;
-import java.util.Map;
-
-import com.sleepycat.collections.StoredIterator;
-import com.sleepycat.collections.TransactionRunner;
-import com.sleepycat.collections.TransactionWorker;
-import com.sleepycat.db.DatabaseException;
-
-/**
- * Sample is the main entry point for the sample program and may be run as
- * follows:
- *
- * <pre>
- * java com.sleepycat.examples.collections.ship.basic.Sample
- * [-h <home-directory> ]
- * </pre>
- *
- * <p> The default for the home directory is ./tmp -- the tmp subdirectory of
- * the current directory where the sample is run. The home directory must exist
- * before running the sample. To recreate the sample database from scratch,
- * delete all files in the home directory before running the sample. </p>
- *
- * @author Mark Hayes
- */
-public class Sample {
-
- private SampleDatabase db;
- private SampleViews views;
-
- /**
- * Run the sample program.
- */
- public static void main(String[] args) {
-
- System.out.println("\nRunning sample: " + Sample.class);
-
- // Parse the command line arguments.
- //
- String homeDir = "./tmp";
- for (int i = 0; i < args.length; i += 1) {
- if (args[i].equals("-h") && i < args.length - 1) {
- i += 1;
- homeDir = args[i];
- } else {
- System.err.println("Usage:\n java " + Sample.class.getName() +
- "\n [-h <home-directory>]");
- System.exit(2);
- }
- }
-
- // Run the sample.
- //
- Sample sample = null;
- try {
- sample = new Sample(homeDir);
- sample.run();
- } catch (Exception e) {
- // If an exception reaches this point, the last transaction did not
- // complete. If the exception is RunRecoveryException, follow
- // the Berkeley DB recovery procedures before running again.
- e.printStackTrace();
- } finally {
- if (sample != null) {
- try {
- // Always attempt to close the database cleanly.
- sample.close();
- } catch (Exception e) {
- System.err.println("Exception during database close:");
- e.printStackTrace();
- }
- }
- }
- }
-
- /**
- * Open the database and views.
- */
- private Sample(String homeDir)
- throws DatabaseException, FileNotFoundException {
-
- db = new SampleDatabase(homeDir);
- views = new SampleViews(db);
- }
-
- /**
- * Close the database cleanly.
- */
- private void close()
- throws DatabaseException {
-
- db.close();
- }
-
- /**
- * Run two transactions to populate and print the database. A
- * TransactionRunner is used to ensure consistent handling of transactions,
- * including deadlock retries. But the best transaction handling mechanism
- * to use depends on the application.
- */
- private void run()
- throws Exception {
-
- TransactionRunner runner = new TransactionRunner(db.getEnvironment());
- runner.run(new PopulateDatabase());
- runner.run(new PrintDatabase());
- }
-
- /**
- * Populate the database in a single transaction.
- */
- private class PopulateDatabase implements TransactionWorker {
-
- public void doWork()
- throws Exception {
- addSuppliers();
- addParts();
- addShipments();
- }
- }
-
- /**
- * Print the database in a single transaction. All entities are printed.
- */
- private class PrintDatabase implements TransactionWorker {
-
- public void doWork()
- throws Exception {
- printEntries("Parts",
- views.getPartEntrySet().iterator());
- printEntries("Suppliers",
- views.getSupplierEntrySet().iterator());
- printEntries("Shipments",
- views.getShipmentEntrySet().iterator());
- }
- }
-
- /**
- * Populate the part entities in the database. If the part map is not
- * empty, assume that this has already been done.
- */
- private void addParts() {
-
- Map parts = views.getPartMap();
- if (parts.isEmpty()) {
- System.out.println("Adding Parts");
- parts.put(new PartKey("P1"),
- new PartData("Nut", "Red",
- new Weight(12.0, Weight.GRAMS),
- "London"));
- parts.put(new PartKey("P2"),
- new PartData("Bolt", "Green",
- new Weight(17.0, Weight.GRAMS),
- "Paris"));
- parts.put(new PartKey("P3"),
- new PartData("Screw", "Blue",
- new Weight(17.0, Weight.GRAMS),
- "Rome"));
- parts.put(new PartKey("P4"),
- new PartData("Screw", "Red",
- new Weight(14.0, Weight.GRAMS),
- "London"));
- parts.put(new PartKey("P5"),
- new PartData("Cam", "Blue",
- new Weight(12.0, Weight.GRAMS),
- "Paris"));
- parts.put(new PartKey("P6"),
- new PartData("Cog", "Red",
- new Weight(19.0, Weight.GRAMS),
- "London"));
- }
- }
-
- /**
- * Populate the supplier entities in the database. If the supplier map is
- * not empty, assume that this has already been done.
- */
- private void addSuppliers() {
-
- Map suppliers = views.getSupplierMap();
- if (suppliers.isEmpty()) {
- System.out.println("Adding Suppliers");
- suppliers.put(new SupplierKey("S1"),
- new SupplierData("Smith", 20, "London"));
- suppliers.put(new SupplierKey("S2"),
- new SupplierData("Jones", 10, "Paris"));
- suppliers.put(new SupplierKey("S3"),
- new SupplierData("Blake", 30, "Paris"));
- suppliers.put(new SupplierKey("S4"),
- new SupplierData("Clark", 20, "London"));
- suppliers.put(new SupplierKey("S5"),
- new SupplierData("Adams", 30, "Athens"));
- }
- }
-
- /**
- * Populate the shipment entities in the database. If the shipment map
- * is not empty, assume that this has already been done.
- */
- private void addShipments() {
-
- Map shipments = views.getShipmentMap();
- if (shipments.isEmpty()) {
- System.out.println("Adding Shipments");
- shipments.put(new ShipmentKey("P1", "S1"),
- new ShipmentData(300));
- shipments.put(new ShipmentKey("P2", "S1"),
- new ShipmentData(200));
- shipments.put(new ShipmentKey("P3", "S1"),
- new ShipmentData(400));
- shipments.put(new ShipmentKey("P4", "S1"),
- new ShipmentData(200));
- shipments.put(new ShipmentKey("P5", "S1"),
- new ShipmentData(100));
- shipments.put(new ShipmentKey("P6", "S1"),
- new ShipmentData(100));
- shipments.put(new ShipmentKey("P1", "S2"),
- new ShipmentData(300));
- shipments.put(new ShipmentKey("P2", "S2"),
- new ShipmentData(400));
- shipments.put(new ShipmentKey("P2", "S3"),
- new ShipmentData(200));
- shipments.put(new ShipmentKey("P2", "S4"),
- new ShipmentData(200));
- shipments.put(new ShipmentKey("P4", "S4"),
- new ShipmentData(300));
- shipments.put(new ShipmentKey("P5", "S4"),
- new ShipmentData(400));
- }
- }
-
- /**
- * Print the key/value objects returned by an iterator of Map.Entry
- * objects.
- *
- * <p><b> IMPORTANT: All database iterators must be closed to avoid
- * serious database problems. If the iterator is not closed, the
- * underlying Berkeley DB cursor is not closed either. </b></p>
- */
- private void printEntries(String label, Iterator iterator) {
-
- System.out.println("\n--- " + label + " ---");
- try {
- while (iterator.hasNext()) {
- Map.Entry entry = (Map.Entry) iterator.next();
- System.out.println(entry.getKey().toString());
- System.out.println(entry.getValue().toString());
- }
- } finally {
- // IMPORTANT: Use StoredIterator to close all database
- // iterators. If java.util.Iterator is in hand, you can safely
- // close it by calling StoredIterator.close(Iterator).
- StoredIterator.close(iterator);
- }
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/basic/SampleDatabase.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/basic/SampleDatabase.java
deleted file mode 100644
index 47e7524fc..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/basic/SampleDatabase.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: SampleDatabase.java,v 1.3 2004/09/22 16:17:09 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.basic;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-
-import com.sleepycat.bind.serial.StoredClassCatalog;
-import com.sleepycat.db.Database;
-import com.sleepycat.db.DatabaseConfig;
-import com.sleepycat.db.DatabaseException;
-import com.sleepycat.db.DatabaseType;
-import com.sleepycat.db.Environment;
-import com.sleepycat.db.EnvironmentConfig;
-
-/**
- * SampleDatabase defines the storage containers, indices and foreign keys
- * for the sample database.
- *
- * @author Mark Hayes
- */
-public class SampleDatabase {
-
- private static final String CLASS_CATALOG = "java_class_catalog";
- private static final String SUPPLIER_STORE = "supplier_store";
- private static final String PART_STORE = "part_store";
- private static final String SHIPMENT_STORE = "shipment_store";
-
- private Environment env;
- private Database partDb;
- private Database supplierDb;
- private Database shipmentDb;
- private StoredClassCatalog javaCatalog;
-
- /**
- * Open all storage containers, indices, and catalogs.
- */
- public SampleDatabase(String homeDirectory)
- throws DatabaseException, FileNotFoundException {
-
- // Open the Berkeley DB environment in transactional mode.
- //
- System.out.println("Opening environment in: " + homeDirectory);
- EnvironmentConfig envConfig = new EnvironmentConfig();
- envConfig.setTransactional(true);
- envConfig.setAllowCreate(true);
- envConfig.setInitializeCache(true);
- envConfig.setInitializeLocking(true);
- env = new Environment(new File(homeDirectory), envConfig);
-
- // Set the Berkeley DB config for opening all stores.
- //
- DatabaseConfig dbConfig = new DatabaseConfig();
- dbConfig.setTransactional(true);
- dbConfig.setAllowCreate(true);
- dbConfig.setType(DatabaseType.BTREE);
-
- // Create the Serial class catalog. This holds the serialized class
- // format for all database records of serial format.
- //
- Database catalogDb = env.openDatabase(null, CLASS_CATALOG, null,
- dbConfig);
- javaCatalog = new StoredClassCatalog(catalogDb);
-
- // Open the Berkeley DB database for the part, supplier and shipment
- // stores. The stores are opened with no duplicate keys allowed.
- //
- partDb = env.openDatabase(null, PART_STORE, null, dbConfig);
-
- supplierDb = env.openDatabase(null, SUPPLIER_STORE, null, dbConfig);
-
- shipmentDb = env.openDatabase(null, SHIPMENT_STORE, null, dbConfig);
- }
-
- /**
- * Return the storage environment for the database.
- */
- public final Environment getEnvironment() {
-
- return env;
- }
-
- /**
- * Return the class catalog.
- */
- public final StoredClassCatalog getClassCatalog() {
-
- return javaCatalog;
- }
-
- /**
- * Return the part storage container.
- */
- public final Database getPartDatabase() {
-
- return partDb;
- }
-
- /**
- * Return the supplier storage container.
- */
- public final Database getSupplierDatabase() {
-
- return supplierDb;
- }
-
- /**
- * Return the shipment storage container.
- */
- public final Database getShipmentDatabase() {
-
- return shipmentDb;
- }
-
- /**
- * Close all databases and the environment.
- */
- public void close()
- throws DatabaseException {
-
- partDb.close();
- supplierDb.close();
- shipmentDb.close();
- // And don't forget to close the catalog and the environment.
- javaCatalog.close();
- env.close();
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/basic/SampleViews.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/basic/SampleViews.java
deleted file mode 100644
index d75c6986b..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/basic/SampleViews.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: SampleViews.java,v 1.2 2004/09/22 16:17:09 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.basic;
-
-import com.sleepycat.bind.EntryBinding;
-import com.sleepycat.bind.serial.ClassCatalog;
-import com.sleepycat.bind.serial.SerialBinding;
-import com.sleepycat.collections.StoredEntrySet;
-import com.sleepycat.collections.StoredMap;
-
-/**
- * SampleViews defines the data bindings and collection views for the sample
- * database.
- *
- * @author Mark Hayes
- */
-public class SampleViews {
-
- private StoredMap partMap;
- private StoredMap supplierMap;
- private StoredMap shipmentMap;
-
- /**
- * Create the data bindings and collection views.
- */
- public SampleViews(SampleDatabase db) {
-
- // In this sample, the stored key and data entries are used directly
- // rather than mapping them to separate objects. Therefore, no binding
- // classes are defined here and the SerialBinding class is used.
- //
- ClassCatalog catalog = db.getClassCatalog();
- EntryBinding partKeyBinding =
- new SerialBinding(catalog, PartKey.class);
- EntryBinding partDataBinding =
- new SerialBinding(catalog, PartData.class);
- EntryBinding supplierKeyBinding =
- new SerialBinding(catalog, SupplierKey.class);
- EntryBinding supplierDataBinding =
- new SerialBinding(catalog, SupplierData.class);
- EntryBinding shipmentKeyBinding =
- new SerialBinding(catalog, ShipmentKey.class);
- EntryBinding shipmentDataBinding =
- new SerialBinding(catalog, ShipmentData.class);
-
- // Create map views for all stores and indices.
- // StoredSortedMap is not used since the stores and indices are
- // ordered by serialized key objects, which do not provide a very
- // useful ordering.
- //
- partMap =
- new StoredMap(db.getPartDatabase(),
- partKeyBinding, partDataBinding, true);
- supplierMap =
- new StoredMap(db.getSupplierDatabase(),
- supplierKeyBinding, supplierDataBinding, true);
- shipmentMap =
- new StoredMap(db.getShipmentDatabase(),
- shipmentKeyBinding, shipmentDataBinding, true);
- }
-
- // The views returned below can be accessed using the java.util.Map or
- // java.util.Set interfaces, or using the StoredMap and StoredEntrySet
- // classes, which provide additional methods. The entry sets could be
- // obtained directly from the Map.entrySet() method, but convenience
- // methods are provided here to return them in order to avoid down-casting
- // elsewhere.
-
- /**
- * Return a map view of the part storage container.
- */
- public final StoredMap getPartMap() {
-
- return partMap;
- }
-
- /**
- * Return a map view of the supplier storage container.
- */
- public final StoredMap getSupplierMap() {
-
- return supplierMap;
- }
-
- /**
- * Return a map view of the shipment storage container.
- */
- public final StoredMap getShipmentMap() {
-
- return shipmentMap;
- }
-
- /**
- * Return an entry set view of the part storage container.
- */
- public final StoredEntrySet getPartEntrySet() {
-
- return (StoredEntrySet) partMap.entrySet();
- }
-
- /**
- * Return an entry set view of the supplier storage container.
- */
- public final StoredEntrySet getSupplierEntrySet() {
-
- return (StoredEntrySet) supplierMap.entrySet();
- }
-
- /**
- * Return an entry set view of the shipment storage container.
- */
- public final StoredEntrySet getShipmentEntrySet() {
-
- return (StoredEntrySet) shipmentMap.entrySet();
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/basic/ShipmentData.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/basic/ShipmentData.java
deleted file mode 100644
index 4229545cd..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/basic/ShipmentData.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: ShipmentData.java,v 1.2 2004/09/22 16:17:09 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.basic;
-
-import java.io.Serializable;
-
-/**
- * A ShipmentData serves as the data in the key/data pair for a shipment
- * entity.
- *
- * <p> In this sample, ShipmentData is used both as the storage entry for the
- * data as well as the object binding to the data. Because it is used
- * directly as storage data using serial format, it must be Serializable. </p>
- *
- * @author Mark Hayes
- */
-public class ShipmentData implements Serializable {
-
- private int quantity;
-
- public ShipmentData(int quantity) {
-
- this.quantity = quantity;
- }
-
- public final int getQuantity() {
-
- return quantity;
- }
-
- public String toString() {
-
- return "[ShipmentData: quantity=" + quantity + ']';
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/basic/ShipmentKey.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/basic/ShipmentKey.java
deleted file mode 100644
index 609aeb926..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/basic/ShipmentKey.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: ShipmentKey.java,v 1.2 2004/09/22 16:17:09 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.basic;
-
-import java.io.Serializable;
-
-/**
- * A ShipmentKey serves as the key in the key/data pair for a shipment entity.
- *
- * <p> In this sample, ShipmentKey is used both as the storage entry for the
- * key as well as the object binding to the key. Because it is used directly
- * as storage data using serial format, it must be Serializable. </p>
- *
- * @author Mark Hayes
- */
-public class ShipmentKey implements Serializable {
-
- private String partNumber;
- private String supplierNumber;
-
- public ShipmentKey(String partNumber, String supplierNumber) {
-
- this.partNumber = partNumber;
- this.supplierNumber = supplierNumber;
- }
-
- public final String getPartNumber() {
-
- return partNumber;
- }
-
- public final String getSupplierNumber() {
-
- return supplierNumber;
- }
-
- public String toString() {
-
- return "[ShipmentKey: supplier=" + supplierNumber +
- " part=" + partNumber + ']';
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/basic/SupplierData.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/basic/SupplierData.java
deleted file mode 100644
index 1bef3ac6b..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/basic/SupplierData.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: SupplierData.java,v 1.2 2004/09/22 16:17:09 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.basic;
-
-import java.io.Serializable;
-
-/**
- * A SupplierData serves as the data in the key/data pair for a supplier
- * entity.
- *
- * <p> In this sample, SupplierData is used both as the storage entry for the
- * data as well as the object binding to the data. Because it is used
- * directly as storage data using serial format, it must be Serializable. </p>
- *
- * @author Mark Hayes
- */
-public class SupplierData implements Serializable {
-
- private String name;
- private int status;
- private String city;
-
- public SupplierData(String name, int status, String city) {
-
- this.name = name;
- this.status = status;
- this.city = city;
- }
-
- public final String getName() {
-
- return name;
- }
-
- public final int getStatus() {
-
- return status;
- }
-
- public final String getCity() {
-
- return city;
- }
-
- public String toString() {
-
- return "[SupplierData: name=" + name +
- " status=" + status +
- " city=" + city + ']';
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/basic/SupplierKey.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/basic/SupplierKey.java
deleted file mode 100644
index ec30a918e..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/basic/SupplierKey.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: SupplierKey.java,v 1.2 2004/09/22 16:17:09 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.basic;
-
-import java.io.Serializable;
-
-/**
- * A SupplierKey serves as the key in the key/data pair for a supplier entity.
- *
- * <p>In this sample, SupplierKey is used both as the storage entry for the key
- * as well as the object binding to the key. Because it is used directly as
- * storage data using serial format, it must be Serializable. </p>
- *
- * @author Mark Hayes
- */
-public class SupplierKey implements Serializable {
-
- private String number;
-
- public SupplierKey(String number) {
-
- this.number = number;
- }
-
- public final String getNumber() {
-
- return number;
- }
-
- public String toString() {
-
- return "[SupplierKey: number=" + number + ']';
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/basic/Weight.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/basic/Weight.java
deleted file mode 100644
index 6cdb0102a..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/basic/Weight.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: Weight.java,v 1.2 2004/09/22 16:17:09 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.basic;
-
-import java.io.Serializable;
-
-/**
- * Weight represents a weight amount and unit of measure.
- *
- * <p> In this sample, Weight is embedded in part data values which are stored
- * as Serial serialized objects; therefore Weight must be Serializable. </p>
- *
- * @author Mark Hayes
- */
-public class Weight implements Serializable {
-
- public final static String GRAMS = "grams";
- public final static String OUNCES = "ounces";
-
- private double amount;
- private String units;
-
- public Weight(double amount, String units) {
-
- this.amount = amount;
- this.units = units;
- }
-
- public final double getAmount() {
-
- return amount;
- }
-
- public final String getUnits() {
-
- return units;
- }
-
- public String toString() {
-
- return "[" + amount + ' ' + units + ']';
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/entity/Part.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/entity/Part.java
deleted file mode 100644
index 4bec31c3c..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/entity/Part.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: Part.java,v 1.2 2004/09/22 16:17:09 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.entity;
-
-/**
- * A Part represents the combined key/data pair for a part entity.
- *
- * <p>In this sample, Part is created from the stored key/data entry using a
- * SerialSerialBinding. See {@link SampleViews.PartBinding} for details.
- * Since this class is not used directly for data storage, it does not need to
- * be Serializable.</p>
- *
- * @author Mark Hayes
- */
-public class Part {
-
- private String number;
- private String name;
- private String color;
- private Weight weight;
- private String city;
-
- public Part(String number, String name, String color, Weight weight,
- String city) {
-
- this.number = number;
- this.name = name;
- this.color = color;
- this.weight = weight;
- this.city = city;
- }
-
- public final String getNumber() {
-
- return number;
- }
-
- public final String getName() {
-
- return name;
- }
-
- public final String getColor() {
-
- return color;
- }
-
- public final Weight getWeight() {
-
- return weight;
- }
-
- public final String getCity() {
-
- return city;
- }
-
- public String toString() {
-
- return "[Part: number=" + number +
- " name=" + name +
- " color=" + color +
- " weight=" + weight +
- " city=" + city + ']';
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/entity/PartData.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/entity/PartData.java
deleted file mode 100644
index f05bae600..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/entity/PartData.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: PartData.java,v 1.2 2004/09/22 16:17:09 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.entity;
-
-import java.io.Serializable;
-
-/**
- * A PartData serves as the value in the key/value pair for a part entity.
- *
- * <p> In this sample, PartData is used only as the storage data for the
- * value, while the Part object is used as the value's object representation.
- * Because it is used directly as storage data using serial format, it must be
- * Serializable. </p>
- *
- * @author Mark Hayes
- */
-public class PartData implements Serializable {
-
- private String name;
- private String color;
- private Weight weight;
- private String city;
-
- public PartData(String name, String color, Weight weight, String city) {
-
- this.name = name;
- this.color = color;
- this.weight = weight;
- this.city = city;
- }
-
- public final String getName() {
-
- return name;
- }
-
- public final String getColor() {
-
- return color;
- }
-
- public final Weight getWeight() {
-
- return weight;
- }
-
- public final String getCity() {
-
- return city;
- }
-
- public String toString() {
-
- return "[PartData: name=" + name +
- " color=" + color +
- " weight=" + weight +
- " city=" + city + ']';
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/entity/PartKey.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/entity/PartKey.java
deleted file mode 100644
index 046efb556..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/entity/PartKey.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: PartKey.java,v 1.2 2004/09/22 16:17:09 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.entity;
-
-import java.io.Serializable;
-
-/**
- * A PartKey serves as the key in the key/data pair for a part entity.
- *
- * <p> In this sample, PartKey is used both as the storage entry for the key as
- * well as the object binding to the key. Because it is used directly as
- * storage data using serial format, it must be Serializable. </p>
- *
- * @author Mark Hayes
- */
-public class PartKey implements Serializable {
-
- private String number;
-
- public PartKey(String number) {
-
- this.number = number;
- }
-
- public final String getNumber() {
-
- return number;
- }
-
- public String toString() {
-
- return "[PartKey: number=" + number + ']';
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/entity/Sample.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/entity/Sample.java
deleted file mode 100644
index 115a33fcd..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/entity/Sample.java
+++ /dev/null
@@ -1,250 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: Sample.java,v 1.3 2004/09/22 16:17:10 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.entity;
-
-import java.io.FileNotFoundException;
-import java.util.Iterator;
-import java.util.Set;
-
-import com.sleepycat.collections.StoredIterator;
-import com.sleepycat.collections.TransactionRunner;
-import com.sleepycat.collections.TransactionWorker;
-import com.sleepycat.db.DatabaseException;
-
-/**
- * Sample is the main entry point for the sample program and may be run as
- * follows:
- *
- * <pre>
- * java com.sleepycat.examples.collections.ship.entity.Sample
- * [-h <home-directory> ]
- * </pre>
- *
- * <p> The default for the home directory is ./tmp -- the tmp subdirectory of
- * the current directory where the sample is run. The home directory must exist
- * before running the sample. To recreate the sample database from scratch,
- * delete all files in the home directory before running the sample. </p>
- *
- * @author Mark Hayes
- */
-public class Sample {
-
- private SampleDatabase db;
- private SampleViews views;
-
- /**
- * Run the sample program.
- */
- public static void main(String[] args) {
-
- System.out.println("\nRunning sample: " + Sample.class);
-
- // Parse the command line arguments.
- //
- String homeDir = "./tmp";
- for (int i = 0; i < args.length; i += 1) {
- if (args[i].equals("-h") && i < args.length - 1) {
- i += 1;
- homeDir = args[i];
- } else {
- System.err.println("Usage:\n java " + Sample.class.getName() +
- "\n [-h <home-directory>]");
- System.exit(2);
- }
- }
-
- // Run the sample.
- //
- Sample sample = null;
- try {
- sample = new Sample(homeDir);
- sample.run();
- } catch (Exception e) {
- // If an exception reaches this point, the last transaction did not
- // complete. If the exception is RunRecoveryException, follow
- // the Berkeley DB recovery procedures before running again.
- e.printStackTrace();
- } finally {
- if (sample != null) {
- try {
- // Always attempt to close the database cleanly.
- sample.close();
- } catch (Exception e) {
- System.err.println("Exception during database close:");
- e.printStackTrace();
- }
- }
- }
- }
-
- /**
- * Open the database and views.
- */
- private Sample(String homeDir)
- throws DatabaseException, FileNotFoundException {
-
- db = new SampleDatabase(homeDir);
- views = new SampleViews(db);
- }
-
- /**
- * Close the database cleanly.
- */
- private void close()
- throws DatabaseException {
-
- db.close();
- }
-
- /**
- * Run two transactions to populate and print the database. A
- * TransactionRunner is used to ensure consistent handling of transactions,
- * including deadlock retries. But the best transaction handling mechanism
- * to use depends on the application.
- */
- private void run()
- throws Exception {
-
- TransactionRunner runner = new TransactionRunner(db.getEnvironment());
- runner.run(new PopulateDatabase());
- runner.run(new PrintDatabase());
- }
-
- /**
- * Populate the database in a single transaction.
- */
- private class PopulateDatabase implements TransactionWorker {
-
- public void doWork()
- throws Exception {
- addSuppliers();
- addParts();
- addShipments();
- }
- }
-
- /**
- * Print the database in a single transaction. All entities are printed
- * and the indices are used to print the entities for certain keys.
- *
- * <p> Note the use of special iterator() methods. These are used here
- * with indices to find the shipments for certain keys. For details on
- * database iterators see {@link StoredIterator}. </p>
- */
- private class PrintDatabase implements TransactionWorker {
-
-
- public void doWork()
- throws Exception {
- printValues("Parts",
- views.getPartSet().iterator());
- printValues("Suppliers",
- views.getSupplierSet().iterator());
- printValues("Suppliers for City Paris",
- views.getSupplierByCityMap().duplicates(
- "Paris").iterator());
- printValues("Shipments",
- views.getShipmentSet().iterator());
- printValues("Shipments for Part P1",
- views.getShipmentByPartMap().duplicates(
- new PartKey("P1")).iterator());
- printValues("Shipments for Supplier S1",
- views.getShipmentBySupplierMap().duplicates(
- new SupplierKey("S1")).iterator());
- }
- }
-
- /**
- * Populate the part entities in the database. If the part set is not
- * empty, assume that this has already been done.
- */
- private void addParts() {
-
- Set parts = views.getPartSet();
- if (parts.isEmpty()) {
- System.out.println("Adding Parts");
- parts.add(new Part("P1", "Nut", "Red",
- new Weight(12.0, Weight.GRAMS), "London"));
- parts.add(new Part("P2", "Bolt", "Green",
- new Weight(17.0, Weight.GRAMS), "Paris"));
- parts.add(new Part("P3", "Screw", "Blue",
- new Weight(17.0, Weight.GRAMS), "Rome"));
- parts.add(new Part("P4", "Screw", "Red",
- new Weight(14.0, Weight.GRAMS), "London"));
- parts.add(new Part("P5", "Cam", "Blue",
- new Weight(12.0, Weight.GRAMS), "Paris"));
- parts.add(new Part("P6", "Cog", "Red",
- new Weight(19.0, Weight.GRAMS), "London"));
- }
- }
-
- /**
- * Populate the supplier entities in the database. If the supplier set is
- * not empty, assume that this has already been done.
- */
- private void addSuppliers() {
-
- Set suppliers = views.getSupplierSet();
- if (suppliers.isEmpty()) {
- System.out.println("Adding Suppliers");
- suppliers.add(new Supplier("S1", "Smith", 20, "London"));
- suppliers.add(new Supplier("S2", "Jones", 10, "Paris"));
- suppliers.add(new Supplier("S3", "Blake", 30, "Paris"));
- suppliers.add(new Supplier("S4", "Clark", 20, "London"));
- suppliers.add(new Supplier("S5", "Adams", 30, "Athens"));
- }
- }
-
- /**
- * Populate the shipment entities in the database. If the shipment set
- * is not empty, assume that this has already been done.
- */
- private void addShipments() {
-
- Set shipments = views.getShipmentSet();
- if (shipments.isEmpty()) {
- System.out.println("Adding Shipments");
- shipments.add(new Shipment("P1", "S1", 300));
- shipments.add(new Shipment("P2", "S1", 200));
- shipments.add(new Shipment("P3", "S1", 400));
- shipments.add(new Shipment("P4", "S1", 200));
- shipments.add(new Shipment("P5", "S1", 100));
- shipments.add(new Shipment("P6", "S1", 100));
- shipments.add(new Shipment("P1", "S2", 300));
- shipments.add(new Shipment("P2", "S2", 400));
- shipments.add(new Shipment("P2", "S3", 200));
- shipments.add(new Shipment("P2", "S4", 200));
- shipments.add(new Shipment("P4", "S4", 300));
- shipments.add(new Shipment("P5", "S4", 400));
- }
- }
-
- /**
- * Print the objects returned by an iterator of entity value objects.
- *
- * <p><b> IMPORTANT: All database iterators must be closed to avoid
- * serious database problems. If the iterator is not closed, the
- * underlying Berkeley DB cursor is not closed either. </b></p>
- */
- private void printValues(String label, Iterator iterator) {
-
- System.out.println("\n--- " + label + " ---");
- try {
- while (iterator.hasNext()) {
- System.out.println(iterator.next().toString());
- }
- } finally {
- // IMPORTANT: Use StoredIterator to close all database
- // iterators. If java.util.Iterator is in hand, you can safely
- // close it by calling StoredIterator.close(Iterator).
- StoredIterator.close(iterator);
- }
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/entity/SampleDatabase.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/entity/SampleDatabase.java
deleted file mode 100644
index 424e27aae..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/entity/SampleDatabase.java
+++ /dev/null
@@ -1,330 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: SampleDatabase.java,v 1.4 2004/09/22 18:00:56 bostic Exp $
- */
-
-package com.sleepycat.examples.collections.ship.entity;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-
-import com.sleepycat.bind.serial.ClassCatalog;
-import com.sleepycat.bind.serial.SerialSerialKeyCreator;
-import com.sleepycat.bind.serial.StoredClassCatalog;
-import com.sleepycat.db.Database;
-import com.sleepycat.db.DatabaseConfig;
-import com.sleepycat.db.DatabaseException;
-import com.sleepycat.db.DatabaseType;
-import com.sleepycat.db.Environment;
-import com.sleepycat.db.EnvironmentConfig;
-import com.sleepycat.db.SecondaryConfig;
-import com.sleepycat.db.SecondaryDatabase;
-
-/**
- * SampleDatabase defines the storage containers, indices and foreign keys
- * for the sample database.
- *
- * @author Mark Hayes
- */
-public class SampleDatabase {
-
- private static final String CLASS_CATALOG = "java_class_catalog";
- private static final String SUPPLIER_STORE = "supplier_store";
- private static final String PART_STORE = "part_store";
- private static final String SHIPMENT_STORE = "shipment_store";
- private static final String SHIPMENT_PART_INDEX = "shipment_part_index";
- private static final String SHIPMENT_SUPPLIER_INDEX =
- "shipment_supplier_index";
- private static final String SUPPLIER_CITY_INDEX = "supplier_city_index";
-
- private Environment env;
- private Database partDb;
- private Database supplierDb;
- private Database shipmentDb;
- private SecondaryDatabase supplierByCityDb;
- private SecondaryDatabase shipmentByPartDb;
- private SecondaryDatabase shipmentBySupplierDb;
- private StoredClassCatalog javaCatalog;
-
- /**
- * Open all storage containers, indices, and catalogs.
- */
- public SampleDatabase(String homeDirectory)
- throws DatabaseException, FileNotFoundException {
-
- // Open the Berkeley DB environment in transactional mode.
- //
- System.out.println("Opening environment in: " + homeDirectory);
- EnvironmentConfig envConfig = new EnvironmentConfig();
- envConfig.setTransactional(true);
- envConfig.setAllowCreate(true);
- envConfig.setInitializeCache(true);
- envConfig.setInitializeLocking(true);
- env = new Environment(new File(homeDirectory), envConfig);
-
- // Set the Berkeley DB config for opening all stores.
- //
- DatabaseConfig dbConfig = new DatabaseConfig();
- dbConfig.setTransactional(true);
- dbConfig.setAllowCreate(true);
- dbConfig.setType(DatabaseType.BTREE);
-
- // Create the Serial class catalog. This holds the serialized class
- // format for all database records of serial format.
- //
- Database catalogDb = env.openDatabase(null, CLASS_CATALOG, null,
- dbConfig);
- javaCatalog = new StoredClassCatalog(catalogDb);
-
- // Open the Berkeley DB database for the part, supplier and shipment
- // stores. The stores are opened with no duplicate keys allowed.
- //
- partDb = env.openDatabase(null, PART_STORE, null, dbConfig);
-
- supplierDb = env.openDatabase(null, SUPPLIER_STORE, null, dbConfig);
-
- shipmentDb = env.openDatabase(null, SHIPMENT_STORE, null, dbConfig);
-
- // Open the SecondaryDatabase for the city index of the supplier store,
- // and for the part and supplier indices of the shipment store.
- // Duplicate keys are allowed since more than one supplier may be in
- // the same city, and more than one shipment may exist for the same
- // supplier or part. A foreign key constraint is defined for the
- // supplier and part indices to ensure that a shipment only refers to
- // existing part and supplier keys. The CASCADE delete action means
- // that shipments will be deleted if their associated part or supplier
- // is deleted.
- //
- SecondaryConfig secConfig = new SecondaryConfig();
- secConfig.setTransactional(true);
- secConfig.setAllowCreate(true);
- secConfig.setType(DatabaseType.BTREE);
- secConfig.setSortedDuplicates(true);
-
- secConfig.setKeyCreator(
- new SupplierByCityKeyCreator(javaCatalog,
- SupplierKey.class,
- SupplierData.class,
- String.class));
- supplierByCityDb = env.openSecondaryDatabase(null, SUPPLIER_CITY_INDEX,
- null,
- supplierDb,
- secConfig);
-
- secConfig.setKeyCreator(
- new ShipmentByPartKeyCreator(javaCatalog,
- ShipmentKey.class,
- ShipmentData.class,
- PartKey.class));
- shipmentByPartDb = env.openSecondaryDatabase(null, SHIPMENT_PART_INDEX,
- null,
- shipmentDb,
- secConfig);
-
- secConfig.setKeyCreator(
- new ShipmentBySupplierKeyCreator(javaCatalog,
- ShipmentKey.class,
- ShipmentData.class,
- SupplierKey.class));
- shipmentBySupplierDb = env.openSecondaryDatabase(null,
- SHIPMENT_SUPPLIER_INDEX,
- null,
- shipmentDb,
- secConfig);
- }
-
- /**
- * Return the storage environment for the database.
- */
- public final Environment getEnvironment() {
-
- return env;
- }
-
- /**
- * Return the class catalog.
- */
- public final StoredClassCatalog getClassCatalog() {
-
- return javaCatalog;
- }
-
- /**
- * Return the part storage container.
- */
- public final Database getPartDatabase() {
-
- return partDb;
- }
-
- /**
- * Return the supplier storage container.
- */
- public final Database getSupplierDatabase() {
-
- return supplierDb;
- }
-
- /**
- * Return the shipment storage container.
- */
- public final Database getShipmentDatabase() {
-
- return shipmentDb;
- }
-
- /**
- * Return the shipment-by-part index.
- */
- public final SecondaryDatabase getShipmentByPartDatabase() {
-
- return shipmentByPartDb;
- }
-
- /**
- * Return the shipment-by-supplier index.
- */
- public final SecondaryDatabase getShipmentBySupplierDatabase() {
-
- return shipmentBySupplierDb;
- }
-
- /**
- * Return the supplier-by-city index.
- */
- public final SecondaryDatabase getSupplierByCityDatabase() {
-
- return supplierByCityDb;
- }
-
- /**
- * Close all stores (closing a store automatically closes its indices).
- */
- public void close()
- throws DatabaseException {
-
- // Close secondary databases, then primary databases.
- supplierByCityDb.close();
- shipmentByPartDb.close();
- shipmentBySupplierDb.close();
- partDb.close();
- supplierDb.close();
- shipmentDb.close();
- // And don't forget to close the catalog and the environment.
- javaCatalog.close();
- env.close();
- }
-
- /**
- * The SecondaryKeyCreator for the SupplierByCity index. This is an
- * extension of the abstract class SerialSerialKeyCreator, which implements
- * SecondaryKeyCreator for the case where the data keys and value are all
- * of the serial format.
- */
- private static class SupplierByCityKeyCreator
- extends SerialSerialKeyCreator {
-
- /**
- * Construct the city key extractor.
- * @param catalog is the class catalog.
- * @param primaryKeyClass is the supplier key class.
- * @param valueClass is the supplier value class.
- * @param indexKeyClass is the city key class.
- */
- private SupplierByCityKeyCreator(ClassCatalog catalog,
- Class primaryKeyClass,
- Class valueClass,
- Class indexKeyClass) {
-
- super(catalog, primaryKeyClass, valueClass, indexKeyClass);
- }
-
- /**
- * Extract the city key from a supplier key/value pair. The city key
- * is stored in the supplier value, so the supplier key is not used.
- */
- public Object createSecondaryKey(Object primaryKeyInput,
- Object valueInput) {
-
- SupplierData supplierData = (SupplierData) valueInput;
- return supplierData.getCity();
- }
- }
-
- /**
- * The SecondaryKeyCreator for the ShipmentByPart index. This is an
- * extension of the abstract class SerialSerialKeyCreator, which implements
- * SecondaryKeyCreator for the case where the data keys and value are all
- * of the serial format.
- */
- private static class ShipmentByPartKeyCreator
- extends SerialSerialKeyCreator {
-
- /**
- * Construct the part key extractor.
- * @param catalog is the class catalog.
- * @param primaryKeyClass is the shipment key class.
- * @param valueClass is the shipment value class.
- * @param indexKeyClass is the part key class.
- */
- private ShipmentByPartKeyCreator(ClassCatalog catalog,
- Class primaryKeyClass,
- Class valueClass,
- Class indexKeyClass) {
-
- super(catalog, primaryKeyClass, valueClass, indexKeyClass);
- }
-
- /**
- * Extract the part key from a shipment key/value pair. The part key
- * is stored in the shipment key, so the shipment value is not used.
- */
- public Object createSecondaryKey(Object primaryKeyInput,
- Object valueInput) {
-
- ShipmentKey shipmentKey = (ShipmentKey) primaryKeyInput;
- return new PartKey(shipmentKey.getPartNumber());
- }
- }
-
- /**
- * The SecondaryKeyCreator for the ShipmentBySupplier index. This is an
- * extension of the abstract class SerialSerialKeyCreator, which implements
- * SecondaryKeyCreator for the case where the data keys and value are all
- * of the serial format.
- */
- private static class ShipmentBySupplierKeyCreator
- extends SerialSerialKeyCreator {
-
- /**
- * Construct the supplier key extractor.
- * @param catalog is the class catalog.
- * @param primaryKeyClass is the shipment key class.
- * @param valueClass is the shipment value class.
- * @param indexKeyClass is the supplier key class.
- */
- private ShipmentBySupplierKeyCreator(ClassCatalog catalog,
- Class primaryKeyClass,
- Class valueClass,
- Class indexKeyClass) {
-
- super(catalog, primaryKeyClass, valueClass, indexKeyClass);
- }
-
- /**
- * Extract the supplier key from a shipment key/value pair. The part
- * key is stored in the shipment key, so the shipment value is not
- * used.
- */
- public Object createSecondaryKey(Object primaryKeyInput,
- Object valueInput) {
-
- ShipmentKey shipmentKey = (ShipmentKey) primaryKeyInput;
- return new SupplierKey(shipmentKey.getSupplierNumber());
- }
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/entity/SampleViews.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/entity/SampleViews.java
deleted file mode 100644
index cf956322d..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/entity/SampleViews.java
+++ /dev/null
@@ -1,307 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: SampleViews.java,v 1.3 2004/09/22 16:17:10 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.entity;
-
-import com.sleepycat.bind.EntityBinding;
-import com.sleepycat.bind.serial.ClassCatalog;
-import com.sleepycat.bind.serial.SerialBinding;
-import com.sleepycat.bind.serial.SerialSerialBinding;
-import com.sleepycat.collections.StoredSortedMap;
-import com.sleepycat.collections.StoredValueSet;
-
-/**
- * SampleViews defines the data bindings and collection views for the sample
- * database.
- *
- * @author Mark Hayes
- */
-public class SampleViews {
-
- private StoredSortedMap partMap;
- private StoredSortedMap supplierMap;
- private StoredSortedMap shipmentMap;
- private StoredSortedMap shipmentByPartMap;
- private StoredSortedMap shipmentBySupplierMap;
- private StoredSortedMap supplierByCityMap;
-
- /**
- * Create the data bindings and collection views.
- */
- public SampleViews(SampleDatabase db) {
-
- // Create the data bindings.
- // In this sample, EntityBinding classes are used to bind the stored
- // key/data entry pair to a combined data object. For keys, however,
- // the stored entry is used directly via a SerialBinding and no
- // special binding class is needed.
- //
- ClassCatalog catalog = db.getClassCatalog();
- SerialBinding partKeyBinding =
- new SerialBinding(catalog, PartKey.class);
- EntityBinding partDataBinding =
- new PartBinding(catalog, PartKey.class, PartData.class);
- SerialBinding supplierKeyBinding =
- new SerialBinding(catalog, SupplierKey.class);
- EntityBinding supplierDataBinding =
- new SupplierBinding(catalog, SupplierKey.class,
- SupplierData.class);
- SerialBinding shipmentKeyBinding =
- new SerialBinding(catalog, ShipmentKey.class);
- EntityBinding shipmentDataBinding =
- new ShipmentBinding(catalog, ShipmentKey.class,
- ShipmentData.class);
- SerialBinding cityKeyBinding =
- new SerialBinding(catalog, String.class);
-
- // Create map views for all stores and indices.
- // StoredSortedMap is not used since the stores and indices are
- // ordered by serialized key objects, which do not provide a very
- // useful ordering.
- //
- partMap =
- new StoredSortedMap(db.getPartDatabase(),
- partKeyBinding, partDataBinding, true);
- supplierMap =
- new StoredSortedMap(db.getSupplierDatabase(),
- supplierKeyBinding, supplierDataBinding, true);
- shipmentMap =
- new StoredSortedMap(db.getShipmentDatabase(),
- shipmentKeyBinding, shipmentDataBinding, true);
- shipmentByPartMap =
- new StoredSortedMap(db.getShipmentByPartDatabase(),
- partKeyBinding, shipmentDataBinding, true);
- shipmentBySupplierMap =
- new StoredSortedMap(db.getShipmentBySupplierDatabase(),
- supplierKeyBinding, shipmentDataBinding, true);
- supplierByCityMap =
- new StoredSortedMap(db.getSupplierByCityDatabase(),
- cityKeyBinding, supplierDataBinding, true);
- }
-
- // The views returned below can be accessed using the java.util.Map or
- // java.util.Set interfaces, or using the StoredSortedMap and
- // StoredValueSet classes, which provide additional methods. The entity
- // sets could be obtained directly from the Map.values() method but
- // convenience methods are provided here to return them in order to avoid
- // down-casting elsewhere.
-
- /**
- * Return a map view of the part storage container.
- */
- public StoredSortedMap getPartMap() {
-
- return partMap;
- }
-
- /**
- * Return a map view of the supplier storage container.
- */
- public StoredSortedMap getSupplierMap() {
-
- return supplierMap;
- }
-
- /**
- * Return a map view of the shipment storage container.
- */
- public StoredSortedMap getShipmentMap() {
-
- return shipmentMap;
- }
-
- /**
- * Return an entity set view of the part storage container.
- */
- public StoredValueSet getPartSet() {
-
- return (StoredValueSet) partMap.values();
- }
-
- /**
- * Return an entity set view of the supplier storage container.
- */
- public StoredValueSet getSupplierSet() {
-
- return (StoredValueSet) supplierMap.values();
- }
-
- /**
- * Return an entity set view of the shipment storage container.
- */
- public StoredValueSet getShipmentSet() {
-
- return (StoredValueSet) shipmentMap.values();
- }
-
- /**
- * Return a map view of the shipment-by-part index.
- */
- public StoredSortedMap getShipmentByPartMap() {
-
- return shipmentByPartMap;
- }
-
- /**
- * Return a map view of the shipment-by-supplier index.
- */
- public StoredSortedMap getShipmentBySupplierMap() {
-
- return shipmentBySupplierMap;
- }
-
- /**
- * Return a map view of the supplier-by-city index.
- */
- public final StoredSortedMap getSupplierByCityMap() {
-
- return supplierByCityMap;
- }
-
- /**
- * PartBinding is used to bind the stored key/data entry pair for a part
- * to a combined data object (entity).
- */
- private static class PartBinding extends SerialSerialBinding {
-
- /**
- * Construct the binding object.
- */
- private PartBinding(ClassCatalog classCatalog,
- Class keyClass,
- Class dataClass) {
-
- super(classCatalog, keyClass, dataClass);
- }
-
- /**
- * Create the entity by combining the stored key and data.
- */
- public Object entryToObject(Object keyInput, Object dataInput) {
-
- PartKey key = (PartKey) keyInput;
- PartData data = (PartData) dataInput;
- return new Part(key.getNumber(), data.getName(), data.getColor(),
- data.getWeight(), data.getCity());
- }
-
- /**
- * Create the stored key from the entity.
- */
- public Object objectToKey(Object object) {
-
- Part part = (Part) object;
- return new PartKey(part.getNumber());
- }
-
- /**
- * Create the stored data from the entity.
- */
- public Object objectToData(Object object) {
-
- Part part = (Part) object;
- return new PartData(part.getName(), part.getColor(),
- part.getWeight(), part.getCity());
- }
- }
-
- /**
- * SupplierBinding is used to bind the stored key/data entry pair for a
- * supplier to a combined data object (entity).
- */
- private static class SupplierBinding extends SerialSerialBinding {
-
- /**
- * Construct the binding object.
- */
- private SupplierBinding(ClassCatalog classCatalog,
- Class keyClass,
- Class dataClass) {
-
- super(classCatalog, keyClass, dataClass);
- }
-
- /**
- * Create the entity by combining the stored key and data.
- */
- public Object entryToObject(Object keyInput, Object dataInput) {
-
- SupplierKey key = (SupplierKey) keyInput;
- SupplierData data = (SupplierData) dataInput;
- return new Supplier(key.getNumber(), data.getName(),
- data.getStatus(), data.getCity());
- }
-
- /**
- * Create the stored key from the entity.
- */
- public Object objectToKey(Object object) {
-
- Supplier supplier = (Supplier) object;
- return new SupplierKey(supplier.getNumber());
- }
-
- /**
- * Create the stored data from the entity.
- */
- public Object objectToData(Object object) {
-
- Supplier supplier = (Supplier) object;
- return new SupplierData(supplier.getName(), supplier.getStatus(),
- supplier.getCity());
- }
- }
-
- /**
- * ShipmentBinding is used to bind the stored key/data entry pair for a
- * shipment to a combined data object (entity).
- */
- private static class ShipmentBinding extends SerialSerialBinding {
-
- /**
- * Construct the binding object.
- */
- private ShipmentBinding(ClassCatalog classCatalog,
- Class keyClass,
- Class dataClass) {
-
- super(classCatalog, keyClass, dataClass);
- }
-
- /**
- * Create the entity by combining the stored key and data.
- */
- public Object entryToObject(Object keyInput, Object dataInput) {
-
- ShipmentKey key = (ShipmentKey) keyInput;
- ShipmentData data = (ShipmentData) dataInput;
- return new Shipment(key.getPartNumber(), key.getSupplierNumber(),
- data.getQuantity());
- }
-
- /**
- * Create the stored key from the entity.
- */
- public Object objectToKey(Object object) {
-
- Shipment shipment = (Shipment) object;
- return new ShipmentKey(shipment.getPartNumber(),
- shipment.getSupplierNumber());
- }
-
- /**
- * Create the stored data from the entity.
- */
- public Object objectToData(Object object) {
-
- Shipment shipment = (Shipment) object;
- return new ShipmentData(shipment.getQuantity());
- }
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/entity/Shipment.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/entity/Shipment.java
deleted file mode 100644
index 4deb1347b..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/entity/Shipment.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: Shipment.java,v 1.2 2004/09/22 16:17:10 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.entity;
-
-/**
- * A Shipment represents the combined key/data pair for a shipment entity.
- *
- * <p> In this sample, Shipment is created from the stored key/data entry
- * using a SerialSerialBinding. See {@link SampleViews.ShipmentBinding} for
- * details. Since this class is not used directly for data storage, it does
- * not need to be Serializable. </p>
- *
- * @author Mark Hayes
- */
-public class Shipment {
-
- private String partNumber;
- private String supplierNumber;
- private int quantity;
-
- public Shipment(String partNumber, String supplierNumber, int quantity) {
-
- this.partNumber = partNumber;
- this.supplierNumber = supplierNumber;
- this.quantity = quantity;
- }
-
- public final String getPartNumber() {
-
- return partNumber;
- }
-
- public final String getSupplierNumber() {
-
- return supplierNumber;
- }
-
- public final int getQuantity() {
-
- return quantity;
- }
-
- public String toString() {
-
- return "[Shipment: part=" + partNumber +
- " supplier=" + supplierNumber +
- " quantity=" + quantity + ']';
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/entity/ShipmentData.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/entity/ShipmentData.java
deleted file mode 100644
index 72af8523e..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/entity/ShipmentData.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: ShipmentData.java,v 1.2 2004/09/22 16:17:10 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.entity;
-
-import java.io.Serializable;
-
-/**
- * A ShipmentData serves as the value in the key/value pair for a shipment
- * entity.
- *
- * <p> In this sample, ShipmentData is used only as the storage data for the
- * value, while the Shipment object is used as the value's object
- * representation. Because it is used directly as storage data using
- * serial format, it must be Serializable. </p>
- *
- * @author Mark Hayes
- */
-public class ShipmentData implements Serializable {
-
- private int quantity;
-
- public ShipmentData(int quantity) {
-
- this.quantity = quantity;
- }
-
- public final int getQuantity() {
-
- return quantity;
- }
-
- public String toString() {
-
- return "[ShipmentData: quantity=" + quantity + ']';
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/entity/ShipmentKey.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/entity/ShipmentKey.java
deleted file mode 100644
index f999a3dec..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/entity/ShipmentKey.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: ShipmentKey.java,v 1.2 2004/09/22 16:17:10 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.entity;
-
-import java.io.Serializable;
-
-/**
- * A ShipmentKey serves as the key in the key/data pair for a shipment entity.
- *
- * <p> In this sample, ShipmentKey is used both as the storage entry for the
- * key as well as the object binding to the key. Because it is used directly
- * as storage data using serial format, it must be Serializable. </p>
- *
- * @author Mark Hayes
- */
-public class ShipmentKey implements Serializable {
-
- private String partNumber;
- private String supplierNumber;
-
- public ShipmentKey(String partNumber, String supplierNumber) {
-
- this.partNumber = partNumber;
- this.supplierNumber = supplierNumber;
- }
-
- public final String getPartNumber() {
-
- return partNumber;
- }
-
- public final String getSupplierNumber() {
-
- return supplierNumber;
- }
-
- public String toString() {
-
- return "[ShipmentKey: supplier=" + supplierNumber +
- " part=" + partNumber + ']';
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/entity/Supplier.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/entity/Supplier.java
deleted file mode 100644
index a8e96e67b..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/entity/Supplier.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: Supplier.java,v 1.2 2004/09/22 16:17:10 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.entity;
-
-/**
- * A Supplier represents the combined key/data pair for a supplier entity.
- *
- * <p> In this sample, Supplier is created from the stored key/data entry
- * using a SerialSerialBinding. See {@link SampleViews.SupplierBinding} for
- * details. Since this class is not used directly for data storage, it does
- * not need to be Serializable. </p>
- *
- * @author Mark Hayes
- */
-public class Supplier {
-
- private String number;
- private String name;
- private int status;
- private String city;
-
- public Supplier(String number, String name, int status, String city) {
-
- this.number = number;
- this.name = name;
- this.status = status;
- this.city = city;
- }
-
- public final String getNumber() {
-
- return number;
- }
-
- public final String getName() {
-
- return name;
- }
-
- public final int getStatus() {
-
- return status;
- }
-
- public final String getCity() {
-
- return city;
- }
-
- public String toString() {
-
- return "[Supplier: number=" + number +
- " name=" + name +
- " status=" + status +
- " city=" + city + ']';
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/entity/SupplierData.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/entity/SupplierData.java
deleted file mode 100644
index 3002bf039..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/entity/SupplierData.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: SupplierData.java,v 1.2 2004/09/22 16:17:10 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.entity;
-
-import java.io.Serializable;
-
-/**
- * A SupplierData serves as the value in the key/value pair for a supplier
- * entity.
- *
- * <p> In this sample, SupplierData is used only as the storage data for the
- * value, while the Supplier object is used as the value's object
- * representation. Because it is used directly as storage data using
- * serial format, it must be Serializable. </p>
- *
- * @author Mark Hayes
- */
-public class SupplierData implements Serializable {
-
- private String name;
- private int status;
- private String city;
-
- public SupplierData(String name, int status, String city) {
-
- this.name = name;
- this.status = status;
- this.city = city;
- }
-
- public final String getName() {
-
- return name;
- }
-
- public final int getStatus() {
-
- return status;
- }
-
- public final String getCity() {
-
- return city;
- }
-
- public String toString() {
-
- return "[SupplierData: name=" + name +
- " status=" + status +
- " city=" + city + ']';
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/entity/SupplierKey.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/entity/SupplierKey.java
deleted file mode 100644
index a097a3a8f..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/entity/SupplierKey.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: SupplierKey.java,v 1.2 2004/09/22 16:17:10 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.entity;
-
-import java.io.Serializable;
-
-/**
- * A SupplierKey serves as the key in the key/data pair for a supplier entity.
- *
- * <p> In this sample, SupplierKey is used both as the storage entry for the
- * key as well as the object binding to the key. Because it is used directly
- * as storage data using serial format, it must be Serializable. </p>
- *
- * @author Mark Hayes
- */
-public class SupplierKey implements Serializable {
-
- private String number;
-
- public SupplierKey(String number) {
-
- this.number = number;
- }
-
- public final String getNumber() {
-
- return number;
- }
-
- public String toString() {
-
- return "[SupplierKey: number=" + number + ']';
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/entity/Weight.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/entity/Weight.java
deleted file mode 100644
index b45ab918c..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/entity/Weight.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: Weight.java,v 1.2 2004/09/22 16:17:10 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.entity;
-
-import java.io.Serializable;
-
-/**
- * Weight represents a weight amount and unit of measure.
- *
- * <p> In this sample, Weight is embedded in part data values which are stored
- * as Serial serialized objects; therefore Weight must be Serializable. </p>
- *
- * @author Mark Hayes
- */
-public class Weight implements Serializable {
-
- public final static String GRAMS = "grams";
- public final static String OUNCES = "ounces";
-
- private double amount;
- private String units;
-
- public Weight(double amount, String units) {
-
- this.amount = amount;
- this.units = units;
- }
-
- public final double getAmount() {
-
- return amount;
- }
-
- public final String getUnits() {
-
- return units;
- }
-
- public String toString() {
-
- return "[" + amount + ' ' + units + ']';
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/factory/Part.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/factory/Part.java
deleted file mode 100644
index 7cd54c60d..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/factory/Part.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: Part.java,v 1.3 2004/09/22 16:17:10 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.factory;
-
-import java.io.Serializable;
-
-import com.sleepycat.bind.tuple.MarshalledTupleKeyEntity;
-import com.sleepycat.bind.tuple.TupleInput;
-import com.sleepycat.bind.tuple.TupleOutput;
-
-/**
- * A Part represents the combined key/data pair for a part entity.
- *
- * <p> In this sample, Part is bound to the stored key/data entry by
- * implementing the MarshalledTupleKeyEntity interface. </p>
- *
- * <p> The binding is "tricky" in that it uses this class for both the stored
- * data entry and the combined entity object. To do this, the key field(s)
- * are transient and are set by the binding after the data object has been
- * deserialized. This avoids the use of a PartData class completely. </p>
- *
- * <p> Since this class is used directly for data storage, it must be
- * Serializable. </p>
- *
- * @author Mark Hayes
- */
-public class Part implements Serializable, MarshalledTupleKeyEntity {
-
- private transient String number;
- private String name;
- private String color;
- private Weight weight;
- private String city;
-
- public Part(String number, String name, String color, Weight weight,
- String city) {
-
- this.number = number;
- this.name = name;
- this.color = color;
- this.weight = weight;
- this.city = city;
- }
-
- public final String getNumber() {
-
- return number;
- }
-
- public final String getName() {
-
- return name;
- }
-
- public final String getColor() {
-
- return color;
- }
-
- public final Weight getWeight() {
-
- return weight;
- }
-
- public final String getCity() {
-
- return city;
- }
-
- public String toString() {
-
- return "[Part: number=" + number +
- " name=" + name +
- " color=" + color +
- " weight=" + weight +
- " city=" + city + ']';
- }
-
- // --- MarshalledTupleKeyEntity implementation ---
-
- public void marshalPrimaryKey(TupleOutput keyOutput) {
-
- keyOutput.writeString(this.number);
- }
-
- public void unmarshalPrimaryKey(TupleInput keyInput) {
-
- this.number = keyInput.readString();
- }
-
- public boolean marshalSecondaryKey(String keyName, TupleOutput keyOutput) {
-
- throw new UnsupportedOperationException(keyName);
- }
-
- public boolean nullifyForeignKey(String keyName) {
-
- throw new UnsupportedOperationException(keyName);
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/factory/PartKey.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/factory/PartKey.java
deleted file mode 100644
index a548fb1ff..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/factory/PartKey.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: PartKey.java,v 1.3 2004/09/22 16:17:10 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.factory;
-
-import com.sleepycat.bind.tuple.MarshalledTupleEntry;
-import com.sleepycat.bind.tuple.TupleInput;
-import com.sleepycat.bind.tuple.TupleOutput;
-
-/**
- * A PartKey serves as the key in the key/data pair for a part entity.
- *
- * <p> In this sample, PartKey is bound to the stored key tuple entry by
- * implementing the MarshalledTupleEntry interface, which is called by {@link
- * SampleViews.MarshalledKeyBinding}. </p>
- *
- * @author Mark Hayes
- */
-public class PartKey implements MarshalledTupleEntry {
-
- private String number;
-
- public PartKey(String number) {
-
- this.number = number;
- }
-
- public final String getNumber() {
-
- return number;
- }
-
- public String toString() {
-
- return "[PartKey: number=" + number + ']';
- }
-
- // --- MarshalledTupleEntry implementation ---
-
- public PartKey() {
-
- // A no-argument constructor is necessary only to allow the binding to
- // instantiate objects of this class.
- }
-
- public void marshalEntry(TupleOutput keyOutput) {
-
- keyOutput.writeString(this.number);
- }
-
- public void unmarshalEntry(TupleInput keyInput) {
-
- this.number = keyInput.readString();
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/factory/Sample.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/factory/Sample.java
deleted file mode 100644
index f320191b4..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/factory/Sample.java
+++ /dev/null
@@ -1,248 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: Sample.java,v 1.3 2004/09/22 16:17:10 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.factory;
-
-import java.util.Iterator;
-import java.util.Set;
-
-import com.sleepycat.collections.StoredIterator;
-import com.sleepycat.collections.TransactionRunner;
-import com.sleepycat.collections.TransactionWorker;
-
-/**
- * Sample is the main entry point for the sample program and may be run as
- * follows:
- *
- * <pre>
- * java com.sleepycat.examples.collections.ship.factory.Sample
- * [-h <home-directory> ]
- * </pre>
- *
- * <p> The default for the home directory is ./tmp -- the tmp subdirectory of
- * the current directory where the sample is run. To specify a different home
- * directory, use the -home option. The home directory must exist before
- * running the sample. To recreate the sample database from scratch, delete
- * all files in the home directory before running the sample. </p>
- *
- * @author Mark Hayes
- */
-public class Sample {
-
- private SampleDatabase db;
- private SampleViews views;
-
- /**
- * Run the sample program.
- */
- public static void main(String[] args) {
-
- System.out.println("\nRunning sample: " + Sample.class);
-
- // Parse the command line arguments.
- //
- String homeDir = "./tmp";
- for (int i = 0; i < args.length; i += 1) {
- if (args[i].equals("-h") && i < args.length - 1) {
- i += 1;
- homeDir = args[i];
- } else {
- System.err.println("Usage:\n java " + Sample.class.getName() +
- "\n [-h <home-directory>]");
- System.exit(2);
- }
- }
-
- // Run the sample.
- //
- Sample sample = null;
- try {
- sample = new Sample(homeDir);
- sample.run();
- } catch (Exception e) {
- // If an exception reaches this point, the last transaction did not
- // complete. If the exception is RunRecoveryException, follow
- // the Berkeley DB recovery procedures before running again.
- e.printStackTrace();
- } finally {
- if (sample != null) {
- try {
- // Always attempt to close the database cleanly.
- sample.close();
- } catch (Exception e) {
- System.err.println("Exception during database close:");
- e.printStackTrace();
- }
- }
- }
- }
-
- /**
- * Open the database and views.
- */
- private Sample(String homeDir)
- throws Exception {
-
- db = new SampleDatabase(homeDir);
- views = new SampleViews(db);
- }
-
- /**
- * Close the database cleanly.
- */
- private void close()
- throws Exception {
-
- db.close();
- }
-
- /**
- * Run two transactions to populate and print the database. A
- * TransactionRunner is used to ensure consistent handling of transactions,
- * including deadlock retries. But the best transaction handling mechanism
- * to use depends on the application.
- */
- private void run()
- throws Exception {
-
- TransactionRunner runner = new TransactionRunner(db.getEnvironment());
- runner.run(new PopulateDatabase());
- runner.run(new PrintDatabase());
- }
-
- /**
- * Populate the database in a single transaction.
- */
- private class PopulateDatabase implements TransactionWorker {
-
- public void doWork()
- throws Exception {
- addSuppliers();
- addParts();
- addShipments();
- }
- }
-
- /**
- * Print the database in a single transaction. All entities are printed
- * and the indices are used to print the entities for certain keys.
- *
- * <p> Note the use of special iterator() methods. These are used here
- * with indices to find the shipments for certain keys. For details on
- * database iterators see {@link StoredIterator}. </p>
- */
- private class PrintDatabase implements TransactionWorker {
-
- public void doWork()
- throws Exception {
- printValues("Parts",
- views.getPartSet().iterator());
- printValues("Suppliers",
- views.getSupplierSet().iterator());
- printValues("Suppliers for City Paris",
- views.getSupplierByCityMap().duplicates(
- "Paris").iterator());
- printValues("Shipments",
- views.getShipmentSet().iterator());
- printValues("Shipments for Part P1",
- views.getShipmentByPartMap().duplicates(
- new PartKey("P1")).iterator());
- printValues("Shipments for Supplier S1",
- views.getShipmentBySupplierMap().duplicates(
- new SupplierKey("S1")).iterator());
- }
- }
-
- /**
- * Populate the part entities in the database. If the part set is not
- * empty, assume that this has already been done.
- */
- private void addParts() {
-
- Set parts = views.getPartSet();
- if (parts.isEmpty()) {
- System.out.println("Adding Parts");
- parts.add(new Part("P1", "Nut", "Red",
- new Weight(12.0, Weight.GRAMS), "London"));
- parts.add(new Part("P2", "Bolt", "Green",
- new Weight(17.0, Weight.GRAMS), "Paris"));
- parts.add(new Part("P3", "Screw", "Blue",
- new Weight(17.0, Weight.GRAMS), "Rome"));
- parts.add(new Part("P4", "Screw", "Red",
- new Weight(14.0, Weight.GRAMS), "London"));
- parts.add(new Part("P5", "Cam", "Blue",
- new Weight(12.0, Weight.GRAMS), "Paris"));
- parts.add(new Part("P6", "Cog", "Red",
- new Weight(19.0, Weight.GRAMS), "London"));
- }
- }
-
- /**
- * Populate the supplier entities in the database. If the supplier set is
- * not empty, assume that this has already been done.
- */
- private void addSuppliers() {
-
- Set suppliers = views.getSupplierSet();
- if (suppliers.isEmpty()) {
- System.out.println("Adding Suppliers");
- suppliers.add(new Supplier("S1", "Smith", 20, "London"));
- suppliers.add(new Supplier("S2", "Jones", 10, "Paris"));
- suppliers.add(new Supplier("S3", "Blake", 30, "Paris"));
- suppliers.add(new Supplier("S4", "Clark", 20, "London"));
- suppliers.add(new Supplier("S5", "Adams", 30, "Athens"));
- }
- }
-
- /**
- * Populate the shipment entities in the database. If the shipment set
- * is not empty, assume that this has already been done.
- */
- private void addShipments() {
-
- Set shipments = views.getShipmentSet();
- if (shipments.isEmpty()) {
- System.out.println("Adding Shipments");
- shipments.add(new Shipment("P1", "S1", 300));
- shipments.add(new Shipment("P2", "S1", 200));
- shipments.add(new Shipment("P3", "S1", 400));
- shipments.add(new Shipment("P4", "S1", 200));
- shipments.add(new Shipment("P5", "S1", 100));
- shipments.add(new Shipment("P6", "S1", 100));
- shipments.add(new Shipment("P1", "S2", 300));
- shipments.add(new Shipment("P2", "S2", 400));
- shipments.add(new Shipment("P2", "S3", 200));
- shipments.add(new Shipment("P2", "S4", 200));
- shipments.add(new Shipment("P4", "S4", 300));
- shipments.add(new Shipment("P5", "S4", 400));
- }
- }
-
- /**
- * Print the objects returned by an iterator of entity value objects.
- *
- * <p><b> IMPORTANT: All database iterators must be closed to avoid
- * serious database problems. If the iterator is not closed, the
- * underlying Berkeley DB cursor is not closed either. </b></p>
- */
- private void printValues(String label, Iterator iterator) {
-
- System.out.println("\n--- " + label + " ---");
- try {
- while (iterator.hasNext()) {
- System.out.println(iterator.next().toString());
- }
- } finally {
- // IMPORTANT: Use StoredIterator to close all database
- // iterators. If java.util.Iterator is in hand, you can safely
- // close it by calling StoredIterator.close(Iterator).
- StoredIterator.close(iterator);
- }
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/factory/SampleDatabase.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/factory/SampleDatabase.java
deleted file mode 100644
index 0a8af819f..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/factory/SampleDatabase.java
+++ /dev/null
@@ -1,225 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: SampleDatabase.java,v 1.3 2004/09/22 16:17:10 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.factory;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-
-import com.sleepycat.bind.serial.StoredClassCatalog;
-import com.sleepycat.collections.TupleSerialFactory;
-import com.sleepycat.db.Database;
-import com.sleepycat.db.DatabaseConfig;
-import com.sleepycat.db.DatabaseException;
-import com.sleepycat.db.DatabaseType;
-import com.sleepycat.db.Environment;
-import com.sleepycat.db.EnvironmentConfig;
-import com.sleepycat.db.SecondaryConfig;
-import com.sleepycat.db.SecondaryDatabase;
-
-/**
- * SampleDatabase defines the storage containers, indices and foreign keys
- * for the sample database.
- *
- * @author Mark Hayes
- */
-public class SampleDatabase {
-
- private static final String CLASS_CATALOG = "java_class_catalog";
- private static final String SUPPLIER_STORE = "supplier_store";
- private static final String PART_STORE = "part_store";
- private static final String SHIPMENT_STORE = "shipment_store";
- private static final String SHIPMENT_PART_INDEX = "shipment_part_index";
- private static final String SHIPMENT_SUPPLIER_INDEX =
- "shipment_supplier_index";
- private static final String SUPPLIER_CITY_INDEX = "supplier_city_index";
-
- private Environment env;
- private Database partDb;
- private Database supplierDb;
- private Database shipmentDb;
- private SecondaryDatabase supplierByCityDb;
- private SecondaryDatabase shipmentByPartDb;
- private SecondaryDatabase shipmentBySupplierDb;
- private StoredClassCatalog javaCatalog;
- private TupleSerialFactory factory;
-
- /**
- * Open all storage containers, indices, and catalogs.
- */
- public SampleDatabase(String homeDirectory)
- throws DatabaseException, FileNotFoundException {
-
- // Open the Berkeley DB environment in transactional mode.
- //
- System.out.println("Opening environment in: " + homeDirectory);
- EnvironmentConfig envConfig = new EnvironmentConfig();
- envConfig.setTransactional(true);
- envConfig.setAllowCreate(true);
- envConfig.setInitializeCache(true);
- envConfig.setInitializeLocking(true);
- env = new Environment(new File(homeDirectory), envConfig);
-
- // Set the Berkeley DB config for opening all stores.
- //
- DatabaseConfig dbConfig = new DatabaseConfig();
- dbConfig.setTransactional(true);
- dbConfig.setAllowCreate(true);
- dbConfig.setType(DatabaseType.BTREE);
-
- // Create the Serial class catalog. This holds the serialized class
- // format for all database records of serial format.
- //
- Database catalogDb = env.openDatabase(null, CLASS_CATALOG, null,
- dbConfig);
- javaCatalog = new StoredClassCatalog(catalogDb);
-
- // Use the TupleSerialDbFactory for a Serial/Tuple-based database
- // where marshalling interfaces are used.
- //
- factory = new TupleSerialFactory(javaCatalog);
-
- // Open the Berkeley DB database for the part, supplier and shipment
- // stores. The stores are opened with no duplicate keys allowed.
- //
- partDb = env.openDatabase(null, PART_STORE, null, dbConfig);
-
- supplierDb = env.openDatabase(null, SUPPLIER_STORE, null, dbConfig);
-
- shipmentDb = env.openDatabase(null, SHIPMENT_STORE, null, dbConfig);
-
- // Open the SecondaryDatabase for the city index of the supplier store,
- // and for the part and supplier indices of the shipment store.
- // Duplicate keys are allowed since more than one supplier may be in
- // the same city, and more than one shipment may exist for the same
- // supplier or part. A foreign key constraint is defined for the
- // supplier and part indices to ensure that a shipment only refers to
- // existing part and supplier keys. The CASCADE delete action means
- // that shipments will be deleted if their associated part or supplier
- // is deleted.
- //
- SecondaryConfig secConfig = new SecondaryConfig();
- secConfig.setTransactional(true);
- secConfig.setAllowCreate(true);
- secConfig.setType(DatabaseType.BTREE);
- secConfig.setSortedDuplicates(true);
-
- secConfig.setKeyCreator(factory.getKeyCreator(Supplier.class,
- Supplier.CITY_KEY));
- supplierByCityDb = env.openSecondaryDatabase(null, SUPPLIER_CITY_INDEX,
- null,
- supplierDb,
- secConfig);
-
- secConfig.setKeyCreator(factory.getKeyCreator(Shipment.class,
- Shipment.PART_KEY));
- shipmentByPartDb = env.openSecondaryDatabase(null, SHIPMENT_PART_INDEX,
- null,
- shipmentDb,
- secConfig);
-
- secConfig.setKeyCreator(factory.getKeyCreator(Shipment.class,
- Shipment.SUPPLIER_KEY));
- shipmentBySupplierDb = env.openSecondaryDatabase(null,
- SHIPMENT_SUPPLIER_INDEX,
- null,
- shipmentDb,
- secConfig);
- }
-
- /**
- * Return the tuple-serial factory.
- */
- public final TupleSerialFactory getFactory() {
-
- return factory;
- }
-
- /**
- * Return the storage environment for the database.
- */
- public final Environment getEnvironment() {
-
- return env;
- }
-
- /**
- * Return the class catalog.
- */
- public final StoredClassCatalog getClassCatalog() {
-
- return javaCatalog;
- }
-
- /**
- * Return the part storage container.
- */
- public final Database getPartDatabase() {
-
- return partDb;
- }
-
- /**
- * Return the supplier storage container.
- */
- public final Database getSupplierDatabase() {
-
- return supplierDb;
- }
-
- /**
- * Return the shipment storage container.
- */
- public final Database getShipmentDatabase() {
-
- return shipmentDb;
- }
-
- /**
- * Return the shipment-by-part index.
- */
- public final SecondaryDatabase getShipmentByPartDatabase() {
-
- return shipmentByPartDb;
- }
-
- /**
- * Return the shipment-by-supplier index.
- */
- public final SecondaryDatabase getShipmentBySupplierDatabase() {
-
- return shipmentBySupplierDb;
- }
-
- /**
- * Return the supplier-by-city index.
- */
- public final SecondaryDatabase getSupplierByCityDatabase() {
-
- return supplierByCityDb;
- }
-
- /**
- * Close all databases and the environment.
- */
- public void close()
- throws DatabaseException {
-
- // Close secondary databases, then primary databases.
- supplierByCityDb.close();
- shipmentByPartDb.close();
- shipmentBySupplierDb.close();
- partDb.close();
- supplierDb.close();
- shipmentDb.close();
- // And don't forget to close the catalog and the environment.
- javaCatalog.close();
- env.close();
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/factory/SampleViews.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/factory/SampleViews.java
deleted file mode 100644
index 1c78cac03..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/factory/SampleViews.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: SampleViews.java,v 1.2 2004/09/22 16:17:10 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.factory;
-
-import com.sleepycat.collections.StoredSortedMap;
-import com.sleepycat.collections.StoredSortedValueSet;
-import com.sleepycat.collections.TupleSerialFactory;
-
-/**
- * SampleViews defines the data bindings and collection views for the sample
- * database.
- *
- * @author Mark Hayes
- */
-public class SampleViews {
-
- private StoredSortedMap partMap;
- private StoredSortedMap supplierMap;
- private StoredSortedMap shipmentMap;
- private StoredSortedMap shipmentByPartMap;
- private StoredSortedMap shipmentBySupplierMap;
- private StoredSortedMap supplierByCityMap;
-
- /**
- * Create the data bindings and collection views.
- */
- public SampleViews(SampleDatabase db) {
-
- // Use the TupleSerialFactory for a Serial/Tuple-based database
- // where marshalling interfaces are used.
- //
- TupleSerialFactory factory = db.getFactory();
-
- // Create map views for all stores and indices.
- // StoredSortedMap is used since the stores and indices are ordered
- // (they use the DB_BTREE access method).
- //
- partMap =
- factory.newSortedMap(db.getPartDatabase(),
- PartKey.class, Part.class, true);
- supplierMap =
- factory.newSortedMap(db.getSupplierDatabase(),
- SupplierKey.class, Supplier.class, true);
- shipmentMap =
- factory.newSortedMap(db.getShipmentDatabase(),
- ShipmentKey.class, Shipment.class, true);
- shipmentByPartMap =
- factory.newSortedMap(db.getShipmentByPartDatabase(),
- PartKey.class, Shipment.class, true);
- shipmentBySupplierMap =
- factory.newSortedMap(db.getShipmentBySupplierDatabase(),
- SupplierKey.class, Shipment.class, true);
- supplierByCityMap =
- factory.newSortedMap(db.getSupplierByCityDatabase(),
- String.class, Supplier.class, true);
- }
-
- // The views returned below can be accessed using the java.util.Map or
- // java.util.Set interfaces, or using the StoredMap and StoredValueSet
- // classes, which provide additional methods. The entity sets could be
- // obtained directly from the Map.values() method but convenience methods
- // are provided here to return them in order to avoid down-casting
- // elsewhere.
-
- /**
- * Return a map view of the part storage container.
- */
- public StoredSortedMap getPartMap() {
-
- return partMap;
- }
-
- /**
- * Return a map view of the supplier storage container.
- */
- public StoredSortedMap getSupplierMap() {
-
- return supplierMap;
- }
-
- /**
- * Return a map view of the shipment storage container.
- */
- public StoredSortedMap getShipmentMap() {
-
- return shipmentMap;
- }
-
- /**
- * Return an entity set view of the part storage container.
- */
- public StoredSortedValueSet getPartSet() {
-
- return (StoredSortedValueSet) partMap.values();
- }
-
- /**
- * Return an entity set view of the supplier storage container.
- */
- public StoredSortedValueSet getSupplierSet() {
-
- return (StoredSortedValueSet) supplierMap.values();
- }
-
- /**
- * Return an entity set view of the shipment storage container.
- */
- public StoredSortedValueSet getShipmentSet() {
-
- return (StoredSortedValueSet) shipmentMap.values();
- }
-
- /**
- * Return a map view of the shipment-by-part index.
- */
- public StoredSortedMap getShipmentByPartMap() {
-
- return shipmentByPartMap;
- }
-
- /**
- * Return a map view of the shipment-by-supplier index.
- */
- public StoredSortedMap getShipmentBySupplierMap() {
-
- return shipmentBySupplierMap;
- }
-
- /**
- * Return a map view of the supplier-by-city index.
- */
- public StoredSortedMap getSupplierByCityMap() {
-
- return supplierByCityMap;
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/factory/Shipment.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/factory/Shipment.java
deleted file mode 100644
index 7e15e9d41..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/factory/Shipment.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: Shipment.java,v 1.3 2004/09/22 16:17:10 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.factory;
-
-import java.io.Serializable;
-
-import com.sleepycat.bind.tuple.MarshalledTupleKeyEntity;
-import com.sleepycat.bind.tuple.TupleInput;
-import com.sleepycat.bind.tuple.TupleOutput;
-
-/**
- * A Shipment represents the combined key/data pair for a shipment entity.
- *
- * <p> In this sample, Shipment is bound to the stored key/data entry by
- * implementing the MarshalledTupleKeyEntity interface. </p>
- *
- * <p> The binding is "tricky" in that it uses this class for both the stored
- * data entry and the combined entity object. To do this, the key field(s)
- * are transient and are set by the binding after the data object has been
- * deserialized. This avoids the use of a ShipmentData class completely. </p>
- *
- * <p> Since this class is used directly for data storage, it must be
- * Serializable. </p>
- *
- * @author Mark Hayes
- */
-public class Shipment implements Serializable, MarshalledTupleKeyEntity {
-
- static final String PART_KEY = "part";
- static final String SUPPLIER_KEY = "supplier";
-
- private transient String partNumber;
- private transient String supplierNumber;
- private int quantity;
-
- public Shipment(String partNumber, String supplierNumber, int quantity) {
-
- this.partNumber = partNumber;
- this.supplierNumber = supplierNumber;
- this.quantity = quantity;
- }
-
- public final String getPartNumber() {
-
- return partNumber;
- }
-
- public final String getSupplierNumber() {
-
- return supplierNumber;
- }
-
- public final int getQuantity() {
-
- return quantity;
- }
-
- public String toString() {
-
- return "[Shipment: part=" + partNumber +
- " supplier=" + supplierNumber +
- " quantity=" + quantity + ']';
- }
-
- // --- MarshalledTupleKeyEntity implementation ---
-
- public void marshalPrimaryKey(TupleOutput keyOutput) {
-
- keyOutput.writeString(this.partNumber);
- keyOutput.writeString(this.supplierNumber);
- }
-
- public void unmarshalPrimaryKey(TupleInput keyInput) {
-
- this.partNumber = keyInput.readString();
- this.supplierNumber = keyInput.readString();
- }
-
- public boolean marshalSecondaryKey(String keyName, TupleOutput keyOutput) {
-
- if (keyName.equals(PART_KEY)) {
- keyOutput.writeString(this.partNumber);
- return true;
- } else if (keyName.equals(SUPPLIER_KEY)) {
- keyOutput.writeString(this.supplierNumber);
- return true;
- } else {
- throw new UnsupportedOperationException(keyName);
- }
- }
-
- public boolean nullifyForeignKey(String keyName) {
-
- throw new UnsupportedOperationException(keyName);
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/factory/ShipmentKey.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/factory/ShipmentKey.java
deleted file mode 100644
index ea570033a..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/factory/ShipmentKey.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: ShipmentKey.java,v 1.3 2004/09/22 16:17:10 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.factory;
-
-import com.sleepycat.bind.tuple.MarshalledTupleEntry;
-import com.sleepycat.bind.tuple.TupleInput;
-import com.sleepycat.bind.tuple.TupleOutput;
-
-/**
- * A ShipmentKey serves as the key in the key/data pair for a shipment entity.
- *
- * <p> In this sample, ShipmentKey is bound to the stored key tuple entry by
- * implementing the MarshalledTupleEntry interface, which is called by {@link
- * SampleViews.MarshalledKeyBinding}. </p>
- *
- * @author Mark Hayes
- */
-public class ShipmentKey implements MarshalledTupleEntry {
-
- private String partNumber;
- private String supplierNumber;
-
- public ShipmentKey(String partNumber, String supplierNumber) {
-
- this.partNumber = partNumber;
- this.supplierNumber = supplierNumber;
- }
-
- public final String getPartNumber() {
-
- return partNumber;
- }
-
- public final String getSupplierNumber() {
-
- return supplierNumber;
- }
-
- public String toString() {
-
- return "[ShipmentKey: supplier=" + supplierNumber +
- " part=" + partNumber + ']';
- }
-
- // --- MarshalledTupleEntry implementation ---
-
- public ShipmentKey() {
-
- // A no-argument constructor is necessary only to allow the binding to
- // instantiate objects of this class.
- }
-
- public void marshalEntry(TupleOutput keyOutput) {
-
- keyOutput.writeString(this.partNumber);
- keyOutput.writeString(this.supplierNumber);
- }
-
- public void unmarshalEntry(TupleInput keyInput) {
-
- this.partNumber = keyInput.readString();
- this.supplierNumber = keyInput.readString();
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/factory/Supplier.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/factory/Supplier.java
deleted file mode 100644
index 828df1e35..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/factory/Supplier.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: Supplier.java,v 1.3 2004/09/22 16:17:10 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.factory;
-
-import java.io.Serializable;
-
-import com.sleepycat.bind.tuple.MarshalledTupleKeyEntity;
-import com.sleepycat.bind.tuple.TupleInput;
-import com.sleepycat.bind.tuple.TupleOutput;
-
-/**
- * A Supplier represents the combined key/data pair for a supplier entity.
- *
- * <p> In this sample, Supplier is bound to the stored key/data entry by
- * implementing the MarshalledTupleKeyEntity interface. </p>
- *
- * <p> The binding is "tricky" in that it uses this class for both the stored
- * data entry and the combined entity object. To do this, the key field(s) are
- * transient and are set by the binding after the data object has been
- * deserialized. This avoids the use of a SupplierData class completely. </p>
- *
- * <p> Since this class is used directly for data storage, it must be
- * Serializable. </p>
- *
- * @author Mark Hayes
- */
-public class Supplier implements Serializable, MarshalledTupleKeyEntity {
-
- static final String CITY_KEY = "city";
-
- private transient String number;
- private String name;
- private int status;
- private String city;
-
- public Supplier(String number, String name, int status, String city) {
-
- this.number = number;
- this.name = name;
- this.status = status;
- this.city = city;
- }
-
- public final String getNumber() {
-
- return number;
- }
-
- public final String getName() {
-
- return name;
- }
-
- public final int getStatus() {
-
- return status;
- }
-
- public final String getCity() {
-
- return city;
- }
-
- public String toString() {
-
- return "[Supplier: number=" + number +
- " name=" + name +
- " status=" + status +
- " city=" + city + ']';
- }
-
- // --- MarshalledTupleKeyEntity implementation ---
-
- public void marshalPrimaryKey(TupleOutput keyOutput) {
-
- keyOutput.writeString(this.number);
- }
-
- public void unmarshalPrimaryKey(TupleInput keyInput) {
-
- this.number = keyInput.readString();
- }
-
- public boolean marshalSecondaryKey(String keyName, TupleOutput keyOutput) {
-
- if (keyName.equals(CITY_KEY)) {
- if (this.city != null) {
- keyOutput.writeString(this.city);
- return true;
- } else {
- return false;
- }
- } else {
- throw new UnsupportedOperationException(keyName);
- }
- }
-
- public boolean nullifyForeignKey(String keyName) {
-
- throw new UnsupportedOperationException(keyName);
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/factory/SupplierKey.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/factory/SupplierKey.java
deleted file mode 100644
index 8ffac0062..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/factory/SupplierKey.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: SupplierKey.java,v 1.3 2004/09/22 16:17:11 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.factory;
-
-import com.sleepycat.bind.tuple.MarshalledTupleEntry;
-import com.sleepycat.bind.tuple.TupleInput;
-import com.sleepycat.bind.tuple.TupleOutput;
-
-/**
- * A SupplierKey serves as the key in the key/data pair for a supplier entity.
- *
- * <p> In this sample, SupplierKey is bound to the stored key tuple entry by
- * implementing the MarshalledTupleEntry interface, which is called by {@link
- * SampleViews.MarshalledKeyBinding}. </p>
- *
- * @author Mark Hayes
- */
-public class SupplierKey implements MarshalledTupleEntry {
-
- private String number;
-
- public SupplierKey(String number) {
-
- this.number = number;
- }
-
- public final String getNumber() {
-
- return number;
- }
-
- public String toString() {
-
- return "[SupplierKey: number=" + number + ']';
- }
-
- // --- MarshalledTupleEntry implementation ---
-
- public SupplierKey() {
-
- // A no-argument constructor is necessary only to allow the binding to
- // instantiate objects of this class.
- }
-
- public void marshalEntry(TupleOutput keyOutput) {
-
- keyOutput.writeString(this.number);
- }
-
- public void unmarshalEntry(TupleInput keyInput) {
-
- this.number = keyInput.readString();
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/factory/Weight.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/factory/Weight.java
deleted file mode 100644
index 3da852c7f..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/factory/Weight.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: Weight.java,v 1.2 2004/09/22 16:17:11 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.factory;
-
-import java.io.Serializable;
-
-/**
- * Weight represents a weight amount and unit of measure.
- *
- * <p> In this sample, Weight is embedded in part data values which are stored
- * as Java serialized objects; therefore Weight must be Serializable. </p>
- *
- * @author Mark Hayes
- */
-public class Weight implements Serializable {
-
- public final static String GRAMS = "grams";
- public final static String OUNCES = "ounces";
-
- private double amount;
- private String units;
-
- public Weight(double amount, String units) {
-
- this.amount = amount;
- this.units = units;
- }
-
- public final double getAmount() {
-
- return amount;
- }
-
- public final String getUnits() {
-
- return units;
- }
-
- public String toString() {
-
- return "[" + amount + ' ' + units + ']';
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/index/PartData.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/index/PartData.java
deleted file mode 100644
index 8c052acd1..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/index/PartData.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: PartData.java,v 1.2 2004/09/22 16:17:11 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.index;
-
-import java.io.Serializable;
-
-/**
- * A PartData serves as the data in the key/data pair for a part entity.
- *
- * <p> In this sample, PartData is used both as the storage data for the data
- * as well as the object binding to the data. Because it is used directly as
- * storage data using serial format, it must be Serializable. </p>
- *
- * @author Mark Hayes
- */
-public class PartData implements Serializable {
-
- private String name;
- private String color;
- private Weight weight;
- private String city;
-
- public PartData(String name, String color, Weight weight, String city) {
-
- this.name = name;
- this.color = color;
- this.weight = weight;
- this.city = city;
- }
-
- public final String getName() {
-
- return name;
- }
-
- public final String getColor() {
-
- return color;
- }
-
- public final Weight getWeight() {
-
- return weight;
- }
-
- public final String getCity() {
-
- return city;
- }
-
- public String toString() {
-
- return "[PartData: name=" + name +
- " color=" + color +
- " weight=" + weight +
- " city=" + city + ']';
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/index/PartKey.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/index/PartKey.java
deleted file mode 100644
index f6268d558..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/index/PartKey.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: PartKey.java,v 1.2 2004/09/22 16:17:11 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.index;
-
-import java.io.Serializable;
-
-/**
- * A PartKey serves as the key in the key/data pair for a part entity.
- *
- * <p> In this sample, PartKey is used both as the storage data for the key as
- * well as the object binding to the key. Because it is used directly as
- * storage data using serial format, it must be Serializable. </p>
- *
- * @author Mark Hayes
- */
-public class PartKey implements Serializable {
-
- private String number;
-
- public PartKey(String number) {
-
- this.number = number;
- }
-
- public final String getNumber() {
-
- return number;
- }
-
- public String toString() {
-
- return "[PartKey: number=" + number + ']';
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/index/Sample.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/index/Sample.java
deleted file mode 100644
index 7db349381..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/index/Sample.java
+++ /dev/null
@@ -1,303 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: Sample.java,v 1.4 2004/09/22 16:17:11 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.index;
-
-import java.io.FileNotFoundException;
-import java.util.Iterator;
-import java.util.Map;
-
-import com.sleepycat.collections.StoredIterator;
-import com.sleepycat.collections.TransactionRunner;
-import com.sleepycat.collections.TransactionWorker;
-import com.sleepycat.db.DatabaseException;
-
-/**
- * Sample is the main entry point for the sample program and may be run as
- * follows:
- *
- * <pre>
- * java com.sleepycat.examples.collections.ship.index.Sample
- * [-h <home-directory> ]
- * </pre>
- *
- * <p> The default for the home directory is ./tmp -- the tmp subdirectory of
- * the current directory where the sample is run. The home directory must exist
- * before running the sample. To recreate the sample database from scratch,
- * delete all files in the home directory before running the sample. </p>
- *
- * @author Mark Hayes
- */
-public class Sample {
-
- private SampleDatabase db;
- private SampleViews views;
-
- /**
- * Run the sample program.
- */
- public static void main(String[] args) {
-
- System.out.println("\nRunning sample: " + Sample.class);
-
- // Parse the command line arguments.
- //
- String homeDir = "./tmp";
- for (int i = 0; i < args.length; i += 1) {
- if (args[i].equals("-h") && i < args.length - 1) {
- i += 1;
- homeDir = args[i];
- } else {
- System.err.println("Usage:\n java " + Sample.class.getName() +
- "\n [-h <home-directory>]");
- System.exit(2);
- }
- }
-
- // Run the sample.
- //
- Sample sample = null;
- try {
- sample = new Sample(homeDir);
- sample.run();
- } catch (Exception e) {
- // If an exception reaches this point, the last transaction did not
- // complete. If the exception is RunRecoveryException, follow
- // the Berkeley DB recovery procedures before running again.
- e.printStackTrace();
- } finally {
- if (sample != null) {
- try {
- // Always attempt to close the database cleanly.
- sample.close();
- } catch (Exception e) {
- System.err.println("Exception during database close:");
- e.printStackTrace();
- }
- }
- }
- }
-
- /**
- * Open the database and views.
- */
- private Sample(String homeDir)
- throws DatabaseException, FileNotFoundException {
-
- db = new SampleDatabase(homeDir);
- views = new SampleViews(db);
- }
-
- /**
- * Close the database cleanly.
- */
- private void close()
- throws DatabaseException {
-
- db.close();
- }
-
- /**
- * Run two transactions to populate and print the database. A
- * TransactionRunner is used to ensure consistent handling of transactions,
- * including deadlock retries. But the best transaction handling mechanism
- * to use depends on the application.
- */
- private void run()
- throws Exception {
-
- TransactionRunner runner = new TransactionRunner(db.getEnvironment());
- runner.run(new PopulateDatabase());
- runner.run(new PrintDatabase());
- }
-
- /**
- * Populate the database in a single transaction.
- */
- private class PopulateDatabase implements TransactionWorker {
-
- public void doWork()
- throws Exception {
- addSuppliers();
- addParts();
- addShipments();
- }
- }
-
- /**
- * Print the database in a single transaction. All entities are printed
- * and the indices are used to print the entities for certain keys.
- *
- * <p> Note the use of special iterator() methods. These are used here
- * with indices to find the shipments for certain keys. For details on
- * database iterators see {@link StoredIterator}. </p>
- */
- private class PrintDatabase implements TransactionWorker {
-
- public void doWork()
- throws Exception {
- printEntries("Parts",
- views.getPartEntrySet().iterator());
- printEntries("Suppliers",
- views.getSupplierEntrySet().iterator());
- printValues("Suppliers for City Paris",
- views.getSupplierByCityMap().duplicates(
- "Paris").iterator());
- printEntries("Shipments",
- views.getShipmentEntrySet().iterator());
- printValues("Shipments for Part P1",
- views.getShipmentByPartMap().duplicates(
- new PartKey("P1")).iterator());
- printValues("Shipments for Supplier S1",
- views.getShipmentBySupplierMap().duplicates(
- new SupplierKey("S1")).iterator());
- }
- }
-
- /**
- * Populate the part entities in the database. If the part map is not
- * empty, assume that this has already been done.
- */
- private void addParts() {
-
- Map parts = views.getPartMap();
- if (parts.isEmpty()) {
- System.out.println("Adding Parts");
- parts.put(new PartKey("P1"),
- new PartData("Nut", "Red",
- new Weight(12.0, Weight.GRAMS),
- "London"));
- parts.put(new PartKey("P2"),
- new PartData("Bolt", "Green",
- new Weight(17.0, Weight.GRAMS),
- "Paris"));
- parts.put(new PartKey("P3"),
- new PartData("Screw", "Blue",
- new Weight(17.0, Weight.GRAMS),
- "Rome"));
- parts.put(new PartKey("P4"),
- new PartData("Screw", "Red",
- new Weight(14.0, Weight.GRAMS),
- "London"));
- parts.put(new PartKey("P5"),
- new PartData("Cam", "Blue",
- new Weight(12.0, Weight.GRAMS),
- "Paris"));
- parts.put(new PartKey("P6"),
- new PartData("Cog", "Red",
- new Weight(19.0, Weight.GRAMS),
- "London"));
- }
- }
-
- /**
- * Populate the supplier entities in the database. If the supplier map is
- * not empty, assume that this has already been done.
- */
- private void addSuppliers() {
-
- Map suppliers = views.getSupplierMap();
- if (suppliers.isEmpty()) {
- System.out.println("Adding Suppliers");
- suppliers.put(new SupplierKey("S1"),
- new SupplierData("Smith", 20, "London"));
- suppliers.put(new SupplierKey("S2"),
- new SupplierData("Jones", 10, "Paris"));
- suppliers.put(new SupplierKey("S3"),
- new SupplierData("Blake", 30, "Paris"));
- suppliers.put(new SupplierKey("S4"),
- new SupplierData("Clark", 20, "London"));
- suppliers.put(new SupplierKey("S5"),
- new SupplierData("Adams", 30, "Athens"));
- }
- }
-
- /**
- * Populate the shipment entities in the database. If the shipment map
- * is not empty, assume that this has already been done.
- */
- private void addShipments() {
-
- Map shipments = views.getShipmentMap();
- if (shipments.isEmpty()) {
- System.out.println("Adding Shipments");
- shipments.put(new ShipmentKey("P1", "S1"),
- new ShipmentData(300));
- shipments.put(new ShipmentKey("P2", "S1"),
- new ShipmentData(200));
- shipments.put(new ShipmentKey("P3", "S1"),
- new ShipmentData(400));
- shipments.put(new ShipmentKey("P4", "S1"),
- new ShipmentData(200));
- shipments.put(new ShipmentKey("P5", "S1"),
- new ShipmentData(100));
- shipments.put(new ShipmentKey("P6", "S1"),
- new ShipmentData(100));
- shipments.put(new ShipmentKey("P1", "S2"),
- new ShipmentData(300));
- shipments.put(new ShipmentKey("P2", "S2"),
- new ShipmentData(400));
- shipments.put(new ShipmentKey("P2", "S3"),
- new ShipmentData(200));
- shipments.put(new ShipmentKey("P2", "S4"),
- new ShipmentData(200));
- shipments.put(new ShipmentKey("P4", "S4"),
- new ShipmentData(300));
- shipments.put(new ShipmentKey("P5", "S4"),
- new ShipmentData(400));
- }
- }
-
- /**
- * Print the key/value objects returned by an iterator of Map.Entry
- * objects.
- *
- * <p><b> IMPORTANT: All database iterators must be closed to avoid
- * serious database problems. If the iterator is not closed, the
- * underlying Berkeley DB cursor is not closed either. </b></p>
- */
- private void printEntries(String label, Iterator iterator) {
-
- System.out.println("\n--- " + label + " ---");
- try {
- while (iterator.hasNext()) {
- Map.Entry entry = (Map.Entry) iterator.next();
- System.out.println(entry.getKey().toString());
- System.out.println(entry.getValue().toString());
- }
- } finally {
- // IMPORTANT: Use StoredIterator to close all database
- // iterators. If java.util.Iterator is in hand, you can safely
- // close it by calling StoredIterator.close(Iterator).
- StoredIterator.close(iterator);
- }
- }
-
- /**
- * Print the objects returned by an iterator of value objects.
- *
- * <p><b> IMPORTANT: All database iterators must be closed to avoid
- * serious database problems. If the iterator is not closed, the
- * underlying Berkeley DB cursor is not closed either. </b></p>
- */
- private void printValues(String label, Iterator iterator) {
-
- System.out.println("\n--- " + label + " ---");
- try {
- while (iterator.hasNext()) {
- System.out.println(iterator.next().toString());
- }
- } finally {
- // IMPORTANT: Use StoredIterator to close all database
- // iterators. If java.util.Iterator is in hand, you can safely
- // close it by calling StoredIterator.close(Iterator).
- StoredIterator.close(iterator);
- }
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/index/SampleDatabase.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/index/SampleDatabase.java
deleted file mode 100644
index c30d4722e..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/index/SampleDatabase.java
+++ /dev/null
@@ -1,330 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: SampleDatabase.java,v 1.4 2004/09/22 18:00:57 bostic Exp $
- */
-
-package com.sleepycat.examples.collections.ship.index;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-
-import com.sleepycat.bind.serial.ClassCatalog;
-import com.sleepycat.bind.serial.SerialSerialKeyCreator;
-import com.sleepycat.bind.serial.StoredClassCatalog;
-import com.sleepycat.db.Database;
-import com.sleepycat.db.DatabaseConfig;
-import com.sleepycat.db.DatabaseException;
-import com.sleepycat.db.DatabaseType;
-import com.sleepycat.db.Environment;
-import com.sleepycat.db.EnvironmentConfig;
-import com.sleepycat.db.SecondaryConfig;
-import com.sleepycat.db.SecondaryDatabase;
-
-/**
- * SampleDatabase defines the storage containers, indices and foreign keys
- * for the sample database.
- *
- * @author Mark Hayes
- */
-public class SampleDatabase {
-
- private static final String CLASS_CATALOG = "java_class_catalog";
- private static final String SUPPLIER_STORE = "supplier_store";
- private static final String PART_STORE = "part_store";
- private static final String SHIPMENT_STORE = "shipment_store";
- private static final String SHIPMENT_PART_INDEX = "shipment_part_index";
- private static final String SHIPMENT_SUPPLIER_INDEX =
- "shipment_supplier_index";
- private static final String SUPPLIER_CITY_INDEX = "supplier_city_index";
-
- private Environment env;
- private Database partDb;
- private Database supplierDb;
- private Database shipmentDb;
- private SecondaryDatabase supplierByCityDb;
- private SecondaryDatabase shipmentByPartDb;
- private SecondaryDatabase shipmentBySupplierDb;
- private StoredClassCatalog javaCatalog;
-
- /**
- * Open all storage containers, indices, and catalogs.
- */
- public SampleDatabase(String homeDirectory)
- throws DatabaseException, FileNotFoundException {
-
- // Open the Berkeley DB environment in transactional mode.
- //
- System.out.println("Opening environment in: " + homeDirectory);
- EnvironmentConfig envConfig = new EnvironmentConfig();
- envConfig.setTransactional(true);
- envConfig.setAllowCreate(true);
- envConfig.setInitializeCache(true);
- envConfig.setInitializeLocking(true);
- env = new Environment(new File(homeDirectory), envConfig);
-
- // Set the Berkeley DB config for opening all stores.
- //
- DatabaseConfig dbConfig = new DatabaseConfig();
- dbConfig.setTransactional(true);
- dbConfig.setAllowCreate(true);
- dbConfig.setType(DatabaseType.BTREE);
-
- // Create the Serial class catalog. This holds the serialized class
- // format for all database records of serial format.
- //
- Database catalogDb = env.openDatabase(null, CLASS_CATALOG, null,
- dbConfig);
- javaCatalog = new StoredClassCatalog(catalogDb);
-
- // Open the Berkeley DB database for the part, supplier and shipment
- // stores. The stores are opened with no duplicate keys allowed.
- //
- partDb = env.openDatabase(null, PART_STORE, null, dbConfig);
-
- supplierDb = env.openDatabase(null, SUPPLIER_STORE, null, dbConfig);
-
- shipmentDb = env.openDatabase(null, SHIPMENT_STORE, null, dbConfig);
-
- // Open the SecondaryDatabase for the city index of the supplier store,
- // and for the part and supplier indices of the shipment store.
- // Duplicate keys are allowed since more than one supplier may be in
- // the same city, and more than one shipment may exist for the same
- // supplier or part. A foreign key constraint is defined for the
- // supplier and part indices to ensure that a shipment only refers to
- // existing part and supplier keys. The CASCADE delete action means
- // that shipments will be deleted if their associated part or supplier
- // is deleted.
- //
- SecondaryConfig secConfig = new SecondaryConfig();
- secConfig.setTransactional(true);
- secConfig.setAllowCreate(true);
- secConfig.setType(DatabaseType.BTREE);
- secConfig.setSortedDuplicates(true);
-
- secConfig.setKeyCreator(
- new SupplierByCityKeyCreator(javaCatalog,
- SupplierKey.class,
- SupplierData.class,
- String.class));
- supplierByCityDb = env.openSecondaryDatabase(null, SUPPLIER_CITY_INDEX,
- null,
- supplierDb,
- secConfig);
-
- secConfig.setKeyCreator(
- new ShipmentByPartKeyCreator(javaCatalog,
- ShipmentKey.class,
- ShipmentData.class,
- PartKey.class));
- shipmentByPartDb = env.openSecondaryDatabase(null, SHIPMENT_PART_INDEX,
- null,
- shipmentDb,
- secConfig);
-
- secConfig.setKeyCreator(
- new ShipmentBySupplierKeyCreator(javaCatalog,
- ShipmentKey.class,
- ShipmentData.class,
- SupplierKey.class));
- shipmentBySupplierDb = env.openSecondaryDatabase(null,
- SHIPMENT_SUPPLIER_INDEX,
- null,
- shipmentDb,
- secConfig);
- }
-
- /**
- * Return the storage environment for the database.
- */
- public final Environment getEnvironment() {
-
- return env;
- }
-
- /**
- * Return the class catalog.
- */
- public final StoredClassCatalog getClassCatalog() {
-
- return javaCatalog;
- }
-
- /**
- * Return the part storage container.
- */
- public final Database getPartDatabase() {
-
- return partDb;
- }
-
- /**
- * Return the supplier storage container.
- */
- public final Database getSupplierDatabase() {
-
- return supplierDb;
- }
-
- /**
- * Return the shipment storage container.
- */
- public final Database getShipmentDatabase() {
-
- return shipmentDb;
- }
-
- /**
- * Return the shipment-by-part index.
- */
- public final SecondaryDatabase getShipmentByPartDatabase() {
-
- return shipmentByPartDb;
- }
-
- /**
- * Return the shipment-by-supplier index.
- */
- public final SecondaryDatabase getShipmentBySupplierDatabase() {
-
- return shipmentBySupplierDb;
- }
-
- /**
- * Return the supplier-by-city index.
- */
- public final SecondaryDatabase getSupplierByCityDatabase() {
-
- return supplierByCityDb;
- }
-
- /**
- * Close all stores (closing a store automatically closes its indices).
- */
- public void close()
- throws DatabaseException {
-
- // Close secondary databases, then primary databases.
- supplierByCityDb.close();
- shipmentByPartDb.close();
- shipmentBySupplierDb.close();
- partDb.close();
- supplierDb.close();
- shipmentDb.close();
- // And don't forget to close the catalog and the environment.
- javaCatalog.close();
- env.close();
- }
-
- /**
- * The SecondaryKeyCreator for the SupplierByCity index. This is an
- * extension of the abstract class SerialSerialKeyCreator, which implements
- * SecondaryKeyCreator for the case where the data keys and value are all
- * of the serial format.
- */
- private static class SupplierByCityKeyCreator
- extends SerialSerialKeyCreator {
-
- /**
- * Construct the city key extractor.
- * @param catalog is the class catalog.
- * @param primaryKeyClass is the supplier key class.
- * @param valueClass is the supplier value class.
- * @param indexKeyClass is the city key class.
- */
- private SupplierByCityKeyCreator(ClassCatalog catalog,
- Class primaryKeyClass,
- Class valueClass,
- Class indexKeyClass) {
-
- super(catalog, primaryKeyClass, valueClass, indexKeyClass);
- }
-
- /**
- * Extract the city key from a supplier key/value pair. The city key
- * is stored in the supplier value, so the supplier key is not used.
- */
- public Object createSecondaryKey(Object primaryKeyInput,
- Object valueInput) {
-
- SupplierData supplierData = (SupplierData) valueInput;
- return supplierData.getCity();
- }
- }
-
- /**
- * The SecondaryKeyCreator for the ShipmentByPart index. This is an
- * extension of the abstract class SerialSerialKeyCreator, which implements
- * SecondaryKeyCreator for the case where the data keys and value are all
- * of the serial format.
- */
- private static class ShipmentByPartKeyCreator
- extends SerialSerialKeyCreator {
-
- /**
- * Construct the part key extractor.
- * @param catalog is the class catalog.
- * @param primaryKeyClass is the shipment key class.
- * @param valueClass is the shipment value class.
- * @param indexKeyClass is the part key class.
- */
- private ShipmentByPartKeyCreator(ClassCatalog catalog,
- Class primaryKeyClass,
- Class valueClass,
- Class indexKeyClass) {
-
- super(catalog, primaryKeyClass, valueClass, indexKeyClass);
- }
-
- /**
- * Extract the part key from a shipment key/value pair. The part key
- * is stored in the shipment key, so the shipment value is not used.
- */
- public Object createSecondaryKey(Object primaryKeyInput,
- Object valueInput) {
-
- ShipmentKey shipmentKey = (ShipmentKey) primaryKeyInput;
- return new PartKey(shipmentKey.getPartNumber());
- }
- }
-
- /**
- * The SecondaryKeyCreator for the ShipmentBySupplier index. This is an
- * extension of the abstract class SerialSerialKeyCreator, which implements
- * SecondaryKeyCreator for the case where the data keys and value are all
- * of the serial format.
- */
- private static class ShipmentBySupplierKeyCreator
- extends SerialSerialKeyCreator {
-
- /**
- * Construct the supplier key extractor.
- * @param catalog is the class catalog.
- * @param primaryKeyClass is the shipment key class.
- * @param valueClass is the shipment value class.
- * @param indexKeyClass is the supplier key class.
- */
- private ShipmentBySupplierKeyCreator(ClassCatalog catalog,
- Class primaryKeyClass,
- Class valueClass,
- Class indexKeyClass) {
-
- super(catalog, primaryKeyClass, valueClass, indexKeyClass);
- }
-
- /**
- * Extract the supplier key from a shipment key/value pair. The part
- * key is stored in the shipment key, so the shipment value is not
- * used.
- */
- public Object createSecondaryKey(Object primaryKeyInput,
- Object valueInput) {
-
- ShipmentKey shipmentKey = (ShipmentKey) primaryKeyInput;
- return new SupplierKey(shipmentKey.getSupplierNumber());
- }
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/index/SampleViews.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/index/SampleViews.java
deleted file mode 100644
index 84745de76..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/index/SampleViews.java
+++ /dev/null
@@ -1,162 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: SampleViews.java,v 1.3 2004/09/22 16:17:11 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.index;
-
-import com.sleepycat.bind.EntryBinding;
-import com.sleepycat.bind.serial.ClassCatalog;
-import com.sleepycat.bind.serial.SerialBinding;
-import com.sleepycat.collections.StoredEntrySet;
-import com.sleepycat.collections.StoredSortedMap;
-
-/**
- * SampleViews defines the data bindings and collection views for the sample
- * database.
- *
- * @author Mark Hayes
- */
-public class SampleViews {
-
- private StoredSortedMap partMap;
- private StoredSortedMap supplierMap;
- private StoredSortedMap shipmentMap;
- private StoredSortedMap shipmentByPartMap;
- private StoredSortedMap shipmentBySupplierMap;
- private StoredSortedMap supplierByCityMap;
-
- /**
- * Create the data bindings and collection views.
- */
- public SampleViews(SampleDatabase db) {
-
- // Create the data bindings.
- // In this sample, the stored key and data entries are used directly
- // rather than mapping them to separate objects. Therefore, no binding
- // classes are defined here and the SerialBinding class is used.
- //
- ClassCatalog catalog = db.getClassCatalog();
- EntryBinding partKeyBinding =
- new SerialBinding(catalog, PartKey.class);
- EntryBinding partDataBinding =
- new SerialBinding(catalog, PartData.class);
- EntryBinding supplierKeyBinding =
- new SerialBinding(catalog, SupplierKey.class);
- EntryBinding supplierDataBinding =
- new SerialBinding(catalog, SupplierData.class);
- EntryBinding shipmentKeyBinding =
- new SerialBinding(catalog, ShipmentKey.class);
- EntryBinding shipmentDataBinding =
- new SerialBinding(catalog, ShipmentData.class);
- EntryBinding cityKeyBinding =
- new SerialBinding(catalog, String.class);
-
- // Create map views for all stores and indices.
- // StoredSortedMap is not used since the stores and indices are
- // ordered by serialized key objects, which do not provide a very
- // useful ordering.
- //
- partMap =
- new StoredSortedMap(db.getPartDatabase(),
- partKeyBinding, partDataBinding, true);
- supplierMap =
- new StoredSortedMap(db.getSupplierDatabase(),
- supplierKeyBinding, supplierDataBinding, true);
- shipmentMap =
- new StoredSortedMap(db.getShipmentDatabase(),
- shipmentKeyBinding, shipmentDataBinding, true);
- shipmentByPartMap =
- new StoredSortedMap(db.getShipmentByPartDatabase(),
- partKeyBinding, shipmentDataBinding, true);
- shipmentBySupplierMap =
- new StoredSortedMap(db.getShipmentBySupplierDatabase(),
- supplierKeyBinding, shipmentDataBinding, true);
- supplierByCityMap =
- new StoredSortedMap(db.getSupplierByCityDatabase(),
- cityKeyBinding, supplierDataBinding, true);
- }
-
- // The views returned below can be accessed using the java.util.Map or
- // java.util.Set interfaces, or using the StoredSortedMap and
- // StoredEntrySet classes, which provide additional methods. The entry
- // sets could be obtained directly from the Map.entrySet() method, but
- // convenience methods are provided here to return them in order to avoid
- // down-casting elsewhere.
-
- /**
- * Return a map view of the part storage container.
- */
- public final StoredSortedMap getPartMap() {
-
- return partMap;
- }
-
- /**
- * Return a map view of the supplier storage container.
- */
- public final StoredSortedMap getSupplierMap() {
-
- return supplierMap;
- }
-
- /**
- * Return a map view of the shipment storage container.
- */
- public final StoredSortedMap getShipmentMap() {
-
- return shipmentMap;
- }
-
- /**
- * Return an entry set view of the part storage container.
- */
- public final StoredEntrySet getPartEntrySet() {
-
- return (StoredEntrySet) partMap.entrySet();
- }
-
- /**
- * Return an entry set view of the supplier storage container.
- */
- public final StoredEntrySet getSupplierEntrySet() {
-
- return (StoredEntrySet) supplierMap.entrySet();
- }
-
- /**
- * Return an entry set view of the shipment storage container.
- */
- public final StoredEntrySet getShipmentEntrySet() {
-
- return (StoredEntrySet) shipmentMap.entrySet();
- }
-
- /**
- * Return a map view of the shipment-by-part index.
- */
- public StoredSortedMap getShipmentByPartMap() {
-
- return shipmentByPartMap;
- }
-
- /**
- * Return a map view of the shipment-by-supplier index.
- */
- public StoredSortedMap getShipmentBySupplierMap() {
-
- return shipmentBySupplierMap;
- }
-
- /**
- * Return a map view of the supplier-by-city index.
- */
- public final StoredSortedMap getSupplierByCityMap() {
-
- return supplierByCityMap;
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/index/ShipmentData.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/index/ShipmentData.java
deleted file mode 100644
index 02676e6ee..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/index/ShipmentData.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: ShipmentData.java,v 1.2 2004/09/22 16:17:11 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.index;
-
-import java.io.Serializable;
-
-/**
- * A ShipmentData serves as the data in the key/data pair for a shipment
- * entity.
- *
- * <p> In this sample, ShipmentData is used both as the storage data for the
- * data as well as the object binding to the data. Because it is used
- * directly as storage data using serial format, it must be Serializable. </p>
- *
- * @author Mark Hayes
- */
-public class ShipmentData implements Serializable {
-
- private int quantity;
-
- public ShipmentData(int quantity) {
-
- this.quantity = quantity;
- }
-
- public final int getQuantity() {
-
- return quantity;
- }
-
- public String toString() {
-
- return "[ShipmentData: quantity=" + quantity + ']';
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/index/ShipmentKey.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/index/ShipmentKey.java
deleted file mode 100644
index 876bbce55..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/index/ShipmentKey.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: ShipmentKey.java,v 1.2 2004/09/22 16:17:11 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.index;
-
-import java.io.Serializable;
-
-/**
- * A ShipmentKey serves as the key in the key/data pair for a shipment entity.
- *
- * <p> In this sample, ShipmentKey is used both as the storage data for the key
- * as well as the object binding to the key. Because it is used directly as
- * storage data using serial format, it must be Serializable. </p>
- *
- * @author Mark Hayes
- */
-public class ShipmentKey implements Serializable {
-
- private String partNumber;
- private String supplierNumber;
-
- public ShipmentKey(String partNumber, String supplierNumber) {
-
- this.partNumber = partNumber;
- this.supplierNumber = supplierNumber;
- }
-
- public final String getPartNumber() {
-
- return partNumber;
- }
-
- public final String getSupplierNumber() {
-
- return supplierNumber;
- }
-
- public String toString() {
-
- return "[ShipmentKey: supplier=" + supplierNumber +
- " part=" + partNumber + ']';
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/index/SupplierData.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/index/SupplierData.java
deleted file mode 100644
index 3cf70472c..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/index/SupplierData.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: SupplierData.java,v 1.2 2004/09/22 16:17:11 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.index;
-
-import java.io.Serializable;
-
-/**
- * A SupplierData serves as the data in the key/data pair for a supplier
- * entity.
- *
- * <p> In this sample, SupplierData is used both as the storage data for the
- * data as well as the object binding to the data. Because it is used
- * directly as storage data using serial format, it must be Serializable. </p>
- *
- * @author Mark Hayes
- */
-public class SupplierData implements Serializable {
-
- private String name;
- private int status;
- private String city;
-
- public SupplierData(String name, int status, String city) {
-
- this.name = name;
- this.status = status;
- this.city = city;
- }
-
- public final String getName() {
-
- return name;
- }
-
- public final int getStatus() {
-
- return status;
- }
-
- public final String getCity() {
-
- return city;
- }
-
- public String toString() {
-
- return "[SupplierData: name=" + name +
- " status=" + status +
- " city=" + city + ']';
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/index/SupplierKey.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/index/SupplierKey.java
deleted file mode 100644
index fa64ca771..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/index/SupplierKey.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: SupplierKey.java,v 1.2 2004/09/22 16:17:11 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.index;
-
-import java.io.Serializable;
-
-/**
- * A SupplierKey serves as the key in the key/data pair for a supplier entity.
- *
- * <p> In this sample, SupplierKey is used both as the storage data for the key
- * as well as the object binding to the key. Because it is used directly as
- * storage data using serial format, it must be Serializable. </p>
- *
- * @author Mark Hayes
- */
-public class SupplierKey implements Serializable {
-
- private String number;
-
- public SupplierKey(String number) {
-
- this.number = number;
- }
-
- public final String getNumber() {
-
- return number;
- }
-
- public String toString() {
-
- return "[SupplierKey: number=" + number + ']';
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/index/Weight.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/index/Weight.java
deleted file mode 100644
index 568baf6b8..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/index/Weight.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: Weight.java,v 1.2 2004/09/22 16:17:11 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.index;
-
-import java.io.Serializable;
-
-/**
- * Weight represents a weight amount and unit of measure.
- *
- * <p> In this sample, Weight is embedded in part data values which are stored
- * as Serial serialized objects; therefore Weight must be Serializable. </p>
- *
- * @author Mark Hayes
- */
-public class Weight implements Serializable {
-
- public final static String GRAMS = "grams";
- public final static String OUNCES = "ounces";
-
- private double amount;
- private String units;
-
- public Weight(double amount, String units) {
-
- this.amount = amount;
- this.units = units;
- }
-
- public final double getAmount() {
-
- return amount;
- }
-
- public final String getUnits() {
-
- return units;
- }
-
- public String toString() {
-
- return "[" + amount + ' ' + units + ']';
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/marshal/MarshalledEnt.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/marshal/MarshalledEnt.java
deleted file mode 100644
index 3e0d3cfae..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/marshal/MarshalledEnt.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: MarshalledEnt.java,v 1.4 2004/11/01 21:45:40 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.marshal;
-
-import com.sleepycat.bind.tuple.TupleInput;
-import com.sleepycat.bind.tuple.TupleOutput;
-
-/**
- * MarshalledEnt is implemented by entity (combined key/data) objects and
- * called by {@link SampleViews.MarshalledEntityBinding}. In this sample,
- * MarshalledEnt is implemented by {@link Part}, {@link Supplier}, and
- * {@link Shipment}. This interface is package-protected rather than public
- * to hide the marshalling interface from other users of the data objects.
- * Note that a MarshalledEnt must also have a no arguments constructor so
- * that it can be instantiated by the binding.
- *
- * @author Mark Hayes
- */
-interface MarshalledEnt {
-
- /**
- * Extracts the entity's primary key and writes it to the key output.
- */
- void marshalPrimaryKey(TupleOutput keyOutput);
-
- /**
- * Completes construction of the entity by setting its primary key from the
- * stored primary key.
- */
- void unmarshalPrimaryKey(TupleInput keyInput);
-
- /**
- * Extracts the entity's index key and writes it to the key output.
- */
- boolean marshalSecondaryKey(String keyName, TupleOutput keyOutput);
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/marshal/MarshalledKey.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/marshal/MarshalledKey.java
deleted file mode 100644
index e19682ca4..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/marshal/MarshalledKey.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: MarshalledKey.java,v 1.3 2004/09/22 16:17:13 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.marshal;
-
-import com.sleepycat.bind.tuple.TupleInput;
-import com.sleepycat.bind.tuple.TupleOutput;
-
-/**
- * MarshalledKey is implemented by key objects and called by {@link
- * SampleViews.MarshalledKeyBinding}. In this sample, MarshalledKey is
- * implemented by {@link PartKey}, {@link SupplierKey}, and {@link
- * ShipmentKey}. This interface is package-protected rather than public to
- * hide the marshalling interface from other users of the data objects. Note
- * that a MarshalledKey must also have a no arguments constructor so
- * that it can be instantiated by the binding.
- *
- * @author Mark Hayes
- */
-interface MarshalledKey {
-
- /**
- * Construct the key tuple entry from the key object.
- */
- void marshalKey(TupleOutput keyOutput);
-
- /**
- * Construct the key object from the key tuple entry.
- */
- void unmarshalKey(TupleInput keyInput);
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/marshal/Part.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/marshal/Part.java
deleted file mode 100644
index 57b11a9b2..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/marshal/Part.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: Part.java,v 1.4 2004/11/01 21:45:40 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.marshal;
-
-import java.io.Serializable;
-
-import com.sleepycat.bind.tuple.TupleInput;
-import com.sleepycat.bind.tuple.TupleOutput;
-
-/**
- * A Part represents the combined key/data pair for a part entity.
- *
- * <p> In this sample, Part is bound to the stored key/data entry by
- * implementing the MarshalledEnt interface, which is called by {@link
- * SampleViews.MarshalledEntityBinding}. </p>
- *
- * <p> The binding is "tricky" in that it uses this class for both the stored
- * data entry and the combined entity object. To do this, the key field(s) are
- * transient and are set by the binding after the data object has been
- * deserialized. This avoids the use of a PartData class completely. </p>
- *
- * <p> Since this class is used directly for data storage, it must be
- * Serializable. </p>
- *
- * @author Mark Hayes
- */
-public class Part implements Serializable, MarshalledEnt {
-
- private transient String number;
- private String name;
- private String color;
- private Weight weight;
- private String city;
-
- public Part(String number, String name, String color, Weight weight,
- String city) {
-
- this.number = number;
- this.name = name;
- this.color = color;
- this.weight = weight;
- this.city = city;
- }
-
- /**
- * Set the transient key fields after deserializing. This method is only
- * called by data bindings.
- */
- final void setKey(String number) {
-
- this.number = number;
- }
-
- public final String getNumber() {
-
- return number;
- }
-
- public final String getName() {
-
- return name;
- }
-
- public final String getColor() {
-
- return color;
- }
-
- public final Weight getWeight() {
-
- return weight;
- }
-
- public final String getCity() {
-
- return city;
- }
-
- public String toString() {
-
- return "[Part: number=" + number +
- " name=" + name +
- " color=" + color +
- " weight=" + weight +
- " city=" + city + ']';
- }
-
- // --- MarshalledEnt implementation ---
-
- Part() {
-
- // A no-argument constructor is necessary only to allow the binding to
- // instantiate objects of this class.
- }
-
- public void unmarshalPrimaryKey(TupleInput keyInput) {
-
- this.number = keyInput.readString();
- }
-
- public void marshalPrimaryKey(TupleOutput keyOutput) {
-
- keyOutput.writeString(this.number);
- }
-
- public boolean marshalSecondaryKey(String keyName, TupleOutput keyOutput) {
-
- throw new UnsupportedOperationException(keyName);
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/marshal/PartKey.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/marshal/PartKey.java
deleted file mode 100644
index 76e31f6da..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/marshal/PartKey.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: PartKey.java,v 1.3 2004/09/22 16:17:13 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.marshal;
-
-import com.sleepycat.bind.tuple.TupleInput;
-import com.sleepycat.bind.tuple.TupleOutput;
-
-/**
- * A PartKey serves as the key in the key/data pair for a part entity.
- *
- * <p> In this sample, PartKey is bound to the stored key tuple entry by
- * implementing the MarshalledKey interface, which is called by {@link
- * SampleViews.MarshalledKeyBinding}. </p>
- *
- * @author Mark Hayes
- */
-public class PartKey implements MarshalledKey {
-
- private String number;
-
- public PartKey(String number) {
-
- this.number = number;
- }
-
- public final String getNumber() {
-
- return number;
- }
-
- public String toString() {
-
- return "[PartKey: number=" + number + ']';
- }
-
- // --- MarshalledKey implementation ---
-
- PartKey() {
-
- // A no-argument constructor is necessary only to allow the binding to
- // instantiate objects of this class.
- }
-
- public void unmarshalKey(TupleInput keyInput) {
-
- this.number = keyInput.readString();
- }
-
- public void marshalKey(TupleOutput keyOutput) {
-
- keyOutput.writeString(this.number);
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/marshal/Sample.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/marshal/Sample.java
deleted file mode 100644
index 615d1ed94..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/marshal/Sample.java
+++ /dev/null
@@ -1,250 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: Sample.java,v 1.4 2004/09/22 16:17:13 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.marshal;
-
-import java.io.FileNotFoundException;
-import java.util.Iterator;
-import java.util.Set;
-
-import com.sleepycat.collections.StoredIterator;
-import com.sleepycat.collections.TransactionRunner;
-import com.sleepycat.collections.TransactionWorker;
-import com.sleepycat.db.DatabaseException;
-
-/**
- * Sample is the main entry point for the sample program and may be run as
- * follows:
- *
- * <pre>
- * java com.sleepycat.examples.collections.ship.marshal.Sample
- * [-h <home-directory> ]
- * </pre>
- *
- * <p> The default for the home directory is ./tmp -- the tmp subdirectory of
- * the current directory where the sample is run. To specify a different home
- * directory, use the -home option. The home directory must exist before
- * running the sample. To recreate the sample database from scratch, delete
- * all files in the home directory before running the sample. </p>
- *
- * @author Mark Hayes
- */
-public class Sample {
-
- private SampleDatabase db;
- private SampleViews views;
-
- /**
- * Run the sample program.
- */
- public static void main(String[] args) {
-
- System.out.println("\nRunning sample: " + Sample.class);
-
- // Parse the command line arguments.
- //
- String homeDir = "./tmp";
- for (int i = 0; i < args.length; i += 1) {
- if (args[i].equals("-h") && i < args.length - 1) {
- i += 1;
- homeDir = args[i];
- } else {
- System.err.println("Usage:\n java " + Sample.class.getName() +
- "\n [-h <home-directory>]");
- System.exit(2);
- }
- }
-
- // Run the sample.
- //
- Sample sample = null;
- try {
- sample = new Sample(homeDir);
- sample.run();
- } catch (Exception e) {
- // If an exception reaches this point, the last transaction did not
- // complete. If the exception is RunRecoveryException, follow
- // the Berkeley DB recovery procedures before running again.
- e.printStackTrace();
- } finally {
- if (sample != null) {
- try {
- // Always attempt to close the database cleanly.
- sample.close();
- } catch (Exception e) {
- System.err.println("Exception during database close:");
- e.printStackTrace();
- }
- }
- }
- }
-
- /**
- * Open the database and views.
- */
- private Sample(String homeDir)
- throws DatabaseException, FileNotFoundException {
-
- db = new SampleDatabase(homeDir);
- views = new SampleViews(db);
- }
-
- /**
- * Close the database cleanly.
- */
- private void close()
- throws DatabaseException {
-
- db.close();
- }
-
- /**
- * Run two transactions to populate and print the database. A
- * TransactionRunner is used to ensure consistent handling of transactions,
- * including deadlock retries. But the best transaction handling mechanism
- * to use depends on the application.
- */
- private void run()
- throws Exception {
-
- TransactionRunner runner = new TransactionRunner(db.getEnvironment());
- runner.run(new PopulateDatabase());
- runner.run(new PrintDatabase());
- }
-
- /**
- * Populate the database in a single transaction.
- */
- private class PopulateDatabase implements TransactionWorker {
-
- public void doWork()
- throws Exception {
- addSuppliers();
- addParts();
- addShipments();
- }
- }
-
- /**
- * Print the database in a single transaction. All entities are printed
- * and the indices are used to print the entities for certain keys.
- *
- * <p> Note the use of special iterator() methods. These are used here
- * with indices to find the shipments for certain keys. For details on
- * database iterators see {@link StoredIterator}. </p>
- */
- private class PrintDatabase implements TransactionWorker {
-
- public void doWork()
- throws Exception {
- printValues("Parts",
- views.getPartSet().iterator());
- printValues("Suppliers",
- views.getSupplierSet().iterator());
- printValues("Suppliers for City Paris",
- views.getSupplierByCityMap().duplicates(
- "Paris").iterator());
- printValues("Shipments",
- views.getShipmentSet().iterator());
- printValues("Shipments for Part P1",
- views.getShipmentByPartMap().duplicates(
- new PartKey("P1")).iterator());
- printValues("Shipments for Supplier S1",
- views.getShipmentBySupplierMap().duplicates(
- new SupplierKey("S1")).iterator());
- }
- }
-
- /**
- * Populate the part entities in the database. If the part set is not
- * empty, assume that this has already been done.
- */
- private void addParts() {
-
- Set parts = views.getPartSet();
- if (parts.isEmpty()) {
- System.out.println("Adding Parts");
- parts.add(new Part("P1", "Nut", "Red",
- new Weight(12.0, Weight.GRAMS), "London"));
- parts.add(new Part("P2", "Bolt", "Green",
- new Weight(17.0, Weight.GRAMS), "Paris"));
- parts.add(new Part("P3", "Screw", "Blue",
- new Weight(17.0, Weight.GRAMS), "Rome"));
- parts.add(new Part("P4", "Screw", "Red",
- new Weight(14.0, Weight.GRAMS), "London"));
- parts.add(new Part("P5", "Cam", "Blue",
- new Weight(12.0, Weight.GRAMS), "Paris"));
- parts.add(new Part("P6", "Cog", "Red",
- new Weight(19.0, Weight.GRAMS), "London"));
- }
- }
-
- /**
- * Populate the supplier entities in the database. If the supplier set is
- * not empty, assume that this has already been done.
- */
- private void addSuppliers() {
-
- Set suppliers = views.getSupplierSet();
- if (suppliers.isEmpty()) {
- System.out.println("Adding Suppliers");
- suppliers.add(new Supplier("S1", "Smith", 20, "London"));
- suppliers.add(new Supplier("S2", "Jones", 10, "Paris"));
- suppliers.add(new Supplier("S3", "Blake", 30, "Paris"));
- suppliers.add(new Supplier("S4", "Clark", 20, "London"));
- suppliers.add(new Supplier("S5", "Adams", 30, "Athens"));
- }
- }
-
- /**
- * Populate the shipment entities in the database. If the shipment set
- * is not empty, assume that this has already been done.
- */
- private void addShipments() {
-
- Set shipments = views.getShipmentSet();
- if (shipments.isEmpty()) {
- System.out.println("Adding Shipments");
- shipments.add(new Shipment("P1", "S1", 300));
- shipments.add(new Shipment("P2", "S1", 200));
- shipments.add(new Shipment("P3", "S1", 400));
- shipments.add(new Shipment("P4", "S1", 200));
- shipments.add(new Shipment("P5", "S1", 100));
- shipments.add(new Shipment("P6", "S1", 100));
- shipments.add(new Shipment("P1", "S2", 300));
- shipments.add(new Shipment("P2", "S2", 400));
- shipments.add(new Shipment("P2", "S3", 200));
- shipments.add(new Shipment("P2", "S4", 200));
- shipments.add(new Shipment("P4", "S4", 300));
- shipments.add(new Shipment("P5", "S4", 400));
- }
- }
-
- /**
- * Print the objects returned by an iterator of entity value objects.
- *
- * <p><b> IMPORTANT: All database iterators must be closed to avoid
- * serious database problems. If the iterator is not closed, the
- * underlying Berkeley DB cursor is not closed either. </b></p>
- */
- private void printValues(String label, Iterator iterator) {
-
- System.out.println("\n--- " + label + " ---");
- try {
- while (iterator.hasNext()) {
- System.out.println(iterator.next().toString());
- }
- } finally {
- // IMPORTANT: Use StoredIterator to close all database
- // iterators. If java.util.Iterator is in hand, you can safely
- // close it by calling StoredIterator.close(Iterator).
- StoredIterator.close(iterator);
- }
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/marshal/SampleDatabase.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/marshal/SampleDatabase.java
deleted file mode 100644
index 31d83977f..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/marshal/SampleDatabase.java
+++ /dev/null
@@ -1,259 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: SampleDatabase.java,v 1.5 2004/11/01 21:45:40 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.marshal;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-
-import com.sleepycat.bind.serial.ClassCatalog;
-import com.sleepycat.bind.serial.StoredClassCatalog;
-import com.sleepycat.bind.serial.TupleSerialKeyCreator;
-import com.sleepycat.bind.tuple.TupleInput;
-import com.sleepycat.bind.tuple.TupleOutput;
-import com.sleepycat.db.Database;
-import com.sleepycat.db.DatabaseConfig;
-import com.sleepycat.db.DatabaseException;
-import com.sleepycat.db.DatabaseType;
-import com.sleepycat.db.Environment;
-import com.sleepycat.db.EnvironmentConfig;
-import com.sleepycat.db.SecondaryConfig;
-import com.sleepycat.db.SecondaryDatabase;
-
-/**
- * SampleDatabase defines the storage containers, indices and foreign keys
- * for the sample database.
- *
- * @author Mark Hayes
- */
-public class SampleDatabase {
-
- private static final String CLASS_CATALOG = "java_class_catalog";
- private static final String SUPPLIER_STORE = "supplier_store";
- private static final String PART_STORE = "part_store";
- private static final String SHIPMENT_STORE = "shipment_store";
- private static final String SHIPMENT_PART_INDEX = "shipment_part_index";
- private static final String SHIPMENT_SUPPLIER_INDEX =
- "shipment_supplier_index";
- private static final String SUPPLIER_CITY_INDEX = "supplier_city_index";
-
- private Environment env;
- private Database partDb;
- private Database supplierDb;
- private Database shipmentDb;
- private SecondaryDatabase supplierByCityDb;
- private SecondaryDatabase shipmentByPartDb;
- private SecondaryDatabase shipmentBySupplierDb;
- private StoredClassCatalog javaCatalog;
-
- /**
- * Open all storage containers, indices, and catalogs.
- */
- public SampleDatabase(String homeDirectory)
- throws DatabaseException, FileNotFoundException {
-
- // Open the Berkeley DB environment in transactional mode.
- //
- System.out.println("Opening environment in: " + homeDirectory);
- EnvironmentConfig envConfig = new EnvironmentConfig();
- envConfig.setTransactional(true);
- envConfig.setAllowCreate(true);
- envConfig.setInitializeCache(true);
- envConfig.setInitializeLocking(true);
- env = new Environment(new File(homeDirectory), envConfig);
-
- // Set the Berkeley DB config for opening all stores.
- //
- DatabaseConfig dbConfig = new DatabaseConfig();
- dbConfig.setTransactional(true);
- dbConfig.setAllowCreate(true);
- dbConfig.setType(DatabaseType.BTREE);
-
- // Create the Serial class catalog. This holds the serialized class
- // format for all database records of serial format.
- //
- Database catalogDb = env.openDatabase(null, CLASS_CATALOG, null,
- dbConfig);
- javaCatalog = new StoredClassCatalog(catalogDb);
-
- // Open the Berkeley DB database for the part, supplier and shipment
- // stores. The stores are opened with no duplicate keys allowed.
- //
- partDb = env.openDatabase(null, PART_STORE, null, dbConfig);
-
- supplierDb = env.openDatabase(null, SUPPLIER_STORE, null, dbConfig);
-
- shipmentDb = env.openDatabase(null, SHIPMENT_STORE, null, dbConfig);
-
- // Open the SecondaryDatabase for the city index of the supplier store,
- // and for the part and supplier indices of the shipment store.
- // Duplicate keys are allowed since more than one supplier may be in
- // the same city, and more than one shipment may exist for the same
- // supplier or part. A foreign key constraint is defined for the
- // supplier and part indices to ensure that a shipment only refers to
- // existing part and supplier keys. The CASCADE delete action means
- // that shipments will be deleted if their associated part or supplier
- // is deleted.
- //
- SecondaryConfig secConfig = new SecondaryConfig();
- secConfig.setTransactional(true);
- secConfig.setAllowCreate(true);
- secConfig.setType(DatabaseType.BTREE);
- secConfig.setSortedDuplicates(true);
-
- secConfig.setKeyCreator(new MarshalledKeyCreator(javaCatalog,
- Supplier.class,
- Supplier.CITY_KEY));
- supplierByCityDb = env.openSecondaryDatabase(null, SUPPLIER_CITY_INDEX,
- null,
- supplierDb,
- secConfig);
-
- secConfig.setKeyCreator(new MarshalledKeyCreator(javaCatalog,
- Shipment.class,
- Shipment.PART_KEY));
- shipmentByPartDb = env.openSecondaryDatabase(null, SHIPMENT_PART_INDEX,
- null,
- shipmentDb,
- secConfig);
-
- secConfig.setKeyCreator(new MarshalledKeyCreator(javaCatalog,
- Shipment.class,
- Shipment.SUPPLIER_KEY));
- shipmentBySupplierDb = env.openSecondaryDatabase(null,
- SHIPMENT_SUPPLIER_INDEX,
- null,
- shipmentDb,
- secConfig);
- }
-
- /**
- * Return the storage environment for the database.
- */
- public final Environment getEnvironment() {
-
- return env;
- }
-
- /**
- * Return the class catalog.
- */
- public final StoredClassCatalog getClassCatalog() {
-
- return javaCatalog;
- }
-
- /**
- * Return the part storage container.
- */
- public final Database getPartDatabase() {
-
- return partDb;
- }
-
- /**
- * Return the supplier storage container.
- */
- public final Database getSupplierDatabase() {
-
- return supplierDb;
- }
-
- /**
- * Return the shipment storage container.
- */
- public final Database getShipmentDatabase() {
-
- return shipmentDb;
- }
-
- /**
- * Return the shipment-by-part index.
- */
- public final SecondaryDatabase getShipmentByPartDatabase() {
-
- return shipmentByPartDb;
- }
-
- /**
- * Return the shipment-by-supplier index.
- */
- public final SecondaryDatabase getShipmentBySupplierDatabase() {
-
- return shipmentBySupplierDb;
- }
-
- /**
- * Return the supplier-by-city index.
- */
- public final SecondaryDatabase getSupplierByCityDatabase() {
-
- return supplierByCityDb;
- }
-
- /**
- * Close all stores (closing a store automatically closes its indices).
- */
- public void close()
- throws DatabaseException {
-
- // Close secondary databases, then primary databases.
- supplierByCityDb.close();
- shipmentByPartDb.close();
- shipmentBySupplierDb.close();
- partDb.close();
- supplierDb.close();
- shipmentDb.close();
- // And don't forget to close the catalog and the environment.
- javaCatalog.close();
- env.close();
- }
-
- /**
- * The SecondaryKeyCreator for MarshalledEnt objects. This is an
- * extension of the abstract class TupleSerialKeyCreator, which implements
- * SecondaryKeyCreator for the case where the data keys are of the format
- * TupleFormat and the data values are of the format SerialFormat.
- */
- private static class MarshalledKeyCreator
- extends TupleSerialKeyCreator {
-
- private String keyName;
-
- /**
- * Construct the key creator.
- * @param catalog is the class catalog.
- * @param valueClass is the supplier value class.
- * @param keyName is the key name passed to the marshalling methods.
- */
- private MarshalledKeyCreator(ClassCatalog catalog,
- Class valueClass,
- String keyName) {
-
- super(catalog, valueClass);
- this.keyName = keyName;
- }
-
- /**
- * Extract the city key from a supplier key/value pair. The city key
- * is stored in the supplier value, so the supplier key is not used.
- */
- public boolean createSecondaryKey(TupleInput primaryKeyInput,
- Object valueInput,
- TupleOutput indexKeyOutput) {
-
- // the primary key is unmarshalled before marshalling the index
- // key, to account for cases where the index key is composed of
- // data elements from the primary key
- MarshalledEnt entity = (MarshalledEnt) valueInput;
- entity.unmarshalPrimaryKey(primaryKeyInput);
- return entity.marshalSecondaryKey(keyName, indexKeyOutput);
- }
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/marshal/SampleViews.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/marshal/SampleViews.java
deleted file mode 100644
index fdbba7dde..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/marshal/SampleViews.java
+++ /dev/null
@@ -1,277 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: SampleViews.java,v 1.4 2004/11/01 21:45:40 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.marshal;
-
-import com.sleepycat.bind.EntityBinding;
-import com.sleepycat.bind.EntryBinding;
-import com.sleepycat.bind.serial.ClassCatalog;
-import com.sleepycat.bind.serial.TupleSerialBinding;
-import com.sleepycat.bind.tuple.TupleBinding;
-import com.sleepycat.bind.tuple.TupleInput;
-import com.sleepycat.bind.tuple.TupleOutput;
-import com.sleepycat.collections.StoredSortedMap;
-import com.sleepycat.collections.StoredSortedValueSet;
-import com.sleepycat.util.RuntimeExceptionWrapper;
-
-/**
- * SampleViews defines the data bindings and collection views for the sample
- * database.
- *
- * @author Mark Hayes
- */
-public class SampleViews {
-
- private StoredSortedMap partMap;
- private StoredSortedMap supplierMap;
- private StoredSortedMap shipmentMap;
- private StoredSortedMap shipmentByPartMap;
- private StoredSortedMap shipmentBySupplierMap;
- private StoredSortedMap supplierByCityMap;
-
- /**
- * Create the data bindings and collection views.
- */
- public SampleViews(SampleDatabase db) {
-
- // Create the data bindings.
- // In this sample, EntityBinding classes are used to bind the stored
- // key/data entry pair to a combined data object; a "tricky" binding
- // that uses transient fields is used--see PartBinding, etc, for
- // details. For keys, a one-to-one binding is implemented with
- // EntryBinding classes to bind the stored tuple entry to a key Object.
- //
- ClassCatalog catalog = db.getClassCatalog();
- EntryBinding partKeyBinding =
- new MarshalledKeyBinding(PartKey.class);
- EntityBinding partDataBinding =
- new MarshalledEntityBinding(catalog, Part.class);
- EntryBinding supplierKeyBinding =
- new MarshalledKeyBinding(SupplierKey.class);
- EntityBinding supplierDataBinding =
- new MarshalledEntityBinding(catalog, Supplier.class);
- EntryBinding shipmentKeyBinding =
- new MarshalledKeyBinding(ShipmentKey.class);
- EntityBinding shipmentDataBinding =
- new MarshalledEntityBinding(catalog, Shipment.class);
- EntryBinding cityKeyBinding =
- TupleBinding.getPrimitiveBinding(String.class);
-
- // Create map views for all stores and indices.
- // StoredSortedMap is used since the stores and indices are ordered
- // (they use the DB_BTREE access method).
- //
- partMap =
- new StoredSortedMap(db.getPartDatabase(),
- partKeyBinding, partDataBinding, true);
- supplierMap =
- new StoredSortedMap(db.getSupplierDatabase(),
- supplierKeyBinding, supplierDataBinding, true);
- shipmentMap =
- new StoredSortedMap(db.getShipmentDatabase(),
- shipmentKeyBinding, shipmentDataBinding, true);
- shipmentByPartMap =
- new StoredSortedMap(db.getShipmentByPartDatabase(),
- partKeyBinding, shipmentDataBinding, true);
- shipmentBySupplierMap =
- new StoredSortedMap(db.getShipmentBySupplierDatabase(),
- supplierKeyBinding, shipmentDataBinding, true);
- supplierByCityMap =
- new StoredSortedMap(db.getSupplierByCityDatabase(),
- cityKeyBinding, supplierDataBinding, true);
- }
-
- // The views returned below can be accessed using the java.util.Map or
- // java.util.Set interfaces, or using the StoredSortedMap and
- // StoredValueSet classes, which provide additional methods. The entity
- // sets could be obtained directly from the Map.values() method but
- // convenience methods are provided here to return them in order to avoid
- // down-casting elsewhere.
-
- /**
- * Return a map view of the part storage container.
- */
- public StoredSortedMap getPartMap() {
-
- return partMap;
- }
-
- /**
- * Return a map view of the supplier storage container.
- */
- public StoredSortedMap getSupplierMap() {
-
- return supplierMap;
- }
-
- /**
- * Return a map view of the shipment storage container.
- */
- public StoredSortedMap getShipmentMap() {
-
- return shipmentMap;
- }
-
- /**
- * Return an entity set view of the part storage container.
- */
- public StoredSortedValueSet getPartSet() {
-
- return (StoredSortedValueSet) partMap.values();
- }
-
- /**
- * Return an entity set view of the supplier storage container.
- */
- public StoredSortedValueSet getSupplierSet() {
-
- return (StoredSortedValueSet) supplierMap.values();
- }
-
- /**
- * Return an entity set view of the shipment storage container.
- */
- public StoredSortedValueSet getShipmentSet() {
-
- return (StoredSortedValueSet) shipmentMap.values();
- }
-
- /**
- * Return a map view of the shipment-by-part index.
- */
- public StoredSortedMap getShipmentByPartMap() {
-
- return shipmentByPartMap;
- }
-
- /**
- * Return a map view of the shipment-by-supplier index.
- */
- public StoredSortedMap getShipmentBySupplierMap() {
-
- return shipmentBySupplierMap;
- }
-
- /**
- * Return a map view of the supplier-by-city index.
- */
- public final StoredSortedMap getSupplierByCityMap() {
-
- return supplierByCityMap;
- }
-
- /**
- * MarshalledKeyBinding is used to bind the stored key tuple entry to a key
- * object representation. To do this, it calls the MarshalledKey interface
- * implemented by the key class.
- */
- private static class MarshalledKeyBinding extends TupleBinding {
-
- private Class keyClass;
-
- /**
- * Construct the binding object.
- */
- private MarshalledKeyBinding(Class keyClass) {
-
- // The key class will be used to instantiate the key object.
- //
- if (!MarshalledKey.class.isAssignableFrom(keyClass)) {
- throw new IllegalArgumentException(keyClass.toString() +
- " does not implement MarshalledKey");
- }
- this.keyClass = keyClass;
- }
-
- /**
- * Create the key object from the stored key tuple entry.
- */
- public Object entryToObject(TupleInput input) {
-
- try {
- MarshalledKey key = (MarshalledKey) keyClass.newInstance();
- key.unmarshalKey(input);
- return key;
- } catch (IllegalAccessException e) {
- throw new RuntimeExceptionWrapper(e);
- } catch (InstantiationException e) {
- throw new RuntimeExceptionWrapper(e);
- }
- }
-
- /**
- * Create the stored key tuple entry from the key object.
- */
- public void objectToEntry(Object object, TupleOutput output) {
-
- MarshalledKey key = (MarshalledKey) object;
- key.marshalKey(output);
- }
- }
-
- /**
- * MarshalledEntityBinding is used to bind the stored key/data entry pair
- * to a combined to an entity object representation. To do this, it calls
- * the MarshalledEnt interface implemented by the entity class.
- *
- * <p> The binding is "tricky" in that it uses the entity class for both
- * the stored data entry and the combined entity object. To do this,
- * entity's key field(s) are transient and are set by the binding after the
- * data object has been deserialized. This avoids the use of a "data" class
- * completely. </p>
- */
- private static class MarshalledEntityBinding extends TupleSerialBinding {
-
- /**
- * Construct the binding object.
- */
- private MarshalledEntityBinding(ClassCatalog classCatalog,
- Class entityClass) {
-
- super(classCatalog, entityClass);
-
- // The entity class will be used to instantiate the entity object.
- //
- if (!MarshalledEnt.class.isAssignableFrom(entityClass)) {
- throw new IllegalArgumentException(entityClass.toString() +
- " does not implement MarshalledEnt");
- }
- }
-
- /**
- * Create the entity by combining the stored key and data.
- * This "tricky" binding returns the stored data as the entity, but
- * first it sets the transient key fields from the stored key.
- */
- public Object entryToObject(TupleInput tupleInput, Object javaInput) {
-
- MarshalledEnt entity = (MarshalledEnt) javaInput;
- entity.unmarshalPrimaryKey(tupleInput);
- return entity;
- }
-
- /**
- * Create the stored key from the entity.
- */
- public void objectToKey(Object object, TupleOutput output) {
-
- MarshalledEnt entity = (MarshalledEnt) object;
- entity.marshalPrimaryKey(output);
- }
-
- /**
- * Return the entity as the stored data. There is nothing to do here
- * since the entity's key fields are transient.
- */
- public Object objectToData(Object object) {
-
- return object;
- }
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/marshal/Shipment.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/marshal/Shipment.java
deleted file mode 100644
index 44a342bfd..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/marshal/Shipment.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: Shipment.java,v 1.4 2004/11/01 21:45:40 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.marshal;
-
-import java.io.Serializable;
-
-import com.sleepycat.bind.tuple.TupleInput;
-import com.sleepycat.bind.tuple.TupleOutput;
-
-/**
- * A Shipment represents the combined key/data pair for a shipment entity.
- *
- * <p> In this sample, Shipment is bound to the stored key/data entry by
- * implementing the MarshalledEnt interface, which is called by {@link
- * SampleViews.MarshalledEntityBinding}. </p>
- *
- * <p> The binding is "tricky" in that it uses this class for both the stored
- * data entry and the combined entity object. To do this, the key field(s) are
- * transient and are set by the binding after the data object has been
- * deserialized. This avoids the use of a ShipmentData class completely. </p>
- *
- * <p> Since this class is used directly for data storage, it must be
- * Serializable. </p>
- *
- * @author Mark Hayes
- */
-public class Shipment implements Serializable, MarshalledEnt {
-
- static final String PART_KEY = "part";
- static final String SUPPLIER_KEY = "supplier";
-
- private transient String partNumber;
- private transient String supplierNumber;
- private int quantity;
-
- public Shipment(String partNumber, String supplierNumber, int quantity) {
-
- this.partNumber = partNumber;
- this.supplierNumber = supplierNumber;
- this.quantity = quantity;
- }
-
- /**
- * Set the transient key fields after deserializing. This method is only
- * called by data bindings.
- */
- void setKey(String partNumber, String supplierNumber) {
-
- this.partNumber = partNumber;
- this.supplierNumber = supplierNumber;
- }
-
- public final String getPartNumber() {
-
- return partNumber;
- }
-
- public final String getSupplierNumber() {
-
- return supplierNumber;
- }
-
- public final int getQuantity() {
-
- return quantity;
- }
-
- public String toString() {
-
- return "[Shipment: part=" + partNumber +
- " supplier=" + supplierNumber +
- " quantity=" + quantity + ']';
- }
-
- // --- MarshalledEnt implementation ---
-
- Shipment() {
-
- // A no-argument constructor is necessary only to allow the binding to
- // instantiate objects of this class.
- }
-
- public void unmarshalPrimaryKey(TupleInput keyInput) {
-
- this.partNumber = keyInput.readString();
- this.supplierNumber = keyInput.readString();
- }
-
- public void marshalPrimaryKey(TupleOutput keyOutput) {
-
- keyOutput.writeString(this.partNumber);
- keyOutput.writeString(this.supplierNumber);
- }
-
- public boolean marshalSecondaryKey(String keyName, TupleOutput keyOutput) {
-
- if (keyName.equals(PART_KEY)) {
- keyOutput.writeString(this.partNumber);
- return true;
- } else if (keyName.equals(SUPPLIER_KEY)) {
- keyOutput.writeString(this.supplierNumber);
- return true;
- } else {
- throw new UnsupportedOperationException(keyName);
- }
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/marshal/ShipmentKey.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/marshal/ShipmentKey.java
deleted file mode 100644
index 1b14fd7ac..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/marshal/ShipmentKey.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: ShipmentKey.java,v 1.3 2004/09/22 16:17:13 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.marshal;
-
-import com.sleepycat.bind.tuple.TupleInput;
-import com.sleepycat.bind.tuple.TupleOutput;
-
-/**
- * A ShipmentKey serves as the key in the key/data pair for a shipment entity.
- *
- * <p> In this sample, ShipmentKey is bound to the stored key tuple entry by
- * implementing the MarshalledKey interface, which is called by {@link
- * SampleViews.MarshalledKeyBinding}. </p>
- *
- * @author Mark Hayes
- */
-public class ShipmentKey implements MarshalledKey {
-
- private String partNumber;
- private String supplierNumber;
-
- public ShipmentKey(String partNumber, String supplierNumber) {
-
- this.partNumber = partNumber;
- this.supplierNumber = supplierNumber;
- }
-
- public final String getPartNumber() {
-
- return partNumber;
- }
-
- public final String getSupplierNumber() {
-
- return supplierNumber;
- }
-
- public String toString() {
-
- return "[ShipmentKey: supplier=" + supplierNumber +
- " part=" + partNumber + ']';
- }
-
- // --- MarshalledKey implementation ---
-
- ShipmentKey() {
-
- // A no-argument constructor is necessary only to allow the binding to
- // instantiate objects of this class.
- }
-
- public void unmarshalKey(TupleInput keyInput) {
-
- this.partNumber = keyInput.readString();
- this.supplierNumber = keyInput.readString();
- }
-
- public void marshalKey(TupleOutput keyOutput) {
-
- keyOutput.writeString(this.partNumber);
- keyOutput.writeString(this.supplierNumber);
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/marshal/Supplier.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/marshal/Supplier.java
deleted file mode 100644
index 28190e1e1..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/marshal/Supplier.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: Supplier.java,v 1.4 2004/11/01 21:45:40 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.marshal;
-
-import java.io.Serializable;
-
-import com.sleepycat.bind.tuple.TupleInput;
-import com.sleepycat.bind.tuple.TupleOutput;
-
-/**
- * A Supplier represents the combined key/data pair for a supplier entity.
- *
- * <p> In this sample, Supplier is bound to the stored key/data entry by
- * implementing the MarshalledEnt interface, which is called by {@link
- * SampleViews.MarshalledEntityBinding}. </p>
- *
- * <p> The binding is "tricky" in that it uses this class for both the stored
- * data entry and the combined entity object. To do this, the key field(s) are
- * transient and are set by the binding after the data object has been
- * deserialized. This avoids the use of a SupplierData class completely. </p>
- *
- * <p> Since this class is used directly for data storage, it must be
- * Serializable. </p>
- *
- * @author Mark Hayes
- */
-public class Supplier implements Serializable, MarshalledEnt {
-
- static final String CITY_KEY = "city";
-
- private transient String number;
- private String name;
- private int status;
- private String city;
-
- public Supplier(String number, String name, int status, String city) {
-
- this.number = number;
- this.name = name;
- this.status = status;
- this.city = city;
- }
-
- /**
- * Set the transient key fields after deserializing. This method is only
- * called by data bindings.
- */
- void setKey(String number) {
-
- this.number = number;
- }
-
- public final String getNumber() {
-
- return number;
- }
-
- public final String getName() {
-
- return name;
- }
-
- public final int getStatus() {
-
- return status;
- }
-
- public final String getCity() {
-
- return city;
- }
-
- public String toString() {
-
- return "[Supplier: number=" + number +
- " name=" + name +
- " status=" + status +
- " city=" + city + ']';
- }
-
- // --- MarshalledEnt implementation ---
-
- Supplier() {
-
- // A no-argument constructor is necessary only to allow the binding to
- // instantiate objects of this class.
- }
-
- public void unmarshalPrimaryKey(TupleInput keyInput) {
-
- this.number = keyInput.readString();
- }
-
- public void marshalPrimaryKey(TupleOutput keyOutput) {
-
- keyOutput.writeString(this.number);
- }
-
- public boolean marshalSecondaryKey(String keyName, TupleOutput keyOutput) {
-
- if (keyName.equals(CITY_KEY)) {
- if (this.city != null) {
- keyOutput.writeString(this.city);
- return true;
- } else {
- return false;
- }
- } else {
- throw new UnsupportedOperationException(keyName);
- }
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/marshal/SupplierKey.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/marshal/SupplierKey.java
deleted file mode 100644
index 5cba0bcb6..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/marshal/SupplierKey.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: SupplierKey.java,v 1.3 2004/09/22 16:17:13 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.marshal;
-
-import com.sleepycat.bind.tuple.TupleInput;
-import com.sleepycat.bind.tuple.TupleOutput;
-
-/**
- * A SupplierKey serves as the key in the key/data pair for a supplier entity.
- *
- * <p> In this sample, SupplierKey is bound to the stored key tuple entry by
- * implementing the MarshalledKey interface, which is called by {@link
- * SampleViews.MarshalledKeyBinding}. </p>
- *
- * @author Mark Hayes
- */
-public class SupplierKey implements MarshalledKey {
-
- private String number;
-
- public SupplierKey(String number) {
-
- this.number = number;
- }
-
- public final String getNumber() {
-
- return number;
- }
-
- public String toString() {
-
- return "[SupplierKey: number=" + number + ']';
- }
-
- // --- MarshalledKey implementation ---
-
- SupplierKey() {
-
- // A no-argument constructor is necessary only to allow the binding to
- // instantiate objects of this class.
- }
-
- public void unmarshalKey(TupleInput keyInput) {
-
- this.number = keyInput.readString();
- }
-
- public void marshalKey(TupleOutput keyOutput) {
-
- keyOutput.writeString(this.number);
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/marshal/Weight.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/marshal/Weight.java
deleted file mode 100644
index ce26855ec..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/marshal/Weight.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: Weight.java,v 1.2 2004/09/22 16:17:13 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.marshal;
-
-import java.io.Serializable;
-
-/**
- * Weight represents a weight amount and unit of measure.
- *
- * <p> In this sample, Weight is embedded in part data values which are stored
- * as Java serialized objects; therefore Weight must be Serializable. </p>
- *
- * @author Mark Hayes
- */
-public class Weight implements Serializable {
-
- public final static String GRAMS = "grams";
- public final static String OUNCES = "ounces";
-
- private double amount;
- private String units;
-
- public Weight(double amount, String units) {
-
- this.amount = amount;
- this.units = units;
- }
-
- public final double getAmount() {
-
- return amount;
- }
-
- public final String getUnits() {
-
- return units;
- }
-
- public String toString() {
-
- return "[" + amount + ' ' + units + ']';
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/sentity/Part.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/sentity/Part.java
deleted file mode 100644
index de00ec8b8..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/sentity/Part.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: Part.java,v 1.2 2004/09/22 16:17:13 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.sentity;
-
-import java.io.Serializable;
-
-/**
- * A Part represents the combined key/data pair for a part entity.
- *
- * <p> In this sample, Part is created from the stored key/data entry using a
- * TupleSerialEntityBinding. See {@link SampleViews.PartBinding} for details.
- * </p>
- *
- * <p> The binding is "tricky" in that it uses this class for both the stored
- * data entry and the combined entity object. To do this, the key field(s) are
- * transient and are set by the binding after the data object has been
- * deserialized. This avoids the use of a PartData class completely. </p>
- *
- * <p> Since this class is used directly for data storage, it must be
- * Serializable. </p>
- *
- * @author Mark Hayes
- */
-public class Part implements Serializable {
-
- private transient String number;
- private String name;
- private String color;
- private Weight weight;
- private String city;
-
- public Part(String number, String name, String color, Weight weight,
- String city) {
-
- this.number = number;
- this.name = name;
- this.color = color;
- this.weight = weight;
- this.city = city;
- }
-
- /**
- * Set the transient key fields after deserializing. This method is only
- * called by data bindings.
- */
- final void setKey(String number) {
-
- this.number = number;
- }
-
- public final String getNumber() {
-
- return number;
- }
-
- public final String getName() {
-
- return name;
- }
-
- public final String getColor() {
-
- return color;
- }
-
- public final Weight getWeight() {
-
- return weight;
- }
-
- public final String getCity() {
-
- return city;
- }
-
- public String toString() {
-
- return "[Part: number=" + number +
- " name=" + name +
- " color=" + color +
- " weight=" + weight +
- " city=" + city + ']';
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/sentity/PartKey.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/sentity/PartKey.java
deleted file mode 100644
index 01af80ba8..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/sentity/PartKey.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: PartKey.java,v 1.2 2004/09/22 16:17:13 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.sentity;
-
-/**
- * A PartKey serves as the key in the key/data pair for a part entity.
- *
- * <p> In this sample, PartKey is bound to the key's tuple storage entry using
- * a TupleBinding. Because it is not used directly as storage data, it does
- * not need to be Serializable. </p>
- *
- * @author Mark Hayes
- */
-public class PartKey {
-
- private String number;
-
- public PartKey(String number) {
-
- this.number = number;
- }
-
- public final String getNumber() {
-
- return number;
- }
-
- public String toString() {
-
- return "[PartKey: number=" + number + ']';
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/sentity/Sample.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/sentity/Sample.java
deleted file mode 100644
index 091d707cc..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/sentity/Sample.java
+++ /dev/null
@@ -1,250 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: Sample.java,v 1.4 2004/09/22 16:17:13 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.sentity;
-
-import java.io.FileNotFoundException;
-import java.util.Iterator;
-import java.util.Set;
-
-import com.sleepycat.collections.StoredIterator;
-import com.sleepycat.collections.TransactionRunner;
-import com.sleepycat.collections.TransactionWorker;
-import com.sleepycat.db.DatabaseException;
-
-/**
- * Sample is the main entry point for the sample program and may be run as
- * follows:
- *
- * <pre>
- * java com.sleepycat.examples.collections.ship.sentity.Sample
- * [-h <home-directory> ]
- * </pre>
- *
- * <p> The default for the home directory is ./tmp -- the tmp subdirectory of
- * the current directory where the sample is run. To specify a different home
- * directory, use the -home option. The home directory must exist before
- * running the sample. To recreate the sample database from scratch, delete
- * all files in the home directory before running the sample. </p>
- *
- * @author Mark Hayes
- */
-public class Sample {
-
- private SampleDatabase db;
- private SampleViews views;
-
- /**
- * Run the sample program.
- */
- public static void main(String[] args) {
-
- System.out.println("\nRunning sample: " + Sample.class);
-
- // Parse the command line arguments.
- //
- String homeDir = "./tmp";
- for (int i = 0; i < args.length; i += 1) {
- if (args[i].equals("-h") && i < args.length - 1) {
- i += 1;
- homeDir = args[i];
- } else {
- System.err.println("Usage:\n java " + Sample.class.getName() +
- "\n [-h <home-directory>]");
- System.exit(2);
- }
- }
-
- // Run the sample.
- //
- Sample sample = null;
- try {
- sample = new Sample(homeDir);
- sample.run();
- } catch (Exception e) {
- // If an exception reaches this point, the last transaction did not
- // complete. If the exception is RunRecoveryException, follow
- // the Berkeley DB recovery procedures before running again.
- e.printStackTrace();
- } finally {
- if (sample != null) {
- try {
- // Always attempt to close the database cleanly.
- sample.close();
- } catch (Exception e) {
- System.err.println("Exception during database close:");
- e.printStackTrace();
- }
- }
- }
- }
-
- /**
- * Open the database and views.
- */
- private Sample(String homeDir)
- throws DatabaseException, FileNotFoundException {
-
- db = new SampleDatabase(homeDir);
- views = new SampleViews(db);
- }
-
- /**
- * Close the database cleanly.
- */
- private void close()
- throws DatabaseException {
-
- db.close();
- }
-
- /**
- * Run two transactions to populate and print the database. A
- * TransactionRunner is used to ensure consistent handling of transactions,
- * including deadlock retries. But the best transaction handling mechanism
- * to use depends on the application.
- */
- private void run()
- throws Exception {
-
- TransactionRunner runner = new TransactionRunner(db.getEnvironment());
- runner.run(new PopulateDatabase());
- runner.run(new PrintDatabase());
- }
-
- /**
- * Populate the database in a single transaction.
- */
- private class PopulateDatabase implements TransactionWorker {
-
- public void doWork()
- throws Exception {
- addSuppliers();
- addParts();
- addShipments();
- }
- }
-
- /**
- * Print the database in a single transaction. All entities are printed
- * and the indices are used to print the entities for certain keys.
- *
- * <p> Note the use of special iterator() methods. These are used here
- * with indices to find the shipments for certain keys. For details on
- * database iterators see {@link StoredIterator}. </p>
- */
- private class PrintDatabase implements TransactionWorker {
-
- public void doWork()
- throws Exception {
- printValues("Parts",
- views.getPartSet().iterator());
- printValues("Suppliers",
- views.getSupplierSet().iterator());
- printValues("Suppliers for City Paris",
- views.getSupplierByCityMap().duplicates(
- "Paris").iterator());
- printValues("Shipments",
- views.getShipmentSet().iterator());
- printValues("Shipments for Part P1",
- views.getShipmentByPartMap().duplicates(
- new PartKey("P1")).iterator());
- printValues("Shipments for Supplier S1",
- views.getShipmentBySupplierMap().duplicates(
- new SupplierKey("S1")).iterator());
- }
- }
-
- /**
- * Populate the part entities in the database. If the part set is not
- * empty, assume that this has already been done.
- */
- private void addParts() {
-
- Set parts = views.getPartSet();
- if (parts.isEmpty()) {
- System.out.println("Adding Parts");
- parts.add(new Part("P1", "Nut", "Red",
- new Weight(12.0, Weight.GRAMS), "London"));
- parts.add(new Part("P2", "Bolt", "Green",
- new Weight(17.0, Weight.GRAMS), "Paris"));
- parts.add(new Part("P3", "Screw", "Blue",
- new Weight(17.0, Weight.GRAMS), "Rome"));
- parts.add(new Part("P4", "Screw", "Red",
- new Weight(14.0, Weight.GRAMS), "London"));
- parts.add(new Part("P5", "Cam", "Blue",
- new Weight(12.0, Weight.GRAMS), "Paris"));
- parts.add(new Part("P6", "Cog", "Red",
- new Weight(19.0, Weight.GRAMS), "London"));
- }
- }
-
- /**
- * Populate the supplier entities in the database. If the supplier set is
- * not empty, assume that this has already been done.
- */
- private void addSuppliers() {
-
- Set suppliers = views.getSupplierSet();
- if (suppliers.isEmpty()) {
- System.out.println("Adding Suppliers");
- suppliers.add(new Supplier("S1", "Smith", 20, "London"));
- suppliers.add(new Supplier("S2", "Jones", 10, "Paris"));
- suppliers.add(new Supplier("S3", "Blake", 30, "Paris"));
- suppliers.add(new Supplier("S4", "Clark", 20, "London"));
- suppliers.add(new Supplier("S5", "Adams", 30, "Athens"));
- }
- }
-
- /**
- * Populate the shipment entities in the database. If the shipment set
- * is not empty, assume that this has already been done.
- */
- private void addShipments() {
-
- Set shipments = views.getShipmentSet();
- if (shipments.isEmpty()) {
- System.out.println("Adding Shipments");
- shipments.add(new Shipment("P1", "S1", 300));
- shipments.add(new Shipment("P2", "S1", 200));
- shipments.add(new Shipment("P3", "S1", 400));
- shipments.add(new Shipment("P4", "S1", 200));
- shipments.add(new Shipment("P5", "S1", 100));
- shipments.add(new Shipment("P6", "S1", 100));
- shipments.add(new Shipment("P1", "S2", 300));
- shipments.add(new Shipment("P2", "S2", 400));
- shipments.add(new Shipment("P2", "S3", 200));
- shipments.add(new Shipment("P2", "S4", 200));
- shipments.add(new Shipment("P4", "S4", 300));
- shipments.add(new Shipment("P5", "S4", 400));
- }
- }
-
- /**
- * Print the objects returned by an iterator of entity value objects.
- *
- * <p><b> IMPORTANT: All database iterators must be closed to avoid
- * serious database problems. If the iterator is not closed, the
- * underlying Berkeley DB cursor is not closed either. </b></p>
- */
- private void printValues(String label, Iterator iterator) {
-
- System.out.println("\n--- " + label + " ---");
- try {
- while (iterator.hasNext()) {
- System.out.println(iterator.next().toString());
- }
- } finally {
- // IMPORTANT: Use StoredIterator to close all database
- // iterators. If java.util.Iterator is in hand, you can safely
- // close it by calling StoredIterator.close(Iterator).
- StoredIterator.close(iterator);
- }
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/sentity/SampleDatabase.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/sentity/SampleDatabase.java
deleted file mode 100644
index 0f8b02ee9..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/sentity/SampleDatabase.java
+++ /dev/null
@@ -1,322 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: SampleDatabase.java,v 1.4 2004/09/22 18:00:59 bostic Exp $
- */
-
-package com.sleepycat.examples.collections.ship.sentity;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-
-import com.sleepycat.bind.serial.ClassCatalog;
-import com.sleepycat.bind.serial.StoredClassCatalog;
-import com.sleepycat.bind.serial.TupleSerialKeyCreator;
-import com.sleepycat.bind.tuple.TupleInput;
-import com.sleepycat.bind.tuple.TupleOutput;
-import com.sleepycat.db.Database;
-import com.sleepycat.db.DatabaseConfig;
-import com.sleepycat.db.DatabaseException;
-import com.sleepycat.db.DatabaseType;
-import com.sleepycat.db.Environment;
-import com.sleepycat.db.EnvironmentConfig;
-import com.sleepycat.db.SecondaryConfig;
-import com.sleepycat.db.SecondaryDatabase;
-
-/**
- * SampleDatabase defines the storage containers, indices and foreign keys
- * for the sample database.
- *
- * @author Mark Hayes
- */
-public class SampleDatabase {
-
- private static final String CLASS_CATALOG = "java_class_catalog";
- private static final String SUPPLIER_STORE = "supplier_store";
- private static final String PART_STORE = "part_store";
- private static final String SHIPMENT_STORE = "shipment_store";
- private static final String SHIPMENT_PART_INDEX = "shipment_part_index";
- private static final String SHIPMENT_SUPPLIER_INDEX =
- "shipment_supplier_index";
- private static final String SUPPLIER_CITY_INDEX = "supplier_city_index";
-
- private Environment env;
- private Database partDb;
- private Database supplierDb;
- private Database shipmentDb;
- private SecondaryDatabase supplierByCityDb;
- private SecondaryDatabase shipmentByPartDb;
- private SecondaryDatabase shipmentBySupplierDb;
- private StoredClassCatalog javaCatalog;
-
- /**
- * Open all storage containers, indices, and catalogs.
- */
- public SampleDatabase(String homeDirectory)
- throws DatabaseException, FileNotFoundException {
-
- // Open the Berkeley DB environment in transactional mode.
- //
- System.out.println("Opening environment in: " + homeDirectory);
- EnvironmentConfig envConfig = new EnvironmentConfig();
- envConfig.setTransactional(true);
- envConfig.setAllowCreate(true);
- envConfig.setInitializeCache(true);
- envConfig.setInitializeLocking(true);
- env = new Environment(new File(homeDirectory), envConfig);
-
- // Set the Berkeley DB config for opening all stores.
- //
- DatabaseConfig dbConfig = new DatabaseConfig();
- dbConfig.setTransactional(true);
- dbConfig.setAllowCreate(true);
- dbConfig.setType(DatabaseType.BTREE);
-
- // Create the Serial class catalog. This holds the serialized class
- // format for all database records of serial format.
- //
- Database catalogDb = env.openDatabase(null, CLASS_CATALOG, null,
- dbConfig);
- javaCatalog = new StoredClassCatalog(catalogDb);
-
- // Open the Berkeley DB database for the part, supplier and shipment
- // stores. The stores are opened with no duplicate keys allowed.
- //
- partDb = env.openDatabase(null, PART_STORE, null, dbConfig);
-
- supplierDb = env.openDatabase(null, SUPPLIER_STORE, null, dbConfig);
-
- shipmentDb = env.openDatabase(null, SHIPMENT_STORE, null, dbConfig);
-
- // Open the SecondaryDatabase for the city index of the supplier store,
- // and for the part and supplier indices of the shipment store.
- // Duplicate keys are allowed since more than one supplier may be in
- // the same city, and more than one shipment may exist for the same
- // supplier or part. A foreign key constraint is defined for the
- // supplier and part indices to ensure that a shipment only refers to
- // existing part and supplier keys. The CASCADE delete action means
- // that shipments will be deleted if their associated part or supplier
- // is deleted.
- //
- SecondaryConfig secConfig = new SecondaryConfig();
- secConfig.setTransactional(true);
- secConfig.setAllowCreate(true);
- secConfig.setType(DatabaseType.BTREE);
- secConfig.setSortedDuplicates(true);
-
- secConfig.setKeyCreator(new SupplierByCityKeyCreator(javaCatalog,
- Supplier.class));
- supplierByCityDb = env.openSecondaryDatabase(null, SUPPLIER_CITY_INDEX,
- null,
- supplierDb,
- secConfig);
-
- secConfig.setKeyCreator(new ShipmentByPartKeyCreator(javaCatalog,
- Shipment.class));
- shipmentByPartDb = env.openSecondaryDatabase(null, SHIPMENT_PART_INDEX,
- null,
- shipmentDb,
- secConfig);
-
- secConfig.setKeyCreator(new ShipmentBySupplierKeyCreator(javaCatalog,
- Shipment.class));
- shipmentBySupplierDb = env.openSecondaryDatabase(null,
- SHIPMENT_SUPPLIER_INDEX,
- null,
- shipmentDb,
- secConfig);
- }
-
- /**
- * Return the storage environment for the database.
- */
- public final Environment getEnvironment() {
-
- return env;
- }
-
- /**
- * Return the class catalog.
- */
- public final StoredClassCatalog getClassCatalog() {
-
- return javaCatalog;
- }
-
- /**
- * Return the part storage container.
- */
- public final Database getPartDatabase() {
-
- return partDb;
- }
-
- /**
- * Return the supplier storage container.
- */
- public final Database getSupplierDatabase() {
-
- return supplierDb;
- }
-
- /**
- * Return the shipment storage container.
- */
- public final Database getShipmentDatabase() {
-
- return shipmentDb;
- }
-
- /**
- * Return the shipment-by-part index.
- */
- public final SecondaryDatabase getShipmentByPartDatabase() {
-
- return shipmentByPartDb;
- }
-
- /**
- * Return the shipment-by-supplier index.
- */
- public final SecondaryDatabase getShipmentBySupplierDatabase() {
-
- return shipmentBySupplierDb;
- }
-
- /**
- * Return the supplier-by-city index.
- */
- public final SecondaryDatabase getSupplierByCityDatabase() {
-
- return supplierByCityDb;
- }
-
- /**
- * Close all stores (closing a store automatically closes its indices).
- */
- public void close()
- throws DatabaseException {
-
- // Close secondary databases, then primary databases.
- supplierByCityDb.close();
- shipmentByPartDb.close();
- shipmentBySupplierDb.close();
- partDb.close();
- supplierDb.close();
- shipmentDb.close();
- // And don't forget to close the catalog and the environment.
- javaCatalog.close();
- env.close();
- }
-
- /**
- * The SecondaryKeyCreator for the SupplierByCity index. This is an
- * extension of the abstract class TupleSerialKeyCreator, which implements
- * SecondaryKeyCreator for the case where the data keys are of the format
- * TupleFormat and the data values are of the format SerialFormat.
- */
- private static class SupplierByCityKeyCreator
- extends TupleSerialKeyCreator {
-
- /**
- * Construct the city key extractor.
- * @param catalog is the class catalog.
- * @param valueClass is the supplier value class.
- */
- private SupplierByCityKeyCreator(ClassCatalog catalog,
- Class valueClass) {
-
- super(catalog, valueClass);
- }
-
- /**
- * Extract the city key from a supplier key/value pair. The city key
- * is stored in the supplier value, so the supplier key is not used.
- */
- public boolean createSecondaryKey(TupleInput primaryKeyInput,
- Object valueInput,
- TupleOutput indexKeyOutput) {
-
- Supplier supplier = (Supplier) valueInput;
- String city = supplier.getCity();
- if (city != null) {
- indexKeyOutput.writeString(supplier.getCity());
- return true;
- } else {
- return false;
- }
- }
- }
-
- /**
- * The SecondaryKeyCreator for the ShipmentByPart index. This is an
- * extension of the abstract class TupleSerialKeyCreator, which implements
- * SecondaryKeyCreator for the case where the data keys are of the format
- * TupleFormat and the data values are of the format SerialFormat.
- */
- private static class ShipmentByPartKeyCreator
- extends TupleSerialKeyCreator {
-
- /**
- * Construct the part key extractor.
- * @param catalog is the class catalog.
- * @param valueClass is the shipment value class.
- */
- private ShipmentByPartKeyCreator(ClassCatalog catalog,
- Class valueClass) {
- super(catalog, valueClass);
- }
-
- /**
- * Extract the part key from a shipment key/value pair. The part key
- * is stored in the shipment key, so the shipment value is not used.
- */
- public boolean createSecondaryKey(TupleInput primaryKeyInput,
- Object valueInput,
- TupleOutput indexKeyOutput) {
-
- String partNumber = primaryKeyInput.readString();
- // don't bother reading the supplierNumber
- indexKeyOutput.writeString(partNumber);
- return true;
- }
- }
-
- /**
- * The SecondaryKeyCreator for the ShipmentBySupplier index. This is an
- * extension of the abstract class TupleSerialKeyCreator, which implements
- * SecondaryKeyCreator for the case where the data keys are of the format
- * TupleFormat and the data values are of the format SerialFormat.
- */
- private static class ShipmentBySupplierKeyCreator
- extends TupleSerialKeyCreator {
-
- /**
- * Construct the supplier key extractor.
- * @param catalog is the class catalog.
- * @param valueClass is the shipment value class.
- */
- private ShipmentBySupplierKeyCreator(ClassCatalog catalog,
- Class valueClass) {
- super(catalog, valueClass);
- }
-
- /**
- * Extract the supplier key from a shipment key/value pair. The
- * supplier key is stored in the shipment key, so the shipment value is
- * not used.
- */
- public boolean createSecondaryKey(TupleInput primaryKeyInput,
- Object valueInput,
- TupleOutput indexKeyOutput) {
-
- primaryKeyInput.readString(); // skip the partNumber
- String supplierNumber = primaryKeyInput.readString();
- indexKeyOutput.writeString(supplierNumber);
- return true;
- }
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/sentity/SampleViews.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/sentity/SampleViews.java
deleted file mode 100644
index 6f447ff22..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/sentity/SampleViews.java
+++ /dev/null
@@ -1,420 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: SampleViews.java,v 1.3 2004/09/22 16:17:13 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.sentity;
-
-import com.sleepycat.bind.EntityBinding;
-import com.sleepycat.bind.EntryBinding;
-import com.sleepycat.bind.serial.ClassCatalog;
-import com.sleepycat.bind.serial.TupleSerialBinding;
-import com.sleepycat.bind.tuple.TupleBinding;
-import com.sleepycat.bind.tuple.TupleInput;
-import com.sleepycat.bind.tuple.TupleOutput;
-import com.sleepycat.collections.StoredSortedMap;
-import com.sleepycat.collections.StoredSortedValueSet;
-
-/**
- * SampleViews defines the data bindings and collection views for the sample
- * database.
- *
- * @author Mark Hayes
- */
-public class SampleViews {
-
- private StoredSortedMap partMap;
- private StoredSortedMap supplierMap;
- private StoredSortedMap shipmentMap;
- private StoredSortedMap shipmentByPartMap;
- private StoredSortedMap shipmentBySupplierMap;
- private StoredSortedMap supplierByCityMap;
-
- /**
- * Create the data bindings and collection views.
- */
- public SampleViews(SampleDatabase db) {
-
- // Create the data bindings.
- // In this sample, EntityBinding classes are used to bind the stored
- // key/data entry pair to a combined data object; a "tricky" binding
- // that uses transient fields is used--see PartBinding, etc, for
- // details. For keys, a one-to-one binding is implemented with
- // EntryBinding classes to bind the stored tuple entry to a key Object.
- //
- ClassCatalog catalog = db.getClassCatalog();
- EntryBinding partKeyBinding =
- new PartKeyBinding();
- EntityBinding partDataBinding =
- new PartBinding(catalog, Part.class);
- EntryBinding supplierKeyBinding =
- new SupplierKeyBinding();
- EntityBinding supplierDataBinding =
- new SupplierBinding(catalog, Supplier.class);
- EntryBinding shipmentKeyBinding =
- new ShipmentKeyBinding();
- EntityBinding shipmentDataBinding =
- new ShipmentBinding(catalog, Shipment.class);
- EntryBinding cityKeyBinding =
- TupleBinding.getPrimitiveBinding(String.class);
-
- // Create map views for all stores and indices.
- // StoredSortedMap is used since the stores and indices are ordered
- // (they use the DB_BTREE access method).
- //
- partMap =
- new StoredSortedMap(db.getPartDatabase(),
- partKeyBinding, partDataBinding, true);
- supplierMap =
- new StoredSortedMap(db.getSupplierDatabase(),
- supplierKeyBinding, supplierDataBinding, true);
- shipmentMap =
- new StoredSortedMap(db.getShipmentDatabase(),
- shipmentKeyBinding, shipmentDataBinding, true);
- shipmentByPartMap =
- new StoredSortedMap(db.getShipmentByPartDatabase(),
- partKeyBinding, shipmentDataBinding, true);
- shipmentBySupplierMap =
- new StoredSortedMap(db.getShipmentBySupplierDatabase(),
- supplierKeyBinding, shipmentDataBinding, true);
- supplierByCityMap =
- new StoredSortedMap(db.getSupplierByCityDatabase(),
- cityKeyBinding, supplierDataBinding, true);
- }
-
- // The views returned below can be accessed using the java.util.Map or
- // java.util.Set interfaces, or using the StoredSortedMap and
- // StoredValueSet classes, which provide additional methods. The entity
- // sets could be obtained directly from the Map.values() method but
- // convenience methods are provided here to return them in order to avoid
- // down-casting elsewhere.
-
- /**
- * Return a map view of the part storage container.
- */
- public StoredSortedMap getPartMap() {
-
- return partMap;
- }
-
- /**
- * Return a map view of the supplier storage container.
- */
- public StoredSortedMap getSupplierMap() {
-
- return supplierMap;
- }
-
- /**
- * Return a map view of the shipment storage container.
- */
- public StoredSortedMap getShipmentMap() {
-
- return shipmentMap;
- }
-
- /**
- * Return an entity set view of the part storage container.
- */
- public StoredSortedValueSet getPartSet() {
-
- return (StoredSortedValueSet) partMap.values();
- }
-
- /**
- * Return an entity set view of the supplier storage container.
- */
- public StoredSortedValueSet getSupplierSet() {
-
- return (StoredSortedValueSet) supplierMap.values();
- }
-
- /**
- * Return an entity set view of the shipment storage container.
- */
- public StoredSortedValueSet getShipmentSet() {
-
- return (StoredSortedValueSet) shipmentMap.values();
- }
-
- /**
- * Return a map view of the shipment-by-part index.
- */
- public StoredSortedMap getShipmentByPartMap() {
-
- return shipmentByPartMap;
- }
-
- /**
- * Return a map view of the shipment-by-supplier index.
- */
- public StoredSortedMap getShipmentBySupplierMap() {
-
- return shipmentBySupplierMap;
- }
-
- /**
- * Return a map view of the supplier-by-city index.
- */
- public final StoredSortedMap getSupplierByCityMap() {
-
- return supplierByCityMap;
- }
-
- /**
- * PartKeyBinding is used to bind the stored key tuple entry for a part to
- * a key object representation.
- */
- private static class PartKeyBinding extends TupleBinding {
-
- /**
- * Construct the binding object.
- */
- private PartKeyBinding() {
- }
-
- /**
- * Create the key object from the stored key tuple entry.
- */
- public Object entryToObject(TupleInput input) {
-
- String number = input.readString();
- return new PartKey(number);
- }
-
- /**
- * Create the stored key tuple entry from the key object.
- */
- public void objectToEntry(Object object, TupleOutput output) {
-
- PartKey key = (PartKey) object;
- output.writeString(key.getNumber());
- }
- }
-
- /**
- * PartBinding is used to bind the stored key/data entry pair for a part
- * to a combined data object (entity).
- *
- * <p> The binding is "tricky" in that it uses the Part class for both the
- * stored data entry and the combined entity object. To do this, Part's
- * key field(s) are transient and are set by the binding after the data
- * object has been deserialized. This avoids the use of a PartData class
- * completely. </p>
- */
- private static class PartBinding extends TupleSerialBinding {
-
- /**
- * Construct the binding object.
- */
- private PartBinding(ClassCatalog classCatalog, Class dataClass) {
-
- super(classCatalog, dataClass);
- }
-
- /**
- * Create the entity by combining the stored key and data.
- * This "tricky" binding returns the stored data as the entity, but
- * first it sets the transient key fields from the stored key.
- */
- public Object entryToObject(TupleInput keyInput, Object dataInput) {
-
- String number = keyInput.readString();
- Part part = (Part) dataInput;
- part.setKey(number);
- return part;
- }
-
- /**
- * Create the stored key from the entity.
- */
- public void objectToKey(Object object, TupleOutput output) {
-
- Part part = (Part) object;
- output.writeString(part.getNumber());
- }
-
- /**
- * Return the entity as the stored data. There is nothing to do here
- * since the entity's key fields are transient.
- */
- public Object objectToData(Object object) {
-
- return object;
- }
- }
-
- /**
- * SupplierKeyBinding is used to bind the stored key tuple entry for a
- * supplier to a key object representation.
- */
- private static class SupplierKeyBinding extends TupleBinding {
-
- /**
- * Construct the binding object.
- */
- private SupplierKeyBinding() {
- }
-
- /**
- * Create the key object from the stored key tuple entry.
- */
- public Object entryToObject(TupleInput input) {
-
- String number = input.readString();
- return new SupplierKey(number);
- }
-
- /**
- * Create the stored key tuple entry from the key object.
- */
- public void objectToEntry(Object object, TupleOutput output) {
-
- SupplierKey key = (SupplierKey) object;
- output.writeString(key.getNumber());
- }
- }
-
- /**
- * SupplierBinding is used to bind the stored key/data entry pair for a
- * supplier to a combined data object (entity).
- *
- * <p> The binding is "tricky" in that it uses the Supplier class for both
- * the stored data entry and the combined entity object. To do this,
- * Supplier's key field(s) are transient and are set by the binding after
- * the data object has been deserialized. This avoids the use of a
- * SupplierData class completely. </p>
- */
- private static class SupplierBinding extends TupleSerialBinding {
-
- /**
- * Construct the binding object.
- */
- private SupplierBinding(ClassCatalog classCatalog, Class dataClass) {
-
- super(classCatalog, dataClass);
- }
-
- /**
- * Create the entity by combining the stored key and data.
- * This "tricky" binding returns the stored data as the entity, but
- * first it sets the transient key fields from the stored key.
- */
- public Object entryToObject(TupleInput keyInput, Object dataInput) {
-
- String number = keyInput.readString();
- Supplier supplier = (Supplier) dataInput;
- supplier.setKey(number);
- return supplier;
- }
-
- /**
- * Create the stored key from the entity.
- */
- public void objectToKey(Object object, TupleOutput output) {
-
- Supplier supplier = (Supplier) object;
- output.writeString(supplier.getNumber());
- }
-
- /**
- * Return the entity as the stored data. There is nothing to do here
- * since the entity's key fields are transient.
- */
- public Object objectToData(Object object) {
-
- return object;
- }
- }
-
- /**
- * ShipmentKeyBinding is used to bind the stored key tuple entry for a
- * shipment to a key object representation.
- */
- private static class ShipmentKeyBinding extends TupleBinding {
-
- /**
- * Construct the binding object.
- */
- private ShipmentKeyBinding() {
- }
-
- /**
- * Create the key object from the stored key tuple entry.
- */
- public Object entryToObject(TupleInput input) {
-
- String partNumber = input.readString();
- String supplierNumber = input.readString();
- return new ShipmentKey(partNumber, supplierNumber);
- }
-
- /**
- * Create the stored key tuple entry from the key object.
- */
- public void objectToEntry(Object object, TupleOutput output) {
-
- ShipmentKey key = (ShipmentKey) object;
- output.writeString(key.getPartNumber());
- output.writeString(key.getSupplierNumber());
- }
- }
-
- /**
- * ShipmentBinding is used to bind the stored key/data entry pair for a
- * shipment to a combined data object (entity).
- *
- * <p> The binding is "tricky" in that it uses the Shipment class for both
- * the stored data entry and the combined entity object. To do this,
- * Shipment's key field(s) are transient and are set by the binding after
- * the data object has been deserialized. This avoids the use of a
- * ShipmentData class completely. </p>
- */
- private static class ShipmentBinding extends TupleSerialBinding {
-
- /**
- * Construct the binding object.
- */
- private ShipmentBinding(ClassCatalog classCatalog, Class dataClass) {
-
- super(classCatalog, dataClass);
- }
-
- /**
- * Create the entity by combining the stored key and data.
- * This "tricky" binding returns the stored data as the entity, but
- * first it sets the transient key fields from the stored key.
- */
- public Object entryToObject(TupleInput keyInput, Object dataInput) {
-
- String partNumber = keyInput.readString();
- String supplierNumber = keyInput.readString();
- Shipment shipment = (Shipment) dataInput;
- shipment.setKey(partNumber, supplierNumber);
- return shipment;
- }
-
- /**
- * Create the stored key from the entity.
- */
- public void objectToKey(Object object, TupleOutput output) {
-
- Shipment shipment = (Shipment) object;
- output.writeString(shipment.getPartNumber());
- output.writeString(shipment.getSupplierNumber());
- }
-
- /**
- * Return the entity as the stored data. There is nothing to do here
- * since the entity's key fields are transient.
- */
- public Object objectToData(Object object) {
-
- return object;
- }
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/sentity/Shipment.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/sentity/Shipment.java
deleted file mode 100644
index 8ccc8bc0c..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/sentity/Shipment.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: Shipment.java,v 1.2 2004/09/22 16:17:13 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.sentity;
-
-import java.io.Serializable;
-
-/**
- * A Shipment represents the combined key/data pair for a shipment entity.
- *
- * <p> In this sample, Shipment is created from the stored key/data entry
- * using TupleSerialEntityBinding. See {@link SampleViews.PartBinding} for
- * details.
- * </p>
- *
- * <p> The binding is "tricky" in that it uses this class for both the stored
- * data entry and the combined entity object. To do this, the key field(s)
- * are transient and are set by the binding after the data object has been
- * deserialized. This avoids the use of a ShipmentData class completely. </p>
- *
- * <p> Since this class is used directly for data storage, it must be
- * Serializable. </p>
- *
- * @author Mark Hayes
- */
-public class Shipment implements Serializable {
-
- private transient String partNumber;
- private transient String supplierNumber;
- private int quantity;
-
- public Shipment(String partNumber, String supplierNumber, int quantity) {
-
- this.partNumber = partNumber;
- this.supplierNumber = supplierNumber;
- this.quantity = quantity;
- }
-
- /**
- * Set the transient key fields after deserializing. This method is only
- * called by data bindings.
- */
- void setKey(String partNumber, String supplierNumber) {
-
- this.partNumber = partNumber;
- this.supplierNumber = supplierNumber;
- }
-
- public final String getPartNumber() {
-
- return partNumber;
- }
-
- public final String getSupplierNumber() {
-
- return supplierNumber;
- }
-
- public final int getQuantity() {
-
- return quantity;
- }
-
- public String toString() {
-
- return "[Shipment: part=" + partNumber +
- " supplier=" + supplierNumber +
- " quantity=" + quantity + ']';
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/sentity/ShipmentKey.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/sentity/ShipmentKey.java
deleted file mode 100644
index 62e51cbc9..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/sentity/ShipmentKey.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: ShipmentKey.java,v 1.2 2004/09/22 16:17:13 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.sentity;
-
-/**
- * A ShipmentKey serves as the key in the key/data pair for a shipment entity.
- *
- * <p> In this sample, ShipmentKey is bound to the key's tuple storage entry
- * using a TupleBinding. Because it is not used directly as storage data, it
- * does not need to be Serializable. </p>
- *
- * @author Mark Hayes
- */
-public class ShipmentKey {
-
- private String partNumber;
- private String supplierNumber;
-
- public ShipmentKey(String partNumber, String supplierNumber) {
-
- this.partNumber = partNumber;
- this.supplierNumber = supplierNumber;
- }
-
- public final String getPartNumber() {
-
- return partNumber;
- }
-
- public final String getSupplierNumber() {
-
- return supplierNumber;
- }
-
- public String toString() {
-
- return "[ShipmentKey: supplier=" + supplierNumber +
- " part=" + partNumber + ']';
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/sentity/Supplier.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/sentity/Supplier.java
deleted file mode 100644
index f98b0aaf3..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/sentity/Supplier.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: Supplier.java,v 1.2 2004/09/22 16:17:13 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.sentity;
-
-import java.io.Serializable;
-
-/**
- * A Supplier represents the combined key/data pair for a supplier entity.
- *
- * <p> In this sample, Supplier is created from the stored key/data entry
- * using TupleSerialEntityBinding. See {@link SampleViews.PartBinding} for
- * details.
- * </p>
- *
- * <p> The binding is "tricky" in that it uses this class for both the stored
- * data entry and the combined entity object. To do this, the key field(s) are
- * transient and are set by the binding after the data object has been
- * deserialized. This avoids the use of a SupplierData class completely. </p>
- *
- * <p> Since this class is used directly for data storage, it must be
- * Serializable. </p>
- *
- * @author Mark Hayes
- */
-public class Supplier implements Serializable {
-
- private transient String number;
- private String name;
- private int status;
- private String city;
-
- public Supplier(String number, String name, int status, String city) {
-
- this.number = number;
- this.name = name;
- this.status = status;
- this.city = city;
- }
-
- /**
- * Set the transient key fields after deserializing. This method is only
- * called by data bindings.
- */
- void setKey(String number) {
-
- this.number = number;
- }
-
- public final String getNumber() {
-
- return number;
- }
-
- public final String getName() {
-
- return name;
- }
-
- public final int getStatus() {
-
- return status;
- }
-
- public final String getCity() {
-
- return city;
- }
-
- public String toString() {
-
- return "[Supplier: number=" + number +
- " name=" + name +
- " status=" + status +
- " city=" + city + ']';
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/sentity/SupplierKey.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/sentity/SupplierKey.java
deleted file mode 100644
index bbd9e6042..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/sentity/SupplierKey.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: SupplierKey.java,v 1.2 2004/09/22 16:17:13 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.sentity;
-
-/**
- * A SupplierKey serves as the key in the key/data pair for a supplier entity.
- *
- * <p> In this sample, SupplierKey is bound to the key's tuple storage entry
- * using a TupleBinding. Because it is not used directly as storage data, it
- * does not need to be Serializable. </p>
- *
- * @author Mark Hayes
- */
-public class SupplierKey {
-
- private String number;
-
- public SupplierKey(String number) {
-
- this.number = number;
- }
-
- public final String getNumber() {
-
- return number;
- }
-
- public String toString() {
-
- return "[SupplierKey: number=" + number + ']';
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/sentity/Weight.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/sentity/Weight.java
deleted file mode 100644
index c70bff093..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/sentity/Weight.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: Weight.java,v 1.2 2004/09/22 16:17:13 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.sentity;
-
-import java.io.Serializable;
-
-/**
- * Weight represents a weight amount and unit of measure.
- *
- * <p> In this sample, Weight is embedded in part data values which are stored
- * as Java serialized objects; therefore Weight must be Serializable. </p>
- *
- * @author Mark Hayes
- */
-public class Weight implements Serializable {
-
- public final static String GRAMS = "grams";
- public final static String OUNCES = "ounces";
-
- private double amount;
- private String units;
-
- public Weight(double amount, String units) {
-
- this.amount = amount;
- this.units = units;
- }
-
- public final double getAmount() {
-
- return amount;
- }
-
- public final String getUnits() {
-
- return units;
- }
-
- public String toString() {
-
- return "[" + amount + ' ' + units + ']';
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/tuple/Part.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/tuple/Part.java
deleted file mode 100644
index 039d02326..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/tuple/Part.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: Part.java,v 1.2 2004/09/22 16:17:13 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.tuple;
-
-/**
- * A Part represents the combined key/data pair for a part entity.
- *
- * <p> In this sample, Part is created from the stored key/data entry using a
- * SerialSerialBinding. See {@link SampleViews.PartBinding} for details.
- * Since this class is not directly used for data storage, it does not need to
- * be Serializable. </p>
- *
- * @author Mark Hayes
- */
-public class Part {
-
- private String number;
- private String name;
- private String color;
- private Weight weight;
- private String city;
-
- public Part(String number, String name, String color, Weight weight,
- String city) {
-
- this.number = number;
- this.name = name;
- this.color = color;
- this.weight = weight;
- this.city = city;
- }
-
- public final String getNumber() {
-
- return number;
- }
-
- public final String getName() {
-
- return name;
- }
-
- public final String getColor() {
-
- return color;
- }
-
- public final Weight getWeight() {
-
- return weight;
- }
-
- public final String getCity() {
-
- return city;
- }
-
- public String toString() {
-
- return "[Part: number=" + number +
- " name=" + name +
- " color=" + color +
- " weight=" + weight +
- " city=" + city + ']';
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/tuple/PartData.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/tuple/PartData.java
deleted file mode 100644
index 634c51166..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/tuple/PartData.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: PartData.java,v 1.2 2004/09/22 16:17:13 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.tuple;
-
-import java.io.Serializable;
-
-/**
- * A PartData serves as the value in the key/value pair for a part entity.
- *
- * <p> In this sample, PartData is used only as the storage data for the
- * value, while the Part object is used as the value's object representation.
- * Because it is used directly as storage data using serial format, it must be
- * Serializable. </p>
- *
- * @author Mark Hayes
- */
-public class PartData implements Serializable {
-
- private String name;
- private String color;
- private Weight weight;
- private String city;
-
- public PartData(String name, String color, Weight weight, String city) {
-
- this.name = name;
- this.color = color;
- this.weight = weight;
- this.city = city;
- }
-
- public final String getName() {
-
- return name;
- }
-
- public final String getColor() {
-
- return color;
- }
-
- public final Weight getWeight() {
-
- return weight;
- }
-
- public final String getCity() {
-
- return city;
- }
-
- public String toString() {
-
- return "[PartData: name=" + name +
- " color=" + color +
- " weight=" + weight +
- " city=" + city + ']';
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/tuple/PartKey.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/tuple/PartKey.java
deleted file mode 100644
index 455fc0418..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/tuple/PartKey.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: PartKey.java,v 1.2 2004/09/22 16:17:13 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.tuple;
-
-/**
- * A PartKey serves as the key in the key/data pair for a part entity.
- *
- * <p> In this sample, PartKey is bound to the key's tuple storage entry using
- * a TupleBinding. Because it is not used directly as storage data, it does
- * not need to be Serializable. </p>
- *
- * @author Mark Hayes
- */
-public class PartKey {
-
- private String number;
-
- public PartKey(String number) {
-
- this.number = number;
- }
-
- public final String getNumber() {
-
- return number;
- }
-
- public String toString() {
-
- return "[PartKey: number=" + number + ']';
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/tuple/Sample.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/tuple/Sample.java
deleted file mode 100644
index 2c9f8c66a..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/tuple/Sample.java
+++ /dev/null
@@ -1,249 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: Sample.java,v 1.4 2004/09/22 16:17:13 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.tuple;
-
-import java.io.FileNotFoundException;
-import java.util.Iterator;
-import java.util.Set;
-
-import com.sleepycat.collections.StoredIterator;
-import com.sleepycat.collections.TransactionRunner;
-import com.sleepycat.collections.TransactionWorker;
-import com.sleepycat.db.DatabaseException;
-
-/**
- * Sample is the main entry point for the sample program and may be run as
- * follows:
- *
- * <pre>
- * java com.sleepycat.examples.collections.ship.tuple.Sample
- * [-h <home-directory> ]
- * </pre>
- *
- * <p> The default for the home directory is ./tmp -- the tmp subdirectory of
- * the current directory where the sample is run. The home directory must exist
- * before running the sample. To recreate the sample database from scratch,
- * delete all files in the home directory before running the sample. </p>
- *
- * @author Mark Hayes
- */
-public class Sample {
-
- private SampleDatabase db;
- private SampleViews views;
-
- /**
- * Run the sample program.
- */
- public static void main(String[] args) {
-
- System.out.println("\nRunning sample: " + Sample.class);
-
- // Parse the command line arguments.
- //
- String homeDir = "./tmp";
- for (int i = 0; i < args.length; i += 1) {
- if (args[i].equals("-h") && i < args.length - 1) {
- i += 1;
- homeDir = args[i];
- } else {
- System.err.println("Usage:\n java " + Sample.class.getName() +
- "\n [-h <home-directory>]");
- System.exit(2);
- }
- }
-
- // Run the sample.
- //
- Sample sample = null;
- try {
- sample = new Sample(homeDir);
- sample.run();
- } catch (Exception e) {
- // If an exception reaches this point, the last transaction did not
- // complete. If the exception is RunRecoveryException, follow
- // the Berkeley DB recovery procedures before running again.
- e.printStackTrace();
- } finally {
- if (sample != null) {
- try {
- // Always attempt to close the database cleanly.
- sample.close();
- } catch (Exception e) {
- System.err.println("Exception during database close:");
- e.printStackTrace();
- }
- }
- }
- }
-
- /**
- * Open the database and views.
- */
- private Sample(String homeDir)
- throws DatabaseException, FileNotFoundException {
-
- db = new SampleDatabase(homeDir);
- views = new SampleViews(db);
- }
-
- /**
- * Close the database cleanly.
- */
- private void close()
- throws DatabaseException {
-
- db.close();
- }
-
- /**
- * Run two transactions to populate and print the database. A
- * TransactionRunner is used to ensure consistent handling of transactions,
- * including deadlock retries. But the best transaction handling mechanism
- * to use depends on the application.
- */
- private void run()
- throws Exception {
-
- TransactionRunner runner = new TransactionRunner(db.getEnvironment());
- runner.run(new PopulateDatabase());
- runner.run(new PrintDatabase());
- }
-
- /**
- * Populate the database in a single transaction.
- */
- private class PopulateDatabase implements TransactionWorker {
-
- public void doWork()
- throws Exception {
- addSuppliers();
- addParts();
- addShipments();
- }
- }
-
- /**
- * Print the database in a single transaction. All entities are printed
- * and the indices are used to print the entities for certain keys.
- *
- * <p> Note the use of special iterator() methods. These are used here
- * with indices to find the shipments for certain keys. For details on
- * database iterators see {@link StoredIterator}. </p>
- */
- private class PrintDatabase implements TransactionWorker {
-
- public void doWork()
- throws Exception {
- printValues("Parts",
- views.getPartSet().iterator());
- printValues("Suppliers",
- views.getSupplierSet().iterator());
- printValues("Suppliers for City Paris",
- views.getSupplierByCityMap().duplicates(
- "Paris").iterator());
- printValues("Shipments",
- views.getShipmentSet().iterator());
- printValues("Shipments for Part P1",
- views.getShipmentByPartMap().duplicates(
- new PartKey("P1")).iterator());
- printValues("Shipments for Supplier S1",
- views.getShipmentBySupplierMap().duplicates(
- new SupplierKey("S1")).iterator());
- }
- }
-
- /**
- * Populate the part entities in the database. If the part set is not
- * empty, assume that this has already been done.
- */
- private void addParts() {
-
- Set parts = views.getPartSet();
- if (parts.isEmpty()) {
- System.out.println("Adding Parts");
- parts.add(new Part("P1", "Nut", "Red",
- new Weight(12.0, Weight.GRAMS), "London"));
- parts.add(new Part("P2", "Bolt", "Green",
- new Weight(17.0, Weight.GRAMS), "Paris"));
- parts.add(new Part("P3", "Screw", "Blue",
- new Weight(17.0, Weight.GRAMS), "Rome"));
- parts.add(new Part("P4", "Screw", "Red",
- new Weight(14.0, Weight.GRAMS), "London"));
- parts.add(new Part("P5", "Cam", "Blue",
- new Weight(12.0, Weight.GRAMS), "Paris"));
- parts.add(new Part("P6", "Cog", "Red",
- new Weight(19.0, Weight.GRAMS), "London"));
- }
- }
-
- /**
- * Populate the supplier entities in the database. If the supplier set is
- * not empty, assume that this has already been done.
- */
- private void addSuppliers() {
-
- Set suppliers = views.getSupplierSet();
- if (suppliers.isEmpty()) {
- System.out.println("Adding Suppliers");
- suppliers.add(new Supplier("S1", "Smith", 20, "London"));
- suppliers.add(new Supplier("S2", "Jones", 10, "Paris"));
- suppliers.add(new Supplier("S3", "Blake", 30, "Paris"));
- suppliers.add(new Supplier("S4", "Clark", 20, "London"));
- suppliers.add(new Supplier("S5", "Adams", 30, "Athens"));
- }
- }
-
- /**
- * Populate the shipment entities in the database. If the shipment set
- * is not empty, assume that this has already been done.
- */
- private void addShipments() {
-
- Set shipments = views.getShipmentSet();
- if (shipments.isEmpty()) {
- System.out.println("Adding Shipments");
- shipments.add(new Shipment("P1", "S1", 300));
- shipments.add(new Shipment("P2", "S1", 200));
- shipments.add(new Shipment("P3", "S1", 400));
- shipments.add(new Shipment("P4", "S1", 200));
- shipments.add(new Shipment("P5", "S1", 100));
- shipments.add(new Shipment("P6", "S1", 100));
- shipments.add(new Shipment("P1", "S2", 300));
- shipments.add(new Shipment("P2", "S2", 400));
- shipments.add(new Shipment("P2", "S3", 200));
- shipments.add(new Shipment("P2", "S4", 200));
- shipments.add(new Shipment("P4", "S4", 300));
- shipments.add(new Shipment("P5", "S4", 400));
- }
- }
-
- /**
- * Print the objects returned by an iterator of entity value objects.
- *
- * <p><b> IMPORTANT: All database iterators must be closed to avoid
- * serious database problems. If the iterator is not closed, the
- * underlying Berkeley DB cursor is not closed either. </b></p>
- */
- private void printValues(String label, Iterator iterator) {
-
- System.out.println("\n--- " + label + " ---");
- try {
- while (iterator.hasNext()) {
- System.out.println(iterator.next().toString());
- }
- } finally {
- // IMPORTANT: Use StoredIterator to close all database
- // iterators. If java.util.Iterator is in hand, you can safely
- // close it by calling StoredIterator.close(Iterator).
- StoredIterator.close(iterator);
- }
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/tuple/SampleDatabase.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/tuple/SampleDatabase.java
deleted file mode 100644
index 73b5dce87..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/tuple/SampleDatabase.java
+++ /dev/null
@@ -1,322 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: SampleDatabase.java,v 1.4 2004/09/22 18:00:59 bostic Exp $
- */
-
-package com.sleepycat.examples.collections.ship.tuple;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-
-import com.sleepycat.bind.serial.ClassCatalog;
-import com.sleepycat.bind.serial.StoredClassCatalog;
-import com.sleepycat.bind.serial.TupleSerialKeyCreator;
-import com.sleepycat.bind.tuple.TupleInput;
-import com.sleepycat.bind.tuple.TupleOutput;
-import com.sleepycat.db.Database;
-import com.sleepycat.db.DatabaseConfig;
-import com.sleepycat.db.DatabaseException;
-import com.sleepycat.db.DatabaseType;
-import com.sleepycat.db.Environment;
-import com.sleepycat.db.EnvironmentConfig;
-import com.sleepycat.db.SecondaryConfig;
-import com.sleepycat.db.SecondaryDatabase;
-
-/**
- * SampleDatabase defines the storage containers, indices and foreign keys
- * for the sample database.
- *
- * @author Mark Hayes
- */
-public class SampleDatabase {
-
- private static final String CLASS_CATALOG = "java_class_catalog";
- private static final String SUPPLIER_STORE = "supplier_store";
- private static final String PART_STORE = "part_store";
- private static final String SHIPMENT_STORE = "shipment_store";
- private static final String SHIPMENT_PART_INDEX = "shipment_part_index";
- private static final String SHIPMENT_SUPPLIER_INDEX =
- "shipment_supplier_index";
- private static final String SUPPLIER_CITY_INDEX = "supplier_city_index";
-
- private Environment env;
- private Database partDb;
- private Database supplierDb;
- private Database shipmentDb;
- private SecondaryDatabase supplierByCityDb;
- private SecondaryDatabase shipmentByPartDb;
- private SecondaryDatabase shipmentBySupplierDb;
- private StoredClassCatalog javaCatalog;
-
- /**
- * Open all storage containers, indices, and catalogs.
- */
- public SampleDatabase(String homeDirectory)
- throws DatabaseException, FileNotFoundException {
-
- // Open the Berkeley DB environment in transactional mode.
- //
- System.out.println("Opening environment in: " + homeDirectory);
- EnvironmentConfig envConfig = new EnvironmentConfig();
- envConfig.setTransactional(true);
- envConfig.setAllowCreate(true);
- envConfig.setInitializeCache(true);
- envConfig.setInitializeLocking(true);
- env = new Environment(new File(homeDirectory), envConfig);
-
- // Set the Berkeley DB config for opening all stores.
- //
- DatabaseConfig dbConfig = new DatabaseConfig();
- dbConfig.setTransactional(true);
- dbConfig.setAllowCreate(true);
- dbConfig.setType(DatabaseType.BTREE);
-
- // Create the Serial class catalog. This holds the serialized class
- // format for all database records of serial format.
- //
- Database catalogDb = env.openDatabase(null, CLASS_CATALOG, null,
- dbConfig);
- javaCatalog = new StoredClassCatalog(catalogDb);
-
- // Open the Berkeley DB database for the part, supplier and shipment
- // stores. The stores are opened with no duplicate keys allowed.
- //
- partDb = env.openDatabase(null, PART_STORE, null, dbConfig);
-
- supplierDb = env.openDatabase(null, SUPPLIER_STORE, null, dbConfig);
-
- shipmentDb = env.openDatabase(null, SHIPMENT_STORE, null, dbConfig);
-
- // Open the SecondaryDatabase for the city index of the supplier store,
- // and for the part and supplier indices of the shipment store.
- // Duplicate keys are allowed since more than one supplier may be in
- // the same city, and more than one shipment may exist for the same
- // supplier or part. A foreign key constraint is defined for the
- // supplier and part indices to ensure that a shipment only refers to
- // existing part and supplier keys. The CASCADE delete action means
- // that shipments will be deleted if their associated part or supplier
- // is deleted.
- //
- SecondaryConfig secConfig = new SecondaryConfig();
- secConfig.setTransactional(true);
- secConfig.setAllowCreate(true);
- secConfig.setType(DatabaseType.BTREE);
- secConfig.setSortedDuplicates(true);
-
- secConfig.setKeyCreator(new SupplierByCityKeyCreator(javaCatalog,
- SupplierData.class));
- supplierByCityDb = env.openSecondaryDatabase(null, SUPPLIER_CITY_INDEX,
- null,
- supplierDb,
- secConfig);
-
- secConfig.setKeyCreator(new ShipmentByPartKeyCreator(javaCatalog,
- ShipmentData.class));
- shipmentByPartDb = env.openSecondaryDatabase(null, SHIPMENT_PART_INDEX,
- null,
- shipmentDb,
- secConfig);
-
- secConfig.setKeyCreator(new ShipmentBySupplierKeyCreator(javaCatalog,
- ShipmentData.class));
- shipmentBySupplierDb = env.openSecondaryDatabase(null,
- SHIPMENT_SUPPLIER_INDEX,
- null,
- shipmentDb,
- secConfig);
- }
-
- /**
- * Return the storage environment for the database.
- */
- public final Environment getEnvironment() {
-
- return env;
- }
-
- /**
- * Return the class catalog.
- */
- public final StoredClassCatalog getClassCatalog() {
-
- return javaCatalog;
- }
-
- /**
- * Return the part storage container.
- */
- public final Database getPartDatabase() {
-
- return partDb;
- }
-
- /**
- * Return the supplier storage container.
- */
- public final Database getSupplierDatabase() {
-
- return supplierDb;
- }
-
- /**
- * Return the shipment storage container.
- */
- public final Database getShipmentDatabase() {
-
- return shipmentDb;
- }
-
- /**
- * Return the shipment-by-part index.
- */
- public final SecondaryDatabase getShipmentByPartDatabase() {
-
- return shipmentByPartDb;
- }
-
- /**
- * Return the shipment-by-supplier index.
- */
- public final SecondaryDatabase getShipmentBySupplierDatabase() {
-
- return shipmentBySupplierDb;
- }
-
- /**
- * Return the supplier-by-city index.
- */
- public final SecondaryDatabase getSupplierByCityDatabase() {
-
- return supplierByCityDb;
- }
-
- /**
- * Close all stores (closing a store automatically closes its indices).
- */
- public void close()
- throws DatabaseException {
-
- // Close secondary databases, then primary databases.
- supplierByCityDb.close();
- shipmentByPartDb.close();
- shipmentBySupplierDb.close();
- partDb.close();
- supplierDb.close();
- shipmentDb.close();
- // And don't forget to close the catalog and the environment.
- javaCatalog.close();
- env.close();
- }
-
- /**
- * The SecondaryKeyCreator for the SupplierByCity index. This is an
- * extension of the abstract class TupleSerialKeyCreator, which implements
- * SecondaryKeyCreator for the case where the data keys are of the format
- * TupleFormat and the data values are of the format SerialFormat.
- */
- private static class SupplierByCityKeyCreator
- extends TupleSerialKeyCreator {
-
- /**
- * Construct the city key extractor.
- * @param catalog is the class catalog.
- * @param valueClass is the supplier value class.
- */
- private SupplierByCityKeyCreator(ClassCatalog catalog,
- Class valueClass) {
-
- super(catalog, valueClass);
- }
-
- /**
- * Extract the city key from a supplier key/value pair. The city key
- * is stored in the supplier value, so the supplier key is not used.
- */
- public boolean createSecondaryKey(TupleInput primaryKeyInput,
- Object valueInput,
- TupleOutput indexKeyOutput) {
-
- SupplierData supplierData = (SupplierData) valueInput;
- String city = supplierData.getCity();
- if (city != null) {
- indexKeyOutput.writeString(supplierData.getCity());
- return true;
- } else {
- return false;
- }
- }
- }
-
- /**
- * The SecondaryKeyCreator for the ShipmentByPart index. This is an
- * extension of the abstract class TupleSerialKeyCreator, which implements
- * SecondaryKeyCreator for the case where the data keys are of the format
- * TupleFormat and the data values are of the format SerialFormat.
- */
- private static class ShipmentByPartKeyCreator
- extends TupleSerialKeyCreator {
-
- /**
- * Construct the part key extractor.
- * @param catalog is the class catalog.
- * @param valueClass is the shipment value class.
- */
- private ShipmentByPartKeyCreator(ClassCatalog catalog,
- Class valueClass) {
- super(catalog, valueClass);
- }
-
- /**
- * Extract the part key from a shipment key/value pair. The part key
- * is stored in the shipment key, so the shipment value is not used.
- */
- public boolean createSecondaryKey(TupleInput primaryKeyInput,
- Object valueInput,
- TupleOutput indexKeyOutput) {
-
- String partNumber = primaryKeyInput.readString();
- // don't bother reading the supplierNumber
- indexKeyOutput.writeString(partNumber);
- return true;
- }
- }
-
- /**
- * The SecondaryKeyCreator for the ShipmentBySupplier index. This is an
- * extension of the abstract class TupleSerialKeyCreator, which implements
- * SecondaryKeyCreator for the case where the data keys are of the format
- * TupleFormat and the data values are of the format SerialFormat.
- */
- private static class ShipmentBySupplierKeyCreator
- extends TupleSerialKeyCreator {
-
- /**
- * Construct the supplier key extractor.
- * @param catalog is the class catalog.
- * @param valueClass is the shipment value class.
- */
- private ShipmentBySupplierKeyCreator(ClassCatalog catalog,
- Class valueClass) {
- super(catalog, valueClass);
- }
-
- /**
- * Extract the supplier key from a shipment key/value pair. The
- * supplier key is stored in the shipment key, so the shipment value is
- * not used.
- */
- public boolean createSecondaryKey(TupleInput primaryKeyInput,
- Object valueInput,
- TupleOutput indexKeyOutput) {
-
- primaryKeyInput.readString(); // skip the partNumber
- String supplierNumber = primaryKeyInput.readString();
- indexKeyOutput.writeString(supplierNumber);
- return true;
- }
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/tuple/SampleViews.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/tuple/SampleViews.java
deleted file mode 100644
index 0d5604800..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/tuple/SampleViews.java
+++ /dev/null
@@ -1,397 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: SampleViews.java,v 1.3 2004/09/22 16:17:13 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.tuple;
-
-import com.sleepycat.bind.EntityBinding;
-import com.sleepycat.bind.EntryBinding;
-import com.sleepycat.bind.serial.ClassCatalog;
-import com.sleepycat.bind.serial.TupleSerialBinding;
-import com.sleepycat.bind.tuple.TupleBinding;
-import com.sleepycat.bind.tuple.TupleInput;
-import com.sleepycat.bind.tuple.TupleOutput;
-import com.sleepycat.collections.StoredSortedMap;
-import com.sleepycat.collections.StoredSortedValueSet;
-
-/**
- * SampleViews defines the data bindings and collection views for the sample
- * database.
- *
- * @author Mark Hayes
- */
-public class SampleViews {
-
- private StoredSortedMap partMap;
- private StoredSortedMap supplierMap;
- private StoredSortedMap shipmentMap;
- private StoredSortedMap shipmentByPartMap;
- private StoredSortedMap shipmentBySupplierMap;
- private StoredSortedMap supplierByCityMap;
-
- /**
- * Create the data bindings and collection views.
- */
- public SampleViews(SampleDatabase db) {
-
- // Create the data bindings.
- // In this sample, EntityBinding classes are used to bind the stored
- // key/data entry pair to a combined data object. For keys, a
- // one-to-one binding is implemented with EntryBinding classes to bind
- // the stored tuple entry to a key Object.
- //
- ClassCatalog catalog = db.getClassCatalog();
- EntryBinding partKeyBinding =
- new PartKeyBinding();
- EntityBinding partDataBinding =
- new PartBinding(catalog, PartData.class);
- EntryBinding supplierKeyBinding =
- new SupplierKeyBinding();
- EntityBinding supplierDataBinding =
- new SupplierBinding(catalog, SupplierData.class);
- EntryBinding shipmentKeyBinding =
- new ShipmentKeyBinding();
- EntityBinding shipmentDataBinding =
- new ShipmentBinding(catalog, ShipmentData.class);
- EntryBinding cityKeyBinding =
- TupleBinding.getPrimitiveBinding(String.class);
-
- // Create map views for all stores and indices.
- // StoredSortedMap is used since the stores and indices are ordered
- // (they use the DB_BTREE access method).
- //
- partMap =
- new StoredSortedMap(db.getPartDatabase(),
- partKeyBinding, partDataBinding, true);
- supplierMap =
- new StoredSortedMap(db.getSupplierDatabase(),
- supplierKeyBinding, supplierDataBinding, true);
- shipmentMap =
- new StoredSortedMap(db.getShipmentDatabase(),
- shipmentKeyBinding, shipmentDataBinding, true);
- shipmentByPartMap =
- new StoredSortedMap(db.getShipmentByPartDatabase(),
- partKeyBinding, shipmentDataBinding, true);
- shipmentBySupplierMap =
- new StoredSortedMap(db.getShipmentBySupplierDatabase(),
- supplierKeyBinding, shipmentDataBinding, true);
- supplierByCityMap =
- new StoredSortedMap(db.getSupplierByCityDatabase(),
- cityKeyBinding, supplierDataBinding, true);
- }
-
- // The views returned below can be accessed using the java.util.Map or
- // java.util.Set interfaces, or using the StoredSortedMap and
- // StoredValueSet classes, which provide additional methods. The entity
- // sets could be obtained directly from the Map.values() method but
- // convenience methods are provided here to return them in order to avoid
- // down-casting elsewhere.
-
- /**
- * Return a map view of the part storage container.
- */
- public StoredSortedMap getPartMap() {
-
- return partMap;
- }
-
- /**
- * Return a map view of the supplier storage container.
- */
- public StoredSortedMap getSupplierMap() {
-
- return supplierMap;
- }
-
- /**
- * Return a map view of the shipment storage container.
- */
- public StoredSortedMap getShipmentMap() {
-
- return shipmentMap;
- }
-
- /**
- * Return an entity set view of the part storage container.
- */
- public StoredSortedValueSet getPartSet() {
-
- return (StoredSortedValueSet) partMap.values();
- }
-
- /**
- * Return an entity set view of the supplier storage container.
- */
- public StoredSortedValueSet getSupplierSet() {
-
- return (StoredSortedValueSet) supplierMap.values();
- }
-
- /**
- * Return an entity set view of the shipment storage container.
- */
- public StoredSortedValueSet getShipmentSet() {
-
- return (StoredSortedValueSet) shipmentMap.values();
- }
-
- /**
- * Return a map view of the shipment-by-part index.
- */
- public StoredSortedMap getShipmentByPartMap() {
-
- return shipmentByPartMap;
- }
-
- /**
- * Return a map view of the shipment-by-supplier index.
- */
- public StoredSortedMap getShipmentBySupplierMap() {
-
- return shipmentBySupplierMap;
- }
-
- /**
- * Return a map view of the supplier-by-city index.
- */
- public final StoredSortedMap getSupplierByCityMap() {
-
- return supplierByCityMap;
- }
-
- /**
- * PartKeyBinding is used to bind the stored key tuple entry for a part to
- * a key object representation.
- */
- private static class PartKeyBinding extends TupleBinding {
-
- /**
- * Construct the binding object.
- */
- private PartKeyBinding() {
- }
-
- /**
- * Create the key object from the stored key tuple entry.
- */
- public Object entryToObject(TupleInput input) {
-
- String number = input.readString();
- return new PartKey(number);
- }
-
- /**
- * Create the stored key tuple entry from the key object.
- */
- public void objectToEntry(Object object, TupleOutput output) {
-
- PartKey key = (PartKey) object;
- output.writeString(key.getNumber());
- }
- }
-
- /**
- * PartBinding is used to bind the stored key/data entry pair for a part
- * to a combined data object (entity).
- */
- private static class PartBinding extends TupleSerialBinding {
-
- /**
- * Construct the binding object.
- */
- private PartBinding(ClassCatalog classCatalog, Class dataClass) {
-
- super(classCatalog, dataClass);
- }
-
- /**
- * Create the entity by combining the stored key and data.
- */
- public Object entryToObject(TupleInput keyInput, Object dataInput) {
-
- String number = keyInput.readString();
- PartData data = (PartData) dataInput;
- return new Part(number, data.getName(), data.getColor(),
- data.getWeight(), data.getCity());
- }
-
- /**
- * Create the stored key from the entity.
- */
- public void objectToKey(Object object, TupleOutput output) {
-
- Part part = (Part) object;
- output.writeString(part.getNumber());
- }
-
- /**
- * Create the stored data from the entity.
- */
- public Object objectToData(Object object) {
-
- Part part = (Part) object;
- return new PartData(part.getName(), part.getColor(),
- part.getWeight(), part.getCity());
- }
- }
-
- /**
- * SupplierKeyBinding is used to bind the stored key tuple entry for a
- * supplier to a key object representation.
- */
- private static class SupplierKeyBinding extends TupleBinding {
-
- /**
- * Construct the binding object.
- */
- private SupplierKeyBinding() {
- }
-
- /**
- * Create the key object from the stored key tuple entry.
- */
- public Object entryToObject(TupleInput input) {
-
- String number = input.readString();
- return new SupplierKey(number);
- }
-
- /**
- * Create the stored key tuple entry from the key object.
- */
- public void objectToEntry(Object object, TupleOutput output) {
-
- SupplierKey key = (SupplierKey) object;
- output.writeString(key.getNumber());
- }
- }
-
- /**
- * SupplierBinding is used to bind the stored key/data entry pair for a
- * supplier to a combined data object (entity).
- */
- private static class SupplierBinding extends TupleSerialBinding {
-
- /**
- * Construct the binding object.
- */
- private SupplierBinding(ClassCatalog classCatalog, Class dataClass) {
-
- super(classCatalog, dataClass);
- }
-
- /**
- * Create the entity by combining the stored key and data.
- */
- public Object entryToObject(TupleInput keyInput, Object dataInput) {
-
- String number = keyInput.readString();
- SupplierData data = (SupplierData) dataInput;
- return new Supplier(number, data.getName(),
- data.getStatus(), data.getCity());
- }
-
- /**
- * Create the stored key from the entity.
- */
- public void objectToKey(Object object, TupleOutput output) {
-
- Supplier supplier = (Supplier) object;
- output.writeString(supplier.getNumber());
- }
-
- /**
- * Create the stored data from the entity.
- */
- public Object objectToData(Object object) {
-
- Supplier supplier = (Supplier) object;
- return new SupplierData(supplier.getName(), supplier.getStatus(),
- supplier.getCity());
- }
- }
-
- /**
- * ShipmentKeyBinding is used to bind the stored key tuple entry for a
- * shipment to a key object representation.
- */
- private static class ShipmentKeyBinding extends TupleBinding {
-
- /**
- * Construct the binding object.
- */
- private ShipmentKeyBinding() {
- }
-
- /**
- * Create the key object from the stored key tuple entry.
- */
- public Object entryToObject(TupleInput input) {
-
- String partNumber = input.readString();
- String supplierNumber = input.readString();
- return new ShipmentKey(partNumber, supplierNumber);
- }
-
- /**
- * Create the stored key tuple entry from the key object.
- */
- public void objectToEntry(Object object, TupleOutput output) {
-
- ShipmentKey key = (ShipmentKey) object;
- output.writeString(key.getPartNumber());
- output.writeString(key.getSupplierNumber());
- }
- }
-
- /**
- * ShipmentBinding is used to bind the stored key/data entry pair for a
- * shipment to a combined data object (entity).
- */
- private static class ShipmentBinding extends TupleSerialBinding {
-
- /**
- * Construct the binding object.
- */
- private ShipmentBinding(ClassCatalog classCatalog, Class dataClass) {
-
- super(classCatalog, dataClass);
- }
-
- /**
- * Create the entity by combining the stored key and data.
- */
- public Object entryToObject(TupleInput keyInput, Object dataInput) {
-
- String partNumber = keyInput.readString();
- String supplierNumber = keyInput.readString();
- ShipmentData data = (ShipmentData) dataInput;
- return new Shipment(partNumber, supplierNumber,
- data.getQuantity());
- }
-
- /**
- * Create the stored key from the entity.
- */
- public void objectToKey(Object object, TupleOutput output) {
-
- Shipment shipment = (Shipment) object;
- output.writeString(shipment.getPartNumber());
- output.writeString(shipment.getSupplierNumber());
- }
-
- /**
- * Create the stored data from the entity.
- */
- public Object objectToData(Object object) {
-
- Shipment shipment = (Shipment) object;
- return new ShipmentData(shipment.getQuantity());
- }
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/tuple/Shipment.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/tuple/Shipment.java
deleted file mode 100644
index 596de0f05..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/tuple/Shipment.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: Shipment.java,v 1.2 2004/09/22 16:17:13 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.tuple;
-
-/**
- * A Shipment represents the combined key/data pair for a shipment entity.
- *
- * <p> In this sample, Shipment is created from the stored key/data entry
- * using a SerialSerialBinding. See {@link SampleViews.ShipmentBinding} for
- * details. Since this class is not used directly for data storage, it does
- * not need to be Serializable. </p>
- *
- * @author Mark Hayes
- */
-public class Shipment {
-
- private String partNumber;
- private String supplierNumber;
- private int quantity;
-
- public Shipment(String partNumber, String supplierNumber, int quantity) {
-
- this.partNumber = partNumber;
- this.supplierNumber = supplierNumber;
- this.quantity = quantity;
- }
-
- public final String getPartNumber() {
-
- return partNumber;
- }
-
- public final String getSupplierNumber() {
-
- return supplierNumber;
- }
-
- public final int getQuantity() {
-
- return quantity;
- }
-
- public String toString() {
-
- return "[Shipment: part=" + partNumber +
- " supplier=" + supplierNumber +
- " quantity=" + quantity + ']';
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/tuple/ShipmentData.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/tuple/ShipmentData.java
deleted file mode 100644
index ba56a203e..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/tuple/ShipmentData.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: ShipmentData.java,v 1.2 2004/09/22 16:17:13 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.tuple;
-
-import java.io.Serializable;
-
-/**
- * A ShipmentData serves as the value in the key/value pair for a shipment
- * entity.
- *
- * <p> In this sample, ShipmentData is used only as the storage data for the
- * value, while the Shipment object is used as the value's object
- * representation. Because it is used directly as storage data using
- * serial format, it must be Serializable. </p>
- *
- * @author Mark Hayes
- */
-public class ShipmentData implements Serializable {
-
- private int quantity;
-
- public ShipmentData(int quantity) {
-
- this.quantity = quantity;
- }
-
- public final int getQuantity() {
-
- return quantity;
- }
-
- public String toString() {
-
- return "[ShipmentData: quantity=" + quantity + ']';
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/tuple/ShipmentKey.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/tuple/ShipmentKey.java
deleted file mode 100644
index 35ddf46d5..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/tuple/ShipmentKey.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: ShipmentKey.java,v 1.2 2004/09/22 16:17:13 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.tuple;
-
-/**
- * A ShipmentKey serves as the key in the key/data pair for a shipment entity.
- *
- * <p> In this sample, ShipmentKey is bound to the key's tuple storage entry
- * using a TupleBinding. Because it is not used directly as storage data, it
- * does not need to be Serializable. </p>
- *
- * @author Mark Hayes
- */
-public class ShipmentKey {
-
- private String partNumber;
- private String supplierNumber;
-
- public ShipmentKey(String partNumber, String supplierNumber) {
-
- this.partNumber = partNumber;
- this.supplierNumber = supplierNumber;
- }
-
- public final String getPartNumber() {
-
- return partNumber;
- }
-
- public final String getSupplierNumber() {
-
- return supplierNumber;
- }
-
- public String toString() {
-
- return "[ShipmentKey: supplier=" + supplierNumber +
- " part=" + partNumber + ']';
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/tuple/Supplier.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/tuple/Supplier.java
deleted file mode 100644
index d990f8526..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/tuple/Supplier.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: Supplier.java,v 1.2 2004/09/22 16:17:13 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.tuple;
-
-/**
- * A Supplier represents the combined key/data pair for a supplier entity.
- *
- * <p> In this sample, Supplier is created from the stored key/data entry
- * using a SerialSerialBinding. See {@link SampleViews.SupplierBinding} for
- * details. Since this class is not used directly for data storage, it does
- * not need to be Serializable. </p>
- *
- * @author Mark Hayes
- */
-public class Supplier {
-
- private String number;
- private String name;
- private int status;
- private String city;
-
- public Supplier(String number, String name, int status, String city) {
-
- this.number = number;
- this.name = name;
- this.status = status;
- this.city = city;
- }
-
- public final String getNumber() {
-
- return number;
- }
-
- public final String getName() {
-
- return name;
- }
-
- public final int getStatus() {
-
- return status;
- }
-
- public final String getCity() {
-
- return city;
- }
-
- public String toString() {
-
- return "[Supplier: number=" + number +
- " name=" + name +
- " status=" + status +
- " city=" + city + ']';
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/tuple/SupplierData.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/tuple/SupplierData.java
deleted file mode 100644
index 48e9064db..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/tuple/SupplierData.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: SupplierData.java,v 1.2 2004/09/22 16:17:13 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.tuple;
-
-import java.io.Serializable;
-
-/**
- * A SupplierData serves as the value in the key/value pair for a supplier
- * entity.
- *
- * <p> In this sample, SupplierData is used only as the storage data for the
- * value, while the Supplier object is used as the value's object
- * representation. Because it is used directly as storage data using
- * serial format, it must be Serializable. </p>
- *
- * @author Mark Hayes
- */
-public class SupplierData implements Serializable {
-
- private String name;
- private int status;
- private String city;
-
- public SupplierData(String name, int status, String city) {
-
- this.name = name;
- this.status = status;
- this.city = city;
- }
-
- public final String getName() {
-
- return name;
- }
-
- public final int getStatus() {
-
- return status;
- }
-
- public final String getCity() {
-
- return city;
- }
-
- public String toString() {
-
- return "[SupplierData: name=" + name +
- " status=" + status +
- " city=" + city + ']';
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/tuple/SupplierKey.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/tuple/SupplierKey.java
deleted file mode 100644
index 6975a0614..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/tuple/SupplierKey.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: SupplierKey.java,v 1.2 2004/09/22 16:17:13 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.tuple;
-
-/**
- * A SupplierKey serves as the key in the key/data pair for a supplier entity.
- *
- * <p> In this sample, SupplierKey is bound to the key's tuple storage entry
- * using a TupleBinding. Because it is not used directly as storage data, it
- * does not need to be Serializable. </p>
- *
- * @author Mark Hayes
- */
-public class SupplierKey {
-
- private String number;
-
- public SupplierKey(String number) {
-
- this.number = number;
- }
-
- public final String getNumber() {
-
- return number;
- }
-
- public String toString() {
-
- return "[SupplierKey: number=" + number + ']';
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/collections/ship/tuple/Weight.java b/db/examples_java/src/com/sleepycat/examples/collections/ship/tuple/Weight.java
deleted file mode 100644
index 7626dcecd..000000000
--- a/db/examples_java/src/com/sleepycat/examples/collections/ship/tuple/Weight.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: Weight.java,v 1.2 2004/09/22 16:17:13 mark Exp $
- */
-
-package com.sleepycat.examples.collections.ship.tuple;
-
-import java.io.Serializable;
-
-/**
- * Weight represents a weight amount and unit of measure.
- *
- * <p> In this sample, Weight is embedded in part data values which are stored
- * as Java serialized objects; therefore Weight must be Serializable. </p>
- *
- * @author Mark Hayes
- */
-public class Weight implements Serializable {
-
- public final static String GRAMS = "grams";
- public final static String OUNCES = "ounces";
-
- private double amount;
- private String units;
-
- public Weight(double amount, String units) {
-
- this.amount = amount;
- this.units = units;
- }
-
- public final double getAmount() {
-
- return amount;
- }
-
- public final String getUnits() {
-
- return units;
- }
-
- public String toString() {
-
- return "[" + amount + ' ' + units + ']';
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/db/AccessExample.java b/db/examples_java/src/com/sleepycat/examples/db/AccessExample.java
deleted file mode 100644
index 12d2adc3a..000000000
--- a/db/examples_java/src/com/sleepycat/examples/db/AccessExample.java
+++ /dev/null
@@ -1,183 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: AccessExample.java,v 11.19 2004/04/06 20:43:35 mjc Exp $
- */
-
-
-package com.sleepycat.examples.db;
-
-import com.sleepycat.db.*;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.InputStreamReader;
-import java.io.IOException;
-import java.io.PrintStream;
-
-class AccessExample {
- private static final int EXIT_SUCCESS = 0;
- private static final int EXIT_FAILURE = 1;
-
- public AccessExample() {
- }
-
- public static void usage() {
- System.out.println("usage: java " +
- "com.sleepycat.examples.db.AccessExample [-r] [database]\n");
- System.exit(EXIT_FAILURE);
- }
-
- public static void main(String[] argv) {
- boolean removeExistingDatabase = false;
- String databaseName = "access.db";
-
- for (int i = 0; i < argv.length; i++) {
- if (argv[i].equals("-r"))
- removeExistingDatabase = true;
- else if (argv[i].equals("-?"))
- usage();
- else if (argv[i].startsWith("-"))
- usage();
- else {
- if ((argv.length - i) != 1)
- usage();
- databaseName = argv[i];
- break;
- }
- }
-
- try {
- AccessExample app = new AccessExample();
- app.run(removeExistingDatabase, databaseName);
- } catch (DatabaseException dbe) {
- System.err.println("AccessExample: " + dbe.toString());
- System.exit(EXIT_FAILURE);
- } catch (FileNotFoundException fnfe) {
- System.err.println("AccessExample: " + fnfe.toString());
- System.exit(EXIT_FAILURE);
- }
- System.exit(EXIT_SUCCESS);
- }
-
- // Prompts for a line, and keeps prompting until a non blank
- // line is returned. Returns null on erroror.
- //
- public static String askForLine(InputStreamReader reader,
- PrintStream out, String prompt) {
- String result = "";
- while (result != null && result.length() == 0) {
- out.print(prompt);
- out.flush();
- result = getLine(reader);
- }
- return result;
- }
-
- // Not terroribly efficient, but does the job.
- // Works for reading a line from stdin or a file.
- // Returns null on EOF. If EOF appears in the middle
- // of a line, returns that line, then null on next call.
- //
- public static String getLine(InputStreamReader reader) {
- StringBuffer b = new StringBuffer();
- int c;
- try {
- while ((c = reader.read()) != -1 && c != '\n') {
- if (c != '\r')
- b.append((char)c);
- }
- } catch (IOException ioe) {
- c = -1;
- }
-
- if (c == -1 && b.length() == 0)
- return null;
- else
- return b.toString();
- }
-
- public void run(boolean removeExistingDatabase, String databaseName)
- throws DatabaseException, FileNotFoundException {
-
- // Remove the previous database.
- if (removeExistingDatabase)
- new File(databaseName).delete();
-
- // Create the database object.
- // There is no environment for this simple example.
- DatabaseConfig dbConfig = new DatabaseConfig();
- dbConfig.setErrorStream(System.err);
- dbConfig.setErrorPrefix("AccessExample");
- dbConfig.setType(DatabaseType.BTREE);
- dbConfig.setAllowCreate(true);
- Database table = new Database(databaseName, null, dbConfig);
-
- //
- // Insert records into the database, where the key is the user
- // input and the data is the user input in reverse order.
- //
- InputStreamReader reader = new InputStreamReader(System.in);
-
- for (;;) {
- String line = askForLine(reader, System.out, "input> ");
- if (line == null)
- break;
-
- String reversed = (new StringBuffer(line)).reverse().toString();
-
- // See definition of StringDbt below
- //
- StringEntry key = new StringEntry(line);
- StringEntry data = new StringEntry(reversed);
-
- try {
- if (table.putNoOverwrite(null, key, data) == OperationStatus.KEYEXIST)
- System.out.println("Key " + line + " already exists.");
- } catch (DatabaseException dbe) {
- System.out.println(dbe.toString());
- }
- }
-
- // Acquire an iterator for the table.
- Cursor cursor;
- cursor = table.openCursor(null, null);
-
- // Walk through the table, printing the key/data pairs.
- // See class StringDbt defined below.
- //
- StringEntry key = new StringEntry();
- StringEntry data = new StringEntry();
- while (cursor.getNext(key, data, null) == OperationStatus.SUCCESS)
- System.out.println(key.getString() + " : " + data.getString());
- cursor.close();
- table.close();
- }
-
- // Here's an example of how you can extend DatabaseEntry in a
- // straightforward way to allow easy storage/retrieval of strings,
- // or whatever kind of data you wish. We've declared it as a static
- // inner class, but it need not be.
- //
- static /*inner*/
- class StringEntry extends DatabaseEntry {
- StringEntry() {
- }
-
- StringEntry(String value) {
- setString(value);
- }
-
- void setString(String value) {
- byte[] data = value.getBytes();
- setData(data);
- setSize(data.length);
- }
-
- String getString() {
- return new String(getData(), getOffset(), getSize());
- }
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/db/BtRecExample.java b/db/examples_java/src/com/sleepycat/examples/db/BtRecExample.java
deleted file mode 100644
index 7baa9fdd4..000000000
--- a/db/examples_java/src/com/sleepycat/examples/db/BtRecExample.java
+++ /dev/null
@@ -1,289 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: BtRecExample.java,v 11.21 2004/08/20 16:33:58 mjc Exp $
- */
-
-
-package com.sleepycat.examples.db;
-
-import com.sleepycat.db.*;
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileReader;
-import java.io.InputStreamReader;
-import java.io.IOException;
-import java.io.PrintStream;
-
-public class BtRecExample {
- static final String progname = "BtRecExample"; // Program name.
- static final String database = "access.db";
- static final String wordlist = "../test/wordlist";
-
- BtRecExample(BufferedReader reader)
- throws DatabaseException, IOException, FileNotFoundException {
-
- OperationStatus status;
-
- // Remove the previous database.
- File f = new File(database);
- f.delete();
-
- DatabaseConfig config = new DatabaseConfig();
-
- config.setErrorStream(System.err);
- config.setErrorPrefix(progname);
- config.setPageSize(1024); // 1K page sizes.
-
- config.setBtreeRecordNumbers(true);
- config.setType(DatabaseType.BTREE);
- config.setAllowCreate(true);
- db = new Database(database, null, config);
-
- //
- // Insert records into the database, where the key is the word
- // preceded by its record number, and the data is the same, but
- // in reverse order.
- //
-
- for (int cnt = 1; cnt <= 1000; ++cnt) {
- String numstr = String.valueOf(cnt);
- while (numstr.length() < 4)
- numstr = "0" + numstr;
- String buf = numstr + '_' + reader.readLine();
- StringBuffer rbuf = new StringBuffer(buf).reverse();
-
- StringEntry key = new StringEntry(buf);
- StringEntry data = new StringEntry(rbuf.toString());
-
- status = db.putNoOverwrite(null, key, data);
- if (status != OperationStatus.SUCCESS &&
- status!= OperationStatus.KEYEXIST)
- throw new DatabaseException("Database.put failed " + status);
- }
- }
-
- void run() throws DatabaseException {
- int recno;
- OperationStatus status;
-
- // Acquire a cursor for the database.
- cursor = db.openCursor(null, null);
-
- //
- // Prompt the user for a record number, then retrieve and display
- // that record.
- //
- InputStreamReader reader = new InputStreamReader(System.in);
-
- for (;;) {
- // Get a record number.
- String line = askForLine(reader, System.out, "recno #> ");
- if (line == null)
- break;
-
- try {
- recno = Integer.parseInt(line);
- } catch (NumberFormatException nfe) {
- System.err.println("Bad record number: " + nfe);
- continue;
- }
-
- //
- // Start with a fresh key each time, the db.get() routine returns
- // the key and data pair, not just the key!
- //
- RecnoStringEntry key = new RecnoStringEntry(recno, 100);
- RecnoStringEntry data = new RecnoStringEntry(100);
-
- status = cursor.getSearchRecordNumber(key, data, null);
- if (status != OperationStatus.SUCCESS)
- throw new DatabaseException("Cursor.setRecno failed: " + status);
-
- // Display the key and data.
- show("k/d\t", key, data);
-
- // Move the cursor a record forward.
- status = cursor.getNext(key, data, null);
- if (status != OperationStatus.SUCCESS)
- throw new DatabaseException("Cursor.getNext failed: " + status);
-
- // Display the key and data.
- show("next\t", key, data);
-
- RecnoStringEntry datano = new RecnoStringEntry(100);
-
- //
- // Retrieve the record number for the following record into
- // local memory.
- //
- status = cursor.getRecordNumber(datano, null);
- if (status != OperationStatus.SUCCESS &&
- status != OperationStatus.NOTFOUND &&
- status != OperationStatus.KEYEMPTY)
- throw new DatabaseException("Cursor.get failed: " + status);
- else {
- recno = datano.getRecordNumber();
- System.out.println("retrieved recno: " + recno);
- }
- }
-
- cursor.close();
- cursor = null;
- }
-
- //
- // Print out the number of records in the database.
- //
- void stats() throws DatabaseException {
- BtreeStats stats;
-
- stats = (BtreeStats)db.getStats(null, null);
- System.out.println(progname + ": database contains " +
- stats.getNumData() + " records");
- }
-
- void show(String msg, RecnoStringEntry key, RecnoStringEntry data)
- throws DatabaseException {
-
- System.out.println(msg + key.getString() + ": " + data.getString());
- }
-
- public void shutdown() throws DatabaseException {
- if (cursor != null) {
- cursor.close();
- cursor = null;
- }
- if (db != null) {
- db.close();
- db = null;
- }
- }
-
- public static void main(String[] argv) {
- try {
- // Open the word database.
- FileReader freader = new FileReader(wordlist);
-
- BtRecExample app = new BtRecExample(new BufferedReader(freader));
-
- // Close the word database.
- freader.close();
- freader = null;
-
- app.stats();
- app.run();
- } catch (FileNotFoundException fnfe) {
- System.err.println(progname + ": unexpected open error " + fnfe);
- System.exit (1);
- } catch (IOException ioe) {
- System.err.println(progname + ": open " + wordlist + ": " + ioe);
- System.exit (1);
- } catch (DatabaseException dbe) {
- System.err.println("Exception: " + dbe);
- System.exit(dbe.getErrno());
- }
-
- System.exit(0);
- }
-
- // Prompts for a line, and keeps prompting until a non blank
- // line is returned. Returns null on erroror.
- //
- public static String askForLine(InputStreamReader reader,
- PrintStream out, String prompt) {
- String result = "";
- while (result != null && result.length() == 0) {
- out.print(prompt);
- out.flush();
- result = getLine(reader);
- }
- return result;
- }
-
- // Not terroribly efficient, but does the job.
- // Works for reading a line from stdin or a file.
- // Returns null on EOF. If EOF appears in the middle
- // of a line, returns that line, then null on next call.
- //
- public static String getLine(InputStreamReader reader) {
- StringBuffer b = new StringBuffer();
- int c;
- try {
- while ((c = reader.read()) != -1 && c != '\n') {
- if (c != '\r')
- b.append((char)c);
- }
- } catch (IOException ioe) {
- c = -1;
- }
-
- if (c == -1 && b.length() == 0)
- return null;
- else
- return b.toString();
- }
-
- private Cursor cursor;
- private Database db;
-
- // Here's an example of how you can extend DatabaseEntry in a
- // straightforward way to allow easy storage/retrieval of strings.
- // We've declared it as a static inner class, but it need not be.
- //
- static class StringEntry extends DatabaseEntry {
- StringEntry() {}
-
- StringEntry(String value) {
- setString(value);
- }
-
- void setString(String value) {
- byte[] data = value.getBytes();
- setData(data);
- setSize(data.length);
- }
-
- String getString() {
- return new String(getData(), 0, getSize());
- }
- }
-
- // Here's an example of how you can extend DatabaseEntry to store
- // (potentially) both recno's and strings in the same structure.
- //
- static class RecnoStringEntry extends DatabaseEntry {
- RecnoStringEntry(int maxsize) {
- this(0, maxsize); // let other constructor do most of the work
- }
-
- RecnoStringEntry(int value, int maxsize) {
- arr = new byte[maxsize];
- setData(arr); // use our local array for data
- setUserBuffer(maxsize, true);
- setRecordNumber(value);
- }
-
- RecnoStringEntry(String value) {
- byte[] data = value.getBytes();
- setData(data); // use our local array for data
- setUserBuffer(data.length, true);
- }
-
- void setString(String value) {
- byte[] data = value.getBytes();
- setData(data);
- setSize(data.length);
- }
-
- String getString() {
- return new String(getData(), getOffset(), getSize());
- }
-
- byte[] arr;
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/db/BulkAccessExample.java b/db/examples_java/src/com/sleepycat/examples/db/BulkAccessExample.java
deleted file mode 100644
index bfecc69f4..000000000
--- a/db/examples_java/src/com/sleepycat/examples/db/BulkAccessExample.java
+++ /dev/null
@@ -1,162 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: BulkAccessExample.java,v 1.13 2004/09/22 18:00:59 bostic Exp $
- */
-
-package com.sleepycat.examples.db;
-
-import com.sleepycat.db.*;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.InputStreamReader;
-import java.io.IOException;
-import java.io.PrintStream;
-
-class BulkAccessExample {
- private static final String FileName = "access.db";
-
- public BulkAccessExample() {
- }
-
- public static void main(String[] argv) {
- try {
- BulkAccessExample app = new BulkAccessExample();
- app.run();
- } catch (DatabaseException dbe) {
- System.err.println("BulkAccessExample: " + dbe.toString());
- System.exit(1);
- } catch (FileNotFoundException fnfe) {
- System.err.println("BulkAccessExample: " + fnfe.toString());
- System.exit(1);
- }
- System.exit(0);
- }
-
- // Prompts for a line, and keeps prompting until a non blank
- // line is returned. Returns null on erroror.
- //
- public static String askForLine(InputStreamReader reader,
- PrintStream out, String prompt) {
- String result = "";
- while (result != null && result.length() == 0) {
- out.print(prompt);
- out.flush();
- result = getLine(reader);
- }
- return result;
- }
-
- // Not terroribly efficient, but does the job.
- // Works for reading a line from stdin or a file.
- // Returns null on EOF. If EOF appears in the middle
- // of a line, returns that line, then null on next call.
- //
- public static String getLine(InputStreamReader reader) {
- StringBuffer b = new StringBuffer();
- int c;
- try {
- while ((c = reader.read()) != -1 && c != '\n') {
- if (c != '\r')
- b.append((char)c);
- }
- } catch (IOException ioe) {
- c = -1;
- }
-
- if (c == -1 && b.length() == 0)
- return null;
- else
- return b.toString();
- }
-
- public void run() throws DatabaseException, FileNotFoundException {
- // Remove the previous database.
- new File(FileName).delete();
-
- // Create the database object.
- // There is no environment for this simple example.
- DatabaseConfig config = new DatabaseConfig();
- config.setErrorStream(System.err);
- config.setErrorPrefix("BulkAccessExample");
- config.setType(DatabaseType.BTREE);
- config.setAllowCreate(true);
- config.setMode(0644);
- Database table = new Database(FileName, null, config);
-
- //
- // Insert records into the database, where the key is the user
- // input and the data is the user input in reverse order.
- //
- InputStreamReader reader = new InputStreamReader(System.in);
-
- for (;;) {
- String line = askForLine(reader, System.out, "input> ");
- if (line == null)
- break;
-
- String reversed = (new StringBuffer(line)).reverse().toString();
-
- // See definition of StringEntry below
- //
- StringEntry key = new StringEntry(line);
- StringEntry data = new StringEntry(reversed);
-
- try {
- if (table.putNoOverwrite(null, key, data) == OperationStatus.KEYEXIST)
- System.out.println("Key " + line + " already exists.");
- } catch (DatabaseException dbe) {
- System.out.println(dbe.toString());
- }
- System.out.println("");
- }
-
- // Acquire a cursor for the table.
- Cursor cursor = table.openCursor(null, null);
- DatabaseEntry foo = new DatabaseEntry();
-
- MultipleKeyDataEntry bulk_data = new MultipleKeyDataEntry();
- bulk_data.setData(new byte[1024 * 1024]);
- bulk_data.setUserBuffer(1024 * 1024, true);
-
- // Walk through the table, printing the key/data pairs.
- //
- while (cursor.getNext(foo, bulk_data, null) == OperationStatus.SUCCESS) {
- StringEntry key, data;
- key = new StringEntry();
- data = new StringEntry();
-
- while (bulk_data.next(key, data))
- System.out.println(key.getString() + " : " + data.getString());
- }
- cursor.close();
- table.close();
- }
-
- // Here's an example of how you can extend DatabaseEntry in a
- // straightforward way to allow easy storage/retrieval of strings, or
- // whatever kind of data you wish. We've declared it as a static inner
- // class, but it need not be.
- //
- static class StringEntry extends DatabaseEntry {
- StringEntry() {
- }
-
- StringEntry(String value) {
- setString(value);
- }
-
- void setString(String value) {
- byte[] data = value.getBytes();
- setData(data);
- setSize(data.length);
- }
-
- String getString() {
- return new String(getData(), getOffset(), getSize());
- }
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/db/EnvExample.java b/db/examples_java/src/com/sleepycat/examples/db/EnvExample.java
deleted file mode 100644
index 9b407ea8d..000000000
--- a/db/examples_java/src/com/sleepycat/examples/db/EnvExample.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: EnvExample.java,v 11.15 2004/04/06 20:43:35 mjc Exp $
- */
-
-package com.sleepycat.examples.db;
-
-import com.sleepycat.db.*;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.OutputStream;
-
-/*
- * An example of a program configuring a database environment.
- *
- * For comparison purposes, this example uses a similar structure
- * as examples/ex_env.c and examples_cxx/EnvExample.cpp.
- */
-public class EnvExample {
- private static final String progname = "EnvExample";
- private static final File DATABASE_HOME = new File("/tmp/database");
-
- private static void runApplication(Environment dbenv)
- throws DatabaseException {
-
- // Do something interesting...
- // Your application goes here.
- }
-
- private static void setupEnvironment(File home,
- String dataDir,
- OutputStream errs)
- throws DatabaseException, FileNotFoundException {
-
- // Create an environment object and initialize it for error reporting.
- EnvironmentConfig config = new EnvironmentConfig();
- config.setErrorStream(errs);
- config.setErrorPrefix(progname);
-
- //
- // We want to specify the shared memory buffer pool cachesize,
- // but everything else is the default.
- //
- config.setCacheSize(64 * 1024);
-
- // Databases are in a separate directory.
- config.addDataDir(dataDir);
-
- // Open the environment with full transactional support.
- config.setAllowCreate(true);
- config.setInitializeCache(true);
- config.setTransactional(true);
- config.setInitializeLocking(true);
-
- //
- // open is declared to throw a FileNotFoundException, which normally
- // shouldn't occur when allowCreate is set.
- //
- Environment dbenv = new Environment(home, config);
-
- try {
- // Start your application.
- runApplication(dbenv);
- } finally {
- // Close the environment. Doing this in the finally block ensures
- // it is done, even if an error is thrown.
- dbenv.close();
- }
- }
-
- private static void teardownEnvironment(File home,
- String dataDir,
- OutputStream errs)
- throws DatabaseException, FileNotFoundException {
-
- // Remove the shared database regions.
- EnvironmentConfig config = new EnvironmentConfig();
-
- config.setErrorStream(errs);
- config.setErrorPrefix(progname);
- config.addDataDir(dataDir);
- Environment.remove(home, true, config);
- }
-
- public static void main(String[] args) {
- //
- // All of the shared database files live in /tmp/database,
- // but data files live in /database/files.
- //
- // Using Berkeley DB in C/C++, we need to allocate two elements
- // in the array and set config[1] to NULL. This is not
- // necessary in Java.
- //
- File home = DATABASE_HOME;
- String dataDir = "/database/files";
-
- try {
- System.out.println("Setup env");
- setupEnvironment(home, dataDir, System.err);
-
- System.out.println("Teardown env");
- teardownEnvironment(home, dataDir, System.err);
- } catch (DatabaseException dbe) {
- System.err.println(progname + ": environment open: " + dbe.toString());
- System.exit (1);
- } catch (FileNotFoundException fnfe) {
- System.err.println(progname + ": unexpected open environment error " + fnfe);
- System.exit (1);
- }
- }
-
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/db/GettingStarted/ExampleDatabaseLoad.java b/db/examples_java/src/com/sleepycat/examples/db/GettingStarted/ExampleDatabaseLoad.java
deleted file mode 100644
index d147be718..000000000
--- a/db/examples_java/src/com/sleepycat/examples/db/GettingStarted/ExampleDatabaseLoad.java
+++ /dev/null
@@ -1,228 +0,0 @@
-// File: ExampleDatabaseLoad.java
-
-package com.sleepycat.examples.db.GettingStarted;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.util.ArrayList;
-import java.util.StringTokenizer;
-import java.util.Vector;
-
-import com.sleepycat.bind.EntryBinding;
-import com.sleepycat.bind.serial.SerialBinding;
-import com.sleepycat.bind.tuple.TupleBinding;
-import com.sleepycat.db.DatabaseEntry;
-import com.sleepycat.db.DatabaseException;
-
-public class ExampleDatabaseLoad {
-
- private static String myDbsPath = "./";
- private static File inventoryFile = new File("./inventory.txt");
- private static File vendorsFile = new File("./vendors.txt");
-
- // DatabaseEntries used for loading records
- private static DatabaseEntry theKey = new DatabaseEntry();
- private static DatabaseEntry theData = new DatabaseEntry();
-
- // Encapsulates the databases.
- private static MyDbs myDbs = new MyDbs();
-
- private static void usage() {
- System.out.println("ExampleDatabaseLoad [-h <database home>]");
- System.out.println(" [-s <selections file>] [-v <vendors file>]");
- System.exit(-1);
- }
-
-
- public static void main(String args[]) {
- ExampleDatabaseLoad edl = new ExampleDatabaseLoad();
- try {
- edl.run(args);
- } catch (DatabaseException dbe) {
- System.err.println("ExampleDatabaseLoad: " + dbe.toString());
- dbe.printStackTrace();
- } catch (Exception e) {
- System.out.println("Exception: " + e.toString());
- e.printStackTrace();
- } finally {
- myDbs.close();
- }
- System.out.println("All done.");
- }
-
-
- private void run(String args[])
- throws DatabaseException {
- // Parse the arguments list
- parseArgs(args);
-
- myDbs.setup(myDbsPath);
-
- System.out.println("loading vendors db....");
- loadVendorsDb();
-
- System.out.println("loading inventory db....");
- loadInventoryDb();
- }
-
-
- private void loadVendorsDb()
- throws DatabaseException {
-
- // loadFile opens a flat-text file that contains our data
- // and loads it into a list for us to work with. The integer
- // parameter represents the number of fields expected in the
- // file.
- ArrayList vendors = loadFile(vendorsFile, 8);
-
- // Now load the data into the database. The vendor's name is the
- // key, and the data is a Vendor class object.
-
- // Need a serial binding for the data
- EntryBinding dataBinding =
- new SerialBinding(myDbs.getClassCatalog(), Vendor.class);
-
- for (int i = 0; i < vendors.size(); i++) {
- String[] sArray = (String[])vendors.get(i);
- Vendor theVendor = new Vendor();
- theVendor.setVendorName(sArray[0]);
- theVendor.setAddress(sArray[1]);
- theVendor.setCity(sArray[2]);
- theVendor.setState(sArray[3]);
- theVendor.setZipcode(sArray[4]);
- theVendor.setBusinessPhoneNumber(sArray[5]);
- theVendor.setRepName(sArray[6]);
- theVendor.setRepPhoneNumber(sArray[7]);
-
- // The key is the vendor's name.
- // ASSUMES THE VENDOR'S NAME IS UNIQUE!
- String vendorName = theVendor.getVendorName();
- try {
- theKey = new DatabaseEntry(vendorName.getBytes("UTF-8"));
- } catch (IOException willNeverOccur) {}
-
- // Convert the Vendor object to a DatabaseEntry object
- // using our SerialBinding
- dataBinding.objectToEntry(theVendor, theData);
-
- // Put it in the database.
- myDbs.getVendorDB().put(null, theKey, theData);
- }
- }
-
-
- private void loadInventoryDb()
- throws DatabaseException {
-
- // loadFile opens a flat-text file that contains our data
- // and loads it into a list for us to work with. The integer
- // parameter represents the number of fields expected in the
- // file.
- ArrayList inventoryArray = loadFile(inventoryFile, 6);
-
- // Now load the data into the database. The item's sku is the
- // key, and the data is an Inventory class object.
-
- // Need a tuple binding for the Inventory class.
- TupleBinding inventoryBinding = new InventoryBinding();
-
- for (int i = 0; i < inventoryArray.size(); i++) {
- String[] sArray = (String[])inventoryArray.get(i);
- String sku = sArray[1];
- try {
- theKey = new DatabaseEntry(sku.getBytes("UTF-8"));
- } catch (IOException willNeverOccur) {}
-
- Inventory theInventory = new Inventory();
- theInventory.setItemName(sArray[0]);
- theInventory.setSku(sArray[1]);
- theInventory.setVendorPrice((new Float(sArray[2])).floatValue());
- theInventory.setVendorInventory((new Integer(sArray[3])).intValue());
- theInventory.setCategory(sArray[4]);
- theInventory.setVendor(sArray[5]);
-
- // Place the Vendor object on the DatabaseEntry object using our
- // the tuple binding we implemented in InventoryBinding.java
- inventoryBinding.objectToEntry(theInventory, theData);
-
- // Put it in the database. Note that this causes our secondary database
- // to be automatically updated for us.
- myDbs.getInventoryDB().put(null, theKey, theData);
- }
- }
-
-
- private static void parseArgs(String args[]) {
- int nArgs = args.length;
- for(int i = 0; i < args.length; ++i) {
- if (args[i].startsWith("-")) {
- switch(args[i].charAt(1)) {
- case 'h':
- if (i < nArgs) {
- myDbsPath = new String(args[++i]);
- }
- break;
- case 'i':
- if (i < nArgs) {
- inventoryFile = new File(args[++i]);
- }
- break;
- case 'v':
- if (i < nArgs) {
- vendorsFile = new File(args[++i]);
- }
- break;
- default:
- usage();
- }
- }
- }
- }
-
-
- private ArrayList loadFile(File theFile, int numFields) {
- ArrayList records = new ArrayList();
- try {
- String theLine = null;
- FileInputStream fis = new FileInputStream(theFile);
- BufferedReader br = new BufferedReader(new InputStreamReader(fis));
- while((theLine=br.readLine()) != null) {
- String[] theLineArray = splitString(theLine, "#");
- if (theLineArray.length != numFields) {
- System.out.println("Malformed line found in " + theFile.getPath());
- System.out.println("Line was: '" + theLine);
- System.out.println("length found was: " + theLineArray.length);
- System.exit(-1);
- }
- records.add(theLineArray);
- }
- } catch (FileNotFoundException e) {
- System.err.println(theFile.getPath() + " does not exist.");
- e.printStackTrace();
- usage();
- } catch (IOException e) {
- System.err.println("IO Exception: " + e.toString());
- e.printStackTrace();
- System.exit(-1);
- }
- return records;
- }
-
-
- private static String[] splitString(String s, String delimiter) {
- Vector resultVector = new Vector();
- StringTokenizer tokenizer = new StringTokenizer(s, delimiter);
- while (tokenizer.hasMoreTokens())
- resultVector.add(tokenizer.nextToken());
- String[] resultArray = new String[resultVector.size()];
- resultVector.copyInto(resultArray);
- return resultArray;
- }
-
-
- protected ExampleDatabaseLoad() {}
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/db/GettingStarted/ExampleDatabaseRead.java b/db/examples_java/src/com/sleepycat/examples/db/GettingStarted/ExampleDatabaseRead.java
deleted file mode 100644
index 140f58e43..000000000
--- a/db/examples_java/src/com/sleepycat/examples/db/GettingStarted/ExampleDatabaseRead.java
+++ /dev/null
@@ -1,202 +0,0 @@
-// File: ExampleDatabaseRead
-
-package com.sleepycat.examples.db.GettingStarted;
-
-import com.sleepycat.bind.EntryBinding;
-import com.sleepycat.bind.serial.SerialBinding;
-import com.sleepycat.bind.tuple.TupleBinding;
-import com.sleepycat.db.Cursor;
-import com.sleepycat.db.DatabaseEntry;
-import com.sleepycat.db.DatabaseException;
-import com.sleepycat.db.LockMode;
-import com.sleepycat.db.OperationStatus;
-import com.sleepycat.db.SecondaryCursor;
-
-import java.io.IOException;
-
-public class ExampleDatabaseRead {
-
- private static String myDbsPath = "./";
-
- // Encapsulates the database environment and databases.
- private static MyDbs myDbs = new MyDbs();
-
- private static TupleBinding inventoryBinding;
- private static EntryBinding vendorBinding;
-
- // The item to locate if the -s switch is used
- private static String locateItem;
-
- private static void usage() {
- System.out.println("ExampleDatabaseRead [-h <env directory>]" +
- "[-s <item to locate>]");
- System.exit(-1);
- }
-
- public static void main(String args[]) {
- ExampleDatabaseRead edr = new ExampleDatabaseRead();
- try {
- edr.run(args);
- } catch (DatabaseException dbe) {
- System.err.println("ExampleDatabaseRead: " + dbe.toString());
- dbe.printStackTrace();
- } finally {
- myDbs.close();
- }
- System.out.println("All done.");
- }
-
- private void run(String args[])
- throws DatabaseException {
- // Parse the arguments list
- parseArgs(args);
-
- myDbs.setup(myDbsPath);
-
- // Setup our bindings.
- inventoryBinding = new InventoryBinding();
- vendorBinding =
- new SerialBinding(myDbs.getClassCatalog(),
- Vendor.class);
-
- if (locateItem != null) {
- showItem();
- } else {
- showAllInventory();
- }
- }
-
- private void showItem() throws DatabaseException {
-
- SecondaryCursor secCursor = null;
- try {
- // searchKey is the key that we want to find in the
- // secondary db.
- DatabaseEntry searchKey =
- new DatabaseEntry(locateItem.getBytes("UTF-8"));
-
- // foundKey and foundData are populated from the primary
- // entry that is associated with the secondary db key.
- DatabaseEntry foundKey = new DatabaseEntry();
- DatabaseEntry foundData = new DatabaseEntry();
-
- // open a secondary cursor
- secCursor =
- myDbs.getNameIndexDB().openSecondaryCursor(null, null);
-
- // Search for the secondary database entry.
- OperationStatus retVal =
- secCursor.getSearchKey(searchKey, foundKey,
- foundData, LockMode.DEFAULT);
-
- // Display the entry, if one is found. Repeat until no more
- // secondary duplicate entries are found
- while(retVal == OperationStatus.SUCCESS) {
- Inventory theInventory =
- (Inventory)inventoryBinding.entryToObject(foundData);
- displayInventoryRecord(foundKey, theInventory);
- retVal = secCursor.getNextDup(searchKey, foundKey,
- foundData, LockMode.DEFAULT);
- }
- } catch (Exception e) {
- System.err.println("Error on inventory secondary cursor:");
- System.err.println(e.toString());
- e.printStackTrace();
- } finally {
- if (secCursor != null) {
- secCursor.close();
- }
- }
- }
-
- private void showAllInventory()
- throws DatabaseException {
- // Get a cursor
- Cursor cursor = myDbs.getInventoryDB().openCursor(null, null);
-
- // DatabaseEntry objects used for reading records
- DatabaseEntry foundKey = new DatabaseEntry();
- DatabaseEntry foundData = new DatabaseEntry();
-
- try { // always want to make sure the cursor gets closed
- while (cursor.getNext(foundKey, foundData,
- LockMode.DEFAULT) == OperationStatus.SUCCESS) {
- Inventory theInventory =
- (Inventory)inventoryBinding.entryToObject(foundData);
- displayInventoryRecord(foundKey, theInventory);
- }
- } catch (Exception e) {
- System.err.println("Error on inventory cursor:");
- System.err.println(e.toString());
- e.printStackTrace();
- } finally {
- cursor.close();
- }
- }
-
- private void displayInventoryRecord(DatabaseEntry theKey,
- Inventory theInventory)
- throws DatabaseException {
-
- String theSKU = new String(theKey.getData());
- System.out.println(theSKU + ":");
- System.out.println("\t " + theInventory.getItemName());
- System.out.println("\t " + theInventory.getCategory());
- System.out.println("\t " + theInventory.getVendor());
- System.out.println("\t\tNumber in stock: " +
- theInventory.getVendorInventory());
- System.out.println("\t\tPrice per unit: " +
- theInventory.getVendorPrice());
- System.out.println("\t\tContact: ");
-
- DatabaseEntry searchKey = null;
- try {
- searchKey =
- new DatabaseEntry(theInventory.getVendor().getBytes("UTF-8"));
- } catch (IOException willNeverOccur) {}
- DatabaseEntry foundVendor = new DatabaseEntry();
-
- if (myDbs.getVendorDB().get(null, searchKey, foundVendor,
- LockMode.DEFAULT) != OperationStatus.SUCCESS) {
- System.out.println("Could not find vendor: " +
- theInventory.getVendor() + ".");
- System.exit(-1);
- } else {
- Vendor theVendor =
- (Vendor)vendorBinding.entryToObject(foundVendor);
- System.out.println("\t\t " + theVendor.getAddress());
- System.out.println("\t\t " + theVendor.getCity() + ", " +
- theVendor.getState() + " " + theVendor.getZipcode());
- System.out.println("\t\t Business Phone: " +
- theVendor.getBusinessPhoneNumber());
- System.out.println("\t\t Sales Rep: " +
- theVendor.getRepName());
- System.out.println("\t\t " +
- theVendor.getRepPhoneNumber());
- }
- }
-
- protected ExampleDatabaseRead() {}
-
- private static void parseArgs(String args[]) {
- int nArgs = args.length;
- for(int i = 0; i < args.length; ++i) {
- if (args[i].startsWith("-")) {
- switch(args[i].charAt(1)) {
- case 'h':
- if (i < nArgs) {
- myDbsPath = new String(args[++i]);
- }
- break;
- case 's':
- if (i < nArgs) {
- locateItem = new String(args[++i]);
- }
- break;
- default:
- usage();
- }
- }
- }
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/db/GettingStarted/Inventory.java b/db/examples_java/src/com/sleepycat/examples/db/GettingStarted/Inventory.java
deleted file mode 100644
index 77e061935..000000000
--- a/db/examples_java/src/com/sleepycat/examples/db/GettingStarted/Inventory.java
+++ /dev/null
@@ -1,62 +0,0 @@
-// File: Inventory.java
-
-package com.sleepycat.examples.db.GettingStarted;
-
-public class Inventory {
-
- private String sku;
- private String itemName;
- private String category;
- private String vendor;
- private int vendorInventory;
- private float vendorPrice;
-
- public void setSku(String data) {
- sku = data;
- }
-
- public void setItemName(String data) {
- itemName = data;
- }
-
- public void setCategory(String data) {
- category = data;
- }
-
- public void setVendorInventory(int data) {
- vendorInventory = data;
- }
-
- public void setVendor(String data) {
- vendor = data;
- }
-
- public void setVendorPrice(float data) {
- vendorPrice = data;
- }
-
- public String getSku() {
- return sku;
- }
-
- public String getItemName() {
- return itemName;
- }
-
- public String getCategory() {
- return category;
- }
-
- public int getVendorInventory() {
- return vendorInventory;
- }
-
- public String getVendor() {
- return vendor;
- }
-
- public float getVendorPrice() {
- return vendorPrice;
- }
-}
-
diff --git a/db/examples_java/src/com/sleepycat/examples/db/GettingStarted/InventoryBinding.java b/db/examples_java/src/com/sleepycat/examples/db/GettingStarted/InventoryBinding.java
deleted file mode 100644
index 81e96d23e..000000000
--- a/db/examples_java/src/com/sleepycat/examples/db/GettingStarted/InventoryBinding.java
+++ /dev/null
@@ -1,46 +0,0 @@
-// File: InventoryBinding.java
-
-package com.sleepycat.examples.db.GettingStarted;
-
-import com.sleepycat.bind.tuple.TupleBinding;
-import com.sleepycat.bind.tuple.TupleInput;
-import com.sleepycat.bind.tuple.TupleOutput;
-
-public class InventoryBinding extends TupleBinding {
-
- // Implement this abstract method. Used to convert
- // a DatabaseEntry to an Inventory object.
- public Object entryToObject(TupleInput ti) {
-
- String sku = ti.readString();
- String itemName = ti.readString();
- String category = ti.readString();
- String vendor = ti.readString();
- int vendorInventory = ti.readInt();
- float vendorPrice = ti.readFloat();
-
- Inventory inventory = new Inventory();
- inventory.setSku(sku);
- inventory.setItemName(itemName);
- inventory.setCategory(category);
- inventory.setVendor(vendor);
- inventory.setVendorInventory(vendorInventory);
- inventory.setVendorPrice(vendorPrice);
-
- return inventory;
- }
-
- // Implement this abstract method. Used to convert a
- // Inventory object to a DatabaseEntry object.
- public void objectToEntry(Object object, TupleOutput to) {
-
- Inventory inventory = (Inventory)object;
-
- to.writeString(inventory.getSku());
- to.writeString(inventory.getItemName());
- to.writeString(inventory.getCategory());
- to.writeString(inventory.getVendor());
- to.writeInt(inventory.getVendorInventory());
- to.writeFloat(inventory.getVendorPrice());
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/db/GettingStarted/ItemNameKeyCreator.java b/db/examples_java/src/com/sleepycat/examples/db/GettingStarted/ItemNameKeyCreator.java
deleted file mode 100644
index 4a966ae23..000000000
--- a/db/examples_java/src/com/sleepycat/examples/db/GettingStarted/ItemNameKeyCreator.java
+++ /dev/null
@@ -1,37 +0,0 @@
-// File: ItemNameKeyCreator.java
-
-package com.sleepycat.examples.db.GettingStarted;
-
-import com.sleepycat.bind.tuple.TupleBinding;
-import com.sleepycat.db.SecondaryKeyCreator;
-import com.sleepycat.db.DatabaseEntry;
-import com.sleepycat.db.DatabaseException;
-import com.sleepycat.db.SecondaryDatabase;
-
-public class ItemNameKeyCreator implements SecondaryKeyCreator {
-
- private TupleBinding theBinding;
-
- // Use the constructor to set the tuple binding
- ItemNameKeyCreator(TupleBinding binding) {
- theBinding = binding;
- }
-
- // Abstract method that we must implement
- public boolean createSecondaryKey(SecondaryDatabase secDb,
- DatabaseEntry keyEntry, // From the primary
- DatabaseEntry dataEntry, // From the primary
- DatabaseEntry resultEntry) // set the key data on this.
- throws DatabaseException {
-
- if (dataEntry != null) {
- // Convert dataEntry to an Inventory object
- Inventory inventoryItem =
- (Inventory)theBinding.entryToObject(dataEntry);
- // Get the item name and use that as the key
- String theItem = inventoryItem.getItemName();
- resultEntry.setData(theItem.getBytes());
- }
- return true;
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/db/GettingStarted/MyDbs.java b/db/examples_java/src/com/sleepycat/examples/db/GettingStarted/MyDbs.java
deleted file mode 100644
index 9f4f254fb..000000000
--- a/db/examples_java/src/com/sleepycat/examples/db/GettingStarted/MyDbs.java
+++ /dev/null
@@ -1,157 +0,0 @@
-// File: MyDbs.java
-
-package com.sleepycat.examples.db.GettingStarted;
-
-import java.io.FileNotFoundException;
-
-import com.sleepycat.bind.serial.StoredClassCatalog;
-import com.sleepycat.bind.tuple.TupleBinding;
-import com.sleepycat.db.Database;
-import com.sleepycat.db.DatabaseConfig;
-import com.sleepycat.db.DatabaseException;
-import com.sleepycat.db.DatabaseType;
-import com.sleepycat.db.SecondaryConfig;
-import com.sleepycat.db.SecondaryDatabase;
-
-
-public class MyDbs {
-
- // The databases that our application uses
- private Database vendorDb = null;
- private Database inventoryDb = null;
- private Database classCatalogDb = null;
- private SecondaryDatabase itemNameIndexDb = null;
-
- private String vendordb = "VendorDB.db";
- private String inventorydb = "InventoryDB.db";
- private String classcatalogdb = "ClassCatalogDB.db";
- private String itemnameindexdb = "ItemNameIndexDB.db";
-
- // Needed for object serialization
- private StoredClassCatalog classCatalog;
-
- // Our constructor does nothing
- public MyDbs() {}
-
- // The setup() method opens all our databases
- // for us.
- public void setup(String databasesHome)
- throws DatabaseException {
-
- DatabaseConfig myDbConfig = new DatabaseConfig();
- SecondaryConfig mySecConfig = new SecondaryConfig();
-
- myDbConfig.setErrorStream(System.err);
- mySecConfig.setErrorStream(System.err);
- myDbConfig.setErrorPrefix("MyDbs");
- mySecConfig.setErrorPrefix("MyDbs");
- myDbConfig.setType(DatabaseType.BTREE);
- mySecConfig.setType(DatabaseType.BTREE);
- myDbConfig.setAllowCreate(true);
- mySecConfig.setAllowCreate(true);
-
- // Now open, or create and open, our databases
- // Open the vendors and inventory databases
- try {
- vendordb = databasesHome + "/" + vendordb;
- vendorDb = new Database(vendordb,
- null,
- myDbConfig);
-
- inventorydb = databasesHome + "/" + inventorydb;
- inventoryDb = new Database(inventorydb,
- null,
- myDbConfig);
-
- // Open the class catalog db. This is used to
- // optimize class serialization.
- classcatalogdb = databasesHome + "/" + classcatalogdb;
- classCatalogDb = new Database(classcatalogdb,
- null,
- myDbConfig);
- } catch(FileNotFoundException fnfe) {
- System.err.println("MyDbs: " + fnfe.toString());
- System.exit(-1);
- }
-
- // Create our class catalog
- classCatalog = new StoredClassCatalog(classCatalogDb);
-
- // Need a tuple binding for the Inventory class.
- // We use the InventoryBinding class
- // that we implemented for this purpose.
- TupleBinding inventoryBinding = new InventoryBinding();
-
- // Open the secondary database. We use this to create a
- // secondary index for the inventory database
-
- // We want to maintain an index for the inventory entries based
- // on the item name. So, instantiate the appropriate key creator
- // and open a secondary database.
- ItemNameKeyCreator keyCreator =
- new ItemNameKeyCreator(new InventoryBinding());
-
-
- // Set up additional secondary properties
- // Need to allow duplicates for our secondary database
- mySecConfig.setSortedDuplicates(true);
- mySecConfig.setAllowPopulate(true); // Allow autopopulate
- mySecConfig.setKeyCreator(keyCreator);
-
- // Now open it
- try {
- itemnameindexdb = databasesHome + "/" + itemnameindexdb;
- itemNameIndexDb = new SecondaryDatabase(itemnameindexdb,
- null,
- inventoryDb,
- mySecConfig);
- } catch(FileNotFoundException fnfe) {
- System.err.println("MyDbs: " + fnfe.toString());
- System.exit(-1);
- }
- }
-
- // getter methods
- public Database getVendorDB() {
- return vendorDb;
- }
-
- public Database getInventoryDB() {
- return inventoryDb;
- }
-
- public SecondaryDatabase getNameIndexDB() {
- return itemNameIndexDb;
- }
-
- public StoredClassCatalog getClassCatalog() {
- return classCatalog;
- }
-
- // Close the databases
- public void close() {
- try {
- if (itemNameIndexDb != null) {
- itemNameIndexDb.close();
- }
-
- if (vendorDb != null) {
- vendorDb.close();
- }
-
- if (inventoryDb != null) {
- inventoryDb.close();
- }
-
- if (classCatalogDb != null) {
- classCatalogDb.close();
- }
-
- } catch(DatabaseException dbe) {
- System.err.println("Error closing MyDbs: " +
- dbe.toString());
- System.exit(-1);
- }
- }
-}
-
diff --git a/db/examples_java/src/com/sleepycat/examples/db/GettingStarted/Vendor.java b/db/examples_java/src/com/sleepycat/examples/db/GettingStarted/Vendor.java
deleted file mode 100644
index 8b5ee96f1..000000000
--- a/db/examples_java/src/com/sleepycat/examples/db/GettingStarted/Vendor.java
+++ /dev/null
@@ -1,82 +0,0 @@
-// File: Vendor.java
-package com.sleepycat.examples.db.GettingStarted;
-
-import java.io.Serializable;
-
-public class Vendor implements Serializable {
-
- private String repName;
- private String address;
- private String city;
- private String state;
- private String zipcode;
- private String bizPhoneNumber;
- private String repPhoneNumber;
- private String vendor;
-
- public void setRepName(String data) {
- repName = data;
- }
-
- public void setAddress(String data) {
- address = data;
- }
-
- public void setCity(String data) {
- city = data;
- }
-
- public void setState(String data) {
- state = data;
- }
-
- public void setZipcode(String data) {
- zipcode = data;
- }
-
- public void setBusinessPhoneNumber(String data) {
- bizPhoneNumber = data;
- }
-
- public void setRepPhoneNumber(String data) {
- repPhoneNumber = data;
- }
-
- public void setVendorName(String data) {
- vendor = data;
- }
-
- public String getRepName() {
- return repName;
- }
-
- public String getAddress() {
- return address;
- }
-
- public String getCity() {
- return city;
- }
-
- public String getState() {
- return state;
- }
-
- public String getZipcode() {
- return zipcode;
- }
-
- public String getBusinessPhoneNumber() {
- return bizPhoneNumber;
- }
-
- public String getRepPhoneNumber() {
- return repPhoneNumber;
- }
-
- public String getVendorName() {
- return vendor;
- }
-
-}
-
diff --git a/db/examples_java/src/com/sleepycat/examples/db/GettingStarted/inventory.txt b/db/examples_java/src/com/sleepycat/examples/db/GettingStarted/inventory.txt
deleted file mode 100644
index d6b68762c..000000000
--- a/db/examples_java/src/com/sleepycat/examples/db/GettingStarted/inventory.txt
+++ /dev/null
@@ -1,800 +0,0 @@
-Oranges#OranfruiRu6Ghr#0.71#451#fruits#TriCounty Produce
-Oranges#OranfruiXRPFn1#0.73#263#fruits#Simply Fresh
-Oranges#OranfruiLEuzQj#0.69#261#fruits#Off the Vine
-Apples#ApplfruiZls4Du#1.20#472#fruits#TriCounty Produce
-Apples#Applfrui8fewZe#1.21#402#fruits#Simply Fresh
-Apples#ApplfruiXoT6xG#1.20#728#fruits#Off the Vine
-Bananas#BanafruipIlluX#0.50#207#fruits#TriCounty Produce
-Bananas#BanafruiEQhWuj#0.50#518#fruits#Simply Fresh
-Bananas#BanafruimpRgPO#0.50#741#fruits#Off the Vine
-Almonds#AlmofruiPPCLz8#0.55#600#fruits#TriCounty Produce
-Almonds#AlmofruidMyKmp#0.54#745#fruits#Simply Fresh
-Almonds#Almofrui7K0xzH#0.53#405#fruits#Off the Vine
-Allspice#AllsfruibJGK4R#0.94#669#fruits#TriCounty Produce
-Allspice#Allsfruilfvoeg#0.94#244#fruits#Simply Fresh
-Allspice#Allsfruio12BOS#0.95#739#fruits#Off the Vine
-Apricot#AprifruijphEpM#0.89#560#fruits#TriCounty Produce
-Apricot#AprifruiU1zIDn#0.91#980#fruits#Simply Fresh
-Apricot#AprifruichcwYS#0.95#668#fruits#Off the Vine
-Avocado#AvocfruiwYYomu#0.99#379#fruits#TriCounty Produce
-Avocado#AvocfruiT6IwWE#1.02#711#fruits#Simply Fresh
-Avocado#AvocfruisbK1h5#0.97#856#fruits#Off the Vine
-Bael Fruit#BaelfruilAU7Hj#0.41#833#fruits#TriCounty Produce
-Bael Fruit#BaelfruiX2KvqV#0.40#770#fruits#Simply Fresh
-Bael Fruit#Baelfruidjne4e#0.39#778#fruits#Off the Vine
-Betel Nut#BetefruiQYdHqQ#0.34#926#fruits#TriCounty Produce
-Betel Nut#Betefrui32BKAz#0.37#523#fruits#Simply Fresh
-Betel Nut#BetefruisaWzY4#0.34#510#fruits#Off the Vine
-Black Walnut#BlacfruiXxIuMU#0.57#923#fruits#TriCounty Produce
-Black Walnut#BlacfruiZXgY9t#0.59#312#fruits#Simply Fresh
-Black Walnut#BlacfruikWO0vz#0.60#877#fruits#Off the Vine
-Blueberry#BluefruiCbxb4t#1.02#276#fruits#TriCounty Produce
-Blueberry#BluefruiBuCfgO#1.03#522#fruits#Simply Fresh
-Blueberry#Bluefruixz8MkE#1.01#278#fruits#Off the Vine
-Boysenberry#BoysfruizxyMuz#1.05#239#fruits#TriCounty Produce
-Boysenberry#Boysfrui3hTRQu#1.09#628#fruits#Simply Fresh
-Boysenberry#BoysfruinpLvr3#1.02#349#fruits#Off the Vine
-Breadnut#Breafrui0kDPs6#0.31#558#fruits#TriCounty Produce
-Breadnut#Breafrui44s3og#0.32#879#fruits#Simply Fresh
-Breadnut#BreafruiwyLKhJ#0.30#407#fruits#Off the Vine
-Cactus#Cactfruiyo2ddH#0.56#601#fruits#TriCounty Produce
-Cactus#CactfruixTOLv5#0.54#477#fruits#Simply Fresh
-Cactus#Cactfrui4ioUav#0.55#896#fruits#Off the Vine
-California Wild Grape#CalifruiZsWAa6#0.78#693#fruits#TriCounty Produce
-California Wild Grape#Califruid84xyt#0.83#293#fruits#Simply Fresh
-California Wild Grape#CalifruiLSJFoJ#0.81#543#fruits#Off the Vine
-Cashew#CashfruihaOFVP#0.37#221#fruits#TriCounty Produce
-Cashew#Cashfruizzcw1E#0.38#825#fruits#Simply Fresh
-Cashew#CashfruiqtMe2Q#0.38#515#fruits#Off the Vine
-Chico Sapote#ChicfruiY534SX#0.47#216#fruits#TriCounty Produce
-Chico Sapote#ChicfruiSqL3Lc#0.45#476#fruits#Simply Fresh
-Chico Sapote#ChicfruiurzIp4#0.47#200#fruits#Off the Vine
-Chinese Jello#ChinfruiyRg75u#0.64#772#fruits#TriCounty Produce
-Chinese Jello#ChinfruiuIUj0X#0.65#624#fruits#Simply Fresh
-Chinese Jello#ChinfruiwXbRrL#0.67#719#fruits#Off the Vine
-Common Guava#Commfruib6znSI#0.80#483#fruits#TriCounty Produce
-Common Guava#Commfrui6eUivL#0.81#688#fruits#Simply Fresh
-Common Guava#CommfruibWKnz3#0.84#581#fruits#Off the Vine
-Crabapple#CrabfruioY2L63#0.94#582#fruits#TriCounty Produce
-Crabapple#Crabfruijxcxyt#0.94#278#fruits#Simply Fresh
-Crabapple#CrabfruibvWd8K#0.95#213#fruits#Off the Vine
-Cranberry#CranfruiJxmKr5#0.83#923#fruits#TriCounty Produce
-Cranberry#CranfruiPlklAF#0.84#434#fruits#Simply Fresh
-Cranberry#Cranfrui3G5XL9#0.84#880#fruits#Off the Vine
-Damson Plum#DamsfruibMRMwe#0.98#782#fruits#TriCounty Produce
-Damson Plum#DamsfruiV6wFLk#1.03#400#fruits#Simply Fresh
-Damson Plum#DamsfruiLhqFrQ#0.98#489#fruits#Off the Vine
-Date Palm#DatefruigS31GU#1.14#315#fruits#TriCounty Produce
-Date Palm#DatefruipKPaJK#1.09#588#fruits#Simply Fresh
-Date Palm#Datefrui5fTyNS#1.14#539#fruits#Off the Vine
-Dragon's Eye#DragfruirGJ3aI#0.28#315#fruits#TriCounty Produce
-Dragon's Eye#DragfruiBotxqt#0.27#705#fruits#Simply Fresh
-Dragon's Eye#DragfruiPsSnV9#0.29#482#fruits#Off the Vine
-East Indian Wine Palm#EastfruiNXFJuG#0.43#992#fruits#TriCounty Produce
-East Indian Wine Palm#Eastfruiq06fRr#0.40#990#fruits#Simply Fresh
-East Indian Wine Palm#Eastfrui4QUwl2#0.43#351#fruits#Off the Vine
-English Walnut#EnglfruiBMtHtW#1.04#787#fruits#TriCounty Produce
-English Walnut#EnglfruiHmVzxV#1.03#779#fruits#Simply Fresh
-English Walnut#Englfrui18Tc9n#1.06#339#fruits#Off the Vine
-False Mangosteen#FalsfruibkmYqH#0.66#971#fruits#TriCounty Produce
-False Mangosteen#FalsfruipBsbcX#0.68#250#fruits#Simply Fresh
-False Mangosteen#FalsfruiPrFfhe#0.70#386#fruits#Off the Vine
-Fried Egg Tree#FriefruiihHUdc#0.29#649#fruits#TriCounty Produce
-Fried Egg Tree#FriefruimdD1rf#0.28#527#fruits#Simply Fresh
-Fried Egg Tree#FriefruivyAzYq#0.29#332#fruits#Off the Vine
-Genipap#GenifruiDtKusQ#0.62#986#fruits#TriCounty Produce
-Genipap#GenifruiXq32eP#0.61#326#fruits#Simply Fresh
-Genipap#Genifruiphwwyq#0.61#794#fruits#Off the Vine
-Ginger#GingfruiQLbRZI#0.28#841#fruits#TriCounty Produce
-Ginger#GingfruiS8kK4p#0.29#432#fruits#Simply Fresh
-Ginger#GingfruioL3Y4S#0.27#928#fruits#Off the Vine
-Grapefruit#Grapfruih86Zxh#1.07#473#fruits#TriCounty Produce
-Grapefruit#GrapfruiwL1v0N#1.08#878#fruits#Simply Fresh
-Grapefruit#GrapfruihmJzWm#1.02#466#fruits#Off the Vine
-Hackberry#HackfruiQjomN7#0.22#938#fruits#TriCounty Produce
-Hackberry#HackfruiWS0eKp#0.20#780#fruits#Simply Fresh
-Hackberry#Hackfrui0MIv6J#0.21#345#fruits#Off the Vine
-Honey Locust#HonefruiebXGRc#1.08#298#fruits#TriCounty Produce
-Honey Locust#HonefruiPSqILB#1.00#427#fruits#Simply Fresh
-Honey Locust#Honefrui6UXtvW#1.03#422#fruits#Off the Vine
-Japanese Plum#JapafruihTmoYR#0.40#658#fruits#TriCounty Produce
-Japanese Plum#JapafruifGqz0l#0.40#700#fruits#Simply Fresh
-Japanese Plum#JapafruiufWkLx#0.39#790#fruits#Off the Vine
-Jojoba#JojofruisE0wTh#0.97#553#fruits#TriCounty Produce
-Jojoba#JojofruiwiYLp2#1.02#969#fruits#Simply Fresh
-Jojoba#JojofruigMD1ej#0.96#899#fruits#Off the Vine
-Jostaberry#JostfruiglsEGV#0.50#300#fruits#TriCounty Produce
-Jostaberry#JostfruiV3oo1h#0.52#423#fruits#Simply Fresh
-Jostaberry#JostfruiUBerur#0.53#562#fruits#Off the Vine
-Kangaroo Apple#KangfruiEQknz8#0.60#661#fruits#TriCounty Produce
-Kangaroo Apple#KangfruiNabdFq#0.60#377#fruits#Simply Fresh
-Kangaroo Apple#Kangfrui7hky1i#0.60#326#fruits#Off the Vine
-Ken's Red#Ken'fruinPUSIm#0.21#337#fruits#TriCounty Produce
-Ken's Red#Ken'fruiAoZlpl#0.21#902#fruits#Simply Fresh
-Ken's Red#Ken'frui5rmbd4#0.22#972#fruits#Off the Vine
-Ketembilla#Ketefrui3yAKxQ#0.31#303#fruits#TriCounty Produce
-Ketembilla#KetefruiROn6F5#0.34#283#fruits#Simply Fresh
-Ketembilla#Ketefrui16Rsts#0.33#887#fruits#Off the Vine
-King Orange#KingfruisOFzWk#0.74#429#fruits#TriCounty Produce
-King Orange#KingfruiBmzRJT#0.74#500#fruits#Simply Fresh
-King Orange#KingfruiGsrgRX#0.78#994#fruits#Off the Vine
-Kola Nut#KolafruiBbtAuw#0.58#991#fruits#TriCounty Produce
-Kola Nut#KolafruirbnLVS#0.62#733#fruits#Simply Fresh
-Kola Nut#Kolafrui1ItXJx#0.58#273#fruits#Off the Vine
-Kuko#Kukofrui6YH5Ds#0.41#647#fruits#TriCounty Produce
-Kuko#Kukofrui7WZaZK#0.39#241#fruits#Simply Fresh
-Kuko#Kukofruig9MQFT#0.40#204#fruits#Off the Vine
-Kumquat#KumqfruiT6WKQL#0.73#388#fruits#TriCounty Produce
-Kumquat#KumqfruidLiFLU#0.70#393#fruits#Simply Fresh
-Kumquat#KumqfruiL6zhQX#0.71#994#fruits#Off the Vine
-Kwai Muk#KwaifruiQK1zOE#1.10#249#fruits#TriCounty Produce
-Kwai Muk#KwaifruifbCRlT#1.14#657#fruits#Simply Fresh
-Kwai Muk#Kwaifruipe7T2m#1.09#617#fruits#Off the Vine
-Lanzone#LanzfruijsPf1v#0.34#835#fruits#TriCounty Produce
-Lanzone#LanzfruibU3QoL#0.34#404#fruits#Simply Fresh
-Lanzone#LanzfruiYgHwv6#0.34#237#fruits#Off the Vine
-Lemon#Lemofrui4Tgsg2#0.46#843#fruits#TriCounty Produce
-Lemon#LemofruivK6qvj#0.43#207#fruits#Simply Fresh
-Lemon#LemofruiXSXqJ0#0.44#910#fruits#Off the Vine
-Lemon Grass#LemofruiVFgVh5#0.40#575#fruits#TriCounty Produce
-Lemon Grass#LemofruiWIelvi#0.41#386#fruits#Simply Fresh
-Lemon Grass#LemofruiGVAow0#0.39#918#fruits#Off the Vine
-Lilly-pilly#LillfruiEQnW1m#1.21#974#fruits#TriCounty Produce
-Lilly-pilly#LillfruiMqVuR5#1.23#303#fruits#Simply Fresh
-Lilly-pilly#LillfruiVGH9p4#1.17#512#fruits#Off the Vine
-Ling Nut#LingfruiGtOf8X#0.85#540#fruits#TriCounty Produce
-Ling Nut#LingfruiuP0Jf9#0.83#200#fruits#Simply Fresh
-Ling Nut#LingfruiuO5qf5#0.81#319#fruits#Off the Vine
-Lipote#LipofruisxD2Qc#0.85#249#fruits#TriCounty Produce
-Lipote#LipofruiHNdIqL#0.85#579#fruits#Simply Fresh
-Lipote#LipofruiSQ2pKK#0.83#472#fruits#Off the Vine
-Litchee#Litcfrui1R6Ydz#0.99#806#fruits#TriCounty Produce
-Litchee#LitcfruiwtDM79#1.01#219#fruits#Simply Fresh
-Litchee#LitcfruilpPZbC#1.05#419#fruits#Off the Vine
-Longan#LongfruiEI0lWF#1.02#573#fruits#TriCounty Produce
-Longan#LongfruiPQxxSF#1.04#227#fruits#Simply Fresh
-Longan#LongfruisdI812#0.99#993#fruits#Off the Vine
-Love-in-a-mist#LovefruiKYPW70#0.69#388#fruits#TriCounty Produce
-Love-in-a-mist#LovefruiHrgjDa#0.67#478#fruits#Simply Fresh
-Love-in-a-mist#LovefruipSOWVz#0.71#748#fruits#Off the Vine
-Lychee#LychfruiicVLnY#0.38#276#fruits#TriCounty Produce
-Lychee#LychfruiGY6yJr#0.38#602#fruits#Simply Fresh
-Lychee#LychfruiTzDCq2#0.40#572#fruits#Off the Vine
-Mabolo#MabofruiSY8RQS#0.97#263#fruits#TriCounty Produce
-Mabolo#MabofruiOWWk0n#0.98#729#fruits#Simply Fresh
-Mabolo#MabofruixQLOTF#0.98#771#fruits#Off the Vine
-Macadamia Nut#MacafruiZppJPw#1.22#888#fruits#TriCounty Produce
-Macadamia Nut#MacafruiI7XFMV#1.24#484#fruits#Simply Fresh
-Macadamia Nut#Macafrui4x8bxV#1.20#536#fruits#Off the Vine
-Madagascar Plum#MadafruiVj5fDf#1.14#596#fruits#TriCounty Produce
-Madagascar Plum#MadafruivJhAFI#1.15#807#fruits#Simply Fresh
-Madagascar Plum#Madafrui7MTe1x#1.17#355#fruits#Off the Vine
-Magnolia Vine#MagnfruiigN4Y1#1.17#321#fruits#TriCounty Produce
-Magnolia Vine#MagnfruicKtiHd#1.15#353#fruits#Simply Fresh
-Magnolia Vine#MagnfruiLPDSCp#1.23#324#fruits#Off the Vine
-Mamey#Mamefrui5rjLF6#0.36#683#fruits#TriCounty Produce
-Mamey#MamefruiM6ndnR#0.38#404#fruits#Simply Fresh
-Mamey#Mamefruiq9KntD#0.36#527#fruits#Off the Vine
-Mandarin Orange#MandfruiRKpmKL#0.42#352#fruits#TriCounty Produce
-Mandarin Orange#Mandfrui1V0KLG#0.42#548#fruits#Simply Fresh
-Mandarin Orange#Mandfruig2o9Fg#0.41#686#fruits#Off the Vine
-Marany Nut#MarafruiqkrwoJ#1.14#273#fruits#TriCounty Produce
-Marany Nut#MarafruiCGKpke#1.12#482#fruits#Simply Fresh
-Marany Nut#MarafruiB1YE5x#1.09#412#fruits#Off the Vine
-Marula#MarufruiXF4biH#0.22#403#fruits#TriCounty Produce
-Marula#MarufruidZiVKZ#0.23#317#fruits#Simply Fresh
-Marula#MarufruiIS8BEp#0.21#454#fruits#Off the Vine
-Mayhaw#MayhfruiCSrm7k#0.24#220#fruits#TriCounty Produce
-Mayhaw#MayhfruiNRDzWs#0.25#710#fruits#Simply Fresh
-Mayhaw#MayhfruiIUCyEg#0.24#818#fruits#Off the Vine
-Meiwa Kumquat#MeiwfruiYhv3AY#0.21#997#fruits#TriCounty Produce
-Meiwa Kumquat#MeiwfruiyzQFNR#0.22#347#fruits#Simply Fresh
-Meiwa Kumquat#Meiwfruict4OUp#0.21#923#fruits#Off the Vine
-Mexican Barberry#Mexifrui2P2dXi#0.28#914#fruits#TriCounty Produce
-Mexican Barberry#MexifruiywUTMI#0.29#782#fruits#Simply Fresh
-Mexican Barberry#MexifruijPHu5X#0.29#367#fruits#Off the Vine
-Meyer Lemon#Meyefruin9901J#0.38#824#fruits#TriCounty Produce
-Meyer Lemon#MeyefruiNeQpjO#0.37#617#fruits#Simply Fresh
-Meyer Lemon#MeyefruiYEVznZ#0.37#741#fruits#Off the Vine
-Mississippi Honeyberry#Missfruipb5iW3#0.95#595#fruits#TriCounty Produce
-Mississippi Honeyberry#MissfruiINiDbB#0.96#551#fruits#Simply Fresh
-Mississippi Honeyberry#MissfruiNUQ82a#0.93#396#fruits#Off the Vine
-Monkey Pot#MonkfruiXlTW4j#0.90#896#fruits#TriCounty Produce
-Monkey Pot#Monkfrui1p7a4h#0.88#344#fruits#Simply Fresh
-Monkey Pot#Monkfrui4eKggb#0.92#917#fruits#Off the Vine
-Monos Plum#Monofrui0Mv9aV#1.11#842#fruits#TriCounty Produce
-Monos Plum#Monofrui6iTGQY#1.14#570#fruits#Simply Fresh
-Monos Plum#MonofruiNu2uGH#1.13#978#fruits#Off the Vine
-Moosewood#MoosfruiMXEGex#0.86#969#fruits#TriCounty Produce
-Moosewood#Moosfrui8805mB#0.86#963#fruits#Simply Fresh
-Moosewood#MoosfruiOsnDFL#0.88#594#fruits#Off the Vine
-Natal Orange#NatafruitB8Kh2#0.42#332#fruits#TriCounty Produce
-Natal Orange#NatafruiOhqRrd#0.42#982#fruits#Simply Fresh
-Natal Orange#NatafruiRObMf6#0.41#268#fruits#Off the Vine
-Nectarine#NectfruilNfeD8#0.36#601#fruits#TriCounty Produce
-Nectarine#NectfruiQfjt6b#0.35#818#fruits#Simply Fresh
-Nectarine#Nectfrui5U7U96#0.37#930#fruits#Off the Vine
-Neem Tree#NeemfruiCruEMF#0.24#222#fruits#TriCounty Produce
-Neem Tree#NeemfruiGv0pv5#0.24#645#fruits#Simply Fresh
-Neem Tree#NeemfruiUFPVfk#0.25#601#fruits#Off the Vine
-New Zealand Spinach#New fruihDIgec#0.87#428#fruits#TriCounty Produce
-New Zealand Spinach#New fruiaoR9TP#0.87#630#fruits#Simply Fresh
-New Zealand Spinach#New fruiy8LBul#0.94#570#fruits#Off the Vine
-Olosapo#OlosfruiGXvaMm#0.76#388#fruits#TriCounty Produce
-Olosapo#OlosfruiESlpB3#0.76#560#fruits#Simply Fresh
-Olosapo#OlosfruiFNEkER#0.76#962#fruits#Off the Vine
-Oregon Grape#OregfruiWxhzrf#1.14#892#fruits#TriCounty Produce
-Oregon Grape#OregfruiMgjHUn#1.20#959#fruits#Simply Fresh
-Oregon Grape#OregfruiC5UCxX#1.17#419#fruits#Off the Vine
-Otaheite Apple#OtahfruilT0iFj#0.21#579#fruits#TriCounty Produce
-Otaheite Apple#Otahfrui92PyMY#0.22#857#fruits#Simply Fresh
-Otaheite Apple#OtahfruiLGD1EH#0.20#807#fruits#Off the Vine
-Oyster Plant#OystfruimGxOsj#0.77#835#fruits#TriCounty Produce
-Oyster Plant#Oystfrui1kudBX#0.81#989#fruits#Simply Fresh
-Oyster Plant#OystfruiaX3uO2#0.80#505#fruits#Off the Vine
-Panama Berry#PanafruiZG0Vp4#1.19#288#fruits#TriCounty Produce
-Panama Berry#PanafruiobvXPE#1.21#541#fruits#Simply Fresh
-Panama Berry#PanafruipaW8F3#1.16#471#fruits#Off the Vine
-Peach Tomato#PeacfruiQpovYH#1.20#475#fruits#TriCounty Produce
-Peach Tomato#PeacfruixYXLTN#1.18#655#fruits#Simply Fresh
-Peach Tomato#PeacfruiILDYAp#1.23#876#fruits#Off the Vine
-Peanut#Peanfruiy8M7pt#0.69#275#fruits#TriCounty Produce
-Peanut#PeanfruiEimbED#0.65#307#fruits#Simply Fresh
-Peanut#Peanfruic452Vc#0.68#937#fruits#Off the Vine
-Peanut Butter Fruit#PeanfruixEDt9Y#0.27#628#fruits#TriCounty Produce
-Peanut Butter Fruit#PeanfruiST0T0R#0.27#910#fruits#Simply Fresh
-Peanut Butter Fruit#Peanfrui7jeRN2#0.27#938#fruits#Off the Vine
-Pear#PearfruiB5YmSJ#0.20#945#fruits#TriCounty Produce
-Pear#PearfruiA93XZx#0.21#333#fruits#Simply Fresh
-Pear#PearfruioNKiIf#0.21#715#fruits#Off the Vine
-Pecan#PecafruiiTIv1Z#0.26#471#fruits#TriCounty Produce
-Pecan#PecafruiMGkqla#0.26#889#fruits#Simply Fresh
-Pecan#Pecafrui1szYz2#0.25#929#fruits#Off the Vine
-Purple Passion Fruit#Purpfrui4mMGkD#1.04#914#fruits#TriCounty Produce
-Purple Passion Fruit#Purpfrui5XOW3K#1.06#423#fruits#Simply Fresh
-Purple Passion Fruit#PurpfruifDTAgW#1.05#549#fruits#Off the Vine
-Red Mulberry#Red fruiVLOXIW#1.24#270#fruits#TriCounty Produce
-Red Mulberry#Red fruiXNXt4a#1.21#836#fruits#Simply Fresh
-Red Mulberry#Red fruiUseWLG#1.21#795#fruits#Off the Vine
-Red Princess#Red fruigJLR4V#0.23#829#fruits#TriCounty Produce
-Red Princess#Red fruinVKps5#0.23#558#fruits#Simply Fresh
-Red Princess#Red frui0jl9mg#0.24#252#fruits#Off the Vine
-Striped Screw Pine#StrifruiUKzjoU#0.60#226#fruits#TriCounty Produce
-Striped Screw Pine#StrifruivWLDzH#0.64#685#fruits#Simply Fresh
-Striped Screw Pine#StrifruiiF7CGH#0.60#983#fruits#Off the Vine
-Tapioca#Tapifruib4LCqt#0.40#955#fruits#TriCounty Produce
-Tapioca#TapifruiwgQLj9#0.41#889#fruits#Simply Fresh
-Tapioca#TapifruiZ6Igg3#0.41#655#fruits#Off the Vine
-Tavola#Tavofrui0k9XOt#1.16#938#fruits#TriCounty Produce
-Tavola#Tavofrui8DuRxL#1.08#979#fruits#Simply Fresh
-Tavola#TavofruiNZEuJZ#1.16#215#fruits#Off the Vine
-Tea#TeafruiL0357s#1.11#516#fruits#TriCounty Produce
-Tea#TeafruiD5soTf#1.13#970#fruits#Simply Fresh
-Tea#TeafruiOWq4oO#1.19#357#fruits#Off the Vine
-Ugli Fruit#UglifruipKNCpf#0.24#501#fruits#TriCounty Produce
-Ugli Fruit#UglifruifbDrzc#0.24#642#fruits#Simply Fresh
-Ugli Fruit#Uglifruiwx8or4#0.24#280#fruits#Off the Vine
-Vegetable Brain#VegefruieXLBoc#0.73#355#fruits#TriCounty Produce
-Vegetable Brain#Vegefruik5FSdl#0.71#498#fruits#Simply Fresh
-Vegetable Brain#VegefruiKBfzN0#0.72#453#fruits#Off the Vine
-White Walnut#Whitfruit3oVHL#0.30#501#fruits#TriCounty Produce
-White Walnut#WhitfruiHygydw#0.30#913#fruits#Simply Fresh
-White Walnut#WhitfruieNtplo#0.30#401#fruits#Off the Vine
-Wood Apple#WoodfruijVPRqA#0.68#501#fruits#TriCounty Produce
-Wood Apple#Woodfrui4Zk69T#0.68#616#fruits#Simply Fresh
-Wood Apple#WoodfruiuSLHZK#0.70#474#fruits#Off the Vine
-Yellow Horn#Yellfrui5igjjf#1.18#729#fruits#TriCounty Produce
-Yellow Horn#Yellfrui0DiPqa#1.13#517#fruits#Simply Fresh
-Yellow Horn#Yellfrui0ljvqC#1.14#853#fruits#Off the Vine
-Yellow Sapote#YellfruilGmCfq#0.93#204#fruits#TriCounty Produce
-Yellow Sapote#Yellfrui4J2mke#0.88#269#fruits#Simply Fresh
-Yellow Sapote#Yellfrui6PuXaL#0.86#575#fruits#Off the Vine
-Ylang-ylang#Ylanfrui3rmByO#0.76#429#fruits#TriCounty Produce
-Ylang-ylang#YlanfruiA80Nkq#0.76#886#fruits#Simply Fresh
-Ylang-ylang#YlanfruinUEm5d#0.72#747#fruits#Off the Vine
-Zapote Blanco#ZapofruisZ5sMA#0.67#428#fruits#TriCounty Produce
-Zapote Blanco#ZapofruilKxl7N#0.65#924#fruits#Simply Fresh
-Zapote Blanco#ZapofruiAe6Eu1#0.68#255#fruits#Off the Vine
-Zulu Nut#Zulufrui469K4k#0.71#445#fruits#TriCounty Produce
-Zulu Nut#ZulufruiWbz6vU#0.71#653#fruits#Simply Fresh
-Zulu Nut#Zulufrui0LJnWK#0.71#858#fruits#Off the Vine
-Artichoke#ArtivegeIuqmS4#0.71#282#vegetables#The Pantry
-Artichoke#Artivegebljjnf#0.69#66#vegetables#TriCounty Produce
-Artichoke#ArtivegeTa2lcF#0.70#618#vegetables#Off the Vine
-Asparagus#AspavegezC0cDl#0.23#70#vegetables#The Pantry
-Asparagus#AspavegeM1q5Kt#0.24#546#vegetables#TriCounty Produce
-Asparagus#AspavegeXWbCb8#0.24#117#vegetables#Off the Vine
-Basil#Basivegev08fzf#0.31#213#vegetables#The Pantry
-Basil#BasivegeF3Uha7#0.29#651#vegetables#TriCounty Produce
-Basil#BasivegeqR8SHC#0.31#606#vegetables#Off the Vine
-Bean#BeanvegegCFUOp#0.27#794#vegetables#The Pantry
-Bean#BeanvegeqMSEVq#0.27#468#vegetables#TriCounty Produce
-Bean#Beanvege4IGUwX#0.27#463#vegetables#Off the Vine
-Beet#BeetvegedEv4Ic#0.35#120#vegetables#The Pantry
-Beet#Beetvegegi1bz1#0.35#540#vegetables#TriCounty Produce
-Beet#BeetvegemztZcN#0.36#386#vegetables#Off the Vine
-Blackeyed Pea#Blacvege3TPldr#0.86#133#vegetables#The Pantry
-Blackeyed Pea#Blacvege3Zqnep#0.88#67#vegetables#TriCounty Produce
-Blackeyed Pea#Blacvege3khffZ#0.90#790#vegetables#Off the Vine
-Cabbage#CabbvegeY0c4Fw#0.82#726#vegetables#The Pantry
-Cabbage#CabbvegeoaK7Co#0.85#439#vegetables#TriCounty Produce
-Cabbage#CabbvegeVvO646#0.82#490#vegetables#Off the Vine
-Carrot#CarrvegeEbI0sw#0.45#717#vegetables#The Pantry
-Carrot#CarrvegeEZndWL#0.49#284#vegetables#TriCounty Produce
-Carrot#CarrvegewUkHao#0.47#122#vegetables#Off the Vine
-Cauliflower#Caulvege1CPeNG#0.68#756#vegetables#The Pantry
-Cauliflower#CaulvegedrPqib#0.66#269#vegetables#TriCounty Produce
-Cauliflower#CaulvegeT6cka8#0.65#728#vegetables#Off the Vine
-Chayote#ChayvegePRReGE#0.14#233#vegetables#The Pantry
-Chayote#Chayvegep058f7#0.14#88#vegetables#TriCounty Produce
-Chayote#ChayvegeoxO40S#0.14#611#vegetables#Off the Vine
-Corn#CornvegeukXkv6#0.72#632#vegetables#The Pantry
-Corn#CornvegePnPREC#0.72#609#vegetables#TriCounty Produce
-Corn#CornvegeO0GwoQ#0.70#664#vegetables#Off the Vine
-Cucumber#CucuvegeEqQeA7#0.94#499#vegetables#The Pantry
-Cucumber#CucuvegewmKbJ1#0.94#738#vegetables#TriCounty Produce
-Cucumber#CucuvegeUW6JaA#0.94#565#vegetables#Off the Vine
-Cantaloupe#CantvegeIHs9vJ#0.66#411#vegetables#The Pantry
-Cantaloupe#CantvegeEaDdST#0.66#638#vegetables#TriCounty Produce
-Cantaloupe#CantvegewWQEa0#0.64#682#vegetables#Off the Vine
-Carraway#CarrvegewuL4Ma#0.32#740#vegetables#The Pantry
-Carraway#CarrvegeyiWfBj#0.32#265#vegetables#TriCounty Produce
-Carraway#CarrvegeMjb1i9#0.31#732#vegetables#Off the Vine
-Celeriac#CelevegeoTBicd#0.74#350#vegetables#The Pantry
-Celeriac#CelevegeCNABoZ#0.70#261#vegetables#TriCounty Produce
-Celeriac#Celevege9LUeww#0.70#298#vegetables#Off the Vine
-Celery#Celevegej40ZCc#0.59#740#vegetables#The Pantry
-Celery#CelevegerYlVRy#0.58#734#vegetables#TriCounty Produce
-Celery#Celevege67eimC#0.58#619#vegetables#Off the Vine
-Chervil#ChervegeuH4Dge#0.09#502#vegetables#The Pantry
-Chervil#Chervegea1OyKO#0.09#299#vegetables#TriCounty Produce
-Chervil#Chervegeq56gMO#0.09#474#vegetables#Off the Vine
-Chicory#Chicvege79qoQ8#0.09#709#vegetables#The Pantry
-Chicory#ChicvegeTSVBQq#0.10#477#vegetables#TriCounty Produce
-Chicory#Chicvege6qpcyi#0.10#282#vegetables#Off the Vine
-Chinese Cabbage#ChinvegeFNsSRn#0.78#408#vegetables#The Pantry
-Chinese Cabbage#Chinvege2ldNr3#0.80#799#vegetables#TriCounty Produce
-Chinese Cabbage#ChinvegeK3R2Td#0.80#180#vegetables#Off the Vine
-Chinese Beans#ChinvegebxbyPy#0.45#654#vegetables#The Pantry
-Chinese Beans#ChinvegewKGwgx#0.45#206#vegetables#TriCounty Produce
-Chinese Beans#ChinvegevVjzC0#0.47#643#vegetables#Off the Vine
-Chines Kale#ChinvegeCfdkss#0.70#239#vegetables#The Pantry
-Chines Kale#Chinvege6V6Dne#0.65#548#vegetables#TriCounty Produce
-Chines Kale#ChinvegeB7vE3x#0.66#380#vegetables#Off the Vine
-Chinese Radish#ChinvegeXcM4eq#0.22#190#vegetables#The Pantry
-Chinese Radish#ChinvegeTdUBqN#0.22#257#vegetables#TriCounty Produce
-Chinese Radish#ChinvegeMXMms8#0.22#402#vegetables#Off the Vine
-Chinese Mustard#ChinvegeRDdpdl#0.33#149#vegetables#The Pantry
-Chinese Mustard#ChinvegeABDhNd#0.32#320#vegetables#TriCounty Produce
-Chinese Mustard#Chinvege8NPwa2#0.34#389#vegetables#Off the Vine
-Cilantro#CilavegeQXBEsW#0.60#674#vegetables#The Pantry
-Cilantro#CilavegeRgjkUG#0.60#355#vegetables#TriCounty Produce
-Cilantro#CilavegelT2msu#0.59#464#vegetables#Off the Vine
-Collard#CollvegesTGGNw#0.32#745#vegetables#The Pantry
-Collard#CollvegeAwdor5#0.32#124#vegetables#TriCounty Produce
-Collard#CollvegeQe900L#0.30#796#vegetables#Off the Vine
-Coriander#CorivegeXxp4xY#0.26#560#vegetables#The Pantry
-Coriander#Corivege9xBAT0#0.27#321#vegetables#TriCounty Produce
-Coriander#CorivegeCfNjBx#0.27#709#vegetables#Off the Vine
-Dandelion#DandvegeJNcnbr#0.11#285#vegetables#The Pantry
-Dandelion#DandvegeGwBkHZ#0.11#733#vegetables#TriCounty Produce
-Dandelion#DandvegeZfwVqn#0.11#57#vegetables#Off the Vine
-Daikon Radish#DaikvegeHHsd7M#0.61#743#vegetables#The Pantry
-Daikon Radish#DaikvegeIu17yC#0.62#459#vegetables#TriCounty Produce
-Daikon Radish#DaikvegePzFjqf#0.63#296#vegetables#Off the Vine
-Eggplant#EggpvegeKJtydN#0.55#200#vegetables#The Pantry
-Eggplant#EggpvegeQMKrNs#0.53#208#vegetables#TriCounty Produce
-Eggplant#EggpvegeN0WnSo#0.51#761#vegetables#Off the Vine
-English Pea#Englvegea1ytIn#0.40#457#vegetables#The Pantry
-English Pea#EnglvegerU9Vty#0.37#263#vegetables#TriCounty Produce
-English Pea#EnglvegeCmkd3y#0.39#430#vegetables#Off the Vine
-Fennel#Fennvegebz2UM7#0.76#545#vegetables#The Pantry
-Fennel#FennvegeQzjtZ3#0.78#795#vegetables#TriCounty Produce
-Fennel#FennvegeXSrW61#0.75#79#vegetables#Off the Vine
-Garlic#GarlvegesR2yel#0.76#478#vegetables#The Pantry
-Garlic#GarlvegeEQvt8W#0.77#349#vegetables#TriCounty Produce
-Garlic#GarlvegedljBdK#0.80#708#vegetables#Off the Vine
-Ginger#GingvegeMNiTc2#0.88#563#vegetables#The Pantry
-Ginger#Gingvegeq366Sn#0.89#738#vegetables#TriCounty Produce
-Ginger#GingvegeznyyVj#0.89#598#vegetables#Off the Vine
-Horseradish#HorsvegemSwISt#0.12#622#vegetables#The Pantry
-Horseradish#HorsvegetCOS0x#0.11#279#vegetables#TriCounty Produce
-Horseradish#Horsvegew6XXaS#0.12#478#vegetables#Off the Vine
-Japanese Eggplant#JapavegeTdKDCL#0.57#539#vegetables#The Pantry
-Japanese Eggplant#JapavegevsJfGa#0.58#782#vegetables#TriCounty Produce
-Japanese Eggplant#JapavegeCIrIxd#0.57#777#vegetables#Off the Vine
-Jerusalem Artichoke#Jeruvege928cr0#0.13#231#vegetables#The Pantry
-Jerusalem Artichoke#JeruvegeC2v086#0.14#123#vegetables#TriCounty Produce
-Jerusalem Artichoke#JeruvegeehCYzi#0.14#196#vegetables#Off the Vine
-Jicama#JicavegeRWYj9n#0.75#79#vegetables#The Pantry
-Jicama#JicavegeGk5LKH#0.71#292#vegetables#TriCounty Produce
-Jicama#JicavegeUjpaX1#0.70#308#vegetables#Off the Vine
-Kale#Kalevegext6RNT#0.55#765#vegetables#The Pantry
-Kale#KalevegeFsp17B#0.53#107#vegetables#TriCounty Produce
-Kale#KalevegeAffBTS#0.57#573#vegetables#Off the Vine
-Kiwifruit#KiwivegeloZBKJ#0.60#769#vegetables#The Pantry
-Kiwifruit#KiwivegenCQAHw#0.59#307#vegetables#TriCounty Produce
-Kiwifruit#Kiwivege0Gi3P2#0.59#235#vegetables#Off the Vine
-Kohlrabi#KohlvegeJFKZDl#0.26#406#vegetables#The Pantry
-Kohlrabi#Kohlvege32UTAj#0.28#613#vegetables#TriCounty Produce
-Kohlrabi#KohlvegejNQC1M#0.28#326#vegetables#Off the Vine
-Leek#Leekvege5iaFtg#0.70#580#vegetables#The Pantry
-Leek#Leekvegei9Wxbz#0.68#188#vegetables#TriCounty Produce
-Leek#LeekvegewY4mAc#0.70#473#vegetables#Off the Vine
-Lettuce#LettvegesK9wDR#0.55#716#vegetables#The Pantry
-Lettuce#LettvegeWzMyCM#0.57#83#vegetables#TriCounty Produce
-Lettuce#LettvegeHgfGG8#0.56#268#vegetables#Off the Vine
-Melons#Melovege6t93WF#0.11#252#vegetables#The Pantry
-Melons#Melovegeq9kz7T#0.12#558#vegetables#TriCounty Produce
-Melons#Melovege9kLTXN#0.12#382#vegetables#Off the Vine
-Mushroom#MushvegeSq53h8#0.59#365#vegetables#The Pantry
-Mushroom#Mushvegedq6lYP#0.59#444#vegetables#TriCounty Produce
-Mushroom#Mushvege8o27D2#0.55#467#vegetables#Off the Vine
-Okra#OkravegeTszQSL#0.55#62#vegetables#The Pantry
-Okra#OkravegeJBWmfh#0.58#165#vegetables#TriCounty Produce
-Okra#OkravegeD6tF9n#0.55#77#vegetables#Off the Vine
-Onion#OniovegejwimQo#0.80#186#vegetables#The Pantry
-Onion#OniovegeUOwwks#0.80#417#vegetables#TriCounty Produce
-Onion#OniovegezcRDrc#0.80#435#vegetables#Off the Vine
-Oregano#OregvegetlU7Ez#0.71#119#vegetables#The Pantry
-Oregano#Oregvege9h9ZKy#0.70#173#vegetables#TriCounty Produce
-Oregano#OregvegebXr0PJ#0.70#773#vegetables#Off the Vine
-Parsley#ParsvegeXFEjjN#0.83#502#vegetables#The Pantry
-Parsley#ParsvegejAg5C4#0.80#454#vegetables#TriCounty Produce
-Parsley#ParsvegehAtH2H#0.84#523#vegetables#Off the Vine
-Parsnip#Parsvegee9Lp6D#0.46#626#vegetables#The Pantry
-Parsnip#ParsvegeSxXHSA#0.47#411#vegetables#TriCounty Produce
-Parsnip#Parsvegea0stPf#0.44#403#vegetables#Off the Vine
-Pea#Peavegecq4SxR#0.18#342#vegetables#The Pantry
-Pea#Peavege46Gdp9#0.18#255#vegetables#TriCounty Produce
-Pea#Peavegeov1gc5#0.18#251#vegetables#Off the Vine
-Pepper#PeppvegeUcBYRp#0.33#52#vegetables#The Pantry
-Pepper#PeppvegeB60btP#0.35#107#vegetables#TriCounty Produce
-Pepper#PeppvegeG4tP3e#0.34#481#vegetables#Off the Vine
-Pigeon Pea#Pigevegec5bAtm#0.94#391#vegetables#The Pantry
-Pigeon Pea#Pigevegeb93eLi#0.91#447#vegetables#TriCounty Produce
-Pigeon Pea#PigevegejEBDRa#0.89#259#vegetables#Off the Vine
-Irish Potato#IrisvegeJNQqby#0.72#355#vegetables#The Pantry
-Irish Potato#Irisvegewq1PLd#0.72#601#vegetables#TriCounty Produce
-Irish Potato#IrisvegeAfFLdO#0.68#740#vegetables#Off the Vine
-Pumpkin#PumpvegeiYsPR8#0.25#776#vegetables#The Pantry
-Pumpkin#PumpvegelqP1Kh#0.25#189#vegetables#TriCounty Produce
-Pumpkin#Pumpvegeb3nQU5#0.26#207#vegetables#Off the Vine
-Radish#RadivegeNwwSBJ#0.16#613#vegetables#The Pantry
-Radish#Radivege0tIBnL#0.16#779#vegetables#TriCounty Produce
-Radish#RadivegeNLqJCf#0.16#731#vegetables#Off the Vine
-Rhubarb#RhubvegeREfOti#0.12#301#vegetables#The Pantry
-Rhubarb#Rhubvege4Jc3b7#0.12#557#vegetables#TriCounty Produce
-Rhubarb#RhubvegeaXqF7H#0.12#378#vegetables#Off the Vine
-Rosemary#Rosevege16QStc#0.73#380#vegetables#The Pantry
-Rosemary#RosevegeNf6Oem#0.75#622#vegetables#TriCounty Produce
-Rosemary#RosevegeFgsOyN#0.74#631#vegetables#Off the Vine
-Rutabaga#RutavegecUYfQ3#0.55#676#vegetables#The Pantry
-Rutabaga#RutavegejOG5DF#0.55#273#vegetables#TriCounty Produce
-Rutabaga#RutavegewEVjzV#0.53#452#vegetables#Off the Vine
-Salsify#SalsvegeViS9HF#0.11#537#vegetables#The Pantry
-Salsify#Salsvegemd3HAL#0.11#753#vegetables#TriCounty Produce
-Salsify#SalsvegeuRCnmq#0.10#787#vegetables#Off the Vine
-Savory#Savovegee4DRWl#0.21#456#vegetables#The Pantry
-Savory#SavovegerZ90Xm#0.21#642#vegetables#TriCounty Produce
-Savory#Savovegeje7yy7#0.22#328#vegetables#Off the Vine
-Sesame#Sesavege4NAWZE#0.84#54#vegetables#The Pantry
-Sesame#SesavegeMTc9IN#0.84#458#vegetables#TriCounty Produce
-Sesame#SesavegegOwAjo#0.83#125#vegetables#Off the Vine
-Shallots#ShalvegeUO2pDO#0.26#599#vegetables#The Pantry
-Shallots#ShalvegeY1sekb#0.27#647#vegetables#TriCounty Produce
-Shallots#ShalvegeSDC8VY#0.27#369#vegetables#Off the Vine
-Sugar Snap Peas#SugavegepUZDTl#0.47#308#vegetables#The Pantry
-Sugar Snap Peas#Sugavege1XyzNH#0.48#205#vegetables#TriCounty Produce
-Sugar Snap Peas#SugavegeJuaG7f#0.46#348#vegetables#Off the Vine
-Soybean#SoybvegeqxSVRL#0.70#639#vegetables#The Pantry
-Soybean#SoybvegezEMjOG#0.68#423#vegetables#TriCounty Produce
-Soybean#SoybvegebanSFq#0.67#268#vegetables#Off the Vine
-Spaghetti Squash#SpagvegeMNO1yC#0.12#753#vegetables#The Pantry
-Spaghetti Squash#SpagvegeilpUaD#0.13#604#vegetables#TriCounty Produce
-Spaghetti Squash#SpagvegeAOoZNX#0.13#431#vegetables#Off the Vine
-Spinach#SpinvegeegXXou#0.10#742#vegetables#The Pantry
-Spinach#SpinvegeVcqXL6#0.11#708#vegetables#TriCounty Produce
-Spinach#SpinvegetZ26DN#0.11#625#vegetables#Off the Vine
-Sweet Potato#SweevegepNDQWb#0.94#720#vegetables#The Pantry
-Sweet Potato#Sweevegepnw7Tm#0.90#377#vegetables#TriCounty Produce
-Sweet Potato#Sweevegeyk0C82#0.89#242#vegetables#Off the Vine
-Swiss Chard#SwisvegeksalTA#0.54#545#vegetables#The Pantry
-Swiss Chard#SwisvegeKm2Kze#0.54#472#vegetables#TriCounty Produce
-Swiss Chard#SwisvegehteuMk#0.56#142#vegetables#Off the Vine
-Taro#Tarovege3fpGV6#0.87#155#vegetables#The Pantry
-Taro#TarovegerZkmof#0.86#371#vegetables#TriCounty Produce
-Taro#TarovegeXKPuzc#0.89#443#vegetables#Off the Vine
-Tarragon#TarrvegeCzVC6U#0.18#491#vegetables#The Pantry
-Tarragon#TarrvegesIkEfS#0.17#65#vegetables#TriCounty Produce
-Tarragon#TarrvegerZsKFP#0.18#180#vegetables#Off the Vine
-Thyme#Thymvege8Rv72c#0.41#442#vegetables#The Pantry
-Thyme#ThymvegeJoUdQS#0.42#237#vegetables#TriCounty Produce
-Thyme#ThymvegeRck5uO#0.43#491#vegetables#Off the Vine
-Tomato#Tomavegey0NHGK#0.31#60#vegetables#The Pantry
-Tomato#TomavegeKAjRUn#0.30#630#vegetables#TriCounty Produce
-Tomato#TomavegePZOHlH#0.30#70#vegetables#Off the Vine
-Turnip#TurnvegeRVQiV5#0.44#580#vegetables#The Pantry
-Turnip#TurnvegeVjIX9D#0.45#743#vegetables#TriCounty Produce
-Turnip#TurnvegelFhvuJ#0.44#219#vegetables#Off the Vine
-Watercress#WatevegelwzPLQ#0.54#230#vegetables#The Pantry
-Watercress#Watevege8oeDCT#0.54#774#vegetables#TriCounty Produce
-Watercress#Watevegexr8L1t#0.55#185#vegetables#Off the Vine
-Watermelon#WatevegeL83MRH#0.19#698#vegetables#The Pantry
-Watermelon#WatevegeR2S4Dq#0.21#488#vegetables#TriCounty Produce
-Watermelon#WatevegepFPXQu#0.21#439#vegetables#Off the Vine
-Kamote#KamovegegdON75#0.13#218#vegetables#The Pantry
-Kamote#KamovegevupDBf#0.13#98#vegetables#TriCounty Produce
-Kamote#KamovegeSQX7IA#0.14#703#vegetables#Off the Vine
-Alogbati#AlogvegeB1WaJU#0.41#775#vegetables#The Pantry
-Alogbati#AlogvegeVr5cPP#0.40#789#vegetables#TriCounty Produce
-Alogbati#AlogvegeyTUQzy#0.40#416#vegetables#Off the Vine
-Ampalaya#AmpavegemR9fSd#0.85#107#vegetables#The Pantry
-Ampalaya#AmpavegeJDu9Im#0.90#676#vegetables#TriCounty Produce
-Ampalaya#AmpavegepL8GH5#0.86#728#vegetables#Off the Vine
-Dahon ng sili#Dahovege6X9grk#0.11#369#vegetables#The Pantry
-Dahon ng sili#DahovegeiHZjQT#0.11#141#vegetables#TriCounty Produce
-Dahon ng sili#DahovegeoCDAH8#0.12#517#vegetables#Off the Vine
-Gabi#GabivegeVm4Xk3#0.44#396#vegetables#The Pantry
-Gabi#Gabivegeu6woqK#0.42#722#vegetables#TriCounty Produce
-Gabi#GabivegezcA7q1#0.42#394#vegetables#Off the Vine
-Kabute#Kabuvege6Tqrif#0.16#123#vegetables#The Pantry
-Kabute#KabuvegeA3uYdG#0.15#183#vegetables#TriCounty Produce
-Kabute#KabuvegeXW6ZiI#0.16#624#vegetables#Off the Vine
-Kamoteng Kahoy#KamovegeAdW37X#0.42#782#vegetables#The Pantry
-Kamoteng Kahoy#KamovegetFlqpC#0.42#515#vegetables#TriCounty Produce
-Kamoteng Kahoy#KamovegeMvxoLn#0.40#166#vegetables#Off the Vine
-Kangkong#KangvegeSFTvEz#0.35#759#vegetables#The Pantry
-Kangkong#KangvegeRLR6gL#0.34#695#vegetables#TriCounty Produce
-Kangkong#Kangvege9BFo14#0.35#783#vegetables#Off the Vine
-Labanos#Labavege3qrWJL#0.94#514#vegetables#The Pantry
-Labanos#LabavegekgVWDH#0.89#210#vegetables#TriCounty Produce
-Labanos#LabavegeiVPgMx#0.89#207#vegetables#Off the Vine
-Labong#LabovegeX3O8yz#0.85#722#vegetables#The Pantry
-Labong#LabovegeI1wSEs#0.87#472#vegetables#TriCounty Produce
-Labong#LabovegeOPiQht#0.85#740#vegetables#Off the Vine
-Malunggay#MaluvegeHkwAFm#0.30#252#vegetables#The Pantry
-Malunggay#Maluvegez6TiSY#0.30#245#vegetables#TriCounty Produce
-Malunggay#MaluvegewzY37D#0.31#405#vegetables#Off the Vine
-Munggo#MungvegeqeuwGw#0.25#362#vegetables#The Pantry
-Munggo#MungvegeNhqWvL#0.26#360#vegetables#TriCounty Produce
-Munggo#MungvegeGxNxQC#0.25#555#vegetables#Off the Vine
-Pechay#PechvegezDeHFZ#0.36#401#vegetables#The Pantry
-Pechay#Pechvegehi4Fcx#0.35#723#vegetables#TriCounty Produce
-Pechay#Pechvege8Pq8Eo#0.36#141#vegetables#Off the Vine
-Sigarilyas#SigavegeMJrtlV#0.88#335#vegetables#The Pantry
-Sigarilyas#SigavegeLhsoOB#0.87#768#vegetables#TriCounty Produce
-Sigarilyas#SigavegeS6RJcA#0.93#356#vegetables#Off the Vine
-Sitaw#Sitavege0hMi9z#0.65#153#vegetables#The Pantry
-Sitaw#Sitavegeez1g6N#0.67#561#vegetables#TriCounty Produce
-Sitaw#Sitavege0BCNeF#0.66#674#vegetables#Off the Vine
-Talong#TalovegevZjVK6#0.10#530#vegetables#The Pantry
-Talong#TalovegexX4MRw#0.09#305#vegetables#TriCounty Produce
-Talong#TalovegeO3U2ze#0.10#126#vegetables#Off the Vine
-Toge#TogevegeYelJUw#0.54#449#vegetables#The Pantry
-Toge#Togevegeilr1xK#0.54#274#vegetables#TriCounty Produce
-Toge#Togevegesvjnyn#0.51#316#vegetables#Off the Vine
-Ube#UbevegeoPnxvb#0.56#397#vegetables#The Pantry
-Ube#Ubevege2CNyve#0.55#450#vegetables#TriCounty Produce
-Ube#UbevegeC43sVj#0.55#263#vegetables#Off the Vine
-Upo#UpovegecOGRqC#0.22#404#vegetables#The Pantry
-Upo#Upovegekjl2wl#0.22#541#vegetables#TriCounty Produce
-Upo#UpovegemTTTwI#0.23#459#vegetables#Off the Vine
-Edamame#EdamvegeVYtk8z#0.79#296#vegetables#The Pantry
-Edamame#Edamvege608vXi#0.78#700#vegetables#TriCounty Produce
-Edamame#Edamvege1jiqGY#0.75#115#vegetables#Off the Vine
-Hairy melon#HairvegeFYFHIw#0.71#789#vegetables#The Pantry
-Hairy melon#HairvegeS7AAqI#0.72#302#vegetables#TriCounty Produce
-Hairy melon#HairvegeO6WJHL#0.72#444#vegetables#Off the Vine
-Burdock#BurdvegeyLstLV#0.56#761#vegetables#The Pantry
-Burdock#BurdvegeZsqAjT#0.56#582#vegetables#TriCounty Produce
-Burdock#BurdvegeycF7mo#0.55#566#vegetables#Off the Vine
-Snake gourd#SnakvegesfHGvt#0.92#626#vegetables#The Pantry
-Snake gourd#SnakvegedlNiBk#0.92#669#vegetables#TriCounty Produce
-Snake gourd#Snakvegec5n1UM#0.92#143#vegetables#Off the Vine
-Wasabi#Wasavege5P5pZp#0.67#751#vegetables#The Pantry
-Wasabi#Wasavege6EEE9r#0.68#559#vegetables#TriCounty Produce
-Wasabi#Wasavege1ve7TY#0.65#61#vegetables#Off the Vine
-Yam#YamvegeRN9ONH#0.57#438#vegetables#The Pantry
-Yam#YamvegeWjdzeA#0.56#564#vegetables#TriCounty Produce
-Yam#YamvegeI1AnyI#0.56#456#vegetables#Off the Vine
-Apple Fritters#AppldessDj96hw#6.12#16#desserts#Mom's Kitchen
-Apple Fritters#AppldessrN1kvM#6.06#7#desserts#The Baking Pan
-Banana Split#Banadess7tpjkJ#10.86#10#desserts#Mom's Kitchen
-Banana Split#Banadessfif758#11.07#14#desserts#The Baking Pan
-Blueberry Boy Bait#BluedesseX2LVU#3.72#16#desserts#Mom's Kitchen
-Blueberry Boy Bait#Bluedess9zLhaH#3.93#9#desserts#The Baking Pan
-Candied Cranberries#CanddessjW92p3#1.77#9#desserts#Mom's Kitchen
-Candied Cranberries#CanddesskhtVoQ#1.72#0#desserts#The Baking Pan
-Daiquiri Souffle#DaiqdessebnYcy#9.54#15#desserts#Mom's Kitchen
-Daiquiri Souffle#DaiqdessfM1DnX#9.72#6#desserts#The Baking Pan
-Bananas Flambe#BanadesscczumD#6.94#12#desserts#Mom's Kitchen
-Bananas Flambe#Banadess8qNfxd#7.07#16#desserts#The Baking Pan
-Pie, Apple#Pie,desshcSHhT#7.88#11#desserts#Mom's Kitchen
-Pie, Apple#Pie,dessTbiwDp#7.88#15#desserts#The Baking Pan
-Pie, Pumpkin#Pie,desswhPBPB#6.00#20#desserts#Mom's Kitchen
-Pie, Pumpkin#Pie,dessDg3NWl#6.24#19#desserts#The Baking Pan
-Pie, Blueberry#Pie,dessw9VdgD#2.14#3#desserts#Mom's Kitchen
-Pie, Blueberry#Pie,dessiSjZKD#2.12#1#desserts#The Baking Pan
-Pie, Pecan#Pie,dess2NqhNR#12.70#20#desserts#Mom's Kitchen
-Pie, Pecan#Pie,dessB1LfcE#12.33#12#desserts#The Baking Pan
-Pie, Cranberry Apple#Pie,dess1mL7IS#10.16#7#desserts#Mom's Kitchen
-Pie, Cranberry Apple#Pie,dessmDhkUA#10.16#11#desserts#The Baking Pan
-Pie, Banana Cream#Pie,dessH80DuG#7.35#6#desserts#Mom's Kitchen
-Pie, Banana Cream#Pie,dessf1YvFb#7.08#11#desserts#The Baking Pan
-Pie, Key Lime#Pie,desshtli5N#4.85#2#desserts#Mom's Kitchen
-Pie, Key Lime#Pie,dessMwQkKm#5.13#1#desserts#The Baking Pan
-Pie, Lemon Meringue#Pie,dess9naVkX#3.74#7#desserts#Mom's Kitchen
-Pie, Lemon Meringue#Pie,dessKYcNML#3.67#5#desserts#The Baking Pan
-Pie, Caramel#Pie,dessSUuiIU#2.27#9#desserts#Mom's Kitchen
-Pie, Caramel#Pie,dessvo8uHh#2.33#4#desserts#The Baking Pan
-Pie, Raspberry#Pie,dessUHhMlS#2.36#0#desserts#Mom's Kitchen
-Pie, Raspberry#Pie,dessJflbf5#2.36#2#desserts#The Baking Pan
-Ice Cream, Chocolate#Ice desseXuyxx#1.44#9#desserts#Mom's Kitchen
-Ice Cream, Chocolate#Ice dessASBohf#1.41#13#desserts#The Baking Pan
-Ice Cream, Vanilla#Ice dessYnzbbt#11.92#19#desserts#Mom's Kitchen
-Ice Cream, Vanilla#Ice dessUBBKp8#11.58#10#desserts#The Baking Pan
-Ice Cream, Strawberry#Ice dessfTwKhD#1.90#14#desserts#Mom's Kitchen
-Ice Cream, Strawberry#Ice dessaO9Fxf#1.99#6#desserts#The Baking Pan
-Ice Cream, Rocky Road#Ice dessyIri3P#13.10#20#desserts#Mom's Kitchen
-Ice Cream, Rocky Road#Ice dessZuLr8F#13.48#13#desserts#The Baking Pan
-Ice Cream, Mint Chocolate Chip#Ice dessV1IGG7#5.75#4#desserts#Mom's Kitchen
-Ice Cream, Mint Chocolate Chip#Ice dessX1gEQ4#5.64#1#desserts#The Baking Pan
-Ice Cream Sundae#Ice dessbhlAXt#5.62#11#desserts#Mom's Kitchen
-Ice Cream Sundae#Ice dessByapxl#5.72#16#desserts#The Baking Pan
-Cobbler, Peach#CobbdessYUGeOB#10.14#20#desserts#Mom's Kitchen
-Cobbler, Peach#CobbdessXfEtUK#10.43#16#desserts#The Baking Pan
-Cobbler, Berry-Pecan#Cobbdessx3htak#5.36#12#desserts#Mom's Kitchen
-Cobbler, Berry-Pecan#Cobbdesse4FUVI#5.41#8#desserts#The Baking Pan
-Cobbler, Blueberry#CobbdessbiI0oF#3.78#11#desserts#Mom's Kitchen
-Cobbler, Blueberry#CobbdessMXxbBN#3.57#2#desserts#The Baking Pan
-Cobbler, Cherry#CobbdessNSa8QW#12.58#0#desserts#Mom's Kitchen
-Cobbler, Cherry#CobbdessA1dADa#12.10#10#desserts#The Baking Pan
-Cobbler, Huckleberry#Cobbdess3t6O8d#3.99#18#desserts#Mom's Kitchen
-Cobbler, Huckleberry#CobbdessGI9euK#3.88#0#desserts#The Baking Pan
-Cobbler, Rhubarb#Cobbdess22X40Z#9.54#0#desserts#Mom's Kitchen
-Cobbler, Rhubarb#CobbdessPfnCT0#9.27#18#desserts#The Baking Pan
-Cobbler, Strawberry#CobbdessI78188#12.43#0#desserts#Mom's Kitchen
-Cobbler, Strawberry#CobbdessH3LdgQ#12.20#3#desserts#The Baking Pan
-Cobbler, Zucchini#Cobbdess5rK4dP#11.24#3#desserts#Mom's Kitchen
-Cobbler, Zucchini#Cobbdess4Ez8kS#10.51#10#desserts#The Baking Pan
-Brownies#BrowdessmogdTl#7.62#9#desserts#Mom's Kitchen
-Brownies#Browdess84Qc1z#7.55#9#desserts#The Baking Pan
-Fudge Bar#Fudgdess8iXSyf#11.72#6#desserts#Mom's Kitchen
-Fudge Bar#FudgdessakU1Id#12.29#5#desserts#The Baking Pan
-Cookies, Oatmeal#Cookdessnq9Oya#2.84#15#desserts#Mom's Kitchen
-Cookies, Oatmeal#CookdessBhgp7p#2.68#10#desserts#The Baking Pan
-Cookies, Chocolate Chip#CookdessRVszsZ#12.73#17#desserts#Mom's Kitchen
-Cookies, Chocolate Chip#CookdessSOoHmT#12.26#19#desserts#The Baking Pan
-Cookies, Peanut Butter#Cookdess2UcMI2#7.82#5#desserts#Mom's Kitchen
-Cookies, Peanut Butter#Cookdess1cILme#7.46#20#desserts#The Baking Pan
-Mousse, Chocolate#MousdessDpN4sQ#6.25#20#desserts#Mom's Kitchen
-Mousse, Chocolate#Mousdess8FyFT8#5.96#1#desserts#The Baking Pan
-Mousse, Blueberry Maple#MousdessacwrkO#7.28#7#desserts#Mom's Kitchen
-Mousse, Blueberry Maple#MousdessbiCMFg#7.21#12#desserts#The Baking Pan
-Mousse, Chocolate Banana#MousdessIeW4qz#5.13#2#desserts#Mom's Kitchen
-Mousse, Chocolate Banana#Mousdess1De9oL#5.08#19#desserts#The Baking Pan
-Mousse, Cherry#Mousdesss1bF8H#13.05#20#desserts#Mom's Kitchen
-Mousse, Cherry#Mousdess0ujevx#12.43#1#desserts#The Baking Pan
-Mousse, Eggnog#MousdessZ38hXj#9.07#10#desserts#Mom's Kitchen
-Mousse, Eggnog#Mousdesshs05ST#8.81#8#desserts#The Baking Pan
-Mousse, Strawberry#MousdessHCDlBK#5.58#3#desserts#Mom's Kitchen
-Mousse, Strawberry#MousdessSZ4PyW#5.36#6#desserts#The Baking Pan
-Sherbet, Cantaloupe#Sherdess3DCxUg#3.11#9#desserts#Mom's Kitchen
-Sherbet, Cantaloupe#Sherdesscp2VIz#2.99#7#desserts#The Baking Pan
-Sherbet, Lemon Milk#Sherdess1JVFOS#7.57#9#desserts#Mom's Kitchen
-Sherbet, Lemon Milk#SherdessC865vu#7.57#0#desserts#The Baking Pan
-Sherbet, Orange Crush#Sherdess8W8Mb9#4.32#18#desserts#Mom's Kitchen
-Sherbet, Orange Crush#SherdessxmVJBF#4.16#10#desserts#The Baking Pan
-Sherbet, Blueberry#SherdessFAgxqp#3.46#9#desserts#Mom's Kitchen
-Sherbet, Blueberry#SherdessMPL87u#3.60#6#desserts#The Baking Pan
-Sherbet, Raspberry#Sherdesse86ugA#6.08#1#desserts#Mom's Kitchen
-Sherbet, Raspberry#Sherdesslc1etR#5.85#12#desserts#The Baking Pan
-Sherbet, Strawberry#SherdessFwv09m#4.63#17#desserts#Mom's Kitchen
-Sherbet, Strawberry#SherdessKB0H7q#4.81#20#desserts#The Baking Pan
-Tart, Apple#TartdessrsTyXA#3.35#18#desserts#Mom's Kitchen
-Tart, Apple#Tartdessp7pyiy#3.13#11#desserts#The Baking Pan
-Tart, Almond#TartdessC7FARL#6.62#10#desserts#Mom's Kitchen
-Tart, Almond#Tartdess1V1A1c#6.68#13#desserts#The Baking Pan
-Tart, Blueberry#TartdesssQZRXX#10.28#10#desserts#Mom's Kitchen
-Tart, Blueberry#TartdessUSJSuc#10.28#9#desserts#The Baking Pan
-Tart, Chocolate-Pear#Tartdess2pdOE4#5.67#17#desserts#Mom's Kitchen
-Tart, Chocolate-Pear#TartdessL3aEDd#5.51#9#desserts#The Baking Pan
-Tart, Lemon Fudge#Tartdess9DhZUT#3.88#3#desserts#Mom's Kitchen
-Tart, Lemon Fudge#TartdesshzLOWt#3.96#13#desserts#The Baking Pan
-Tart, Pecan#TartdessvSbXzd#11.80#3#desserts#Mom's Kitchen
-Tart, Pecan#Tartdess6YXJec#11.04#13#desserts#The Baking Pan
-Tart, Pineapple#TartdesseMfJFe#9.01#18#desserts#Mom's Kitchen
-Tart, Pineapple#TartdessA2Wftr#8.44#13#desserts#The Baking Pan
-Tart, Pear#Tartdess4a1BUc#10.09#2#desserts#Mom's Kitchen
-Tart, Pear#TartdessNw8YPG#10.68#5#desserts#The Baking Pan
-Tart, Raspberry#TartdessAVnpP6#6.18#7#desserts#Mom's Kitchen
-Tart, Raspberry#TartdessfVxZFf#5.95#9#desserts#The Baking Pan
-Tart, Strawberry#Tartdess4IUcZW#4.75#8#desserts#Mom's Kitchen
-Tart, Strawberry#Tartdess2BeEDb#4.61#17#desserts#The Baking Pan
-Tart, Raspberry#TartdesshyBd24#1.85#5#desserts#Mom's Kitchen
-Tart, Raspberry#Tartdess5fqxgy#1.94#20#desserts#The Baking Pan
-Trifle, Berry#TrifdessmEkbU2#12.48#19#desserts#Mom's Kitchen
-Trifle, Berry#TrifdessAV9Ix8#12.60#18#desserts#The Baking Pan
-Trifle, American#TrifdesscsdSCd#4.70#17#desserts#Mom's Kitchen
-Trifle, American#TrifdessTArskm#4.35#11#desserts#The Baking Pan
-Trifle, English#TrifdessX87q8T#8.20#9#desserts#Mom's Kitchen
-Trifle, English#Trifdess52l955#8.12#11#desserts#The Baking Pan
-Trifle, Orange#TrifdesslUwxwe#9.74#15#desserts#Mom's Kitchen
-Trifle, Orange#TrifdessFrfCHP#10.22#1#desserts#The Baking Pan
-Trifle, Pumpkin#TrifdessJKFN96#4.72#7#desserts#Mom's Kitchen
-Trifle, Pumpkin#TrifdessMNw4EV#4.95#16#desserts#The Baking Pan
-Trifle, Scottish#TrifdessFa0JdK#13.63#0#desserts#Mom's Kitchen
-Trifle, Scottish#TrifdessAAUQCN#14.03#6#desserts#The Baking Pan
-Trifle, Sherry#TrifdesscuttJg#4.42#5#desserts#Mom's Kitchen
-Trifle, Sherry#TrifdesspRGpfP#4.21#19#desserts#The Baking Pan
-Trifle, Strawberry#TrifdessAd5TpV#3.58#11#desserts#Mom's Kitchen
-Trifle, Strawberry#Trifdess1rtW0A#3.58#3#desserts#The Baking Pan
-Trifle, Scotch Whiskey#Trifdess2zJsGi#5.44#5#desserts#Mom's Kitchen
-Trifle, Scotch Whiskey#TrifdessL8nuI6#5.18#5#desserts#The Baking Pan
-Cheesecake, Amaretto#CheedessOJBqfD#11.89#5#desserts#Mom's Kitchen
-Cheesecake, Amaretto#CheedessVnDf14#11.89#9#desserts#The Baking Pan
-Cheesecake, Apple#Cheedessuks1YK#11.22#15#desserts#Mom's Kitchen
-Cheesecake, Apple#CheedessMYKaKK#11.01#14#desserts#The Baking Pan
-Cheesecake, Apricot#CheedessKUxTYY#12.34#16#desserts#Mom's Kitchen
-Cheesecake, Apricot#CheedessMvB1pr#11.88#18#desserts#The Baking Pan
-Cheesecake, Australian#CheedessQ9WAIn#2.70#9#desserts#Mom's Kitchen
-Cheesecake, Australian#CheedessE6Jyjc#2.53#14#desserts#The Baking Pan
-Cheesecake, Arkansas#CheedessTbqzmw#6.98#9#desserts#Mom's Kitchen
-Cheesecake, Arkansas#CheedesstWJZfC#6.66#5#desserts#The Baking Pan
-Cheesecake, Blueberry#Cheedessyo51KL#8.07#11#desserts#Mom's Kitchen
-Cheesecake, Blueberry#Cheedess4Hz7P4#8.62#5#desserts#The Baking Pan
-Cheesecake, Cherry#CheedessEahRkC#4.40#14#desserts#Mom's Kitchen
-Cheesecake, Cherry#Cheedess3Nx4jZ#4.65#3#desserts#The Baking Pan
-Cheesecake, Cran-Raspberry#CheedessrJsr9i#13.47#20#desserts#Mom's Kitchen
-Cheesecake, Cran-Raspberry#CheedesshcuXCy#14.00#6#desserts#The Baking Pan
-Cheesecake, German Chocolate#CheedesswayvJL#12.03#16#desserts#Mom's Kitchen
-Cheesecake, German Chocolate#CheedessebTAeB#11.58#0#desserts#The Baking Pan
-Cheesecake, Turtle#CheedessLqgeIA#12.19#6#desserts#Mom's Kitchen
-Cheesecake, Turtle#CheedessvyNohA#12.07#19#desserts#The Baking Pan
-Brownies, Apple#BrowdessIDW1Cc#5.44#12#desserts#Mom's Kitchen
-Brownies, Apple#BrowdessyRMrAH#5.14#12#desserts#The Baking Pan
-Brownies, Fudge#BrowdessmIHIFJ#5.19#8#desserts#Mom's Kitchen
-Brownies, Fudge#BrowdessqewJ38#5.10#17#desserts#The Baking Pan
-Brownies, Almond Macaroon#BrowdessniK7QI#10.57#3#desserts#Mom's Kitchen
-Brownies, Almond Macaroon#BrowdessgkXURH#10.36#17#desserts#The Baking Pan
-Brownies, Butterscotch#BrowdesslpA06E#7.16#13#desserts#Mom's Kitchen
-Brownies, Butterscotch#BrowdessK5hofE#7.30#6#desserts#The Baking Pan
-Brownies, Caramel#BrowdessVGfoA8#3.07#3#desserts#Mom's Kitchen
-Brownies, Caramel#Browdess5jvVMM#3.13#11#desserts#The Baking Pan
-Brownies, Cherry#Browdessyoa66A#3.39#17#desserts#Mom's Kitchen
-Brownies, Cherry#BrowdessIg2JuF#3.39#11#desserts#The Baking Pan
-Brownies, Chocolate Chip#Browdessb9dc59#6.18#10#desserts#Mom's Kitchen
-Brownies, Chocolate Chip#BrowdessvW4nOx#6.43#14#desserts#The Baking Pan
-Brownies, Coconut#BrowdessWPHrVR#3.06#15#desserts#Mom's Kitchen
-Brownies, Coconut#BrowdessGVBlML#2.86#11#desserts#The Baking Pan
-Brownies, Cream Cheese#Browdess1OyRay#12.74#4#desserts#Mom's Kitchen
-Brownies, Cream Cheese#Browdess2fRsNv#12.61#19#desserts#The Baking Pan
-Brownies, Fudge Mint#Browdessl7DP7k#11.45#14#desserts#Mom's Kitchen
-Brownies, Fudge Mint#Browdessv70VKQ#11.34#16#desserts#The Baking Pan
-Brownies, Mint Chip#BrowdessDDMvF7#1.81#15#desserts#Mom's Kitchen
-Brownies, Mint Chip#Browdess0j9PBD#1.84#9#desserts#The Baking Pan
-Cake, Angel Food#CakedessEaqGaE#11.18#3#desserts#Mom's Kitchen
-Cake, Angel Food#CakedessJyAyFe#11.18#14#desserts#The Baking Pan
-Cake, Chocolate#CakedessKLXFbn#10.11#7#desserts#Mom's Kitchen
-Cake, Chocolate#CakedessfNP5Hg#9.91#14#desserts#The Baking Pan
-Cake, Carrot#CakedessUTgMoV#4.20#13#desserts#Mom's Kitchen
-Cake, Carrot#CakedessQdkaYg#4.00#3#desserts#The Baking Pan
-Cake, Lemon Blueberry#CakedessepkeEW#11.73#16#desserts#Mom's Kitchen
-Cake, Lemon Blueberry#CakedessHTKyQs#12.42#16#desserts#The Baking Pan
-Cake Triple Fudge#CakedessiZ75lR#7.92#7#desserts#Mom's Kitchen
-Cake Triple Fudge#CakedessWRrSXP#8.00#15#desserts#The Baking Pan
-Cake, Walnut#CakedessveYVXZ#10.83#17#desserts#Mom's Kitchen
-Cake, Walnut#Cakedesse22rT5#11.04#7#desserts#The Baking Pan
-Cake, French Apple#CakedessjA2Kxv#1.95#0#desserts#Mom's Kitchen
-Cake, French Apple#CakedessNBHCk0#1.86#20#desserts#The Baking Pan
-Cake, Fig#CakedessOncX4y#6.82#3#desserts#Mom's Kitchen
-Cake, Fig#CakedessTJtffn#7.08#10#desserts#The Baking Pan
-Cake, Maple#CakedessnoGPRF#3.04#11#desserts#Mom's Kitchen
-Cake, Maple#CakedessfVattM#3.22#4#desserts#The Baking Pan
-Cake, Devil's Food#CakedessiXcDCt#4.73#7#desserts#Mom's Kitchen
-Cake, Devil's Food#CakedessnBZk45#4.82#6#desserts#The Baking Pan
-Cake, Double-Lemon#CakedesskeS0Vd#3.46#9#desserts#Mom's Kitchen
-Cake, Double-Lemon#Cakedess50vx53#3.60#6#desserts#The Baking Pan
-Sorbet, Blackberry#SorbdessQoa0CE#9.88#15#desserts#Mom's Kitchen
-Sorbet, Blackberry#SorbdessqoOYzv#9.78#9#desserts#The Baking Pan
diff --git a/db/examples_java/src/com/sleepycat/examples/db/GettingStarted/vendors.txt b/db/examples_java/src/com/sleepycat/examples/db/GettingStarted/vendors.txt
deleted file mode 100644
index 528e1b110..000000000
--- a/db/examples_java/src/com/sleepycat/examples/db/GettingStarted/vendors.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-TriCounty Produce#309 S. Main Street#Middle Town#MN#55432#763 555 5761#Mort Dufresne#763 555 5765
-Simply Fresh#15612 Bogart Lane#Harrigan#WI#53704#420 333 3912#Cheryl Swedberg#420 333 3952
-Off the Vine#133 American Ct.#Centennial#IA#52002#563 121 3800#Bob King#563 121 3800 x54
-The Pantry#1206 N. Creek Way#Middle Town#MN#55432#763 555 3391#Sully Beckstrom#763 555 3391
-Mom's Kitchen#53 Yerman Ct.#Middle Town#MN#55432#763 554 9200#Maggie Kultgen#763 554 9200 x12
-The Baking Pan#1415 53rd Ave.#Dutchin#MN#56304#320 442 2277#Mike Roan#320 442 6879
diff --git a/db/examples_java/src/com/sleepycat/examples/db/LockExample.java b/db/examples_java/src/com/sleepycat/examples/db/LockExample.java
deleted file mode 100644
index a9cf338d1..000000000
--- a/db/examples_java/src/com/sleepycat/examples/db/LockExample.java
+++ /dev/null
@@ -1,212 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: LockExample.java,v 11.14 2004/04/06 20:43:35 mjc Exp $
- */
-
-package com.sleepycat.examples.db;
-
-import com.sleepycat.db.*;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.InputStreamReader;
-import java.io.IOException;
-import java.io.PrintStream;
-import java.util.Vector;
-
-//
-// An example of a program using Lock and related classes.
-//
-class LockExample {
- private static final String progname = "LockExample";
- private static final File LOCK_HOME = new File("TESTDIR");
- Environment dbenv;
-
- public LockExample(File home, int maxlocks, boolean do_unlink)
- throws DatabaseException, FileNotFoundException {
-
- if (do_unlink) {
- Environment.remove(home, true, null);
- }
-
- EnvironmentConfig config = new EnvironmentConfig();
- config.setErrorStream(System.err);
- config.setErrorPrefix("LockExample");
- config.setMaxLocks(maxlocks);
- config.setAllowCreate(true);
- config.setInitializeLocking(true);
- dbenv = new Environment(home, config);
- }
-
- public void close() throws DatabaseException {
- dbenv.close();
- }
-
- // Prompts for a line, and keeps prompting until a non blank
- // line is returned. Returns null on erroror.
- //
- public static String askForLine(InputStreamReader reader,
- PrintStream out, String prompt) {
- String result = "";
- while (result != null && result.length() == 0) {
- out.print(prompt);
- out.flush();
- result = getLine(reader);
- }
- return result;
- }
-
- // Not terroribly efficient, but does the job.
- // Works for reading a line from stdin or a file.
- // Returns null on EOF. If EOF appears in the middle
- // of a line, returns that line, then null on next call.
- //
- public static String getLine(InputStreamReader reader) {
- StringBuffer b = new StringBuffer();
- int c;
- try {
- while ((c = reader.read()) != -1 && c != '\n')
- if (c != '\r')
- b.append((char)c);
- } catch (IOException ioe) {
- c = -1;
- }
-
- if (c == -1 && b.length() == 0)
- return null;
- else
- return b.toString();
- }
-
- public void run() throws DatabaseException {
- long held;
- int len = 0, locker;
- int ret;
- boolean did_get = false;
- int lockid = 0;
- InputStreamReader in = new InputStreamReader(System.in);
- Vector locks = new Vector();
-
- //
- // Accept lock requests.
- //
- locker = dbenv.createLockerID();
- for (held = 0;;) {
- String opbuf = askForLine(in, System.out,
- "Operation get/release [get]> ");
- if (opbuf == null)
- break;
-
- try {
- if (opbuf.equals("get")) {
- // Acquire a lock.
- String objbuf = askForLine(in, System.out,
- "input object (text string) to lock> ");
- if (objbuf == null)
- break;
-
- String lockbuf;
- do {
- lockbuf = askForLine(in, System.out,
- "lock type read/write [read]> ");
- if (lockbuf == null)
- break;
- len = lockbuf.length();
- } while (len >= 1 &&
- !lockbuf.equals("read") &&
- !lockbuf.equals("write"));
-
- LockRequestMode lock_type;
- if (len <= 1 || lockbuf.equals("read"))
- lock_type = LockRequestMode.READ;
- else
- lock_type = LockRequestMode.WRITE;
-
- DatabaseEntry entry = new DatabaseEntry(objbuf.getBytes());
-
- Lock lock;
- did_get = true;
- lock = dbenv.getLock(locker, true, entry, lock_type);
- lockid = locks.size();
- locks.addElement(lock);
- } else {
- // Release a lock.
- String objbuf;
- objbuf = askForLine(in, System.out,
- "input lock to release> ");
- if (objbuf == null)
- break;
-
- lockid = Integer.parseInt(objbuf, 16);
- if (lockid < 0 || lockid >= locks.size()) {
- System.out.println("Lock #" + lockid + " out of range");
- continue;
- }
- did_get = false;
- Lock lock = (Lock)locks.elementAt(lockid);
- dbenv.putLock(lock);
- }
- System.out.println("Lock #" + lockid + " " +
- (did_get ? "granted" : "released"));
- held += did_get ? 1 : -1;
- } catch (LockNotGrantedException lnge) {
- System.err.println("Lock not granted");
- } catch (DeadlockException de) {
- System.err.println("LockExample: lock_" +
- (did_get ? "get" : "put") +
- ": returned DEADLOCK");
- } catch (DatabaseException dbe) {
- System.err.println("LockExample: lock_get: " + dbe.toString());
- }
- }
- System.out.println();
- System.out.println("Closing lock region " + String.valueOf(held) +
- " locks held");
- }
-
- private static void usage() {
- System.err.println("usage: LockExample [-u] [-h home] [-m maxlocks]");
- System.exit(1);
- }
-
- public static void main(String[] argv) {
- File home = LOCK_HOME;
- boolean do_unlink = false;
- int maxlocks = 0;
-
- for (int i = 0; i < argv.length; ++i) {
- if (argv[i].equals("-h")) {
- if (++i >= argv.length)
- usage();
- home = new File(argv[i]);
- } else if (argv[i].equals("-m")) {
- if (++i >= argv.length)
- usage();
-
- try {
- maxlocks = Integer.parseInt(argv[i]);
- } catch (NumberFormatException nfe) {
- usage();
- }
- } else if (argv[i].equals("-u")) {
- do_unlink = true;
- } else {
- usage();
- }
- }
-
- try {
- LockExample app = new LockExample(home, maxlocks, do_unlink);
- app.run();
- app.close();
- } catch (DatabaseException dbe) {
- System.err.println(progname + ": " + dbe.toString());
- } catch (Throwable t) {
- System.err.println(progname + ": " + t.toString());
- }
- System.out.println("LockExample completed");
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/db/RPCExample.java b/db/examples_java/src/com/sleepycat/examples/db/RPCExample.java
deleted file mode 100644
index af2ba7ddf..000000000
--- a/db/examples_java/src/com/sleepycat/examples/db/RPCExample.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: RPCExample.java,v 1.1 2004/09/23 17:54:26 mjc Exp $
- */
-
-package com.sleepycat.examples.db;
-
-import com.sleepycat.db.*;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.OutputStream;
-
-/*
- * An example of a program configuring a database environment as an RPC client.
- */
-public class RPCExample {
- private static final String progname = "RPCExample";
- private static final File DATABASE_HOME = new File("TESTDIR");
-
- private static void runApplication(Environment dbenv)
- throws DatabaseException, FileNotFoundException {
-
- // Do something interesting...
- // Your application goes here.
- DatabaseConfig config = new DatabaseConfig();
- config.setAllowCreate(true);
- config.setType(DatabaseType.BTREE);
- Database db = dbenv.openDatabase(null, "test.db", null, config);
- db.close();
- }
-
- private static void setupEnvironment(File home,
- OutputStream errs)
- throws DatabaseException, FileNotFoundException {
-
- // Create an environment object and initialize it for error reporting.
- EnvironmentConfig config = new EnvironmentConfig();
- config.setErrorStream(errs);
- config.setErrorPrefix(progname);
-
- //
- // We want to specify the shared memory buffer pool cachesize,
- // but everything else is the default.
- //
- config.setCacheSize(64 * 1024);
-
- // Open the environment with full transactional support.
- config.setAllowCreate(true);
- config.setInitializeCache(true);
- config.setTransactional(true);
- config.setInitializeLocking(true);
-
- config.setRPCServer("localhost", 0, 0);
-
- //
- // open is declared to throw a FileNotFoundException, which normally
- // shouldn't occur when allowCreate is set.
- //
- Environment dbenv = new Environment(home, config);
-
- try {
- // Start your application.
- runApplication(dbenv);
- } finally {
- // Close the environment. Doing this in the finally block ensures
- // it is done, even if an error is thrown.
- dbenv.close();
- }
- }
-
- private static void teardownEnvironment(File home,
- OutputStream errs)
- throws DatabaseException, FileNotFoundException {
-
- // Remove the shared database regions.
- EnvironmentConfig config = new EnvironmentConfig();
-
- config.setErrorStream(errs);
- config.setErrorPrefix(progname);
- config.setRPCServer("localhost", 0, 0);
- Environment.remove(home, true, config);
- }
-
- public static void main(String[] args) {
- File home = DATABASE_HOME;
-
- try {
- System.out.println("Setup env");
- setupEnvironment(home, System.err);
-
- System.out.println("Teardown env");
- teardownEnvironment(home, System.err);
- } catch (DatabaseException dbe) {
- System.err.println(progname + ": environment open: " + dbe.toString());
- dbe.printStackTrace(System.err);
- System.exit (1);
- } catch (FileNotFoundException fnfe) {
- System.err.println(progname + ": unexpected open environment error " + fnfe);
- System.exit (1);
- }
- }
-
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/db/SequenceExample.java b/db/examples_java/src/com/sleepycat/examples/db/SequenceExample.java
deleted file mode 100644
index 6e430c434..000000000
--- a/db/examples_java/src/com/sleepycat/examples/db/SequenceExample.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: SequenceExample.java,v 1.1 2004/09/22 22:20:32 mjc Exp $
- */
-
-package com.sleepycat.examples.db;
-
-import com.sleepycat.db.*;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.PrintStream;
-
-class SequenceExample {
- private static final int EXIT_SUCCESS = 0;
- private static final int EXIT_FAILURE = 1;
-
- public SequenceExample() {
- }
-
- public static void usage() {
- System.out.println("usage: java " +
- "com.sleepycat.examples.db.SequenceExample [-r] [database]\n");
- System.exit(EXIT_FAILURE);
- }
-
- public static void main(String[] argv) {
- boolean removeExistingDatabase = false;
- String databaseName = "access.db";
-
- for (int i = 0; i < argv.length; i++) {
- if (argv[i].equals("-r"))
- removeExistingDatabase = true;
- else if (argv[i].equals("-?"))
- usage();
- else if (argv[i].startsWith("-"))
- usage();
- else {
- if ((argv.length - i) != 1)
- usage();
- databaseName = argv[i];
- break;
- }
- }
-
- try {
- SequenceExample app = new SequenceExample();
- app.run(removeExistingDatabase, databaseName);
- } catch (DatabaseException dbe) {
- System.err.println("SequenceExample: " + dbe.toString());
- System.exit(EXIT_FAILURE);
- } catch (FileNotFoundException fnfe) {
- System.err.println("SequenceExample: " + fnfe.toString());
- System.exit(EXIT_FAILURE);
- }
- System.exit(EXIT_SUCCESS);
- }
-
- public void run(boolean removeExistingDatabase, String databaseName)
- throws DatabaseException, FileNotFoundException {
-
- // Remove the previous database.
- if (removeExistingDatabase)
- new File(databaseName).delete();
-
- // Create the database object.
- // There is no environment for this simple example.
- DatabaseConfig dbConfig = new DatabaseConfig();
- dbConfig.setErrorStream(System.err);
- dbConfig.setErrorPrefix("SequenceExample");
- dbConfig.setType(DatabaseType.BTREE);
- dbConfig.setAllowCreate(true);
- Database table = new Database(databaseName, null, dbConfig);
-
- SequenceConfig config = new SequenceConfig();
- config.setAllowCreate(true);
- DatabaseEntry key =
- new DatabaseEntry("my_sequence".getBytes());
- Sequence sequence = table.openSequence(null, key, config);
-
- for (int i = 0; i < 10; i++) {
- long seqnum = sequence.get(null, 1);
- System.out.println("Got sequence number: " + seqnum);
- }
-
- sequence.close();
- table.close();
- }
-}
diff --git a/db/examples_java/src/com/sleepycat/examples/db/TpcbExample.java b/db/examples_java/src/com/sleepycat/examples/db/TpcbExample.java
deleted file mode 100644
index 9935ba808..000000000
--- a/db/examples_java/src/com/sleepycat/examples/db/TpcbExample.java
+++ /dev/null
@@ -1,811 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: TpcbExample.java,v 11.26 2004/04/06 20:43:35 mjc Exp $
- */
-
-package com.sleepycat.examples.db;
-
-import com.sleepycat.db.*;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.math.BigDecimal;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.Random;
-import java.util.GregorianCalendar;
-
-//
-// This program implements a basic TPC/B driver program. To create the
-// TPC/B database, run with the -i (init) flag. The number of records
-// with which to populate the account, history, branch, and teller tables
-// is specified by the a, s, b, and t flags respectively. To run a TPC/B
-// test, use the n flag to indicate a number of transactions to run in
-// each thread and -T to specify the number of threads.
-//
-class TpcbExample {
- public static final int TELLERS_PER_BRANCH = 10;
- public static final int ACCOUNTS_PER_TELLER = 10000;
- public static final int HISTORY_PER_BRANCH = 2592000;
-
- //
- // The default configuration that adheres to TPCB scaling rules requires
- // nearly 3 GB of space. To avoid requiring that much space for testing,
- // we set the parameters much lower. If you want to run a valid 10 TPS
- // configuration, uncomment the VALID_SCALING configuration
- //
-
- // VALID_SCALING configuration
- /*
- public static final int ACCOUNTS = 1000000;
- public static final int BRANCHES = 10;
- public static final int TELLERS = 100;
- public static final int HISTORY = 25920000;
- */
-
- // TINY configuration
- /*
- public static final int ACCOUNTS = 1000;
- public static final int BRANCHES = 10;
- public static final int TELLERS = 100;
- public static final int HISTORY = 10000;
- */
-
- // Default configuration
- public static final int ACCOUNTS = 100000;
- public static final int BRANCHES = 10;
- public static final int TELLERS = 100;
- public static final int HISTORY = 259200;
-
- public static final int HISTORY_LEN = 100;
- public static final int RECLEN = 100;
- public static final int BEGID = 1000000;
-
- // used by random_id()
- public static final int ACCOUNT = 0;
- public static final int BRANCH = 1;
- public static final int TELLER = 2;
-
- public static boolean verbose = false;
- public static final String progname = "TpcbExample"; // Program name.
-
- Environment dbenv;
- int accounts, branches, tellers, history;
-
- public TpcbExample(File home,
- int accounts, int branches, int tellers, int history,
- int cachesize, boolean initializing, boolean noSync)
- throws DatabaseException, FileNotFoundException {
-
- this.accounts = accounts;
- this.branches = branches;
- this.tellers = tellers;
- this.history = history;
-
- EnvironmentConfig config = new EnvironmentConfig();
- config.setErrorStream(System.err);
- config.setErrorPrefix(progname);
- config.setCacheSize(cachesize == 0 ? 4 * 1024 * 1024 : cachesize);
- config.setTxnNoSync(noSync);
- config.setLockDetectMode(LockDetectMode.DEFAULT);
- config.setAllowCreate(true);
-
- config.setInitializeCache(true);
- config.setTransactional(!initializing);
- config.setInitializeLocking(!initializing);
- config.setInitializeLogging(!initializing);
-
- dbenv = new Environment(home, config);
- }
-
- public void close()
- throws DatabaseException {
-
- try {
- if (dbenv != null)
- dbenv.close();
- } finally {
- dbenv = null;
- }
- }
-
- //
- // Initialize the database to the number of accounts, branches,
- // history records, and tellers given to the constructor.
- //
- public void populate() {
- Database dbp = null;
-
- int err;
- int balance, idnum;
- int end_anum, end_bnum, end_tnum;
- int start_anum, start_bnum, start_tnum;
- int h_nelem;
-
- idnum = BEGID;
- balance = 500000;
-
- h_nelem = accounts;
-
- try {
- DatabaseConfig config = new DatabaseConfig();
- config.setType(DatabaseType.HASH);
- config.setHashNumElements(h_nelem);
- config.setAllowCreate(true);
- config.setTruncate(true);
- dbp = dbenv.openDatabase(null, "account", null, config);
- } catch (Exception e1) {
- // can be DatabaseException or FileNotFoundException
- errExit(e1, "Open of account file failed");
- }
-
- start_anum = idnum;
- populateTable(dbp, idnum, balance, h_nelem, "account");
- idnum += h_nelem;
- end_anum = idnum - 1;
- try {
- dbp.close();
- } catch (DatabaseException e2) {
- errExit(e2, "Account file close failed");
- }
-
- if (verbose)
- System.out.println("Populated accounts: " +
- String.valueOf(start_anum) + " - " +
- String.valueOf(end_anum));
-
- //
- // Since the number of branches is very small, we want to use very
- // small pages and only 1 key per page. This is the poor-man's way
- // of getting key locking instead of page locking.
- //
- h_nelem = (int)branches;
-
- try {
- DatabaseConfig config = new DatabaseConfig();
- config.setType(DatabaseType.HASH);
- config.setHashNumElements(h_nelem);
- config.setHashFillFactor(1);
- config.setPageSize(512);
- config.setAllowCreate(true);
- config.setTruncate(true);
- dbp = dbenv.openDatabase(null, "branch", null, config);
- } catch (Exception e3) {
- // can be DatabaseException or FileNotFoundException
- errExit(e3, "Branch file create failed");
- }
-
- start_bnum = idnum;
- populateTable(dbp, idnum, balance, h_nelem, "branch");
- idnum += h_nelem;
- end_bnum = idnum - 1;
-
- try {
- dbp.close();
- } catch (DatabaseException dbe4) {
- errExit(dbe4, "Close of branch file failed");
- }
-
- if (verbose)
- System.out.println("Populated branches: " +
- String.valueOf(start_bnum) + " - " +
- String.valueOf(end_bnum));
-
- //
- // In the case of tellers, we also want small pages, but we'll let
- // the fill factor dynamically adjust itself.
- //
- h_nelem = (int)tellers;
-
- try {
- DatabaseConfig config = new DatabaseConfig();
- config.setType(DatabaseType.HASH);
- config.setHashNumElements(h_nelem);
- config.setHashFillFactor(0);
- config.setPageSize(512);
- config.setAllowCreate(true);
- config.setTruncate(true);
- dbp = dbenv.openDatabase(null, "teller", null, config);
- } catch (Exception e5) {
- // can be DatabaseException or FileNotFoundException
- errExit(e5, "Teller file create failed");
- }
-
- start_tnum = idnum;
- populateTable(dbp, idnum, balance, h_nelem, "teller");
- idnum += h_nelem;
- end_tnum = idnum - 1;
-
- try {
- dbp.close();
- } catch (DatabaseException e6) {
- errExit(e6, "Close of teller file failed");
- }
-
- if (verbose)
- System.out.println("Populated tellers: " +
- String.valueOf(start_tnum) + " - " +
- String.valueOf(end_tnum));
-
- try {
- DatabaseConfig config = new DatabaseConfig();
- config.setType(DatabaseType.RECNO);
- config.setRecordLength(HISTORY_LEN);
- config.setAllowCreate(true);
- config.setTruncate(true);
- dbp = dbenv.openDatabase(null, "history", null, config);
- } catch (Exception e7) {
- // can be DatabaseException or FileNotFoundException
- errExit(e7, "Create of history file failed");
- }
-
- populateHistory(dbp);
-
- try {
- dbp.close();
- } catch (DatabaseException e8) {
- errExit(e8, "Close of history file failed");
- }
- }
-
- public void populateTable(Database dbp,
- int start_id, int balance, int nrecs, String msg) {
- Defrec drec = new Defrec();
-
- DatabaseEntry kdbt = new DatabaseEntry(drec.data);
- kdbt.setSize(4); // sizeof(int)
- DatabaseEntry ddbt = new DatabaseEntry(drec.data);
- ddbt.setSize(drec.data.length); // uses whole array
-
- try {
- for (int i = 0; i < nrecs; i++) {
- kdbt.setRecordNumber(start_id + (int)i);
- drec.set_balance(balance);
- dbp.putNoOverwrite(null, kdbt, ddbt);
- }
- } catch (DatabaseException dbe) {
- System.err.println("Failure initializing " + msg + " file: " +
- dbe.toString());
- System.exit(1);
- }
- }
-
- public void populateHistory(Database dbp) {
- Histrec hrec = new Histrec();
- hrec.set_amount(10);
-
- byte[] arr = new byte[4]; // sizeof(int)
- int i;
- DatabaseEntry kdbt = new DatabaseEntry(arr);
- kdbt.setSize(arr.length);
- DatabaseEntry ddbt = new DatabaseEntry(hrec.data);
- ddbt.setSize(hrec.data.length);
-
- try {
- for (i = 1; i <= history; i++) {
- kdbt.setRecordNumber(i);
-
- hrec.set_aid(random_id(ACCOUNT));
- hrec.set_bid(random_id(BRANCH));
- hrec.set_tid(random_id(TELLER));
-
- dbp.append(null, kdbt, ddbt);
- }
- } catch (DatabaseException dbe) {
- errExit(dbe, "Failure initializing history file");
- }
- }
-
- static Random rand = new Random();
- public static int random_int(int lo, int hi) {
- int t = rand.nextInt();
- if (t < 0)
- t = -t;
- int ret = (int)(((double)t / ((double)(Integer.MAX_VALUE) + 1)) *
- (hi - lo + 1));
- ret += lo;
- return (ret);
- }
-
- public int random_id(int type) {
- int min, max, num;
-
- max = min = BEGID;
- num = accounts;
- switch(type) {
- case TELLER:
- min += branches;
- num = tellers;
- // Fallthrough
- case BRANCH:
- if (type == BRANCH)
- num = branches;
- min += accounts;
- // Fallthrough
- case ACCOUNT:
- max = min + num - 1;
- }
- return (random_int(min, max));
- }
-
- // The byte order is our choice.
- //
- static long get_int_in_array(byte[] array, int offset) {
- return
- ((0xff & array[offset + 0]) << 0) |
- ((0xff & array[offset + 1]) << 8) |
- ((0xff & array[offset + 2]) << 16) |
- ((0xff & array[offset + 3]) << 24);
- }
-
- // Note: Value needs to be long to avoid sign extension
- static void set_int_in_array(byte[] array, int offset, long value) {
- array[offset + 0] = (byte)((value >> 0) & 0xff);
- array[offset + 1] = (byte)((value >> 8) & 0xff);
- array[offset + 2] = (byte)((value >> 16) & 0xff);
- array[offset + 3] = (byte)((value >> 24) & 0xff);
- }
-
- // round 'd' to 'scale' digits, and return result as string
- static String showRounded(double d, int scale) {
- return new BigDecimal(d).
- setScale(scale, BigDecimal.ROUND_HALF_DOWN).toString();
- }
-
- public void run(int ntxns, int threads) {
- double gtps;
- int txns, failed;
- long curtime, starttime;
- TxnThread[] txnList = new TxnThread[threads];
- for (int i = 0; i < threads; i++)
- txnList[i] = new TxnThread("Thread " + String.valueOf(i), ntxns);
-
- starttime = (new Date()).getTime();
- for (int i = 0; i < threads; i++)
- txnList[i].start();
- for (int i = 0; i < threads; i++)
- try {
- txnList[i].join();
- } catch (Exception e1) {
- errExit(e1, "join failed");
- }
-
- curtime = (new Date()).getTime();
- txns = failed = 0;
- for (int i = 0; i < threads; i++) {
- txns += txnList[i].txns;
- failed += txnList[i].failed;
- }
- gtps = (double)(txns - failed) /
- ((curtime - starttime) / 1000.0);
- System.out.print("\nTotal: " +
- String.valueOf(txns) + " txns " +
- String.valueOf(failed) + " failed ");
- System.out.println(showRounded(gtps, 2) + " TPS");
- }
-
- class TxnThread extends Thread {
- private int ntxns; /* Number of txns we were asked to run. */
- public int txns, failed; /* Number that succeeded / failed. */
- private Database adb, bdb, hdb, tdb;
-
- public TxnThread(String name, int ntxns) {
- super(name);
- this.ntxns = ntxns;
- }
-
- public void run() {
- double gtps, itps;
- int n, ifailed, ret;
- long starttime, curtime, lasttime;
-
- //
- // Open the database files.
- //
- int err;
- try {
- DatabaseConfig config = new DatabaseConfig();
- config.setTransactional(true);
- adb = dbenv.openDatabase(null, "account", null, config);
- bdb = dbenv.openDatabase(null, "branch", null, config);
- tdb = dbenv.openDatabase(null, "teller", null, config);
- hdb = dbenv.openDatabase(null, "history", null, config);
- } catch (DatabaseException dbe) {
- TpcbExample.errExit(dbe, "Open of db files failed");
- } catch (FileNotFoundException fnfe) {
- TpcbExample.errExit(fnfe, "Open of db files failed, missing file");
- }
-
- ifailed = 0;
- starttime = (new Date()).getTime();
- lasttime = starttime;
- n = ntxns;
- while (n-- > 0) {
- txns++;
- ret = txn();
- if (ret != 0) {
- failed++;
- ifailed++;
- }
- if (n % 5000 == 0) {
- curtime = (new Date()).getTime();
- gtps = (double)(txns - failed) /
- ((curtime - starttime) / 1000.0);
- itps = (double)(5000 - ifailed) /
- ((curtime - lasttime) / 1000.0);
- System.out.print(getName() + ": " +
- String.valueOf(txns) + " txns " +
- String.valueOf(failed) + " failed ");
- System.out.println(TpcbExample.showRounded(gtps, 2) +
- " TPS (gross) " +
- TpcbExample.this.showRounded(itps, 2) +
- " TPS (interval)");
- lasttime = curtime;
- ifailed = 0;
- }
- }
-
- try {
- adb.close();
- bdb.close();
- tdb.close();
- hdb.close();
- } catch (DatabaseException dbe2) {
- TpcbExample.errExit(dbe2, "Close of db files failed");
- }
-
- System.out.println(getName() + ": " +
- (long)txns + " transactions begun " +
- String.valueOf(failed) + " failed");
-
- }
-
- //
- // XXX Figure out the appropriate way to pick out IDs.
- //
- int txn() {
- Cursor acurs = null;
- Cursor bcurs = null;
- Cursor hcurs = null;
- Cursor tcurs = null;
- Transaction t = null;
-
- Defrec rec = new Defrec();
- Histrec hrec = new Histrec();
- int account, branch, teller;
-
- DatabaseEntry d_dbt = new DatabaseEntry();
- DatabaseEntry d_histdbt = new DatabaseEntry();
- DatabaseEntry k_dbt = new DatabaseEntry();
- DatabaseEntry k_histdbt = new DatabaseEntry();
-
- account = TpcbExample.this.random_id(TpcbExample.ACCOUNT);
- branch = TpcbExample.this.random_id(TpcbExample.BRANCH);
- teller = TpcbExample.this.random_id(TpcbExample.TELLER);
-
- // The history key will not actually be retrieved,
- // but it does need to be set to something.
- byte[] hist_key = new byte[4];
- k_histdbt.setData(hist_key);
- k_histdbt.setSize(4 /* == sizeof(int)*/);
-
- byte[] key_bytes = new byte[4];
- k_dbt.setData(key_bytes);
- k_dbt.setSize(4 /* == sizeof(int)*/);
-
- d_dbt.setData(rec.data);
- d_dbt.setUserBuffer(rec.length(), true);
-
- hrec.set_aid(account);
- hrec.set_bid(branch);
- hrec.set_tid(teller);
- hrec.set_amount(10);
- // Request 0 bytes since we're just positioning.
- d_histdbt.setPartial(0, 0, true);
-
- // START TIMING
-
- try {
- t = dbenv.beginTransaction(null, null);
-
- acurs = adb.openCursor(t, null);
- bcurs = bdb.openCursor(t, null);
- tcurs = tdb.openCursor(t, null);
- hcurs = hdb.openCursor(t, null);
-
- // Account record
- k_dbt.setRecordNumber(account);
- if (acurs.getSearchKey(k_dbt, d_dbt, null) != OperationStatus.SUCCESS)
- throw new Exception("acurs get failed");
- rec.set_balance(rec.get_balance() + 10);
- acurs.putCurrent(d_dbt);
-
- // Branch record
- k_dbt.setRecordNumber(branch);
- if (bcurs.getSearchKey(k_dbt, d_dbt, null) != OperationStatus.SUCCESS)
- throw new Exception("bcurs get failed");
- rec.set_balance(rec.get_balance() + 10);
- bcurs.putCurrent(d_dbt);
-
- // Teller record
- k_dbt.setRecordNumber(teller);
- if (tcurs.getSearchKey(k_dbt, d_dbt, null) != OperationStatus.SUCCESS)
- throw new Exception("ccurs get failed");
- rec.set_balance(rec.get_balance() + 10);
- tcurs.putCurrent(d_dbt);
-
- // History record
- d_histdbt.setPartial(0, 0, false);
- d_histdbt.setData(hrec.data);
- d_histdbt.setUserBuffer(hrec.length(), true);
- if (hdb.append(t, k_histdbt, d_histdbt) != OperationStatus.SUCCESS)
- throw new DatabaseException("put failed");
-
- acurs.close();
- acurs = null;
- bcurs.close();
- bcurs = null;
- tcurs.close();
- tcurs = null;
- hcurs.close();
- hcurs = null;
-
- // null out t in advance; if the commit fails,
- // we don't want to abort it in the catch clause.
- Transaction tmptxn = t;
- t = null;
- tmptxn.commit();
-
- // END TIMING
- return (0);
- } catch (Exception e) {
- try {
- if (acurs != null)
- acurs.close();
- if (bcurs != null)
- bcurs.close();
- if (tcurs != null)
- tcurs.close();
- if (hcurs != null)
- hcurs.close();
- if (t != null)
- t.abort();
- } catch (DatabaseException dbe) {
- // not much we can do here.
- }
-
- if (TpcbExample.this.verbose) {
- System.out.println("Transaction A=" + String.valueOf(account) +
- " B=" + String.valueOf(branch) +
- " T=" + String.valueOf(teller) +
- " failed");
- System.out.println("Reason: " + e.toString());
- }
- return (-1);
- }
- }
- }
-
- private static void usage() {
- System.err.println(
- "usage: TpcbExample [-fiv] [-a accounts] [-b branches]\n" +
- " [-c cachesize] [-h home] [-n transactions]\n" +
- " [-T threads] [-S seed] [-s history] [-t tellers]");
- System.exit(1);
- }
-
- private static void invarg(String str) {
- System.err.println("TpcbExample: invalid argument: " + str);
- System.exit(1);
- }
-
- public static void errExit(Exception err, String s) {
- System.err.print(progname + ": ");
- if (s != null) {
- System.err.print(s + ": ");
- }
- System.err.println(err.toString());
- System.exit(1);
- }
-
- public static void main(String[] argv) throws java.io.IOException {
- File home = new File("TESTDIR");
- int accounts = ACCOUNTS;
- int branches = BRANCHES;
- int tellers = TELLERS;
- int history = HISTORY;
- int threads = 1;
- int mpool = 0;
- int ntxns = 0;
- boolean iflag = false;
- boolean txn_no_sync = false;
- long seed = (new GregorianCalendar()).get(Calendar.SECOND);
-
- for (int i = 0; i < argv.length; ++i) {
- if (argv[i].equals("-a")) {
- // Number of account records
- if ((accounts = Integer.parseInt(argv[++i])) <= 0)
- invarg(argv[i]);
- } else if (argv[i].equals("-b")) {
- // Number of branch records
- if ((branches = Integer.parseInt(argv[++i])) <= 0)
- invarg(argv[i]);
- } else if (argv[i].equals("-c")) {
- // Cachesize in bytes
- if ((mpool = Integer.parseInt(argv[++i])) <= 0)
- invarg(argv[i]);
- } else if (argv[i].equals("-f")) {
- // Fast mode: no txn sync.
- txn_no_sync = true;
- } else if (argv[i].equals("-h")) {
- // DB home.
- home = new File(argv[++i]);
- } else if (argv[i].equals("-i")) {
- // Initialize the test.
- iflag = true;
- } else if (argv[i].equals("-n")) {
- // Number of transactions
- if ((ntxns = Integer.parseInt(argv[++i])) <= 0)
- invarg(argv[i]);
- } else if (argv[i].equals("-S")) {
- // Random number seed.
- seed = Long.parseLong(argv[++i]);
- if (seed <= 0)
- invarg(argv[i]);
- } else if (argv[i].equals("-s")) {
- // Number of history records
- if ((history = Integer.parseInt(argv[++i])) <= 0)
- invarg(argv[i]);
- } else if (argv[i].equals("-T")) {
- // Number of threads
- if ((threads = Integer.parseInt(argv[++i])) <= 0)
- invarg(argv[i]);
- } else if (argv[i].equals("-t")) {
- // Number of teller records
- if ((tellers = Integer.parseInt(argv[++i])) <= 0)
- invarg(argv[i]);
- } else if (argv[i].equals("-v")) {
- // Verbose option.
- verbose = true;
- } else {
- usage();
- }
- }
-
- rand.setSeed((int)seed);
-
- // Initialize the database environment.
- // Must be done in within a try block.
- //
- TpcbExample app = null;
- try {
- app = new TpcbExample(home, accounts, branches, tellers, history,
- mpool, iflag, txn_no_sync);
- } catch (Exception e1) {
- errExit(e1, "initializing environment failed");
- }
-
- if (verbose)
- System.out.println((long)accounts + " Accounts, " +
- String.valueOf(branches) + " Branches, " +
- String.valueOf(tellers) + " Tellers, " +
- String.valueOf(history) + " History");
-
- if (iflag) {
- if (ntxns != 0)
- usage();
- app.populate();
- } else {
- if (ntxns == 0)
- usage();
- app.run(ntxns, threads);
- }
-
- // Shut down the application.
-
- try {
- app.close();
- } catch (DatabaseException dbe2) {
- errExit(dbe2, "appexit failed");
- }
-
- System.exit(0);
- }
-};
-
-// Simulate the following C struct:
-// struct Defrec {
-// u_int32_t id;
-// u_int32_t balance;
-// u_int8_t pad[RECLEN - sizeof(int) - sizeof(int)];
-// };
-
-class Defrec {
- public Defrec() {
- data = new byte[TpcbExample.RECLEN];
- }
-
- public int length() {
- return TpcbExample.RECLEN;
- }
-
- public long get_id() {
- return TpcbExample.get_int_in_array(data, 0);
- }
-
- public void set_id(long value) {
- TpcbExample.set_int_in_array(data, 0, value);
- }
-
- public long get_balance() {
- return TpcbExample.get_int_in_array(data, 4);
- }
-
- public void set_balance(long value) {
- TpcbExample.set_int_in_array(data, 4, value);
- }
-
- static {
- Defrec d = new Defrec();
- d.set_balance(500000);
- }
-
- public byte[] data;
-}
-
-// Simulate the following C struct:
-// struct Histrec {
-// u_int32_t aid;
-// u_int32_t bid;
-// u_int32_t tid;
-// u_int32_t amount;
-// u_int8_t pad[RECLEN - 4 * sizeof(u_int32_t)];
-// };
-
-class Histrec {
- public Histrec() {
- data = new byte[TpcbExample.RECLEN];
- }
-
- public int length() {
- return TpcbExample.RECLEN;
- }
-
- public long get_aid() {
- return TpcbExample.get_int_in_array(data, 0);
- }
-
- public void set_aid(long value) {
- TpcbExample.set_int_in_array(data, 0, value);
- }
-
- public long get_bid() {
- return TpcbExample.get_int_in_array(data, 4);
- }
-
- public void set_bid(long value) {
- TpcbExample.set_int_in_array(data, 4, value);
- }
-
- public long get_tid() {
- return TpcbExample.get_int_in_array(data, 8);
- }
-
- public void set_tid(long value) {
- TpcbExample.set_int_in_array(data, 8, value);
- }
-
- public long get_amount() {
- return TpcbExample.get_int_in_array(data, 12);
- }
-
- public void set_amount(long value) {
- TpcbExample.set_int_in_array(data, 12, value);
- }
-
- public byte[] data;
-}
diff --git a/db/examples_java/src/db/AccessExample.java b/db/examples_java/src/db/AccessExample.java
index 67e1f4788..f6d0203b8 100644
--- a/db/examples_java/src/db/AccessExample.java
+++ b/db/examples_java/src/db/AccessExample.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: AccessExample.java,v 12.5 2006/08/24 14:46:01 bostic Exp $
+ * $Id: AccessExample.java,v 12.7 2007/05/17 15:15:36 bostic Exp $
*/
diff --git a/db/examples_java/src/db/BtRecExample.java b/db/examples_java/src/db/BtRecExample.java
index 8cb4e9fac..735feea23 100644
--- a/db/examples_java/src/db/BtRecExample.java
+++ b/db/examples_java/src/db/BtRecExample.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: BtRecExample.java,v 12.5 2006/08/24 14:46:02 bostic Exp $
+ * $Id: BtRecExample.java,v 12.7 2007/05/17 15:15:36 bostic Exp $
*/
diff --git a/db/examples_java/src/db/BulkAccessExample.java b/db/examples_java/src/db/BulkAccessExample.java
index ec6f2e51d..c414fc9b0 100644
--- a/db/examples_java/src/db/BulkAccessExample.java
+++ b/db/examples_java/src/db/BulkAccessExample.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: BulkAccessExample.java,v 12.5 2006/08/24 14:46:02 bostic Exp $
+ * $Id: BulkAccessExample.java,v 12.7 2007/05/17 15:15:36 bostic Exp $
*/
package db;
diff --git a/db/examples_java/src/db/BulkAccessNIOExample.java b/db/examples_java/src/db/BulkAccessNIOExample.java
index 800d8cc2b..089d7ef11 100644
--- a/db/examples_java/src/db/BulkAccessNIOExample.java
+++ b/db/examples_java/src/db/BulkAccessNIOExample.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: BulkAccessNIOExample.java,v 1.4 2006/08/24 14:46:02 bostic Exp $
+ * $Id: BulkAccessNIOExample.java,v 1.6 2007/05/17 15:15:36 bostic Exp $
*/
package db;
diff --git a/db/examples_java/src/db/EnvExample.java b/db/examples_java/src/db/EnvExample.java
index 83e90618b..9e1775013 100644
--- a/db/examples_java/src/db/EnvExample.java
+++ b/db/examples_java/src/db/EnvExample.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: EnvExample.java,v 12.4 2006/08/24 14:46:02 bostic Exp $
+ * $Id: EnvExample.java,v 12.6 2007/05/17 15:15:36 bostic Exp $
*/
package db;
diff --git a/db/examples_java/src/db/LockExample.java b/db/examples_java/src/db/LockExample.java
index 3144812e9..09c2b8eb7 100644
--- a/db/examples_java/src/db/LockExample.java
+++ b/db/examples_java/src/db/LockExample.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: LockExample.java,v 12.5 2006/08/24 14:46:02 bostic Exp $
+ * $Id: LockExample.java,v 12.7 2007/05/17 15:15:36 bostic Exp $
*/
package db;
diff --git a/db/examples_java/src/db/RPCExample.java b/db/examples_java/src/db/RPCExample.java
index 68230300d..5a6adca41 100644
--- a/db/examples_java/src/db/RPCExample.java
+++ b/db/examples_java/src/db/RPCExample.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: RPCExample.java,v 12.4 2006/08/24 14:46:02 bostic Exp $
+ * $Id: RPCExample.java,v 12.6 2007/05/17 15:15:36 bostic Exp $
*/
package db;
diff --git a/db/examples_java/src/db/SequenceExample.java b/db/examples_java/src/db/SequenceExample.java
index 63feb115a..4bf73b490 100644
--- a/db/examples_java/src/db/SequenceExample.java
+++ b/db/examples_java/src/db/SequenceExample.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: SequenceExample.java,v 12.4 2006/08/24 14:46:02 bostic Exp $
+ * $Id: SequenceExample.java,v 12.6 2007/05/17 15:15:36 bostic Exp $
*/
package db;
diff --git a/db/examples_java/src/db/TpcbExample.java b/db/examples_java/src/db/TpcbExample.java
index 9626746bd..61f3575ae 100644
--- a/db/examples_java/src/db/TpcbExample.java
+++ b/db/examples_java/src/db/TpcbExample.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: TpcbExample.java,v 12.8 2006/08/24 14:46:02 bostic Exp $
+ * $Id: TpcbExample.java,v 12.10 2007/05/17 15:15:36 bostic Exp $
*/
package db;
diff --git a/db/examples_java/src/db/repquote/RepConfig.java b/db/examples_java/src/db/repquote/RepConfig.java
index 36b1dc892..7e6d5f484 100644
--- a/db/examples_java/src/db/repquote/RepConfig.java
+++ b/db/examples_java/src/db/repquote/RepConfig.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2001-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2001,2007 Oracle. All rights reserved.
*
- * $Id: RepConfig.java,v 1.5 2006/09/08 20:32:02 bostic Exp $
+ * $Id: RepConfig.java,v 1.7 2007/05/17 15:15:37 bostic Exp $
*/
package db.repquote;
diff --git a/db/examples_java/src/db/repquote/RepQuoteEnvironment.java b/db/examples_java/src/db/repquote/RepQuoteEnvironment.java
index f2ace5373..f68d5fdb8 100644
--- a/db/examples_java/src/db/repquote/RepQuoteEnvironment.java
+++ b/db/examples_java/src/db/repquote/RepQuoteEnvironment.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: RepQuoteEnvironment.java,v 1.3 2006/08/24 14:46:03 bostic Exp $
+ * $Id: RepQuoteEnvironment.java,v 1.5 2007/05/17 15:15:37 bostic Exp $
*/
package db.repquote;
diff --git a/db/examples_java/src/db/repquote/RepQuoteExample.java b/db/examples_java/src/db/repquote/RepQuoteExample.java
index 30358d938..3a9f058fc 100644
--- a/db/examples_java/src/db/repquote/RepQuoteExample.java
+++ b/db/examples_java/src/db/repquote/RepQuoteExample.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: RepQuoteExample.java,v 1.10 2006/09/09 14:12:42 bostic Exp $
+ * $Id: RepQuoteExample.java,v 1.17 2007/05/17 18:17:19 bostic Exp $
*/
package db.repquote;
@@ -30,7 +29,6 @@ import db.repquote.RepConfig;
* <pre>
* -M (configure this process to start as a master)
* -C (configure this process to start as a client)
- * -F Call a full election at startup
* -h environment home directory
* -m host:port (required; m stands for me)
* -o host:port (optional; o stands for other; any number of these may
@@ -74,7 +72,7 @@ import db.repquote.RepConfig;
* </ul>
*/
-public class RepQuoteExample implements EventHandler
+public class RepQuoteExample
{
private RepConfig appConfig;
private RepQuoteEnvironment dbenv;
@@ -87,7 +85,6 @@ public class RepQuoteExample implements EventHandler
System.err.println(
"\t -C start the site as client of the replication group\n" +
- "\t -F Call a full election at startup\n" +
"\t -M start the site as master of the replication group\n" +
"\t -f host:port (optional; f stands for friend and \n" +
"\t indicates a peer relationship to the specified site)\n" +
@@ -118,9 +115,6 @@ public class RepQuoteExample implements EventHandler
isPeer = false;
if (argv[i].compareTo("-C") == 0) {
config.startPolicy = ReplicationManagerStartPolicy.REP_CLIENT;
- } else if (argv[i].compareTo("-F") == 0) {
- config.startPolicy =
- ReplicationManagerStartPolicy.REP_FULL_ELECTION;
} else if (argv[i].compareTo("-h") == 0) {
// home - a string arg.
i++;
@@ -232,7 +226,7 @@ public class RepQuoteExample implements EventHandler
envConfig.setCacheSize(RepConfig.CACHESIZE);
envConfig.setTxnNoSync(true);
- envConfig.setEventHandler(this);
+ envConfig.setEventHandler(new RepQuoteEventHandler());
envConfig.setReplicationManagerAckPolicy(ReplicationManagerAckPolicy.ALL);
envConfig.setAllowCreate(true);
@@ -360,22 +354,6 @@ public class RepQuoteExample implements EventHandler
dbenv.close();
}
- public int handleEvent(EventType event)
- {
- int ret = 0;
- if (event == EventType.REP_MASTER)
- dbenv.setIsMaster(true);
- else if (event == EventType.REP_CLIENT)
- dbenv.setIsMaster(false);
- else if (event == EventType.REP_NEW_MASTER) {
- // ignored for now.
- } else {
- System.err.println("Unknown event callback received.\n");
- ret = 1;
- }
- return ret;
- }
-
/*
* void return type since error conditions are propogated
* via exceptions.
@@ -403,5 +381,21 @@ public class RepQuoteExample implements EventHandler
}
dbc.close();
}
+
+ /*
+ * Implemention of EventHandler interface to handle the Berkeley DB events
+ * we are interested in receiving.
+ */
+ private /* internal */
+ class RepQuoteEventHandler extends EventHandlerAdapter {
+ public void handleRepClientEvent()
+ {
+ dbenv.setIsMaster(false);
+ }
+ public void handleRepMasterEvent()
+ {
+ dbenv.setIsMaster(true);
+ }
+ }
} // end class
diff --git a/db/fileops/fileops.src b/db/fileops/fileops.src
index ce81e1513..4518dcf0e 100644
--- a/db/fileops/fileops.src
+++ b/db/fileops/fileops.src
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2001-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2001,2007 Oracle. All rights reserved.
*
- * $Id: fileops.src,v 12.6 2006/08/24 14:46:03 bostic Exp $
+ * $Id: fileops.src,v 12.10 2007/05/17 18:17:19 bostic Exp $
*/
PREFIX __fop
@@ -73,14 +72,23 @@ END
* be interpreted via calls to __db_appname. The fileid is the 20-byte
* DB fileid of the file being renamed. We need to check it on recovery
* so that we don't inadvertently overwrite good files.
+ *
+ * There are two variants of this log record: one that must be both done
+ * and undone and one that is not undone (used for renaming tmp files, see
+ * SR #15119)
+ *
+ * These two record types use the same structure, read, and print functions,
+ * but have different recovery functions.
*/
BEGIN rename 42 146
+DUPLICATE rename_noundo 46 150
DBT oldname DBT s
DBT newname DBT s
DBT fileid DBT s
ARG appname u_int32_t lu
END
+
/*
* File removal record. This is a DB-level log record that indicates
* we've just completed some form of file removal. The purpose of this
diff --git a/db/fileops/fileops_auto.c b/db/fileops/fileops_auto.c
index 0da353b2b..5d903649e 100644
--- a/db/fileops/fileops_auto.c
+++ b/db/fileops/fileops_auto.c
@@ -140,6 +140,7 @@ __fop_create_log(dbenv, txnp, ret_lsnp, flags,
*ret_lsnp = *rlsnp;
}
} else {
+ ret = 0;
#ifdef DIAGNOSTIC
/*
* Set the debug bit if we are going to log non-durable
@@ -149,10 +150,9 @@ __fop_create_log(dbenv, txnp, ret_lsnp, flags,
rectype |= DB_debug_FLAG;
memcpy(logrec.data, &rectype, sizeof(rectype));
- ret = __log_put(dbenv,
- rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
-#else
- ret = 0;
+ if (!IS_REP_CLIENT(dbenv))
+ ret = __log_put(dbenv,
+ rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
#endif
STAILQ_INSERT_HEAD(&txnp->logs, lr, links);
F_SET((TXN_DETAIL *)txnp->td, TXN_DTL_INMEMORY);
@@ -359,6 +359,7 @@ __fop_remove_log(dbenv, txnp, ret_lsnp, flags,
*ret_lsnp = *rlsnp;
}
} else {
+ ret = 0;
#ifdef DIAGNOSTIC
/*
* Set the debug bit if we are going to log non-durable
@@ -368,10 +369,9 @@ __fop_remove_log(dbenv, txnp, ret_lsnp, flags,
rectype |= DB_debug_FLAG;
memcpy(logrec.data, &rectype, sizeof(rectype));
- ret = __log_put(dbenv,
- rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
-#else
- ret = 0;
+ if (!IS_REP_CLIENT(dbenv))
+ ret = __log_put(dbenv,
+ rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
#endif
STAILQ_INSERT_HEAD(&txnp->logs, lr, links);
F_SET((TXN_DETAIL *)txnp->td, TXN_DTL_INMEMORY);
@@ -606,6 +606,7 @@ __fop_write_log(dbenv, txnp, ret_lsnp, flags,
*ret_lsnp = *rlsnp;
}
} else {
+ ret = 0;
#ifdef DIAGNOSTIC
/*
* Set the debug bit if we are going to log non-durable
@@ -615,10 +616,9 @@ __fop_write_log(dbenv, txnp, ret_lsnp, flags,
rectype |= DB_debug_FLAG;
memcpy(logrec.data, &rectype, sizeof(rectype));
- ret = __log_put(dbenv,
- rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
-#else
- ret = 0;
+ if (!IS_REP_CLIENT(dbenv))
+ ret = __log_put(dbenv,
+ rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
#endif
STAILQ_INSERT_HEAD(&txnp->logs, lr, links);
F_SET((TXN_DETAIL *)txnp->td, TXN_DTL_INMEMORY);
@@ -710,6 +710,16 @@ __fop_write_read(dbenv, recbuf, argpp)
* PUBLIC: int __fop_rename_log __P((DB_ENV *, DB_TXN *, DB_LSN *,
* PUBLIC: u_int32_t, const DBT *, const DBT *, const DBT *, u_int32_t));
*/
+/*
+ * PUBLIC: int __fop_rename_noundo_log __P((DB_ENV *, DB_TXN *,
+ * PUBLIC: DB_LSN *, u_int32_t, const DBT *, const DBT *, const DBT *,
+ * PUBLIC: u_int32_t));
+ */
+/*
+ * PUBLIC: int __fop_rename_int_log __P((DB_ENV *, DB_TXN *,
+ * PUBLIC: DB_LSN *, u_int32_t, const DBT *, const DBT *, const DBT *,
+ * PUBLIC: u_int32_t, u_int32_t));
+ */
int
__fop_rename_log(dbenv, txnp, ret_lsnp, flags,
oldname, newname, fileid, appname)
@@ -721,6 +731,39 @@ __fop_rename_log(dbenv, txnp, ret_lsnp, flags,
const DBT *newname;
const DBT *fileid;
u_int32_t appname;
+
+{
+ return (__fop_rename_int_log(dbenv, txnp, ret_lsnp, flags,
+ oldname, newname, fileid, appname, DB___fop_rename));
+}
+int
+__fop_rename_noundo_log(dbenv, txnp, ret_lsnp, flags,
+ oldname, newname, fileid, appname)
+ DB_ENV *dbenv;
+ DB_TXN *txnp;
+ DB_LSN *ret_lsnp;
+ u_int32_t flags;
+ const DBT *oldname;
+ const DBT *newname;
+ const DBT *fileid;
+ u_int32_t appname;
+
+{
+ return (__fop_rename_int_log(dbenv, txnp, ret_lsnp, flags,
+ oldname, newname, fileid, appname, DB___fop_rename_noundo));
+}
+int
+__fop_rename_int_log(dbenv, txnp, ret_lsnp, flags,
+ oldname, newname, fileid, appname, type)
+ DB_ENV *dbenv;
+ DB_TXN *txnp;
+ DB_LSN *ret_lsnp;
+ u_int32_t flags;
+ const DBT *oldname;
+ const DBT *newname;
+ const DBT *fileid;
+ u_int32_t appname;
+ u_int32_t type;
{
DBT logrec;
DB_TXNLOGREC *lr;
@@ -732,7 +775,7 @@ __fop_rename_log(dbenv, txnp, ret_lsnp, flags,
COMPQUIET(lr, NULL);
- rectype = DB___fop_rename;
+ rectype = type;
npad = 0;
rlsnp = ret_lsnp;
@@ -856,6 +899,7 @@ __fop_rename_log(dbenv, txnp, ret_lsnp, flags,
*ret_lsnp = *rlsnp;
}
} else {
+ ret = 0;
#ifdef DIAGNOSTIC
/*
* Set the debug bit if we are going to log non-durable
@@ -865,10 +909,9 @@ __fop_rename_log(dbenv, txnp, ret_lsnp, flags,
rectype |= DB_debug_FLAG;
memcpy(logrec.data, &rectype, sizeof(rectype));
- ret = __log_put(dbenv,
- rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
-#else
- ret = 0;
+ if (!IS_REP_CLIENT(dbenv))
+ ret = __log_put(dbenv,
+ rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
#endif
STAILQ_INSERT_HEAD(&txnp->logs, lr, links);
F_SET((TXN_DETAIL *)txnp->td, TXN_DTL_INMEMORY);
@@ -1103,6 +1146,7 @@ __fop_file_remove_log(dbenv, txnp, ret_lsnp, flags,
*ret_lsnp = *rlsnp;
}
} else {
+ ret = 0;
#ifdef DIAGNOSTIC
/*
* Set the debug bit if we are going to log non-durable
@@ -1112,10 +1156,9 @@ __fop_file_remove_log(dbenv, txnp, ret_lsnp, flags,
rectype |= DB_debug_FLAG;
memcpy(logrec.data, &rectype, sizeof(rectype));
- ret = __log_put(dbenv,
- rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
-#else
- ret = 0;
+ if (!IS_REP_CLIENT(dbenv))
+ ret = __log_put(dbenv,
+ rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
#endif
STAILQ_INSERT_HEAD(&txnp->logs, lr, links);
F_SET((TXN_DETAIL *)txnp->td, TXN_DTL_INMEMORY);
@@ -1223,6 +1266,9 @@ __fop_init_recover(dbenv, dtabp, dtabsizep)
__fop_rename_recover, DB___fop_rename)) != 0)
return (ret);
if ((ret = __db_add_recovery(dbenv, dtabp, dtabsizep,
+ __fop_rename_noundo_recover, DB___fop_rename_noundo)) != 0)
+ return (ret);
+ if ((ret = __db_add_recovery(dbenv, dtabp, dtabsizep,
__fop_file_remove_recover, DB___fop_file_remove)) != 0)
return (ret);
return (0);
diff --git a/db/fileops/fileops_autop.c b/db/fileops/fileops_autop.c
index e19167691..abf3ee535 100644
--- a/db/fileops/fileops_autop.c
+++ b/db/fileops/fileops_autop.c
@@ -282,6 +282,9 @@ __fop_init_print(dbenv, dtabp, dtabsizep)
__fop_rename_print, DB___fop_rename)) != 0)
return (ret);
if ((ret = __db_add_recovery(dbenv, dtabp, dtabsizep,
+ __fop_rename_print, DB___fop_rename_noundo)) != 0)
+ return (ret);
+ if ((ret = __db_add_recovery(dbenv, dtabp, dtabsizep,
__fop_file_remove_print, DB___fop_file_remove)) != 0)
return (ret);
return (0);
diff --git a/db/fileops/fop_basic.c b/db/fileops/fop_basic.c
index 9563ddbc1..7b3597ad2 100644
--- a/db/fileops/fop_basic.c
+++ b/db/fileops/fop_basic.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2001-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2001,2007 Oracle. All rights reserved.
*
- * $Id: fop_basic.c,v 12.19 2006/09/19 15:06:59 bostic Exp $
+ * $Id: fop_basic.c,v 12.25 2007/05/17 15:15:37 bostic Exp $
*/
#include "db_config.h"
@@ -82,7 +81,11 @@ __fop_create(dbenv, txn, fhpp, name, appname, mode, flags)
if (mode == 0)
mode = __db_omode(OWNER_RW);
- if (DBENV_LOGGING(dbenv)) {
+ if (DBENV_LOGGING(dbenv)
+#if !defined(DEBUG_WOP)
+ && txn != NULL
+#endif
+ ) {
DB_INIT_DBT(data, name, strlen(name) + 1);
if ((ret = __fop_create_log(dbenv, txn, &lsn,
flags | DB_FLUSH,
@@ -95,7 +98,7 @@ __fop_create(dbenv, txn, fhpp, name, appname, mode, flags)
if (fhpp == NULL)
fhpp = &fhp;
ret = __os_open(
- dbenv, real_name, DB_OSO_CREATE | DB_OSO_EXCL, mode, fhpp);
+ dbenv, real_name, 0, DB_OSO_CREATE | DB_OSO_EXCL, mode, fhpp);
err:
DB_TEST_RECOVERY_LABEL
@@ -138,7 +141,11 @@ __fop_remove(dbenv, txn, fileid, name, appname, flags)
dbenv, fileid, NULL, real_name, NULL, 0)) != 0)
goto err;
} else {
- if (DBENV_LOGGING(dbenv)) {
+ if (DBENV_LOGGING(dbenv)
+#if !defined(DEBUG_WOP)
+ && txn != NULL
+#endif
+ ) {
memset(&fdbt, 0, sizeof(ndbt));
fdbt.data = fileid;
fdbt.size = fileid == NULL ? 0 : DB_FILE_ID_LEN;
@@ -170,7 +177,7 @@ err: if (real_name != NULL)
*
* PUBLIC: int __fop_write __P((DB_ENV *,
* PUBLIC: DB_TXN *, const char *, APPNAME, DB_FH *, u_int32_t, db_pgno_t,
- * PUBLIC: u_int32_t, u_int8_t *, u_int32_t, u_int32_t, u_int32_t));
+ * PUBLIC: u_int32_t, void *, u_int32_t, u_int32_t, u_int32_t));
*/
int
__fop_write(dbenv,
@@ -183,7 +190,7 @@ __fop_write(dbenv,
u_int32_t pgsize;
db_pgno_t pageno;
u_int32_t off;
- u_int8_t *buf;
+ void *buf;
u_int32_t size, istmp, flags;
{
DB_LSN lsn;
@@ -201,7 +208,11 @@ __fop_write(dbenv,
__db_appname(dbenv, appname, name, 0, NULL, &real_name)) != 0)
return (ret);
- if (DBENV_LOGGING(dbenv)) {
+ if (DBENV_LOGGING(dbenv)
+#if !defined(DEBUG_WOP)
+ && txn != NULL
+#endif
+ ) {
memset(&data, 0, sizeof(data));
data.data = buf;
data.size = size;
@@ -214,7 +225,7 @@ __fop_write(dbenv,
if (fhp == NULL) {
/* File isn't open; we need to reopen it. */
- if ((ret = __os_open(dbenv, real_name, 0, 0, &fhp)) != 0)
+ if ((ret = __os_open(dbenv, real_name, 0, 0, 0, &fhp)) != 0)
goto err;
local_open = 1;
}
@@ -240,17 +251,18 @@ err: if (local_open &&
* __fop_rename --
* Change a file's name.
*
- * PUBLIC: int __fop_rename __P((DB_ENV *, DB_TXN *,
- * PUBLIC: const char *, const char *, u_int8_t *, APPNAME, u_int32_t));
+ * PUBLIC: int __fop_rename __P((DB_ENV *, DB_TXN *, const char *,
+ * PUBLIC: const char *, u_int8_t *, APPNAME, int, u_int32_t));
*/
int
-__fop_rename(dbenv, txn, oldname, newname, fid, appname, flags)
+__fop_rename(dbenv, txn, oldname, newname, fid, appname, with_undo, flags)
DB_ENV *dbenv;
DB_TXN *txn;
const char *oldname;
const char *newname;
u_int8_t *fid;
APPNAME appname;
+ int with_undo;
u_int32_t flags;
{
DB_LSN lsn;
@@ -264,14 +276,25 @@ __fop_rename(dbenv, txn, oldname, newname, fid, appname, flags)
if ((ret = __db_appname(dbenv, appname, newname, 0, NULL, &n)) != 0)
goto err;
- if (DBENV_LOGGING(dbenv)) {
+ if (DBENV_LOGGING(dbenv)
+#if !defined(DEBUG_WOP)
+ && txn != NULL
+#endif
+ ) {
DB_INIT_DBT(old, oldname, strlen(oldname) + 1);
DB_INIT_DBT(new, newname, strlen(newname) + 1);
memset(&fiddbt, 0, sizeof(fiddbt));
fiddbt.data = fid;
fiddbt.size = DB_FILE_ID_LEN;
- if ((ret = __fop_rename_log(dbenv, txn, &lsn, flags | DB_FLUSH,
- &old, &new, &fiddbt, (u_int32_t)appname)) != 0)
+ if (with_undo)
+ ret = __fop_rename_log(dbenv,
+ txn, &lsn, flags | DB_FLUSH,
+ &old, &new, &fiddbt, (u_int32_t)appname);
+ else
+ ret = __fop_rename_noundo_log(dbenv,
+ txn, &lsn, flags | DB_FLUSH,
+ &old, &new, &fiddbt, (u_int32_t)appname);
+ if (ret != 0)
goto err;
}
diff --git a/db/fileops/fop_rec.c b/db/fileops/fop_rec.c
index eced8fd39..3de3c70ce 100644
--- a/db/fileops/fop_rec.c
+++ b/db/fileops/fop_rec.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2001-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2001,2007 Oracle. All rights reserved.
*
- * $Id: fop_rec.c,v 12.12 2006/08/24 14:46:03 bostic Exp $
+ * $Id: fop_rec.c,v 12.18 2007/05/17 15:15:37 bostic Exp $
*/
#include "db_config.h"
@@ -16,6 +15,9 @@
#include "dbinc/mp.h"
#include "dbinc/txn.h"
+static int __fop_rename_recover_int
+ __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *, int));
+
/*
* The transactional guarantees Berkeley DB provides for file
* system level operations (database physical file create, delete,
@@ -66,8 +68,8 @@ __fop_create_recover(dbenv, dbtp, lsnp, op, info)
char *real_name;
int ret;
- real_name = NULL;
COMPQUIET(info, NULL);
+ real_name = NULL;
REC_PRINT(__fop_create_print);
REC_NOOP_INTRO(__fop_create_read);
@@ -78,8 +80,8 @@ __fop_create_recover(dbenv, dbtp, lsnp, op, info)
if (DB_UNDO(op))
(void)__os_unlink(dbenv, real_name);
else if (DB_REDO(op)) {
- if ((ret = __os_open(dbenv, real_name,
- DB_OSO_CREATE | DB_OSO_EXCL, (int)argp->mode, &fhp)) == 0)
+ if ((ret = __os_open(dbenv, real_name, 0,
+ DB_OSO_CREATE, (int)argp->mode, &fhp)) == 0)
(void)__os_closehandle(dbenv, fhp);
else
goto out;
@@ -112,8 +114,8 @@ __fop_remove_recover(dbenv, dbtp, lsnp, op, info)
char *real_name;
int ret;
- real_name = NULL;
COMPQUIET(info, NULL);
+ real_name = NULL;
REC_PRINT(__fop_remove_print);
REC_NOOP_INTRO(__fop_remove_read);
@@ -170,10 +172,17 @@ __fop_write_recover(dbenv, dbtp, lsnp, op, info)
/*
* __fop_rename_recover --
- * Recovery function for rename.
+ * Recovery functions for rename. There are two variants that
+ * both use the same utility function. Had we known about this on day
+ * one, we would have simply added a parameter. However, since we need
+ * to retain old records for backward compatibility (online-upgrade)
+ * wrapping the two seems like the right solution.
*
* PUBLIC: int __fop_rename_recover
* PUBLIC: __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+ *
+ * PUBLIC: int __fop_rename_noundo_recover
+ * PUBLIC: __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
*/
int
__fop_rename_recover(dbenv, dbtp, lsnp, op, info)
@@ -183,6 +192,29 @@ __fop_rename_recover(dbenv, dbtp, lsnp, op, info)
db_recops op;
void *info;
{
+ return (__fop_rename_recover_int(dbenv, dbtp, lsnp, op, info, 1));
+}
+
+int
+__fop_rename_noundo_recover(dbenv, dbtp, lsnp, op, info)
+ DB_ENV *dbenv;
+ DBT *dbtp;
+ DB_LSN *lsnp;
+ db_recops op;
+ void *info;
+{
+ return (__fop_rename_recover_int(dbenv, dbtp, lsnp, op, info, 0));
+}
+
+int
+__fop_rename_recover_int(dbenv, dbtp, lsnp, op, info, undo)
+ DB_ENV *dbenv;
+ DBT *dbtp;
+ DB_LSN *lsnp;
+ db_recops op;
+ void *info;
+ int undo;
+{
__fop_rename_args *argp;
DB_FH *fhp;
DBMETA *meta;
@@ -221,7 +253,7 @@ __fop_rename_recover(dbenv, dbtp, lsnp, op, info)
* way, shape or form, incorrect, so that we should not restore
* it.
*/
- if (__os_open(dbenv, src, 0, 0, &fhp) != 0)
+ if (__os_open(dbenv, src, 0, 0, 0, &fhp) != 0)
goto done;
if (__fop_read_meta(dbenv,
src, mbuf, DBMETASIZE, fhp, 1, NULL) != 0)
@@ -240,7 +272,7 @@ __fop_rename_recover(dbenv, dbtp, lsnp, op, info)
* file since the state of the world is beyond this
* point.
*/
- if (__os_open(dbenv, real_new, 0, 0, &fhp) == 0 &&
+ if (__os_open(dbenv, real_new, 0, 0, 0, &fhp) == 0 &&
__fop_read_meta(dbenv, src, mbuf,
DBMETASIZE, fhp, 1, NULL) == 0 &&
__db_chk_meta(dbenv, NULL, meta, 1) == 0 &&
@@ -253,7 +285,7 @@ __fop_rename_recover(dbenv, dbtp, lsnp, op, info)
}
}
- if (DB_UNDO(op))
+ if (undo && DB_UNDO(op))
(void)__memp_nameop(dbenv, fileid,
(const char *)argp->oldname.data, real_new, real_old, 0);
if (DB_REDO(op))
@@ -320,7 +352,7 @@ __fop_file_remove_recover(dbenv, dbtp, lsnp, op, info)
/* Verify that we are manipulating the correct file. */
len = 0;
- if (__os_open(dbenv, real_name, 0, 0, &fhp) != 0 ||
+ if (__os_open(dbenv, real_name, 0, 0, 0, &fhp) != 0 ||
(ret = __fop_read_meta(dbenv, real_name,
mbuf, DBMETASIZE, fhp, 1, &len)) != 0) {
/*
diff --git a/db/fileops/fop_util.c b/db/fileops/fop_util.c
index 9da9d4a43..6d45f4843 100644
--- a/db/fileops/fop_util.c
+++ b/db/fileops/fop_util.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2001-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2001,2007 Oracle. All rights reserved.
*
- * $Id: fop_util.c,v 12.36 2006/09/19 15:06:59 bostic Exp $
+ * $Id: fop_util.c,v 12.55 2007/07/17 07:29:05 mjc Exp $
*/
#include "db_config.h"
@@ -24,11 +23,11 @@ static int __fop_inmem_create __P((DB *, const char *, DB_TXN *, u_int32_t));
static int __fop_inmem_dummy __P((DB *, DB_TXN *, const char *, u_int8_t *));
static int __fop_inmem_read_meta __P((DB *, DB_TXN *, const char *, u_int32_t));
static int __fop_inmem_swap __P((DB *, DB *, DB_TXN *,
- const char *, const char *, const char *, u_int32_t));
+ const char *, const char *, const char *, DB_LOCKER *));
static int __fop_ondisk_dummy __P((DB *,
DB_TXN *, const char *, u_int8_t *, u_int32_t));
static int __fop_ondisk_swap __P((DB *, DB *, DB_TXN *,
- const char *, const char *, const char *, u_int32_t, u_int32_t));
+ const char *, const char *, const char *, DB_LOCKER *, u_int32_t));
/*
* Acquire the environment meta-data lock. The parameters are the
@@ -93,14 +92,14 @@ static int __fop_ondisk_swap __P((DB *, DB *, DB_TXN *,
* handle lock.
*
* PUBLIC: int __fop_lock_handle __P((DB_ENV *,
- * PUBLIC: DB *, u_int32_t, db_lockmode_t, DB_LOCK *, u_int32_t));
+ * PUBLIC: DB *, DB_LOCKER *, db_lockmode_t, DB_LOCK *, u_int32_t));
*
*/
int
__fop_lock_handle(dbenv, dbp, locker, mode, elockp, flags)
DB_ENV *dbenv;
DB *dbp;
- u_int32_t locker;
+ DB_LOCKER *locker;
db_lockmode_t mode;
DB_LOCK *elockp;
u_int32_t flags;
@@ -147,7 +146,7 @@ __fop_lock_handle(dbenv, dbp, locker, mode, elockp, flags)
LOCK_INIT(*elockp);
}
- dbp->cur_lid = locker;
+ dbp->cur_locker = locker;
return (ret);
}
@@ -208,10 +207,11 @@ __fop_file_setup(dbp, txn, name, mode, flags, retidp)
DB_ENV *dbenv;
DB_FH *fhp;
DB_LOCK elock;
+ DB_LOCKER *locker;
DB_TXN *stxn;
DBTYPE save_type;
size_t len;
- u_int32_t dflags, locker, oflags;
+ u_int32_t dflags, oflags;
u_int8_t mbuf[DBMETASIZE];
int created_locker, create_ok, ret, retries, t_ret, tmp_created;
int truncating, was_inval;
@@ -239,14 +239,14 @@ __fop_file_setup(dbp, txn, name, mode, flags, retidp)
if (LOCKING_ON(dbenv) &&
!F_ISSET(dbp, DB_AM_COMPENSATE) &&
!F_ISSET(dbp, DB_AM_RECOVER) &&
- dbp->lid == DB_LOCK_INVALIDID) {
- if ((ret = __lock_id(dbenv, &dbp->lid, NULL)) != 0)
+ dbp->locker == DB_LOCK_INVALIDID) {
+ if ((ret = __lock_id(dbenv, NULL, &dbp->locker)) != 0)
goto err;
created_locker = 1;
}
LOCK_INIT(dbp->handle_lock);
- locker = txn == NULL ? dbp->lid : txn->txnid;
+ locker = txn == NULL ? dbp->locker : txn->locker;
oflags = 0;
if (F_ISSET(dbp, DB_AM_INMEM))
@@ -288,10 +288,10 @@ retry:
if (name == NULL)
ret = ENOENT;
else if (F_ISSET(dbp, DB_AM_INMEM)) {
- ret = __db_dbenv_mpool(dbp, name, flags);
+ ret = __db_env_mpool(dbp, name, flags);
/*
- * We are using __db_dbenv_open as a check for existence.
- * However, db_dbenv_mpool does an actual open and there
+ * We are using __db_env_open as a check for existence.
+ * However, __db_env_mpool does an actual open and there
* are scenarios where the object exists, but cannot be
* opened, because our settings don't match those internally.
* We need to check for that explicitly. We'll need the
@@ -302,7 +302,7 @@ retry:
was_inval = 1;
save_type = dbp->type;
dbp->type = DB_UNKNOWN;
- ret = __db_dbenv_mpool(dbp, name, flags);
+ ret = __db_env_mpool(dbp, name, flags);
dbp->type = save_type;
}
} else
@@ -326,8 +326,8 @@ retry:
*/
/* Open file (if there is one). */
-reopen: if (!F_ISSET(dbp, DB_AM_INMEM) &&
- (ret = __os_open(dbenv, real_name, oflags, 0, &fhp)) != 0)
+reopen: if (!F_ISSET(dbp, DB_AM_INMEM) && (ret =
+ __os_open(dbenv, real_name, 0, oflags, 0, &fhp)) != 0)
goto err;
/* Case 2: DB_TRUNCATE: we must do the creation in place. */
@@ -429,9 +429,10 @@ reopen: if (!F_ISSET(dbp, DB_AM_INMEM) &&
if ((ret = __db_refresh(dbp,
txn, DB_NOSYNC, NULL, 1)) != 0)
goto err;
- ret = __db_dbenv_mpool(dbp, name, flags);
+ ret = __db_env_mpool(dbp, name, flags);
} else
- ret = __os_open(dbenv, real_name, 0, 0, &fhp);
+ ret =
+ __os_open(dbenv, real_name, 0, 0, 0, &fhp);
if (ret != 0) {
if ((ret =
@@ -452,7 +453,7 @@ reopen: if (!F_ISSET(dbp, DB_AM_INMEM) &&
LF_ISSET(DB_FCNTL_LOCKING) && txn == NULL ? 1 : 0,
&len)) != 0 ||
(ret = __db_meta_setup(dbenv, dbp, real_name,
- (DBMETA *)mbuf, flags, 1)) != 0)
+ (DBMETA *)mbuf, flags, DB_CHK_META)) != 0)
goto err;
}
@@ -532,7 +533,8 @@ reopen: if (!F_ISSET(dbp, DB_AM_INMEM) &&
(ret = __ENV_LPUT(dbenv, elock)) != 0)
goto err;
-create: if (txn != NULL && IS_REP_CLIENT(dbenv)) {
+create: if (txn != NULL && IS_REP_CLIENT(dbenv) &&
+ !F_ISSET(dbp, DB_AM_NOT_DURABLE)) {
__db_errx(dbenv,
"Transactional create on replication client disallowed");
ret = EINVAL;
@@ -631,7 +633,7 @@ creat2: if (!F_ISSET(dbp, DB_AM_INMEM)) {
dbp, locker, DB_LOCK_WRITE, &elock, NOWAIT_FLAG(txn))) != 0)
goto err;
if (tmpname != NULL && tmpname != name && (ret = __fop_rename(dbenv,
- stxn, tmpname, name, dbp->fileid, DB_APP_DATA, dflags)) != 0)
+ stxn, tmpname, name, dbp->fileid, DB_APP_DATA, 1, dflags)) != 0)
goto err;
if (stxn != NULL) {
@@ -659,8 +661,8 @@ err: CLOSE_HANDLE(dbp, fhp);
(void)__ENV_LPUT(dbenv, dbp->handle_lock);
(void)__ENV_LPUT(dbenv, elock);
if (created_locker) {
- (void)__lock_id_free(dbenv, dbp->lid);
- dbp->lid = DB_LOCK_INVALIDID;
+ (void)__lock_id_free(dbenv, dbp->locker);
+ dbp->locker = NULL;
}
}
@@ -787,12 +789,12 @@ __fop_subdb_setup(dbp, txn, mname, name, mode, flags)
/*
* Hijack the master's locker ID as well, so that our locks don't
* conflict with the master's. Since we're closing the master,
- * that lid would just have been freed anyway. Once we've gotten
+ * that locker would just have been freed anyway. Once we've gotten
* the locker id, we need to acquire the handle lock for this
* subdatabase.
*/
- dbp->lid = mdbp->lid;
- mdbp->lid = DB_LOCK_INVALIDID;
+ dbp->locker = mdbp->locker;
+ mdbp->locker = NULL;
DB_TEST_RECOVERY(dbp, DB_TEST_POSTLOG, ret, mname);
@@ -806,7 +808,7 @@ __fop_subdb_setup(dbp, txn, mname, name, mode, flags)
lkmode = F_ISSET(dbp, DB_AM_CREATED) || LF_ISSET(DB_WRITEOPEN) ?
DB_LOCK_WRITE : DB_LOCK_READ;
if ((ret = __fop_lock_handle(dbenv, dbp,
- txn == NULL ? dbp->lid : txn->txnid, lkmode, NULL,
+ txn == NULL ? dbp->locker : txn->locker, lkmode, NULL,
NOWAIT_FLAG(txn))) != 0)
goto err;
@@ -875,8 +877,8 @@ DB_TEST_RECOVERY_LABEL
/* Now register the new event. */
if ((t_ret = __txn_lockevent(dbenv, txn, dbp,
- &mdbp->handle_lock, dbp->lid == DB_LOCK_INVALIDID ?
- mdbp->lid : dbp->lid)) != 0 && ret == 0)
+ &mdbp->handle_lock, dbp->locker == NULL ?
+ mdbp->locker : dbp->locker)) != 0 && ret == 0)
ret = t_ret;
}
LOCK_INIT(mdbp->handle_lock);
@@ -887,10 +889,22 @@ DB_TEST_RECOVERY_LABEL
* mpool. If we're opening a subdb in an existing file, we can skip
* the sync.
*/
- if ((t_ret =__db_close(mdbp, txn,
- F_ISSET(dbp, DB_AM_CREATED_MSTR) ? 0 : DB_NOSYNC)) != 0 &&
- ret == 0)
- ret = t_ret;
+ if (txn == NULL || F_ISSET(txn, TXN_CDSGROUP) ||
+ F_ISSET(mdbp, DB_AM_RECOVER)) {
+ if ((t_ret = __db_close(mdbp, txn,
+ F_ISSET(dbp, DB_AM_CREATED_MSTR) ? 0 : DB_NOSYNC)) != 0 &&
+ ret == 0)
+ ret = t_ret;
+ } else {
+ if (F_ISSET(dbp, DB_AM_CREATED_MSTR) &&
+ (t_ret = __memp_fsync(mdbp->mpf)) != 0 && ret == 0)
+ ret = t_ret;
+
+ if ((t_ret =
+ __txn_closeevent(dbenv, txn, mdbp)) != 0 && ret == 0)
+ ret = t_ret;
+ }
+
return (ret);
}
@@ -924,9 +938,9 @@ __fop_remove_setup(dbp, txn, name, flags)
/* Create locker if necessary. */
retry: if (LOCKING_ON(dbenv)) {
if (txn != NULL)
- dbp->lid = txn->txnid;
- else if (dbp->lid == DB_LOCK_INVALIDID) {
- if ((ret = __lock_id(dbenv, &dbp->lid, NULL)) != 0)
+ dbp->locker = txn->locker;
+ else if (dbp->locker == DB_LOCK_INVALIDID) {
+ if ((ret = __lock_id(dbenv, NULL, &dbp->locker)) != 0)
goto err;
}
}
@@ -949,14 +963,14 @@ retry: if (LOCKING_ON(dbenv)) {
* read the meta-data page and get the fileid so that we can lock
* the handle.
*/
- GET_ENVLOCK(dbenv, dbp->lid, &elock);
+ GET_ENVLOCK(dbenv, dbp->locker, &elock);
/* Open database. */
if (F_ISSET(dbp, DB_AM_INMEM)) {
- if ((ret = __db_dbenv_mpool(dbp, name, flags)) == 0)
+ if ((ret = __db_env_mpool(dbp, name, flags)) == 0)
ret = __os_strdup(dbenv, name, &dbp->dname);
} else if (fhp == NULL)
- ret = __os_open(dbenv, name, DB_OSO_RDONLY, 0, &fhp);
+ ret = __os_open(dbenv, name, 0, DB_OSO_RDONLY, 0, &fhp);
if (ret != 0)
goto err;
@@ -965,8 +979,8 @@ retry: if (LOCKING_ON(dbenv)) {
ret = __fop_inmem_read_meta(dbp, txn, name, flags);
else if ((ret = __fop_read_meta(dbenv,
name, mbuf, sizeof(mbuf), fhp, 0, NULL)) == 0)
- ret = __db_meta_setup(dbenv,
- dbp, name, (DBMETA *)mbuf, flags, 1);
+ ret = __db_meta_setup(dbenv, dbp,
+ name, (DBMETA *)mbuf, flags, DB_CHK_META | DB_CHK_NOLSN);
if (ret != 0)
goto err;
@@ -977,7 +991,7 @@ retry: if (LOCKING_ON(dbenv)) {
* prevent that.
*/
if ((ret = __fop_lock_handle(dbenv,
- dbp, dbp->lid, DB_LOCK_WRITE, NULL, DB_LOCK_NOWAIT)) != 0) {
+ dbp, dbp->locker, DB_LOCK_WRITE, NULL, DB_LOCK_NOWAIT)) != 0) {
/*
* Close the file, block on the lock, clean up the dbp, and
* then start all over again.
@@ -990,7 +1004,7 @@ retry: if (LOCKING_ON(dbenv)) {
(txn != NULL && F_ISSET(txn, TXN_NOWAIT)))
goto err;
else if ((ret = __fop_lock_handle(dbenv,
- dbp, dbp->lid, DB_LOCK_WRITE, &elock, 0)) != 0)
+ dbp, dbp->locker, DB_LOCK_WRITE, &elock, 0)) != 0)
goto err;
if (F_ISSET(dbp, DB_AM_INMEM)) {
@@ -998,7 +1012,7 @@ retry: if (LOCKING_ON(dbenv)) {
(void)__db_refresh(dbp, txn, DB_NOSYNC, NULL, 1);
} else {
if (txn != NULL)
- dbp->lid = DB_LOCK_INVALIDID;
+ dbp->locker = NULL;
(void)__db_refresh(dbp, txn, DB_NOSYNC, NULL, 0);
}
goto retry;
@@ -1096,7 +1110,6 @@ __fop_dummy(dbp, txn, old, new, flags)
char *back;
int ret, t_ret;
u_int8_t mbuf[DBMETASIZE];
- u_int32_t locker;
dbenv = dbp->dbenv;
back = NULL;
@@ -1104,7 +1117,6 @@ __fop_dummy(dbp, txn, old, new, flags)
tmpdbp = NULL;
DB_ASSERT(dbenv, txn != NULL);
- locker = txn->txnid;
/*
* Begin sub transaction to encapsulate the rename. Note that we
@@ -1118,7 +1130,7 @@ __fop_dummy(dbp, txn, old, new, flags)
if ((ret = __db_backup_name(dbenv, new, stxn, &back)) != 0)
goto err;
/* Create a dummy dbp handle. */
- if ((ret = db_create(&tmpdbp, dbenv, 0)) != 0)
+ if ((ret = __db_create_internal(&tmpdbp, dbenv, 0)) != 0)
goto err;
memset(mbuf, 0, sizeof(mbuf));
@@ -1130,8 +1142,9 @@ __fop_dummy(dbp, txn, old, new, flags)
goto err;
ret = F_ISSET(dbp, DB_AM_INMEM) ?
- __fop_inmem_swap(dbp, tmpdbp, stxn, old, new, back, locker) :
- __fop_ondisk_swap(dbp, tmpdbp, stxn, old, new, back, locker, flags);
+ __fop_inmem_swap(dbp, tmpdbp, stxn, old, new, back, txn->locker) :
+ __fop_ondisk_swap(dbp,
+ tmpdbp, stxn, old, new, back, txn->locker, flags);
stxn = NULL;
if (ret != 0)
goto err;
@@ -1190,7 +1203,7 @@ __fop_dbrename(dbp, old, new)
* as that wouldn't be transaction-safe. We check explicitly
* for ondisk files, but it's done memp_nameop for in-memory ones.
*/
- GET_ENVLOCK(dbenv, dbp->lid, &elock);
+ GET_ENVLOCK(dbenv, dbp->locker, &elock);
ret = F_ISSET(dbp, DB_AM_INMEM) ? ENOENT :
__os_exists(dbenv, real_new, NULL);
@@ -1257,7 +1270,11 @@ __fop_inmem_create(dbp, name, txn, flags)
(char *)p32, name, DB_FILE_ID_LEN - sizeof(u_int32_t));
dbp->preserve_fid = 1;
- if (DBENV_LOGGING(dbenv) && dbp->log_filename != NULL)
+ if (DBENV_LOGGING(dbenv) &&
+#if !defined(DEBUG_WOP) && !defined(DIAGNOSTIC)
+ txn != NULL &&
+#endif
+ dbp->log_filename != NULL)
memcpy(dbp->log_filename->ufid,
dbp->fileid, DB_FILE_ID_LEN);
}
@@ -1266,10 +1283,14 @@ __fop_inmem_create(dbp, name, txn, flags)
if ((ret = __memp_set_fileid(dbp->mpf, dbp->fileid)) != 0)
goto err;
- if ((ret = __db_dbenv_mpool(dbp, name, flags)) != 0)
+ if ((ret = __db_env_mpool(dbp, name, flags)) != 0)
goto err;
- if (name != NULL && DBENV_LOGGING(dbenv)) {
+ if (DBENV_LOGGING(dbenv) &&
+#if !defined(DEBUG_WOP)
+ txn != NULL &&
+#endif
+ name != NULL) {
DB_INIT_DBT(name_dbt, name, strlen(name) + 1);
memset(&fid_dbt, 0, sizeof(fid_dbt));
fid_dbt.data = dbp->fileid;
@@ -1303,7 +1324,8 @@ __fop_inmem_read_meta(dbp, txn, name, flags)
return (ret);
ret = __db_meta_setup(dbp->dbenv, dbp, name, metap, flags, 1);
- if ((t_ret = __memp_fput(dbp->mpf, metap, 0)) && ret == 0)
+ if ((t_ret =
+ __memp_fput(dbp->mpf, metap, dbp->priority)) && ret == 0)
ret = t_ret;
return (ret);
@@ -1379,7 +1401,7 @@ __fop_inmem_dummy(dbp, txn, name, mbuf)
memcpy(metap->uid, dbp->fileid, DB_FILE_ID_LEN);
if ((t_ret = __memp_fput(dbp->mpf, metap,
- ret == 0 ? 0 : DB_MPOOL_DISCARD)) != 0 && ret == 0)
+ ret == 0 ? dbp->priority : DB_PRIORITY_VERY_LOW)) != 0 && ret == 0)
ret = t_ret;
if (ret != 0)
@@ -1395,7 +1417,8 @@ __fop_ondisk_swap(dbp, tmpdbp, txn, old, new, back, locker, flags)
DB *dbp, *tmpdbp;
DB_TXN *txn;
const char *old, *new, *back;
- u_int32_t locker, flags;
+ DB_LOCKER *locker;
+ u_int32_t flags;
{
DB_ENV *dbenv;
DB_FH *fhp;
@@ -1430,7 +1453,7 @@ retry: GET_ENVLOCK(dbenv, locker, &elock);
* left a placeholder here. We need to check for that case
* and allow this rename to succeed if that's the case.
*/
- if ((ret = __os_open(dbenv, realnew, 0, 0, &fhp)) != 0)
+ if ((ret = __os_open(dbenv, realnew, 0, 0, 0, &fhp)) != 0)
goto err;
if ((ret = __fop_read_meta(dbenv,
realnew, mbuf, sizeof(mbuf), fhp, 0, NULL)) != 0 ||
@@ -1439,6 +1462,10 @@ retry: GET_ENVLOCK(dbenv, locker, &elock);
ret = EEXIST;
goto err;
}
+ ret = __os_closehandle(dbenv, fhp);
+ fhp = NULL;
+ if (ret != 0)
+ goto err;
/*
* Now, try to acquire the handle lock. If the handle is locked
@@ -1469,43 +1496,38 @@ retry: GET_ENVLOCK(dbenv, locker, &elock);
if ((ret = __fop_lock_handle(dbenv,
tmpdbp, locker, DB_LOCK_READ, NULL, DB_LOCK_NOWAIT)) != 0) {
/*
- * Someone holds a writelock. Try for the WRITELOCK
- * and after we get it, retry.
+ * Someone holds a write-lock. Wait for the write-lock
+ * and after we get it, release it and start over.
*/
if ((ret = __fop_lock_handle(dbenv, tmpdbp,
locker, DB_LOCK_WRITE, &elock, 0)) != 0)
goto err;
+ if ((ret =
+ __lock_put(dbenv, &tmpdbp->handle_lock)) != 0)
+ goto err;
+ if ((ret = __db_refresh(tmpdbp, NULL, 0, NULL, 0)) != 0)
+ goto err;
+ goto retry;
+ }
+ /* We got the read lock; try to upgrade it. */
+ ret = __fop_lock_handle(dbenv,
+ tmpdbp, locker, DB_LOCK_WRITE,
+ NULL, DB_LOCK_UPGRADE | DB_LOCK_NOWAIT);
+ if (ret != 0) {
/*
- * We now have the write lock; release it and start
- * over.
+ * We did not get the writelock, so someone
+ * has the handle open. This is an error.
*/
(void)__lock_put(dbenv, &tmpdbp->handle_lock);
- (void)__db_refresh(tmpdbp, NULL, 0, NULL, 0);
- goto retry;
- } else {
- /* We got the read lock; try to upgrade it. */
- ret = __fop_lock_handle(dbenv,
- tmpdbp, locker, DB_LOCK_WRITE,
- NULL, DB_LOCK_UPGRADE | DB_LOCK_NOWAIT);
- if (ret != 0) {
- /*
- * We did not get the writelock, so someone
- * has the handle open. This is an error.
- */
- (void)__lock_put(dbenv, &tmpdbp->handle_lock);
- ret = EEXIST;
- } else if (F_ISSET(tmpdbp, DB_AM_IN_RENAME))
- /* We got the lock and are renaming it. */
- ret = 0;
- else { /* We got the lock, but the file exists. */
- (void)__lock_put(dbenv, &tmpdbp->handle_lock);
- ret = EEXIST;
- }
+ ret = EEXIST;
+ } else if (F_ISSET(tmpdbp, DB_AM_IN_RENAME))
+ /* We got the lock and are renaming it. */
+ ret = 0;
+ else { /* We got the lock, but the file exists. */
+ (void)__lock_put(dbenv, &tmpdbp->handle_lock);
+ ret = EEXIST;
}
- if ((t_ret = __os_closehandle(dbenv, fhp)) != 0 && ret == 0)
- ret = t_ret;
- fhp = NULL;
if (ret != 0)
goto err;
}
@@ -1515,10 +1537,10 @@ retry: GET_ENVLOCK(dbenv, locker, &elock);
* swap for the handle lock.
*/
if ((ret = __fop_rename(dbenv,
- txn, old, new, dbp->fileid, DB_APP_DATA, dflags)) != 0)
+ txn, old, new, dbp->fileid, DB_APP_DATA, 1, dflags)) != 0)
goto err;
if ((ret = __fop_rename(dbenv,
- txn, back, old, tmpdbp->fileid, DB_APP_DATA, dflags)) != 0)
+ txn, back, old, tmpdbp->fileid, DB_APP_DATA, 0, dflags)) != 0)
goto err;
if ((ret = __fop_lock_handle(dbenv,
tmpdbp, locker, DB_LOCK_WRITE, &elock, NOWAIT_FLAG(txn))) != 0)
@@ -1562,6 +1584,11 @@ err: if (txn != NULL) /* Ret must already be set, so void abort. */
(void)__txn_abort(txn);
(void)__ENV_LPUT(dbenv, elock);
+
+ if (fhp != NULL &&
+ (t_ret = __os_closehandle(dbenv, fhp)) != 0 && ret == 0)
+ ret = t_ret;
+
if (realnew != NULL)
__os_free(dbenv, realnew);
if (realold != NULL)
@@ -1574,7 +1601,7 @@ __fop_inmem_swap(olddbp, backdbp, txn, old, new, back, locker)
DB *olddbp, *backdbp;
DB_TXN *txn;
const char *old, *new, *back;
- u_int32_t locker;
+ DB_LOCKER *locker;
{
DB_ENV *dbenv;
DB_LOCK elock;
@@ -1587,12 +1614,12 @@ __fop_inmem_swap(olddbp, backdbp, txn, old, new, back, locker)
dbenv = olddbp->dbenv;
parent = txn->parent;
retry: LOCK_INIT(elock);
- if ((ret = db_create(&tmpdbp, dbenv, 0)) != 0)
+ if ((ret = __db_create_internal(&tmpdbp, dbenv, 0)) != 0)
return (ret);
MAKE_INMEM(tmpdbp);
GET_ENVLOCK(dbenv, locker, &elock);
- if ((ret = __db_dbenv_mpool(tmpdbp, new, 0)) == 0) {
+ if ((ret = __db_env_mpool(tmpdbp, new, 0)) == 0) {
/*
* It is possible that the only reason this database exists is
* because we've done a previous rename of it and we have
@@ -1636,7 +1663,11 @@ retry: LOCK_INIT(elock);
}
/* Log the renames. */
- if (LOGGING_ON(dbenv)) {
+ if (LOGGING_ON(dbenv)
+#ifndef DEBUG_WOP
+ && txn != NULL
+#endif
+ ) {
/* Rename old to new. */
DB_INIT_DBT(fid_dbt, olddbp->fileid, DB_FILE_ID_LEN);
DB_INIT_DBT(n1_dbt, old, strlen(old) + 1);
diff --git a/db/hash/hash.c b/db/hash/hash.c
index 56ad1a25d..0f22e811a 100644
--- a/db/hash/hash.c
+++ b/db/hash/hash.c
@@ -1,8 +1,7 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*/
/*
* Copyright (c) 1990, 1993, 1994
@@ -39,7 +38,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: hash.c,v 12.25 2006/08/24 14:46:04 bostic Exp $
+ * $Id: hash.c,v 12.41 2007/05/17 17:17:59 bostic Exp $
*/
#include "db_config.h"
@@ -52,12 +51,12 @@
#include "dbinc/mp.h"
static int __ham_bulk __P((DBC *, DBT *, u_int32_t));
-static int __ham_c_close __P((DBC *, db_pgno_t, int *));
-static int __ham_c_del __P((DBC *));
-static int __ham_c_destroy __P((DBC *));
-static int __ham_c_get __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *));
-static int __ham_c_put __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *));
-static int __ham_c_writelock __P((DBC *));
+static int __hamc_close __P((DBC *, db_pgno_t, int *));
+static int __hamc_del __P((DBC *));
+static int __hamc_destroy __P((DBC *));
+static int __hamc_get __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *));
+static int __hamc_put __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *));
+static int __hamc_writelock __P((DBC *));
static int __ham_dup_return __P((DBC *, DBT *, u_int32_t));
static int __ham_expand_table __P((DBC *));
static int __ham_lookup __P((DBC *,
@@ -105,8 +104,8 @@ __ham_quick_delete(dbc)
if ((ret = __ham_get_meta(dbc)) != 0)
return (ret);
- if ((ret = __ham_c_writelock(dbc)) == 0)
- ret = __ham_del_pair(dbc, 1);
+ if ((ret = __hamc_writelock(dbc)) == 0)
+ ret = __ham_del_pair(dbc, 0);
if ((t_ret = __ham_release_meta(dbc)) != 0 && ret == 0)
ret = t_ret;
@@ -116,13 +115,13 @@ __ham_quick_delete(dbc)
/* ****************** CURSORS ********************************** */
/*
- * __ham_c_init --
+ * __hamc_init --
* Initialize the hash-specific portion of a cursor.
*
- * PUBLIC: int __ham_c_init __P((DBC *));
+ * PUBLIC: int __hamc_init __P((DBC *));
*/
int
-__ham_c_init(dbc)
+__hamc_init(dbc)
DBC *dbc;
{
DB_ENV *dbenv;
@@ -140,30 +139,30 @@ __ham_c_init(dbc)
}
dbc->internal = (DBC_INTERNAL *) new_curs;
- dbc->c_close = __db_c_close_pp;
- dbc->c_count = __db_c_count_pp;
- dbc->c_del = __db_c_del_pp;
- dbc->c_dup = __db_c_dup_pp;
- dbc->c_get = __db_c_get_pp;
- dbc->c_pget = __db_c_pget_pp;
- dbc->c_put = __db_c_put_pp;
- dbc->c_am_bulk = __ham_bulk;
- dbc->c_am_close = __ham_c_close;
- dbc->c_am_del = __ham_c_del;
- dbc->c_am_destroy = __ham_c_destroy;
- dbc->c_am_get = __ham_c_get;
- dbc->c_am_put = __ham_c_put;
- dbc->c_am_writelock = __ham_c_writelock;
+ dbc->close = dbc->c_close = __dbc_close_pp;
+ dbc->count = dbc->c_count = __dbc_count_pp;
+ dbc->del = dbc->c_del = __dbc_del_pp;
+ dbc->dup = dbc->c_dup = __dbc_dup_pp;
+ dbc->get = dbc->c_get = __dbc_get_pp;
+ dbc->pget = dbc->c_pget = __dbc_pget_pp;
+ dbc->put = dbc->c_put = __dbc_put_pp;
+ dbc->am_bulk = __ham_bulk;
+ dbc->am_close = __hamc_close;
+ dbc->am_del = __hamc_del;
+ dbc->am_destroy = __hamc_destroy;
+ dbc->am_get = __hamc_get;
+ dbc->am_put = __hamc_put;
+ dbc->am_writelock = __hamc_writelock;
return (__ham_item_init(dbc));
}
/*
- * __ham_c_close --
+ * __hamc_close --
* Close down the cursor from a single use.
*/
static int
-__ham_c_close(dbc, root_pgno, rmroot)
+__hamc_close(dbc, root_pgno, rmroot)
DBC *dbc;
db_pgno_t root_pgno;
int *rmroot;
@@ -204,19 +203,19 @@ __ham_c_close(dbc, root_pgno, rmroot)
root_pgno = PGNO_INVALID;
if ((ret =
- hcp->opd->c_am_close(hcp->opd, root_pgno, &doroot)) != 0)
+ hcp->opd->am_close(hcp->opd, root_pgno, &doroot)) != 0)
goto out;
if (doroot != 0) {
if ((ret = __memp_dirty(mpf, &hcp->page,
- dbc->txn, 0)) != 0)
+ dbc->txn, dbc->priority, 0)) != 0)
goto out;
- if ((ret = __ham_del_pair(dbc, 1)) != 0)
+ if ((ret = __ham_del_pair(dbc, 0)) != 0)
goto out;
}
}
-out: if (hcp->page != NULL &&
- (t_ret = __memp_fput(mpf, hcp->page, 0)) != 0 && ret == 0)
+out: if (hcp->page != NULL && (t_ret =
+ __memp_fput(mpf, hcp->page, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
if (gotmeta != 0 && (t_ret = __ham_release_meta(dbc)) != 0 && ret == 0)
ret = t_ret;
@@ -227,11 +226,11 @@ done: if ((t_ret = __ham_item_init(dbc)) != 0 && ret == 0)
}
/*
- * __ham_c_destroy --
+ * __hamc_destroy --
* Cleanup the access method private part of a cursor.
*/
static int
-__ham_c_destroy(dbc)
+__hamc_destroy(dbc)
DBC *dbc;
{
HASH_CURSOR *hcp;
@@ -245,13 +244,13 @@ __ham_c_destroy(dbc)
}
/*
- * __ham_c_count --
+ * __hamc_count --
* Return a count of on-page duplicates.
*
- * PUBLIC: int __ham_c_count __P((DBC *, db_recno_t *));
+ * PUBLIC: int __hamc_count __P((DBC *, db_recno_t *));
*/
int
-__ham_c_count(dbc, recnop)
+__hamc_count(dbc, recnop)
DBC *dbc;
db_recno_t *recnop;
{
@@ -299,14 +298,15 @@ __ham_c_count(dbc, recnop)
*recnop = recno;
-err: if ((t_ret = __memp_fput(mpf, hcp->page, 0)) != 0 && ret == 0)
+err: if ((t_ret =
+ __memp_fput(mpf, hcp->page, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
hcp->page = NULL;
return (ret);
}
static int
-__ham_c_del(dbc)
+__hamc_del(dbc)
DBC *dbc;
{
DB *dbp;
@@ -332,14 +332,15 @@ __ham_c_del(dbc)
if (HPAGE_TYPE(dbp, hcp->page, H_DATAINDEX(hcp->indx)) == H_OFFDUP)
goto out;
- if ((ret = __memp_dirty(mpf, &hcp->page, dbc->txn, 0)) != 0)
+ if ((ret = __memp_dirty(mpf,
+ &hcp->page, dbc->txn, dbc->priority, 0)) != 0)
goto out;
if (F_ISSET(hcp, H_ISDUP)) { /* On-page duplicate. */
if (hcp->dup_off == 0 &&
DUP_SIZE(hcp->dup_len) == LEN_HDATA(dbp, hcp->page,
hcp->hdr->dbmeta.pagesize, hcp->indx))
- ret = __ham_del_pair(dbc, 1);
+ ret = __ham_del_pair(dbc, 0);
else {
repldbt.flags = 0;
F_SET(&repldbt, DB_DBT_PARTIAL);
@@ -351,15 +352,16 @@ __ham_c_del(dbc)
if ((ret = __ham_replpair(dbc, &repldbt, 0)) == 0) {
hcp->dup_tlen -= DUP_SIZE(hcp->dup_len);
F_SET(hcp, H_DELETED);
- ret = __ham_c_update(dbc,
- DUP_SIZE(hcp->dup_len), 0, 1);
+ ret = __hamc_update(dbc, DUP_SIZE(hcp->dup_len),
+ DB_HAM_CURADJ_DEL, 1);
}
}
} else /* Not a duplicate */
- ret = __ham_del_pair(dbc, 1);
+ ret = __ham_del_pair(dbc, 0);
out: if (hcp->page != NULL) {
- if ((t_ret = __memp_fput(mpf, hcp->page, 0)) != 0 && ret == 0)
+ if ((t_ret = __memp_fput(mpf,
+ hcp->page, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
hcp->page = NULL;
}
@@ -369,14 +371,14 @@ out: if (hcp->page != NULL) {
}
/*
- * __ham_c_dup --
+ * __hamc_dup --
* Duplicate a hash cursor, such that the new one holds appropriate
* locks for the position of the original.
*
- * PUBLIC: int __ham_c_dup __P((DBC *, DBC *));
+ * PUBLIC: int __hamc_dup __P((DBC *, DBC *));
*/
int
-__ham_c_dup(orig_dbc, new_dbc)
+__hamc_dup(orig_dbc, new_dbc)
DBC *orig_dbc, *new_dbc;
{
HASH_CURSOR *orig, *new;
@@ -399,7 +401,7 @@ __ham_c_dup(orig_dbc, new_dbc)
}
static int
-__ham_c_get(dbc, key, data, flags, pgnop)
+__hamc_get(dbc, key, data, flags, pgnop)
DBC *dbc;
DBT *key;
DBT *data;
@@ -430,46 +432,44 @@ __ham_c_get(dbc, key, data, flags, pgnop)
ret = 0;
switch (flags) {
+ case DB_PREV_DUP:
+ F_SET(hcp, H_DUPONLY);
+ goto prev;
case DB_PREV_NODUP:
F_SET(hcp, H_NEXT_NODUP);
/* FALLTHROUGH */
case DB_PREV:
if (IS_INITIALIZED(dbc)) {
- ret = __ham_item_prev(dbc, lock_type, pgnop);
+prev: ret = __ham_item_prev(dbc, lock_type, pgnop);
break;
}
/* FALLTHROUGH */
case DB_LAST:
ret = __ham_item_last(dbc, lock_type, pgnop);
break;
+ case DB_NEXT_DUP:
+ case DB_GET_BOTHC:
+ /* cgetchk has already determined that the cursor is set. */
+ F_SET(hcp, H_DUPONLY);
+ goto next;
case DB_NEXT_NODUP:
F_SET(hcp, H_NEXT_NODUP);
/* FALLTHROUGH */
case DB_NEXT:
if (IS_INITIALIZED(dbc)) {
- ret = __ham_item_next(dbc, lock_type, pgnop);
+next: ret = __ham_item_next(dbc, lock_type, pgnop);
break;
}
/* FALLTHROUGH */
case DB_FIRST:
ret = __ham_item_first(dbc, lock_type, pgnop);
break;
- case DB_NEXT_DUP:
- /* cgetchk has already determined that the cursor is set. */
- F_SET(hcp, H_DUPONLY);
- ret = __ham_item_next(dbc, lock_type, pgnop);
- break;
case DB_SET:
case DB_SET_RANGE:
case DB_GET_BOTH:
case DB_GET_BOTH_RANGE:
ret = __ham_lookup(dbc, key, 0, lock_type, pgnop);
break;
- case DB_GET_BOTHC:
- F_SET(hcp, H_DUPONLY);
-
- ret = __ham_item_next(dbc, lock_type, pgnop);
- break;
case DB_CURRENT:
/* cgetchk has already determined that the cursor is set. */
if (F_ISSET(hcp, H_DELETED)) {
@@ -480,7 +480,7 @@ __ham_c_get(dbc, key, data, flags, pgnop)
ret = __ham_item(dbc, lock_type, pgnop);
break;
default:
- ret = __db_unknown_flag(dbenv, "__ham_c_get", flags);
+ ret = __db_unknown_flag(dbenv, "__hamc_get", flags);
break;
}
@@ -496,7 +496,7 @@ __ham_c_get(dbc, key, data, flags, pgnop)
ret = __ham_dup_return(dbc, data, flags);
break;
} else if (!F_ISSET(hcp, H_NOMORE)) {
- __db_errx(dbenv, "H_NOMORE returned to __ham_c_get");
+ __db_errx(dbenv, "H_NOMORE returned to __hamc_get");
ret = EINVAL;
break;
}
@@ -505,63 +505,61 @@ __ham_c_get(dbc, key, data, flags, pgnop)
* Ran out of entries in a bucket; change buckets.
*/
switch (flags) {
- case DB_LAST:
- case DB_PREV:
- case DB_PREV_NODUP:
- ret = __memp_fput(mpf, hcp->page, 0);
- hcp->page = NULL;
- if (hcp->bucket == 0) {
- ret = DB_NOTFOUND;
- hcp->pgno = PGNO_INVALID;
- goto err;
- }
- F_CLR(hcp, H_ISDUP);
- hcp->bucket--;
- hcp->indx = NDX_INVALID;
- hcp->pgno = BUCKET_TO_PAGE(hcp, hcp->bucket);
- if (ret == 0)
- ret = __ham_item_prev(dbc,
- lock_type, pgnop);
- break;
- case DB_FIRST:
- case DB_NEXT:
- case DB_NEXT_NODUP:
- ret = __memp_fput(mpf, hcp->page, 0);
- hcp->page = NULL;
- hcp->indx = NDX_INVALID;
- hcp->bucket++;
- F_CLR(hcp, H_ISDUP);
- hcp->pgno = BUCKET_TO_PAGE(hcp, hcp->bucket);
- if (hcp->bucket > hcp->hdr->max_bucket) {
- ret = DB_NOTFOUND;
- hcp->pgno = PGNO_INVALID;
- goto err;
- }
- if (ret == 0)
- ret = __ham_item_next(dbc,
- lock_type, pgnop);
- break;
- case DB_GET_BOTH:
- case DB_GET_BOTHC:
- case DB_GET_BOTH_RANGE:
- case DB_NEXT_DUP:
- case DB_SET:
- case DB_SET_RANGE:
- /* Key not found. */
+ case DB_LAST:
+ case DB_PREV:
+ case DB_PREV_DUP:
+ case DB_PREV_NODUP:
+ ret = __memp_fput(mpf, hcp->page, dbc->priority);
+ hcp->page = NULL;
+ if (hcp->bucket == 0) {
ret = DB_NOTFOUND;
+ hcp->pgno = PGNO_INVALID;
goto err;
- case DB_CURRENT:
- /*
- * This should only happen if you are doing
- * deletes and reading with concurrent threads
- * and not doing proper locking. We return
- * the same error code as we would if the
- * cursor were deleted.
- */
- ret = DB_KEYEMPTY;
+ }
+ F_CLR(hcp, H_ISDUP);
+ hcp->bucket--;
+ hcp->indx = NDX_INVALID;
+ hcp->pgno = BUCKET_TO_PAGE(hcp, hcp->bucket);
+ if (ret == 0)
+ ret = __ham_item_prev(dbc, lock_type, pgnop);
+ break;
+ case DB_FIRST:
+ case DB_NEXT:
+ case DB_NEXT_NODUP:
+ ret = __memp_fput(mpf, hcp->page, dbc->priority);
+ hcp->page = NULL;
+ hcp->indx = NDX_INVALID;
+ hcp->bucket++;
+ F_CLR(hcp, H_ISDUP);
+ hcp->pgno = BUCKET_TO_PAGE(hcp, hcp->bucket);
+ if (hcp->bucket > hcp->hdr->max_bucket) {
+ ret = DB_NOTFOUND;
+ hcp->pgno = PGNO_INVALID;
goto err;
- default:
- DB_ASSERT(dbenv, 0);
+ }
+ if (ret == 0)
+ ret = __ham_item_next(dbc, lock_type, pgnop);
+ break;
+ case DB_GET_BOTH:
+ case DB_GET_BOTHC:
+ case DB_GET_BOTH_RANGE:
+ case DB_NEXT_DUP:
+ case DB_SET:
+ case DB_SET_RANGE:
+ /* Key not found. */
+ ret = DB_NOTFOUND;
+ goto err;
+ case DB_CURRENT:
+ /*
+ * This should only happen if you are doing deletes and
+ * reading with concurrent threads and not doing proper
+ * locking. We return the same error code as we would
+ * if the cursor were deleted.
+ */
+ ret = DB_KEYEMPTY;
+ goto err;
+ default:
+ DB_ASSERT(dbenv, 0);
}
}
@@ -725,7 +723,8 @@ back_up:
if (ret != DB_NOTFOUND)
return (ret);
if ((ret = __memp_fput(mpf,
- cp->page, 0)) != 0)
+ cp->page,
+ dbc->priority)) != 0)
return (ret);
cp->page = NULL;
if (cp->bucket == 0) {
@@ -926,7 +925,8 @@ get_space:
goto next_pg;
if (ret != DB_NOTFOUND)
return (ret);
- if ((ret = __memp_fput(dbc->dbp->mpf, cp->page, 0)) != 0)
+ if ((ret = __memp_fput(dbc->dbp->mpf,
+ cp->page, dbc->priority)) != 0)
return (ret);
cp->page = NULL;
if ((ret = __ham_get_meta(dbc)) != 0)
@@ -937,7 +937,7 @@ get_space:
/*
* Restore cursor to its previous state. We're past
* the last item in the last bucket, so the next
- * DBC->c_get(DB_NEXT) will return DB_NOTFOUND.
+ * DBC->get(DB_NEXT) will return DB_NOTFOUND.
*/
cp->bucket--;
ret = DB_NOTFOUND;
@@ -970,7 +970,7 @@ get_space:
}
static int
-__ham_c_put(dbc, key, data, flags, pgnop)
+__hamc_put(dbc, key, data, flags, pgnop)
DBC *dbc;
DBT *key;
DBT *data;
@@ -1015,7 +1015,8 @@ __ham_c_put(dbc, key, data, flags, pgnop)
key, nbytes, DB_LOCK_WRITE, pgnop)) == DB_NOTFOUND) {
if (hcp->seek_found_page != PGNO_INVALID &&
hcp->seek_found_page != hcp->pgno) {
- if ((ret = __memp_fput(mpf, hcp->page, 0)) != 0)
+ if ((ret = __memp_fput(mpf,
+ hcp->page, dbc->priority)) != 0)
goto err2;
hcp->page = NULL;
hcp->pgno = hcp->seek_found_page;
@@ -1061,12 +1062,20 @@ __ham_c_put(dbc, key, data, flags, pgnop)
ret = __ham_item(dbc, DB_LOCK_WRITE, pgnop);
break;
default:
- ret = __db_unknown_flag(dbp->dbenv, "__ham_c_put", flags);
+ ret = __db_unknown_flag(dbp->dbenv, "__hamc_put", flags);
break;
}
+ /*
+ * Invalidate any insert index found. So they are not reused
+ * in future inserts.
+ */
+ hcp->seek_found_page = PGNO_INVALID;
+ hcp->seek_found_indx = NDX_INVALID;
+
if (*pgnop == PGNO_INVALID && ret == 0) {
- if ((ret = __memp_dirty(mpf, &hcp->page, dbc->txn, 0)) != 0)
+ if ((ret = __memp_dirty(mpf,
+ &hcp->page, dbc->txn, dbc->priority, 0)) != 0)
goto done;
if (flags == DB_CURRENT ||
((flags == DB_KEYFIRST ||
@@ -1078,7 +1087,8 @@ __ham_c_put(dbc, key, data, flags, pgnop)
}
done: if (hcp->page != NULL) {
- if ((t_ret = __memp_fput(mpf, hcp->page, 0)) != 0 && ret == 0)
+ if ((t_ret = __memp_fput(mpf,
+ hcp->page, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
if (t_ret == 0)
hcp->page = NULL;
@@ -1226,7 +1236,7 @@ __ham_expand_table(dbc)
/* Write out whatever page we ended up modifying. */
h->lsn = lsn;
- if ((ret = __memp_fput(mpf, h, 0)) != 0)
+ if ((ret = __memp_fput(mpf, h, dbc->priority)) != 0)
goto err;
h = NULL;
@@ -1244,12 +1254,13 @@ __ham_expand_table(dbc)
err: if (got_meta)
if ((t_ret =
- __memp_fput(mpf, mmeta, 0)) != 0 && ret == 0)
+ __memp_fput(mpf, mmeta, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
if ((t_ret = __TLPUT(dbc, metalock)) != 0 && ret == 0)
ret = t_ret;
if (h != NULL)
- if ((t_ret = __memp_fput(mpf, h, 0)) != 0 && ret == 0)
+ if ((t_ret = __memp_fput(mpf,
+ h, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
return (ret);
@@ -1541,7 +1552,7 @@ __ham_overwrite(dbc, nval, flags)
(hcp->dup_tlen - nondup_size) + newsize)) {
if ((ret = __ham_dup_convert(dbc)) != 0)
return (ret);
- return (hcp->opd->c_am_put(hcp->opd,
+ return (hcp->opd->am_put(hcp->opd,
NULL, nval, flags, NULL));
}
@@ -1611,10 +1622,19 @@ __ham_overwrite(dbc, nval, flags)
if (ret != 0)
return (ret);
- if (newsize > nondup_size)
+ if (newsize > nondup_size) {
+ if ((ret = __hamc_update(dbc,
+ (newsize - nondup_size),
+ DB_HAM_CURADJ_ADDMOD, 1)) != 0)
+ return (ret);
hcp->dup_tlen += (newsize - nondup_size);
- else
+ } else {
+ if ((ret = __hamc_update(dbc,
+ (nondup_size - newsize),
+ DB_HAM_CURADJ_DELMOD, 1)) != 0)
+ return (ret);
hcp->dup_tlen -= (nondup_size - newsize);
+ }
hcp->dup_len = newsize;
return (0);
} else {
@@ -1623,7 +1643,7 @@ __ham_overwrite(dbc, nval, flags)
(hcp->dup_tlen - hcp->dup_len) + nval->size)) {
if ((ret = __ham_dup_convert(dbc)) != 0)
return (ret);
- return (hcp->opd->c_am_put(hcp->opd,
+ return (hcp->opd->am_put(hcp->opd,
NULL, nval, flags, NULL));
}
@@ -1651,10 +1671,19 @@ __ham_overwrite(dbc, nval, flags)
tmp_val.dlen = DUP_SIZE(hcp->dup_len);
/* Update cursor */
- if (nval->size > hcp->dup_len)
+ if (nval->size > hcp->dup_len) {
+ if ((ret = __hamc_update(dbc,
+ (nval->size - hcp->dup_len),
+ DB_HAM_CURADJ_ADDMOD, 1)) != 0)
+ return (ret);
hcp->dup_tlen += (nval->size - hcp->dup_len);
- else
+ } else {
+ if ((ret = __hamc_update(dbc,
+ (hcp->dup_len - nval->size),
+ DB_HAM_CURADJ_DELMOD, 1)) != 0)
+ return (ret);
hcp->dup_tlen -= (hcp->dup_len - nval->size);
+ }
hcp->dup_len = (db_indx_t)nval->size;
}
myval = &tmp_val;
@@ -1697,13 +1726,13 @@ __ham_lookup(dbc, key, sought, mode, pgnop)
{
DB *dbp;
HASH_CURSOR *hcp;
- db_pgno_t pgno;
- u_int32_t tlen;
+ db_pgno_t next_pgno;
int match, ret;
- u_int8_t *hk, *dk;
+ u_int8_t *dk;
dbp = dbc->dbp;
hcp = (HASH_CURSOR *)dbc->internal;
+
/*
* Set up cursor so that we're looking for space to add an item
* as we cycle through the pages looking for the key.
@@ -1714,63 +1743,55 @@ __ham_lookup(dbc, key, sought, mode, pgnop)
hcp->bucket = __ham_call_hash(dbc, (u_int8_t *)key->data, key->size);
hcp->pgno = BUCKET_TO_PAGE(hcp, hcp->bucket);
+ /* look though all pages in the bucket for the key */
+ if ((ret = __ham_get_cpage(dbc, mode)) != 0)
+ return (ret);
- for (;;) {
- *pgnop = PGNO_INVALID;
- if ((ret = __ham_item_next(dbc, mode, pgnop)) != 0)
+ *pgnop = PGNO_INVALID;
+ if (hcp->indx == NDX_INVALID) {
+ hcp->indx = 0;
+ F_CLR(hcp, H_ISDUP);
+ }
+ while (hcp->pgno != PGNO_INVALID) {
+ /* Are we looking for space to insert an item. */
+ if (hcp->seek_size != 0 &&
+ hcp->seek_found_page == PGNO_INVALID &&
+ hcp->seek_size < P_FREESPACE(dbp, hcp->page)) {
+ hcp->seek_found_page = hcp->pgno;
+ hcp->seek_found_indx = NDX_INVALID;
+ }
+
+ if ((ret = __ham_getindex(dbp, dbc->txn, hcp->page, key,
+ H_KEYDATA, &match, &hcp->indx)) != 0)
return (ret);
- if (F_ISSET(hcp, H_NOMORE))
- break;
+ /*
+ * If this is the first page in the bucket with space for
+ * inserting the requested item. Store the insert index to
+ * save having to look it up again later.
+ */
+ if (hcp->seek_found_page == hcp->pgno)
+ hcp->seek_found_indx = hcp->indx;
+
+ if (match == 0) {
+ F_SET(hcp, H_OK);
+ dk = H_PAIRDATA(dbp, hcp->page, hcp->indx);
+ if (HPAGE_PTYPE(dk) == H_OFFDUP)
+ memcpy(pgnop, HOFFDUP_PGNO(dk),
+ sizeof(db_pgno_t));
+ return (0);
+ }
- hk = H_PAIRKEY(dbp, hcp->page, hcp->indx);
- switch (HPAGE_PTYPE(hk)) {
- case H_OFFPAGE:
- memcpy(&tlen, HOFFPAGE_TLEN(hk), sizeof(u_int32_t));
- if (tlen == key->size) {
- memcpy(&pgno,
- HOFFPAGE_PGNO(hk), sizeof(db_pgno_t));
- if ((ret = __db_moff(dbp, dbc->txn,
- key, pgno, tlen, NULL, &match)) != 0)
- return (ret);
- if (match == 0)
- goto found_key;
- }
- break;
- case H_KEYDATA:
- if (key->size ==
- LEN_HKEY(dbp, hcp->page, dbp->pgsize, hcp->indx) &&
- memcmp(key->data,
- HKEYDATA_DATA(hk), key->size) == 0) {
- /* Found the key, check for data type. */
-found_key: F_SET(hcp, H_OK);
- dk = H_PAIRDATA(dbp, hcp->page, hcp->indx);
- if (HPAGE_PTYPE(dk) == H_OFFDUP)
- memcpy(pgnop, HOFFDUP_PGNO(dk),
- sizeof(db_pgno_t));
- return (0);
- }
+ /* move the cursor to the next page. */
+ if (NEXT_PGNO(hcp->page) == PGNO_INVALID)
break;
- case H_DUPLICATE:
- case H_OFFDUP:
- /*
- * These are errors because keys are never
- * duplicated, only data items are.
- */
- return (__db_pgfmt(dbp->dbenv, PGNO(hcp->page)));
- default:
- return (__db_pgfmt(dbp->dbenv, PGNO(hcp->page)));
- }
+ next_pgno = NEXT_PGNO(hcp->page);
+ hcp->indx = 0;
+ if ((ret = __ham_next_cpage(dbc, next_pgno)) != 0)
+ return (ret);
}
-
- /*
- * Item was not found.
- */
-
- if (sought != 0)
- return (ret);
-
- return (ret);
+ F_SET(hcp, H_NOMORE);
+ return (DB_NOTFOUND);
}
/*
@@ -1814,14 +1835,15 @@ __ham_init_dbt(dbenv, dbt, size, bufp, sizep)
* added (add == 1) or deleted (add == 0).
* dup indicates if the addition occurred into a duplicate set.
*
- * PUBLIC: int __ham_c_update
- * PUBLIC: __P((DBC *, u_int32_t, int, int));
+ * PUBLIC: int __hamc_update
+ * PUBLIC: __P((DBC *, u_int32_t, db_ham_curadj, int));
*/
int
-__ham_c_update(dbc, len, add, is_dup)
+__hamc_update(dbc, len, operation, is_dup)
DBC *dbc;
u_int32_t len;
- int add, is_dup;
+ db_ham_curadj operation;
+ int is_dup;
{
DB *dbp, *ldbp;
DBC *cp;
@@ -1829,7 +1851,7 @@ __ham_c_update(dbc, len, add, is_dup)
DB_LSN lsn;
DB_TXN *my_txn;
HASH_CURSOR *hcp, *lcp;
- int found, ret;
+ int found, ret, was_mod, was_add;
u_int32_t order;
dbp = dbc->dbp;
@@ -1847,13 +1869,35 @@ __ham_c_update(dbc, len, add, is_dup)
MUTEX_LOCK(dbenv, dbenv->mtx_dblist);
+ switch (operation) {
+ case DB_HAM_CURADJ_DEL:
+ was_mod = 0;
+ was_add = 0;
+ break;
+ case DB_HAM_CURADJ_ADD:
+ was_mod = 0;
+ was_add = 1;
+ break;
+ case DB_HAM_CURADJ_DELMOD:
+ was_mod = 1;
+ was_add = 0;
+ break;
+ case DB_HAM_CURADJ_ADDMOD:
+ was_mod = 1;
+ was_add = 1;
+ break;
+ default:
+ DB_ASSERT(dbenv, "Invalid arg to hamc_update");
+ return (EINVAL);
+ }
+
/*
* Calculate the order of this deleted record.
* This will be one greater than any cursor that is pointing
* at this record and already marked as deleted.
*/
order = 0;
- if (!add) {
+ if (was_add == 0) {
FIND_FIRST_DB_MATCH(dbenv, dbp, ldbp);
for (order = 1;
ldbp != NULL && ldbp->adj_fileid == dbp->adj_fileid;
@@ -1896,7 +1940,7 @@ __ham_c_update(dbc, len, add, is_dup)
found = 1;
if (!is_dup) {
- if (add) {
+ if (was_add == 1) {
/*
* This routine is not called to add
* non-dup records which are always put
@@ -1920,16 +1964,14 @@ __ham_c_update(dbc, len, add, is_dup)
* enough so that the lowest
* cursor moved has order 1.
* cp_arg->order is the split
- * point, so decrement by one
- * less than that.
+ * point, so decrement by it.
*/
lcp->order -=
- (hcp->order - 1);
+ hcp->order;
lcp->indx += 2;
}
} else if (lcp->indx >= hcp->indx)
lcp->indx += 2;
-
} else {
if (lcp->indx > hcp->indx) {
lcp->indx -= 2;
@@ -1945,12 +1987,11 @@ __ham_c_update(dbc, len, add, is_dup)
}
} else if (lcp->indx == hcp->indx) {
/*
- * Handle duplicates. This routine is
- * only called for on page dups.
- * Off page dups are handled by btree/rtree
- * code.
+ * Handle duplicates. This routine is only
+ * called for on page dups. Off page dups are
+ * handled by btree/rtree code.
*/
- if (add) {
+ if (was_add == 1) {
lcp->dup_tlen += len;
if (lcp->dup_off == hcp->dup_off &&
F_ISSET(hcp, H_DELETED) &&
@@ -1964,7 +2005,9 @@ __ham_c_update(dbc, len, add, is_dup)
(hcp->order -1);
lcp->dup_off += len;
}
- } else if (lcp->dup_off >= hcp->dup_off)
+ } else if (lcp->dup_off >
+ hcp->dup_off || (!was_mod &&
+ lcp->dup_off == hcp->dup_off))
lcp->dup_off += len;
} else {
lcp->dup_tlen -= len;
@@ -1974,8 +2017,8 @@ __ham_c_update(dbc, len, add, is_dup)
hcp->dup_off &&
F_ISSET(lcp, H_DELETED))
lcp->order += order;
- } else if (lcp->dup_off ==
- hcp->dup_off &&
+ } else if (!was_mod &&
+ lcp->dup_off == hcp->dup_off &&
!F_ISSET(lcp, H_DELETED)) {
F_SET(lcp, H_DELETED);
lcp->order = order;
@@ -1989,7 +2032,8 @@ __ham_c_update(dbc, len, add, is_dup)
if (found != 0 && DBC_LOGGING(dbc)) {
if ((ret = __ham_curadj_log(dbp, my_txn, &lsn, 0, hcp->pgno,
- hcp->indx, len, hcp->dup_off, add, is_dup, order)) != 0)
+ hcp->indx, len, hcp->dup_off, (int)operation, is_dup,
+ order)) != 0)
return (ret);
}
@@ -2074,7 +2118,7 @@ err:
}
static int
-__ham_c_writelock(dbc)
+__hamc_writelock(dbc)
DBC *dbc;
{
DB_LOCK tmp_lock;
diff --git a/db/hash/hash.src b/db/hash/hash.src
index 2e2c26221..91a07fc9f 100644
--- a/db/hash/hash.src
+++ b/db/hash/hash.src
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: hash.src,v 12.6 2006/08/24 14:46:04 bostic Exp $
+ * $Id: hash.src,v 12.8 2007/05/17 15:15:38 bostic Exp $
*/
/*
* Copyright (c) 1995, 1996
diff --git a/db/hash/hash_auto.c b/db/hash/hash_auto.c
index aa395e5a0..7b1ad0b1a 100644
--- a/db/hash/hash_auto.c
+++ b/db/hash/hash_auto.c
@@ -187,6 +187,7 @@ __ham_insdel_log(dbp, txnp, ret_lsnp, flags,
*ret_lsnp = *rlsnp;
}
} else {
+ ret = 0;
#ifdef DIAGNOSTIC
/*
* Set the debug bit if we are going to log non-durable
@@ -196,10 +197,9 @@ __ham_insdel_log(dbp, txnp, ret_lsnp, flags,
rectype |= DB_debug_FLAG;
memcpy(logrec.data, &rectype, sizeof(rectype));
- ret = __log_put(dbenv,
- rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
-#else
- ret = 0;
+ if (!IS_REP_CLIENT(dbenv))
+ ret = __log_put(dbenv,
+ rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
#endif
STAILQ_INSERT_HEAD(&txnp->logs, lr, links);
F_SET((TXN_DETAIL *)txnp->td, TXN_DTL_INMEMORY);
@@ -470,6 +470,7 @@ __ham_newpage_log(dbp, txnp, ret_lsnp, flags,
*ret_lsnp = *rlsnp;
}
} else {
+ ret = 0;
#ifdef DIAGNOSTIC
/*
* Set the debug bit if we are going to log non-durable
@@ -479,10 +480,9 @@ __ham_newpage_log(dbp, txnp, ret_lsnp, flags,
rectype |= DB_debug_FLAG;
memcpy(logrec.data, &rectype, sizeof(rectype));
- ret = __log_put(dbenv,
- rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
-#else
- ret = 0;
+ if (!IS_REP_CLIENT(dbenv))
+ ret = __log_put(dbenv,
+ rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
#endif
STAILQ_INSERT_HEAD(&txnp->logs, lr, links);
F_SET((TXN_DETAIL *)txnp->td, TXN_DTL_INMEMORY);
@@ -722,6 +722,7 @@ __ham_splitdata_log(dbp, txnp, ret_lsnp, flags, opcode, pgno, pageimage, pagelsn
*ret_lsnp = *rlsnp;
}
} else {
+ ret = 0;
#ifdef DIAGNOSTIC
/*
* Set the debug bit if we are going to log non-durable
@@ -731,10 +732,9 @@ __ham_splitdata_log(dbp, txnp, ret_lsnp, flags, opcode, pgno, pageimage, pagelsn
rectype |= DB_debug_FLAG;
memcpy(logrec.data, &rectype, sizeof(rectype));
- ret = __log_put(dbenv,
- rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
-#else
- ret = 0;
+ if (!IS_REP_CLIENT(dbenv))
+ ret = __log_put(dbenv,
+ rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
#endif
STAILQ_INSERT_HEAD(&txnp->logs, lr, links);
F_SET((TXN_DETAIL *)txnp->td, TXN_DTL_INMEMORY);
@@ -993,6 +993,7 @@ __ham_replace_log(dbp, txnp, ret_lsnp, flags, pgno, ndx, pagelsn, off, olditem,
*ret_lsnp = *rlsnp;
}
} else {
+ ret = 0;
#ifdef DIAGNOSTIC
/*
* Set the debug bit if we are going to log non-durable
@@ -1002,10 +1003,9 @@ __ham_replace_log(dbp, txnp, ret_lsnp, flags, pgno, ndx, pagelsn, off, olditem,
rectype |= DB_debug_FLAG;
memcpy(logrec.data, &rectype, sizeof(rectype));
- ret = __log_put(dbenv,
- rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
-#else
- ret = 0;
+ if (!IS_REP_CLIENT(dbenv))
+ ret = __log_put(dbenv,
+ rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
#endif
STAILQ_INSERT_HEAD(&txnp->logs, lr, links);
F_SET((TXN_DETAIL *)txnp->td, TXN_DTL_INMEMORY);
@@ -1287,6 +1287,7 @@ __ham_copypage_log(dbp, txnp, ret_lsnp, flags, pgno, pagelsn, next_pgno, nextlsn
*ret_lsnp = *rlsnp;
}
} else {
+ ret = 0;
#ifdef DIAGNOSTIC
/*
* Set the debug bit if we are going to log non-durable
@@ -1296,10 +1297,9 @@ __ham_copypage_log(dbp, txnp, ret_lsnp, flags, pgno, pagelsn, next_pgno, nextlsn
rectype |= DB_debug_FLAG;
memcpy(logrec.data, &rectype, sizeof(rectype));
- ret = __log_put(dbenv,
- rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
-#else
- ret = 0;
+ if (!IS_REP_CLIENT(dbenv))
+ ret = __log_put(dbenv,
+ rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
#endif
STAILQ_INSERT_HEAD(&txnp->logs, lr, links);
F_SET((TXN_DETAIL *)txnp->td, TXN_DTL_INMEMORY);
@@ -1650,6 +1650,7 @@ __ham_metagroup_log(dbp, txnp, ret_lsnp, flags, bucket, mmpgno, mmetalsn, mpgno,
*ret_lsnp = *rlsnp;
}
} else {
+ ret = 0;
#ifdef DIAGNOSTIC
/*
* Set the debug bit if we are going to log non-durable
@@ -1659,10 +1660,9 @@ __ham_metagroup_log(dbp, txnp, ret_lsnp, flags, bucket, mmpgno, mmetalsn, mpgno,
rectype |= DB_debug_FLAG;
memcpy(logrec.data, &rectype, sizeof(rectype));
- ret = __log_put(dbenv,
- rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
-#else
- ret = 0;
+ if (!IS_REP_CLIENT(dbenv))
+ ret = __log_put(dbenv,
+ rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
#endif
STAILQ_INSERT_HEAD(&txnp->logs, lr, links);
F_SET((TXN_DETAIL *)txnp->td, TXN_DTL_INMEMORY);
@@ -1964,6 +1964,7 @@ __ham_groupalloc_log(dbp, txnp, ret_lsnp, flags, meta_lsn, start_pgno, num, unus
*ret_lsnp = *rlsnp;
}
} else {
+ ret = 0;
#ifdef DIAGNOSTIC
/*
* Set the debug bit if we are going to log non-durable
@@ -1973,10 +1974,9 @@ __ham_groupalloc_log(dbp, txnp, ret_lsnp, flags, meta_lsn, start_pgno, num, unus
rectype |= DB_debug_FLAG;
memcpy(logrec.data, &rectype, sizeof(rectype));
- ret = __log_put(dbenv,
- rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
-#else
- ret = 0;
+ if (!IS_REP_CLIENT(dbenv))
+ ret = __log_put(dbenv,
+ rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
#endif
STAILQ_INSERT_HEAD(&txnp->logs, lr, links);
F_SET((TXN_DETAIL *)txnp->td, TXN_DTL_INMEMORY);
@@ -2215,6 +2215,7 @@ __ham_curadj_log(dbp, txnp, ret_lsnp, flags, pgno, indx, len, dup_off, add,
*ret_lsnp = *rlsnp;
}
} else {
+ ret = 0;
#ifdef DIAGNOSTIC
/*
* Set the debug bit if we are going to log non-durable
@@ -2224,10 +2225,9 @@ __ham_curadj_log(dbp, txnp, ret_lsnp, flags, pgno, indx, len, dup_off, add,
rectype |= DB_debug_FLAG;
memcpy(logrec.data, &rectype, sizeof(rectype));
- ret = __log_put(dbenv,
- rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
-#else
- ret = 0;
+ if (!IS_REP_CLIENT(dbenv))
+ ret = __log_put(dbenv,
+ rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
#endif
STAILQ_INSERT_HEAD(&txnp->logs, lr, links);
F_SET((TXN_DETAIL *)txnp->td, TXN_DTL_INMEMORY);
@@ -2461,6 +2461,7 @@ __ham_chgpg_log(dbp, txnp, ret_lsnp, flags, mode, old_pgno, new_pgno, old_indx,
*ret_lsnp = *rlsnp;
}
} else {
+ ret = 0;
#ifdef DIAGNOSTIC
/*
* Set the debug bit if we are going to log non-durable
@@ -2470,10 +2471,9 @@ __ham_chgpg_log(dbp, txnp, ret_lsnp, flags, mode, old_pgno, new_pgno, old_indx,
rectype |= DB_debug_FLAG;
memcpy(logrec.data, &rectype, sizeof(rectype));
- ret = __log_put(dbenv,
- rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
-#else
- ret = 0;
+ if (!IS_REP_CLIENT(dbenv))
+ ret = __log_put(dbenv,
+ rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
#endif
STAILQ_INSERT_HEAD(&txnp->logs, lr, links);
F_SET((TXN_DETAIL *)txnp->td, TXN_DTL_INMEMORY);
diff --git a/db/hash/hash_conv.c b/db/hash/hash_conv.c
index dda40b5e7..314c238e1 100644
--- a/db/hash/hash_conv.c
+++ b/db/hash/hash_conv.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: hash_conv.c,v 12.4 2006/08/24 14:46:05 bostic Exp $
+ * $Id: hash_conv.c,v 12.6 2007/05/17 15:15:38 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/hash/hash_dup.c b/db/hash/hash_dup.c
index 7252d8480..2567310b5 100644
--- a/db/hash/hash_dup.c
+++ b/db/hash/hash_dup.c
@@ -1,8 +1,7 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*/
/*
* Copyright (c) 1990, 1993, 1994
@@ -35,7 +34,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: hash_dup.c,v 12.17 2006/09/07 20:05:29 bostic Exp $
+ * $Id: hash_dup.c,v 12.25 2007/05/17 17:18:00 bostic Exp $
*/
/*
@@ -53,7 +52,7 @@
#include "dbinc/btree.h"
#include "dbinc/mp.h"
-static int __ham_c_chgpg __P((DBC *,
+static int __hamc_chgpg __P((DBC *,
db_pgno_t, u_int32_t, db_pgno_t, u_int32_t));
static int __ham_check_move __P((DBC *, u_int32_t));
static int __ham_dcursor __P((DBC *, db_pgno_t, u_int32_t));
@@ -130,7 +129,7 @@ __ham_add_dup(dbc, nval, flags, pgnop)
if ((ret = __ham_dup_convert(dbc)) != 0)
return (ret);
- return (hcp->opd->c_am_put(hcp->opd,
+ return (hcp->opd->am_put(hcp->opd,
NULL, nval, flags, NULL));
}
@@ -199,7 +198,8 @@ __ham_add_dup(dbc, nval, flags, pgnop)
}
/* Add the duplicate. */
- if ((ret = __memp_dirty(mpf, &hcp->page, dbc->txn, 0)) != 0 ||
+ if ((ret = __memp_dirty(mpf,
+ &hcp->page, dbc->txn, dbc->priority, 0)) != 0 ||
(ret = __ham_replpair(dbc, &tmp_val, 0)) != 0)
return (ret);
@@ -220,7 +220,7 @@ __ham_add_dup(dbc, nval, flags, pgnop)
default:
return (__db_unknown_path(dbenv, "__ham_add_dup"));
}
- ret = __ham_c_update(dbc, tmp_val.size, 1, 1);
+ ret = __hamc_update(dbc, tmp_val.size, DB_HAM_CURADJ_ADD, 1);
return (ret);
}
@@ -366,13 +366,14 @@ finish: if (ret == 0) {
* item.
*/
if (ret == 0)
- ret = __memp_dirty(mpf, &hcp->page, dbc->txn, 0);
+ ret = __memp_dirty(mpf,
+ &hcp->page, dbc->txn, dbc->priority, 0);
if (ret == 0)
ret = __ham_move_offpage(dbc, hcp->page,
(u_int32_t)H_DATAINDEX(hcp->indx), PGNO(dp));
-err: if ((t_ret = __memp_fput(mpf, dp, 0)) != 0 && ret == 0)
+err: if ((t_ret = __memp_fput(mpf, dp, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
if (ret == 0)
@@ -454,8 +455,9 @@ __ham_check_move(dbc, add_len)
PAGE *next_pagep;
db_pgno_t next_pgno;
u_int32_t new_datalen, old_len, rectype;
+ db_indx_t new_indx;
u_int8_t *hk;
- int ret, t_ret;
+ int key_type, match, ret, t_ret;
dbp = dbc->dbp;
mpf = dbp->mpf;
@@ -508,7 +510,7 @@ __ham_check_move(dbc, add_len)
for (next_pgno = NEXT_PGNO(hcp->page); next_pgno != PGNO_INVALID;
next_pgno = NEXT_PGNO(next_pagep)) {
if (next_pagep != NULL &&
- (ret = __memp_fput(mpf, next_pagep, 0)) != 0)
+ (ret = __memp_fput(mpf, next_pagep, dbc->priority)) != 0)
return (ret);
if ((ret = __memp_fget(mpf, &next_pgno, dbc->txn,
@@ -520,7 +522,8 @@ __ham_check_move(dbc, add_len)
}
/* No more pages, add one. */
- if ((ret = __memp_dirty(mpf, &hcp->page, dbc->txn, 0)) != 0)
+ if ((ret = __memp_dirty(mpf,
+ &hcp->page, dbc->txn, dbc->priority, 0)) != 0)
return (ret);
if (next_pagep == NULL && (ret = __ham_add_ovflpage(dbc,
@@ -528,14 +531,15 @@ __ham_check_move(dbc, add_len)
return (ret);
/* Add new page at the end of the chain. */
- if ((ret = __memp_dirty(mpf, &next_pagep, dbc->txn, 0)) != 0) {
- (void)__memp_fput(mpf, next_pagep, 0);
+ if ((ret = __memp_dirty(mpf,
+ &next_pagep, dbc->txn, dbc->priority, 0)) != 0) {
+ (void)__memp_fput(mpf, next_pagep, dbc->priority);
return (ret);
}
if (P_FREESPACE(dbp, next_pagep) < new_datalen && (ret =
__ham_add_ovflpage(dbc, next_pagep, 1, &next_pagep)) != 0) {
- (void)__memp_fput(mpf, next_pagep, 0);
+ (void)__memp_fput(mpf, next_pagep, dbc->priority);
return (ret);
}
@@ -549,13 +553,20 @@ __ham_check_move(dbc, add_len)
rectype |= PAIR_KEYMASK;
k.data = H_PAIRKEY(dbp, hcp->page, hcp->indx);
k.size = HOFFPAGE_SIZE;
+ key_type = H_OFFPAGE;
} else {
k.data =
HKEYDATA_DATA(H_PAIRKEY(dbp, hcp->page, hcp->indx));
k.size =
LEN_HKEY(dbp, hcp->page, dbp->pgsize, hcp->indx);
+ key_type = H_KEYDATA;
}
+ /* Resolve the insert index so it can be written to the log. */
+ if ((ret = __ham_getindex(dbp, dbc->txn, next_pagep, &k,
+ key_type, &match, &new_indx)) != 0)
+ return (ret);
+
if (HPAGE_PTYPE(hk) == H_OFFPAGE) {
rectype |= PAIR_DATAMASK;
d.data = H_PAIRDATA(dbp, hcp->page, hcp->indx);
@@ -572,31 +583,42 @@ __ham_check_move(dbc, add_len)
if ((ret = __ham_insdel_log(dbp,
dbc->txn, &new_lsn, 0, rectype, PGNO(next_pagep),
- (u_int32_t)NUM_ENT(next_pagep), &LSN(next_pagep),
+ (u_int32_t)new_indx, &LSN(next_pagep),
&k, &d)) != 0) {
- (void)__memp_fput(mpf, next_pagep, 0);
+ (void)__memp_fput(mpf, next_pagep, dbc->priority);
return (ret);
}
- } else
+ } else {
LSN_NOT_LOGGED(new_lsn);
+ /*
+ * Ensure that an invalid index is passed to __ham_copypair, so
+ * it knows to resolve the index. Resolving the insert index
+ * here would require creating a temporary DBT with the key,
+ * and calling __ham_getindex. Let __ham_copypair do the
+ * resolution using the final key DBT.
+ */
+ new_indx = NDX_INVALID;
+ }
/* Move lsn onto page. */
- if ((ret = __memp_dirty(mpf, &next_pagep, dbc->txn, 0)) != 0) {
- (void)__memp_fput(mpf, next_pagep, 0);
+ if ((ret = __memp_dirty(mpf,
+ &next_pagep, dbc->txn, dbc->priority, 0)) != 0) {
+ (void)__memp_fput(mpf, next_pagep, dbc->priority);
return (ret);
}
LSN(next_pagep) = new_lsn; /* Structure assignment. */
- __ham_copy_item(dbp, hcp->page, H_KEYINDEX(hcp->indx), next_pagep);
- __ham_copy_item(dbp, hcp->page, H_DATAINDEX(hcp->indx), next_pagep);
+ if ((ret = __ham_copypair(dbp, dbc->txn, hcp->page,
+ H_KEYINDEX(hcp->indx), next_pagep, &new_indx)) != 0)
+ goto out;
/* Update all cursors that used to point to this item. */
- if ((ret = __ham_c_chgpg(dbc, PGNO(hcp->page), H_KEYINDEX(hcp->indx),
- PGNO(next_pagep), NUM_ENT(next_pagep) - 2)) != 0)
+ if ((ret = __hamc_chgpg(dbc, PGNO(hcp->page), H_KEYINDEX(hcp->indx),
+ PGNO(next_pagep), new_indx)) != 0)
goto out;
/* Now delete the pair from the current page. */
- ret = __ham_del_pair(dbc, 0);
+ ret = __ham_del_pair(dbc, HAM_DEL_NO_RECLAIM);
/*
* __ham_del_pair decremented nelem. This is incorrect; we
@@ -611,11 +633,12 @@ __ham_check_move(dbc, add_len)
if (!STD_LOCKING(dbc))
hcp->hdr->nelem++;
-out: if ((t_ret = __memp_fput(mpf, hcp->page, 0)) != 0 && ret == 0)
+out: if ((t_ret =
+ __memp_fput(mpf, hcp->page, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
hcp->page = next_pagep;
hcp->pgno = PGNO(hcp->page);
- hcp->indx = NUM_ENT(hcp->page) - 2;
+ hcp->indx = new_indx;
F_SET(hcp, H_EXPAND);
F_CLR(hcp, H_DELETED);
@@ -772,7 +795,7 @@ __ham_dcursor(dbc, pgno, indx)
dbp = dbc->dbp;
hcp = (HASH_CURSOR *)dbc->internal;
- if ((ret = __db_c_newopd(dbc, pgno, hcp->opd, &hcp->opd)) != 0)
+ if ((ret = __dbc_newopd(dbc, pgno, hcp->opd, &hcp->opd)) != 0)
return (ret);
dcp = (BTREE_CURSOR *)hcp->opd->internal;
@@ -801,7 +824,7 @@ __ham_dcursor(dbc, pgno, indx)
}
/*
- * __ham_c_chgpg --
+ * __hamc_chgpg --
* Adjust the cursors after moving an item to a new page. We only
* move cursors that are pointing at this one item and are not
* deleted; since we only touch non-deleted cursors, and since
@@ -810,7 +833,7 @@ __ham_dcursor(dbc, pgno, indx)
* on abort really do refer to this one item.
*/
static int
-__ham_c_chgpg(dbc, old_pgno, old_index, new_pgno, new_index)
+__hamc_chgpg(dbc, old_pgno, old_index, new_pgno, new_index)
DBC *dbc;
db_pgno_t old_pgno, new_pgno;
u_int32_t old_index, new_index;
diff --git a/db/hash/hash_func.c b/db/hash/hash_func.c
index 3b3c5137b..47f2eda08 100644
--- a/db/hash/hash_func.c
+++ b/db/hash/hash_func.c
@@ -1,8 +1,7 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*/
/*
* Copyright (c) 1990, 1993
@@ -39,7 +38,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: hash_func.c,v 12.4 2006/08/24 14:46:05 bostic Exp $
+ * $Id: hash_func.c,v 12.6 2007/05/17 15:15:38 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/hash/hash_meta.c b/db/hash/hash_meta.c
index 33697e112..9d422b342 100644
--- a/db/hash/hash_meta.c
+++ b/db/hash/hash_meta.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1999-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1999,2007 Oracle. All rights reserved.
*
- * $Id: hash_meta.c,v 12.8 2006/08/24 14:46:05 bostic Exp $
+ * $Id: hash_meta.c,v 12.11 2007/05/17 15:15:38 bostic Exp $
*/
#include "db_config.h"
@@ -63,7 +62,7 @@ __ham_release_meta(dbc)
hcp = (HASH_CURSOR *)dbc->internal;
if (hcp->hdr != NULL) {
- if ((ret = __memp_fput(mpf, hcp->hdr, 0)) != 0)
+ if ((ret = __memp_fput(mpf, hcp->hdr, dbc->priority)) != 0)
return (ret);
hcp->hdr = NULL;
}
@@ -94,5 +93,6 @@ __ham_dirty_meta(dbc, flags)
hashp->meta_pgno, DB_LOCK_WRITE, 0, &hcp->hlock)) != 0)
return (ret);
- return (__memp_dirty(dbp->mpf, &hcp->hdr, dbc->txn, flags));
+ return (__memp_dirty(dbp->mpf,
+ &hcp->hdr, dbc->txn, dbc->priority, flags));
}
diff --git a/db/hash/hash_method.c b/db/hash/hash_method.c
index 6075fbbfa..30cb9b088 100644
--- a/db/hash/hash_method.c
+++ b/db/hash/hash_method.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1999-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1999,2007 Oracle. All rights reserved.
*
- * $Id: hash_method.c,v 12.4 2006/08/24 14:46:05 bostic Exp $
+ * $Id: hash_method.c,v 12.7 2007/05/17 15:15:38 bostic Exp $
*/
#include "db_config.h"
@@ -40,10 +39,12 @@ __ham_db_create(dbp)
hashp->h_nelem = 0; /* Defaults. */
hashp->h_ffactor = 0;
hashp->h_hash = NULL;
+ hashp->h_compare = NULL;
dbp->get_h_ffactor = __ham_get_h_ffactor;
dbp->set_h_ffactor = __ham_set_h_ffactor;
dbp->set_h_hash = __ham_set_h_hash;
+ dbp->set_h_compare = __ham_set_h_compare;
dbp->get_h_nelem = __ham_get_h_nelem;
dbp->set_h_nelem = __ham_set_h_nelem;
@@ -120,6 +121,30 @@ __ham_set_h_hash(dbp, func)
}
/*
+ * __ham_set_h_compare --
+ * Set the comparison function.
+ *
+ * PUBLIC: int __ham_set_h_compare
+ * PUBLIC: __P((DB *, int (*)(DB *, const DBT *, const DBT *)));
+ */
+int
+__ham_set_h_compare(dbp, func)
+ DB *dbp;
+ int (*func) __P((DB *, const DBT *, const DBT *));
+{
+ HASH *t;
+
+ DB_ILLEGAL_AFTER_OPEN(dbp, "DB->set_h_compare");
+ DB_ILLEGAL_METHOD(dbp, DB_OK_HASH);
+
+ t = dbp->h_internal;
+
+ t->h_compare = func;
+
+ return (0);
+}
+
+/*
* __db_get_h_nelem --
*
* PUBLIC: int __ham_get_h_nelem __P((DB *, u_int32_t *));
diff --git a/db/hash/hash_open.c b/db/hash/hash_open.c
index 871f014a3..532091e40 100644
--- a/db/hash/hash_open.c
+++ b/db/hash/hash_open.c
@@ -1,8 +1,7 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*/
/*
* Copyright (c) 1990, 1993, 1994
@@ -39,7 +38,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: hash_open.c,v 12.16 2006/08/24 14:46:05 bostic Exp $
+ * $Id: hash_open.c,v 12.26 2007/06/14 14:54:37 bostic Exp $
*/
#include "db_config.h"
@@ -94,7 +93,7 @@ __ham_open(dbp, txn, name, base_pgno, flags)
hashp = dbp->h_internal;
hashp->meta_pgno = base_pgno;
if ((ret = __ham_get_meta(dbc)) != 0)
- goto err1;
+ goto err;
/* Initialize the hdr structure. */
if (hcp->hdr->dbmeta.magic == DB_HASHMAGIC) {
@@ -102,14 +101,6 @@ __ham_open(dbp, txn, name, base_pgno, flags)
if (hashp->h_hash == NULL)
hashp->h_hash = hcp->hdr->dbmeta.version < 5
? __ham_func4 : __ham_func5;
- if (!F_ISSET(dbp, DB_AM_RDONLY) && !IS_RECOVERING(dbenv) &&
- hashp->h_hash(dbp,
- CHARKEY, sizeof(CHARKEY)) != hcp->hdr->h_charkey) {
- __db_errx(dbenv,
- "hash: incompatible hash function");
- ret = EINVAL;
- goto err2;
- }
hashp->h_nelem = hcp->hdr->nelem;
if (F_ISSET(&hcp->hdr->dbmeta, DB_HASH_DUP))
F_SET(dbp, DB_AM_DUP);
@@ -117,17 +108,16 @@ __ham_open(dbp, txn, name, base_pgno, flags)
F_SET(dbp, DB_AM_DUPSORT);
if (F_ISSET(&hcp->hdr->dbmeta, DB_HASH_SUBDB))
F_SET(dbp, DB_AM_SUBDB);
-
} else if (!IS_RECOVERING(dbenv) && !F_ISSET(dbp, DB_AM_RECOVER)) {
__db_errx(dbenv,
- "%s: Invalid hash meta page %d", name, base_pgno);
+ "%s: Invalid hash meta page %lu", name, (u_long)base_pgno);
ret = EINVAL;
}
-err2: /* Release the meta data page */
+ /* Release the meta data page */
if ((t_ret = __ham_release_meta(dbc)) != 0 && ret == 0)
ret = t_ret;
-err1: if ((t_ret = __db_c_close(dbc)) != 0 && ret == 0)
+err: if ((t_ret = __dbc_close(dbc)) != 0 && ret == 0)
ret = t_ret;
return (ret);
@@ -167,6 +157,7 @@ __ham_metachk(dbp, name, hashm)
return (DB_OLD_VERSION);
case 7:
case 8:
+ case 9:
break;
default:
__db_errx(dbenv,
@@ -366,7 +357,7 @@ __ham_new_file(dbp, txn, fhp, name)
if ((ret = __db_log_page(dbp,
txn, &lsn, meta->dbmeta.pgno, (PAGE *)meta)) != 0)
goto err;
- ret = __memp_fput(mpf, meta, 0);
+ ret = __memp_fput(mpf, meta, dbp->priority);
meta = NULL;
if (ret != 0)
goto err;
@@ -381,7 +372,7 @@ __ham_new_file(dbp, txn, fhp, name)
if ((ret =
__db_log_page(dbp, txn, &page->lsn, lpgno, page)) != 0)
goto err;
- ret = __memp_fput(mpf, page, 0);
+ ret = __memp_fput(mpf, page, dbp->priority);
page = NULL;
if (ret != 0)
goto err;
@@ -430,9 +421,9 @@ err: if (buf != NULL)
__os_free(dbenv, buf);
else {
if (meta != NULL)
- (void)__memp_fput(mpf, meta, 0);
+ (void)__memp_fput(mpf, meta, dbp->priority);
if (page != NULL)
- (void)__memp_fput(mpf, page, 0);
+ (void)__memp_fput(mpf, page, dbp->priority);
}
return (ret);
}
@@ -510,14 +501,18 @@ __ham_new_subdb(mdbp, dbp, txn)
goto err;
/* Reflect the group allocation. */
- if (DBENV_LOGGING(dbenv))
+ if (DBENV_LOGGING(dbenv)
+#if !defined(DEBUG_WOP)
+ && txn != NULL
+#endif
+ )
if ((ret = __ham_groupalloc_log(mdbp, txn,
&LSN(mmeta), 0, &LSN(mmeta), meta->spares[0],
meta->max_bucket + 1, 0, mmeta->last_pgno)) != 0)
goto err;
/* Release the new meta-data page. */
- if ((ret = __memp_fput(mpf, meta, 0)) != 0)
+ if ((ret = __memp_fput(mpf, meta, dbc->priority)) != 0)
goto err;
meta = NULL;
@@ -531,22 +526,22 @@ __ham_new_subdb(mdbp, dbp, txn)
mmeta->last_pgno = lpgno;
P_INIT(h, dbp->pgsize, lpgno, PGNO_INVALID, PGNO_INVALID, 0, P_HASH);
LSN(h) = LSN(mmeta);
- if ((ret = __memp_fput(mpf, h, 0)) != 0)
+ if ((ret = __memp_fput(mpf, h, dbc->priority)) != 0)
goto err;
err: /* Now put the master-metadata page back. */
- if (mmeta != NULL &&
- (t_ret = __memp_fput(mpf, mmeta, 0)) != 0 && ret == 0)
+ if (mmeta != NULL && (t_ret = __memp_fput(mpf,
+ mmeta, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
if ((t_ret = __LPUT(dbc, mmlock)) != 0 && ret == 0)
ret = t_ret;
if (meta != NULL &&
- (t_ret = __memp_fput(mpf, meta, 0)) != 0 && ret == 0)
+ (t_ret = __memp_fput(mpf, meta, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
if ((t_ret = __LPUT(dbc, metalock)) != 0 && ret == 0)
ret = t_ret;
if (dbc != NULL)
- if ((t_ret = __db_c_close(dbc)) != 0 && ret == 0)
+ if ((t_ret = __dbc_close(dbc)) != 0 && ret == 0)
ret = t_ret;
return (ret);
}
diff --git a/db/hash/hash_page.c b/db/hash/hash_page.c
index 937718bc4..9ee48c44d 100644
--- a/db/hash/hash_page.c
+++ b/db/hash/hash_page.c
@@ -1,8 +1,7 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*/
/*
* Copyright (c) 1990, 1993, 1994
@@ -39,7 +38,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: hash_page.c,v 12.21 2006/09/07 20:05:30 bostic Exp $
+ * $Id: hash_page.c,v 12.43 2007/05/18 13:58:31 bostic Exp $
*/
/*
@@ -57,8 +56,13 @@
#include "dbinc/lock.h"
#include "dbinc/mp.h"
-static int __ham_c_delpg
+static int __hamc_delpg
__P((DBC *, db_pgno_t, db_pgno_t, u_int32_t, db_ham_mode, u_int32_t *));
+static int __ham_getindex_sorted __P((DB *,
+ DB_TXN *, PAGE *, const DBT *, int, int *, db_indx_t *));
+static int __ham_getindex_unsorted __P((DB *,
+ DB_TXN *, PAGE *, const DBT *, int *, db_indx_t *));
+static int __ham_sort_page_cursor __P((DBC *, PAGE *));
/*
* PUBLIC: int __ham_item __P((DBC *, db_lockmode_t, db_pgno_t *));
@@ -89,9 +93,11 @@ __ham_item(dbc, mode, pgnop)
recheck:
/* Check if we are looking for space in which to insert an item. */
- if (hcp->seek_size && hcp->seek_found_page == PGNO_INVALID &&
- hcp->seek_size < P_FREESPACE(dbp, hcp->page))
+ if (hcp->seek_size != 0 && hcp->seek_found_page == PGNO_INVALID &&
+ hcp->seek_size < P_FREESPACE(dbp, hcp->page)) {
hcp->seek_found_page = hcp->pgno;
+ hcp->seek_found_indx = NDX_INVALID;
+ }
/* Check for off-page duplicates. */
if (hcp->indx < NUM_ENT(hcp->page) &&
@@ -149,7 +155,7 @@ __ham_item_reset(dbc)
ret = 0;
if (hcp->page != NULL)
- ret = __memp_fput(mpf, hcp->page, 0);
+ ret = __memp_fput(mpf, hcp->page, dbc->priority);
if ((t_ret = __ham_item_init(dbc)) != 0 && ret == 0)
ret = t_ret;
@@ -189,6 +195,7 @@ __ham_item_init(dbc)
hcp->dup_tlen = 0;
hcp->seek_size = 0;
hcp->seek_found_page = PGNO_INVALID;
+ hcp->seek_found_indx = NDX_INVALID;
hcp->flags = 0;
hcp->pgno = PGNO_INVALID;
@@ -442,101 +449,591 @@ __ham_item_next(dbc, mode, pgnop)
}
/*
- * PUBLIC: void __ham_putitem __P((DB *, PAGE *p, const DBT *, int));
+ * __ham_insertpair --
+ *
+ * Used for adding a pair of elements to a sorted page. We are guaranteed that
+ * the pair will fit on this page.
+ *
+ * If an index is provided, then use it, otherwise lookup the index using
+ * __ham_getindex. This saves a getindex call when inserting using a cursor.
+ *
+ * We're overloading the meaning of the H_OFFPAGE type here, which is a little
+ * bit sleazy. When we recover deletes, we have the entire entry instead of
+ * having only the DBT, so we'll pass type H_OFFPAGE to mean "copy the whole
+ * entry" as opposed to constructing an H_KEYDATA around it. In the recovery
+ * case it is assumed that a valid index is passed in, since a lookup using
+ * the overloaded H_OFFPAGE key will be incorrect.
*
- * This is a little bit sleazy in that we're overloading the meaning
- * of the H_OFFPAGE type here. When we recover deletes, we have the
- * entire entry instead of having only the DBT, so we'll pass type
- * H_OFFPAGE to mean, "copy the whole entry" as opposed to constructing
- * an H_KEYDATA around it.
+ * PUBLIC: int __ham_insertpair __P((DB *, DB_TXN *,
+ * PUBLIC: PAGE *p, db_indx_t *indxp, const DBT *, const DBT *, int, int));
*/
-void
-__ham_putitem(dbp, p, dbt, type)
+int
+__ham_insertpair(dbp, txn, p, indxp, key_dbt, data_dbt, key_type, data_type)
DB *dbp;
+ DB_TXN *txn;
PAGE *p;
- const DBT *dbt;
- int type;
+ db_indx_t *indxp;
+ const DBT *key_dbt, *data_dbt;
+ int key_type, data_type;
{
- u_int16_t n, off;
+ u_int16_t n, indx;
db_indx_t *inp;
+ u_int32_t ksize, dsize, increase, distance;
+ u_int8_t *offset;
+ int i, match, ret;
n = NUM_ENT(p);
inp = P_INP(dbp, p);
+ ksize = (key_type == H_OFFPAGE) ?
+ key_dbt->size : HKEYDATA_SIZE(key_dbt->size);
+ dsize = (data_type == H_OFFPAGE) ?
+ data_dbt->size : HKEYDATA_SIZE(data_dbt->size);
+ increase = ksize + dsize;
+
+ if (indxp != NULL && *indxp != NDX_INVALID)
+ indx = *indxp;
+ else {
+ if ((ret = __ham_getindex(dbp, txn, p, key_dbt,
+ key_type, &match, &indx)) != 0)
+ return (ret);
+ /* Save the index for the caller */
+ if (indxp != NULL)
+ *indxp = indx;
+ /* It is an error to insert a duplicate key */
+ DB_ASSERT(dbp->dbenv, match != 0);
+ }
- /* Put the item element on the page. */
- if (type == H_OFFPAGE) {
- off = HOFFSET(p) - dbt->size;
- HOFFSET(p) = inp[n] = off;
- memcpy(P_ENTRY(dbp, p, n), dbt->data, dbt->size);
+ /* Special case if the page is empty or inserting at end of page.*/
+ if (n == 0 || indx == n) {
+ inp[indx] = HOFFSET(p) - ksize;
+ inp[indx+1] = HOFFSET(p) - increase;
} else {
- off = HOFFSET(p) - HKEYDATA_SIZE(dbt->size);
- HOFFSET(p) = inp[n] = off;
- PUT_HKEYDATA(P_ENTRY(dbp, p, n), dbt->data, dbt->size, type);
+ /*
+ * Shuffle the data elements.
+ *
+ * For example, inserting an element that sorts between items
+ * 2 and 3 on a page:
+ * The copy starts from the beginning of the second item.
+ *
+ * ---------------------------
+ * |pgheader..
+ * |__________________________
+ * ||1|2|3|4|...
+ * |--------------------------
+ * |
+ * |__________________________
+ * | ...|4|3|2|1|
+ * |--------------------------
+ * ---------------------------
+ *
+ * Becomes:
+ *
+ * ---------------------------
+ * |pgheader..
+ * |__________________________
+ * ||1|2|2a|3|4|...
+ * |--------------------------
+ * |
+ * |__________________________
+ * | ...|4|3|2a|2|1|
+ * |--------------------------
+ * ---------------------------
+ *
+ * Index's 3,4 etc move down the page.
+ * The data for 3,4,etc moves up the page by sizeof(2a)
+ * The index pointers in 3,4 etc are updated to point at the
+ * relocated data.
+ * It is necessary to move the data (not just adjust the index)
+ * since the hash format uses consecutive data items to
+ * dynamically calculate the item size.
+ * An item in this example is a key/data pair.
+ */
+ offset = (u_int8_t *)p + HOFFSET(p);
+ if (indx == 0)
+ distance = dbp->pgsize - HOFFSET(p);
+ else
+ distance = (u_int32_t)
+ (P_ENTRY(dbp, p, indx - 1) - offset);
+ memmove(offset - increase, offset, distance);
+
+ /* Shuffle the index array */
+ memmove(&inp[indx + 2], &inp[indx],
+ (n - indx) * sizeof(db_indx_t));
+
+ /* update the index array */
+ for (i = indx + 2; i < n + 2; i++)
+ inp[i] -= increase;
+
+ /* set the new index elements. */
+ inp[indx] = (HOFFSET(p) - increase) + distance + dsize;
+ inp[indx + 1] = (HOFFSET(p) - increase) + distance;
}
- /* Adjust page info. */
- NUM_ENT(p) += 1;
+ HOFFSET(p) -= increase;
+ /* insert the new elements */
+ if (key_type == H_OFFPAGE)
+ memcpy(P_ENTRY(dbp, p, indx), key_dbt->data, key_dbt->size);
+ else
+ PUT_HKEYDATA(P_ENTRY(dbp, p, indx), key_dbt->data,
+ key_dbt->size, key_type);
+ if (data_type == H_OFFPAGE)
+ memcpy(P_ENTRY(dbp, p, indx+1), data_dbt->data,
+ data_dbt->size);
+ else
+ PUT_HKEYDATA(P_ENTRY(dbp, p, indx+1), data_dbt->data,
+ data_dbt->size, data_type);
+ NUM_ENT(p) += 2;
+
+ /*
+ * If debugging a sorted hash page problem, this is a good place to
+ * insert a call to __ham_verify_sorted_page.
+ * It used to be called when diagnostic mode was enabled, but that
+ * causes problems in recovery if a custom comparator was used.
+ */
+ return (0);
}
/*
- * PUBLIC: void __ham_reputpair __P((DB *, PAGE *,
- * PUBLIC: u_int32_t, const DBT *, const DBT *));
+ * __hame_getindex --
+ *
+ * The key_type parameter overloads the entry type to allow for comparison of
+ * a key DBT that contains off-page data. A key that is not of type H_OFFPAGE
+ * might contain data larger than the page size, since this routine can be
+ * called with user-provided DBTs.
*
- * This is a special case to restore a key/data pair to its original
- * location during recovery. We are guaranteed that the pair fits
- * on the page and is not the last pair on the page (because if it's
- * the last pair, the normal insert works).
+ * PUBLIC: int __ham_getindex __P((DB *,
+ * PUBLIC: DB_TXN *, PAGE *, const DBT *, int, int *, db_indx_t *));
*/
-void
-__ham_reputpair(dbp, p, ndx, key, data)
+int
+__ham_getindex(dbp, txn, p, key, key_type, match, indx)
DB *dbp;
+ DB_TXN *txn;
PAGE *p;
- u_int32_t ndx;
- const DBT *key, *data;
+ const DBT *key;
+ int key_type, *match;
+ db_indx_t *indx;
{
- db_indx_t i, *inp, movebytes, newbytes;
- size_t psize;
- u_int8_t *from;
+ /* Since all entries are key/data pairs. */
+ DB_ASSERT(dbp->dbenv, NUM_ENT(p)%2 == 0 );
- psize = dbp->pgsize;
- inp = P_INP(dbp, p);
- /* First shuffle the existing items up on the page. */
- movebytes = (db_indx_t)(
- (ndx == 0 ? psize : inp[H_DATAINDEX(ndx - 2)]) - HOFFSET(p));
- newbytes = key->size + data->size;
- from = (u_int8_t *)p + HOFFSET(p);
- memmove(from - newbytes, from, movebytes);
+ /* Support pre 4.6 unsorted hash pages. */
+ if (p->type == P_HASH_UNSORTED)
+ return (__ham_getindex_unsorted(
+ dbp, txn, p, key, match, indx));
+ else
+ return (__ham_getindex_sorted(
+ dbp, txn, p, key, key_type, match, indx));
+}
+
+#undef min
+#define min(a, b) (((a) < (b)) ? (a) : (b))
+/*
+ * Perform a linear search of an unsorted (pre 4.6 format) hash page.
+ *
+ * This routine is never used to generate an index for insertion, because any
+ * unsorted page is sorted before we insert.
+ *
+ * Returns 0 if an exact match is found, with indx set to requested elem.
+ * Returns 1 if the item did not exist, indx is set to the last element on the
+ * page.
+ */
+static int
+__ham_getindex_unsorted(dbp, txn, p, key, match, indx)
+ DB *dbp;
+ DB_TXN *txn;
+ PAGE *p;
+ const DBT *key;
+ int *match;
+ db_indx_t *indx;
+{
+ DBT pg_dbt;
+ HASH *t;
+ db_pgno_t pgno;
+ int i, n, res, ret;
+ u_int32_t tlen;
+ u_int8_t *hk;
+
+ n = NUM_ENT(p);
+ t = dbp->h_internal;
+ res = 1;
+
+ /* Do a linear search over the page looking for an exact match */
+ for (i = 0; i < n; i+=2) {
+ hk = H_PAIRKEY(dbp, p, i);
+ switch (HPAGE_PTYPE(hk)) {
+ case H_OFFPAGE:
+ /* extract item length from possibly unaligned DBT */
+ memcpy(&tlen, HOFFPAGE_TLEN(hk), sizeof(u_int32_t));
+ if (tlen == key->size) {
+ memcpy(&pgno,
+ HOFFPAGE_PGNO(hk), sizeof(db_pgno_t));
+ if ((ret = __db_moff(dbp, txn, key,
+ pgno, tlen, t->h_compare, &res)) != 0)
+ return (ret);
+ }
+ break;
+ case H_KEYDATA:
+ if (t->h_compare != NULL) {
+ DB_INIT_DBT(pg_dbt,
+ HKEYDATA_DATA(hk), key->size);
+ if (t->h_compare(
+ dbp, key, &pg_dbt) != 0)
+ break;
+ } else if (key->size ==
+ LEN_HKEY(dbp, p, dbp->pgsize, i))
+ res = memcmp(key->data, HKEYDATA_DATA(hk),
+ key->size);
+ break;
+ case H_DUPLICATE:
+ case H_OFFDUP:
+ /*
+ * These are errors because keys are never duplicated.
+ */
+ /* FALLTHROUGH */
+ default:
+ return (__db_pgfmt(dbp->dbenv, PGNO(p)));
+ }
+ if (res == 0)
+ break;
+ }
+ *indx = i;
+ *match = (res == 0 ? 0 : 1);
+ return (0);
+}
+
+/*
+ * Perform a binary search of a sorted hash page for a key.
+ * Return 0 if an exact match is found, with indx set to requested elem.
+ * Return 1 if the item did not exist, indx will be set to the first element
+ * greater than the requested item.
+ */
+static int
+__ham_getindex_sorted(dbp, txn, p, key, key_type, match, indxp)
+ DB *dbp;
+ DB_TXN *txn;
+ PAGE *p;
+ const DBT *key;
+ int key_type, *match;
+ db_indx_t *indxp;
+{
+ DBT tmp_dbt;
+ HASH *t;
+ HOFFPAGE *offp;
+ db_indx_t indx;
+ db_pgno_t off_pgno, koff_pgno;
+ u_int32_t base, itemlen, lim, off_len;
+ u_int8_t *entry;
+ int res, ret;
+ void *data;
+
+ DB_ASSERT(dbp->dbenv, p->type == P_HASH );
+
+ t = dbp->h_internal;
+ /* Initialize so the return params are correct for empty pages. */
+ res = indx = 0;
+
+ /* Do a binary search for the element. */
+ DB_BINARY_SEARCH_FOR(base, lim, p, 2) {
+ DB_BINARY_SEARCH_INCR(indx, base, lim, 2);
+ data = HKEYDATA_DATA(H_PAIRKEY(dbp, p, indx));
+ /*
+ * There are 4 cases here:
+ * 1) Off page key, off page match
+ * 2) Off page key, on page match
+ * 3) On page key, off page match
+ * 4) On page key, on page match
+ */
+ entry = P_ENTRY(dbp, p, indx);
+ if (*entry == H_OFFPAGE) {
+ offp = (HOFFPAGE*)P_ENTRY(dbp, p, indx);
+ memcpy(&itemlen, HOFFPAGE_TLEN(offp),
+ sizeof(u_int32_t));
+ if (key_type == H_OFFPAGE) {
+ /*
+ * Case 1.
+ *
+ * If both key and cmp DBTs refer to different
+ * offpage items, it is necessary to compare
+ * the content of the entries, in order to be
+ * able to maintain a valid lexicographic sort
+ * order.
+ */
+ memcpy(&koff_pgno, HOFFPAGE_PGNO(key->data),
+ sizeof(db_pgno_t));
+ memcpy(&off_pgno, HOFFPAGE_PGNO(offp),
+ sizeof(db_pgno_t));
+ if (koff_pgno == off_pgno)
+ res = 0;
+ else {
+ memset(&tmp_dbt, 0, sizeof(tmp_dbt));
+ tmp_dbt.size = HOFFPAGE_SIZE;
+ tmp_dbt.data = offp;
+ if ((ret = __db_coff(dbp, txn, key,
+ &tmp_dbt, t->h_compare, &res)) != 0)
+ return (ret);
+ }
+ } else {
+ /* Case 2 */
+ memcpy(&off_pgno, HOFFPAGE_PGNO(offp),
+ sizeof(db_pgno_t));
+ if ((ret = __db_moff(dbp, txn, key, off_pgno,
+ itemlen, t->h_compare, &res)) != 0)
+ return (ret);
+ }
+ } else {
+ itemlen = LEN_HKEYDATA(dbp, p, dbp->pgsize, indx);
+ if (key_type == H_OFFPAGE) {
+ /* Case 3 */
+ tmp_dbt.data = data;
+ tmp_dbt.size = itemlen;
+ offp = (HOFFPAGE *)key->data;
+ memcpy(&off_pgno, HOFFPAGE_PGNO(offp),
+ sizeof(db_pgno_t));
+ memcpy(&off_len, HOFFPAGE_TLEN(offp),
+ sizeof(u_int32_t));
+ if ((ret = __db_moff(dbp, txn, &tmp_dbt,
+ off_pgno, off_len, t->h_compare,
+ &res)) != 0)
+ return (ret);
+ /*
+ * Since we switched the key/match parameters
+ * in the __db_moff call, the result needs to
+ * be inverted.
+ */
+ res = -res;
+ } else if (t->h_compare != NULL) {
+ /* Case 4, with a user comparison func */
+ DB_INIT_DBT(tmp_dbt, data, itemlen);
+ res = t->h_compare(dbp, key, &tmp_dbt);
+ } else {
+ /* Case 4, without a user comparison func */
+ if ((res = memcmp(key->data, data,
+ min(key->size, itemlen))) == 0)
+ res = itemlen > key->size ? 1 :
+ (itemlen < key->size ? -1 : 0);
+ }
+ }
+ if (res == 0) {
+ /* Found a match */
+ *indxp = indx;
+ *match = 0;
+ return (0);
+ } else if (res > 0)
+ DB_BINARY_SEARCH_SHIFT_BASE(indx, base, lim, 2);
+ }
/*
- * Adjust the indices and move them up 2 spaces. Note that we
- * have to check the exit condition inside the loop just in case
- * we are dealing with index 0 (db_indx_t's are unsigned).
+ * If no match was found, and the comparison indicates that the
+ * closest match was lexicographically less than the input key adjust
+ * the insertion index to be after the index of the closest match.
*/
- for (i = NUM_ENT(p) - 1; ; i-- ) {
- inp[i + 2] = inp[i] - newbytes;
- if (i == H_KEYINDEX(ndx))
- break;
+ if (res > 0)
+ indx += 2;
+ *indxp = indx;
+ *match = 1;
+ return (0);
+}
+
+/*
+ * PUBLIC: int __ham_verify_sorted_page __P((DB *, DB_TXN *, PAGE *));
+ *
+ * The__ham_verify_sorted_page function is used to determine the correctness
+ * of sorted hash pages. The checks are used by verification, they are
+ * implemented in the hash code because they are also useful debugging aids.
+ */
+int
+__ham_verify_sorted_page (dbp, txn, p)
+ DB *dbp;
+ DB_TXN *txn;
+ PAGE *p;
+{
+ DB_ENV *dbenv;
+ DBT prev_dbt, curr_dbt;
+ HASH *t;
+ db_pgno_t tpgno;
+ u_int32_t curr_len, prev_len, tlen;
+ u_int16_t *indxp;
+ db_indx_t i, n;
+ int res, ret;
+ char *prev, *curr;
+
+ /* Validate that next, prev pointers are OK */
+ n = NUM_ENT(p);
+ DB_ASSERT(dbp->dbenv, n%2 == 0 );
+
+ dbenv = dbp->dbenv;
+ t = dbp->h_internal;
+
+ /* Disable verification if a custom comparator is supplied */
+ if (t->h_compare != NULL)
+ return (0);
+
+ /* Iterate through page, ensuring order */
+ prev = (char *)HKEYDATA_DATA(H_PAIRKEY(dbp, p, 0));
+ prev_len = LEN_HKEYDATA(dbp, p, dbp->pgsize, 0);
+ for (i = 2; i < n; i+=2) {
+ curr = (char *)HKEYDATA_DATA(H_PAIRKEY(dbp, p, i));
+ curr_len = LEN_HKEYDATA(dbp, p, dbp->pgsize, i);
+
+ if (HPAGE_TYPE(dbp, p, i-2) == H_OFFPAGE &&
+ HPAGE_TYPE(dbp, p, i) == H_OFFPAGE) {
+ memset(&prev_dbt, 0, sizeof(prev_dbt));
+ memset(&curr_dbt, 0, sizeof(curr_dbt));
+ prev_dbt.size = curr_dbt.size = HOFFPAGE_SIZE;
+ prev_dbt.data = H_PAIRKEY(dbp, p, i-2);
+ curr_dbt.data = H_PAIRKEY(dbp, p, i);
+ if ((ret = __db_coff(dbp, txn,
+ &prev_dbt, &curr_dbt, t->h_compare, &res)) != 0)
+ return (ret);
+ } else if (HPAGE_TYPE(dbp, p, i-2) == H_OFFPAGE) {
+ memset(&curr_dbt, 0, sizeof(curr_dbt));
+ curr_dbt.size = curr_len;
+ curr_dbt.data = H_PAIRKEY(dbp, p, i);
+ memcpy(&tlen, HOFFPAGE_TLEN(H_PAIRKEY(dbp, p, i-2)),
+ sizeof(u_int32_t));
+ memcpy(&tpgno, HOFFPAGE_PGNO(H_PAIRKEY(dbp, p, i-2)),
+ sizeof(db_pgno_t));
+ if ((ret = __db_moff(dbp, txn,
+ &curr_dbt, tpgno, tlen, t->h_compare, &res)) != 0)
+ return (ret);
+ } else if (HPAGE_TYPE(dbp, p, i) == H_OFFPAGE) {
+ memset(&prev_dbt, 0, sizeof(prev_dbt));
+ prev_dbt.size = prev_len;
+ prev_dbt.data = H_PAIRKEY(dbp, p, i);
+ memcpy(&tlen, HOFFPAGE_TLEN(H_PAIRKEY(dbp, p, i)),
+ sizeof(u_int32_t));
+ memcpy(&tpgno, HOFFPAGE_PGNO(H_PAIRKEY(dbp, p, i)),
+ sizeof(db_pgno_t));
+ if ((ret = __db_moff(dbp, txn,
+ &prev_dbt, tpgno, tlen, t->h_compare, &res)) != 0)
+ return (ret);
+ } else
+ res = memcmp(prev, curr, min(curr_len, prev_len));
+
+ if (res == 0 && curr_len > prev_len)
+ res = 1;
+ else if (res == 0 && curr_len < prev_len)
+ res = -1;
+
+ if (res >= 0) {
+ __db_msg(dbenv, "key1: %s, key2: %s, len: %lu\n",
+ (char *)prev, (char *)curr,
+ (u_long)min(curr_len, prev_len));
+ __db_msg(dbenv, "curroffset %lu\n", (u_long)i);
+ __db_msg(dbenv, "indexes: ");
+ for (i = 0; i < n; i++) {
+ indxp = P_INP(dbp, p) + i;
+ __db_msg(dbenv, "%04X, ", *indxp);
+ }
+ __db_msg(dbenv, "\n");
+#ifdef HAVE_STATISTICS
+ if ((ret = __db_prpage(dbp, p, DB_PR_PAGE)) != 0)
+ return (ret);
+#endif
+ DB_ASSERT(dbp->dbenv, res < 0);
+ }
+
+ prev = curr;
+ prev_len = curr_len;
}
+ return (0);
+}
- /* Put the key and data on the page. */
- inp[H_KEYINDEX(ndx)] = (db_indx_t)(
- (ndx == 0 ? psize : inp[H_DATAINDEX(ndx - 2)]) - key->size);
- inp[H_DATAINDEX(ndx)] = inp[H_KEYINDEX(ndx)] - data->size;
- memcpy(P_ENTRY(dbp, p, H_KEYINDEX(ndx)), key->data, key->size);
- memcpy(P_ENTRY(dbp, p, H_DATAINDEX(ndx)), data->data, data->size);
+/*
+ * A wrapper for the __ham_sort_page function. Implements logging and cursor
+ * adjustments associated with sorting a page outside of recovery/upgrade.
+ */
+static int
+__ham_sort_page_cursor(dbc, page)
+ DBC *dbc;
+ PAGE *page;
+{
+ DB *dbp;
+ DB_LSN new_lsn;
+ DBT page_dbt;
+ HASH_CURSOR *hcp;
+ int ret;
- /* Adjust page info. */
- HOFFSET(p) -= newbytes;
- NUM_ENT(p) += 2;
+ dbp = dbc->dbp;
+ hcp = (HASH_CURSOR *)dbc->internal;
+
+ if (DBC_LOGGING(dbc)) {
+ page_dbt.size = dbp->pgsize;
+ page_dbt.data = page;
+ if ((ret = __ham_splitdata_log(dbp, dbc->txn,
+ &new_lsn, 0, SORTPAGE, PGNO(page),
+ &page_dbt, &LSN(page))) != 0)
+ return (ret);
+ } else
+ LSN_NOT_LOGGED(new_lsn);
+ /* Move lsn onto page. */
+ LSN(page) = new_lsn; /* Structure assignment. */
+
+ /*
+ * Invalidate the saved index, it needs to be retrieved
+ * again once the page is sorted.
+ */
+ hcp->seek_found_indx = NDX_INVALID;
+ hcp->seek_found_page = PGNO_INVALID;
+
+ return (__ham_sort_page(
+ dbp, dbc->txn, &hcp->split_buf, page));
+}
+
+/*
+ * PUBLIC: int __ham_sort_page __P((DB *, DB_TXN *, PAGE **, PAGE *));
+ *
+ * Convert a page from P_HASH_UNSORTED into the sorted format P_HASH.
+ *
+ * All locking and logging is carried out be the caller. A user buffer can
+ * optionally be passed in to save allocating a page size buffer for sorting.
+ * This is allows callers to re-use the buffer pre-allocated for page splits
+ * in the hash cursor. The buffer is optional since no cursor exists when in
+ * the recovery or upgrade code paths.
+ */
+int
+__ham_sort_page(dbp, txn, tmp_buf, page)
+ DB *dbp;
+ DB_TXN *txn;
+ PAGE **tmp_buf;
+ PAGE *page;
+{
+ PAGE *temp_pagep;
+ db_indx_t i;
+ int ret;
+
+ DB_ASSERT(dbp->dbenv, page->type == P_HASH_UNSORTED);
+
+ ret = 0;
+ if (tmp_buf != NULL)
+ temp_pagep = *tmp_buf;
+ else if ((ret = __os_malloc(dbp->dbenv, dbp->pgsize, &temp_pagep)) != 0)
+ return (ret);
+
+ memcpy(temp_pagep, page, dbp->pgsize);
+
+ /* Re-initialize the page. */
+ P_INIT(page, dbp->pgsize,
+ page->pgno, page->prev_pgno, page->next_pgno, 0, P_HASH);
+
+ for (i = 0; i < NUM_ENT(temp_pagep); i += 2)
+ if ((ret =
+ __ham_copypair(dbp, txn, temp_pagep, i, page, NULL)) != 0)
+ break;
+
+ if (tmp_buf == NULL)
+ __os_free(dbp->dbenv, temp_pagep);
+
+ return (ret);
}
/*
* PUBLIC: int __ham_del_pair __P((DBC *, int));
*/
int
-__ham_del_pair(dbc, reclaim_page)
+__ham_del_pair(dbc, flags)
DBC *dbc;
- int reclaim_page;
+ int flags;
{
DB *dbp;
DBT data_dbt, key_dbt;
@@ -618,7 +1115,6 @@ __ham_del_pair(dbc, reclaim_page)
/* Move lsn onto page. */
LSN(p) = new_lsn;
-
/* Do the delete. */
__ham_dpair(dbp, p, ndx);
@@ -631,12 +1127,6 @@ __ham_del_pair(dbc, reclaim_page)
F_CLR(hcp, H_OK);
/*
- * Update cursors that are on the page where the delete happend.
- */
- if ((ret = __ham_c_update(dbc, 0, 0, 0)) != 0)
- return (ret);
-
- /*
* If we are locking, we will not maintain this, because it is
* a hot spot.
*
@@ -649,6 +1139,15 @@ __ham_del_pair(dbc, reclaim_page)
--hcp->hdr->nelem;
}
+ /* The HAM_DEL_NO_CURSOR flag implies HAM_DEL_NO_RECLAIM. */
+ if (LF_ISSET(HAM_DEL_NO_CURSOR))
+ return (0);
+ /*
+ * Update cursors that are on the page where the delete happened.
+ */
+ if ((ret = __hamc_update(dbc, 0, DB_HAM_CURADJ_DEL, 0)) != 0)
+ return (ret);
+
/*
* If we need to reclaim the page, then check if the page is empty.
* There are two cases. If it's empty and it's not the first page
@@ -657,7 +1156,7 @@ __ham_del_pair(dbc, reclaim_page)
* the second page into it and remove the second page.
* If its the only page in the bucket we leave it alone.
*/
- if (!reclaim_page ||
+ if (LF_ISSET(HAM_DEL_NO_RECLAIM) ||
NUM_ENT(p) != 0 ||
(PREV_PGNO(p) == PGNO_INVALID && NEXT_PGNO(p) == PGNO_INVALID))
return (0);
@@ -697,8 +1196,8 @@ __ham_del_pair(dbc, reclaim_page)
if (nn_pagep != NULL) {
PREV_PGNO(nn_pagep) = PGNO(p);
- if ((ret =
- __memp_fput(mpf, nn_pagep, 0)) != 0) {
+ if ((ret = __memp_fput(mpf,
+ nn_pagep, dbc->priority)) != 0) {
nn_pagep = NULL;
goto err;
}
@@ -715,7 +1214,7 @@ __ham_del_pair(dbc, reclaim_page)
* Update cursors to reflect the fact that records
* on the second page have moved to the first page.
*/
- if ((ret = __ham_c_delpg(dbc, PGNO(n_pagep),
+ if ((ret = __hamc_delpg(dbc, PGNO(n_pagep),
PGNO(p), 0, DB_HAM_DELFIRSTPG, &order)) != 0)
goto err;
@@ -793,15 +1292,15 @@ __ham_del_pair(dbc, reclaim_page)
hcp->page = NULL;
chg_pgno = PGNO(p);
ret = __db_free(dbc, p);
- if ((t_ret =
- __memp_fput(mpf, p_pagep, 0)) != 0 && ret == 0)
+ if ((t_ret = __memp_fput(mpf,
+ p_pagep, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
- if (n_pagep != NULL && (t_ret =
- __memp_fput(mpf, n_pagep, 0)) != 0 && ret == 0)
+ if (n_pagep != NULL && (t_ret = __memp_fput(mpf,
+ n_pagep, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
if (ret != 0)
return (ret);
- if ((ret = __ham_c_delpg(dbc,
+ if ((ret = __hamc_delpg(dbc,
chg_pgno, hcp->pgno, hcp->indx, op, &order)) != 0)
return (ret);
hcp->order += order;
@@ -810,11 +1309,11 @@ __ham_del_pair(dbc, reclaim_page)
err: /* Clean up any pages. */
if (n_pagep != NULL)
- (void)__memp_fput(mpf, n_pagep, 0);
+ (void)__memp_fput(mpf, n_pagep, dbc->priority);
if (nn_pagep != NULL)
- (void)__memp_fput(mpf, nn_pagep, 0);
+ (void)__memp_fput(mpf, nn_pagep, dbc->priority);
if (p_pagep != NULL)
- (void)__memp_fput(mpf, p_pagep, 0);
+ (void)__memp_fput(mpf, p_pagep, dbc->priority);
return (ret);
}
@@ -832,13 +1331,16 @@ __ham_replpair(dbc, dbt, make_dup)
u_int32_t make_dup;
{
DB *dbp;
- DBT old_dbt, tdata, tmp;
+ DBC **carray, *dbc_n;
+ DBT old_dbt, tdata, tmp, *new_dbt;
DB_ENV *dbenv;
DB_LSN new_lsn;
- HASH_CURSOR *hcp;
+ HASH_CURSOR *hcp, *cp;
+ db_indx_t orig_indx;
+ db_pgno_t orig_pgno;
u_int32_t change;
u_int32_t dup_flag, len, memsize, newlen;
- int beyond_eor, is_big, is_plus, ret, type;
+ int beyond_eor, is_big, is_plus, ret, type, i, found, t_ret;
u_int8_t *beg, *dest, *end, *hk, *src;
void *memp;
@@ -861,6 +1363,9 @@ __ham_replpair(dbc, dbt, make_dup)
dbp = dbc->dbp;
dbenv = dbp->dbenv;
hcp = (HASH_CURSOR *)dbc->internal;
+ found = 0;
+ dbc_n = memp = NULL;
+ carray = NULL;
/*
* We need to compute the number of bytes that we are adding or
@@ -937,30 +1442,32 @@ __ham_replpair(dbc, dbt, make_dup)
&dbc->my_rkey.data, &dbc->my_rkey.ulen)) != 0)
return (ret);
+ /*
+ * In cases 4-6, a delete and insert works, but we need to
+ * track and update any cursors pointing to the item being
+ * moved.
+ */
+ orig_pgno = PGNO(hcp->page);
+ orig_indx = hcp->indx;
+ if ((ret = __ham_get_clist(dbp,
+ orig_pgno, orig_indx, &carray)) != 0)
+ goto err;
+
/* Preserve duplicate info. */
dup_flag = F_ISSET(hcp, H_ISDUP);
if (dbt->doff == 0 && dbt->dlen == len) {
- ret = __ham_del_pair(dbc, 0);
- if (ret == 0)
- ret = __ham_add_el(dbc,
- &tmp, dbt, dup_flag ? H_DUPLICATE : H_KEYDATA);
+ type = (dup_flag ? H_DUPLICATE : H_KEYDATA);
+ new_dbt = dbt;
} else { /* Case B */
type = HPAGE_PTYPE(hk) != H_OFFPAGE ?
HPAGE_PTYPE(hk) : H_KEYDATA;
memset(&tdata, 0, sizeof(tdata));
- memp = NULL;
memsize = 0;
if ((ret = __db_ret(dbp, dbc->txn, hcp->page,
H_DATAINDEX(hcp->indx), &tdata, &memp, &memsize))
!= 0)
goto err;
- /* Now we can delete the item. */
- if ((ret = __ham_del_pair(dbc, 0)) != 0) {
- __os_free(dbenv, memp);
- goto err;
- }
-
/* Now shift old data around to make room for new. */
if (is_plus) {
if ((ret = __os_realloc(dbenv,
@@ -988,13 +1495,76 @@ __ham_replpair(dbc, dbt, make_dup)
tdata.size += change;
else
tdata.size -= change;
-
- /* Now add the pair. */
- ret = __ham_add_el(dbc, &tmp, &tdata, type);
- __os_free(dbenv, memp);
+ new_dbt = &tdata;
}
+ if ((ret = __ham_del_pair(dbc, HAM_DEL_NO_CURSOR)) != 0)
+ goto err;
+ /*
+ * Save the state of the cursor after the delete, so that we
+ * can adjust any cursors impacted by the delete. Don't just
+ * update the cursors now, to avoid ambiguity in reversing the
+ * adjustments during abort.
+ */
+ if ((ret = __dbc_dup(dbc, &dbc_n, DB_POSITION)) != 0)
+ goto err;
+ if ((ret = __ham_add_el(dbc, &tmp, new_dbt, type)) != 0)
+ goto err;
F_SET(hcp, dup_flag);
-err: return (ret);
+
+ /*
+ * If the delete/insert pair caused the item to be moved
+ * to another location (which is possible for duplicate sets
+ * that are moved onto another page in the bucket), then update
+ * any impacted cursors.
+ */
+ if (((HASH_CURSOR*)dbc_n->internal)->pgno != hcp->pgno ||
+ ((HASH_CURSOR*)dbc_n->internal)->indx != hcp->indx) {
+ /*
+ * Set any cursors pointing to items in the moved
+ * duplicate set to the destination location and reset
+ * the deleted flag. This can't be done earlier, since
+ * the insert location is not computed until the actual
+ * __ham_add_el call is made.
+ */
+ if (carray != NULL) {
+ for (i = 0; carray[i] != NULL; i++) {
+ cp = (HASH_CURSOR*)carray[i]->internal;
+ cp->pgno = hcp->pgno;
+ cp->indx = hcp->indx;
+ F_CLR(cp, H_DELETED);
+ found = 1;
+ }
+ /*
+ * Only log the update once, since the recovery
+ * code iterates through all open cursors and
+ * applies the change to all matching cursors.
+ */
+ if (found && DBC_LOGGING(dbc) &&
+ IS_SUBTRANSACTION(dbc->txn)) {
+ if ((ret =
+ __ham_chgpg_log(dbp,
+ dbc->txn, &new_lsn, 0,
+ DB_HAM_CHGPG, orig_pgno, hcp->pgno,
+ orig_indx, hcp->indx)) != 0)
+ goto err;
+ }
+ }
+ /*
+ * Update any cursors impacted by the delete. Do this
+ * after chgpg log so that recovery does not re-bump
+ * cursors pointing to the deleted item.
+ */
+ ret = __hamc_update(dbc_n, 0, DB_HAM_CURADJ_DEL, 0);
+ }
+
+err: if (dbc_n != NULL && (t_ret = __dbc_close(dbc_n)) != 0 &&
+ ret == 0)
+ ret = t_ret;
+ if (carray != NULL)
+ __os_free(dbenv, carray);
+ if (memp != NULL)
+ __os_free(dbenv, memp);
+ return (ret);
}
/*
@@ -1111,7 +1681,7 @@ __ham_split_page(dbc, obucket, nbucket)
u_int32_t obucket, nbucket;
{
DB *dbp;
- DBC **carray;
+ DBC **carray, *tmp_dbc;
DBT key, page_dbt;
DB_ENV *dbenv;
DB_LOCK block;
@@ -1119,7 +1689,7 @@ __ham_split_page(dbc, obucket, nbucket)
DB_MPOOLFILE *mpf;
HASH_CURSOR *hcp, *cp;
PAGE **pp, *old_pagep, *temp_pagep, *new_pagep;
- db_indx_t n;
+ db_indx_t n, dest_indx;
db_pgno_t bucket_pgno, npgno, next_pgno;
u_int32_t big_len, len;
int found, i, ret, t_ret;
@@ -1142,6 +1712,11 @@ __ham_split_page(dbc, obucket, nbucket)
DB_MPOOL_CREATE | DB_MPOOL_DIRTY, &old_pagep)) != 0)
goto err;
+ /* Sort any unsorted pages before doing a hash split. */
+ if (old_pagep->type == P_HASH_UNSORTED)
+ if ((ret = __ham_sort_page_cursor(dbc, old_pagep)) != 0)
+ return (ret);
+
/* Properly initialize the new bucket page. */
npgno = BUCKET_TO_PAGE(hcp, nbucket);
if ((ret = __memp_fget(mpf, &npgno, dbc->txn,
@@ -1213,7 +1788,48 @@ __ham_split_page(dbc, obucket, nbucket)
goto err;
}
- /* Check if we need to update a cursor. */
+ dest_indx = NDX_INVALID;
+ if ((ret = __ham_copypair(dbp, dbc->txn, temp_pagep,
+ H_KEYINDEX(n), *pp, &dest_indx)) != 0)
+ goto err;
+
+ /*
+ * Update any cursors that were pointing to items
+ * shuffled because of this insert.
+ * Use __hamc_update, since the cursor adjustments are
+ * the same as those required for an insert. The
+ * overhead of creating a cursor is worthwhile to save
+ * replicating the adjustment functionality.
+ * Adjusting shuffled cursors needs to be done prior to
+ * adjusting any cursors that were pointing to the
+ * moved item.
+ * All pages in a bucket are sorted, but the items are
+ * not sorted across pages within a bucket. This means
+ * that splitting the first page in a bucket into two
+ * new buckets won't require any cursor shuffling,
+ * since all inserts will be appends. Splitting of the
+ * second etc page from the initial bucket could
+ * cause an item to be inserted at any location on a
+ * page (since items already inserted from page 1 of
+ * the initial bucket may overlap), so only adjust
+ * cursors for the second etc pages within a bucket.
+ */
+ if (PGNO(temp_pagep) != bucket_pgno) {
+ if ((ret = __db_cursor(
+ dbp, dbc->txn, &tmp_dbc, 0)) != 0)
+ goto err;
+ hcp = (HASH_CURSOR*)tmp_dbc->internal;
+ hcp->pgno = PGNO(*pp);
+ hcp->indx = dest_indx;
+ hcp->dup_off = 0;
+ hcp->order = 0;
+ if ((ret = __hamc_update(
+ tmp_dbc, len, DB_HAM_CURADJ_ADD, 0)) != 0)
+ goto err;
+ if ((ret = __dbc_close(tmp_dbc)) != 0)
+ goto err;
+ }
+ /* Update any cursors pointing at the moved item. */
if (carray != NULL) {
found = 0;
for (i = 0; carray[i] != NULL; i++) {
@@ -1222,22 +1838,25 @@ __ham_split_page(dbc, obucket, nbucket)
if (cp->pgno == PGNO(temp_pagep) &&
cp->indx == n) {
cp->pgno = PGNO(*pp);
- cp->indx = NUM_ENT(*pp);
+ cp->indx = dest_indx;
found = 1;
}
}
+ /*
+ * Only log the update once, since the recovery
+ * code iterates through all open cursors and
+ * applies the change to all matching cursors.
+ */
if (found && DBC_LOGGING(dbc) &&
IS_SUBTRANSACTION(dbc->txn)) {
if ((ret =
__ham_chgpg_log(dbp,
dbc->txn, &new_lsn, 0,
DB_HAM_SPLIT, PGNO(temp_pagep),
- PGNO(*pp), n, NUM_ENT(*pp))) != 0)
+ PGNO(*pp), n, dest_indx)) != 0)
goto err;
}
}
- __ham_copy_item(dbp, temp_pagep, H_KEYINDEX(n), *pp);
- __ham_copy_item(dbp, temp_pagep, H_DATAINDEX(n), *pp);
}
next_pgno = NEXT_PGNO(temp_pagep);
@@ -1309,21 +1928,21 @@ __ham_split_page(dbc, obucket, nbucket)
LSN_NOT_LOGGED(LSN(new_pagep));
}
- ret = __memp_fput(mpf, old_pagep, 0);
+ ret = __memp_fput(mpf, old_pagep, dbc->priority);
if ((t_ret =
- __memp_fput(mpf, new_pagep, 0)) != 0 && ret == 0)
+ __memp_fput(mpf, new_pagep, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
if (0) {
err: if (old_pagep != NULL)
- (void)__memp_fput(mpf, old_pagep, 0);
+ (void)__memp_fput(mpf, old_pagep, dbc->priority);
if (new_pagep != NULL) {
P_INIT(new_pagep, dbp->pgsize,
npgno, PGNO_INVALID, PGNO_INVALID, 0, P_HASH);
- (void)__memp_fput(mpf, new_pagep, 0);
+ (void)__memp_fput(mpf, new_pagep, dbc->priority);
}
if (temp_pagep != NULL && PGNO(temp_pagep) != bucket_pgno)
- (void)__memp_fput(mpf, temp_pagep, 0);
+ (void)__memp_fput(mpf, temp_pagep, dbc->priority);
}
if ((t_ret = __TLPUT(dbc, block)) != 0 && ret == 0)
ret = t_ret;
@@ -1357,8 +1976,7 @@ __ham_add_el(dbc, key, val, type)
db_pgno_t next_pgno, pgno;
u_int32_t data_size, key_size;
u_int32_t pages, pagespace, pairsize, rectype;
- int do_expand, is_keybig, is_databig, ret;
- int key_type, data_type;
+ int do_expand, data_type, is_keybig, is_databig, key_type, match, ret;
dbp = dbc->dbp;
mpf = dbp->mpf;
@@ -1401,7 +2019,8 @@ __ham_add_el(dbc, key, val, type)
*/
if (P_FREESPACE(dbp, hcp->page) < pairsize) {
do_expand = 1;
- if ((ret = __memp_dirty(mpf, &hcp->page, dbc->txn, 0)) != 0)
+ if ((ret = __memp_dirty(mpf,
+ &hcp->page, dbc->txn, dbc->priority, 0)) != 0)
return (ret);
if ((ret = __ham_add_ovflpage(dbc,
(PAGE *)hcp->page, 1, (PAGE **)&hcp->page)) != 0)
@@ -1427,13 +2046,14 @@ __ham_add_el(dbc, key, val, type)
}
}
- if ((ret = __memp_dirty(mpf, &hcp->page, dbc->txn, 0)) != 0)
+ if ((ret = __memp_dirty(mpf,
+ &hcp->page, dbc->txn, dbc->priority, 0)) != 0)
return (ret);
/*
* Update cursor.
*/
- hcp->indx = NUM_ENT(hcp->page);
+ hcp->indx = hcp->seek_found_indx;
F_CLR(hcp, H_DELETED);
if (is_keybig) {
koff.type = H_OFFPAGE;
@@ -1469,6 +2089,27 @@ __ham_add_el(dbc, key, val, type)
data_type = type;
}
+ /* Sort any unsorted pages before doing the insert. */
+ if (((PAGE *)hcp->page)->type == P_HASH_UNSORTED)
+ if ((ret = __ham_sort_page_cursor(dbc, hcp->page)) != 0)
+ return (ret);
+
+ /*
+ * If inserting on the page found initially, then use the saved index.
+ * If inserting on a different page resolve the index now so it can be
+ * logged.
+ * The page might be different, if P_FREESPACE constraint failed (due
+ * to a partial put that increases the data size).
+ */
+ if (PGNO(hcp->page) != hcp->seek_found_page) {
+ if ((ret = __ham_getindex(dbp, dbc->txn, hcp->page, pkey,
+ key_type, &match, &hcp->seek_found_indx)) != 0)
+ return (ret);
+ hcp->seek_found_page = PGNO(hcp->page);
+
+ DB_ASSERT(dbp->dbenv, hcp->seek_found_indx <= NUM_ENT(hcp->page));
+ }
+
if (DBC_LOGGING(dbc)) {
rectype = PUTPAIR;
if (is_databig)
@@ -1479,7 +2120,7 @@ __ham_add_el(dbc, key, val, type)
rectype |= PAIR_DUPMASK;
if ((ret = __ham_insdel_log(dbp, dbc->txn, &new_lsn, 0,
- rectype, PGNO(hcp->page), (u_int32_t)NUM_ENT(hcp->page),
+ rectype, PGNO(hcp->page), (u_int32_t)hcp->seek_found_indx,
&LSN(hcp->page), pkey, pdata)) != 0)
return (ret);
} else
@@ -1488,17 +2129,34 @@ __ham_add_el(dbc, key, val, type)
/* Move lsn onto page. */
LSN(hcp->page) = new_lsn; /* Structure assignment. */
- __ham_putitem(dbp, hcp->page, pkey, key_type);
- __ham_putitem(dbp, hcp->page, pdata, data_type);
+ if ((ret = __ham_insertpair(dbp, dbc->txn, hcp->page,
+ &hcp->seek_found_indx, pkey, pdata, key_type, data_type)) != 0)
+ return (ret);
+
+ /*
+ * Adjust any cursors that were pointing at items whose indices were
+ * shuffled due to the insert.
+ */
+ if ((ret = __hamc_update(dbc, pairsize, DB_HAM_CURADJ_ADD, 0)) != 0)
+ return (ret);
/*
* For splits, we are going to update item_info's page number
* field, so that we can easily return to the same page the
- * next time we come in here. For other operations, this shouldn't
- * matter, since odds are this is the last thing that happens before
- * we return to the user program.
+ * next time we come in here. For other operations, this doesn't
+ * matter, since this is the last thing that happens before we return
+ * to the user program.
*/
hcp->pgno = PGNO(hcp->page);
+ /*
+ * When moving an item from one page in a bucket to another, due to an
+ * expanding on page duplicate set, or a partial put that increases the
+ * size of an item. The destination index needs to be saved so that the
+ * __ham_replpair code can update any cursors impacted by the move. For
+ * other operations, this does not matter, since this is the last thing
+ * that happens before we return to the user program.
+ */
+ hcp->indx = hcp->seek_found_indx;
/*
* XXX
@@ -1517,40 +2175,59 @@ __ham_add_el(dbc, key, val, type)
}
/*
- * Special __putitem call used in splitting -- copies one entry to
+ * Special insert pair call -- copies a key/data pair from one page to
* another. Works for all types of hash entries (H_OFFPAGE, H_KEYDATA,
* H_DUPLICATE, H_OFFDUP). Since we log splits at a high level, we
* do not need to do any logging here.
*
- * PUBLIC: void __ham_copy_item __P((DB *, PAGE *, u_int32_t, PAGE *));
+ * dest_indx is an optional parameter, it serves several purposes:
+ * * ignored if NULL
+ * * Used as an insert index if non-null and not NDX_INVALID
+ * * Populated with the insert index if non-null and NDX_INVALID
+ *
+ * PUBLIC: int __ham_copypair __P((DB *, DB_TXN *, PAGE *, u_int32_t,
+ * PUBLIC: PAGE *, db_indx_t *));
*/
-void
-__ham_copy_item(dbp, src_page, src_ndx, dest_page)
+int
+__ham_copypair(dbp, txn, src_page, src_ndx, dest_page, dest_indx)
DB *dbp;
+ DB_TXN *txn;
PAGE *src_page;
u_int32_t src_ndx;
PAGE *dest_page;
+ db_indx_t *dest_indx;
{
- u_int32_t len;
- size_t pgsize;
- void *src, *dest;
- db_indx_t *inp;
-
- pgsize = dbp->pgsize;
- inp = P_INP(dbp, dest_page);
- /*
- * Copy the key and data entries onto this new page.
- */
- src = P_ENTRY(dbp, src_page, src_ndx);
+ DBT tkey, tdata;
+ db_indx_t kindx, dindx;
+ int ktype, dtype, ret;
- /* Set up space on dest. */
- len = (u_int32_t)LEN_HITEM(dbp, src_page, pgsize, src_ndx);
- HOFFSET(dest_page) -= len;
- inp[NUM_ENT(dest_page)] = HOFFSET(dest_page);
- dest = P_ENTRY(dbp, dest_page, NUM_ENT(dest_page));
- NUM_ENT(dest_page)++;
+ ret = 0;
+ memset(&tkey, 0, sizeof(tkey));
+ memset(&tdata, 0, sizeof(tdata));
+
+ ktype = HPAGE_TYPE(dbp, src_page, H_KEYINDEX(src_ndx));
+ dtype = HPAGE_TYPE(dbp, src_page, H_DATAINDEX(src_ndx));
+ kindx = H_KEYINDEX(src_ndx);
+ dindx = H_DATAINDEX(src_ndx);
+ if (ktype == H_OFFPAGE) {
+ tkey.data = P_ENTRY(dbp, src_page, kindx);
+ tkey.size = LEN_HITEM(dbp, src_page, dbp->pgsize, kindx);
+ } else {
+ tkey.data = HKEYDATA_DATA(P_ENTRY(dbp, src_page, kindx));
+ tkey.size = LEN_HKEYDATA(dbp, src_page, dbp->pgsize, kindx);
+ }
+ if (dtype == H_OFFPAGE) {
+ tdata.data = P_ENTRY(dbp, src_page, dindx);
+ tdata.size = LEN_HITEM(dbp, src_page, dbp->pgsize, dindx);
+ } else {
+ tdata.data = HKEYDATA_DATA(P_ENTRY(dbp, src_page, dindx));
+ tdata.size = LEN_HKEYDATA(dbp, src_page, dbp->pgsize, dindx);
+ }
+ if ((ret = __ham_insertpair(dbp, txn, dest_page, dest_indx,
+ &tkey, &tdata, ktype, dtype)) != 0)
+ return (ret);
- memcpy(dest, src, len);
+ return (ret);
}
/*
@@ -1586,7 +2263,7 @@ __ham_add_ovflpage(dbc, pagep, release, pp)
if ((ret = __ham_newpage_log(dbp, dbc->txn, &new_lsn, 0,
PUTOVFL, PGNO(pagep), &LSN(pagep), PGNO(new_pagep),
&LSN(new_pagep), PGNO_INVALID, NULL)) != 0) {
- (void)__memp_fput(mpf, pagep, 0);
+ (void)__memp_fput(mpf, pagep, dbc->priority);
return (ret);
}
} else
@@ -1599,7 +2276,7 @@ __ham_add_ovflpage(dbc, pagep, release, pp)
PREV_PGNO(new_pagep) = PGNO(pagep);
if (release)
- ret = __memp_fput(mpf, pagep, 0);
+ ret = __memp_fput(mpf, pagep, dbc->priority);
*pp = new_pagep;
return (ret);
@@ -1679,7 +2356,6 @@ __ham_get_cpage(dbc, mode)
DB_MPOOL_CREATE, &hcp->page)) != 0)
return (ret);
}
-
return (0);
}
@@ -1706,7 +2382,7 @@ __ham_next_cpage(dbc, pgno)
hcp = (HASH_CURSOR *)dbc->internal;
if (hcp->page != NULL &&
- (ret = __memp_fput(mpf, hcp->page, 0)) != 0)
+ (ret = __memp_fput(mpf, hcp->page, dbc->priority)) != 0)
return (ret);
hcp->page = NULL;
@@ -1811,7 +2487,7 @@ __ham_dpair(dbp, p, indx)
}
/*
- * __ham_c_delpg --
+ * __hamc_delpg --
*
* Adjust the cursors after we've emptied a page in a bucket, taking
* care that when we move cursors pointing to deleted items, their
@@ -1841,7 +2517,7 @@ __ham_dpair(dbp, p, indx)
* be careful of. This is DB_HAM_DELLASTPG.
*/
static int
-__ham_c_delpg(dbc, old_pgno, new_pgno, num_ent, op, orderp)
+__hamc_delpg(dbc, old_pgno, new_pgno, num_ent, op, orderp)
DBC *dbc;
db_pgno_t old_pgno, new_pgno;
u_int32_t num_ent;
@@ -1865,7 +2541,6 @@ __ham_c_delpg(dbc, old_pgno, new_pgno, num_ent, op, orderp)
dbenv = dbp->dbenv;
my_txn = IS_SUBTRANSACTION(dbc->txn) ? dbc->txn : NULL;
-
MUTEX_LOCK(dbenv, dbenv->mtx_dblist);
/*
* Find the highest order of any cursor our movement
@@ -1938,7 +2613,7 @@ __ham_c_delpg(dbc, old_pgno, new_pgno, num_ent, op, orderp)
break;
default:
return (__db_unknown_path(
- dbenv, "__ham_c_delpg"));
+ dbenv, "__hamc_delpg"));
}
if (my_txn != NULL && cp->txn != my_txn)
found = 1;
diff --git a/db/hash/hash_rec.c b/db/hash/hash_rec.c
index e07d8c3bc..fdfbb8086 100644
--- a/db/hash/hash_rec.c
+++ b/db/hash/hash_rec.c
@@ -1,8 +1,7 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*/
/*
* Copyright (c) 1995, 1996
@@ -39,7 +38,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: hash_rec.c,v 12.22 2006/08/24 14:46:05 bostic Exp $
+ * $Id: hash_rec.c,v 12.37 2007/07/04 11:19:01 alexg Exp $
*/
#include "db_config.h"
@@ -74,11 +73,11 @@ __ham_insdel_recover(dbenv, dbtp, lsnp, op, info)
DBC *dbc;
DB_MPOOLFILE *mpf;
PAGE *pagep;
+ db_indx_t dindx;
u_int32_t opcode;
- int cmp_n, cmp_p, ret, type;
+ int cmp_n, cmp_p, dtype, ktype, ret;
pagep = NULL;
- COMPQUIET(info, NULL);
REC_PRINT(__ham_insdel_print);
REC_INTRO(__ham_insdel_read, 1, 0);
@@ -113,6 +112,7 @@ __ham_insdel_recover(dbenv, dbtp, lsnp, op, info)
cmp_n = LOG_COMPARE(lsnp, &LSN(pagep));
cmp_p = LOG_COMPARE(&LSN(pagep), &argp->pagelsn);
CHECK_LSN(dbenv, op, cmp_p, &LSN(pagep), &argp->pagelsn);
+
/*
* Two possible things going on:
* redo a delete/undo a put: delete the item from the page.
@@ -120,47 +120,38 @@ __ham_insdel_recover(dbenv, dbtp, lsnp, op, info)
* If we are undoing a delete, then the information logged is the
* entire entry off the page, not just the data of a dbt. In
* this case, we want to copy it back onto the page verbatim.
- * We do this by calling __putitem with the type H_OFFPAGE instead
+ * We do this by calling __insertpair with the type H_OFFPAGE instead
* of H_KEYDATA.
*/
-
opcode = OPCODE_OF(argp->opcode);
if ((opcode == DELPAIR && cmp_n == 0 && DB_UNDO(op)) ||
(opcode == PUTPAIR && cmp_p == 0 && DB_REDO(op))) {
/*
- * Need to redo a PUT or undo a delete. If we are undoing a
- * delete, we've got to restore the item back to its original
- * position. That's a royal pain in the butt (because we do
- * not store item lengths on the page), but there's no choice.
+ * Need to redo a PUT or undo a delete.
*/
- REC_DIRTY(mpf, &pagep);
- if (opcode != DELPAIR ||
- argp->ndx == (u_int32_t)NUM_ENT(pagep)) {
- __ham_putitem(file_dbp, pagep, &argp->key,
- DB_UNDO(op) || PAIR_ISKEYBIG(argp->opcode) ?
- H_OFFPAGE : H_KEYDATA);
-
- if (PAIR_ISDATADUP(argp->opcode))
- type = H_DUPLICATE;
- else if (DB_UNDO(op) || PAIR_ISDATABIG(argp->opcode))
- type = H_OFFPAGE;
- else
- type = H_KEYDATA;
- __ham_putitem(file_dbp, pagep, &argp->data, type);
- } else
- __ham_reputpair(file_dbp, pagep,
- argp->ndx, &argp->key, &argp->data);
-
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
+ ktype = DB_UNDO(op) || PAIR_ISKEYBIG(argp->opcode) ?
+ H_OFFPAGE : H_KEYDATA;
+ if (PAIR_ISDATADUP(argp->opcode))
+ dtype = H_DUPLICATE;
+ else if (DB_UNDO(op) || PAIR_ISDATABIG(argp->opcode))
+ dtype = H_OFFPAGE;
+ else
+ dtype = H_KEYDATA;
+ dindx = (db_indx_t)argp->ndx;
+ if ((ret = __ham_insertpair(file_dbp, NULL, pagep, &dindx,
+ &argp->key, &argp->data, ktype, dtype)) != 0)
+ goto out;
LSN(pagep) = DB_REDO(op) ? *lsnp : argp->pagelsn;
} else if ((opcode == DELPAIR && cmp_p == 0 && DB_REDO(op)) ||
(opcode == PUTPAIR && cmp_n == 0 && DB_UNDO(op))) {
/* Need to undo a put or redo a delete. */
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
__ham_dpair(file_dbp, pagep, argp->ndx);
LSN(pagep) = DB_REDO(op) ? *lsnp : argp->pagelsn;
}
- if ((ret = __memp_fput(mpf, pagep, 0)) != 0)
+ if ((ret = __memp_fput(mpf, pagep, file_dbp->priority)) != 0)
goto out;
pagep = NULL;
@@ -169,7 +160,7 @@ done: *lsnp = argp->prev_lsn;
ret = 0;
out: if (pagep != NULL)
- (void)__memp_fput(mpf, pagep, 0);
+ (void)__memp_fput(mpf, pagep, file_dbp->priority);
REC_CLOSE;
}
@@ -197,7 +188,6 @@ __ham_newpage_recover(dbenv, dbtp, lsnp, op, info)
int change, cmp_n, cmp_p, ret;
pagep = NULL;
- COMPQUIET(info, NULL);
REC_PRINT(__ham_newpage_print);
REC_INTRO(__ham_newpage_read, 1, 0);
@@ -218,7 +208,7 @@ __ham_newpage_recover(dbenv, dbtp, lsnp, op, info)
if ((cmp_p == 0 && DB_REDO(op) && argp->opcode == PUTOVFL) ||
(cmp_n == 0 && DB_UNDO(op) && argp->opcode == DELOVFL)) {
/* Redo a create new page or undo a delete new page. */
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
P_INIT(pagep, file_dbp->pgsize, argp->new_pgno,
argp->prev_pgno, argp->next_pgno, 0, P_HASH);
change = 1;
@@ -228,14 +218,14 @@ __ham_newpage_recover(dbenv, dbtp, lsnp, op, info)
* Redo a delete or undo a create new page. All we
* really need to do is change the LSN.
*/
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
change = 1;
}
if (change)
LSN(pagep) = DB_REDO(op) ? *lsnp : argp->pagelsn;
- if ((ret = __memp_fput(mpf, pagep, 0)) != 0)
+ if ((ret = __memp_fput(mpf, pagep, file_dbp->priority)) != 0)
goto out;
pagep = NULL;
@@ -251,14 +241,14 @@ ppage: if (argp->prev_pgno != PGNO_INVALID) {
if ((cmp_p == 0 && DB_REDO(op) && argp->opcode == PUTOVFL) ||
(cmp_n == 0 && DB_UNDO(op) && argp->opcode == DELOVFL)) {
/* Redo a create new page or undo a delete new page. */
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
pagep->next_pgno = argp->new_pgno;
change = 1;
} else if ((cmp_p == 0 &&
DB_REDO(op) && argp->opcode == DELOVFL) ||
(cmp_n == 0 && DB_UNDO(op) && argp->opcode == PUTOVFL)) {
/* Redo a delete or undo a create new page. */
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
pagep->next_pgno = argp->next_pgno;
change = 1;
}
@@ -266,7 +256,7 @@ ppage: if (argp->prev_pgno != PGNO_INVALID) {
if (change)
LSN(pagep) = DB_REDO(op) ? *lsnp : argp->prevlsn;
- if ((ret = __memp_fput(mpf, pagep, 0)) != 0)
+ if ((ret = __memp_fput(mpf, pagep, file_dbp->priority)) != 0)
goto out;
pagep = NULL;
}
@@ -283,14 +273,14 @@ npage: if (argp->next_pgno != PGNO_INVALID) {
if ((cmp_p == 0 && DB_REDO(op) && argp->opcode == PUTOVFL) ||
(cmp_n == 0 && DB_UNDO(op) && argp->opcode == DELOVFL)) {
/* Redo a create new page or undo a delete new page. */
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
pagep->prev_pgno = argp->new_pgno;
change = 1;
} else if ((cmp_p == 0 &&
DB_REDO(op) && argp->opcode == DELOVFL) ||
(cmp_n == 0 && DB_UNDO(op) && argp->opcode == PUTOVFL)) {
/* Redo a delete or undo a create new page. */
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
pagep->prev_pgno = argp->prev_pgno;
change = 1;
}
@@ -298,7 +288,7 @@ npage: if (argp->next_pgno != PGNO_INVALID) {
if (change)
LSN(pagep) = DB_REDO(op) ? *lsnp : argp->nextlsn;
- if ((ret = __memp_fput(mpf, pagep, 0)) != 0)
+ if ((ret = __memp_fput(mpf, pagep, file_dbp->priority)) != 0)
goto out;
pagep = NULL;
}
@@ -306,7 +296,7 @@ done: *lsnp = argp->prev_lsn;
ret = 0;
out: if (pagep != NULL)
- (void)__memp_fput(mpf, pagep, 0);
+ (void)__memp_fput(mpf, pagep, file_dbp->priority);
REC_CLOSE;
}
@@ -338,7 +328,6 @@ __ham_replace_recover(dbenv, dbtp, lsnp, op, info)
u_int8_t *hk;
pagep = NULL;
- COMPQUIET(info, NULL);
REC_PRINT(__ham_replace_print);
REC_INTRO(__ham_replace_read, 1, 0);
@@ -368,7 +357,7 @@ __ham_replace_recover(dbenv, dbtp, lsnp, op, info)
/* Reapply the change as specified. */
dbt.data = argp->newitem.data;
dbt.size = argp->newitem.size;
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
LSN(pagep) = *lsnp;
/*
* The is_plus flag is set properly to reflect
@@ -384,7 +373,7 @@ __ham_replace_recover(dbenv, dbtp, lsnp, op, info)
* olditem.size - newitem.size.
*/
is_plus = !is_plus;
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
LSN(pagep) = argp->pagelsn;
modified = 1;
}
@@ -401,7 +390,7 @@ __ham_replace_recover(dbenv, dbtp, lsnp, op, info)
}
}
- if ((ret = __memp_fput(mpf, pagep, 0)) != 0)
+ if ((ret = __memp_fput(mpf, pagep, file_dbp->priority)) != 0)
goto out;
pagep = NULL;
@@ -409,7 +398,7 @@ done: *lsnp = argp->prev_lsn;
ret = 0;
out: if (pagep != NULL)
- (void)__memp_fput(mpf, pagep, 0);
+ (void)__memp_fput(mpf, pagep, file_dbp->priority);
REC_CLOSE;
}
@@ -435,7 +424,6 @@ __ham_splitdata_recover(dbenv, dbtp, lsnp, op, info)
int cmp_n, cmp_p, ret;
pagep = NULL;
- COMPQUIET(info, NULL);
REC_PRINT(__ham_splitdata_print);
REC_INTRO(__ham_splitdata_read, 1, 0);
@@ -472,7 +460,8 @@ __ham_splitdata_recover(dbenv, dbtp, lsnp, op, info)
CHECK_LSN(dbenv, op, cmp_p, &LSN(pagep), &argp->pagelsn);
/*
- * There are two types of log messages here, one for the old page
+ * There are three types of log messages here. Two are related
+ * to an actual page split operation, one for the old page
* and one for the new pages created. The original image in the
* SPLITOLD record is used for undo. The image in the SPLITNEW
* is used for redo. We should never have a case where there is
@@ -480,17 +469,26 @@ __ham_splitdata_recover(dbenv, dbtp, lsnp, op, info)
* the SPLITNEW record. Therefore, we only have work to do when
* redo NEW messages and undo OLD messages, but we have to update
* LSNs in both cases.
+ *
+ * The third message is generated when a page is sorted (SORTPAGE). In
+ * an undo the original image in the SORTPAGE is used. In a redo we
+ * recreate the sort operation by calling __ham_sort_page.
*/
if (cmp_p == 0 && DB_REDO(op)) {
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
if (argp->opcode == SPLITNEW)
/* Need to redo the split described. */
memcpy(pagep, argp->pageimage.data,
argp->pageimage.size);
+ else if (argp->opcode == SORTPAGE) {
+ if ((ret = __ham_sort_page(file_dbp,
+ NULL, NULL, pagep)) != 0)
+ goto out;
+ }
LSN(pagep) = *lsnp;
} else if (cmp_n == 0 && DB_UNDO(op)) {
- REC_DIRTY(mpf, &pagep);
- if (argp->opcode == SPLITOLD) {
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
+ if (argp->opcode == SPLITOLD || argp->opcode == SORTPAGE) {
/* Put back the old image. */
memcpy(pagep, argp->pageimage.data,
argp->pageimage.size);
@@ -499,7 +497,7 @@ __ham_splitdata_recover(dbenv, dbtp, lsnp, op, info)
PGNO_INVALID, PGNO_INVALID, 0, P_HASH);
LSN(pagep) = argp->pagelsn;
}
- if ((ret = __memp_fput(mpf, pagep, 0)) != 0)
+ if ((ret = __memp_fput(mpf, pagep, file_dbp->priority)) != 0)
goto out;
pagep = NULL;
@@ -507,7 +505,7 @@ done: *lsnp = argp->prev_lsn;
ret = 0;
out: if (pagep != NULL)
- (void)__memp_fput(mpf, pagep, 0);
+ (void)__memp_fput(mpf, pagep, file_dbp->priority);
REC_CLOSE;
}
@@ -534,7 +532,6 @@ __ham_copypage_recover(dbenv, dbtp, lsnp, op, info)
int cmp_n, cmp_p, ret;
pagep = NULL;
- COMPQUIET(info, NULL);
REC_PRINT(__ham_copypage_print);
REC_INTRO(__ham_copypage_read, 1, 0);
@@ -548,19 +545,19 @@ __ham_copypage_recover(dbenv, dbtp, lsnp, op, info)
if (cmp_p == 0 && DB_REDO(op)) {
/* Need to redo update described. */
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
memcpy(pagep, argp->page.data, argp->page.size);
PGNO(pagep) = argp->pgno;
PREV_PGNO(pagep) = PGNO_INVALID;
LSN(pagep) = *lsnp;
} else if (cmp_n == 0 && DB_UNDO(op)) {
/* Need to undo update described. */
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
P_INIT(pagep, file_dbp->pgsize, argp->pgno, PGNO_INVALID,
argp->next_pgno, 0, P_HASH);
LSN(pagep) = argp->pagelsn;
}
- if ((ret = __memp_fput(mpf, pagep, 0)) != 0)
+ if ((ret = __memp_fput(mpf, pagep, file_dbp->priority)) != 0)
goto out;
pagep = NULL;
@@ -572,14 +569,14 @@ donext: /* Now fix up the "next" page. */
cmp_p = LOG_COMPARE(&LSN(pagep), &argp->nextlsn);
CHECK_LSN(dbenv, op, cmp_p, &LSN(pagep), &argp->nextlsn);
if (cmp_p == 0 && DB_REDO(op)) {
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
LSN(pagep) = *lsnp;
} else if (cmp_n == 0 && DB_UNDO(op)) {
/* Need to undo update described. */
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
memcpy(pagep, argp->page.data, argp->page.size);
}
- if ((ret = __memp_fput(mpf, pagep, 0)) != 0)
+ if ((ret = __memp_fput(mpf, pagep, file_dbp->priority)) != 0)
goto out;
pagep = NULL;
@@ -595,16 +592,16 @@ do_nn: if (argp->nnext_pgno == PGNO_INVALID)
if (cmp_p == 0 && DB_REDO(op)) {
/* Need to redo update described. */
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
PREV_PGNO(pagep) = argp->pgno;
LSN(pagep) = *lsnp;
} else if (cmp_n == 0 && DB_UNDO(op)) {
/* Need to undo update described. */
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
PREV_PGNO(pagep) = argp->next_pgno;
LSN(pagep) = argp->nnextlsn;
}
- if ((ret = __memp_fput(mpf, pagep, 0)) != 0)
+ if ((ret = __memp_fput(mpf, pagep, file_dbp->priority)) != 0)
goto out;
pagep = NULL;
@@ -612,7 +609,7 @@ done: *lsnp = argp->prev_lsn;
ret = 0;
out: if (pagep != NULL)
- (void)__memp_fput(mpf, pagep, 0);
+ (void)__memp_fput(mpf, pagep, file_dbp->priority);
REC_CLOSE;
}
@@ -642,7 +639,6 @@ __ham_metagroup_recover(dbenv, dbtp, lsnp, op, info)
u_int32_t flags;
int cmp_n, cmp_p, did_alloc, groupgrow, ret;
- COMPQUIET(info, NULL);
did_alloc = 0;
mmeta = NULL;
REC_PRINT(__ham_metagroup_print);
@@ -705,14 +701,14 @@ __ham_metagroup_recover(dbenv, dbtp, lsnp, op, info)
CHECK_LSN(dbenv, op, cmp_p, &LSN(pagep), &argp->pagelsn);
if (cmp_p == 0 && DB_REDO(op)) {
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, dbc->priority, &pagep);
pagep->lsn = *lsnp;
} else if (cmp_n == 0 && DB_UNDO(op)) {
#ifdef HAVE_FTRUNCATE
/* If this record allocated the pages give them back. */
if (argp->newalloc) {
- if (pagep != NULL && (ret =
- __memp_fput(mpf, pagep, DB_MPOOL_DISCARD)) != 0)
+ if (pagep != NULL && (ret = __memp_fput(mpf,
+ pagep, DB_PRIORITY_VERY_LOW)) != 0)
goto out;
pagep = NULL;
if ((ret = __memp_ftruncate(mpf, argp->pgno, 0)) != 0)
@@ -724,11 +720,12 @@ __ham_metagroup_recover(dbenv, dbtp, lsnp, op, info)
* Otherwise just roll the page back to its
* previous state.
*/
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, dbc->priority, &pagep);
pagep->lsn = argp->pagelsn;
}
}
- if (pagep != NULL && (ret = __memp_fput(mpf, pagep, 0)) != 0)
+ if (pagep != NULL &&
+ (ret = __memp_fput(mpf, pagep, dbc->priority)) != 0)
goto out;
do_meta:
@@ -741,7 +738,7 @@ do_meta:
CHECK_LSN(dbenv, op, cmp_p, &hcp->hdr->dbmeta.lsn, &argp->metalsn);
if (cmp_p == 0 && DB_REDO(op)) {
/* Redo the actual updating of bucket counts. */
- REC_DIRTY(mpf, &hcp->hdr);
+ REC_DIRTY(mpf, dbc->priority, &hcp->hdr);
++hcp->hdr->max_bucket;
if (groupgrow) {
hcp->hdr->low_mask = hcp->hdr->high_mask;
@@ -751,7 +748,7 @@ do_meta:
hcp->hdr->dbmeta.lsn = *lsnp;
} else if (cmp_n == 0 && DB_UNDO(op)) {
/* Undo the actual updating of bucket counts. */
- REC_DIRTY(mpf, &hcp->hdr);
+ REC_DIRTY(mpf, dbc->priority, &hcp->hdr);
hcp->hdr->max_bucket = argp->bucket;
if (groupgrow) {
hcp->hdr->high_mask = argp->bucket;
@@ -773,13 +770,13 @@ do_meta:
!DB_UNDO(op) &&
#endif
hcp->hdr->spares[__db_log2(argp->bucket + 1) + 1] == PGNO_INVALID) {
- REC_DIRTY(mpf, &hcp->hdr);
+ REC_DIRTY(mpf, dbc->priority, &hcp->hdr);
hcp->hdr->spares[__db_log2(argp->bucket + 1) + 1] =
(argp->pgno - argp->bucket) - 1;
}
#ifdef HAVE_FTRUNCATE
if (cmp_n == 0 && groupgrow && DB_UNDO(op)) {
- REC_DIRTY(mpf, &hcp->hdr);
+ REC_DIRTY(mpf, dbc->priority, &hcp->hdr);
hcp->hdr->spares[
__db_log2(argp->bucket + 1) + 1] = PGNO_INVALID;
}
@@ -800,15 +797,15 @@ do_meta:
cmp_n = LOG_COMPARE(lsnp, &mmeta->lsn);
cmp_p = LOG_COMPARE(&mmeta->lsn, &argp->mmetalsn);
if (cmp_p == 0 && DB_REDO(op)) {
- REC_DIRTY(mpf, &mmeta);
+ REC_DIRTY(mpf, dbc->priority, &mmeta);
mmeta->lsn = *lsnp;
} else if (cmp_n == 0 && DB_UNDO(op)) {
- REC_DIRTY(mpf, &mmeta);
+ REC_DIRTY(mpf, dbc->priority, &mmeta);
mmeta->lsn = argp->mmetalsn;
}
} else {
mmeta = (DBMETA *)hcp->hdr;
- REC_DIRTY(mpf, &mmeta);
+ REC_DIRTY(mpf, dbc->priority, &mmeta);
}
#ifdef HAVE_FTRUNCATE
@@ -820,7 +817,7 @@ do_meta:
mmeta->last_pgno = pgno;
if (argp->mmpgno != argp->mpgno &&
- (ret = __memp_fput(mpf, mmeta, 0)) != 0)
+ (ret = __memp_fput(mpf, mmeta, dbc->priority)) != 0)
goto out;
mmeta = NULL;
@@ -828,7 +825,7 @@ done: *lsnp = argp->prev_lsn;
ret = 0;
out: if (mmeta != NULL)
- (void)__memp_fput(mpf, mmeta, 0);
+ (void)__memp_fput(mpf, mmeta, dbc->priority);
if (dbc != NULL)
(void)__ham_release_meta(dbc);
if (ret == ENOENT && op == DB_TXN_BACKWARD_ALLOC)
@@ -893,7 +890,7 @@ __ham_groupalloc_recover(dbenv, dbtp, lsnp, op, info)
if ((ret = __ham_alloc_pages(file_dbp, argp, lsnp)) != 0)
goto out;
if (cmp_p == 0) {
- REC_DIRTY(mpf, &mmeta);
+ REC_DIRTY(mpf, file_dbp->priority, &mmeta);
LSN(mmeta) = *lsnp;
}
} else if (DB_UNDO(op)) {
@@ -905,22 +902,21 @@ __ham_groupalloc_recover(dbenv, dbtp, lsnp, op, info)
if ((ret = __memp_fget(mpf, &pgno, NULL,
DB_MPOOL_EDIT, &pagep)) == 0) {
if (LOG_COMPARE(&pagep->lsn, lsnp) != 0) {
- if ((ret = __memp_fput(mpf,
- pagep, DB_MPOOL_DISCARD)) != 0)
+ if ((ret = __memp_fput(mpf, pagep,
+ DB_PRIORITY_VERY_LOW)) != 0)
goto out;
pagep = NULL;
}
} else if (ret != DB_PAGE_NOTFOUND)
goto out;
#ifdef HAVE_FTRUNCATE
- COMPQUIET(info, NULL);
/*
* If the last page was allocated then truncate back
* to the first page.
*/
if (pagep != NULL) {
- if ((ret =
- __memp_fput(mpf, pagep, DB_MPOOL_DISCARD)) != 0)
+ if ((ret = __memp_fput(mpf,
+ pagep, DB_PRIORITY_VERY_LOW)) != 0)
goto out;
if ((ret =
__memp_ftruncate(mpf, argp->start_pgno, 0)) != 0)
@@ -932,7 +928,7 @@ __ham_groupalloc_recover(dbenv, dbtp, lsnp, op, info)
* sure it reflects the the correct last_pgno.
*/
if (cmp_n == 0) {
- REC_DIRTY(mpf, &mmeta);
+ REC_DIRTY(mpf, file_dbp->priority, &mmeta);
mmeta->last_pgno = argp->last_pgno;
}
pgno = 0;
@@ -941,11 +937,12 @@ __ham_groupalloc_recover(dbenv, dbtp, lsnp, op, info)
* Reset the last page back to its preallocation state.
*/
if (pagep != NULL) {
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
if (LOG_COMPARE(&pagep->lsn, lsnp) == 0)
ZERO_LSN(pagep->lsn);
- if ((ret = __memp_fput(mpf, pagep, 0)) != 0)
+ if ((ret =
+ __memp_fput(mpf, pagep, file_dbp->priority)) != 0)
goto out;
}
/*
@@ -956,7 +953,7 @@ __ham_groupalloc_recover(dbenv, dbtp, lsnp, op, info)
goto out;
#endif
if (cmp_n == 0) {
- REC_DIRTY(mpf, &mmeta);
+ REC_DIRTY(mpf, file_dbp->priority, &mmeta);
LSN(mmeta) = argp->meta_lsn;
}
}
@@ -967,7 +964,7 @@ __ham_groupalloc_recover(dbenv, dbtp, lsnp, op, info)
* will only be valid on REDO.
*/
if (pgno > mmeta->last_pgno) {
- REC_DIRTY(mpf, &mmeta);
+ REC_DIRTY(mpf, file_dbp->priority, &mmeta);
mmeta->last_pgno = pgno;
}
@@ -976,7 +973,7 @@ done: if (ret == 0)
ret = 0;
out: if (mmeta != NULL)
- (void)__memp_fput(mpf, mmeta, 0);
+ (void)__memp_fput(mpf, mmeta, file_dbp->priority);
if (ret == ENOENT && op == DB_TXN_BACKWARD_ALLOC)
ret = 0;
@@ -1014,7 +1011,7 @@ __ham_alloc_pages(file_dbp, argp, lsnp)
__memp_fget(mpf, &pgno, NULL, 0, &pagep)) == 0) {
if (NUM_ENT(pagep) == 0 && IS_ZERO_LSN(pagep->lsn))
goto reinit_page;
- return (__memp_fput(mpf, pagep, 0));
+ return (__memp_fput(mpf, pagep, file_dbp->priority));
}
/* Had to create the page. */
@@ -1024,12 +1021,12 @@ __ham_alloc_pages(file_dbp, argp, lsnp)
reinit_page:
/* Initialize the newly allocated page. */
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
P_INIT(pagep, file_dbp->pgsize,
pgno, PGNO_INVALID, PGNO_INVALID, 0, P_HASH);
pagep->lsn = *lsnp;
-out: return (__memp_fput(mpf, pagep, 0));
+out: return (__memp_fput(mpf, pagep, file_dbp->priority));
}
/*
@@ -1053,14 +1050,40 @@ __ham_curadj_recover(dbenv, dbtp, lsnp, op, info)
DBC *dbc;
int ret;
HASH_CURSOR *hcp;
+ db_ham_curadj mode, hamc_mode;
- COMPQUIET(info, NULL);
REC_PRINT(__ham_curadj_print);
REC_INTRO(__ham_curadj_read, 0, 1);
if (op != DB_TXN_ABORT)
goto done;
+ mode = (db_ham_curadj)argp->add;
+
+ /*
+ * Reverse the logged operation, so that the consequences are reversed
+ * by the __hamc_update code.
+ */
+ switch (mode) {
+ case DB_HAM_CURADJ_DEL:
+ hamc_mode = DB_HAM_CURADJ_ADD;
+ break;
+ case DB_HAM_CURADJ_ADD:
+ hamc_mode = DB_HAM_CURADJ_DEL;
+ break;
+ case DB_HAM_CURADJ_ADDMOD:
+ hamc_mode = DB_HAM_CURADJ_DELMOD;
+ break;
+ case DB_HAM_CURADJ_DELMOD:
+ hamc_mode = DB_HAM_CURADJ_ADDMOD;
+ break;
+ default:
+ __db_errx(dbenv,
+ "Invalid flag in __ham_curadj_recover");
+ ret = EINVAL;
+ goto out;
+ }
+
/*
* Undo the adjustment by reinitializing the the cursor to look like
* the one that was used to do the adjustment, then we invert the
@@ -1071,9 +1094,9 @@ __ham_curadj_recover(dbenv, dbtp, lsnp, op, info)
hcp->indx = argp->indx;
hcp->dup_off = argp->dup_off;
hcp->order = argp->order;
- if (!argp->add)
+ if (mode == DB_HAM_CURADJ_DEL)
F_SET(hcp, H_DELETED);
- (void)__ham_c_update(dbc, argp->len, !argp->add, argp->is_dup);
+ (void)__hamc_update(dbc, argp->len, hamc_mode, argp->is_dup);
done: *lsnp = argp->prev_lsn;
out: REC_CLOSE;
@@ -1104,7 +1127,6 @@ __ham_chgpg_recover(dbenv, dbtp, lsnp, op, info)
HASH_CURSOR *lcp;
u_int32_t order, indx;
- COMPQUIET(info, NULL);
REC_PRINT(__ham_chgpg_print);
REC_INTRO(__ham_chgpg_read, 0, 0);
@@ -1189,7 +1211,7 @@ __ham_chgpg_recover(dbenv, dbtp, lsnp, op, info)
* under us.
*/
MUTEX_UNLOCK(dbenv, file_dbp->mutex);
- if ((ret = __db_c_close(lcp->opd)) != 0)
+ if ((ret = __dbc_close(lcp->opd)) != 0)
goto out;
MUTEX_LOCK(dbenv, file_dbp->mutex);
lcp->opd = NULL;
@@ -1230,7 +1252,6 @@ __ham_metagroup_42_recover(dbenv, dbtp, lsnp, op, info)
u_int32_t flags;
int cmp_n, cmp_p, did_alloc, groupgrow, ret;
- COMPQUIET(info, NULL);
did_alloc = 0;
mmeta = NULL;
REC_PRINT(__ham_metagroup_42_print);
@@ -1283,17 +1304,18 @@ __ham_metagroup_42_recover(dbenv, dbtp, lsnp, op, info)
CHECK_LSN(dbenv, op, cmp_p, &LSN(pagep), &argp->pagelsn);
if (cmp_p == 0 && DB_REDO(op)) {
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, dbc->priority, &pagep);
pagep->lsn = *lsnp;
} else if (cmp_n == 0 && DB_UNDO(op)) {
/*
* Otherwise just roll the page back to its
* previous state.
*/
- REC_DIRTY(mpf, &pagep);
+ REC_DIRTY(mpf, dbc->priority, &pagep);
pagep->lsn = argp->pagelsn;
}
- if (pagep != NULL && (ret = __memp_fput(mpf, pagep, 0)) != 0)
+ if (pagep != NULL &&
+ (ret = __memp_fput(mpf, pagep, dbc->priority)) != 0)
goto out;
do_meta:
@@ -1306,7 +1328,7 @@ do_meta:
CHECK_LSN(dbenv, op, cmp_p, &hcp->hdr->dbmeta.lsn, &argp->metalsn);
if (cmp_p == 0 && DB_REDO(op)) {
/* Redo the actual updating of bucket counts. */
- REC_DIRTY(mpf, &hcp->hdr);
+ REC_DIRTY(mpf, dbc->priority, &hcp->hdr);
++hcp->hdr->max_bucket;
if (groupgrow) {
hcp->hdr->low_mask = hcp->hdr->high_mask;
@@ -1316,7 +1338,7 @@ do_meta:
hcp->hdr->dbmeta.lsn = *lsnp;
} else if (cmp_n == 0 && DB_UNDO(op)) {
/* Undo the actual updating of bucket counts. */
- REC_DIRTY(mpf, &hcp->hdr);
+ REC_DIRTY(mpf, dbc->priority, &hcp->hdr);
hcp->hdr->max_bucket = argp->bucket;
if (groupgrow) {
hcp->hdr->high_mask = argp->bucket;
@@ -1335,7 +1357,7 @@ do_meta:
*/
if (did_alloc &&
hcp->hdr->spares[__db_log2(argp->bucket + 1) + 1] == PGNO_INVALID) {
- REC_DIRTY(mpf, &hcp->hdr);
+ REC_DIRTY(mpf, dbc->priority, &hcp->hdr);
hcp->hdr->spares[__db_log2(argp->bucket + 1) + 1] =
(argp->pgno - argp->bucket) - 1;
}
@@ -1355,22 +1377,22 @@ do_meta:
cmp_n = LOG_COMPARE(lsnp, &mmeta->lsn);
cmp_p = LOG_COMPARE(&mmeta->lsn, &argp->mmetalsn);
if (cmp_p == 0 && DB_REDO(op)) {
- REC_DIRTY(mpf, &mmeta);
+ REC_DIRTY(mpf, dbc->priority, &mmeta);
mmeta->lsn = *lsnp;
} else if (cmp_n == 0 && DB_UNDO(op)) {
- REC_DIRTY(mpf, &mmeta);
+ REC_DIRTY(mpf, dbc->priority, &mmeta);
mmeta->lsn = argp->mmetalsn;
}
} else {
mmeta = (DBMETA *)hcp->hdr;
- REC_DIRTY(mpf, &mmeta);
+ REC_DIRTY(mpf, dbc->priority, &mmeta);
}
if (mmeta->last_pgno < pgno)
mmeta->last_pgno = pgno;
if (argp->mmpgno != argp->mpgno &&
- (ret = __memp_fput(mpf, mmeta, 0)) != 0)
+ (ret = __memp_fput(mpf, mmeta, dbc->priority)) != 0)
goto out;
mmeta = NULL;
@@ -1378,7 +1400,7 @@ done: *lsnp = argp->prev_lsn;
ret = 0;
out: if (mmeta != NULL)
- (void)__memp_fput(mpf, mmeta, 0);
+ (void)__memp_fput(mpf, mmeta, dbc->priority);
if (dbc != NULL)
(void)__ham_release_meta(dbc);
if (ret == ENOENT && op == DB_TXN_BACKWARD_ALLOC)
@@ -1442,7 +1464,7 @@ __ham_groupalloc_42_recover(dbenv, dbtp, lsnp, op, info)
if ((ret = __ham_alloc_pages_42(file_dbp, argp, lsnp)) != 0)
goto out;
if (cmp_p == 0) {
- REC_DIRTY(mpf, &mmeta);
+ REC_DIRTY(mpf, file_dbp->priority, &mmeta);
LSN(mmeta) = *lsnp;
}
} else if (DB_UNDO(op)) {
@@ -1453,8 +1475,8 @@ __ham_groupalloc_42_recover(dbenv, dbtp, lsnp, op, info)
pagep = NULL;
if ((ret = __memp_fget(mpf, &pgno, NULL, 0, &pagep)) == 0) {
if (LOG_COMPARE(&pagep->lsn, lsnp) != 0) {
- if ((ret = __memp_fput(mpf,
- pagep, DB_MPOOL_DISCARD)) != 0)
+ if ((ret = __memp_fput(mpf, pagep,
+ DB_PRIORITY_VERY_LOW)) != 0)
goto out;
pagep = NULL;
}
@@ -1464,11 +1486,13 @@ __ham_groupalloc_42_recover(dbenv, dbtp, lsnp, op, info)
* Reset the last page back to its preallocation state.
*/
if (pagep != NULL) {
- if (LOG_COMPARE(&pagep->lsn, lsnp) == 0)
+ if (LOG_COMPARE(&pagep->lsn, lsnp) == 0) {
+ REC_DIRTY(mpf, file_dbp->priority, &pagep);
ZERO_LSN(pagep->lsn);
+ }
if ((ret =
- __memp_fput(mpf, pagep, DB_MPOOL_DIRTY)) != 0)
+ __memp_fput(mpf, pagep, file_dbp->priority)) != 0)
goto out;
}
/*
@@ -1478,7 +1502,7 @@ __ham_groupalloc_42_recover(dbenv, dbtp, lsnp, op, info)
info, argp->fileid, argp->start_pgno, argp->num)) != 0)
goto out;
if (cmp_n == 0) {
- REC_DIRTY(mpf, &mmeta);
+ REC_DIRTY(mpf, file_dbp->priority, &mmeta);
LSN(mmeta) = argp->meta_lsn;
}
}
@@ -1489,7 +1513,7 @@ __ham_groupalloc_42_recover(dbenv, dbtp, lsnp, op, info)
* will only be valid on REDO.
*/
if (pgno > mmeta->last_pgno) {
- REC_DIRTY(mpf, &mmeta);
+ REC_DIRTY(mpf, file_dbp->priority, &mmeta);
mmeta->last_pgno = pgno;
}
@@ -1498,7 +1522,7 @@ done: if (ret == 0)
ret = 0;
out: if (mmeta != NULL)
- (void)__memp_fput(mpf, mmeta, 0);
+ (void)__memp_fput(mpf, mmeta, file_dbp->priority);
if (ret == ENOENT && op == DB_TXN_BACKWARD_ALLOC)
ret = 0;
@@ -1535,13 +1559,14 @@ __ham_alloc_pages_42(dbp, argp, lsnp)
if ((ret = __memp_fget(mpf, &pgno, NULL, 0, &pagep)) == 0) {
if (NUM_ENT(pagep) == 0 && IS_ZERO_LSN(pagep->lsn))
goto reinit_page;
- if ((ret = __memp_fput(mpf, pagep, 0)) != 0)
+ if ((ret = __memp_fput(mpf, pagep, dbp->priority)) != 0)
return (ret);
return (0);
}
/* Had to create the page. */
- if ((ret = __memp_fget(mpf, &pgno, NULL, DB_MPOOL_CREATE, &pagep)) != 0)
+ if ((ret = __memp_fget(mpf, &pgno, NULL,
+ DB_MPOOL_CREATE | DB_MPOOL_DIRTY, &pagep)) != 0)
return (__db_pgerr(dbp, pgno, ret));
reinit_page:
@@ -1549,7 +1574,7 @@ reinit_page:
P_INIT(pagep, dbp->pgsize, pgno, PGNO_INVALID, PGNO_INVALID, 0, P_HASH);
pagep->lsn = *lsnp;
- if ((ret = __memp_fput(mpf, pagep, DB_MPOOL_DIRTY)) != 0)
+ if ((ret = __memp_fput(mpf, pagep, dbp->priority)) != 0)
return (ret);
return (0);
diff --git a/db/hash/hash_reclaim.c b/db/hash/hash_reclaim.c
index 8d793788c..8a692645c 100644
--- a/db/hash/hash_reclaim.c
+++ b/db/hash/hash_reclaim.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: hash_reclaim.c,v 12.6 2006/08/24 14:46:05 bostic Exp $
+ * $Id: hash_reclaim.c,v 12.9 2007/05/17 15:15:38 bostic Exp $
*/
#include "db_config.h"
@@ -52,7 +51,7 @@ __ham_reclaim(dbp, txn)
if ((ret = __ham_traverse(dbc,
DB_LOCK_WRITE, __db_reclaim_callback, dbc, 1)) != 0)
goto err;
- if ((ret = __db_c_close(dbc)) != 0)
+ if ((ret = __dbc_close(dbc)) != 0)
goto err;
if ((ret = __ham_release_meta(dbc)) != 0)
goto err;
@@ -60,7 +59,7 @@ __ham_reclaim(dbp, txn)
err: if (hcp->hdr != NULL)
(void)__ham_release_meta(dbc);
- (void)__db_c_close(dbc);
+ (void)__dbc_close(dbc);
return (ret);
}
diff --git a/db/hash/hash_stat.c b/db/hash/hash_stat.c
index 6e1794208..f079f1885 100644
--- a/db/hash/hash_stat.c
+++ b/db/hash/hash_stat.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: hash_stat.c,v 12.10 2006/09/07 20:05:30 bostic Exp $
+ * $Id: hash_stat.c,v 12.17 2007/07/02 16:58:02 alexg Exp $
*/
#include "db_config.h"
@@ -57,6 +56,14 @@ __ham_stat(dbc, spp, flags)
/* Copy the fields that we have. */
sp->hash_nkeys = hcp->hdr->dbmeta.key_count;
sp->hash_ndata = hcp->hdr->dbmeta.record_count;
+ /*
+ * Don't take the page number from the meta-data page -- that value is
+ * only maintained in the primary database, we may have been called on
+ * a subdatabase.
+ */
+ if ((ret = __memp_get_last_pgno(dbp->mpf, &pgno)) != 0)
+ goto err;
+ sp->hash_pagecnt = pgno + 1;
sp->hash_pagesize = dbp->pgsize;
sp->hash_buckets = hcp->hdr->max_bucket + 1;
sp->hash_magic = hcp->hdr->dbmeta.magic;
@@ -76,7 +83,7 @@ __ham_stat(dbc, spp, flags)
goto err;
pgno = h->next_pgno;
- (void)__memp_fput(mpf, h, 0);
+ (void)__memp_fput(mpf, h, dbc->priority);
}
/* Now traverse the rest of the table. */
@@ -226,6 +233,7 @@ __ham_stat_callback(dbp, pagep, cookie, putp)
* Obviously such pages have no data, so we can just proceed.
*/
break;
+ case P_HASH_UNSORTED:
case P_HASH:
/*
* We count the buckets and the overflow pages
@@ -441,7 +449,7 @@ __ham_traverse(dbc, mode, callback, cookie, look_past_max)
case H_OFFDUP:
memcpy(&opgno, HOFFDUP_PGNO(hk),
sizeof(db_pgno_t));
- if ((ret = __db_c_newopd(dbc,
+ if ((ret = __dbc_newopd(dbc,
opgno, NULL, &opd)) != 0)
return (ret);
if ((ret = __bam_traverse(opd,
@@ -449,7 +457,7 @@ __ham_traverse(dbc, mode, callback, cookie, look_past_max)
callback, cookie))
!= 0)
goto err;
- if ((ret = __db_c_close(opd)) != 0)
+ if ((ret = __dbc_close(opd)) != 0)
return (ret);
opd = NULL;
break;
@@ -492,14 +500,15 @@ __ham_traverse(dbc, mode, callback, cookie, look_past_max)
goto err;
if (hcp->page != NULL) {
- if ((ret = __memp_fput(mpf, hcp->page, 0)) != 0)
+ if ((ret =
+ __memp_fput(mpf, hcp->page, dbc->priority)) != 0)
return (ret);
hcp->page = NULL;
}
}
err: if (opd != NULL &&
- (t_ret = __db_c_close(opd)) != 0 && ret == 0)
+ (t_ret = __dbc_close(opd)) != 0 && ret == 0)
ret = t_ret;
return (ret);
}
diff --git a/db/hash/hash_stub.c b/db/hash/hash_stub.c
index dd0cf930c..7a1f94e0a 100644
--- a/db/hash/hash_stub.c
+++ b/db/hash/hash_stub.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: hash_stub.c,v 12.8 2006/08/24 14:46:05 bostic Exp $
+ * $Id: hash_stub.c,v 12.12 2007/05/17 15:15:38 bostic Exp $
*/
#ifndef HAVE_HASH
@@ -94,7 +93,41 @@ __ham_31_hashmeta(dbp, real_name, flags, fhp, h, dirtyp)
}
int
-__ham_c_count(dbc, recnop)
+__ham_46_hash(dbp, real_name, flags, fhp, h, dirtyp)
+ DB *dbp;
+ char *real_name;
+ u_int32_t flags;
+ DB_FH *fhp;
+ PAGE *h;
+ int *dirtyp;
+{
+ COMPQUIET(real_name, NULL);
+ COMPQUIET(flags, 0);
+ COMPQUIET(fhp, NULL);
+ COMPQUIET(h, NULL);
+ COMPQUIET(dirtyp, NULL);
+ return (__db_no_hash_am(dbp->dbenv));
+}
+
+int
+__ham_46_hashmeta(dbp, real_name, flags, fhp, h, dirtyp)
+ DB *dbp;
+ char *real_name;
+ u_int32_t flags;
+ DB_FH *fhp;
+ PAGE *h;
+ int *dirtyp;
+{
+ COMPQUIET(real_name, NULL);
+ COMPQUIET(flags, 0);
+ COMPQUIET(fhp, NULL);
+ COMPQUIET(h, NULL);
+ COMPQUIET(dirtyp, NULL);
+ return (__db_no_hash_am(dbp->dbenv));
+}
+
+int
+__hamc_count(dbc, recnop)
DBC *dbc;
db_recno_t *recnop;
{
@@ -103,7 +136,7 @@ __ham_c_count(dbc, recnop)
}
int
-__ham_c_dup(orig_dbc, new_dbc)
+__hamc_dup(orig_dbc, new_dbc)
DBC *orig_dbc, *new_dbc;
{
COMPQUIET(new_dbc, NULL);
@@ -111,7 +144,7 @@ __ham_c_dup(orig_dbc, new_dbc)
}
int
-__ham_c_init(dbc)
+__hamc_init(dbc)
DBC *dbc;
{
return (__db_no_hash_am(dbc->dbp->dbenv));
diff --git a/db/hash/hash_upgrade.c b/db/hash/hash_upgrade.c
index 8432129f2..c3b69d200 100644
--- a/db/hash/hash_upgrade.c
+++ b/db/hash/hash_upgrade.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: hash_upgrade.c,v 12.6 2006/08/24 14:46:05 bostic Exp $
+ * $Id: hash_upgrade.c,v 12.11 2007/05/17 17:18:00 bostic Exp $
*/
#include "db_config.h"
@@ -256,3 +255,60 @@ __ham_31_hash(dbp, real_name, flags, fhp, h, dirtyp)
return (ret);
}
+
+/*
+ * __ham_46_hashmeta --
+ * Upgrade the database from version 8 to version 9.
+ *
+ * PUBLIC: int __ham_46_hashmeta
+ * PUBLIC: __P((DB *, char *, u_int32_t, DB_FH *, PAGE *, int *));
+ */
+int
+__ham_46_hashmeta(dbp, real_name, flags, fhp, h, dirtyp)
+ DB *dbp;
+ char *real_name;
+ u_int32_t flags;
+ DB_FH *fhp;
+ PAGE *h;
+ int *dirtyp;
+{
+ HMETA33 *newmeta;
+
+ COMPQUIET(dbp, NULL);
+ COMPQUIET(real_name, NULL);
+ COMPQUIET(flags, 0);
+ COMPQUIET(fhp, NULL);
+
+ newmeta = (HMETA33 *)h;
+ /* Update the version. */
+ newmeta->dbmeta.version = 9;
+ *dirtyp = 1;
+
+ return (0);
+}
+
+/*
+ * __ham_46_hash --
+ * Upgrade the database hash leaf pages.
+ * From version 8 databases to version 9.
+ * Involves sorting leaf pages, no format change.
+ *
+ * PUBLIC: int __ham_46_hash
+ * PUBLIC: __P((DB *, char *, u_int32_t, DB_FH *, PAGE *, int *));
+ */
+int
+__ham_46_hash(dbp, real_name, flags, fhp, h, dirtyp)
+ DB *dbp;
+ char *real_name;
+ u_int32_t flags;
+ DB_FH *fhp;
+ PAGE *h;
+ int *dirtyp;
+{
+ COMPQUIET(real_name, NULL);
+ COMPQUIET(flags, 0);
+ COMPQUIET(fhp, NULL);
+
+ *dirtyp = 1;
+ return (__ham_sort_page(dbp, NULL, NULL, h));
+}
diff --git a/db/hash/hash_verify.c b/db/hash/hash_verify.c
index d4b20f796..1531c758d 100644
--- a/db/hash/hash_verify.c
+++ b/db/hash/hash_verify.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1999-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1999,2007 Oracle. All rights reserved.
*
- * $Id: hash_verify.c,v 12.17 2006/09/07 20:05:31 bostic Exp $
+ * $Id: hash_verify.c,v 12.26 2007/07/02 16:58:02 alexg Exp $
*/
#include "db_config.h"
@@ -41,15 +40,18 @@ __ham_vrfy_meta(dbp, vdp, m, pgno, flags)
db_pgno_t pgno;
u_int32_t flags;
{
+ DB_ENV *dbenv;
HASH *hashp;
VRFY_PAGEINFO *pip;
int i, ret, t_ret, isbad;
u_int32_t pwr, mbucket;
u_int32_t (*hfunc) __P((DB *, const void *, u_int32_t));
+ dbenv = dbp->dbenv;
+ isbad = 0;
+
if ((ret = __db_vrfy_getpageinfo(vdp, pgno, &pip)) != 0)
return (ret);
- isbad = 0;
hashp = dbp->h_internal;
@@ -73,7 +75,7 @@ __ham_vrfy_meta(dbp, vdp, m, pgno, flags)
/* h_charkey */
if (!LF_ISSET(DB_NOORDERCHK))
if (m->h_charkey != hfunc(dbp, CHARKEY, sizeof(CHARKEY))) {
- EPRINT((dbp->dbenv,
+ EPRINT((dbenv,
"Page %lu: database has custom hash function; reverify with DB_NOORDERCHK set",
(u_long)pgno));
/*
@@ -87,7 +89,7 @@ __ham_vrfy_meta(dbp, vdp, m, pgno, flags)
/* max_bucket must be less than the last pgno. */
if (m->max_bucket > vdp->last_pgno) {
- EPRINT((dbp->dbenv,
+ EPRINT((dbenv,
"Page %lu: Impossible max_bucket %lu on meta page",
(u_long)pgno, (u_long)m->max_bucket));
/*
@@ -106,14 +108,14 @@ __ham_vrfy_meta(dbp, vdp, m, pgno, flags)
*/
pwr = (m->max_bucket == 0) ? 1 : 1 << __db_log2(m->max_bucket + 1);
if (m->high_mask != pwr - 1) {
- EPRINT((dbp->dbenv,
+ EPRINT((dbenv,
"Page %lu: incorrect high_mask %lu, should be %lu",
(u_long)pgno, (u_long)m->high_mask, (u_long)pwr - 1));
isbad = 1;
}
pwr >>= 1;
if (m->low_mask != pwr - 1) {
- EPRINT((dbp->dbenv,
+ EPRINT((dbenv,
"Page %lu: incorrect low_mask %lu, should be %lu",
(u_long)pgno, (u_long)m->low_mask, (u_long)pwr - 1));
isbad = 1;
@@ -128,7 +130,7 @@ __ham_vrfy_meta(dbp, vdp, m, pgno, flags)
* which could make nelem go "negative".
*/
if (m->nelem > 0x80000000) {
- EPRINT((dbp->dbenv,
+ EPRINT((dbenv,
"Page %lu: suspiciously high nelem of %lu",
(u_long)pgno, (u_long)m->nelem));
isbad = 1;
@@ -152,15 +154,14 @@ __ham_vrfy_meta(dbp, vdp, m, pgno, flags)
*/
mbucket = (1 << i) - 1;
if (BS_TO_PAGE(mbucket, m->spares) > vdp->last_pgno) {
- EPRINT((dbp->dbenv,
+ EPRINT((dbenv,
"Page %lu: spares array entry %d is invalid",
(u_long)pgno, i));
isbad = 1;
}
}
-err: if ((t_ret =
- __db_vrfy_putpageinfo(dbp->dbenv, vdp, pip)) != 0 && ret == 0)
+err: if ((t_ret = __db_vrfy_putpageinfo(dbenv, vdp, pip)) != 0 && ret == 0)
ret = t_ret;
if (LF_ISSET(DB_SALVAGE) &&
(t_ret = __db_salvage_markdone(vdp, pgno)) != 0 && ret == 0)
@@ -195,7 +196,7 @@ __ham_vrfy(dbp, vdp, h, pgno, flags)
if ((ret = __db_vrfy_getpageinfo(vdp, pgno, &pip)) != 0)
return (ret);
- if (TYPE(h) != P_HASH) {
+ if (TYPE(h) != P_HASH && TYPE(h) != P_HASH_UNSORTED) {
ret = __db_unknown_path(dbenv, "__ham_vrfy");
goto err;
}
@@ -241,6 +242,10 @@ __ham_vrfy(dbp, vdp, h, pgno, flags)
goto err;
}
+ if (!LF_ISSET(DB_NOORDERCHK) && TYPE(h) == P_HASH &&
+ (ret = __ham_verify_sorted_page(dbp, NULL, h)) != 0)
+ isbad = 1;
+
err: if ((t_ret =
__db_vrfy_putpageinfo(dbenv, vdp, pip)) != 0 && ret == 0)
ret = t_ret;
@@ -459,7 +464,7 @@ __ham_vrfy_structure(dbp, vdp, meta_pgno, flags)
continue;
}
- if (pip->type != P_HASH) {
+ if (pip->type != P_HASH && pip->type != P_HASH_UNSORTED) {
EPRINT((dbp->dbenv,
"Page %lu: hash bucket %lu maps to non-hash page",
(u_long)pgno, (u_long)bucket));
@@ -493,9 +498,9 @@ __ham_vrfy_structure(dbp, vdp, meta_pgno, flags)
goto err;
}
-err: if ((t_ret = __memp_fput(mpf, m, 0)) != 0)
+err: if ((t_ret = __memp_fput(mpf, m, dbp->priority)) != 0)
return (t_ret);
- if (h != NULL && (t_ret = __memp_fput(mpf, h, 0)) != 0)
+ if (h != NULL && (t_ret = __memp_fput(mpf, h, dbp->priority)) != 0)
return (t_ret);
return ((isbad == 1 && ret == 0) ? DB_VERIFY_BAD: ret);
}
@@ -541,7 +546,8 @@ __ham_vrfy_bucket(dbp, vdp, m, bucket, flags)
goto err;
/* Make sure we got a plausible page number. */
- if (pgno > vdp->last_pgno || pip->type != P_HASH) {
+ if (pgno > vdp->last_pgno ||
+ (pip->type != P_HASH && pip->type != P_HASH_UNSORTED)) {
EPRINT((dbenv,
"Page %lu: impossible first page in bucket %lu",
(u_long)pgno, (u_long)bucket));
@@ -761,7 +767,7 @@ __ham_vrfy_hashing(dbp, nentries, m, thisbucket, pgno, flags, hfunc)
err: if (dbt.data != NULL)
__os_ufree(dbp->dbenv, dbt.data);
- if ((t_ret = __memp_fput(mpf, h, 0)) != 0)
+ if ((t_ret = __memp_fput(mpf, h, dbp->priority)) != 0)
return (t_ret);
return ((ret == 0 && isbad == 1) ? DB_VERIFY_BAD : ret);
@@ -991,19 +997,21 @@ __ham_meta2pgset(dbp, vdp, hmeta, flags, pgset)
for (;;) {
if ((ret = __memp_fget(mpf, &pgno, NULL, 0, &h)) != 0)
return (ret);
- if (TYPE(h) == P_HASH) {
+ if (TYPE(h) == P_HASH || TYPE(h) == P_HASH_UNSORTED) {
/*
* Make sure we don't go past the end of
* pgset.
*/
if (++totpgs > vdp->last_pgno) {
- (void)__memp_fput(mpf, h, 0);
+ (void)__memp_fput(mpf,
+ h, dbp->priority);
return (DB_VERIFY_BAD);
}
if ((ret =
__db_vrfy_pgset_inc(pgset, pgno)) != 0) {
- (void)__memp_fput(mpf, h, 0);
+ (void)__memp_fput(mpf,
+ h, dbp->priority);
return (ret);
}
@@ -1011,7 +1019,7 @@ __ham_meta2pgset(dbp, vdp, hmeta, flags, pgset)
} else
pgno = PGNO_INVALID;
- if ((ret = __memp_fput(mpf, h, 0)) != 0)
+ if ((ret = __memp_fput(mpf, h, dbp->priority)) != 0)
return (ret);
/* If the new pgno is wonky, go onto the next bucket. */
diff --git a/db/hmac/hmac.c b/db/hmac/hmac.c
index 8edadd640..6f6fe308d 100644
--- a/db/hmac/hmac.c
+++ b/db/hmac/hmac.c
@@ -1,13 +1,12 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2001-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2001,2007 Oracle. All rights reserved.
*
* Some parts of this code originally written by Adam Stubblefield,
* -- astubble@rice.edu.
*
- * $Id: hmac.c,v 12.9 2006/09/09 14:28:23 bostic Exp $
+ * $Id: hmac.c,v 12.11 2007/05/17 15:15:39 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/hmac/sha1.c b/db/hmac/sha1.c
index b3fdf7eb0..fd1811618 100644
--- a/db/hmac/sha1.c
+++ b/db/hmac/sha1.c
@@ -1,5 +1,5 @@
/*
- * $Id: sha1.c,v 12.2 2006/09/08 20:32:10 bostic Exp $
+ * $Id: sha1.c,v 12.4 2007/05/17 17:18:00 bostic Exp $
*/
#include "db_config.h"
@@ -46,7 +46,7 @@ int and a long are the same size in those environments.
I also corrected a few compiler warnings generated by Borland C.
1. Added #include <process.h> for exit() prototype
2. Removed unused variable 'j' in SHA1Final
-3. Changed exit(0) to return(0) at end of main.
+3. Changed exit(0) to return (0) at end of main.
ALL changes I made can be located by searching for comments containing 'JHB'
-----------------
@@ -54,7 +54,7 @@ Modified 8/98
By Steve Reid <sreid@sea-to-sky.net>
Still 100% public domain
-1- Removed #include <process.h> and used return() instead of exit()
+1- Removed #include <process.h> and used return () instead of exit()
2- Fixed overwriting of finalcount in SHA1Final() (discovered by Chris Hall)
3- Changed email address from steve@edmweb.com to sreid@sea-to-sky.net
@@ -64,7 +64,6 @@ By Saul Kravitz <Saul.Kravitz@celera.com>
Still 100% PD
Modified to run on Compaq Alpha hardware.
-
*/
/*
@@ -77,28 +76,27 @@ A million repetitions of "a"
34AA973C D4C4DAA4 F61EEB2B DBAD2731 6534016F
*/
-#define SHA1HANDSOFF
+#define SHA1HANDSOFF
/* #include <process.h> */ /* prototype for exit() - JHB */
-/* Using return() instead of exit() - SWR */
+/* Using return () instead of exit() - SWR */
-#define rol(value, bits) (((value) << (bits)) | ((value) >> (32 - (bits))))
+#define rol(value, bits) (((value) << (bits)) | ((value) >> (32 - (bits))))
/* blk0() and blk() perform the initial expand. */
/* I got the idea of expanding during the round function from SSLeay */
-#define blk0(i) is_bigendian ? block->l[i] : \
+#define blk0(i) is_bigendian ? block->l[i] : \
(block->l[i] = (rol(block->l[i],24)&0xFF00FF00) \
|(rol(block->l[i],8)&0x00FF00FF))
-#define blk(i) (block->l[i&15] = rol(block->l[(i+13)&15]^block->l[(i+8)&15] \
+#define blk(i) (block->l[i&15] = rol(block->l[(i+13)&15]^block->l[(i+8)&15] \
^block->l[(i+2)&15]^block->l[i&15],1))
/* (R0+R1), R2, R3, R4 are the different operations used in SHA1 */
-#define R0(v,w,x,y,z,i) z+=((w&(x^y))^y)+blk0(i)+0x5A827999+rol(v,5);w=rol(w,30);
-#define R1(v,w,x,y,z,i) z+=((w&(x^y))^y)+blk(i)+0x5A827999+rol(v,5);w=rol(w,30);
-#define R2(v,w,x,y,z,i) z+=(w^x^y)+blk(i)+0x6ED9EBA1+rol(v,5);w=rol(w,30);
-#define R3(v,w,x,y,z,i) z+=(((w|x)&y)|(w&x))+blk(i)+0x8F1BBCDC+rol(v,5);w=rol(w,30);
-#define R4(v,w,x,y,z,i) z+=(w^x^y)+blk(i)+0xCA62C1D6+rol(v,5);w=rol(w,30);
-
+#define R0(v,w,x,y,z,i) z+=((w&(x^y))^y)+blk0(i)+0x5A827999+rol(v,5);w=rol(w,30);
+#define R1(v,w,x,y,z,i) z+=((w&(x^y))^y)+blk(i)+0x5A827999+rol(v,5);w=rol(w,30);
+#define R2(v,w,x,y,z,i) z+=(w^x^y)+blk(i)+0x6ED9EBA1+rol(v,5);w=rol(w,30);
+#define R3(v,w,x,y,z,i) z+=(((w|x)&y)|(w&x))+blk(i)+0x8F1BBCDC+rol(v,5);w=rol(w,30);
+#define R4(v,w,x,y,z,i) z+=(w^x^y)+blk(i)+0xCA62C1D6+rol(v,5);w=rol(w,30);
#ifdef VERBOSE /* SAK */
static void __db_SHAPrintContext __P((SHA1_CTX *, char *));
@@ -127,8 +125,8 @@ __db_SHAPrintContext(context, msg)
*/
void
__db_SHA1Transform(state, buffer)
- u_int32_t *state;
- unsigned char *buffer;
+ u_int32_t *state;
+ unsigned char *buffer;
{
u_int32_t a, b, c, d, e;
typedef union {
@@ -136,7 +134,7 @@ typedef union {
u_int32_t l[16];
} CHAR64LONG16;
CHAR64LONG16* block;
-static int is_bigendian = -1;
+ int is_bigendian;
#ifdef SHA1HANDSOFF
unsigned char workspace[64];
@@ -145,8 +143,8 @@ static int is_bigendian = -1;
#else
block = (CHAR64LONG16*)buffer;
#endif
- if (is_bigendian == -1)
- is_bigendian = __db_isbigendian();
+ is_bigendian = __db_isbigendian();
+
/* Copy context->state[] to working vars */
a = state[0];
b = state[1];
@@ -184,7 +182,6 @@ static int is_bigendian = -1;
a = b = c = d = e = 0;
}
-
/* SHA1Init - Initialize new context */
/*
@@ -195,7 +192,7 @@ static int is_bigendian = -1;
*/
void
__db_SHA1Init(context)
- SHA1_CTX *context;
+ SHA1_CTX *context;
{
/* SHA1 initialization constants */
context->state[0] = 0x67452301;
@@ -206,7 +203,6 @@ __db_SHA1Init(context)
context->count[0] = context->count[1] = 0;
}
-
/* Run your data through this. */
/*
@@ -218,9 +214,9 @@ __db_SHA1Init(context)
*/
void
__db_SHA1Update(context, data, len)
- SHA1_CTX *context;
- unsigned char *data;
- size_t len;
+ SHA1_CTX *context;
+ unsigned char *data;
+ size_t len;
{
u_int32_t i, j; /* JHB */
@@ -231,12 +227,12 @@ u_int32_t i, j; /* JHB */
if ((context->count[0] += (u_int32_t)len << 3) < (len << 3)) context->count[1]++;
context->count[1] += (u_int32_t)(len >> 29);
if ((j + len) > 63) {
- memcpy(&context->buffer[j], data, (i = 64-j));
- __db_SHA1Transform(context->state, context->buffer);
- for ( ; i + 63 < len; i += 64) {
- __db_SHA1Transform(context->state, &data[i]);
- }
- j = 0;
+ memcpy(&context->buffer[j], data, (i = 64-j));
+ __db_SHA1Transform(context->state, context->buffer);
+ for ( ; i + 63 < len; i += 64) {
+ __db_SHA1Transform(context->state, &data[i]);
+ }
+ j = 0;
}
else i = 0;
memcpy(&context->buffer[j], &data[i], len - i);
@@ -245,7 +241,6 @@ u_int32_t i, j; /* JHB */
#endif
}
-
/* Add padding and return the message digest. */
/*
@@ -256,25 +251,25 @@ u_int32_t i, j; /* JHB */
*/
void
__db_SHA1Final(digest, context)
- unsigned char *digest;
- SHA1_CTX *context;
+ unsigned char *digest;
+ SHA1_CTX *context;
{
u_int32_t i; /* JHB */
unsigned char finalcount[8];
for (i = 0; i < 8; i++) {
- finalcount[i] = (unsigned char)((context->count[(i >= 4 ? 0 : 1)]
- >> ((3-(i & 3)) * 8) ) & 255); /* Endian independent */
+ finalcount[i] = (unsigned char)((context->count[(i >= 4 ? 0 : 1)]
+ >> ((3-(i & 3)) * 8) ) & 255); /* Endian independent */
}
__db_SHA1Update(context, (unsigned char *)"\200", 1);
while ((context->count[0] & 504) != 448) {
- __db_SHA1Update(context, (unsigned char *)"\0", 1);
+ __db_SHA1Update(context, (unsigned char *)"\0", 1);
}
__db_SHA1Update(context, finalcount, 8); /* Should cause a SHA1Transform()
*/
for (i = 0; i < 20; i++) {
- digest[i] = (unsigned char)
- ((context->state[i>>2] >> ((3-(i & 3)) * 8) ) & 255);
+ digest[i] = (unsigned char)
+ ((context->state[i>>2] >> ((3-(i & 3)) * 8) ) & 255);
}
/* Wipe variables */
i = 0; /* JHB */
diff --git a/db/hsearch/hsearch.c b/db/hsearch/hsearch.c
index 831142490..4a750a25a 100644
--- a/db/hsearch/hsearch.c
+++ b/db/hsearch/hsearch.c
@@ -1,8 +1,7 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*/
/*
* Copyright (c) 1990, 1993
@@ -39,7 +38,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: hsearch.c,v 12.7 2006/08/24 14:46:06 bostic Exp $
+ * $Id: hsearch.c,v 12.9 2007/05/17 15:15:39 bostic Exp $
*/
#define DB_DBM_HSEARCH 1
diff --git a/db/include/btree.h b/db/include/btree.h
deleted file mode 100644
index 395f645f0..000000000
--- a/db/include/btree.h
+++ /dev/null
@@ -1,317 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1996, 1997, 1998, 1999, 2000
- * Sleepycat Software. All rights reserved.
- */
-/*
- * Copyright (c) 1990, 1993, 1994, 1995, 1996
- * Keith Bostic. All rights reserved.
- */
-/*
- * Copyright (c) 1990, 1993, 1994, 1995
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Mike Olson.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $Id: btree.h,v 11.37 2001/01/17 17:09:52 bostic Exp $
- */
-
-/* Forward structure declarations. */
-struct __btree; typedef struct __btree BTREE;
-struct __cursor; typedef struct __cursor BTREE_CURSOR;
-struct __epg; typedef struct __epg EPG;
-struct __recno; typedef struct __recno RECNO;
-
-#define DEFMINKEYPAGE (2)
-
-/*
- * A recno order of 0 indicates that we don't have an order, not that we've
- * an order less than 1.
- */
-#define INVALID_ORDER 0
-
-#define ISINTERNAL(p) (TYPE(p) == P_IBTREE || TYPE(p) == P_IRECNO)
-#define ISLEAF(p) (TYPE(p) == P_LBTREE || \
- TYPE(p) == P_LRECNO || TYPE(p) == P_LDUP)
-
-/* Flags for __bam_cadjust_log(). */
-#define CAD_UPDATEROOT 0x01 /* Root page count was updated. */
-
-/* Flags for __bam_split_log(). */
-#define SPL_NRECS 0x01 /* Split tree has record count. */
-
-/* Flags for __bam_iitem(). */
-#define BI_DELETED 0x01 /* Key/data pair only placeholder. */
-
-/* Flags for __bam_stkrel(). */
-#define STK_CLRDBC 0x01 /* Clear dbc->page reference. */
-#define STK_NOLOCK 0x02 /* Don't retain locks. */
-
-/* Flags for __ram_ca(). These get logged, so make the values explicit. */
-typedef enum {
- CA_DELETE = 0, /* Delete the current record. */
- CA_IAFTER = 1, /* Insert before the current record. */
- CA_IBEFORE = 2, /* Insert after the current record. */
- CA_ICURRENT = 3 /* Overwrite the current record. */
-} ca_recno_arg;
-
-/*
- * Flags for __bam_search() and __bam_rsearch().
- *
- * Note, internal page searches must find the largest record less than key in
- * the tree so that descents work. Leaf page searches must find the smallest
- * record greater than key so that the returned index is the record's correct
- * position for insertion.
- *
- * The flags parameter to the search routines describes three aspects of the
- * search: the type of locking required (including if we're locking a pair of
- * pages), the item to return in the presence of duplicates and whether or not
- * to return deleted entries. To simplify both the mnemonic representation
- * and the code that checks for various cases, we construct a set of bitmasks.
- */
-#define S_READ 0x00001 /* Read locks. */
-#define S_WRITE 0x00002 /* Write locks. */
-
-#define S_APPEND 0x00040 /* Append to the tree. */
-#define S_DELNO 0x00080 /* Don't return deleted items. */
-#define S_DUPFIRST 0x00100 /* Return first duplicate. */
-#define S_DUPLAST 0x00200 /* Return last duplicate. */
-#define S_EXACT 0x00400 /* Exact items only. */
-#define S_PARENT 0x00800 /* Lock page pair. */
-#define S_STACK 0x01000 /* Need a complete stack. */
-#define S_PAST_EOF 0x02000 /* If doing insert search (or keyfirst
- * or keylast operations), or a split
- * on behalf of an insert, it's okay to
- * return an entry one past end-of-page.
- */
-#define S_STK_ONLY 0x04000 /* Just return info in the stack */
-
-#define S_DELETE (S_WRITE | S_DUPFIRST | S_DELNO | S_EXACT | S_STACK)
-#define S_FIND (S_READ | S_DUPFIRST | S_DELNO)
-#define S_FIND_WR (S_WRITE | S_DUPFIRST | S_DELNO)
-#define S_INSERT (S_WRITE | S_DUPLAST | S_PAST_EOF | S_STACK)
-#define S_KEYFIRST (S_WRITE | S_DUPFIRST | S_PAST_EOF | S_STACK)
-#define S_KEYLAST (S_WRITE | S_DUPLAST | S_PAST_EOF | S_STACK)
-#define S_WRPAIR (S_WRITE | S_DUPLAST | S_PAST_EOF | S_PARENT)
-
-/*
- * Various routines pass around page references. A page reference is
- * a pointer to the page, and the indx indicates an item on the page.
- * Each page reference may include a lock.
- */
-struct __epg {
- PAGE *page; /* The page. */
- db_indx_t indx; /* The index on the page. */
- db_indx_t entries; /* The number of entries on page */
- DB_LOCK lock; /* The page's lock. */
- db_lockmode_t lock_mode; /* The lock mode. */
-};
-
-/*
- * We maintain a stack of the pages that we're locking in the tree. Grow
- * the stack as necessary.
- *
- * XXX
- * Temporary fix for #3243 -- clear the page and lock from the stack entry.
- * The correct fix is to never release a stack that doesn't hold items.
- */
-#define BT_STK_CLR(c) do { \
- (c)->csp = (c)->sp; \
- (c)->csp->page = NULL; \
- (c)->csp->lock.off = LOCK_INVALID; \
-} while (0)
-
-#define BT_STK_ENTER(dbenv, c, pagep, page_indx, l, mode, ret) do { \
- if ((ret = \
- (c)->csp == (c)->esp ? __bam_stkgrow(dbenv, c) : 0) == 0) { \
- (c)->csp->page = pagep; \
- (c)->csp->indx = page_indx; \
- (c)->csp->entries = NUM_ENT(pagep); \
- (c)->csp->lock = l; \
- (c)->csp->lock_mode = mode; \
- } \
-} while (0)
-
-#define BT_STK_PUSH(dbenv, c, pagep, page_indx, lock, mode, ret) do { \
- BT_STK_ENTER(dbenv, c, pagep, page_indx, lock, mode, ret); \
- ++(c)->csp; \
-} while (0)
-
-#define BT_STK_NUM(dbenv, c, pagep, page_indx, ret) do { \
- if ((ret = \
- (c)->csp == (c)->esp ? __bam_stkgrow(dbenv, c) : 0) == 0) { \
- (c)->csp->page = NULL; \
- (c)->csp->indx = page_indx; \
- (c)->csp->entries = NUM_ENT(pagep); \
- (c)->csp->lock.off = LOCK_INVALID; \
- (c)->csp->lock_mode = DB_LOCK_NG; \
- } \
-} while (0)
-
-#define BT_STK_NUMPUSH(dbenv, c, pagep, page_indx,ret) do { \
- BT_STK_NUM(dbenv, cp, pagep, page_indx, ret); \
- ++(c)->csp; \
-} while (0)
-
-#define BT_STK_POP(c) \
- ((c)->csp == (c)->sp ? NULL : --(c)->csp)
-
-/* Btree/Recno cursor. */
-struct __cursor {
- /* struct __dbc_internal */
- __DBC_INTERNAL
-
- /* btree private part */
- EPG *sp; /* Stack pointer. */
- EPG *csp; /* Current stack entry. */
- EPG *esp; /* End stack pointer. */
- EPG stack[5];
-
- db_indx_t ovflsize; /* Maximum key/data on-page size. */
-
- db_recno_t recno; /* Current record number. */
- u_int32_t order; /* Relative order among deleted curs. */
-
- /*
- * Btree:
- * We set a flag in the cursor structure if the underlying object has
- * been deleted. It's not strictly necessary, we could get the same
- * information by looking at the page itself, but this method doesn't
- * require us to retrieve the page on cursor delete.
- *
- * Recno:
- * When renumbering recno databases during deletes, cursors referencing
- * "deleted" records end up positioned between two records, and so must
- * be specially adjusted on the next operation.
- */
-#define C_DELETED 0x0001 /* Record was deleted. */
- /*
- * There are three tree types that require maintaining record numbers.
- * Recno AM trees, Btree AM trees for which the DB_RECNUM flag was set,
- * and Btree off-page duplicate trees.
- */
-#define C_RECNUM 0x0002 /* Tree requires record counts. */
- /*
- * Recno trees have immutable record numbers by default, but optionally
- * support mutable record numbers. Off-page duplicate Recno trees have
- * mutable record numbers. All Btrees with record numbers (including
- * off-page duplicate trees) are mutable by design, no flag is needed.
- */
-#define C_RENUMBER 0x0004 /* Tree records are mutable. */
- u_int32_t flags;
-};
-
-/*
- * Threshhold value, as a function of bt_minkey, of the number of
- * bytes a key/data pair can use before being placed on an overflow
- * page. Assume every item requires the maximum alignment for
- * padding, out of sheer paranoia.
- */
-#define B_MINKEY_TO_OVFLSIZE(minkey, pgsize) \
- ((u_int16_t)(((pgsize) - P_OVERHEAD) / ((minkey) * P_INDX) - \
- (BKEYDATA_PSIZE(0) + ALIGN(1, sizeof(int32_t)))))
-
-/*
- * The maximum space that a single item can ever take up on one page.
- * Used by __bam_split to determine whether a split is still necessary.
- */
-#define B_MAX(a,b) (((a) > (b)) ? (a) : (b))
-#define B_MAXSIZEONPAGE(ovflsize) \
- (B_MAX(BOVERFLOW_PSIZE, BKEYDATA_PSIZE(ovflsize)))
-
-/*
- * The in-memory, per-tree btree/recno data structure.
- */
-struct __btree { /* Btree access method. */
- /*
- * !!!
- * These fields are write-once (when the structure is created) and
- * so are ignored as far as multi-threading is concerned.
- */
- db_pgno_t bt_meta; /* Database meta-data page. */
- db_pgno_t bt_root; /* Database root page. */
-
- u_int32_t bt_maxkey; /* Maximum keys per page. */
- u_int32_t bt_minkey; /* Minimum keys per page. */
-
- /* Btree comparison function. */
- int (*bt_compare) __P((DB *, const DBT *, const DBT *));
- /* Btree prefix function. */
- size_t (*bt_prefix) __P((DB *, const DBT *, const DBT *));
-
- /* Recno access method. */
- int re_pad; /* Fixed-length padding byte. */
- int re_delim; /* Variable-length delimiting byte. */
- u_int32_t re_len; /* Length for fixed-length records. */
- char *re_source; /* Source file name. */
-
- /*
- * !!!
- * The bt_lpgno field is NOT protected by any mutex, and for this
- * reason must be advisory only, so, while it is read/written by
- * multiple threads, DB is completely indifferent to the quality
- * of its information.
- */
- db_pgno_t bt_lpgno; /* Last insert location. */
-
- /*
- * !!!
- * The re_modified field is NOT protected by any mutex, and for this
- * reason cannot be anything more complicated than a zero/non-zero
- * value. The actual writing of the backing source file cannot be
- * threaded, so clearing the flag isn't a problem.
- */
- int re_modified; /* If the tree was modified. */
-
- /*
- * !!!
- * These fields are ignored as far as multi-threading is concerned.
- * There are no transaction semantics associated with backing files,
- * nor is there any thread protection.
- */
- FILE *re_fp; /* Source file handle. */
- int re_eof; /* Backing source file EOF reached. */
- db_recno_t re_last; /* Last record number read. */
-};
-
-/*
- * Modes for the __bam_curadj recovery records (btree_curadj).
- * These appear in log records, so we wire the values and
- * do not leave it up to the compiler.
- */
-typedef enum {
- DB_CA_DI = 1,
- DB_CA_DUP = 2,
- DB_CA_RSPLIT = 3,
- DB_CA_SPLIT = 4
-} db_ca_mode;
-
-#include "btree_auto.h"
-#include "btree_ext.h"
-#include "db_am.h"
diff --git a/db/include/btree_auto.h b/db/include/btree_auto.h
deleted file mode 100644
index 214f84332..000000000
--- a/db/include/btree_auto.h
+++ /dev/null
@@ -1,267 +0,0 @@
-/* Do not edit: automatically built by gen_rec.awk. */
-
-#ifndef bam_AUTO_H
-#define bam_AUTO_H
-
-#define DB_bam_pg_alloc 51
-typedef struct _bam_pg_alloc_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- DB_LSN meta_lsn;
- DB_LSN page_lsn;
- db_pgno_t pgno;
- u_int32_t ptype;
- db_pgno_t next;
-} __bam_pg_alloc_args;
-
-int __bam_pg_alloc_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, DB_LSN *, DB_LSN *, db_pgno_t, u_int32_t, db_pgno_t));
-int __bam_pg_alloc_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __bam_pg_alloc_read __P((DB_ENV *, void *, __bam_pg_alloc_args **));
-
-#define DB_bam_pg_alloc1 60
-typedef struct _bam_pg_alloc1_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- DB_LSN meta_lsn;
- DB_LSN alloc_lsn;
- DB_LSN page_lsn;
- db_pgno_t pgno;
- u_int32_t ptype;
- db_pgno_t next;
-} __bam_pg_alloc1_args;
-
-int __bam_pg_alloc1_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __bam_pg_alloc1_read __P((DB_ENV *, void *, __bam_pg_alloc1_args **));
-
-#define DB_bam_pg_free 52
-typedef struct _bam_pg_free_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- db_pgno_t pgno;
- DB_LSN meta_lsn;
- DBT header;
- db_pgno_t next;
-} __bam_pg_free_args;
-
-int __bam_pg_free_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, DB_LSN *, const DBT *, db_pgno_t));
-int __bam_pg_free_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __bam_pg_free_read __P((DB_ENV *, void *, __bam_pg_free_args **));
-
-#define DB_bam_pg_free1 61
-typedef struct _bam_pg_free1_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- db_pgno_t pgno;
- DB_LSN meta_lsn;
- DB_LSN alloc_lsn;
- DBT header;
- db_pgno_t next;
-} __bam_pg_free1_args;
-
-int __bam_pg_free1_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __bam_pg_free1_read __P((DB_ENV *, void *, __bam_pg_free1_args **));
-
-#define DB_bam_split1 53
-typedef struct _bam_split1_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- db_pgno_t left;
- DB_LSN llsn;
- db_pgno_t right;
- DB_LSN rlsn;
- u_int32_t indx;
- db_pgno_t npgno;
- DB_LSN nlsn;
- DBT pg;
-} __bam_split1_args;
-
-int __bam_split1_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __bam_split1_read __P((DB_ENV *, void *, __bam_split1_args **));
-
-#define DB_bam_split 62
-typedef struct _bam_split_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- db_pgno_t left;
- DB_LSN llsn;
- db_pgno_t right;
- DB_LSN rlsn;
- u_int32_t indx;
- db_pgno_t npgno;
- DB_LSN nlsn;
- db_pgno_t root_pgno;
- DBT pg;
- u_int32_t opflags;
-} __bam_split_args;
-
-int __bam_split_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, DB_LSN *, db_pgno_t, DB_LSN *, u_int32_t, db_pgno_t, DB_LSN *, db_pgno_t, const DBT *, u_int32_t));
-int __bam_split_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __bam_split_read __P((DB_ENV *, void *, __bam_split_args **));
-
-#define DB_bam_rsplit1 54
-typedef struct _bam_rsplit1_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- db_pgno_t pgno;
- DBT pgdbt;
- db_pgno_t nrec;
- DBT rootent;
- DB_LSN rootlsn;
-} __bam_rsplit1_args;
-
-int __bam_rsplit1_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __bam_rsplit1_read __P((DB_ENV *, void *, __bam_rsplit1_args **));
-
-#define DB_bam_rsplit 63
-typedef struct _bam_rsplit_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- db_pgno_t pgno;
- DBT pgdbt;
- db_pgno_t root_pgno;
- db_pgno_t nrec;
- DBT rootent;
- DB_LSN rootlsn;
-} __bam_rsplit_args;
-
-int __bam_rsplit_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, const DBT *, db_pgno_t, db_pgno_t, const DBT *, DB_LSN *));
-int __bam_rsplit_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __bam_rsplit_read __P((DB_ENV *, void *, __bam_rsplit_args **));
-
-#define DB_bam_adj 55
-typedef struct _bam_adj_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- db_pgno_t pgno;
- DB_LSN lsn;
- u_int32_t indx;
- u_int32_t indx_copy;
- u_int32_t is_insert;
-} __bam_adj_args;
-
-int __bam_adj_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, DB_LSN *, u_int32_t, u_int32_t, u_int32_t));
-int __bam_adj_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __bam_adj_read __P((DB_ENV *, void *, __bam_adj_args **));
-
-#define DB_bam_cadjust 56
-typedef struct _bam_cadjust_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- db_pgno_t pgno;
- DB_LSN lsn;
- u_int32_t indx;
- int32_t adjust;
- u_int32_t opflags;
-} __bam_cadjust_args;
-
-int __bam_cadjust_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, DB_LSN *, u_int32_t, int32_t, u_int32_t));
-int __bam_cadjust_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __bam_cadjust_read __P((DB_ENV *, void *, __bam_cadjust_args **));
-
-#define DB_bam_cdel 57
-typedef struct _bam_cdel_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- db_pgno_t pgno;
- DB_LSN lsn;
- u_int32_t indx;
-} __bam_cdel_args;
-
-int __bam_cdel_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, DB_LSN *, u_int32_t));
-int __bam_cdel_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __bam_cdel_read __P((DB_ENV *, void *, __bam_cdel_args **));
-
-#define DB_bam_repl 58
-typedef struct _bam_repl_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- db_pgno_t pgno;
- DB_LSN lsn;
- u_int32_t indx;
- u_int32_t isdeleted;
- DBT orig;
- DBT repl;
- u_int32_t prefix;
- u_int32_t suffix;
-} __bam_repl_args;
-
-int __bam_repl_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, DB_LSN *, u_int32_t, u_int32_t, const DBT *, const DBT *, u_int32_t, u_int32_t));
-int __bam_repl_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __bam_repl_read __P((DB_ENV *, void *, __bam_repl_args **));
-
-#define DB_bam_root 59
-typedef struct _bam_root_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- db_pgno_t meta_pgno;
- db_pgno_t root_pgno;
- DB_LSN meta_lsn;
-} __bam_root_args;
-
-int __bam_root_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, db_pgno_t, DB_LSN *));
-int __bam_root_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __bam_root_read __P((DB_ENV *, void *, __bam_root_args **));
-
-#define DB_bam_curadj 64
-typedef struct _bam_curadj_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- db_ca_mode mode;
- db_pgno_t from_pgno;
- db_pgno_t to_pgno;
- db_pgno_t left_pgno;
- u_int32_t first_indx;
- u_int32_t from_indx;
- u_int32_t to_indx;
-} __bam_curadj_args;
-
-int __bam_curadj_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_ca_mode, db_pgno_t, db_pgno_t, db_pgno_t, u_int32_t, u_int32_t, u_int32_t));
-int __bam_curadj_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __bam_curadj_read __P((DB_ENV *, void *, __bam_curadj_args **));
-
-#define DB_bam_rcuradj 65
-typedef struct _bam_rcuradj_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- ca_recno_arg mode;
- db_pgno_t root;
- db_recno_t recno;
- u_int32_t order;
-} __bam_rcuradj_args;
-
-int __bam_rcuradj_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, ca_recno_arg, db_pgno_t, db_recno_t, u_int32_t));
-int __bam_rcuradj_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __bam_rcuradj_read __P((DB_ENV *, void *, __bam_rcuradj_args **));
-int __bam_init_print __P((DB_ENV *));
-int __bam_init_recover __P((DB_ENV *));
-#endif
diff --git a/db/include/btree_ext.h b/db/include/btree_ext.h
deleted file mode 100644
index 8a9866e0b..000000000
--- a/db/include/btree_ext.h
+++ /dev/null
@@ -1,122 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_include. */
-#ifndef _btree_ext_h_
-#define _btree_ext_h_
-#if defined(__cplusplus)
-extern "C" {
-#endif
-int __bam_cmp __P((DB *, const DBT *, PAGE *,
- u_int32_t, int (*)(DB *, const DBT *, const DBT *), int *));
-int __bam_defcmp __P((DB *, const DBT *, const DBT *));
-size_t __bam_defpfx __P((DB *, const DBT *, const DBT *));
-int __bam_pgin __P((DB_ENV *, db_pgno_t, void *, DBT *));
-int __bam_pgout __P((DB_ENV *, db_pgno_t, void *, DBT *));
-int __bam_mswap __P((PAGE *));
-void __bam_cprint __P((DBC *));
-int __bam_ca_delete __P((DB *, db_pgno_t, u_int32_t, int));
-int __ram_ca_delete __P((DB *, db_pgno_t));
-int __bam_ca_di __P((DBC *, db_pgno_t, u_int32_t, int));
-int __bam_ca_dup __P((DBC *,
- u_int32_t, db_pgno_t, u_int32_t, db_pgno_t, u_int32_t));
-int __bam_ca_undodup __P((DB *,
- u_int32_t, db_pgno_t, u_int32_t, u_int32_t));
-int __bam_ca_rsplit __P((DBC *, db_pgno_t, db_pgno_t));
-int __bam_ca_split __P((DBC *,
- db_pgno_t, db_pgno_t, db_pgno_t, u_int32_t, int));
-void __bam_ca_undosplit __P((DB *,
- db_pgno_t, db_pgno_t, db_pgno_t, u_int32_t));
-int __bam_c_init __P((DBC *, DBTYPE));
-int __bam_c_refresh __P((DBC *));
-int __bam_c_count __P((DBC *, db_recno_t *));
-int __bam_c_dup __P((DBC *, DBC *));
-int __bam_c_rget __P((DBC *, DBT *, u_int32_t));
-int __bam_delete __P((DB *, DB_TXN *, DBT *, u_int32_t));
-int __bam_ditem __P((DBC *, PAGE *, u_int32_t));
-int __bam_adjindx __P((DBC *, PAGE *, u_int32_t, u_int32_t, int));
-int __bam_dpages __P((DBC *, EPG *));
-int __bam_db_create __P((DB *));
-int __bam_db_close __P((DB *));
-int __bam_set_flags __P((DB *, u_int32_t *flagsp));
-int __ram_set_flags __P((DB *, u_int32_t *flagsp));
-int __bam_open __P((DB *, const char *, db_pgno_t, u_int32_t));
-int __bam_metachk __P((DB *, const char *, BTMETA *));
-int __bam_read_root __P((DB *, const char *, db_pgno_t, u_int32_t));
-int __bam_iitem __P((DBC *, DBT *, DBT *, u_int32_t, u_int32_t));
-u_int32_t __bam_partsize __P((u_int32_t, DBT *, PAGE *, u_int32_t));
-int __bam_build __P((DBC *, u_int32_t,
- DBT *, PAGE *, u_int32_t, u_int32_t));
-int __bam_ritem __P((DBC *, PAGE *, u_int32_t, DBT *));
-int __bam_pg_alloc_recover
- __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __bam_pg_free_recover
- __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __bam_split_recover
- __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __bam_rsplit_recover
- __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __bam_adj_recover
- __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __bam_cadjust_recover
- __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __bam_cdel_recover
- __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __bam_repl_recover
- __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __bam_root_recover
- __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __bam_curadj_recover
- __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __bam_rcuradj_recover
- __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __bam_reclaim __P((DB *, DB_TXN *));
-int __ram_open __P((DB *, const char *, db_pgno_t, u_int32_t));
-int __ram_c_del __P((DBC *));
-int __ram_c_get
- __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *));
-int __ram_c_put __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *));
-int __ram_ca __P((DBC *, ca_recno_arg));
-int __ram_getno __P((DBC *, const DBT *, db_recno_t *, int));
-int __ram_writeback __P((DB *));
-int __bam_rsearch __P((DBC *, db_recno_t *, u_int32_t, int, int *));
-int __bam_adjust __P((DBC *, int32_t));
-int __bam_nrecs __P((DBC *, db_recno_t *));
-db_recno_t __bam_total __P((PAGE *));
-int __bam_search __P((DBC *,
- const DBT *, u_int32_t, int, db_recno_t *, int *));
-int __bam_stkrel __P((DBC *, u_int32_t));
-int __bam_stkgrow __P((DB_ENV *, BTREE_CURSOR *));
-int __bam_split __P((DBC *, void *));
-int __bam_copy __P((DB *, PAGE *, PAGE *, u_int32_t, u_int32_t));
-int __bam_stat __P((DB *, void *, void *(*)(size_t), u_int32_t));
-int __bam_traverse __P((DBC *, db_lockmode_t,
- db_pgno_t, int (*)(DB *, PAGE *, void *, int *), void *));
-int __bam_stat_callback __P((DB *, PAGE *, void *, int *));
-int __bam_key_range __P((DB *,
- DB_TXN *, DBT *, DB_KEY_RANGE *, u_int32_t));
-int __bam_30_btreemeta __P((DB *, char *, u_int8_t *));
-int __bam_31_btreemeta
- __P((DB *, char *, u_int32_t, DB_FH *, PAGE *, int *));
-int __bam_31_lbtree
- __P((DB *, char *, u_int32_t, DB_FH *, PAGE *, int *));
-int __bam_vrfy_meta __P((DB *, VRFY_DBINFO *, BTMETA *,
- db_pgno_t, u_int32_t));
-int __ram_vrfy_leaf __P((DB *, VRFY_DBINFO *, PAGE *, db_pgno_t,
- u_int32_t));
-int __bam_vrfy __P((DB *, VRFY_DBINFO *, PAGE *, db_pgno_t,
- u_int32_t));
-int __bam_vrfy_itemorder __P((DB *, VRFY_DBINFO *, PAGE *,
- db_pgno_t, u_int32_t, int, int, u_int32_t));
-int __bam_vrfy_structure __P((DB *, VRFY_DBINFO *, db_pgno_t,
- u_int32_t));
-int __bam_vrfy_subtree __P((DB *, VRFY_DBINFO *, db_pgno_t, void *,
- void *, u_int32_t, u_int32_t *, u_int32_t *, u_int32_t *));
-int __bam_salvage __P((DB *, VRFY_DBINFO *, db_pgno_t, u_int32_t,
- PAGE *, void *, int (*)(void *, const void *), DBT *,
- u_int32_t));
-int __bam_salvage_walkdupint __P((DB *, VRFY_DBINFO *, PAGE *,
- DBT *, void *, int (*)(void *, const void *), u_int32_t));
-int __bam_meta2pgset __P((DB *, VRFY_DBINFO *, BTMETA *,
- u_int32_t, DB *));
-#if defined(__cplusplus)
-}
-#endif
-#endif /* _btree_ext_h_ */
diff --git a/db/include/clib_ext.h b/db/include/clib_ext.h
deleted file mode 100644
index efd0796af..000000000
--- a/db/include/clib_ext.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_include. */
-#ifndef _clib_ext_h_
-#define _clib_ext_h_
-#if defined(__cplusplus)
-extern "C" {
-#endif
-#ifndef HAVE_GETCWD
-char *getcwd __P((char *, size_t));
-#endif
-#ifndef HAVE_GETOPT
-int getopt __P((int, char * const *, const char *));
-#endif
-#ifndef HAVE_MEMCMP
-int memcmp __P((const void *, const void *, size_t));
-#endif
-#ifndef HAVE_MEMCPY
-void *memcpy __P((void *, const void *, size_t));
-#endif
-#ifndef HAVE_MEMMOVE
-void *memmove __P((void *, const void *, size_t));
-#endif
-#ifndef HAVE_RAISE
-int raise __P((int));
-#endif
-#ifndef HAVE_SNPRINTF
-int snprintf __P((char *, size_t, const char *, ...));
-#endif
-int strcasecmp __P((const char *, const char *));
-#ifndef HAVE_STRERROR
-char *strerror __P((int));
-#endif
-#ifndef HAVE_VSNPRINTF
-int vsnprintf();
-#endif
-#if defined(__cplusplus)
-}
-#endif
-#endif /* _clib_ext_h_ */
diff --git a/db/include/common_ext.h b/db/include/common_ext.h
deleted file mode 100644
index a36d62cac..000000000
--- a/db/include/common_ext.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_include. */
-#ifndef _common_ext_h_
-#define _common_ext_h_
-#if defined(__cplusplus)
-extern "C" {
-#endif
-int __db_byteorder __P((DB_ENV *, int));
-int __db_fchk __P((DB_ENV *, const char *, u_int32_t, u_int32_t));
-int __db_fcchk
- __P((DB_ENV *, const char *, u_int32_t, u_int32_t, u_int32_t));
-int __db_ferr __P((const DB_ENV *, const char *, int));
-int __db_pgerr __P((DB *, db_pgno_t));
-int __db_pgfmt __P((DB *, db_pgno_t));
-int __db_eopnotsup __P((const DB_ENV *));
-#ifdef DIAGNOSTIC
-void __db_assert __P((const char *, const char *, int));
-#endif
-int __db_panic_msg __P((DB_ENV *));
-int __db_panic __P((DB_ENV *, int));
-void __db_err __P((const DB_ENV *, const char *, ...));
-void __db_real_err
- __P((const DB_ENV *, int, int, int, const char *, va_list));
-void __db_logmsg __P((const DB_ENV *,
- DB_TXN *, const char *, u_int32_t, const char *, ...));
-void __db_real_log __P((const DB_ENV *,
- DB_TXN *, const char *, u_int32_t, const char *, va_list ap));
-int __db_unknown_flag __P((DB_ENV *, char *, u_int32_t));
-int __db_unknown_type __P((DB_ENV *, char *, u_int32_t));
-#ifdef DIAGNOSTIC
-int __db_missing_txn_err __P((DB_ENV *));
-#endif
-int __db_getlong
- __P((DB *, const char *, char *, long, long, long *));
-int __db_getulong
- __P((DB *, const char *, char *, u_long, u_long, u_long *));
-u_int32_t __db_log2 __P((u_int32_t));
-int __db_util_logset __P((const char *, char *));
-void __db_util_siginit __P((void));
-int __db_util_interrupted __P((void));
-void __db_util_sigresend __P((void));
-#if defined(__cplusplus)
-}
-#endif
-#endif /* _common_ext_h_ */
diff --git a/db/include/crdel_auto.h b/db/include/crdel_auto.h
deleted file mode 100644
index 409c25681..000000000
--- a/db/include/crdel_auto.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/* Do not edit: automatically built by gen_rec.awk. */
-
-#ifndef crdel_AUTO_H
-#define crdel_AUTO_H
-
-#define DB_crdel_fileopen 141
-typedef struct _crdel_fileopen_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- DBT name;
- u_int32_t mode;
-} __crdel_fileopen_args;
-
-int __crdel_fileopen_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, const DBT *, u_int32_t));
-int __crdel_fileopen_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __crdel_fileopen_read __P((DB_ENV *, void *, __crdel_fileopen_args **));
-
-#define DB_crdel_metasub 142
-typedef struct _crdel_metasub_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- db_pgno_t pgno;
- DBT page;
- DB_LSN lsn;
-} __crdel_metasub_args;
-
-int __crdel_metasub_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, const DBT *, DB_LSN *));
-int __crdel_metasub_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __crdel_metasub_read __P((DB_ENV *, void *, __crdel_metasub_args **));
-
-#define DB_crdel_metapage 143
-typedef struct _crdel_metapage_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- DBT name;
- db_pgno_t pgno;
- DBT page;
-} __crdel_metapage_args;
-
-int __crdel_metapage_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, const DBT *, db_pgno_t, const DBT *));
-int __crdel_metapage_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __crdel_metapage_read __P((DB_ENV *, void *, __crdel_metapage_args **));
-
-#define DB_crdel_old_delete 144
-typedef struct _crdel_old_delete_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- DBT name;
-} __crdel_old_delete_args;
-
-int __crdel_old_delete_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __crdel_old_delete_read __P((DB_ENV *, void *, __crdel_old_delete_args **));
-
-#define DB_crdel_rename 145
-typedef struct _crdel_rename_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- DBT name;
- DBT newname;
-} __crdel_rename_args;
-
-int __crdel_rename_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, const DBT *, const DBT *));
-int __crdel_rename_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __crdel_rename_read __P((DB_ENV *, void *, __crdel_rename_args **));
-
-#define DB_crdel_delete 146
-typedef struct _crdel_delete_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- DBT name;
-} __crdel_delete_args;
-
-int __crdel_delete_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, const DBT *));
-int __crdel_delete_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __crdel_delete_read __P((DB_ENV *, void *, __crdel_delete_args **));
-int __crdel_init_print __P((DB_ENV *));
-int __crdel_init_recover __P((DB_ENV *));
-#endif
diff --git a/db/include/cxx_common.h b/db/include/cxx_common.h
deleted file mode 100644
index 45b21c6cb..000000000
--- a/db/include/cxx_common.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997-2001
- * Sleepycat Software. All rights reserved.
- *
- * Id: cxx_common.h,v 11.1 2001/04/29 06:44:05 dda Exp
- */
-
-#ifndef _CXX_COMMON_H_
-#define _CXX_COMMON_H_
-
-//
-// Common definitions used by all of Berkeley DB's C++ include files.
-//
-
-////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////
-//
-// Mechanisms for declaring classes
-//
-
-//
-// Every class defined in this file has an _exported next to the class name.
-// This is needed for WinTel machines so that the class methods can
-// be exported or imported in a DLL as appropriate. Users of the DLL
-// use the define DB_USE_DLL. When the DLL is built, DB_CREATE_DLL
-// must be defined.
-//
-#if defined(_MSC_VER)
-
-# if defined(DB_CREATE_DLL)
-# define _exported __declspec(dllexport) // creator of dll
-# elif defined(DB_USE_DLL)
-# define _exported __declspec(dllimport) // user of dll
-# else
-# define _exported // static lib creator or user
-# endif
-
-#else /* _MSC_VER */
-
-# define _exported
-
-#endif /* _MSC_VER */
-#endif /* !_CXX_COMMON_H_ */
diff --git a/db/include/cxx_except.h b/db/include/cxx_except.h
deleted file mode 100644
index d19d9715b..000000000
--- a/db/include/cxx_except.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997-2001
- * Sleepycat Software. All rights reserved.
- *
- * Id: cxx_except.h,v 11.2 2001/05/08 18:58:45 bostic Exp
- */
-
-#ifndef _CXX_EXCEPT_H_
-#define _CXX_EXCEPT_H_
-
-#include "cxx_common.h"
-
-////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////
-//
-// Forward declarations
-//
-
-class DbException; // forward
-class DbMemoryException; // forward
-class Dbt; // forward
-
-////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////
-//
-// Exception classes
-//
-
-// Almost any error in the DB library throws a DbException.
-// Every exception should be considered an abnormality
-// (e.g. bug, misuse of DB, file system error).
-//
-// NOTE: We would like to inherit from class exception and
-// let it handle what(), but there are
-// MSVC++ problems when <exception> is included.
-//
-class _exported DbException
-{
-public:
- virtual ~DbException();
- DbException(int err);
- DbException(const char *description);
- DbException(const char *prefix, int err);
- DbException(const char *prefix1, const char *prefix2, int err);
- int get_errno() const;
- virtual const char *what() const;
-
- DbException(const DbException &);
- DbException &operator = (const DbException &);
-
-private:
- char *what_;
- int err_; // errno
-};
-
-//
-// A specific sort of exception that occurs when
-// user declared memory is insufficient in a Dbt.
-//
-class _exported DbMemoryException : public DbException
-{
-public:
- virtual ~DbMemoryException();
- DbMemoryException(Dbt *dbt);
- DbMemoryException(const char *description);
- DbMemoryException(const char *prefix, Dbt *dbt);
- DbMemoryException(const char *prefix1, const char *prefix2, Dbt *dbt);
- Dbt *get_dbt() const;
-
- DbMemoryException(const DbMemoryException &);
- DbMemoryException &operator = (const DbMemoryException &);
-
-private:
- Dbt *dbt_;
-};
-#endif /* !_CXX_EXCEPT_H_ */
diff --git a/db/include/cxx_int.h b/db/include/cxx_int.h
deleted file mode 100644
index 4a9a40ceb..000000000
--- a/db/include/cxx_int.h
+++ /dev/null
@@ -1,96 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997, 1998, 1999, 2000
- * Sleepycat Software. All rights reserved.
- *
- * $Id: cxx_int.h,v 11.13 2000/11/21 22:56:36 dda Exp $
- */
-
-#ifndef _CXX_INT_H_
-#define _CXX_INT_H_
-
-// private data structures known to the implementation only
-
-//
-// Using FooImp classes will allow the implementation to change in the
-// future without any modification to user code or even to header files
-// that the user includes. FooImp * is just like void * except that it
-// provides a little extra protection, since you cannot randomly assign
-// any old pointer to a FooImp* as you can with void *. Currently, a
-// pointer to such an opaque class is always just a pointer to the
-// appropriate underlying implementation struct. These are converted
-// back and forth using the various overloaded wrap()/unwrap() methods.
-// This is essentially a use of the "Bridge" Design Pattern.
-//
-// WRAPPED_CLASS implements the appropriate wrap() and unwrap() methods
-// for a wrapper class that has an underlying pointer representation.
-//
-#define WRAPPED_CLASS(_WRAPPER_CLASS, _IMP_CLASS, _WRAPPED_TYPE) \
- \
- class _IMP_CLASS {}; \
- \
- inline _WRAPPED_TYPE unwrap(_WRAPPER_CLASS *val) \
- { \
- if (!val) return (0); \
- return ((_WRAPPED_TYPE)((void *)(val->imp()))); \
- } \
- \
- inline const _WRAPPED_TYPE unwrapConst(const _WRAPPER_CLASS *val) \
- { \
- if (!val) return (0); \
- return ((const _WRAPPED_TYPE)((void *)(val->constimp()))); \
- } \
- \
- inline _IMP_CLASS *wrap(_WRAPPED_TYPE val) \
- { \
- return ((_IMP_CLASS*)((void *)val)); \
- }
-
-WRAPPED_CLASS(DbMpoolFile, DbMpoolFileImp, DB_MPOOLFILE*)
-WRAPPED_CLASS(Db, DbImp, DB*)
-WRAPPED_CLASS(DbEnv, DbEnvImp, DB_ENV*)
-WRAPPED_CLASS(DbTxn, DbTxnImp, DB_TXN*)
-
-// A tristate integer value used by the DB_ERROR macro below.
-// We chose not to make this an enumerated type so it can
-// be kept private, even though methods that return the
-// tristate int can be declared in db_cxx.h .
-//
-#define ON_ERROR_THROW 1
-#define ON_ERROR_RETURN 0
-#define ON_ERROR_UNKNOWN (-1)
-
-// Macros that handle detected errors, in case we want to
-// change the default behavior. The 'policy' is one of
-// the tristate values given above. If UNKNOWN is specified,
-// the behavior is taken from the last initialized DbEnv.
-//
-#define DB_ERROR(caller, ecode, policy) \
- DbEnv::runtime_error(caller, ecode, policy)
-
-// These defines are for tedious field set/get access methods.
-//
-
-#define DB_RO_ACCESS(_class, _type, _cxx_name, _field) \
- \
-_type _class::get_##_cxx_name() const \
-{ \
- return (_field); \
-}
-
-#define DB_WO_ACCESS(_class, _type, _cxx_name, _field) \
- \
-void _class::set_##_cxx_name(_type value) \
-{ \
- _field = value; \
-} \
-
-#define DB_RW_ACCESS(_class, _type, _cxx_name, _field) \
- DB_RO_ACCESS(_class, _type, _cxx_name, _field) \
- DB_WO_ACCESS(_class, _type, _cxx_name, _field)
-
-/* values for Db::flags_ */
-#define DB_CXX_PRIVATE_ENV 0x00000001
-
-#endif /* !_CXX_INT_H_ */
diff --git a/db/include/db.in b/db/include/db.in
deleted file mode 100644
index 26455cd79..000000000
--- a/db/include/db.in
+++ /dev/null
@@ -1,1388 +0,0 @@
-/*
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1996-2001
- * Sleepycat Software. All rights reserved.
- *
- * Id: db.in,v 11.158 2001/05/08 18:54:39 bostic Exp
- */
-
-#ifndef _DB_H_
-#define _DB_H_
-
-#ifndef __NO_SYSTEM_INCLUDES
-#include <sys/types.h>
-
-#include <stdio.h>
-#endif
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-/*
- * XXX
- * Handle function prototypes and the keyword "const". This steps on name
- * space that DB doesn't control, but all of the other solutions are worse.
- *
- * XXX
- * While Microsoft's compiler is ANSI C compliant, it doesn't have _STDC_
- * defined by default, you specify a command line flag or #pragma to turn
- * it on. Don't do that, however, because some of Microsoft's own header
- * files won't compile.
- */
-#undef __P
-#if defined(__STDC__) || defined(__cplusplus) || defined(_MSC_VER)
-#define __P(protos) protos /* ANSI C prototypes */
-#else
-#define const
-#define __P(protos) () /* K&R C preprocessor */
-#endif
-
-/*
- * !!!
- * DB needs basic information about specifically sized types. If they're
- * not provided by the system, typedef them here.
- *
- * We protect them against multiple inclusion using __BIT_TYPES_DEFINED__,
- * as does BIND and Kerberos, since we don't know for sure what #include
- * files the user is using.
- *
- * !!!
- * We also provide the standard u_int, u_long etc., if they're not provided
- * by the system.
- */
-#ifndef __BIT_TYPES_DEFINED__
-#define __BIT_TYPES_DEFINED__
-@u_int8_decl@
-@int16_decl@
-@u_int16_decl@
-@int32_decl@
-@u_int32_decl@
-#endif
-
-@u_char_decl@
-@u_short_decl@
-@u_int_decl@
-@u_long_decl@
-@ssize_t_decl@
-
-#define DB_VERSION_MAJOR @DB_VERSION_MAJOR@
-#define DB_VERSION_MINOR @DB_VERSION_MINOR@
-#define DB_VERSION_PATCH @DB_VERSION_PATCH@
-#define DB_VERSION_STRING @DB_VERSION_STRING@
-
-typedef u_int32_t db_pgno_t; /* Page number type. */
-typedef u_int16_t db_indx_t; /* Page offset type. */
-#define DB_MAX_PAGES 0xffffffff /* >= # of pages in a file */
-
-typedef u_int32_t db_recno_t; /* Record number type. */
-#define DB_MAX_RECORDS 0xffffffff /* >= # of records in a tree */
-
-/* Forward structure declarations, so applications get type checking. */
-struct __db; typedef struct __db DB;
-struct __db_bt_stat; typedef struct __db_bt_stat DB_BTREE_STAT;
-struct __db_dbt; typedef struct __db_dbt DBT;
-struct __db_env; typedef struct __db_env DB_ENV;
-struct __db_h_stat; typedef struct __db_h_stat DB_HASH_STAT;
-struct __db_ilock; typedef struct __db_ilock DB_LOCK_ILOCK;
-struct __db_lock_stat; typedef struct __db_lock_stat DB_LOCK_STAT;
-struct __db_lock_u; typedef struct __db_lock_u DB_LOCK;
-struct __db_lockreq; typedef struct __db_lockreq DB_LOCKREQ;
-struct __db_log_stat; typedef struct __db_log_stat DB_LOG_STAT;
-struct __db_lsn; typedef struct __db_lsn DB_LSN;
-struct __db_mpool_finfo;typedef struct __db_mpool_finfo DB_MPOOL_FINFO;
-struct __db_mpool_fstat;typedef struct __db_mpool_fstat DB_MPOOL_FSTAT;
-struct __db_mpool_stat; typedef struct __db_mpool_stat DB_MPOOL_STAT;
-struct __db_mpoolfile; typedef struct __db_mpoolfile DB_MPOOLFILE;
-struct __db_qam_stat; typedef struct __db_qam_stat DB_QUEUE_STAT;
-struct __db_txn; typedef struct __db_txn DB_TXN;
-struct __db_txn_active; typedef struct __db_txn_active DB_TXN_ACTIVE;
-struct __db_txn_stat; typedef struct __db_txn_stat DB_TXN_STAT;
-struct __dbc; typedef struct __dbc DBC;
-struct __dbc_internal; typedef struct __dbc_internal DBC_INTERNAL;
-struct __fh_t; typedef struct __fh_t DB_FH;
-struct __key_range; typedef struct __key_range DB_KEY_RANGE;
-
-/* Key/data structure -- a Data-Base Thang. */
-struct __db_dbt {
- /*
- * data/size must be fields 1 and 2 for DB 1.85 compatibility.
- */
- void *data; /* Key/data */
- u_int32_t size; /* key/data length */
-
- u_int32_t ulen; /* RO: length of user buffer. */
- u_int32_t dlen; /* RO: get/put record length. */
- u_int32_t doff; /* RO: get/put record offset. */
-
-#define DB_DBT_APPMALLOC 0x001 /* Callback allocated memory. */
-#define DB_DBT_ISSET 0x002 /* Lower level calls set value. */
-#define DB_DBT_MALLOC 0x004 /* Return in malloc'd memory. */
-#define DB_DBT_PARTIAL 0x008 /* Partial put/get. */
-#define DB_DBT_REALLOC 0x010 /* Return in realloc'd memory. */
-#define DB_DBT_USERMEM 0x020 /* Return in user's memory. */
-#define DB_DBT_DUPOK 0x040 /* Insert if duplicate. */
- u_int32_t flags;
-};
-
-/*
- * Macros for bulk get. Note that wherever we use a DBT *, we explicitly
- * cast it; this allows the same macros to work with C++ Dbt *'s, as
- * Dbt is a subclass of struct DBT in C++.
- */
-#define DB_MULTIPLE_INIT(pointer, dbt) \
- (pointer = (u_int8_t *)((DBT *)(dbt))->data + \
- ((DBT *)(dbt))->ulen - sizeof(u_int32_t))
-#define DB_MULTIPLE_NEXT(pointer, dbt, retdata, retdlen) \
- do { \
- if (*((u_int32_t *)(pointer)) == (u_int32_t)-1) { \
- retdata = NULL; \
- pointer = NULL; \
- break; \
- } \
- retdata = (u_int8_t *) \
- ((DBT *)(dbt))->data + *(u_int32_t *)(pointer); \
- (pointer) = (u_int32_t *)(pointer) - 1; \
- if (retdata == (u_int8_t *)((DBT *)(dbt))->data) \
- retdata = NULL; \
- retdlen = *(u_int32_t *)(pointer); \
- (pointer) = (u_int32_t *)(pointer) - 1; \
- } while (0)
-#define DB_MULTIPLE_KEY_NEXT(pointer, dbt, retkey, retklen, retdata, retdlen) \
- do { \
- if (*((u_int32_t *)(pointer)) == (u_int32_t)-1) { \
- retdata = NULL; \
- retkey = NULL; \
- pointer = NULL; \
- break; \
- } \
- retkey = (u_int8_t *) \
- ((DBT *)(dbt))->data + *(u_int32_t *)(pointer); \
- (pointer) = (u_int32_t *)(pointer) - 1; \
- retklen = *(u_int32_t *)(pointer); \
- (pointer) = (u_int32_t *)(pointer) - 1; \
- retdata = (u_int8_t *) \
- ((DBT *)(dbt))->data + *(u_int32_t *)(pointer); \
- (pointer) = (u_int32_t *)(pointer) - 1; \
- retdlen = *(u_int32_t *)(pointer); \
- (pointer) = (u_int32_t *)(pointer) - 1; \
- } while (0)
-
-#define DB_MULTIPLE_RECNO_NEXT(pointer, dbt, recno, retdata, retdlen) \
- do { \
- if (*((u_int32_t *)(pointer)) == (u_int32_t)-1) { \
- recno = 0; \
- retdata = NULL; \
- pointer = NULL; \
- break; \
- } \
- recno = *(u_int32_t *)(pointer); \
- (pointer) = (u_int32_t *)(pointer) - 1; \
- retdata = (u_int8_t *) \
- ((DBT *)(dbt))->data + *(u_int32_t *)(pointer); \
- (pointer) = (u_int32_t *)(pointer) - 1; \
- retdlen = *(u_int32_t *)(pointer); \
- (pointer) = (u_int32_t *)(pointer) - 1; \
- } while (0)
-
-/*
- * Common flags --
- * Interfaces which use any of these common flags should never have
- * interface specific flags in this range.
- */
-#define DB_CREATE 0x000001 /* Create file as necessary. */
-#define DB_CXX_NO_EXCEPTIONS 0x000002 /* C++: return error values. */
-#define DB_FORCE 0x000004 /* Force (anything). */
-#define DB_NOMMAP 0x000008 /* Don't mmap underlying file. */
-#define DB_RDONLY 0x000010 /* Read-only (O_RDONLY). */
-#define DB_RECOVER 0x000020 /* Run normal recovery. */
-#define DB_THREAD 0x000040 /* Applications are threaded. */
-#define DB_TXN_NOSYNC 0x000080 /* Do not sync log on commit. */
-#define DB_USE_ENVIRON 0x000100 /* Use the environment. */
-#define DB_USE_ENVIRON_ROOT 0x000200 /* Use the environment if root. */
-
-/* This flag is common between the open call and the command calls */
-/* define DB_DIRTY_READ 0x10000000 Support Dirty Read. */
-
-/*
- * Flags private to db_env_create.
- */
-#define DB_CLIENT 0x000400 /* Open for a client environment. */
-
-/*
- * Flags private to db_create.
- */
-#define DB_XA_CREATE 0x000400 /* Open in an XA environment. */
-
-/*
- * Flags private to DBENV->open.
- */
-#define DB_INIT_CDB 0x000400 /* Concurrent Access Methods. */
-#define DB_INIT_LOCK 0x000800 /* Initialize locking. */
-#define DB_INIT_LOG 0x001000 /* Initialize logging. */
-#define DB_INIT_MPOOL 0x002000 /* Initialize mpool. */
-#define DB_INIT_TXN 0x004000 /* Initialize transactions. */
-#define DB_JOINENV 0x008000 /* Initialize all subsystems present. */
-#define DB_LOCKDOWN 0x010000 /* Lock memory into physical core. */
-#define DB_PRIVATE 0x020000 /* DB_ENV is process local. */
-#define DB_RECOVER_FATAL 0x040000 /* Run catastrophic recovery. */
-#define DB_SYSTEM_MEM 0x080000 /* Use system-backed memory. */
-
-/*
- * Flags private to DB->open.
- */
-#define DB_EXCL 0x000400 /* Exclusive open (O_EXCL). */
-#define DB_FCNTL_LOCKING 0x000800 /* UNDOC: fcntl(2) locking. */
-#define DB_ODDFILESIZE 0x001000 /* UNDOC: truncate to N * pgsize. */
-#define DB_RDWRMASTER 0x002000 /* UNDOC: allow subdb master open R/W */
-#define DB_TRUNCATE 0x004000 /* Discard existing DB (O_TRUNC). */
-#define DB_EXTENT 0x008000 /* UNDOC: dealing with an extent. */
-
-/*
- * Flags private to DBENV->txn_begin.
- */
-#define DB_TXN_NOWAIT 0x000400 /* Do not wait for locks in this TXN. */
-#define DB_TXN_SYNC 0x000800 /* Always sync log on commit. */
-
-/*
- * Flags private to DBENV->set_flags.
- */
-#define DB_CDB_ALLDB 0x000400 /* In CDB, lock across environment. */
-
-/*
- * Flags private to DB->set_feedback's callback.
- */
-#define DB_UPGRADE 0x000400 /* Upgrading. */
-#define DB_VERIFY 0x000800 /* Verifying. */
-
-/*
- * Flags private to DB->set_flags.
- *
- * DB->set_flags does not share common flags and so values start at 0x01.
- */
-#define DB_DUP 0x0001 /* Btree, Hash: duplicate keys. */
-#define DB_DUPSORT 0x0002 /* Btree, Hash: duplicate keys. */
-#define DB_RECNUM 0x0004 /* Btree: record numbers. */
-#define DB_RENUMBER 0x0008 /* Recno: renumber on insert/delete. */
-#define DB_REVSPLITOFF 0x0010 /* Btree: turn off reverse splits. */
-#define DB_SNAPSHOT 0x0020 /* Recno: snapshot the input. */
-
-/*
- * Flags private to DB->join.
- *
- * DB->join does not share common flags and so values start at 0x01.
- */
-#define DB_JOIN_NOSORT 0x0001 /* Don't try to optimize join. */
-
-/*
- * Flags private to DB->verify.
- *
- * DB->verify does not share common flags and so values start at 0x01.
- */
-#define DB_AGGRESSIVE 0x0001 /* Salvage anything which might be data.*/
-#define DB_NOORDERCHK 0x0002 /* Skip order check; subdb w/ user func */
-#define DB_ORDERCHKONLY 0x0004 /* Only perform an order check on subdb */
-#define DB_PR_PAGE 0x0008 /* Show page contents (-da). */
-#define DB_PR_RECOVERYTEST 0x0010 /* Recovery test (-dr). */
-#define DB_SALVAGE 0x0020 /* Salvage what looks like data. */
-/*
- * !!!
- * These must not go over 0x8000, or they will collide with the flags
- * used by __bam_vrfy_subtree.
- */
-
-/*
- * Deadlock detector modes; used in the DBENV structure to configure the
- * locking subsystem.
- */
-#define DB_LOCK_NORUN 0
-#define DB_LOCK_DEFAULT 1 /* Default policy. */
-#define DB_LOCK_MAXLOCKS 2 /* Abort txn with maximum # of locks. */
-#define DB_LOCK_MINLOCKS 3 /* Abort txn with minimum # of locks. */
-#define DB_LOCK_MINWRITE 4 /* Abort txn with minimum writelocks. */
-#define DB_LOCK_OLDEST 5 /* Abort oldest transaction. */
-#define DB_LOCK_RANDOM 6 /* Abort random transaction. */
-#define DB_LOCK_YOUNGEST 7 /* Abort youngest transaction. */
-
-/*******************************************************
- * Environment.
- *******************************************************/
-#define DB_REGION_MAGIC 0x120897 /* Environment magic number. */
-
-/*
- * !!!
- * The values of these enums are used explicitly by the Java code, since
- * the DbConstant-building facility does not handle enums. Make sure
- * that java/src/com/sleepycat/db/Db.java is kept up-to-date with this.
- */
-typedef enum {
- DB_TXN_ABORT = 0,
- DB_TXN_BACKWARD_ROLL = 1,
- DB_TXN_FORWARD_ROLL = 2,
- DB_TXN_OPENFILES = 3,
- DB_TXN_POPENFILES = 4
-} db_recops;
-
-#define DB_UNDO(op) ((op) == DB_TXN_ABORT || (op) == DB_TXN_BACKWARD_ROLL)
-#define DB_REDO(op) ((op) == DB_TXN_FORWARD_ROLL)
-
-struct __db_env {
- /*******************************************************
- * Public: owned by the application.
- *******************************************************/
- FILE *db_errfile; /* Error message file stream. */
- const char *db_errpfx; /* Error message prefix. */
- /* Callbacks. */
- void (*db_errcall) __P((const char *, char *));
- void (*db_feedback) __P((DB_ENV *, int, int));
- void (*db_paniccall) __P((DB_ENV *, int));
- int (*db_recovery_init) __P((DB_ENV *));
-
- /* App-specified alloc functions. */
- void *(*db_malloc) __P((size_t));
- void *(*db_realloc) __P((void *, size_t));
- void (*db_free) __P((void *));
-
- /*
- * Currently, the verbose list is a bit field with room for 32
- * entries. There's no reason that it needs to be limited, if
- * there are ever more than 32 entries, convert to a bit array.
- */
-#define DB_VERB_CHKPOINT 0x0001 /* List checkpoints. */
-#define DB_VERB_DEADLOCK 0x0002 /* Deadlock detection information. */
-#define DB_VERB_RECOVERY 0x0004 /* Recovery information. */
-#define DB_VERB_WAITSFOR 0x0008 /* Dump waits-for table. */
- u_int32_t verbose; /* Verbose output. */
-
- void *app_private; /* Application-private handle. */
-
- /* Locking. */
- u_int8_t *lk_conflicts; /* Two dimensional conflict matrix. */
- u_int32_t lk_modes; /* Number of lock modes in table. */
- u_int32_t lk_max; /* Maximum number of locks. */
- u_int32_t lk_max_lockers;/* Maximum number of lockers. */
- u_int32_t lk_max_objects;/* Maximum number of locked objects. */
- u_int32_t lk_detect; /* Deadlock detect on all conflicts. */
-
- /* Logging. */
- u_int32_t lg_bsize; /* Buffer size. */
- u_int32_t lg_max; /* Maximum file size. */
- u_int32_t lg_regionmax; /* Region size. */
-
- /* Memory pool. */
- u_int32_t mp_gbytes; /* Cachesize: GB. */
- u_int32_t mp_bytes; /* Cachesize: Bytes. */
- size_t mp_size; /* DEPRECATED: Cachesize: bytes. */
- int mp_ncache; /* Number of cache regions. */
- size_t mp_mmapsize; /* Maximum file size for mmap. */
-
- /* Transactions. */
- u_int32_t tx_max; /* Maximum number of transactions. */
- time_t tx_timestamp; /* Recover to specific timestamp. */
- int (*tx_recover) /* Dispatch function for recovery. */
- __P((DB_ENV *, DBT *, DB_LSN *, db_recops));
-
- /*******************************************************
- * Private: owned by DB.
- *******************************************************/
- int panic_errval; /* Panic causing errno. */
-
- /* User files, paths. */
- char *db_home; /* Database home. */
- char *db_log_dir; /* Database log file directory. */
- char *db_tmp_dir; /* Database tmp file directory. */
-
- char **db_data_dir; /* Database data file directories. */
- int data_cnt; /* Database data file slots. */
- int data_next; /* Next Database data file slot. */
-
- int db_mode; /* Default open permissions. */
-
- void *reginfo; /* REGINFO structure reference. */
- DB_FH *lockfhp; /* fcntl(2) locking file handle. */
- long shm_key; /* shmget(2) key. */
-
- void *lg_handle; /* Log handle. */
-
- void *lk_handle; /* Lock handle. */
-
- void *mp_handle; /* Mpool handle. */
-
- void *tx_handle; /* Txn handle. */
-
- int (**dtab) /* Dispatch table */
- __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
- size_t dtab_size; /* Slots in the dispatch table. */
-
- void *cl_handle; /* RPC: remote client handle. */
- long cl_id; /* RPC: remote client env id. */
-
- int db_ref; /* db reference count. */
- u_int32_t db_mutexlocks; /* db_set_mutexlocks */
-
- /*
- * List of open DB handles for this DB_ENV, used for cursor
- * adjustment. Must be protected for multi-threaded support.
- *
- * !!!
- * As this structure is allocated in per-process memory, the
- * mutex may need to be stored elsewhere on architectures unable
- * to support mutexes in heap memory, e.g. HP/UX 9.
- */
- void *dblist_mutexp; /* Mutex. */
- /*
- * !!!
- * Explicit representation of structure in queue.h.
- * LIST_HEAD(dblist, __db);
- */
- struct {
- struct __db *lh_first;
- } dblist;
-
- /*
- * XA support.
- *
- * !!!
- * Explicit representations of structures in queue.h.
- *
- * TAILQ_ENTRY(__db_env);
- */
- struct {
- struct __db_env *tqe_next;
- struct __db_env **tqe_prev;
- } links;
- int xa_rmid; /* XA Resource Manager ID. */
- DB_TXN *xa_txn; /* XA Current transaction. */
-
- void *cj_internal; /* C++/Java private. */
-
- /* Methods. */
- int (*close) __P((DB_ENV *, u_int32_t));
- void (*err) __P((const DB_ENV *, int, const char *, ...));
- void (*errx) __P((const DB_ENV *, const char *, ...));
- int (*open) __P((DB_ENV *, const char *, u_int32_t, int));
- int (*remove) __P((DB_ENV *, const char *, u_int32_t));
- int (*set_data_dir) __P((DB_ENV *, const char *));
- int (*set_alloc) __P((DB_ENV *, void *(*)(size_t),
- void *(*)(void *, size_t), void (*)(void *)));
- void (*set_errcall) __P((DB_ENV *, void (*)(const char *, char *)));
- void (*set_errfile) __P((DB_ENV *, FILE *));
- void (*set_errpfx) __P((DB_ENV *, const char *));
- int (*set_feedback) __P((DB_ENV *, void (*)(DB_ENV *, int, int)));
- int (*set_flags) __P((DB_ENV *, u_int32_t, int));
- int (*set_mutexlocks) __P((DB_ENV *, int));
- int (*set_paniccall) __P((DB_ENV *, void (*)(DB_ENV *, int)));
- int (*set_recovery_init) __P((DB_ENV *, int (*)(DB_ENV *)));
- int (*set_rpc_server) __P((DB_ENV *,
- void *, const char *, long, long, u_int32_t));
- int (*set_server) __P((DB_ENV *, const char *, long, long, u_int32_t));
- int (*set_shm_key) __P((DB_ENV *, long));
- int (*set_tmp_dir) __P((DB_ENV *, const char *));
- int (*set_verbose) __P((DB_ENV *, u_int32_t, int));
-
- int (*set_lg_bsize) __P((DB_ENV *, u_int32_t));
- int (*set_lg_dir) __P((DB_ENV *, const char *));
- int (*set_lg_max) __P((DB_ENV *, u_int32_t));
- int (*set_lg_regionmax) __P((DB_ENV *, u_int32_t));
-
- int (*set_lk_conflicts) __P((DB_ENV *, u_int8_t *, int));
- int (*set_lk_detect) __P((DB_ENV *, u_int32_t));
- int (*set_lk_max) __P((DB_ENV *, u_int32_t));
- int (*set_lk_max_locks) __P((DB_ENV *, u_int32_t));
- int (*set_lk_max_lockers) __P((DB_ENV *, u_int32_t));
- int (*set_lk_max_objects) __P((DB_ENV *, u_int32_t));
-
- int (*set_mp_mmapsize) __P((DB_ENV *, size_t));
- int (*set_cachesize) __P((DB_ENV *, u_int32_t, u_int32_t, int));
-
- int (*set_tx_max) __P((DB_ENV *, u_int32_t));
- int (*set_tx_recover) __P((DB_ENV *,
- int (*)(DB_ENV *, DBT *, DB_LSN *, db_recops)));
- int (*set_tx_timestamp) __P((DB_ENV *, time_t *));
-
-#ifdef CONFIG_TEST
-#define DB_TEST_PREOPEN 1 /* before __os_open */
-#define DB_TEST_POSTOPEN 2 /* after __os_open */
-#define DB_TEST_POSTLOGMETA 3 /* after logging meta in btree */
-#define DB_TEST_POSTLOG 4 /* after logging all pages */
-#define DB_TEST_POSTSYNC 5 /* after syncing the log */
-#define DB_TEST_PRERENAME 6 /* before __os_rename */
-#define DB_TEST_POSTRENAME 7 /* after __os_rename */
- int test_abort; /* Abort value for testing. */
- int test_copy; /* Copy value for testing. */
-#endif
-
-#define DB_ENV_CDB 0x00001 /* DB_INIT_CDB. */
-#define DB_ENV_CDB_ALLDB 0x00002 /* CDB environment wide locking. */
-#define DB_ENV_CREATE 0x00004 /* DB_CREATE set. */
-#define DB_ENV_DBLOCAL 0x00008 /* DB_ENV allocated for private DB. */
-#define DB_ENV_LOCKDOWN 0x00010 /* DB_LOCKDOWN set. */
-#define DB_ENV_NOMMAP 0x00020 /* DB_NOMMAP set. */
-#define DB_ENV_OPEN_CALLED 0x00040 /* DBENV->open called (paths valid). */
-#define DB_ENV_PANIC_OK 0x00080 /* Removing env, okay if panic set */
-#define DB_ENV_PRIVATE 0x00100 /* DB_PRIVATE set. */
-#define DB_ENV_RPCCLIENT 0x00200 /* DB_CLIENT set. */
-#define DB_ENV_RPCCLIENT_GIVEN 0x00400 /* User-supplied RPC client struct */
-#define DB_ENV_STANDALONE 0x00800 /* Test: freestanding environment. */
-#define DB_ENV_SYSTEM_MEM 0x01000 /* DB_SYSTEM_MEM set. */
-#define DB_ENV_THREAD 0x02000 /* DB_THREAD set. */
-#define DB_ENV_TXN_NOSYNC 0x04000 /* DB_TXN_NOSYNC set. */
-#define DB_ENV_USER_ALLOC 0x08000 /* User allocated the structure. */
- u_int32_t flags; /* Flags. */
-};
-
-/*******************************************************
- * Access methods.
- *******************************************************/
-/*
- * !!!
- * Changes here must be reflected in java/src/com/sleepycat/db/Db.java.
- */
-typedef enum {
- DB_BTREE=1,
- DB_HASH,
- DB_RECNO,
- DB_QUEUE,
- DB_UNKNOWN /* Figure it out on open. */
-} DBTYPE;
-
-#define DB_BTREEVERSION 8 /* Current btree version. */
-#define DB_BTREEOLDVER 6 /* Oldest btree version supported. */
-#define DB_BTREEMAGIC 0x053162
-
-#define DB_HASHVERSION 7 /* Current hash version. */
-#define DB_HASHOLDVER 4 /* Oldest hash version supported. */
-#define DB_HASHMAGIC 0x061561
-
-#define DB_QAMVERSION 3 /* Current queue version. */
-#define DB_QAMOLDVER 1 /* Oldest queue version supported. */
-#define DB_QAMMAGIC 0x042253
-
-#define DB_LOGVERSION 3 /* Current log version. */
-#define DB_LOGOLDVER 3 /* Oldest log version supported. */
-#define DB_LOGMAGIC 0x040988
-
-/*
- * DB access method and cursor operation values. Each value is an operation
- * code to which additional bit flags are added.
- */
-#define DB_AFTER 1 /* c_put() */
-#define DB_APPEND 2 /* put() */
-#define DB_BEFORE 3 /* c_put() */
-#define DB_CACHED_COUNTS 4 /* stat() */
-#define DB_CHECKPOINT 5 /* log_put(), log_get() */
-#define DB_COMMIT 6 /* log_put() (internal) */
-#define DB_CONSUME 7 /* get() */
-#define DB_CONSUME_WAIT 8 /* get() */
-#define DB_CURLSN 9 /* log_put() */
-#define DB_CURRENT 10 /* c_get(), c_put(), log_get() */
-#define DB_FAST_STAT 11 /* stat() */
-#define DB_FIRST 12 /* c_get(), log_get() */
-#define DB_FLUSH 13 /* log_put() */
-#define DB_GET_BOTH 14 /* get(), c_get() */
-#define DB_GET_BOTHC 15 /* c_get() (internal) */
-#define DB_GET_RECNO 16 /* c_get() */
-#define DB_JOIN_ITEM 17 /* c_get(); do not do primary lookup */
-#define DB_KEYFIRST 18 /* c_put() */
-#define DB_KEYLAST 19 /* c_put() */
-#define DB_LAST 20 /* c_get(), log_get() */
-#define DB_NEXT 21 /* c_get(), log_get() */
-#define DB_NEXT_DUP 22 /* c_get() */
-#define DB_NEXT_NODUP 23 /* c_get() */
-#define DB_NODUPDATA 24 /* put(), c_put() */
-#define DB_NOOVERWRITE 25 /* put() */
-#define DB_NOSYNC 26 /* close() */
-#define DB_POSITION 27 /* c_dup() */
-#define DB_POSITIONI 28 /* c_dup() (internal) */
-#define DB_PREV 29 /* c_get(), log_get() */
-#define DB_PREV_NODUP 30 /* c_get(), log_get() */
-#define DB_RECORDCOUNT 31 /* stat() */
-#define DB_SET 32 /* c_get(), log_get() */
-#define DB_SET_RANGE 33 /* c_get() */
-#define DB_SET_RECNO 34 /* get(), c_get() */
-#define DB_UPDATE_SECONDARY 35 /* c_get(), c_del() (internal) */
-#define DB_WRITECURSOR 36 /* cursor() */
-#define DB_WRITELOCK 37 /* cursor() (internal) */
-
-/* This has to change when the max opcode hits 255. */
-#define DB_OPFLAGS_MASK 0x000000ff /* Mask for operations flags. */
-#define DB_DIRTY_READ 0x10000000 /* Support Dirty Read. */
-#define DB_MULTIPLE 0x20000000 /* Return multiple data values. */
-#define DB_MULTIPLE_KEY 0x40000000 /* Return multiple data/key pairs. */
-#define DB_RMW 0x80000000 /* Acquire write flag immediately. */
-
-/*
- * DB (user visible) error return codes.
- *
- * !!!
- * Changes to any of the user visible error return codes must be reflected
- * in java/src/com/sleepycat/db/Db.java.
- *
- * !!!
- * For source compatibility with DB 2.X deadlock return (EAGAIN), use the
- * following:
- * #include <errno.h>
- * #define DB_LOCK_DEADLOCK EAGAIN
- *
- * !!!
- * We don't want our error returns to conflict with other packages where
- * possible, so pick a base error value that's hopefully not common. We
- * document that we own the error name space from -30,800 to -30,999.
- */
-/* Public error return codes. */
-#define DB_DONOTINDEX (-30999)/* "Null" return from 2ndary callbk. */
-#define DB_INCOMPLETE (-30998)/* Sync didn't finish. */
-#define DB_KEYEMPTY (-30997)/* Key/data deleted or never created. */
-#define DB_KEYEXIST (-30996)/* The key/data pair already exists. */
-#define DB_LOCK_DEADLOCK (-30995)/* Deadlock. */
-#define DB_LOCK_NOTGRANTED (-30994)/* Lock unavailable. */
-#define DB_NOSERVER (-30993)/* Server panic return. */
-#define DB_NOSERVER_HOME (-30992)/* Bad home sent to server. */
-#define DB_NOSERVER_ID (-30991)/* Bad ID sent to server. */
-#define DB_NOTFOUND (-30990)/* Key/data pair not found (EOF). */
-#define DB_OLD_VERSION (-30989)/* Out-of-date version. */
-#define DB_PAGE_NOTFOUND (-30988)/* Verify failed; bad format. */
-#define DB_RUNRECOVERY (-30987)/* Panic return. */
-#define DB_VERIFY_BAD (-30986)/* Verify failed; bad format. */
-
-/* DB (private) error return codes. */
-#define DB_ALREADY_ABORTED (-30899)
-#define DB_DELETED (-30898)/* Recovery file marked deleted. */
-#define DB_JAVA_CALLBACK (-30897)/* Exception during a java callback. */
-#define DB_NEEDSPLIT (-30896)/* Page needs to be split. */
-#define DB_SWAPBYTES (-30895)/* Database needs byte swapping. */
-#define DB_TXN_CKP (-30894)/* Encountered ckp record in log. */
-#define DB_VERIFY_FATAL (-30893)/* Fatal: DB->verify cannot proceed. */
-
-#define DB_FILE_ID_LEN 20 /* DB file ID length. */
-
-/* DB access method description structure. */
-struct __db {
- /*******************************************************
- * Public: owned by the application.
- *******************************************************/
- u_int32_t pgsize; /* Database logical page size. */
-
- /* Callbacks. */
- int (*db_append_recno) __P((DB *, DBT *, db_recno_t));
- void (*db_feedback) __P((DB *, int, int));
- int (*dup_compare) __P((DB *, const DBT *, const DBT *));
-
- void *app_private; /* Application-private handle. */
-
- /*******************************************************
- * Private: owned by DB.
- *******************************************************/
- DB_ENV *dbenv; /* Backing environment. */
-
- DBTYPE type; /* DB access method type. */
-
- DB_MPOOLFILE *mpf; /* Backing buffer pool. */
-
- void *mutexp; /* Synchronization for free threading */
-
- u_int8_t fileid[DB_FILE_ID_LEN];/* File's unique ID for locking. */
-
- u_int32_t adj_fileid; /* File's unique ID for curs. adj. */
-
-#define DB_LOGFILEID_INVALID -1
- int32_t log_fileid; /* File's unique ID for logging. */
- db_pgno_t meta_pgno; /* Meta page number */
- DB_TXN *open_txn; /* Transaction to protect creates. */
-
- long cl_id; /* RPC: remote client id. */
-
- /*
- * Returned data memory for DB->get() and friends.
- */
- DBT my_rskey; /* Secondary key. */
- DBT my_rkey; /* [Primary] key. */
- DBT my_rdata; /* Data. */
-
- /*
- * !!!
- * Some applications use DB but implement their own locking outside of
- * DB. If they're using fcntl(2) locking on the underlying database
- * file, and we open and close a file descriptor for that file, we will
- * discard their locks. The DB_FCNTL_LOCKING flag to DB->open is an
- * undocumented interface to support this usage which leaves any file
- * descriptors we open until DB->close. This will only work with the
- * DB->open interface and simple caches, e.g., creating a transaction
- * thread may open/close file descriptors this flag doesn't protect.
- * Locking with fcntl(2) on a file that you don't own is a very, very
- * unsafe thing to do. 'Nuff said.
- */
- DB_FH *saved_open_fhp; /* Saved file handle. */
-
- /*
- * Linked list of DBP's, used in the log's dbentry table
- * to keep track of all open db handles for a given log id.
- * !!!
- * Explicit representations of structures in queue.h.
- *
- * TAILQ_ENTRY(__db) links;
- */
- struct {
- struct __db *tqe_next;
- struct __db **tqe_prev;
- } links;
-
- /*
- * Linked list of DBP's, linked from the DB_ENV, used to
- * keep track of all open db handles for cursor adjustment.
- *
- * XXX
- * Eventually, this should be merged with "links" above.
- *
- * !!!
- * Explicit representations of structures in queue.h.
- *
- * LIST_ENTRY(__db) dblistlinks;
- */
- struct {
- struct __db *le_next;
- struct __db **le_prev;
- } dblistlinks;
-
- /*
- * Cursor queues.
- *
- * !!!
- * Explicit representations of structures in queue.h.
- *
- * TAILQ_HEAD(free_queue, __dbc);
- * TAILQ_HEAD(active_queue, __dbc);
- * TAILQ_HEAD(join_queue, __dbc);
- */
- struct {
- struct __dbc *tqh_first;
- struct __dbc **tqh_last;
- } free_queue;
- struct {
- struct __dbc *tqh_first;
- struct __dbc **tqh_last;
- } active_queue;
- struct {
- struct __dbc *tqh_first;
- struct __dbc **tqh_last;
- } join_queue;
-
- /*
- * Secondary index support.
- *
- * !!!
- * Explicit representations of structures in queue.h.
- */
- /* Linked list of secondary indices -- set in the primary. */
- struct {
- struct __db *lh_first;
- } s_secondaries;
-
- /*
- * List entries for secondaries, and reference count of how
- * many threads are updating this secondary (see __db_c_put).
- *
- * !!!
- * Note that these are synchronized by the primary's mutex, but
- * filled in in the secondaries.
- */
- struct {
- struct __db *le_next;
- struct __db **le_prev;
- } s_links;
- u_int32_t s_refcnt;
-
- /* Secondary callback and free functions -- set in the secondary. */
- int (*s_callback)(DB *, const DBT *, const DBT *, DBT *);
-
- /* Reference to primary -- set in the secondary. */
- DB *s_primary;
-
- /*
- * Subsystem-private structures.
- */
-
- void *bt_internal; /* Btree/Recno access method private. */
- void *cj_internal; /* C++/Java private. */
- void *h_internal; /* Hash access method private. */
- void *q_internal; /* Queue access method private. */
- void *xa_internal; /* XA private. */
-
- /* Methods. */
- int (*associate) __P((DB *, DB *, int (*)(DB *, const DBT *,
- const DBT *, DBT *), u_int32_t));
- int (*close) __P((DB *, u_int32_t));
- int (*cursor) __P((DB *, DB_TXN *, DBC **, u_int32_t));
- int (*del) __P((DB *, DB_TXN *, DBT *, u_int32_t));
- void (*err) __P((DB *, int, const char *, ...));
- void (*errx) __P((DB *, const char *, ...));
- int (*fd) __P((DB *, int *));
- int (*get) __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t));
- int (*pget) __P((DB *, DB_TXN *, DBT *, DBT *, DBT *, u_int32_t));
- int (*get_byteswapped) __P((DB *));
- DBTYPE
- (*get_type) __P((DB *));
- int (*join) __P((DB *, DBC **, DBC **, u_int32_t));
- int (*key_range) __P((DB *,
- DB_TXN *, DBT *, DB_KEY_RANGE *, u_int32_t));
- int (*open) __P((DB *,
- const char *, const char *, DBTYPE, u_int32_t, int));
- int (*put) __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t));
- int (*remove) __P((DB *, const char *, const char *, u_int32_t));
- int (*rename) __P((DB *,
- const char *, const char *, const char *, u_int32_t));
- int (*truncate) __P((DB *,
- const char *, const char *, u_int32_t *, u_int32_t));
- int (*set_append_recno) __P((DB *, int (*)(DB *, DBT *, db_recno_t)));
- int (*set_alloc) __P((DB *, void *(*)(size_t),
- void *(*)(void *, size_t), void (*)(void *)));
- int (*set_cachesize) __P((DB *, u_int32_t, u_int32_t, int));
- int (*set_dup_compare) __P((DB *,
- int (*)(DB *, const DBT *, const DBT *)));
- void (*set_errcall) __P((DB *, void (*)(const char *, char *)));
- void (*set_errfile) __P((DB *, FILE *));
- void (*set_errpfx) __P((DB *, const char *));
- int (*set_feedback) __P((DB *, void (*)(DB *, int, int)));
- int (*set_flags) __P((DB *, u_int32_t));
- int (*set_lorder) __P((DB *, int));
- int (*set_pagesize) __P((DB *, u_int32_t));
- int (*set_paniccall) __P((DB *, void (*)(DB_ENV *, int)));
- int (*stat) __P((DB *, void *, u_int32_t));
- int (*sync) __P((DB *, u_int32_t));
- int (*upgrade) __P((DB *, const char *, u_int32_t));
- int (*verify) __P((DB *,
- const char *, const char *, FILE *, u_int32_t));
-
- int (*set_bt_compare) __P((DB *,
- int (*)(DB *, const DBT *, const DBT *)));
- int (*set_bt_maxkey) __P((DB *, u_int32_t));
- int (*set_bt_minkey) __P((DB *, u_int32_t));
- int (*set_bt_prefix) __P((DB *,
- size_t (*)(DB *, const DBT *, const DBT *)));
-
- int (*set_h_ffactor) __P((DB *, u_int32_t));
- int (*set_h_hash) __P((DB *,
- u_int32_t (*)(DB *, const void *, u_int32_t)));
- int (*set_h_nelem) __P((DB *, u_int32_t));
-
- int (*set_re_delim) __P((DB *, int));
- int (*set_re_len) __P((DB *, u_int32_t));
- int (*set_re_pad) __P((DB *, int));
- int (*set_re_source) __P((DB *, const char *));
- int (*set_q_extentsize) __P((DB *, u_int32_t));
-
- int (*db_am_remove) __P((DB *, const char *,
- const char *, DB_LSN *, int (**)(DB *, void *), void **));
- int (*db_am_rename) __P((DB *,
- const char *, const char *, const char *));
-
-#define DB_OK_BTREE 0x01
-#define DB_OK_HASH 0x02
-#define DB_OK_QUEUE 0x04
-#define DB_OK_RECNO 0x08
- u_int32_t am_ok; /* Legal AM choices. */
-
-#define DB_AM_DIRTY 0x000001 /* Support Dirty Reads. */
-#define DB_AM_DISCARD 0x000002 /* Discard any cached pages. */
-#define DB_AM_DUP 0x000004 /* DB_DUP. */
-#define DB_AM_DUPSORT 0x000008 /* DB_DUPSORT. */
-#define DB_AM_INMEM 0x000010 /* In-memory; no sync on close. */
-#define DB_AM_PGDEF 0x000020 /* Page size was defaulted. */
-#define DB_AM_RDONLY 0x000040 /* Database is readonly. */
-#define DB_AM_RECOVER 0x000080 /* DBP opened by recovery routine. */
-#define DB_AM_SECONDARY 0x000100 /* Database is a secondary index. */
-#define DB_AM_SUBDB 0x000200 /* Subdatabases supported. */
-#define DB_AM_SWAP 0x000400 /* Pages need to be byte-swapped. */
-#define DB_AM_TXN 0x000800 /* DBP was in a transaction. */
-#define DB_AM_VERIFYING 0x001000 /* DB handle is in the verifier. */
-#define DB_BT_RECNUM 0x002000 /* DB_RECNUM. */
-#define DB_BT_REVSPLIT 0x004000 /* DB_REVSPLITOFF. */
-#define DB_DBM_ERROR 0x008000 /* Error in DBM/NDBM database. */
-#define DB_OPEN_CALLED 0x010000 /* DB->open called. */
-#define DB_RE_DELIMITER 0x020000 /* Variablen length delimiter set. */
-#define DB_RE_FIXEDLEN 0x040000 /* Fixed-length records. */
-#define DB_RE_PAD 0x080000 /* Fixed-length record pad. */
-#define DB_RE_RENUMBER 0x100000 /* DB_RENUMBER. */
-#define DB_RE_SNAPSHOT 0x200000 /* DB_SNAPSHOT. */
- u_int32_t flags;
-};
-/*******************************************************
- * Locking
- *******************************************************/
-#define DB_LOCKVERSION 1
-
-/* Flag values for lock_vec(), lock_get(). */
-#define DB_LOCK_NOWAIT 0x01 /* Don't wait on unavailable lock. */
-#define DB_LOCK_RECORD 0x02 /* Internal: record lock. */
-#define DB_LOCK_UPGRADE 0x04 /* Internal: upgrade existing lock. */
-#define DB_LOCK_SWITCH 0x08 /* Internal: switch existing lock. */
-
-/*
- * Request types.
- *
- * !!!
- * Changes here must be reflected in java/src/com/sleepycat/db/Db.java.
- */
-typedef enum {
- DB_LOCK_DUMP=0, /* Display held locks. */
- DB_LOCK_GET, /* Get the lock. */
- DB_LOCK_INHERIT, /* Pass locks to parent. */
- DB_LOCK_PUT, /* Release the lock. */
- DB_LOCK_PUT_ALL, /* Release locker's locks. */
- DB_LOCK_PUT_OBJ, /* Release locker's locks on obj. */
- DB_LOCK_UPGRADE_WRITE /* Upgrade writes for dirty reads. */
-} db_lockop_t;
-
-/*
- * Simple R/W lock modes and for multi-granularity intention locking.
- *
- * !!!
- * These values are NOT random, as they are used as an index into the lock
- * conflicts arrays, i.e., DB_LOCK_IWRITE must be == 3, and DB_LOCK_IREAD
- * must be == 4.
- *
- * !!!
- * Changes here must be reflected in java/src/com/sleepycat/db/Db.java.
- */
-typedef enum {
- DB_LOCK_NG=0, /* Not granted. */
- DB_LOCK_READ, /* Shared/read. */
- DB_LOCK_WRITE, /* Exclusive/write. */
- DB_LOCK_WAIT, /* Wait for event */
- DB_LOCK_IWRITE, /* Intent exclusive/write. */
- DB_LOCK_IREAD, /* Intent to share/read. */
- DB_LOCK_IWR, /* Intent to read and write. */
- DB_LOCK_DIRTY, /* Dirty Read. */
- DB_LOCK_WWRITE /* Was Written. */
-} db_lockmode_t;
-
-/*
- * Status of a lock.
- */
-typedef enum {
- DB_LSTAT_ABORTED, /* Lock belongs to an aborted txn. */
- DB_LSTAT_ERR, /* Lock is bad. */
- DB_LSTAT_FREE, /* Lock is unallocated. */
- DB_LSTAT_HELD, /* Lock is currently held. */
- DB_LSTAT_NOGRANT, /* Lock was not granted. */
- DB_LSTAT_PENDING, /* Lock was waiting and has been
- * promoted; waiting for the owner
- * to run and upgrade it to held. */
- DB_LSTAT_WAITING /* Lock is on the wait queue. */
-} db_status_t;
-
-/* Lock statistics structure. */
-struct __db_lock_stat {
- u_int32_t st_lastid; /* Last allocated locker ID. */
- u_int32_t st_maxlocks; /* Maximum number of locks in table. */
- u_int32_t st_maxlockers; /* Maximum num of lockers in table. */
- u_int32_t st_maxobjects; /* Maximum num of objects in table. */
- u_int32_t st_nmodes; /* Number of lock modes. */
- u_int32_t st_nlocks; /* Current number of locks. */
- u_int32_t st_maxnlocks; /* Maximum number of locks so far. */
- u_int32_t st_nlockers; /* Current number of lockers. */
- u_int32_t st_maxnlockers; /* Maximum number of lockers so far. */
- u_int32_t st_nobjects; /* Current number of objects. */
- u_int32_t st_maxnobjects; /* Maximum number of objects so far. */
- u_int32_t st_nconflicts; /* Number of lock conflicts. */
- u_int32_t st_nrequests; /* Number of lock gets. */
- u_int32_t st_nreleases; /* Number of lock puts. */
- u_int32_t st_nnowaits; /* Number of requests that would have
- waited, but NOWAIT was set. */
- u_int32_t st_ndeadlocks; /* Number of lock deadlocks. */
- u_int32_t st_region_wait; /* Region lock granted after wait. */
- u_int32_t st_region_nowait; /* Region lock granted without wait. */
- u_int32_t st_regsize; /* Region size. */
-};
-
-/*
- * DB_LOCK_ILOCK --
- * Internal DB access method lock.
- */
-struct __db_ilock {
- db_pgno_t pgno; /* Page being locked. */
- u_int8_t fileid[DB_FILE_ID_LEN];/* File id. */
-#define DB_RECORD_LOCK 1
-#define DB_PAGE_LOCK 2
- u_int8_t type; /* Record or Page lock */
-};
-
-/*
- * DB_LOCK --
- * The structure is allocated by the caller and filled in during a
- * lock_get request (or a lock_vec/DB_LOCK_GET).
- */
-struct __db_lock_u {
- size_t off; /* Offset of the lock in the region */
- u_int32_t ndx; /* Index of the object referenced by
- * this lock; used for locking. */
- u_int32_t gen; /* Generation number of this lock. */
- db_lockmode_t mode; /* mode of this lock. */
-};
-
-/* Lock request structure. */
-struct __db_lockreq {
- db_lockop_t op; /* Operation. */
- db_lockmode_t mode; /* Requested mode. */
- DBT *obj; /* Object being locked. */
- DB_LOCK lock; /* Lock returned. */
-};
-
-/* Cursor description structure. */
-struct __dbc {
- DB *dbp; /* Related DB access method. */
- DB_TXN *txn; /* Associated transaction. */
-
- /*
- * !!!
- * Explicit representations of structures in queue.h.
- *
- * TAILQ_ENTRY(__dbc) links; Active/free cursor queues.
- */
- struct {
- DBC *tqe_next;
- DBC **tqe_prev;
- } links;
-
- /*
- * The DBT *'s below are used by the cursor routines to return
- * data to the user when DBT flags indicate that DB should manage
- * the returned memory. They point at a DBT containing the buffer
- * and length that will be used, and "belonging" to the handle that
- * should "own" this memory. This may be a "my_*" field of this
- * cursor--the default--or it may be the corresponding field of
- * another cursor, a DB handle, a join cursor, etc. In general, it
- * will be whatever handle the user originally used for the current
- * DB interface call.
- */
- DBT *rskey; /* Returned secondary key. */
- DBT *rkey; /* Returned [primary] key. */
- DBT *rdata; /* Returned data. */
-
- DBT my_rskey; /* Space for returned secondary key. */
- DBT my_rkey; /* Space for returned [primary] key. */
- DBT my_rdata; /* Space for returned data. */
-
- u_int32_t lid; /* Default process' locker id. */
- u_int32_t locker; /* Locker for this operation. */
- DBT lock_dbt; /* DBT referencing lock. */
- DB_LOCK_ILOCK lock; /* Object to be locked. */
- DB_LOCK mylock; /* Lock held on this cursor. */
-
- long cl_id; /* Remote client id. */
-
- DBTYPE dbtype; /* Cursor type. */
-
- DBC_INTERNAL *internal; /* Access method private. */
-
- int (*c_close) __P((DBC *)); /* Methods: public. */
- int (*c_count) __P((DBC *, db_recno_t *, u_int32_t));
- int (*c_del) __P((DBC *, u_int32_t));
- int (*c_dup) __P((DBC *, DBC **, u_int32_t));
- int (*c_get) __P((DBC *, DBT *, DBT *, u_int32_t));
- int (*c_pget) __P((DBC *, DBT *, DBT *, DBT *, u_int32_t));
- int (*c_put) __P((DBC *, DBT *, DBT *, u_int32_t));
-
- /* Methods: private. */
- int (*c_am_bulk) __P((DBC *, DBT *, u_int32_t));
- int (*c_am_close) __P((DBC *, db_pgno_t, int *));
- int (*c_am_del) __P((DBC *));
- int (*c_am_destroy) __P((DBC *));
- int (*c_am_get) __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *));
- int (*c_am_put) __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *));
- int (*c_am_writelock) __P((DBC *));
-
- /* Private: for secondary indices. */
- int (*c_real_get) __P((DBC *, DBT *, DBT *, u_int32_t));
-
-#define DBC_ACTIVE 0x001 /* Cursor is being used. */
-#define DBC_COMPENSATE 0x002 /* Cursor is doing compensation
- * do not lock.
- */
-#define DBC_DIRTY_READ 0x004 /* Cursor is supporting dirty reads. */
-#define DBC_OPD 0x008 /* Cursor references off-page dups. */
-#define DBC_RECOVER 0x010 /* Cursor created by recovery routine
- * (do not log or lock).
- */
-#define DBC_RMW 0x020 /* Acquire write flag in read op. */
-#define DBC_TRANSIENT 0x040 /* Cursor is transient. */
-#define DBC_WRITECURSOR 0x080 /* Cursor may be used to write (CDB). */
-#define DBC_WRITEDUP 0x100 /* idup'ed DBC_WRITECURSOR (CDB). */
-#define DBC_WRITER 0x200 /* Cursor immediately writing (CDB). */
-#define DBC_MULTIPLE 0x400 /* Return Multiple data. */
-#define DBC_MULTIPLE_KEY 0x800 /* Return Multiple keys and data. */
- u_int32_t flags;
-};
-
-/* Key range statistics structure */
-struct __key_range {
- double less;
- double equal;
- double greater;
-};
-
-/* Btree/Recno statistics structure. */
-struct __db_bt_stat {
- u_int32_t bt_magic; /* Magic number. */
- u_int32_t bt_version; /* Version number. */
- u_int32_t bt_metaflags; /* Metadata flags. */
- u_int32_t bt_nkeys; /* Number of unique keys. */
- u_int32_t bt_ndata; /* Number of data items. */
- u_int32_t bt_pagesize; /* Page size. */
- u_int32_t bt_maxkey; /* Maxkey value. */
- u_int32_t bt_minkey; /* Minkey value. */
- u_int32_t bt_re_len; /* Fixed-length record length. */
- u_int32_t bt_re_pad; /* Fixed-length record pad. */
- u_int32_t bt_levels; /* Tree levels. */
- u_int32_t bt_int_pg; /* Internal pages. */
- u_int32_t bt_leaf_pg; /* Leaf pages. */
- u_int32_t bt_dup_pg; /* Duplicate pages. */
- u_int32_t bt_over_pg; /* Overflow pages. */
- u_int32_t bt_free; /* Pages on the free list. */
- u_int32_t bt_int_pgfree; /* Bytes free in internal pages. */
- u_int32_t bt_leaf_pgfree; /* Bytes free in leaf pages. */
- u_int32_t bt_dup_pgfree; /* Bytes free in duplicate pages. */
- u_int32_t bt_over_pgfree; /* Bytes free in overflow pages. */
-};
-
-/* Queue statistics structure. */
-struct __db_qam_stat {
- u_int32_t qs_magic; /* Magic number. */
- u_int32_t qs_version; /* Version number. */
- u_int32_t qs_metaflags; /* Metadata flags. */
- u_int32_t qs_nkeys; /* Number of unique keys. */
- u_int32_t qs_ndata; /* Number of data items. */
- u_int32_t qs_pagesize; /* Page size. */
- u_int32_t qs_extentsize; /* Pages per extent. */
- u_int32_t qs_pages; /* Data pages. */
- u_int32_t qs_re_len; /* Fixed-length record length. */
- u_int32_t qs_re_pad; /* Fixed-length record pad. */
- u_int32_t qs_pgfree; /* Bytes free in data pages. */
- u_int32_t qs_first_recno; /* First not deleted record. */
- u_int32_t qs_cur_recno; /* Last allocated record number. */
-};
-
-/* Hash statistics structure. */
-struct __db_h_stat {
- u_int32_t hash_magic; /* Magic number. */
- u_int32_t hash_version; /* Version number. */
- u_int32_t hash_metaflags; /* Metadata flags. */
- u_int32_t hash_nkeys; /* Number of unique keys. */
- u_int32_t hash_ndata; /* Number of data items. */
- u_int32_t hash_pagesize; /* Page size. */
- u_int32_t hash_nelem; /* Original nelem specified. */
- u_int32_t hash_ffactor; /* Fill factor specified at create. */
- u_int32_t hash_buckets; /* Number of hash buckets. */
- u_int32_t hash_free; /* Pages on the free list. */
- u_int32_t hash_bfree; /* Bytes free on bucket pages. */
- u_int32_t hash_bigpages; /* Number of big key/data pages. */
- u_int32_t hash_big_bfree; /* Bytes free on big item pages. */
- u_int32_t hash_overflows; /* Number of overflow pages. */
- u_int32_t hash_ovfl_free; /* Bytes free on ovfl pages. */
- u_int32_t hash_dup; /* Number of dup pages. */
- u_int32_t hash_dup_free; /* Bytes free on duplicate pages. */
-};
-
-/*******************************************************
-* Logging.
- *******************************************************/
-/* Flag values for log_archive(). */
-#define DB_ARCH_ABS 0x001 /* Absolute pathnames. */
-#define DB_ARCH_DATA 0x002 /* Data files. */
-#define DB_ARCH_LOG 0x004 /* Log files. */
-
-/*
- * A DB_LSN has two parts, a fileid which identifies a specific file, and an
- * offset within that file. The fileid is an unsigned 4-byte quantity that
- * uniquely identifies a file within the log directory -- currently a simple
- * counter inside the log. The offset is also an unsigned 4-byte value. The
- * log manager guarantees the offset is never more than 4 bytes by switching
- * to a new log file before the maximum length imposed by an unsigned 4-byte
- * offset is reached.
- */
-struct __db_lsn {
- u_int32_t file; /* File ID. */
- u_int32_t offset; /* File offset. */
-};
-
-/* Log statistics structure. */
-struct __db_log_stat {
- u_int32_t st_magic; /* Log file magic number. */
- u_int32_t st_version; /* Log file version number. */
- int st_mode; /* Log file mode. */
- u_int32_t st_lg_bsize; /* Log buffer size. */
- u_int32_t st_lg_max; /* Maximum log file size. */
- u_int32_t st_w_bytes; /* Bytes to log. */
- u_int32_t st_w_mbytes; /* Megabytes to log. */
- u_int32_t st_wc_bytes; /* Bytes to log since checkpoint. */
- u_int32_t st_wc_mbytes; /* Megabytes to log since checkpoint. */
- u_int32_t st_wcount; /* Total writes to the log. */
- u_int32_t st_wcount_fill; /* Overflow writes to the log. */
- u_int32_t st_scount; /* Total syncs to the log. */
- u_int32_t st_region_wait; /* Region lock granted after wait. */
- u_int32_t st_region_nowait; /* Region lock granted without wait. */
- u_int32_t st_cur_file; /* Current log file number. */
- u_int32_t st_cur_offset; /* Current log file offset. */
- u_int32_t st_regsize; /* Region size. */
-};
-
-/*******************************************************
- * Mpool
- *******************************************************/
-/* Flag values for memp_fget(). */
-#define DB_MPOOL_CREATE 0x001 /* Create a page. */
-#define DB_MPOOL_LAST 0x002 /* Return the last page. */
-#define DB_MPOOL_NEW 0x004 /* Create a new page. */
-#define DB_MPOOL_NEW_GROUP 0x008 /* Create a group of pages. */
-
-/* Flag values for memp_fput(), memp_fset(). */
-#define DB_MPOOL_CLEAN 0x001 /* Page is not modified. */
-#define DB_MPOOL_DIRTY 0x002 /* Page is modified. */
-#define DB_MPOOL_DISCARD 0x004 /* Don't cache the page. */
-
-/* Mpool statistics structure. */
-struct __db_mpool_stat {
- u_int32_t st_cache_hit; /* Pages found in the cache. */
- u_int32_t st_cache_miss; /* Pages not found in the cache. */
- u_int32_t st_map; /* Pages from mapped files. */
- u_int32_t st_page_create; /* Pages created in the cache. */
- u_int32_t st_page_in; /* Pages read in. */
- u_int32_t st_page_out; /* Pages written out. */
- u_int32_t st_ro_evict; /* Clean pages forced from the cache. */
- u_int32_t st_rw_evict; /* Dirty pages forced from the cache. */
- u_int32_t st_hash_buckets; /* Number of hash buckets. */
- u_int32_t st_hash_searches; /* Total hash chain searches. */
- u_int32_t st_hash_longest; /* Longest hash chain searched. */
- u_int32_t st_hash_examined; /* Total hash entries searched. */
- u_int32_t st_page_clean; /* Clean pages. */
- u_int32_t st_page_dirty; /* Dirty pages. */
- u_int32_t st_page_trickle; /* Pages written by memp_trickle. */
- u_int32_t st_region_wait; /* Region lock granted after wait. */
- u_int32_t st_region_nowait; /* Region lock granted without wait. */
- u_int32_t st_gbytes; /* Total cache size: GB. */
- u_int32_t st_bytes; /* Total cache size: B. */
- u_int32_t st_ncache; /* Number of caches. */
- u_int32_t st_regsize; /* Cache size. */
-};
-
-/* Mpool file open information structure. */
-struct __db_mpool_finfo {
- int ftype; /* File type. */
- DBT *pgcookie; /* Byte-string passed to pgin/pgout. */
- u_int8_t *fileid; /* Unique file ID. */
- int32_t lsn_offset; /* LSN offset in page. */
- u_int32_t clear_len; /* Cleared length on created pages. */
-};
-
-/* Mpool file statistics structure. */
-struct __db_mpool_fstat {
- char *file_name; /* File name. */
- size_t st_pagesize; /* Page size. */
- u_int32_t st_cache_hit; /* Pages found in the cache. */
- u_int32_t st_cache_miss; /* Pages not found in the cache. */
- u_int32_t st_map; /* Pages from mapped files. */
- u_int32_t st_page_create; /* Pages created in the cache. */
- u_int32_t st_page_in; /* Pages read in. */
- u_int32_t st_page_out; /* Pages written out. */
-};
-
-/*******************************************************
- * Transactions.
- *******************************************************/
-#define DB_TXNVERSION 1
-
-/* Transaction statistics structure. */
-struct __db_txn_active {
- u_int32_t txnid; /* Transaction ID */
- u_int32_t parentid; /* Transaction ID of parent */
- DB_LSN lsn; /* Lsn of the begin record */
-};
-
-struct __db_txn_stat {
- DB_LSN st_last_ckp; /* lsn of the last checkpoint */
- DB_LSN st_pending_ckp; /* last checkpoint did not finish */
- time_t st_time_ckp; /* time of last checkpoint */
- u_int32_t st_last_txnid; /* last transaction id given out */
- u_int32_t st_maxtxns; /* maximum txns possible */
- u_int32_t st_naborts; /* number of aborted transactions */
- u_int32_t st_nbegins; /* number of begun transactions */
- u_int32_t st_ncommits; /* number of committed transactions */
- u_int32_t st_nactive; /* number of active transactions */
- u_int32_t st_nrestores; /* number of restored transactions
- after recovery. */
- u_int32_t st_maxnactive; /* maximum active transactions */
- DB_TXN_ACTIVE
- *st_txnarray; /* array of active transactions */
- u_int32_t st_region_wait; /* Region lock granted after wait. */
- u_int32_t st_region_nowait; /* Region lock granted without wait. */
- u_int32_t st_regsize; /* Region size. */
-};
-
-/*
- * Structure used for two phase commit interface. Berkeley DB support for two
- * phase commit is compatible with the X/open XA interface. The xa #define
- * XIDDATASIZE defines the size of a global transaction ID. We have our own
- * version here which must have the same value.
- */
-#define DB_XIDDATASIZE 128
-typedef struct db_preplist {
- DB_TXN *txn;
- u_int8_t gid[DB_XIDDATASIZE];
-} DB_PREPLIST;
-
-#ifndef DB_DBM_HSEARCH
-#define DB_DBM_HSEARCH 0 /* No historic interfaces by default. */
-#endif
-#if DB_DBM_HSEARCH != 0
-/*******************************************************
- * Dbm/Ndbm historic interfaces.
- *******************************************************/
-typedef struct __db DBM;
-
-#define DBM_INSERT 0 /* Flags to dbm_store(). */
-#define DBM_REPLACE 1
-
-/*
- * The DB support for ndbm(3) always appends this suffix to the
- * file name to avoid overwriting the user's original database.
- */
-#define DBM_SUFFIX ".db"
-
-#if defined(_XPG4_2)
-typedef struct {
- char *dptr;
- size_t dsize;
-} datum;
-#else
-typedef struct {
- char *dptr;
- int dsize;
-} datum;
-#endif
-
-/*******************************************************
- * Hsearch historic interface.
- *******************************************************/
-typedef enum {
- FIND, ENTER
-} ACTION;
-
-typedef struct entry {
- char *key;
- char *data;
-} ENTRY;
-
-#endif /* DB_DBM_HSEARCH */
-
-/*
- * XXX
- * MacOS: Reset Metrowerks C enum sizes.
- */
-#ifdef __MWERKS__
-#pragma enumsalwaysint reset
-#endif
-
-#if defined(__cplusplus)
-}
-#endif
diff --git a/db/include/db.src b/db/include/db.src
deleted file mode 100644
index 6dc0071ef..000000000
--- a/db/include/db.src
+++ /dev/null
@@ -1,1375 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1996, 1997, 1998, 1999, 2000
- * Sleepycat Software. All rights reserved.
- *
- * $Id: db.src,v 11.121 2001/01/10 15:43:08 sue Exp $
- */
-
-#ifndef _DB_H_
-#define _DB_H_
-
-#ifndef __NO_SYSTEM_INCLUDES
-#include <sys/types.h>
-
-#include <stdio.h>
-#endif
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-/*
- * XXX
- * Handle function prototypes and the keyword "const". This steps on name
- * space that DB doesn't control, but all of the other solutions are worse.
- *
- * XXX
- * While Microsoft's compiler is ANSI C compliant, it doesn't have _STDC_
- * defined by default, you specify a command line flag or #pragma to turn
- * it on. Don't do that, however, because some of Microsoft's own header
- * files won't compile.
- */
-#undef __P
-#if defined(__STDC__) || defined(__cplusplus) || defined(_MSC_VER)
-#define __P(protos) protos /* ANSI C prototypes */
-#else
-#define const
-#define __P(protos) () /* K&R C preprocessor */
-#endif
-
-/*
- * !!!
- * DB needs basic information about specifically sized types. If they're
- * not provided by the system, typedef them here.
- *
- * We protect them against multiple inclusion using __BIT_TYPES_DEFINED__,
- * as does BIND and Kerberos, since we don't know for sure what #include
- * files the user is using.
- *
- * !!!
- * We also provide the standard u_int, u_long etc., if they're not provided
- * by the system.
- */
-#ifndef __BIT_TYPES_DEFINED__
-#define __BIT_TYPES_DEFINED__
-@u_int8_decl@
-@int16_decl@
-@u_int16_decl@
-@int32_decl@
-@u_int32_decl@
-#endif
-
-@u_char_decl@
-@u_short_decl@
-@u_int_decl@
-@u_long_decl@
-@ssize_t_decl@
-
-#define DB_VERSION_MAJOR @DB_VERSION_MAJOR@
-#define DB_VERSION_MINOR @DB_VERSION_MINOR@
-#define DB_VERSION_PATCH @DB_VERSION_PATCH@
-#define DB_VERSION_STRING @DB_VERSION_STRING@
-
-typedef u_int32_t db_pgno_t; /* Page number type. */
-typedef u_int16_t db_indx_t; /* Page offset type. */
-#define DB_MAX_PAGES 0xffffffff /* >= # of pages in a file */
-
-typedef u_int32_t db_recno_t; /* Record number type. */
-#define DB_MAX_RECORDS 0xffffffff /* >= # of records in a tree */
-
-/* Forward structure declarations, so applications get type checking. */
-struct __db; typedef struct __db DB;
-#ifdef DB_DBM_HSEARCH
- typedef struct __db DBM;
-#endif
-struct __db_bt_stat; typedef struct __db_bt_stat DB_BTREE_STAT;
-struct __db_dbt; typedef struct __db_dbt DBT;
-struct __db_env; typedef struct __db_env DB_ENV;
-struct __db_h_stat; typedef struct __db_h_stat DB_HASH_STAT;
-struct __db_ilock; typedef struct __db_ilock DB_LOCK_ILOCK;
-struct __db_lock_stat; typedef struct __db_lock_stat DB_LOCK_STAT;
-struct __db_lock_u; typedef struct __db_lock_u DB_LOCK;
-struct __db_lockreq; typedef struct __db_lockreq DB_LOCKREQ;
-struct __db_log_stat; typedef struct __db_log_stat DB_LOG_STAT;
-struct __db_lsn; typedef struct __db_lsn DB_LSN;
-struct __db_mpool_finfo;typedef struct __db_mpool_finfo DB_MPOOL_FINFO;
-struct __db_mpool_fstat;typedef struct __db_mpool_fstat DB_MPOOL_FSTAT;
-struct __db_mpool_stat; typedef struct __db_mpool_stat DB_MPOOL_STAT;
-struct __db_mpoolfile; typedef struct __db_mpoolfile DB_MPOOLFILE;
-struct __db_qam_stat; typedef struct __db_qam_stat DB_QUEUE_STAT;
-struct __db_txn; typedef struct __db_txn DB_TXN;
-struct __db_txn_active; typedef struct __db_txn_active DB_TXN_ACTIVE;
-struct __db_txn_stat; typedef struct __db_txn_stat DB_TXN_STAT;
-struct __dbc; typedef struct __dbc DBC;
-struct __dbc_internal; typedef struct __dbc_internal DBC_INTERNAL;
-struct __fh_t; typedef struct __fh_t DB_FH;
-struct __key_range; typedef struct __key_range DB_KEY_RANGE;
-
-/* Key/data structure -- a Data-Base Thang. */
-struct __db_dbt {
- /*
- * data/size must be fields 1 and 2 for DB 1.85 compatibility.
- */
- void *data; /* Key/data */
- u_int32_t size; /* key/data length */
-
- u_int32_t ulen; /* RO: length of user buffer. */
- u_int32_t dlen; /* RO: get/put record length. */
- u_int32_t doff; /* RO: get/put record offset. */
-
-#define DB_DBT_ISSET 0x001 /* Lower level calls set value. */
-#define DB_DBT_MALLOC 0x002 /* Return in malloc'd memory. */
-#define DB_DBT_PARTIAL 0x004 /* Partial put/get. */
-#define DB_DBT_REALLOC 0x008 /* Return in realloc'd memory. */
-#define DB_DBT_USERMEM 0x010 /* Return in user's memory. */
-#define DB_DBT_DUPOK 0x020 /* Insert if duplicate. */
- u_int32_t flags;
-};
-
-/*
- * Common flags --
- * Interfaces which use any of these common flags should never have
- * interface specific flags in this range.
- */
-#define DB_CREATE 0x000001 /* Create file as necessary. */
-#define DB_CXX_NO_EXCEPTIONS 0x000002 /* C++: return error values. */
-#define DB_FORCE 0x000004 /* Force (anything). */
-#define DB_NOMMAP 0x000008 /* Don't mmap underlying file. */
-#define DB_RDONLY 0x000010 /* Read-only (O_RDONLY). */
-#define DB_RECOVER 0x000020 /* Run normal recovery. */
-#define DB_THREAD 0x000040 /* Applications are threaded. */
-#define DB_TXN_NOSYNC 0x000080 /* Do not sync log on commit. */
-#define DB_USE_ENVIRON 0x000100 /* Use the environment. */
-#define DB_USE_ENVIRON_ROOT 0x000200 /* Use the environment if root. */
-
-/*
- * Flags private to db_env_create.
- */
-#define DB_CLIENT 0x000400 /* Open for a client environment. */
-
-/*
- * Flags private to db_create.
- */
-#define DB_XA_CREATE 0x000400 /* Open in an XA environment. */
-
-/*
- * Flags private to DBENV->open.
- */
-#define DB_INIT_CDB 0x000400 /* Concurrent Access Methods. */
-#define DB_INIT_LOCK 0x000800 /* Initialize locking. */
-#define DB_INIT_LOG 0x001000 /* Initialize logging. */
-#define DB_INIT_MPOOL 0x002000 /* Initialize mpool. */
-#define DB_INIT_TXN 0x004000 /* Initialize transactions. */
-#define DB_JOINENV 0x008000 /* Initialize all subsystems present. */
-#define DB_LOCKDOWN 0x010000 /* Lock memory into physical core. */
-#define DB_PRIVATE 0x020000 /* DB_ENV is process local. */
-#define DB_RECOVER_FATAL 0x040000 /* Run catastrophic recovery. */
-#define DB_SYSTEM_MEM 0x080000 /* Use system-backed memory. */
-
-/*
- * Flags private to DB->open.
- */
-#define DB_EXCL 0x000400 /* Exclusive open (O_EXCL). */
-#define DB_FCNTL_LOCKING 0x000800 /* UNDOC: fcntl(2) locking. */
-#define DB_ODDFILESIZE 0x001000 /* UNDOC: truncate to N * pgsize. */
-#define DB_RDWRMASTER 0x002000 /* UNDOC: allow subdb master open R/W */
-#define DB_TRUNCATE 0x004000 /* Discard existing DB (O_TRUNC). */
-#define DB_EXTENT 0x008000 /* UNDOC: dealing with an extent. */
-
-/*
- * Flags private to DBENV->txn_begin.
- */
-#define DB_TXN_NOWAIT 0x000400 /* Do not wait for locks in this TXN. */
-#define DB_TXN_SYNC 0x000800 /* Always sync log on commit. */
-
-/*
- * Flags private to DBENV->set_flags.
- */
-#define DB_CDB_ALLDB 0x000400 /* In CDB, lock across environment. */
-
-/*
- * Flags private to DB->set_feedback's callback.
- */
-#define DB_UPGRADE 0x000400 /* Upgrading. */
-#define DB_VERIFY 0x000800 /* Verifying. */
-
-/*
- * Flags private to DB->set_flags.
- *
- * DB->set_flags does not share common flags and so values start at 0x01.
- */
-#define DB_DUP 0x0001 /* Btree, Hash: duplicate keys. */
-#define DB_DUPSORT 0x0002 /* Btree, Hash: duplicate keys. */
-#define DB_RECNUM 0x0004 /* Btree: record numbers. */
-#define DB_RENUMBER 0x0008 /* Recno: renumber on insert/delete. */
-#define DB_REVSPLITOFF 0x0010 /* Btree: turn off reverse splits. */
-#define DB_SNAPSHOT 0x0020 /* Recno: snapshot the input. */
-
-/*
- * Flags private to DB->join.
- *
- * DB->join does not share common flags and so values start at 0x01.
- */
-#define DB_JOIN_NOSORT 0x0001 /* Don't try to optimize join. */
-
-/*
- * Flags private to DB->verify.
- *
- * DB->verify does not share common flags and so values start at 0x01.
- */
-#define DB_AGGRESSIVE 0x0001 /* Salvage anything which might be data.*/
-#define DB_NOORDERCHK 0x0002 /* Skip order check; subdb w/ user func */
-#define DB_ORDERCHKONLY 0x0004 /* Only perform an order check on subdb */
-#define DB_PR_PAGE 0x0008 /* Show page contents (-da). */
-#define DB_PR_HEADERS 0x0010 /* Show only page headers (-dh). */
-#define DB_PR_RECOVERYTEST 0x0020 /* Recovery test (-dr). */
-#define DB_SALVAGE 0x0040 /* Salvage what looks like data. */
-/*
- * !!!
- * These must not go over 0x8000, or they will collide with the flags
- * used by __bam_vrfy_subtree.
- */
-#define DB_VRFY_FLAGMASK 0xffff /* For masking above flags. */
-
-/*
- * Deadlock detector modes; used in the DBENV structure to configure the
- * locking subsystem.
- */
-#define DB_LOCK_NORUN 0
-#define DB_LOCK_DEFAULT 1 /* Default policy. */
-#define DB_LOCK_OLDEST 2 /* Abort oldest transaction. */
-#define DB_LOCK_RANDOM 3 /* Abort random transaction. */
-#define DB_LOCK_YOUNGEST 4 /* Abort youngest transaction. */
-
-/*******************************************************
- * Environment.
- *******************************************************/
-#define DB_REGION_MAGIC 0x120897 /* Environment magic number. */
-
-typedef enum {
- DB_TXN_ABORT,
- DB_TXN_BACKWARD_ROLL,
- DB_TXN_FORWARD_ROLL,
- DB_TXN_OPENFILES
-} db_recops;
-
-#define DB_UNDO(op) ((op) == DB_TXN_ABORT || (op) == DB_TXN_BACKWARD_ROLL)
-#define DB_REDO(op) ((op) == DB_TXN_FORWARD_ROLL)
-
-struct __db_env {
- /*******************************************************
- * Public: owned by the application.
- *******************************************************/
- FILE *db_errfile; /* Error message file stream. */
- const char *db_errpfx; /* Error message prefix. */
- /* Callbacks. */
- void (*db_errcall) __P((const char *, char *));
- void (*db_feedback) __P((DB_ENV *, int, int));
- void (*db_paniccall) __P((DB_ENV *, int));
- int (*db_recovery_init) __P((DB_ENV *));
-
- /*
- * Currently, the verbose list is a bit field with room for 32
- * entries. There's no reason that it needs to be limited, if
- * there are ever more than 32 entries, convert to a bit array.
- */
-#define DB_VERB_CHKPOINT 0x0001 /* List checkpoints. */
-#define DB_VERB_DEADLOCK 0x0002 /* Deadlock detection information. */
-#define DB_VERB_RECOVERY 0x0004 /* Recovery information. */
-#define DB_VERB_WAITSFOR 0x0008 /* Dump waits-for table. */
- u_int32_t verbose; /* Verbose output. */
-
- void *app_private; /* Application-private handle. */
-
- /* Locking. */
- u_int8_t *lk_conflicts; /* Two dimensional conflict matrix. */
- u_int32_t lk_modes; /* Number of lock modes in table. */
- u_int32_t lk_max; /* Maximum number of locks. */
- u_int32_t lk_max_lockers;/* Maximum number of lockers. */
- u_int32_t lk_max_objects;/* Maximum number of locked objects. */
- u_int32_t lk_detect; /* Deadlock detect on all conflicts. */
-
- /* Logging. */
- u_int32_t lg_bsize; /* Buffer size. */
- u_int32_t lg_max; /* Maximum file size. */
-
- /* Memory pool. */
- u_int32_t mp_gbytes; /* Cachesize: GB. */
- u_int32_t mp_bytes; /* Cachesize: Bytes. */
- size_t mp_size; /* DEPRECATED: Cachesize: bytes. */
- int mp_ncache; /* Number of cache regions. */
- size_t mp_mmapsize; /* Maximum file size for mmap. */
-
- /* Transactions. */
- u_int32_t tx_max; /* Maximum number of transactions. */
- time_t tx_timestamp; /* Recover to specific timestamp. */
- int (*tx_recover) /* Dispatch function for recovery. */
- __P((DB_ENV *, DBT *, DB_LSN *, db_recops));
-
- /*******************************************************
- * Private: owned by DB.
- *******************************************************/
- int db_panic; /* Panic causing errno. */
-
- /* User files, paths. */
- char *db_home; /* Database home. */
- char *db_log_dir; /* Database log file directory. */
- char *db_tmp_dir; /* Database tmp file directory. */
-
- char **db_data_dir; /* Database data file directories. */
- int data_cnt; /* Database data file slots. */
- int data_next; /* Next Database data file slot. */
-
- int db_mode; /* Default open permissions. */
-
- void *reginfo; /* REGINFO structure reference. */
- DB_FH *lockfhp; /* fcntl(2) locking file handle. */
- long shm_key; /* shmget(2) key. */
-
- void *lg_handle; /* Log handle. */
-
- void *lk_handle; /* Lock handle. */
-
- void *mp_handle; /* Mpool handle. */
-
- void *tx_handle; /* Txn handle. */
-
- int (**dtab) /* Dispatch table */
- __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
- size_t dtab_size; /* Slots in the dispatch table. */
-
- void *cl_handle; /* RPC: remote client handle. */
- long cl_id; /* RPC: Remote client env id. */
-
- int dblocal_ref; /* DB_ENV_DBLOCAL: reference count. */
- u_int32_t db_mutexlocks; /* db_set_mutexlocks */
-
- /*
- * List of open DB handles for this DB_ENV, used for cursor
- * adjustment. Must be protected for multi-threaded support.
- *
- * !!!
- * As this structure is allocated in per-process memory, the
- * mutex may need to be stored elsewhere on architectures unable
- * to support mutexes in heap memory, e.g. HP/UX 9.
- */
- void *dblist_mutexp; /* Mutex. */
- /*
- * !!!
- * Explicit representation of structure in queue.h.
- * LIST_HEAD(dblist, __db);
- */
- struct {
- struct __db *lh_first;
- } dblist;
-
- /*
- * XA support.
- *
- * !!!
- * Explicit representations of structures in queue.h.
- *
- * TAILQ_ENTRY(__db_env);
- */
- struct {
- struct __db_env *tqe_next;
- struct __db_env **tqe_prev;
- } links;
- int xa_rmid; /* XA Resource Manager ID. */
- DB_TXN *xa_txn; /* XA Current transaction. */
-
- void *cj_internal; /* C++/Java private. */
-
- /* Methods. */
- int (*close) __P((DB_ENV *, u_int32_t));
- void (*err) __P((const DB_ENV *, int, const char *, ...));
- void (*errx) __P((const DB_ENV *, const char *, ...));
- int (*open) __P((DB_ENV *, const char *, u_int32_t, int));
- int (*remove) __P((DB_ENV *, const char *, u_int32_t));
- int (*set_data_dir) __P((DB_ENV *, const char *));
- void (*set_errcall) __P((DB_ENV *, void (*)(const char *, char *)));
- void (*set_errfile) __P((DB_ENV *, FILE *));
- void (*set_errpfx) __P((DB_ENV *, const char *));
- int (*set_feedback) __P((DB_ENV *, void (*)(DB_ENV *, int, int)));
- int (*set_flags) __P((DB_ENV *, u_int32_t, int));
- int (*set_mutexlocks) __P((DB_ENV *, int));
- int (*set_paniccall) __P((DB_ENV *, void (*)(DB_ENV *, int)));
- int (*set_recovery_init) __P((DB_ENV *, int (*)(DB_ENV *)));
- int (*set_server) __P((DB_ENV *, char *, long, long, u_int32_t));
- int (*set_shm_key) __P((DB_ENV *, long));
- int (*set_tmp_dir) __P((DB_ENV *, const char *));
- int (*set_verbose) __P((DB_ENV *, u_int32_t, int));
-
- int (*set_lg_bsize) __P((DB_ENV *, u_int32_t));
- int (*set_lg_dir) __P((DB_ENV *, const char *));
- int (*set_lg_max) __P((DB_ENV *, u_int32_t));
-
- int (*set_lk_conflicts) __P((DB_ENV *, u_int8_t *, int));
- int (*set_lk_detect) __P((DB_ENV *, u_int32_t));
- int (*set_lk_max) __P((DB_ENV *, u_int32_t));
- int (*set_lk_max_locks) __P((DB_ENV *, u_int32_t));
- int (*set_lk_max_lockers) __P((DB_ENV *, u_int32_t));
- int (*set_lk_max_objects) __P((DB_ENV *, u_int32_t));
-
- int (*set_mp_mmapsize) __P((DB_ENV *, size_t));
- int (*set_cachesize) __P((DB_ENV *, u_int32_t, u_int32_t, int));
-
- int (*set_tx_max) __P((DB_ENV *, u_int32_t));
- int (*set_tx_recover) __P((DB_ENV *,
- int (*)(DB_ENV *, DBT *, DB_LSN *, db_recops)));
- int (*set_tx_timestamp) __P((DB_ENV *, time_t *));
-
-#ifdef CONFIG_TEST
-#define DB_TEST_PREOPEN 1 /* before __os_open */
-#define DB_TEST_POSTOPEN 2 /* after __os_open */
-#define DB_TEST_POSTLOGMETA 3 /* after logging meta in btree */
-#define DB_TEST_POSTLOG 4 /* after logging all pages */
-#define DB_TEST_POSTSYNC 5 /* after syncing the log */
-#define DB_TEST_PRERENAME 6 /* before __os_rename */
-#define DB_TEST_POSTRENAME 7 /* after __os_rename */
- int test_abort; /* Abort value for testing. */
- int test_copy; /* Copy value for testing. */
-#endif
-
-#define DB_ENV_CDB 0x00001 /* DB_INIT_CDB. */
-#define DB_ENV_CDB_ALLDB 0x00002 /* CDB environment wide locking. */
-#define DB_ENV_CREATE 0x00004 /* DB_CREATE set. */
-#define DB_ENV_DBLOCAL 0x00008 /* DB_ENV allocated for private DB. */
-#define DB_ENV_LOCKDOWN 0x00010 /* DB_LOCKDOWN set. */
-#define DB_ENV_NOMMAP 0x00020 /* DB_NOMMAP set. */
-#define DB_ENV_OPEN_CALLED 0x00040 /* DBENV->open called (paths valid). */
-#define DB_ENV_PRIVATE 0x00080 /* DB_PRIVATE set. */
-#define DB_ENV_RPCCLIENT 0x00100 /* DB_CLIENT set. */
-#define DB_ENV_STANDALONE 0x00200 /* Test: freestanding environment. */
-#define DB_ENV_SYSTEM_MEM 0x00400 /* DB_SYSTEM_MEM set. */
-#define DB_ENV_THREAD 0x00800 /* DB_THREAD set. */
-#define DB_ENV_TXN_NOSYNC 0x01000 /* DB_TXN_NOSYNC set. */
-#define DB_ENV_USER_ALLOC 0x02000 /* User allocated the structure. */
- u_int32_t flags; /* Flags. */
-};
-
-/*******************************************************
- * Access methods.
- *******************************************************/
-/*
- * !!!
- * Changes here must be reflected in java/src/com/sleepycat/db/Db.java.
- */
-typedef enum {
- DB_BTREE=1,
- DB_HASH,
- DB_RECNO,
- DB_QUEUE,
- DB_UNKNOWN /* Figure it out on open. */
-} DBTYPE;
-
-#define DB_BTREEVERSION 8 /* Current btree version. */
-#define DB_BTREEOLDVER 6 /* Oldest btree version supported. */
-#define DB_BTREEMAGIC 0x053162
-
-#define DB_HASHVERSION 7 /* Current hash version. */
-#define DB_HASHOLDVER 4 /* Oldest hash version supported. */
-#define DB_HASHMAGIC 0x061561
-
-#define DB_QAMVERSION 3 /* Current queue version. */
-#define DB_QAMOLDVER 1 /* Oldest queue version supported. */
-#define DB_QAMMAGIC 0x042253
-
-#define DB_LOGVERSION 3 /* Current log version. */
-#define DB_LOGOLDVER 3 /* Oldest log version supported. */
-#define DB_LOGMAGIC 0x040988
-
-/*
- * DB access method and cursor operation values. Each value is an operation
- * code to which additional bit flags are added.
- */
-#define DB_AFTER 1 /* c_put() */
-#define DB_APPEND 2 /* put() */
-#define DB_BEFORE 3 /* c_put() */
-#define DB_CACHED_COUNTS 4 /* stat() */
-#define DB_CHECKPOINT 5 /* log_put(), log_get() */
-#define DB_CONSUME 6 /* get() */
-#define DB_CONSUME_WAIT 7 /* get() */
-#define DB_CURLSN 8 /* log_put() */
-#define DB_CURRENT 9 /* c_get(), c_put(), log_get() */
-#define DB_FIRST 10 /* c_get(), log_get() */
-#define DB_FLUSH 11 /* log_put() */
-#define DB_GET_BOTH 12 /* get(), c_get() */
-#define DB_GET_BOTHC 13 /* c_get() (internal) */
-#define DB_GET_RECNO 14 /* c_get() */
-#define DB_JOIN_ITEM 15 /* c_get(); do not do primary lookup */
-#define DB_KEYFIRST 16 /* c_put() */
-#define DB_KEYLAST 17 /* c_put() */
-#define DB_LAST 18 /* c_get(), log_get() */
-#define DB_NEXT 19 /* c_get(), log_get() */
-#define DB_NEXT_DUP 20 /* c_get() */
-#define DB_NEXT_NODUP 21 /* c_get() */
-#define DB_NODUPDATA 22 /* put(), c_put() */
-#define DB_NOOVERWRITE 23 /* put() */
-#define DB_NOSYNC 24 /* close() */
-#define DB_POSITION 25 /* c_dup() */
-#define DB_POSITIONI 26 /* c_dup() (internal) */
-#define DB_PREV 27 /* c_get(), log_get() */
-#define DB_PREV_NODUP 28 /* c_get(), log_get() */
-#define DB_RECORDCOUNT 29 /* stat() */
-#define DB_SET 30 /* c_get(), log_get() */
-#define DB_SET_RANGE 31 /* c_get() */
-#define DB_SET_RECNO 32 /* get(), c_get() */
-#define DB_WRITECURSOR 33 /* cursor() */
-#define DB_WRITELOCK 34 /* cursor() (internal) */
-
-/* This has to change when the max opcode hits 255. */
-#define DB_OPFLAGS_MASK 0x000000ff /* Mask for operations flags. */
-#define DB_RMW 0x80000000 /* Acquire write flag immediately. */
-
-/*
- * DB (user visible) error return codes.
- *
- * !!!
- * Changes to any of the user visible error return codes must be reflected
- * in java/src/com/sleepycat/db/Db.java.
- *
- * !!!
- * For source compatibility with DB 2.X deadlock return (EAGAIN), use the
- * following:
- * #include <errno.h>
- * #define DB_LOCK_DEADLOCK EAGAIN
- *
- * !!!
- * We don't want our error returns to conflict with other packages where
- * possible, so pick a base error value that's hopefully not common. We
- * document that we own the error name space from -30,800 to -30,999.
- */
-/* Public error return codes. */
-#define DB_INCOMPLETE (-30999)/* Sync didn't finish. */
-#define DB_KEYEMPTY (-30998)/* Key/data deleted or never created. */
-#define DB_KEYEXIST (-30997)/* The key/data pair already exists. */
-#define DB_LOCK_DEADLOCK (-30996)/* Deadlock. */
-#define DB_LOCK_NOTGRANTED (-30995)/* Lock unavailable. */
-#define DB_NOSERVER (-30994)/* Server panic return. */
-#define DB_NOSERVER_HOME (-30993)/* Bad home sent to server. */
-#define DB_NOSERVER_ID (-30992)/* Bad ID sent to server. */
-#define DB_NOTFOUND (-30991)/* Key/data pair not found (EOF). */
-#define DB_OLD_VERSION (-30990)/* Out-of-date version. */
-#define DB_RUNRECOVERY (-30989)/* Panic return. */
-#define DB_VERIFY_BAD (-30988)/* Verify failed; bad format. */
-
-/* DB (private) error return codes. */
-#define DB_ALREADY_ABORTED (-30899)
-#define DB_DELETED (-30898)/* Recovery file marked deleted. */
-#define DB_JAVA_CALLBACK (-30897)/* Exception during a java callback. */
-#define DB_NEEDSPLIT (-30896)/* Page needs to be split. */
-#define DB_SWAPBYTES (-30895)/* Database needs byte swapping. */
-#define DB_TXN_CKP (-30894)/* Encountered ckp record in log. */
-#define DB_VERIFY_FATAL (-30893)/* Fatal: DB->verify cannot proceed. */
-
-#define DB_FILE_ID_LEN 20 /* DB file ID length. */
-
-/* DB access method description structure. */
-struct __db {
- /*******************************************************
- * Public: owned by the application.
- *******************************************************/
- u_int32_t pgsize; /* Database logical page size. */
-
- /* Callbacks. */
- int (*db_append_recno) __P((DB *, DBT *, db_recno_t));
- void (*db_feedback) __P((DB *, int, int));
- void *(*db_malloc) __P((size_t));
- void *(*db_realloc) __P((void *, size_t));
- int (*dup_compare) __P((DB *, const DBT *, const DBT *));
-
- void *app_private; /* Application-private handle. */
-
- /*******************************************************
- * Private: owned by DB.
- *******************************************************/
- DB_ENV *dbenv; /* Backing environment. */
-
- DBTYPE type; /* DB access method type. */
-
- DB_MPOOLFILE *mpf; /* Backing buffer pool. */
-
- void *mutexp; /* Synchronization for free threading */
-
- u_int8_t fileid[DB_FILE_ID_LEN];/* File's unique ID for locking. */
-
- u_int32_t adj_fileid; /* File's unique ID for curs. adj. */
-
-#define DB_LOGFILEID_INVALID -1
- int32_t log_fileid; /* File's unique ID for logging. */
- db_pgno_t meta_pgno; /* Meta page number */
- DB_TXN *open_txn; /* Transaction to protect creates. */
-
- long cl_id; /* RPC: remote client id. */
-
- /*
- * !!!
- * Some applications use DB but implement their own locking outside of
- * DB. If they're using fcntl(2) locking on the underlying database
- * file, and we open and close a file descriptor for that file, we will
- * discard their locks. The DB_FCNTL_LOCKING flag to DB->open is an
- * undocumented interface to support this usage which leaves any file
- * descriptors we open until DB->close. This will only work with the
- * DB->open interface and simple caches, e.g., creating a transaction
- * thread may open/close file descriptors this flag doesn't protect.
- * Locking with fcntl(2) on a file that you don't own is a very, very
- * unsafe thing to do. 'Nuff said.
- */
- DB_FH *saved_open_fhp; /* Saved file handle. */
-
- /*
- * Linked list of DBP's, used in the log's dbentry table
- * to keep track of all open db handles for a given log id.
- * !!!
- * Explicit representations of structures in queue.h.
- *
- * TAILQ_ENTRY(__db) links;
- */
- struct {
- struct __db *tqe_next;
- struct __db **tqe_prev;
- } links;
-
- /*
- * Linked list of DBP's, linked from the DB_ENV, used to
- * keep track of all open db handles for cursor adjustment.
- *
- * XXX
- * Eventually, this should be merged with "links" above.
- *
- * !!!
- * Explicit representations of structures in queue.h.
- *
- * LIST_ENTRY(__db) dblistlinks;
- */
- struct {
- struct __db *le_next;
- struct __db **le_prev;
- } dblistlinks;
-
- /*
- * Cursor queues.
- *
- * !!!
- * Explicit representations of structures in queue.h.
- *
- * TAILQ_HEAD(free_queue, __dbc);
- * TAILQ_HEAD(active_queue, __dbc);
- * TAILQ_HEAD(join_queue, __dbc);
- */
- struct {
- struct __dbc *tqh_first;
- struct __dbc **tqh_last;
- } free_queue;
- struct {
- struct __dbc *tqh_first;
- struct __dbc **tqh_last;
- } active_queue;
- struct {
- struct __dbc *tqh_first;
- struct __dbc **tqh_last;
- } join_queue;
-
- void *bt_internal; /* Btree/Recno access method private. */
- void *cj_internal; /* C++/Java private. */
- void *h_internal; /* Hash access method private. */
- void *q_internal; /* Queue access method private. */
- void *xa_internal; /* XA private. */
-
- /* Methods. */
- int (*close) __P((DB *, u_int32_t));
- int (*cursor) __P((DB *, DB_TXN *, DBC **, u_int32_t));
- int (*del) __P((DB *, DB_TXN *, DBT *, u_int32_t));
- void (*err) __P((DB *, int, const char *, ...));
- void (*errx) __P((DB *, const char *, ...));
- int (*fd) __P((DB *, int *));
- int (*get) __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t));
- int (*get_byteswapped) __P((DB *));
- DBTYPE
- (*get_type) __P((DB *));
- int (*join) __P((DB *, DBC **, DBC **, u_int32_t));
- int (*key_range) __P((DB *,
- DB_TXN *, DBT *, DB_KEY_RANGE *, u_int32_t));
- int (*open) __P((DB *,
- const char *, const char *, DBTYPE, u_int32_t, int));
- int (*put) __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t));
- int (*remove) __P((DB *, const char *, const char *, u_int32_t));
- int (*rename) __P((DB *,
- const char *, const char *, const char *, u_int32_t));
- int (*set_append_recno) __P((DB *, int (*)(DB *, DBT *, db_recno_t)));
- int (*set_cachesize) __P((DB *, u_int32_t, u_int32_t, int));
- int (*set_dup_compare) __P((DB *,
- int (*)(DB *, const DBT *, const DBT *)));
- void (*set_errcall) __P((DB *, void (*)(const char *, char *)));
- void (*set_errfile) __P((DB *, FILE *));
- void (*set_errpfx) __P((DB *, const char *));
- int (*set_feedback) __P((DB *, void (*)(DB *, int, int)));
- int (*set_flags) __P((DB *, u_int32_t));
- int (*set_lorder) __P((DB *, int));
- int (*set_malloc) __P((DB *, void *(*)(size_t)));
- int (*set_pagesize) __P((DB *, u_int32_t));
- int (*set_paniccall) __P((DB *, void (*)(DB_ENV *, int)));
- int (*set_realloc) __P((DB *, void *(*)(void *, size_t)));
- int (*stat) __P((DB *, void *, void *(*)(size_t), u_int32_t));
- int (*sync) __P((DB *, u_int32_t));
- int (*upgrade) __P((DB *, const char *, u_int32_t));
- int (*verify) __P((DB *,
- const char *, const char *, FILE *, u_int32_t));
-
- int (*set_bt_compare) __P((DB *,
- int (*)(DB *, const DBT *, const DBT *)));
- int (*set_bt_maxkey) __P((DB *, u_int32_t));
- int (*set_bt_minkey) __P((DB *, u_int32_t));
- int (*set_bt_prefix) __P((DB *,
- size_t (*)(DB *, const DBT *, const DBT *)));
-
- int (*set_h_ffactor) __P((DB *, u_int32_t));
- int (*set_h_hash) __P((DB *,
- u_int32_t (*)(DB *, const void *, u_int32_t)));
- int (*set_h_nelem) __P((DB *, u_int32_t));
-
- int (*set_re_delim) __P((DB *, int));
- int (*set_re_len) __P((DB *, u_int32_t));
- int (*set_re_pad) __P((DB *, int));
- int (*set_re_source) __P((DB *, const char *));
- int (*set_q_extentsize) __P((DB *, u_int32_t));
-
- int (*db_am_remove) __P((DB *, const char *,
- const char *, DB_LSN *, int (**)(DB *, void*), void **));
- int (*db_am_rename) __P((DB *,
- const char *, const char *, const char *));
-
-#define DB_OK_BTREE 0x01
-#define DB_OK_HASH 0x02
-#define DB_OK_QUEUE 0x04
-#define DB_OK_RECNO 0x08
- u_int32_t am_ok; /* Legal AM choices. */
-
-#define DB_AM_DISCARD 0x00001 /* Discard any cached pages. */
-#define DB_AM_DUP 0x00002 /* DB_DUP. */
-#define DB_AM_DUPSORT 0x00004 /* DB_DUPSORT. */
-#define DB_AM_INMEM 0x00008 /* In-memory; no sync on close. */
-#define DB_AM_PGDEF 0x00010 /* Page size was defaulted. */
-#define DB_AM_RDONLY 0x00020 /* Database is readonly. */
-#define DB_AM_RECOVER 0x00040 /* DBP opened by recovery routine. */
-#define DB_AM_SUBDB 0x00080 /* Subdatabases supported. */
-#define DB_AM_SWAP 0x00100 /* Pages need to be byte-swapped. */
-#define DB_AM_TXN 0x00200 /* DBP was in a transaction. */
-#define DB_AM_VERIFYING 0x00400 /* DB handle is in the verifier. */
-#define DB_BT_RECNUM 0x00800 /* DB_RECNUM. */
-#define DB_BT_REVSPLIT 0x01000 /* DB_REVSPLITOFF. */
-#define DB_DBM_ERROR 0x02000 /* Error in DBM/NDBM database. */
-#define DB_OPEN_CALLED 0x04000 /* DB->open called. */
-#define DB_RE_DELIMITER 0x08000 /* Variablen length delimiter set. */
-#define DB_RE_FIXEDLEN 0x10000 /* Fixed-length records. */
-#define DB_RE_PAD 0x20000 /* Fixed-length record pad. */
-#define DB_RE_RENUMBER 0x40000 /* DB_RENUMBER. */
-#define DB_RE_SNAPSHOT 0x80000 /* DB_SNAPSHOT. */
- u_int32_t flags;
-};
-
-/*
- * DB_LOCK_ILOCK --
- * Internal DB access method lock.
- */
-struct __db_ilock {
- db_pgno_t pgno; /* Page being locked. */
- u_int8_t fileid[DB_FILE_ID_LEN];/* File id. */
-#define DB_RECORD_LOCK 1
-#define DB_PAGE_LOCK 2
- u_int8_t type; /* Record or Page lock */
-};
-
-/*
- * DB_LOCK --
- * The structure is allocated by the caller and filled in during a
- * lock_get request (or a lock_vec/DB_LOCK_GET).
- */
-struct __db_lock_u {
- size_t off; /* Offset of the lock in the region */
- u_int32_t ndx; /* Index of the object referenced by
- * this lock; used for locking. */
- u_int32_t gen; /* Generation number of this lock. */
-};
-
-/* Cursor description structure. */
-struct __dbc {
- DB *dbp; /* Related DB access method. */
- DB_TXN *txn; /* Associated transaction. */
-
- /*
- * !!!
- * Explicit representations of structures in queue.h.
- *
- * TAILQ_ENTRY(__dbc) links; Active/free cursor queues.
- */
- struct {
- DBC *tqe_next;
- DBC **tqe_prev;
- } links;
-
- DBT rkey; /* Returned key. */
- DBT rdata; /* Returned data. */
-
- u_int32_t lid; /* Default process' locker id. */
- u_int32_t locker; /* Locker for this operation. */
- DBT lock_dbt; /* DBT referencing lock. */
- DB_LOCK_ILOCK lock; /* Object to be locked. */
- DB_LOCK mylock; /* Lock held on this cursor. */
-
- long cl_id; /* Remote client id. */
-
- DBTYPE dbtype; /* Cursor type. */
-
- DBC_INTERNAL *internal; /* Access method private. */
-
- int (*c_close) __P((DBC *)); /* Methods: public. */
- int (*c_count) __P((DBC *, db_recno_t *, u_int32_t));
- int (*c_del) __P((DBC *, u_int32_t));
- int (*c_dup) __P((DBC *, DBC **, u_int32_t));
- int (*c_get) __P((DBC *, DBT *, DBT *, u_int32_t));
- int (*c_put) __P((DBC *, DBT *, DBT *, u_int32_t));
-
- /* Methods: private. */
- int (*c_am_close) __P((DBC *, db_pgno_t, int *));
- int (*c_am_del) __P((DBC *));
- int (*c_am_destroy) __P((DBC *));
- int (*c_am_get) __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *));
- int (*c_am_put) __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *));
- int (*c_am_writelock) __P((DBC *));
-
-#define DBC_ACTIVE 0x001 /* Cursor is being used. */
-#define DBC_OPD 0x002 /* Cursor references off-page dups. */
-#define DBC_RECOVER 0x004 /* Cursor created by recovery routine
- * (do not log or lock).
- */
-#define DBC_RMW 0x008 /* Acquire write flag in read op. */
-#define DBC_WRITECURSOR 0x010 /* Cursor may be used to write (CDB). */
-#define DBC_WRITEDUP 0x020 /* idup'ed DBC_WRITECURSOR (CDB). */
-#define DBC_WRITER 0x040 /* Cursor immediately writing (CDB). */
-#define DBC_TRANSIENT 0x080 /* Cursor is transient. */
-#define DBC_COMPENSATE 0x100 /* Cursor is doing compensation
- * do not lock.
- */
- u_int32_t flags;
-};
-
-/* Key range statistics structure */
-struct __key_range {
- double less;
- double equal;
- double greater;
-};
-
-/* Btree/Recno statistics structure. */
-struct __db_bt_stat {
- u_int32_t bt_magic; /* Magic number. */
- u_int32_t bt_version; /* Version number. */
- u_int32_t bt_metaflags; /* Metadata flags. */
- u_int32_t bt_nkeys; /* Number of unique keys. */
- u_int32_t bt_ndata; /* Number of data items. */
- u_int32_t bt_pagesize; /* Page size. */
- u_int32_t bt_maxkey; /* Maxkey value. */
- u_int32_t bt_minkey; /* Minkey value. */
- u_int32_t bt_re_len; /* Fixed-length record length. */
- u_int32_t bt_re_pad; /* Fixed-length record pad. */
- u_int32_t bt_levels; /* Tree levels. */
- u_int32_t bt_int_pg; /* Internal pages. */
- u_int32_t bt_leaf_pg; /* Leaf pages. */
- u_int32_t bt_dup_pg; /* Duplicate pages. */
- u_int32_t bt_over_pg; /* Overflow pages. */
- u_int32_t bt_free; /* Pages on the free list. */
- u_int32_t bt_int_pgfree; /* Bytes free in internal pages. */
- u_int32_t bt_leaf_pgfree; /* Bytes free in leaf pages. */
- u_int32_t bt_dup_pgfree; /* Bytes free in duplicate pages. */
- u_int32_t bt_over_pgfree; /* Bytes free in overflow pages. */
-};
-
-/* Queue statistics structure. */
-struct __db_qam_stat {
- u_int32_t qs_magic; /* Magic number. */
- u_int32_t qs_version; /* Version number. */
- u_int32_t qs_metaflags; /* Metadata flags. */
- u_int32_t qs_nkeys; /* Number of unique keys. */
- u_int32_t qs_ndata; /* Number of data items. */
- u_int32_t qs_pagesize; /* Page size. */
- u_int32_t qs_pages; /* Data pages. */
- u_int32_t qs_re_len; /* Fixed-length record length. */
- u_int32_t qs_re_pad; /* Fixed-length record pad. */
- u_int32_t qs_pgfree; /* Bytes free in data pages. */
- u_int32_t qs_first_recno; /* First not deleted record. */
- u_int32_t qs_cur_recno; /* Last allocated record number. */
-};
-
-/* Hash statistics structure. */
-struct __db_h_stat {
- u_int32_t hash_magic; /* Magic number. */
- u_int32_t hash_version; /* Version number. */
- u_int32_t hash_metaflags; /* Metadata flags. */
- u_int32_t hash_nkeys; /* Number of unique keys. */
- u_int32_t hash_ndata; /* Number of data items. */
- u_int32_t hash_pagesize; /* Page size. */
- u_int32_t hash_nelem; /* Original nelem specified. */
- u_int32_t hash_ffactor; /* Fill factor specified at create. */
- u_int32_t hash_buckets; /* Number of hash buckets. */
- u_int32_t hash_free; /* Pages on the free list. */
- u_int32_t hash_bfree; /* Bytes free on bucket pages. */
- u_int32_t hash_bigpages; /* Number of big key/data pages. */
- u_int32_t hash_big_bfree; /* Bytes free on big item pages. */
- u_int32_t hash_overflows; /* Number of overflow pages. */
- u_int32_t hash_ovfl_free; /* Bytes free on ovfl pages. */
- u_int32_t hash_dup; /* Number of dup pages. */
- u_int32_t hash_dup_free; /* Bytes free on duplicate pages. */
-};
-
-int db_create __P((DB **, DB_ENV *, u_int32_t));
-int db_env_create __P((DB_ENV **, u_int32_t));
-int db_env_set_func_close __P((int (*)(int)));
-int db_env_set_func_dirfree __P((void (*)(char **, int)));
-int db_env_set_func_dirlist __P((int (*)(const char *, char ***, int *)));
-int db_env_set_func_exists __P((int (*)(const char *, int *)));
-int db_env_set_func_free __P((void (*)(void *)));
-int db_env_set_func_fsync __P((int (*)(int)));
-int db_env_set_func_ioinfo __P((int (*)(const char *,
- int, u_int32_t *, u_int32_t *, u_int32_t *)));
-int db_env_set_func_malloc __P((void *(*)(size_t)));
-int db_env_set_func_map __P((int (*)(char *, size_t, int, int, void **)));
-int db_env_set_func_open __P((int (*)(const char *, int, ...)));
-int db_env_set_func_read __P((ssize_t (*)(int, void *, size_t)));
-int db_env_set_func_realloc __P((void *(*)(void *, size_t)));
-int db_env_set_func_rename __P((int (*)(const char *, const char *)));
-int db_env_set_func_seek
- __P((int (*)(int, size_t, db_pgno_t, u_int32_t, int, int)));
-int db_env_set_func_sleep __P((int (*)(u_long, u_long)));
-int db_env_set_func_unlink __P((int (*)(const char *)));
-int db_env_set_func_unmap __P((int (*)(void *, size_t)));
-int db_env_set_func_write __P((ssize_t (*)(int, const void *, size_t)));
-int db_env_set_func_yield __P((int (*)(void)));
-int db_env_set_pageyield __P((int));
-int db_env_set_panicstate __P((int));
-int db_env_set_region_init __P((int));
-int db_env_set_tas_spins __P((u_int32_t));
-char *db_strerror __P((int));
-char *db_version __P((int *, int *, int *));
-
-/*******************************************************
- * Locking
- *******************************************************/
-#define DB_LOCKVERSION 1
-
-/* Flag values for lock_vec(), lock_get(). */
-#define DB_LOCK_NOWAIT 0x01 /* Don't wait on unavailable lock. */
-#define DB_LOCK_RECORD 0x02 /* Internal: record lock. */
-#define DB_LOCK_UPGRADE 0x04 /* Internal: upgrade existing lock. */
-#define DB_LOCK_SWITCH 0x08 /* Internal: switch existing lock. */
-
-/* Flag values for lock_detect(). */
-#define DB_LOCK_CONFLICT 0x01 /* Run on any conflict. */
-
-/*
- * Request types.
- *
- * !!!
- * Changes here must be reflected in java/src/com/sleepycat/db/Db.java.
- */
-typedef enum {
- DB_LOCK_DUMP=0, /* Display held locks. */
- DB_LOCK_GET, /* Get the lock. */
- DB_LOCK_INHERIT, /* Pass locks to parent. */
- DB_LOCK_PUT, /* Release the lock. */
- DB_LOCK_PUT_ALL, /* Release locker's locks. */
- DB_LOCK_PUT_OBJ /* Release locker's locks on obj. */
-} db_lockop_t;
-
-/*
- * Simple R/W lock modes and for multi-granularity intention locking.
- *
- * !!!
- * These values are NOT random, as they are used as an index into the lock
- * conflicts arrays, i.e., DB_LOCK_IWRITE must be == 3, and DB_LOCK_IREAD
- * must be == 4.
- *
- * !!!
- * Changes here must be reflected in java/src/com/sleepycat/db/Db.java.
- */
-typedef enum {
- DB_LOCK_NG=0, /* Not granted. */
- DB_LOCK_READ, /* Shared/read. */
- DB_LOCK_WRITE, /* Exclusive/write. */
- DB_LOCK_WAIT, /* Wait for event */
- DB_LOCK_IWRITE, /* Intent exclusive/write. */
- DB_LOCK_IREAD, /* Intent to share/read. */
- DB_LOCK_IWR /* Intent to read and write. */
-} db_lockmode_t;
-
-/*
- * Status of a lock.
- */
-typedef enum {
- DB_LSTAT_ABORTED, /* Lock belongs to an aborted txn. */
- DB_LSTAT_ERR, /* Lock is bad. */
- DB_LSTAT_FREE, /* Lock is unallocated. */
- DB_LSTAT_HELD, /* Lock is currently held. */
- DB_LSTAT_NOGRANT, /* Lock was not granted. */
- DB_LSTAT_PENDING, /* Lock was waiting and has been
- * promoted; waiting for the owner
- * to run and upgrade it to held. */
- DB_LSTAT_WAITING /* Lock is on the wait queue. */
-} db_status_t;
-
-/* Lock request structure. */
-struct __db_lockreq {
- db_lockop_t op; /* Operation. */
- db_lockmode_t mode; /* Requested mode. */
- u_int32_t locker; /* Locker identity. */
- DBT *obj; /* Object being locked. */
- DB_LOCK lock; /* Lock returned. */
-};
-
-/*
- * Commonly used conflict matrices.
- *
- */
-
-/* Multi-granularity locking. */
-#define DB_LOCK_RIW_N 7
-extern const u_int8_t db_riw_conflicts[];
-
-struct __db_lock_stat {
- u_int32_t st_lastid; /* Last allocated locker ID. */
- u_int32_t st_maxlocks; /* Maximum number of locks in table. */
- u_int32_t st_maxlockers; /* Maximum number of lockers in table. */
- u_int32_t st_maxobjects; /* Maximum number of objects in table. */
- u_int32_t st_nmodes; /* Number of lock modes. */
- u_int32_t st_nlocks; /* Current number of locks. */
- u_int32_t st_maxnlocks; /* Maximum number of locks so far. */
- u_int32_t st_nlockers; /* Current number of lockers. */
- u_int32_t st_maxnlockers; /* Maximum number of lockers so far. */
- u_int32_t st_nobjects; /* Current number of objects. */
- u_int32_t st_maxnobjects; /* Maximum number of objects so far. */
- u_int32_t st_nconflicts; /* Number of lock conflicts. */
- u_int32_t st_nrequests; /* Number of lock gets. */
- u_int32_t st_nreleases; /* Number of lock puts. */
- u_int32_t st_nnowaits; /* Number of requests that would have
- waited, but NOWAIT was set. */
- u_int32_t st_ndeadlocks; /* Number of lock deadlocks. */
- u_int32_t st_region_wait; /* Region lock granted after wait. */
- u_int32_t st_region_nowait; /* Region lock granted without wait. */
- u_int32_t st_regsize; /* Region size. */
-};
-
-int lock_detect __P((DB_ENV *, u_int32_t, u_int32_t, int *));
-int lock_get __P((DB_ENV *,
- u_int32_t, u_int32_t, const DBT *, db_lockmode_t, DB_LOCK *));
-int lock_id __P((DB_ENV *, u_int32_t *));
-int lock_put __P((DB_ENV *, DB_LOCK *));
-int lock_stat __P((DB_ENV *, DB_LOCK_STAT **, void *(*)(size_t)));
-int lock_vec __P((DB_ENV *,
- u_int32_t, u_int32_t, DB_LOCKREQ *, int, DB_LOCKREQ **));
-
-/*******************************************************
- * Logging.
- *******************************************************/
-/* Flag values for log_archive(). */
-#define DB_ARCH_ABS 0x001 /* Absolute pathnames. */
-#define DB_ARCH_DATA 0x002 /* Data files. */
-#define DB_ARCH_LOG 0x004 /* Log files. */
-
-/*
- * A DB_LSN has two parts, a fileid which identifies a specific file, and an
- * offset within that file. The fileid is an unsigned 4-byte quantity that
- * uniquely identifies a file within the log directory -- currently a simple
- * counter inside the log. The offset is also an unsigned 4-byte value. The
- * log manager guarantees the offset is never more than 4 bytes by switching
- * to a new log file before the maximum length imposed by an unsigned 4-byte
- * offset is reached.
- */
-struct __db_lsn {
- u_int32_t file; /* File ID. */
- u_int32_t offset; /* File offset. */
-};
-
-/* Log statistics structure. */
-struct __db_log_stat {
- u_int32_t st_magic; /* Log file magic number. */
- u_int32_t st_version; /* Log file version number. */
- int st_mode; /* Log file mode. */
- u_int32_t st_lg_bsize; /* Log buffer size. */
- u_int32_t st_lg_max; /* Maximum log file size. */
- u_int32_t st_w_bytes; /* Bytes to log. */
- u_int32_t st_w_mbytes; /* Megabytes to log. */
- u_int32_t st_wc_bytes; /* Bytes to log since checkpoint. */
- u_int32_t st_wc_mbytes; /* Megabytes to log since checkpoint. */
- u_int32_t st_wcount; /* Total writes to the log. */
- u_int32_t st_wcount_fill; /* Overflow writes to the log. */
- u_int32_t st_scount; /* Total syncs to the log. */
- u_int32_t st_region_wait; /* Region lock granted after wait. */
- u_int32_t st_region_nowait; /* Region lock granted without wait. */
- u_int32_t st_cur_file; /* Current log file number. */
- u_int32_t st_cur_offset; /* Current log file offset. */
- u_int32_t st_regsize; /* Region size. */
-};
-
-int log_archive __P((DB_ENV *, char **[], u_int32_t, void *(*)(size_t)));
-int log_compare __P((const DB_LSN *, const DB_LSN *));
-int log_file __P((DB_ENV *, const DB_LSN *, char *, size_t));
-int log_flush __P((DB_ENV *, const DB_LSN *));
-int log_get __P((DB_ENV *, DB_LSN *, DBT *, u_int32_t));
-int log_put __P((DB_ENV *, DB_LSN *, const DBT *, u_int32_t));
-int log_register __P((DB_ENV *, DB *, const char *));
-int log_stat __P((DB_ENV *, DB_LOG_STAT **, void *(*)(size_t)));
-int log_unregister __P((DB_ENV *, DB *));
-
-/*******************************************************
- * Mpool
- *******************************************************/
-/* Flag values for memp_fget(). */
-#define DB_MPOOL_CREATE 0x001 /* Create a page. */
-#define DB_MPOOL_LAST 0x002 /* Return the last page. */
-#define DB_MPOOL_NEW 0x004 /* Create a new page. */
-#define DB_MPOOL_NEW_GROUP 0x008 /* Create a group of pages. */
-#define DB_MPOOL_EXTENT 0x010 /* Get for an extent. */
-
-/* Flag values for memp_fput(), memp_fset(). */
-#define DB_MPOOL_CLEAN 0x001 /* Page is not modified. */
-#define DB_MPOOL_DIRTY 0x002 /* Page is modified. */
-#define DB_MPOOL_DISCARD 0x004 /* Don't cache the page. */
-
-/* Mpool statistics structure. */
-struct __db_mpool_stat {
- u_int32_t st_cache_hit; /* Pages found in the cache. */
- u_int32_t st_cache_miss; /* Pages not found in the cache. */
- u_int32_t st_map; /* Pages from mapped files. */
- u_int32_t st_page_create; /* Pages created in the cache. */
- u_int32_t st_page_in; /* Pages read in. */
- u_int32_t st_page_out; /* Pages written out. */
- u_int32_t st_ro_evict; /* Clean pages forced from the cache. */
- u_int32_t st_rw_evict; /* Dirty pages forced from the cache. */
- u_int32_t st_hash_buckets; /* Number of hash buckets. */
- u_int32_t st_hash_searches; /* Total hash chain searches. */
- u_int32_t st_hash_longest; /* Longest hash chain searched. */
- u_int32_t st_hash_examined; /* Total hash entries searched. */
- u_int32_t st_page_clean; /* Clean pages. */
- u_int32_t st_page_dirty; /* Dirty pages. */
- u_int32_t st_page_trickle; /* Pages written by memp_trickle. */
- u_int32_t st_region_wait; /* Region lock granted after wait. */
- u_int32_t st_region_nowait; /* Region lock granted without wait. */
- u_int32_t st_gbytes; /* Total cache size: GB. */
- u_int32_t st_bytes; /* Total cache size: B. */
- u_int32_t st_ncache; /* Number of caches. */
- u_int32_t st_regsize; /* Cache size. */
-};
-
-/* Mpool file open information structure. */
-struct __db_mpool_finfo {
- int ftype; /* File type. */
- DBT *pgcookie; /* Byte-string passed to pgin/pgout. */
- u_int8_t *fileid; /* Unique file ID. */
- int32_t lsn_offset; /* LSN offset in page. */
- u_int32_t clear_len; /* Cleared length on created pages. */
-};
-
-/* Mpool file statistics structure. */
-struct __db_mpool_fstat {
- char *file_name; /* File name. */
- size_t st_pagesize; /* Page size. */
- u_int32_t st_cache_hit; /* Pages found in the cache. */
- u_int32_t st_cache_miss; /* Pages not found in the cache. */
- u_int32_t st_map; /* Pages from mapped files. */
- u_int32_t st_page_create; /* Pages created in the cache. */
- u_int32_t st_page_in; /* Pages read in. */
- u_int32_t st_page_out; /* Pages written out. */
-};
-
-int memp_fclose __P((DB_MPOOLFILE *));
-int memp_fget __P((DB_MPOOLFILE *, db_pgno_t *, u_int32_t, void *));
-int memp_fopen __P((DB_ENV *, const char *,
- u_int32_t, int, size_t, DB_MPOOL_FINFO *, DB_MPOOLFILE **));
-int memp_fput __P((DB_MPOOLFILE *, void *, u_int32_t));
-int memp_fset __P((DB_MPOOLFILE *, void *, u_int32_t));
-int memp_fsync __P((DB_MPOOLFILE *));
-int memp_register __P((DB_ENV *, int,
- int (*)(DB_ENV *, db_pgno_t, void *, DBT *),
- int (*)(DB_ENV *, db_pgno_t, void *, DBT *)));
-int memp_stat __P((DB_ENV *,
- DB_MPOOL_STAT **, DB_MPOOL_FSTAT ***, void *(*)(size_t)));
-int memp_sync __P((DB_ENV *, DB_LSN *));
-int memp_trickle __P((DB_ENV *, int, int *));
-
-/*******************************************************
- * Transactions.
- *******************************************************/
-#define DB_TXNVERSION 1
-
-/* Operations values to the tx_recover() function. */
-#define DB_TXN_BACKWARD_ROLL 1 /* Read the log backwards. */
-#define DB_TXN_FORWARD_ROLL 2 /* Read the log forwards. */
-#define DB_TXN_OPENFILES 3 /* Read for open files. */
-#define DB_TXN_REDO 4 /* Redo the operation. */
-#define DB_TXN_UNDO 5 /* Undo the operation. */
-
-/* Internal transaction status values. */
-
-/* Transaction statistics structure. */
-struct __db_txn_active {
- u_int32_t txnid; /* Transaction ID */
- u_int32_t parentid; /* Transaction ID of parent */
- DB_LSN lsn; /* Lsn of the begin record */
-};
-
-struct __db_txn_stat {
- DB_LSN st_last_ckp; /* lsn of the last checkpoint */
- DB_LSN st_pending_ckp; /* last checkpoint did not finish */
- time_t st_time_ckp; /* time of last checkpoint */
- u_int32_t st_last_txnid; /* last transaction id given out */
- u_int32_t st_maxtxns; /* maximum txns possible */
- u_int32_t st_naborts; /* number of aborted transactions */
- u_int32_t st_nbegins; /* number of begun transactions */
- u_int32_t st_ncommits; /* number of committed transactions */
- u_int32_t st_nactive; /* number of active transactions */
- u_int32_t st_maxnactive; /* maximum active transactions */
- DB_TXN_ACTIVE
- *st_txnarray; /* array of active transactions */
- u_int32_t st_region_wait; /* Region lock granted after wait. */
- u_int32_t st_region_nowait; /* Region lock granted without wait. */
- u_int32_t st_regsize; /* Region size. */
-};
-
-int txn_abort __P((DB_TXN *));
-int txn_begin __P((DB_ENV *, DB_TXN *, DB_TXN **, u_int32_t));
-int txn_checkpoint __P((DB_ENV *, u_int32_t, u_int32_t, u_int32_t));
-int txn_commit __P((DB_TXN *, u_int32_t));
-u_int32_t txn_id __P((DB_TXN *));
-int txn_prepare __P((DB_TXN *));
-int txn_stat __P((DB_ENV *, DB_TXN_STAT **, void *(*)(size_t)));
-
-#ifndef DB_DBM_HSEARCH
-#define DB_DBM_HSEARCH 0 /* No historic interfaces by default. */
-#endif
-#if DB_DBM_HSEARCH != 0
-/*******************************************************
- * Dbm/Ndbm historic interfaces.
- *******************************************************/
-#define DBM_INSERT 0 /* Flags to dbm_store(). */
-#define DBM_REPLACE 1
-
-/*
- * The DB support for ndbm(3) always appends this suffix to the
- * file name to avoid overwriting the user's original database.
- */
-#define DBM_SUFFIX ".db"
-
-#if defined(_XPG4_2)
-typedef struct {
- char *dptr;
- size_t dsize;
-} datum;
-#else
-typedef struct {
- char *dptr;
- int dsize;
-} datum;
-#endif
-
-/*
- * Translate DBM calls into DB calls so that DB doesn't step on the
- * application's name space.
- *
- * The global variables dbrdonly, dirf and pagf were not retained when 4BSD
- * replaced the dbm interface with ndbm, and are not supported here.
- */
-#define dbminit(a) __db_dbm_init(a)
-#define dbmclose __db_dbm_close
-#if !defined(__cplusplus)
-#define delete(a) __db_dbm_delete(a)
-#endif
-#define fetch(a) __db_dbm_fetch(a)
-#define firstkey __db_dbm_firstkey
-#define nextkey(a) __db_dbm_nextkey(a)
-#define store(a, b) __db_dbm_store(a, b)
-
-/* Prototype the DB calls. */
-int __db_dbm_close __P((void));
-int __db_dbm_dbrdonly __P((void));
-int __db_dbm_delete __P((datum));
-int __db_dbm_dirf __P((void));
-datum __db_dbm_fetch __P((datum));
-datum __db_dbm_firstkey __P((void));
-int __db_dbm_init __P((char *));
-datum __db_dbm_nextkey __P((datum));
-int __db_dbm_pagf __P((void));
-int __db_dbm_store __P((datum, datum));
-
-/*
- * Translate NDBM calls into DB calls so that DB doesn't step on the
- * application's name space.
- */
-#define dbm_clearerr(a) __db_ndbm_clearerr(a)
-#define dbm_close(a) __db_ndbm_close(a)
-#define dbm_delete(a, b) __db_ndbm_delete(a, b)
-#define dbm_dirfno(a) __db_ndbm_dirfno(a)
-#define dbm_error(a) __db_ndbm_error(a)
-#define dbm_fetch(a, b) __db_ndbm_fetch(a, b)
-#define dbm_firstkey(a) __db_ndbm_firstkey(a)
-#define dbm_nextkey(a) __db_ndbm_nextkey(a)
-#define dbm_open(a, b, c) __db_ndbm_open(a, b, c)
-#define dbm_pagfno(a) __db_ndbm_pagfno(a)
-#define dbm_rdonly(a) __db_ndbm_rdonly(a)
-#define dbm_store(a, b, c, d) __db_ndbm_store(a, b, c, d)
-
-/* Prototype the DB calls. */
-int __db_ndbm_clearerr __P((DBM *));
-void __db_ndbm_close __P((DBM *));
-int __db_ndbm_delete __P((DBM *, datum));
-int __db_ndbm_dirfno __P((DBM *));
-int __db_ndbm_error __P((DBM *));
-datum __db_ndbm_fetch __P((DBM *, datum));
-datum __db_ndbm_firstkey __P((DBM *));
-datum __db_ndbm_nextkey __P((DBM *));
-DBM *__db_ndbm_open __P((const char *, int, int));
-int __db_ndbm_pagfno __P((DBM *));
-int __db_ndbm_rdonly __P((DBM *));
-int __db_ndbm_store __P((DBM *, datum, datum, int));
-
-/*******************************************************
- * Hsearch historic interface.
- *******************************************************/
-typedef enum {
- FIND, ENTER
-} ACTION;
-
-typedef struct entry {
- char *key;
- char *data;
-} ENTRY;
-
-/*
- * Translate HSEARCH calls into DB calls so that DB doesn't step on the
- * application's name space.
- */
-#define hcreate(a) __db_hcreate(a)
-#define hdestroy __db_hdestroy
-#define hsearch(a, b) __db_hsearch(a, b)
-
-/* Prototype the DB calls. */
-int __db_hcreate __P((size_t));
-void __db_hdestroy __P((void));
-ENTRY *__db_hsearch __P((ENTRY, ACTION));
-#endif /* DB_DBM_HSEARCH */
-
-/*
- * XXX
- * MacOS: Reset Metrowerks C enum sizes.
- */
-#ifdef __MWERKS__
-#pragma enumsalwaysint reset
-#endif
-
-#if defined(__cplusplus)
-}
-#endif
-
-#endif /* !_DB_H_ */
diff --git a/db/include/db_185.h b/db/include/db_185.h
deleted file mode 100644
index e50ebb0ad..000000000
--- a/db/include/db_185.h
+++ /dev/null
@@ -1,175 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1996, 1997, 1998, 1999, 2000
- * Sleepycat Software. All rights reserved.
- */
-/*
- * Copyright (c) 1990, 1993, 1994
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $Id: db_185.h,v 11.4 2000/02/14 02:59:54 bostic Exp $
- */
-
-#ifndef _DB_185_H_
-#define _DB_185_H_
-
-#include <sys/types.h>
-
-#include <limits.h>
-
-/*
- * XXX
- * Handle function prototypes and the keyword "const". This steps on name
- * space that DB doesn't control, but all of the other solutions are worse.
- */
-#undef __P
-#if defined(__STDC__) || defined(__cplusplus)
-#define __P(protos) protos /* ANSI C prototypes */
-#else
-#define const
-#define __P(protos) () /* K&R C preprocessor */
-#endif
-
-#define RET_ERROR -1 /* Return values. */
-#define RET_SUCCESS 0
-#define RET_SPECIAL 1
-
-#ifndef __BIT_TYPES_DEFINED__
-#define __BIT_TYPES_DEFINED__
-@u_int8_decl@
-@int16_decl@
-@u_int16_decl@
-@int32_decl@
-@u_int32_decl@
-#endif
-
-/*
- * XXX
- * SGI/IRIX already has a pgno_t.
- */
-#ifdef sgi
-#define pgno_t db_pgno_t
-#endif
-
-#define MAX_PAGE_NUMBER 0xffffffff /* >= # of pages in a file */
-typedef u_int32_t pgno_t;
-#define MAX_PAGE_OFFSET 65535 /* >= # of bytes in a page */
-typedef u_int16_t indx_t;
-#define MAX_REC_NUMBER 0xffffffff /* >= # of records in a tree */
-typedef u_int32_t recno_t;
-
-/* Key/data structure -- a Data-Base Thang. */
-typedef struct {
- void *data; /* data */
- size_t size; /* data length */
-} DBT;
-
-/* Routine flags. */
-#define R_CURSOR 1 /* del, put, seq */
-#define __R_UNUSED 2 /* UNUSED */
-#define R_FIRST 3 /* seq */
-#define R_IAFTER 4 /* put (RECNO) */
-#define R_IBEFORE 5 /* put (RECNO) */
-#define R_LAST 6 /* seq (BTREE, RECNO) */
-#define R_NEXT 7 /* seq */
-#define R_NOOVERWRITE 8 /* put */
-#define R_PREV 9 /* seq (BTREE, RECNO) */
-#define R_SETCURSOR 10 /* put (RECNO) */
-#define R_RECNOSYNC 11 /* sync (RECNO) */
-
-typedef enum { DB_BTREE, DB_HASH, DB_RECNO } DBTYPE;
-
-/* Access method description structure. */
-typedef struct __db {
- DBTYPE type; /* Underlying db type. */
- int (*close) __P((struct __db *));
- int (*del) __P((const struct __db *, const DBT *, u_int));
- int (*get) __P((const struct __db *, const DBT *, DBT *, u_int));
- int (*put) __P((const struct __db *, DBT *, const DBT *, u_int));
- int (*seq) __P((const struct __db *, DBT *, DBT *, u_int));
- int (*sync) __P((const struct __db *, u_int));
- void *internal; /* Access method private. */
- int (*fd) __P((const struct __db *));
-} DB;
-
-#define BTREEMAGIC 0x053162
-#define BTREEVERSION 3
-
-/* Structure used to pass parameters to the btree routines. */
-typedef struct {
-#define R_DUP 0x01 /* duplicate keys */
- u_int32_t flags;
- u_int32_t cachesize; /* bytes to cache */
- u_int32_t maxkeypage; /* maximum keys per page */
- u_int32_t minkeypage; /* minimum keys per page */
- u_int32_t psize; /* page size */
- int (*compare) /* comparison function */
- __P((const DBT *, const DBT *));
- size_t (*prefix) /* prefix function */
- __P((const DBT *, const DBT *));
- int lorder; /* byte order */
-} BTREEINFO;
-
-#define HASHMAGIC 0x061561
-#define HASHVERSION 2
-
-/* Structure used to pass parameters to the hashing routines. */
-typedef struct {
- u_int32_t bsize; /* bucket size */
- u_int32_t ffactor; /* fill factor */
- u_int32_t nelem; /* number of elements */
- u_int32_t cachesize; /* bytes to cache */
- u_int32_t /* hash function */
- (*hash) __P((const void *, size_t));
- int lorder; /* byte order */
-} HASHINFO;
-
-/* Structure used to pass parameters to the record routines. */
-typedef struct {
-#define R_FIXEDLEN 0x01 /* fixed-length records */
-#define R_NOKEY 0x02 /* key not required */
-#define R_SNAPSHOT 0x04 /* snapshot the input */
- u_int32_t flags;
- u_int32_t cachesize; /* bytes to cache */
- u_int32_t psize; /* page size */
- int lorder; /* byte order */
- size_t reclen; /* record length (fixed-length records) */
- u_char bval; /* delimiting byte (variable-length records */
- char *bfname; /* btree file name */
-} RECNOINFO;
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-#define dbopen __db185_open
-DB *__db185_open __P((const char *, int, int, DBTYPE, const void *));
-
-#if defined(__cplusplus)
-}
-#endif
-#endif /* !_DB_185_H_ */
diff --git a/db/include/db_185.in b/db/include/db_185.in
deleted file mode 100644
index 2aabce823..000000000
--- a/db/include/db_185.in
+++ /dev/null
@@ -1,165 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1996-2001
- * Sleepycat Software. All rights reserved.
- */
-/*
- * Copyright (c) 1990, 1993, 1994
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * Id: db_185.in,v 11.6 2001/04/10 20:44:10 bostic Exp
- */
-
-#ifndef _DB_185_H_
-#define _DB_185_H_
-
-#include <sys/types.h>
-
-#include <limits.h>
-
-/*
- * XXX
- * Handle function prototypes and the keyword "const". This steps on name
- * space that DB doesn't control, but all of the other solutions are worse.
- */
-#undef __P
-#if defined(__STDC__) || defined(__cplusplus)
-#define __P(protos) protos /* ANSI C prototypes */
-#else
-#define const
-#define __P(protos) () /* K&R C preprocessor */
-#endif
-
-#define RET_ERROR -1 /* Return values. */
-#define RET_SUCCESS 0
-#define RET_SPECIAL 1
-
-#ifndef __BIT_TYPES_DEFINED__
-#define __BIT_TYPES_DEFINED__
-@u_int8_decl@
-@int16_decl@
-@u_int16_decl@
-@int32_decl@
-@u_int32_decl@
-#endif
-
-/*
- * XXX
- * SGI/IRIX already has a pgno_t.
- */
-#ifdef sgi
-#define pgno_t db_pgno_t
-#endif
-
-#define MAX_PAGE_NUMBER 0xffffffff /* >= # of pages in a file */
-typedef u_int32_t pgno_t;
-#define MAX_PAGE_OFFSET 65535 /* >= # of bytes in a page */
-typedef u_int16_t indx_t;
-#define MAX_REC_NUMBER 0xffffffff /* >= # of records in a tree */
-typedef u_int32_t recno_t;
-
-/* Key/data structure -- a Data-Base Thang. */
-typedef struct {
- void *data; /* data */
- size_t size; /* data length */
-} DBT;
-
-/* Routine flags. */
-#define R_CURSOR 1 /* del, put, seq */
-#define __R_UNUSED 2 /* UNUSED */
-#define R_FIRST 3 /* seq */
-#define R_IAFTER 4 /* put (RECNO) */
-#define R_IBEFORE 5 /* put (RECNO) */
-#define R_LAST 6 /* seq (BTREE, RECNO) */
-#define R_NEXT 7 /* seq */
-#define R_NOOVERWRITE 8 /* put */
-#define R_PREV 9 /* seq (BTREE, RECNO) */
-#define R_SETCURSOR 10 /* put (RECNO) */
-#define R_RECNOSYNC 11 /* sync (RECNO) */
-
-typedef enum { DB_BTREE, DB_HASH, DB_RECNO } DBTYPE;
-
-/* Access method description structure. */
-typedef struct __db {
- DBTYPE type; /* Underlying db type. */
- int (*close) __P((struct __db *));
- int (*del) __P((const struct __db *, const DBT *, u_int));
- int (*get) __P((const struct __db *, const DBT *, DBT *, u_int));
- int (*put) __P((const struct __db *, DBT *, const DBT *, u_int));
- int (*seq) __P((const struct __db *, DBT *, DBT *, u_int));
- int (*sync) __P((const struct __db *, u_int));
- void *internal; /* Access method private. */
- int (*fd) __P((const struct __db *));
-} DB;
-
-#define BTREEMAGIC 0x053162
-#define BTREEVERSION 3
-
-/* Structure used to pass parameters to the btree routines. */
-typedef struct {
-#define R_DUP 0x01 /* duplicate keys */
- u_int32_t flags;
- u_int32_t cachesize; /* bytes to cache */
- u_int32_t maxkeypage; /* maximum keys per page */
- u_int32_t minkeypage; /* minimum keys per page */
- u_int32_t psize; /* page size */
- int (*compare) /* comparison function */
- __P((const DBT *, const DBT *));
- size_t (*prefix) /* prefix function */
- __P((const DBT *, const DBT *));
- int lorder; /* byte order */
-} BTREEINFO;
-
-#define HASHMAGIC 0x061561
-#define HASHVERSION 2
-
-/* Structure used to pass parameters to the hashing routines. */
-typedef struct {
- u_int32_t bsize; /* bucket size */
- u_int32_t ffactor; /* fill factor */
- u_int32_t nelem; /* number of elements */
- u_int32_t cachesize; /* bytes to cache */
- u_int32_t /* hash function */
- (*hash) __P((const void *, size_t));
- int lorder; /* byte order */
-} HASHINFO;
-
-/* Structure used to pass parameters to the record routines. */
-typedef struct {
-#define R_FIXEDLEN 0x01 /* fixed-length records */
-#define R_NOKEY 0x02 /* key not required */
-#define R_SNAPSHOT 0x04 /* snapshot the input */
- u_int32_t flags;
- u_int32_t cachesize; /* bytes to cache */
- u_int32_t psize; /* page size */
- int lorder; /* byte order */
- size_t reclen; /* record length (fixed-length records) */
- u_char bval; /* delimiting byte (variable-length records */
- char *bfname; /* btree file name */
-} RECNOINFO;
-
diff --git a/db/include/db_am.h b/db/include/db_am.h
deleted file mode 100644
index 3a41eb3bb..000000000
--- a/db/include/db_am.h
+++ /dev/null
@@ -1,131 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1996, 1997, 1998, 1999, 2000
- * Sleepycat Software. All rights reserved.
- *
- * $Id: db_am.h,v 11.21 2000/12/12 17:43:56 bostic Exp $
- */
-#ifndef _DB_AM_H_
-#define _DB_AM_H_
-
-#define DB_MINPAGECACHE 10 /* Min pages access methods cache. */
-
-/* DB recovery operation codes. The low bits used to have flags or'd in. */
-#define DB_ADD_DUP 0x10
-#define DB_REM_DUP 0x20
-#define DB_ADD_BIG 0x30
-#define DB_REM_BIG 0x40
-#define DB_UNUSED_1 0x50
-#define DB_UNUSED_2 0x60
-#define DB_ADD_PAGE 0x70
-#define DB_REM_PAGE 0x80
-
-/*
- * This is a grotesque naming hack. We have modified the btree page
- * allocation and freeing functions to be generic and have therefore
- * moved them into the access-method independent portion of the code.
- * However, since we didn't want to create new log records and routines
- * for them, we left their logging and recovery functions over in btree.
- * To make the code look prettier, we macro them, but this is sure to
- * confuse the heck out of everyone.
- */
-#define __db_pg_alloc_log __bam_pg_alloc_log
-#define __db_pg_free_log __bam_pg_free_log
-
-/*
- * Standard initialization and shutdown macros for all recovery functions.
- *
- * Requires the following local variables:
- *
- * DB *file_dbp;
- * DB_MPOOLFILE *mpf;
- * int ret;
- */
-#define REC_INTRO(func, inc_count) { \
- file_dbp = NULL; \
- dbc = NULL; \
- if ((ret = func(dbenv, dbtp->data, &argp)) != 0) \
- goto out; \
- if ((ret = __db_fileid_to_db(dbenv, \
- &file_dbp, argp->fileid, inc_count)) != 0) { \
- if (ret == DB_DELETED) { \
- ret = 0; \
- goto done; \
- } \
- goto out; \
- } \
- if (file_dbp == NULL) \
- goto out; \
- if ((ret = file_dbp->cursor(file_dbp, NULL, &dbc, 0)) != 0) \
- goto out; \
- F_SET(dbc, DBC_RECOVER); \
- mpf = file_dbp->mpf; \
-}
-
-#define REC_CLOSE { \
- int __t_ret; \
- if (argp != NULL) \
- __os_free(argp, sizeof(*argp)); \
- if (dbc != NULL && (__t_ret = dbc->c_close(dbc)) != 0 && ret == 0) \
- return (__t_ret); \
- return (ret); \
-}
-
-/*
- * No-op versions of the same macros.
- */
-#define REC_NOOP_INTRO(func) { \
- if ((ret = func(dbenv, dbtp->data, &argp)) != 0) \
- return (ret); \
-}
-#define REC_NOOP_CLOSE \
- if (argp != NULL) \
- __os_free(argp, sizeof(*argp)); \
- return (ret); \
-
-/*
- * Standard debugging macro for all recovery functions.
- */
-#ifdef DEBUG_RECOVER
-#define REC_PRINT(func) \
- (void)func(dbenv, dbtp, lsnp, op, info);
-#else
-#define REC_PRINT(func)
-#endif
-
-/*
- * Flags to __db_lget
- */
-#define LCK_COUPLE 0x01 /* Lock Couple */
-#define LCK_ALWAYS 0x02 /* Lock even for off page dup cursors */
-#define LCK_ROLLBACK 0x04 /* Lock even if in rollback */
-
-/*
- * If doing transactions we have to hold the locks associated with a data item
- * from a page for the entire transaction. However, we don't have to hold the
- * locks associated with walking the tree. Distinguish between the two so that
- * we don't tie up the internal pages of the tree longer than necessary.
- */
-#define __LPUT(dbc, lock) \
- (lock.off != LOCK_INVALID ? \
- lock_put((dbc)->dbp->dbenv, &(lock)) : 0)
-#define __TLPUT(dbc, lock) \
- (lock.off != LOCK_INVALID && \
- (dbc)->txn == NULL ? lock_put((dbc)->dbp->dbenv, &(lock)) : 0)
-
-#ifdef DIAGNOSTIC
-#define DB_CHECK_TXN(dbp, txn) \
- if (txn != NULL) \
- F_SET(dbp, DB_AM_TXN); \
- else if (F_ISSET(dbp, DB_AM_TXN)) \
- return (__db_missing_txn_err((dbp)->dbenv));
-#else
-#define DB_CHECK_TXN(dbp, txn)
-#endif
-
-#include "db_dispatch.h"
-#include "db_auto.h"
-#include "crdel_auto.h"
-#include "db_ext.h"
-#endif
diff --git a/db/include/db_auto.h b/db/include/db_auto.h
deleted file mode 100644
index 88bf7419b..000000000
--- a/db/include/db_auto.h
+++ /dev/null
@@ -1,140 +0,0 @@
-/* Do not edit: automatically built by gen_rec.awk. */
-
-#ifndef db_AUTO_H
-#define db_AUTO_H
-
-#define DB_db_addrem 41
-typedef struct _db_addrem_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- u_int32_t opcode;
- int32_t fileid;
- db_pgno_t pgno;
- u_int32_t indx;
- size_t nbytes;
- DBT hdr;
- DBT dbt;
- DB_LSN pagelsn;
-} __db_addrem_args;
-
-int __db_addrem_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, u_int32_t, int32_t, db_pgno_t, u_int32_t, size_t, const DBT *, const DBT *, DB_LSN *));
-int __db_addrem_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __db_addrem_read __P((DB_ENV *, void *, __db_addrem_args **));
-
-#define DB_db_split 42
-typedef struct _db_split_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- u_int32_t opcode;
- int32_t fileid;
- db_pgno_t pgno;
- DBT pageimage;
- DB_LSN pagelsn;
-} __db_split_args;
-
-int __db_split_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __db_split_read __P((DB_ENV *, void *, __db_split_args **));
-
-#define DB_db_big 43
-typedef struct _db_big_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- u_int32_t opcode;
- int32_t fileid;
- db_pgno_t pgno;
- db_pgno_t prev_pgno;
- db_pgno_t next_pgno;
- DBT dbt;
- DB_LSN pagelsn;
- DB_LSN prevlsn;
- DB_LSN nextlsn;
-} __db_big_args;
-
-int __db_big_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, u_int32_t, int32_t, db_pgno_t, db_pgno_t, db_pgno_t, const DBT *, DB_LSN *, DB_LSN *, DB_LSN *));
-int __db_big_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __db_big_read __P((DB_ENV *, void *, __db_big_args **));
-
-#define DB_db_ovref 44
-typedef struct _db_ovref_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- db_pgno_t pgno;
- int32_t adjust;
- DB_LSN lsn;
-} __db_ovref_args;
-
-int __db_ovref_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, int32_t, DB_LSN *));
-int __db_ovref_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __db_ovref_read __P((DB_ENV *, void *, __db_ovref_args **));
-
-#define DB_db_relink 45
-typedef struct _db_relink_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- u_int32_t opcode;
- int32_t fileid;
- db_pgno_t pgno;
- DB_LSN lsn;
- db_pgno_t prev;
- DB_LSN lsn_prev;
- db_pgno_t next;
- DB_LSN lsn_next;
-} __db_relink_args;
-
-int __db_relink_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, u_int32_t, int32_t, db_pgno_t, DB_LSN *, db_pgno_t, DB_LSN *, db_pgno_t, DB_LSN *));
-int __db_relink_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __db_relink_read __P((DB_ENV *, void *, __db_relink_args **));
-
-#define DB_db_addpage 46
-typedef struct _db_addpage_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- db_pgno_t pgno;
- DB_LSN lsn;
- db_pgno_t nextpgno;
- DB_LSN nextlsn;
-} __db_addpage_args;
-
-int __db_addpage_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __db_addpage_read __P((DB_ENV *, void *, __db_addpage_args **));
-
-#define DB_db_debug 47
-typedef struct _db_debug_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- DBT op;
- int32_t fileid;
- DBT key;
- DBT data;
- u_int32_t arg_flags;
-} __db_debug_args;
-
-int __db_debug_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, const DBT *, int32_t, const DBT *, const DBT *, u_int32_t));
-int __db_debug_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __db_debug_read __P((DB_ENV *, void *, __db_debug_args **));
-
-#define DB_db_noop 48
-typedef struct _db_noop_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- db_pgno_t pgno;
- DB_LSN prevlsn;
-} __db_noop_args;
-
-int __db_noop_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, DB_LSN *));
-int __db_noop_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __db_noop_read __P((DB_ENV *, void *, __db_noop_args **));
-int __db_init_print __P((DB_ENV *));
-int __db_init_recover __P((DB_ENV *));
-#endif
diff --git a/db/include/db_cxx.h b/db/include/db_cxx.h
deleted file mode 100644
index b5599ee69..000000000
--- a/db/include/db_cxx.h
+++ /dev/null
@@ -1,652 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997, 1998, 1999, 2000
- * Sleepycat Software. All rights reserved.
- *
- * $Id: db_cxx.h,v 11.44 2000/12/21 20:30:18 dda Exp $
- */
-
-#ifndef _DB_CXX_H_
-#define _DB_CXX_H_
-//
-// C++ assumptions:
-//
-// To ensure portability to many platforms, both new and old, we make
-// few assumptions about the C++ compiler and library. For example,
-// we do not expect STL, templates or namespaces to be available. The
-// "newest" C++ feature used is exceptions, which are used liberally
-// to transmit error information. Even the use of exceptions can be
-// disabled at runtime, to do so, use the DB_CXX_NO_EXCEPTIONS flags
-// with the DbEnv or Db constructor.
-//
-// C++ naming conventions:
-//
-// - All top level class names start with Db.
-// - All class members start with lower case letter.
-// - All private data members are suffixed with underscore.
-// - Use underscores to divide names into multiple words.
-// - Simple data accessors are named with get_ or set_ prefix.
-// - All method names are taken from names of functions in the C
-// layer of db (usually by dropping a prefix like "db_").
-// These methods have the same argument types and order,
-// other than dropping the explicit arg that acts as "this".
-//
-// As a rule, each DbFoo object has exactly one underlying DB_FOO struct
-// (defined in db.h) associated with it. In some cases, we inherit directly
-// from the DB_FOO structure to make this relationship explicit. Often,
-// the underlying C layer allocates and deallocates these structures, so
-// there is no easy way to add any data to the DbFoo class. When you see
-// a comment about whether data is permitted to be added, this is what
-// is going on. Of course, if we need to add data to such C++ classes
-// in the future, we will arrange to have an indirect pointer to the
-// DB_FOO struct (as some of the classes already have).
-//
-
-////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////
-//
-// Forward declarations
-//
-
-#include <iostream.h>
-#include <stdarg.h>
-#include "db.h"
-
-class Db; // forward
-class Dbc; // forward
-class DbEnv; // forward
-class DbException; // forward
-class DbInfo; // forward
-class DbLock; // forward
-class DbLsn; // forward
-class DbMpoolFile; // forward
-class Dbt; // forward
-class DbTxn; // forward
-
-// These classes are not defined here and should be invisible
-// to the user, but some compilers require forward references.
-// There is one for each use of the DEFINE_DB_CLASS macro.
-
-class DbImp;
-class DbEnvImp;
-class DbMpoolFileImp;
-class DbTxnImp;
-
-////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////
-//
-// Mechanisms for declaring classes
-//
-
-//
-// Every class defined in this file has an _exported next to the class name.
-// This is needed for WinTel machines so that the class methods can
-// be exported or imported in a DLL as appropriate. Users of the DLL
-// use the define DB_USE_DLL. When the DLL is built, DB_CREATE_DLL
-// must be defined.
-//
-#if defined(_MSC_VER)
-
-# if defined(DB_CREATE_DLL)
-# define _exported __declspec(dllexport) // creator of dll
-# elif defined(DB_USE_DLL)
-# define _exported __declspec(dllimport) // user of dll
-# else
-# define _exported // static lib creator or user
-# endif
-
-#else
-
-# define _exported
-
-#endif
-
-// DEFINE_DB_CLASS defines an imp_ data member and imp() accessor.
-// The underlying type is a pointer to an opaque *Imp class, that
-// gets converted to the correct implementation class by the implementation.
-//
-// Since these defines use "private/public" labels, and leave the access
-// being "private", we always use these by convention before any data
-// members in the private section of a class. Keeping them in the
-// private section also emphasizes that they are off limits to user code.
-//
-#define DEFINE_DB_CLASS(name) \
- public: class name##Imp* imp() { return (imp_); } \
- public: const class name##Imp* constimp() const { return (imp_); } \
- private: class name##Imp* imp_
-
-////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////
-//
-// Turn off inappropriate compiler warnings
-//
-
-#ifdef _MSC_VER
-
-// These are level 4 warnings that are explicitly disabled.
-// With Visual C++, by default you do not see above level 3 unless
-// you use /W4. But we like to compile with the highest level
-// warnings to catch other errors.
-//
-// 4201: nameless struct/union
-// triggered by standard include file <winnt.h>
-//
-// 4514: unreferenced inline function has been removed
-// certain include files in MSVC define methods that are not called
-//
-#pragma warning(disable: 4201 4514)
-
-#endif
-
-// Some interfaces can be customized by allowing users
-// to define callback functions. For performance and
-// logistical reasons, some callbacks require you do
-// declare the functions in C, or in an extern "C" block.
-//
-extern "C" {
- typedef void * (*db_malloc_fcn_type)
- (size_t);
- typedef void * (*db_realloc_fcn_type)
- (void *, size_t);
- typedef int (*bt_compare_fcn_type)
- (DB *, const DBT *, const DBT *);
- typedef size_t (*bt_prefix_fcn_type)
- (DB *, const DBT *, const DBT *);
- typedef int (*dup_compare_fcn_type)
- (DB *, const DBT *, const DBT *);
- typedef u_int32_t (*h_hash_fcn_type)
- (DB *, const void *, u_int32_t);
- typedef int (*pgin_fcn_type)(DB_ENV *dbenv,
- db_pgno_t pgno, void *pgaddr, DBT *pgcookie);
- typedef int (*pgout_fcn_type)(DB_ENV *dbenv,
- db_pgno_t pgno, void *pgaddr, DBT *pgcookie);
-};
-
-////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////
-//
-// Exception classes
-//
-
-// Almost any error in the DB library throws a DbException.
-// Every exception should be considered an abnormality
-// (e.g. bug, misuse of DB, file system error).
-//
-// NOTE: We would like to inherit from class exception and
-// let it handle what(), but there are
-// MSVC++ problems when <exception> is included.
-//
-class _exported DbException
-{
-public:
- virtual ~DbException();
- DbException(int err);
- DbException(const char *description);
- DbException(const char *prefix, int err);
- DbException(const char *prefix1, const char *prefix2, int err);
- int get_errno() const;
- virtual const char *what() const;
-
- DbException(const DbException &);
- DbException &operator = (const DbException &);
-
-private:
- char *what_;
- int err_; // errno
-};
-
-////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////
-//
-// Lock classes
-//
-
-class _exported DbLock
-{
- friend class DbEnv;
-
-public:
- DbLock();
-
- int put(DbEnv *env);
-
- DbLock(const DbLock &);
- DbLock &operator = (const DbLock &);
-
-protected:
- // We can add data to this class if needed
- // since its contained class is not allocated by db.
- // (see comment at top)
-
- DbLock(DB_LOCK);
- DB_LOCK lock_;
-};
-
-////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////
-//
-// Log classes
-//
-
-class _exported DbLsn : protected DB_LSN
-{
- friend class DbEnv; // friendship needed to cast to base class
-};
-
-////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////
-//
-// Memory pool classes
-//
-
-class _exported DbMpoolFile
-{
- friend class DbEnv;
-
-public:
- int close();
- int get(db_pgno_t *pgnoaddr, u_int32_t flags, void *pagep);
- int put(void *pgaddr, u_int32_t flags);
- int set(void *pgaddr, u_int32_t flags);
- int sync();
-
- static int open(DbEnv *envp, const char *file,
- u_int32_t flags, int mode, size_t pagesize,
- DB_MPOOL_FINFO *finfop, DbMpoolFile **mpf);
-
-private:
- // We can add data to this class if needed
- // since it is implemented via a pointer.
- // (see comment at top)
-
- // Note: use DbMpoolFile::open()
- // to get pointers to a DbMpoolFile,
- // and call DbMpoolFile::close() rather than delete to release them.
- //
- DbMpoolFile();
-
- // Shut g++ up.
-protected:
- ~DbMpoolFile();
-
-private:
- // no copying
- DbMpoolFile(const DbMpoolFile &);
- void operator = (const DbMpoolFile &);
-
- DEFINE_DB_CLASS(DbMpoolFile);
-};
-
-////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////
-//
-// Transaction classes
-//
-
-class _exported DbTxn
-{
- friend class DbEnv;
-
-public:
- int abort();
- int commit(u_int32_t flags);
- u_int32_t id();
- int prepare();
-
-private:
- // We can add data to this class if needed
- // since it is implemented via a pointer.
- // (see comment at top)
-
- // Note: use DbEnv::txn_begin() to get pointers to a DbTxn,
- // and call DbTxn::abort() or DbTxn::commit rather than
- // delete to release them.
- //
- DbTxn();
- ~DbTxn();
-
- // no copying
- DbTxn(const DbTxn &);
- void operator = (const DbTxn &);
-
- DEFINE_DB_CLASS(DbTxn);
-};
-
-//
-// Berkeley DB environment class. Provides functions for opening databases.
-// User of this library can use this class as a starting point for
-// developing a DB application - derive their application class from
-// this one, add application control logic.
-//
-// Note that if you use the default constructor, you must explicitly
-// call appinit() before any other db activity (e.g. opening files)
-//
-class _exported DbEnv
-{
- friend class Db;
- friend class DbLock;
- friend class DbMpoolFile;
-
-public:
-
- ~DbEnv();
-
- // After using this constructor, you can set any needed
- // parameters for the environment using the set_* methods.
- // Then call open() to finish initializing the environment
- // and attaching it to underlying files.
- //
- DbEnv(u_int32_t flags);
-
- // These methods match those in the C interface.
- //
- int close(u_int32_t);
- void err(int, const char *, ...);
- void errx(const char *, ...);
- int open(const char *, u_int32_t, int);
- int remove(const char *, u_int32_t);
- int set_cachesize(u_int32_t, u_int32_t, int);
- int set_data_dir(const char *);
- void set_errcall(void (*)(const char *, char *));
- void set_errfile(FILE *);
- void set_errpfx(const char *);
- int set_flags(u_int32_t, int);
- int set_feedback(void (*)(DbEnv *, int, int));
- int set_recovery_init(int (*)(DbEnv *));
- int set_lg_bsize(u_int32_t);
- int set_lg_dir(const char *);
- int set_lg_max(u_int32_t);
- int set_lk_conflicts(u_int8_t *, int);
- int set_lk_detect(u_int32_t);
- int set_lk_max(u_int32_t);
- int set_lk_max_lockers(u_int32_t);
- int set_lk_max_locks(u_int32_t);
- int set_lk_max_objects(u_int32_t);
- int set_mp_mmapsize(size_t);
- int set_mutexlocks(int);
- static int set_pageyield(int);
- int set_paniccall(void (*)(DbEnv *, int));
- static int set_panicstate(int);
- static int set_region_init(int);
- int set_server(char *, long, long, u_int32_t);
- int set_shm_key(long);
- int set_tmp_dir(const char *);
- static int set_tas_spins(u_int32_t);
- int set_tx_max(u_int32_t);
- int set_tx_recover(int (*)(DbEnv *, Dbt *, DbLsn *, db_recops));
- int set_tx_timestamp(time_t *);
- int set_verbose(u_int32_t which, int onoff);
-
- // Version information. A static method so it can be obtained anytime.
- //
- static char *version(int *major, int *minor, int *patch);
-
- // Convert DB errors to strings
- static char *strerror(int);
-
- // If an error is detected and the error call function
- // or stream is set, a message is dispatched or printed.
- // If a prefix is set, each message is prefixed.
- //
- // You can use set_errcall() or set_errfile() above to control
- // error functionality. Alternatively, you can call
- // set_error_stream() to force all errors to a C++ stream.
- // It is unwise to mix these approaches.
- //
- void set_error_stream(ostream *);
-
- // used internally
- static void runtime_error(const char *caller, int err,
- int error_policy);
-
- // Lock functions
- //
- int lock_detect(u_int32_t flags, u_int32_t atype, int *aborted);
- int lock_get(u_int32_t locker, u_int32_t flags, const Dbt *obj,
- db_lockmode_t lock_mode, DbLock *lock);
- int lock_id(u_int32_t *idp);
- int lock_stat(DB_LOCK_STAT **statp, db_malloc_fcn_type db_malloc_fcn);
- int lock_vec(u_int32_t locker, u_int32_t flags, DB_LOCKREQ list[],
- int nlist, DB_LOCKREQ **elistp);
-
- // Log functions
- //
- int log_archive(char **list[], u_int32_t flags, db_malloc_fcn_type db_malloc_fcn);
- static int log_compare(const DbLsn *lsn0, const DbLsn *lsn1);
- int log_file(DbLsn *lsn, char *namep, size_t len);
- int log_flush(const DbLsn *lsn);
- int log_get(DbLsn *lsn, Dbt *data, u_int32_t flags);
- int log_put(DbLsn *lsn, const Dbt *data, u_int32_t flags);
-
- int log_register(Db *dbp, const char *name);
- int log_stat(DB_LOG_STAT **spp, db_malloc_fcn_type db_malloc_fcn);
- int log_unregister(Db *dbp);
-
- // Mpool functions
- //
- int memp_register(int ftype,
- pgin_fcn_type pgin_fcn,
- pgout_fcn_type pgout_fcn);
-
- int memp_stat(DB_MPOOL_STAT **gsp, DB_MPOOL_FSTAT ***fsp,
- db_malloc_fcn_type db_malloc_fcn);
- int memp_sync(DbLsn *lsn);
- int memp_trickle(int pct, int *nwrotep);
-
- // Transaction functions
- //
- int txn_begin(DbTxn *pid, DbTxn **tid, u_int32_t flags);
- int txn_checkpoint(u_int32_t kbyte, u_int32_t min, u_int32_t flags);
- int txn_stat(DB_TXN_STAT **statp, db_malloc_fcn_type db_malloc_fcn);
-
- // These are public only because they need to be called
- // via C functions. They should never be called by users
- // of this class.
- //
- static void _stream_error_function(const char *, char *);
- static int _tx_recover_intercept(DB_ENV *env, DBT *dbt, DB_LSN *lsn,
- db_recops op);
- static void _paniccall_intercept(DB_ENV *env, int errval);
- static int _recovery_init_intercept(DB_ENV *env);
- static void _feedback_intercept(DB_ENV *env, int opcode, int pct);
- static void _destroy_check(const char *str, int isDbEnv);
-
-private:
- void cleanup();
- int initialize(DB_ENV *env);
- int error_policy();
-
- // Used internally
- DbEnv(DB_ENV *, u_int32_t flags);
-
- // no copying
- DbEnv(const DbEnv &);
- void operator = (const DbEnv &);
-
- DEFINE_DB_CLASS(DbEnv);
-
- // instance data
- int construct_error_;
- u_int32_t construct_flags_;
- Db *headdb_;
- Db *taildb_;
- int (*tx_recover_callback_)(DbEnv *, Dbt *, DbLsn *, db_recops);
- int (*recovery_init_callback_)(DbEnv *);
- void (*paniccall_callback_)(DbEnv *, int);
- void (*feedback_callback_)(DbEnv *, int, int);
-
- // class data
- static ostream *error_stream_;
-};
-
-////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////
-//
-// Table access classes
-//
-
-//
-// Represents a database table = a set of keys with associated values.
-//
-class _exported Db
-{
- friend class DbEnv;
-
-public:
- Db(DbEnv*, u_int32_t); // create a Db object, then call open()
- ~Db(); // does *not* call close.
-
- // These methods exactly match those in the C interface.
- //
- int close(u_int32_t flags);
- int cursor(DbTxn *txnid, Dbc **cursorp, u_int32_t flags);
- int del(DbTxn *txnid, Dbt *key, u_int32_t flags);
- void err(int, const char *, ...);
- void errx(const char *, ...);
- int fd(int *fdp);
- int get(DbTxn *txnid, Dbt *key, Dbt *data, u_int32_t flags);
- int get_byteswapped() const;
- DBTYPE get_type() const;
- int join(Dbc **curslist, Dbc **dbcp, u_int32_t flags);
- int key_range(DbTxn *, Dbt *, DB_KEY_RANGE *, u_int32_t);
- int open(const char *, const char *subname, DBTYPE, u_int32_t, int);
- int put(DbTxn *, Dbt *, Dbt *, u_int32_t);
- int remove(const char *, const char *, u_int32_t);
- int rename(const char *, const char *, const char *, u_int32_t);
- int set_bt_compare(bt_compare_fcn_type);
- int set_bt_maxkey(u_int32_t);
- int set_bt_minkey(u_int32_t);
- int set_bt_prefix(bt_prefix_fcn_type);
- int set_cachesize(u_int32_t, u_int32_t, int);
- int set_dup_compare(dup_compare_fcn_type);
- void set_errcall(void (*)(const char *, char *));
- void set_errfile(FILE *);
- void set_errpfx(const char *);
- int set_append_recno(int (*)(Db *, Dbt *, db_recno_t));
- int set_feedback(void (*)(Db *, int, int));
- int set_flags(u_int32_t);
- int set_h_ffactor(u_int32_t);
- int set_h_hash(h_hash_fcn_type);
- int set_h_nelem(u_int32_t);
- int set_lorder(int);
- int set_malloc(db_malloc_fcn_type);
- int set_pagesize(u_int32_t);
- int set_paniccall(void (*)(DbEnv *, int));
- int set_realloc(db_realloc_fcn_type);
- int set_re_delim(int);
- int set_re_len(u_int32_t);
- int set_re_pad(int);
- int set_re_source(char *);
- int set_q_extentsize(u_int32_t);
- int stat(void *sp, db_malloc_fcn_type db_malloc_fcn, u_int32_t flags);
- int sync(u_int32_t flags);
- int upgrade(const char *name, u_int32_t flags);
- int verify(const char *, const char *, ostream *, u_int32_t);
-
- // This additional method is available for C++
- //
- void set_error_stream(ostream *);
-
- // These are public only because it needs to be called
- // via C functions. It should never be called by users
- // of this class.
- //
- static void _feedback_intercept(DB *db, int opcode, int pct);
- static int _append_recno_intercept(DB *db, DBT *data, db_recno_t recno);
-private:
-
- // no copying
- Db(const Db &);
- Db &operator = (const Db &);
-
- DEFINE_DB_CLASS(Db);
-
- void cleanup();
- int initialize();
- int error_policy();
-
- // instance data
- DbEnv *env_;
- Db *next_;
- Db *prev_;
- int construct_error_;
- u_int32_t flags_;
- u_int32_t construct_flags_;
- void (*feedback_callback_)(Db *, int, int);
- int (*append_recno_callback_)(Db *, Dbt *, db_recno_t);
-};
-
-//
-// A chunk of data, maybe a key or value.
-//
-class _exported Dbt : private DBT
-{
- friend class Dbc;
- friend class Db;
- friend class DbEnv;
-
-public:
-
- // key/data
- void *get_data() const;
- void set_data(void *);
-
- // key/data length
- u_int32_t get_size() const;
- void set_size(u_int32_t);
-
- // RO: length of user buffer.
- u_int32_t get_ulen() const;
- void set_ulen(u_int32_t);
-
- // RO: get/put record length.
- u_int32_t get_dlen() const;
- void set_dlen(u_int32_t);
-
- // RO: get/put record offset.
- u_int32_t get_doff() const;
- void set_doff(u_int32_t);
-
- // flags
- u_int32_t get_flags() const;
- void set_flags(u_int32_t);
-
- Dbt(void *data, size_t size);
- Dbt();
- ~Dbt();
- Dbt(const Dbt &);
- Dbt &operator = (const Dbt &);
-
-private:
- // We can add data to this class if needed
- // since parent class is not allocated by db.
- // (see comment at top)
-};
-
-class _exported Dbc : protected DBC
-{
- friend class Db;
-
-public:
- int close();
- int count(db_recno_t *countp, u_int32_t flags);
- int del(u_int32_t flags);
- int dup(Dbc** cursorp, u_int32_t flags);
- int get(Dbt* key, Dbt *data, u_int32_t flags);
- int put(Dbt* key, Dbt *data, u_int32_t flags);
-
-private:
- // No data is permitted in this class (see comment at top)
-
- // Note: use Db::cursor() to get pointers to a Dbc,
- // and call Dbc::close() rather than delete to release them.
- //
- Dbc();
- ~Dbc();
-
- // no copying
- Dbc(const Dbc &);
- Dbc &operator = (const Dbc &);
-};
-#endif /* !_DB_CXX_H_ */
diff --git a/db/include/db_dispatch.h b/db/include/db_dispatch.h
deleted file mode 100644
index 003acee6f..000000000
--- a/db/include/db_dispatch.h
+++ /dev/null
@@ -1,95 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1996, 1997, 1998, 1999, 2000
- * Sleepycat Software. All rights reserved.
- */
-/*
- * Copyright (c) 1995, 1996
- * The President and Fellows of Harvard University. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $Id: db_dispatch.h,v 11.17 2000/12/14 07:39:13 ubell Exp $
- */
-
-#ifndef _DB_DISPATCH_H_
-#define _DB_DISPATCH_H_
-
-/*
- * Declarations and typedefs for the list of transaction IDs used during
- * recovery. This is a generic list used to pass along whatever information
- * we need during recovery.
- */
-struct __db_txnhead {
- LIST_HEAD(__db_headlink, __db_txnlist) head;
- u_int32_t maxid;
- int32_t generation;
-};
-
-#define TXNLIST_INVALID_ID 0xffffffff
-struct __db_txnlist {
- db_txnlist_type type;
- LIST_ENTRY(__db_txnlist) links;
- union {
- struct {
- u_int32_t txnid;
- int32_t generation;
- int32_t aborted;
- } t;
- struct {
-#define TXNLIST_FLAG_DELETED 0x1
-#define TXNLIST_FLAG_CLOSED 0x2
- u_int32_t flags;
- int32_t fileid;
- u_int32_t count;
- char *fname;
- } d;
- struct {
- int32_t ntxns;
- int32_t maxn;
- DB_LSN *lsn_array;
- } l;
- struct {
- int32_t nentries;
- int32_t maxentry;
- char *fname;
- int32_t fileid;
- db_pgno_t *pgno_array;
- u_int8_t uid[DB_FILE_ID_LEN];
- } p;
- } u;
-};
-
-/*
- * Flag value for __db_txnlist_lsnadd. Distinguish whether we are replacing
- * an entry in the transaction list or adding a new one.
- */
-
-#define TXNLIST_NEW 0x1
-
-#define DB_user_BEGIN 10000
-
-#endif
diff --git a/db/include/db_ext.h b/db/include/db_ext.h
deleted file mode 100644
index efe254247..000000000
--- a/db/include/db_ext.h
+++ /dev/null
@@ -1,208 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_include. */
-#ifndef _db_ext_h_
-#define _db_ext_h_
-#if defined(__cplusplus)
-extern "C" {
-#endif
-int __crdel_fileopen_recover
- __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __crdel_metasub_recover
- __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __crdel_metapage_recover
- __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __crdel_delete_recover
- __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __crdel_rename_recover
- __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __db_open __P((DB *,
- const char *, const char *, DBTYPE, u_int32_t, int));
-int __db_dbopen __P((DB *, const char *, u_int32_t, int, db_pgno_t));
-int __db_master_open __P((DB *,
- const char *, u_int32_t, int, DB **));
-int __db_dbenv_setup __P((DB *, const char *, u_int32_t));
-int __db_close __P((DB *, u_int32_t));
-int __db_remove __P((DB *, const char *, const char *, u_int32_t));
-int __db_rename __P((DB *,
- const char *, const char *, const char *, u_int32_t));
-int __db_metabegin __P((DB *, DB_LOCK *));
-int __db_metaend __P((DB *,
- DB_LOCK *, int, int (*)(DB *, void *), void *));
-int __db_log_page __P((DB *,
- const char *, DB_LSN *, db_pgno_t, PAGE *));
-int __db_backup_name __P((DB_ENV *,
- const char *, char **, DB_LSN *));
-DB *__dblist_get __P((DB_ENV *, u_int32_t));
-int __db_testcopy __P((DB *, const char *));
-int __db_cursor __P((DB *, DB_TXN *, DBC **, u_int32_t));
-int __db_icursor
- __P((DB *, DB_TXN *, DBTYPE, db_pgno_t, int, DBC **));
-int __db_cprint __P((DB *));
-int __db_fd __P((DB *, int *));
-int __db_get __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t));
-int __db_put __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t));
-int __db_sync __P((DB *, u_int32_t));
-int __db_c_close __P((DBC *));
-int __db_c_destroy __P((DBC *));
-int __db_c_count __P((DBC *, db_recno_t *, u_int32_t));
-int __db_c_del __P((DBC *, u_int32_t));
-int __db_c_dup __P((DBC *, DBC **, u_int32_t));
-int __db_c_newopd __P((DBC *, db_pgno_t, DBC **));
-int __db_c_get __P((DBC *, DBT *, DBT *, u_int32_t));
-int __db_c_put __P((DBC *, DBT *, DBT *, u_int32_t));
-int __db_duperr __P((DB *, u_int32_t));
-int __db_pgin __P((DB_ENV *, db_pgno_t, void *, DBT *));
-int __db_pgout __P((DB_ENV *, db_pgno_t, void *, DBT *));
-void __db_metaswap __P((PAGE *));
-int __db_byteswap __P((DB_ENV *, db_pgno_t, PAGE *, size_t, int));
-int __db_dispatch __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __db_add_recovery __P((DB_ENV *,
- int (*)(DB_ENV *, DBT *, DB_LSN *, db_recops, void *), u_int32_t));
-int __deprecated_recover
- __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __db_txnlist_init __P((DB_ENV *, void *));
-int __db_txnlist_add __P((DB_ENV *, void *, u_int32_t, int32_t));
-int __db_txnlist_remove __P((void *, u_int32_t));
-int __db_txnlist_close __P((void *, int32_t, u_int32_t));
-int __db_txnlist_delete __P((DB_ENV *,
- void *, char *, u_int32_t, int));
-void __db_txnlist_end __P((DB_ENV *, void *));
-int __db_txnlist_find __P((void *, u_int32_t));
-void __db_txnlist_gen __P((void *, int));
-int __db_txnlist_lsnadd __P((DB_ENV *, void *, DB_LSN *, u_int32_t));
-int __db_txnlist_lsnhead __P((void *, DB_LSN **));
-int __db_txnlist_lsninit __P((DB_ENV *, DB_TXNHEAD *, DB_LSN *));
-int __db_add_limbo __P((DB_ENV *,
- void *, int32_t, db_pgno_t, int32_t));
-int __db_do_the_limbo __P((DB_ENV *, DB_TXNHEAD *));
-int __db_txnlist_pgnoadd __P((DB_ENV *, DB_TXNHEAD *,
- int32_t, u_int8_t [DB_FILE_ID_LEN], char *, db_pgno_t));
-void __db_txnlist_print __P((void *));
- int __db_ditem __P((DBC *, PAGE *, u_int32_t, u_int32_t));
-int __db_pitem
- __P((DBC *, PAGE *, u_int32_t, u_int32_t, DBT *, DBT *));
-int __db_relink __P((DBC *, u_int32_t, PAGE *, PAGE **, int));
-int __db_cursorchk __P((const DB *, u_int32_t, int));
-int __db_ccountchk __P((const DB *, u_int32_t, int));
-int __db_cdelchk __P((const DB *, u_int32_t, int, int));
-int __db_cgetchk __P((const DB *, DBT *, DBT *, u_int32_t, int));
-int __db_cputchk __P((const DB *,
- const DBT *, DBT *, u_int32_t, int, int));
-int __db_closechk __P((const DB *, u_int32_t));
-int __db_delchk __P((const DB *, DBT *, u_int32_t, int));
-int __db_getchk __P((const DB *, const DBT *, DBT *, u_int32_t));
-int __db_joinchk __P((const DB *, DBC * const *, u_int32_t));
-int __db_joingetchk __P((const DB *, DBT *, u_int32_t));
-int __db_putchk
- __P((const DB *, DBT *, const DBT *, u_int32_t, int, int));
-int __db_removechk __P((const DB *, u_int32_t));
-int __db_statchk __P((const DB *, u_int32_t));
-int __db_syncchk __P((const DB *, u_int32_t));
-int __db_join __P((DB *, DBC **, DBC **, u_int32_t));
-int __db_new __P((DBC *, u_int32_t, PAGE **));
-int __db_free __P((DBC *, PAGE *));
-int __db_lprint __P((DBC *));
-int __db_lget __P((DBC *,
- int, db_pgno_t, db_lockmode_t, int, DB_LOCK *));
-int __dbh_am_chk __P((DB *, u_int32_t));
-#ifdef HAVE_RPC
-int __dbcl_init __P((DB *, DB_ENV *, u_int32_t));
-#endif
-int __db_goff __P((DB *, DBT *,
- u_int32_t, db_pgno_t, void **, u_int32_t *));
-int __db_poff __P((DBC *, const DBT *, db_pgno_t *));
-int __db_ovref __P((DBC *, db_pgno_t, int32_t));
-int __db_doff __P((DBC *, db_pgno_t));
-int __db_moff __P((DB *, const DBT *, db_pgno_t, u_int32_t,
- int (*)(DB *, const DBT *, const DBT *), int *));
-int __db_vrfy_overflow __P((DB *, VRFY_DBINFO *, PAGE *, db_pgno_t,
- u_int32_t));
-int __db_vrfy_ovfl_structure
- __P((DB *, VRFY_DBINFO *, db_pgno_t, u_int32_t, u_int32_t));
-int __db_safe_goff __P((DB *, VRFY_DBINFO *, db_pgno_t,
- DBT *, void **, u_int32_t));
-void __db_loadme __P((void));
-int __db_dump __P((DB *, char *, char *));
-int __db_prnpage __P((DB *, db_pgno_t));
-int __db_prpage __P((DB *, PAGE *, u_int32_t));
-void __db_pr __P((u_int8_t *, u_int32_t));
-int __db_prdbt __P((DBT *, int, const char *, void *,
- int (*)(void *, const void *), int, VRFY_DBINFO *));
-void __db_prflags __P((u_int32_t, const FN *, FILE *));
-const char *__db_pagetype_to_string __P((u_int32_t));
-int __db_prheader __P((DB *, char *, int, int, void *,
- int (*)(void *, const void *), VRFY_DBINFO *, db_pgno_t));
-int __db_prfooter __P((void *, int (*)(void *, const void *)));
-int __db_addrem_recover
- __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __db_big_recover
- __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __db_ovref_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __db_relink_recover
- __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __db_debug_recover __P((DB_ENV *,
- DBT *, DB_LSN *, db_recops, void *));
-int __db_noop_recover __P((DB_ENV *,
- DBT *, DB_LSN *, db_recops, void *));
-int __db_traverse_dup __P((DB *,
- db_pgno_t, int (*)(DB *, PAGE *, void *, int *), void *));
-int __db_traverse_big __P((DB *,
- db_pgno_t, int (*)(DB *, PAGE *, void *, int *), void *));
-int __db_reclaim_callback __P((DB *, PAGE *, void *, int *));
-int __db_ret __P((DB *,
- PAGE *, u_int32_t, DBT *, void **, u_int32_t *));
-int __db_retcopy __P((DB *, DBT *,
- void *, u_int32_t, void **, u_int32_t *));
-int __db_upgrade __P((DB *, const char *, u_int32_t));
-int __db_lastpgno __P((DB *, char *, DB_FH *, db_pgno_t *));
-int __db_31_offdup __P((DB *, char *, DB_FH *, int, db_pgno_t *));
-int __db_verify
- __P((DB *, const char *, const char *, FILE *, u_int32_t));
-int __db_verify_callback __P((void *, const void *));
-int __db_verify_internal __P((DB *, const char *,
- const char *, void *, int (*)(void *, const void *), u_int32_t));
-int __db_vrfy_datapage
- __P((DB *, VRFY_DBINFO *, PAGE *, db_pgno_t, u_int32_t));
-int __db_vrfy_meta
- __P((DB *, VRFY_DBINFO *, DBMETA *, db_pgno_t, u_int32_t));
-int __db_vrfy_struct_feedback __P((DB *, VRFY_DBINFO *));
-int __db_salvage __P((DB *, VRFY_DBINFO *, db_pgno_t, PAGE *,
- void *, int (*)(void *, const void *), u_int32_t));
-int __db_vrfy_inpitem __P((DB *, PAGE *,
- db_pgno_t, u_int32_t, int, u_int32_t, u_int32_t *, u_int32_t *));
-int __db_vrfy_duptype
- __P((DB *, VRFY_DBINFO *, db_pgno_t, u_int32_t));
-int __db_salvage_duptree __P((DB *, VRFY_DBINFO *, db_pgno_t,
- DBT *, void *, int (*)(void *, const void *), u_int32_t));
-int __db_salvage_subdbpg
- __P((DB *, VRFY_DBINFO *, PAGE *, void *,
- int (*)(void *, const void *), u_int32_t));
-int __db_vrfy_dbinfo_create
- __P((DB_ENV *, u_int32_t, VRFY_DBINFO **));
-int __db_vrfy_dbinfo_destroy __P((VRFY_DBINFO *));
-int __db_vrfy_getpageinfo
- __P((VRFY_DBINFO *, db_pgno_t, VRFY_PAGEINFO **));
-int __db_vrfy_putpageinfo __P((VRFY_DBINFO *, VRFY_PAGEINFO *));
-int __db_vrfy_pgset __P((DB_ENV *, u_int32_t, DB **));
-int __db_vrfy_pgset_get __P((DB *, db_pgno_t, int *));
-int __db_vrfy_pgset_inc __P((DB *, db_pgno_t));
-int __db_vrfy_pgset_dec __P((DB *, db_pgno_t));
-int __db_vrfy_pgset_next __P((DBC *, db_pgno_t *));
-int __db_vrfy_childcursor __P((VRFY_DBINFO *, DBC **));
-int __db_vrfy_childput
- __P((VRFY_DBINFO *, db_pgno_t, VRFY_CHILDINFO *));
-int __db_vrfy_ccset __P((DBC *, db_pgno_t, VRFY_CHILDINFO **));
-int __db_vrfy_ccnext __P((DBC *, VRFY_CHILDINFO **));
-int __db_vrfy_ccclose __P((DBC *));
-int __db_vrfy_pageinfo_create __P((VRFY_PAGEINFO **));
-int __db_salvage_init __P((VRFY_DBINFO *));
-void __db_salvage_destroy __P((VRFY_DBINFO *));
-int __db_salvage_getnext
- __P((VRFY_DBINFO *, db_pgno_t *, u_int32_t *));
-int __db_salvage_isdone __P((VRFY_DBINFO *, db_pgno_t));
-int __db_salvage_markdone __P((VRFY_DBINFO *, db_pgno_t));
-int __db_salvage_markneeded
- __P((VRFY_DBINFO *, db_pgno_t, u_int32_t));
-#if defined(__cplusplus)
-}
-#endif
-#endif /* _db_ext_h_ */
diff --git a/db/include/db_int.in b/db/include/db_int.in
deleted file mode 100644
index b556d6a0e..000000000
--- a/db/include/db_int.in
+++ /dev/null
@@ -1,442 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1996-2001
- * Sleepycat Software. All rights reserved.
- *
- * Id: db_int.in,v 11.54 2001/04/27 15:49:47 bostic Exp
- */
-
-#ifndef _DB_INTERNAL_H_
-#define _DB_INTERNAL_H_
-
-/*******************************************************
- * General includes.
- *******************************************************/
-#include "db.h"
-
-#ifndef NO_SYSTEM_INCLUDES
-#if defined(__STDC__) || defined(__cplusplus)
-#include <stdarg.h>
-#else
-#include <varargs.h>
-#endif
-#include <errno.h>
-#endif
-
-#include "queue.h"
-#include "shqueue.h"
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-/*******************************************************
- * General purpose constants and macros.
- *******************************************************/
-#define UINT16_T_MAX 0xffff /* Maximum 16 bit unsigned. */
-#define UINT32_T_MAX 0xffffffff /* Maximum 32 bit unsigned. */
-
-#define MEGABYTE 1048576
-#define GIGABYTE 1073741824
-
-#define MS_PER_SEC 1000 /* Milliseconds in a second. */
-#define USEC_PER_MS 1000 /* Microseconds in a millisecond. */
-
-#define DB_MIN_PGSIZE 0x000200 /* Minimum page size (512). */
-#define DB_MAX_PGSIZE 0x010000 /* Maximum page size (65536). */
-
-#define RECNO_OOB 0 /* Illegal record number. */
-
-/*
- * If we are unable to determine the underlying filesystem block size, use
- * 8K on the grounds that most OS's use less than 8K for a VM page size.
- */
-#define DB_DEF_IOSIZE (8 * 1024)
-
-/*
- * Aligning items to particular sizes or in pages or memory.
- *
- * db_align_t --
- * Largest integral type, used to align structures in memory. We don't store
- * floating point types in structures, so integral types should be sufficient
- * (and we don't have to worry about systems that store floats in other than
- * power-of-2 numbers of bytes). Additionally this fixes compiler that rewrite
- * structure assignments and ANSI C memcpy calls to be in-line instructions
- * that happen to require alignment. Note: this alignment isn't sufficient for
- * mutexes, which depend on things like cache line alignment. Mutex alignment
- * is handled separately, in mutex.h.
- *
- * db_alignp_t --
- * Integral type that's the same size as a pointer. There are places where
- * DB modifies pointers by discarding the bottom bits to guarantee alignment.
- * We can't use db_align_t, it may be larger than the pointer, and compilers
- * get upset about that. So far we haven't run on any machine where there
- * isn't an integral type the same size as a pointer -- here's hoping.
- */
-@db_align_t_decl@
-@db_alignp_t_decl@
-
-/* Align an integer to a specific boundary. */
-#undef ALIGN
-#define ALIGN(value, bound) \
- (((value) + (bound) - 1) & ~(((u_int)bound) - 1))
-
-/* Align a pointer to a specific boundary. */
-#undef ALIGNP
-#define ALIGNP(value, bound) ALIGN((db_alignp_t)value, bound)
-
-/*
- * There are several on-page structures that are declared to have a number of
- * fields followed by a variable length array of items. The structure size
- * without including the variable length array or the address of the first of
- * those elements can be found using SSZ.
- *
- * This macro can also be used to find the offset of a structure element in a
- * structure. This is used in various places to copy structure elements from
- * unaligned memory references, e.g., pointers into a packed page.
- *
- * There are two versions because compilers object if you take the address of
- * an array.
- */
-#undef SSZ
-#define SSZ(name, field) ((int)&(((name *)0)->field))
-
-#undef SSZA
-#define SSZA(name, field) ((int)&(((name *)0)->field[0]))
-
-/*
- * Print an address as a u_long (a u_long is the largest type we can print
- * portably). Most 64-bit systems have made longs 64-bits, so this should
- * work.
- */
-#define P_TO_ULONG(p) ((u_long)(db_alignp_t)(p))
-
-/* Structure used to print flag values. */
-typedef struct __fn {
- u_int32_t mask; /* Flag value. */
- const char *name; /* Flag name. */
-} FN;
-
-/* Set, clear and test flags. */
-#define FLD_CLR(fld, f) (fld) &= ~(f)
-#define FLD_ISSET(fld, f) ((fld) & (f))
-#define FLD_SET(fld, f) (fld) |= (f)
-#define F_CLR(p, f) (p)->flags &= ~(f)
-#define F_ISSET(p, f) ((p)->flags & (f))
-#define F_SET(p, f) (p)->flags |= (f)
-#define LF_CLR(f) (flags &= ~(f))
-#define LF_ISSET(f) (flags & (f))
-#define LF_SET(f) (flags |= (f))
-
-/* Display separator string. */
-#undef DB_LINE
-#define DB_LINE "=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-="
-
-/* Unused, or not-used-yet variable. "Shut that bloody compiler up!" */
-#define COMPQUIET(n, v) (n) = (v)
-
-/*******************************************************
- * Files.
- *******************************************************/
- /*
- * We use 1024 as the maximum path length. It's too hard to figure out what
- * the real path length is, as it was traditionally stored in <sys/param.h>,
- * and that file isn't always available.
- */
-#undef MAXPATHLEN
-#define MAXPATHLEN 1024
-
-#define PATH_DOT "." /* Current working directory. */
-#define PATH_SEPARATOR "/" /* Path separator character. */
-
-/*
- * Flags understood by __os_open.
- */
-#define DB_OSO_CREATE 0x001 /* POSIX: O_CREAT */
-#define DB_OSO_EXCL 0x002 /* POSIX: O_EXCL */
-#define DB_OSO_LOG 0x004 /* Opening a log file. */
-#define DB_OSO_RDONLY 0x008 /* POSIX: O_RDONLY */
-#define DB_OSO_REGION 0x010 /* Opening a region file. */
-#define DB_OSO_SEQ 0x020 /* Expected sequential access. */
-#define DB_OSO_TEMP 0x040 /* Remove after last close. */
-#define DB_OSO_TRUNC 0x080 /* POSIX: O_TRUNC */
-
-/*
- * Seek options understood by __os_seek.
- */
-typedef enum {
- DB_OS_SEEK_CUR, /* POSIX: SEEK_CUR */
- DB_OS_SEEK_END, /* POSIX: SEEK_END */
- DB_OS_SEEK_SET /* POSIX: SEEK_SET */
-} DB_OS_SEEK;
-
-/*******************************************************
- * Environment.
- *******************************************************/
-/* Type passed to __db_appname(). */
-typedef enum {
- DB_APP_NONE=0, /* No type (region). */
- DB_APP_DATA, /* Data file. */
- DB_APP_LOG, /* Log file. */
- DB_APP_TMP /* Temporary file. */
-} APPNAME;
-
-/*
- * CDB_LOCKING CDB product locking.
- * LOCKING_ON Locking has been configured.
- * LOGGING_ON Logging has been configured.
- * MPOOL_ON Memory pool has been configured.
- * TXN_ON Transactions have been configured.
- */
-#define CDB_LOCKING(dbenv) F_ISSET(dbenv, DB_ENV_CDB)
-#define LOCKING_ON(dbenv) ((dbenv)->lk_handle != NULL)
-#define LOGGING_ON(dbenv) ((dbenv)->lg_handle != NULL)
-#define MPOOL_ON(dbenv) ((dbenv)->mp_handle != NULL)
-#define TXN_ON(dbenv) ((dbenv)->tx_handle != NULL)
-
-/*
- * STD_LOCKING Standard locking, that is, locking was configured and CDB
- * was not. We do not do locking in off-page duplicate trees,
- * so we check for that in the cursor first.
- */
-#define STD_LOCKING(dbc) \
- (!F_ISSET(dbc, DBC_OPD) && \
- !CDB_LOCKING((dbc)->dbp->dbenv) && LOCKING_ON((dbc)->dbp->dbenv))
-
-/*
- * IS_RECOVERING The system is running recovery.
- */
-#define IS_RECOVERING(dbenv) \
- (LOGGING_ON(dbenv) && \
- F_ISSET((DB_LOG *)(dbenv)->lg_handle, DBLOG_RECOVER))
-
-/* Most initialization methods cannot be called after open is called. */
-#define ENV_ILLEGAL_AFTER_OPEN(dbenv, name) \
- if (F_ISSET((dbenv), DB_ENV_OPEN_CALLED)) \
- return (__db_mi_open(dbenv, name, 1));
-
-/* We're not actually user hostile, honest. */
-#define ENV_REQUIRES_CONFIG(dbenv, handle, i, flags) \
- if (handle == NULL) \
- return (__db_env_config(dbenv, i, flags));
-
-/*******************************************************
- * Database Access Methods.
- *******************************************************/
-/*
- * DB_IS_THREADED --
- * The database handle is free-threaded (was opened with DB_THREAD).
- */
-#define DB_IS_THREADED(dbp) \
- ((dbp)->mutexp != NULL)
-
-/* Initialization methods are often illegal before/after open is called. */
-#define DB_ILLEGAL_AFTER_OPEN(dbp, name) \
- if (F_ISSET((dbp), DB_OPEN_CALLED)) \
- return (__db_mi_open(dbp->dbenv, name, 1));
-#define DB_ILLEGAL_BEFORE_OPEN(dbp, name) \
- if (!F_ISSET((dbp), DB_OPEN_CALLED)) \
- return (__db_mi_open(dbp->dbenv, name, 0));
-/* Some initialization methods are illegal if environment isn't local. */
-#define DB_ILLEGAL_IN_ENV(dbp, name) \
- if (!F_ISSET(dbp->dbenv, DB_ENV_DBLOCAL)) \
- return (__db_mi_env(dbp->dbenv, name));
-#define DB_ILLEGAL_METHOD(dbp, flags) { \
- int __ret; \
- if ((__ret = __dbh_am_chk(dbp, flags)) != 0) \
- return (__ret); \
-}
-
-/*
- * Common DBC->internal fields. Each access method adds additional fields
- * to this list, but the initial fields are common.
- */
-#define __DBC_INTERNAL \
- DBC *opd; /* Off-page duplicate cursor. */\
- \
- void *page; /* Referenced page. */ \
- db_pgno_t root; /* Tree root. */ \
- db_pgno_t pgno; /* Referenced page number. */ \
- db_indx_t indx; /* Referenced key item index. */\
- \
- DB_LOCK lock; /* Cursor lock. */ \
- db_lockmode_t lock_mode; /* Lock mode. */
-
-struct __dbc_internal {
- __DBC_INTERNAL
-};
-
-/*
- * Access-method-common macro for determining whether a cursor
- * has been initialized.
- */
-#define IS_INITIALIZED(dbc) ((dbc)->internal->pgno != PGNO_INVALID)
-
-/* Free the callback-allocated buffer, if necessary, hanging off of a DBT. */
-#define FREE_IF_NEEDED(sdbp, dbt) \
- if (F_ISSET((dbt), DB_DBT_APPMALLOC)) { \
- __os_ufree((sdbp)->dbenv, (dbt)->data, 0); \
- F_CLR((dbt), DB_DBT_APPMALLOC); \
- }
-
-/*
- * Use memory belonging to object "owner" to return the results of
- * any no-DBT-flag get ops on cursor "dbc".
- */
-#define SET_RET_MEM(dbc, owner) \
- do { \
- (dbc)->rskey = &(owner)->my_rskey; \
- (dbc)->rkey = &(owner)->my_rkey; \
- (dbc)->rdata = &(owner)->my_rdata; \
- } while (0)
-
-/* Use the return-data memory src is currently set to use in dest as well. */
-#define COPY_RET_MEM(src, dest) \
- do { \
- (dest)->rskey = (src)->rskey; \
- (dest)->rkey = (src)->rkey; \
- (dest)->rdata = (src)->rdata; \
- } while (0)
-
-/* Reset the returned-memory pointers to their defaults. */
-#define RESET_RET_MEM(dbc) \
- do { \
- (dbc)->rskey = &(dbc)->my_rskey; \
- (dbc)->rkey = &(dbc)->my_rkey; \
- (dbc)->rdata = &(dbc)->my_rdata; \
- } while (0)
-
-/*******************************************************
- * Mpool.
- *******************************************************/
-/*
- * File types for DB access methods. Negative numbers are reserved to DB.
- */
-#define DB_FTYPE_SET -1 /* Call pgin/pgout functions. */
-#define DB_FTYPE_NOTSET 0 /* Don't call... */
-
-/* Structure used as the DB pgin/pgout pgcookie. */
-typedef struct __dbpginfo {
- size_t db_pagesize; /* Underlying page size. */
- int needswap; /* If swapping required. */
-} DB_PGINFO;
-
-/*******************************************************
- * Log.
- *******************************************************/
-/* Initialize an LSN to 'zero'. */
-#define ZERO_LSN(LSN) do { \
- (LSN).file = 0; \
- (LSN).offset = 0; \
-} while (0)
-
-#define MAX_LSN(LSN) do { \
- (LSN).file = UINT32_T_MAX; \
- (LSN).offset = UINT32_T_MAX; \
-} while (0)
-
-/* If logging is turned off, smash the lsn. */
-#define LSN_NOT_LOGGED(LSN) do { \
- (LSN).file = 0; \
- (LSN).offset = 1; \
-} while (0)
-
-/* Return 1 if LSN is a 'zero' lsn, otherwise return 0. */
-#define IS_ZERO_LSN(LSN) ((LSN).file == 0)
-#define IS_MAX_LSN(LSN) \
- ((LSN).file == UINT32_T_MAX && (LSN).file == UINT32_T_MAX)
-
-/* Test if we need to log a change. */
-#define DB_LOGGING(dbc) \
- (LOGGING_ON((dbc)->dbp->dbenv) && !F_ISSET(dbc, DBC_RECOVER))
-
-/*******************************************************
- * Txn.
- *******************************************************/
-#define DB_NONBLOCK(C) ((C)->txn != NULL && F_ISSET((C)->txn, TXN_NOWAIT))
-#define IS_SUBTRANSACTION(txn) \
- ((txn) != NULL && (txn)->parent != NULL)
-
-/*******************************************************
- * Global variables.
- *******************************************************/
-#ifdef HAVE_VXWORKS
-#include "semLib.h"
-#endif
-
-/*
- * DB global variables. Done in a single structure to minimize the name-space
- * pollution.
- */
-typedef struct __db_globals {
- u_int32_t db_pageyield; /* db_set_pageyield */
- u_int32_t db_panic; /* db_set_panic */
- u_int32_t db_region_init; /* db_set_region_init */
- u_int32_t db_tas_spins; /* db_set_tas_spins */
-#ifdef HAVE_VXWORKS
- u_int32_t db_global_init; /* VxWorks: inited */
- SEM_ID db_global_lock; /* VxWorks: global semaphore */
-#endif
- /* XA: list of opened environments. */
- TAILQ_HEAD(__db_envq, __db_env) db_envq;
-} DB_GLOBALS;
-
-#ifdef DB_INITIALIZE_DB_GLOBALS
-DB_GLOBALS __db_global_values = {
- 0, /* db_set_pageyield */
- 1, /* db_set_panic */
- 0, /* db_set_region_init */
- 0, /* db_set_tas_spins */
-#ifdef HAVE_VXWORKS
- 0, /* db_global_init */
- NULL, /* db_global_lock */
-#endif
- /* XA environment queue */
- {NULL, &__db_global_values.db_envq.tqh_first}
-};
-#else
-extern DB_GLOBALS __db_global_values;
-#endif
-#define DB_GLOBAL(v) __db_global_values.v
-
-/* Forward structure declarations. */
-struct __db_reginfo_t; typedef struct __db_reginfo_t REGINFO;
-struct __mutex_t; typedef struct __mutex_t MUTEX;
-struct __vrfy_childinfo; typedef struct __vrfy_childinfo VRFY_CHILDINFO;
-struct __vrfy_dbinfo; typedef struct __vrfy_dbinfo VRFY_DBINFO;
-struct __vrfy_pageinfo; typedef struct __vrfy_pageinfo VRFY_PAGEINFO;
-struct __db_txnlist; typedef struct __db_txnlist DB_TXNLIST;
-struct __db_txnhead; typedef struct __db_txnhead DB_TXNHEAD;
-typedef enum {
- TXNLIST_DELETE,
- TXNLIST_LSN,
- TXNLIST_TXNID,
- TXNLIST_PGNO
-} db_txnlist_type;
-
-/*
- * Currently, region offsets are limited to 32-bits. I expect that's going
- * to have to be fixed in the not-too-distant future, since we won't want to
- * split 100Gb memory pools into that many different regions. It's typedef'd
- * so it won't be too painful to upgrade.
- */
-typedef u_int32_t roff_t;
-
-#if defined(__cplusplus)
-}
-#endif
-
-/*******************************************************
- * More general includes.
- *******************************************************/
-#include "debug.h"
-#include "mutex.h"
-#include "region.h"
-#include "mutex_ext.h"
-#include "env_ext.h"
-#include "os.h"
-#include "os_ext.h"
-#include "common_ext.h"
-
-#endif /* !_DB_INTERNAL_H_ */
diff --git a/db/include/db_int.src b/db/include/db_int.src
deleted file mode 100644
index 347169ab5..000000000
--- a/db/include/db_int.src
+++ /dev/null
@@ -1,397 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1996, 1997, 1998, 1999, 2000
- * Sleepycat Software. All rights reserved.
- *
- * $Id: db_int.src,v 11.42 2001/01/11 17:49:17 krinsky Exp $
- */
-
-#ifndef _DB_INTERNAL_H_
-#define _DB_INTERNAL_H_
-
-/*******************************************************
- * General includes.
- *******************************************************/
-#include "db.h"
-
-#ifndef NO_SYSTEM_INCLUDES
-#if defined(__STDC__) || defined(__cplusplus)
-#include <stdarg.h>
-#else
-#include <varargs.h>
-#endif
-#include <errno.h>
-#endif
-
-#include "queue.h"
-#include "shqueue.h"
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-/*******************************************************
- * General purpose constants and macros.
- *******************************************************/
-#define UINT16_T_MAX 0xffff /* Maximum 16 bit unsigned. */
-#define UINT32_T_MAX 0xffffffff /* Maximum 32 bit unsigned. */
-
-#define MEGABYTE 1048576
-#define GIGABYTE 1073741824
-
-#define MS_PER_SEC 1000 /* Milliseconds in a second. */
-#define USEC_PER_MS 1000 /* Microseconds in a millisecond. */
-
-#define DB_MIN_PGSIZE 0x000200 /* Minimum page size (512). */
-#define DB_MAX_PGSIZE 0x010000 /* Maximum page size (65536). */
-
-#define RECNO_OOB 0 /* Illegal record number. */
-
-/*
- * If we are unable to determine the underlying filesystem block size, use
- * 8K on the grounds that most OS's use less than 8K for a VM page size.
- */
-#define DB_DEF_IOSIZE (8 * 1024)
-
-/*
- * Aligning items to particular sizes or in pages or memory.
- *
- * db_align_t --
- * Largest integral type, used to align structures in memory. We don't store
- * floating point types in structures, so integral types should be sufficient
- * (and we don't have to worry about systems that store floats in other than
- * power-of-2 numbers of bytes). Additionally this fixes compiler that rewrite
- * structure assignments and ANSI C memcpy calls to be in-line instructions
- * that happen to require alignment. Note: this alignment isn't sufficient for
- * mutexes, which depend on things like cache line alignment. Mutex alignment
- * is handled separately, in mutex.h.
- *
- * db_alignp_t --
- * Integral type that's the same size as a pointer. There are places where
- * DB modifies pointers by discarding the bottom bits to guarantee alignment.
- * We can't use db_align_t, it may be larger than the pointer, and compilers
- * get upset about that. So far we haven't run on any machine where there
- * isn't an integral type the same size as a pointer -- here's hoping.
- */
-@db_align_t_decl@
-@db_alignp_t_decl@
-
-/* Align an integer to a specific boundary. */
-#undef ALIGN
-#define ALIGN(value, bound) \
- (((value) + (bound) - 1) & ~(((u_int)bound) - 1))
-
-/* Align a pointer to a specific boundary. */
-#undef ALIGNP
-#define ALIGNP(value, bound) ALIGN((db_alignp_t)value, bound)
-
-/*
- * There are several on-page structures that are declared to have a number of
- * fields followed by a variable length array of items. The structure size
- * without including the variable length array or the address of the first of
- * those elements can be found using SSZ.
- *
- * This macro can also be used to find the offset of a structure element in a
- * structure. This is used in various places to copy structure elements from
- * unaligned memory references, e.g., pointers into a packed page.
- *
- * There are two versions because compilers object if you take the address of
- * an array.
- */
-#undef SSZ
-#define SSZ(name, field) ((int)&(((name *)0)->field))
-
-#undef SSZA
-#define SSZA(name, field) ((int)&(((name *)0)->field[0]))
-
-/*
- * Print an address as a u_long (a u_long is the largest type we can print
- * portably). Most 64-bit systems have made longs 64-bits, so this should
- * work.
- */
-#define P_TO_ULONG(p) ((u_long)(db_alignp_t)(p))
-
-/* Structure used to print flag values. */
-typedef struct __fn {
- u_int32_t mask; /* Flag value. */
- const char *name; /* Flag name. */
-} FN;
-
-/* Set, clear and test flags. */
-#define FLD_CLR(fld, f) (fld) &= ~(f)
-#define FLD_ISSET(fld, f) ((fld) & (f))
-#define FLD_SET(fld, f) (fld) |= (f)
-#define F_CLR(p, f) (p)->flags &= ~(f)
-#define F_ISSET(p, f) ((p)->flags & (f))
-#define F_SET(p, f) (p)->flags |= (f)
-#define LF_CLR(f) (flags &= ~(f))
-#define LF_ISSET(f) (flags & (f))
-#define LF_SET(f) (flags |= (f))
-
-/* Display separator string. */
-#undef DB_LINE
-#define DB_LINE "=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-="
-
-/* Unused, or not-used-yet variable. "Shut that bloody compiler up!" */
-#define COMPQUIET(n, v) (n) = (v)
-
-/*******************************************************
- * Files.
- *******************************************************/
- /*
- * We use 1024 as the maximum path length. It's too hard to figure out what
- * the real path length is, as it was traditionally stored in <sys/param.h>,
- * and that file isn't always available.
- */
-#undef MAXPATHLEN
-#define MAXPATHLEN 1024
-
-#define PATH_DOT "." /* Current working directory. */
-#define PATH_SEPARATOR "/" /* Path separator character. */
-
-/*
- * Flags understood by __os_open.
- */
-#define DB_OSO_CREATE 0x001 /* POSIX: O_CREAT */
-#define DB_OSO_EXCL 0x002 /* POSIX: O_EXCL */
-#define DB_OSO_LOG 0x004 /* Opening a log file. */
-#define DB_OSO_RDONLY 0x008 /* POSIX: O_RDONLY */
-#define DB_OSO_REGION 0x010 /* Opening a region file. */
-#define DB_OSO_SEQ 0x020 /* Expected sequential access. */
-#define DB_OSO_TEMP 0x040 /* Remove after last close. */
-#define DB_OSO_TRUNC 0x080 /* POSIX: O_TRUNC */
-
-/*
- * Seek options understood by __os_seek.
- */
-typedef enum {
- DB_OS_SEEK_CUR, /* POSIX: SEEK_CUR */
- DB_OS_SEEK_END, /* POSIX: SEEK_END */
- DB_OS_SEEK_SET /* POSIX: SEEK_SET */
-} DB_OS_SEEK;
-
-/*******************************************************
- * Environment.
- *******************************************************/
-/* Type passed to __db_appname(). */
-typedef enum {
- DB_APP_NONE=0, /* No type (region). */
- DB_APP_DATA, /* Data file. */
- DB_APP_LOG, /* Log file. */
- DB_APP_TMP /* Temporary file. */
-} APPNAME;
-
-/*
- * CDB_LOCKING CDB product locking.
- * LOCKING_ON Locking has been configured.
- * LOGGING_ON Logging has been configured.
- * MPOOL_ON Memory pool has been configured.
- * TXN_ON Transactions have been configured.
- */
-#define CDB_LOCKING(dbenv) F_ISSET(dbenv, DB_ENV_CDB)
-#define LOCKING_ON(dbenv) ((dbenv)->lk_handle != NULL)
-#define LOGGING_ON(dbenv) ((dbenv)->lg_handle != NULL)
-#define MPOOL_ON(dbenv) ((dbenv)->mp_handle != NULL)
-#define TXN_ON(dbenv) ((dbenv)->tx_handle != NULL)
-
-/*
- * STD_LOCKING Standard locking, that is, locking was configured and CDB
- * was not. We do not do locking in off-page duplicate trees,
- * so we check for that in the cursor first.
- */
-#define STD_LOCKING(dbc) \
- (!F_ISSET(dbc, DBC_OPD) && \
- !CDB_LOCKING((dbc)->dbp->dbenv) && LOCKING_ON((dbc)->dbp->dbenv))
-
-/*
- * IS_RECOVERING The system is running recovery.
- */
-#define IS_RECOVERING(dbenv) \
- (LOGGING_ON(dbenv) && \
- F_ISSET((DB_LOG *)(dbenv)->lg_handle, DBLOG_RECOVER))
-
-/* Most initialization methods cannot be called after open is called. */
-#define ENV_ILLEGAL_AFTER_OPEN(dbenv, name) \
- if (F_ISSET((dbenv), DB_ENV_OPEN_CALLED)) \
- return (__db_mi_open(dbenv, name, 1));
-
-/* We're not actually user hostile, honest. */
-#define ENV_REQUIRES_CONFIG(dbenv, handle, subsystem) \
- if (handle == NULL) \
- return (__db_env_config(dbenv, subsystem));
-
-/*******************************************************
- * Database Access Methods.
- *******************************************************/
-/*
- * DB_IS_THREADED --
- * The database handle is free-threaded (was opened with DB_THREAD).
- */
-#define DB_IS_THREADED(dbp) \
- ((dbp)->mutexp != NULL)
-
-/* Initialization methods are often illegal before/after open is called. */
-#define DB_ILLEGAL_AFTER_OPEN(dbp, name) \
- if (F_ISSET((dbp), DB_OPEN_CALLED)) \
- return (__db_mi_open(dbp->dbenv, name, 1));
-#define DB_ILLEGAL_BEFORE_OPEN(dbp, name) \
- if (!F_ISSET((dbp), DB_OPEN_CALLED)) \
- return (__db_mi_open(dbp->dbenv, name, 0));
-/* Some initialization methods are illegal if environment isn't local. */
-#define DB_ILLEGAL_IN_ENV(dbp, name) \
- if (!F_ISSET(dbp->dbenv, DB_ENV_DBLOCAL)) \
- return (__db_mi_env(dbp->dbenv, name));
-#define DB_ILLEGAL_METHOD(dbp, flags) { \
- int __ret; \
- if ((__ret = __dbh_am_chk(dbp, flags)) != 0) \
- return (__ret); \
-}
-
-/*
- * Common DBC->internal fields. Each access method adds additional fields
- * to this list, but the initial fields are common.
- */
-#define __DBC_INTERNAL \
- DBC *opd; /* Off-page duplicate cursor. */\
- \
- void *page; /* Referenced page. */ \
- db_pgno_t root; /* Tree root. */ \
- db_pgno_t pgno; /* Referenced page number. */ \
- db_indx_t indx; /* Referenced key item index. */\
- \
- DB_LOCK lock; /* Cursor lock. */ \
- db_lockmode_t lock_mode; /* Lock mode. */
-
-struct __dbc_internal {
- __DBC_INTERNAL
-};
-
-/*
- * Access-method-common macro for determining whether a cursor
- * has been initialized.
- */
-#define IS_INITIALIZED(dbc) ((dbc)->internal->pgno != PGNO_INVALID)
-
-/*******************************************************
- * Mpool.
- *******************************************************/
-/*
- * File types for DB access methods. Negative numbers are reserved to DB.
- */
-#define DB_FTYPE_SET -1 /* Call pgin/pgout functions. */
-#define DB_FTYPE_NOTSET 0 /* Don't call... */
-
-/* Structure used as the DB pgin/pgout pgcookie. */
-typedef struct __dbpginfo {
- size_t db_pagesize; /* Underlying page size. */
- int needswap; /* If swapping required. */
-} DB_PGINFO;
-
-/*******************************************************
- * Log.
- *******************************************************/
-/* Initialize an LSN to 'zero'. */
-#define ZERO_LSN(LSN) do { \
- (LSN).file = 0; \
- (LSN).offset = 0; \
-} while (0)
-
-/* Return 1 if LSN is a 'zero' lsn, otherwise return 0. */
-#define IS_ZERO_LSN(LSN) ((LSN).file == 0)
-
-/* Test if we need to log a change. */
-#define DB_LOGGING(dbc) \
- (LOGGING_ON((dbc)->dbp->dbenv) && !F_ISSET(dbc, DBC_RECOVER))
-
-/* Internal flag for use with internal __log_unregister. */
-#define DB_LOGONLY 0x01
-/*******************************************************
- * Txn.
- *******************************************************/
-#define DB_NONBLOCK(C) ((C)->txn != NULL && F_ISSET((C)->txn, TXN_NOWAIT))
-#define IS_SUBTRANSACTION(txn) \
- ((txn) != NULL && (txn)->parent != NULL)
-
-/*******************************************************
- * Global variables.
- *******************************************************/
-#ifdef HAVE_VXWORKS
-#include "semLib.h"
-#endif
-
-/*
- * DB global variables. Done in a single structure to minimize the name-space
- * pollution.
- */
-typedef struct __db_globals {
- u_int32_t db_pageyield; /* db_set_pageyield */
- u_int32_t db_panic; /* db_set_panic */
- u_int32_t db_region_init; /* db_set_region_init */
- u_int32_t db_tas_spins; /* db_set_tas_spins */
-#ifdef HAVE_VXWORKS
- u_int32_t db_global_init; /* VxWorks: inited */
- SEM_ID db_global_lock; /* VxWorks: global semaphore */
-#endif
- /* XA: list of opened environments. */
- TAILQ_HEAD(__db_envq, __db_env) db_envq;
-} DB_GLOBALS;
-
-#ifdef DB_INITIALIZE_DB_GLOBALS
-DB_GLOBALS __db_global_values = {
- 0, /* db_set_pageyield */
- 1, /* db_set_panic */
- 0, /* db_set_region_init */
- 0, /* db_set_tas_spins */
-#ifdef HAVE_VXWORKS
- 0, /* db_global_init */
- NULL, /* db_global_lock */
-#endif
- /* XA environment queue */
- {NULL, &__db_global_values.db_envq.tqh_first}
-};
-#else
-extern DB_GLOBALS __db_global_values;
-#endif
-#define DB_GLOBAL(v) __db_global_values.v
-
-/* Forward structure declarations. */
-struct __db_reginfo_t; typedef struct __db_reginfo_t REGINFO;
-struct __mutex_t; typedef struct __mutex_t MUTEX;
-struct __vrfy_childinfo; typedef struct __vrfy_childinfo VRFY_CHILDINFO;
-struct __vrfy_dbinfo; typedef struct __vrfy_dbinfo VRFY_DBINFO;
-struct __vrfy_pageinfo; typedef struct __vrfy_pageinfo VRFY_PAGEINFO;
-struct __db_txnlist; typedef struct __db_txnlist DB_TXNLIST;
-struct __db_txnhead; typedef struct __db_txnhead DB_TXNHEAD;
-typedef enum {
- TXNLIST_DELETE,
- TXNLIST_LSN,
- TXNLIST_TXNID,
- TXNLIST_PGNO
-} db_txnlist_type;
-
-/*
- * Currently, region offsets are limited to 32-bits. I expect that's going
- * to have to be fixed in the not-too-distant future, since we won't want to
- * split 100Gb memory pools into that many different regions. It's typedef'd
- * so it won't be too painful to upgrade.
- */
-typedef u_int32_t roff_t;
-
-#if defined(__cplusplus)
-}
-#endif
-
-/*******************************************************
- * More general includes.
- *******************************************************/
-#include "debug.h"
-#include "mutex.h"
-#include "region.h"
-#include "mutex_ext.h"
-#include "env_ext.h"
-#include "os.h"
-#include "os_ext.h"
-#include "common_ext.h"
-
-#endif /* !_DB_INTERNAL_H_ */
diff --git a/db/include/db_join.h b/db/include/db_join.h
deleted file mode 100644
index d92887bb5..000000000
--- a/db/include/db_join.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1998, 1999, 2000
- * Sleepycat Software. All rights reserved.
- *
- * @(#)db_join.h 11.1 (Sleepycat) 7/25/99
- */
-
-#ifndef _DB_JOIN_H_
-#define _DB_JOIN_H_
-
-/*
- * Joins use a join cursor that is similar to a regular DB cursor except
- * that it only supports c_get and c_close functionality. Also, it does
- * not support the full range of flags for get.
- */
-typedef struct __join_cursor {
- u_int8_t *j_exhausted; /* Array of flags; is cursor i exhausted? */
- DBC **j_curslist; /* Array of cursors in the join: constant. */
- DBC **j_fdupcurs; /* Cursors w/ first intances of current dup. */
- DBC **j_workcurs; /* Scratch cursor copies to muck with. */
- DB *j_primary; /* Primary dbp. */
- DBT j_key; /* Used to do lookups. */
- u_int32_t j_ncurs; /* How many cursors do we have? */
-#define JOIN_RETRY 0x01 /* Error on primary get; re-return same key. */
- u_int32_t flags;
-} JOIN_CURSOR;
-
-#endif
diff --git a/db/include/db_page.h b/db/include/db_page.h
deleted file mode 100644
index 806642414..000000000
--- a/db/include/db_page.h
+++ /dev/null
@@ -1,576 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1996, 1997, 1998, 1999, 2000
- * Sleepycat Software. All rights reserved.
- *
- * $Id: db_page.h,v 11.28 2000/12/06 19:55:45 ubell Exp $
- */
-
-#ifndef _DB_PAGE_H_
-#define _DB_PAGE_H_
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-/*
- * DB page formats.
- *
- * !!!
- * This implementation requires that values within the following structures
- * NOT be padded -- note, ANSI C permits random padding within structures.
- * If your compiler pads randomly you can just forget ever making DB run on
- * your system. In addition, no data type can require larger alignment than
- * its own size, e.g., a 4-byte data element may not require 8-byte alignment.
- *
- * Note that key/data lengths are often stored in db_indx_t's -- this is
- * not accidental, nor does it limit the key/data size. If the key/data
- * item fits on a page, it's guaranteed to be small enough to fit into a
- * db_indx_t, and storing it in one saves space.
- */
-
-#define PGNO_INVALID 0 /* Invalid page number in any database. */
-#define PGNO_BASE_MD 0 /* Base database: metadata page number. */
-
-/* Page types. */
-#define P_INVALID 0 /* Invalid page type. */
-#define __P_DUPLICATE 1 /* Duplicate. DEPRECATED in 3.1 */
-#define P_HASH 2 /* Hash. */
-#define P_IBTREE 3 /* Btree internal. */
-#define P_IRECNO 4 /* Recno internal. */
-#define P_LBTREE 5 /* Btree leaf. */
-#define P_LRECNO 6 /* Recno leaf. */
-#define P_OVERFLOW 7 /* Overflow. */
-#define P_HASHMETA 8 /* Hash metadata page. */
-#define P_BTREEMETA 9 /* Btree metadata page. */
-#define P_QAMMETA 10 /* Queue metadata page. */
-#define P_QAMDATA 11 /* Queue data page. */
-#define P_LDUP 12 /* Off-page duplicate leaf. */
-#define P_PAGETYPE_MAX 13
-
-/*
- * When we create pages in mpool, we ask mpool to clear some number of bytes
- * in the header. This number must be at least as big as the regular page
- * headers and cover enough of the btree and hash meta-data pages to obliterate
- * the page type.
- */
-#define DB_PAGE_DB_LEN 32
-#define DB_PAGE_QUEUE_LEN 0
-
-/************************************************************************
- GENERIC METADATA PAGE HEADER
- *
- * !!!
- * The magic and version numbers have to be in the same place in all versions
- * of the metadata page as the application may not have upgraded the database.
- ************************************************************************/
-typedef struct _dbmeta31 {
- DB_LSN lsn; /* 00-07: LSN. */
- db_pgno_t pgno; /* 08-11: Current page number. */
- u_int32_t magic; /* 12-15: Magic number. */
- u_int32_t version; /* 16-19: Version. */
- u_int32_t pagesize; /* 20-23: Pagesize. */
- u_int8_t unused1[1]; /* 24: Unused. */
- u_int8_t type; /* 25: Page type. */
- u_int8_t unused2[2]; /* 26-27: Unused. */
- u_int32_t free; /* 28-31: Free list page number. */
- DB_LSN unused3; /* 32-39: former Lsn for allocation */
- u_int32_t key_count; /* 40-43: Cached key count. */
- u_int32_t record_count; /* 44-47: Cached record count. */
- u_int32_t flags; /* 48-51: Flags: unique to each AM. */
- /* 52-71: Unique file ID. */
- u_int8_t uid[DB_FILE_ID_LEN];
-} DBMETA31, DBMETA;
-
-/************************************************************************
- BTREE METADATA PAGE LAYOUT
- ************************************************************************/
-typedef struct _btmeta31 {
-#define BTM_DUP 0x001 /* Duplicates. */
-#define BTM_RECNO 0x002 /* Recno tree. */
-#define BTM_RECNUM 0x004 /* Btree: maintain record count. */
-#define BTM_FIXEDLEN 0x008 /* Recno: fixed length records. */
-#define BTM_RENUMBER 0x010 /* Recno: renumber on insert/delete. */
-#define BTM_SUBDB 0x020 /* Subdatabases. */
-#define BTM_DUPSORT 0x040 /* Duplicates are sorted. */
-#define BTM_MASK 0x07f
- DBMETA dbmeta; /* 00-71: Generic meta-data header. */
-
- u_int32_t maxkey; /* 72-75: Btree: Maxkey. */
- u_int32_t minkey; /* 76-79: Btree: Minkey. */
- u_int32_t re_len; /* 80-83: Recno: fixed-length record length. */
- u_int32_t re_pad; /* 84-87: Recno: fixed-length record pad. */
- u_int32_t root; /* 88-92: Root page. */
-
- /*
- * Minimum page size is 128.
- */
-} BTMETA31, BTMETA;
-
-/************************************************************************
- HASH METADATA PAGE LAYOUT
- ************************************************************************/
-typedef struct _hashmeta31 {
-#define DB_HASH_DUP 0x01 /* Duplicates. */
-#define DB_HASH_SUBDB 0x02 /* Subdatabases. */
-#define DB_HASH_DUPSORT 0x04 /* Duplicates are sorted. */
- DBMETA dbmeta; /* 00-71: Generic meta-data page header. */
-
- u_int32_t max_bucket; /* 72-75: ID of Maximum bucket in use */
- u_int32_t high_mask; /* 76-79: Modulo mask into table */
- u_int32_t low_mask; /* 80-83: Modulo mask into table lower half */
- u_int32_t ffactor; /* 84-87: Fill factor */
- u_int32_t nelem; /* 88-91: Number of keys in hash table */
- u_int32_t h_charkey; /* 92-95: Value of hash(CHARKEY) */
-#define NCACHED 32 /* number of spare points */
- /* 96-223: Spare pages for overflow */
- u_int32_t spares[NCACHED];
-
- /*
- * Minimum page size is 256.
- */
-} HMETA31, HMETA;
-
-/************************************************************************
- QUEUE METADATA PAGE LAYOUT
- ************************************************************************/
-/*
- * QAM Meta data page structure
- *
- */
-typedef struct _qmeta32 {
- DBMETA dbmeta; /* 00-71: Generic meta-data header. */
-
- u_int32_t first_recno; /* 72-75: First not deleted record. */
- u_int32_t cur_recno; /* 76-79: Last recno allocated. */
- u_int32_t re_len; /* 80-83: Fixed-length record length. */
- u_int32_t re_pad; /* 84-87: Fixed-length record pad. */
- u_int32_t rec_page; /* 88-91: Records Per Page. */
- u_int32_t page_ext; /* 92-95: Pages per extent */
-
- /*
- * Minimum page size is 128.
- */
-} QMETA32, QMETA;
-
-/*
- * DBMETASIZE is a constant used by __db_file_setup and DB->verify
- * as a buffer which is guaranteed to be larger than any possible
- * metadata page size and smaller than any disk sector.
- */
-#define DBMETASIZE 256
-
-/************************************************************************
- BTREE/HASH MAIN PAGE LAYOUT
- ************************************************************************/
-/*
- * +-----------------------------------+
- * | lsn | pgno | prev pgno |
- * +-----------------------------------+
- * | next pgno | entries | hf offset |
- * +-----------------------------------+
- * | level | type | index |
- * +-----------------------------------+
- * | index | free --> |
- * +-----------+-----------------------+
- * | F R E E A R E A |
- * +-----------------------------------+
- * | <-- free | item |
- * +-----------------------------------+
- * | item | item | item |
- * +-----------------------------------+
- *
- * sizeof(PAGE) == 26 bytes, and the following indices are guaranteed to be
- * two-byte aligned.
- *
- * For hash and btree leaf pages, index items are paired, e.g., inp[0] is the
- * key for inp[1]'s data. All other types of pages only contain single items.
- */
-typedef struct _db_page {
- DB_LSN lsn; /* 00-07: Log sequence number. */
- db_pgno_t pgno; /* 08-11: Current page number. */
- db_pgno_t prev_pgno; /* 12-15: Previous page number. */
- db_pgno_t next_pgno; /* 16-19: Next page number. */
- db_indx_t entries; /* 20-21: Number of items on the page. */
- db_indx_t hf_offset; /* 22-23: High free byte page offset. */
-
- /*
- * The btree levels are numbered from the leaf to the root, starting
- * with 1, so the leaf is level 1, its parent is level 2, and so on.
- * We maintain this level on all btree pages, but the only place that
- * we actually need it is on the root page. It would not be difficult
- * to hide the byte on the root page once it becomes an internal page,
- * so we could get this byte back if we needed it for something else.
- */
-#define LEAFLEVEL 1
-#define MAXBTREELEVEL 255
- u_int8_t level; /* 24: Btree tree level. */
- u_int8_t type; /* 25: Page type. */
- db_indx_t inp[1]; /* Variable length index of items. */
-} PAGE;
-
-/* PAGE element macros. */
-#define LSN(p) (((PAGE *)p)->lsn)
-#define PGNO(p) (((PAGE *)p)->pgno)
-#define PREV_PGNO(p) (((PAGE *)p)->prev_pgno)
-#define NEXT_PGNO(p) (((PAGE *)p)->next_pgno)
-#define NUM_ENT(p) (((PAGE *)p)->entries)
-#define HOFFSET(p) (((PAGE *)p)->hf_offset)
-#define LEVEL(p) (((PAGE *)p)->level)
-#define TYPE(p) (((PAGE *)p)->type)
-
-/************************************************************************
- QUEUE MAIN PAGE LAYOUT
- ************************************************************************/
-typedef struct _qpage {
- DB_LSN lsn; /* 00-07: Log sequence number. */
- db_pgno_t pgno; /* 08-11: Current page number. */
- u_int32_t unused0[3]; /* 12-23: Unused. */
- u_int8_t unused1[1]; /* 24: Unused. */
- u_int8_t type; /* 25: Page type. */
- u_int8_t unused2[2]; /* 26-27: Unused. */
-} QPAGE;
-
-/*
- * !!!
- * The next_pgno and prev_pgno fields are not maintained for btree and recno
- * internal pages. Doing so only provides a minor performance improvement,
- * it's hard to do when deleting internal pages, and it increases the chance
- * of deadlock during deletes and splits because we have to re-link pages at
- * more than the leaf level.
- *
- * !!!
- * The btree/recno access method needs db_recno_t bytes of space on the root
- * page to specify how many records are stored in the tree. (The alternative
- * is to store the number of records in the meta-data page, which will create
- * a second hot spot in trees being actively modified, or recalculate it from
- * the BINTERNAL fields on each access.) Overload the PREV_PGNO field.
- */
-#define RE_NREC(p) \
- ((TYPE(p) == P_IBTREE || TYPE(p) == P_IRECNO) ? \
- PREV_PGNO(p) : (TYPE(p) == P_LBTREE ? NUM_ENT(p) / 2 : NUM_ENT(p)))
-#define RE_NREC_ADJ(p, adj) \
- PREV_PGNO(p) += adj;
-#define RE_NREC_SET(p, num) \
- PREV_PGNO(p) = num;
-
-/*
- * Initialize a page.
- *
- * !!!
- * Don't modify the page's LSN, code depends on it being unchanged after a
- * P_INIT call.
- */
-#define P_INIT(pg, pg_size, n, pg_prev, pg_next, btl, pg_type) do { \
- PGNO(pg) = n; \
- PREV_PGNO(pg) = pg_prev; \
- NEXT_PGNO(pg) = pg_next; \
- NUM_ENT(pg) = 0; \
- HOFFSET(pg) = pg_size; \
- LEVEL(pg) = btl; \
- TYPE(pg) = pg_type; \
-} while (0)
-
-/* Page header length (offset to first index). */
-#define P_OVERHEAD (SSZA(PAGE, inp))
-
-/* First free byte. */
-#define LOFFSET(pg) (P_OVERHEAD + NUM_ENT(pg) * sizeof(db_indx_t))
-
-/* Free space on a regular page. */
-#define P_FREESPACE(pg) (HOFFSET(pg) - LOFFSET(pg))
-
-/* Get a pointer to the bytes at a specific index. */
-#define P_ENTRY(pg, indx) ((u_int8_t *)pg + ((PAGE *)pg)->inp[indx])
-
-/************************************************************************
- OVERFLOW PAGE LAYOUT
- ************************************************************************/
-
-/*
- * Overflow items are referenced by HOFFPAGE and BOVERFLOW structures, which
- * store a page number (the first page of the overflow item) and a length
- * (the total length of the overflow item). The overflow item consists of
- * some number of overflow pages, linked by the next_pgno field of the page.
- * A next_pgno field of PGNO_INVALID flags the end of the overflow item.
- *
- * Overflow page overloads:
- * The amount of overflow data stored on each page is stored in the
- * hf_offset field.
- *
- * The implementation reference counts overflow items as it's possible
- * for them to be promoted onto btree internal pages. The reference
- * count is stored in the entries field.
- */
-#define OV_LEN(p) (((PAGE *)p)->hf_offset)
-#define OV_REF(p) (((PAGE *)p)->entries)
-
-/* Maximum number of bytes that you can put on an overflow page. */
-#define P_MAXSPACE(psize) ((psize) - P_OVERHEAD)
-
-/* Free space on an overflow page. */
-#define P_OVFLSPACE(psize, pg) (P_MAXSPACE(psize) - HOFFSET(pg))
-
-/************************************************************************
- HASH PAGE LAYOUT
- ************************************************************************/
-
-/* Each index references a group of bytes on the page. */
-#define H_KEYDATA 1 /* Key/data item. */
-#define H_DUPLICATE 2 /* Duplicate key/data item. */
-#define H_OFFPAGE 3 /* Overflow key/data item. */
-#define H_OFFDUP 4 /* Overflow page of duplicates. */
-
-/*
- * !!!
- * Items on hash pages are (potentially) unaligned, so we can never cast the
- * (page + offset) pointer to an HKEYDATA, HOFFPAGE or HOFFDUP structure, as
- * we do with B+tree on-page structures. Because we frequently want the type
- * field, it requires no alignment, and it's in the same location in all three
- * structures, there's a pair of macros.
- */
-#define HPAGE_PTYPE(p) (*(u_int8_t *)p)
-#define HPAGE_TYPE(pg, indx) (*P_ENTRY(pg, indx))
-
-/*
- * The first and second types are H_KEYDATA and H_DUPLICATE, represented
- * by the HKEYDATA structure:
- *
- * +-----------------------------------+
- * | type | key/data ... |
- * +-----------------------------------+
- *
- * For duplicates, the data field encodes duplicate elements in the data
- * field:
- *
- * +---------------------------------------------------------------+
- * | type | len1 | element1 | len1 | len2 | element2 | len2 |
- * +---------------------------------------------------------------+
- *
- * Thus, by keeping track of the offset in the element, we can do both
- * backward and forward traversal.
- */
-typedef struct _hkeydata {
- u_int8_t type; /* 00: Page type. */
- u_int8_t data[1]; /* Variable length key/data item. */
-} HKEYDATA;
-#define HKEYDATA_DATA(p) (((u_int8_t *)p) + SSZA(HKEYDATA, data))
-
-/*
- * The length of any HKEYDATA item. Note that indx is an element index,
- * not a PAIR index.
- */
-#define LEN_HITEM(pg, pgsize, indx) \
- (((indx) == 0 ? pgsize : \
- ((PAGE *)(pg))->inp[indx - 1]) - ((PAGE *)(pg))->inp[indx])
-
-#define LEN_HKEYDATA(pg, psize, indx) \
- (LEN_HITEM(pg, psize, indx) - HKEYDATA_SIZE(0))
-
-/*
- * Page space required to add a new HKEYDATA item to the page, with and
- * without the index value.
- */
-#define HKEYDATA_SIZE(len) \
- ((len) + SSZA(HKEYDATA, data))
-#define HKEYDATA_PSIZE(len) \
- (HKEYDATA_SIZE(len) + sizeof(db_indx_t))
-
-/* Put a HKEYDATA item at the location referenced by a page entry. */
-#define PUT_HKEYDATA(pe, kd, len, type) { \
- ((HKEYDATA *)pe)->type = type; \
- memcpy((u_int8_t *)pe + sizeof(u_int8_t), kd, len); \
-}
-
-/*
- * Macros the describe the page layout in terms of key-data pairs.
- */
-#define H_NUMPAIRS(pg) (NUM_ENT(pg) / 2)
-#define H_KEYINDEX(indx) (indx)
-#define H_DATAINDEX(indx) ((indx) + 1)
-#define H_PAIRKEY(pg, indx) P_ENTRY(pg, H_KEYINDEX(indx))
-#define H_PAIRDATA(pg, indx) P_ENTRY(pg, H_DATAINDEX(indx))
-#define H_PAIRSIZE(pg, psize, indx) \
- (LEN_HITEM(pg, psize, H_KEYINDEX(indx)) + \
- LEN_HITEM(pg, psize, H_DATAINDEX(indx)))
-#define LEN_HDATA(p, psize, indx) LEN_HKEYDATA(p, psize, H_DATAINDEX(indx))
-#define LEN_HKEY(p, psize, indx) LEN_HKEYDATA(p, psize, H_KEYINDEX(indx))
-
-/*
- * The third type is the H_OFFPAGE, represented by the HOFFPAGE structure:
- */
-typedef struct _hoffpage {
- u_int8_t type; /* 00: Page type and delete flag. */
- u_int8_t unused[3]; /* 01-03: Padding, unused. */
- db_pgno_t pgno; /* 04-07: Offpage page number. */
- u_int32_t tlen; /* 08-11: Total length of item. */
-} HOFFPAGE;
-
-#define HOFFPAGE_PGNO(p) (((u_int8_t *)p) + SSZ(HOFFPAGE, pgno))
-#define HOFFPAGE_TLEN(p) (((u_int8_t *)p) + SSZ(HOFFPAGE, tlen))
-
-/*
- * Page space required to add a new HOFFPAGE item to the page, with and
- * without the index value.
- */
-#define HOFFPAGE_SIZE (sizeof(HOFFPAGE))
-#define HOFFPAGE_PSIZE (HOFFPAGE_SIZE + sizeof(db_indx_t))
-
-/*
- * The fourth type is H_OFFDUP represented by the HOFFDUP structure:
- */
-typedef struct _hoffdup {
- u_int8_t type; /* 00: Page type and delete flag. */
- u_int8_t unused[3]; /* 01-03: Padding, unused. */
- db_pgno_t pgno; /* 04-07: Offpage page number. */
-} HOFFDUP;
-#define HOFFDUP_PGNO(p) (((u_int8_t *)p) + SSZ(HOFFDUP, pgno))
-
-/*
- * Page space required to add a new HOFFDUP item to the page, with and
- * without the index value.
- */
-#define HOFFDUP_SIZE (sizeof(HOFFDUP))
-
-/************************************************************************
- BTREE PAGE LAYOUT
- ************************************************************************/
-
-/* Each index references a group of bytes on the page. */
-#define B_KEYDATA 1 /* Key/data item. */
-#define B_DUPLICATE 2 /* Duplicate key/data item. */
-#define B_OVERFLOW 3 /* Overflow key/data item. */
-
-/*
- * We have to store a deleted entry flag in the page. The reason is complex,
- * but the simple version is that we can't delete on-page items referenced by
- * a cursor -- the return order of subsequent insertions might be wrong. The
- * delete flag is an overload of the top bit of the type byte.
- */
-#define B_DELETE (0x80)
-#define B_DCLR(t) (t) &= ~B_DELETE
-#define B_DSET(t) (t) |= B_DELETE
-#define B_DISSET(t) ((t) & B_DELETE)
-
-#define B_TYPE(t) ((t) & ~B_DELETE)
-#define B_TSET(t, type, deleted) { \
- (t) = (type); \
- if (deleted) \
- B_DSET(t); \
-}
-
-/*
- * The first type is B_KEYDATA, represented by the BKEYDATA structure:
- */
-typedef struct _bkeydata {
- db_indx_t len; /* 00-01: Key/data item length. */
- u_int8_t type; /* 02: Page type AND DELETE FLAG. */
- u_int8_t data[1]; /* Variable length key/data item. */
-} BKEYDATA;
-
-/* Get a BKEYDATA item for a specific index. */
-#define GET_BKEYDATA(pg, indx) \
- ((BKEYDATA *)P_ENTRY(pg, indx))
-
-/*
- * Page space required to add a new BKEYDATA item to the page, with and
- * without the index value.
- */
-#define BKEYDATA_SIZE(len) \
- ALIGN((len) + SSZA(BKEYDATA, data), sizeof(u_int32_t))
-#define BKEYDATA_PSIZE(len) \
- (BKEYDATA_SIZE(len) + sizeof(db_indx_t))
-
-/*
- * The second and third types are B_DUPLICATE and B_OVERFLOW, represented
- * by the BOVERFLOW structure.
- */
-typedef struct _boverflow {
- db_indx_t unused1; /* 00-01: Padding, unused. */
- u_int8_t type; /* 02: Page type AND DELETE FLAG. */
- u_int8_t unused2; /* 03: Padding, unused. */
- db_pgno_t pgno; /* 04-07: Next page number. */
- u_int32_t tlen; /* 08-11: Total length of item. */
-} BOVERFLOW;
-
-/* Get a BOVERFLOW item for a specific index. */
-#define GET_BOVERFLOW(pg, indx) \
- ((BOVERFLOW *)P_ENTRY(pg, indx))
-
-/*
- * Page space required to add a new BOVERFLOW item to the page, with and
- * without the index value.
- */
-#define BOVERFLOW_SIZE \
- ALIGN(sizeof(BOVERFLOW), sizeof(u_int32_t))
-#define BOVERFLOW_PSIZE \
- (BOVERFLOW_SIZE + sizeof(db_indx_t))
-
-/*
- * Btree leaf and hash page layouts group indices in sets of two, one for the
- * key and one for the data. Everything else does it in sets of one to save
- * space. Use the following macros so that it's real obvious what's going on.
- */
-#define O_INDX 1
-#define P_INDX 2
-
-/************************************************************************
- BTREE INTERNAL PAGE LAYOUT
- ************************************************************************/
-
-/*
- * Btree internal entry.
- */
-typedef struct _binternal {
- db_indx_t len; /* 00-01: Key/data item length. */
- u_int8_t type; /* 02: Page type AND DELETE FLAG. */
- u_int8_t unused; /* 03: Padding, unused. */
- db_pgno_t pgno; /* 04-07: Page number of referenced page. */
- db_recno_t nrecs; /* 08-11: Subtree record count. */
- u_int8_t data[1]; /* Variable length key item. */
-} BINTERNAL;
-
-/* Get a BINTERNAL item for a specific index. */
-#define GET_BINTERNAL(pg, indx) \
- ((BINTERNAL *)P_ENTRY(pg, indx))
-
-/*
- * Page space required to add a new BINTERNAL item to the page, with and
- * without the index value.
- */
-#define BINTERNAL_SIZE(len) \
- ALIGN((len) + SSZA(BINTERNAL, data), sizeof(u_int32_t))
-#define BINTERNAL_PSIZE(len) \
- (BINTERNAL_SIZE(len) + sizeof(db_indx_t))
-
-/************************************************************************
- RECNO INTERNAL PAGE LAYOUT
- ************************************************************************/
-
-/*
- * The recno internal entry.
- */
-typedef struct _rinternal {
- db_pgno_t pgno; /* 00-03: Page number of referenced page. */
- db_recno_t nrecs; /* 04-07: Subtree record count. */
-} RINTERNAL;
-
-/* Get a RINTERNAL item for a specific index. */
-#define GET_RINTERNAL(pg, indx) \
- ((RINTERNAL *)P_ENTRY(pg, indx))
-
-/*
- * Page space required to add a new RINTERNAL item to the page, with and
- * without the index value.
- */
-#define RINTERNAL_SIZE \
- ALIGN(sizeof(RINTERNAL), sizeof(u_int32_t))
-#define RINTERNAL_PSIZE \
- (RINTERNAL_SIZE + sizeof(db_indx_t))
-
-#if defined(__cplusplus)
-}
-#endif
-
-#endif /* _DB_PAGE_H_ */
diff --git a/db/include/db_server.h b/db/include/db_server.h
deleted file mode 100644
index e12fdb212..000000000
--- a/db/include/db_server.h
+++ /dev/null
@@ -1,762 +0,0 @@
-/*
- * Please do not edit this file.
- * It was generated using rpcgen.
- */
-
-#ifndef _DB_SERVER_H_RPCGEN
-#define _DB_SERVER_H_RPCGEN
-
-#include <rpc/rpc.h>
-
-struct __env_cachesize_msg {
- u_int dbenvcl_id;
- u_int gbytes;
- u_int bytes;
- u_int ncache;
-};
-typedef struct __env_cachesize_msg __env_cachesize_msg;
-
-struct __env_cachesize_reply {
- u_int status;
-};
-typedef struct __env_cachesize_reply __env_cachesize_reply;
-
-struct __env_close_msg {
- u_int dbenvcl_id;
- u_int flags;
-};
-typedef struct __env_close_msg __env_close_msg;
-
-struct __env_close_reply {
- u_int status;
-};
-typedef struct __env_close_reply __env_close_reply;
-
-struct __env_create_msg {
- u_int timeout;
-};
-typedef struct __env_create_msg __env_create_msg;
-
-struct __env_create_reply {
- u_int status;
- u_int envcl_id;
-};
-typedef struct __env_create_reply __env_create_reply;
-
-struct __env_flags_msg {
- u_int dbenvcl_id;
- u_int flags;
- u_int onoff;
-};
-typedef struct __env_flags_msg __env_flags_msg;
-
-struct __env_flags_reply {
- u_int status;
-};
-typedef struct __env_flags_reply __env_flags_reply;
-
-struct __env_open_msg {
- u_int dbenvcl_id;
- char *home;
- u_int flags;
- u_int mode;
-};
-typedef struct __env_open_msg __env_open_msg;
-
-struct __env_open_reply {
- u_int status;
-};
-typedef struct __env_open_reply __env_open_reply;
-
-struct __env_remove_msg {
- u_int dbenvcl_id;
- char *home;
- u_int flags;
-};
-typedef struct __env_remove_msg __env_remove_msg;
-
-struct __env_remove_reply {
- u_int status;
-};
-typedef struct __env_remove_reply __env_remove_reply;
-
-struct __txn_abort_msg {
- u_int txnpcl_id;
-};
-typedef struct __txn_abort_msg __txn_abort_msg;
-
-struct __txn_abort_reply {
- u_int status;
-};
-typedef struct __txn_abort_reply __txn_abort_reply;
-
-struct __txn_begin_msg {
- u_int envpcl_id;
- u_int parentcl_id;
- u_int flags;
-};
-typedef struct __txn_begin_msg __txn_begin_msg;
-
-struct __txn_begin_reply {
- u_int status;
- u_int txnidcl_id;
-};
-typedef struct __txn_begin_reply __txn_begin_reply;
-
-struct __txn_commit_msg {
- u_int txnpcl_id;
- u_int flags;
-};
-typedef struct __txn_commit_msg __txn_commit_msg;
-
-struct __txn_commit_reply {
- u_int status;
-};
-typedef struct __txn_commit_reply __txn_commit_reply;
-
-struct __db_bt_maxkey_msg {
- u_int dbpcl_id;
- u_int maxkey;
-};
-typedef struct __db_bt_maxkey_msg __db_bt_maxkey_msg;
-
-struct __db_bt_maxkey_reply {
- u_int status;
-};
-typedef struct __db_bt_maxkey_reply __db_bt_maxkey_reply;
-
-struct __db_bt_minkey_msg {
- u_int dbpcl_id;
- u_int minkey;
-};
-typedef struct __db_bt_minkey_msg __db_bt_minkey_msg;
-
-struct __db_bt_minkey_reply {
- u_int status;
-};
-typedef struct __db_bt_minkey_reply __db_bt_minkey_reply;
-
-struct __db_close_msg {
- u_int dbpcl_id;
- u_int flags;
-};
-typedef struct __db_close_msg __db_close_msg;
-
-struct __db_close_reply {
- u_int status;
-};
-typedef struct __db_close_reply __db_close_reply;
-
-struct __db_create_msg {
- u_int flags;
- u_int envpcl_id;
-};
-typedef struct __db_create_msg __db_create_msg;
-
-struct __db_create_reply {
- u_int status;
- u_int dbpcl_id;
-};
-typedef struct __db_create_reply __db_create_reply;
-
-struct __db_del_msg {
- u_int dbpcl_id;
- u_int txnpcl_id;
- u_int keydlen;
- u_int keydoff;
- u_int keyflags;
- struct {
- u_int keydata_len;
- char *keydata_val;
- } keydata;
- u_int flags;
-};
-typedef struct __db_del_msg __db_del_msg;
-
-struct __db_del_reply {
- u_int status;
-};
-typedef struct __db_del_reply __db_del_reply;
-
-struct __db_extentsize_msg {
- u_int dbpcl_id;
- u_int extentsize;
-};
-typedef struct __db_extentsize_msg __db_extentsize_msg;
-
-struct __db_extentsize_reply {
- u_int status;
-};
-typedef struct __db_extentsize_reply __db_extentsize_reply;
-
-struct __db_flags_msg {
- u_int dbpcl_id;
- u_int flags;
-};
-typedef struct __db_flags_msg __db_flags_msg;
-
-struct __db_flags_reply {
- u_int status;
-};
-typedef struct __db_flags_reply __db_flags_reply;
-
-struct __db_get_msg {
- u_int dbpcl_id;
- u_int txnpcl_id;
- u_int keydlen;
- u_int keydoff;
- u_int keyflags;
- struct {
- u_int keydata_len;
- char *keydata_val;
- } keydata;
- u_int datadlen;
- u_int datadoff;
- u_int dataflags;
- struct {
- u_int datadata_len;
- char *datadata_val;
- } datadata;
- u_int flags;
-};
-typedef struct __db_get_msg __db_get_msg;
-
-struct __db_get_reply {
- u_int status;
- struct {
- u_int keydata_len;
- char *keydata_val;
- } keydata;
- struct {
- u_int datadata_len;
- char *datadata_val;
- } datadata;
-};
-typedef struct __db_get_reply __db_get_reply;
-
-struct __db_h_ffactor_msg {
- u_int dbpcl_id;
- u_int ffactor;
-};
-typedef struct __db_h_ffactor_msg __db_h_ffactor_msg;
-
-struct __db_h_ffactor_reply {
- u_int status;
-};
-typedef struct __db_h_ffactor_reply __db_h_ffactor_reply;
-
-struct __db_h_nelem_msg {
- u_int dbpcl_id;
- u_int nelem;
-};
-typedef struct __db_h_nelem_msg __db_h_nelem_msg;
-
-struct __db_h_nelem_reply {
- u_int status;
-};
-typedef struct __db_h_nelem_reply __db_h_nelem_reply;
-
-struct __db_key_range_msg {
- u_int dbpcl_id;
- u_int txnpcl_id;
- u_int keydlen;
- u_int keydoff;
- u_int keyflags;
- struct {
- u_int keydata_len;
- char *keydata_val;
- } keydata;
- u_int flags;
-};
-typedef struct __db_key_range_msg __db_key_range_msg;
-
-struct __db_key_range_reply {
- u_int status;
- double less;
- double equal;
- double greater;
-};
-typedef struct __db_key_range_reply __db_key_range_reply;
-
-struct __db_lorder_msg {
- u_int dbpcl_id;
- u_int lorder;
-};
-typedef struct __db_lorder_msg __db_lorder_msg;
-
-struct __db_lorder_reply {
- u_int status;
-};
-typedef struct __db_lorder_reply __db_lorder_reply;
-
-struct __db_open_msg {
- u_int dbpcl_id;
- char *name;
- char *subdb;
- u_int type;
- u_int flags;
- u_int mode;
-};
-typedef struct __db_open_msg __db_open_msg;
-
-struct __db_open_reply {
- u_int status;
- u_int type;
- u_int dbflags;
-};
-typedef struct __db_open_reply __db_open_reply;
-
-struct __db_pagesize_msg {
- u_int dbpcl_id;
- u_int pagesize;
-};
-typedef struct __db_pagesize_msg __db_pagesize_msg;
-
-struct __db_pagesize_reply {
- u_int status;
-};
-typedef struct __db_pagesize_reply __db_pagesize_reply;
-
-struct __db_put_msg {
- u_int dbpcl_id;
- u_int txnpcl_id;
- u_int keydlen;
- u_int keydoff;
- u_int keyflags;
- struct {
- u_int keydata_len;
- char *keydata_val;
- } keydata;
- u_int datadlen;
- u_int datadoff;
- u_int dataflags;
- struct {
- u_int datadata_len;
- char *datadata_val;
- } datadata;
- u_int flags;
-};
-typedef struct __db_put_msg __db_put_msg;
-
-struct __db_put_reply {
- u_int status;
- struct {
- u_int keydata_len;
- char *keydata_val;
- } keydata;
-};
-typedef struct __db_put_reply __db_put_reply;
-
-struct __db_re_delim_msg {
- u_int dbpcl_id;
- u_int delim;
-};
-typedef struct __db_re_delim_msg __db_re_delim_msg;
-
-struct __db_re_delim_reply {
- u_int status;
-};
-typedef struct __db_re_delim_reply __db_re_delim_reply;
-
-struct __db_re_len_msg {
- u_int dbpcl_id;
- u_int len;
-};
-typedef struct __db_re_len_msg __db_re_len_msg;
-
-struct __db_re_len_reply {
- u_int status;
-};
-typedef struct __db_re_len_reply __db_re_len_reply;
-
-struct __db_re_pad_msg {
- u_int dbpcl_id;
- u_int pad;
-};
-typedef struct __db_re_pad_msg __db_re_pad_msg;
-
-struct __db_re_pad_reply {
- u_int status;
-};
-typedef struct __db_re_pad_reply __db_re_pad_reply;
-
-struct __db_remove_msg {
- u_int dbpcl_id;
- char *name;
- char *subdb;
- u_int flags;
-};
-typedef struct __db_remove_msg __db_remove_msg;
-
-struct __db_remove_reply {
- u_int status;
-};
-typedef struct __db_remove_reply __db_remove_reply;
-
-struct __db_rename_msg {
- u_int dbpcl_id;
- char *name;
- char *subdb;
- char *newname;
- u_int flags;
-};
-typedef struct __db_rename_msg __db_rename_msg;
-
-struct __db_rename_reply {
- u_int status;
-};
-typedef struct __db_rename_reply __db_rename_reply;
-
-struct __db_stat_msg {
- u_int dbpcl_id;
- u_int flags;
-};
-typedef struct __db_stat_msg __db_stat_msg;
-
-struct __db_stat_statsreplist {
- struct {
- u_int ent_len;
- char *ent_val;
- } ent;
- struct __db_stat_statsreplist *next;
-};
-typedef struct __db_stat_statsreplist __db_stat_statsreplist;
-
-struct __db_stat_reply {
- u_int status;
- __db_stat_statsreplist *statslist;
-};
-typedef struct __db_stat_reply __db_stat_reply;
-
-struct __db_swapped_msg {
- u_int dbpcl_id;
-};
-typedef struct __db_swapped_msg __db_swapped_msg;
-
-struct __db_swapped_reply {
- u_int status;
-};
-typedef struct __db_swapped_reply __db_swapped_reply;
-
-struct __db_sync_msg {
- u_int dbpcl_id;
- u_int flags;
-};
-typedef struct __db_sync_msg __db_sync_msg;
-
-struct __db_sync_reply {
- u_int status;
-};
-typedef struct __db_sync_reply __db_sync_reply;
-
-struct __db_cursor_msg {
- u_int dbpcl_id;
- u_int txnpcl_id;
- u_int flags;
-};
-typedef struct __db_cursor_msg __db_cursor_msg;
-
-struct __db_cursor_reply {
- u_int status;
- u_int dbcidcl_id;
-};
-typedef struct __db_cursor_reply __db_cursor_reply;
-
-struct __db_join_curslist {
- struct {
- u_int ent_len;
- char *ent_val;
- } ent;
- struct __db_join_curslist *next;
-};
-typedef struct __db_join_curslist __db_join_curslist;
-
-struct __db_join_msg {
- u_int dbpcl_id;
- __db_join_curslist *curslist;
- u_int flags;
-};
-typedef struct __db_join_msg __db_join_msg;
-
-struct __db_join_reply {
- u_int status;
- u_int dbcidcl_id;
-};
-typedef struct __db_join_reply __db_join_reply;
-
-struct __dbc_close_msg {
- u_int dbccl_id;
-};
-typedef struct __dbc_close_msg __dbc_close_msg;
-
-struct __dbc_close_reply {
- u_int status;
-};
-typedef struct __dbc_close_reply __dbc_close_reply;
-
-struct __dbc_count_msg {
- u_int dbccl_id;
- u_int flags;
-};
-typedef struct __dbc_count_msg __dbc_count_msg;
-
-struct __dbc_count_reply {
- u_int status;
- u_int dupcount;
-};
-typedef struct __dbc_count_reply __dbc_count_reply;
-
-struct __dbc_del_msg {
- u_int dbccl_id;
- u_int flags;
-};
-typedef struct __dbc_del_msg __dbc_del_msg;
-
-struct __dbc_del_reply {
- u_int status;
-};
-typedef struct __dbc_del_reply __dbc_del_reply;
-
-struct __dbc_dup_msg {
- u_int dbccl_id;
- u_int flags;
-};
-typedef struct __dbc_dup_msg __dbc_dup_msg;
-
-struct __dbc_dup_reply {
- u_int status;
- u_int dbcidcl_id;
-};
-typedef struct __dbc_dup_reply __dbc_dup_reply;
-
-struct __dbc_get_msg {
- u_int dbccl_id;
- u_int keydlen;
- u_int keydoff;
- u_int keyflags;
- struct {
- u_int keydata_len;
- char *keydata_val;
- } keydata;
- u_int datadlen;
- u_int datadoff;
- u_int dataflags;
- struct {
- u_int datadata_len;
- char *datadata_val;
- } datadata;
- u_int flags;
-};
-typedef struct __dbc_get_msg __dbc_get_msg;
-
-struct __dbc_get_reply {
- u_int status;
- struct {
- u_int keydata_len;
- char *keydata_val;
- } keydata;
- struct {
- u_int datadata_len;
- char *datadata_val;
- } datadata;
-};
-typedef struct __dbc_get_reply __dbc_get_reply;
-
-struct __dbc_put_msg {
- u_int dbccl_id;
- u_int keydlen;
- u_int keydoff;
- u_int keyflags;
- struct {
- u_int keydata_len;
- char *keydata_val;
- } keydata;
- u_int datadlen;
- u_int datadoff;
- u_int dataflags;
- struct {
- u_int datadata_len;
- char *datadata_val;
- } datadata;
- u_int flags;
-};
-typedef struct __dbc_put_msg __dbc_put_msg;
-
-struct __dbc_put_reply {
- u_int status;
- struct {
- u_int keydata_len;
- char *keydata_val;
- } keydata;
-};
-typedef struct __dbc_put_reply __dbc_put_reply;
-
-#define DB_SERVERPROG ((unsigned long)(351457))
-#define DB_SERVERVERS ((unsigned long)(1))
-#define __DB_env_cachesize ((unsigned long)(1))
-extern __env_cachesize_reply * __db_env_cachesize_1();
-#define __DB_env_close ((unsigned long)(2))
-extern __env_close_reply * __db_env_close_1();
-#define __DB_env_create ((unsigned long)(3))
-extern __env_create_reply * __db_env_create_1();
-#define __DB_env_flags ((unsigned long)(4))
-extern __env_flags_reply * __db_env_flags_1();
-#define __DB_env_open ((unsigned long)(5))
-extern __env_open_reply * __db_env_open_1();
-#define __DB_env_remove ((unsigned long)(6))
-extern __env_remove_reply * __db_env_remove_1();
-#define __DB_txn_abort ((unsigned long)(7))
-extern __txn_abort_reply * __db_txn_abort_1();
-#define __DB_txn_begin ((unsigned long)(8))
-extern __txn_begin_reply * __db_txn_begin_1();
-#define __DB_txn_commit ((unsigned long)(9))
-extern __txn_commit_reply * __db_txn_commit_1();
-#define __DB_db_bt_maxkey ((unsigned long)(10))
-extern __db_bt_maxkey_reply * __db_db_bt_maxkey_1();
-#define __DB_db_bt_minkey ((unsigned long)(11))
-extern __db_bt_minkey_reply * __db_db_bt_minkey_1();
-#define __DB_db_close ((unsigned long)(12))
-extern __db_close_reply * __db_db_close_1();
-#define __DB_db_create ((unsigned long)(13))
-extern __db_create_reply * __db_db_create_1();
-#define __DB_db_del ((unsigned long)(14))
-extern __db_del_reply * __db_db_del_1();
-#define __DB_db_extentsize ((unsigned long)(15))
-extern __db_extentsize_reply * __db_db_extentsize_1();
-#define __DB_db_flags ((unsigned long)(16))
-extern __db_flags_reply * __db_db_flags_1();
-#define __DB_db_get ((unsigned long)(17))
-extern __db_get_reply * __db_db_get_1();
-#define __DB_db_h_ffactor ((unsigned long)(18))
-extern __db_h_ffactor_reply * __db_db_h_ffactor_1();
-#define __DB_db_h_nelem ((unsigned long)(19))
-extern __db_h_nelem_reply * __db_db_h_nelem_1();
-#define __DB_db_key_range ((unsigned long)(20))
-extern __db_key_range_reply * __db_db_key_range_1();
-#define __DB_db_lorder ((unsigned long)(21))
-extern __db_lorder_reply * __db_db_lorder_1();
-#define __DB_db_open ((unsigned long)(22))
-extern __db_open_reply * __db_db_open_1();
-#define __DB_db_pagesize ((unsigned long)(23))
-extern __db_pagesize_reply * __db_db_pagesize_1();
-#define __DB_db_put ((unsigned long)(24))
-extern __db_put_reply * __db_db_put_1();
-#define __DB_db_re_delim ((unsigned long)(25))
-extern __db_re_delim_reply * __db_db_re_delim_1();
-#define __DB_db_re_len ((unsigned long)(26))
-extern __db_re_len_reply * __db_db_re_len_1();
-#define __DB_db_re_pad ((unsigned long)(27))
-extern __db_re_pad_reply * __db_db_re_pad_1();
-#define __DB_db_remove ((unsigned long)(28))
-extern __db_remove_reply * __db_db_remove_1();
-#define __DB_db_rename ((unsigned long)(29))
-extern __db_rename_reply * __db_db_rename_1();
-#define __DB_db_stat ((unsigned long)(30))
-extern __db_stat_reply * __db_db_stat_1();
-#define __DB_db_swapped ((unsigned long)(31))
-extern __db_swapped_reply * __db_db_swapped_1();
-#define __DB_db_sync ((unsigned long)(32))
-extern __db_sync_reply * __db_db_sync_1();
-#define __DB_db_cursor ((unsigned long)(33))
-extern __db_cursor_reply * __db_db_cursor_1();
-#define __DB_db_join ((unsigned long)(34))
-extern __db_join_reply * __db_db_join_1();
-#define __DB_dbc_close ((unsigned long)(35))
-extern __dbc_close_reply * __db_dbc_close_1();
-#define __DB_dbc_count ((unsigned long)(36))
-extern __dbc_count_reply * __db_dbc_count_1();
-#define __DB_dbc_del ((unsigned long)(37))
-extern __dbc_del_reply * __db_dbc_del_1();
-#define __DB_dbc_dup ((unsigned long)(38))
-extern __dbc_dup_reply * __db_dbc_dup_1();
-#define __DB_dbc_get ((unsigned long)(39))
-extern __dbc_get_reply * __db_dbc_get_1();
-#define __DB_dbc_put ((unsigned long)(40))
-extern __dbc_put_reply * __db_dbc_put_1();
-extern int db_serverprog_1_freeresult();
-
-/* the xdr functions */
-extern bool_t xdr___env_cachesize_msg();
-extern bool_t xdr___env_cachesize_reply();
-extern bool_t xdr___env_close_msg();
-extern bool_t xdr___env_close_reply();
-extern bool_t xdr___env_create_msg();
-extern bool_t xdr___env_create_reply();
-extern bool_t xdr___env_flags_msg();
-extern bool_t xdr___env_flags_reply();
-extern bool_t xdr___env_open_msg();
-extern bool_t xdr___env_open_reply();
-extern bool_t xdr___env_remove_msg();
-extern bool_t xdr___env_remove_reply();
-extern bool_t xdr___txn_abort_msg();
-extern bool_t xdr___txn_abort_reply();
-extern bool_t xdr___txn_begin_msg();
-extern bool_t xdr___txn_begin_reply();
-extern bool_t xdr___txn_commit_msg();
-extern bool_t xdr___txn_commit_reply();
-extern bool_t xdr___db_bt_maxkey_msg();
-extern bool_t xdr___db_bt_maxkey_reply();
-extern bool_t xdr___db_bt_minkey_msg();
-extern bool_t xdr___db_bt_minkey_reply();
-extern bool_t xdr___db_close_msg();
-extern bool_t xdr___db_close_reply();
-extern bool_t xdr___db_create_msg();
-extern bool_t xdr___db_create_reply();
-extern bool_t xdr___db_del_msg();
-extern bool_t xdr___db_del_reply();
-extern bool_t xdr___db_extentsize_msg();
-extern bool_t xdr___db_extentsize_reply();
-extern bool_t xdr___db_flags_msg();
-extern bool_t xdr___db_flags_reply();
-extern bool_t xdr___db_get_msg();
-extern bool_t xdr___db_get_reply();
-extern bool_t xdr___db_h_ffactor_msg();
-extern bool_t xdr___db_h_ffactor_reply();
-extern bool_t xdr___db_h_nelem_msg();
-extern bool_t xdr___db_h_nelem_reply();
-extern bool_t xdr___db_key_range_msg();
-extern bool_t xdr___db_key_range_reply();
-extern bool_t xdr___db_lorder_msg();
-extern bool_t xdr___db_lorder_reply();
-extern bool_t xdr___db_open_msg();
-extern bool_t xdr___db_open_reply();
-extern bool_t xdr___db_pagesize_msg();
-extern bool_t xdr___db_pagesize_reply();
-extern bool_t xdr___db_put_msg();
-extern bool_t xdr___db_put_reply();
-extern bool_t xdr___db_re_delim_msg();
-extern bool_t xdr___db_re_delim_reply();
-extern bool_t xdr___db_re_len_msg();
-extern bool_t xdr___db_re_len_reply();
-extern bool_t xdr___db_re_pad_msg();
-extern bool_t xdr___db_re_pad_reply();
-extern bool_t xdr___db_remove_msg();
-extern bool_t xdr___db_remove_reply();
-extern bool_t xdr___db_rename_msg();
-extern bool_t xdr___db_rename_reply();
-extern bool_t xdr___db_stat_msg();
-extern bool_t xdr___db_stat_statsreplist();
-extern bool_t xdr___db_stat_reply();
-extern bool_t xdr___db_swapped_msg();
-extern bool_t xdr___db_swapped_reply();
-extern bool_t xdr___db_sync_msg();
-extern bool_t xdr___db_sync_reply();
-extern bool_t xdr___db_cursor_msg();
-extern bool_t xdr___db_cursor_reply();
-extern bool_t xdr___db_join_curslist();
-extern bool_t xdr___db_join_msg();
-extern bool_t xdr___db_join_reply();
-extern bool_t xdr___dbc_close_msg();
-extern bool_t xdr___dbc_close_reply();
-extern bool_t xdr___dbc_count_msg();
-extern bool_t xdr___dbc_count_reply();
-extern bool_t xdr___dbc_del_msg();
-extern bool_t xdr___dbc_del_reply();
-extern bool_t xdr___dbc_dup_msg();
-extern bool_t xdr___dbc_dup_reply();
-extern bool_t xdr___dbc_get_msg();
-extern bool_t xdr___dbc_get_reply();
-extern bool_t xdr___dbc_put_msg();
-extern bool_t xdr___dbc_put_reply();
-
-#endif /* !_DB_SERVER_H_RPCGEN */
diff --git a/db/include/db_server_int.h b/db/include/db_server_int.h
deleted file mode 100644
index 69e88ea5a..000000000
--- a/db/include/db_server_int.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2000
- * Sleepycat Software. All rights reserved.
- *
- * $Id: db_server_int.h,v 1.13 2001/01/11 18:19:52 bostic Exp $
- */
-
-#ifndef _DB_SERVER_INT_H_
-#define _DB_SERVER_INT_H_
-
-#define DB_SERVER_TIMEOUT 300 /* 5 minutes */
-#define DB_SERVER_MAXTIMEOUT 1200 /* 20 minutes */
-#define DB_SERVER_IDLETIMEOUT 86400 /* 1 day */
-
-#define CT_CURSOR 0x001 /* Cursor */
-#define CT_DB 0x002 /* Database */
-#define CT_ENV 0x004 /* Env */
-#define CT_TXN 0x008 /* Txn */
-
-#define CT_JOIN 0x10000000 /* Join cursor component */
-#define CT_JOINCUR 0x20000000 /* Join cursor */
-
-typedef struct home_entry home_entry;
-struct home_entry {
- LIST_ENTRY(home_entry) entries;
- char *home;
- char *dir;
- char *name;
-};
-
-/*
- * We maintain an activity timestamp for each handle. However, we
- * set it to point, possibly to the ct_active field of its own handle
- * or it may point to the ct_active field of a parent. In the case
- * of nested transactions and any cursors within transactions it must
- * point to the ct_active field of the ultimate parent of the transaction
- * no matter how deeply it is nested.
- */
-typedef struct ct_entry ct_entry;
-struct ct_entry {
- LIST_ENTRY(ct_entry) entries; /* List of entries */
- union {
- DB_ENV *envp; /* H_ENV */
- DB_TXN *txnp; /* H_TXN */
- DB *dbp; /* H_DB */
- DBC *dbc; /* H_CURSOR */
- void *anyp;
- } handle_u;
- long ct_id; /* Client ID */
- long *ct_activep; /* Activity timestamp pointer*/
- long *ct_origp; /* Original timestamp pointer*/
- long ct_active; /* Activity timestamp */
- long ct_timeout; /* Resource timeout */
- long ct_idle; /* Idle timeout */
- u_int32_t ct_type; /* This entry's type */
- struct ct_entry *ct_parent; /* Its parent */
- struct ct_entry *ct_envparent; /* Its environment */
-};
-
-#define ct_envp handle_u.envp
-#define ct_txnp handle_u.txnp
-#define ct_dbp handle_u.dbp
-#define ct_dbc handle_u.dbc
-#define ct_anyp handle_u.anyp
-
-extern int __dbsrv_verbose;
-
-/*
- * Get ctp and activate it.
- * Assumes local variable 'replyp'.
- * NOTE: May 'return' from macro.
- */
-#define ACTIVATE_CTP(ctp, id, type) { \
- (ctp) = get_tableent(id); \
- if ((ctp) == NULL) { \
- replyp->status = DB_NOSERVER_ID;\
- return; \
- } \
- DB_ASSERT((ctp)->ct_type & (type)); \
- __dbsrv_active(ctp); \
-}
-
-#endif /* _DB_SERVER_INT_H_ */
diff --git a/db/include/db_shash.h b/db/include/db_shash.h
deleted file mode 100644
index 0b9aac98f..000000000
--- a/db/include/db_shash.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1996, 1997, 1998, 1999, 2000
- * Sleepycat Software. All rights reserved.
- *
- * $Id: db_shash.h,v 11.7 2000/12/12 17:43:56 bostic Exp $
- */
-
-/* Hash Headers */
-typedef SH_TAILQ_HEAD(__hash_head) DB_HASHTAB;
-
-/*
- * HASHLOOKUP --
- *
- * Look up something in a shared memory hash table. The "elt" argument
- * should be a key, and cmp_func must know how to compare a key to whatever
- * structure it is that appears in the hash table. The comparison function
- *
- * begin: address of the beginning of the hash table.
- * ndx: index into table for this item.
- * type: the structure type of the elements that are linked in each bucket.
- * field: the name of the field by which the "type" structures are linked.
- * elt: the item for which we are searching in the hash table.
- * res: the variable into which we'll store the element if we find it.
- * cmp: called as: cmp(lookup_elt, table_elt).
- *
- * If the element is not in the hash table, this macro exits with res set
- * to NULL.
- */
-#define HASHLOOKUP(begin, ndx, type, field, elt, res, cmp) do { \
- DB_HASHTAB *__bucket; \
- \
- __bucket = &begin[ndx]; \
- for (res = SH_TAILQ_FIRST(__bucket, type); \
- res != NULL; res = SH_TAILQ_NEXT(res, field, type)) \
- if (cmp(elt, res)) \
- break; \
-} while (0)
-
-/*
- * HASHINSERT --
- *
- * Insert a new entry into the hash table. This assumes that you already
- * have the bucket locked and that lookup has failed; don't call it if you
- * haven't already called HASHLOOKUP. If you do, you could get duplicate
- * entries.
- *
- * begin: the beginning address of the hash table.
- * ndx: the index for this element.
- * type: the structure type of the elements that are linked in each bucket.
- * field: the name of the field by which the "type" structures are linked.
- * elt: the item to be inserted.
- */
-#define HASHINSERT(begin, ndx, type, field, elt) do { \
- DB_HASHTAB *__bucket; \
- \
- __bucket = &begin[ndx]; \
- SH_TAILQ_INSERT_HEAD(__bucket, elt, field, type); \
-} while (0)
-
-/*
- * HASHREMOVE_EL --
- * Given the object "obj" in the table, remove it.
- *
- * begin: address of the beginning of the hash table.
- * ndx: index into hash table of where this element belongs.
- * type: the structure type of the elements that are linked in each bucket.
- * field: the name of the field by which the "type" structures are linked.
- * obj: the object in the table that we with to delete.
- */
-#define HASHREMOVE_EL(begin, ndx, type, field, obj) { \
- DB_HASHTAB *__bucket; \
- \
- __bucket = &begin[ndx]; \
- SH_TAILQ_REMOVE(__bucket, obj, field, type); \
-}
diff --git a/db/include/db_swap.h b/db/include/db_swap.h
deleted file mode 100644
index bc96afb7a..000000000
--- a/db/include/db_swap.h
+++ /dev/null
@@ -1,115 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1996, 1997, 1998, 1999, 2000
- * Sleepycat Software. All rights reserved.
- */
-/*
- * Copyright (c) 1990, 1993, 1994
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $Id: db_swap.h,v 11.5 2000/03/28 16:14:36 bostic Exp $
- */
-
-#ifndef _DB_SWAP_H_
-#define _DB_SWAP_H_
-
-/*
- * Little endian <==> big endian 32-bit swap macros.
- * M_32_SWAP swap a memory location
- * P_32_COPY copy potentially unaligned 4 byte quantities
- * P_32_SWAP swap a referenced memory location
- */
-#define M_32_SWAP(a) { \
- u_int32_t _tmp; \
- _tmp = a; \
- ((u_int8_t *)&a)[0] = ((u_int8_t *)&_tmp)[3]; \
- ((u_int8_t *)&a)[1] = ((u_int8_t *)&_tmp)[2]; \
- ((u_int8_t *)&a)[2] = ((u_int8_t *)&_tmp)[1]; \
- ((u_int8_t *)&a)[3] = ((u_int8_t *)&_tmp)[0]; \
-}
-#define P_32_COPY(a, b) { \
- ((u_int8_t *)b)[0] = ((u_int8_t *)a)[0]; \
- ((u_int8_t *)b)[1] = ((u_int8_t *)a)[1]; \
- ((u_int8_t *)b)[2] = ((u_int8_t *)a)[2]; \
- ((u_int8_t *)b)[3] = ((u_int8_t *)a)[3]; \
-}
-#define P_32_SWAP(a) { \
- u_int32_t _tmp; \
- P_32_COPY(a, &_tmp); \
- ((u_int8_t *)a)[0] = ((u_int8_t *)&_tmp)[3]; \
- ((u_int8_t *)a)[1] = ((u_int8_t *)&_tmp)[2]; \
- ((u_int8_t *)a)[2] = ((u_int8_t *)&_tmp)[1]; \
- ((u_int8_t *)a)[3] = ((u_int8_t *)&_tmp)[0]; \
-}
-
-/*
- * Little endian <==> big endian 16-bit swap macros.
- * M_16_SWAP swap a memory location
- * P_16_COPY copy potentially unaligned 2 byte quantities
- * P_16_SWAP swap a referenced memory location
- */
-#define M_16_SWAP(a) { \
- u_int16_t _tmp; \
- _tmp = (u_int16_t)a; \
- ((u_int8_t *)&a)[0] = ((u_int8_t *)&_tmp)[1]; \
- ((u_int8_t *)&a)[1] = ((u_int8_t *)&_tmp)[0]; \
-}
-#define P_16_COPY(a, b) { \
- ((u_int8_t *)b)[0] = ((u_int8_t *)a)[0]; \
- ((u_int8_t *)b)[1] = ((u_int8_t *)a)[1]; \
-}
-#define P_16_SWAP(a) { \
- u_int16_t _tmp; \
- P_16_COPY(a, &_tmp); \
- ((u_int8_t *)a)[0] = ((u_int8_t *)&_tmp)[1]; \
- ((u_int8_t *)a)[1] = ((u_int8_t *)&_tmp)[0]; \
-}
-
-#define SWAP32(p) { \
- P_32_SWAP(p); \
- (p) += sizeof(u_int32_t); \
-}
-#define SWAP16(p) { \
- P_16_SWAP(p); \
- (p) += sizeof(u_int16_t); \
-}
-
-/*
- * DB has local versions of htonl() and ntohl() that only operate on pointers
- * to the right size memory locations, the portability magic for finding the
- * real ones isn't worth the effort.
- */
-#if defined(WORDS_BIGENDIAN)
-#define DB_HTONL(p)
-#define DB_NTOHL(p)
-#else
-#define DB_HTONL(p) P_32_SWAP(p)
-#define DB_NTOHL(p) P_32_SWAP(p)
-#endif
-
-#endif /* !_DB_SWAP_H_ */
diff --git a/db/include/db_upgrade.h b/db/include/db_upgrade.h
deleted file mode 100644
index d8d996452..000000000
--- a/db/include/db_upgrade.h
+++ /dev/null
@@ -1,174 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1996, 1997, 1998, 1999, 2000
- * Sleepycat Software. All rights reserved.
- *
- * $Id: db_upgrade.h,v 1.5 2000/11/16 23:40:56 ubell Exp $
- */
-
-#ifndef _DB_UPGRADE_H_
-#define _DB_UPGRADE_H_
-
-/*
- * This file defines the metadata pages from the previous release.
- * These structures are only used to upgrade old versions of databases.
- */
-
-/* Structures from the 3.1 release */
-/*
- * QAM Meta data page structure
- *
- */
-typedef struct _qmeta31 {
- DBMETA dbmeta; /* 00-71: Generic meta-data header. */
-
- u_int32_t start; /* 72-75: Start offset. */
- u_int32_t first_recno; /* 76-79: First not deleted record. */
- u_int32_t cur_recno; /* 80-83: Last recno allocated. */
- u_int32_t re_len; /* 84-87: Fixed-length record length. */
- u_int32_t re_pad; /* 88-91: Fixed-length record pad. */
- u_int32_t rec_page; /* 92-95: Records Per Page. */
-
- /*
- * Minimum page size is 128.
- */
-} QMETA31;
-
-/* Structures from the 3.0 release */
-
-typedef struct _dbmeta30 {
- DB_LSN lsn; /* 00-07: LSN. */
- db_pgno_t pgno; /* 08-11: Current page number. */
- u_int32_t magic; /* 12-15: Magic number. */
- u_int32_t version; /* 16-19: Version. */
- u_int32_t pagesize; /* 20-23: Pagesize. */
- u_int8_t unused1[1]; /* 24: Unused. */
- u_int8_t type; /* 25: Page type. */
- u_int8_t unused2[2]; /* 26-27: Unused. */
- u_int32_t free; /* 28-31: Free list page number. */
- u_int32_t flags; /* 32-35: Flags: unique to each AM. */
- /* 36-55: Unique file ID. */
- u_int8_t uid[DB_FILE_ID_LEN];
-} DBMETA30;
-
-/************************************************************************
- BTREE METADATA PAGE LAYOUT
- ************************************************************************/
-typedef struct _btmeta30 {
- DBMETA30 dbmeta; /* 00-55: Generic meta-data header. */
-
- u_int32_t maxkey; /* 56-59: Btree: Maxkey. */
- u_int32_t minkey; /* 60-63: Btree: Minkey. */
- u_int32_t re_len; /* 64-67: Recno: fixed-length record length. */
- u_int32_t re_pad; /* 68-71: Recno: fixed-length record pad. */
- u_int32_t root; /* 72-75: Root page. */
-
- /*
- * Minimum page size is 128.
- */
-} BTMETA30;
-
-/************************************************************************
- HASH METADATA PAGE LAYOUT
- ************************************************************************/
-typedef struct _hashmeta30 {
- DBMETA30 dbmeta; /* 00-55: Generic meta-data page header. */
-
- u_int32_t max_bucket; /* 56-59: ID of Maximum bucket in use */
- u_int32_t high_mask; /* 60-63: Modulo mask into table */
- u_int32_t low_mask; /* 64-67: Modulo mask into table lower half */
- u_int32_t ffactor; /* 68-71: Fill factor */
- u_int32_t nelem; /* 72-75: Number of keys in hash table */
- u_int32_t h_charkey; /* 76-79: Value of hash(CHARKEY) */
-#define NCACHED30 32 /* number of spare points */
- /* 80-207: Spare pages for overflow */
- u_int32_t spares[NCACHED30];
-
- /*
- * Minimum page size is 256.
- */
-} HMETA30;
-
-/************************************************************************
- QUEUE METADATA PAGE LAYOUT
- ************************************************************************/
-/*
- * QAM Meta data page structure
- *
- */
-typedef struct _qmeta30 {
- DBMETA30 dbmeta; /* 00-55: Generic meta-data header. */
-
- u_int32_t start; /* 56-59: Start offset. */
- u_int32_t first_recno; /* 60-63: First not deleted record. */
- u_int32_t cur_recno; /* 64-67: Last recno allocated. */
- u_int32_t re_len; /* 68-71: Fixed-length record length. */
- u_int32_t re_pad; /* 72-75: Fixed-length record pad. */
- u_int32_t rec_page; /* 76-79: Records Per Page. */
-
- /*
- * Minimum page size is 128.
- */
-} QMETA30;
-
-/* Structures from Release 2.x */
-
-/************************************************************************
- BTREE METADATA PAGE LAYOUT
- ************************************************************************/
-
-/*
- * Btree metadata page layout:
- */
-typedef struct _btmeta2X {
- DB_LSN lsn; /* 00-07: LSN. */
- db_pgno_t pgno; /* 08-11: Current page number. */
- u_int32_t magic; /* 12-15: Magic number. */
- u_int32_t version; /* 16-19: Version. */
- u_int32_t pagesize; /* 20-23: Pagesize. */
- u_int32_t maxkey; /* 24-27: Btree: Maxkey. */
- u_int32_t minkey; /* 28-31: Btree: Minkey. */
- u_int32_t free; /* 32-35: Free list page number. */
- u_int32_t flags; /* 36-39: Flags. */
- u_int32_t re_len; /* 40-43: Recno: fixed-length record length. */
- u_int32_t re_pad; /* 44-47: Recno: fixed-length record pad. */
- /* 48-67: Unique file ID. */
- u_int8_t uid[DB_FILE_ID_LEN];
-} BTMETA2X;
-
-/************************************************************************
- HASH METADATA PAGE LAYOUT
- ************************************************************************/
-
-/*
- * Hash metadata page layout:
- */
-/* Hash Table Information */
-typedef struct hashhdr { /* Disk resident portion */
- DB_LSN lsn; /* 00-07: LSN of the header page */
- db_pgno_t pgno; /* 08-11: Page number (btree compatibility). */
- u_int32_t magic; /* 12-15: Magic NO for hash tables */
- u_int32_t version; /* 16-19: Version ID */
- u_int32_t pagesize; /* 20-23: Bucket/Page Size */
- u_int32_t ovfl_point; /* 24-27: Overflow page allocation location */
- u_int32_t last_freed; /* 28-31: Last freed overflow page pgno */
- u_int32_t max_bucket; /* 32-35: ID of Maximum bucket in use */
- u_int32_t high_mask; /* 36-39: Modulo mask into table */
- u_int32_t low_mask; /* 40-43: Modulo mask into table lower half */
- u_int32_t ffactor; /* 44-47: Fill factor */
- u_int32_t nelem; /* 48-51: Number of keys in hash table */
- u_int32_t h_charkey; /* 52-55: Value of hash(CHARKEY) */
- u_int32_t flags; /* 56-59: Allow duplicates. */
-#define NCACHED2X 32 /* number of spare points */
- /* 60-187: Spare pages for overflow */
- u_int32_t spares[NCACHED2X];
- /* 188-207: Unique file ID. */
- u_int8_t uid[DB_FILE_ID_LEN];
-
- /*
- * Minimum page size is 256.
- */
-} HASHHDR;
-
-#endif
diff --git a/db/include/db_verify.h b/db/include/db_verify.h
deleted file mode 100644
index 2507f1f10..000000000
--- a/db/include/db_verify.h
+++ /dev/null
@@ -1,191 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1999, 2000
- * Sleepycat Software. All rights reserved.
- *
- * $Id: db_verify.h,v 1.18 2000/12/31 17:51:52 bostic Exp $
- */
-
-#ifndef _DB_VERIFY_H_
-#define _DB_VERIFY_H_
-
-/*
- * Structures and macros for the storage and retrieval of all information
- * needed for inter-page verification of a database.
- */
-
-/*
- * EPRINT is the macro for error printing. Takes as an arg the arg set
- * for DB->err.
- */
-#define EPRINT(x) \
- do { \
- if (!LF_ISSET(DB_SALVAGE)) \
- __db_err x; \
- } while (0)
-
-/* For fatal type errors--i.e., verifier bugs. */
-#define TYPE_ERR_PRINT(dbenv, func, pgno, ptype) \
- EPRINT(((dbenv), "%s called on nonsensical page %lu of type %lu", \
- (func), (u_long)(pgno), (u_long)(ptype)));
-
-/* Is x a power of two? (Tests true for zero, which doesn't matter here.) */
-#define POWER_OF_TWO(x) (((x) & ((x) - 1)) == 0)
-
-#define IS_VALID_PAGESIZE(x) \
- (POWER_OF_TWO(x) && (x) >= DB_MIN_PGSIZE && ((x) <= DB_MAX_PGSIZE))
-
-/*
- * Note that 0 is, in general, a valid pgno, despite equalling PGNO_INVALID;
- * we have to test it separately where it's not appropriate.
- */
-#define IS_VALID_PGNO(x) ((x) <= vdp->last_pgno)
-
-/*
- * Flags understood by the btree structure checks (esp. __bam_vrfy_subtree).
- * These share the same space as the global flags to __db_verify, and must not
- * dip below 0x00010000.
- */
-#define ST_DUPOK 0x00010000 /* Duplicates are acceptable. */
-#define ST_DUPSET 0x00020000 /* Subtree is in a duplicate tree. */
-#define ST_DUPSORT 0x00040000 /* Duplicates are sorted. */
-#define ST_IS_RECNO 0x00080000 /* Subtree is a recno. */
-#define ST_OVFL_LEAF 0x00100000 /* Overflow reffed from leaf page. */
-#define ST_RECNUM 0x00200000 /* Subtree has record numbering on. */
-#define ST_RELEN 0x00400000 /* Subtree has fixed-length records. */
-#define ST_TOPLEVEL 0x00800000 /* Subtree == entire tree */
-
-/*
- * Flags understood by __bam_salvage and __db_salvage. These need not share
- * the same space with the __bam_vrfy_subtree flags, but must share with
- * __db_verify.
- */
-#define SA_SKIPFIRSTKEY 0x00080000
-
-/*
- * VRFY_DBINFO is the fundamental structure; it either represents the database
- * of subdatabases, or the sole database if there are no subdatabases.
- */
-struct __vrfy_dbinfo {
- /* Info about this database in particular. */
- DBTYPE type;
-
- /* List of subdatabase meta pages, if any. */
- LIST_HEAD(__subdbs, __vrfy_childinfo) subdbs;
-
- /* File-global info--stores VRFY_PAGEINFOs for each page. */
- DB *pgdbp;
-
- /* Child database--stores VRFY_CHILDINFOs of each page. */
- DB *cdbp;
-
- /* Page info structures currently in use. */
- LIST_HEAD(__activepips, __vrfy_pageinfo) activepips;
-
- /*
- * DB we use to keep track of which pages are linked somehow
- * during verification. 0 is the default, "unseen"; 1 is seen.
- */
- DB *pgset;
-
- /*
- * This is a database we use during salvaging to keep track of which
- * overflow and dup pages we need to come back to at the end and print
- * with key "UNKNOWN". Pages which print with a good key get set
- * to SALVAGE_IGNORE; others get set, as appropriate, to SALVAGE_LDUP,
- * SALVAGE_LRECNODUP, SALVAGE_OVERFLOW for normal db overflow pages,
- * and SALVAGE_BTREE, SALVAGE_LRECNO, and SALVAGE_HASH for subdb
- * pages.
- */
-#define SALVAGE_INVALID 0
-#define SALVAGE_IGNORE 1
-#define SALVAGE_LDUP 2
-#define SALVAGE_LRECNODUP 3
-#define SALVAGE_OVERFLOW 4
-#define SALVAGE_LBTREE 5
-#define SALVAGE_HASH 6
-#define SALVAGE_LRECNO 7
- DB *salvage_pages;
-
- db_pgno_t last_pgno;
- db_pgno_t pgs_remaining; /* For dbp->db_feedback(). */
-
- /* Queue needs these to verify data pages in the first pass. */
- u_int32_t re_len;
- u_int32_t rec_page;
-
-#define SALVAGE_PRINTHEADER 0x01
-#define SALVAGE_PRINTFOOTER 0x02
- u_int32_t flags;
-}; /* VRFY_DBINFO */
-
-/*
- * The amount of state information we need per-page is small enough that
- * it's not worth the trouble to define separate structures for each
- * possible type of page, and since we're doing verification with these we
- * have to be open to the possibility that page N will be of a completely
- * unexpected type anyway. So we define one structure here with all the
- * info we need for inter-page verification.
- */
-struct __vrfy_pageinfo {
- u_int8_t type;
- u_int8_t bt_level;
- u_int8_t unused1;
- u_int8_t unused2;
- db_pgno_t pgno;
- db_pgno_t prev_pgno;
- db_pgno_t next_pgno;
-
- /* meta pages */
- db_pgno_t root;
- db_pgno_t free; /* Free list head. */
-
- db_indx_t entries; /* Actual number of entries. */
- u_int16_t unused;
- db_recno_t rec_cnt; /* Record count. */
- u_int32_t re_len; /* Record length. */
- u_int32_t bt_minkey;
- u_int32_t bt_maxkey;
- u_int32_t h_ffactor;
- u_int32_t h_nelem;
-
- /* overflow pages */
- /*
- * Note that refcount is the refcount for an overflow page; pi_refcount
- * is this structure's own refcount!
- */
- u_int32_t refcount;
- u_int32_t olen;
-
-#define VRFY_DUPS_UNSORTED 0x0001 /* Have to flag the negative! */
-#define VRFY_HAS_DUPS 0x0002
-#define VRFY_HAS_DUPSORT 0x0004 /* Has the flag set. */
-#define VRFY_HAS_SUBDBS 0x0008
-#define VRFY_HAS_RECNUMS 0x0010
-#define VRFY_INCOMPLETE 0x0020 /* Meta or item order checks incomp. */
-#define VRFY_IS_ALLZEROES 0x0040 /* Hash page we haven't touched? */
-#define VRFY_IS_FIXEDLEN 0x0080
-#define VRFY_IS_RECNO 0x0100
-#define VRFY_IS_RRECNO 0x0200
-#define VRFY_OVFL_LEAFSEEN 0x0400
- u_int32_t flags;
-
- LIST_ENTRY(__vrfy_pageinfo) links;
- u_int32_t pi_refcount;
-}; /* VRFY_PAGEINFO */
-
-struct __vrfy_childinfo {
- db_pgno_t pgno;
-
-#define V_DUPLICATE 1 /* off-page dup metadata */
-#define V_OVERFLOW 2 /* overflow page */
-#define V_RECNO 3 /* btree internal or leaf page */
- u_int32_t type;
- db_recno_t nrecs; /* record count on a btree subtree */
- u_int32_t tlen; /* ovfl. item total size */
-
- LIST_ENTRY(__vrfy_childinfo) links;
-}; /* VRFY_CHILDINFO */
-
-#endif /* _DB_VERIFY_H_ */
diff --git a/db/include/debug.h b/db/include/debug.h
deleted file mode 100644
index 9a3ffc1ac..000000000
--- a/db/include/debug.h
+++ /dev/null
@@ -1,104 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1998, 1999, 2000
- * Sleepycat Software. All rights reserved.
- *
- * $Id: debug.h,v 11.17 2000/07/07 15:50:36 bostic Exp $
- */
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-/*
- * When running with #DIAGNOSTIC defined, we smash memory and do memory
- * guarding with a special byte value.
- */
-#define CLEAR_BYTE 0xdb
-#define GUARD_BYTE 0xdc
-
-/*
- * DB assertions.
- */
-#if defined(DIAGNOSTIC) && defined(__STDC__)
-#define DB_ASSERT(e) ((e) ? (void)0 : __db_assert(#e, __FILE__, __LINE__))
-#else
-#define DB_ASSERT(e) ((void)0)
-#endif
-
-/*
- * Purify and other run-time tools complain about uninitialized reads/writes
- * of structure fields whose only purpose is padding, as well as when heap
- * memory that was never initialized is written to disk.
- */
-#ifdef UMRW
-#define UMRW_SET(v) (v) = 0
-#else
-#define UMRW_SET(v)
-#endif
-
-/*
- * Debugging macro to log operations.
- * If DEBUG_WOP is defined, log operations that modify the database.
- * If DEBUG_ROP is defined, log operations that read the database.
- *
- * D dbp
- * T txn
- * O operation (string)
- * K key
- * A data
- * F flags
- */
-#define LOG_OP(C, T, O, K, A, F) { \
- DB_LSN __lsn; \
- DBT __op; \
- if (DB_LOGGING((C))) { \
- memset(&__op, 0, sizeof(__op)); \
- __op.data = O; \
- __op.size = strlen(O) + 1; \
- (void)__db_debug_log((C)->dbp->dbenv, \
- T, &__lsn, 0, &__op, (C)->dbp->log_fileid, K, A, F);\
- } \
-}
-#ifdef DEBUG_ROP
-#define DEBUG_LREAD(C, T, O, K, A, F) LOG_OP(C, T, O, K, A, F)
-#else
-#define DEBUG_LREAD(C, T, O, K, A, F)
-#endif
-#ifdef DEBUG_WOP
-#define DEBUG_LWRITE(C, T, O, K, A, F) LOG_OP(C, T, O, K, A, F)
-#else
-#define DEBUG_LWRITE(C, T, O, K, A, F)
-#endif
-
-/*
- * Hook for testing recovery at various places in the create/delete paths.
- */
-#if CONFIG_TEST
-#define DB_TEST_RECOVERY(dbp, val, ret, name) \
-do { \
- int __ret; \
- PANIC_CHECK((dbp)->dbenv); \
- if ((dbp)->dbenv->test_copy == (val)) { \
- /* COPY the FILE */ \
- if (F_ISSET((dbp), DB_OPEN_CALLED) && (dbp)->mpf != NULL) \
- (void)(dbp)->sync((dbp), 0); \
- if ((__ret = __db_testcopy((dbp), (name))) != 0) \
- (ret) = __db_panic((dbp)->dbenv, __ret); \
- } \
- if ((dbp)->dbenv->test_abort == (val)) { \
- /* ABORT the TXN */ \
- (ret) = EINVAL; \
- goto db_tr_err; \
- } \
-} while (0)
-#define DB_TEST_RECOVERY_LABEL db_tr_err:
-#else
-#define DB_TEST_RECOVERY(dbp, val, ret, name)
-#define DB_TEST_RECOVERY_LABEL
-#endif
-
-#if defined(__cplusplus)
-}
-#endif
diff --git a/db/include/env_ext.h b/db/include/env_ext.h
deleted file mode 100644
index 0e7313fde..000000000
--- a/db/include/env_ext.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_include. */
-#ifndef _env_ext_h_
-#define _env_ext_h_
-#if defined(__cplusplus)
-extern "C" {
-#endif
-void __db_shalloc_init __P((void *, size_t));
-int __db_shalloc_size __P((size_t, size_t));
-int __db_shalloc __P((void *, size_t, size_t, void *));
-void __db_shalloc_free __P((void *, void *));
-size_t __db_shalloc_count __P((void *));
-size_t __db_shsizeof __P((void *));
-void __db_shalloc_dump __P((void *, FILE *));
-int __db_tablesize __P((u_int32_t));
-void __db_hashinit __P((void *, u_int32_t));
-int __dbenv_init __P((DB_ENV *));
-int __db_mi_env __P((DB_ENV *, const char *));
-int __db_mi_open __P((DB_ENV *, const char *, int));
-int __db_env_config __P((DB_ENV *, int));
-int __dbenv_open __P((DB_ENV *, const char *, u_int32_t, int));
-int __dbenv_remove __P((DB_ENV *, const char *, u_int32_t));
-int __dbenv_close __P((DB_ENV *, u_int32_t));
-int __db_appname __P((DB_ENV *, APPNAME,
- const char *, const char *, u_int32_t, DB_FH *, char **));
-int __db_apprec __P((DB_ENV *, u_int32_t));
-int __db_e_attach __P((DB_ENV *, u_int32_t *));
-int __db_e_detach __P((DB_ENV *, int));
-int __db_e_remove __P((DB_ENV *, int));
-int __db_e_stat __P((DB_ENV *, REGENV *, REGION *, int *));
-int __db_r_attach __P((DB_ENV *, REGINFO *, size_t));
-int __db_r_detach __P((DB_ENV *, REGINFO *, int));
-#if defined(__cplusplus)
-}
-#endif
-#endif /* _env_ext_h_ */
diff --git a/db/include/gen_client_ext.h b/db/include/gen_client_ext.h
deleted file mode 100644
index 5675b74d3..000000000
--- a/db/include/gen_client_ext.h
+++ /dev/null
@@ -1,121 +0,0 @@
-/* Do not edit: automatically built by gen_rpc.awk. */
-int __dbcl_env_cachesize __P((DB_ENV *, u_int32_t, u_int32_t, int));
-int __dbcl_env_close __P((DB_ENV *, u_int32_t));
-int __dbcl_env_close_ret __P((DB_ENV *, u_int32_t, __env_close_reply *));
-int __dbcl_rpc_illegal __P((DB_ENV *, char *));
-int __dbcl_set_data_dir __P((DB_ENV *, const char *));
-int __dbcl_env_set_feedback __P((DB_ENV *, void (*)(DB_ENV *, int, int)));
-int __dbcl_env_flags __P((DB_ENV *, u_int32_t, int));
-int __dbcl_set_lg_bsize __P((DB_ENV *, u_int32_t));
-int __dbcl_set_lg_dir __P((DB_ENV *, const char *));
-int __dbcl_set_lg_max __P((DB_ENV *, u_int32_t));
-int __dbcl_set_lk_conflict __P((DB_ENV *, u_int8_t *, int));
-int __dbcl_set_lk_detect __P((DB_ENV *, u_int32_t));
-int __dbcl_set_lk_max __P((DB_ENV *, u_int32_t));
-int __dbcl_set_lk_max_locks __P((DB_ENV *, u_int32_t));
-int __dbcl_set_lk_max_lockers __P((DB_ENV *, u_int32_t));
-int __dbcl_set_lk_max_objects __P((DB_ENV *, u_int32_t));
-int __dbcl_set_mp_mmapsize __P((DB_ENV *, size_t));
-int __dbcl_set_mutex_locks __P((DB_ENV *, int));
-int __dbcl_env_open __P((DB_ENV *, const char *, u_int32_t, int));
-int __dbcl_env_open_ret __P((DB_ENV *, const char *, u_int32_t, int, __env_open_reply *));
-int __dbcl_env_paniccall __P((DB_ENV *, void (*)(DB_ENV *, int)));
-int __dbcl_set_recovery_init __P((DB_ENV *, int (*)(DB_ENV *)));
-int __dbcl_env_remove __P((DB_ENV *, const char *, u_int32_t));
-int __dbcl_env_remove_ret __P((DB_ENV *, const char *, u_int32_t, __env_remove_reply *));
-int __dbcl_set_shm_key __P((DB_ENV *, long));
-int __dbcl_set_tmp_dir __P((DB_ENV *, const char *));
-int __dbcl_set_tx_recover __P((DB_ENV *, int (*)(DB_ENV *, DBT *, DB_LSN *, db_recops)));
-int __dbcl_set_tx_max __P((DB_ENV *, u_int32_t));
-int __dbcl_set_tx_timestamp __P((DB_ENV *, time_t *));
-int __dbcl_set_verbose __P((DB_ENV *, u_int32_t, int));
-int __dbcl_txn_abort __P((DB_TXN *));
-int __dbcl_txn_abort_ret __P((DB_TXN *, __txn_abort_reply *));
-int __dbcl_txn_begin __P((DB_ENV *, DB_TXN *, DB_TXN **, u_int32_t));
-int __dbcl_txn_begin_ret __P((DB_ENV *, DB_TXN *, DB_TXN **, u_int32_t, __txn_begin_reply *));
-int __dbcl_txn_checkpoint __P((DB_ENV *, u_int32_t, u_int32_t));
-int __dbcl_txn_commit __P((DB_TXN *, u_int32_t));
-int __dbcl_txn_commit_ret __P((DB_TXN *, u_int32_t, __txn_commit_reply *));
-int __dbcl_txn_prepare __P((DB_TXN *));
-int __dbcl_txn_stat __P((DB_ENV *, DB_TXN_STAT **, void *(*)(size_t)));
-int __dbcl_db_bt_compare __P((DB *, int (*)(DB *, const DBT *, const DBT *)));
-int __dbcl_db_bt_maxkey __P((DB *, u_int32_t));
-int __dbcl_db_bt_minkey __P((DB *, u_int32_t));
-int __dbcl_db_bt_prefix __P((DB *, size_t(*)(DB *, const DBT *, const DBT *)));
-int __dbcl_db_set_append_recno __P((DB *, int (*)(DB *, DBT *, db_recno_t)));
-int __dbcl_db_cachesize __P((DB *, u_int32_t, u_int32_t, int));
-int __dbcl_db_close __P((DB *, u_int32_t));
-int __dbcl_db_close_ret __P((DB *, u_int32_t, __db_close_reply *));
-int __dbcl_db_del __P((DB *, DB_TXN *, DBT *, u_int32_t));
-int __dbcl_db_extentsize __P((DB *, u_int32_t));
-int __dbcl_db_fd __P((DB *, int *));
-int __dbcl_db_feedback __P((DB *, void (*)(DB *, int, int)));
-int __dbcl_db_flags __P((DB *, u_int32_t));
-int __dbcl_db_get __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t));
-int __dbcl_db_get_ret __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t, __db_get_reply *));
-int __dbcl_db_h_ffactor __P((DB *, u_int32_t));
-int __dbcl_db_h_hash __P((DB *, u_int32_t(*)(DB *, const void *, u_int32_t)));
-int __dbcl_db_h_nelem __P((DB *, u_int32_t));
-int __dbcl_db_key_range __P((DB *, DB_TXN *, DBT *, DB_KEY_RANGE *, u_int32_t));
-int __dbcl_db_key_range_ret __P((DB *, DB_TXN *, DBT *, DB_KEY_RANGE *, u_int32_t, __db_key_range_reply *));
-int __dbcl_db_lorder __P((DB *, int));
-int __dbcl_db_malloc __P((DB *, void *(*)(size_t)));
-int __dbcl_db_open __P((DB *, const char *, const char *, DBTYPE, u_int32_t, int));
-int __dbcl_db_open_ret __P((DB *, const char *, const char *, DBTYPE, u_int32_t, int, __db_open_reply *));
-int __dbcl_db_pagesize __P((DB *, u_int32_t));
-int __dbcl_db_panic __P((DB *, void (*)(DB_ENV *, int)));
-int __dbcl_db_put __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t));
-int __dbcl_db_put_ret __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t, __db_put_reply *));
-int __dbcl_db_realloc __P((DB *, void *(*)(void *, size_t)));
-int __dbcl_db_re_delim __P((DB *, int));
-int __dbcl_db_re_len __P((DB *, u_int32_t));
-int __dbcl_db_re_pad __P((DB *, int));
-int __dbcl_db_re_source __P((DB *, const char *));
-int __dbcl_db_remove __P((DB *, const char *, const char *, u_int32_t));
-int __dbcl_db_remove_ret __P((DB *, const char *, const char *, u_int32_t, __db_remove_reply *));
-int __dbcl_db_rename __P((DB *, const char *, const char *, const char *, u_int32_t));
-int __dbcl_db_rename_ret __P((DB *, const char *, const char *, const char *, u_int32_t, __db_rename_reply *));
-int __dbcl_db_stat __P((DB *, void *, void *(*)(size_t), u_int32_t));
-int __dbcl_db_stat_ret __P((DB *, void *, void *(*)(size_t), u_int32_t, __db_stat_reply *));
-int __dbcl_db_swapped __P((DB *));
-int __dbcl_db_sync __P((DB *, u_int32_t));
-int __dbcl_db_upgrade __P((DB *, const char *, u_int32_t));
-int __dbcl_db_cursor __P((DB *, DB_TXN *, DBC **, u_int32_t));
-int __dbcl_db_cursor_ret __P((DB *, DB_TXN *, DBC **, u_int32_t, __db_cursor_reply *));
-int __dbcl_db_join __P((DB *, DBC **, DBC **, u_int32_t));
-int __dbcl_db_join_ret __P((DB *, DBC **, DBC **, u_int32_t, __db_join_reply *));
-int __dbcl_dbc_close __P((DBC *));
-int __dbcl_dbc_close_ret __P((DBC *, __dbc_close_reply *));
-int __dbcl_dbc_count __P((DBC *, db_recno_t *, u_int32_t));
-int __dbcl_dbc_count_ret __P((DBC *, db_recno_t *, u_int32_t, __dbc_count_reply *));
-int __dbcl_dbc_del __P((DBC *, u_int32_t));
-int __dbcl_dbc_dup __P((DBC *, DBC **, u_int32_t));
-int __dbcl_dbc_dup_ret __P((DBC *, DBC **, u_int32_t, __dbc_dup_reply *));
-int __dbcl_dbc_get __P((DBC *, DBT *, DBT *, u_int32_t));
-int __dbcl_dbc_get_ret __P((DBC *, DBT *, DBT *, u_int32_t, __dbc_get_reply *));
-int __dbcl_dbc_put __P((DBC *, DBT *, DBT *, u_int32_t));
-int __dbcl_dbc_put_ret __P((DBC *, DBT *, DBT *, u_int32_t, __dbc_put_reply *));
-int __dbcl_lock_detect __P((DB_ENV *, u_int32_t, u_int32_t, int *));
-int __dbcl_lock_get __P((DB_ENV *, u_int32_t, u_int32_t, const DBT *, db_lockmode_t, DB_LOCK *));
-int __dbcl_lock_id __P((DB_ENV *, u_int32_t *));
-int __dbcl_lock_put __P((DB_ENV *, DB_LOCK *));
-int __dbcl_lock_stat __P((DB_ENV *, DB_LOCK_STAT **, void *(*)(size_t)));
-int __dbcl_lock_vec __P((DB_ENV *, u_int32_t, u_int32_t, DB_LOCKREQ *, int, DB_LOCKREQ **));
-int __dbcl_log_archive __P((DB_ENV *, char ***, u_int32_t, void *(*)(size_t)));
-int __dbcl_log_file __P((DB_ENV *, const DB_LSN *, char *, size_t));
-int __dbcl_log_flush __P((DB_ENV *, const DB_LSN *));
-int __dbcl_log_get __P((DB_ENV *, DB_LSN *, DBT *, u_int32_t));
-int __dbcl_log_put __P((DB_ENV *, DB_LSN *, const DBT *, u_int32_t));
-int __dbcl_log_register __P((DB_ENV *, DB *, const char *));
-int __dbcl_log_stat __P((DB_ENV *, DB_LOG_STAT **, void *(*)(size_t)));
-int __dbcl_log_unregister __P((DB_ENV *, DB *));
-int __dbcl_memp_fclose __P((DB_MPOOLFILE *));
-int __dbcl_memp_fget __P((DB_MPOOLFILE *, db_pgno_t *, u_int32_t, void **));
-int __dbcl_memp_fopen __P((DB_ENV *, const char *, u_int32_t, int, size_t, DB_MPOOL_FINFO *, DB_MPOOLFILE **));
-int __dbcl_memp_fput __P((DB_MPOOLFILE *, void *, u_int32_t));
-int __dbcl_memp_fset __P((DB_MPOOLFILE *, void *, u_int32_t));
-int __dbcl_memp_fsync __P((DB_MPOOLFILE *));
-int __dbcl_memp_register __P((DB_ENV *, int, int (*)(DB_ENV *, db_pgno_t, void *, DBT *), int (*)(DB_ENV *, db_pgno_t, void *, DBT *)));
-int __dbcl_memp_stat __P((DB_ENV *, DB_MPOOL_STAT **, DB_MPOOL_FSTAT ***, void *(*)(size_t)));
-int __dbcl_memp_sync __P((DB_ENV *, DB_LSN *));
-int __dbcl_memp_trickle __P((DB_ENV *, int, int *));
diff --git a/db/include/gen_server_ext.h b/db/include/gen_server_ext.h
deleted file mode 100644
index 9037d908f..000000000
--- a/db/include/gen_server_ext.h
+++ /dev/null
@@ -1,106 +0,0 @@
-/* Do not edit: automatically built by gen_rpc.awk. */
-__env_cachesize_reply * __db_env_cachesize_1 __P((__env_cachesize_msg *));
-void __env_cachesize_1_proc __P((long, u_int32_t, u_int32_t,
- u_int32_t, __env_cachesize_reply *));
-__env_close_reply * __db_env_close_1 __P((__env_close_msg *));
-void __env_close_1_proc __P((long, u_int32_t, __env_close_reply *));
-__env_create_reply * __db_env_create_1 __P((__env_create_msg *));
-void __env_create_1_proc __P((u_int32_t, __env_create_reply *));
-__env_flags_reply * __db_env_flags_1 __P((__env_flags_msg *));
-void __env_flags_1_proc __P((long, u_int32_t, u_int32_t, __env_flags_reply *));
-__env_open_reply * __db_env_open_1 __P((__env_open_msg *));
-void __env_open_1_proc __P((long, char *, u_int32_t,
- u_int32_t, __env_open_reply *));
-__env_remove_reply * __db_env_remove_1 __P((__env_remove_msg *));
-void __env_remove_1_proc __P((long, char *, u_int32_t, __env_remove_reply *));
-__txn_abort_reply * __db_txn_abort_1 __P((__txn_abort_msg *));
-void __txn_abort_1_proc __P((long, __txn_abort_reply *));
-__txn_begin_reply * __db_txn_begin_1 __P((__txn_begin_msg *));
-void __txn_begin_1_proc __P((long, long,
- u_int32_t, __txn_begin_reply *));
-__txn_commit_reply * __db_txn_commit_1 __P((__txn_commit_msg *));
-void __txn_commit_1_proc __P((long, u_int32_t, __txn_commit_reply *));
-__db_bt_maxkey_reply * __db_db_bt_maxkey_1 __P((__db_bt_maxkey_msg *));
-void __db_bt_maxkey_1_proc __P((long, u_int32_t, __db_bt_maxkey_reply *));
-__db_bt_minkey_reply * __db_db_bt_minkey_1 __P((__db_bt_minkey_msg *));
-void __db_bt_minkey_1_proc __P((long, u_int32_t, __db_bt_minkey_reply *));
-__db_close_reply * __db_db_close_1 __P((__db_close_msg *));
-void __db_close_1_proc __P((long, u_int32_t, __db_close_reply *));
-__db_create_reply * __db_db_create_1 __P((__db_create_msg *));
-void __db_create_1_proc __P((u_int32_t, long, __db_create_reply *));
-__db_del_reply * __db_db_del_1 __P((__db_del_msg *));
-void __db_del_1_proc __P((long, long, u_int32_t,
- u_int32_t, u_int32_t, void *, u_int32_t,
- u_int32_t, __db_del_reply *));
-__db_extentsize_reply * __db_db_extentsize_1 __P((__db_extentsize_msg *));
-void __db_extentsize_1_proc __P((long, u_int32_t, __db_extentsize_reply *));
-__db_flags_reply * __db_db_flags_1 __P((__db_flags_msg *));
-void __db_flags_1_proc __P((long, u_int32_t, __db_flags_reply *));
-__db_get_reply * __db_db_get_1 __P((__db_get_msg *));
-void __db_get_1_proc __P((long, long, u_int32_t,
- u_int32_t, u_int32_t, void *, u_int32_t,
- u_int32_t, u_int32_t, u_int32_t, void *,
- u_int32_t, u_int32_t, __db_get_reply *, int *));
-__db_h_ffactor_reply * __db_db_h_ffactor_1 __P((__db_h_ffactor_msg *));
-void __db_h_ffactor_1_proc __P((long, u_int32_t, __db_h_ffactor_reply *));
-__db_h_nelem_reply * __db_db_h_nelem_1 __P((__db_h_nelem_msg *));
-void __db_h_nelem_1_proc __P((long, u_int32_t, __db_h_nelem_reply *));
-__db_key_range_reply * __db_db_key_range_1 __P((__db_key_range_msg *));
-void __db_key_range_1_proc __P((long, long, u_int32_t,
- u_int32_t, u_int32_t, void *, u_int32_t,
- u_int32_t, __db_key_range_reply *));
-__db_lorder_reply * __db_db_lorder_1 __P((__db_lorder_msg *));
-void __db_lorder_1_proc __P((long, u_int32_t, __db_lorder_reply *));
-__db_open_reply * __db_db_open_1 __P((__db_open_msg *));
-void __db_open_1_proc __P((long, char *, char *,
- u_int32_t, u_int32_t, u_int32_t, __db_open_reply *));
-__db_pagesize_reply * __db_db_pagesize_1 __P((__db_pagesize_msg *));
-void __db_pagesize_1_proc __P((long, u_int32_t, __db_pagesize_reply *));
-__db_put_reply * __db_db_put_1 __P((__db_put_msg *));
-void __db_put_1_proc __P((long, long, u_int32_t,
- u_int32_t, u_int32_t, void *, u_int32_t,
- u_int32_t, u_int32_t, u_int32_t, void *,
- u_int32_t, u_int32_t, __db_put_reply *, int *));
-__db_re_delim_reply * __db_db_re_delim_1 __P((__db_re_delim_msg *));
-void __db_re_delim_1_proc __P((long, u_int32_t, __db_re_delim_reply *));
-__db_re_len_reply * __db_db_re_len_1 __P((__db_re_len_msg *));
-void __db_re_len_1_proc __P((long, u_int32_t, __db_re_len_reply *));
-__db_re_pad_reply * __db_db_re_pad_1 __P((__db_re_pad_msg *));
-void __db_re_pad_1_proc __P((long, u_int32_t, __db_re_pad_reply *));
-__db_remove_reply * __db_db_remove_1 __P((__db_remove_msg *));
-void __db_remove_1_proc __P((long, char *, char *,
- u_int32_t, __db_remove_reply *));
-__db_rename_reply * __db_db_rename_1 __P((__db_rename_msg *));
-void __db_rename_1_proc __P((long, char *, char *,
- char *, u_int32_t, __db_rename_reply *));
-__db_stat_reply * __db_db_stat_1 __P((__db_stat_msg *));
-void __db_stat_1_proc __P((long,
- u_int32_t, __db_stat_reply *, int *));
-__db_swapped_reply * __db_db_swapped_1 __P((__db_swapped_msg *));
-void __db_swapped_1_proc __P((long, __db_swapped_reply *));
-__db_sync_reply * __db_db_sync_1 __P((__db_sync_msg *));
-void __db_sync_1_proc __P((long, u_int32_t, __db_sync_reply *));
-__db_cursor_reply * __db_db_cursor_1 __P((__db_cursor_msg *));
-void __db_cursor_1_proc __P((long, long,
- u_int32_t, __db_cursor_reply *));
-__db_join_reply * __db_db_join_1 __P((__db_join_msg *));
-void __db_join_1_proc __P((long, u_int32_t *,
- u_int32_t, __db_join_reply *));
-__dbc_close_reply * __db_dbc_close_1 __P((__dbc_close_msg *));
-void __dbc_close_1_proc __P((long, __dbc_close_reply *));
-__dbc_count_reply * __db_dbc_count_1 __P((__dbc_count_msg *));
-void __dbc_count_1_proc __P((long, u_int32_t, __dbc_count_reply *));
-__dbc_del_reply * __db_dbc_del_1 __P((__dbc_del_msg *));
-void __dbc_del_1_proc __P((long, u_int32_t, __dbc_del_reply *));
-__dbc_dup_reply * __db_dbc_dup_1 __P((__dbc_dup_msg *));
-void __dbc_dup_1_proc __P((long, u_int32_t, __dbc_dup_reply *));
-__dbc_get_reply * __db_dbc_get_1 __P((__dbc_get_msg *));
-void __dbc_get_1_proc __P((long, u_int32_t, u_int32_t,
- u_int32_t, void *, u_int32_t, u_int32_t,
- u_int32_t, u_int32_t, void *, u_int32_t,
- u_int32_t, __dbc_get_reply *, int *));
-__dbc_put_reply * __db_dbc_put_1 __P((__dbc_put_msg *));
-void __dbc_put_1_proc __P((long, u_int32_t, u_int32_t,
- u_int32_t, void *, u_int32_t, u_int32_t,
- u_int32_t, u_int32_t, void *, u_int32_t,
- u_int32_t, __dbc_put_reply *, int *));
diff --git a/db/include/hash.h b/db/include/hash.h
deleted file mode 100644
index 14a88c80b..000000000
--- a/db/include/hash.h
+++ /dev/null
@@ -1,140 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1996, 1997, 1998, 1999, 2000
- * Sleepycat Software. All rights reserved.
- */
-/*
- * Copyright (c) 1990, 1993, 1994
- * Margo Seltzer. All rights reserved.
- */
-/*
- * Copyright (c) 1990, 1993, 1994
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Margo Seltzer.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $Id: hash.h,v 11.19 2000/12/21 23:05:16 krinsky Exp $
- */
-
-/* Hash internal structure. */
-typedef struct hash_t {
- db_pgno_t meta_pgno; /* Page number of the meta data page. */
- u_int32_t h_ffactor; /* Fill factor. */
- u_int32_t h_nelem; /* Number of elements. */
- /* Hash function. */
- u_int32_t (*h_hash) __P((DB *, const void *, u_int32_t));
-} HASH;
-
-/* Cursor structure definitions. */
-typedef struct cursor_t {
- /* struct __dbc_internal */
- __DBC_INTERNAL
-
- /* Hash private part */
-
- /* Per-thread information */
- DB_LOCK hlock; /* Metadata page lock. */
- HMETA *hdr; /* Pointer to meta-data page. */
- PAGE *split_buf; /* Temporary buffer for splits. */
-
- /* Hash cursor information */
- db_pgno_t bucket; /* Bucket we are traversing. */
- db_pgno_t lbucket; /* Bucket for which we are locked. */
- db_indx_t dup_off; /* Offset within a duplicate set. */
- db_indx_t dup_len; /* Length of current duplicate. */
- db_indx_t dup_tlen; /* Total length of duplicate entry. */
- u_int32_t seek_size; /* Number of bytes we need for add. */
- db_pgno_t seek_found_page;/* Page on which we can insert. */
- u_int32_t order; /* Relative order among deleted curs. */
-
-#define H_CONTINUE 0x0001 /* Join--search strictly fwd for data */
-#define H_DELETED 0x0002 /* Cursor item is deleted. */
-#define H_DIRTY 0x0004 /* Meta-data page needs to be written */
-#define H_DUPONLY 0x0008 /* Dups only; do not change key. */
-#define H_EXPAND 0x0010 /* Table expanded. */
-#define H_ISDUP 0x0020 /* Cursor is within duplicate set. */
-#define H_NEXT_NODUP 0x0040 /* Get next non-dup entry. */
-#define H_NOMORE 0x0080 /* No more entries in bucket. */
-#define H_OK 0x0100 /* Request succeeded. */
- u_int32_t flags;
-} HASH_CURSOR;
-
-/* Test string. */
-#define CHARKEY "%$sniglet^&"
-
-/* Overflow management */
-/*
- * The spares table indicates the page number at which each doubling begins.
- * From this page number we subtract the number of buckets already allocated
- * so that we can do a simple addition to calculate the page number here.
- */
-#define BS_TO_PAGE(bucket, spares) \
- ((bucket) + (spares)[__db_log2((bucket) + 1)])
-#define BUCKET_TO_PAGE(I, B) (BS_TO_PAGE((B), (I)->hdr->spares))
-
-/* Constraints about much data goes on a page. */
-
-#define MINFILL 4
-#define ISBIG(I, N) (((N) > ((I)->hdr->dbmeta.pagesize / MINFILL)) ? 1 : 0)
-
-/* Shorthands for accessing structure */
-#define NDX_INVALID 0xFFFF
-#define BUCKET_INVALID 0xFFFFFFFF
-
-/* On page duplicates are stored as a string of size-data-size triples. */
-#define DUP_SIZE(len) ((len) + 2 * sizeof(db_indx_t))
-
-/* Log messages types (these are subtypes within a record type) */
-#define PAIR_KEYMASK 0x1
-#define PAIR_DATAMASK 0x2
-#define PAIR_DUPMASK 0x4
-#define PAIR_MASK 0xf
-#define PAIR_ISKEYBIG(N) (N & PAIR_KEYMASK)
-#define PAIR_ISDATABIG(N) (N & PAIR_DATAMASK)
-#define PAIR_ISDATADUP(N) (N & PAIR_DUPMASK)
-#define OPCODE_OF(N) (N & ~PAIR_MASK)
-
-#define PUTPAIR 0x20
-#define DELPAIR 0x30
-#define PUTOVFL 0x40
-#define DELOVFL 0x50
-#define HASH_UNUSED1 0x60
-#define HASH_UNUSED2 0x70
-#define SPLITOLD 0x80
-#define SPLITNEW 0x90
-
-typedef enum {
- DB_HAM_CHGPG = 1,
- DB_HAM_SPLIT = 2,
- DB_HAM_DUP = 3
-} db_ham_mode;
-
-#include "hash_auto.h"
-#include "hash_ext.h"
-#include "db_am.h"
diff --git a/db/include/hash_auto.h b/db/include/hash_auto.h
deleted file mode 100644
index 5d816d5bb..000000000
--- a/db/include/hash_auto.h
+++ /dev/null
@@ -1,248 +0,0 @@
-/* Do not edit: automatically built by gen_rec.awk. */
-
-#ifndef ham_AUTO_H
-#define ham_AUTO_H
-
-#define DB_ham_insdel 21
-typedef struct _ham_insdel_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- u_int32_t opcode;
- int32_t fileid;
- db_pgno_t pgno;
- u_int32_t ndx;
- DB_LSN pagelsn;
- DBT key;
- DBT data;
-} __ham_insdel_args;
-
-int __ham_insdel_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, u_int32_t, int32_t, db_pgno_t, u_int32_t, DB_LSN *, const DBT *, const DBT *));
-int __ham_insdel_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __ham_insdel_read __P((DB_ENV *, void *, __ham_insdel_args **));
-
-#define DB_ham_newpage 22
-typedef struct _ham_newpage_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- u_int32_t opcode;
- int32_t fileid;
- db_pgno_t prev_pgno;
- DB_LSN prevlsn;
- db_pgno_t new_pgno;
- DB_LSN pagelsn;
- db_pgno_t next_pgno;
- DB_LSN nextlsn;
-} __ham_newpage_args;
-
-int __ham_newpage_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, u_int32_t, int32_t, db_pgno_t, DB_LSN *, db_pgno_t, DB_LSN *, db_pgno_t, DB_LSN *));
-int __ham_newpage_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __ham_newpage_read __P((DB_ENV *, void *, __ham_newpage_args **));
-
-#define DB_ham_splitmeta 23
-typedef struct _ham_splitmeta_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- u_int32_t bucket;
- u_int32_t ovflpoint;
- u_int32_t spares;
- DB_LSN metalsn;
-} __ham_splitmeta_args;
-
-int __ham_splitmeta_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __ham_splitmeta_read __P((DB_ENV *, void *, __ham_splitmeta_args **));
-
-#define DB_ham_splitdata 24
-typedef struct _ham_splitdata_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- u_int32_t opcode;
- db_pgno_t pgno;
- DBT pageimage;
- DB_LSN pagelsn;
-} __ham_splitdata_args;
-
-int __ham_splitdata_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, u_int32_t, db_pgno_t, const DBT *, DB_LSN *));
-int __ham_splitdata_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __ham_splitdata_read __P((DB_ENV *, void *, __ham_splitdata_args **));
-
-#define DB_ham_replace 25
-typedef struct _ham_replace_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- db_pgno_t pgno;
- u_int32_t ndx;
- DB_LSN pagelsn;
- int32_t off;
- DBT olditem;
- DBT newitem;
- u_int32_t makedup;
-} __ham_replace_args;
-
-int __ham_replace_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, u_int32_t, DB_LSN *, int32_t, const DBT *, const DBT *, u_int32_t));
-int __ham_replace_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __ham_replace_read __P((DB_ENV *, void *, __ham_replace_args **));
-
-#define DB_ham_newpgno 26
-typedef struct _ham_newpgno_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- u_int32_t opcode;
- int32_t fileid;
- db_pgno_t pgno;
- db_pgno_t free_pgno;
- u_int32_t old_type;
- db_pgno_t old_pgno;
- u_int32_t new_type;
- DB_LSN pagelsn;
- DB_LSN metalsn;
-} __ham_newpgno_args;
-
-int __ham_newpgno_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __ham_newpgno_read __P((DB_ENV *, void *, __ham_newpgno_args **));
-
-#define DB_ham_ovfl 27
-typedef struct _ham_ovfl_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- db_pgno_t start_pgno;
- u_int32_t npages;
- db_pgno_t free_pgno;
- u_int32_t ovflpoint;
- DB_LSN metalsn;
-} __ham_ovfl_args;
-
-int __ham_ovfl_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __ham_ovfl_read __P((DB_ENV *, void *, __ham_ovfl_args **));
-
-#define DB_ham_copypage 28
-typedef struct _ham_copypage_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- db_pgno_t pgno;
- DB_LSN pagelsn;
- db_pgno_t next_pgno;
- DB_LSN nextlsn;
- db_pgno_t nnext_pgno;
- DB_LSN nnextlsn;
- DBT page;
-} __ham_copypage_args;
-
-int __ham_copypage_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, DB_LSN *, db_pgno_t, DB_LSN *, db_pgno_t, DB_LSN *, const DBT *));
-int __ham_copypage_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __ham_copypage_read __P((DB_ENV *, void *, __ham_copypage_args **));
-
-#define DB_ham_metagroup 29
-typedef struct _ham_metagroup_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- u_int32_t bucket;
- db_pgno_t pgno;
- DB_LSN metalsn;
- DB_LSN pagelsn;
-} __ham_metagroup_args;
-
-int __ham_metagroup_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, u_int32_t, db_pgno_t, DB_LSN *, DB_LSN *));
-int __ham_metagroup_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __ham_metagroup_read __P((DB_ENV *, void *, __ham_metagroup_args **));
-
-#define DB_ham_groupalloc1 30
-typedef struct _ham_groupalloc1_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- db_pgno_t pgno;
- DB_LSN metalsn;
- DB_LSN mmetalsn;
- db_pgno_t start_pgno;
- u_int32_t num;
-} __ham_groupalloc1_args;
-
-int __ham_groupalloc1_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __ham_groupalloc1_read __P((DB_ENV *, void *, __ham_groupalloc1_args **));
-
-#define DB_ham_groupalloc2 31
-typedef struct _ham_groupalloc2_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- DB_LSN meta_lsn;
- DB_LSN alloc_lsn;
- db_pgno_t start_pgno;
- u_int32_t num;
- db_pgno_t free;
-} __ham_groupalloc2_args;
-
-int __ham_groupalloc2_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __ham_groupalloc2_read __P((DB_ENV *, void *, __ham_groupalloc2_args **));
-
-#define DB_ham_groupalloc 32
-typedef struct _ham_groupalloc_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- DB_LSN meta_lsn;
- db_pgno_t start_pgno;
- u_int32_t num;
- db_pgno_t free;
-} __ham_groupalloc_args;
-
-int __ham_groupalloc_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, DB_LSN *, db_pgno_t, u_int32_t, db_pgno_t));
-int __ham_groupalloc_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __ham_groupalloc_read __P((DB_ENV *, void *, __ham_groupalloc_args **));
-
-#define DB_ham_curadj 33
-typedef struct _ham_curadj_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- db_pgno_t pgno;
- u_int32_t indx;
- u_int32_t len;
- u_int32_t dup_off;
- int add;
- int is_dup;
- u_int32_t order;
-} __ham_curadj_args;
-
-int __ham_curadj_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, u_int32_t, u_int32_t, u_int32_t, int, int, u_int32_t));
-int __ham_curadj_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __ham_curadj_read __P((DB_ENV *, void *, __ham_curadj_args **));
-
-#define DB_ham_chgpg 34
-typedef struct _ham_chgpg_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- db_ham_mode mode;
- db_pgno_t old_pgno;
- db_pgno_t new_pgno;
- u_int32_t old_indx;
- u_int32_t new_indx;
-} __ham_chgpg_args;
-
-int __ham_chgpg_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_ham_mode, db_pgno_t, db_pgno_t, u_int32_t, u_int32_t));
-int __ham_chgpg_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __ham_chgpg_read __P((DB_ENV *, void *, __ham_chgpg_args **));
-int __ham_init_print __P((DB_ENV *));
-int __ham_init_recover __P((DB_ENV *));
-#endif
diff --git a/db/include/hash_ext.h b/db/include/hash_ext.h
deleted file mode 100644
index babb77a79..000000000
--- a/db/include/hash_ext.h
+++ /dev/null
@@ -1,106 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_include. */
-#ifndef _hash_ext_h_
-#define _hash_ext_h_
-#if defined(__cplusplus)
-extern "C" {
-#endif
-int __ham_metachk __P((DB *, const char *, HMETA *));
-int __ham_open __P((DB *, const char *, db_pgno_t, u_int32_t));
-int __ham_c_init __P((DBC *));
-int __ham_c_count __P((DBC *, db_recno_t *));
-int __ham_c_dup __P((DBC *, DBC *));
-u_int32_t __ham_call_hash __P((DBC *, u_int8_t *, int32_t));
-int __ham_init_dbt __P((DB_ENV *,
- DBT *, u_int32_t, void **, u_int32_t *));
-int __ham_c_update
- __P((DBC *, u_int32_t, int, int));
-int __ham_get_clist __P((DB *,
- db_pgno_t, u_int32_t, DBC ***));
-int __ham_c_chgpg
- __P((DBC *, db_pgno_t, u_int32_t, db_pgno_t, u_int32_t));
-int __ham_pgin __P((DB_ENV *, db_pgno_t, void *, DBT *));
-int __ham_pgout __P((DB_ENV *, db_pgno_t, void *, DBT *));
-int __ham_mswap __P((void *));
-int __ham_add_dup __P((DBC *, DBT *, u_int32_t, db_pgno_t *));
-int __ham_dup_convert __P((DBC *));
-int __ham_make_dup __P((DB_ENV *,
- const DBT *, DBT *d, void **, u_int32_t *));
-void __ham_move_offpage __P((DBC *, PAGE *, u_int32_t, db_pgno_t));
-void __ham_dsearch __P((DBC *, DBT *, u_int32_t *, int *));
-int __ham_cprint __P((DB *));
-u_int32_t __ham_func2 __P((DB *, const void *, u_int32_t));
-u_int32_t __ham_func3 __P((DB *, const void *, u_int32_t));
-u_int32_t __ham_func4 __P((DB *, const void *, u_int32_t));
-u_int32_t __ham_func5 __P((DB *, const void *, u_int32_t));
-int __ham_get_meta __P((DBC *));
-int __ham_release_meta __P((DBC *));
-int __ham_dirty_meta __P((DBC *));
-int __ham_db_create __P((DB *));
-int __ham_db_close __P((DB *));
-int __ham_item __P((DBC *, db_lockmode_t, db_pgno_t *));
-int __ham_item_reset __P((DBC *));
-void __ham_item_init __P((DBC *));
-int __ham_item_last __P((DBC *, db_lockmode_t, db_pgno_t *));
-int __ham_item_first __P((DBC *, db_lockmode_t, db_pgno_t *));
-int __ham_item_prev __P((DBC *, db_lockmode_t, db_pgno_t *));
-int __ham_item_next __P((DBC *, db_lockmode_t, db_pgno_t *));
-void __ham_putitem __P((PAGE *p, const DBT *, int));
-void __ham_reputpair
- __P((PAGE *p, u_int32_t, u_int32_t, const DBT *, const DBT *));
-int __ham_del_pair __P((DBC *, int));
-int __ham_replpair __P((DBC *, DBT *, u_int32_t));
-void __ham_onpage_replace __P((PAGE *, size_t, u_int32_t, int32_t,
- int32_t, DBT *));
-int __ham_split_page __P((DBC *, u_int32_t, u_int32_t));
-int __ham_add_el __P((DBC *, const DBT *, const DBT *, int));
-void __ham_copy_item __P((size_t, PAGE *, u_int32_t, PAGE *));
-int __ham_add_ovflpage __P((DBC *, PAGE *, int, PAGE **));
-int __ham_get_cpage __P((DBC *, db_lockmode_t));
-int __ham_next_cpage __P((DBC *, db_pgno_t, int));
-int __ham_lock_bucket __P((DBC *, db_lockmode_t));
-void __ham_dpair __P((DB *, PAGE *, u_int32_t));
-int __ham_insdel_recover
- __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __ham_newpage_recover
- __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __ham_replace_recover
- __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __ham_splitdata_recover
- __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __ham_copypage_recover
- __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __ham_metagroup_recover
- __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __ham_groupalloc_recover
- __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __ham_curadj_recover
- __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __ham_chgpg_recover
- __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __ham_reclaim __P((DB *, DB_TXN *txn));
-int __ham_stat __P((DB *, void *, void *(*)(size_t), u_int32_t));
- int __ham_traverse __P((DB *, DBC *, db_lockmode_t,
- int (*)(DB *, PAGE *, void *, int *), void *));
-int __ham_30_hashmeta __P((DB *, char *, u_int8_t *));
-int __ham_30_sizefix __P((DB *, DB_FH *, char *, u_int8_t *));
-int __ham_31_hashmeta
- __P((DB *, char *, u_int32_t, DB_FH *, PAGE *, int *));
-int __ham_31_hash
- __P((DB *, char *, u_int32_t, DB_FH *, PAGE *, int *));
-int __ham_vrfy_meta __P((DB *, VRFY_DBINFO *, HMETA *,
- db_pgno_t, u_int32_t));
-int __ham_vrfy __P((DB *, VRFY_DBINFO *, PAGE *, db_pgno_t,
- u_int32_t));
-int __ham_vrfy_structure __P((DB *, VRFY_DBINFO *, db_pgno_t,
- u_int32_t));
-int __ham_vrfy_hashing __P((DB *,
- u_int32_t, HMETA *, u_int32_t, db_pgno_t, u_int32_t,
- u_int32_t (*) __P((DB *, const void *, u_int32_t))));
-int __ham_salvage __P((DB *, VRFY_DBINFO *, db_pgno_t, PAGE *,
- void *, int (*)(void *, const void *), u_int32_t));
-int __ham_meta2pgset __P((DB *, VRFY_DBINFO *, HMETA *, u_int32_t,
- DB *));
-#if defined(__cplusplus)
-}
-#endif
-#endif /* _hash_ext_h_ */
diff --git a/db/include/lock.h b/db/include/lock.h
deleted file mode 100644
index e4a01ddf9..000000000
--- a/db/include/lock.h
+++ /dev/null
@@ -1,190 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1996, 1997, 1998, 1999, 2000
- * Sleepycat Software. All rights reserved.
- *
- * $Id: lock.h,v 11.20 2000/12/12 17:43:56 bostic Exp $
- */
-
-#define DB_LOCK_DEFAULT_N 1000 /* Default # of locks in region. */
-
-/*
- * Out of band value for a lock. Locks contain an offset into a lock region,
- * so we use an invalid region offset to indicate an invalid or unset lock.
- */
-#define LOCK_INVALID INVALID_ROFF
-
-/*
- * The locker id space is divided between the transaction manager and the lock
- * manager. Lock IDs start at 0 and go to DB_LOCK_MAXID. Txn IDs start at
- * DB_LOCK_MAXID + 1 and go up to TXN_INVALID.
- */
-#define DB_LOCK_MAXID 0x7fffffff
-
-/*
- * DB_LOCKREGION --
- * The lock shared region.
- */
-typedef struct __db_lockregion {
- u_int32_t id; /* unique id generator */
- u_int32_t need_dd; /* flag for deadlock detector */
- u_int32_t detect; /* run dd on every conflict */
- /* free lock header */
- SH_TAILQ_HEAD(__flock) free_locks;
- /* free obj header */
- SH_TAILQ_HEAD(__fobj) free_objs;
- /* free locker header */
- SH_TAILQ_HEAD(__flocker) free_lockers;
- SH_TAILQ_HEAD(__dobj) dd_objs; /* objects with waiters */
- u_int32_t maxlocks; /* maximum number of locks in table */
- u_int32_t maxlockers; /* maximum number of lockers in table */
- u_int32_t maxobjects; /* maximum number of objects in table */
- u_int32_t locker_t_size; /* size of locker hash table */
- u_int32_t object_t_size; /* size of object hash table */
- u_int32_t nmodes; /* number of lock modes */
- u_int32_t nlocks; /* current number of locks */
- u_int32_t maxnlocks; /* maximum number of locks so far*/
- u_int32_t nlockers; /* current number of lockers */
- u_int32_t maxnlockers; /* maximum number of lockers so far */
- u_int32_t nobjects; /* current number of objects */
- u_int32_t maxnobjects; /* maximum number of objects so far */
- roff_t conf_off; /* offset of conflicts array */
- roff_t obj_off; /* offset of object hash table */
- roff_t osynch_off; /* offset of the object mutex table */
- roff_t locker_off; /* offset of locker hash table */
- roff_t lsynch_off; /* offset of the locker mutex table */
- u_int32_t nconflicts; /* number of lock conflicts */
- u_int32_t nrequests; /* number of lock gets */
- u_int32_t nreleases; /* number of lock puts */
- u_int32_t nnowaits; /* number of lock requests that would
- have waited without nowait */
- u_int32_t ndeadlocks; /* number of deadlocks */
-#ifdef MUTEX_SYSTEM_RESOURCES
- roff_t maint_off; /* offset of region maintenance info */
-#endif
-} DB_LOCKREGION;
-
-/*
- * Since we will store DBTs in shared memory, we need the equivalent of a
- * DBT that will work in shared memory.
- */
-typedef struct __sh_dbt {
- u_int32_t size; /* Byte length. */
- ssize_t off; /* Region offset. */
-} SH_DBT;
-
-#define SH_DBT_PTR(p) ((void *)(((u_int8_t *)(p)) + (p)->off))
-
-/*
- * Object structures; these live in the object hash table.
- */
-typedef struct __db_lockobj {
- SH_DBT lockobj; /* Identifies object locked. */
- SH_TAILQ_ENTRY links; /* Links for free list or hash list. */
- SH_TAILQ_ENTRY dd_links; /* Links for dd list. */
- SH_TAILQ_HEAD(__wait) waiters; /* List of waiting locks. */
- SH_TAILQ_HEAD(__hold) holders; /* List of held locks. */
- /* Declare room in the object to hold
- * typical DB lock structures so that
- * we do not have to allocate them from
- * shalloc at run-time. */
- u_int8_t objdata[sizeof(struct __db_ilock)];
-} DB_LOCKOBJ;
-
-/*
- * Locker structures; these live in the locker hash table.
- */
-typedef struct __db_locker {
- u_int32_t id; /* Locker id. */
- u_int32_t dd_id; /* Deadlock detector id. */
- size_t master_locker; /* Locker of master transaction. */
- size_t parent_locker; /* Parent of this child. */
- SH_LIST_HEAD(_child) child_locker; /* List of descendant txns;
- only used in a "master"
- txn. */
- SH_LIST_ENTRY child_link; /* Links transactions in the family;
- elements of the child_locker
- list. */
- SH_TAILQ_ENTRY links; /* Links for free list. */
- SH_LIST_HEAD(_held) heldby; /* Locks held by this locker. */
-
-#define DB_LOCKER_DELETED 0x0001
- u_int32_t flags;
-} DB_LOCKER;
-
-/*
- * Lockers can be freed if they are not part of a transaction family.
- * Members of a family either point at the master transaction or are
- * the master transaction and have children lockers.
- */
-#define LOCKER_FREEABLE(lp) \
- ((lp)->master_locker == TXN_INVALID_ID && \
- SH_LIST_FIRST(&(lp)->child_locker, __db_locker) == NULL)
-
-/*
- * DB_LOCKTAB --
- * The primary library lock data structure (i.e., the one referenced
- * by the environment, as opposed to the internal one laid out in the region.)
- */
-typedef struct __db_locktab {
- DB_ENV *dbenv; /* Environment. */
- REGINFO reginfo; /* Region information. */
- u_int8_t *conflicts; /* Pointer to conflict matrix. */
- DB_HASHTAB *obj_tab; /* Beginning of object hash table. */
- DB_HASHTAB *locker_tab; /* Beginning of locker hash table. */
-} DB_LOCKTAB;
-
-/* Test for conflicts. */
-#define CONFLICTS(T, R, HELD, WANTED) \
- (T)->conflicts[(HELD) * (R)->nmodes + (WANTED)]
-
-#define OBJ_LINKS_VALID(L) ((L)->links.stqe_prev != -1)
-
-struct __db_lock {
- /*
- * Wait on mutex to wait on lock. You reference your own mutex with
- * ID 0 and others reference your mutex with ID 1.
- */
- MUTEX mutex;
-
- u_int32_t holder; /* Who holds this lock. */
- u_int32_t gen; /* Generation count. */
- SH_TAILQ_ENTRY links; /* Free or holder/waiter list. */
- SH_LIST_ENTRY locker_links; /* List of locks held by a locker. */
- u_int32_t refcount; /* Reference count the lock. */
- db_lockmode_t mode; /* What sort of lock. */
- ssize_t obj; /* Relative offset of object struct. */
- db_status_t status; /* Status of this lock. */
-};
-
-/*
- * Flag values for __lock_put_internal:
- * DB_LOCK_DOALL: Unlock all references in this lock (instead of only 1).
- * DB_LOCK_FREE: Free the lock (used in checklocker).
- * DB_LOCK_IGNOREDEL: Remove from the locker hash table even if already
- deleted (used in checklocker).
- * DB_LOCK_NOPROMOTE: Don't bother running promotion when releasing locks
- * (used by __lock_put_internal).
- * DB_LOCK_UNLINK: Remove from the locker links (used in checklocker).
- */
-#define DB_LOCK_DOALL 0x001
-#define DB_LOCK_FREE 0x002
-#define DB_LOCK_IGNOREDEL 0x004
-#define DB_LOCK_NOPROMOTE 0x008
-#define DB_LOCK_UNLINK 0x010
-#define DB_LOCK_NOWAITERS 0x020
-
-/*
- * Macros to get/release different types of mutexes.
- */
-#define OBJECT_LOCK(lt, reg, obj, ndx) \
- ndx = __lock_ohash(obj) % (reg)->object_t_size
-#define SHOBJECT_LOCK(lt, reg, shobj, ndx) \
- ndx = __lock_lhash(shobj) % (reg)->object_t_size
-#define LOCKER_LOCK(lt, reg, locker, ndx) \
- ndx = __lock_locker_hash(locker) % (reg)->locker_t_size;
-
-#define LOCKREGION(dbenv, lt) R_LOCK((dbenv), &(lt)->reginfo)
-#define UNLOCKREGION(dbenv, lt) R_UNLOCK((dbenv), &(lt)->reginfo)
-#include "lock_ext.h"
diff --git a/db/include/lock_ext.h b/db/include/lock_ext.h
deleted file mode 100644
index 7ed9b1c69..000000000
--- a/db/include/lock_ext.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_include. */
-#ifndef _lock_ext_h_
-#define _lock_ext_h_
-#if defined(__cplusplus)
-extern "C" {
-#endif
-int __lock_downgrade __P((DB_ENV *,
- DB_LOCK *, db_lockmode_t, u_int32_t));
-int __lock_addfamilylocker __P((DB_ENV *, u_int32_t, u_int32_t));
-int __lock_freefamilylocker __P((DB_LOCKTAB *, u_int32_t));
-void __lock_freelocker __P((DB_LOCKTAB *,
- DB_LOCKREGION *, DB_LOCKER *, u_int32_t));
-int __lock_getlocker __P((DB_LOCKTAB *,
- u_int32_t, u_int32_t, int, DB_LOCKER **));
-int __lock_getobj __P((DB_LOCKTAB *,
- const DBT *, u_int32_t, int, DB_LOCKOBJ **));
-int __lock_promote __P((DB_LOCKTAB *, DB_LOCKOBJ *, int));
-void __lock_printlock __P((DB_LOCKTAB *, struct __db_lock *, int));
-int __lock_set_lk_conflicts __P((DB_ENV *, u_int8_t *, int));
-int __lock_set_lk_detect __P((DB_ENV *, u_int32_t));
-int __lock_set_lk_max __P((DB_ENV *, u_int32_t));
-int __lock_set_lk_max_locks __P((DB_ENV *, u_int32_t));
-int __lock_set_lk_max_lockers __P((DB_ENV *, u_int32_t));
-int __lock_set_lk_max_objects __P((DB_ENV *, u_int32_t));
-void __lock_dbenv_create __P((DB_ENV *));
-void __lock_dbenv_close __P((DB_ENV *));
-int __lock_open __P((DB_ENV *));
-int __lock_close __P((DB_ENV *));
-void __lock_region_destroy __P((DB_ENV *, REGINFO *));
-void __lock_dump_region __P((DB_ENV *, char *, FILE *));
-int __lock_cmp __P((const DBT *, DB_LOCKOBJ *));
-int __lock_locker_cmp __P((u_int32_t, DB_LOCKER *));
-u_int32_t __lock_ohash __P((const DBT *));
-u_int32_t __lock_lhash __P((DB_LOCKOBJ *));
-u_int32_t __lock_locker_hash __P((u_int32_t));
-#if defined(__cplusplus)
-}
-#endif
-#endif /* _lock_ext_h_ */
diff --git a/db/include/log_auto.h b/db/include/log_auto.h
deleted file mode 100644
index ddbcbcb3e..000000000
--- a/db/include/log_auto.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/* Do not edit: automatically built by gen_rec.awk. */
-
-#ifndef log_AUTO_H
-#define log_AUTO_H
-
-#define DB_log_register1 1
-typedef struct _log_register1_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- u_int32_t opcode;
- DBT name;
- DBT uid;
- int32_t fileid;
- DBTYPE ftype;
-} __log_register1_args;
-
-int __log_register1_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __log_register1_read __P((DB_ENV *, void *, __log_register1_args **));
-
-#define DB_log_register 2
-typedef struct _log_register_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- u_int32_t opcode;
- DBT name;
- DBT uid;
- int32_t fileid;
- DBTYPE ftype;
- db_pgno_t meta_pgno;
-} __log_register_args;
-
-int __log_register_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, u_int32_t, const DBT *, const DBT *, int32_t, DBTYPE, db_pgno_t));
-int __log_register_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __log_register_read __P((DB_ENV *, void *, __log_register_args **));
-int __log_init_print __P((DB_ENV *));
-int __log_init_recover __P((DB_ENV *));
-#endif
diff --git a/db/include/log_ext.h b/db/include/log_ext.h
deleted file mode 100644
index 985c5d774..000000000
--- a/db/include/log_ext.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_include. */
-#ifndef _log_ext_h_
-#define _log_ext_h_
-#if defined(__cplusplus)
-extern "C" {
-#endif
-int __log_open __P((DB_ENV *));
-int __log_find __P((DB_LOG *, int, int *, logfile_validity *));
-int __log_valid __P((DB_LOG *, u_int32_t, int, logfile_validity *));
-int __log_close __P((DB_ENV *));
-int __log_lastckp __P((DB_ENV *, DB_LSN *));
-int __log_findckp __P((DB_ENV *, DB_LSN *));
-int __log_get __P((DB_LOG *, DB_LSN *, DBT *, u_int32_t, int));
-void __log_dbenv_create __P((DB_ENV *));
-int __log_put __P((DB_ENV *, DB_LSN *, const DBT *, u_int32_t));
-int __log_name __P((DB_LOG *,
- u_int32_t, char **, DB_FH *, u_int32_t));
-int __log_register_recover
- __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __log_reopen_file __P((DB_ENV *,
- char *, int32_t, u_int8_t *, db_pgno_t));
-int __log_add_logid __P((DB_ENV *, DB_LOG *, DB *, int32_t));
-int __db_fileid_to_db __P((DB_ENV *, DB **, int32_t, int));
-void __log_close_files __P((DB_ENV *));
-void __log_rem_logid __P((DB_LOG *, DB *, int32_t));
-int __log_lid_to_fname __P((DB_LOG *, int32_t, FNAME **));
-int __log_filelist_update
- __P((DB_ENV *, DB *, int32_t, const char *, int *));
-int __log_file_lock __P((DB *));
-#if defined(__cplusplus)
-}
-#endif
-#endif /* _log_ext_h_ */
diff --git a/db/include/mp.h b/db/include/mp.h
deleted file mode 100644
index 233cb1c2b..000000000
--- a/db/include/mp.h
+++ /dev/null
@@ -1,244 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1996, 1997, 1998, 1999, 2000
- * Sleepycat Software. All rights reserved.
- *
- * $Id: mp.h,v 11.16 2001/01/10 04:50:53 ubell Exp $
- */
-
-struct __bh; typedef struct __bh BH;
-struct __db_mpool; typedef struct __db_mpool DB_MPOOL;
-struct __db_mpreg; typedef struct __db_mpreg DB_MPREG;
-struct __mpool; typedef struct __mpool MPOOL;
-struct __mpoolfile; typedef struct __mpoolfile MPOOLFILE;
-
-/* We require at least 40K of cache. */
-#define DB_CACHESIZE_MIN (20 * 1024)
-
-/*
- * DB_MPOOL --
- * Per-process memory pool structure.
- */
-struct __db_mpool {
- /* These fields need to be protected for multi-threaded support. */
- MUTEX *mutexp; /* Structure thread lock. */
-
- /* List of pgin/pgout routines. */
- LIST_HEAD(__db_mpregh, __db_mpreg) dbregq;
-
- /* List of DB_MPOOLFILE's. */
- TAILQ_HEAD(__db_mpoolfileh, __db_mpoolfile) dbmfq;
-
- /* These fields are not thread-protected. */
- DB_ENV *dbenv; /* Reference to error information. */
-
- u_int32_t nreg; /* N underlying cache regions. */
- REGINFO *reginfo; /* Underlying cache regions. */
-};
-
-/*
- * DB_MPREG --
- * DB_MPOOL registry of pgin/pgout functions.
- */
-struct __db_mpreg {
- LIST_ENTRY(__db_mpreg) q; /* Linked list. */
-
- int ftype; /* File type. */
- /* Pgin, pgout routines. */
- int (*pgin) __P((DB_ENV *, db_pgno_t, void *, DBT *));
- int (*pgout) __P((DB_ENV *, db_pgno_t, void *, DBT *));
-};
-
-/*
- * DB_MPOOLFILE --
- * Per-process DB_MPOOLFILE information.
- */
-struct __db_mpoolfile {
- /* These fields need to be protected for multi-threaded support. */
- MUTEX *mutexp; /* Structure thread lock. */
-
- DB_FH fh; /* Underlying file handle. */
-
- u_int32_t ref; /* Reference count. */
-
- /*
- * !!!
- * This field is a special case -- it's protected by the region lock
- * NOT the thread lock. The reason for this is that we always have
- * the region lock immediately before or after we modify the field,
- * and we don't want to use the structure lock to protect it because
- * then I/O (which is done with the structure lock held because of
- * the race between the seek and write of the file descriptor) will
- * block any other put/get calls using this DB_MPOOLFILE structure.
- */
- u_int32_t pinref; /* Pinned block reference count. */
-
- /*
- * !!!
- * This field is a special case -- it's protected by the region lock
- * since it's manipulated only when new files are added to the list.
- */
- TAILQ_ENTRY(__db_mpoolfile) q; /* Linked list of DB_MPOOLFILE's. */
-
- /* These fields are not thread-protected. */
- DB_MPOOL *dbmp; /* Overlying DB_MPOOL. */
- MPOOLFILE *mfp; /* Underlying MPOOLFILE. */
-
- void *addr; /* Address of mmap'd region. */
- size_t len; /* Length of mmap'd region. */
-
- /* These fields need to be protected for multi-threaded support. */
-#define MP_READONLY 0x01 /* File is readonly. */
-#define MP_UPGRADE 0x02 /* File descriptor is readwrite. */
-#define MP_UPGRADE_FAIL 0x04 /* Upgrade wasn't possible. */
- u_int32_t flags;
-};
-
-/*
- * NCACHE --
- * Select a cache based on the page number. This assumes accesses are
- * uniform across pages, which is probably OK -- what we really want to
- * avoid is anything that puts all the pages for any single file in the
- * same cache, as we expect that file access will be bursty.
- */
-#define NCACHE(mp, pgno) \
- ((pgno) % ((MPOOL *)mp)->nreg)
-
-/*
- * NBUCKET --
- * We make the assumption that early pages of the file are more likely
- * to be retrieved than the later pages, which means the top bits will
- * be more interesting for hashing as they're less likely to collide.
- * That said, as 512 8K pages represents a 4MB file, so only reasonably
- * large files will have page numbers with any other than the bottom 9
- * bits set. We XOR in the MPOOL offset of the MPOOLFILE that backs the
- * page, since that should also be unique for the page. We don't want
- * to do anything very fancy -- speed is more important to us than using
- * good hashing.
- */
-#define NBUCKET(mc, mf_offset, pgno) \
- (((pgno) ^ ((mf_offset) << 9)) % (mc)->htab_buckets)
-
-/*
- * MPOOL --
- * Shared memory pool region.
- */
-struct __mpool {
- /*
- * The memory pool can be broken up into individual pieces/files.
- * Not what we would have liked, but on Solaris you can allocate
- * only a little more than 2GB of memory in a contiguous chunk,
- * and I expect to see more systems with similar issues.
- *
- * The first of these pieces/files describes the entire pool, all
- * subsequent ones only describe a part of the cache.
- *
- * We single-thread memp_sync and memp_fsync calls.
- *
- * This mutex is intended *only* to single-thread access to the call,
- * it is not used to protect the lsn and lsn_cnt fields, the region
- * lock is used to protect them.
- */
- MUTEX sync_mutex; /* Checkpoint lock. */
- DB_LSN lsn; /* Maximum checkpoint LSN. */
- u_int32_t lsn_cnt; /* Checkpoint buffers left to write. */
-
- SH_TAILQ_HEAD(__mpfq) mpfq; /* List of MPOOLFILEs. */
-
- u_int32_t nreg; /* Number of underlying REGIONS. */
- roff_t regids; /* Array of underlying REGION Ids. */
-
-#define MP_LSN_RETRY 0x01 /* Retry all BH_WRITE buffers. */
- u_int32_t flags;
-
- /*
- * The following structure fields only describe the cache portion of
- * the region.
- */
- SH_TAILQ_HEAD(__bhq) bhq; /* LRU list of buffer headers. */
-
- int htab_buckets; /* Number of hash table entries. */
- roff_t htab; /* Hash table offset. */
-
- DB_MPOOL_STAT stat; /* Per-cache mpool statistics. */
-#ifdef MUTEX_SYSTEM_RESOURCES
- roff_t maint_off; /* Maintenance information offset */
-#endif
-};
-
-/*
- * MPOOLFILE --
- * Shared DB_MPOOLFILE information.
- */
-struct __mpoolfile {
- SH_TAILQ_ENTRY q; /* List of MPOOLFILEs */
-
- db_pgno_t mpf_cnt; /* Ref count: DB_MPOOLFILEs. */
- db_pgno_t block_cnt; /* Ref count: blocks in cache. */
- db_pgno_t lsn_cnt; /* Checkpoint buffers left to write. */
-
- int ftype; /* File type. */
- int32_t lsn_off; /* Page's LSN offset. */
- u_int32_t clear_len; /* Bytes to clear on page create. */
-
- roff_t path_off; /* File name location. */
- roff_t fileid_off; /* File identification location. */
-
- roff_t pgcookie_len; /* Pgin/pgout cookie length. */
- roff_t pgcookie_off; /* Pgin/pgout cookie location. */
-
- db_pgno_t last_pgno; /* Last page in the file. */
- db_pgno_t orig_last_pgno; /* Original last page in the file. */
-
- DB_MPOOL_FSTAT stat; /* Per-file mpool statistics. */
-
-#define MP_CAN_MMAP 0x01 /* If the file can be mmap'd. */
-#define MP_DEADFILE 0x02 /* Dirty pages can simply be trashed. */
-#define MP_TEMP 0x04 /* Backing file is a temporary. */
-#define MP_UNLINK 0x08 /* Unlink file on last close. */
- u_int32_t flags;
-};
-
-/*
- * BH_TO_CACHE --
- * Return the cache where we can find the specified buffer header.
- */
-#define BH_TO_CACHE(dbmp, bhp) \
- (dbmp)->reginfo[NCACHE((dbmp)->reginfo[0].primary, (bhp)->pgno)].primary
-
-/*
- * BH --
- * Buffer header.
- */
-struct __bh {
- MUTEX mutex; /* Buffer thread/process lock. */
-
- u_int16_t ref; /* Reference count. */
-
-#define BH_CALLPGIN 0x001 /* Page needs to be reworked... */
-#define BH_DIRTY 0x002 /* Page was modified. */
-#define BH_DISCARD 0x004 /* Page is useless. */
-#define BH_LOCKED 0x008 /* Page is locked (I/O in progress). */
-#define BH_SYNC 0x010 /* memp sync: write the page */
-#define BH_SYNC_LOGFLSH 0x020 /* memp sync: also flush the log */
-#define BH_TRASH 0x040 /* Page is garbage. */
- u_int16_t flags;
-
- SH_TAILQ_ENTRY q; /* LRU queue. */
- SH_TAILQ_ENTRY hq; /* MPOOL hash bucket queue. */
-
- db_pgno_t pgno; /* Underlying MPOOLFILE page number. */
- roff_t mf_offset; /* Associated MPOOLFILE offset. */
-
- /*
- * !!!
- * This array must be at least size_t aligned -- the DB access methods
- * put PAGE and other structures into it, and then access them directly.
- * (We guarantee size_t alignment to applications in the documentation,
- * too.)
- */
- u_int8_t buf[1]; /* Variable length data. */
-};
-
-#include "mp_ext.h"
diff --git a/db/include/mp_ext.h b/db/include/mp_ext.h
deleted file mode 100644
index 9f2b8c61f..000000000
--- a/db/include/mp_ext.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_include. */
-#ifndef _mp_ext_h_
-#define _mp_ext_h_
-#if defined(__cplusplus)
-extern "C" {
-#endif
-int __memp_alloc __P((DB_MPOOL *,
- REGINFO *, MPOOLFILE *, size_t, roff_t *, void *));
-int __memp_bhwrite
- __P((DB_MPOOL *, MPOOLFILE *, BH *, int *, int *));
-int __memp_pgread __P((DB_MPOOLFILE *, BH *, int));
-int __memp_pgwrite
- __P((DB_MPOOL *, DB_MPOOLFILE *, BH *, int *, int *));
-int __memp_pg __P((DB_MPOOLFILE *, BH *, int));
-void __memp_bhfree __P((DB_MPOOL *, BH *, int));
-void __memp_set_unlink __P((DB_MPOOLFILE *));
-void __memp_clear_unlink __P((DB_MPOOLFILE *));
-int __memp_fopen __P((DB_MPOOL *, MPOOLFILE *, const char *,
- u_int32_t, int, size_t, int, DB_MPOOL_FINFO *, DB_MPOOLFILE **));
-void __memp_mf_discard __P((DB_MPOOL *, MPOOLFILE *));
-int __memp_fremove __P((DB_MPOOLFILE *));
-char * __memp_fn __P((DB_MPOOLFILE *));
-char * __memp_fns __P((DB_MPOOL *, MPOOLFILE *));
-void __memp_dbenv_create __P((DB_ENV *));
-int __memp_open __P((DB_ENV *));
-int __memp_close __P((DB_ENV *));
-void __mpool_region_destroy __P((DB_ENV *, REGINFO *));
-void __memp_dump_region __P((DB_ENV *, char *, FILE *));
-int __mp_xxx_fh __P((DB_MPOOLFILE *, DB_FH **));
-#if defined(__cplusplus)
-}
-#endif
-#endif /* _mp_ext_h_ */
diff --git a/db/include/mutex.h b/db/include/mutex.h
deleted file mode 100644
index a8a414510..000000000
--- a/db/include/mutex.h
+++ /dev/null
@@ -1,744 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1996, 1997, 1998, 1999, 2000
- * Sleepycat Software. All rights reserved.
- *
- * $Id: mutex.h,v 11.41 2000/12/22 19:28:15 bostic Exp $
- */
-
-/*
- * Some of the Berkeley DB ports require single-threading at various
- * places in the code. In those cases, these #defines will be set.
- */
-#define DB_BEGIN_SINGLE_THREAD
-#define DB_END_SINGLE_THREAD
-
-/*
- * When the underlying system mutexes require system resources, we have
- * to clean up after application failure. This violates the rule that
- * we never look at a shared region after a failure, but there's no other
- * choice. In those cases, this #define is set.
- */
-#ifdef HAVE_QNX
-#define MUTEX_SYSTEM_RESOURCES
-#endif
-
-/*********************************************************************
- * POSIX.1 pthreads interface.
- *********************************************************************/
-#ifdef HAVE_MUTEX_PTHREADS
-#include <pthread.h>
-
-#define MUTEX_FIELDS \
- pthread_mutex_t mutex; /* Mutex. */ \
- pthread_cond_t cond; /* Condition variable. */
-#endif
-
-/*********************************************************************
- * Solaris lwp threads interface.
- *
- * !!!
- * We use LWP mutexes on Solaris instead of UI or POSIX mutexes (both of
- * which are available), for two reasons. First, the Solaris C library
- * includes versions of the both UI and POSIX thread mutex interfaces, but
- * they are broken in that they don't support inter-process locking, and
- * there's no way to detect it, e.g., calls to configure the mutexes for
- * inter-process locking succeed without error. So, we use LWP mutexes so
- * that we don't fail in fairly undetectable ways because the application
- * wasn't linked with the appropriate threads library. Second, there were
- * bugs in SunOS 5.7 (Solaris 7) where if an application loaded the C library
- * before loading the libthread/libpthread threads libraries (e.g., by using
- * dlopen to load the DB library), the pwrite64 interface would be translated
- * into a call to pwrite and DB would drop core.
- *********************************************************************/
-#ifdef HAVE_MUTEX_SOLARIS_LWP
-/*
- * XXX
- * Don't change <synch.h> to <sys/lwp.h> -- although lwp.h is listed in the
- * Solaris manual page as the correct include to use, it causes the Solaris
- * compiler on SunOS 2.6 to fail.
- */
-#include <synch.h>
-
-#define MUTEX_FIELDS \
- lwp_mutex_t mutex; /* Mutex. */ \
- lwp_cond_t cond; /* Condition variable. */
-#endif
-
-/*********************************************************************
- * Solaris/Unixware threads interface.
- *********************************************************************/
-#ifdef HAVE_MUTEX_UI_THREADS
-#include <thread.h>
-#include <synch.h>
-
-#define MUTEX_FIELDS \
- mutex_t mutex; /* Mutex. */ \
- cond_t cond; /* Condition variable. */
-#endif
-
-/*********************************************************************
- * AIX C library functions.
- *********************************************************************/
-#ifdef HAVE_MUTEX_AIX_CHECK_LOCK
-#include <sys/atomic_op.h>
-typedef int tsl_t;
-#define MUTEX_ALIGN sizeof(int)
-
-#ifdef LOAD_ACTUAL_MUTEX_CODE
-#define MUTEX_INIT(x) 0
-#define MUTEX_SET(x) (!_check_lock(x, 0, 1))
-#define MUTEX_UNSET(x) _clear_lock(x, 0)
-#endif
-#endif
-
-/*********************************************************************
- * General C library functions (msemaphore).
- *
- * !!!
- * Check for HPPA as a special case, because it requires unusual alignment,
- * and doesn't support semaphores in malloc(3) or shmget(2) memory.
- *
- * !!!
- * Do not remove the MSEM_IF_NOWAIT flag. The problem is that if a single
- * process makes two msem_lock() calls in a row, the second one returns an
- * error. We depend on the fact that we can lock against ourselves in the
- * locking subsystem, where we set up a mutex so that we can block ourselves.
- * Tested on OSF1 v4.0.
- *********************************************************************/
-#ifdef HAVE_MUTEX_HPPA_MSEM_INIT
-#define MUTEX_NO_MALLOC_LOCKS
-#define MUTEX_NO_SHMGET_LOCKS
-
-#define MUTEX_ALIGN 16
-#endif
-
-#if defined(HAVE_MUTEX_MSEM_INIT) || defined(HAVE_MUTEX_HPPA_MSEM_INIT)
-#include <sys/mman.h>
-typedef msemaphore tsl_t;
-
-#ifndef MUTEX_ALIGN
-#define MUTEX_ALIGN sizeof(int)
-#endif
-
-#ifdef LOAD_ACTUAL_MUTEX_CODE
-#define MUTEX_INIT(x) (msem_init(x, MSEM_UNLOCKED) <= (msemaphore *)0)
-#define MUTEX_SET(x) (!msem_lock(x, MSEM_IF_NOWAIT))
-#define MUTEX_UNSET(x) msem_unlock(x, 0)
-#endif
-#endif
-
-/*********************************************************************
- * Plan 9 library functions.
- *********************************************************************/
-#ifdef HAVE_MUTEX_PLAN9
-typedef Lock tsl_t;
-
-#define MUTEX_ALIGN sizeof(int)
-
-#define MUTEX_INIT(x) (memset(x, 0, sizeof(Lock)), 0)
-#define MUTEX_SET(x) canlock(x)
-#define MUTEX_UNSET(x) unlock(x)
-#endif
-
-/*********************************************************************
- * Reliant UNIX C library functions.
- *********************************************************************/
-#ifdef HAVE_MUTEX_RELIANTUNIX_INITSPIN
-#include <ulocks.h>
-typedef spinlock_t tsl_t;
-
-#ifdef LOAD_ACTUAL_MUTEX_CODE
-#define MUTEX_INIT(x) (initspin(x, 1), 0)
-#define MUTEX_SET(x) (cspinlock(x) == 0)
-#define MUTEX_UNSET(x) spinunlock(x)
-#endif
-#endif
-
-/*********************************************************************
- * General C library functions (POSIX 1003.1 sema_XXX).
- *
- * !!!
- * Never selected by autoconfig in this release (semaphore calls are known
- * to not work in Solaris 5.5).
- *********************************************************************/
-#ifdef HAVE_MUTEX_SEMA_INIT
-#include <synch.h>
-typedef sema_t tsl_t;
-#define MUTEX_ALIGN sizeof(int)
-
-#ifdef LOAD_ACTUAL_MUTEX_CODE
-#define MUTEX_DESTROY(x) sema_destroy(x)
-#define MUTEX_INIT(x) (sema_init(x, 1, USYNC_PROCESS, NULL) != 0)
-#define MUTEX_SET(x) (sema_wait(x) == 0)
-#define MUTEX_UNSET(x) sema_post(x)
-#endif
-#endif
-
-/*********************************************************************
- * SGI C library functions.
- *********************************************************************/
-#ifdef HAVE_MUTEX_SGI_INIT_LOCK
-#include <abi_mutex.h>
-typedef abilock_t tsl_t;
-#define MUTEX_ALIGN sizeof(int)
-
-#ifdef LOAD_ACTUAL_MUTEX_CODE
-#define MUTEX_INIT(x) (init_lock(x) != 0)
-#define MUTEX_SET(x) (!acquire_lock(x))
-#define MUTEX_UNSET(x) release_lock(x)
-#endif
-#endif
-
-/*********************************************************************
- * Solaris C library functions.
- *
- * !!!
- * These are undocumented functions, but they're the only ones that work
- * correctly as far as we know.
- *********************************************************************/
-#ifdef HAVE_MUTEX_SOLARIS_LOCK_TRY
-#include <sys/machlock.h>
-typedef lock_t tsl_t;
-#define MUTEX_ALIGN sizeof(int)
-
-#ifdef LOAD_ACTUAL_MUTEX_CODE
-#define MUTEX_INIT(x) 0
-#define MUTEX_SET(x) _lock_try(x)
-#define MUTEX_UNSET(x) _lock_clear(x)
-#endif
-#endif
-
-/*********************************************************************
- * VMS.
- *********************************************************************/
-#ifdef HAVE_MUTEX_VMS
-#include <sys/mman.h>;
-#include <builtins.h>
-typedef unsigned char tsl_t;
-#define MUTEX_ALIGN sizeof(unsigned int)
-
-#ifdef LOAD_ACTUAL_MUTEX_CODE
-#ifdef __ALPHA
-#define MUTEX_SET(tsl) (!__TESTBITSSI(tsl, 0))
-#else /* __VAX */
-#define MUTEX_SET(tsl) (!(int)_BBSSI(0, tsl))
-#endif
-#define MUTEX_UNSET(tsl) (*(tsl) = 0)
-#define MUTEX_INIT(tsl) MUTEX_UNSET(tsl)
-#endif
-#endif
-
-/*********************************************************************
- * VxWorks
- * Use basic binary semaphores in VxWorks, as we currently do not need
- * any special features. We do need the ability to single-thread the
- * entire system, however, because VxWorks doesn't support the open(2)
- * flag O_EXCL, the mechanism we normally use to single thread access
- * when we're first looking for a DB environment.
- *********************************************************************/
-#ifdef HAVE_MUTEX_VXWORKS
-#define MUTEX_SYSTEM_RESOURCES
-
-#include "semLib.h"
-typedef SEM_ID tsl_t;
-#define MUTEX_ALIGN sizeof(unsigned int)
-
-#ifdef LOAD_ACTUAL_MUTEX_CODE
-#define MUTEX_SET(tsl) (semTake((*tsl), WAIT_FOREVER) == OK)
-#define MUTEX_UNSET(tsl) (semGive((*tsl)) == OK)
-#define MUTEX_INIT(tsl) \
- ((*(tsl) = semBCreate(SEM_Q_FIFO, SEM_FULL)) == NULL)
-#define MUTEX_DESTROY(tsl) semDelete(*tsl)
-#endif
-
-/*
- * Use the taskLock() mutex to eliminate a race where two tasks are
- * trying to initialize the global lock at the same time.
- */
-#undef DB_BEGIN_SINGLE_THREAD
-#define DB_BEGIN_SINGLE_THREAD \
-do { \
- if (DB_GLOBAL(db_global_init)) \
- (void)semTake(DB_GLOBAL(db_global_lock), WAIT_FOREVER); \
- else { \
- taskLock(); \
- if (DB_GLOBAL(db_global_init)) { \
- taskUnlock(); \
- (void)semTake(DB_GLOBAL(db_global_lock), \
- WAIT_FOREVER); \
- continue; \
- } \
- DB_GLOBAL(db_global_lock) = \
- semBCreate(SEM_Q_FIFO, SEM_EMPTY); \
- if (DB_GLOBAL(db_global_lock) != NULL) \
- DB_GLOBAL(db_global_init) = 1; \
- taskUnlock(); \
- } \
-} while (DB_GLOBAL(db_global_init) == 0)
-#undef DB_END_SINGLE_THREAD
-#define DB_END_SINGLE_THREAD (void)semGive(DB_GLOBAL(db_global_lock))
-#endif
-
-/*********************************************************************
- * Win16
- *
- * Win16 spinlocks are simple because we cannot possibly be preempted.
- *
- * !!!
- * We should simplify this by always returning a no-need-to-lock lock
- * when we initialize the mutex.
- *********************************************************************/
-#ifdef HAVE_MUTEX_WIN16
-typedef unsigned int tsl_t;
-#define MUTEX_ALIGN sizeof(unsigned int)
-
-#ifdef LOAD_ACTUAL_MUTEX_CODE
-#define MUTEX_INIT(x) 0
-#define MUTEX_SET(tsl) (*(tsl) = 1)
-#define MUTEX_UNSET(tsl) (*(tsl) = 0)
-#endif
-#endif
-
-/*********************************************************************
- * Win32
- *********************************************************************/
-#ifdef HAVE_MUTEX_WIN32
-typedef unsigned int tsl_t;
-#define MUTEX_ALIGN sizeof(unsigned int)
-
-#ifdef LOAD_ACTUAL_MUTEX_CODE
-#define MUTEX_INIT(x) 0
-#define MUTEX_SET(tsl) (!InterlockedExchange((PLONG)tsl, 1))
-#define MUTEX_UNSET(tsl) (*(tsl) = 0)
-#endif
-#endif
-
-/*********************************************************************
- * 68K/gcc assembly.
- *********************************************************************/
-#ifdef HAVE_MUTEX_68K_GCC_ASSEMBLY
-typedef unsigned char tsl_t;
-
-#ifdef LOAD_ACTUAL_MUTEX_CODE
-/*
- * For gcc/68K, 0 is clear, 1 is set.
- */
-#define MUTEX_SET(tsl) ({ \
- register tsl_t *__l = (tsl); \
- int __r; \
- asm volatile("tas %1; \n \
- seq %0" \
- : "=dm" (__r), "=m" (*__l) \
- : "1" (*__l) \
- ); \
- __r & 1; \
-})
-
-#define MUTEX_UNSET(tsl) (*(tsl) = 0)
-#define MUTEX_INIT(tsl) MUTEX_UNSET(tsl)
-#endif
-#endif
-
-/*********************************************************************
- * ALPHA/gcc assembly.
- *********************************************************************/
-#ifdef HAVE_MUTEX_ALPHA_GCC_ASSEMBLY
-typedef u_int32_t tsl_t;
-#define MUTEX_ALIGN 4
-
-#ifdef LOAD_ACTUAL_MUTEX_CODE
-/*
- * For gcc/alpha. Should return 0 if could not acquire the lock, 1 if
- * lock was acquired properly.
- */
-#ifdef __GNUC__
-static inline int
-MUTEX_SET(tsl_t *tsl) {
- register tsl_t *__l = tsl;
- register tsl_t __r;
- asm volatile(
- "1: ldl_l %0,%2\n"
- " blbs %0,2f\n"
- " or $31,1,%0\n"
- " stl_c %0,%1\n"
- " beq %0,3f\n"
- " mb\n"
- " br 3f\n"
- "2: xor %0,%0\n"
- "3:"
- : "=&r"(__r), "=m"(*__l) : "1"(*__l) : "memory");
- return __r;
-}
-
-/*
- * Unset mutex. Judging by Alpha Architecture Handbook, the mb instruction
- * might be necessary before unlocking
- */
-static inline int
-MUTEX_UNSET(tsl_t *tsl) {
- asm volatile(" mb\n");
- return *tsl = 0;
-}
-#endif
-
-#ifdef __DECC
-#include <alpha/builtins.h>
-#define MUTEX_SET(tsl) (__LOCK_LONG_RETRY((tsl), 1) != 0)
-#define MUTEX_UNSET(tsl) (*(tsl) = 0)
-#endif
-
-#define MUTEX_INIT(tsl) MUTEX_UNSET(tsl)
-#endif
-#endif
-
-/*********************************************************************
- * HPPA/gcc assembly.
- *********************************************************************/
-#ifdef HAVE_MUTEX_HPPA_GCC_ASSEMBLY
-typedef u_int32_t tsl_t;
-#define MUTEX_ALIGN 16
-
-#ifdef LOAD_ACTUAL_MUTEX_CODE
-/*
- * The PA-RISC has a "load and clear" instead of a "test and set" instruction.
- * The 32-bit word used by that instruction must be 16-byte aligned. We could
- * use the "aligned" attribute in GCC but that doesn't work for stack variables.
- */
-#define MUTEX_SET(tsl) ({ \
- register tsl_t *__l = (tsl); \
- int __r; \
- asm volatile("ldcws 0(%1),%0" : "=r" (__r) : "r" (__l)); \
- __r & 1; \
-})
-
-#define MUTEX_UNSET(tsl) (*(tsl) = -1)
-#define MUTEX_INIT(tsl) MUTEX_UNSET(tsl)
-#endif
-#endif
-
-/*********************************************************************
- * IA64/gcc assembly.
- *********************************************************************/
-#ifdef HAVE_MUTEX_IA64_GCC_ASSEMBLY
-typedef unsigned char tsl_t;
-
-#ifdef LOAD_ACTUAL_MUTEX_CODE
-/*
- * For gcc/ia64, 0 is clear, 1 is set.
- */
-#define MUTEX_SET(tsl) ({ \
- register tsl_t *__l = (tsl); \
- long __r; \
- asm volatile("xchg1 %0=%1,%3" : "=r"(__r), "=m"(*__l) : "1"(*__l), "r"(1));\
- __r ^ 1; \
-})
-
-/*
- * Store through a "volatile" pointer so we get a store with "release"
- * semantics.
- */
-#define MUTEX_UNSET(tsl) (*(volatile unsigned char *)(tsl) = 0)
-#define MUTEX_INIT(tsl) MUTEX_UNSET(tsl)
-#endif
-#endif
-
-/*********************************************************************
- * PowerPC/gcc assembly.
- *********************************************************************/
-#ifdef HAVE_MUTEX_PPC_GCC_ASSEMBLY
-typedef u_int32_t tsl_t;
-
-#ifdef LOAD_ACTUAL_MUTEX_CODE
-/*
- * The PowerPC does a sort of pseudo-atomic locking. You set up a
- * 'reservation' on a chunk of memory containing a mutex by loading the
- * mutex value with LWARX. If the mutex has an 'unlocked' (arbitrary)
- * value, you then try storing into it with STWCX. If no other process or
- * thread broke your 'reservation' by modifying the memory containing the
- * mutex, then the STCWX succeeds; otherwise it fails and you try to get
- * a reservation again.
- *
- * While mutexes are explicitly 4 bytes, a 'reservation' applies to an
- * entire cache line, normally 32 bytes, aligned naturally. If the mutex
- * lives near data that gets changed a lot, there's a chance that you'll
- * see more broken reservations than you might otherwise. The only
- * situation in which this might be a problem is if one processor is
- * beating on a variable in the same cache block as the mutex while another
- * processor tries to acquire the mutex. That's bad news regardless
- * because of the way it bashes caches, but if you can't guarantee that a
- * mutex will reside in a relatively quiescent cache line, you might
- * consider padding the mutex to force it to live in a cache line by
- * itself. No, you aren't guaranteed that cache lines are 32 bytes. Some
- * embedded processors use 16-byte cache lines, while some 64-bit
- * processors use 128-bit cache lines. But assuming a 32-byte cache line
- * won't get you into trouble for now.
- *
- * If mutex locking is a bottleneck, then you can speed it up by adding a
- * regular LWZ load before the LWARX load, so that you can test for the
- * common case of a locked mutex without wasting cycles making a reservation.
- *
- * 'set' mutexes have the value 1, like on Intel; the returned value from
- * MUTEX_SET() is 1 if the mutex previously had its low bit set, 0 otherwise.
- */
-#define MUTEX_SET(tsl) ({ \
- int __one = 1; \
- int __r; \
- tsl_t *__l = (tsl); \
- asm volatile (" \
-0: \
- lwarx %0,0,%1; \
- cmpwi %0,0; \
- bne 1f; \
- stwcx. %2,0,%1; \
- bne- 0b; \
-1:" \
- : "=&r" (__r) \
- : "r" (__l), "r" (__one)); \
- __r & 1; \
-})
-
-#define MUTEX_UNSET(tsl) (*(tsl) = 0)
-#define MUTEX_INIT(tsl) MUTEX_UNSET(tsl)
-#endif
-#endif
-
-/*********************************************************************
- * SCO/cc assembly.
- *********************************************************************/
-#ifdef HAVE_MUTEX_SCO_X86_CC_ASSEMBLY
-typedef unsigned char tsl_t;
-
-#ifdef LOAD_ACTUAL_MUTEX_CODE
-/*
- * UnixWare has threads in libthread, but OpenServer doesn't (yet).
- *
- * For cc/x86, 0 is clear, 1 is set.
- */
-
-#if defined(__USLC__)
-asm int
-_tsl_set(void *tsl)
-{
-%mem tsl
- movl tsl, %ecx
- movl $1, %eax
- lock
- xchgb (%ecx),%al
- xorl $1,%eax
-}
-#endif
-
-#define MUTEX_SET(tsl) _tsl_set(tsl)
-#define MUTEX_UNSET(tsl) (*(tsl) = 0)
-#define MUTEX_INIT(tsl) MUTEX_UNSET(tsl)
-#endif
-#endif
-
-/*********************************************************************
- * Sparc/gcc assembly.
- *********************************************************************/
-#ifdef HAVE_MUTEX_SPARC_GCC_ASSEMBLY
-typedef unsigned char tsl_t;
-
-#ifdef LOAD_ACTUAL_MUTEX_CODE
-/*
- *
- * The ldstub instruction takes the location specified by its first argument
- * (a register containing a memory address) and loads its contents into its
- * second argument (a register) and atomically sets the contents the location
- * specified by its first argument to a byte of 1s. (The value in the second
- * argument is never read, but only overwritten.)
- *
- * The stbar is needed for v8, and is implemented as membar #sync on v9,
- + so is functional there as well. For v7, stbar may generate an illegal
- + instruction and we have no way to tell what we're running on. Some
- + operating systems notice and skip this instruction in the fault handler.
- *
- * For gcc/sparc, 0 is clear, 1 is set.
- */
-#define MUTEX_SET(tsl) ({ \
- register tsl_t *__l = (tsl); \
- register tsl_t __r; \
- __asm__ volatile \
- ("ldstub [%1],%0; stbar" \
- : "=r"( __r) : "r" (__l)); \
- !__r; \
-})
-
-#define MUTEX_UNSET(tsl) (*(tsl) = 0)
-#define MUTEX_INIT(tsl) MUTEX_UNSET(tsl)
-#endif
-#endif
-
-/*********************************************************************
- * UTS/cc assembly.
- *********************************************************************/
-#ifdef HAVE_MUTEX_UTS_CC_ASSEMBLY
-typedef int tsl_t;
-
-#define MUTEX_ALIGN sizeof(int)
-#ifdef LOAD_ACTUAL_MUTEX_CODE
-#define MUTEX_INIT(x) 0
-#define MUTEX_SET(x) (!uts_lock(x, 1))
-#define MUTEX_UNSET(x) (*(x) = 0)
-#endif
-#endif
-
-/*********************************************************************
- * x86/gcc assembly.
- *********************************************************************/
-#ifdef HAVE_MUTEX_X86_GCC_ASSEMBLY
-typedef unsigned char tsl_t;
-
-#ifdef LOAD_ACTUAL_MUTEX_CODE
-/*
- * For gcc/x86, 0 is clear, 1 is set.
- */
-#define MUTEX_SET(tsl) ({ \
- register tsl_t *__l = (tsl); \
- int __r; \
- asm volatile("movl $1,%%eax; lock; xchgb %1,%%al; xorl $1,%%eax"\
- : "=&a" (__r), "=m" (*__l) \
- : "1" (*__l) \
- ); \
- __r & 1; \
-})
-
-#define MUTEX_UNSET(tsl) (*(tsl) = 0)
-#define MUTEX_INIT(tsl) MUTEX_UNSET(tsl)
-#endif
-#endif
-
-/*
- * Mutex alignment defaults to one byte.
- *
- * !!!
- * Various systems require different alignments for mutexes (the worst we've
- * seen so far is 16-bytes on some HP architectures). Malloc(3) is assumed
- * to return reasonable alignment, all other mutex users must ensure proper
- * alignment locally.
- */
-#ifndef MUTEX_ALIGN
-#define MUTEX_ALIGN 1
-#endif
-
-/*
- * Mutex destruction defaults to a no-op.
- */
-#ifdef LOAD_ACTUAL_MUTEX_CODE
-#ifndef MUTEX_DESTROY
-#define MUTEX_DESTROY(x)
-#endif
-#endif
-
-#define MUTEX_IGNORE 0x001 /* Ignore, no lock required. */
-#define MUTEX_INITED 0x002 /* Mutex is successfully initialized */
-#define MUTEX_SELF_BLOCK 0x004 /* Must block self. */
-#define MUTEX_THREAD 0x008 /* Thread-only mutex. */
-
-/* Mutex. */
-struct __mutex_t {
-#ifdef HAVE_MUTEX_THREADS
-#ifdef MUTEX_FIELDS
- MUTEX_FIELDS
-#else
- tsl_t tas; /* Test and set. */
-#endif
- u_int32_t spins; /* Spins before block. */
- u_int32_t locked; /* !0 if locked. */
-#else
- u_int32_t off; /* Byte offset to lock. */
- u_int32_t pid; /* Lock holder: 0 or process pid. */
-#endif
- u_int32_t mutex_set_wait; /* Granted after wait. */
- u_int32_t mutex_set_nowait; /* Granted without waiting. */
-#ifdef MUTEX_SYSTEM_RESOURCES
- roff_t reg_off; /* Shared lock info offset. */
-#endif
-
- u_int8_t flags; /* MUTEX_XXX */
-};
-
-/* Redirect calls to the correct functions. */
-#ifdef HAVE_MUTEX_THREADS
-#if defined(HAVE_MUTEX_PTHREADS) || defined(HAVE_MUTEX_SOLARIS_LWP) || defined(HAVE_MUTEX_UI_THREADS)
-#define __db_mutex_init(a, b, c, d) __db_pthread_mutex_init(a, b, d)
-#define __db_mutex_lock(a, b, c) __db_pthread_mutex_lock(a, b)
-#define __db_mutex_unlock(a, b) __db_pthread_mutex_unlock(a, b)
-#define __db_mutex_destroy(a) __db_pthread_mutex_destroy(a)
-#else
-#define __db_mutex_init(a, b, c, d) __db_tas_mutex_init(a, b, d)
-#define __db_mutex_lock(a, b, c) __db_tas_mutex_lock(a, b)
-#define __db_mutex_unlock(a, b) __db_tas_mutex_unlock(a, b)
-#define __db_mutex_destroy(a) __db_tas_mutex_destroy(a)
-#endif
-#else
-#define __db_mutex_init(a, b, c, d) __db_fcntl_mutex_init(a, b, c)
-#define __db_mutex_lock(a, b, c) __db_fcntl_mutex_lock(a, b, c)
-#define __db_mutex_unlock(a, b) __db_fcntl_mutex_unlock(a, b)
-#define __db_mutex_destroy(a) __db_fcntl_mutex_destroy(a)
-#endif
-
-/* Redirect system resource calls to correct functions */
-#ifdef MUTEX_SYSTEM_RESOURCES
-#define __db_maintinit(a, b, c) __db_shreg_maintinit(a, b, c)
-#define __db_shlocks_clear(a, b, c) __db_shreg_locks_clear(a, b, c)
-#define __db_shlocks_destroy(a, b) __db_shreg_locks_destroy(a, b)
-#define __db_shmutex_init(a, b, c, d, e, f) \
- __db_shreg_mutex_init(a, b, c, d, e, f)
-#else
-#define __db_maintinit(a, b, c)
-#define __db_shlocks_clear(a, b, c)
-#define __db_shlocks_destroy(a, b)
-#define __db_shmutex_init(a, b, c, d, e, f) __db_mutex_init(a, b, c, d)
-#endif
-
-/*
- * Lock/unlock a mutex. If the mutex was marked as uninteresting, the thread
- * of control can proceed without it.
- *
- * If the lock is for threads-only, then it was optionally not allocated and
- * file handles aren't necessary, as threaded applications aren't supported by
- * fcntl(2) locking.
- */
-#ifdef DIAGNOSTIC
- /*
- * XXX
- * We want to switch threads as often as possible. Yield every time
- * we get a mutex to ensure contention.
- */
-#define MUTEX_LOCK(dbenv, mp, fh) \
- if (!F_ISSET((MUTEX *)(mp), MUTEX_IGNORE)) \
- (void)__db_mutex_lock(dbenv, mp, fh); \
- if (DB_GLOBAL(db_pageyield)) \
- __os_yield(NULL, 1);
-#else
-#define MUTEX_LOCK(dbenv, mp, fh) \
- if (!F_ISSET((MUTEX *)(mp), MUTEX_IGNORE)) \
- (void)__db_mutex_lock(dbenv, mp, fh);
-#endif
-#define MUTEX_UNLOCK(dbenv, mp) \
- if (!F_ISSET((MUTEX *)(mp), MUTEX_IGNORE)) \
- (void)__db_mutex_unlock(dbenv, mp);
-#define MUTEX_THREAD_LOCK(dbenv, mp) \
- if (mp != NULL) \
- MUTEX_LOCK(dbenv, mp, NULL)
-#define MUTEX_THREAD_UNLOCK(dbenv, mp) \
- if (mp != NULL) \
- MUTEX_UNLOCK(dbenv, mp)
-
-/*
- * We use a single file descriptor for fcntl(2) locking, and (generally) the
- * object's offset in a shared region as the byte that we're locking. So,
- * there's a (remote) possibility that two objects might have the same offsets
- * such that the locks could conflict, resulting in deadlock. To avoid this
- * possibility, we offset the region offset by a small integer value, using a
- * different offset for each subsystem's locks. Since all region objects are
- * suitably aligned, the offset guarantees that we don't collide with another
- * region's objects.
- */
-#define DB_FCNTL_OFF_GEN 0 /* Everything else. */
-#define DB_FCNTL_OFF_LOCK 1 /* Lock subsystem offset. */
-#define DB_FCNTL_OFF_MPOOL 2 /* Mpool subsystem offset. */
diff --git a/db/include/mutex_ext.h b/db/include/mutex_ext.h
deleted file mode 100644
index 040a6615e..000000000
--- a/db/include/mutex_ext.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_include. */
-#ifndef _mutex_ext_h_
-#define _mutex_ext_h_
-#if defined(__cplusplus)
-extern "C" {
-#endif
-int __db_fcntl_mutex_init __P((DB_ENV *, MUTEX *, u_int32_t));
-int __db_fcntl_mutex_lock __P((DB_ENV *, MUTEX *, DB_FH *));
-int __db_fcntl_mutex_unlock __P((DB_ENV *, MUTEX *));
-int __db_fcntl_mutex_destroy __P((MUTEX *));
-int __db_pthread_mutex_init __P((DB_ENV *, MUTEX *, u_int32_t));
-int __db_pthread_mutex_lock __P((DB_ENV *, MUTEX *));
-int __db_pthread_mutex_unlock __P((DB_ENV *, MUTEX *));
-int __db_pthread_mutex_destroy __P((MUTEX *));
-int __db_tas_mutex_init __P((DB_ENV *, MUTEX *, u_int32_t));
-int __db_tas_mutex_lock __P((DB_ENV *, MUTEX *));
-int __db_tas_mutex_unlock __P((DB_ENV *, MUTEX *));
-int __db_tas_mutex_destroy __P((MUTEX *));
-int __db_mutex_alloc __P((DB_ENV *, REGINFO *, MUTEX **));
-void __db_mutex_free __P((DB_ENV *, REGINFO *, MUTEX *));
-int __db_shreg_locks_record __P((DB_ENV *, MUTEX *, REGINFO *,
- REGMAINT *));
-void __db_shreg_locks_clear __P((MUTEX *, REGINFO *, REGMAINT *));
-void __db_shreg_locks_destroy __P((REGINFO *, REGMAINT *));
-int __db_shreg_mutex_init __P((DB_ENV *, MUTEX *, u_int32_t,
- u_int32_t, REGINFO *, REGMAINT *));
-void __db_shreg_maintinit __P((REGINFO *, void *addr, size_t));
-#if defined(__cplusplus)
-}
-#endif
-#endif /* _mutex_ext_h_ */
diff --git a/db/include/os.h b/db/include/os.h
deleted file mode 100644
index b5d469e88..000000000
--- a/db/include/os.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997, 1998, 1999, 2000
- * Sleepycat Software. All rights reserved.
- *
- * $Id: os.h,v 11.5 2000/10/27 20:32:01 dda Exp $
- */
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-/*
- * Filehandle.
- */
-struct __fh_t {
-#if defined(DB_WIN32)
- HANDLE handle; /* Windows/32 file handle. */
-#endif
- int fd; /* POSIX file descriptor. */
-
- u_int32_t log_size; /* XXX: Log file size. */
-
-#define DB_FH_NOSYNC 0x01 /* Handle doesn't need to be sync'd. */
-#define DB_FH_VALID 0x02 /* Handle is valid. */
- u_int8_t flags;
-};
-
-/*
- * We group certain seek/write calls into a single function so that we
- * can use pread(2)/pwrite(2) where they're available.
- */
-#define DB_IO_READ 1
-#define DB_IO_WRITE 2
-typedef struct __io_t {
- DB_FH *fhp; /* I/O file handle. */
- MUTEX *mutexp; /* Mutex to lock. */
- size_t pagesize; /* Page size. */
- db_pgno_t pgno; /* Page number. */
- u_int8_t *buf; /* Buffer. */
- size_t bytes; /* Bytes read/written. */
-} DB_IO;
-
-#if defined(__cplusplus)
-}
-#endif
diff --git a/db/include/os_ext.h b/db/include/os_ext.h
deleted file mode 100644
index ae9e3d304..000000000
--- a/db/include/os_ext.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_include. */
-#ifndef _os_ext_h_
-#define _os_ext_h_
-#if defined(__cplusplus)
-extern "C" {
-#endif
-int __os_abspath __P((const char *));
-int __os_strdup __P((DB_ENV *, const char *, void *));
-int __os_calloc __P((DB_ENV *, size_t, size_t, void *));
-int __os_malloc __P((DB_ENV *, size_t, void *(*)(size_t), void *));
-int __os_realloc __P((DB_ENV *,
- size_t, void *(*)(void *, size_t), void *));
-void __os_free __P((void *, size_t));
-void __os_freestr __P((void *));
-void *__ua_memcpy __P((void *, const void *, size_t));
-int __os_dirlist __P((DB_ENV *, const char *, char ***, int *));
-void __os_dirfree __P((char **, int));
-int __os_get_errno __P((void));
-void __os_set_errno __P((int));
-int __os_fileid __P((DB_ENV *, const char *, int, u_int8_t *));
-int __os_finit __P((DB_ENV *, DB_FH *, size_t, int));
-int __os_fpinit __P((DB_ENV *, DB_FH *, db_pgno_t, int, int));
-int __os_fsync __P((DB_ENV *, DB_FH *));
-int __os_openhandle __P((DB_ENV *, const char *, int, int, DB_FH *));
-int __os_closehandle __P((DB_FH *));
-int __os_r_sysattach __P((DB_ENV *, REGINFO *, REGION *));
-int __os_r_sysdetach __P((DB_ENV *, REGINFO *, int));
-int __os_mapfile __P((DB_ENV *,
- char *, DB_FH *, size_t, int, void **));
-int __os_unmapfile __P((DB_ENV *, void *, size_t));
-u_int32_t __db_oflags __P((int));
-int __db_omode __P((const char *));
-int __os_open __P((DB_ENV *, const char *, u_int32_t, int, DB_FH *));
-int __os_shmname __P((DB_ENV *, const char *, char **));
-int __os_r_attach __P((DB_ENV *, REGINFO *, REGION *));
-int __os_r_detach __P((DB_ENV *, REGINFO *, int));
-int __os_rename __P((DB_ENV *, const char *, const char *));
-int __os_isroot __P((void));
-char *__db_rpath __P((const char *));
-int __os_io __P((DB_ENV *, DB_IO *, int, size_t *));
-int __os_read __P((DB_ENV *, DB_FH *, void *, size_t, size_t *));
-int __os_write __P((DB_ENV *, DB_FH *, void *, size_t, size_t *));
-int __os_seek __P((DB_ENV *,
- DB_FH *, size_t, db_pgno_t, u_int32_t, int, DB_OS_SEEK));
-int __os_sleep __P((DB_ENV *, u_long, u_long));
-int __os_spin __P((void));
-void __os_yield __P((DB_ENV*, u_long));
-int __os_exists __P((const char *, int *));
-int __os_ioinfo __P((DB_ENV *, const char *,
- DB_FH *, u_int32_t *, u_int32_t *, u_int32_t *));
-int __os_tmpdir __P((DB_ENV *, u_int32_t));
-int __os_unlink __P((DB_ENV *, const char *));
-int __os_region_unlink __P((DB_ENV *, const char *));
-#if defined(DB_WIN32)
-int __os_win32_errno __P((void));
-#endif
-int __os_fpinit __P((DB_ENV *, DB_FH *, db_pgno_t, int, int));
-int __os_is_winnt __P((void));
-#if defined(__cplusplus)
-}
-#endif
-#endif /* _os_ext_h_ */
diff --git a/db/include/os_jump.h b/db/include/os_jump.h
deleted file mode 100644
index 681ba82d5..000000000
--- a/db/include/os_jump.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997, 1998, 1999, 2000
- * Sleepycat Software. All rights reserved.
- *
- * $Id: os_jump.h,v 11.3 2000/02/14 02:59:55 bostic Exp $
- */
-
-/* Calls which can be replaced by the application. */
-struct __db_jumptab {
- int (*j_close) __P((int));
- void (*j_dirfree) __P((char **, int));
- int (*j_dirlist) __P((const char *, char ***, int *));
- int (*j_exists) __P((const char *, int *));
- void (*j_free) __P((void *));
- int (*j_fsync) __P((int));
- int (*j_ioinfo) __P((const char *,
- int, u_int32_t *, u_int32_t *, u_int32_t *));
- void *(*j_malloc) __P((size_t));
- int (*j_map) __P((char *, size_t, int, int, void **));
- int (*j_open) __P((const char *, int, ...));
- ssize_t (*j_read) __P((int, void *, size_t));
- void *(*j_realloc) __P((void *, size_t));
- int (*j_rename) __P((const char *, const char *));
- int (*j_seek) __P((int, size_t, db_pgno_t, u_int32_t, int, int));
- int (*j_sleep) __P((u_long, u_long));
- int (*j_unlink) __P((const char *));
- int (*j_unmap) __P((void *, size_t));
- ssize_t (*j_write) __P((int, const void *, size_t));
- int (*j_yield) __P((void));
-};
-
-extern struct __db_jumptab __db_jump;
diff --git a/db/include/qam.h b/db/include/qam.h
deleted file mode 100644
index 88cd68776..000000000
--- a/db/include/qam.h
+++ /dev/null
@@ -1,150 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1999, 2000
- * Sleepycat Software. All rights reserved.
- *
- * $Id: qam.h,v 11.26 2001/01/11 18:19:52 bostic Exp $
- */
-
-/*
- * QAM data elements: a status field and the data.
- */
-typedef struct _qamdata {
- u_int8_t flags; /* 00: delete bit. */
-#define QAM_VALID 0x01
-#define QAM_SET 0x02
- u_int8_t data[1]; /* Record. */
-} QAMDATA;
-
-struct __queue; typedef struct __queue QUEUE;
-struct __qcursor; typedef struct __qcursor QUEUE_CURSOR;
-
-struct __qcursor {
- /* struct __dbc_internal */
- __DBC_INTERNAL
-
- /* Queue private part */
-
- /* Per-thread information: queue private. */
- db_recno_t recno; /* Current record number. */
-
- u_int32_t flags;
-};
-
-/*
- * The in-memory, per-tree queue data structure.
- */
-
-typedef struct __mpfarray {
- u_int32_t n_extent; /* Number of extents in table. */
- u_int32_t low_extent; /* First extent open. */
- u_int32_t hi_extent; /* Last extent open. */
- struct __qmpf {
- int pinref;
- DB_MPOOLFILE *mpf;
- } *mpfarray; /* Array of open extents. */
-} MPFARRAY;
-
-struct __queue {
- db_pgno_t q_meta; /* Database meta-data page. */
- db_pgno_t q_root; /* Database root page. */
-
- int re_pad; /* Fixed-length padding byte. */
- u_int32_t re_len; /* Length for fixed-length records. */
- u_int32_t rec_page; /* records per page */
- u_int32_t page_ext; /* Pages per extent */
- MPFARRAY array1, array2; /* File arrays. */
- DB_MPOOL_FINFO finfo; /* Initialized info struct. */
- DB_PGINFO pginfo; /* Initialized pginfo struct. */
- DBT pgcookie; /* Initialized pgcookie. */
- char *path; /* Space allocated to file pathname. */
- char *name; /* The name of the file. */
- char *dir; /* The dir of the file. */
- int mode; /* Mode to open extents. */
-};
-
-/* Format for queue extent names. */
-#define QUEUE_EXTENT "%s/__dbq.%s.%d"
-
-typedef struct __qam_filelist {
- DB_MPOOLFILE *mpf;
- u_int32_t id;
-} QUEUE_FILELIST;
-
-/*
- * Caculate the page number of a recno
- *
- * Number of records per page =
- * Divide the available space on the page by the record len + header.
- *
- * Page number for record =
- * divide the physical record number by the records per page
- * add the root page number
- * For now the root page will always be 1, but we might want to change
- * in the future (e.g. multiple fixed len queues per file).
- *
- * Index of record on page =
- * physical record number, less the logical pno times records/page
- */
-#define CALC_QAM_RECNO_PER_PAGE(dbp) \
- (((dbp)->pgsize - sizeof(QPAGE)) / \
- ALIGN(((QUEUE *)(dbp)->q_internal)->re_len + \
- sizeof(QAMDATA) - SSZA(QAMDATA, data), sizeof(u_int32_t)))
-
-#define QAM_RECNO_PER_PAGE(dbp) (((QUEUE*)(dbp)->q_internal)->rec_page)
-
-#define QAM_RECNO_PAGE(dbp, recno) \
- (((QUEUE *)(dbp)->q_internal)->q_root \
- + (((recno) - 1) / QAM_RECNO_PER_PAGE(dbp)))
-
-#define QAM_RECNO_INDEX(dbp, pgno, recno) \
- (((recno) - 1) - (QAM_RECNO_PER_PAGE(dbp) \
- * (pgno - ((QUEUE *)(dbp)->q_internal)->q_root)))
-
-#define QAM_GET_RECORD(dbp, page, index) \
- ((QAMDATA *)((u_int8_t *)(page) + \
- sizeof(QPAGE) + (ALIGN(sizeof(QAMDATA) - SSZA(QAMDATA, data) + \
- ((QUEUE *)(dbp)->q_internal)->re_len, sizeof(u_int32_t)) * index)))
-
-#define QAM_AFTER_CURRENT(meta, recno) \
- ((recno) > (meta)->cur_recno && \
- ((meta)->first_recno <= (meta)->cur_recno || (recno) < (meta)->first_recno))
-
-#define QAM_BEFORE_FIRST(meta, recno) \
- ((recno) < (meta)->first_recno && \
- ((meta->first_recno <= (meta)->cur_recno || (recno) > (meta)->cur_recno)))
-
-#define QAM_NOT_VALID(meta, recno) \
- (recno == RECNO_OOB || \
- QAM_BEFORE_FIRST(meta, recno) || QAM_AFTER_CURRENT(meta, recno))
-
-/*
- * Log opcodes for the mvptr routine.
- */
-#define QAM_SETFIRST 0x01
-#define QAM_SETCUR 0x02
-
-/*
- * Parameter to __qam_position.
- */
-typedef enum {
- QAM_READ,
- QAM_WRITE,
- QAM_CONSUME
-} qam_position_mode;
-
-typedef enum {
- QAM_PROBE_GET,
- QAM_PROBE_PUT,
- QAM_PROBE_MPF
-} qam_probe_mode;
-
-#define __qam_fget(dbp, pgnoaddr, flags, addrp) \
- __qam_fprobe(dbp, *pgnoaddr, addrp, QAM_PROBE_GET, flags)
-
-#define __qam_fput(dbp, pageno, addrp, flags) \
- __qam_fprobe(dbp, pageno, addrp, QAM_PROBE_PUT, flags)
-
-#include "qam_auto.h"
-#include "qam_ext.h"
diff --git a/db/include/qam_auto.h b/db/include/qam_auto.h
deleted file mode 100644
index 8362b2118..000000000
--- a/db/include/qam_auto.h
+++ /dev/null
@@ -1,129 +0,0 @@
-/* Do not edit: automatically built by gen_rec.awk. */
-
-#ifndef qam_AUTO_H
-#define qam_AUTO_H
-
-#define DB_qam_inc 76
-typedef struct _qam_inc_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- DB_LSN lsn;
-} __qam_inc_args;
-
-int __qam_inc_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, DB_LSN *));
-int __qam_inc_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __qam_inc_read __P((DB_ENV *, void *, __qam_inc_args **));
-
-#define DB_qam_incfirst 77
-typedef struct _qam_incfirst_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- db_recno_t recno;
-} __qam_incfirst_args;
-
-int __qam_incfirst_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_recno_t));
-int __qam_incfirst_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __qam_incfirst_read __P((DB_ENV *, void *, __qam_incfirst_args **));
-
-#define DB_qam_mvptr 78
-typedef struct _qam_mvptr_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- u_int32_t opcode;
- int32_t fileid;
- db_recno_t old_first;
- db_recno_t new_first;
- db_recno_t old_cur;
- db_recno_t new_cur;
- DB_LSN metalsn;
-} __qam_mvptr_args;
-
-int __qam_mvptr_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, u_int32_t, int32_t, db_recno_t, db_recno_t, db_recno_t, db_recno_t, DB_LSN *));
-int __qam_mvptr_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __qam_mvptr_read __P((DB_ENV *, void *, __qam_mvptr_args **));
-
-#define DB_qam_del 79
-typedef struct _qam_del_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- DB_LSN lsn;
- db_pgno_t pgno;
- u_int32_t indx;
- db_recno_t recno;
-} __qam_del_args;
-
-int __qam_del_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, DB_LSN *, db_pgno_t, u_int32_t, db_recno_t));
-int __qam_del_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __qam_del_read __P((DB_ENV *, void *, __qam_del_args **));
-
-#define DB_qam_add 80
-typedef struct _qam_add_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- DB_LSN lsn;
- db_pgno_t pgno;
- u_int32_t indx;
- db_recno_t recno;
- DBT data;
- u_int32_t vflag;
- DBT olddata;
-} __qam_add_args;
-
-int __qam_add_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, DB_LSN *, db_pgno_t, u_int32_t, db_recno_t, const DBT *, u_int32_t, const DBT *));
-int __qam_add_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __qam_add_read __P((DB_ENV *, void *, __qam_add_args **));
-
-#define DB_qam_delete 81
-typedef struct _qam_delete_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- DBT name;
- DB_LSN lsn;
-} __qam_delete_args;
-
-int __qam_delete_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, const DBT *, DB_LSN *));
-int __qam_delete_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __qam_delete_read __P((DB_ENV *, void *, __qam_delete_args **));
-
-#define DB_qam_rename 82
-typedef struct _qam_rename_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- DBT name;
- DBT newname;
-} __qam_rename_args;
-
-int __qam_rename_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, const DBT *, const DBT *));
-int __qam_rename_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __qam_rename_read __P((DB_ENV *, void *, __qam_rename_args **));
-
-#define DB_qam_delext 83
-typedef struct _qam_delext_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- DB_LSN lsn;
- db_pgno_t pgno;
- u_int32_t indx;
- db_recno_t recno;
- DBT data;
-} __qam_delext_args;
-
-int __qam_delext_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, DB_LSN *, db_pgno_t, u_int32_t, db_recno_t, const DBT *));
-int __qam_delext_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __qam_delext_read __P((DB_ENV *, void *, __qam_delext_args **));
-int __qam_init_print __P((DB_ENV *));
-int __qam_init_recover __P((DB_ENV *));
-#endif
diff --git a/db/include/qam_ext.h b/db/include/qam_ext.h
deleted file mode 100644
index f6e95110c..000000000
--- a/db/include/qam_ext.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_include. */
-#ifndef _qam_ext_h_
-#define _qam_ext_h_
-#if defined(__cplusplus)
-extern "C" {
-#endif
-int __qam_position
- __P((DBC *, db_recno_t *, qam_position_mode, int *));
-int __qam_pitem
- __P((DBC *, QPAGE *, u_int32_t, db_recno_t, DBT *));
-int __qam_put __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t));
-int __qam_delete __P((DB *, DB_TXN *, DBT *, u_int32_t));
-int __qam_c_dup __P((DBC *, DBC *));
-int __qam_c_init __P((DBC *));
-int __qam_mswap __P((PAGE *));
-int __qam_pgin_out __P((DB_ENV *, db_pgno_t, void *, DBT *));
-int __qam_fprobe __P((DB *, db_pgno_t, void *, qam_probe_mode, int));
-int __qam_fclose __P((DB *, db_pgno_t));
-int __qam_fremove __P((DB *, db_pgno_t));
-int __qam_sync __P((DB *, u_int32_t));
-int __qam_gen_filelist __P(( DB *, QUEUE_FILELIST **));
-int __qam_db_create __P((DB *));
-int __qam_db_close __P((DB *));
-int __db_prqueue __P((DB *, u_int32_t));
-int __qam_remove __P((DB *, const char *,
- const char *, DB_LSN *, int (**)(DB *, void*), void **));
-int __qam_rename __P((DB *,
- const char *, const char *, const char *));
-int __qam_open __P((DB *, const char *, db_pgno_t, int, u_int32_t));
-int __qam_metachk __P((DB *, const char *, QMETA *));
-int __qam_inc_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __qam_incfirst_recover
- __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __qam_mvptr_recover
- __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __qam_del_recover
- __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __qam_delext_recover __P((DB_ENV *,
- DBT *, DB_LSN *, db_recops, void *));
-int __qam_add_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __qam_delete_recover
- __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __qam_rename_recover
- __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __qam_stat __P((DB *, void *, void *(*)(size_t), u_int32_t));
-int __qam_31_qammeta __P((DB *, char *, u_int8_t *));
-int __qam_32_qammeta __P((DB *, char *, u_int8_t *));
-int __qam_vrfy_meta __P((DB *, VRFY_DBINFO *, QMETA *,
- db_pgno_t, u_int32_t));
-int __qam_vrfy_data __P((DB *, VRFY_DBINFO *, QPAGE *,
- db_pgno_t, u_int32_t));
-int __qam_vrfy_structure __P((DB *, VRFY_DBINFO *, u_int32_t));
-#if defined(__cplusplus)
-}
-#endif
-#endif /* _qam_ext_h_ */
diff --git a/db/include/queue.h b/db/include/queue.h
deleted file mode 100644
index 8d4a771ad..000000000
--- a/db/include/queue.h
+++ /dev/null
@@ -1,319 +0,0 @@
-/*
- * Copyright (c) 1991, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)queue.h 8.5 (Berkeley) 8/20/94
- */
-
-/*
- * XXX
- * We #undef the queue macros because there are incompatible versions of this
- * file and these macros on various systems. What makes the problem worse is
- * they are included and/or defined by system include files which we may have
- * already loaded into Berkeley DB before getting here. For example, FreeBSD's
- * <rpc/rpc.h> includes its system <sys/queue.h>, and VxWorks UnixLib.h defines
- * several of the LIST_XXX macros. Make sure we use ours.
- */
-#undef LIST_HEAD
-#undef LIST_ENTRY
-#undef LIST_FIRST
-#undef LIST_NEXT
-#undef LIST_INIT
-#undef LIST_INSERT_AFTER
-#undef LIST_INSERT_BEFORE
-#undef LIST_INSERT_HEAD
-#undef LIST_REMOVE
-#undef TAILQ_HEAD
-#undef TAILQ_ENTRY
-#undef TAILQ_FIRST
-#undef TAILQ_NEXT
-#undef TAILQ_INIT
-#undef TAILQ_INSERT_HEAD
-#undef TAILQ_INSERT_TAIL
-#undef TAILQ_INSERT_AFTER
-#undef TAILQ_INSERT_BEFORE
-#undef TAILQ_REMOVE
-#undef CIRCLEQ_HEAD
-#undef CIRCLEQ_ENTRY
-#undef CIRCLEQ_FIRST
-#undef CIRCLEQ_LAST
-#undef CIRCLEQ_NEXT
-#undef CIRCLEQ_PREV
-#undef CIRCLEQ_INIT
-#undef CIRCLEQ_INSERT_AFTER
-#undef CIRCLEQ_INSERT_BEFORE
-#undef CIRCLEQ_INSERT_HEAD
-#undef CIRCLEQ_INSERT_TAIL
-#undef CIRCLEQ_REMOVE
-
-/*
- * This file defines three types of data structures: lists, tail queues,
- * and circular queues.
- *
- * A list is headed by a single forward pointer (or an array of forward
- * pointers for a hash table header). The elements are doubly linked
- * so that an arbitrary element can be removed without a need to
- * traverse the list. New elements can be added to the list before
- * or after an existing element or at the head of the list. A list
- * may only be traversed in the forward direction.
- *
- * A tail queue is headed by a pair of pointers, one to the head of the
- * list and the other to the tail of the list. The elements are doubly
- * linked so that an arbitrary element can be removed without a need to
- * traverse the list. New elements can be added to the list before or
- * after an existing element, at the head of the list, or at the end of
- * the list. A tail queue may only be traversed in the forward direction.
- *
- * A circle queue is headed by a pair of pointers, one to the head of the
- * list and the other to the tail of the list. The elements are doubly
- * linked so that an arbitrary element can be removed without a need to
- * traverse the list. New elements can be added to the list before or after
- * an existing element, at the head of the list, or at the end of the list.
- * A circle queue may be traversed in either direction, but has a more
- * complex end of list detection.
- *
- * For details on the use of these macros, see the queue(3) manual page.
- */
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-/*
- * List definitions.
- */
-#define LIST_HEAD(name, type) \
-struct name { \
- struct type *lh_first; /* first element */ \
-}
-
-#define LIST_ENTRY(type) \
-struct { \
- struct type *le_next; /* next element */ \
- struct type **le_prev; /* address of previous next element */ \
-}
-
-#define LIST_FIRST(head) ((head)->lh_first)
-#define LIST_NEXT(elm, field) ((elm)->field.le_next)
-
-/*
- * List functions.
- */
-#define LIST_INIT(head) { \
- (head)->lh_first = NULL; \
-}
-
-#define LIST_INSERT_AFTER(listelm, elm, field) do { \
- if (((elm)->field.le_next = (listelm)->field.le_next) != NULL) \
- (listelm)->field.le_next->field.le_prev = \
- &(elm)->field.le_next; \
- (listelm)->field.le_next = (elm); \
- (elm)->field.le_prev = &(listelm)->field.le_next; \
-} while (0)
-
-#define LIST_INSERT_BEFORE(listelm, elm, field) do { \
- (elm)->field.le_prev = (listelm)->field.le_prev; \
- (elm)->field.le_next = (listelm); \
- *(listelm)->field.le_prev = (elm); \
- (listelm)->field.le_prev = &(elm)->field.le_next; \
-} while (0)
-
-#define LIST_INSERT_HEAD(head, elm, field) do { \
- if (((elm)->field.le_next = (head)->lh_first) != NULL) \
- (head)->lh_first->field.le_prev = &(elm)->field.le_next;\
- (head)->lh_first = (elm); \
- (elm)->field.le_prev = &(head)->lh_first; \
-} while (0)
-
-#define LIST_REMOVE(elm, field) do { \
- if ((elm)->field.le_next != NULL) \
- (elm)->field.le_next->field.le_prev = \
- (elm)->field.le_prev; \
- *(elm)->field.le_prev = (elm)->field.le_next; \
-} while (0)
-
-/*
- * Tail queue definitions.
- */
-#define TAILQ_HEAD(name, type) \
-struct name { \
- struct type *tqh_first; /* first element */ \
- struct type **tqh_last; /* addr of last next element */ \
-}
-
-#define TAILQ_ENTRY(type) \
-struct { \
- struct type *tqe_next; /* next element */ \
- struct type **tqe_prev; /* address of previous next element */ \
-}
-
-#define TAILQ_FIRST(head) ((head)->tqh_first)
-#define TAILQ_NEXT(elm, field) ((elm)->field.tqe_next)
-
-/*
- * Tail queue functions.
- */
-#define TAILQ_INIT(head) do { \
- (head)->tqh_first = NULL; \
- (head)->tqh_last = &(head)->tqh_first; \
-} while (0)
-
-#define TAILQ_INSERT_HEAD(head, elm, field) do { \
- if (((elm)->field.tqe_next = (head)->tqh_first) != NULL) \
- (head)->tqh_first->field.tqe_prev = \
- &(elm)->field.tqe_next; \
- else \
- (head)->tqh_last = &(elm)->field.tqe_next; \
- (head)->tqh_first = (elm); \
- (elm)->field.tqe_prev = &(head)->tqh_first; \
-} while (0)
-
-#define TAILQ_INSERT_TAIL(head, elm, field) do { \
- (elm)->field.tqe_next = NULL; \
- (elm)->field.tqe_prev = (head)->tqh_last; \
- *(head)->tqh_last = (elm); \
- (head)->tqh_last = &(elm)->field.tqe_next; \
-} while (0)
-
-#define TAILQ_INSERT_AFTER(head, listelm, elm, field) do { \
- if (((elm)->field.tqe_next = (listelm)->field.tqe_next) != NULL)\
- (elm)->field.tqe_next->field.tqe_prev = \
- &(elm)->field.tqe_next; \
- else \
- (head)->tqh_last = &(elm)->field.tqe_next; \
- (listelm)->field.tqe_next = (elm); \
- (elm)->field.tqe_prev = &(listelm)->field.tqe_next; \
-} while (0)
-
-#define TAILQ_INSERT_BEFORE(listelm, elm, field) do { \
- (elm)->field.tqe_prev = (listelm)->field.tqe_prev; \
- (elm)->field.tqe_next = (listelm); \
- *(listelm)->field.tqe_prev = (elm); \
- (listelm)->field.tqe_prev = &(elm)->field.tqe_next; \
-} while (0)
-
-#define TAILQ_REMOVE(head, elm, field) do { \
- if (((elm)->field.tqe_next) != NULL) \
- (elm)->field.tqe_next->field.tqe_prev = \
- (elm)->field.tqe_prev; \
- else \
- (head)->tqh_last = (elm)->field.tqe_prev; \
- *(elm)->field.tqe_prev = (elm)->field.tqe_next; \
-} while (0)
-
-/*
- * This macro is used to fixup the queue after moving the head.
- */
-#define TAILQ_REINSERT_HEAD(head, elm, field) do { \
- DB_ASSERT((head)->tqh_first == (elm)); \
- (elm)->field.tqe_prev = &(head)->tqh_first; \
-} while (0)
-
-/*
- * Circular queue definitions.
- */
-#define CIRCLEQ_HEAD(name, type) \
-struct name { \
- struct type *cqh_first; /* first element */ \
- struct type *cqh_last; /* last element */ \
-}
-
-#define CIRCLEQ_ENTRY(type) \
-struct { \
- struct type *cqe_next; /* next element */ \
- struct type *cqe_prev; /* previous element */ \
-}
-
-#define CIRCLEQ_FIRST(head) ((head)->cqh_first)
-#define CIRCLEQ_LAST(head) ((head)->cqh_last)
-#define CIRCLEQ_NEXT(elm, field) ((elm)->field.cqe_next)
-#define CIRCLEQ_PREV(elm, field) ((elm)->field.cqe_prev)
-
-/*
- * Circular queue functions.
- */
-#define CIRCLEQ_INIT(head) do { \
- (head)->cqh_first = (void *)(head); \
- (head)->cqh_last = (void *)(head); \
-} while (0)
-
-#define CIRCLEQ_INSERT_AFTER(head, listelm, elm, field) do { \
- (elm)->field.cqe_next = (listelm)->field.cqe_next; \
- (elm)->field.cqe_prev = (listelm); \
- if ((listelm)->field.cqe_next == (void *)(head)) \
- (head)->cqh_last = (elm); \
- else \
- (listelm)->field.cqe_next->field.cqe_prev = (elm); \
- (listelm)->field.cqe_next = (elm); \
-} while (0)
-
-#define CIRCLEQ_INSERT_BEFORE(head, listelm, elm, field) do { \
- (elm)->field.cqe_next = (listelm); \
- (elm)->field.cqe_prev = (listelm)->field.cqe_prev; \
- if ((listelm)->field.cqe_prev == (void *)(head)) \
- (head)->cqh_first = (elm); \
- else \
- (listelm)->field.cqe_prev->field.cqe_next = (elm); \
- (listelm)->field.cqe_prev = (elm); \
-} while (0)
-
-#define CIRCLEQ_INSERT_HEAD(head, elm, field) do { \
- (elm)->field.cqe_next = (head)->cqh_first; \
- (elm)->field.cqe_prev = (void *)(head); \
- if ((head)->cqh_last == (void *)(head)) \
- (head)->cqh_last = (elm); \
- else \
- (head)->cqh_first->field.cqe_prev = (elm); \
- (head)->cqh_first = (elm); \
-} while (0)
-
-#define CIRCLEQ_INSERT_TAIL(head, elm, field) do { \
- (elm)->field.cqe_next = (void *)(head); \
- (elm)->field.cqe_prev = (head)->cqh_last; \
- if ((head)->cqh_first == (void *)(head)) \
- (head)->cqh_first = (elm); \
- else \
- (head)->cqh_last->field.cqe_next = (elm); \
- (head)->cqh_last = (elm); \
-} while (0)
-
-#define CIRCLEQ_REMOVE(head, elm, field) do { \
- if ((elm)->field.cqe_next == (void *)(head)) \
- (head)->cqh_last = (elm)->field.cqe_prev; \
- else \
- (elm)->field.cqe_next->field.cqe_prev = \
- (elm)->field.cqe_prev; \
- if ((elm)->field.cqe_prev == (void *)(head)) \
- (head)->cqh_first = (elm)->field.cqe_next; \
- else \
- (elm)->field.cqe_prev->field.cqe_next = \
- (elm)->field.cqe_next; \
-} while (0)
-
-#if defined(__cplusplus)
-}
-#endif
diff --git a/db/include/region.h b/db/include/region.h
deleted file mode 100644
index c5882d09a..000000000
--- a/db/include/region.h
+++ /dev/null
@@ -1,292 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1998, 1999, 2000
- * Sleepycat Software. All rights reserved.
- *
- * $Id: region.h,v 11.13 2000/11/15 19:25:37 sue Exp $
- */
-
-/*
- * The DB environment consists of some number of "regions", which are described
- * by the following four structures:
- *
- * REGENV -- shared information about the environment
- * REGENV_REF -- file describing system memory version of REGENV
- * REGION -- shared information about a single region
- * REGINFO -- per-process information about a REGION
- *
- * There are three types of memory that hold regions:
- * per-process heap (malloc)
- * file mapped into memory (mmap, MapViewOfFile)
- * system memory (shmget, CreateFileMapping)
- *
- * If the regions are private to a process, they're in malloc. If they're
- * public, they're in file mapped memory, or, optionally, in system memory.
- * Regions in the filesystem are named "__db.001", "__db.002" and so on. If
- * we're not using a private environment allocated using malloc(3), the file
- * "__db.001" will always exist, as we use it to synchronize on the regions,
- * whether they exist in file mapped memory or system memory.
- *
- * The file "__db.001" contains a REGENV structure and a linked list of some
- * number of REGION structures. Each of the REGION structures describes and
- * locks one of the underlying shared regions used by DB.
- *
- * __db.001
- * +---------+
- * |REGENV |
- * +---------+ +----------+
- * |REGION |-> | __db.002 |
- * | | +----------+
- * +---------+ +----------+
- * |REGION |-> | __db.003 |
- * | | +----------+
- * +---------+ +----------+
- * |REGION |-> | __db.004 |
- * | | +----------+
- * +---------+
- *
- * The only tricky part about manipulating the regions is correctly creating
- * or joining the REGENV file, i.e., __db.001. We have to be absolutely sure
- * that only one process creates it, and that everyone else joins it without
- * seeing inconsistent data. Once that region is created, we can use normal
- * shared locking procedures to do mutal exclusion for all other regions.
- *
- * One of the REGION structures in the main environment region describes the
- * environment region itself.
- *
- * To lock a region, locate the REGION structure that describes it and acquire
- * the region's mutex. There is one exception to this rule -- the lock for the
- * environment region itself is in the REGENV structure, and not in the REGION
- * that describes the environment region. That's so that we can acquire a lock
- * without walking linked lists that could potentially change underneath us.
- * The REGION will not be moved or removed during the life of the region, and
- * so long-lived references to it can be held by the process.
- *
- * All requests to create or join a region return a REGINFO structure, which
- * is held by the caller and used to open and subsequently close the reference
- * to the region. The REGINFO structure contains the per-process information
- * that we need to access the region.
- *
- * The one remaining complication. If the regions (including the environment
- * region) live in system memory, and the system memory isn't "named" somehow
- * in the filesystem name space, we need some way of finding it. Do this by
- * by writing the REGENV_REF structure into the "__db.001" file. When we find
- * a __db.001 file that is too small to be a real, on-disk environment, we use
- * the information it contains to redirect to the real "__db.001" file/memory.
- * This currently only happens when the REGENV file is in shared system memory.
- *
- * Although DB does not currently grow regions when they run out of memory, it
- * would be possible to do so. To grow a region, allocate a new region of the
- * appropriate size, then copy the old region over it and insert the additional
- * space into the already existing shalloc arena. Callers may have to fix up
- * local references, but that should be easy to do. This failed in historic
- * versions of DB because the region lock lived in the mapped memory, and when
- * it was unmapped and remapped (or copied), threads could lose track of it.
- * Once we moved that lock into a region that is never unmapped, growing should
- * work. That all said, current versions of DB don't implement region grow
- * because some systems don't support mutex copying, e.g., from OSF1 V4.0:
- *
- * The address of an msemaphore structure may be significant. If the
- * msemaphore structure contains any value copied from an msemaphore
- * structure at a different address, the result is undefined.
- */
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-#define DB_REGION_FMT "__db.%03d" /* Region file name format. */
-#define DB_REGION_NAME_NUM 5 /* First digit offset in file names. */
-#define DB_REGION_NAME_LENGTH 8 /* Length of file names. */
-
-#define DB_REGION_ENV "__db.001" /* Primary environment name. */
-
-#define INVALID_REGION_ID 0 /* Out-of-band region ID. */
-#define REGION_ID_ENV 1 /* Primary environment ID. */
-
-typedef enum {
- INVALID_REGION_TYPE=0, /* Region type. */
- REGION_TYPE_ENV,
- REGION_TYPE_LOCK,
- REGION_TYPE_LOG,
- REGION_TYPE_MPOOL,
- REGION_TYPE_MUTEX,
- REGION_TYPE_TXN } reg_type;
-
-#define INVALID_REGION_SEGID -1 /* Segment IDs are either shmget(2) or
- * Win16 segment identifiers. They are
- * both stored in a "long", and we need
- * an out-of-band value.
- */
-/*
- * Nothing can live at region offset 0, because, in all cases, that's where
- * we store *something*. Lots of code needs an out-of-band value for region
- * offsets, so we use 0.
- */
-#define INVALID_ROFF 0
-
-/* Reference describing system memory version of REGENV. */
-typedef struct __db_reg_env_ref {
- roff_t size; /* Region size. */
- long segid; /* UNIX shmget(2) ID. */
-} REGENV_REF;
-
-/* Per-environment region information. */
-typedef struct __db_reg_env {
- /*
- * !!!
- * The mutex must be the first entry in the structure to guarantee
- * correct alignment.
- */
- MUTEX mutex; /* Environment mutex. */
-
- /*
- * !!!
- * Note, the magic and panic fields are NOT protected by any mutex,
- * and for this reason cannot be anything more complicated than a
- * zero/non-zero value.
- *
- * !!!
- * The valid region magic number must appear at the same byte offset
- * in both the environment and each shared region, as Windows/95 uses
- * it to determine if the memory has been zeroed since it was last used.
- */
- u_int32_t magic; /* Valid region magic number. */
-
- int panic; /* Environment is dead. */
-
- int majver; /* Major DB version number. */
- int minver; /* Minor DB version number. */
- int patch; /* Patch DB version number. */
-
- u_int32_t init_flags; /* Flags the env was initialized with.*/
-
- /* List of regions. */
- SH_LIST_HEAD(__db_regionh) regionq;
-
- u_int32_t refcnt; /* References to the environment. */
-
- size_t pad; /* Guarantee that following memory is
- * size_t aligned. This is necessary
- * because we're going to store the
- * allocation region information there.
- */
-} REGENV;
-
-/* Per-region shared region information. */
-typedef struct __db_region {
- /*
- * !!!
- * The mutex must be the first entry in the structure to guarantee
- * correct alignment.
- */
- MUTEX mutex; /* Region mutex. */
-
- /*
- * !!!
- * The valid region magic number must appear at the same byte offset
- * in both the environment and each shared region, as Windows/95 uses
- * it to determine if the memory has been zeroed since it was last used.
- */
- u_int32_t magic;
-
- SH_LIST_ENTRY q; /* Linked list of REGIONs. */
-
- reg_type type; /* Region type. */
- u_int32_t id; /* Region id. */
-
- roff_t size; /* Region size in bytes. */
-
- roff_t primary; /* Primary data structure offset. */
-
- long segid; /* UNIX shmget(2), Win16 segment ID. */
-} REGION;
-
-/*
- * Per-process/per-attachment information about a single region.
- */
-struct __db_reginfo_t { /* __db_r_attach IN parameters. */
- reg_type type; /* Region type. */
- u_int32_t id; /* Region id. */
- int mode; /* File creation mode. */
-
- /* __db_r_attach OUT parameters. */
- REGION *rp; /* Shared region. */
-
- char *name; /* Region file name. */
-
- void *addr; /* Region allocation address. */
- void *primary; /* Primary data structure address. */
-
- void *wnt_handle; /* Win/NT HANDLE. */
-
-#define REGION_CREATE 0x01 /* Caller created region. */
-#define REGION_CREATE_OK 0x02 /* Caller willing to create region. */
-#define REGION_JOIN_OK 0x04 /* Caller is looking for a match. */
- u_int32_t flags;
-};
-
-/*
- * Mutex maintenance information each subsystem region must keep track
- * of to manage resources adequately.
- */
-typedef struct __db_regmaint_stat_t {
- u_int32_t st_hint_hit;
- u_int32_t st_hint_miss;
- u_int32_t st_records;
- u_int32_t st_clears;
- u_int32_t st_destroys;
- u_int32_t st_max_locks;
-} REGMAINT_STAT;
-
-typedef struct __db_regmaint_t {
- u_int32_t reglocks; /* Maximum # of mutexes we track. */
- u_int32_t regmutex_hint; /* Hint for next slot */
- REGMAINT_STAT stat; /* Stats */
- roff_t regmutexes[1]; /* Region mutexes in use. */
-} REGMAINT;
-
-/*
- * R_ADDR Return a per-process address for a shared region offset.
- * R_OFFSET Return a shared region offset for a per-process address.
- *
- * !!!
- * R_OFFSET should really be returning a ptrdiff_t, but that's not yet
- * portable. We use u_int32_t, which restricts regions to 4Gb in size.
- */
-#define R_ADDR(base, offset) \
- ((void *)((u_int8_t *)((base)->addr) + offset))
-#define R_OFFSET(base, p) \
- ((u_int32_t)((u_int8_t *)(p) - (u_int8_t *)(base)->addr))
-
-/*
- * R_LOCK Lock/unlock a region.
- * R_UNLOCK
- */
-#define R_LOCK(dbenv, reginfo) \
- MUTEX_LOCK(dbenv, &(reginfo)->rp->mutex, (dbenv)->lockfhp)
-#define R_UNLOCK(dbenv, reginfo) \
- MUTEX_UNLOCK(dbenv, &(reginfo)->rp->mutex)
-
-/* PANIC_CHECK: Check to see if the DB environment is dead. */
-#define PANIC_CHECK(dbenv) \
- if (DB_GLOBAL(db_panic) && \
- (dbenv)->reginfo != NULL && ((REGENV *) \
- ((REGINFO *)(dbenv)->reginfo)->primary)->panic != 0) \
- return (DB_RUNRECOVERY);
-
-/*
- * All regions are created on 8K boundaries out of sheer paranoia, so that
- * we don't make some underlying VM unhappy.
- */
-#define OS_ROUNDOFF(i, s) { \
- (i) += (s) - 1; \
- (i) -= (i) % (s); \
-}
-#define OS_VMPAGESIZE (8 * 1024)
-#define OS_VMROUNDOFF(i) OS_ROUNDOFF(i, OS_VMPAGESIZE)
-
-#if defined(__cplusplus)
-}
-#endif
diff --git a/db/include/rpc_client_ext.h b/db/include/rpc_client_ext.h
deleted file mode 100644
index a5c4689cd..000000000
--- a/db/include/rpc_client_ext.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_include. */
-#ifndef _rpc_client_ext_h_
-#define _rpc_client_ext_h_
-#if defined(__cplusplus)
-extern "C" {
-#endif
-int __dbcl_envserver __P((DB_ENV *, char *, long, long, u_int32_t));
-int __dbcl_refresh __P((DB_ENV *));
-int __dbcl_txn_close __P((DB_ENV *));
-void __dbcl_txn_end __P((DB_TXN *));
-int __dbcl_c_destroy __P((DBC *));
-void __dbcl_c_refresh __P((DBC *));
-int __dbcl_c_setup __P((long, DB *, DBC **));
-int __dbcl_retcopy __P((DB_ENV *, DBT *, void *, u_int32_t));
-int __dbcl_dbclose_common __P((DB *));
-#if defined(__cplusplus)
-}
-#endif
-#endif /* _rpc_client_ext_h_ */
diff --git a/db/include/rpc_server_ext.h b/db/include/rpc_server_ext.h
deleted file mode 100644
index 4abb07681..000000000
--- a/db/include/rpc_server_ext.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_include. */
-#ifndef _rpc_server_ext_h_
-#define _rpc_server_ext_h_
-#if defined(__cplusplus)
-extern "C" {
-#endif
-void __db_stats_freelist __P((__db_stat_statsreplist **));
-void __dbsrv_settimeout __P((ct_entry *, u_int32_t));
-void __dbsrv_timeout __P((int));
-void __dbclear_ctp __P((ct_entry *));
-void __dbdel_ctp __P((ct_entry *));
-ct_entry *new_ct_ent __P((u_int32_t *));
-ct_entry *get_tableent __P((long));
-void __dbsrv_active __P((ct_entry *));
-int __dbc_close_int __P((ct_entry *));
-int __dbenv_close_int __P((long, int));
-char *get_home __P((char *));
-#if defined(__cplusplus)
-}
-#endif
-#endif /* _rpc_server_ext_h_ */
diff --git a/db/include/shqueue.h b/db/include/shqueue.h
deleted file mode 100644
index 115c5d39e..000000000
--- a/db/include/shqueue.h
+++ /dev/null
@@ -1,337 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1996, 1997, 1998, 1999, 2000
- * Sleepycat Software. All rights reserved.
- *
- * $Id: shqueue.h,v 11.6 2000/11/14 20:20:28 bostic Exp $
- */
-#ifndef _SYS_SHQUEUE_H_
-#define _SYS_SHQUEUE_H_
-
-/*
- * This file defines three types of data structures: lists, tail queues, and
- * circular queues, similarly to the include file <sys/queue.h>.
- *
- * The difference is that this set of macros can be used for structures that
- * reside in shared memory that may be mapped at different addresses in each
- * process. In most cases, the macros for shared structures exactly mirror
- * the normal macros, although the macro calls require an additional type
- * parameter, only used by the HEAD and ENTRY macros of the standard macros.
- *
- * For details on the use of these macros, see the queue(3) manual page.
- */
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-/*
- * Shared list definitions.
- */
-#define SH_LIST_HEAD(name) \
-struct name { \
- ssize_t slh_first; /* first element */ \
-}
-
-#define SH_LIST_ENTRY \
-struct { \
- ssize_t sle_next; /* relative offset next element */ \
- ssize_t sle_prev; /* relative offset of prev element */ \
-}
-
-/*
- * Shared list functions. Since we use relative offsets for pointers,
- * 0 is a valid offset. Therefore, we use -1 to indicate end of list.
- * The macros ending in "P" return pointers without checking for end
- * of list, the others check for end of list and evaluate to either a
- * pointer or NULL.
- */
-
-#define SH_LIST_FIRSTP(head, type) \
- ((struct type *)(((u_int8_t *)(head)) + (head)->slh_first))
-
-#define SH_LIST_FIRST(head, type) \
- ((head)->slh_first == -1 ? NULL : \
- ((struct type *)(((u_int8_t *)(head)) + (head)->slh_first)))
-
-#define SH_LIST_NEXTP(elm, field, type) \
- ((struct type *)(((u_int8_t *)(elm)) + (elm)->field.sle_next))
-
-#define SH_LIST_NEXT(elm, field, type) \
- ((elm)->field.sle_next == -1 ? NULL : \
- ((struct type *)(((u_int8_t *)(elm)) + (elm)->field.sle_next)))
-
-#define SH_LIST_PREV(elm, field) \
- ((ssize_t *)(((u_int8_t *)(elm)) + (elm)->field.sle_prev))
-
-#define SH_PTR_TO_OFF(src, dest) \
- ((ssize_t)(((u_int8_t *)(dest)) - ((u_int8_t *)(src))))
-
-/*
- * Take the element's next pointer and calculate what the corresponding
- * Prev pointer should be -- basically it is the negation plus the offset
- * of the next field in the structure.
- */
-#define SH_LIST_NEXT_TO_PREV(elm, field) \
- (-(elm)->field.sle_next + SH_PTR_TO_OFF(elm, &(elm)->field.sle_next))
-
-#define SH_LIST_INIT(head) (head)->slh_first = -1
-
-#define SH_LIST_INSERT_AFTER(listelm, elm, field, type) do { \
- if ((listelm)->field.sle_next != -1) { \
- (elm)->field.sle_next = SH_PTR_TO_OFF(elm, \
- SH_LIST_NEXTP(listelm, field, type)); \
- SH_LIST_NEXTP(listelm, field, type)->field.sle_prev = \
- SH_LIST_NEXT_TO_PREV(elm, field); \
- } else \
- (elm)->field.sle_next = -1; \
- (listelm)->field.sle_next = SH_PTR_TO_OFF(listelm, elm); \
- (elm)->field.sle_prev = SH_LIST_NEXT_TO_PREV(listelm, field); \
-} while (0)
-
-#define SH_LIST_INSERT_HEAD(head, elm, field, type) do { \
- if ((head)->slh_first != -1) { \
- (elm)->field.sle_next = \
- (head)->slh_first - SH_PTR_TO_OFF(head, elm); \
- SH_LIST_FIRSTP(head, type)->field.sle_prev = \
- SH_LIST_NEXT_TO_PREV(elm, field); \
- } else \
- (elm)->field.sle_next = -1; \
- (head)->slh_first = SH_PTR_TO_OFF(head, elm); \
- (elm)->field.sle_prev = SH_PTR_TO_OFF(elm, &(head)->slh_first); \
-} while (0)
-
-#define SH_LIST_REMOVE(elm, field, type) do { \
- if ((elm)->field.sle_next != -1) { \
- SH_LIST_NEXTP(elm, field, type)->field.sle_prev = \
- (elm)->field.sle_prev - (elm)->field.sle_next; \
- *SH_LIST_PREV(elm, field) += (elm)->field.sle_next; \
- } else \
- *SH_LIST_PREV(elm, field) = -1; \
-} while (0)
-
-/*
- * Shared tail queue definitions.
- */
-#define SH_TAILQ_HEAD(name) \
-struct name { \
- ssize_t stqh_first; /* relative offset of first element */ \
- ssize_t stqh_last; /* relative offset of last's next */ \
-}
-
-#define SH_TAILQ_ENTRY \
-struct { \
- ssize_t stqe_next; /* relative offset of next element */ \
- ssize_t stqe_prev; /* relative offset of prev's next */ \
-}
-
-/*
- * Shared tail queue functions.
- */
-#define SH_TAILQ_FIRSTP(head, type) \
- ((struct type *)((u_int8_t *)(head) + (head)->stqh_first))
-
-#define SH_TAILQ_FIRST(head, type) \
- ((head)->stqh_first == -1 ? NULL : SH_TAILQ_FIRSTP(head, type))
-
-#define SH_TAILQ_NEXTP(elm, field, type) \
- ((struct type *)((u_int8_t *)(elm) + (elm)->field.stqe_next))
-
-#define SH_TAILQ_NEXT(elm, field, type) \
- ((elm)->field.stqe_next == -1 ? NULL : SH_TAILQ_NEXTP(elm, field, type))
-
-#define SH_TAILQ_PREVP(elm, field) \
- ((ssize_t *)((u_int8_t *)(elm) + (elm)->field.stqe_prev))
-
-#define SH_TAILQ_LAST(head) \
- ((ssize_t *)(((u_int8_t *)(head)) + (head)->stqh_last))
-
-#define SH_TAILQ_NEXT_TO_PREV(elm, field) \
- (-(elm)->field.stqe_next + SH_PTR_TO_OFF(elm, &(elm)->field.stqe_next))
-
-#define SH_TAILQ_INIT(head) { \
- (head)->stqh_first = -1; \
- (head)->stqh_last = SH_PTR_TO_OFF(head, &(head)->stqh_first); \
-}
-
-#define SH_TAILQ_INSERT_HEAD(head, elm, field, type) do { \
- if ((head)->stqh_first != -1) { \
- (elm)->field.stqe_next = \
- (head)->stqh_first - SH_PTR_TO_OFF(head, elm); \
- SH_TAILQ_FIRSTP(head, type)->field.stqe_prev = \
- SH_TAILQ_NEXT_TO_PREV(elm, field); \
- } else { \
- (elm)->field.stqe_next = -1; \
- (head)->stqh_last = \
- SH_PTR_TO_OFF(head, &(elm)->field.stqe_next); \
- } \
- (head)->stqh_first = SH_PTR_TO_OFF(head, elm); \
- (elm)->field.stqe_prev = \
- SH_PTR_TO_OFF(elm, &(head)->stqh_first); \
-} while (0)
-
-#define SH_TAILQ_INSERT_TAIL(head, elm, field) do { \
- (elm)->field.stqe_next = -1; \
- (elm)->field.stqe_prev = \
- -SH_PTR_TO_OFF(head, elm) + (head)->stqh_last; \
- if ((head)->stqh_last == \
- SH_PTR_TO_OFF((head), &(head)->stqh_first)) \
- (head)->stqh_first = SH_PTR_TO_OFF(head, elm); \
- else \
- *SH_TAILQ_LAST(head) = -(head)->stqh_last + \
- SH_PTR_TO_OFF((elm), &(elm)->field.stqe_next) + \
- SH_PTR_TO_OFF(head, elm); \
- (head)->stqh_last = \
- SH_PTR_TO_OFF(head, &((elm)->field.stqe_next)); \
-} while (0)
-
-#define SH_TAILQ_INSERT_AFTER(head, listelm, elm, field, type) do { \
- if ((listelm)->field.stqe_next != -1) { \
- (elm)->field.stqe_next = (listelm)->field.stqe_next - \
- SH_PTR_TO_OFF(listelm, elm); \
- SH_TAILQ_NEXTP(listelm, field, type)->field.stqe_prev = \
- SH_TAILQ_NEXT_TO_PREV(elm, field); \
- } else { \
- (elm)->field.stqe_next = -1; \
- (head)->stqh_last = \
- SH_PTR_TO_OFF(head, &elm->field.stqe_next); \
- } \
- (listelm)->field.stqe_next = SH_PTR_TO_OFF(listelm, elm); \
- (elm)->field.stqe_prev = SH_TAILQ_NEXT_TO_PREV(listelm, field); \
-} while (0)
-
-#define SH_TAILQ_REMOVE(head, elm, field, type) do { \
- if ((elm)->field.stqe_next != -1) { \
- SH_TAILQ_NEXTP(elm, field, type)->field.stqe_prev = \
- (elm)->field.stqe_prev + \
- SH_PTR_TO_OFF(SH_TAILQ_NEXTP(elm, \
- field, type), elm); \
- *SH_TAILQ_PREVP(elm, field) += elm->field.stqe_next; \
- } else { \
- (head)->stqh_last = (elm)->field.stqe_prev + \
- SH_PTR_TO_OFF(head, elm); \
- *SH_TAILQ_PREVP(elm, field) = -1; \
- } \
-} while (0)
-
-/*
- * Shared circular queue definitions.
- */
-#define SH_CIRCLEQ_HEAD(name) \
-struct name { \
- ssize_t scqh_first; /* first element */ \
- ssize_t scqh_last; /* last element */ \
-}
-
-#define SH_CIRCLEQ_ENTRY \
-struct { \
- ssize_t scqe_next; /* next element */ \
- ssize_t scqe_prev; /* previous element */ \
-}
-
-/*
- * Shared circular queue functions.
- */
-#define SH_CIRCLEQ_FIRSTP(head, type) \
- ((struct type *)(((u_int8_t *)(head)) + (head)->scqh_first))
-
-#define SH_CIRCLEQ_FIRST(head, type) \
- ((head)->scqh_first == -1 ? \
- (void *)head : SH_CIRCLEQ_FIRSTP(head, type))
-
-#define SH_CIRCLEQ_LASTP(head, type) \
- ((struct type *)(((u_int8_t *)(head)) + (head)->scqh_last))
-
-#define SH_CIRCLEQ_LAST(head, type) \
- ((head)->scqh_last == -1 ? (void *)head : SH_CIRCLEQ_LASTP(head, type))
-
-#define SH_CIRCLEQ_NEXTP(elm, field, type) \
- ((struct type *)(((u_int8_t *)(elm)) + (elm)->field.scqe_next))
-
-#define SH_CIRCLEQ_NEXT(head, elm, field, type) \
- ((elm)->field.scqe_next == SH_PTR_TO_OFF(elm, head) ? \
- (void *)head : SH_CIRCLEQ_NEXTP(elm, field, type))
-
-#define SH_CIRCLEQ_PREVP(elm, field, type) \
- ((struct type *)(((u_int8_t *)(elm)) + (elm)->field.scqe_prev))
-
-#define SH_CIRCLEQ_PREV(head, elm, field, type) \
- ((elm)->field.scqe_prev == SH_PTR_TO_OFF(elm, head) ? \
- (void *)head : SH_CIRCLEQ_PREVP(elm, field, type))
-
-#define SH_CIRCLEQ_INIT(head) { \
- (head)->scqh_first = 0; \
- (head)->scqh_last = 0; \
-}
-
-#define SH_CIRCLEQ_INSERT_AFTER(head, listelm, elm, field, type) do { \
- (elm)->field.scqe_prev = SH_PTR_TO_OFF(elm, listelm); \
- (elm)->field.scqe_next = (listelm)->field.scqe_next + \
- (elm)->field.scqe_prev; \
- if (SH_CIRCLEQ_NEXTP(listelm, field, type) == (void *)head) \
- (head)->scqh_last = SH_PTR_TO_OFF(head, elm); \
- else \
- SH_CIRCLEQ_NEXTP(listelm, \
- field, type)->field.scqe_prev = \
- SH_PTR_TO_OFF(SH_CIRCLEQ_NEXTP(listelm, \
- field, type), elm); \
- (listelm)->field.scqe_next = -(elm)->field.scqe_prev; \
-} while (0)
-
-#define SH_CIRCLEQ_INSERT_BEFORE(head, listelm, elm, field, type) do { \
- (elm)->field.scqe_next = SH_PTR_TO_OFF(elm, listelm); \
- (elm)->field.scqe_prev = (elm)->field.scqe_next - \
- SH_CIRCLEQ_PREVP(listelm, field, type)->field.scqe_next;\
- if (SH_CIRCLEQ_PREVP(listelm, field, type) == (void *)(head)) \
- (head)->scqh_first = SH_PTR_TO_OFF(head, elm); \
- else \
- SH_CIRCLEQ_PREVP(listelm, \
- field, type)->field.scqe_next = \
- SH_PTR_TO_OFF(SH_CIRCLEQ_PREVP(listelm, \
- field, type), elm); \
- (listelm)->field.scqe_prev = -(elm)->field.scqe_next; \
-} while (0)
-
-#define SH_CIRCLEQ_INSERT_HEAD(head, elm, field, type) do { \
- (elm)->field.scqe_prev = SH_PTR_TO_OFF(elm, head); \
- (elm)->field.scqe_next = (head)->scqh_first + \
- (elm)->field.scqe_prev; \
- if ((head)->scqh_last == 0) \
- (head)->scqh_last = -(elm)->field.scqe_prev; \
- else \
- SH_CIRCLEQ_FIRSTP(head, type)->field.scqe_prev = \
- SH_PTR_TO_OFF(SH_CIRCLEQ_FIRSTP(head, type), elm); \
- (head)->scqh_first = -(elm)->field.scqe_prev; \
-} while (0)
-
-#define SH_CIRCLEQ_INSERT_TAIL(head, elm, field, type) do { \
- (elm)->field.scqe_next = SH_PTR_TO_OFF(elm, head); \
- (elm)->field.scqe_prev = (head)->scqh_last + \
- (elm)->field.scqe_next; \
- if ((head)->scqh_first == 0) \
- (head)->scqh_first = -(elm)->field.scqe_next; \
- else \
- SH_CIRCLEQ_LASTP(head, type)->field.scqe_next = \
- SH_PTR_TO_OFF(SH_CIRCLEQ_LASTP(head, type), elm); \
- (head)->scqh_last = -(elm)->field.scqe_next; \
-} while (0)
-
-#define SH_CIRCLEQ_REMOVE(head, elm, field, type) do { \
- if (SH_CIRCLEQ_NEXTP(elm, field, type) == (void *)(head)) \
- (head)->scqh_last += (elm)->field.scqe_prev; \
- else \
- SH_CIRCLEQ_NEXTP(elm, field, type)->field.scqe_prev += \
- (elm)->field.scqe_prev; \
- if (SH_CIRCLEQ_PREVP(elm, field, type) == (void *)(head)) \
- (head)->scqh_first += (elm)->field.scqe_next; \
- else \
- SH_CIRCLEQ_PREVP(elm, field, type)->field.scqe_next += \
- (elm)->field.scqe_next; \
-} while (0)
-
-#if defined(__cplusplus)
-}
-#endif
-
-#endif /* !_SYS_SHQUEUE_H_ */
diff --git a/db/include/tcl_db.h b/db/include/tcl_db.h
deleted file mode 100644
index 254006c2f..000000000
--- a/db/include/tcl_db.h
+++ /dev/null
@@ -1,219 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1999, 2000
- * Sleepycat Software. All rights reserved.
- *
- * $Id: tcl_db.h,v 11.9 2000/12/12 17:43:56 bostic Exp $
- */
-
-#define MSG_SIZE 100 /* Message size */
-
-enum INFOTYPE {
- I_ENV, I_DB, I_DBC, I_TXN, I_MP, I_PG, I_LOCK, I_NDBM, I_MUTEX };
-
-#define MAX_ID 8 /* Maximum number of sub-id's we need */
-
-#define DBTCL_DBM 1
-#define DBTCL_NDBM 2
-
-typedef struct _mutex_entry {
- union {
- struct {
- MUTEX real_m;
- u_int32_t real_val;
- } r;
- /*
- * This is here to make sure that each of the mutex structures
- * are 16-byte aligned, which is required on HP architectures.
- * The db_mutex_t structure might be >32 bytes itself, or the
- * real_val might push it over the 32 byte boundary. The best
- * we can do is use a 48 byte boundary.
- */
- char c[48];
- } u;
-} _MUTEX_ENTRY;
-
-#define m u.r.real_m
-#define val u.r.real_val
-
-typedef struct _mutex_data {
- DB_ENV *env;
- REGINFO reginfo;
- _MUTEX_ENTRY *marray;
- size_t size;
- u_int32_t n_mutex;
-} _MUTEX_DATA;
-
-/*
- * Why use a home grown package over the Tcl_Hash functions?
- *
- * We could have implemented the stuff below without maintaining our
- * own list manipulation, efficiently hashing it with the available
- * Tcl functions (Tcl_CreateHashEntry, Tcl_GetHashValue, etc). I chose
- * not to do so for these reasons:
- *
- * We still need the information below. Using the hashing only removes
- * us from needing the next/prev pointers. We still need the structure
- * itself because we need more than one value associated with a widget.
- * We need to keep track of parent pointers for sub-widgets (like cursors)
- * so we can correctly close. We need to keep track of individual widget's
- * id counters for any sub-widgets they may have. We need to be able to
- * associate the name/client data outside the scope of the widget.
- *
- * So, is it better to use the hashing rather than
- * the linear list we have now? I decided against it for the simple reason
- * that to access the structure would require two calls. The first is
- * Tcl_FindHashEntry(table, key) and then, once we have the entry, we'd
- * have to do Tcl_GetHashValue(entry) to get the pointer of the structure.
- *
- * I believe the number of simultaneous DB widgets in existence at one time
- * is not going to be that large (more than several dozen) such that
- * linearly searching the list is not going to impact performance in a
- * noticable way. Should performance be impacted due to the size of the
- * info list, then perhaps it is time to revisit this decision.
- */
-typedef struct dbtcl_info {
- LIST_ENTRY(dbtcl_info) entries;
- Tcl_Interp *i_interp;
- char *i_name;
- enum INFOTYPE i_type;
- union infop {
- DB_ENV *envp;
- void *anyp;
- DB *dbp;
- DBC *dbcp;
- DB_TXN *txnp;
- DB_MPOOLFILE *mp;
- DB_LOCK *lock;
- _MUTEX_DATA *mutex;
-#if 0
- DBM *ndbmp; /* Compatibility */
-#endif
- } un;
- union data {
- int anydata;
- db_pgno_t pgno;
- u_int32_t lockid;
- } und;
- union data2 {
- int anydata;
- size_t pagesz;
- } und2;
- DBT i_lockobj;
- FILE *i_err;
- char *i_errpfx;
- struct dbtcl_info *i_parent;
- int i_otherid[MAX_ID];
-} DBTCL_INFO;
-
-extern int __debug_on, __debug_print, __debug_stop, __debug_test;
-LIST_HEAD(infohead, dbtcl_info) __db_infohead;
-
-#define i_anyp un.anyp
-#define i_pagep un.anyp
-#define i_envp un.envp
-#define i_dbp un.dbp
-#define i_dbcp un.dbcp
-#define i_txnp un.txnp
-#define i_mp un.mp
-#define i_lock un.lock
-#define i_mutex un.mutex
-#if 0
-#define i_ndbm un.ndbmp
-#endif
-
-#define i_data und.anydata
-#define i_pgno und.pgno
-#define i_locker und.lockid
-#define i_data2 und2.anydata
-#define i_pgsz und2.pagesz
-
-#define i_envtxnid i_otherid[0]
-#define i_envmpid i_otherid[1]
-#define i_envlockid i_otherid[2]
-#define i_envmutexid i_otherid[3]
-
-#define i_mppgid i_otherid[0]
-
-#define i_dbdbcid i_otherid[0]
-
-#define NAME_TO_ENV(name) (DB_ENV *)_NameToPtr((name))
-#define NAME_TO_DB(name) (DB *)_NameToPtr((name))
-#define NAME_TO_DBC(name) (DBC *)_NameToPtr((name))
-#define NAME_TO_TXN(name) (DB_TXN *)_NameToPtr((name))
-#define NAME_TO_MP(name) (DB_MPOOLFILE *)_NameToPtr((name))
-#define NAME_TO_LOCK(name) (DB_LOCK *)_NameToPtr((name))
-
-/*
- * MAKE_STAT_LIST appends a {name value} pair to a result list
- * that MUST be called 'res' that is a Tcl_Obj * in the local
- * function. This macro also assumes a label "error" to go to
- * in the even of a Tcl error. For stat functions this will
- * typically go before the "free" function to free the stat structure
- * returned by DB.
- */
-#define MAKE_STAT_LIST(s,v) \
-do { \
- result = _SetListElemInt(interp, res, (s), (v)); \
- if (result != TCL_OK) \
- goto error; \
-} while (0)
-
-/*
- * MAKE_STAT_STRLIST appends a {name string} pair to a result list
- * that MUST be called 'res' that is a Tcl_Obj * in the local
- * function. This macro also assumes a label "error" to go to
- * in the even of a Tcl error. For stat functions this will
- * typically go before the "free" function to free the stat structure
- * returned by DB.
- */
-#define MAKE_STAT_STRLIST(s,s1) \
-do { \
- result = _SetListElem(interp, res, (s), strlen(s), \
- (s1), strlen(s1)); \
- if (result != TCL_OK) \
- goto error; \
-} while (0)
-
-/*
- * FLAG_CHECK checks that the given flag is not set yet.
- * If it is, it sets up an error message.
- */
-#define FLAG_CHECK(flag) \
-do { \
- if ((flag) != 0) { \
- Tcl_SetResult(interp, \
- " Only 1 policy can be specified.\n", \
- TCL_STATIC); \
- result = TCL_ERROR; \
- break; \
- } \
-} while (0)
-
-/*
- * FLAG_CHECK2 checks that the given flag is not set yet or is
- * only set to the given allowed value.
- * If it is, it sets up an error message.
- */
-#define FLAG_CHECK2(flag,val) \
-do { \
- if ((flag) != 0 && (flag) != (val)) { \
- Tcl_SetResult(interp, \
- " Only 1 policy can be specified.\n", \
- TCL_STATIC); \
- result = TCL_ERROR; \
- break; \
- } \
-} while (0)
-
-/*
- * IS_HELP checks whether the arg we bombed on is -?, which is a help option.
- * If it is, we return TCL_OK (but leave the result set to whatever
- * Tcl_GetIndexFromObj says, which lists all the valid options. Otherwise
- * return TCL_ERROR.
- */
-#define IS_HELP(s) \
- (strcmp(Tcl_GetStringFromObj(s,NULL), "-?") == 0) ? TCL_OK : TCL_ERROR
-
-#include "tcl_ext.h"
diff --git a/db/include/tcl_ext.h b/db/include/tcl_ext.h
deleted file mode 100644
index 9baf7e4fd..000000000
--- a/db/include/tcl_ext.h
+++ /dev/null
@@ -1,89 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_include. */
-#ifndef _tcl_ext_h_
-#define _tcl_ext_h_
-#if defined(__cplusplus)
-extern "C" {
-#endif
-int bdb_HCommand __P((Tcl_Interp *, int, Tcl_Obj * CONST*));
-#if DB_DBM_HSEARCH != 0
-int bdb_NdbmOpen __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DBM **));
-#endif
-#if DB_DBM_HSEARCH != 0
-int bdb_DbmCommand
- __P((Tcl_Interp *, int, Tcl_Obj * CONST*, int, DBM *));
-#endif
-int ndbm_Cmd __P((ClientData, Tcl_Interp *, int, Tcl_Obj * CONST*));
-int bdb_RandCommand __P((Tcl_Interp *, int, Tcl_Obj * CONST*));
-int tcl_Mutex __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *,
- DBTCL_INFO *));
-int db_Cmd __P((ClientData, Tcl_Interp *, int, Tcl_Obj * CONST*));
-int dbc_Cmd __P((ClientData, Tcl_Interp *, int, Tcl_Obj * CONST*));
-int env_Cmd __P((ClientData, Tcl_Interp *, int, Tcl_Obj * CONST*));
-int tcl_EnvRemove __P((Tcl_Interp *, int, Tcl_Obj * CONST*,
- DB_ENV *, DBTCL_INFO *));
-int tcl_EnvVerbose __P((Tcl_Interp *, DB_ENV *, Tcl_Obj *,
- Tcl_Obj *));
-int tcl_EnvTest __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
-DBTCL_INFO *_NewInfo __P((Tcl_Interp *,
- void *, char *, enum INFOTYPE));
-void *_NameToPtr __P((CONST char *));
-char *_PtrToName __P((CONST void *));
-DBTCL_INFO *_PtrToInfo __P((CONST void *));
-DBTCL_INFO *_NameToInfo __P((CONST char *));
-void _SetInfoData __P((DBTCL_INFO *, void *));
-void _DeleteInfo __P((DBTCL_INFO *));
-int _SetListElem __P((Tcl_Interp *,
- Tcl_Obj *, void *, int, void *, int));
-int _SetListElemInt __P((Tcl_Interp *, Tcl_Obj *, void *, int));
-int _SetListRecnoElem __P((Tcl_Interp *, Tcl_Obj *,
- db_recno_t, u_char *, int));
-int _GetGlobPrefix __P((char *, char **));
-int _ReturnSetup __P((Tcl_Interp *, int, char *));
-int _ErrorSetup __P((Tcl_Interp *, int, char *));
-void _ErrorFunc __P((CONST char *, char *));
-int _GetLsn __P((Tcl_Interp *, Tcl_Obj *, DB_LSN *));
-void _debug_check __P((void));
-int tcl_LockDetect __P((Tcl_Interp *, int,
- Tcl_Obj * CONST*, DB_ENV *));
-int tcl_LockGet __P((Tcl_Interp *, int,
- Tcl_Obj * CONST*, DB_ENV *));
-int tcl_LockStat __P((Tcl_Interp *, int,
- Tcl_Obj * CONST*, DB_ENV *));
-int tcl_LockVec __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
-int tcl_LogArchive __P((Tcl_Interp *, int,
- Tcl_Obj * CONST*, DB_ENV *));
-int tcl_LogCompare __P((Tcl_Interp *, int,
- Tcl_Obj * CONST*));
-int tcl_LogFile __P((Tcl_Interp *, int,
- Tcl_Obj * CONST*, DB_ENV *));
-int tcl_LogFlush __P((Tcl_Interp *, int,
- Tcl_Obj * CONST*, DB_ENV *));
-int tcl_LogGet __P((Tcl_Interp *, int,
- Tcl_Obj * CONST*, DB_ENV *));
-int tcl_LogPut __P((Tcl_Interp *, int,
- Tcl_Obj * CONST*, DB_ENV *));
-int tcl_LogRegister __P((Tcl_Interp *, int,
- Tcl_Obj * CONST*, DB_ENV *));
-int tcl_LogStat __P((Tcl_Interp *, int,
- Tcl_Obj * CONST*, DB_ENV *));
-int tcl_LogUnregister __P((Tcl_Interp *, int,
- Tcl_Obj * CONST*, DB_ENV *));
-void _MpInfoDelete __P((Tcl_Interp *, DBTCL_INFO *));
-int tcl_MpSync __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
-int tcl_MpTrickle __P((Tcl_Interp *, int,
- Tcl_Obj * CONST*, DB_ENV *));
-int tcl_Mp __P((Tcl_Interp *, int,
- Tcl_Obj * CONST*, DB_ENV *, DBTCL_INFO *));
-int tcl_MpStat __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
-void _TxnInfoDelete __P((Tcl_Interp *, DBTCL_INFO *));
-int tcl_TxnCheckpoint __P((Tcl_Interp *, int,
- Tcl_Obj * CONST*, DB_ENV *));
-int tcl_Txn __P((Tcl_Interp *, int,
- Tcl_Obj * CONST*, DB_ENV *, DBTCL_INFO *));
-int tcl_TxnStat __P((Tcl_Interp *, int,
- Tcl_Obj * CONST*, DB_ENV *));
-int txn_Cmd __P((ClientData, Tcl_Interp *, int, Tcl_Obj * CONST*));
-#if defined(__cplusplus)
-}
-#endif
-#endif /* _tcl_ext_h_ */
diff --git a/db/include/txn.h b/db/include/txn.h
deleted file mode 100644
index 009a1ca15..000000000
--- a/db/include/txn.h
+++ /dev/null
@@ -1,150 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1996, 1997, 1998, 1999, 2000
- * Sleepycat Software. All rights reserved.
- *
- * $Id: txn.h,v 11.12 2001/01/02 17:23:39 margo Exp $
- */
-
-#ifndef _TXN_H_
-#define _TXN_H_
-
-#include "xa.h"
-
-struct __db_txnmgr; typedef struct __db_txnmgr DB_TXNMGR;
-struct __db_txnregion; typedef struct __db_txnregion DB_TXNREGION;
-
-/*
- * !!!
- * TXN_MINIMUM = (DB_LOCK_MAXID + 1) but this makes compilers complain.
- */
-#define TXN_MINIMUM 0x80000000
-#define TXN_INVALID 0xffffffff /* Maximum number of txn ids. */
-#define TXN_INVALID_ID 0 /* Invalid transaction ID. */
-
-#define DEF_MAX_TXNS 20 /* Default max transactions. */
-
-/* The structure allocated for every transaction. */
-struct __db_txn {
- DB_TXNMGR *mgrp; /* Pointer to transaction manager. */
- DB_TXN *parent; /* Pointer to transaction's parent. */
- DB_LSN last_lsn; /* Lsn of last log write. */
- u_int32_t txnid; /* Unique transaction id. */
- roff_t off; /* Detail structure within region. */
- TAILQ_ENTRY(__db_txn) links; /* Links transactions off manager. */
- TAILQ_HEAD(__kids, __db_txn) kids; /* Child transactions. */
- TAILQ_ENTRY(__db_txn) klinks; /* Links child transactions. */
- u_int32_t cursors; /* Number of cursors open for txn */
-
-#define TXN_CHILDCOMMIT 0x01 /* Transaction that has committed. */
-#define TXN_MALLOC 0x02 /* Structure allocated by TXN system. */
-#define TXN_NOSYNC 0x04 /* Do not sync on prepare and commit. */
-#define TXN_NOWAIT 0x08 /* Do not wait on locks. */
-#define TXN_SYNC 0x10 /* Sync on prepare and commit. */
- u_int32_t flags;
-};
-
-/*
- * Internal data maintained in shared memory for each transaction.
- */
-typedef char DB_XID[XIDDATASIZE];
-
-typedef struct __txn_detail {
- u_int32_t txnid; /* current transaction id
- used to link free list also */
- DB_LSN last_lsn; /* last lsn written for this txn */
- DB_LSN begin_lsn; /* lsn of begin record */
- roff_t parent; /* Offset of transaction's parent. */
-
-#define TXN_RUNNING 1
-#define TXN_ABORTED 2
-#define TXN_PREPARED 3
-#define TXN_COMMITTED 4
- u_int32_t status; /* status of the transaction */
-
- SH_TAILQ_ENTRY links; /* free/active list */
-
-#define TXN_XA_ABORTED 1
-#define TXN_XA_DEADLOCKED 2
-#define TXN_XA_ENDED 3
-#define TXN_XA_PREPARED 4
-#define TXN_XA_STARTED 5
-#define TXN_XA_SUSPENDED 6
- u_int32_t xa_status; /* XA status */
-
- /*
- * XID (xid_t) structure: because these fields are logged, the
- * sizes have to be explicit.
- */
- DB_XID xid; /* XA global transaction id */
- u_int32_t bqual; /* bqual_length from XID */
- u_int32_t gtrid; /* gtrid_length from XID */
- int32_t format; /* XA format */
-} TXN_DETAIL;
-
-/*
- * DB_TXNMGR --
- * The transaction manager encapsulates the transaction system.
- */
-struct __db_txnmgr {
-/*
- * These fields need to be protected for multi-threaded support.
- *
- * !!!
- * As this structure is allocated in per-process memory, the mutex may need
- * to be stored elsewhere on architectures unable to support mutexes in heap
- * memory, e.g., HP/UX 9.
- */
- MUTEX *mutexp; /* Lock list of active transactions
- * (including the content of each
- * TXN_DETAIL structure on the list).
- */
- /* List of active transactions. */
- TAILQ_HEAD(_chain, __db_txn) txn_chain;
-
-/* These fields are never updated after creation, and so not protected. */
- DB_ENV *dbenv; /* Environment. */
- REGINFO reginfo; /* Region information. */
-};
-
-/*
- * DB_TXNREGION --
- * The primary transaction data structure in the shared memory region.
- */
-struct __db_txnregion {
- u_int32_t maxtxns; /* maximum number of active TXNs */
- u_int32_t last_txnid; /* last transaction id given out */
- DB_LSN pending_ckp; /* last checkpoint did not finish */
- DB_LSN last_ckp; /* lsn of the last checkpoint */
- time_t time_ckp; /* time of last checkpoint */
- u_int32_t logtype; /* type of logging */
- u_int32_t locktype; /* lock type */
- u_int32_t naborts; /* number of aborted TXNs */
- u_int32_t ncommits; /* number of committed TXNs */
- u_int32_t nbegins; /* number of begun TXNs */
- u_int32_t nactive; /* number of active TXNs */
- u_int32_t maxnactive; /* maximum number of active TXNs */
- /* active TXN list */
- SH_TAILQ_HEAD(__active) active_txn;
-};
-
-/*
- * Make the region large enough to hold N transaction detail structures
- * plus some space to hold thread handles and the beginning of the shalloc
- * region.
- */
-#define TXN_REGION_SIZE(N) \
- (sizeof(DB_TXNREGION) + N * sizeof(TXN_DETAIL) + 1000)
-
-/*
- * Log record types.
- */
-#define TXN_COMMIT 1
-#define TXN_PREPARE 2
-
-#include "txn_auto.h"
-#include "txn_ext.h"
-
-#include "xa_ext.h"
-#endif /* !_TXN_H_ */
diff --git a/db/include/txn_auto.h b/db/include/txn_auto.h
deleted file mode 100644
index c9cb5cfae..000000000
--- a/db/include/txn_auto.h
+++ /dev/null
@@ -1,114 +0,0 @@
-/* Do not edit: automatically built by gen_rec.awk. */
-
-#ifndef txn_AUTO_H
-#define txn_AUTO_H
-
-#define DB_txn_old_regop 6
-typedef struct _txn_old_regop_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- u_int32_t opcode;
-} __txn_old_regop_args;
-
-int __txn_old_regop_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __txn_old_regop_read __P((DB_ENV *, void *, __txn_old_regop_args **));
-
-#define DB_txn_regop 10
-typedef struct _txn_regop_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- u_int32_t opcode;
- int32_t timestamp;
-} __txn_regop_args;
-
-int __txn_regop_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, u_int32_t, int32_t));
-int __txn_regop_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __txn_regop_read __P((DB_ENV *, void *, __txn_regop_args **));
-
-#define DB_txn_old_ckp 7
-typedef struct _txn_old_ckp_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- DB_LSN ckp_lsn;
- DB_LSN last_ckp;
-} __txn_old_ckp_args;
-
-int __txn_old_ckp_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __txn_old_ckp_read __P((DB_ENV *, void *, __txn_old_ckp_args **));
-
-#define DB_txn_ckp 11
-typedef struct _txn_ckp_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- DB_LSN ckp_lsn;
- DB_LSN last_ckp;
- int32_t timestamp;
-} __txn_ckp_args;
-
-int __txn_ckp_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, DB_LSN *, DB_LSN *, int32_t));
-int __txn_ckp_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __txn_ckp_read __P((DB_ENV *, void *, __txn_ckp_args **));
-
-#define DB_txn_xa_regop_old 8
-typedef struct _txn_xa_regop_old_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- u_int32_t opcode;
- DBT xid;
- int32_t formatID;
- u_int32_t gtrid;
- u_int32_t bqual;
-} __txn_xa_regop_old_args;
-
-int __txn_xa_regop_old_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __txn_xa_regop_old_read __P((DB_ENV *, void *, __txn_xa_regop_old_args **));
-
-#define DB_txn_xa_regop 13
-typedef struct _txn_xa_regop_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- u_int32_t opcode;
- DBT xid;
- int32_t formatID;
- u_int32_t gtrid;
- u_int32_t bqual;
- DB_LSN begin_lsn;
-} __txn_xa_regop_args;
-
-int __txn_xa_regop_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, u_int32_t, const DBT *, int32_t, u_int32_t, u_int32_t, DB_LSN *));
-int __txn_xa_regop_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __txn_xa_regop_read __P((DB_ENV *, void *, __txn_xa_regop_args **));
-
-#define DB_txn_child_old 9
-typedef struct _txn_child_old_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- u_int32_t opcode;
- u_int32_t parent;
-} __txn_child_old_args;
-
-int __txn_child_old_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __txn_child_old_read __P((DB_ENV *, void *, __txn_child_old_args **));
-
-#define DB_txn_child 12
-typedef struct _txn_child_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- u_int32_t child;
- DB_LSN c_lsn;
-} __txn_child_args;
-
-int __txn_child_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, u_int32_t, DB_LSN *));
-int __txn_child_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __txn_child_read __P((DB_ENV *, void *, __txn_child_args **));
-int __txn_init_print __P((DB_ENV *));
-int __txn_init_recover __P((DB_ENV *));
-#endif
diff --git a/db/include/txn_ext.h b/db/include/txn_ext.h
deleted file mode 100644
index ee6922d70..000000000
--- a/db/include/txn_ext.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_include. */
-#ifndef _txn_ext_h_
-#define _txn_ext_h_
-#if defined(__cplusplus)
-extern "C" {
-#endif
-int __txn_xa_begin __P((DB_ENV *, DB_TXN *));
-int __txn_end __P((DB_TXN *, int));
-int __txn_activekids __P((DB_ENV *, u_int32_t, DB_TXN *));
-int __txn_regop_recover
- __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __txn_xa_regop_recover
- __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __txn_ckp_recover
-__P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __txn_child_recover
- __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-void __txn_dbenv_create __P((DB_ENV *));
-int __txn_open __P((DB_ENV *));
-int __txn_close __P((DB_ENV *));
-#if defined(__cplusplus)
-}
-#endif
-#endif /* _txn_ext_h_ */
diff --git a/db/include/xa.h b/db/include/xa.h
deleted file mode 100644
index ce4617926..000000000
--- a/db/include/xa.h
+++ /dev/null
@@ -1,179 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1998, 1999, 2000
- * Sleepycat Software. All rights reserved.
- *
- * $Id: xa.h,v 11.3 2000/02/14 02:59:55 bostic Exp $
- */
-/*
- * Start of xa.h header
- *
- * Define a symbol to prevent multiple inclusions of this header file
- */
-#ifndef XA_H
-#define XA_H
-
-/*
- * Transaction branch identification: XID and NULLXID:
- */
-#define XIDDATASIZE 128 /* size in bytes */
-#define MAXGTRIDSIZE 64 /* maximum size in bytes of gtrid */
-#define MAXBQUALSIZE 64 /* maximum size in bytes of bqual */
-
-struct xid_t {
- long formatID; /* format identifier */
- long gtrid_length; /* value from 1 through 64 */
- long bqual_length; /* value from 1 through 64 */
- char data[XIDDATASIZE];
-};
-typedef struct xid_t XID;
-/*
- * A value of -1 in formatID means that the XID is null.
- */
-
-/*
- * Declarations of routines by which RMs call TMs:
- */
-extern int ax_reg __P((int, XID *, long));
-extern int ax_unreg __P((int, long));
-
-/*
- * XA Switch Data Structure
- */
-#define RMNAMESZ 32 /* length of resource manager name, */
- /* including the null terminator */
-#define MAXINFOSIZE 256 /* maximum size in bytes of xa_info */
- /* strings, including the null
- terminator */
-struct xa_switch_t {
- char name[RMNAMESZ]; /* name of resource manager */
- long flags; /* resource manager specific options */
- long version; /* must be 0 */
- int (*xa_open_entry) /* xa_open function pointer */
- __P((char *, int, long));
- int (*xa_close_entry) /* xa_close function pointer */
- __P((char *, int, long));
- int (*xa_start_entry) /* xa_start function pointer */
- __P((XID *, int, long));
- int (*xa_end_entry) /* xa_end function pointer */
- __P((XID *, int, long));
- int (*xa_rollback_entry) /* xa_rollback function pointer */
- __P((XID *, int, long));
- int (*xa_prepare_entry) /* xa_prepare function pointer */
- __P((XID *, int, long));
- int (*xa_commit_entry) /* xa_commit function pointer */
- __P((XID *, int, long));
- int (*xa_recover_entry) /* xa_recover function pointer */
- __P((XID *, long, int, long));
- int (*xa_forget_entry) /* xa_forget function pointer */
- __P((XID *, int, long));
- int (*xa_complete_entry) /* xa_complete function pointer */
- __P((int *, int *, int, long));
-};
-
-/*
- * Flag definitions for the RM switch
- */
-#define TMNOFLAGS 0x00000000L /* no resource manager features
- selected */
-#define TMREGISTER 0x00000001L /* resource manager dynamically
- registers */
-#define TMNOMIGRATE 0x00000002L /* resource manager does not support
- association migration */
-#define TMUSEASYNC 0x00000004L /* resource manager supports
- asynchronous operations */
-/*
- * Flag definitions for xa_ and ax_ routines
- */
-/* use TMNOFLAGGS, defined above, when not specifying other flags */
-#define TMASYNC 0x80000000L /* perform routine asynchronously */
-#define TMONEPHASE 0x40000000L /* caller is using one-phase commit
- optimisation */
-#define TMFAIL 0x20000000L /* dissociates caller and marks
- transaction branch rollback-only */
-#define TMNOWAIT 0x10000000L /* return if blocking condition
- exists */
-#define TMRESUME 0x08000000L /* caller is resuming association with
- suspended transaction branch */
-#define TMSUCCESS 0x04000000L /* dissociate caller from transaction
- branch */
-#define TMSUSPEND 0x02000000L /* caller is suspending, not ending,
- association */
-#define TMSTARTRSCAN 0x01000000L /* start a recovery scan */
-#define TMENDRSCAN 0x00800000L /* end a recovery scan */
-#define TMMULTIPLE 0x00400000L /* wait for any asynchronous
- operation */
-#define TMJOIN 0x00200000L /* caller is joining existing
- transaction branch */
-#define TMMIGRATE 0x00100000L /* caller intends to perform
- migration */
-
-/*
- * ax_() return codes (transaction manager reports to resource manager)
- */
-#define TM_JOIN 2 /* caller is joining existing
- transaction branch */
-#define TM_RESUME 1 /* caller is resuming association with
- suspended transaction branch */
-#define TM_OK 0 /* normal execution */
-#define TMER_TMERR -1 /* an error occurred in the transaction
- manager */
-#define TMER_INVAL -2 /* invalid arguments were given */
-#define TMER_PROTO -3 /* routine invoked in an improper
- context */
-
-/*
- * xa_() return codes (resource manager reports to transaction manager)
- */
-#define XA_RBBASE 100 /* The inclusive lower bound of the
- rollback codes */
-#define XA_RBROLLBACK XA_RBBASE /* The rollback was caused by an
- unspecified reason */
-#define XA_RBCOMMFAIL XA_RBBASE+1 /* The rollback was caused by a
- communication failure */
-#define XA_RBDEADLOCK XA_RBBASE+2 /* A deadlock was detected */
-#define XA_RBINTEGRITY XA_RBBASE+3 /* A condition that violates the
- integrity of the resources was
- detected */
-#define XA_RBOTHER XA_RBBASE+4 /* The resource manager rolled back the
- transaction branch for a reason not
- on this list */
-#define XA_RBPROTO XA_RBBASE+5 /* A protocol error occurred in the
- resource manager */
-#define XA_RBTIMEOUT XA_RBBASE+6 /* A transaction branch took too long */
-#define XA_RBTRANSIENT XA_RBBASE+7 /* May retry the transaction branch */
-#define XA_RBEND XA_RBTRANSIENT /* The inclusive upper bound of the
- rollback codes */
-#define XA_NOMIGRATE 9 /* resumption must occur where
- suspension occurred */
-#define XA_HEURHAZ 8 /* the transaction branch may have
- been heuristically completed */
-#define XA_HEURCOM 7 /* the transaction branch has been
- heuristically committed */
-#define XA_HEURRB 6 /* the transaction branch has been
- heuristically rolled back */
-#define XA_HEURMIX 5 /* the transaction branch has been
- heuristically committed and rolled
- back */
-#define XA_RETRY 4 /* routine returned with no effect and
- may be re-issued */
-#define XA_RDONLY 3 /* the transaction branch was read-only
- and has been committed */
-#define XA_OK 0 /* normal execution */
-#define XAER_ASYNC -2 /* asynchronous operation already
- outstanding */
-#define XAER_RMERR -3 /* a resource manager error occurred in
- the transaction branch */
-#define XAER_NOTA -4 /* the XID is not valid */
-#define XAER_INVAL -5 /* invalid arguments were given */
-#define XAER_PROTO -6 /* routine invoked in an improper
- context */
-#define XAER_RMFAIL -7 /* resource manager unavailable */
-#define XAER_DUPID -8 /* the XID already exists */
-#define XAER_OUTSIDE -9 /* resource manager doing work outside
- transaction */
-#endif /* ifndef XA_H */
-/*
- * End of xa.h header
- */
diff --git a/db/include/xa_ext.h b/db/include/xa_ext.h
deleted file mode 100644
index cc16ba183..000000000
--- a/db/include/xa_ext.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_include. */
-#ifndef _xa_ext_h_
-#define _xa_ext_h_
-#if defined(__cplusplus)
-extern "C" {
-#endif
-int __db_xa_create __P((DB *));
-int __db_rmid_to_env __P((int rmid, DB_ENV **envp));
-int __db_xid_to_txn __P((DB_ENV *, XID *, size_t *));
-int __db_map_rmid __P((int, DB_ENV *));
-int __db_unmap_rmid __P((int));
-int __db_map_xid __P((DB_ENV *, XID *, size_t));
-void __db_unmap_xid __P((DB_ENV *, XID *, size_t));
-#if defined(__cplusplus)
-}
-#endif
-#endif /* _xa_ext_h_ */
diff --git a/db/include_auto/btree_auto.h b/db/include_auto/btree_auto.h
deleted file mode 100644
index 6816cc03f..000000000
--- a/db/include_auto/btree_auto.h
+++ /dev/null
@@ -1,209 +0,0 @@
-/* Do not edit: automatically built by gen_rec.awk. */
-
-#ifndef bam_AUTO_H
-#define bam_AUTO_H
-#define DB_bam_pg_alloc 51
-typedef struct _bam_pg_alloc_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- DB_LSN meta_lsn;
- DB_LSN page_lsn;
- db_pgno_t pgno;
- u_int32_t ptype;
- db_pgno_t next;
-} __bam_pg_alloc_args;
-
-#define DB_bam_pg_alloc1 60
-typedef struct _bam_pg_alloc1_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- DB_LSN meta_lsn;
- DB_LSN alloc_lsn;
- DB_LSN page_lsn;
- db_pgno_t pgno;
- u_int32_t ptype;
- db_pgno_t next;
-} __bam_pg_alloc1_args;
-
-#define DB_bam_pg_free 52
-typedef struct _bam_pg_free_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- db_pgno_t pgno;
- DB_LSN meta_lsn;
- DBT header;
- db_pgno_t next;
-} __bam_pg_free_args;
-
-#define DB_bam_pg_free1 61
-typedef struct _bam_pg_free1_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- db_pgno_t pgno;
- DB_LSN meta_lsn;
- DB_LSN alloc_lsn;
- DBT header;
- db_pgno_t next;
-} __bam_pg_free1_args;
-
-#define DB_bam_split1 53
-typedef struct _bam_split1_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- db_pgno_t left;
- DB_LSN llsn;
- db_pgno_t right;
- DB_LSN rlsn;
- u_int32_t indx;
- db_pgno_t npgno;
- DB_LSN nlsn;
- DBT pg;
-} __bam_split1_args;
-
-#define DB_bam_split 62
-typedef struct _bam_split_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- db_pgno_t left;
- DB_LSN llsn;
- db_pgno_t right;
- DB_LSN rlsn;
- u_int32_t indx;
- db_pgno_t npgno;
- DB_LSN nlsn;
- db_pgno_t root_pgno;
- DBT pg;
- u_int32_t opflags;
-} __bam_split_args;
-
-#define DB_bam_rsplit1 54
-typedef struct _bam_rsplit1_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- db_pgno_t pgno;
- DBT pgdbt;
- db_pgno_t nrec;
- DBT rootent;
- DB_LSN rootlsn;
-} __bam_rsplit1_args;
-
-#define DB_bam_rsplit 63
-typedef struct _bam_rsplit_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- db_pgno_t pgno;
- DBT pgdbt;
- db_pgno_t root_pgno;
- db_pgno_t nrec;
- DBT rootent;
- DB_LSN rootlsn;
-} __bam_rsplit_args;
-
-#define DB_bam_adj 55
-typedef struct _bam_adj_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- db_pgno_t pgno;
- DB_LSN lsn;
- u_int32_t indx;
- u_int32_t indx_copy;
- u_int32_t is_insert;
-} __bam_adj_args;
-
-#define DB_bam_cadjust 56
-typedef struct _bam_cadjust_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- db_pgno_t pgno;
- DB_LSN lsn;
- u_int32_t indx;
- int32_t adjust;
- u_int32_t opflags;
-} __bam_cadjust_args;
-
-#define DB_bam_cdel 57
-typedef struct _bam_cdel_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- db_pgno_t pgno;
- DB_LSN lsn;
- u_int32_t indx;
-} __bam_cdel_args;
-
-#define DB_bam_repl 58
-typedef struct _bam_repl_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- db_pgno_t pgno;
- DB_LSN lsn;
- u_int32_t indx;
- u_int32_t isdeleted;
- DBT orig;
- DBT repl;
- u_int32_t prefix;
- u_int32_t suffix;
-} __bam_repl_args;
-
-#define DB_bam_root 59
-typedef struct _bam_root_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- db_pgno_t meta_pgno;
- db_pgno_t root_pgno;
- DB_LSN meta_lsn;
-} __bam_root_args;
-
-#define DB_bam_curadj 64
-typedef struct _bam_curadj_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- db_ca_mode mode;
- db_pgno_t from_pgno;
- db_pgno_t to_pgno;
- db_pgno_t left_pgno;
- u_int32_t first_indx;
- u_int32_t from_indx;
- u_int32_t to_indx;
-} __bam_curadj_args;
-
-#define DB_bam_rcuradj 65
-typedef struct _bam_rcuradj_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- ca_recno_arg mode;
- db_pgno_t root;
- db_recno_t recno;
- u_int32_t order;
-} __bam_rcuradj_args;
-
-#endif
diff --git a/db/include_auto/btree_ext.h b/db/include_auto/btree_ext.h
deleted file mode 100644
index 4be50d495..000000000
--- a/db/include_auto/btree_ext.h
+++ /dev/null
@@ -1,133 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_include. */
-#ifndef _btree_ext_h_
-#define _btree_ext_h_
-#if defined(__cplusplus)
-extern "C" {
-#endif
-int __bam_cmp __P((DB *, const DBT *, PAGE *, u_int32_t, int (*)(DB *, const DBT *, const DBT *), int *));
-int __bam_defcmp __P((DB *, const DBT *, const DBT *));
-size_t __bam_defpfx __P((DB *, const DBT *, const DBT *));
-int __bam_pgin __P((DB_ENV *, db_pgno_t, void *, DBT *));
-int __bam_pgout __P((DB_ENV *, db_pgno_t, void *, DBT *));
-int __bam_mswap __P((PAGE *));
-void __bam_cprint __P((DBC *));
-int __bam_ca_delete __P((DB *, db_pgno_t, u_int32_t, int));
-int __ram_ca_delete __P((DB *, db_pgno_t));
-int __bam_ca_di __P((DBC *, db_pgno_t, u_int32_t, int));
-int __bam_ca_dup __P((DBC *, u_int32_t, db_pgno_t, u_int32_t, db_pgno_t, u_int32_t));
-int __bam_ca_undodup __P((DB *, u_int32_t, db_pgno_t, u_int32_t, u_int32_t));
-int __bam_ca_rsplit __P((DBC *, db_pgno_t, db_pgno_t));
-int __bam_ca_split __P((DBC *, db_pgno_t, db_pgno_t, db_pgno_t, u_int32_t, int));
-void __bam_ca_undosplit __P((DB *, db_pgno_t, db_pgno_t, db_pgno_t, u_int32_t));
-int __bam_c_init __P((DBC *, DBTYPE));
-int __bam_c_refresh __P((DBC *));
-int __bam_c_count __P((DBC *, db_recno_t *));
-int __bam_c_dup __P((DBC *, DBC *));
-int __bam_bulk_overflow __P((DBC *, u_int32_t, db_pgno_t, u_int8_t *));
-int __bam_bulk_duplicates __P((DBC *, db_pgno_t, u_int8_t *, int32_t *, int32_t **, u_int8_t **, u_int32_t *, int));
-int __bam_c_rget __P((DBC *, DBT *));
-int __bam_ditem __P((DBC *, PAGE *, u_int32_t));
-int __bam_adjindx __P((DBC *, PAGE *, u_int32_t, u_int32_t, int));
-int __bam_dpages __P((DBC *, EPG *));
-int __bam_db_create __P((DB *));
-int __bam_db_close __P((DB *));
-int __bam_set_flags __P((DB *, u_int32_t *flagsp));
-int __ram_set_flags __P((DB *, u_int32_t *flagsp));
-int __bam_open __P((DB *, const char *, db_pgno_t, u_int32_t));
-int __bam_metachk __P((DB *, const char *, BTMETA *));
-int __bam_read_root __P((DB *, const char *, db_pgno_t, u_int32_t));
-int __bam_iitem __P((DBC *, DBT *, DBT *, u_int32_t, u_int32_t));
-int __bam_ritem __P((DBC *, PAGE *, u_int32_t, DBT *));
-int __bam_pg_alloc_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __bam_pg_free_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __bam_split_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __bam_rsplit_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __bam_adj_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __bam_cadjust_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __bam_cdel_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __bam_repl_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __bam_root_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __bam_curadj_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __bam_rcuradj_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __bam_reclaim __P((DB *, DB_TXN *));
-int __bam_truncate __P((DB *, DB_TXN *, u_int32_t *));
-int __ram_open __P((DB *, const char *, db_pgno_t, u_int32_t));
-int __ram_append __P((DBC *, DBT *, DBT *));
-int __ram_c_del __P((DBC *));
-int __ram_c_get __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *));
-int __ram_c_put __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *));
-int __ram_ca __P((DBC *, ca_recno_arg));
-int __ram_getno __P((DBC *, const DBT *, db_recno_t *, int));
-int __ram_writeback __P((DB *));
-int __bam_rsearch __P((DBC *, db_recno_t *, u_int32_t, int, int *));
-int __bam_adjust __P((DBC *, int32_t));
-int __bam_nrecs __P((DBC *, db_recno_t *));
-db_recno_t __bam_total __P((PAGE *));
-int __bam_search __P((DBC *, db_pgno_t, const DBT *, u_int32_t, int, db_recno_t *, int *));
-int __bam_stkrel __P((DBC *, u_int32_t));
-int __bam_stkgrow __P((DB_ENV *, BTREE_CURSOR *));
-int __bam_split __P((DBC *, void *, db_pgno_t *));
-int __bam_copy __P((DB *, PAGE *, PAGE *, u_int32_t, u_int32_t));
-int __bam_stat __P((DB *, void *, u_int32_t));
-int __bam_traverse __P((DBC *, db_lockmode_t, db_pgno_t, int (*)(DB *, PAGE *, void *, int *), void *));
-int __bam_stat_callback __P((DB *, PAGE *, void *, int *));
-int __bam_key_range __P((DB *, DB_TXN *, DBT *, DB_KEY_RANGE *, u_int32_t));
-int __bam_30_btreemeta __P((DB *, char *, u_int8_t *));
-int __bam_31_btreemeta __P((DB *, char *, u_int32_t, DB_FH *, PAGE *, int *));
-int __bam_31_lbtree __P((DB *, char *, u_int32_t, DB_FH *, PAGE *, int *));
-int __bam_vrfy_meta __P((DB *, VRFY_DBINFO *, BTMETA *, db_pgno_t, u_int32_t));
-int __ram_vrfy_leaf __P((DB *, VRFY_DBINFO *, PAGE *, db_pgno_t, u_int32_t));
-int __bam_vrfy __P((DB *, VRFY_DBINFO *, PAGE *, db_pgno_t, u_int32_t));
-int __bam_vrfy_itemorder __P((DB *, VRFY_DBINFO *, PAGE *, db_pgno_t, u_int32_t, int, int, u_int32_t));
-int __bam_vrfy_structure __P((DB *, VRFY_DBINFO *, db_pgno_t, u_int32_t));
-int __bam_vrfy_subtree __P((DB *, VRFY_DBINFO *, db_pgno_t, void *, void *, u_int32_t, u_int32_t *, u_int32_t *, u_int32_t *));
-int __bam_salvage __P((DB *, VRFY_DBINFO *, db_pgno_t, u_int32_t, PAGE *, void *, int (*)(void *, const void *), DBT *, u_int32_t));
-int __bam_salvage_walkdupint __P((DB *, VRFY_DBINFO *, PAGE *, DBT *, void *, int (*)(void *, const void *), u_int32_t));
-int __bam_meta2pgset __P((DB *, VRFY_DBINFO *, BTMETA *, u_int32_t, DB *));
-int __bam_pg_alloc_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, DB_LSN *, DB_LSN *, db_pgno_t, u_int32_t, db_pgno_t));
-int __bam_pg_alloc_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __bam_pg_alloc_read __P((DB_ENV *, void *, __bam_pg_alloc_args **));
-int __bam_pg_alloc1_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __bam_pg_alloc1_read __P((DB_ENV *, void *, __bam_pg_alloc1_args **));
-int __bam_pg_free_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, DB_LSN *, const DBT *, db_pgno_t));
-int __bam_pg_free_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __bam_pg_free_read __P((DB_ENV *, void *, __bam_pg_free_args **));
-int __bam_pg_free1_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __bam_pg_free1_read __P((DB_ENV *, void *, __bam_pg_free1_args **));
-int __bam_split1_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __bam_split1_read __P((DB_ENV *, void *, __bam_split1_args **));
-int __bam_split_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, DB_LSN *, db_pgno_t, DB_LSN *, u_int32_t, db_pgno_t, DB_LSN *, db_pgno_t, const DBT *, u_int32_t));
-int __bam_split_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __bam_split_read __P((DB_ENV *, void *, __bam_split_args **));
-int __bam_rsplit1_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __bam_rsplit1_read __P((DB_ENV *, void *, __bam_rsplit1_args **));
-int __bam_rsplit_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, const DBT *, db_pgno_t, db_pgno_t, const DBT *, DB_LSN *));
-int __bam_rsplit_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __bam_rsplit_read __P((DB_ENV *, void *, __bam_rsplit_args **));
-int __bam_adj_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, DB_LSN *, u_int32_t, u_int32_t, u_int32_t));
-int __bam_adj_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __bam_adj_read __P((DB_ENV *, void *, __bam_adj_args **));
-int __bam_cadjust_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, DB_LSN *, u_int32_t, int32_t, u_int32_t));
-int __bam_cadjust_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __bam_cadjust_read __P((DB_ENV *, void *, __bam_cadjust_args **));
-int __bam_cdel_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, DB_LSN *, u_int32_t));
-int __bam_cdel_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __bam_cdel_read __P((DB_ENV *, void *, __bam_cdel_args **));
-int __bam_repl_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, DB_LSN *, u_int32_t, u_int32_t, const DBT *, const DBT *, u_int32_t, u_int32_t));
-int __bam_repl_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __bam_repl_read __P((DB_ENV *, void *, __bam_repl_args **));
-int __bam_root_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, db_pgno_t, DB_LSN *));
-int __bam_root_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __bam_root_read __P((DB_ENV *, void *, __bam_root_args **));
-int __bam_curadj_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_ca_mode, db_pgno_t, db_pgno_t, db_pgno_t, u_int32_t, u_int32_t, u_int32_t));
-int __bam_curadj_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __bam_curadj_read __P((DB_ENV *, void *, __bam_curadj_args **));
-int __bam_rcuradj_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, ca_recno_arg, db_pgno_t, db_recno_t, u_int32_t));
-int __bam_rcuradj_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __bam_rcuradj_read __P((DB_ENV *, void *, __bam_rcuradj_args **));
-int __bam_init_print __P((DB_ENV *));
-int __bam_init_recover __P((DB_ENV *));
-#if defined(__cplusplus)
-}
-#endif
-#endif /* _btree_ext_h_ */
diff --git a/db/include_auto/btree_ext.in b/db/include_auto/btree_ext.in
deleted file mode 100644
index ba19afa03..000000000
--- a/db/include_auto/btree_ext.in
+++ /dev/null
@@ -1,256 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_include. */
-#ifndef _btree_ext_h_
-#define _btree_ext_h_
-#if defined(__cplusplus)
-extern "C" {
-#endif
-#define __bam_cmp __bam_cmp@DB_VERSION_UNIQUE_NAME@
-int __bam_cmp __P((DB *, const DBT *, PAGE *, u_int32_t, int (*)(DB *, const DBT *, const DBT *), int *));
-#define __bam_defcmp __bam_defcmp@DB_VERSION_UNIQUE_NAME@
-int __bam_defcmp __P((DB *, const DBT *, const DBT *));
-#define __bam_defpfx __bam_defpfx@DB_VERSION_UNIQUE_NAME@
-size_t __bam_defpfx __P((DB *, const DBT *, const DBT *));
-#define __bam_pgin __bam_pgin@DB_VERSION_UNIQUE_NAME@
-int __bam_pgin __P((DB_ENV *, db_pgno_t, void *, DBT *));
-#define __bam_pgout __bam_pgout@DB_VERSION_UNIQUE_NAME@
-int __bam_pgout __P((DB_ENV *, db_pgno_t, void *, DBT *));
-#define __bam_mswap __bam_mswap@DB_VERSION_UNIQUE_NAME@
-int __bam_mswap __P((PAGE *));
-#define __bam_cprint __bam_cprint@DB_VERSION_UNIQUE_NAME@
-void __bam_cprint __P((DBC *));
-#define __bam_ca_delete __bam_ca_delete@DB_VERSION_UNIQUE_NAME@
-int __bam_ca_delete __P((DB *, db_pgno_t, u_int32_t, int));
-#define __ram_ca_delete __ram_ca_delete@DB_VERSION_UNIQUE_NAME@
-int __ram_ca_delete __P((DB *, db_pgno_t));
-#define __bam_ca_di __bam_ca_di@DB_VERSION_UNIQUE_NAME@
-int __bam_ca_di __P((DBC *, db_pgno_t, u_int32_t, int));
-#define __bam_ca_dup __bam_ca_dup@DB_VERSION_UNIQUE_NAME@
-int __bam_ca_dup __P((DBC *, u_int32_t, db_pgno_t, u_int32_t, db_pgno_t, u_int32_t));
-#define __bam_ca_undodup __bam_ca_undodup@DB_VERSION_UNIQUE_NAME@
-int __bam_ca_undodup __P((DB *, u_int32_t, db_pgno_t, u_int32_t, u_int32_t));
-#define __bam_ca_rsplit __bam_ca_rsplit@DB_VERSION_UNIQUE_NAME@
-int __bam_ca_rsplit __P((DBC *, db_pgno_t, db_pgno_t));
-#define __bam_ca_split __bam_ca_split@DB_VERSION_UNIQUE_NAME@
-int __bam_ca_split __P((DBC *, db_pgno_t, db_pgno_t, db_pgno_t, u_int32_t, int));
-#define __bam_ca_undosplit __bam_ca_undosplit@DB_VERSION_UNIQUE_NAME@
-void __bam_ca_undosplit __P((DB *, db_pgno_t, db_pgno_t, db_pgno_t, u_int32_t));
-#define __bam_c_init __bam_c_init@DB_VERSION_UNIQUE_NAME@
-int __bam_c_init __P((DBC *, DBTYPE));
-#define __bam_c_refresh __bam_c_refresh@DB_VERSION_UNIQUE_NAME@
-int __bam_c_refresh __P((DBC *));
-#define __bam_c_count __bam_c_count@DB_VERSION_UNIQUE_NAME@
-int __bam_c_count __P((DBC *, db_recno_t *));
-#define __bam_c_dup __bam_c_dup@DB_VERSION_UNIQUE_NAME@
-int __bam_c_dup __P((DBC *, DBC *));
-#define __bam_bulk_overflow __bam_bulk_overflow@DB_VERSION_UNIQUE_NAME@
-int __bam_bulk_overflow __P((DBC *, u_int32_t, db_pgno_t, u_int8_t *));
-#define __bam_bulk_duplicates __bam_bulk_duplicates@DB_VERSION_UNIQUE_NAME@
-int __bam_bulk_duplicates __P((DBC *, db_pgno_t, u_int8_t *, int32_t *, int32_t **, u_int8_t **, u_int32_t *, int));
-#define __bam_c_rget __bam_c_rget@DB_VERSION_UNIQUE_NAME@
-int __bam_c_rget __P((DBC *, DBT *));
-#define __bam_ditem __bam_ditem@DB_VERSION_UNIQUE_NAME@
-int __bam_ditem __P((DBC *, PAGE *, u_int32_t));
-#define __bam_adjindx __bam_adjindx@DB_VERSION_UNIQUE_NAME@
-int __bam_adjindx __P((DBC *, PAGE *, u_int32_t, u_int32_t, int));
-#define __bam_dpages __bam_dpages@DB_VERSION_UNIQUE_NAME@
-int __bam_dpages __P((DBC *, EPG *));
-#define __bam_db_create __bam_db_create@DB_VERSION_UNIQUE_NAME@
-int __bam_db_create __P((DB *));
-#define __bam_db_close __bam_db_close@DB_VERSION_UNIQUE_NAME@
-int __bam_db_close __P((DB *));
-#define __bam_set_flags __bam_set_flags@DB_VERSION_UNIQUE_NAME@
-int __bam_set_flags __P((DB *, u_int32_t *flagsp));
-#define __ram_set_flags __ram_set_flags@DB_VERSION_UNIQUE_NAME@
-int __ram_set_flags __P((DB *, u_int32_t *flagsp));
-#define __bam_open __bam_open@DB_VERSION_UNIQUE_NAME@
-int __bam_open __P((DB *, const char *, db_pgno_t, u_int32_t));
-#define __bam_metachk __bam_metachk@DB_VERSION_UNIQUE_NAME@
-int __bam_metachk __P((DB *, const char *, BTMETA *));
-#define __bam_read_root __bam_read_root@DB_VERSION_UNIQUE_NAME@
-int __bam_read_root __P((DB *, const char *, db_pgno_t, u_int32_t));
-#define __bam_iitem __bam_iitem@DB_VERSION_UNIQUE_NAME@
-int __bam_iitem __P((DBC *, DBT *, DBT *, u_int32_t, u_int32_t));
-#define __bam_ritem __bam_ritem@DB_VERSION_UNIQUE_NAME@
-int __bam_ritem __P((DBC *, PAGE *, u_int32_t, DBT *));
-#define __bam_pg_alloc_recover __bam_pg_alloc_recover@DB_VERSION_UNIQUE_NAME@
-int __bam_pg_alloc_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __bam_pg_free_recover __bam_pg_free_recover@DB_VERSION_UNIQUE_NAME@
-int __bam_pg_free_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __bam_split_recover __bam_split_recover@DB_VERSION_UNIQUE_NAME@
-int __bam_split_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __bam_rsplit_recover __bam_rsplit_recover@DB_VERSION_UNIQUE_NAME@
-int __bam_rsplit_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __bam_adj_recover __bam_adj_recover@DB_VERSION_UNIQUE_NAME@
-int __bam_adj_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __bam_cadjust_recover __bam_cadjust_recover@DB_VERSION_UNIQUE_NAME@
-int __bam_cadjust_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __bam_cdel_recover __bam_cdel_recover@DB_VERSION_UNIQUE_NAME@
-int __bam_cdel_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __bam_repl_recover __bam_repl_recover@DB_VERSION_UNIQUE_NAME@
-int __bam_repl_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __bam_root_recover __bam_root_recover@DB_VERSION_UNIQUE_NAME@
-int __bam_root_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __bam_curadj_recover __bam_curadj_recover@DB_VERSION_UNIQUE_NAME@
-int __bam_curadj_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __bam_rcuradj_recover __bam_rcuradj_recover@DB_VERSION_UNIQUE_NAME@
-int __bam_rcuradj_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __bam_reclaim __bam_reclaim@DB_VERSION_UNIQUE_NAME@
-int __bam_reclaim __P((DB *, DB_TXN *));
-#define __bam_truncate __bam_truncate@DB_VERSION_UNIQUE_NAME@
-int __bam_truncate __P((DB *, DB_TXN *, u_int32_t *));
-#define __ram_open __ram_open@DB_VERSION_UNIQUE_NAME@
-int __ram_open __P((DB *, const char *, db_pgno_t, u_int32_t));
-#define __ram_append __ram_append@DB_VERSION_UNIQUE_NAME@
-int __ram_append __P((DBC *, DBT *, DBT *));
-#define __ram_c_del __ram_c_del@DB_VERSION_UNIQUE_NAME@
-int __ram_c_del __P((DBC *));
-#define __ram_c_get __ram_c_get@DB_VERSION_UNIQUE_NAME@
-int __ram_c_get __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *));
-#define __ram_c_put __ram_c_put@DB_VERSION_UNIQUE_NAME@
-int __ram_c_put __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *));
-#define __ram_ca __ram_ca@DB_VERSION_UNIQUE_NAME@
-int __ram_ca __P((DBC *, ca_recno_arg));
-#define __ram_getno __ram_getno@DB_VERSION_UNIQUE_NAME@
-int __ram_getno __P((DBC *, const DBT *, db_recno_t *, int));
-#define __ram_writeback __ram_writeback@DB_VERSION_UNIQUE_NAME@
-int __ram_writeback __P((DB *));
-#define __bam_rsearch __bam_rsearch@DB_VERSION_UNIQUE_NAME@
-int __bam_rsearch __P((DBC *, db_recno_t *, u_int32_t, int, int *));
-#define __bam_adjust __bam_adjust@DB_VERSION_UNIQUE_NAME@
-int __bam_adjust __P((DBC *, int32_t));
-#define __bam_nrecs __bam_nrecs@DB_VERSION_UNIQUE_NAME@
-int __bam_nrecs __P((DBC *, db_recno_t *));
-#define __bam_total __bam_total@DB_VERSION_UNIQUE_NAME@
-db_recno_t __bam_total __P((PAGE *));
-#define __bam_search __bam_search@DB_VERSION_UNIQUE_NAME@
-int __bam_search __P((DBC *, db_pgno_t, const DBT *, u_int32_t, int, db_recno_t *, int *));
-#define __bam_stkrel __bam_stkrel@DB_VERSION_UNIQUE_NAME@
-int __bam_stkrel __P((DBC *, u_int32_t));
-#define __bam_stkgrow __bam_stkgrow@DB_VERSION_UNIQUE_NAME@
-int __bam_stkgrow __P((DB_ENV *, BTREE_CURSOR *));
-#define __bam_split __bam_split@DB_VERSION_UNIQUE_NAME@
-int __bam_split __P((DBC *, void *, db_pgno_t *));
-#define __bam_copy __bam_copy@DB_VERSION_UNIQUE_NAME@
-int __bam_copy __P((DB *, PAGE *, PAGE *, u_int32_t, u_int32_t));
-#define __bam_stat __bam_stat@DB_VERSION_UNIQUE_NAME@
-int __bam_stat __P((DB *, void *, u_int32_t));
-#define __bam_traverse __bam_traverse@DB_VERSION_UNIQUE_NAME@
-int __bam_traverse __P((DBC *, db_lockmode_t, db_pgno_t, int (*)(DB *, PAGE *, void *, int *), void *));
-#define __bam_stat_callback __bam_stat_callback@DB_VERSION_UNIQUE_NAME@
-int __bam_stat_callback __P((DB *, PAGE *, void *, int *));
-#define __bam_key_range __bam_key_range@DB_VERSION_UNIQUE_NAME@
-int __bam_key_range __P((DB *, DB_TXN *, DBT *, DB_KEY_RANGE *, u_int32_t));
-#define __bam_30_btreemeta __bam_30_btreemeta@DB_VERSION_UNIQUE_NAME@
-int __bam_30_btreemeta __P((DB *, char *, u_int8_t *));
-#define __bam_31_btreemeta __bam_31_btreemeta@DB_VERSION_UNIQUE_NAME@
-int __bam_31_btreemeta __P((DB *, char *, u_int32_t, DB_FH *, PAGE *, int *));
-#define __bam_31_lbtree __bam_31_lbtree@DB_VERSION_UNIQUE_NAME@
-int __bam_31_lbtree __P((DB *, char *, u_int32_t, DB_FH *, PAGE *, int *));
-#define __bam_vrfy_meta __bam_vrfy_meta@DB_VERSION_UNIQUE_NAME@
-int __bam_vrfy_meta __P((DB *, VRFY_DBINFO *, BTMETA *, db_pgno_t, u_int32_t));
-#define __ram_vrfy_leaf __ram_vrfy_leaf@DB_VERSION_UNIQUE_NAME@
-int __ram_vrfy_leaf __P((DB *, VRFY_DBINFO *, PAGE *, db_pgno_t, u_int32_t));
-#define __bam_vrfy __bam_vrfy@DB_VERSION_UNIQUE_NAME@
-int __bam_vrfy __P((DB *, VRFY_DBINFO *, PAGE *, db_pgno_t, u_int32_t));
-#define __bam_vrfy_itemorder __bam_vrfy_itemorder@DB_VERSION_UNIQUE_NAME@
-int __bam_vrfy_itemorder __P((DB *, VRFY_DBINFO *, PAGE *, db_pgno_t, u_int32_t, int, int, u_int32_t));
-#define __bam_vrfy_structure __bam_vrfy_structure@DB_VERSION_UNIQUE_NAME@
-int __bam_vrfy_structure __P((DB *, VRFY_DBINFO *, db_pgno_t, u_int32_t));
-#define __bam_vrfy_subtree __bam_vrfy_subtree@DB_VERSION_UNIQUE_NAME@
-int __bam_vrfy_subtree __P((DB *, VRFY_DBINFO *, db_pgno_t, void *, void *, u_int32_t, u_int32_t *, u_int32_t *, u_int32_t *));
-#define __bam_salvage __bam_salvage@DB_VERSION_UNIQUE_NAME@
-int __bam_salvage __P((DB *, VRFY_DBINFO *, db_pgno_t, u_int32_t, PAGE *, void *, int (*)(void *, const void *), DBT *, u_int32_t));
-#define __bam_salvage_walkdupint __bam_salvage_walkdupint@DB_VERSION_UNIQUE_NAME@
-int __bam_salvage_walkdupint __P((DB *, VRFY_DBINFO *, PAGE *, DBT *, void *, int (*)(void *, const void *), u_int32_t));
-#define __bam_meta2pgset __bam_meta2pgset@DB_VERSION_UNIQUE_NAME@
-int __bam_meta2pgset __P((DB *, VRFY_DBINFO *, BTMETA *, u_int32_t, DB *));
-#define __bam_pg_alloc_log __bam_pg_alloc_log@DB_VERSION_UNIQUE_NAME@
-int __bam_pg_alloc_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, DB_LSN *, DB_LSN *, db_pgno_t, u_int32_t, db_pgno_t));
-#define __bam_pg_alloc_print __bam_pg_alloc_print@DB_VERSION_UNIQUE_NAME@
-int __bam_pg_alloc_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __bam_pg_alloc_read __bam_pg_alloc_read@DB_VERSION_UNIQUE_NAME@
-int __bam_pg_alloc_read __P((DB_ENV *, void *, __bam_pg_alloc_args **));
-#define __bam_pg_alloc1_print __bam_pg_alloc1_print@DB_VERSION_UNIQUE_NAME@
-int __bam_pg_alloc1_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __bam_pg_alloc1_read __bam_pg_alloc1_read@DB_VERSION_UNIQUE_NAME@
-int __bam_pg_alloc1_read __P((DB_ENV *, void *, __bam_pg_alloc1_args **));
-#define __bam_pg_free_log __bam_pg_free_log@DB_VERSION_UNIQUE_NAME@
-int __bam_pg_free_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, DB_LSN *, const DBT *, db_pgno_t));
-#define __bam_pg_free_print __bam_pg_free_print@DB_VERSION_UNIQUE_NAME@
-int __bam_pg_free_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __bam_pg_free_read __bam_pg_free_read@DB_VERSION_UNIQUE_NAME@
-int __bam_pg_free_read __P((DB_ENV *, void *, __bam_pg_free_args **));
-#define __bam_pg_free1_print __bam_pg_free1_print@DB_VERSION_UNIQUE_NAME@
-int __bam_pg_free1_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __bam_pg_free1_read __bam_pg_free1_read@DB_VERSION_UNIQUE_NAME@
-int __bam_pg_free1_read __P((DB_ENV *, void *, __bam_pg_free1_args **));
-#define __bam_split1_print __bam_split1_print@DB_VERSION_UNIQUE_NAME@
-int __bam_split1_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __bam_split1_read __bam_split1_read@DB_VERSION_UNIQUE_NAME@
-int __bam_split1_read __P((DB_ENV *, void *, __bam_split1_args **));
-#define __bam_split_log __bam_split_log@DB_VERSION_UNIQUE_NAME@
-int __bam_split_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, DB_LSN *, db_pgno_t, DB_LSN *, u_int32_t, db_pgno_t, DB_LSN *, db_pgno_t, const DBT *, u_int32_t));
-#define __bam_split_print __bam_split_print@DB_VERSION_UNIQUE_NAME@
-int __bam_split_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __bam_split_read __bam_split_read@DB_VERSION_UNIQUE_NAME@
-int __bam_split_read __P((DB_ENV *, void *, __bam_split_args **));
-#define __bam_rsplit1_print __bam_rsplit1_print@DB_VERSION_UNIQUE_NAME@
-int __bam_rsplit1_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __bam_rsplit1_read __bam_rsplit1_read@DB_VERSION_UNIQUE_NAME@
-int __bam_rsplit1_read __P((DB_ENV *, void *, __bam_rsplit1_args **));
-#define __bam_rsplit_log __bam_rsplit_log@DB_VERSION_UNIQUE_NAME@
-int __bam_rsplit_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, const DBT *, db_pgno_t, db_pgno_t, const DBT *, DB_LSN *));
-#define __bam_rsplit_print __bam_rsplit_print@DB_VERSION_UNIQUE_NAME@
-int __bam_rsplit_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __bam_rsplit_read __bam_rsplit_read@DB_VERSION_UNIQUE_NAME@
-int __bam_rsplit_read __P((DB_ENV *, void *, __bam_rsplit_args **));
-#define __bam_adj_log __bam_adj_log@DB_VERSION_UNIQUE_NAME@
-int __bam_adj_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, DB_LSN *, u_int32_t, u_int32_t, u_int32_t));
-#define __bam_adj_print __bam_adj_print@DB_VERSION_UNIQUE_NAME@
-int __bam_adj_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __bam_adj_read __bam_adj_read@DB_VERSION_UNIQUE_NAME@
-int __bam_adj_read __P((DB_ENV *, void *, __bam_adj_args **));
-#define __bam_cadjust_log __bam_cadjust_log@DB_VERSION_UNIQUE_NAME@
-int __bam_cadjust_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, DB_LSN *, u_int32_t, int32_t, u_int32_t));
-#define __bam_cadjust_print __bam_cadjust_print@DB_VERSION_UNIQUE_NAME@
-int __bam_cadjust_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __bam_cadjust_read __bam_cadjust_read@DB_VERSION_UNIQUE_NAME@
-int __bam_cadjust_read __P((DB_ENV *, void *, __bam_cadjust_args **));
-#define __bam_cdel_log __bam_cdel_log@DB_VERSION_UNIQUE_NAME@
-int __bam_cdel_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, DB_LSN *, u_int32_t));
-#define __bam_cdel_print __bam_cdel_print@DB_VERSION_UNIQUE_NAME@
-int __bam_cdel_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __bam_cdel_read __bam_cdel_read@DB_VERSION_UNIQUE_NAME@
-int __bam_cdel_read __P((DB_ENV *, void *, __bam_cdel_args **));
-#define __bam_repl_log __bam_repl_log@DB_VERSION_UNIQUE_NAME@
-int __bam_repl_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, DB_LSN *, u_int32_t, u_int32_t, const DBT *, const DBT *, u_int32_t, u_int32_t));
-#define __bam_repl_print __bam_repl_print@DB_VERSION_UNIQUE_NAME@
-int __bam_repl_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __bam_repl_read __bam_repl_read@DB_VERSION_UNIQUE_NAME@
-int __bam_repl_read __P((DB_ENV *, void *, __bam_repl_args **));
-#define __bam_root_log __bam_root_log@DB_VERSION_UNIQUE_NAME@
-int __bam_root_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, db_pgno_t, DB_LSN *));
-#define __bam_root_print __bam_root_print@DB_VERSION_UNIQUE_NAME@
-int __bam_root_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __bam_root_read __bam_root_read@DB_VERSION_UNIQUE_NAME@
-int __bam_root_read __P((DB_ENV *, void *, __bam_root_args **));
-#define __bam_curadj_log __bam_curadj_log@DB_VERSION_UNIQUE_NAME@
-int __bam_curadj_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_ca_mode, db_pgno_t, db_pgno_t, db_pgno_t, u_int32_t, u_int32_t, u_int32_t));
-#define __bam_curadj_print __bam_curadj_print@DB_VERSION_UNIQUE_NAME@
-int __bam_curadj_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __bam_curadj_read __bam_curadj_read@DB_VERSION_UNIQUE_NAME@
-int __bam_curadj_read __P((DB_ENV *, void *, __bam_curadj_args **));
-#define __bam_rcuradj_log __bam_rcuradj_log@DB_VERSION_UNIQUE_NAME@
-int __bam_rcuradj_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, ca_recno_arg, db_pgno_t, db_recno_t, u_int32_t));
-#define __bam_rcuradj_print __bam_rcuradj_print@DB_VERSION_UNIQUE_NAME@
-int __bam_rcuradj_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __bam_rcuradj_read __bam_rcuradj_read@DB_VERSION_UNIQUE_NAME@
-int __bam_rcuradj_read __P((DB_ENV *, void *, __bam_rcuradj_args **));
-#define __bam_init_print __bam_init_print@DB_VERSION_UNIQUE_NAME@
-int __bam_init_print __P((DB_ENV *));
-#define __bam_init_recover __bam_init_recover@DB_VERSION_UNIQUE_NAME@
-int __bam_init_recover __P((DB_ENV *));
-#if defined(__cplusplus)
-}
-#endif
-#endif /* _btree_ext_h_ */
diff --git a/db/include_auto/clib_ext.h b/db/include_auto/clib_ext.h
deleted file mode 100644
index 1818ae49d..000000000
--- a/db/include_auto/clib_ext.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_include. */
-#ifndef _clib_ext_h_
-#define _clib_ext_h_
-#if defined(__cplusplus)
-extern "C" {
-#endif
-#ifndef HAVE_GETCWD
-char *getcwd __P((char *, size_t));
-#endif
-#ifndef HAVE_GETOPT
-int getopt __P((int, char * const *, const char *));
-#endif
-#ifndef HAVE_MEMCMP
-int memcmp __P((const void *, const void *, size_t));
-#endif
-#ifndef HAVE_MEMCPY
-void *memcpy __P((void *, const void *, size_t));
-#endif
-#ifndef HAVE_MEMMOVE
-void *memmove __P((void *, const void *, size_t));
-#endif
-#ifndef HAVE_RAISE
-int raise __P((int));
-#endif
-#ifndef HAVE_SNPRINTF
-int snprintf __P((char *, size_t, const char *, ...));
-#endif
-#ifndef HAVE_STRCASECMP
-int strcasecmp __P((const char *, const char *));
-#endif
-#ifndef HAVE_STRERROR
-char *strerror __P((int));
-#endif
-#ifndef HAVE_VSNPRINTF
-#endif
-#if defined(__cplusplus)
-}
-#endif
-#endif /* _clib_ext_h_ */
diff --git a/db/include_auto/clib_ext.in b/db/include_auto/clib_ext.in
deleted file mode 100644
index fbce4eda7..000000000
--- a/db/include_auto/clib_ext.in
+++ /dev/null
@@ -1,48 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_include. */
-#ifndef _clib_ext_h_
-#define _clib_ext_h_
-#if defined(__cplusplus)
-extern "C" {
-#endif
-#ifndef HAVE_GETCWD
-#define getcwd getcwd@DB_VERSION_UNIQUE_NAME@
-char *getcwd __P((char *, size_t));
-#endif
-#ifndef HAVE_GETOPT
-#define getopt getopt@DB_VERSION_UNIQUE_NAME@
-int getopt __P((int, char * const *, const char *));
-#endif
-#ifndef HAVE_MEMCMP
-#define memcmp memcmp@DB_VERSION_UNIQUE_NAME@
-int memcmp __P((const void *, const void *, size_t));
-#endif
-#ifndef HAVE_MEMCPY
-#define memcpy memcpy@DB_VERSION_UNIQUE_NAME@
-void *memcpy __P((void *, const void *, size_t));
-#endif
-#ifndef HAVE_MEMMOVE
-#define memmove memmove@DB_VERSION_UNIQUE_NAME@
-void *memmove __P((void *, const void *, size_t));
-#endif
-#ifndef HAVE_RAISE
-#define raise raise@DB_VERSION_UNIQUE_NAME@
-int raise __P((int));
-#endif
-#ifndef HAVE_SNPRINTF
-#define snprintf snprintf@DB_VERSION_UNIQUE_NAME@
-int snprintf __P((char *, size_t, const char *, ...));
-#endif
-#ifndef HAVE_STRCASECMP
-#define strcasecmp strcasecmp@DB_VERSION_UNIQUE_NAME@
-int strcasecmp __P((const char *, const char *));
-#endif
-#ifndef HAVE_STRERROR
-#define strerror strerror@DB_VERSION_UNIQUE_NAME@
-char *strerror __P((int));
-#endif
-#ifndef HAVE_VSNPRINTF
-#endif
-#if defined(__cplusplus)
-}
-#endif
-#endif /* _clib_ext_h_ */
diff --git a/db/include_auto/common_ext.h b/db/include_auto/common_ext.h
deleted file mode 100644
index cf6fe5b0b..000000000
--- a/db/include_auto/common_ext.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_include. */
-#ifndef _common_ext_h_
-#define _common_ext_h_
-#if defined(__cplusplus)
-extern "C" {
-#endif
-int __db_byteorder __P((DB_ENV *, int));
-int __db_fchk __P((DB_ENV *, const char *, u_int32_t, u_int32_t));
-int __db_fcchk __P((DB_ENV *, const char *, u_int32_t, u_int32_t, u_int32_t));
-int __db_ferr __P((const DB_ENV *, const char *, int));
-int __db_pgerr __P((DB *, db_pgno_t));
-int __db_pgfmt __P((DB *, db_pgno_t));
-int __db_eopnotsup __P((const DB_ENV *));
-#ifdef DIAGNOSTIC
-void __db_assert __P((const char *, const char *, int));
-#endif
-int __db_panic_msg __P((DB_ENV *));
-int __db_panic __P((DB_ENV *, int));
-void __db_err __P((const DB_ENV *, const char *, ...));
-void __db_real_err __P((const DB_ENV *, int, int, int, const char *, va_list));
-void __db_logmsg __P((const DB_ENV *, DB_TXN *, const char *, u_int32_t, const char *, ...));
-int __db_unknown_flag __P((DB_ENV *, char *, u_int32_t));
-int __db_unknown_type __P((DB_ENV *, char *, u_int32_t));
-#ifdef DIAGNOSTIC
-int __db_missing_txn_err __P((DB *));
-#endif
-#ifdef DIAGNOSTIC
-int __db_not_txn_env __P((DB *));
-#endif
-int __db_getlong __P((DB *, const char *, char *, long, long, long *));
-int __db_getulong __P((DB *, const char *, char *, u_long, u_long, u_long *));
-u_int32_t __db_log2 __P((u_int32_t));
-int __db_util_logset __P((const char *, char *));
-void __db_util_siginit __P((void));
-int __db_util_interrupted __P((void));
-void __db_util_sigresend __P((void));
-#if defined(__cplusplus)
-}
-#endif
-#endif /* _common_ext_h_ */
diff --git a/db/include_auto/common_ext.in b/db/include_auto/common_ext.in
deleted file mode 100644
index 54c9717e3..000000000
--- a/db/include_auto/common_ext.in
+++ /dev/null
@@ -1,64 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_include. */
-#ifndef _common_ext_h_
-#define _common_ext_h_
-#if defined(__cplusplus)
-extern "C" {
-#endif
-#define __db_byteorder __db_byteorder@DB_VERSION_UNIQUE_NAME@
-int __db_byteorder __P((DB_ENV *, int));
-#define __db_fchk __db_fchk@DB_VERSION_UNIQUE_NAME@
-int __db_fchk __P((DB_ENV *, const char *, u_int32_t, u_int32_t));
-#define __db_fcchk __db_fcchk@DB_VERSION_UNIQUE_NAME@
-int __db_fcchk __P((DB_ENV *, const char *, u_int32_t, u_int32_t, u_int32_t));
-#define __db_ferr __db_ferr@DB_VERSION_UNIQUE_NAME@
-int __db_ferr __P((const DB_ENV *, const char *, int));
-#define __db_pgerr __db_pgerr@DB_VERSION_UNIQUE_NAME@
-int __db_pgerr __P((DB *, db_pgno_t));
-#define __db_pgfmt __db_pgfmt@DB_VERSION_UNIQUE_NAME@
-int __db_pgfmt __P((DB *, db_pgno_t));
-#define __db_eopnotsup __db_eopnotsup@DB_VERSION_UNIQUE_NAME@
-int __db_eopnotsup __P((const DB_ENV *));
-#ifdef DIAGNOSTIC
-#define __db_assert __db_assert@DB_VERSION_UNIQUE_NAME@
-void __db_assert __P((const char *, const char *, int));
-#endif
-#define __db_panic_msg __db_panic_msg@DB_VERSION_UNIQUE_NAME@
-int __db_panic_msg __P((DB_ENV *));
-#define __db_panic __db_panic@DB_VERSION_UNIQUE_NAME@
-int __db_panic __P((DB_ENV *, int));
-#define __db_err __db_err@DB_VERSION_UNIQUE_NAME@
-void __db_err __P((const DB_ENV *, const char *, ...));
-#define __db_real_err __db_real_err@DB_VERSION_UNIQUE_NAME@
-void __db_real_err __P((const DB_ENV *, int, int, int, const char *, va_list));
-#define __db_logmsg __db_logmsg@DB_VERSION_UNIQUE_NAME@
-void __db_logmsg __P((const DB_ENV *, DB_TXN *, const char *, u_int32_t, const char *, ...));
-#define __db_unknown_flag __db_unknown_flag@DB_VERSION_UNIQUE_NAME@
-int __db_unknown_flag __P((DB_ENV *, char *, u_int32_t));
-#define __db_unknown_type __db_unknown_type@DB_VERSION_UNIQUE_NAME@
-int __db_unknown_type __P((DB_ENV *, char *, u_int32_t));
-#ifdef DIAGNOSTIC
-#define __db_missing_txn_err __db_missing_txn_err@DB_VERSION_UNIQUE_NAME@
-int __db_missing_txn_err __P((DB *));
-#endif
-#ifdef DIAGNOSTIC
-#define __db_not_txn_env __db_not_txn_env@DB_VERSION_UNIQUE_NAME@
-int __db_not_txn_env __P((DB *));
-#endif
-#define __db_getlong __db_getlong@DB_VERSION_UNIQUE_NAME@
-int __db_getlong __P((DB *, const char *, char *, long, long, long *));
-#define __db_getulong __db_getulong@DB_VERSION_UNIQUE_NAME@
-int __db_getulong __P((DB *, const char *, char *, u_long, u_long, u_long *));
-#define __db_log2 __db_log2@DB_VERSION_UNIQUE_NAME@
-u_int32_t __db_log2 __P((u_int32_t));
-#define __db_util_logset __db_util_logset@DB_VERSION_UNIQUE_NAME@
-int __db_util_logset __P((const char *, char *));
-#define __db_util_siginit __db_util_siginit@DB_VERSION_UNIQUE_NAME@
-void __db_util_siginit __P((void));
-#define __db_util_interrupted __db_util_interrupted@DB_VERSION_UNIQUE_NAME@
-int __db_util_interrupted __P((void));
-#define __db_util_sigresend __db_util_sigresend@DB_VERSION_UNIQUE_NAME@
-void __db_util_sigresend __P((void));
-#if defined(__cplusplus)
-}
-#endif
-#endif /* _common_ext_h_ */
diff --git a/db/include_auto/crdel_auto.h b/db/include_auto/crdel_auto.h
deleted file mode 100644
index 73175d65f..000000000
--- a/db/include_auto/crdel_auto.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/* Do not edit: automatically built by gen_rec.awk. */
-
-#ifndef crdel_AUTO_H
-#define crdel_AUTO_H
-#define DB_crdel_fileopen 141
-typedef struct _crdel_fileopen_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- DBT name;
- u_int32_t mode;
-} __crdel_fileopen_args;
-
-#define DB_crdel_metasub 142
-typedef struct _crdel_metasub_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- db_pgno_t pgno;
- DBT page;
- DB_LSN lsn;
-} __crdel_metasub_args;
-
-#define DB_crdel_metapage 143
-typedef struct _crdel_metapage_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- DBT name;
- db_pgno_t pgno;
- DBT page;
-} __crdel_metapage_args;
-
-#define DB_crdel_old_delete 144
-typedef struct _crdel_old_delete_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- DBT name;
-} __crdel_old_delete_args;
-
-#define DB_crdel_rename 145
-typedef struct _crdel_rename_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- DBT name;
- DBT newname;
-} __crdel_rename_args;
-
-#define DB_crdel_delete 146
-typedef struct _crdel_delete_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- DBT name;
-} __crdel_delete_args;
-
-#endif
diff --git a/db/include_auto/db185_ext.in b/db/include_auto/db185_ext.in
deleted file mode 100644
index 1fe3dbb31..000000000
--- a/db/include_auto/db185_ext.in
+++ /dev/null
@@ -1,11 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_include. */
-#if defined(__cplusplus)
-extern "C" {
-#endif
-#define dbopen __db185_open
-DB185 *__db185_open __P((const char *, int, int, DBTYPE, const void *));
-#if defined(__cplusplus)
-}
-#endif
-
-#endif /* !_DB_185_H_ */
diff --git a/db/include_auto/db185_uext.in b/db/include_auto/db185_uext.in
deleted file mode 100644
index f4bf4dcfa..000000000
--- a/db/include_auto/db185_uext.in
+++ /dev/null
@@ -1,12 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_include. */
-#if defined(__cplusplus)
-extern "C" {
-#endif
-#define dbopen __db185_open@DB_VERSION_UNIQUE_NAME@
-#define __db185_open __db185_open@DB_VERSION_UNIQUE_NAME@
-DB185 *__db185_open __P((const char *, int, int, DBTYPE, const void *));
-#if defined(__cplusplus)
-}
-#endif
-
-#endif /* !_DB_185_H_ */
diff --git a/db/include_auto/db_auto.h b/db/include_auto/db_auto.h
deleted file mode 100644
index a82b750c7..000000000
--- a/db/include_auto/db_auto.h
+++ /dev/null
@@ -1,108 +0,0 @@
-/* Do not edit: automatically built by gen_rec.awk. */
-
-#ifndef db_AUTO_H
-#define db_AUTO_H
-#define DB_db_addrem 41
-typedef struct _db_addrem_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- u_int32_t opcode;
- int32_t fileid;
- db_pgno_t pgno;
- u_int32_t indx;
- size_t nbytes;
- DBT hdr;
- DBT dbt;
- DB_LSN pagelsn;
-} __db_addrem_args;
-
-#define DB_db_split 42
-typedef struct _db_split_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- u_int32_t opcode;
- int32_t fileid;
- db_pgno_t pgno;
- DBT pageimage;
- DB_LSN pagelsn;
-} __db_split_args;
-
-#define DB_db_big 43
-typedef struct _db_big_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- u_int32_t opcode;
- int32_t fileid;
- db_pgno_t pgno;
- db_pgno_t prev_pgno;
- db_pgno_t next_pgno;
- DBT dbt;
- DB_LSN pagelsn;
- DB_LSN prevlsn;
- DB_LSN nextlsn;
-} __db_big_args;
-
-#define DB_db_ovref 44
-typedef struct _db_ovref_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- db_pgno_t pgno;
- int32_t adjust;
- DB_LSN lsn;
-} __db_ovref_args;
-
-#define DB_db_relink 45
-typedef struct _db_relink_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- u_int32_t opcode;
- int32_t fileid;
- db_pgno_t pgno;
- DB_LSN lsn;
- db_pgno_t prev;
- DB_LSN lsn_prev;
- db_pgno_t next;
- DB_LSN lsn_next;
-} __db_relink_args;
-
-#define DB_db_addpage 46
-typedef struct _db_addpage_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- db_pgno_t pgno;
- DB_LSN lsn;
- db_pgno_t nextpgno;
- DB_LSN nextlsn;
-} __db_addpage_args;
-
-#define DB_db_debug 47
-typedef struct _db_debug_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- DBT op;
- int32_t fileid;
- DBT key;
- DBT data;
- u_int32_t arg_flags;
-} __db_debug_args;
-
-#define DB_db_noop 48
-typedef struct _db_noop_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- db_pgno_t pgno;
- DB_LSN prevlsn;
-} __db_noop_args;
-
-#endif
diff --git a/db/include_auto/db_ext.h b/db/include_auto/db_ext.h
deleted file mode 100644
index 46526a30a..000000000
--- a/db/include_auto/db_ext.h
+++ /dev/null
@@ -1,205 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_include. */
-#ifndef _db_ext_h_
-#define _db_ext_h_
-#if defined(__cplusplus)
-extern "C" {
-#endif
-int __crdel_fileopen_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, const DBT *, u_int32_t));
-int __crdel_fileopen_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __crdel_fileopen_read __P((DB_ENV *, void *, __crdel_fileopen_args **));
-int __crdel_metasub_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, const DBT *, DB_LSN *));
-int __crdel_metasub_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __crdel_metasub_read __P((DB_ENV *, void *, __crdel_metasub_args **));
-int __crdel_metapage_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, const DBT *, db_pgno_t, const DBT *));
-int __crdel_metapage_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __crdel_metapage_read __P((DB_ENV *, void *, __crdel_metapage_args **));
-int __crdel_old_delete_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __crdel_old_delete_read __P((DB_ENV *, void *, __crdel_old_delete_args **));
-int __crdel_rename_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, const DBT *, const DBT *));
-int __crdel_rename_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __crdel_rename_read __P((DB_ENV *, void *, __crdel_rename_args **));
-int __crdel_delete_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, const DBT *));
-int __crdel_delete_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __crdel_delete_read __P((DB_ENV *, void *, __crdel_delete_args **));
-int __crdel_init_print __P((DB_ENV *));
-int __crdel_init_recover __P((DB_ENV *));
-int __crdel_fileopen_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __crdel_metasub_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __crdel_metapage_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __crdel_delete_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __crdel_rename_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __db_open __P((DB *, const char *, const char *, DBTYPE, u_int32_t, int));
-int __db_dbopen __P((DB *, const char *, u_int32_t, int, db_pgno_t));
-int __db_master_open __P((DB *, const char *, u_int32_t, int, DB **));
-int __db_dbenv_setup __P((DB *, const char *, u_int32_t));
-int __db_close __P((DB *, u_int32_t));
-int __db_remove __P((DB *, const char *, const char *, u_int32_t));
-int __db_rename __P((DB *, const char *, const char *, const char *, u_int32_t));
-int __db_truncate __P((DB *, const char *, const char *, u_int32_t *, u_int32_t));
-int __db_log_page __P((DB *, const char *, DB_LSN *, db_pgno_t, PAGE *));
-int __db_backup_name __P((DB_ENV *, const char *, char **, DB_LSN *));
-DB *__dblist_get __P((DB_ENV *, u_int32_t));
-int __db_testcopy __P((DB *, const char *));
-int __db_cursor __P((DB *, DB_TXN *, DBC **, u_int32_t));
-int __db_icursor __P((DB *, DB_TXN *, DBTYPE, db_pgno_t, int, u_int32_t, DBC **));
-int __db_cprint __P((DB *));
-int __db_fd __P((DB *, int *));
-int __db_get __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t));
-int __db_put __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t));
-int __db_delete __P((DB *, DB_TXN *, DBT *, u_int32_t));
-int __db_sync __P((DB *, u_int32_t));
-int __db_associate __P((DB *, DB *, int (*)(DB *, const DBT *, const DBT *, DBT *), u_int32_t));
-int __db_pget __P((DB *, DB_TXN *, DBT *, DBT *, DBT *, u_int32_t));
-int __db_addrem_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, u_int32_t, int32_t, db_pgno_t, u_int32_t, size_t, const DBT *, const DBT *, DB_LSN *));
-int __db_addrem_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __db_addrem_read __P((DB_ENV *, void *, __db_addrem_args **));
-int __db_split_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __db_split_read __P((DB_ENV *, void *, __db_split_args **));
-int __db_big_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, u_int32_t, int32_t, db_pgno_t, db_pgno_t, db_pgno_t, const DBT *, DB_LSN *, DB_LSN *, DB_LSN *));
-int __db_big_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __db_big_read __P((DB_ENV *, void *, __db_big_args **));
-int __db_ovref_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, int32_t, DB_LSN *));
-int __db_ovref_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __db_ovref_read __P((DB_ENV *, void *, __db_ovref_args **));
-int __db_relink_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, u_int32_t, int32_t, db_pgno_t, DB_LSN *, db_pgno_t, DB_LSN *, db_pgno_t, DB_LSN *));
-int __db_relink_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __db_relink_read __P((DB_ENV *, void *, __db_relink_args **));
-int __db_addpage_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __db_addpage_read __P((DB_ENV *, void *, __db_addpage_args **));
-int __db_debug_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, const DBT *, int32_t, const DBT *, const DBT *, u_int32_t));
-int __db_debug_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __db_debug_read __P((DB_ENV *, void *, __db_debug_args **));
-int __db_noop_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, DB_LSN *));
-int __db_noop_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __db_noop_read __P((DB_ENV *, void *, __db_noop_args **));
-int __db_init_print __P((DB_ENV *));
-int __db_init_recover __P((DB_ENV *));
-int __db_c_close __P((DBC *));
-int __db_c_destroy __P((DBC *));
-int __db_c_count __P((DBC *, db_recno_t *, u_int32_t));
-int __db_c_del __P((DBC *, u_int32_t));
-int __db_c_dup __P((DBC *, DBC **, u_int32_t));
-int __db_c_idup __P((DBC *, DBC **, u_int32_t));
-int __db_c_newopd __P((DBC *, db_pgno_t, DBC **));
-int __db_c_get __P((DBC *, DBT *, DBT *, u_int32_t));
-int __db_c_put __P((DBC *, DBT *, DBT *, u_int32_t));
-int __db_duperr __P((DB *, u_int32_t));
-int __db_c_secondary_get __P((DBC *, DBT *, DBT *, u_int32_t));
-int __db_c_pget __P((DBC *, DBT *, DBT *, DBT *, u_int32_t));
-int __db_c_del_primary __P((DBC *));
-DB *__db_s_first __P((DB *));
-int __db_s_next __P((DB **));
-int __db_s_done __P((DB *));
-u_int32_t __db_partsize __P((u_int32_t, DBT *));
-int __db_pgin __P((DB_ENV *, db_pgno_t, void *, DBT *));
-int __db_pgout __P((DB_ENV *, db_pgno_t, void *, DBT *));
-void __db_metaswap __P((PAGE *));
-int __db_byteswap __P((DB_ENV *, db_pgno_t, PAGE *, size_t, int));
-int __db_dispatch __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __db_add_recovery __P((DB_ENV *, int (*)(DB_ENV *, DBT *, DB_LSN *, db_recops, void *), u_int32_t));
-int __deprecated_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __db_txnlist_init __P((DB_ENV *, void *));
-int __db_txnlist_add __P((DB_ENV *, void *, u_int32_t, int32_t));
-int __db_txnlist_remove __P((DB_ENV *, void *, u_int32_t));
-int __db_txnlist_close __P((void *, int32_t, u_int32_t));
-int __db_txnlist_delete __P((DB_ENV *, void *, char *, u_int32_t, int));
-void __db_txnlist_end __P((DB_ENV *, void *));
-int __db_txnlist_find __P((DB_ENV *, void *, u_int32_t));
-void __db_txnlist_gen __P((void *, int));
-int __db_txnlist_lsnadd __P((DB_ENV *, void *, DB_LSN *, u_int32_t));
-int __db_txnlist_lsninit __P((DB_ENV *, DB_TXNHEAD *, DB_LSN *));
-int __db_add_limbo __P((DB_ENV *, void *, int32_t, db_pgno_t, int32_t));
-int __db_do_the_limbo __P((DB_ENV *, DB_TXNHEAD *));
-void __db_txnlist_print __P((void *));
-int __db_ditem __P((DBC *, PAGE *, u_int32_t, u_int32_t));
-int __db_pitem __P((DBC *, PAGE *, u_int32_t, u_int32_t, DBT *, DBT *));
-int __db_relink __P((DBC *, u_int32_t, PAGE *, PAGE **, int));
-int __db_cursorchk __P((const DB *, u_int32_t, int));
-int __db_ccountchk __P((const DB *, u_int32_t, int));
-int __db_cdelchk __P((const DB *, u_int32_t, int, int));
-int __db_cgetchk __P((const DB *, DBT *, DBT *, u_int32_t, int));
-int __db_cputchk __P((const DB *, const DBT *, DBT *, u_int32_t, int, int));
-int __db_pgetchk __P((const DB *, const DBT *, DBT *, DBT *, u_int32_t));
-int __db_cpgetchk __P((const DB *, DBT *, DBT *, DBT *, u_int32_t, int));
-int __db_closechk __P((const DB *, u_int32_t));
-int __db_delchk __P((const DB *, DBT *, u_int32_t, int));
-int __db_getchk __P((const DB *, const DBT *, DBT *, u_int32_t));
-int __db_joinchk __P((const DB *, DBC * const *, u_int32_t));
-int __db_joingetchk __P((const DB *, DBT *, u_int32_t));
-int __db_putchk __P((const DB *, DBT *, const DBT *, u_int32_t, int, int));
-int __db_removechk __P((const DB *, u_int32_t));
-int __db_statchk __P((const DB *, u_int32_t));
-int __db_syncchk __P((const DB *, u_int32_t));
-int __db_associatechk __P((DB *, DB *, int (*)(DB *, const DBT *, const DBT *, DBT *), u_int32_t));
-int __db_join __P((DB *, DBC **, DBC **, u_int32_t));
-int __db_new __P((DBC *, u_int32_t, PAGE **));
-int __db_free __P((DBC *, PAGE *));
-int __db_lprint __P((DBC *));
-int __db_lget __P((DBC *, int, db_pgno_t, db_lockmode_t, int, DB_LOCK *));
-int __dbh_am_chk __P((DB *, u_int32_t));
-int __db_set_lorder __P((DB *, int));
-int __db_goff __P((DB *, DBT *, u_int32_t, db_pgno_t, void **, u_int32_t *));
-int __db_poff __P((DBC *, const DBT *, db_pgno_t *));
-int __db_ovref __P((DBC *, db_pgno_t, int32_t));
-int __db_doff __P((DBC *, db_pgno_t));
-int __db_moff __P((DB *, const DBT *, db_pgno_t, u_int32_t, int (*)(DB *, const DBT *, const DBT *), int *));
-int __db_vrfy_overflow __P((DB *, VRFY_DBINFO *, PAGE *, db_pgno_t, u_int32_t));
-int __db_vrfy_ovfl_structure __P((DB *, VRFY_DBINFO *, db_pgno_t, u_int32_t, u_int32_t));
-int __db_safe_goff __P((DB *, VRFY_DBINFO *, db_pgno_t, DBT *, void **, u_int32_t));
-void __db_loadme __P((void));
-int __db_dump __P((DB *, char *, char *));
-int __db_prnpage __P((DB *, db_pgno_t));
-int __db_prpage __P((DB *, PAGE *, u_int32_t));
-void __db_pr __P((u_int8_t *, u_int32_t));
-int __db_prdbt __P((DBT *, int, const char *, void *, int (*)(void *, const void *), int, VRFY_DBINFO *));
-void __db_prflags __P((u_int32_t, const FN *, FILE *));
-int __db_prheader __P((DB *, char *, int, int, void *, int (*)(void *, const void *), VRFY_DBINFO *, db_pgno_t));
-int __db_prfooter __P((void *, int (*)(void *, const void *)));
-int __db_addrem_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __db_big_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __db_ovref_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __db_relink_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __db_debug_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __db_noop_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __db_traverse_big __P((DB *, db_pgno_t, int (*)(DB *, PAGE *, void *, int *), void *));
-int __db_reclaim_callback __P((DB *, PAGE *, void *, int *));
-int __db_truncate_callback __P((DB *, PAGE *, void *, int *));
-int __db_ret __P((DB *, PAGE *, u_int32_t, DBT *, void **, u_int32_t *));
-int __db_retcopy __P((DB *, DBT *, void *, u_int32_t, void **, u_int32_t *));
-int __db_upgrade __P((DB *, const char *, u_int32_t));
-int __db_lastpgno __P((DB *, char *, DB_FH *, db_pgno_t *));
-int __db_31_offdup __P((DB *, char *, DB_FH *, int, db_pgno_t *));
-int __db_verify __P((DB *, const char *, const char *, FILE *, u_int32_t));
-int __db_verify_callback __P((void *, const void *));
-int __db_verify_internal __P((DB *, const char *, const char *, void *, int (*)(void *, const void *), u_int32_t));
-int __db_vrfy_datapage __P((DB *, VRFY_DBINFO *, PAGE *, db_pgno_t, u_int32_t));
-int __db_vrfy_meta __P((DB *, VRFY_DBINFO *, DBMETA *, db_pgno_t, u_int32_t));
-int __db_vrfy_struct_feedback __P((DB *, VRFY_DBINFO *));
-int __db_salvage __P((DB *, VRFY_DBINFO *, db_pgno_t, PAGE *, void *, int (*)(void *, const void *), u_int32_t));
-int __db_vrfy_inpitem __P((DB *, PAGE *, db_pgno_t, u_int32_t, int, u_int32_t, u_int32_t *, u_int32_t *));
-int __db_vrfy_duptype __P((DB *, VRFY_DBINFO *, db_pgno_t, u_int32_t));
-int __db_salvage_duptree __P((DB *, VRFY_DBINFO *, db_pgno_t, DBT *, void *, int (*)(void *, const void *), u_int32_t));
-int __db_vrfy_dbinfo_create __P((DB_ENV *, u_int32_t, VRFY_DBINFO **));
-int __db_vrfy_dbinfo_destroy __P((DB_ENV *, VRFY_DBINFO *));
-int __db_vrfy_getpageinfo __P((VRFY_DBINFO *, db_pgno_t, VRFY_PAGEINFO **));
-int __db_vrfy_putpageinfo __P((DB_ENV *, VRFY_DBINFO *, VRFY_PAGEINFO *));
-int __db_vrfy_pgset __P((DB_ENV *, u_int32_t, DB **));
-int __db_vrfy_pgset_get __P((DB *, db_pgno_t, int *));
-int __db_vrfy_pgset_inc __P((DB *, db_pgno_t));
-int __db_vrfy_pgset_dec __P((DB *, db_pgno_t));
-int __db_vrfy_pgset_next __P((DBC *, db_pgno_t *));
-int __db_vrfy_childcursor __P((VRFY_DBINFO *, DBC **));
-int __db_vrfy_childput __P((VRFY_DBINFO *, db_pgno_t, VRFY_CHILDINFO *));
-int __db_vrfy_ccset __P((DBC *, db_pgno_t, VRFY_CHILDINFO **));
-int __db_vrfy_ccnext __P((DBC *, VRFY_CHILDINFO **));
-int __db_vrfy_ccclose __P((DBC *));
-int __db_salvage_init __P((VRFY_DBINFO *));
-void __db_salvage_destroy __P((VRFY_DBINFO *));
-int __db_salvage_getnext __P((VRFY_DBINFO *, db_pgno_t *, u_int32_t *));
-int __db_salvage_isdone __P((VRFY_DBINFO *, db_pgno_t));
-int __db_salvage_markdone __P((VRFY_DBINFO *, db_pgno_t));
-int __db_salvage_markneeded __P((VRFY_DBINFO *, db_pgno_t, u_int32_t));
-#if defined(__cplusplus)
-}
-#endif
-#endif /* _db_ext_h_ */
diff --git a/db/include_auto/db_ext.in b/db/include_auto/db_ext.in
deleted file mode 100644
index 9d2504347..000000000
--- a/db/include_auto/db_ext.in
+++ /dev/null
@@ -1,400 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_include. */
-#ifndef _db_ext_h_
-#define _db_ext_h_
-#if defined(__cplusplus)
-extern "C" {
-#endif
-#define __crdel_fileopen_log __crdel_fileopen_log@DB_VERSION_UNIQUE_NAME@
-int __crdel_fileopen_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, const DBT *, u_int32_t));
-#define __crdel_fileopen_print __crdel_fileopen_print@DB_VERSION_UNIQUE_NAME@
-int __crdel_fileopen_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __crdel_fileopen_read __crdel_fileopen_read@DB_VERSION_UNIQUE_NAME@
-int __crdel_fileopen_read __P((DB_ENV *, void *, __crdel_fileopen_args **));
-#define __crdel_metasub_log __crdel_metasub_log@DB_VERSION_UNIQUE_NAME@
-int __crdel_metasub_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, const DBT *, DB_LSN *));
-#define __crdel_metasub_print __crdel_metasub_print@DB_VERSION_UNIQUE_NAME@
-int __crdel_metasub_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __crdel_metasub_read __crdel_metasub_read@DB_VERSION_UNIQUE_NAME@
-int __crdel_metasub_read __P((DB_ENV *, void *, __crdel_metasub_args **));
-#define __crdel_metapage_log __crdel_metapage_log@DB_VERSION_UNIQUE_NAME@
-int __crdel_metapage_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, const DBT *, db_pgno_t, const DBT *));
-#define __crdel_metapage_print __crdel_metapage_print@DB_VERSION_UNIQUE_NAME@
-int __crdel_metapage_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __crdel_metapage_read __crdel_metapage_read@DB_VERSION_UNIQUE_NAME@
-int __crdel_metapage_read __P((DB_ENV *, void *, __crdel_metapage_args **));
-#define __crdel_old_delete_print __crdel_old_delete_print@DB_VERSION_UNIQUE_NAME@
-int __crdel_old_delete_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __crdel_old_delete_read __crdel_old_delete_read@DB_VERSION_UNIQUE_NAME@
-int __crdel_old_delete_read __P((DB_ENV *, void *, __crdel_old_delete_args **));
-#define __crdel_rename_log __crdel_rename_log@DB_VERSION_UNIQUE_NAME@
-int __crdel_rename_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, const DBT *, const DBT *));
-#define __crdel_rename_print __crdel_rename_print@DB_VERSION_UNIQUE_NAME@
-int __crdel_rename_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __crdel_rename_read __crdel_rename_read@DB_VERSION_UNIQUE_NAME@
-int __crdel_rename_read __P((DB_ENV *, void *, __crdel_rename_args **));
-#define __crdel_delete_log __crdel_delete_log@DB_VERSION_UNIQUE_NAME@
-int __crdel_delete_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, const DBT *));
-#define __crdel_delete_print __crdel_delete_print@DB_VERSION_UNIQUE_NAME@
-int __crdel_delete_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __crdel_delete_read __crdel_delete_read@DB_VERSION_UNIQUE_NAME@
-int __crdel_delete_read __P((DB_ENV *, void *, __crdel_delete_args **));
-#define __crdel_init_print __crdel_init_print@DB_VERSION_UNIQUE_NAME@
-int __crdel_init_print __P((DB_ENV *));
-#define __crdel_init_recover __crdel_init_recover@DB_VERSION_UNIQUE_NAME@
-int __crdel_init_recover __P((DB_ENV *));
-#define __crdel_fileopen_recover __crdel_fileopen_recover@DB_VERSION_UNIQUE_NAME@
-int __crdel_fileopen_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __crdel_metasub_recover __crdel_metasub_recover@DB_VERSION_UNIQUE_NAME@
-int __crdel_metasub_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __crdel_metapage_recover __crdel_metapage_recover@DB_VERSION_UNIQUE_NAME@
-int __crdel_metapage_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __crdel_delete_recover __crdel_delete_recover@DB_VERSION_UNIQUE_NAME@
-int __crdel_delete_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __crdel_rename_recover __crdel_rename_recover@DB_VERSION_UNIQUE_NAME@
-int __crdel_rename_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __db_open __db_open@DB_VERSION_UNIQUE_NAME@
-int __db_open __P((DB *, const char *, const char *, DBTYPE, u_int32_t, int));
-#define __db_dbopen __db_dbopen@DB_VERSION_UNIQUE_NAME@
-int __db_dbopen __P((DB *, const char *, u_int32_t, int, db_pgno_t));
-#define __db_master_open __db_master_open@DB_VERSION_UNIQUE_NAME@
-int __db_master_open __P((DB *, const char *, u_int32_t, int, DB **));
-#define __db_dbenv_setup __db_dbenv_setup@DB_VERSION_UNIQUE_NAME@
-int __db_dbenv_setup __P((DB *, const char *, u_int32_t));
-#define __db_close __db_close@DB_VERSION_UNIQUE_NAME@
-int __db_close __P((DB *, u_int32_t));
-#define __db_remove __db_remove@DB_VERSION_UNIQUE_NAME@
-int __db_remove __P((DB *, const char *, const char *, u_int32_t));
-#define __db_rename __db_rename@DB_VERSION_UNIQUE_NAME@
-int __db_rename __P((DB *, const char *, const char *, const char *, u_int32_t));
-#define __db_truncate __db_truncate@DB_VERSION_UNIQUE_NAME@
-int __db_truncate __P((DB *, const char *, const char *, u_int32_t *, u_int32_t));
-#define __db_log_page __db_log_page@DB_VERSION_UNIQUE_NAME@
-int __db_log_page __P((DB *, const char *, DB_LSN *, db_pgno_t, PAGE *));
-#define __db_backup_name __db_backup_name@DB_VERSION_UNIQUE_NAME@
-int __db_backup_name __P((DB_ENV *, const char *, char **, DB_LSN *));
-#define __dblist_get __dblist_get@DB_VERSION_UNIQUE_NAME@
-DB *__dblist_get __P((DB_ENV *, u_int32_t));
-#define __db_testcopy __db_testcopy@DB_VERSION_UNIQUE_NAME@
-int __db_testcopy __P((DB *, const char *));
-#define __db_cursor __db_cursor@DB_VERSION_UNIQUE_NAME@
-int __db_cursor __P((DB *, DB_TXN *, DBC **, u_int32_t));
-#define __db_icursor __db_icursor@DB_VERSION_UNIQUE_NAME@
-int __db_icursor __P((DB *, DB_TXN *, DBTYPE, db_pgno_t, int, u_int32_t, DBC **));
-#define __db_cprint __db_cprint@DB_VERSION_UNIQUE_NAME@
-int __db_cprint __P((DB *));
-#define __db_fd __db_fd@DB_VERSION_UNIQUE_NAME@
-int __db_fd __P((DB *, int *));
-#define __db_get __db_get@DB_VERSION_UNIQUE_NAME@
-int __db_get __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t));
-#define __db_put __db_put@DB_VERSION_UNIQUE_NAME@
-int __db_put __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t));
-#define __db_delete __db_delete@DB_VERSION_UNIQUE_NAME@
-int __db_delete __P((DB *, DB_TXN *, DBT *, u_int32_t));
-#define __db_sync __db_sync@DB_VERSION_UNIQUE_NAME@
-int __db_sync __P((DB *, u_int32_t));
-#define __db_associate __db_associate@DB_VERSION_UNIQUE_NAME@
-int __db_associate __P((DB *, DB *, int (*)(DB *, const DBT *, const DBT *, DBT *), u_int32_t));
-#define __db_pget __db_pget@DB_VERSION_UNIQUE_NAME@
-int __db_pget __P((DB *, DB_TXN *, DBT *, DBT *, DBT *, u_int32_t));
-#define __db_addrem_log __db_addrem_log@DB_VERSION_UNIQUE_NAME@
-int __db_addrem_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, u_int32_t, int32_t, db_pgno_t, u_int32_t, size_t, const DBT *, const DBT *, DB_LSN *));
-#define __db_addrem_print __db_addrem_print@DB_VERSION_UNIQUE_NAME@
-int __db_addrem_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __db_addrem_read __db_addrem_read@DB_VERSION_UNIQUE_NAME@
-int __db_addrem_read __P((DB_ENV *, void *, __db_addrem_args **));
-#define __db_split_print __db_split_print@DB_VERSION_UNIQUE_NAME@
-int __db_split_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __db_split_read __db_split_read@DB_VERSION_UNIQUE_NAME@
-int __db_split_read __P((DB_ENV *, void *, __db_split_args **));
-#define __db_big_log __db_big_log@DB_VERSION_UNIQUE_NAME@
-int __db_big_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, u_int32_t, int32_t, db_pgno_t, db_pgno_t, db_pgno_t, const DBT *, DB_LSN *, DB_LSN *, DB_LSN *));
-#define __db_big_print __db_big_print@DB_VERSION_UNIQUE_NAME@
-int __db_big_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __db_big_read __db_big_read@DB_VERSION_UNIQUE_NAME@
-int __db_big_read __P((DB_ENV *, void *, __db_big_args **));
-#define __db_ovref_log __db_ovref_log@DB_VERSION_UNIQUE_NAME@
-int __db_ovref_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, int32_t, DB_LSN *));
-#define __db_ovref_print __db_ovref_print@DB_VERSION_UNIQUE_NAME@
-int __db_ovref_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __db_ovref_read __db_ovref_read@DB_VERSION_UNIQUE_NAME@
-int __db_ovref_read __P((DB_ENV *, void *, __db_ovref_args **));
-#define __db_relink_log __db_relink_log@DB_VERSION_UNIQUE_NAME@
-int __db_relink_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, u_int32_t, int32_t, db_pgno_t, DB_LSN *, db_pgno_t, DB_LSN *, db_pgno_t, DB_LSN *));
-#define __db_relink_print __db_relink_print@DB_VERSION_UNIQUE_NAME@
-int __db_relink_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __db_relink_read __db_relink_read@DB_VERSION_UNIQUE_NAME@
-int __db_relink_read __P((DB_ENV *, void *, __db_relink_args **));
-#define __db_addpage_print __db_addpage_print@DB_VERSION_UNIQUE_NAME@
-int __db_addpage_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __db_addpage_read __db_addpage_read@DB_VERSION_UNIQUE_NAME@
-int __db_addpage_read __P((DB_ENV *, void *, __db_addpage_args **));
-#define __db_debug_log __db_debug_log@DB_VERSION_UNIQUE_NAME@
-int __db_debug_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, const DBT *, int32_t, const DBT *, const DBT *, u_int32_t));
-#define __db_debug_print __db_debug_print@DB_VERSION_UNIQUE_NAME@
-int __db_debug_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __db_debug_read __db_debug_read@DB_VERSION_UNIQUE_NAME@
-int __db_debug_read __P((DB_ENV *, void *, __db_debug_args **));
-#define __db_noop_log __db_noop_log@DB_VERSION_UNIQUE_NAME@
-int __db_noop_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, DB_LSN *));
-#define __db_noop_print __db_noop_print@DB_VERSION_UNIQUE_NAME@
-int __db_noop_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __db_noop_read __db_noop_read@DB_VERSION_UNIQUE_NAME@
-int __db_noop_read __P((DB_ENV *, void *, __db_noop_args **));
-#define __db_init_print __db_init_print@DB_VERSION_UNIQUE_NAME@
-int __db_init_print __P((DB_ENV *));
-#define __db_init_recover __db_init_recover@DB_VERSION_UNIQUE_NAME@
-int __db_init_recover __P((DB_ENV *));
-#define __db_c_close __db_c_close@DB_VERSION_UNIQUE_NAME@
-int __db_c_close __P((DBC *));
-#define __db_c_destroy __db_c_destroy@DB_VERSION_UNIQUE_NAME@
-int __db_c_destroy __P((DBC *));
-#define __db_c_count __db_c_count@DB_VERSION_UNIQUE_NAME@
-int __db_c_count __P((DBC *, db_recno_t *, u_int32_t));
-#define __db_c_del __db_c_del@DB_VERSION_UNIQUE_NAME@
-int __db_c_del __P((DBC *, u_int32_t));
-#define __db_c_dup __db_c_dup@DB_VERSION_UNIQUE_NAME@
-int __db_c_dup __P((DBC *, DBC **, u_int32_t));
-#define __db_c_idup __db_c_idup@DB_VERSION_UNIQUE_NAME@
-int __db_c_idup __P((DBC *, DBC **, u_int32_t));
-#define __db_c_newopd __db_c_newopd@DB_VERSION_UNIQUE_NAME@
-int __db_c_newopd __P((DBC *, db_pgno_t, DBC **));
-#define __db_c_get __db_c_get@DB_VERSION_UNIQUE_NAME@
-int __db_c_get __P((DBC *, DBT *, DBT *, u_int32_t));
-#define __db_c_put __db_c_put@DB_VERSION_UNIQUE_NAME@
-int __db_c_put __P((DBC *, DBT *, DBT *, u_int32_t));
-#define __db_duperr __db_duperr@DB_VERSION_UNIQUE_NAME@
-int __db_duperr __P((DB *, u_int32_t));
-#define __db_c_secondary_get __db_c_secondary_get@DB_VERSION_UNIQUE_NAME@
-int __db_c_secondary_get __P((DBC *, DBT *, DBT *, u_int32_t));
-#define __db_c_pget __db_c_pget@DB_VERSION_UNIQUE_NAME@
-int __db_c_pget __P((DBC *, DBT *, DBT *, DBT *, u_int32_t));
-#define __db_c_del_primary __db_c_del_primary@DB_VERSION_UNIQUE_NAME@
-int __db_c_del_primary __P((DBC *));
-#define __db_s_first __db_s_first@DB_VERSION_UNIQUE_NAME@
-DB *__db_s_first __P((DB *));
-#define __db_s_next __db_s_next@DB_VERSION_UNIQUE_NAME@
-int __db_s_next __P((DB **));
-#define __db_s_done __db_s_done@DB_VERSION_UNIQUE_NAME@
-int __db_s_done __P((DB *));
-#define __db_partsize __db_partsize@DB_VERSION_UNIQUE_NAME@
-u_int32_t __db_partsize __P((u_int32_t, DBT *));
-#define __db_pgin __db_pgin@DB_VERSION_UNIQUE_NAME@
-int __db_pgin __P((DB_ENV *, db_pgno_t, void *, DBT *));
-#define __db_pgout __db_pgout@DB_VERSION_UNIQUE_NAME@
-int __db_pgout __P((DB_ENV *, db_pgno_t, void *, DBT *));
-#define __db_metaswap __db_metaswap@DB_VERSION_UNIQUE_NAME@
-void __db_metaswap __P((PAGE *));
-#define __db_byteswap __db_byteswap@DB_VERSION_UNIQUE_NAME@
-int __db_byteswap __P((DB_ENV *, db_pgno_t, PAGE *, size_t, int));
-#define __db_dispatch __db_dispatch@DB_VERSION_UNIQUE_NAME@
-int __db_dispatch __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __db_add_recovery __db_add_recovery@DB_VERSION_UNIQUE_NAME@
-int __db_add_recovery __P((DB_ENV *, int (*)(DB_ENV *, DBT *, DB_LSN *, db_recops, void *), u_int32_t));
-#define __deprecated_recover __deprecated_recover@DB_VERSION_UNIQUE_NAME@
-int __deprecated_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __db_txnlist_init __db_txnlist_init@DB_VERSION_UNIQUE_NAME@
-int __db_txnlist_init __P((DB_ENV *, void *));
-#define __db_txnlist_add __db_txnlist_add@DB_VERSION_UNIQUE_NAME@
-int __db_txnlist_add __P((DB_ENV *, void *, u_int32_t, int32_t));
-#define __db_txnlist_remove __db_txnlist_remove@DB_VERSION_UNIQUE_NAME@
-int __db_txnlist_remove __P((DB_ENV *, void *, u_int32_t));
-#define __db_txnlist_close __db_txnlist_close@DB_VERSION_UNIQUE_NAME@
-int __db_txnlist_close __P((void *, int32_t, u_int32_t));
-#define __db_txnlist_delete __db_txnlist_delete@DB_VERSION_UNIQUE_NAME@
-int __db_txnlist_delete __P((DB_ENV *, void *, char *, u_int32_t, int));
-#define __db_txnlist_end __db_txnlist_end@DB_VERSION_UNIQUE_NAME@
-void __db_txnlist_end __P((DB_ENV *, void *));
-#define __db_txnlist_find __db_txnlist_find@DB_VERSION_UNIQUE_NAME@
-int __db_txnlist_find __P((DB_ENV *, void *, u_int32_t));
-#define __db_txnlist_gen __db_txnlist_gen@DB_VERSION_UNIQUE_NAME@
-void __db_txnlist_gen __P((void *, int));
-#define __db_txnlist_lsnadd __db_txnlist_lsnadd@DB_VERSION_UNIQUE_NAME@
-int __db_txnlist_lsnadd __P((DB_ENV *, void *, DB_LSN *, u_int32_t));
-#define __db_txnlist_lsninit __db_txnlist_lsninit@DB_VERSION_UNIQUE_NAME@
-int __db_txnlist_lsninit __P((DB_ENV *, DB_TXNHEAD *, DB_LSN *));
-#define __db_add_limbo __db_add_limbo@DB_VERSION_UNIQUE_NAME@
-int __db_add_limbo __P((DB_ENV *, void *, int32_t, db_pgno_t, int32_t));
-#define __db_do_the_limbo __db_do_the_limbo@DB_VERSION_UNIQUE_NAME@
-int __db_do_the_limbo __P((DB_ENV *, DB_TXNHEAD *));
-#define __db_txnlist_print __db_txnlist_print@DB_VERSION_UNIQUE_NAME@
-void __db_txnlist_print __P((void *));
-#define __db_ditem __db_ditem@DB_VERSION_UNIQUE_NAME@
-int __db_ditem __P((DBC *, PAGE *, u_int32_t, u_int32_t));
-#define __db_pitem __db_pitem@DB_VERSION_UNIQUE_NAME@
-int __db_pitem __P((DBC *, PAGE *, u_int32_t, u_int32_t, DBT *, DBT *));
-#define __db_relink __db_relink@DB_VERSION_UNIQUE_NAME@
-int __db_relink __P((DBC *, u_int32_t, PAGE *, PAGE **, int));
-#define __db_cursorchk __db_cursorchk@DB_VERSION_UNIQUE_NAME@
-int __db_cursorchk __P((const DB *, u_int32_t, int));
-#define __db_ccountchk __db_ccountchk@DB_VERSION_UNIQUE_NAME@
-int __db_ccountchk __P((const DB *, u_int32_t, int));
-#define __db_cdelchk __db_cdelchk@DB_VERSION_UNIQUE_NAME@
-int __db_cdelchk __P((const DB *, u_int32_t, int, int));
-#define __db_cgetchk __db_cgetchk@DB_VERSION_UNIQUE_NAME@
-int __db_cgetchk __P((const DB *, DBT *, DBT *, u_int32_t, int));
-#define __db_cputchk __db_cputchk@DB_VERSION_UNIQUE_NAME@
-int __db_cputchk __P((const DB *, const DBT *, DBT *, u_int32_t, int, int));
-#define __db_pgetchk __db_pgetchk@DB_VERSION_UNIQUE_NAME@
-int __db_pgetchk __P((const DB *, const DBT *, DBT *, DBT *, u_int32_t));
-#define __db_cpgetchk __db_cpgetchk@DB_VERSION_UNIQUE_NAME@
-int __db_cpgetchk __P((const DB *, DBT *, DBT *, DBT *, u_int32_t, int));
-#define __db_closechk __db_closechk@DB_VERSION_UNIQUE_NAME@
-int __db_closechk __P((const DB *, u_int32_t));
-#define __db_delchk __db_delchk@DB_VERSION_UNIQUE_NAME@
-int __db_delchk __P((const DB *, DBT *, u_int32_t, int));
-#define __db_getchk __db_getchk@DB_VERSION_UNIQUE_NAME@
-int __db_getchk __P((const DB *, const DBT *, DBT *, u_int32_t));
-#define __db_joinchk __db_joinchk@DB_VERSION_UNIQUE_NAME@
-int __db_joinchk __P((const DB *, DBC * const *, u_int32_t));
-#define __db_joingetchk __db_joingetchk@DB_VERSION_UNIQUE_NAME@
-int __db_joingetchk __P((const DB *, DBT *, u_int32_t));
-#define __db_putchk __db_putchk@DB_VERSION_UNIQUE_NAME@
-int __db_putchk __P((const DB *, DBT *, const DBT *, u_int32_t, int, int));
-#define __db_removechk __db_removechk@DB_VERSION_UNIQUE_NAME@
-int __db_removechk __P((const DB *, u_int32_t));
-#define __db_statchk __db_statchk@DB_VERSION_UNIQUE_NAME@
-int __db_statchk __P((const DB *, u_int32_t));
-#define __db_syncchk __db_syncchk@DB_VERSION_UNIQUE_NAME@
-int __db_syncchk __P((const DB *, u_int32_t));
-#define __db_associatechk __db_associatechk@DB_VERSION_UNIQUE_NAME@
-int __db_associatechk __P((DB *, DB *, int (*)(DB *, const DBT *, const DBT *, DBT *), u_int32_t));
-#define __db_join __db_join@DB_VERSION_UNIQUE_NAME@
-int __db_join __P((DB *, DBC **, DBC **, u_int32_t));
-#define __db_new __db_new@DB_VERSION_UNIQUE_NAME@
-int __db_new __P((DBC *, u_int32_t, PAGE **));
-#define __db_free __db_free@DB_VERSION_UNIQUE_NAME@
-int __db_free __P((DBC *, PAGE *));
-#define __db_lprint __db_lprint@DB_VERSION_UNIQUE_NAME@
-int __db_lprint __P((DBC *));
-#define __db_lget __db_lget@DB_VERSION_UNIQUE_NAME@
-int __db_lget __P((DBC *, int, db_pgno_t, db_lockmode_t, int, DB_LOCK *));
-#define __dbh_am_chk __dbh_am_chk@DB_VERSION_UNIQUE_NAME@
-int __dbh_am_chk __P((DB *, u_int32_t));
-#define __db_set_lorder __db_set_lorder@DB_VERSION_UNIQUE_NAME@
-int __db_set_lorder __P((DB *, int));
-#define __db_goff __db_goff@DB_VERSION_UNIQUE_NAME@
-int __db_goff __P((DB *, DBT *, u_int32_t, db_pgno_t, void **, u_int32_t *));
-#define __db_poff __db_poff@DB_VERSION_UNIQUE_NAME@
-int __db_poff __P((DBC *, const DBT *, db_pgno_t *));
-#define __db_ovref __db_ovref@DB_VERSION_UNIQUE_NAME@
-int __db_ovref __P((DBC *, db_pgno_t, int32_t));
-#define __db_doff __db_doff@DB_VERSION_UNIQUE_NAME@
-int __db_doff __P((DBC *, db_pgno_t));
-#define __db_moff __db_moff@DB_VERSION_UNIQUE_NAME@
-int __db_moff __P((DB *, const DBT *, db_pgno_t, u_int32_t, int (*)(DB *, const DBT *, const DBT *), int *));
-#define __db_vrfy_overflow __db_vrfy_overflow@DB_VERSION_UNIQUE_NAME@
-int __db_vrfy_overflow __P((DB *, VRFY_DBINFO *, PAGE *, db_pgno_t, u_int32_t));
-#define __db_vrfy_ovfl_structure __db_vrfy_ovfl_structure@DB_VERSION_UNIQUE_NAME@
-int __db_vrfy_ovfl_structure __P((DB *, VRFY_DBINFO *, db_pgno_t, u_int32_t, u_int32_t));
-#define __db_safe_goff __db_safe_goff@DB_VERSION_UNIQUE_NAME@
-int __db_safe_goff __P((DB *, VRFY_DBINFO *, db_pgno_t, DBT *, void **, u_int32_t));
-#define __db_loadme __db_loadme@DB_VERSION_UNIQUE_NAME@
-void __db_loadme __P((void));
-#define __db_dump __db_dump@DB_VERSION_UNIQUE_NAME@
-int __db_dump __P((DB *, char *, char *));
-#define __db_prnpage __db_prnpage@DB_VERSION_UNIQUE_NAME@
-int __db_prnpage __P((DB *, db_pgno_t));
-#define __db_prpage __db_prpage@DB_VERSION_UNIQUE_NAME@
-int __db_prpage __P((DB *, PAGE *, u_int32_t));
-#define __db_pr __db_pr@DB_VERSION_UNIQUE_NAME@
-void __db_pr __P((u_int8_t *, u_int32_t));
-#define __db_prdbt __db_prdbt@DB_VERSION_UNIQUE_NAME@
-int __db_prdbt __P((DBT *, int, const char *, void *, int (*)(void *, const void *), int, VRFY_DBINFO *));
-#define __db_prflags __db_prflags@DB_VERSION_UNIQUE_NAME@
-void __db_prflags __P((u_int32_t, const FN *, FILE *));
-#define __db_prheader __db_prheader@DB_VERSION_UNIQUE_NAME@
-int __db_prheader __P((DB *, char *, int, int, void *, int (*)(void *, const void *), VRFY_DBINFO *, db_pgno_t));
-#define __db_prfooter __db_prfooter@DB_VERSION_UNIQUE_NAME@
-int __db_prfooter __P((void *, int (*)(void *, const void *)));
-#define __db_addrem_recover __db_addrem_recover@DB_VERSION_UNIQUE_NAME@
-int __db_addrem_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __db_big_recover __db_big_recover@DB_VERSION_UNIQUE_NAME@
-int __db_big_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __db_ovref_recover __db_ovref_recover@DB_VERSION_UNIQUE_NAME@
-int __db_ovref_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __db_relink_recover __db_relink_recover@DB_VERSION_UNIQUE_NAME@
-int __db_relink_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __db_debug_recover __db_debug_recover@DB_VERSION_UNIQUE_NAME@
-int __db_debug_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __db_noop_recover __db_noop_recover@DB_VERSION_UNIQUE_NAME@
-int __db_noop_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __db_traverse_big __db_traverse_big@DB_VERSION_UNIQUE_NAME@
-int __db_traverse_big __P((DB *, db_pgno_t, int (*)(DB *, PAGE *, void *, int *), void *));
-#define __db_reclaim_callback __db_reclaim_callback@DB_VERSION_UNIQUE_NAME@
-int __db_reclaim_callback __P((DB *, PAGE *, void *, int *));
-#define __db_truncate_callback __db_truncate_callback@DB_VERSION_UNIQUE_NAME@
-int __db_truncate_callback __P((DB *, PAGE *, void *, int *));
-#define __db_ret __db_ret@DB_VERSION_UNIQUE_NAME@
-int __db_ret __P((DB *, PAGE *, u_int32_t, DBT *, void **, u_int32_t *));
-#define __db_retcopy __db_retcopy@DB_VERSION_UNIQUE_NAME@
-int __db_retcopy __P((DB *, DBT *, void *, u_int32_t, void **, u_int32_t *));
-#define __db_upgrade __db_upgrade@DB_VERSION_UNIQUE_NAME@
-int __db_upgrade __P((DB *, const char *, u_int32_t));
-#define __db_lastpgno __db_lastpgno@DB_VERSION_UNIQUE_NAME@
-int __db_lastpgno __P((DB *, char *, DB_FH *, db_pgno_t *));
-#define __db_31_offdup __db_31_offdup@DB_VERSION_UNIQUE_NAME@
-int __db_31_offdup __P((DB *, char *, DB_FH *, int, db_pgno_t *));
-#define __db_verify __db_verify@DB_VERSION_UNIQUE_NAME@
-int __db_verify __P((DB *, const char *, const char *, FILE *, u_int32_t));
-#define __db_verify_callback __db_verify_callback@DB_VERSION_UNIQUE_NAME@
-int __db_verify_callback __P((void *, const void *));
-#define __db_verify_internal __db_verify_internal@DB_VERSION_UNIQUE_NAME@
-int __db_verify_internal __P((DB *, const char *, const char *, void *, int (*)(void *, const void *), u_int32_t));
-#define __db_vrfy_datapage __db_vrfy_datapage@DB_VERSION_UNIQUE_NAME@
-int __db_vrfy_datapage __P((DB *, VRFY_DBINFO *, PAGE *, db_pgno_t, u_int32_t));
-#define __db_vrfy_meta __db_vrfy_meta@DB_VERSION_UNIQUE_NAME@
-int __db_vrfy_meta __P((DB *, VRFY_DBINFO *, DBMETA *, db_pgno_t, u_int32_t));
-#define __db_vrfy_struct_feedback __db_vrfy_struct_feedback@DB_VERSION_UNIQUE_NAME@
-int __db_vrfy_struct_feedback __P((DB *, VRFY_DBINFO *));
-#define __db_salvage __db_salvage@DB_VERSION_UNIQUE_NAME@
-int __db_salvage __P((DB *, VRFY_DBINFO *, db_pgno_t, PAGE *, void *, int (*)(void *, const void *), u_int32_t));
-#define __db_vrfy_inpitem __db_vrfy_inpitem@DB_VERSION_UNIQUE_NAME@
-int __db_vrfy_inpitem __P((DB *, PAGE *, db_pgno_t, u_int32_t, int, u_int32_t, u_int32_t *, u_int32_t *));
-#define __db_vrfy_duptype __db_vrfy_duptype@DB_VERSION_UNIQUE_NAME@
-int __db_vrfy_duptype __P((DB *, VRFY_DBINFO *, db_pgno_t, u_int32_t));
-#define __db_salvage_duptree __db_salvage_duptree@DB_VERSION_UNIQUE_NAME@
-int __db_salvage_duptree __P((DB *, VRFY_DBINFO *, db_pgno_t, DBT *, void *, int (*)(void *, const void *), u_int32_t));
-#define __db_vrfy_dbinfo_create __db_vrfy_dbinfo_create@DB_VERSION_UNIQUE_NAME@
-int __db_vrfy_dbinfo_create __P((DB_ENV *, u_int32_t, VRFY_DBINFO **));
-#define __db_vrfy_dbinfo_destroy __db_vrfy_dbinfo_destroy@DB_VERSION_UNIQUE_NAME@
-int __db_vrfy_dbinfo_destroy __P((DB_ENV *, VRFY_DBINFO *));
-#define __db_vrfy_getpageinfo __db_vrfy_getpageinfo@DB_VERSION_UNIQUE_NAME@
-int __db_vrfy_getpageinfo __P((VRFY_DBINFO *, db_pgno_t, VRFY_PAGEINFO **));
-#define __db_vrfy_putpageinfo __db_vrfy_putpageinfo@DB_VERSION_UNIQUE_NAME@
-int __db_vrfy_putpageinfo __P((DB_ENV *, VRFY_DBINFO *, VRFY_PAGEINFO *));
-#define __db_vrfy_pgset __db_vrfy_pgset@DB_VERSION_UNIQUE_NAME@
-int __db_vrfy_pgset __P((DB_ENV *, u_int32_t, DB **));
-#define __db_vrfy_pgset_get __db_vrfy_pgset_get@DB_VERSION_UNIQUE_NAME@
-int __db_vrfy_pgset_get __P((DB *, db_pgno_t, int *));
-#define __db_vrfy_pgset_inc __db_vrfy_pgset_inc@DB_VERSION_UNIQUE_NAME@
-int __db_vrfy_pgset_inc __P((DB *, db_pgno_t));
-#define __db_vrfy_pgset_dec __db_vrfy_pgset_dec@DB_VERSION_UNIQUE_NAME@
-int __db_vrfy_pgset_dec __P((DB *, db_pgno_t));
-#define __db_vrfy_pgset_next __db_vrfy_pgset_next@DB_VERSION_UNIQUE_NAME@
-int __db_vrfy_pgset_next __P((DBC *, db_pgno_t *));
-#define __db_vrfy_childcursor __db_vrfy_childcursor@DB_VERSION_UNIQUE_NAME@
-int __db_vrfy_childcursor __P((VRFY_DBINFO *, DBC **));
-#define __db_vrfy_childput __db_vrfy_childput@DB_VERSION_UNIQUE_NAME@
-int __db_vrfy_childput __P((VRFY_DBINFO *, db_pgno_t, VRFY_CHILDINFO *));
-#define __db_vrfy_ccset __db_vrfy_ccset@DB_VERSION_UNIQUE_NAME@
-int __db_vrfy_ccset __P((DBC *, db_pgno_t, VRFY_CHILDINFO **));
-#define __db_vrfy_ccnext __db_vrfy_ccnext@DB_VERSION_UNIQUE_NAME@
-int __db_vrfy_ccnext __P((DBC *, VRFY_CHILDINFO **));
-#define __db_vrfy_ccclose __db_vrfy_ccclose@DB_VERSION_UNIQUE_NAME@
-int __db_vrfy_ccclose __P((DBC *));
-#define __db_salvage_init __db_salvage_init@DB_VERSION_UNIQUE_NAME@
-int __db_salvage_init __P((VRFY_DBINFO *));
-#define __db_salvage_destroy __db_salvage_destroy@DB_VERSION_UNIQUE_NAME@
-void __db_salvage_destroy __P((VRFY_DBINFO *));
-#define __db_salvage_getnext __db_salvage_getnext@DB_VERSION_UNIQUE_NAME@
-int __db_salvage_getnext __P((VRFY_DBINFO *, db_pgno_t *, u_int32_t *));
-#define __db_salvage_isdone __db_salvage_isdone@DB_VERSION_UNIQUE_NAME@
-int __db_salvage_isdone __P((VRFY_DBINFO *, db_pgno_t));
-#define __db_salvage_markdone __db_salvage_markdone@DB_VERSION_UNIQUE_NAME@
-int __db_salvage_markdone __P((VRFY_DBINFO *, db_pgno_t));
-#define __db_salvage_markneeded __db_salvage_markneeded@DB_VERSION_UNIQUE_NAME@
-int __db_salvage_markneeded __P((VRFY_DBINFO *, db_pgno_t, u_int32_t));
-#if defined(__cplusplus)
-}
-#endif
-#endif /* _db_ext_h_ */
diff --git a/db/include_auto/db_server.h b/db/include_auto/db_server.h
deleted file mode 100644
index 93c99ca1d..000000000
--- a/db/include_auto/db_server.h
+++ /dev/null
@@ -1,904 +0,0 @@
-/*
- * Please do not edit this file.
- * It was generated using rpcgen.
- */
-
-#ifndef _DB_SERVER_H_RPCGEN
-#define _DB_SERVER_H_RPCGEN
-
-#include <rpc/rpc.h>
-
-struct __env_cachesize_msg {
- u_int dbenvcl_id;
- u_int gbytes;
- u_int bytes;
- u_int ncache;
-};
-typedef struct __env_cachesize_msg __env_cachesize_msg;
-
-struct __env_cachesize_reply {
- int status;
-};
-typedef struct __env_cachesize_reply __env_cachesize_reply;
-
-struct __env_close_msg {
- u_int dbenvcl_id;
- u_int flags;
-};
-typedef struct __env_close_msg __env_close_msg;
-
-struct __env_close_reply {
- int status;
-};
-typedef struct __env_close_reply __env_close_reply;
-
-struct __env_create_msg {
- u_int timeout;
-};
-typedef struct __env_create_msg __env_create_msg;
-
-struct __env_create_reply {
- int status;
- u_int envcl_id;
-};
-typedef struct __env_create_reply __env_create_reply;
-
-struct __env_flags_msg {
- u_int dbenvcl_id;
- u_int flags;
- u_int onoff;
-};
-typedef struct __env_flags_msg __env_flags_msg;
-
-struct __env_flags_reply {
- int status;
-};
-typedef struct __env_flags_reply __env_flags_reply;
-
-struct __env_open_msg {
- u_int dbenvcl_id;
- char *home;
- u_int flags;
- u_int mode;
-};
-typedef struct __env_open_msg __env_open_msg;
-
-struct __env_open_reply {
- int status;
-};
-typedef struct __env_open_reply __env_open_reply;
-
-struct __env_remove_msg {
- u_int dbenvcl_id;
- char *home;
- u_int flags;
-};
-typedef struct __env_remove_msg __env_remove_msg;
-
-struct __env_remove_reply {
- int status;
-};
-typedef struct __env_remove_reply __env_remove_reply;
-
-struct __txn_abort_msg {
- u_int txnpcl_id;
-};
-typedef struct __txn_abort_msg __txn_abort_msg;
-
-struct __txn_abort_reply {
- int status;
-};
-typedef struct __txn_abort_reply __txn_abort_reply;
-
-struct __txn_begin_msg {
- u_int dbenvcl_id;
- u_int parentcl_id;
- u_int flags;
-};
-typedef struct __txn_begin_msg __txn_begin_msg;
-
-struct __txn_begin_reply {
- int status;
- u_int txnidcl_id;
-};
-typedef struct __txn_begin_reply __txn_begin_reply;
-
-struct __txn_commit_msg {
- u_int txnpcl_id;
- u_int flags;
-};
-typedef struct __txn_commit_msg __txn_commit_msg;
-
-struct __txn_commit_reply {
- int status;
-};
-typedef struct __txn_commit_reply __txn_commit_reply;
-
-struct __txn_prepare_msg {
- u_int txnpcl_id;
- char gid[128];
-};
-typedef struct __txn_prepare_msg __txn_prepare_msg;
-
-struct __txn_prepare_reply {
- int status;
-};
-typedef struct __txn_prepare_reply __txn_prepare_reply;
-
-struct __txn_recover_msg {
- u_int dbenvcl_id;
- u_int count;
- u_int flags;
-};
-typedef struct __txn_recover_msg __txn_recover_msg;
-
-struct __txn_recover_reply {
- int status;
- struct {
- u_int txn_len;
- u_int *txn_val;
- } txn;
- struct {
- u_int gid_len;
- char *gid_val;
- } gid;
- u_int retcount;
-};
-typedef struct __txn_recover_reply __txn_recover_reply;
-
-struct __db_associate_msg {
- u_int dbpcl_id;
- u_int sdbpcl_id;
- u_int flags;
-};
-typedef struct __db_associate_msg __db_associate_msg;
-
-struct __db_associate_reply {
- int status;
-};
-typedef struct __db_associate_reply __db_associate_reply;
-
-struct __db_bt_maxkey_msg {
- u_int dbpcl_id;
- u_int maxkey;
-};
-typedef struct __db_bt_maxkey_msg __db_bt_maxkey_msg;
-
-struct __db_bt_maxkey_reply {
- int status;
-};
-typedef struct __db_bt_maxkey_reply __db_bt_maxkey_reply;
-
-struct __db_bt_minkey_msg {
- u_int dbpcl_id;
- u_int minkey;
-};
-typedef struct __db_bt_minkey_msg __db_bt_minkey_msg;
-
-struct __db_bt_minkey_reply {
- int status;
-};
-typedef struct __db_bt_minkey_reply __db_bt_minkey_reply;
-
-struct __db_close_msg {
- u_int dbpcl_id;
- u_int flags;
-};
-typedef struct __db_close_msg __db_close_msg;
-
-struct __db_close_reply {
- int status;
-};
-typedef struct __db_close_reply __db_close_reply;
-
-struct __db_create_msg {
- u_int dbenvcl_id;
- u_int flags;
-};
-typedef struct __db_create_msg __db_create_msg;
-
-struct __db_create_reply {
- int status;
- u_int dbcl_id;
-};
-typedef struct __db_create_reply __db_create_reply;
-
-struct __db_del_msg {
- u_int dbpcl_id;
- u_int txnpcl_id;
- u_int keydlen;
- u_int keydoff;
- u_int keyflags;
- struct {
- u_int keydata_len;
- char *keydata_val;
- } keydata;
- u_int flags;
-};
-typedef struct __db_del_msg __db_del_msg;
-
-struct __db_del_reply {
- int status;
-};
-typedef struct __db_del_reply __db_del_reply;
-
-struct __db_extentsize_msg {
- u_int dbpcl_id;
- u_int extentsize;
-};
-typedef struct __db_extentsize_msg __db_extentsize_msg;
-
-struct __db_extentsize_reply {
- int status;
-};
-typedef struct __db_extentsize_reply __db_extentsize_reply;
-
-struct __db_flags_msg {
- u_int dbpcl_id;
- u_int flags;
-};
-typedef struct __db_flags_msg __db_flags_msg;
-
-struct __db_flags_reply {
- int status;
-};
-typedef struct __db_flags_reply __db_flags_reply;
-
-struct __db_get_msg {
- u_int dbpcl_id;
- u_int txnpcl_id;
- u_int keydlen;
- u_int keydoff;
- u_int keyflags;
- struct {
- u_int keydata_len;
- char *keydata_val;
- } keydata;
- u_int datadlen;
- u_int datadoff;
- u_int dataflags;
- struct {
- u_int datadata_len;
- char *datadata_val;
- } datadata;
- u_int flags;
-};
-typedef struct __db_get_msg __db_get_msg;
-
-struct __db_get_reply {
- int status;
- struct {
- u_int keydata_len;
- char *keydata_val;
- } keydata;
- struct {
- u_int datadata_len;
- char *datadata_val;
- } datadata;
-};
-typedef struct __db_get_reply __db_get_reply;
-
-struct __db_h_ffactor_msg {
- u_int dbpcl_id;
- u_int ffactor;
-};
-typedef struct __db_h_ffactor_msg __db_h_ffactor_msg;
-
-struct __db_h_ffactor_reply {
- int status;
-};
-typedef struct __db_h_ffactor_reply __db_h_ffactor_reply;
-
-struct __db_h_nelem_msg {
- u_int dbpcl_id;
- u_int nelem;
-};
-typedef struct __db_h_nelem_msg __db_h_nelem_msg;
-
-struct __db_h_nelem_reply {
- int status;
-};
-typedef struct __db_h_nelem_reply __db_h_nelem_reply;
-
-struct __db_key_range_msg {
- u_int dbpcl_id;
- u_int txnpcl_id;
- u_int keydlen;
- u_int keydoff;
- u_int keyflags;
- struct {
- u_int keydata_len;
- char *keydata_val;
- } keydata;
- u_int flags;
-};
-typedef struct __db_key_range_msg __db_key_range_msg;
-
-struct __db_key_range_reply {
- int status;
- double less;
- double equal;
- double greater;
-};
-typedef struct __db_key_range_reply __db_key_range_reply;
-
-struct __db_lorder_msg {
- u_int dbpcl_id;
- u_int lorder;
-};
-typedef struct __db_lorder_msg __db_lorder_msg;
-
-struct __db_lorder_reply {
- int status;
-};
-typedef struct __db_lorder_reply __db_lorder_reply;
-
-struct __db_open_msg {
- u_int dbpcl_id;
- char *name;
- char *subdb;
- u_int type;
- u_int flags;
- u_int mode;
-};
-typedef struct __db_open_msg __db_open_msg;
-
-struct __db_open_reply {
- int status;
- u_int type;
- u_int dbflags;
- u_int lorder;
-};
-typedef struct __db_open_reply __db_open_reply;
-
-struct __db_pagesize_msg {
- u_int dbpcl_id;
- u_int pagesize;
-};
-typedef struct __db_pagesize_msg __db_pagesize_msg;
-
-struct __db_pagesize_reply {
- int status;
-};
-typedef struct __db_pagesize_reply __db_pagesize_reply;
-
-struct __db_pget_msg {
- u_int dbpcl_id;
- u_int txnpcl_id;
- u_int skeydlen;
- u_int skeydoff;
- u_int skeyflags;
- struct {
- u_int skeydata_len;
- char *skeydata_val;
- } skeydata;
- u_int pkeydlen;
- u_int pkeydoff;
- u_int pkeyflags;
- struct {
- u_int pkeydata_len;
- char *pkeydata_val;
- } pkeydata;
- u_int datadlen;
- u_int datadoff;
- u_int dataflags;
- struct {
- u_int datadata_len;
- char *datadata_val;
- } datadata;
- u_int flags;
-};
-typedef struct __db_pget_msg __db_pget_msg;
-
-struct __db_pget_reply {
- int status;
- struct {
- u_int skeydata_len;
- char *skeydata_val;
- } skeydata;
- struct {
- u_int pkeydata_len;
- char *pkeydata_val;
- } pkeydata;
- struct {
- u_int datadata_len;
- char *datadata_val;
- } datadata;
-};
-typedef struct __db_pget_reply __db_pget_reply;
-
-struct __db_put_msg {
- u_int dbpcl_id;
- u_int txnpcl_id;
- u_int keydlen;
- u_int keydoff;
- u_int keyflags;
- struct {
- u_int keydata_len;
- char *keydata_val;
- } keydata;
- u_int datadlen;
- u_int datadoff;
- u_int dataflags;
- struct {
- u_int datadata_len;
- char *datadata_val;
- } datadata;
- u_int flags;
-};
-typedef struct __db_put_msg __db_put_msg;
-
-struct __db_put_reply {
- int status;
- struct {
- u_int keydata_len;
- char *keydata_val;
- } keydata;
-};
-typedef struct __db_put_reply __db_put_reply;
-
-struct __db_re_delim_msg {
- u_int dbpcl_id;
- u_int delim;
-};
-typedef struct __db_re_delim_msg __db_re_delim_msg;
-
-struct __db_re_delim_reply {
- int status;
-};
-typedef struct __db_re_delim_reply __db_re_delim_reply;
-
-struct __db_re_len_msg {
- u_int dbpcl_id;
- u_int len;
-};
-typedef struct __db_re_len_msg __db_re_len_msg;
-
-struct __db_re_len_reply {
- int status;
-};
-typedef struct __db_re_len_reply __db_re_len_reply;
-
-struct __db_re_pad_msg {
- u_int dbpcl_id;
- u_int pad;
-};
-typedef struct __db_re_pad_msg __db_re_pad_msg;
-
-struct __db_re_pad_reply {
- int status;
-};
-typedef struct __db_re_pad_reply __db_re_pad_reply;
-
-struct __db_remove_msg {
- u_int dbpcl_id;
- char *name;
- char *subdb;
- u_int flags;
-};
-typedef struct __db_remove_msg __db_remove_msg;
-
-struct __db_remove_reply {
- int status;
-};
-typedef struct __db_remove_reply __db_remove_reply;
-
-struct __db_rename_msg {
- u_int dbpcl_id;
- char *name;
- char *subdb;
- char *newname;
- u_int flags;
-};
-typedef struct __db_rename_msg __db_rename_msg;
-
-struct __db_rename_reply {
- int status;
-};
-typedef struct __db_rename_reply __db_rename_reply;
-
-struct __db_stat_msg {
- u_int dbpcl_id;
- u_int flags;
-};
-typedef struct __db_stat_msg __db_stat_msg;
-
-struct __db_stat_reply {
- int status;
- struct {
- u_int stats_len;
- u_int *stats_val;
- } stats;
-};
-typedef struct __db_stat_reply __db_stat_reply;
-
-struct __db_sync_msg {
- u_int dbpcl_id;
- u_int flags;
-};
-typedef struct __db_sync_msg __db_sync_msg;
-
-struct __db_sync_reply {
- int status;
-};
-typedef struct __db_sync_reply __db_sync_reply;
-
-struct __db_truncate_msg {
- u_int dbpcl_id;
- char *name;
- char *subdb;
- u_int flags;
-};
-typedef struct __db_truncate_msg __db_truncate_msg;
-
-struct __db_truncate_reply {
- int status;
- u_int count;
-};
-typedef struct __db_truncate_reply __db_truncate_reply;
-
-struct __db_cursor_msg {
- u_int dbpcl_id;
- u_int txnpcl_id;
- u_int flags;
-};
-typedef struct __db_cursor_msg __db_cursor_msg;
-
-struct __db_cursor_reply {
- int status;
- u_int dbcidcl_id;
-};
-typedef struct __db_cursor_reply __db_cursor_reply;
-
-struct __db_join_msg {
- u_int dbpcl_id;
- struct {
- u_int curs_len;
- u_int *curs_val;
- } curs;
- u_int flags;
-};
-typedef struct __db_join_msg __db_join_msg;
-
-struct __db_join_reply {
- int status;
- u_int dbcidcl_id;
-};
-typedef struct __db_join_reply __db_join_reply;
-
-struct __dbc_close_msg {
- u_int dbccl_id;
-};
-typedef struct __dbc_close_msg __dbc_close_msg;
-
-struct __dbc_close_reply {
- int status;
-};
-typedef struct __dbc_close_reply __dbc_close_reply;
-
-struct __dbc_count_msg {
- u_int dbccl_id;
- u_int flags;
-};
-typedef struct __dbc_count_msg __dbc_count_msg;
-
-struct __dbc_count_reply {
- int status;
- u_int dupcount;
-};
-typedef struct __dbc_count_reply __dbc_count_reply;
-
-struct __dbc_del_msg {
- u_int dbccl_id;
- u_int flags;
-};
-typedef struct __dbc_del_msg __dbc_del_msg;
-
-struct __dbc_del_reply {
- int status;
-};
-typedef struct __dbc_del_reply __dbc_del_reply;
-
-struct __dbc_dup_msg {
- u_int dbccl_id;
- u_int flags;
-};
-typedef struct __dbc_dup_msg __dbc_dup_msg;
-
-struct __dbc_dup_reply {
- int status;
- u_int dbcidcl_id;
-};
-typedef struct __dbc_dup_reply __dbc_dup_reply;
-
-struct __dbc_get_msg {
- u_int dbccl_id;
- u_int keydlen;
- u_int keydoff;
- u_int keyflags;
- struct {
- u_int keydata_len;
- char *keydata_val;
- } keydata;
- u_int datadlen;
- u_int datadoff;
- u_int dataflags;
- struct {
- u_int datadata_len;
- char *datadata_val;
- } datadata;
- u_int flags;
-};
-typedef struct __dbc_get_msg __dbc_get_msg;
-
-struct __dbc_get_reply {
- int status;
- struct {
- u_int keydata_len;
- char *keydata_val;
- } keydata;
- struct {
- u_int datadata_len;
- char *datadata_val;
- } datadata;
-};
-typedef struct __dbc_get_reply __dbc_get_reply;
-
-struct __dbc_pget_msg {
- u_int dbccl_id;
- u_int skeydlen;
- u_int skeydoff;
- u_int skeyflags;
- struct {
- u_int skeydata_len;
- char *skeydata_val;
- } skeydata;
- u_int pkeydlen;
- u_int pkeydoff;
- u_int pkeyflags;
- struct {
- u_int pkeydata_len;
- char *pkeydata_val;
- } pkeydata;
- u_int datadlen;
- u_int datadoff;
- u_int dataflags;
- struct {
- u_int datadata_len;
- char *datadata_val;
- } datadata;
- u_int flags;
-};
-typedef struct __dbc_pget_msg __dbc_pget_msg;
-
-struct __dbc_pget_reply {
- int status;
- struct {
- u_int skeydata_len;
- char *skeydata_val;
- } skeydata;
- struct {
- u_int pkeydata_len;
- char *pkeydata_val;
- } pkeydata;
- struct {
- u_int datadata_len;
- char *datadata_val;
- } datadata;
-};
-typedef struct __dbc_pget_reply __dbc_pget_reply;
-
-struct __dbc_put_msg {
- u_int dbccl_id;
- u_int keydlen;
- u_int keydoff;
- u_int keyflags;
- struct {
- u_int keydata_len;
- char *keydata_val;
- } keydata;
- u_int datadlen;
- u_int datadoff;
- u_int dataflags;
- struct {
- u_int datadata_len;
- char *datadata_val;
- } datadata;
- u_int flags;
-};
-typedef struct __dbc_put_msg __dbc_put_msg;
-
-struct __dbc_put_reply {
- int status;
- struct {
- u_int keydata_len;
- char *keydata_val;
- } keydata;
-};
-typedef struct __dbc_put_reply __dbc_put_reply;
-
-#define __DB_env_cachesize ((unsigned long)(1))
-extern __env_cachesize_reply * __db_env_cachesize_3003();
-#define __DB_env_close ((unsigned long)(2))
-extern __env_close_reply * __db_env_close_3003();
-#define __DB_env_create ((unsigned long)(3))
-extern __env_create_reply * __db_env_create_3003();
-#define __DB_env_flags ((unsigned long)(4))
-extern __env_flags_reply * __db_env_flags_3003();
-#define __DB_env_open ((unsigned long)(5))
-extern __env_open_reply * __db_env_open_3003();
-#define __DB_env_remove ((unsigned long)(6))
-extern __env_remove_reply * __db_env_remove_3003();
-#define __DB_txn_abort ((unsigned long)(7))
-extern __txn_abort_reply * __db_txn_abort_3003();
-#define __DB_txn_begin ((unsigned long)(8))
-extern __txn_begin_reply * __db_txn_begin_3003();
-#define __DB_txn_commit ((unsigned long)(9))
-extern __txn_commit_reply * __db_txn_commit_3003();
-#define __DB_txn_prepare ((unsigned long)(10))
-extern __txn_prepare_reply * __db_txn_prepare_3003();
-#define __DB_txn_recover ((unsigned long)(11))
-extern __txn_recover_reply * __db_txn_recover_3003();
-#define __DB_db_associate ((unsigned long)(12))
-extern __db_associate_reply * __db_db_associate_3003();
-#define __DB_db_bt_maxkey ((unsigned long)(13))
-extern __db_bt_maxkey_reply * __db_db_bt_maxkey_3003();
-#define __DB_db_bt_minkey ((unsigned long)(14))
-extern __db_bt_minkey_reply * __db_db_bt_minkey_3003();
-#define __DB_db_close ((unsigned long)(15))
-extern __db_close_reply * __db_db_close_3003();
-#define __DB_db_create ((unsigned long)(16))
-extern __db_create_reply * __db_db_create_3003();
-#define __DB_db_del ((unsigned long)(17))
-extern __db_del_reply * __db_db_del_3003();
-#define __DB_db_extentsize ((unsigned long)(18))
-extern __db_extentsize_reply * __db_db_extentsize_3003();
-#define __DB_db_flags ((unsigned long)(19))
-extern __db_flags_reply * __db_db_flags_3003();
-#define __DB_db_get ((unsigned long)(20))
-extern __db_get_reply * __db_db_get_3003();
-#define __DB_db_h_ffactor ((unsigned long)(21))
-extern __db_h_ffactor_reply * __db_db_h_ffactor_3003();
-#define __DB_db_h_nelem ((unsigned long)(22))
-extern __db_h_nelem_reply * __db_db_h_nelem_3003();
-#define __DB_db_key_range ((unsigned long)(23))
-extern __db_key_range_reply * __db_db_key_range_3003();
-#define __DB_db_lorder ((unsigned long)(24))
-extern __db_lorder_reply * __db_db_lorder_3003();
-#define __DB_db_open ((unsigned long)(25))
-extern __db_open_reply * __db_db_open_3003();
-#define __DB_db_pagesize ((unsigned long)(26))
-extern __db_pagesize_reply * __db_db_pagesize_3003();
-#define __DB_db_pget ((unsigned long)(27))
-extern __db_pget_reply * __db_db_pget_3003();
-#define __DB_db_put ((unsigned long)(28))
-extern __db_put_reply * __db_db_put_3003();
-#define __DB_db_re_delim ((unsigned long)(29))
-extern __db_re_delim_reply * __db_db_re_delim_3003();
-#define __DB_db_re_len ((unsigned long)(30))
-extern __db_re_len_reply * __db_db_re_len_3003();
-#define __DB_db_re_pad ((unsigned long)(31))
-extern __db_re_pad_reply * __db_db_re_pad_3003();
-#define __DB_db_remove ((unsigned long)(32))
-extern __db_remove_reply * __db_db_remove_3003();
-#define __DB_db_rename ((unsigned long)(33))
-extern __db_rename_reply * __db_db_rename_3003();
-#define __DB_db_stat ((unsigned long)(34))
-extern __db_stat_reply * __db_db_stat_3003();
-#define __DB_db_sync ((unsigned long)(35))
-extern __db_sync_reply * __db_db_sync_3003();
-#define __DB_db_truncate ((unsigned long)(36))
-extern __db_truncate_reply * __db_db_truncate_3003();
-#define __DB_db_cursor ((unsigned long)(37))
-extern __db_cursor_reply * __db_db_cursor_3003();
-#define __DB_db_join ((unsigned long)(38))
-extern __db_join_reply * __db_db_join_3003();
-#define __DB_dbc_close ((unsigned long)(39))
-extern __dbc_close_reply * __db_dbc_close_3003();
-#define __DB_dbc_count ((unsigned long)(40))
-extern __dbc_count_reply * __db_dbc_count_3003();
-#define __DB_dbc_del ((unsigned long)(41))
-extern __dbc_del_reply * __db_dbc_del_3003();
-#define __DB_dbc_dup ((unsigned long)(42))
-extern __dbc_dup_reply * __db_dbc_dup_3003();
-#define __DB_dbc_get ((unsigned long)(43))
-extern __dbc_get_reply * __db_dbc_get_3003();
-#define __DB_dbc_pget ((unsigned long)(44))
-extern __dbc_pget_reply * __db_dbc_pget_3003();
-#define __DB_dbc_put ((unsigned long)(45))
-extern __dbc_put_reply * __db_dbc_put_3003();
-extern int db_rpc_serverprog_3003_freeresult();
-
-/* the xdr functions */
-extern bool_t xdr___env_cachesize_msg();
-extern bool_t xdr___env_cachesize_reply();
-extern bool_t xdr___env_close_msg();
-extern bool_t xdr___env_close_reply();
-extern bool_t xdr___env_create_msg();
-extern bool_t xdr___env_create_reply();
-extern bool_t xdr___env_flags_msg();
-extern bool_t xdr___env_flags_reply();
-extern bool_t xdr___env_open_msg();
-extern bool_t xdr___env_open_reply();
-extern bool_t xdr___env_remove_msg();
-extern bool_t xdr___env_remove_reply();
-extern bool_t xdr___txn_abort_msg();
-extern bool_t xdr___txn_abort_reply();
-extern bool_t xdr___txn_begin_msg();
-extern bool_t xdr___txn_begin_reply();
-extern bool_t xdr___txn_commit_msg();
-extern bool_t xdr___txn_commit_reply();
-extern bool_t xdr___txn_prepare_msg();
-extern bool_t xdr___txn_prepare_reply();
-extern bool_t xdr___txn_recover_msg();
-extern bool_t xdr___txn_recover_reply();
-extern bool_t xdr___db_associate_msg();
-extern bool_t xdr___db_associate_reply();
-extern bool_t xdr___db_bt_maxkey_msg();
-extern bool_t xdr___db_bt_maxkey_reply();
-extern bool_t xdr___db_bt_minkey_msg();
-extern bool_t xdr___db_bt_minkey_reply();
-extern bool_t xdr___db_close_msg();
-extern bool_t xdr___db_close_reply();
-extern bool_t xdr___db_create_msg();
-extern bool_t xdr___db_create_reply();
-extern bool_t xdr___db_del_msg();
-extern bool_t xdr___db_del_reply();
-extern bool_t xdr___db_extentsize_msg();
-extern bool_t xdr___db_extentsize_reply();
-extern bool_t xdr___db_flags_msg();
-extern bool_t xdr___db_flags_reply();
-extern bool_t xdr___db_get_msg();
-extern bool_t xdr___db_get_reply();
-extern bool_t xdr___db_h_ffactor_msg();
-extern bool_t xdr___db_h_ffactor_reply();
-extern bool_t xdr___db_h_nelem_msg();
-extern bool_t xdr___db_h_nelem_reply();
-extern bool_t xdr___db_key_range_msg();
-extern bool_t xdr___db_key_range_reply();
-extern bool_t xdr___db_lorder_msg();
-extern bool_t xdr___db_lorder_reply();
-extern bool_t xdr___db_open_msg();
-extern bool_t xdr___db_open_reply();
-extern bool_t xdr___db_pagesize_msg();
-extern bool_t xdr___db_pagesize_reply();
-extern bool_t xdr___db_pget_msg();
-extern bool_t xdr___db_pget_reply();
-extern bool_t xdr___db_put_msg();
-extern bool_t xdr___db_put_reply();
-extern bool_t xdr___db_re_delim_msg();
-extern bool_t xdr___db_re_delim_reply();
-extern bool_t xdr___db_re_len_msg();
-extern bool_t xdr___db_re_len_reply();
-extern bool_t xdr___db_re_pad_msg();
-extern bool_t xdr___db_re_pad_reply();
-extern bool_t xdr___db_remove_msg();
-extern bool_t xdr___db_remove_reply();
-extern bool_t xdr___db_rename_msg();
-extern bool_t xdr___db_rename_reply();
-extern bool_t xdr___db_stat_msg();
-extern bool_t xdr___db_stat_reply();
-extern bool_t xdr___db_sync_msg();
-extern bool_t xdr___db_sync_reply();
-extern bool_t xdr___db_truncate_msg();
-extern bool_t xdr___db_truncate_reply();
-extern bool_t xdr___db_cursor_msg();
-extern bool_t xdr___db_cursor_reply();
-extern bool_t xdr___db_join_msg();
-extern bool_t xdr___db_join_reply();
-extern bool_t xdr___dbc_close_msg();
-extern bool_t xdr___dbc_close_reply();
-extern bool_t xdr___dbc_count_msg();
-extern bool_t xdr___dbc_count_reply();
-extern bool_t xdr___dbc_del_msg();
-extern bool_t xdr___dbc_del_reply();
-extern bool_t xdr___dbc_dup_msg();
-extern bool_t xdr___dbc_dup_reply();
-extern bool_t xdr___dbc_get_msg();
-extern bool_t xdr___dbc_get_reply();
-extern bool_t xdr___dbc_pget_msg();
-extern bool_t xdr___dbc_pget_reply();
-extern bool_t xdr___dbc_put_msg();
-extern bool_t xdr___dbc_put_reply();
-
-#endif /* !_DB_SERVER_H_RPCGEN */
diff --git a/db/include_auto/db_server.in b/db/include_auto/db_server.in
deleted file mode 100644
index c17f39401..000000000
--- a/db/include_auto/db_server.in
+++ /dev/null
@@ -1,994 +0,0 @@
-/*
- * Please do not edit this file.
- * It was generated using rpcgen.
- */
-
-#ifndef _DB_SERVER_H_RPCGEN
-#define _DB_SERVER_H_RPCGEN
-
-#include <rpc/rpc.h>
-
-struct __env_cachesize_msg {
- u_int dbenvcl_id;
- u_int gbytes;
- u_int bytes;
- u_int ncache;
-};
-typedef struct __env_cachesize_msg __env_cachesize_msg;
-
-struct __env_cachesize_reply {
- int status;
-};
-typedef struct __env_cachesize_reply __env_cachesize_reply;
-
-struct __env_close_msg {
- u_int dbenvcl_id;
- u_int flags;
-};
-typedef struct __env_close_msg __env_close_msg;
-
-struct __env_close_reply {
- int status;
-};
-typedef struct __env_close_reply __env_close_reply;
-
-struct __env_create_msg {
- u_int timeout;
-};
-typedef struct __env_create_msg __env_create_msg;
-
-struct __env_create_reply {
- int status;
- u_int envcl_id;
-};
-typedef struct __env_create_reply __env_create_reply;
-
-struct __env_flags_msg {
- u_int dbenvcl_id;
- u_int flags;
- u_int onoff;
-};
-typedef struct __env_flags_msg __env_flags_msg;
-
-struct __env_flags_reply {
- int status;
-};
-typedef struct __env_flags_reply __env_flags_reply;
-
-struct __env_open_msg {
- u_int dbenvcl_id;
- char *home;
- u_int flags;
- u_int mode;
-};
-typedef struct __env_open_msg __env_open_msg;
-
-struct __env_open_reply {
- int status;
-};
-typedef struct __env_open_reply __env_open_reply;
-
-struct __env_remove_msg {
- u_int dbenvcl_id;
- char *home;
- u_int flags;
-};
-typedef struct __env_remove_msg __env_remove_msg;
-
-struct __env_remove_reply {
- int status;
-};
-typedef struct __env_remove_reply __env_remove_reply;
-
-struct __txn_abort_msg {
- u_int txnpcl_id;
-};
-typedef struct __txn_abort_msg __txn_abort_msg;
-
-struct __txn_abort_reply {
- int status;
-};
-typedef struct __txn_abort_reply __txn_abort_reply;
-
-struct __txn_begin_msg {
- u_int dbenvcl_id;
- u_int parentcl_id;
- u_int flags;
-};
-typedef struct __txn_begin_msg __txn_begin_msg;
-
-struct __txn_begin_reply {
- int status;
- u_int txnidcl_id;
-};
-typedef struct __txn_begin_reply __txn_begin_reply;
-
-struct __txn_commit_msg {
- u_int txnpcl_id;
- u_int flags;
-};
-typedef struct __txn_commit_msg __txn_commit_msg;
-
-struct __txn_commit_reply {
- int status;
-};
-typedef struct __txn_commit_reply __txn_commit_reply;
-
-struct __txn_prepare_msg {
- u_int txnpcl_id;
- char gid[128];
-};
-typedef struct __txn_prepare_msg __txn_prepare_msg;
-
-struct __txn_prepare_reply {
- int status;
-};
-typedef struct __txn_prepare_reply __txn_prepare_reply;
-
-struct __txn_recover_msg {
- u_int dbenvcl_id;
- u_int count;
- u_int flags;
-};
-typedef struct __txn_recover_msg __txn_recover_msg;
-
-struct __txn_recover_reply {
- int status;
- struct {
- u_int txn_len;
- u_int *txn_val;
- } txn;
- struct {
- u_int gid_len;
- char *gid_val;
- } gid;
- u_int retcount;
-};
-typedef struct __txn_recover_reply __txn_recover_reply;
-
-struct __db_associate_msg {
- u_int dbpcl_id;
- u_int sdbpcl_id;
- u_int flags;
-};
-typedef struct __db_associate_msg __db_associate_msg;
-
-struct __db_associate_reply {
- int status;
-};
-typedef struct __db_associate_reply __db_associate_reply;
-
-struct __db_bt_maxkey_msg {
- u_int dbpcl_id;
- u_int maxkey;
-};
-typedef struct __db_bt_maxkey_msg __db_bt_maxkey_msg;
-
-struct __db_bt_maxkey_reply {
- int status;
-};
-typedef struct __db_bt_maxkey_reply __db_bt_maxkey_reply;
-
-struct __db_bt_minkey_msg {
- u_int dbpcl_id;
- u_int minkey;
-};
-typedef struct __db_bt_minkey_msg __db_bt_minkey_msg;
-
-struct __db_bt_minkey_reply {
- int status;
-};
-typedef struct __db_bt_minkey_reply __db_bt_minkey_reply;
-
-struct __db_close_msg {
- u_int dbpcl_id;
- u_int flags;
-};
-typedef struct __db_close_msg __db_close_msg;
-
-struct __db_close_reply {
- int status;
-};
-typedef struct __db_close_reply __db_close_reply;
-
-struct __db_create_msg {
- u_int dbenvcl_id;
- u_int flags;
-};
-typedef struct __db_create_msg __db_create_msg;
-
-struct __db_create_reply {
- int status;
- u_int dbcl_id;
-};
-typedef struct __db_create_reply __db_create_reply;
-
-struct __db_del_msg {
- u_int dbpcl_id;
- u_int txnpcl_id;
- u_int keydlen;
- u_int keydoff;
- u_int keyflags;
- struct {
- u_int keydata_len;
- char *keydata_val;
- } keydata;
- u_int flags;
-};
-typedef struct __db_del_msg __db_del_msg;
-
-struct __db_del_reply {
- int status;
-};
-typedef struct __db_del_reply __db_del_reply;
-
-struct __db_extentsize_msg {
- u_int dbpcl_id;
- u_int extentsize;
-};
-typedef struct __db_extentsize_msg __db_extentsize_msg;
-
-struct __db_extentsize_reply {
- int status;
-};
-typedef struct __db_extentsize_reply __db_extentsize_reply;
-
-struct __db_flags_msg {
- u_int dbpcl_id;
- u_int flags;
-};
-typedef struct __db_flags_msg __db_flags_msg;
-
-struct __db_flags_reply {
- int status;
-};
-typedef struct __db_flags_reply __db_flags_reply;
-
-struct __db_get_msg {
- u_int dbpcl_id;
- u_int txnpcl_id;
- u_int keydlen;
- u_int keydoff;
- u_int keyflags;
- struct {
- u_int keydata_len;
- char *keydata_val;
- } keydata;
- u_int datadlen;
- u_int datadoff;
- u_int dataflags;
- struct {
- u_int datadata_len;
- char *datadata_val;
- } datadata;
- u_int flags;
-};
-typedef struct __db_get_msg __db_get_msg;
-
-struct __db_get_reply {
- int status;
- struct {
- u_int keydata_len;
- char *keydata_val;
- } keydata;
- struct {
- u_int datadata_len;
- char *datadata_val;
- } datadata;
-};
-typedef struct __db_get_reply __db_get_reply;
-
-struct __db_h_ffactor_msg {
- u_int dbpcl_id;
- u_int ffactor;
-};
-typedef struct __db_h_ffactor_msg __db_h_ffactor_msg;
-
-struct __db_h_ffactor_reply {
- int status;
-};
-typedef struct __db_h_ffactor_reply __db_h_ffactor_reply;
-
-struct __db_h_nelem_msg {
- u_int dbpcl_id;
- u_int nelem;
-};
-typedef struct __db_h_nelem_msg __db_h_nelem_msg;
-
-struct __db_h_nelem_reply {
- int status;
-};
-typedef struct __db_h_nelem_reply __db_h_nelem_reply;
-
-struct __db_key_range_msg {
- u_int dbpcl_id;
- u_int txnpcl_id;
- u_int keydlen;
- u_int keydoff;
- u_int keyflags;
- struct {
- u_int keydata_len;
- char *keydata_val;
- } keydata;
- u_int flags;
-};
-typedef struct __db_key_range_msg __db_key_range_msg;
-
-struct __db_key_range_reply {
- int status;
- double less;
- double equal;
- double greater;
-};
-typedef struct __db_key_range_reply __db_key_range_reply;
-
-struct __db_lorder_msg {
- u_int dbpcl_id;
- u_int lorder;
-};
-typedef struct __db_lorder_msg __db_lorder_msg;
-
-struct __db_lorder_reply {
- int status;
-};
-typedef struct __db_lorder_reply __db_lorder_reply;
-
-struct __db_open_msg {
- u_int dbpcl_id;
- char *name;
- char *subdb;
- u_int type;
- u_int flags;
- u_int mode;
-};
-typedef struct __db_open_msg __db_open_msg;
-
-struct __db_open_reply {
- int status;
- u_int type;
- u_int dbflags;
- u_int lorder;
-};
-typedef struct __db_open_reply __db_open_reply;
-
-struct __db_pagesize_msg {
- u_int dbpcl_id;
- u_int pagesize;
-};
-typedef struct __db_pagesize_msg __db_pagesize_msg;
-
-struct __db_pagesize_reply {
- int status;
-};
-typedef struct __db_pagesize_reply __db_pagesize_reply;
-
-struct __db_pget_msg {
- u_int dbpcl_id;
- u_int txnpcl_id;
- u_int skeydlen;
- u_int skeydoff;
- u_int skeyflags;
- struct {
- u_int skeydata_len;
- char *skeydata_val;
- } skeydata;
- u_int pkeydlen;
- u_int pkeydoff;
- u_int pkeyflags;
- struct {
- u_int pkeydata_len;
- char *pkeydata_val;
- } pkeydata;
- u_int datadlen;
- u_int datadoff;
- u_int dataflags;
- struct {
- u_int datadata_len;
- char *datadata_val;
- } datadata;
- u_int flags;
-};
-typedef struct __db_pget_msg __db_pget_msg;
-
-struct __db_pget_reply {
- int status;
- struct {
- u_int skeydata_len;
- char *skeydata_val;
- } skeydata;
- struct {
- u_int pkeydata_len;
- char *pkeydata_val;
- } pkeydata;
- struct {
- u_int datadata_len;
- char *datadata_val;
- } datadata;
-};
-typedef struct __db_pget_reply __db_pget_reply;
-
-struct __db_put_msg {
- u_int dbpcl_id;
- u_int txnpcl_id;
- u_int keydlen;
- u_int keydoff;
- u_int keyflags;
- struct {
- u_int keydata_len;
- char *keydata_val;
- } keydata;
- u_int datadlen;
- u_int datadoff;
- u_int dataflags;
- struct {
- u_int datadata_len;
- char *datadata_val;
- } datadata;
- u_int flags;
-};
-typedef struct __db_put_msg __db_put_msg;
-
-struct __db_put_reply {
- int status;
- struct {
- u_int keydata_len;
- char *keydata_val;
- } keydata;
-};
-typedef struct __db_put_reply __db_put_reply;
-
-struct __db_re_delim_msg {
- u_int dbpcl_id;
- u_int delim;
-};
-typedef struct __db_re_delim_msg __db_re_delim_msg;
-
-struct __db_re_delim_reply {
- int status;
-};
-typedef struct __db_re_delim_reply __db_re_delim_reply;
-
-struct __db_re_len_msg {
- u_int dbpcl_id;
- u_int len;
-};
-typedef struct __db_re_len_msg __db_re_len_msg;
-
-struct __db_re_len_reply {
- int status;
-};
-typedef struct __db_re_len_reply __db_re_len_reply;
-
-struct __db_re_pad_msg {
- u_int dbpcl_id;
- u_int pad;
-};
-typedef struct __db_re_pad_msg __db_re_pad_msg;
-
-struct __db_re_pad_reply {
- int status;
-};
-typedef struct __db_re_pad_reply __db_re_pad_reply;
-
-struct __db_remove_msg {
- u_int dbpcl_id;
- char *name;
- char *subdb;
- u_int flags;
-};
-typedef struct __db_remove_msg __db_remove_msg;
-
-struct __db_remove_reply {
- int status;
-};
-typedef struct __db_remove_reply __db_remove_reply;
-
-struct __db_rename_msg {
- u_int dbpcl_id;
- char *name;
- char *subdb;
- char *newname;
- u_int flags;
-};
-typedef struct __db_rename_msg __db_rename_msg;
-
-struct __db_rename_reply {
- int status;
-};
-typedef struct __db_rename_reply __db_rename_reply;
-
-struct __db_stat_msg {
- u_int dbpcl_id;
- u_int flags;
-};
-typedef struct __db_stat_msg __db_stat_msg;
-
-struct __db_stat_reply {
- int status;
- struct {
- u_int stats_len;
- u_int *stats_val;
- } stats;
-};
-typedef struct __db_stat_reply __db_stat_reply;
-
-struct __db_sync_msg {
- u_int dbpcl_id;
- u_int flags;
-};
-typedef struct __db_sync_msg __db_sync_msg;
-
-struct __db_sync_reply {
- int status;
-};
-typedef struct __db_sync_reply __db_sync_reply;
-
-struct __db_truncate_msg {
- u_int dbpcl_id;
- char *name;
- char *subdb;
- u_int flags;
-};
-typedef struct __db_truncate_msg __db_truncate_msg;
-
-struct __db_truncate_reply {
- int status;
- u_int count;
-};
-typedef struct __db_truncate_reply __db_truncate_reply;
-
-struct __db_cursor_msg {
- u_int dbpcl_id;
- u_int txnpcl_id;
- u_int flags;
-};
-typedef struct __db_cursor_msg __db_cursor_msg;
-
-struct __db_cursor_reply {
- int status;
- u_int dbcidcl_id;
-};
-typedef struct __db_cursor_reply __db_cursor_reply;
-
-struct __db_join_msg {
- u_int dbpcl_id;
- struct {
- u_int curs_len;
- u_int *curs_val;
- } curs;
- u_int flags;
-};
-typedef struct __db_join_msg __db_join_msg;
-
-struct __db_join_reply {
- int status;
- u_int dbcidcl_id;
-};
-typedef struct __db_join_reply __db_join_reply;
-
-struct __dbc_close_msg {
- u_int dbccl_id;
-};
-typedef struct __dbc_close_msg __dbc_close_msg;
-
-struct __dbc_close_reply {
- int status;
-};
-typedef struct __dbc_close_reply __dbc_close_reply;
-
-struct __dbc_count_msg {
- u_int dbccl_id;
- u_int flags;
-};
-typedef struct __dbc_count_msg __dbc_count_msg;
-
-struct __dbc_count_reply {
- int status;
- u_int dupcount;
-};
-typedef struct __dbc_count_reply __dbc_count_reply;
-
-struct __dbc_del_msg {
- u_int dbccl_id;
- u_int flags;
-};
-typedef struct __dbc_del_msg __dbc_del_msg;
-
-struct __dbc_del_reply {
- int status;
-};
-typedef struct __dbc_del_reply __dbc_del_reply;
-
-struct __dbc_dup_msg {
- u_int dbccl_id;
- u_int flags;
-};
-typedef struct __dbc_dup_msg __dbc_dup_msg;
-
-struct __dbc_dup_reply {
- int status;
- u_int dbcidcl_id;
-};
-typedef struct __dbc_dup_reply __dbc_dup_reply;
-
-struct __dbc_get_msg {
- u_int dbccl_id;
- u_int keydlen;
- u_int keydoff;
- u_int keyflags;
- struct {
- u_int keydata_len;
- char *keydata_val;
- } keydata;
- u_int datadlen;
- u_int datadoff;
- u_int dataflags;
- struct {
- u_int datadata_len;
- char *datadata_val;
- } datadata;
- u_int flags;
-};
-typedef struct __dbc_get_msg __dbc_get_msg;
-
-struct __dbc_get_reply {
- int status;
- struct {
- u_int keydata_len;
- char *keydata_val;
- } keydata;
- struct {
- u_int datadata_len;
- char *datadata_val;
- } datadata;
-};
-typedef struct __dbc_get_reply __dbc_get_reply;
-
-struct __dbc_pget_msg {
- u_int dbccl_id;
- u_int skeydlen;
- u_int skeydoff;
- u_int skeyflags;
- struct {
- u_int skeydata_len;
- char *skeydata_val;
- } skeydata;
- u_int pkeydlen;
- u_int pkeydoff;
- u_int pkeyflags;
- struct {
- u_int pkeydata_len;
- char *pkeydata_val;
- } pkeydata;
- u_int datadlen;
- u_int datadoff;
- u_int dataflags;
- struct {
- u_int datadata_len;
- char *datadata_val;
- } datadata;
- u_int flags;
-};
-typedef struct __dbc_pget_msg __dbc_pget_msg;
-
-struct __dbc_pget_reply {
- int status;
- struct {
- u_int skeydata_len;
- char *skeydata_val;
- } skeydata;
- struct {
- u_int pkeydata_len;
- char *pkeydata_val;
- } pkeydata;
- struct {
- u_int datadata_len;
- char *datadata_val;
- } datadata;
-};
-typedef struct __dbc_pget_reply __dbc_pget_reply;
-
-struct __dbc_put_msg {
- u_int dbccl_id;
- u_int keydlen;
- u_int keydoff;
- u_int keyflags;
- struct {
- u_int keydata_len;
- char *keydata_val;
- } keydata;
- u_int datadlen;
- u_int datadoff;
- u_int dataflags;
- struct {
- u_int datadata_len;
- char *datadata_val;
- } datadata;
- u_int flags;
-};
-typedef struct __dbc_put_msg __dbc_put_msg;
-
-struct __dbc_put_reply {
- int status;
- struct {
- u_int keydata_len;
- char *keydata_val;
- } keydata;
-};
-typedef struct __dbc_put_reply __dbc_put_reply;
-
-#define __DB_env_cachesize ((unsigned long)(1))
-extern __env_cachesize_reply * __db_env_cachesize_3003();
-#define __DB_env_close ((unsigned long)(2))
-extern __env_close_reply * __db_env_close_3003();
-#define __DB_env_create ((unsigned long)(3))
-extern __env_create_reply * __db_env_create_3003();
-#define __DB_env_flags ((unsigned long)(4))
-extern __env_flags_reply * __db_env_flags_3003();
-#define __DB_env_open ((unsigned long)(5))
-extern __env_open_reply * __db_env_open_3003();
-#define __DB_env_remove ((unsigned long)(6))
-extern __env_remove_reply * __db_env_remove_3003();
-#define __DB_txn_abort ((unsigned long)(7))
-extern __txn_abort_reply * __db_txn_abort_3003();
-#define __DB_txn_begin ((unsigned long)(8))
-extern __txn_begin_reply * __db_txn_begin_3003();
-#define __DB_txn_commit ((unsigned long)(9))
-extern __txn_commit_reply * __db_txn_commit_3003();
-#define __DB_txn_prepare ((unsigned long)(10))
-extern __txn_prepare_reply * __db_txn_prepare_3003();
-#define __DB_txn_recover ((unsigned long)(11))
-extern __txn_recover_reply * __db_txn_recover_3003();
-#define __DB_db_associate ((unsigned long)(12))
-extern __db_associate_reply * __db_db_associate_3003();
-#define __DB_db_bt_maxkey ((unsigned long)(13))
-extern __db_bt_maxkey_reply * __db_db_bt_maxkey_3003();
-#define __DB_db_bt_minkey ((unsigned long)(14))
-extern __db_bt_minkey_reply * __db_db_bt_minkey_3003();
-#define __DB_db_close ((unsigned long)(15))
-extern __db_close_reply * __db_db_close_3003();
-#define __DB_db_create ((unsigned long)(16))
-extern __db_create_reply * __db_db_create_3003();
-#define __DB_db_del ((unsigned long)(17))
-extern __db_del_reply * __db_db_del_3003();
-#define __DB_db_extentsize ((unsigned long)(18))
-extern __db_extentsize_reply * __db_db_extentsize_3003();
-#define __DB_db_flags ((unsigned long)(19))
-extern __db_flags_reply * __db_db_flags_3003();
-#define __DB_db_get ((unsigned long)(20))
-extern __db_get_reply * __db_db_get_3003();
-#define __DB_db_h_ffactor ((unsigned long)(21))
-extern __db_h_ffactor_reply * __db_db_h_ffactor_3003();
-#define __DB_db_h_nelem ((unsigned long)(22))
-extern __db_h_nelem_reply * __db_db_h_nelem_3003();
-#define __DB_db_key_range ((unsigned long)(23))
-extern __db_key_range_reply * __db_db_key_range_3003();
-#define __DB_db_lorder ((unsigned long)(24))
-extern __db_lorder_reply * __db_db_lorder_3003();
-#define __DB_db_open ((unsigned long)(25))
-extern __db_open_reply * __db_db_open_3003();
-#define __DB_db_pagesize ((unsigned long)(26))
-extern __db_pagesize_reply * __db_db_pagesize_3003();
-#define __DB_db_pget ((unsigned long)(27))
-extern __db_pget_reply * __db_db_pget_3003();
-#define __DB_db_put ((unsigned long)(28))
-extern __db_put_reply * __db_db_put_3003();
-#define __DB_db_re_delim ((unsigned long)(29))
-extern __db_re_delim_reply * __db_db_re_delim_3003();
-#define __DB_db_re_len ((unsigned long)(30))
-extern __db_re_len_reply * __db_db_re_len_3003();
-#define __DB_db_re_pad ((unsigned long)(31))
-extern __db_re_pad_reply * __db_db_re_pad_3003();
-#define __DB_db_remove ((unsigned long)(32))
-extern __db_remove_reply * __db_db_remove_3003();
-#define __DB_db_rename ((unsigned long)(33))
-extern __db_rename_reply * __db_db_rename_3003();
-#define __DB_db_stat ((unsigned long)(34))
-extern __db_stat_reply * __db_db_stat_3003();
-#define __DB_db_sync ((unsigned long)(35))
-extern __db_sync_reply * __db_db_sync_3003();
-#define __DB_db_truncate ((unsigned long)(36))
-extern __db_truncate_reply * __db_db_truncate_3003();
-#define __DB_db_cursor ((unsigned long)(37))
-extern __db_cursor_reply * __db_db_cursor_3003();
-#define __DB_db_join ((unsigned long)(38))
-extern __db_join_reply * __db_db_join_3003();
-#define __DB_dbc_close ((unsigned long)(39))
-extern __dbc_close_reply * __db_dbc_close_3003();
-#define __DB_dbc_count ((unsigned long)(40))
-extern __dbc_count_reply * __db_dbc_count_3003();
-#define __DB_dbc_del ((unsigned long)(41))
-extern __dbc_del_reply * __db_dbc_del_3003();
-#define __DB_dbc_dup ((unsigned long)(42))
-extern __dbc_dup_reply * __db_dbc_dup_3003();
-#define __DB_dbc_get ((unsigned long)(43))
-extern __dbc_get_reply * __db_dbc_get_3003();
-#define __DB_dbc_pget ((unsigned long)(44))
-extern __dbc_pget_reply * __db_dbc_pget_3003();
-#define __DB_dbc_put ((unsigned long)(45))
-extern __dbc_put_reply * __db_dbc_put_3003();
-extern int db_rpc_serverprog_3003_freeresult();
-
-/* the xdr functions */
-#define xdr___env_cachesize_msg xdr___env_cachesize_msg@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___env_cachesize_msg();
-#define xdr___env_cachesize_reply xdr___env_cachesize_reply@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___env_cachesize_reply();
-#define xdr___env_close_msg xdr___env_close_msg@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___env_close_msg();
-#define xdr___env_close_reply xdr___env_close_reply@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___env_close_reply();
-#define xdr___env_create_msg xdr___env_create_msg@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___env_create_msg();
-#define xdr___env_create_reply xdr___env_create_reply@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___env_create_reply();
-#define xdr___env_flags_msg xdr___env_flags_msg@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___env_flags_msg();
-#define xdr___env_flags_reply xdr___env_flags_reply@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___env_flags_reply();
-#define xdr___env_open_msg xdr___env_open_msg@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___env_open_msg();
-#define xdr___env_open_reply xdr___env_open_reply@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___env_open_reply();
-#define xdr___env_remove_msg xdr___env_remove_msg@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___env_remove_msg();
-#define xdr___env_remove_reply xdr___env_remove_reply@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___env_remove_reply();
-#define xdr___txn_abort_msg xdr___txn_abort_msg@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___txn_abort_msg();
-#define xdr___txn_abort_reply xdr___txn_abort_reply@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___txn_abort_reply();
-#define xdr___txn_begin_msg xdr___txn_begin_msg@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___txn_begin_msg();
-#define xdr___txn_begin_reply xdr___txn_begin_reply@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___txn_begin_reply();
-#define xdr___txn_commit_msg xdr___txn_commit_msg@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___txn_commit_msg();
-#define xdr___txn_commit_reply xdr___txn_commit_reply@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___txn_commit_reply();
-#define xdr___txn_prepare_msg xdr___txn_prepare_msg@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___txn_prepare_msg();
-#define xdr___txn_prepare_reply xdr___txn_prepare_reply@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___txn_prepare_reply();
-#define xdr___txn_recover_msg xdr___txn_recover_msg@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___txn_recover_msg();
-#define xdr___txn_recover_reply xdr___txn_recover_reply@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___txn_recover_reply();
-#define xdr___db_associate_msg xdr___db_associate_msg@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___db_associate_msg();
-#define xdr___db_associate_reply xdr___db_associate_reply@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___db_associate_reply();
-#define xdr___db_bt_maxkey_msg xdr___db_bt_maxkey_msg@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___db_bt_maxkey_msg();
-#define xdr___db_bt_maxkey_reply xdr___db_bt_maxkey_reply@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___db_bt_maxkey_reply();
-#define xdr___db_bt_minkey_msg xdr___db_bt_minkey_msg@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___db_bt_minkey_msg();
-#define xdr___db_bt_minkey_reply xdr___db_bt_minkey_reply@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___db_bt_minkey_reply();
-#define xdr___db_close_msg xdr___db_close_msg@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___db_close_msg();
-#define xdr___db_close_reply xdr___db_close_reply@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___db_close_reply();
-#define xdr___db_create_msg xdr___db_create_msg@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___db_create_msg();
-#define xdr___db_create_reply xdr___db_create_reply@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___db_create_reply();
-#define xdr___db_del_msg xdr___db_del_msg@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___db_del_msg();
-#define xdr___db_del_reply xdr___db_del_reply@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___db_del_reply();
-#define xdr___db_extentsize_msg xdr___db_extentsize_msg@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___db_extentsize_msg();
-#define xdr___db_extentsize_reply xdr___db_extentsize_reply@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___db_extentsize_reply();
-#define xdr___db_flags_msg xdr___db_flags_msg@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___db_flags_msg();
-#define xdr___db_flags_reply xdr___db_flags_reply@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___db_flags_reply();
-#define xdr___db_get_msg xdr___db_get_msg@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___db_get_msg();
-#define xdr___db_get_reply xdr___db_get_reply@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___db_get_reply();
-#define xdr___db_h_ffactor_msg xdr___db_h_ffactor_msg@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___db_h_ffactor_msg();
-#define xdr___db_h_ffactor_reply xdr___db_h_ffactor_reply@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___db_h_ffactor_reply();
-#define xdr___db_h_nelem_msg xdr___db_h_nelem_msg@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___db_h_nelem_msg();
-#define xdr___db_h_nelem_reply xdr___db_h_nelem_reply@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___db_h_nelem_reply();
-#define xdr___db_key_range_msg xdr___db_key_range_msg@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___db_key_range_msg();
-#define xdr___db_key_range_reply xdr___db_key_range_reply@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___db_key_range_reply();
-#define xdr___db_lorder_msg xdr___db_lorder_msg@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___db_lorder_msg();
-#define xdr___db_lorder_reply xdr___db_lorder_reply@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___db_lorder_reply();
-#define xdr___db_open_msg xdr___db_open_msg@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___db_open_msg();
-#define xdr___db_open_reply xdr___db_open_reply@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___db_open_reply();
-#define xdr___db_pagesize_msg xdr___db_pagesize_msg@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___db_pagesize_msg();
-#define xdr___db_pagesize_reply xdr___db_pagesize_reply@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___db_pagesize_reply();
-#define xdr___db_pget_msg xdr___db_pget_msg@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___db_pget_msg();
-#define xdr___db_pget_reply xdr___db_pget_reply@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___db_pget_reply();
-#define xdr___db_put_msg xdr___db_put_msg@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___db_put_msg();
-#define xdr___db_put_reply xdr___db_put_reply@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___db_put_reply();
-#define xdr___db_re_delim_msg xdr___db_re_delim_msg@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___db_re_delim_msg();
-#define xdr___db_re_delim_reply xdr___db_re_delim_reply@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___db_re_delim_reply();
-#define xdr___db_re_len_msg xdr___db_re_len_msg@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___db_re_len_msg();
-#define xdr___db_re_len_reply xdr___db_re_len_reply@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___db_re_len_reply();
-#define xdr___db_re_pad_msg xdr___db_re_pad_msg@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___db_re_pad_msg();
-#define xdr___db_re_pad_reply xdr___db_re_pad_reply@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___db_re_pad_reply();
-#define xdr___db_remove_msg xdr___db_remove_msg@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___db_remove_msg();
-#define xdr___db_remove_reply xdr___db_remove_reply@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___db_remove_reply();
-#define xdr___db_rename_msg xdr___db_rename_msg@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___db_rename_msg();
-#define xdr___db_rename_reply xdr___db_rename_reply@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___db_rename_reply();
-#define xdr___db_stat_msg xdr___db_stat_msg@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___db_stat_msg();
-#define xdr___db_stat_reply xdr___db_stat_reply@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___db_stat_reply();
-#define xdr___db_sync_msg xdr___db_sync_msg@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___db_sync_msg();
-#define xdr___db_sync_reply xdr___db_sync_reply@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___db_sync_reply();
-#define xdr___db_truncate_msg xdr___db_truncate_msg@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___db_truncate_msg();
-#define xdr___db_truncate_reply xdr___db_truncate_reply@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___db_truncate_reply();
-#define xdr___db_cursor_msg xdr___db_cursor_msg@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___db_cursor_msg();
-#define xdr___db_cursor_reply xdr___db_cursor_reply@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___db_cursor_reply();
-#define xdr___db_join_msg xdr___db_join_msg@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___db_join_msg();
-#define xdr___db_join_reply xdr___db_join_reply@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___db_join_reply();
-#define xdr___dbc_close_msg xdr___dbc_close_msg@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___dbc_close_msg();
-#define xdr___dbc_close_reply xdr___dbc_close_reply@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___dbc_close_reply();
-#define xdr___dbc_count_msg xdr___dbc_count_msg@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___dbc_count_msg();
-#define xdr___dbc_count_reply xdr___dbc_count_reply@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___dbc_count_reply();
-#define xdr___dbc_del_msg xdr___dbc_del_msg@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___dbc_del_msg();
-#define xdr___dbc_del_reply xdr___dbc_del_reply@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___dbc_del_reply();
-#define xdr___dbc_dup_msg xdr___dbc_dup_msg@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___dbc_dup_msg();
-#define xdr___dbc_dup_reply xdr___dbc_dup_reply@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___dbc_dup_reply();
-#define xdr___dbc_get_msg xdr___dbc_get_msg@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___dbc_get_msg();
-#define xdr___dbc_get_reply xdr___dbc_get_reply@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___dbc_get_reply();
-#define xdr___dbc_pget_msg xdr___dbc_pget_msg@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___dbc_pget_msg();
-#define xdr___dbc_pget_reply xdr___dbc_pget_reply@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___dbc_pget_reply();
-#define xdr___dbc_put_msg xdr___dbc_put_msg@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___dbc_put_msg();
-#define xdr___dbc_put_reply xdr___dbc_put_reply@DB_VERSION_UNIQUE_NAME@
-extern bool_t xdr___dbc_put_reply();
-
-#endif /* !_DB_SERVER_H_RPCGEN */
diff --git a/db/include_auto/env_ext.h b/db/include_auto/env_ext.h
deleted file mode 100644
index fd95c1504..000000000
--- a/db/include_auto/env_ext.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_include. */
-#ifndef _env_ext_h_
-#define _env_ext_h_
-#if defined(__cplusplus)
-extern "C" {
-#endif
-void __db_shalloc_init __P((void *, size_t));
-int __db_shalloc_size __P((size_t, size_t));
-int __db_shalloc __P((void *, size_t, size_t, void *));
-void __db_shalloc_free __P((void *, void *));
-size_t __db_shsizeof __P((void *));
-void __db_shalloc_dump __P((void *, FILE *));
-int __db_tablesize __P((u_int32_t));
-void __db_hashinit __P((void *, u_int32_t));
-int __db_mi_env __P((DB_ENV *, const char *));
-int __db_mi_open __P((DB_ENV *, const char *, int));
-int __db_env_config __P((DB_ENV *, char *, u_int32_t));
-int __dbenv_open __P((DB_ENV *, const char *, u_int32_t, int));
-int __dbenv_remove __P((DB_ENV *, const char *, u_int32_t));
-int __dbenv_close __P((DB_ENV *, u_int32_t));
-int __db_appname __P((DB_ENV *, APPNAME, const char *, const char *, u_int32_t, DB_FH *, char **));
-int __db_home __P((DB_ENV *, const char *, u_int32_t));
-int __db_apprec __P((DB_ENV *, u_int32_t));
-int __env_openfiles __P((DB_ENV *, void *, DBT *, DB_LSN *, DB_LSN *, double, int));
-int __db_e_attach __P((DB_ENV *, u_int32_t *));
-int __db_e_detach __P((DB_ENV *, int));
-int __db_e_remove __P((DB_ENV *, int));
-int __db_e_stat __P((DB_ENV *, REGENV *, REGION *, int *));
-int __db_r_attach __P((DB_ENV *, REGINFO *, size_t));
-int __db_r_detach __P((DB_ENV *, REGINFO *, int));
-#if defined(__cplusplus)
-}
-#endif
-#endif /* _env_ext_h_ */
diff --git a/db/include_auto/env_ext.in b/db/include_auto/env_ext.in
deleted file mode 100644
index 8b7307827..000000000
--- a/db/include_auto/env_ext.in
+++ /dev/null
@@ -1,58 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_include. */
-#ifndef _env_ext_h_
-#define _env_ext_h_
-#if defined(__cplusplus)
-extern "C" {
-#endif
-#define __db_shalloc_init __db_shalloc_init@DB_VERSION_UNIQUE_NAME@
-void __db_shalloc_init __P((void *, size_t));
-#define __db_shalloc_size __db_shalloc_size@DB_VERSION_UNIQUE_NAME@
-int __db_shalloc_size __P((size_t, size_t));
-#define __db_shalloc __db_shalloc@DB_VERSION_UNIQUE_NAME@
-int __db_shalloc __P((void *, size_t, size_t, void *));
-#define __db_shalloc_free __db_shalloc_free@DB_VERSION_UNIQUE_NAME@
-void __db_shalloc_free __P((void *, void *));
-#define __db_shsizeof __db_shsizeof@DB_VERSION_UNIQUE_NAME@
-size_t __db_shsizeof __P((void *));
-#define __db_shalloc_dump __db_shalloc_dump@DB_VERSION_UNIQUE_NAME@
-void __db_shalloc_dump __P((void *, FILE *));
-#define __db_tablesize __db_tablesize@DB_VERSION_UNIQUE_NAME@
-int __db_tablesize __P((u_int32_t));
-#define __db_hashinit __db_hashinit@DB_VERSION_UNIQUE_NAME@
-void __db_hashinit __P((void *, u_int32_t));
-#define __db_mi_env __db_mi_env@DB_VERSION_UNIQUE_NAME@
-int __db_mi_env __P((DB_ENV *, const char *));
-#define __db_mi_open __db_mi_open@DB_VERSION_UNIQUE_NAME@
-int __db_mi_open __P((DB_ENV *, const char *, int));
-#define __db_env_config __db_env_config@DB_VERSION_UNIQUE_NAME@
-int __db_env_config __P((DB_ENV *, char *, u_int32_t));
-#define __dbenv_open __dbenv_open@DB_VERSION_UNIQUE_NAME@
-int __dbenv_open __P((DB_ENV *, const char *, u_int32_t, int));
-#define __dbenv_remove __dbenv_remove@DB_VERSION_UNIQUE_NAME@
-int __dbenv_remove __P((DB_ENV *, const char *, u_int32_t));
-#define __dbenv_close __dbenv_close@DB_VERSION_UNIQUE_NAME@
-int __dbenv_close __P((DB_ENV *, u_int32_t));
-#define __db_appname __db_appname@DB_VERSION_UNIQUE_NAME@
-int __db_appname __P((DB_ENV *, APPNAME, const char *, const char *, u_int32_t, DB_FH *, char **));
-#define __db_home __db_home@DB_VERSION_UNIQUE_NAME@
-int __db_home __P((DB_ENV *, const char *, u_int32_t));
-#define __db_apprec __db_apprec@DB_VERSION_UNIQUE_NAME@
-int __db_apprec __P((DB_ENV *, u_int32_t));
-#define __env_openfiles __env_openfiles@DB_VERSION_UNIQUE_NAME@
-int __env_openfiles __P((DB_ENV *, void *, DBT *, DB_LSN *, DB_LSN *, double, int));
-#define __db_e_attach __db_e_attach@DB_VERSION_UNIQUE_NAME@
-int __db_e_attach __P((DB_ENV *, u_int32_t *));
-#define __db_e_detach __db_e_detach@DB_VERSION_UNIQUE_NAME@
-int __db_e_detach __P((DB_ENV *, int));
-#define __db_e_remove __db_e_remove@DB_VERSION_UNIQUE_NAME@
-int __db_e_remove __P((DB_ENV *, int));
-#define __db_e_stat __db_e_stat@DB_VERSION_UNIQUE_NAME@
-int __db_e_stat __P((DB_ENV *, REGENV *, REGION *, int *));
-#define __db_r_attach __db_r_attach@DB_VERSION_UNIQUE_NAME@
-int __db_r_attach __P((DB_ENV *, REGINFO *, size_t));
-#define __db_r_detach __db_r_detach@DB_VERSION_UNIQUE_NAME@
-int __db_r_detach __P((DB_ENV *, REGINFO *, int));
-#if defined(__cplusplus)
-}
-#endif
-#endif /* _env_ext_h_ */
diff --git a/db/include_auto/global_ext.in b/db/include_auto/global_ext.in
deleted file mode 100644
index edb1029f5..000000000
--- a/db/include_auto/global_ext.in
+++ /dev/null
@@ -1,124 +0,0 @@
-
-/* DO NOT EDIT: automatically built by dist/s_include. */
-#if defined(__cplusplus)
-extern "C" {
-#endif
-int db_create __P((DB **, DB_ENV *, u_int32_t));
-char *db_strerror __P((int));
-int db_env_create __P((DB_ENV **, u_int32_t));
-char *db_version __P((int *, int *, int *));
-int lock_id __P((DB_ENV *, u_int32_t *));
-int lock_vec __P((DB_ENV *, u_int32_t, u_int32_t, DB_LOCKREQ *, int, DB_LOCKREQ **));
-int lock_get __P((DB_ENV *, u_int32_t, u_int32_t, const DBT *, db_lockmode_t, DB_LOCK *));
-int lock_put __P((DB_ENV *, DB_LOCK *));
-int lock_detect __P((DB_ENV *, u_int32_t, u_int32_t, int *));
-int lock_stat __P((DB_ENV *, DB_LOCK_STAT **));
-int log_stat __P((DB_ENV *, DB_LOG_STAT **));
-int log_archive __P((DB_ENV *, char **[], u_int32_t));
-int log_compare __P((const DB_LSN *, const DB_LSN *));
-int log_get __P((DB_ENV *, DB_LSN *, DBT *, u_int32_t));
-int log_put __P((DB_ENV *, DB_LSN *, const DBT *, u_int32_t));
-int log_flush __P((DB_ENV *, const DB_LSN *));
-int log_file __P((DB_ENV *, const DB_LSN *, char *, size_t));
-int log_register __P((DB_ENV *, DB *, const char *));
-int log_unregister __P((DB_ENV *, DB *));
-int memp_fget __P((DB_MPOOLFILE *, db_pgno_t *, u_int32_t, void *));
-int memp_fopen __P((DB_ENV *, const char *, u_int32_t, int, size_t, DB_MPOOL_FINFO *, DB_MPOOLFILE **));
-int memp_fclose __P((DB_MPOOLFILE *));
-int memp_fput __P((DB_MPOOLFILE *, void *, u_int32_t));
-int memp_fset __P((DB_MPOOLFILE *, void *, u_int32_t));
-int memp_register __P((DB_ENV *, int, int (*)(DB_ENV *, db_pgno_t, void *, DBT *), int (*)(DB_ENV *, db_pgno_t, void *, DBT *)));
-int memp_stat __P((DB_ENV *, DB_MPOOL_STAT **, DB_MPOOL_FSTAT ***));
-int memp_sync __P((DB_ENV *, DB_LSN *));
-int memp_fsync __P((DB_MPOOLFILE *));
-int memp_trickle __P((DB_ENV *, int, int *));
-int db_env_set_func_close __P((int (*)(int)));
-int db_env_set_func_dirfree __P((void (*)(char **, int)));
-int db_env_set_func_dirlist __P((int (*)(const char *, char ***, int *)));
-int db_env_set_func_exists __P((int (*)(const char *, int *)));
-int db_env_set_func_free __P((void (*)(void *)));
-int db_env_set_func_fsync __P((int (*)(int)));
-int db_env_set_func_ioinfo __P((int (*)(const char *, int, u_int32_t *, u_int32_t *, u_int32_t *)));
-int db_env_set_func_malloc __P((void *(*)(size_t)));
-int db_env_set_func_map __P((int (*)(char *, size_t, int, int, void **)));
-int db_env_set_func_open __P((int (*)(const char *, int, ...)));
-int db_env_set_func_read __P((ssize_t (*)(int, void *, size_t)));
-int db_env_set_func_realloc __P((void *(*)(void *, size_t)));
-int db_env_set_func_rename __P((int (*)(const char *, const char *)));
-int db_env_set_func_seek __P((int (*)(int, size_t, db_pgno_t, u_int32_t, int, int)));
-int db_env_set_func_sleep __P((int (*)(u_long, u_long)));
-int db_env_set_func_unlink __P((int (*)(const char *)));
-int db_env_set_func_unmap __P((int (*)(void *, size_t)));
-int db_env_set_func_write __P((ssize_t (*)(int, const void *, size_t)));
-int db_env_set_func_yield __P((int (*)(void)));
-int db_env_set_pageyield __P((int));
-int db_env_set_panicstate __P((int));
-int db_env_set_region_init __P((int));
-int db_env_set_tas_spins __P((u_int32_t));
-int txn_begin __P((DB_ENV *, DB_TXN *, DB_TXN **, u_int32_t));
-int txn_commit __P((DB_TXN *, u_int32_t));
-int txn_abort __P((DB_TXN *));
-int txn_discard __P((DB_TXN *, u_int32_t flags));
-int txn_prepare __P((DB_TXN *, u_int8_t *));
-u_int32_t txn_id __P((DB_TXN *));
-int txn_checkpoint __P((DB_ENV *, u_int32_t, u_int32_t, u_int32_t));
-int txn_recover __P((DB_ENV *, DB_PREPLIST *, long, long *, u_int32_t));
-int txn_stat __P((DB_ENV *, DB_TXN_STAT **));
-#if DB_DBM_HSEARCH != 0
-int __db_ndbm_clearerr __P((DBM *));
-void __db_ndbm_close __P((DBM *));
-int __db_ndbm_delete __P((DBM *, datum));
-int __db_ndbm_dirfno __P((DBM *));
-int __db_ndbm_error __P((DBM *));
-datum __db_ndbm_fetch __P((DBM *, datum));
-datum __db_ndbm_firstkey __P((DBM *));
-datum __db_ndbm_nextkey __P((DBM *));
-DBM *__db_ndbm_open __P((const char *, int, int));
-int __db_ndbm_pagfno __P((DBM *));
-int __db_ndbm_rdonly __P((DBM *));
-int __db_ndbm_store __P((DBM *, datum, datum, int));
-#define dbm_clearerr(a) __db_ndbm_clearerr(a)
-#define dbm_close(a) __db_ndbm_close(a)
-#define dbm_delete(a, b) __db_ndbm_delete(a, b)
-#define dbm_dirfno(a) __db_ndbm_dirfno(a)
-#define dbm_error(a) __db_ndbm_error(a)
-#define dbm_fetch(a, b) __db_ndbm_fetch(a, b)
-#define dbm_firstkey(a) __db_ndbm_firstkey(a)
-#define dbm_nextkey(a) __db_ndbm_nextkey(a)
-#define dbm_open(a, b, c) __db_ndbm_open(a, b, c)
-#define dbm_pagfno(a) __db_ndbm_pagfno(a)
-#define dbm_rdonly(a) __db_ndbm_rdonly(a)
-#define dbm_store(a, b, c, d) __db_ndbm_store(a, b, c, d)
-#define dbminit(a) __db_dbm_init(a)
-#define dbmclose __db_dbm_close
-#if !defined(__cplusplus)
-#define delete(a) __db_dbm_delete(a)
-#endif
-#define fetch(a) __db_dbm_fetch(a)
-#define firstkey __db_dbm_firstkey
-#define nextkey(a) __db_dbm_nextkey(a)
-#define store(a, b) __db_dbm_store(a, b)
-int __db_dbm_close __P((void));
-int __db_dbm_dbrdonly __P((void));
-int __db_dbm_delete __P((datum));
-int __db_dbm_dirf __P((void));
-datum __db_dbm_fetch __P((datum));
-datum __db_dbm_firstkey __P((void));
-int __db_dbm_init __P((char *));
-datum __db_dbm_nextkey __P((datum));
-int __db_dbm_pagf __P((void));
-int __db_dbm_store __P((datum, datum));
-#endif
-#if DB_DBM_HSEARCH != 0
-#define hcreate(a) __db_hcreate(a)
-#define hdestroy __db_hdestroy
-#define hsearch(a, b) __db_hsearch(a, b)
-int __db_hcreate __P((size_t));
-ENTRY *__db_hsearch __P((ENTRY, ACTION));
-void __db_hdestroy __P((void));
-#endif
-#if defined(__cplusplus)
-}
-#endif
-
-#endif /* !_DB_H_ */
diff --git a/db/include_auto/global_uext.in b/db/include_auto/global_uext.in
deleted file mode 100644
index 10b141a9b..000000000
--- a/db/include_auto/global_uext.in
+++ /dev/null
@@ -1,213 +0,0 @@
-
-/* DO NOT EDIT: automatically built by dist/s_include. */
-#if defined(__cplusplus)
-extern "C" {
-#endif
-#define db_create db_create@DB_VERSION_UNIQUE_NAME@
-int db_create __P((DB **, DB_ENV *, u_int32_t));
-#define db_strerror db_strerror@DB_VERSION_UNIQUE_NAME@
-char *db_strerror __P((int));
-#define db_env_create db_env_create@DB_VERSION_UNIQUE_NAME@
-int db_env_create __P((DB_ENV **, u_int32_t));
-#define db_version db_version@DB_VERSION_UNIQUE_NAME@
-char *db_version __P((int *, int *, int *));
-#define lock_id lock_id@DB_VERSION_UNIQUE_NAME@
-int lock_id __P((DB_ENV *, u_int32_t *));
-#define lock_vec lock_vec@DB_VERSION_UNIQUE_NAME@
-int lock_vec __P((DB_ENV *, u_int32_t, u_int32_t, DB_LOCKREQ *, int, DB_LOCKREQ **));
-#define lock_get lock_get@DB_VERSION_UNIQUE_NAME@
-int lock_get __P((DB_ENV *, u_int32_t, u_int32_t, const DBT *, db_lockmode_t, DB_LOCK *));
-#define lock_put lock_put@DB_VERSION_UNIQUE_NAME@
-int lock_put __P((DB_ENV *, DB_LOCK *));
-#define lock_detect lock_detect@DB_VERSION_UNIQUE_NAME@
-int lock_detect __P((DB_ENV *, u_int32_t, u_int32_t, int *));
-#define lock_stat lock_stat@DB_VERSION_UNIQUE_NAME@
-int lock_stat __P((DB_ENV *, DB_LOCK_STAT **));
-#define log_stat log_stat@DB_VERSION_UNIQUE_NAME@
-int log_stat __P((DB_ENV *, DB_LOG_STAT **));
-#define log_archive log_archive@DB_VERSION_UNIQUE_NAME@
-int log_archive __P((DB_ENV *, char **[], u_int32_t));
-#define log_compare log_compare@DB_VERSION_UNIQUE_NAME@
-int log_compare __P((const DB_LSN *, const DB_LSN *));
-#define log_get log_get@DB_VERSION_UNIQUE_NAME@
-int log_get __P((DB_ENV *, DB_LSN *, DBT *, u_int32_t));
-#define log_put log_put@DB_VERSION_UNIQUE_NAME@
-int log_put __P((DB_ENV *, DB_LSN *, const DBT *, u_int32_t));
-#define log_flush log_flush@DB_VERSION_UNIQUE_NAME@
-int log_flush __P((DB_ENV *, const DB_LSN *));
-#define log_file log_file@DB_VERSION_UNIQUE_NAME@
-int log_file __P((DB_ENV *, const DB_LSN *, char *, size_t));
-#define log_register log_register@DB_VERSION_UNIQUE_NAME@
-int log_register __P((DB_ENV *, DB *, const char *));
-#define log_unregister log_unregister@DB_VERSION_UNIQUE_NAME@
-int log_unregister __P((DB_ENV *, DB *));
-#define memp_fget memp_fget@DB_VERSION_UNIQUE_NAME@
-int memp_fget __P((DB_MPOOLFILE *, db_pgno_t *, u_int32_t, void *));
-#define memp_fopen memp_fopen@DB_VERSION_UNIQUE_NAME@
-int memp_fopen __P((DB_ENV *, const char *, u_int32_t, int, size_t, DB_MPOOL_FINFO *, DB_MPOOLFILE **));
-#define memp_fclose memp_fclose@DB_VERSION_UNIQUE_NAME@
-int memp_fclose __P((DB_MPOOLFILE *));
-#define memp_fput memp_fput@DB_VERSION_UNIQUE_NAME@
-int memp_fput __P((DB_MPOOLFILE *, void *, u_int32_t));
-#define memp_fset memp_fset@DB_VERSION_UNIQUE_NAME@
-int memp_fset __P((DB_MPOOLFILE *, void *, u_int32_t));
-#define memp_register memp_register@DB_VERSION_UNIQUE_NAME@
-int memp_register __P((DB_ENV *, int, int (*)(DB_ENV *, db_pgno_t, void *, DBT *), int (*)(DB_ENV *, db_pgno_t, void *, DBT *)));
-#define memp_stat memp_stat@DB_VERSION_UNIQUE_NAME@
-int memp_stat __P((DB_ENV *, DB_MPOOL_STAT **, DB_MPOOL_FSTAT ***));
-#define memp_sync memp_sync@DB_VERSION_UNIQUE_NAME@
-int memp_sync __P((DB_ENV *, DB_LSN *));
-#define memp_fsync memp_fsync@DB_VERSION_UNIQUE_NAME@
-int memp_fsync __P((DB_MPOOLFILE *));
-#define memp_trickle memp_trickle@DB_VERSION_UNIQUE_NAME@
-int memp_trickle __P((DB_ENV *, int, int *));
-#define db_env_set_func_close db_env_set_func_close@DB_VERSION_UNIQUE_NAME@
-int db_env_set_func_close __P((int (*)(int)));
-#define db_env_set_func_dirfree db_env_set_func_dirfree@DB_VERSION_UNIQUE_NAME@
-int db_env_set_func_dirfree __P((void (*)(char **, int)));
-#define db_env_set_func_dirlist db_env_set_func_dirlist@DB_VERSION_UNIQUE_NAME@
-int db_env_set_func_dirlist __P((int (*)(const char *, char ***, int *)));
-#define db_env_set_func_exists db_env_set_func_exists@DB_VERSION_UNIQUE_NAME@
-int db_env_set_func_exists __P((int (*)(const char *, int *)));
-#define db_env_set_func_free db_env_set_func_free@DB_VERSION_UNIQUE_NAME@
-int db_env_set_func_free __P((void (*)(void *)));
-#define db_env_set_func_fsync db_env_set_func_fsync@DB_VERSION_UNIQUE_NAME@
-int db_env_set_func_fsync __P((int (*)(int)));
-#define db_env_set_func_ioinfo db_env_set_func_ioinfo@DB_VERSION_UNIQUE_NAME@
-int db_env_set_func_ioinfo __P((int (*)(const char *, int, u_int32_t *, u_int32_t *, u_int32_t *)));
-#define db_env_set_func_malloc db_env_set_func_malloc@DB_VERSION_UNIQUE_NAME@
-int db_env_set_func_malloc __P((void *(*)(size_t)));
-#define db_env_set_func_map db_env_set_func_map@DB_VERSION_UNIQUE_NAME@
-int db_env_set_func_map __P((int (*)(char *, size_t, int, int, void **)));
-#define db_env_set_func_open db_env_set_func_open@DB_VERSION_UNIQUE_NAME@
-int db_env_set_func_open __P((int (*)(const char *, int, ...)));
-#define db_env_set_func_read db_env_set_func_read@DB_VERSION_UNIQUE_NAME@
-int db_env_set_func_read __P((ssize_t (*)(int, void *, size_t)));
-#define db_env_set_func_realloc db_env_set_func_realloc@DB_VERSION_UNIQUE_NAME@
-int db_env_set_func_realloc __P((void *(*)(void *, size_t)));
-#define db_env_set_func_rename db_env_set_func_rename@DB_VERSION_UNIQUE_NAME@
-int db_env_set_func_rename __P((int (*)(const char *, const char *)));
-#define db_env_set_func_seek db_env_set_func_seek@DB_VERSION_UNIQUE_NAME@
-int db_env_set_func_seek __P((int (*)(int, size_t, db_pgno_t, u_int32_t, int, int)));
-#define db_env_set_func_sleep db_env_set_func_sleep@DB_VERSION_UNIQUE_NAME@
-int db_env_set_func_sleep __P((int (*)(u_long, u_long)));
-#define db_env_set_func_unlink db_env_set_func_unlink@DB_VERSION_UNIQUE_NAME@
-int db_env_set_func_unlink __P((int (*)(const char *)));
-#define db_env_set_func_unmap db_env_set_func_unmap@DB_VERSION_UNIQUE_NAME@
-int db_env_set_func_unmap __P((int (*)(void *, size_t)));
-#define db_env_set_func_write db_env_set_func_write@DB_VERSION_UNIQUE_NAME@
-int db_env_set_func_write __P((ssize_t (*)(int, const void *, size_t)));
-#define db_env_set_func_yield db_env_set_func_yield@DB_VERSION_UNIQUE_NAME@
-int db_env_set_func_yield __P((int (*)(void)));
-#define db_env_set_pageyield db_env_set_pageyield@DB_VERSION_UNIQUE_NAME@
-int db_env_set_pageyield __P((int));
-#define db_env_set_panicstate db_env_set_panicstate@DB_VERSION_UNIQUE_NAME@
-int db_env_set_panicstate __P((int));
-#define db_env_set_region_init db_env_set_region_init@DB_VERSION_UNIQUE_NAME@
-int db_env_set_region_init __P((int));
-#define db_env_set_tas_spins db_env_set_tas_spins@DB_VERSION_UNIQUE_NAME@
-int db_env_set_tas_spins __P((u_int32_t));
-#define txn_begin txn_begin@DB_VERSION_UNIQUE_NAME@
-int txn_begin __P((DB_ENV *, DB_TXN *, DB_TXN **, u_int32_t));
-#define txn_commit txn_commit@DB_VERSION_UNIQUE_NAME@
-int txn_commit __P((DB_TXN *, u_int32_t));
-#define txn_abort txn_abort@DB_VERSION_UNIQUE_NAME@
-int txn_abort __P((DB_TXN *));
-#define txn_discard txn_discard@DB_VERSION_UNIQUE_NAME@
-int txn_discard __P((DB_TXN *, u_int32_t flags));
-#define txn_prepare txn_prepare@DB_VERSION_UNIQUE_NAME@
-int txn_prepare __P((DB_TXN *, u_int8_t *));
-#define txn_id txn_id@DB_VERSION_UNIQUE_NAME@
-u_int32_t txn_id __P((DB_TXN *));
-#define txn_checkpoint txn_checkpoint@DB_VERSION_UNIQUE_NAME@
-int txn_checkpoint __P((DB_ENV *, u_int32_t, u_int32_t, u_int32_t));
-#define txn_recover txn_recover@DB_VERSION_UNIQUE_NAME@
-int txn_recover __P((DB_ENV *, DB_PREPLIST *, long, long *, u_int32_t));
-#define txn_stat txn_stat@DB_VERSION_UNIQUE_NAME@
-int txn_stat __P((DB_ENV *, DB_TXN_STAT **));
-#if DB_DBM_HSEARCH != 0
-#define __db_ndbm_clearerr __db_ndbm_clearerr@DB_VERSION_UNIQUE_NAME@
-int __db_ndbm_clearerr __P((DBM *));
-#define __db_ndbm_close __db_ndbm_close@DB_VERSION_UNIQUE_NAME@
-void __db_ndbm_close __P((DBM *));
-#define __db_ndbm_delete __db_ndbm_delete@DB_VERSION_UNIQUE_NAME@
-int __db_ndbm_delete __P((DBM *, datum));
-#define __db_ndbm_dirfno __db_ndbm_dirfno@DB_VERSION_UNIQUE_NAME@
-int __db_ndbm_dirfno __P((DBM *));
-#define __db_ndbm_error __db_ndbm_error@DB_VERSION_UNIQUE_NAME@
-int __db_ndbm_error __P((DBM *));
-#define __db_ndbm_fetch __db_ndbm_fetch@DB_VERSION_UNIQUE_NAME@
-datum __db_ndbm_fetch __P((DBM *, datum));
-#define __db_ndbm_firstkey __db_ndbm_firstkey@DB_VERSION_UNIQUE_NAME@
-datum __db_ndbm_firstkey __P((DBM *));
-#define __db_ndbm_nextkey __db_ndbm_nextkey@DB_VERSION_UNIQUE_NAME@
-datum __db_ndbm_nextkey __P((DBM *));
-#define __db_ndbm_open __db_ndbm_open@DB_VERSION_UNIQUE_NAME@
-DBM *__db_ndbm_open __P((const char *, int, int));
-#define __db_ndbm_pagfno __db_ndbm_pagfno@DB_VERSION_UNIQUE_NAME@
-int __db_ndbm_pagfno __P((DBM *));
-#define __db_ndbm_rdonly __db_ndbm_rdonly@DB_VERSION_UNIQUE_NAME@
-int __db_ndbm_rdonly __P((DBM *));
-#define __db_ndbm_store __db_ndbm_store@DB_VERSION_UNIQUE_NAME@
-int __db_ndbm_store __P((DBM *, datum, datum, int));
-#define dbm_clearerr(a) __db_ndbm_clearerr@DB_VERSION_UNIQUE_NAME@(a)
-#define dbm_close(a) __db_ndbm_close@DB_VERSION_UNIQUE_NAME@(a)
-#define dbm_delete(a, b) __db_ndbm_delete@DB_VERSION_UNIQUE_NAME@(a, b)
-#define dbm_dirfno(a) __db_ndbm_dirfno@DB_VERSION_UNIQUE_NAME@(a)
-#define dbm_error(a) __db_ndbm_error@DB_VERSION_UNIQUE_NAME@(a)
-#define dbm_fetch(a, b) __db_ndbm_fetch@DB_VERSION_UNIQUE_NAME@(a, b)
-#define dbm_firstkey(a) __db_ndbm_firstkey@DB_VERSION_UNIQUE_NAME@(a)
-#define dbm_nextkey(a) __db_ndbm_nextkey@DB_VERSION_UNIQUE_NAME@(a)
-#define dbm_open(a, b, c) __db_ndbm_open@DB_VERSION_UNIQUE_NAME@(a, b, c)
-#define dbm_pagfno(a) __db_ndbm_pagfno@DB_VERSION_UNIQUE_NAME@(a)
-#define dbm_rdonly(a) __db_ndbm_rdonly@DB_VERSION_UNIQUE_NAME@(a)
-#define dbm_store(a, b, c, d) __db_ndbm_store@DB_VERSION_UNIQUE_NAME@(a, b, c, d)
-#define dbminit(a) __db_dbm_init@DB_VERSION_UNIQUE_NAME@(a)
-#define dbmclose __db_dbm_close@DB_VERSION_UNIQUE_NAME@
-#if !defined(__cplusplus)
-#define delete(a) __db_dbm_delete@DB_VERSION_UNIQUE_NAME@(a)
-#endif
-#define fetch(a) __db_dbm_fetch@DB_VERSION_UNIQUE_NAME@(a)
-#define firstkey __db_dbm_firstkey@DB_VERSION_UNIQUE_NAME@
-#define nextkey(a) __db_dbm_nextkey@DB_VERSION_UNIQUE_NAME@(a)
-#define store(a, b) __db_dbm_store@DB_VERSION_UNIQUE_NAME@(a, b)
-#define __db_dbm_close __db_dbm_close@DB_VERSION_UNIQUE_NAME@
-int __db_dbm_close __P((void));
-#define __db_dbm_dbrdonly __db_dbm_dbrdonly@DB_VERSION_UNIQUE_NAME@
-int __db_dbm_dbrdonly __P((void));
-#define __db_dbm_delete __db_dbm_delete@DB_VERSION_UNIQUE_NAME@
-int __db_dbm_delete __P((datum));
-#define __db_dbm_dirf __db_dbm_dirf@DB_VERSION_UNIQUE_NAME@
-int __db_dbm_dirf __P((void));
-#define __db_dbm_fetch __db_dbm_fetch@DB_VERSION_UNIQUE_NAME@
-datum __db_dbm_fetch __P((datum));
-#define __db_dbm_firstkey __db_dbm_firstkey@DB_VERSION_UNIQUE_NAME@
-datum __db_dbm_firstkey __P((void));
-#define __db_dbm_init __db_dbm_init@DB_VERSION_UNIQUE_NAME@
-int __db_dbm_init __P((char *));
-#define __db_dbm_nextkey __db_dbm_nextkey@DB_VERSION_UNIQUE_NAME@
-datum __db_dbm_nextkey __P((datum));
-#define __db_dbm_pagf __db_dbm_pagf@DB_VERSION_UNIQUE_NAME@
-int __db_dbm_pagf __P((void));
-#define __db_dbm_store __db_dbm_store@DB_VERSION_UNIQUE_NAME@
-int __db_dbm_store __P((datum, datum));
-#endif
-#if DB_DBM_HSEARCH != 0
-#define hcreate(a) __db_hcreate@DB_VERSION_UNIQUE_NAME@(a)
-#define hdestroy __db_hdestroy@DB_VERSION_UNIQUE_NAME@
-#define hsearch(a, b) __db_hsearch@DB_VERSION_UNIQUE_NAME@(a, b)
-#define __db_hcreate __db_hcreate@DB_VERSION_UNIQUE_NAME@
-int __db_hcreate __P((size_t));
-#define __db_hsearch __db_hsearch@DB_VERSION_UNIQUE_NAME@
-ENTRY *__db_hsearch __P((ENTRY, ACTION));
-#define __db_hdestroy __db_hdestroy@DB_VERSION_UNIQUE_NAME@
-void __db_hdestroy __P((void));
-#endif
-#define __db_global_values __db_global_values@DB_VERSION_UNIQUE_NAME@
-#define __db_jump __db_jump@DB_VERSION_UNIQUE_NAME@
-#define db_xa_switch db_xa_switch@DB_VERSION_UNIQUE_NAME@
-#if defined(__cplusplus)
-}
-#endif
-
-#endif /* !_DB_H_ */
diff --git a/db/include_auto/hash_auto.h b/db/include_auto/hash_auto.h
deleted file mode 100644
index ba1f83d1b..000000000
--- a/db/include_auto/hash_auto.h
+++ /dev/null
@@ -1,195 +0,0 @@
-/* Do not edit: automatically built by gen_rec.awk. */
-
-#ifndef ham_AUTO_H
-#define ham_AUTO_H
-#define DB_ham_insdel 21
-typedef struct _ham_insdel_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- u_int32_t opcode;
- int32_t fileid;
- db_pgno_t pgno;
- u_int32_t ndx;
- DB_LSN pagelsn;
- DBT key;
- DBT data;
-} __ham_insdel_args;
-
-#define DB_ham_newpage 22
-typedef struct _ham_newpage_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- u_int32_t opcode;
- int32_t fileid;
- db_pgno_t prev_pgno;
- DB_LSN prevlsn;
- db_pgno_t new_pgno;
- DB_LSN pagelsn;
- db_pgno_t next_pgno;
- DB_LSN nextlsn;
-} __ham_newpage_args;
-
-#define DB_ham_splitmeta 23
-typedef struct _ham_splitmeta_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- u_int32_t bucket;
- u_int32_t ovflpoint;
- u_int32_t spares;
- DB_LSN metalsn;
-} __ham_splitmeta_args;
-
-#define DB_ham_splitdata 24
-typedef struct _ham_splitdata_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- u_int32_t opcode;
- db_pgno_t pgno;
- DBT pageimage;
- DB_LSN pagelsn;
-} __ham_splitdata_args;
-
-#define DB_ham_replace 25
-typedef struct _ham_replace_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- db_pgno_t pgno;
- u_int32_t ndx;
- DB_LSN pagelsn;
- int32_t off;
- DBT olditem;
- DBT newitem;
- u_int32_t makedup;
-} __ham_replace_args;
-
-#define DB_ham_newpgno 26
-typedef struct _ham_newpgno_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- u_int32_t opcode;
- int32_t fileid;
- db_pgno_t pgno;
- db_pgno_t free_pgno;
- u_int32_t old_type;
- db_pgno_t old_pgno;
- u_int32_t new_type;
- DB_LSN pagelsn;
- DB_LSN metalsn;
-} __ham_newpgno_args;
-
-#define DB_ham_ovfl 27
-typedef struct _ham_ovfl_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- db_pgno_t start_pgno;
- u_int32_t npages;
- db_pgno_t free_pgno;
- u_int32_t ovflpoint;
- DB_LSN metalsn;
-} __ham_ovfl_args;
-
-#define DB_ham_copypage 28
-typedef struct _ham_copypage_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- db_pgno_t pgno;
- DB_LSN pagelsn;
- db_pgno_t next_pgno;
- DB_LSN nextlsn;
- db_pgno_t nnext_pgno;
- DB_LSN nnextlsn;
- DBT page;
-} __ham_copypage_args;
-
-#define DB_ham_metagroup 29
-typedef struct _ham_metagroup_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- u_int32_t bucket;
- db_pgno_t pgno;
- DB_LSN metalsn;
- DB_LSN pagelsn;
-} __ham_metagroup_args;
-
-#define DB_ham_groupalloc1 30
-typedef struct _ham_groupalloc1_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- db_pgno_t pgno;
- DB_LSN metalsn;
- DB_LSN mmetalsn;
- db_pgno_t start_pgno;
- u_int32_t num;
-} __ham_groupalloc1_args;
-
-#define DB_ham_groupalloc2 31
-typedef struct _ham_groupalloc2_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- DB_LSN meta_lsn;
- DB_LSN alloc_lsn;
- db_pgno_t start_pgno;
- u_int32_t num;
- db_pgno_t free;
-} __ham_groupalloc2_args;
-
-#define DB_ham_groupalloc 32
-typedef struct _ham_groupalloc_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- DB_LSN meta_lsn;
- db_pgno_t start_pgno;
- u_int32_t num;
- db_pgno_t free;
-} __ham_groupalloc_args;
-
-#define DB_ham_curadj 33
-typedef struct _ham_curadj_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- db_pgno_t pgno;
- u_int32_t indx;
- u_int32_t len;
- u_int32_t dup_off;
- int add;
- int is_dup;
- u_int32_t order;
-} __ham_curadj_args;
-
-#define DB_ham_chgpg 34
-typedef struct _ham_chgpg_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- db_ham_mode mode;
- db_pgno_t old_pgno;
- db_pgno_t new_pgno;
- u_int32_t old_indx;
- u_int32_t new_indx;
-} __ham_chgpg_args;
-
-#endif
diff --git a/db/include_auto/hash_ext.h b/db/include_auto/hash_ext.h
deleted file mode 100644
index 7776d916e..000000000
--- a/db/include_auto/hash_ext.h
+++ /dev/null
@@ -1,121 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_include. */
-#ifndef _hash_ext_h_
-#define _hash_ext_h_
-#if defined(__cplusplus)
-extern "C" {
-#endif
-int __ham_metachk __P((DB *, const char *, HMETA *));
-int __ham_open __P((DB *, const char *, db_pgno_t, u_int32_t));
-int __ham_quick_delete __P((DBC *));
-int __ham_c_init __P((DBC *));
-int __ham_c_count __P((DBC *, db_recno_t *));
-int __ham_c_dup __P((DBC *, DBC *));
-u_int32_t __ham_call_hash __P((DBC *, u_int8_t *, int32_t));
-int __ham_init_dbt __P((DB_ENV *, DBT *, u_int32_t, void **, u_int32_t *));
-int __ham_c_update __P((DBC *, u_int32_t, int, int));
-int __ham_get_clist __P((DB *, db_pgno_t, u_int32_t, DBC ***));
-int __ham_c_chgpg __P((DBC *, db_pgno_t, u_int32_t, db_pgno_t, u_int32_t));
-int __ham_insdel_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, u_int32_t, int32_t, db_pgno_t, u_int32_t, DB_LSN *, const DBT *, const DBT *));
-int __ham_insdel_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __ham_insdel_read __P((DB_ENV *, void *, __ham_insdel_args **));
-int __ham_newpage_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, u_int32_t, int32_t, db_pgno_t, DB_LSN *, db_pgno_t, DB_LSN *, db_pgno_t, DB_LSN *));
-int __ham_newpage_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __ham_newpage_read __P((DB_ENV *, void *, __ham_newpage_args **));
-int __ham_splitmeta_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __ham_splitmeta_read __P((DB_ENV *, void *, __ham_splitmeta_args **));
-int __ham_splitdata_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, u_int32_t, db_pgno_t, const DBT *, DB_LSN *));
-int __ham_splitdata_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __ham_splitdata_read __P((DB_ENV *, void *, __ham_splitdata_args **));
-int __ham_replace_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, u_int32_t, DB_LSN *, int32_t, const DBT *, const DBT *, u_int32_t));
-int __ham_replace_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __ham_replace_read __P((DB_ENV *, void *, __ham_replace_args **));
-int __ham_newpgno_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __ham_newpgno_read __P((DB_ENV *, void *, __ham_newpgno_args **));
-int __ham_ovfl_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __ham_ovfl_read __P((DB_ENV *, void *, __ham_ovfl_args **));
-int __ham_copypage_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, DB_LSN *, db_pgno_t, DB_LSN *, db_pgno_t, DB_LSN *, const DBT *));
-int __ham_copypage_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __ham_copypage_read __P((DB_ENV *, void *, __ham_copypage_args **));
-int __ham_metagroup_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, u_int32_t, db_pgno_t, DB_LSN *, DB_LSN *));
-int __ham_metagroup_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __ham_metagroup_read __P((DB_ENV *, void *, __ham_metagroup_args **));
-int __ham_groupalloc1_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __ham_groupalloc1_read __P((DB_ENV *, void *, __ham_groupalloc1_args **));
-int __ham_groupalloc2_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __ham_groupalloc2_read __P((DB_ENV *, void *, __ham_groupalloc2_args **));
-int __ham_groupalloc_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, DB_LSN *, db_pgno_t, u_int32_t, db_pgno_t));
-int __ham_groupalloc_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __ham_groupalloc_read __P((DB_ENV *, void *, __ham_groupalloc_args **));
-int __ham_curadj_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, u_int32_t, u_int32_t, u_int32_t, int, int, u_int32_t));
-int __ham_curadj_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __ham_curadj_read __P((DB_ENV *, void *, __ham_curadj_args **));
-int __ham_chgpg_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_ham_mode, db_pgno_t, db_pgno_t, u_int32_t, u_int32_t));
-int __ham_chgpg_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __ham_chgpg_read __P((DB_ENV *, void *, __ham_chgpg_args **));
-int __ham_init_print __P((DB_ENV *));
-int __ham_init_recover __P((DB_ENV *));
-int __ham_pgin __P((DB_ENV *, db_pgno_t, void *, DBT *));
-int __ham_pgout __P((DB_ENV *, db_pgno_t, void *, DBT *));
-int __ham_mswap __P((void *));
-int __ham_add_dup __P((DBC *, DBT *, u_int32_t, db_pgno_t *));
-int __ham_dup_convert __P((DBC *));
-int __ham_make_dup __P((DB_ENV *, const DBT *, DBT *d, void **, u_int32_t *));
-void __ham_dsearch __P((DBC *, DBT *, u_int32_t *, int *));
-void __ham_cprint __P((DBC *));
-u_int32_t __ham_func2 __P((DB *, const void *, u_int32_t));
-u_int32_t __ham_func3 __P((DB *, const void *, u_int32_t));
-u_int32_t __ham_func4 __P((DB *, const void *, u_int32_t));
-u_int32_t __ham_func5 __P((DB *, const void *, u_int32_t));
-u_int32_t __ham_test __P((DB *, const void *, u_int32_t));
-int __ham_get_meta __P((DBC *));
-int __ham_release_meta __P((DBC *));
-int __ham_dirty_meta __P((DBC *));
-int __ham_db_create __P((DB *));
-int __ham_db_close __P((DB *));
-int __ham_item __P((DBC *, db_lockmode_t, db_pgno_t *));
-int __ham_item_reset __P((DBC *));
-void __ham_item_init __P((DBC *));
-int __ham_item_last __P((DBC *, db_lockmode_t, db_pgno_t *));
-int __ham_item_first __P((DBC *, db_lockmode_t, db_pgno_t *));
-int __ham_item_prev __P((DBC *, db_lockmode_t, db_pgno_t *));
-int __ham_item_next __P((DBC *, db_lockmode_t, db_pgno_t *));
-void __ham_putitem __P((PAGE *p, const DBT *, int));
-void __ham_reputpair __P((PAGE *p, u_int32_t, u_int32_t, const DBT *, const DBT *));
-int __ham_del_pair __P((DBC *, int));
-int __ham_replpair __P((DBC *, DBT *, u_int32_t));
-void __ham_onpage_replace __P((PAGE *, size_t, u_int32_t, int32_t, int32_t, DBT *));
-int __ham_split_page __P((DBC *, u_int32_t, u_int32_t));
-int __ham_add_el __P((DBC *, const DBT *, const DBT *, int));
-void __ham_copy_item __P((size_t, PAGE *, u_int32_t, PAGE *));
-int __ham_add_ovflpage __P((DBC *, PAGE *, int, PAGE **));
-int __ham_get_cpage __P((DBC *, db_lockmode_t));
-int __ham_next_cpage __P((DBC *, db_pgno_t, int));
-int __ham_lock_bucket __P((DBC *, db_lockmode_t));
-void __ham_dpair __P((DB *, PAGE *, u_int32_t));
-int __ham_insdel_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __ham_newpage_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __ham_replace_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __ham_splitdata_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __ham_copypage_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __ham_metagroup_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __ham_groupalloc_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __ham_curadj_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __ham_chgpg_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __ham_reclaim __P((DB *, DB_TXN *txn));
-int __ham_truncate __P((DB *, DB_TXN *txn, u_int32_t *));
-int __ham_stat __P((DB *, void *, u_int32_t));
-int __ham_traverse __P((DBC *, db_lockmode_t, int (*)(DB *, PAGE *, void *, int *), void *, int));
-int __ham_30_hashmeta __P((DB *, char *, u_int8_t *));
-int __ham_30_sizefix __P((DB *, DB_FH *, char *, u_int8_t *));
-int __ham_31_hashmeta __P((DB *, char *, u_int32_t, DB_FH *, PAGE *, int *));
-int __ham_31_hash __P((DB *, char *, u_int32_t, DB_FH *, PAGE *, int *));
-int __ham_vrfy_meta __P((DB *, VRFY_DBINFO *, HMETA *, db_pgno_t, u_int32_t));
-int __ham_vrfy __P((DB *, VRFY_DBINFO *, PAGE *, db_pgno_t, u_int32_t));
-int __ham_vrfy_structure __P((DB *, VRFY_DBINFO *, db_pgno_t, u_int32_t));
-int __ham_vrfy_hashing __P((DB *, u_int32_t, HMETA *, u_int32_t, db_pgno_t, u_int32_t, u_int32_t (*) __P((DB *, const void *, u_int32_t))));
-int __ham_salvage __P((DB *, VRFY_DBINFO *, db_pgno_t, PAGE *, void *, int (*)(void *, const void *), u_int32_t));
-int __ham_meta2pgset __P((DB *, VRFY_DBINFO *, HMETA *, u_int32_t, DB *));
-#if defined(__cplusplus)
-}
-#endif
-#endif /* _hash_ext_h_ */
diff --git a/db/include_auto/hash_ext.in b/db/include_auto/hash_ext.in
deleted file mode 100644
index fed1a8089..000000000
--- a/db/include_auto/hash_ext.in
+++ /dev/null
@@ -1,232 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_include. */
-#ifndef _hash_ext_h_
-#define _hash_ext_h_
-#if defined(__cplusplus)
-extern "C" {
-#endif
-#define __ham_metachk __ham_metachk@DB_VERSION_UNIQUE_NAME@
-int __ham_metachk __P((DB *, const char *, HMETA *));
-#define __ham_open __ham_open@DB_VERSION_UNIQUE_NAME@
-int __ham_open __P((DB *, const char *, db_pgno_t, u_int32_t));
-#define __ham_quick_delete __ham_quick_delete@DB_VERSION_UNIQUE_NAME@
-int __ham_quick_delete __P((DBC *));
-#define __ham_c_init __ham_c_init@DB_VERSION_UNIQUE_NAME@
-int __ham_c_init __P((DBC *));
-#define __ham_c_count __ham_c_count@DB_VERSION_UNIQUE_NAME@
-int __ham_c_count __P((DBC *, db_recno_t *));
-#define __ham_c_dup __ham_c_dup@DB_VERSION_UNIQUE_NAME@
-int __ham_c_dup __P((DBC *, DBC *));
-#define __ham_call_hash __ham_call_hash@DB_VERSION_UNIQUE_NAME@
-u_int32_t __ham_call_hash __P((DBC *, u_int8_t *, int32_t));
-#define __ham_init_dbt __ham_init_dbt@DB_VERSION_UNIQUE_NAME@
-int __ham_init_dbt __P((DB_ENV *, DBT *, u_int32_t, void **, u_int32_t *));
-#define __ham_c_update __ham_c_update@DB_VERSION_UNIQUE_NAME@
-int __ham_c_update __P((DBC *, u_int32_t, int, int));
-#define __ham_get_clist __ham_get_clist@DB_VERSION_UNIQUE_NAME@
-int __ham_get_clist __P((DB *, db_pgno_t, u_int32_t, DBC ***));
-#define __ham_c_chgpg __ham_c_chgpg@DB_VERSION_UNIQUE_NAME@
-int __ham_c_chgpg __P((DBC *, db_pgno_t, u_int32_t, db_pgno_t, u_int32_t));
-#define __ham_insdel_log __ham_insdel_log@DB_VERSION_UNIQUE_NAME@
-int __ham_insdel_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, u_int32_t, int32_t, db_pgno_t, u_int32_t, DB_LSN *, const DBT *, const DBT *));
-#define __ham_insdel_print __ham_insdel_print@DB_VERSION_UNIQUE_NAME@
-int __ham_insdel_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __ham_insdel_read __ham_insdel_read@DB_VERSION_UNIQUE_NAME@
-int __ham_insdel_read __P((DB_ENV *, void *, __ham_insdel_args **));
-#define __ham_newpage_log __ham_newpage_log@DB_VERSION_UNIQUE_NAME@
-int __ham_newpage_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, u_int32_t, int32_t, db_pgno_t, DB_LSN *, db_pgno_t, DB_LSN *, db_pgno_t, DB_LSN *));
-#define __ham_newpage_print __ham_newpage_print@DB_VERSION_UNIQUE_NAME@
-int __ham_newpage_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __ham_newpage_read __ham_newpage_read@DB_VERSION_UNIQUE_NAME@
-int __ham_newpage_read __P((DB_ENV *, void *, __ham_newpage_args **));
-#define __ham_splitmeta_print __ham_splitmeta_print@DB_VERSION_UNIQUE_NAME@
-int __ham_splitmeta_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __ham_splitmeta_read __ham_splitmeta_read@DB_VERSION_UNIQUE_NAME@
-int __ham_splitmeta_read __P((DB_ENV *, void *, __ham_splitmeta_args **));
-#define __ham_splitdata_log __ham_splitdata_log@DB_VERSION_UNIQUE_NAME@
-int __ham_splitdata_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, u_int32_t, db_pgno_t, const DBT *, DB_LSN *));
-#define __ham_splitdata_print __ham_splitdata_print@DB_VERSION_UNIQUE_NAME@
-int __ham_splitdata_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __ham_splitdata_read __ham_splitdata_read@DB_VERSION_UNIQUE_NAME@
-int __ham_splitdata_read __P((DB_ENV *, void *, __ham_splitdata_args **));
-#define __ham_replace_log __ham_replace_log@DB_VERSION_UNIQUE_NAME@
-int __ham_replace_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, u_int32_t, DB_LSN *, int32_t, const DBT *, const DBT *, u_int32_t));
-#define __ham_replace_print __ham_replace_print@DB_VERSION_UNIQUE_NAME@
-int __ham_replace_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __ham_replace_read __ham_replace_read@DB_VERSION_UNIQUE_NAME@
-int __ham_replace_read __P((DB_ENV *, void *, __ham_replace_args **));
-#define __ham_newpgno_print __ham_newpgno_print@DB_VERSION_UNIQUE_NAME@
-int __ham_newpgno_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __ham_newpgno_read __ham_newpgno_read@DB_VERSION_UNIQUE_NAME@
-int __ham_newpgno_read __P((DB_ENV *, void *, __ham_newpgno_args **));
-#define __ham_ovfl_print __ham_ovfl_print@DB_VERSION_UNIQUE_NAME@
-int __ham_ovfl_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __ham_ovfl_read __ham_ovfl_read@DB_VERSION_UNIQUE_NAME@
-int __ham_ovfl_read __P((DB_ENV *, void *, __ham_ovfl_args **));
-#define __ham_copypage_log __ham_copypage_log@DB_VERSION_UNIQUE_NAME@
-int __ham_copypage_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, DB_LSN *, db_pgno_t, DB_LSN *, db_pgno_t, DB_LSN *, const DBT *));
-#define __ham_copypage_print __ham_copypage_print@DB_VERSION_UNIQUE_NAME@
-int __ham_copypage_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __ham_copypage_read __ham_copypage_read@DB_VERSION_UNIQUE_NAME@
-int __ham_copypage_read __P((DB_ENV *, void *, __ham_copypage_args **));
-#define __ham_metagroup_log __ham_metagroup_log@DB_VERSION_UNIQUE_NAME@
-int __ham_metagroup_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, u_int32_t, db_pgno_t, DB_LSN *, DB_LSN *));
-#define __ham_metagroup_print __ham_metagroup_print@DB_VERSION_UNIQUE_NAME@
-int __ham_metagroup_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __ham_metagroup_read __ham_metagroup_read@DB_VERSION_UNIQUE_NAME@
-int __ham_metagroup_read __P((DB_ENV *, void *, __ham_metagroup_args **));
-#define __ham_groupalloc1_print __ham_groupalloc1_print@DB_VERSION_UNIQUE_NAME@
-int __ham_groupalloc1_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __ham_groupalloc1_read __ham_groupalloc1_read@DB_VERSION_UNIQUE_NAME@
-int __ham_groupalloc1_read __P((DB_ENV *, void *, __ham_groupalloc1_args **));
-#define __ham_groupalloc2_print __ham_groupalloc2_print@DB_VERSION_UNIQUE_NAME@
-int __ham_groupalloc2_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __ham_groupalloc2_read __ham_groupalloc2_read@DB_VERSION_UNIQUE_NAME@
-int __ham_groupalloc2_read __P((DB_ENV *, void *, __ham_groupalloc2_args **));
-#define __ham_groupalloc_log __ham_groupalloc_log@DB_VERSION_UNIQUE_NAME@
-int __ham_groupalloc_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, DB_LSN *, db_pgno_t, u_int32_t, db_pgno_t));
-#define __ham_groupalloc_print __ham_groupalloc_print@DB_VERSION_UNIQUE_NAME@
-int __ham_groupalloc_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __ham_groupalloc_read __ham_groupalloc_read@DB_VERSION_UNIQUE_NAME@
-int __ham_groupalloc_read __P((DB_ENV *, void *, __ham_groupalloc_args **));
-#define __ham_curadj_log __ham_curadj_log@DB_VERSION_UNIQUE_NAME@
-int __ham_curadj_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, u_int32_t, u_int32_t, u_int32_t, int, int, u_int32_t));
-#define __ham_curadj_print __ham_curadj_print@DB_VERSION_UNIQUE_NAME@
-int __ham_curadj_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __ham_curadj_read __ham_curadj_read@DB_VERSION_UNIQUE_NAME@
-int __ham_curadj_read __P((DB_ENV *, void *, __ham_curadj_args **));
-#define __ham_chgpg_log __ham_chgpg_log@DB_VERSION_UNIQUE_NAME@
-int __ham_chgpg_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_ham_mode, db_pgno_t, db_pgno_t, u_int32_t, u_int32_t));
-#define __ham_chgpg_print __ham_chgpg_print@DB_VERSION_UNIQUE_NAME@
-int __ham_chgpg_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __ham_chgpg_read __ham_chgpg_read@DB_VERSION_UNIQUE_NAME@
-int __ham_chgpg_read __P((DB_ENV *, void *, __ham_chgpg_args **));
-#define __ham_init_print __ham_init_print@DB_VERSION_UNIQUE_NAME@
-int __ham_init_print __P((DB_ENV *));
-#define __ham_init_recover __ham_init_recover@DB_VERSION_UNIQUE_NAME@
-int __ham_init_recover __P((DB_ENV *));
-#define __ham_pgin __ham_pgin@DB_VERSION_UNIQUE_NAME@
-int __ham_pgin __P((DB_ENV *, db_pgno_t, void *, DBT *));
-#define __ham_pgout __ham_pgout@DB_VERSION_UNIQUE_NAME@
-int __ham_pgout __P((DB_ENV *, db_pgno_t, void *, DBT *));
-#define __ham_mswap __ham_mswap@DB_VERSION_UNIQUE_NAME@
-int __ham_mswap __P((void *));
-#define __ham_add_dup __ham_add_dup@DB_VERSION_UNIQUE_NAME@
-int __ham_add_dup __P((DBC *, DBT *, u_int32_t, db_pgno_t *));
-#define __ham_dup_convert __ham_dup_convert@DB_VERSION_UNIQUE_NAME@
-int __ham_dup_convert __P((DBC *));
-#define __ham_make_dup __ham_make_dup@DB_VERSION_UNIQUE_NAME@
-int __ham_make_dup __P((DB_ENV *, const DBT *, DBT *d, void **, u_int32_t *));
-#define __ham_dsearch __ham_dsearch@DB_VERSION_UNIQUE_NAME@
-void __ham_dsearch __P((DBC *, DBT *, u_int32_t *, int *));
-#define __ham_cprint __ham_cprint@DB_VERSION_UNIQUE_NAME@
-void __ham_cprint __P((DBC *));
-#define __ham_func2 __ham_func2@DB_VERSION_UNIQUE_NAME@
-u_int32_t __ham_func2 __P((DB *, const void *, u_int32_t));
-#define __ham_func3 __ham_func3@DB_VERSION_UNIQUE_NAME@
-u_int32_t __ham_func3 __P((DB *, const void *, u_int32_t));
-#define __ham_func4 __ham_func4@DB_VERSION_UNIQUE_NAME@
-u_int32_t __ham_func4 __P((DB *, const void *, u_int32_t));
-#define __ham_func5 __ham_func5@DB_VERSION_UNIQUE_NAME@
-u_int32_t __ham_func5 __P((DB *, const void *, u_int32_t));
-#define __ham_test __ham_test@DB_VERSION_UNIQUE_NAME@
-u_int32_t __ham_test __P((DB *, const void *, u_int32_t));
-#define __ham_get_meta __ham_get_meta@DB_VERSION_UNIQUE_NAME@
-int __ham_get_meta __P((DBC *));
-#define __ham_release_meta __ham_release_meta@DB_VERSION_UNIQUE_NAME@
-int __ham_release_meta __P((DBC *));
-#define __ham_dirty_meta __ham_dirty_meta@DB_VERSION_UNIQUE_NAME@
-int __ham_dirty_meta __P((DBC *));
-#define __ham_db_create __ham_db_create@DB_VERSION_UNIQUE_NAME@
-int __ham_db_create __P((DB *));
-#define __ham_db_close __ham_db_close@DB_VERSION_UNIQUE_NAME@
-int __ham_db_close __P((DB *));
-#define __ham_item __ham_item@DB_VERSION_UNIQUE_NAME@
-int __ham_item __P((DBC *, db_lockmode_t, db_pgno_t *));
-#define __ham_item_reset __ham_item_reset@DB_VERSION_UNIQUE_NAME@
-int __ham_item_reset __P((DBC *));
-#define __ham_item_init __ham_item_init@DB_VERSION_UNIQUE_NAME@
-void __ham_item_init __P((DBC *));
-#define __ham_item_last __ham_item_last@DB_VERSION_UNIQUE_NAME@
-int __ham_item_last __P((DBC *, db_lockmode_t, db_pgno_t *));
-#define __ham_item_first __ham_item_first@DB_VERSION_UNIQUE_NAME@
-int __ham_item_first __P((DBC *, db_lockmode_t, db_pgno_t *));
-#define __ham_item_prev __ham_item_prev@DB_VERSION_UNIQUE_NAME@
-int __ham_item_prev __P((DBC *, db_lockmode_t, db_pgno_t *));
-#define __ham_item_next __ham_item_next@DB_VERSION_UNIQUE_NAME@
-int __ham_item_next __P((DBC *, db_lockmode_t, db_pgno_t *));
-#define __ham_putitem __ham_putitem@DB_VERSION_UNIQUE_NAME@
-void __ham_putitem __P((PAGE *p, const DBT *, int));
-#define __ham_reputpair __ham_reputpair@DB_VERSION_UNIQUE_NAME@
-void __ham_reputpair __P((PAGE *p, u_int32_t, u_int32_t, const DBT *, const DBT *));
-#define __ham_del_pair __ham_del_pair@DB_VERSION_UNIQUE_NAME@
-int __ham_del_pair __P((DBC *, int));
-#define __ham_replpair __ham_replpair@DB_VERSION_UNIQUE_NAME@
-int __ham_replpair __P((DBC *, DBT *, u_int32_t));
-#define __ham_onpage_replace __ham_onpage_replace@DB_VERSION_UNIQUE_NAME@
-void __ham_onpage_replace __P((PAGE *, size_t, u_int32_t, int32_t, int32_t, DBT *));
-#define __ham_split_page __ham_split_page@DB_VERSION_UNIQUE_NAME@
-int __ham_split_page __P((DBC *, u_int32_t, u_int32_t));
-#define __ham_add_el __ham_add_el@DB_VERSION_UNIQUE_NAME@
-int __ham_add_el __P((DBC *, const DBT *, const DBT *, int));
-#define __ham_copy_item __ham_copy_item@DB_VERSION_UNIQUE_NAME@
-void __ham_copy_item __P((size_t, PAGE *, u_int32_t, PAGE *));
-#define __ham_add_ovflpage __ham_add_ovflpage@DB_VERSION_UNIQUE_NAME@
-int __ham_add_ovflpage __P((DBC *, PAGE *, int, PAGE **));
-#define __ham_get_cpage __ham_get_cpage@DB_VERSION_UNIQUE_NAME@
-int __ham_get_cpage __P((DBC *, db_lockmode_t));
-#define __ham_next_cpage __ham_next_cpage@DB_VERSION_UNIQUE_NAME@
-int __ham_next_cpage __P((DBC *, db_pgno_t, int));
-#define __ham_lock_bucket __ham_lock_bucket@DB_VERSION_UNIQUE_NAME@
-int __ham_lock_bucket __P((DBC *, db_lockmode_t));
-#define __ham_dpair __ham_dpair@DB_VERSION_UNIQUE_NAME@
-void __ham_dpair __P((DB *, PAGE *, u_int32_t));
-#define __ham_insdel_recover __ham_insdel_recover@DB_VERSION_UNIQUE_NAME@
-int __ham_insdel_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __ham_newpage_recover __ham_newpage_recover@DB_VERSION_UNIQUE_NAME@
-int __ham_newpage_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __ham_replace_recover __ham_replace_recover@DB_VERSION_UNIQUE_NAME@
-int __ham_replace_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __ham_splitdata_recover __ham_splitdata_recover@DB_VERSION_UNIQUE_NAME@
-int __ham_splitdata_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __ham_copypage_recover __ham_copypage_recover@DB_VERSION_UNIQUE_NAME@
-int __ham_copypage_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __ham_metagroup_recover __ham_metagroup_recover@DB_VERSION_UNIQUE_NAME@
-int __ham_metagroup_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __ham_groupalloc_recover __ham_groupalloc_recover@DB_VERSION_UNIQUE_NAME@
-int __ham_groupalloc_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __ham_curadj_recover __ham_curadj_recover@DB_VERSION_UNIQUE_NAME@
-int __ham_curadj_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __ham_chgpg_recover __ham_chgpg_recover@DB_VERSION_UNIQUE_NAME@
-int __ham_chgpg_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __ham_reclaim __ham_reclaim@DB_VERSION_UNIQUE_NAME@
-int __ham_reclaim __P((DB *, DB_TXN *txn));
-#define __ham_truncate __ham_truncate@DB_VERSION_UNIQUE_NAME@
-int __ham_truncate __P((DB *, DB_TXN *txn, u_int32_t *));
-#define __ham_stat __ham_stat@DB_VERSION_UNIQUE_NAME@
-int __ham_stat __P((DB *, void *, u_int32_t));
-#define __ham_traverse __ham_traverse@DB_VERSION_UNIQUE_NAME@
-int __ham_traverse __P((DBC *, db_lockmode_t, int (*)(DB *, PAGE *, void *, int *), void *, int));
-#define __ham_30_hashmeta __ham_30_hashmeta@DB_VERSION_UNIQUE_NAME@
-int __ham_30_hashmeta __P((DB *, char *, u_int8_t *));
-#define __ham_30_sizefix __ham_30_sizefix@DB_VERSION_UNIQUE_NAME@
-int __ham_30_sizefix __P((DB *, DB_FH *, char *, u_int8_t *));
-#define __ham_31_hashmeta __ham_31_hashmeta@DB_VERSION_UNIQUE_NAME@
-int __ham_31_hashmeta __P((DB *, char *, u_int32_t, DB_FH *, PAGE *, int *));
-#define __ham_31_hash __ham_31_hash@DB_VERSION_UNIQUE_NAME@
-int __ham_31_hash __P((DB *, char *, u_int32_t, DB_FH *, PAGE *, int *));
-#define __ham_vrfy_meta __ham_vrfy_meta@DB_VERSION_UNIQUE_NAME@
-int __ham_vrfy_meta __P((DB *, VRFY_DBINFO *, HMETA *, db_pgno_t, u_int32_t));
-#define __ham_vrfy __ham_vrfy@DB_VERSION_UNIQUE_NAME@
-int __ham_vrfy __P((DB *, VRFY_DBINFO *, PAGE *, db_pgno_t, u_int32_t));
-#define __ham_vrfy_structure __ham_vrfy_structure@DB_VERSION_UNIQUE_NAME@
-int __ham_vrfy_structure __P((DB *, VRFY_DBINFO *, db_pgno_t, u_int32_t));
-#define __ham_vrfy_hashing __ham_vrfy_hashing@DB_VERSION_UNIQUE_NAME@
-int __ham_vrfy_hashing __P((DB *, u_int32_t, HMETA *, u_int32_t, db_pgno_t, u_int32_t, u_int32_t (*) __P((DB *, const void *, u_int32_t))));
-#define __ham_salvage __ham_salvage@DB_VERSION_UNIQUE_NAME@
-int __ham_salvage __P((DB *, VRFY_DBINFO *, db_pgno_t, PAGE *, void *, int (*)(void *, const void *), u_int32_t));
-#define __ham_meta2pgset __ham_meta2pgset@DB_VERSION_UNIQUE_NAME@
-int __ham_meta2pgset __P((DB *, VRFY_DBINFO *, HMETA *, u_int32_t, DB *));
-#if defined(__cplusplus)
-}
-#endif
-#endif /* _hash_ext_h_ */
diff --git a/db/include_auto/lock_ext.h b/db/include_auto/lock_ext.h
deleted file mode 100644
index e53329bc0..000000000
--- a/db/include_auto/lock_ext.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_include. */
-#ifndef _lock_ext_h_
-#define _lock_ext_h_
-#if defined(__cplusplus)
-extern "C" {
-#endif
-int __lock_downgrade __P((DB_ENV *, DB_LOCK *, db_lockmode_t, u_int32_t));
-int __lock_addfamilylocker __P((DB_ENV *, u_int32_t, u_int32_t));
-int __lock_freefamilylocker __P((DB_LOCKTAB *, u_int32_t));
-void __lock_freelocker __P((DB_LOCKTAB *, DB_LOCKREGION *, DB_LOCKER *, u_int32_t));
-int __lock_getlocker __P((DB_LOCKTAB *, u_int32_t, u_int32_t, int, DB_LOCKER **));
-int __lock_promote __P((DB_LOCKTAB *, DB_LOCKOBJ *, int));
-void __lock_printlock __P((DB_LOCKTAB *, struct __db_lock *, int));
-int __lock_set_lk_conflicts __P((DB_ENV *, u_int8_t *, int));
-int __lock_set_lk_detect __P((DB_ENV *, u_int32_t));
-int __lock_set_lk_max __P((DB_ENV *, u_int32_t));
-int __lock_set_lk_max_locks __P((DB_ENV *, u_int32_t));
-int __lock_set_lk_max_lockers __P((DB_ENV *, u_int32_t));
-int __lock_set_lk_max_objects __P((DB_ENV *, u_int32_t));
-void __lock_dbenv_create __P((DB_ENV *));
-void __lock_dbenv_close __P((DB_ENV *));
-int __lock_open __P((DB_ENV *));
-int __lock_close __P((DB_ENV *));
-void __lock_region_destroy __P((DB_ENV *, REGINFO *));
-int __lock_dump_region __P((DB_ENV *, char *, FILE *));
-int __lock_cmp __P((const DBT *, DB_LOCKOBJ *));
-int __lock_locker_cmp __P((u_int32_t, DB_LOCKER *));
-u_int32_t __lock_ohash __P((const DBT *));
-u_int32_t __lock_lhash __P((DB_LOCKOBJ *));
-u_int32_t __lock_locker_hash __P((u_int32_t));
-#if defined(__cplusplus)
-}
-#endif
-#endif /* _lock_ext_h_ */
diff --git a/db/include_auto/lock_ext.in b/db/include_auto/lock_ext.in
deleted file mode 100644
index 718270d29..000000000
--- a/db/include_auto/lock_ext.in
+++ /dev/null
@@ -1,58 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_include. */
-#ifndef _lock_ext_h_
-#define _lock_ext_h_
-#if defined(__cplusplus)
-extern "C" {
-#endif
-#define __lock_downgrade __lock_downgrade@DB_VERSION_UNIQUE_NAME@
-int __lock_downgrade __P((DB_ENV *, DB_LOCK *, db_lockmode_t, u_int32_t));
-#define __lock_addfamilylocker __lock_addfamilylocker@DB_VERSION_UNIQUE_NAME@
-int __lock_addfamilylocker __P((DB_ENV *, u_int32_t, u_int32_t));
-#define __lock_freefamilylocker __lock_freefamilylocker@DB_VERSION_UNIQUE_NAME@
-int __lock_freefamilylocker __P((DB_LOCKTAB *, u_int32_t));
-#define __lock_freelocker __lock_freelocker@DB_VERSION_UNIQUE_NAME@
-void __lock_freelocker __P((DB_LOCKTAB *, DB_LOCKREGION *, DB_LOCKER *, u_int32_t));
-#define __lock_getlocker __lock_getlocker@DB_VERSION_UNIQUE_NAME@
-int __lock_getlocker __P((DB_LOCKTAB *, u_int32_t, u_int32_t, int, DB_LOCKER **));
-#define __lock_promote __lock_promote@DB_VERSION_UNIQUE_NAME@
-int __lock_promote __P((DB_LOCKTAB *, DB_LOCKOBJ *, int));
-#define __lock_printlock __lock_printlock@DB_VERSION_UNIQUE_NAME@
-void __lock_printlock __P((DB_LOCKTAB *, struct __db_lock *, int));
-#define __lock_set_lk_conflicts __lock_set_lk_conflicts@DB_VERSION_UNIQUE_NAME@
-int __lock_set_lk_conflicts __P((DB_ENV *, u_int8_t *, int));
-#define __lock_set_lk_detect __lock_set_lk_detect@DB_VERSION_UNIQUE_NAME@
-int __lock_set_lk_detect __P((DB_ENV *, u_int32_t));
-#define __lock_set_lk_max __lock_set_lk_max@DB_VERSION_UNIQUE_NAME@
-int __lock_set_lk_max __P((DB_ENV *, u_int32_t));
-#define __lock_set_lk_max_locks __lock_set_lk_max_locks@DB_VERSION_UNIQUE_NAME@
-int __lock_set_lk_max_locks __P((DB_ENV *, u_int32_t));
-#define __lock_set_lk_max_lockers __lock_set_lk_max_lockers@DB_VERSION_UNIQUE_NAME@
-int __lock_set_lk_max_lockers __P((DB_ENV *, u_int32_t));
-#define __lock_set_lk_max_objects __lock_set_lk_max_objects@DB_VERSION_UNIQUE_NAME@
-int __lock_set_lk_max_objects __P((DB_ENV *, u_int32_t));
-#define __lock_dbenv_create __lock_dbenv_create@DB_VERSION_UNIQUE_NAME@
-void __lock_dbenv_create __P((DB_ENV *));
-#define __lock_dbenv_close __lock_dbenv_close@DB_VERSION_UNIQUE_NAME@
-void __lock_dbenv_close __P((DB_ENV *));
-#define __lock_open __lock_open@DB_VERSION_UNIQUE_NAME@
-int __lock_open __P((DB_ENV *));
-#define __lock_close __lock_close@DB_VERSION_UNIQUE_NAME@
-int __lock_close __P((DB_ENV *));
-#define __lock_region_destroy __lock_region_destroy@DB_VERSION_UNIQUE_NAME@
-void __lock_region_destroy __P((DB_ENV *, REGINFO *));
-#define __lock_dump_region __lock_dump_region@DB_VERSION_UNIQUE_NAME@
-int __lock_dump_region __P((DB_ENV *, char *, FILE *));
-#define __lock_cmp __lock_cmp@DB_VERSION_UNIQUE_NAME@
-int __lock_cmp __P((const DBT *, DB_LOCKOBJ *));
-#define __lock_locker_cmp __lock_locker_cmp@DB_VERSION_UNIQUE_NAME@
-int __lock_locker_cmp __P((u_int32_t, DB_LOCKER *));
-#define __lock_ohash __lock_ohash@DB_VERSION_UNIQUE_NAME@
-u_int32_t __lock_ohash __P((const DBT *));
-#define __lock_lhash __lock_lhash@DB_VERSION_UNIQUE_NAME@
-u_int32_t __lock_lhash __P((DB_LOCKOBJ *));
-#define __lock_locker_hash __lock_locker_hash@DB_VERSION_UNIQUE_NAME@
-u_int32_t __lock_locker_hash __P((u_int32_t));
-#if defined(__cplusplus)
-}
-#endif
-#endif /* _lock_ext_h_ */
diff --git a/db/include_auto/log_auto.h b/db/include_auto/log_auto.h
deleted file mode 100644
index fd7b2278a..000000000
--- a/db/include_auto/log_auto.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Do not edit: automatically built by gen_rec.awk. */
-
-#ifndef log_AUTO_H
-#define log_AUTO_H
-#define DB_log_register1 1
-typedef struct _log_register1_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- u_int32_t opcode;
- DBT name;
- DBT uid;
- int32_t fileid;
- DBTYPE ftype;
-} __log_register1_args;
-
-#define DB_log_register 2
-typedef struct _log_register_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- u_int32_t opcode;
- DBT name;
- DBT uid;
- int32_t fileid;
- DBTYPE ftype;
- db_pgno_t meta_pgno;
-} __log_register_args;
-
-#endif
diff --git a/db/include_auto/log_ext.h b/db/include_auto/log_ext.h
deleted file mode 100644
index e391fd2a5..000000000
--- a/db/include_auto/log_ext.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_include. */
-#ifndef _log_ext_h_
-#define _log_ext_h_
-#if defined(__cplusplus)
-extern "C" {
-#endif
-int __log_open __P((DB_ENV *));
-int __log_find __P((DB_LOG *, int, int *, logfile_validity *));
-int __log_valid __P((DB_LOG *, u_int32_t, int, logfile_validity *));
-int __log_close __P((DB_ENV *));
-int __log_lastckp __P((DB_ENV *, DB_LSN *));
-void __log_region_destroy __P((DB_ENV *, REGINFO *));
-int __log_register1_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __log_register1_read __P((DB_ENV *, void *, __log_register1_args **));
-int __log_register_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, u_int32_t, const DBT *, const DBT *, int32_t, DBTYPE, db_pgno_t));
-int __log_register_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __log_register_read __P((DB_ENV *, void *, __log_register_args **));
-int __log_init_print __P((DB_ENV *));
-int __log_init_recover __P((DB_ENV *));
-int __log_findckp __P((DB_ENV *, DB_LSN *));
-int __log_get __P((DB_LOG *, DB_LSN *, DBT *, u_int32_t, int));
-void __log_dbenv_create __P((DB_ENV *));
-int __log_put __P((DB_ENV *, DB_LSN *, const DBT *, u_int32_t));
-int __log_name __P((DB_LOG *, u_int32_t, char **, DB_FH *, u_int32_t));
-int __log_register_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __log_reopen_file __P((DB_ENV *, char *, int32_t, u_int8_t *, db_pgno_t));
-int __log_add_logid __P((DB_ENV *, DB_LOG *, DB *, int32_t));
-int __db_fileid_to_db __P((DB_ENV *, DB **, int32_t, int));
-void __log_close_files __P((DB_ENV *));
-void __log_rem_logid __P((DB_LOG *, DB *, int32_t));
-int __log_lid_to_fname __P((DB_LOG *, int32_t, FNAME **));
-int __log_filelist_update __P((DB_ENV *, DB *, int32_t, const char *, int *));
-int __log_file_lock __P((DB *));
-#if defined(__cplusplus)
-}
-#endif
-#endif /* _log_ext_h_ */
diff --git a/db/include_auto/log_ext.in b/db/include_auto/log_ext.in
deleted file mode 100644
index f04f94f12..000000000
--- a/db/include_auto/log_ext.in
+++ /dev/null
@@ -1,64 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_include. */
-#ifndef _log_ext_h_
-#define _log_ext_h_
-#if defined(__cplusplus)
-extern "C" {
-#endif
-#define __log_open __log_open@DB_VERSION_UNIQUE_NAME@
-int __log_open __P((DB_ENV *));
-#define __log_find __log_find@DB_VERSION_UNIQUE_NAME@
-int __log_find __P((DB_LOG *, int, int *, logfile_validity *));
-#define __log_valid __log_valid@DB_VERSION_UNIQUE_NAME@
-int __log_valid __P((DB_LOG *, u_int32_t, int, logfile_validity *));
-#define __log_close __log_close@DB_VERSION_UNIQUE_NAME@
-int __log_close __P((DB_ENV *));
-#define __log_lastckp __log_lastckp@DB_VERSION_UNIQUE_NAME@
-int __log_lastckp __P((DB_ENV *, DB_LSN *));
-#define __log_region_destroy __log_region_destroy@DB_VERSION_UNIQUE_NAME@
-void __log_region_destroy __P((DB_ENV *, REGINFO *));
-#define __log_register1_print __log_register1_print@DB_VERSION_UNIQUE_NAME@
-int __log_register1_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __log_register1_read __log_register1_read@DB_VERSION_UNIQUE_NAME@
-int __log_register1_read __P((DB_ENV *, void *, __log_register1_args **));
-#define __log_register_log __log_register_log@DB_VERSION_UNIQUE_NAME@
-int __log_register_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, u_int32_t, const DBT *, const DBT *, int32_t, DBTYPE, db_pgno_t));
-#define __log_register_print __log_register_print@DB_VERSION_UNIQUE_NAME@
-int __log_register_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __log_register_read __log_register_read@DB_VERSION_UNIQUE_NAME@
-int __log_register_read __P((DB_ENV *, void *, __log_register_args **));
-#define __log_init_print __log_init_print@DB_VERSION_UNIQUE_NAME@
-int __log_init_print __P((DB_ENV *));
-#define __log_init_recover __log_init_recover@DB_VERSION_UNIQUE_NAME@
-int __log_init_recover __P((DB_ENV *));
-#define __log_findckp __log_findckp@DB_VERSION_UNIQUE_NAME@
-int __log_findckp __P((DB_ENV *, DB_LSN *));
-#define __log_get __log_get@DB_VERSION_UNIQUE_NAME@
-int __log_get __P((DB_LOG *, DB_LSN *, DBT *, u_int32_t, int));
-#define __log_dbenv_create __log_dbenv_create@DB_VERSION_UNIQUE_NAME@
-void __log_dbenv_create __P((DB_ENV *));
-#define __log_put __log_put@DB_VERSION_UNIQUE_NAME@
-int __log_put __P((DB_ENV *, DB_LSN *, const DBT *, u_int32_t));
-#define __log_name __log_name@DB_VERSION_UNIQUE_NAME@
-int __log_name __P((DB_LOG *, u_int32_t, char **, DB_FH *, u_int32_t));
-#define __log_register_recover __log_register_recover@DB_VERSION_UNIQUE_NAME@
-int __log_register_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __log_reopen_file __log_reopen_file@DB_VERSION_UNIQUE_NAME@
-int __log_reopen_file __P((DB_ENV *, char *, int32_t, u_int8_t *, db_pgno_t));
-#define __log_add_logid __log_add_logid@DB_VERSION_UNIQUE_NAME@
-int __log_add_logid __P((DB_ENV *, DB_LOG *, DB *, int32_t));
-#define __db_fileid_to_db __db_fileid_to_db@DB_VERSION_UNIQUE_NAME@
-int __db_fileid_to_db __P((DB_ENV *, DB **, int32_t, int));
-#define __log_close_files __log_close_files@DB_VERSION_UNIQUE_NAME@
-void __log_close_files __P((DB_ENV *));
-#define __log_rem_logid __log_rem_logid@DB_VERSION_UNIQUE_NAME@
-void __log_rem_logid __P((DB_LOG *, DB *, int32_t));
-#define __log_lid_to_fname __log_lid_to_fname@DB_VERSION_UNIQUE_NAME@
-int __log_lid_to_fname __P((DB_LOG *, int32_t, FNAME **));
-#define __log_filelist_update __log_filelist_update@DB_VERSION_UNIQUE_NAME@
-int __log_filelist_update __P((DB_ENV *, DB *, int32_t, const char *, int *));
-#define __log_file_lock __log_file_lock@DB_VERSION_UNIQUE_NAME@
-int __log_file_lock __P((DB *));
-#if defined(__cplusplus)
-}
-#endif
-#endif /* _log_ext_h_ */
diff --git a/db/include_auto/mp_ext.h b/db/include_auto/mp_ext.h
deleted file mode 100644
index 04ede50a8..000000000
--- a/db/include_auto/mp_ext.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_include. */
-#ifndef _mp_ext_h_
-#define _mp_ext_h_
-#if defined(__cplusplus)
-extern "C" {
-#endif
-int __memp_alloc __P((DB_MPOOL *, REGINFO *, MPOOLFILE *, size_t, roff_t *, void *));
-int __memp_bhwrite __P((DB_MPOOL *, MPOOLFILE *, BH *, int, int *, int *));
-int __memp_pgread __P((DB_MPOOLFILE *, BH *, int));
-int __memp_pgwrite __P((DB_MPOOL *, DB_MPOOLFILE *, BH *, int *, int *));
-int __memp_pg __P((DB_MPOOLFILE *, BH *, int));
-void __memp_bhfree __P((DB_MPOOL *, BH *, int));
-void __memp_set_unlink __P((DB_MPOOLFILE *));
-void __memp_clear_unlink __P((DB_MPOOLFILE *));
-void __memp_refcount __P((DB_MPOOLFILE *, db_pgno_t *));
-int __memp_fopen __P((DB_MPOOL *, MPOOLFILE *, const char *, u_int32_t, int, size_t, int, DB_MPOOL_FINFO *, DB_MPOOLFILE **));
-int __memp_fclose __P((DB_MPOOLFILE *, int));
-void __memp_mf_discard __P((DB_MPOOL *, MPOOLFILE *));
-int __memp_fremove __P((DB_MPOOLFILE *));
-char * __memp_fn __P((DB_MPOOLFILE *));
-char * __memp_fns __P((DB_MPOOL *, MPOOLFILE *));
-void __memp_dbenv_create __P((DB_ENV *));
-int __memp_open __P((DB_ENV *));
-int __memp_close __P((DB_ENV *));
-void __mpool_region_destroy __P((DB_ENV *, REGINFO *));
-int __memp_dump_region __P((DB_ENV *, char *, FILE *));
-int __mp_xxx_fh __P((DB_MPOOLFILE *, DB_FH **));
-int __memp_close_flush_files __P((DB_MPOOL *));
-#if defined(__cplusplus)
-}
-#endif
-#endif /* _mp_ext_h_ */
diff --git a/db/include_auto/mp_ext.in b/db/include_auto/mp_ext.in
deleted file mode 100644
index 9ceaabbdf..000000000
--- a/db/include_auto/mp_ext.in
+++ /dev/null
@@ -1,54 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_include. */
-#ifndef _mp_ext_h_
-#define _mp_ext_h_
-#if defined(__cplusplus)
-extern "C" {
-#endif
-#define __memp_alloc __memp_alloc@DB_VERSION_UNIQUE_NAME@
-int __memp_alloc __P((DB_MPOOL *, REGINFO *, MPOOLFILE *, size_t, roff_t *, void *));
-#define __memp_bhwrite __memp_bhwrite@DB_VERSION_UNIQUE_NAME@
-int __memp_bhwrite __P((DB_MPOOL *, MPOOLFILE *, BH *, int, int *, int *));
-#define __memp_pgread __memp_pgread@DB_VERSION_UNIQUE_NAME@
-int __memp_pgread __P((DB_MPOOLFILE *, BH *, int));
-#define __memp_pgwrite __memp_pgwrite@DB_VERSION_UNIQUE_NAME@
-int __memp_pgwrite __P((DB_MPOOL *, DB_MPOOLFILE *, BH *, int *, int *));
-#define __memp_pg __memp_pg@DB_VERSION_UNIQUE_NAME@
-int __memp_pg __P((DB_MPOOLFILE *, BH *, int));
-#define __memp_bhfree __memp_bhfree@DB_VERSION_UNIQUE_NAME@
-void __memp_bhfree __P((DB_MPOOL *, BH *, int));
-#define __memp_set_unlink __memp_set_unlink@DB_VERSION_UNIQUE_NAME@
-void __memp_set_unlink __P((DB_MPOOLFILE *));
-#define __memp_clear_unlink __memp_clear_unlink@DB_VERSION_UNIQUE_NAME@
-void __memp_clear_unlink __P((DB_MPOOLFILE *));
-#define __memp_refcount __memp_refcount@DB_VERSION_UNIQUE_NAME@
-void __memp_refcount __P((DB_MPOOLFILE *, db_pgno_t *));
-#define __memp_fopen __memp_fopen@DB_VERSION_UNIQUE_NAME@
-int __memp_fopen __P((DB_MPOOL *, MPOOLFILE *, const char *, u_int32_t, int, size_t, int, DB_MPOOL_FINFO *, DB_MPOOLFILE **));
-#define __memp_fclose __memp_fclose@DB_VERSION_UNIQUE_NAME@
-int __memp_fclose __P((DB_MPOOLFILE *, int));
-#define __memp_mf_discard __memp_mf_discard@DB_VERSION_UNIQUE_NAME@
-void __memp_mf_discard __P((DB_MPOOL *, MPOOLFILE *));
-#define __memp_fremove __memp_fremove@DB_VERSION_UNIQUE_NAME@
-int __memp_fremove __P((DB_MPOOLFILE *));
-#define __memp_fn __memp_fn@DB_VERSION_UNIQUE_NAME@
-char * __memp_fn __P((DB_MPOOLFILE *));
-#define __memp_fns __memp_fns@DB_VERSION_UNIQUE_NAME@
-char * __memp_fns __P((DB_MPOOL *, MPOOLFILE *));
-#define __memp_dbenv_create __memp_dbenv_create@DB_VERSION_UNIQUE_NAME@
-void __memp_dbenv_create __P((DB_ENV *));
-#define __memp_open __memp_open@DB_VERSION_UNIQUE_NAME@
-int __memp_open __P((DB_ENV *));
-#define __memp_close __memp_close@DB_VERSION_UNIQUE_NAME@
-int __memp_close __P((DB_ENV *));
-#define __mpool_region_destroy __mpool_region_destroy@DB_VERSION_UNIQUE_NAME@
-void __mpool_region_destroy __P((DB_ENV *, REGINFO *));
-#define __memp_dump_region __memp_dump_region@DB_VERSION_UNIQUE_NAME@
-int __memp_dump_region __P((DB_ENV *, char *, FILE *));
-#define __mp_xxx_fh __mp_xxx_fh@DB_VERSION_UNIQUE_NAME@
-int __mp_xxx_fh __P((DB_MPOOLFILE *, DB_FH **));
-#define __memp_close_flush_files __memp_close_flush_files@DB_VERSION_UNIQUE_NAME@
-int __memp_close_flush_files __P((DB_MPOOL *));
-#if defined(__cplusplus)
-}
-#endif
-#endif /* _mp_ext_h_ */
diff --git a/db/include_auto/mutex_ext.h b/db/include_auto/mutex_ext.h
deleted file mode 100644
index 7b6b5a22c..000000000
--- a/db/include_auto/mutex_ext.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_include. */
-#ifndef _mutex_ext_h_
-#define _mutex_ext_h_
-#if defined(__cplusplus)
-extern "C" {
-#endif
-int __db_fcntl_mutex_init __P((DB_ENV *, MUTEX *, u_int32_t));
-int __db_fcntl_mutex_lock __P((DB_ENV *, MUTEX *, DB_FH *));
-int __db_fcntl_mutex_unlock __P((DB_ENV *, MUTEX *));
-int __db_fcntl_mutex_destroy __P((MUTEX *));
-int __db_pthread_mutex_init __P((DB_ENV *, MUTEX *, u_int32_t));
-int __db_pthread_mutex_lock __P((DB_ENV *, MUTEX *));
-int __db_pthread_mutex_unlock __P((DB_ENV *, MUTEX *));
-int __db_pthread_mutex_destroy __P((MUTEX *));
-int __db_tas_mutex_init __P((DB_ENV *, MUTEX *, u_int32_t));
-int __db_tas_mutex_lock __P((DB_ENV *, MUTEX *));
-int __db_tas_mutex_unlock __P((DB_ENV *, MUTEX *));
-int __db_tas_mutex_destroy __P((MUTEX *));
-int __db_mutex_alloc __P((DB_ENV *, REGINFO *, int, MUTEX **));
-void __db_mutex_free __P((DB_ENV *, REGINFO *, MUTEX *));
-void __db_shreg_locks_clear __P((MUTEX *, REGINFO *, REGMAINT *));
-void __db_shreg_locks_destroy __P((REGINFO *, REGMAINT *));
-int __db_shreg_mutex_init __P((DB_ENV *, MUTEX *, u_int32_t, u_int32_t, REGINFO *, REGMAINT *));
-void __db_shreg_maintinit __P((REGINFO *, void *addr, size_t));
-#if defined(__cplusplus)
-}
-#endif
-#endif /* _mutex_ext_h_ */
diff --git a/db/include_auto/mutex_ext.in b/db/include_auto/mutex_ext.in
deleted file mode 100644
index ac01d5726..000000000
--- a/db/include_auto/mutex_ext.in
+++ /dev/null
@@ -1,46 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_include. */
-#ifndef _mutex_ext_h_
-#define _mutex_ext_h_
-#if defined(__cplusplus)
-extern "C" {
-#endif
-#define __db_fcntl_mutex_init __db_fcntl_mutex_init@DB_VERSION_UNIQUE_NAME@
-int __db_fcntl_mutex_init __P((DB_ENV *, MUTEX *, u_int32_t));
-#define __db_fcntl_mutex_lock __db_fcntl_mutex_lock@DB_VERSION_UNIQUE_NAME@
-int __db_fcntl_mutex_lock __P((DB_ENV *, MUTEX *, DB_FH *));
-#define __db_fcntl_mutex_unlock __db_fcntl_mutex_unlock@DB_VERSION_UNIQUE_NAME@
-int __db_fcntl_mutex_unlock __P((DB_ENV *, MUTEX *));
-#define __db_fcntl_mutex_destroy __db_fcntl_mutex_destroy@DB_VERSION_UNIQUE_NAME@
-int __db_fcntl_mutex_destroy __P((MUTEX *));
-#define __db_pthread_mutex_init __db_pthread_mutex_init@DB_VERSION_UNIQUE_NAME@
-int __db_pthread_mutex_init __P((DB_ENV *, MUTEX *, u_int32_t));
-#define __db_pthread_mutex_lock __db_pthread_mutex_lock@DB_VERSION_UNIQUE_NAME@
-int __db_pthread_mutex_lock __P((DB_ENV *, MUTEX *));
-#define __db_pthread_mutex_unlock __db_pthread_mutex_unlock@DB_VERSION_UNIQUE_NAME@
-int __db_pthread_mutex_unlock __P((DB_ENV *, MUTEX *));
-#define __db_pthread_mutex_destroy __db_pthread_mutex_destroy@DB_VERSION_UNIQUE_NAME@
-int __db_pthread_mutex_destroy __P((MUTEX *));
-#define __db_tas_mutex_init __db_tas_mutex_init@DB_VERSION_UNIQUE_NAME@
-int __db_tas_mutex_init __P((DB_ENV *, MUTEX *, u_int32_t));
-#define __db_tas_mutex_lock __db_tas_mutex_lock@DB_VERSION_UNIQUE_NAME@
-int __db_tas_mutex_lock __P((DB_ENV *, MUTEX *));
-#define __db_tas_mutex_unlock __db_tas_mutex_unlock@DB_VERSION_UNIQUE_NAME@
-int __db_tas_mutex_unlock __P((DB_ENV *, MUTEX *));
-#define __db_tas_mutex_destroy __db_tas_mutex_destroy@DB_VERSION_UNIQUE_NAME@
-int __db_tas_mutex_destroy __P((MUTEX *));
-#define __db_mutex_alloc __db_mutex_alloc@DB_VERSION_UNIQUE_NAME@
-int __db_mutex_alloc __P((DB_ENV *, REGINFO *, int, MUTEX **));
-#define __db_mutex_free __db_mutex_free@DB_VERSION_UNIQUE_NAME@
-void __db_mutex_free __P((DB_ENV *, REGINFO *, MUTEX *));
-#define __db_shreg_locks_clear __db_shreg_locks_clear@DB_VERSION_UNIQUE_NAME@
-void __db_shreg_locks_clear __P((MUTEX *, REGINFO *, REGMAINT *));
-#define __db_shreg_locks_destroy __db_shreg_locks_destroy@DB_VERSION_UNIQUE_NAME@
-void __db_shreg_locks_destroy __P((REGINFO *, REGMAINT *));
-#define __db_shreg_mutex_init __db_shreg_mutex_init@DB_VERSION_UNIQUE_NAME@
-int __db_shreg_mutex_init __P((DB_ENV *, MUTEX *, u_int32_t, u_int32_t, REGINFO *, REGMAINT *));
-#define __db_shreg_maintinit __db_shreg_maintinit@DB_VERSION_UNIQUE_NAME@
-void __db_shreg_maintinit __P((REGINFO *, void *addr, size_t));
-#if defined(__cplusplus)
-}
-#endif
-#endif /* _mutex_ext_h_ */
diff --git a/db/include_auto/os_ext.h b/db/include_auto/os_ext.h
deleted file mode 100644
index 77992ede4..000000000
--- a/db/include_auto/os_ext.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_include. */
-#ifndef _os_ext_h_
-#define _os_ext_h_
-#if defined(__cplusplus)
-extern "C" {
-#endif
-int __os_abspath __P((const char *));
-int __os_umalloc __P((DB_ENV *, size_t, void *));
-int __os_urealloc __P((DB_ENV *, size_t, void *));
-int __os_ufree __P((DB_ENV *, void *, size_t));
-int __os_strdup __P((DB_ENV *, const char *, void *));
-int __os_calloc __P((DB_ENV *, size_t, size_t, void *));
-int __os_malloc __P((DB_ENV *, size_t, void *));
-int __os_realloc __P((DB_ENV *, size_t, void *));
-void __os_free __P((DB_ENV *, void *, size_t));
-void __os_freestr __P((DB_ENV *, void *));
-void *__ua_memcpy __P((void *, const void *, size_t));
-int __os_dirlist __P((DB_ENV *, const char *, char ***, int *));
-void __os_dirfree __P((DB_ENV *, char **, int));
-int __os_get_errno __P((void));
-void __os_set_errno __P((int));
-int __os_fileid __P((DB_ENV *, const char *, int, u_int8_t *));
-int __os_finit __P((DB_ENV *, DB_FH *, size_t, int));
-int __os_fpinit __P((DB_ENV *, DB_FH *, db_pgno_t, int, int));
-int __os_fsync __P((DB_ENV *, DB_FH *));
-int __os_openhandle __P((DB_ENV *, const char *, int, int, DB_FH *));
-int __os_closehandle __P((DB_FH *));
-int __os_r_sysattach __P((DB_ENV *, REGINFO *, REGION *));
-int __os_r_sysdetach __P((DB_ENV *, REGINFO *, int));
-int __os_mapfile __P((DB_ENV *, char *, DB_FH *, size_t, int, void **));
-int __os_unmapfile __P((DB_ENV *, void *, size_t));
-u_int32_t __db_oflags __P((int));
-int __db_omode __P((const char *));
-int __os_open __P((DB_ENV *, const char *, u_int32_t, int, DB_FH *));
-int __os_shmname __P((DB_ENV *, const char *, char **));
-int __os_r_attach __P((DB_ENV *, REGINFO *, REGION *));
-int __os_r_detach __P((DB_ENV *, REGINFO *, int));
-int __os_rename __P((DB_ENV *, const char *, const char *));
-int __os_isroot __P((void));
-char *__db_rpath __P((const char *));
-int __os_io __P((DB_ENV *, DB_IO *, int, size_t *));
-int __os_read __P((DB_ENV *, DB_FH *, void *, size_t, size_t *));
-int __os_write __P((DB_ENV *, DB_FH *, void *, size_t, size_t *));
-int __os_seek __P((DB_ENV *, DB_FH *, size_t, db_pgno_t, u_int32_t, int, DB_OS_SEEK));
-int __os_sleep __P((DB_ENV *, u_long, u_long));
-int __os_spin __P((void));
-void __os_yield __P((DB_ENV*, u_long));
-int __os_exists __P((const char *, int *));
-int __os_ioinfo __P((DB_ENV *, const char *, DB_FH *, u_int32_t *, u_int32_t *, u_int32_t *));
-int __os_tmpdir __P((DB_ENV *, u_int32_t));
-int __os_unlink __P((DB_ENV *, const char *));
-int __os_region_unlink __P((DB_ENV *, const char *));
-#if defined(DB_WIN32)
-int __os_win32_errno __P((void));
-#endif
-int __os_fpinit __P((DB_ENV *, DB_FH *, db_pgno_t, int, int));
-int __os_is_winnt __P((void));
-#if defined(__cplusplus)
-}
-#endif
-#endif /* _os_ext_h_ */
diff --git a/db/include_auto/os_ext.in b/db/include_auto/os_ext.in
deleted file mode 100644
index d8e29d1c0..000000000
--- a/db/include_auto/os_ext.in
+++ /dev/null
@@ -1,110 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_include. */
-#ifndef _os_ext_h_
-#define _os_ext_h_
-#if defined(__cplusplus)
-extern "C" {
-#endif
-#define __os_abspath __os_abspath@DB_VERSION_UNIQUE_NAME@
-int __os_abspath __P((const char *));
-#define __os_umalloc __os_umalloc@DB_VERSION_UNIQUE_NAME@
-int __os_umalloc __P((DB_ENV *, size_t, void *));
-#define __os_urealloc __os_urealloc@DB_VERSION_UNIQUE_NAME@
-int __os_urealloc __P((DB_ENV *, size_t, void *));
-#define __os_ufree __os_ufree@DB_VERSION_UNIQUE_NAME@
-int __os_ufree __P((DB_ENV *, void *, size_t));
-#define __os_strdup __os_strdup@DB_VERSION_UNIQUE_NAME@
-int __os_strdup __P((DB_ENV *, const char *, void *));
-#define __os_calloc __os_calloc@DB_VERSION_UNIQUE_NAME@
-int __os_calloc __P((DB_ENV *, size_t, size_t, void *));
-#define __os_malloc __os_malloc@DB_VERSION_UNIQUE_NAME@
-int __os_malloc __P((DB_ENV *, size_t, void *));
-#define __os_realloc __os_realloc@DB_VERSION_UNIQUE_NAME@
-int __os_realloc __P((DB_ENV *, size_t, void *));
-#define __os_free __os_free@DB_VERSION_UNIQUE_NAME@
-void __os_free __P((DB_ENV *, void *, size_t));
-#define __os_freestr __os_freestr@DB_VERSION_UNIQUE_NAME@
-void __os_freestr __P((DB_ENV *, void *));
-#define __ua_memcpy __ua_memcpy@DB_VERSION_UNIQUE_NAME@
-void *__ua_memcpy __P((void *, const void *, size_t));
-#define __os_dirlist __os_dirlist@DB_VERSION_UNIQUE_NAME@
-int __os_dirlist __P((DB_ENV *, const char *, char ***, int *));
-#define __os_dirfree __os_dirfree@DB_VERSION_UNIQUE_NAME@
-void __os_dirfree __P((DB_ENV *, char **, int));
-#define __os_get_errno __os_get_errno@DB_VERSION_UNIQUE_NAME@
-int __os_get_errno __P((void));
-#define __os_set_errno __os_set_errno@DB_VERSION_UNIQUE_NAME@
-void __os_set_errno __P((int));
-#define __os_fileid __os_fileid@DB_VERSION_UNIQUE_NAME@
-int __os_fileid __P((DB_ENV *, const char *, int, u_int8_t *));
-#define __os_finit __os_finit@DB_VERSION_UNIQUE_NAME@
-int __os_finit __P((DB_ENV *, DB_FH *, size_t, int));
-#define __os_fpinit __os_fpinit@DB_VERSION_UNIQUE_NAME@
-int __os_fpinit __P((DB_ENV *, DB_FH *, db_pgno_t, int, int));
-#define __os_fsync __os_fsync@DB_VERSION_UNIQUE_NAME@
-int __os_fsync __P((DB_ENV *, DB_FH *));
-#define __os_openhandle __os_openhandle@DB_VERSION_UNIQUE_NAME@
-int __os_openhandle __P((DB_ENV *, const char *, int, int, DB_FH *));
-#define __os_closehandle __os_closehandle@DB_VERSION_UNIQUE_NAME@
-int __os_closehandle __P((DB_FH *));
-#define __os_r_sysattach __os_r_sysattach@DB_VERSION_UNIQUE_NAME@
-int __os_r_sysattach __P((DB_ENV *, REGINFO *, REGION *));
-#define __os_r_sysdetach __os_r_sysdetach@DB_VERSION_UNIQUE_NAME@
-int __os_r_sysdetach __P((DB_ENV *, REGINFO *, int));
-#define __os_mapfile __os_mapfile@DB_VERSION_UNIQUE_NAME@
-int __os_mapfile __P((DB_ENV *, char *, DB_FH *, size_t, int, void **));
-#define __os_unmapfile __os_unmapfile@DB_VERSION_UNIQUE_NAME@
-int __os_unmapfile __P((DB_ENV *, void *, size_t));
-#define __db_oflags __db_oflags@DB_VERSION_UNIQUE_NAME@
-u_int32_t __db_oflags __P((int));
-#define __db_omode __db_omode@DB_VERSION_UNIQUE_NAME@
-int __db_omode __P((const char *));
-#define __os_open __os_open@DB_VERSION_UNIQUE_NAME@
-int __os_open __P((DB_ENV *, const char *, u_int32_t, int, DB_FH *));
-#define __os_shmname __os_shmname@DB_VERSION_UNIQUE_NAME@
-int __os_shmname __P((DB_ENV *, const char *, char **));
-#define __os_r_attach __os_r_attach@DB_VERSION_UNIQUE_NAME@
-int __os_r_attach __P((DB_ENV *, REGINFO *, REGION *));
-#define __os_r_detach __os_r_detach@DB_VERSION_UNIQUE_NAME@
-int __os_r_detach __P((DB_ENV *, REGINFO *, int));
-#define __os_rename __os_rename@DB_VERSION_UNIQUE_NAME@
-int __os_rename __P((DB_ENV *, const char *, const char *));
-#define __os_isroot __os_isroot@DB_VERSION_UNIQUE_NAME@
-int __os_isroot __P((void));
-#define __db_rpath __db_rpath@DB_VERSION_UNIQUE_NAME@
-char *__db_rpath __P((const char *));
-#define __os_io __os_io@DB_VERSION_UNIQUE_NAME@
-int __os_io __P((DB_ENV *, DB_IO *, int, size_t *));
-#define __os_read __os_read@DB_VERSION_UNIQUE_NAME@
-int __os_read __P((DB_ENV *, DB_FH *, void *, size_t, size_t *));
-#define __os_write __os_write@DB_VERSION_UNIQUE_NAME@
-int __os_write __P((DB_ENV *, DB_FH *, void *, size_t, size_t *));
-#define __os_seek __os_seek@DB_VERSION_UNIQUE_NAME@
-int __os_seek __P((DB_ENV *, DB_FH *, size_t, db_pgno_t, u_int32_t, int, DB_OS_SEEK));
-#define __os_sleep __os_sleep@DB_VERSION_UNIQUE_NAME@
-int __os_sleep __P((DB_ENV *, u_long, u_long));
-#define __os_spin __os_spin@DB_VERSION_UNIQUE_NAME@
-int __os_spin __P((void));
-#define __os_yield __os_yield@DB_VERSION_UNIQUE_NAME@
-void __os_yield __P((DB_ENV*, u_long));
-#define __os_exists __os_exists@DB_VERSION_UNIQUE_NAME@
-int __os_exists __P((const char *, int *));
-#define __os_ioinfo __os_ioinfo@DB_VERSION_UNIQUE_NAME@
-int __os_ioinfo __P((DB_ENV *, const char *, DB_FH *, u_int32_t *, u_int32_t *, u_int32_t *));
-#define __os_tmpdir __os_tmpdir@DB_VERSION_UNIQUE_NAME@
-int __os_tmpdir __P((DB_ENV *, u_int32_t));
-#define __os_unlink __os_unlink@DB_VERSION_UNIQUE_NAME@
-int __os_unlink __P((DB_ENV *, const char *));
-#define __os_region_unlink __os_region_unlink@DB_VERSION_UNIQUE_NAME@
-int __os_region_unlink __P((DB_ENV *, const char *));
-#if defined(DB_WIN32)
-#define __os_win32_errno __os_win32_errno@DB_VERSION_UNIQUE_NAME@
-int __os_win32_errno __P((void));
-#endif
-#define __os_fpinit __os_fpinit@DB_VERSION_UNIQUE_NAME@
-int __os_fpinit __P((DB_ENV *, DB_FH *, db_pgno_t, int, int));
-#define __os_is_winnt __os_is_winnt@DB_VERSION_UNIQUE_NAME@
-int __os_is_winnt __P((void));
-#if defined(__cplusplus)
-}
-#endif
-#endif /* _os_ext_h_ */
diff --git a/db/include_auto/qam_auto.h b/db/include_auto/qam_auto.h
deleted file mode 100644
index edec8ea69..000000000
--- a/db/include_auto/qam_auto.h
+++ /dev/null
@@ -1,95 +0,0 @@
-/* Do not edit: automatically built by gen_rec.awk. */
-
-#ifndef qam_AUTO_H
-#define qam_AUTO_H
-#define DB_qam_inc 76
-typedef struct _qam_inc_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- DB_LSN lsn;
-} __qam_inc_args;
-
-#define DB_qam_incfirst 77
-typedef struct _qam_incfirst_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- db_recno_t recno;
-} __qam_incfirst_args;
-
-#define DB_qam_mvptr 78
-typedef struct _qam_mvptr_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- u_int32_t opcode;
- int32_t fileid;
- db_recno_t old_first;
- db_recno_t new_first;
- db_recno_t old_cur;
- db_recno_t new_cur;
- DB_LSN metalsn;
-} __qam_mvptr_args;
-
-#define DB_qam_del 79
-typedef struct _qam_del_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- DB_LSN lsn;
- db_pgno_t pgno;
- u_int32_t indx;
- db_recno_t recno;
-} __qam_del_args;
-
-#define DB_qam_add 80
-typedef struct _qam_add_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- DB_LSN lsn;
- db_pgno_t pgno;
- u_int32_t indx;
- db_recno_t recno;
- DBT data;
- u_int32_t vflag;
- DBT olddata;
-} __qam_add_args;
-
-#define DB_qam_delete 81
-typedef struct _qam_delete_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- DBT name;
- DB_LSN lsn;
-} __qam_delete_args;
-
-#define DB_qam_rename 82
-typedef struct _qam_rename_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- DBT name;
- DBT newname;
-} __qam_rename_args;
-
-#define DB_qam_delext 83
-typedef struct _qam_delext_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- int32_t fileid;
- DB_LSN lsn;
- db_pgno_t pgno;
- u_int32_t indx;
- db_recno_t recno;
- DBT data;
-} __qam_delext_args;
-
-#endif
diff --git a/db/include_auto/qam_ext.h b/db/include_auto/qam_ext.h
deleted file mode 100644
index 35c886d44..000000000
--- a/db/include_auto/qam_ext.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_include. */
-#ifndef _qam_ext_h_
-#define _qam_ext_h_
-#if defined(__cplusplus)
-extern "C" {
-#endif
-int __qam_position __P((DBC *, db_recno_t *, qam_position_mode, int *));
-int __qam_pitem __P((DBC *, QPAGE *, u_int32_t, db_recno_t, DBT *));
-int __qam_append __P((DBC *, DBT *, DBT *));
-int __qam_c_dup __P((DBC *, DBC *));
-int __qam_c_init __P((DBC *));
-int __qam_truncate __P((DB *, DB_TXN *, u_int32_t *));
-int __qam_inc_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, DB_LSN *));
-int __qam_inc_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __qam_inc_read __P((DB_ENV *, void *, __qam_inc_args **));
-int __qam_incfirst_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_recno_t));
-int __qam_incfirst_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __qam_incfirst_read __P((DB_ENV *, void *, __qam_incfirst_args **));
-int __qam_mvptr_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, u_int32_t, int32_t, db_recno_t, db_recno_t, db_recno_t, db_recno_t, DB_LSN *));
-int __qam_mvptr_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __qam_mvptr_read __P((DB_ENV *, void *, __qam_mvptr_args **));
-int __qam_del_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, DB_LSN *, db_pgno_t, u_int32_t, db_recno_t));
-int __qam_del_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __qam_del_read __P((DB_ENV *, void *, __qam_del_args **));
-int __qam_add_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, DB_LSN *, db_pgno_t, u_int32_t, db_recno_t, const DBT *, u_int32_t, const DBT *));
-int __qam_add_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __qam_add_read __P((DB_ENV *, void *, __qam_add_args **));
-int __qam_delete_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, const DBT *, DB_LSN *));
-int __qam_delete_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __qam_delete_read __P((DB_ENV *, void *, __qam_delete_args **));
-int __qam_rename_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, const DBT *, const DBT *));
-int __qam_rename_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __qam_rename_read __P((DB_ENV *, void *, __qam_rename_args **));
-int __qam_delext_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, DB_LSN *, db_pgno_t, u_int32_t, db_recno_t, const DBT *));
-int __qam_delext_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __qam_delext_read __P((DB_ENV *, void *, __qam_delext_args **));
-int __qam_init_print __P((DB_ENV *));
-int __qam_init_recover __P((DB_ENV *));
-int __qam_mswap __P((PAGE *));
-int __qam_pgin_out __P((DB_ENV *, db_pgno_t, void *, DBT *));
-int __qam_fprobe __P((DB *, db_pgno_t, void *, qam_probe_mode, int));
-int __qam_fclose __P((DB *, db_pgno_t));
-int __qam_fremove __P((DB *, db_pgno_t));
-int __qam_sync __P((DB *, u_int32_t));
-int __qam_gen_filelist __P(( DB *, QUEUE_FILELIST **));
-int __qam_db_create __P((DB *));
-int __qam_db_close __P((DB *));
-int __db_prqueue __P((DB *, u_int32_t));
-int __qam_remove __P((DB *, const char *, const char *, DB_LSN *, int (**)(DB *, void*), void **));
-int __qam_rename __P((DB *, const char *, const char *, const char *));
-int __qam_open __P((DB *, const char *, db_pgno_t, int, u_int32_t));
-int __qam_metachk __P((DB *, const char *, QMETA *));
-int __qam_inc_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __qam_incfirst_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __qam_mvptr_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __qam_del_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __qam_delext_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __qam_add_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __qam_delete_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __qam_rename_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __qam_stat __P((DB *, void *, u_int32_t));
-int __qam_31_qammeta __P((DB *, char *, u_int8_t *));
-int __qam_32_qammeta __P((DB *, char *, u_int8_t *));
-int __qam_vrfy_meta __P((DB *, VRFY_DBINFO *, QMETA *, db_pgno_t, u_int32_t));
-int __qam_vrfy_data __P((DB *, VRFY_DBINFO *, QPAGE *, db_pgno_t, u_int32_t));
-int __qam_vrfy_structure __P((DB *, VRFY_DBINFO *, u_int32_t));
-#if defined(__cplusplus)
-}
-#endif
-#endif /* _qam_ext_h_ */
diff --git a/db/include_auto/qam_ext.in b/db/include_auto/qam_ext.in
deleted file mode 100644
index 5e221ead9..000000000
--- a/db/include_auto/qam_ext.in
+++ /dev/null
@@ -1,130 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_include. */
-#ifndef _qam_ext_h_
-#define _qam_ext_h_
-#if defined(__cplusplus)
-extern "C" {
-#endif
-#define __qam_position __qam_position@DB_VERSION_UNIQUE_NAME@
-int __qam_position __P((DBC *, db_recno_t *, qam_position_mode, int *));
-#define __qam_pitem __qam_pitem@DB_VERSION_UNIQUE_NAME@
-int __qam_pitem __P((DBC *, QPAGE *, u_int32_t, db_recno_t, DBT *));
-#define __qam_append __qam_append@DB_VERSION_UNIQUE_NAME@
-int __qam_append __P((DBC *, DBT *, DBT *));
-#define __qam_c_dup __qam_c_dup@DB_VERSION_UNIQUE_NAME@
-int __qam_c_dup __P((DBC *, DBC *));
-#define __qam_c_init __qam_c_init@DB_VERSION_UNIQUE_NAME@
-int __qam_c_init __P((DBC *));
-#define __qam_truncate __qam_truncate@DB_VERSION_UNIQUE_NAME@
-int __qam_truncate __P((DB *, DB_TXN *, u_int32_t *));
-#define __qam_inc_log __qam_inc_log@DB_VERSION_UNIQUE_NAME@
-int __qam_inc_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, DB_LSN *));
-#define __qam_inc_print __qam_inc_print@DB_VERSION_UNIQUE_NAME@
-int __qam_inc_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __qam_inc_read __qam_inc_read@DB_VERSION_UNIQUE_NAME@
-int __qam_inc_read __P((DB_ENV *, void *, __qam_inc_args **));
-#define __qam_incfirst_log __qam_incfirst_log@DB_VERSION_UNIQUE_NAME@
-int __qam_incfirst_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_recno_t));
-#define __qam_incfirst_print __qam_incfirst_print@DB_VERSION_UNIQUE_NAME@
-int __qam_incfirst_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __qam_incfirst_read __qam_incfirst_read@DB_VERSION_UNIQUE_NAME@
-int __qam_incfirst_read __P((DB_ENV *, void *, __qam_incfirst_args **));
-#define __qam_mvptr_log __qam_mvptr_log@DB_VERSION_UNIQUE_NAME@
-int __qam_mvptr_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, u_int32_t, int32_t, db_recno_t, db_recno_t, db_recno_t, db_recno_t, DB_LSN *));
-#define __qam_mvptr_print __qam_mvptr_print@DB_VERSION_UNIQUE_NAME@
-int __qam_mvptr_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __qam_mvptr_read __qam_mvptr_read@DB_VERSION_UNIQUE_NAME@
-int __qam_mvptr_read __P((DB_ENV *, void *, __qam_mvptr_args **));
-#define __qam_del_log __qam_del_log@DB_VERSION_UNIQUE_NAME@
-int __qam_del_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, DB_LSN *, db_pgno_t, u_int32_t, db_recno_t));
-#define __qam_del_print __qam_del_print@DB_VERSION_UNIQUE_NAME@
-int __qam_del_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __qam_del_read __qam_del_read@DB_VERSION_UNIQUE_NAME@
-int __qam_del_read __P((DB_ENV *, void *, __qam_del_args **));
-#define __qam_add_log __qam_add_log@DB_VERSION_UNIQUE_NAME@
-int __qam_add_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, DB_LSN *, db_pgno_t, u_int32_t, db_recno_t, const DBT *, u_int32_t, const DBT *));
-#define __qam_add_print __qam_add_print@DB_VERSION_UNIQUE_NAME@
-int __qam_add_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __qam_add_read __qam_add_read@DB_VERSION_UNIQUE_NAME@
-int __qam_add_read __P((DB_ENV *, void *, __qam_add_args **));
-#define __qam_delete_log __qam_delete_log@DB_VERSION_UNIQUE_NAME@
-int __qam_delete_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, const DBT *, DB_LSN *));
-#define __qam_delete_print __qam_delete_print@DB_VERSION_UNIQUE_NAME@
-int __qam_delete_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __qam_delete_read __qam_delete_read@DB_VERSION_UNIQUE_NAME@
-int __qam_delete_read __P((DB_ENV *, void *, __qam_delete_args **));
-#define __qam_rename_log __qam_rename_log@DB_VERSION_UNIQUE_NAME@
-int __qam_rename_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, const DBT *, const DBT *));
-#define __qam_rename_print __qam_rename_print@DB_VERSION_UNIQUE_NAME@
-int __qam_rename_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __qam_rename_read __qam_rename_read@DB_VERSION_UNIQUE_NAME@
-int __qam_rename_read __P((DB_ENV *, void *, __qam_rename_args **));
-#define __qam_delext_log __qam_delext_log@DB_VERSION_UNIQUE_NAME@
-int __qam_delext_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, DB_LSN *, db_pgno_t, u_int32_t, db_recno_t, const DBT *));
-#define __qam_delext_print __qam_delext_print@DB_VERSION_UNIQUE_NAME@
-int __qam_delext_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __qam_delext_read __qam_delext_read@DB_VERSION_UNIQUE_NAME@
-int __qam_delext_read __P((DB_ENV *, void *, __qam_delext_args **));
-#define __qam_init_print __qam_init_print@DB_VERSION_UNIQUE_NAME@
-int __qam_init_print __P((DB_ENV *));
-#define __qam_init_recover __qam_init_recover@DB_VERSION_UNIQUE_NAME@
-int __qam_init_recover __P((DB_ENV *));
-#define __qam_mswap __qam_mswap@DB_VERSION_UNIQUE_NAME@
-int __qam_mswap __P((PAGE *));
-#define __qam_pgin_out __qam_pgin_out@DB_VERSION_UNIQUE_NAME@
-int __qam_pgin_out __P((DB_ENV *, db_pgno_t, void *, DBT *));
-#define __qam_fprobe __qam_fprobe@DB_VERSION_UNIQUE_NAME@
-int __qam_fprobe __P((DB *, db_pgno_t, void *, qam_probe_mode, int));
-#define __qam_fclose __qam_fclose@DB_VERSION_UNIQUE_NAME@
-int __qam_fclose __P((DB *, db_pgno_t));
-#define __qam_fremove __qam_fremove@DB_VERSION_UNIQUE_NAME@
-int __qam_fremove __P((DB *, db_pgno_t));
-#define __qam_sync __qam_sync@DB_VERSION_UNIQUE_NAME@
-int __qam_sync __P((DB *, u_int32_t));
-#define __qam_gen_filelist __qam_gen_filelist@DB_VERSION_UNIQUE_NAME@
-int __qam_gen_filelist __P(( DB *, QUEUE_FILELIST **));
-#define __qam_db_create __qam_db_create@DB_VERSION_UNIQUE_NAME@
-int __qam_db_create __P((DB *));
-#define __qam_db_close __qam_db_close@DB_VERSION_UNIQUE_NAME@
-int __qam_db_close __P((DB *));
-#define __db_prqueue __db_prqueue@DB_VERSION_UNIQUE_NAME@
-int __db_prqueue __P((DB *, u_int32_t));
-#define __qam_remove __qam_remove@DB_VERSION_UNIQUE_NAME@
-int __qam_remove __P((DB *, const char *, const char *, DB_LSN *, int (**)(DB *, void*), void **));
-#define __qam_rename __qam_rename@DB_VERSION_UNIQUE_NAME@
-int __qam_rename __P((DB *, const char *, const char *, const char *));
-#define __qam_open __qam_open@DB_VERSION_UNIQUE_NAME@
-int __qam_open __P((DB *, const char *, db_pgno_t, int, u_int32_t));
-#define __qam_metachk __qam_metachk@DB_VERSION_UNIQUE_NAME@
-int __qam_metachk __P((DB *, const char *, QMETA *));
-#define __qam_inc_recover __qam_inc_recover@DB_VERSION_UNIQUE_NAME@
-int __qam_inc_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __qam_incfirst_recover __qam_incfirst_recover@DB_VERSION_UNIQUE_NAME@
-int __qam_incfirst_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __qam_mvptr_recover __qam_mvptr_recover@DB_VERSION_UNIQUE_NAME@
-int __qam_mvptr_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __qam_del_recover __qam_del_recover@DB_VERSION_UNIQUE_NAME@
-int __qam_del_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __qam_delext_recover __qam_delext_recover@DB_VERSION_UNIQUE_NAME@
-int __qam_delext_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __qam_add_recover __qam_add_recover@DB_VERSION_UNIQUE_NAME@
-int __qam_add_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __qam_delete_recover __qam_delete_recover@DB_VERSION_UNIQUE_NAME@
-int __qam_delete_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __qam_rename_recover __qam_rename_recover@DB_VERSION_UNIQUE_NAME@
-int __qam_rename_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __qam_stat __qam_stat@DB_VERSION_UNIQUE_NAME@
-int __qam_stat __P((DB *, void *, u_int32_t));
-#define __qam_31_qammeta __qam_31_qammeta@DB_VERSION_UNIQUE_NAME@
-int __qam_31_qammeta __P((DB *, char *, u_int8_t *));
-#define __qam_32_qammeta __qam_32_qammeta@DB_VERSION_UNIQUE_NAME@
-int __qam_32_qammeta __P((DB *, char *, u_int8_t *));
-#define __qam_vrfy_meta __qam_vrfy_meta@DB_VERSION_UNIQUE_NAME@
-int __qam_vrfy_meta __P((DB *, VRFY_DBINFO *, QMETA *, db_pgno_t, u_int32_t));
-#define __qam_vrfy_data __qam_vrfy_data@DB_VERSION_UNIQUE_NAME@
-int __qam_vrfy_data __P((DB *, VRFY_DBINFO *, QPAGE *, db_pgno_t, u_int32_t));
-#define __qam_vrfy_structure __qam_vrfy_structure@DB_VERSION_UNIQUE_NAME@
-int __qam_vrfy_structure __P((DB *, VRFY_DBINFO *, u_int32_t));
-#if defined(__cplusplus)
-}
-#endif
-#endif /* _qam_ext_h_ */
diff --git a/db/include_auto/rpc_client_ext.h b/db/include_auto/rpc_client_ext.h
deleted file mode 100644
index 8908e5e26..000000000
--- a/db/include_auto/rpc_client_ext.h
+++ /dev/null
@@ -1,153 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_include. */
-#ifndef _rpc_client_ext_h_
-#define _rpc_client_ext_h_
-#if defined(__cplusplus)
-extern "C" {
-#endif
-int __dbcl_envrpcserver __P((DB_ENV *, void *, const char *, long, long, u_int32_t));
-int __dbcl_envserver __P((DB_ENV *, const char *, long, long, u_int32_t));
-int __dbcl_env_open_wrap __P((DB_ENV *, const char *, u_int32_t, int));
-int __dbcl_refresh __P((DB_ENV *));
-void __dbcl_txn_end __P((DB_TXN *));
-void __dbcl_txn_setup __P((DB_ENV *, DB_TXN *, DB_TXN *, u_int32_t));
-void __dbcl_c_refresh __P((DBC *));
-int __dbcl_c_setup __P((long, DB *, DBC **));
-int __dbcl_retcopy __P((DB_ENV *, DBT *, void *, u_int32_t));
-int __dbcl_dbclose_common __P((DB *));
-int __dbcl_env_alloc __P((DB_ENV *, void *(*)(size_t), void *(*)(void *, size_t), void (*)(void *)));
-int __dbcl_env_cachesize __P((DB_ENV *, u_int32_t, u_int32_t, int));
-int __dbcl_env_close __P((DB_ENV *, u_int32_t));
-int __dbcl_env_create __P((DB_ENV *, long));
-int __dbcl_set_data_dir __P((DB_ENV *, const char *));
-int __dbcl_env_set_feedback __P((DB_ENV *, void (*)(DB_ENV *, int, int)));
-int __dbcl_env_flags __P((DB_ENV *, u_int32_t, int));
-int __dbcl_set_lg_bsize __P((DB_ENV *, u_int32_t));
-int __dbcl_set_lg_dir __P((DB_ENV *, const char *));
-int __dbcl_set_lg_max __P((DB_ENV *, u_int32_t));
-int __dbcl_set_lg_regionmax __P((DB_ENV *, u_int32_t));
-int __dbcl_set_lk_conflict __P((DB_ENV *, u_int8_t *, int));
-int __dbcl_set_lk_detect __P((DB_ENV *, u_int32_t));
-int __dbcl_set_lk_max __P((DB_ENV *, u_int32_t));
-int __dbcl_set_lk_max_locks __P((DB_ENV *, u_int32_t));
-int __dbcl_set_lk_max_lockers __P((DB_ENV *, u_int32_t));
-int __dbcl_set_lk_max_objects __P((DB_ENV *, u_int32_t));
-int __dbcl_set_mp_mmapsize __P((DB_ENV *, size_t));
-int __dbcl_set_mutex_locks __P((DB_ENV *, int));
-int __dbcl_env_open __P((DB_ENV *, const char *, u_int32_t, int));
-int __dbcl_env_paniccall __P((DB_ENV *, void (*)(DB_ENV *, int)));
-int __dbcl_set_recovery_init __P((DB_ENV *, int (*)(DB_ENV *)));
-int __dbcl_env_remove __P((DB_ENV *, const char *, u_int32_t));
-int __dbcl_set_shm_key __P((DB_ENV *, long));
-int __dbcl_set_tmp_dir __P((DB_ENV *, const char *));
-int __dbcl_set_tx_recover __P((DB_ENV *, int (*)(DB_ENV *, DBT *, DB_LSN *, db_recops)));
-int __dbcl_set_tx_max __P((DB_ENV *, u_int32_t));
-int __dbcl_set_tx_timestamp __P((DB_ENV *, time_t *));
-int __dbcl_set_verbose __P((DB_ENV *, u_int32_t, int));
-int __dbcl_txn_abort __P((DB_TXN *));
-int __dbcl_txn_begin __P((DB_ENV *, DB_TXN *, DB_TXN **, u_int32_t));
-int __dbcl_txn_checkpoint __P((DB_ENV *, u_int32_t, u_int32_t));
-int __dbcl_txn_commit __P((DB_TXN *, u_int32_t));
-int __dbcl_txn_prepare __P((DB_TXN *, u_int8_t *));
-int __dbcl_txn_recover __P((DB_ENV *, DB_PREPLIST *, long, long *, u_int32_t));
-int __dbcl_txn_stat __P((DB_ENV *, DB_TXN_STAT **));
-int __dbcl_db_alloc __P((DB *, void *(*)(size_t), void *(*)(void *, size_t), void (*)(void *)));
-int __dbcl_db_associate __P((DB *, DB *, int (*)(DB *, const DBT *, const DBT *, DBT *), u_int32_t));
-int __dbcl_db_bt_compare __P((DB *, int (*)(DB *, const DBT *, const DBT *)));
-int __dbcl_db_bt_maxkey __P((DB *, u_int32_t));
-int __dbcl_db_bt_minkey __P((DB *, u_int32_t));
-int __dbcl_db_bt_prefix __P((DB *, size_t(*)(DB *, const DBT *, const DBT *)));
-int __dbcl_db_set_append_recno __P((DB *, int (*)(DB *, DBT *, db_recno_t)));
-int __dbcl_db_cachesize __P((DB *, u_int32_t, u_int32_t, int));
-int __dbcl_db_close __P((DB *, u_int32_t));
-int __dbcl_db_create __P((DB *, DB_ENV *, u_int32_t));
-int __dbcl_db_del __P((DB *, DB_TXN *, DBT *, u_int32_t));
-int __dbcl_db_extentsize __P((DB *, u_int32_t));
-int __dbcl_db_fd __P((DB *, int *));
-int __dbcl_db_feedback __P((DB *, void (*)(DB *, int, int)));
-int __dbcl_db_flags __P((DB *, u_int32_t));
-int __dbcl_db_get __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t));
-int __dbcl_db_h_ffactor __P((DB *, u_int32_t));
-int __dbcl_db_h_hash __P((DB *, u_int32_t(*)(DB *, const void *, u_int32_t)));
-int __dbcl_db_h_nelem __P((DB *, u_int32_t));
-int __dbcl_db_key_range __P((DB *, DB_TXN *, DBT *, DB_KEY_RANGE *, u_int32_t));
-int __dbcl_db_lorder __P((DB *, int));
-int __dbcl_db_open __P((DB *, const char *, const char *, DBTYPE, u_int32_t, int));
-int __dbcl_db_pagesize __P((DB *, u_int32_t));
-int __dbcl_db_panic __P((DB *, void (*)(DB_ENV *, int)));
-int __dbcl_db_pget __P((DB *, DB_TXN *, DBT *, DBT *, DBT *, u_int32_t));
-int __dbcl_db_put __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t));
-int __dbcl_db_re_delim __P((DB *, int));
-int __dbcl_db_re_len __P((DB *, u_int32_t));
-int __dbcl_db_re_pad __P((DB *, int));
-int __dbcl_db_re_source __P((DB *, const char *));
-int __dbcl_db_remove __P((DB *, const char *, const char *, u_int32_t));
-int __dbcl_db_rename __P((DB *, const char *, const char *, const char *, u_int32_t));
-int __dbcl_db_stat __P((DB *, void *, u_int32_t));
-int __dbcl_db_sync __P((DB *, u_int32_t));
-int __dbcl_db_truncate __P((DB *, const char *, const char *, u_int32_t *, u_int32_t));
-int __dbcl_db_upgrade __P((DB *, const char *, u_int32_t));
-int __dbcl_db_verify __P((DB *, const char *, const char *, FILE *, u_int32_t));
-int __dbcl_db_cursor __P((DB *, DB_TXN *, DBC **, u_int32_t));
-int __dbcl_db_join __P((DB *, DBC **, DBC **, u_int32_t));
-int __dbcl_dbc_close __P((DBC *));
-int __dbcl_dbc_count __P((DBC *, db_recno_t *, u_int32_t));
-int __dbcl_dbc_del __P((DBC *, u_int32_t));
-int __dbcl_dbc_dup __P((DBC *, DBC **, u_int32_t));
-int __dbcl_dbc_get __P((DBC *, DBT *, DBT *, u_int32_t));
-int __dbcl_dbc_pget __P((DBC *, DBT *, DBT *, DBT *, u_int32_t));
-int __dbcl_dbc_put __P((DBC *, DBT *, DBT *, u_int32_t));
-int __dbcl_lock_detect __P((DB_ENV *, u_int32_t, u_int32_t, int *));
-int __dbcl_lock_get __P((DB_ENV *, u_int32_t, u_int32_t, const DBT *, db_lockmode_t, DB_LOCK *));
-int __dbcl_lock_id __P((DB_ENV *, u_int32_t *));
-int __dbcl_lock_put __P((DB_ENV *, DB_LOCK *));
-int __dbcl_lock_stat __P((DB_ENV *, DB_LOCK_STAT **));
-int __dbcl_lock_vec __P((DB_ENV *, u_int32_t, u_int32_t, DB_LOCKREQ *, int, DB_LOCKREQ **));
-int __dbcl_log_archive __P((DB_ENV *, char ***, u_int32_t));
-int __dbcl_log_file __P((DB_ENV *, const DB_LSN *, char *, size_t));
-int __dbcl_log_flush __P((DB_ENV *, const DB_LSN *));
-int __dbcl_log_get __P((DB_ENV *, DB_LSN *, DBT *, u_int32_t));
-int __dbcl_log_put __P((DB_ENV *, DB_LSN *, const DBT *, u_int32_t));
-int __dbcl_log_register __P((DB_ENV *, DB *, const char *));
-int __dbcl_log_stat __P((DB_ENV *, DB_LOG_STAT **));
-int __dbcl_log_unregister __P((DB_ENV *, DB *));
-int __dbcl_memp_fclose __P((DB_MPOOLFILE *));
-int __dbcl_memp_fget __P((DB_MPOOLFILE *, db_pgno_t *, u_int32_t, void **));
-int __dbcl_memp_fopen __P((DB_ENV *, const char *, u_int32_t, int, size_t, DB_MPOOL_FINFO *, DB_MPOOLFILE **));
-int __dbcl_memp_fput __P((DB_MPOOLFILE *, void *, u_int32_t));
-int __dbcl_memp_fset __P((DB_MPOOLFILE *, void *, u_int32_t));
-int __dbcl_memp_fsync __P((DB_MPOOLFILE *));
-int __dbcl_memp_register __P((DB_ENV *, int, int (*)(DB_ENV *, db_pgno_t, void *, DBT *), int (*)(DB_ENV *, db_pgno_t, void *, DBT *)));
-int __dbcl_memp_stat __P((DB_ENV *, DB_MPOOL_STAT **, DB_MPOOL_FSTAT ***));
-int __dbcl_memp_sync __P((DB_ENV *, DB_LSN *));
-int __dbcl_memp_trickle __P((DB_ENV *, int, int *));
-int __dbcl_env_close_ret __P((DB_ENV *, u_int32_t, __env_close_reply *));
-int __dbcl_env_create_ret __P((DB_ENV *, long, __env_create_reply *));
-int __dbcl_env_open_ret __P((DB_ENV *, const char *, u_int32_t, int, __env_open_reply *));
-int __dbcl_env_remove_ret __P((DB_ENV *, const char *, u_int32_t, __env_remove_reply *));
-int __dbcl_txn_abort_ret __P((DB_TXN *, __txn_abort_reply *));
-int __dbcl_txn_begin_ret __P((DB_ENV *, DB_TXN *, DB_TXN **, u_int32_t, __txn_begin_reply *));
-int __dbcl_txn_commit_ret __P((DB_TXN *, u_int32_t, __txn_commit_reply *));
-int __dbcl_txn_recover_ret __P((DB_ENV *, DB_PREPLIST *, long, long *, u_int32_t, __txn_recover_reply *));
-int __dbcl_db_close_ret __P((DB *, u_int32_t, __db_close_reply *));
-int __dbcl_db_create_ret __P((DB *, DB_ENV *, u_int32_t, __db_create_reply *));
-int __dbcl_db_get_ret __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t, __db_get_reply *));
-int __dbcl_db_key_range_ret __P((DB *, DB_TXN *, DBT *, DB_KEY_RANGE *, u_int32_t, __db_key_range_reply *));
-int __dbcl_db_open_ret __P((DB *, const char *, const char *, DBTYPE, u_int32_t, int, __db_open_reply *));
-int __dbcl_db_pget_ret __P((DB *, DB_TXN *, DBT *, DBT *, DBT *, u_int32_t, __db_pget_reply *));
-int __dbcl_db_put_ret __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t, __db_put_reply *));
-int __dbcl_db_remove_ret __P((DB *, const char *, const char *, u_int32_t, __db_remove_reply *));
-int __dbcl_db_rename_ret __P((DB *, const char *, const char *, const char *, u_int32_t, __db_rename_reply *));
-int __dbcl_db_stat_ret __P((DB *, void *, u_int32_t, __db_stat_reply *));
-int __dbcl_db_truncate_ret __P((DB *, const char *, const char *, u_int32_t *, u_int32_t, __db_truncate_reply *));
-int __dbcl_db_cursor_ret __P((DB *, DB_TXN *, DBC **, u_int32_t, __db_cursor_reply *));
-int __dbcl_db_join_ret __P((DB *, DBC **, DBC **, u_int32_t, __db_join_reply *));
-int __dbcl_dbc_close_ret __P((DBC *, __dbc_close_reply *));
-int __dbcl_dbc_count_ret __P((DBC *, db_recno_t *, u_int32_t, __dbc_count_reply *));
-int __dbcl_dbc_dup_ret __P((DBC *, DBC **, u_int32_t, __dbc_dup_reply *));
-int __dbcl_dbc_get_ret __P((DBC *, DBT *, DBT *, u_int32_t, __dbc_get_reply *));
-int __dbcl_dbc_pget_ret __P((DBC *, DBT *, DBT *, DBT *, u_int32_t, __dbc_pget_reply *));
-int __dbcl_dbc_put_ret __P((DBC *, DBT *, DBT *, u_int32_t, __dbc_put_reply *));
-#if defined(__cplusplus)
-}
-#endif
-#endif /* _rpc_client_ext_h_ */
diff --git a/db/include_auto/rpc_client_ext.in b/db/include_auto/rpc_client_ext.in
deleted file mode 100644
index 4e0296aae..000000000
--- a/db/include_auto/rpc_client_ext.in
+++ /dev/null
@@ -1,296 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_include. */
-#ifndef _rpc_client_ext_h_
-#define _rpc_client_ext_h_
-#if defined(__cplusplus)
-extern "C" {
-#endif
-#define __dbcl_envrpcserver __dbcl_envrpcserver@DB_VERSION_UNIQUE_NAME@
-int __dbcl_envrpcserver __P((DB_ENV *, void *, const char *, long, long, u_int32_t));
-#define __dbcl_envserver __dbcl_envserver@DB_VERSION_UNIQUE_NAME@
-int __dbcl_envserver __P((DB_ENV *, const char *, long, long, u_int32_t));
-#define __dbcl_env_open_wrap __dbcl_env_open_wrap@DB_VERSION_UNIQUE_NAME@
-int __dbcl_env_open_wrap __P((DB_ENV *, const char *, u_int32_t, int));
-#define __dbcl_refresh __dbcl_refresh@DB_VERSION_UNIQUE_NAME@
-int __dbcl_refresh __P((DB_ENV *));
-#define __dbcl_txn_end __dbcl_txn_end@DB_VERSION_UNIQUE_NAME@
-void __dbcl_txn_end __P((DB_TXN *));
-#define __dbcl_txn_setup __dbcl_txn_setup@DB_VERSION_UNIQUE_NAME@
-void __dbcl_txn_setup __P((DB_ENV *, DB_TXN *, DB_TXN *, u_int32_t));
-#define __dbcl_c_refresh __dbcl_c_refresh@DB_VERSION_UNIQUE_NAME@
-void __dbcl_c_refresh __P((DBC *));
-#define __dbcl_c_setup __dbcl_c_setup@DB_VERSION_UNIQUE_NAME@
-int __dbcl_c_setup __P((long, DB *, DBC **));
-#define __dbcl_retcopy __dbcl_retcopy@DB_VERSION_UNIQUE_NAME@
-int __dbcl_retcopy __P((DB_ENV *, DBT *, void *, u_int32_t));
-#define __dbcl_dbclose_common __dbcl_dbclose_common@DB_VERSION_UNIQUE_NAME@
-int __dbcl_dbclose_common __P((DB *));
-#define __dbcl_env_alloc __dbcl_env_alloc@DB_VERSION_UNIQUE_NAME@
-int __dbcl_env_alloc __P((DB_ENV *, void *(*)(size_t), void *(*)(void *, size_t), void (*)(void *)));
-#define __dbcl_env_cachesize __dbcl_env_cachesize@DB_VERSION_UNIQUE_NAME@
-int __dbcl_env_cachesize __P((DB_ENV *, u_int32_t, u_int32_t, int));
-#define __dbcl_env_close __dbcl_env_close@DB_VERSION_UNIQUE_NAME@
-int __dbcl_env_close __P((DB_ENV *, u_int32_t));
-#define __dbcl_env_create __dbcl_env_create@DB_VERSION_UNIQUE_NAME@
-int __dbcl_env_create __P((DB_ENV *, long));
-#define __dbcl_set_data_dir __dbcl_set_data_dir@DB_VERSION_UNIQUE_NAME@
-int __dbcl_set_data_dir __P((DB_ENV *, const char *));
-#define __dbcl_env_set_feedback __dbcl_env_set_feedback@DB_VERSION_UNIQUE_NAME@
-int __dbcl_env_set_feedback __P((DB_ENV *, void (*)(DB_ENV *, int, int)));
-#define __dbcl_env_flags __dbcl_env_flags@DB_VERSION_UNIQUE_NAME@
-int __dbcl_env_flags __P((DB_ENV *, u_int32_t, int));
-#define __dbcl_set_lg_bsize __dbcl_set_lg_bsize@DB_VERSION_UNIQUE_NAME@
-int __dbcl_set_lg_bsize __P((DB_ENV *, u_int32_t));
-#define __dbcl_set_lg_dir __dbcl_set_lg_dir@DB_VERSION_UNIQUE_NAME@
-int __dbcl_set_lg_dir __P((DB_ENV *, const char *));
-#define __dbcl_set_lg_max __dbcl_set_lg_max@DB_VERSION_UNIQUE_NAME@
-int __dbcl_set_lg_max __P((DB_ENV *, u_int32_t));
-#define __dbcl_set_lg_regionmax __dbcl_set_lg_regionmax@DB_VERSION_UNIQUE_NAME@
-int __dbcl_set_lg_regionmax __P((DB_ENV *, u_int32_t));
-#define __dbcl_set_lk_conflict __dbcl_set_lk_conflict@DB_VERSION_UNIQUE_NAME@
-int __dbcl_set_lk_conflict __P((DB_ENV *, u_int8_t *, int));
-#define __dbcl_set_lk_detect __dbcl_set_lk_detect@DB_VERSION_UNIQUE_NAME@
-int __dbcl_set_lk_detect __P((DB_ENV *, u_int32_t));
-#define __dbcl_set_lk_max __dbcl_set_lk_max@DB_VERSION_UNIQUE_NAME@
-int __dbcl_set_lk_max __P((DB_ENV *, u_int32_t));
-#define __dbcl_set_lk_max_locks __dbcl_set_lk_max_locks@DB_VERSION_UNIQUE_NAME@
-int __dbcl_set_lk_max_locks __P((DB_ENV *, u_int32_t));
-#define __dbcl_set_lk_max_lockers __dbcl_set_lk_max_lockers@DB_VERSION_UNIQUE_NAME@
-int __dbcl_set_lk_max_lockers __P((DB_ENV *, u_int32_t));
-#define __dbcl_set_lk_max_objects __dbcl_set_lk_max_objects@DB_VERSION_UNIQUE_NAME@
-int __dbcl_set_lk_max_objects __P((DB_ENV *, u_int32_t));
-#define __dbcl_set_mp_mmapsize __dbcl_set_mp_mmapsize@DB_VERSION_UNIQUE_NAME@
-int __dbcl_set_mp_mmapsize __P((DB_ENV *, size_t));
-#define __dbcl_set_mutex_locks __dbcl_set_mutex_locks@DB_VERSION_UNIQUE_NAME@
-int __dbcl_set_mutex_locks __P((DB_ENV *, int));
-#define __dbcl_env_open __dbcl_env_open@DB_VERSION_UNIQUE_NAME@
-int __dbcl_env_open __P((DB_ENV *, const char *, u_int32_t, int));
-#define __dbcl_env_paniccall __dbcl_env_paniccall@DB_VERSION_UNIQUE_NAME@
-int __dbcl_env_paniccall __P((DB_ENV *, void (*)(DB_ENV *, int)));
-#define __dbcl_set_recovery_init __dbcl_set_recovery_init@DB_VERSION_UNIQUE_NAME@
-int __dbcl_set_recovery_init __P((DB_ENV *, int (*)(DB_ENV *)));
-#define __dbcl_env_remove __dbcl_env_remove@DB_VERSION_UNIQUE_NAME@
-int __dbcl_env_remove __P((DB_ENV *, const char *, u_int32_t));
-#define __dbcl_set_shm_key __dbcl_set_shm_key@DB_VERSION_UNIQUE_NAME@
-int __dbcl_set_shm_key __P((DB_ENV *, long));
-#define __dbcl_set_tmp_dir __dbcl_set_tmp_dir@DB_VERSION_UNIQUE_NAME@
-int __dbcl_set_tmp_dir __P((DB_ENV *, const char *));
-#define __dbcl_set_tx_recover __dbcl_set_tx_recover@DB_VERSION_UNIQUE_NAME@
-int __dbcl_set_tx_recover __P((DB_ENV *, int (*)(DB_ENV *, DBT *, DB_LSN *, db_recops)));
-#define __dbcl_set_tx_max __dbcl_set_tx_max@DB_VERSION_UNIQUE_NAME@
-int __dbcl_set_tx_max __P((DB_ENV *, u_int32_t));
-#define __dbcl_set_tx_timestamp __dbcl_set_tx_timestamp@DB_VERSION_UNIQUE_NAME@
-int __dbcl_set_tx_timestamp __P((DB_ENV *, time_t *));
-#define __dbcl_set_verbose __dbcl_set_verbose@DB_VERSION_UNIQUE_NAME@
-int __dbcl_set_verbose __P((DB_ENV *, u_int32_t, int));
-#define __dbcl_txn_abort __dbcl_txn_abort@DB_VERSION_UNIQUE_NAME@
-int __dbcl_txn_abort __P((DB_TXN *));
-#define __dbcl_txn_begin __dbcl_txn_begin@DB_VERSION_UNIQUE_NAME@
-int __dbcl_txn_begin __P((DB_ENV *, DB_TXN *, DB_TXN **, u_int32_t));
-#define __dbcl_txn_checkpoint __dbcl_txn_checkpoint@DB_VERSION_UNIQUE_NAME@
-int __dbcl_txn_checkpoint __P((DB_ENV *, u_int32_t, u_int32_t));
-#define __dbcl_txn_commit __dbcl_txn_commit@DB_VERSION_UNIQUE_NAME@
-int __dbcl_txn_commit __P((DB_TXN *, u_int32_t));
-#define __dbcl_txn_prepare __dbcl_txn_prepare@DB_VERSION_UNIQUE_NAME@
-int __dbcl_txn_prepare __P((DB_TXN *, u_int8_t *));
-#define __dbcl_txn_recover __dbcl_txn_recover@DB_VERSION_UNIQUE_NAME@
-int __dbcl_txn_recover __P((DB_ENV *, DB_PREPLIST *, long, long *, u_int32_t));
-#define __dbcl_txn_stat __dbcl_txn_stat@DB_VERSION_UNIQUE_NAME@
-int __dbcl_txn_stat __P((DB_ENV *, DB_TXN_STAT **));
-#define __dbcl_db_alloc __dbcl_db_alloc@DB_VERSION_UNIQUE_NAME@
-int __dbcl_db_alloc __P((DB *, void *(*)(size_t), void *(*)(void *, size_t), void (*)(void *)));
-#define __dbcl_db_associate __dbcl_db_associate@DB_VERSION_UNIQUE_NAME@
-int __dbcl_db_associate __P((DB *, DB *, int (*)(DB *, const DBT *, const DBT *, DBT *), u_int32_t));
-#define __dbcl_db_bt_compare __dbcl_db_bt_compare@DB_VERSION_UNIQUE_NAME@
-int __dbcl_db_bt_compare __P((DB *, int (*)(DB *, const DBT *, const DBT *)));
-#define __dbcl_db_bt_maxkey __dbcl_db_bt_maxkey@DB_VERSION_UNIQUE_NAME@
-int __dbcl_db_bt_maxkey __P((DB *, u_int32_t));
-#define __dbcl_db_bt_minkey __dbcl_db_bt_minkey@DB_VERSION_UNIQUE_NAME@
-int __dbcl_db_bt_minkey __P((DB *, u_int32_t));
-#define __dbcl_db_bt_prefix __dbcl_db_bt_prefix@DB_VERSION_UNIQUE_NAME@
-int __dbcl_db_bt_prefix __P((DB *, size_t(*)(DB *, const DBT *, const DBT *)));
-#define __dbcl_db_set_append_recno __dbcl_db_set_append_recno@DB_VERSION_UNIQUE_NAME@
-int __dbcl_db_set_append_recno __P((DB *, int (*)(DB *, DBT *, db_recno_t)));
-#define __dbcl_db_cachesize __dbcl_db_cachesize@DB_VERSION_UNIQUE_NAME@
-int __dbcl_db_cachesize __P((DB *, u_int32_t, u_int32_t, int));
-#define __dbcl_db_close __dbcl_db_close@DB_VERSION_UNIQUE_NAME@
-int __dbcl_db_close __P((DB *, u_int32_t));
-#define __dbcl_db_create __dbcl_db_create@DB_VERSION_UNIQUE_NAME@
-int __dbcl_db_create __P((DB *, DB_ENV *, u_int32_t));
-#define __dbcl_db_del __dbcl_db_del@DB_VERSION_UNIQUE_NAME@
-int __dbcl_db_del __P((DB *, DB_TXN *, DBT *, u_int32_t));
-#define __dbcl_db_extentsize __dbcl_db_extentsize@DB_VERSION_UNIQUE_NAME@
-int __dbcl_db_extentsize __P((DB *, u_int32_t));
-#define __dbcl_db_fd __dbcl_db_fd@DB_VERSION_UNIQUE_NAME@
-int __dbcl_db_fd __P((DB *, int *));
-#define __dbcl_db_feedback __dbcl_db_feedback@DB_VERSION_UNIQUE_NAME@
-int __dbcl_db_feedback __P((DB *, void (*)(DB *, int, int)));
-#define __dbcl_db_flags __dbcl_db_flags@DB_VERSION_UNIQUE_NAME@
-int __dbcl_db_flags __P((DB *, u_int32_t));
-#define __dbcl_db_get __dbcl_db_get@DB_VERSION_UNIQUE_NAME@
-int __dbcl_db_get __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t));
-#define __dbcl_db_h_ffactor __dbcl_db_h_ffactor@DB_VERSION_UNIQUE_NAME@
-int __dbcl_db_h_ffactor __P((DB *, u_int32_t));
-#define __dbcl_db_h_hash __dbcl_db_h_hash@DB_VERSION_UNIQUE_NAME@
-int __dbcl_db_h_hash __P((DB *, u_int32_t(*)(DB *, const void *, u_int32_t)));
-#define __dbcl_db_h_nelem __dbcl_db_h_nelem@DB_VERSION_UNIQUE_NAME@
-int __dbcl_db_h_nelem __P((DB *, u_int32_t));
-#define __dbcl_db_key_range __dbcl_db_key_range@DB_VERSION_UNIQUE_NAME@
-int __dbcl_db_key_range __P((DB *, DB_TXN *, DBT *, DB_KEY_RANGE *, u_int32_t));
-#define __dbcl_db_lorder __dbcl_db_lorder@DB_VERSION_UNIQUE_NAME@
-int __dbcl_db_lorder __P((DB *, int));
-#define __dbcl_db_open __dbcl_db_open@DB_VERSION_UNIQUE_NAME@
-int __dbcl_db_open __P((DB *, const char *, const char *, DBTYPE, u_int32_t, int));
-#define __dbcl_db_pagesize __dbcl_db_pagesize@DB_VERSION_UNIQUE_NAME@
-int __dbcl_db_pagesize __P((DB *, u_int32_t));
-#define __dbcl_db_panic __dbcl_db_panic@DB_VERSION_UNIQUE_NAME@
-int __dbcl_db_panic __P((DB *, void (*)(DB_ENV *, int)));
-#define __dbcl_db_pget __dbcl_db_pget@DB_VERSION_UNIQUE_NAME@
-int __dbcl_db_pget __P((DB *, DB_TXN *, DBT *, DBT *, DBT *, u_int32_t));
-#define __dbcl_db_put __dbcl_db_put@DB_VERSION_UNIQUE_NAME@
-int __dbcl_db_put __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t));
-#define __dbcl_db_re_delim __dbcl_db_re_delim@DB_VERSION_UNIQUE_NAME@
-int __dbcl_db_re_delim __P((DB *, int));
-#define __dbcl_db_re_len __dbcl_db_re_len@DB_VERSION_UNIQUE_NAME@
-int __dbcl_db_re_len __P((DB *, u_int32_t));
-#define __dbcl_db_re_pad __dbcl_db_re_pad@DB_VERSION_UNIQUE_NAME@
-int __dbcl_db_re_pad __P((DB *, int));
-#define __dbcl_db_re_source __dbcl_db_re_source@DB_VERSION_UNIQUE_NAME@
-int __dbcl_db_re_source __P((DB *, const char *));
-#define __dbcl_db_remove __dbcl_db_remove@DB_VERSION_UNIQUE_NAME@
-int __dbcl_db_remove __P((DB *, const char *, const char *, u_int32_t));
-#define __dbcl_db_rename __dbcl_db_rename@DB_VERSION_UNIQUE_NAME@
-int __dbcl_db_rename __P((DB *, const char *, const char *, const char *, u_int32_t));
-#define __dbcl_db_stat __dbcl_db_stat@DB_VERSION_UNIQUE_NAME@
-int __dbcl_db_stat __P((DB *, void *, u_int32_t));
-#define __dbcl_db_sync __dbcl_db_sync@DB_VERSION_UNIQUE_NAME@
-int __dbcl_db_sync __P((DB *, u_int32_t));
-#define __dbcl_db_truncate __dbcl_db_truncate@DB_VERSION_UNIQUE_NAME@
-int __dbcl_db_truncate __P((DB *, const char *, const char *, u_int32_t *, u_int32_t));
-#define __dbcl_db_upgrade __dbcl_db_upgrade@DB_VERSION_UNIQUE_NAME@
-int __dbcl_db_upgrade __P((DB *, const char *, u_int32_t));
-#define __dbcl_db_verify __dbcl_db_verify@DB_VERSION_UNIQUE_NAME@
-int __dbcl_db_verify __P((DB *, const char *, const char *, FILE *, u_int32_t));
-#define __dbcl_db_cursor __dbcl_db_cursor@DB_VERSION_UNIQUE_NAME@
-int __dbcl_db_cursor __P((DB *, DB_TXN *, DBC **, u_int32_t));
-#define __dbcl_db_join __dbcl_db_join@DB_VERSION_UNIQUE_NAME@
-int __dbcl_db_join __P((DB *, DBC **, DBC **, u_int32_t));
-#define __dbcl_dbc_close __dbcl_dbc_close@DB_VERSION_UNIQUE_NAME@
-int __dbcl_dbc_close __P((DBC *));
-#define __dbcl_dbc_count __dbcl_dbc_count@DB_VERSION_UNIQUE_NAME@
-int __dbcl_dbc_count __P((DBC *, db_recno_t *, u_int32_t));
-#define __dbcl_dbc_del __dbcl_dbc_del@DB_VERSION_UNIQUE_NAME@
-int __dbcl_dbc_del __P((DBC *, u_int32_t));
-#define __dbcl_dbc_dup __dbcl_dbc_dup@DB_VERSION_UNIQUE_NAME@
-int __dbcl_dbc_dup __P((DBC *, DBC **, u_int32_t));
-#define __dbcl_dbc_get __dbcl_dbc_get@DB_VERSION_UNIQUE_NAME@
-int __dbcl_dbc_get __P((DBC *, DBT *, DBT *, u_int32_t));
-#define __dbcl_dbc_pget __dbcl_dbc_pget@DB_VERSION_UNIQUE_NAME@
-int __dbcl_dbc_pget __P((DBC *, DBT *, DBT *, DBT *, u_int32_t));
-#define __dbcl_dbc_put __dbcl_dbc_put@DB_VERSION_UNIQUE_NAME@
-int __dbcl_dbc_put __P((DBC *, DBT *, DBT *, u_int32_t));
-#define __dbcl_lock_detect __dbcl_lock_detect@DB_VERSION_UNIQUE_NAME@
-int __dbcl_lock_detect __P((DB_ENV *, u_int32_t, u_int32_t, int *));
-#define __dbcl_lock_get __dbcl_lock_get@DB_VERSION_UNIQUE_NAME@
-int __dbcl_lock_get __P((DB_ENV *, u_int32_t, u_int32_t, const DBT *, db_lockmode_t, DB_LOCK *));
-#define __dbcl_lock_id __dbcl_lock_id@DB_VERSION_UNIQUE_NAME@
-int __dbcl_lock_id __P((DB_ENV *, u_int32_t *));
-#define __dbcl_lock_put __dbcl_lock_put@DB_VERSION_UNIQUE_NAME@
-int __dbcl_lock_put __P((DB_ENV *, DB_LOCK *));
-#define __dbcl_lock_stat __dbcl_lock_stat@DB_VERSION_UNIQUE_NAME@
-int __dbcl_lock_stat __P((DB_ENV *, DB_LOCK_STAT **));
-#define __dbcl_lock_vec __dbcl_lock_vec@DB_VERSION_UNIQUE_NAME@
-int __dbcl_lock_vec __P((DB_ENV *, u_int32_t, u_int32_t, DB_LOCKREQ *, int, DB_LOCKREQ **));
-#define __dbcl_log_archive __dbcl_log_archive@DB_VERSION_UNIQUE_NAME@
-int __dbcl_log_archive __P((DB_ENV *, char ***, u_int32_t));
-#define __dbcl_log_file __dbcl_log_file@DB_VERSION_UNIQUE_NAME@
-int __dbcl_log_file __P((DB_ENV *, const DB_LSN *, char *, size_t));
-#define __dbcl_log_flush __dbcl_log_flush@DB_VERSION_UNIQUE_NAME@
-int __dbcl_log_flush __P((DB_ENV *, const DB_LSN *));
-#define __dbcl_log_get __dbcl_log_get@DB_VERSION_UNIQUE_NAME@
-int __dbcl_log_get __P((DB_ENV *, DB_LSN *, DBT *, u_int32_t));
-#define __dbcl_log_put __dbcl_log_put@DB_VERSION_UNIQUE_NAME@
-int __dbcl_log_put __P((DB_ENV *, DB_LSN *, const DBT *, u_int32_t));
-#define __dbcl_log_register __dbcl_log_register@DB_VERSION_UNIQUE_NAME@
-int __dbcl_log_register __P((DB_ENV *, DB *, const char *));
-#define __dbcl_log_stat __dbcl_log_stat@DB_VERSION_UNIQUE_NAME@
-int __dbcl_log_stat __P((DB_ENV *, DB_LOG_STAT **));
-#define __dbcl_log_unregister __dbcl_log_unregister@DB_VERSION_UNIQUE_NAME@
-int __dbcl_log_unregister __P((DB_ENV *, DB *));
-#define __dbcl_memp_fclose __dbcl_memp_fclose@DB_VERSION_UNIQUE_NAME@
-int __dbcl_memp_fclose __P((DB_MPOOLFILE *));
-#define __dbcl_memp_fget __dbcl_memp_fget@DB_VERSION_UNIQUE_NAME@
-int __dbcl_memp_fget __P((DB_MPOOLFILE *, db_pgno_t *, u_int32_t, void **));
-#define __dbcl_memp_fopen __dbcl_memp_fopen@DB_VERSION_UNIQUE_NAME@
-int __dbcl_memp_fopen __P((DB_ENV *, const char *, u_int32_t, int, size_t, DB_MPOOL_FINFO *, DB_MPOOLFILE **));
-#define __dbcl_memp_fput __dbcl_memp_fput@DB_VERSION_UNIQUE_NAME@
-int __dbcl_memp_fput __P((DB_MPOOLFILE *, void *, u_int32_t));
-#define __dbcl_memp_fset __dbcl_memp_fset@DB_VERSION_UNIQUE_NAME@
-int __dbcl_memp_fset __P((DB_MPOOLFILE *, void *, u_int32_t));
-#define __dbcl_memp_fsync __dbcl_memp_fsync@DB_VERSION_UNIQUE_NAME@
-int __dbcl_memp_fsync __P((DB_MPOOLFILE *));
-#define __dbcl_memp_register __dbcl_memp_register@DB_VERSION_UNIQUE_NAME@
-int __dbcl_memp_register __P((DB_ENV *, int, int (*)(DB_ENV *, db_pgno_t, void *, DBT *), int (*)(DB_ENV *, db_pgno_t, void *, DBT *)));
-#define __dbcl_memp_stat __dbcl_memp_stat@DB_VERSION_UNIQUE_NAME@
-int __dbcl_memp_stat __P((DB_ENV *, DB_MPOOL_STAT **, DB_MPOOL_FSTAT ***));
-#define __dbcl_memp_sync __dbcl_memp_sync@DB_VERSION_UNIQUE_NAME@
-int __dbcl_memp_sync __P((DB_ENV *, DB_LSN *));
-#define __dbcl_memp_trickle __dbcl_memp_trickle@DB_VERSION_UNIQUE_NAME@
-int __dbcl_memp_trickle __P((DB_ENV *, int, int *));
-#define __dbcl_env_close_ret __dbcl_env_close_ret@DB_VERSION_UNIQUE_NAME@
-int __dbcl_env_close_ret __P((DB_ENV *, u_int32_t, __env_close_reply *));
-#define __dbcl_env_create_ret __dbcl_env_create_ret@DB_VERSION_UNIQUE_NAME@
-int __dbcl_env_create_ret __P((DB_ENV *, long, __env_create_reply *));
-#define __dbcl_env_open_ret __dbcl_env_open_ret@DB_VERSION_UNIQUE_NAME@
-int __dbcl_env_open_ret __P((DB_ENV *, const char *, u_int32_t, int, __env_open_reply *));
-#define __dbcl_env_remove_ret __dbcl_env_remove_ret@DB_VERSION_UNIQUE_NAME@
-int __dbcl_env_remove_ret __P((DB_ENV *, const char *, u_int32_t, __env_remove_reply *));
-#define __dbcl_txn_abort_ret __dbcl_txn_abort_ret@DB_VERSION_UNIQUE_NAME@
-int __dbcl_txn_abort_ret __P((DB_TXN *, __txn_abort_reply *));
-#define __dbcl_txn_begin_ret __dbcl_txn_begin_ret@DB_VERSION_UNIQUE_NAME@
-int __dbcl_txn_begin_ret __P((DB_ENV *, DB_TXN *, DB_TXN **, u_int32_t, __txn_begin_reply *));
-#define __dbcl_txn_commit_ret __dbcl_txn_commit_ret@DB_VERSION_UNIQUE_NAME@
-int __dbcl_txn_commit_ret __P((DB_TXN *, u_int32_t, __txn_commit_reply *));
-#define __dbcl_txn_recover_ret __dbcl_txn_recover_ret@DB_VERSION_UNIQUE_NAME@
-int __dbcl_txn_recover_ret __P((DB_ENV *, DB_PREPLIST *, long, long *, u_int32_t, __txn_recover_reply *));
-#define __dbcl_db_close_ret __dbcl_db_close_ret@DB_VERSION_UNIQUE_NAME@
-int __dbcl_db_close_ret __P((DB *, u_int32_t, __db_close_reply *));
-#define __dbcl_db_create_ret __dbcl_db_create_ret@DB_VERSION_UNIQUE_NAME@
-int __dbcl_db_create_ret __P((DB *, DB_ENV *, u_int32_t, __db_create_reply *));
-#define __dbcl_db_get_ret __dbcl_db_get_ret@DB_VERSION_UNIQUE_NAME@
-int __dbcl_db_get_ret __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t, __db_get_reply *));
-#define __dbcl_db_key_range_ret __dbcl_db_key_range_ret@DB_VERSION_UNIQUE_NAME@
-int __dbcl_db_key_range_ret __P((DB *, DB_TXN *, DBT *, DB_KEY_RANGE *, u_int32_t, __db_key_range_reply *));
-#define __dbcl_db_open_ret __dbcl_db_open_ret@DB_VERSION_UNIQUE_NAME@
-int __dbcl_db_open_ret __P((DB *, const char *, const char *, DBTYPE, u_int32_t, int, __db_open_reply *));
-#define __dbcl_db_pget_ret __dbcl_db_pget_ret@DB_VERSION_UNIQUE_NAME@
-int __dbcl_db_pget_ret __P((DB *, DB_TXN *, DBT *, DBT *, DBT *, u_int32_t, __db_pget_reply *));
-#define __dbcl_db_put_ret __dbcl_db_put_ret@DB_VERSION_UNIQUE_NAME@
-int __dbcl_db_put_ret __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t, __db_put_reply *));
-#define __dbcl_db_remove_ret __dbcl_db_remove_ret@DB_VERSION_UNIQUE_NAME@
-int __dbcl_db_remove_ret __P((DB *, const char *, const char *, u_int32_t, __db_remove_reply *));
-#define __dbcl_db_rename_ret __dbcl_db_rename_ret@DB_VERSION_UNIQUE_NAME@
-int __dbcl_db_rename_ret __P((DB *, const char *, const char *, const char *, u_int32_t, __db_rename_reply *));
-#define __dbcl_db_stat_ret __dbcl_db_stat_ret@DB_VERSION_UNIQUE_NAME@
-int __dbcl_db_stat_ret __P((DB *, void *, u_int32_t, __db_stat_reply *));
-#define __dbcl_db_truncate_ret __dbcl_db_truncate_ret@DB_VERSION_UNIQUE_NAME@
-int __dbcl_db_truncate_ret __P((DB *, const char *, const char *, u_int32_t *, u_int32_t, __db_truncate_reply *));
-#define __dbcl_db_cursor_ret __dbcl_db_cursor_ret@DB_VERSION_UNIQUE_NAME@
-int __dbcl_db_cursor_ret __P((DB *, DB_TXN *, DBC **, u_int32_t, __db_cursor_reply *));
-#define __dbcl_db_join_ret __dbcl_db_join_ret@DB_VERSION_UNIQUE_NAME@
-int __dbcl_db_join_ret __P((DB *, DBC **, DBC **, u_int32_t, __db_join_reply *));
-#define __dbcl_dbc_close_ret __dbcl_dbc_close_ret@DB_VERSION_UNIQUE_NAME@
-int __dbcl_dbc_close_ret __P((DBC *, __dbc_close_reply *));
-#define __dbcl_dbc_count_ret __dbcl_dbc_count_ret@DB_VERSION_UNIQUE_NAME@
-int __dbcl_dbc_count_ret __P((DBC *, db_recno_t *, u_int32_t, __dbc_count_reply *));
-#define __dbcl_dbc_dup_ret __dbcl_dbc_dup_ret@DB_VERSION_UNIQUE_NAME@
-int __dbcl_dbc_dup_ret __P((DBC *, DBC **, u_int32_t, __dbc_dup_reply *));
-#define __dbcl_dbc_get_ret __dbcl_dbc_get_ret@DB_VERSION_UNIQUE_NAME@
-int __dbcl_dbc_get_ret __P((DBC *, DBT *, DBT *, u_int32_t, __dbc_get_reply *));
-#define __dbcl_dbc_pget_ret __dbcl_dbc_pget_ret@DB_VERSION_UNIQUE_NAME@
-int __dbcl_dbc_pget_ret __P((DBC *, DBT *, DBT *, DBT *, u_int32_t, __dbc_pget_reply *));
-#define __dbcl_dbc_put_ret __dbcl_dbc_put_ret@DB_VERSION_UNIQUE_NAME@
-int __dbcl_dbc_put_ret __P((DBC *, DBT *, DBT *, u_int32_t, __dbc_put_reply *));
-#if defined(__cplusplus)
-}
-#endif
-#endif /* _rpc_client_ext_h_ */
diff --git a/db/include_auto/rpc_defs.in b/db/include_auto/rpc_defs.in
deleted file mode 100644
index daf1949f2..000000000
--- a/db/include_auto/rpc_defs.in
+++ /dev/null
@@ -1,4 +0,0 @@
-
-/* DO NOT EDIT: automatically built by dist/s_rpc. */
-#define DB_RPC_SERVERPROG ((unsigned long)(351457))
-#define DB_RPC_SERVERVERS ((unsigned long)(3003))
diff --git a/db/include_auto/rpc_server_ext.h b/db/include_auto/rpc_server_ext.h
deleted file mode 100644
index c26355db8..000000000
--- a/db/include_auto/rpc_server_ext.h
+++ /dev/null
@@ -1,110 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_include. */
-#ifndef _rpc_server_ext_h_
-#define _rpc_server_ext_h_
-#if defined(__cplusplus)
-extern "C" {
-#endif
-void __env_cachesize_proc __P((long, u_int32_t, u_int32_t, u_int32_t, __env_cachesize_reply *));
-void __env_close_proc __P((long, u_int32_t, __env_close_reply *));
-void __env_create_proc __P((u_int32_t, __env_create_reply *));
-void __env_flags_proc __P((long, u_int32_t, u_int32_t, __env_flags_reply *));
-void __env_open_proc __P((long, char *, u_int32_t, u_int32_t, __env_open_reply *));
-void __env_remove_proc __P((long, char *, u_int32_t, __env_remove_reply *));
-void __txn_abort_proc __P((long, __txn_abort_reply *));
-void __txn_begin_proc __P((long, long, u_int32_t, __txn_begin_reply *));
-void __txn_commit_proc __P((long, u_int32_t, __txn_commit_reply *));
-void __txn_prepare_proc __P((long, u_int8_t *, __txn_prepare_reply *));
-void __txn_recover_proc __P((long, u_int32_t, u_int32_t, __txn_recover_reply *, int *));
-void __db_bt_maxkey_proc __P((long, u_int32_t, __db_bt_maxkey_reply *));
-void __db_associate_proc __P((long, long, u_int32_t, __db_associate_reply *));
-void __db_bt_minkey_proc __P((long, u_int32_t, __db_bt_minkey_reply *));
-void __db_close_proc __P((long, u_int32_t, __db_close_reply *));
-void __db_create_proc __P((long, u_int32_t, __db_create_reply *));
-void __db_del_proc __P((long, long, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, __db_del_reply *));
-void __db_extentsize_proc __P((long, u_int32_t, __db_extentsize_reply *));
-void __db_flags_proc __P((long, u_int32_t, __db_flags_reply *));
-void __db_get_proc __P((long, long, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, __db_get_reply *, int *));
-void __db_h_ffactor_proc __P((long, u_int32_t, __db_h_ffactor_reply *));
-void __db_h_nelem_proc __P((long, u_int32_t, __db_h_nelem_reply *));
-void __db_key_range_proc __P((long, long, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, __db_key_range_reply *));
-void __db_lorder_proc __P((long, u_int32_t, __db_lorder_reply *));
-void __db_open_proc __P((long, char *, char *, u_int32_t, u_int32_t, u_int32_t, __db_open_reply *));
-void __db_pagesize_proc __P((long, u_int32_t, __db_pagesize_reply *));
-void __db_pget_proc __P((long, long, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, __db_pget_reply *, int *));
-void __db_put_proc __P((long, long, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, __db_put_reply *, int *));
-void __db_re_delim_proc __P((long, u_int32_t, __db_re_delim_reply *));
-void __db_re_len_proc __P((long, u_int32_t, __db_re_len_reply *));
-void __db_re_pad_proc __P((long, u_int32_t, __db_re_pad_reply *));
-void __db_remove_proc __P((long, char *, char *, u_int32_t, __db_remove_reply *));
-void __db_rename_proc __P((long, char *, char *, char *, u_int32_t, __db_rename_reply *));
-void __db_stat_proc __P((long, u_int32_t, __db_stat_reply *, int *));
-void __db_sync_proc __P((long, u_int32_t, __db_sync_reply *));
-void __db_truncate_proc __P((long, char *, char *, u_int32_t, __db_truncate_reply *));
-void __db_cursor_proc __P((long, long, u_int32_t, __db_cursor_reply *));
-void __db_join_proc __P((long, u_int32_t *, u_int32_t, u_int32_t, __db_join_reply *));
-void __dbc_close_proc __P((long, __dbc_close_reply *));
-void __dbc_count_proc __P((long, u_int32_t, __dbc_count_reply *));
-void __dbc_del_proc __P((long, u_int32_t, __dbc_del_reply *));
-void __dbc_dup_proc __P((long, u_int32_t, __dbc_dup_reply *));
-void __dbc_get_proc __P((long, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, __dbc_get_reply *, int *));
-void __dbc_pget_proc __P((long, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, __dbc_pget_reply *, int *));
-void __dbc_put_proc __P((long, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, __dbc_put_reply *, int *));
-void __dbsrv_settimeout __P((ct_entry *, u_int32_t));
-void __dbsrv_timeout __P((int));
-void __dbclear_ctp __P((ct_entry *));
-void __dbdel_ctp __P((ct_entry *));
-ct_entry *new_ct_ent __P((int *));
-ct_entry *get_tableent __P((long));
-void __dbsrv_active __P((ct_entry *));
-int __dbc_close_int __P((ct_entry *));
-int __dbenv_close_int __P((long, int));
-char *get_home __P((char *));
-__env_cachesize_reply *__db_env_cachesize_3003 __P((__env_cachesize_msg *));
-__env_close_reply *__db_env_close_3003 __P((__env_close_msg *));
-__env_create_reply *__db_env_create_3003 __P((__env_create_msg *));
-__env_flags_reply *__db_env_flags_3003 __P((__env_flags_msg *));
-__env_open_reply *__db_env_open_3003 __P((__env_open_msg *));
-__env_remove_reply *__db_env_remove_3003 __P((__env_remove_msg *));
-__txn_abort_reply *__db_txn_abort_3003 __P((__txn_abort_msg *));
-__txn_begin_reply *__db_txn_begin_3003 __P((__txn_begin_msg *));
-__txn_commit_reply *__db_txn_commit_3003 __P((__txn_commit_msg *));
-__txn_prepare_reply *__db_txn_prepare_3003 __P((__txn_prepare_msg *));
-__txn_recover_reply *__db_txn_recover_3003 __P((__txn_recover_msg *));
-__db_associate_reply *__db_db_associate_3003 __P((__db_associate_msg *));
-__db_bt_maxkey_reply *__db_db_bt_maxkey_3003 __P((__db_bt_maxkey_msg *));
-__db_bt_minkey_reply *__db_db_bt_minkey_3003 __P((__db_bt_minkey_msg *));
-__db_close_reply *__db_db_close_3003 __P((__db_close_msg *));
-__db_create_reply *__db_db_create_3003 __P((__db_create_msg *));
-__db_del_reply *__db_db_del_3003 __P((__db_del_msg *));
-__db_extentsize_reply *__db_db_extentsize_3003 __P((__db_extentsize_msg *));
-__db_flags_reply *__db_db_flags_3003 __P((__db_flags_msg *));
-__db_get_reply *__db_db_get_3003 __P((__db_get_msg *));
-__db_h_ffactor_reply *__db_db_h_ffactor_3003 __P((__db_h_ffactor_msg *));
-__db_h_nelem_reply *__db_db_h_nelem_3003 __P((__db_h_nelem_msg *));
-__db_key_range_reply *__db_db_key_range_3003 __P((__db_key_range_msg *));
-__db_lorder_reply *__db_db_lorder_3003 __P((__db_lorder_msg *));
-__db_open_reply *__db_db_open_3003 __P((__db_open_msg *));
-__db_pagesize_reply *__db_db_pagesize_3003 __P((__db_pagesize_msg *));
-__db_pget_reply *__db_db_pget_3003 __P((__db_pget_msg *));
-__db_put_reply *__db_db_put_3003 __P((__db_put_msg *));
-__db_re_delim_reply *__db_db_re_delim_3003 __P((__db_re_delim_msg *));
-__db_re_len_reply *__db_db_re_len_3003 __P((__db_re_len_msg *));
-__db_re_pad_reply *__db_db_re_pad_3003 __P((__db_re_pad_msg *));
-__db_remove_reply *__db_db_remove_3003 __P((__db_remove_msg *));
-__db_rename_reply *__db_db_rename_3003 __P((__db_rename_msg *));
-__db_stat_reply *__db_db_stat_3003 __P((__db_stat_msg *));
-__db_sync_reply *__db_db_sync_3003 __P((__db_sync_msg *));
-__db_truncate_reply *__db_db_truncate_3003 __P((__db_truncate_msg *));
-__db_cursor_reply *__db_db_cursor_3003 __P((__db_cursor_msg *));
-__db_join_reply *__db_db_join_3003 __P((__db_join_msg *));
-__dbc_close_reply *__db_dbc_close_3003 __P((__dbc_close_msg *));
-__dbc_count_reply *__db_dbc_count_3003 __P((__dbc_count_msg *));
-__dbc_del_reply *__db_dbc_del_3003 __P((__dbc_del_msg *));
-__dbc_dup_reply *__db_dbc_dup_3003 __P((__dbc_dup_msg *));
-__dbc_get_reply *__db_dbc_get_3003 __P((__dbc_get_msg *));
-__dbc_pget_reply *__db_dbc_pget_3003 __P((__dbc_pget_msg *));
-__dbc_put_reply *__db_dbc_put_3003 __P((__dbc_put_msg *));
-#if defined(__cplusplus)
-}
-#endif
-#endif /* _rpc_server_ext_h_ */
diff --git a/db/include_auto/rpc_server_ext.in b/db/include_auto/rpc_server_ext.in
deleted file mode 100644
index 898627ea4..000000000
--- a/db/include_auto/rpc_server_ext.in
+++ /dev/null
@@ -1,165 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_include. */
-#ifndef _rpc_server_ext_h_
-#define _rpc_server_ext_h_
-#if defined(__cplusplus)
-extern "C" {
-#endif
-#define __env_cachesize_proc __env_cachesize_proc@DB_VERSION_UNIQUE_NAME@
-void __env_cachesize_proc __P((long, u_int32_t, u_int32_t, u_int32_t, __env_cachesize_reply *));
-#define __env_close_proc __env_close_proc@DB_VERSION_UNIQUE_NAME@
-void __env_close_proc __P((long, u_int32_t, __env_close_reply *));
-#define __env_create_proc __env_create_proc@DB_VERSION_UNIQUE_NAME@
-void __env_create_proc __P((u_int32_t, __env_create_reply *));
-#define __env_flags_proc __env_flags_proc@DB_VERSION_UNIQUE_NAME@
-void __env_flags_proc __P((long, u_int32_t, u_int32_t, __env_flags_reply *));
-#define __env_open_proc __env_open_proc@DB_VERSION_UNIQUE_NAME@
-void __env_open_proc __P((long, char *, u_int32_t, u_int32_t, __env_open_reply *));
-#define __env_remove_proc __env_remove_proc@DB_VERSION_UNIQUE_NAME@
-void __env_remove_proc __P((long, char *, u_int32_t, __env_remove_reply *));
-#define __txn_abort_proc __txn_abort_proc@DB_VERSION_UNIQUE_NAME@
-void __txn_abort_proc __P((long, __txn_abort_reply *));
-#define __txn_begin_proc __txn_begin_proc@DB_VERSION_UNIQUE_NAME@
-void __txn_begin_proc __P((long, long, u_int32_t, __txn_begin_reply *));
-#define __txn_commit_proc __txn_commit_proc@DB_VERSION_UNIQUE_NAME@
-void __txn_commit_proc __P((long, u_int32_t, __txn_commit_reply *));
-#define __txn_prepare_proc __txn_prepare_proc@DB_VERSION_UNIQUE_NAME@
-void __txn_prepare_proc __P((long, u_int8_t *, __txn_prepare_reply *));
-#define __txn_recover_proc __txn_recover_proc@DB_VERSION_UNIQUE_NAME@
-void __txn_recover_proc __P((long, u_int32_t, u_int32_t, __txn_recover_reply *, int *));
-#define __db_bt_maxkey_proc __db_bt_maxkey_proc@DB_VERSION_UNIQUE_NAME@
-void __db_bt_maxkey_proc __P((long, u_int32_t, __db_bt_maxkey_reply *));
-#define __db_associate_proc __db_associate_proc@DB_VERSION_UNIQUE_NAME@
-void __db_associate_proc __P((long, long, u_int32_t, __db_associate_reply *));
-#define __db_bt_minkey_proc __db_bt_minkey_proc@DB_VERSION_UNIQUE_NAME@
-void __db_bt_minkey_proc __P((long, u_int32_t, __db_bt_minkey_reply *));
-#define __db_close_proc __db_close_proc@DB_VERSION_UNIQUE_NAME@
-void __db_close_proc __P((long, u_int32_t, __db_close_reply *));
-#define __db_create_proc __db_create_proc@DB_VERSION_UNIQUE_NAME@
-void __db_create_proc __P((long, u_int32_t, __db_create_reply *));
-#define __db_del_proc __db_del_proc@DB_VERSION_UNIQUE_NAME@
-void __db_del_proc __P((long, long, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, __db_del_reply *));
-#define __db_extentsize_proc __db_extentsize_proc@DB_VERSION_UNIQUE_NAME@
-void __db_extentsize_proc __P((long, u_int32_t, __db_extentsize_reply *));
-#define __db_flags_proc __db_flags_proc@DB_VERSION_UNIQUE_NAME@
-void __db_flags_proc __P((long, u_int32_t, __db_flags_reply *));
-#define __db_get_proc __db_get_proc@DB_VERSION_UNIQUE_NAME@
-void __db_get_proc __P((long, long, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, __db_get_reply *, int *));
-#define __db_h_ffactor_proc __db_h_ffactor_proc@DB_VERSION_UNIQUE_NAME@
-void __db_h_ffactor_proc __P((long, u_int32_t, __db_h_ffactor_reply *));
-#define __db_h_nelem_proc __db_h_nelem_proc@DB_VERSION_UNIQUE_NAME@
-void __db_h_nelem_proc __P((long, u_int32_t, __db_h_nelem_reply *));
-#define __db_key_range_proc __db_key_range_proc@DB_VERSION_UNIQUE_NAME@
-void __db_key_range_proc __P((long, long, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, __db_key_range_reply *));
-#define __db_lorder_proc __db_lorder_proc@DB_VERSION_UNIQUE_NAME@
-void __db_lorder_proc __P((long, u_int32_t, __db_lorder_reply *));
-#define __db_open_proc __db_open_proc@DB_VERSION_UNIQUE_NAME@
-void __db_open_proc __P((long, char *, char *, u_int32_t, u_int32_t, u_int32_t, __db_open_reply *));
-#define __db_pagesize_proc __db_pagesize_proc@DB_VERSION_UNIQUE_NAME@
-void __db_pagesize_proc __P((long, u_int32_t, __db_pagesize_reply *));
-#define __db_pget_proc __db_pget_proc@DB_VERSION_UNIQUE_NAME@
-void __db_pget_proc __P((long, long, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, __db_pget_reply *, int *));
-#define __db_put_proc __db_put_proc@DB_VERSION_UNIQUE_NAME@
-void __db_put_proc __P((long, long, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, __db_put_reply *, int *));
-#define __db_re_delim_proc __db_re_delim_proc@DB_VERSION_UNIQUE_NAME@
-void __db_re_delim_proc __P((long, u_int32_t, __db_re_delim_reply *));
-#define __db_re_len_proc __db_re_len_proc@DB_VERSION_UNIQUE_NAME@
-void __db_re_len_proc __P((long, u_int32_t, __db_re_len_reply *));
-#define __db_re_pad_proc __db_re_pad_proc@DB_VERSION_UNIQUE_NAME@
-void __db_re_pad_proc __P((long, u_int32_t, __db_re_pad_reply *));
-#define __db_remove_proc __db_remove_proc@DB_VERSION_UNIQUE_NAME@
-void __db_remove_proc __P((long, char *, char *, u_int32_t, __db_remove_reply *));
-#define __db_rename_proc __db_rename_proc@DB_VERSION_UNIQUE_NAME@
-void __db_rename_proc __P((long, char *, char *, char *, u_int32_t, __db_rename_reply *));
-#define __db_stat_proc __db_stat_proc@DB_VERSION_UNIQUE_NAME@
-void __db_stat_proc __P((long, u_int32_t, __db_stat_reply *, int *));
-#define __db_sync_proc __db_sync_proc@DB_VERSION_UNIQUE_NAME@
-void __db_sync_proc __P((long, u_int32_t, __db_sync_reply *));
-#define __db_truncate_proc __db_truncate_proc@DB_VERSION_UNIQUE_NAME@
-void __db_truncate_proc __P((long, char *, char *, u_int32_t, __db_truncate_reply *));
-#define __db_cursor_proc __db_cursor_proc@DB_VERSION_UNIQUE_NAME@
-void __db_cursor_proc __P((long, long, u_int32_t, __db_cursor_reply *));
-#define __db_join_proc __db_join_proc@DB_VERSION_UNIQUE_NAME@
-void __db_join_proc __P((long, u_int32_t *, u_int32_t, u_int32_t, __db_join_reply *));
-#define __dbc_close_proc __dbc_close_proc@DB_VERSION_UNIQUE_NAME@
-void __dbc_close_proc __P((long, __dbc_close_reply *));
-#define __dbc_count_proc __dbc_count_proc@DB_VERSION_UNIQUE_NAME@
-void __dbc_count_proc __P((long, u_int32_t, __dbc_count_reply *));
-#define __dbc_del_proc __dbc_del_proc@DB_VERSION_UNIQUE_NAME@
-void __dbc_del_proc __P((long, u_int32_t, __dbc_del_reply *));
-#define __dbc_dup_proc __dbc_dup_proc@DB_VERSION_UNIQUE_NAME@
-void __dbc_dup_proc __P((long, u_int32_t, __dbc_dup_reply *));
-#define __dbc_get_proc __dbc_get_proc@DB_VERSION_UNIQUE_NAME@
-void __dbc_get_proc __P((long, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, __dbc_get_reply *, int *));
-#define __dbc_pget_proc __dbc_pget_proc@DB_VERSION_UNIQUE_NAME@
-void __dbc_pget_proc __P((long, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, __dbc_pget_reply *, int *));
-#define __dbc_put_proc __dbc_put_proc@DB_VERSION_UNIQUE_NAME@
-void __dbc_put_proc __P((long, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, __dbc_put_reply *, int *));
-#define __dbsrv_settimeout __dbsrv_settimeout@DB_VERSION_UNIQUE_NAME@
-void __dbsrv_settimeout __P((ct_entry *, u_int32_t));
-#define __dbsrv_timeout __dbsrv_timeout@DB_VERSION_UNIQUE_NAME@
-void __dbsrv_timeout __P((int));
-#define __dbclear_ctp __dbclear_ctp@DB_VERSION_UNIQUE_NAME@
-void __dbclear_ctp __P((ct_entry *));
-#define __dbdel_ctp __dbdel_ctp@DB_VERSION_UNIQUE_NAME@
-void __dbdel_ctp __P((ct_entry *));
-#define new_ct_ent new_ct_ent@DB_VERSION_UNIQUE_NAME@
-ct_entry *new_ct_ent __P((int *));
-#define get_tableent get_tableent@DB_VERSION_UNIQUE_NAME@
-ct_entry *get_tableent __P((long));
-#define __dbsrv_active __dbsrv_active@DB_VERSION_UNIQUE_NAME@
-void __dbsrv_active __P((ct_entry *));
-#define __dbc_close_int __dbc_close_int@DB_VERSION_UNIQUE_NAME@
-int __dbc_close_int __P((ct_entry *));
-#define __dbenv_close_int __dbenv_close_int@DB_VERSION_UNIQUE_NAME@
-int __dbenv_close_int __P((long, int));
-#define get_home get_home@DB_VERSION_UNIQUE_NAME@
-char *get_home __P((char *));
-__env_cachesize_reply *__db_env_cachesize_3003 __P((__env_cachesize_msg *));
-__env_close_reply *__db_env_close_3003 __P((__env_close_msg *));
-__env_create_reply *__db_env_create_3003 __P((__env_create_msg *));
-__env_flags_reply *__db_env_flags_3003 __P((__env_flags_msg *));
-__env_open_reply *__db_env_open_3003 __P((__env_open_msg *));
-__env_remove_reply *__db_env_remove_3003 __P((__env_remove_msg *));
-__txn_abort_reply *__db_txn_abort_3003 __P((__txn_abort_msg *));
-__txn_begin_reply *__db_txn_begin_3003 __P((__txn_begin_msg *));
-__txn_commit_reply *__db_txn_commit_3003 __P((__txn_commit_msg *));
-__txn_prepare_reply *__db_txn_prepare_3003 __P((__txn_prepare_msg *));
-__txn_recover_reply *__db_txn_recover_3003 __P((__txn_recover_msg *));
-__db_associate_reply *__db_db_associate_3003 __P((__db_associate_msg *));
-__db_bt_maxkey_reply *__db_db_bt_maxkey_3003 __P((__db_bt_maxkey_msg *));
-__db_bt_minkey_reply *__db_db_bt_minkey_3003 __P((__db_bt_minkey_msg *));
-__db_close_reply *__db_db_close_3003 __P((__db_close_msg *));
-__db_create_reply *__db_db_create_3003 __P((__db_create_msg *));
-__db_del_reply *__db_db_del_3003 __P((__db_del_msg *));
-__db_extentsize_reply *__db_db_extentsize_3003 __P((__db_extentsize_msg *));
-__db_flags_reply *__db_db_flags_3003 __P((__db_flags_msg *));
-__db_get_reply *__db_db_get_3003 __P((__db_get_msg *));
-__db_h_ffactor_reply *__db_db_h_ffactor_3003 __P((__db_h_ffactor_msg *));
-__db_h_nelem_reply *__db_db_h_nelem_3003 __P((__db_h_nelem_msg *));
-__db_key_range_reply *__db_db_key_range_3003 __P((__db_key_range_msg *));
-__db_lorder_reply *__db_db_lorder_3003 __P((__db_lorder_msg *));
-__db_open_reply *__db_db_open_3003 __P((__db_open_msg *));
-__db_pagesize_reply *__db_db_pagesize_3003 __P((__db_pagesize_msg *));
-__db_pget_reply *__db_db_pget_3003 __P((__db_pget_msg *));
-__db_put_reply *__db_db_put_3003 __P((__db_put_msg *));
-__db_re_delim_reply *__db_db_re_delim_3003 __P((__db_re_delim_msg *));
-__db_re_len_reply *__db_db_re_len_3003 __P((__db_re_len_msg *));
-__db_re_pad_reply *__db_db_re_pad_3003 __P((__db_re_pad_msg *));
-__db_remove_reply *__db_db_remove_3003 __P((__db_remove_msg *));
-__db_rename_reply *__db_db_rename_3003 __P((__db_rename_msg *));
-__db_stat_reply *__db_db_stat_3003 __P((__db_stat_msg *));
-__db_sync_reply *__db_db_sync_3003 __P((__db_sync_msg *));
-__db_truncate_reply *__db_db_truncate_3003 __P((__db_truncate_msg *));
-__db_cursor_reply *__db_db_cursor_3003 __P((__db_cursor_msg *));
-__db_join_reply *__db_db_join_3003 __P((__db_join_msg *));
-__dbc_close_reply *__db_dbc_close_3003 __P((__dbc_close_msg *));
-__dbc_count_reply *__db_dbc_count_3003 __P((__dbc_count_msg *));
-__dbc_del_reply *__db_dbc_del_3003 __P((__dbc_del_msg *));
-__dbc_dup_reply *__db_dbc_dup_3003 __P((__dbc_dup_msg *));
-__dbc_get_reply *__db_dbc_get_3003 __P((__dbc_get_msg *));
-__dbc_pget_reply *__db_dbc_pget_3003 __P((__dbc_pget_msg *));
-__dbc_put_reply *__db_dbc_put_3003 __P((__dbc_put_msg *));
-#if defined(__cplusplus)
-}
-#endif
-#endif /* _rpc_server_ext_h_ */
diff --git a/db/include_auto/tcl_ext.h b/db/include_auto/tcl_ext.h
deleted file mode 100644
index 228ecadd0..000000000
--- a/db/include_auto/tcl_ext.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_include. */
-#ifndef _tcl_ext_h_
-#define _tcl_ext_h_
-#if defined(__cplusplus)
-extern "C" {
-#endif
-int bdb_HCommand __P((Tcl_Interp *, int, Tcl_Obj * CONST*));
-#if DB_DBM_HSEARCH != 0
-int bdb_NdbmOpen __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DBM **));
-#endif
-#if DB_DBM_HSEARCH != 0
-int bdb_DbmCommand __P((Tcl_Interp *, int, Tcl_Obj * CONST*, int, DBM *));
-#endif
-int ndbm_Cmd __P((ClientData, Tcl_Interp *, int, Tcl_Obj * CONST*));
-int bdb_RandCommand __P((Tcl_Interp *, int, Tcl_Obj * CONST*));
-int tcl_Mutex __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *, DBTCL_INFO *));
-int db_Cmd __P((ClientData, Tcl_Interp *, int, Tcl_Obj * CONST*));
-int dbc_Cmd __P((ClientData, Tcl_Interp *, int, Tcl_Obj * CONST*));
-int env_Cmd __P((ClientData, Tcl_Interp *, int, Tcl_Obj * CONST*));
-int tcl_EnvRemove __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *, DBTCL_INFO *));
-int tcl_EnvVerbose __P((Tcl_Interp *, DB_ENV *, Tcl_Obj *, Tcl_Obj *));
-int tcl_EnvTest __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
-DBTCL_INFO *_NewInfo __P((Tcl_Interp *, void *, char *, enum INFOTYPE));
-void *_NameToPtr __P((CONST char *));
-DBTCL_INFO *_PtrToInfo __P((CONST void *));
-DBTCL_INFO *_NameToInfo __P((CONST char *));
-void _SetInfoData __P((DBTCL_INFO *, void *));
-void _DeleteInfo __P((DBTCL_INFO *));
-int _SetListElem __P((Tcl_Interp *, Tcl_Obj *, void *, int, void *, int));
-int _SetListElemInt __P((Tcl_Interp *, Tcl_Obj *, void *, int));
-int _SetListRecnoElem __P((Tcl_Interp *, Tcl_Obj *, db_recno_t, u_char *, int));
-int _Set3DBTList __P((Tcl_Interp *, Tcl_Obj *, DBT *, int, DBT *, int, DBT *));
-int _SetMultiList __P((Tcl_Interp *, Tcl_Obj *, DBT *, DBT*, int, int));
-int _GetGlobPrefix __P((char *, char **));
-int _ReturnSetup __P((Tcl_Interp *, int, char *));
-int _ErrorSetup __P((Tcl_Interp *, int, char *));
-void _ErrorFunc __P((CONST char *, char *));
-int _GetLsn __P((Tcl_Interp *, Tcl_Obj *, DB_LSN *));
-void _debug_check __P((void));
-int tcl_LockDetect __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
-int tcl_LockGet __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
-int tcl_LockStat __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
-int tcl_LockVec __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
-int tcl_LogArchive __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
-int tcl_LogCompare __P((Tcl_Interp *, int, Tcl_Obj * CONST*));
-int tcl_LogFile __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
-int tcl_LogFlush __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
-int tcl_LogGet __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
-int tcl_LogPut __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
-int tcl_LogRegister __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
-int tcl_LogStat __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
-int tcl_LogUnregister __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
-void _MpInfoDelete __P((Tcl_Interp *, DBTCL_INFO *));
-int tcl_MpSync __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
-int tcl_MpTrickle __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
-int tcl_Mp __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *, DBTCL_INFO *));
-int tcl_MpStat __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
-void _TxnInfoDelete __P((Tcl_Interp *, DBTCL_INFO *));
-int tcl_TxnCheckpoint __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
-int tcl_Txn __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *, DBTCL_INFO *));
-int tcl_TxnStat __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
-int tcl_TxnRecover __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *, DBTCL_INFO *));
-#if defined(__cplusplus)
-}
-#endif
-#endif /* _tcl_ext_h_ */
diff --git a/db/include_auto/tcl_ext.in b/db/include_auto/tcl_ext.in
deleted file mode 100644
index d3fdfe976..000000000
--- a/db/include_auto/tcl_ext.in
+++ /dev/null
@@ -1,118 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_include. */
-#ifndef _tcl_ext_h_
-#define _tcl_ext_h_
-#if defined(__cplusplus)
-extern "C" {
-#endif
-#define bdb_HCommand bdb_HCommand@DB_VERSION_UNIQUE_NAME@
-int bdb_HCommand __P((Tcl_Interp *, int, Tcl_Obj * CONST*));
-#if DB_DBM_HSEARCH != 0
-#define bdb_NdbmOpen bdb_NdbmOpen@DB_VERSION_UNIQUE_NAME@
-int bdb_NdbmOpen __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DBM **));
-#endif
-#if DB_DBM_HSEARCH != 0
-#define bdb_DbmCommand bdb_DbmCommand@DB_VERSION_UNIQUE_NAME@
-int bdb_DbmCommand __P((Tcl_Interp *, int, Tcl_Obj * CONST*, int, DBM *));
-#endif
-#define ndbm_Cmd ndbm_Cmd@DB_VERSION_UNIQUE_NAME@
-int ndbm_Cmd __P((ClientData, Tcl_Interp *, int, Tcl_Obj * CONST*));
-#define bdb_RandCommand bdb_RandCommand@DB_VERSION_UNIQUE_NAME@
-int bdb_RandCommand __P((Tcl_Interp *, int, Tcl_Obj * CONST*));
-#define tcl_Mutex tcl_Mutex@DB_VERSION_UNIQUE_NAME@
-int tcl_Mutex __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *, DBTCL_INFO *));
-#define db_Cmd db_Cmd@DB_VERSION_UNIQUE_NAME@
-int db_Cmd __P((ClientData, Tcl_Interp *, int, Tcl_Obj * CONST*));
-#define dbc_Cmd dbc_Cmd@DB_VERSION_UNIQUE_NAME@
-int dbc_Cmd __P((ClientData, Tcl_Interp *, int, Tcl_Obj * CONST*));
-#define env_Cmd env_Cmd@DB_VERSION_UNIQUE_NAME@
-int env_Cmd __P((ClientData, Tcl_Interp *, int, Tcl_Obj * CONST*));
-#define tcl_EnvRemove tcl_EnvRemove@DB_VERSION_UNIQUE_NAME@
-int tcl_EnvRemove __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *, DBTCL_INFO *));
-#define tcl_EnvVerbose tcl_EnvVerbose@DB_VERSION_UNIQUE_NAME@
-int tcl_EnvVerbose __P((Tcl_Interp *, DB_ENV *, Tcl_Obj *, Tcl_Obj *));
-#define tcl_EnvTest tcl_EnvTest@DB_VERSION_UNIQUE_NAME@
-int tcl_EnvTest __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
-#define _NewInfo _NewInfo@DB_VERSION_UNIQUE_NAME@
-DBTCL_INFO *_NewInfo __P((Tcl_Interp *, void *, char *, enum INFOTYPE));
-#define _NameToPtr _NameToPtr@DB_VERSION_UNIQUE_NAME@
-void *_NameToPtr __P((CONST char *));
-#define _PtrToInfo _PtrToInfo@DB_VERSION_UNIQUE_NAME@
-DBTCL_INFO *_PtrToInfo __P((CONST void *));
-#define _NameToInfo _NameToInfo@DB_VERSION_UNIQUE_NAME@
-DBTCL_INFO *_NameToInfo __P((CONST char *));
-#define _SetInfoData _SetInfoData@DB_VERSION_UNIQUE_NAME@
-void _SetInfoData __P((DBTCL_INFO *, void *));
-#define _DeleteInfo _DeleteInfo@DB_VERSION_UNIQUE_NAME@
-void _DeleteInfo __P((DBTCL_INFO *));
-#define _SetListElem _SetListElem@DB_VERSION_UNIQUE_NAME@
-int _SetListElem __P((Tcl_Interp *, Tcl_Obj *, void *, int, void *, int));
-#define _SetListElemInt _SetListElemInt@DB_VERSION_UNIQUE_NAME@
-int _SetListElemInt __P((Tcl_Interp *, Tcl_Obj *, void *, int));
-#define _SetListRecnoElem _SetListRecnoElem@DB_VERSION_UNIQUE_NAME@
-int _SetListRecnoElem __P((Tcl_Interp *, Tcl_Obj *, db_recno_t, u_char *, int));
-#define _Set3DBTList _Set3DBTList@DB_VERSION_UNIQUE_NAME@
-int _Set3DBTList __P((Tcl_Interp *, Tcl_Obj *, DBT *, int, DBT *, int, DBT *));
-#define _SetMultiList _SetMultiList@DB_VERSION_UNIQUE_NAME@
-int _SetMultiList __P((Tcl_Interp *, Tcl_Obj *, DBT *, DBT*, int, int));
-#define _GetGlobPrefix _GetGlobPrefix@DB_VERSION_UNIQUE_NAME@
-int _GetGlobPrefix __P((char *, char **));
-#define _ReturnSetup _ReturnSetup@DB_VERSION_UNIQUE_NAME@
-int _ReturnSetup __P((Tcl_Interp *, int, char *));
-#define _ErrorSetup _ErrorSetup@DB_VERSION_UNIQUE_NAME@
-int _ErrorSetup __P((Tcl_Interp *, int, char *));
-#define _ErrorFunc _ErrorFunc@DB_VERSION_UNIQUE_NAME@
-void _ErrorFunc __P((CONST char *, char *));
-#define _GetLsn _GetLsn@DB_VERSION_UNIQUE_NAME@
-int _GetLsn __P((Tcl_Interp *, Tcl_Obj *, DB_LSN *));
-#define _debug_check _debug_check@DB_VERSION_UNIQUE_NAME@
-void _debug_check __P((void));
-#define tcl_LockDetect tcl_LockDetect@DB_VERSION_UNIQUE_NAME@
-int tcl_LockDetect __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
-#define tcl_LockGet tcl_LockGet@DB_VERSION_UNIQUE_NAME@
-int tcl_LockGet __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
-#define tcl_LockStat tcl_LockStat@DB_VERSION_UNIQUE_NAME@
-int tcl_LockStat __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
-#define tcl_LockVec tcl_LockVec@DB_VERSION_UNIQUE_NAME@
-int tcl_LockVec __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
-#define tcl_LogArchive tcl_LogArchive@DB_VERSION_UNIQUE_NAME@
-int tcl_LogArchive __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
-#define tcl_LogCompare tcl_LogCompare@DB_VERSION_UNIQUE_NAME@
-int tcl_LogCompare __P((Tcl_Interp *, int, Tcl_Obj * CONST*));
-#define tcl_LogFile tcl_LogFile@DB_VERSION_UNIQUE_NAME@
-int tcl_LogFile __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
-#define tcl_LogFlush tcl_LogFlush@DB_VERSION_UNIQUE_NAME@
-int tcl_LogFlush __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
-#define tcl_LogGet tcl_LogGet@DB_VERSION_UNIQUE_NAME@
-int tcl_LogGet __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
-#define tcl_LogPut tcl_LogPut@DB_VERSION_UNIQUE_NAME@
-int tcl_LogPut __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
-#define tcl_LogRegister tcl_LogRegister@DB_VERSION_UNIQUE_NAME@
-int tcl_LogRegister __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
-#define tcl_LogStat tcl_LogStat@DB_VERSION_UNIQUE_NAME@
-int tcl_LogStat __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
-#define tcl_LogUnregister tcl_LogUnregister@DB_VERSION_UNIQUE_NAME@
-int tcl_LogUnregister __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
-#define _MpInfoDelete _MpInfoDelete@DB_VERSION_UNIQUE_NAME@
-void _MpInfoDelete __P((Tcl_Interp *, DBTCL_INFO *));
-#define tcl_MpSync tcl_MpSync@DB_VERSION_UNIQUE_NAME@
-int tcl_MpSync __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
-#define tcl_MpTrickle tcl_MpTrickle@DB_VERSION_UNIQUE_NAME@
-int tcl_MpTrickle __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
-#define tcl_Mp tcl_Mp@DB_VERSION_UNIQUE_NAME@
-int tcl_Mp __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *, DBTCL_INFO *));
-#define tcl_MpStat tcl_MpStat@DB_VERSION_UNIQUE_NAME@
-int tcl_MpStat __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
-#define _TxnInfoDelete _TxnInfoDelete@DB_VERSION_UNIQUE_NAME@
-void _TxnInfoDelete __P((Tcl_Interp *, DBTCL_INFO *));
-#define tcl_TxnCheckpoint tcl_TxnCheckpoint@DB_VERSION_UNIQUE_NAME@
-int tcl_TxnCheckpoint __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
-#define tcl_Txn tcl_Txn@DB_VERSION_UNIQUE_NAME@
-int tcl_Txn __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *, DBTCL_INFO *));
-#define tcl_TxnStat tcl_TxnStat@DB_VERSION_UNIQUE_NAME@
-int tcl_TxnStat __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
-#define tcl_TxnRecover tcl_TxnRecover@DB_VERSION_UNIQUE_NAME@
-int tcl_TxnRecover __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *, DBTCL_INFO *));
-#if defined(__cplusplus)
-}
-#endif
-#endif /* _tcl_ext_h_ */
diff --git a/db/include_auto/txn_auto.h b/db/include_auto/txn_auto.h
deleted file mode 100644
index 9c13fa505..000000000
--- a/db/include_auto/txn_auto.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/* Do not edit: automatically built by gen_rec.awk. */
-
-#ifndef txn_AUTO_H
-#define txn_AUTO_H
-#define DB_txn_old_regop 6
-typedef struct _txn_old_regop_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- u_int32_t opcode;
-} __txn_old_regop_args;
-
-#define DB_txn_regop 10
-typedef struct _txn_regop_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- u_int32_t opcode;
- int32_t timestamp;
-} __txn_regop_args;
-
-#define DB_txn_old_ckp 7
-typedef struct _txn_old_ckp_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- DB_LSN ckp_lsn;
- DB_LSN last_ckp;
-} __txn_old_ckp_args;
-
-#define DB_txn_ckp 11
-typedef struct _txn_ckp_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- DB_LSN ckp_lsn;
- DB_LSN last_ckp;
- int32_t timestamp;
-} __txn_ckp_args;
-
-#define DB_txn_xa_regop_old 8
-typedef struct _txn_xa_regop_old_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- u_int32_t opcode;
- DBT xid;
- int32_t formatID;
- u_int32_t gtrid;
- u_int32_t bqual;
-} __txn_xa_regop_old_args;
-
-#define DB_txn_xa_regop 13
-typedef struct _txn_xa_regop_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- u_int32_t opcode;
- DBT xid;
- int32_t formatID;
- u_int32_t gtrid;
- u_int32_t bqual;
- DB_LSN begin_lsn;
-} __txn_xa_regop_args;
-
-#define DB_txn_child_old 9
-typedef struct _txn_child_old_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- u_int32_t opcode;
- u_int32_t parent;
-} __txn_child_old_args;
-
-#define DB_txn_child 12
-typedef struct _txn_child_args {
- u_int32_t type;
- DB_TXN *txnid;
- DB_LSN prev_lsn;
- u_int32_t child;
- DB_LSN c_lsn;
-} __txn_child_args;
-
-#endif
diff --git a/db/include_auto/txn_ext.h b/db/include_auto/txn_ext.h
deleted file mode 100644
index 7ddee10fd..000000000
--- a/db/include_auto/txn_ext.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_include. */
-#ifndef _txn_ext_h_
-#define _txn_ext_h_
-#if defined(__cplusplus)
-extern "C" {
-#endif
-int __txn_xa_begin __P((DB_ENV *, DB_TXN *));
-int __txn_compensate_begin __P((DB_ENV *, DB_TXN **txnp));
-int __txn_activekids __P((DB_ENV *, u_int32_t, DB_TXN *));
-void __txn_force_abort __P((u_int8_t *));
-int __txn_old_regop_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __txn_old_regop_read __P((DB_ENV *, void *, __txn_old_regop_args **));
-int __txn_regop_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, u_int32_t, int32_t));
-int __txn_regop_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __txn_regop_read __P((DB_ENV *, void *, __txn_regop_args **));
-int __txn_old_ckp_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __txn_old_ckp_read __P((DB_ENV *, void *, __txn_old_ckp_args **));
-int __txn_ckp_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, DB_LSN *, DB_LSN *, int32_t));
-int __txn_ckp_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __txn_ckp_read __P((DB_ENV *, void *, __txn_ckp_args **));
-int __txn_xa_regop_old_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __txn_xa_regop_old_read __P((DB_ENV *, void *, __txn_xa_regop_old_args **));
-int __txn_xa_regop_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, u_int32_t, const DBT *, int32_t, u_int32_t, u_int32_t, DB_LSN *));
-int __txn_xa_regop_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __txn_xa_regop_read __P((DB_ENV *, void *, __txn_xa_regop_args **));
-int __txn_child_old_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __txn_child_old_read __P((DB_ENV *, void *, __txn_child_old_args **));
-int __txn_child_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, u_int32_t, DB_LSN *));
-int __txn_child_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __txn_child_read __P((DB_ENV *, void *, __txn_child_args **));
-int __txn_init_print __P((DB_ENV *));
-int __txn_init_recover __P((DB_ENV *));
-int __txn_regop_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __txn_xa_regop_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __txn_ckp_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-int __txn_child_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-void __txn_continue __P((DB_ENV *, DB_TXN *, TXN_DETAIL *, size_t));
-int __txn_map_gid __P((DB_ENV *, u_int8_t *, TXN_DETAIL **, size_t *));
-int __txn_get_prepared __P((DB_ENV *, XID *, DB_PREPLIST *, long, long *, u_int32_t));
-void __txn_dbenv_create __P((DB_ENV *));
-int __txn_open __P((DB_ENV *));
-int __txn_close __P((DB_ENV *));
-void __txn_region_destroy __P((DB_ENV *, REGINFO *));
-#if defined(__cplusplus)
-}
-#endif
-#endif /* _txn_ext_h_ */
diff --git a/db/include_auto/txn_ext.in b/db/include_auto/txn_ext.in
deleted file mode 100644
index ed3cf80b8..000000000
--- a/db/include_auto/txn_ext.in
+++ /dev/null
@@ -1,84 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_include. */
-#ifndef _txn_ext_h_
-#define _txn_ext_h_
-#if defined(__cplusplus)
-extern "C" {
-#endif
-#define __txn_xa_begin __txn_xa_begin@DB_VERSION_UNIQUE_NAME@
-int __txn_xa_begin __P((DB_ENV *, DB_TXN *));
-#define __txn_compensate_begin __txn_compensate_begin@DB_VERSION_UNIQUE_NAME@
-int __txn_compensate_begin __P((DB_ENV *, DB_TXN **txnp));
-#define __txn_activekids __txn_activekids@DB_VERSION_UNIQUE_NAME@
-int __txn_activekids __P((DB_ENV *, u_int32_t, DB_TXN *));
-#define __txn_force_abort __txn_force_abort@DB_VERSION_UNIQUE_NAME@
-void __txn_force_abort __P((u_int8_t *));
-#define __txn_old_regop_print __txn_old_regop_print@DB_VERSION_UNIQUE_NAME@
-int __txn_old_regop_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __txn_old_regop_read __txn_old_regop_read@DB_VERSION_UNIQUE_NAME@
-int __txn_old_regop_read __P((DB_ENV *, void *, __txn_old_regop_args **));
-#define __txn_regop_log __txn_regop_log@DB_VERSION_UNIQUE_NAME@
-int __txn_regop_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, u_int32_t, int32_t));
-#define __txn_regop_print __txn_regop_print@DB_VERSION_UNIQUE_NAME@
-int __txn_regop_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __txn_regop_read __txn_regop_read@DB_VERSION_UNIQUE_NAME@
-int __txn_regop_read __P((DB_ENV *, void *, __txn_regop_args **));
-#define __txn_old_ckp_print __txn_old_ckp_print@DB_VERSION_UNIQUE_NAME@
-int __txn_old_ckp_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __txn_old_ckp_read __txn_old_ckp_read@DB_VERSION_UNIQUE_NAME@
-int __txn_old_ckp_read __P((DB_ENV *, void *, __txn_old_ckp_args **));
-#define __txn_ckp_log __txn_ckp_log@DB_VERSION_UNIQUE_NAME@
-int __txn_ckp_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, DB_LSN *, DB_LSN *, int32_t));
-#define __txn_ckp_print __txn_ckp_print@DB_VERSION_UNIQUE_NAME@
-int __txn_ckp_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __txn_ckp_read __txn_ckp_read@DB_VERSION_UNIQUE_NAME@
-int __txn_ckp_read __P((DB_ENV *, void *, __txn_ckp_args **));
-#define __txn_xa_regop_old_print __txn_xa_regop_old_print@DB_VERSION_UNIQUE_NAME@
-int __txn_xa_regop_old_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __txn_xa_regop_old_read __txn_xa_regop_old_read@DB_VERSION_UNIQUE_NAME@
-int __txn_xa_regop_old_read __P((DB_ENV *, void *, __txn_xa_regop_old_args **));
-#define __txn_xa_regop_log __txn_xa_regop_log@DB_VERSION_UNIQUE_NAME@
-int __txn_xa_regop_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, u_int32_t, const DBT *, int32_t, u_int32_t, u_int32_t, DB_LSN *));
-#define __txn_xa_regop_print __txn_xa_regop_print@DB_VERSION_UNIQUE_NAME@
-int __txn_xa_regop_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __txn_xa_regop_read __txn_xa_regop_read@DB_VERSION_UNIQUE_NAME@
-int __txn_xa_regop_read __P((DB_ENV *, void *, __txn_xa_regop_args **));
-#define __txn_child_old_print __txn_child_old_print@DB_VERSION_UNIQUE_NAME@
-int __txn_child_old_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __txn_child_old_read __txn_child_old_read@DB_VERSION_UNIQUE_NAME@
-int __txn_child_old_read __P((DB_ENV *, void *, __txn_child_old_args **));
-#define __txn_child_log __txn_child_log@DB_VERSION_UNIQUE_NAME@
-int __txn_child_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, u_int32_t, DB_LSN *));
-#define __txn_child_print __txn_child_print@DB_VERSION_UNIQUE_NAME@
-int __txn_child_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __txn_child_read __txn_child_read@DB_VERSION_UNIQUE_NAME@
-int __txn_child_read __P((DB_ENV *, void *, __txn_child_args **));
-#define __txn_init_print __txn_init_print@DB_VERSION_UNIQUE_NAME@
-int __txn_init_print __P((DB_ENV *));
-#define __txn_init_recover __txn_init_recover@DB_VERSION_UNIQUE_NAME@
-int __txn_init_recover __P((DB_ENV *));
-#define __txn_regop_recover __txn_regop_recover@DB_VERSION_UNIQUE_NAME@
-int __txn_regop_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __txn_xa_regop_recover __txn_xa_regop_recover@DB_VERSION_UNIQUE_NAME@
-int __txn_xa_regop_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __txn_ckp_recover __txn_ckp_recover@DB_VERSION_UNIQUE_NAME@
-int __txn_ckp_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __txn_child_recover __txn_child_recover@DB_VERSION_UNIQUE_NAME@
-int __txn_child_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
-#define __txn_continue __txn_continue@DB_VERSION_UNIQUE_NAME@
-void __txn_continue __P((DB_ENV *, DB_TXN *, TXN_DETAIL *, size_t));
-#define __txn_map_gid __txn_map_gid@DB_VERSION_UNIQUE_NAME@
-int __txn_map_gid __P((DB_ENV *, u_int8_t *, TXN_DETAIL **, size_t *));
-#define __txn_get_prepared __txn_get_prepared@DB_VERSION_UNIQUE_NAME@
-int __txn_get_prepared __P((DB_ENV *, XID *, DB_PREPLIST *, long, long *, u_int32_t));
-#define __txn_dbenv_create __txn_dbenv_create@DB_VERSION_UNIQUE_NAME@
-void __txn_dbenv_create __P((DB_ENV *));
-#define __txn_open __txn_open@DB_VERSION_UNIQUE_NAME@
-int __txn_open __P((DB_ENV *));
-#define __txn_close __txn_close@DB_VERSION_UNIQUE_NAME@
-int __txn_close __P((DB_ENV *));
-#define __txn_region_destroy __txn_region_destroy@DB_VERSION_UNIQUE_NAME@
-void __txn_region_destroy __P((DB_ENV *, REGINFO *));
-#if defined(__cplusplus)
-}
-#endif
-#endif /* _txn_ext_h_ */
diff --git a/db/include_auto/xa_ext.h b/db/include_auto/xa_ext.h
deleted file mode 100644
index cc16ba183..000000000
--- a/db/include_auto/xa_ext.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_include. */
-#ifndef _xa_ext_h_
-#define _xa_ext_h_
-#if defined(__cplusplus)
-extern "C" {
-#endif
-int __db_xa_create __P((DB *));
-int __db_rmid_to_env __P((int rmid, DB_ENV **envp));
-int __db_xid_to_txn __P((DB_ENV *, XID *, size_t *));
-int __db_map_rmid __P((int, DB_ENV *));
-int __db_unmap_rmid __P((int));
-int __db_map_xid __P((DB_ENV *, XID *, size_t));
-void __db_unmap_xid __P((DB_ENV *, XID *, size_t));
-#if defined(__cplusplus)
-}
-#endif
-#endif /* _xa_ext_h_ */
diff --git a/db/include_auto/xa_ext.in b/db/include_auto/xa_ext.in
deleted file mode 100644
index 873046dcb..000000000
--- a/db/include_auto/xa_ext.in
+++ /dev/null
@@ -1,24 +0,0 @@
-/* DO NOT EDIT: automatically built by dist/s_include. */
-#ifndef _xa_ext_h_
-#define _xa_ext_h_
-#if defined(__cplusplus)
-extern "C" {
-#endif
-#define __db_xa_create __db_xa_create@DB_VERSION_UNIQUE_NAME@
-int __db_xa_create __P((DB *));
-#define __db_rmid_to_env __db_rmid_to_env@DB_VERSION_UNIQUE_NAME@
-int __db_rmid_to_env __P((int rmid, DB_ENV **envp));
-#define __db_xid_to_txn __db_xid_to_txn@DB_VERSION_UNIQUE_NAME@
-int __db_xid_to_txn __P((DB_ENV *, XID *, size_t *));
-#define __db_map_rmid __db_map_rmid@DB_VERSION_UNIQUE_NAME@
-int __db_map_rmid __P((int, DB_ENV *));
-#define __db_unmap_rmid __db_unmap_rmid@DB_VERSION_UNIQUE_NAME@
-int __db_unmap_rmid __P((int));
-#define __db_map_xid __db_map_xid@DB_VERSION_UNIQUE_NAME@
-int __db_map_xid __P((DB_ENV *, XID *, size_t));
-#define __db_unmap_xid __db_unmap_xid@DB_VERSION_UNIQUE_NAME@
-void __db_unmap_xid __P((DB_ENV *, XID *, size_t));
-#if defined(__cplusplus)
-}
-#endif
-#endif /* _xa_ext_h_ */
diff --git a/db/java/src/com/sleepycat/bind/ByteArrayBinding.java b/db/java/src/com/sleepycat/bind/ByteArrayBinding.java
index 999869f7a..e7a862a2f 100644
--- a/db/java/src/com/sleepycat/bind/ByteArrayBinding.java
+++ b/db/java/src/com/sleepycat/bind/ByteArrayBinding.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: ByteArrayBinding.java,v 12.4 2006/08/31 18:14:05 bostic Exp $
+ * $Id: ByteArrayBinding.java,v 12.6 2007/05/04 00:28:24 mark Exp $
*/
package com.sleepycat.bind;
diff --git a/db/java/src/com/sleepycat/bind/EntityBinding.java b/db/java/src/com/sleepycat/bind/EntityBinding.java
index 1683f59b7..f6d80a864 100644
--- a/db/java/src/com/sleepycat/bind/EntityBinding.java
+++ b/db/java/src/com/sleepycat/bind/EntityBinding.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: EntityBinding.java,v 12.3 2006/08/31 18:14:05 bostic Exp $
+ * $Id: EntityBinding.java,v 12.5 2007/05/04 00:28:24 mark Exp $
*/
package com.sleepycat.bind;
diff --git a/db/java/src/com/sleepycat/bind/EntryBinding.java b/db/java/src/com/sleepycat/bind/EntryBinding.java
index bae612716..04e82b30e 100644
--- a/db/java/src/com/sleepycat/bind/EntryBinding.java
+++ b/db/java/src/com/sleepycat/bind/EntryBinding.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: EntryBinding.java,v 12.3 2006/08/31 18:14:05 bostic Exp $
+ * $Id: EntryBinding.java,v 12.5 2007/05/04 00:28:24 mark Exp $
*/
package com.sleepycat.bind;
diff --git a/db/java/src/com/sleepycat/bind/RecordNumberBinding.java b/db/java/src/com/sleepycat/bind/RecordNumberBinding.java
index 08eb87c1d..5dec60d32 100644
--- a/db/java/src/com/sleepycat/bind/RecordNumberBinding.java
+++ b/db/java/src/com/sleepycat/bind/RecordNumberBinding.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: RecordNumberBinding.java,v 12.3 2006/08/31 18:14:05 bostic Exp $
+ * $Id: RecordNumberBinding.java,v 12.5 2007/05/04 00:28:24 mark Exp $
*/
package com.sleepycat.bind;
diff --git a/db/java/src/com/sleepycat/bind/serial/ClassCatalog.java b/db/java/src/com/sleepycat/bind/serial/ClassCatalog.java
index 266b2c5cf..25cb596b9 100644
--- a/db/java/src/com/sleepycat/bind/serial/ClassCatalog.java
+++ b/db/java/src/com/sleepycat/bind/serial/ClassCatalog.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: ClassCatalog.java,v 12.3 2006/08/31 18:14:05 bostic Exp $
+ * $Id: ClassCatalog.java,v 12.5 2007/05/04 00:28:24 mark Exp $
*/
package com.sleepycat.bind.serial;
diff --git a/db/java/src/com/sleepycat/bind/serial/SerialBase.java b/db/java/src/com/sleepycat/bind/serial/SerialBase.java
index b33f15ca2..17b764136 100644
--- a/db/java/src/com/sleepycat/bind/serial/SerialBase.java
+++ b/db/java/src/com/sleepycat/bind/serial/SerialBase.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: SerialBase.java,v 12.3 2006/08/31 18:14:05 bostic Exp $
+ * $Id: SerialBase.java,v 12.5 2007/05/04 00:28:24 mark Exp $
*/
package com.sleepycat.bind.serial;
diff --git a/db/java/src/com/sleepycat/bind/serial/SerialBinding.java b/db/java/src/com/sleepycat/bind/serial/SerialBinding.java
index 084cc8d99..4fd79456f 100644
--- a/db/java/src/com/sleepycat/bind/serial/SerialBinding.java
+++ b/db/java/src/com/sleepycat/bind/serial/SerialBinding.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: SerialBinding.java,v 12.5 2006/08/31 18:14:05 bostic Exp $
+ * $Id: SerialBinding.java,v 12.7 2007/05/04 00:28:24 mark Exp $
*/
package com.sleepycat.bind.serial;
@@ -93,7 +92,7 @@ public class SerialBinding extends SerialBase implements EntryBinding {
*/
public ClassLoader getClassLoader() {
- return null;
+ return Thread.currentThread().getContextClassLoader();
}
/**
diff --git a/db/java/src/com/sleepycat/bind/serial/SerialInput.java b/db/java/src/com/sleepycat/bind/serial/SerialInput.java
index 16e3e47af..b3cc74216 100644
--- a/db/java/src/com/sleepycat/bind/serial/SerialInput.java
+++ b/db/java/src/com/sleepycat/bind/serial/SerialInput.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: SerialInput.java,v 12.4 2006/08/31 18:14:05 bostic Exp $
+ * $Id: SerialInput.java,v 12.6 2007/05/04 00:28:24 mark Exp $
*/
package com.sleepycat.bind.serial;
diff --git a/db/java/src/com/sleepycat/bind/serial/SerialOutput.java b/db/java/src/com/sleepycat/bind/serial/SerialOutput.java
index b88183142..2f073e687 100644
--- a/db/java/src/com/sleepycat/bind/serial/SerialOutput.java
+++ b/db/java/src/com/sleepycat/bind/serial/SerialOutput.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: SerialOutput.java,v 12.5 2006/09/08 20:32:11 bostic Exp $
+ * $Id: SerialOutput.java,v 12.7 2007/05/04 00:28:24 mark Exp $
*/
package com.sleepycat.bind.serial;
@@ -40,7 +39,7 @@ import com.sleepycat.util.RuntimeExceptionWrapper;
*/
public class SerialOutput extends ObjectOutputStream {
- /*
+ /*
* Serialization version constants. Instead of hardcoding these we get them
* by creating a SerialOutput, which itself guarantees that we'll always
* use a PROTOCOL_VERSION_2 header.
diff --git a/db/java/src/com/sleepycat/bind/serial/SerialSerialBinding.java b/db/java/src/com/sleepycat/bind/serial/SerialSerialBinding.java
index e92f6312b..4872cae11 100644
--- a/db/java/src/com/sleepycat/bind/serial/SerialSerialBinding.java
+++ b/db/java/src/com/sleepycat/bind/serial/SerialSerialBinding.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: SerialSerialBinding.java,v 12.3 2006/08/31 18:14:05 bostic Exp $
+ * $Id: SerialSerialBinding.java,v 12.5 2007/05/04 00:28:24 mark Exp $
*/
package com.sleepycat.bind.serial;
diff --git a/db/java/src/com/sleepycat/bind/serial/SerialSerialKeyCreator.java b/db/java/src/com/sleepycat/bind/serial/SerialSerialKeyCreator.java
index ae3fe3181..d4c089f55 100644
--- a/db/java/src/com/sleepycat/bind/serial/SerialSerialKeyCreator.java
+++ b/db/java/src/com/sleepycat/bind/serial/SerialSerialKeyCreator.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: SerialSerialKeyCreator.java,v 12.3 2006/08/31 18:14:05 bostic Exp $
+ * $Id: SerialSerialKeyCreator.java,v 12.5 2007/05/04 00:28:24 mark Exp $
*/
package com.sleepycat.bind.serial;
diff --git a/db/java/src/com/sleepycat/bind/serial/StoredClassCatalog.java b/db/java/src/com/sleepycat/bind/serial/StoredClassCatalog.java
index 9a9c11fd2..051eb71cf 100644
--- a/db/java/src/com/sleepycat/bind/serial/StoredClassCatalog.java
+++ b/db/java/src/com/sleepycat/bind/serial/StoredClassCatalog.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: StoredClassCatalog.java,v 12.4 2006/08/31 18:14:05 bostic Exp $
+ * $Id: StoredClassCatalog.java,v 12.6 2007/05/04 00:28:24 mark Exp $
*/
package com.sleepycat.bind.serial;
diff --git a/db/java/src/com/sleepycat/bind/serial/TupleSerialBinding.java b/db/java/src/com/sleepycat/bind/serial/TupleSerialBinding.java
index 6157b9aa7..48cce6229 100644
--- a/db/java/src/com/sleepycat/bind/serial/TupleSerialBinding.java
+++ b/db/java/src/com/sleepycat/bind/serial/TupleSerialBinding.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: TupleSerialBinding.java,v 12.4 2006/08/31 18:14:05 bostic Exp $
+ * $Id: TupleSerialBinding.java,v 12.6 2007/05/04 00:28:24 mark Exp $
*/
package com.sleepycat.bind.serial;
diff --git a/db/java/src/com/sleepycat/bind/serial/TupleSerialKeyCreator.java b/db/java/src/com/sleepycat/bind/serial/TupleSerialKeyCreator.java
index 396c706f4..da00f227e 100644
--- a/db/java/src/com/sleepycat/bind/serial/TupleSerialKeyCreator.java
+++ b/db/java/src/com/sleepycat/bind/serial/TupleSerialKeyCreator.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: TupleSerialKeyCreator.java,v 12.4 2006/08/31 18:14:05 bostic Exp $
+ * $Id: TupleSerialKeyCreator.java,v 12.6 2007/05/04 00:28:24 mark Exp $
*/
package com.sleepycat.bind.serial;
diff --git a/db/java/src/com/sleepycat/bind/serial/TupleSerialMarshalledBinding.java b/db/java/src/com/sleepycat/bind/serial/TupleSerialMarshalledBinding.java
index 7b66786c4..1262fdc12 100644
--- a/db/java/src/com/sleepycat/bind/serial/TupleSerialMarshalledBinding.java
+++ b/db/java/src/com/sleepycat/bind/serial/TupleSerialMarshalledBinding.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: TupleSerialMarshalledBinding.java,v 12.4 2006/09/08 20:32:11 bostic Exp $
+ * $Id: TupleSerialMarshalledBinding.java,v 12.6 2007/05/04 00:28:24 mark Exp $
*/
package com.sleepycat.bind.serial;
@@ -16,7 +15,7 @@ import com.sleepycat.bind.tuple.TupleOutput;
/**
* A concrete <code>TupleSerialBinding</code> that delegates to the
* <code>MarshalledTupleKeyEntity</code> interface of the entity class.
- *
+ *
* <p>The {@link MarshalledTupleKeyEntity} interface must be implemented by the
* entity class to convert between the key/data entry and entity object.</p>
*
diff --git a/db/java/src/com/sleepycat/bind/serial/TupleSerialMarshalledKeyCreator.java b/db/java/src/com/sleepycat/bind/serial/TupleSerialMarshalledKeyCreator.java
index d8d57bf35..9abc18ef0 100644
--- a/db/java/src/com/sleepycat/bind/serial/TupleSerialMarshalledKeyCreator.java
+++ b/db/java/src/com/sleepycat/bind/serial/TupleSerialMarshalledKeyCreator.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: TupleSerialMarshalledKeyCreator.java,v 12.3 2006/08/31 18:14:05 bostic Exp $
+ * $Id: TupleSerialMarshalledKeyCreator.java,v 12.5 2007/05/04 00:28:24 mark Exp $
*/
package com.sleepycat.bind.serial;
diff --git a/db/java/src/com/sleepycat/bind/tuple/BigIntegerBinding.java b/db/java/src/com/sleepycat/bind/tuple/BigIntegerBinding.java
new file mode 100644
index 000000000..e6612702d
--- /dev/null
+++ b/db/java/src/com/sleepycat/bind/tuple/BigIntegerBinding.java
@@ -0,0 +1,71 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
+ *
+ * $Id: BigIntegerBinding.java,v 12.2 2007/05/17 15:15:40 bostic Exp $
+ */
+
+package com.sleepycat.bind.tuple;
+
+import java.math.BigInteger;
+
+import com.sleepycat.db.DatabaseEntry;
+
+/**
+ * A concrete <code>TupleBinding</code> for a <code>BigInteger</code> value.
+ */
+public class BigIntegerBinding extends TupleBinding {
+
+ // javadoc is inherited
+ public Object entryToObject(TupleInput input) {
+
+ return input.readBigInteger();
+ }
+
+ // javadoc is inherited
+ public void objectToEntry(Object object, TupleOutput output) {
+
+ output.writeBigInteger((BigInteger) object);
+ }
+
+ // javadoc is inherited
+ protected TupleOutput getTupleOutput(Object object) {
+
+ return sizedOutput((BigInteger) object);
+ }
+
+ /**
+ * Converts an entry buffer into a <code>BigInteger</code> value.
+ *
+ * @param entry is the source entry buffer.
+ *
+ * @return the resulting value.
+ */
+ public static BigInteger entryToBigInteger(DatabaseEntry entry) {
+
+ return entryToInput(entry).readBigInteger();
+ }
+
+ /**
+ * Converts a <code>BigInteger</code> value into an entry buffer.
+ *
+ * @param val is the source value.
+ *
+ * @param entry is the destination entry buffer.
+ */
+ public static void bigIntegerToEntry(BigInteger val, DatabaseEntry entry) {
+
+ outputToEntry(sizedOutput(val).writeBigInteger(val), entry);
+ }
+
+ /**
+ * Returns a tuple output object of the exact size needed, to avoid
+ * wasting space when a single primitive is output.
+ */
+ private static TupleOutput sizedOutput(BigInteger val) {
+
+ int len = TupleOutput.getBigIntegerByteLength(val);
+ return new TupleOutput(new byte[len]);
+ }
+}
diff --git a/db/java/src/com/sleepycat/bind/tuple/BooleanBinding.java b/db/java/src/com/sleepycat/bind/tuple/BooleanBinding.java
index c21e8e831..bb589da11 100644
--- a/db/java/src/com/sleepycat/bind/tuple/BooleanBinding.java
+++ b/db/java/src/com/sleepycat/bind/tuple/BooleanBinding.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: BooleanBinding.java,v 12.4 2006/08/31 18:14:06 bostic Exp $
+ * $Id: BooleanBinding.java,v 12.6 2007/05/04 00:28:25 mark Exp $
*/
package com.sleepycat.bind.tuple;
diff --git a/db/java/src/com/sleepycat/bind/tuple/ByteBinding.java b/db/java/src/com/sleepycat/bind/tuple/ByteBinding.java
index 9f243aac2..bd177706e 100644
--- a/db/java/src/com/sleepycat/bind/tuple/ByteBinding.java
+++ b/db/java/src/com/sleepycat/bind/tuple/ByteBinding.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: ByteBinding.java,v 12.4 2006/08/31 18:14:06 bostic Exp $
+ * $Id: ByteBinding.java,v 12.6 2007/05/04 00:28:25 mark Exp $
*/
package com.sleepycat.bind.tuple;
diff --git a/db/java/src/com/sleepycat/bind/tuple/CharacterBinding.java b/db/java/src/com/sleepycat/bind/tuple/CharacterBinding.java
index 6db9232e0..f136a8e4f 100644
--- a/db/java/src/com/sleepycat/bind/tuple/CharacterBinding.java
+++ b/db/java/src/com/sleepycat/bind/tuple/CharacterBinding.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: CharacterBinding.java,v 12.4 2006/08/31 18:14:06 bostic Exp $
+ * $Id: CharacterBinding.java,v 12.6 2007/05/04 00:28:25 mark Exp $
*/
package com.sleepycat.bind.tuple;
diff --git a/db/java/src/com/sleepycat/bind/tuple/DoubleBinding.java b/db/java/src/com/sleepycat/bind/tuple/DoubleBinding.java
index e4ca9081f..5e8657132 100644
--- a/db/java/src/com/sleepycat/bind/tuple/DoubleBinding.java
+++ b/db/java/src/com/sleepycat/bind/tuple/DoubleBinding.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: DoubleBinding.java,v 12.5 2006/08/31 18:14:06 bostic Exp $
+ * $Id: DoubleBinding.java,v 12.7 2007/05/04 00:28:25 mark Exp $
*/
package com.sleepycat.bind.tuple;
diff --git a/db/java/src/com/sleepycat/bind/tuple/FloatBinding.java b/db/java/src/com/sleepycat/bind/tuple/FloatBinding.java
index 5d5f0f885..0ca26c383 100644
--- a/db/java/src/com/sleepycat/bind/tuple/FloatBinding.java
+++ b/db/java/src/com/sleepycat/bind/tuple/FloatBinding.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: FloatBinding.java,v 12.5 2006/08/31 18:14:06 bostic Exp $
+ * $Id: FloatBinding.java,v 12.7 2007/05/04 00:28:25 mark Exp $
*/
package com.sleepycat.bind.tuple;
diff --git a/db/java/src/com/sleepycat/bind/tuple/IntegerBinding.java b/db/java/src/com/sleepycat/bind/tuple/IntegerBinding.java
index 2c614cf8d..1122b3df5 100644
--- a/db/java/src/com/sleepycat/bind/tuple/IntegerBinding.java
+++ b/db/java/src/com/sleepycat/bind/tuple/IntegerBinding.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: IntegerBinding.java,v 12.4 2006/08/31 18:14:06 bostic Exp $
+ * $Id: IntegerBinding.java,v 12.6 2007/05/04 00:28:25 mark Exp $
*/
package com.sleepycat.bind.tuple;
diff --git a/db/java/src/com/sleepycat/bind/tuple/LongBinding.java b/db/java/src/com/sleepycat/bind/tuple/LongBinding.java
index 3181d727d..46d3fcb75 100644
--- a/db/java/src/com/sleepycat/bind/tuple/LongBinding.java
+++ b/db/java/src/com/sleepycat/bind/tuple/LongBinding.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: LongBinding.java,v 12.4 2006/08/31 18:14:06 bostic Exp $
+ * $Id: LongBinding.java,v 12.6 2007/05/04 00:28:25 mark Exp $
*/
package com.sleepycat.bind.tuple;
diff --git a/db/java/src/com/sleepycat/bind/tuple/MarshalledTupleEntry.java b/db/java/src/com/sleepycat/bind/tuple/MarshalledTupleEntry.java
index b7e69ed57..0ef092024 100644
--- a/db/java/src/com/sleepycat/bind/tuple/MarshalledTupleEntry.java
+++ b/db/java/src/com/sleepycat/bind/tuple/MarshalledTupleEntry.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: MarshalledTupleEntry.java,v 12.3 2006/08/31 18:14:06 bostic Exp $
+ * $Id: MarshalledTupleEntry.java,v 12.5 2007/05/04 00:28:25 mark Exp $
*/
package com.sleepycat.bind.tuple;
diff --git a/db/java/src/com/sleepycat/bind/tuple/MarshalledTupleKeyEntity.java b/db/java/src/com/sleepycat/bind/tuple/MarshalledTupleKeyEntity.java
index 11fe1485f..3a12bbe76 100644
--- a/db/java/src/com/sleepycat/bind/tuple/MarshalledTupleKeyEntity.java
+++ b/db/java/src/com/sleepycat/bind/tuple/MarshalledTupleKeyEntity.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: MarshalledTupleKeyEntity.java,v 12.3 2006/08/31 18:14:06 bostic Exp $
+ * $Id: MarshalledTupleKeyEntity.java,v 12.5 2007/05/04 00:28:25 mark Exp $
*/
package com.sleepycat.bind.tuple;
diff --git a/db/java/src/com/sleepycat/bind/tuple/ShortBinding.java b/db/java/src/com/sleepycat/bind/tuple/ShortBinding.java
index 27d4bc793..3827bf083 100644
--- a/db/java/src/com/sleepycat/bind/tuple/ShortBinding.java
+++ b/db/java/src/com/sleepycat/bind/tuple/ShortBinding.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: ShortBinding.java,v 12.4 2006/08/31 18:14:06 bostic Exp $
+ * $Id: ShortBinding.java,v 12.6 2007/05/04 00:28:25 mark Exp $
*/
package com.sleepycat.bind.tuple;
diff --git a/db/java/src/com/sleepycat/bind/tuple/SortedDoubleBinding.java b/db/java/src/com/sleepycat/bind/tuple/SortedDoubleBinding.java
index e36293dd2..09d170e34 100644
--- a/db/java/src/com/sleepycat/bind/tuple/SortedDoubleBinding.java
+++ b/db/java/src/com/sleepycat/bind/tuple/SortedDoubleBinding.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: SortedDoubleBinding.java,v 12.2 2006/08/31 18:14:06 bostic Exp $
+ * $Id: SortedDoubleBinding.java,v 12.4 2007/05/04 00:28:25 mark Exp $
*/
package com.sleepycat.bind.tuple;
diff --git a/db/java/src/com/sleepycat/bind/tuple/SortedFloatBinding.java b/db/java/src/com/sleepycat/bind/tuple/SortedFloatBinding.java
index a190a31a4..5c0281847 100644
--- a/db/java/src/com/sleepycat/bind/tuple/SortedFloatBinding.java
+++ b/db/java/src/com/sleepycat/bind/tuple/SortedFloatBinding.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: SortedFloatBinding.java,v 12.2 2006/08/31 18:14:06 bostic Exp $
+ * $Id: SortedFloatBinding.java,v 12.4 2007/05/04 00:28:25 mark Exp $
*/
package com.sleepycat.bind.tuple;
diff --git a/db/java/src/com/sleepycat/bind/tuple/StringBinding.java b/db/java/src/com/sleepycat/bind/tuple/StringBinding.java
index 9674745c9..a78ecba1f 100644
--- a/db/java/src/com/sleepycat/bind/tuple/StringBinding.java
+++ b/db/java/src/com/sleepycat/bind/tuple/StringBinding.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: StringBinding.java,v 12.4 2006/08/31 18:14:06 bostic Exp $
+ * $Id: StringBinding.java,v 12.6 2007/05/04 00:28:25 mark Exp $
*/
package com.sleepycat.bind.tuple;
diff --git a/db/java/src/com/sleepycat/bind/tuple/TupleBase.java b/db/java/src/com/sleepycat/bind/tuple/TupleBase.java
index b63cbc1e0..5b4d88af3 100644
--- a/db/java/src/com/sleepycat/bind/tuple/TupleBase.java
+++ b/db/java/src/com/sleepycat/bind/tuple/TupleBase.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: TupleBase.java,v 12.3 2006/08/31 18:14:06 bostic Exp $
+ * $Id: TupleBase.java,v 12.5 2007/05/04 00:28:25 mark Exp $
*/
package com.sleepycat.bind.tuple;
diff --git a/db/java/src/com/sleepycat/bind/tuple/TupleBinding.java b/db/java/src/com/sleepycat/bind/tuple/TupleBinding.java
index 53fcc15d1..a1ecdd722 100644
--- a/db/java/src/com/sleepycat/bind/tuple/TupleBinding.java
+++ b/db/java/src/com/sleepycat/bind/tuple/TupleBinding.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: TupleBinding.java,v 12.5 2006/08/31 18:14:06 bostic Exp $
+ * $Id: TupleBinding.java,v 12.7 2007/05/04 00:28:25 mark Exp $
*/
package com.sleepycat.bind.tuple;
diff --git a/db/java/src/com/sleepycat/bind/tuple/TupleInput.java b/db/java/src/com/sleepycat/bind/tuple/TupleInput.java
index 426f61024..9d6823902 100644
--- a/db/java/src/com/sleepycat/bind/tuple/TupleInput.java
+++ b/db/java/src/com/sleepycat/bind/tuple/TupleInput.java
@@ -1,14 +1,15 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: TupleInput.java,v 12.4 2006/08/31 18:14:06 bostic Exp $
+ * $Id: TupleInput.java,v 12.6 2007/05/04 00:28:25 mark Exp $
*/
package com.sleepycat.bind.tuple;
+import java.math.BigInteger;
+
import com.sleepycat.util.FastInputStream;
import com.sleepycat.util.PackedInteger;
import com.sleepycat.util.UtfOps;
@@ -26,7 +27,8 @@ import com.sleepycat.util.UtfOps;
* first) order with their sign bit (high-order bit) inverted to cause negative
* numbers to be sorted first when comparing values as unsigned byte arrays,
* as done in a database. Unsigned numbers, including characters, are stored
- * in MSB order with no change to their sign bit.</p>
+ * in MSB order with no change to their sign bit. BigInteger values are stored
+ * with a preceding length having the same sign as the value.</p>
*
* <p>Strings and character arrays are stored either as a fixed length array of
* unicode characters, where the length must be known by the application, or as
@@ -599,7 +601,7 @@ public class TupleInput extends FastInputStream {
*
* @see PackedInteger
*/
- public int readPackedInt() {
+ public final int readPackedInt() {
int len = PackedInteger.getReadIntLength(buf, off);
int val = PackedInteger.readInt(buf, off);
@@ -613,7 +615,62 @@ public class TupleInput extends FastInputStream {
*
* @see PackedInteger
*/
- public int getPackedIntByteLength() {
+ public final int getPackedIntByteLength() {
return PackedInteger.getReadIntLength(buf, off);
}
+
+ /**
+ * Reads a packed long integer. Note that packed integers are not
+ * appropriate for sorted values (keys) unless a custom comparator is used.
+ *
+ * @see PackedInteger
+ */
+ public final long readPackedLong() {
+
+ int len = PackedInteger.getReadLongLength(buf, off);
+ long val = PackedInteger.readLong(buf, off);
+
+ off += len;
+ return val;
+ }
+
+ /**
+ * Returns the byte length of a packed long integer.
+ *
+ * @see PackedInteger
+ */
+ public final int getPackedLongByteLength() {
+ return PackedInteger.getReadLongLength(buf, off);
+ }
+
+ /**
+ * Reads a {@code BigInteger}.
+ *
+ * @see TupleOutput#writeBigInteger
+ */
+ public final BigInteger readBigInteger() {
+ int len = readShort();
+ if (len < 0) {
+ len = (- len);
+ }
+ byte[] a = new byte[len];
+ a[0] = readByte();
+ readFast(a, 1, a.length - 1);
+ return new BigInteger(a);
+ }
+
+ /**
+ * Returns the byte length of a {@code BigInteger}.
+ *
+ * @see TupleOutput#writeBigInteger
+ */
+ public final int getBigIntegerByteLength() {
+ int saveOff = off;
+ int len = readShort();
+ off = saveOff;
+ if (len < 0) {
+ len = (- len);
+ }
+ return len + 2;
+ }
}
diff --git a/db/java/src/com/sleepycat/bind/tuple/TupleInputBinding.java b/db/java/src/com/sleepycat/bind/tuple/TupleInputBinding.java
index 382408ccf..7ef381af6 100644
--- a/db/java/src/com/sleepycat/bind/tuple/TupleInputBinding.java
+++ b/db/java/src/com/sleepycat/bind/tuple/TupleInputBinding.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: TupleInputBinding.java,v 12.3 2006/08/31 18:14:06 bostic Exp $
+ * $Id: TupleInputBinding.java,v 12.5 2007/05/04 00:28:25 mark Exp $
*/
package com.sleepycat.bind.tuple;
diff --git a/db/java/src/com/sleepycat/bind/tuple/TupleMarshalledBinding.java b/db/java/src/com/sleepycat/bind/tuple/TupleMarshalledBinding.java
index 6eb4a6c07..3732cb4c5 100644
--- a/db/java/src/com/sleepycat/bind/tuple/TupleMarshalledBinding.java
+++ b/db/java/src/com/sleepycat/bind/tuple/TupleMarshalledBinding.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: TupleMarshalledBinding.java,v 12.4 2006/09/08 20:32:11 bostic Exp $
+ * $Id: TupleMarshalledBinding.java,v 12.6 2007/05/04 00:28:25 mark Exp $
*/
package com.sleepycat.bind.tuple;
@@ -14,7 +13,7 @@ import com.sleepycat.util.RuntimeExceptionWrapper;
/**
* A concrete <code>TupleBinding</code> that delegates to the
* <code>MarshalledTupleEntry</code> interface of the data or key object.
- *
+ *
* <p>This class works by calling the methods of the {@link
* MarshalledTupleEntry} interface, which must be implemented by the key or
* data class, to convert between the key or data entry and the object.</p>
diff --git a/db/java/src/com/sleepycat/bind/tuple/TupleOutput.java b/db/java/src/com/sleepycat/bind/tuple/TupleOutput.java
index 60ca0ac10..94edfa5ea 100644
--- a/db/java/src/com/sleepycat/bind/tuple/TupleOutput.java
+++ b/db/java/src/com/sleepycat/bind/tuple/TupleOutput.java
@@ -1,14 +1,15 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: TupleOutput.java,v 12.4 2006/08/31 18:14:06 bostic Exp $
+ * $Id: TupleOutput.java,v 12.6 2007/05/04 00:28:25 mark Exp $
*/
package com.sleepycat.bind.tuple;
+import java.math.BigInteger;
+
import com.sleepycat.util.FastOutputStream;
import com.sleepycat.util.PackedInteger;
import com.sleepycat.util.UtfOps;
@@ -26,7 +27,8 @@ import com.sleepycat.util.UtfOps;
* first) order with their sign bit (high-order bit) inverted to cause negative
* numbers to be sorted first when comparing values as unsigned byte arrays,
* as done in a database. Unsigned numbers, including characters, are stored
- * in MSB order with no change to their sign bit.</p>
+ * in MSB order with no change to their sign bit. BigInteger values are stored
+ * with a preceding length having the same sign as the value.</p>
*
* <p>Strings and character arrays are stored either as a fixed length array of
* unicode characters, where the length must be known by the application, or as
@@ -482,7 +484,7 @@ public class TupleOutput extends FastOutputStream {
*
* @see PackedInteger
*/
- public void writePackedInt(int val) {
+ public final void writePackedInt(int val) {
makeSpace(PackedInteger.MAX_LENGTH);
@@ -491,4 +493,68 @@ public class TupleOutput extends FastOutputStream {
addSize(newLen - oldLen);
}
+
+ /**
+ * Writes a packed long integer. Note that packed integers are not
+ * appropriate for sorted values (keys) unless a custom comparator is used.
+ *
+ * @see PackedInteger
+ */
+ public final void writePackedLong(long val) {
+
+ makeSpace(PackedInteger.MAX_LONG_LENGTH);
+
+ int oldLen = getBufferLength();
+ int newLen = PackedInteger.writeLong(getBufferBytes(), oldLen, val);
+
+ addSize(newLen - oldLen);
+ }
+
+ /**
+ * Writes a {@code BigInteger}. Supported {@code BigInteger} values are
+ * limited to those with a byte array ({@link BigInteger#toByteArray})
+ * representation with a size of 0x7fff bytes or less. The maximum {@code
+ * BigInteger} value is (2<sup>0x3fff7</sup> - 1) and the minimum value is
+ * (-2<sup>0x3fff7</sup>).
+ *
+ * <p>The byte format for a {@code BigInteger} value is:</p>
+ * <ul>
+ * <li>Byte 0 and 1: The length of the following bytes, negated if the
+ * {@code BigInteger} value is negative, and written as a sorted value as
+ * if {@link #writeShort} were called.</li>
+ * <li>Byte 2: The first byte of the {@link BigInteger#toByteArray} array,
+ * written as a sorted value as if {@link #writeByte} were called.</li>
+ * <li>Byte 3 to N: The second and remaining bytes, if any, of the {@link
+ * BigInteger#toByteArray} array, written without modification.</li>
+ * </ul>
+ * <p>This format provides correct default sorting when the default
+ * byte-by-byte comparison is used.</p>
+ *
+ * @throws NullPointerException if val is null.
+ *
+ * @throws IllegalArgumentException if the byte array representation of val
+ * is larger than 0x7fff bytes.
+ */
+ public final TupleOutput writeBigInteger(BigInteger val) {
+ byte[] a = val.toByteArray();
+ if (a.length > Short.MAX_VALUE) {
+ throw new IllegalArgumentException
+ ("BigInteger byte array is larger than 0x7fff bytes");
+ }
+ int firstByte = a[0];
+ writeShort((firstByte < 0) ? (- a.length) : a.length);
+ writeByte(firstByte);
+ writeFast(a, 1, a.length - 1);
+ return this;
+ }
+
+ /**
+ * Returns the byte length of a given {@code BigInteger} value.
+ *
+ * @see TupleOutput#writeBigInteger
+ */
+ public static int getBigIntegerByteLength(BigInteger val) {
+ return 2 /* length bytes */ +
+ (val.bitLength() + 1 /* sign bit */ + 7 /* round up */) / 8;
+ }
}
diff --git a/db/java/src/com/sleepycat/bind/tuple/TupleTupleBinding.java b/db/java/src/com/sleepycat/bind/tuple/TupleTupleBinding.java
index 8f4bdacd0..2ef818a06 100644
--- a/db/java/src/com/sleepycat/bind/tuple/TupleTupleBinding.java
+++ b/db/java/src/com/sleepycat/bind/tuple/TupleTupleBinding.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: TupleTupleBinding.java,v 12.4 2006/08/31 18:14:06 bostic Exp $
+ * $Id: TupleTupleBinding.java,v 12.6 2007/05/04 00:28:25 mark Exp $
*/
package com.sleepycat.bind.tuple;
diff --git a/db/java/src/com/sleepycat/bind/tuple/TupleTupleKeyCreator.java b/db/java/src/com/sleepycat/bind/tuple/TupleTupleKeyCreator.java
index 6ee73bc96..8d2289c35 100644
--- a/db/java/src/com/sleepycat/bind/tuple/TupleTupleKeyCreator.java
+++ b/db/java/src/com/sleepycat/bind/tuple/TupleTupleKeyCreator.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: TupleTupleKeyCreator.java,v 12.5 2006/08/31 18:14:06 bostic Exp $
+ * $Id: TupleTupleKeyCreator.java,v 12.7 2007/05/04 00:28:25 mark Exp $
*/
package com.sleepycat.bind.tuple;
diff --git a/db/java/src/com/sleepycat/bind/tuple/TupleTupleMarshalledBinding.java b/db/java/src/com/sleepycat/bind/tuple/TupleTupleMarshalledBinding.java
index 48a19bcb8..ba2962042 100644
--- a/db/java/src/com/sleepycat/bind/tuple/TupleTupleMarshalledBinding.java
+++ b/db/java/src/com/sleepycat/bind/tuple/TupleTupleMarshalledBinding.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: TupleTupleMarshalledBinding.java,v 12.4 2006/09/08 20:32:11 bostic Exp $
+ * $Id: TupleTupleMarshalledBinding.java,v 12.6 2007/05/04 00:28:25 mark Exp $
*/
package com.sleepycat.bind.tuple;
@@ -15,7 +14,7 @@ import com.sleepycat.util.RuntimeExceptionWrapper;
* A concrete <code>TupleTupleBinding</code> that delegates to the
* <code>MarshalledTupleEntry</code> and
* <code>MarshalledTupleKeyEntity</code> interfaces of the entity class.
- *
+ *
* <p>This class calls the methods of the {@link MarshalledTupleEntry}
* interface to convert between the data entry and entity object. It calls the
* methods of the {@link MarshalledTupleKeyEntity} interface to convert between
diff --git a/db/java/src/com/sleepycat/bind/tuple/TupleTupleMarshalledKeyCreator.java b/db/java/src/com/sleepycat/bind/tuple/TupleTupleMarshalledKeyCreator.java
index 3465ff3e2..0ac7be751 100644
--- a/db/java/src/com/sleepycat/bind/tuple/TupleTupleMarshalledKeyCreator.java
+++ b/db/java/src/com/sleepycat/bind/tuple/TupleTupleMarshalledKeyCreator.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: TupleTupleMarshalledKeyCreator.java,v 12.3 2006/08/31 18:14:06 bostic Exp $
+ * $Id: TupleTupleMarshalledKeyCreator.java,v 12.5 2007/05/04 00:28:25 mark Exp $
*/
package com.sleepycat.bind.tuple;
diff --git a/db/java/src/com/sleepycat/collections/BaseIterator.java b/db/java/src/com/sleepycat/collections/BaseIterator.java
index 7cd71284d..3b6044efd 100644
--- a/db/java/src/com/sleepycat/collections/BaseIterator.java
+++ b/db/java/src/com/sleepycat/collections/BaseIterator.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: BaseIterator.java,v 12.2 2006/08/31 18:14:07 bostic Exp $
+ * $Id: BaseIterator.java,v 12.4 2007/05/04 00:28:25 mark Exp $
*/
package com.sleepycat.collections;
diff --git a/db/java/src/com/sleepycat/collections/BlockIterator.java b/db/java/src/com/sleepycat/collections/BlockIterator.java
index d8cd450f3..a4726895f 100644
--- a/db/java/src/com/sleepycat/collections/BlockIterator.java
+++ b/db/java/src/com/sleepycat/collections/BlockIterator.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: BlockIterator.java,v 12.3 2006/09/08 20:32:13 bostic Exp $
+ * $Id: BlockIterator.java,v 12.5 2007/05/04 00:28:25 mark Exp $
*/
package com.sleepycat.collections;
@@ -265,7 +264,7 @@ class BlockIterator implements BaseIterator {
}
/**
- * Moves the cursor to the key/data at the given slot, and returns false
+ * Moves the cursor to the key/data at the given slot, and returns false
* if the reposition (search) fails.
*/
private boolean moveCursor(int i, DataCursor cursor)
@@ -398,7 +397,7 @@ class BlockIterator implements BaseIterator {
int last = keys.length - 1;
int next = nextIndex;
boolean found = false;
-
+
/* Reposition to the last known key/data pair. */
int repos = cursor.repositionRange
(keys[next], priKeys[next], values[next], false);
@@ -518,18 +517,20 @@ class BlockIterator implements BaseIterator {
throw new UnsupportedOperationException();
}
DataCursor cursor = null;
+ boolean doAutoCommit = coll.beginAutoCommit();
try {
cursor = new DataCursor(coll.view, writeAllowed);
if (moveCursor(dataIndex, cursor)) {
cursor.putCurrent(value);
setSlot(dataIndex, cursor);
+ coll.closeCursor(cursor);
+ coll.commitAutoCommit(doAutoCommit);
} else {
throw new IllegalStateException();
}
- } catch (DatabaseException e) {
- throw StoredContainer.convertException(e);
- } finally {
- closeCursor(cursor);
+ } catch (Exception e) {
+ coll.closeCursor(cursor);
+ throw coll.handleException(e, doAutoCommit);
}
}
@@ -539,19 +540,21 @@ class BlockIterator implements BaseIterator {
throw new IllegalStateException();
}
DataCursor cursor = null;
+ boolean doAutoCommit = coll.beginAutoCommit();
try {
cursor = new DataCursor(coll.view, writeAllowed);
if (moveCursor(dataIndex, cursor)) {
cursor.delete();
deleteSlot(dataIndex);
dataObject = null;
+ coll.closeCursor(cursor);
+ coll.commitAutoCommit(doAutoCommit);
} else {
throw new IllegalStateException();
}
- } catch (DatabaseException e) {
- throw StoredContainer.convertException(e);
- } finally {
- closeCursor(cursor);
+ } catch (Exception e) {
+ coll.closeCursor(cursor);
+ throw coll.handleException(e, doAutoCommit);
}
}
@@ -566,6 +569,7 @@ class BlockIterator implements BaseIterator {
coll.checkIterAddAllowed();
OperationStatus status = OperationStatus.SUCCESS;
DataCursor cursor = null;
+ boolean doAutoCommit = coll.beginAutoCommit();
try {
if (coll.view.keysRenumbered || !coll.areDuplicatesOrdered()) {
@@ -593,7 +597,7 @@ class BlockIterator implements BaseIterator {
cursor = new DataCursor(coll.view, writeAllowed);
cursor.useRangeKey();
status = cursor.putNoDupData(null, value, null, true);
- cursor.close();
+ coll.closeCursor(cursor);
cursor = null;
} else {
throw new IllegalStateException
@@ -622,7 +626,7 @@ class BlockIterator implements BaseIterator {
if (!moveCursor(insertIndex, cursor)) {
throw new IllegalStateException();
}
-
+
/*
* For a recno-renumber database or a database with
* unsorted duplicates, insert before the iterator 'next'
@@ -681,10 +685,12 @@ class BlockIterator implements BaseIterator {
/* Prevent subsequent set() or remove() call. */
dataObject = null;
- } catch (DatabaseException e) {
- throw StoredContainer.convertException(e);
- } finally {
- closeCursor(cursor);
+
+ coll.closeCursor(cursor);
+ coll.commitAutoCommit(doAutoCommit);
+ } catch (Exception e) {
+ coll.closeCursor(cursor);
+ throw coll.handleException(e, doAutoCommit);
}
}
diff --git a/db/java/src/com/sleepycat/collections/CurrentTransaction.java b/db/java/src/com/sleepycat/collections/CurrentTransaction.java
index a41b445df..a1b23d79c 100644
--- a/db/java/src/com/sleepycat/collections/CurrentTransaction.java
+++ b/db/java/src/com/sleepycat/collections/CurrentTransaction.java
@@ -1,14 +1,14 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: CurrentTransaction.java,v 12.7 2006/09/08 20:32:13 bostic Exp $
+ * $Id: CurrentTransaction.java,v 12.9 2007/05/04 00:28:25 mark Exp $
*/
package com.sleepycat.collections;
+import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.List;
import java.util.WeakHashMap;
@@ -72,10 +72,14 @@ public class CurrentTransaction {
*/
static CurrentTransaction getInstanceInternal(Environment env) {
synchronized (envMap) {
- CurrentTransaction myEnv = (CurrentTransaction) envMap.get(env);
+ CurrentTransaction myEnv = null;
+ WeakReference myEnvRef = (WeakReference) envMap.get(env);
+ if (myEnvRef != null) {
+ myEnv = (CurrentTransaction) myEnvRef.get();
+ }
if (myEnv == null) {
myEnv = new CurrentTransaction(env);
- envMap.put(env, myEnv);
+ envMap.put(env, new WeakReference(myEnv));
}
return myEnv;
}
@@ -156,8 +160,8 @@ public class CurrentTransaction {
/**
* Returns whether auto-commit may be performed by the collections API.
- * True is returned no collections API transaction is currently active, and
- * no XA transaction is currently active.
+ * True is returned if no collections API transaction is currently active,
+ * and no XA transaction is currently active.
*/
boolean isAutoCommitAllowed()
throws DatabaseException {
@@ -330,7 +334,7 @@ public class CurrentTransaction {
CursorConfig cdbConfig;
if (writeCursor) {
if (cdbCursors.readCursors.size() > 0) {
-
+
/*
* Although CDB allows opening a write cursor when a read
* cursor is open, a self-deadlock will occur if a write is
diff --git a/db/java/src/com/sleepycat/collections/DataCursor.java b/db/java/src/com/sleepycat/collections/DataCursor.java
index 977522ab2..d22bef88e 100644
--- a/db/java/src/com/sleepycat/collections/DataCursor.java
+++ b/db/java/src/com/sleepycat/collections/DataCursor.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: DataCursor.java,v 12.7 2006/09/08 20:32:13 bostic Exp $
+ * $Id: DataCursor.java,v 12.9 2007/05/04 00:28:25 mark Exp $
*/
package com.sleepycat.collections;
@@ -310,7 +309,7 @@ final class DataCursor implements Cloneable {
status = cursor.getSearchBoth(keyThang, primaryKeyThang,
valueThang, lockMode);
}
-
+
return (status == OperationStatus.SUCCESS);
}
@@ -406,7 +405,7 @@ final class DataCursor implements Cloneable {
return DbCompat.getRecordNumber(keyThang);
}
}
-
+
/**
* Binding version of Cursor.getCurrent(), no join cursor allowed.
*/
@@ -417,7 +416,7 @@ final class DataCursor implements Cloneable {
return cursor.getCurrent(keyThang, primaryKeyThang, valueThang,
getLockMode(lockForWrite));
}
-
+
/**
* Binding version of Cursor.getFirst(), join cursor is allowed.
*/
@@ -432,7 +431,7 @@ final class DataCursor implements Cloneable {
lockMode);
}
}
-
+
/**
* Binding version of Cursor.getNext(), join cursor is allowed.
*/
@@ -447,7 +446,7 @@ final class DataCursor implements Cloneable {
lockMode);
}
}
-
+
/**
* Binding version of Cursor.getNext(), join cursor is allowed.
*/
@@ -465,7 +464,7 @@ final class DataCursor implements Cloneable {
(keyThang, primaryKeyThang, valueThang, lockMode);
}
}
-
+
/**
* Binding version of Cursor.getNextDup(), no join cursor allowed.
*/
@@ -481,7 +480,7 @@ final class DataCursor implements Cloneable {
getLockMode(lockForWrite));
}
}
-
+
/**
* Binding version of Cursor.getLast(), no join cursor allowed.
*/
@@ -492,7 +491,7 @@ final class DataCursor implements Cloneable {
return cursor.getLast(keyThang, primaryKeyThang, valueThang,
getLockMode(lockForWrite));
}
-
+
/**
* Binding version of Cursor.getPrev(), no join cursor allowed.
*/
@@ -503,7 +502,7 @@ final class DataCursor implements Cloneable {
return cursor.getPrev(keyThang, primaryKeyThang, valueThang,
getLockMode(lockForWrite));
}
-
+
/**
* Binding version of Cursor.getPrevNoDup(), no join cursor allowed.
*/
@@ -522,7 +521,7 @@ final class DataCursor implements Cloneable {
(keyThang, primaryKeyThang, valueThang, lockMode);
}
}
-
+
/**
* Binding version of Cursor.getPrevDup(), no join cursor allowed.
*/
@@ -538,7 +537,7 @@ final class DataCursor implements Cloneable {
getLockMode(lockForWrite));
}
}
-
+
/**
* Binding version of Cursor.getSearchKey(), no join cursor allowed.
* Searches by record number in a BTREE-RECNO db with RECNO access.
@@ -562,7 +561,7 @@ final class DataCursor implements Cloneable {
}
return OperationStatus.NOTFOUND;
}
-
+
/**
* Pass-thru version of Cursor.getSearchKey().
* Searches by record number in a BTREE-RECNO db with RECNO access.
@@ -579,7 +578,7 @@ final class DataCursor implements Cloneable {
valueThang, lockMode);
}
}
-
+
/**
* Binding version of Cursor.getSearchKeyRange(), no join cursor allowed.
*/
@@ -703,7 +702,7 @@ final class DataCursor implements Cloneable {
checkWriteAllowed(false);
view.useValue(value, valueThang, keyThang);
-
+
/*
* Workaround for a DB core problem: With HASH type a put() with
* different data is allowed.
diff --git a/db/java/src/com/sleepycat/collections/DataView.java b/db/java/src/com/sleepycat/collections/DataView.java
index 787459930..e1a36f9b6 100644
--- a/db/java/src/com/sleepycat/collections/DataView.java
+++ b/db/java/src/com/sleepycat/collections/DataView.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: DataView.java,v 12.4 2006/08/31 18:14:07 bostic Exp $
+ * $Id: DataView.java,v 12.6 2007/05/04 00:28:25 mark Exp $
*/
package com.sleepycat.collections;
diff --git a/db/java/src/com/sleepycat/collections/KeyRange.java b/db/java/src/com/sleepycat/collections/KeyRange.java
deleted file mode 100644
index 8a5b7d3b2..000000000
--- a/db/java/src/com/sleepycat/collections/KeyRange.java
+++ /dev/null
@@ -1,299 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: KeyRange.java,v 1.2 2004/05/05 15:43:48 mark Exp $
- */
-
-package com.sleepycat.collections;
-
-import java.util.Comparator;
-
-import com.sleepycat.db.DatabaseEntry;
-
-/**
- * Encapsulates a key range for use with a RangeCursor.
- */
-class KeyRange {
-
- Comparator comparator;
- DatabaseEntry beginKey;
- DatabaseEntry endKey;
- boolean singleKey;
- boolean beginInclusive;
- boolean endInclusive;
-
- /**
- * Creates an unconstrained key range.
- */
- KeyRange(Comparator comparator) {
- this.comparator = comparator;
- }
-
- /**
- * Creates a range for a single key.
- */
- KeyRange subRange(DatabaseEntry key)
- throws KeyRangeException {
-
- if (!check(key)) {
- throw new KeyRangeException("singleKey out of range");
- }
- KeyRange range = new KeyRange(comparator);
- range.beginKey = key;
- range.endKey = key;
- range.beginInclusive = true;
- range.endInclusive = true;
- range.singleKey = true;
- return range;
- }
-
- /**
- * Creates a range that is the intersection of this range and the given
- * range parameters.
- */
- KeyRange subRange(DatabaseEntry beginKey, boolean beginInclusive,
- DatabaseEntry endKey, boolean endInclusive)
- throws KeyRangeException {
-
- if (beginKey == null) {
- beginKey = this.beginKey;
- beginInclusive = this.beginInclusive;
- } else if (!check(beginKey, beginInclusive)) {
- throw new KeyRangeException("beginKey out of range");
- }
- if (endKey == null) {
- endKey = this.endKey;
- endInclusive = this.endInclusive;
- } else if (!check(endKey, endInclusive)) {
- throw new KeyRangeException("endKey out of range");
- }
- KeyRange range = new KeyRange(comparator);
- range.beginKey = beginKey;
- range.endKey = endKey;
- range.beginInclusive = beginInclusive;
- range.endInclusive = endInclusive;
- return range;
- }
-
- /**
- * Returns the key of a single-key range, or null if not a single-key
- * range.
- */
- final DatabaseEntry getSingleKey() {
-
- return singleKey ? beginKey : null;
- }
-
- /**
- * Returns whether this range has a begin or end bound.
- */
- final boolean hasBound() {
-
- return endKey != null || beginKey != null;
- }
-
- /**
- * Formats this range as a string for debugging.
- */
- public String toString() {
-
- return "[KeyRange " + beginKey + ' ' + beginInclusive +
- endKey + ' ' + endInclusive +
- (singleKey ? " single" : "");
- }
-
- /**
- * Returns whether a given key is within range.
- */
- boolean check(DatabaseEntry key) {
-
- if (singleKey) {
- return (compare(key, beginKey) == 0);
- } else {
- return checkBegin(key, true) && checkEnd(key, true);
- }
- }
-
- /**
- * Returns whether a given key is within range.
- */
- boolean check(DatabaseEntry key, boolean inclusive) {
-
- if (singleKey) {
- return (compare(key, beginKey) == 0);
- } else {
- return checkBegin(key, inclusive) && checkEnd(key, inclusive);
- }
- }
-
- /**
- * Returns whether the given key is within range with respect to the
- * beginning of the range.
- *
- * <p>The inclusive parameter should be true for checking a key read from
- * the database; this will require that the key is within range. When
- * inclusive=false the key is allowed to be equal to the beginKey for the
- * range; this is used for checking a new exclusive bound of a
- * sub-range.</p>
- *
- * <p>Note that when inclusive=false and beginInclusive=true our check is
- * not exactly correct because in theory we should allow the key to be "one
- * less" than the existing bound; however, checking for "one less" is
- * impossible so we do the best we can and test the bounds
- * conservatively.</p>
- */
- boolean checkBegin(DatabaseEntry key, boolean inclusive) {
-
- if (beginKey == null) {
- return true;
- } else if (!beginInclusive && inclusive) {
- return compare(key, beginKey) > 0;
- } else {
- return compare(key, beginKey) >= 0;
- }
- }
-
- /**
- * Returns whether the given key is within range with respect to the
- * end of the range. See checkBegin for details.
- */
- boolean checkEnd(DatabaseEntry key, boolean inclusive) {
-
- if (endKey == null) {
- return true;
- } else if (!endInclusive && inclusive) {
- return compare(key, endKey) < 0;
- } else {
- return compare(key, endKey) <= 0;
- }
- }
-
- /**
- * Compares two keys, using the user comparator if there is one.
- */
- int compare(DatabaseEntry key1, DatabaseEntry key2) {
-
- if (comparator != null) {
- return comparator.compare(getByteArray(key1), getByteArray(key2));
- } else {
- return compareBytes
- (key1.getData(), key1.getOffset(), key1.getSize(),
- key2.getData(), key2.getOffset(), key2.getSize());
-
- }
- }
-
- /**
- * Compares two keys as unsigned byte arrays, which is the default
- * comparison used by JE/DB.
- */
- static int compareBytes(byte[] data1, int offset1, int size1,
- byte[] data2, int offset2, int size2) {
-
- for (int i = 0; i < size1 && i < size2; i++) {
-
- int b1 = 0xFF & data1[offset1 + i];
- int b2 = 0xFF & data2[offset2 + i];
- if (b1 < b2)
- return -1;
- else if (b1 > b2)
- return 1;
- }
-
- if (size1 < size2)
- return -1;
- else if (size1 > size2)
- return 1;
- else
- return 0;
- }
-
- /**
- * Returns a copy of an entry.
- */
- static DatabaseEntry copy(DatabaseEntry from) {
- return new DatabaseEntry(getByteArray(from));
- }
-
- /**
- * Copies one entry to another.
- */
- static void copy(DatabaseEntry from, DatabaseEntry to) {
- to.setData(getByteArray(from));
- to.setOffset(0);
- }
-
- /**
- * Returns an entry's byte array, copying it if the entry offset is
- * non-zero.
- */
- static byte[] getByteArray(DatabaseEntry entry) {
-
- byte[] bytes = entry.getData();
- if (bytes == null) return null;
- int size = entry.getSize();
- byte[] data = new byte[size];
- System.arraycopy(bytes, entry.getOffset(), data, 0, size);
- return data;
- }
-
- /**
- * Returns the two DatabaseEntry objects have the same data value.
- */
- static boolean equalBytes(DatabaseEntry e1, DatabaseEntry e2) {
-
- if (e1 == null && e2 == null) {
- return true;
- }
- if (e1 == null || e2 == null) {
- return false;
- }
-
- byte[] d1 = e1.getData();
- byte[] d2 = e2.getData();
- int s1 = e1.getSize();
- int s2 = e2.getSize();
- int o1 = e1.getOffset();
- int o2 = e2.getOffset();
-
- if (d1 == null && d2 == null) {
- return true;
- }
- if (d1 == null || d2 == null) {
- return false;
- }
- if (s1 != s2) {
- return false;
- }
- for (int i = 0; i < s1; i += 1) {
- if (d1[o1 + i] != d2[o2 + i]) {
- return false;
- }
- }
- return true;
- }
-
- /**
- * Converts the byte array of this thang to space-separated integers,
- * and suffixed by the record number if applicable.
- *
- * @param dbt the thang to convert.
- *
- * @param the resulting string.
- */
- static String toString(DatabaseEntry dbt) {
-
- int len = dbt.getOffset() + dbt.getSize();
- StringBuffer buf = new StringBuffer(len * 2);
- byte[] data = dbt.getData();
- for (int i = dbt.getOffset(); i < len; i++) {
- String num = Integer.toHexString(data[i]);
- if (num.length() < 2) buf.append('0');
- buf.append(num);
- }
- return buf.toString();
- }
-}
diff --git a/db/java/src/com/sleepycat/collections/KeyRangeException.java b/db/java/src/com/sleepycat/collections/KeyRangeException.java
deleted file mode 100644
index 342ebd528..000000000
--- a/db/java/src/com/sleepycat/collections/KeyRangeException.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2000-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: KeyRangeException.java,v 1.1 2004/04/09 16:34:08 mark Exp $
- */
-
-package com.sleepycat.collections;
-
-/**
- * An exception thrown when a key is out of range.
- *
- * @author Mark Hayes
- */
-class KeyRangeException extends IllegalArgumentException {
-
- /**
- * Creates a key range exception.
- */
- public KeyRangeException(String msg) {
-
- super(msg);
- }
-}
diff --git a/db/java/src/com/sleepycat/collections/MapEntryParameter.java b/db/java/src/com/sleepycat/collections/MapEntryParameter.java
index ce3209e29..c10b4fa5f 100644
--- a/db/java/src/com/sleepycat/collections/MapEntryParameter.java
+++ b/db/java/src/com/sleepycat/collections/MapEntryParameter.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: MapEntryParameter.java,v 12.3 2006/08/31 18:14:08 bostic Exp $
+ * $Id: MapEntryParameter.java,v 12.5 2007/05/04 00:28:25 mark Exp $
*/
package com.sleepycat.collections;
diff --git a/db/java/src/com/sleepycat/collections/MyRangeCursor.java b/db/java/src/com/sleepycat/collections/MyRangeCursor.java
index 26363da57..5f603602a 100644
--- a/db/java/src/com/sleepycat/collections/MyRangeCursor.java
+++ b/db/java/src/com/sleepycat/collections/MyRangeCursor.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: MyRangeCursor.java,v 12.2 2006/08/31 18:14:08 bostic Exp $
+ * $Id: MyRangeCursor.java,v 12.4 2007/05/04 00:28:25 mark Exp $
*/
package com.sleepycat.collections;
diff --git a/db/java/src/com/sleepycat/collections/PrimaryKeyAssigner.java b/db/java/src/com/sleepycat/collections/PrimaryKeyAssigner.java
index 38aff9c5c..1b50383ee 100644
--- a/db/java/src/com/sleepycat/collections/PrimaryKeyAssigner.java
+++ b/db/java/src/com/sleepycat/collections/PrimaryKeyAssigner.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: PrimaryKeyAssigner.java,v 12.3 2006/08/31 18:14:08 bostic Exp $
+ * $Id: PrimaryKeyAssigner.java,v 12.5 2007/05/04 00:28:25 mark Exp $
*/
package com.sleepycat.collections;
diff --git a/db/java/src/com/sleepycat/collections/RangeCursor.java b/db/java/src/com/sleepycat/collections/RangeCursor.java
deleted file mode 100644
index 81c040baa..000000000
--- a/db/java/src/com/sleepycat/collections/RangeCursor.java
+++ /dev/null
@@ -1,874 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: RangeCursor.java,v 1.4 2004/11/05 01:08:31 mjc Exp $
- */
-
-package com.sleepycat.collections;
-
-import com.sleepycat.compat.DbCompat;
-import com.sleepycat.db.DatabaseEntry;
-import com.sleepycat.db.DatabaseException;
-import com.sleepycat.db.Cursor;
-import com.sleepycat.db.LockMode;
-import com.sleepycat.db.OperationStatus;
-import com.sleepycat.db.SecondaryCursor;
-
-/**
- * A cursor-like interface that enforces a key range. The method signatures
- * are actually those of SecondaryCursor, but the pKey parameter may be null.
- * It was done this way to avoid doubling the number of methods.
- *
- * <p>This is not a general implementation of a range cursor and should not
- * be used outside this package; however, it may evolve into a generally useful
- * range cursor some day.</p>
- *
- * @author Mark Hayes
- */
-class RangeCursor implements Cloneable {
-
- /**
- * The cursor and secondary cursor are the same object. The secCursor is
- * null if the database is not a secondary database.
- */
- private Cursor cursor;
- private SecondaryCursor secCursor;
- private CurrentTransaction currentTxn;
- private boolean writeAllowed;
-
- /**
- * The range is always non-null, but may be unbounded meaning that it is
- * open and not used.
- */
- private KeyRange range;
-
- /**
- * If the database is a RECNO or QUEUE database, we know its keys are
- * record numbers. We treat a non-positive record number as out of bounds,
- * that is, we return NOTFOUND rather than throwing
- * IllegalArgumentException as would happen if we passed a non-positive
- * record number into the DB cursor. This behavior is required by the
- * collections interface.
- */
- private boolean isRecnoOrQueue;
-
- /**
- * The privXxx entries are used only when the range is bounded. We read
- * into these private entries to avoid modifying the caller's entry
- * parameters in the case where we read sucessfully but the key is out of
- * range. In that case we return NOTFOUND and we want to leave the entry
- * parameters unchanged.
- */
- private DatabaseEntry privKey;
- private DatabaseEntry privPKey;
- private DatabaseEntry privData;
-
- /**
- * The initialized flag is set to true whenever we sucessfully position the
- * cursor. It is used to implement the getNext/Prev logic for doing a
- * getFirst/Last when the cursor is not initialized. We can't rely on
- * Cursor to do that for us, since if we position the underlying cursor
- * sucessfully but the key is out of range, we have no way to set the
- * underlying cursor to uninitialized. A range cursor always starts in
- * the uninitialized state.
- */
- private boolean initialized;
-
- /**
- * Create a range cursor.
- */
- RangeCursor(DataView view, KeyRange range, boolean writeAllowed)
- throws DatabaseException {
-
- this.range = range;
- this.writeAllowed = writeAllowed;
- this.currentTxn = view.currentTxn;
- isRecnoOrQueue = view.recNumAllowed && !view.btreeRecNumDb;
-
- cursor = currentTxn.openCursor(view.db, writeAllowed,
- view.useTransaction());
- init();
- }
-
- /**
- * Create a cloned range cursor. The caller must clone the underlying
- * cursor before using this constructor, because cursor open/close is
- * handled specially for CDS cursors outside this class.
- */
- RangeCursor dup(boolean samePosition)
- throws DatabaseException {
-
- try {
- RangeCursor c = (RangeCursor) super.clone();
- c.cursor = currentTxn.dupCursor(cursor, writeAllowed,
- samePosition);
- c.init();
- return c;
- } catch (CloneNotSupportedException neverHappens) {
- return null;
- }
- }
-
- /**
- * Used for opening and duping (cloning).
- */
- private void init() {
-
- if (cursor instanceof SecondaryCursor) {
- secCursor = (SecondaryCursor) cursor;
- } else {
- secCursor = null;
- }
-
- if (range.hasBound()) {
- privKey = new DatabaseEntry();
- privPKey = new DatabaseEntry();
- privData = new DatabaseEntry();
- } else {
- privKey = null;
- privPKey = null;
- privData = null;
- }
- }
-
- /**
- * Returns the underlying cursor. Used for cloning.
- */
- Cursor getCursor() {
- return cursor;
- }
-
- /**
- * When an unbounded range is used, this method is called to use the
- * callers entry parameters directly, to avoid the extra step of copying
- * between the private entries and the caller's entries.
- */
- private void setParams(DatabaseEntry key, DatabaseEntry pKey,
- DatabaseEntry data) {
- privKey = key;
- privPKey = pKey;
- privData = data;
- }
-
- /**
- * Dups the cursor, sets the cursor and secCursor fields to the duped
- * cursor, and returns the old cursor. Always call endOperation in a
- * finally clause after calling beginOperation.
- *
- * <p>If the returned cursor == the cursor field, the cursor is
- * uninitialized and was not duped; this case is handled correctly by
- * endOperation.</p>
- */
- private Cursor beginOperation()
- throws DatabaseException {
-
- Cursor oldCursor = cursor;
- if (initialized) {
- cursor = currentTxn.dupCursor(cursor, writeAllowed, true);
- if (secCursor != null) {
- secCursor = (SecondaryCursor) cursor;
- }
- } else {
- return cursor;
- }
- return oldCursor;
- }
-
- /**
- * If the operation succeded, leaves the duped cursor in place and closes
- * the oldCursor. If the operation failed, moves the oldCursor back in
- * place and closes the duped cursor. oldCursor may be null if
- * beginOperation was not called, in cases where we don't need to dup
- * the cursor. Always call endOperation when a successful operation ends,
- * in order to set the initialized field.
- */
- private void endOperation(Cursor oldCursor, OperationStatus status,
- DatabaseEntry key, DatabaseEntry pKey,
- DatabaseEntry data)
- throws DatabaseException {
-
- if (status == OperationStatus.SUCCESS) {
- if (oldCursor != null && oldCursor != cursor) {
- currentTxn.closeCursor(oldCursor);
- }
- if (key != null) {
- swapData(key, privKey);
- }
- if (pKey != null && secCursor != null) {
- swapData(pKey, privPKey);
- }
- if (data != null) {
- swapData(data, privData);
- }
- initialized = true;
- } else {
- if (oldCursor != null && oldCursor != cursor) {
- currentTxn.closeCursor(cursor);
- cursor = oldCursor;
- if (secCursor != null) {
- secCursor = (SecondaryCursor) cursor;
- }
- }
- }
- }
-
- /**
- * Swaps the contents of the two entries. Used to return entry data to
- * the caller when the operation was successful.
- */
- static private void swapData(DatabaseEntry e1, DatabaseEntry e2) {
-
- byte[] d1 = e1.getData();
- int o1 = e1.getOffset();
- int s1 = e1.getSize();
-
- e1.setData(e2.getData(), e2.getOffset(), e2.getSize());
- e2.setData(d1, o1, s1);
- }
-
- /**
- * Shares the same byte array, offset and size between two entries.
- * Used when copying the entry data is not necessary because it is known
- * that the underlying operation will not modify the entry, for example,
- * with getSearchKey.
- */
- static private void shareData(DatabaseEntry from, DatabaseEntry to) {
-
- if (from != null) {
- to.setData(from.getData(), from.getOffset(), from.getSize());
- }
- }
-
- public OperationStatus getFirst(DatabaseEntry key,
- DatabaseEntry pKey,
- DatabaseEntry data,
- LockMode lockMode)
- throws DatabaseException {
-
- OperationStatus status;
- if (!range.hasBound()) {
- setParams(key, pKey, data);
- status = doGetFirst(lockMode);
- endOperation(null, status, null, null, null);
- return status;
- }
- if (range.singleKey) {
- KeyRange.copy(range.beginKey, privKey);
- status = doGetSearchKey(lockMode);
- endOperation(null, status, key, pKey, data);
- } else {
- status = OperationStatus.NOTFOUND;
- Cursor oldCursor = beginOperation();
- try {
- if (range.beginKey == null) {
- status = doGetFirst(lockMode);
- } else {
- KeyRange.copy(range.beginKey, privKey);
- status = doGetSearchKeyRange(lockMode);
- if (status == OperationStatus.SUCCESS &&
- !range.beginInclusive &&
- range.compare(privKey, range.beginKey) == 0) {
- status = doGetNext(lockMode);
- }
- }
- if (status == OperationStatus.SUCCESS &&
- !range.check(privKey)) {
- status = OperationStatus.NOTFOUND;
- }
- } finally {
- endOperation(oldCursor, status, key, pKey, data);
- }
- }
- return status;
- }
-
- public OperationStatus getLast(DatabaseEntry key,
- DatabaseEntry pKey,
- DatabaseEntry data,
- LockMode lockMode)
- throws DatabaseException {
-
- OperationStatus status = OperationStatus.NOTFOUND;
- if (!range.hasBound()) {
- setParams(key, pKey, data);
- status = doGetLast(lockMode);
- endOperation(null, status, null, null, null);
- return status;
- }
- Cursor oldCursor = beginOperation();
- try {
- if (range.endKey == null) {
- status = doGetLast(lockMode);
- } else {
- KeyRange.copy(range.endKey, privKey);
- status = doGetSearchKeyRange(lockMode);
- if (status == OperationStatus.SUCCESS) {
- if (range.endInclusive &&
- range.compare(range.endKey, privKey) == 0) {
- status = doGetNextNoDup(lockMode);
- if (status == OperationStatus.SUCCESS) {
- status = doGetPrev(lockMode);
- } else {
- status = doGetLast(lockMode);
- }
- } else {
- status = doGetPrev(lockMode);
- }
- } else {
- status = doGetLast(lockMode);
- }
- }
- if (status == OperationStatus.SUCCESS &&
- !range.checkBegin(privKey, true)) {
- status = OperationStatus.NOTFOUND;
- }
- } finally {
- endOperation(oldCursor, status, key, pKey, data);
- }
- return status;
- }
-
- public OperationStatus getNext(DatabaseEntry key,
- DatabaseEntry pKey,
- DatabaseEntry data,
- LockMode lockMode)
- throws DatabaseException {
-
- OperationStatus status;
- if (!initialized) {
- return getFirst(key, pKey, data, lockMode);
- }
- if (!range.hasBound()) {
- setParams(key, pKey, data);
- status = doGetNext(lockMode);
- endOperation(null, status, null, null, null);
- return status;
- }
- if (range.singleKey) {
- status = doGetNextDup(lockMode);
- endOperation(null, status, key, pKey, data);
- } else {
- status = OperationStatus.NOTFOUND;
- Cursor oldCursor = beginOperation();
- try {
- status = doGetNext(lockMode);
- if (status == OperationStatus.SUCCESS &&
- !range.check(privKey)) {
- status = OperationStatus.NOTFOUND;
- }
- } finally {
- endOperation(oldCursor, status, key, pKey, data);
- }
- }
- return status;
- }
-
- public OperationStatus getNextNoDup(DatabaseEntry key,
- DatabaseEntry pKey,
- DatabaseEntry data,
- LockMode lockMode)
- throws DatabaseException {
-
- OperationStatus status;
- if (!initialized) {
- return getFirst(key, pKey, data, lockMode);
- }
- if (!range.hasBound()) {
- setParams(key, pKey, data);
- status = doGetNextNoDup(lockMode);
- endOperation(null, status, null, null, null);
- return status;
- }
- if (range.singleKey) {
- status = OperationStatus.NOTFOUND;
- } else {
- status = OperationStatus.NOTFOUND;
- Cursor oldCursor = beginOperation();
- try {
- status = doGetNextNoDup(lockMode);
- if (status == OperationStatus.SUCCESS &&
- !range.check(privKey)) {
- status = OperationStatus.NOTFOUND;
- }
- } finally {
- endOperation(oldCursor, status, key, pKey, data);
- }
- }
- return status;
- }
-
- public OperationStatus getPrev(DatabaseEntry key,
- DatabaseEntry pKey,
- DatabaseEntry data,
- LockMode lockMode)
- throws DatabaseException {
-
- OperationStatus status;
- if (!initialized) {
- return getLast(key, pKey, data, lockMode);
- }
- if (!range.hasBound()) {
- setParams(key, pKey, data);
- status = doGetPrev(lockMode);
- endOperation(null, status, null, null, null);
- return status;
- }
- if (range.singleKey) {
- status = doGetPrevDup(lockMode);
- endOperation(null, status, key, pKey, data);
- } else {
- status = OperationStatus.NOTFOUND;
- Cursor oldCursor = beginOperation();
- try {
- status = doGetPrev(lockMode);
- if (status == OperationStatus.SUCCESS &&
- !range.check(privKey)) {
- status = OperationStatus.NOTFOUND;
- }
- } finally {
- endOperation(oldCursor, status, key, pKey, data);
- }
- }
- return status;
- }
-
- public OperationStatus getPrevNoDup(DatabaseEntry key,
- DatabaseEntry pKey,
- DatabaseEntry data,
- LockMode lockMode)
- throws DatabaseException {
-
- OperationStatus status;
- if (!initialized) {
- return getLast(key, pKey, data, lockMode);
- }
- if (!range.hasBound()) {
- setParams(key, pKey, data);
- status = doGetPrevNoDup(lockMode);
- endOperation(null, status, null, null, null);
- return status;
- }
- if (range.singleKey) {
- status = OperationStatus.NOTFOUND;
- } else {
- status = OperationStatus.NOTFOUND;
- Cursor oldCursor = beginOperation();
- try {
- status = doGetPrevNoDup(lockMode);
- if (status == OperationStatus.SUCCESS &&
- !range.check(privKey)) {
- status = OperationStatus.NOTFOUND;
- }
- } finally {
- endOperation(oldCursor, status, key, pKey, data);
- }
- }
- return status;
- }
-
- public OperationStatus getSearchKey(DatabaseEntry key,
- DatabaseEntry pKey,
- DatabaseEntry data,
- LockMode lockMode)
- throws DatabaseException {
-
- OperationStatus status;
- if (!range.hasBound()) {
- setParams(key, pKey, data);
- status = doGetSearchKey(lockMode);
- endOperation(null, status, null, null, null);
- return status;
- }
- if (!range.check(key)) {
- status = OperationStatus.NOTFOUND;
- } else {
- shareData(key, privKey);
- status = doGetSearchKey(lockMode);
- endOperation(null, status, key, pKey, data);
- }
- return status;
- }
-
- public OperationStatus getSearchBoth(DatabaseEntry key,
- DatabaseEntry pKey,
- DatabaseEntry data,
- LockMode lockMode)
- throws DatabaseException {
-
- OperationStatus status;
- if (!range.hasBound()) {
- setParams(key, pKey, data);
- status = doGetSearchBoth(lockMode);
- endOperation(null, status, null, null, null);
- return status;
- }
- if (!range.check(key)) {
- status = OperationStatus.NOTFOUND;
- } else {
- shareData(key, privKey);
- if (secCursor != null) {
- shareData(pKey, privPKey);
- } else {
- shareData(data, privData);
- }
- status = doGetSearchBoth(lockMode);
- endOperation(null, status, key, pKey, data);
- }
- return status;
- }
-
- public OperationStatus getSearchKeyRange(DatabaseEntry key,
- DatabaseEntry pKey,
- DatabaseEntry data,
- LockMode lockMode)
- throws DatabaseException {
-
- OperationStatus status = OperationStatus.NOTFOUND;
- if (!range.hasBound()) {
- setParams(key, pKey, data);
- status = doGetSearchKeyRange(lockMode);
- endOperation(null, status, null, null, null);
- return status;
- }
- Cursor oldCursor = beginOperation();
- try {
- shareData(key, privKey);
- status = doGetSearchKeyRange(lockMode);
- if (status == OperationStatus.SUCCESS &&
- !range.check(privKey)) {
- status = OperationStatus.NOTFOUND;
- }
- } finally {
- endOperation(oldCursor, status, key, pKey, data);
- }
- return status;
- }
-
- public OperationStatus getSearchBothRange(DatabaseEntry key,
- DatabaseEntry pKey,
- DatabaseEntry data,
- LockMode lockMode)
- throws DatabaseException {
-
- OperationStatus status = OperationStatus.NOTFOUND;
- if (!range.hasBound()) {
- setParams(key, pKey, data);
- status = doGetSearchBothRange(lockMode);
- endOperation(null, status, null, null, null);
- return status;
- }
- Cursor oldCursor = beginOperation();
- try {
- shareData(key, privKey);
- if (secCursor != null) {
- shareData(pKey, privPKey);
- } else {
- shareData(data, privData);
- }
- status = doGetSearchBothRange(lockMode);
- if (status == OperationStatus.SUCCESS &&
- !range.check(privKey)) {
- status = OperationStatus.NOTFOUND;
- }
- } finally {
- endOperation(oldCursor, status, key, pKey, data);
- }
- return status;
- }
-
- public OperationStatus getSearchRecordNumber(DatabaseEntry key,
- DatabaseEntry pKey,
- DatabaseEntry data,
- LockMode lockMode)
- throws DatabaseException {
-
- OperationStatus status;
- if (!range.hasBound()) {
- setParams(key, pKey, data);
- status = doGetSearchRecordNumber(lockMode);
- endOperation(null, status, null, null, null);
- return status;
- }
- if (!range.check(key)) {
- status = OperationStatus.NOTFOUND;
- } else {
- shareData(key, privKey);
- status = doGetSearchRecordNumber(lockMode);
- endOperation(null, status, key, pKey, data);
- }
- return status;
- }
-
- public OperationStatus getNextDup(DatabaseEntry key,
- DatabaseEntry pKey,
- DatabaseEntry data,
- LockMode lockMode)
- throws DatabaseException {
-
- if (!initialized) {
- throw new DatabaseException("Cursor not initialized");
- }
- OperationStatus status;
- if (!range.hasBound()) {
- setParams(key, pKey, data);
- status = doGetNextDup(lockMode);
- endOperation(null, status, null, null, null);
- } else {
- status = doGetNextDup(lockMode);
- endOperation(null, status, key, pKey, data);
- }
- return status;
- }
-
- public OperationStatus getPrevDup(DatabaseEntry key,
- DatabaseEntry pKey,
- DatabaseEntry data,
- LockMode lockMode)
- throws DatabaseException {
-
- if (!initialized) {
- throw new DatabaseException("Cursor not initialized");
- }
- OperationStatus status;
- if (!range.hasBound()) {
- setParams(key, pKey, data);
- status = doGetPrevDup(lockMode);
- endOperation(null, status, null, null, null);
- } else {
- status = doGetPrevDup(lockMode);
- endOperation(null, status, key, pKey, data);
- }
- return status;
- }
-
- public OperationStatus getCurrent(DatabaseEntry key,
- DatabaseEntry pKey,
- DatabaseEntry data,
- LockMode lockMode)
- throws DatabaseException {
-
- if (!initialized) {
- throw new DatabaseException("Cursor not initialized");
- }
- if (secCursor != null && pKey != null) {
- return secCursor.getCurrent(key, pKey, data, lockMode);
- } else {
- return cursor.getCurrent(key, data, lockMode);
- }
- }
-
- /*
- * Pass-thru methods.
- */
-
- public void close()
- throws DatabaseException {
-
- currentTxn.closeCursor(cursor);
- }
-
- public int count()
- throws DatabaseException {
-
- return cursor.count();
- }
-
- public OperationStatus delete()
- throws DatabaseException {
-
- return cursor.delete();
- }
-
- public OperationStatus put(DatabaseEntry key, DatabaseEntry data)
- throws DatabaseException {
-
- return cursor.put(key, data);
- }
-
- public OperationStatus putNoOverwrite(DatabaseEntry key,
- DatabaseEntry data)
- throws DatabaseException {
-
- return cursor.putNoOverwrite(key, data);
- }
-
- public OperationStatus putNoDupData(DatabaseEntry key, DatabaseEntry data)
- throws DatabaseException {
-
- return cursor.putNoDupData(key, data);
- }
-
- public OperationStatus putCurrent(DatabaseEntry data)
- throws DatabaseException {
-
- return cursor.putCurrent(data);
- }
-
- public OperationStatus putAfter(DatabaseEntry key, DatabaseEntry data)
- throws DatabaseException {
-
- return DbCompat.putAfter(cursor, key, data);
- }
-
- public OperationStatus putBefore(DatabaseEntry key, DatabaseEntry data)
- throws DatabaseException {
-
- return DbCompat.putBefore(cursor, key, data);
- }
-
- private OperationStatus doGetFirst(LockMode lockMode)
- throws DatabaseException {
-
- if (secCursor != null && privPKey != null) {
- return secCursor.getFirst(privKey, privPKey, privData, lockMode);
- } else {
- return cursor.getFirst(privKey, privData, lockMode);
- }
- }
-
- private OperationStatus doGetLast(LockMode lockMode)
- throws DatabaseException {
-
- if (secCursor != null && privPKey != null) {
- return secCursor.getLast(privKey, privPKey, privData, lockMode);
- } else {
- return cursor.getLast(privKey, privData, lockMode);
- }
- }
-
- private OperationStatus doGetNext(LockMode lockMode)
- throws DatabaseException {
-
- if (secCursor != null && privPKey != null) {
- return secCursor.getNext(privKey, privPKey, privData, lockMode);
- } else {
- return cursor.getNext(privKey, privData, lockMode);
- }
- }
-
- private OperationStatus doGetNextDup(LockMode lockMode)
- throws DatabaseException {
-
- if (secCursor != null && privPKey != null) {
- return secCursor.getNextDup(privKey, privPKey, privData, lockMode);
- } else {
- return cursor.getNextDup(privKey, privData, lockMode);
- }
- }
-
- private OperationStatus doGetNextNoDup(LockMode lockMode)
- throws DatabaseException {
-
- if (secCursor != null && privPKey != null) {
- return secCursor.getNextNoDup(privKey, privPKey, privData,
- lockMode);
- } else {
- return cursor.getNextNoDup(privKey, privData, lockMode);
- }
- }
-
- private OperationStatus doGetPrev(LockMode lockMode)
- throws DatabaseException {
-
- if (secCursor != null && privPKey != null) {
- return secCursor.getPrev(privKey, privPKey, privData, lockMode);
- } else {
- return cursor.getPrev(privKey, privData, lockMode);
- }
- }
-
- private OperationStatus doGetPrevDup(LockMode lockMode)
- throws DatabaseException {
-
- if (secCursor != null && privPKey != null) {
- return secCursor.getPrevDup(privKey, privPKey, privData, lockMode);
- } else {
- return cursor.getPrevDup(privKey, privData, lockMode);
- }
- }
-
- private OperationStatus doGetPrevNoDup(LockMode lockMode)
- throws DatabaseException {
-
- if (secCursor != null && privPKey != null) {
- return secCursor.getPrevNoDup(privKey, privPKey, privData,
- lockMode);
- } else {
- return cursor.getPrevNoDup(privKey, privData, lockMode);
- }
- }
-
- private OperationStatus doGetSearchKey(LockMode lockMode)
- throws DatabaseException {
-
- if (isRecnoOrQueue && DbCompat.getRecordNumber(privKey) <= 0) {
- return OperationStatus.NOTFOUND;
- }
- if (secCursor != null && privPKey != null) {
- return secCursor.getSearchKey(privKey, privPKey, privData,
- lockMode);
- } else {
- return cursor.getSearchKey(privKey, privData, lockMode);
- }
- }
-
- private OperationStatus doGetSearchKeyRange(LockMode lockMode)
- throws DatabaseException {
-
- if (isRecnoOrQueue && DbCompat.getRecordNumber(privKey) <= 0) {
- return OperationStatus.NOTFOUND;
- }
- if (secCursor != null && privPKey != null) {
- return secCursor.getSearchKeyRange(privKey, privPKey, privData,
- lockMode);
- } else {
- return cursor.getSearchKeyRange(privKey, privData, lockMode);
- }
- }
-
- private OperationStatus doGetSearchBoth(LockMode lockMode)
- throws DatabaseException {
-
- if (isRecnoOrQueue && DbCompat.getRecordNumber(privKey) <= 0) {
- return OperationStatus.NOTFOUND;
- }
- if (secCursor != null && privPKey != null) {
- return secCursor.getSearchBoth(privKey, privPKey, privData,
- lockMode);
- } else {
- return cursor.getSearchBoth(privKey, privData, lockMode);
- }
- }
-
- private OperationStatus doGetSearchBothRange(LockMode lockMode)
- throws DatabaseException {
-
- if (isRecnoOrQueue && DbCompat.getRecordNumber(privKey) <= 0) {
- return OperationStatus.NOTFOUND;
- }
- if (secCursor != null && privPKey != null) {
- return secCursor.getSearchBothRange(privKey, privPKey, privData,
- lockMode);
- } else {
- return cursor.getSearchBothRange(privKey, privData, lockMode);
- }
- }
-
- private OperationStatus doGetSearchRecordNumber(LockMode lockMode)
- throws DatabaseException {
-
- if (DbCompat.getRecordNumber(privKey) <= 0) {
- return OperationStatus.NOTFOUND;
- }
- if (secCursor != null && privPKey != null) {
- return DbCompat.getSearchRecordNumber(secCursor, privKey, privPKey,
- privData, lockMode);
- } else {
- return DbCompat.getSearchRecordNumber(cursor, privKey, privData,
- lockMode);
- }
- }
-}
diff --git a/db/java/src/com/sleepycat/collections/StoredCollection.java b/db/java/src/com/sleepycat/collections/StoredCollection.java
index 222b9a748..a4a5c66f1 100644
--- a/db/java/src/com/sleepycat/collections/StoredCollection.java
+++ b/db/java/src/com/sleepycat/collections/StoredCollection.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: StoredCollection.java,v 12.6 2006/09/08 20:32:13 bostic Exp $
+ * $Id: StoredCollection.java,v 12.8 2007/05/04 00:28:25 mark Exp $
*/
package com.sleepycat.collections;
@@ -15,6 +14,7 @@ import java.util.Collection;
import java.util.Iterator;
import java.util.List;
+import com.sleepycat.compat.DbCompat;
import com.sleepycat.db.CursorConfig;
import com.sleepycat.db.DatabaseEntry;
import com.sleepycat.db.DatabaseException;
@@ -137,6 +137,11 @@ public abstract class StoredCollection extends StoredContainer
* The iterator will be read-only if the collection is read-only.
* This method does not exist in the standard {@link Collection} interface.
*
+ * <p>If {@code Iterater.set} or {@code Iterator.remove} will be called
+ * and the underlying Database is transactional, then a transaction must be
+ * active when calling this method and must remain active while using the
+ * iterator.</p>
+ *
* <p><strong>Warning:</strong> The iterator returned must be explicitly
* closed using {@link StoredIterator#close()} or {@link
* StoredIterator#close(java.util.Iterator)} to release the underlying
@@ -156,6 +161,11 @@ public abstract class StoredCollection extends StoredContainer
* collection.
* This method does not exist in the standard {@link Collection} interface.
*
+ * <p>If {@code Iterater.set} or {@code Iterator.remove} will be called
+ * and the underlying Database is transactional, then a transaction must be
+ * active when calling this method and must remain active while using the
+ * iterator.</p>
+ *
* <p><strong>Warning:</strong> The iterator returned must be explicitly
* closed using {@link StoredIterator#close()} or {@link
* StoredIterator#close(java.util.Iterator)} to release the underlying
@@ -192,7 +202,7 @@ public abstract class StoredCollection extends StoredContainer
* Java iterators do not need to be closed.
*/
public StoredIterator iterator(boolean writeAllowed) {
-
+
return storedIterator(writeAllowed);
}
@@ -445,28 +455,36 @@ public abstract class StoredCollection extends StoredContainer
// Inherit javadoc
public int size() {
- int count = 0;
boolean countDups = iterateDuplicates();
- CursorConfig cursorConfig = view.currentTxn.isLockingMode() ?
- CursorConfig.READ_UNCOMMITTED : null;
- DataCursor cursor = null;
- try {
- cursor = new DataCursor(view, false, cursorConfig);
- OperationStatus status = cursor.getFirst(false);
- while (status == OperationStatus.SUCCESS) {
- if (countDups) {
- count += cursor.count();
- } else {
- count += 1;
+ if (DbCompat.DATABASE_COUNT && countDups && !view.range.hasBound()) {
+ try {
+ return (int) DbCompat.getDatabaseCount(view.db);
+ } catch (Exception e) {
+ throw StoredContainer.convertException(e);
+ }
+ } else {
+ int count = 0;
+ CursorConfig cursorConfig = view.currentTxn.isLockingMode() ?
+ CursorConfig.READ_UNCOMMITTED : null;
+ DataCursor cursor = null;
+ try {
+ cursor = new DataCursor(view, false, cursorConfig);
+ OperationStatus status = cursor.getFirst(false);
+ while (status == OperationStatus.SUCCESS) {
+ if (countDups) {
+ count += cursor.count();
+ } else {
+ count += 1;
+ }
+ status = cursor.getNextNoDup(false);
}
- status = cursor.getNextNoDup(false);
+ } catch (Exception e) {
+ throw StoredContainer.convertException(e);
+ } finally {
+ closeCursor(cursor);
}
- } catch (Exception e) {
- throw StoredContainer.convertException(e);
- } finally {
- closeCursor(cursor);
+ return count;
}
- return count;
}
/**
diff --git a/db/java/src/com/sleepycat/collections/StoredCollections.java b/db/java/src/com/sleepycat/collections/StoredCollections.java
index 29233287a..b8680e530 100644
--- a/db/java/src/com/sleepycat/collections/StoredCollections.java
+++ b/db/java/src/com/sleepycat/collections/StoredCollections.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: StoredCollections.java,v 12.4 2006/08/31 18:14:08 bostic Exp $
+ * $Id: StoredCollections.java,v 12.6 2007/05/04 00:28:25 mark Exp $
*/
package com.sleepycat.collections;
diff --git a/db/java/src/com/sleepycat/collections/StoredContainer.java b/db/java/src/com/sleepycat/collections/StoredContainer.java
index e2f4e7e1e..cccde129b 100644
--- a/db/java/src/com/sleepycat/collections/StoredContainer.java
+++ b/db/java/src/com/sleepycat/collections/StoredContainer.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: StoredContainer.java,v 12.6 2006/08/31 18:14:08 bostic Exp $
+ * $Id: StoredContainer.java,v 12.8 2007/05/04 00:28:25 mark Exp $
*/
package com.sleepycat.collections;
@@ -221,17 +220,10 @@ public abstract class StoredContainer implements Cloneable {
}
/**
- * Returns the number of records in the collection or map.
- * This method conforms to the {@link java.util.Collection#size} and {@link
- * java.util.Map#size} interfaces.
+ * Returns a non-transactional count of the records in the collection or
+ * map. This method conforms to the {@link java.util.Collection#size} and
+ * {@link java.util.Map#size} interfaces.
*
- * <p>Note that if other threads are adding or removing records while this
- * method is executing, the size returned may be incorrect. This method
- * does not lock the database.</p>
- *
- * <p>Also note that, for a large database, this method may be expensive.
- * All non-duplicate records in the database are enumerated by this method,
- * bringing them into memory if they are not already cached.</p>
*
* @throws RuntimeExceptionWrapper if a {@link DatabaseException} is thrown.
*/
diff --git a/db/java/src/com/sleepycat/collections/StoredEntrySet.java b/db/java/src/com/sleepycat/collections/StoredEntrySet.java
index 0389aa72a..33a163f77 100644
--- a/db/java/src/com/sleepycat/collections/StoredEntrySet.java
+++ b/db/java/src/com/sleepycat/collections/StoredEntrySet.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: StoredEntrySet.java,v 12.4 2006/08/31 18:14:08 bostic Exp $
+ * $Id: StoredEntrySet.java,v 12.6 2007/05/04 00:28:25 mark Exp $
*/
package com.sleepycat.collections;
diff --git a/db/java/src/com/sleepycat/collections/StoredIterator.java b/db/java/src/com/sleepycat/collections/StoredIterator.java
index 228d19efe..61f19bddb 100644
--- a/db/java/src/com/sleepycat/collections/StoredIterator.java
+++ b/db/java/src/com/sleepycat/collections/StoredIterator.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: StoredIterator.java,v 12.5 2006/09/08 20:32:13 bostic Exp $
+ * $Id: StoredIterator.java,v 12.7 2007/05/04 00:28:25 mark Exp $
*/
package com.sleepycat.collections;
@@ -321,6 +320,10 @@ public class StoredIterator implements BaseIterator, Cloneable {
* specified element (optional operation).
* This method conforms to the {@link ListIterator#set} interface.
*
+ * <p>In order to call this method, if the underlying Database is
+ * transactional then a transaction must be active when creating the
+ * iterator.</p>
+ *
* @param value the new value.
*
* @throws UnsupportedOperationException if the collection is a {@link
@@ -354,6 +357,10 @@ public class StoredIterator implements BaseIterator, Cloneable {
* that when the collection is a list and the RECNO-RENUMBER access method
* is not used, list indices will not be renumbered.
*
+ * <p>In order to call this method, if the underlying Database is
+ * transactional then a transaction must be active when creating the
+ * iterator.</p>
+ *
* <p>Note that for the JE product, RECNO-RENUMBER databases are not
* supported, and therefore list indices are never renumbered by this
* method.</p>
@@ -476,7 +483,7 @@ public class StoredIterator implements BaseIterator, Cloneable {
toPrevious = MOVE_PREV;
toCurrent = 0;
currentData = null;
- /*
+ /*
* Initialize cursor at beginning to avoid "initial previous == last"
* behavior when cursor is uninitialized.
*
diff --git a/db/java/src/com/sleepycat/collections/StoredKeySet.java b/db/java/src/com/sleepycat/collections/StoredKeySet.java
index 38d770014..33546f2c7 100644
--- a/db/java/src/com/sleepycat/collections/StoredKeySet.java
+++ b/db/java/src/com/sleepycat/collections/StoredKeySet.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: StoredKeySet.java,v 12.4 2006/08/31 18:14:08 bostic Exp $
+ * $Id: StoredKeySet.java,v 12.6 2007/05/04 00:28:25 mark Exp $
*/
package com.sleepycat.collections;
diff --git a/db/java/src/com/sleepycat/collections/StoredList.java b/db/java/src/com/sleepycat/collections/StoredList.java
index 808f0a7f8..673f0647f 100644
--- a/db/java/src/com/sleepycat/collections/StoredList.java
+++ b/db/java/src/com/sleepycat/collections/StoredList.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: StoredList.java,v 12.4 2006/08/31 18:14:08 bostic Exp $
+ * $Id: StoredList.java,v 12.6 2007/05/04 00:28:25 mark Exp $
*/
package com.sleepycat.collections;
@@ -552,7 +551,9 @@ public class StoredList extends StoredCollection implements List {
if (i2.hasNext()) return false;
return true;
} finally {
- i1.close();
+ if (i1 != null) {
+ i1.close();
+ }
StoredIterator.close(i2);
}
}
diff --git a/db/java/src/com/sleepycat/collections/StoredMap.java b/db/java/src/com/sleepycat/collections/StoredMap.java
index a1a3d9e38..81d4a6875 100644
--- a/db/java/src/com/sleepycat/collections/StoredMap.java
+++ b/db/java/src/com/sleepycat/collections/StoredMap.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: StoredMap.java,v 12.7 2006/09/08 20:32:13 bostic Exp $
+ * $Id: StoredMap.java,v 12.9 2007/05/04 00:28:25 mark Exp $
*/
package com.sleepycat.collections;
@@ -90,7 +89,7 @@ public class StoredMap extends StoredContainer implements Map {
* com.sleepycat.db.DatabaseException} is thrown.
*/
public StoredMap(Database database, EntryBinding keyBinding,
- EntryBinding valueBinding,
+ EntryBinding valueBinding,
PrimaryKeyAssigner keyAssigner) {
super(new DataView(database, keyBinding, valueBinding, null,
@@ -148,7 +147,7 @@ public class StoredMap extends StoredContainer implements Map {
* com.sleepycat.db.DatabaseException} is thrown.
*/
public StoredMap(Database database, EntryBinding keyBinding,
- EntityBinding valueEntityBinding,
+ EntityBinding valueEntityBinding,
PrimaryKeyAssigner keyAssigner) {
super(new DataView(database, keyBinding, null, valueEntityBinding,
@@ -208,7 +207,7 @@ public class StoredMap extends StoredContainer implements Map {
* duplicates are allowed, this method returns the first duplicate, in the
* order in which duplicates are configured, that maps to the specified
* key.
- *
+ *
* This method conforms to the {@link Map#get} interface.
*
* @throws RuntimeExceptionWrapper if a {@link
@@ -485,7 +484,7 @@ public class StoredMap extends StoredContainer implements Map {
public Map duplicatesMap(Object secondaryKey,
EntryBinding primaryKeyBinding) {
try {
- DataView newView =
+ DataView newView =
view.duplicatesView(secondaryKey, primaryKeyBinding);
if (isOrdered()) {
return new StoredSortedMap(newView);
diff --git a/db/java/src/com/sleepycat/collections/StoredMapEntry.java b/db/java/src/com/sleepycat/collections/StoredMapEntry.java
index 9812cd95a..f2ba11cb2 100644
--- a/db/java/src/com/sleepycat/collections/StoredMapEntry.java
+++ b/db/java/src/com/sleepycat/collections/StoredMapEntry.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: StoredMapEntry.java,v 12.4 2006/08/31 18:14:08 bostic Exp $
+ * $Id: StoredMapEntry.java,v 12.6 2007/05/04 00:28:25 mark Exp $
*/
package com.sleepycat.collections;
diff --git a/db/java/src/com/sleepycat/collections/StoredSortedEntrySet.java b/db/java/src/com/sleepycat/collections/StoredSortedEntrySet.java
index 806db58c9..2d2180dee 100644
--- a/db/java/src/com/sleepycat/collections/StoredSortedEntrySet.java
+++ b/db/java/src/com/sleepycat/collections/StoredSortedEntrySet.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: StoredSortedEntrySet.java,v 12.5 2006/08/31 18:14:08 bostic Exp $
+ * $Id: StoredSortedEntrySet.java,v 12.7 2007/05/04 00:28:25 mark Exp $
*/
package com.sleepycat.collections;
diff --git a/db/java/src/com/sleepycat/collections/StoredSortedKeySet.java b/db/java/src/com/sleepycat/collections/StoredSortedKeySet.java
index 80ec6b93b..8ea4e6eb1 100644
--- a/db/java/src/com/sleepycat/collections/StoredSortedKeySet.java
+++ b/db/java/src/com/sleepycat/collections/StoredSortedKeySet.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: StoredSortedKeySet.java,v 12.5 2006/08/31 18:14:08 bostic Exp $
+ * $Id: StoredSortedKeySet.java,v 12.7 2007/05/04 00:28:25 mark Exp $
*/
package com.sleepycat.collections;
diff --git a/db/java/src/com/sleepycat/collections/StoredSortedMap.java b/db/java/src/com/sleepycat/collections/StoredSortedMap.java
index e3020b5b8..97c9d6bdd 100644
--- a/db/java/src/com/sleepycat/collections/StoredSortedMap.java
+++ b/db/java/src/com/sleepycat/collections/StoredSortedMap.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: StoredSortedMap.java,v 12.6 2006/09/08 20:32:13 bostic Exp $
+ * $Id: StoredSortedMap.java,v 12.8 2007/05/04 00:28:25 mark Exp $
*/
package com.sleepycat.collections;
@@ -139,7 +138,7 @@ public class StoredSortedMap extends StoredMap implements SortedMap {
* com.sleepycat.db.DatabaseException} is thrown.
*/
public StoredSortedMap(Database database, EntryBinding keyBinding,
- EntityBinding valueEntityBinding,
+ EntityBinding valueEntityBinding,
PrimaryKeyAssigner keyAssigner) {
super(new DataView(database, keyBinding, null, valueEntityBinding,
diff --git a/db/java/src/com/sleepycat/collections/StoredSortedValueSet.java b/db/java/src/com/sleepycat/collections/StoredSortedValueSet.java
index 809287d68..f8f013fdd 100644
--- a/db/java/src/com/sleepycat/collections/StoredSortedValueSet.java
+++ b/db/java/src/com/sleepycat/collections/StoredSortedValueSet.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: StoredSortedValueSet.java,v 12.5 2006/08/31 18:14:08 bostic Exp $
+ * $Id: StoredSortedValueSet.java,v 12.7 2007/05/04 00:28:25 mark Exp $
*/
package com.sleepycat.collections;
diff --git a/db/java/src/com/sleepycat/collections/StoredValueSet.java b/db/java/src/com/sleepycat/collections/StoredValueSet.java
index d578bb6ab..5c9ee6f07 100644
--- a/db/java/src/com/sleepycat/collections/StoredValueSet.java
+++ b/db/java/src/com/sleepycat/collections/StoredValueSet.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: StoredValueSet.java,v 12.4 2006/08/31 18:14:08 bostic Exp $
+ * $Id: StoredValueSet.java,v 12.6 2007/05/04 00:28:25 mark Exp $
*/
package com.sleepycat.collections;
diff --git a/db/java/src/com/sleepycat/collections/TransactionRunner.java b/db/java/src/com/sleepycat/collections/TransactionRunner.java
index 4296d8e2e..53f28969d 100644
--- a/db/java/src/com/sleepycat/collections/TransactionRunner.java
+++ b/db/java/src/com/sleepycat/collections/TransactionRunner.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: TransactionRunner.java,v 12.6 2006/09/08 20:32:13 bostic Exp $
+ * $Id: TransactionRunner.java,v 12.8 2007/05/04 00:28:25 mark Exp $
*/
package com.sleepycat.collections;
@@ -77,7 +76,6 @@ public class TransactionRunner {
/** The default maximum number of retries. */
public static final int DEFAULT_MAX_RETRIES = 10;
- private Environment env;
private CurrentTransaction currentTxn;
private int maxRetries;
private TransactionConfig config;
@@ -109,10 +107,10 @@ public class TransactionRunner {
* configuration. The configuration object is not cloned, and
* any modifications to it will impact subsequent transactions.
*/
- public TransactionRunner(Environment env, int maxRetries,
+ public TransactionRunner(Environment env,
+ int maxRetries,
TransactionConfig config) {
- this.env = env;
this.currentTxn = CurrentTransaction.getInstance(env);
this.maxRetries = maxRetries;
this.config = config;
@@ -172,7 +170,7 @@ public class TransactionRunner {
/**
* Returns the transaction configuration used for calling
* {@link Environment#beginTransaction}.
- *
+ *
* <p>If this property is null, the default configuration is used. The
* configuration object is not cloned, and any modifications to it will
* impact subsequent transactions.</p>
@@ -187,7 +185,7 @@ public class TransactionRunner {
/**
* Changes the transaction configuration used for calling
* {@link Environment#beginTransaction}.
- *
+ *
* <p>If this property is null, the default configuration is used. The
* configuration object is not cloned, and any modifications to it will
* impact subsequent transactions.</p>
@@ -245,7 +243,9 @@ public class TransactionRunner {
* wraps both e and e2, to give the user a complete
* set of error information.
*/
- e2.printStackTrace();
+ if (DbCompat.TRANSACTION_RUNNER_PRINT_STACK_TRACES) {
+ e2.printStackTrace();
+ }
/* Force the original exception to be thrown. */
i = maxRetries + 1;
}
diff --git a/db/java/src/com/sleepycat/collections/TransactionWorker.java b/db/java/src/com/sleepycat/collections/TransactionWorker.java
index 6e49b7d44..3cdcf852e 100644
--- a/db/java/src/com/sleepycat/collections/TransactionWorker.java
+++ b/db/java/src/com/sleepycat/collections/TransactionWorker.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: TransactionWorker.java,v 12.3 2006/08/31 18:14:08 bostic Exp $
+ * $Id: TransactionWorker.java,v 12.5 2007/05/04 00:28:25 mark Exp $
*/
package com.sleepycat.collections;
diff --git a/db/java/src/com/sleepycat/collections/TupleSerialFactory.java b/db/java/src/com/sleepycat/collections/TupleSerialFactory.java
index 32fb4a780..00e657e0d 100644
--- a/db/java/src/com/sleepycat/collections/TupleSerialFactory.java
+++ b/db/java/src/com/sleepycat/collections/TupleSerialFactory.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: TupleSerialFactory.java,v 12.3 2006/08/31 18:14:08 bostic Exp $
+ * $Id: TupleSerialFactory.java,v 12.5 2007/05/04 00:28:25 mark Exp $
*/
package com.sleepycat.collections;
diff --git a/db/java/src/com/sleepycat/collections/package.html b/db/java/src/com/sleepycat/collections/package.html
index 35d7bcf09..0889875bd 100644
--- a/db/java/src/com/sleepycat/collections/package.html
+++ b/db/java/src/com/sleepycat/collections/package.html
@@ -1,14 +1,13 @@
-<!-- $Id: package.html,v 12.4 2006/08/31 18:14:08 bostic Exp $ -->
+<!-- $Id: package.html,v 12.6 2007/05/17 15:15:40 bostic Exp $ -->
<html>
<head>
<!--
See the file LICENSE for redistribution information.
- Copyright (c) 2002-2006
- Oracle Corporation. All rights reserved.
+ Copyright (c) 2002,2007 Oracle. All rights reserved.
- $Id: package.html,v 12.4 2006/08/31 18:14:08 bostic Exp $
+ $Id: package.html,v 12.6 2007/05/17 15:15:40 bostic Exp $
-->
</head>
diff --git a/db/java/src/com/sleepycat/compat/DbCompat.java b/db/java/src/com/sleepycat/compat/DbCompat.java
index 78e3ae309..903a86c02 100644
--- a/db/java/src/com/sleepycat/compat/DbCompat.java
+++ b/db/java/src/com/sleepycat/compat/DbCompat.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: DbCompat.java,v 12.7 2006/08/31 18:14:08 bostic Exp $
+ * $Id: DbCompat.java,v 12.10 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.compat;
@@ -52,6 +51,8 @@ public class DbCompat {
public static final boolean BTREE_RECNUM_METHOD = true;
public static final boolean OPTIONAL_READ_UNCOMMITTED = true;
public static final boolean SECONDARIES = true;
+ public static boolean TRANSACTION_RUNNER_PRINT_STACK_TRACES = true;
+ public static final boolean DATABASE_COUNT = false;
/* Methods used by the collections package. */
@@ -129,6 +130,12 @@ public class DbCompat {
return db.getDatabaseFile();
}
+ public static long getDatabaseCount(Database db)
+ throws DatabaseException {
+
+ throw new UnsupportedOperationException();
+ }
+
public static OperationStatus getCurrentRecordNumber(Cursor cursor,
DatabaseEntry key,
LockMode lockMode)
diff --git a/db/java/src/com/sleepycat/db/BtreePrefixCalculator.java b/db/java/src/com/sleepycat/db/BtreePrefixCalculator.java
index 5a3b2f2ee..6d2c982a9 100644
--- a/db/java/src/com/sleepycat/db/BtreePrefixCalculator.java
+++ b/db/java/src/com/sleepycat/db/BtreePrefixCalculator.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2001-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2001,2007 Oracle. All rights reserved.
*
- * $Id: BtreePrefixCalculator.java,v 12.3 2006/08/24 14:46:06 bostic Exp $
+ * $Id: BtreePrefixCalculator.java,v 12.5 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/BtreeStats.java b/db/java/src/com/sleepycat/db/BtreeStats.java
index 00f0bb85b..10a49e6e3 100644
--- a/db/java/src/com/sleepycat/db/BtreeStats.java
+++ b/db/java/src/com/sleepycat/db/BtreeStats.java
@@ -3,8 +3,7 @@
*
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*/
package com.sleepycat.db;
@@ -38,6 +37,11 @@ public class BtreeStats extends DatabaseStats {
return bt_ndata;
}
+ private int bt_pagecnt;
+ public int getPageCount() {
+ return bt_pagecnt;
+ }
+
private int bt_pagesize;
public int getPageSize() {
return bt_pagesize;
@@ -120,6 +124,7 @@ public class BtreeStats extends DatabaseStats {
+ "\n bt_metaflags=" + bt_metaflags
+ "\n bt_nkeys=" + bt_nkeys
+ "\n bt_ndata=" + bt_ndata
+ + "\n bt_pagecnt=" + bt_pagecnt
+ "\n bt_pagesize=" + bt_pagesize
+ "\n bt_minkey=" + bt_minkey
+ "\n bt_re_len=" + bt_re_len
diff --git a/db/java/src/com/sleepycat/db/CacheFile.java b/db/java/src/com/sleepycat/db/CacheFile.java
index 0c5102f8e..95e596291 100644
--- a/db/java/src/com/sleepycat/db/CacheFile.java
+++ b/db/java/src/com/sleepycat/db/CacheFile.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2001-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2001,2007 Oracle. All rights reserved.
*
- * $Id: CacheFile.java,v 12.3 2006/08/24 14:46:07 bostic Exp $
+ * $Id: CacheFile.java,v 12.5 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/CacheFilePriority.java b/db/java/src/com/sleepycat/db/CacheFilePriority.java
index 80428d680..bbef9d796 100644
--- a/db/java/src/com/sleepycat/db/CacheFilePriority.java
+++ b/db/java/src/com/sleepycat/db/CacheFilePriority.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: CacheFilePriority.java,v 12.3 2006/08/24 14:46:07 bostic Exp $
+ * $Id: CacheFilePriority.java,v 12.6 2007/06/28 14:23:36 mjc Exp $
*/
package com.sleepycat.db;
@@ -26,6 +25,7 @@ public final class CacheFilePriority {
/* package */
static CacheFilePriority fromFlag(int flag) {
switch (flag) {
+ case 0:
case DbConstants.DB_PRIORITY_DEFAULT:
return DEFAULT;
case DbConstants.DB_PRIORITY_HIGH:
diff --git a/db/java/src/com/sleepycat/db/CacheFileStats.java b/db/java/src/com/sleepycat/db/CacheFileStats.java
index a1f21d765..1b39e1333 100644
--- a/db/java/src/com/sleepycat/db/CacheFileStats.java
+++ b/db/java/src/com/sleepycat/db/CacheFileStats.java
@@ -3,8 +3,7 @@
*
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/CacheStats.java b/db/java/src/com/sleepycat/db/CacheStats.java
index 387980438..913a7c5bd 100644
--- a/db/java/src/com/sleepycat/db/CacheStats.java
+++ b/db/java/src/com/sleepycat/db/CacheStats.java
@@ -3,8 +3,7 @@
*
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*/
package com.sleepycat.db;
@@ -28,9 +27,9 @@ public class CacheStats {
return st_ncache;
}
- private int st_regsize;
- public int getRegSize() {
- return st_regsize;
+ private int st_max_ncache;
+ public int getMaxNumCache() {
+ return st_max_ncache;
}
private int st_mmapsize;
@@ -53,6 +52,11 @@ public class CacheStats {
return st_maxwrite_sleep;
}
+ private int st_pages;
+ public int getPages() {
+ return st_pages;
+ }
+
private int st_map;
public int getMap() {
return st_map;
@@ -98,11 +102,6 @@ public class CacheStats {
return st_page_trickle;
}
- private int st_pages;
- public int getPages() {
- return st_pages;
- }
-
private int st_page_clean;
public int getPageClean() {
return st_page_clean;
@@ -208,16 +207,22 @@ public class CacheStats {
return st_io_wait;
}
+ private int st_regsize;
+ public int getRegSize() {
+ return st_regsize;
+ }
+
public String toString() {
return "CacheStats:"
+ "\n st_gbytes=" + st_gbytes
+ "\n st_bytes=" + st_bytes
+ "\n st_ncache=" + st_ncache
- + "\n st_regsize=" + st_regsize
+ + "\n st_max_ncache=" + st_max_ncache
+ "\n st_mmapsize=" + st_mmapsize
+ "\n st_maxopenfd=" + st_maxopenfd
+ "\n st_maxwrite=" + st_maxwrite
+ "\n st_maxwrite_sleep=" + st_maxwrite_sleep
+ + "\n st_pages=" + st_pages
+ "\n st_map=" + st_map
+ "\n st_cache_hit=" + st_cache_hit
+ "\n st_cache_miss=" + st_cache_miss
@@ -227,7 +232,6 @@ public class CacheStats {
+ "\n st_ro_evict=" + st_ro_evict
+ "\n st_rw_evict=" + st_rw_evict
+ "\n st_page_trickle=" + st_page_trickle
- + "\n st_pages=" + st_pages
+ "\n st_page_clean=" + st_page_clean
+ "\n st_page_dirty=" + st_page_dirty
+ "\n st_hash_buckets=" + st_hash_buckets
@@ -249,6 +253,7 @@ public class CacheStats {
+ "\n st_alloc_pages=" + st_alloc_pages
+ "\n st_alloc_max_pages=" + st_alloc_max_pages
+ "\n st_io_wait=" + st_io_wait
+ + "\n st_regsize=" + st_regsize
;
}
}
diff --git a/db/java/src/com/sleepycat/db/CheckpointConfig.java b/db/java/src/com/sleepycat/db/CheckpointConfig.java
index 71d16b6fc..1aa555b3b 100644
--- a/db/java/src/com/sleepycat/db/CheckpointConfig.java
+++ b/db/java/src/com/sleepycat/db/CheckpointConfig.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: CheckpointConfig.java,v 12.3 2006/08/24 14:46:07 bostic Exp $
+ * $Id: CheckpointConfig.java,v 12.5 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/CompactConfig.java b/db/java/src/com/sleepycat/db/CompactConfig.java
index 405054c48..b00f5ba85 100644
--- a/db/java/src/com/sleepycat/db/CompactConfig.java
+++ b/db/java/src/com/sleepycat/db/CompactConfig.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: CompactConfig.java,v 12.4 2006/08/24 14:46:07 bostic Exp $
+ * $Id: CompactConfig.java,v 12.6 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/CompactStats.java b/db/java/src/com/sleepycat/db/CompactStats.java
index a26b4cefd..ac35a2db4 100644
--- a/db/java/src/com/sleepycat/db/CompactStats.java
+++ b/db/java/src/com/sleepycat/db/CompactStats.java
@@ -3,8 +3,7 @@
*
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/Cursor.java b/db/java/src/com/sleepycat/db/Cursor.java
index 14dbdf305..5f6bee5d6 100644
--- a/db/java/src/com/sleepycat/db/Cursor.java
+++ b/db/java/src/com/sleepycat/db/Cursor.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: Cursor.java,v 12.5 2006/08/24 14:46:07 bostic Exp $
+ * $Id: Cursor.java,v 12.8 2007/06/28 14:23:36 mjc Exp $
*/
package com.sleepycat.db;
@@ -152,40 +151,10 @@ public class Cursor {
LockMode lockMode)
throws DatabaseException {
- /*
- * "Get the previous duplicate" isn't directly supported by the C API,
- * so here's how to get it: dup the cursor and call getPrev, then dup
- * the result and call getNextDup. If both succeed then there was a
- * previous duplicate and the first dup is sitting on it. Keep that,
- * and call getCurrent to fill in the user's buffers.
- */
- Dbc dup1 = dbc.dup(DbConstants.DB_POSITION);
- try {
- int errCode = dup1.get(DatabaseEntry.IGNORE, DatabaseEntry.IGNORE,
- DbConstants.DB_PREV | LockMode.getFlag(lockMode));
- if (errCode == 0) {
- Dbc dup2 = dup1.dup(DbConstants.DB_POSITION);
- try {
- errCode = dup2.get(DatabaseEntry.IGNORE,
- DatabaseEntry.IGNORE,
- DbConstants.DB_NEXT_DUP | LockMode.getFlag(lockMode));
- } finally {
- dup2.close();
- }
- }
- if (errCode == 0)
- errCode = dup1.get(key, data,
- DbConstants.DB_CURRENT | LockMode.getFlag(lockMode) |
- ((data == null) ? 0 : data.getMultiFlag()));
- if (errCode == 0) {
- Dbc tdbc = dbc;
- dbc = dup1;
- dup1 = tdbc;
- }
- return OperationStatus.fromInt(errCode);
- } finally {
- dup1.close();
- }
+ return OperationStatus.fromInt(
+ dbc.get(key, data, DbConstants.DB_PREV_DUP |
+ LockMode.getFlag(lockMode) |
+ ((data == null) ? 0 : data.getMultiFlag())));
}
public OperationStatus getPrevNoDup(final DatabaseEntry key,
@@ -351,4 +320,16 @@ public class Cursor {
return OperationStatus.fromInt(
dbc.put(DatabaseEntry.UNUSED, data, DbConstants.DB_CURRENT));
}
+
+ public CacheFilePriority getPriority()
+ throws DatabaseException {
+
+ return CacheFilePriority.fromFlag(dbc.get_priority());
+ }
+
+ public void setPriority(final CacheFilePriority priority)
+ throws DatabaseException {
+
+ dbc.set_priority(priority.getFlag());
+ }
}
diff --git a/db/java/src/com/sleepycat/db/CursorConfig.java b/db/java/src/com/sleepycat/db/CursorConfig.java
index a81998c16..7a245a712 100644
--- a/db/java/src/com/sleepycat/db/CursorConfig.java
+++ b/db/java/src/com/sleepycat/db/CursorConfig.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: CursorConfig.java,v 12.5 2006/09/08 20:32:14 bostic Exp $
+ * $Id: CursorConfig.java,v 12.7 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/Database.java b/db/java/src/com/sleepycat/db/Database.java
index 3a98b0e9f..879839fd6 100644
--- a/db/java/src/com/sleepycat/db/Database.java
+++ b/db/java/src/com/sleepycat/db/Database.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: Database.java,v 12.5 2006/08/24 14:46:07 bostic Exp $
+ * $Id: Database.java,v 12.8 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
@@ -167,6 +166,15 @@ public class Database {
((txn == null) ? autoCommitFlag : 0)));
}
+ public OperationStatus exists(final Transaction txn,
+ final DatabaseEntry key)
+ throws DatabaseException {
+
+ return OperationStatus.fromInt(
+ db.exists((txn == null) ? null : txn.txn, key,
+ ((txn == null) ? autoCommitFlag : 0)));
+ }
+
public OperationStatus get(final Transaction txn,
final DatabaseEntry key,
final DatabaseEntry data,
diff --git a/db/java/src/com/sleepycat/db/DatabaseConfig.java b/db/java/src/com/sleepycat/db/DatabaseConfig.java
index f5acffaad..4fecc21be 100644
--- a/db/java/src/com/sleepycat/db/DatabaseConfig.java
+++ b/db/java/src/com/sleepycat/db/DatabaseConfig.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: DatabaseConfig.java,v 12.6 2006/08/24 14:46:07 bostic Exp $
+ * $Id: DatabaseConfig.java,v 12.10 2007/06/28 14:23:36 mjc Exp $
*/
package com.sleepycat.db;
@@ -41,6 +40,7 @@ public class DatabaseConfig implements Cloneable {
private java.io.OutputStream messageStream = null;
private int pageSize = 0;
private String password = null;
+ private CacheFilePriority priority = null;
private int queueExtentSize = 0;
private int recordDelimiter = 0;
private int recordLength = 0;
@@ -74,6 +74,7 @@ public class DatabaseConfig implements Cloneable {
private FeedbackHandler feedbackHandler = null;
private ErrorHandler errorHandler = null;
private MessageHandler messageHandler = null;
+ private java.util.Comparator hashComparator = null;
private Hasher hasher = null;
private RecordNumberAppender recnoAppender = null;
private PanicHandler panicHandler = null;
@@ -233,6 +234,14 @@ public class DatabaseConfig implements Cloneable {
return hashFillFactor;
}
+ public void setHashComparator(final java.util.Comparator hashComparator) {
+ this.hashComparator = hashComparator;
+ }
+
+ public java.util.Comparator getHashComparator() {
+ return hashComparator;
+ }
+
public void setHasher(final Hasher hasher) {
this.hasher = hasher;
}
@@ -305,6 +314,14 @@ public class DatabaseConfig implements Cloneable {
return panicHandler;
}
+ public void setPriority(final CacheFilePriority priority) {
+ this.priority = priority;
+ }
+
+ public CacheFilePriority getPriority() {
+ return priority;
+ }
+
public void setQueueExtentSize(final int queueExtentSize) {
this.queueExtentSize = queueExtentSize;
}
@@ -551,6 +568,8 @@ public class DatabaseConfig implements Cloneable {
db.set_pagesize(pageSize);
if (password != oldConfig.password && db.getPrivateDbEnv())
db.set_encrypt(password, DbConstants.DB_ENCRYPT_AES);
+ if (priority != oldConfig.priority)
+ db.set_priority(priority.getFlag());
if (queueExtentSize != oldConfig.queueExtentSize)
db.set_q_extentsize(queueExtentSize);
if (recordDelimiter != oldConfig.recordDelimiter)
@@ -573,6 +592,8 @@ public class DatabaseConfig implements Cloneable {
db.set_feedback(feedbackHandler);
if (errorHandler != oldConfig.errorHandler)
db.set_errcall(errorHandler);
+ if (hashComparator != oldConfig.hashComparator)
+ db.set_h_compare(hashComparator);
if (hasher != oldConfig.hasher)
db.set_h_hash(hasher);
if (messageHandler != oldConfig.messageHandler)
@@ -626,6 +647,7 @@ public class DatabaseConfig implements Cloneable {
messageStream = db.get_message_stream();
// Not available by design
password = ((dbFlags & DbConstants.DB_ENCRYPT) != 0) ? "" : null;
+ priority = CacheFilePriority.fromFlag(db.get_priority());
if (type == DatabaseType.QUEUE) {
queueExtentSize = db.get_q_extentsize();
}
@@ -645,6 +667,7 @@ public class DatabaseConfig implements Cloneable {
duplicateComparator = db.get_dup_compare();
feedbackHandler = db.get_feedback();
errorHandler = db.get_errcall();
+ hashComparator = db.get_h_compare();
hasher = db.get_h_hash();
messageHandler = db.get_msgcall();
recnoAppender = db.get_append_recno();
diff --git a/db/java/src/com/sleepycat/db/DatabaseEntry.java b/db/java/src/com/sleepycat/db/DatabaseEntry.java
index 5ac47bbdb..086f0afcf 100644
--- a/db/java/src/com/sleepycat/db/DatabaseEntry.java
+++ b/db/java/src/com/sleepycat/db/DatabaseEntry.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: DatabaseEntry.java,v 12.7 2006/08/24 14:46:07 bostic Exp $
+ * $Id: DatabaseEntry.java,v 12.9 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/DatabaseException.java b/db/java/src/com/sleepycat/db/DatabaseException.java
index 7eb7108f9..a6cdaa6e8 100644
--- a/db/java/src/com/sleepycat/db/DatabaseException.java
+++ b/db/java/src/com/sleepycat/db/DatabaseException.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: DatabaseException.java,v 12.4 2006/08/24 14:46:07 bostic Exp $
+ * $Id: DatabaseException.java,v 12.6 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/DatabaseStats.java b/db/java/src/com/sleepycat/db/DatabaseStats.java
index c7cdaf193..d11cb6094 100644
--- a/db/java/src/com/sleepycat/db/DatabaseStats.java
+++ b/db/java/src/com/sleepycat/db/DatabaseStats.java
@@ -1,14 +1,13 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: DatabaseStats.java,v 12.4 2006/08/24 14:46:07 bostic Exp $
+ * $Id: DatabaseStats.java,v 12.7 2007/06/28 14:23:36 mjc Exp $
*/
package com.sleepycat.db;
public abstract class DatabaseStats {
- // no public constructor
- /* package */ DatabaseStats() {}
+ // no public constructor
+ /* package */ DatabaseStats() {}
}
diff --git a/db/java/src/com/sleepycat/db/DatabaseType.java b/db/java/src/com/sleepycat/db/DatabaseType.java
index 2166b43a8..4af7590e7 100644
--- a/db/java/src/com/sleepycat/db/DatabaseType.java
+++ b/db/java/src/com/sleepycat/db/DatabaseType.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: DatabaseType.java,v 12.3 2006/08/24 14:46:07 bostic Exp $
+ * $Id: DatabaseType.java,v 12.5 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/DbRecoveryInit.java b/db/java/src/com/sleepycat/db/DbRecoveryInit.java
deleted file mode 100644
index b32eebcaa..000000000
--- a/db/java/src/com/sleepycat/db/DbRecoveryInit.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997, 1998, 1999, 2000
- * Sleepycat Software. All rights reserved.
- *
- * $Id: DbRecoveryInit.java,v 11.3 2000/02/14 02:59:56 bostic Exp $
- */
-
-package com.sleepycat.db;
-
-/**
- *
- * @author Donald D. Anderson
- */
-public interface DbRecoveryInit
-{
- // methods
- //
- public abstract void recovery_init(DbEnv dbenv);
-}
-
-// end of DbRecoveryInit.java
diff --git a/db/java/src/com/sleepycat/db/DbTxnRecover.java b/db/java/src/com/sleepycat/db/DbTxnRecover.java
deleted file mode 100644
index ee4793594..000000000
--- a/db/java/src/com/sleepycat/db/DbTxnRecover.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2000
- * Sleepycat Software. All rights reserved.
- *
- * $Id: DbTxnRecover.java,v 11.1 2000/06/29 18:08:17 dda Exp $
- */
-
-package com.sleepycat.db;
-
-/*
- * This interface is used by DbEnv.set_tx_recover()
- *
- */
-public interface DbTxnRecover
-{
- // The value of recops is one of the Db.DB_TXN_* constants
- public abstract int tx_recover(DbEnv env, Dbt dbt, DbLsn lsn, int recops);
-}
-
-// end of DbBtreeCompare.java
diff --git a/db/java/src/com/sleepycat/db/DeadlockException.java b/db/java/src/com/sleepycat/db/DeadlockException.java
index 6d341d52e..acde2e202 100644
--- a/db/java/src/com/sleepycat/db/DeadlockException.java
+++ b/db/java/src/com/sleepycat/db/DeadlockException.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1999-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1999,2007 Oracle. All rights reserved.
*
- * $Id: DeadlockException.java,v 12.4 2006/08/24 14:46:07 bostic Exp $
+ * $Id: DeadlockException.java,v 12.6 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/Environment.java b/db/java/src/com/sleepycat/db/Environment.java
index b79e30f84..4bc93e5cd 100644
--- a/db/java/src/com/sleepycat/db/Environment.java
+++ b/db/java/src/com/sleepycat/db/Environment.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: Environment.java,v 12.16 2006/09/08 20:32:14 bostic Exp $
+ * $Id: Environment.java,v 12.22 2007/07/06 00:22:54 mjc Exp $
*/
package com.sleepycat.db;
@@ -198,9 +197,9 @@ public class Environment {
master ? DbConstants.DB_REP_MASTER : DbConstants.DB_REP_CLIENT);
}
- public int electReplicationMaster(int nsites, int nvotes)
+ public void electReplicationMaster(int nsites, int nvotes)
throws DatabaseException {
- return dbenv.rep_elect(nsites, nvotes, 0 /* unused flags */);
+ dbenv.rep_elect(nsites, nvotes, 0 /* unused flags */);
}
public void flushReplication()
@@ -213,16 +212,13 @@ public class Environment {
DatabaseEntry rec,
int envid)
throws DatabaseException {
-
- final DbEnv.RepProcessMessage wrappedID = new DbEnv.RepProcessMessage();
- wrappedID.envid = envid;
// Create a new entry so that rec isn't overwritten
final DatabaseEntry cdata =
new DatabaseEntry(rec.getData(), rec.getOffset(), rec.getSize());
final LogSequenceNumber lsn = new LogSequenceNumber();
final int ret =
- dbenv.rep_process_message(control, cdata, wrappedID, lsn);
- return ReplicationStatus.getStatus(ret, cdata, wrappedID.envid, lsn);
+ dbenv.rep_process_message(control, cdata, envid, lsn);
+ return ReplicationStatus.getStatus(ret, cdata, envid, lsn);
}
public void setReplicationConfig(ReplicationConfig config, boolean onoff)
@@ -278,17 +274,19 @@ public class Environment {
return dbenv.log_stat(StatsConfig.checkNull(config).getFlags());
}
- public ReplicationHostAddress[] getReplicationSiteList()
- throws DatabaseException {
- return dbenv.repmgr_site_list();
- }
-
public ReplicationStats getReplicationStats(StatsConfig config)
throws DatabaseException {
return dbenv.rep_stat(StatsConfig.checkNull(config).getFlags());
}
+ public ReplicationManagerStats getReplicationManagerStats(
+ StatsConfig config)
+ throws DatabaseException {
+
+ return dbenv.repmgr_stat(StatsConfig.checkNull(config).getFlags());
+ }
+
public LockStats getLockStats(StatsConfig config)
throws DatabaseException {
diff --git a/db/java/src/com/sleepycat/db/EnvironmentConfig.java b/db/java/src/com/sleepycat/db/EnvironmentConfig.java
index ecaff061d..a612af531 100644
--- a/db/java/src/com/sleepycat/db/EnvironmentConfig.java
+++ b/db/java/src/com/sleepycat/db/EnvironmentConfig.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: EnvironmentConfig.java,v 12.21 2006/09/08 20:32:14 bostic Exp $
+ * $Id: EnvironmentConfig.java,v 12.29 2007/07/06 00:22:54 mjc Exp $
*/
package com.sleepycat.db;
@@ -29,6 +28,7 @@ public class EnvironmentConfig implements Cloneable {
private int mode = 0644;
private int cacheCount = 0;
private long cacheSize = 0L;
+ private long cacheMax = 0L;
private java.util.Vector dataDirs = new java.util.Vector();
private int envid = 0;
private String errorPrefix = null;
@@ -47,15 +47,16 @@ public class EnvironmentConfig implements Cloneable {
private int maxMutexes = 0;
private int maxOpenFiles = 0;
private int maxWrite = 0;
- private int maxWriteSleep = 0;
+ private long maxWriteSleep = 0L;
private int mutexAlignment = 0;
private int mutexIncrement = 0;
private int mutexTestAndSetSpins = 0;
private long mmapSize = 0L;
private String password = null;
+ private int replicationLease = 0;
private long replicationLimit = 0L;
private int replicationNSites = 0;
- private int replicationPriority = 0;
+ private int replicationPriority = DbConstants.DB_REP_DEFAULT_PRIORITY;
private int replicationRequestMin = 0;
private int replicationRequestMax = 0;
private String rpcServer = null;
@@ -106,6 +107,7 @@ public class EnvironmentConfig implements Cloneable {
private boolean noPanic = false;
private boolean overwrite = false;
private boolean txnNoSync = false;
+ private boolean txnNoWait = false;
private boolean txnNotDurable = false;
private boolean txnSnapshot = false;
private boolean txnWriteNoSync = false;
@@ -113,6 +115,8 @@ public class EnvironmentConfig implements Cloneable {
/* Verbose Flags */
private boolean verboseDeadlock = false;
+ private boolean verboseFileops = false;
+ private boolean verboseFileopsAll = false;
private boolean verboseRecovery = false;
private boolean verboseRegister = false;
private boolean verboseReplication = false;
@@ -146,6 +150,14 @@ public class EnvironmentConfig implements Cloneable {
return cacheSize;
}
+ public void setCacheMax(final long cacheMax) {
+ this.cacheMax = cacheMax;
+ }
+
+ public long getCacheMax() {
+ return cacheMax;
+ }
+
public void setCacheCount(final int cacheCount) {
this.cacheCount = cacheCount;
}
@@ -166,7 +178,7 @@ public class EnvironmentConfig implements Cloneable {
this.dataDirs.add(dataDir);
}
- /* @deprecated */
+ /** @deprecated replaced by {@link #addDataDir(java.io.File)} */
public void addDataDir(final String dataDir) {
this.addDataDir(new java.io.File(dataDir));
}
@@ -469,7 +481,7 @@ public class EnvironmentConfig implements Cloneable {
return maxOpenFiles;
}
- public void setMaxWrite(final int maxWrite, final int maxWriteSleep) {
+ public void setMaxWrite(final int maxWrite, final long maxWriteSleep) {
this.maxWrite = maxWrite;
this.maxWriteSleep = maxWriteSleep;
}
@@ -478,7 +490,7 @@ public class EnvironmentConfig implements Cloneable {
return maxWrite;
}
- public int getMaxWriteSleep() {
+ public long getMaxWriteSleep() {
return maxWriteSleep;
}
@@ -570,6 +582,14 @@ public class EnvironmentConfig implements Cloneable {
return isPrivate;
}
+ public void setReplicationLease(final int replicationLease) {
+ this.replicationLease = replicationLease;
+ }
+
+ public int getReplicationLease() {
+ return replicationLease;
+ }
+
public void setReplicationLimit(final long replicationLimit) {
this.replicationLimit = replicationLimit;
}
@@ -660,7 +680,7 @@ public class EnvironmentConfig implements Cloneable {
this.temporaryDirectory = temporaryDirectory;
}
- /* @deprecated */
+ /** @deprecated replaced by {@link #setTemporaryDirectory(java.io.File)} */
public void setTemporaryDirectory(final String temporaryDirectory) {
this.setTemporaryDirectory(new java.io.File(temporaryDirectory));
}
@@ -717,12 +737,12 @@ public class EnvironmentConfig implements Cloneable {
return replicationPriority;
}
- /* @deprecated Renamed setMutexTestAndSetSpins */
+ /** @deprecated renamed {@link #setMutexTestAndSetSpins} */
public void setTestAndSetSpins(final int mutexTestAndSetSpins) {
setMutexTestAndSetSpins(mutexTestAndSetSpins);
}
- /* @deprecated Renamed getMutexTestAndSetSpins */
+ /** @deprecated renamed {@link #getMutexTestAndSetSpins} */
public int getTestAndSetSpins() {
return getMutexTestAndSetSpins();
}
@@ -751,6 +771,14 @@ public class EnvironmentConfig implements Cloneable {
return txnNoSync;
}
+ public void setTxnNoWait(final boolean txnNoWait) {
+ this.txnNoWait = txnNoWait;
+ }
+
+ public boolean getTxnNoWait() {
+ return txnNoWait;
+ }
+
public void setTxnNotDurable(final boolean txnNotDurable) {
this.txnNotDurable = txnNotDurable;
}
@@ -815,42 +843,105 @@ public class EnvironmentConfig implements Cloneable {
return useEnvironmentRoot;
}
+ public void setVerbose(final VerboseConfig flag, boolean enable) {
+ int iflag = flag.getInternalFlag();
+ switch (iflag) {
+ case DbConstants.DB_VERB_DEADLOCK:
+ verboseDeadlock = enable;
+ break;
+ case DbConstants.DB_VERB_FILEOPS:
+ verboseFileops = enable;
+ break;
+ case DbConstants.DB_VERB_FILEOPS_ALL:
+ verboseFileopsAll = enable;
+ break;
+ case DbConstants.DB_VERB_RECOVERY:
+ verboseRecovery = enable;
+ break;
+ case DbConstants.DB_VERB_REGISTER:
+ verboseRegister = enable;
+ break;
+ case DbConstants.DB_VERB_REPLICATION:
+ verboseReplication = enable;
+ break;
+ case DbConstants.DB_VERB_WAITSFOR:
+ verboseWaitsFor = enable;
+ break;
+ default:
+ throw new IllegalArgumentException(
+ "Unknown verbose flag: " + DbEnv.strerror(iflag));
+ }
+ }
+
+ public boolean getVerbose(final VerboseConfig flag) {
+ int iflag = flag.getInternalFlag();
+ switch (iflag) {
+ case DbConstants.DB_VERB_DEADLOCK:
+ return verboseDeadlock;
+ case DbConstants.DB_VERB_FILEOPS:
+ return verboseFileops;
+ case DbConstants.DB_VERB_FILEOPS_ALL:
+ return verboseFileopsAll;
+ case DbConstants.DB_VERB_RECOVERY:
+ return verboseRecovery;
+ case DbConstants.DB_VERB_REGISTER:
+ return verboseRegister;
+ case DbConstants.DB_VERB_REPLICATION:
+ return verboseReplication;
+ case DbConstants.DB_VERB_WAITSFOR:
+ return verboseWaitsFor;
+ default:
+ throw new IllegalArgumentException(
+ "Unknown verbose flag: " + DbEnv.strerror(iflag));
+ }
+ }
+
+ /** @deprecated */
public void setVerboseDeadlock(final boolean verboseDeadlock) {
this.verboseDeadlock = verboseDeadlock;
}
+ /** @deprecated */
public boolean getVerboseDeadlock() {
return verboseDeadlock;
}
+ /** @deprecated */
public void setVerboseRecovery(final boolean verboseRecovery) {
this.verboseRecovery = verboseRecovery;
}
+ /** @deprecated */
public boolean getVerboseRecovery() {
return verboseRecovery;
}
+ /** @deprecated */
public void setVerboseRegister(final boolean verboseRegister) {
this.verboseRegister = verboseRegister;
}
+ /** @deprecated */
public boolean getVerboseRegister() {
return verboseRegister;
}
+ /** @deprecated */
public void setVerboseReplication(final boolean verboseReplication) {
this.verboseReplication = verboseReplication;
}
+ /** @deprecated */
public boolean getVerboseReplication() {
return verboseReplication;
}
+ /** @deprecated */
public void setVerboseWaitsFor(final boolean verboseWaitsFor) {
this.verboseWaitsFor = verboseWaitsFor;
}
+ /** @deprecated */
public boolean getVerboseWaitsFor() {
return verboseWaitsFor;
}
@@ -951,7 +1042,7 @@ public class EnvironmentConfig implements Cloneable {
rpcClientTimeout != oldConfig.rpcClientTimeout ||
rpcServerTimeout != oldConfig.rpcServerTimeout)
dbenv.set_rpc_server(rpcServer,
- rpcClientTimeout, rpcServerTimeout, 0);
+ rpcClientTimeout, rpcServerTimeout, 0);
// We always set DB_TIME_NOTGRANTED in the Java API, because
// LockNotGrantedException extends DeadlockException, so there's no
@@ -1029,6 +1120,11 @@ public class EnvironmentConfig implements Cloneable {
if (!txnNoSync && oldConfig.txnNoSync)
offFlags |= DbConstants.DB_TXN_NOSYNC;
+ if (txnNoWait && !oldConfig.txnNoWait)
+ onFlags |= DbConstants.DB_TXN_NOWAIT;
+ if (!txnNoWait && oldConfig.txnNoWait)
+ offFlags |= DbConstants.DB_TXN_NOWAIT;
+
if (txnNotDurable && !oldConfig.txnNotDurable)
onFlags |= DbConstants.DB_TXN_NOT_DURABLE;
if (!txnNotDurable && oldConfig.txnNotDurable)
@@ -1060,6 +1156,16 @@ public class EnvironmentConfig implements Cloneable {
if (!verboseDeadlock && oldConfig.verboseDeadlock)
dbenv.set_verbose(DbConstants.DB_VERB_DEADLOCK, false);
+ if (verboseFileops && !oldConfig.verboseFileops)
+ dbenv.set_verbose(DbConstants.DB_VERB_FILEOPS, true);
+ if (!verboseFileops && oldConfig.verboseFileops)
+ dbenv.set_verbose(DbConstants.DB_VERB_FILEOPS, false);
+
+ if (verboseFileopsAll && !oldConfig.verboseFileopsAll)
+ dbenv.set_verbose(DbConstants.DB_VERB_FILEOPS_ALL, true);
+ if (!verboseFileopsAll && oldConfig.verboseFileopsAll)
+ dbenv.set_verbose(DbConstants.DB_VERB_FILEOPS_ALL, false);
+
if (verboseRecovery && !oldConfig.verboseRecovery)
dbenv.set_verbose(DbConstants.DB_VERB_RECOVERY, true);
if (!verboseRecovery && oldConfig.verboseRecovery)
@@ -1098,6 +1204,8 @@ public class EnvironmentConfig implements Cloneable {
if (cacheSize != oldConfig.cacheSize ||
cacheCount != oldConfig.cacheCount)
dbenv.set_cachesize(cacheSize, cacheCount);
+ if (cacheMax != oldConfig.cacheMax)
+ dbenv.set_cache_max(cacheMax);
for (final java.util.Enumeration e = dataDirs.elements();
e.hasMoreElements();) {
final java.io.File dir = (java.io.File)e.nextElement();
@@ -1136,6 +1244,8 @@ public class EnvironmentConfig implements Cloneable {
dbenv.set_mp_mmapsize(mmapSize);
if (password != null)
dbenv.set_encrypt(password, DbConstants.DB_ENCRYPT_AES);
+ if (replicationLease != oldConfig.replicationLease)
+ dbenv.rep_set_lease(replicationLease, 0);
if (replicationLimit != oldConfig.replicationLimit)
dbenv.rep_set_limit(replicationLimit);
if (replicationRequestMin != oldConfig.replicationRequestMin ||
@@ -1225,6 +1335,7 @@ public class EnvironmentConfig implements Cloneable {
noPanic = ((envFlags & DbConstants.DB_NOPANIC) != 0);
overwrite = ((envFlags & DbConstants.DB_OVERWRITE) != 0);
txnNoSync = ((envFlags & DbConstants.DB_TXN_NOSYNC) != 0);
+ txnNoWait = ((envFlags & DbConstants.DB_TXN_NOWAIT) != 0);
txnNotDurable = ((envFlags & DbConstants.DB_TXN_NOT_DURABLE) != 0);
txnSnapshot = ((envFlags & DbConstants.DB_TXN_SNAPSHOT) != 0);
txnWriteNoSync = ((envFlags & DbConstants.DB_TXN_WRITE_NOSYNC) != 0);
@@ -1232,6 +1343,8 @@ public class EnvironmentConfig implements Cloneable {
/* Verbose flags */
verboseDeadlock = dbenv.get_verbose(DbConstants.DB_VERB_DEADLOCK);
+ verboseFileops = dbenv.get_verbose(DbConstants.DB_VERB_FILEOPS);
+ verboseFileopsAll = dbenv.get_verbose(DbConstants.DB_VERB_FILEOPS_ALL);
verboseRecovery = dbenv.get_verbose(DbConstants.DB_VERB_RECOVERY);
verboseRegister = dbenv.get_verbose(DbConstants.DB_VERB_REGISTER);
verboseReplication = dbenv.get_verbose(DbConstants.DB_VERB_REPLICATION);
@@ -1249,6 +1362,7 @@ public class EnvironmentConfig implements Cloneable {
/* Other settings */
if (initializeCache) {
cacheSize = dbenv.get_cachesize();
+ cacheMax = dbenv.get_cache_max();
cacheCount = dbenv.get_cachesize_ncache();
mmapSize = dbenv.get_mp_mmapsize();
maxOpenFiles = dbenv.get_mp_max_openfd();
@@ -1305,6 +1419,8 @@ public class EnvironmentConfig implements Cloneable {
if (initializeReplication) {
replicationLimit = dbenv.rep_get_limit();
// XXX: no way to find out replicationRequest{Min,Max}
+ repmgrRemoteSites = new java.util.Vector(
+ java.util.Arrays.asList(dbenv.repmgr_site_list()));
} else {
replicationLimit = 0L;
replicationRequestMin = 0;
diff --git a/db/java/src/com/sleepycat/db/ErrorHandler.java b/db/java/src/com/sleepycat/db/ErrorHandler.java
index bdec4c7d2..01fc63efb 100644
--- a/db/java/src/com/sleepycat/db/ErrorHandler.java
+++ b/db/java/src/com/sleepycat/db/ErrorHandler.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: ErrorHandler.java,v 12.3 2006/08/24 14:46:08 bostic Exp $
+ * $Id: ErrorHandler.java,v 12.5 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/EventHandler.java b/db/java/src/com/sleepycat/db/EventHandler.java
index b92d9f89e..b45bea4cb 100644
--- a/db/java/src/com/sleepycat/db/EventHandler.java
+++ b/db/java/src/com/sleepycat/db/EventHandler.java
@@ -1,14 +1,27 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: EventHandler.java,v 1.2 2006/08/24 14:46:08 bostic Exp $
+ * $Id: EventHandler.java,v 1.7 2007/07/05 12:26:17 alexg Exp $
*/
package com.sleepycat.db;
-import com.sleepycat.db.EventType;
+/*
+ * An interface class with prototype definitions of all event functions that
+ * can be called via the Berkeley DB event callback mechanism.
+ * A user can choose to implement the EventHandler class, and implement
+ * handlers for all of the event types. Or they could extend the
+ * EventHandlerAdapter class, and implement only those events relevant to
+ * their application.
+ */
public interface EventHandler {
- int handleEvent(EventType event);
+ public void handlePanicEvent();
+ public void handleRepClientEvent();
+ public void handleRepElectedEvent();
+ public void handleRepMasterEvent();
+ public void handleRepNewMasterEvent(int envId);
+ public void handleRepPermFailedEvent();
+ public void handleRepStartupDoneEvent();
+ public void handleWriteFailedEvent(int errorCode);
}
diff --git a/db/java/src/com/sleepycat/db/EventHandlerAdapter.java b/db/java/src/com/sleepycat/db/EventHandlerAdapter.java
new file mode 100644
index 000000000..ae9c15797
--- /dev/null
+++ b/db/java/src/com/sleepycat/db/EventHandlerAdapter.java
@@ -0,0 +1,26 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
+ *
+ * $Id: EventHandlerAdapter.java,v 1.4 2007/07/06 00:22:54 mjc Exp $
+ */
+package com.sleepycat.db;
+import com.sleepycat.db.EventHandler;
+
+/*
+ * An abstract implementation of the EventHandler class can be extended by
+ * the application to implement customized handling for any event generated
+ * by Berkeley DB.
+ */
+
+public abstract class EventHandlerAdapter implements EventHandler {
+ public void handlePanicEvent() {}
+ public void handleRepClientEvent() {}
+ public void handleRepElectedEvent() {}
+ public void handleRepMasterEvent() {}
+ public void handleRepNewMasterEvent(int envId) {}
+ public void handleRepPermFailedEvent() {}
+ public void handleRepStartupDoneEvent() {}
+ public void handleWriteFailedEvent(int errorCode) {}
+}
diff --git a/db/java/src/com/sleepycat/db/EventType.java b/db/java/src/com/sleepycat/db/EventType.java
deleted file mode 100644
index 98e479629..000000000
--- a/db/java/src/com/sleepycat/db/EventType.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
- *
- * $Id: EventType.java,v 1.3 2006/09/10 01:40:07 alexg Exp $
- */
-
-package com.sleepycat.db;
-
-import com.sleepycat.db.internal.DbConstants;
-
-public final class EventType {
-
- public static final EventType PANIC =
- new EventType("PANIC", DbConstants.DB_EVENT_PANIC);
-
- public static final EventType REP_CLIENT =
- new EventType("REP_CLIENT", DbConstants.DB_EVENT_REP_CLIENT);
-
- public static final EventType REP_MASTER =
- new EventType("REP_MASTER", DbConstants.DB_EVENT_REP_MASTER);
-
- public static final EventType REP_NEW_MASTER =
- new EventType("REP_NEW_MASTER", DbConstants.DB_EVENT_REP_NEWMASTER);
-
- public static final EventType REP_STARTUPDONE =
- new EventType("REP_STARTUPDONE", DbConstants.DB_EVENT_REP_STARTUPDONE);
-
- public static final EventType WRITE_FAILED =
- new EventType("WRITE_FAILED", DbConstants.DB_EVENT_WRITE_FAILED);
-
- /* package */
- public static EventType fromInt(int type) {
- switch(type) {
- case DbConstants.DB_EVENT_PANIC:
- return PANIC;
- case DbConstants.DB_EVENT_REP_CLIENT:
- return REP_CLIENT;
- case DbConstants.DB_EVENT_REP_MASTER:
- return REP_MASTER;
- case DbConstants.DB_EVENT_REP_NEWMASTER:
- return REP_NEW_MASTER;
- default:
- throw new IllegalArgumentException(
- "Unknown event type: " + type);
- }
- }
-
- private String statusName;
- private int id;
-
- private EventType(final String statusName, final int id) {
- this.statusName = statusName;
- this.id = id;
- }
-
- /* package */
- int getId() {
- return id;
- }
-
- public String toString() {
- return "EventType." + statusName;
- }
-}
-
diff --git a/db/java/src/com/sleepycat/db/FeedbackHandler.java b/db/java/src/com/sleepycat/db/FeedbackHandler.java
index 4a733965c..95b309b99 100644
--- a/db/java/src/com/sleepycat/db/FeedbackHandler.java
+++ b/db/java/src/com/sleepycat/db/FeedbackHandler.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: FeedbackHandler.java,v 12.3 2006/08/24 14:46:08 bostic Exp $
+ * $Id: FeedbackHandler.java,v 12.5 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/HashStats.java b/db/java/src/com/sleepycat/db/HashStats.java
index d56dfb488..0eb92b00c 100644
--- a/db/java/src/com/sleepycat/db/HashStats.java
+++ b/db/java/src/com/sleepycat/db/HashStats.java
@@ -3,8 +3,7 @@
*
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*/
package com.sleepycat.db;
@@ -38,6 +37,11 @@ public class HashStats extends DatabaseStats {
return hash_ndata;
}
+ private int hash_pagecnt;
+ public int getPageCount() {
+ return hash_pagecnt;
+ }
+
private int hash_pagesize;
public int getPageSize() {
return hash_pagesize;
@@ -100,6 +104,7 @@ public class HashStats extends DatabaseStats {
+ "\n hash_metaflags=" + hash_metaflags
+ "\n hash_nkeys=" + hash_nkeys
+ "\n hash_ndata=" + hash_ndata
+ + "\n hash_pagecnt=" + hash_pagecnt
+ "\n hash_pagesize=" + hash_pagesize
+ "\n hash_ffactor=" + hash_ffactor
+ "\n hash_buckets=" + hash_buckets
diff --git a/db/java/src/com/sleepycat/db/Hasher.java b/db/java/src/com/sleepycat/db/Hasher.java
index cc3d440ad..0516e1f5b 100644
--- a/db/java/src/com/sleepycat/db/Hasher.java
+++ b/db/java/src/com/sleepycat/db/Hasher.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: Hasher.java,v 12.3 2006/08/24 14:46:08 bostic Exp $
+ * $Id: Hasher.java,v 12.5 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/JoinConfig.java b/db/java/src/com/sleepycat/db/JoinConfig.java
index c05c66867..c74f156db 100644
--- a/db/java/src/com/sleepycat/db/JoinConfig.java
+++ b/db/java/src/com/sleepycat/db/JoinConfig.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: JoinConfig.java,v 12.3 2006/08/24 14:46:08 bostic Exp $
+ * $Id: JoinConfig.java,v 12.5 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/JoinCursor.java b/db/java/src/com/sleepycat/db/JoinCursor.java
index 8cc90a57d..e7a7d1f4a 100644
--- a/db/java/src/com/sleepycat/db/JoinCursor.java
+++ b/db/java/src/com/sleepycat/db/JoinCursor.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: JoinCursor.java,v 12.3 2006/08/24 14:46:08 bostic Exp $
+ * $Id: JoinCursor.java,v 12.5 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/KeyRange.java b/db/java/src/com/sleepycat/db/KeyRange.java
index feb37b5be..036038786 100644
--- a/db/java/src/com/sleepycat/db/KeyRange.java
+++ b/db/java/src/com/sleepycat/db/KeyRange.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: KeyRange.java,v 12.3 2006/08/24 14:46:08 bostic Exp $
+ * $Id: KeyRange.java,v 12.5 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/Lock.java b/db/java/src/com/sleepycat/db/Lock.java
index 9f4a8f7d6..eb66a323c 100644
--- a/db/java/src/com/sleepycat/db/Lock.java
+++ b/db/java/src/com/sleepycat/db/Lock.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2001-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2001,2007 Oracle. All rights reserved.
*
- * $Id: Lock.java,v 12.4 2006/08/24 14:46:08 bostic Exp $
+ * $Id: Lock.java,v 12.6 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/LockDetectMode.java b/db/java/src/com/sleepycat/db/LockDetectMode.java
index 2e20e6cf9..5f7f0139c 100644
--- a/db/java/src/com/sleepycat/db/LockDetectMode.java
+++ b/db/java/src/com/sleepycat/db/LockDetectMode.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: LockDetectMode.java,v 12.3 2006/08/24 14:46:08 bostic Exp $
+ * $Id: LockDetectMode.java,v 12.5 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/LockMode.java b/db/java/src/com/sleepycat/db/LockMode.java
index 7daaefc94..02ca29499 100644
--- a/db/java/src/com/sleepycat/db/LockMode.java
+++ b/db/java/src/com/sleepycat/db/LockMode.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: LockMode.java,v 12.4 2006/08/24 14:46:08 bostic Exp $
+ * $Id: LockMode.java,v 12.6 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/LockNotGrantedException.java b/db/java/src/com/sleepycat/db/LockNotGrantedException.java
index 91d6822a1..2003acfb3 100644
--- a/db/java/src/com/sleepycat/db/LockNotGrantedException.java
+++ b/db/java/src/com/sleepycat/db/LockNotGrantedException.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: LockNotGrantedException.java,v 12.4 2006/08/24 14:46:08 bostic Exp $
+ * $Id: LockNotGrantedException.java,v 12.6 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/LockOperation.java b/db/java/src/com/sleepycat/db/LockOperation.java
index e6b181356..05085552a 100644
--- a/db/java/src/com/sleepycat/db/LockOperation.java
+++ b/db/java/src/com/sleepycat/db/LockOperation.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: LockOperation.java,v 12.3 2006/08/24 14:46:08 bostic Exp $
+ * $Id: LockOperation.java,v 12.5 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/LockRequest.java b/db/java/src/com/sleepycat/db/LockRequest.java
index 41525f1ef..ee8421054 100644
--- a/db/java/src/com/sleepycat/db/LockRequest.java
+++ b/db/java/src/com/sleepycat/db/LockRequest.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: LockRequest.java,v 12.3 2006/08/24 14:46:08 bostic Exp $
+ * $Id: LockRequest.java,v 12.5 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/LockRequestMode.java b/db/java/src/com/sleepycat/db/LockRequestMode.java
index 4af12d908..3aac4fd48 100644
--- a/db/java/src/com/sleepycat/db/LockRequestMode.java
+++ b/db/java/src/com/sleepycat/db/LockRequestMode.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: LockRequestMode.java,v 12.3 2006/08/24 14:46:08 bostic Exp $
+ * $Id: LockRequestMode.java,v 12.5 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/LockStats.java b/db/java/src/com/sleepycat/db/LockStats.java
index f22c6c45c..bbc2379d6 100644
--- a/db/java/src/com/sleepycat/db/LockStats.java
+++ b/db/java/src/com/sleepycat/db/LockStats.java
@@ -3,8 +3,7 @@
*
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*/
package com.sleepycat.db;
@@ -43,6 +42,11 @@ public class LockStats {
return st_nmodes;
}
+ private int st_nlockers;
+ public int getNumLockers() {
+ return st_nlockers;
+ }
+
private int st_nlocks;
public int getNumLocks() {
return st_nlocks;
@@ -53,11 +57,6 @@ public class LockStats {
return st_maxnlocks;
}
- private int st_nlockers;
- public int getNumLockers() {
- return st_nlockers;
- }
-
private int st_maxnlockers;
public int getMaxNlockers() {
return st_maxnlockers;
@@ -128,6 +127,36 @@ public class LockStats {
return st_ntxntimeouts;
}
+ private int st_objs_wait;
+ public int getObjsWait() {
+ return st_objs_wait;
+ }
+
+ private int st_objs_nowait;
+ public int getObjsNowait() {
+ return st_objs_nowait;
+ }
+
+ private int st_lockers_wait;
+ public int getLockersWait() {
+ return st_lockers_wait;
+ }
+
+ private int st_lockers_nowait;
+ public int getLockersNowait() {
+ return st_lockers_nowait;
+ }
+
+ private int st_locks_wait;
+ public int getLocksWait() {
+ return st_locks_wait;
+ }
+
+ private int st_locks_nowait;
+ public int getLocksNowait() {
+ return st_locks_nowait;
+ }
+
private int st_region_wait;
public int getRegionWait() {
return st_region_wait;
@@ -138,6 +167,11 @@ public class LockStats {
return st_region_nowait;
}
+ private int st_hash_len;
+ public int getHashLen() {
+ return st_hash_len;
+ }
+
private int st_regsize;
public int getRegSize() {
return st_regsize;
@@ -151,9 +185,9 @@ public class LockStats {
+ "\n st_maxlockers=" + st_maxlockers
+ "\n st_maxobjects=" + st_maxobjects
+ "\n st_nmodes=" + st_nmodes
+ + "\n st_nlockers=" + st_nlockers
+ "\n st_nlocks=" + st_nlocks
+ "\n st_maxnlocks=" + st_maxnlocks
- + "\n st_nlockers=" + st_nlockers
+ "\n st_maxnlockers=" + st_maxnlockers
+ "\n st_nobjects=" + st_nobjects
+ "\n st_maxnobjects=" + st_maxnobjects
@@ -168,8 +202,15 @@ public class LockStats {
+ "\n st_nlocktimeouts=" + st_nlocktimeouts
+ "\n st_txntimeout=" + st_txntimeout
+ "\n st_ntxntimeouts=" + st_ntxntimeouts
+ + "\n st_objs_wait=" + st_objs_wait
+ + "\n st_objs_nowait=" + st_objs_nowait
+ + "\n st_lockers_wait=" + st_lockers_wait
+ + "\n st_lockers_nowait=" + st_lockers_nowait
+ + "\n st_locks_wait=" + st_locks_wait
+ + "\n st_locks_nowait=" + st_locks_nowait
+ "\n st_region_wait=" + st_region_wait
+ "\n st_region_nowait=" + st_region_nowait
+ + "\n st_hash_len=" + st_hash_len
+ "\n st_regsize=" + st_regsize
;
}
diff --git a/db/java/src/com/sleepycat/db/LogCursor.java b/db/java/src/com/sleepycat/db/LogCursor.java
index 0957c3a48..513b6a6fb 100644
--- a/db/java/src/com/sleepycat/db/LogCursor.java
+++ b/db/java/src/com/sleepycat/db/LogCursor.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2001-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2001,2007 Oracle. All rights reserved.
*
- * $Id: LogCursor.java,v 12.4 2006/08/24 14:46:08 bostic Exp $
+ * $Id: LogCursor.java,v 12.7 2007/06/28 14:23:36 mjc Exp $
*/
package com.sleepycat.db;
@@ -77,4 +76,10 @@ public class LogCursor {
return OperationStatus.fromInt(
logc.get(lsn, data, DbConstants.DB_SET));
}
+
+ public int version()
+ throws DatabaseException {
+
+ return logc.version(0);
+ }
}
diff --git a/db/java/src/com/sleepycat/db/LogRecordHandler.java b/db/java/src/com/sleepycat/db/LogRecordHandler.java
index f1c60a8eb..ebc38e2b9 100644
--- a/db/java/src/com/sleepycat/db/LogRecordHandler.java
+++ b/db/java/src/com/sleepycat/db/LogRecordHandler.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: LogRecordHandler.java,v 12.3 2006/08/24 14:46:08 bostic Exp $
+ * $Id: LogRecordHandler.java,v 12.5 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/LogSequenceNumber.java b/db/java/src/com/sleepycat/db/LogSequenceNumber.java
index fd49c894b..b810e9a77 100644
--- a/db/java/src/com/sleepycat/db/LogSequenceNumber.java
+++ b/db/java/src/com/sleepycat/db/LogSequenceNumber.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2001-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2001,2007 Oracle. All rights reserved.
*
- * $Id: LogSequenceNumber.java,v 12.3 2006/08/24 14:46:08 bostic Exp $
+ * $Id: LogSequenceNumber.java,v 12.5 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/LogStats.java b/db/java/src/com/sleepycat/db/LogStats.java
index 088d636a8..4f01bbe08 100644
--- a/db/java/src/com/sleepycat/db/LogStats.java
+++ b/db/java/src/com/sleepycat/db/LogStats.java
@@ -3,8 +3,7 @@
*
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*/
package com.sleepycat.db;
@@ -38,6 +37,16 @@ public class LogStats {
return st_lg_size;
}
+ private int st_wc_bytes;
+ public int getWcBytes() {
+ return st_wc_bytes;
+ }
+
+ private int st_wc_mbytes;
+ public int getWcMbytes() {
+ return st_wc_mbytes;
+ }
+
private int st_record;
public int getRecord() {
return st_record;
@@ -53,16 +62,6 @@ public class LogStats {
return st_w_mbytes;
}
- private int st_wc_bytes;
- public int getWcBytes() {
- return st_wc_bytes;
- }
-
- private int st_wc_mbytes;
- public int getWcMbytes() {
- return st_wc_mbytes;
- }
-
private int st_wcount;
public int getWCount() {
return st_wcount;
@@ -113,11 +112,6 @@ public class LogStats {
return st_disk_offset;
}
- private int st_regsize;
- public int getRegSize() {
- return st_regsize;
- }
-
private int st_maxcommitperflush;
public int getMaxCommitperflush() {
return st_maxcommitperflush;
@@ -128,6 +122,11 @@ public class LogStats {
return st_mincommitperflush;
}
+ private int st_regsize;
+ public int getRegSize() {
+ return st_regsize;
+ }
+
public String toString() {
return "LogStats:"
+ "\n st_magic=" + st_magic
@@ -135,11 +134,11 @@ public class LogStats {
+ "\n st_mode=" + st_mode
+ "\n st_lg_bsize=" + st_lg_bsize
+ "\n st_lg_size=" + st_lg_size
+ + "\n st_wc_bytes=" + st_wc_bytes
+ + "\n st_wc_mbytes=" + st_wc_mbytes
+ "\n st_record=" + st_record
+ "\n st_w_bytes=" + st_w_bytes
+ "\n st_w_mbytes=" + st_w_mbytes
- + "\n st_wc_bytes=" + st_wc_bytes
- + "\n st_wc_mbytes=" + st_wc_mbytes
+ "\n st_wcount=" + st_wcount
+ "\n st_wcount_fill=" + st_wcount_fill
+ "\n st_rcount=" + st_rcount
@@ -150,9 +149,9 @@ public class LogStats {
+ "\n st_cur_offset=" + st_cur_offset
+ "\n st_disk_file=" + st_disk_file
+ "\n st_disk_offset=" + st_disk_offset
- + "\n st_regsize=" + st_regsize
+ "\n st_maxcommitperflush=" + st_maxcommitperflush
+ "\n st_mincommitperflush=" + st_mincommitperflush
+ + "\n st_regsize=" + st_regsize
;
}
}
diff --git a/db/java/src/com/sleepycat/db/MemoryException.java b/db/java/src/com/sleepycat/db/MemoryException.java
index 34e9729d6..1b35331d1 100644
--- a/db/java/src/com/sleepycat/db/MemoryException.java
+++ b/db/java/src/com/sleepycat/db/MemoryException.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1999-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1999,2007 Oracle. All rights reserved.
*
- * $Id: MemoryException.java,v 12.4 2006/08/24 14:46:08 bostic Exp $
+ * $Id: MemoryException.java,v 12.6 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/MessageHandler.java b/db/java/src/com/sleepycat/db/MessageHandler.java
index 769f6cbaf..cc817fa8b 100644
--- a/db/java/src/com/sleepycat/db/MessageHandler.java
+++ b/db/java/src/com/sleepycat/db/MessageHandler.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: MessageHandler.java,v 12.3 2006/08/24 14:46:08 bostic Exp $
+ * $Id: MessageHandler.java,v 12.5 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/MultipleDataEntry.java b/db/java/src/com/sleepycat/db/MultipleDataEntry.java
index 7b2bb68c5..19dc23371 100644
--- a/db/java/src/com/sleepycat/db/MultipleDataEntry.java
+++ b/db/java/src/com/sleepycat/db/MultipleDataEntry.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: MultipleDataEntry.java,v 12.4 2006/08/24 14:46:08 bostic Exp $
+ * $Id: MultipleDataEntry.java,v 12.6 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/MultipleEntry.java b/db/java/src/com/sleepycat/db/MultipleEntry.java
index fbaaa090b..278f7f235 100644
--- a/db/java/src/com/sleepycat/db/MultipleEntry.java
+++ b/db/java/src/com/sleepycat/db/MultipleEntry.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: MultipleEntry.java,v 12.6 2006/08/24 14:46:08 bostic Exp $
+ * $Id: MultipleEntry.java,v 12.8 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/MultipleKeyDataEntry.java b/db/java/src/com/sleepycat/db/MultipleKeyDataEntry.java
index 4b1985467..a667226da 100644
--- a/db/java/src/com/sleepycat/db/MultipleKeyDataEntry.java
+++ b/db/java/src/com/sleepycat/db/MultipleKeyDataEntry.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: MultipleKeyDataEntry.java,v 12.4 2006/08/24 14:46:08 bostic Exp $
+ * $Id: MultipleKeyDataEntry.java,v 12.6 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/MultipleKeyNIODataEntry.java b/db/java/src/com/sleepycat/db/MultipleKeyNIODataEntry.java
index 53a61fff6..41c15670a 100644
--- a/db/java/src/com/sleepycat/db/MultipleKeyNIODataEntry.java
+++ b/db/java/src/com/sleepycat/db/MultipleKeyNIODataEntry.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: MultipleKeyNIODataEntry.java,v 1.3 2006/09/08 20:32:14 bostic Exp $
+ * $Id: MultipleKeyNIODataEntry.java,v 1.5 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/MultipleNIODataEntry.java b/db/java/src/com/sleepycat/db/MultipleNIODataEntry.java
index 2052b6b2f..dfd51f223 100644
--- a/db/java/src/com/sleepycat/db/MultipleNIODataEntry.java
+++ b/db/java/src/com/sleepycat/db/MultipleNIODataEntry.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: MultipleNIODataEntry.java,v 1.3 2006/09/08 20:32:14 bostic Exp $
+ * $Id: MultipleNIODataEntry.java,v 1.5 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/MultipleRecnoDataEntry.java b/db/java/src/com/sleepycat/db/MultipleRecnoDataEntry.java
index 51e5aaed7..d4f1170f4 100644
--- a/db/java/src/com/sleepycat/db/MultipleRecnoDataEntry.java
+++ b/db/java/src/com/sleepycat/db/MultipleRecnoDataEntry.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: MultipleRecnoDataEntry.java,v 12.4 2006/08/24 14:46:08 bostic Exp $
+ * $Id: MultipleRecnoDataEntry.java,v 12.6 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/MultipleRecnoNIODataEntry.java b/db/java/src/com/sleepycat/db/MultipleRecnoNIODataEntry.java
index 661e5b548..07be6d91a 100644
--- a/db/java/src/com/sleepycat/db/MultipleRecnoNIODataEntry.java
+++ b/db/java/src/com/sleepycat/db/MultipleRecnoNIODataEntry.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: MultipleRecnoNIODataEntry.java,v 1.3 2006/09/08 20:32:14 bostic Exp $
+ * $Id: MultipleRecnoNIODataEntry.java,v 1.5 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/MutexStats.java b/db/java/src/com/sleepycat/db/MutexStats.java
index 101a14604..b469ab67b 100644
--- a/db/java/src/com/sleepycat/db/MutexStats.java
+++ b/db/java/src/com/sleepycat/db/MutexStats.java
@@ -3,8 +3,7 @@
*
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/OperationStatus.java b/db/java/src/com/sleepycat/db/OperationStatus.java
index f819a91ee..d6e68d3be 100644
--- a/db/java/src/com/sleepycat/db/OperationStatus.java
+++ b/db/java/src/com/sleepycat/db/OperationStatus.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: OperationStatus.java,v 12.3 2006/08/24 14:46:08 bostic Exp $
+ * $Id: OperationStatus.java,v 12.5 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/PanicHandler.java b/db/java/src/com/sleepycat/db/PanicHandler.java
index ae21b27e3..57a4c8b42 100644
--- a/db/java/src/com/sleepycat/db/PanicHandler.java
+++ b/db/java/src/com/sleepycat/db/PanicHandler.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: PanicHandler.java,v 12.3 2006/08/24 14:46:08 bostic Exp $
+ * $Id: PanicHandler.java,v 12.5 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/PreparedTransaction.java b/db/java/src/com/sleepycat/db/PreparedTransaction.java
index e24837cd0..fc00d8001 100644
--- a/db/java/src/com/sleepycat/db/PreparedTransaction.java
+++ b/db/java/src/com/sleepycat/db/PreparedTransaction.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1999-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1999,2007 Oracle. All rights reserved.
*
- * $Id: PreparedTransaction.java,v 12.3 2006/08/24 14:46:08 bostic Exp $
+ * $Id: PreparedTransaction.java,v 12.5 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/QueueStats.java b/db/java/src/com/sleepycat/db/QueueStats.java
index 1510321e4..19d48b5a5 100644
--- a/db/java/src/com/sleepycat/db/QueueStats.java
+++ b/db/java/src/com/sleepycat/db/QueueStats.java
@@ -3,8 +3,7 @@
*
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/RecordNumberAppender.java b/db/java/src/com/sleepycat/db/RecordNumberAppender.java
index 4842882ec..9b7dad753 100644
--- a/db/java/src/com/sleepycat/db/RecordNumberAppender.java
+++ b/db/java/src/com/sleepycat/db/RecordNumberAppender.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: RecordNumberAppender.java,v 12.3 2006/08/24 14:46:08 bostic Exp $
+ * $Id: RecordNumberAppender.java,v 12.5 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/RecoveryOperation.java b/db/java/src/com/sleepycat/db/RecoveryOperation.java
index 9d5dae64c..d60a6c311 100644
--- a/db/java/src/com/sleepycat/db/RecoveryOperation.java
+++ b/db/java/src/com/sleepycat/db/RecoveryOperation.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: RecoveryOperation.java,v 12.3 2006/08/24 14:46:08 bostic Exp $
+ * $Id: RecoveryOperation.java,v 12.5 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/ReplicationConfig.java b/db/java/src/com/sleepycat/db/ReplicationConfig.java
index 76d45c42e..8a5e6c890 100644
--- a/db/java/src/com/sleepycat/db/ReplicationConfig.java
+++ b/db/java/src/com/sleepycat/db/ReplicationConfig.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: ReplicationConfig.java,v 12.5 2006/08/24 14:46:08 bostic Exp $
+ * $Id: ReplicationConfig.java,v 12.7 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/ReplicationDuplicateMasterException.java b/db/java/src/com/sleepycat/db/ReplicationDuplicateMasterException.java
index 62fe961ad..1f621cb09 100644
--- a/db/java/src/com/sleepycat/db/ReplicationDuplicateMasterException.java
+++ b/db/java/src/com/sleepycat/db/ReplicationDuplicateMasterException.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: ReplicationDuplicateMasterException.java,v 12.5 2006/08/24 14:46:08 bostic Exp $
+ * $Id: ReplicationDuplicateMasterException.java,v 12.7 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/ReplicationHandleDeadException.java b/db/java/src/com/sleepycat/db/ReplicationHandleDeadException.java
index c43b9fa3a..cc5b22455 100644
--- a/db/java/src/com/sleepycat/db/ReplicationHandleDeadException.java
+++ b/db/java/src/com/sleepycat/db/ReplicationHandleDeadException.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: ReplicationHandleDeadException.java,v 12.4 2006/08/24 14:46:08 bostic Exp $
+ * $Id: ReplicationHandleDeadException.java,v 12.6 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/ReplicationHoldElectionException.java b/db/java/src/com/sleepycat/db/ReplicationHoldElectionException.java
index cda36e013..ef7e903ff 100644
--- a/db/java/src/com/sleepycat/db/ReplicationHoldElectionException.java
+++ b/db/java/src/com/sleepycat/db/ReplicationHoldElectionException.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: ReplicationHoldElectionException.java,v 12.5 2006/08/24 14:46:08 bostic Exp $
+ * $Id: ReplicationHoldElectionException.java,v 12.7 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/ReplicationHostAddress.java b/db/java/src/com/sleepycat/db/ReplicationHostAddress.java
index 79624428e..857bd7591 100644
--- a/db/java/src/com/sleepycat/db/ReplicationHostAddress.java
+++ b/db/java/src/com/sleepycat/db/ReplicationHostAddress.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: ReplicationHostAddress.java,v 12.4 2006/09/07 21:24:29 alexg Exp $
+ * $Id: ReplicationHostAddress.java,v 12.7 2007/07/06 00:22:54 mjc Exp $
*/
package com.sleepycat.db;
@@ -29,7 +28,13 @@ public class ReplicationHostAddress
this(host, port, false, false);
}
- public ReplicationHostAddress(String host, int port, boolean isPeer, boolean isConnected)
+ public ReplicationHostAddress(String host, int port, boolean isPeer)
+ {
+ this(host, port, isPeer, false);
+ }
+
+ public ReplicationHostAddress(String host, int port,
+ boolean isPeer, boolean isConnected)
{
this.host = host;
this.port = port;
diff --git a/db/java/src/com/sleepycat/db/ReplicationJoinFailureException.java b/db/java/src/com/sleepycat/db/ReplicationJoinFailureException.java
index c4946ceac..d69d8af78 100644
--- a/db/java/src/com/sleepycat/db/ReplicationJoinFailureException.java
+++ b/db/java/src/com/sleepycat/db/ReplicationJoinFailureException.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: ReplicationJoinFailureException.java,v 12.4 2006/08/24 14:46:09 bostic Exp $
+ * $Id: ReplicationJoinFailureException.java,v 12.6 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/ReplicationLeaseExpiredException.java b/db/java/src/com/sleepycat/db/ReplicationLeaseExpiredException.java
new file mode 100644
index 000000000..2e6135387
--- /dev/null
+++ b/db/java/src/com/sleepycat/db/ReplicationLeaseExpiredException.java
@@ -0,0 +1,18 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
+ *
+ * $Id: ReplicationLeaseExpiredException.java,v 12.1 2007/06/28 14:23:36 mjc Exp $
+ */
+package com.sleepycat.db;
+
+import com.sleepycat.db.internal.DbEnv;
+
+public class ReplicationLeaseExpiredException extends DatabaseException {
+ /* package */ ReplicationLeaseExpiredException(final String s,
+ final int errno,
+ final DbEnv dbenv) {
+ super(s, errno, dbenv);
+ }
+}
diff --git a/db/java/src/com/sleepycat/db/ReplicationLeaseTimeoutException.java b/db/java/src/com/sleepycat/db/ReplicationLeaseTimeoutException.java
new file mode 100644
index 000000000..a2d9ad49f
--- /dev/null
+++ b/db/java/src/com/sleepycat/db/ReplicationLeaseTimeoutException.java
@@ -0,0 +1,18 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
+ *
+ * $Id: ReplicationLeaseTimeoutException.java,v 12.1 2007/06/28 14:23:36 mjc Exp $
+ */
+package com.sleepycat.db;
+
+import com.sleepycat.db.internal.DbEnv;
+
+public class ReplicationLeaseTimeoutException extends DatabaseException {
+ /* package */ ReplicationLeaseTimeoutException(final String s,
+ final int errno,
+ final DbEnv dbenv) {
+ super(s, errno, dbenv);
+ }
+}
diff --git a/db/java/src/com/sleepycat/db/ReplicationLockoutException.java b/db/java/src/com/sleepycat/db/ReplicationLockoutException.java
index ee8162479..24c13ff2c 100644
--- a/db/java/src/com/sleepycat/db/ReplicationLockoutException.java
+++ b/db/java/src/com/sleepycat/db/ReplicationLockoutException.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: ReplicationLockoutException.java,v 12.4 2006/08/24 14:46:09 bostic Exp $
+ * $Id: ReplicationLockoutException.java,v 12.6 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/ReplicationManagerAckPolicy.java b/db/java/src/com/sleepycat/db/ReplicationManagerAckPolicy.java
index 0b0894178..20d941868 100644
--- a/db/java/src/com/sleepycat/db/ReplicationManagerAckPolicy.java
+++ b/db/java/src/com/sleepycat/db/ReplicationManagerAckPolicy.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: ReplicationManagerAckPolicy.java,v 12.3 2006/08/24 14:46:09 bostic Exp $
+ * $Id: ReplicationManagerAckPolicy.java,v 12.5 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/ReplicationManagerStartPolicy.java b/db/java/src/com/sleepycat/db/ReplicationManagerStartPolicy.java
index c804b3251..0a9d1ceff 100644
--- a/db/java/src/com/sleepycat/db/ReplicationManagerStartPolicy.java
+++ b/db/java/src/com/sleepycat/db/ReplicationManagerStartPolicy.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: ReplicationManagerStartPolicy.java,v 12.4 2006/09/08 20:32:14 bostic Exp $
+ * $Id: ReplicationManagerStartPolicy.java,v 12.7 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
@@ -25,10 +24,6 @@ public final class ReplicationManagerStartPolicy {
new ReplicationManagerStartPolicy(
"REP_ELECTION", DbConstants.DB_REP_ELECTION);
- public static final ReplicationManagerStartPolicy REP_FULL_ELECTION =
- new ReplicationManagerStartPolicy(
- "REP_FULL_ELECTION", DbConstants.DB_REP_FULL_ELECTION);
-
/* package */
static ReplicationManagerStartPolicy fromInt(int type) {
switch(type) {
@@ -38,8 +33,6 @@ public final class ReplicationManagerStartPolicy {
return REP_CLIENT;
case DbConstants.DB_REP_ELECTION:
return REP_ELECTION;
- case DbConstants.DB_REP_FULL_ELECTION:
- return REP_FULL_ELECTION;
default:
throw new IllegalArgumentException(
"Unknown rep start policy: " + type);
diff --git a/db/java/src/com/sleepycat/db/ReplicationManagerStats.java b/db/java/src/com/sleepycat/db/ReplicationManagerStats.java
new file mode 100644
index 000000000..12d3d1057
--- /dev/null
+++ b/db/java/src/com/sleepycat/db/ReplicationManagerStats.java
@@ -0,0 +1,49 @@
+/*-
+ * DO NOT EDIT: automatically built by dist/s_java_stat.
+ *
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
+ */
+
+package com.sleepycat.db;
+
+public class ReplicationManagerStats {
+ // no public constructor
+ /* package */ ReplicationManagerStats() {}
+
+ private int st_perm_failed;
+ public int getPermFailed() {
+ return st_perm_failed;
+ }
+
+ private int st_msgs_queued;
+ public int getMsgsQueued() {
+ return st_msgs_queued;
+ }
+
+ private int st_msgs_dropped;
+ public int getMsgsDropped() {
+ return st_msgs_dropped;
+ }
+
+ private int st_connection_drop;
+ public int getConnectionDrop() {
+ return st_connection_drop;
+ }
+
+ private int st_connect_fail;
+ public int getConnectFail() {
+ return st_connect_fail;
+ }
+
+ public String toString() {
+ return "ReplicationManagerStats:"
+ + "\n st_perm_failed=" + st_perm_failed
+ + "\n st_msgs_queued=" + st_msgs_queued
+ + "\n st_msgs_dropped=" + st_msgs_dropped
+ + "\n st_connection_drop=" + st_connection_drop
+ + "\n st_connect_fail=" + st_connect_fail
+ ;
+ }
+}
diff --git a/db/java/src/com/sleepycat/db/ReplicationSiteUnavailableException.java b/db/java/src/com/sleepycat/db/ReplicationSiteUnavailableException.java
index f0e3dae2f..67f32980a 100644
--- a/db/java/src/com/sleepycat/db/ReplicationSiteUnavailableException.java
+++ b/db/java/src/com/sleepycat/db/ReplicationSiteUnavailableException.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: ReplicationSiteUnavailableException.java,v 12.5 2006/08/24 14:46:09 bostic Exp $
+ * $Id: ReplicationSiteUnavailableException.java,v 12.7 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/ReplicationStats.java b/db/java/src/com/sleepycat/db/ReplicationStats.java
index 0195ec3b6..0919c294e 100644
--- a/db/java/src/com/sleepycat/db/ReplicationStats.java
+++ b/db/java/src/com/sleepycat/db/ReplicationStats.java
@@ -3,8 +3,7 @@
*
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*/
package com.sleepycat.db;
@@ -13,6 +12,16 @@ public class ReplicationStats {
// no public constructor
/* package */ ReplicationStats() {}
+ private int st_log_queued;
+ public int getLogQueued() {
+ return st_log_queued;
+ }
+
+ private int st_startup_complete;
+ public int getStartupComplete() {
+ return st_startup_complete;
+ }
+
private int st_status;
public int getStatus() {
return st_status;
@@ -103,11 +112,6 @@ public class ReplicationStats {
return st_log_duplicated;
}
- private int st_log_queued;
- public int getLogQueued() {
- return st_log_queued;
- }
-
private int st_log_queued_max;
public int getLogQueuedMax() {
return st_log_queued_max;
@@ -198,16 +202,16 @@ public class ReplicationStats {
return st_pg_requested;
}
- private int st_startup_complete;
- public int getStartupComplete() {
- return st_startup_complete;
- }
-
private int st_txns_applied;
public int getTxnsApplied() {
return st_txns_applied;
}
+ private int st_startsync_delayed;
+ public int getStartSyncDelayed() {
+ return st_startsync_delayed;
+ }
+
private int st_elections;
public int getElections() {
return st_elections;
@@ -275,6 +279,8 @@ public class ReplicationStats {
public String toString() {
return "ReplicationStats:"
+ + "\n st_log_queued=" + st_log_queued
+ + "\n st_startup_complete=" + st_startup_complete
+ "\n st_status=" + st_status
+ "\n st_next_lsn=" + st_next_lsn
+ "\n st_waiting_lsn=" + st_waiting_lsn
@@ -293,7 +299,6 @@ public class ReplicationStats {
+ "\n st_gen=" + st_gen
+ "\n st_egen=" + st_egen
+ "\n st_log_duplicated=" + st_log_duplicated
- + "\n st_log_queued=" + st_log_queued
+ "\n st_log_queued_max=" + st_log_queued_max
+ "\n st_log_queued_total=" + st_log_queued_total
+ "\n st_log_records=" + st_log_records
@@ -312,8 +317,8 @@ public class ReplicationStats {
+ "\n st_pg_duplicated=" + st_pg_duplicated
+ "\n st_pg_records=" + st_pg_records
+ "\n st_pg_requested=" + st_pg_requested
- + "\n st_startup_complete=" + st_startup_complete
+ "\n st_txns_applied=" + st_txns_applied
+ + "\n st_startsync_delayed=" + st_startsync_delayed
+ "\n st_elections=" + st_elections
+ "\n st_elections_won=" + st_elections_won
+ "\n st_election_cur_winner=" + st_election_cur_winner
diff --git a/db/java/src/com/sleepycat/db/ReplicationStatus.java b/db/java/src/com/sleepycat/db/ReplicationStatus.java
index 76b9a26cc..6e26031da 100644
--- a/db/java/src/com/sleepycat/db/ReplicationStatus.java
+++ b/db/java/src/com/sleepycat/db/ReplicationStatus.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: ReplicationStatus.java,v 12.6 2006/08/24 14:46:09 bostic Exp $
+ * $Id: ReplicationStatus.java,v 12.9 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
@@ -52,10 +51,6 @@ public final class ReplicationStatus {
return errCode == DbConstants.DB_REP_ISPERM;
}
- public boolean isNewMaster() {
- return errCode == DbConstants.DB_REP_NEWMASTER;
- }
-
public boolean isNewSite() {
return errCode == DbConstants.DB_REP_NEWSITE;
}
@@ -92,8 +87,6 @@ public final class ReplicationStatus {
return IGNORE;
case DbConstants.DB_REP_ISPERM:
return new ReplicationStatus("ISPERM", errCode, cdata, envid, lsn);
- case DbConstants.DB_REP_NEWMASTER:
- return new ReplicationStatus("NEWMASTER", errCode, cdata, envid, lsn);
case DbConstants.DB_REP_NEWSITE:
return new ReplicationStatus("NEWSITE", errCode, cdata, envid, lsn);
case DbConstants.DB_REP_NOTPERM:
diff --git a/db/java/src/com/sleepycat/db/ReplicationTimeoutType.java b/db/java/src/com/sleepycat/db/ReplicationTimeoutType.java
index a01cdcb24..613144c8f 100644
--- a/db/java/src/com/sleepycat/db/ReplicationTimeoutType.java
+++ b/db/java/src/com/sleepycat/db/ReplicationTimeoutType.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: ReplicationTimeoutType.java,v 12.2 2006/08/24 14:46:09 bostic Exp $
+ * $Id: ReplicationTimeoutType.java,v 12.5 2007/06/28 14:23:36 mjc Exp $
*/
package com.sleepycat.db;
@@ -16,14 +15,20 @@ public final class ReplicationTimeoutType {
public static final ReplicationTimeoutType ACK_TIMEOUT =
new ReplicationTimeoutType("ACK_TIMEOUT", DbConstants.DB_REP_ACK_TIMEOUT);
+ public static final ReplicationTimeoutType CHECKPOINT_DELAY =
+ new ReplicationTimeoutType("CHECKPOINT_DELAY", DbConstants.DB_REP_CHECKPOINT_DELAY);
+
+ public static final ReplicationTimeoutType CONNECTION_RETRY =
+ new ReplicationTimeoutType("CONNECTION_RETRY", DbConstants.DB_REP_CONNECTION_RETRY);
+
public static final ReplicationTimeoutType ELECTION_TIMEOUT =
new ReplicationTimeoutType("ELECTION_TIMEOUT", DbConstants.DB_REP_ELECTION_TIMEOUT);
public static final ReplicationTimeoutType ELECTION_RETRY =
new ReplicationTimeoutType("ELECTION_RETRY", DbConstants.DB_REP_ELECTION_RETRY);
- public static final ReplicationTimeoutType CONNECTION_RETRY =
- new ReplicationTimeoutType("CONNECTION_RETRY", DbConstants.DB_REP_CONNECTION_RETRY);
+ public static final ReplicationTimeoutType FULL_ELECTION_TIMEOUT =
+ new ReplicationTimeoutType("FULL_ELECTION_TIMEOUT", DbConstants.DB_REP_FULL_ELECTION_TIMEOUT);
/* package */
static ReplicationTimeoutType fromInt(int type) {
diff --git a/db/java/src/com/sleepycat/db/ReplicationTransport.java b/db/java/src/com/sleepycat/db/ReplicationTransport.java
index 5d2792aef..c49761ee4 100644
--- a/db/java/src/com/sleepycat/db/ReplicationTransport.java
+++ b/db/java/src/com/sleepycat/db/ReplicationTransport.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2001-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2001,2007 Oracle. All rights reserved.
*
- * $Id: ReplicationTransport.java,v 12.4 2006/08/24 14:46:09 bostic Exp $
+ * $Id: ReplicationTransport.java,v 12.6 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/RunRecoveryException.java b/db/java/src/com/sleepycat/db/RunRecoveryException.java
index c389700b5..0ebd10afd 100644
--- a/db/java/src/com/sleepycat/db/RunRecoveryException.java
+++ b/db/java/src/com/sleepycat/db/RunRecoveryException.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: RunRecoveryException.java,v 12.4 2006/08/24 14:46:09 bostic Exp $
+ * $Id: RunRecoveryException.java,v 12.6 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/SecondaryConfig.java b/db/java/src/com/sleepycat/db/SecondaryConfig.java
index d2905beaf..8fe78c472 100644
--- a/db/java/src/com/sleepycat/db/SecondaryConfig.java
+++ b/db/java/src/com/sleepycat/db/SecondaryConfig.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: SecondaryConfig.java,v 12.4 2006/08/24 14:46:09 bostic Exp $
+ * $Id: SecondaryConfig.java,v 12.7 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
@@ -29,18 +28,11 @@ public class SecondaryConfig extends DatabaseConfig implements Cloneable {
private boolean allowPopulate;
private boolean immutableSecondaryKey;
private SecondaryKeyCreator keyCreator;
+ private SecondaryMultiKeyCreator multiKeyCreator;
public SecondaryConfig() {
}
- public void setKeyCreator(final SecondaryKeyCreator keyCreator) {
- this.keyCreator = keyCreator;
- }
-
- public SecondaryKeyCreator getKeyCreator() {
- return keyCreator;
- }
-
public void setAllowPopulate(final boolean allowPopulate) {
this.allowPopulate = allowPopulate;
}
@@ -57,6 +49,22 @@ public class SecondaryConfig extends DatabaseConfig implements Cloneable {
return immutableSecondaryKey;
}
+ public void setKeyCreator(final SecondaryKeyCreator keyCreator) {
+ this.keyCreator = keyCreator;
+ }
+
+ public SecondaryKeyCreator getKeyCreator() {
+ return keyCreator;
+ }
+
+ public void setMultiKeyCreator(final SecondaryMultiKeyCreator multiKeyCreator) {
+ this.multiKeyCreator = multiKeyCreator;
+ }
+
+ public SecondaryMultiKeyCreator getMultiKeyCreator() {
+ return multiKeyCreator;
+ }
+
/* package */
Db openSecondaryDatabase(final DbEnv dbenv,
final DbTxn txn,
@@ -75,6 +83,12 @@ public class SecondaryConfig extends DatabaseConfig implements Cloneable {
final Db db = super.openDatabase(dbenv, txn, fileName, databaseName);
boolean succeeded = false;
try {
+ /*
+ * The multi-key creator must be set before the call to associate
+ * so that we can work out whether the C API callback should be
+ * set or not.
+ */
+ db.get_secmultikey_create(multiKeyCreator);
primary.associate(txn, db, keyCreator, associateFlags);
succeeded = true;
return db;
diff --git a/db/java/src/com/sleepycat/db/SecondaryCursor.java b/db/java/src/com/sleepycat/db/SecondaryCursor.java
index 29583d6dd..e21feb4d3 100644
--- a/db/java/src/com/sleepycat/db/SecondaryCursor.java
+++ b/db/java/src/com/sleepycat/db/SecondaryCursor.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: SecondaryCursor.java,v 12.3 2006/08/24 14:46:09 bostic Exp $
+ * $Id: SecondaryCursor.java,v 12.5 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/SecondaryDatabase.java b/db/java/src/com/sleepycat/db/SecondaryDatabase.java
index 727c6bea4..e4564fa19 100644
--- a/db/java/src/com/sleepycat/db/SecondaryDatabase.java
+++ b/db/java/src/com/sleepycat/db/SecondaryDatabase.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: SecondaryDatabase.java,v 12.3 2006/08/24 14:46:09 bostic Exp $
+ * $Id: SecondaryDatabase.java,v 12.5 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/SecondaryKeyCreator.java b/db/java/src/com/sleepycat/db/SecondaryKeyCreator.java
index 9e146e619..ff959e8e4 100644
--- a/db/java/src/com/sleepycat/db/SecondaryKeyCreator.java
+++ b/db/java/src/com/sleepycat/db/SecondaryKeyCreator.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: SecondaryKeyCreator.java,v 12.3 2006/08/24 14:46:09 bostic Exp $
+ * $Id: SecondaryKeyCreator.java,v 12.5 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/SecondaryMultiKeyCreator.java b/db/java/src/com/sleepycat/db/SecondaryMultiKeyCreator.java
new file mode 100644
index 000000000..cf2dc0e6f
--- /dev/null
+++ b/db/java/src/com/sleepycat/db/SecondaryMultiKeyCreator.java
@@ -0,0 +1,27 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
+ *
+ * $Id: SecondaryMultiKeyCreator.java,v 12.3 2007/06/28 14:23:36 mjc Exp $
+ */
+
+package com.sleepycat.db;
+
+import java.util.Set;
+
+/**
+ * Javadoc for this public method is generated via
+ * the doc templates in the doc_src directory.
+ */
+public interface SecondaryMultiKeyCreator {
+ /**
+ * Javadoc for this public method is generated via
+ * the doc templates in the doc_src directory.
+ */
+ public void createSecondaryKeys(SecondaryDatabase secondary,
+ DatabaseEntry key,
+ DatabaseEntry data,
+ Set results)
+ throws DatabaseException;
+}
diff --git a/db/java/src/com/sleepycat/db/Sequence.java b/db/java/src/com/sleepycat/db/Sequence.java
index 8591258de..32f699524 100644
--- a/db/java/src/com/sleepycat/db/Sequence.java
+++ b/db/java/src/com/sleepycat/db/Sequence.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2001-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2001,2007 Oracle. All rights reserved.
*
- * $Id: Sequence.java,v 12.3 2006/08/24 14:46:09 bostic Exp $
+ * $Id: Sequence.java,v 12.5 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/SequenceConfig.java b/db/java/src/com/sleepycat/db/SequenceConfig.java
index 282d8d3e7..85b184616 100644
--- a/db/java/src/com/sleepycat/db/SequenceConfig.java
+++ b/db/java/src/com/sleepycat/db/SequenceConfig.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: SequenceConfig.java,v 12.3 2006/08/24 14:46:09 bostic Exp $
+ * $Id: SequenceConfig.java,v 12.5 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/SequenceStats.java b/db/java/src/com/sleepycat/db/SequenceStats.java
index 09e92bf2d..313bc8659 100644
--- a/db/java/src/com/sleepycat/db/SequenceStats.java
+++ b/db/java/src/com/sleepycat/db/SequenceStats.java
@@ -3,8 +3,7 @@
*
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/StatsConfig.java b/db/java/src/com/sleepycat/db/StatsConfig.java
index 217554c4e..4ab466509 100644
--- a/db/java/src/com/sleepycat/db/StatsConfig.java
+++ b/db/java/src/com/sleepycat/db/StatsConfig.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: StatsConfig.java,v 12.3 2006/08/24 14:46:09 bostic Exp $
+ * $Id: StatsConfig.java,v 12.5 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/Transaction.java b/db/java/src/com/sleepycat/db/Transaction.java
index f27a31eac..e9d0fce18 100644
--- a/db/java/src/com/sleepycat/db/Transaction.java
+++ b/db/java/src/com/sleepycat/db/Transaction.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: Transaction.java,v 12.4 2006/08/24 14:46:09 bostic Exp $
+ * $Id: Transaction.java,v 12.7 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
@@ -43,6 +42,12 @@ public class Transaction {
txn.commit(DbConstants.DB_TXN_NOSYNC);
}
+ public void commitWriteNoSync()
+ throws DatabaseException {
+
+ txn.commit(DbConstants.DB_TXN_WRITE_NOSYNC);
+ }
+
public void discard()
throws DatabaseException {
diff --git a/db/java/src/com/sleepycat/db/TransactionConfig.java b/db/java/src/com/sleepycat/db/TransactionConfig.java
index 64dfe83bf..eac18c7d1 100644
--- a/db/java/src/com/sleepycat/db/TransactionConfig.java
+++ b/db/java/src/com/sleepycat/db/TransactionConfig.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: TransactionConfig.java,v 12.6 2006/09/08 20:32:14 bostic Exp $
+ * $Id: TransactionConfig.java,v 12.10 2007/06/28 14:23:36 mjc Exp $
*/
package com.sleepycat.db;
@@ -31,6 +30,8 @@ public class TransactionConfig implements Cloneable {
private boolean noWait = false;
private boolean snapshot = false;
private boolean sync = false;
+ private boolean writeNoSync = false;
+ private boolean wait = false;
public TransactionConfig() {
}
@@ -103,6 +104,22 @@ public class TransactionConfig implements Cloneable {
return sync;
}
+ public void setWait(final boolean wait) {
+ this.wait = wait;
+ }
+
+ public boolean getWait() {
+ return wait;
+ }
+
+ public void setWriteNoSync(final boolean writeNoSync) {
+ this.writeNoSync = writeNoSync;
+ }
+
+ public boolean getWriteNoSync() {
+ return writeNoSync;
+ }
+
DbTxn beginTransaction(final DbEnv dbenv, final DbTxn parent)
throws DatabaseException {
@@ -113,6 +130,8 @@ public class TransactionConfig implements Cloneable {
flags |= noWait ? DbConstants.DB_TXN_NOWAIT : 0;
flags |= snapshot ? DbConstants.DB_TXN_SNAPSHOT : 0;
flags |= sync ? DbConstants.DB_TXN_SYNC : 0;
+ flags |= wait ? DbConstants.DB_TXN_WAIT : 0;
+ flags |= writeNoSync ? DbConstants.DB_TXN_WRITE_NOSYNC : 0;
return dbenv.txn_begin(parent, flags);
}
diff --git a/db/java/src/com/sleepycat/db/TransactionStats.java b/db/java/src/com/sleepycat/db/TransactionStats.java
index f299b5886..d788327c7 100644
--- a/db/java/src/com/sleepycat/db/TransactionStats.java
+++ b/db/java/src/com/sleepycat/db/TransactionStats.java
@@ -3,8 +3,7 @@
*
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*/
package com.sleepycat.db;
@@ -85,6 +84,11 @@ public class TransactionStats
}
};
+ private int st_nrestores;
+ public int getNumRestores() {
+ return st_nrestores;
+ }
+
private LogSequenceNumber st_last_ckp;
public LogSequenceNumber getLastCkp() {
return st_last_ckp;
@@ -130,11 +134,6 @@ public class TransactionStats
return st_nsnapshot;
}
- private int st_nrestores;
- public int getNumRestores() {
- return st_nrestores;
- }
-
private int st_maxnactive;
public int getMaxNactive() {
return st_maxnactive;
@@ -167,6 +166,7 @@ public class TransactionStats
public String toString() {
return "TransactionStats:"
+ + "\n st_nrestores=" + st_nrestores
+ "\n st_last_ckp=" + st_last_ckp
+ "\n st_time_ckp=" + st_time_ckp
+ "\n st_last_txnid=" + st_last_txnid
@@ -176,7 +176,6 @@ public class TransactionStats
+ "\n st_ncommits=" + st_ncommits
+ "\n st_nactive=" + st_nactive
+ "\n st_nsnapshot=" + st_nsnapshot
- + "\n st_nrestores=" + st_nrestores
+ "\n st_maxnactive=" + st_maxnactive
+ "\n st_maxnsnapshot=" + st_maxnsnapshot
+ "\n st_txnarray=" + DbUtil.objectArrayToString(st_txnarray, "st_txnarray")
diff --git a/db/java/src/com/sleepycat/db/VerboseConfig.java b/db/java/src/com/sleepycat/db/VerboseConfig.java
new file mode 100644
index 000000000..05abdcd51
--- /dev/null
+++ b/db/java/src/com/sleepycat/db/VerboseConfig.java
@@ -0,0 +1,47 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
+ *
+ * $Id: VerboseConfig.java,v 12.4 2007/07/06 00:22:54 mjc Exp $
+ */
+
+package com.sleepycat.db;
+
+import com.sleepycat.db.internal.DbConstants;
+import com.sleepycat.db.internal.DbEnv;
+
+public final class VerboseConfig {
+ public static final VerboseConfig DEADLOCK =
+ new VerboseConfig("DEADLOCK", DbConstants.DB_VERB_DEADLOCK);
+ public static final VerboseConfig FILEOPS =
+ new VerboseConfig("FILEOPS", DbConstants.DB_VERB_FILEOPS);
+ public static final VerboseConfig FILEOPS_ALL =
+ new VerboseConfig("FILEOPS_ALL", DbConstants.DB_VERB_FILEOPS_ALL);
+ public static final VerboseConfig RECOVERY =
+ new VerboseConfig("RECOVERY", DbConstants.DB_VERB_RECOVERY);
+ public static final VerboseConfig REGISTER =
+ new VerboseConfig("REGISTER", DbConstants.DB_VERB_REGISTER);
+ public static final VerboseConfig REPLICATION =
+ new VerboseConfig("REPLICATION", DbConstants.DB_VERB_REPLICATION);
+ public static final VerboseConfig WAITSFOR =
+ new VerboseConfig("WAITSFOR", DbConstants.DB_VERB_WAITSFOR);
+
+ /* Package */
+ int getInternalFlag() {
+ return verboseFlag;
+ }
+ /* For toString */
+ private String verboseName;
+ private int verboseFlag;
+
+ private VerboseConfig(final String verboseName, int verboseFlag) {
+ this.verboseName = verboseName;
+ this.verboseFlag = verboseFlag;
+ }
+
+ public String toString() {
+ return "VerboseConfig." + verboseName;
+ }
+}
+
diff --git a/db/java/src/com/sleepycat/db/VerifyConfig.java b/db/java/src/com/sleepycat/db/VerifyConfig.java
index a33e60182..7bf14c5d7 100644
--- a/db/java/src/com/sleepycat/db/VerifyConfig.java
+++ b/db/java/src/com/sleepycat/db/VerifyConfig.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: VerifyConfig.java,v 12.3 2006/08/24 14:46:09 bostic Exp $
+ * $Id: VerifyConfig.java,v 12.5 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/VersionMismatchException.java b/db/java/src/com/sleepycat/db/VersionMismatchException.java
index 2043986c3..26ca5f0a2 100644
--- a/db/java/src/com/sleepycat/db/VersionMismatchException.java
+++ b/db/java/src/com/sleepycat/db/VersionMismatchException.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: VersionMismatchException.java,v 1.5 2006/08/24 14:46:09 bostic Exp $
+ * $Id: VersionMismatchException.java,v 1.7 2007/05/17 15:15:41 bostic Exp $
*/
package com.sleepycat.db;
diff --git a/db/java/src/com/sleepycat/db/internal/Db.java b/db/java/src/com/sleepycat/db/internal/Db.java
index 541885370..8d5b22ed0 100644
--- a/db/java/src/com/sleepycat/db/internal/Db.java
+++ b/db/java/src/com/sleepycat/db/internal/Db.java
@@ -48,8 +48,10 @@ public class Db {
private BtreePrefixCalculator bt_prefix_handler;
private Comparator dup_compare_handler;
private FeedbackHandler db_feedback_handler;
+ private Comparator h_compare_handler;
private Hasher h_hash_handler;
private SecondaryKeyCreator seckey_create_handler;
+ private SecondaryMultiKeyCreator secmultikey_create_handler;
/* Called by the Db constructor */
private void initialize(DbEnv dbenv) {
@@ -105,7 +107,7 @@ public class Db {
}
private final int handle_bt_prefix(DatabaseEntry dbt1,
- DatabaseEntry dbt2) {
+ DatabaseEntry dbt2) {
return bt_prefix_handler.prefix(wrapper, dbt1, dbt2);
}
@@ -125,6 +127,14 @@ public class Db {
return db_feedback_handler;
}
+ private final int handle_h_compare(byte[] arr1, byte[] arr2) {
+ return h_compare_handler.compare(arr1, arr2);
+ }
+
+ public Comparator get_h_compare() throws com.sleepycat.db.DatabaseException {
+ return h_compare_handler;
+ }
+
private final int handle_dup_compare(byte[] arr1, byte[] arr2) {
return dup_compare_handler.compare(arr1, arr2);
}
@@ -141,19 +151,43 @@ public class Db {
return h_hash_handler;
}
- private final int handle_seckey_create(DatabaseEntry key,
- DatabaseEntry data,
- DatabaseEntry result)
+ private final DatabaseEntry[] handle_seckey_create(
+ DatabaseEntry key,
+ DatabaseEntry data)
throws DatabaseException {
- return seckey_create_handler.createSecondaryKey(
- (SecondaryDatabase)wrapper, key, data, result) ?
- 0 : DbConstants.DB_DONOTINDEX;
+
+ if (secmultikey_create_handler != null) {
+ java.util.HashSet keySet = new java.util.HashSet();
+ secmultikey_create_handler.createSecondaryKeys(
+ (SecondaryDatabase)wrapper, key, data, keySet);
+ if (!keySet.isEmpty())
+ return (DatabaseEntry[])keySet.toArray(
+ new DatabaseEntry[keySet.size()]);
+ } else {
+ DatabaseEntry result = new DatabaseEntry();
+ if (seckey_create_handler.createSecondaryKey(
+ (SecondaryDatabase)wrapper, key, data, result)) {
+ DatabaseEntry[] results = { result };
+ return results;
+ }
+ }
+
+ return null;
}
public SecondaryKeyCreator get_seckey_create() throws com.sleepycat.db.DatabaseException {
return seckey_create_handler;
}
+ public SecondaryMultiKeyCreator get_secmultikey_create() throws com.sleepycat.db.DatabaseException {
+ return secmultikey_create_handler;
+ }
+
+ public void get_secmultikey_create(
+ SecondaryMultiKeyCreator secmultikey_create_handler) {
+ this.secmultikey_create_handler = secmultikey_create_handler;
+ }
+
public synchronized void remove(String file, String database, int flags)
throws DatabaseException, java.io.FileNotFoundException {
try {
@@ -237,7 +271,8 @@ public class Db {
initialize(dbenv);
}
- public void associate(DbTxn txnid, Db secondary, com.sleepycat.db.SecondaryKeyCreator callback, int flags) throws com.sleepycat.db.DatabaseException { db_javaJNI.Db_associate(swigCPtr, DbTxn.getCPtr(txnid), Db.getCPtr(secondary), (secondary.seckey_create_handler = callback) , flags); }
+ public void associate(DbTxn txnid, Db secondary, com.sleepycat.db.SecondaryKeyCreator callback, int flags) throws com.sleepycat.db.DatabaseException { db_javaJNI.Db_associate(swigCPtr, DbTxn.getCPtr(txnid), Db.getCPtr(secondary), (secondary.seckey_create_handler = callback) != null ||
+ (secondary.secmultikey_create_handler != null) , flags); }
public void compact(DbTxn txnid, com.sleepycat.db.DatabaseEntry start, com.sleepycat.db.DatabaseEntry stop, com.sleepycat.db.CompactStats c_data, int flags, com.sleepycat.db.DatabaseEntry end) throws com.sleepycat.db.DatabaseException { db_javaJNI.Db_compact(swigCPtr, DbTxn.getCPtr(txnid), start, stop, c_data, flags, end); }
@@ -262,7 +297,9 @@ public class Db {
db_javaJNI.Db_errx(swigCPtr, message);
}
- public boolean get_transactional() throws com.sleepycat.db.DatabaseException { return db_javaJNI.Db_get_transactional(swigCPtr); }
+ public int exists(DbTxn txnid, com.sleepycat.db.DatabaseEntry key, int flags) throws com.sleepycat.db.DatabaseException {
+ return db_javaJNI.Db_exists(swigCPtr, DbTxn.getCPtr(txnid), key, flags);
+ }
public int get(DbTxn txnid, com.sleepycat.db.DatabaseEntry key, com.sleepycat.db.DatabaseEntry data, int flags) throws com.sleepycat.db.DatabaseException {
return db_javaJNI.Db_get(swigCPtr, DbTxn.getCPtr(txnid), key, data, flags);
@@ -311,6 +348,10 @@ public class Db {
return db_javaJNI.Db_get_re_delim(swigCPtr);
}
+ public int get_priority() throws com.sleepycat.db.DatabaseException {
+ return db_javaJNI.Db_get_priority(swigCPtr);
+ }
+
public int get_re_len() throws com.sleepycat.db.DatabaseException { return db_javaJNI.Db_get_re_len(swigCPtr); }
public int get_re_pad() throws com.sleepycat.db.DatabaseException {
@@ -323,6 +364,10 @@ public class Db {
public int get_q_extentsize() throws com.sleepycat.db.DatabaseException { return db_javaJNI.Db_get_q_extentsize(swigCPtr); }
+ public boolean get_multiple() throws com.sleepycat.db.DatabaseException { return db_javaJNI.Db_get_multiple(swigCPtr); }
+
+ public boolean get_transactional() throws com.sleepycat.db.DatabaseException { return db_javaJNI.Db_get_transactional(swigCPtr); }
+
public int get_type() throws com.sleepycat.db.DatabaseException {
return db_javaJNI.Db_get_type(swigCPtr);
}
@@ -348,27 +393,29 @@ public class Db {
/* package */ void rename0(String file, String database, String newname, int flags) { db_javaJNI.Db_rename0(swigCPtr, file, database, newname, flags); }
- public void set_append_recno(com.sleepycat.db.RecordNumberAppender db_append_recno_fcn) throws com.sleepycat.db.DatabaseException { db_javaJNI.Db_set_append_recno(swigCPtr, (append_recno_handler = db_append_recno_fcn) ); }
+ public void set_append_recno(com.sleepycat.db.RecordNumberAppender db_append_recno_fcn) throws com.sleepycat.db.DatabaseException { db_javaJNI.Db_set_append_recno(swigCPtr, (append_recno_handler = db_append_recno_fcn) != null ); }
- public void set_bt_compare(java.util.Comparator bt_compare_fcn) throws com.sleepycat.db.DatabaseException { db_javaJNI.Db_set_bt_compare(swigCPtr, (bt_compare_handler = bt_compare_fcn) ); }
+ public void set_bt_compare(java.util.Comparator bt_compare_fcn) throws com.sleepycat.db.DatabaseException { db_javaJNI.Db_set_bt_compare(swigCPtr, (bt_compare_handler = bt_compare_fcn) != null ); }
public void set_bt_minkey(int bt_minkey) throws com.sleepycat.db.DatabaseException { db_javaJNI.Db_set_bt_minkey(swigCPtr, bt_minkey); }
- public void set_bt_prefix(com.sleepycat.db.BtreePrefixCalculator bt_prefix_fcn) throws com.sleepycat.db.DatabaseException { db_javaJNI.Db_set_bt_prefix(swigCPtr, (bt_prefix_handler = bt_prefix_fcn) ); }
+ public void set_bt_prefix(com.sleepycat.db.BtreePrefixCalculator bt_prefix_fcn) throws com.sleepycat.db.DatabaseException { db_javaJNI.Db_set_bt_prefix(swigCPtr, (bt_prefix_handler = bt_prefix_fcn) != null ); }
public void set_cachesize(long bytes, int ncache) throws com.sleepycat.db.DatabaseException { db_javaJNI.Db_set_cachesize(swigCPtr, bytes, ncache); }
- public void set_dup_compare(java.util.Comparator dup_compare_fcn) throws com.sleepycat.db.DatabaseException { db_javaJNI.Db_set_dup_compare(swigCPtr, (dup_compare_handler = dup_compare_fcn) ); }
+ public void set_dup_compare(java.util.Comparator dup_compare_fcn) throws com.sleepycat.db.DatabaseException { db_javaJNI.Db_set_dup_compare(swigCPtr, (dup_compare_handler = dup_compare_fcn) != null ); }
public void set_encrypt(String passwd, int flags) throws com.sleepycat.db.DatabaseException { db_javaJNI.Db_set_encrypt(swigCPtr, passwd, flags); }
- public void set_feedback(com.sleepycat.db.FeedbackHandler db_feedback_fcn) throws com.sleepycat.db.DatabaseException { db_javaJNI.Db_set_feedback(swigCPtr, (db_feedback_handler = db_feedback_fcn) ); }
+ public void set_feedback(com.sleepycat.db.FeedbackHandler db_feedback_fcn) throws com.sleepycat.db.DatabaseException { db_javaJNI.Db_set_feedback(swigCPtr, (db_feedback_handler = db_feedback_fcn) != null ); }
public void set_flags(int flags) throws com.sleepycat.db.DatabaseException { db_javaJNI.Db_set_flags(swigCPtr, flags); }
+ public void set_h_compare(java.util.Comparator h_compare_fcn) throws com.sleepycat.db.DatabaseException { db_javaJNI.Db_set_h_compare(swigCPtr, (h_compare_handler = h_compare_fcn) != null ); }
+
public void set_h_ffactor(int h_ffactor) throws com.sleepycat.db.DatabaseException { db_javaJNI.Db_set_h_ffactor(swigCPtr, h_ffactor); }
- public void set_h_hash(com.sleepycat.db.Hasher h_hash_fcn) throws com.sleepycat.db.DatabaseException { db_javaJNI.Db_set_h_hash(swigCPtr, (h_hash_handler = h_hash_fcn) ); }
+ public void set_h_hash(com.sleepycat.db.Hasher h_hash_fcn) throws com.sleepycat.db.DatabaseException { db_javaJNI.Db_set_h_hash(swigCPtr, (h_hash_handler = h_hash_fcn) != null ); }
public void set_h_nelem(int h_nelem) throws com.sleepycat.db.DatabaseException { db_javaJNI.Db_set_h_nelem(swigCPtr, h_nelem); }
@@ -376,6 +423,8 @@ public class Db {
public void set_pagesize(long pagesize) throws com.sleepycat.db.DatabaseException { db_javaJNI.Db_set_pagesize(swigCPtr, pagesize); }
+ public void set_priority(int priority) throws com.sleepycat.db.DatabaseException { db_javaJNI.Db_set_priority(swigCPtr, priority); }
+
public void set_re_delim(int re_delim) throws com.sleepycat.db.DatabaseException { db_javaJNI.Db_set_re_delim(swigCPtr, re_delim); }
public void set_re_len(int re_len) throws com.sleepycat.db.DatabaseException { db_javaJNI.Db_set_re_len(swigCPtr, re_len); }
diff --git a/db/java/src/com/sleepycat/db/internal/DbClient.java b/db/java/src/com/sleepycat/db/internal/DbClient.java
deleted file mode 100644
index 28d586ecb..000000000
--- a/db/java/src/com/sleepycat/db/internal/DbClient.java
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
- * -
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2000-2003
- * Sleepycat Software. All rights reserved.
- *
- * $Id: DbClient.java,v 1.1 2004/04/06 20:43:40 mjc Exp $
- */
-package com.sleepycat.db.internal;
-
-/**
- * The DbClient object is used to encapsulate a reference to an RPC
- * client.</p>
- */
-public interface DbClient {
-}
diff --git a/db/java/src/com/sleepycat/db/internal/DbConstants.java b/db/java/src/com/sleepycat/db/internal/DbConstants.java
index 5c71317b7..ca79e3163 100644
--- a/db/java/src/com/sleepycat/db/internal/DbConstants.java
+++ b/db/java/src/com/sleepycat/db/internal/DbConstants.java
@@ -20,12 +20,11 @@ public interface DbConstants
int DB_CONSUME_WAIT = 5;
int DB_CREATE = 0x0000001;
int DB_CURRENT = 6;
- int DB_DBT_MALLOC = 0x004;
- int DB_DBT_PARTIAL = 0x008;
- int DB_DBT_USERMEM = 0x040;
+ int DB_DBT_MALLOC = 0x008;
+ int DB_DBT_PARTIAL = 0x020;
+ int DB_DBT_USERMEM = 0x100;
int DB_DIRECT_DB = 0x00008000;
int DB_DIRECT_LOG = 0x00010000;
- int DB_DONOTINDEX = -30998;
int DB_DSYNC_DB = 0x00020000;
int DB_DSYNC_LOG = 0x00040000;
int DB_DUP = 0x00008000;
@@ -34,12 +33,6 @@ public interface DbConstants
int DB_EID_INVALID = -2;
int DB_ENCRYPT = 0x00020000;
int DB_ENCRYPT_AES = 0x0000001;
- int DB_EVENT_PANIC = 1;
- int DB_EVENT_REP_CLIENT = 2;
- int DB_EVENT_REP_MASTER = 3;
- int DB_EVENT_REP_NEWMASTER = 4;
- int DB_EVENT_REP_STARTUPDONE = 5;
- int DB_EVENT_WRITE_FAILED = 6;
int DB_EXCL = 0x0004000;
int DB_FAST_STAT = 0x0000001;
int DB_FIRST = 7;
@@ -51,13 +44,14 @@ public interface DbConstants
int DB_GET_BOTH_RANGE = 10;
int DB_GET_RECNO = 11;
int DB_HASH = 2;
+ int DB_IGNORE_LEASE = 0x01000000;
int DB_IMMUTABLE_KEY = 0x0004000;
- int DB_INIT_CDB = 0x0004000;
- int DB_INIT_LOCK = 0x0008000;
- int DB_INIT_LOG = 0x0010000;
- int DB_INIT_MPOOL = 0x0020000;
- int DB_INIT_REP = 0x0040000;
- int DB_INIT_TXN = 0x0080000;
+ int DB_INIT_CDB = 0x0010000;
+ int DB_INIT_LOCK = 0x0020000;
+ int DB_INIT_LOG = 0x0040000;
+ int DB_INIT_MPOOL = 0x0080000;
+ int DB_INIT_REP = 0x0100000;
+ int DB_INIT_TXN = 0x0200000;
int DB_INORDER = 0x00040000;
int DB_JOINENV = 0x0;
int DB_JOIN_ITEM = 12;
@@ -67,7 +61,7 @@ public interface DbConstants
int DB_KEYFIRST = 13;
int DB_KEYLAST = 14;
int DB_LAST = 15;
- int DB_LOCKDOWN = 0x0100000;
+ int DB_LOCKDOWN = 0x0400000;
int DB_LOCK_DEADLOCK = -30995;
int DB_LOCK_DEFAULT = 1;
int DB_LOCK_EXPIRE = 2;
@@ -116,14 +110,15 @@ public interface DbConstants
int DB_PANIC_ENVIRONMENT = 0x01000000;
int DB_POSITION = 22;
int DB_PREV = 23;
- int DB_PREV_NODUP = 24;
+ int DB_PREV_DUP = 24;
+ int DB_PREV_NODUP = 25;
int DB_PRINTABLE = 0x0000020;
int DB_PRIORITY_DEFAULT = 3;
int DB_PRIORITY_HIGH = 4;
int DB_PRIORITY_LOW = 2;
int DB_PRIORITY_VERY_HIGH = 5;
int DB_PRIORITY_VERY_LOW = 1;
- int DB_PRIVATE = 0x0200000;
+ int DB_PRIVATE = 0x0800000;
int DB_QUEUE = 4;
int DB_RDONLY = 0x0000020;
int DB_READ_COMMITTED = 0x04000000;
@@ -131,9 +126,9 @@ public interface DbConstants
int DB_RECNO = 3;
int DB_RECNUM = 0x00080000;
int DB_RECOVER = 0x0000040;
- int DB_RECOVER_FATAL = 0x0400000;
+ int DB_RECOVER_FATAL = 0x1000000;
int DB_REGION_INIT = 0x20000000;
- int DB_REGISTER = 0x0800000;
+ int DB_REGISTER = 0x2000000;
int DB_RENUMBER = 0x00100000;
int DB_REPMGR_ACKS_ALL = 1;
int DB_REPMGR_ACKS_ALL_PEERS = 2;
@@ -145,20 +140,21 @@ public interface DbConstants
int DB_REPMGR_PEER = 0x01;
int DB_REP_ACK_TIMEOUT = 1;
int DB_REP_ANYWHERE = 0x0000001;
+ int DB_REP_CHECKPOINT_DELAY = 2;
int DB_REP_CLIENT = 1;
int DB_REP_CONF_BULK = 0x0001;
int DB_REP_CONF_DELAYCLIENT = 0x0002;
int DB_REP_CONF_NOAUTOINIT = 0x0004;
int DB_REP_CONF_NOWAIT = 0x0008;
- int DB_REP_CONNECTION_RETRY = 4;
+ int DB_REP_CONNECTION_RETRY = 3;
+ int DB_REP_DEFAULT_PRIORITY = 100;
int DB_REP_ELECTION = 2;
- int DB_REP_ELECTION_RETRY = 3;
- int DB_REP_ELECTION_TIMEOUT = 2;
- int DB_REP_FULL_ELECTION = 3;
+ int DB_REP_ELECTION_RETRY = 4;
+ int DB_REP_ELECTION_TIMEOUT = 5;
+ int DB_REP_FULL_ELECTION_TIMEOUT = 6;
int DB_REP_IGNORE = -30983;
int DB_REP_ISPERM = -30982;
- int DB_REP_MASTER = 4;
- int DB_REP_NEWMASTER = -30979;
+ int DB_REP_MASTER = 3;
int DB_REP_NEWSITE = -30978;
int DB_REP_NOBUFFER = 0x0000002;
int DB_REP_NOTPERM = -30977;
@@ -171,14 +167,14 @@ public interface DbConstants
int DB_SEQ_DEC = 0x00000001;
int DB_SEQ_INC = 0x00000002;
int DB_SEQ_WRAP = 0x00000008;
- int DB_SET = 25;
- int DB_SET_LOCK_TIMEOUT = 26;
+ int DB_SET = 26;
+ int DB_SET_LOCK_TIMEOUT = 1;
int DB_SET_RANGE = 27;
int DB_SET_RECNO = 28;
- int DB_SET_TXN_TIMEOUT = 30;
+ int DB_SET_TXN_TIMEOUT = 3;
int DB_SNAPSHOT = 0x00400000;
int DB_STAT_CLEAR = 0x0000004;
- int DB_SYSTEM_MEM = 0x1000000;
+ int DB_SYSTEM_MEM = 0x4000000;
int DB_THREAD = 0x0000080;
int DB_TIME_NOTGRANTED = 0x40000000;
int DB_TRUNCATE = 0x0000100;
@@ -187,26 +183,29 @@ public interface DbConstants
int DB_TXN_BACKWARD_ROLL = 3;
int DB_TXN_FORWARD_ROLL = 4;
int DB_TXN_NOSYNC = 0x0000200;
- int DB_TXN_NOT_DURABLE = 0x0000400;
- int DB_TXN_NOWAIT = 0x0004000;
+ int DB_TXN_NOT_DURABLE = 0x0000800;
+ int DB_TXN_NOWAIT = 0x0000400;
int DB_TXN_PRINT = 7;
int DB_TXN_SNAPSHOT = 0x10000000;
- int DB_TXN_SYNC = 0x0008000;
- int DB_TXN_WRITE_NOSYNC = 0x0000800;
+ int DB_TXN_SYNC = 0x0004000;
+ int DB_TXN_WAIT = 0x0008000;
+ int DB_TXN_WRITE_NOSYNC = 0x0001000;
int DB_UNKNOWN = 5;
int DB_UPGRADE = 0x0000001;
- int DB_USE_ENVIRON = 0x0001000;
- int DB_USE_ENVIRON_ROOT = 0x0002000;
+ int DB_USE_ENVIRON = 0x0004000;
+ int DB_USE_ENVIRON_ROOT = 0x0008000;
int DB_VERB_DEADLOCK = 0x0001;
- int DB_VERB_RECOVERY = 0x0002;
- int DB_VERB_REGISTER = 0x0004;
- int DB_VERB_REPLICATION = 0x0008;
- int DB_VERB_WAITSFOR = 0x0010;
+ int DB_VERB_FILEOPS = 0x0002;
+ int DB_VERB_FILEOPS_ALL = 0x0004;
+ int DB_VERB_RECOVERY = 0x0008;
+ int DB_VERB_REGISTER = 0x0010;
+ int DB_VERB_REPLICATION = 0x0020;
+ int DB_VERB_WAITSFOR = 0x0040;
int DB_VERIFY = 0x0000002;
int DB_VERSION_MAJOR = 4;
- int DB_VERSION_MINOR = 5;
- int DB_VERSION_PATCH = 20;
- int DB_WRITECURSOR = 32;
+ int DB_VERSION_MINOR = 6;
+ int DB_VERSION_PATCH = 18;
+ int DB_WRITECURSOR = 30;
int DB_XA_CREATE = 0x0000002;
int DB_XIDDATASIZE = 128;
int DB_YIELDCPU = 0x80000000;
diff --git a/db/java/src/com/sleepycat/db/internal/DbEnv.java b/db/java/src/com/sleepycat/db/internal/DbEnv.java
index de3822a95..717ebdee7 100644
--- a/db/java/src/com/sleepycat/db/internal/DbEnv.java
+++ b/db/java/src/com/sleepycat/db/internal/DbEnv.java
@@ -50,6 +50,7 @@ public class DbEnv {
private ReplicationTransport rep_transport_handler;
private java.io.OutputStream error_stream;
private java.io.OutputStream message_stream;
+ private ThreadLocal errMsg;
public static class RepProcessMessage {
public int envid;
@@ -61,6 +62,7 @@ public class DbEnv {
*/
void initialize() {
dbenv_ref = db_java.initDbEnvRef0(this, this);
+ errMsg = new ThreadLocal();
/* Start with System.err as the default error stream. */
set_error_stream(System.err);
set_message_stream(System.out);
@@ -81,8 +83,8 @@ public class DbEnv {
}
private final int handle_app_dispatch(DatabaseEntry dbt,
- LogSequenceNumber lsn,
- int recops) {
+ LogSequenceNumber lsn,
+ int recops) {
return app_dispatch_handler.handleLogRecord(wrapper, dbt, lsn,
RecoveryOperation.fromFlag(recops));
}
@@ -91,8 +93,36 @@ public class DbEnv {
return app_dispatch_handler;
}
- private final int handle_event_notify(int event) {
- return event_notify_handler.handleEvent(EventType.fromInt(event));
+ private final void handle_panic_event_notify() {
+ event_notify_handler.handlePanicEvent();
+ }
+
+ private final void handle_rep_client_event_notify() {
+ event_notify_handler.handleRepClientEvent();
+ }
+
+ private final void handle_rep_elected_event_notify() {
+ event_notify_handler.handleRepElectedEvent();
+ }
+
+ private final void handle_rep_master_event_notify() {
+ event_notify_handler.handleRepMasterEvent();
+ }
+
+ private final void handle_rep_new_master_event_notify(int envid) {
+ event_notify_handler.handleRepNewMasterEvent(envid);
+ }
+
+ private final void handle_rep_perm_failed_event_notify() {
+ event_notify_handler.handleRepPermFailedEvent();
+ }
+
+ private final void handle_rep_startup_done_event_notify() {
+ event_notify_handler.handleRepStartupDoneEvent();
+ }
+
+ private final void handle_write_failed_event_notify(int errno) {
+ event_notify_handler.handleWriteFailedEvent(errno);
}
public EventHandler get_event_notify() throws com.sleepycat.db.DatabaseException {
@@ -118,9 +148,29 @@ public class DbEnv {
}
private final void handle_error(String msg) {
+ StringBuffer tbuf = (StringBuffer) errMsg.get();
+ /*
+ * Populate the errMsg ThreadLocal on demand, since the
+ * callback can be made from different threads.
+ */
+ if (tbuf == null) {
+ tbuf = new StringBuffer();
+ errMsg.set(tbuf);
+ }
+ tbuf.append(msg);
error_handler.error(wrapper, this.errpfx, msg);
}
+ private final String get_err_msg(String orig_msg) {
+ String ret = null;
+ StringBuffer tbuf = (StringBuffer) errMsg.get();
+ if (tbuf != null) {
+ ret = tbuf.toString();
+ tbuf.delete(0, tbuf.length());
+ }
+ return orig_msg + ": " + ret;
+ }
+
public ErrorHandler get_errcall() /* no exception */ {
return error_handler;
}
@@ -142,20 +192,20 @@ public class DbEnv {
}
private final int handle_rep_transport(DatabaseEntry control,
- DatabaseEntry rec,
- LogSequenceNumber lsn,
- int envid, int flags)
+ DatabaseEntry rec,
+ LogSequenceNumber lsn,
+ int envid, int flags)
throws DatabaseException {
return rep_transport_handler.send(wrapper,
control, rec, lsn, envid,
(flags & DbConstants.DB_REP_NOBUFFER) != 0,
- (flags & DbConstants.DB_REP_PERMANENT) != 0,
- (flags & DbConstants.DB_REP_ANYWHERE) != 0,
- (flags & DbConstants.DB_REP_REREQUEST) != 0);
+ (flags & DbConstants.DB_REP_PERMANENT) != 0,
+ (flags & DbConstants.DB_REP_ANYWHERE) != 0,
+ (flags & DbConstants.DB_REP_REREQUEST) != 0);
}
public void lock_vec(/*u_int32_t*/ int locker, int flags,
- LockRequest[] list, int offset, int count)
+ LockRequest[] list, int offset, int count)
throws DatabaseException {
db_javaJNI.DbEnv_lock_vec(swigCPtr, locker, flags, list,
offset, count);
@@ -188,7 +238,6 @@ public class DbEnv {
return error_stream;
}
-
public void set_message_stream(java.io.OutputStream stream) /* no exception */ {
message_stream = stream;
final java.io.PrintWriter pw = new java.io.PrintWriter(stream);
@@ -265,6 +314,8 @@ public class DbEnv {
public void set_cachesize(long bytes, int ncache) throws com.sleepycat.db.DatabaseException { db_javaJNI.DbEnv_set_cachesize(swigCPtr, bytes, ncache); }
+ public void set_cache_max(long bytes) throws com.sleepycat.db.DatabaseException { db_javaJNI.DbEnv_set_cache_max(swigCPtr, bytes); }
+
public void set_data_dir(String dir) throws com.sleepycat.db.DatabaseException { db_javaJNI.DbEnv_set_data_dir(swigCPtr, dir); }
public void set_intermediate_dir(int mode, int flags) throws com.sleepycat.db.DatabaseException { db_javaJNI.DbEnv_set_intermediate_dir(swigCPtr, mode, flags); }
@@ -272,24 +323,24 @@ public class DbEnv {
public void set_encrypt(String passwd, int flags) throws com.sleepycat.db.DatabaseException { db_javaJNI.DbEnv_set_encrypt(swigCPtr, passwd, flags); }
public void set_errcall(com.sleepycat.db.ErrorHandler db_errcall_fcn) /* no exception */ {
- db_javaJNI.DbEnv_set_errcall(swigCPtr, (error_handler = db_errcall_fcn) );
+ db_javaJNI.DbEnv_set_errcall(swigCPtr, (error_handler = db_errcall_fcn) != null );
}
public void set_flags(int flags, boolean onoff) throws com.sleepycat.db.DatabaseException { db_javaJNI.DbEnv_set_flags(swigCPtr, flags, onoff); }
- public void set_feedback(com.sleepycat.db.FeedbackHandler env_feedback_fcn) throws com.sleepycat.db.DatabaseException { db_javaJNI.DbEnv_set_feedback(swigCPtr, (env_feedback_handler = env_feedback_fcn) ); }
+ public void set_feedback(com.sleepycat.db.FeedbackHandler env_feedback_fcn) throws com.sleepycat.db.DatabaseException { db_javaJNI.DbEnv_set_feedback(swigCPtr, (env_feedback_handler = env_feedback_fcn) != null ); }
public void set_mp_max_openfd(int maxopenfd) throws com.sleepycat.db.DatabaseException { db_javaJNI.DbEnv_set_mp_max_openfd(swigCPtr, maxopenfd); }
- public void set_mp_max_write(int maxwrite, int maxwrite_sleep) throws com.sleepycat.db.DatabaseException { db_javaJNI.DbEnv_set_mp_max_write(swigCPtr, maxwrite, maxwrite_sleep); }
+ public void set_mp_max_write(int maxwrite, long maxwrite_sleep) throws com.sleepycat.db.DatabaseException { db_javaJNI.DbEnv_set_mp_max_write(swigCPtr, maxwrite, maxwrite_sleep); }
public void set_mp_mmapsize(long mp_mmapsize) throws com.sleepycat.db.DatabaseException { db_javaJNI.DbEnv_set_mp_mmapsize(swigCPtr, mp_mmapsize); }
public void set_msgcall(com.sleepycat.db.MessageHandler db_msgcall_fcn) /* no exception */ {
- db_javaJNI.DbEnv_set_msgcall(swigCPtr, (message_handler = db_msgcall_fcn) );
+ db_javaJNI.DbEnv_set_msgcall(swigCPtr, (message_handler = db_msgcall_fcn) != null );
}
- public void set_paniccall(com.sleepycat.db.PanicHandler db_panic_fcn) throws com.sleepycat.db.DatabaseException { db_javaJNI.DbEnv_set_paniccall(swigCPtr, (panic_handler = db_panic_fcn) ); }
+ public void set_paniccall(com.sleepycat.db.PanicHandler db_panic_fcn) throws com.sleepycat.db.DatabaseException { db_javaJNI.DbEnv_set_paniccall(swigCPtr, (panic_handler = db_panic_fcn) != null ); }
public void set_rpc_server(String host, long cl_timeout, long sv_timeout, int flags) throws com.sleepycat.db.DatabaseException { db_javaJNI.DbEnv_set_rpc_server(swigCPtr, host, cl_timeout, sv_timeout, flags); }
@@ -301,9 +352,9 @@ public class DbEnv {
public void set_tx_max(int max) throws com.sleepycat.db.DatabaseException { db_javaJNI.DbEnv_set_tx_max(swigCPtr, max); }
- public void set_app_dispatch(com.sleepycat.db.LogRecordHandler tx_recover) throws com.sleepycat.db.DatabaseException { db_javaJNI.DbEnv_set_app_dispatch(swigCPtr, (app_dispatch_handler = tx_recover) ); }
+ public void set_app_dispatch(com.sleepycat.db.LogRecordHandler tx_recover) throws com.sleepycat.db.DatabaseException { db_javaJNI.DbEnv_set_app_dispatch(swigCPtr, (app_dispatch_handler = tx_recover) != null ); }
- public void set_event_notify(com.sleepycat.db.EventHandler event_notify) throws com.sleepycat.db.DatabaseException { db_javaJNI.DbEnv_set_event_notify(swigCPtr, (event_notify_handler = event_notify) ); }
+ public void set_event_notify(com.sleepycat.db.EventHandler event_notify) throws com.sleepycat.db.DatabaseException { db_javaJNI.DbEnv_set_event_notify(swigCPtr, (event_notify_handler = event_notify) != null ); }
/* package */ void set_tx_timestamp0(long timestamp) { db_javaJNI.DbEnv_set_tx_timestamp0(swigCPtr, timestamp); }
@@ -401,6 +452,10 @@ public class DbEnv {
return db_javaJNI.DbEnv_get_cachesize_ncache(swigCPtr);
}
+ public long get_cache_max() throws com.sleepycat.db.DatabaseException {
+ return db_javaJNI.DbEnv_get_cache_max(swigCPtr);
+ }
+
public int get_mp_max_openfd() throws com.sleepycat.db.DatabaseException {
return db_javaJNI.DbEnv_get_mp_max_openfd(swigCPtr);
}
@@ -409,9 +464,7 @@ public class DbEnv {
return db_javaJNI.DbEnv_get_mp_max_write(swigCPtr);
}
- public int get_mp_max_write_sleep() throws com.sleepycat.db.DatabaseException {
- return db_javaJNI.DbEnv_get_mp_max_write_sleep(swigCPtr);
- }
+ public long get_mp_max_write_sleep() throws com.sleepycat.db.DatabaseException { return db_javaJNI.DbEnv_get_mp_max_write_sleep(swigCPtr); }
public long get_mp_mmapsize() throws com.sleepycat.db.DatabaseException { return db_javaJNI.DbEnv_get_mp_mmapsize(swigCPtr); }
@@ -462,11 +515,9 @@ public class DbEnv {
return db_javaJNI.DbEnv_rep_get_limit(swigCPtr);
}
- public int rep_elect(int nsites, int nvotes, int flags) throws com.sleepycat.db.DatabaseException {
- return db_javaJNI.DbEnv_rep_elect(swigCPtr, nsites, nvotes, flags);
- }
+ public void rep_elect(int nsites, int nvotes, int flags) throws com.sleepycat.db.DatabaseException { db_javaJNI.DbEnv_rep_elect(swigCPtr, nsites, nvotes, flags); }
- public int rep_process_message(com.sleepycat.db.DatabaseEntry control, com.sleepycat.db.DatabaseEntry rec, DbEnv.RepProcessMessage envid, com.sleepycat.db.LogSequenceNumber ret_lsn) /* no exception */ {
+ public int rep_process_message(com.sleepycat.db.DatabaseEntry control, com.sleepycat.db.DatabaseEntry rec, int envid, com.sleepycat.db.LogSequenceNumber ret_lsn) /* no exception */ {
return db_javaJNI.DbEnv_rep_process_message(swigCPtr, control, rec, envid, ret_lsn);
}
@@ -474,6 +525,8 @@ public class DbEnv {
public void rep_set_config(int which, boolean onoff) throws com.sleepycat.db.DatabaseException { db_javaJNI.DbEnv_rep_set_config(swigCPtr, which, onoff); }
+ public void rep_set_lease(int clock_scale_factor, int flags) throws com.sleepycat.db.DatabaseException { db_javaJNI.DbEnv_rep_set_lease(swigCPtr, clock_scale_factor, flags); }
+
public void rep_start(com.sleepycat.db.DatabaseEntry cdata, int flags) throws com.sleepycat.db.DatabaseException { db_javaJNI.DbEnv_rep_start(swigCPtr, cdata, flags); }
public void rep_sync(int flags) throws com.sleepycat.db.DatabaseException { db_javaJNI.DbEnv_rep_sync(swigCPtr, flags); }
@@ -486,7 +539,7 @@ public class DbEnv {
public void set_rep_request(int min, int max) throws com.sleepycat.db.DatabaseException { db_javaJNI.DbEnv_set_rep_request(swigCPtr, min, max); }
- public void rep_set_transport(int envid, com.sleepycat.db.ReplicationTransport send) throws com.sleepycat.db.DatabaseException { db_javaJNI.DbEnv_rep_set_transport(swigCPtr, envid, (rep_transport_handler = send) ); }
+ public void rep_set_transport(int envid, com.sleepycat.db.ReplicationTransport send) throws com.sleepycat.db.DatabaseException { db_javaJNI.DbEnv_rep_set_transport(swigCPtr, envid, (rep_transport_handler = send) != null ); }
public int rep_get_nsites() throws com.sleepycat.db.DatabaseException {
return db_javaJNI.DbEnv_rep_get_nsites(swigCPtr);
@@ -518,6 +571,8 @@ public class DbEnv {
public void repmgr_start(int nthreads, int flags) throws com.sleepycat.db.DatabaseException { db_javaJNI.DbEnv_repmgr_start(swigCPtr, nthreads, flags); }
+ public com.sleepycat.db.ReplicationManagerStats repmgr_stat(int flags) throws com.sleepycat.db.DatabaseException { return db_javaJNI.DbEnv_repmgr_stat(swigCPtr, flags); }
+
public static String strerror(int error) /* no exception */ {
return db_javaJNI.DbEnv_strerror(error);
}
diff --git a/db/java/src/com/sleepycat/db/internal/DbLogc.java b/db/java/src/com/sleepycat/db/internal/DbLogc.java
index e2daad018..4c08d9a8b 100644
--- a/db/java/src/com/sleepycat/db/internal/DbLogc.java
+++ b/db/java/src/com/sleepycat/db/internal/DbLogc.java
@@ -46,4 +46,6 @@ public class DbLogc {
return db_javaJNI.DbLogc_get(swigCPtr, lsn, data, flags);
}
+ public int version(int flags) throws com.sleepycat.db.DatabaseException { return db_javaJNI.DbLogc_version(swigCPtr, flags); }
+
}
diff --git a/db/java/src/com/sleepycat/db/internal/DbUtil.java b/db/java/src/com/sleepycat/db/internal/DbUtil.java
index 520613d1e..0d43a6f13 100644
--- a/db/java/src/com/sleepycat/db/internal/DbUtil.java
+++ b/db/java/src/com/sleepycat/db/internal/DbUtil.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2001-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2001,2007 Oracle. All rights reserved.
*
- * $Id: DbUtil.java,v 12.3 2006/08/24 14:46:09 bostic Exp $
+ * $Id: DbUtil.java,v 12.5 2007/05/17 15:15:42 bostic Exp $
*/
package com.sleepycat.db.internal;
diff --git a/db/java/src/com/sleepycat/db/internal/Dbc.java b/db/java/src/com/sleepycat/db/internal/Dbc.java
index c45cef0fb..71b102ad7 100644
--- a/db/java/src/com/sleepycat/db/internal/Dbc.java
+++ b/db/java/src/com/sleepycat/db/internal/Dbc.java
@@ -57,6 +57,10 @@ public class Dbc {
return db_javaJNI.Dbc_get(swigCPtr, key, data, flags);
}
+ public int get_priority() throws com.sleepycat.db.DatabaseException {
+ return db_javaJNI.Dbc_get_priority(swigCPtr);
+ }
+
public int pget(com.sleepycat.db.DatabaseEntry key, com.sleepycat.db.DatabaseEntry pkey, com.sleepycat.db.DatabaseEntry data, int flags) throws com.sleepycat.db.DatabaseException {
return db_javaJNI.Dbc_pget(swigCPtr, key, pkey, data, flags);
}
@@ -65,4 +69,6 @@ public class Dbc {
return db_javaJNI.Dbc_put(swigCPtr, key, data, flags);
}
+ public void set_priority(int priority) throws com.sleepycat.db.DatabaseException { db_javaJNI.Dbc_set_priority(swigCPtr, priority); }
+
}
diff --git a/db/java/src/com/sleepycat/db/internal/db_javaJNI.java b/db/java/src/com/sleepycat/db/internal/db_javaJNI.java
index 7ad91c6a2..6deb55d51 100644
--- a/db/java/src/com/sleepycat/db/internal/db_javaJNI.java
+++ b/db/java/src/com/sleepycat/db/internal/db_javaJNI.java
@@ -13,6 +13,11 @@ class db_javaJNI {
static {
/* An alternate library name can be specified via a property. */
String libname;
+ int v_major, v_minor, v_patch;
+
+ v_major = DbConstants.DB_VERSION_MAJOR;
+ v_minor = DbConstants.DB_VERSION_MINOR;
+ v_patch = DbConstants.DB_VERSION_PATCH;
if ((libname =
System.getProperty("sleepycat.db.libfile")) != null)
@@ -27,9 +32,7 @@ class db_javaJNI {
* On Windows, library name is something like
* "libdb_java42.dll" or "libdb_java42d.dll".
*/
- libname = "libdb_java" +
- DbConstants.DB_VERSION_MAJOR +
- DbConstants.DB_VERSION_MINOR;
+ libname = "libdb_java" + v_major + v_minor;
try {
System.loadLibrary(libname);
@@ -47,18 +50,22 @@ class db_javaJNI {
* "libdb_java-3.0.so".
*/
System.loadLibrary("db_java-" +
- DbConstants.DB_VERSION_MAJOR + "." +
- DbConstants.DB_VERSION_MINOR);
+ v_major + "." + v_minor);
}
}
initialize();
- if (DbEnv_get_version_major() != DbConstants.DB_VERSION_MAJOR ||
- DbEnv_get_version_minor() != DbConstants.DB_VERSION_MINOR ||
- DbEnv_get_version_patch() != DbConstants.DB_VERSION_PATCH)
+ if (DbEnv_get_version_major() != v_major ||
+ DbEnv_get_version_minor() != v_minor ||
+ DbEnv_get_version_patch() != v_patch)
throw new RuntimeException(
- "Berkeley DB library version doesn't match Java classes");
+ "Berkeley DB library version " +
+ DbEnv_get_version_major() + "." +
+ DbEnv_get_version_minor() + "." +
+ DbEnv_get_version_patch() +
+ " doesn't match Java class library version " +
+ v_major + "." + v_minor + "." + v_patch);
}
static native final void initialize();
@@ -69,14 +76,14 @@ class db_javaJNI {
/* package */ final static native void deleteRef0(long jarg1);
/* package */ final static native long getDbEnv0(long jarg1);
public final static native long new_Db(long jarg1, int jarg2) throws com.sleepycat.db.DatabaseException;
- public final static native void Db_associate(long jarg1, long jarg2, long jarg3, com.sleepycat.db.SecondaryKeyCreator jarg4, int jarg5) throws com.sleepycat.db.DatabaseException;
+ public final static native void Db_associate(long jarg1, long jarg2, long jarg3, boolean jarg4, int jarg5) throws com.sleepycat.db.DatabaseException;
public final static native void Db_compact(long jarg1, long jarg2, com.sleepycat.db.DatabaseEntry jarg3, com.sleepycat.db.DatabaseEntry jarg4, com.sleepycat.db.CompactStats jarg5, int jarg6, com.sleepycat.db.DatabaseEntry jarg7) throws com.sleepycat.db.DatabaseException;
/* package */ final static native int Db_close0(long jarg1, int jarg2);
public final static native long Db_cursor(long jarg1, long jarg2, int jarg3) throws com.sleepycat.db.DatabaseException;
public final static native int Db_del(long jarg1, long jarg2, com.sleepycat.db.DatabaseEntry jarg3, int jarg4) throws com.sleepycat.db.DatabaseException;
public final static native void Db_err(long jarg1, int jarg2, String jarg3) /* no exception */;
public final static native void Db_errx(long jarg1, String jarg2) /* no exception */;
- public final static native boolean Db_get_transactional(long jarg1) throws com.sleepycat.db.DatabaseException;
+ public final static native int Db_exists(long jarg1, long jarg2, com.sleepycat.db.DatabaseEntry jarg3, int jarg4) throws com.sleepycat.db.DatabaseException;
public final static native int Db_get(long jarg1, long jarg2, com.sleepycat.db.DatabaseEntry jarg3, com.sleepycat.db.DatabaseEntry jarg4, int jarg5) throws com.sleepycat.db.DatabaseException;
public final static native boolean Db_get_byteswapped(long jarg1) throws com.sleepycat.db.DatabaseException;
public final static native long Db_get_cachesize(long jarg1) throws com.sleepycat.db.DatabaseException;
@@ -93,10 +100,13 @@ class db_javaJNI {
public final static native int Db_get_h_ffactor(long jarg1) throws com.sleepycat.db.DatabaseException;
public final static native int Db_get_h_nelem(long jarg1) throws com.sleepycat.db.DatabaseException;
public final static native int Db_get_re_delim(long jarg1) throws com.sleepycat.db.DatabaseException;
+ public final static native int Db_get_priority(long jarg1) throws com.sleepycat.db.DatabaseException;
public final static native int Db_get_re_len(long jarg1) throws com.sleepycat.db.DatabaseException;
public final static native int Db_get_re_pad(long jarg1) throws com.sleepycat.db.DatabaseException;
public final static native String Db_get_re_source(long jarg1) throws com.sleepycat.db.DatabaseException;
public final static native int Db_get_q_extentsize(long jarg1) throws com.sleepycat.db.DatabaseException;
+ public final static native boolean Db_get_multiple(long jarg1) throws com.sleepycat.db.DatabaseException;
+ public final static native boolean Db_get_transactional(long jarg1) throws com.sleepycat.db.DatabaseException;
public final static native int Db_get_type(long jarg1) throws com.sleepycat.db.DatabaseException;
public final static native long Db_join(long jarg1, Dbc[] jarg2, int jarg3) throws com.sleepycat.db.DatabaseException;
public final static native void Db_key_range(long jarg1, long jarg2, com.sleepycat.db.DatabaseEntry jarg3, com.sleepycat.db.KeyRange jarg4, int jarg5) throws com.sleepycat.db.DatabaseException;
@@ -105,20 +115,22 @@ class db_javaJNI {
public final static native int Db_put(long jarg1, long jarg2, com.sleepycat.db.DatabaseEntry jarg3, com.sleepycat.db.DatabaseEntry jarg4, int jarg5) throws com.sleepycat.db.DatabaseException;
/* package */ final static native void Db_remove0(long jarg1, String jarg2, String jarg3, int jarg4);
/* package */ final static native void Db_rename0(long jarg1, String jarg2, String jarg3, String jarg4, int jarg5);
- public final static native void Db_set_append_recno(long jarg1, com.sleepycat.db.RecordNumberAppender jarg2) throws com.sleepycat.db.DatabaseException;
- public final static native void Db_set_bt_compare(long jarg1, java.util.Comparator jarg2) throws com.sleepycat.db.DatabaseException;
+ public final static native void Db_set_append_recno(long jarg1, boolean jarg2) throws com.sleepycat.db.DatabaseException;
+ public final static native void Db_set_bt_compare(long jarg1, boolean jarg2) throws com.sleepycat.db.DatabaseException;
public final static native void Db_set_bt_minkey(long jarg1, int jarg2) throws com.sleepycat.db.DatabaseException;
- public final static native void Db_set_bt_prefix(long jarg1, com.sleepycat.db.BtreePrefixCalculator jarg2) throws com.sleepycat.db.DatabaseException;
+ public final static native void Db_set_bt_prefix(long jarg1, boolean jarg2) throws com.sleepycat.db.DatabaseException;
public final static native void Db_set_cachesize(long jarg1, long jarg2, int jarg3) throws com.sleepycat.db.DatabaseException;
- public final static native void Db_set_dup_compare(long jarg1, java.util.Comparator jarg2) throws com.sleepycat.db.DatabaseException;
+ public final static native void Db_set_dup_compare(long jarg1, boolean jarg2) throws com.sleepycat.db.DatabaseException;
public final static native void Db_set_encrypt(long jarg1, String jarg2, int jarg3) throws com.sleepycat.db.DatabaseException;
- public final static native void Db_set_feedback(long jarg1, com.sleepycat.db.FeedbackHandler jarg2) throws com.sleepycat.db.DatabaseException;
+ public final static native void Db_set_feedback(long jarg1, boolean jarg2) throws com.sleepycat.db.DatabaseException;
public final static native void Db_set_flags(long jarg1, int jarg2) throws com.sleepycat.db.DatabaseException;
+ public final static native void Db_set_h_compare(long jarg1, boolean jarg2) throws com.sleepycat.db.DatabaseException;
public final static native void Db_set_h_ffactor(long jarg1, int jarg2) throws com.sleepycat.db.DatabaseException;
- public final static native void Db_set_h_hash(long jarg1, com.sleepycat.db.Hasher jarg2) throws com.sleepycat.db.DatabaseException;
+ public final static native void Db_set_h_hash(long jarg1, boolean jarg2) throws com.sleepycat.db.DatabaseException;
public final static native void Db_set_h_nelem(long jarg1, int jarg2) throws com.sleepycat.db.DatabaseException;
public final static native void Db_set_lorder(long jarg1, int jarg2) throws com.sleepycat.db.DatabaseException;
public final static native void Db_set_pagesize(long jarg1, long jarg2) throws com.sleepycat.db.DatabaseException;
+ public final static native void Db_set_priority(long jarg1, int jarg2) throws com.sleepycat.db.DatabaseException;
public final static native void Db_set_re_delim(long jarg1, int jarg2) throws com.sleepycat.db.DatabaseException;
public final static native void Db_set_re_len(long jarg1, int jarg2) throws com.sleepycat.db.DatabaseException;
public final static native void Db_set_re_pad(long jarg1, int jarg2) throws com.sleepycat.db.DatabaseException;
@@ -134,8 +146,10 @@ class db_javaJNI {
public final static native int Dbc_del(long jarg1, int jarg2) throws com.sleepycat.db.DatabaseException;
public final static native long Dbc_dup(long jarg1, int jarg2) throws com.sleepycat.db.DatabaseException;
public final static native int Dbc_get(long jarg1, com.sleepycat.db.DatabaseEntry jarg2, com.sleepycat.db.DatabaseEntry jarg3, int jarg4) throws com.sleepycat.db.DatabaseException;
+ public final static native int Dbc_get_priority(long jarg1) throws com.sleepycat.db.DatabaseException;
public final static native int Dbc_pget(long jarg1, com.sleepycat.db.DatabaseEntry jarg2, com.sleepycat.db.DatabaseEntry jarg3, com.sleepycat.db.DatabaseEntry jarg4, int jarg5) throws com.sleepycat.db.DatabaseException;
public final static native int Dbc_put(long jarg1, com.sleepycat.db.DatabaseEntry jarg2, com.sleepycat.db.DatabaseEntry jarg3, int jarg4) throws com.sleepycat.db.DatabaseException;
+ public final static native void Dbc_set_priority(long jarg1, int jarg2) throws com.sleepycat.db.DatabaseException;
public final static native long new_DbEnv(int jarg1) throws com.sleepycat.db.DatabaseException;
/* package */ final static native void DbEnv_close0(long jarg1, int jarg2);
public final static native void DbEnv_dbremove(long jarg1, long jarg2, String jarg3, String jarg4, int jarg5) throws com.sleepycat.db.DatabaseException, java.io.FileNotFoundException;
@@ -157,24 +171,25 @@ class db_javaJNI {
public final static native void DbEnv_open(long jarg1, String jarg2, int jarg3, int jarg4) throws com.sleepycat.db.DatabaseException, java.io.FileNotFoundException;
/* package */ final static native void DbEnv_remove0(long jarg1, String jarg2, int jarg3);
public final static native void DbEnv_set_cachesize(long jarg1, long jarg2, int jarg3) throws com.sleepycat.db.DatabaseException;
+ public final static native void DbEnv_set_cache_max(long jarg1, long jarg2) throws com.sleepycat.db.DatabaseException;
public final static native void DbEnv_set_data_dir(long jarg1, String jarg2) throws com.sleepycat.db.DatabaseException;
public final static native void DbEnv_set_intermediate_dir(long jarg1, int jarg2, int jarg3) throws com.sleepycat.db.DatabaseException;
public final static native void DbEnv_set_encrypt(long jarg1, String jarg2, int jarg3) throws com.sleepycat.db.DatabaseException;
- public final static native void DbEnv_set_errcall(long jarg1, com.sleepycat.db.ErrorHandler jarg2) /* no exception */;
+ public final static native void DbEnv_set_errcall(long jarg1, boolean jarg2) /* no exception */;
public final static native void DbEnv_set_flags(long jarg1, int jarg2, boolean jarg3) throws com.sleepycat.db.DatabaseException;
- public final static native void DbEnv_set_feedback(long jarg1, com.sleepycat.db.FeedbackHandler jarg2) throws com.sleepycat.db.DatabaseException;
+ public final static native void DbEnv_set_feedback(long jarg1, boolean jarg2) throws com.sleepycat.db.DatabaseException;
public final static native void DbEnv_set_mp_max_openfd(long jarg1, int jarg2) throws com.sleepycat.db.DatabaseException;
- public final static native void DbEnv_set_mp_max_write(long jarg1, int jarg2, int jarg3) throws com.sleepycat.db.DatabaseException;
+ public final static native void DbEnv_set_mp_max_write(long jarg1, int jarg2, long jarg3) throws com.sleepycat.db.DatabaseException;
public final static native void DbEnv_set_mp_mmapsize(long jarg1, long jarg2) throws com.sleepycat.db.DatabaseException;
- public final static native void DbEnv_set_msgcall(long jarg1, com.sleepycat.db.MessageHandler jarg2) /* no exception */;
- public final static native void DbEnv_set_paniccall(long jarg1, com.sleepycat.db.PanicHandler jarg2) throws com.sleepycat.db.DatabaseException;
+ public final static native void DbEnv_set_msgcall(long jarg1, boolean jarg2) /* no exception */;
+ public final static native void DbEnv_set_paniccall(long jarg1, boolean jarg2) throws com.sleepycat.db.DatabaseException;
public final static native void DbEnv_set_rpc_server(long jarg1, String jarg2, long jarg3, long jarg4, int jarg5) throws com.sleepycat.db.DatabaseException;
public final static native void DbEnv_set_shm_key(long jarg1, long jarg2) throws com.sleepycat.db.DatabaseException;
public final static native void DbEnv_set_timeout(long jarg1, long jarg2, int jarg3) throws com.sleepycat.db.DatabaseException;
public final static native void DbEnv_set_tmp_dir(long jarg1, String jarg2) throws com.sleepycat.db.DatabaseException;
public final static native void DbEnv_set_tx_max(long jarg1, int jarg2) throws com.sleepycat.db.DatabaseException;
- public final static native void DbEnv_set_app_dispatch(long jarg1, com.sleepycat.db.LogRecordHandler jarg2) throws com.sleepycat.db.DatabaseException;
- public final static native void DbEnv_set_event_notify(long jarg1, com.sleepycat.db.EventHandler jarg2) throws com.sleepycat.db.DatabaseException;
+ public final static native void DbEnv_set_app_dispatch(long jarg1, boolean jarg2) throws com.sleepycat.db.DatabaseException;
+ public final static native void DbEnv_set_event_notify(long jarg1, boolean jarg2) throws com.sleepycat.db.DatabaseException;
/* package */ final static native void DbEnv_set_tx_timestamp0(long jarg1, long jarg2);
public final static native void DbEnv_set_verbose(long jarg1, int jarg2, boolean jarg3) throws com.sleepycat.db.DatabaseException;
public final static native byte[][] DbEnv_get_lk_conflicts(long jarg1) throws com.sleepycat.db.DatabaseException;
@@ -213,9 +228,10 @@ class db_javaJNI {
public final static native void DbEnv_set_lg_regionmax(long jarg1, int jarg2) throws com.sleepycat.db.DatabaseException;
public final static native long DbEnv_get_cachesize(long jarg1) throws com.sleepycat.db.DatabaseException;
public final static native int DbEnv_get_cachesize_ncache(long jarg1) throws com.sleepycat.db.DatabaseException;
+ public final static native long DbEnv_get_cache_max(long jarg1) throws com.sleepycat.db.DatabaseException;
public final static native int DbEnv_get_mp_max_openfd(long jarg1) throws com.sleepycat.db.DatabaseException;
public final static native int DbEnv_get_mp_max_write(long jarg1) throws com.sleepycat.db.DatabaseException;
- public final static native int DbEnv_get_mp_max_write_sleep(long jarg1) throws com.sleepycat.db.DatabaseException;
+ public final static native long DbEnv_get_mp_max_write_sleep(long jarg1) throws com.sleepycat.db.DatabaseException;
public final static native long DbEnv_get_mp_mmapsize(long jarg1) throws com.sleepycat.db.DatabaseException;
public final static native com.sleepycat.db.CacheStats DbEnv_memp_stat(long jarg1, int jarg2) throws com.sleepycat.db.DatabaseException;
public final static native com.sleepycat.db.CacheFileStats[] DbEnv_memp_fstat(long jarg1, int jarg2) throws com.sleepycat.db.DatabaseException;
@@ -237,17 +253,18 @@ class db_javaJNI {
public final static native com.sleepycat.db.PreparedTransaction[] DbEnv_txn_recover(long jarg1, int jarg2, int jarg3) throws com.sleepycat.db.DatabaseException;
public final static native com.sleepycat.db.TransactionStats DbEnv_txn_stat(long jarg1, int jarg2) throws com.sleepycat.db.DatabaseException;
public final static native long DbEnv_rep_get_limit(long jarg1) throws com.sleepycat.db.DatabaseException;
- public final static native int DbEnv_rep_elect(long jarg1, int jarg2, int jarg3, int jarg4) throws com.sleepycat.db.DatabaseException;
- public final static native int DbEnv_rep_process_message(long jarg1, com.sleepycat.db.DatabaseEntry jarg2, com.sleepycat.db.DatabaseEntry jarg3, DbEnv.RepProcessMessage jarg4, com.sleepycat.db.LogSequenceNumber jarg5) /* no exception */;
+ public final static native void DbEnv_rep_elect(long jarg1, int jarg2, int jarg3, int jarg4) throws com.sleepycat.db.DatabaseException;
+ public final static native int DbEnv_rep_process_message(long jarg1, com.sleepycat.db.DatabaseEntry jarg2, com.sleepycat.db.DatabaseEntry jarg3, int jarg4, com.sleepycat.db.LogSequenceNumber jarg5) /* no exception */;
public final static native void DbEnv_rep_flush(long jarg1) throws com.sleepycat.db.DatabaseException;
public final static native void DbEnv_rep_set_config(long jarg1, int jarg2, boolean jarg3) throws com.sleepycat.db.DatabaseException;
+ public final static native void DbEnv_rep_set_lease(long jarg1, int jarg2, int jarg3) throws com.sleepycat.db.DatabaseException;
public final static native void DbEnv_rep_start(long jarg1, com.sleepycat.db.DatabaseEntry jarg2, int jarg3) throws com.sleepycat.db.DatabaseException;
public final static native void DbEnv_rep_sync(long jarg1, int jarg2) throws com.sleepycat.db.DatabaseException;
public final static native boolean DbEnv_rep_get_config(long jarg1, int jarg2) throws com.sleepycat.db.DatabaseException;
public final static native com.sleepycat.db.ReplicationStats DbEnv_rep_stat(long jarg1, int jarg2) throws com.sleepycat.db.DatabaseException;
public final static native void DbEnv_rep_set_limit(long jarg1, long jarg2) throws com.sleepycat.db.DatabaseException;
public final static native void DbEnv_set_rep_request(long jarg1, int jarg2, int jarg3) throws com.sleepycat.db.DatabaseException;
- public final static native void DbEnv_rep_set_transport(long jarg1, int jarg2, com.sleepycat.db.ReplicationTransport jarg3) throws com.sleepycat.db.DatabaseException;
+ public final static native void DbEnv_rep_set_transport(long jarg1, int jarg2, boolean jarg3) throws com.sleepycat.db.DatabaseException;
public final static native int DbEnv_rep_get_nsites(long jarg1) throws com.sleepycat.db.DatabaseException;
public final static native int DbEnv_rep_get_priority(long jarg1) throws com.sleepycat.db.DatabaseException;
public final static native int DbEnv_rep_get_timeout(long jarg1, int jarg2) throws com.sleepycat.db.DatabaseException;
@@ -260,6 +277,7 @@ class db_javaJNI {
public final static native void DbEnv_repmgr_set_local_site(long jarg1, String jarg2, int jarg3, int jarg4) throws com.sleepycat.db.DatabaseException;
public final static native com.sleepycat.db.ReplicationHostAddress[] DbEnv_repmgr_site_list(long jarg1) throws com.sleepycat.db.DatabaseException;
public final static native void DbEnv_repmgr_start(long jarg1, int jarg2, int jarg3) throws com.sleepycat.db.DatabaseException;
+ public final static native com.sleepycat.db.ReplicationManagerStats DbEnv_repmgr_stat(long jarg1, int jarg2) throws com.sleepycat.db.DatabaseException;
public final static native String DbEnv_strerror(int jarg1) /* no exception */;
public final static native int DbEnv_get_version_major() /* no exception */;
public final static native int DbEnv_get_version_minor() /* no exception */;
@@ -268,6 +286,7 @@ class db_javaJNI {
/* package */ final static native void delete_DbLock(long jarg1);
/* package */ final static native void DbLogc_close0(long jarg1, int jarg2);
public final static native int DbLogc_get(long jarg1, com.sleepycat.db.LogSequenceNumber jarg2, com.sleepycat.db.DatabaseEntry jarg3, int jarg4) throws com.sleepycat.db.DatabaseException;
+ public final static native int DbLogc_version(long jarg1, int jarg2) throws com.sleepycat.db.DatabaseException;
public final static native int DbMpoolFile_get_priority(long jarg1) throws com.sleepycat.db.DatabaseException;
public final static native void DbMpoolFile_set_priority(long jarg1, int jarg2) throws com.sleepycat.db.DatabaseException;
public final static native int DbMpoolFile_get_flags(long jarg1) throws com.sleepycat.db.DatabaseException;
diff --git a/db/java/src/com/sleepycat/db/package.html b/db/java/src/com/sleepycat/db/package.html
index bea841ac2..afc37f1ae 100644
--- a/db/java/src/com/sleepycat/db/package.html
+++ b/db/java/src/com/sleepycat/db/package.html
@@ -5,10 +5,9 @@
See the file LICENSE for redistribution information.
- Copyright (c) 2002-2006
- Oracle Corporation. All rights reserved.
+ Copyright (c) 2002,2007 Oracle. All rights reserved.
- $Id: package.html,v 12.4 2006/08/31 18:14:08 bostic Exp $
+ $Id: package.html,v 12.6 2007/05/17 15:15:41 bostic Exp $
-->
</head>
diff --git a/db/java/src/com/sleepycat/util/ExceptionUnwrapper.java b/db/java/src/com/sleepycat/util/ExceptionUnwrapper.java
index 7d6e4b3d7..5cfb5e52f 100644
--- a/db/java/src/com/sleepycat/util/ExceptionUnwrapper.java
+++ b/db/java/src/com/sleepycat/util/ExceptionUnwrapper.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: ExceptionUnwrapper.java,v 12.4 2006/08/31 18:14:09 bostic Exp $
+ * $Id: ExceptionUnwrapper.java,v 12.6 2007/05/04 00:28:26 mark Exp $
*/
package com.sleepycat.util;
diff --git a/db/java/src/com/sleepycat/util/ExceptionWrapper.java b/db/java/src/com/sleepycat/util/ExceptionWrapper.java
index 78126aa0e..419d36001 100644
--- a/db/java/src/com/sleepycat/util/ExceptionWrapper.java
+++ b/db/java/src/com/sleepycat/util/ExceptionWrapper.java
@@ -1,11 +1,10 @@
/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
- *
- * $Id: ExceptionWrapper.java,v 12.5 2006/08/31 18:14:09 bostic Exp $
- */
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
+ *
+ * $Id: ExceptionWrapper.java,v 12.7 2007/05/04 00:28:26 mark Exp $
+ */
package com.sleepycat.util;
diff --git a/db/java/src/com/sleepycat/util/FastInputStream.java b/db/java/src/com/sleepycat/util/FastInputStream.java
index 4e7d13bf9..50671279f 100644
--- a/db/java/src/com/sleepycat/util/FastInputStream.java
+++ b/db/java/src/com/sleepycat/util/FastInputStream.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: FastInputStream.java,v 12.5 2006/08/31 18:14:09 bostic Exp $
+ * $Id: FastInputStream.java,v 12.7 2007/05/04 00:28:26 mark Exp $
*/
package com.sleepycat.util;
diff --git a/db/java/src/com/sleepycat/util/FastOutputStream.java b/db/java/src/com/sleepycat/util/FastOutputStream.java
index 5ef2ccbff..b4cfcc796 100644
--- a/db/java/src/com/sleepycat/util/FastOutputStream.java
+++ b/db/java/src/com/sleepycat/util/FastOutputStream.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: FastOutputStream.java,v 12.5 2006/08/31 18:14:09 bostic Exp $
+ * $Id: FastOutputStream.java,v 12.7 2007/05/04 00:28:26 mark Exp $
*/
package com.sleepycat.util;
diff --git a/db/java/src/com/sleepycat/util/IOExceptionWrapper.java b/db/java/src/com/sleepycat/util/IOExceptionWrapper.java
index 4ae4511a1..8068811d1 100644
--- a/db/java/src/com/sleepycat/util/IOExceptionWrapper.java
+++ b/db/java/src/com/sleepycat/util/IOExceptionWrapper.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: IOExceptionWrapper.java,v 12.4 2006/08/31 18:14:09 bostic Exp $
+ * $Id: IOExceptionWrapper.java,v 12.6 2007/05/04 00:28:26 mark Exp $
*/
package com.sleepycat.util;
diff --git a/db/java/src/com/sleepycat/util/PackedInteger.java b/db/java/src/com/sleepycat/util/PackedInteger.java
index 506b50b49..9c1489bd6 100644
--- a/db/java/src/com/sleepycat/util/PackedInteger.java
+++ b/db/java/src/com/sleepycat/util/PackedInteger.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: PackedInteger.java,v 12.2 2006/08/31 18:14:09 bostic Exp $
+ * $Id: PackedInteger.java,v 12.4 2007/05/04 00:28:26 mark Exp $
*/
package com.sleepycat.util;
@@ -22,24 +21,32 @@ package com.sleepycat.util;
* unsigned little endian integer.</p>
*
* <p>To read and write packed integer values, call {@link #readInt} and {@link
- * #writeInt}. To get the length of a packed integer without reading it, call
- * {@link #getReadIntLength}. To get the length of an unpacked integer without
- * writing it, call {@link #getWriteIntLength}.</p>
+ * #writeInt} or for long values {@link #readLong} and {@link #writeLong}. To
+ * get the length of a packed integer without reading it, call {@link
+ * #getReadIntLength} or {@link #getReadLongLength}. To get the length of an
+ * unpacked integer without writing it, call {@link #getWriteIntLength} or
+ * {@link #getWriteLongLength}.</p>
*
- * <p>Note that the packed integer format is designed to accomodate long
- * integers using up to 9 bytes of storage. Currently only int values are
- * implemented, but the same format may be used in future for long values.</p>
+ * <p>Because the same packed format is used for int and long values, stored
+ * int values may be expanded to long values without introducing a format
+ * incompatibility. You can treat previously stored packed int values as long
+ * values by calling {@link #readLong} and {@link #getReadLongLength}.</p>
+ *
+ * @author Mark Hayes
*/
public class PackedInteger {
/**
- * The maximum number of bytes needed to store an int value (5). The fifth
- * byte is only needed for values greater than (Integer.MAX_VALUE - 119) or
- * less than (Integer.MIN_VALUE + 119).
+ * The maximum number of bytes needed to store an int value (5).
*/
public static final int MAX_LENGTH = 5;
/**
+ * The maximum number of bytes needed to store a long value (9).
+ */
+ public static final int MAX_LONG_LENGTH = 9;
+
+ /**
* Reads a packed integer at the given buffer offset and returns it.
*
* @param buf the buffer to read from.
@@ -79,8 +86,63 @@ public class PackedInteger {
}
/**
+ * Reads a packed long integer at the given buffer offset and returns it.
+ *
+ * @param buf the buffer to read from.
+ *
+ * @param off the offset in the buffer at which to start reading.
+ *
+ * @return the long integer that was read.
+ */
+ public static long readLong(byte[] buf, int off) {
+
+ boolean negative;
+ int byteLen;
+
+ int b1 = buf[off++];
+ if (b1 < -119) {
+ negative = true;
+ byteLen = -b1 - 119;
+ } else if (b1 > 119) {
+ negative = false;
+ byteLen = b1 - 119;
+ } else {
+ return b1;
+ }
+
+ long value = buf[off++] & 0xFFL;
+ if (byteLen > 1) {
+ value |= (buf[off++] & 0xFFL) << 8;
+ if (byteLen > 2) {
+ value |= (buf[off++] & 0xFFL) << 16;
+ if (byteLen > 3) {
+ value |= (buf[off++] & 0xFFL) << 24;
+ if (byteLen > 4) {
+ value |= (buf[off++] & 0xFFL) << 32;
+ if (byteLen > 5) {
+ value |= (buf[off++] & 0xFFL) << 40;
+ if (byteLen > 6) {
+ value |= (buf[off++] & 0xFFL) << 48;
+ if (byteLen > 7) {
+ value |= (buf[off++] & 0xFFL) << 56;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return negative ? (-value - 119) : (value + 119);
+ }
+
+ /**
* Returns the number of bytes that would be read by {@link #readInt}.
*
+ * <p>Because the length is stored in the first byte, this method may be
+ * called with only the first byte of the packed integer in the given
+ * buffer. This method only accesses one byte at the given offset.</p>
+ *
* @param buf the buffer to read from.
*
* @param off the offset in the buffer at which to start reading.
@@ -100,6 +162,25 @@ public class PackedInteger {
}
/**
+ * Returns the number of bytes that would be read by {@link #readLong}.
+ *
+ * <p>Because the length is stored in the first byte, this method may be
+ * called with only the first byte of the packed integer in the given
+ * buffer. This method only accesses one byte at the given offset.</p>
+ *
+ * @param buf the buffer to read from.
+ *
+ * @param off the offset in the buffer at which to start reading.
+ *
+ * @return the number of bytes that would be read.
+ */
+ public static int getReadLongLength(byte[] buf, int off) {
+
+ /* The length is stored in the same way for int and long. */
+ return getReadIntLength(buf, off);
+ }
+
+ /**
* Writes a packed integer starting at the given buffer offset and returns
* the next offset to be written.
*
@@ -152,6 +233,82 @@ public class PackedInteger {
}
/**
+ * Writes a packed long integer starting at the given buffer offset and
+ * returns the next offset to be written.
+ *
+ * @param buf the buffer to write to.
+ *
+ * @param offset the offset in the buffer at which to start writing.
+ *
+ * @param value the long integer to be written.
+ *
+ * @return the offset past the bytes written.
+ */
+ public static int writeLong(byte[] buf, int offset, long value) {
+
+ int byte1Off = offset;
+ boolean negative;
+
+ if (value < -119) {
+ negative = true;
+ value = -value - 119;
+ } else if (value > 119) {
+ negative = false;
+ value = value - 119;
+ } else {
+ buf[offset++] = (byte) value;
+ return offset;
+ }
+ offset++;
+
+ buf[offset++] = (byte) value;
+ if ((value & 0xFFFFFFFFFFFFFF00L) == 0) {
+ buf[byte1Off] = negative ? (byte) -120 : (byte) 120;
+ return offset;
+ }
+
+ buf[offset++] = (byte) (value >>> 8);
+ if ((value & 0xFFFFFFFFFFFF0000L) == 0) {
+ buf[byte1Off] = negative ? (byte) -121 : (byte) 121;
+ return offset;
+ }
+
+ buf[offset++] = (byte) (value >>> 16);
+ if ((value & 0xFFFFFFFFFF000000L) == 0) {
+ buf[byte1Off] = negative ? (byte) -122 : (byte) 122;
+ return offset;
+ }
+
+ buf[offset++] = (byte) (value >>> 24);
+ if ((value & 0xFFFFFFFF00000000L) == 0) {
+ buf[byte1Off] = negative ? (byte) -123 : (byte) 123;
+ return offset;
+ }
+
+ buf[offset++] = (byte) (value >>> 32);
+ if ((value & 0xFFFFFF0000000000L) == 0) {
+ buf[byte1Off] = negative ? (byte) -124 : (byte) 124;
+ return offset;
+ }
+
+ buf[offset++] = (byte) (value >>> 40);
+ if ((value & 0xFFFF000000000000L) == 0) {
+ buf[byte1Off] = negative ? (byte) -125 : (byte) 125;
+ return offset;
+ }
+
+ buf[offset++] = (byte) (value >>> 48);
+ if ((value & 0xFF00000000000000L) == 0) {
+ buf[byte1Off] = negative ? (byte) -126 : (byte) 126;
+ return offset;
+ }
+
+ buf[offset++] = (byte) (value >>> 56);
+ buf[byte1Off] = negative ? (byte) -127 : (byte) 127;
+ return offset;
+ }
+
+ /**
* Returns the number of bytes that would be written by {@link #writeInt}.
*
* @param value the integer to be written.
@@ -180,4 +337,46 @@ public class PackedInteger {
}
return 5;
}
+
+ /**
+ * Returns the number of bytes that would be written by {@link #writeLong}.
+ *
+ * @param value the long integer to be written.
+ *
+ * @return the number of bytes that would be used to write the given long
+ * integer.
+ */
+ public static int getWriteLongLength(long value) {
+
+ if (value < -119) {
+ value = -value - 119;
+ } else if (value > 119) {
+ value = value - 119;
+ } else {
+ return 1;
+ }
+
+ if ((value & 0xFFFFFFFFFFFFFF00L) == 0) {
+ return 2;
+ }
+ if ((value & 0xFFFFFFFFFFFF0000L) == 0) {
+ return 3;
+ }
+ if ((value & 0xFFFFFFFFFF000000L) == 0) {
+ return 4;
+ }
+ if ((value & 0xFFFFFFFF00000000L) == 0) {
+ return 5;
+ }
+ if ((value & 0xFFFFFF0000000000L) == 0) {
+ return 6;
+ }
+ if ((value & 0xFFFF000000000000L) == 0) {
+ return 7;
+ }
+ if ((value & 0xFF00000000000000L) == 0) {
+ return 8;
+ }
+ return 9;
+ }
}
diff --git a/db/java/src/com/sleepycat/util/RuntimeExceptionWrapper.java b/db/java/src/com/sleepycat/util/RuntimeExceptionWrapper.java
index cc92188cd..3922b5250 100644
--- a/db/java/src/com/sleepycat/util/RuntimeExceptionWrapper.java
+++ b/db/java/src/com/sleepycat/util/RuntimeExceptionWrapper.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: RuntimeExceptionWrapper.java,v 12.4 2006/08/31 18:14:09 bostic Exp $
+ * $Id: RuntimeExceptionWrapper.java,v 12.6 2007/05/04 00:28:26 mark Exp $
*/
package com.sleepycat.util;
diff --git a/db/java/src/com/sleepycat/util/UtfOps.java b/db/java/src/com/sleepycat/util/UtfOps.java
index 147f6baff..3ab06aca3 100644
--- a/db/java/src/com/sleepycat/util/UtfOps.java
+++ b/db/java/src/com/sleepycat/util/UtfOps.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: UtfOps.java,v 12.3 2006/08/31 18:14:09 bostic Exp $
+ * $Id: UtfOps.java,v 12.5 2007/05/04 00:28:26 mark Exp $
*/
package com.sleepycat.util;
diff --git a/db/java/src/com/sleepycat/util/keyrange/KeyRange.java b/db/java/src/com/sleepycat/util/keyrange/KeyRange.java
index 23f70de92..af12f3b3c 100644
--- a/db/java/src/com/sleepycat/util/keyrange/KeyRange.java
+++ b/db/java/src/com/sleepycat/util/keyrange/KeyRange.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: KeyRange.java,v 1.2 2006/08/31 18:14:11 bostic Exp $
+ * $Id: KeyRange.java,v 1.4 2007/05/04 00:28:27 mark Exp $
*/
package com.sleepycat.util.keyrange;
@@ -269,10 +268,19 @@ public class KeyRange {
* non-zero.
*/
public static byte[] getByteArray(DatabaseEntry entry) {
+ return getByteArrayInternal(entry, Integer.MAX_VALUE);
+ }
+
+ public static byte[] getByteArray(DatabaseEntry entry, int maxBytes) {
+ return getByteArrayInternal(entry, maxBytes);
+ }
+
+ private static byte[] getByteArrayInternal(DatabaseEntry entry,
+ int maxBytes) {
byte[] bytes = entry.getData();
if (bytes == null) return null;
- int size = entry.getSize();
+ int size = Math.min(entry.getSize(), maxBytes);
byte[] data;
if (size == 0) {
data = ZERO_LENGTH_BYTE_ARRAY;
diff --git a/db/java/src/com/sleepycat/util/keyrange/KeyRangeException.java b/db/java/src/com/sleepycat/util/keyrange/KeyRangeException.java
index e4c077f1a..cca09bc07 100644
--- a/db/java/src/com/sleepycat/util/keyrange/KeyRangeException.java
+++ b/db/java/src/com/sleepycat/util/keyrange/KeyRangeException.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: KeyRangeException.java,v 1.2 2006/08/31 18:14:11 bostic Exp $
+ * $Id: KeyRangeException.java,v 1.4 2007/05/04 00:28:27 mark Exp $
*/
package com.sleepycat.util.keyrange;
diff --git a/db/java/src/com/sleepycat/util/keyrange/RangeCursor.java b/db/java/src/com/sleepycat/util/keyrange/RangeCursor.java
index 9b65912ba..d8047b443 100644
--- a/db/java/src/com/sleepycat/util/keyrange/RangeCursor.java
+++ b/db/java/src/com/sleepycat/util/keyrange/RangeCursor.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: RangeCursor.java,v 1.3 2006/09/08 20:32:14 bostic Exp $
+ * $Id: RangeCursor.java,v 1.6 2007/05/17 18:17:20 bostic Exp $
*/
package com.sleepycat.util.keyrange;
diff --git a/db/libdb_java/db.i b/db/libdb_java/db.i
index 92001d02c..8f1d3307c 100644
--- a/db/libdb_java/db.i
+++ b/db/libdb_java/db.i
@@ -144,8 +144,9 @@ struct Db
self->errx(self, message);
}
- int_bool get_transactional() {
- return self->get_transactional(self);
+ JAVA_EXCEPT(DB_RETOK_EXISTS, DB2JDBENV)
+ int exists(DB_TXN *txnid, DBT *key, u_int32_t flags) {
+ return self->exists(self, txnid, key, flags);
}
#ifndef SWIGJAVA
@@ -270,6 +271,12 @@ struct Db
return ret;
}
+ DB_CACHE_PRIORITY get_priority() {
+ DB_CACHE_PRIORITY ret;
+ errno = self->get_priority(self, &ret);
+ return ret;
+ }
+
u_int32_t get_re_len() {
u_int32_t ret = 0;
errno = self->get_re_len(self, &ret);
@@ -294,6 +301,16 @@ struct Db
return ret;
}
+ JAVA_EXCEPT_NONE
+ int_bool get_multiple() {
+ return self->get_multiple(self);
+ }
+
+ int_bool get_transactional() {
+ return self->get_transactional(self);
+ }
+
+ JAVA_EXCEPT_ERRNO(DB_RETOK_STD, DB2JDBENV)
DBTYPE get_type() {
DBTYPE type = (DBTYPE)0;
errno = self->get_type(self, &type);
@@ -396,6 +413,11 @@ struct Db
return self->set_flags(self, flags);
}
+ db_ret_t set_h_compare(
+ int (*h_compare_fcn)(DB *, const DBT *, const DBT *)) {
+ return self->set_h_compare(self, h_compare_fcn);
+ }
+
db_ret_t set_h_ffactor(u_int32_t h_ffactor) {
return self->set_h_ffactor(self, h_ffactor);
}
@@ -429,6 +451,10 @@ struct Db
}
#endif /* SWIGJAVA */
+ db_ret_t set_priority(DB_CACHE_PRIORITY priority) {
+ return self->set_priority(self, priority);
+ }
+
db_ret_t set_re_delim(int re_delim) {
return self->set_re_delim(self, re_delim);
}
@@ -498,40 +524,53 @@ struct Dbc
%extend {
JAVA_EXCEPT(DB_RETOK_STD, NULL)
db_ret_t close() {
- return self->c_close(self);
+ return self->close(self);
}
JAVA_EXCEPT_ERRNO(DB_RETOK_STD, DBC2JDBENV)
db_recno_t count(u_int32_t flags) {
db_recno_t count = 0;
- errno = self->c_count(self, &count, flags);
+ errno = self->count(self, &count, flags);
return count;
}
JAVA_EXCEPT(DB_RETOK_DBCDEL, DBC2JDBENV)
int del(u_int32_t flags) {
- return self->c_del(self, flags);
+ return self->del(self, flags);
}
JAVA_EXCEPT_ERRNO(DB_RETOK_STD, DBC2JDBENV)
DBC *dup(u_int32_t flags) {
DBC *newcurs = NULL;
- errno = self->c_dup(self, &newcurs, flags);
+ errno = self->dup(self, &newcurs, flags);
return newcurs;
}
JAVA_EXCEPT(DB_RETOK_DBCGET, DBC2JDBENV)
int get(DBT* key, DBT *data, u_int32_t flags) {
- return self->c_get(self, key, data, flags);
+ return self->get(self, key, data, flags);
}
+ JAVA_EXCEPT_ERRNO(DB_RETOK_STD, DBC2JDBENV)
+ DB_CACHE_PRIORITY get_priority() {
+ DB_CACHE_PRIORITY ret;
+ errno = self->get_priority(self, &ret);
+ return ret;
+ }
+
+ JAVA_EXCEPT(DB_RETOK_DBCGET, DBC2JDBENV)
int pget(DBT* key, DBT* pkey, DBT *data, u_int32_t flags) {
- return self->c_pget(self, key, pkey, data, flags);
+ return self->pget(self, key, pkey, data, flags);
}
JAVA_EXCEPT(DB_RETOK_DBCPUT, DBC2JDBENV)
int put(DBT* key, DBT *data, u_int32_t flags) {
- return self->c_put(self, key, data, flags);
+ return self->put(self, key, data, flags);
+ }
+
+ JAVA_EXCEPT_ERRNO(DB_RETOK_STD, DBC2JDBENV)
+ db_ret_t set_priority(DB_CACHE_PRIORITY priority) {
+ return self->set_priority(self, priority);
}
}
};
@@ -575,6 +614,12 @@ struct DbEnv
}
#ifndef SWIGJAVA
+ u_int32_t get_thread_count() {
+ u_int32_t ret;
+ errno = self->get_thread_count(self, &ret);
+ return ret;
+ }
+
pid_t getpid() {
pid_t ret;
db_threadid_t junk;
@@ -708,6 +753,12 @@ struct DbEnv
(u_int32_t)(bytes % GIGABYTE), ncache);
}
+ db_ret_t set_cache_max(jlong bytes) {
+ return self->set_cache_max(self,
+ (u_int32_t)(bytes / GIGABYTE),
+ (u_int32_t)(bytes % GIGABYTE));
+ }
+
db_ret_t set_data_dir(const char *dir) {
return self->set_data_dir(self, dir);
}
@@ -745,7 +796,7 @@ struct DbEnv
return self->set_mp_max_openfd(self, maxopenfd);
}
- db_ret_t set_mp_max_write(int maxwrite, int maxwrite_sleep) {
+ db_ret_t set_mp_max_write(int maxwrite, db_timeout_t maxwrite_sleep) {
return self->set_mp_max_write(self, maxwrite, maxwrite_sleep);
}
@@ -1017,6 +1068,12 @@ struct DbEnv
return ret;
}
+ jlong get_cache_max() {
+ u_int32_t gbytes, bytes;
+ errno = self->get_cache_max(self, &gbytes, &bytes);
+ return (jlong)gbytes * GIGABYTE + bytes;
+ }
+
int get_mp_max_openfd() {
int ret;
errno = self->get_mp_max_openfd(self, &ret);
@@ -1024,15 +1081,17 @@ struct DbEnv
}
int get_mp_max_write() {
- int ret, junk;
- errno = self->get_mp_max_write(self, &ret, &junk);
- return ret;
+ int maxwrite;
+ db_timeout_t sleep;
+ errno = self->get_mp_max_write(self, &maxwrite, &sleep);
+ return maxwrite;
}
- int get_mp_max_write_sleep() {
- int ret, junk;
- errno = self->get_mp_max_write(self, &junk, &ret);
- return ret;
+ db_timeout_t get_mp_max_write_sleep() {
+ int maxwrite;
+ db_timeout_t sleep;
+ errno = self->get_mp_max_write(self, &maxwrite, &sleep);
+ return sleep;
}
size_t get_mp_mmapsize() {
@@ -1173,14 +1232,13 @@ struct DbEnv
return (jlong)gbytes * GIGABYTE + bytes;
}
- int rep_elect(int nsites, int nvotes, u_int32_t flags) {
- int id;
- errno = self->rep_elect(self, nsites, nvotes, &id, flags);
- return id;
+ JAVA_EXCEPT(DB_RETOK_STD, JDBENV)
+ db_ret_t rep_elect(int nsites, int nvotes, u_int32_t flags) {
+ return self->rep_elect(self, nsites, nvotes, flags);
}
-
+
JAVA_EXCEPT(DB_RETOK_REPPMSG, JDBENV)
- int rep_process_message(DBT *control, DBT *rec, int *envid,
+ int rep_process_message(DBT *control, DBT *rec, int envid,
DB_LSN *ret_lsn) {
return self->rep_process_message(self, control, rec, envid,
ret_lsn);
@@ -1195,6 +1253,10 @@ struct DbEnv
return self->rep_set_config(self, which, onoff);
}
+ db_ret_t rep_set_lease(u_int32_t clock_scale_factor, u_int32_t flags) {
+ return self->rep_set_lease(self, clock_scale_factor, flags);
+ }
+
db_ret_t rep_start(DBT *cdata, u_int32_t flags) {
return self->rep_start(self, cdata, flags);
}
@@ -1302,6 +1364,13 @@ struct DbEnv
return self->repmgr_start(self, nthreads, flags);
}
+ JAVA_EXCEPT_ERRNO(DB_RETOK_STD, JDBENV)
+ DB_REPMGR_STAT *repmgr_stat(u_int32_t flags) {
+ DB_REPMGR_STAT *statp = NULL;
+ errno = self->repmgr_stat(self, &statp, flags);
+ return statp;
+ }
+
/* Convert DB errors to strings */
JAVA_EXCEPT_NONE
static const char *strerror(int error) {
@@ -1349,6 +1418,13 @@ struct DbLogc
int get(DB_LSN *lsn, DBT *data, u_int32_t flags) {
return self->get(self, lsn, data, flags);
}
+
+ JAVA_EXCEPT_ERRNO(DB_RETOK_STD, NULL)
+ u_int32_t version(u_int32_t flags) {
+ u_int32_t result;
+ errno = self->version(self, &result, flags);
+ return result;
+ }
}
};
diff --git a/db/libdb_java/db_java.i b/db/libdb_java/db_java.i
index dd4ff939c..bc9ff29b3 100644
--- a/db/libdb_java/db_java.i
+++ b/db/libdb_java/db_java.i
@@ -71,6 +71,7 @@ import java.util.Comparator;
private ReplicationTransport rep_transport_handler;
private java.io.OutputStream error_stream;
private java.io.OutputStream message_stream;
+ private ThreadLocal errMsg;
public static class RepProcessMessage {
public int envid;
@@ -82,6 +83,7 @@ import java.util.Comparator;
*/
void initialize() {
dbenv_ref = db_java.initDbEnvRef0(this, this);
+ errMsg = new ThreadLocal();
/* Start with System.err as the default error stream. */
set_error_stream(System.err);
set_message_stream(System.out);
@@ -102,8 +104,8 @@ import java.util.Comparator;
}
private final int handle_app_dispatch(DatabaseEntry dbt,
- LogSequenceNumber lsn,
- int recops) {
+ LogSequenceNumber lsn,
+ int recops) {
return app_dispatch_handler.handleLogRecord(wrapper, dbt, lsn,
RecoveryOperation.fromFlag(recops));
}
@@ -112,8 +114,36 @@ import java.util.Comparator;
return app_dispatch_handler;
}
- private final int handle_event_notify(int event) {
- return event_notify_handler.handleEvent(EventType.fromInt(event));
+ private final void handle_panic_event_notify() {
+ event_notify_handler.handlePanicEvent();
+ }
+
+ private final void handle_rep_client_event_notify() {
+ event_notify_handler.handleRepClientEvent();
+ }
+
+ private final void handle_rep_elected_event_notify() {
+ event_notify_handler.handleRepElectedEvent();
+ }
+
+ private final void handle_rep_master_event_notify() {
+ event_notify_handler.handleRepMasterEvent();
+ }
+
+ private final void handle_rep_new_master_event_notify(int envid) {
+ event_notify_handler.handleRepNewMasterEvent(envid);
+ }
+
+ private final void handle_rep_perm_failed_event_notify() {
+ event_notify_handler.handleRepPermFailedEvent();
+ }
+
+ private final void handle_rep_startup_done_event_notify() {
+ event_notify_handler.handleRepStartupDoneEvent();
+ }
+
+ private final void handle_write_failed_event_notify(int errno) {
+ event_notify_handler.handleWriteFailedEvent(errno);
}
public EventHandler get_event_notify() {
@@ -139,9 +169,29 @@ import java.util.Comparator;
}
private final void handle_error(String msg) {
+ StringBuffer tbuf = (StringBuffer) errMsg.get();
+ /*
+ * Populate the errMsg ThreadLocal on demand, since the
+ * callback can be made from different threads.
+ */
+ if (tbuf == null) {
+ tbuf = new StringBuffer();
+ errMsg.set(tbuf);
+ }
+ tbuf.append(msg);
error_handler.error(wrapper, this.errpfx, msg);
}
+ private final String get_err_msg(String orig_msg) {
+ String ret = null;
+ StringBuffer tbuf = (StringBuffer) errMsg.get();
+ if (tbuf != null) {
+ ret = tbuf.toString();
+ tbuf.delete(0, tbuf.length());
+ }
+ return orig_msg + ": " + ret;
+ }
+
public ErrorHandler get_errcall() {
return error_handler;
}
@@ -163,20 +213,20 @@ import java.util.Comparator;
}
private final int handle_rep_transport(DatabaseEntry control,
- DatabaseEntry rec,
- LogSequenceNumber lsn,
- int envid, int flags)
+ DatabaseEntry rec,
+ LogSequenceNumber lsn,
+ int envid, int flags)
throws DatabaseException {
return rep_transport_handler.send(wrapper,
control, rec, lsn, envid,
(flags & DbConstants.DB_REP_NOBUFFER) != 0,
- (flags & DbConstants.DB_REP_PERMANENT) != 0,
- (flags & DbConstants.DB_REP_ANYWHERE) != 0,
- (flags & DbConstants.DB_REP_REREQUEST) != 0);
+ (flags & DbConstants.DB_REP_PERMANENT) != 0,
+ (flags & DbConstants.DB_REP_ANYWHERE) != 0,
+ (flags & DbConstants.DB_REP_REREQUEST) != 0);
}
public void lock_vec(/*u_int32_t*/ int locker, int flags,
- LockRequest[] list, int offset, int count)
+ LockRequest[] list, int offset, int count)
throws DatabaseException {
db_javaJNI.DbEnv_lock_vec(swigCPtr, locker, flags, list,
offset, count);
@@ -209,7 +259,6 @@ import java.util.Comparator;
return error_stream;
}
-
public void set_message_stream(java.io.OutputStream stream) {
message_stream = stream;
final java.io.PrintWriter pw = new java.io.PrintWriter(stream);
@@ -248,8 +297,10 @@ import java.util.Comparator;
private BtreePrefixCalculator bt_prefix_handler;
private Comparator dup_compare_handler;
private FeedbackHandler db_feedback_handler;
+ private Comparator h_compare_handler;
private Hasher h_hash_handler;
private SecondaryKeyCreator seckey_create_handler;
+ private SecondaryMultiKeyCreator secmultikey_create_handler;
/* Called by the Db constructor */
private void initialize(DbEnv dbenv) {
@@ -305,7 +356,7 @@ import java.util.Comparator;
}
private final int handle_bt_prefix(DatabaseEntry dbt1,
- DatabaseEntry dbt2) {
+ DatabaseEntry dbt2) {
return bt_prefix_handler.prefix(wrapper, dbt1, dbt2);
}
@@ -325,6 +376,14 @@ import java.util.Comparator;
return db_feedback_handler;
}
+ private final int handle_h_compare(byte[] arr1, byte[] arr2) {
+ return h_compare_handler.compare(arr1, arr2);
+ }
+
+ public Comparator get_h_compare() {
+ return h_compare_handler;
+ }
+
private final int handle_dup_compare(byte[] arr1, byte[] arr2) {
return dup_compare_handler.compare(arr1, arr2);
}
@@ -341,19 +400,43 @@ import java.util.Comparator;
return h_hash_handler;
}
- private final int handle_seckey_create(DatabaseEntry key,
- DatabaseEntry data,
- DatabaseEntry result)
+ private final DatabaseEntry[] handle_seckey_create(
+ DatabaseEntry key,
+ DatabaseEntry data)
throws DatabaseException {
- return seckey_create_handler.createSecondaryKey(
- (SecondaryDatabase)wrapper, key, data, result) ?
- 0 : DbConstants.DB_DONOTINDEX;
+
+ if (secmultikey_create_handler != null) {
+ java.util.HashSet keySet = new java.util.HashSet();
+ secmultikey_create_handler.createSecondaryKeys(
+ (SecondaryDatabase)wrapper, key, data, keySet);
+ if (!keySet.isEmpty())
+ return (DatabaseEntry[])keySet.toArray(
+ new DatabaseEntry[keySet.size()]);
+ } else {
+ DatabaseEntry result = new DatabaseEntry();
+ if (seckey_create_handler.createSecondaryKey(
+ (SecondaryDatabase)wrapper, key, data, result)) {
+ DatabaseEntry[] results = { result };
+ return results;
+ }
+ }
+
+ return null;
}
public SecondaryKeyCreator get_seckey_create() {
return seckey_create_handler;
}
+ public SecondaryMultiKeyCreator get_secmultikey_create() {
+ return secmultikey_create_handler;
+ }
+
+ public void get_secmultikey_create(
+ SecondaryMultiKeyCreator secmultikey_create_handler) {
+ this.secmultikey_create_handler = secmultikey_create_handler;
+ }
+
public synchronized void remove(String file, String database, int flags)
throws DatabaseException, java.io.FileNotFoundException {
try {
diff --git a/db/libdb_java/db_java_wrap.c b/db/libdb_java/db_java_wrap.c
index 14253433b..7e047e52e 100644
--- a/db/libdb_java/db_java_wrap.c
+++ b/db/libdb_java/db_java_wrap.c
@@ -205,13 +205,14 @@ static jclass keyrange_class;
static jclass bt_stat_class, compact_class, h_stat_class, lock_stat_class;
static jclass log_stat_class, mpool_stat_class, mpool_fstat_class;
static jclass mutex_stat_class, qam_stat_class, rep_stat_class;
-static jclass rephost_class, seq_stat_class, txn_stat_class;
+static jclass repmgr_stat_class, rephost_class, seq_stat_class, txn_stat_class;
static jclass txn_active_class;
-static jclass lock_class, lockreq_class, rep_processmsg_class;
+static jclass lock_class, lockreq_class;
static jclass dbex_class, deadex_class, lockex_class, memex_class;
static jclass repdupmasterex_class, rephandledeadex_class;
-static jclass repholdelectionex_class, repjoinfailex_class, replockoutex_class;
-static jclass repunavailex_class;
+static jclass repholdelectionex_class, repjoinfailex_class;
+static jclass repleaseexpiredex_class, repleasetimeoutex_class;
+static jclass replockoutex_class, repunavailex_class;
static jclass runrecex_class, versionex_class;
static jclass filenotfoundex_class, illegalargex_class, outofmemerr_class;
static jclass bytearray_class, string_class, outputstream_class;
@@ -224,7 +225,6 @@ static jfieldID kr_less_fid, kr_equal_fid, kr_greater_fid;
static jfieldID lock_cptr_fid;
static jfieldID lockreq_op_fid, lockreq_modeflag_fid, lockreq_timeout_fid;
static jfieldID lockreq_obj_fid, lockreq_lock_fid;
-static jfieldID rep_processmsg_envid_fid;
static jfieldID rephost_port_fid, rephost_host_fid, rephost_eid_fid;
static jfieldID rephost_status_fid;
@@ -234,6 +234,7 @@ static jfieldID bt_stat_bt_version_fid;
static jfieldID bt_stat_bt_metaflags_fid;
static jfieldID bt_stat_bt_nkeys_fid;
static jfieldID bt_stat_bt_ndata_fid;
+static jfieldID bt_stat_bt_pagecnt_fid;
static jfieldID bt_stat_bt_pagesize_fid;
static jfieldID bt_stat_bt_minkey_fid;
static jfieldID bt_stat_bt_re_len_fid;
@@ -263,6 +264,7 @@ static jfieldID h_stat_hash_version_fid;
static jfieldID h_stat_hash_metaflags_fid;
static jfieldID h_stat_hash_nkeys_fid;
static jfieldID h_stat_hash_ndata_fid;
+static jfieldID h_stat_hash_pagecnt_fid;
static jfieldID h_stat_hash_pagesize_fid;
static jfieldID h_stat_hash_ffactor_fid;
static jfieldID h_stat_hash_buckets_fid;
@@ -280,9 +282,9 @@ static jfieldID lock_stat_st_maxlocks_fid;
static jfieldID lock_stat_st_maxlockers_fid;
static jfieldID lock_stat_st_maxobjects_fid;
static jfieldID lock_stat_st_nmodes_fid;
+static jfieldID lock_stat_st_nlockers_fid;
static jfieldID lock_stat_st_nlocks_fid;
static jfieldID lock_stat_st_maxnlocks_fid;
-static jfieldID lock_stat_st_nlockers_fid;
static jfieldID lock_stat_st_maxnlockers_fid;
static jfieldID lock_stat_st_nobjects_fid;
static jfieldID lock_stat_st_maxnobjects_fid;
@@ -297,19 +299,26 @@ static jfieldID lock_stat_st_locktimeout_fid;
static jfieldID lock_stat_st_nlocktimeouts_fid;
static jfieldID lock_stat_st_txntimeout_fid;
static jfieldID lock_stat_st_ntxntimeouts_fid;
+static jfieldID lock_stat_st_objs_wait_fid;
+static jfieldID lock_stat_st_objs_nowait_fid;
+static jfieldID lock_stat_st_lockers_wait_fid;
+static jfieldID lock_stat_st_lockers_nowait_fid;
+static jfieldID lock_stat_st_locks_wait_fid;
+static jfieldID lock_stat_st_locks_nowait_fid;
static jfieldID lock_stat_st_region_wait_fid;
static jfieldID lock_stat_st_region_nowait_fid;
+static jfieldID lock_stat_st_hash_len_fid;
static jfieldID lock_stat_st_regsize_fid;
static jfieldID log_stat_st_magic_fid;
static jfieldID log_stat_st_version_fid;
static jfieldID log_stat_st_mode_fid;
static jfieldID log_stat_st_lg_bsize_fid;
static jfieldID log_stat_st_lg_size_fid;
+static jfieldID log_stat_st_wc_bytes_fid;
+static jfieldID log_stat_st_wc_mbytes_fid;
static jfieldID log_stat_st_record_fid;
static jfieldID log_stat_st_w_bytes_fid;
static jfieldID log_stat_st_w_mbytes_fid;
-static jfieldID log_stat_st_wc_bytes_fid;
-static jfieldID log_stat_st_wc_mbytes_fid;
static jfieldID log_stat_st_wcount_fid;
static jfieldID log_stat_st_wcount_fill_fid;
static jfieldID log_stat_st_rcount_fid;
@@ -320,9 +329,9 @@ static jfieldID log_stat_st_cur_file_fid;
static jfieldID log_stat_st_cur_offset_fid;
static jfieldID log_stat_st_disk_file_fid;
static jfieldID log_stat_st_disk_offset_fid;
-static jfieldID log_stat_st_regsize_fid;
static jfieldID log_stat_st_maxcommitperflush_fid;
static jfieldID log_stat_st_mincommitperflush_fid;
+static jfieldID log_stat_st_regsize_fid;
static jfieldID mpool_fstat_file_name_fid;
static jfieldID mpool_fstat_st_pagesize_fid;
static jfieldID mpool_fstat_st_map_fid;
@@ -334,11 +343,12 @@ static jfieldID mpool_fstat_st_page_out_fid;
static jfieldID mpool_stat_st_gbytes_fid;
static jfieldID mpool_stat_st_bytes_fid;
static jfieldID mpool_stat_st_ncache_fid;
-static jfieldID mpool_stat_st_regsize_fid;
+static jfieldID mpool_stat_st_max_ncache_fid;
static jfieldID mpool_stat_st_mmapsize_fid;
static jfieldID mpool_stat_st_maxopenfd_fid;
static jfieldID mpool_stat_st_maxwrite_fid;
static jfieldID mpool_stat_st_maxwrite_sleep_fid;
+static jfieldID mpool_stat_st_pages_fid;
static jfieldID mpool_stat_st_map_fid;
static jfieldID mpool_stat_st_cache_hit_fid;
static jfieldID mpool_stat_st_cache_miss_fid;
@@ -348,7 +358,6 @@ static jfieldID mpool_stat_st_page_out_fid;
static jfieldID mpool_stat_st_ro_evict_fid;
static jfieldID mpool_stat_st_rw_evict_fid;
static jfieldID mpool_stat_st_page_trickle_fid;
-static jfieldID mpool_stat_st_pages_fid;
static jfieldID mpool_stat_st_page_clean_fid;
static jfieldID mpool_stat_st_page_dirty_fid;
static jfieldID mpool_stat_st_hash_buckets_fid;
@@ -370,6 +379,7 @@ static jfieldID mpool_stat_st_alloc_max_buckets_fid;
static jfieldID mpool_stat_st_alloc_pages_fid;
static jfieldID mpool_stat_st_alloc_max_pages_fid;
static jfieldID mpool_stat_st_io_wait_fid;
+static jfieldID mpool_stat_st_regsize_fid;
static jfieldID mutex_stat_st_mutex_align_fid;
static jfieldID mutex_stat_st_mutex_tas_spins_fid;
static jfieldID mutex_stat_st_mutex_cnt_fid;
@@ -392,6 +402,8 @@ static jfieldID qam_stat_qs_re_pad_fid;
static jfieldID qam_stat_qs_pgfree_fid;
static jfieldID qam_stat_qs_first_recno_fid;
static jfieldID qam_stat_qs_cur_recno_fid;
+static jfieldID rep_stat_st_log_queued_fid;
+static jfieldID rep_stat_st_startup_complete_fid;
static jfieldID rep_stat_st_status_fid;
static jfieldID rep_stat_st_next_lsn_fid;
static jfieldID rep_stat_st_waiting_lsn_fid;
@@ -410,7 +422,6 @@ static jfieldID rep_stat_st_client_svc_miss_fid;
static jfieldID rep_stat_st_gen_fid;
static jfieldID rep_stat_st_egen_fid;
static jfieldID rep_stat_st_log_duplicated_fid;
-static jfieldID rep_stat_st_log_queued_fid;
static jfieldID rep_stat_st_log_queued_max_fid;
static jfieldID rep_stat_st_log_queued_total_fid;
static jfieldID rep_stat_st_log_records_fid;
@@ -429,8 +440,8 @@ static jfieldID rep_stat_st_outdated_fid;
static jfieldID rep_stat_st_pg_duplicated_fid;
static jfieldID rep_stat_st_pg_records_fid;
static jfieldID rep_stat_st_pg_requested_fid;
-static jfieldID rep_stat_st_startup_complete_fid;
static jfieldID rep_stat_st_txns_applied_fid;
+static jfieldID rep_stat_st_startsync_delayed_fid;
static jfieldID rep_stat_st_elections_fid;
static jfieldID rep_stat_st_elections_won_fid;
static jfieldID rep_stat_st_election_cur_winner_fid;
@@ -444,6 +455,11 @@ static jfieldID rep_stat_st_election_tiebreaker_fid;
static jfieldID rep_stat_st_election_votes_fid;
static jfieldID rep_stat_st_election_sec_fid;
static jfieldID rep_stat_st_election_usec_fid;
+static jfieldID repmgr_stat_st_perm_failed_fid;
+static jfieldID repmgr_stat_st_msgs_queued_fid;
+static jfieldID repmgr_stat_st_msgs_dropped_fid;
+static jfieldID repmgr_stat_st_connection_drop_fid;
+static jfieldID repmgr_stat_st_connect_fail_fid;
static jfieldID seq_stat_st_wait_fid;
static jfieldID seq_stat_st_nowait_fid;
static jfieldID seq_stat_st_current_fid;
@@ -453,6 +469,7 @@ static jfieldID seq_stat_st_min_fid;
static jfieldID seq_stat_st_max_fid;
static jfieldID seq_stat_st_cache_size_fid;
static jfieldID seq_stat_st_flags_fid;
+static jfieldID txn_stat_st_nrestores_fid;
static jfieldID txn_stat_st_last_ckp_fid;
static jfieldID txn_stat_st_time_ckp_fid;
static jfieldID txn_stat_st_last_txnid_fid;
@@ -462,7 +479,6 @@ static jfieldID txn_stat_st_nbegins_fid;
static jfieldID txn_stat_st_ncommits_fid;
static jfieldID txn_stat_st_nactive_fid;
static jfieldID txn_stat_st_nsnapshot_fid;
-static jfieldID txn_stat_st_nrestores_fid;
static jfieldID txn_stat_st_maxnactive_fid;
static jfieldID txn_stat_st_maxnsnapshot_fid;
static jfieldID txn_stat_st_txnarray_fid;
@@ -483,18 +499,19 @@ static jfieldID txn_active_name_fid;
static jmethodID dbenv_construct, dbt_construct, dblsn_construct;
static jmethodID dbpreplist_construct, dbtxn_construct;
-static jmethodID bt_stat_construct, h_stat_construct;
+static jmethodID bt_stat_construct, get_err_msg_method, h_stat_construct;
static jmethodID lock_stat_construct, log_stat_construct;
static jmethodID mpool_stat_construct, mpool_fstat_construct;
static jmethodID mutex_stat_construct, qam_stat_construct;
-static jmethodID rep_stat_construct, seq_stat_construct;
+static jmethodID rep_stat_construct, repmgr_stat_construct, seq_stat_construct;
static jmethodID txn_stat_construct, txn_active_construct;
static jmethodID dbex_construct, deadex_construct, lockex_construct;
static jmethodID memex_construct, memex_update_method;
static jmethodID repdupmasterex_construct, rephandledeadex_construct;
static jmethodID repholdelectionex_construct, repjoinfailex_construct;
-static jmethodID rephost_construct;
-static jmethodID replockoutex_construct, repunavailex_construct;
+static jmethodID rephost_construct, repleaseexpiredex_construct;
+static jmethodID repleasetimeoutex_construct, replockoutex_construct;
+static jmethodID repunavailex_construct;
static jmethodID runrecex_construct, versionex_construct;
static jmethodID filenotfoundex_construct, illegalargex_construct;
static jmethodID outofmemerr_construct;
@@ -502,11 +519,17 @@ static jmethodID lock_construct;
static jmethodID app_dispatch_method, errcall_method, env_feedback_method;
static jmethodID msgcall_method, paniccall_method, rep_transport_method;
-static jmethodID event_notify_method;
+static jmethodID panic_event_notify_method, rep_client_event_notify_method;
+static jmethodID rep_elected_event_notify_method;
+static jmethodID rep_master_event_notify_method;
+static jmethodID rep_new_master_event_notify_method;
+static jmethodID rep_perm_failed_event_notify_method;
+static jmethodID rep_startup_done_event_notify_method;
+static jmethodID write_failed_event_notify_method;
static jmethodID append_recno_method, bt_compare_method, bt_prefix_method;
-static jmethodID db_feedback_method, dup_compare_method, h_hash_method;
-static jmethodID seckey_create_method;
+static jmethodID db_feedback_method, dup_compare_method, h_compare_method;
+static jmethodID h_hash_method, seckey_create_method;
static jmethodID outputstream_write_method;
@@ -532,6 +555,7 @@ const struct {
{ &mutex_stat_class, DB_PKG "MutexStats" },
{ &qam_stat_class, DB_PKG "QueueStats" },
{ &rep_stat_class, DB_PKG "ReplicationStats" },
+ { &repmgr_stat_class, DB_PKG "ReplicationManagerStats" },
{ &seq_stat_class, DB_PKG "SequenceStats" },
{ &txn_stat_class, DB_PKG "TransactionStats" },
{ &txn_active_class, DB_PKG "TransactionStats$Active" },
@@ -539,8 +563,6 @@ const struct {
{ &keyrange_class, DB_PKG "KeyRange" },
{ &lock_class, DB_PKG "internal/DbLock" },
{ &lockreq_class, DB_PKG "LockRequest" },
- { &rep_processmsg_class, DB_PKG "internal/DbEnv$RepProcessMessage" },
- { &rep_processmsg_class, DB_PKG "internal/DbEnv$RepProcessMessage" },
{ &dbex_class, DB_PKG "DatabaseException" },
{ &deadex_class, DB_PKG "DeadlockException" },
@@ -551,6 +573,8 @@ const struct {
{ &repholdelectionex_class, DB_PKG "ReplicationHoldElectionException" },
{ &rephost_class, DB_PKG "ReplicationHostAddress" },
{ &repjoinfailex_class, DB_PKG "ReplicationJoinFailureException" },
+ { &repleaseexpiredex_class, DB_PKG "ReplicationLeaseExpiredException" },
+ { &repleasetimeoutex_class, DB_PKG "ReplicationLeaseTimeoutException" },
{ &replockoutex_class, DB_PKG "ReplicationLockoutException" },
{ &repunavailex_class, DB_PKG "ReplicationSiteUnavailableException" },
{ &runrecex_class, DB_PKG "RunRecoveryException" },
@@ -604,6 +628,7 @@ const struct {
{ &bt_stat_bt_metaflags_fid, &bt_stat_class, "bt_metaflags", "I" },
{ &bt_stat_bt_nkeys_fid, &bt_stat_class, "bt_nkeys", "I" },
{ &bt_stat_bt_ndata_fid, &bt_stat_class, "bt_ndata", "I" },
+ { &bt_stat_bt_pagecnt_fid, &bt_stat_class, "bt_pagecnt", "I" },
{ &bt_stat_bt_pagesize_fid, &bt_stat_class, "bt_pagesize", "I" },
{ &bt_stat_bt_minkey_fid, &bt_stat_class, "bt_minkey", "I" },
{ &bt_stat_bt_re_len_fid, &bt_stat_class, "bt_re_len", "I" },
@@ -633,6 +658,7 @@ const struct {
{ &h_stat_hash_metaflags_fid, &h_stat_class, "hash_metaflags", "I" },
{ &h_stat_hash_nkeys_fid, &h_stat_class, "hash_nkeys", "I" },
{ &h_stat_hash_ndata_fid, &h_stat_class, "hash_ndata", "I" },
+ { &h_stat_hash_pagecnt_fid, &h_stat_class, "hash_pagecnt", "I" },
{ &h_stat_hash_pagesize_fid, &h_stat_class, "hash_pagesize", "I" },
{ &h_stat_hash_ffactor_fid, &h_stat_class, "hash_ffactor", "I" },
{ &h_stat_hash_buckets_fid, &h_stat_class, "hash_buckets", "I" },
@@ -650,9 +676,9 @@ const struct {
{ &lock_stat_st_maxlockers_fid, &lock_stat_class, "st_maxlockers", "I" },
{ &lock_stat_st_maxobjects_fid, &lock_stat_class, "st_maxobjects", "I" },
{ &lock_stat_st_nmodes_fid, &lock_stat_class, "st_nmodes", "I" },
+ { &lock_stat_st_nlockers_fid, &lock_stat_class, "st_nlockers", "I" },
{ &lock_stat_st_nlocks_fid, &lock_stat_class, "st_nlocks", "I" },
{ &lock_stat_st_maxnlocks_fid, &lock_stat_class, "st_maxnlocks", "I" },
- { &lock_stat_st_nlockers_fid, &lock_stat_class, "st_nlockers", "I" },
{ &lock_stat_st_maxnlockers_fid, &lock_stat_class, "st_maxnlockers", "I" },
{ &lock_stat_st_nobjects_fid, &lock_stat_class, "st_nobjects", "I" },
{ &lock_stat_st_maxnobjects_fid, &lock_stat_class, "st_maxnobjects", "I" },
@@ -667,19 +693,26 @@ const struct {
{ &lock_stat_st_nlocktimeouts_fid, &lock_stat_class, "st_nlocktimeouts", "I" },
{ &lock_stat_st_txntimeout_fid, &lock_stat_class, "st_txntimeout", "I" },
{ &lock_stat_st_ntxntimeouts_fid, &lock_stat_class, "st_ntxntimeouts", "I" },
+ { &lock_stat_st_objs_wait_fid, &lock_stat_class, "st_objs_wait", "I" },
+ { &lock_stat_st_objs_nowait_fid, &lock_stat_class, "st_objs_nowait", "I" },
+ { &lock_stat_st_lockers_wait_fid, &lock_stat_class, "st_lockers_wait", "I" },
+ { &lock_stat_st_lockers_nowait_fid, &lock_stat_class, "st_lockers_nowait", "I" },
+ { &lock_stat_st_locks_wait_fid, &lock_stat_class, "st_locks_wait", "I" },
+ { &lock_stat_st_locks_nowait_fid, &lock_stat_class, "st_locks_nowait", "I" },
{ &lock_stat_st_region_wait_fid, &lock_stat_class, "st_region_wait", "I" },
{ &lock_stat_st_region_nowait_fid, &lock_stat_class, "st_region_nowait", "I" },
+ { &lock_stat_st_hash_len_fid, &lock_stat_class, "st_hash_len", "I" },
{ &lock_stat_st_regsize_fid, &lock_stat_class, "st_regsize", "I" },
{ &log_stat_st_magic_fid, &log_stat_class, "st_magic", "I" },
{ &log_stat_st_version_fid, &log_stat_class, "st_version", "I" },
{ &log_stat_st_mode_fid, &log_stat_class, "st_mode", "I" },
{ &log_stat_st_lg_bsize_fid, &log_stat_class, "st_lg_bsize", "I" },
{ &log_stat_st_lg_size_fid, &log_stat_class, "st_lg_size", "I" },
+ { &log_stat_st_wc_bytes_fid, &log_stat_class, "st_wc_bytes", "I" },
+ { &log_stat_st_wc_mbytes_fid, &log_stat_class, "st_wc_mbytes", "I" },
{ &log_stat_st_record_fid, &log_stat_class, "st_record", "I" },
{ &log_stat_st_w_bytes_fid, &log_stat_class, "st_w_bytes", "I" },
{ &log_stat_st_w_mbytes_fid, &log_stat_class, "st_w_mbytes", "I" },
- { &log_stat_st_wc_bytes_fid, &log_stat_class, "st_wc_bytes", "I" },
- { &log_stat_st_wc_mbytes_fid, &log_stat_class, "st_wc_mbytes", "I" },
{ &log_stat_st_wcount_fid, &log_stat_class, "st_wcount", "I" },
{ &log_stat_st_wcount_fill_fid, &log_stat_class, "st_wcount_fill", "I" },
{ &log_stat_st_rcount_fid, &log_stat_class, "st_rcount", "I" },
@@ -690,9 +723,9 @@ const struct {
{ &log_stat_st_cur_offset_fid, &log_stat_class, "st_cur_offset", "I" },
{ &log_stat_st_disk_file_fid, &log_stat_class, "st_disk_file", "I" },
{ &log_stat_st_disk_offset_fid, &log_stat_class, "st_disk_offset", "I" },
- { &log_stat_st_regsize_fid, &log_stat_class, "st_regsize", "I" },
{ &log_stat_st_maxcommitperflush_fid, &log_stat_class, "st_maxcommitperflush", "I" },
{ &log_stat_st_mincommitperflush_fid, &log_stat_class, "st_mincommitperflush", "I" },
+ { &log_stat_st_regsize_fid, &log_stat_class, "st_regsize", "I" },
{ &mpool_fstat_file_name_fid, &mpool_fstat_class, "file_name", "Ljava/lang/String;" },
{ &mpool_fstat_st_pagesize_fid, &mpool_fstat_class, "st_pagesize", "I" },
{ &mpool_fstat_st_map_fid, &mpool_fstat_class, "st_map", "I" },
@@ -704,11 +737,12 @@ const struct {
{ &mpool_stat_st_gbytes_fid, &mpool_stat_class, "st_gbytes", "I" },
{ &mpool_stat_st_bytes_fid, &mpool_stat_class, "st_bytes", "I" },
{ &mpool_stat_st_ncache_fid, &mpool_stat_class, "st_ncache", "I" },
- { &mpool_stat_st_regsize_fid, &mpool_stat_class, "st_regsize", "I" },
+ { &mpool_stat_st_max_ncache_fid, &mpool_stat_class, "st_max_ncache", "I" },
{ &mpool_stat_st_mmapsize_fid, &mpool_stat_class, "st_mmapsize", "I" },
{ &mpool_stat_st_maxopenfd_fid, &mpool_stat_class, "st_maxopenfd", "I" },
{ &mpool_stat_st_maxwrite_fid, &mpool_stat_class, "st_maxwrite", "I" },
{ &mpool_stat_st_maxwrite_sleep_fid, &mpool_stat_class, "st_maxwrite_sleep", "I" },
+ { &mpool_stat_st_pages_fid, &mpool_stat_class, "st_pages", "I" },
{ &mpool_stat_st_map_fid, &mpool_stat_class, "st_map", "I" },
{ &mpool_stat_st_cache_hit_fid, &mpool_stat_class, "st_cache_hit", "I" },
{ &mpool_stat_st_cache_miss_fid, &mpool_stat_class, "st_cache_miss", "I" },
@@ -718,7 +752,6 @@ const struct {
{ &mpool_stat_st_ro_evict_fid, &mpool_stat_class, "st_ro_evict", "I" },
{ &mpool_stat_st_rw_evict_fid, &mpool_stat_class, "st_rw_evict", "I" },
{ &mpool_stat_st_page_trickle_fid, &mpool_stat_class, "st_page_trickle", "I" },
- { &mpool_stat_st_pages_fid, &mpool_stat_class, "st_pages", "I" },
{ &mpool_stat_st_page_clean_fid, &mpool_stat_class, "st_page_clean", "I" },
{ &mpool_stat_st_page_dirty_fid, &mpool_stat_class, "st_page_dirty", "I" },
{ &mpool_stat_st_hash_buckets_fid, &mpool_stat_class, "st_hash_buckets", "I" },
@@ -740,6 +773,7 @@ const struct {
{ &mpool_stat_st_alloc_pages_fid, &mpool_stat_class, "st_alloc_pages", "I" },
{ &mpool_stat_st_alloc_max_pages_fid, &mpool_stat_class, "st_alloc_max_pages", "I" },
{ &mpool_stat_st_io_wait_fid, &mpool_stat_class, "st_io_wait", "I" },
+ { &mpool_stat_st_regsize_fid, &mpool_stat_class, "st_regsize", "I" },
{ &mutex_stat_st_mutex_align_fid, &mutex_stat_class, "st_mutex_align", "I" },
{ &mutex_stat_st_mutex_tas_spins_fid, &mutex_stat_class, "st_mutex_tas_spins", "I" },
{ &mutex_stat_st_mutex_cnt_fid, &mutex_stat_class, "st_mutex_cnt", "I" },
@@ -762,6 +796,8 @@ const struct {
{ &qam_stat_qs_pgfree_fid, &qam_stat_class, "qs_pgfree", "I" },
{ &qam_stat_qs_first_recno_fid, &qam_stat_class, "qs_first_recno", "I" },
{ &qam_stat_qs_cur_recno_fid, &qam_stat_class, "qs_cur_recno", "I" },
+ { &rep_stat_st_log_queued_fid, &rep_stat_class, "st_log_queued", "I" },
+ { &rep_stat_st_startup_complete_fid, &rep_stat_class, "st_startup_complete", "I" },
{ &rep_stat_st_status_fid, &rep_stat_class, "st_status", "I" },
{ &rep_stat_st_next_lsn_fid, &rep_stat_class, "st_next_lsn", "L" DB_PKG "LogSequenceNumber;" },
{ &rep_stat_st_waiting_lsn_fid, &rep_stat_class, "st_waiting_lsn", "L" DB_PKG "LogSequenceNumber;" },
@@ -780,7 +816,6 @@ const struct {
{ &rep_stat_st_gen_fid, &rep_stat_class, "st_gen", "I" },
{ &rep_stat_st_egen_fid, &rep_stat_class, "st_egen", "I" },
{ &rep_stat_st_log_duplicated_fid, &rep_stat_class, "st_log_duplicated", "I" },
- { &rep_stat_st_log_queued_fid, &rep_stat_class, "st_log_queued", "I" },
{ &rep_stat_st_log_queued_max_fid, &rep_stat_class, "st_log_queued_max", "I" },
{ &rep_stat_st_log_queued_total_fid, &rep_stat_class, "st_log_queued_total", "I" },
{ &rep_stat_st_log_records_fid, &rep_stat_class, "st_log_records", "I" },
@@ -799,8 +834,8 @@ const struct {
{ &rep_stat_st_pg_duplicated_fid, &rep_stat_class, "st_pg_duplicated", "I" },
{ &rep_stat_st_pg_records_fid, &rep_stat_class, "st_pg_records", "I" },
{ &rep_stat_st_pg_requested_fid, &rep_stat_class, "st_pg_requested", "I" },
- { &rep_stat_st_startup_complete_fid, &rep_stat_class, "st_startup_complete", "I" },
{ &rep_stat_st_txns_applied_fid, &rep_stat_class, "st_txns_applied", "I" },
+ { &rep_stat_st_startsync_delayed_fid, &rep_stat_class, "st_startsync_delayed", "I" },
{ &rep_stat_st_elections_fid, &rep_stat_class, "st_elections", "I" },
{ &rep_stat_st_elections_won_fid, &rep_stat_class, "st_elections_won", "I" },
{ &rep_stat_st_election_cur_winner_fid, &rep_stat_class, "st_election_cur_winner", "I" },
@@ -814,6 +849,11 @@ const struct {
{ &rep_stat_st_election_votes_fid, &rep_stat_class, "st_election_votes", "I" },
{ &rep_stat_st_election_sec_fid, &rep_stat_class, "st_election_sec", "I" },
{ &rep_stat_st_election_usec_fid, &rep_stat_class, "st_election_usec", "I" },
+ { &repmgr_stat_st_perm_failed_fid, &repmgr_stat_class, "st_perm_failed", "I" },
+ { &repmgr_stat_st_msgs_queued_fid, &repmgr_stat_class, "st_msgs_queued", "I" },
+ { &repmgr_stat_st_msgs_dropped_fid, &repmgr_stat_class, "st_msgs_dropped", "I" },
+ { &repmgr_stat_st_connection_drop_fid, &repmgr_stat_class, "st_connection_drop", "I" },
+ { &repmgr_stat_st_connect_fail_fid, &repmgr_stat_class, "st_connect_fail", "I" },
{ &seq_stat_st_wait_fid, &seq_stat_class, "st_wait", "I" },
{ &seq_stat_st_nowait_fid, &seq_stat_class, "st_nowait", "I" },
{ &seq_stat_st_current_fid, &seq_stat_class, "st_current", "J" },
@@ -823,6 +863,7 @@ const struct {
{ &seq_stat_st_max_fid, &seq_stat_class, "st_max", "J" },
{ &seq_stat_st_cache_size_fid, &seq_stat_class, "st_cache_size", "I" },
{ &seq_stat_st_flags_fid, &seq_stat_class, "st_flags", "I" },
+ { &txn_stat_st_nrestores_fid, &txn_stat_class, "st_nrestores", "I" },
{ &txn_stat_st_last_ckp_fid, &txn_stat_class, "st_last_ckp", "L" DB_PKG "LogSequenceNumber;" },
{ &txn_stat_st_time_ckp_fid, &txn_stat_class, "st_time_ckp", "J" },
{ &txn_stat_st_last_txnid_fid, &txn_stat_class, "st_last_txnid", "I" },
@@ -832,7 +873,6 @@ const struct {
{ &txn_stat_st_ncommits_fid, &txn_stat_class, "st_ncommits", "I" },
{ &txn_stat_st_nactive_fid, &txn_stat_class, "st_nactive", "I" },
{ &txn_stat_st_nsnapshot_fid, &txn_stat_class, "st_nsnapshot", "I" },
- { &txn_stat_st_nrestores_fid, &txn_stat_class, "st_nrestores", "I" },
{ &txn_stat_st_maxnactive_fid, &txn_stat_class, "st_maxnactive", "I" },
{ &txn_stat_st_maxnsnapshot_fid, &txn_stat_class, "st_maxnsnapshot", "I" },
{ &txn_stat_st_txnarray_fid, &txn_stat_class, "st_txnarray", "[L" DB_PKG "TransactionStats$Active;" },
@@ -854,8 +894,7 @@ const struct {
{ &rephost_port_fid, &rephost_class, "port", "I" },
{ &rephost_host_fid, &rephost_class, "host", "Ljava/lang/String;" },
{ &rephost_eid_fid, &rephost_class, "eid", "I" },
- { &rephost_status_fid, &rephost_class, "status", "I" },
- { &rep_processmsg_envid_fid, &rep_processmsg_class, "envid", "I" }
+ { &rephost_status_fid, &rephost_class, "status", "I" }
};
const struct {
@@ -872,6 +911,8 @@ const struct {
{ &dbtxn_construct, &dbtxn_class, "<init>", "(JZ)V" },
{ &bt_stat_construct, &bt_stat_class, "<init>", "()V" },
+ { &get_err_msg_method, &dbenv_class, "get_err_msg",
+ "(Ljava/lang/String;)Ljava/lang/String;" },
{ &h_stat_construct, &h_stat_class, "<init>", "()V" },
{ &lock_stat_construct, &lock_stat_class, "<init>", "()V" },
{ &log_stat_construct, &log_stat_class, "<init>", "()V" },
@@ -880,6 +921,7 @@ const struct {
{ &mutex_stat_construct, &mutex_stat_class, "<init>", "()V" },
{ &qam_stat_construct, &qam_stat_class, "<init>", "()V" },
{ &rep_stat_construct, &rep_stat_class, "<init>", "()V" },
+ { &repmgr_stat_construct, &repmgr_stat_class, "<init>", "()V" },
{ &seq_stat_construct, &seq_stat_class, "<init>", "()V" },
{ &txn_stat_construct, &txn_stat_class, "<init>", "()V" },
{ &txn_active_construct, &txn_active_class, "<init>", "()V" },
@@ -905,6 +947,10 @@ const struct {
"(Ljava/lang/String;IL" DB_PKG "internal/DbEnv;)V" },
{ &repjoinfailex_construct, &repjoinfailex_class, "<init>",
"(Ljava/lang/String;IL" DB_PKG "internal/DbEnv;)V" },
+ { &repleaseexpiredex_construct, &repleaseexpiredex_class, "<init>",
+ "(Ljava/lang/String;IL" DB_PKG "internal/DbEnv;)V" },
+ { &repleasetimeoutex_construct, &repleasetimeoutex_class, "<init>",
+ "(Ljava/lang/String;IL" DB_PKG "internal/DbEnv;)V" },
{ &replockoutex_construct, &replockoutex_class, "<init>",
"(Ljava/lang/String;IL" DB_PKG "internal/DbEnv;)V" },
{ &repunavailex_construct, &repunavailex_class, "<init>",
@@ -924,8 +970,22 @@ const struct {
{ &app_dispatch_method, &dbenv_class, "handle_app_dispatch",
"(L" DB_PKG "DatabaseEntry;L" DB_PKG "LogSequenceNumber;I)I" },
- { &event_notify_method, &dbenv_class, "handle_event_notify",
- "(I)I" },
+ { &panic_event_notify_method, &dbenv_class, "handle_panic_event_notify",
+ "()V" },
+ { &rep_client_event_notify_method, &dbenv_class,
+ "handle_rep_client_event_notify", "()V" },
+ { &rep_elected_event_notify_method, &dbenv_class,
+ "handle_rep_elected_event_notify" ,"()V" },
+ { &rep_master_event_notify_method, &dbenv_class,
+ "handle_rep_master_event_notify", "()V" },
+ { &rep_new_master_event_notify_method, &dbenv_class,
+ "handle_rep_new_master_event_notify", "(I)V" },
+ { &rep_perm_failed_event_notify_method, &dbenv_class,
+ "handle_rep_perm_failed_event_notify", "()V" },
+ { &rep_startup_done_event_notify_method, &dbenv_class,
+ "handle_rep_startup_done_event_notify", "()V" },
+ { &write_failed_event_notify_method, &dbenv_class,
+ "handle_write_failed_event_notify", "(I)V" },
{ &env_feedback_method, &dbenv_class, "handle_env_feedback", "(II)V" },
{ &errcall_method, &dbenv_class, "handle_error",
"(Ljava/lang/String;)V" },
@@ -946,10 +1006,12 @@ const struct {
{ &db_feedback_method, &db_class, "handle_db_feedback", "(II)V" },
{ &dup_compare_method, &db_class, "handle_dup_compare",
"([B[B)I" },
+ { &h_compare_method, &db_class, "handle_h_compare",
+ "([B[B)I" },
{ &h_hash_method, &db_class, "handle_h_hash", "([BI)I" },
{ &seckey_create_method, &db_class, "handle_seckey_create",
- "(L" DB_PKG "DatabaseEntry;L" DB_PKG "DatabaseEntry;L"
- DB_PKG "DatabaseEntry;)I" },
+ "(L" DB_PKG "DatabaseEntry;L" DB_PKG "DatabaseEntry;)[L"
+ DB_PKG "DatabaseEntry;" },
{ &outputstream_write_method, &outputstream_class, "write", "([BII)V" }
};
@@ -1074,6 +1136,12 @@ static jthrowable __dbj_get_except(JNIEnv *jenv,
jmsg = (*jenv)->NewStringUTF(jenv, msg);
+ /* Retrieve error message logged by DB */
+ if (jdbenv != NULL) {
+ jmsg = (jstring) (*jenv)->CallNonvirtualObjectMethod(jenv,
+ jdbenv, dbenv_class, get_err_msg_method, jmsg);
+ }
+
switch (err) {
case EINVAL:
return (jthrowable)(*jenv)->NewObject(jenv,
@@ -1111,6 +1179,16 @@ static jthrowable __dbj_get_except(JNIEnv *jenv,
repjoinfailex_class, repjoinfailex_construct,
jmsg, err, jdbenv);
+ case DB_REP_LEASE_EXPIRED:
+ return (jthrowable)(*jenv)->NewObject(jenv,
+ repleaseexpiredex_class, repleaseexpiredex_construct,
+ jmsg, err, jdbenv);
+
+ case DB_REP_LEASE_TIMEOUT:
+ return (jthrowable)(*jenv)->NewObject(jenv,
+ repleasetimeoutex_class, repleasetimeoutex_construct,
+ jmsg, err, jdbenv);
+
case DB_REP_LOCKOUT:
return (jthrowable)(*jenv)->NewObject(jenv,
replockoutex_class, replockoutex_construct,
@@ -1752,21 +1830,49 @@ static void __dbj_event_notify(DB_ENV *dbenv, u_int32_t event_id, void * info)
{
JNIEnv *jenv = __dbj_get_jnienv();
jobject jdbenv = (jobject)DB_ENV_INTERNAL(dbenv);
- int ret;
- COMPQUIET(info, NULL);
-
- if(jdbenv == NULL)
+ if (jdbenv == NULL)
return ;
- ret = (*jenv)->CallNonvirtualIntMethod(jenv, jdbenv, dbenv_class,
- event_notify_method, event_id);
-
- if((*jenv)->ExceptionOccurred(jenv)) {
- /* The exception will be thrown, so this could be any error. */
- ret = EINVAL;
+ switch (event_id) {
+ case DB_EVENT_PANIC:
+ (*jenv)->CallNonvirtualVoidMethod(jenv, jdbenv,
+ dbenv_class, panic_event_notify_method);
+ break;
+ case DB_EVENT_REP_CLIENT:
+ (*jenv)->CallNonvirtualVoidMethod(jenv, jdbenv,
+ dbenv_class, rep_client_event_notify_method);
+ break;
+ case DB_EVENT_REP_ELECTED:
+ (*jenv)->CallNonvirtualVoidMethod(jenv, jdbenv,
+ dbenv_class, rep_elected_event_notify_method);
+ break;
+ case DB_EVENT_REP_MASTER:
+ (*jenv)->CallNonvirtualVoidMethod(jenv, jdbenv,
+ dbenv_class, rep_master_event_notify_method);
+ break;
+ case DB_EVENT_REP_NEWMASTER:
+ (*jenv)->CallNonvirtualVoidMethod(jenv, jdbenv,
+ dbenv_class, rep_new_master_event_notify_method,
+ *(int*)info);
+ break;
+ case DB_EVENT_REP_PERM_FAILED:
+ (*jenv)->CallNonvirtualVoidMethod(jenv, jdbenv,
+ dbenv_class, rep_perm_failed_event_notify_method);
+ break;
+ case DB_EVENT_REP_STARTUPDONE:
+ (*jenv)->CallNonvirtualVoidMethod(jenv, jdbenv,
+ dbenv_class, rep_startup_done_event_notify_method);
+ break;
+ case DB_EVENT_WRITE_FAILED:
+ (*jenv)->CallNonvirtualVoidMethod(jenv, jdbenv,
+ dbenv_class, write_failed_event_notify_method,
+ *(int*)info);
+ break;
+ default:
+ dbenv->errx(dbenv, "Unhandled event callback in the Java API");
+ DB_ASSERT(dbenv, 0);
}
- return ;
}
static int __dbj_rep_transport(DB_ENV *dbenv,
@@ -1818,8 +1924,11 @@ static int __dbj_seckey_create(DB *db,
JNIEnv *jenv = __dbj_get_jnienv();
jobject jdb = (jobject)DB_INTERNAL(db);
jobject jkey, jdata, jresult;
+ jobjectArray jskeys;
+ jsize i, num_skeys;
jbyteArray jkeyarr, jdataarr;
DBT_LOCKED lresult;
+ DBT *tresult;
int ret;
if (jdb == NULL)
@@ -1831,8 +1940,7 @@ static int __dbj_seckey_create(DB *db,
jdata = (data->app_data != NULL) ?
((DBT_LOCKED *)data->app_data)->jdbt :
(*jenv)->NewObject(jenv, dbt_class, dbt_construct);
- jresult = (*jenv)->NewObject(jenv, dbt_class, dbt_construct);
- if (jkey == NULL || jdata == NULL || jresult == NULL)
+ if (jkey == NULL || jdata == NULL)
return (ENOMEM); /* An exception is pending */
if (key->app_data == NULL) {
@@ -1846,11 +1954,25 @@ static int __dbj_seckey_create(DB *db,
return (ENOMEM); /* An exception is pending */
}
- ret = (int)(*jenv)->CallNonvirtualIntMethod(jenv, jdb, db_class,
- seckey_create_method, jkey, jdata, jresult);
+ jskeys = (jobjectArray)(*jenv)->CallNonvirtualObjectMethod(jenv,
+ jdb, db_class, seckey_create_method, jkey, jdata);
- if (ret != 0)
+ if (jskeys == NULL ||
+ (num_skeys = (*jenv)->GetArrayLength(jenv, jskeys)) == 0) {
+ ret = DB_DONOTINDEX;
goto err;
+ } else if (num_skeys == 1) {
+ memset(result, 0, sizeof (DBT));
+ tresult = result;
+ } else {
+ if ((ret = __os_umalloc(db->dbenv,
+ num_skeys * sizeof (DBT), &result->data)) != 0)
+ goto err;
+ memset(result->data, 0, num_skeys * sizeof (DBT));
+ result->size = num_skeys;
+ F_SET(result, DB_DBT_APPMALLOC | DB_DBT_MULTIPLE);
+ tresult = (DBT *)result->data;
+ }
if ((*jenv)->ExceptionOccurred(jenv)) {
/* The exception will be thrown, so this could be any error. */
@@ -1858,23 +1980,30 @@ static int __dbj_seckey_create(DB *db,
goto err;
}
- if ((ret = __dbj_dbt_copyin(jenv, &lresult, NULL, jresult, 0)) != 0)
- goto err;
+ for (i = 0; i < num_skeys; i++, tresult++) {
+ jresult = (*jenv)->GetObjectArrayElement(jenv, jskeys, i);
- if (lresult.dbt.size != 0) {
- /* If there's data, we need to take a copy of it. */
- memset(result, 0, sizeof (DBT));
- result->size = lresult.dbt.size;
if ((ret =
- __os_umalloc(NULL, result->size, &result->data)) != 0)
+ __dbj_dbt_copyin(jenv, &lresult, NULL, jresult, 0)) != 0)
goto err;
- if ((ret = __dbj_dbt_memcopy(&lresult.dbt, 0,
- result->data, result->size,
- DB_USERCOPY_GETDATA)) != 0)
- goto err;
- __dbj_dbt_release(jenv, jresult, &lresult.dbt, &lresult);
- (*jenv)->DeleteLocalRef(jenv, lresult.jarr);
- F_SET(result, DB_DBT_APPMALLOC);
+
+ if (lresult.dbt.size != 0) {
+ /* If there's data, we need to take a copy of it. */
+ tresult->size = lresult.dbt.size;
+ if ((ret = __os_umalloc(NULL,
+ tresult->size, &tresult->data)) != 0)
+ goto err;
+ if ((ret = __dbj_dbt_memcopy(&lresult.dbt, 0,
+ tresult->data, tresult->size,
+ DB_USERCOPY_GETDATA)) != 0)
+ goto err;
+ __dbj_dbt_release(jenv,
+ jresult, &lresult.dbt, &lresult);
+ (*jenv)->DeleteLocalRef(jenv, lresult.jarr);
+ F_SET(tresult, DB_DBT_APPMALLOC);
+ }
+
+ (*jenv)->DeleteLocalRef(jenv, jresult);
}
err: if (key->app_data == NULL) {
@@ -1885,7 +2014,6 @@ err: if (key->app_data == NULL) {
(*jenv)->DeleteLocalRef(jenv, jdataarr);
(*jenv)->DeleteLocalRef(jenv, jdata);
}
- (*jenv)->DeleteLocalRef(jenv, jresult);
return (ret);
}
@@ -1948,7 +2076,11 @@ err: (*jenv)->DeleteLocalRef(jenv, jdbtarr);
return (ret);
}
-static int __dbj_bt_compare(DB *db, const DBT *dbt1, const DBT *dbt2)
+/*
+ * Shared by __dbj_bt_compare and __dbj_h_compare
+ */
+static int __dbj_am_compare(DB *db, const DBT *dbt1, const DBT *dbt2,
+ jmethodID compare_method)
{
JNIEnv *jenv = __dbj_get_jnienv();
jobject jdb = (jobject)DB_INTERNAL(db);
@@ -1979,7 +2111,7 @@ static int __dbj_bt_compare(DB *db, const DBT *dbt1, const DBT *dbt2)
}
ret = (int)(*jenv)->CallNonvirtualIntMethod(jenv, jdb, db_class,
- bt_compare_method, jdbtarr1, jdbtarr2);
+ compare_method, jdbtarr1, jdbtarr2);
if ((*jenv)->ExceptionOccurred(jenv)) {
/* The exception will be thrown, so this could be any error. */
@@ -1994,6 +2126,11 @@ static int __dbj_bt_compare(DB *db, const DBT *dbt1, const DBT *dbt2)
return (ret);
}
+static int __dbj_bt_compare(DB *db, const DBT *dbt1, const DBT *dbt2)
+{
+ return __dbj_am_compare(db, dbt1, dbt2, bt_compare_method);
+}
+
static size_t __dbj_bt_prefix(DB *db, const DBT *dbt1, const DBT *dbt2)
{
JNIEnv *jenv = __dbj_get_jnienv();
@@ -2008,7 +2145,8 @@ static size_t __dbj_bt_prefix(DB *db, const DBT *dbt1, const DBT *dbt2)
if (dbt1->app_data != NULL)
jdbt1 = ((DBT_LOCKED *)dbt1->app_data)->jdbt;
else {
- if ((jdbt1 = (*jenv)->NewObject(jenv, dbt_class, dbt_construct)) == NULL)
+ if ((jdbt1 =
+ (*jenv)->NewObject(jenv, dbt_class, dbt_construct)) == NULL)
return (ENOMEM); /* An exception is pending */
__dbj_dbt_copyout(jenv, dbt1, &jdbtarr1, jdbt1);
if (jdbtarr1 == NULL)
@@ -2018,7 +2156,8 @@ static size_t __dbj_bt_prefix(DB *db, const DBT *dbt1, const DBT *dbt2)
if (dbt2->app_data != NULL)
jdbt2 = ((DBT_LOCKED *)dbt2->app_data)->jdbt;
else {
- if ((jdbt2 = (*jenv)->NewObject(jenv, dbt_class, dbt_construct)) == NULL)
+ if ((jdbt2 =
+ (*jenv)->NewObject(jenv, dbt_class, dbt_construct)) == NULL)
return (ENOMEM); /* An exception is pending */
__dbj_dbt_copyout(jenv, dbt2, &jdbtarr2, jdbt2);
if (jdbtarr2 == NULL)
@@ -2086,6 +2225,11 @@ static void __dbj_db_feedback(DB *db, int opcode, int percent)
db_feedback_method, opcode, percent);
}
+static int __dbj_h_compare(DB *db, const DBT *dbt1, const DBT *dbt2)
+{
+ return __dbj_am_compare(db, dbt1, dbt2, h_compare_method);
+}
+
static u_int32_t __dbj_h_hash(DB *db, const void *data, u_int32_t len)
{
JNIEnv *jenv = __dbj_get_jnienv();
@@ -2232,8 +2376,8 @@ SWIGINTERN void Db_err(struct Db *self,int error,char const *message){
SWIGINTERN void Db_errx(struct Db *self,char const *message){
self->errx(self, message);
}
-SWIGINTERN int_bool Db_get_transactional(struct Db *self){
- return self->get_transactional(self);
+SWIGINTERN int Db_exists(struct Db *self,DB_TXN *txnid,DBT *key,u_int32_t flags){
+ return self->exists(self, txnid, key, flags);
}
SWIGINTERN int Db_get(struct Db *self,DB_TXN *txnid,DBT *key,DBT *data,u_int32_t flags){
return self->get(self, txnid, key, data, flags);
@@ -2312,6 +2456,11 @@ SWIGINTERN int Db_get_re_delim(struct Db *self){
errno = self->get_re_delim(self, &ret);
return ret;
}
+SWIGINTERN DB_CACHE_PRIORITY Db_get_priority(struct Db *self){
+ DB_CACHE_PRIORITY ret;
+ errno = self->get_priority(self, &ret);
+ return ret;
+ }
SWIGINTERN u_int32_t Db_get_re_len(struct Db *self){
u_int32_t ret = 0;
errno = self->get_re_len(self, &ret);
@@ -2332,6 +2481,12 @@ SWIGINTERN u_int32_t Db_get_q_extentsize(struct Db *self){
errno = self->get_q_extentsize(self, &ret);
return ret;
}
+SWIGINTERN int_bool Db_get_multiple(struct Db *self){
+ return self->get_multiple(self);
+ }
+SWIGINTERN int_bool Db_get_transactional(struct Db *self){
+ return self->get_transactional(self);
+ }
SWIGINTERN DBTYPE Db_get_type(struct Db *self){
DBTYPE type = (DBTYPE)0;
errno = self->get_type(self, &type);
@@ -2390,6 +2545,9 @@ SWIGINTERN db_ret_t Db_set_feedback(struct Db *self,void (*db_feedback_fcn)(DB *
SWIGINTERN db_ret_t Db_set_flags(struct Db *self,u_int32_t flags){
return self->set_flags(self, flags);
}
+SWIGINTERN db_ret_t Db_set_h_compare(struct Db *self,int (*h_compare_fcn)(DB *,DBT const *,DBT const *)){
+ return self->set_h_compare(self, h_compare_fcn);
+ }
SWIGINTERN db_ret_t Db_set_h_ffactor(struct Db *self,u_int32_t h_ffactor){
return self->set_h_ffactor(self, h_ffactor);
}
@@ -2405,6 +2563,9 @@ SWIGINTERN db_ret_t Db_set_lorder(struct Db *self,int lorder){
SWIGINTERN db_ret_t Db_set_pagesize(struct Db *self,u_int32_t pagesize){
return self->set_pagesize(self, pagesize);
}
+SWIGINTERN db_ret_t Db_set_priority(struct Db *self,DB_CACHE_PRIORITY priority){
+ return self->set_priority(self, priority);
+ }
SWIGINTERN db_ret_t Db_set_re_delim(struct Db *self,int re_delim){
return self->set_re_delim(self, re_delim);
}
@@ -2452,29 +2613,37 @@ SWIGINTERN int_bool Db_verify(struct Db *self,char const *file,char const *datab
return 1;
}
SWIGINTERN db_ret_t Dbc_close(struct Dbc *self){
- return self->c_close(self);
+ return self->close(self);
}
SWIGINTERN db_recno_t Dbc_count(struct Dbc *self,u_int32_t flags){
db_recno_t count = 0;
- errno = self->c_count(self, &count, flags);
+ errno = self->count(self, &count, flags);
return count;
}
SWIGINTERN int Dbc_del(struct Dbc *self,u_int32_t flags){
- return self->c_del(self, flags);
+ return self->del(self, flags);
}
SWIGINTERN DBC *Dbc_dup(struct Dbc *self,u_int32_t flags){
DBC *newcurs = NULL;
- errno = self->c_dup(self, &newcurs, flags);
+ errno = self->dup(self, &newcurs, flags);
return newcurs;
}
SWIGINTERN int Dbc_get(struct Dbc *self,DBT *key,DBT *data,u_int32_t flags){
- return self->c_get(self, key, data, flags);
+ return self->get(self, key, data, flags);
+ }
+SWIGINTERN DB_CACHE_PRIORITY Dbc_get_priority(struct Dbc *self){
+ DB_CACHE_PRIORITY ret;
+ errno = self->get_priority(self, &ret);
+ return ret;
}
SWIGINTERN int Dbc_pget(struct Dbc *self,DBT *key,DBT *pkey,DBT *data,u_int32_t flags){
- return self->c_pget(self, key, pkey, data, flags);
+ return self->pget(self, key, pkey, data, flags);
}
SWIGINTERN int Dbc_put(struct Dbc *self,DBT *key,DBT *data,u_int32_t flags){
- return self->c_put(self, key, data, flags);
+ return self->put(self, key, data, flags);
+ }
+SWIGINTERN db_ret_t Dbc_set_priority(struct Dbc *self,DB_CACHE_PRIORITY priority){
+ return self->set_priority(self, priority);
}
SWIGINTERN struct DbEnv *new_DbEnv(u_int32_t flags){
DB_ENV *self = NULL;
@@ -2564,6 +2733,11 @@ SWIGINTERN db_ret_t DbEnv_set_cachesize(struct DbEnv *self,jlong bytes,int ncach
(u_int32_t)(bytes / GIGABYTE),
(u_int32_t)(bytes % GIGABYTE), ncache);
}
+SWIGINTERN db_ret_t DbEnv_set_cache_max(struct DbEnv *self,jlong bytes){
+ return self->set_cache_max(self,
+ (u_int32_t)(bytes / GIGABYTE),
+ (u_int32_t)(bytes % GIGABYTE));
+ }
SWIGINTERN db_ret_t DbEnv_set_data_dir(struct DbEnv *self,char const *dir){
return self->set_data_dir(self, dir);
}
@@ -2585,7 +2759,7 @@ SWIGINTERN db_ret_t DbEnv_set_feedback(struct DbEnv *self,void (*env_feedback_fc
SWIGINTERN db_ret_t DbEnv_set_mp_max_openfd(struct DbEnv *self,int maxopenfd){
return self->set_mp_max_openfd(self, maxopenfd);
}
-SWIGINTERN db_ret_t DbEnv_set_mp_max_write(struct DbEnv *self,int maxwrite,int maxwrite_sleep){
+SWIGINTERN db_ret_t DbEnv_set_mp_max_write(struct DbEnv *self,int maxwrite,db_timeout_t maxwrite_sleep){
return self->set_mp_max_write(self, maxwrite, maxwrite_sleep);
}
SWIGINTERN db_ret_t DbEnv_set_mp_mmapsize(struct DbEnv *self,size_t mp_mmapsize){
@@ -2777,20 +2951,27 @@ SWIGINTERN int DbEnv_get_cachesize_ncache(struct DbEnv *self){
errno = self->get_cachesize(self, NULL, NULL, &ret);
return ret;
}
+SWIGINTERN jlong DbEnv_get_cache_max(struct DbEnv *self){
+ u_int32_t gbytes, bytes;
+ errno = self->get_cache_max(self, &gbytes, &bytes);
+ return (jlong)gbytes * GIGABYTE + bytes;
+ }
SWIGINTERN int DbEnv_get_mp_max_openfd(struct DbEnv *self){
int ret;
errno = self->get_mp_max_openfd(self, &ret);
return ret;
}
SWIGINTERN int DbEnv_get_mp_max_write(struct DbEnv *self){
- int ret, junk;
- errno = self->get_mp_max_write(self, &ret, &junk);
- return ret;
+ int maxwrite;
+ db_timeout_t sleep;
+ errno = self->get_mp_max_write(self, &maxwrite, &sleep);
+ return maxwrite;
}
-SWIGINTERN int DbEnv_get_mp_max_write_sleep(struct DbEnv *self){
- int ret, junk;
- errno = self->get_mp_max_write(self, &junk, &ret);
- return ret;
+SWIGINTERN db_timeout_t DbEnv_get_mp_max_write_sleep(struct DbEnv *self){
+ int maxwrite;
+ db_timeout_t sleep;
+ errno = self->get_mp_max_write(self, &maxwrite, &sleep);
+ return sleep;
}
SWIGINTERN size_t DbEnv_get_mp_mmapsize(struct DbEnv *self){
size_t ret;
@@ -2900,12 +3081,10 @@ SWIGINTERN jlong DbEnv_rep_get_limit(struct DbEnv *self){
errno = self->rep_get_limit(self, &gbytes, &bytes);
return (jlong)gbytes * GIGABYTE + bytes;
}
-SWIGINTERN int DbEnv_rep_elect(struct DbEnv *self,int nsites,int nvotes,u_int32_t flags){
- int id;
- errno = self->rep_elect(self, nsites, nvotes, &id, flags);
- return id;
+SWIGINTERN db_ret_t DbEnv_rep_elect(struct DbEnv *self,int nsites,int nvotes,u_int32_t flags){
+ return self->rep_elect(self, nsites, nvotes, flags);
}
-SWIGINTERN int DbEnv_rep_process_message(struct DbEnv *self,DBT *control,DBT *rec,int *envid,DB_LSN *ret_lsn){
+SWIGINTERN int DbEnv_rep_process_message(struct DbEnv *self,DBT *control,DBT *rec,int envid,DB_LSN *ret_lsn){
return self->rep_process_message(self, control, rec, envid,
ret_lsn);
}
@@ -2915,6 +3094,9 @@ SWIGINTERN db_ret_t DbEnv_rep_flush(struct DbEnv *self){
SWIGINTERN db_ret_t DbEnv_rep_set_config(struct DbEnv *self,u_int32_t which,int_bool onoff){
return self->rep_set_config(self, which, onoff);
}
+SWIGINTERN db_ret_t DbEnv_rep_set_lease(struct DbEnv *self,u_int32_t clock_scale_factor,u_int32_t flags){
+ return self->rep_set_lease(self, clock_scale_factor, flags);
+ }
SWIGINTERN db_ret_t DbEnv_rep_start(struct DbEnv *self,DBT *cdata,u_int32_t flags){
return self->rep_start(self, cdata, flags);
}
@@ -2991,6 +3173,11 @@ SWIGINTERN struct __db_repmgr_sites DbEnv_repmgr_site_list(struct DbEnv *self){
SWIGINTERN db_ret_t DbEnv_repmgr_start(struct DbEnv *self,int nthreads,u_int32_t flags){
return self->repmgr_start(self, nthreads, flags);
}
+SWIGINTERN DB_REPMGR_STAT *DbEnv_repmgr_stat(struct DbEnv *self,u_int32_t flags){
+ DB_REPMGR_STAT *statp = NULL;
+ errno = self->repmgr_stat(self, &statp, flags);
+ return statp;
+ }
SWIGINTERN char const *DbEnv_strerror(int error){
return db_strerror(error);
}
@@ -3015,6 +3202,11 @@ SWIGINTERN db_ret_t DbLogc_close(struct DbLogc *self,u_int32_t flags){
SWIGINTERN int DbLogc_get(struct DbLogc *self,DB_LSN *lsn,DBT *data,u_int32_t flags){
return self->get(self, lsn, data, flags);
}
+SWIGINTERN u_int32_t DbLogc_version(struct DbLogc *self,u_int32_t flags){
+ u_int32_t result;
+ errno = self->version(self, &result, flags);
+ return result;
+ }
SWIGINTERN DB_CACHE_PRIORITY DbMpoolFile_get_priority(struct DbMpoolFile *self){
DB_CACHE_PRIORITY ret;
errno = self->get_priority(self, &ret);
@@ -3158,7 +3350,7 @@ JNIEXPORT jlong JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_new_1Db(JNIEn
}
-JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1associate(JNIEnv *jenv, jclass jcls, jlong jarg1, jlong jarg2, jlong jarg3, jobject jarg4, jint jarg5) {
+JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1associate(JNIEnv *jenv, jclass jcls, jlong jarg1, jlong jarg2, jlong jarg3, jboolean jarg4, jint jarg5) {
struct Db *arg1 = (struct Db *) 0 ;
DB_TXN *arg2 = (DB_TXN *) 0 ;
DB *arg3 = (DB *) 0 ;
@@ -3172,7 +3364,7 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1associate(
arg2 = *(DB_TXN **)&jarg2;
arg3 = *(DB **)&jarg3;
- arg4 = (jarg4 == NULL) ? NULL : __dbj_seckey_create;
+ arg4 = (jarg4 == JNI_TRUE) ? __dbj_seckey_create : NULL;
arg5 = (u_int32_t)jarg5;
@@ -3385,21 +3577,37 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1errx(JNIEn
}
-JNIEXPORT jboolean JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1get_1transactional(JNIEnv *jenv, jclass jcls, jlong jarg1) {
- jboolean jresult = 0 ;
+JNIEXPORT jint JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1exists(JNIEnv *jenv, jclass jcls, jlong jarg1, jlong jarg2, jobject jarg3, jint jarg4) {
+ jint jresult = 0 ;
struct Db *arg1 = (struct Db *) 0 ;
- int_bool result;
+ DB_TXN *arg2 = (DB_TXN *) 0 ;
+ DBT *arg3 = (DBT *) 0 ;
+ u_int32_t arg4 ;
+ int result;
+ DBT_LOCKED ldbt3 ;
(void)jenv;
(void)jcls;
arg1 = *(struct Db **)&jarg1;
+ arg2 = *(DB_TXN **)&jarg2;
+
+ if (__dbj_dbt_copyin(jenv, &ldbt3, &arg3, jarg3, 0) != 0) {
+ return 0; /* An exception will be pending. */
+ }
+ arg4 = (u_int32_t)jarg4;
if (jarg1 == 0) {
__dbj_throw(jenv, EINVAL, "call on closed handle", NULL, NULL);
return 0;
}
- result = (int_bool)Db_get_transactional(arg1);
- jresult = (result) ? JNI_TRUE : JNI_FALSE;
+
+ result = (int)Db_exists(arg1,arg2,arg3,arg4);
+ if (!DB_RETOK_EXISTS(result)) {
+ __dbj_throw(jenv, result, NULL, NULL, DB2JDBENV);
+ }
+
+ jresult = (jint)result;
+ __dbj_dbt_release(jenv, jarg3, arg3, &ldbt3);
return jresult;
}
@@ -3821,6 +4029,31 @@ JNIEXPORT jint JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1get_1re_1d
}
+JNIEXPORT jint JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1get_1priority(JNIEnv *jenv, jclass jcls, jlong jarg1) {
+ jint jresult = 0 ;
+ struct Db *arg1 = (struct Db *) 0 ;
+ DB_CACHE_PRIORITY result;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = *(struct Db **)&jarg1;
+
+ if (jarg1 == 0) {
+ __dbj_throw(jenv, EINVAL, "call on closed handle", NULL, NULL);
+ return 0;
+ }
+
+ errno = 0;
+ result = (DB_CACHE_PRIORITY)Db_get_priority(arg1);
+ if (!DB_RETOK_STD(errno)) {
+ __dbj_throw(jenv, errno, NULL, NULL, DB2JDBENV);
+ }
+
+ jresult = (jint)result;
+ return jresult;
+}
+
+
JNIEXPORT jint JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1get_1re_1len(JNIEnv *jenv, jclass jcls, jlong jarg1) {
jint jresult = 0 ;
struct Db *arg1 = (struct Db *) 0 ;
@@ -3921,6 +4154,44 @@ JNIEXPORT jint JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1get_1q_1ex
}
+JNIEXPORT jboolean JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1get_1multiple(JNIEnv *jenv, jclass jcls, jlong jarg1) {
+ jboolean jresult = 0 ;
+ struct Db *arg1 = (struct Db *) 0 ;
+ int_bool result;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = *(struct Db **)&jarg1;
+
+ if (jarg1 == 0) {
+ __dbj_throw(jenv, EINVAL, "call on closed handle", NULL, NULL);
+ return 0;
+ }
+ result = (int_bool)Db_get_multiple(arg1);
+ jresult = (result) ? JNI_TRUE : JNI_FALSE;
+ return jresult;
+}
+
+
+JNIEXPORT jboolean JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1get_1transactional(JNIEnv *jenv, jclass jcls, jlong jarg1) {
+ jboolean jresult = 0 ;
+ struct Db *arg1 = (struct Db *) 0 ;
+ int_bool result;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = *(struct Db **)&jarg1;
+
+ if (jarg1 == 0) {
+ __dbj_throw(jenv, EINVAL, "call on closed handle", NULL, NULL);
+ return 0;
+ }
+ result = (int_bool)Db_get_transactional(arg1);
+ jresult = (result) ? JNI_TRUE : JNI_FALSE;
+ return jresult;
+}
+
+
JNIEXPORT jint JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1get_1type(JNIEnv *jenv, jclass jcls, jlong jarg1) {
jint jresult = 0 ;
struct Db *arg1 = (struct Db *) 0 ;
@@ -4258,7 +4529,7 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1rename0(JN
}
-JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1append_1recno(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg2) {
+JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1append_1recno(JNIEnv *jenv, jclass jcls, jlong jarg1, jboolean jarg2) {
struct Db *arg1 = (struct Db *) 0 ;
int (*arg2)(DB *,DBT *,db_recno_t) = (int (*)(DB *,DBT *,db_recno_t)) 0 ;
db_ret_t result;
@@ -4267,7 +4538,7 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1appen
(void)jcls;
arg1 = *(struct Db **)&jarg1;
- arg2 = (jarg2 == NULL) ? NULL : __dbj_append_recno;
+ arg2 = (jarg2 == JNI_TRUE) ? __dbj_append_recno : NULL;
if (jarg1 == 0) {
@@ -4283,7 +4554,7 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1appen
}
-JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1bt_1compare(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg2) {
+JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1bt_1compare(JNIEnv *jenv, jclass jcls, jlong jarg1, jboolean jarg2) {
struct Db *arg1 = (struct Db *) 0 ;
int (*arg2)(DB *,DBT const *,DBT const *) = (int (*)(DB *,DBT const *,DBT const *)) 0 ;
db_ret_t result;
@@ -4292,7 +4563,7 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1bt_1c
(void)jcls;
arg1 = *(struct Db **)&jarg1;
- arg2 = (jarg2 == NULL) ? NULL : __dbj_bt_compare;
+ arg2 = (jarg2 == JNI_TRUE) ? __dbj_bt_compare : NULL;
if (jarg1 == 0) {
@@ -4331,7 +4602,7 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1bt_1m
}
-JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1bt_1prefix(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg2) {
+JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1bt_1prefix(JNIEnv *jenv, jclass jcls, jlong jarg1, jboolean jarg2) {
struct Db *arg1 = (struct Db *) 0 ;
size_t (*arg2)(DB *,DBT const *,DBT const *) = (size_t (*)(DB *,DBT const *,DBT const *)) 0 ;
db_ret_t result;
@@ -4340,7 +4611,7 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1bt_1p
(void)jcls;
arg1 = *(struct Db **)&jarg1;
- arg2 = (jarg2 == NULL) ? NULL : __dbj_bt_prefix;
+ arg2 = (jarg2 == JNI_TRUE) ? __dbj_bt_prefix : NULL;
if (jarg1 == 0) {
@@ -4381,7 +4652,7 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1cache
}
-JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1dup_1compare(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg2) {
+JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1dup_1compare(JNIEnv *jenv, jclass jcls, jlong jarg1, jboolean jarg2) {
struct Db *arg1 = (struct Db *) 0 ;
int (*arg2)(DB *,DBT const *,DBT const *) = (int (*)(DB *,DBT const *,DBT const *)) 0 ;
db_ret_t result;
@@ -4390,7 +4661,7 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1dup_1
(void)jcls;
arg1 = *(struct Db **)&jarg1;
- arg2 = (jarg2 == NULL) ? NULL : __dbj_dup_compare;
+ arg2 = (jarg2 == JNI_TRUE) ? __dbj_dup_compare : NULL;
if (jarg1 == 0) {
@@ -4436,7 +4707,7 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1encry
}
-JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1feedback(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg2) {
+JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1feedback(JNIEnv *jenv, jclass jcls, jlong jarg1, jboolean jarg2) {
struct Db *arg1 = (struct Db *) 0 ;
void (*arg2)(DB *,int,int) = (void (*)(DB *,int,int)) 0 ;
db_ret_t result;
@@ -4445,7 +4716,7 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1feedb
(void)jcls;
arg1 = *(struct Db **)&jarg1;
- arg2 = (jarg2 == NULL) ? NULL : __dbj_db_feedback;
+ arg2 = (jarg2 == JNI_TRUE) ? __dbj_db_feedback : NULL;
if (jarg1 == 0) {
@@ -4484,6 +4755,31 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1flags
}
+JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1h_1compare(JNIEnv *jenv, jclass jcls, jlong jarg1, jboolean jarg2) {
+ struct Db *arg1 = (struct Db *) 0 ;
+ int (*arg2)(DB *,DBT const *,DBT const *) = (int (*)(DB *,DBT const *,DBT const *)) 0 ;
+ db_ret_t result;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = *(struct Db **)&jarg1;
+
+ arg2 = (jarg2 == JNI_TRUE) ? __dbj_h_compare : NULL;
+
+
+ if (jarg1 == 0) {
+ __dbj_throw(jenv, EINVAL, "call on closed handle", NULL, NULL);
+ return ;
+ }
+
+ result = (db_ret_t)Db_set_h_compare(arg1,arg2);
+ if (!DB_RETOK_STD(result)) {
+ __dbj_throw(jenv, result, NULL, NULL, DB2JDBENV);
+ }
+
+}
+
+
JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1h_1ffactor(JNIEnv *jenv, jclass jcls, jlong jarg1, jint jarg2) {
struct Db *arg1 = (struct Db *) 0 ;
u_int32_t arg2 ;
@@ -4507,7 +4803,7 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1h_1ff
}
-JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1h_1hash(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg2) {
+JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1h_1hash(JNIEnv *jenv, jclass jcls, jlong jarg1, jboolean jarg2) {
struct Db *arg1 = (struct Db *) 0 ;
u_int32_t (*arg2)(DB *,void const *,u_int32_t) = (u_int32_t (*)(DB *,void const *,u_int32_t)) 0 ;
db_ret_t result;
@@ -4516,7 +4812,7 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1h_1ha
(void)jcls;
arg1 = *(struct Db **)&jarg1;
- arg2 = (jarg2 == NULL) ? NULL : __dbj_h_hash;
+ arg2 = (jarg2 == JNI_TRUE) ? __dbj_h_hash : NULL;
if (jarg1 == 0) {
@@ -4601,6 +4897,29 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1pages
}
+JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1priority(JNIEnv *jenv, jclass jcls, jlong jarg1, jint jarg2) {
+ struct Db *arg1 = (struct Db *) 0 ;
+ DB_CACHE_PRIORITY arg2 ;
+ db_ret_t result;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = *(struct Db **)&jarg1;
+ arg2 = (DB_CACHE_PRIORITY)jarg2;
+
+ if (jarg1 == 0) {
+ __dbj_throw(jenv, EINVAL, "call on closed handle", NULL, NULL);
+ return ;
+ }
+
+ result = (db_ret_t)Db_set_priority(arg1,arg2);
+ if (!DB_RETOK_STD(result)) {
+ __dbj_throw(jenv, result, NULL, NULL, DB2JDBENV);
+ }
+
+}
+
+
JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1re_1delim(JNIEnv *jenv, jclass jcls, jlong jarg1, jint jarg2) {
struct Db *arg1 = (struct Db *) 0 ;
int arg2 ;
@@ -5074,6 +5393,31 @@ JNIEXPORT jint JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Dbc_1get(JNIEn
}
+JNIEXPORT jint JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Dbc_1get_1priority(JNIEnv *jenv, jclass jcls, jlong jarg1) {
+ jint jresult = 0 ;
+ struct Dbc *arg1 = (struct Dbc *) 0 ;
+ DB_CACHE_PRIORITY result;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = *(struct Dbc **)&jarg1;
+
+ if (jarg1 == 0) {
+ __dbj_throw(jenv, EINVAL, "call on closed handle", NULL, NULL);
+ return 0;
+ }
+
+ errno = 0;
+ result = (DB_CACHE_PRIORITY)Dbc_get_priority(arg1);
+ if (!DB_RETOK_STD(errno)) {
+ __dbj_throw(jenv, errno, NULL, NULL, DBC2JDBENV);
+ }
+
+ jresult = (jint)result;
+ return jresult;
+}
+
+
JNIEXPORT jint JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Dbc_1pget(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg2, jobject jarg3, jobject jarg4, jint jarg5) {
jint jresult = 0 ;
struct Dbc *arg1 = (struct Dbc *) 0 ;
@@ -5161,6 +5505,30 @@ JNIEXPORT jint JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Dbc_1put(JNIEn
}
+JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Dbc_1set_1priority(JNIEnv *jenv, jclass jcls, jlong jarg1, jint jarg2) {
+ struct Dbc *arg1 = (struct Dbc *) 0 ;
+ DB_CACHE_PRIORITY arg2 ;
+ db_ret_t result;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = *(struct Dbc **)&jarg1;
+ arg2 = (DB_CACHE_PRIORITY)jarg2;
+
+ if (jarg1 == 0) {
+ __dbj_throw(jenv, EINVAL, "call on closed handle", NULL, NULL);
+ return ;
+ }
+
+ errno = 0;
+ result = (db_ret_t)Dbc_set_priority(arg1,arg2);
+ if (!DB_RETOK_STD(errno)) {
+ __dbj_throw(jenv, errno, NULL, NULL, DBC2JDBENV);
+ }
+
+}
+
+
JNIEXPORT jlong JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_new_1DbEnv(JNIEnv *jenv, jclass jcls, jint jarg1) {
jlong jresult = 0 ;
u_int32_t arg1 ;
@@ -5733,6 +6101,29 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1ca
}
+JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1cache_1max(JNIEnv *jenv, jclass jcls, jlong jarg1, jlong jarg2) {
+ struct DbEnv *arg1 = (struct DbEnv *) 0 ;
+ jlong arg2 ;
+ db_ret_t result;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = *(struct DbEnv **)&jarg1;
+ arg2 = jarg2;
+
+ if (jarg1 == 0) {
+ __dbj_throw(jenv, EINVAL, "call on closed handle", NULL, NULL);
+ return ;
+ }
+
+ result = (db_ret_t)DbEnv_set_cache_max(arg1,arg2);
+ if (!DB_RETOK_STD(result)) {
+ __dbj_throw(jenv, result, NULL, NULL, JDBENV);
+ }
+
+}
+
+
JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1data_1dir(JNIEnv *jenv, jclass jcls, jlong jarg1, jstring jarg2) {
struct DbEnv *arg1 = (struct DbEnv *) 0 ;
char *arg2 = (char *) 0 ;
@@ -5816,7 +6207,7 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1en
}
-JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1errcall(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg2) {
+JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1errcall(JNIEnv *jenv, jclass jcls, jlong jarg1, jboolean jarg2) {
struct DbEnv *arg1 = (struct DbEnv *) 0 ;
void (*arg2)(DB_ENV const *,char const *,char const *) = (void (*)(DB_ENV const *,char const *,char const *)) 0 ;
@@ -5824,7 +6215,7 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1er
(void)jcls;
arg1 = *(struct DbEnv **)&jarg1;
- arg2 = (jarg2 == NULL) ? NULL : __dbj_error;
+ arg2 = (jarg2 == JNI_TRUE) ? __dbj_error : NULL;
if (jarg1 == 0) {
@@ -5860,7 +6251,7 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1fl
}
-JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1feedback(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg2) {
+JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1feedback(JNIEnv *jenv, jclass jcls, jlong jarg1, jboolean jarg2) {
struct DbEnv *arg1 = (struct DbEnv *) 0 ;
void (*arg2)(DB_ENV *,int,int) = (void (*)(DB_ENV *,int,int)) 0 ;
db_ret_t result;
@@ -5869,7 +6260,7 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1fe
(void)jcls;
arg1 = *(struct DbEnv **)&jarg1;
- arg2 = (jarg2 == NULL) ? NULL : __dbj_env_feedback;
+ arg2 = (jarg2 == JNI_TRUE) ? __dbj_env_feedback : NULL;
if (jarg1 == 0) {
@@ -5908,17 +6299,17 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1mp
}
-JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1mp_1max_1write(JNIEnv *jenv, jclass jcls, jlong jarg1, jint jarg2, jint jarg3) {
+JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1mp_1max_1write(JNIEnv *jenv, jclass jcls, jlong jarg1, jint jarg2, jlong jarg3) {
struct DbEnv *arg1 = (struct DbEnv *) 0 ;
int arg2 ;
- int arg3 ;
+ db_timeout_t arg3 ;
db_ret_t result;
(void)jenv;
(void)jcls;
arg1 = *(struct DbEnv **)&jarg1;
arg2 = (int)jarg2;
- arg3 = (int)jarg3;
+ arg3 = (db_timeout_t)jarg3;
if (jarg1 == 0) {
__dbj_throw(jenv, EINVAL, "call on closed handle", NULL, NULL);
@@ -5956,7 +6347,7 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1mp
}
-JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1msgcall(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg2) {
+JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1msgcall(JNIEnv *jenv, jclass jcls, jlong jarg1, jboolean jarg2) {
struct DbEnv *arg1 = (struct DbEnv *) 0 ;
void (*arg2)(DB_ENV const *,char const *) = (void (*)(DB_ENV const *,char const *)) 0 ;
@@ -5964,7 +6355,7 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1ms
(void)jcls;
arg1 = *(struct DbEnv **)&jarg1;
- arg2 = (jarg2 == NULL) ? NULL : __dbj_message;
+ arg2 = (jarg2 == JNI_TRUE) ? __dbj_message : NULL;
if (jarg1 == 0) {
@@ -5975,7 +6366,7 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1ms
}
-JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1paniccall(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg2) {
+JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1paniccall(JNIEnv *jenv, jclass jcls, jlong jarg1, jboolean jarg2) {
struct DbEnv *arg1 = (struct DbEnv *) 0 ;
void (*arg2)(DB_ENV *,int) = (void (*)(DB_ENV *,int)) 0 ;
db_ret_t result;
@@ -5984,7 +6375,7 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1pa
(void)jcls;
arg1 = *(struct DbEnv **)&jarg1;
- arg2 = (jarg2 == NULL) ? NULL : __dbj_panic;
+ arg2 = (jarg2 == JNI_TRUE) ? __dbj_panic : NULL;
if (jarg1 == 0) {
@@ -6133,7 +6524,7 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1tx
}
-JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1app_1dispatch(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg2) {
+JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1app_1dispatch(JNIEnv *jenv, jclass jcls, jlong jarg1, jboolean jarg2) {
struct DbEnv *arg1 = (struct DbEnv *) 0 ;
int (*arg2)(DB_ENV *,DBT *,DB_LSN *,db_recops) = (int (*)(DB_ENV *,DBT *,DB_LSN *,db_recops)) 0 ;
db_ret_t result;
@@ -6142,7 +6533,7 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1ap
(void)jcls;
arg1 = *(struct DbEnv **)&jarg1;
- arg2 = (jarg2 == NULL) ? NULL : __dbj_app_dispatch;
+ arg2 = (jarg2 == JNI_TRUE) ? __dbj_app_dispatch : NULL;
if (jarg1 == 0) {
@@ -6158,7 +6549,7 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1ap
}
-JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1event_1notify(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg2) {
+JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1event_1notify(JNIEnv *jenv, jclass jcls, jlong jarg1, jboolean jarg2) {
struct DbEnv *arg1 = (struct DbEnv *) 0 ;
void (*arg2)(DB_ENV *,u_int32_t,void *) = (void (*)(DB_ENV *,u_int32_t,void *)) 0 ;
db_ret_t result;
@@ -6167,7 +6558,7 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1ev
(void)jcls;
arg1 = *(struct DbEnv **)&jarg1;
- arg2 = (jarg2 == NULL) ? NULL : __dbj_event_notify;
+ arg2 = (jarg2 == JNI_TRUE) ? __dbj_event_notify : NULL;
if (jarg1 == 0) {
@@ -7318,6 +7709,31 @@ JNIEXPORT jint JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1get_1ca
}
+JNIEXPORT jlong JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1get_1cache_1max(JNIEnv *jenv, jclass jcls, jlong jarg1) {
+ jlong jresult = 0 ;
+ struct DbEnv *arg1 = (struct DbEnv *) 0 ;
+ jlong result;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = *(struct DbEnv **)&jarg1;
+
+ if (jarg1 == 0) {
+ __dbj_throw(jenv, EINVAL, "call on closed handle", NULL, NULL);
+ return 0;
+ }
+
+ errno = 0;
+ result = DbEnv_get_cache_max(arg1);
+ if (!DB_RETOK_STD(errno)) {
+ __dbj_throw(jenv, errno, NULL, NULL, JDBENV);
+ }
+
+ jresult = result;
+ return jresult;
+}
+
+
JNIEXPORT jint JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1get_1mp_1max_1openfd(JNIEnv *jenv, jclass jcls, jlong jarg1) {
jint jresult = 0 ;
struct DbEnv *arg1 = (struct DbEnv *) 0 ;
@@ -7368,10 +7784,10 @@ JNIEXPORT jint JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1get_1mp
}
-JNIEXPORT jint JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1get_1mp_1max_1write_1sleep(JNIEnv *jenv, jclass jcls, jlong jarg1) {
- jint jresult = 0 ;
+JNIEXPORT jlong JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1get_1mp_1max_1write_1sleep(JNIEnv *jenv, jclass jcls, jlong jarg1) {
+ jlong jresult = 0 ;
struct DbEnv *arg1 = (struct DbEnv *) 0 ;
- int result;
+ db_timeout_t result;
(void)jenv;
(void)jcls;
@@ -7383,12 +7799,12 @@ JNIEXPORT jint JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1get_1mp
}
errno = 0;
- result = (int)DbEnv_get_mp_max_write_sleep(arg1);
+ result = (db_timeout_t)DbEnv_get_mp_max_write_sleep(arg1);
if (!DB_RETOK_STD(errno)) {
__dbj_throw(jenv, errno, NULL, NULL, JDBENV);
}
- jresult = (jint)result;
+ jresult = (jlong)result;
return jresult;
}
@@ -8017,13 +8433,12 @@ JNIEXPORT jlong JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1rep_1g
}
-JNIEXPORT jint JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1rep_1elect(JNIEnv *jenv, jclass jcls, jlong jarg1, jint jarg2, jint jarg3, jint jarg4) {
- jint jresult = 0 ;
+JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1rep_1elect(JNIEnv *jenv, jclass jcls, jlong jarg1, jint jarg2, jint jarg3, jint jarg4) {
struct DbEnv *arg1 = (struct DbEnv *) 0 ;
int arg2 ;
int arg3 ;
u_int32_t arg4 ;
- int result;
+ db_ret_t result;
(void)jenv;
(void)jcls;
@@ -8034,31 +8449,27 @@ JNIEXPORT jint JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1rep_1el
if (jarg1 == 0) {
__dbj_throw(jenv, EINVAL, "call on closed handle", NULL, NULL);
- return 0;
+ return ;
}
- errno = 0;
- result = (int)DbEnv_rep_elect(arg1,arg2,arg3,arg4);
- if (!DB_RETOK_STD(errno)) {
- __dbj_throw(jenv, errno, NULL, NULL, JDBENV);
+ result = (db_ret_t)DbEnv_rep_elect(arg1,arg2,arg3,arg4);
+ if (!DB_RETOK_STD(result)) {
+ __dbj_throw(jenv, result, NULL, NULL, JDBENV);
}
- jresult = (jint)result;
- return jresult;
}
-JNIEXPORT jint JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1rep_1process_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg2, jobject jarg3, jobject jarg4, jobject jarg5) {
+JNIEXPORT jint JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1rep_1process_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg2, jobject jarg3, jint jarg4, jobject jarg5) {
jint jresult = 0 ;
struct DbEnv *arg1 = (struct DbEnv *) 0 ;
DBT *arg2 = (DBT *) 0 ;
DBT *arg3 = (DBT *) 0 ;
- int *arg4 = (int *) 0 ;
+ int arg4 ;
DB_LSN *arg5 = (DB_LSN *) 0 ;
int result;
DBT_LOCKED ldbt2 ;
DBT_LOCKED ldbt3 ;
- int id4 ;
DB_LSN lsn5 ;
(void)jenv;
@@ -8072,10 +8483,7 @@ JNIEXPORT jint JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1rep_1pr
if (__dbj_dbt_copyin(jenv, &ldbt3, &arg3, jarg3, 0) != 0) {
return 0; /* An exception will be pending. */
}
-
- id4 = (*jenv)->GetIntField(jenv, jarg4, rep_processmsg_envid_fid);
- arg4 = &id4;
-
+ arg4 = (int)jarg4;
if (jarg5 == NULL) {
arg5 = NULL;
@@ -8104,9 +8512,6 @@ JNIEXPORT jint JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1rep_1pr
}
jresult = (jint)result;
-
- (*jenv)->SetIntField(jenv, jarg4, rep_processmsg_envid_fid, *arg4);
-
__dbj_dbt_release(jenv, jarg2, arg2, &ldbt2);
__dbj_dbt_release(jenv, jarg3, arg3, &ldbt3);
@@ -8166,6 +8571,31 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1rep_1se
}
+JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1rep_1set_1lease(JNIEnv *jenv, jclass jcls, jlong jarg1, jint jarg2, jint jarg3) {
+ struct DbEnv *arg1 = (struct DbEnv *) 0 ;
+ u_int32_t arg2 ;
+ u_int32_t arg3 ;
+ db_ret_t result;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = *(struct DbEnv **)&jarg1;
+ arg2 = (u_int32_t)jarg2;
+ arg3 = (u_int32_t)jarg3;
+
+ if (jarg1 == 0) {
+ __dbj_throw(jenv, EINVAL, "call on closed handle", NULL, NULL);
+ return ;
+ }
+
+ result = (db_ret_t)DbEnv_rep_set_lease(arg1,arg2,arg3);
+ if (!DB_RETOK_STD(result)) {
+ __dbj_throw(jenv, result, NULL, NULL, JDBENV);
+ }
+
+}
+
+
JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1rep_1start(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg2, jint jarg3) {
struct DbEnv *arg1 = (struct DbEnv *) 0 ;
DBT *arg2 = (DBT *) 0 ;
@@ -8326,7 +8756,7 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1re
}
-JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1rep_1set_1transport(JNIEnv *jenv, jclass jcls, jlong jarg1, jint jarg2, jobject jarg3) {
+JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1rep_1set_1transport(JNIEnv *jenv, jclass jcls, jlong jarg1, jint jarg2, jboolean jarg3) {
struct DbEnv *arg1 = (struct DbEnv *) 0 ;
int arg2 ;
int (*arg3)(DB_ENV *,DBT const *,DBT const *,DB_LSN const *,int,u_int32_t) = (int (*)(DB_ENV *,DBT const *,DBT const *,DB_LSN const *,int,u_int32_t)) 0 ;
@@ -8337,7 +8767,7 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1rep_1se
arg1 = *(struct DbEnv **)&jarg1;
arg2 = (int)jarg2;
- arg3 = (jarg3 == NULL) ? NULL : __dbj_rep_transport;
+ arg3 = (jarg3 == JNI_TRUE) ? __dbj_rep_transport : NULL;
if (jarg1 == 0) {
@@ -8690,6 +9120,38 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1repmgr_
}
+JNIEXPORT jobject JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1repmgr_1stat(JNIEnv *jenv, jclass jcls, jlong jarg1, jint jarg2) {
+ jobject jresult = 0 ;
+ struct DbEnv *arg1 = (struct DbEnv *) 0 ;
+ u_int32_t arg2 ;
+ DB_REPMGR_STAT *result = 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = *(struct DbEnv **)&jarg1;
+ arg2 = (u_int32_t)jarg2;
+
+ if (jarg1 == 0) {
+ __dbj_throw(jenv, EINVAL, "call on closed handle", NULL, NULL);
+ return 0;
+ }
+
+ errno = 0;
+ result = (DB_REPMGR_STAT *)DbEnv_repmgr_stat(arg1,arg2);
+ if (!DB_RETOK_STD(errno)) {
+ __dbj_throw(jenv, errno, NULL, NULL, JDBENV);
+ }
+
+
+ jresult = (*jenv)->NewObject(jenv, repmgr_stat_class, repmgr_stat_construct);
+ if (jresult != NULL)
+ __dbj_fill_repmgr_stat(jenv, jresult, result);
+ __os_ufree(NULL, result);
+
+ return jresult;
+}
+
+
JNIEXPORT jstring JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1strerror(JNIEnv *jenv, jclass jcls, jint jarg1) {
jstring jresult = 0 ;
int arg1 ;
@@ -8849,6 +9311,33 @@ JNIEXPORT jint JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbLogc_1get(JN
}
+JNIEXPORT jint JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbLogc_1version(JNIEnv *jenv, jclass jcls, jlong jarg1, jint jarg2) {
+ jint jresult = 0 ;
+ struct DbLogc *arg1 = (struct DbLogc *) 0 ;
+ u_int32_t arg2 ;
+ u_int32_t result;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = *(struct DbLogc **)&jarg1;
+ arg2 = (u_int32_t)jarg2;
+
+ if (jarg1 == 0) {
+ __dbj_throw(jenv, EINVAL, "call on closed handle", NULL, NULL);
+ return 0;
+ }
+
+ errno = 0;
+ result = (u_int32_t)DbLogc_version(arg1,arg2);
+ if (!DB_RETOK_STD(errno)) {
+ __dbj_throw(jenv, errno, NULL, NULL, NULL);
+ }
+
+ jresult = (jint)result;
+ return jresult;
+}
+
+
JNIEXPORT jint JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbMpoolFile_1get_1priority(JNIEnv *jenv, jclass jcls, jlong jarg1) {
jint jresult = 0 ;
struct DbMpoolFile *arg1 = (struct DbMpoolFile *) 0 ;
diff --git a/db/libdb_java/java_callbacks.i b/db/libdb_java/java_callbacks.i
index ae10f2062..c5dfcbbda 100644
--- a/db/libdb_java/java_callbacks.i
+++ b/db/libdb_java/java_callbacks.i
@@ -1,14 +1,15 @@
/* Callbacks */
%define JAVA_CALLBACK(_sig, _jclass, _name)
-JAVA_TYPEMAP(_sig, _jclass, jobject)
-%typemap(javain) _sig %{ (_name##_handler = $javainput) %}
+JAVA_TYPEMAP(_sig, _jclass, jboolean)
+%typemap(jtype) _sig "boolean"
+%typemap(javain) _sig %{ (_name##_handler = $javainput) != null %}
/*
* The Java object is stored in the Db or DbEnv class.
* Here we only care whether it is non-NULL.
*/
%typemap(in) _sig %{
- $1 = ($input == NULL) ? NULL : __dbj_##_name;
+ $1 = ($input == JNI_TRUE) ? __dbj_##_name : NULL;
%}
%enddef
@@ -96,21 +97,49 @@ static void __dbj_event_notify(DB_ENV *dbenv, u_int32_t event_id, void * info)
{
JNIEnv *jenv = __dbj_get_jnienv();
jobject jdbenv = (jobject)DB_ENV_INTERNAL(dbenv);
- int ret;
-
- COMPQUIET(info, NULL);
- if(jdbenv == NULL)
+ if (jdbenv == NULL)
return ;
- ret = (*jenv)->CallNonvirtualIntMethod(jenv, jdbenv, dbenv_class,
- event_notify_method, event_id);
-
- if((*jenv)->ExceptionOccurred(jenv)) {
- /* The exception will be thrown, so this could be any error. */
- ret = EINVAL;
+ switch (event_id) {
+ case DB_EVENT_PANIC:
+ (*jenv)->CallNonvirtualVoidMethod(jenv, jdbenv,
+ dbenv_class, panic_event_notify_method);
+ break;
+ case DB_EVENT_REP_CLIENT:
+ (*jenv)->CallNonvirtualVoidMethod(jenv, jdbenv,
+ dbenv_class, rep_client_event_notify_method);
+ break;
+ case DB_EVENT_REP_ELECTED:
+ (*jenv)->CallNonvirtualVoidMethod(jenv, jdbenv,
+ dbenv_class, rep_elected_event_notify_method);
+ break;
+ case DB_EVENT_REP_MASTER:
+ (*jenv)->CallNonvirtualVoidMethod(jenv, jdbenv,
+ dbenv_class, rep_master_event_notify_method);
+ break;
+ case DB_EVENT_REP_NEWMASTER:
+ (*jenv)->CallNonvirtualVoidMethod(jenv, jdbenv,
+ dbenv_class, rep_new_master_event_notify_method,
+ *(int*)info);
+ break;
+ case DB_EVENT_REP_PERM_FAILED:
+ (*jenv)->CallNonvirtualVoidMethod(jenv, jdbenv,
+ dbenv_class, rep_perm_failed_event_notify_method);
+ break;
+ case DB_EVENT_REP_STARTUPDONE:
+ (*jenv)->CallNonvirtualVoidMethod(jenv, jdbenv,
+ dbenv_class, rep_startup_done_event_notify_method);
+ break;
+ case DB_EVENT_WRITE_FAILED:
+ (*jenv)->CallNonvirtualVoidMethod(jenv, jdbenv,
+ dbenv_class, write_failed_event_notify_method,
+ *(int*)info);
+ break;
+ default:
+ dbenv->errx(dbenv, "Unhandled event callback in the Java API");
+ DB_ASSERT(dbenv, 0);
}
- return ;
}
static int __dbj_rep_transport(DB_ENV *dbenv,
@@ -162,8 +191,11 @@ static int __dbj_seckey_create(DB *db,
JNIEnv *jenv = __dbj_get_jnienv();
jobject jdb = (jobject)DB_INTERNAL(db);
jobject jkey, jdata, jresult;
+ jobjectArray jskeys;
+ jsize i, num_skeys;
jbyteArray jkeyarr, jdataarr;
DBT_LOCKED lresult;
+ DBT *tresult;
int ret;
if (jdb == NULL)
@@ -175,8 +207,7 @@ static int __dbj_seckey_create(DB *db,
jdata = (data->app_data != NULL) ?
((DBT_LOCKED *)data->app_data)->jdbt :
(*jenv)->NewObject(jenv, dbt_class, dbt_construct);
- jresult = (*jenv)->NewObject(jenv, dbt_class, dbt_construct);
- if (jkey == NULL || jdata == NULL || jresult == NULL)
+ if (jkey == NULL || jdata == NULL)
return (ENOMEM); /* An exception is pending */
if (key->app_data == NULL) {
@@ -190,11 +221,25 @@ static int __dbj_seckey_create(DB *db,
return (ENOMEM); /* An exception is pending */
}
- ret = (int)(*jenv)->CallNonvirtualIntMethod(jenv, jdb, db_class,
- seckey_create_method, jkey, jdata, jresult);
+ jskeys = (jobjectArray)(*jenv)->CallNonvirtualObjectMethod(jenv,
+ jdb, db_class, seckey_create_method, jkey, jdata);
- if (ret != 0)
+ if (jskeys == NULL ||
+ (num_skeys = (*jenv)->GetArrayLength(jenv, jskeys)) == 0) {
+ ret = DB_DONOTINDEX;
goto err;
+ } else if (num_skeys == 1) {
+ memset(result, 0, sizeof (DBT));
+ tresult = result;
+ } else {
+ if ((ret = __os_umalloc(db->dbenv,
+ num_skeys * sizeof (DBT), &result->data)) != 0)
+ goto err;
+ memset(result->data, 0, num_skeys * sizeof (DBT));
+ result->size = num_skeys;
+ F_SET(result, DB_DBT_APPMALLOC | DB_DBT_MULTIPLE);
+ tresult = (DBT *)result->data;
+ }
if ((*jenv)->ExceptionOccurred(jenv)) {
/* The exception will be thrown, so this could be any error. */
@@ -202,23 +247,30 @@ static int __dbj_seckey_create(DB *db,
goto err;
}
- if ((ret = __dbj_dbt_copyin(jenv, &lresult, NULL, jresult, 0)) != 0)
- goto err;
+ for (i = 0; i < num_skeys; i++, tresult++) {
+ jresult = (*jenv)->GetObjectArrayElement(jenv, jskeys, i);
- if (lresult.dbt.size != 0) {
- /* If there's data, we need to take a copy of it. */
- memset(result, 0, sizeof (DBT));
- result->size = lresult.dbt.size;
if ((ret =
- __os_umalloc(NULL, result->size, &result->data)) != 0)
+ __dbj_dbt_copyin(jenv, &lresult, NULL, jresult, 0)) != 0)
goto err;
- if ((ret = __dbj_dbt_memcopy(&lresult.dbt, 0,
- result->data, result->size,
- DB_USERCOPY_GETDATA)) != 0)
- goto err;
- __dbj_dbt_release(jenv, jresult, &lresult.dbt, &lresult);
- (*jenv)->DeleteLocalRef(jenv, lresult.jarr);
- F_SET(result, DB_DBT_APPMALLOC);
+
+ if (lresult.dbt.size != 0) {
+ /* If there's data, we need to take a copy of it. */
+ tresult->size = lresult.dbt.size;
+ if ((ret = __os_umalloc(NULL,
+ tresult->size, &tresult->data)) != 0)
+ goto err;
+ if ((ret = __dbj_dbt_memcopy(&lresult.dbt, 0,
+ tresult->data, tresult->size,
+ DB_USERCOPY_GETDATA)) != 0)
+ goto err;
+ __dbj_dbt_release(jenv,
+ jresult, &lresult.dbt, &lresult);
+ (*jenv)->DeleteLocalRef(jenv, lresult.jarr);
+ F_SET(tresult, DB_DBT_APPMALLOC);
+ }
+
+ (*jenv)->DeleteLocalRef(jenv, jresult);
}
err: if (key->app_data == NULL) {
@@ -229,7 +281,6 @@ err: if (key->app_data == NULL) {
(*jenv)->DeleteLocalRef(jenv, jdataarr);
(*jenv)->DeleteLocalRef(jenv, jdata);
}
- (*jenv)->DeleteLocalRef(jenv, jresult);
return (ret);
}
@@ -292,7 +343,11 @@ err: (*jenv)->DeleteLocalRef(jenv, jdbtarr);
return (ret);
}
-static int __dbj_bt_compare(DB *db, const DBT *dbt1, const DBT *dbt2)
+/*
+ * Shared by __dbj_bt_compare and __dbj_h_compare
+ */
+static int __dbj_am_compare(DB *db, const DBT *dbt1, const DBT *dbt2,
+ jmethodID compare_method)
{
JNIEnv *jenv = __dbj_get_jnienv();
jobject jdb = (jobject)DB_INTERNAL(db);
@@ -323,7 +378,7 @@ static int __dbj_bt_compare(DB *db, const DBT *dbt1, const DBT *dbt2)
}
ret = (int)(*jenv)->CallNonvirtualIntMethod(jenv, jdb, db_class,
- bt_compare_method, jdbtarr1, jdbtarr2);
+ compare_method, jdbtarr1, jdbtarr2);
if ((*jenv)->ExceptionOccurred(jenv)) {
/* The exception will be thrown, so this could be any error. */
@@ -338,6 +393,11 @@ static int __dbj_bt_compare(DB *db, const DBT *dbt1, const DBT *dbt2)
return (ret);
}
+static int __dbj_bt_compare(DB *db, const DBT *dbt1, const DBT *dbt2)
+{
+ return __dbj_am_compare(db, dbt1, dbt2, bt_compare_method);
+}
+
static size_t __dbj_bt_prefix(DB *db, const DBT *dbt1, const DBT *dbt2)
{
JNIEnv *jenv = __dbj_get_jnienv();
@@ -352,7 +412,8 @@ static size_t __dbj_bt_prefix(DB *db, const DBT *dbt1, const DBT *dbt2)
if (dbt1->app_data != NULL)
jdbt1 = ((DBT_LOCKED *)dbt1->app_data)->jdbt;
else {
- if ((jdbt1 = (*jenv)->NewObject(jenv, dbt_class, dbt_construct)) == NULL)
+ if ((jdbt1 =
+ (*jenv)->NewObject(jenv, dbt_class, dbt_construct)) == NULL)
return (ENOMEM); /* An exception is pending */
__dbj_dbt_copyout(jenv, dbt1, &jdbtarr1, jdbt1);
if (jdbtarr1 == NULL)
@@ -362,7 +423,8 @@ static size_t __dbj_bt_prefix(DB *db, const DBT *dbt1, const DBT *dbt2)
if (dbt2->app_data != NULL)
jdbt2 = ((DBT_LOCKED *)dbt2->app_data)->jdbt;
else {
- if ((jdbt2 = (*jenv)->NewObject(jenv, dbt_class, dbt_construct)) == NULL)
+ if ((jdbt2 =
+ (*jenv)->NewObject(jenv, dbt_class, dbt_construct)) == NULL)
return (ENOMEM); /* An exception is pending */
__dbj_dbt_copyout(jenv, dbt2, &jdbtarr2, jdbt2);
if (jdbtarr2 == NULL)
@@ -430,6 +492,11 @@ static void __dbj_db_feedback(DB *db, int opcode, int percent)
db_feedback_method, opcode, percent);
}
+static int __dbj_h_compare(DB *db, const DBT *dbt1, const DBT *dbt2)
+{
+ return __dbj_am_compare(db, dbt1, dbt2, h_compare_method);
+}
+
static u_int32_t __dbj_h_hash(DB *db, const void *data, u_int32_t len)
{
JNIEnv *jenv = __dbj_get_jnienv();
@@ -472,12 +539,17 @@ JAVA_CALLBACK(int (*send)(DB_ENV *, const DBT *, const DBT *,
/*
* Db.associate is a special case, because the handler must be set in the
- * secondary DB - that's what we have in the callback.
+ * secondary DB - that's what we have in the callback. In addition, there
+ * are two flavors of callback (single key and multi-key), so we need to
+ * check for both types when working out whether the C callback should
+ * be NULL. Note that this implies that the multi-key callback will be set
+ * on the secondary database *before* associate is called.
*/
JAVA_CALLBACK(int (*callback)(DB *, const DBT *, const DBT *, DBT *),
com.sleepycat.db.SecondaryKeyCreator, seckey_create)
%typemap(javain) int (*callback)(DB *, const DBT *, const DBT *, DBT *)
- %{ (secondary.seckey_create_handler = $javainput) %}
+ %{ (secondary.seckey_create_handler = $javainput) != null ||
+ (secondary.secmultikey_create_handler != null) %}
JAVA_CALLBACK(int (*db_append_recno_fcn)(DB *, DBT *, db_recno_t),
com.sleepycat.db.RecordNumberAppender, append_recno)
@@ -489,5 +561,7 @@ JAVA_CALLBACK(int (*dup_compare_fcn)(DB *, const DBT *, const DBT *),
java.util.Comparator, dup_compare)
JAVA_CALLBACK(void (*db_feedback_fcn)(DB *, int, int),
com.sleepycat.db.FeedbackHandler, db_feedback)
+JAVA_CALLBACK(int (*h_compare_fcn)(DB *, const DBT *, const DBT *),
+ java.util.Comparator, h_compare)
JAVA_CALLBACK(u_int32_t (*h_hash_fcn)(DB *, const void *, u_int32_t),
com.sleepycat.db.Hasher, h_hash)
diff --git a/db/libdb_java/java_except.i b/db/libdb_java/java_except.i
index c90e4cc1f..f15e5580f 100644
--- a/db/libdb_java/java_except.i
+++ b/db/libdb_java/java_except.i
@@ -65,6 +65,12 @@ static jthrowable __dbj_get_except(JNIEnv *jenv,
jmsg = (*jenv)->NewStringUTF(jenv, msg);
+ /* Retrieve error message logged by DB */
+ if (jdbenv != NULL) {
+ jmsg = (jstring) (*jenv)->CallNonvirtualObjectMethod(jenv,
+ jdbenv, dbenv_class, get_err_msg_method, jmsg);
+ }
+
switch (err) {
case EINVAL:
return (jthrowable)(*jenv)->NewObject(jenv,
@@ -102,6 +108,16 @@ static jthrowable __dbj_get_except(JNIEnv *jenv,
repjoinfailex_class, repjoinfailex_construct,
jmsg, err, jdbenv);
+ case DB_REP_LEASE_EXPIRED:
+ return (jthrowable)(*jenv)->NewObject(jenv,
+ repleaseexpiredex_class, repleaseexpiredex_construct,
+ jmsg, err, jdbenv);
+
+ case DB_REP_LEASE_TIMEOUT:
+ return (jthrowable)(*jenv)->NewObject(jenv,
+ repleasetimeoutex_class, repleasetimeoutex_construct,
+ jmsg, err, jdbenv);
+
case DB_REP_LOCKOUT:
return (jthrowable)(*jenv)->NewObject(jenv,
replockoutex_class, replockoutex_construct,
diff --git a/db/libdb_java/java_stat.i b/db/libdb_java/java_stat.i
index e932f5e23..409e2488e 100644
--- a/db/libdb_java/java_stat.i
+++ b/db/libdb_java/java_stat.i
@@ -90,6 +90,7 @@ JAVA_TYPEMAP(DB_MPOOL_FSTAT **, com.sleepycat.db.CacheFileStats[], jobjectArray)
JAVA_STAT_CLASS(DB_MUTEX_STAT *, com.sleepycat.db.MutexStats, mutex_stat)
JAVA_STAT_CLASS(DB_REP_STAT *, com.sleepycat.db.ReplicationStats, rep_stat)
+JAVA_STAT_CLASS(DB_REPMGR_STAT *, com.sleepycat.db.ReplicationManagerStats, repmgr_stat)
JAVA_STAT_CLASS(DB_SEQUENCE_STAT *, com.sleepycat.db.SequenceStats, seq_stat)
JAVA_TYPEMAP(DB_TXN_STAT *, com.sleepycat.db.TransactionStats, jobject)
%typemap(out) DB_TXN_STAT * {
diff --git a/db/libdb_java/java_stat_auto.c b/db/libdb_java/java_stat_auto.c
index b3de2a958..e7c7dfcb2 100644
--- a/db/libdb_java/java_stat_auto.c
+++ b/db/libdb_java/java_stat_auto.c
@@ -3,8 +3,7 @@
*
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*/
static int __dbj_fill_bt_stat(JNIEnv *jnienv,
jobject jobj, struct __db_bt_stat *statp) {
@@ -13,6 +12,7 @@ static int __dbj_fill_bt_stat(JNIEnv *jnienv,
JAVADB_STAT_INT(jnienv, jobj, bt_stat_bt_metaflags_fid, statp, bt_metaflags);
JAVADB_STAT_INT(jnienv, jobj, bt_stat_bt_nkeys_fid, statp, bt_nkeys);
JAVADB_STAT_INT(jnienv, jobj, bt_stat_bt_ndata_fid, statp, bt_ndata);
+ JAVADB_STAT_INT(jnienv, jobj, bt_stat_bt_pagecnt_fid, statp, bt_pagecnt);
JAVADB_STAT_INT(jnienv, jobj, bt_stat_bt_pagesize_fid, statp, bt_pagesize);
JAVADB_STAT_INT(jnienv, jobj, bt_stat_bt_minkey_fid, statp, bt_minkey);
JAVADB_STAT_INT(jnienv, jobj, bt_stat_bt_re_len_fid, statp, bt_re_len);
@@ -50,6 +50,7 @@ static int __dbj_fill_h_stat(JNIEnv *jnienv,
JAVADB_STAT_INT(jnienv, jobj, h_stat_hash_metaflags_fid, statp, hash_metaflags);
JAVADB_STAT_INT(jnienv, jobj, h_stat_hash_nkeys_fid, statp, hash_nkeys);
JAVADB_STAT_INT(jnienv, jobj, h_stat_hash_ndata_fid, statp, hash_ndata);
+ JAVADB_STAT_INT(jnienv, jobj, h_stat_hash_pagecnt_fid, statp, hash_pagecnt);
JAVADB_STAT_INT(jnienv, jobj, h_stat_hash_pagesize_fid, statp, hash_pagesize);
JAVADB_STAT_INT(jnienv, jobj, h_stat_hash_ffactor_fid, statp, hash_ffactor);
JAVADB_STAT_INT(jnienv, jobj, h_stat_hash_buckets_fid, statp, hash_buckets);
@@ -71,9 +72,9 @@ static int __dbj_fill_lock_stat(JNIEnv *jnienv,
JAVADB_STAT_INT(jnienv, jobj, lock_stat_st_maxlockers_fid, statp, st_maxlockers);
JAVADB_STAT_INT(jnienv, jobj, lock_stat_st_maxobjects_fid, statp, st_maxobjects);
JAVADB_STAT_INT(jnienv, jobj, lock_stat_st_nmodes_fid, statp, st_nmodes);
+ JAVADB_STAT_INT(jnienv, jobj, lock_stat_st_nlockers_fid, statp, st_nlockers);
JAVADB_STAT_INT(jnienv, jobj, lock_stat_st_nlocks_fid, statp, st_nlocks);
JAVADB_STAT_INT(jnienv, jobj, lock_stat_st_maxnlocks_fid, statp, st_maxnlocks);
- JAVADB_STAT_INT(jnienv, jobj, lock_stat_st_nlockers_fid, statp, st_nlockers);
JAVADB_STAT_INT(jnienv, jobj, lock_stat_st_maxnlockers_fid, statp, st_maxnlockers);
JAVADB_STAT_INT(jnienv, jobj, lock_stat_st_nobjects_fid, statp, st_nobjects);
JAVADB_STAT_INT(jnienv, jobj, lock_stat_st_maxnobjects_fid, statp, st_maxnobjects);
@@ -88,8 +89,15 @@ static int __dbj_fill_lock_stat(JNIEnv *jnienv,
JAVADB_STAT_INT(jnienv, jobj, lock_stat_st_nlocktimeouts_fid, statp, st_nlocktimeouts);
JAVADB_STAT_INT(jnienv, jobj, lock_stat_st_txntimeout_fid, statp, st_txntimeout);
JAVADB_STAT_INT(jnienv, jobj, lock_stat_st_ntxntimeouts_fid, statp, st_ntxntimeouts);
+ JAVADB_STAT_INT(jnienv, jobj, lock_stat_st_objs_wait_fid, statp, st_objs_wait);
+ JAVADB_STAT_INT(jnienv, jobj, lock_stat_st_objs_nowait_fid, statp, st_objs_nowait);
+ JAVADB_STAT_INT(jnienv, jobj, lock_stat_st_lockers_wait_fid, statp, st_lockers_wait);
+ JAVADB_STAT_INT(jnienv, jobj, lock_stat_st_lockers_nowait_fid, statp, st_lockers_nowait);
+ JAVADB_STAT_INT(jnienv, jobj, lock_stat_st_locks_wait_fid, statp, st_locks_wait);
+ JAVADB_STAT_INT(jnienv, jobj, lock_stat_st_locks_nowait_fid, statp, st_locks_nowait);
JAVADB_STAT_INT(jnienv, jobj, lock_stat_st_region_wait_fid, statp, st_region_wait);
JAVADB_STAT_INT(jnienv, jobj, lock_stat_st_region_nowait_fid, statp, st_region_nowait);
+ JAVADB_STAT_INT(jnienv, jobj, lock_stat_st_hash_len_fid, statp, st_hash_len);
JAVADB_STAT_INT(jnienv, jobj, lock_stat_st_regsize_fid, statp, st_regsize);
return (0);
}
@@ -100,11 +108,11 @@ static int __dbj_fill_log_stat(JNIEnv *jnienv,
JAVADB_STAT_INT(jnienv, jobj, log_stat_st_mode_fid, statp, st_mode);
JAVADB_STAT_INT(jnienv, jobj, log_stat_st_lg_bsize_fid, statp, st_lg_bsize);
JAVADB_STAT_INT(jnienv, jobj, log_stat_st_lg_size_fid, statp, st_lg_size);
+ JAVADB_STAT_INT(jnienv, jobj, log_stat_st_wc_bytes_fid, statp, st_wc_bytes);
+ JAVADB_STAT_INT(jnienv, jobj, log_stat_st_wc_mbytes_fid, statp, st_wc_mbytes);
JAVADB_STAT_INT(jnienv, jobj, log_stat_st_record_fid, statp, st_record);
JAVADB_STAT_INT(jnienv, jobj, log_stat_st_w_bytes_fid, statp, st_w_bytes);
JAVADB_STAT_INT(jnienv, jobj, log_stat_st_w_mbytes_fid, statp, st_w_mbytes);
- JAVADB_STAT_INT(jnienv, jobj, log_stat_st_wc_bytes_fid, statp, st_wc_bytes);
- JAVADB_STAT_INT(jnienv, jobj, log_stat_st_wc_mbytes_fid, statp, st_wc_mbytes);
JAVADB_STAT_INT(jnienv, jobj, log_stat_st_wcount_fid, statp, st_wcount);
JAVADB_STAT_INT(jnienv, jobj, log_stat_st_wcount_fill_fid, statp, st_wcount_fill);
JAVADB_STAT_INT(jnienv, jobj, log_stat_st_rcount_fid, statp, st_rcount);
@@ -115,9 +123,9 @@ static int __dbj_fill_log_stat(JNIEnv *jnienv,
JAVADB_STAT_INT(jnienv, jobj, log_stat_st_cur_offset_fid, statp, st_cur_offset);
JAVADB_STAT_INT(jnienv, jobj, log_stat_st_disk_file_fid, statp, st_disk_file);
JAVADB_STAT_INT(jnienv, jobj, log_stat_st_disk_offset_fid, statp, st_disk_offset);
- JAVADB_STAT_INT(jnienv, jobj, log_stat_st_regsize_fid, statp, st_regsize);
JAVADB_STAT_INT(jnienv, jobj, log_stat_st_maxcommitperflush_fid, statp, st_maxcommitperflush);
JAVADB_STAT_INT(jnienv, jobj, log_stat_st_mincommitperflush_fid, statp, st_mincommitperflush);
+ JAVADB_STAT_INT(jnienv, jobj, log_stat_st_regsize_fid, statp, st_regsize);
return (0);
}
static int __dbj_fill_mpool_fstat(JNIEnv *jnienv,
@@ -137,11 +145,12 @@ static int __dbj_fill_mpool_stat(JNIEnv *jnienv,
JAVADB_STAT_INT(jnienv, jobj, mpool_stat_st_gbytes_fid, statp, st_gbytes);
JAVADB_STAT_INT(jnienv, jobj, mpool_stat_st_bytes_fid, statp, st_bytes);
JAVADB_STAT_INT(jnienv, jobj, mpool_stat_st_ncache_fid, statp, st_ncache);
- JAVADB_STAT_INT(jnienv, jobj, mpool_stat_st_regsize_fid, statp, st_regsize);
+ JAVADB_STAT_INT(jnienv, jobj, mpool_stat_st_max_ncache_fid, statp, st_max_ncache);
JAVADB_STAT_INT(jnienv, jobj, mpool_stat_st_mmapsize_fid, statp, st_mmapsize);
JAVADB_STAT_INT(jnienv, jobj, mpool_stat_st_maxopenfd_fid, statp, st_maxopenfd);
JAVADB_STAT_INT(jnienv, jobj, mpool_stat_st_maxwrite_fid, statp, st_maxwrite);
JAVADB_STAT_INT(jnienv, jobj, mpool_stat_st_maxwrite_sleep_fid, statp, st_maxwrite_sleep);
+ JAVADB_STAT_INT(jnienv, jobj, mpool_stat_st_pages_fid, statp, st_pages);
JAVADB_STAT_INT(jnienv, jobj, mpool_stat_st_map_fid, statp, st_map);
JAVADB_STAT_INT(jnienv, jobj, mpool_stat_st_cache_hit_fid, statp, st_cache_hit);
JAVADB_STAT_INT(jnienv, jobj, mpool_stat_st_cache_miss_fid, statp, st_cache_miss);
@@ -151,7 +160,6 @@ static int __dbj_fill_mpool_stat(JNIEnv *jnienv,
JAVADB_STAT_INT(jnienv, jobj, mpool_stat_st_ro_evict_fid, statp, st_ro_evict);
JAVADB_STAT_INT(jnienv, jobj, mpool_stat_st_rw_evict_fid, statp, st_rw_evict);
JAVADB_STAT_INT(jnienv, jobj, mpool_stat_st_page_trickle_fid, statp, st_page_trickle);
- JAVADB_STAT_INT(jnienv, jobj, mpool_stat_st_pages_fid, statp, st_pages);
JAVADB_STAT_INT(jnienv, jobj, mpool_stat_st_page_clean_fid, statp, st_page_clean);
JAVADB_STAT_INT(jnienv, jobj, mpool_stat_st_page_dirty_fid, statp, st_page_dirty);
JAVADB_STAT_INT(jnienv, jobj, mpool_stat_st_hash_buckets_fid, statp, st_hash_buckets);
@@ -173,6 +181,7 @@ static int __dbj_fill_mpool_stat(JNIEnv *jnienv,
JAVADB_STAT_INT(jnienv, jobj, mpool_stat_st_alloc_pages_fid, statp, st_alloc_pages);
JAVADB_STAT_INT(jnienv, jobj, mpool_stat_st_alloc_max_pages_fid, statp, st_alloc_max_pages);
JAVADB_STAT_INT(jnienv, jobj, mpool_stat_st_io_wait_fid, statp, st_io_wait);
+ JAVADB_STAT_INT(jnienv, jobj, mpool_stat_st_regsize_fid, statp, st_regsize);
return (0);
}
static int __dbj_fill_mutex_stat(JNIEnv *jnienv,
@@ -207,6 +216,8 @@ static int __dbj_fill_qam_stat(JNIEnv *jnienv,
}
static int __dbj_fill_rep_stat(JNIEnv *jnienv,
jobject jobj, struct __db_rep_stat *statp) {
+ JAVADB_STAT_INT(jnienv, jobj, rep_stat_st_log_queued_fid, statp, st_log_queued);
+ JAVADB_STAT_INT(jnienv, jobj, rep_stat_st_startup_complete_fid, statp, st_startup_complete);
JAVADB_STAT_INT(jnienv, jobj, rep_stat_st_status_fid, statp, st_status);
JAVADB_STAT_LSN(jnienv, jobj, rep_stat_st_next_lsn_fid, statp, st_next_lsn);
JAVADB_STAT_LSN(jnienv, jobj, rep_stat_st_waiting_lsn_fid, statp, st_waiting_lsn);
@@ -225,7 +236,6 @@ static int __dbj_fill_rep_stat(JNIEnv *jnienv,
JAVADB_STAT_INT(jnienv, jobj, rep_stat_st_gen_fid, statp, st_gen);
JAVADB_STAT_INT(jnienv, jobj, rep_stat_st_egen_fid, statp, st_egen);
JAVADB_STAT_INT(jnienv, jobj, rep_stat_st_log_duplicated_fid, statp, st_log_duplicated);
- JAVADB_STAT_INT(jnienv, jobj, rep_stat_st_log_queued_fid, statp, st_log_queued);
JAVADB_STAT_INT(jnienv, jobj, rep_stat_st_log_queued_max_fid, statp, st_log_queued_max);
JAVADB_STAT_INT(jnienv, jobj, rep_stat_st_log_queued_total_fid, statp, st_log_queued_total);
JAVADB_STAT_INT(jnienv, jobj, rep_stat_st_log_records_fid, statp, st_log_records);
@@ -244,8 +254,8 @@ static int __dbj_fill_rep_stat(JNIEnv *jnienv,
JAVADB_STAT_INT(jnienv, jobj, rep_stat_st_pg_duplicated_fid, statp, st_pg_duplicated);
JAVADB_STAT_INT(jnienv, jobj, rep_stat_st_pg_records_fid, statp, st_pg_records);
JAVADB_STAT_INT(jnienv, jobj, rep_stat_st_pg_requested_fid, statp, st_pg_requested);
- JAVADB_STAT_INT(jnienv, jobj, rep_stat_st_startup_complete_fid, statp, st_startup_complete);
JAVADB_STAT_INT(jnienv, jobj, rep_stat_st_txns_applied_fid, statp, st_txns_applied);
+ JAVADB_STAT_INT(jnienv, jobj, rep_stat_st_startsync_delayed_fid, statp, st_startsync_delayed);
JAVADB_STAT_INT(jnienv, jobj, rep_stat_st_elections_fid, statp, st_elections);
JAVADB_STAT_INT(jnienv, jobj, rep_stat_st_elections_won_fid, statp, st_elections_won);
JAVADB_STAT_INT(jnienv, jobj, rep_stat_st_election_cur_winner_fid, statp, st_election_cur_winner);
@@ -261,6 +271,15 @@ static int __dbj_fill_rep_stat(JNIEnv *jnienv,
JAVADB_STAT_INT(jnienv, jobj, rep_stat_st_election_usec_fid, statp, st_election_usec);
return (0);
}
+static int __dbj_fill_repmgr_stat(JNIEnv *jnienv,
+ jobject jobj, struct __db_repmgr_stat *statp) {
+ JAVADB_STAT_INT(jnienv, jobj, repmgr_stat_st_perm_failed_fid, statp, st_perm_failed);
+ JAVADB_STAT_INT(jnienv, jobj, repmgr_stat_st_msgs_queued_fid, statp, st_msgs_queued);
+ JAVADB_STAT_INT(jnienv, jobj, repmgr_stat_st_msgs_dropped_fid, statp, st_msgs_dropped);
+ JAVADB_STAT_INT(jnienv, jobj, repmgr_stat_st_connection_drop_fid, statp, st_connection_drop);
+ JAVADB_STAT_INT(jnienv, jobj, repmgr_stat_st_connect_fail_fid, statp, st_connect_fail);
+ return (0);
+}
static int __dbj_fill_seq_stat(JNIEnv *jnienv,
jobject jobj, struct __db_seq_stat *statp) {
JAVADB_STAT_INT(jnienv, jobj, seq_stat_st_wait_fid, statp, st_wait);
@@ -276,6 +295,7 @@ static int __dbj_fill_seq_stat(JNIEnv *jnienv,
}
static int __dbj_fill_txn_stat(JNIEnv *jnienv,
jobject jobj, struct __db_txn_stat *statp) {
+ JAVADB_STAT_INT(jnienv, jobj, txn_stat_st_nrestores_fid, statp, st_nrestores);
JAVADB_STAT_LSN(jnienv, jobj, txn_stat_st_last_ckp_fid, statp, st_last_ckp);
JAVADB_STAT_LONG(jnienv, jobj, txn_stat_st_time_ckp_fid, statp, st_time_ckp);
JAVADB_STAT_INT(jnienv, jobj, txn_stat_st_last_txnid_fid, statp, st_last_txnid);
@@ -285,7 +305,6 @@ static int __dbj_fill_txn_stat(JNIEnv *jnienv,
JAVADB_STAT_INT(jnienv, jobj, txn_stat_st_ncommits_fid, statp, st_ncommits);
JAVADB_STAT_INT(jnienv, jobj, txn_stat_st_nactive_fid, statp, st_nactive);
JAVADB_STAT_INT(jnienv, jobj, txn_stat_st_nsnapshot_fid, statp, st_nsnapshot);
- JAVADB_STAT_INT(jnienv, jobj, txn_stat_st_nrestores_fid, statp, st_nrestores);
JAVADB_STAT_INT(jnienv, jobj, txn_stat_st_maxnactive_fid, statp, st_maxnactive);
JAVADB_STAT_INT(jnienv, jobj, txn_stat_st_maxnsnapshot_fid, statp, st_maxnsnapshot);
JAVADB_STAT_ACTIVE(jnienv, jobj, txn_stat_st_txnarray_fid, statp, st_txnarray);
diff --git a/db/libdb_java/java_typemaps.i b/db/libdb_java/java_typemaps.i
index 89a572886..2dd41f7c2 100644
--- a/db/libdb_java/java_typemaps.i
+++ b/db/libdb_java/java_typemaps.i
@@ -722,16 +722,6 @@ out0: return;
}
%}
-JAVA_TYPEMAP(int *envid, DbEnv.RepProcessMessage, jobject)
-%typemap(in) int *envid (int id) %{
- id = (*jenv)->GetIntField(jenv, $input, rep_processmsg_envid_fid);
- $1 = &id;
-%}
-
-%typemap(argout) int *envid %{
- (*jenv)->SetIntField(jenv, $input, rep_processmsg_envid_fid, *$1);
-%}
-
JAVA_TYPEMAP(struct __db_repmgr_sites,
com.sleepycat.db.ReplicationHostAddress[], jobjectArray)
%typemap(out) struct __db_repmgr_sites
diff --git a/db/libdb_java/java_util.i b/db/libdb_java/java_util.i
index 2a9c27c45..0313b853a 100644
--- a/db/libdb_java/java_util.i
+++ b/db/libdb_java/java_util.i
@@ -2,6 +2,11 @@
static {
/* An alternate library name can be specified via a property. */
String libname;
+ int v_major, v_minor, v_patch;
+
+ v_major = DbConstants.DB_VERSION_MAJOR;
+ v_minor = DbConstants.DB_VERSION_MINOR;
+ v_patch = DbConstants.DB_VERSION_PATCH;
if ((libname =
System.getProperty("sleepycat.db.libfile")) != null)
@@ -16,9 +21,7 @@
* On Windows, library name is something like
* "libdb_java42.dll" or "libdb_java42d.dll".
*/
- libname = "libdb_java" +
- DbConstants.DB_VERSION_MAJOR +
- DbConstants.DB_VERSION_MINOR;
+ libname = "libdb_java" + v_major + v_minor;
try {
System.loadLibrary(libname);
@@ -36,18 +39,22 @@
* "libdb_java-3.0.so".
*/
System.loadLibrary("db_java-" +
- DbConstants.DB_VERSION_MAJOR + "." +
- DbConstants.DB_VERSION_MINOR);
+ v_major + "." + v_minor);
}
}
initialize();
- if (DbEnv_get_version_major() != DbConstants.DB_VERSION_MAJOR ||
- DbEnv_get_version_minor() != DbConstants.DB_VERSION_MINOR ||
- DbEnv_get_version_patch() != DbConstants.DB_VERSION_PATCH)
+ if (DbEnv_get_version_major() != v_major ||
+ DbEnv_get_version_minor() != v_minor ||
+ DbEnv_get_version_patch() != v_patch)
throw new RuntimeException(
- "Berkeley DB library version doesn't match Java classes");
+ "Berkeley DB library version " +
+ DbEnv_get_version_major() + "." +
+ DbEnv_get_version_minor() + "." +
+ DbEnv_get_version_patch() +
+ " doesn't match Java class library version " +
+ v_major + "." + v_minor + "." + v_patch);
}
static native final void initialize();
@@ -75,13 +82,14 @@ static jclass keyrange_class;
static jclass bt_stat_class, compact_class, h_stat_class, lock_stat_class;
static jclass log_stat_class, mpool_stat_class, mpool_fstat_class;
static jclass mutex_stat_class, qam_stat_class, rep_stat_class;
-static jclass rephost_class, seq_stat_class, txn_stat_class;
+static jclass repmgr_stat_class, rephost_class, seq_stat_class, txn_stat_class;
static jclass txn_active_class;
-static jclass lock_class, lockreq_class, rep_processmsg_class;
+static jclass lock_class, lockreq_class;
static jclass dbex_class, deadex_class, lockex_class, memex_class;
static jclass repdupmasterex_class, rephandledeadex_class;
-static jclass repholdelectionex_class, repjoinfailex_class, replockoutex_class;
-static jclass repunavailex_class;
+static jclass repholdelectionex_class, repjoinfailex_class;
+static jclass repleaseexpiredex_class, repleasetimeoutex_class;
+static jclass replockoutex_class, repunavailex_class;
static jclass runrecex_class, versionex_class;
static jclass filenotfoundex_class, illegalargex_class, outofmemerr_class;
static jclass bytearray_class, string_class, outputstream_class;
@@ -94,7 +102,6 @@ static jfieldID kr_less_fid, kr_equal_fid, kr_greater_fid;
static jfieldID lock_cptr_fid;
static jfieldID lockreq_op_fid, lockreq_modeflag_fid, lockreq_timeout_fid;
static jfieldID lockreq_obj_fid, lockreq_lock_fid;
-static jfieldID rep_processmsg_envid_fid;
static jfieldID rephost_port_fid, rephost_host_fid, rephost_eid_fid;
static jfieldID rephost_status_fid;
@@ -104,6 +111,7 @@ static jfieldID bt_stat_bt_version_fid;
static jfieldID bt_stat_bt_metaflags_fid;
static jfieldID bt_stat_bt_nkeys_fid;
static jfieldID bt_stat_bt_ndata_fid;
+static jfieldID bt_stat_bt_pagecnt_fid;
static jfieldID bt_stat_bt_pagesize_fid;
static jfieldID bt_stat_bt_minkey_fid;
static jfieldID bt_stat_bt_re_len_fid;
@@ -133,6 +141,7 @@ static jfieldID h_stat_hash_version_fid;
static jfieldID h_stat_hash_metaflags_fid;
static jfieldID h_stat_hash_nkeys_fid;
static jfieldID h_stat_hash_ndata_fid;
+static jfieldID h_stat_hash_pagecnt_fid;
static jfieldID h_stat_hash_pagesize_fid;
static jfieldID h_stat_hash_ffactor_fid;
static jfieldID h_stat_hash_buckets_fid;
@@ -150,9 +159,9 @@ static jfieldID lock_stat_st_maxlocks_fid;
static jfieldID lock_stat_st_maxlockers_fid;
static jfieldID lock_stat_st_maxobjects_fid;
static jfieldID lock_stat_st_nmodes_fid;
+static jfieldID lock_stat_st_nlockers_fid;
static jfieldID lock_stat_st_nlocks_fid;
static jfieldID lock_stat_st_maxnlocks_fid;
-static jfieldID lock_stat_st_nlockers_fid;
static jfieldID lock_stat_st_maxnlockers_fid;
static jfieldID lock_stat_st_nobjects_fid;
static jfieldID lock_stat_st_maxnobjects_fid;
@@ -167,19 +176,26 @@ static jfieldID lock_stat_st_locktimeout_fid;
static jfieldID lock_stat_st_nlocktimeouts_fid;
static jfieldID lock_stat_st_txntimeout_fid;
static jfieldID lock_stat_st_ntxntimeouts_fid;
+static jfieldID lock_stat_st_objs_wait_fid;
+static jfieldID lock_stat_st_objs_nowait_fid;
+static jfieldID lock_stat_st_lockers_wait_fid;
+static jfieldID lock_stat_st_lockers_nowait_fid;
+static jfieldID lock_stat_st_locks_wait_fid;
+static jfieldID lock_stat_st_locks_nowait_fid;
static jfieldID lock_stat_st_region_wait_fid;
static jfieldID lock_stat_st_region_nowait_fid;
+static jfieldID lock_stat_st_hash_len_fid;
static jfieldID lock_stat_st_regsize_fid;
static jfieldID log_stat_st_magic_fid;
static jfieldID log_stat_st_version_fid;
static jfieldID log_stat_st_mode_fid;
static jfieldID log_stat_st_lg_bsize_fid;
static jfieldID log_stat_st_lg_size_fid;
+static jfieldID log_stat_st_wc_bytes_fid;
+static jfieldID log_stat_st_wc_mbytes_fid;
static jfieldID log_stat_st_record_fid;
static jfieldID log_stat_st_w_bytes_fid;
static jfieldID log_stat_st_w_mbytes_fid;
-static jfieldID log_stat_st_wc_bytes_fid;
-static jfieldID log_stat_st_wc_mbytes_fid;
static jfieldID log_stat_st_wcount_fid;
static jfieldID log_stat_st_wcount_fill_fid;
static jfieldID log_stat_st_rcount_fid;
@@ -190,9 +206,9 @@ static jfieldID log_stat_st_cur_file_fid;
static jfieldID log_stat_st_cur_offset_fid;
static jfieldID log_stat_st_disk_file_fid;
static jfieldID log_stat_st_disk_offset_fid;
-static jfieldID log_stat_st_regsize_fid;
static jfieldID log_stat_st_maxcommitperflush_fid;
static jfieldID log_stat_st_mincommitperflush_fid;
+static jfieldID log_stat_st_regsize_fid;
static jfieldID mpool_fstat_file_name_fid;
static jfieldID mpool_fstat_st_pagesize_fid;
static jfieldID mpool_fstat_st_map_fid;
@@ -204,11 +220,12 @@ static jfieldID mpool_fstat_st_page_out_fid;
static jfieldID mpool_stat_st_gbytes_fid;
static jfieldID mpool_stat_st_bytes_fid;
static jfieldID mpool_stat_st_ncache_fid;
-static jfieldID mpool_stat_st_regsize_fid;
+static jfieldID mpool_stat_st_max_ncache_fid;
static jfieldID mpool_stat_st_mmapsize_fid;
static jfieldID mpool_stat_st_maxopenfd_fid;
static jfieldID mpool_stat_st_maxwrite_fid;
static jfieldID mpool_stat_st_maxwrite_sleep_fid;
+static jfieldID mpool_stat_st_pages_fid;
static jfieldID mpool_stat_st_map_fid;
static jfieldID mpool_stat_st_cache_hit_fid;
static jfieldID mpool_stat_st_cache_miss_fid;
@@ -218,7 +235,6 @@ static jfieldID mpool_stat_st_page_out_fid;
static jfieldID mpool_stat_st_ro_evict_fid;
static jfieldID mpool_stat_st_rw_evict_fid;
static jfieldID mpool_stat_st_page_trickle_fid;
-static jfieldID mpool_stat_st_pages_fid;
static jfieldID mpool_stat_st_page_clean_fid;
static jfieldID mpool_stat_st_page_dirty_fid;
static jfieldID mpool_stat_st_hash_buckets_fid;
@@ -240,6 +256,7 @@ static jfieldID mpool_stat_st_alloc_max_buckets_fid;
static jfieldID mpool_stat_st_alloc_pages_fid;
static jfieldID mpool_stat_st_alloc_max_pages_fid;
static jfieldID mpool_stat_st_io_wait_fid;
+static jfieldID mpool_stat_st_regsize_fid;
static jfieldID mutex_stat_st_mutex_align_fid;
static jfieldID mutex_stat_st_mutex_tas_spins_fid;
static jfieldID mutex_stat_st_mutex_cnt_fid;
@@ -262,6 +279,8 @@ static jfieldID qam_stat_qs_re_pad_fid;
static jfieldID qam_stat_qs_pgfree_fid;
static jfieldID qam_stat_qs_first_recno_fid;
static jfieldID qam_stat_qs_cur_recno_fid;
+static jfieldID rep_stat_st_log_queued_fid;
+static jfieldID rep_stat_st_startup_complete_fid;
static jfieldID rep_stat_st_status_fid;
static jfieldID rep_stat_st_next_lsn_fid;
static jfieldID rep_stat_st_waiting_lsn_fid;
@@ -280,7 +299,6 @@ static jfieldID rep_stat_st_client_svc_miss_fid;
static jfieldID rep_stat_st_gen_fid;
static jfieldID rep_stat_st_egen_fid;
static jfieldID rep_stat_st_log_duplicated_fid;
-static jfieldID rep_stat_st_log_queued_fid;
static jfieldID rep_stat_st_log_queued_max_fid;
static jfieldID rep_stat_st_log_queued_total_fid;
static jfieldID rep_stat_st_log_records_fid;
@@ -299,8 +317,8 @@ static jfieldID rep_stat_st_outdated_fid;
static jfieldID rep_stat_st_pg_duplicated_fid;
static jfieldID rep_stat_st_pg_records_fid;
static jfieldID rep_stat_st_pg_requested_fid;
-static jfieldID rep_stat_st_startup_complete_fid;
static jfieldID rep_stat_st_txns_applied_fid;
+static jfieldID rep_stat_st_startsync_delayed_fid;
static jfieldID rep_stat_st_elections_fid;
static jfieldID rep_stat_st_elections_won_fid;
static jfieldID rep_stat_st_election_cur_winner_fid;
@@ -314,6 +332,11 @@ static jfieldID rep_stat_st_election_tiebreaker_fid;
static jfieldID rep_stat_st_election_votes_fid;
static jfieldID rep_stat_st_election_sec_fid;
static jfieldID rep_stat_st_election_usec_fid;
+static jfieldID repmgr_stat_st_perm_failed_fid;
+static jfieldID repmgr_stat_st_msgs_queued_fid;
+static jfieldID repmgr_stat_st_msgs_dropped_fid;
+static jfieldID repmgr_stat_st_connection_drop_fid;
+static jfieldID repmgr_stat_st_connect_fail_fid;
static jfieldID seq_stat_st_wait_fid;
static jfieldID seq_stat_st_nowait_fid;
static jfieldID seq_stat_st_current_fid;
@@ -323,6 +346,7 @@ static jfieldID seq_stat_st_min_fid;
static jfieldID seq_stat_st_max_fid;
static jfieldID seq_stat_st_cache_size_fid;
static jfieldID seq_stat_st_flags_fid;
+static jfieldID txn_stat_st_nrestores_fid;
static jfieldID txn_stat_st_last_ckp_fid;
static jfieldID txn_stat_st_time_ckp_fid;
static jfieldID txn_stat_st_last_txnid_fid;
@@ -332,7 +356,6 @@ static jfieldID txn_stat_st_nbegins_fid;
static jfieldID txn_stat_st_ncommits_fid;
static jfieldID txn_stat_st_nactive_fid;
static jfieldID txn_stat_st_nsnapshot_fid;
-static jfieldID txn_stat_st_nrestores_fid;
static jfieldID txn_stat_st_maxnactive_fid;
static jfieldID txn_stat_st_maxnsnapshot_fid;
static jfieldID txn_stat_st_txnarray_fid;
@@ -353,18 +376,19 @@ static jfieldID txn_active_name_fid;
static jmethodID dbenv_construct, dbt_construct, dblsn_construct;
static jmethodID dbpreplist_construct, dbtxn_construct;
-static jmethodID bt_stat_construct, h_stat_construct;
+static jmethodID bt_stat_construct, get_err_msg_method, h_stat_construct;
static jmethodID lock_stat_construct, log_stat_construct;
static jmethodID mpool_stat_construct, mpool_fstat_construct;
static jmethodID mutex_stat_construct, qam_stat_construct;
-static jmethodID rep_stat_construct, seq_stat_construct;
+static jmethodID rep_stat_construct, repmgr_stat_construct, seq_stat_construct;
static jmethodID txn_stat_construct, txn_active_construct;
static jmethodID dbex_construct, deadex_construct, lockex_construct;
static jmethodID memex_construct, memex_update_method;
static jmethodID repdupmasterex_construct, rephandledeadex_construct;
static jmethodID repholdelectionex_construct, repjoinfailex_construct;
-static jmethodID rephost_construct;
-static jmethodID replockoutex_construct, repunavailex_construct;
+static jmethodID rephost_construct, repleaseexpiredex_construct;
+static jmethodID repleasetimeoutex_construct, replockoutex_construct;
+static jmethodID repunavailex_construct;
static jmethodID runrecex_construct, versionex_construct;
static jmethodID filenotfoundex_construct, illegalargex_construct;
static jmethodID outofmemerr_construct;
@@ -372,11 +396,17 @@ static jmethodID lock_construct;
static jmethodID app_dispatch_method, errcall_method, env_feedback_method;
static jmethodID msgcall_method, paniccall_method, rep_transport_method;
-static jmethodID event_notify_method;
+static jmethodID panic_event_notify_method, rep_client_event_notify_method;
+static jmethodID rep_elected_event_notify_method;
+static jmethodID rep_master_event_notify_method;
+static jmethodID rep_new_master_event_notify_method;
+static jmethodID rep_perm_failed_event_notify_method;
+static jmethodID rep_startup_done_event_notify_method;
+static jmethodID write_failed_event_notify_method;
static jmethodID append_recno_method, bt_compare_method, bt_prefix_method;
-static jmethodID db_feedback_method, dup_compare_method, h_hash_method;
-static jmethodID seckey_create_method;
+static jmethodID db_feedback_method, dup_compare_method, h_compare_method;
+static jmethodID h_hash_method, seckey_create_method;
static jmethodID outputstream_write_method;
@@ -402,6 +432,7 @@ const struct {
{ &mutex_stat_class, DB_PKG "MutexStats" },
{ &qam_stat_class, DB_PKG "QueueStats" },
{ &rep_stat_class, DB_PKG "ReplicationStats" },
+ { &repmgr_stat_class, DB_PKG "ReplicationManagerStats" },
{ &seq_stat_class, DB_PKG "SequenceStats" },
{ &txn_stat_class, DB_PKG "TransactionStats" },
{ &txn_active_class, DB_PKG "TransactionStats$Active" },
@@ -409,8 +440,6 @@ const struct {
{ &keyrange_class, DB_PKG "KeyRange" },
{ &lock_class, DB_PKG "internal/DbLock" },
{ &lockreq_class, DB_PKG "LockRequest" },
- { &rep_processmsg_class, DB_PKG "internal/DbEnv$RepProcessMessage" },
- { &rep_processmsg_class, DB_PKG "internal/DbEnv$RepProcessMessage" },
{ &dbex_class, DB_PKG "DatabaseException" },
{ &deadex_class, DB_PKG "DeadlockException" },
@@ -421,6 +450,8 @@ const struct {
{ &repholdelectionex_class, DB_PKG "ReplicationHoldElectionException" },
{ &rephost_class, DB_PKG "ReplicationHostAddress" },
{ &repjoinfailex_class, DB_PKG "ReplicationJoinFailureException" },
+ { &repleaseexpiredex_class, DB_PKG "ReplicationLeaseExpiredException" },
+ { &repleasetimeoutex_class, DB_PKG "ReplicationLeaseTimeoutException" },
{ &replockoutex_class, DB_PKG "ReplicationLockoutException" },
{ &repunavailex_class, DB_PKG "ReplicationSiteUnavailableException" },
{ &runrecex_class, DB_PKG "RunRecoveryException" },
@@ -474,6 +505,7 @@ const struct {
{ &bt_stat_bt_metaflags_fid, &bt_stat_class, "bt_metaflags", "I" },
{ &bt_stat_bt_nkeys_fid, &bt_stat_class, "bt_nkeys", "I" },
{ &bt_stat_bt_ndata_fid, &bt_stat_class, "bt_ndata", "I" },
+ { &bt_stat_bt_pagecnt_fid, &bt_stat_class, "bt_pagecnt", "I" },
{ &bt_stat_bt_pagesize_fid, &bt_stat_class, "bt_pagesize", "I" },
{ &bt_stat_bt_minkey_fid, &bt_stat_class, "bt_minkey", "I" },
{ &bt_stat_bt_re_len_fid, &bt_stat_class, "bt_re_len", "I" },
@@ -503,6 +535,7 @@ const struct {
{ &h_stat_hash_metaflags_fid, &h_stat_class, "hash_metaflags", "I" },
{ &h_stat_hash_nkeys_fid, &h_stat_class, "hash_nkeys", "I" },
{ &h_stat_hash_ndata_fid, &h_stat_class, "hash_ndata", "I" },
+ { &h_stat_hash_pagecnt_fid, &h_stat_class, "hash_pagecnt", "I" },
{ &h_stat_hash_pagesize_fid, &h_stat_class, "hash_pagesize", "I" },
{ &h_stat_hash_ffactor_fid, &h_stat_class, "hash_ffactor", "I" },
{ &h_stat_hash_buckets_fid, &h_stat_class, "hash_buckets", "I" },
@@ -520,9 +553,9 @@ const struct {
{ &lock_stat_st_maxlockers_fid, &lock_stat_class, "st_maxlockers", "I" },
{ &lock_stat_st_maxobjects_fid, &lock_stat_class, "st_maxobjects", "I" },
{ &lock_stat_st_nmodes_fid, &lock_stat_class, "st_nmodes", "I" },
+ { &lock_stat_st_nlockers_fid, &lock_stat_class, "st_nlockers", "I" },
{ &lock_stat_st_nlocks_fid, &lock_stat_class, "st_nlocks", "I" },
{ &lock_stat_st_maxnlocks_fid, &lock_stat_class, "st_maxnlocks", "I" },
- { &lock_stat_st_nlockers_fid, &lock_stat_class, "st_nlockers", "I" },
{ &lock_stat_st_maxnlockers_fid, &lock_stat_class, "st_maxnlockers", "I" },
{ &lock_stat_st_nobjects_fid, &lock_stat_class, "st_nobjects", "I" },
{ &lock_stat_st_maxnobjects_fid, &lock_stat_class, "st_maxnobjects", "I" },
@@ -537,19 +570,26 @@ const struct {
{ &lock_stat_st_nlocktimeouts_fid, &lock_stat_class, "st_nlocktimeouts", "I" },
{ &lock_stat_st_txntimeout_fid, &lock_stat_class, "st_txntimeout", "I" },
{ &lock_stat_st_ntxntimeouts_fid, &lock_stat_class, "st_ntxntimeouts", "I" },
+ { &lock_stat_st_objs_wait_fid, &lock_stat_class, "st_objs_wait", "I" },
+ { &lock_stat_st_objs_nowait_fid, &lock_stat_class, "st_objs_nowait", "I" },
+ { &lock_stat_st_lockers_wait_fid, &lock_stat_class, "st_lockers_wait", "I" },
+ { &lock_stat_st_lockers_nowait_fid, &lock_stat_class, "st_lockers_nowait", "I" },
+ { &lock_stat_st_locks_wait_fid, &lock_stat_class, "st_locks_wait", "I" },
+ { &lock_stat_st_locks_nowait_fid, &lock_stat_class, "st_locks_nowait", "I" },
{ &lock_stat_st_region_wait_fid, &lock_stat_class, "st_region_wait", "I" },
{ &lock_stat_st_region_nowait_fid, &lock_stat_class, "st_region_nowait", "I" },
+ { &lock_stat_st_hash_len_fid, &lock_stat_class, "st_hash_len", "I" },
{ &lock_stat_st_regsize_fid, &lock_stat_class, "st_regsize", "I" },
{ &log_stat_st_magic_fid, &log_stat_class, "st_magic", "I" },
{ &log_stat_st_version_fid, &log_stat_class, "st_version", "I" },
{ &log_stat_st_mode_fid, &log_stat_class, "st_mode", "I" },
{ &log_stat_st_lg_bsize_fid, &log_stat_class, "st_lg_bsize", "I" },
{ &log_stat_st_lg_size_fid, &log_stat_class, "st_lg_size", "I" },
+ { &log_stat_st_wc_bytes_fid, &log_stat_class, "st_wc_bytes", "I" },
+ { &log_stat_st_wc_mbytes_fid, &log_stat_class, "st_wc_mbytes", "I" },
{ &log_stat_st_record_fid, &log_stat_class, "st_record", "I" },
{ &log_stat_st_w_bytes_fid, &log_stat_class, "st_w_bytes", "I" },
{ &log_stat_st_w_mbytes_fid, &log_stat_class, "st_w_mbytes", "I" },
- { &log_stat_st_wc_bytes_fid, &log_stat_class, "st_wc_bytes", "I" },
- { &log_stat_st_wc_mbytes_fid, &log_stat_class, "st_wc_mbytes", "I" },
{ &log_stat_st_wcount_fid, &log_stat_class, "st_wcount", "I" },
{ &log_stat_st_wcount_fill_fid, &log_stat_class, "st_wcount_fill", "I" },
{ &log_stat_st_rcount_fid, &log_stat_class, "st_rcount", "I" },
@@ -560,9 +600,9 @@ const struct {
{ &log_stat_st_cur_offset_fid, &log_stat_class, "st_cur_offset", "I" },
{ &log_stat_st_disk_file_fid, &log_stat_class, "st_disk_file", "I" },
{ &log_stat_st_disk_offset_fid, &log_stat_class, "st_disk_offset", "I" },
- { &log_stat_st_regsize_fid, &log_stat_class, "st_regsize", "I" },
{ &log_stat_st_maxcommitperflush_fid, &log_stat_class, "st_maxcommitperflush", "I" },
{ &log_stat_st_mincommitperflush_fid, &log_stat_class, "st_mincommitperflush", "I" },
+ { &log_stat_st_regsize_fid, &log_stat_class, "st_regsize", "I" },
{ &mpool_fstat_file_name_fid, &mpool_fstat_class, "file_name", "Ljava/lang/String;" },
{ &mpool_fstat_st_pagesize_fid, &mpool_fstat_class, "st_pagesize", "I" },
{ &mpool_fstat_st_map_fid, &mpool_fstat_class, "st_map", "I" },
@@ -574,11 +614,12 @@ const struct {
{ &mpool_stat_st_gbytes_fid, &mpool_stat_class, "st_gbytes", "I" },
{ &mpool_stat_st_bytes_fid, &mpool_stat_class, "st_bytes", "I" },
{ &mpool_stat_st_ncache_fid, &mpool_stat_class, "st_ncache", "I" },
- { &mpool_stat_st_regsize_fid, &mpool_stat_class, "st_regsize", "I" },
+ { &mpool_stat_st_max_ncache_fid, &mpool_stat_class, "st_max_ncache", "I" },
{ &mpool_stat_st_mmapsize_fid, &mpool_stat_class, "st_mmapsize", "I" },
{ &mpool_stat_st_maxopenfd_fid, &mpool_stat_class, "st_maxopenfd", "I" },
{ &mpool_stat_st_maxwrite_fid, &mpool_stat_class, "st_maxwrite", "I" },
{ &mpool_stat_st_maxwrite_sleep_fid, &mpool_stat_class, "st_maxwrite_sleep", "I" },
+ { &mpool_stat_st_pages_fid, &mpool_stat_class, "st_pages", "I" },
{ &mpool_stat_st_map_fid, &mpool_stat_class, "st_map", "I" },
{ &mpool_stat_st_cache_hit_fid, &mpool_stat_class, "st_cache_hit", "I" },
{ &mpool_stat_st_cache_miss_fid, &mpool_stat_class, "st_cache_miss", "I" },
@@ -588,7 +629,6 @@ const struct {
{ &mpool_stat_st_ro_evict_fid, &mpool_stat_class, "st_ro_evict", "I" },
{ &mpool_stat_st_rw_evict_fid, &mpool_stat_class, "st_rw_evict", "I" },
{ &mpool_stat_st_page_trickle_fid, &mpool_stat_class, "st_page_trickle", "I" },
- { &mpool_stat_st_pages_fid, &mpool_stat_class, "st_pages", "I" },
{ &mpool_stat_st_page_clean_fid, &mpool_stat_class, "st_page_clean", "I" },
{ &mpool_stat_st_page_dirty_fid, &mpool_stat_class, "st_page_dirty", "I" },
{ &mpool_stat_st_hash_buckets_fid, &mpool_stat_class, "st_hash_buckets", "I" },
@@ -610,6 +650,7 @@ const struct {
{ &mpool_stat_st_alloc_pages_fid, &mpool_stat_class, "st_alloc_pages", "I" },
{ &mpool_stat_st_alloc_max_pages_fid, &mpool_stat_class, "st_alloc_max_pages", "I" },
{ &mpool_stat_st_io_wait_fid, &mpool_stat_class, "st_io_wait", "I" },
+ { &mpool_stat_st_regsize_fid, &mpool_stat_class, "st_regsize", "I" },
{ &mutex_stat_st_mutex_align_fid, &mutex_stat_class, "st_mutex_align", "I" },
{ &mutex_stat_st_mutex_tas_spins_fid, &mutex_stat_class, "st_mutex_tas_spins", "I" },
{ &mutex_stat_st_mutex_cnt_fid, &mutex_stat_class, "st_mutex_cnt", "I" },
@@ -632,6 +673,8 @@ const struct {
{ &qam_stat_qs_pgfree_fid, &qam_stat_class, "qs_pgfree", "I" },
{ &qam_stat_qs_first_recno_fid, &qam_stat_class, "qs_first_recno", "I" },
{ &qam_stat_qs_cur_recno_fid, &qam_stat_class, "qs_cur_recno", "I" },
+ { &rep_stat_st_log_queued_fid, &rep_stat_class, "st_log_queued", "I" },
+ { &rep_stat_st_startup_complete_fid, &rep_stat_class, "st_startup_complete", "I" },
{ &rep_stat_st_status_fid, &rep_stat_class, "st_status", "I" },
{ &rep_stat_st_next_lsn_fid, &rep_stat_class, "st_next_lsn", "L" DB_PKG "LogSequenceNumber;" },
{ &rep_stat_st_waiting_lsn_fid, &rep_stat_class, "st_waiting_lsn", "L" DB_PKG "LogSequenceNumber;" },
@@ -650,7 +693,6 @@ const struct {
{ &rep_stat_st_gen_fid, &rep_stat_class, "st_gen", "I" },
{ &rep_stat_st_egen_fid, &rep_stat_class, "st_egen", "I" },
{ &rep_stat_st_log_duplicated_fid, &rep_stat_class, "st_log_duplicated", "I" },
- { &rep_stat_st_log_queued_fid, &rep_stat_class, "st_log_queued", "I" },
{ &rep_stat_st_log_queued_max_fid, &rep_stat_class, "st_log_queued_max", "I" },
{ &rep_stat_st_log_queued_total_fid, &rep_stat_class, "st_log_queued_total", "I" },
{ &rep_stat_st_log_records_fid, &rep_stat_class, "st_log_records", "I" },
@@ -669,8 +711,8 @@ const struct {
{ &rep_stat_st_pg_duplicated_fid, &rep_stat_class, "st_pg_duplicated", "I" },
{ &rep_stat_st_pg_records_fid, &rep_stat_class, "st_pg_records", "I" },
{ &rep_stat_st_pg_requested_fid, &rep_stat_class, "st_pg_requested", "I" },
- { &rep_stat_st_startup_complete_fid, &rep_stat_class, "st_startup_complete", "I" },
{ &rep_stat_st_txns_applied_fid, &rep_stat_class, "st_txns_applied", "I" },
+ { &rep_stat_st_startsync_delayed_fid, &rep_stat_class, "st_startsync_delayed", "I" },
{ &rep_stat_st_elections_fid, &rep_stat_class, "st_elections", "I" },
{ &rep_stat_st_elections_won_fid, &rep_stat_class, "st_elections_won", "I" },
{ &rep_stat_st_election_cur_winner_fid, &rep_stat_class, "st_election_cur_winner", "I" },
@@ -684,6 +726,11 @@ const struct {
{ &rep_stat_st_election_votes_fid, &rep_stat_class, "st_election_votes", "I" },
{ &rep_stat_st_election_sec_fid, &rep_stat_class, "st_election_sec", "I" },
{ &rep_stat_st_election_usec_fid, &rep_stat_class, "st_election_usec", "I" },
+ { &repmgr_stat_st_perm_failed_fid, &repmgr_stat_class, "st_perm_failed", "I" },
+ { &repmgr_stat_st_msgs_queued_fid, &repmgr_stat_class, "st_msgs_queued", "I" },
+ { &repmgr_stat_st_msgs_dropped_fid, &repmgr_stat_class, "st_msgs_dropped", "I" },
+ { &repmgr_stat_st_connection_drop_fid, &repmgr_stat_class, "st_connection_drop", "I" },
+ { &repmgr_stat_st_connect_fail_fid, &repmgr_stat_class, "st_connect_fail", "I" },
{ &seq_stat_st_wait_fid, &seq_stat_class, "st_wait", "I" },
{ &seq_stat_st_nowait_fid, &seq_stat_class, "st_nowait", "I" },
{ &seq_stat_st_current_fid, &seq_stat_class, "st_current", "J" },
@@ -693,6 +740,7 @@ const struct {
{ &seq_stat_st_max_fid, &seq_stat_class, "st_max", "J" },
{ &seq_stat_st_cache_size_fid, &seq_stat_class, "st_cache_size", "I" },
{ &seq_stat_st_flags_fid, &seq_stat_class, "st_flags", "I" },
+ { &txn_stat_st_nrestores_fid, &txn_stat_class, "st_nrestores", "I" },
{ &txn_stat_st_last_ckp_fid, &txn_stat_class, "st_last_ckp", "L" DB_PKG "LogSequenceNumber;" },
{ &txn_stat_st_time_ckp_fid, &txn_stat_class, "st_time_ckp", "J" },
{ &txn_stat_st_last_txnid_fid, &txn_stat_class, "st_last_txnid", "I" },
@@ -702,7 +750,6 @@ const struct {
{ &txn_stat_st_ncommits_fid, &txn_stat_class, "st_ncommits", "I" },
{ &txn_stat_st_nactive_fid, &txn_stat_class, "st_nactive", "I" },
{ &txn_stat_st_nsnapshot_fid, &txn_stat_class, "st_nsnapshot", "I" },
- { &txn_stat_st_nrestores_fid, &txn_stat_class, "st_nrestores", "I" },
{ &txn_stat_st_maxnactive_fid, &txn_stat_class, "st_maxnactive", "I" },
{ &txn_stat_st_maxnsnapshot_fid, &txn_stat_class, "st_maxnsnapshot", "I" },
{ &txn_stat_st_txnarray_fid, &txn_stat_class, "st_txnarray", "[L" DB_PKG "TransactionStats$Active;" },
@@ -724,8 +771,7 @@ const struct {
{ &rephost_port_fid, &rephost_class, "port", "I" },
{ &rephost_host_fid, &rephost_class, "host", "Ljava/lang/String;" },
{ &rephost_eid_fid, &rephost_class, "eid", "I" },
- { &rephost_status_fid, &rephost_class, "status", "I" },
- { &rep_processmsg_envid_fid, &rep_processmsg_class, "envid", "I" }
+ { &rephost_status_fid, &rephost_class, "status", "I" }
};
const struct {
@@ -742,6 +788,8 @@ const struct {
{ &dbtxn_construct, &dbtxn_class, "<init>", "(JZ)V" },
{ &bt_stat_construct, &bt_stat_class, "<init>", "()V" },
+ { &get_err_msg_method, &dbenv_class, "get_err_msg",
+ "(Ljava/lang/String;)Ljava/lang/String;" },
{ &h_stat_construct, &h_stat_class, "<init>", "()V" },
{ &lock_stat_construct, &lock_stat_class, "<init>", "()V" },
{ &log_stat_construct, &log_stat_class, "<init>", "()V" },
@@ -750,6 +798,7 @@ const struct {
{ &mutex_stat_construct, &mutex_stat_class, "<init>", "()V" },
{ &qam_stat_construct, &qam_stat_class, "<init>", "()V" },
{ &rep_stat_construct, &rep_stat_class, "<init>", "()V" },
+ { &repmgr_stat_construct, &repmgr_stat_class, "<init>", "()V" },
{ &seq_stat_construct, &seq_stat_class, "<init>", "()V" },
{ &txn_stat_construct, &txn_stat_class, "<init>", "()V" },
{ &txn_active_construct, &txn_active_class, "<init>", "()V" },
@@ -775,6 +824,10 @@ const struct {
"(Ljava/lang/String;IL" DB_PKG "internal/DbEnv;)V" },
{ &repjoinfailex_construct, &repjoinfailex_class, "<init>",
"(Ljava/lang/String;IL" DB_PKG "internal/DbEnv;)V" },
+ { &repleaseexpiredex_construct, &repleaseexpiredex_class, "<init>",
+ "(Ljava/lang/String;IL" DB_PKG "internal/DbEnv;)V" },
+ { &repleasetimeoutex_construct, &repleasetimeoutex_class, "<init>",
+ "(Ljava/lang/String;IL" DB_PKG "internal/DbEnv;)V" },
{ &replockoutex_construct, &replockoutex_class, "<init>",
"(Ljava/lang/String;IL" DB_PKG "internal/DbEnv;)V" },
{ &repunavailex_construct, &repunavailex_class, "<init>",
@@ -794,8 +847,22 @@ const struct {
{ &app_dispatch_method, &dbenv_class, "handle_app_dispatch",
"(L" DB_PKG "DatabaseEntry;L" DB_PKG "LogSequenceNumber;I)I" },
- { &event_notify_method, &dbenv_class, "handle_event_notify",
- "(I)I" },
+ { &panic_event_notify_method, &dbenv_class, "handle_panic_event_notify",
+ "()V" },
+ { &rep_client_event_notify_method, &dbenv_class,
+ "handle_rep_client_event_notify", "()V" },
+ { &rep_elected_event_notify_method, &dbenv_class,
+ "handle_rep_elected_event_notify" ,"()V" },
+ { &rep_master_event_notify_method, &dbenv_class,
+ "handle_rep_master_event_notify", "()V" },
+ { &rep_new_master_event_notify_method, &dbenv_class,
+ "handle_rep_new_master_event_notify", "(I)V" },
+ { &rep_perm_failed_event_notify_method, &dbenv_class,
+ "handle_rep_perm_failed_event_notify", "()V" },
+ { &rep_startup_done_event_notify_method, &dbenv_class,
+ "handle_rep_startup_done_event_notify", "()V" },
+ { &write_failed_event_notify_method, &dbenv_class,
+ "handle_write_failed_event_notify", "(I)V" },
{ &env_feedback_method, &dbenv_class, "handle_env_feedback", "(II)V" },
{ &errcall_method, &dbenv_class, "handle_error",
"(Ljava/lang/String;)V" },
@@ -816,10 +883,12 @@ const struct {
{ &db_feedback_method, &db_class, "handle_db_feedback", "(II)V" },
{ &dup_compare_method, &db_class, "handle_dup_compare",
"([B[B)I" },
+ { &h_compare_method, &db_class, "handle_h_compare",
+ "([B[B)I" },
{ &h_hash_method, &db_class, "handle_h_hash", "([BI)I" },
{ &seckey_create_method, &db_class, "handle_seckey_create",
- "(L" DB_PKG "DatabaseEntry;L" DB_PKG "DatabaseEntry;L"
- DB_PKG "DatabaseEntry;)I" },
+ "(L" DB_PKG "DatabaseEntry;L" DB_PKG "DatabaseEntry;)[L"
+ DB_PKG "DatabaseEntry;" },
{ &outputstream_write_method, &outputstream_class, "write", "([BII)V" }
};
diff --git a/db/lock/lock.c b/db/lock/lock.c
index 03cd11831..3644f818b 100644
--- a/db/lock/lock.c
+++ b/db/lock/lock.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: lock.c,v 12.30 2006/08/24 14:46:10 bostic Exp $
+ * $Id: lock.c,v 12.44 2007/05/17 19:33:04 bostic Exp $
*/
#include "db_config.h"
@@ -14,17 +13,21 @@
#include "dbinc/log.h"
static int __lock_freelock __P((DB_LOCKTAB *,
- struct __db_lock *, u_int32_t, u_int32_t));
+ struct __db_lock *, DB_LOCKER *, u_int32_t));
static int __lock_getobj
__P((DB_LOCKTAB *, const DBT *, u_int32_t, int, DB_LOCKOBJ **));
-static int __lock_inherit_locks __P ((DB_LOCKTAB *, u_int32_t, u_int32_t));
-static int __lock_is_parent __P((DB_LOCKTAB *, u_int32_t, DB_LOCKER *));
+static int __lock_get_api __P((DB_ENV *,
+ u_int32_t, u_int32_t, const DBT *, db_lockmode_t, DB_LOCK *));
+static int __lock_inherit_locks __P ((DB_LOCKTAB *, DB_LOCKER *, u_int32_t));
+static int __lock_is_parent __P((DB_LOCKTAB *, roff_t, DB_LOCKER *));
static int __lock_put_internal __P((DB_LOCKTAB *,
struct __db_lock *, u_int32_t, u_int32_t));
static int __lock_put_nolock __P((DB_ENV *, DB_LOCK *, int *, u_int32_t));
static int __lock_remove_waiter __P((DB_LOCKTAB *,
DB_LOCKOBJ *, struct __db_lock *, db_status_t));
-static int __lock_trade __P((DB_ENV *, DB_LOCK *, u_int32_t));
+static int __lock_trade __P((DB_ENV *, DB_LOCK *, DB_LOCKER *));
+static int __lock_vec_api __P((DB_ENV *,
+ u_int32_t, u_int32_t, DB_LOCKREQ *, int, DB_LOCKREQ **));
static const char __db_lock_invalid[] = "%s: Lock is no longer valid";
static const char __db_locker_invalid[] = "Locker is not valid";
@@ -37,9 +40,9 @@ static const char __db_locker_invalid[] = "Locker is not valid";
* PUBLIC: u_int32_t, u_int32_t, DB_LOCKREQ *, int, DB_LOCKREQ **));
*/
int
-__lock_vec_pp(dbenv, locker, flags, list, nlist, elistp)
+__lock_vec_pp(dbenv, lid, flags, list, nlist, elistp)
DB_ENV *dbenv;
- u_int32_t locker, flags;
+ u_int32_t lid, flags;
int nlist;
DB_LOCKREQ *list, **elistp;
{
@@ -57,11 +60,27 @@ __lock_vec_pp(dbenv, locker, flags, list, nlist, elistp)
ENV_ENTER(dbenv, ip);
REPLICATION_WRAP(dbenv,
- (__lock_vec(dbenv, locker, flags, list, nlist, elistp)), ret);
+ (__lock_vec_api(dbenv, lid, flags, list, nlist, elistp)), ret);
ENV_LEAVE(dbenv, ip);
return (ret);
}
+static int
+__lock_vec_api(dbenv, lid, flags, list, nlist, elistp)
+ DB_ENV *dbenv;
+ u_int32_t lid, flags;
+ int nlist;
+ DB_LOCKREQ *list, **elistp;
+{
+ DB_LOCKER *sh_locker;
+ int ret;
+
+ if ((ret =
+ __lock_getlocker(dbenv->lk_handle, lid, 0, &sh_locker)) == 0)
+ ret = __lock_vec(dbenv, sh_locker, flags, list, nlist, elistp);
+ return (ret);
+}
+
/*
* __lock_vec --
* DB_ENV->lock_vec.
@@ -73,23 +92,22 @@ __lock_vec_pp(dbenv, locker, flags, list, nlist, elistp)
* all locks on a given object, and generating debugging information.
*
* PUBLIC: int __lock_vec __P((DB_ENV *,
- * PUBLIC: u_int32_t, u_int32_t, DB_LOCKREQ *, int, DB_LOCKREQ **));
+ * PUBLIC: DB_LOCKER *, u_int32_t, DB_LOCKREQ *, int, DB_LOCKREQ **));
*/
int
-__lock_vec(dbenv, locker, flags, list, nlist, elistp)
+__lock_vec(dbenv, sh_locker, flags, list, nlist, elistp)
DB_ENV *dbenv;
- u_int32_t locker, flags;
+ DB_LOCKER *sh_locker;
+ u_int32_t flags;
int nlist;
DB_LOCKREQ *list, **elistp;
{
struct __db_lock *lp, *next_lock;
- DB_LOCK lock;
- DB_LOCKER *sh_locker;
- DB_LOCKOBJ *sh_obj;
+ DB_LOCK lock; DB_LOCKOBJ *sh_obj;
DB_LOCKREGION *region;
DB_LOCKTAB *lt;
DBT *objlist, *np;
- u_int32_t lndx, ndx;
+ u_int32_t ndx;
int did_abort, i, ret, run_dd, upgrade, writes;
/* Check if locks have been globally turned off. */
@@ -112,11 +130,11 @@ __lock_vec(dbenv, locker, flags, list, nlist, elistp)
break;
}
ret = __lock_get_internal(lt,
- locker, flags, list[i].obj,
+ sh_locker, flags, list[i].obj,
list[i].mode, list[i].timeout, &list[i].lock);
break;
case DB_LOCK_INHERIT:
- ret = __lock_inherit_locks(lt, locker, flags);
+ ret = __lock_inherit_locks(lt, sh_locker, flags);
break;
case DB_LOCK_PUT:
ret = __lock_put_nolock(dbenv,
@@ -134,10 +152,7 @@ __lock_vec(dbenv, locker, flags, list, nlist, elistp)
* done any work), it's perfectly reasonable for there
* to be no locker; this is not an error.
*/
- LOCKER_LOCK(lt, region, locker, ndx);
- if ((ret = __lock_getlocker(lt,
- locker, ndx, 0, &sh_locker)) != 0 ||
- sh_locker == NULL ||
+ if (sh_locker == NULL ||
F_ISSET(sh_locker, DB_LOCKER_DELETED))
/*
* If ret is set, then we'll generate an
@@ -187,7 +202,8 @@ __lock_vec(dbenv, locker, flags, list, nlist, elistp)
locker_links, __db_lock);
sh_obj = (DB_LOCKOBJ *)
((u_int8_t *)lp + lp->obj);
- SHOBJECT_LOCK(lt, region, sh_obj, lndx);
+ ndx = sh_obj->indx;
+ OBJECT_LOCK_NDX(lt, ndx);
/*
* We are not letting lock_put_internal
* unlink the lock, so we'll have to
@@ -197,7 +213,9 @@ __lock_vec(dbenv, locker, flags, list, nlist, elistp)
if (IS_WRITELOCK(lp->mode))
sh_locker->nwrites--;
ret = __lock_put_internal(lt, lp,
- lndx, DB_LOCK_FREE | DB_LOCK_DOALL);
+ sh_obj->indx,
+ DB_LOCK_FREE | DB_LOCK_DOALL);
+ OBJECT_UNLOCK(lt, ndx);
if (ret != 0)
break;
continue;
@@ -230,7 +248,7 @@ __lock_vec(dbenv, locker, flags, list, nlist, elistp)
lock.gen = lp->gen;
F_SET(sh_locker, DB_LOCKER_INABORT);
if ((ret = __lock_get_internal(lt,
- locker, flags | DB_LOCK_UPGRADE,
+ sh_locker, flags | DB_LOCK_UPGRADE,
NULL, DB_LOCK_WRITE, 0, &lock)) !=0)
break;
}
@@ -251,6 +269,7 @@ __lock_vec(dbenv, locker, flags, list, nlist, elistp)
ndx, 0, &sh_obj)) != 0 || sh_obj == NULL) {
if (ret == 0)
ret = EINVAL;
+ OBJECT_UNLOCK(lt, ndx);
break;
}
@@ -280,11 +299,12 @@ __lock_vec(dbenv, locker, flags, list, nlist, elistp)
DB_LOCK_UNLINK |
DB_LOCK_NOPROMOTE | DB_LOCK_DOALL);
}
+ OBJECT_UNLOCK(lt, ndx);
break;
case DB_LOCK_TIMEOUT:
ret = __lock_set_timeout_internal(dbenv,
- locker, 0, DB_SET_TXN_NOW);
+ sh_locker, 0, DB_SET_TXN_NOW);
break;
case DB_LOCK_TRADE:
@@ -302,15 +322,11 @@ __lock_vec(dbenv, locker, flags, list, nlist, elistp)
* so heaven help you if you use this flag under
* any other circumstances.
*/
- ret = __lock_trade(dbenv, &list[i].lock, locker);
+ ret = __lock_trade(dbenv, &list[i].lock, sh_locker);
break;
#if defined(DEBUG) && defined(HAVE_STATISTICS)
case DB_LOCK_DUMP:
- /* Find the locker. */
- LOCKER_LOCK(lt, region, locker, ndx);
- if ((ret = __lock_getlocker(lt,
- locker, ndx, 0, &sh_locker)) != 0 ||
- sh_locker == NULL ||
+ if (sh_locker == NULL ||
F_ISSET(sh_locker, DB_LOCKER_DELETED))
break;
@@ -327,7 +343,7 @@ __lock_vec(dbenv, locker, flags, list, nlist, elistp)
}
if (ret == 0 && region->detect != DB_LOCK_NORUN &&
- (region->need_dd || LOCK_TIME_ISVALID(&region->next_timeout)))
+ (region->need_dd || timespecisset(&region->next_timeout)))
run_dd = 1;
LOCK_SYSTEM_UNLOCK(dbenv);
@@ -369,22 +385,50 @@ __lock_get_pp(dbenv, locker, flags, obj, lock_mode, lock)
ENV_ENTER(dbenv, ip);
REPLICATION_WRAP(dbenv,
- (__lock_get(dbenv, locker, flags, obj, lock_mode, lock)), ret);
+ (__lock_get_api(dbenv, locker, flags, obj, lock_mode, lock)), ret);
ENV_LEAVE(dbenv, ip);
return (ret);
}
+static int
+__lock_get_api(dbenv, locker, flags, obj, lock_mode, lock)
+ DB_ENV *dbenv;
+ u_int32_t locker, flags;
+ const DBT *obj;
+ db_lockmode_t lock_mode;
+ DB_LOCK *lock;
+{
+ DB_LOCKER *sh_locker;
+ DB_LOCKREGION *region;
+ int ret;
+
+ COMPQUIET(region, NULL);
+
+ region = dbenv->lk_handle->reginfo.primary;
+
+ LOCK_SYSTEM_LOCK(dbenv);
+ LOCK_LOCKERS(dbenv, region);
+ ret = __lock_getlocker_int(dbenv->lk_handle, locker, 0, &sh_locker);
+ UNLOCK_LOCKERS(dbenv, region);
+ if (ret == 0)
+ ret = __lock_get_internal(dbenv->lk_handle,
+ sh_locker, flags, obj, lock_mode, 0, lock);
+ LOCK_SYSTEM_UNLOCK(dbenv);
+ return (ret);
+}
+
/*
* __lock_get --
* DB_ENV->lock_get.
*
* PUBLIC: int __lock_get __P((DB_ENV *,
- * PUBLIC: u_int32_t, u_int32_t, const DBT *, db_lockmode_t, DB_LOCK *));
+ * PUBLIC: DB_LOCKER *, u_int32_t, const DBT *, db_lockmode_t, DB_LOCK *));
*/
int
__lock_get(dbenv, locker, flags, obj, lock_mode, lock)
DB_ENV *dbenv;
- u_int32_t locker, flags;
+ DB_LOCKER *locker;
+ u_int32_t flags;
const DBT *obj;
db_lockmode_t lock_mode;
DB_LOCK *lock;
@@ -410,13 +454,14 @@ __lock_get(dbenv, locker, flags, obj, lock_mode, lock)
* All the work for lock_get (and for the GET option of lock_vec) is done
* inside of lock_get_internal.
*
- * PUBLIC: int __lock_get_internal __P((DB_LOCKTAB *, u_int32_t, u_int32_t,
+ * PUBLIC: int __lock_get_internal __P((DB_LOCKTAB *, DB_LOCKER *, u_int32_t,
* PUBLIC: const DBT *, db_lockmode_t, db_timeout_t, DB_LOCK *));
*/
int
-__lock_get_internal(lt, locker, flags, obj, lock_mode, timeout, lock)
+__lock_get_internal(lt, sh_locker, flags, obj, lock_mode, timeout, lock)
DB_LOCKTAB *lt;
- u_int32_t locker, flags;
+ DB_LOCKER *sh_locker;
+ u_int32_t flags;
const DBT *obj;
db_lockmode_t lock_mode;
db_timeout_t timeout;
@@ -424,12 +469,12 @@ __lock_get_internal(lt, locker, flags, obj, lock_mode, timeout, lock)
{
struct __db_lock *newl, *lp;
DB_ENV *dbenv;
- DB_LOCKER *sh_locker;
DB_LOCKOBJ *sh_obj;
DB_LOCKREGION *region;
DB_THREAD_INFO *ip;
- u_int32_t holder, locker_ndx, obj_ndx;
+ u_int32_t ndx;
int did_abort, ihold, grant_dirty, no_dd, ret, t_ret;
+ roff_t holder, sh_off;
/*
* We decide what action to take based on what locks are already held
@@ -450,6 +495,11 @@ __lock_get_internal(lt, locker, flags, obj, lock_mode, timeout, lock)
if (F_ISSET(dbenv, DB_ENV_NOLOCKING))
return (0);
+ if (sh_locker == NULL) {
+ __db_errx(dbenv, "Locker does not exist");
+ return (EINVAL);
+ }
+
no_dd = ret = 0;
newl = NULL;
sh_obj = NULL;
@@ -460,33 +510,27 @@ __lock_get_internal(lt, locker, flags, obj, lock_mode, timeout, lock)
(u_long)lock_mode);
return (EINVAL);
}
- if (LF_ISSET(DB_LOCK_UPGRADE))
- region->stat.st_nupgrade++;
- else if (!LF_ISSET(DB_LOCK_SWITCH))
- region->stat.st_nrequests++;
if (obj == NULL) {
DB_ASSERT(dbenv, LOCK_ISSET(*lock));
lp = R_ADDR(&lt->reginfo, lock->off);
sh_obj = (DB_LOCKOBJ *)((u_int8_t *)lp + lp->obj);
+ ndx = sh_obj->indx;
+ OBJECT_LOCK_NDX(lt, ndx);
} else {
/* Allocate a shared memory new object. */
OBJECT_LOCK(lt, region, obj, lock->ndx);
+ ndx = lock->ndx;
if ((ret = __lock_getobj(lt, obj, lock->ndx, 1, &sh_obj)) != 0)
goto err;
}
- /* Get the locker, we may need it to find our parent. */
- LOCKER_LOCK(lt, region, locker, locker_ndx);
- if ((ret = __lock_getlocker(lt, locker,
- locker_ndx, locker > DB_LOCK_MAXID ? 1 : 0, &sh_locker)) != 0)
- goto err;
-
- if (sh_locker == NULL) {
- __db_errx(dbenv, "Locker does not exist");
- ret = EINVAL;
- goto err;
- }
+#ifdef HAVE_STATISTICS
+ if (LF_ISSET(DB_LOCK_UPGRADE))
+ lt->obj_stat[ndx].st_nupgrade++;
+ else if (!LF_ISSET(DB_LOCK_SWITCH))
+ lt->obj_stat[ndx].st_nrequests++;
+#endif
/*
* Figure out if we can grant this lock or if it should wait.
@@ -526,9 +570,11 @@ __lock_get_internal(lt, locker, flags, obj, lock_mode, timeout, lock)
lp = NULL;
else
lp = SH_TAILQ_FIRST(&sh_obj->holders, __db_lock);
+
+ sh_off = R_OFFSET(&lt->reginfo, sh_locker);
for (; lp != NULL; lp = SH_TAILQ_NEXT(lp, links, __db_lock)) {
DB_ASSERT(dbenv, lp->status != DB_LSTAT_FREE);
- if (locker == lp->holder) {
+ if (sh_off == lp->holder) {
if (lp->mode == lock_mode &&
lp->status == DB_LSTAT_HELD) {
if (LF_ISSET(DB_LOCK_UPGRADE))
@@ -586,7 +632,7 @@ __lock_get_internal(lt, locker, flags, obj, lock_mode, timeout, lock)
SH_TAILQ_FOREACH(
lp, &sh_obj->waiters, links, __db_lock)
if (CONFLICTS(lt, region, lp->mode,
- lock_mode) && locker != lp->holder)
+ lock_mode) && sh_off != lp->holder)
break;
/*
@@ -646,6 +692,7 @@ __lock_get_internal(lt, locker, flags, obj, lock_mode, timeout, lock)
case SECOND:
case GRANT:
/* Allocate a new lock. */
+ LOCK_LOCKS(dbenv, region);
if ((newl =
SH_TAILQ_FIRST(&region->free_locks, __db_lock)) == NULL) {
ret = __lock_nomem(dbenv, "locks");
@@ -653,9 +700,12 @@ __lock_get_internal(lt, locker, flags, obj, lock_mode, timeout, lock)
}
SH_TAILQ_REMOVE(&region->free_locks, newl, links, __db_lock);
+#ifdef HAVE_STATISTICS
/* Update new lock statistics. */
if (++region->stat.st_nlocks > region->stat.st_maxnlocks)
region->stat.st_maxnlocks = region->stat.st_nlocks;
+#endif
+ UNLOCK_LOCKS(dbenv, region);
/*
* Allocate a mutex if we do not have a mutex backing the lock.
@@ -674,10 +724,11 @@ __lock_get_internal(lt, locker, flags, obj, lock_mode, timeout, lock)
MUTEX_LOCK(dbenv, newl->mtx_lock);
}
- newl->holder = locker;
+ newl->holder = R_OFFSET(&lt->reginfo, sh_locker);
newl->refcount = 1;
newl->mode = lock_mode;
newl->obj = (roff_t)SH_PTR_TO_OFF(newl, sh_obj);
+ newl->indx = sh_obj->indx;
/*
* Now, insert the lock onto its locker's list.
* If the locker does not currently hold any locks,
@@ -714,12 +765,16 @@ upgrade: lp = R_ADDR(&lt->reginfo, lock->off);
case SECOND:
if (LF_ISSET(DB_LOCK_NOWAIT)) {
ret = DB_LOCK_NOTGRANTED;
- region->stat.st_lock_nowait++;
+ STAT(region->stat.st_lock_nowait++);
goto err;
}
- if ((lp = SH_TAILQ_FIRST(&sh_obj->waiters, __db_lock)) == NULL)
+ if ((lp =
+ SH_TAILQ_FIRST(&sh_obj->waiters, __db_lock)) == NULL) {
+ LOCK_OBJECTS(dbenv, region);
SH_TAILQ_INSERT_HEAD(&region->dd_objs,
sh_obj, dd_links, __db_lockobj);
+ UNLOCK_OBJECTS(dbenv, region);
+ }
switch (action) {
case HEAD:
SH_TAILQ_INSERT_HEAD(
@@ -736,15 +791,6 @@ upgrade: lp = R_ADDR(&lt->reginfo, lock->off);
DB_ASSERT(dbenv, 0);
}
- /* If we are switching drop the lock we had. */
- if (LF_ISSET(DB_LOCK_SWITCH) &&
- (ret = __lock_put_nolock(dbenv,
- lock, &ihold, DB_LOCK_NOWAITERS)) != 0) {
- (void)__lock_remove_waiter(
- lt, sh_obj, newl, DB_LSTAT_FREE);
- goto err;
- }
-
/*
* First check to see if this txn has expired.
* If not then see if the lock timeout is past
@@ -776,23 +822,35 @@ upgrade: lp = R_ADDR(&lt->reginfo, lock->off);
if (timeout != 0)
__lock_expires(dbenv, &sh_locker->lk_expire, timeout);
else
- LOCK_SET_TIME_INVALID(&sh_locker->lk_expire);
+ timespecclear(&sh_locker->lk_expire);
- if (LOCK_TIME_ISVALID(&sh_locker->tx_expire) &&
+ if (timespecisset(&sh_locker->tx_expire) &&
(timeout == 0 || __lock_expired(dbenv,
&sh_locker->lk_expire, &sh_locker->tx_expire)))
sh_locker->lk_expire = sh_locker->tx_expire;
- if (LOCK_TIME_ISVALID(&sh_locker->lk_expire) &&
- (!LOCK_TIME_ISVALID(&region->next_timeout) ||
- LOCK_TIME_GREATER(
- &region->next_timeout, &sh_locker->lk_expire)))
+ if (timespecisset(&sh_locker->lk_expire) &&
+ (!timespecisset(&region->next_timeout) ||
+ timespeccmp(
+ &region->next_timeout, &sh_locker->lk_expire, >)))
region->next_timeout = sh_locker->lk_expire;
newl->status = DB_LSTAT_WAITING;
- region->stat.st_lock_wait++;
+ STAT(lt->obj_stat[ndx].st_lock_wait++);
/* We are about to block, deadlock detector must run. */
region->need_dd = 1;
+ OBJECT_UNLOCK(lt, sh_obj->indx);
+
+ /* If we are switching drop the lock we had. */
+ if (LF_ISSET(DB_LOCK_SWITCH) &&
+ (ret = __lock_put_nolock(dbenv,
+ lock, &ihold, DB_LOCK_NOWAITERS)) != 0) {
+ OBJECT_LOCK_NDX(lt, sh_obj->indx);
+ (void)__lock_remove_waiter(
+ lt, sh_obj, newl, DB_LSTAT_FREE);
+ goto err;
+ }
+
LOCK_SYSTEM_UNLOCK(dbenv);
/*
@@ -810,27 +868,30 @@ upgrade: lp = R_ADDR(&lt->reginfo, lock->off);
ip->dbth_state = THREAD_ACTIVE;
LOCK_SYSTEM_LOCK(dbenv);
+ ndx = sh_obj->indx;
+ OBJECT_LOCK_NDX(lt, ndx);
/* Turn off lock timeout. */
if (newl->status != DB_LSTAT_EXPIRED)
- LOCK_SET_TIME_INVALID(&sh_locker->lk_expire);
+ timespecclear(&sh_locker->lk_expire);
switch (newl->status) {
case DB_LSTAT_ABORTED:
ret = DB_LOCK_DEADLOCK;
goto err;
case DB_LSTAT_EXPIRED:
-expired: SHOBJECT_LOCK(lt, region, sh_obj, obj_ndx);
- ret = __lock_put_internal(lt, newl,
- obj_ndx, DB_LOCK_UNLINK | DB_LOCK_FREE);
+expired: ret = __lock_put_internal(lt, newl,
+ ndx, DB_LOCK_UNLINK | DB_LOCK_FREE);
newl = NULL;
if (ret != 0)
goto err;
- if (LOCK_TIME_EQUAL(
- &sh_locker->lk_expire, &sh_locker->tx_expire))
- region->stat.st_ntxntimeouts++;
+#ifdef HAVE_STATISTICS
+ if (timespeccmp(
+ &sh_locker->lk_expire, &sh_locker->tx_expire, ==))
+ lt->obj_stat[ndx].st_ntxntimeouts++;
else
- region->stat.st_nlocktimeouts++;
+ lt->obj_stat[ndx].st_nlocktimeouts++;
+#endif
ret = DB_LOCK_NOTGRANTED;
goto err;
case DB_LSTAT_PENDING:
@@ -873,13 +934,15 @@ expired: SHOBJECT_LOCK(lt, region, sh_obj, obj_ndx);
F_SET(sh_locker, DB_LOCKER_DIRTY);
}
+ OBJECT_UNLOCK(lt, ndx);
return (0);
err: if (!LF_ISSET(DB_LOCK_UPGRADE | DB_LOCK_SWITCH))
LOCK_INIT(*lock);
-done: if (newl != NULL &&
- (t_ret = __lock_freelock(lt, newl, locker,
+done: OBJECT_UNLOCK(lt, ndx);
+ if (newl != NULL &&
+ (t_ret = __lock_freelock(lt, newl, sh_locker,
DB_LOCK_FREE | DB_LOCK_UNLINK)) != 0 && ret == 0)
ret = t_ret;
@@ -971,13 +1034,16 @@ __lock_put_nolock(dbenv, lock, runp, flags)
return (EINVAL);
}
+ OBJECT_LOCK_NDX(lt, lock->ndx);
ret = __lock_put_internal(lt,
lockp, lock->ndx, flags | DB_LOCK_UNLINK | DB_LOCK_FREE);
+ OBJECT_UNLOCK(lt, lock->ndx);
+
LOCK_INIT(*lock);
*runp = 0;
if (ret == 0 && region->detect != DB_LOCK_NORUN &&
- (region->need_dd || LOCK_TIME_ISVALID(&region->next_timeout)))
+ (region->need_dd || timespecisset(&region->next_timeout)))
*runp = 1;
return (ret);
@@ -1007,7 +1073,6 @@ __lock_downgrade(dbenv, lock, new_mode, flags)
DB_LOCKOBJ *obj;
DB_LOCKREGION *region;
DB_LOCKTAB *lt;
- u_int32_t indx;
int ret;
PANIC_CHECK(dbenv);
@@ -1020,10 +1085,9 @@ __lock_downgrade(dbenv, lock, new_mode, flags)
lt = dbenv->lk_handle;
region = lt->reginfo.primary;
- if (!LF_ISSET(DB_LOCK_NOREGION))
- LOCK_SYSTEM_LOCK(dbenv);
+ LOCK_SYSTEM_LOCK(dbenv);
- region->stat.st_ndowngrade++;
+ STAT(region->stat.st_ndowngrade++);
lockp = R_ADDR(&lt->reginfo, lock->off);
if (lock->gen != lockp->gen) {
@@ -1032,15 +1096,8 @@ __lock_downgrade(dbenv, lock, new_mode, flags)
goto out;
}
- LOCKER_LOCK(lt, region, lockp->holder, indx);
+ sh_locker = R_ADDR(&lt->reginfo, lockp->holder);
- if ((ret = __lock_getlocker(lt, lockp->holder,
- indx, 0, &sh_locker)) != 0 || sh_locker == NULL) {
- if (ret == 0)
- ret = EINVAL;
- __db_errx(dbenv, __db_locker_invalid);
- goto out;
- }
if (IS_WRITELOCK(lockp->mode) && !IS_WRITELOCK(new_mode))
sh_locker->nwrites--;
@@ -1049,10 +1106,12 @@ __lock_downgrade(dbenv, lock, new_mode, flags)
/* Get the object associated with this lock. */
obj = (DB_LOCKOBJ *)((u_int8_t *)lockp + lockp->obj);
+ OBJECT_LOCK_NDX(lt, obj->indx);
+ lt->obj_stat[obj->indx].st_ndowngrade++;
ret = __lock_promote(lt, obj, NULL, LF_ISSET(DB_LOCK_NOWAITERS));
+ OBJECT_UNLOCK(lt, obj->indx);
-out: if (!LF_ISSET(DB_LOCK_NOREGION))
- LOCK_SYSTEM_UNLOCK(dbenv);
+out: LOCK_SYSTEM_UNLOCK(dbenv);
return (ret);
}
@@ -1063,10 +1122,13 @@ __lock_put_internal(lt, lockp, obj_ndx, flags)
struct __db_lock *lockp;
u_int32_t obj_ndx, flags;
{
+ DB_ENV *dbenv;
DB_LOCKOBJ *sh_obj;
DB_LOCKREGION *region;
int ret, state_changed;
+ COMPQUIET(dbenv, NULL);
+ dbenv = lt->dbenv;
region = lt->reginfo.primary;
ret = state_changed = 0;
@@ -1077,14 +1139,20 @@ __lock_put_internal(lt, lockp, obj_ndx, flags)
* already been done; all we need to do is return it to the
* free list.
*/
- (void)__lock_freelock(lt, lockp, 0, DB_LOCK_FREE);
+ (void)__lock_freelock(lt, lockp, NULL, DB_LOCK_FREE);
return (0);
}
+ /*
+ * If we are using the multiple mutex implementation then we
+ * update these counters unsafely.
+ */
+#ifdef HAVE_STATISTICS
if (LF_ISSET(DB_LOCK_DOALL))
- region->stat.st_nreleases += lockp->refcount;
+ lt->obj_stat[obj_ndx].st_nreleases += lockp->refcount;
else
- region->stat.st_nreleases++;
+ lt->obj_stat[obj_ndx].st_nreleases++;
+#endif
if (!LF_ISSET(DB_LOCK_DOALL) && lockp->refcount > 1) {
lockp->refcount--;
@@ -1125,18 +1193,22 @@ __lock_put_internal(lt, lockp, obj_ndx, flags)
SH_TAILQ_FIRST(&sh_obj->waiters, __db_lock) == NULL) {
SH_TAILQ_REMOVE(
&lt->obj_tab[obj_ndx], sh_obj, links, __db_lockobj);
+ LOCK_OBJECTS(dbenv, region);
if (sh_obj->lockobj.size > sizeof(sh_obj->objdata))
- __db_shalloc_free(&lt->reginfo,
+ __env_alloc_free(&lt->reginfo,
SH_DBT_PTR(&sh_obj->lockobj));
SH_TAILQ_INSERT_HEAD(
&region->free_objs, sh_obj, links, __db_lockobj);
- region->stat.st_nobjects--;
+ sh_obj->generation++;
+ STAT(region->stat.st_nobjects--);
+ UNLOCK_OBJECTS(dbenv, region);
state_changed = 1;
}
/* Free lock. */
if (LF_ISSET(DB_LOCK_UNLINK | DB_LOCK_FREE))
- ret = __lock_freelock(lt, lockp, lockp->holder, flags);
+ ret = __lock_freelock(lt, lockp,
+ R_ADDR(&lt->reginfo, lockp->holder), flags);
/*
* If we did not promote anyone; we need to run the deadlock
@@ -1154,27 +1226,20 @@ __lock_put_internal(lt, lockp, obj_ndx, flags)
*
*/
static int
-__lock_freelock(lt, lockp, locker, flags)
+__lock_freelock(lt, lockp, sh_locker, flags)
DB_LOCKTAB *lt;
struct __db_lock *lockp;
- u_int32_t locker, flags;
+ DB_LOCKER *sh_locker;
+ u_int32_t flags;
{
DB_ENV *dbenv;
- DB_LOCKER *sh_locker;
DB_LOCKREGION *region;
- u_int32_t indx;
int ret;
dbenv = lt->dbenv;
region = lt->reginfo.primary;
if (LF_ISSET(DB_LOCK_UNLINK)) {
- LOCKER_LOCK(lt, region, locker, indx);
- if ((ret = __lock_getlocker(lt,
- locker, indx, 0, &sh_locker)) != 0 || sh_locker == NULL) {
- __db_errx(dbenv, __db_locker_invalid);
- return (ret == 0 ? EINVAL : ret);
- }
SH_LIST_REMOVE(lockp, locker_links, __db_lock);
if (lockp->status == DB_LSTAT_HELD) {
@@ -1196,9 +1261,11 @@ __lock_freelock(lt, lockp, locker, flags)
(ret = __mutex_free(dbenv, &lockp->mtx_lock)) != 0)
return (ret);
lockp->status = DB_LSTAT_FREE;
+ LOCK_LOCKS(dbenv, region);
SH_TAILQ_INSERT_HEAD(
&region->free_locks, lockp, links, __db_lock);
- region->stat.st_nlocks--;
+ STAT(region->stat.st_nlocks--);
+ UNLOCK_LOCKS(dbenv, region);
}
return (0);
@@ -1225,37 +1292,47 @@ __lock_getobj(lt, obj, ndx, create, retp)
DB_LOCKREGION *region;
int ret;
void *p;
+ u_int32_t len;
dbenv = lt->dbenv;
region = lt->reginfo.primary;
+ len = 0;
/* Look up the object in the hash table. */
- SH_TAILQ_FOREACH(sh_obj, &lt->obj_tab[ndx], links, __db_lockobj)
+ SH_TAILQ_FOREACH(sh_obj, &lt->obj_tab[ndx], links, __db_lockobj) {
+ len++;
if (obj->size == sh_obj->lockobj.size &&
memcmp(obj->data,
SH_DBT_PTR(&sh_obj->lockobj), obj->size) == 0)
break;
+ }
+
+ if (len > lt->obj_stat[ndx].st_hash_len)
+ lt->obj_stat[ndx].st_hash_len = len;
/*
* If we found the object, then we can just return it. If
* we didn't find the object, then we need to create it.
*/
if (sh_obj == NULL && create) {
+ LOCK_OBJECTS(dbenv, region);
/* Create new object and then insert it into hash table. */
if ((sh_obj =
SH_TAILQ_FIRST(&region->free_objs, __db_lockobj)) == NULL) {
+ UNLOCK_OBJECTS(dbenv, region);
ret = __lock_nomem(lt->dbenv, "object entries");
goto err;
}
/*
* If we can fit this object in the structure, do so instead
- * of shalloc-ing space for it.
+ * of alloc-ing space for it.
*/
if (obj->size <= sizeof(sh_obj->objdata))
p = sh_obj->objdata;
else if ((ret =
- __db_shalloc(&lt->reginfo, obj->size, 0, &p)) != 0) {
+ __env_alloc(&lt->reginfo, obj->size, &p)) != 0) {
+ UNLOCK_OBJECTS(dbenv, region);
__db_errx(dbenv, "No space for lock object storage");
goto err;
}
@@ -1264,9 +1341,13 @@ __lock_getobj(lt, obj, ndx, create, retp)
SH_TAILQ_REMOVE(
&region->free_objs, sh_obj, links, __db_lockobj);
+#ifdef HAVE_STATISTICS
if (++region->stat.st_nobjects > region->stat.st_maxnobjects)
region->stat.st_maxnobjects = region->stat.st_nobjects;
+#endif
+ UNLOCK_OBJECTS(dbenv, region);
+ sh_obj->indx = ndx;
SH_TAILQ_INIT(&sh_obj->waiters);
SH_TAILQ_INIT(&sh_obj->holders);
sh_obj->lockobj.size = obj->size;
@@ -1290,18 +1371,18 @@ err: return (ret);
* the lock is already held by an ancestor.
*/
static int
-__lock_is_parent(lt, locker, sh_locker)
+__lock_is_parent(lt, l_off, sh_locker)
DB_LOCKTAB *lt;
- u_int32_t locker;
+ roff_t l_off;
DB_LOCKER *sh_locker;
{
DB_LOCKER *parent;
parent = sh_locker;
while (parent->parent_locker != INVALID_ROFF) {
- parent = R_ADDR(&lt->reginfo, parent->parent_locker);
- if (parent->id == locker)
+ if (parent->parent_locker == l_off)
return (1);
+ parent = R_ADDR(&lt->reginfo, parent->parent_locker);
}
return (0);
@@ -1313,38 +1394,28 @@ __lock_is_parent(lt, locker, sh_locker)
* *retp == 1 if so, 0 otherwise.
*
* PUBLIC: int __lock_locker_is_parent
- * PUBLIC: __P((DB_ENV *, u_int32_t, u_int32_t, int *));
+ * PUBLIC: __P((DB_ENV *, DB_LOCKER *, DB_LOCKER *, int *));
*/
int
__lock_locker_is_parent(dbenv, locker, child, retp)
DB_ENV *dbenv;
- u_int32_t locker, child;
+ DB_LOCKER *locker;
+ DB_LOCKER *child;
int *retp;
{
- DB_LOCKER *sh_locker;
- DB_LOCKREGION *region;
DB_LOCKTAB *lt;
- u_int32_t locker_ndx;
- int ret;
lt = dbenv->lk_handle;
- region = lt->reginfo.primary;
-
- LOCKER_LOCK(lt, region, child, locker_ndx);
- if ((ret =
- __lock_getlocker(lt, child, locker_ndx, 0, &sh_locker)) != 0) {
- __db_errx(dbenv, __db_locker_invalid);
- return (ret);
- }
/*
* The locker may not exist for this transaction, if not then it has
* no parents.
*/
- if (sh_locker == NULL)
+ if (locker == NULL)
*retp = 0;
else
- *retp = __lock_is_parent(lt, locker, sh_locker);
+ *retp = __lock_is_parent(lt,
+ R_OFFSET(&lt->reginfo, locker), child);
return (0);
}
@@ -1353,20 +1424,18 @@ __lock_locker_is_parent(dbenv, locker, child, retp)
* Called on child commit to merge child's locks with parent's.
*/
static int
-__lock_inherit_locks(lt, locker, flags)
+__lock_inherit_locks(lt, sh_locker, flags)
DB_LOCKTAB *lt;
- u_int32_t locker;
+ DB_LOCKER *sh_locker;
u_int32_t flags;
{
DB_ENV *dbenv;
- DB_LOCKER *sh_locker, *sh_parent;
+ DB_LOCKER *sh_parent;
DB_LOCKOBJ *obj;
- DB_LOCKREGION *region;
int ret;
struct __db_lock *hlp, *lp;
- u_int32_t ndx;
+ roff_t poff;
- region = lt->reginfo.primary;
dbenv = lt->dbenv;
/*
@@ -1377,15 +1446,10 @@ __lock_inherit_locks(lt, locker, flags)
* exist, that just means that the child holds no
* locks, so inheritance is easy!
*/
- LOCKER_LOCK(lt, region, locker, ndx);
- if ((ret = __lock_getlocker(lt,
- locker, ndx, 0, &sh_locker)) != 0 ||
- sh_locker == NULL ||
+ if (sh_locker == NULL ||
F_ISSET(sh_locker, DB_LOCKER_DELETED)) {
- if (ret == 0 && sh_locker != NULL)
- ret = EINVAL;
__db_errx(dbenv, __db_locker_invalid);
- return (ret);
+ return (EINVAL);
}
/* Make sure we are a child transaction. */
@@ -1400,14 +1464,9 @@ __lock_inherit_locks(lt, locker, flags)
* Now, lock the parent locker; move locks from
* the committing list to the parent's list.
*/
- LOCKER_LOCK(lt, region, locker, ndx);
if (F_ISSET(sh_parent, DB_LOCKER_DELETED)) {
- if (ret == 0) {
- __db_errx(dbenv,
- "Parent locker is not valid");
- ret = EINVAL;
- }
- return (ret);
+ __db_errx(dbenv, "Parent locker is not valid");
+ return (EINVAL);
}
/*
@@ -1416,6 +1475,7 @@ __lock_inherit_locks(lt, locker, flags)
* not require an inordinate number of locks, we try
* to merge the child's locks with its parent's.
*/
+ poff = R_OFFSET(&lt->reginfo, sh_parent);
for (lp = SH_LIST_FIRST(&sh_locker->heldby, __db_lock);
lp != NULL;
lp = SH_LIST_FIRST(&sh_locker->heldby, __db_lock)) {
@@ -1424,8 +1484,7 @@ __lock_inherit_locks(lt, locker, flags)
/* See if the parent already has a lock. */
obj = (DB_LOCKOBJ *)((u_int8_t *)lp + lp->obj);
SH_TAILQ_FOREACH(hlp, &obj->holders, links, __db_lock)
- if (hlp->holder == sh_parent->id &&
- lp->mode == hlp->mode)
+ if (hlp->holder == poff && lp->mode == hlp->mode)
break;
if (hlp != NULL) {
@@ -1435,12 +1494,12 @@ __lock_inherit_locks(lt, locker, flags)
/* Remove lock from object list and free it. */
DB_ASSERT(dbenv, lp->status == DB_LSTAT_HELD);
SH_TAILQ_REMOVE(&obj->holders, lp, links, __db_lock);
- (void)__lock_freelock(lt, lp, locker, DB_LOCK_FREE);
+ (void)__lock_freelock(lt, lp, sh_locker, DB_LOCK_FREE);
} else {
/* Just move lock to parent chains. */
SH_LIST_INSERT_HEAD(&sh_parent->heldby,
lp, locker_links, __db_lock);
- lp->holder = sh_parent->id;
+ lp->holder = poff;
}
/*
@@ -1458,7 +1517,7 @@ __lock_inherit_locks(lt, locker, flags)
sh_parent->nlocks += sh_locker->nlocks;
sh_parent->nwrites += sh_locker->nwrites;
- return (ret);
+ return (0);
}
/*
@@ -1478,9 +1537,7 @@ __lock_promote(lt, obj, state_changedp, flags)
u_int32_t flags;
{
struct __db_lock *lp_w, *lp_h, *next_waiter;
- DB_LOCKER *sh_locker;
DB_LOCKREGION *region;
- u_int32_t locker_ndx;
int had_waiters, state_changed;
region = lt->reginfo.primary;
@@ -1516,17 +1573,8 @@ __lock_promote(lt, obj, state_changedp, flags)
SH_TAILQ_FOREACH(lp_h, &obj->holders, links, __db_lock) {
if (lp_h->holder != lp_w->holder &&
CONFLICTS(lt, region, lp_h->mode, lp_w->mode)) {
- LOCKER_LOCK(lt,
- region, lp_w->holder, locker_ndx);
- if ((__lock_getlocker(lt, lp_w->holder,
- locker_ndx, 0, &sh_locker)) != 0) {
- __db_errx(lt->dbenv,
- "Locker %#lx missing",
- (u_long)lp_w->holder);
- return (__db_panic(lt->dbenv, EINVAL));
- }
- if (!__lock_is_parent(lt,
- lp_h->holder, sh_locker))
+ if (!__lock_is_parent(lt, lp_h->holder,
+ R_ADDR(&lt->reginfo, lp_w->holder)))
break;
}
}
@@ -1547,8 +1595,16 @@ __lock_promote(lt, obj, state_changedp, flags)
* If this object had waiters and doesn't any more, then we need
* to remove it from the dd_obj list.
*/
- if (had_waiters && SH_TAILQ_FIRST(&obj->waiters, __db_lock) == NULL)
+ if (had_waiters && SH_TAILQ_FIRST(&obj->waiters, __db_lock) == NULL) {
+ LOCK_OBJECTS(lt->dbenv, region);
+ /*
+ * Bump the generation when removing an object from the
+ * queue so that the deadlock detector will retry.
+ */
+ obj->generation++;
SH_TAILQ_REMOVE(&region->dd_objs, obj, dd_links, __db_lockobj);
+ UNLOCK_OBJECTS(lt->dbenv, region);
+ }
if (state_changedp != NULL)
*state_changedp = state_changed;
@@ -1583,10 +1639,14 @@ __lock_remove_waiter(lt, sh_obj, lockp, status)
SH_TAILQ_REMOVE(&sh_obj->waiters, lockp, links, __db_lock);
lockp->links.stqe_prev = -1;
lockp->status = status;
- if (SH_TAILQ_FIRST(&sh_obj->waiters, __db_lock) == NULL)
+ if (SH_TAILQ_FIRST(&sh_obj->waiters, __db_lock) == NULL) {
+ LOCK_OBJECTS(lt->dbenv, region);
+ sh_obj->generation++;
SH_TAILQ_REMOVE(
&region->dd_objs,
sh_obj, dd_links, __db_lockobj);
+ UNLOCK_OBJECTS(lt->dbenv, region);
+ }
/*
* Wake whoever is waiting on this lock.
@@ -1608,44 +1668,35 @@ static int
__lock_trade(dbenv, lock, new_locker)
DB_ENV *dbenv;
DB_LOCK *lock;
- u_int32_t new_locker;
+ DB_LOCKER *new_locker;
{
struct __db_lock *lp;
- DB_LOCKREGION *region;
DB_LOCKTAB *lt;
- DB_LOCKER *sh_locker;
int ret;
- u_int32_t locker_ndx;
lt = dbenv->lk_handle;
- region = lt->reginfo.primary;
lp = R_ADDR(&lt->reginfo, lock->off);
/* If the lock is already released, simply return. */
if (lp->gen != lock->gen)
return (DB_NOTFOUND);
- /* Make sure that we can get new locker and add this lock to it. */
- LOCKER_LOCK(lt, region, new_locker, locker_ndx);
- if ((ret =
- __lock_getlocker(lt, new_locker, locker_ndx, 0, &sh_locker)) != 0)
- return (ret);
-
- if (sh_locker == NULL) {
+ if (new_locker == NULL) {
__db_errx(dbenv, "Locker does not exist");
return (EINVAL);
}
/* Remove the lock from its current locker. */
- if ((ret = __lock_freelock(lt, lp, lp->holder, DB_LOCK_UNLINK)) != 0)
+ if ((ret = __lock_freelock(lt,
+ lp, R_ADDR(&lt->reginfo, lp->holder), DB_LOCK_UNLINK)) != 0)
return (ret);
/* Add lock to its new locker. */
- SH_LIST_INSERT_HEAD(&sh_locker->heldby, lp, locker_links, __db_lock);
- sh_locker->nlocks++;
+ SH_LIST_INSERT_HEAD(&new_locker->heldby, lp, locker_links, __db_lock);
+ new_locker->nlocks++;
if (IS_WRITELOCK(lp->mode))
- sh_locker->nwrites++;
- lp->holder = new_locker;
+ new_locker->nwrites++;
+ lp->holder = R_OFFSET(&lt->reginfo, new_locker);
return (0);
}
diff --git a/db/lock/lock_conflict.c b/db/lock/lock_conflict.c
deleted file mode 100644
index 2d7945fe2..000000000
--- a/db/lock/lock_conflict.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1996, 1997, 1998, 1999, 2000
- * Sleepycat Software. All rights reserved.
- */
-
-#include "db_config.h"
-
-#ifndef lint
-static const char revid[] = "$Id: lock_conflict.c,v 11.6 2000/12/12 17:38:13 bostic Exp $";
-#endif /* not lint */
-
-#ifndef NO_SYSTEM_INCLUDES
-#include <sys/types.h>
-#endif
-
-#include "db_int.h"
-
-/*
- * The conflict arrays are set up such that the row is the lock you
- * are holding and the column is the lock that is desired.
- */
-
-const u_int8_t db_riw_conflicts[] = {
- /* N S X WT IX IS SIX */
- /* N */ 0, 0, 0, 0, 0, 0, 0,
- /* S */ 0, 0, 1, 0, 1, 0, 1,
- /* X */ 0, 1, 1, 1, 1, 1, 1,
- /* WT */ 0, 0, 0, 0, 0, 0, 0,
- /* IX */ 0, 1, 1, 0, 0, 0, 0,
- /* IS */ 0, 0, 1, 0, 0, 0, 0,
- /* SIX */ 0, 1, 1, 0, 0, 0, 0
-};
diff --git a/db/lock/lock_deadlock.c b/db/lock/lock_deadlock.c
index 4dfcfc727..ed0644676 100644
--- a/db/lock/lock_deadlock.c
+++ b/db/lock/lock_deadlock.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: lock_deadlock.c,v 12.17 2006/08/24 14:46:10 bostic Exp $
+ * $Id: lock_deadlock.c,v 12.26 2007/05/17 19:33:04 bostic Exp $
*/
#include "db_config.h"
@@ -40,13 +39,14 @@ typedef struct {
u_int32_t id;
roff_t last_lock;
roff_t last_obj;
+ u_int32_t last_ndx;
u_int32_t last_locker_id;
db_pgno_t pgno;
} locker_info;
static int __dd_abort __P((DB_ENV *, locker_info *, int *));
-static int __dd_build __P((DB_ENV *,
- u_int32_t, u_int32_t **, u_int32_t *, u_int32_t *, locker_info **));
+static int __dd_build __P((DB_ENV *, u_int32_t,
+ u_int32_t **, u_int32_t *, u_int32_t *, locker_info **, int*));
static int __dd_find __P((DB_ENV *,
u_int32_t *, locker_info *, u_int32_t, u_int32_t, u_int32_t ***));
static int __dd_isolder __P((u_int32_t, u_int32_t, u_int32_t, u_int32_t));
@@ -65,10 +65,10 @@ static void __dd_debug
* PUBLIC: int __lock_detect_pp __P((DB_ENV *, u_int32_t, u_int32_t, int *));
*/
int
-__lock_detect_pp(dbenv, flags, atype, abortp)
+__lock_detect_pp(dbenv, flags, atype, rejectp)
DB_ENV *dbenv;
u_int32_t flags, atype;
- int *abortp;
+ int *rejectp;
{
DB_THREAD_INFO *ip;
int ret;
@@ -98,7 +98,7 @@ __lock_detect_pp(dbenv, flags, atype, abortp)
}
ENV_ENTER(dbenv, ip);
- REPLICATION_WRAP(dbenv, (__lock_detect(dbenv, atype, abortp)), ret);
+ REPLICATION_WRAP(dbenv, (__lock_detect(dbenv, atype, rejectp)), ret);
ENV_LEAVE(dbenv, ip);
return (ret);
}
@@ -110,14 +110,14 @@ __lock_detect_pp(dbenv, flags, atype, abortp)
* PUBLIC: int __lock_detect __P((DB_ENV *, u_int32_t, int *));
*/
int
-__lock_detect(dbenv, atype, abortp)
+__lock_detect(dbenv, atype, rejectp)
DB_ENV *dbenv;
u_int32_t atype;
- int *abortp;
+ int *rejectp;
{
DB_LOCKREGION *region;
DB_LOCKTAB *lt;
- db_timeval_t now;
+ db_timespec now;
locker_info *idmap;
u_int32_t *bitmap, *copymap, **deadp, **free_me, *tmpmap;
u_int32_t i, cid, keeper, killid, limit, nalloc, nlockers;
@@ -134,8 +134,8 @@ __lock_detect(dbenv, atype, abortp)
free_me = NULL;
lt = dbenv->lk_handle;
- if (abortp != NULL)
- *abortp = 0;
+ if (rejectp != NULL)
+ *rejectp = 0;
/* Check if a detector run is necessary. */
LOCK_SYSTEM_LOCK(dbenv);
@@ -143,9 +143,9 @@ __lock_detect(dbenv, atype, abortp)
/* Make a pass only if auto-detect would run. */
region = lt->reginfo.primary;
- LOCK_SET_TIME_INVALID(&now);
+ timespecclear(&now);
if (region->need_dd == 0 &&
- (!LOCK_TIME_ISVALID(&region->next_timeout) ||
+ (!timespecisset(&region->next_timeout) ||
!__lock_expired(dbenv, &now, &region->next_timeout))) {
LOCK_SYSTEM_UNLOCK(dbenv);
return (0);
@@ -157,7 +157,8 @@ __lock_detect(dbenv, atype, abortp)
region->need_dd = 0;
/* Build the waits-for bitmap. */
- ret = __dd_build(dbenv, atype, &bitmap, &nlockers, &nalloc, &idmap);
+ ret = __dd_build(dbenv,
+ atype, &bitmap, &nlockers, &nalloc, &idmap, rejectp);
lock_max = region->stat.st_cur_maxid;
LOCK_SYSTEM_UNLOCK(dbenv);
if (ret != 0 || atype == DB_LOCK_EXPIRE)
@@ -206,8 +207,8 @@ __lock_detect(dbenv, atype, abortp)
killid = BAD_KILLID;
free_me = deadp;
for (; *deadp != NULL; deadp++) {
- if (abortp != NULL)
- ++*abortp;
+ if (rejectp != NULL)
+ ++*rejectp;
killid = (u_int32_t)(*deadp - bitmap) / nalloc;
limit = killid;
@@ -363,26 +364,29 @@ err: if (free_me != NULL)
#define DD_INVALID_ID ((u_int32_t) -1)
static int
-__dd_build(dbenv, atype, bmp, nlockers, allocp, idmap)
+__dd_build(dbenv, atype, bmp, nlockers, allocp, idmap, rejectp)
DB_ENV *dbenv;
u_int32_t atype, **bmp, *nlockers, *allocp;
locker_info **idmap;
+ int *rejectp;
{
struct __db_lock *lp;
DB_LOCKER *lip, *lockerp, *child;
- DB_LOCKOBJ *op, *lo;
+ DB_LOCKOBJ *op, *lo, *np;
DB_LOCKREGION *region;
DB_LOCKTAB *lt;
locker_info *id_array;
- db_timeval_t now, min_timeout;
- u_int32_t *bitmap, count, dd, *entryp, id, ndx, nentries, *tmpmap;
+ db_timespec now, min_timeout;
+ u_int32_t *bitmap, count, dd;
+ u_int32_t *entryp, gen, id, indx, ndx, nentries, *tmpmap;
u_int8_t *pptr;
int is_first, ret;
+ COMPQUIET(indx, 0);
lt = dbenv->lk_handle;
region = lt->reginfo.primary;
- LOCK_SET_TIME_INVALID(&now);
- LOCK_SET_TIME_MAX(&min_timeout);
+ timespecclear(&now);
+ timespecclear(&min_timeout);
/*
* While we always check for expired timeouts, if we are called with
@@ -393,26 +397,42 @@ __dd_build(dbenv, atype, bmp, nlockers, allocp, idmap)
* needs to expect this.
*/
if (atype == DB_LOCK_EXPIRE) {
- SH_TAILQ_FOREACH(op, &region->dd_objs, dd_links, __db_lockobj)
+skip: LOCK_OBJECTS(dbenv, region);
+ op = SH_TAILQ_FIRST(&region->dd_objs, __db_lockobj);
+ for (; op != NULL; op = np) {
+ indx = op->indx;
+ gen = op->generation;
+ UNLOCK_OBJECTS(dbenv, region);
+ OBJECT_LOCK_NDX(lt, indx);
+ if (op->generation != gen) {
+ OBJECT_UNLOCK(lt, indx);
+ goto skip;
+ }
SH_TAILQ_FOREACH(lp, &op->waiters, links, __db_lock) {
- LOCKER_LOCK(lt, region, lp->holder, ndx);
- if ((ret = __lock_getlocker(lt,
- lp->holder, ndx, 0, &lockerp)) != 0)
- continue;
+ lockerp = (DB_LOCKER *)
+ R_ADDR(&lt->reginfo, lp->holder);
if (lp->status == DB_LSTAT_WAITING) {
if (__lock_expired(dbenv,
&now, &lockerp->lk_expire)) {
lp->status = DB_LSTAT_EXPIRED;
MUTEX_UNLOCK(
dbenv, lp->mtx_lock);
+ if (rejectp != NULL)
+ ++*rejectp;
continue;
}
- if (LOCK_TIME_GREATER(
- &min_timeout, &lockerp->lk_expire))
+ if (!timespecisset(&min_timeout) ||
+ timespeccmp(&min_timeout,
+ &lockerp->lk_expire, >))
min_timeout =
lockerp->lk_expire;
}
}
+ LOCK_OBJECTS(dbenv, region);
+ np = SH_TAILQ_NEXT(op, dd_links, __db_lockobj);
+ OBJECT_UNLOCK(lt, indx);
+ }
+ UNLOCK_OBJECTS(dbenv, region);
goto done;
}
@@ -472,6 +492,7 @@ retry: count = region->stat.st_nlockers;
* First we go through and assign each locker a deadlock detector id.
*/
id = 0;
+ LOCK_LOCKERS(dbenv, region);
SH_TAILQ_FOREACH(lip, &region->lockers, ulinks, __db_locker) {
if (lip->master_locker == INVALID_ROFF) {
lip->dd_id = id++;
@@ -494,30 +515,55 @@ retry: count = region->stat.st_nlockers;
lip->dd_id = DD_INVALID_ID;
}
+ UNLOCK_LOCKERS(dbenv, region);
/*
* We only need consider objects that have waiters, so we use
* the list of objects with waiters (dd_objs) instead of traversing
* the entire hash table. For each object, we traverse the waiters
* list and add an entry in the waitsfor matrix for each waiter/holder
- * combination.
+ * combination. We don't want to lock from the OBJECTS mutex to the
+ * hash mutex, so we drop objects and get the hash mutex. Then
+ * check to see if the object has changed. Once we have the object
+ * locked then locks cannot be remove and lockers cannot go away.
*/
- SH_TAILQ_FOREACH(op, &region->dd_objs, dd_links, __db_lockobj) {
- CLEAR_MAP(tmpmap, nentries);
+ if (0) {
+ /* If an object has changed state, start over. */
+again: memset(bitmap, 0, count * sizeof(u_int32_t) * nentries);
+ }
+ LOCK_OBJECTS(dbenv, region);
+ op = SH_TAILQ_FIRST(&region->dd_objs, __db_lockobj);
+ for (; op != NULL; op = np) {
+ indx = op->indx;
+ gen = op->generation;
+ UNLOCK_OBJECTS(dbenv, region);
+
+ OBJECT_LOCK_NDX(lt, indx);
+ if (gen != op->generation) {
+ OBJECT_UNLOCK(lt, indx);
+ goto again;
+ }
/*
* First we go through and create a bit map that
* represents all the holders of this object.
*/
+
+ CLEAR_MAP(tmpmap, nentries);
SH_TAILQ_FOREACH(lp, &op->holders, links, __db_lock) {
- LOCKER_LOCK(lt, region, lp->holder, ndx);
- if ((ret = __lock_getlocker(lt,
- lp->holder, ndx, 0, &lockerp)) != 0)
- continue;
+ lockerp = (DB_LOCKER *)R_ADDR(&lt->reginfo, lp->holder);
if (lockerp->dd_id == DD_INVALID_ID) {
+ /*
+ * If the locker was not here when we started,
+ * then it was not deadlocked at that time.
+ */
+ if (lockerp->master_locker == INVALID_ROFF)
+ continue;
dd = ((DB_LOCKER *)R_ADDR(&lt->reginfo,
lockerp->master_locker))->dd_id;
+ if (dd == DD_INVALID_ID)
+ continue;
lockerp->dd_id = dd;
switch (atype) {
case DB_LOCK_MINLOCKS:
@@ -555,19 +601,19 @@ retry: count = region->stat.st_nlockers;
lp != NULL;
is_first = 0,
lp = SH_TAILQ_NEXT(lp, links, __db_lock)) {
- LOCKER_LOCK(lt, region, lp->holder, ndx);
- if ((ret = __lock_getlocker(lt,
- lp->holder, ndx, 0, &lockerp)) != 0)
- continue;
+ lockerp = (DB_LOCKER *)R_ADDR(&lt->reginfo, lp->holder);
if (lp->status == DB_LSTAT_WAITING) {
if (__lock_expired(dbenv,
&now, &lockerp->lk_expire)) {
lp->status = DB_LSTAT_EXPIRED;
MUTEX_UNLOCK(dbenv, lp->mtx_lock);
+ if (rejectp != NULL)
+ ++*rejectp;
continue;
}
- if (LOCK_TIME_GREATER(
- &min_timeout, &lockerp->lk_expire))
+ if (!timespecisset(&min_timeout) ||
+ timespeccmp(
+ &min_timeout, &lockerp->lk_expire, >))
min_timeout = lockerp->lk_expire;
}
@@ -613,19 +659,28 @@ retry: count = region->stat.st_nlockers;
CLR_MAP(entryp, dd);
}
}
+ LOCK_OBJECTS(dbenv, region);
+ np = SH_TAILQ_NEXT(op, dd_links, __db_lockobj);
+ OBJECT_UNLOCK(lt, indx);
}
+ UNLOCK_OBJECTS(dbenv, region);
- /* Now for each locker; record its last lock. */
+ /*
+ * Now for each locker, record its last lock.
+ * We need to look at the heldby list carefully. We have the LOCKERS
+ * locked so they cannot go away. The lock at the head of the
+ * list can be removed by locking the object it points at.
+ * Since lock memory is not freed if we get a lock we can look
+ * at it safely but SH_LIST_FIRST is not atomic, so we check that
+ * the list has not gone empty during that macro.
+ */
+ LOCK_LOCKERS(dbenv, region);
for (id = 0; id < count; id++) {
if (!id_array[id].valid)
continue;
- LOCKER_LOCK(lt, region, id_array[id].id, ndx);
- if ((ret = __lock_getlocker(lt,
- id_array[id].id, ndx, 0, &lockerp)) != 0) {
- __db_errx(dbenv,
- "No locks for locker %lu", (u_long)id_array[id].id);
+ if ((ret = __lock_getlocker_int(lt,
+ id_array[id].id, 0, &lockerp)) != 0 || lockerp == NULL)
continue;
- }
/*
* If this is a master transaction, try to
@@ -635,35 +690,55 @@ retry: count = region->stat.st_nlockers;
child = SH_LIST_FIRST(&lockerp->child_locker, __db_locker);
if (child != NULL) {
do {
- lp = SH_LIST_FIRST(&child->heldby, __db_lock);
+c_retry: lp = SH_LIST_FIRST(&child->heldby, __db_lock);
+ if (SH_LIST_EMPTY(&child->heldby) || lp == NULL)
+ goto c_next;
+
+ ndx = lp->indx;
+ OBJECT_LOCK_NDX(lt, ndx);
+ if (lp != SH_LIST_FIRST(
+ &child->heldby, __db_lock) ||
+ ndx != lp->indx) {
+ OBJECT_UNLOCK(lt, ndx);
+ goto c_retry;
+ }
+
if (lp != NULL &&
lp->status == DB_LSTAT_WAITING) {
id_array[id].last_locker_id = child->id;
goto get_lock;
+ } else {
+ OBJECT_UNLOCK(lt, ndx);
}
- child = SH_LIST_NEXT(
+c_next: child = SH_LIST_NEXT(
child, child_link, __db_locker);
} while (child != NULL);
}
- lp = SH_LIST_FIRST(&lockerp->heldby, __db_lock);
- if (lp != NULL) {
+
+l_retry: lp = SH_LIST_FIRST(&lockerp->heldby, __db_lock);
+ if (!SH_LIST_EMPTY(&lockerp->heldby) && lp != NULL) {
+ ndx = lp->indx;
+ OBJECT_LOCK_NDX(lt, ndx);
+ if (lp != SH_LIST_FIRST(&lockerp->heldby, __db_lock) ||
+ lp->indx != ndx) {
+ OBJECT_UNLOCK(lt, ndx);
+ goto l_retry;
+ }
id_array[id].last_locker_id = lockerp->id;
get_lock: id_array[id].last_lock = R_OFFSET(&lt->reginfo, lp);
id_array[id].last_obj = lp->obj;
lo = (DB_LOCKOBJ *)((u_int8_t *)lp + lp->obj);
+ id_array[id].last_ndx = lo->indx;
pptr = SH_DBT_PTR(&lo->lockobj);
if (lo->lockobj.size >= sizeof(db_pgno_t))
memcpy(&id_array[id].pgno,
pptr, sizeof(db_pgno_t));
else
id_array[id].pgno = 0;
+ OBJECT_UNLOCK(lt, ndx);
}
}
-
- /*
- * Pass complete, reset the deadlock detector bit.
- */
- region->need_dd = 0;
+ UNLOCK_LOCKERS(dbenv, region);
/*
* Now we can release everything except the bitmap matrix that we
@@ -674,12 +749,8 @@ get_lock: id_array[id].last_lock = R_OFFSET(&lt->reginfo, lp);
*bmp = bitmap;
*allocp = nentries;
__os_free(dbenv, tmpmap);
-done: if (LOCK_TIME_ISVALID(&region->next_timeout)) {
- if (LOCK_TIME_ISMAX(&min_timeout))
- LOCK_SET_TIME_INVALID(&region->next_timeout);
- else
- region->next_timeout = min_timeout;
- }
+done: if (timespecisset(&region->next_timeout))
+ region->next_timeout = min_timeout;
return (0);
}
@@ -760,7 +831,6 @@ __dd_abort(dbenv, info, statusp)
DB_LOCKOBJ *sh_obj;
DB_LOCKREGION *region;
DB_LOCKTAB *lt;
- u_int32_t ndx;
int ret;
*statusp = 0;
@@ -769,15 +839,16 @@ __dd_abort(dbenv, info, statusp)
region = lt->reginfo.primary;
ret = 0;
+ /* We must lock so this locker cannot go away while we abort it. */
LOCK_SYSTEM_LOCK(dbenv);
+ LOCK_LOCKERS(dbenv, region);
/*
* Get the locker. If it's gone or was aborted while we were
* detecting, return that.
*/
- LOCKER_LOCK(lt, region, info->last_locker_id, ndx);
- if ((ret = __lock_getlocker(lt,
- info->last_locker_id, ndx, 0, &lockerp)) != 0)
+ if ((ret = __lock_getlocker_int(lt,
+ info->last_locker_id, 0, &lockerp)) != 0)
goto err;
if (lockerp == NULL || F_ISSET(lockerp, DB_LOCKER_INABORT)) {
*statusp = DB_ALREADY_ABORTED;
@@ -787,22 +858,24 @@ __dd_abort(dbenv, info, statusp)
/*
* Find the locker's last lock. It is possible for this lock to have
* been freed, either though a timeout or another detector run.
+ * First lock the lock object so it is stable.
*/
+
+ OBJECT_LOCK_NDX(lt, info->last_ndx);
if ((lockp = SH_LIST_FIRST(&lockerp->heldby, __db_lock)) == NULL) {
*statusp = DB_ALREADY_ABORTED;
- goto out;
+ goto done;
}
if (R_OFFSET(&lt->reginfo, lockp) != info->last_lock ||
- lockp->holder != lockerp->id ||
+ lockp->holder != R_OFFSET(&lt->reginfo, lockerp) ||
lockp->obj != info->last_obj || lockp->status != DB_LSTAT_WAITING) {
*statusp = DB_ALREADY_ABORTED;
- goto out;
+ goto done;
}
sh_obj = (DB_LOCKOBJ *)((u_int8_t *)lockp + lockp->obj);
/* Abort lock, take it off list, and wake up this lock. */
- SHOBJECT_LOCK(lt, region, sh_obj, ndx);
lockp->status = DB_LSTAT_ABORTED;
SH_TAILQ_REMOVE(&sh_obj->waiters, lockp, links, __db_lock);
@@ -811,16 +884,20 @@ __dd_abort(dbenv, info, statusp)
* it from dd_objs, or it is not empty, in which case we need to
* do promotion.
*/
- if (SH_TAILQ_FIRST(&sh_obj->waiters, __db_lock) == NULL)
+ if (SH_TAILQ_FIRST(&sh_obj->waiters, __db_lock) == NULL) {
+ LOCK_OBJECTS(dbenv, region);
SH_TAILQ_REMOVE(&region->dd_objs,
sh_obj, dd_links, __db_lockobj);
- else
+ UNLOCK_OBJECTS(dbenv, region);
+ } else
ret = __lock_promote(lt, sh_obj, NULL, 0);
MUTEX_UNLOCK(dbenv, lockp->mtx_lock);
- region->stat.st_ndeadlocks++;
+ STAT(region->stat.st_ndeadlocks++);
+done: OBJECT_UNLOCK(lt, info->last_ndx);
err:
out: LOCK_SYSTEM_UNLOCK(dbenv);
+ UNLOCK_LOCKERS(dbenv, region);
return (ret);
}
diff --git a/db/lock/lock_failchk.c b/db/lock/lock_failchk.c
index 55f729694..c7172daca 100644
--- a/db/lock/lock_failchk.c
+++ b/db/lock/lock_failchk.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2005-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2005,2007 Oracle. All rights reserved.
*
- * $Id: lock_failchk.c,v 12.9 2006/08/24 14:46:11 bostic Exp $
+ * $Id: lock_failchk.c,v 12.13 2007/05/17 15:15:43 bostic Exp $
*/
#include "db_config.h"
@@ -35,6 +34,7 @@ __lock_failchk(dbenv)
lrp = lt->reginfo.primary;
retry: LOCK_SYSTEM_LOCK(dbenv);
+ LOCK_LOCKERS(dbenv, lrp);
ret = 0;
for (i = 0; i < lrp->locker_t_size; i++)
@@ -71,10 +71,11 @@ retry: LOCK_SYSTEM_LOCK(dbenv);
(u_long)lip->id, dbenv->thread_id_string(
dbenv, lip->pid, lip->tid, buf));
LOCK_SYSTEM_UNLOCK(dbenv);
+ UNLOCK_LOCKERS(dbenv, lrp);
memset(&request, 0, sizeof(request));
request.op = DB_LOCK_PUT_ALL;
- if ((ret = __lock_vec(
- dbenv, lip->id, 0, &request, 1, NULL)) != 0)
+ if ((ret = __lock_vec(dbenv,
+ lip, 0, &request, 1, NULL)) != 0)
return (ret);
/*
@@ -84,12 +85,13 @@ retry: LOCK_SYSTEM_LOCK(dbenv);
* but we assume the dead thread will never release
* it.
*/
- if ((ret = __lock_freefamilylocker(lt, lip->id)) != 0)
+ if ((ret = __lock_freefamilylocker(lt, lip)) != 0)
return (ret);
goto retry;
}
LOCK_SYSTEM_UNLOCK(dbenv);
+ UNLOCK_LOCKERS(dbenv, lrp);
return (ret);
}
diff --git a/db/lock/lock_id.c b/db/lock/lock_id.c
index 0e9fb14dd..4ae36d5ac 100644
--- a/db/lock/lock_id.c
+++ b/db/lock/lock_id.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: lock_id.c,v 12.16 2006/08/24 14:46:11 bostic Exp $
+ * $Id: lock_id.c,v 12.24 2007/05/17 17:18:00 bostic Exp $
*/
#include "db_config.h"
@@ -52,7 +51,7 @@ __lock_id(dbenv, idp, lkp)
DB_LOCKER *lk;
DB_LOCKTAB *lt;
DB_LOCKREGION *region;
- u_int32_t id, *ids, locker_ndx;
+ u_int32_t id, *ids;
int nids, ret;
lt = dbenv->lk_handle;
@@ -72,6 +71,8 @@ __lock_id(dbenv, idp, lkp)
* Our current valid range can span the maximum valid value, so check
* for it and wrap manually.
*/
+ LOCK_LOCKERS(dbenv, region);
+
if (region->stat.st_id == DB_LOCK_MAXID &&
region->stat.st_cur_maxid != DB_LOCK_MAXID)
region->stat.st_id = DB_LOCK_INVALIDID;
@@ -92,10 +93,10 @@ __lock_id(dbenv, idp, lkp)
id = ++region->stat.st_id;
/* Allocate a locker for this id. */
- LOCKER_LOCK(lt, region, id, locker_ndx);
- ret = __lock_getlocker(lt, id, locker_ndx, 1, &lk);
+ ret = __lock_getlocker_int(lt, id, 1, &lk);
err: LOCK_SYSTEM_UNLOCK(dbenv);
+ UNLOCK_LOCKERS(dbenv, region);
if (idp)
*idp = id;
@@ -107,14 +108,17 @@ err: LOCK_SYSTEM_UNLOCK(dbenv);
/*
* __lock_set_thread_id --
* Set the thread_id in an existing locker.
- * PUBLIC: void __lock_set_thread_id __P((DB_LOCKER *, pid_t, db_threadid_t));
+ * PUBLIC: void __lock_set_thread_id __P((void *, pid_t, db_threadid_t));
*/
void
-__lock_set_thread_id(lref, pid, tid)
- DB_LOCKER *lref;
+__lock_set_thread_id(lref_arg, pid, tid)
+ void *lref_arg;
pid_t pid;
db_threadid_t tid;
{
+ DB_LOCKER *lref;
+
+ lref = lref_arg;
lref->pid = pid;
lref->tid = tid;
}
@@ -130,16 +134,38 @@ __lock_id_free_pp(dbenv, id)
DB_ENV *dbenv;
u_int32_t id;
{
+ DB_LOCKER *sh_locker;
+ DB_LOCKREGION *region;
+ DB_LOCKTAB *lt;
DB_THREAD_INFO *ip;
- int ret;
+ int handle_check, ret, t_ret;
PANIC_CHECK(dbenv);
ENV_REQUIRES_CONFIG(dbenv,
dbenv->lk_handle, "DB_ENV->lock_id_free", DB_INIT_LOCK);
ENV_ENTER(dbenv, ip);
- REPLICATION_WRAP(dbenv, (__lock_id_free(dbenv, id)), ret);
- ENV_LEAVE(dbenv, ip);
+ /* Check for replication block. */
+ handle_check = IS_ENV_REPLICATED(dbenv);
+ if (handle_check && (ret = __env_rep_enter(dbenv, 1)) != 0) {
+ handle_check = 0;
+ goto err;
+ }
+
+ lt = dbenv->lk_handle;
+ region = lt->reginfo.primary;
+
+ LOCK_SYSTEM_LOCK(dbenv);
+ LOCK_LOCKERS(dbenv, region);
+ if ((ret =
+ __lock_getlocker_int(dbenv->lk_handle, id, 0, &sh_locker)) == 0)
+ ret = __lock_freelocker(lt, region, sh_locker);
+ UNLOCK_LOCKERS(dbenv, region);
+ LOCK_SYSTEM_UNLOCK(dbenv);
+
+ if (handle_check && (t_ret = __env_db_rep_exit(dbenv)) != 0 && ret == 0)
+ ret = t_ret;
+err: ENV_LEAVE(dbenv, ip);
return (ret);
}
@@ -147,36 +173,20 @@ __lock_id_free_pp(dbenv, id)
* __lock_id_free --
* Free a locker id.
*
- * PUBLIC: int __lock_id_free __P((DB_ENV *, u_int32_t));
+ * PUBLIC: int __lock_id_free __P((DB_ENV *, DB_LOCKER *));
*/
int
-__lock_id_free(dbenv, id)
+__lock_id_free(dbenv, sh_locker)
DB_ENV *dbenv;
- u_int32_t id;
-{
DB_LOCKER *sh_locker;
+{
DB_LOCKTAB *lt;
DB_LOCKREGION *region;
- u_int32_t locker_ndx;
int ret;
- PANIC_CHECK(dbenv);
- ENV_REQUIRES_CONFIG(dbenv,
- dbenv->lk_handle, "DB_ENV->lock_id_free", DB_INIT_LOCK);
-
lt = dbenv->lk_handle;
region = lt->reginfo.primary;
-
- LOCK_SYSTEM_LOCK(dbenv);
- LOCKER_LOCK(lt, region, id, locker_ndx);
- if ((ret = __lock_getlocker(lt, id, locker_ndx, 0, &sh_locker)) != 0)
- goto err;
-
- if (sh_locker == NULL) {
- __db_errx(dbenv, "Unknown locker ID: %lx", (u_long)id);
- ret = EINVAL;
- goto err;
- }
+ ret = 0;
if (sh_locker->nlocks != 0) {
__db_errx(dbenv, "Locker still has locks");
@@ -184,9 +194,13 @@ __lock_id_free(dbenv, id)
goto err;
}
- __lock_freelocker(lt, region, sh_locker, locker_ndx);
+ LOCK_SYSTEM_LOCK(dbenv);
+ LOCK_LOCKERS(dbenv, region);
+ ret = __lock_freelocker(lt, region, sh_locker);
+ UNLOCK_LOCKERS(dbenv, region);
+ LOCK_SYSTEM_UNLOCK(dbenv);
-err: LOCK_SYSTEM_UNLOCK(dbenv);
+err:
return (ret);
}
@@ -222,25 +236,54 @@ __lock_id_set(dbenv, cur_id, max_id)
* indicates if the locker should be created if it doesn't exist in
* the table.
*
- * This must be called with the locker bucket locked.
+ * This must be called with the locker mutex lock if create == 1.
*
* PUBLIC: int __lock_getlocker __P((DB_LOCKTAB *,
- * PUBLIC: u_int32_t, u_int32_t, int, DB_LOCKER **));
+ * PUBLIC: u_int32_t, int, DB_LOCKER **));
+ * PUBLIC: int __lock_getlocker_int __P((DB_LOCKTAB *,
+ * PUBLIC: u_int32_t, int, DB_LOCKER **));
*/
int
-__lock_getlocker(lt, locker, indx, create, retp)
+__lock_getlocker(lt, locker, create, retp)
DB_LOCKTAB *lt;
- u_int32_t locker, indx;
+ u_int32_t locker;
+ int create;
+ DB_LOCKER **retp;
+{
+ DB_ENV *dbenv;
+ DB_LOCKREGION *region;
+ int ret;
+
+ COMPQUIET(region, NULL);
+ dbenv = lt->dbenv;
+ region = lt->reginfo.primary;
+
+ LOCK_SYSTEM_LOCK(dbenv);
+ LOCK_LOCKERS(dbenv, region);
+ ret = __lock_getlocker_int(lt, locker, create, retp);
+ UNLOCK_LOCKERS(dbenv, region);
+ LOCK_SYSTEM_UNLOCK(dbenv);
+
+ return (ret);
+}
+
+int
+__lock_getlocker_int(lt, locker, create, retp)
+ DB_LOCKTAB *lt;
+ u_int32_t locker;
int create;
DB_LOCKER **retp;
{
DB_ENV *dbenv;
DB_LOCKER *sh_locker;
DB_LOCKREGION *region;
+ u_int32_t indx;
dbenv = lt->dbenv;
region = lt->reginfo.primary;
+ LOCKER_HASH(lt, region, locker, indx);
+
/*
* If we find the locker, then we can just return it. If we don't find
* the locker, then we need to create it.
@@ -255,8 +298,11 @@ __lock_getlocker(lt, locker, indx, create, retp)
return (__lock_nomem(dbenv, "locker entries"));
SH_TAILQ_REMOVE(
&region->free_lockers, sh_locker, links, __db_locker);
- if (++region->stat.st_nlockers > region->stat.st_maxnlockers)
+ ++region->stat.st_nlockers;
+#ifdef HAVE_STATISTICS
+ if (region->stat.st_nlockers > region->stat.st_maxnlockers)
region->stat.st_maxnlockers = region->stat.st_nlockers;
+#endif
sh_locker->id = locker;
dbenv->thread_id(dbenv, &sh_locker->pid, &sh_locker->tid);
@@ -269,8 +315,8 @@ __lock_getlocker(lt, locker, indx, create, retp)
sh_locker->nlocks = 0;
sh_locker->nwrites = 0;
sh_locker->lk_timeout = 0;
- LOCK_SET_TIME_INVALID(&sh_locker->tx_expire);
- LOCK_SET_TIME_INVALID(&sh_locker->lk_expire);
+ timespecclear(&sh_locker->tx_expire);
+ timespecclear(&sh_locker->lk_expire);
SH_TAILQ_INSERT_HEAD(
&lt->locker_tab[indx], sh_locker, links, __db_locker);
@@ -296,16 +342,16 @@ __lock_addfamilylocker(dbenv, pid, id)
DB_LOCKER *lockerp, *mlockerp;
DB_LOCKREGION *region;
DB_LOCKTAB *lt;
- u_int32_t ndx;
int ret;
+ COMPQUIET(region, NULL);
lt = dbenv->lk_handle;
region = lt->reginfo.primary;
LOCK_SYSTEM_LOCK(dbenv);
+ LOCK_LOCKERS(dbenv, region);
/* get/create the parent locker info */
- LOCKER_LOCK(lt, region, pid, ndx);
- if ((ret = __lock_getlocker(lt, pid, ndx, 1, &mlockerp)) != 0)
+ if ((ret = __lock_getlocker_int(lt, pid, 1, &mlockerp)) != 0)
goto err;
/*
@@ -315,8 +361,7 @@ __lock_addfamilylocker(dbenv, pid, id)
* we manipulate it, nor can another child in the
* family be created at the same time.
*/
- LOCKER_LOCK(lt, region, id, ndx);
- if ((ret = __lock_getlocker(lt, id, ndx, 1, &lockerp)) != 0)
+ if ((ret = __lock_getlocker_int(lt, id, 1, &lockerp)) != 0)
goto err;
/* Point to our parent. */
@@ -339,6 +384,7 @@ __lock_addfamilylocker(dbenv, pid, id)
&mlockerp->child_locker, lockerp, child_link, __db_locker);
err: LOCK_SYSTEM_UNLOCK(dbenv);
+ UNLOCK_LOCKERS(dbenv, region);
return (ret);
}
@@ -349,28 +395,25 @@ err: LOCK_SYSTEM_UNLOCK(dbenv);
*
* This must be called without the locker bucket locked.
*
- * PUBLIC: int __lock_freefamilylocker __P((DB_LOCKTAB *, u_int32_t));
+ * PUBLIC: int __lock_freefamilylocker __P((DB_LOCKTAB *, DB_LOCKER *));
*/
int
-__lock_freefamilylocker(lt, locker)
+__lock_freefamilylocker(lt, sh_locker)
DB_LOCKTAB *lt;
- u_int32_t locker;
+ DB_LOCKER *sh_locker;
{
DB_ENV *dbenv;
- DB_LOCKER *sh_locker;
DB_LOCKREGION *region;
- u_int32_t indx;
int ret;
dbenv = lt->dbenv;
region = lt->reginfo.primary;
- LOCK_SYSTEM_LOCK(dbenv);
- LOCKER_LOCK(lt, region, locker, indx);
+ if (sh_locker == NULL)
+ return (0);
- if ((ret = __lock_getlocker(lt,
- locker, indx, 0, &sh_locker)) != 0 || sh_locker == NULL)
- goto err;
+ LOCK_SYSTEM_LOCK(dbenv);
+ LOCK_LOCKERS(dbenv, region);
if (SH_LIST_FIRST(&sh_locker->heldby, __db_lock) != NULL) {
ret = EINVAL;
@@ -382,9 +425,10 @@ __lock_freefamilylocker(lt, locker)
if (sh_locker->master_locker != INVALID_ROFF)
SH_LIST_REMOVE(sh_locker, child_link, __db_locker);
- __lock_freelocker(lt, region, sh_locker, indx);
+ ret = __lock_freelocker(lt, region, sh_locker);
err: LOCK_SYSTEM_UNLOCK(dbenv);
+ UNLOCK_LOCKERS(dbenv, region);
return (ret);
}
@@ -393,20 +437,22 @@ err: LOCK_SYSTEM_UNLOCK(dbenv);
* Common code for deleting a locker; must be called with the
* locker bucket locked.
*
- * PUBLIC: void __lock_freelocker
- * PUBLIC: __P((DB_LOCKTAB *, DB_LOCKREGION *, DB_LOCKER *, u_int32_t));
+ * PUBLIC: int __lock_freelocker
+ * PUBLIC: __P((DB_LOCKTAB *, DB_LOCKREGION *, DB_LOCKER *));
*/
-void
-__lock_freelocker(lt, region, sh_locker, indx)
+int
+__lock_freelocker(lt, region, sh_locker)
DB_LOCKTAB *lt;
DB_LOCKREGION *region;
DB_LOCKER *sh_locker;
- u_int32_t indx;
{
+ u_int32_t indx;
+ LOCKER_HASH(lt, region, sh_locker->id, indx);
SH_TAILQ_REMOVE(&lt->locker_tab[indx], sh_locker, links, __db_locker);
SH_TAILQ_INSERT_HEAD(
&region->free_lockers, sh_locker, links, __db_locker);
SH_TAILQ_REMOVE(&region->lockers, sh_locker, ulinks, __db_locker);
region->stat.st_nlockers--;
+ return (0);
}
diff --git a/db/lock/lock_list.c b/db/lock/lock_list.c
index ab1db32e0..fac963fef 100644
--- a/db/lock/lock_list.c
+++ b/db/lock/lock_list.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: lock_list.c,v 12.9 2006/08/24 14:46:11 bostic Exp $
+ * $Id: lock_list.c,v 12.12 2007/05/17 15:15:43 bostic Exp $
*/
#include "db_config.h"
@@ -214,13 +213,14 @@ not_ilock: size = nfid * sizeof(DB_LOCK_ILOCK);
}
/*
- * PUBLIC: int __lock_get_list __P((DB_ENV *, u_int32_t, u_int32_t,
+ * PUBLIC: int __lock_get_list __P((DB_ENV *, DB_LOCKER *, u_int32_t,
* PUBLIC: db_lockmode_t, DBT *));
*/
int
__lock_get_list(dbenv, locker, flags, lock_mode, list)
DB_ENV *dbenv;
- u_int32_t locker, flags;
+ DB_LOCKER *locker;
+ u_int32_t flags;
db_lockmode_t lock_mode;
DBT *list;
{
diff --git a/db/lock/lock_method.c b/db/lock/lock_method.c
index 0ca08dc01..b21760aaa 100644
--- a/db/lock/lock_method.c
+++ b/db/lock/lock_method.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: lock_method.c,v 12.13 2006/08/24 14:46:11 bostic Exp $
+ * $Id: lock_method.c,v 12.17 2007/05/17 15:15:43 bostic Exp $
*/
#include "db_config.h"
@@ -13,13 +12,13 @@
#include "dbinc/lock.h"
/*
- * __lock_dbenv_create --
+ * __lock_env_create --
* Lock specific creation of the DB_ENV structure.
*
- * PUBLIC: int __lock_dbenv_create __P((DB_ENV *));
+ * PUBLIC: int __lock_env_create __P((DB_ENV *));
*/
int
-__lock_dbenv_create(dbenv)
+__lock_env_create(dbenv)
DB_ENV *dbenv;
{
/*
@@ -36,13 +35,13 @@ __lock_dbenv_create(dbenv)
}
/*
- * __lock_dbenv_destroy --
+ * __lock_env_destroy --
* Lock specific destruction of the DB_ENV structure.
*
- * PUBLIC: void __lock_dbenv_destroy __P((DB_ENV *));
+ * PUBLIC: void __lock_env_destroy __P((DB_ENV *));
*/
void
-__lock_dbenv_destroy(dbenv)
+__lock_env_destroy(dbenv)
DB_ENV *dbenv;
{
if (dbenv->lk_conflicts != NULL) {
@@ -132,9 +131,9 @@ __lock_get_lk_detect(dbenv, lk_detectp)
if (LOCKING_ON(dbenv)) {
lt = dbenv->lk_handle;
- LOCK_SYSTEM_LOCK(dbenv);
+ LOCK_REGION_LOCK(dbenv);
*lk_detectp = ((DB_LOCKREGION *)lt->reginfo.primary)->detect;
- LOCK_SYSTEM_UNLOCK(dbenv);
+ LOCK_REGION_UNLOCK(dbenv);
} else
*lk_detectp = dbenv->lk_detect;
return (0);
@@ -179,7 +178,7 @@ __lock_set_lk_detect(dbenv, lk_detect)
if (LOCKING_ON(dbenv)) {
lt = dbenv->lk_handle;
region = lt->reginfo.primary;
- LOCK_SYSTEM_LOCK(dbenv);
+ LOCK_REGION_LOCK(dbenv);
/*
* Check for incompatible automatic deadlock detection requests.
* There are scenarios where changing the detector configuration
@@ -198,7 +197,7 @@ __lock_set_lk_detect(dbenv, lk_detect)
} else
if (region->detect == DB_LOCK_NORUN)
region->detect = lk_detect;
- LOCK_SYSTEM_UNLOCK(dbenv);
+ LOCK_REGION_UNLOCK(dbenv);
} else
dbenv->lk_detect = lk_detect;
@@ -337,7 +336,7 @@ __lock_get_env_timeout(dbenv, timeoutp, flag)
if (LOCKING_ON(dbenv)) {
lt = dbenv->lk_handle;
region = lt->reginfo.primary;
- LOCK_SYSTEM_LOCK(dbenv);
+ LOCK_REGION_LOCK(dbenv);
switch (flag) {
case DB_SET_LOCK_TIMEOUT:
*timeoutp = region->lk_timeout;
@@ -349,7 +348,7 @@ __lock_get_env_timeout(dbenv, timeoutp, flag)
ret = 1;
break;
}
- LOCK_SYSTEM_UNLOCK(dbenv);
+ LOCK_REGION_UNLOCK(dbenv);
} else
switch (flag) {
case DB_SET_LOCK_TIMEOUT:
@@ -392,7 +391,7 @@ __lock_set_env_timeout(dbenv, timeout, flags)
if (LOCKING_ON(dbenv)) {
lt = dbenv->lk_handle;
region = lt->reginfo.primary;
- LOCK_SYSTEM_LOCK(dbenv);
+ LOCK_REGION_LOCK(dbenv);
switch (flags) {
case DB_SET_LOCK_TIMEOUT:
region->lk_timeout = timeout;
@@ -404,7 +403,7 @@ __lock_set_env_timeout(dbenv, timeout, flags)
ret = 1;
break;
}
- LOCK_SYSTEM_UNLOCK(dbenv);
+ LOCK_REGION_UNLOCK(dbenv);
} else
switch (flags) {
case DB_SET_LOCK_TIMEOUT:
diff --git a/db/lock/lock_region.c b/db/lock/lock_region.c
index c3a1b401d..ece4e2e6f 100644
--- a/db/lock/lock_region.c
+++ b/db/lock/lock_region.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: lock_region.c,v 12.11 2006/08/24 14:46:11 bostic Exp $
+ * $Id: lock_region.c,v 12.18 2007/05/17 15:15:43 bostic Exp $
*/
#include "db_config.h"
@@ -53,11 +52,12 @@ static const u_int8_t db_cdb_conflicts[] = {
* __lock_open --
* Internal version of lock_open: only called from DB_ENV->open.
*
- * PUBLIC: int __lock_open __P((DB_ENV *));
+ * PUBLIC: int __lock_open __P((DB_ENV *, int));
*/
int
-__lock_open(dbenv)
+__lock_open(dbenv, create_ok)
DB_ENV *dbenv;
+ int create_ok;
{
DB_LOCKREGION *region;
DB_LOCKTAB *lt;
@@ -76,10 +76,10 @@ __lock_open(dbenv)
lt->reginfo.type = REGION_TYPE_LOCK;
lt->reginfo.id = INVALID_REGION_ID;
lt->reginfo.flags = REGION_JOIN_OK;
- if (F_ISSET(dbenv, DB_ENV_CREATE))
+ if (create_ok)
F_SET(&lt->reginfo, REGION_CREATE_OK);
size = __lock_region_size(dbenv);
- if ((ret = __db_r_attach(dbenv, &lt->reginfo, size)) != 0)
+ if ((ret = __env_region_attach(dbenv, &lt->reginfo, size)) != 0)
goto err;
/* If we created the region, initialize it. */
@@ -94,6 +94,10 @@ __lock_open(dbenv)
/* Set remaining pointers into region. */
lt->conflicts = R_ADDR(&lt->reginfo, region->conf_off);
lt->obj_tab = R_ADDR(&lt->reginfo, region->obj_off);
+ lt->obj_stat = R_ADDR(&lt->reginfo, region->stat_off);
+#ifdef HAVE_FINE_GRAINED_LOCK_MANAGER
+ lt->obj_mtx = R_ADDR(&lt->reginfo, region->mtx_off);
+#endif
lt->locker_tab = R_ADDR(&lt->reginfo, region->locker_off);
dbenv->lk_handle = lt;
@@ -139,9 +143,10 @@ __lock_open(dbenv)
err: dbenv->lk_handle = NULL;
if (lt->reginfo.addr != NULL) {
- if (region_locked)
+ if (region_locked) {
LOCK_SYSTEM_UNLOCK(dbenv);
- (void)__db_r_detach(dbenv, &lt->reginfo, 0);
+ }
+ (void)__env_region_detach(dbenv, &lt->reginfo, 0);
}
__os_free(dbenv, lt);
@@ -162,12 +167,15 @@ __lock_region_init(dbenv, lt)
DB_LOCKER *lidp;
DB_LOCKOBJ *op;
DB_LOCKREGION *region;
+#ifdef HAVE_FINE_GRAINED_LOCK_MANAGER
+ db_mutex_t *mtxp;
+#endif
u_int32_t i;
u_int8_t *addr;
int lk_modes, ret;
- if ((ret = __db_shalloc(&lt->reginfo,
- sizeof(DB_LOCKREGION), 0, &lt->reginfo.primary)) != 0)
+ if ((ret = __env_alloc(&lt->reginfo,
+ sizeof(DB_LOCKREGION), &lt->reginfo.primary)) != 0)
goto mem_err;
lt->reginfo.rp->primary = R_OFFSET(&lt->reginfo, lt->reginfo.primary);
region = lt->reginfo.primary;
@@ -192,7 +200,7 @@ __lock_region_init(dbenv, lt)
}
region->need_dd = 0;
- LOCK_SET_TIME_INVALID(&region->next_timeout);
+ timespecclear(&region->next_timeout);
region->detect = DB_LOCK_NORUN;
region->lk_timeout = dbenv->lk_timeout;
region->tx_timeout = dbenv->tx_timeout;
@@ -207,22 +215,51 @@ __lock_region_init(dbenv, lt)
region->stat.st_nmodes = lk_modes;
/* Allocate room for the conflict matrix and initialize it. */
- if ((ret = __db_shalloc(
- &lt->reginfo, (size_t)(lk_modes * lk_modes), 0, &addr)) != 0)
+ if ((ret = __env_alloc(
+ &lt->reginfo, (size_t)(lk_modes * lk_modes), &addr)) != 0)
goto mem_err;
memcpy(addr, lk_conflicts, (size_t)(lk_modes * lk_modes));
region->conf_off = R_OFFSET(&lt->reginfo, addr);
/* Allocate room for the object hash table and initialize it. */
- if ((ret = __db_shalloc(&lt->reginfo,
- region->object_t_size * sizeof(DB_HASHTAB), 0, &addr)) != 0)
+ if ((ret = __env_alloc(&lt->reginfo,
+ region->object_t_size * sizeof(DB_HASHTAB), &addr)) != 0)
goto mem_err;
__db_hashinit(addr, region->object_t_size);
region->obj_off = R_OFFSET(&lt->reginfo, addr);
+ /* Allocate room for the object hash stats table and initialize it. */
+ if ((ret = __env_alloc(&lt->reginfo,
+ region->object_t_size * sizeof(DB_LOCK_HSTAT), &addr)) != 0)
+ goto mem_err;
+ memset(addr, 0, region->object_t_size * sizeof(DB_LOCK_HSTAT));
+ region->stat_off = R_OFFSET(&lt->reginfo, addr);
+#ifdef HAVE_FINE_GRAINED_LOCK_MANAGER
+ if ((ret = __env_alloc(&lt->reginfo,
+ region->object_t_size * sizeof(db_mutex_t), &mtxp)) != 0)
+ goto mem_err;
+ region->mtx_off = R_OFFSET(&lt->reginfo, mtxp);
+ for (i = 0; i < region->object_t_size; i++) {
+ if ((ret = __mutex_alloc(
+ dbenv, MTX_LOCK_REGION, 0, &mtxp[i])) != 0)
+ return (ret);
+ }
+ if ((ret = __mutex_alloc(
+ dbenv, MTX_LOCK_REGION, 0, &region->mtx_objs)) != 0)
+ return (ret);
+
+ if ((ret = __mutex_alloc(
+ dbenv, MTX_LOCK_REGION, 0, &region->mtx_locks)) != 0)
+ return (ret);
+
+ if ((ret = __mutex_alloc(
+ dbenv, MTX_LOCK_REGION, 0, &region->mtx_lockers)) != 0)
+ return (ret);
+
+#endif
/* Allocate room for the locker hash table and initialize it. */
- if ((ret = __db_shalloc(&lt->reginfo,
- region->locker_t_size * sizeof(DB_HASHTAB), 0, &addr)) != 0)
+ if ((ret = __env_alloc(&lt->reginfo,
+ region->locker_t_size * sizeof(DB_HASHTAB), &addr)) != 0)
goto mem_err;
__db_hashinit(addr, region->locker_t_size);
region->locker_off = R_OFFSET(&lt->reginfo, addr);
@@ -230,8 +267,8 @@ __lock_region_init(dbenv, lt)
/* Initialize locks onto a free list. */
SH_TAILQ_INIT(&region->free_locks);
for (i = 0; i < region->stat.st_maxlocks; ++i) {
- if ((ret = __db_shalloc(&lt->reginfo,
- sizeof(struct __db_lock), 0, &lp)) != 0)
+ if ((ret = __env_alloc(&lt->reginfo,
+ sizeof(struct __db_lock), &lp)) != 0)
goto mem_err;
lp->mtx_lock = MUTEX_INVALID;
lp->gen = 0;
@@ -243,21 +280,22 @@ __lock_region_init(dbenv, lt)
SH_TAILQ_INIT(&region->dd_objs);
SH_TAILQ_INIT(&region->free_objs);
for (i = 0; i < region->stat.st_maxobjects; ++i) {
- if ((ret = __db_shalloc(&lt->reginfo,
- sizeof(DB_LOCKOBJ), 0, &op)) != 0)
+ if ((ret = __env_alloc(&lt->reginfo,
+ sizeof(DB_LOCKOBJ), &op)) != 0)
goto mem_err;
SH_TAILQ_INSERT_HEAD(
&region->free_objs, op, links, __db_lockobj);
+ op->generation = 0;
}
/* Initialize lockers onto a free list. */
SH_TAILQ_INIT(&region->lockers);
SH_TAILQ_INIT(&region->free_lockers);
for (i = 0; i < region->stat.st_maxlockers; ++i) {
- if ((ret = __db_shalloc(&lt->reginfo,
- sizeof(DB_LOCKER), 0, &lidp)) != 0) {
+ if ((ret =
+ __env_alloc(&lt->reginfo, sizeof(DB_LOCKER), &lidp)) != 0) {
mem_err: __db_errx(dbenv,
- "Unable to allocate memory for the lock table");
+ "unable to allocate memory for the lock table");
return (ret);
}
SH_TAILQ_INSERT_HEAD(
@@ -268,13 +306,13 @@ mem_err: __db_errx(dbenv,
}
/*
- * __lock_dbenv_refresh --
+ * __lock_env_refresh --
* Clean up after the lock system on a close or failed open.
*
- * PUBLIC: int __lock_dbenv_refresh __P((DB_ENV *));
+ * PUBLIC: int __lock_env_refresh __P((DB_ENV *));
*/
int
-__lock_dbenv_refresh(dbenv)
+__lock_env_refresh(dbenv)
DB_ENV *dbenv;
{
struct __db_lock *lp;
@@ -296,19 +334,19 @@ __lock_dbenv_refresh(dbenv)
*/
if (F_ISSET(dbenv, DB_ENV_PRIVATE)) {
/* Discard the conflict matrix. */
- __db_shalloc_free(reginfo, R_ADDR(reginfo, lr->conf_off));
+ __env_alloc_free(reginfo, R_ADDR(reginfo, lr->conf_off));
/* Discard the object hash table. */
- __db_shalloc_free(reginfo, R_ADDR(reginfo, lr->obj_off));
+ __env_alloc_free(reginfo, R_ADDR(reginfo, lr->obj_off));
/* Discard the locker hash table. */
- __db_shalloc_free(reginfo, R_ADDR(reginfo, lr->locker_off));
+ __env_alloc_free(reginfo, R_ADDR(reginfo, lr->locker_off));
/* Discard locks. */
while ((lp =
SH_TAILQ_FIRST(&lr->free_locks, __db_lock)) != NULL) {
SH_TAILQ_REMOVE(&lr->free_locks, lp, links, __db_lock);
- __db_shalloc_free(reginfo, lp);
+ __env_alloc_free(reginfo, lp);
}
/* Discard objects. */
@@ -316,7 +354,7 @@ __lock_dbenv_refresh(dbenv)
SH_TAILQ_FIRST(&lr->free_objs, __db_lockobj)) != NULL) {
SH_TAILQ_REMOVE(
&lr->free_objs, lockobj, links, __db_lockobj);
- __db_shalloc_free(reginfo, lockobj);
+ __env_alloc_free(reginfo, lockobj);
}
/* Discard lockers. */
@@ -324,12 +362,12 @@ __lock_dbenv_refresh(dbenv)
SH_TAILQ_FIRST(&lr->free_lockers, __db_locker)) != NULL) {
SH_TAILQ_REMOVE(
&lr->free_lockers, locker, links, __db_locker);
- __db_shalloc_free(reginfo, locker);
+ __env_alloc_free(reginfo, locker);
}
}
/* Detach from the region. */
- ret = __db_r_detach(dbenv, reginfo, 0);
+ ret = __env_region_detach(dbenv, reginfo, 0);
/* Discard DB_LOCKTAB. */
__os_free(dbenv, lt);
@@ -348,7 +386,11 @@ u_int32_t
__lock_region_mutex_count(dbenv)
DB_ENV *dbenv;
{
+#ifdef HAVE_FINE_GRAINED_LOCK_MANAGER
+ return (dbenv->lk_max + __db_tablesize(dbenv->lk_max_objects) + 3);
+#else
return (dbenv->lk_max);
+#endif
}
/*
@@ -363,28 +405,26 @@ __lock_region_size(dbenv)
/*
* Figure out how much space we're going to need. This list should
- * map one-to-one with the __db_shalloc calls in __lock_region_init.
+ * map one-to-one with the __env_alloc calls in __lock_region_init.
*/
retval = 0;
- retval += __db_shalloc_size(sizeof(DB_LOCKREGION), 0);
- retval += __db_shalloc_size(
- (size_t)(dbenv->lk_modes * dbenv->lk_modes), 0);
- retval += __db_shalloc_size(
- __db_tablesize(dbenv->lk_max_objects) * (sizeof(DB_HASHTAB)), 0);
- retval += __db_shalloc_size(
- __db_tablesize(dbenv->lk_max_lockers) * (sizeof(DB_HASHTAB)), 0);
- retval +=
- __db_shalloc_size(sizeof(struct __db_lock), 0) * dbenv->lk_max;
- retval +=
- __db_shalloc_size(sizeof(DB_LOCKOBJ), 0) * dbenv->lk_max_objects;
- retval +=
- __db_shalloc_size(sizeof(DB_LOCKER), 0) * dbenv->lk_max_lockers;
+ retval += __env_alloc_size(sizeof(DB_LOCKREGION));
+ retval += __env_alloc_size((size_t)(dbenv->lk_modes * dbenv->lk_modes));
+ retval += __env_alloc_size(
+ __db_tablesize(dbenv->lk_max_objects) * (sizeof(DB_HASHTAB)));
+ retval += __env_alloc_size(
+ __db_tablesize(dbenv->lk_max_objects) * (sizeof(DB_LOCK_HSTAT)));
+ retval += __env_alloc_size(
+ __db_tablesize(dbenv->lk_max_lockers) * (sizeof(DB_HASHTAB)));
+ retval += __env_alloc_size(sizeof(struct __db_lock)) * dbenv->lk_max;
+ retval += __env_alloc_size(sizeof(DB_LOCKOBJ)) * dbenv->lk_max_objects;
+ retval += __env_alloc_size(sizeof(DB_LOCKER)) * dbenv->lk_max_lockers;
/*
* Include 16 bytes of string space per lock. DB doesn't use it
* because we pre-allocate lock space for DBTs in the structure.
*/
- retval += __db_shalloc_size(dbenv->lk_max * 16, sizeof(size_t));
+ retval += __env_alloc_size(dbenv->lk_max * 16);
/* And we keep getting this wrong, let's be generous. */
retval += retval / 4;
diff --git a/db/lock/lock_stat.c b/db/lock/lock_stat.c
index 90bb57bb7..7fedcd830 100644
--- a/db/lock/lock_stat.c
+++ b/db/lock/lock_stat.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: lock_stat.c,v 12.17 2006/08/24 14:46:11 bostic Exp $
+ * $Id: lock_stat.c,v 12.29 2007/06/22 17:38:24 bostic Exp $
*/
#include "db_config.h"
@@ -67,6 +66,7 @@ __lock_stat(dbenv, statp, flags)
DB_LOCKTAB *lt;
DB_LOCK_STAT *stats, tmp;
int ret;
+ u_int32_t i;
*statp = NULL;
lt = dbenv->lk_handle;
@@ -75,20 +75,58 @@ __lock_stat(dbenv, statp, flags)
return (ret);
/* Copy out the global statistics. */
- LOCK_SYSTEM_LOCK(dbenv);
+ LOCK_REGION_LOCK(dbenv);
region = lt->reginfo.primary;
memcpy(stats, &region->stat, sizeof(*stats));
stats->st_locktimeout = region->lk_timeout;
stats->st_txntimeout = region->tx_timeout;
+ for (i = 0; i < region->object_t_size; i++) {
+ stats->st_nrequests += lt->obj_stat[i].st_nrequests;
+ stats->st_nreleases += lt->obj_stat[i].st_nreleases;
+ stats->st_nupgrade += lt->obj_stat[i].st_nupgrade;
+ stats->st_ndowngrade += lt->obj_stat[i].st_ndowngrade;
+ stats->st_lock_wait += lt->obj_stat[i].st_lock_wait;
+ stats->st_lock_nowait += lt->obj_stat[i].st_lock_nowait;
+ stats->st_nlocktimeouts += lt->obj_stat[i].st_nlocktimeouts;
+ stats->st_ntxntimeouts += lt->obj_stat[i].st_ntxntimeouts;
+ if (stats->st_hash_len < lt->obj_stat[i].st_hash_len)
+ stats->st_hash_len = lt->obj_stat[i].st_hash_len;
+ if (LF_ISSET(DB_STAT_CLEAR)) {
+ memset(&lt->obj_stat[i], 0, sizeof(lt->obj_stat[i]));
+#ifdef HAVE_FINE_GRAINED_LOCK_MANAGER
+ if (!LF_ISSET(DB_STAT_SUBSYSTEM))
+ __mutex_clear(dbenv, lt->obj_mtx[i]);
+#endif
+ }
+ }
+
__mutex_set_wait_info(dbenv, region->mtx_region,
&stats->st_region_wait, &stats->st_region_nowait);
+#ifdef HAVE_FINE_GRAINED_LOCK_MANAGER
+ __mutex_set_wait_info(dbenv, region->mtx_objs,
+ &stats->st_objs_wait, &stats->st_objs_nowait);
+ __mutex_set_wait_info(dbenv, region->mtx_lockers,
+ &stats->st_lockers_wait, &stats->st_lockers_nowait);
+ __mutex_set_wait_info(dbenv, region->mtx_locks,
+ &stats->st_locks_wait, &stats->st_locks_nowait);
+#endif
stats->st_regsize = lt->reginfo.rp->size;
if (LF_ISSET(DB_STAT_CLEAR)) {
tmp = region->stat;
memset(&region->stat, 0, sizeof(region->stat));
- __mutex_clear(dbenv, region->mtx_region);
+ if (!LF_ISSET(DB_STAT_SUBSYSTEM)) {
+ __mutex_clear(dbenv, region->mtx_region);
+#ifdef HAVE_FINE_GRAINED_LOCK_MANAGER
+ __mutex_clear(dbenv, region->mtx_objs);
+ __mutex_clear(dbenv, region->mtx_locks);
+ __mutex_clear(dbenv, region->mtx_lockers);
+#endif
+ for (i = 0; i < region->object_t_size; i++)
+ memset(&lt->obj_stat[i],
+ 0, sizeof(lt->obj_stat[i]));
+ }
region->stat.st_id = tmp.st_id;
region->stat.st_cur_maxid = tmp.st_cur_maxid;
@@ -104,7 +142,7 @@ __lock_stat(dbenv, statp, flags)
region->stat.st_nmodes = tmp.st_nmodes;
}
- LOCK_SYSTEM_UNLOCK(dbenv);
+ LOCK_REGION_UNLOCK(dbenv);
*statp = stats;
return (0);
@@ -156,7 +194,7 @@ __lock_stat_print(dbenv, flags)
int ret;
orig_flags = flags;
- LF_CLR(DB_STAT_CLEAR);
+ LF_CLR(DB_STAT_CLEAR | DB_STAT_SUBSYSTEM);
if (flags == 0 || LF_ISSET(DB_STAT_ALL)) {
ret = __lock_print_stats(dbenv, orig_flags);
if (flags == 0 || ret != 0)
@@ -183,6 +221,55 @@ __lock_print_stats(dbenv, flags)
DB_LOCK_STAT *sp;
int ret;
+#ifdef LOCK_DIAGNOSTIC
+ DB_LOCKTAB *lt;
+ DB_LOCKREGION *region;
+ u_int32_t i;
+#ifdef HAVE_FINE_GRAINED_LOCK_MANAGER
+ u_int32_t wait, nowait;
+#endif
+
+ lt = dbenv->lk_handle;
+ region = lt->reginfo.primary;
+
+ for (i = 0; i < region->object_t_size; i++) {
+ if (lt->obj_stat[i].st_hash_len == 0)
+ continue;
+ __db_dl(dbenv,
+ "Hash bucket", (u_long)i);
+#ifdef HAVE_FINE_GRAINED_LOCK_MANAGER
+ __mutex_set_wait_info(dbenv, lt->obj_mtx[i], &wait, &nowait);
+ __db_dl_pct(dbenv,
+ "The number of hash mutex requests that required waiting",
+ (u_long)wait, DB_PCT(wait, wait + nowait), NULL);
+#endif
+ __db_dl(dbenv,
+ "Maximum hash bucket length",
+ (u_long)lt->obj_stat[i].st_hash_len);
+ __db_dl(dbenv,
+ "Total number of locks requested",
+ (u_long)lt->obj_stat[i].st_nrequests);
+ __db_dl(dbenv,
+ "Total number of locks released",
+ (u_long)lt->obj_stat[i].st_nreleases);
+ __db_dl(dbenv,
+ "Total number of locks upgraded",
+ (u_long)lt->obj_stat[i].st_nupgrade);
+ __db_dl(dbenv,
+ "Total number of locks downgraded",
+ (u_long)lt->obj_stat[i].st_ndowngrade);
+ __db_dl(dbenv,
+ "Lock requests not available due to conflicts, for which we waited",
+ (u_long)lt->obj_stat[i].st_lock_wait);
+ __db_dl(dbenv,
+ "Lock requests not available due to conflicts, for which we did not wait",
+ (u_long)lt->obj_stat[i].st_lock_nowait);
+ __db_dl(dbenv, "Number of locks that have timed out",
+ (u_long)lt->obj_stat[i].st_nlocktimeouts);
+ __db_dl(dbenv, "Number of transactions that have timed out",
+ (u_long)lt->obj_stat[i].st_ntxntimeouts);
+ }
+#endif
if ((ret = __lock_stat(dbenv, &sp, flags)) != 0)
return (ret);
@@ -233,6 +320,20 @@ __lock_print_stats(dbenv, flags)
__db_dlbytes(dbenv, "The size of the lock region",
(u_long)0, (u_long)0, (u_long)sp->st_regsize);
+#ifdef HAVE_FINE_GRAINED_LOCK_MANAGER
+ __db_dl_pct(dbenv,
+ "The number of object allocations that required waiting",
+ (u_long)sp->st_objs_wait, DB_PCT(sp->st_objs_wait,
+ sp->st_objs_wait + sp->st_objs_nowait), NULL);
+ __db_dl_pct(dbenv,
+ "The number of locker allocations that required waiting",
+ (u_long)sp->st_lockers_wait, DB_PCT(sp->st_lockers_wait,
+ sp->st_lockers_wait + sp->st_lockers_nowait), NULL);
+ __db_dl_pct(dbenv,
+ "The number of lock allocations that required waiting",
+ (u_long)sp->st_locks_wait, DB_PCT(sp->st_locks_wait,
+ sp->st_locks_wait + sp->st_locks_nowait), NULL);
+#endif
__db_dl_pct(dbenv,
"The number of region locks that required waiting",
(u_long)sp->st_region_wait, DB_PCT(sp->st_region_wait,
@@ -264,9 +365,8 @@ __lock_print_all(dbenv, flags)
lrp = lt->reginfo.primary;
DB_MSGBUF_INIT(&mb);
- LOCK_SYSTEM_LOCK(dbenv);
-
- __db_print_reginfo(dbenv, &lt->reginfo, "Lock");
+ LOCK_REGION_LOCK(dbenv);
+ __db_print_reginfo(dbenv, &lt->reginfo, "Lock", flags);
if (LF_ISSET(DB_STAT_ALL | DB_STAT_LOCK_PARAMS)) {
__db_msg(dbenv, "%s", DB_GLOBAL(db_line));
@@ -278,18 +378,19 @@ __lock_print_all(dbenv, flags)
STAT_ULONG("obj_off", lrp->obj_off);
STAT_ULONG("locker_off", lrp->locker_off);
STAT_ULONG("need_dd", lrp->need_dd);
- if (LOCK_TIME_ISVALID(&lrp->next_timeout)) {
+ if (timespecisset(&lrp->next_timeout)) {
#ifdef HAVE_STRFTIME
time_t t = (time_t)lrp->next_timeout.tv_sec;
char tbuf[64];
if (strftime(tbuf, sizeof(tbuf),
"%m-%d-%H:%M:%S", localtime(&t)) != 0)
- __db_msg(dbenv, "next_timeout: %s.%lu",
- tbuf, (u_long)lrp->next_timeout.tv_usec);
+ __db_msg(dbenv, "next_timeout: %s.%09lu",
+ tbuf, (u_long)lrp->next_timeout.tv_nsec);
else
#endif
- __db_msg(dbenv, "next_timeout: %lu",
- (u_long)lrp->next_timeout.tv_usec);
+ __db_msg(dbenv, "next_timeout: %lu.%09lu",
+ (u_long)lrp->next_timeout.tv_sec,
+ (u_long)lrp->next_timeout.tv_nsec);
}
}
@@ -303,6 +404,7 @@ __lock_print_all(dbenv, flags)
DB_MSGBUF_FLUSH(dbenv, &mb);
}
}
+ LOCK_REGION_UNLOCK(dbenv);
if (LF_ISSET(DB_STAT_ALL | DB_STAT_LOCK_LOCKERS)) {
__db_msg(dbenv, "%s", DB_GLOBAL(db_line));
@@ -325,7 +427,6 @@ __lock_print_all(dbenv, flags)
__db_msg(dbenv, "%s", "");
}
}
- LOCK_SYSTEM_UNLOCK(dbenv);
return (0);
}
@@ -346,33 +447,35 @@ __lock_dump_locker(dbenv, mbp, lt, lip)
dbenv->thread_id_string(dbenv, lip->pid, lip->tid, buf));
__db_msgadd(
dbenv, mbp, "%s", F_ISSET(lip, DB_LOCKER_DELETED) ? "(D)" : " ");
- if (LOCK_TIME_ISVALID(&lip->tx_expire)) {
+ if (timespecisset(&lip->tx_expire)) {
#ifdef HAVE_STRFTIME
time_t t = (time_t)lip->tx_expire.tv_sec;
char tbuf[64];
if (strftime(tbuf, sizeof(tbuf),
"%m-%d-%H:%M:%S", localtime(&t)) != 0)
- __db_msgadd(dbenv, mbp, "expires %s.%lu",
- tbuf, (u_long)lip->tx_expire.tv_usec);
+ __db_msgadd(dbenv, mbp, "expires %s.%09lu",
+ tbuf, (u_long)lip->tx_expire.tv_nsec);
else
#endif
- __db_msgadd(dbenv, mbp, "expires %lu",
- (u_long)lip->tx_expire.tv_usec);
+ __db_msgadd(dbenv, mbp, "expires %lu.%09lu",
+ (u_long)lip->tx_expire.tv_sec,
+ (u_long)lip->tx_expire.tv_nsec);
}
if (F_ISSET(lip, DB_LOCKER_TIMEOUT))
__db_msgadd(dbenv, mbp, " lk timeout %u", lip->lk_timeout);
- if (LOCK_TIME_ISVALID(&lip->lk_expire)) {
+ if (timespecisset(&lip->lk_expire)) {
#ifdef HAVE_STRFTIME
time_t t = (time_t)lip->lk_expire.tv_sec;
char tbuf[64];
if (strftime(tbuf,
sizeof(tbuf), "%m-%d-%H:%M:%S", localtime(&t)) != 0)
- __db_msgadd(dbenv, mbp, " lk expires %s.%lu",
- tbuf, (u_long)lip->lk_expire.tv_usec);
+ __db_msgadd(dbenv, mbp, " lk expires %s.%09lu",
+ tbuf, (u_long)lip->lk_expire.tv_nsec);
else
#endif
- __db_msgadd(dbenv, mbp, " lk expires %lu",
- (u_long)lip->lk_expire.tv_usec);
+ __db_msgadd(dbenv, mbp, " lk expires %lu.%09lu",
+ (u_long)lip->lk_expire.tv_sec,
+ (u_long)lip->lk_expire.tv_nsec);
}
DB_MSGBUF_FLUSH(dbenv, mbp);
@@ -491,7 +594,8 @@ __lock_printlock(lt, mbp, lp, ispgno)
break;
}
__db_msgadd(dbenv, mbp, "%8lx %-10s %4lu %-7s ",
- (u_long)lp->holder, mode, (u_long)lp->refcount, status);
+ (u_long)((DB_LOCKER *)R_ADDR(&lt->reginfo, lp->holder))->id,
+ mode, (u_long)lp->refcount, status);
lockobj = (DB_LOCKOBJ *)((u_int8_t *)lp + lp->obj);
ptr = SH_DBT_PTR(&lockobj->lockobj);
diff --git a/db/lock/lock_stub.c b/db/lock/lock_stub.c
new file mode 100644
index 000000000..8c210f67e
--- /dev/null
+++ b/db/lock/lock_stub.c
@@ -0,0 +1,491 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
+ *
+ * $Id: lock_stub.c,v 12.7 2007/05/17 15:15:43 bostic Exp $
+ */
+
+#include "db_config.h"
+
+#include "db_int.h"
+#include "dbinc/lock.h"
+
+/*
+ * If the library wasn't compiled with locking support, various routines
+ * aren't available. Stub them here, returning an appropriate error.
+ */
+static int __db_nolocking __P((DB_ENV *));
+
+/*
+ * __db_nolocking --
+ * Error when a Berkeley DB build doesn't include the locking subsystem.
+ */
+static int
+__db_nolocking(dbenv)
+ DB_ENV *dbenv;
+{
+ __db_errx(dbenv,
+ "library build did not include support for locking");
+ return (DB_OPNOTSUP);
+}
+
+int
+__lock_env_create(dbenv)
+ DB_ENV *dbenv;
+{
+ COMPQUIET(dbenv, 0);
+ return (0);
+}
+
+void
+__lock_env_destroy(dbenv)
+ DB_ENV *dbenv;
+{
+ COMPQUIET(dbenv, 0);
+}
+
+int
+__lock_get_lk_conflicts(dbenv, lk_conflictsp, lk_modesp)
+ DB_ENV *dbenv;
+ const u_int8_t **lk_conflictsp;
+ int *lk_modesp;
+{
+ COMPQUIET(lk_conflictsp, NULL);
+ COMPQUIET(lk_modesp, NULL);
+ return (__db_nolocking(dbenv));
+}
+
+int
+__lock_get_lk_detect(dbenv, lk_detectp)
+ DB_ENV *dbenv;
+ u_int32_t *lk_detectp;
+{
+ COMPQUIET(lk_detectp, NULL);
+ return (__db_nolocking(dbenv));
+}
+
+int
+__lock_get_lk_max_lockers(dbenv, lk_maxp)
+ DB_ENV *dbenv;
+ u_int32_t *lk_maxp;
+{
+ COMPQUIET(lk_maxp, NULL);
+ return (__db_nolocking(dbenv));
+}
+
+int
+__lock_get_lk_max_locks(dbenv, lk_maxp)
+ DB_ENV *dbenv;
+ u_int32_t *lk_maxp;
+{
+ COMPQUIET(lk_maxp, NULL);
+ return (__db_nolocking(dbenv));
+}
+
+int
+__lock_get_lk_max_objects(dbenv, lk_maxp)
+ DB_ENV *dbenv;
+ u_int32_t *lk_maxp;
+{
+ COMPQUIET(lk_maxp, NULL);
+ return (__db_nolocking(dbenv));
+}
+
+int
+__lock_get_env_timeout(dbenv, timeoutp, flag)
+ DB_ENV *dbenv;
+ db_timeout_t *timeoutp;
+ u_int32_t flag;
+{
+ COMPQUIET(timeoutp, NULL);
+ COMPQUIET(flag, 0);
+ return (__db_nolocking(dbenv));
+}
+
+int
+__lock_detect_pp(dbenv, flags, atype, abortp)
+ DB_ENV *dbenv;
+ u_int32_t flags, atype;
+ int *abortp;
+{
+ COMPQUIET(flags, 0);
+ COMPQUIET(atype, 0);
+ COMPQUIET(abortp, NULL);
+ return (__db_nolocking(dbenv));
+}
+
+int
+__lock_get_pp(dbenv, locker, flags, obj, lock_mode, lock)
+ DB_ENV *dbenv;
+ u_int32_t locker, flags;
+ const DBT *obj;
+ db_lockmode_t lock_mode;
+ DB_LOCK *lock;
+{
+ COMPQUIET(locker, 0);
+ COMPQUIET(flags, 0);
+ COMPQUIET(obj, NULL);
+ COMPQUIET(lock_mode, 0);
+ COMPQUIET(lock, NULL);
+ return (__db_nolocking(dbenv));
+}
+
+int
+__lock_id_pp(dbenv, idp)
+ DB_ENV *dbenv;
+ u_int32_t *idp;
+{
+ COMPQUIET(idp, NULL);
+ return (__db_nolocking(dbenv));
+}
+
+int
+__lock_id_free_pp(dbenv, id)
+ DB_ENV *dbenv;
+ u_int32_t id;
+{
+ COMPQUIET(id, 0);
+ return (__db_nolocking(dbenv));
+}
+
+int
+__lock_put_pp(dbenv, lock)
+ DB_ENV *dbenv;
+ DB_LOCK *lock;
+{
+ COMPQUIET(lock, NULL);
+ return (__db_nolocking(dbenv));
+}
+
+int
+__lock_stat_pp(dbenv, statp, flags)
+ DB_ENV *dbenv;
+ DB_LOCK_STAT **statp;
+ u_int32_t flags;
+{
+ COMPQUIET(statp, NULL);
+ COMPQUIET(flags, 0);
+ return (__db_nolocking(dbenv));
+}
+
+int
+__lock_stat_print_pp(dbenv, flags)
+ DB_ENV *dbenv;
+ u_int32_t flags;
+{
+ COMPQUIET(flags, 0);
+ return (__db_nolocking(dbenv));
+}
+
+int
+__lock_vec_pp(dbenv, locker, flags, list, nlist, elistp)
+ DB_ENV *dbenv;
+ u_int32_t locker, flags;
+ int nlist;
+ DB_LOCKREQ *list, **elistp;
+{
+ COMPQUIET(locker, 0);
+ COMPQUIET(flags, 0);
+ COMPQUIET(list, NULL);
+ COMPQUIET(nlist, 0);
+ COMPQUIET(elistp, NULL);
+ return (__db_nolocking(dbenv));
+}
+
+int
+__lock_set_lk_conflicts(dbenv, lk_conflicts, lk_modes)
+ DB_ENV *dbenv;
+ u_int8_t *lk_conflicts;
+ int lk_modes;
+{
+ COMPQUIET(lk_conflicts, NULL);
+ COMPQUIET(lk_modes, 0);
+ return (__db_nolocking(dbenv));
+}
+
+int
+__lock_set_lk_detect(dbenv, lk_detect)
+ DB_ENV *dbenv;
+ u_int32_t lk_detect;
+{
+ COMPQUIET(lk_detect, 0);
+ return (__db_nolocking(dbenv));
+}
+
+int
+__lock_set_lk_max_locks(dbenv, lk_max)
+ DB_ENV *dbenv;
+ u_int32_t lk_max;
+{
+ COMPQUIET(lk_max, 0);
+ return (__db_nolocking(dbenv));
+}
+
+int
+__lock_set_lk_max_lockers(dbenv, lk_max)
+ DB_ENV *dbenv;
+ u_int32_t lk_max;
+{
+ COMPQUIET(lk_max, 0);
+ return (__db_nolocking(dbenv));
+}
+
+int
+__lock_set_lk_max_objects(dbenv, lk_max)
+ DB_ENV *dbenv;
+ u_int32_t lk_max;
+{
+ COMPQUIET(lk_max, 0);
+ return (__db_nolocking(dbenv));
+}
+
+int
+__lock_set_env_timeout(dbenv, timeout, flags)
+ DB_ENV *dbenv;
+ db_timeout_t timeout;
+ u_int32_t flags;
+{
+ COMPQUIET(timeout, 0);
+ COMPQUIET(flags, 0);
+ return (__db_nolocking(dbenv));
+}
+
+int
+__lock_open(dbenv, create_ok)
+ DB_ENV *dbenv;
+ int create_ok;
+{
+ COMPQUIET(dbenv, NULL);
+ COMPQUIET(create_ok, 0);
+ return (__db_nolocking(dbenv));
+}
+
+int
+__lock_id_free(dbenv, sh_locker)
+ DB_ENV *dbenv;
+ DB_LOCKER *sh_locker;
+{
+ COMPQUIET(dbenv, NULL);
+ COMPQUIET(sh_locker, 0);
+ return (0);
+}
+
+int
+__lock_env_refresh(dbenv)
+ DB_ENV *dbenv;
+{
+ COMPQUIET(dbenv, NULL);
+ return (0);
+}
+
+int
+__lock_stat_print(dbenv, flags)
+ DB_ENV *dbenv;
+ u_int32_t flags;
+{
+ COMPQUIET(dbenv, NULL);
+ COMPQUIET(flags, 0);
+ return (0);
+}
+
+int
+__lock_put(dbenv, lock)
+ DB_ENV *dbenv;
+ DB_LOCK *lock;
+{
+ COMPQUIET(dbenv, NULL);
+ COMPQUIET(lock, NULL);
+ return (0);
+}
+
+int
+__lock_vec(dbenv, sh_locker, flags, list, nlist, elistp)
+ DB_ENV *dbenv;
+ DB_LOCKER *sh_locker;
+ u_int32_t flags;
+ int nlist;
+ DB_LOCKREQ *list, **elistp;
+{
+ COMPQUIET(dbenv, NULL);
+ COMPQUIET(sh_locker, 0);
+ COMPQUIET(flags, 0);
+ COMPQUIET(list, NULL);
+ COMPQUIET(nlist, 0);
+ COMPQUIET(elistp, NULL);
+ return (0);
+}
+
+int
+__lock_get(dbenv, locker, flags, obj, lock_mode, lock)
+ DB_ENV *dbenv;
+ DB_LOCKER *locker;
+ u_int32_t flags;
+ const DBT *obj;
+ db_lockmode_t lock_mode;
+ DB_LOCK *lock;
+{
+ COMPQUIET(dbenv, NULL);
+ COMPQUIET(locker, NULL);
+ COMPQUIET(flags, 0);
+ COMPQUIET(obj, NULL);
+ COMPQUIET(lock_mode, 0);
+ COMPQUIET(lock, NULL);
+ return (0);
+}
+
+int
+__lock_id(dbenv, idp, lkp)
+ DB_ENV *dbenv;
+ u_int32_t *idp;
+ DB_LOCKER **lkp;
+{
+ COMPQUIET(dbenv, NULL);
+ COMPQUIET(idp, NULL);
+ COMPQUIET(lkp, NULL);
+ return (0);
+}
+
+int
+__lock_inherit_timeout(dbenv, parent, locker)
+ DB_ENV *dbenv;
+ DB_LOCKER *parent, *locker;
+{
+ COMPQUIET(dbenv, NULL);
+ COMPQUIET(parent, NULL);
+ COMPQUIET(locker, NULL);
+ return (0);
+}
+
+int
+__lock_set_timeout(dbenv, locker, timeout, op)
+ DB_ENV *dbenv;
+ DB_LOCKER *locker;
+ db_timeout_t timeout;
+ u_int32_t op;
+{
+ COMPQUIET(dbenv, NULL);
+ COMPQUIET(locker, NULL);
+ COMPQUIET(timeout, 0);
+ COMPQUIET(op, 0);
+ return (0);
+}
+
+int
+__lock_addfamilylocker(dbenv, pid, id)
+ DB_ENV *dbenv;
+ u_int32_t pid, id;
+{
+ COMPQUIET(dbenv, NULL);
+ COMPQUIET(pid, 0);
+ COMPQUIET(id, 0);
+ return (0);
+}
+
+int
+__lock_freefamilylocker(lt, sh_locker)
+ DB_LOCKTAB *lt;
+ DB_LOCKER *sh_locker;
+{
+ COMPQUIET(lt, NULL);
+ COMPQUIET(sh_locker, NULL);
+ return (0);
+}
+
+int
+__lock_downgrade(dbenv, lock, new_mode, flags)
+ DB_ENV *dbenv;
+ DB_LOCK *lock;
+ db_lockmode_t new_mode;
+ u_int32_t flags;
+{
+ COMPQUIET(dbenv, NULL);
+ COMPQUIET(lock, NULL);
+ COMPQUIET(new_mode, 0);
+ COMPQUIET(flags, 0);
+ return (0);
+}
+
+int
+__lock_locker_is_parent(dbenv, locker, child, retp)
+ DB_ENV *dbenv;
+ DB_LOCKER *locker;
+ DB_LOCKER *child;
+ int *retp;
+{
+ COMPQUIET(dbenv, NULL);
+ COMPQUIET(locker, NULL);
+ COMPQUIET(child, NULL);
+
+ *retp = 1;
+ return (0);
+}
+
+void
+__lock_set_thread_id(lref, pid, tid)
+ void *lref;
+ pid_t pid;
+ db_threadid_t tid;
+{
+ COMPQUIET(lref, NULL);
+ COMPQUIET(pid, 0);
+ COMPQUIET(tid, 0);
+}
+
+int
+__lock_failchk(dbenv)
+ DB_ENV *dbenv;
+{
+ COMPQUIET(dbenv, NULL);
+ return (0);
+}
+
+int
+__lock_get_list(dbenv, locker, flags, lock_mode, list)
+ DB_ENV *dbenv;
+ DB_LOCKER *locker;
+ u_int32_t flags;
+ db_lockmode_t lock_mode;
+ DBT *list;
+{
+ COMPQUIET(dbenv, NULL);
+ COMPQUIET(locker, NULL);
+ COMPQUIET(flags, 0);
+ COMPQUIET(lock_mode, 0);
+ COMPQUIET(list, NULL);
+ return (0);
+}
+
+void
+__lock_list_print(dbenv, list)
+ DB_ENV *dbenv;
+ DBT *list;
+{
+ COMPQUIET(dbenv, NULL);
+ COMPQUIET(list, NULL);
+}
+
+int
+__lock_getlocker(lt, locker, create, retp)
+ DB_LOCKTAB *lt;
+ u_int32_t locker;
+ int create;
+ DB_LOCKER **retp;
+{
+ COMPQUIET(lt, NULL);
+ COMPQUIET(locker, 0);
+ COMPQUIET(create, 0);
+ COMPQUIET(retp, NULL);
+ return (__db_nolocking(lt->dbenv));
+}
+
+int
+__lock_id_set(dbenv, cur_id, max_id)
+ DB_ENV *dbenv;
+ u_int32_t cur_id, max_id;
+{
+ COMPQUIET(dbenv, NULL);
+ COMPQUIET(cur_id, 0);
+ COMPQUIET(max_id, 0);
+ return (0);
+}
diff --git a/db/lock/lock_timer.c b/db/lock/lock_timer.c
index 11ccd3036..f81471f1e 100644
--- a/db/lock/lock_timer.c
+++ b/db/lock/lock_timer.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: lock_timer.c,v 12.6 2006/08/24 14:46:11 bostic Exp $
+ * $Id: lock_timer.c,v 12.13 2007/05/17 15:15:43 bostic Exp $
*/
#include "db_config.h"
@@ -13,28 +12,30 @@
#include "dbinc/lock.h"
/*
- * __lock_set_timeout
- * -- set timeout values in shared memory.
+ * __lock_set_timeout --
+ * Set timeout values in shared memory.
*
* This is called from the transaction system. We either set the time that
* this transaction expires or the amount of time a lock for this transaction
* is permitted to wait.
*
- * PUBLIC: int __lock_set_timeout __P(( DB_ENV *,
- * PUBLIC: u_int32_t, db_timeout_t, u_int32_t));
+ * PUBLIC: int __lock_set_timeout __P((DB_ENV *,
+ * PUBLIC: DB_LOCKER *, db_timeout_t, u_int32_t));
*/
int
__lock_set_timeout(dbenv, locker, timeout, op)
DB_ENV *dbenv;
- u_int32_t locker;
+ DB_LOCKER *locker;
db_timeout_t timeout;
u_int32_t op;
{
int ret;
- LOCK_SYSTEM_LOCK(dbenv);
+ if (locker == NULL)
+ return (0);
+ LOCK_REGION_LOCK(dbenv);
ret = __lock_set_timeout_internal(dbenv, locker, timeout, op);
- LOCK_SYSTEM_UNLOCK(dbenv);
+ LOCK_REGION_UNLOCK(dbenv);
return (ret);
}
@@ -47,45 +48,33 @@ __lock_set_timeout(dbenv, locker, timeout, op)
* for this transaction is permitted to wait.
*
* PUBLIC: int __lock_set_timeout_internal
- * PUBLIC: __P((DB_ENV *, u_int32_t, db_timeout_t, u_int32_t));
+ * PUBLIC: __P((DB_ENV *, DB_LOCKER *, db_timeout_t, u_int32_t));
*/
int
-__lock_set_timeout_internal(dbenv, locker, timeout, op)
+__lock_set_timeout_internal(dbenv, sh_locker, timeout, op)
DB_ENV *dbenv;
- u_int32_t locker;
+ DB_LOCKER *sh_locker;
db_timeout_t timeout;
u_int32_t op;
{
- DB_LOCKER *sh_locker;
DB_LOCKREGION *region;
- DB_LOCKTAB *lt;
- u_int32_t locker_ndx;
- int ret;
-
- lt = dbenv->lk_handle;
- region = lt->reginfo.primary;
-
- LOCKER_LOCK(lt, region, locker, locker_ndx);
- ret = __lock_getlocker(lt, locker, locker_ndx, 1, &sh_locker);
-
- if (ret != 0)
- return (ret);
+ region = dbenv->lk_handle->reginfo.primary;
if (op == DB_SET_TXN_TIMEOUT) {
if (timeout == 0)
- LOCK_SET_TIME_INVALID(&sh_locker->tx_expire);
+ timespecclear(&sh_locker->tx_expire);
else
__lock_expires(dbenv, &sh_locker->tx_expire, timeout);
} else if (op == DB_SET_LOCK_TIMEOUT) {
sh_locker->lk_timeout = timeout;
F_SET(sh_locker, DB_LOCKER_TIMEOUT);
} else if (op == DB_SET_TXN_NOW) {
- LOCK_SET_TIME_INVALID(&sh_locker->tx_expire);
+ timespecclear(&sh_locker->tx_expire);
__lock_expires(dbenv, &sh_locker->tx_expire, 0);
sh_locker->lk_expire = sh_locker->tx_expire;
- if (!LOCK_TIME_ISVALID(&region->next_timeout) ||
- LOCK_TIME_GREATER(
- &region->next_timeout, &sh_locker->lk_expire))
+ if (!timespecisset(&region->next_timeout) ||
+ timespeccmp(
+ &region->next_timeout, &sh_locker->lk_expire, >))
region->next_timeout = sh_locker->lk_expire;
} else
return (EINVAL);
@@ -100,105 +89,86 @@ __lock_set_timeout_internal(dbenv, locker, timeout, op)
* return EINVAL if the parent does not exist or did not
* have a current txn timeout set.
*
- * PUBLIC: int __lock_inherit_timeout __P(( DB_ENV *, u_int32_t, u_int32_t));
+ * PUBLIC: int __lock_inherit_timeout __P((DB_ENV *, DB_LOCKER *, DB_LOCKER *));
*/
int
__lock_inherit_timeout(dbenv, parent, locker)
DB_ENV *dbenv;
- u_int32_t parent, locker;
+ DB_LOCKER *parent, *locker;
{
- DB_LOCKER *parent_locker, *sh_locker;
- DB_LOCKREGION *region;
- DB_LOCKTAB *lt;
- u_int32_t locker_ndx;
int ret;
- lt = dbenv->lk_handle;
- region = lt->reginfo.primary;
ret = 0;
- LOCK_SYSTEM_LOCK(dbenv);
-
- /* If the parent does not exist, we are done. */
- LOCKER_LOCK(lt, region, parent, locker_ndx);
- if ((ret = __lock_getlocker(lt,
- parent, locker_ndx, 0, &parent_locker)) != 0)
- goto err;
+ LOCK_REGION_LOCK(dbenv);
/*
* If the parent is not there yet, thats ok. If it
* does not have any timouts set, then avoid creating
* the child locker at this point.
*/
- if (parent_locker == NULL ||
- (LOCK_TIME_ISVALID(&parent_locker->tx_expire) &&
- !F_ISSET(parent_locker, DB_LOCKER_TIMEOUT))) {
+ if (parent == NULL ||
+ (timespecisset(&parent->tx_expire) &&
+ !F_ISSET(parent, DB_LOCKER_TIMEOUT))) {
ret = EINVAL;
- goto done;
- }
-
- LOCKER_LOCK(lt, region, locker, locker_ndx);
- if ((ret = __lock_getlocker(lt,
- locker, locker_ndx, 1, &sh_locker)) != 0)
goto err;
+ }
- sh_locker->tx_expire = parent_locker->tx_expire;
+ locker->tx_expire = parent->tx_expire;
- if (F_ISSET(parent_locker, DB_LOCKER_TIMEOUT)) {
- sh_locker->lk_timeout = parent_locker->lk_timeout;
- F_SET(sh_locker, DB_LOCKER_TIMEOUT);
- if (!LOCK_TIME_ISVALID(&parent_locker->tx_expire))
+ if (F_ISSET(parent, DB_LOCKER_TIMEOUT)) {
+ locker->lk_timeout = parent->lk_timeout;
+ F_SET(locker, DB_LOCKER_TIMEOUT);
+ if (!timespecisset(&parent->tx_expire))
ret = EINVAL;
}
-done:
-err: LOCK_SYSTEM_UNLOCK(dbenv);
+err: LOCK_REGION_UNLOCK(dbenv);
return (ret);
}
/*
* __lock_expires --
- * Set the expire time given the time to live. If timevalp is set then
- * it contains "now". This avoids repeated system calls to get the time.
+ * Set the expire time given the time to live.
*
- * PUBLIC: void __lock_expires __P((DB_ENV *, db_timeval_t *, db_timeout_t));
+ * PUBLIC: void __lock_expires __P((DB_ENV *, db_timespec *, db_timeout_t));
*/
void
-__lock_expires(dbenv, timevalp, timeout)
+__lock_expires(dbenv, timespecp, timeout)
DB_ENV *dbenv;
- db_timeval_t *timevalp;
+ db_timespec *timespecp;
db_timeout_t timeout;
{
- if (!LOCK_TIME_ISVALID(timevalp))
- __os_clock(dbenv, &timevalp->tv_sec, &timevalp->tv_usec);
- if (timeout > 1000000) {
- timevalp->tv_sec += timeout / 1000000;
- timevalp->tv_usec += timeout % 1000000;
- } else
- timevalp->tv_usec += timeout;
+ db_timespec v;
- if (timevalp->tv_usec > 1000000) {
- timevalp->tv_sec++;
- timevalp->tv_usec -= 1000000;
- }
+ /*
+ * If timespecp is set then it contains "now". This avoids repeated
+ * system calls to get the time.
+ */
+ if (!timespecisset(timespecp))
+ __os_gettime(dbenv, timespecp);
+
+ /* Convert the microsecond timeout argument to a timespec. */
+ DB_TIMEOUT_TO_TIMESPEC(timeout, &v);
+
+ /* Add the timeout to "now". */
+ timespecadd(timespecp, &v);
}
/*
* __lock_expired -- determine if a lock has expired.
*
- * PUBLIC: int __lock_expired __P((DB_ENV *, db_timeval_t *, db_timeval_t *));
+ * PUBLIC: int __lock_expired __P((DB_ENV *, db_timespec *, db_timespec *));
*/
int
-__lock_expired(dbenv, now, timevalp)
+__lock_expired(dbenv, now, timespecp)
DB_ENV *dbenv;
- db_timeval_t *now, *timevalp;
+ db_timespec *now, *timespecp;
{
- if (!LOCK_TIME_ISVALID(timevalp))
+ if (!timespecisset(timespecp))
return (0);
- if (!LOCK_TIME_ISVALID(now))
- __os_clock(dbenv, &now->tv_sec, &now->tv_usec);
+ if (!timespecisset(now))
+ __os_gettime(dbenv, now);
- return (now->tv_sec > timevalp->tv_sec ||
- (now->tv_sec == timevalp->tv_sec &&
- now->tv_usec >= timevalp->tv_usec));
+ return (timespeccmp(now, timespecp, >=));
}
diff --git a/db/lock/lock_util.c b/db/lock/lock_util.c
index be5d18626..b12b62ffa 100644
--- a/db/lock/lock_util.c
+++ b/db/lock/lock_util.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: lock_util.c,v 12.7 2006/08/24 14:46:11 bostic Exp $
+ * $Id: lock_util.c,v 12.9 2007/05/17 15:15:43 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/log/log.c b/db/log/log.c
index 825bcf478..91a823e4b 100644
--- a/db/log/log.c
+++ b/db/log/log.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: log.c,v 12.40 2006/08/24 14:46:12 bostic Exp $
+ * $Id: log.c,v 12.54 2007/06/04 21:30:51 sue Exp $
*/
#include "db_config.h"
@@ -23,11 +22,12 @@ static size_t __log_region_size __P((DB_ENV *));
* __log_open --
* Internal version of log_open: only called from DB_ENV->open.
*
- * PUBLIC: int __log_open __P((DB_ENV *));
+ * PUBLIC: int __log_open __P((DB_ENV *, int));
*/
int
-__log_open(dbenv)
+__log_open(dbenv, create_ok)
DB_ENV *dbenv;
+ int create_ok;
{
DB_LOG *dblp;
LOG *lp;
@@ -51,9 +51,9 @@ __log_open(dbenv)
dblp->reginfo.type = REGION_TYPE_LOG;
dblp->reginfo.id = INVALID_REGION_ID;
dblp->reginfo.flags = REGION_JOIN_OK;
- if (F_ISSET(dbenv, DB_ENV_CREATE))
+ if (create_ok)
F_SET(&dblp->reginfo, REGION_CREATE_OK);
- if ((ret = __db_r_attach(
+ if ((ret = __env_region_attach(
dbenv, &dblp->reginfo, __log_region_size(dbenv))) != 0)
goto err;
@@ -121,8 +121,8 @@ __log_open(dbenv)
*/
lp->ready_lsn = lp->lsn;
if (IS_ENV_REPLICATED(dbenv)) {
- if ((ret = __db_shalloc(&dblp->reginfo, MEGABYTE, 0,
- &bulk)) != 0)
+ if ((ret =
+ __env_alloc(&dblp->reginfo, MEGABYTE, &bulk)) != 0)
goto err;
lp->bulk_buf = R_OFFSET(&dblp->reginfo, bulk);
lp->bulk_len = MEGABYTE;
@@ -166,7 +166,7 @@ err: dbenv->lg_handle = NULL;
if (dblp->reginfo.addr != NULL) {
if (region_locked)
LOG_SYSTEM_UNLOCK(dbenv);
- (void)__db_r_detach(dbenv, &dblp->reginfo, 0);
+ (void)__env_region_detach(dbenv, &dblp->reginfo, 0);
}
(void)__mutex_free(dbenv, &dblp->mtx_dbreg);
@@ -197,8 +197,8 @@ __log_init(dbenv, dblp)
__log_check_sizes(dbenv, dbenv->lg_size, dbenv->lg_bsize)) != 0)
return (ret);
- if ((ret = __db_shalloc(&dblp->reginfo,
- sizeof(*lp), 0, &dblp->reginfo.primary)) != 0)
+ if ((ret = __env_alloc(&dblp->reginfo,
+ sizeof(*lp), &dblp->reginfo.primary)) != 0)
goto mem_err;
dblp->reginfo.rp->primary =
R_OFFSET(&dblp->reginfo, dblp->reginfo.primary);
@@ -239,7 +239,7 @@ __log_init(dbenv, dblp)
return (ret);
/* Initialize the buffer. */
- if ((ret = __db_shalloc(&dblp->reginfo, dbenv->lg_bsize, 0, &p)) != 0) {
+ if ((ret = __env_alloc(&dblp->reginfo, dbenv->lg_bsize, &p)) != 0) {
mem_err: __db_errx( dbenv, "unable to allocate log region memory");
return (ret);
}
@@ -343,7 +343,7 @@ __log_recover(dblp)
return (ret);
F_SET(logc, DB_LOG_LOCKED);
memset(&dbt, 0, sizeof(dbt));
- if ((ret = __log_c_get(logc, &lsn, &dbt, DB_SET)) != 0)
+ if ((ret = __logc_get(logc, &lsn, &dbt, DB_SET)) != 0)
goto err;
/*
@@ -351,7 +351,7 @@ __log_recover(dblp)
* turn off error messages.
*/
F_SET(logc, DB_LOG_SILENT_ERR);
- while (__log_c_get(logc, &lsn, &dbt, DB_NEXT) == 0) {
+ while (__logc_get(logc, &lsn, &dbt, DB_NEXT) == 0) {
if (dbt.size < sizeof(u_int32_t))
continue;
memcpy(&rectype, dbt.data, sizeof(u_int32_t));
@@ -372,11 +372,11 @@ __log_recover(dblp)
*/
lp->lsn = lsn;
lp->s_lsn = lsn;
- lp->lsn.offset += logc->c_len;
- lp->s_lsn.offset += logc->c_len;
+ lp->lsn.offset += logc->len;
+ lp->s_lsn.offset += logc->len;
/* Set up the current buffer information, too. */
- lp->len = logc->c_len;
+ lp->len = logc->len;
lp->a_off = 0;
lp->b_off = 0;
lp->w_off = lp->lsn.offset;
@@ -388,7 +388,7 @@ skipsearch:
(u_long)lp->lsn.file, (u_long)lp->lsn.offset);
err: if (logc != NULL)
- (void)__log_c_close(logc);
+ (void)__logc_close(logc);
return (ret);
}
@@ -415,7 +415,7 @@ __log_find(dblp, find_first, valp, statusp)
u_int32_t clv, logval;
int cnt, fcnt, ret;
const char *dir;
- char *c, **names, *p, *q, savech;
+ char *c, **names, *p, *q;
dbenv = dblp->dbenv;
lp = dblp->reginfo.primary;
@@ -439,28 +439,15 @@ __log_find(dblp, find_first, valp, statusp)
/* Find the directory name. */
if ((ret = __log_name(dblp, 1, &p, NULL, 0)) != 0)
return (ret);
- if ((q = __db_rpath(p)) == NULL) {
- COMPQUIET(savech, 0);
+ if ((q = __db_rpath(p)) == NULL)
dir = PATH_DOT;
- } else {
- savech = *q;
+ else {
*q = '\0';
dir = p;
}
/* Get the list of file names. */
- ret = __os_dirlist(dbenv, dir, &names, &fcnt);
-
- /*
- * !!!
- * We overwrote a byte in the string with a nul. Restore the string
- * so that the diagnostic checks in the memory allocation code work
- * and any error messages display the right file name.
- */
- if (q != NULL)
- *q = savech;
-
- if (ret != 0) {
+ if ((ret = __os_dirlist(dbenv, dir, &names, &fcnt)) != 0) {
__db_err(dbenv, ret, "%s", dir);
__os_free(dbenv, p);
return (ret);
@@ -772,13 +759,13 @@ err: if (fname != NULL)
}
/*
- * __log_dbenv_refresh --
+ * __log_env_refresh --
* Clean up after the log system on a close or failed open.
*
- * PUBLIC: int __log_dbenv_refresh __P((DB_ENV *));
+ * PUBLIC: int __log_env_refresh __P((DB_ENV *));
*/
int
-__log_dbenv_refresh(dbenv)
+__log_env_refresh(dbenv)
DB_ENV *dbenv;
{
DB_LOG *dblp;
@@ -803,19 +790,21 @@ __log_dbenv_refresh(dbenv)
ret = t_ret;
/* We may have opened files as part of XA; if so, close them. */
- if ((t_ret = __dbreg_close_files(dbenv)) != 0 && ret == 0)
+ if ((t_ret = __dbreg_close_files(dbenv, 0)) != 0 && ret == 0)
ret = t_ret;
/*
* After we close the files, check for any unlogged closes left in
- * the shared memory queue. If we find any, we need to panic the
- * region. Note, just set "ret" -- a panic overrides any previously
- * set error return.
+ * the shared memory queue. If we find any, try to log it, otherwise
+ * return the error. We cannot say the environment was closed
+ * cleanly.
*/
MUTEX_LOCK(dbenv, lp->mtx_filelist);
SH_TAILQ_FOREACH(fnp, &lp->fq, q, __fname)
- if (F_ISSET(fnp, DB_FNAME_NOTLOGGED))
- ret = __db_panic(dbenv, EINVAL);
+ if (F_ISSET(fnp, DB_FNAME_NOTLOGGED) &&
+ (t_ret = __dbreg_close_id_int(
+ dbenv, fnp, DBREG_CLOSE, 1)) != 0)
+ ret = t_ret;
MUTEX_UNLOCK(dbenv, lp->mtx_filelist);
/*
@@ -830,11 +819,11 @@ __log_dbenv_refresh(dbenv)
ret = t_ret;
/* Discard the buffer. */
- __db_shalloc_free(reginfo, R_ADDR(reginfo, lp->buffer_off));
+ __env_alloc_free(reginfo, R_ADDR(reginfo, lp->buffer_off));
/* Discard stack of free file IDs. */
if (lp->free_fid_stack != INVALID_ROFF)
- __db_shalloc_free(reginfo,
+ __env_alloc_free(reginfo,
R_ADDR(reginfo, lp->free_fid_stack));
/* Discard the list of in-memory log file markers. */
@@ -842,14 +831,21 @@ __log_dbenv_refresh(dbenv)
__db_filestart)) != NULL) {
SH_TAILQ_REMOVE(&lp->logfiles, filestart, links,
__db_filestart);
- __db_shalloc_free(reginfo, filestart);
+ __env_alloc_free(reginfo, filestart);
}
while ((filestart = SH_TAILQ_FIRST(&lp->free_logfiles,
__db_filestart)) != NULL) {
SH_TAILQ_REMOVE(&lp->free_logfiles, filestart, links,
__db_filestart);
- __db_shalloc_free(reginfo, filestart);
+ __env_alloc_free(reginfo, filestart);
+ }
+
+ /* Discard replication bulk buffer. */
+ if (lp->bulk_buf != INVALID_ROFF) {
+ __env_alloc_free(reginfo,
+ R_ADDR(reginfo, lp->bulk_buf));
+ lp->bulk_buf = INVALID_ROFF;
}
}
@@ -858,7 +854,7 @@ __log_dbenv_refresh(dbenv)
ret = t_ret;
/* Detach from the region. */
- if ((t_ret = __db_r_detach(dbenv, reginfo, 0)) != 0 && ret == 0)
+ if ((t_ret = __env_region_detach(dbenv, reginfo, 0)) != 0 && ret == 0)
ret = t_ret;
/* Close open files, release allocated memory. */
@@ -924,7 +920,7 @@ __log_region_mutex_count(dbenv)
* Return the amount of space needed for the log region.
* Make the region large enough to hold txn_max transaction
* detail structures plus some space to hold thread handles
- * and the beginning of the shalloc region and anything we
+ * and the beginning of the alloc region and anything we
* need for mutex system resource recording.
*/
static size_t
@@ -963,18 +959,17 @@ __log_vtruncate(dbenv, lsn, ckplsn, trunclsn)
DBT log_dbt;
DB_LOG *dblp;
DB_LOGC *logc;
- DB_LSN end_lsn;
LOG *lp;
- u_int32_t bytes, c_len;
+ u_int32_t bytes, len;
int ret, t_ret;
/* Need to find out the length of this soon-to-be-last record. */
if ((ret = __log_cursor(dbenv, &logc)) != 0)
return (ret);
memset(&log_dbt, 0, sizeof(log_dbt));
- ret = __log_c_get(logc, lsn, &log_dbt, DB_SET);
- c_len = logc->c_len;
- if ((t_ret = __log_c_close(logc)) != 0 && ret == 0)
+ ret = __logc_get(logc, lsn, &log_dbt, DB_SET);
+ len = logc->len;
+ if ((t_ret = __logc_close(logc)) != 0 && ret == 0)
ret = t_ret;
if (ret != 0)
return (ret);
@@ -992,9 +987,8 @@ __log_vtruncate(dbenv, lsn, ckplsn, trunclsn)
if ((ret = __log_flush_int(dblp, NULL, 0)) != 0)
goto err;
- end_lsn = lp->lsn;
lp->lsn = *lsn;
- lp->len = c_len;
+ lp->len = len;
lp->lsn.offset += lp->len;
if (lp->db_log_inmemory &&
@@ -1020,7 +1014,7 @@ __log_vtruncate(dbenv, lsn, ckplsn, trunclsn)
lp->stat.st_wc_bytes += bytes % MEGABYTE;
/*
- * If the saved lsn is greater than our new end of log, reset it
+ * If the synced lsn is greater than our new end of log, reset it
* to our current end of log.
*/
MUTEX_LOCK(dbenv, lp->mtx_flush);
@@ -1036,7 +1030,7 @@ __log_vtruncate(dbenv, lsn, ckplsn, trunclsn)
*trunclsn = lp->lsn;
/* Truncate the log to the new point. */
- if ((ret = __log_zero(dbenv, &lp->lsn, &end_lsn)) != 0)
+ if ((ret = __log_zero(dbenv, &lp->lsn)) != 0)
goto err;
err: LOG_SYSTEM_UNLOCK(dbenv);
@@ -1107,12 +1101,12 @@ out: __os_free(dbenv, name);
* __log_zero --
* Zero out the tail of a log after a truncate.
*
- * PUBLIC: int __log_zero __P((DB_ENV *, DB_LSN *, DB_LSN *));
+ * PUBLIC: int __log_zero __P((DB_ENV *, DB_LSN *));
*/
int
-__log_zero(dbenv, from_lsn, to_lsn)
+__log_zero(dbenv, from_lsn)
DB_ENV *dbenv;
- DB_LSN *from_lsn, *to_lsn;
+ DB_LSN *from_lsn;
{
DB_FH *fhp;
DB_LOG *dblp;
@@ -1125,14 +1119,14 @@ __log_zero(dbenv, from_lsn, to_lsn)
char *fname;
dblp = dbenv->lg_handle;
- DB_ASSERT(dbenv, LOG_COMPARE(from_lsn, to_lsn) <= 0);
- if (LOG_COMPARE(from_lsn, to_lsn) > 0) {
+ lp = (LOG *)dblp->reginfo.primary;
+ DB_ASSERT(dbenv, LOG_COMPARE(from_lsn, &lp->lsn) <= 0);
+ if (LOG_COMPARE(from_lsn, &lp->lsn) > 0) {
__db_errx(dbenv,
"Warning: truncating to point beyond end of log");
return (0);
}
- lp = (LOG *)dblp->reginfo.primary;
if (lp->db_log_inmemory) {
/*
* Remove the files that are invalidated by this truncate.
@@ -1277,8 +1271,8 @@ __log_inmem_newfile(dblp, file)
filestart = SH_TAILQ_FIRST(&lp->free_logfiles, __db_filestart);
if (filestart == NULL) {
- if ((ret = __db_shalloc(&dblp->reginfo,
- sizeof(struct __db_filestart), 0, &filestart)) != 0)
+ if ((ret = __env_alloc(&dblp->reginfo,
+ sizeof(struct __db_filestart), &filestart)) != 0)
return (ret);
memset(filestart, 0, sizeof(*filestart));
} else
@@ -1483,21 +1477,30 @@ __log_get_oldversion(dbenv, ver)
DB_LOG *dblp;
DB_LOGC *logc;
DB_LSN lsn;
+ LOG *lp;
u_int32_t firstfnum, fnum, lastver, oldver;
int ret, t_ret;
dblp = dbenv->lg_handle;
+ lp = dblp->reginfo.primary;
logc = NULL;
ret = 0;
oldver = DB_LOGVERSION;
+ /*
+ * If we're in-memory logs we're always the current version.
+ */
+ if (lp->db_log_inmemory) {
+ *ver = oldver;
+ return (0);
+ }
memset(&rec, 0, sizeof(rec));
if ((ret = __log_cursor(dbenv, &logc)) != 0)
goto err;
/*
* Get the version numbers of the first and last log files.
*/
- if ((ret = __log_c_get(logc, &lsn, &rec, DB_FIRST)) != 0) {
+ if ((ret = __logc_get(logc, &lsn, &rec, DB_FIRST)) != 0) {
/*
* If there is no log file, we'll get DB_NOTFOUND.
* If we get that, set the version to the current.
@@ -1507,7 +1510,7 @@ __log_get_oldversion(dbenv, ver)
goto err;
}
firstfnum = lsn.file;
- if ((ret = __log_c_get(logc, &lsn, &rec, DB_LAST)) != 0)
+ if ((ret = __logc_get(logc, &lsn, &rec, DB_LAST)) != 0)
goto err;
if ((ret = __log_valid(dblp, firstfnum, 0, NULL, 0,
NULL, &oldver)) != 0)
@@ -1540,7 +1543,7 @@ __log_get_oldversion(dbenv, ver)
break;
}
}
-err: if (logc != NULL && ((t_ret = __log_c_close(logc)) != 0) && ret == 0)
+err: if (logc != NULL && ((t_ret = __logc_close(logc)) != 0) && ret == 0)
ret = t_ret;
if (ret == 0 && ver != NULL)
*ver = oldver;
diff --git a/db/log/log.src b/db/log/log.src
deleted file mode 100644
index a92fae8de..000000000
--- a/db/log/log.src
+++ /dev/null
@@ -1,46 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1996, 1997, 1998, 1999, 2000
- * Sleepycat Software. All rights reserved.
- *
- * $Id: log.src,v 10.12 2000/02/17 20:24:10 bostic Exp $
- */
-
-PREFIX log
-
-INCLUDE #include "db_config.h"
-INCLUDE
-INCLUDE #ifndef NO_SYSTEM_INCLUDES
-INCLUDE #include <sys/types.h>
-INCLUDE
-INCLUDE #include <ctype.h>
-INCLUDE #include <errno.h>
-INCLUDE #include <string.h>
-INCLUDE #endif
-INCLUDE
-INCLUDE #include "db_int.h"
-INCLUDE #include "db_page.h"
-INCLUDE #include "db_dispatch.h"
-INCLUDE #include "db_am.h"
-INCLUDE #include "log.h"
-INCLUDE #include "txn.h"
-INCLUDE
-
-/* Used for registering name/id translations at open or close. */
-DEPRECATED register1 1
-ARG opcode u_int32_t lu
-DBT name DBT s
-DBT uid DBT s
-ARG fileid int32_t ld
-ARG ftype DBTYPE lx
-END
-
-BEGIN register 2
-ARG opcode u_int32_t lu
-DBT name DBT s
-DBT uid DBT s
-ARG fileid int32_t ld
-ARG ftype DBTYPE lx
-ARG meta_pgno db_pgno_t lu
-END
diff --git a/db/log/log_archive.c b/db/log/log_archive.c
index bbaa56e86..1e0cba32a 100644
--- a/db/log/log_archive.c
+++ b/db/log/log_archive.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: log_archive.c,v 12.21 2006/09/07 20:05:32 bostic Exp $
+ * $Id: log_archive.c,v 12.26 2007/05/17 15:15:44 bostic Exp $
*/
#include "db_config.h"
@@ -78,7 +77,10 @@ __log_archive(dbenv, listp, flags)
u_int array_size, n;
u_int32_t fnum;
int ret, t_ret;
- char **array, **arrayp, *name, *p, *pref, path[DB_MAXPATHLEN];
+ char **array, **arrayp, *name, *p, *pref;
+#ifdef HAVE_GETCWD
+ char path[DB_MAXPATHLEN];
+#endif
dblp = dbenv->lg_handle;
lp = (LOG *)dblp->reginfo.primary;
@@ -109,6 +111,7 @@ __log_archive(dbenv, listp, flags)
* Prepend the original absolute pathname if the user wants an
* absolute path to the database environment directory.
*/
+#ifdef HAVE_GETCWD
if (LF_ISSET(DB_ARCH_ABS)) {
/*
* XXX
@@ -127,6 +130,7 @@ __log_archive(dbenv, listp, flags)
}
pref = path;
} else
+#endif
pref = NULL;
LF_CLR(DB_ARCH_ABS);
@@ -141,8 +145,8 @@ __log_archive(dbenv, listp, flags)
#ifdef UMRW
ZERO_LSN(stable_lsn);
#endif
- ret = __log_c_get(logc, &stable_lsn, &rec, DB_LAST);
- if ((t_ret = __log_c_close(logc)) != 0 && ret == 0)
+ ret = __logc_get(logc, &stable_lsn, &rec, DB_LAST);
+ if ((t_ret = __logc_close(logc)) != 0 && ret == 0)
ret = t_ret;
if (ret != 0)
goto err;
@@ -291,7 +295,7 @@ __log_get_stable_lsn(dbenv, stable_lsn)
* Read checkpoint records until we find one that is on disk,
* then copy the ckp_lsn to the stable_lsn;
*/
- while ((ret = __log_c_get(logc, stable_lsn, &rec, DB_SET)) == 0 &&
+ while ((ret = __logc_get(logc, stable_lsn, &rec, DB_SET)) == 0 &&
(ret = __txn_ckp_read(dbenv, rec.data, &ckp_args)) == 0) {
if (stable_lsn->file < lp->s_lsn.file ||
(stable_lsn->file == lp->s_lsn.file &&
@@ -303,7 +307,7 @@ __log_get_stable_lsn(dbenv, stable_lsn)
*stable_lsn = ckp_args->last_ckp;
__os_free(dbenv, ckp_args);
}
- if ((t_ret = __log_c_close(logc)) != 0 && ret == 0)
+ if ((t_ret = __logc_close(logc)) != 0 && ret == 0)
ret = t_ret;
err:
return (ret);
@@ -373,7 +377,7 @@ __build_data(dbenv, pref, listp)
memset(&rec, 0, sizeof(rec));
if ((ret = __log_cursor(dbenv, &logc)) != 0)
return (ret);
- for (n = 0; (ret = __log_c_get(logc, &lsn, &rec, DB_PREV)) == 0;) {
+ for (n = 0; (ret = __logc_get(logc, &lsn, &rec, DB_PREV)) == 0;) {
if (rec.size < sizeof(rectype)) {
ret = EINVAL;
__db_errx(dbenv, "DB_ENV->log_archive: bad log record");
@@ -430,7 +434,7 @@ free_continue: __os_free(dbenv, argp);
}
if (ret == DB_NOTFOUND)
ret = 0;
- if ((t_ret = __log_c_close(logc)) != 0 && ret == 0)
+ if ((t_ret = __logc_close(logc)) != 0 && ret == 0)
ret = t_ret;
if (ret != 0)
goto err1;
diff --git a/db/log/log_auto.c b/db/log/log_auto.c
deleted file mode 100644
index 281296cc2..000000000
--- a/db/log/log_auto.c
+++ /dev/null
@@ -1,326 +0,0 @@
-/* Do not edit: automatically built by gen_rec.awk. */
-#include "db_config.h"
-
-#ifndef NO_SYSTEM_INCLUDES
-#include <sys/types.h>
-
-#include <ctype.h>
-#include <errno.h>
-#include <string.h>
-#endif
-
-#include "db_int.h"
-#include "db_page.h"
-#include "db_dispatch.h"
-#include "db_am.h"
-#include "log.h"
-#include "txn.h"
-
-int
-__log_register1_print(dbenv, dbtp, lsnp, notused2, notused3)
- DB_ENV *dbenv;
- DBT *dbtp;
- DB_LSN *lsnp;
- db_recops notused2;
- void *notused3;
-{
- __log_register1_args *argp;
- u_int32_t i;
- u_int ch;
- int ret;
-
- i = 0;
- ch = 0;
- notused2 = DB_TXN_ABORT;
- notused3 = NULL;
-
- if ((ret = __log_register1_read(dbenv, dbtp->data, &argp)) != 0)
- return (ret);
- printf("[%lu][%lu]log_register1: rec: %lu txnid %lx prevlsn [%lu][%lu]\n",
- (u_long)lsnp->file,
- (u_long)lsnp->offset,
- (u_long)argp->type,
- (u_long)argp->txnid->txnid,
- (u_long)argp->prev_lsn.file,
- (u_long)argp->prev_lsn.offset);
- printf("\topcode: %lu\n", (u_long)argp->opcode);
- printf("\tname: ");
- for (i = 0; i < argp->name.size; i++) {
- ch = ((u_int8_t *)argp->name.data)[i];
- if (isprint(ch) || ch == 0xa)
- putchar(ch);
- else
- printf("%#x ", ch);
- }
- printf("\n");
- printf("\tuid: ");
- for (i = 0; i < argp->uid.size; i++) {
- ch = ((u_int8_t *)argp->uid.data)[i];
- if (isprint(ch) || ch == 0xa)
- putchar(ch);
- else
- printf("%#x ", ch);
- }
- printf("\n");
- printf("\tfileid: %ld\n", (long)argp->fileid);
- printf("\tftype: 0x%lx\n", (u_long)argp->ftype);
- printf("\n");
- __os_free(argp, 0);
- return (0);
-}
-
-int
-__log_register1_read(dbenv, recbuf, argpp)
- DB_ENV *dbenv;
- void *recbuf;
- __log_register1_args **argpp;
-{
- __log_register1_args *argp;
- u_int8_t *bp;
- int ret;
-
- ret = __os_malloc(dbenv, sizeof(__log_register1_args) +
- sizeof(DB_TXN), NULL, &argp);
- if (ret != 0)
- return (ret);
- argp->txnid = (DB_TXN *)&argp[1];
- bp = recbuf;
- memcpy(&argp->type, bp, sizeof(argp->type));
- bp += sizeof(argp->type);
- memcpy(&argp->txnid->txnid, bp, sizeof(argp->txnid->txnid));
- bp += sizeof(argp->txnid->txnid);
- memcpy(&argp->prev_lsn, bp, sizeof(DB_LSN));
- bp += sizeof(DB_LSN);
- memcpy(&argp->opcode, bp, sizeof(argp->opcode));
- bp += sizeof(argp->opcode);
- memset(&argp->name, 0, sizeof(argp->name));
- memcpy(&argp->name.size, bp, sizeof(u_int32_t));
- bp += sizeof(u_int32_t);
- argp->name.data = bp;
- bp += argp->name.size;
- memset(&argp->uid, 0, sizeof(argp->uid));
- memcpy(&argp->uid.size, bp, sizeof(u_int32_t));
- bp += sizeof(u_int32_t);
- argp->uid.data = bp;
- bp += argp->uid.size;
- memcpy(&argp->fileid, bp, sizeof(argp->fileid));
- bp += sizeof(argp->fileid);
- memcpy(&argp->ftype, bp, sizeof(argp->ftype));
- bp += sizeof(argp->ftype);
- *argpp = argp;
- return (0);
-}
-
-int
-__log_register_log(dbenv, txnid, ret_lsnp, flags,
- opcode, name, uid, fileid, ftype, meta_pgno)
- DB_ENV *dbenv;
- DB_TXN *txnid;
- DB_LSN *ret_lsnp;
- u_int32_t flags;
- u_int32_t opcode;
- const DBT *name;
- const DBT *uid;
- int32_t fileid;
- DBTYPE ftype;
- db_pgno_t meta_pgno;
-{
- DBT logrec;
- DB_LSN *lsnp, null_lsn;
- u_int32_t zero;
- u_int32_t rectype, txn_num;
- int ret;
- u_int8_t *bp;
-
- rectype = DB_log_register;
- if (txnid != NULL &&
- TAILQ_FIRST(&txnid->kids) != NULL &&
- (ret = __txn_activekids(dbenv, rectype, txnid)) != 0)
- return (ret);
- txn_num = txnid == NULL ? 0 : txnid->txnid;
- if (txnid == NULL) {
- ZERO_LSN(null_lsn);
- lsnp = &null_lsn;
- } else
- lsnp = &txnid->last_lsn;
- logrec.size = sizeof(rectype) + sizeof(txn_num) + sizeof(DB_LSN)
- + sizeof(opcode)
- + sizeof(u_int32_t) + (name == NULL ? 0 : name->size)
- + sizeof(u_int32_t) + (uid == NULL ? 0 : uid->size)
- + sizeof(fileid)
- + sizeof(ftype)
- + sizeof(meta_pgno);
- if ((ret = __os_malloc(dbenv, logrec.size, NULL, &logrec.data)) != 0)
- return (ret);
-
- bp = logrec.data;
- memcpy(bp, &rectype, sizeof(rectype));
- bp += sizeof(rectype);
- memcpy(bp, &txn_num, sizeof(txn_num));
- bp += sizeof(txn_num);
- memcpy(bp, lsnp, sizeof(DB_LSN));
- bp += sizeof(DB_LSN);
- memcpy(bp, &opcode, sizeof(opcode));
- bp += sizeof(opcode);
- if (name == NULL) {
- zero = 0;
- memcpy(bp, &zero, sizeof(u_int32_t));
- bp += sizeof(u_int32_t);
- } else {
- memcpy(bp, &name->size, sizeof(name->size));
- bp += sizeof(name->size);
- memcpy(bp, name->data, name->size);
- bp += name->size;
- }
- if (uid == NULL) {
- zero = 0;
- memcpy(bp, &zero, sizeof(u_int32_t));
- bp += sizeof(u_int32_t);
- } else {
- memcpy(bp, &uid->size, sizeof(uid->size));
- bp += sizeof(uid->size);
- memcpy(bp, uid->data, uid->size);
- bp += uid->size;
- }
- memcpy(bp, &fileid, sizeof(fileid));
- bp += sizeof(fileid);
- memcpy(bp, &ftype, sizeof(ftype));
- bp += sizeof(ftype);
- memcpy(bp, &meta_pgno, sizeof(meta_pgno));
- bp += sizeof(meta_pgno);
- DB_ASSERT((u_int32_t)(bp - (u_int8_t *)logrec.data) == logrec.size);
- ret = __log_put(dbenv, ret_lsnp, (DBT *)&logrec, flags);
- if (txnid != NULL)
- txnid->last_lsn = *ret_lsnp;
- __os_free(logrec.data, logrec.size);
- return (ret);
-}
-
-int
-__log_register_print(dbenv, dbtp, lsnp, notused2, notused3)
- DB_ENV *dbenv;
- DBT *dbtp;
- DB_LSN *lsnp;
- db_recops notused2;
- void *notused3;
-{
- __log_register_args *argp;
- u_int32_t i;
- u_int ch;
- int ret;
-
- i = 0;
- ch = 0;
- notused2 = DB_TXN_ABORT;
- notused3 = NULL;
-
- if ((ret = __log_register_read(dbenv, dbtp->data, &argp)) != 0)
- return (ret);
- printf("[%lu][%lu]log_register: rec: %lu txnid %lx prevlsn [%lu][%lu]\n",
- (u_long)lsnp->file,
- (u_long)lsnp->offset,
- (u_long)argp->type,
- (u_long)argp->txnid->txnid,
- (u_long)argp->prev_lsn.file,
- (u_long)argp->prev_lsn.offset);
- printf("\topcode: %lu\n", (u_long)argp->opcode);
- printf("\tname: ");
- for (i = 0; i < argp->name.size; i++) {
- ch = ((u_int8_t *)argp->name.data)[i];
- if (isprint(ch) || ch == 0xa)
- putchar(ch);
- else
- printf("%#x ", ch);
- }
- printf("\n");
- printf("\tuid: ");
- for (i = 0; i < argp->uid.size; i++) {
- ch = ((u_int8_t *)argp->uid.data)[i];
- if (isprint(ch) || ch == 0xa)
- putchar(ch);
- else
- printf("%#x ", ch);
- }
- printf("\n");
- printf("\tfileid: %ld\n", (long)argp->fileid);
- printf("\tftype: 0x%lx\n", (u_long)argp->ftype);
- printf("\tmeta_pgno: %lu\n", (u_long)argp->meta_pgno);
- printf("\n");
- __os_free(argp, 0);
- return (0);
-}
-
-int
-__log_register_read(dbenv, recbuf, argpp)
- DB_ENV *dbenv;
- void *recbuf;
- __log_register_args **argpp;
-{
- __log_register_args *argp;
- u_int8_t *bp;
- int ret;
-
- ret = __os_malloc(dbenv, sizeof(__log_register_args) +
- sizeof(DB_TXN), NULL, &argp);
- if (ret != 0)
- return (ret);
- argp->txnid = (DB_TXN *)&argp[1];
- bp = recbuf;
- memcpy(&argp->type, bp, sizeof(argp->type));
- bp += sizeof(argp->type);
- memcpy(&argp->txnid->txnid, bp, sizeof(argp->txnid->txnid));
- bp += sizeof(argp->txnid->txnid);
- memcpy(&argp->prev_lsn, bp, sizeof(DB_LSN));
- bp += sizeof(DB_LSN);
- memcpy(&argp->opcode, bp, sizeof(argp->opcode));
- bp += sizeof(argp->opcode);
- memset(&argp->name, 0, sizeof(argp->name));
- memcpy(&argp->name.size, bp, sizeof(u_int32_t));
- bp += sizeof(u_int32_t);
- argp->name.data = bp;
- bp += argp->name.size;
- memset(&argp->uid, 0, sizeof(argp->uid));
- memcpy(&argp->uid.size, bp, sizeof(u_int32_t));
- bp += sizeof(u_int32_t);
- argp->uid.data = bp;
- bp += argp->uid.size;
- memcpy(&argp->fileid, bp, sizeof(argp->fileid));
- bp += sizeof(argp->fileid);
- memcpy(&argp->ftype, bp, sizeof(argp->ftype));
- bp += sizeof(argp->ftype);
- memcpy(&argp->meta_pgno, bp, sizeof(argp->meta_pgno));
- bp += sizeof(argp->meta_pgno);
- *argpp = argp;
- return (0);
-}
-
-int
-__log_init_print(dbenv)
- DB_ENV *dbenv;
-{
- int ret;
-
- if ((ret = __db_add_recovery(dbenv,
- __log_register1_print, DB_log_register1)) != 0)
- return (ret);
- if ((ret = __db_add_recovery(dbenv,
- __log_register_print, DB_log_register)) != 0)
- return (ret);
- return (0);
-}
-
-int
-__log_init_recover(dbenv)
- DB_ENV *dbenv;
-{
- int ret;
-
- if ((ret = __db_add_recovery(dbenv,
- __deprecated_recover, DB_log_register1)) != 0)
- return (ret);
- if ((ret = __db_add_recovery(dbenv,
- __log_register_recover, DB_log_register)) != 0)
- return (ret);
- return (0);
-}
-
diff --git a/db/log/log_compare.c b/db/log/log_compare.c
index 996771797..be5fa0d58 100644
--- a/db/log/log_compare.c
+++ b/db/log/log_compare.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: log_compare.c,v 12.8 2006/09/14 15:00:49 bostic Exp $
+ * $Id: log_compare.c,v 12.11 2007/05/17 15:15:44 bostic Exp $
*/
#include "db_config.h"
@@ -47,21 +46,19 @@ __log_check_page_lsn(dbenv, dbp, lsnp)
LOG_SYSTEM_UNLOCK(dbenv);
- if (ret >=0) {
- __db_errx(dbenv,
- "file %s has LSN %lu/%lu, past end of log at %lu/%lu",
- dbp == NULL || dbp->fname == NULL ? "unknown" : dbp->fname,
- (u_long)lsnp->file,
- (u_long)lsnp->offset,
- (u_long)lp->lsn.file,
- (u_long)lp->lsn.offset);
- __db_errx(dbenv, "%s",
- "Commonly caused by moving a database from one transactional database");
- __db_errx(dbenv, "%s",
- "environment to another without clearing the database LSNs, or removing");
- __db_errx(dbenv, "%s",
- "all of the log files from a database environment");
- return (EINVAL);
- }
- return (0);
+ if (ret < 0)
+ return (0);
+
+ __db_errx(dbenv,
+ "file %s has LSN %lu/%lu, past end of log at %lu/%lu",
+ dbp == NULL || dbp->fname == NULL ? "unknown" : dbp->fname,
+ (u_long)lsnp->file, (u_long)lsnp->offset,
+ (u_long)lp->lsn.file, (u_long)lp->lsn.offset);
+ __db_errx(dbenv, "%s",
+ "Commonly caused by moving a database from one database environment");
+ __db_errx(dbenv, "%s",
+ "to another without clearing the database LSNs, or by removing all of");
+ __db_errx(dbenv, "%s",
+ "the log files from a database environment");
+ return (EINVAL);
}
diff --git a/db/log/log_debug.c b/db/log/log_debug.c
index f142d88f0..a81daca4f 100644
--- a/db/log/log_debug.c
+++ b/db/log/log_debug.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1999-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1999,2007 Oracle. All rights reserved.
*
- * $Id: log_debug.c,v 1.9 2006/08/24 14:46:12 bostic Exp $
+ * $Id: log_debug.c,v 1.11 2007/05/17 15:15:44 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/log/log_findckp.c b/db/log/log_findckp.c
deleted file mode 100644
index b1e8fddbd..000000000
--- a/db/log/log_findckp.c
+++ /dev/null
@@ -1,135 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1996, 1997, 1998, 1999, 2000
- * Sleepycat Software. All rights reserved.
- */
-
-#include "db_config.h"
-
-#ifndef lint
-static const char revid[] = "$Id: log_findckp.c,v 11.5 2000/11/30 00:58:40 ubell Exp $";
-#endif /* not lint */
-
-#ifndef NO_SYSTEM_INCLUDES
-#include <sys/types.h>
-
-#include <string.h>
-#endif
-
-#include "db_int.h"
-#include "log.h"
-#include "txn.h"
-
-/*
- * __log_findckp --
- *
- * Looks for the most recent checkpoint that occurs before the most recent
- * checkpoint LSN, subject to the constraint that there must be at least two
- * checkpoints. The reason you need two checkpoints is that you might have
- * crashed during the most recent one and may not have a copy of all the
- * open files. This is the point from which recovery can start and the
- * point up to which archival/truncation can take place. Checkpoints in
- * the log look like:
- *
- * -------------------------------------------------------------------
- * | ckp A, ckplsn 100 | .... record .... | ckp B, ckplsn 600 | ...
- * -------------------------------------------------------------------
- * LSN 500 LSN 1000
- *
- * If we read what log returns from using the DB_CKP parameter to logput,
- * we'll get the record at LSN 1000. The checkpoint LSN there is 600.
- * Now we have to scan backwards looking for a checkpoint before LSN 600.
- * We find one at 500. This means that we can truncate the log before
- * 500 or run recovery beginning at 500.
- *
- * Returns 0 if we find a suitable checkpoint or we retrieved the first
- * record in the log from which to start. Returns DB_NOTFOUND if there
- * are no log records, errno on error.
- *
- * PUBLIC: int __log_findckp __P((DB_ENV *, DB_LSN *));
- */
-int
-__log_findckp(dbenv, lsnp)
- DB_ENV *dbenv;
- DB_LSN *lsnp;
-{
- DBT data;
- DB_LSN ckp_lsn, final_ckp, last_ckp, next_lsn;
- __txn_ckp_args *ckp_args;
- int ret;
-
- /*
- * Need to find the appropriate point from which to begin
- * recovery.
- */
- memset(&data, 0, sizeof(data));
- if (F_ISSET(dbenv, DB_ENV_THREAD))
- F_SET(&data, DB_DBT_MALLOC);
- ZERO_LSN(ckp_lsn);
- if ((ret = log_get(dbenv, &last_ckp, &data, DB_CHECKPOINT)) != 0) {
- if (ret == ENOENT)
- goto get_first;
- else
- return (ret);
- }
- final_ckp = last_ckp;
-
- next_lsn = last_ckp;
- do {
- if (F_ISSET(dbenv, DB_ENV_THREAD))
- __os_free(data.data, data.size);
-
- if ((ret = log_get(dbenv, &next_lsn, &data, DB_SET)) != 0)
- return (ret);
- if ((ret = __txn_ckp_read(dbenv, data.data, &ckp_args)) != 0) {
- if (F_ISSET(dbenv, DB_ENV_THREAD))
- __os_free(data.data, data.size);
- return (ret);
- }
- if (IS_ZERO_LSN(ckp_lsn))
- ckp_lsn = ckp_args->ckp_lsn;
- if (FLD_ISSET(dbenv->verbose, DB_VERB_CHKPOINT)) {
- __db_err(dbenv, "Checkpoint at: [%lu][%lu]",
- (u_long)last_ckp.file, (u_long)last_ckp.offset);
- __db_err(dbenv, "Checkpoint LSN: [%lu][%lu]",
- (u_long)ckp_args->ckp_lsn.file,
- (u_long)ckp_args->ckp_lsn.offset);
- __db_err(dbenv, "Previous checkpoint: [%lu][%lu]",
- (u_long)ckp_args->last_ckp.file,
- (u_long)ckp_args->last_ckp.offset);
- }
- last_ckp = next_lsn;
- next_lsn = ckp_args->last_ckp;
- __os_free(ckp_args, sizeof(*ckp_args));
-
- /*
- * Keep looping until either you 1) run out of checkpoints,
- * 2) you've found a checkpoint before the most recent
- * checkpoint's LSN and you have at least 2 checkpoints.
- */
- } while (!IS_ZERO_LSN(next_lsn) &&
- (log_compare(&last_ckp, &ckp_lsn) > 0 ||
- log_compare(&final_ckp, &last_ckp) == 0));
-
- if (F_ISSET(dbenv, DB_ENV_THREAD))
- __os_free(data.data, data.size);
-
- /*
- * At this point, either, next_lsn is ZERO or ckp_lsn is the
- * checkpoint lsn and last_ckp is the LSN of the last checkpoint
- * before ckp_lsn. If the compare in the loop is still true, then
- * next_lsn must be 0 and we need to roll forward from the
- * beginning of the log.
- */
- if (log_compare(&last_ckp, &ckp_lsn) >= 0 ||
- log_compare(&final_ckp, &last_ckp) == 0) {
-get_first: if ((ret = log_get(dbenv, &last_ckp, &data, DB_FIRST)) != 0)
- return (ret);
- if (F_ISSET(dbenv, DB_ENV_THREAD))
- __os_free(data.data, data.size);
- }
- *lsnp = last_ckp;
-
- return (IS_ZERO_LSN(last_ckp) ? DB_NOTFOUND : 0);
-}
diff --git a/db/log/log_get.c b/db/log/log_get.c
index 5d5570cc9..1607189fb 100644
--- a/db/log/log_get.c
+++ b/db/log/log_get.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: log_get.c,v 12.35 2006/09/07 20:05:32 bostic Exp $
+ * $Id: log_get.c,v 12.40 2007/05/17 15:15:44 bostic Exp $
*/
#include "db_config.h"
@@ -18,20 +17,20 @@
typedef enum { L_ALREADY, L_ACQUIRED, L_NONE } RLOCK;
-static int __log_c_close_pp __P((DB_LOGC *, u_int32_t));
-static int __log_c_get_pp __P((DB_LOGC *, DB_LSN *, DBT *, u_int32_t));
-static int __log_c_get_int __P((DB_LOGC *, DB_LSN *, DBT *, u_int32_t));
-static int __log_c_hdrchk __P((DB_LOGC *, DB_LSN *, HDR *, int *));
-static int __log_c_incursor __P((DB_LOGC *, DB_LSN *, HDR *, u_int8_t **));
-static int __log_c_inregion __P((DB_LOGC *,
+static int __logc_close_pp __P((DB_LOGC *, u_int32_t));
+static int __logc_get_pp __P((DB_LOGC *, DB_LSN *, DBT *, u_int32_t));
+static int __logc_get_int __P((DB_LOGC *, DB_LSN *, DBT *, u_int32_t));
+static int __logc_hdrchk __P((DB_LOGC *, DB_LSN *, HDR *, int *));
+static int __logc_incursor __P((DB_LOGC *, DB_LSN *, HDR *, u_int8_t **));
+static int __logc_inregion __P((DB_LOGC *,
DB_LSN *, RLOCK *, DB_LSN *, HDR *, u_int8_t **, int *));
-static int __log_c_io __P((DB_LOGC *,
+static int __logc_io __P((DB_LOGC *,
u_int32_t, u_int32_t, void *, size_t *, int *));
-static int __log_c_ondisk __P((DB_LOGC *,
+static int __logc_ondisk __P((DB_LOGC *,
DB_LSN *, DB_LSN *, u_int32_t, HDR *, u_int8_t **, int *));
-static int __log_c_set_maxrec __P((DB_LOGC *, char *));
-static int __log_c_shortread __P((DB_LOGC *, DB_LSN *, int));
-static int __log_c_version_pp __P((DB_LOGC *, u_int32_t *, u_int32_t));
+static int __logc_set_maxrec __P((DB_LOGC *, char *));
+static int __logc_shortread __P((DB_LOGC *, DB_LSN *, int));
+static int __logc_version_pp __P((DB_LOGC *, u_int32_t *, u_int32_t));
/*
* __log_cursor_pp --
@@ -93,20 +92,20 @@ __log_cursor(dbenv, logcp)
}
logc->dbenv = dbenv;
- logc->close = __log_c_close_pp;
- logc->get = __log_c_get_pp;
- logc->version = __log_c_version_pp;
+ logc->close = __logc_close_pp;
+ logc->get = __logc_get_pp;
+ logc->version = __logc_version_pp;
*logcp = logc;
return (0);
}
/*
- * __log_c_close_pp --
+ * __logc_close_pp --
* DB_LOGC->close pre/post processing.
*/
static int
-__log_c_close_pp(logc, flags)
+__logc_close_pp(logc, flags)
DB_LOGC *logc;
u_int32_t flags;
{
@@ -121,32 +120,32 @@ __log_c_close_pp(logc, flags)
return (ret);
ENV_ENTER(dbenv, ip);
- REPLICATION_WRAP(dbenv, (__log_c_close(logc)), ret);
+ REPLICATION_WRAP(dbenv, (__logc_close(logc)), ret);
ENV_LEAVE(dbenv, ip);
return (ret);
}
/*
- * __log_c_close --
+ * __logc_close --
* DB_LOGC->close.
*
- * PUBLIC: int __log_c_close __P((DB_LOGC *));
+ * PUBLIC: int __logc_close __P((DB_LOGC *));
*/
int
-__log_c_close(logc)
+__logc_close(logc)
DB_LOGC *logc;
{
DB_ENV *dbenv;
dbenv = logc->dbenv;
- if (logc->c_fhp != NULL) {
- (void)__os_closehandle(dbenv, logc->c_fhp);
- logc->c_fhp = NULL;
+ if (logc->fhp != NULL) {
+ (void)__os_closehandle(dbenv, logc->fhp);
+ logc->fhp = NULL;
}
- if (logc->c_dbt.data != NULL)
- __os_free(dbenv, logc->c_dbt.data);
+ if (logc->dbt.data != NULL)
+ __os_free(dbenv, logc->dbt.data);
__os_free(dbenv, logc->bp);
__os_free(dbenv, logc);
@@ -155,11 +154,11 @@ __log_c_close(logc)
}
/*
- * __log_c_version_pp --
+ * __logc_version_pp --
* DB_LOGC->version.
*/
static int
-__log_c_version_pp(logc, versionp, flags)
+__logc_version_pp(logc, versionp, flags)
DB_LOGC *logc;
u_int32_t *versionp;
u_int32_t flags;
@@ -175,19 +174,19 @@ __log_c_version_pp(logc, versionp, flags)
return (ret);
ENV_ENTER(dbenv, ip);
- REPLICATION_WRAP(dbenv, (__log_c_version(logc, versionp)), ret);
+ REPLICATION_WRAP(dbenv, (__logc_version(logc, versionp)), ret);
ENV_LEAVE(dbenv, ip);
return (ret);
}
/*
- * __log_c_version --
+ * __logc_version --
* DB_LOGC->version.
*
- * PUBLIC: int __log_c_version __P((DB_LOGC *, u_int32_t *));
+ * PUBLIC: int __logc_version __P((DB_LOGC *, u_int32_t *));
*/
int
-__log_c_version(logc, versionp)
+__logc_version(logc, versionp)
DB_LOGC *logc;
u_int32_t *versionp;
{
@@ -199,7 +198,7 @@ __log_c_version(logc, versionp)
int ret, t_ret;
dbenv = logc->dbenv;
- if (IS_ZERO_LSN(logc->c_lsn)) {
+ if (IS_ZERO_LSN(logc->lsn)) {
__db_errx(dbenv, "DB_LOGC->get: unset cursor");
return (EINVAL);
}
@@ -214,20 +213,20 @@ __log_c_version(logc, versionp)
* using this feature (i.e. printlog) we're likely to
* have the information we need.
*/
- if (logc->c_lsn.file != logc->p_lsn.file) {
+ if (logc->lsn.file != logc->p_lsn.file) {
if ((ret = __log_cursor(dbenv, &plogc)) != 0)
return (ret);
- plsn.file = logc->c_lsn.file;
+ plsn.file = logc->lsn.file;
plsn.offset = 0;
- plogc->c_lsn = plsn;
+ plogc->lsn = plsn;
memset(&hdrdbt, 0, sizeof(DBT));
- if ((ret = __log_c_get_int(plogc,
+ if ((ret = __logc_get_int(plogc,
&plsn, &hdrdbt, DB_SET)) == 0) {
persist = (LOGP *)hdrdbt.data;
- logc->p_lsn = logc->c_lsn;
+ logc->p_lsn = logc->lsn;
logc->p_version = persist->version;
}
- if ((t_ret = __log_c_close(plogc)) != 0 && ret == 0)
+ if ((t_ret = __logc_close(plogc)) != 0 && ret == 0)
ret = t_ret;
}
/* Return the version. */
@@ -237,11 +236,11 @@ __log_c_version(logc, versionp)
}
/*
- * __log_c_get_pp --
+ * __logc_get_pp --
* DB_LOGC->get pre/post processing.
*/
static int
-__log_c_get_pp(logc, alsn, dbt, flags)
+__logc_get_pp(logc, alsn, dbt, flags)
DB_LOGC *logc;
DB_LSN *alsn;
DBT *dbt;
@@ -275,19 +274,19 @@ __log_c_get_pp(logc, alsn, dbt, flags)
}
ENV_ENTER(dbenv, ip);
- REPLICATION_WRAP(dbenv, (__log_c_get(logc, alsn, dbt, flags)), ret);
+ REPLICATION_WRAP(dbenv, (__logc_get(logc, alsn, dbt, flags)), ret);
ENV_LEAVE(dbenv, ip);
return (ret);
}
/*
- * __log_c_get --
+ * __logc_get --
* DB_LOGC->get.
*
- * PUBLIC: int __log_c_get __P((DB_LOGC *, DB_LSN *, DBT *, u_int32_t));
+ * PUBLIC: int __logc_get __P((DB_LOGC *, DB_LSN *, DBT *, u_int32_t));
*/
int
-__log_c_get(logc, alsn, dbt, flags)
+__logc_get(logc, alsn, dbt, flags)
DB_LOGC *logc;
DB_LSN *alsn;
DBT *dbt;
@@ -320,7 +319,7 @@ __log_c_get(logc, alsn, dbt, flags)
* DB_FIRST, DB_NEXT, DB_LAST or DB_PREV, repeat the operation, log
* file header records aren't useful to applications.
*/
- if ((ret = __log_c_get_int(logc, alsn, dbt, flags)) != 0) {
+ if ((ret = __logc_get_int(logc, alsn, dbt, flags)) != 0) {
*alsn = saved_lsn;
return (ret);
}
@@ -349,7 +348,7 @@ __log_c_get(logc, alsn, dbt, flags)
__os_free(dbenv, dbt->data);
dbt->data = NULL;
}
- if ((ret = __log_c_get_int(logc, alsn, dbt, flags)) != 0) {
+ if ((ret = __logc_get_int(logc, alsn, dbt, flags)) != 0) {
*alsn = saved_lsn;
return (ret);
}
@@ -359,11 +358,11 @@ __log_c_get(logc, alsn, dbt, flags)
}
/*
- * __log_c_get_int --
+ * __logc_get_int --
* Get a log record; internal version.
*/
static int
-__log_c_get_int(logc, alsn, dbt, flags)
+__logc_get_int(logc, alsn, dbt, flags)
DB_LOGC *logc;
DB_LSN *alsn;
DBT *dbt;
@@ -393,12 +392,12 @@ __log_c_get_int(logc, alsn, dbt, flags)
*/
rlock = F_ISSET(logc, DB_LOG_LOCKED) ? L_ALREADY : L_NONE;
- nlsn = logc->c_lsn;
+ nlsn = logc->lsn;
switch (flags) {
case DB_NEXT: /* Next log record. */
if (!IS_ZERO_LSN(nlsn)) {
/* Increment the cursor by the cursor record size. */
- nlsn.offset += logc->c_len;
+ nlsn.offset += logc->len;
break;
}
flags = DB_FIRST;
@@ -464,7 +463,7 @@ __log_c_get_int(logc, alsn, dbt, flags)
--nlsn.file;
}
- nlsn.offset = logc->c_prev;
+ nlsn.offset = logc->prev;
break;
}
/* FALLTHROUGH */
@@ -480,7 +479,7 @@ __log_c_get_int(logc, alsn, dbt, flags)
nlsn = *alsn;
break;
default:
- ret = __db_unknown_path(dbenv, "__log_c_get_int");
+ ret = __db_unknown_path(dbenv, "__logc_get_int");
goto err;
}
@@ -506,7 +505,7 @@ next_file: ++nlsn.file;
* Check to see if the record is in the cursor's buffer -- if so,
* we'll need to checksum it.
*/
- if ((ret = __log_c_incursor(logc, &nlsn, &hdr, &rp)) != 0)
+ if ((ret = __logc_incursor(logc, &nlsn, &hdr, &rp)) != 0)
goto err;
if (rp != NULL)
goto cksum;
@@ -522,16 +521,16 @@ next_file: ++nlsn.file;
* end of the logical log (after recovery, there may be data after the
* end of the logical log, not to mention the log file may have been
* pre-allocated). So, zero out last_lsn, and initialize it inside
- * __log_c_inregion -- if it's still zero when we check it in
- * __log_c_ondisk, that's OK, it just means the logical end of the log
+ * __logc_inregion -- if it's still zero when we check it in
+ * __logc_ondisk, that's OK, it just means the logical end of the log
* isn't an issue for this request.
*/
ZERO_LSN(last_lsn);
if (!F_ISSET(logc, DB_LOG_DISK) ||
- LOG_COMPARE(&nlsn, &logc->c_lsn) > 0) {
+ LOG_COMPARE(&nlsn, &logc->lsn) > 0) {
F_CLR(logc, DB_LOG_DISK);
- if ((ret = __log_c_inregion(logc,
+ if ((ret = __logc_inregion(logc,
&nlsn, &rlock, &last_lsn, &hdr, &rp, &need_cksum)) != 0)
goto err;
if (rp != NULL) {
@@ -560,7 +559,7 @@ next_file: ++nlsn.file;
rlock = L_NONE;
LOG_SYSTEM_UNLOCK(dbenv);
}
- if ((ret = __log_c_ondisk(
+ if ((ret = __logc_ondisk(
logc, &nlsn, &last_lsn, flags, &hdr, &rp, &eof)) != 0)
goto err;
if (eof) {
@@ -654,7 +653,7 @@ from_memory:
/* Copy the record into the user's DBT. */
if ((ret = __db_retcopy(dbenv, dbt, rp + hdr.size,
(u_int32_t)(hdr.len - hdr.size),
- &logc->c_dbt.data, &logc->c_dbt.ulen)) != 0)
+ &logc->dbt.data, &logc->dbt.ulen)) != 0)
goto err;
if (CRYPTO_ON(dbenv)) {
@@ -675,9 +674,9 @@ from_memory:
/* Update the cursor and the returned LSN. */
*alsn = nlsn;
- logc->c_lsn = nlsn;
- logc->c_len = hdr.len;
- logc->c_prev = hdr.prev;
+ logc->lsn = nlsn;
+ logc->len = hdr.len;
+ logc->prev = hdr.prev;
err: if (rlock == L_ACQUIRED)
LOG_SYSTEM_UNLOCK(dbenv);
@@ -686,11 +685,11 @@ err: if (rlock == L_ACQUIRED)
}
/*
- * __log_c_incursor --
+ * __logc_incursor --
* Check to see if the requested record is in the cursor's buffer.
*/
static int
-__log_c_incursor(logc, lsn, hdr, pp)
+__logc_incursor(logc, lsn, hdr, pp)
DB_LOGC *logc;
DB_LSN *lsn;
HDR *hdr;
@@ -730,7 +729,7 @@ __log_c_incursor(logc, lsn, hdr, pp)
*/
p = logc->bp + (lsn->offset - logc->bp_lsn.offset);
memcpy(hdr, p, hdr->size);
- if (__log_c_hdrchk(logc, lsn, hdr, &eof))
+ if (__logc_hdrchk(logc, lsn, hdr, &eof))
return (DB_NOTFOUND);
if (eof || logc->bp_lsn.offset + logc->bp_rlen < lsn->offset + hdr->len)
return (0);
@@ -741,11 +740,11 @@ __log_c_incursor(logc, lsn, hdr, pp)
}
/*
- * __log_c_inregion --
+ * __logc_inregion --
* Check to see if the requested record is in the region's buffer.
*/
static int
-__log_c_inregion(logc, lsn, rlockp, last_lsn, hdr, pp, need_cksump)
+__logc_inregion(logc, lsn, rlockp, last_lsn, hdr, pp, need_cksump)
DB_LOGC *logc;
DB_LSN *lsn, *last_lsn;
RLOCK *rlockp;
@@ -834,7 +833,7 @@ __log_c_inregion(logc, lsn, rlockp, last_lsn, hdr, pp, need_cksump)
* byte, we know the entire record is in the buffer on a good LSN.
*
* If we're given a bad LSN, the "entire" record might not be in
- * our buffer in order to fail at the chksum. __log_c_hdrchk made
+ * our buffer in order to fail at the chksum. __logc_hdrchk made
* sure our dest buffer fits, via bp_maxrec, but we also need to
* make sure we don't run off the end of this buffer, the src.
*
@@ -847,7 +846,7 @@ __log_c_inregion(logc, lsn, rlockp, last_lsn, hdr, pp, need_cksump)
if (!lp->db_log_inmemory)
b_region = lsn->offset - lp->w_off;
__log_inmem_copyout(dblp, b_region, hdr, hdr->size);
- if (__log_c_hdrchk(logc, lsn, hdr, &eof) != 0)
+ if (__logc_hdrchk(logc, lsn, hdr, &eof) != 0)
return (DB_NOTFOUND);
if (eof)
return (0);
@@ -929,11 +928,11 @@ __log_c_inregion(logc, lsn, rlockp, last_lsn, hdr, pp, need_cksump)
if (b_disk != 0) {
p -= b_disk;
nr = b_disk;
- if ((ret = __log_c_io(
+ if ((ret = __logc_io(
logc, lsn->file, lsn->offset, p, &nr, NULL)) != 0)
return (ret);
if (nr < b_disk)
- return (__log_c_shortread(logc, lsn, 0));
+ return (__logc_shortread(logc, lsn, 0));
/* We read bytes from the disk, we'll need to checksum them. */
*need_cksump = 1;
@@ -947,11 +946,11 @@ __log_c_inregion(logc, lsn, rlockp, last_lsn, hdr, pp, need_cksump)
}
/*
- * __log_c_ondisk --
+ * __logc_ondisk --
* Read a record off disk.
*/
static int
-__log_c_ondisk(logc, lsn, last_lsn, flags, hdr, pp, eofp)
+__logc_ondisk(logc, lsn, last_lsn, flags, hdr, pp, eofp)
DB_LOGC *logc;
DB_LSN *lsn, *last_lsn;
u_int32_t flags;
@@ -969,7 +968,7 @@ __log_c_ondisk(logc, lsn, last_lsn, flags, hdr, pp, eofp)
nr = hdr->size;
if ((ret =
- __log_c_io(logc, lsn->file, lsn->offset, hdr, &nr, eofp)) != 0)
+ __logc_io(logc, lsn->file, lsn->offset, hdr, &nr, eofp)) != 0)
return (ret);
if (*eofp)
return (0);
@@ -987,7 +986,7 @@ __log_c_ondisk(logc, lsn, last_lsn, flags, hdr, pp, eofp)
}
/* Check the HDR. */
- if ((ret = __log_c_hdrchk(logc, lsn, hdr, eofp)) != 0)
+ if ((ret = __logc_hdrchk(logc, lsn, hdr, eofp)) != 0)
return (ret);
if (*eofp)
return (0);
@@ -1033,7 +1032,7 @@ __log_c_ondisk(logc, lsn, last_lsn, flags, hdr, pp, eofp)
nr = last_lsn->offset - offset;
if ((ret =
- __log_c_io(logc, lsn->file, offset, logc->bp, &nr, eofp)) != 0)
+ __logc_io(logc, lsn->file, offset, logc->bp, &nr, eofp)) != 0)
return (ret);
/*
@@ -1041,13 +1040,13 @@ __log_c_ondisk(logc, lsn, last_lsn, flags, hdr, pp, eofp)
* record we're reading.
*/
if (nr < (lsn->offset + hdr->len) - offset)
- return (__log_c_shortread(logc, lsn, 1));
+ return (__logc_shortread(logc, lsn, 1));
/*
* Set up the return information.
*
* !!!
- * No need to set the bp_lsn.file field, __log_c_io set it for us.
+ * No need to set the bp_lsn.file field, __logc_io set it for us.
*/
logc->bp_rlen = (u_int32_t)nr;
logc->bp_lsn.offset = offset;
@@ -1058,7 +1057,7 @@ __log_c_ondisk(logc, lsn, last_lsn, flags, hdr, pp, eofp)
}
/*
- * __log_c_hdrchk --
+ * __logc_hdrchk --
*
* Check for corrupted HDRs before we use them to allocate memory or find
* records.
@@ -1078,7 +1077,7 @@ __log_c_ondisk(logc, lsn, last_lsn, flags, hdr, pp, eofp)
* the middle of a log record, there's no way to tell.
*/
static int
-__log_c_hdrchk(logc, lsn, hdr, eofp)
+__logc_hdrchk(logc, lsn, hdr, eofp)
DB_LOGC *logc;
DB_LSN *lsn;
HDR *hdr;
@@ -1117,7 +1116,7 @@ __log_c_hdrchk(logc, lsn, hdr, eofp)
* we're reading the last file, it's growing, and our initial
* check information was wrong. Get it again, to be sure.
*/
- if ((ret = __log_c_set_maxrec(logc, NULL)) != 0) {
+ if ((ret = __logc_set_maxrec(logc, NULL)) != 0) {
__db_err(dbenv, ret, "DB_LOGC->get");
return (ret);
}
@@ -1134,11 +1133,11 @@ err: if (!F_ISSET(logc, DB_LOG_SILENT_ERR))
}
/*
- * __log_c_io --
+ * __logc_io --
* Read records from a log file.
*/
static int
-__log_c_io(logc, fnum, offset, p, nrp, eofp)
+__logc_io(logc, fnum, offset, p, nrp, eofp)
DB_LOGC *logc;
u_int32_t fnum, offset;
void *p;
@@ -1159,17 +1158,17 @@ __log_c_io(logc, fnum, offset, p, nrp, eofp)
* If we've switched files, discard the current file handle and acquire
* a new one.
*/
- if (logc->c_fhp != NULL && logc->bp_lsn.file != fnum) {
- ret = __os_closehandle(dbenv, logc->c_fhp);
- logc->c_fhp = NULL;
+ if (logc->fhp != NULL && logc->bp_lsn.file != fnum) {
+ ret = __os_closehandle(dbenv, logc->fhp);
+ logc->fhp = NULL;
logc->bp_lsn.file = 0;
if (ret != 0)
return (ret);
}
- if (logc->c_fhp == NULL) {
+ if (logc->fhp == NULL) {
if ((ret = __log_name(dblp, fnum,
- &np, &logc->c_fhp, DB_OSO_RDONLY | DB_OSO_SEQ)) != 0) {
+ &np, &logc->fhp, DB_OSO_RDONLY | DB_OSO_SEQ)) != 0) {
/*
* If we're allowed to return EOF, assume that's the
* problem, set the EOF status flag and return 0.
@@ -1183,7 +1182,7 @@ __log_c_io(logc, fnum, offset, p, nrp, eofp)
return (ret);
}
- if ((ret = __log_c_set_maxrec(logc, np)) != 0) {
+ if ((ret = __logc_set_maxrec(logc, np)) != 0) {
__db_err(dbenv, ret, "DB_LOGC->get: %s", np);
__os_free(dbenv, np);
return (ret);
@@ -1193,10 +1192,10 @@ __log_c_io(logc, fnum, offset, p, nrp, eofp)
logc->bp_lsn.file = fnum;
}
- ++lp->stat.st_rcount;
+ STAT(++lp->stat.st_rcount);
/* Seek to the record's offset and read the data. */
if ((ret = __os_io(dbenv, DB_IO_READ,
- logc->c_fhp, 0, 0, offset, (u_int32_t)*nrp, p, nrp)) != 0) {
+ logc->fhp, 0, 0, offset, (u_int32_t)*nrp, p, nrp)) != 0) {
if (!F_ISSET(logc, DB_LOG_SILENT_ERR))
__db_err(dbenv, ret,
"DB_LOGC->get: LSN: %lu/%lu: read",
@@ -1208,11 +1207,11 @@ __log_c_io(logc, fnum, offset, p, nrp, eofp)
}
/*
- * __log_c_shortread --
+ * __logc_shortread --
* Read was short -- return a consistent error message and error.
*/
static int
-__log_c_shortread(logc, lsn, check_silent)
+__logc_shortread(logc, lsn, check_silent)
DB_LOGC *logc;
DB_LSN *lsn;
int check_silent;
@@ -1224,11 +1223,11 @@ __log_c_shortread(logc, lsn, check_silent)
}
/*
- * __log_c_set_maxrec --
+ * __logc_set_maxrec --
* Bound the maximum log record size in a log file.
*/
static int
-__log_c_set_maxrec(logc, np)
+__logc_set_maxrec(logc, np)
DB_LOGC *logc;
char *np;
{
@@ -1250,8 +1249,8 @@ __log_c_set_maxrec(logc, np)
* of the file but that's hard -- we may have to decrypt it, checksum
* it and so on. Stat the file instead.
*/
- if (logc->c_fhp != NULL) {
- if ((ret = __os_ioinfo(dbenv, np, logc->c_fhp,
+ if (logc->fhp != NULL) {
+ if ((ret = __os_ioinfo(dbenv, np, logc->fhp,
&mbytes, &bytes, NULL)) != 0)
return (ret);
if (logc->bp_maxrec < (mbytes * MEGABYTE + bytes))
@@ -1302,9 +1301,6 @@ __log_rep_split(dbenv, rp, rec, ret_lsnp, last_lsnp)
u_int32_t len;
int is_dup, is_perm, ret, save_ret;
u_int8_t *p, *ep;
-#ifdef DIAGNOSTIC
- DB_MSGBUF mb;
-#endif
memset(&logrec, 0, sizeof(logrec));
memset(&save_lsn, 0, sizeof(save_lsn));
@@ -1340,10 +1336,10 @@ __log_rep_split(dbenv, rp, rec, ret_lsnp, last_lsnp)
p += sizeof(DB_LSN);
logrec.data = p;
logrec.size = len;
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"log_rep_split: Processing LSN [%lu][%lu]",
(u_long)tmprp.lsn.file, (u_long)tmprp.lsn.offset));
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"log_rep_split: p %#lx ep %#lx logrec data %#lx, size %lu (%#lx)",
P_TO_ULONG(p), P_TO_ULONG(ep), P_TO_ULONG(logrec.data),
(u_long)logrec.size, (u_long)logrec.size));
@@ -1353,7 +1349,7 @@ __log_rep_split(dbenv, rp, rec, ret_lsnp, last_lsnp)
F_SET(&tmprp, REPCTL_PERM);
ret = __rep_apply(dbenv,
&tmprp, &logrec, &tmp_lsn, &is_dup, last_lsnp);
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"log_split: rep_apply ret %d, tmp_lsn [%lu][%lu]",
ret, (u_long)tmp_lsn.file, (u_long)tmp_lsn.offset));
#if 0
diff --git a/db/log/log_method.c b/db/log/log_method.c
index 812330906..87d202901 100644
--- a/db/log/log_method.c
+++ b/db/log/log_method.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1999-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1999,2007 Oracle. All rights reserved.
*
- * $Id: log_method.c,v 12.10 2006/08/30 10:05:32 bostic Exp $
+ * $Id: log_method.c,v 12.13 2007/05/17 15:15:44 bostic Exp $
*/
#include "db_config.h"
@@ -13,13 +12,13 @@
#include "dbinc/log.h"
/*
- * __log_dbenv_create --
+ * __log_env_create --
* Log specific initialization of the DB_ENV structure.
*
- * PUBLIC: int __log_dbenv_create __P((DB_ENV *));
+ * PUBLIC: int __log_env_create __P((DB_ENV *));
*/
int
-__log_dbenv_create(dbenv)
+__log_env_create(dbenv)
DB_ENV *dbenv;
{
/*
@@ -35,13 +34,13 @@ __log_dbenv_create(dbenv)
}
/*
- * __log_dbenv_destroy --
+ * __log_env_destroy --
* Log specific destruction of the DB_ENV structure.
*
- * PUBLIC: void __log_dbenv_destroy __P((DB_ENV *));
+ * PUBLIC: void __log_env_destroy __P((DB_ENV *));
*/
void
-__log_dbenv_destroy(dbenv)
+__log_env_destroy(dbenv)
DB_ENV *dbenv;
{
COMPQUIET(dbenv, NULL);
diff --git a/db/log/log_put.c b/db/log/log_put.c
index 832a3b284..aeaa412a3 100644
--- a/db/log/log_put.c
+++ b/db/log/log_put.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: log_put.c,v 12.46 2006/08/24 14:46:12 bostic Exp $
+ * $Id: log_put.c,v 12.58 2007/05/30 12:36:55 mjc Exp $
*/
#include "db_config.h"
@@ -122,6 +121,7 @@ __log_put(dbenv, lsnp, udbt, flags)
return (EINVAL);
}
#endif
+ DB_ASSERT(dbenv, !IS_REP_CLIENT(dbenv));
/*
* If we are coming from the logging code, we use an internal flag,
@@ -172,10 +172,19 @@ __log_put(dbenv, lsnp, udbt, flags)
* Replication masters need to drop the lock to send messages,
* but want to drop and reacquire it a minimal number of times.
*/
- LOG_SYSTEM_UNLOCK(dbenv);
- lock_held = 0;
ctlflags = LF_ISSET(DB_LOG_COMMIT | DB_LOG_CHKPNT) ?
REPCTL_PERM : 0;
+ /*
+ * If using leases, keep track of our last PERM lsn.
+ * Set this on a master under the log lock.
+ */
+ if (IS_USING_LEASES(dbenv) &&
+ FLD_ISSET(ctlflags, REPCTL_PERM))
+ lp->max_perm_lsn = lsn;
+ LOG_SYSTEM_UNLOCK(dbenv);
+ lock_held = 0;
+ if (LF_ISSET(DB_FLUSH))
+ ctlflags |= REPCTL_FLUSH;
/*
* If we changed files and we're in a replicated environment,
@@ -238,9 +247,16 @@ __log_put(dbenv, lsnp, udbt, flags)
* Flush it, even if we're running with TXN_NOSYNC,
* on the grounds that it should be in durable
* form somewhere.
+ *
+ * If the send fails with this perm record and leases
+ * are in use, we need to forcibly expire all lease
+ * grants to prevent authoritative reads.
*/
- if (ret != 0 && FLD_ISSET(ctlflags, REPCTL_PERM))
+ if (ret != 0 && FLD_ISSET(ctlflags, REPCTL_PERM)) {
LF_SET(DB_FLUSH);
+ if (IS_USING_LEASES(dbenv))
+ (void)__rep_lease_expire(dbenv, 0);
+ }
/*
* We ignore send failures so reset 'ret' to 0 here.
* We needed to check special return values from
@@ -276,7 +292,7 @@ __log_put(dbenv, lsnp, udbt, flags)
lp->stat.st_wc_bytes = lp->stat.st_wc_mbytes = 0;
/* Increment count of records added to the log. */
- ++lp->stat.st_record;
+ STAT(++lp->stat.st_record);
if (0) {
panic_check: /*
@@ -572,9 +588,12 @@ __log_newfile(dblp, lsnp, logfile, version)
lp->w_off = 0;
if (lp->db_log_inmemory) {
lsn = lp->lsn;
- (void)__log_vtruncate(dbenv, &lsn, &lsn, NULL);
- } else if ((ret = __log_newfh(dblp, 1)) != 0)
- return (ret);
+ (void)__log_zero(dbenv, &lsn);
+ } else {
+ lp->s_lsn = lp->lsn;
+ if ((ret = __log_newfh(dblp, 1)) != 0)
+ return (ret);
+ }
}
DB_ASSERT(dbenv, lp->db_log_inmemory || lp->b_off == 0);
@@ -597,6 +616,7 @@ __log_newfile(dblp, lsnp, logfile, version)
tsize += db_cipher->adj_size(tsize);
if ((ret = __os_calloc(dbenv, 1, tsize, &tmp)) != 0)
return (ret);
+ need_free = 1;
/*
* If we're told what version to make this file, then we
* need to be at that version. Update here.
@@ -609,7 +629,6 @@ __log_newfile(dblp, lsnp, logfile, version)
lp->persist.log_size = lp->log_size = lp->log_nsize;
memcpy(tmp, &lp->persist, sizeof(LOGP));
DB_SET_DBT(t, tmp, tsize);
- need_free = 1;
if ((ret =
__log_encrypt_record(dbenv, &t, &hdr, (u_int32_t)tsize)) != 0)
@@ -845,7 +864,7 @@ __log_flush_int(dblp, lsnp, release)
if (lp->db_log_inmemory) {
lp->s_lsn = lp->lsn;
- ++lp->stat.st_scount;
+ STAT(++lp->stat.st_scount);
return (0);
}
@@ -882,13 +901,13 @@ __log_flush_int(dblp, lsnp, release)
if (release && lp->in_flush != 0) {
if ((commit = SH_TAILQ_FIRST(
&lp->free_commits, __db_commit)) == NULL) {
- if ((ret = __db_shalloc(&dblp->reginfo,
- sizeof(struct __db_commit), 0, &commit)) != 0)
+ if ((ret = __env_alloc(&dblp->reginfo,
+ sizeof(struct __db_commit), &commit)) != 0)
goto flush;
memset(commit, 0, sizeof(*commit));
if ((ret = __mutex_alloc(dbenv, MTX_TXN_COMMIT,
DB_MUTEX_SELF_BLOCK, &commit->mtx_txnwait)) != 0) {
- __db_shalloc_free(&dblp->reginfo, commit);
+ __env_alloc_free(&dblp->reginfo, commit);
return (ret);
}
MUTEX_LOCK(dbenv, commit->mtx_txnwait);
@@ -1010,7 +1029,7 @@ flush: MUTEX_LOCK(dbenv, lp->mtx_flush);
LOG_SYSTEM_LOCK(dbenv);
lp->in_flush--;
- ++lp->stat.st_scount;
+ STAT(++lp->stat.st_scount);
/*
* How many flush calls (usually commits) did this call actually sync?
@@ -1041,11 +1060,13 @@ done:
first = 0;
}
}
+#ifdef HAVE_STATISTICS
if (lp->stat.st_maxcommitperflush < ncommit)
lp->stat.st_maxcommitperflush = ncommit;
if (lp->stat.st_mincommitperflush > ncommit ||
lp->stat.st_mincommitperflush == 0)
lp->stat.st_mincommitperflush = ncommit;
+#endif
return (ret);
}
@@ -1095,7 +1116,7 @@ __log_fill(dblp, lsn, addr, len)
return (ret);
addr = (u_int8_t *)addr + nrec * bsize;
len -= nrec * bsize;
- ++lp->stat.st_wcount_fill;
+ STAT(++lp->stat.st_wcount_fill);
continue;
}
@@ -1112,7 +1133,7 @@ __log_fill(dblp, lsn, addr, len)
if ((ret = __log_write(dblp, dblp->bufp, bsize)) != 0)
return (ret);
lp->b_off = 0;
- ++lp->stat.st_wcount_fill;
+ STAT(++lp->stat.st_wcount_fill);
}
}
return (0);
@@ -1177,15 +1198,17 @@ __log_write(dblp, addr, len)
lp->w_off += len;
/* Update written statistics. */
- if ((lp->stat.st_w_bytes += len) >= MEGABYTE) {
- lp->stat.st_w_bytes -= MEGABYTE;
- ++lp->stat.st_w_mbytes;
- }
if ((lp->stat.st_wc_bytes += len) >= MEGABYTE) {
lp->stat.st_wc_bytes -= MEGABYTE;
++lp->stat.st_wc_mbytes;
}
+#ifdef HAVE_STATISTICS
+ if ((lp->stat.st_w_bytes += len) >= MEGABYTE) {
+ lp->stat.st_w_bytes -= MEGABYTE;
+ ++lp->stat.st_w_mbytes;
+ }
++lp->stat.st_wcount;
+#endif
return (0);
}
@@ -1356,7 +1379,7 @@ __log_name(dblp, filenumber, namep, fhpp, flags)
/* Open the new-style file -- if we succeed, we're done. */
dblp->lf_timestamp = lp->timestamp;
- if ((ret = __os_open_extend(dbenv, *namep, 0, flags, mode, fhpp)) == 0)
+ if ((ret = __os_open(dbenv, *namep, 0, flags, mode, fhpp)) == 0)
return (0);
/*
@@ -1388,7 +1411,7 @@ __log_name(dblp, filenumber, namep, fhpp, flags)
* space allocated for the new-style name and return the old-style
* name to the caller.
*/
- if ((ret = __os_open(dbenv, oname, flags, mode, fhpp)) == 0) {
+ if ((ret = __os_open(dbenv, oname, 0, flags, mode, fhpp)) == 0) {
__os_free(dbenv, *namep);
*namep = oname;
return (0);
@@ -1417,13 +1440,14 @@ err: __os_free(dbenv, oname);
* Note that the REP->mtx_clientdb should be held when this is called.
* Note that we acquire the log region mutex while holding mtx_clientdb.
*
- * PUBLIC: int __log_rep_put __P((DB_ENV *, DB_LSN *, const DBT *));
+ * PUBLIC: int __log_rep_put __P((DB_ENV *, DB_LSN *, const DBT *, u_int32_t));
*/
int
-__log_rep_put(dbenv, lsnp, rec)
+__log_rep_put(dbenv, lsnp, rec, flags)
DB_ENV *dbenv;
DB_LSN *lsnp;
const DBT *rec;
+ u_int32_t flags;
{
DB_CIPHER *db_cipher;
DB_LOG *dblp;
@@ -1460,6 +1484,12 @@ err:
* !!! Assume caller holds REP->mtx_clientdb to modify ready_lsn.
*/
lp->ready_lsn = lp->lsn;
+
+ if (LF_ISSET(DB_LOG_CHKPNT))
+ lp->stat.st_wc_bytes = lp->stat.st_wc_mbytes = 0;
+
+ /* Increment count of records added to the log. */
+ STAT(++lp->stat.st_record);
LOG_SYSTEM_UNLOCK(dbenv);
if (need_free)
__os_free(dbenv, t.data);
diff --git a/db/log/log_register.c b/db/log/log_register.c
deleted file mode 100644
index 1e0e523d8..000000000
--- a/db/log/log_register.c
+++ /dev/null
@@ -1,433 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1996, 1997, 1998, 1999, 2000
- * Sleepycat Software. All rights reserved.
- */
-#include "db_config.h"
-
-#ifndef lint
-static const char revid[] = "$Id: log_register.c,v 11.35 2001/01/10 16:04:19 bostic Exp $";
-#endif /* not lint */
-
-#ifndef NO_SYSTEM_INCLUDES
-#include <sys/types.h>
-
-#include <string.h>
-#endif
-
-#ifdef HAVE_RPC
-#include "db_server.h"
-#endif
-
-#include "db_int.h"
-#include "log.h"
-
-#ifdef HAVE_RPC
-#include "gen_client_ext.h"
-#include "rpc_client_ext.h"
-#endif
-
-/*
- * log_register --
- * Register a file name.
- */
-int
-log_register(dbenv, dbp, name)
- DB_ENV *dbenv;
- DB *dbp;
- const char *name;
-{
- DBT fid_dbt, r_name;
- DB_LOG *dblp;
- DB_LSN r_unused;
- FNAME *found_fnp, *fnp, *recover_fnp, *reuse_fnp;
- LOG *lp;
- size_t len;
- int32_t maxid;
- int inserted, ok, ret;
- void *namep;
-
-#ifdef HAVE_RPC
- if (F_ISSET(dbenv, DB_ENV_RPCCLIENT))
- return (__dbcl_log_register(dbenv, dbp, name));
-#endif
-
- PANIC_CHECK(dbenv);
- ENV_REQUIRES_CONFIG(dbenv, dbenv->lg_handle, DB_INIT_LOG);
-
- dblp = dbenv->lg_handle;
- lp = dblp->reginfo.primary;
- fnp = reuse_fnp = NULL;
- inserted = ret = 0;
- namep = NULL;
-
- /* Check the arguments. */
- if (dbp->type != DB_BTREE && dbp->type != DB_QUEUE &&
- dbp->type != DB_HASH && dbp->type != DB_RECNO) {
- __db_err(dbenv, "log_register: unknown DB file type");
- return (EINVAL);
- }
-
- R_LOCK(dbenv, &dblp->reginfo);
-
- /*
- * See if we've already got this file in the log, finding the
- * (maximum+1) in-use file id and some available file id (if we
- * find an available fid, we'll use it, else we'll have to allocate
- * one after the maximum that we found).
- */
- ok = 0;
- found_fnp = recover_fnp = NULL;
- for (maxid = 0, fnp = SH_TAILQ_FIRST(&lp->fq, __fname);
- fnp != NULL; fnp = SH_TAILQ_NEXT(fnp, q, __fname)) {
- if (F_ISSET(dblp, DBLOG_RECOVER) && fnp->id == dbp->log_fileid)
- recover_fnp = fnp;
- if (fnp->ref == 0) { /* Entry is not in use. */
- if (reuse_fnp == NULL)
- reuse_fnp = fnp;
- continue;
- }
- if (memcmp(dbp->fileid, fnp->ufid, DB_FILE_ID_LEN) == 0) {
- if (fnp->meta_pgno == 0) {
- if (fnp->locked == 1) {
- __db_err(dbenv, "File is locked");
- return (EINVAL);
- }
- if (found_fnp != NULL) {
- fnp = found_fnp;
- goto found;
- }
- ok = 1;
- }
- if (dbp->meta_pgno == fnp->meta_pgno) {
- if (F_ISSET(dblp, DBLOG_RECOVER)) {
- if (fnp->id != dbp->log_fileid) {
- /*
- * If we are in recovery, there
- * is only one dbp on the list.
- * If the refcount goes to 0,
- * we will clear the list. If
- * it doesn't, we want to leave
- * the dbp where it is, so
- * passing a NULL to rem_logid
- * is correct.
- */
- __log_rem_logid(dblp,
- NULL, fnp->id);
- if (recover_fnp != NULL)
- break;
- continue;
- }
- fnp->ref = 1;
- goto found;
- }
- ++fnp->ref;
- if (ok)
- goto found;
- found_fnp = fnp;
- }
- }
- if (maxid <= fnp->id)
- maxid = fnp->id + 1;
- }
- if ((fnp = found_fnp) != NULL)
- goto found;
-
- /* Fill in fnp structure. */
- if (recover_fnp != NULL) /* This has the right number */
- fnp = recover_fnp;
- else if (reuse_fnp != NULL) /* Reuse existing one. */
- fnp = reuse_fnp;
- else { /* Allocate a new one. */
- if ((ret = __db_shalloc(dblp->reginfo.addr,
- sizeof(FNAME), 0, &fnp)) != 0)
- goto mem_err;
- fnp->id = maxid;
- }
-
- if (F_ISSET(dblp, DBLOG_RECOVER))
- fnp->id = dbp->log_fileid;
-
- fnp->ref = 1;
- fnp->locked = 0;
- fnp->s_type = dbp->type;
- memcpy(fnp->ufid, dbp->fileid, DB_FILE_ID_LEN);
- fnp->meta_pgno = dbp->meta_pgno;
-
- if (name != NULL) {
- len = strlen(name) + 1;
- if ((ret =
- __db_shalloc(dblp->reginfo.addr, len, 0, &namep)) != 0) {
-mem_err: __db_err(dbenv,
- "Unable to allocate memory to register %s", name);
- goto err;
- }
- fnp->name_off = R_OFFSET(&dblp->reginfo, namep);
- memcpy(namep, name, len);
- } else
- fnp->name_off = INVALID_ROFF;
-
- /* Only do the insert if we allocated a new fnp. */
- if (reuse_fnp == NULL && recover_fnp == NULL)
- SH_TAILQ_INSERT_HEAD(&lp->fq, fnp, q, __fname);
- inserted = 1;
-
- /* Log the registry. */
- if (!F_ISSET(dblp, DBLOG_RECOVER)) {
- /*
- * We allow logging on in-memory databases, so the name here
- * could be NULL.
- */
- if (name != NULL) {
- r_name.data = (void *)name;
- r_name.size = strlen(name) + 1;
- }
- memset(&fid_dbt, 0, sizeof(fid_dbt));
- fid_dbt.data = dbp->fileid;
- fid_dbt.size = DB_FILE_ID_LEN;
- if ((ret = __log_register_log(dbenv, NULL, &r_unused,
- 0, LOG_OPEN, name == NULL ? NULL : &r_name,
- &fid_dbt, fnp->id, dbp->type, dbp->meta_pgno)) != 0)
- goto err;
- }
-
-found: /*
- * If we found the entry in the shared area, then the file is
- * already open, so there is no need to log the open. We only
- * log the open and closes on the first open and last close.
- */
- if (!F_ISSET(dblp, DBLOG_RECOVER) &&
- (ret = __log_add_logid(dbenv, dblp, dbp, fnp->id)) != 0)
- goto err;
-
- if (!F_ISSET(dblp, DBLOG_RECOVER))
- dbp->log_fileid = fnp->id;
-
- if (0) {
-err: if (inserted)
- SH_TAILQ_REMOVE(&lp->fq, fnp, q, __fname);
- if (namep != NULL)
- __db_shalloc_free(dblp->reginfo.addr, namep);
- if (fnp != NULL)
- __db_shalloc_free(dblp->reginfo.addr, fnp);
- }
-
- R_UNLOCK(dbenv, &dblp->reginfo);
-
- return (ret);
-}
-
-/*
- * log_unregister --
- * Discard a registered file name.
- */
-int
-log_unregister(dbenv, dbp)
- DB_ENV *dbenv;
- DB *dbp;
-{
- int ret;
-
-#ifdef HAVE_RPC
- if (F_ISSET(dbenv, DB_ENV_RPCCLIENT))
- return (__dbcl_log_unregister(dbenv, dbp));
-#endif
-
- PANIC_CHECK(dbenv);
- ENV_REQUIRES_CONFIG(dbenv, dbenv->lg_handle, DB_INIT_LOG);
-
- ret = __log_filelist_update(dbenv, dbp, dbp->log_fileid, NULL, NULL);
- dbp->log_fileid = DB_LOGFILEID_INVALID;
- return (ret);
-}
-
-/*
- * PUBLIC: int __log_filelist_update
- * PUBLIC: __P((DB_ENV *, DB *, int32_t, const char *, int *));
- *
- * Utility player for updating and logging the file list. Called
- * for 3 reasons:
- * 1) mark file closed: newname == NULL.
- * 2) change filename: newname != NULL.
- * 3) from recovery to verify & change filename if necessary, set != NULL.
- */
-int
-__log_filelist_update(dbenv, dbp, fid, newname, set)
- DB_ENV *dbenv;
- DB *dbp;
- int32_t fid;
- const char *newname;
- int *set;
-{
- DBT fid_dbt, r_name;
- DB_LOG *dblp;
- DB_LSN r_unused;
- FNAME *fnp;
- LOG *lp;
- u_int32_t len, newlen;
- int ret;
- void *namep;
-
- ret = 0;
- dblp = dbenv->lg_handle;
- lp = dblp->reginfo.primary;
-
- R_LOCK(dbenv, &dblp->reginfo);
-
- /* Find the entry in the log. */
- for (fnp = SH_TAILQ_FIRST(&lp->fq, __fname);
- fnp != NULL; fnp = SH_TAILQ_NEXT(fnp, q, __fname))
- if (fid == fnp->id)
- break;
- if (fnp == NULL) {
- __db_err(dbenv, "log_unregister: non-existent file id");
- ret = EINVAL;
- goto ret1;
- }
-
- /*
- * Log the unregistry only if this is the last one and we are
- * really closing the file or if this is an abort of a created
- * file and we need to make sure there is a record in the log.
- */
- namep = NULL;
- len = 0;
- if (fnp->name_off != INVALID_ROFF) {
- namep = R_ADDR(&dblp->reginfo, fnp->name_off);
- len = strlen(namep) + 1;
- }
- if (!F_ISSET(dblp, DBLOG_RECOVER) && fnp->ref == 1) {
- if (namep != NULL) {
- memset(&r_name, 0, sizeof(r_name));
- r_name.data = namep;
- r_name.size = len;
- }
- memset(&fid_dbt, 0, sizeof(fid_dbt));
- fid_dbt.data = fnp->ufid;
- fid_dbt.size = DB_FILE_ID_LEN;
- if ((ret = __log_register_log(dbenv, NULL, &r_unused,
- 0, LOG_CLOSE,
- fnp->name_off == INVALID_ROFF ? NULL : &r_name,
- &fid_dbt, fid, fnp->s_type, fnp->meta_pgno))
- != 0)
- goto ret1;
- }
-
- /*
- * If we are changing the name we must log this fact.
- */
- if (newname != NULL) {
- DB_ASSERT(fnp->ref == 1);
- newlen = strlen(newname) + 1;
- if (!F_ISSET(dblp, DBLOG_RECOVER)) {
- r_name.data = (void *) newname;
- r_name.size = newlen;
- if ((ret = __log_register_log(dbenv,
- NULL, &r_unused, 0, LOG_OPEN, &r_name, &fid_dbt,
- fnp->id, fnp->s_type, fnp->meta_pgno)) != 0)
- goto ret1;
- }
-
- /*
- * Check to see if the name is already correct.
- */
- if (set != NULL) {
- if (len != newlen || memcmp(namep, newname, len) != 0)
- *set = 1;
- else {
- *set = 0;
- goto ret1;
- }
- }
-
- /*
- * Change the name, realloc memory if necessary
- */
- if (len < newlen) {
- __db_shalloc_free(dblp->reginfo.addr,
- R_ADDR(&dblp->reginfo, fnp->name_off));
- if ((ret = __db_shalloc(
- dblp->reginfo.addr, newlen, 0, &namep)) != 0) {
- __db_err(dbenv,
- "Unable to allocate memory to register %s",
- newname);
- goto ret1;
- }
- fnp->name_off = R_OFFSET(&dblp->reginfo, namep);
- } else
- namep = R_ADDR(&dblp->reginfo, fnp->name_off);
- memcpy(namep, newname, newlen);
- } else {
-
- /*
- * If more than 1 reference, just decrement the reference
- * and return. Otherwise, free the name if one exists.
- */
- DB_ASSERT(fnp->ref >= 1);
- --fnp->ref;
- if (fnp->ref == 0) {
- if (fnp->name_off != INVALID_ROFF)
- __db_shalloc_free(dblp->reginfo.addr,
- R_ADDR(&dblp->reginfo, fnp->name_off));
- fnp->name_off = INVALID_ROFF;
- }
-
- /*
- * Remove from the process local table. If this
- * operation is taking place during recovery, then
- * the logid was never added to the table, so do not remove it.
- */
- if (!F_ISSET(dblp, DBLOG_RECOVER))
- __log_rem_logid(dblp, dbp, fid);
- }
-
-ret1: R_UNLOCK(dbenv, &dblp->reginfo);
- return (ret);
-}
-
-/*
- * __log_file_lock -- lock a file for single access
- * This only works if logging is on.
- *
- * PUBLIC: int __log_file_lock __P((DB *));
- */
-int
-__log_file_lock(dbp)
- DB *dbp;
-{
- DB_ENV *dbenv;
- DB_LOG *dblp;
- FNAME *fnp;
- LOG *lp;
- int ret;
-
- dbenv = dbp->dbenv;
- dblp = dbenv->lg_handle;
- lp = dblp->reginfo.primary;
-
- ret = 0;
- R_LOCK(dbenv, &dblp->reginfo);
-
- for (fnp = SH_TAILQ_FIRST(&lp->fq, __fname);
- fnp != NULL; fnp = SH_TAILQ_NEXT(fnp, q, __fname)) {
- if (fnp->ref == 0)
- continue;
-
- if (!memcmp(dbp->fileid, fnp->ufid, DB_FILE_ID_LEN)) {
- if (fnp->meta_pgno == 0) {
- if (fnp->ref != 1)
- goto err;
-
- fnp->locked = 1;
- } else {
-err: __db_err(dbp->dbenv, "File is open");
- ret = EINVAL;
- goto done;
- }
-
- }
- }
-done: R_UNLOCK(dbenv, &dblp->reginfo);
- return (ret);
-}
diff --git a/db/log/log_stat.c b/db/log/log_stat.c
index 150db3533..21b156081 100644
--- a/db/log/log_stat.c
+++ b/db/log/log_stat.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: log_stat.c,v 12.13 2006/08/24 14:46:12 bostic Exp $
+ * $Id: log_stat.c,v 12.17 2007/05/17 15:15:44 bostic Exp $
*/
#include "db_config.h"
@@ -85,7 +84,7 @@ __log_stat(dbenv, statp, flags)
__mutex_set_wait_info(dbenv, lp->mtx_region,
&stats->st_region_wait, &stats->st_region_nowait);
- if (LF_ISSET(DB_STAT_CLEAR))
+ if (LF_ISSET(DB_STAT_CLEAR | DB_STAT_SUBSYSTEM) == DB_STAT_CLEAR)
__mutex_clear(dbenv, lp->mtx_region);
stats->st_regsize = dblp->reginfo.rp->size;
@@ -143,7 +142,7 @@ __log_stat_print(dbenv, flags)
int ret;
orig_flags = flags;
- LF_CLR(DB_STAT_CLEAR);
+ LF_CLR(DB_STAT_CLEAR | DB_STAT_SUBSYSTEM);
if (flags == 0 || LF_ISSET(DB_STAT_ALL)) {
ret = __log_print_stats(dbenv, orig_flags);
if (flags == 0 || ret != 0)
@@ -242,7 +241,7 @@ __log_print_all(dbenv, flags)
LOG_SYSTEM_LOCK(dbenv);
- __db_print_reginfo(dbenv, &dblp->reginfo, "Log");
+ __db_print_reginfo(dbenv, &dblp->reginfo, "Log", flags);
__db_msg(dbenv, "%s", DB_GLOBAL(db_line));
__db_msg(dbenv, "DB_LOG handle information:");
diff --git a/db/mod_db4/Makefile.in b/db/mod_db4/Makefile.in
index 95e829a49..70d09e44e 100644
--- a/db/mod_db4/Makefile.in
+++ b/db/mod_db4/Makefile.in
@@ -1,6 +1,5 @@
#
-# Copyright (c) 2004-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2004,2007 Oracle. All rights reserved.
#
# http://www.apache.org/licenses/LICENSE-2.0.txt
#
diff --git a/db/mod_db4/configure.in b/db/mod_db4/configure.in
index cf454d483..7a4ff71b6 100644
--- a/db/mod_db4/configure.in
+++ b/db/mod_db4/configure.in
@@ -1,6 +1,5 @@
#
-# Copyright (c) 2004-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2004,2007 Oracle. All rights reserved.
#
# http://www.apache.org/licenses/LICENSE-2.0.txt
#
diff --git a/db/mod_db4/mm_hash.c b/db/mod_db4/mm_hash.c
index 33724b409..b8d7766b9 100644
--- a/db/mod_db4/mm_hash.c
+++ b/db/mod_db4/mm_hash.c
@@ -1,6 +1,5 @@
/*-
- * Copyright (c) 2004-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2004,2007 Oracle. All rights reserved.
*
* http://www.apache.org/licenses/LICENSE-2.0.txt
*
diff --git a/db/mod_db4/mm_hash.h b/db/mod_db4/mm_hash.h
index 28686c572..651947912 100644
--- a/db/mod_db4/mm_hash.h
+++ b/db/mod_db4/mm_hash.h
@@ -1,6 +1,5 @@
/*-
- * Copyright (c) 2004-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2004,2007 Oracle. All rights reserved.
*
* http://www.apache.org/licenses/LICENSE-2.0.txt
*
diff --git a/db/mod_db4/mod_db4.c b/db/mod_db4/mod_db4.c
index d8b1984b2..ee481d652 100644
--- a/db/mod_db4/mod_db4.c
+++ b/db/mod_db4/mod_db4.c
@@ -1,6 +1,5 @@
/*-
- * Copyright (c) 2004-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2004,2007 Oracle. All rights reserved.
*
* http://www.apache.org/licenses/LICENSE-2.0.txt
*
diff --git a/db/mod_db4/mod_db4_export.h b/db/mod_db4/mod_db4_export.h
index f8d39dd1b..e23d0d723 100644
--- a/db/mod_db4/mod_db4_export.h
+++ b/db/mod_db4/mod_db4_export.h
@@ -1,6 +1,5 @@
/*-
- * Copyright (c) 2004-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2004,2007 Oracle. All rights reserved.
*
* http://www.apache.org/licenses/LICENSE-2.0.txt
*
diff --git a/db/mod_db4/sem_utils.c b/db/mod_db4/sem_utils.c
index 7ba7c1a7f..1b8078f45 100644
--- a/db/mod_db4/sem_utils.c
+++ b/db/mod_db4/sem_utils.c
@@ -1,6 +1,5 @@
/*-
- * Copyright (c) 2004-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2004,2007 Oracle. All rights reserved.
*
* http://www.apache.org/licenses/LICENSE-2.0.txt
*
diff --git a/db/mod_db4/sem_utils.h b/db/mod_db4/sem_utils.h
index 96f0216e2..e67bb24b5 100644
--- a/db/mod_db4/sem_utils.h
+++ b/db/mod_db4/sem_utils.h
@@ -1,6 +1,5 @@
/*-
- * Copyright (c) 2004-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2004,2007 Oracle. All rights reserved.
*
* http://www.apache.org/licenses/LICENSE-2.0.txt
*
diff --git a/db/mod_db4/utils.c b/db/mod_db4/utils.c
index ed346d27e..51efc1130 100644
--- a/db/mod_db4/utils.c
+++ b/db/mod_db4/utils.c
@@ -1,6 +1,5 @@
/*-
- * Copyright (c) 2004-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2004,2007 Oracle. All rights reserved.
*
* http://www.apache.org/licenses/LICENSE-2.0.txt
*
@@ -470,11 +469,11 @@ static int new_dbc_dup(DBC *oldcursor, DBC **newcursor, u_int32_t flags)
if((ret = old_dbc_dup(oldcursor, newcursor, flags)) == 0) {
register_cursor(*newcursor);
- /* overload DBC->c_close */
- (*newcursor)->c_close = oldcursor->c_close;
+ /* overload DBC->close */
+ (*newcursor)->close = oldcursor->close;
- /* overload DBC->c_dup */
- (*newcursor)->c_dup = oldcursor->c_dup;
+ /* overload DBC->dup */
+ (*newcursor)->dup = oldcursor->dup;
}
return ret;
}
@@ -486,17 +485,17 @@ static int new_db_cursor(DB *db, DB_TXN *txnid, DBC **cursop, u_int32_t flags)
if((ret = old_db_cursor(db, txnid, cursop, flags)) == 0) {
register_cursor(*cursop);
- /* overload DBC->c_close */
+ /* overload DBC->close */
if(old_dbc_close == NULL) {
- old_dbc_close = (*cursop)->c_close;
+ old_dbc_close = (*cursop)->close;
}
- (*cursop)->c_close = new_dbc_close;
+ (*cursop)->close = new_dbc_close;
- /* overload DBC->c_dup */
+ /* overload DBC->dup */
if(old_dbc_dup == NULL) {
- old_dbc_dup = (*cursop)->c_dup;
+ old_dbc_dup = (*cursop)->dup;
}
- (*cursop)->c_dup = new_dbc_dup;
+ (*cursop)->dup = new_dbc_dup;
}
return ret;
}
@@ -523,7 +522,7 @@ int mod_db4_db_env_create(DB_ENV **dbenvp, u_int32_t flags)
/* grab context info from httpd.conf for error file */
/* grab context info for cachesize */
if (0 && cachesize) {
- if(( ret = dbenv->set_cachesize(dbenv, 0, cachesize, 0)) != 0) {
+ if ((ret = dbenv->set_cachesize(dbenv, 0, cachesize, 0)) != 0) {
dbenv->err(dbenv, ret, "set_cachesize");
dbenv->close(dbenv, 0);
}
@@ -593,7 +592,7 @@ void mod_db4_child_clean_request_shutdown()
DBC *cursor;
DB_TXN *transaction;
while(cursor = (DBC *)skiplist_pop(&open_cursors, NULL)) {
- cursor->c_close(cursor);
+ cursor->close(cursor);
}
while(transaction = (DB_TXN *)skiplist_pop(&open_transactions, NULL)) {
transaction->abort(transaction);
diff --git a/db/mod_db4/utils.h b/db/mod_db4/utils.h
index 8f718310f..9230c1e00 100644
--- a/db/mod_db4/utils.h
+++ b/db/mod_db4/utils.h
@@ -1,6 +1,5 @@
/*-
- * Copyright (c) 2004-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2004,2007 Oracle. All rights reserved.
*
* http://www.apache.org/licenses/LICENSE-2.0.txt
*
diff --git a/db/mp/Design b/db/mp/Design
deleted file mode 100644
index 1b26aae6c..000000000
--- a/db/mp/Design
+++ /dev/null
@@ -1,52 +0,0 @@
-$Id: Design,v 11.2 1999/11/21 23:08:27 bostic Exp $
-
-There are three ways we do locking in the mpool code:
-
-Locking a handle mutex to provide concurrency for DB_THREAD operations.
-Locking the region mutex to provide mutual exclusion while reading and
- writing structures in the shared region.
-Locking buffer header mutexes during I/O.
-
-The first will not be further described here. We use the shared mpool
-region lock to provide mutual exclusion while reading/modifying all of
-the data structures, including the buffer headers. We use a per-buffer
-header lock to wait on buffer I/O. The order of locking is as follows:
-
-Searching for a buffer:
- Acquire the region lock.
- Find the buffer header.
- Increment the reference count (guarantee the buffer stays).
- While the BH_LOCKED flag is set (I/O is going on) {
- Release the region lock.
- Explicitly yield the processor if it's not the first pass
- through this loop, otherwise, we can simply spin because
- we'll be simply switching between the two locks.
- Request the buffer lock.
- The I/O will complete...
- Acquire the buffer lock.
- Release the buffer lock.
- Acquire the region lock.
- }
- Return the buffer.
-
-Reading/writing a buffer:
- Acquire the region lock.
- Find/create the buffer header.
- If reading, increment the reference count (guarantee the buffer stays).
- Set the BH_LOCKED flag.
- Acquire the buffer lock (guaranteed not to block).
- Release the region lock.
- Do the I/O and/or initialize the buffer contents.
- Release the buffer lock.
- At this point, the buffer lock is available, but the logical
- operation (flagged by BH_LOCKED) is not yet completed. For
- this reason, among others, threads checking the BH_LOCKED flag
- must loop around their test.
- Acquire the region lock.
- Clear the BH_LOCKED flag.
- Release the region lock.
- Return/discard the buffer.
-
-Pointers to DB_MPOOL, MPOOL, DB_MPOOLFILE and MPOOLFILE structures are
-not reacquired when a region lock is reacquired because they couldn't
-have been closed/discarded and because they never move in memory.
diff --git a/db/mp/mp_alloc.c b/db/mp/mp_alloc.c
index 0619d5ccf..c18e62dff 100644
--- a/db/mp/mp_alloc.c
+++ b/db/mp/mp_alloc.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: mp_alloc.c,v 12.20 2006/09/07 15:11:26 mjc Exp $
+ * $Id: mp_alloc.c,v 12.33 2007/06/01 18:32:44 bostic Exp $
*/
#include "db_config.h"
@@ -38,7 +37,6 @@ __memp_alloc(dbmp, infop, mfp, len, offsetp, retp)
MPOOL *c_mp;
MPOOLFILE *bh_mfp;
size_t freed_space;
- db_mutex_t mutex;
u_int32_t buckets, buffers, high_priority, priority;
u_int32_t put_counter, total_buckets;
int aggressive, alloc_freeze, giveup, got_oldest, ret;
@@ -54,7 +52,7 @@ __memp_alloc(dbmp, infop, mfp, len, offsetp, retp)
aggressive = alloc_freeze = giveup = got_oldest = 0;
hp_tmp = NULL;
- c_mp->stat.st_alloc++;
+ STAT(c_mp->stat.st_alloc++);
/*
* If we're allocating a buffer, and the one we're discarding is the
@@ -86,7 +84,7 @@ __memp_alloc(dbmp, infop, mfp, len, offsetp, retp)
* we need in the hopes it will coalesce into a contiguous chunk of the
* right size. In the latter case we branch back here and try again.
*/
-alloc: if ((ret = __db_shalloc(infop, len, 0, &p)) == 0) {
+alloc: if ((ret = __env_alloc(infop, len, &p)) == 0) {
if (mfp != NULL)
c_mp->stat.st_pages++;
MPOOL_REGION_UNLOCK(dbenv, infop);
@@ -106,6 +104,7 @@ found: if (offsetp != NULL)
* We're not holding the region locked here, these statistics
* can't be trusted.
*/
+#ifdef HAVE_STATISTICS
total_buckets += buckets;
if (total_buckets != 0) {
if (total_buckets > c_mp->stat.st_alloc_max_buckets)
@@ -117,6 +116,7 @@ found: if (offsetp != NULL)
c_mp->stat.st_alloc_max_pages = buffers;
c_mp->stat.st_alloc_pages += buffers;
}
+#endif
return (0);
} else if (giveup || c_mp->stat.st_pages == 0) {
MPOOL_REGION_UNLOCK(dbenv, infop);
@@ -153,24 +153,14 @@ found: if (offsetp != NULL)
}
/*
- * Skip empty buckets.
- *
- * We can check for empty buckets before locking as we
- * only care if the pointer is zero or non-zero.
- */
- if (SH_TAILQ_FIRST(&hp->hash_bucket, __bh) == NULL)
- continue;
-
- /*
* The failure mode is when there are too many buffers we can't
- * write or there's not enough memory in the system. We don't
- * have a way to know that allocation has no way to succeed.
- * We fail if there were no pages returned to the cache after
- * we've been trying for a relatively long time.
+ * write or there's not enough memory in the system to support
+ * the number of pinned buffers.
*
- * Get aggressive if we've tried to flush the number of hash
- * buckets as are in the system and have not found any more
- * space. Aggressive means:
+ * Get aggressive if we've reviewed the entire cache without
+ * freeing 3 times the needed space. (The code resets the
+ * counter when we free 3 times the needed space.) Aggressive
+ * means:
*
* a: set a flag to attempt to flush high priority buffers as
* well as other buffers.
@@ -187,11 +177,15 @@ found: if (offsetp != NULL)
* Always try to allocate memory too, in case some other thread
* returns its memory to the region.
*
+ * We don't have any way to know an allocation has no way to
+ * succeed. Fail if no pages are returned to the cache after
+ * we've been trying for a relatively long time.
+ *
* !!!
* This test ignores pathological cases like no buffers in the
- * system -- that shouldn't be possible.
+ * system -- we check for that early on, so it isn't possible.
*/
- if ((++buckets % c_mp->htab_buckets) == 0) {
+ if (buckets++ == c_mp->htab_buckets) {
if (freed_space > 0)
goto alloc;
MPOOL_REGION_UNLOCK(dbenv, infop);
@@ -207,7 +201,7 @@ found: if (offsetp != NULL)
case 5:
case 6:
(void)__memp_sync_int(
- dbenv, NULL, 0, DB_SYNC_ALLOC, NULL);
+ dbenv, NULL, 0, DB_SYNC_ALLOC, NULL, NULL);
__os_sleep(dbenv, 1, 0);
break;
@@ -222,11 +216,35 @@ found: if (offsetp != NULL)
goto alloc;
}
+ /*
+ * Skip empty buckets.
+ *
+ * We can check for empty buckets before locking as we
+ * only care if the pointer is zero or non-zero.
+ */
+ if (SH_TAILQ_FIRST(&hp->hash_bucket, __bh) == NULL)
+ continue;
+ /*
+ * Skip buckets that only have pinned pages.
+ *
+ * Again we are doing this without locking. If we misread
+ * the number we might improperly skip a bucket but this is
+ * not fatal.
+ */
+ if (hp->hash_priority == UINT32_MAX)
+ continue;
+
if (!aggressive) {
- /* Skip high priority buckets. */
- if (hp->hash_priority > high_priority)
+ /* Adjust if the bucket has not been reset. */
+ priority = hp->hash_priority;
+ if (c_mp->lru_reset != 0 &&
+ c_mp->lru_reset <= hp - dbht)
+ priority -= MPOOL_BASE_DECREMENT;
+ /*
+ * Skip high priority buckets.
+ */
+ if (priority > high_priority)
continue;
-
/*
* Find two buckets and select the one with the lowest
* priority. Performance testing shows that looking
@@ -237,18 +255,22 @@ found: if (offsetp != NULL)
hp_tmp = hp;
continue;
}
- if (hp->hash_priority > hp_tmp->hash_priority)
+ if (c_mp->lru_reset &&
+ c_mp->lru_reset <= hp_tmp - dbht) {
+ if (priority > hp_tmp->hash_priority -
+ MPOOL_BASE_DECREMENT)
+ hp = hp_tmp;
+ } else if (priority > hp_tmp->hash_priority)
hp = hp_tmp;
hp_tmp = NULL;
}
- /* Remember the priority of the buffer we're looking for. */
- priority = hp->hash_priority;
-
/* Unlock the region and lock the hash bucket. */
MPOOL_REGION_UNLOCK(dbenv, infop);
- mutex = hp->mtx_hash;
- MUTEX_LOCK(dbenv, mutex);
+ MUTEX_LOCK(dbenv, hp->mtx_hash);
+
+ /* Remember the priority of the buffer we're looking for. */
+ priority = hp->hash_priority;
#ifdef DIAGNOSTIC
__memp_check_order(dbenv, hp);
@@ -311,10 +333,15 @@ this_hb: if ((bhp = SH_TAILQ_FIRST(&hp->hash_bucket, __bh)) == NULL)
++bhp->ref;
ret = __memp_bhwrite(dbmp, hp, bh_mfp, bhp, 0);
--bhp->ref;
+#ifdef HAVE_STATISTICS
if (ret == 0)
++c_mp->stat.st_rw_evict;
- } else
+#endif
+ }
+#ifdef HAVE_STATISTICS
+ else
++c_mp->stat.st_ro_evict;
+#endif
/*
* Freeze this buffer, if necessary. That is, if the buffer
@@ -373,13 +400,13 @@ this_hb: if ((bhp = SH_TAILQ_FIRST(&hp->hash_bucket, __bh)) == NULL)
++bhp->ref;
if ((ret = __memp_bh_thaw(dbmp, infop, hp,
bhp, NULL)) != 0) {
- MUTEX_UNLOCK(dbenv, mutex);
+ MUTEX_UNLOCK(dbenv, hp->mtx_hash);
return (ret);
}
alloc_freeze = 0;
goto this_hb;
} else if (alloc_freeze) {
- if ((ret = __memp_bhfree(dbmp, hp, bhp, 0)) != 0)
+ if ((ret = __memp_bhfree(dbmp, infop, hp, bhp, 0)) != 0)
return (ret);
MVCC_MPROTECT(bhp->buf, bh_mfp->stat.st_pagesize,
PROT_READ | PROT_WRITE | PROT_EXEC);
@@ -399,13 +426,13 @@ this_hb: if ((bhp = SH_TAILQ_FIRST(&hp->hash_bucket, __bh)) == NULL)
continue;
} else if (mfp != NULL &&
mfp->stat.st_pagesize == bh_mfp->stat.st_pagesize) {
- if ((ret = __memp_bhfree(dbmp, hp, bhp, 0)) != 0)
+ if ((ret = __memp_bhfree(dbmp, infop, hp, bhp, 0)) != 0)
return (ret);
p = bhp;
goto found;
} else {
- freed_space += __db_shalloc_sizeof(bhp);
- if ((ret = __memp_bhfree(dbmp,
+ freed_space += sizeof(*bhp) + bh_mfp->stat.st_pagesize;
+ if ((ret = __memp_bhfree(dbmp, infop,
hp, bhp, BH_FREE_FREEMEM)) != 0)
return (ret);
}
@@ -419,7 +446,7 @@ this_hb: if ((bhp = SH_TAILQ_FIRST(&hp->hash_bucket, __bh)) == NULL)
* hash bucket lock has already been discarded.
*/
if (0) {
-next_hb: MUTEX_UNLOCK(dbenv, mutex);
+next_hb: MUTEX_UNLOCK(dbenv, hp->mtx_hash);
}
MPOOL_REGION_LOCK(dbenv, infop);
@@ -449,7 +476,7 @@ __memp_free(infop, mfp, buf)
{
MVCC_BHUNALIGN(mfp, buf);
COMPQUIET(mfp, NULL);
- __db_shalloc_free(infop, buf);
+ __env_alloc_free(infop, buf);
}
/*
@@ -516,7 +543,9 @@ __memp_check_order(dbenv, hp)
DB_MPOOL_HASH *hp;
{
BH *bhp, *first_bhp, *tbhp;
- u_int32_t priority, last_priority;
+ u_int32_t dirty, priority, last_priority;
+
+ dirty = 0;
/*
* Assumes the hash bucket is locked.
@@ -526,6 +555,8 @@ __memp_check_order(dbenv, hp)
bhp != NULL; bhp = SH_TAILQ_NEXT(bhp, hq, __bh)) {
DB_ASSERT(dbenv, !SH_CHAIN_HASNEXT(bhp, vc));
+ if (F_ISSET(bhp, BH_DIRTY))
+ dirty++;
priority = BH_PRIORITY(bhp);
DB_ASSERT(dbenv, (bhp == first_bhp) ?
priority == last_priority : priority >= last_priority);
@@ -547,5 +578,6 @@ __memp_check_order(dbenv, hp)
DB_ASSERT(dbenv, bhp->pgno != tbhp->pgno ||
bhp->mf_offset != tbhp->mf_offset);
}
+ DB_ASSERT(dbenv, dirty == hp->hash_page_dirty);
}
#endif
diff --git a/db/mp/mp_bh.c b/db/mp/mp_bh.c
index ef4d1d4be..85cc30cc7 100644
--- a/db/mp/mp_bh.c
+++ b/db/mp/mp_bh.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: mp_bh.c,v 12.31 2006/09/07 19:11:46 bostic Exp $
+ * $Id: mp_bh.c,v 12.38 2007/05/17 15:15:45 bostic Exp $
*/
#include "db_config.h"
@@ -256,9 +255,13 @@ __memp_pgread(dbmfp, hp, bhp, can_create)
if (len < pagesize)
memset(bhp->buf + len, CLEAR_BYTE, pagesize - len);
#endif
+#ifdef HAVE_STATISTICS
++mfp->stat.st_page_create;
} else
++mfp->stat.st_page_in;
+#else
+ }
+#endif
/* Call any pgin function. */
ret = mfp->ftype == 0 ? 0 : __memp_pg(dbmfp, bhp, 1);
@@ -304,18 +307,16 @@ __memp_pgwrite(dbenv, dbmfp, hp, bhp)
mfp = dbmfp == NULL ? NULL : dbmfp->mfp;
callpgin = ret = 0;
- /*
- * We should never be called with a clean or trash buffer.
- * The sync code does call us with already locked buffers.
- */
+ /* We should never be called with a clean or trash buffer. */
DB_ASSERT(dbenv, F_ISSET(bhp, BH_DIRTY));
DB_ASSERT(dbenv, !F_ISSET(bhp, BH_TRASH));
- /* If not already done, lock the buffer and unlock the hash bucket. */
- if (!F_ISSET(bhp, BH_LOCKED)) {
- F_SET(bhp, BH_LOCKED);
- MUTEX_UNLOCK(dbenv, hp->mtx_hash);
- }
+ /*
+ * The sync code has already locked the buffer, but the allocation
+ * code has not. Lock the buffer and release the hash bucket mutex.
+ */
+ F_SET(bhp, BH_LOCKED);
+ MUTEX_UNLOCK(dbenv, hp->mtx_hash);
/*
* It's possible that the underlying file doesn't exist, either
@@ -333,7 +334,7 @@ __memp_pgwrite(dbenv, dbmfp, hp, bhp)
* If the page is in a file for which we have LSN information, we have
* to ensure the appropriate log records are on disk.
*/
- if (LOGGING_ON(dbenv) && mfp->lsn_off != -1 &&
+ if (LOGGING_ON(dbenv) && mfp->lsn_off != DB_LSN_OFF_NOTSET &&
!IS_CLIENT_PGRECOVER(dbenv)) {
memcpy(&lsn, bhp->buf + mfp->lsn_off, sizeof(DB_LSN));
if (!IS_NOT_LOGGED_LSN(lsn) &&
@@ -402,7 +403,7 @@ __memp_pgwrite(dbenv, dbmfp, hp, bhp)
__memp_fn(dbmfp), (u_long)bhp->pgno);
goto err;
}
- ++mfp->stat.st_page_out;
+ STAT(++mfp->stat.st_page_out);
if (bhp->pgno > mfp->last_flushed_pgno) {
MUTEX_LOCK(dbenv, mfp->mutex);
if (bhp->pgno > mfp->last_flushed_pgno)
@@ -517,20 +518,20 @@ err: __db_errx(dbenv, "%s: %s failed for page %lu",
* Free a bucket header and its referenced data.
*
* PUBLIC: int __memp_bhfree
- * PUBLIC: __P((DB_MPOOL *, DB_MPOOL_HASH *, BH *, u_int32_t));
+ * PUBLIC: __P((DB_MPOOL *, REGINFO *, DB_MPOOL_HASH *, BH *, u_int32_t));
*/
int
-__memp_bhfree(dbmp, hp, bhp, flags)
+__memp_bhfree(dbmp, infop, hp, bhp, flags)
DB_MPOOL *dbmp;
+ REGINFO *infop;
DB_MPOOL_HASH *hp;
BH *bhp;
u_int32_t flags;
{
DB_ENV *dbenv;
- MPOOL *c_mp, *mp;
+ MPOOL *c_mp;
MPOOLFILE *mfp;
BH *next_bhp, *prev_bhp;
- u_int32_t n_cache;
int reorder, ret, t_ret;
#ifdef DIAG_MVCC
size_t pagesize;
@@ -542,8 +543,6 @@ __memp_bhfree(dbmp, hp, bhp, flags)
* Assumes the hash bucket is locked and the MPOOL is not.
*/
dbenv = dbmp->dbenv;
- mp = dbmp->reginfo[0].primary;
- n_cache = NCACHE(mp, bhp->mf_offset, bhp->pgno);
mfp = R_ADDR(dbmp->reginfo, bhp->mf_offset);
#ifdef DIAG_MVCC
pagesize = mfp->stat.st_pagesize;
@@ -623,13 +622,13 @@ __memp_bhfree(dbmp, hp, bhp, flags)
* real.
*/
if (LF_ISSET(BH_FREE_FREEMEM)) {
- MPOOL_REGION_LOCK(dbenv, &dbmp->reginfo[n_cache]);
+ MPOOL_REGION_LOCK(dbenv, infop);
- __memp_free(&dbmp->reginfo[n_cache], mfp, bhp);
- c_mp = dbmp->reginfo[n_cache].primary;
+ __memp_free(infop, mfp, bhp);
+ c_mp = infop->primary;
c_mp->stat.st_pages--;
- MPOOL_REGION_UNLOCK(dbenv, &dbmp->reginfo[n_cache]);
+ MPOOL_REGION_UNLOCK(dbenv, infop);
}
/*
diff --git a/db/mp/mp_fget.c b/db/mp/mp_fget.c
index 5f7eb6802..bb73a0a08 100644
--- a/db/mp/mp_fget.c
+++ b/db/mp/mp_fget.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: mp_fget.c,v 12.33 2006/09/13 14:53:42 mjc Exp $
+ * $Id: mp_fget.c,v 12.43 2007/06/05 11:55:28 mjc Exp $
*/
#include "db_config.h"
@@ -108,36 +107,34 @@ __memp_fget(dbmfp, pgnoaddr, txn, flags, addrp)
enum { FIRST_FOUND, FIRST_MISS, SECOND_FOUND, SECOND_MISS } state;
BH *alloc_bhp, *bhp, *current_bhp, *frozen_bhp, *oldest_bhp;
DB_ENV *dbenv;
+ DB_LSN *read_lsnp;
DB_MPOOL *dbmp;
DB_MPOOL_HASH *hp;
- MPOOL *c_mp, *mp;
+ MPOOL *c_mp;
MPOOLFILE *mfp;
- REGINFO *infop;
+ REGINFO *infop, *t_infop;
TXN_DETAIL *td;
- DB_LSN *read_lsnp;
roff_t mf_offset;
- u_int32_t n_cache, st_hsearch;
+ u_int32_t st_hsearch;
int b_incr, b_locked, dirty, edit, extending, first;
int makecopy, mvcc, need_free, reorder, ret;
*(void **)addrp = NULL;
+ COMPQUIET(c_mp, NULL);
+ COMPQUIET(infop, NULL);
COMPQUIET(oldest_bhp, NULL);
dbenv = dbmfp->dbenv;
dbmp = dbenv->mp_handle;
- c_mp = NULL;
- mp = dbmp->reginfo[0].primary;
mfp = dbmfp->mfp;
mvcc = mfp->multiversion;
mf_offset = R_OFFSET(dbmp->reginfo, mfp);
alloc_bhp = bhp = frozen_bhp = NULL;
read_lsnp = NULL;
+ td = NULL;
hp = NULL;
b_incr = b_locked = extending = makecopy = ret = 0;
- n_cache = 0;
- infop = NULL;
- td = NULL;
if (LF_ISSET(DB_MPOOL_DIRTY)) {
if (F_ISSET(dbmfp, MP_READONLY)) {
@@ -224,25 +221,22 @@ __memp_fget(dbmfp, pgnoaddr, txn, flags, addrp)
F_ISSET(mfp, MP_CAN_MMAP) && *pgnoaddr <= mfp->orig_last_pgno) {
*(void **)addrp = (u_int8_t *)dbmfp->addr +
(*pgnoaddr * mfp->stat.st_pagesize);
- ++mfp->stat.st_map;
+ STAT(++mfp->stat.st_map);
return (0);
}
-hb_search:
- /*
+retry: /*
* Determine the cache and hash bucket where this page lives and get
* local pointers to them. Reset on each pass through this code, the
* page number can change.
*/
- n_cache = NCACHE(mp, mf_offset, *pgnoaddr);
- infop = &dbmp->reginfo[n_cache];
+ MP_GET_BUCKET(dbmfp, *pgnoaddr, &infop, hp, ret);
+ if (ret != 0)
+ return (ret);
c_mp = infop->primary;
- hp = R_ADDR(infop, c_mp->htab);
- hp = &hp[NBUCKET(c_mp, mf_offset, *pgnoaddr)];
/* Search the hash chain for the page. */
-retry: st_hsearch = 0;
- MUTEX_LOCK(dbenv, hp->mtx_hash);
+ st_hsearch = 0;
b_locked = 1;
SH_TAILQ_FOREACH(bhp, &hp->hash_bucket, hq, __bh) {
++st_hsearch;
@@ -326,7 +320,7 @@ retry: st_hsearch = 0;
F_SET(hp, IO_WAITER);
MUTEX_LOCK(dbenv, hp->mtx_io);
}
- ++hp->hash_io_wait;
+ STAT(++hp->hash_io_wait);
/* Release the hash bucket lock. */
MUTEX_UNLOCK(dbenv, hp->mtx_hash);
@@ -362,10 +356,13 @@ thawed: need_free = (--frozen_bhp->ref == 0);
goto retry;
}
+#ifdef HAVE_STATISTICS
++mfp->stat.st_cache_hit;
+#endif
break;
}
+#ifdef HAVE_STATISTICS
/*
* Update the hash bucket search statistics -- do now because our next
* search may be for a different bucket.
@@ -374,6 +371,7 @@ thawed: need_free = (--frozen_bhp->ref == 0);
if (st_hsearch > c_mp->stat.st_hash_longest)
c_mp->stat.st_hash_longest = st_hsearch;
c_mp->stat.st_hash_examined += st_hsearch;
+#endif
/*
* There are 4 possible paths to this location:
@@ -411,6 +409,10 @@ thawed: need_free = (--frozen_bhp->ref == 0);
*/
if (flags == DB_MPOOL_FREE) {
if (--bhp->ref == 0) {
+ if (F_ISSET(bhp, BH_DIRTY)) {
+ --hp->hash_page_dirty;
+ F_CLR(bhp, BH_DIRTY | BH_DIRTY_CREATE);
+ }
/*
* In a multiversion database, this page could
* be requested again so we have to leave it in
@@ -424,17 +426,12 @@ thawed: need_free = (--frozen_bhp->ref == 0);
if (mvcc && (!SH_CHAIN_SINGLETON(bhp, vc) ||
bhp->td_off == INVALID_ROFF ||
!IS_MAX_LSN(*VISIBLE_LSN(dbenv, bhp)))) {
- if (F_ISSET(bhp, BH_DIRTY)) {
- --hp->hash_page_dirty;
- F_CLR(bhp,
- BH_DIRTY | BH_DIRTY_CREATE);
- }
F_SET(bhp, BH_FREED);
MUTEX_UNLOCK(dbenv, hp->mtx_hash);
return (0);
}
return (__memp_bhfree(
- dbmp, hp, bhp, BH_FREE_FREEMEM));
+ dbmp, infop, hp, bhp, BH_FREE_FREEMEM));
}
__db_errx(dbenv,
"File %s: freeing pinned buffer for page %lu",
@@ -447,12 +444,10 @@ thawed: need_free = (--frozen_bhp->ref == 0);
if (flags == DB_MPOOL_CREATE &&
F_ISSET(bhp, BH_FREED)) {
extending = makecopy = 1;
- MUTEX_UNLOCK(dbenv, hp->mtx_hash);
MUTEX_LOCK(dbenv, mfp->mutex);
if (*pgnoaddr > mfp->last_pgno)
mfp->last_pgno = *pgnoaddr;
MUTEX_UNLOCK(dbenv, mfp->mutex);
- MUTEX_LOCK(dbenv, hp->mtx_hash);
}
/*
@@ -478,8 +473,9 @@ thawed: need_free = (--frozen_bhp->ref == 0);
((ret = __txn_oldest_reader(dbenv,
&hp->old_reader)) == 0 &&
BH_OBSOLETE(oldest_bhp, hp->old_reader)))) {
- if ((ret = __memp_bhfree(dbmp, hp,
- oldest_bhp, BH_FREE_REUSE)) != 0)
+ if ((ret = __memp_bhfree(dbmp,
+ infop, hp, oldest_bhp,
+ BH_FREE_REUSE)) != 0)
goto err;
alloc_bhp = oldest_bhp;
} else if (ret != 0)
@@ -547,17 +543,17 @@ alloc: /*
/*
* !!!
- * In the DB_MPOOL_NEW code path, mf_offset and n_cache have
+ * In the DB_MPOOL_NEW code path, infop and c_mp have
* not yet been initialized.
*/
- mf_offset = R_OFFSET(dbmp->reginfo, mfp);
- n_cache = NCACHE(mp, mf_offset, *pgnoaddr);
- infop = &dbmp->reginfo[n_cache];
+ MP_GET_REGION(dbmfp, *pgnoaddr, &infop, ret);
+ if (ret != 0)
+ goto err;
c_mp = infop->primary;
/* Allocate a new buffer header and data space. */
if ((ret =
- __memp_alloc(dbmp,infop, mfp, 0, NULL, &alloc_bhp)) != 0)
+ __memp_alloc(dbmp, infop, mfp, 0, NULL, &alloc_bhp)) != 0)
goto err;
#ifdef DIAGNOSTIC
if ((uintptr_t)alloc_bhp->buf & (sizeof(size_t) - 1)) {
@@ -601,7 +597,10 @@ alloc: /*
*/
if (flags == DB_MPOOL_NEW && *pgnoaddr != mfp->last_pgno + 1) {
*pgnoaddr = mfp->last_pgno + 1;
- if (n_cache != NCACHE(mp, mf_offset, *pgnoaddr)) {
+ MP_GET_REGION(dbmfp, *pgnoaddr, &t_infop,ret);
+ if (ret != 0)
+ goto err;
+ if (t_infop != infop) {
/*
* flags == DB_MPOOL_NEW, so extending is set
* and we're holding the mfp locked.
@@ -641,7 +640,7 @@ alloc: /*
b_locked = 1;
break;
}
- goto hb_search;
+ goto retry;
case SECOND_FOUND:
/*
* We allocated buffer space for the requested page, but then
@@ -764,10 +763,10 @@ alloc: /*
if (flags == DB_MPOOL_CREATE && mfp->ftype != 0)
F_SET(bhp, BH_CALLPGIN);
- ++mfp->stat.st_page_create;
+ STAT(++mfp->stat.st_page_create);
} else {
F_SET(bhp, BH_TRASH);
- ++mfp->stat.st_cache_miss;
+ STAT(++mfp->stat.st_cache_miss);
}
/* Increment buffer count referenced by MPOOLFILE. */
@@ -961,7 +960,8 @@ err: /*
if (frozen_bhp != NULL)
--frozen_bhp;
if (b_incr && --bhp->ref == 0) {
- (void)__memp_bhfree(dbmp, hp, bhp, BH_FREE_FREEMEM);
+ (void)__memp_bhfree(dbmp,
+ infop, hp, bhp, BH_FREE_FREEMEM);
b_locked = 0;
}
}
diff --git a/db/mp/mp_fmethod.c b/db/mp/mp_fmethod.c
index 76d160ee5..38cd11d34 100644
--- a/db/mp/mp_fmethod.c
+++ b/db/mp/mp_fmethod.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: mp_fmethod.c,v 12.13 2006/08/24 14:46:14 bostic Exp $
+ * $Id: mp_fmethod.c,v 12.19 2007/06/01 16:30:30 bostic Exp $
*/
#include "db_config.h"
@@ -67,7 +66,7 @@ __memp_fcreate(dbenv, retp)
return (ret);
dbmfp->ref = 1;
- dbmfp->lsn_offset = -1;
+ dbmfp->lsn_offset = DB_LSN_OFF_NOTSET;
dbmfp->dbenv = dbenv;
dbmfp->mfp = INVALID_ROFF;
@@ -77,13 +76,13 @@ __memp_fcreate(dbenv, retp)
dbmfp->get_fileid = __memp_get_fileid;
dbmfp->get_flags = __memp_get_flags;
dbmfp->get_ftype = __memp_get_ftype;
+ dbmfp->get_last_pgno = __memp_get_last_pgno;
dbmfp->get_lsn_offset = __memp_get_lsn_offset;
dbmfp->get_maxsize = __memp_get_maxsize;
dbmfp->get_pgcookie = __memp_get_pgcookie;
dbmfp->get_priority = __memp_get_priority;
dbmfp->open = __memp_fopen_pp;
dbmfp->put = __memp_fput_pp;
- dbmfp->set = __memp_fset_pp;
dbmfp->set_clear_len = __memp_set_clear_len;
dbmfp->set_fileid = __memp_set_fileid;
dbmfp->set_flags = __memp_set_flags;
@@ -489,16 +488,17 @@ __memp_set_priority(dbmfp, priority)
}
/*
- * __memp_last_pgno --
+ * __memp_get_last_pgno --
* Return the page number of the last page in the file.
*
* !!!
- * Undocumented interface: DB private.
+ * The method is undocumented, but the handle is exported, users occasionally
+ * ask for it.
*
- * PUBLIC: int __memp_last_pgno __P((DB_MPOOLFILE *, db_pgno_t *));
+ * PUBLIC: int __memp_get_last_pgno __P((DB_MPOOLFILE *, db_pgno_t *));
*/
int
-__memp_last_pgno(dbmfp, pgnoaddr)
+__memp_get_last_pgno(dbmfp, pgnoaddr)
DB_MPOOLFILE *dbmfp;
db_pgno_t *pgnoaddr;
{
@@ -540,8 +540,8 @@ __memp_fns(dbmp, mfp)
DB_MPOOL *dbmp;
MPOOLFILE *mfp;
{
- if (mfp->path_off == 0)
- return ((char *)"temporary");
+ if (mfp == NULL || mfp->path_off == 0)
+ return ((char *)"unknown");
return ((char *)R_ADDR(dbmp->reginfo, mfp->path_off));
}
diff --git a/db/mp/mp_fopen.c b/db/mp/mp_fopen.c
index f13876e75..b41565304 100644
--- a/db/mp/mp_fopen.c
+++ b/db/mp/mp_fopen.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: mp_fopen.c,v 12.34 2006/09/09 13:55:52 bostic Exp $
+ * $Id: mp_fopen.c,v 12.44 2007/05/17 17:18:01 bostic Exp $
*/
#include "db_config.h"
@@ -15,8 +14,10 @@
#include "dbinc/db_page.h"
#include "dbinc/hash.h"
-static int __memp_mfp_alloc __P((DB_MPOOL *,
+static int __memp_mpf_alloc __P((DB_MPOOL *,
DB_MPOOLFILE *, const char *, u_int32_t, u_int32_t, MPOOLFILE **));
+static int __memp_mpf_find __P((DB_ENV *,
+ DB_MPOOLFILE *, DB_MPOOL_HASH *, const char *, u_int32_t, MPOOLFILE **));
/*
* __memp_fopen_pp --
@@ -140,14 +141,51 @@ __memp_fopen(dbmfp, mfp, path, flags, mode, pgsize)
bucket = 0;
hp = R_ADDR(dbmp->reginfo, mp->ftab);
- if (path == NULL && mfp == NULL)
- goto alloc;
+ if (mfp == NULL) {
+ if (path == NULL)
+ goto alloc;
- /*
- * Our caller may be able to tell us which underlying MPOOLFILE we
- * need a handle for.
- */
- if (mfp != NULL) {
+ /*
+ * Hash to the proper file table entry and walk it.
+ *
+ * The fileID is a filesystem unique number (e.g., a
+ * UNIX dev/inode pair) plus a timestamp. If files are
+ * removed and created in less than a second, the fileID
+ * can be repeated. The problem with repetition happens
+ * when the file that previously had the fileID value still
+ * has pages in the pool, since we don't want to use them
+ * to satisfy requests for the new file. Because the
+ * DB_TRUNCATE flag reuses the dev/inode pair, repeated
+ * opens with that flag set guarantees matching fileIDs
+ * when the machine can open a file and then re-open
+ * with truncate within a second. For this reason, we
+ * pass that flag down, and, if we find a matching entry,
+ * we ensure that it's never found again, and we create
+ * a new entry for the current request.
+ */
+
+ if (FLD_ISSET(dbmfp->config_flags, DB_MPOOL_NOFILE))
+ bucket = FNBUCKET(path, strlen(path));
+ else
+ bucket = FNBUCKET(dbmfp->fileid, DB_FILE_ID_LEN);
+ hp += bucket;
+
+ /*
+ * If we are passed a FILEID find the MPOOLFILE and inc
+ * its ref count. That way it cannot go away while we
+ * open it.
+ */
+ if (F_ISSET(dbmfp, MP_FILEID_SET)) {
+ MUTEX_LOCK(dbenv, hp->mtx_hash);
+ ret =
+ __memp_mpf_find(dbenv, dbmfp, hp, path, flags,&mfp);
+ MUTEX_UNLOCK(dbenv, hp->mtx_hash);
+ if (ret != 0)
+ goto err;
+ if (mfp != NULL)
+ refinc = 1;
+ }
+ } else {
/*
* Deadfile can only be set if mpf_cnt goes to zero (or if we
* failed creating the file DB_AM_DISCARD). Increment the ref
@@ -213,7 +251,7 @@ __memp_fopen(dbmfp, mfp, path, flags, mode, pgsize)
}
if ((ret = __db_appname(dbenv,
DB_APP_DATA, path, 0, NULL, &rpath)) == 0)
- ret = __os_open_extend(dbenv, rpath,
+ ret = __os_open(dbenv, rpath,
(u_int32_t)pagesize, oflags, mode, &dbmfp->fhp);
if (mfp != NULL)
MPOOL_SYSTEM_UNLOCK(dbenv);
@@ -289,83 +327,21 @@ __memp_fopen(dbmfp, mfp, path, flags, mode, pgsize)
goto have_mfp;
/*
- * Hash to the proper file table entry and walk it.
- *
- * The fileID is a filesystem unique number (e.g., a UNIX dev/inode
- * pair) plus a timestamp. If files are removed and created in less
- * than a second, the fileID can be repeated. The problem with
- * repetition happens when the file that previously had the fileID
- * value still has pages in the pool, since we don't want to use them
- * to satisfy requests for the new file.
- *
- * Because the DB_TRUNCATE flag reuses the dev/inode pair, repeated
- * opens with that flag set guarantees matching fileIDs when the
- * machine can open a file and then re-open with truncate within a
- * second. For this reason, we pass that flag down, and, if we find
- * a matching entry, we ensure that it's never found again, and we
- * create a new entry for the current request.
- */
- if (FLD_ISSET(dbmfp->config_flags, DB_MPOOL_NOFILE)) {
- DB_ASSERT(dbenv, path != NULL);
- bucket = FNBUCKET(path, strlen(path));
- } else
- bucket = FNBUCKET(dbmfp->fileid, DB_FILE_ID_LEN);
- hp += bucket;
-
- /*
* We can race with another process opening the same file when
* we allocate the mpoolfile structure. We will come back
* here and check the hash table again to see if it has appeared.
* For most files this is not a problem, since the name is locked
* at a higher layer but QUEUE extent files are not locked.
*/
-
check: MUTEX_LOCK(dbenv, hp->mtx_hash);
- SH_TAILQ_FOREACH(mfp, &hp->hash_bucket, q, __mpoolfile) {
- /* Skip dead files and temporary files. */
- if (mfp->deadfile || F_ISSET(mfp, MP_TEMP))
- continue;
-
- /*
- * Any remaining DB_MPOOL_NOFILE databases are in-memory
- * named databases and need only match other in-memory
- * databases with the same name.
- */
- if (FLD_ISSET(dbmfp->config_flags, DB_MPOOL_NOFILE)) {
- if (!mfp->no_backing_file)
- continue;
-
- DB_ASSERT(dbenv, path != NULL);
- if (strcmp(path, R_ADDR(dbmp->reginfo, mfp->path_off)))
- continue;
-
- /*
- * We matched an in-memory file; grab the fileid if
- * it is set in the region, but not in the dbmfp.
- */
- if (!F_ISSET(dbmfp, MP_FILEID_SET))
- (void)__memp_set_fileid(dbmfp,
- R_ADDR(dbmp->reginfo, mfp->fileid_off));
- } else
- if (memcmp(dbmfp->fileid, R_ADDR(dbmp->reginfo,
- mfp->fileid_off), DB_FILE_ID_LEN) != 0)
- continue;
-
- /*
- * If the file is being truncated, remove it from the system
- * and create a new entry.
- *
- * !!!
- * We should be able to set mfp to NULL and break out of the
- * loop, but I like the idea of checking all the entries.
- */
- if (LF_ISSET(DB_TRUNCATE)) {
- MUTEX_LOCK(dbenv, mfp->mutex);
- mfp->deadfile = 1;
- MUTEX_UNLOCK(dbenv, mfp->mutex);
- continue;
- }
+ if ((ret = __memp_mpf_find(dbenv, dbmfp, hp, path, flags, &mfp) != 0))
+ goto err;
+ if (alloc_mfp != NULL && mfp == NULL) {
+ mfp = alloc_mfp;
+ alloc_mfp = NULL;
+ SH_TAILQ_INSERT_HEAD(&hp->hash_bucket, mfp, q, __mpoolfile);
+ } else if (mfp != NULL) {
/*
* Some things about a file cannot be changed: the clear length,
* page size, or LSN location. However, if this is an attempt
@@ -385,7 +361,7 @@ check: MUTEX_LOCK(dbenv, hp->mtx_hash);
mfp->clear_len != DB_CLEARLEN_NOTSET &&
dbmfp->clear_len != mfp->clear_len) ||
(pagesize != 0 && pagesize != mfp->stat.st_pagesize) ||
- (dbmfp->lsn_offset != -1 &&
+ (dbmfp->lsn_offset != DB_LSN_OFF_NOTSET &&
mfp->lsn_off != DB_LSN_OFF_NOTSET &&
dbmfp->lsn_offset != mfp->lsn_off)) {
__db_errx(dbenv,
@@ -395,42 +371,6 @@ check: MUTEX_LOCK(dbenv, hp->mtx_hash);
ret = EINVAL;
goto err;
}
-
- /*
- * Check to see if this file has died while we waited.
- *
- * We normally don't lock the deadfile field when we read it as
- * we only care if the field is zero or non-zero. We do lock
- * on read when searching for a matching MPOOLFILE so that two
- * threads of control don't race between setting the deadfile
- * bit and incrementing the reference count, that is, a thread
- * of control decrementing the reference count and then setting
- * deadfile because the reference count is 0 blocks us finding
- * the file without knowing it's about to be marked dead.
- */
- MUTEX_LOCK(dbenv, mfp->mutex);
- if (mfp->deadfile) {
- MUTEX_UNLOCK(dbenv, mfp->mutex);
- continue;
- }
- ++mfp->mpf_cnt;
- refinc = 1;
- MUTEX_UNLOCK(dbenv, mfp->mutex);
-
- /* Initialize any fields that are not yet set. */
- if (dbmfp->ftype != 0)
- mfp->ftype = dbmfp->ftype;
- if (dbmfp->clear_len != DB_CLEARLEN_NOTSET)
- mfp->clear_len = dbmfp->clear_len;
- if (dbmfp->lsn_offset != -1)
- mfp->lsn_off = dbmfp->lsn_offset;
-
- break;
- }
- if (alloc_mfp != NULL && mfp == NULL) {
- mfp = alloc_mfp;
- alloc_mfp = NULL;
- SH_TAILQ_INSERT_HEAD(&hp->hash_bucket, mfp, q, __mpoolfile);
}
MUTEX_UNLOCK(dbenv, hp->mtx_hash);
@@ -462,7 +402,7 @@ alloc: /*
__os_fileid(dbenv, rpath, 0, dbmfp->fileid)) != 0)
goto err;
- if ((ret = __memp_mfp_alloc(dbmp,
+ if ((ret = __memp_mpf_alloc(dbmp,
dbmfp, path, pagesize, flags, &alloc_mfp)) != 0)
goto err;
@@ -625,8 +565,105 @@ err: if (refinc) {
return (ret);
}
+/*
+ * __memp_mpf_find --
+ * Search a hash bucket for a MPOOLFILE.
+ */
+static int
+__memp_mpf_find(dbenv, dbmfp, hp, path, flags, mfpp)
+ DB_ENV *dbenv;
+ DB_MPOOLFILE *dbmfp;
+ DB_MPOOL_HASH *hp;
+ const char *path;
+ u_int32_t flags;
+ MPOOLFILE **mfpp;
+{
+ DB_MPOOL *dbmp;
+ MPOOLFILE *mfp;
+
+ dbmp = dbenv->mp_handle;
+
+ SH_TAILQ_FOREACH(mfp, &hp->hash_bucket, q, __mpoolfile) {
+ /* Skip dead files and temporary files. */
+ if (mfp->deadfile || F_ISSET(mfp, MP_TEMP))
+ continue;
+
+ /*
+ * Any remaining DB_MPOOL_NOFILE databases are in-memory
+ * named databases and need only match other in-memory
+ * databases with the same name.
+ */
+ if (FLD_ISSET(dbmfp->config_flags, DB_MPOOL_NOFILE)) {
+ if (!mfp->no_backing_file)
+ continue;
+
+ if (strcmp(path, R_ADDR(dbmp->reginfo, mfp->path_off)))
+ continue;
+
+ /*
+ * We matched an in-memory file; grab the fileid if
+ * it is set in the region, but not in the dbmfp.
+ */
+ if (!F_ISSET(dbmfp, MP_FILEID_SET))
+ (void)__memp_set_fileid(dbmfp,
+ R_ADDR(dbmp->reginfo, mfp->fileid_off));
+ } else
+ if (memcmp(dbmfp->fileid, R_ADDR(dbmp->reginfo,
+ mfp->fileid_off), DB_FILE_ID_LEN) != 0)
+ continue;
+
+ /*
+ * If the file is being truncated, remove it from the system
+ * and create a new entry.
+ *
+ * !!!
+ * We should be able to set mfp to NULL and break out of the
+ * loop, but I like the idea of checking all the entries.
+ */
+ if (LF_ISSET(DB_TRUNCATE)) {
+ MUTEX_LOCK(dbenv, mfp->mutex);
+ mfp->deadfile = 1;
+ MUTEX_UNLOCK(dbenv, mfp->mutex);
+ continue;
+ }
+
+ /*
+ * Check to see if this file has died while we waited.
+ *
+ * We normally don't lock the deadfile field when we read it as
+ * we only care if the field is zero or non-zero. We do lock
+ * on read when searching for a matching MPOOLFILE so that two
+ * threads of control don't race between setting the deadfile
+ * bit and incrementing the reference count, that is, a thread
+ * of control decrementing the reference count and then setting
+ * deadfile because the reference count is 0 blocks us finding
+ * the file without knowing it's about to be marked dead.
+ */
+ MUTEX_LOCK(dbenv, mfp->mutex);
+ if (mfp->deadfile) {
+ MUTEX_UNLOCK(dbenv, mfp->mutex);
+ continue;
+ }
+ ++mfp->mpf_cnt;
+ MUTEX_UNLOCK(dbenv, mfp->mutex);
+
+ /* Initialize any fields that are not yet set. */
+ if (dbmfp->ftype != 0)
+ mfp->ftype = dbmfp->ftype;
+ if (dbmfp->clear_len != DB_CLEARLEN_NOTSET)
+ mfp->clear_len = dbmfp->clear_len;
+ if (dbmfp->lsn_offset != -1)
+ mfp->lsn_off = dbmfp->lsn_offset;
+
+ break;
+ }
+
+ *mfpp = mfp;
+ return (0);
+}
+
static int
-__memp_mfp_alloc(dbmp, dbmfp, path, pagesize, flags, retmfp)
+__memp_mpf_alloc(dbmp, dbmfp, path, pagesize, flags, retmfp)
DB_MPOOL *dbmp;
DB_MPOOLFILE *dbmfp;
const char *path;
@@ -742,14 +779,12 @@ __memp_fclose_pp(dbmfp, flags)
/*
* Validate arguments, but as a handle destructor, we can't fail.
- *
- * !!!
- * DB_MPOOL_DISCARD: Undocumented flag: DB private.
*/
- (void)__db_fchk(dbenv, "DB_MPOOLFILE->close", flags, DB_MPOOL_DISCARD);
+ if (flags != 0)
+ (void)__db_ferr(dbenv, "DB_MPOOLFILE->close", 0);
ENV_ENTER(dbenv, ip);
- REPLICATION_WRAP(dbenv, (__memp_fclose(dbmfp, flags)), ret);
+ REPLICATION_WRAP(dbenv, (__memp_fclose(dbmfp, 0)), ret);
ENV_LEAVE(dbenv, ip);
return (ret);
}
@@ -906,7 +941,9 @@ __memp_mf_discard(dbmp, mfp)
{
DB_ENV *dbenv;
DB_MPOOL_HASH *hp;
+#ifdef HAVE_STATISTICS
DB_MPOOL_STAT *sp;
+#endif
MPOOL *mp;
int need_sync, ret, t_ret;
@@ -948,9 +985,10 @@ __memp_mf_discard(dbmp, mfp)
/* Lock the region and collect stats and free the space. */
MPOOL_SYSTEM_LOCK(dbenv);
if (need_sync &&
- (t_ret = __memp_mf_sync(dbmp, mfp, 1)) != 0 && ret == 0)
+ (t_ret = __memp_mf_sync(dbmp, mfp, 0)) != 0 && ret == 0)
ret = t_ret;
+#ifdef HAVE_STATISTICS
/* Copy the statistics into the region. */
sp = &mp->stat;
sp->st_cache_hit += mfp->stat.st_cache_hit;
@@ -959,6 +997,7 @@ __memp_mf_discard(dbmp, mfp)
sp->st_page_create += mfp->stat.st_page_create;
sp->st_page_in += mfp->stat.st_page_in;
sp->st_page_out += mfp->stat.st_page_out;
+#endif
/* Free the space. */
if (mfp->path_off != 0)
diff --git a/db/mp/mp_fput.c b/db/mp/mp_fput.c
index 124d2e1da..53afe8a82 100644
--- a/db/mp/mp_fput.c
+++ b/db/mp/mp_fput.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: mp_fput.c,v 12.22 2006/09/07 20:05:33 bostic Exp $
+ * $Id: mp_fput.c,v 12.36 2007/06/05 11:55:28 mjc Exp $
*/
#include "db_config.h"
@@ -19,12 +18,14 @@ static int __memp_reset_lru __P((DB_ENV *, REGINFO *));
* __memp_fput_pp --
* DB_MPOOLFILE->put pre/post processing.
*
- * PUBLIC: int __memp_fput_pp __P((DB_MPOOLFILE *, void *, u_int32_t));
+ * PUBLIC: int __memp_fput_pp
+ * PUBLIC: __P((DB_MPOOLFILE *, void *, DB_CACHE_PRIORITY, u_int32_t));
*/
int
-__memp_fput_pp(dbmfp, pgaddr, flags)
+__memp_fput_pp(dbmfp, pgaddr, priority, flags)
DB_MPOOLFILE *dbmfp;
void *pgaddr;
+ DB_CACHE_PRIORITY priority;
u_int32_t flags;
{
DB_ENV *dbenv;
@@ -33,10 +34,14 @@ __memp_fput_pp(dbmfp, pgaddr, flags)
dbenv = dbmfp->dbenv;
PANIC_CHECK(dbenv);
+ if (flags != 0)
+ return (__db_ferr(dbenv, "DB_MPOOLFILE->put", 0));
+
+ MPF_ILLEGAL_BEFORE_OPEN(dbmfp, "DB_MPOOLFILE->put");
ENV_ENTER(dbenv, ip);
- ret = __memp_fput(dbmfp, pgaddr, flags);
+ ret = __memp_fput(dbmfp, pgaddr, priority);
if (IS_ENV_REPLICATED(dbenv) &&
(t_ret = __op_rep_exit(dbenv)) != 0 && ret == 0)
ret = t_ret;
@@ -49,47 +54,30 @@ __memp_fput_pp(dbmfp, pgaddr, flags)
* __memp_fput --
* DB_MPOOLFILE->put.
*
- * PUBLIC: int __memp_fput __P((DB_MPOOLFILE *, void *, u_int32_t));
+ * PUBLIC: int __memp_fput __P((DB_MPOOLFILE *, void *, DB_CACHE_PRIORITY));
*/
int
-__memp_fput(dbmfp, pgaddr, flags)
+__memp_fput(dbmfp, pgaddr, priority)
DB_MPOOLFILE *dbmfp;
void *pgaddr;
- u_int32_t flags;
+ DB_CACHE_PRIORITY priority;
{
+ BH *bhp;
DB_ENV *dbenv;
DB_MPOOL *dbmp;
DB_MPOOL_HASH *hp;
MPOOL *c_mp;
MPOOLFILE *mfp;
- BH *bhp;
- u_int32_t n_cache;
- int adjust, ret, t_ret;
+ REGINFO *infop;
+ int adjust, pfactor, ret, t_ret;
dbenv = dbmfp->dbenv;
- MPF_ILLEGAL_BEFORE_OPEN(dbmfp, "DB_MPOOLFILE->put");
dbmp = dbenv->mp_handle;
mfp = dbmfp->mfp;
bhp = (BH *)((u_int8_t *)pgaddr - SSZA(BH, buf));
ret = 0;
/*
- * Check arguments, but don't fail because we want to unpin the page
- * regardless. The problem is when running with replication. There
- * is a reference count we incremented when __memp_fget was called,
- * and we need to unpin the page and decrement that reference count.
- * If we see flag problems, mark the page dirty.
- */
- if (flags) {
- if (__db_fchk(dbenv, "memp_fput", flags,
- DB_MPOOL_DISCARD) != 0) {
- flags = 0;
- ret = EINVAL;
- DB_ASSERT(dbenv, 0);
- }
- }
-
- /*
* If we're mapping the file, there's nothing to do. Because we can
* stop mapping the file at any time, we have to check on each buffer
* to see if the address we gave the application was part of the map
@@ -116,15 +104,10 @@ __memp_fput(dbmfp, pgaddr, flags)
#endif
/* Convert a page address to a buffer header and hash bucket. */
- n_cache = NCACHE(dbmp->reginfo[0].primary, bhp->mf_offset, bhp->pgno);
- c_mp = dbmp->reginfo[n_cache].primary;
- hp = R_ADDR(&dbmp->reginfo[n_cache], c_mp->htab);
- hp = &hp[NBUCKET(c_mp, bhp->mf_offset, bhp->pgno)];
-
- MUTEX_LOCK(dbenv, hp->mtx_hash);
-
- if (LF_ISSET(DB_MPOOL_DISCARD))
- F_SET(bhp, BH_DISCARD);
+ MP_GET_BUCKET(dbmfp, bhp->pgno, &infop, hp, ret);
+ if (ret != 0)
+ return (ret);
+ c_mp = infop->primary;
/*
* Check for a reference count going to zero. This can happen if the
@@ -163,7 +146,8 @@ __memp_fput(dbmfp, pgaddr, flags)
MVCC_MPROTECT(bhp->buf, mfp->stat.st_pagesize, 0);
/* Update priority values. */
- if (F_ISSET(bhp, BH_DISCARD) || mfp->priority == MPOOL_PRI_VERY_LOW)
+ if (priority == DB_PRIORITY_VERY_LOW ||
+ mfp->priority == MPOOL_PRI_VERY_LOW)
bhp->priority = 0;
else {
/*
@@ -173,9 +157,31 @@ __memp_fput(dbmfp, pgaddr, flags)
*/
bhp->priority = c_mp->lru_count;
+ switch (priority) {
+ default:
+ case DB_PRIORITY_UNCHANGED:
+ pfactor = mfp->priority;
+ break;
+ case DB_PRIORITY_VERY_LOW:
+ pfactor = MPOOL_PRI_VERY_LOW;
+ break;
+ case DB_PRIORITY_LOW:
+ pfactor = MPOOL_PRI_LOW;
+ break;
+ case DB_PRIORITY_DEFAULT:
+ pfactor = MPOOL_PRI_DEFAULT;
+ break;
+ case DB_PRIORITY_HIGH:
+ pfactor = MPOOL_PRI_HIGH;
+ break;
+ case DB_PRIORITY_VERY_HIGH:
+ pfactor = MPOOL_PRI_VERY_HIGH;
+ break;
+ }
+
adjust = 0;
- if (mfp->priority != 0)
- adjust = (int)c_mp->stat.st_pages / mfp->priority;
+ if (pfactor != 0)
+ adjust = (int)c_mp->stat.st_pages / pfactor;
if (F_ISSET(bhp, BH_DIRTY))
adjust += (int)c_mp->stat.st_pages / MPOOL_PRI_DIRTY;
@@ -234,10 +240,9 @@ __memp_reset_lru(dbenv, infop)
BH *bhp, *tbhp;
DB_MPOOL_HASH *hp;
MPOOL *c_mp;
- u_int32_t bucket;
+ u_int32_t bucket, priority;
c_mp = infop->primary;
-
/*
* Update the counter so all future allocations will start at the
* bottom.
@@ -253,19 +258,42 @@ __memp_reset_lru(dbenv, infop)
* We can check for empty buckets before locking as we
* only care if the pointer is zero or non-zero.
*/
- if (SH_TAILQ_FIRST(&hp->hash_bucket, __bh) == NULL)
+ if (SH_TAILQ_FIRST(&hp->hash_bucket, __bh) == NULL) {
+ c_mp->lru_reset++;
continue;
+ }
MUTEX_LOCK(dbenv, hp->mtx_hash);
- SH_TAILQ_FOREACH(bhp, &hp->hash_bucket, hq, __bh)
+ c_mp->lru_reset++;
+ /*
+ * We need to take a little care that the bucket does
+ * not become unsorted. This is highly unlikely but
+ * possible.
+ */
+ priority = 0;
+ SH_TAILQ_FOREACH(bhp, &hp->hash_bucket, hq, __bh) {
for (tbhp = bhp; tbhp != NULL;
tbhp = SH_CHAIN_PREV(tbhp, vc, __bh)) {
if (tbhp->priority != UINT32_MAX &&
- tbhp->priority > MPOOL_BASE_DECREMENT)
+ tbhp->priority > MPOOL_BASE_DECREMENT) {
tbhp->priority -= MPOOL_BASE_DECREMENT;
+ if (tbhp->priority < priority)
+ tbhp->priority = priority;
+ }
}
+ priority = bhp->priority;
+ }
+ /*
+ * Reset the hash bucket's priority. The chain is never empty
+ * in this case, so tbhp will never be NULL.
+ */
+ if ((tbhp =
+ SH_TAILQ_FIRST(&hp->hash_bucket, __bh)) != NULL)
+ hp->hash_priority = tbhp->priority;
MUTEX_UNLOCK(dbenv, hp->mtx_hash);
}
+ c_mp->lru_reset = 0;
+ COMPQUIET(dbenv, NULL);
return (0);
}
diff --git a/db/mp/mp_fset.c b/db/mp/mp_fset.c
index e3fd2f4df..46950f4e1 100644
--- a/db/mp/mp_fset.c
+++ b/db/mp/mp_fset.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: mp_fset.c,v 12.16 2006/09/13 14:53:42 mjc Exp $
+ * $Id: mp_fset.c,v 12.23 2007/06/05 11:55:28 mjc Exp $
*/
#include "db_config.h"
@@ -15,108 +14,33 @@
#include "dbinc/txn.h"
/*
- * __memp_fset_pp --
- * DB_MPOOLFILE->set pre/post processing.
- *
- * PUBLIC: int __memp_fset_pp __P((DB_MPOOLFILE *, void *, u_int32_t));
- */
-int
-__memp_fset_pp(dbmfp, pgaddr, flags)
- DB_MPOOLFILE *dbmfp;
- void *pgaddr;
- u_int32_t flags;
-{
- DB_ENV *dbenv;
- DB_THREAD_INFO *ip;
- int ret;
-
- dbenv = dbmfp->dbenv;
-
- PANIC_CHECK(dbenv);
- MPF_ILLEGAL_BEFORE_OPEN(dbmfp, "DB_MPOOLFILE->set");
-
- /* Validate arguments. */
- if (flags == 0)
- return (__db_ferr(dbenv, "memp_fset", 1));
-
- if ((ret = __db_fchk(dbenv, "memp_fset", flags, DB_MPOOL_DISCARD)) != 0)
- return (ret);
-
- ENV_ENTER(dbenv, ip);
- REPLICATION_WRAP(dbenv, (__memp_fset(dbmfp, pgaddr, flags)), ret);
- ENV_LEAVE(dbenv, ip);
- return (ret);
-}
-
-/*
- * __memp_fset --
- * DB_MPOOLFILE->set.
- *
- * PUBLIC: int __memp_fset __P((DB_MPOOLFILE *, void *, u_int32_t));
- */
-int
-__memp_fset(dbmfp, pgaddr, flags)
- DB_MPOOLFILE *dbmfp;
- void *pgaddr;
- u_int32_t flags;
-{
- BH *bhp;
- DB_ENV *dbenv;
- DB_MPOOL *dbmp;
- DB_MPOOL_HASH *hp;
- MPOOL *c_mp;
- u_int32_t n_cache;
-
- dbenv = dbmfp->dbenv;
- dbmp = dbenv->mp_handle;
-
- DB_ASSERT(dbenv, !LF_ISSET(DB_MPOOL_DIRTY));
-
- /* Convert the page address to a buffer header and hash bucket. */
- bhp = (BH *)((u_int8_t *)pgaddr - SSZA(BH, buf));
- n_cache = NCACHE(dbmp->reginfo[0].primary, bhp->mf_offset, bhp->pgno);
- c_mp = dbmp->reginfo[n_cache].primary;
- hp = R_ADDR(&dbmp->reginfo[n_cache], c_mp->htab);
- hp = &hp[NBUCKET(c_mp, bhp->mf_offset, bhp->pgno)];
-
- MUTEX_LOCK(dbenv, hp->mtx_hash);
-
- if (LF_ISSET(DB_MPOOL_DISCARD))
- F_SET(bhp, BH_DISCARD);
-
- MUTEX_UNLOCK(dbenv, hp->mtx_hash);
- return (0);
-}
-
-/*
* __memp_dirty --
* Upgrade a page from a read-only to a writeable pointer.
*
- * PUBLIC: int __memp_dirty __P((DB_MPOOLFILE *, void *, DB_TXN *, u_int32_t));
+ * PUBLIC: int __memp_dirty __P((
+ * PUBLIC: DB_MPOOLFILE *, void *, DB_TXN *, DB_CACHE_PRIORITY, u_int32_t));
*/
int
-__memp_dirty(dbmfp, addrp, txn, flags)
+__memp_dirty(dbmfp, addrp, txn, priority, flags)
DB_MPOOLFILE *dbmfp;
void *addrp;
DB_TXN *txn;
+ DB_CACHE_PRIORITY priority;
u_int32_t flags;
{
BH *bhp;
DB_ENV *dbenv;
- DB_MPOOL *dbmp;
DB_MPOOL_HASH *hp;
DB_TXN *ancestor;
#ifdef DIAG_MVCC
MPOOLFILE *mfp;
#endif
- MPOOL *c_mp;
- u_int32_t n_cache;
+ REGINFO *infop;
int ret;
db_pgno_t pgno;
void *pgaddr;
dbenv = dbmfp->dbenv;
- dbmp = dbenv->mp_handle;
pgaddr = *(void **)addrp;
/* Convert the page address to a buffer header. */
@@ -154,11 +78,11 @@ __memp_dirty(dbmfp, addrp, txn, flags)
(flags == DB_MPOOL_EDIT && *(void **)addrp == pgaddr) ||
(flags != DB_MPOOL_EDIT && *(void **)addrp != pgaddr));
- if ((ret = __memp_fput(dbmfp, pgaddr, 0)) != 0) {
+ if ((ret = __memp_fput(dbmfp, pgaddr, priority)) != 0) {
__db_errx(dbenv,
"%s: error releasing a read-only page",
__memp_fn(dbmfp));
- (void)__memp_fput(dbmfp, *(void **)addrp, 0);
+ (void)__memp_fput(dbmfp, *(void **)addrp, priority);
*(void **)addrp = NULL;
return (ret);
}
@@ -168,13 +92,10 @@ __memp_dirty(dbmfp, addrp, txn, flags)
return (0);
}
- n_cache = NCACHE(dbmp->reginfo[0].primary,
- bhp->mf_offset, bhp->pgno);
- c_mp = dbmp->reginfo[n_cache].primary;
- hp = R_ADDR(&dbmp->reginfo[n_cache], c_mp->htab);
- hp = &hp[NBUCKET(c_mp, bhp->mf_offset, bhp->pgno)];
+ MP_GET_BUCKET(dbmfp, pgno, &infop, hp, ret);
+ if (ret != 0)
+ return (ret);
- MUTEX_LOCK(dbenv, hp->mtx_hash);
/* Set/clear the page bits. */
if (!F_ISSET(bhp, BH_DIRTY)) {
++hp->hash_page_dirty;
@@ -183,7 +104,7 @@ __memp_dirty(dbmfp, addrp, txn, flags)
MUTEX_UNLOCK(dbenv, hp->mtx_hash);
#ifdef DIAG_MVCC
- mfp = R_ADDR(dbmp->reginfo, bhp->mf_offset);
+ mfp = R_ADDR(dbenv->mp_handle->reginfo, bhp->mf_offset);
MVCC_MPROTECT(bhp->buf, mfp->stat.st_pagesize, PROT_READ | PROT_WRITE);
#endif
return (0);
diff --git a/db/mp/mp_method.c b/db/mp/mp_method.c
index 14c144974..e9096827c 100644
--- a/db/mp/mp_method.c
+++ b/db/mp/mp_method.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: mp_method.c,v 12.36 2006/09/15 18:54:13 margo Exp $
+ * $Id: mp_method.c,v 12.50 2007/06/01 18:32:44 bostic Exp $
*/
#include "db_config.h"
@@ -15,13 +14,13 @@
#include "dbinc/hash.h"
/*
- * __memp_dbenv_create --
+ * __memp_env_create --
* Mpool specific creation of the DB_ENV structure.
*
- * PUBLIC: int __memp_dbenv_create __P((DB_ENV *));
+ * PUBLIC: int __memp_env_create __P((DB_ENV *));
*/
int
-__memp_dbenv_create(dbenv)
+__memp_env_create(dbenv)
DB_ENV *dbenv;
{
/*
@@ -37,7 +36,7 @@ __memp_dbenv_create(dbenv)
* Solaris needs 24 and 52 bytes for the same structures. The minimum
* number of hash buckets is 37. These contain a mutex also.
*/
- dbenv->mp_bytes =
+ dbenv->mp_bytes = dbenv->mp_max_bytes =
32 * ((8 * 1024) + sizeof(BH)) + 37 * sizeof(DB_MPOOL_HASH);
dbenv->mp_ncache = 1;
@@ -45,13 +44,13 @@ __memp_dbenv_create(dbenv)
}
/*
- * __memp_dbenv_destroy --
+ * __memp_env_destroy --
* Mpool specific destruction of the DB_ENV structure.
*
- * PUBLIC: void __memp_dbenv_destroy __P((DB_ENV *));
+ * PUBLIC: void __memp_env_destroy __P((DB_ENV *));
*/
void
-__memp_dbenv_destroy(dbenv)
+__memp_env_destroy(dbenv)
DB_ENV *dbenv;
{
COMPQUIET(dbenv, NULL);
@@ -109,8 +108,6 @@ __memp_set_cachesize(dbenv, gbytes, bytes, arg_ncache)
{
u_int ncache;
- ENV_ILLEGAL_AFTER_OPEN(dbenv, "DB_ENV->set_cachesize");
-
/* Normalize the cache count. */
ncache = arg_ncache <= 0 ? 1 : (u_int)arg_ncache;
@@ -133,18 +130,18 @@ __memp_set_cachesize(dbenv, gbytes, bytes, arg_ncache)
* wrapping in the calculation of the number of hash buckets. See
* __memp_open for details.
*/
- if (sizeof(roff_t) <= 4) {
- if (gbytes / ncache >= 4) {
+ if (!F_ISSET(dbenv, DB_ENV_OPEN_CALLED)) {
+ if (sizeof(roff_t) <= 4 && gbytes / ncache >= 4) {
__db_errx(dbenv,
"individual cache size too large: maximum is 4GB");
return (EINVAL);
}
- } else
if (gbytes / ncache > 10000) {
__db_errx(dbenv,
"individual cache size too large: maximum is 10TB");
return (EINVAL);
}
+ }
/*
* If the application requested less than 500Mb, increase the cachesize
@@ -164,6 +161,9 @@ __memp_set_cachesize(dbenv, gbytes, bytes, arg_ncache)
bytes = ncache * DB_CACHESIZE_MIN;
}
+ if (F_ISSET(dbenv, DB_ENV_OPEN_CALLED))
+ return (__memp_resize(dbenv->mp_handle, gbytes, bytes));
+
dbenv->mp_gbytes = gbytes;
dbenv->mp_bytes = bytes;
dbenv->mp_ncache = ncache;
@@ -172,6 +172,76 @@ __memp_set_cachesize(dbenv, gbytes, bytes, arg_ncache)
}
/*
+ * __memp_set_config --
+ * Set the cache subsystem configuration.
+ *
+ * PUBLIC: int __memp_set_config __P((DB_ENV *, u_int32_t, int));
+ */
+int
+__memp_set_config(dbenv, which, on)
+ DB_ENV *dbenv;
+ u_int32_t which;
+ int on;
+{
+ DB_MPOOL *dbmp;
+ MPOOL *mp;
+
+ ENV_NOT_CONFIGURED(dbenv,
+ dbenv->mp_handle, "DB_ENV->memp_set_config", DB_INIT_MPOOL);
+
+ switch (which) {
+ case DB_MEMP_SUPPRESS_WRITE:
+ case DB_MEMP_SYNC_INTERRUPT:
+ if (MPOOL_ON(dbenv)) {
+ dbmp = dbenv->mp_handle;
+ mp = dbmp->reginfo[0].primary;
+ if (on)
+ FLD_SET(mp->config_flags, which);
+ else
+ FLD_CLR(mp->config_flags, which);
+ }
+ break;
+ default:
+ return (EINVAL);
+ }
+ return (0);
+}
+
+/*
+ * __memp_get_config --
+ * Return the cache subsystem configuration.
+ *
+ * PUBLIC: int __memp_get_config __P((DB_ENV *, u_int32_t, int *));
+ */
+int
+__memp_get_config(dbenv, which, onp)
+ DB_ENV *dbenv;
+ u_int32_t which;
+ int *onp;
+{
+ DB_MPOOL *dbmp;
+ MPOOL *mp;
+
+ ENV_REQUIRES_CONFIG(dbenv,
+ dbenv->mp_handle, "DB_ENV->memp_get_config", DB_INIT_MPOOL);
+
+ switch (which) {
+ case DB_MEMP_SUPPRESS_WRITE:
+ case DB_MEMP_SYNC_INTERRUPT:
+ if (MPOOL_ON(dbenv)) {
+ dbmp = dbenv->mp_handle;
+ mp = dbmp->reginfo[0].primary;
+ *onp = FLD_ISSET(mp->config_flags, which) ? 1 : 0;
+ } else
+ *onp = 0;
+ break;
+ default:
+ return (EINVAL);
+ }
+ return (0);
+}
+
+/*
* PUBLIC: int __memp_get_mp_max_openfd __P((DB_ENV *, int *));
*/
int
@@ -224,12 +294,13 @@ __memp_set_mp_max_openfd(dbenv, maxopenfd)
}
/*
- * PUBLIC: int __memp_get_mp_max_write __P((DB_ENV *, int *, int *));
+ * PUBLIC: int __memp_get_mp_max_write __P((DB_ENV *, int *, db_timeout_t *));
*/
int
__memp_get_mp_max_write(dbenv, maxwritep, maxwrite_sleepp)
DB_ENV *dbenv;
- int *maxwritep, *maxwrite_sleepp;
+ int *maxwritep;
+ db_timeout_t *maxwrite_sleepp;
{
DB_MPOOL *dbmp;
MPOOL *mp;
@@ -255,12 +326,13 @@ __memp_get_mp_max_write(dbenv, maxwritep, maxwrite_sleepp)
* __memp_set_mp_max_write --
* Set the maximum continuous I/O count.
*
- * PUBLIC: int __memp_set_mp_max_write __P((DB_ENV *, int, int));
+ * PUBLIC: int __memp_set_mp_max_write __P((DB_ENV *, int, db_timeout_t));
*/
int
__memp_set_mp_max_write(dbenv, maxwrite, maxwrite_sleep)
DB_ENV *dbenv;
- int maxwrite, maxwrite_sleep;
+ int maxwrite;
+ db_timeout_t maxwrite_sleep;
{
DB_MPOOL *dbmp;
MPOOL *mp;
@@ -366,9 +438,13 @@ __memp_nameop(dbenv, fileid, newname, fullold, fullnew, inmem)
#define op_is_remove (newname == NULL)
COMPQUIET(bucket, 0);
+ COMPQUIET(hp, NULL);
+ COMPQUIET(newname_off, 0);
+ COMPQUIET(nlen, 0);
dbmp = NULL;
mfp = NULL;
+ nhp = NULL;
p = NULL;
locked = ret = 0;
@@ -378,63 +454,61 @@ __memp_nameop(dbenv, fileid, newname, fullold, fullnew, inmem)
dbmp = dbenv->mp_handle;
mp = dbmp->reginfo[0].primary;
hp = R_ADDR(dbmp->reginfo, mp->ftab);
- nhp = NULL;
- /*
- * Remove or rename a file that the mpool might know about. We assume
- * that the fop layer has the file locked for exclusive access, so we
- * don't worry about locking except for the mpool mutexes. Checkpoint
- * can happen at any time, independent of file locking, so we have to
- * do the actual unlink or rename system call to avoid any race.
- *
- * If this is a rename, allocate first, because we can't recursively
- * grab the region lock. If this is a memory file
- * then on a rename, we need to make sure that the new name does
- * not exist.
- */
- hp = R_ADDR(dbmp->reginfo, mp->ftab);
- if (op_is_remove) {
- COMPQUIET(newname_off, INVALID_ROFF);
- } else {
+ if (!op_is_remove) {
nlen = strlen(newname);
if ((ret = __memp_alloc(dbmp, dbmp->reginfo,
NULL, nlen + 1, &newname_off, &p)) != 0)
return (ret);
memcpy(p, newname, nlen + 1);
- MPOOL_SYSTEM_LOCK(dbenv);
- locked = 1;
- if (inmem) {
- bucket = FNBUCKET(newname, nlen);
- nhp = hp + bucket;
- MUTEX_LOCK(dbenv, nhp->mtx_hash);
- SH_TAILQ_FOREACH(mfp, &nhp->hash_bucket, q, __mpoolfile)
- if (!mfp->deadfile &&
- mfp->no_backing_file && strcmp(newname,
- R_ADDR(dbmp->reginfo, mfp->path_off)) == 0)
- break;
- MUTEX_UNLOCK(dbenv, nhp->mtx_hash);
- if (mfp != NULL) {
- ret = EEXIST;
- goto err;
- }
- }
}
- if (locked == 0)
- MPOOL_SYSTEM_LOCK(dbenv);
- locked = 1;
-
+ /*
+ * Remove or rename a file that the mpool might know about. We assume
+ * that the fop layer has the file locked for exclusive access, so we
+ * don't worry about locking except for the mpool mutexes. Checkpoint
+ * can happen at any time, independent of file locking, so we have to
+ * do the actual unlink or rename system call while holding
+ * all affected buckets locked.
+ *
+ * If this is a rename and this is a memory file then we need
+ * to make sure that the new name does not exist. Since we
+ * are locking two buckets lock them in ascending order.
+ */
if (inmem) {
DB_ASSERT(dbenv, fullold != NULL);
hp += FNBUCKET(fullold, strlen(fullold));
+ if (!op_is_remove) {
+ bucket = FNBUCKET(newname, nlen);
+ nhp = R_ADDR(dbmp->reginfo, mp->ftab);
+ nhp += bucket;
+ }
} else
hp += FNBUCKET(fileid, DB_FILE_ID_LEN);
+ if (nhp != NULL && nhp < hp)
+ MUTEX_LOCK(dbenv, nhp->mtx_hash);
+ MUTEX_LOCK(dbenv, hp->mtx_hash);
+ if (nhp != NULL && nhp > hp)
+ MUTEX_LOCK(dbenv, nhp->mtx_hash);
+ locked = 1;
+
+ if (!op_is_remove && inmem) {
+ SH_TAILQ_FOREACH(mfp, &nhp->hash_bucket, q, __mpoolfile)
+ if (!mfp->deadfile &&
+ mfp->no_backing_file && strcmp(newname,
+ R_ADDR(dbmp->reginfo, mfp->path_off)) == 0)
+ break;
+ if (mfp != NULL) {
+ ret = EEXIST;
+ goto err;
+ }
+ }
+
/*
* Find the file -- if mpool doesn't know about this file, that may
- * not be an error -- if the file is not a memory-only file and it
+ * not be an error.
*/
- MUTEX_LOCK(dbenv, hp->mtx_hash);
SH_TAILQ_FOREACH(mfp, &hp->hash_bucket, q, __mpoolfile) {
/* Ignore non-active files. */
if (mfp->deadfile || F_ISSET(mfp, MP_TEMP))
@@ -447,17 +521,21 @@ __memp_nameop(dbenv, fileid, newname, fullold, fullnew, inmem)
break;
}
- MUTEX_UNLOCK(dbenv, hp->mtx_hash);
- if (mfp == NULL)
+
+ if (mfp == NULL) {
+ if (inmem) {
+ ret = ENOENT;
+ goto err;
+ }
goto fsop;
+ }
if (op_is_remove) {
MUTEX_LOCK(dbenv, mfp->mutex);
/*
- * In-memory dbs have an artificially incremented
- * ref count so that they do not ever get reclaimed
- * as long as they exist. Since we are now deleting
- * the database, we need to dec that count.
+ * In-memory dbs have an artificially incremented ref count so
+ * they do not get reclaimed as long as they exist. Since we
+ * are now deleting the database, we need to dec that count.
*/
if (mfp->no_backing_file)
mfp->mpf_cnt--;
@@ -465,31 +543,22 @@ __memp_nameop(dbenv, fileid, newname, fullold, fullnew, inmem)
MUTEX_UNLOCK(dbenv, mfp->mutex);
} else {
/*
- * Else, it's a rename. We've allocated memory
- * for the new name. Swap it with the old one.
+ * Else, it's a rename. We've allocated memory for the new
+ * name. Swap it with the old one. If it's in memory we
+ * need to move it the right bucket.
*/
p = R_ADDR(dbmp->reginfo, mfp->path_off);
mfp->path_off = newname_off;
- /* If its in memory we need to move it the right bucket. */
- if (inmem) {
+ if (inmem && hp != nhp) {
DB_ASSERT(dbenv, nhp != NULL);
- MUTEX_LOCK(dbenv, hp->mtx_hash);
SH_TAILQ_REMOVE(&hp->hash_bucket, mfp, q, __mpoolfile);
- MUTEX_UNLOCK(dbenv, hp->mtx_hash);
mfp->bucket = bucket;
- MUTEX_LOCK(dbenv, nhp->mtx_hash);
SH_TAILQ_INSERT_TAIL(&nhp->hash_bucket, mfp, q);
- MUTEX_UNLOCK(dbenv, nhp->mtx_hash);
}
}
-fsop: if (mfp == NULL && inmem) {
- ret = ENOENT;
- goto err;
- }
-
- /*
+fsop: /*
* If this is a real file, then mfp could be NULL, because
* mpool isn't turned on, and we still need to do the file ops.
*/
@@ -504,12 +573,14 @@ fsop: if (mfp == NULL && inmem) {
ret = 0;
} else {
/*
- * Defensive only, fullname should never be
+ * Defensive only, fullnew should never be
* NULL.
*/
DB_ASSERT(dbenv, fullnew != NULL);
- if (fullnew == NULL)
- return (EINVAL);
+ if (fullnew == NULL) {
+ ret = EINVAL;
+ goto err;
+ }
ret = __os_rename(dbenv, fullold, fullnew, 1);
}
}
@@ -518,8 +589,12 @@ fsop: if (mfp == NULL && inmem) {
err: if (p != NULL)
__memp_free(&dbmp->reginfo[0], NULL, p);
- if (locked == 1)
- MPOOL_SYSTEM_UNLOCK(dbenv);
+ /* If we have buckets locked, unlock them when done moving files. */
+ if (locked == 1) {
+ MUTEX_UNLOCK(dbenv, hp->mtx_hash);
+ if (nhp != NULL && nhp != hp)
+ MUTEX_UNLOCK(dbenv, nhp->mtx_hash);
+ }
return (ret);
}
diff --git a/db/mp/mp_mvcc.c b/db/mp/mp_mvcc.c
index 4a763e1de..e797df904 100644
--- a/db/mp/mp_mvcc.c
+++ b/db/mp/mp_mvcc.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2006,2007 Oracle. All rights reserved.
*
- * $Id: mp_mvcc.c,v 12.24 2006/09/18 13:11:50 mjc Exp $
+ * $Id: mp_mvcc.c,v 12.34 2007/06/05 11:55:28 mjc Exp $
*/
#include "db_config.h"
@@ -92,9 +91,12 @@ __memp_bucket_reorder(dbenv, hp, bhp)
next, bhp, hq, __bh);
}
-done: /* Reset the hash bucket's priority. */
- hp->hash_priority =
- BH_PRIORITY(SH_TAILQ_FIRST(&hp->hash_bucket, __bh));
+done: /*
+ * Reset the hash bucket's priority -- the chain is never empty in
+ * this case, so bhp will never be NULL.
+ */
+ if ((bhp = SH_TAILQ_FIRST(&hp->hash_bucket, __bh)) != NULL)
+ hp->hash_priority = BH_PRIORITY(bhp);
}
/*
@@ -103,7 +105,8 @@ done: /* Reset the hash bucket's priority. */
*
* PUBLIC: int __memp_bh_settxn __P((DB_MPOOL *, MPOOLFILE *mfp, BH *, void *));
*/
-int __memp_bh_settxn(dbmp, mfp, bhp, vtd)
+int
+__memp_bh_settxn(dbmp, mfp, bhp, vtd)
DB_MPOOL *dbmp;
MPOOLFILE *mfp;
BH *bhp;
@@ -149,16 +152,13 @@ __memp_skip_curadj(dbc, pgno)
DB_MPOOL_HASH *hp;
DB_MPOOLFILE *dbmfp;
DB_TXN *txn;
- MPOOL *c_mp, *mp;
MPOOLFILE *mfp;
REGINFO *infop;
roff_t mf_offset;
- u_int32_t n_cache;
- int skip;
+ int ret, skip;
dbenv = dbc->dbp->dbenv;
dbmp = dbenv->mp_handle;
- mp = dbmp->reginfo[0].primary;
dbmfp = dbc->dbp->mpf;
mfp = dbmfp->mfp;
mf_offset = R_OFFSET(dbmp->reginfo, mfp);
@@ -172,13 +172,13 @@ __memp_skip_curadj(dbc, pgno)
* local pointers to them. Reset on each pass through this code, the
* page number can change.
*/
- n_cache = NCACHE(mp, mf_offset, pgno);
- infop = &dbmp->reginfo[n_cache];
- c_mp = infop->primary;
- hp = R_ADDR(infop, c_mp->htab);
- hp = &hp[NBUCKET(c_mp, mf_offset, pgno)];
+ MP_GET_BUCKET(dbmfp, pgno, &infop, hp, ret);
+ if (ret != 0) {
+ /* Panic: there is no way to return the error. */
+ (void)__db_panic(dbenv, ret);
+ return (0);
+ }
- MUTEX_LOCK(dbenv, hp->mtx_hash);
SH_TAILQ_FOREACH(bhp, &hp->hash_bucket, hq, __bh) {
if (bhp->pgno != pgno || bhp->mf_offset != mf_offset)
continue;
@@ -251,12 +251,12 @@ __memp_bh_freeze(dbmp, infop, hp, bhp, need_frozenp)
*need_frozenp = 1;
/* There might be a small amount of unallocated space. */
- if (__db_shalloc(infop,
- sizeof(BH_FROZEN_ALLOC) + sizeof(BH_FROZEN_PAGE), 0,
+ if (__env_alloc(infop,
+ sizeof(BH_FROZEN_ALLOC) + sizeof(BH_FROZEN_PAGE),
&frozen_alloc) == 0) {
frozen_bhp = (BH *)(frozen_alloc + 1);
- SH_TAILQ_INSERT_HEAD(&c_mp->alloc_frozen, frozen_alloc,
- links, __bh_frozen_a);
+ SH_TAILQ_INSERT_TAIL(&c_mp->alloc_frozen,
+ frozen_alloc, links);
}
}
MPOOL_REGION_UNLOCK(dbenv, infop);
@@ -285,7 +285,7 @@ __memp_bh_freeze(dbmp, infop, hp, bhp, need_frozenp)
if ((ret = __db_appname(dbenv, DB_APP_NONE, filename,
0, NULL, &real_name)) != 0)
goto err;
- if ((ret = __os_open_extend(dbenv, real_name, pagesize,
+ if ((ret = __os_open(dbenv, real_name, pagesize,
DB_OSO_CREATE | DB_OSO_EXCL, dbenv->db_mode, &fhp)) == 0) {
/* We're creating the file -- initialize the metadata page. */
magic = DB_FREEZER_MAGIC;
@@ -299,8 +299,8 @@ __memp_bh_freeze(dbmp, infop, hp, bhp, need_frozenp)
(ret = __os_seek(dbenv, fhp, 0, 0, 0)) != 0)
goto err;
} else if (ret == EEXIST)
- ret = __os_open_extend(dbenv, real_name, pagesize, 0,
- dbenv->db_mode, &fhp);
+ ret = __os_open(
+ dbenv, real_name, pagesize, 0, dbenv->db_mode, &fhp);
if (ret != 0)
goto err;
if ((ret = __os_read(dbenv, fhp, &magic, sizeof(u_int32_t),
@@ -372,8 +372,11 @@ __memp_bh_freeze(dbmp, infop, hp, bhp, need_frozenp)
* Increment the file's block count -- freeing the original buffer will
* decrement it.
*/
+ MUTEX_LOCK(dbenv, bh_mfp->mutex);
++bh_mfp->block_cnt;
- ++hp->hash_frozen;
+ MUTEX_UNLOCK(dbenv, bh_mfp->mutex);
+
+ STAT(++hp->hash_frozen);
if (0) {
err: if (ret == 0)
@@ -492,8 +495,8 @@ __memp_bh_thaw(dbmp, infop, hp, frozen_bhp, alloc_bhp)
&real_name)) != 0)
goto err;
- if ((ret = __os_open_extend(dbenv, real_name, pagesize, 0,
- dbenv->db_mode, &fhp)) != 0)
+ if ((ret = __os_open(
+ dbenv, real_name, pagesize, 0, dbenv->db_mode, &fhp)) != 0)
goto err;
/*
@@ -625,8 +628,8 @@ __memp_bh_thaw(dbmp, infop, hp, frozen_bhp, alloc_bhp)
if (reorder) {
if (next_bhp != NULL)
__memp_bucket_reorder(dbenv, hp, next_bhp);
- else
- hp->hash_priority = BH_PRIORITY(SH_TAILQ_FIRST(
+ else if (!SH_TAILQ_EMPTY(&hp->hash_bucket))
+ hp->hash_priority = BH_PRIORITY(SH_TAILQ_FIRSTP(
&hp->hash_bucket, __bh));
}
@@ -651,10 +654,12 @@ __memp_bh_thaw(dbmp, infop, hp, frozen_bhp, alloc_bhp)
F_CLR(frozen_bhp, BH_FROZEN | BH_LOCKED);
}
+#ifdef HAVE_STATISTICS
if (alloc_bhp != NULL)
++hp->hash_thawed;
else
++hp->hash_frozen_freed;
+#endif
if (0) {
err: if (ret == 0)
diff --git a/db/mp/mp_region.c b/db/mp/mp_region.c
index a02683f21..34a1ced15 100644
--- a/db/mp/mp_region.c
+++ b/db/mp/mp_region.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: mp_region.c,v 12.21 2006/08/24 14:46:15 bostic Exp $
+ * $Id: mp_region.c,v 12.33 2007/05/17 17:18:01 bostic Exp $
*/
#include "db_config.h"
@@ -12,7 +11,6 @@
#include "db_int.h"
#include "dbinc/mp.h"
-static int __memp_init __P((DB_ENV *, DB_MPOOL *, u_int, u_int32_t));
static int __memp_init_config __P((DB_ENV *, MPOOL *));
static void __memp_region_size __P((DB_ENV *, roff_t *, u_int32_t *));
@@ -20,17 +18,18 @@ static void __memp_region_size __P((DB_ENV *, roff_t *, u_int32_t *));
* __memp_open --
* Internal version of memp_open: only called from DB_ENV->open.
*
- * PUBLIC: int __memp_open __P((DB_ENV *));
+ * PUBLIC: int __memp_open __P((DB_ENV *, int));
*/
int
-__memp_open(dbenv)
+__memp_open(dbenv, create_ok)
DB_ENV *dbenv;
+ int create_ok;
{
DB_MPOOL *dbmp;
MPOOL *mp;
REGINFO reginfo;
roff_t reg_size;
- u_int i;
+ u_int i, max_nreg;
u_int32_t htab_buckets, *regids;
int ret;
@@ -50,9 +49,9 @@ __memp_open(dbenv)
reginfo.type = REGION_TYPE_MPOOL;
reginfo.id = INVALID_REGION_ID;
reginfo.flags = REGION_JOIN_OK;
- if (F_ISSET(dbenv, DB_ENV_CREATE))
+ if (create_ok)
F_SET(&reginfo, REGION_CREATE_OK);
- if ((ret = __db_r_attach(dbenv, &reginfo, reg_size)) != 0)
+ if ((ret = __env_region_attach(dbenv, &reginfo, reg_size)) != 0)
goto err;
/*
@@ -65,17 +64,18 @@ __memp_open(dbenv)
* the REGINFO structures and create them. Make sure we don't
* clear the wrong entries on error.
*/
- dbmp->nreg = dbenv->mp_ncache;
+ max_nreg = __memp_max_regions(dbenv);
if ((ret = __os_calloc(dbenv,
- dbmp->nreg, sizeof(REGINFO), &dbmp->reginfo)) != 0)
+ max_nreg, sizeof(REGINFO), &dbmp->reginfo)) != 0)
goto err;
/* Make sure we don't clear the wrong entries on error. */
- for (i = 0; i < dbmp->nreg; ++i)
- dbmp->reginfo[i].id = INVALID_REGION_ID;
dbmp->reginfo[0] = reginfo;
+ for (i = 1; i < max_nreg; ++i)
+ dbmp->reginfo[i].id = INVALID_REGION_ID;
/* Initialize the first region. */
- if ((ret = __memp_init(dbenv, dbmp, 0, htab_buckets)) != 0)
+ if ((ret = __memp_init(dbenv, dbmp,
+ 0, htab_buckets, max_nreg)) != 0)
goto err;
/*
@@ -84,16 +84,17 @@ __memp_open(dbenv)
*/
mp = R_ADDR(dbmp->reginfo, dbmp->reginfo[0].rp->primary);
regids = R_ADDR(dbmp->reginfo, mp->regids);
- for (i = 1; i < dbmp->nreg; ++i) {
+ regids[0] = dbmp->reginfo[0].id;
+ for (i = 1; i < dbenv->mp_ncache; ++i) {
dbmp->reginfo[i].dbenv = dbenv;
dbmp->reginfo[i].type = REGION_TYPE_MPOOL;
dbmp->reginfo[i].id = INVALID_REGION_ID;
dbmp->reginfo[i].flags = REGION_CREATE_OK;
- if ((ret = __db_r_attach(
+ if ((ret = __env_region_attach(
dbenv, &dbmp->reginfo[i], reg_size)) != 0)
goto err;
- if ((ret =
- __memp_init(dbenv, dbmp, i, htab_buckets)) != 0)
+ if ((ret = __memp_init(dbenv, dbmp,
+ i, htab_buckets, max_nreg)) != 0)
goto err;
regids[i] = dbmp->reginfo[i].id;
@@ -105,30 +106,30 @@ __memp_open(dbenv)
* information.
*/
mp = R_ADDR(&reginfo, reginfo.rp->primary);
- dbmp->nreg = mp->nreg;
+ dbenv->mp_ncache = mp->nreg;
if ((ret = __os_calloc(dbenv,
- dbmp->nreg, sizeof(REGINFO), &dbmp->reginfo)) != 0)
+ mp->max_nreg, sizeof(REGINFO), &dbmp->reginfo)) != 0)
goto err;
/* Make sure we don't clear the wrong entries on error. */
- for (i = 0; i < dbmp->nreg; ++i)
+ for (i = 0; i < dbenv->mp_ncache; ++i)
dbmp->reginfo[i].id = INVALID_REGION_ID;
dbmp->reginfo[0] = reginfo;
/* Join remaining regions. */
regids = R_ADDR(dbmp->reginfo, mp->regids);
- for (i = 1; i < dbmp->nreg; ++i) {
+ for (i = 1; i < dbenv->mp_ncache; ++i) {
dbmp->reginfo[i].dbenv = dbenv;
dbmp->reginfo[i].type = REGION_TYPE_MPOOL;
dbmp->reginfo[i].id = regids[i];
dbmp->reginfo[i].flags = REGION_JOIN_OK;
- if ((ret = __db_r_attach(
+ if ((ret = __env_region_attach(
dbenv, &dbmp->reginfo[i], 0)) != 0)
goto err;
}
}
/* Set the local addresses for the regions. */
- for (i = 0; i < dbmp->nreg; ++i)
+ for (i = 0; i < dbenv->mp_ncache; ++i)
dbmp->reginfo[i].primary =
R_ADDR(&dbmp->reginfo[i], dbmp->reginfo[i].rp->primary);
@@ -147,9 +148,9 @@ __memp_open(dbenv)
err: dbenv->mp_handle = NULL;
if (dbmp->reginfo != NULL && dbmp->reginfo[0].addr != NULL) {
- for (i = 0; i < dbmp->nreg; ++i)
+ for (i = 0; i < dbenv->mp_ncache; ++i)
if (dbmp->reginfo[i].id != INVALID_REGION_ID)
- (void)__db_r_detach(
+ (void)__env_region_detach(
dbenv, &dbmp->reginfo[i], 0);
__os_free(dbenv, dbmp->reginfo);
}
@@ -162,27 +163,32 @@ err: dbenv->mp_handle = NULL;
/*
* __memp_init --
* Initialize a MPOOL structure in shared memory.
+ *
+ * PUBLIC: int __memp_init
+ * PUBLIC: __P((DB_ENV *, DB_MPOOL *, u_int, u_int32_t, u_int));
*/
-static int
-__memp_init(dbenv, dbmp, reginfo_off, htab_buckets)
+int
+__memp_init(dbenv, dbmp, reginfo_off, htab_buckets, max_nreg)
DB_ENV *dbenv;
DB_MPOOL *dbmp;
- u_int reginfo_off;
+ u_int reginfo_off, max_nreg;
u_int32_t htab_buckets;
{
+ BH_FROZEN_ALLOC *frozen;
+ BH *frozen_bhp;
DB_MPOOL_HASH *htab, *hp;
- MPOOL *mp;
- REGINFO *reginfo;
+ MPOOL *mp, *main_mp;
+ REGINFO *infop;
+ db_mutex_t mtx_base, mtx_discard, mtx_prev;
u_int32_t i;
int ret;
void *p;
- reginfo = &dbmp->reginfo[reginfo_off];
- if ((ret = __db_shalloc(
- reginfo, sizeof(MPOOL), 0, &reginfo->primary)) != 0)
+ infop = &dbmp->reginfo[reginfo_off];
+ if ((ret = __env_alloc(infop, sizeof(MPOOL), &infop->primary)) != 0)
goto mem_err;
- reginfo->rp->primary = R_OFFSET(reginfo, reginfo->primary);
- mp = reginfo->primary;
+ infop->rp->primary = R_OFFSET(infop, infop->primary);
+ mp = infop->primary;
memset(mp, 0, sizeof(*mp));
if ((ret =
@@ -192,17 +198,19 @@ __memp_init(dbenv, dbmp, reginfo_off, htab_buckets)
if (reginfo_off == 0) {
ZERO_LSN(mp->lsn);
- mp->nreg = dbmp->nreg;
- if ((ret = __db_shalloc(&dbmp->reginfo[0],
- dbmp->nreg * sizeof(u_int32_t), 0, &p)) != 0)
+ mp->nreg = dbenv->mp_ncache;
+ mp->max_nreg = max_nreg;
+ if ((ret = __env_alloc(&dbmp->reginfo[0],
+ max_nreg * sizeof(u_int32_t), &p)) != 0)
goto mem_err;
mp->regids = R_OFFSET(dbmp->reginfo, p);
+ mp->nbuckets = dbenv->mp_ncache * htab_buckets;
/* Allocate file table space and initialize it. */
- if ((ret = __db_shalloc(reginfo,
- MPOOL_FILE_BUCKETS * sizeof(DB_MPOOL_HASH), 0, &htab)) != 0)
+ if ((ret = __env_alloc(infop,
+ MPOOL_FILE_BUCKETS * sizeof(DB_MPOOL_HASH), &htab)) != 0)
goto mem_err;
- mp->ftab = R_OFFSET(reginfo, htab);
+ mp->ftab = R_OFFSET(infop, htab);
for (i = 0; i < MPOOL_FILE_BUCKETS; i++) {
if ((ret = __mutex_alloc(dbenv,
MTX_MPOOL_FILE_BUCKET, 0, &htab[i].mtx_hash)) != 0)
@@ -211,32 +219,80 @@ __memp_init(dbenv, dbmp, reginfo_off, htab_buckets)
htab[i].hash_page_dirty = htab[i].hash_priority = 0;
}
+ /*
+ * Allocate all of the hash bucket mutexes up front. We do
+ * this so that we don't need to free and reallocate mutexes as
+ * the cache is resized.
+ */
+ mtx_base = mtx_prev = MUTEX_INVALID;
+ for (i = 0; i < mp->max_nreg * htab_buckets; i++) {
+ if ((ret = __mutex_alloc(dbenv, MTX_MPOOL_HASH_BUCKET,
+ 0, &mtx_discard)) != 0)
+ return (ret);
+ if (i == 0) {
+ mtx_base = mtx_discard;
+ mtx_prev = mtx_discard - 1;
+ }
+ DB_ASSERT(dbenv, mtx_discard == mtx_prev + 1 ||
+ mtx_base == MUTEX_INVALID);
+ mtx_prev = mtx_discard;
+ if ((ret = __mutex_alloc(dbenv, MTX_MPOOL_IO,
+ DB_MUTEX_SELF_BLOCK, &mtx_discard)) != 0)
+ return (ret);
+ DB_ASSERT(dbenv, mtx_discard == mtx_prev + 1 ||
+ mtx_base == MUTEX_INVALID);
+ mtx_prev = mtx_discard;
+ }
+ } else {
+ main_mp = dbmp->reginfo[0].primary;
+ htab = R_ADDR(&dbmp->reginfo[0], main_mp->htab);
+ mtx_base = htab[0].mtx_hash;
}
+ if (mtx_base != MUTEX_INVALID)
+ mtx_base += reginfo_off * htab_buckets;
+
/* Allocate hash table space and initialize it. */
- if ((ret = __db_shalloc(reginfo,
- htab_buckets * sizeof(DB_MPOOL_HASH), 0, &htab)) != 0)
+ if ((ret = __env_alloc(infop,
+ htab_buckets * sizeof(DB_MPOOL_HASH), &htab)) != 0)
goto mem_err;
- mp->htab = R_OFFSET(reginfo, htab);
+ mp->htab = R_OFFSET(infop, htab);
for (i = 0; i < htab_buckets; i++) {
hp = &htab[i];
- if ((ret = __mutex_alloc(dbenv,
- MTX_MPOOL_HASH_BUCKET, 0, &hp->mtx_hash)) != 0)
- return (ret);
- if ((ret = __mutex_alloc(dbenv,
- MTX_MPOOL_IO, DB_MUTEX_SELF_BLOCK, &hp->mtx_io)) != 0)
- return (ret);
+ hp->mtx_hash = (mtx_base == MUTEX_INVALID) ? MUTEX_INVALID :
+ mtx_base + i * 2;
+ hp->mtx_io = (mtx_base == MUTEX_INVALID) ? MUTEX_INVALID :
+ mtx_base + i * 2 + 1;
SH_TAILQ_INIT(&hp->hash_bucket);
- hp->hash_page_dirty = hp->hash_priority = hp->hash_io_wait = 0;
+ hp->hash_page_dirty = hp->hash_priority = 0;
+#ifdef HAVE_STATISTICS
+ hp->hash_io_wait = 0;
+ hp->hash_frozen = hp->hash_thawed = hp->hash_frozen_freed = 0;
+#endif
hp->flags = 0;
ZERO_LSN(hp->old_reader);
}
- mp->htab_buckets = mp->stat.st_hash_buckets = htab_buckets;
+ mp->htab_buckets = htab_buckets;
+#ifdef HAVE_STATISTICS
+ mp->stat.st_hash_buckets = htab_buckets;
+#endif
SH_TAILQ_INIT(&mp->free_frozen);
SH_TAILQ_INIT(&mp->alloc_frozen);
/*
+ * Pre-allocate one frozen buffer header. This avoids situations where
+ * the cache becomes full of pages and we don't even have the 28 bytes
+ * (or so) available to allocate a frozen buffer header.
+ */
+ if ((ret = __env_alloc(infop,
+ sizeof(BH_FROZEN_ALLOC) + sizeof(BH_FROZEN_PAGE), &frozen)) != 0)
+ goto mem_err;
+ frozen_bhp = (BH *)(frozen + 1);
+ SH_TAILQ_INSERT_TAIL(&mp->alloc_frozen, frozen, links);
+ SH_TAILQ_INSERT_TAIL(&mp->free_frozen, frozen_bhp, hq);
+
+ /*
* Only the environment creator knows the total cache size, fill in
* those statistics now.
*/
@@ -249,6 +305,25 @@ mem_err:__db_errx(dbenv, "Unable to allocate memory for mpool region");
}
/*
+ * PUBLIC: u_int32_t __memp_max_regions __P((DB_ENV *));
+ */
+u_int32_t
+__memp_max_regions(dbenv)
+ DB_ENV *dbenv;
+{
+ roff_t reg_size, max_size;
+ u_int32_t max_nreg;
+
+ __memp_region_size(dbenv, &reg_size, NULL);
+ max_size = (roff_t)dbenv->mp_max_gbytes * GIGABYTE +
+ dbenv->mp_max_bytes;
+ max_nreg = (max_size + reg_size / 2) / reg_size;
+ if (max_nreg <= dbenv->mp_ncache)
+ max_nreg = dbenv->mp_ncache;
+ return (max_nreg);
+}
+
+/*
* __memp_region_size --
* Size the region and figure out how many hash buckets we'll have.
*/
@@ -258,15 +333,16 @@ __memp_region_size(dbenv, reg_sizep, htab_bucketsp)
roff_t *reg_sizep;
u_int32_t *htab_bucketsp;
{
- roff_t reg_size;
+ roff_t reg_size, cache_size;
/*
* Figure out how big each cache region is. Cast an operand to roff_t
* so we do 64-bit arithmetic as appropriate.
*/
- reg_size = ((roff_t)GIGABYTE / dbenv->mp_ncache) * dbenv->mp_gbytes;
- reg_size += dbenv->mp_bytes / dbenv->mp_ncache;
- *reg_sizep = reg_size;
+ cache_size = (roff_t)dbenv->mp_gbytes * GIGABYTE + dbenv->mp_bytes;
+ reg_size = cache_size / dbenv->mp_ncache;
+ if (reg_sizep != NULL)
+ *reg_sizep = reg_size;
/*
* Figure out how many hash buckets each region will have. Assume we
@@ -281,7 +357,9 @@ __memp_region_size(dbenv, reg_sizep, htab_bucketsp)
* something we need to worry about right now, but is checked when the
* cache size is set.
*/
- *htab_bucketsp = __db_tablesize((u_int32_t)(reg_size / (10 * 1024)));
+ if (htab_bucketsp != NULL)
+ *htab_bucketsp =
+ __db_tablesize((u_int32_t)(reg_size / (10 * 1024)));
}
/*
@@ -294,10 +372,9 @@ u_int32_t
__memp_region_mutex_count(dbenv)
DB_ENV *dbenv;
{
- roff_t reg_size;
u_int32_t htab_buckets;
- __memp_region_size(dbenv, &reg_size, &htab_buckets);
+ __memp_region_size(dbenv, NULL, &htab_buckets);
/*
* We need a couple of mutexes for the region itself, one for each
@@ -334,13 +411,13 @@ __memp_init_config(dbenv, mp)
}
/*
- * __memp_dbenv_refresh --
+ * __memp_env_refresh --
* Clean up after the mpool system on a close or failed open.
*
- * PUBLIC: int __memp_dbenv_refresh __P((DB_ENV *));
+ * PUBLIC: int __memp_env_refresh __P((DB_ENV *));
*/
int
-__memp_dbenv_refresh(dbenv)
+__memp_env_refresh(dbenv)
DB_ENV *dbenv;
{
BH *bhp;
@@ -349,53 +426,72 @@ __memp_dbenv_refresh(dbenv)
DB_MPOOLFILE *dbmfp;
DB_MPOOL_HASH *hp;
DB_MPREG *mpreg;
- MPOOL *mp;
- REGINFO *reginfo;
- u_int32_t bucket, i;
+ MPOOL *mp, *c_mp;
+ REGINFO *infop;
+ db_mutex_t mtx_base, mtx;
+ u_int32_t bucket, htab_buckets, i, max_nreg, nreg;
int ret, t_ret;
ret = 0;
dbmp = dbenv->mp_handle;
+ mp = dbmp->reginfo[0].primary;
+ htab_buckets = mp->htab_buckets;
+ nreg = mp->nreg;
+ max_nreg = mp->max_nreg;
+ hp = R_ADDR(&dbmp->reginfo[0], mp->htab);
+ mtx_base = hp->mtx_hash;
/*
* If a private region, return the memory to the heap. Not needed for
* filesystem-backed or system shared memory regions, that memory isn't
* owned by any particular process.
- *
- * Discard buffers.
*/
- if (F_ISSET(dbenv, DB_ENV_PRIVATE))
- for (i = 0; i < dbmp->nreg; ++i) {
- reginfo = &dbmp->reginfo[i];
- mp = reginfo->primary;
- for (hp = R_ADDR(reginfo, mp->htab), bucket = 0;
- bucket < mp->htab_buckets; ++hp, ++bucket) {
- while ((bhp = SH_TAILQ_FIRST(
- &hp->hash_bucket, __bh)) != NULL)
- if (F_ISSET(bhp, BH_FROZEN))
- SH_TAILQ_REMOVE(
- &hp->hash_bucket, bhp,
- hq, __bh);
- else if ((t_ret = __memp_bhfree(
- dbmp, hp, bhp,
+ if (!F_ISSET(dbenv, DB_ENV_PRIVATE))
+ goto not_priv;
+
+ /* Discard buffers. */
+ for (i = 0; i < nreg; ++i) {
+ infop = &dbmp->reginfo[i];
+ c_mp = infop->primary;
+ for (hp = R_ADDR(infop, c_mp->htab), bucket = 0;
+ bucket < c_mp->htab_buckets; ++hp, ++bucket) {
+ while ((bhp = SH_TAILQ_FIRST(
+ &hp->hash_bucket, __bh)) != NULL)
+ if (F_ISSET(bhp, BH_FROZEN))
+ SH_TAILQ_REMOVE(
+ &hp->hash_bucket, bhp,
+ hq, __bh);
+ else {
+ if (F_ISSET(bhp, BH_DIRTY)) {
+ --hp->hash_page_dirty;
+ F_CLR(bhp,
+ BH_DIRTY | BH_DIRTY_CREATE);
+ }
+ if ((t_ret = __memp_bhfree(
+ dbmp, infop, hp, bhp,
BH_FREE_FREEMEM |
BH_FREE_UNLOCKED)) != 0 && ret == 0)
ret = t_ret;
- if ((t_ret = __mutex_free(
- dbenv, &hp->mtx_hash)) != 0 && ret == 0)
- ret = t_ret;
- if ((t_ret = __mutex_free(
- dbenv, &hp->mtx_io)) != 0 && ret == 0)
- ret = t_ret;
- }
- while ((frozen_alloc = SH_TAILQ_FIRST(
- &mp->alloc_frozen, __bh_frozen_a)) != NULL) {
- SH_TAILQ_REMOVE(&mp->alloc_frozen, frozen_alloc,
- links, __bh_frozen_a);
- __db_shalloc_free(reginfo, frozen_alloc);
- }
+ }
+ }
+ while ((frozen_alloc = SH_TAILQ_FIRST(
+ &c_mp->alloc_frozen, __bh_frozen_a)) != NULL) {
+ SH_TAILQ_REMOVE(&c_mp->alloc_frozen, frozen_alloc,
+ links, __bh_frozen_a);
+ __env_alloc_free(infop, frozen_alloc);
+ }
+ }
+
+ /* Discard hash bucket mutexes. */
+ if (mtx_base != MUTEX_INVALID)
+ for (i = 0; i < 2 * max_nreg * htab_buckets; ++i) {
+ mtx = mtx_base + i;
+ if ((t_ret = __mutex_free(dbenv, &mtx)) != 0 &&
+ ret == 0)
+ ret = t_ret;
}
+not_priv:
/* Discard DB_MPOOLFILEs. */
while ((dbmfp = TAILQ_FIRST(&dbmp->dbmfq)) != NULL)
if ((t_ret = __memp_fclose(dbmfp, 0)) != 0 && ret == 0)
@@ -415,25 +511,25 @@ __memp_dbenv_refresh(dbenv)
if (F_ISSET(dbenv, DB_ENV_PRIVATE)) {
/* Discard REGION IDs. */
- reginfo = &dbmp->reginfo[0];
- mp = dbmp->reginfo[0].primary;
- __memp_free(reginfo, NULL, R_ADDR(reginfo, mp->regids));
+ infop = &dbmp->reginfo[0];
+ __memp_free(infop, NULL, R_ADDR(infop, mp->regids));
/* Discard the File table. */
- __memp_free(reginfo, NULL, R_ADDR(reginfo, mp->ftab));
+ __memp_free(infop, NULL, R_ADDR(infop, mp->ftab));
/* Discard Hash tables. */
- for (i = 0; i < dbmp->nreg; ++i) {
- reginfo = &dbmp->reginfo[i];
- mp = reginfo->primary;
- __memp_free(reginfo, NULL, R_ADDR(reginfo, mp->htab));
+ for (i = 0; i < nreg; ++i) {
+ infop = &dbmp->reginfo[i];
+ c_mp = infop->primary;
+ __memp_free(infop, NULL, R_ADDR(infop, c_mp->htab));
}
}
/* Detach from the region. */
- for (i = 0; i < dbmp->nreg; ++i) {
- reginfo = &dbmp->reginfo[i];
- if ((t_ret = __db_r_detach(dbenv, reginfo, 0)) != 0 && ret == 0)
+ for (i = 0; i < nreg; ++i) {
+ infop = &dbmp->reginfo[i];
+ if ((t_ret =
+ __env_region_detach(dbenv, infop, 0)) != 0 && ret == 0)
ret = t_ret;
}
diff --git a/db/mp/mp_register.c b/db/mp/mp_register.c
index 1ca5f8311..ef5269d42 100644
--- a/db/mp/mp_register.c
+++ b/db/mp/mp_register.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: mp_register.c,v 12.11 2006/08/24 14:46:15 bostic Exp $
+ * $Id: mp_register.c,v 12.13 2007/05/17 15:15:45 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/mp/mp_resize.c b/db/mp/mp_resize.c
new file mode 100644
index 000000000..241f37e4b
--- /dev/null
+++ b/db/mp/mp_resize.c
@@ -0,0 +1,559 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 2006,2007 Oracle. All rights reserved.
+ *
+ * $Id: mp_resize.c,v 12.5 2007/06/05 11:55:28 mjc Exp $
+ */
+
+#include "db_config.h"
+
+#include "db_int.h"
+#include "dbinc/mp.h"
+#include "dbinc/txn.h"
+
+static int __memp_add_bucket __P((DB_MPOOL *));
+static int __memp_add_region __P((DB_MPOOL *));
+static int __memp_map_regions __P((DB_MPOOL *));
+static int __memp_merge_buckets
+ __P((DB_MPOOL *, u_int32_t, u_int32_t, u_int32_t));
+static int __memp_remove_bucket __P((DB_MPOOL *));
+static int __memp_remove_region __P((DB_MPOOL *));
+
+/*
+ * PUBLIC: int __memp_get_bucket
+ * PUBLIC: __P((DB_MPOOLFILE *, db_pgno_t, REGINFO **, DB_MPOOL_HASH **));
+ */
+int
+__memp_get_bucket(dbmfp, pgno, infopp, hpp)
+ DB_MPOOLFILE *dbmfp;
+ db_pgno_t pgno;
+ REGINFO **infopp;
+ DB_MPOOL_HASH **hpp;
+{
+ DB_ENV *dbenv;
+ DB_MPOOL *dbmp;
+ DB_MPOOL_HASH *hp;
+ MPOOL *c_mp, *mp;
+ REGINFO *infop;
+ roff_t mf_offset;
+ u_int32_t bucket, nbuckets, new_bucket, new_nbuckets, region;
+ u_int32_t *regids;
+ int ret;
+
+ dbenv = dbmfp->dbenv;
+ dbmp = dbenv->mp_handle;
+ mf_offset = R_OFFSET(dbmp->reginfo, dbmfp->mfp);
+ mp = dbmp->reginfo[0].primary;
+ ret = 0;
+
+ for (;;) {
+ nbuckets = mp->nbuckets;
+ MP_BUCKET(mf_offset, pgno, nbuckets, bucket);
+
+ /*
+ * Once we work out which region we are looking in, we have to
+ * check that we have that region mapped, and that the version
+ * we have matches the ID in the main mpool region. Otherwise
+ * we have to go and map in any regions that don't match and
+ * retry.
+ */
+ region = NREGION(mp, bucket);
+ regids = R_ADDR(dbmp->reginfo, mp->regids);
+
+ for (;;) {
+ infop = *infopp = &dbmp->reginfo[region];
+ c_mp = infop->primary;
+
+ /* If we have the correct region mapped, we're done. */
+ if (c_mp != NULL && regids[region] == infop->id)
+ break;
+ if ((ret = __memp_map_regions(dbmp)) != 0)
+ return (ret);
+ }
+
+ /* If our caller wants the hash bucket, lock it here. */
+ if (hpp != NULL) {
+ hp = R_ADDR(infop, c_mp->htab);
+ hp = &hp[bucket - region * mp->htab_buckets];
+
+ MUTEX_LOCK(dbenv, hp->mtx_hash);
+
+ /*
+ * Check that we still have the correct region mapped.
+ */
+ if (regids[region] != infop->id) {
+ MUTEX_UNLOCK(dbenv, hp->mtx_hash);
+ continue;
+ }
+
+ /*
+ * Now that the bucket is locked, we need to check that
+ * the cache has not been resized while we waited.
+ */
+ new_nbuckets = mp->nbuckets;
+ if (nbuckets != new_nbuckets) {
+ MP_BUCKET(mf_offset, pgno, new_nbuckets,
+ new_bucket);
+
+ if (new_bucket != bucket) {
+ MUTEX_UNLOCK(dbenv, hp->mtx_hash);
+ continue;
+ }
+ }
+
+ *hpp = hp;
+ }
+
+ break;
+ }
+
+ return (ret);
+}
+
+static int
+__memp_merge_buckets(dbmp, new_nbuckets, old_bucket, new_bucket)
+ DB_MPOOL *dbmp;
+ u_int32_t new_nbuckets, old_bucket, new_bucket;
+{
+ BH *alloc_bhp, *bhp, *current_bhp, *new_bhp, *next_bhp;
+ DB_ENV *dbenv;
+ DB_MPOOL_HASH *new_hp, *old_hp;
+ MPOOL *mp, *new_mp, *old_mp;
+ MPOOLFILE *mfp;
+ REGINFO *new_infop, *old_infop;
+ u_int32_t bucket, high_mask, new_region, old_region;
+ int ret;
+
+ dbenv = dbmp->dbenv;
+ mp = dbmp->reginfo[0].primary;
+ new_bhp = NULL;
+ ret = 0;
+
+ MP_MASK(new_nbuckets, high_mask);
+
+ old_region = NREGION(mp, old_bucket);
+ old_infop = &dbmp->reginfo[old_region];
+ old_mp = old_infop->primary;
+ old_hp = R_ADDR(old_infop, old_mp->htab);
+ old_hp = &old_hp[old_bucket - old_region * mp->htab_buckets];
+
+ new_region = NREGION(mp, new_bucket);
+ new_infop = &dbmp->reginfo[new_region];
+ new_mp = new_infop->primary;
+ new_hp = R_ADDR(new_infop, new_mp->htab);
+ new_hp = &new_hp[new_bucket - new_region * mp->htab_buckets];
+
+ /*
+ * Before merging, we need to check that there are no old buffers left
+ * in the target hash bucket after a previous split.
+ */
+free_old:
+ MUTEX_LOCK(dbenv, new_hp->mtx_hash);
+ SH_TAILQ_FOREACH(bhp, &new_hp->hash_bucket, hq, __bh) {
+ MP_BUCKET(bhp->mf_offset, bhp->pgno, mp->nbuckets, bucket);
+
+ if (bucket != new_bucket) {
+ /*
+ * There is no way that an old buffer can be locked
+ * after a split, since everyone will look for it in
+ * the new hash bucket.
+ */
+ DB_ASSERT(dbenv, !F_ISSET(bhp, BH_LOCKED | BH_DIRTY) &&
+ bhp->ref == 0);
+ if ((ret = __memp_bhfree(dbmp,
+ new_infop, new_hp, bhp, BH_FREE_FREEMEM)) != 0) {
+ MUTEX_UNLOCK(dbenv, new_hp->mtx_hash);
+ return (ret);
+ }
+
+ /*
+ * The free has modified the list of buffers and
+ * dropped the mutex. We need to start again.
+ */
+ goto free_old;
+ }
+ }
+ MUTEX_UNLOCK(dbenv, new_hp->mtx_hash);
+
+ /*
+ * Before we begin, make sure that all of the buffers we care about are
+ * not in use and not frozen. We do this because we can't drop the old
+ * hash bucket mutex once we start moving buffers around.
+ */
+retry: MUTEX_LOCK(dbenv, old_hp->mtx_hash);
+ SH_TAILQ_FOREACH(bhp, &old_hp->hash_bucket, hq, __bh) {
+ MP_HASH_BUCKET(MP_HASH(bhp->mf_offset, bhp->pgno),
+ new_nbuckets, high_mask, bucket);
+
+ if (bucket == new_bucket &&
+ (F_ISSET(bhp, BH_LOCKED) || bhp->ref != 0)) {
+ MUTEX_UNLOCK(dbenv, old_hp->mtx_hash);
+ __os_yield(dbenv);
+ goto retry;
+ } else if (bucket == new_bucket && F_ISSET(bhp, BH_FROZEN)) {
+ if (BH_OBSOLETE(bhp, old_hp->old_reader))
+ alloc_bhp = NULL;
+ else {
+ ++bhp->ref;
+ mfp = R_ADDR(dbmp->reginfo, bhp->mf_offset);
+ MUTEX_UNLOCK(dbenv, old_hp->mtx_hash);
+ if ((ret = __memp_alloc(dbmp,
+ old_infop, mfp, 0, NULL, &alloc_bhp)) != 0)
+ return (ret);
+ MUTEX_LOCK(dbenv, old_hp->mtx_hash);
+ }
+ if ((ret = __memp_bh_thaw(dbmp,
+ old_infop, old_hp, bhp, alloc_bhp)) != 0) {
+ MUTEX_UNLOCK(dbenv, old_hp->mtx_hash);
+ return (ret);
+ }
+
+ /*
+ * We've dropped the mutex in order to thaw, so we need
+ * to go back to the beginning and check that all of
+ * the buffers we care about are still unlocked and
+ * unreferenced.
+ */
+ MUTEX_UNLOCK(dbenv, old_hp->mtx_hash);
+ goto retry;
+ }
+ }
+
+ /*
+ * We now know that all of the buffers we care about are unlocked and
+ * unreferenced. Go ahead and copy them.
+ */
+ SH_TAILQ_FOREACH(bhp, &old_hp->hash_bucket, hq, __bh) {
+ MP_HASH_BUCKET(MP_HASH(bhp->mf_offset, bhp->pgno),
+ new_nbuckets, high_mask, bucket);
+ mfp = R_ADDR(dbmp->reginfo, bhp->mf_offset);
+
+ /*
+ * We ignore buffers that don't hash to the new bucket. We
+ * could also ignore clean buffers which are not part of a
+ * multiversion chain as long as they have a backing file.
+ */
+ if (bucket != new_bucket || (!F_ISSET(bhp, BH_DIRTY) &&
+ SH_CHAIN_SINGLETON(bhp, vc) && !mfp->no_backing_file))
+ continue;
+
+ for (current_bhp = bhp, next_bhp = NULL;
+ current_bhp != NULL;
+ current_bhp = SH_CHAIN_PREV(current_bhp, vc, __bh),
+ next_bhp = alloc_bhp) {
+ if ((ret = __memp_alloc(dbmp,
+ new_infop, mfp, 0, NULL, &alloc_bhp)) != 0)
+ break;
+
+ alloc_bhp->ref = current_bhp->ref;
+ alloc_bhp->ref_sync = current_bhp->ref_sync;
+ alloc_bhp->priority = current_bhp->priority;
+ alloc_bhp->pgno = current_bhp->pgno;
+ alloc_bhp->mf_offset = current_bhp->mf_offset;
+ alloc_bhp->flags = current_bhp->flags;
+ alloc_bhp->td_off = current_bhp->td_off;
+
+ /*
+ * We've duplicated the buffer, so now we need to
+ * update reference counts, including the counts in the
+ * per-MPOOLFILE and the transaction detail (for MVCC
+ * buffers).
+ */
+ MUTEX_LOCK(dbenv, mfp->mutex);
+ ++mfp->block_cnt;
+ MUTEX_UNLOCK(dbenv, mfp->mutex);
+
+ if (alloc_bhp->td_off != INVALID_ROFF &&
+ (ret = __txn_add_buffer(dbenv,
+ R_ADDR(&dbenv->tx_handle->reginfo,
+ alloc_bhp->td_off))) != 0)
+ break;
+
+ memcpy(alloc_bhp->buf, bhp->buf, mfp->stat.st_pagesize);
+
+ /*
+ * We build up the MVCC chain first, then insert the
+ * head (stored in new_bhp) once.
+ */
+ if (next_bhp == NULL) {
+ SH_CHAIN_INIT(alloc_bhp, vc);
+ new_bhp = alloc_bhp;
+ } else
+ SH_CHAIN_INSERT_BEFORE(
+ next_bhp, alloc_bhp, vc, __bh);
+ }
+
+ MUTEX_LOCK(dbenv, new_hp->mtx_hash);
+ SH_TAILQ_INSERT_TAIL(&new_hp->hash_bucket, new_bhp, hq);
+ if (F_ISSET(new_bhp, BH_DIRTY))
+ ++new_hp->hash_page_dirty;
+
+ /*
+ * We're doing an insertion sort, so it is O(N**2), but since
+ * buckets should be small, that should not matter. When
+ * splitting a bucket, we traverse in priority order and append
+ * to the new bucket, and __memp_bucket_reorder is O(1) in that
+ * case.
+ */
+ __memp_bucket_reorder(dbenv, new_hp, new_bhp);
+ MUTEX_UNLOCK(dbenv, new_hp->mtx_hash);
+
+ if (F_ISSET(bhp, BH_DIRTY)) {
+ F_CLR(bhp, BH_DIRTY);
+ --old_hp->hash_page_dirty;
+ }
+ }
+
+ if (ret == 0)
+ mp->nbuckets = new_nbuckets;
+ MUTEX_UNLOCK(dbenv, old_hp->mtx_hash);
+
+ return (ret);
+}
+
+static int
+__memp_add_bucket(dbmp)
+ DB_MPOOL *dbmp;
+{
+ DB_ENV *dbenv;
+ MPOOL *mp;
+ u_int32_t high_mask, new_bucket, old_bucket;
+
+ dbenv = dbmp->dbenv;
+ mp = dbmp->reginfo[0].primary;
+
+ new_bucket = mp->nbuckets;
+ /* We should always be adding buckets to the last region. */
+ DB_ASSERT(dbenv, NREGION(mp, new_bucket) == mp->nreg - 1);
+ MP_MASK(mp->nbuckets, high_mask);
+ old_bucket = new_bucket & (high_mask >> 1);
+
+ /*
+ * With fixed-sized regions, the new region is always smaller than the
+ * existing total cache size, so buffers always need to be copied. If
+ * we implement variable region sizes, it's possible that we will be
+ * splitting a hash bucket in the new region. Catch that here.
+ */
+ DB_ASSERT(dbenv, NREGION(mp, old_bucket) != NREGION(mp, new_bucket));
+
+ return (__memp_merge_buckets(dbmp, mp->nbuckets + 1,
+ old_bucket, new_bucket));
+}
+
+static int
+__memp_add_region(dbmp)
+ DB_MPOOL *dbmp;
+{
+ DB_ENV *dbenv;
+ MPOOL *mp;
+ REGINFO *infop;
+ int ret;
+ roff_t reg_size;
+ u_int i;
+ u_int32_t *regids;
+
+ dbenv = dbmp->dbenv;
+ mp = dbmp->reginfo[0].primary;
+ /* All cache regions are the same size. */
+ reg_size = dbmp->reginfo[0].rp->size;
+ ret = 0;
+
+ infop = &dbmp->reginfo[mp->nreg];
+ infop->dbenv = dbenv;
+ infop->type = REGION_TYPE_MPOOL;
+ infop->id = INVALID_REGION_ID;
+ infop->flags = REGION_CREATE_OK;
+ if ((ret = __env_region_attach(dbenv, infop, reg_size)) != 0)
+ return (ret);
+ if ((ret = __memp_init(dbenv,
+ dbmp, mp->nreg, mp->htab_buckets, mp->max_nreg)) != 0)
+ return (ret);
+ regids = R_ADDR(dbmp->reginfo, mp->regids);
+ regids[mp->nreg++] = infop->id;
+
+ for (i = 0; i < mp->htab_buckets; i++)
+ if ((ret = __memp_add_bucket(dbmp)) != 0)
+ break;
+
+ return (ret);
+}
+
+static int
+__memp_remove_bucket(dbmp)
+ DB_MPOOL *dbmp;
+{
+ DB_ENV *dbenv;
+ MPOOL *mp;
+ u_int32_t high_mask, new_bucket, old_bucket;
+
+ dbenv = dbmp->dbenv;
+ mp = dbmp->reginfo[0].primary;
+
+ old_bucket = mp->nbuckets - 1;
+
+ /* We should always be removing buckets from the last region. */
+ DB_ASSERT(dbenv, NREGION(mp, old_bucket) == mp->nreg - 1);
+ MP_MASK(mp->nbuckets - 1, high_mask);
+ new_bucket = old_bucket & (high_mask >> 1);
+
+ return (__memp_merge_buckets(dbmp, mp->nbuckets - 1,
+ old_bucket, new_bucket));
+}
+
+static int
+__memp_remove_region(dbmp)
+ DB_MPOOL *dbmp;
+{
+ DB_ENV *dbenv;
+ MPOOL *mp;
+ REGINFO *infop;
+ int ret;
+ u_int i;
+
+ dbenv = dbmp->dbenv;
+ mp = dbmp->reginfo[0].primary;
+ ret = 0;
+
+ if (mp->nreg == 1) {
+ __db_errx(dbenv, "cannot remove the last cache");
+ return (EINVAL);
+ }
+
+ for (i = 0; i < mp->htab_buckets; i++)
+ if ((ret = __memp_remove_bucket(dbmp)) != 0)
+ return (ret);
+
+ /* Detach from the region then destroy it. */
+ infop = &dbmp->reginfo[--mp->nreg];
+ return (__env_region_detach(dbenv, infop, 1));
+}
+
+static int
+__memp_map_regions(dbmp)
+ DB_MPOOL *dbmp;
+{
+ DB_ENV *dbenv;
+ MPOOL *mp;
+ int ret;
+ u_int i;
+ u_int32_t *regids;
+
+ dbenv = dbmp->dbenv;
+ mp = dbmp->reginfo[0].primary;
+ regids = R_ADDR(dbmp->reginfo, mp->regids);
+ ret = 0;
+
+ for (i = 1; i < mp->nreg; ++i) {
+ if (dbmp->reginfo[i].primary != NULL &&
+ dbmp->reginfo[i].id == regids[i])
+ continue;
+
+ if (dbmp->reginfo[i].primary != NULL)
+ ret = __env_region_detach(dbenv, &dbmp->reginfo[i], 0);
+
+ dbmp->reginfo[i].dbenv = dbenv;
+ dbmp->reginfo[i].type = REGION_TYPE_MPOOL;
+ dbmp->reginfo[i].id = regids[i];
+ dbmp->reginfo[i].flags = REGION_JOIN_OK;
+ if ((ret =
+ __env_region_attach(dbenv, &dbmp->reginfo[i], 0)) != 0)
+ return (ret);
+ dbmp->reginfo[i].primary = R_ADDR(&dbmp->reginfo[i],
+ dbmp->reginfo[i].rp->primary);
+ }
+
+ for (; i < mp->max_nreg; i++)
+ if (dbmp->reginfo[i].primary != NULL &&
+ (ret = __env_region_detach(dbenv,
+ &dbmp->reginfo[i], 0)) != 0)
+ break;
+
+ return (ret);
+}
+
+/*
+ * PUBLIC: int __memp_resize __P((DB_MPOOL *, u_int32_t, u_int32_t));
+ */
+int
+__memp_resize(dbmp, gbytes, bytes)
+ DB_MPOOL *dbmp;
+ u_int32_t gbytes, bytes;
+{
+ DB_ENV *dbenv;
+ MPOOL *mp;
+ int ret;
+ u_int32_t ncache;
+ roff_t reg_size, total_size;
+
+ dbenv = dbmp->dbenv;
+ mp = dbmp->reginfo[0].primary;
+ reg_size = dbmp->reginfo[0].rp->size;
+ total_size = (roff_t)gbytes * GIGABYTE + bytes;
+ ncache = (u_int32_t)((total_size + reg_size / 2) / reg_size);
+
+ if (ncache < 1)
+ ncache = 1;
+ else if (ncache > mp->max_nreg) {
+ __db_errx(dbenv,
+ "cannot resize to %lu cache regions: maximum is %lu",
+ (u_long)ncache, (u_long)mp->max_nreg);
+ return (EINVAL);
+ }
+
+ ret = 0;
+ MUTEX_LOCK(dbenv, mp->mtx_resize);
+ while (mp->nreg != ncache)
+ if ((ret = (mp->nreg < ncache ?
+ __memp_add_region(dbmp) :
+ __memp_remove_region(dbmp))) != 0)
+ break;
+ MUTEX_UNLOCK(dbenv, mp->mtx_resize);
+
+ return (ret);
+}
+
+/*
+ * PUBLIC: int __memp_get_cache_max __P((DB_ENV *, u_int32_t *, u_int32_t *));
+ */
+int
+__memp_get_cache_max(dbenv, max_gbytesp, max_bytesp)
+ DB_ENV *dbenv;
+ u_int32_t *max_gbytesp, *max_bytesp;
+{
+ DB_MPOOL *dbmp;
+ MPOOL *mp;
+ roff_t reg_size, max_size;
+
+ ENV_NOT_CONFIGURED(dbenv,
+ dbenv->mp_handle, "DB_ENV->get_mp_max_ncache", DB_INIT_MPOOL);
+
+ if (MPOOL_ON(dbenv)) {
+ dbmp = dbenv->mp_handle;
+ mp = dbmp->reginfo[0].primary;
+ reg_size = dbmp->reginfo[0].rp->size;
+ max_size = mp->max_nreg * reg_size;
+ *max_gbytesp = (u_int32_t)(max_size / GIGABYTE);
+ *max_bytesp = (u_int32_t)(max_size % GIGABYTE);
+ } else {
+ *max_gbytesp = dbenv->mp_max_gbytes;
+ *max_bytesp = dbenv->mp_max_bytes;
+ }
+
+ return (0);
+}
+
+/*
+ * PUBLIC: int __memp_set_cache_max __P((DB_ENV *, u_int32_t, u_int32_t));
+ */
+int
+__memp_set_cache_max(dbenv, max_gbytes, max_bytes)
+ DB_ENV *dbenv;
+ u_int32_t max_gbytes, max_bytes;
+{
+ ENV_ILLEGAL_AFTER_OPEN(dbenv, "DB_ENV->set_cache_max");
+ dbenv->mp_max_gbytes = max_gbytes;
+ dbenv->mp_max_bytes = max_bytes;
+
+ return (0);
+}
diff --git a/db/mp/mp_stat.c b/db/mp/mp_stat.c
index b4d4544b5..0e7b6c237 100644
--- a/db/mp/mp_stat.c
+++ b/db/mp/mp_stat.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: mp_stat.c,v 12.28 2006/09/11 14:53:42 bostic Exp $
+ * $Id: mp_stat.c,v 12.36 2007/06/22 17:41:29 bostic Exp $
*/
#include "db_config.h"
@@ -104,10 +103,10 @@ __memp_stat(dbenv, gspp, fspp, flags)
* a per-cache basis. Note that configuration information
* may be modified at any time, and so we have to lock.
*/
- c_mp = dbmp->reginfo[0].primary;
- sp->st_gbytes = c_mp->stat.st_gbytes;
- sp->st_bytes = c_mp->stat.st_bytes;
- sp->st_ncache = dbmp->nreg;
+ sp->st_gbytes = mp->stat.st_gbytes;
+ sp->st_bytes = mp->stat.st_bytes;
+ sp->st_ncache = mp->nreg;
+ sp->st_max_ncache = mp->max_nreg;
sp->st_regsize = dbmp->reginfo[0].rp->size;
MPOOL_SYSTEM_LOCK(dbenv);
@@ -165,7 +164,8 @@ __memp_stat(dbenv, gspp, fspp, flags)
c_mp->stat.st_alloc_max_pages;
if (LF_ISSET(DB_STAT_CLEAR)) {
- __mutex_clear(dbenv, c_mp->mtx_region);
+ if (!LF_ISSET(DB_STAT_SUBSYSTEM))
+ __mutex_clear(dbenv, c_mp->mtx_region);
MPOOL_SYSTEM_LOCK(dbenv);
st_bytes = c_mp->stat.st_bytes;
@@ -388,9 +388,10 @@ __memp_stat_print(dbenv, flags)
int ret;
orig_flags = flags;
- LF_CLR(DB_STAT_CLEAR);
+ LF_CLR(DB_STAT_CLEAR | DB_STAT_SUBSYSTEM);
if (flags == 0 || LF_ISSET(DB_STAT_ALL)) {
- ret = __memp_print_stats(dbenv, orig_flags);
+ ret = __memp_print_stats(dbenv,
+ LF_ISSET(DB_STAT_ALL) ? flags : orig_flags);
if (flags == 0 || ret != 0)
return (ret);
}
@@ -423,6 +424,7 @@ __memp_print_stats(dbenv, flags)
__db_dlbytes(dbenv, "Total cache size",
(u_long)gsp->st_gbytes, (u_long)0, (u_long)gsp->st_bytes);
__db_dl(dbenv, "Number of caches", (u_long)gsp->st_ncache);
+ __db_dl(dbenv, "Maximum number of caches", (u_long)gsp->st_max_ncache);
__db_dlbytes(dbenv, "Pool individual cache size",
(u_long)0, (u_long)0, (u_long)gsp->st_regsize);
__db_dlbytes(dbenv, "Maximum memory-mapped file size",
@@ -551,7 +553,7 @@ __memp_print_all(dbenv, flags)
MPOOL_SYSTEM_LOCK(dbenv);
- __db_print_reginfo(dbenv, dbmp->reginfo, "Mpool");
+ __db_print_reginfo(dbenv, dbmp->reginfo, "Mpool", flags);
__db_msg(dbenv, "%s", DB_GLOBAL(db_line));
__db_msg(dbenv, "MPOOL structure:");
@@ -567,7 +569,7 @@ __memp_print_all(dbenv, flags)
__db_msg(dbenv, "DB_MPOOL handle information:");
__mutex_print_debug_single(
dbenv, "DB_MPOOL handle mutex", dbmp->mutex, flags);
- STAT_ULONG("Underlying cache regions", dbmp->nreg);
+ STAT_ULONG("Underlying cache regions", mp->nreg);
__db_msg(dbenv, "%s", DB_GLOBAL(db_line));
__db_msg(dbenv, "DB_MPOOLFILE structures:");
@@ -709,9 +711,11 @@ __memp_print_hash(dbenv, dbmp, reginfo, fmap, flags)
bucket = 0; bucket < c_mp->htab_buckets; ++hp, ++bucket) {
MUTEX_LOCK(dbenv, hp->mtx_hash);
if ((bhp = SH_TAILQ_FIRST(&hp->hash_bucket, __bh)) != NULL) {
- __db_msgadd(dbenv, &mb, "bucket %lu: %lu, %lu ",
+ __db_msgadd(dbenv, &mb,
+ "bucket %lu: %lu, %lu (%lu dirty)",
(u_long)bucket, (u_long)hp->hash_io_wait,
- (u_long)hp->hash_priority);
+ (u_long)hp->hash_priority,
+ (u_long)hp->hash_page_dirty);
if (hp->hash_frozen != 0)
__db_msgadd(dbenv, &mb, "(MVCC %lu/%lu/%lu) ",
(u_long)hp->hash_frozen,
@@ -822,7 +826,8 @@ __memp_stat_wait(dbenv, reginfo, mp, mstat, flags)
mstat->st_hash_max_wait = tmp_wait;
mstat->st_hash_max_nowait = tmp_nowait;
}
- if (LF_ISSET(DB_STAT_CLEAR))
+ if (LF_ISSET(DB_STAT_CLEAR |
+ DB_STAT_SUBSYSTEM) == DB_STAT_CLEAR)
__mutex_clear(dbenv, hp->mtx_hash);
mstat->st_io_wait += hp->hash_io_wait;
diff --git a/db/mp/mp_sync.c b/db/mp/mp_sync.c
index 898ae5b6d..5db83fc7b 100644
--- a/db/mp/mp_sync.c
+++ b/db/mp/mp_sync.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: mp_sync.c,v 12.24 2006/08/24 14:46:15 bostic Exp $
+ * $Id: mp_sync.c,v 12.52 2007/06/01 18:32:44 bostic Exp $
*/
#include "db_config.h"
@@ -12,6 +11,8 @@
#include "db_int.h"
#include "dbinc/log.h"
#include "dbinc/mp.h"
+#include "dbinc/db_page.h"
+#include "dbinc/hash.h"
typedef struct {
DB_MPOOL_HASH *track_hp; /* Hash bucket. */
@@ -21,8 +22,8 @@ typedef struct {
} BH_TRACK;
static int __bhcmp __P((const void *, const void *));
-static int __memp_close_flush_files __P((DB_ENV *, DB_MPOOL *, int));
-static int __memp_sync_files __P((DB_ENV *, DB_MPOOL *));
+static int __memp_close_flush_files __P((DB_ENV *, int));
+static int __memp_sync_files __P((DB_ENV *));
static int __memp_sync_file __P((DB_ENV *,
MPOOLFILE *, void *, u_int32_t *, u_int32_t));
@@ -93,7 +94,7 @@ __memp_sync_pp(dbenv, lsnp)
dbenv->lg_handle, "memp_sync", DB_INIT_LOG);
ENV_ENTER(dbenv, ip);
- REPLICATION_WRAP(dbenv, (__memp_sync(dbenv, lsnp)), ret);
+ REPLICATION_WRAP(dbenv, (__memp_sync(dbenv, DB_SYNC_CACHE, lsnp)), ret);
ENV_LEAVE(dbenv, ip);
return (ret);
}
@@ -102,16 +103,17 @@ __memp_sync_pp(dbenv, lsnp)
* __memp_sync --
* DB_ENV->memp_sync.
*
- * PUBLIC: int __memp_sync __P((DB_ENV *, DB_LSN *));
+ * PUBLIC: int __memp_sync __P((DB_ENV *, u_int32_t, DB_LSN *));
*/
int
-__memp_sync(dbenv, lsnp)
+__memp_sync(dbenv, flags, lsnp)
DB_ENV *dbenv;
+ u_int32_t flags;
DB_LSN *lsnp;
{
DB_MPOOL *dbmp;
MPOOL *mp;
- int ret;
+ int interrupted, ret;
dbmp = dbenv->mp_handle;
mp = dbmp->reginfo[0].primary;
@@ -128,10 +130,11 @@ __memp_sync(dbenv, lsnp)
MPOOL_SYSTEM_UNLOCK(dbenv);
}
- if ((ret = __memp_sync_int(dbenv, NULL, 0, DB_SYNC_CACHE, NULL)) != 0)
+ if ((ret =
+ __memp_sync_int(dbenv, NULL, 0, flags, NULL, &interrupted)) != 0)
return (ret);
- if (lsnp != NULL) {
+ if (!interrupted && lsnp != NULL) {
MPOOL_SYSTEM_LOCK(dbenv);
if (LOG_COMPARE(lsnp, &mp->lsn) > 0)
mp->lsn = *lsnp;
@@ -195,7 +198,8 @@ __memp_fsync(dbmfp)
if (mfp->file_written == 0)
return (0);
- return (__memp_sync_int(dbmfp->dbenv, dbmfp, 0, DB_SYNC_FILE, NULL));
+ return (__memp_sync_int(
+ dbmfp->dbenv, dbmfp, 0, DB_SYNC_FILE, NULL, NULL));
}
/*
@@ -209,6 +213,8 @@ __mp_xxx_fh(dbmfp, fhp)
DB_MPOOLFILE *dbmfp;
DB_FH **fhp;
{
+ int ret;
+
/*
* This is a truly spectacular layering violation, intended ONLY to
* support compatibility for the DB 1.85 DB->fd call.
@@ -226,7 +232,10 @@ __mp_xxx_fh(dbmfp, fhp)
if ((*fhp = dbmfp->fhp) != NULL)
return (0);
- return (__memp_sync_int(dbmfp->dbenv, dbmfp, 0, DB_SYNC_FILE, NULL));
+ if ((ret = __memp_sync_int(
+ dbmfp->dbenv, dbmfp, 0, DB_SYNC_FILE, NULL, NULL)) == 0)
+ *fhp = dbmfp->fhp;
+ return (ret);
}
/*
@@ -234,14 +243,14 @@ __mp_xxx_fh(dbmfp, fhp)
* Mpool sync internal function.
*
* PUBLIC: int __memp_sync_int __P((DB_ENV *,
- * PUBLIC: DB_MPOOLFILE *, u_int32_t, db_sync_op, u_int32_t *));
+ * PUBLIC: DB_MPOOLFILE *, u_int32_t, u_int32_t, u_int32_t *, int *));
*/
int
-__memp_sync_int(dbenv, dbmfp, trickle_max, op, wrotep)
+__memp_sync_int(dbenv, dbmfp, trickle_max, flags, wrote_totalp, interruptedp)
DB_ENV *dbenv;
DB_MPOOLFILE *dbmfp;
- u_int32_t trickle_max, *wrotep;
- db_sync_op op;
+ u_int32_t trickle_max, flags, *wrote_totalp;
+ int *interruptedp;
{
BH *bhp;
BH_TRACK *bharray;
@@ -251,20 +260,32 @@ __memp_sync_int(dbenv, dbmfp, trickle_max, op, wrotep)
MPOOLFILE *mfp;
db_mutex_t mutex;
roff_t last_mf_offset;
- u_int32_t ar_cnt, ar_max, i, n_cache, remaining, wrote;
- int filecnt, hb_lock, maxopenfd, maxwrite, maxwrite_sleep;
- int pass, ret, t_ret, wait_cnt, write_cnt;
+ u_int32_t ar_cnt, ar_max, dirty, i, n_cache, remaining, wrote_total;
+ int filecnt, maxopenfd, pass, required_write, ret, t_ret;
+ int wait_cnt, wrote_cnt;
dbmp = dbenv->mp_handle;
mp = dbmp->reginfo[0].primary;
last_mf_offset = INVALID_ROFF;
- filecnt = pass = wrote = 0;
+ filecnt = pass = wrote_total = 0;
+
+ if (wrote_totalp != NULL)
+ *wrote_totalp = 0;
+ if (interruptedp != NULL)
+ *interruptedp = 0;
+
+ /*
+ * If we're flushing the cache, it's a checkpoint or we're flushing a
+ * specific file, we really have to write the blocks and we have to
+ * confirm they made it to disk. Otherwise, we can skip a block if
+ * it's hard to get.
+ */
+ required_write = LF_ISSET(DB_SYNC_CACHE |
+ DB_SYNC_CHECKPOINT | DB_SYNC_FILE | DB_SYNC_QUEUE_EXTENT);
/* Get shared configuration information. */
MPOOL_SYSTEM_LOCK(dbenv);
maxopenfd = mp->mp_maxopenfd;
- maxwrite = mp->mp_maxwrite;
- maxwrite_sleep = mp->mp_maxwrite_sleep;
MPOOL_SYSTEM_UNLOCK(dbenv);
/* Assume one dirty page per bucket. */
@@ -284,43 +305,60 @@ __memp_sync_int(dbenv, dbmfp, trickle_max, op, wrotep)
hp = R_ADDR(&dbmp->reginfo[n_cache], c_mp->htab);
for (i = 0; i < c_mp->htab_buckets; i++, hp++) {
/*
- * We can check for empty buckets before locking as we
- * only care if the pointer is zero or non-zero. We
- * can ignore empty buckets because we only need write
- * buffers that were dirty before we started.
+ * We can check for empty buckets before locking as
+ * we only care if the pointer is zero or non-zero.
+ * We can ignore empty or clean buckets because we
+ * only need write buffers that were dirty before
+ * we started.
*/
+#ifdef DIAGNOSTIC
if (SH_TAILQ_FIRST(&hp->hash_bucket, __bh) == NULL)
+#else
+ if (hp->hash_page_dirty == 0)
+#endif
continue;
+ dirty = 0;
MUTEX_LOCK(dbenv, hp->mtx_hash);
SH_TAILQ_FOREACH(bhp, &hp->hash_bucket, hq, __bh) {
/* Always ignore clean pages. */
if (!F_ISSET(bhp, BH_DIRTY))
continue;
+ dirty++;
mfp = R_ADDR(dbmp->reginfo, bhp->mf_offset);
/*
- * Ignore in-memory files, even if they are
- * temp files to whom a backing file has been
- * allocated.
+ * Ignore in-memory files, unless the file is
+ * specifically being flushed.
*/
- if (mfp->no_backing_file ||
+ if (mfp->no_backing_file)
+ continue;
+ if (!LF_ISSET(DB_SYNC_FILE) &&
F_ISSET(mfp, MP_TEMP))
continue;
/*
- * If we're flushing a specific file, see if
- * this page is from that file.
+ * Ignore files that aren't involved in DB's
+ * transactional operations during checkpoints.
*/
- if (dbmfp != NULL && mfp != dbmfp->mfp)
+ if (LF_ISSET(DB_SYNC_CHECKPOINT) &&
+ mfp->lsn_off == DB_LSN_OFF_NOTSET)
continue;
/*
- * Ignore files that aren't involved in DB's
- * transactional operations during checkpoints.
+ * Ignore files that aren't Queue extent files
+ * if we're flushing a Queue file with extents.
*/
- if (dbmfp == NULL && mfp->lsn_off == -1)
+ if (LF_ISSET(DB_SYNC_QUEUE_EXTENT) &&
+ !F_ISSET(mfp, MP_EXTENT))
+ continue;
+
+ /*
+ * If we're flushing a specific file, see if
+ * this page is from that file.
+ */
+ if (dbmfp != NULL && mfp != dbmfp->mfp)
continue;
/* Track the buffer, we want it. */
@@ -343,10 +381,25 @@ __memp_sync_int(dbenv, dbmfp, trickle_max, op, wrotep)
ar_max *= 2;
}
}
+ DB_ASSERT(dbenv, dirty == hp->hash_page_dirty);
+ if (dirty != hp->hash_page_dirty) {
+ __db_errx(dbenv,
+ "memp_sync: correcting dirty count %lu %lu",
+ (u_long)hp->hash_page_dirty, (u_long)dirty);
+ hp->hash_page_dirty = dirty;
+ }
MUTEX_UNLOCK(dbenv, hp->mtx_hash);
if (ret != 0)
goto err;
+
+ /* Check if the call has been interrupted. */
+ if (LF_ISSET(DB_SYNC_INTERRUPT_OK) && FLD_ISSET(
+ mp->config_flags, DB_MEMP_SYNC_INTERRUPT)) {
+ if (interruptedp != NULL)
+ *interruptedp = 1;
+ goto err;
+ }
}
}
@@ -366,7 +419,7 @@ __memp_sync_int(dbenv, dbmfp, trickle_max, op, wrotep)
* If we're trickling buffers, only write enough to reach the correct
* percentage.
*/
- if (op == DB_SYNC_TRICKLE && ar_cnt > trickle_max)
+ if (LF_ISSET(DB_SYNC_TRICKLE) && ar_cnt > trickle_max)
ar_cnt = trickle_max;
/*
@@ -385,7 +438,7 @@ __memp_sync_int(dbenv, dbmfp, trickle_max, op, wrotep)
* out its hash bucket pointer so we don't process a slot more than
* once.
*/
- for (i = pass = write_cnt = 0, remaining = ar_cnt; remaining > 0; ++i) {
+ for (i = pass = wrote_cnt = 0, remaining = ar_cnt; remaining > 0; ++i) {
if (i >= ar_cnt) {
i = 0;
++pass;
@@ -429,44 +482,40 @@ __memp_sync_int(dbenv, dbmfp, trickle_max, op, wrotep)
*/
if (F_ISSET(bhp, BH_LOCKED) || (bhp->ref != 0 && pass < 2)) {
MUTEX_UNLOCK(dbenv, mutex);
- if (op != DB_SYNC_CACHE && op != DB_SYNC_FILE) {
+ if (!required_write) {
--remaining;
bharray[i].track_hp = NULL;
}
continue;
}
- /*
- * The buffer is dirty and may also be pinned.
- *
- * Set the sync wait-for count, used to count down outstanding
- * references to this buffer as they are returned to the cache.
- */
- bhp->ref_sync = bhp->ref;
-
/* Pin the buffer into memory and lock it. */
++bhp->ref;
F_SET(bhp, BH_LOCKED);
/*
- * Unlock the hash bucket and wait for the wait-for count to
- * go to 0. No new thread can acquire the buffer because we
- * have it locked.
+ * If the buffer is referenced by another thread, set the sync
+ * wait-for count (used to count down outstanding references to
+ * this buffer as they are returned to the cache), then unlock
+ * the hash bucket and wait for the count to go to 0. No other
+ * thread can acquire the buffer because we have it locked.
*
* If a thread attempts to re-pin a page, the wait-for count
- * will never go to 0 (the thread spins on our buffer lock,
+ * will never go to 0 (that thread spins on our buffer lock,
* while we spin on the thread's ref count). Give up if we
- * don't get the buffer in 3 seconds, we can try again later.
+ * don't get the buffer in 3 seconds, we'll try again later.
*
* If, when the wait-for count goes to 0, the buffer is found
* to be dirty, write it.
*/
- MUTEX_UNLOCK(dbenv, mutex);
- for (wait_cnt = 1;
- bhp->ref_sync != 0 && wait_cnt < 4; ++wait_cnt)
- __os_sleep(dbenv, 1, 0);
- MUTEX_LOCK(dbenv, mutex);
- hb_lock = 1;
+ bhp->ref_sync = bhp->ref - 1;
+ if (bhp->ref_sync != 0) {
+ MUTEX_UNLOCK(dbenv, mutex);
+ for (wait_cnt = 1;
+ bhp->ref_sync != 0 && wait_cnt < 4; ++wait_cnt)
+ __os_sleep(dbenv, 1, 0);
+ MUTEX_LOCK(dbenv, mutex);
+ }
/*
* If we've switched files, check to see if we're configured
@@ -476,7 +525,7 @@ __memp_sync_int(dbenv, dbmfp, trickle_max, op, wrotep)
if (++filecnt >= maxopenfd) {
filecnt = 0;
if ((t_ret = __memp_close_flush_files(
- dbenv, dbmp, 1)) != 0 && ret == 0)
+ dbenv, 1)) != 0 && ret == 0)
ret = t_ret;
}
last_mf_offset = bhp->mf_offset;
@@ -496,28 +545,18 @@ __memp_sync_int(dbenv, dbmfp, trickle_max, op, wrotep)
* dirty, we write it. We only try to write the buffer once.
*/
if (bhp->ref_sync == 0 && F_ISSET(bhp, BH_DIRTY)) {
- MUTEX_UNLOCK(dbenv, mutex);
- hb_lock = 0;
-
mfp = R_ADDR(dbmp->reginfo, bhp->mf_offset);
if ((t_ret =
- __memp_bhwrite(dbmp, hp, mfp, bhp, 1)) == 0)
- ++wrote;
- else {
+ __memp_bhwrite(dbmp, hp, mfp, bhp, 1)) == 0) {
+ ++wrote_cnt;
+ ++wrote_total;
+ } else {
if (ret == 0)
ret = t_ret;
__db_errx
(dbenv, "%s: unable to flush page: %lu",
__memp_fns(dbmp, mfp), (u_long)bhp->pgno);
- }
- /*
- * Avoid saturating the disk, sleep once we've done
- * some number of writes.
- */
- if (maxwrite != 0 && ++write_cnt >= maxwrite) {
- write_cnt = 0;
- __os_sleep(dbenv, 0, (u_long)maxwrite_sleep);
}
}
@@ -525,18 +564,9 @@ __memp_sync_int(dbenv, dbmfp, trickle_max, op, wrotep)
* If ref_sync count never went to 0, the buffer was written
* by another thread, or the write failed, we still have the
* buffer locked.
- *
- * We may or may not currently hold the hash bucket mutex. If
- * the __memp_bhwrite -> __memp_pgwrite call was successful,
- * __memp_pgwrite will have acquired the hash bucket lock; all
- * other call paths will leave us without the hash bucket lock.
*/
- if (F_ISSET(bhp, BH_LOCKED)) {
- if (!hb_lock)
- MUTEX_LOCK(dbenv, mutex);
-
+ if (F_ISSET(bhp, BH_LOCKED))
F_CLR(bhp, BH_LOCKED);
- }
/*
* Reset the ref_sync count regardless of our success, we're
@@ -548,7 +578,8 @@ __memp_sync_int(dbenv, dbmfp, trickle_max, op, wrotep)
--bhp->ref;
/*
- * If a thread of control is waiting on this buffer, wake it up.
+ * If a thread of control is waiting in this hash bucket, wake
+ * it up.
*/
if (F_ISSET(hp, IO_WAITER)) {
F_CLR(hp, IO_WAITER);
@@ -557,29 +588,51 @@ __memp_sync_int(dbenv, dbmfp, trickle_max, op, wrotep)
/* Release the hash bucket mutex. */
MUTEX_UNLOCK(dbenv, mutex);
+
+ /* Check if the call has been interrupted. */
+ if (LF_ISSET(DB_SYNC_INTERRUPT_OK) &&
+ FLD_ISSET(mp->config_flags, DB_MEMP_SYNC_INTERRUPT)) {
+ if (interruptedp != NULL)
+ *interruptedp = 1;
+ goto err;
+ }
+
+ /*
+ * Sleep after some number of writes to avoid disk saturation.
+ * Don't cache the max writes value, an application shutting
+ * down might reset the value in order to do a fast flush or
+ * checkpoint.
+ */
+ if (!LF_ISSET(DB_SYNC_SUPPRESS_WRITE) &&
+ !FLD_ISSET(mp->config_flags, DB_MEMP_SUPPRESS_WRITE) &&
+ mp->mp_maxwrite != 0 && wrote_cnt >= mp->mp_maxwrite) {
+ wrote_cnt = 0;
+ __os_sleep(
+ dbenv, 0, (u_long)mp->mp_maxwrite_sleep);
+ }
}
done: /*
- * If doing a checkpoint or flushing a file for the application, we
- * have to force the pages to disk. We don't do this as we go along
- * because we want to give the OS as much time as possible to lazily
- * flush, and because we have to flush files that might not even have
- * had dirty buffers in the cache, so we have to walk the files list.
+ * If a write is required, we have to force the pages to disk. We
+ * don't do this as we go along because we want to give the OS as
+ * much time as possible to lazily flush, and because we have to flush
+ * files that might not even have had dirty buffers in the cache, so
+ * we have to walk the files list.
*/
- if (ret == 0 && (op == DB_SYNC_CACHE || op == DB_SYNC_FILE)) {
+ if (ret == 0 && required_write) {
if (dbmfp == NULL)
- ret = __memp_sync_files(dbenv, dbmp);
+ ret = __memp_sync_files(dbenv);
else
ret = __os_fsync(dbenv, dbmfp->fhp);
}
/* If we've opened files to flush pages, close them. */
- if ((t_ret = __memp_close_flush_files(dbenv, dbmp, 0)) != 0 && ret == 0)
+ if ((t_ret = __memp_close_flush_files(dbenv, 0)) != 0 && ret == 0)
ret = t_ret;
err: __os_free(dbenv, bharray);
- if (wrotep != NULL)
- *wrotep = wrote;
+ if (wrote_totalp != NULL)
+ *wrote_totalp = wrote_total;
return (ret);
}
@@ -651,28 +704,23 @@ __memp_sync_file(dbenv, mfp, argp, countp, flags)
/* If we don't find a handle we can use, open one. */
if (dbmfp == NULL) {
- if ((ret = __memp_mf_sync(dbmp, mfp, 0)) != 0) {
+ if ((ret = __memp_mf_sync(dbmp, mfp, 1)) != 0) {
__db_err(dbenv, ret,
"%s: unable to flush", (char *)
R_ADDR(dbmp->reginfo, mfp->path_off));
}
- } else {
+ } else
ret = __os_fsync(dbenv, dbmfp->fhp);
- if ((t_ret = __memp_fclose(dbmfp, 0)) != 0 && ret == 0)
- ret = t_ret;
- }
-
/*
* Re-acquire the MPOOLFILE mutex, we need it to modify the
* reference count.
*/
MUTEX_LOCK(dbenv, mfp->mutex);
- --mfp->mpf_cnt;
/*
- * If we wrote the file and there are no open handles (or there
- * is a single open handle, and it's the one we opened to write
+ * If we wrote the file and there are no other references (or there
+ * is a single reference, and it's the one we opened to write
* buffers during checkpoint), clear the file_written flag. We
* do this so that applications opening thousands of files don't
* loop here opening and flushing those files during checkpoint.
@@ -684,7 +732,7 @@ __memp_sync_file(dbenv, mfp, argp, countp, flags)
* the region lock, no possibility of another thread of control
* racing with us to open a MPOOLFILE.
*/
- if (mfp->mpf_cnt == 0 || (mfp->mpf_cnt == 1 &&
+ if (mfp->mpf_cnt == 1 || (mfp->mpf_cnt == 2 &&
dbmfp != NULL && F_ISSET(dbmfp, MP_FLUSH))) {
mfp->file_written = 0;
@@ -696,31 +744,44 @@ __memp_sync_file(dbenv, mfp, argp, countp, flags)
* I mean, what are the chances that there aren't any
* buffers in the pool? Regardless, it might happen.)
*/
- if (mfp->mpf_cnt == 0 && mfp->block_cnt == 0)
+ if (mfp->mpf_cnt == 1 && mfp->block_cnt == 0)
*(int *)argp = 1;
}
- /* Unlock the MPOOLFILE, and move to the next entry. */
+ /*
+ * If we found the file we must close it in case we are the last
+ * reference to the dbmfp. NOTE: since we have incremented
+ * mfp->mpf_cnt this cannot be the last reference to the mfp.
+ * This is important since we are called with the hash bucket
+ * locked. The mfp will get freed via the cleanup pass.
+ */
+ if (dbmfp != NULL && (t_ret = __memp_fclose(dbmfp, 0)) != 0 && ret == 0)
+ ret = t_ret;
+
+ --mfp->mpf_cnt;
+
+ /* Unlock the MPOOLFILE. */
MUTEX_UNLOCK(dbenv, mfp->mutex);
- return (0);
+ return (ret);
}
/*
* __memp_sync_files --
* Sync all the files in the environment, open or not.
*/
-static
-int __memp_sync_files(dbenv, dbmp)
+static int
+__memp_sync_files(dbenv)
DB_ENV *dbenv;
- DB_MPOOL *dbmp;
{
+ DB_MPOOL *dbmp;
DB_MPOOL_HASH *hp;
MPOOL *mp;
MPOOLFILE *mfp, *next_mfp;
int i, need_discard_pass, ret;
- need_discard_pass = ret = 0;
+ dbmp = dbenv->mp_handle;
mp = dbmp->reginfo[0].primary;
+ need_discard_pass = ret = 0;
ret = __memp_walk_files(dbenv,
mp, __memp_sync_file, &need_discard_pass, 0, DB_STAT_NOERROR);
@@ -734,7 +795,7 @@ int __memp_sync_files(dbenv, dbmp)
hp = R_ADDR(dbmp->reginfo, mp->ftab);
for (i = 0; i < MPOOL_FILE_BUCKETS; i++, hp++) {
- MUTEX_LOCK(dbenv, hp->mtx_hash);
+retry: MUTEX_LOCK(dbenv, hp->mtx_hash);
for (mfp = SH_TAILQ_FIRST(&hp->hash_bucket,
__mpoolfile); mfp != NULL; mfp = next_mfp) {
next_mfp = SH_TAILQ_NEXT(mfp, q, __mpoolfile);
@@ -743,13 +804,17 @@ int __memp_sync_files(dbenv, dbmp)
* without a mutex on the MPOOLFILE. If likely to
* succeed, lock the MPOOLFILE down and look for real.
*/
- if (mfp->block_cnt != 0 || mfp->mpf_cnt != 0)
+ if (mfp->deadfile ||
+ mfp->block_cnt != 0 || mfp->mpf_cnt != 0)
continue;
MUTEX_LOCK(dbenv, mfp->mutex);
- if (mfp->block_cnt == 0 && mfp->mpf_cnt == 0)
+ if (!mfp->deadfile &&
+ mfp->block_cnt == 0 && mfp->mpf_cnt == 0) {
+ MUTEX_UNLOCK(dbenv, hp->mtx_hash);
(void)__memp_mf_discard(dbmp, mfp);
- else
+ goto retry;
+ } else
MUTEX_UNLOCK(dbenv, mfp->mutex);
}
MUTEX_UNLOCK(dbenv, hp->mtx_hash);
@@ -764,28 +829,36 @@ int __memp_sync_files(dbenv, dbmp)
* PUBLIC: int __memp_mf_sync __P((DB_MPOOL *, MPOOLFILE *, int));
*/
int
-__memp_mf_sync(dbmp, mfp, region_locked)
+__memp_mf_sync(dbmp, mfp, locked)
DB_MPOOL *dbmp;
MPOOLFILE *mfp;
- int region_locked;
+ int locked;
{
DB_ENV *dbenv;
DB_FH *fhp;
+ DB_MPOOL_HASH *hp;
+ MPOOL *mp;
int ret, t_ret;
char *rpath;
+ COMPQUIET(hp, NULL);
dbenv = dbmp->dbenv;
/*
- * We need to be holding the region lock: we're using the path name
+ * We need to be holding the hash lock: we're using the path name
* and __memp_nameop might try and rename the file.
*/
- if (!region_locked)
- MPOOL_SYSTEM_LOCK(dbenv);
+ if (!locked) {
+ mp = dbmp->reginfo[0].primary;
+ hp = R_ADDR(dbmp->reginfo, mp->ftab);
+ hp += FNBUCKET(
+ R_ADDR(dbmp->reginfo, mfp->fileid_off), DB_FILE_ID_LEN);
+ MUTEX_LOCK(dbenv, hp->mtx_hash);
+ }
if ((ret = __db_appname(dbenv, DB_APP_DATA,
R_ADDR(dbmp->reginfo, mfp->path_off), 0, NULL, &rpath)) == 0) {
- if ((ret = __os_open(dbenv, rpath, 0, 0, &fhp)) == 0) {
+ if ((ret = __os_open(dbenv, rpath, 0, 0, 0, &fhp)) == 0) {
ret = __os_fsync(dbenv, fhp);
if ((t_ret =
__os_closehandle(dbenv, fhp)) != 0 && ret == 0)
@@ -794,8 +867,8 @@ __memp_mf_sync(dbmp, mfp, region_locked)
__os_free(dbenv, rpath);
}
- if (!region_locked)
- MPOOL_SYSTEM_UNLOCK(dbenv);
+ if (!locked)
+ MUTEX_UNLOCK(dbenv, hp->mtx_hash);
return (ret);
}
@@ -805,15 +878,17 @@ __memp_mf_sync(dbmp, mfp, region_locked)
* Close files opened only to flush buffers.
*/
static int
-__memp_close_flush_files(dbenv, dbmp, dosync)
+__memp_close_flush_files(dbenv, dosync)
DB_ENV *dbenv;
- DB_MPOOL *dbmp;
int dosync;
{
+ DB_MPOOL *dbmp;
DB_MPOOLFILE *dbmfp;
MPOOLFILE *mfp;
int ret;
+ dbmp = dbenv->mp_handle;
+
/*
* The routine exists because we must close files opened by sync to
* flush buffers. There are two cases: first, extent files have to
diff --git a/db/mp/mp_trickle.c b/db/mp/mp_trickle.c
index d1d3853aa..cbe7af4f2 100644
--- a/db/mp/mp_trickle.c
+++ b/db/mp/mp_trickle.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: mp_trickle.c,v 12.9 2006/08/24 14:46:15 bostic Exp $
+ * $Id: mp_trickle.c,v 12.16 2007/06/01 18:32:44 bostic Exp $
*/
#include "db_config.h"
@@ -89,15 +88,21 @@ __memp_trickle(dbenv, pct, nwrotep)
if (total == 0 || dirty == 0)
return (0);
- clean = total - dirty;
+ /*
+ * The total number of pages is an exact number, but the dirty page
+ * count can change while we're walking the hash buckets, and it's
+ * even possible the dirty page count ends up larger than the total
+ * number of pages.
+ */
+ clean = total > dirty ? total - dirty : 0;
need_clean = (total * (u_int)pct) / 100;
if (clean >= need_clean)
return (0);
need_clean -= clean;
- ret = __memp_sync_int(
- dbenv, NULL, need_clean, DB_SYNC_TRICKLE, &wrote);
- mp->stat.st_page_trickle += wrote;
+ ret = __memp_sync_int(dbenv, NULL,
+ need_clean, DB_SYNC_TRICKLE | DB_SYNC_INTERRUPT_OK, &wrote, NULL);
+ STAT((mp->stat.st_page_trickle += wrote));
if (nwrotep != NULL)
*nwrotep = (int)wrote;
diff --git a/db/mutex/mut_alloc.c b/db/mutex/mut_alloc.c
index bfc453dc6..12789cce1 100644
--- a/db/mutex/mut_alloc.c
+++ b/db/mutex/mut_alloc.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1999-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1999,2007 Oracle. All rights reserved.
*
- * $Id: mut_alloc.c,v 12.15 2006/08/24 14:46:16 bostic Exp $
+ * $Id: mut_alloc.c,v 12.18 2007/05/17 15:15:45 bostic Exp $
*/
#include "db_config.h"
@@ -119,6 +118,7 @@ __mutex_alloc_int(dbenv, locksys, alloc_id, flags, indxp)
*indxp = mtxregion->mutex_next;
mutexp = MUTEXP_SET(*indxp);
+ DB_ASSERT(dbenv, ((uintptr_t)mutexp & (dbenv->mutex_align - 1)) == 0);
mtxregion->mutex_next = mutexp->mutex_next_link;
--mtxregion->stat.st_mutex_free;
diff --git a/db/mutex/mut_failchk.c b/db/mutex/mut_failchk.c
index 3d9d46a98..707dc57cf 100644
--- a/db/mutex/mut_failchk.c
+++ b/db/mutex/mut_failchk.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2005-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2005,2007 Oracle. All rights reserved.
*
- * $Id: mut_failchk.c,v 12.3 2006/08/24 14:46:16 bostic Exp $
+ * $Id: mut_failchk.c,v 12.5 2007/05/17 15:15:45 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/mutex/mut_fcntl.c b/db/mutex/mut_fcntl.c
index eb4c6ef7f..03a55a6fc 100644
--- a/db/mutex/mut_fcntl.c
+++ b/db/mutex/mut_fcntl.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: mut_fcntl.c,v 12.20 2006/08/24 14:46:16 bostic Exp $
+ * $Id: mut_fcntl.c,v 12.23 2007/05/17 15:15:45 bostic Exp $
*/
#include "db_config.h"
@@ -73,7 +72,7 @@ __db_fcntl_mutex_lock(dbenv, mutex)
* up to 1 second.
*/
for (ms = 1; F_ISSET(mutexp, DB_MUTEX_LOCKED);) {
- __os_sleep(NULL, 0, ms * USEC_PER_MS);
+ __os_sleep(NULL, 0, ms * US_PER_MS);
if ((ms <<= 1) > MS_PER_SEC)
ms = MS_PER_SEC;
}
diff --git a/db/mutex/mut_method.c b/db/mutex/mut_method.c
index 08da11d94..47a2aebf5 100644
--- a/db/mutex/mut_method.c
+++ b/db/mutex/mut_method.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: mut_method.c,v 12.12 2006/08/24 14:46:16 bostic Exp $
+ * $Id: mut_method.c,v 12.14 2007/05/17 15:15:45 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/mutex/mut_pthread.c b/db/mutex/mut_pthread.c
index 08c7b388b..58c916e1c 100644
--- a/db/mutex/mut_pthread.c
+++ b/db/mutex/mut_pthread.c
@@ -1,15 +1,19 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1999-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1999,2007 Oracle. All rights reserved.
*
- * $Id: mut_pthread.c,v 12.19 2006/08/24 14:46:16 bostic Exp $
+ * $Id: mut_pthread.c,v 12.24 2007/06/21 16:39:20 ubell Exp $
*/
#include "db_config.h"
#include "db_int.h"
+
+/*
+ * This is where we load in architecture/compiler specific mutex code.
+ */
+#define LOAD_ACTUAL_MUTEX_CODE
#include "dbinc/mutex_int.h"
#ifdef HAVE_MUTEX_SOLARIS_LWP
@@ -181,7 +185,7 @@ __db_pthread_mutex_lock(dbenv, mutex)
mtxregion = mtxmgr->reginfo.primary;
mutexp = MUTEXP_SET(mutex);
-#ifdef HAVE_STATISTICS
+#if defined(HAVE_STATISTICS) && !defined(HAVE_MUTEX_HYBRID)
/*
* We want to know which mutexes are contentious, but don't want to
* do an interlocked test here -- that's slower when the underlying
@@ -200,6 +204,17 @@ __db_pthread_mutex_lock(dbenv, mutex)
goto err;
if (F_ISSET(mutexp, DB_MUTEX_SELF_BLOCK)) {
+ /*
+ * If we are using hybrid mutexes then the pthread mutexes
+ * are only used to wait after spinning on the TAS mutex.
+ * Set the wait flag before checking to see if the mutex
+ * is still locked. The holder will clear the bit before
+ * checking the wait flag.
+ */
+#ifdef HAVE_MUTEX_HYBRID
+ mutexp->wait++;
+ MUTEX_MEMBAR(mutexp->wait);
+#endif
while (F_ISSET(mutexp, DB_MUTEX_LOCKED)) {
RET_SET((pthread_cond_wait(
&mutexp->cond, &mutexp->mutex)), ret);
@@ -223,9 +238,13 @@ __db_pthread_mutex_lock(dbenv, mutex)
}
}
+#ifdef HAVE_MUTEX_HYBRID
+ mutexp->wait--;
+#else
F_SET(mutexp, DB_MUTEX_LOCKED);
dbenv->thread_id(dbenv, &mutexp->pid, &mutexp->tid);
CHECK_MTX_THREAD(dbenv, mutexp);
+#endif
/*
* According to HP-UX engineers contacted by Netscape,
@@ -297,7 +316,7 @@ __db_pthread_mutex_unlock(dbenv, mutex)
mtxregion = mtxmgr->reginfo.primary;
mutexp = MUTEXP_SET(mutex);
-#ifdef DIAGNOSTIC
+#if !defined(HAVE_MUTEX_HYBRID) && defined(DIAGNOSTIC)
if (!F_ISSET(mutexp, DB_MUTEX_LOCKED)) {
__db_errx(
dbenv, "pthread unlock failed: lock already unlocked");
diff --git a/db/mutex/mut_region.c b/db/mutex/mut_region.c
index 6e1b4f3ad..99ad80c70 100644
--- a/db/mutex/mut_region.c
+++ b/db/mutex/mut_region.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: mut_region.c,v 12.18 2006/08/24 14:46:16 bostic Exp $
+ * $Id: mut_region.c,v 12.25 2007/05/17 15:15:45 bostic Exp $
*/
#include "db_config.h"
@@ -13,8 +12,10 @@
#include "dbinc/log.h"
#include "dbinc/lock.h"
#include "dbinc/mp.h"
+#include "dbinc/txn.h"
#include "dbinc/mutex_int.h"
+static size_t __mutex_align_size __P((DB_ENV *));
static int __mutex_region_init __P((DB_ENV *, DB_MUTEXMGR *));
static size_t __mutex_region_size __P((DB_ENV *));
@@ -22,11 +23,12 @@ static size_t __mutex_region_size __P((DB_ENV *));
* __mutex_open --
* Open a mutex region.
*
- * PUBLIC: int __mutex_open __P((DB_ENV *));
+ * PUBLIC: int __mutex_open __P((DB_ENV *, int));
*/
int
-__mutex_open(dbenv)
+__mutex_open(dbenv, create_ok)
DB_ENV *dbenv;
+ int create_ok;
{
DB_MUTEXMGR *mtxmgr;
DB_MUTEXREGION *mtxregion;
@@ -57,20 +59,21 @@ __mutex_open(dbenv)
__lock_region_mutex_count(dbenv) +
__log_region_mutex_count(dbenv) +
__memp_region_mutex_count(dbenv) +
+ __txn_region_mutex_count(dbenv) +
dbenv->mutex_inc + 100;
/* Create/initialize the mutex manager structure. */
if ((ret = __os_calloc(dbenv, 1, sizeof(DB_MUTEXMGR), &mtxmgr)) != 0)
return (ret);
- /* Join/create the txn region. */
+ /* Join/create the mutex region. */
mtxmgr->reginfo.dbenv = dbenv;
mtxmgr->reginfo.type = REGION_TYPE_MUTEX;
mtxmgr->reginfo.id = INVALID_REGION_ID;
mtxmgr->reginfo.flags = REGION_JOIN_OK;
- if (F_ISSET(dbenv, DB_ENV_CREATE))
+ if (create_ok)
F_SET(&mtxmgr->reginfo, REGION_CREATE_OK);
- if ((ret = __db_r_attach(dbenv,
+ if ((ret = __env_region_attach(dbenv,
&mtxmgr->reginfo, __mutex_region_size(dbenv))) != 0)
goto err;
@@ -82,7 +85,7 @@ __mutex_open(dbenv)
/* Set the local addresses. */
mtxregion = mtxmgr->reginfo.primary =
R_ADDR(&mtxmgr->reginfo, mtxmgr->reginfo.rp->primary);
- mtxmgr->mutex_array = R_ADDR(&mtxmgr->reginfo, mtxregion->mutex_offset);
+ mtxmgr->mutex_array = R_ADDR(&mtxmgr->reginfo, mtxregion->mutex_off);
dbenv->mutex_handle = mtxmgr;
@@ -123,20 +126,11 @@ __mutex_open(dbenv)
}
}
- /*
- * Initialize thread tracking. We want to do this as early
- * as possible in case we die. This sits in the mutex region
- * so do it now.
- */
- if ((ret = __env_thread_init(dbenv,
- F_ISSET(&mtxmgr->reginfo, REGION_CREATE))) != 0)
- goto err;
-
return (0);
err: dbenv->mutex_handle = NULL;
if (mtxmgr->reginfo.addr != NULL)
- (void)__db_r_detach(dbenv, &mtxmgr->reginfo, 0);
+ (void)__env_region_detach(dbenv, &mtxmgr->reginfo, 0);
__os_free(dbenv, mtxmgr);
return (ret);
@@ -159,8 +153,8 @@ __mutex_region_init(dbenv, mtxmgr)
COMPQUIET(mutexp, NULL);
- if ((ret = __db_shalloc(&mtxmgr->reginfo,
- sizeof(DB_MUTEXREGION), 0, &mtxmgr->reginfo.primary)) != 0) {
+ if ((ret = __env_alloc(&mtxmgr->reginfo,
+ sizeof(DB_MUTEXREGION), &mtxmgr->reginfo.primary)) != 0) {
__db_errx(dbenv,
"Unable to allocate memory for the mutex region");
return (ret);
@@ -174,8 +168,7 @@ __mutex_region_init(dbenv, mtxmgr)
dbenv, MTX_MUTEX_REGION, 0, &mtxregion->mtx_region)) != 0)
return (ret);
- mtxregion->mutex_size =
- (size_t)DB_ALIGN(sizeof(DB_MUTEX), dbenv->mutex_align);
+ mtxregion->mutex_size = __mutex_align_size(dbenv);
mtxregion->stat.st_mutex_align = dbenv->mutex_align;
mtxregion->stat.st_mutex_cnt = dbenv->mutex_cnt;
@@ -183,22 +176,29 @@ __mutex_region_init(dbenv, mtxmgr)
/*
* Get a chunk of memory to be used for the mutexes themselves. Each
- * piece of the memory must be properly aligned.
+ * piece of the memory must be properly aligned, and that alignment
+ * may be more restrictive than the memory alignment returned by the
+ * underlying allocation code. We already know how much memory each
+ * mutex in the array will take up, but we need to offset the first
+ * mutex in the array so the array begins properly aligned.
*
* The OOB mutex (MUTEX_INVALID) is 0. To make this work, we ignore
* the first allocated slot when we build the free list. We have to
* correct the count by 1 here, though, otherwise our counter will be
* off by 1.
*/
- if ((ret = __db_shalloc(&mtxmgr->reginfo,
+ if ((ret = __env_alloc(&mtxmgr->reginfo,
+ mtxregion->stat.st_mutex_align +
(mtxregion->stat.st_mutex_cnt + 1) * mtxregion->mutex_size,
- mtxregion->stat.st_mutex_align, &mutex_array)) != 0) {
+ &mutex_array)) != 0) {
__db_errx(dbenv,
"Unable to allocate memory for mutexes from the region");
return (ret);
}
- mtxregion->mutex_offset = R_OFFSET(&mtxmgr->reginfo, mutex_array);
+ mtxregion->mutex_off_alloc = R_OFFSET(&mtxmgr->reginfo, mutex_array);
+ mutex_array = ALIGNP_INC(mutex_array, mtxregion->stat.st_mutex_align);
+ mtxregion->mutex_off = R_OFFSET(&mtxmgr->reginfo, mutex_array);
mtxmgr->mutex_array = mutex_array;
/*
@@ -225,13 +225,13 @@ __mutex_region_init(dbenv, mtxmgr)
}
/*
- * __mutex_dbenv_refresh --
+ * __mutex_env_refresh --
* Clean up after the mutex region on a close or failed open.
*
- * PUBLIC: int __mutex_dbenv_refresh __P((DB_ENV *));
+ * PUBLIC: int __mutex_env_refresh __P((DB_ENV *));
*/
int
-__mutex_dbenv_refresh(dbenv)
+__mutex_env_refresh(dbenv)
DB_ENV *dbenv;
{
DB_MUTEXMGR *mtxmgr;
@@ -257,12 +257,12 @@ __mutex_dbenv_refresh(dbenv)
__mutex_resource_return(dbenv, reginfo);
#endif
/* Discard the mutex array. */
- __db_shalloc_free(
- reginfo, R_ADDR(reginfo, mtxregion->mutex_offset));
+ __env_alloc_free(
+ reginfo, R_ADDR(reginfo, mtxregion->mutex_off_alloc));
}
/* Detach from the region. */
- ret = __db_r_detach(dbenv, reginfo, 0);
+ ret = __env_region_detach(dbenv, reginfo, 0);
__os_free(dbenv, mtxmgr);
@@ -272,6 +272,18 @@ __mutex_dbenv_refresh(dbenv)
}
/*
+ * __mutex_align_size --
+ * Return how much memory each mutex will take up if an array of them
+ * are to be properly aligned, individually, within the array.
+ */
+static size_t
+__mutex_align_size(dbenv)
+ DB_ENV *dbenv;
+{
+ return ((size_t)DB_ALIGN(sizeof(DB_MUTEX), (dbenv)->mutex_align));
+}
+
+/*
* __mutex_region_size --
* Return the amount of space needed for the mutex region.
*/
@@ -282,16 +294,11 @@ __mutex_region_size(dbenv)
size_t s;
s = sizeof(DB_MUTEXMGR) + 1024;
- s += dbenv->mutex_cnt *
- __db_shalloc_size(sizeof(DB_MUTEX), dbenv->mutex_align);
- /*
- * Allocate space for thread info blocks. Max is only advisory,
- * so we allocate 25% more.
- */
- s += (dbenv->thr_max + dbenv->thr_max/4) *
- __db_shalloc_size(sizeof(DB_THREAD_INFO), sizeof(roff_t));
- s += dbenv->thr_nbucket *
- __db_shalloc_size(sizeof(DB_HASHTAB), sizeof(roff_t));
+
+ /* We discard one mutex for the OOB slot. */
+ s += __env_alloc_size(
+ (dbenv->mutex_cnt + 1) *__mutex_align_size(dbenv));
+
return (s);
}
@@ -320,8 +327,8 @@ __mutex_resource_return(dbenv, infop)
*
* Walk the list of mutexes and destroy any live ones.
*
- * This is just like joining a region -- the REGINFO we're handed
- * is the same as the one returned by __db_r_attach(), all we have
+ * This is just like joining a region -- the REGINFO we're handed is
+ * the same as the one returned by __env_region_attach(), all we have
* to do is fill in the links.
*
* !!!
@@ -334,7 +341,7 @@ __mutex_resource_return(dbenv, infop)
mtxmgr->reginfo = *infop;
mtxregion = mtxmgr->reginfo.primary =
R_ADDR(&mtxmgr->reginfo, mtxmgr->reginfo.rp->primary);
- mtxmgr->mutex_array = R_ADDR(&mtxmgr->reginfo, mtxregion->mutex_offset);
+ mtxmgr->mutex_array = R_ADDR(&mtxmgr->reginfo, mtxregion->mutex_off);
/*
* This is a little strange, but the mutex_handle is what all of the
diff --git a/db/mutex/mut_stat.c b/db/mutex/mut_stat.c
index 1e642fe2f..829d54a8f 100644
--- a/db/mutex/mut_stat.c
+++ b/db/mutex/mut_stat.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: mut_stat.c,v 12.17 2006/08/24 14:46:16 bostic Exp $
+ * $Id: mut_stat.c,v 12.26 2007/05/17 17:18:01 bostic Exp $
*/
#include "db_config.h"
@@ -19,22 +18,21 @@ static int __mutex_print_all __P((DB_ENV *, u_int32_t));
static const char *__mutex_print_id __P((int));
static int __mutex_print_stats __P((DB_ENV *, u_int32_t));
static void __mutex_print_summary __P((DB_ENV *));
+static int __mutex_stat __P((DB_ENV *, DB_MUTEX_STAT **, u_int32_t));
/*
- * __mutex_stat --
- * DB_ENV->mutex_stat.
+ * __mutex_stat_pp --
+ * DB_ENV->mutex_stat pre/post processing.
*
- * PUBLIC: int __mutex_stat __P((DB_ENV *, DB_MUTEX_STAT **, u_int32_t));
+ * PUBLIC: int __mutex_stat_pp __P((DB_ENV *, DB_MUTEX_STAT **, u_int32_t));
*/
int
-__mutex_stat(dbenv, statp, flags)
+__mutex_stat_pp(dbenv, statp, flags)
DB_ENV *dbenv;
DB_MUTEX_STAT **statp;
u_int32_t flags;
{
- DB_MUTEXMGR *mtxmgr;
- DB_MUTEXREGION *mtxregion;
- DB_MUTEX_STAT *stats;
+ DB_THREAD_INFO *ip;
int ret;
PANIC_CHECK(dbenv);
@@ -43,6 +41,29 @@ __mutex_stat(dbenv, statp, flags)
"DB_ENV->mutex_stat", flags, DB_STAT_CLEAR)) != 0)
return (ret);
+ ENV_ENTER(dbenv, ip);
+ REPLICATION_WRAP(dbenv, (__mutex_stat(dbenv, statp, flags)), ret);
+ ENV_LEAVE(dbenv, ip);
+ return (ret);
+}
+
+/*
+ * __mutex_stat --
+ * DB_ENV->mutex_stat.
+ */
+static int
+__mutex_stat(dbenv, statp, flags)
+ DB_ENV *dbenv;
+ DB_MUTEX_STAT **statp;
+ u_int32_t flags;
+{
+ DB_MUTEXMGR *mtxmgr;
+ DB_MUTEXREGION *mtxregion;
+ DB_MUTEX_STAT *stats;
+ int ret;
+
+ PANIC_CHECK(dbenv);
+
*statp = NULL;
mtxmgr = dbenv->mutex_handle;
mtxregion = mtxmgr->reginfo.primary;
@@ -70,17 +91,17 @@ __mutex_stat(dbenv, statp, flags)
}
/*
- * __mutex_stat_print
- * DB_ENV->mutex_stat_print method.
+ * __mutex_stat_print_pp --
+ * DB_ENV->mutex_stat_print pre/post processing.
*
- * PUBLIC: int __mutex_stat_print __P((DB_ENV *, u_int32_t));
+ * PUBLIC: int __mutex_stat_print_pp __P((DB_ENV *, u_int32_t));
*/
int
-__mutex_stat_print(dbenv, flags)
+__mutex_stat_print_pp(dbenv, flags)
DB_ENV *dbenv;
u_int32_t flags;
{
- u_int32_t orig_flags;
+ DB_THREAD_INFO *ip;
int ret;
PANIC_CHECK(dbenv);
@@ -89,8 +110,28 @@ __mutex_stat_print(dbenv, flags)
flags, DB_STAT_ALL | DB_STAT_CLEAR)) != 0)
return (ret);
+ ENV_ENTER(dbenv, ip);
+ REPLICATION_WRAP(dbenv, (__mutex_stat_print(dbenv, flags)), ret);
+ ENV_LEAVE(dbenv, ip);
+ return (ret);
+}
+
+/*
+ * __mutex_stat_print
+ * DB_ENV->mutex_stat_print method.
+ *
+ * PUBLIC: int __mutex_stat_print __P((DB_ENV *, u_int32_t));
+ */
+int
+__mutex_stat_print(dbenv, flags)
+ DB_ENV *dbenv;
+ u_int32_t flags;
+{
+ u_int32_t orig_flags;
+ int ret;
+
orig_flags = flags;
- LF_CLR(DB_STAT_CLEAR);
+ LF_CLR(DB_STAT_CLEAR | DB_STAT_SUBSYSTEM);
if (flags == 0 || LF_ISSET(DB_STAT_ALL)) {
ret = __mutex_print_stats(dbenv, orig_flags);
__mutex_print_summary(dbenv);
@@ -149,10 +190,6 @@ __mutex_print_stats(dbenv, flags)
u_int32_t flags;
{
DB_MUTEX_STAT *sp;
- DB_MUTEXMGR *mtxmgr;
- DB_MUTEXREGION *mtxregion;
- REGINFO *infop;
- THREAD_INFO *thread;
int ret;
if ((ret = __mutex_stat(dbenv, &sp, LF_ISSET(DB_STAT_CLEAR))) != 0)
@@ -176,20 +213,6 @@ __mutex_print_stats(dbenv, flags)
__os_ufree(dbenv, sp);
- /*
- * Dump out the info we have on thread tracking, we do it here only
- * because we share the region.
- */
- if (dbenv->thr_hashtab != NULL) {
- mtxmgr = dbenv->mutex_handle;
- mtxregion = mtxmgr->reginfo.primary;
- infop = &mtxmgr->reginfo;
- thread = R_ADDR(infop, mtxregion->thread_off);
- STAT_ULONG("Thread blocks allocated", thread->thr_count);
- STAT_ULONG("Thread allocation threshold", thread->thr_max);
- STAT_ULONG("Thread hash buckets", thread->thr_nbucket);
- }
-
return (0);
}
@@ -222,7 +245,7 @@ __mutex_print_all(dbenv, flags)
mtxmgr = dbenv->mutex_handle;
mtxregion = mtxmgr->reginfo.primary;
- __db_print_reginfo(dbenv, &mtxmgr->reginfo, "Mutex");
+ __db_print_reginfo(dbenv, &mtxmgr->reginfo, "Mutex", flags);
__db_msg(dbenv, "%s", DB_GLOBAL(db_line));
__db_msg(dbenv, "DB_MUTEXREGION structure:");
@@ -282,6 +305,8 @@ __mutex_print_debug_single(dbenv, tag, mutex, flags)
DB_MSGBUF_INIT(&mb);
mbp = &mb;
+ if (LF_ISSET(DB_STAT_SUBSYSTEM))
+ LF_CLR(DB_STAT_CLEAR);
__db_msgadd(dbenv, mbp, "%lu\t%s ", (u_long)mutex, tag);
__mutex_print_debug_stats(dbenv, mbp, mutex, flags);
DB_MSGBUF_FLUSH(dbenv, mbp);
@@ -427,7 +452,7 @@ __mutex_clear(dbenv, mutex)
#else /* !HAVE_STATISTICS */
int
-__mutex_stat(dbenv, statp, flags)
+__mutex_stat_pp(dbenv, statp, flags)
DB_ENV *dbenv;
DB_MUTEX_STAT **statp;
u_int32_t flags;
@@ -439,7 +464,7 @@ __mutex_stat(dbenv, statp, flags)
}
int
-__mutex_stat_print(dbenv, flags)
+__mutex_stat_print_pp(dbenv, flags)
DB_ENV *dbenv;
u_int32_t flags;
{
diff --git a/db/mutex/mut_stub.c b/db/mutex/mut_stub.c
new file mode 100644
index 000000000..d4620c771
--- /dev/null
+++ b/db/mutex/mut_stub.c
@@ -0,0 +1,234 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
+ *
+ * $Id: mut_stub.c,v 12.4 2007/05/17 15:15:45 bostic Exp $
+ */
+
+#ifndef HAVE_MUTEX_SUPPORT
+#include "db_config.h"
+
+#include "db_int.h"
+#include "dbinc/db_page.h"
+#include "dbinc/db_am.h"
+
+/*
+ * If the library wasn't compiled with mutex support, various routines
+ * aren't available. Stub them here, returning an appropriate error.
+ */
+static int __db_nomutex __P((DB_ENV *));
+
+/*
+ * __db_nomutex --
+ * Error when a Berkeley DB build doesn't include mutexes.
+ */
+static int
+__db_nomutex(dbenv)
+ DB_ENV *dbenv;
+{
+ __db_errx(dbenv,
+ "library build did not include support for mutexes");
+ return (DB_OPNOTSUP);
+}
+
+int
+__mutex_alloc_pp(dbenv, flags, indxp)
+ DB_ENV *dbenv;
+ u_int32_t flags;
+ db_mutex_t *indxp;
+{
+ COMPQUIET(flags, 0);
+ COMPQUIET(indxp, NULL);
+ return (__db_nomutex(dbenv));
+}
+
+int
+__mutex_alloc(dbenv, alloc_id, flags, indxp)
+ DB_ENV *dbenv;
+ int alloc_id;
+ u_int32_t flags;
+ db_mutex_t *indxp;
+{
+ COMPQUIET(dbenv, NULL);
+ COMPQUIET(alloc_id, 0);
+ COMPQUIET(flags, 0);
+ *indxp = MUTEX_INVALID;
+ return (0);
+}
+
+void
+__mutex_clear(dbenv, mutex)
+ DB_ENV *dbenv;
+ db_mutex_t mutex;
+{
+ COMPQUIET(dbenv, NULL);
+ COMPQUIET(mutex, MUTEX_INVALID);
+}
+
+int
+__mutex_free_pp(dbenv, indx)
+ DB_ENV *dbenv;
+ db_mutex_t indx;
+{
+ COMPQUIET(indx, 0);
+ return (__db_nomutex(dbenv));
+}
+
+int
+__mutex_free(dbenv, indxp)
+ DB_ENV *dbenv;
+ db_mutex_t *indxp;
+{
+ COMPQUIET(dbenv, NULL);
+ *indxp = MUTEX_INVALID;
+ return (0);
+}
+
+int
+__mutex_get_align(dbenv, alignp)
+ DB_ENV *dbenv;
+ u_int32_t *alignp;
+{
+ COMPQUIET(alignp, NULL);
+ return (__db_nomutex(dbenv));
+}
+
+int
+__mutex_get_increment(dbenv, incrementp)
+ DB_ENV *dbenv;
+ u_int32_t *incrementp;
+{
+ COMPQUIET(incrementp, NULL);
+ return (__db_nomutex(dbenv));
+}
+
+int
+__mutex_get_max(dbenv, maxp)
+ DB_ENV *dbenv;
+ u_int32_t *maxp;
+{
+ COMPQUIET(maxp, NULL);
+ return (__db_nomutex(dbenv));
+}
+
+int
+__mutex_get_tas_spins(dbenv, tas_spinsp)
+ DB_ENV *dbenv;
+ u_int32_t *tas_spinsp;
+{
+ COMPQUIET(tas_spinsp, NULL);
+ return (__db_nomutex(dbenv));
+}
+
+int
+__mutex_lock_pp(dbenv, indx)
+ DB_ENV *dbenv;
+ db_mutex_t indx;
+{
+ COMPQUIET(indx, 0);
+ return (__db_nomutex(dbenv));
+}
+
+void
+__mutex_print_debug_single(dbenv, tag, mutex, flags)
+ DB_ENV *dbenv;
+ const char *tag;
+ db_mutex_t mutex;
+ u_int32_t flags;
+{
+ COMPQUIET(dbenv, NULL);
+ COMPQUIET(tag, NULL);
+ COMPQUIET(mutex, MUTEX_INVALID);
+ COMPQUIET(flags, 0);
+}
+
+void
+__mutex_print_debug_stats(dbenv, mbp, mutex, flags)
+ DB_ENV *dbenv;
+ DB_MSGBUF *mbp;
+ db_mutex_t mutex;
+ u_int32_t flags;
+{
+ COMPQUIET(dbenv, NULL);
+ COMPQUIET(mbp, NULL);
+ COMPQUIET(mutex, MUTEX_INVALID);
+ COMPQUIET(flags, 0);
+}
+
+int
+__mutex_set_align(dbenv, align)
+ DB_ENV *dbenv;
+ u_int32_t align;
+{
+ COMPQUIET(align, 0);
+ return (__db_nomutex(dbenv));
+}
+
+int
+__mutex_set_increment(dbenv, increment)
+ DB_ENV *dbenv;
+ u_int32_t increment;
+{
+ COMPQUIET(increment, 0);
+ return (__db_nomutex(dbenv));
+}
+
+int
+__mutex_set_max(dbenv, max)
+ DB_ENV *dbenv;
+ u_int32_t max;
+{
+ COMPQUIET(max, 0);
+ return (__db_nomutex(dbenv));
+}
+
+int
+__mutex_set_tas_spins(dbenv, tas_spins)
+ DB_ENV *dbenv;
+ u_int32_t tas_spins;
+{
+ COMPQUIET(tas_spins, 0);
+ return (__db_nomutex(dbenv));
+}
+
+void
+__mutex_set_wait_info(dbenv, mutex, waitp, nowaitp)
+ DB_ENV *dbenv;
+ db_mutex_t mutex;
+ u_int32_t *waitp, *nowaitp;
+{
+ COMPQUIET(dbenv, NULL);
+ COMPQUIET(mutex, MUTEX_INVALID);
+ *waitp = *nowaitp = 0;
+}
+
+int
+__mutex_stat_pp(dbenv, statp, flags)
+ DB_ENV *dbenv;
+ DB_MUTEX_STAT **statp;
+ u_int32_t flags;
+{
+ COMPQUIET(statp, NULL);
+ COMPQUIET(flags, 0);
+ return (__db_nomutex(dbenv));
+}
+
+int
+__mutex_stat_print_pp(dbenv, flags)
+ DB_ENV *dbenv;
+ u_int32_t flags;
+{
+ COMPQUIET(flags, 0);
+ return (__db_nomutex(dbenv));
+}
+
+int
+__mutex_unlock_pp(dbenv, indx)
+ DB_ENV *dbenv;
+ db_mutex_t indx;
+{
+ COMPQUIET(indx, 0);
+ return (__db_nomutex(dbenv));
+}
+#endif /* !HAVE_MUTEX_SUPPORT */
diff --git a/db/mutex/mut_tas.c b/db/mutex/mut_tas.c
index bbe25fa8e..c9f3cddcf 100644
--- a/db/mutex/mut_tas.c
+++ b/db/mutex/mut_tas.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: mut_tas.c,v 12.20 2006/08/24 14:46:16 bostic Exp $
+ * $Id: mut_tas.c,v 12.27 2007/06/21 16:39:20 ubell Exp $
*/
#include "db_config.h"
@@ -12,7 +11,7 @@
#include "db_int.h"
/*
- * This is where we load in the actual test-and-set mutex code.
+ * This is where we load in architecture/compiler specific mutex code.
*/
#define LOAD_ACTUAL_MUTEX_CODE
#include "dbinc/mutex_int.h"
@@ -51,6 +50,11 @@ __db_tas_mutex_init(dbenv, mutex, flags)
__db_syserr(dbenv, ret, "TAS: mutex initialize");
return (__os_posix_err(ret));
}
+#ifdef HAVE_MUTEX_HYBRID
+ if ((ret = __db_pthread_mutex_init(dbenv,
+ mutex, flags | DB_MUTEX_SELF_BLOCK)) != 0)
+ return (ret);
+#endif
return (0);
}
@@ -69,8 +73,11 @@ __db_tas_mutex_lock(dbenv, mutex)
DB_MUTEXMGR *mtxmgr;
DB_MUTEXREGION *mtxregion;
u_int32_t nspins;
+#ifdef HAVE_MUTEX_HYBRID
+ int ret;
+#else
u_long ms, max_ms;
-
+#endif
if (!MUTEX_ON(dbenv) || F_ISSET(dbenv, DB_ENV_NOLOCKING))
return (0);
@@ -85,6 +92,7 @@ __db_tas_mutex_lock(dbenv, mutex)
++mutexp->mutex_set_nowait;
#endif
+#ifndef HAVE_MUTEX_HYBRID
/*
* Wait 1ms initially, up to 10ms for mutexes backing logical database
* locks, and up to 25 ms for mutual exclusion data structure mutexes.
@@ -92,6 +100,7 @@ __db_tas_mutex_lock(dbenv, mutex)
*/
ms = 1;
max_ms = F_ISSET(mutexp, DB_MUTEX_LOGICAL_LOCK) ? 10 : 25;
+#endif
loop: /* Attempt to acquire the resource for N spins. */
for (nspins =
@@ -167,9 +176,14 @@ relock:
}
/* Wait for the lock to become available. */
- __os_sleep(dbenv, 0, ms * USEC_PER_MS);
+#ifdef HAVE_MUTEX_HYBRID
+ if ((ret = __db_pthread_mutex_lock(dbenv, mutex)) != 0)
+ return (ret);
+#else
+ __os_sleep(dbenv, 0, ms * US_PER_MS);
if ((ms <<= 1) > max_ms)
ms = max_ms;
+#endif
/*
* We're spinning. The environment might be hung, and somebody else
@@ -196,6 +210,9 @@ __db_tas_mutex_unlock(dbenv, mutex)
DB_MUTEX *mutexp;
DB_MUTEXMGR *mtxmgr;
DB_MUTEXREGION *mtxregion;
+#ifdef HAVE_MUTEX_HYBRID
+ int ret;
+#endif
if (!MUTEX_ON(dbenv) || F_ISSET(dbenv, DB_ENV_NOLOCKING))
return (0);
@@ -210,8 +227,15 @@ __db_tas_mutex_unlock(dbenv, mutex)
return (__db_panic(dbenv, EACCES));
}
#endif
+
F_CLR(mutexp, DB_MUTEX_LOCKED);
+#ifdef HAVE_MUTEX_HYBRID
+ MUTEX_MEMBAR(mutexp->flags);
+ if (mutexp->wait &&
+ (ret = __db_pthread_mutex_unlock(dbenv, mutex)) != 0)
+ return (ret);
+#endif
MUTEX_UNSET(&mutexp->tas);
return (0);
@@ -231,6 +255,9 @@ __db_tas_mutex_destroy(dbenv, mutex)
DB_MUTEX *mutexp;
DB_MUTEXMGR *mtxmgr;
DB_MUTEXREGION *mtxregion;
+#ifdef HAVE_MUTEX_HYBRID
+ int ret;
+#endif
if (!MUTEX_ON(dbenv))
return (0);
@@ -241,5 +268,11 @@ __db_tas_mutex_destroy(dbenv, mutex)
MUTEX_DESTROY(&mutexp->tas);
+#ifdef HAVE_MUTEX_HYBRID
+ if ((ret = __db_pthread_mutex_destroy(dbenv, mutex)) != 0)
+ return (ret);
+#endif
+
+ COMPQUIET(mutexp, NULL); /* MUTEX_DESTROY may not be defined. */
return (0);
}
diff --git a/db/mutex/mut_win32.c b/db/mutex/mut_win32.c
index 083784310..2d0385e90 100644
--- a/db/mutex/mut_win32.c
+++ b/db/mutex/mut_win32.c
@@ -1,10 +1,9 @@
/*
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: mut_win32.c,v 12.21 2006/08/24 14:46:16 bostic Exp $
+ * $Id: mut_win32.c,v 12.25 2007/06/28 11:14:04 alexg Exp $
*/
#include "db_config.h"
@@ -48,6 +47,7 @@ static __inline int get_handle(dbenv, mutexp, eventp)
for (id = (mutexp)->id; id != 0; id >>= 4)
*--p = hex_digits[id & 0xf];
+#ifndef DB_WINCE
if (!security_initialized) {
InitializeSecurityDescriptor(&null_sd,
SECURITY_DESCRIPTOR_REVISION);
@@ -57,6 +57,7 @@ static __inline int get_handle(dbenv, mutexp, eventp)
all_sa.lpSecurityDescriptor = &null_sd;
security_initialized = 1;
}
+#endif
if ((*eventp = CreateEvent(&all_sa, FALSE, FALSE, idbuf)) == NULL) {
ret = __os_get_syserr();
@@ -111,6 +112,9 @@ __db_win32_mutex_lock(dbenv, mutex)
#ifdef MUTEX_DIAG
LARGE_INTEGER now;
#endif
+#ifdef DB_WINCE
+ volatile db_threadid_t tmp_tid;
+#endif
if (!MUTEX_ON(dbenv) || F_ISSET(dbenv, DB_ENV_NOLOCKING))
return (0);
@@ -130,6 +134,20 @@ loop: /* Attempt to acquire the resource for N spins. */
* We can avoid the (expensive) interlocked instructions if
* the mutex is already "set".
*/
+#ifdef DB_WINCE
+ /*
+ * Memory mapped regions on Windows CE cause problems with
+ * InterlockedExchange calls. Each page in a mapped region
+ * needs to have been written to prior to an
+ * InterlockedExchange call, or the InterlockedExchange call
+ * hangs. This does not seem to be documented anywhere. For
+ * now, read/write a non-critical piece of memory from the
+ * shared region prior to attempting an InterlockedExchange
+ * operation.
+ */
+ tmp_tid = mutexp->tid;
+ mutexp->tid = tmp_tid;
+#endif
if (mutexp->tas || !MUTEX_SET(&mutexp->tas)) {
/*
* Some systems (notably those with newer Intel CPUs)
diff --git a/db/mutex/mutex.c b/db/mutex/mutex.c
deleted file mode 100644
index 9d925d113..000000000
--- a/db/mutex/mutex.c
+++ /dev/null
@@ -1,392 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1999-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: mutex.c,v 11.43 2004/10/15 16:59:44 bostic Exp $
- */
-
-#include "db_config.h"
-
-#ifndef NO_SYSTEM_INCLUDES
-#include <sys/types.h>
-
-#include <string.h>
-#endif
-
-#include "db_int.h"
-
-#if defined(MUTEX_NO_MALLOC_LOCKS) || defined(HAVE_MUTEX_SYSTEM_RESOURCES)
-#include "dbinc/db_shash.h"
-#include "dbinc/lock.h"
-#include "dbinc/log.h"
-#include "dbinc/mp.h"
-#include "dbinc/txn.h"
-#endif
-
-static int __db_mutex_alloc_int __P((DB_ENV *, REGINFO *, DB_MUTEX **));
-#ifdef HAVE_MUTEX_SYSTEM_RESOURCES
-static REGMAINT * __db_mutex_maint __P((DB_ENV *, REGINFO *));
-#endif
-
-/*
- * __db_mutex_setup --
- * External interface to allocate, and/or initialize, record
- * mutexes.
- *
- * PUBLIC: int __db_mutex_setup __P((DB_ENV *, REGINFO *, void *, u_int32_t));
- */
-int
-__db_mutex_setup(dbenv, infop, ptr, flags)
- DB_ENV *dbenv;
- REGINFO *infop;
- void *ptr;
- u_int32_t flags;
-{
- DB_MUTEX *mutex;
- REGMAINT *maint;
- u_int32_t iflags, offset;
- int ret;
-
- ret = 0;
- /*
- * If they indicated the region is not locked, then lock it.
- * This is only needed when we have unusual mutex resources.
- * (I.e. MUTEX_NO_MALLOC_LOCKS or HAVE_MUTEX_SYSTEM_RESOURCES)
- */
-#if defined(MUTEX_NO_MALLOC_LOCKS) || defined(HAVE_MUTEX_SYSTEM_RESOURCES)
- if (!LF_ISSET(MUTEX_NO_RLOCK))
- R_LOCK(dbenv, infop);
-#endif
- /*
- * Allocate the mutex if they asked us to.
- */
- mutex = NULL;
- if (LF_ISSET(MUTEX_ALLOC)) {
- if ((ret = __db_mutex_alloc_int(dbenv, infop, ptr)) != 0)
- goto err;
- mutex = *(DB_MUTEX **)ptr;
- } else
- mutex = (DB_MUTEX *)ptr;
-
- /*
- * Set up to initialize the mutex.
- */
- iflags = LF_ISSET(MUTEX_LOGICAL_LOCK | MUTEX_THREAD | MUTEX_SELF_BLOCK);
- switch (infop->type) {
- case REGION_TYPE_LOCK:
- offset = P_TO_UINT32(mutex) + DB_FCNTL_OFF_LOCK;
- break;
- case REGION_TYPE_MPOOL:
- offset = P_TO_UINT32(mutex) + DB_FCNTL_OFF_MPOOL;
- break;
- default:
- offset = P_TO_UINT32(mutex) + DB_FCNTL_OFF_GEN;
- break;
- }
- maint = NULL;
-#ifdef HAVE_MUTEX_SYSTEM_RESOURCES
- if (!LF_ISSET(MUTEX_NO_RECORD))
- maint = (REGMAINT *)__db_mutex_maint(dbenv, infop);
-#endif
-
- ret = __db_mutex_init(dbenv, mutex, offset, iflags, infop, maint);
-err:
-#if defined(MUTEX_NO_MALLOC_LOCKS) || defined(HAVE_MUTEX_SYSTEM_RESOURCES)
- if (!LF_ISSET(MUTEX_NO_RLOCK))
- R_UNLOCK(dbenv, infop);
-#endif
- /*
- * If we allocated the mutex but had an error on init'ing,
- * then we must free it before returning.
- * !!!
- * Free must be done after releasing region lock.
- */
- if (ret != 0 && LF_ISSET(MUTEX_ALLOC) && mutex != NULL) {
- __db_mutex_free(dbenv, infop, mutex);
- *(DB_MUTEX **)ptr = NULL;
- }
- return (ret);
-}
-
-/*
- * __db_mutex_alloc_int --
- * Allocate and initialize a mutex.
- */
-static int
-__db_mutex_alloc_int(dbenv, infop, storep)
- DB_ENV *dbenv;
- REGINFO *infop;
- DB_MUTEX **storep;
-{
- int ret;
-
- /*
- * If the architecture supports mutexes in heap memory, use heap memory.
- * If it doesn't, we have to allocate space in a region. If allocation
- * in the region fails, fallback to allocating from the mpool region,
- * because it's big, it almost always exists and if it's entirely dirty,
- * we can free buffers until memory is available.
- */
-#if defined(MUTEX_NO_MALLOC_LOCKS) || defined(HAVE_MUTEX_SYSTEM_RESOURCES)
- ret = __db_shalloc(infop, sizeof(DB_MUTEX), MUTEX_ALIGN, storep);
-
- if (ret == ENOMEM && MPOOL_ON(dbenv)) {
- DB_MPOOL *dbmp;
-
- dbmp = dbenv->mp_handle;
- if ((ret = __memp_alloc(dbmp,
- dbmp->reginfo, NULL, sizeof(DB_MUTEX), NULL, storep)) == 0)
- (*storep)->flags = MUTEX_MPOOL;
- } else
- (*storep)->flags = 0;
-#else
- COMPQUIET(dbenv, NULL);
- COMPQUIET(infop, NULL);
- ret = __os_calloc(dbenv, 1, sizeof(DB_MUTEX), storep);
-#endif
- if (ret != 0)
- __db_err(dbenv, "Unable to allocate memory for mutex");
- return (ret);
-}
-
-/*
- * __db_mutex_free --
- * Free a mutex.
- *
- * PUBLIC: void __db_mutex_free __P((DB_ENV *, REGINFO *, DB_MUTEX *));
- */
-void
-__db_mutex_free(dbenv, infop, mutexp)
- DB_ENV *dbenv;
- REGINFO *infop;
- DB_MUTEX *mutexp;
-{
-#if defined(MUTEX_NO_MALLOC_LOCKS) || defined(HAVE_MUTEX_SYSTEM_RESOURCES)
- R_LOCK(dbenv, infop);
-#if defined(HAVE_MUTEX_SYSTEM_RESOURCES)
- if (F_ISSET(mutexp, MUTEX_INITED))
- __db_shlocks_clear(mutexp, infop, NULL);
-#endif
- if (F_ISSET(mutexp, MUTEX_MPOOL)) {
- DB_MPOOL *dbmp;
-
- dbmp = dbenv->mp_handle;
- R_LOCK(dbenv, dbmp->reginfo);
- __db_shalloc_free(&dbmp->reginfo[0], mutexp);
- R_UNLOCK(dbenv, dbmp->reginfo);
- } else
- __db_shalloc_free(infop, mutexp);
- R_UNLOCK(dbenv, infop);
-#else
- COMPQUIET(dbenv, NULL);
- COMPQUIET(infop, NULL);
- __os_free(dbenv, mutexp);
-#endif
-}
-
-#ifdef HAVE_MUTEX_SYSTEM_RESOURCES
-/*
- * __db_shreg_locks_record --
- * Record an entry in the shared locks area.
- * Region lock must be held in caller.
- */
-static int
-__db_shreg_locks_record(dbenv, mutexp, infop, rp)
- DB_ENV *dbenv;
- DB_MUTEX *mutexp;
- REGINFO *infop;
- REGMAINT *rp;
-{
- u_int i;
-
- if (!F_ISSET(mutexp, MUTEX_INITED))
- return (0);
- DB_ASSERT(mutexp->reg_off == INVALID_ROFF);
- rp->stat.st_records++;
- i = (roff_t *)R_ADDR(infop, rp->regmutex_hint) - &rp->regmutexes[0];
- if (rp->regmutexes[i] != INVALID_ROFF) {
- /*
- * Our hint failed, search for an open slot.
- */
- rp->stat.st_hint_miss++;
- for (i = 0; i < rp->reglocks; i++)
- if (rp->regmutexes[i] == INVALID_ROFF)
- break;
- if (i == rp->reglocks) {
- rp->stat.st_max_locks++;
- __db_err(dbenv,
- "Region mutexes: Exceeded maximum lock slots %lu",
- (u_long)rp->reglocks);
- return (ENOMEM);
- }
- } else
- rp->stat.st_hint_hit++;
- /*
- * When we get here, i is an empty slot. Record this
- * mutex, set hint to point to the next slot and we are done.
- */
- rp->regmutexes[i] = R_OFFSET(infop, mutexp);
- mutexp->reg_off = R_OFFSET(infop, &rp->regmutexes[i]);
- rp->regmutex_hint = (i < rp->reglocks - 1) ?
- R_OFFSET(infop, &rp->regmutexes[i+1]) :
- R_OFFSET(infop, &rp->regmutexes[0]);
- return (0);
-}
-
-/*
- * __db_shreg_locks_clear --
- * Erase an entry in the shared locks area.
- *
- * PUBLIC: void __db_shreg_locks_clear __P((DB_MUTEX *, REGINFO *, REGMAINT *));
- */
-void
-__db_shreg_locks_clear(mutexp, infop, rp)
- DB_MUTEX *mutexp;
- REGINFO *infop;
- REGMAINT *rp;
-{
- /*
- * !!!
- * Assumes the caller's region lock is held.
- */
- if (!F_ISSET(mutexp, MUTEX_INITED))
- return;
- /*
- * This function is generally only called on a forcible remove of an
- * environment. We recorded our index in the mutex, find and clear it.
- */
- DB_ASSERT(mutexp->reg_off != INVALID_ROFF);
- DB_ASSERT(*(roff_t *)R_ADDR(infop, mutexp->reg_off) == \
- R_OFFSET(infop, mutexp));
- *(roff_t *)R_ADDR(infop, mutexp->reg_off) = 0;
- if (rp != NULL) {
- rp->regmutex_hint = mutexp->reg_off;
- rp->stat.st_clears++;
- }
- mutexp->reg_off = INVALID_ROFF;
- __db_mutex_destroy(mutexp);
-}
-
-/*
- * __db_shreg_locks_destroy --
- * Destroy all mutexes in a region's range.
- *
- * PUBLIC: void __db_shreg_locks_destroy __P((REGINFO *, REGMAINT *));
- */
-void
-__db_shreg_locks_destroy(infop, rp)
- REGINFO *infop;
- REGMAINT *rp;
-{
- u_int32_t i;
-
- /*
- * Go through the list of all mutexes and destroy them.
- */
- for (i = 0; i < rp->reglocks; i++)
- if (rp->regmutexes[i] != 0) {
- rp->stat.st_destroys++;
- __db_mutex_destroy(R_ADDR(infop, rp->regmutexes[i]));
- }
-}
-
-/*
- * __db_shreg_mutex_init --
- * Initialize a shared memory mutex.
- *
- * PUBLIC: int __db_shreg_mutex_init __P((DB_ENV *, DB_MUTEX *, u_int32_t,
- * PUBLIC: u_int32_t, REGINFO *, REGMAINT *));
- */
-int
-__db_shreg_mutex_init(dbenv, mutexp, offset, flags, infop, rp)
- DB_ENV *dbenv;
- DB_MUTEX *mutexp;
- u_int32_t offset;
- u_int32_t flags;
- REGINFO *infop;
- REGMAINT *rp;
-{
- int ret;
-
- if ((ret = __db_mutex_init_int(dbenv, mutexp, offset, flags)) != 0)
- return (ret);
- /*
- * Some mutexes cannot be recorded, but we want one interface.
- * So, if we have no REGMAINT, then just return.
- */
- if (rp == NULL)
- return (ret);
- /*
- * !!!
- * Since __db_mutex_init_int is a macro, we may not be
- * using the 'offset' as it is only used for one type
- * of mutex. We COMPQUIET it here, after the call above.
- */
- COMPQUIET(offset, 0);
- ret = __db_shreg_locks_record(dbenv, mutexp, infop, rp);
-
- /*
- * If we couldn't record it and we are returning an error,
- * we need to destroy the mutex we just created.
- */
- if (ret)
- __db_mutex_destroy(mutexp);
-
- return (ret);
-}
-
-/*
- * __db_shreg_maintinit --
- * Initialize a region's maintenance information.
- *
- * PUBLIC: void __db_shreg_maintinit __P((REGINFO *, void *addr, size_t));
- */
-void
-__db_shreg_maintinit(infop, addr, size)
- REGINFO *infop;
- void *addr;
- size_t size;
-{
- REGMAINT *rp;
- u_int32_t i;
-
- rp = (REGMAINT *)addr;
- memset(addr, 0, sizeof(REGMAINT));
- rp->reglocks = size / sizeof(roff_t);
- rp->regmutex_hint = R_OFFSET(infop, &rp->regmutexes[0]);
- for (i = 0; i < rp->reglocks; i++)
- rp->regmutexes[i] = INVALID_ROFF;
-}
-
-static REGMAINT *
-__db_mutex_maint(dbenv, infop)
- DB_ENV *dbenv;
- REGINFO *infop;
-{
- roff_t moff;
-
- switch (infop->type) {
- case REGION_TYPE_LOCK:
- moff = ((DB_LOCKREGION *)
- R_ADDR(infop, infop->rp->primary))->maint_off;
- break;
- case REGION_TYPE_LOG:
- moff = ((LOG *)R_ADDR(infop, infop->rp->primary))->maint_off;
- break;
- case REGION_TYPE_MPOOL:
- moff = ((MPOOL *)R_ADDR(infop, infop->rp->primary))->maint_off;
- break;
- case REGION_TYPE_TXN:
- moff = ((DB_TXNREGION *)
- R_ADDR(infop, infop->rp->primary))->maint_off;
- break;
- default:
- __db_err(dbenv,
- "Attempting to record mutex in a region not set up to do so");
- return (NULL);
- }
- return ((REGMAINT *)R_ADDR(infop, moff));
-}
-#endif /* HAVE_MUTEX_SYSTEM_RESOURCES */
diff --git a/db/mutex/test_mutex.c b/db/mutex/test_mutex.c
new file mode 100644
index 000000000..b0fc8397b
--- /dev/null
+++ b/db/mutex/test_mutex.c
@@ -0,0 +1,1041 @@
+/*
+ * Standalone mutex tester for Berkeley DB mutexes.
+ *
+ * $Id: test_mutex.c,v 12.21 2007/06/21 16:02:29 bostic Exp $
+ */
+
+#include "db_config.h"
+
+#include "db_int.h"
+
+#include <sys/wait.h>
+
+#ifdef DB_WIN32
+#define MUTEX_THREAD_TEST 1
+
+extern int getopt(int, char * const *, const char *);
+
+typedef HANDLE os_pid_t;
+typedef HANDLE os_thread_t;
+
+#define os_thread_create(thrp, attr, func, arg) \
+ (((*(thrp) = CreateThread(NULL, 0, \
+ (LPTHREAD_START_ROUTINE)(func), (arg), 0, NULL)) == NULL) ? -1 : 0)
+#define os_thread_join(thr, statusp) \
+ ((WaitForSingleObject((thr), INFINITE) == WAIT_OBJECT_0) && \
+ GetExitCodeThread((thr), (LPDWORD)(statusp)) ? 0 : -1)
+#define os_thread_self() GetCurrentThreadId()
+
+#else /* !DB_WIN32 */
+
+typedef pid_t os_pid_t;
+
+/*
+ * There's only one mutex implementation that can't support thread-level
+ * locking: UNIX/fcntl mutexes.
+ *
+ * The general Berkeley DB library configuration doesn't look for the POSIX
+ * pthread functions, with one exception -- pthread_yield.
+ *
+ * Use these two facts to decide if we're going to build with or without
+ * threads.
+ */
+#if !defined(HAVE_MUTEX_FCNTL) && defined(HAVE_PTHREAD_YIELD)
+#define MUTEX_THREAD_TEST 1
+
+#include <pthread.h>
+
+typedef pthread_t os_thread_t;
+
+#define os_thread_create(thrp, attr, func, arg) \
+ pthread_create((thrp), (attr), (func), (arg))
+#define os_thread_join(thr, statusp) pthread_join((thr), (statusp))
+#define os_thread_self() pthread_self()
+#endif /* HAVE_PTHREAD_YIELD */
+#endif /* !DB_WIN32 */
+
+#define OS_BAD_PID ((os_pid_t)-1)
+
+#define TESTDIR "TESTDIR" /* Working area */
+#define MT_FILE "TESTDIR/mutex.file"
+#define MT_FILE_QUIT "TESTDIR/mutex.file.quit"
+
+/*
+ * The backing data layout:
+ * TM[1] per-thread mutex array lock
+ * TM[nthreads] per-thread mutex array
+ * TM[maxlocks] per-lock mutex array
+ */
+typedef struct {
+ db_mutex_t mutex; /* Mutex. */
+ u_long id; /* Holder's ID. */
+ u_int wakeme; /* Request to awake. */
+} TM;
+
+DB_ENV *dbenv; /* Backing environment */
+size_t len; /* Backing data chunk size. */
+
+u_int8_t *gm_addr; /* Global mutex */
+u_int8_t *lm_addr; /* Locker mutexes */
+u_int8_t *tm_addr; /* Thread mutexes */
+
+#ifdef MUTEX_THREAD_TEST
+os_thread_t *kidsp; /* Locker threads */
+os_thread_t wakep; /* Wakeup thread */
+#endif
+
+#ifndef HAVE_MMAP
+u_int nprocs = 1; /* -p: Processes. */
+u_int nthreads = 20; /* -t: Threads. */
+#elif MUTEX_THREAD_TEST
+u_int nprocs = 5; /* -p: Processes. */
+u_int nthreads = 4; /* -t: Threads. */
+#else
+u_int nprocs = 20; /* -p: Processes. */
+u_int nthreads = 1; /* -t: Threads. */
+#endif
+
+u_int maxlocks = 20; /* -l: Backing locks. */
+u_int nlocks = 10000; /* -n: Locks per process. */
+int verbose; /* -v: Verbosity. */
+
+const char *progname;
+
+void data_off(u_int8_t *, DB_FH *);
+void data_on(u_int8_t **, u_int8_t **, u_int8_t **, DB_FH **, int);
+int locker_start(u_long);
+int locker_wait(void);
+os_pid_t os_spawn(const char *, char *const[]);
+int os_wait(os_pid_t *, u_int);
+void *run_lthread(void *);
+void *run_wthread(void *);
+os_pid_t spawn_proc(u_long, char *, char *);
+void tm_env_close(void);
+int tm_env_init(void);
+void tm_mutex_destroy(void);
+void tm_mutex_init(void);
+void tm_mutex_stats(void);
+int usage(void);
+int wakeup_start(u_long);
+int wakeup_wait(void);
+
+int
+main(argc, argv)
+ int argc;
+ char *argv[];
+{
+ enum {LOCKER, WAKEUP, PARENT} rtype;
+ extern int optind;
+ extern char *optarg;
+ os_pid_t wakeup_pid, *pids;
+ u_long id;
+ u_int i;
+ DB_FH *fhp, *map_fhp;
+ int ch, err;
+ char *p, *tmpath, cmd[1024];
+
+ if ((progname = __db_rpath(argv[0])) == NULL)
+ progname = argv[0];
+ else
+ ++progname;
+
+ rtype = PARENT;
+ id = 0;
+ tmpath = argv[0];
+ while ((ch = getopt(argc, argv, "l:n:p:T:t:v")) != EOF)
+ switch (ch) {
+ case 'l':
+ maxlocks = (u_int)atoi(optarg);
+ break;
+ case 'n':
+ nlocks = (u_int)atoi(optarg);
+ break;
+ case 'p':
+ nprocs = (u_int)atoi(optarg);
+ break;
+ case 't':
+ if ((nthreads = (u_int)atoi(optarg)) == 0)
+ nthreads = 1;
+#if !defined(MUTEX_THREAD_TEST)
+ if (nthreads != 1) {
+ fprintf(stderr,
+ "%s: thread support not available or not compiled for this platform.\n",
+ progname);
+ return (EXIT_FAILURE);
+ }
+#endif
+ break;
+ case 'T':
+ if (!memcmp(optarg, "locker", sizeof("locker") - 1))
+ rtype = LOCKER;
+ else if (
+ !memcmp(optarg, "wakeup", sizeof("wakeup") - 1))
+ rtype = WAKEUP;
+ else
+ return (usage());
+ if ((p = strchr(optarg, '=')) == NULL)
+ return (usage());
+ id = (u_long)atoi(p + 1);
+ break;
+ case 'v':
+ verbose = 1;
+ break;
+ case '?':
+ default:
+ return (usage());
+ }
+ argc -= optind;
+ argv += optind;
+
+ /*
+ * If we're not running a multi-process test, we should be running
+ * a multi-thread test.
+ */
+ if (nprocs == 1 && nthreads == 1) {
+ fprintf(stderr,
+ "%s: running in a single process requires multiple threads\n",
+ progname);
+ return (EXIT_FAILURE);
+ }
+
+ len = sizeof(TM) * (1 + nthreads * nprocs + maxlocks);
+
+ /*
+ * In the multi-process test, the parent spawns processes that exec
+ * the original binary, ending up here. Each process joins the DB
+ * environment separately and then calls the supporting function.
+ */
+ if (rtype == LOCKER || rtype == WAKEUP) {
+ __os_sleep(dbenv, 3, 0); /* Let everyone catch up. */
+ /* Initialize random numbers. */
+ srand((u_int)time(NULL) % (u_int)getpid());
+
+ if (tm_env_init() != 0) /* Join the environment. */
+ exit(EXIT_FAILURE);
+ /* Join the backing data. */
+ data_on(&gm_addr, &tm_addr, &lm_addr, &map_fhp, 0);
+ if (verbose)
+ printf(
+ "Backing file: global (%#lx), threads (%#lx), locks (%#lx)\n",
+ (u_long)gm_addr, (u_long)tm_addr, (u_long)lm_addr);
+
+ if ((rtype == LOCKER ?
+ locker_start(id) : wakeup_start(id)) != 0)
+ exit(EXIT_FAILURE);
+ if ((rtype == LOCKER ? locker_wait() : wakeup_wait()) != 0)
+ exit(EXIT_FAILURE);
+
+ data_off(gm_addr, map_fhp); /* Detach from backing data. */
+
+ tm_env_close(); /* Detach from environment. */
+
+ exit(EXIT_SUCCESS);
+ }
+
+ /*
+ * The following code is only executed by the original parent process.
+ *
+ * Clean up from any previous runs.
+ */
+ snprintf(cmd, sizeof(cmd), "rm -rf %s", TESTDIR);
+ (void)system(cmd);
+ snprintf(cmd, sizeof(cmd), "mkdir %s", TESTDIR);
+ (void)system(cmd);
+
+ printf(
+ "%s: %u processes, %u threads/process, %u lock requests from %u locks\n",
+ progname, nprocs, nthreads, nlocks, maxlocks);
+ printf("%s: backing data %lu bytes\n", progname, (u_long)len);
+
+ if (tm_env_init() != 0) /* Create the environment. */
+ exit(EXIT_FAILURE);
+ /* Create the backing data. */
+ data_on(&gm_addr, &tm_addr, &lm_addr, &map_fhp, 1);
+ if (verbose)
+ printf(
+ "backing data: global (%#lx), threads (%#lx), locks (%#lx)\n",
+ (u_long)gm_addr, (u_long)tm_addr, (u_long)lm_addr);
+
+ tm_mutex_init(); /* Initialize mutexes. */
+
+ if (nprocs > 1) { /* Run the multi-process test. */
+ /* Allocate array of locker process IDs. */
+ if ((pids = calloc(nprocs, sizeof(os_pid_t))) == NULL) {
+ fprintf(stderr, "%s: %s\n", progname, strerror(errno));
+ goto fail;
+ }
+
+ /* Spawn locker processes and threads. */
+ for (i = 0; i < nprocs; ++i) {
+ if ((pids[i] =
+ spawn_proc(id, tmpath, "locker")) == OS_BAD_PID) {
+ fprintf(stderr,
+ "%s: failed to spawn a locker\n", progname);
+ goto fail;
+ }
+ id += nthreads;
+ }
+
+ /* Spawn wakeup process/thread. */
+ if ((wakeup_pid =
+ spawn_proc(id, tmpath, "wakeup")) == OS_BAD_PID) {
+ fprintf(stderr,
+ "%s: failed to spawn waker\n", progname);
+ goto fail;
+ }
+ ++id;
+
+ /* Wait for all lockers to exit. */
+ if ((err = os_wait(pids, nprocs)) != 0) {
+ fprintf(stderr, "%s: locker wait failed with %d\n",
+ progname, err);
+ goto fail;
+ }
+
+ /* Signal wakeup process to exit. */
+ if ((err = __os_open(
+ dbenv, MT_FILE_QUIT, 0, DB_OSO_CREATE, 0664, &fhp)) != 0) {
+ fprintf(stderr,
+ "%s: open %s\n", progname, db_strerror(err));
+ goto fail;
+ }
+ (void)__os_closehandle(dbenv, fhp);
+
+ /* Wait for wakeup process/thread. */
+ if ((err = os_wait(&wakeup_pid, 1)) != 0) {
+ fprintf(stderr, "%s: %lu: exited %d\n",
+ progname, (u_long)wakeup_pid, err);
+ goto fail;
+ }
+ } else { /* Run the single-process test. */
+ /* Spawn locker threads. */
+ if (locker_start(0) != 0)
+ goto fail;
+
+ /* Spawn wakeup thread. */
+ if (wakeup_start(nthreads) != 0)
+ goto fail;
+
+ /* Wait for all lockers to exit. */
+ if (locker_wait() != 0)
+ goto fail;
+
+ /* Signal wakeup process to exit. */
+ if ((err = __os_open(
+ dbenv, MT_FILE_QUIT, 0, DB_OSO_CREATE, 0664, &fhp)) != 0) {
+ fprintf(stderr,
+ "%s: open %s\n", progname, db_strerror(err));
+ goto fail;
+ }
+ (void)__os_closehandle(dbenv, fhp);
+
+ /* Wait for wakeup thread. */
+ if (wakeup_wait() != 0)
+ goto fail;
+ }
+
+ tm_mutex_stats(); /* Display run statistics. */
+ tm_mutex_destroy(); /* Destroy mutexes. */
+
+ data_off(gm_addr, map_fhp); /* Detach from backing data. */
+
+ tm_env_close(); /* Detach from environment. */
+
+ printf("%s: test succeeded\n", progname);
+ return (EXIT_SUCCESS);
+
+fail: printf("%s: FAILED!\n", progname);
+ return (EXIT_FAILURE);
+}
+
+int
+locker_start(id)
+ u_long id;
+{
+#if defined(MUTEX_THREAD_TEST)
+ u_int i;
+ int err;
+
+ /*
+ * Spawn off threads. We have nthreads all locking and going to
+ * sleep, and one other thread cycling through and waking them up.
+ */
+ if ((kidsp =
+ (os_thread_t *)calloc(sizeof(os_thread_t), nthreads)) == NULL) {
+ fprintf(stderr, "%s: %s\n", progname, strerror(errno));
+ return (1);
+ }
+ for (i = 0; i < nthreads; i++)
+ if ((err = os_thread_create(
+ &kidsp[i], NULL, run_lthread, (void *)(id + i))) != 0) {
+ fprintf(stderr, "%s: failed spawning thread: %s\n",
+ progname, db_strerror(err));
+ return (1);
+ }
+ return (0);
+#else
+ return (run_lthread((void *)id) == NULL ? 0 : 1);
+#endif
+}
+
+int
+locker_wait()
+{
+#if defined(MUTEX_THREAD_TEST)
+ u_int i;
+ void *retp;
+
+ /* Wait for the threads to exit. */
+ for (i = 0; i < nthreads; i++) {
+ (void)os_thread_join(kidsp[i], &retp);
+ if (retp != NULL) {
+ fprintf(stderr,
+ "%s: thread exited with error\n", progname);
+ return (1);
+ }
+ }
+ free(kidsp);
+#endif
+ return (0);
+}
+
+void *
+run_lthread(arg)
+ void *arg;
+{
+ TM *gp, *mp, *tp;
+ u_long id, tid;
+ u_int lock, nl;
+ int err, i;
+
+ id = (uintptr_t)arg;
+#if defined(MUTEX_THREAD_TEST)
+ tid = (u_long)os_thread_self();
+#else
+ tid = 0;
+#endif
+ printf("Locker: ID %03lu (PID: %lu; TID: %lx)\n",
+ id, (u_long)getpid(), tid);
+
+ gp = (TM *)gm_addr;
+ tp = (TM *)(tm_addr + id * sizeof(TM));
+
+ for (nl = nlocks; nl > 0;) {
+ /* Select and acquire a data lock. */
+ lock = (u_int)rand() % maxlocks;
+ mp = (TM *)(lm_addr + lock * sizeof(TM));
+ if (verbose)
+ printf("%03lu: lock %d (mtx: %lu)\n",
+ id, lock, (u_long)mp->mutex);
+
+ if ((err = dbenv->mutex_lock(dbenv, mp->mutex)) != 0) {
+ fprintf(stderr, "%s: %03lu: never got lock %d: %s\n",
+ progname, id, lock, db_strerror(err));
+ return ((void *)1);
+ }
+ if (mp->id != 0) {
+ fprintf(stderr,
+ "%s: RACE! (%03lu granted lock %d held by %03lu)\n",
+ progname, id, lock, mp->id);
+ return ((void *)1);
+ }
+ mp->id = id;
+
+ /*
+ * Pretend to do some work, periodically checking to see if
+ * we still hold the mutex.
+ */
+ for (i = 0; i < 3; ++i) {
+ __os_sleep(dbenv, 0, (u_long)rand() % 3);
+ if (mp->id != id) {
+ fprintf(stderr,
+ "%s: RACE! (%03lu stole lock %d from %03lu)\n",
+ progname, mp->id, lock, id);
+ return ((void *)1);
+ }
+ }
+
+ /*
+ * Test self-blocking and unlocking by other threads/processes:
+ *
+ * acquire the global lock
+ * set our wakeup flag
+ * release the global lock
+ * acquire our per-thread lock
+ *
+ * The wakeup thread will wake us up.
+ */
+ if ((err = dbenv->mutex_lock(dbenv, gp->mutex)) != 0) {
+ fprintf(stderr, "%s: %03lu: global lock: %s\n",
+ progname, id, db_strerror(err));
+ return ((void *)1);
+ }
+ if (tp->id != 0 && tp->id != id) {
+ fprintf(stderr,
+ "%s: %03lu: per-thread mutex isn't mine, owned by %03lu\n",
+ progname, id, tp->id);
+ return ((void *)1);
+ }
+ tp->id = id;
+ if (verbose)
+ printf("%03lu: self-blocking (mtx: %lu)\n",
+ id, (u_long)tp->mutex);
+ if (tp->wakeme) {
+ fprintf(stderr,
+ "%s: %03lu: wakeup flag incorrectly set\n",
+ progname, id);
+ return ((void *)1);
+ }
+ tp->wakeme = 1;
+ if ((err = dbenv->mutex_unlock(dbenv, gp->mutex)) != 0) {
+ fprintf(stderr,
+ "%s: %03lu: global unlock: %s\n",
+ progname, id, db_strerror(err));
+ return ((void *)1);
+ }
+ if ((err = dbenv->mutex_lock(dbenv, tp->mutex)) != 0) {
+ fprintf(stderr, "%s: %03lu: per-thread lock: %s\n",
+ progname, id, db_strerror(err));
+ return ((void *)1);
+ }
+ /* Time passes... */
+ if (tp->wakeme) {
+ fprintf(stderr, "%s: %03lu: wakeup flag not cleared\n",
+ progname, id);
+ return ((void *)1);
+ }
+
+ if (verbose)
+ printf("%03lu: release %d (mtx: %lu)\n",
+ id, lock, (u_long)mp->mutex);
+
+ /* Release the data lock. */
+ mp->id = 0;
+ if ((err = dbenv->mutex_unlock(dbenv, mp->mutex)) != 0) {
+ fprintf(stderr,
+ "%s: %03lu: lock release: %s\n",
+ progname, id, db_strerror(err));
+ return ((void *)1);
+ }
+
+ if (--nl % 100 == 0)
+ printf("%03lu: %d\n", id, nl);
+ }
+
+ return (NULL);
+}
+
+int
+wakeup_start(id)
+ u_long id;
+{
+#if defined(MUTEX_THREAD_TEST)
+ int err;
+
+ /*
+ * Spawn off wakeup thread.
+ */
+ if ((err = os_thread_create(
+ &wakep, NULL, run_wthread, (void *)id)) != 0) {
+ fprintf(stderr, "%s: failed spawning wakeup thread: %s\n",
+ progname, db_strerror(err));
+ return (1);
+ }
+ return (0);
+#else
+ return (run_wthread((void *)id) == NULL ? 0 : 1);
+#endif
+}
+
+int
+wakeup_wait()
+{
+#if defined(MUTEX_THREAD_TEST)
+ void *retp;
+
+ /*
+ * A file is created when the wakeup thread is no longer needed.
+ */
+ (void)os_thread_join(wakep, &retp);
+ if (retp != NULL) {
+ fprintf(stderr,
+ "%s: wakeup thread exited with error\n", progname);
+ return (1);
+ }
+#endif
+ return (0);
+}
+
+/*
+ * run_wthread --
+ * Thread to wake up other threads that are sleeping.
+ */
+void *
+run_wthread(arg)
+ void *arg;
+{
+ TM *gp, *tp;
+ u_long id, tid;
+ u_int check_id;
+ int err;
+
+ id = (uintptr_t)arg;
+#if defined(MUTEX_THREAD_TEST)
+ tid = (u_long)os_thread_self();
+#else
+ tid = 0;
+#endif
+ printf("Wakeup: ID %03lu (PID: %lu; TID: %lx)\n",
+ id, (u_long)getpid(), tid);
+
+ gp = (TM *)gm_addr;
+
+ /* Loop, waking up sleepers and periodically sleeping ourselves. */
+ for (check_id = 0;; ++check_id) {
+ /* Check to see if the locking threads have finished. */
+ if (__os_exists(dbenv, MT_FILE_QUIT, NULL) == 0)
+ break;
+
+ /* Check for ID wraparound. */
+ if (check_id == nthreads * nprocs)
+ check_id = 0;
+
+ /* Check for a thread that needs a wakeup. */
+ tp = (TM *)(tm_addr + check_id * sizeof(TM));
+ if (!tp->wakeme)
+ continue;
+
+ if (verbose) {
+ printf("%03lu: wakeup thread %03lu (mtx: %lu)\n",
+ id, tp->id, (u_long)tp->mutex);
+ (void)fflush(stdout);
+ }
+
+ /* Acquire the global lock. */
+ if ((err = dbenv->mutex_lock(dbenv, gp->mutex)) != 0) {
+ fprintf(stderr, "%s: wakeup: global lock: %s\n",
+ progname, db_strerror(err));
+ return ((void *)1);
+ }
+
+ tp->wakeme = 0;
+ if ((err = dbenv->mutex_unlock(dbenv, tp->mutex)) != 0) {
+ fprintf(stderr, "%s: wakeup: unlock: %s\n",
+ progname, db_strerror(err));
+ return ((void *)1);
+ }
+
+ if ((err = dbenv->mutex_unlock(dbenv, gp->mutex)) != 0) {
+ fprintf(stderr, "%s: wakeup: global unlock: %s\n",
+ progname, db_strerror(err));
+ return ((void *)1);
+ }
+
+ __os_sleep(dbenv, 0, (u_long)rand() % 3);
+ }
+ return (NULL);
+}
+
+/*
+ * tm_env_init --
+ * Create the backing database environment.
+ */
+int
+tm_env_init()
+{
+ u_int32_t flags;
+ int ret;
+ char *home;
+
+ /*
+ * Create an environment object and initialize it for error
+ * reporting.
+ */
+ if ((ret = db_env_create(&dbenv, 0)) != 0) {
+ fprintf(stderr, "%s: %s\n", progname, db_strerror(ret));
+ return (1);
+ }
+ dbenv->set_errfile(dbenv, stderr);
+ dbenv->set_errpfx(dbenv, progname);
+
+ /* Allocate enough mutexes. */
+ if ((ret = dbenv->mutex_set_increment(dbenv,
+ 1 + nthreads * nprocs + maxlocks)) != 0) {
+ dbenv->err(dbenv, ret, "dbenv->mutex_set_increment");
+ return (1);
+ }
+
+ flags = DB_CREATE;
+ if (nprocs == 1) {
+ home = NULL;
+ flags |= DB_PRIVATE;
+ } else
+ home = TESTDIR;
+ if (nthreads != 1)
+ flags |= DB_THREAD;
+ if ((ret = dbenv->open(dbenv, home, flags, 0)) != 0) {
+ dbenv->err(dbenv, ret, "environment open: %s", home);
+ return (1);
+ }
+
+ return (0);
+}
+
+/*
+ * tm_env_close --
+ * Close the backing database environment.
+ */
+void
+tm_env_close()
+{
+ (void)dbenv->close(dbenv, 0);
+}
+
+/*
+ * tm_mutex_init --
+ * Initialize the mutexes.
+ */
+void
+tm_mutex_init()
+{
+ TM *mp;
+ u_int i;
+ int err;
+
+ if (verbose)
+ printf("Allocate the global mutex: ");
+ mp = (TM *)gm_addr;
+ if ((err = dbenv->mutex_alloc(dbenv, 0, &mp->mutex)) != 0) {
+ fprintf(stderr, "%s: DB_ENV->mutex_alloc (global): %s\n",
+ progname, db_strerror(err));
+ exit(EXIT_FAILURE);
+ }
+ if (verbose)
+ printf("%lu\n", (u_long)mp->mutex);
+
+ if (verbose)
+ printf(
+ "Allocate %d per-thread, self-blocking mutexes: ",
+ nthreads * nprocs);
+ for (i = 0; i < nthreads * nprocs; ++i) {
+ mp = (TM *)(tm_addr + i * sizeof(TM));
+ if ((err = dbenv->mutex_alloc(
+ dbenv, DB_MUTEX_SELF_BLOCK, &mp->mutex)) != 0) {
+ fprintf(stderr,
+ "%s: DB_ENV->mutex_alloc (per-thread %d): %s\n",
+ progname, i, db_strerror(err));
+ exit(EXIT_FAILURE);
+ }
+ if ((err = dbenv->mutex_lock(dbenv, mp->mutex)) != 0) {
+ fprintf(stderr,
+ "%s: DB_ENV->mutex_lock (per-thread %d): %s\n",
+ progname, i, db_strerror(err));
+ exit(EXIT_FAILURE);
+ }
+ if (verbose)
+ printf("%lu ", (u_long)mp->mutex);
+ }
+ if (verbose)
+ printf("\n");
+
+ if (verbose)
+ printf("Allocate %d per-lock mutexes: ", maxlocks);
+ for (i = 0; i < maxlocks; ++i) {
+ mp = (TM *)(lm_addr + i * sizeof(TM));
+ if ((err = dbenv->mutex_alloc(dbenv, 0, &mp->mutex)) != 0) {
+ fprintf(stderr,
+ "%s: DB_ENV->mutex_alloc (per-lock: %d): %s\n",
+ progname, i, db_strerror(err));
+ exit(EXIT_FAILURE);
+ }
+ if (verbose)
+ printf("%lu ", (u_long)mp->mutex);
+ }
+ if (verbose)
+ printf("\n");
+}
+
+/*
+ * tm_mutex_destroy --
+ * Destroy the mutexes.
+ */
+void
+tm_mutex_destroy()
+{
+ TM *gp, *mp;
+ u_int i;
+ int err;
+
+ if (verbose)
+ printf("Destroy the global mutex.\n");
+ gp = (TM *)gm_addr;
+ if ((err = dbenv->mutex_free(dbenv, gp->mutex)) != 0) {
+ fprintf(stderr, "%s: DB_ENV->mutex_free (global): %s\n",
+ progname, db_strerror(err));
+ exit(EXIT_FAILURE);
+ }
+
+ if (verbose)
+ printf("Destroy the per-thread mutexes.\n");
+ for (i = 0; i < nthreads * nprocs; ++i) {
+ mp = (TM *)(tm_addr + i * sizeof(TM));
+ if ((err = dbenv->mutex_free(dbenv, mp->mutex)) != 0) {
+ fprintf(stderr,
+ "%s: DB_ENV->mutex_free (per-thread %d): %s\n",
+ progname, i, db_strerror(err));
+ exit(EXIT_FAILURE);
+ }
+ }
+
+ if (verbose)
+ printf("Destroy the per-lock mutexes.\n");
+ for (i = 0; i < maxlocks; ++i) {
+ mp = (TM *)(lm_addr + i * sizeof(TM));
+ if ((err = dbenv->mutex_free(dbenv, mp->mutex)) != 0) {
+ fprintf(stderr,
+ "%s: DB_ENV->mutex_free (per-lock: %d): %s\n",
+ progname, i, db_strerror(err));
+ exit(EXIT_FAILURE);
+ }
+ }
+}
+
+/*
+ * tm_mutex_stats --
+ * Display mutex statistics.
+ */
+void
+tm_mutex_stats()
+{
+#ifdef HAVE_STATISTICS
+ TM *mp;
+ u_int32_t set_wait, set_nowait;
+ u_int i;
+
+ printf("Per-lock mutex statistics.\n");
+ for (i = 0; i < maxlocks; ++i) {
+ mp = (TM *)(lm_addr + i * sizeof(TM));
+ __mutex_set_wait_info(dbenv, mp->mutex, &set_wait, &set_nowait);
+ printf("mutex %2d: wait: %lu; no wait %lu\n", i,
+ (u_long)set_wait, (u_long)set_nowait);
+ }
+#endif
+}
+
+/*
+ * data_on --
+ * Map in or allocate the backing data space.
+ */
+void
+data_on(gm_addrp, tm_addrp, lm_addrp, fhpp, init)
+ u_int8_t **gm_addrp, **tm_addrp, **lm_addrp;
+ DB_FH **fhpp;
+ int init;
+{
+ DB_FH *fhp;
+ size_t nwrite;
+ int err;
+ void *addr;
+
+ fhp = NULL;
+
+ /*
+ * In a single process, use heap memory.
+ */
+ if (nprocs == 1) {
+ if (init) {
+ if ((err =
+ __os_calloc(dbenv, (size_t)len, 1, &addr)) != 0)
+ exit(EXIT_FAILURE);
+ } else {
+ fprintf(stderr,
+ "%s: init should be set for single process call\n",
+ progname);
+ exit(EXIT_FAILURE);
+ }
+ } else {
+ if (init) {
+ if (verbose)
+ printf("Create the backing file.\n");
+
+ if ((err = __os_open(dbenv, MT_FILE, 0,
+ DB_OSO_CREATE | DB_OSO_TRUNC, 0666, &fhp)) == -1) {
+ fprintf(stderr, "%s: %s: open: %s\n",
+ progname, MT_FILE, db_strerror(err));
+ exit(EXIT_FAILURE);
+ }
+
+ if ((err = __os_seek(dbenv, fhp, 0, 0, len)) != 0 ||
+ (err =
+ __os_write(dbenv, fhp, &err, 1, &nwrite)) != 0 ||
+ nwrite != 1) {
+ fprintf(stderr, "%s: %s: seek/write: %s\n",
+ progname, MT_FILE, db_strerror(err));
+ exit(EXIT_FAILURE);
+ }
+ } else
+ if ((err =
+ __os_open(dbenv, MT_FILE, 0, 0, 0, &fhp)) != 0)
+ exit(EXIT_FAILURE);
+
+ if ((err =
+ __os_mapfile(dbenv, MT_FILE, fhp, len, 0, &addr)) != 0)
+ exit(EXIT_FAILURE);
+ }
+
+ *gm_addrp = (u_int8_t *)addr;
+ addr = (u_int8_t *)addr + sizeof(TM);
+ *tm_addrp = (u_int8_t *)addr;
+ addr = (u_int8_t *)addr + sizeof(TM) * (nthreads * nprocs);
+ *lm_addrp = (u_int8_t *)addr;
+
+ if (fhpp != NULL)
+ *fhpp = fhp;
+}
+
+/*
+ * data_off --
+ * Discard or de-allocate the backing data space.
+ */
+void
+data_off(addr, fhp)
+ u_int8_t *addr;
+ DB_FH *fhp;
+{
+ if (nprocs == 1)
+ __os_free(dbenv, addr);
+ else {
+ if (__os_unmapfile(dbenv, addr, len) != 0)
+ exit(EXIT_FAILURE);
+ if (__os_closehandle(dbenv, fhp) != 0)
+ exit(EXIT_FAILURE);
+ }
+}
+
+/*
+ * usage --
+ *
+ */
+int
+usage()
+{
+ fprintf(stderr, "usage: %s %s\n\t%s\n", progname,
+ "[-v] [-l maxlocks]",
+ "[-n locks] [-p procs] [-T locker=ID|wakeup=ID] [-t threads]");
+ return (EXIT_FAILURE);
+}
+
+/*
+ * os_wait --
+ * Wait for an array of N procs.
+ */
+int
+os_wait(procs, n)
+ os_pid_t *procs;
+ u_int n;
+{
+ u_int i;
+ int status;
+#if defined(DB_WIN32)
+ DWORD ret;
+#endif
+
+ status = 0;
+
+#if defined(DB_WIN32)
+ do {
+ ret = WaitForMultipleObjects(n, procs, FALSE, INFINITE);
+ i = ret - WAIT_OBJECT_0;
+ if (i < 0 || i >= n)
+ return (__os_posix_err(__os_get_syserr()));
+
+ if ((GetExitCodeProcess(procs[i], &ret) == 0) || (ret != 0))
+ return (ret);
+
+ /* remove the process handle from the list */
+ while (++i < n)
+ procs[i - 1] = procs[i];
+ } while (--n);
+#elif !defined(HAVE_VXWORKS)
+ do {
+ if (wait(&status) == -1)
+ return (__os_posix_err(__os_get_syserr()));
+
+ if (WIFEXITED(status) == 0 || WEXITSTATUS(status) != 0) {
+ for (i = 0; i < n; i++)
+ (void)kill(procs[i], SIGKILL);
+ return (WEXITSTATUS(status));
+ }
+ } while (--n);
+#endif
+
+ return (0);
+}
+
+os_pid_t
+spawn_proc(id, tmpath, typearg)
+ u_long id;
+ char *tmpath, *typearg;
+{
+ char lbuf[16], nbuf[16], pbuf[16], tbuf[16], Tbuf[256];
+ char *const vbuf = verbose ? "-v" : NULL;
+ char *args[] = { NULL /* tmpath */,
+ "-l", NULL /* lbuf */, "-n", NULL /* nbuf */,
+ "-p", NULL /* pbuf */, "-t", NULL /* tbuf */,
+ "-T", NULL /* Tbuf */, NULL /* vbuf */,
+ NULL
+ };
+
+ args[0] = tmpath;
+ snprintf(lbuf, sizeof(lbuf), "%d", maxlocks);
+ args[2] = lbuf;
+ snprintf(nbuf, sizeof(nbuf), "%d", nlocks);
+ args[4] = nbuf;
+ snprintf(pbuf, sizeof(pbuf), "%d", nprocs);
+ args[6] = pbuf;
+ snprintf(tbuf, sizeof(tbuf), "%d", nthreads);
+ args[8] = tbuf;
+ snprintf(Tbuf, sizeof(Tbuf), "%s=%lu", typearg, id);
+ args[10] = Tbuf;
+ args[11] = vbuf;
+
+ return (os_spawn(tmpath, args));
+}
+
+os_pid_t
+os_spawn(path, argv)
+ const char *path;
+ char *const argv[];
+{
+ os_pid_t pid;
+ int status;
+
+ COMPQUIET(pid, 0);
+ COMPQUIET(status, 0);
+
+#ifdef HAVE_VXWORKS
+ fprintf(stderr, "%s: os_spawn not supported for VxWorks.\n", progname);
+ return (OS_BAD_PID);
+#elif defined(HAVE_QNX)
+ /*
+ * For QNX, we cannot fork if we've ever used threads. So
+ * we'll use their spawn function. We use 'spawnl' which
+ * is NOT a POSIX function.
+ *
+ * The return value of spawnl is just what we want depending
+ * on the value of the 'wait' arg.
+ */
+ return (spawnv(P_NOWAIT, path, argv));
+#elif defined(DB_WIN32)
+ return (os_pid_t)(_spawnv(P_NOWAIT, path, argv));
+#else
+ if ((pid = fork()) != 0) {
+ if (pid == -1)
+ return (OS_BAD_PID);
+ return (pid);
+ } else {
+ (void)execv(path, argv);
+ exit(EXIT_FAILURE);
+ }
+#endif
+}
diff --git a/db/mutex/tm.c b/db/mutex/tm.c
deleted file mode 100644
index de647fa1f..000000000
--- a/db/mutex/tm.c
+++ /dev/null
@@ -1,1010 +0,0 @@
-/*
- * Standalone mutex tester for Berkeley DB mutexes.
- *
- * $Id: tm.c,v 12.14 2006/07/17 15:16:46 bostic Exp $
- */
-
-#include "db_config.h"
-
-#include "db_int.h"
-
-#include <sys/wait.h>
-
-#if defined(MUTEX_THREAD_TEST)
-#include <pthread.h>
-#endif
-
-#ifdef DB_WIN32
-extern int getopt(int, char * const *, const char *);
-
-typedef HANDLE os_pid_t;
-typedef HANDLE os_thread_t;
-
-#define os_thread_create(thrp, attr, func, arg) \
- (((*(thrp) = CreateThread(NULL, 0, \
- (LPTHREAD_START_ROUTINE)(func), (arg), 0, NULL)) == NULL) ? -1 : 0)
-#define os_thread_join(thr, statusp) \
- ((WaitForSingleObject((thr), INFINITE) == WAIT_OBJECT_0) && \
- GetExitCodeThread((thr), (LPDWORD)(statusp)) ? 0 : -1)
-#define os_thread_self() GetCurrentThreadId()
-
-#else /* !DB_WIN32 */
-
-typedef pid_t os_pid_t;
-
-#ifdef MUTEX_THREAD_TEST
-typedef pthread_t os_thread_t;
-#endif
-
-#define os_thread_create(thrp, attr, func, arg) \
- pthread_create((thrp), (attr), (func), (arg))
-#define os_thread_join(thr, statusp) pthread_join((thr), (statusp))
-#define os_thread_self() pthread_self()
-#endif
-
-#define OS_BAD_PID (os_pid_t)-1
-
-#define TESTDIR "TESTDIR" /* Working area */
-#define MT_FILE "TESTDIR/mutex.file"
-#define MT_FILE_QUIT "TESTDIR/mutex.file.quit"
-
-/*
- * The backing file layout:
- * TM[1] per-thread mutex array lock
- * TM[nthreads] per-thread mutex array
- * TM[maxlocks] per-lock mutex array
- */
-typedef struct {
- db_mutex_t mutex; /* Mutex. */
- u_long id; /* Holder's ID. */
- u_int wakeme; /* Request to awake. */
-} TM;
-
-DB_ENV *dbenv; /* Backing environment */
-size_t len; /* Backing file size. */
-
-u_int8_t *gm_addr; /* Global mutex */
-u_int8_t *lm_addr; /* Locker mutexes */
-u_int8_t *tm_addr; /* Thread mutexes */
-
-#ifdef MUTEX_THREAD_TEST
-os_thread_t *kidsp; /* Locker threads */
-os_thread_t wakep; /* Wakeup thread */
-#endif
-
-int maxlocks = 20; /* -l: Backing locks. */
-int nlocks = 10000; /* -n: Locks per processes. */
-int nprocs = 20; /* -p: Processes. */
-int nthreads = 1; /* -t: Threads. */
-int verbose; /* -v: Verbosity. */
-
-int locker_start(u_long);
-int locker_wait(void);
-void map_file(u_int8_t **, u_int8_t **, u_int8_t **, DB_FH **);
-os_pid_t os_spawn(const char *, char *const[]);
-int os_wait(os_pid_t *, int);
-void *run_lthread(void *);
-void *run_wthread(void *);
-os_pid_t spawn_proc(u_long, char *, char *);
-void tm_env_close(void);
-int tm_env_init(void);
-void tm_file_init(void);
-void tm_mutex_destroy(void);
-void tm_mutex_init(void);
-void tm_mutex_stats(void);
-void unmap_file(u_int8_t *, DB_FH *);
-int usage(void);
-int wakeup_start(u_long);
-int wakeup_wait(void);
-
-int
-main(argc, argv)
- int argc;
- char *argv[];
-{
- enum {LOCKER, WAKEUP, PARENT} rtype;
- extern int optind;
- extern char *optarg;
- os_pid_t wakeup_pid, *pids;
- u_long id;
- DB_FH *fhp, *map_fhp;
- int ch, err, i;
- char *p, *tmpath, cmd[1024];
-
- rtype = PARENT;
- id = 0;
- tmpath = argv[0];
- while ((ch = getopt(argc, argv, "l:n:p:T:t:v")) != EOF)
- switch (ch) {
- case 'l':
- maxlocks = atoi(optarg);
- break;
- case 'n':
- nlocks = atoi(optarg);
- break;
- case 'p':
- nprocs = atoi(optarg);
- break;
- case 't':
- if ((nthreads = atoi(optarg)) == 0)
- nthreads = 1;
-#if !defined(MUTEX_THREAD_TEST)
- if (nthreads != 1) {
- (void)fprintf(stderr,
- "tm: thread support not available or not compiled for this platform.\n");
- return (EXIT_FAILURE);
- }
-#endif
- break;
- case 'T':
- if (!memcmp(optarg, "locker", sizeof("locker") - 1))
- rtype = LOCKER;
- else if (
- !memcmp(optarg, "wakeup", sizeof("wakeup") - 1))
- rtype = WAKEUP;
- else
- return (usage());
- if ((p = strchr(optarg, '=')) == NULL)
- return (usage());
- id = atoi(p + 1);
- break;
- case 'v':
- verbose = 1;
- break;
- case '?':
- default:
- return (usage());
- }
- argc -= optind;
- argv += optind;
-
- /*
- * If we're not running a multi-process test, we should be running
- * a multi-thread test.
- */
- if (nprocs == 1 && nthreads == 1) {
- fprintf(stderr,
- "tm: running in a single process requires multiple threads\n");
- return (EXIT_FAILURE);
- }
-
- len = sizeof(TM) * (1 + nthreads * nprocs + maxlocks);
-
- /*
- * In the multi-process test, the parent spawns processes that exec
- * the original binary, ending up here. Each process joins the DB
- * environment separately and then calls the supporting function.
- */
- if (rtype == LOCKER || rtype == WAKEUP) {
- __os_sleep(dbenv, 3, 0); /* Let everyone catch up. */
- /* Initialize random numbers. */
- srand((u_int)time(NULL) % getpid());
-
- if (tm_env_init() != 0) /* Join the environment. */
- exit(EXIT_FAILURE);
- /* Join the backing file. */
- map_file(&gm_addr, &tm_addr, &lm_addr, &map_fhp);
- if (verbose)
- printf(
- "Backing file: global (%#lx), threads (%#lx), locks (%#lx)\n",
- (u_long)gm_addr, (u_long)tm_addr, (u_long)lm_addr);
-
- if ((rtype == LOCKER ?
- locker_start(id) : wakeup_start(id)) != 0)
- exit(EXIT_FAILURE);
- if ((rtype == LOCKER ? locker_wait() : wakeup_wait()) != 0)
- exit(EXIT_FAILURE);
-
- unmap_file(gm_addr, map_fhp); /* Detach from backing file. */
-
- tm_env_close(); /* Detach from environment. */
-
- exit(EXIT_SUCCESS);
- }
-
- /*
- * The following code is only executed by the original parent process.
- *
- * Clean up from any previous runs.
- */
- snprintf(cmd, sizeof(cmd), "rm -rf %s", TESTDIR);
- (void)system(cmd);
- snprintf(cmd, sizeof(cmd), "mkdir %s", TESTDIR);
- (void)system(cmd);
-
- printf(
- "tm: %d processes, %d threads/process, %d lock requests from %d locks\n",
- nprocs, nthreads, nlocks, maxlocks);
- printf("tm: backing file %lu bytes\n", (u_long)len);
-
- if (tm_env_init() != 0) /* Create the environment. */
- exit(EXIT_FAILURE);
-
- tm_file_init(); /* Initialize backing file. */
-
- /* Map in the backing file. */
- map_file(&gm_addr, &tm_addr, &lm_addr, &map_fhp);
- if (verbose)
- printf(
- "backing file: global (%#lx), threads (%#lx), locks (%#lx)\n",
- (u_long)gm_addr, (u_long)tm_addr, (u_long)lm_addr);
-
- tm_mutex_init(); /* Initialize mutexes. */
-
- if (nprocs > 1) { /* Run the multi-process test. */
- /* Allocate array of locker process IDs. */
- if ((pids = calloc(nprocs, sizeof(os_pid_t))) == NULL) {
- fprintf(stderr, "tm: %s\n", strerror(errno));
- goto fail;
- }
-
- /* Spawn locker processes and threads. */
- for (i = 0; i < nprocs; ++i) {
- if ((pids[i] =
- spawn_proc(id, tmpath, "locker")) == OS_BAD_PID) {
- fprintf(stderr,
- "tm: failed to spawn a locker\n");
- goto fail;
- }
- id += nthreads;
- }
-
- /* Spawn wakeup process/thread. */
- if ((wakeup_pid =
- spawn_proc(id, tmpath, "wakeup")) == OS_BAD_PID) {
- fprintf(stderr, "tm: failed to spawn waker\n");
- goto fail;
- }
- ++id;
-
- /* Wait for all lockers to exit. */
- if ((err = os_wait(pids, nprocs)) != 0) {
- fprintf(stderr, "locker wait failed with %d\n", err);
- goto fail;
- }
-
- /* Signal wakeup process to exit. */
- if ((err = __os_open(
- dbenv, MT_FILE_QUIT, DB_OSO_CREATE, 0664, &fhp)) != 0) {
- fprintf(stderr, "tm: open %s\n", db_strerror(err));
- goto fail;
- }
- (void)__os_closehandle(dbenv, fhp);
-
- /* Wait for wakeup process/thread. */
- if ((err = os_wait(&wakeup_pid, 1)) != 0) {
- fprintf(stderr,
- "%lu: exited %d\n", (u_long)wakeup_pid, err);
- goto fail;
- }
- } else { /* Run the single-process test. */
- /* Spawn locker threads. */
- if (locker_start(0) != 0)
- goto fail;
-
- /* Spawn wakeup thread. */
- if (wakeup_start(nthreads) != 0)
- goto fail;
-
- /* Wait for all lockers to exit. */
- if (locker_wait() != 0)
- goto fail;
-
- /* Signal wakeup process to exit. */
- if ((err = __os_open(
- dbenv, MT_FILE_QUIT, DB_OSO_CREATE, 0664, &fhp)) != 0) {
- fprintf(stderr, "tm: open %s\n", db_strerror(err));
- goto fail;
- }
- (void)__os_closehandle(dbenv, fhp);
-
- /* Wait for wakeup thread. */
- if (wakeup_wait() != 0)
- goto fail;
- }
-
- tm_mutex_stats(); /* Display run statistics. */
- tm_mutex_destroy(); /* Destroy mutexes. */
-
- unmap_file(gm_addr, map_fhp); /* Detach from backing file. */
-
- tm_env_close(); /* Detach from environment. */
-
- printf("tm: test succeeded\n");
- return (EXIT_SUCCESS);
-
-fail: printf("tm: FAILED!\n");
- return (EXIT_FAILURE);
-}
-
-int
-locker_start(id)
- u_long id;
-{
-#if defined(MUTEX_THREAD_TEST)
- int err, i;
-
- /*
- * Spawn off threads. We have nthreads all locking and going to
- * sleep, and one other thread cycling through and waking them up.
- */
- if ((kidsp =
- (os_thread_t *)calloc(sizeof(os_thread_t), nthreads)) == NULL) {
- fprintf(stderr, "tm: %s\n", strerror(errno));
- return (1);
- }
- for (i = 0; i < nthreads; i++)
- if ((err = os_thread_create(
- &kidsp[i], NULL, run_lthread, (void *)(id + i))) != 0) {
- fprintf(stderr, "tm: failed spawning thread: %s\n",
- db_strerror(err));
- return (1);
- }
- return (0);
-#else
- return (run_lthread((void *)id) == NULL ? 0 : 1);
-#endif
-}
-
-int
-locker_wait()
-{
-#if defined(MUTEX_THREAD_TEST)
- int i;
- void *retp;
-
- /* Wait for the threads to exit. */
- for (i = 0; i < nthreads; i++) {
- os_thread_join(kidsp[i], &retp);
- if (retp != NULL) {
- fprintf(stderr, "tm: thread exited with error\n");
- return (1);
- }
- }
- free(kidsp);
-#endif
- return (0);
-}
-
-void *
-run_lthread(arg)
- void *arg;
-{
- TM *gp, *mp, *tp;
- u_long id, tid;
- int err, i, lock, nl;
-
- id = (uintptr_t)arg;
-#if defined(MUTEX_THREAD_TEST)
- tid = (u_long)os_thread_self();
-#else
- tid = 0;
-#endif
- printf("Locker: ID %03lu (PID: %lu; TID: %lx)\n",
- id, (u_long)getpid(), tid);
-
- gp = (TM *)gm_addr;
- tp = (TM *)(tm_addr + id * sizeof(TM));
-
- for (nl = nlocks; nl > 0;) {
- /* Select and acquire a data lock. */
- lock = rand() % maxlocks;
- mp = (TM *)(lm_addr + lock * sizeof(TM));
- if (verbose)
- printf("%03lu: lock %d (mtx: %lu)\n",
- id, lock, (u_long)mp->mutex);
-
- if ((err = dbenv->mutex_lock(dbenv, mp->mutex)) != 0) {
- fprintf(stderr, "%03lu: never got lock %d: %s\n",
- id, lock, db_strerror(err));
- return ((void *)1);
- }
- if (mp->id != 0) {
- fprintf(stderr,
- "RACE! (%03lu granted lock %d held by %03lu)\n",
- id, lock, mp->id);
- return ((void *)1);
- }
- mp->id = id;
-
- /*
- * Pretend to do some work, periodically checking to see if
- * we still hold the mutex.
- */
- for (i = 0; i < 3; ++i) {
- __os_sleep(dbenv, 0, rand() % 3);
- if (mp->id != id) {
- fprintf(stderr,
- "RACE! (%03lu stole lock %d from %03lu)\n",
- mp->id, lock, id);
- return ((void *)1);
- }
- }
-
- /*
- * Test self-blocking and unlocking by other threads/processes:
- *
- * acquire the global lock
- * set our wakeup flag
- * release the global lock
- * acquire our per-thread lock
- *
- * The wakeup thread will wake us up.
- */
- if ((err = dbenv->mutex_lock(dbenv, gp->mutex)) != 0) {
- fprintf(stderr,
- "%03lu: global lock: %s\n", id, db_strerror(err));
- return ((void *)1);
- }
- if (tp->id != 0 && tp->id != id) {
- fprintf(stderr,
- "%03lu: per-thread mutex isn't mine, owned by %03lu\n",
- id, tp->id);
- return ((void *)1);
- }
- tp->id = id;
- if (verbose)
- printf("%03lu: self-blocking (mtx: %lu)\n",
- id, (u_long)tp->mutex);
- if (tp->wakeme) {
- fprintf(stderr,
- "%03lu: wakeup flag incorrectly set\n", id);
- return ((void *)1);
- }
- tp->wakeme = 1;
- if ((err = dbenv->mutex_unlock(dbenv, gp->mutex)) != 0) {
- fprintf(stderr,
- "%03lu: global unlock: %s\n", id, db_strerror(err));
- return ((void *)1);
- }
- if ((err = dbenv->mutex_lock(dbenv, tp->mutex)) != 0) {
- fprintf(stderr, "%03lu: per-thread lock: %s\n",
- id, db_strerror(err));
- return ((void *)1);
- }
- /* Time passes... */
- if (tp->wakeme) {
- fprintf(stderr, "%03lu: wakeup flag not cleared\n", id);
- return ((void *)1);
- }
-
- if (verbose)
- printf("%03lu: release %d (mtx: %lu)\n",
- id, lock, (u_long)mp->mutex);
-
- /* Release the data lock. */
- mp->id = 0;
- if ((err = dbenv->mutex_unlock(dbenv, mp->mutex)) != 0) {
- fprintf(stderr,
- "%03lu: lock release: %s\n", id, db_strerror(err));
- return ((void *)1);
- }
-
- if (--nl % 100 == 0) {
- fprintf(stderr, "%03lu: %d\n", id, nl);
- /*
- * Windows buffers stderr and the output looks wrong
- * without this.
- */
- fflush(stderr);
- }
- }
-
- return (NULL);
-}
-
-int
-wakeup_start(id)
- u_long id;
-{
-#if defined(MUTEX_THREAD_TEST)
- int err;
-
- /*
- * Spawn off wakeup thread.
- */
- if ((err = os_thread_create(
- &wakep, NULL, run_wthread, (void *)id)) != 0) {
- fprintf(stderr, "tm: failed spawning wakeup thread: %s\n",
- db_strerror(err));
- return (1);
- }
- return (0);
-#else
- return (run_wthread((void *)id) == NULL ? 0 : 1);
-#endif
-}
-
-int
-wakeup_wait()
-{
-#if defined(MUTEX_THREAD_TEST)
- void *retp;
-
- /*
- * A file is created when the wakeup thread is no longer needed.
- */
- os_thread_join(wakep, &retp);
- if (retp != NULL) {
- fprintf(stderr, "tm: wakeup thread exited with error\n");
- return (1);
- }
-#endif
- return (0);
-}
-
-/*
- * run_wthread --
- * Thread to wake up other threads that are sleeping.
- */
-void *
-run_wthread(arg)
- void *arg;
-{
- TM *gp, *tp;
- u_long id, tid;
- int check_id, err;
-
- id = (uintptr_t)arg;
-#if defined(MUTEX_THREAD_TEST)
- tid = (u_long)os_thread_self();
-#else
- tid = 0;
-#endif
- printf("Wakeup: ID %03lu (PID: %lu; TID: %lx)\n",
- id, (u_long)getpid(), tid);
-
- gp = (TM *)gm_addr;
-
- /* Loop, waking up sleepers and periodically sleeping ourselves. */
- for (check_id = 0;; ++check_id) {
- /* Check to see if the locking threads have finished. */
- if (__os_exists(dbenv, MT_FILE_QUIT, NULL) == 0)
- break;
-
- /* Check for ID wraparound. */
- if (check_id == nthreads * nprocs)
- check_id = 0;
-
- /* Check for a thread that needs a wakeup. */
- tp = (TM *)(tm_addr + check_id * sizeof(TM));
- if (!tp->wakeme)
- continue;
-
- if (verbose) {
- printf("%03lu: wakeup thread %03lu (mtx: %lu)\n",
- id, tp->id, (u_long)tp->mutex);
- fflush(stdout);
- }
-
- /* Acquire the global lock. */
- if ((err = dbenv->mutex_lock(dbenv, gp->mutex)) != 0) {
- fprintf(stderr,
- "wakeup: global lock: %s\n", db_strerror(err));
- return ((void *)1);
- }
-
- tp->wakeme = 0;
- if ((err = dbenv->mutex_unlock(dbenv, tp->mutex)) != 0) {
- fprintf(stderr,
- "wakeup: unlock: %s\n", db_strerror(err));
- return ((void *)1);
- }
-
- if ((err = dbenv->mutex_unlock(dbenv, gp->mutex))) {
- fprintf(stderr,
- "wakeup: global unlock: %s\n", db_strerror(err));
- return ((void *)1);
- }
-
- __os_sleep(dbenv, 0, rand() % 3);
- }
- return (NULL);
-}
-
-/*
- * tm_env_init --
- * Create the backing database environment.
- */
-int
-tm_env_init()
-{
- u_int32_t flags;
- int ret;
- char *home;
-
- /*
- * Create an environment object and initialize it for error
- * reporting.
- */
- if ((ret = db_env_create(&dbenv, 0)) != 0) {
- fprintf(stderr, "tm: %s\n", db_strerror(ret));
- return (1);
- }
- dbenv->set_errfile(dbenv, stderr);
- dbenv->set_errpfx(dbenv, "tm");
-
- /* Allocate enough mutexes. */
- if ((ret = dbenv->mutex_set_increment(dbenv,
- 1 + nthreads * nprocs + maxlocks)) != 0) {
- dbenv->err(dbenv, ret, "dbenv->mutex_set_increment");
- return (1);
- }
-
- flags = DB_CREATE;
- if (nprocs == 1) {
- home = NULL;
- flags |= DB_PRIVATE;
- } else
- home = TESTDIR;
- if (nthreads != 1)
- flags |= DB_THREAD;
- if ((ret = dbenv->open(dbenv, home, flags, 0)) != 0) {
- dbenv->err(dbenv, ret, "environment open: %s", home);
- return (1);
- }
-
- return (0);
-}
-
-/*
- * tm_env_close --
- * Close the backing database environment.
- */
-void
-tm_env_close()
-{
- (void)dbenv->close(dbenv, 0);
-}
-
-/*
- * tm_file_init --
- * Initialize the backing file.
- */
-void
-tm_file_init()
-{
- DB_FH *fhp;
- int err;
- size_t nwrite;
-
- /* Initialize the backing file. */
- if (verbose)
- printf("Create the backing file.\n");
-
- (void)unlink(MT_FILE);
-
- if ((err = __os_open(dbenv, MT_FILE,
- DB_OSO_CREATE | DB_OSO_TRUNC, 0666, &fhp)) == -1) {
- (void)fprintf(stderr,
- "%s: open: %s\n", MT_FILE, db_strerror(err));
- exit(EXIT_FAILURE);
- }
-
- if ((err = __os_seek(dbenv, fhp, 0, 0, len)) != 0 ||
- (err = __os_write(dbenv, fhp, &err, 1, &nwrite)) != 0 ||
- nwrite != 1) {
- (void)fprintf(stderr,
- "%s: seek/write: %s\n", MT_FILE, db_strerror(err));
- exit(EXIT_FAILURE);
- }
- (void)__os_closehandle(dbenv, fhp);
-}
-
-/*
- * tm_mutex_init --
- * Initialize the mutexes.
- */
-void
-tm_mutex_init()
-{
- TM *mp;
- int err, i;
-
- if (verbose)
- printf("Allocate the global mutex: ");
- mp = (TM *)gm_addr;
- if ((err = dbenv->mutex_alloc(dbenv, 0, &mp->mutex)) != 0) {
- fprintf(stderr,
- "DB_ENV->mutex_alloc (global): %s\n", db_strerror(err));
- exit(EXIT_FAILURE);
- }
- if (verbose)
- printf("%lu\n", (u_long)mp->mutex);
-
- if (verbose)
- printf(
- "Allocate %d per-thread, self-blocking mutexes: ",
- nthreads * nprocs);
- for (i = 0; i < nthreads * nprocs; ++i) {
- mp = (TM *)(tm_addr + i * sizeof(TM));
- if ((err = dbenv->mutex_alloc(
- dbenv, DB_MUTEX_SELF_BLOCK, &mp->mutex)) != 0) {
- fprintf(stderr,
- "DB_ENV->mutex_alloc (per-thread %d): %s\n",
- i, db_strerror(err));
- exit(EXIT_FAILURE);
- }
- if ((err = dbenv->mutex_lock(dbenv, mp->mutex)) != 0) {
- fprintf(stderr,
- "DB_ENV->mutex_lock (per-thread %d): %s\n",
- i, db_strerror(err));
- exit(EXIT_FAILURE);
- }
- if (verbose)
- printf("%lu ", (u_long)mp->mutex);
- }
- if (verbose)
- printf("\n");
-
- if (verbose)
- printf("Allocate %d per-lock mutexes: ", maxlocks);
- for (i = 0; i < maxlocks; ++i) {
- mp = (TM *)(lm_addr + i * sizeof(TM));
- if ((err = dbenv->mutex_alloc(dbenv, 0, &mp->mutex)) != 0) {
- fprintf(stderr,
- "DB_ENV->mutex_alloc (per-lock: %d): %s\n",
- i, db_strerror(err));
- exit(EXIT_FAILURE);
- }
- if (verbose)
- printf("%lu ", (u_long)mp->mutex);
- }
- if (verbose)
- printf("\n");
-}
-
-/*
- * tm_mutex_destroy --
- * Destroy the mutexes.
- */
-void
-tm_mutex_destroy()
-{
- TM *gp, *mp;
- int err, i;
-
- if (verbose)
- printf("Destroy the global mutex.\n");
- gp = (TM *)gm_addr;
- if ((err = dbenv->mutex_free(dbenv, gp->mutex)) != 0) {
- fprintf(stderr,
- "DB_ENV->mutex_free (global): %s\n", db_strerror(err));
- exit(EXIT_FAILURE);
- }
-
- if (verbose)
- printf("Destroy the per-thread mutexes.\n");
- for (i = 0; i < nthreads * nprocs; ++i) {
- mp = (TM *)(tm_addr + i * sizeof(TM));
- if ((err = dbenv->mutex_free(dbenv, mp->mutex)) != 0) {
- fprintf(stderr,
- "DB_ENV->mutex_free (per-thread %d): %s\n",
- i, db_strerror(err));
- exit(EXIT_FAILURE);
- }
- }
-
- if (verbose)
- printf("Destroy the per-lock mutexes.\n");
- for (i = 0; i < maxlocks; ++i) {
- mp = (TM *)(lm_addr + i * sizeof(TM));
- if ((err = dbenv->mutex_free(dbenv, mp->mutex)) != 0) {
- fprintf(stderr,
- "DB_ENV->mutex_free (per-lock: %d): %s\n",
- i, db_strerror(err));
- exit(EXIT_FAILURE);
- }
- }
-
- (void)unlink(MT_FILE);
-}
-
-/*
- * tm_mutex_stats --
- * Display mutex statistics.
- */
-void
-tm_mutex_stats()
-{
-#ifdef HAVE_STATISTICS
- TM *mp;
- int i;
- u_int32_t set_wait, set_nowait;
-
- printf("Per-lock mutex statistics.\n");
- for (i = 0; i < maxlocks; ++i) {
- mp = (TM *)(lm_addr + i * sizeof(TM));
- __mutex_set_wait_info(dbenv, mp->mutex, &set_wait, &set_nowait);
- printf("mutex %2d: wait: %lu; no wait %lu\n", i,
- (u_long)set_wait, (u_long)set_nowait);
- }
-#endif
-}
-
-/*
- * map_file --
- * Map in the backing file.
- */
-void
-map_file(gm_addrp, tm_addrp, lm_addrp, fhpp)
- u_int8_t **gm_addrp, **tm_addrp, **lm_addrp;
- DB_FH **fhpp;
-{
- void *addr;
- DB_FH *fhp;
- int err;
-
-#ifndef MAP_FAILED
-#define MAP_FAILED (void *)-1
-#endif
-#ifndef MAP_FILE
-#define MAP_FILE 0
-#endif
- if ((err = __os_open(dbenv, MT_FILE, 0, 0, &fhp)) != 0) {
- fprintf(stderr, "%s: open %s\n", MT_FILE, db_strerror(err));
- exit(EXIT_FAILURE);
- }
-
- if ((err = __os_mapfile(dbenv, MT_FILE, fhp, len, 0, &addr)) != 0) {
- fprintf(stderr, "%s: mmap: %s\n", MT_FILE, db_strerror(err));
- exit(EXIT_FAILURE);
- }
-
- *gm_addrp = (u_int8_t *)addr;
- addr = (u_int8_t *)addr + sizeof(TM);
- *tm_addrp = (u_int8_t *)addr;
- addr = (u_int8_t *)addr + sizeof(TM) * (nthreads * nprocs);
- *lm_addrp = (u_int8_t *)addr;
-
- if (fhpp != NULL)
- *fhpp = fhp;
-}
-
-/*
- * unmap_file --
- * Discard backing file map.
- */
-void
-unmap_file(addr, fhp)
- u_int8_t *addr;
- DB_FH *fhp;
-{
- int err;
-
- if ((err = __os_unmapfile(dbenv, addr, len)) != 0) {
- fprintf(stderr, "munmap: %s\n", db_strerror(err));
- exit(EXIT_FAILURE);
- }
- if ((err = __os_closehandle(dbenv, fhp)) != 0) {
- fprintf(stderr, "close: %s\n", db_strerror(err));
- exit(EXIT_FAILURE);
- }
-}
-
-/*
- * usage --
- *
- */
-int
-usage()
-{
- (void)fprintf(stderr, "%s\n\t%s\n",
- "usage: tm [-v] [-l maxlocks]",
- "[-n locks] [-p procs] [-T locker=ID|wakeup=ID] [-t threads]");
- return (EXIT_FAILURE);
-}
-
-/*
- * os_wait --
- * Wait for an array of N procs.
- */
-int
-os_wait(procs, nprocs)
- os_pid_t *procs;
- int nprocs;
-{
- int i, status;
-#if defined(DB_WIN32)
- DWORD ret;
-#endif
-
- status = 0;
-
-#if defined(DB_WIN32)
- do {
- ret = WaitForMultipleObjects(nprocs, procs, FALSE, INFINITE);
- i = ret - WAIT_OBJECT_0;
- if (i < 0 || i >= nprocs)
- return (__os_posix_err(__os_get_syserr()));
-
- if ((GetExitCodeProcess(procs[i], &ret) == 0) || (ret != 0))
- return (ret);
-
- /* remove the process handle from the list */
- while (++i < nprocs)
- procs[i - 1] = procs[i];
- } while (--nprocs);
-#elif !defined(HAVE_VXWORKS)
- do {
- if ((i = wait(&status)) == -1)
- return (__os_posix_err(__os_get_syserr()));
-
- if (WIFEXITED(status) == 0 || WEXITSTATUS(status) != 0) {
- for (i = 0; i < nprocs; i++)
- kill(procs[i], SIGKILL);
- return (WEXITSTATUS(status));
- }
- } while (--nprocs);
-#endif
-
- return (0);
-}
-
-os_pid_t
-spawn_proc(id, tmpath, typearg)
- u_long id;
- char *tmpath, *typearg;
-{
- char lbuf[16], nbuf[16], pbuf[16], tbuf[16], Tbuf[256];
- char *const vbuf = verbose ? "-v" : NULL;
- char *args[] = { NULL /* tmpath */,
- "-l", NULL /* lbuf */, "-n", NULL /* nbuf */,
- "-p", NULL /* pbuf */, "-t", NULL /* tbuf */,
- "-T", NULL /* Tbuf */, NULL /* vbuf */,
- NULL
- };
-
- args[0] = tmpath;
- snprintf(lbuf, sizeof(lbuf), "%d", maxlocks);
- args[2] = lbuf;
- snprintf(nbuf, sizeof(nbuf), "%d", nlocks);
- args[4] = nbuf;
- snprintf(pbuf, sizeof(pbuf), "%d", nprocs);
- args[6] = pbuf;
- snprintf(tbuf, sizeof(tbuf), "%d", nthreads);
- args[8] = tbuf;
- snprintf(Tbuf, sizeof(Tbuf), "%s=%lu", typearg, id);
- args[10] = Tbuf;
- args[11] = vbuf;
-
- return (os_spawn(tmpath, args));
-}
-
-os_pid_t
-os_spawn(path, argv)
- const char *path;
- char *const argv[];
-{
- os_pid_t pid;
- int status;
-
- COMPQUIET(pid, 0);
- COMPQUIET(status, 0);
-
-#ifdef HAVE_VXWORKS
- fprintf(stderr, "ERROR: os_spawn not supported for VxWorks.\n");
- return (OS_BAD_PID);
-#elif defined(HAVE_QNX)
- /*
- * For QNX, we cannot fork if we've ever used threads. So
- * we'll use their spawn function. We use 'spawnl' which
- * is NOT a POSIX function.
- *
- * The return value of spawnl is just what we want depending
- * on the value of the 'wait' arg.
- */
- return (spawnv(P_NOWAIT, path, argv));
-#elif defined(DB_WIN32)
- return (os_pid_t)(_spawnv(P_NOWAIT, path, argv));
-#else
- if ((pid = fork()) != 0) {
- if (pid == -1)
- return (OS_BAD_PID);
- return (pid);
- } else {
- execv(path, argv);
- exit(EXIT_FAILURE);
- }
-#endif
-}
diff --git a/db/mutex/uts4_cc.s b/db/mutex/uts4_cc.s
index a8f2498ab..526ac3196 100644
--- a/db/mutex/uts4_cc.s
+++ b/db/mutex/uts4_cc.s
@@ -1,9 +1,8 @@
/ See the file LICENSE for redistribution information.
/
- / Copyright (c) 1997-2006
- / Oracle Corporation. All rights reserved.
+ / Copyright (c) 1997,2007 Oracle. All rights reserved.
/
- / $Id: uts4_cc.s,v 12.3 2006/08/24 14:46:16 bostic Exp $
+ / $Id: uts4_cc.s,v 12.5 2007/05/17 15:15:45 bostic Exp $
/
/ int uts_lock ( int *p, int i );
/ Update the lock word pointed to by p with the
diff --git a/db/os/os_abort.c b/db/os/os_abort.c
new file mode 100644
index 000000000..ba3d50a14
--- /dev/null
+++ b/db/os/os_abort.c
@@ -0,0 +1,30 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 2005,2007 Oracle. All rights reserved.
+ *
+ * $Id: os_abort.c,v 1.7 2007/05/17 15:15:46 bostic Exp $
+ */
+
+#include "db_config.h"
+
+#include "db_int.h"
+
+/*
+ * __os_abort --
+ *
+ * PUBLIC: void __os_abort __P((void));
+ */
+void
+__os_abort()
+{
+#ifdef HAVE_ABORT
+ abort(); /* Try and drop core. */
+#else
+#ifdef SIGABRT
+ (void)raise(SIGABRT); /* Try and drop core. */
+#endif
+ exit(1); /* Quit anyway. */
+ /* NOTREACHED */
+#endif
+}
diff --git a/db/os/os_abs.c b/db/os/os_abs.c
index de95da99d..e6a71ce45 100644
--- a/db/os/os_abs.c
+++ b/db/os/os_abs.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: os_abs.c,v 12.4 2006/08/24 14:46:17 bostic Exp $
+ * $Id: os_abs.c,v 12.6 2007/05/17 15:15:46 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/os/os_alloc.c b/db/os/os_alloc.c
index 868a59601..4c29b881e 100644
--- a/db/os/os_alloc.c
+++ b/db/os/os_alloc.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: os_alloc.c,v 12.8 2006/08/24 14:46:17 bostic Exp $
+ * $Id: os_alloc.c,v 12.13 2007/05/17 15:15:46 bostic Exp $
*/
#include "db_config.h"
@@ -14,10 +13,10 @@
#ifdef DIAGNOSTIC
static void __os_guard __P((DB_ENV *));
-union __db_allocinfo {
+typedef union {
size_t size;
double align;
-};
+} db_allocinfo_t;
#endif
/*
@@ -238,7 +237,7 @@ __os_malloc(dbenv, size, storep)
#ifdef DIAGNOSTIC
/* Add room for size and a guard byte. */
- size += sizeof(union __db_allocinfo) + 1;
+ size += sizeof(db_allocinfo_t) + 1;
#endif
if (DB_GLOBAL(j_malloc) != NULL)
@@ -271,8 +270,8 @@ __os_malloc(dbenv, size, storep)
*/
((u_int8_t *)p)[size - 1] = CLEAR_BYTE;
- ((union __db_allocinfo *)p)->size = size;
- p = &((union __db_allocinfo *)p)[1];
+ ((db_allocinfo_t *)p)->size = size;
+ p = &((db_allocinfo_t *)p)[1];
#endif
*(void **)storep = p;
@@ -306,15 +305,15 @@ __os_realloc(dbenv, size, storep)
#ifdef DIAGNOSTIC
/* Add room for size and a guard byte. */
- size += sizeof(union __db_allocinfo) + 1;
+ size += sizeof(db_allocinfo_t) + 1;
/* Back up to the real beginning */
- ptr = &((union __db_allocinfo *)ptr)[-1];
+ ptr = &((db_allocinfo_t *)ptr)[-1];
{
size_t s;
- s = ((union __db_allocinfo *)ptr)->size;
+ s = ((db_allocinfo_t *)ptr)->size;
if (((u_int8_t *)ptr)[s - 1] != CLEAR_BYTE)
__os_guard(dbenv);
}
@@ -345,8 +344,8 @@ __os_realloc(dbenv, size, storep)
#ifdef DIAGNOSTIC
((u_int8_t *)p)[size - 1] = CLEAR_BYTE; /* Initialize guard byte. */
- ((union __db_allocinfo *)p)->size = size;
- p = &((union __db_allocinfo *)p)[1];
+ ((db_allocinfo_t *)p)->size = size;
+ p = &((db_allocinfo_t *)p)[1];
#endif
*(void **)storep = p;
@@ -367,23 +366,31 @@ __os_free(dbenv, ptr)
{
#ifdef DIAGNOSTIC
size_t size;
+#endif
+
/*
- * Check that the guard byte (one past the end of the memory) is
- * still CLEAR_BYTE.
+ * ANSI C requires free(NULL) work. Don't depend on the underlying
+ * library.
*/
if (ptr == NULL)
return;
- ptr = &((union __db_allocinfo *)ptr)[-1];
- size = ((union __db_allocinfo *)ptr)->size;
+#ifdef DIAGNOSTIC
+ /*
+ * Check that the guard byte (one past the end of the memory) is
+ * still CLEAR_BYTE.
+ */
+ ptr = &((db_allocinfo_t *)ptr)[-1];
+ size = ((db_allocinfo_t *)ptr)->size;
if (((u_int8_t *)ptr)[size - 1] != CLEAR_BYTE)
__os_guard(dbenv);
/* Overwrite memory. */
if (size != 0)
memset(ptr, CLEAR_BYTE, size);
-#endif
+#else
COMPQUIET(dbenv, NULL);
+#endif
if (DB_GLOBAL(j_free) != NULL)
DB_GLOBAL(j_free)(ptr);
@@ -401,7 +408,7 @@ __os_guard(dbenv)
DB_ENV *dbenv;
{
__db_errx(dbenv, "Guard byte incorrect during free");
- abort();
+ __os_abort();
/* NOTREACHED */
}
#endif
diff --git a/db/os/os_clock.c b/db/os/os_clock.c
index e7feead7c..67929bfef 100644
--- a/db/os/os_clock.c
+++ b/db/os/os_clock.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2001-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2001,2007 Oracle. All rights reserved.
*
- * $Id: os_clock.c,v 12.11 2006/08/24 14:46:17 bostic Exp $
+ * $Id: os_clock.c,v 12.14 2007/05/17 15:15:46 bostic Exp $
*/
#include "db_config.h"
@@ -12,46 +11,37 @@
#include "db_int.h"
/*
- * __os_clock --
- * Return the current time-of-day clock in seconds and microseconds.
+ * __os_gettime --
+ * Return the current time-of-day clock in seconds and nanoseconds.
*
- * PUBLIC: void __os_clock __P((DB_ENV *, u_int32_t *, u_int32_t *));
+ * PUBLIC: void __os_gettime __P((DB_ENV *, db_timespec *));
*/
void
-__os_clock(dbenv, secsp, usecsp)
+__os_gettime(dbenv, tp)
DB_ENV *dbenv;
- u_int32_t *secsp, *usecsp; /* Seconds and microseconds. */
+ db_timespec *tp;
{
const char *sc;
int ret;
-#if defined(HAVE_GETTIMEOFDAY)
- struct timeval tp;
-
- RETRY_CHK((gettimeofday(&tp, NULL)), ret);
+#if defined(HAVE_CLOCK_GETTIME)
+ RETRY_CHK((clock_gettime(CLOCK_REALTIME, (struct timespec *)tp)), ret);
if (ret != 0) {
- sc = "gettimeofday";
+ sc = "clock_gettime";
goto err;
}
-
- if (secsp != NULL)
- *secsp = (u_int32_t)tp.tv_sec;
- if (usecsp != NULL)
- *usecsp = (u_int32_t)tp.tv_usec;
#endif
-#if !defined(HAVE_GETTIMEOFDAY) && defined(HAVE_CLOCK_GETTIME)
- struct timespec tp;
+#if !defined(HAVE_CLOCK_GETTIME) && defined(HAVE_GETTIMEOFDAY)
+ struct timeval v;
- RETRY_CHK((clock_gettime(CLOCK_REALTIME, &tp)), ret);
+ RETRY_CHK((gettimeofday(&v, NULL)), ret);
if (ret != 0) {
- sc = "clock_gettime";
+ sc = "gettimeofday";
goto err;
}
- if (secsp != NULL)
- *secsp = tp.tv_sec;
- if (usecsp != NULL)
- *usecsp = tp.tv_nsec / 1000;
+ tp->tv_sec = v.tv_sec;
+ tp->tv_nsec = v.tv_usec * NS_PER_US;
#endif
#if !defined(HAVE_GETTIMEOFDAY) && !defined(HAVE_CLOCK_GETTIME)
time_t now;
@@ -62,10 +52,8 @@ __os_clock(dbenv, secsp, usecsp)
goto err;
}
- if (secsp != NULL)
- *secsp = now;
- if (usecsp != NULL)
- *usecsp = 0;
+ tp->tv_sec = now;
+ tp->tv_nsec = 0;
#endif
return;
diff --git a/db/os/os_config.c b/db/os/os_config.c
index 80ddc3d46..c48d00199 100644
--- a/db/os/os_config.c
+++ b/db/os/os_config.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1998-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1998,2007 Oracle. All rights reserved.
*
- * $Id: os_config.c,v 12.6 2006/08/24 14:46:17 bostic Exp $
+ * $Id: os_config.c,v 12.8 2007/05/17 15:15:46 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/os/os_dir.c b/db/os/os_dir.c
index 2e37b61d1..39240fc23 100644
--- a/db/os/os_dir.c
+++ b/db/os/os_dir.c
@@ -1,33 +1,16 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: os_dir.c,v 12.8 2006/08/24 14:46:17 bostic Exp $
+ * $Id: os_dir.c,v 12.12 2007/05/17 15:15:46 bostic Exp $
*/
#include "db_config.h"
+#define __INCLUDE_DIRECTORY 1
#include "db_int.h"
-#if HAVE_DIRENT_H
-# include <dirent.h>
-# define NAMLEN(dirent) strlen((dirent)->d_name)
-#else
-# define dirent direct
-# define NAMLEN(dirent) (dirent)->d_namlen
-# if HAVE_SYS_NDIR_H
-# include <sys/ndir.h>
-# endif
-# if HAVE_SYS_DIR_H
-# include <sys/dir.h>
-# endif
-# if HAVE_NDIR_H
-# include <ndir.h>
-# endif
-#endif
-
/*
* __os_dirlist --
* Return a list of the files in a directory.
@@ -47,6 +30,10 @@ __os_dirlist(dbenv, dir, namesp, cntp)
int arraysz, cnt, ret;
char **names, buf[DB_MAXPATHLEN];
+ if (dbenv != NULL &&
+ FLD_ISSET(dbenv->verbose, DB_VERB_FILEOPS | DB_VERB_FILEOPS_ALL))
+ __db_msg(dbenv, "fileops: directory list %s", dir);
+
if (DB_GLOBAL(j_dirlist) != NULL)
return (DB_GLOBAL(j_dirlist)(dir, namesp, cntp));
diff --git a/db/os/os_errno.c b/db/os/os_errno.c
index 8d08db404..d31005e42 100644
--- a/db/os/os_errno.c
+++ b/db/os/os_errno.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1999-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1999,2007 Oracle. All rights reserved.
*
- * $Id: os_errno.c,v 12.6 2006/08/24 14:46:17 bostic Exp $
+ * $Id: os_errno.c,v 12.8 2007/05/17 15:15:46 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/os/os_fid.c b/db/os/os_fid.c
index 03e19832b..fa39c6fad 100644
--- a/db/os/os_fid.c
+++ b/db/os/os_fid.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: os_fid.c,v 12.11 2006/08/24 14:46:17 bostic Exp $
+ * $Id: os_fid.c,v 12.17 2007/05/17 17:18:02 bostic Exp $
*/
#include "db_config.h"
@@ -34,13 +33,13 @@ __os_fileid(dbenv, fname, unique_okay, fidp)
int ret;
/*
- * The structure of a fileid on a POSIX/UNIX system is: ino(4) dev(4)
- * time(4) pid(4) extra(4).
+ * The structure of a fileid on a POSIX/UNIX system is:
+ *
+ * ino[4] dev[4] unique-ID[4] serial-counter[4] empty[4].
*
* For real files, which have a backing inode and device, the first
- * 16 bytes are filled in and the extra bytes are left 0. For
- * temporary files, the inode and device fields are left blank and
- * the extra four bytes are filled in with a random value.
+ * 8 bytes are filled in and the following bytes are left 0. For
+ * temporary files, the following 12 bytes are filled in.
*
* Clear the buffer.
*/
@@ -89,13 +88,17 @@ __os_fileid(dbenv, fname, unique_okay, fidp)
for (p = (u_int8_t *)&tmp, i = sizeof(u_int32_t); i > 0; --i)
*fidp++ = *p++;
#else
- /* Use the file name. */
- (void)strncpy(fidp, fname, DB_FILE_ID_LEN);
+ /*
+ * Use the file name.
+ *
+ * XXX
+ * Cast the first argument, the BREW ARM compiler is unhappy if
+ * we don't.
+ */
+ (void)strncpy((char *)fidp, fname, DB_FILE_ID_LEN);
#endif /* HAVE_STAT */
if (unique_okay) {
- static u_int32_t fid_serial = 0;
-
/* Add in 32-bits of (hopefully) unique number. */
__os_unique_id(dbenv, &tmp);
for (p = (u_int8_t *)&tmp, i = sizeof(u_int32_t); i > 0; --i)
@@ -120,14 +123,14 @@ __os_fileid(dbenv, fname, unique_okay, fidp)
* 32-bit platforms, and has few interesting properties in
* base 2.
*/
- if (fid_serial == 0) {
- dbenv->thread_id(dbenv, &pid, NULL);
- fid_serial = (u_int32_t)pid;
+ if (DB_GLOBAL(fid_serial) == 0) {
+ __os_id(dbenv, &pid, NULL);
+ DB_GLOBAL(fid_serial) = (u_int32_t)pid;
} else
- fid_serial += 100000;
+ DB_GLOBAL(fid_serial) += 100000;
- for (p =
- (u_int8_t *)&fid_serial, i = sizeof(u_int32_t); i > 0; --i)
+ for (p = (u_int8_t *)
+ &DB_GLOBAL(fid_serial), i = sizeof(u_int32_t); i > 0; --i)
*fidp++ = *p++;
}
diff --git a/db/os/os_finit.c b/db/os/os_finit.c
deleted file mode 100644
index 23b606ecb..000000000
--- a/db/os/os_finit.c
+++ /dev/null
@@ -1,111 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1998, 1999, 2000
- * Sleepycat Software. All rights reserved.
- */
-
-#include "db_config.h"
-
-#ifndef lint
-static const char revid[] = "$Id: os_finit.c,v 11.8 2000/11/30 00:58:42 ubell Exp $";
-#endif /* not lint */
-
-#ifndef NO_SYSTEM_INCLUDES
-#include <sys/types.h>
-
-#include <string.h>
-#endif
-
-#include "db_int.h"
-
-/*
- * __os_finit --
- * Initialize a regular file, optionally zero-filling it as well.
- *
- * PUBLIC: int __os_finit __P((DB_ENV *, DB_FH *, size_t, int));
- */
-int
-__os_finit(dbenv, fhp, size, zerofill)
- DB_ENV *dbenv;
- DB_FH *fhp;
- size_t size;
- int zerofill;
-{
- db_pgno_t pages;
- size_t i;
- size_t nw;
- u_int32_t relative;
- int ret;
- char buf[OS_VMPAGESIZE];
-
- /* Write nuls to the new bytes. */
- memset(buf, 0, sizeof(buf));
-
- /*
- * Extend the region by writing the last page. If the region is >4Gb,
- * increment may be larger than the maximum possible seek "relative"
- * argument, as it's an unsigned 32-bit value. Break the offset into
- * pages of 1MB each so that we don't overflow (2^20 + 2^32 is bigger
- * than any memory I expect to see for awhile).
- */
- if ((ret = __os_seek(dbenv, fhp, 0, 0, 0, 0, DB_OS_SEEK_END)) != 0)
- return (ret);
- pages = (size - OS_VMPAGESIZE) / MEGABYTE;
- relative = (size - OS_VMPAGESIZE) % MEGABYTE;
- if ((ret = __os_seek(dbenv,
- fhp, MEGABYTE, pages, relative, 0, DB_OS_SEEK_CUR)) != 0)
- return (ret);
- if ((ret = __os_write(dbenv, fhp, buf, sizeof(buf), &nw)) != 0)
- return (ret);
- if (nw != sizeof(buf))
- return (EIO);
-
- /*
- * We may want to guarantee that there is enough disk space for the
- * file, so we also write a byte to each page. We write the byte
- * because reading it is insufficient on systems smart enough not to
- * instantiate disk pages to satisfy a read (e.g., Solaris).
- */
- if (zerofill) {
- pages = size / MEGABYTE;
- relative = size % MEGABYTE;
- if ((ret = __os_seek(dbenv, fhp,
- MEGABYTE, pages, relative, 1, DB_OS_SEEK_END)) != 0)
- return (ret);
-
- /* Write a byte to each page. */
- for (i = 0; i < size; i += OS_VMPAGESIZE) {
- if ((ret = __os_write(dbenv, fhp, buf, 1, &nw)) != 0)
- return (ret);
- if (nw != 1)
- return (EIO);
- if ((ret = __os_seek(dbenv, fhp,
- 0, 0, OS_VMPAGESIZE - 1, 0, DB_OS_SEEK_CUR)) != 0)
- return (ret);
- }
- }
- return (0);
-}
-
-/*
- * __os_fpinit --
- * Initialize a page in a regular file.
- *
- * PUBLIC: int __os_fpinit __P((DB_ENV *, DB_FH *, db_pgno_t, int, int));
- */
-int
-__os_fpinit(dbenv, fhp, pgno, pagecount, pagesize)
- DB_ENV *dbenv;
- DB_FH *fhp;
- db_pgno_t pgno;
- int pagecount, pagesize;
-{
- COMPQUIET(dbenv, NULL);
- COMPQUIET(fhp, NULL);
- COMPQUIET(pgno, 0);
- COMPQUIET(pagecount, 0);
- COMPQUIET(pagesize, 0);
-
- return (0);
-}
diff --git a/db/os/os_flock.c b/db/os/os_flock.c
index 25f3ecfe1..4460221d0 100644
--- a/db/os/os_flock.c
+++ b/db/os/os_flock.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: os_flock.c,v 12.11 2006/08/24 14:46:17 bostic Exp $
+ * $Id: os_flock.c,v 12.14 2007/05/17 15:15:46 bostic Exp $
*/
#include "db_config.h"
@@ -30,6 +29,11 @@ __os_fdlock(dbenv, fhp, offset, acquire, nowait)
DB_ASSERT(dbenv, F_ISSET(fhp, DB_FH_OPENED) && fhp->fd != -1);
+ if (dbenv != NULL && FLD_ISSET(dbenv->verbose, DB_VERB_FILEOPS_ALL))
+ __db_msg(dbenv,
+ "fileops: flock %s %s offset %lu",
+ fhp->name, acquire ? "acquire": "release", (u_long)offset);
+
fl.l_start = offset;
fl.l_len = 1;
fl.l_type = acquire ? F_WRLCK : F_UNLCK;
diff --git a/db/os/os_fsync.c b/db/os/os_fsync.c
index c1eedcf73..febd23270 100644
--- a/db/os/os_fsync.c
+++ b/db/os/os_fsync.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: os_fsync.c,v 12.9 2006/08/24 14:46:17 bostic Exp $
+ * $Id: os_fsync.c,v 12.13 2007/05/17 15:15:46 bostic Exp $
*/
#include "db_config.h"
@@ -61,7 +60,6 @@ __os_fsync(dbenv, fhp)
{
int ret;
- /* Check for illegal usage. */
DB_ASSERT(dbenv, F_ISSET(fhp, DB_FH_OPENED) && fhp->fd != -1);
/*
@@ -71,16 +69,26 @@ __os_fsync(dbenv, fhp)
if (F_ISSET(fhp, DB_FH_NOSYNC))
return (0);
+ if (dbenv != NULL && FLD_ISSET(dbenv->verbose, DB_VERB_FILEOPS_ALL))
+ __db_msg(dbenv, "fileops: flush %s", fhp->name);
+
if (DB_GLOBAL(j_fsync) != NULL)
ret = DB_GLOBAL(j_fsync)(fhp->fd);
- else
+ else {
#if defined(F_FULLFSYNC)
RETRY_CHK((fcntl(fhp->fd, F_FULLFSYNC, 0)), ret);
+ /*
+ * On OS X, F_FULLSYNC only works on HFS+, so we need to fall
+ * back to regular fsync on other filesystems.
+ */
+ if (ret == ENOTSUP)
+ RETRY_CHK((fsync(fhp->fd)), ret);
#elif defined(HAVE_FDATASYNC)
RETRY_CHK((fdatasync(fhp->fd)), ret);
#else
RETRY_CHK((fsync(fhp->fd)), ret);
#endif
+ }
if (ret != 0) {
__db_syserr(dbenv, ret, "fsync");
diff --git a/db/os/os_fzero.c b/db/os/os_fzero.c
index 97a40e900..13c035184 100644
--- a/db/os/os_fzero.c
+++ b/db/os/os_fzero.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: os_fzero.c,v 12.17 2006/09/19 14:14:12 mjc Exp $
+ * $Id: os_fzero.c,v 12.20 2007/05/17 15:15:46 bostic Exp $
*/
#include "db_config.h"
@@ -38,6 +37,9 @@ __os_zerofill(dbenv, fhp)
int group_sync, need_free, ret;
u_int8_t buf[8 * 1024], *bp;
+ if (dbenv != NULL && FLD_ISSET(dbenv->verbose, DB_VERB_FILEOPS_ALL))
+ __db_msg(dbenv, "fileops: zero-fill %s", fhp->name);
+
/* Calculate the byte offset of the next write. */
write_offset = (off_t)fhp->pgno * fhp->pgsize + fhp->offset;
diff --git a/db/os/os_getenv.c b/db/os/os_getenv.c
index ae4479e49..a76fd0323 100644
--- a/db/os/os_getenv.c
+++ b/db/os/os_getenv.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: os_getenv.c,v 12.5 2006/08/31 20:30:55 bostic Exp $
+ * $Id: os_getenv.c,v 12.7 2007/05/17 15:15:46 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/os/os_handle.c b/db/os/os_handle.c
index 5fc06151e..8a09171a5 100644
--- a/db/os/os_handle.c
+++ b/db/os/os_handle.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1998-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1998,2007 Oracle. All rights reserved.
*
- * $Id: os_handle.c,v 12.7 2006/08/24 14:46:17 bostic Exp $
+ * $Id: os_handle.c,v 12.15 2007/05/17 15:15:46 bostic Exp $
*/
#include "db_config.h"
@@ -31,10 +30,33 @@ __os_openhandle(dbenv, name, flags, mode, fhpp)
#ifdef HAVE_VXWORKS
int newflags;
#endif
-
- if ((ret = __os_calloc(dbenv, 1, sizeof(DB_FH), fhpp)) != 0)
+ /*
+ * Allocate the file handle and copy the file name. We generally only
+ * use the name for verbose or error messages, but on systems where we
+ * can't unlink temporary files immediately, we use the name to unlink
+ * the temporary file when the file handle is closed.
+ *
+ * Lock the DB_ENV handle and insert the new file handle on the list.
+ */
+ if ((ret = __os_calloc(dbenv, 1, sizeof(DB_FH), &fhp)) != 0)
return (ret);
- fhp = *fhpp;
+ if ((ret = __os_strdup(dbenv, name, &fhp->name)) != 0)
+ goto err;
+ if (dbenv != NULL) {
+ MUTEX_LOCK(dbenv, dbenv->mtx_env);
+ TAILQ_INSERT_TAIL(&dbenv->fdlist, fhp, q);
+ MUTEX_UNLOCK(dbenv, dbenv->mtx_env);
+ F_SET(fhp, DB_FH_ENVLINK);
+ }
+
+#ifdef HAVE_QNX
+ if (LF_ISSET(DB_OSO_REGION)) {
+ if ((ret =
+ __os_qnx_region_open(dbenv, name, oflags, mode, fhp)) != 0)
+ goto err;
+ goto done;
+ }
+#endif
/* If the application specified an interface, use it. */
if (DB_GLOBAL(j_open) != NULL) {
@@ -42,8 +64,7 @@ __os_openhandle(dbenv, name, flags, mode, fhpp)
ret = __os_posix_err(__os_get_syserr());
goto err;
}
- F_SET(fhp, DB_FH_OPENED);
- return (0);
+ goto done;
}
retries = 0;
@@ -111,17 +132,7 @@ __os_openhandle(dbenv, name, flags, mode, fhpp)
fhp->fd = open(name, flags, mode);
#endif
if (fhp->fd != -1) {
- F_SET(fhp, DB_FH_OPENED);
-
-#if defined(HAVE_FCNTL_F_SETFD)
- /* Deny file descriptor access to any child process. */
- if (fcntl(fhp->fd, F_SETFD, 1) == -1) {
- ret = __os_get_syserr();
- __db_syserr(dbenv, ret, "fcntl(F_SETFD)");
- ret = __os_posix_err(ret);
- goto err;
- }
-#endif
+ ret = 0;
break;
}
@@ -149,15 +160,27 @@ __os_openhandle(dbenv, name, flags, mode, fhpp)
break;
default:
/* Open is silent on error. */
- break;
+ goto err;
}
}
-err: if (ret != 0) {
- (void)__os_closehandle(dbenv, fhp);
- *fhpp = NULL;
+ if (ret == 0) {
+#if defined(HAVE_FCNTL_F_SETFD)
+ /* Deny file descriptor access to any child process. */
+ if (fcntl(fhp->fd, F_SETFD, 1) == -1) {
+ ret = __os_get_syserr();
+ __db_syserr(dbenv, ret, "fcntl(F_SETFD)");
+ ret = __os_posix_err(ret);
+ goto err;
+ }
+#endif
+
+done: F_SET(fhp, DB_FH_OPENED);
+ *fhpp = fhp;
+ return (0);
}
+err: (void)__os_closehandle(dbenv, fhp);
return (ret);
}
@@ -177,27 +200,45 @@ __os_closehandle(dbenv, fhp)
ret = 0;
/*
- * If we have a valid handle, close it and unlink any temporary
- * file.
+ * If we linked the DB_FH handle into the DB_ENV, it needs to be
+ * unlinked.
*/
+ DB_ASSERT(dbenv, dbenv != NULL || !F_ISSET(fhp, DB_FH_ENVLINK));
+
+ if (dbenv != NULL) {
+ if (fhp->name != NULL && FLD_ISSET(
+ dbenv->verbose, DB_VERB_FILEOPS | DB_VERB_FILEOPS_ALL))
+ __db_msg(dbenv, "fileops: close %s", fhp->name);
+
+ if (F_ISSET(fhp, DB_FH_ENVLINK)) {
+ /*
+ * Lock the DB_ENV handle and remove this file
+ * handle from the list.
+ */
+ MUTEX_LOCK(dbenv, dbenv->mtx_env);
+ TAILQ_REMOVE(&dbenv->fdlist, fhp, q);
+ MUTEX_UNLOCK(dbenv, dbenv->mtx_env);
+ }
+ }
+
+ /* Discard any underlying system file reference. */
if (F_ISSET(fhp, DB_FH_OPENED)) {
if (DB_GLOBAL(j_close) != NULL)
ret = DB_GLOBAL(j_close)(fhp->fd);
else
RETRY_CHK((close(fhp->fd)), ret);
-
if (ret != 0) {
__db_syserr(dbenv, ret, "close");
ret = __os_posix_err(ret);
}
-
- /* Unlink the file if we haven't already done so. */
- if (F_ISSET(fhp, DB_FH_UNLINK)) {
- (void)__os_unlink(dbenv, fhp->name);
- __os_free(dbenv, fhp->name);
- }
}
+ /* Unlink the file if we haven't already done so. */
+ if (F_ISSET(fhp, DB_FH_UNLINK))
+ (void)__os_unlink(dbenv, fhp->name);
+
+ if (fhp->name != NULL)
+ __os_free(dbenv, fhp->name);
__os_free(dbenv, fhp);
return (ret);
diff --git a/db/os/os_id.c b/db/os/os_id.c
deleted file mode 100644
index 79df12f9b..000000000
--- a/db/os/os_id.c
+++ /dev/null
@@ -1,89 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2001-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: os_id.c,v 1.9 2004/09/22 16:27:54 bostic Exp $
- */
-
-#include "db_config.h"
-
-#ifndef NO_SYSTEM_INCLUDES
-#include <sys/types.h>
-
-#include <stdlib.h>
-#include <unistd.h>
-#endif
-
-#include "db_int.h"
-
-/*
- * __os_id --
- * Return a 32-bit value identifying the current thread of control.
- *
- * PUBLIC: void __os_id __P((u_int32_t *));
- */
-void
-__os_id(idp)
- u_int32_t *idp;
-{
- /*
- * By default, use the process ID.
- *
- * getpid() returns a pid_t which we convert to a u_int32_t. I have
- * not yet seen a system where a pid_t has 64-bits, but I'm sure they
- * exist. Since we're returning only the bottom 32-bits, you cannot
- * use the return of __os_id to reference a process (for example, you
- * cannot send a signal to the value returned by __os_id). To send a
- * signal to the current process, use raise(3) instead.
- */
-#ifdef HAVE_VXWORKS
- *idp = taskIdSelf();
-#else
- *idp = (u_int32_t)getpid();
-#endif
-}
-
-/*
- * __os_unique_id --
- * Return a unique 32-bit value.
- *
- * PUBLIC: void __os_unique_id __P((DB_ENV *, u_int32_t *));
- */
-void
-__os_unique_id(dbenv, idp)
- DB_ENV *dbenv;
- u_int32_t *idp;
-{
- static int first = 1;
- u_int32_t id, pid, sec, usec;
-
- *idp = 0;
-
- /*
- * Our randomized value is comprised of our process ID, the current
- * time of day and a couple of a stack addresses, all XOR'd together.
- */
- __os_id(&pid);
- __os_clock(dbenv, &sec, &usec);
-
- id = pid ^ sec ^ usec ^ P_TO_UINT32(&pid);
-
- /*
- * We could try and find a reasonable random-number generator, but
- * that's not all that easy to do. Seed and use srand()/rand(), if
- * we can find them.
- */
-#if HAVE_SRAND
- if (first == 1)
- srand((u_int)id);
-#endif
- first = 0;
-
-#if HAVE_RAND
- id ^= (u_int)rand();
-#endif
-
- *idp = id;
-}
diff --git a/db/os/os_map.c b/db/os/os_map.c
index 886918ccb..afce07277 100644
--- a/db/os/os_map.c
+++ b/db/os/os_map.c
@@ -1,17 +1,16 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: os_map.c,v 12.12 2006/08/24 14:46:17 bostic Exp $
+ * $Id: os_map.c,v 12.18 2007/05/17 15:15:46 bostic Exp $
*/
#include "db_config.h"
#include "db_int.h"
-#ifndef NO_SYSTEM_INCLUDES
+#ifdef HAVE_SYSTEM_INCLUDE_FILES
#ifdef HAVE_MMAP
#include <sys/mman.h>
#endif
@@ -148,7 +147,7 @@ __os_r_sysattach(dbenv, infop, rp)
* the region are properly ordered, our caller has already taken care
* of that.
*/
- if ((ret = __os_open(dbenv, infop->name,
+ if ((ret = __os_open(dbenv, infop->name, 0,
DB_OSO_REGION |
(F_ISSET(infop, REGION_CREATE_OK) ? DB_OSO_CREATE : 0),
dbenv->db_mode, &fhp)) != 0)
@@ -276,6 +275,10 @@ __os_mapfile(dbenv, path, fhp, len, is_rdonly, addrp)
void **addrp;
{
#if defined(HAVE_MMAP) && !defined(HAVE_QNX)
+ if (dbenv != NULL &&
+ FLD_ISSET(dbenv->verbose, DB_VERB_FILEOPS | DB_VERB_FILEOPS_ALL))
+ __db_msg(dbenv, "fileops: mmap %s", path);
+
return (__os_map(dbenv, path, fhp, len, 0, is_rdonly, addrp));
#else
COMPQUIET(dbenv, NULL);
@@ -302,6 +305,10 @@ __os_unmapfile(dbenv, addr, len)
{
int ret;
+ if (dbenv != NULL &&
+ FLD_ISSET(dbenv->verbose, DB_VERB_FILEOPS | DB_VERB_FILEOPS_ALL))
+ __db_msg(dbenv, "fileops: munmap");
+
/* If the user replaced the map call, call through their interface. */
if (DB_GLOBAL(j_unmap) != NULL)
return (DB_GLOBAL(j_unmap)(addr, len));
@@ -348,7 +355,6 @@ __os_map(dbenv, path, fhp, len, is_region, is_rdonly, addrp)
return (DB_GLOBAL(j_map)
(path, len, is_region, is_rdonly, addrp));
- /* Check for illegal usage. */
DB_ASSERT(dbenv, F_ISSET(fhp, DB_FH_OPENED) && fhp->fd != -1);
/*
@@ -462,7 +468,7 @@ __os_map(dbenv, path, fhp, len, is_region, is_rdonly, addrp)
* Map the DbEnv::open method file mode permissions to shmget call
* permissions.
*/
-int
+static int
__shm_mode(dbenv)
DB_ENV *dbenv;
{
diff --git a/db/os/os_method.c b/db/os/os_method.c
index 1a629d570..090229586 100644
--- a/db/os/os_method.c
+++ b/db/os/os_method.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1999-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1999,2007 Oracle. All rights reserved.
*
- * $Id: os_method.c,v 12.4 2006/08/24 14:46:18 bostic Exp $
+ * $Id: os_method.c,v 12.6 2007/05/17 15:15:46 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/os/os_mkdir.c b/db/os/os_mkdir.c
index a44dd1e8b..f6af3a8c2 100644
--- a/db/os/os_mkdir.c
+++ b/db/os/os_mkdir.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: os_mkdir.c,v 12.16 2006/08/24 14:46:18 bostic Exp $
+ * $Id: os_mkdir.c,v 12.20 2007/05/17 15:15:46 bostic Exp $
*/
#include "db_config.h"
@@ -25,28 +24,26 @@ __os_mkdir(dbenv, name, mode)
{
int ret;
- COMPQUIET(dbenv, NULL);
+ if (dbenv != NULL &&
+ FLD_ISSET(dbenv->verbose, DB_VERB_FILEOPS | DB_VERB_FILEOPS_ALL))
+ __db_msg(dbenv, "fileops: mkdir %s", name);
/* Make the directory, with paranoid permissions. */
-#ifdef HAVE_VXWORKS
+#if defined(HAVE_VXWORKS)
RETRY_CHK((mkdir((char *)name)), ret);
#else
-#ifdef DB_WIN32
- RETRY_CHK((_mkdir(name)), ret);
-#else
RETRY_CHK((mkdir(name, __db_omode("rwx------"))), ret);
#endif
if (ret != 0)
return (__os_posix_err(ret));
/* Set the absolute permissions, if specified. */
-#ifndef DB_WIN32
+#if !defined(HAVE_VXWORKS)
if (mode != 0) {
RETRY_CHK((chmod(name, mode)), ret);
if (ret != 0)
ret = __os_posix_err(ret);
}
#endif
-#endif
return (ret);
}
diff --git a/db/os/os_oflags.c b/db/os/os_oflags.c
index c0fdbf2be..8ae9dd521 100644
--- a/db/os/os_oflags.c
+++ b/db/os/os_oflags.c
@@ -1,17 +1,16 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: os_oflags.c,v 12.6 2006/08/24 14:46:18 bostic Exp $
+ * $Id: os_oflags.c,v 12.10 2007/05/17 15:15:46 bostic Exp $
*/
#include "db_config.h"
#include "db_int.h"
-#ifndef NO_SYSTEM_INCLUDES
+#ifdef HAVE_SYSTEM_INCLUDE_FILES
#ifdef HAVE_SHMGET
#include <sys/ipc.h>
#include <sys/shm.h>
@@ -19,6 +18,32 @@
#endif
/*
+ * Ensure that POSIX defined codes are available.
+ */
+#ifndef O_CREAT
+#define O_CREAT 0x0200
+#endif
+#ifndef O_TRUNC
+#define O_TRUNC 0x0400
+#endif
+#ifndef O_RDONLY
+#define O_RDONLY 0x0000
+#endif
+#ifndef O_RDWR
+#define O_RDWR 0x0002
+#endif
+#ifndef O_WRONLY
+#define O_WRONLY 0x0001
+#endif
+
+#ifndef S_IREAD
+#define S_IREAD 0000400
+#endif
+#ifndef S_IWRITE
+#define S_IWRITE 0000200
+#endif
+
+/*
* __db_oflags --
* Convert open(2) flags to DB flags.
*
diff --git a/db/os/os_open.c b/db/os/os_open.c
index 73d30dbf6..07ca5f553 100644
--- a/db/os/os_open.c
+++ b/db/os/os_open.c
@@ -1,48 +1,24 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: os_open.c,v 12.18 2006/08/24 14:46:18 bostic Exp $
+ * $Id: os_open.c,v 12.22 2007/05/17 15:15:46 bostic Exp $
*/
#include "db_config.h"
#include "db_int.h"
-#ifdef HAVE_QNX
-static int __os_qnx_region_open
- __P((DB_ENV *, const char *, int, int, DB_FH **));
-#endif
-
/*
* __os_open --
- * Open a file.
- *
- * PUBLIC: int __os_open
- * PUBLIC: __P((DB_ENV *, const char *, u_int32_t, int, DB_FH **));
- */
-int
-__os_open(dbenv, name, flags, mode, fhpp)
- DB_ENV *dbenv;
- const char *name;
- u_int32_t flags;
- int mode;
- DB_FH **fhpp;
-{
- return (__os_open_extend(dbenv, name, 0, flags, mode, fhpp));
-}
-
-/*
- * __os_open_extend --
* Open a file descriptor (including page size and log size information).
*
- * PUBLIC: int __os_open_extend __P((DB_ENV *,
+ * PUBLIC: int __os_open __P((DB_ENV *,
* PUBLIC: const char *, u_int32_t, u_int32_t, int, DB_FH **));
*/
int
-__os_open_extend(dbenv, name, page_size, flags, mode, fhpp)
+__os_open(dbenv, name, page_size, flags, mode, fhpp)
DB_ENV *dbenv;
const char *name;
u_int32_t page_size, flags;
@@ -57,6 +33,10 @@ __os_open_extend(dbenv, name, page_size, flags, mode, fhpp)
*fhpp = NULL;
oflags = 0;
+ if (dbenv != NULL &&
+ FLD_ISSET(dbenv->verbose, DB_VERB_FILEOPS | DB_VERB_FILEOPS_ALL))
+ __db_msg(dbenv, "fileops: open %s", name);
+
#define OKFLAGS \
(DB_OSO_ABSMODE | DB_OSO_CREATE | DB_OSO_DIRECT | DB_OSO_DSYNC |\
DB_OSO_EXCL | DB_OSO_RDONLY | DB_OSO_REGION | DB_OSO_SEQ | \
@@ -111,10 +91,6 @@ __os_open_extend(dbenv, name, page_size, flags, mode, fhpp)
(ret = __db_mkpath(dbenv, name)) != 0)
return (ret);
-#ifdef HAVE_QNX
- if (LF_ISSET(DB_OSO_REGION))
- return (__os_qnx_region_open(dbenv, name, oflags, mode, fhpp));
-#endif
/* Open the file. */
if ((ret = __os_openhandle(dbenv, name, oflags, mode, &fhp)) != 0)
return (ret);
@@ -163,11 +139,6 @@ __os_open_extend(dbenv, name, page_size, flags, mode, fhpp)
*/
if (LF_ISSET(DB_OSO_TEMP)) {
#if defined(HAVE_UNLINK_WITH_OPEN_FAILURE) || defined(CONFIG_TEST)
- if ((ret = __os_strdup(dbenv, name, &fhp->name)) != 0) {
- (void)__os_closehandle(dbenv, fhp);
- (void)__os_unlink(dbenv, name);
- return (ret);
- }
F_SET(fhp, DB_FH_UNLINK);
#else
(void)__os_unlink(dbenv, name);
@@ -177,134 +148,3 @@ __os_open_extend(dbenv, name, page_size, flags, mode, fhpp)
*fhpp = fhp;
return (0);
}
-
-#ifdef HAVE_QNX
-/*
- * __os_qnx_region_open --
- * Open a shared memory region file using POSIX shm_open.
- */
-static int
-__os_qnx_region_open(dbenv, name, oflags, mode, fhpp)
- DB_ENV *dbenv;
- const char *name;
- int oflags;
- int mode;
- DB_FH **fhpp;
-{
- DB_FH *fhp;
- int ret;
- char *newname;
-
- if ((ret = __os_calloc(dbenv, 1, sizeof(DB_FH), fhpp)) != 0)
- return (ret);
- fhp = *fhpp;
-
- if ((ret = __os_shmname(dbenv, name, &newname)) != 0)
- goto err;
-
- /*
- * Once we have created the object, we don't need the name
- * anymore. Other callers of this will convert themselves.
- */
- fhp->fd = shm_open(newname, oflags, mode);
- if (fhp->fd == -1)
- ret = __os_posix_err(__os_get_syserr());
- __os_free(dbenv, newname);
- if (fhp->fd == -1)
- goto err;
-
- F_SET(fhp, DB_FH_OPENED);
-
-#ifdef HAVE_FCNTL_F_SETFD
- /* Deny file descriptor access to any child process. */
- if (fcntl(fhp->fd, F_SETFD, 1) == -1) {
- ret = __os_get_syserr();
- __db_syserr(dbenv, ret, "fcntl(F_SETFD)");
- ret = __os_posix_err(ret);
- goto err;
- }
-#endif
-
-err: if (ret != 0) {
- (void)__os_closehandle(dbenv, fhp);
- *fhpp = NULL;
- }
-
- return (ret);
-}
-
-/*
- * __os_shmname --
- * Translate a pathname into a shm_open memory object name.
- *
- * PUBLIC: #ifdef HAVE_QNX
- * PUBLIC: int __os_shmname __P((DB_ENV *, const char *, char **));
- * PUBLIC: #endif
- */
-int
-__os_shmname(dbenv, name, newnamep)
- DB_ENV *dbenv;
- const char *name;
- char **newnamep;
-{
- int ret;
- size_t size;
- char *p, *q, *tmpname;
-
- *newnamep = NULL;
-
- /*
- * POSIX states that the name for a shared memory object
- * may begin with a slash '/' and support for subsequent
- * slashes is implementation-dependent. The one implementation
- * we know of right now, QNX, forbids subsequent slashes.
- * We don't want to be parsing pathnames for '.' and '..' in
- * the middle. In order to allow easy conversion, just take
- * the last component as the shared memory name. This limits
- * the namespace a bit, but makes our job a lot easier.
- *
- * We should not be modifying user memory, so we use our own.
- * Caller is responsible for freeing the memory we give them.
- */
- if ((ret = __os_strdup(dbenv, name, &tmpname)) != 0)
- return (ret);
- /*
- * Skip over filename component.
- * We set that separator to '\0' so that we can do another
- * __db_rpath. However, we immediately set it then to ':'
- * so that we end up with the tailing directory:filename.
- * We require a home directory component. Return an error
- * if there isn't one.
- */
- p = __db_rpath(tmpname);
- if (p == NULL)
- return (EINVAL);
- if (p != tmpname) {
- *p = '\0';
- q = p;
- p = __db_rpath(tmpname);
- *q = ':';
- }
- if (p != NULL) {
- /*
- * If we have a path component, copy and return it.
- */
- ret = __os_strdup(dbenv, p, newnamep);
- __os_free(dbenv, tmpname);
- return (ret);
- }
-
- /*
- * We were given just a directory name with no path components.
- * Add a leading slash, and copy the remainder.
- */
- size = strlen(tmpname) + 2;
- if ((ret = __os_malloc(dbenv, size, &p)) != 0)
- return (ret);
- p[0] = '/';
- memcpy(&p[1], tmpname, size-1);
- __os_free(dbenv, tmpname);
- *newnamep = p;
- return (0);
-}
-#endif
diff --git a/db/os/os_pid.c b/db/os/os_pid.c
index e9a663954..f71c730b0 100644
--- a/db/os/os_pid.c
+++ b/db/os/os_pid.c
@@ -1,17 +1,20 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2001-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2001,2007 Oracle. All rights reserved.
*
- * $Id: os_pid.c,v 12.21 2006/08/24 14:46:18 bostic Exp $
+ * $Id: os_pid.c,v 12.24 2007/05/17 15:15:46 bostic Exp $
*/
#include "db_config.h"
#include "db_int.h"
+
+#ifdef HAVE_MUTEX_SUPPORT
#include "dbinc/mutex_int.h" /* Required to load appropriate
header files for thread functions. */
+#endif
+
/*
* __os_id --
* Return the current process ID.
diff --git a/db/os/os_region.c b/db/os/os_region.c
index ea9cde3a5..b519380ae 100644
--- a/db/os/os_region.c
+++ b/db/os/os_region.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: os_region.c,v 12.9 2006/08/24 14:46:18 bostic Exp $
+ * $Id: os_region.c,v 12.11 2007/05/17 15:15:46 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/os/os_rename.c b/db/os/os_rename.c
index 912feb26e..142126e95 100644
--- a/db/os/os_rename.c
+++ b/db/os/os_rename.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: os_rename.c,v 12.7 2006/08/24 14:46:18 bostic Exp $
+ * $Id: os_rename.c,v 12.10 2007/05/17 15:15:46 bostic Exp $
*/
#include "db_config.h"
@@ -19,17 +18,21 @@
* PUBLIC: const char *, const char *, u_int32_t));
*/
int
-__os_rename(dbenv, old, new, silent)
+__os_rename(dbenv, oldname, newname, silent)
DB_ENV *dbenv;
- const char *old, *new;
+ const char *oldname, *newname;
u_int32_t silent;
{
int ret;
+ if (dbenv != NULL &&
+ FLD_ISSET(dbenv->verbose, DB_VERB_FILEOPS | DB_VERB_FILEOPS_ALL))
+ __db_msg(dbenv, "fileops: rename %s to %s", oldname, newname);
+
if (DB_GLOBAL(j_rename) != NULL)
- ret = DB_GLOBAL(j_rename)(old, new);
+ ret = DB_GLOBAL(j_rename)(oldname, newname);
else
- RETRY_CHK((rename(old, new)), ret);
+ RETRY_CHK((rename(oldname, newname)), ret);
/*
* If "silent" is not set, then errors are OK and we should not output
@@ -37,7 +40,8 @@ __os_rename(dbenv, old, new, silent)
*/
if (ret != 0) {
if (!silent)
- __db_syserr(dbenv, ret, "rename %s %s", old, new);
+ __db_syserr(
+ dbenv, ret, "rename %s %s", oldname, newname);
ret = __os_posix_err(ret);
}
return (ret);
diff --git a/db/os/os_root.c b/db/os/os_root.c
index 4b340dc8e..8d53e2b79 100644
--- a/db/os/os_root.c
+++ b/db/os/os_root.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1999-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1999,2007 Oracle. All rights reserved.
*
- * $Id: os_root.c,v 12.5 2006/08/24 14:46:18 bostic Exp $
+ * $Id: os_root.c,v 12.7 2007/05/17 15:15:46 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/os/os_rpath.c b/db/os/os_rpath.c
index b25d6bb75..5e72d0bf6 100644
--- a/db/os/os_rpath.c
+++ b/db/os/os_rpath.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: os_rpath.c,v 12.5 2006/08/24 14:46:18 bostic Exp $
+ * $Id: os_rpath.c,v 12.7 2007/05/17 15:15:46 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/os/os_rw.c b/db/os/os_rw.c
index 90a4c8a95..1de9bb1b0 100644
--- a/db/os/os_rw.c
+++ b/db/os/os_rw.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: os_rw.c,v 12.17 2006/08/24 14:46:18 bostic Exp $
+ * $Id: os_rw.c,v 12.20 2007/05/17 15:15:46 bostic Exp $
*/
#include "db_config.h"
@@ -54,6 +53,11 @@ __os_io(dbenv, op, fhp, pgno, pgsize, relative, io_len, buf, niop)
case DB_IO_READ:
if (DB_GLOBAL(j_read) != NULL)
goto slow;
+ if (dbenv != NULL &&
+ FLD_ISSET(dbenv->verbose, DB_VERB_FILEOPS_ALL))
+ __db_msg(dbenv,
+ "fileops: read %s: %lu bytes at offset %lu",
+ fhp->name, (u_long)io_len, (u_long)offset);
nio = DB_GLOBAL(j_pread) != NULL ?
DB_GLOBAL(j_pread)(fhp->fd, buf, io_len, offset) :
pread(fhp->fd, buf, io_len, offset);
@@ -65,6 +69,11 @@ __os_io(dbenv, op, fhp, pgno, pgsize, relative, io_len, buf, niop)
if (__os_fs_notzero())
goto slow;
#endif
+ if (dbenv != NULL &&
+ FLD_ISSET(dbenv->verbose, DB_VERB_FILEOPS_ALL))
+ __db_msg(dbenv,
+ "fileops: write %s: %lu bytes at offset %lu",
+ fhp->name, (u_long)io_len, (u_long)offset);
nio = DB_GLOBAL(j_pwrite) != NULL ?
DB_GLOBAL(j_pwrite)(fhp->fd, buf, io_len, offset) :
pwrite(fhp->fd, buf, io_len, offset);
@@ -121,9 +130,12 @@ __os_read(dbenv, fhp, addr, len, nrp)
ret = 0;
- /* Check for illegal usage. */
DB_ASSERT(dbenv, F_ISSET(fhp, DB_FH_OPENED) && fhp->fd != -1);
+ if (dbenv != NULL && FLD_ISSET(dbenv->verbose, DB_VERB_FILEOPS_ALL))
+ __db_msg(dbenv,
+ "fileops: read %s: %lu bytes", fhp->name, (u_long)len);
+
if (DB_GLOBAL(j_read) != NULL) {
*nrp = len;
if (DB_GLOBAL(j_read)(fhp->fd, addr, len) != (ssize_t)len) {
@@ -165,7 +177,6 @@ __os_write(dbenv, fhp, addr, len, nwp)
size_t len;
size_t *nwp;
{
- /* Check for illegal usage. */
DB_ASSERT(dbenv, F_ISSET(fhp, DB_FH_OPENED) && fhp->fd != -1);
#ifdef HAVE_FILESYSTEM_NOTZERO
@@ -201,6 +212,10 @@ __os_physwrite(dbenv, fhp, addr, len, nwp)
ret = 0;
+ if (dbenv != NULL && FLD_ISSET(dbenv->verbose, DB_VERB_FILEOPS_ALL))
+ __db_msg(dbenv,
+ "fileops: write %s: %lu bytes", fhp->name, (u_long)len);
+
#if defined(HAVE_FILESYSTEM_NOTZERO) && defined(DIAGNOSTIC)
if (__os_fs_notzero()) {
struct stat sb;
diff --git a/db/os/os_seek.c b/db/os/os_seek.c
index ee4b02901..9989ceeaf 100644
--- a/db/os/os_seek.c
+++ b/db/os/os_seek.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: os_seek.c,v 12.10 2006/08/24 14:46:18 bostic Exp $
+ * $Id: os_seek.c,v 12.13 2007/05/17 15:15:46 bostic Exp $
*/
#include "db_config.h"
@@ -29,11 +28,14 @@ __os_seek(dbenv, fhp, pgno, pgsize, relative)
off_t offset;
int ret;
- /* Check for illegal usage. */
DB_ASSERT(dbenv, F_ISSET(fhp, DB_FH_OPENED) && fhp->fd != -1);
offset = (off_t)pgsize * pgno + relative;
+ if (dbenv != NULL && FLD_ISSET(dbenv->verbose, DB_VERB_FILEOPS_ALL))
+ __db_msg(dbenv,
+ "fileops: seek %s to %lu", fhp->name, (u_long)offset);
+
if (DB_GLOBAL(j_seek) != NULL)
ret = DB_GLOBAL(j_seek)(fhp->fd, offset, SEEK_SET);
else
diff --git a/db/os/os_sleep.c b/db/os/os_sleep.c
index b0a5e61fe..2c8312a2a 100644
--- a/db/os/os_sleep.c
+++ b/db/os/os_sleep.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: os_sleep.c,v 12.9 2006/09/06 20:22:12 bostic Exp $
+ * $Id: os_sleep.c,v 12.14 2007/05/17 15:15:46 bostic Exp $
*/
#include "db_config.h"
@@ -27,7 +26,7 @@ __os_sleep(dbenv, secs, usecs)
int ret;
/* Don't require that the values be normalized. */
- for (; usecs >= 1000000; usecs -= 1000000)
+ for (; usecs >= US_PER_SEC; usecs -= US_PER_SEC)
++secs;
if (DB_GLOBAL(j_sleep) != NULL) {
@@ -36,8 +35,8 @@ __os_sleep(dbenv, secs, usecs)
}
/*
- * It's important that we yield the processor here so that other
- * processes or threads are permitted to run.
+ * It's important we yield the processor here so other processes or
+ * threads can run.
*
* XXX
* VxWorks doesn't yield the processor on select. This isn't really
@@ -49,7 +48,8 @@ __os_sleep(dbenv, secs, usecs)
#endif
/*
- * Sheer raving paranoia -- don't select for 0 time.
+ * Sheer raving paranoia -- don't select for 0 time, in case some
+ * implementation doesn't yield the processor in that case.
*/
t.tv_sec = (long)secs;
if (secs == 0 && usecs == 0)
diff --git a/db/os/os_spin.c b/db/os/os_spin.c
index 9e53d3c80..7b40897ef 100644
--- a/db/os/os_spin.c
+++ b/db/os/os_spin.c
@@ -1,17 +1,16 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: os_spin.c,v 12.10 2006/08/24 14:46:18 bostic Exp $
+ * $Id: os_spin.c,v 12.13 2007/05/17 15:15:46 bostic Exp $
*/
#include "db_config.h"
#include "db_int.h"
-#ifndef NO_SYSTEM_INCLUDES
+#ifdef HAVE_SYSTEM_INCLUDE_FILES
#if defined(HAVE_PSTAT_GETDYNAMIC)
#include <sys/pstat.h>
#endif
diff --git a/db/os/os_stat.c b/db/os/os_stat.c
index 7a2abedb3..851924e58 100644
--- a/db/os/os_stat.c
+++ b/db/os/os_stat.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: os_stat.c,v 12.9 2006/08/24 14:46:18 bostic Exp $
+ * $Id: os_stat.c,v 12.12 2007/05/17 15:15:46 bostic Exp $
*/
#include "db_config.h"
@@ -28,6 +27,10 @@ __os_exists(dbenv, path, isdirp)
COMPQUIET(dbenv, NULL);
+ if (dbenv != NULL &&
+ FLD_ISSET(dbenv->verbose, DB_VERB_FILEOPS | DB_VERB_FILEOPS_ALL))
+ __db_msg(dbenv, "fileops: stat %s", path);
+
if (DB_GLOBAL(j_exists) != NULL)
return (DB_GLOBAL(j_exists)(path, isdirp));
@@ -75,7 +78,6 @@ __os_ioinfo(dbenv, path, fhp, mbytesp, bytesp, iosizep)
return (DB_GLOBAL(j_ioinfo)(path,
fhp->fd, mbytesp, bytesp, iosizep));
- /* Check for illegal usage. */
DB_ASSERT(dbenv, F_ISSET(fhp, DB_FH_OPENED) && fhp->fd != -1);
RETRY_CHK((fstat(fhp->fd, &sb)), ret);
diff --git a/db/os/os_tmpdir.c b/db/os/os_tmpdir.c
index 75cbb35a2..5b7e67d8a 100644
--- a/db/os/os_tmpdir.c
+++ b/db/os/os_tmpdir.c
@@ -1,17 +1,16 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1998-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1998,2007 Oracle. All rights reserved.
*
- * $Id: os_tmpdir.c,v 12.11 2006/08/24 14:46:18 bostic Exp $
+ * $Id: os_tmpdir.c,v 12.16 2007/05/17 15:15:46 bostic Exp $
*/
#include "db_config.h"
#include "db_int.h"
-#ifndef NO_SYSTEM_INCLUDES
+#ifdef HAVE_SYSTEM_INCLUDE_FILES
#ifdef macintosh
#include <TFileSpec.h>
#endif
@@ -32,25 +31,6 @@ __os_tmpdir(dbenv, flags)
u_int32_t flags;
{
int isdir, ret;
-
- /*
- * !!!
- * Don't change this to:
- *
- * static const char * const list[]
- *
- * because it creates a text relocation in position independent code.
- */
- static const char * list[] = {
- "/var/tmp",
- "/usr/tmp",
- "/temp", /* Windows. */
- "/tmp",
- "C:/temp", /* Windows. */
- "C:/tmp", /* Windows. */
- NULL
- };
- const char * const *lp;
char *tdir, tdir_buf[DB_MAXPATHLEN];
/* Use the environment if it's permitted and initialized. */
@@ -126,9 +106,30 @@ found: return (__os_strdup(dbenv, tdir, &dbenv->db_tmp_dir));
}
#endif
- /* Step through the static list looking for a possibility. */
- for (lp = list; *lp != NULL; ++lp)
- if (__os_exists(dbenv, *lp, &isdir) == 0 && isdir != 0)
- return (__os_strdup(dbenv, *lp, &dbenv->db_tmp_dir));
- return (0);
+ /*
+ * Step through the static list looking for a possibility.
+ *
+ * We don't use the obvious data structure because some C compilers
+ * (and I use the phrase loosely) don't like static data arrays.
+ */
+#define DB_TEMP_DIRECTORY(n) { \
+ char *__p = n; \
+ if (__os_exists(dbenv, __p, &isdir) == 0 && isdir != 0) \
+ return (__os_strdup(dbenv, __p, &dbenv->db_tmp_dir)); \
+ }
+#ifdef DB_WIN32
+ DB_TEMP_DIRECTORY("/temp");
+ DB_TEMP_DIRECTORY("C:/temp");
+ DB_TEMP_DIRECTORY("C:/tmp");
+#else
+ DB_TEMP_DIRECTORY("/var/tmp");
+ DB_TEMP_DIRECTORY("/usr/tmp");
+ DB_TEMP_DIRECTORY("/tmp");
+#endif
+
+ /*
+ * If we don't have any other place to store temporary files, store
+ * them in the current directory.
+ */
+ return (__os_strdup(dbenv, "", &dbenv->db_tmp_dir));
}
diff --git a/db/os/os_truncate.c b/db/os/os_truncate.c
index 42e07b7b2..713897869 100644
--- a/db/os/os_truncate.c
+++ b/db/os/os_truncate.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2004-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2004,2007 Oracle. All rights reserved.
*
- * $Id: os_truncate.c,v 12.7 2006/08/24 14:46:18 bostic Exp $
+ * $Id: os_truncate.c,v 12.10 2007/05/17 15:15:46 bostic Exp $
*/
#include "db_config.h"
@@ -33,6 +32,11 @@ __os_truncate(dbenv, fhp, pgno, pgsize)
*/
offset = (off_t)pgsize * pgno;
+ if (dbenv != NULL &&
+ FLD_ISSET(dbenv->verbose, DB_VERB_FILEOPS | DB_VERB_FILEOPS_ALL))
+ __db_msg(dbenv,
+ "fileops: truncate %s to %lu", fhp->name, (u_long)offset);
+
if (DB_GLOBAL(j_ftruncate) != NULL)
ret = DB_GLOBAL(j_ftruncate)(fhp->fd, offset);
else {
diff --git a/db/os/os_uid.c b/db/os/os_uid.c
index 46eaaa28d..2da1a66e3 100644
--- a/db/os/os_uid.c
+++ b/db/os/os_uid.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2001-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2001,2007 Oracle. All rights reserved.
*
- * $Id: os_uid.c,v 12.23 2006/09/15 19:24:50 bostic Exp $
+ * $Id: os_uid.c,v 12.27 2007/05/17 15:15:46 bostic Exp $
*/
#include "db_config.h"
@@ -22,9 +21,9 @@ __os_unique_id(dbenv, idp)
DB_ENV *dbenv;
u_int32_t *idp;
{
- static int first = 1;
+ db_timespec v;
pid_t pid;
- u_int32_t id, sec, usec;
+ u_int32_t id;
*idp = 0;
@@ -33,18 +32,19 @@ __os_unique_id(dbenv, idp)
* time of day and a stack address, all XOR'd together.
*/
__os_id(dbenv, &pid, NULL);
- __os_clock(dbenv, &sec, &usec);
+ __os_gettime(dbenv, &v);
- id = (u_int32_t)pid ^ sec ^ usec ^ P_TO_UINT32(&pid);
+ id = (u_int32_t)pid ^
+ (u_int32_t)v.tv_sec ^ (u_int32_t)v.tv_nsec ^ P_TO_UINT32(&pid);
/*
* We could try and find a reasonable random-number generator, but
* that's not all that easy to do. Seed and use srand()/rand(), if
* we can find them.
*/
- if (first == 1) {
+ if (DB_GLOBAL(uid_init) == 0) {
+ DB_GLOBAL(uid_init) = 1;
srand((u_int)id);
- first = 0;
}
id ^= (u_int)rand();
diff --git a/db/os/os_unlink.c b/db/os/os_unlink.c
index 9ebd44316..a6f2b385a 100644
--- a/db/os/os_unlink.c
+++ b/db/os/os_unlink.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: os_unlink.c,v 12.8 2006/08/24 14:46:18 bostic Exp $
+ * $Id: os_unlink.c,v 12.11 2007/05/17 15:15:46 bostic Exp $
*/
#include "db_config.h"
@@ -25,8 +24,13 @@ __os_region_unlink(dbenv, path)
#ifdef HAVE_QNX
int ret;
char *newname;
+#endif
+ if (dbenv != NULL &&
+ FLD_ISSET(dbenv->verbose, DB_VERB_FILEOPS | DB_VERB_FILEOPS_ALL))
+ __db_msg(dbenv, "fileops: unlink %s", path);
- if ((ret = __os_shmname(dbenv, path, &newname)) != 0)
+#ifdef HAVE_QNX
+ if ((ret = __os_qnx_shmname(dbenv, path, &newname)) != 0)
goto err;
if ((ret = shm_unlink(newname)) != 0) {
@@ -59,6 +63,10 @@ __os_unlink(dbenv, path)
{
int ret, t_ret;
+ if (dbenv != NULL &&
+ FLD_ISSET(dbenv->verbose, DB_VERB_FILEOPS | DB_VERB_FILEOPS_ALL))
+ __db_msg(dbenv, "fileops: unlink %s", path);
+
if (DB_GLOBAL(j_unlink) != NULL)
ret = DB_GLOBAL(j_unlink)(path);
else
diff --git a/db/os/os_yield.c b/db/os/os_yield.c
index 0043a7ca2..bc1a3d201 100644
--- a/db/os/os_yield.c
+++ b/db/os/os_yield.c
@@ -1,17 +1,16 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: os_yield.c,v 12.11 2006/09/06 13:33:25 bostic Exp $
+ * $Id: os_yield.c,v 12.14 2007/05/17 15:15:46 bostic Exp $
*/
#include "db_config.h"
#include "db_int.h"
-#ifndef NO_SYSTEM_INCLUDES
+#ifdef HAVE_SYSTEM_INCLUDE_FILES
#if defined(HAVE_SCHED_YIELD)
#include <sched.h>
#endif
diff --git a/db/os_brew/ctime.c b/db/os_brew/ctime.c
new file mode 100644
index 000000000..370d2fef7
--- /dev/null
+++ b/db/os_brew/ctime.c
@@ -0,0 +1,81 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 2001,2007 Oracle. All rights reserved.
+ *
+ * $Id: ctime.c,v 1.6 2007/05/17 15:15:46 bostic Exp $
+ */
+
+#include "db_config.h"
+
+#include "db_int.h"
+
+static void __os_brew_ct_numb __P((char *, int));
+
+/*
+ * __db_ctime --
+ * Format a time-stamp.
+ */
+char *
+__db_ctime(tod, time_buf)
+ const time_t *tod;
+ char *time_buf;
+{
+ JulianType jt;
+ time_t tt;
+ char *ncp;
+
+ strcpy(time_buf, "Thu Jan 01 00:00:00 1970");
+ time_buf[CTIME_BUFLEN - 1] = '\0';
+
+ /*
+ * Berkeley DB uses POSIX time values internally, convert to a BREW
+ * time value.
+ */
+ tt = *tod - BREW_EPOCH_OFFSET + LOCALTIMEOFFSET(NULL);
+ GETJULIANDATE(tt, &jt);
+
+ /*
+ * wWeekDay : Day of the week 0-6 (0=Monday, 6=Sunday)
+ */
+ ncp = &"MonTueWedThuFriSatSun"[jt.wWeekDay*3];
+ time_buf[0] = *ncp++;
+ time_buf[1] = *ncp++;
+ time_buf[2] = *ncp;
+ ncp = &"JanFebMarAprMayJunJulAugSepOctNovDec"[(jt.wMonth - 1) * 3];
+ time_buf[4] = *ncp++;
+ time_buf[5] = *ncp++;
+ time_buf[6] = *ncp;
+
+ __os_brew_ct_numb(time_buf + 8, jt.wDay);
+ /* Add 100 to keep the leading zero. */
+ __os_brew_ct_numb(time_buf + 11, jt.wHour + 100);
+ __os_brew_ct_numb(time_buf + 14, jt.wMinute + 100);
+ __os_brew_ct_numb(time_buf + 17, jt.wSecond + 100);
+
+ if (jt.wYear < 100) { /* 9 99 */
+ time_buf[20] = ' ';
+ time_buf[21] = ' ';
+ __os_brew_ct_numb(time_buf + 22, jt.wYear);
+ } else { /* 99 1999 */
+ __os_brew_ct_numb(time_buf + 20, jt.wYear / 100);
+ __os_brew_ct_numb(time_buf + 22, jt.wYear % 100 + 100);
+ }
+
+ return (time_buf);
+}
+
+/*
+ * ct_numb --
+ * Used by asctime.
+ */
+static void
+__os_brew_ct_numb(cp, n)
+ char *cp;
+ int n;
+{
+ cp[0] = ' ';
+ if (n >= 10)
+ cp[0] = (n / 10) % 10 + '0';
+ cp[1] = n % 10 + '0';
+}
diff --git a/db/os_brew/fclose.c b/db/os_brew/fclose.c
new file mode 100644
index 000000000..e1fb79b44
--- /dev/null
+++ b/db/os_brew/fclose.c
@@ -0,0 +1,32 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 2006,2007 Oracle. All rights reserved.
+ *
+ * $Id: fclose.c,v 1.3 2007/05/17 15:15:47 bostic Exp $
+ */
+
+#include "db_config.h"
+
+#include "db_int.h"
+
+/*
+ * fclose --
+ *
+ * PUBLIC: #ifndef HAVE_FCLOSE
+ * PUBLIC: int fclose __P((FILE *));
+ * PUBLIC: #endif
+ */
+int
+fclose(fp)
+ FILE *fp;
+{
+ /*
+ * Release (close) the file.
+ *
+ * Returns the updated reference count, which is of no use to us.
+ */
+ (void)IFILE_Release(fp);
+
+ return (0);
+}
diff --git a/db/os_brew/fgetc.c b/db/os_brew/fgetc.c
new file mode 100644
index 000000000..de75b3665
--- /dev/null
+++ b/db/os_brew/fgetc.c
@@ -0,0 +1,31 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 2006,2007 Oracle. All rights reserved.
+ *
+ * $Id: fgetc.c,v 1.3 2007/05/17 15:15:47 bostic Exp $
+ */
+
+#include "db_config.h"
+
+#include "db_int.h"
+
+/*
+ * fgetc --
+ *
+ * PUBLIC: #ifndef HAVE_FGETC
+ * PUBLIC: int fgetc __P((FILE *));
+ * PUBLIC: #endif
+ */
+int
+fgetc(fp)
+ FILE *fp;
+{
+ char b[1];
+
+ if (IFILE_Read(fp, b, 1))
+ return ((int)b[0]);
+
+ __os_set_errno(EIO);
+ return (EOF);
+}
diff --git a/db/os_brew/fgets.c b/db/os_brew/fgets.c
new file mode 100644
index 000000000..c7c093100
--- /dev/null
+++ b/db/os_brew/fgets.c
@@ -0,0 +1,42 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 2006,2007 Oracle. All rights reserved.
+ *
+ * $Id: fgets.c,v 1.3 2007/05/17 15:15:47 bostic Exp $
+ */
+
+#include "db_config.h"
+
+#include "db_int.h"
+
+/*
+ * fgets --
+ *
+ * PUBLIC: #ifndef HAVE_FGETS
+ * PUBLIC: char *fgets __P((char *, int, FILE *));
+ * PUBLIC: #endif
+ */
+char *
+fgets(s, n, fp)
+ char *s;
+ int n;
+ FILE *fp;
+{
+ int c;
+ char *cs;
+
+ c = 0;
+ cs = s;
+
+ while (--n > 0 && (c = fgetc(fp)) != EOF) {
+ *cs++ = c;
+ if (c == '\n')
+ break;
+ }
+ if (c == EOF && cs == s)
+ return (NULL);
+
+ *cs++ = '\0';
+ return (s);
+}
diff --git a/db/os_brew/fopen.c b/db/os_brew/fopen.c
new file mode 100644
index 000000000..b6ef02bca
--- /dev/null
+++ b/db/os_brew/fopen.c
@@ -0,0 +1,89 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 2006,2007 Oracle. All rights reserved.
+ *
+ * $Id: fopen.c,v 1.4 2007/05/17 15:15:47 bostic Exp $
+ */
+
+#include "db_config.h"
+
+#include "db_int.h"
+
+/*
+ * fopen --
+ *
+ * PUBLIC: #ifndef HAVE_FOPEN
+ * PUBLIC: FILE *fopen __P((const char *, const char *));
+ * PUBLIC: #endif
+ */
+FILE *
+fopen(filename, mode)
+ const char *filename, *mode;
+{
+ IFile *pIFile;
+ IFileMgr *pIFileMgr;
+ OpenFileMode flags;
+ int f_exists, ret, update_flag;
+
+ /*
+ * Note: files are created with read/write privilege.
+ *
+ * Upon successful completion, fopen() returns a pointer to the
+ * object controlling the stream. Otherwise, NULL is returned,
+ * and errno is set to indicate the error.
+ */
+ DB_ASSERT(NULL, filename != NULL && mode != NULL);
+
+ FILE_MANAGER_CREATE(NULL, pIFileMgr, ret);
+ if (ret != 0) {
+ __os_set_errno(ret);
+ return (NULL);
+ }
+
+ /*
+ * The argument mode points to a string beginning with one of the
+ * following sequences:
+ * r or rb
+ * Open file for reading.
+ * w or wb
+ * Truncate to zero length or create file for writing.
+ * a or ab
+ * Append; open or create file for writing at end-of-file.
+ * r+ or rb+ or r+b
+ * Open file for update (reading and writing).
+ * w+ or wb+ or w+b
+ * Truncate to zero length or create file for update.
+ * a+ or ab+ or a+b
+ * Append; open or create file for update, writing at end-of-file.
+ */
+ flags = 0;
+ update_flag = strchr(mode, '+') ? 1 : 0;
+ switch (*mode) {
+ case 'a': /* append mode */
+ flags = _OFM_APPEND | _OFM_CREATE;
+ break;
+ case 'r': /* read mode */
+ flags = update_flag ? _OFM_READWRITE : _OFM_READ;
+ break;
+ case 'w': /* write mode */
+ flags = _OFM_READWRITE | _OFM_CREATE;
+ break;
+ }
+
+ f_exists = IFILEMGR_Test(pIFileMgr, filename) == SUCCESS ? 1 : 0;
+ if (f_exists)
+ LF_CLR(_OFM_CREATE); /* Clear _OFM_CREATE. */
+ else
+ LF_CLR(~_OFM_CREATE); /* Leave only _OFM_CREATE. */
+
+ if ((pIFile = IFILEMGR_OpenFile(
+ pIFileMgr, filename, (OpenFileMode)flags)) == NULL) {
+ FILE_MANAGER_ERR(NULL,
+ pIFileMgr, filename, "IFILEMGR_OpenFile", ret);
+ __os_set_errno(ret);
+ }
+
+ IFILEMGR_Release(pIFileMgr);
+ return (pIFile);
+}
diff --git a/db/os_brew/fwrite.c b/db/os_brew/fwrite.c
new file mode 100644
index 000000000..426b22ce9
--- /dev/null
+++ b/db/os_brew/fwrite.c
@@ -0,0 +1,31 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 2006,2007 Oracle. All rights reserved.
+ *
+ * $Id: fwrite.c,v 1.4 2007/05/17 15:15:47 bostic Exp $
+ */
+
+#include "db_config.h"
+
+#include "db_int.h"
+
+/*
+ * fwrite --
+ *
+ * PUBLIC: #ifndef HAVE_FWRITE
+ * PUBLIC: size_t fwrite __P((const void *, size_t, size_t, FILE *));
+ * PUBLIC: #endif
+ */
+size_t
+fwrite(buf, size, count, fp)
+ const void *buf;
+ size_t size, count;
+ FILE *fp;
+{
+ if (fp == stderr) {
+ DBGPRINTF("%.*s", (int)count, buf);
+ return (size * count);
+ } else
+ return ((size_t)IFILE_Write(fp, buf, size * count) / size);
+}
diff --git a/db/os_brew/getcwd.c b/db/os_brew/getcwd.c
new file mode 100644
index 000000000..6a690ae1b
--- /dev/null
+++ b/db/os_brew/getcwd.c
@@ -0,0 +1,61 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 2006,2007 Oracle. All rights reserved.
+ *
+ * $Id: getcwd.c,v 1.4 2007/05/17 15:15:47 bostic Exp $
+ */
+
+#include "db_config.h"
+
+#include "db_int.h"
+
+/*
+ * getcwd --
+ */
+char *
+getcwd(buf, size)
+ char *buf;
+ size_t size;
+{
+ IFileMgr *pIFileMgr;
+ int ret;
+#ifndef HAVE_BREW_SDK2
+ int outlen;
+#endif
+
+ FILE_MANAGER_CREATE(NULL, pIFileMgr, ret);
+ if (ret != 0) {
+ __os_set_errno(ret);
+ return (NULL);
+ }
+
+ buf[0] = '\0';
+
+#ifdef AEE_SIMULATOR
+ /* If AEE_SIMULATOR, we should mimic the resolvepath. */
+ if (IFILEMGR_Test(pIFileMgr, "fs:/") == SUCCESS)
+ /* Current directory. */
+ (void)strncpy(buf, "fs:/", size - 1);
+ else
+ FILE_MANAGER_ERR(
+ NULL, pIFileMgr, NULL, "IFILEMGR_ResolvePath", ret);
+#else
+#ifndef HAVE_BREW_SDK2
+ outlen = size;
+ if (IFILEMGR_ResolvePath(pIFileMgr, ".", buf, &outlen) != SUCCESS)
+ FILE_MANAGER_ERR(
+ NULL, pIFileMgr, NULL, "IFILEMGR_ResolvePath", ret);
+#endif
+#endif
+
+ IFILEMGR_Release(pIFileMgr);
+
+ if (ret == 0)
+ return (buf);
+
+ __os_set_errno(ret);
+
+ COMPQUIET(size, 0);
+ return (NULL);
+}
diff --git a/db/os_brew/globals.c b/db/os_brew/globals.c
new file mode 100644
index 000000000..8462bfaaa
--- /dev/null
+++ b/db/os_brew/globals.c
@@ -0,0 +1,53 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 1999,2007 Oracle. All rights reserved.
+ *
+ * $Id: globals.c,v 1.4 2007/05/17 15:15:47 bostic Exp $
+ */
+
+#include "db_config.h"
+
+#include "db_int.h"
+
+/*
+ * brew_bdb_begin --
+ * Initialize the BREW port of Berkeley DB.
+ */
+int
+brew_bdb_begin()
+{
+ void *p;
+
+ /*
+ * The BREW ARM compiler can't handle statics or globals, so we have
+ * store them off the AEEApplet and initialize them in in-line code.
+ */
+ p = ((BDBApp *)GETAPPINSTANCE())->db_global_values;
+ if (p == NULL) {
+ if ((p = malloc(sizeof(DB_GLOBALS))) == NULL)
+ return (ENOMEM);
+ memset(p, 0, sizeof(DB_GLOBALS));
+
+ ((BDBApp *)GETAPPINSTANCE())->db_global_values = p;
+
+ TAILQ_INIT(&DB_GLOBAL(db_envq));
+ DB_GLOBAL(db_line) =
+ "=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=";
+ }
+ return (0);
+}
+
+/*
+ * brew_bdb_end --
+ * Close down the BREW port of Berkeley DB.
+ */
+void
+brew_bdb_end()
+{
+ void *p;
+
+ p = ((BDBApp *)GETAPPINSTANCE())->db_global_values;
+
+ free(p);
+}
diff --git a/db/os_brew/localtime.c b/db/os_brew/localtime.c
new file mode 100644
index 000000000..7c669dd1d
--- /dev/null
+++ b/db/os_brew/localtime.c
@@ -0,0 +1,78 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 2006,2007 Oracle. All rights reserved.
+ *
+ * $Id: localtime.c,v 1.9 2007/05/17 15:15:47 bostic Exp $
+ */
+
+#include "db_config.h"
+
+#include "db_int.h"
+
+/*
+ * localtime --
+ *
+ * PUBLIC: #ifndef HAVE_LOCALTIME
+ * PUBLIC: struct tm *localtime __P((const time_t *));
+ * PUBLIC: #endif
+ */
+struct tm *
+localtime(tod)
+ const time_t *tod;
+{
+ JulianType jt;
+ boolean is_ds; /* Daylight savings. */
+ time_t tt;
+ int increment;
+
+ /*
+ * Berkeley DB uses POSIX time values internally, convert to a BREW
+ * time value.
+ */
+ is_ds = 0;
+ tt = *tod - BREW_EPOCH_OFFSET + LOCALTIMEOFFSET(&is_ds);
+
+ GETJULIANDATE(tt, &jt);
+
+ DB_GLOBAL(ltm).tm_sec = jt.wSecond; /* seconds (0 - 60) */
+ DB_GLOBAL(ltm).tm_min = jt.wMinute; /* minutes (0 - 59) */
+ DB_GLOBAL(ltm).tm_hour = jt.wHour; /* hours (0 - 23) */
+ DB_GLOBAL(ltm).tm_mday = jt.wDay; /* day of month (1 - 31) */
+ DB_GLOBAL(ltm).tm_mon = jt.wMonth - 1; /* month of year (0 - 11) */
+ /* year - 1900 */
+ DB_GLOBAL(ltm).tm_year = jt.wYear - 1900;
+ /* day of week (Sunday = 0) */
+ DB_GLOBAL(ltm).tm_wday = (jt.wWeekDay + 1) % 7;
+ /* day of year (0 - 365) */
+ switch (DB_GLOBAL(ltm).tm_mon) {
+ default:
+ case 0: increment = 0; break;
+ case 1: increment = 31; break;
+ case 2: increment = 59; break; /* Feb = 28 */
+ case 3: increment = 90; break;
+ case 4: increment = 120; break;
+ case 5: increment = 151; break;
+ case 6: increment = 181; break;
+ case 7: increment = 212; break;
+ case 8: increment = 243; break;
+ case 9: increment = 273; break;
+ case 10: increment = 304; break;
+ case 11: increment = 334; break;
+ }
+ DB_GLOBAL(ltm).tm_yday = increment + DB_GLOBAL(ltm).tm_mday - 1;
+
+ if (DB_GLOBAL(ltm).tm_mon > 1 && /* +1 leap years after Feb. */
+ jt.wYear % 4 == 0 && (jt.wYear % 100 != 0 || jt.wYear % 400 == 0))
+ DB_GLOBAL(ltm).tm_yday += 1;
+
+ DB_GLOBAL(ltm).tm_isdst = is_ds; /* daylight savings time */
+
+ /*
+ * !!!
+ * This routine is not thread-safe. Berkeley DB should convert
+ * to using localtime_r() where it's available, and this routine
+ * should be re-written in the form of localtime_r().
+ */
+ return (&DB_GLOBAL(ltm));
+}
diff --git a/db/os_brew/os_abort.c b/db/os_brew/os_abort.c
new file mode 100644
index 000000000..84e063a7c
--- /dev/null
+++ b/db/os_brew/os_abort.c
@@ -0,0 +1,25 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 2005,2007 Oracle. All rights reserved.
+ *
+ * $Id: os_abort.c,v 1.6 2007/05/17 15:15:47 bostic Exp $
+ */
+
+#include "db_config.h"
+
+#include "db_int.h"
+
+/*
+ * __os_abort --
+ */
+void
+__os_abort()
+{
+ AEEApplet *app;
+
+ app = (AEEApplet *)GETAPPINSTANCE();
+ ISHELL_CloseApplet(app->m_pIShell, FALSE);
+
+ /* NOTREACHED */
+}
diff --git a/db/os_brew/os_abs.c b/db/os_brew/os_abs.c
new file mode 100644
index 000000000..318566e19
--- /dev/null
+++ b/db/os_brew/os_abs.c
@@ -0,0 +1,22 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 2006,2007 Oracle. All rights reserved.
+ *
+ * $Id: os_abs.c,v 1.4 2007/05/17 15:15:47 bostic Exp $
+ */
+
+#include "db_config.h"
+
+#include "db_int.h"
+
+/*
+ * __os_abspath --
+ * Return if a path is an absolute path.
+ */
+int
+__os_abspath(path)
+ const char *path;
+{
+ return (path[0] == 'f' && path[1] == 's' && path[2] == ':');
+}
diff --git a/db/os_brew/os_config.c b/db/os_brew/os_config.c
new file mode 100644
index 000000000..389900cf5
--- /dev/null
+++ b/db/os_brew/os_config.c
@@ -0,0 +1,59 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 1998,2007 Oracle. All rights reserved.
+ *
+ * $Id: os_config.c,v 1.5 2007/05/17 15:15:47 bostic Exp $
+ */
+
+#include "db_config.h"
+
+#include "db_int.h"
+
+/*
+ * __os_fs_notzero --
+ * Return 1 if allocated filesystem blocks are not zeroed.
+ */
+int
+__os_fs_notzero()
+{
+ /*
+ * XXX
+ * We don't know if the BREW filesystem zero-fills newly allocated
+ * filesystem blocks. For now, be conservative and zero out blocks
+ * in Berkeley DB.
+ *
+ * This should be tested.
+ */
+ return (1);
+}
+
+/*
+ * __os_support_direct_io --
+ * Return 1 if we support direct I/O.
+ */
+int
+__os_support_direct_io()
+{
+ return (0);
+}
+
+/*
+ * __os_support_db_register --
+ * Return 1 if the system supports DB_REGISTER.
+ */
+int
+__os_support_db_register()
+{
+ return (0);
+}
+
+/*
+ * __os_support_replication --
+ * Return 1 if the system supports replication.
+ */
+int
+__os_support_replication()
+{
+ return (0);
+}
diff --git a/db/os_brew/os_dir.c b/db/os_brew/os_dir.c
new file mode 100644
index 000000000..b5f94b523
--- /dev/null
+++ b/db/os_brew/os_dir.c
@@ -0,0 +1,84 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
+ *
+ * $Id: os_dir.c,v 1.5 2007/05/17 15:15:47 bostic Exp $
+ */
+
+#include "db_config.h"
+
+#include "db_int.h"
+
+/*
+ * __os_dirlist --
+ * Return a list of the files in a directory.
+ */
+int
+__os_dirlist(dbenv, dir, namesp, cntp)
+ DB_ENV *dbenv;
+ const char *dir;
+ char ***namesp;
+ int *cntp;
+{
+ FileInfo fi;
+ IFileMgr *pIFileMgr;
+ int arraysz, cnt, ret;
+ char *filename, *p, **names;
+
+ FILE_MANAGER_CREATE(dbenv, pIFileMgr, ret);
+ if (ret != 0)
+ return (ret);
+
+ if ((ret = IFILEMGR_EnumInit(pIFileMgr, dir, FALSE)) != SUCCESS) {
+ IFILEMGR_Release(pIFileMgr);
+ __db_syserr(dbenv, ret, "IFILEMGR_EnumInit");
+ return (__os_posix_err(ret));
+ }
+
+ names = NULL;
+ arraysz = cnt = 0;
+ while (IFILEMGR_EnumNext(pIFileMgr, &fi) != FALSE) {
+ cnt ++;
+
+ if (cnt >= arraysz) {
+ arraysz += 100;
+ if ((ret = __os_realloc(dbenv,
+ (u_int)arraysz * sizeof(char *), &names)) != 0)
+ goto nomem;
+ }
+ for (filename = fi.szName;
+ (p = strchr(filename, '\\')) != NULL; filename = p + 1)
+ ;
+ for (; (p = strchr(filename, '/')) != NULL; filename = p + 1)
+ ;
+ if ((ret = __os_strdup(dbenv, filename, &names[cnt - 1])) != 0)
+ goto nomem;
+ }
+ IFILEMGR_Release(pIFileMgr);
+
+ *namesp = names;
+ *cntp = cnt;
+ return (ret);
+
+nomem: if (names != NULL)
+ __os_dirfree(dbenv, names, cnt);
+ IFILEMGR_Release(pIFileMgr);
+
+ return (ret);
+}
+
+/*
+ * __os_dirfree --
+ * Free the list of files.
+ */
+void
+__os_dirfree(dbenv, names, cnt)
+ DB_ENV *dbenv;
+ char **names;
+ int cnt;
+{
+ while (cnt > 0)
+ __os_free(dbenv, names[--cnt]);
+ __os_free(dbenv, names);
+}
diff --git a/db/os_brew/os_errno.c b/db/os_brew/os_errno.c
new file mode 100644
index 000000000..29b78a970
--- /dev/null
+++ b/db/os_brew/os_errno.c
@@ -0,0 +1,196 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 1999,2007 Oracle. All rights reserved.
+ *
+ * $Id: os_errno.c,v 1.5 2007/05/17 15:15:47 bostic Exp $
+ */
+
+#include "db_config.h"
+
+#include "db_int.h"
+
+/*
+ * __os_get_errno_ret_zero --
+ * Return the last system error, including an error of zero.
+ */
+int
+__os_get_errno_ret_zero()
+{
+ /* This routine must be able to return the same value repeatedly. */
+ return (errno);
+}
+
+/*
+ * We've seen cases where system calls failed but errno was never set. For
+ * that reason, __os_get_errno() and __os_get_syserr set errno to EAGAIN if
+ * it's not already set, to work around the problem. For obvious reasons,
+ * we can only call this function if we know an error has occurred, that
+ * is, we can't test the return for a non-zero value after the get call.
+ *
+ * __os_get_errno --
+ * Return the last ANSI C "errno" value or EAGAIN if the last error
+ * is zero.
+ */
+int
+__os_get_errno()
+{
+ /* This routine must be able to return the same value repeatedly. */
+ if (errno == 0)
+ __os_set_errno(EAGAIN);
+ return (errno);
+}
+
+/*
+ * __os_get_syserr --
+ * Return the last system error or EAGAIN if the last error is zero.
+ */
+int
+__os_get_syserr()
+{
+ /* This routine must be able to return the same value repeatedly. */
+ if (errno == 0)
+ __os_set_errno(EAGAIN);
+ return (errno);
+}
+
+/*
+ * __os_set_errno --
+ * Set the value of errno.
+ */
+void
+__os_set_errno(evalue)
+ int evalue;
+{
+ /*
+ * This routine is called by the compatibility interfaces (DB 1.85,
+ * dbm and hsearch). Force values > 0, that is, not one of DB 2.X
+ * and later's public error returns. If something bad has happened,
+ * default to EFAULT -- a nasty return. Otherwise, default to EINVAL.
+ * As the compatibility APIs aren't included on Windows, the Windows
+ * version of this routine doesn't need this behavior.
+ */
+ errno =
+ evalue >= 0 ? evalue : (evalue == DB_RUNRECOVERY ? EFAULT : EINVAL);
+}
+
+/*
+ * __os_strerror --
+ * Return a string associated with the system error.
+ */
+char *
+__os_strerror(error, buf, len)
+ int error;
+ char *buf;
+ size_t len;
+{
+ char *p;
+
+ switch (error) {
+ case EBADFILENAME:
+ p = "EBADFILENAME";
+ break;
+ case EBADSEEKPOS:
+ p = "EBADSEEKPOS";
+ break;
+#ifndef HAVE_BREW_SDK2
+ case EDIRNOEXISTS:
+ p = "EDIRNOEXISTS";
+ break;
+#endif
+ case EDIRNOTEMPTY:
+ p = "EDIRNOTEMPTY";
+ break;
+ case EFILEEOF:
+ p = "EFILEEOF";
+ break;
+ case EFILEEXISTS:
+ p = "EFILEEXISTS";
+ break;
+ case EFILENOEXISTS:
+ p = "EFILENOEXISTS";
+ break;
+ case EFILEOPEN:
+ p = "EFILEOPEN";
+ break;
+ case EFSFULL:
+ p = "EFSFULL";
+ break;
+#ifndef HAVE_BREW_SDK2
+ case EINVALIDOPERATION:
+ p = "EINVALIDOPERATION";
+ break;
+ case ENOMEDIA:
+ p = "ENOMEDIA";
+ break;
+#endif
+ case ENOMEMORY:
+ p = "ENOMEMORY";
+ break;
+ case EOUTOFNODES:
+ p = "EOUTOFNODES";
+ break;
+ default:
+ p = __db_unknown_error(error);
+ break;
+ }
+
+ (void)strncpy(buf, p, len - 1);
+ buf[len - 1] = '\0';
+
+ return (buf);
+}
+
+/*
+ * __os_posix_err
+ * Convert a system error to a POSIX error.
+ */
+int
+__os_posix_err(error)
+ int error;
+{
+ int ret;
+
+ switch (error) {
+ case EBADFILENAME:
+#ifndef HAVE_BREW_SDK2
+ case EDIRNOEXISTS:
+#endif
+ case EDIRNOTEMPTY:
+ case EFILENOEXISTS:
+ ret = ENOENT;
+ break;
+
+ case EOUTOFNODES:
+ ret = EMFILE;
+ break;
+
+ case ENOMEMORY:
+ ret = ENOMEM;
+ break;
+
+ case EFSFULL:
+ ret = ENOSPC;
+ break;
+
+#ifndef HAVE_BREW_SDK2
+ case EINVALIDOPERATION:
+ ret = DB_OPNOTSUP;
+ break;
+#endif
+
+ case EFILEEXISTS:
+ ret = EEXIST;
+ break;
+
+ case EBADSEEKPOS:
+ case EFILEEOF:
+ ret = EIO;
+ break;
+
+ default:
+ ret = EFAULT;
+ break;
+ }
+ return (ret);
+}
diff --git a/db/os_brew/os_handle.c b/db/os_brew/os_handle.c
new file mode 100644
index 000000000..4f832377e
--- /dev/null
+++ b/db/os_brew/os_handle.c
@@ -0,0 +1,102 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 1998,2007 Oracle. All rights reserved.
+ *
+ * $Id: os_handle.c,v 1.5 2007/05/17 15:15:47 bostic Exp $
+ */
+
+#include "db_config.h"
+
+#include "db_int.h"
+
+/*
+ * __os_openhandle --
+ * Open a file, using BREW open flags.
+ */
+int
+__os_openhandle(dbenv, name, flags, mode, fhpp)
+ DB_ENV *dbenv;
+ const char *name;
+ int flags, mode;
+ DB_FH **fhpp;
+{
+ DB_FH *fhp;
+ IFile *pIFile;
+ IFileMgr *pIFileMgr;
+ int f_exists, ret;
+
+ COMPQUIET(mode, 0);
+
+ FILE_MANAGER_CREATE(dbenv, pIFileMgr, ret);
+ if (ret != 0)
+ return (ret);
+
+ /*
+ * Allocate the file handle and copy the file name. We generally only
+ * use the name for verbose or error messages, but on systems where we
+ * can't unlink temporary files immediately, we use the name to unlink
+ * the temporary file when the file handle is closed.
+ */
+ if ((ret = __os_calloc(dbenv, 1, sizeof(DB_FH), &fhp)) != 0)
+ return (ret);
+ if ((ret = __os_strdup(dbenv, name, &fhp->name)) != 0)
+ goto err;
+
+ /*
+ * Test the file before opening. BREW doesn't want to see the
+ * _OFM_CREATE flag if the file already exists, and it doesn't
+ * want to see any other flag if the file doesn't exist.
+ */
+ f_exists = IFILEMGR_Test(pIFileMgr, name) == SUCCESS ? 1 : 0;
+ if (f_exists)
+ LF_CLR(_OFM_CREATE); /* Clear _OFM_CREATE. */
+ else
+ LF_CLR(~_OFM_CREATE); /* Leave only _OFM_CREATE. */
+
+ if ((pIFile =
+ IFILEMGR_OpenFile(pIFileMgr, name, (OpenFileMode)flags)) == NULL) {
+ FILE_MANAGER_ERR(dbenv,
+ pIFileMgr, name, "IFILEMGR_OpenFile", ret);
+ goto err;
+ }
+
+ fhp->ifp = pIFile;
+ IFILEMGR_Release(pIFileMgr);
+
+ F_SET(fhp, DB_FH_OPENED);
+ *fhpp = fhp;
+ return (0);
+
+err: if (pIFile != NULL)
+ IFILE_Release(pIFile);
+ IFILEMGR_Release(pIFileMgr);
+
+ if (fhp != NULL)
+ (void)__os_closehandle(dbenv, fhp);
+ return (ret);
+}
+
+/*
+ * __os_closehandle --
+ * Close a file.
+ */
+int
+__os_closehandle(dbenv, fhp)
+ DB_ENV *dbenv;
+ DB_FH *fhp;
+{
+ /* Discard any underlying system file reference. */
+ if (F_ISSET(fhp, DB_FH_OPENED))
+ (void)IFILE_Release(fhp->ifp);
+
+ /* Unlink the file if we haven't already done so. */
+ if (F_ISSET(fhp, DB_FH_UNLINK))
+ (void)__os_unlink(dbenv, fhp->name);
+
+ if (fhp->name != NULL)
+ __os_free(dbenv, fhp->name);
+ __os_free(dbenv, fhp);
+
+ return (0);
+}
diff --git a/db/os_brew/os_mkdir.c b/db/os_brew/os_mkdir.c
new file mode 100644
index 000000000..93e15ee90
--- /dev/null
+++ b/db/os_brew/os_mkdir.c
@@ -0,0 +1,40 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
+ *
+ * $Id: os_mkdir.c,v 1.4 2007/05/17 15:15:47 bostic Exp $
+ */
+
+#include "db_config.h"
+
+#include "db_int.h"
+
+/*
+ * __os_mkdir --
+ * Create a directory.
+ */
+int
+__os_mkdir(dbenv, name, mode)
+ DB_ENV *dbenv;
+ const char *name;
+ int mode;
+{
+ IFileMgr *ifmp;
+ int ret;
+
+ COMPQUIET(mode, 0);
+
+ FILE_MANAGER_CREATE(dbenv, ifmp, ret);
+ if (ret != 0)
+ return (ret);
+
+ if (IFILEMGR_MkDir(ifmp, name) == SUCCESS)
+ ret = 0;
+ else
+ FILE_MANAGER_ERR(dbenv, ifmp, name, "IFILEMGR_MkDir", ret);
+
+ IFILEMGR_Release(ifmp);
+
+ return (ret);
+}
diff --git a/db/os_brew/os_oflags.c b/db/os_brew/os_oflags.c
new file mode 100644
index 000000000..5801795e9
--- /dev/null
+++ b/db/os_brew/os_oflags.c
@@ -0,0 +1,27 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
+ *
+ * $Id: os_oflags.c,v 1.4 2007/05/17 15:15:47 bostic Exp $
+ */
+
+#include "db_config.h"
+
+#include "db_int.h"
+
+/*
+ * __db_omode --
+ * Convert a permission string to the correct open(2) flags.
+ */
+int
+__db_omode(perm)
+ const char *perm;
+{
+ COMPQUIET(perm, NULL);
+
+ /*
+ * BREW doesn't have permission modes, we're kind of done.
+ */
+ return (0);
+}
diff --git a/db/os_brew/os_open.c b/db/os_brew/os_open.c
new file mode 100644
index 000000000..17a590a9d
--- /dev/null
+++ b/db/os_brew/os_open.c
@@ -0,0 +1,47 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
+ *
+ * $Id: os_open.c,v 1.5 2007/05/17 15:15:47 bostic Exp $
+ */
+
+#include "db_config.h"
+
+#include "db_int.h"
+
+/*
+ * __os_open --
+ * Open a file descriptor (including page size and log size information).
+ */
+int
+__os_open(dbenv, name, page_size, flags, mode, fhpp)
+ DB_ENV *dbenv;
+ const char *name;
+ u_int32_t page_size, flags;
+ int mode;
+ DB_FH **fhpp;
+{
+ OpenFileMode oflags;
+ int ret;
+
+ COMPQUIET(page_size, 0);
+
+#define OKFLAGS \
+ (DB_OSO_ABSMODE | DB_OSO_CREATE | DB_OSO_DIRECT | DB_OSO_DSYNC |\
+ DB_OSO_EXCL | DB_OSO_RDONLY | DB_OSO_REGION | DB_OSO_SEQ | \
+ DB_OSO_TEMP | DB_OSO_TRUNC)
+ if ((ret = __db_fchk(dbenv, "__os_open", flags, OKFLAGS)) != 0)
+ return (ret);
+
+ oflags = 0;
+ if (LF_ISSET(DB_OSO_CREATE))
+ oflags |= _OFM_CREATE;
+
+ if (LF_ISSET(DB_OSO_RDONLY))
+ oflags |= _OFM_READ;
+ else
+ oflags |= _OFM_READWRITE;
+
+ return (__os_openhandle(dbenv, name, oflags, mode, fhpp));
+}
diff --git a/db/os_brew/os_pid.c b/db/os_brew/os_pid.c
new file mode 100644
index 000000000..eedd85db0
--- /dev/null
+++ b/db/os_brew/os_pid.c
@@ -0,0 +1,33 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 2001,2007 Oracle. All rights reserved.
+ *
+ * $Id: os_pid.c,v 1.5 2007/05/17 15:15:47 bostic Exp $
+ */
+
+#include "db_config.h"
+
+#include "db_int.h"
+
+/*
+ * __os_id --
+ * Return the current process ID.
+ */
+void
+__os_id(dbenv, pidp, tidp)
+ DB_ENV *dbenv;
+ pid_t *pidp;
+ db_threadid_t *tidp;
+{
+ AEEApplet *app;
+
+ COMPQUIET(dbenv, NULL);
+
+ if (pidp != NULL) {
+ app = (AEEApplet *)GETAPPINSTANCE();
+ *pidp = (pid_t)ISHELL_ActiveApplet(app->m_pIShell);
+ }
+ if (tidp != NULL)
+ *tidp = 0;
+}
diff --git a/db/os_brew/os_rename.c b/db/os_brew/os_rename.c
new file mode 100644
index 000000000..9f60e4654
--- /dev/null
+++ b/db/os_brew/os_rename.c
@@ -0,0 +1,41 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
+ *
+ * $Id: os_rename.c,v 1.4 2007/05/17 15:15:47 bostic Exp $
+ */
+
+#include "db_config.h"
+
+#include "db_int.h"
+
+/*
+ * __os_rename --
+ * Rename a file.
+ */
+int
+__os_rename(dbenv, old, new, silent)
+ DB_ENV *dbenv;
+ const char *old, *new;
+ u_int32_t silent;
+{
+ IFileMgr *pIFileMgr;
+ int ret;
+
+ FILE_MANAGER_CREATE(dbenv, pIFileMgr, ret);
+ if (ret != 0)
+ return (ret);
+
+ if (IFILEMGR_Rename(pIFileMgr, old, new) == SUCCESS)
+ ret = 0;
+ else
+ if (!silent)
+ FILE_MANAGER_ERR(dbenv,
+ pIFileMgr, old, "IFILEMGR_Rename", ret);
+ else
+ ret = __os_posix_err(IFILEMGR_GetLastError(pIFileMgr));
+
+ IFILEMGR_Release(pIFileMgr);
+ return (ret);
+}
diff --git a/db/os_brew/os_rw.c b/db/os_brew/os_rw.c
new file mode 100644
index 000000000..0a7c7a264
--- /dev/null
+++ b/db/os_brew/os_rw.c
@@ -0,0 +1,138 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
+ *
+ * $Id: os_rw.c,v 1.6 2007/05/17 15:15:47 bostic Exp $
+ */
+
+#include "db_config.h"
+
+#include "db_int.h"
+
+/*
+ * __os_io --
+ * Do an I/O.
+ */
+int
+__os_io(dbenv, op, fhp, pgno, pgsize, relative, io_len, buf, niop)
+ DB_ENV *dbenv;
+ int op;
+ DB_FH *fhp;
+ db_pgno_t pgno;
+ u_int32_t pgsize, relative, io_len;
+ u_int8_t *buf;
+ size_t *niop;
+{
+ int ret;
+
+ MUTEX_LOCK(dbenv, fhp->mtx_fh);
+
+ if ((ret = __os_seek(dbenv, fhp, pgno, pgsize, relative)) != 0)
+ goto err;
+ switch (op) {
+ case DB_IO_READ:
+ ret = __os_read(dbenv, fhp, buf, io_len, niop);
+ break;
+ case DB_IO_WRITE:
+ ret = __os_write(dbenv, fhp, buf, io_len, niop);
+ break;
+ default:
+ ret = EINVAL;
+ break;
+ }
+
+err: MUTEX_UNLOCK(dbenv, fhp->mtx_fh);
+
+ return (ret);
+
+}
+
+/*
+ * __os_read --
+ * Read from a file handle.
+ */
+int
+__os_read(dbenv, fhp, addr, len, nrp)
+ DB_ENV *dbenv;
+ DB_FH *fhp;
+ void *addr;
+ size_t len;
+ size_t *nrp;
+{
+ FileInfo pInfo;
+ int ret;
+
+ ret = 0;
+ if ((*nrp = (size_t)IFILE_Read(fhp->ifp, addr, len)) != len) {
+ IFILE_GetInfo(fhp->ifp, &pInfo);
+ if (pInfo.dwSize != 0) {
+ ret = __os_get_syserr();
+ __db_syserr(dbenv, ret, "IFILE_Read: %#lx, %lu",
+ P_TO_ULONG(addr), (u_long)len);
+ ret = __os_posix_err(ret);
+ }
+ }
+ return (ret);
+}
+
+/*
+ * __os_write --
+ * Write to a file handle.
+ */
+int
+__os_write(dbenv, fhp, addr, len, nwp)
+ DB_ENV *dbenv;
+ DB_FH *fhp;
+ void *addr;
+ size_t len;
+ size_t *nwp;
+{
+
+#ifdef HAVE_FILESYSTEM_NOTZERO
+ /* Zero-fill as necessary. */
+ if (__os_fs_notzero()) {
+ int ret;
+ if ((ret = __os_zerofill(dbenv, fhp)) != 0)
+ return (ret);
+ }
+#endif
+ return (__os_physwrite(dbenv, fhp, addr, len, nwp));
+}
+
+/*
+ * __os_physwrite --
+ * Physical write to a file handle.
+ */
+int
+__os_physwrite(dbenv, fhp, addr, len, nwp)
+ DB_ENV *dbenv;
+ DB_FH *fhp;
+ void *addr;
+ size_t len;
+ size_t *nwp;
+{
+ int ret;
+
+ /*
+ * Make a last "panic" check. Imagine a thread of control running in
+ * Berkeley DB, going to sleep. Another thread of control decides to
+ * run recovery because the environment is broken. The first thing
+ * recovery does is panic the existing environment, but we only check
+ * the panic flag when crossing the public API. If the sleeping thread
+ * wakes up and writes something, we could have two threads of control
+ * writing the log files at the same time. So, before writing, make a
+ * last panic check. Obviously, there's still a window, but it's very,
+ * very small.
+ */
+ PANIC_CHECK(dbenv);
+
+ ret = 0;
+ if ((*nwp = (size_t)IFILE_Write(fhp->ifp, addr, len)) != len) {
+ ret = __os_get_syserr();
+ __db_syserr(dbenv, ret, "IFILE_Write: %#lx, %lu",
+ P_TO_ULONG(addr), (u_long)len);
+ ret = __os_posix_err(ret);
+ }
+ return (ret);
+}
diff --git a/db/os_brew/os_seek.c b/db/os_brew/os_seek.c
new file mode 100644
index 000000000..ecd4079a5
--- /dev/null
+++ b/db/os_brew/os_seek.c
@@ -0,0 +1,49 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
+ *
+ * $Id: os_seek.c,v 1.4 2007/05/17 15:15:47 bostic Exp $
+ */
+
+#include "db_config.h"
+
+#include "db_int.h"
+
+/*
+ * __os_seek --
+ * Seek to a page/byte offset in the file.
+ */
+int
+__os_seek(dbenv, fhp, pgno, pgsize, relative)
+ DB_ENV *dbenv;
+ DB_FH *fhp;
+ db_pgno_t pgno;
+ u_int32_t pgsize;
+ u_int32_t relative;
+{
+ off_t offset;
+ int ret;
+
+ offset = (off_t)pgsize * pgno + relative;
+
+ /*
+ * Use BREW's lseek function IFILE_Seek. If the seek fails, the source
+ * returns EBADSEEKPOS.
+ */
+ ret = IFILE_Seek(fhp->ifp, _SEEK_START, offset);
+
+ if (ret == SUCCESS) {
+ fhp->pgsize = pgsize;
+ fhp->pgno = pgno;
+ fhp->offset = relative;
+ ret = 0;
+ } else {
+ __db_syserr(dbenv, ret,
+ "seek: %lu: (%lu * %lu) + %lu", (u_long)offset,
+ (u_long)pgno, (u_long)pgsize, (u_long)relative);
+ ret = __os_posix_err(ret);
+ }
+
+ return (ret);
+}
diff --git a/db/os_brew/os_sleep.c b/db/os_brew/os_sleep.c
new file mode 100644
index 000000000..44cb893e2
--- /dev/null
+++ b/db/os_brew/os_sleep.c
@@ -0,0 +1,30 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
+ *
+ * $Id: os_sleep.c,v 1.7 2007/05/17 15:15:47 bostic Exp $
+ */
+
+#include "db_config.h"
+
+#include "db_int.h"
+
+/*
+ * __os_sleep --
+ * Yield the processor for a period of time.
+ */
+void
+__os_sleep(dbenv, secs, usecs)
+ DB_ENV *dbenv;
+ u_long secs, usecs; /* Seconds and microseconds. */
+{
+ COMPQUIET(dbenv, NULL);
+
+#ifdef HAVE_BREW_SDK2
+ COMPQUIET(secs, 0);
+ COMPQUIET(usecs, 0);
+#else
+ MSLEEP(secs * MS_PER_SEC + usecs / US_PER_MS);
+#endif
+}
diff --git a/db/os_brew/os_stat.c b/db/os_brew/os_stat.c
new file mode 100644
index 000000000..9557015ba
--- /dev/null
+++ b/db/os_brew/os_stat.c
@@ -0,0 +1,89 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
+ *
+ * $Id: os_stat.c,v 1.4 2007/05/17 15:15:47 bostic Exp $
+ */
+
+#include "db_config.h"
+
+#include "db_int.h"
+
+/*
+ * __os_exists --
+ * Return if the file exists.
+ */
+int
+__os_exists(dbenv, path, isdirp)
+ DB_ENV *dbenv;
+ const char *path;
+ int *isdirp;
+{
+ FileInfo fInfo;
+ IFileMgr *pIFileMgr;
+ int ret;
+
+ FILE_MANAGER_CREATE(dbenv, pIFileMgr, ret);
+ if (ret != 0)
+ return (ret);
+
+ ret = 0;
+ if (IFILEMGR_Test(pIFileMgr, path) == EFAILED) {
+ FILE_MANAGER_ERR(
+ dbenv, pIFileMgr, path, "IFILEMGR_Test", ret);
+ goto err;
+ }
+
+ if (isdirp != NULL) {
+ if (IFILEMGR_GetInfo(pIFileMgr, path, &fInfo) == EFAILED) {
+ FILE_MANAGER_ERR(
+ dbenv, pIFileMgr, path, "IFILEMGR_GetInfo", ret);
+ goto err;
+ }
+ *isdirp = fInfo.attrib == _FA_DIR ? 1 : 0;
+ }
+
+err: IFILEMGR_Release(pIFileMgr);
+
+ return (ret);
+}
+
+/*
+ * __os_ioinfo --
+ * Return file size and I/O size; abstracted to make it easier
+ * to replace.
+ */
+int
+__os_ioinfo(dbenv, path, fhp, mbytesp, bytesp, iosizep)
+ DB_ENV *dbenv;
+ const char *path;
+ DB_FH *fhp;
+ u_int32_t *mbytesp, *bytesp, *iosizep;
+{
+ IFileMgr *pIFileMgr;
+ FileInfo fInfo;
+ int ret;
+
+ FILE_MANAGER_CREATE(dbenv, pIFileMgr, ret);
+ if (ret != 0)
+ return (ret);
+
+ if (IFILE_GetInfo(fhp->ifp, &fInfo) != SUCCESS) {
+ FILE_MANAGER_ERR(dbenv, pIFileMgr, path, "IFILE_GetInfo", ret);
+ goto err;
+ }
+
+ /* Return the size of the file. */
+ if (mbytesp != NULL)
+ *mbytesp = (u_int32_t)(fInfo.dwSize / MEGABYTE);
+ if (bytesp != NULL)
+ *bytesp = (u_int32_t)(fInfo.dwSize % MEGABYTE);
+
+ /* Default the filesystem I/O size. */
+ if (iosizep != NULL)
+ *iosizep = DB_DEF_IOSIZE;
+
+err: IFILEMGR_Release(pIFileMgr);
+ return (ret);
+}
diff --git a/db/os_brew/os_truncate.c b/db/os_brew/os_truncate.c
new file mode 100644
index 000000000..5cde6a79e
--- /dev/null
+++ b/db/os_brew/os_truncate.c
@@ -0,0 +1,46 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 2004,2007 Oracle. All rights reserved.
+ *
+ * $Id: os_truncate.c,v 1.4 2007/05/17 15:15:47 bostic Exp $
+ */
+
+#include "db_config.h"
+
+#include "db_int.h"
+
+/*
+ * __os_truncate --
+ * Truncate the file.
+ */
+int
+__os_truncate(dbenv, fhp, pgno, pgsize)
+ DB_ENV *dbenv;
+ DB_FH *fhp;
+ db_pgno_t pgno;
+ u_int32_t pgsize;
+{
+ IFileMgr *pIFileMgr;
+ off_t offset;
+ int ret;
+
+ FILE_MANAGER_CREATE(dbenv, pIFileMgr, ret);
+ if (ret != 0)
+ return (ret);
+
+ /*
+ * Truncate a file so that "pgno" is discarded from the end of the
+ * file.
+ */
+ offset = (off_t)pgsize * pgno;
+
+ if (IFILE_Truncate(fhp->ifp, offset) == SUCCESS)
+ ret = 0;
+ else
+ FILE_MANAGER_ERR(dbenv, pIFileMgr, NULL, "IFILE_Truncate", ret);
+
+ IFILEMGR_Release(pIFileMgr);
+
+ return (ret);
+}
diff --git a/db/os_brew/os_unlink.c b/db/os_brew/os_unlink.c
new file mode 100644
index 000000000..0cd8a84f5
--- /dev/null
+++ b/db/os_brew/os_unlink.c
@@ -0,0 +1,35 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
+ *
+ * $Id: os_unlink.c,v 1.4 2007/05/17 15:15:47 bostic Exp $
+ */
+
+#include "db_config.h"
+
+#include "db_int.h"
+
+/*
+ * __os_unlink --
+ * Remove a file.
+ */
+int
+__os_unlink(dbenv, path)
+ DB_ENV *dbenv;
+ const char *path;
+{
+ IFileMgr *ifmp;
+ int ret;
+
+ FILE_MANAGER_CREATE(dbenv, ifmp, ret);
+ if (ret != 0)
+ return (ret);
+
+ if (IFILEMGR_Remove(ifmp, path) == EFAILED)
+ FILE_MANAGER_ERR(dbenv, ifmp, path, "IFILEMGR_Remove", ret);
+
+ IFILEMGR_Release(ifmp);
+
+ return (ret);
+}
diff --git a/db/os_brew/time.c b/db/os_brew/time.c
new file mode 100644
index 000000000..be2aa72f7
--- /dev/null
+++ b/db/os_brew/time.c
@@ -0,0 +1,39 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 2006,2007 Oracle. All rights reserved.
+ *
+ * $Id: time.c,v 1.7 2007/05/17 15:15:47 bostic Exp $
+ */
+
+#include "db_config.h"
+
+#include "db_int.h"
+
+/*
+ * time --
+ *
+ * PUBLIC: #ifndef HAVE_TIME
+ * PUBLIC: time_t time __P((time_t *));
+ * PUBLIC: #endif
+ */
+time_t
+time(timer)
+ time_t *timer;
+{
+ time_t now;
+
+ /*
+ * Berkeley DB uses POSIX time values internally; convert a BREW time
+ * value into a POSIX time value.
+ */
+#ifdef HAVE_BREW_SDK2
+ now = (time_t)GETTIMESECONDS() + BREW_EPOCH_OFFSET;
+#else
+ now = (time_t)GETUTCSECONDS() + BREW_EPOCH_OFFSET;
+#endif
+
+ if (timer != NULL)
+ *timer = now;
+ return (now);
+}
diff --git a/db/os_qnx/os_qnx_open.c b/db/os_qnx/os_qnx_open.c
new file mode 100644
index 000000000..e4280ce7a
--- /dev/null
+++ b/db/os_qnx/os_qnx_open.c
@@ -0,0 +1,132 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
+ *
+ * $Id: os_qnx_open.c,v 12.23 2007/05/17 15:15:47 bostic Exp $
+ */
+
+#include "db_config.h"
+
+#include "db_int.h"
+
+/*
+ * __os_qnx_region_open --
+ * Open a shared memory region file using POSIX shm_open.
+ *
+ * PUBLIC: #ifdef HAVE_QNX
+ * PUBLIC: int __os_qnx_region_open
+ * PUBLIC: __P((DB_ENV *, const char *, int, int, DB_FH *));
+ * PUBLIC: #endif
+ */
+int
+__os_qnx_region_open(dbenv, name, oflags, mode, fhp)
+ DB_ENV *dbenv;
+ const char *name;
+ int oflags, mode;
+ DB_FH *fhp;
+{
+ int ret;
+ char *newname;
+
+ if ((ret = __os_qnx_shmname(dbenv, name, &newname)) != 0)
+ return (ret);
+
+ /*
+ * Once we have created the object, we don't need the name
+ * anymore. Other callers of this will convert themselves.
+ */
+ fhp->fd = shm_open(newname, oflags, mode);
+ if (fhp->fd == -1)
+ ret = __os_posix_err(__os_get_syserr());
+ __os_free(dbenv, newname);
+ if (fhp->fd == -1)
+ return (ret);
+
+ F_SET(fhp, DB_FH_OPENED);
+
+#ifdef HAVE_FCNTL_F_SETFD
+ /* Deny file descriptor access to any child process. */
+ if (fcntl(fhp->fd, F_SETFD, 1) == -1) {
+ ret = __os_get_syserr();
+ __db_syserr(dbenv, ret, "fcntl(F_SETFD)");
+ return (__os_posix_err(ret));
+ }
+#endif
+ return (0);
+}
+
+/*
+ * __os_qnx_shmname --
+ * Translate a pathname into a shm_open memory object name.
+ *
+ * PUBLIC: #ifdef HAVE_QNX
+ * PUBLIC: int __os_qnx_shmname __P((DB_ENV *, const char *, char **));
+ * PUBLIC: #endif
+ */
+int
+__os_qnx_shmname(dbenv, name, newnamep)
+ DB_ENV *dbenv;
+ const char *name;
+ char **newnamep;
+{
+ int ret;
+ size_t size;
+ char *p, *q, *tmpname;
+
+ *newnamep = NULL;
+
+ /*
+ * POSIX states that the name for a shared memory object
+ * may begin with a slash '/' and support for subsequent
+ * slashes is implementation-dependent. The one implementation
+ * we know of right now, QNX, forbids subsequent slashes.
+ * We don't want to be parsing pathnames for '.' and '..' in
+ * the middle. In order to allow easy conversion, just take
+ * the last component as the shared memory name. This limits
+ * the namespace a bit, but makes our job a lot easier.
+ *
+ * We should not be modifying user memory, so we use our own.
+ * Caller is responsible for freeing the memory we give them.
+ */
+ if ((ret = __os_strdup(dbenv, name, &tmpname)) != 0)
+ return (ret);
+ /*
+ * Skip over filename component.
+ * We set that separator to '\0' so that we can do another
+ * __db_rpath. However, we immediately set it then to ':'
+ * so that we end up with the tailing directory:filename.
+ * We require a home directory component. Return an error
+ * if there isn't one.
+ */
+ p = __db_rpath(tmpname);
+ if (p == NULL)
+ return (EINVAL);
+ if (p != tmpname) {
+ *p = '\0';
+ q = p;
+ p = __db_rpath(tmpname);
+ *q = ':';
+ }
+ if (p != NULL) {
+ /*
+ * If we have a path component, copy and return it.
+ */
+ ret = __os_strdup(dbenv, p, newnamep);
+ __os_free(dbenv, tmpname);
+ return (ret);
+ }
+
+ /*
+ * We were given just a directory name with no path components.
+ * Add a leading slash, and copy the remainder.
+ */
+ size = strlen(tmpname) + 2;
+ if ((ret = __os_malloc(dbenv, size, &p)) != 0)
+ return (ret);
+ p[0] = '/';
+ memcpy(&p[1], tmpname, size-1);
+ __os_free(dbenv, tmpname);
+ *newnamep = p;
+ return (0);
+}
diff --git a/db/os_s60/os_config.c b/db/os_s60/os_config.c
new file mode 100644
index 000000000..a0ba39640
--- /dev/null
+++ b/db/os_s60/os_config.c
@@ -0,0 +1,55 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 1998,2007 Oracle. All rights reserved.
+ *
+ * $Id: os_config.c,v 1.4 2007/07/06 16:29:18 bostic Exp $
+ */
+
+#include "db_config.h"
+
+#include "db_int.h"
+
+/*
+ * __os_fs_notzero --
+ * Return 1 if allocated filesystem blocks are not zeroed.
+ */
+int
+__os_fs_notzero()
+{
+ /*
+ * The S60 filesystem does not always zero-fill newly allocated
+ * filesystem blocks.
+ */
+ return (1);
+}
+
+/*
+ * __os_support_direct_io --
+ * Return 1 if we support direct I/O.
+ */
+int
+__os_support_direct_io()
+{
+ return (0);
+}
+
+/*
+ * __os_support_db_register --
+ * Return 1 if the system supports DB_REGISTER.
+ */
+int
+__os_support_db_register()
+{
+ return (0);
+}
+
+/*
+ * __os_support_replication --
+ * Return 1 if the system supports replication.
+ */
+int
+__os_support_replication()
+{
+ return (0);
+}
diff --git a/db/os_vxworks/os_abs.c b/db/os_vxworks/os_abs.c
deleted file mode 100644
index 162a556d3..000000000
--- a/db/os_vxworks/os_abs.c
+++ /dev/null
@@ -1,45 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997, 1998, 1999, 2000
- * Sleepycat Software. All rights reserved.
- */
-
-#include "db_config.h"
-
-#ifndef lint
-static const char revid[] = "$Id: os_abs.c,v 1.4 2000/08/09 19:09:48 sue Exp $";
-#endif /* not lint */
-
-#include "db_int.h"
-#include "iosLib.h"
-
-/*
- * __os_abspath --
- * Return if a path is an absolute path.
- */
-int
-__os_abspath(path)
- const char *path;
-{
- DEV_HDR *dummy;
- char *ptail;
-
- /*
- * VxWorks devices can be rooted at any name at all.
- * Use iosDevFind() to see if name matches any of our devices.
- */
- if ((dummy = iosDevFind((char *)path, &ptail)) == NULL)
- return (0);
- /*
- * If the routine used the default device, then we are not
- * an abs path.
- */
- if (ptail == path)
- return (0);
- /*
- * If the path starts with a '/', then we are an absolute path,
- * using the host machine, otherwise we are not.
- */
- return (path[0] == '/');
-}
diff --git a/db/os_vxworks/os_finit.c b/db/os_vxworks/os_finit.c
deleted file mode 100644
index 305f52f09..000000000
--- a/db/os_vxworks/os_finit.c
+++ /dev/null
@@ -1,57 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1999, 2000
- * Sleepycat Software. All rights reserved.
- */
-
-#include "db_config.h"
-
-#ifndef lint
-static const char revid[] = "$Id: os_finit.c,v 1.1 2000/06/21 20:05:18 sue Exp $";
-#endif /* not lint */
-
-#include "db_int.h"
-
-/*
- * __os_fpinit --
- * Initialize a page in a regular file.
- *
- * PUBLIC: int __os_fpinit __P((DB_ENV *, DB_FH *, db_pgno_t, int, int));
- */
-int
-__os_fpinit(dbenv, fhp, pgno, pagecount, pagesize)
- DB_ENV *dbenv;
- DB_FH *fhp;
- db_pgno_t pgno;
- int pagecount, pagesize;
-{
- size_t nw, totalbytes, curbytes;
- int ret;
- char buf[1024];
-
- /*
- * Some VxWorks FS drivers do not zero-fill pages that were never
- * explicitly written to the file, they give you random garbage,
- * and that breaks DB.
- */
- if ((ret = __os_seek(dbenv,
- fhp, pagesize, pgno, 0, 0, DB_OS_SEEK_SET)) != 0)
- return (ret);
-
- memset(buf, 0, sizeof(buf));
- totalbytes = pagecount * pagesize;
-
- while (totalbytes > 0) {
- if (totalbytes > sizeof(buf))
- curbytes = sizeof(buf);
- else
- curbytes = totalbytes;
- if ((ret = __os_write(dbenv, fhp, buf, curbytes, &nw)) != 0)
- return (ret);
- if (nw != curbytes)
- return (EIO);
- totalbytes -= curbytes;
- }
- return (0);
-}
diff --git a/db/os_vxworks/os_map.c b/db/os_vxworks/os_map.c
deleted file mode 100644
index 7397995d1..000000000
--- a/db/os_vxworks/os_map.c
+++ /dev/null
@@ -1,440 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1998, 1999, 2000
- * Sleepycat Software. All rights reserved.
- *
- * This code is derived from software contributed to Sleepycat Software by
- * Frederick G.M. Roeber of Netscape Communications Corp.
- */
-
-#include "db_config.h"
-
-#ifndef lint
-static const char revid[] = "$Id: os_map.c,v 1.14 2000/12/04 19:01:43 sue Exp $";
-#endif /* not lint */
-
-#ifndef NO_SYSTEM_INCLUDES
-#include <sys/types.h>
-#include <string.h>
-#endif
-
-#include "db_int.h"
-#include "common_ext.h"
-
-/*
- * DB uses memory-mapped files for two things:
- * faster access of read-only databases, and
- * shared memory for process synchronization and locking.
- * The code carefully does not mix the two uses. The first-case uses are
- * actually written such that memory-mapping isn't really required -- it's
- * merely a convenience -- so we don't have to worry much about it. In the
- * second case, it's solely used as a shared memory mechanism, so that's
- * all we have to replace.
- *
- * All memory in VxWorks is shared, and a task can allocate memory and keep
- * notes. So I merely have to allocate memory, remember the "filename" for
- * that memory, and issue small-integer segment IDs which index the list of
- * these shared-memory segments. Subsequent opens are checked against the
- * list of already open segments.
- */
-typedef struct {
- void *segment; /* Segment address. */
- u_int32_t size; /* Segment size. */
- char *name; /* Segment name. */
- long segid; /* Segment ID. */
-} os_segdata_t;
-
-static os_segdata_t *__os_segdata; /* Segment table. */
-static int __os_segdata_size; /* Segment table size. */
-
-#define OS_SEGDATA_STARTING_SIZE 16
-#define OS_SEGDATA_INCREMENT 16
-
-static int __os_segdata_allocate
- __P((DB_ENV *, const char *, REGINFO *, REGION *));
-static int __os_segdata_find_byname
- __P((DB_ENV *, const char *, REGINFO *, REGION *));
-static int __os_segdata_init __P((DB_ENV *));
-static int __os_segdata_new __P((DB_ENV *, int *));
-static int __os_segdata_release __P((DB_ENV *, REGION *, int));
-
-/*
- * __os_r_sysattach --
- * Create/join a shared memory region.
- *
- * PUBLIC: int __os_r_sysattach __P((DB_ENV *, REGINFO *, REGION *));
- */
-int
-__os_r_sysattach(dbenv, infop, rp)
- DB_ENV *dbenv;
- REGINFO *infop;
- REGION *rp;
-{
- int ret;
-
- if (__os_segdata == NULL)
- __os_segdata_init(dbenv);
-
- DB_BEGIN_SINGLE_THREAD;
-
- /* Try to find an already existing segment. */
- ret = __os_segdata_find_byname(dbenv, infop->name, infop, rp);
-
- /*
- * If we are trying to join a region, it is easy, either we
- * found it and we return, or we didn't find it and we return
- * an error that it doesn't exist.
- */
- if (!F_ISSET(infop, REGION_CREATE)) {
- if (ret != 0) {
- __db_err(dbenv, "segment %s does not exist",
- infop->name);
- ret = EAGAIN;
- }
- goto out;
- }
-
- /*
- * If we get here, we are trying to create the region.
- * There are several things to consider:
- * - if we have an error (not a found or not-found value), return.
- * - they better have shm_key set.
- * - if the region is already there (ret == 0 from above),
- * assume the application crashed and we're restarting.
- * Delete the old region.
- * - try to create the region.
- */
- if (ret != 0 && ret != ENOENT)
- goto out;
-
- if (dbenv->shm_key == INVALID_REGION_SEGID) {
- __db_err(dbenv, "no base shared memory ID specified");
- ret = EAGAIN;
- goto out;
- }
- if (ret == 0 && __os_segdata_release(dbenv, rp, 1) != 0) {
- __db_err(dbenv,
- "key: %ld: shared memory region already exists",
- dbenv->shm_key + (infop->id - 1));
- ret = EAGAIN;
- goto out;
- }
-
- ret = __os_segdata_allocate(dbenv, infop->name, infop, rp);
-out:
- DB_END_SINGLE_THREAD;
- return (ret);
-}
-
-/*
- * __os_r_sysdetach --
- * Detach from a shared region.
- *
- * PUBLIC: int __os_r_sysdetach __P((DB_ENV *, REGINFO *, int));
- */
-int
-__os_r_sysdetach(dbenv, infop, destroy)
- DB_ENV *dbenv;
- REGINFO *infop;
- int destroy;
-{
- /*
- * If just detaching, there is no mapping to discard.
- * If destroying, remove the region.
- */
- if (destroy)
- return (__os_segdata_release(dbenv, infop->rp, 0));
- return (0);
-}
-
-/*
- * __os_mapfile --
- * Map in a shared memory file.
- *
- * PUBLIC: int __os_mapfile __P((DB_ENV *,
- * PUBLIC: char *, DB_FH *, size_t, int, void **));
- */
-int
-__os_mapfile(dbenv, path, fhp, len, is_rdonly, addrp)
- DB_ENV *dbenv;
- char *path;
- DB_FH *fhp;
- int is_rdonly;
- size_t len;
- void **addrp;
-{
- /* We cannot map in regular files in VxWorks. */
- COMPQUIET(dbenv, NULL);
- COMPQUIET(path, NULL);
- COMPQUIET(fhp, NULL);
- COMPQUIET(is_rdonly, 0);
- COMPQUIET(len, 0);
- COMPQUIET(addrp, NULL);
- return (EINVAL);
-}
-
-/*
- * __os_unmapfile --
- * Unmap the shared memory file.
- *
- * PUBLIC: int __os_unmapfile __P((DB_ENV *, void *, size_t));
- */
-int
-__os_unmapfile(dbenv, addr, len)
- DB_ENV *dbenv;
- void *addr;
- size_t len;
-{
- /* We cannot map in regular files in VxWorks. */
- COMPQUIET(addr, NULL);
- COMPQUIET(len, 0);
- return (EINVAL);
-}
-
-/*
- * __os_segdata_init --
- * Initializes the library's table of shared memory segments.
- * Called once on the first time through __os_segdata_new().
- */
-static int
-__os_segdata_init(dbenv)
- DB_ENV *dbenv;
-{
- int ret;
-
- if (__os_segdata != NULL) {
- __db_err(dbenv, "shared memory segment already exists");
- return (EEXIST);
- }
-
- /*
- * The lock init call returns a locked lock.
- */
- DB_BEGIN_SINGLE_THREAD;
- __os_segdata_size = OS_SEGDATA_STARTING_SIZE;
- ret = __os_calloc(dbenv,
- __os_segdata_size, sizeof(os_segdata_t), &__os_segdata);
- DB_END_SINGLE_THREAD;
- return (ret);
-}
-
-/*
- * __os_segdata_destroy --
- * Destroys the library's table of shared memory segments. It also
- * frees all linked data: the segments themselves, and their names.
- * Currently not called. This function should be called if the
- * user creates a function to unload or shutdown.
- *
- * PUBLIC: int __os_segdata_destroy __P((void));
- */
-int
-__os_segdata_destroy()
-{
- os_segdata_t *p;
- int i;
-
- if (__os_segdata == NULL)
- return (0);
-
- DB_BEGIN_SINGLE_THREAD;
- for (i = 0; i < __os_segdata_size; i++) {
- p = &__os_segdata[i];
- if (p->name != NULL) {
- __os_freestr(p->name);
- p->name = NULL;
- }
- if (p->segment != NULL) {
- __os_free(p->segment, p->size);
- p->segment = NULL;
- }
- p->size = 0;
- }
-
- __os_free(__os_segdata, __os_segdata_size * sizeof(os_segdata_t));
- __os_segdata = NULL;
- __os_segdata_size = 0;
- DB_END_SINGLE_THREAD;
-
- return (0);
-}
-
-/*
- * __os_segdata_allocate --
- * Creates a new segment of the specified size, optionally with the
- * specified name.
- *
- * Assumes it is called with the SEGDATA lock taken.
- */
-static int
-__os_segdata_allocate(dbenv, name, infop, rp)
- DB_ENV *dbenv;
- const char *name;
- REGINFO *infop;
- REGION *rp;
-{
- os_segdata_t *p;
- int id, ret;
-
- if ((ret = __os_segdata_new(dbenv, &id)) != 0)
- return (ret);
-
- p = &__os_segdata[id];
- if ((ret = __os_calloc(dbenv, 1, rp->size, &p->segment)) != 0)
- return (ret);
- if ((ret = __os_strdup(dbenv, name, &p->name)) != 0) {
- __os_free(p->segment, rp->size);
- p->segment = NULL;
- return (ret);
- }
- p->size = rp->size;
- p->segid = dbenv->shm_key + infop->id - 1;
-
- infop->addr = p->segment;
- rp->segid = id;
-
- return (0);
-}
-
-/*
- * __os_segdata_new --
- * Finds a new segdata slot. Does not initialise it, so the fd returned
- * is only valid until you call this again.
- *
- * Assumes it is called with the SEGDATA lock taken.
- */
-static int
-__os_segdata_new(dbenv, segidp)
- DB_ENV *dbenv;
- int *segidp;
-{
- os_segdata_t *p;
- int i, newsize, ret;
-
- if (__os_segdata == NULL) {
- __db_err(dbenv, "shared memory segment not initialized");
- return (EAGAIN);
- }
-
- for (i = 0; i < __os_segdata_size; i++) {
- p = &__os_segdata[i];
- if (p->segment == NULL) {
- *segidp = i;
- return (0);
- }
- }
-
- /*
- * No more free slots, expand.
- */
- newsize = __os_segdata_size + OS_SEGDATA_INCREMENT;
- if ((ret = __os_realloc(dbenv, newsize * sizeof(os_segdata_t),
- NULL, &__os_segdata)) != 0)
- return (ret);
- memset(&__os_segdata[__os_segdata_size],
- 0, OS_SEGDATA_INCREMENT * sizeof(os_segdata_t));
-
- *segidp = __os_segdata_size;
- __os_segdata_size = newsize;
-
- return (0);
-}
-
-/*
- * __os_segdata_find_byname --
- * Finds a segment by its name and shm_key.
- *
- * Assumes it is called with the SEGDATA lock taken.
- *
- * PUBLIC: __os_segdata_find_byname
- * PUBLIC: __P((DB_ENV *, const char *, REGINFO *, REGION *));
- */
-static int
-__os_segdata_find_byname(dbenv, name, infop, rp)
- DB_ENV *dbenv;
- const char *name;
- REGINFO *infop;
- REGION *rp;
-{
- os_segdata_t *p;
- long segid;
- int i;
-
- if (__os_segdata == NULL) {
- __db_err(dbenv, "shared memory segment not initialized");
- return (EAGAIN);
- }
-
- if (name == NULL) {
- __db_err(dbenv, "no segment name given");
- return (EAGAIN);
- }
-
- /*
- * If we are creating the region, compute the segid.
- * If we are joining the region, we use the segid in the
- * index we are given.
- */
- if (F_ISSET(infop, REGION_CREATE))
- segid = dbenv->shm_key + (infop->id - 1);
- else {
- if (rp->segid >= __os_segdata_size ||
- rp->segid == INVALID_REGION_SEGID) {
- __db_err(dbenv, "Invalid segment id given");
- return (EAGAIN);
- }
- segid = __os_segdata[rp->segid].segid;
- }
- for (i = 0; i < __os_segdata_size; i++) {
- p = &__os_segdata[i];
- if (p->name != NULL && strcmp(name, p->name) == 0 &&
- p->segid == segid) {
- infop->addr = p->segment;
- rp->segid = i;
- return (0);
- }
- }
- return (ENOENT);
-}
-
-/*
- * __os_segdata_release --
- * Free a segdata entry.
- */
-static int
-__os_segdata_release(dbenv, rp, is_locked)
- DB_ENV *dbenv;
- REGION *rp;
- int is_locked;
-{
- os_segdata_t *p;
-
- if (__os_segdata == NULL) {
- __db_err(dbenv, "shared memory segment not initialized");
- return (EAGAIN);
- }
-
- if (rp->segid < 0 || rp->segid >= __os_segdata_size) {
- __db_err(dbenv, "segment id %ld out of range", rp->segid);
- return (EINVAL);
- }
-
- if (is_locked == 0)
- DB_BEGIN_SINGLE_THREAD;
- p = &__os_segdata[rp->segid];
- if (p->name != NULL) {
- __os_freestr(p->name);
- p->name = NULL;
- }
- if (p->segment != NULL) {
- __os_free(p->segment, p->size);
- p->segment = NULL;
- }
- p->size = 0;
- if (is_locked == 0)
- DB_END_SINGLE_THREAD;
-
- /* Any shrink-table logic could go here */
-
- return (0);
-}
diff --git a/db/os_vxworks/os_vx_abs.c b/db/os_vxworks/os_vx_abs.c
index 03eed5715..26dd57ab0 100644
--- a/db/os_vxworks/os_vx_abs.c
+++ b/db/os_vxworks/os_vx_abs.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: os_vx_abs.c,v 12.3 2006/08/24 14:46:20 bostic Exp $
+ * $Id: os_vx_abs.c,v 12.5 2007/05/17 15:15:48 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/os_vxworks/os_vx_config.c b/db/os_vxworks/os_vx_config.c
index 915f7d1e8..99088c948 100644
--- a/db/os_vxworks/os_vx_config.c
+++ b/db/os_vxworks/os_vx_config.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1999-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1999,2007 Oracle. All rights reserved.
*
- * $Id: os_vx_config.c,v 12.6 2006/08/24 14:46:20 bostic Exp $
+ * $Id: os_vx_config.c,v 12.8 2007/05/17 15:15:48 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/os_vxworks/os_vx_map.c b/db/os_vxworks/os_vx_map.c
index f0e42d51b..422f455c8 100644
--- a/db/os_vxworks/os_vx_map.c
+++ b/db/os_vxworks/os_vx_map.c
@@ -1,13 +1,12 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1998-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1998,2007 Oracle. All rights reserved.
*
* This code is derived from software contributed to Sleepycat Software by
* Frederick G.M. Roeber of Netscape Communications Corp.
*
- * $Id: os_vx_map.c,v 12.6 2006/08/24 14:46:20 bostic Exp $
+ * $Id: os_vx_map.c,v 12.9 2007/05/17 15:15:48 bostic Exp $
*/
#include "db_config.h"
@@ -209,8 +208,6 @@ __os_segdata_init(dbenv)
* frees all linked data: the segments themselves, and their names.
* Currently not called. This function should be called if the
* user creates a function to unload or shutdown.
- *
- * PUBLIC: int __os_segdata_destroy __P((DB_ENV *));
*/
int
__os_segdata_destroy(dbenv)
diff --git a/db/os_vxworks/os_vx_rpath.c b/db/os_vxworks/os_vx_rpath.c
index 7a51ef8ee..50ca3d509 100644
--- a/db/os_vxworks/os_vx_rpath.c
+++ b/db/os_vxworks/os_vx_rpath.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: os_vx_rpath.c,v 12.5 2006/08/24 14:46:20 bostic Exp $
+ * $Id: os_vx_rpath.c,v 12.7 2007/05/17 15:15:48 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/os_win32/os_abs.c b/db/os_win32/os_abs.c
deleted file mode 100644
index ab05b0a7e..000000000
--- a/db/os_win32/os_abs.c
+++ /dev/null
@@ -1,31 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: os_abs.c,v 11.7 2004/01/28 03:36:19 bostic Exp $
- */
-
-#include "db_config.h"
-
-#include "db_int.h"
-
-/*
- * __os_abspath --
- * Return if a path is an absolute path.
- */
-int
-__os_abspath(path)
- const char *path;
-{
- /*
- * !!!
- * Check for drive specifications, e.g., "C:". In addition, the path
- * separator used by the win32 DB (PATH_SEPARATOR) is \; look for both
- * / and \ since these are user-input paths.
- */
- if (isalpha(path[0]) && path[1] == ':')
- path += 2;
- return (path[0] == '/' || path[0] == '\\');
-}
diff --git a/db/os_win32/os_clock.c b/db/os_win32/os_clock.c
deleted file mode 100644
index c77076691..000000000
--- a/db/os_win32/os_clock.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2001-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: os_clock.c,v 1.11 2004/06/28 13:57:18 bostic Exp $
- */
-
-#include "db_config.h"
-
-#include <sys/types.h>
-#include <sys/timeb.h>
-#include <string.h>
-
-#include "db_int.h"
-
-/*
- * __os_clock --
- * Return the current time-of-day clock in seconds and microseconds.
- */
-void
-__os_clock(dbenv, secsp, usecsp)
- DB_ENV *dbenv;
- u_int32_t *secsp, *usecsp; /* Seconds and microseconds. */
-{
- struct _timeb now;
-
- _ftime(&now);
- if (secsp != NULL)
- *secsp = (u_int32_t)now.time;
- if (usecsp != NULL)
- *usecsp = now.millitm * 1000;
-}
diff --git a/db/os_win32/os_config.c b/db/os_win32/os_config.c
deleted file mode 100644
index 41daebd37..000000000
--- a/db/os_win32/os_config.c
+++ /dev/null
@@ -1,88 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1999-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: os_config.c,v 11.18 2004/02/09 20:54:27 mjc Exp $
- */
-
-#include "db_config.h"
-
-#include "db_int.h"
-
-/*
- * __os_is_winnt --
- * Return 1 if Windows/NT, otherwise 0.
- *
- * PUBLIC: int __os_is_winnt __P((void));
- */
-int
-__os_is_winnt()
-{
- static int __os_type = -1;
-
- /*
- * The value of __os_type is computed only once, and cached to
- * avoid the overhead of repeated calls to GetVersion().
- */
- if (__os_type == -1) {
- if ((GetVersion() & 0x80000000) == 0)
- __os_type = 1;
- else
- __os_type = 0;
- }
- return (__os_type);
-}
-
-/*
- * __os_fs_notzero --
- * Return 1 if allocated filesystem blocks are not zeroed.
- */
-int
-__os_fs_notzero()
-{
- static int __os_notzero = -1;
- OSVERSIONINFO osvi;
-
- /*
- * Windows/NT zero-fills pages that were never explicitly written to
- * the file. Note however that this is *NOT* documented. In fact, the
- * Win32 documentation makes it clear that there are no guarantees that
- * uninitialized bytes will be zeroed:
- *
- * If the file is extended, the contents of the file between the old
- * EOF position and the new position are not defined.
- *
- * Experiments confirm that NT/2K/XP all zero fill for both NTFS and
- * FAT32. Cygwin also relies on this behavior. This is the relevant
- * comment from Cygwin:
- *
- * Oops, this is the bug case - Win95 uses whatever is on the disk
- * instead of some known (safe) value, so we must seek back and fill
- * in the gap with zeros. - DJ
- * Note: this bug doesn't happen on NT4, even though the
- * documentation for WriteFile() says that it *may* happen on any OS.
- *
- * We're making a bet, here, but we made it a long time ago and haven't
- * yet seen any evidence that it was wrong.
- *
- * Windows 95/98 and On-Time give random garbage, and that breaks
- * Berkeley DB.
- *
- * The value of __os_notzero is computed only once, and cached to
- * avoid the overhead of repeated calls to GetVersion().
- */
- if (__os_notzero == -1) {
- if (__os_is_winnt()) {
- osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
- GetVersionEx(&osvi);
- if (_tcscmp(osvi.szCSDVersion, _T("RTTarget-32")) == 0)
- __os_notzero = 1; /* On-Time */
- else
- __os_notzero = 0; /* Windows/NT */
- } else
- __os_notzero = 1; /* Not Windows/NT */
- }
- return (__os_notzero);
-}
diff --git a/db/os_win32/os_dir.c b/db/os_win32/os_dir.c
deleted file mode 100644
index e0abbb6ee..000000000
--- a/db/os_win32/os_dir.c
+++ /dev/null
@@ -1,102 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: os_dir.c,v 11.20 2004/10/13 19:12:17 bostic Exp $
- */
-
-#include "db_config.h"
-
-#include "db_int.h"
-
-/*
- * __os_dirlist --
- * Return a list of the files in a directory.
- */
-int
-__os_dirlist(dbenv, dir, namesp, cntp)
- DB_ENV *dbenv;
- const char *dir;
- char ***namesp;
- int *cntp;
-{
- HANDLE dirhandle;
- WIN32_FIND_DATA fdata;
- int arraysz, cnt, ret;
- char **names, *onename;
- _TCHAR tfilespec[MAXPATHLEN + 1];
-
- if (DB_GLOBAL(j_dirlist) != NULL)
- return (DB_GLOBAL(j_dirlist)(dir, namesp, cntp));
-
- (void)_sntprintf(tfilespec, MAXPATHLEN,
- _T("%hs%hc*"), dir, PATH_SEPARATOR[0]);
- if ((dirhandle = FindFirstFile(tfilespec, &fdata))
- == INVALID_HANDLE_VALUE)
- return (__os_get_errno());
-
- names = NULL;
- arraysz = cnt = ret = 0;
- for (;;) {
- if (cnt >= arraysz) {
- arraysz += 100;
- if ((ret = __os_realloc(dbenv,
- arraysz * sizeof(names[0]), &names)) != 0)
- goto err;
- }
- /*
- * FROM_TSTRING doesn't necessarily allocate new memory, so we
- * must do that explicitly. Unfortunately, when compiled with
- * UNICODE, we'll copy twice.
- */
- FROM_TSTRING(dbenv, fdata.cFileName, onename, ret);
- if (ret != 0)
- goto err;
- ret = __os_strdup(dbenv, onename, &names[cnt]);
- FREE_STRING(dbenv, onename);
- if (ret != 0)
- goto err;
- cnt++;
- if (!FindNextFile(dirhandle, &fdata)) {
- if (GetLastError() == ERROR_NO_MORE_FILES)
- break;
- else {
- ret = __os_get_errno();
- goto err;
- }
- }
- }
-
-err: if (!FindClose(dirhandle) && ret == 0)
- ret = __os_get_errno();
-
- if (ret == 0) {
- *namesp = names;
- *cntp = cnt;
- } else if (names != NULL)
- __os_dirfree(dbenv, names, cnt);
-
- return (ret);
-}
-
-/*
- * __os_dirfree --
- * Free the list of files.
- */
-void
-__os_dirfree(dbenv, names, cnt)
- DB_ENV *dbenv;
- char **names;
- int cnt;
-{
- if (DB_GLOBAL(j_dirfree) != NULL) {
- DB_GLOBAL(j_dirfree)(names, cnt);
- return;
- }
-
- while (cnt > 0)
- __os_free(dbenv, names[--cnt]);
- __os_free(dbenv, names);
-}
diff --git a/db/os_win32/os_errno.c b/db/os_win32/os_errno.c
deleted file mode 100644
index 1af2824cc..000000000
--- a/db/os_win32/os_errno.c
+++ /dev/null
@@ -1,138 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1999-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: os_errno.c,v 11.14 2004/07/06 21:06:38 mjc Exp $
- */
-
-#include "db_config.h"
-
-#include "db_int.h"
-
-/*
- * __os_get_errno_ret_zero --
- * Return the value of errno, even if it's zero.
- */
-int
-__os_get_errno_ret_zero()
-{
- /* This routine must be able to return the same value repeatedly. */
- return (errno);
-}
-
-/*
- * __os_get_errno --
- * Return the last Windows error as an errno.
- * We give generic error returns:
- *
- * EFAULT means Win* call failed,
- * and GetLastError provided no extra info.
- *
- * EIO means error on Win* call,
- * and we were unable to provide a meaningful errno for this Windows
- * error. More information is only available by setting a breakpoint
- * here.
- */
-int
-__os_get_errno()
-{
- DWORD last_error;
- int ret;
-
- last_error = GetLastError();
-
- /*
- * Take our best guess at translating some of the Windows error
- * codes. We really care about only a few of these.
- */
- switch (last_error) {
- case ERROR_FILE_NOT_FOUND:
- case ERROR_INVALID_DRIVE:
- case ERROR_PATH_NOT_FOUND:
- ret = ENOENT;
- break;
-
- case ERROR_NO_MORE_FILES:
- case ERROR_TOO_MANY_OPEN_FILES:
- ret = EMFILE;
- break;
-
- case ERROR_ACCESS_DENIED:
- ret = EPERM;
- break;
-
- case ERROR_INVALID_HANDLE:
- ret = EBADF;
- break;
-
- case ERROR_NOT_ENOUGH_MEMORY:
- ret = ENOMEM;
- break;
-
- case ERROR_DISK_FULL:
- ret = ENOSPC;
- break;
-
- case ERROR_ARENA_TRASHED:
- case ERROR_BAD_COMMAND:
- case ERROR_BAD_ENVIRONMENT:
- case ERROR_BAD_FORMAT:
- case ERROR_GEN_FAILURE:
- case ERROR_INVALID_ACCESS:
- case ERROR_INVALID_BLOCK:
- case ERROR_INVALID_DATA:
- case ERROR_READ_FAULT:
- case ERROR_WRITE_FAULT:
- ret = EFAULT;
- break;
-
- case ERROR_FILE_EXISTS:
- case ERROR_ALREADY_EXISTS:
- ret = EEXIST;
- break;
-
- case ERROR_NOT_SAME_DEVICE:
- ret = EXDEV;
- break;
-
- case ERROR_WRITE_PROTECT:
- ret = EACCES;
- break;
-
- case ERROR_NOT_READY:
- ret = EBUSY;
- break;
-
- case ERROR_LOCK_VIOLATION:
- case ERROR_SHARING_VIOLATION:
- ret = EBUSY;
- break;
-
- case ERROR_RETRY:
- ret = EINTR;
- break;
-
- case 0:
- ret = EFAULT;
- break;
-
- default:
- ret = EIO; /* Generic error. */
- break;
- }
-
- return (ret);
-}
-
-/*
- * __os_set_errno --
- * Set the value of errno.
- */
-void
-__os_set_errno(evalue)
- int evalue;
-{
- errno = evalue;
-}
diff --git a/db/os_win32/os_fid.c b/db/os_win32/os_fid.c
deleted file mode 100644
index 69df865d4..000000000
--- a/db/os_win32/os_fid.c
+++ /dev/null
@@ -1,141 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1996-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: os_fid.c,v 11.19 2004/07/06 21:06:38 mjc Exp $
- */
-
-#include "db_config.h"
-
-#include "db_int.h"
-
-#define SERIAL_INIT 0
-static u_int32_t fid_serial = SERIAL_INIT;
-
-/*
- * __os_fileid --
- * Return a unique identifier for a file.
- */
-int
-__os_fileid(dbenv, fname, unique_okay, fidp)
- DB_ENV *dbenv;
- const char *fname;
- int unique_okay;
- u_int8_t *fidp;
-{
- size_t i;
- u_int32_t tmp;
- u_int8_t *p;
- int ret;
-
- /*
- * The documentation for GetFileInformationByHandle() states that the
- * inode-type numbers are not constant between processes. Actually,
- * they are, they're the NTFS MFT indexes. So, this works on NTFS,
- * but perhaps not on other platforms, and perhaps not over a network.
- * Can't think of a better solution right now.
- */
- DB_FH *fhp;
- BY_HANDLE_FILE_INFORMATION fi;
- BOOL retval = FALSE;
-
- DB_ASSERT(fname != NULL);
-
- /* Clear the buffer. */
- memset(fidp, 0, DB_FILE_ID_LEN);
-
- /*
- * Initialize/increment the serial number we use to help avoid
- * fileid collisions. Note that we don't bother with locking;
- * it's unpleasant to do from down in here, and if we race on
- * this no real harm will be done, since the finished fileid
- * has so many other components.
- *
- * We increment by 100000 on each call as a simple way of
- * randomizing; simply incrementing seems potentially less useful
- * if pids are also simply incremented, since this is process-local
- * and we may be one of a set of processes starting up. 100000
- * pushes us out of pid space on most platforms, and has few
- * interesting properties in base 2.
- */
- if (fid_serial == SERIAL_INIT)
- __os_id(&fid_serial);
- else
- fid_serial += 100000;
-
- /*
- * First we open the file, because we're not given a handle to it.
- * If we can't open it, we're in trouble.
- */
- if ((ret = __os_open(dbenv, fname, DB_OSO_RDONLY, _S_IREAD, &fhp)) != 0)
- return (ret);
-
- /* File open, get its info */
- if ((retval = GetFileInformationByHandle(fhp->handle, &fi)) == FALSE)
- ret = __os_get_errno();
- (void)__os_closehandle(dbenv, fhp);
-
- if (retval == FALSE)
- return (ret);
-
- /*
- * We want the three 32-bit words which tell us the volume ID and
- * the file ID. We make a crude attempt to copy the bytes over to
- * the callers buffer.
- *
- * We don't worry about byte sexing or the actual variable sizes.
- *
- * When this routine is called from the DB access methods, it's only
- * called once -- whatever ID is generated when a database is created
- * is stored in the database file's metadata, and that is what is
- * saved in the mpool region's information to uniquely identify the
- * file.
- *
- * When called from the mpool layer this routine will be called each
- * time a new thread of control wants to share the file, which makes
- * things tougher. As far as byte sexing goes, since the mpool region
- * lives on a single host, there's no issue of that -- the entire
- * region is byte sex dependent. As far as variable sizes go, we make
- * the simplifying assumption that 32-bit and 64-bit processes will
- * get the same 32-bit values if we truncate any returned 64-bit value
- * to a 32-bit value.
- */
- tmp = (u_int32_t)fi.nFileIndexLow;
- for (p = (u_int8_t *)&tmp, i = sizeof(u_int32_t); i > 0; --i)
- *fidp++ = *p++;
- tmp = (u_int32_t)fi.nFileIndexHigh;
- for (p = (u_int8_t *)&tmp, i = sizeof(u_int32_t); i > 0; --i)
- *fidp++ = *p++;
-
- if (unique_okay) {
- /*
- * Use the system time to try to get a unique value
- * within this process. A millisecond counter
- * overflows 32 bits in about 49 days. So we use 8
- * bytes, and don't bother with the volume ID, which
- * is not very useful for our purposes.
- */
- SYSTEMTIME st;
-
- GetSystemTime(&st);
- tmp = (st.wYear - 1900) * 12 + (st.wMonth - 1);
- for (p = (u_int8_t *)&tmp, i = sizeof(u_int32_t); i > 0; --i)
- *fidp++ = *p++;
- tmp = ((((st.wDay - 1) * 24 + st.wHour) * 60 +
- st.wMinute) * 60 + st.wSecond) * 1000 +
- st.wMilliseconds;
- for (p = (u_int8_t *)&tmp, i = sizeof(u_int32_t); i > 0; --i)
- *fidp++ = *p++;
- for (p = (u_int8_t *)&fid_serial, i = sizeof(u_int32_t);
- i > 0; --i)
- *fidp++ = *p++;
- } else {
- tmp = (u_int32_t)fi.dwVolumeSerialNumber;
- for (p = (u_int8_t *)&tmp, i = sizeof(u_int32_t); i > 0; --i)
- *fidp++ = *p++;
- }
-
- return (0);
-}
diff --git a/db/os_win32/os_finit.c b/db/os_win32/os_finit.c
deleted file mode 100644
index 61d2a33c7..000000000
--- a/db/os_win32/os_finit.c
+++ /dev/null
@@ -1,60 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1999, 2000
- * Sleepycat Software. All rights reserved.
- */
-
-#include "db_config.h"
-
-#ifndef lint
-static const char revid[] = "$Id: os_finit.c,v 11.9 2000/03/29 20:50:52 ubell Exp $";
-#endif /* not lint */
-
-#include "db_int.h"
-
-/*
- * __os_fpinit --
- * Initialize a page in a regular file.
- *
- * PUBLIC: int __os_fpinit __P((DB_ENV *, DB_FH *, db_pgno_t, int, int));
- */
-int
-__os_fpinit(dbenv, fhp, pgno, pagecount, pagesize)
- DB_ENV *dbenv;
- DB_FH *fhp;
- db_pgno_t pgno;
- int pagecount, pagesize;
-{
- size_t nw, totalbytes, curbytes;
- int ret;
- char buf[1024];
-
- /*
- * Windows/NT zero-fills pages that were never explicitly written to
- * the file. Windows 95/98 gives you random garbage, and that breaks
- * DB.
- */
- if (__os_is_winnt())
- return (0);
-
- if ((ret = __os_seek(dbenv,
- fhp, pagesize, pgno, 0, 0, DB_OS_SEEK_SET)) != 0)
- return (ret);
-
- memset(buf, 0, sizeof(buf));
- totalbytes = pagecount * pagesize;
-
- while (totalbytes > 0) {
- if (totalbytes > sizeof(buf))
- curbytes = sizeof(buf);
- else
- curbytes = totalbytes;
- if ((ret = __os_write(dbenv, fhp, buf, curbytes, &nw)) != 0)
- return (ret);
- if (nw != curbytes)
- return (EIO);
- totalbytes -= curbytes;
- }
- return (0);
-}
diff --git a/db/os_win32/os_fsync.c b/db/os_win32/os_fsync.c
deleted file mode 100644
index cc188a2fe..000000000
--- a/db/os_win32/os_fsync.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: os_fsync.c,v 11.21 2004/07/06 21:06:38 mjc Exp $
- */
-
-#include "db_config.h"
-
-#ifndef NO_SYSTEM_INCLUDES
-#include <sys/types.h>
-
-#include <fcntl.h> /* XXX: Required by __hp3000s900 */
-#include <unistd.h>
-#include <string.h>
-#endif
-
-#include "db_int.h"
-
-/*
- * __os_fsync --
- * Flush a file descriptor.
- */
-int
-__os_fsync(dbenv, fhp)
- DB_ENV *dbenv;
- DB_FH *fhp;
-{
- int ret;
-
- /*
- * Do nothing if the file descriptor has been marked as not requiring
- * any sync to disk.
- */
- if (F_ISSET(fhp, DB_FH_NOSYNC))
- return (0);
-
- if (DB_GLOBAL(j_fsync) != NULL)
- ret = DB_GLOBAL(j_fsync)(fhp->fd);
- else
- RETRY_CHK((!FlushFileBuffers(fhp->handle)), ret);
-
- if (ret != 0)
- __db_err(dbenv, "fsync %s", strerror(ret));
- return (ret);
-}
diff --git a/db/os_win32/os_handle.c b/db/os_win32/os_handle.c
deleted file mode 100644
index 4953afd31..000000000
--- a/db/os_win32/os_handle.c
+++ /dev/null
@@ -1,131 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1998-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: os_handle.c,v 11.39 2004/07/06 21:06:38 mjc Exp $
- */
-
-#include "db_config.h"
-
-#ifndef NO_SYSTEM_INCLUDES
-#include <sys/types.h>
-
-#include <fcntl.h>
-#include <string.h>
-#include <unistd.h>
-#endif
-
-#include "db_int.h"
-
-/*
- * __os_openhandle --
- * Open a file, using POSIX 1003.1 open flags.
- */
-int
-__os_openhandle(dbenv, name, flags, mode, fhpp)
- DB_ENV *dbenv;
- const char *name;
- int flags, mode;
- DB_FH **fhpp;
-{
- DB_FH *fhp;
- int ret, nrepeat, retries;
-
- if ((ret = __os_calloc(dbenv, 1, sizeof(DB_FH), fhpp)) != 0)
- return (ret);
- fhp = *fhpp;
-
- /* If the application specified an interface, use it. */
- if (DB_GLOBAL(j_open) != NULL) {
- if ((fhp->fd = DB_GLOBAL(j_open)(name, flags, mode)) == -1) {
- ret = __os_get_errno();
- goto err;
- }
- F_SET(fhp, DB_FH_OPENED);
- return (0);
- }
-
- retries = 0;
- for (nrepeat = 1; nrepeat < 4; ++nrepeat) {
- ret = 0;
- fhp->fd = open(name, flags, mode);
-
- if (fhp->fd != -1) {
- F_SET(fhp, DB_FH_OPENED);
- break;
- }
-
- switch (ret = __os_get_errno()) {
- case EMFILE:
- case ENFILE:
- case ENOSPC:
- /*
- * If it's a "temporary" error, we retry up to 3 times,
- * waiting up to 12 seconds. While it's not a problem
- * if we can't open a database, an inability to open a
- * log file is cause for serious dismay.
- */
- __os_sleep(dbenv, nrepeat * 2, 0);
- break;
- case EAGAIN:
- case EBUSY:
- case EINTR:
- /*
- * If an EAGAIN, EBUSY or EINTR, retry immediately for
- * DB_RETRY times.
- */
- if (++retries < DB_RETRY)
- --nrepeat;
- break;
- }
- }
-
-err: if (ret != 0) {
- (void)__os_closehandle(dbenv, fhp);
- *fhpp = NULL;
- }
-
- return (ret);
-}
-
-/*
- * __os_closehandle --
- * Close a file.
- */
-int
-__os_closehandle(dbenv, fhp)
- DB_ENV *dbenv;
- DB_FH *fhp;
-{
- int ret;
-
- ret = 0;
-
- /*
- * If we have a valid handle, close it and unlink any temporary
- * file.
- */
- if (F_ISSET(fhp, DB_FH_OPENED)) {
- if (DB_GLOBAL(j_close) != NULL)
- ret = DB_GLOBAL(j_close)(fhp->fd);
- else if (fhp->handle != INVALID_HANDLE_VALUE)
- RETRY_CHK((!CloseHandle(fhp->handle)), ret);
- else
- RETRY_CHK((close(fhp->fd)), ret);
-
- if (ret != 0)
- __db_err(dbenv, "CloseHandle: %s", strerror(ret));
-
- /* Unlink the file if we haven't already done so. */
- if (F_ISSET(fhp, DB_FH_UNLINK)) {
- (void)__os_unlink(dbenv, fhp->name);
- __os_free(dbenv, fhp->name);
- }
- }
-
- __os_free(dbenv, fhp);
-
- return (ret);
-}
diff --git a/db/os_win32/os_map.c b/db/os_win32/os_map.c
deleted file mode 100644
index 140ac4980..000000000
--- a/db/os_win32/os_map.c
+++ /dev/null
@@ -1,315 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1996-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: os_map.c,v 11.51 2004/10/05 14:55:34 mjc Exp $
- */
-
-#include "db_config.h"
-
-#include "db_int.h"
-
-static int __os_map
- __P((DB_ENV *, char *, REGINFO *, DB_FH *, size_t, int, int, int, void **));
-static int __os_unique_name __P((_TCHAR *, HANDLE, _TCHAR *, size_t));
-
-/*
- * __os_r_sysattach --
- * Create/join a shared memory region.
- */
-int
-__os_r_sysattach(dbenv, infop, rp)
- DB_ENV *dbenv;
- REGINFO *infop;
- REGION *rp;
-{
- DB_FH *fhp;
- int is_system, ret;
-
- /*
- * Try to open/create the file. We DO NOT need to ensure that multiple
- * threads/processes attempting to simultaneously create the region are
- * properly ordered, our caller has already taken care of that.
- */
- if ((ret = __os_open(dbenv, infop->name,
- F_ISSET(infop, REGION_CREATE_OK) ? DB_OSO_CREATE: 0,
- dbenv->db_mode, &fhp)) != 0) {
- __db_err(dbenv, "%s: %s", infop->name, db_strerror(ret));
- return (ret);
- }
-
- /*
- * On Windows/9X, files that are opened by multiple processes do not
- * share data correctly. For this reason, the DB_SYSTEM_MEM flag is
- * implied for any application that does not specify the DB_PRIVATE
- * flag.
- */
- is_system = F_ISSET(dbenv, DB_ENV_SYSTEM_MEM) ||
- (!F_ISSET(dbenv, DB_ENV_PRIVATE) && __os_is_winnt() == 0);
-
- /*
- * Map the file in. If we're creating an in-system-memory region,
- * specify a segment ID (which is never used again) so that the
- * calling code writes out the REGENV_REF structure to the primary
- * environment file.
- */
- ret = __os_map(dbenv, infop->name, infop, fhp, rp->size,
- 1, is_system, 0, &infop->addr);
- if (ret == 0 && is_system == 1)
- rp->segid = 1;
-
- (void)__os_closehandle(dbenv, fhp);
-
- return (ret);
-}
-
-/*
- * __os_r_sysdetach --
- * Detach from a shared memory region.
- */
-int
-__os_r_sysdetach(dbenv, infop, destroy)
- DB_ENV *dbenv;
- REGINFO *infop;
- int destroy;
-{
- int ret, t_ret;
-
- if (infop->wnt_handle != NULL) {
- (void)CloseHandle(infop->wnt_handle);
- infop->wnt_handle = NULL;
- }
-
- ret = !UnmapViewOfFile(infop->addr) ? __os_get_errno() : 0;
- if (ret != 0)
- __db_err(dbenv, "UnmapViewOfFile: %s", strerror(ret));
-
- if (!F_ISSET(dbenv, DB_ENV_SYSTEM_MEM) && destroy) {
- if (F_ISSET(dbenv, DB_ENV_OVERWRITE))
- (void)__db_overwrite(dbenv, infop->name);
- if ((t_ret = __os_unlink(dbenv, infop->name)) != 0 && ret == 0)
- ret = t_ret;
- }
-
- return (ret);
-}
-
-/*
- * __os_mapfile --
- * Map in a shared memory file.
- */
-int
-__os_mapfile(dbenv, path, fhp, len, is_rdonly, addr)
- DB_ENV *dbenv;
- char *path;
- DB_FH *fhp;
- int is_rdonly;
- size_t len;
- void **addr;
-{
- /* If the user replaced the map call, call through their interface. */
- if (DB_GLOBAL(j_map) != NULL)
- return (DB_GLOBAL(j_map)(path, len, 0, is_rdonly, addr));
-
- return (__os_map(dbenv, path, NULL, fhp, len, 0, 0, is_rdonly, addr));
-}
-
-/*
- * __os_unmapfile --
- * Unmap the shared memory file.
- */
-int
-__os_unmapfile(dbenv, addr, len)
- DB_ENV *dbenv;
- void *addr;
- size_t len;
-{
- /* If the user replaced the map call, call through their interface. */
- if (DB_GLOBAL(j_unmap) != NULL)
- return (DB_GLOBAL(j_unmap)(addr, len));
-
- return (!UnmapViewOfFile(addr) ? __os_get_errno() : 0);
-}
-
-/*
- * __os_unique_name --
- * Create a unique identifying name from a pathname (may be absolute or
- * relative) and/or a file descriptor.
- *
- * The name returned must be unique (different files map to different
- * names), and repeatable (same files, map to same names). It's not
- * so easy to do by name. Should handle not only:
- *
- * foo.bar == ./foo.bar == c:/whatever_path/foo.bar
- *
- * but also understand that:
- *
- * foo.bar == Foo.Bar (FAT file system)
- * foo.bar != Foo.Bar (NTFS)
- *
- * The best solution is to use the file index, found in the file
- * information structure (similar to UNIX inode #).
- *
- * When a file is deleted, its file index may be reused,
- * but if the unique name has not gone from its namespace,
- * we may get a conflict. So to ensure some tie in to the
- * original pathname, we also use the creation time and the
- * file basename. This is not a perfect system, but it
- * should work for all but anamolous test cases.
- *
- */
-static int
-__os_unique_name(orig_path, hfile, result_path, result_path_len)
- _TCHAR *orig_path, *result_path;
- HANDLE hfile;
- size_t result_path_len;
-{
- BY_HANDLE_FILE_INFORMATION fileinfo;
- _TCHAR *basename, *p;
-
- /*
- * In Windows, pathname components are delimited by '/' or '\', and
- * if neither is present, we need to strip off leading drive letter
- * (e.g. c:foo.txt).
- */
- basename = _tcsrchr(orig_path, '/');
- p = _tcsrchr(orig_path, '\\');
- if (basename == NULL || (p != NULL && p > basename))
- basename = p;
- if (basename == NULL)
- basename = _tcsrchr(orig_path, ':');
-
- if (basename == NULL)
- basename = orig_path;
- else
- basename++;
-
- if (!GetFileInformationByHandle(hfile, &fileinfo))
- return (__os_get_errno());
-
- (void)_sntprintf(result_path, result_path_len,
- _T("__db_shmem.%8.8lx.%8.8lx.%8.8lx.%8.8lx.%8.8lx.%s"),
- fileinfo.dwVolumeSerialNumber,
- fileinfo.nFileIndexHigh,
- fileinfo.nFileIndexLow,
- fileinfo.ftCreationTime.dwHighDateTime,
- fileinfo.ftCreationTime.dwHighDateTime,
- basename);
-
- return (0);
-}
-
-/*
- * __os_map --
- * The mmap(2) function for Windows.
- */
-static int
-__os_map(dbenv, path, infop, fhp, len, is_region, is_system, is_rdonly, addr)
- DB_ENV *dbenv;
- REGINFO *infop;
- char *path;
- DB_FH *fhp;
- int is_region, is_system, is_rdonly;
- size_t len;
- void **addr;
-{
- HANDLE hMemory;
- int ret, use_pagefile;
- _TCHAR *tpath, shmem_name[MAXPATHLEN];
- void *pMemory;
-
- ret = 0;
- if (infop != NULL)
- infop->wnt_handle = NULL;
-
- use_pagefile = is_region && is_system;
-
- /*
- * If creating a region in system space, get a matching name in the
- * paging file namespace.
- */
- if (use_pagefile) {
- TO_TSTRING(dbenv, path, tpath, ret);
- if (ret != 0)
- return (ret);
- ret = __os_unique_name(tpath, fhp->handle,
- shmem_name, sizeof(shmem_name));
- FREE_STRING(dbenv, tpath);
- if (ret != 0)
- return (ret);
- }
-
- /*
- * XXX
- * DB: We have not implemented copy-on-write here.
- *
- * If this is an region in system memory, we try to open it using the
- * OpenFileMapping() first, and only call CreateFileMapping() if we're
- * really creating the section. There are two reasons:
- *
- * 1) We only create the mapping if we have newly created the region.
- * This avoids a long-running problem caused by Windows reference
- * counting, where regions that are closed by all processes are
- * deleted. It turns out that just checking for a zeroed region
- * is not good enough. See [#4882] and [#7127] for the details.
- *
- * 2) CreateFileMapping seems to mess up making the commit charge to
- * the process. It thinks, incorrectly, that when we want to join a
- * previously existing section, that it should make a commit charge
- * for the whole section. In fact, there is no new committed memory
- * whatever. The call can fail if there is insufficient memory free
- * to handle the erroneous commit charge. So, we find that the
- * bogus commit is not made if we call OpenFileMapping.
- */
- hMemory = NULL;
- if (use_pagefile) {
- hMemory = OpenFileMapping(
- is_rdonly ? FILE_MAP_READ : FILE_MAP_ALL_ACCESS,
- 0, shmem_name);
-
- if (hMemory == NULL && F_ISSET(infop, REGION_CREATE_OK))
- hMemory = CreateFileMapping((HANDLE)-1, 0,
- is_rdonly ? PAGE_READONLY : PAGE_READWRITE,
- 0, (DWORD)len, shmem_name);
- } else
- hMemory = CreateFileMapping(fhp->handle, 0,
- is_rdonly ? PAGE_READONLY : PAGE_READWRITE,
- 0, (DWORD)len, NULL);
-
- if (hMemory == NULL) {
- ret = __os_get_errno();
- __db_err(dbenv, "OpenFileMapping: %s", strerror(ret));
- return (__db_panic(dbenv, ret));
- }
-
- pMemory = MapViewOfFile(hMemory,
- (is_rdonly ? FILE_MAP_READ : FILE_MAP_ALL_ACCESS), 0, 0, len);
- if (pMemory == NULL) {
- ret = __os_get_errno();
- __db_err(dbenv, "MapViewOfFile: %s", strerror(ret));
- return (__db_panic(dbenv, ret));
- }
-
- /*
- * XXX
- * It turns out that the kernel object underlying the named section
- * is reference counted, but that the call to MapViewOfFile() above
- * does NOT increment the reference count! So, if we close the handle
- * here, the kernel deletes the object from the kernel namespace.
- * When a second process comes along to join the region, the kernel
- * happily creates a new object with the same name, but completely
- * different identity. The two processes then have distinct isolated
- * mapped sections, not at all what was wanted. Not closing the handle
- * here fixes this problem. We carry the handle around in the region
- * structure so we can close it when unmap is called.
- */
- if (use_pagefile && infop != NULL)
- infop->wnt_handle = hMemory;
- else
- CloseHandle(hMemory);
-
- *addr = pMemory;
- return (ret);
-}
diff --git a/db/os_win32/os_open.c b/db/os_win32/os_open.c
deleted file mode 100644
index 1aa65cfa0..000000000
--- a/db/os_win32/os_open.c
+++ /dev/null
@@ -1,228 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: os_open.c,v 11.37 2004/10/05 14:55:35 mjc Exp $
- */
-
-#include "db_config.h"
-
-#ifndef NO_SYSTEM_INCLUDES
-#include <sys/types.h>
-
-#include <fcntl.h>
-#include <signal.h>
-#include <string.h>
-#include <unistd.h>
-#endif
-
-#include "db_int.h"
-
-/*
- * __os_have_direct --
- * Check to see if we support direct I/O.
- *
- * PUBLIC: int __os_have_direct __P((void));
- */
-int
-__os_have_direct()
-{
- return (1);
-}
-
-/*
- * __os_open --
- * Open a file descriptor.
- */
-__os_open(dbenv, name, flags, mode, fhpp)
- DB_ENV *dbenv;
- const char *name;
- u_int32_t flags;
- int mode;
- DB_FH **fhpp;
-{
- return (__os_open_extend(dbenv, name, 0, flags, mode, fhpp));
-}
-
-/*
- * __os_open_extend --
- * Open a file descriptor (including page size and log size information).
- */
-int
-__os_open_extend(dbenv, name, page_size, flags, mode, fhpp)
- DB_ENV *dbenv;
- const char *name;
- u_int32_t page_size, flags;
- int mode;
- DB_FH **fhpp;
-{
- DB_FH *fhp;
- DWORD cluster_size, sector_size, free_clusters, total_clusters;
- int access, attr, createflag, nrepeat, oflags, ret, share;
- _TCHAR *drive, *tname;
- _TCHAR dbuf[4]; /* <letter><colon><slash><nul> */
-
- fhp = NULL;
- tname = NULL;
-
-#define OKFLAGS \
- (DB_OSO_CREATE | DB_OSO_DIRECT | DB_OSO_DSYNC | DB_OSO_EXCL | \
- DB_OSO_LOG | DB_OSO_RDONLY | DB_OSO_REGION | DB_OSO_SEQ | \
- DB_OSO_TEMP | DB_OSO_TRUNC)
- if ((ret = __db_fchk(dbenv, "__os_open", flags, OKFLAGS)) != 0)
- return (ret);
-
- /*
- * The "public" interface to the __os_open routine passes around POSIX
- * 1003.1 flags, not DB flags. If the user has defined their own open
- * interface, use the POSIX flags.
- */
- if (DB_GLOBAL(j_open) != NULL) {
- oflags = O_BINARY | O_NOINHERIT;
-
- if (LF_ISSET(DB_OSO_CREATE))
- oflags |= O_CREAT;
-#ifdef O_DSYNC
- if (LF_ISSET(DB_OSO_LOG) && LF_ISSET(DB_OSO_DSYNC))
- oflags |= O_DSYNC;
-#endif
-
- if (LF_ISSET(DB_OSO_EXCL))
- oflags |= O_EXCL;
-
- if (LF_ISSET(DB_OSO_RDONLY))
- oflags |= O_RDONLY;
- else
- oflags |= O_RDWR;
-
- if (LF_ISSET(DB_OSO_SEQ))
- oflags |= _O_SEQUENTIAL;
- else
- oflags |= _O_RANDOM;
-
- if (LF_ISSET(DB_OSO_TEMP))
- oflags |= _O_TEMPORARY;
-
- if (LF_ISSET(DB_OSO_TRUNC))
- oflags |= O_TRUNC;
-
- return (__os_openhandle(dbenv, name, oflags, mode, fhpp));
- }
-
- TO_TSTRING(dbenv, name, tname, ret);
- if (ret != 0)
- goto err;
-
- if ((ret = __os_calloc(dbenv, 1, sizeof(DB_FH), &fhp)) != 0)
- goto err;
-
- /*
- * Otherwise, use the Windows/32 CreateFile interface so that we can
- * play magic games with log files to get data flush effects similar
- * to the POSIX O_DSYNC flag.
- *
- * !!!
- * We currently ignore the 'mode' argument. It would be possible
- * to construct a set of security attributes that we could pass to
- * CreateFile that would accurately represents the mode. In worst
- * case, this would require looking up user and all group names and
- * creating an entry for each. Alternatively, we could call the
- * _chmod (partial emulation) function after file creation, although
- * this leaves us with an obvious race. However, these efforts are
- * largely meaningless on FAT, the most common file system, which
- * only has a "readable" and "writeable" flag, applying to all users.
- */
- access = GENERIC_READ;
- if (!LF_ISSET(DB_OSO_RDONLY))
- access |= GENERIC_WRITE;
-
- share = FILE_SHARE_READ | FILE_SHARE_WRITE;
- attr = FILE_ATTRIBUTE_NORMAL;
-
- /*
- * Reproduce POSIX 1003.1 semantics: if O_CREATE and O_EXCL are both
- * specified, fail, returning EEXIST, unless we create the file.
- */
- if (LF_ISSET(DB_OSO_CREATE) && LF_ISSET(DB_OSO_EXCL))
- createflag = CREATE_NEW; /* create only if !exist*/
- else if (!LF_ISSET(DB_OSO_CREATE) && LF_ISSET(DB_OSO_TRUNC))
- createflag = TRUNCATE_EXISTING; /* truncate, fail if !exist */
- else if (LF_ISSET(DB_OSO_TRUNC))
- createflag = CREATE_ALWAYS; /* create and truncate */
- else if (LF_ISSET(DB_OSO_CREATE))
- createflag = OPEN_ALWAYS; /* open or create */
- else
- createflag = OPEN_EXISTING; /* open only if existing */
-
- if (LF_ISSET(DB_OSO_LOG) && LF_ISSET(DB_OSO_DSYNC)) {
- F_SET(fhp, DB_FH_NOSYNC);
- attr |= FILE_FLAG_WRITE_THROUGH;
- }
-
- if (LF_ISSET(DB_OSO_SEQ))
- attr |= FILE_FLAG_SEQUENTIAL_SCAN;
- else
- attr |= FILE_FLAG_RANDOM_ACCESS;
-
- if (LF_ISSET(DB_OSO_TEMP))
- attr |= FILE_FLAG_DELETE_ON_CLOSE;
-
- /*
- * We can turn filesystem buffering off if the page size is a
- * multiple of the disk's sector size. To find the sector size,
- * we call GetDiskFreeSpace, which expects a drive name like "d:\\"
- * or NULL for the current disk (i.e., a relative path)
- */
- if (LF_ISSET(DB_OSO_DIRECT) && page_size != 0 && name[0] != '\0') {
- if (name[1] == ':') {
- drive = dbuf;
- _sntprintf(dbuf, sizeof(dbuf), _T("%c:\\"), tname[0]);
- } else
- drive = NULL;
-
- /*
- * We ignore all results except sectorsize, but some versions
- * of Windows require that the parameters are non-NULL.
- */
- if (GetDiskFreeSpace(drive, &cluster_size,
- &sector_size, &free_clusters, &total_clusters) &&
- page_size % sector_size == 0)
- attr |= FILE_FLAG_NO_BUFFERING;
- }
-
- for (nrepeat = 1;; ++nrepeat) {
- fhp->handle =
- CreateFile(tname, access, share, NULL, createflag, attr, 0);
- if (fhp->handle == INVALID_HANDLE_VALUE) {
- /*
- * If it's a "temporary" error, we retry up to 3 times,
- * waiting up to 12 seconds. While it's not a problem
- * if we can't open a database, an inability to open a
- * log file is cause for serious dismay.
- */
- ret = __os_get_errno();
- if ((ret != ENFILE && ret != EMFILE && ret != ENOSPC) ||
- nrepeat > 3)
- goto err;
-
- __os_sleep(dbenv, nrepeat * 2, 0);
- } else
- break;
- }
-
- FREE_STRING(dbenv, tname);
-
- F_SET(fhp, DB_FH_OPENED);
- *fhpp = fhp;
- return (0);
-
-err: if (ret == 0)
- ret = __os_get_errno();
-
- FREE_STRING(dbenv, tname);
- if (fhp != NULL)
- (void)__os_closehandle(dbenv, fhp);
- return (ret);
-}
diff --git a/db/os_win32/os_rename.c b/db/os_win32/os_rename.c
deleted file mode 100644
index 102633231..000000000
--- a/db/os_win32/os_rename.c
+++ /dev/null
@@ -1,72 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: os_rename.c,v 1.19 2004/10/05 14:55:36 mjc Exp $
- */
-
-#include "db_config.h"
-
-#include "db_int.h"
-
-/*
- * __os_rename --
- * Rename a file.
- */
-int
-__os_rename(dbenv, oldname, newname, flags)
- DB_ENV *dbenv;
- const char *oldname, *newname;
- u_int32_t flags;
-{
- int ret;
- _TCHAR *toldname, *tnewname;
-
- ret = 0;
- if (DB_GLOBAL(j_rename) != NULL) {
- if (DB_GLOBAL(j_rename)(oldname, newname) == -1)
- ret = __os_get_errno();
- goto done;
- }
-
- TO_TSTRING(dbenv, oldname, toldname, ret);
- if (ret != 0)
- goto done;
- TO_TSTRING(dbenv, newname, tnewname, ret);
- if (ret != 0)
- goto err;
-
- if (!MoveFile(toldname, tnewname))
- ret = __os_get_errno();
-
- if (ret == EEXIST) {
- ret = 0;
- if (__os_is_winnt()) {
- if (!MoveFileEx(
- toldname, tnewname, MOVEFILE_REPLACE_EXISTING))
- ret = __os_get_errno();
- } else {
- /*
- * There is no MoveFileEx for Win9x/Me, so we have to
- * do the best we can. Note that the MoveFile call
- * above would have succeeded if oldname and newname
- * refer to the same file, so we don't need to check
- * that here.
- */
- (void)DeleteFile(tnewname);
- if (!MoveFile(toldname, tnewname))
- ret = __os_get_errno();
- }
- }
-
- FREE_STRING(dbenv, tnewname);
-err: FREE_STRING(dbenv, toldname);
-
-done: if (ret != 0 && flags == 0)
- __db_err(dbenv,
- "Rename %s %s: %s", oldname, newname, strerror(ret));
-
- return (ret);
-}
diff --git a/db/os_win32/os_rw.c b/db/os_win32/os_rw.c
deleted file mode 100644
index c3c103a9e..000000000
--- a/db/os_win32/os_rw.c
+++ /dev/null
@@ -1,291 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: os_rw.c,v 11.38 2004/09/17 22:00:32 mjc Exp $
- */
-
-#include "db_config.h"
-
-#ifndef NO_SYSTEM_INCLUDES
-#include <sys/types.h>
-
-#include <string.h>
-#include <unistd.h>
-#endif
-
-#include "db_int.h"
-
-#ifdef HAVE_FILESYSTEM_NOTZERO
-static int __os_zerofill __P((DB_ENV *, DB_FH *));
-#endif
-static int __os_physwrite __P((DB_ENV *, DB_FH *, void *, size_t, size_t *));
-
-/*
- * __os_io --
- * Do an I/O.
- */
-int
-__os_io(dbenv, op, fhp, pgno, pagesize, buf, niop)
- DB_ENV *dbenv;
- int op;
- DB_FH *fhp;
- db_pgno_t pgno;
- u_int32_t pagesize;
- u_int8_t *buf;
- size_t *niop;
-{
- int ret;
-
- if (__os_is_winnt()) {
- ULONG64 off = (ULONG64)pagesize * pgno;
- OVERLAPPED over;
- DWORD nbytes;
- over.Offset = (DWORD)(off & 0xffffffff);
- over.OffsetHigh = (DWORD)(off >> 32);
- over.hEvent = 0; /* we don't want asynchronous notifications */
-
- switch (op) {
- case DB_IO_READ:
- if (DB_GLOBAL(j_read) != NULL)
- goto slow;
- if (!ReadFile(fhp->handle,
- buf, (DWORD)pagesize, &nbytes, &over))
- goto slow;
- break;
- case DB_IO_WRITE:
- if (DB_GLOBAL(j_write) != NULL)
- goto slow;
-#ifdef HAVE_FILESYSTEM_NOTZERO
- if (__os_fs_notzero())
- goto slow;
-#endif
- if (!WriteFile(fhp->handle,
- buf, (DWORD)pagesize, &nbytes, &over))
- goto slow;
- break;
- }
- if (nbytes == pagesize) {
- *niop = (size_t)nbytes;
- return (0);
- }
- }
-
-slow: MUTEX_THREAD_LOCK(dbenv, fhp->mutexp);
-
- if ((ret = __os_seek(dbenv, fhp,
- pagesize, pgno, 0, 0, DB_OS_SEEK_SET)) != 0)
- goto err;
-
- switch (op) {
- case DB_IO_READ:
- ret = __os_read(dbenv, fhp, buf, pagesize, niop);
- break;
- case DB_IO_WRITE:
- ret = __os_write(dbenv, fhp, buf, pagesize, niop);
- break;
- }
-
-err: MUTEX_THREAD_UNLOCK(dbenv, fhp->mutexp);
-
- return (ret);
-}
-
-/*
- * __os_read --
- * Read from a file handle.
- */
-int
-__os_read(dbenv, fhp, addr, len, nrp)
- DB_ENV *dbenv;
- DB_FH *fhp;
- void *addr;
- size_t len;
- size_t *nrp;
-{
- size_t offset, nr;
- DWORD count;
- int ret;
- u_int8_t *taddr;
-
- ret = 0;
-
- if (DB_GLOBAL(j_read) != NULL) {
- *nrp = len;
- if (DB_GLOBAL(j_read)(fhp->fd, addr, len) != (ssize_t)len) {
- ret = __os_get_errno();
- __db_err(dbenv, "read: %#lx, %lu: %s",
- P_TO_ULONG(addr), (u_long)len, strerror(ret));
- }
- return (ret);
- }
-
- ret = 0;
- for (taddr = addr,
- offset = 0; offset < len; taddr += nr, offset += nr) {
- RETRY_CHK((!ReadFile(fhp->handle,
- taddr, (DWORD)(len - offset), &count, NULL)), ret);
- if (count == 0 || ret != 0)
- break;
- nr = (size_t)count;
- }
- *nrp = taddr - (u_int8_t *)addr;
- if (ret != 0)
- __db_err(dbenv, "read: 0x%lx, %lu: %s",
- P_TO_ULONG(taddr), (u_long)len - offset, strerror(ret));
- return (ret);
-}
-
-/*
- * __os_write --
- * Write to a file handle.
- */
-int
-__os_write(dbenv, fhp, addr, len, nwp)
- DB_ENV *dbenv;
- DB_FH *fhp;
- void *addr;
- size_t len;
- size_t *nwp;
-{
- int ret;
-
-#ifdef HAVE_FILESYSTEM_NOTZERO
- /* Zero-fill as necessary. */
- if (__os_fs_notzero() && (ret = __os_zerofill(dbenv, fhp)) != 0)
- return (ret);
-#endif
- return (__os_physwrite(dbenv, fhp, addr, len, nwp));
-}
-
-/*
- * __os_physwrite --
- * Physical write to a file handle.
- */
-static int
-__os_physwrite(dbenv, fhp, addr, len, nwp)
- DB_ENV *dbenv;
- DB_FH *fhp;
- void *addr;
- size_t len;
- size_t *nwp;
-{
- size_t offset, nw;
- DWORD count;
- int ret;
- u_int8_t *taddr;
-
- if (DB_GLOBAL(j_write) != NULL) {
- *nwp = len;
- if (DB_GLOBAL(j_write)(fhp->fd, addr, len) != (ssize_t)len) {
- ret = __os_get_errno();
- __db_err(dbenv, "write: %#lx, %lu: %s",
- P_TO_ULONG(addr), (u_long)len, strerror(ret));
- }
- return (ret);
- }
-
- ret = 0;
- for (taddr = addr,
- offset = 0; offset < len; taddr += nw, offset += nw) {
- RETRY_CHK((!WriteFile(fhp->handle,
- taddr, (DWORD)(len - offset), &count, NULL)), ret);
- if (ret != 0)
- break;
- nw = (size_t)count;
- }
- *nwp = len;
- if (ret != 0)
- __db_err(dbenv, "write: %#lx, %lu: %s",
- P_TO_ULONG(taddr), (u_long)len - offset, strerror(ret));
- return (ret);
-}
-
-#ifdef HAVE_FILESYSTEM_NOTZERO
-/*
- * __os_zerofill --
- * Zero out bytes in the file.
- *
- * Pages allocated by writing pages past end-of-file are not zeroed,
- * on some systems. Recovery could theoretically be fooled by a page
- * showing up that contained garbage. In order to avoid this, we
- * have to write the pages out to disk, and flush them. The reason
- * for the flush is because if we don't sync, the allocation of another
- * page subsequent to this one might reach the disk first, and if we
- * crashed at the right moment, leave us with this page as the one
- * allocated by writing a page past it in the file.
- */
-static int
-__os_zerofill(dbenv, fhp)
- DB_ENV *dbenv;
- DB_FH *fhp;
-{
- unsigned __int64 stat_offset, write_offset;
- size_t blen, nw;
- u_int32_t bytes, mbytes;
- int group_sync, need_free, ret;
- u_int8_t buf[8 * 1024], *bp;
-
- /* Calculate the byte offset of the next write. */
- write_offset = (unsigned __int64)fhp->pgno * fhp->pgsize + fhp->offset;
-
- /* Stat the file. */
- if ((ret = __os_ioinfo(dbenv, NULL, fhp, &mbytes, &bytes, NULL)) != 0)
- return (ret);
- stat_offset = (unsigned __int64)mbytes * MEGABYTE + bytes;
-
- /* Check if the file is large enough. */
- if (stat_offset >= write_offset)
- return (0);
-
- /* Get a large buffer if we're writing lots of data. */
-#undef ZF_LARGE_WRITE
-#define ZF_LARGE_WRITE (64 * 1024)
- if (write_offset - stat_offset > ZF_LARGE_WRITE) {
- if ((ret = __os_calloc(dbenv, 1, ZF_LARGE_WRITE, &bp)) != 0)
- return (ret);
- blen = ZF_LARGE_WRITE;
- need_free = 1;
- } else {
- bp = buf;
- blen = sizeof(buf);
- need_free = 0;
- memset(buf, 0, sizeof(buf));
- }
-
- /* Seek to the current end of the file. */
- if ((ret = __os_seek(
- dbenv, fhp, MEGABYTE, mbytes, bytes, 0, DB_OS_SEEK_SET)) != 0)
- goto err;
-
- /*
- * Hash is the only access method that allocates groups of pages. Hash
- * uses the existence of the last page in a group to signify the entire
- * group is OK; so, write all the pages but the last one in the group,
- * flush them to disk, then write the last one to disk and flush it.
- */
- for (group_sync = 0; stat_offset < write_offset; group_sync = 1) {
- if (write_offset - stat_offset <= blen) {
- blen = (size_t)(write_offset - stat_offset);
- if (group_sync && (ret = __os_fsync(dbenv, fhp)) != 0)
- goto err;
- }
- if ((ret = __os_physwrite(dbenv, fhp, bp, blen, &nw)) != 0)
- goto err;
- stat_offset += blen;
- }
- if ((ret = __os_fsync(dbenv, fhp)) != 0)
- goto err;
-
- /* Seek back to where we started. */
- mbytes = (u_int32_t)(write_offset / MEGABYTE);
- bytes = (u_int32_t)(write_offset % MEGABYTE);
- ret = __os_seek(dbenv, fhp, MEGABYTE, mbytes, bytes, 0, DB_OS_SEEK_SET);
-
-err: if (need_free)
- __os_free(dbenv, bp);
- return (ret);
-}
-#endif
diff --git a/db/os_win32/os_seek.c b/db/os_win32/os_seek.c
deleted file mode 100644
index e356c3884..000000000
--- a/db/os_win32/os_seek.c
+++ /dev/null
@@ -1,92 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: os_seek.c,v 11.22 2004/09/17 22:00:32 mjc Exp $
- */
-
-#include "db_config.h"
-
-#include "db_int.h"
-
-/*
- * __os_seek --
- * Seek to a page/byte offset in the file.
- */
-int
-__os_seek(dbenv, fhp, pgsize, pageno, relative, isrewind, db_whence)
- DB_ENV *dbenv;
- DB_FH *fhp;
- u_int32_t pgsize;
- db_pgno_t pageno;
- u_int32_t relative;
- int isrewind;
- DB_OS_SEEK db_whence;
-{
- /* Yes, this really is how Microsoft have designed their API */
- union {
- __int64 bigint;
- struct {
- unsigned long low;
- long high;
- };
- } offbytes;
- off_t offset;
- int ret, whence;
- DWORD from;
-
- offset = (off_t)pgsize * pageno + relative;
- if (isrewind)
- offset = -offset;
-
- if (DB_GLOBAL(j_seek) != NULL) {
- switch (db_whence) {
- case DB_OS_SEEK_CUR:
- whence = SEEK_CUR;
- break;
- case DB_OS_SEEK_END:
- whence = SEEK_END;
- break;
- case DB_OS_SEEK_SET:
- whence = SEEK_SET;
- break;
- default:
- return (EINVAL);
- }
-
- ret = DB_GLOBAL(j_seek)(fhp->fd, offset, whence);
- } else {
- switch (db_whence) {
- case DB_OS_SEEK_CUR:
- from = FILE_CURRENT;
- break;
- case DB_OS_SEEK_END:
- from = FILE_END;
- break;
- case DB_OS_SEEK_SET:
- from = FILE_BEGIN;
- break;
- default:
- return (EINVAL);
- }
-
- offbytes.bigint = offset;
- ret = (SetFilePointer(fhp->handle,
- offbytes.low, &offbytes.high, from) == (DWORD) - 1) ?
- __os_get_errno() : 0;
- }
-
- if (ret == 0) {
- fhp->pgsize = pgsize;
- fhp->pgno = pageno;
- fhp->offset = relative;
- } else {
- __db_err(dbenv, "seek: %lu %d %d: %s",
- (u_long)pgsize * pageno + relative,
- isrewind, db_whence, strerror(ret));
- }
-
- return (ret);
-}
diff --git a/db/os_win32/os_sleep.c b/db/os_win32/os_sleep.c
deleted file mode 100644
index ae06e4980..000000000
--- a/db/os_win32/os_sleep.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: os_sleep.c,v 11.11 2004/03/24 15:13:16 bostic Exp $
- */
-
-#include "db_config.h"
-
-#include "db_int.h"
-
-/*
- * __os_sleep --
- * Yield the processor for a period of time.
- */
-void
-__os_sleep(dbenv, secs, usecs)
- DB_ENV *dbenv;
- u_long secs, usecs; /* Seconds and microseconds. */
-{
- COMPQUIET(dbenv, NULL);
-
- /* Don't require that the values be normalized. */
- for (; usecs >= 1000000; ++secs, usecs -= 1000000)
- ;
-
- if (DB_GLOBAL(j_sleep) != NULL) {
- DB_GLOBAL(j_sleep)(secs, usecs);
- return;
- }
-
- /*
- * It's important that we yield the processor here so that other
- * processes or threads are permitted to run.
- */
- Sleep(secs * 1000 + usecs / 1000);
-}
diff --git a/db/os_win32/os_spin.c b/db/os_win32/os_spin.c
deleted file mode 100644
index a5cb58539..000000000
--- a/db/os_win32/os_spin.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: os_spin.c,v 11.16 2004/03/24 15:13:16 bostic Exp $
- */
-
-#include "db_config.h"
-
-#include "db_int.h"
-
-/*
- * __os_spin --
- * Return the number of default spins before blocking.
- */
-void
-__os_spin(dbenv)
- DB_ENV *dbenv;
-{
- SYSTEM_INFO SystemInfo;
-
- /*
- * If the application specified a value or we've already figured it
- * out, return it.
- */
- if (dbenv->tas_spins != 0)
- return;
-
- /* Get the number of processors */
- GetSystemInfo(&SystemInfo);
-
- /*
- * Spin 50 times per processor -- we have anecdotal evidence that this
- * is a reasonable value.
- */
- if (SystemInfo.dwNumberOfProcessors > 1)
- dbenv->tas_spins = 50 * SystemInfo.dwNumberOfProcessors;
- else
- dbenv->tas_spins = 1;
-}
-
-/*
- * __os_yield --
- * Yield the processor.
- */
-void
-__os_yield(dbenv, usecs)
- DB_ENV *dbenv;
- u_long usecs;
-{
- if (DB_GLOBAL(j_yield) != NULL && DB_GLOBAL(j_yield)() == 0)
- return;
- __os_sleep(dbenv, 0, usecs);
-}
diff --git a/db/os_win32/os_stat.c b/db/os_win32/os_stat.c
deleted file mode 100644
index b11da487a..000000000
--- a/db/os_win32/os_stat.c
+++ /dev/null
@@ -1,96 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: os_stat.c,v 11.32 2004/10/07 14:00:11 carol Exp $
- */
-
-#include "db_config.h"
-
-#ifndef NO_SYSTEM_INCLUDES
-#include <sys/types.h>
-#include <sys/stat.h>
-
-#include <string.h>
-#endif
-
-#include "db_int.h"
-
-/*
- * __os_exists --
- * Return if the file exists.
- */
-int
-__os_exists(path, isdirp)
- const char *path;
- int *isdirp;
-{
- int ret;
- DWORD attrs;
- _TCHAR *tpath;
-
- if (DB_GLOBAL(j_exists) != NULL)
- return (DB_GLOBAL(j_exists)(path, isdirp));
-
- TO_TSTRING(NULL, path, tpath, ret);
- if (ret != 0)
- return (ret);
-
- RETRY_CHK(
- ((attrs = GetFileAttributes(tpath)) == (DWORD)-1 ? 1 : 0), ret);
-
- if (ret == 0 && isdirp != NULL)
- *isdirp = (attrs & FILE_ATTRIBUTE_DIRECTORY);
-
- FREE_STRING(NULL, tpath);
- return (ret);
-}
-
-/*
- * __os_ioinfo --
- * Return file size and I/O size; abstracted to make it easier
- * to replace.
- */
-int
-__os_ioinfo(dbenv, path, fhp, mbytesp, bytesp, iosizep)
- DB_ENV *dbenv;
- const char *path;
- DB_FH *fhp;
- u_int32_t *mbytesp, *bytesp, *iosizep;
-{
- int ret;
- BY_HANDLE_FILE_INFORMATION bhfi;
- unsigned __int64 filesize;
-
- if (DB_GLOBAL(j_ioinfo) != NULL)
- return (DB_GLOBAL(j_ioinfo)(path,
- fhp->fd, mbytesp, bytesp, iosizep));
-
- RETRY_CHK((!GetFileInformationByHandle(fhp->handle, &bhfi)), ret);
- if (ret != 0) {
- __db_err(dbenv,
- "GetFileInformationByHandle: %s", strerror(ret));
- return (ret);
- }
-
- filesize = ((unsigned __int64)bhfi.nFileSizeHigh << 32) +
- bhfi.nFileSizeLow;
-
- /* Return the size of the file. */
- if (mbytesp != NULL)
- *mbytesp = (u_int32_t)(filesize / MEGABYTE);
- if (bytesp != NULL)
- *bytesp = (u_int32_t)(filesize % MEGABYTE);
-
- /*
- * The filesystem blocksize is not easily available. In particular,
- * the values returned by GetDiskFreeSpace() are not very helpful
- * (NTFS volumes often report 512B clusters, which are too small to
- * be a useful default).
- */
- if (iosizep != NULL)
- *iosizep = DB_DEF_IOSIZE;
- return (0);
-}
diff --git a/db/os_win32/os_truncate.c b/db/os_win32/os_truncate.c
deleted file mode 100644
index 51820ab1d..000000000
--- a/db/os_win32/os_truncate.c
+++ /dev/null
@@ -1,99 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: os_truncate.c,v 1.9 2004/10/05 14:45:30 mjc Exp $
- */
-
-#include "db_config.h"
-
-#include "db_int.h"
-
-/*
- * __os_truncate --
- * Truncate the file.
- */
-int
-__os_truncate(dbenv, fhp, pgno, pgsize)
- DB_ENV *dbenv;
- DB_FH *fhp;
- db_pgno_t pgno;
- u_int32_t pgsize;
-{
- /* Yes, this really is how Microsoft have designed their API */
- union {
- __int64 bigint;
- struct {
- unsigned long low;
- long high;
- };
- } oldpos;
- off_t offset;
- int ret, retries, t_ret;
-
- offset = (off_t)pgsize * pgno;
-
- if (DB_GLOBAL(j_ftruncate) != NULL) {
- ret = DB_GLOBAL(j_ftruncate)(fhp->fd, offset);
- goto done;
- }
-
-#ifdef HAVE_FILESYSTEM_NOTZERO
- /*
- * If the filesystem doesn't zero fill, it isn't safe to extend the
- * file, or we end up with junk blocks. Just return in that case.
- */
- if (__os_fs_notzero()) {
- off_t stat_offset;
- u_int32_t mbytes, bytes;
-
- /* Stat the file. */
- if ((ret =
- __os_ioinfo(dbenv, NULL, fhp, &mbytes, &bytes, NULL)) != 0)
- return (ret);
- stat_offset = (off_t)mbytes * MEGABYTE + bytes;
-
- if (offset > stat_offset)
- return (0);
- }
-#endif
-
- retries = 0;
- do {
- /*
- * Windows doesn't provide truncate directly. Instead,
- * it has SetEndOfFile, which truncates to the current
- * position. So we have to save the current position,
- * seek to where we want to truncate to, then seek back
- * to where we were. To avoid races, all of that needs
- * to be done while holding the file handle mutex.
- */
- MUTEX_THREAD_LOCK(dbenv, fhp->mutexp);
- oldpos.bigint = 0;
- if ((oldpos.low = SetFilePointer(fhp->handle,
- 0, &oldpos.high, FILE_CURRENT)) == -1 &&
- GetLastError() != NO_ERROR) {
- ret = __os_get_errno();
- goto end;
- }
- if ((ret = __os_seek(dbenv, fhp, pgsize, pgno,
- 0, 0, DB_OS_SEEK_SET)) != 0)
- goto end;
- if (!SetEndOfFile(fhp->handle))
- ret = __os_get_errno();
- if ((t_ret = __os_seek(dbenv, fhp, pgsize,
- (db_pgno_t)(oldpos.bigint / pgsize),
- 0, 0, DB_OS_SEEK_SET)) != 0 && ret == 0)
- ret = t_ret;
-end: MUTEX_THREAD_UNLOCK(dbenv, fhp->mutexp);
- } while ((ret == EAGAIN || ret == EBUSY || ret == EINTR) &&
- ++retries < DB_RETRY);
-
-done: if (ret != 0)
- __db_err(dbenv,
- "ftruncate: %lu: %s", pgno * pgsize, strerror(ret));
-
- return (ret);
-}
diff --git a/db/os_win32/os_unlink.c b/db/os_win32/os_unlink.c
deleted file mode 100644
index d1b50539e..000000000
--- a/db/os_win32/os_unlink.c
+++ /dev/null
@@ -1,73 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: os_unlink.c,v 11.5 2004/10/05 14:55:36 mjc Exp $
- */
-
-#include "db_config.h"
-
-#ifndef NO_SYSTEM_INCLUDES
-#include <sys/types.h>
-
-#include <string.h>
-#include <unistd.h>
-#endif
-
-#include "db_int.h"
-
-/*
- * __os_region_unlink --
- * Remove a shared memory object file.
- */
-int
-__os_region_unlink(dbenv, path)
- DB_ENV *dbenv;
- const char *path;
-{
- if (F_ISSET(dbenv, DB_ENV_OVERWRITE))
- (void)__db_overwrite(dbenv, path);
-
- return (__os_unlink(dbenv, path));
-}
-
-/*
- * __os_unlink --
- * Remove a file.
- *
- * PUBLIC: int __os_unlink __P((DB_ENV *, const char *));
- */
-int
-__os_unlink(dbenv, path)
- DB_ENV *dbenv;
- const char *path;
-{
- _TCHAR *tpath;
- int ret;
-
- if (DB_GLOBAL(j_unlink) != NULL) {
- ret = DB_GLOBAL(j_unlink)(path);
- goto done;
- }
-
- TO_TSTRING(dbenv, path, tpath, ret);
- if (ret != 0)
- return (ret);
- RETRY_CHK((!DeleteFile(tpath)), ret);
- FREE_STRING(dbenv, tpath);
-
- /*
- * XXX
- * We shouldn't be testing for an errno of ENOENT here, but ENOENT
- * signals that a file is missing, and we attempt to unlink things
- * (such as v. 2.x environment regions, in DB_ENV->remove) that we
- * are expecting not to be there. Reporting errors in these cases
- * is annoying.
- */
-done: if (ret != 0 && ret != ENOENT)
- __db_err(dbenv, "unlink: %s: %s", path, strerror(ret));
-
- return (ret);
-}
diff --git a/db/os_windows/ce_ctime.c b/db/os_windows/ce_ctime.c
new file mode 100644
index 000000000..8aad1f1a3
--- /dev/null
+++ b/db/os_windows/ce_ctime.c
@@ -0,0 +1,87 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 2001,2007 Oracle. All rights reserved.
+ *
+ * $Id: ce_ctime.c,v 12.4 2007/05/17 15:15:49 bostic Exp $
+ */
+
+#include "db_config.h"
+
+#include "db_int.h"
+
+static void __os_windows_ct_numb __P((char *, int));
+
+/*
+ * __db_ctime --
+ * Format a time-stamp.
+ */
+char *
+__db_ctime(tod, time_buf)
+ const time_t *tod;
+ char *time_buf;
+{
+ char *ncp;
+ __int64 i64_tod;
+ struct _FILETIME file_tod, file_loc;
+ struct _SYSTEMTIME sys_loc;
+static const __int64 SECS_BETWEEN_EPOCHS = 11644473600;
+static const __int64 SECS_TO_100NS = 10000000; /* 10^7 */
+
+ strcpy(time_buf, "Thu Jan 01 00:00:00 1970");
+ time_buf[CTIME_BUFLEN - 1] = '\0';
+
+ /* Convert the tod to a SYSTEM_TIME struct */
+ i64_tod = *tod;
+ i64_tod = (i64_tod + SECS_BETWEEN_EPOCHS)*SECS_TO_100NS;
+ memcpy(&file_tod, &i64_tod, sizeof(file_tod));
+ FileTimeToLocalFileTime(&file_tod, &file_loc);
+ FileTimeToSystemTime(&file_loc, &sys_loc);
+
+ /*
+ * Convert the _SYSTEMTIME to the correct format in time_buf.
+ * Based closely on the os_brew/ctime.c implementation.
+ *
+ * wWeekDay : Day of the week 0-6 (0=Monday, 6=Sunday)
+ */
+ ncp = &"MonTueWedThuFriSatSun"[sys_loc.wDayOfWeek*3];
+ time_buf[0] = *ncp++;
+ time_buf[1] = *ncp++;
+ time_buf[2] = *ncp;
+ ncp = &"JanFebMarAprMayJunJulAugSepOctNovDec"[(sys_loc.wMonth - 1) * 3];
+ time_buf[4] = *ncp++;
+ time_buf[5] = *ncp++;
+ time_buf[6] = *ncp;
+
+ __os_windows_ct_numb(time_buf + 8, sys_loc.wDay);
+ /* Add 100 to keep the leading zero. */
+ __os_windows_ct_numb(time_buf + 11, sys_loc.wHour + 100);
+ __os_windows_ct_numb(time_buf + 14, sys_loc.wMinute + 100);
+ __os_windows_ct_numb(time_buf + 17, sys_loc.wSecond + 100);
+
+ if (sys_loc.wYear < 100) { /* 9 99 */
+ time_buf[20] = ' ';
+ time_buf[21] = ' ';
+ __os_windows_ct_numb(time_buf + 22, sys_loc.wYear);
+ } else { /* 99 1999 */
+ __os_windows_ct_numb(time_buf + 20, sys_loc.wYear / 100);
+ __os_windows_ct_numb(time_buf + 22, sys_loc.wYear % 100 + 100);
+ }
+
+ return (time_buf);
+}
+
+/*
+ * ct_numb --
+ * Used by asctime.
+ */
+static void
+__os_windows_ct_numb(cp, n)
+ char *cp;
+ int n;
+{
+ cp[0] = ' ';
+ if (n >= 10)
+ cp[0] = (n / 10) % 10 + '0';
+ cp[1] = n % 10 + '0';
+}
diff --git a/db/os_windows/ce_time.c b/db/os_windows/ce_time.c
new file mode 100644
index 000000000..38e22c856
--- /dev/null
+++ b/db/os_windows/ce_time.c
@@ -0,0 +1,53 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 2006,2007 Oracle. All rights reserved.
+ *
+ * $Id: ce_time.c,v 12.4 2007/05/17 15:15:49 bostic Exp $
+ */
+
+#include "db_config.h"
+
+#include "db_int.h"
+
+/*
+ * time --
+ *
+ * PUBLIC: #ifndef HAVE_TIME
+ * PUBLIC: time_t time __P((time_t *));
+ * PUBLIC: #endif
+ */
+time_t
+time(timer)
+ time_t *timer;
+{
+ /*
+ * WinCE does not have a POSIX time implementation
+ * It only has a GetSystemTime, which returns a struct
+ * with time day/month/year.
+ * The API has a GetSystemTimeAsFileTime documented, but
+ * it does not seem to exist in WinCE.
+ */
+
+static const __int64 SECS_BETWEEN_EPOCHS = 11644473600;
+static const __int64 SECS_TO_100NS = 10000000; /* 10^7 */
+
+ struct _SYSTEMTIME stime;
+ struct _FILETIME ftime;
+ __int64 res;
+ GetSystemTime(&stime);
+ SystemTimeToFileTime(&stime, &ftime);
+
+ memcpy(&res, &ftime, sizeof(__int64));
+
+ res = (res/SECS_TO_100NS) - SECS_BETWEEN_EPOCHS;
+
+ /*
+ * TODO: validate result.
+ * assert((time_t)res == res);
+ */
+
+ if (timer != NULL)
+ *timer = (time_t)res;
+ return ((time_t)res);
+}
diff --git a/db/os_windows/os_abs.c b/db/os_windows/os_abs.c
index e4ace7bfb..0c1ca2eb2 100644
--- a/db/os_windows/os_abs.c
+++ b/db/os_windows/os_abs.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: os_abs.c,v 12.3 2006/08/24 14:46:21 bostic Exp $
+ * $Id: os_abs.c,v 12.5 2007/05/17 15:15:49 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/os_windows/os_clock.c b/db/os_windows/os_clock.c
index 2a0203237..8ea5e37c7 100644
--- a/db/os_windows/os_clock.c
+++ b/db/os_windows/os_clock.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2001-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2001,2007 Oracle. All rights reserved.
*
- * $Id: os_clock.c,v 12.6 2006/08/24 14:46:21 bostic Exp $
+ * $Id: os_clock.c,v 12.11 2007/05/17 15:15:49 bostic Exp $
*/
#include "db_config.h"
@@ -12,19 +11,26 @@
#include "db_int.h"
/*
- * __os_clock --
- * Return the current time-of-day clock in seconds and microseconds.
+ * __os_gettime --
+ * Return the current time-of-day clock in seconds and nanoseconds.
*/
void
-__os_clock(dbenv, secsp, usecsp)
+__os_gettime(dbenv, tp)
DB_ENV *dbenv;
- u_int32_t *secsp, *usecsp; /* Seconds and microseconds. */
+ db_timespec *tp;
{
+#ifdef DB_WINCE
+ DWORD ticks;
+
+ ticks = GetTickCount();
+
+ tp->tv_sec = (u_int32_t)(ticks / 1000);
+ tp->tv_nsec = (u_int32_t)((ticks % 1000) * MS_PER_NS);
+#else
struct _timeb now;
_ftime(&now);
- if (secsp != NULL)
- *secsp = (u_int32_t)now.time;
- if (usecsp != NULL)
- *usecsp = now.millitm * 1000;
+ tp->tv_sec = now.time;
+ tp->tv_nsec = now.millitm * MS_PER_NS;
+#endif
}
diff --git a/db/os_windows/os_config.c b/db/os_windows/os_config.c
index 51fc1b3ad..a9304609c 100644
--- a/db/os_windows/os_config.c
+++ b/db/os_windows/os_config.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1999-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1999,2007 Oracle. All rights reserved.
*
- * $Id: os_config.c,v 12.6 2006/08/24 14:46:21 bostic Exp $
+ * $Id: os_config.c,v 12.9 2007/05/17 15:15:49 bostic Exp $
*/
#include "db_config.h"
@@ -20,6 +19,9 @@
int
__os_is_winnt()
{
+#ifdef DB_WINCE
+ return (1);
+#else
static int __os_type = -1;
/*
@@ -33,6 +35,7 @@ __os_is_winnt()
__os_type = 0;
}
return (__os_type);
+#endif
}
/*
@@ -42,6 +45,9 @@ __os_is_winnt()
int
__os_fs_notzero()
{
+#ifdef DB_WINCE
+ return (1);
+#else
static int __os_notzero = -1;
OSVERSIONINFO osvi;
@@ -85,6 +91,7 @@ __os_fs_notzero()
__os_notzero = 1; /* Not Windows/NT */
}
return (__os_notzero);
+#endif
}
/*
@@ -104,7 +111,11 @@ __os_support_direct_io()
int
__os_support_db_register()
{
+#ifdef DB_WINCE
+ return (0);
+#else
return (__os_is_winnt());
+#endif
}
/*
@@ -114,5 +125,9 @@ __os_support_db_register()
int
__os_support_replication()
{
+#ifdef DB_WINCE
+ return (0);
+#else
return (__os_is_winnt());
+#endif
}
diff --git a/db/os_windows/os_dir.c b/db/os_windows/os_dir.c
index 4e47fa771..4258b5a17 100644
--- a/db/os_windows/os_dir.c
+++ b/db/os_windows/os_dir.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: os_dir.c,v 12.8 2006/08/24 14:46:21 bostic Exp $
+ * $Id: os_dir.c,v 12.10 2007/05/17 15:15:49 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/os_windows/os_errno.c b/db/os_windows/os_errno.c
index 14bdab6c5..2d34ff6c1 100644
--- a/db/os_windows/os_errno.c
+++ b/db/os_windows/os_errno.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1999-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1999,2007 Oracle. All rights reserved.
*
- * $Id: os_errno.c,v 12.10 2006/09/19 14:14:13 mjc Exp $
+ * $Id: os_errno.c,v 12.14 2007/05/17 15:15:49 bostic Exp $
*/
#include "db_config.h"
@@ -42,11 +41,14 @@ __os_get_errno()
return (errno);
}
+#ifdef HAVE_REPLICATION_THREADS
/*
* __os_get_neterr --
* Return the last networking error or EAGAIN if the last error is zero.
*
+ * PUBLIC: #ifdef HAVE_REPLICATION_THREADS
* PUBLIC: int __os_get_neterr __P((void));
+ * PUBLIC: #endif
*/
int
__os_get_neterr()
@@ -59,6 +61,7 @@ __os_get_neterr()
WSASetLastError(err = ERROR_RETRY);
return (err);
}
+#endif
/*
* __os_get_syserr --
@@ -106,8 +109,23 @@ __os_strerror(error, buf, len)
char *buf;
size_t len;
{
+#ifdef DB_WINCE
+#define MAX_TMPBUF_LEN 512
+ _TCHAR tbuf[MAX_TMPBUF_LEN];
+ size_t maxlen;
+
DB_ASSERT(NULL, error != 0);
+ memset(tbuf, 0, sizeof(_TCHAR)*MAX_TMPBUF_LEN);
+ maxlen = (len > MAX_TMPBUF_LEN ? MAX_TMPBUF_LEN : len);
+ FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, 0, (DWORD)error,
+ 0, tbuf, maxlen-1, NULL);
+
+ if (WideCharToMultiByte(CP_UTF8, 0, tbuf, -1,
+ buf, len, 0, NULL) == 0)
+ strncpy(buf, "Error message translation failed.", len);
+#else
+ DB_ASSERT(NULL, error != 0);
/*
* Explicitly call FormatMessageA, since we want to receive a char
* string back, not a tchar string.
@@ -115,6 +133,7 @@ __os_strerror(error, buf, len)
FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM,
0, (DWORD)error, 0, buf, (DWORD)(len - 1), NULL);
buf[len - 1] = '\0';
+#endif
return (buf);
}
@@ -135,6 +154,9 @@ __os_posix_err(error)
* Translate the Windows error codes we care about.
*/
switch (error) {
+ case ERROR_INVALID_PARAMETER:
+ return (EINVAL);
+
case ERROR_FILE_NOT_FOUND:
case ERROR_INVALID_DRIVE:
case ERROR_PATH_NOT_FOUND:
diff --git a/db/os_windows/os_fid.c b/db/os_windows/os_fid.c
index 9fa2a57c9..578ef0336 100644
--- a/db/os_windows/os_fid.c
+++ b/db/os_windows/os_fid.c
@@ -1,19 +1,15 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: os_fid.c,v 12.9 2006/08/24 14:46:21 bostic Exp $
+ * $Id: os_fid.c,v 12.16 2007/05/17 15:15:49 bostic Exp $
*/
#include "db_config.h"
#include "db_int.h"
-#define SERIAL_INIT 0
-static u_int32_t fid_serial = SERIAL_INIT;
-
/*
* __os_fileid --
* Return a unique identifier for a file.
@@ -48,34 +44,11 @@ __os_fileid(dbenv, fname, unique_okay, fidp)
memset(fidp, 0, DB_FILE_ID_LEN);
/*
- * Initialize/increment the serial number we use to help avoid
- * fileid collisions. Note that we don't bother with locking;
- * it's unpleasant to do from down in here, and if we race on
- * this no real harm will be done, since the finished fileid
- * has so many other components.
- *
- * We use the bottom 32-bits of the process ID, hoping they
- * are more random than the top 32-bits (should we be on a
- * machine with 64-bit process IDs).
- *
- * We increment by 100000 on each call as a simple way of
- * randomizing; simply incrementing seems potentially less useful
- * if pids are also simply incremented, since this is process-local
- * and we may be one of a set of processes starting up. 100000
- * pushes us out of pid space on most platforms, and has few
- * interesting properties in base 2.
- */
- if (fid_serial == SERIAL_INIT) {
- __os_id(dbenv, &pid, NULL);
- fid_serial = pid;
- } else
- fid_serial += 100000;
-
- /*
* First we open the file, because we're not given a handle to it.
* If we can't open it, we're in trouble.
*/
- if ((ret = __os_open(dbenv, fname, DB_OSO_RDONLY, _S_IREAD, &fhp)) != 0)
+ if ((ret = __os_open(dbenv, fname, 0,
+ DB_OSO_RDONLY, __db_omode("r--------"), &fhp)) != 0)
return (ret);
/* File open, get its info */
@@ -116,27 +89,36 @@ __os_fileid(dbenv, fname, unique_okay, fidp)
*fidp++ = *p++;
if (unique_okay) {
+ /* Add in 32-bits of (hopefully) unique number. */
+ __os_unique_id(dbenv, &tmp);
+ for (p = (u_int8_t *)&tmp, i = sizeof(u_int32_t); i > 0; --i)
+ *fidp++ = *p++;
+
/*
- * Use the system time to try to get a unique value
- * within this process. A millisecond counter
- * overflows 32 bits in about 49 days. So we use 8
- * bytes, and don't bother with the volume ID, which
- * is not very useful for our purposes.
+ * Initialize/increment the serial number we use to help
+ * avoid fileid collisions. Note we don't bother with
+ * locking; it's unpleasant to do from down in here, and
+ * if we race on this no real harm will be done, since the
+ * finished fileid has so many other components.
+ *
+ * We use the bottom 32-bits of the process ID, hoping they
+ * are more random than the top 32-bits (should we be on a
+ * machine with 64-bit process IDs).
+ *
+ * We increment by 100000 on each call as a simple way of
+ * randomizing; simply incrementing seems potentially less
+ * useful if pids are also simply incremented, since this
+ * is process-local and we may be one of a set of processes
+ * starting up. 100000 pushes us out of pid space on most
+ * 32-bit platforms, and has few interesting properties in
+ * base 2.
*/
- SYSTEMTIME st;
+ if (DB_GLOBAL(fid_serial) == 0) {
+ __os_id(dbenv, &pid, NULL);
+ DB_GLOBAL(fid_serial) = (u_int32_t)pid;
+ } else
+ DB_GLOBAL(fid_serial) += 100000;
- GetSystemTime(&st);
- tmp = (st.wYear - 1900) * 12 + (st.wMonth - 1);
- for (p = (u_int8_t *)&tmp, i = sizeof(u_int32_t); i > 0; --i)
- *fidp++ = *p++;
- tmp = ((((st.wDay - 1) * 24 + st.wHour) * 60 +
- st.wMinute) * 60 + st.wSecond) * 1000 +
- st.wMilliseconds;
- for (p = (u_int8_t *)&tmp, i = sizeof(u_int32_t); i > 0; --i)
- *fidp++ = *p++;
- for (p = (u_int8_t *)&fid_serial, i = sizeof(u_int32_t);
- i > 0; --i)
- *fidp++ = *p++;
} else {
tmp = (u_int32_t)fi.dwVolumeSerialNumber;
for (p = (u_int8_t *)&tmp, i = sizeof(u_int32_t); i > 0; --i)
diff --git a/db/os_windows/os_flock.c b/db/os_windows/os_flock.c
index c08193891..dcf5888cf 100644
--- a/db/os_windows/os_flock.c
+++ b/db/os_windows/os_flock.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: os_flock.c,v 1.12 2006/08/24 14:46:21 bostic Exp $
+ * $Id: os_flock.c,v 1.17 2007/05/17 15:15:49 bostic Exp $
*/
#include "db_config.h"
@@ -22,6 +21,17 @@ __os_fdlock(dbenv, fhp, offset, acquire, nowait)
int acquire, nowait;
off_t offset;
{
+#ifdef DB_WINCE
+ /*
+ * This functionality is not supported by WinCE, so just fail.
+ *
+ * Should only happen if an app attempts to open an environment
+ * with the DB_REGISTER flag.
+ */
+ __db_errx(dbenv, "fdlock API not implemented for WinCE, DB_REGISTER "
+ "environment flag not supported.");
+ return (EFAULT);
+#else
int ret;
DWORD low, high;
OVERLAPPED over;
@@ -29,6 +39,11 @@ __os_fdlock(dbenv, fhp, offset, acquire, nowait)
DB_ASSERT(dbenv,
F_ISSET(fhp, DB_FH_OPENED) && fhp->handle != INVALID_HANDLE_VALUE);
+ if (dbenv != NULL && FLD_ISSET(dbenv->verbose, DB_VERB_FILEOPS_ALL))
+ __db_msg(dbenv,
+ "fileops: flock %s %s offset %lu",
+ fhp->name, acquire ? "acquire": "release", (u_long)offset);
+
/*
* Windows file locking interferes with read/write operations, so we
* map the ranges to an area past the end of the file.
@@ -66,4 +81,5 @@ __os_fdlock(dbenv, fhp, offset, acquire, nowait)
!UnlockFile(fhp->handle, low, high, 1, 0), ret);
return (__os_posix_err(ret));
+#endif
}
diff --git a/db/os_windows/os_fsync.c b/db/os_windows/os_fsync.c
index 050d68e55..62c130fa7 100644
--- a/db/os_windows/os_fsync.c
+++ b/db/os_windows/os_fsync.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: os_fsync.c,v 12.7 2006/08/24 14:46:21 bostic Exp $
+ * $Id: os_fsync.c,v 12.10 2007/05/17 15:15:49 bostic Exp $
*/
#include "db_config.h"
@@ -29,6 +28,9 @@ __os_fsync(dbenv, fhp)
if (F_ISSET(fhp, DB_FH_NOSYNC))
return (0);
+ if (dbenv != NULL && FLD_ISSET(dbenv->verbose, DB_VERB_FILEOPS_ALL))
+ __db_msg(dbenv, "fileops: flush %s", fhp->name);
+
RETRY_CHK((!FlushFileBuffers(fhp->handle)), ret);
if (ret != 0) {
__db_syserr(dbenv, ret, "FlushFileBuffers");
diff --git a/db/os_windows/os_getenv.c b/db/os_windows/os_getenv.c
index a42dbd677..5ab56b1fc 100644
--- a/db/os_windows/os_getenv.c
+++ b/db/os_windows/os_getenv.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: os_getenv.c,v 1.4 2006/08/24 14:46:21 bostic Exp $
+ * $Id: os_getenv.c,v 1.7 2007/05/17 15:15:49 bostic Exp $
*/
#include "db_config.h"
@@ -22,6 +21,11 @@ __os_getenv(dbenv, name, bpp, buflen)
char **bpp;
size_t buflen;
{
+#ifdef DB_WINCE
+ COMPQUIET(name, NULL);
+ /* WinCE does not have a getenv implementation. */
+ return (0);
+#else
_TCHAR *tname, tbuf[1024];
int ret;
char *p;
@@ -94,4 +98,5 @@ small_buf:
"%s: buffer too small to hold environment variable %s",
name, p);
return (EINVAL);
+#endif
}
diff --git a/db/os_windows/os_handle.c b/db/os_windows/os_handle.c
index c03a5ecd8..c55226960 100644
--- a/db/os_windows/os_handle.c
+++ b/db/os_windows/os_handle.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1998-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1998,2007 Oracle. All rights reserved.
*
- * $Id: os_handle.c,v 12.10 2006/09/05 15:02:31 mjc Exp $
+ * $Id: os_handle.c,v 12.17 2007/05/17 15:15:49 bostic Exp $
*/
#include "db_config.h"
@@ -22,20 +21,42 @@ __os_openhandle(dbenv, name, flags, mode, fhpp)
int flags, mode;
DB_FH **fhpp;
{
+#ifdef DB_WINCE
+ /*
+ * __os_openhandle API is not implemented on WinCE.
+ * It is not currently called from within the Berkeley DB library,
+ * so don't log the failure via the __db_err mechanism.
+ */
+ return (EFAULT);
+#else
DB_FH *fhp;
int ret, nrepeat, retries;
- if ((ret = __os_calloc(dbenv, 1, sizeof(DB_FH), fhpp)) != 0)
+ /*
+ * Allocate the file handle and copy the file name. We generally only
+ * use the name for verbose or error messages, but on systems where we
+ * can't unlink temporary files immediately, we use the name to unlink
+ * the temporary file when the file handle is closed.
+ *
+ * Lock the DB_ENV handle and insert the new file handle on the list.
+ */
+ if ((ret = __os_calloc(dbenv, 1, sizeof(DB_FH), &fhp)) != 0)
return (ret);
- fhp = *fhpp;
+ if ((ret = __os_strdup(dbenv, name, &fhp->name)) != 0)
+ goto err;
+ if (dbenv != NULL) {
+ MUTEX_LOCK(dbenv, dbenv->mtx_env);
+ TAILQ_INSERT_TAIL(&dbenv->fdlist, fhp, q);
+ MUTEX_UNLOCK(dbenv, dbenv->mtx_env);
+ F_SET(fhp, DB_FH_ENVLINK);
+ }
retries = 0;
for (nrepeat = 1; nrepeat < 4; ++nrepeat) {
- ret = 0;
fhp->fd = _open(name, flags, mode);
if (fhp->fd != -1) {
- F_SET(fhp, DB_FH_OPENED);
+ ret = 0;
break;
}
@@ -61,15 +82,21 @@ __os_openhandle(dbenv, name, flags, mode, fhpp)
if (++retries < DB_RETRY)
--nrepeat;
break;
+ default:
+ /* Open is silent on error. */
+ goto err;
}
}
- if (ret != 0) {
- (void)__os_closehandle(dbenv, fhp);
- *fhpp = NULL;
+ if (ret == 0) {
+ F_SET(fhp, DB_FH_OPENED);
+ *fhpp = fhp;
+ return (0);
}
+err: (void)__os_closehandle(dbenv, fhp);
return (ret);
+#endif
}
/*
@@ -85,15 +112,32 @@ __os_closehandle(dbenv, fhp)
ret = 0;
- /*
- * If we have a valid handle, close it and unlink any temporary
- * file.
- */
+ if (dbenv != NULL) {
+ if (fhp->name != NULL && FLD_ISSET(
+ dbenv->verbose, DB_VERB_FILEOPS | DB_VERB_FILEOPS_ALL))
+ __db_msg(dbenv, "fileops: %s: close", fhp->name);
+
+ if (F_ISSET(fhp, DB_FH_ENVLINK)) {
+ /*
+ * Lock the DB_ENV handle and remove this file
+ * handle from the list.
+ */
+ MUTEX_LOCK(dbenv, dbenv->mtx_env);
+ TAILQ_REMOVE(&dbenv->fdlist, fhp, q);
+ MUTEX_UNLOCK(dbenv, dbenv->mtx_env);
+ }
+ }
+
+ /* Discard any underlying system file reference. */
if (F_ISSET(fhp, DB_FH_OPENED)) {
if (fhp->handle != INVALID_HANDLE_VALUE)
RETRY_CHK((!CloseHandle(fhp->handle)), ret);
else
+#ifdef DB_WINCE
+ ret = EFAULT;
+#else
RETRY_CHK((_close(fhp->fd)), ret);
+#endif
if (fhp->trunc_handle != INVALID_HANDLE_VALUE) {
RETRY_CHK((!CloseHandle(fhp->trunc_handle)), t_ret);
@@ -105,14 +149,14 @@ __os_closehandle(dbenv, fhp)
__db_syserr(dbenv, ret, "CloseHandle");
ret = __os_posix_err(ret);
}
-
- /* Unlink the file if we haven't already done so. */
- if (F_ISSET(fhp, DB_FH_UNLINK)) {
- (void)__os_unlink(dbenv, fhp->name);
- __os_free(dbenv, fhp->name);
- }
}
+ /* Unlink the file if we haven't already done so. */
+ if (F_ISSET(fhp, DB_FH_UNLINK))
+ (void)__os_unlink(dbenv, fhp->name);
+
+ if (fhp->name != NULL)
+ __os_free(dbenv, fhp->name);
__os_free(dbenv, fhp);
return (ret);
diff --git a/db/os_windows/os_map.c b/db/os_windows/os_map.c
index e254ea429..3ae60c70b 100644
--- a/db/os_windows/os_map.c
+++ b/db/os_windows/os_map.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: os_map.c,v 12.8 2006/08/24 14:46:21 bostic Exp $
+ * $Id: os_map.c,v 12.18 2007/05/17 17:18:02 bostic Exp $
*/
#include "db_config.h"
@@ -26,38 +25,40 @@ __os_r_sysattach(dbenv, infop, rp)
REGION *rp;
{
DB_FH *fhp;
- int is_system, ret;
+ int ret;
+
+ /*
+ * On Windows/9X, files that are opened by multiple processes do not
+ * share data correctly. For this reason, we require that DB_PRIVATE
+ * be specified on that platform.
+ */
+ if (!F_ISSET(dbenv, DB_ENV_PRIVATE) && __os_is_winnt() == 0) {
+ __db_err(dbenv,
+ EINVAL, "Windows 9X systems must specify DB_PRIVATE");
+ return (EINVAL);
+ }
/*
* Try to open/create the file. We DO NOT need to ensure that multiple
* threads/processes attempting to simultaneously create the region are
* properly ordered, our caller has already taken care of that.
*/
- if ((ret = __os_open(dbenv, infop->name,
- F_ISSET(infop, REGION_CREATE_OK) ? DB_OSO_CREATE: 0,
+ if ((ret = __os_open(dbenv, infop->name, 0, DB_OSO_REGION |
+ (F_ISSET(infop, REGION_CREATE_OK) ? DB_OSO_CREATE : 0),
dbenv->db_mode, &fhp)) != 0) {
__db_err(dbenv, ret, "%s", infop->name);
return (ret);
}
/*
- * On Windows/9X, files that are opened by multiple processes do not
- * share data correctly. For this reason, the DB_SYSTEM_MEM flag is
- * implied for any application that does not specify the DB_PRIVATE
- * flag.
- */
- is_system = F_ISSET(dbenv, DB_ENV_SYSTEM_MEM) ||
- (!F_ISSET(dbenv, DB_ENV_PRIVATE) && __os_is_winnt() == 0);
-
- /*
* Map the file in. If we're creating an in-system-memory region,
* specify a segment ID (which is never used again) so that the
* calling code writes out the REGENV_REF structure to the primary
* environment file.
*/
ret = __os_map(dbenv, infop->name, infop, fhp, rp->size,
- 1, is_system, 0, &infop->addr);
- if (ret == 0 && is_system == 1)
+ 1, F_ISSET(dbenv, DB_ENV_SYSTEM_MEM), 0, &infop->addr);
+ if (ret == 0 && F_ISSET(dbenv, DB_ENV_SYSTEM_MEM))
rp->segid = 1;
(void)__os_closehandle(dbenv, fhp);
@@ -111,6 +112,10 @@ __os_mapfile(dbenv, path, fhp, len, is_rdonly, addr)
size_t len;
void **addr;
{
+ if (dbenv != NULL &&
+ FLD_ISSET(dbenv->verbose, DB_VERB_FILEOPS | DB_VERB_FILEOPS_ALL))
+ __db_msg(dbenv, "fileops: mmap %s", path);
+
return (__os_map(dbenv, path, NULL, fhp, len, 0, 0, is_rdonly, addr));
}
@@ -124,6 +129,10 @@ __os_unmapfile(dbenv, addr, len)
void *addr;
size_t len;
{
+ if (dbenv != NULL &&
+ FLD_ISSET(dbenv->verbose, DB_VERB_FILEOPS | DB_VERB_FILEOPS_ALL))
+ __db_msg(dbenv, "fileops: munmap");
+
return (!UnmapViewOfFile(addr) ? __os_posix_err(__os_get_syserr()) : 0);
}
@@ -213,11 +222,20 @@ __os_map(dbenv, path, infop, fhp, len, is_region, is_system, is_rdonly, addr)
int ret, use_pagefile;
_TCHAR *tpath, shmem_name[DB_MAXPATHLEN];
void *pMemory;
+ unsigned __int64 len64;
ret = 0;
if (infop != NULL)
infop->wnt_handle = NULL;
+ /*
+ * On 64 bit systems, len is already a 64 bit value.
+ * On 32 bit systems len is a 32 bit value.
+ * Always convert to a 64 bit value, so that the high order
+ * DWORD can be simply extracted on 64 bit platforms.
+ */
+ len64 = len;
+
use_pagefile = is_region && is_system;
/*
@@ -225,6 +243,11 @@ __os_map(dbenv, path, infop, fhp, len, is_region, is_system, is_rdonly, addr)
* paging file namespace.
*/
if (use_pagefile) {
+#ifdef DB_WINCE
+ __db_errx(dbenv, "Unable to memory map regions using system "
+ "memory on WinCE.");
+ return (EFAULT);
+#endif
TO_TSTRING(dbenv, path, tpath, ret);
if (ret != 0)
return (ret);
@@ -259,6 +282,7 @@ __os_map(dbenv, path, infop, fhp, len, is_region, is_system, is_rdonly, addr)
*/
hMemory = NULL;
if (use_pagefile) {
+#ifndef DB_WINCE
hMemory = OpenFileMapping(
is_rdonly ? FILE_MAP_READ : FILE_MAP_ALL_ACCESS,
0, shmem_name);
@@ -266,11 +290,21 @@ __os_map(dbenv, path, infop, fhp, len, is_region, is_system, is_rdonly, addr)
if (hMemory == NULL && F_ISSET(infop, REGION_CREATE_OK))
hMemory = CreateFileMapping((HANDLE)-1, 0,
is_rdonly ? PAGE_READONLY : PAGE_READWRITE,
- 0, (DWORD)len, shmem_name);
- } else
+ (DWORD)(len64 >> 32), (DWORD)len64, shmem_name);
+#endif
+ } else {
hMemory = CreateFileMapping(fhp->handle, 0,
is_rdonly ? PAGE_READONLY : PAGE_READWRITE,
- 0, (DWORD)len, NULL);
+ (DWORD)(len64 >> 32), (DWORD)len64, NULL);
+#ifdef DB_WINCE
+ /*
+ * WinCE automatically closes the handle passed in.
+ * Ensure DB does not attempt to close the handle again.
+ */
+ fhp->handle = INVALID_HANDLE_VALUE;
+ F_CLR(fhp, DB_FH_OPENED);
+#endif
+ }
if (hMemory == NULL) {
ret = __os_get_syserr();
diff --git a/db/os_windows/os_mkdir.c b/db/os_windows/os_mkdir.c
new file mode 100644
index 000000000..5aa836d08
--- /dev/null
+++ b/db/os_windows/os_mkdir.c
@@ -0,0 +1,42 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
+ *
+ * $Id: os_mkdir.c,v 12.3 2007/05/17 15:15:49 bostic Exp $
+ */
+
+#include "db_config.h"
+
+#include "db_int.h"
+
+/*
+ * __os_mkdir --
+ * Create a directory.
+ *
+ * PUBLIC: int __os_mkdir __P((DB_ENV *, const char *, int));
+ */
+int
+__os_mkdir(dbenv, name, mode)
+ DB_ENV *dbenv;
+ const char *name;
+ int mode;
+{
+ int ret;
+ _TCHAR *tname;
+
+ if (dbenv != NULL &&
+ FLD_ISSET(dbenv->verbose, DB_VERB_FILEOPS | DB_VERB_FILEOPS_ALL))
+ __db_msg(dbenv, "fileops: mkdir %s", name);
+
+ /* Make the directory, with paranoid permissions. */
+ TO_TSTRING(dbenv, name, tname, ret);
+ if (ret != 0)
+ return (ret);
+ RETRY_CHK(!CreateDirectory(tname, NULL), ret);
+ FREE_STRING(dbenv, tname);
+ if (ret != 0)
+ return (__os_posix_err(ret));
+
+ return (ret);
+}
diff --git a/db/os_windows/os_open.c b/db/os_windows/os_open.c
index 9346722ae..f7bcac291 100644
--- a/db/os_windows/os_open.c
+++ b/db/os_windows/os_open.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: os_open.c,v 12.16 2006/09/12 01:49:36 mjc Exp $
+ * $Id: os_open.c,v 12.24 2007/05/17 15:15:49 bostic Exp $
*/
#include "db_config.h"
@@ -13,24 +12,10 @@
/*
* __os_open --
- * Open a file descriptor.
- */
-__os_open(dbenv, name, flags, mode, fhpp)
- DB_ENV *dbenv;
- const char *name;
- u_int32_t flags;
- int mode;
- DB_FH **fhpp;
-{
- return (__os_open_extend(dbenv, name, 0, flags, mode, fhpp));
-}
-
-/*
- * __os_open_extend --
* Open a file descriptor (including page size and log size information).
*/
int
-__os_open_extend(dbenv, name, page_size, flags, mode, fhpp)
+__os_open(dbenv, name, page_size, flags, mode, fhpp)
DB_ENV *dbenv;
const char *name;
u_int32_t page_size, flags;
@@ -38,14 +23,20 @@ __os_open_extend(dbenv, name, page_size, flags, mode, fhpp)
DB_FH **fhpp;
{
DB_FH *fhp;
+#ifndef DB_WINCE
DWORD cluster_size, sector_size, free_clusters, total_clusters;
+ _TCHAR *drive, dbuf[4]; /* <letter><colon><slash><nul> */
+#endif
int access, attr, createflag, nrepeat, ret, share;
- _TCHAR *drive, *tname;
- _TCHAR dbuf[4]; /* <letter><colon><slash><nul> */
+ _TCHAR *tname;
- fhp = NULL;
+ *fhpp = NULL;
tname = NULL;
+ if (dbenv != NULL &&
+ FLD_ISSET(dbenv->verbose, DB_VERB_FILEOPS | DB_VERB_FILEOPS_ALL))
+ __db_msg(dbenv, "fileops: open %s", name);
+
#define OKFLAGS \
(DB_OSO_ABSMODE | DB_OSO_CREATE | DB_OSO_DIRECT | DB_OSO_DSYNC |\
DB_OSO_EXCL | DB_OSO_RDONLY | DB_OSO_REGION | DB_OSO_SEQ | \
@@ -57,8 +48,24 @@ __os_open_extend(dbenv, name, page_size, flags, mode, fhpp)
if (ret != 0)
goto err;
+ /*
+ * Allocate the file handle and copy the file name. We generally only
+ * use the name for verbose or error messages, but on systems where we
+ * can't unlink temporary files immediately, we use the name to unlink
+ * the temporary file when the file handle is closed.
+ *
+ * Lock the DB_ENV handle and insert the new file handle on the list.
+ */
if ((ret = __os_calloc(dbenv, 1, sizeof(DB_FH), &fhp)) != 0)
+ return (ret);
+ if ((ret = __os_strdup(dbenv, name, &fhp->name)) != 0)
goto err;
+ if (dbenv != NULL) {
+ MUTEX_LOCK(dbenv, dbenv->mtx_env);
+ TAILQ_INSERT_TAIL(&dbenv->fdlist, fhp, q);
+ MUTEX_UNLOCK(dbenv, dbenv->mtx_env);
+ F_SET(fhp, DB_FH_ENVLINK);
+ }
/*
* Otherwise, use the Windows/32 CreateFile interface so that we can
@@ -80,9 +87,21 @@ __os_open_extend(dbenv, name, page_size, flags, mode, fhpp)
if (!LF_ISSET(DB_OSO_RDONLY))
access |= GENERIC_WRITE;
+#ifdef DB_WINCE
+ /*
+ * WinCE translates these flags into share flags for
+ * CreateFileForMapping.
+ * Also WinCE does not support the FILE_SHARE_DELETE flag.
+ */
+ if (LF_ISSET(DB_OSO_REGION))
+ share = GENERIC_READ | GENERIC_WRITE;
+ else
+ share = FILE_SHARE_READ | FILE_SHARE_WRITE;
+#else
share = FILE_SHARE_READ | FILE_SHARE_WRITE;
if (__os_is_winnt())
share |= FILE_SHARE_DELETE;
+#endif
attr = FILE_ATTRIBUTE_NORMAL;
/*
@@ -105,10 +124,12 @@ __os_open_extend(dbenv, name, page_size, flags, mode, fhpp)
attr |= FILE_FLAG_WRITE_THROUGH;
}
+#ifndef DB_WINCE
if (LF_ISSET(DB_OSO_SEQ))
attr |= FILE_FLAG_SEQUENTIAL_SCAN;
else
attr |= FILE_FLAG_RANDOM_ACCESS;
+#endif
if (LF_ISSET(DB_OSO_TEMP))
attr |= FILE_FLAG_DELETE_ON_CLOSE;
@@ -117,8 +138,12 @@ __os_open_extend(dbenv, name, page_size, flags, mode, fhpp)
* We can turn filesystem buffering off if the page size is a
* multiple of the disk's sector size. To find the sector size,
* we call GetDiskFreeSpace, which expects a drive name like "d:\\"
- * or NULL for the current disk (i.e., a relative path)
+ * or NULL for the current disk (i.e., a relative path).
+ *
+ * WinCE only has GetDiskFreeSpaceEx which does not
+ * return the sector size.
*/
+#ifndef DB_WINCE
if (LF_ISSET(DB_OSO_DIRECT) && page_size != 0 && name[0] != '\0') {
if (name[1] == ':') {
drive = dbuf;
@@ -135,14 +160,29 @@ __os_open_extend(dbenv, name, page_size, flags, mode, fhpp)
page_size % sector_size == 0)
attr |= FILE_FLAG_NO_BUFFERING;
}
+#endif
fhp->handle = fhp->trunc_handle = INVALID_HANDLE_VALUE;
for (nrepeat = 1;; ++nrepeat) {
- if (fhp->handle == INVALID_HANDLE_VALUE)
- fhp->handle = CreateFile(
- tname, access, share, NULL, createflag, attr, 0);
+ if (fhp->handle == INVALID_HANDLE_VALUE) {
+#ifdef DB_WINCE
+ if (LF_ISSET(DB_OSO_REGION))
+ fhp->handle = CreateFileForMapping(tname,
+ access, share, NULL, createflag, attr, 0);
+ else
+#endif
+ fhp->handle = CreateFile(tname,
+ access, share, NULL, createflag, attr, 0);
+ }
/*
+ * Since WinCE does not support truncate, we don't
+ * need to open this second handle.
+ * This code will not work unaltered on WinCE, the
+ * creation of the second handle fails.
+ */
+#ifndef DB_WINCE
+ /*
* Windows does not provide truncate directly. There is no
* safe way to use a handle for truncate concurrently with
* reads or writes. To deal with this, we open a second handle
@@ -156,7 +196,11 @@ __os_open_extend(dbenv, name, page_size, flags, mode, fhpp)
if (fhp->handle == INVALID_HANDLE_VALUE ||
(!LF_ISSET(DB_OSO_RDONLY | DB_OSO_TEMP) &&
- fhp->trunc_handle == INVALID_HANDLE_VALUE)) {
+ fhp->trunc_handle == INVALID_HANDLE_VALUE))
+#else
+ if (fhp->handle == INVALID_HANDLE_VALUE)
+#endif
+ {
/*
* If it's a "temporary" error, we retry up to 3 times,
* waiting up to 12 seconds. While it's not a problem
diff --git a/db/os_windows/os_rename.c b/db/os_windows/os_rename.c
index a7bdfac2b..1b6dd58ca 100644
--- a/db/os_windows/os_rename.c
+++ b/db/os_windows/os_rename.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: os_rename.c,v 12.6 2006/08/24 14:46:22 bostic Exp $
+ * $Id: os_rename.c,v 12.10 2007/05/17 15:15:49 bostic Exp $
*/
#include "db_config.h"
@@ -24,6 +23,10 @@ __os_rename(dbenv, oldname, newname, silent)
_TCHAR *toldname, *tnewname;
int ret;
+ if (dbenv != NULL &&
+ FLD_ISSET(dbenv->verbose, DB_VERB_FILEOPS | DB_VERB_FILEOPS_ALL))
+ __db_msg(dbenv, "fileops: rename %s to %s", oldname, newname);
+
TO_TSTRING(dbenv, oldname, toldname, ret);
if (ret != 0)
return (ret);
@@ -38,13 +41,16 @@ __os_rename(dbenv, oldname, newname, silent)
if (__os_posix_err(ret) == EEXIST) {
ret = 0;
+#ifndef DB_WINCE
if (__os_is_winnt()) {
if (!MoveFileEx(
toldname, tnewname, MOVEFILE_REPLACE_EXISTING))
ret = __os_get_syserr();
- } else {
+ } else
+#endif
+ {
/*
- * There is no MoveFileEx for Win9x/Me, so we have to
+ * There is no MoveFileEx for Win9x/Me/CE, so we have to
* do the best we can. Note that the MoveFile call
* above would have succeeded if oldname and newname
* refer to the same file, so we don't need to check
diff --git a/db/os_windows/os_rw.c b/db/os_windows/os_rw.c
index 2d98a0f28..f31874c22 100644
--- a/db/os_windows/os_rw.c
+++ b/db/os_windows/os_rw.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: os_rw.c,v 12.15 2006/08/24 14:46:22 bostic Exp $
+ * $Id: os_rw.c,v 12.19 2007/05/17 15:15:49 bostic Exp $
*/
#include "db_config.h"
@@ -27,6 +26,7 @@ __os_io(dbenv, op, fhp, pgno, pgsize, relative, io_len, buf, niop)
{
int ret;
+#ifndef DB_WINCE
if (__os_is_winnt()) {
ULONG64 off;
OVERLAPPED over;
@@ -37,6 +37,13 @@ __os_io(dbenv, op, fhp, pgno, pgsize, relative, io_len, buf, niop)
over.OffsetHigh = (DWORD)(off >> 32);
over.hEvent = 0; /* we don't want asynchronous notifications */
+ if (dbenv != NULL &&
+ FLD_ISSET(dbenv->verbose, DB_VERB_FILEOPS_ALL))
+ __db_msg(dbenv,
+ "fileops: %s %s: %lu bytes at offset %lu",
+ op == DB_IO_READ ? "read" : "write",
+ fhp->name, (u_long)io_len, (u_long)off);
+
switch (op) {
case DB_IO_READ:
if (!ReadFile(fhp->handle,
@@ -59,7 +66,9 @@ __os_io(dbenv, op, fhp, pgno, pgsize, relative, io_len, buf, niop)
}
}
-slow: MUTEX_LOCK(dbenv, fhp->mtx_fh);
+slow:
+#endif
+ MUTEX_LOCK(dbenv, fhp->mtx_fh);
if ((ret = __os_seek(dbenv, fhp, pgno, pgsize, relative)) != 0)
goto err;
@@ -96,6 +105,11 @@ __os_read(dbenv, fhp, addr, len, nrp)
u_int8_t *taddr;
ret = 0;
+
+ if (dbenv != NULL && FLD_ISSET(dbenv->verbose, DB_VERB_FILEOPS_ALL))
+ __db_msg(dbenv,
+ "fileops: read %s: %lu bytes", fhp->name, (u_long)len);
+
for (taddr = addr,
offset = 0; offset < len; taddr += nr, offset += nr) {
RETRY_CHK((!ReadFile(fhp->handle,
@@ -152,6 +166,10 @@ __os_physwrite(dbenv, fhp, addr, len, nwp)
int ret;
u_int8_t *taddr;
+ if (dbenv != NULL && FLD_ISSET(dbenv->verbose, DB_VERB_FILEOPS_ALL))
+ __db_msg(dbenv,
+ "fileops: write %s: %lu bytes", fhp->name, (u_long)len);
+
/*
* Make a last "panic" check. Imagine a thread of control running in
* Berkeley DB, going to sleep. Another thread of control decides to
diff --git a/db/os_windows/os_seek.c b/db/os_windows/os_seek.c
index 1a2131879..29b02baa1 100644
--- a/db/os_windows/os_seek.c
+++ b/db/os_windows/os_seek.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: os_seek.c,v 12.8 2006/08/24 14:46:22 bostic Exp $
+ * $Id: os_seek.c,v 12.11 2007/05/17 15:15:49 bostic Exp $
*/
#include "db_config.h"
@@ -36,6 +35,10 @@ __os_seek(dbenv, fhp, pgno, pgsize, relative)
offset = (off_t)pgsize * pgno + relative;
+ if (dbenv != NULL && FLD_ISSET(dbenv->verbose, DB_VERB_FILEOPS_ALL))
+ __db_msg(dbenv,
+ "fileops: seek %s to %lu", fhp->name, (u_long)offset);
+
offbytes.bigint = offset;
ret = (SetFilePointer(fhp->handle, offbytes.low,
&offbytes.high, FILE_BEGIN) == (DWORD)-1) ? __os_get_syserr() : 0;
diff --git a/db/os_windows/os_sleep.c b/db/os_windows/os_sleep.c
index f3709fb1a..c63c155ef 100644
--- a/db/os_windows/os_sleep.c
+++ b/db/os_windows/os_sleep.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: os_sleep.c,v 12.4 2006/08/24 14:46:22 bostic Exp $
+ * $Id: os_sleep.c,v 12.8 2007/05/17 15:15:49 bostic Exp $
*/
#include "db_config.h"
@@ -22,13 +21,12 @@ __os_sleep(dbenv, secs, usecs)
{
COMPQUIET(dbenv, NULL);
- /* Don't require that the values be normalized. */
- for (; usecs >= 1000000; ++secs, usecs -= 1000000)
- ;
-
/*
- * It's important that we yield the processor here so that other
- * processes or threads are permitted to run.
+ * It's important we yield the processor here so other processes or
+ * threads can run.
+ *
+ * Sheer raving paranoia -- don't sleep for 0 time, in case some
+ * implementation doesn't yield the processor in that case.
*/
- Sleep(secs * 1000 + usecs / 1000);
+ Sleep(secs * MS_PER_SEC + (usecs / US_PER_MS) + 1);
}
diff --git a/db/os_windows/os_spin.c b/db/os_windows/os_spin.c
index 5d5a23a28..b2ea2420c 100644
--- a/db/os_windows/os_spin.c
+++ b/db/os_windows/os_spin.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: os_spin.c,v 12.6 2006/08/24 14:46:22 bostic Exp $
+ * $Id: os_spin.c,v 12.8 2007/05/17 15:15:49 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/os_windows/os_stat.c b/db/os_windows/os_stat.c
index cd018b83f..53bcc4b95 100644
--- a/db/os_windows/os_stat.c
+++ b/db/os_windows/os_stat.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: os_stat.c,v 12.9 2006/08/24 14:46:22 bostic Exp $
+ * $Id: os_stat.c,v 12.12 2007/05/17 15:15:49 bostic Exp $
*/
#include "db_config.h"
@@ -29,6 +28,10 @@ __os_exists(dbenv, path, isdirp)
if (ret != 0)
return (ret);
+ if (dbenv != NULL &&
+ FLD_ISSET(dbenv->verbose, DB_VERB_FILEOPS | DB_VERB_FILEOPS_ALL))
+ __db_msg(dbenv, "fileops: stat %s", path);
+
RETRY_CHK(
((attrs = GetFileAttributes(tpath)) == (DWORD)-1 ? 1 : 0), ret);
if (ret == 0) {
diff --git a/db/os_windows/os_truncate.c b/db/os_windows/os_truncate.c
index 936d080ef..a708b361b 100644
--- a/db/os_windows/os_truncate.c
+++ b/db/os_windows/os_truncate.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2004-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2004,2007 Oracle. All rights reserved.
*
- * $Id: os_truncate.c,v 12.12 2006/09/05 15:30:18 mjc Exp $
+ * $Id: os_truncate.c,v 12.15 2007/05/17 15:15:49 bostic Exp $
*/
#include "db_config.h"
@@ -36,6 +35,11 @@ __os_truncate(dbenv, fhp, pgno, pgsize)
ret = 0;
offset = (off_t)pgsize * pgno;
+ if (dbenv != NULL &&
+ FLD_ISSET(dbenv->verbose, DB_VERB_FILEOPS | DB_VERB_FILEOPS_ALL))
+ __db_msg(dbenv,
+ "fileops: truncate %s to %lu", fhp->name, (u_long)offset);
+
#ifdef HAVE_FILESYSTEM_NOTZERO
/*
* If the filesystem doesn't zero fill, it isn't safe to extend the
diff --git a/db/os_windows/os_unlink.c b/db/os_windows/os_unlink.c
index d6a7359c2..45e188db1 100644
--- a/db/os_windows/os_unlink.c
+++ b/db/os_windows/os_unlink.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: os_unlink.c,v 12.15 2006/08/24 14:46:22 bostic Exp $
+ * $Id: os_unlink.c,v 12.18 2007/05/17 15:15:49 bostic Exp $
*/
#include "db_config.h"
@@ -20,6 +19,10 @@ __os_region_unlink(dbenv, path)
DB_ENV *dbenv;
const char *path;
{
+ if (dbenv != NULL &&
+ FLD_ISSET(dbenv->verbose, DB_VERB_FILEOPS | DB_VERB_FILEOPS_ALL))
+ __db_msg(dbenv, "fileops: unlink %s", path);
+
if (F_ISSET(dbenv, DB_ENV_OVERWRITE))
(void)__db_file_multi_write(dbenv, path);
@@ -40,6 +43,10 @@ __os_unlink(dbenv, path)
u_int32_t id;
int ret, t_ret;
+ if (dbenv != NULL &&
+ FLD_ISSET(dbenv->verbose, DB_VERB_FILEOPS | DB_VERB_FILEOPS_ALL))
+ __db_msg(dbenv, "fileops: unlink %s", path);
+
TO_TSTRING(dbenv, path, tpath, ret);
if (ret != 0)
return (ret);
diff --git a/db/os_windows/os_yield.c b/db/os_windows/os_yield.c
index 200633cc7..e5d9ced08 100644
--- a/db/os_windows/os_yield.c
+++ b/db/os_windows/os_yield.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: os_yield.c,v 12.7 2006/08/24 14:46:22 bostic Exp $
+ * $Id: os_yield.c,v 12.9 2007/05/17 15:15:49 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/perl.BerkeleyDB/BerkeleyDB.pm b/db/perl.BerkeleyDB/BerkeleyDB.pm
deleted file mode 100644
index cc172a2bd..000000000
--- a/db/perl.BerkeleyDB/BerkeleyDB.pm
+++ /dev/null
@@ -1,1227 +0,0 @@
-
-package BerkeleyDB;
-
-
-# Copyright (c) 1997-2001 Paul Marquess. All rights reserved.
-# This program is free software; you can redistribute it and/or
-# modify it under the same terms as Perl itself.
-#
-
-# The documentation for this module is at the bottom of this file,
-# after the line __END__.
-
-BEGIN { require 5.004_04 }
-
-use strict;
-use Carp;
-use vars qw($VERSION @ISA @EXPORT $AUTOLOAD);
-
-$VERSION = '0.13';
-
-require Exporter;
-require DynaLoader;
-require AutoLoader;
-use IO ;
-
-@ISA = qw(Exporter DynaLoader);
-# Items to export into callers namespace by default. Note: do not export
-# names by default without a very good reason. Use EXPORT_OK instead.
-# Do not simply export all your public functions/methods/constants.
-@EXPORT = qw(
-
- DB_AFTER
- DB_APPEND
- DB_ARCH_ABS
- DB_ARCH_DATA
- DB_ARCH_LOG
- DB_BEFORE
- DB_BTREE
- DB_BTREEMAGIC
- DB_BTREEOLDVER
- DB_BTREEVERSION
- DB_CHECKPOINT
- DB_CONSUME
- DB_CREATE
- DB_CURLSN
- DB_CURRENT
- DB_DBT_MALLOC
- DB_DBT_PARTIAL
- DB_DBT_USERMEM
- DB_DELETED
- DB_DELIMITER
- DB_DUP
- DB_DUPSORT
- DB_ENV_APPINIT
- DB_ENV_STANDALONE
- DB_ENV_THREAD
- DB_EXCL
- DB_FILE_ID_LEN
- DB_FIRST
- DB_FIXEDLEN
- DB_FLUSH
- DB_FORCE
- DB_GET_BOTH
- DB_GET_RECNO
- DB_HASH
- DB_HASHMAGIC
- DB_HASHOLDVER
- DB_HASHVERSION
- DB_INCOMPLETE
- DB_INIT_CDB
- DB_INIT_LOCK
- DB_INIT_LOG
- DB_INIT_MPOOL
- DB_INIT_TXN
- DB_JOIN_ITEM
- DB_KEYEMPTY
- DB_KEYEXIST
- DB_KEYFIRST
- DB_KEYLAST
- DB_LAST
- DB_LOCKMAGIC
- DB_LOCKVERSION
- DB_LOCK_CONFLICT
- DB_LOCK_DEADLOCK
- DB_LOCK_DEFAULT
- DB_LOCK_GET
- DB_LOCK_NORUN
- DB_LOCK_NOTGRANTED
- DB_LOCK_NOTHELD
- DB_LOCK_NOWAIT
- DB_LOCK_OLDEST
- DB_LOCK_RANDOM
- DB_LOCK_RIW_N
- DB_LOCK_RW_N
- DB_LOCK_YOUNGEST
- DB_LOGMAGIC
- DB_LOGOLDVER
- DB_MAX_PAGES
- DB_MAX_RECORDS
- DB_MPOOL_CLEAN
- DB_MPOOL_CREATE
- DB_MPOOL_DIRTY
- DB_MPOOL_DISCARD
- DB_MPOOL_LAST
- DB_MPOOL_NEW
- DB_MPOOL_PRIVATE
- DB_MUTEXDEBUG
- DB_MUTEXLOCKS
- DB_NEEDSPLIT
- DB_NEXT
- DB_NEXT_DUP
- DB_NOMMAP
- DB_NOOVERWRITE
- DB_NOSYNC
- DB_NOTFOUND
- DB_PAD
- DB_PAGEYIELD
- DB_POSITION
- DB_PREV
- DB_PRIVATE
- DB_QUEUE
- DB_RDONLY
- DB_RECNO
- DB_RECNUM
- DB_RECORDCOUNT
- DB_RECOVER
- DB_RECOVER_FATAL
- DB_REGISTERED
- DB_RENUMBER
- DB_RMW
- DB_RUNRECOVERY
- DB_SEQUENTIAL
- DB_SET
- DB_SET_RANGE
- DB_SET_RECNO
- DB_SNAPSHOT
- DB_SWAPBYTES
- DB_TEMPORARY
- DB_THREAD
- DB_TRUNCATE
- DB_TXNMAGIC
- DB_TXNVERSION
- DB_TXN_BACKWARD_ROLL
- DB_TXN_CKP
- DB_TXN_FORWARD_ROLL
- DB_TXN_LOCK_2PL
- DB_TXN_LOCK_MASK
- DB_TXN_LOCK_OPTIMIST
- DB_TXN_LOCK_OPTIMISTIC
- DB_TXN_LOG_MASK
- DB_TXN_LOG_REDO
- DB_TXN_LOG_UNDO
- DB_TXN_LOG_UNDOREDO
- DB_TXN_NOSYNC
- DB_TXN_NOWAIT
- DB_TXN_OPENFILES
- DB_TXN_REDO
- DB_TXN_SYNC
- DB_TXN_UNDO
- DB_USE_ENVIRON
- DB_USE_ENVIRON_ROOT
- DB_VERSION_MAJOR
- DB_VERSION_MINOR
- DB_VERSION_PATCH
- DB_WRITECURSOR
- );
-
-sub AUTOLOAD {
- # This AUTOLOAD is used to 'autoload' constants from the constant()
- # XS function. If a constant is not found then control is passed
- # to the AUTOLOAD in AutoLoader.
-
- my $constname;
- ($constname = $AUTOLOAD) =~ s/.*:://;
- my $val = constant($constname, @_ ? $_[0] : 0);
- if ($! != 0) {
- if ($! =~ /Invalid/) {
- $AutoLoader::AUTOLOAD = $AUTOLOAD;
- goto &AutoLoader::AUTOLOAD;
- }
- else {
- croak "Your vendor has not defined BerkeleyDB macro $constname";
- }
- }
- eval "sub $AUTOLOAD { $val }";
- goto &$AUTOLOAD;
-}
-
-bootstrap BerkeleyDB $VERSION;
-
-# Preloaded methods go here.
-
-
-sub ParseParameters($@)
-{
- my ($default, @rest) = @_ ;
- my (%got) = %$default ;
- my (@Bad) ;
- my ($key, $value) ;
- my $sub = (caller(1))[3] ;
- my %options = () ;
- local ($Carp::CarpLevel) = 1 ;
-
- # allow the options to be passed as a hash reference or
- # as the complete hash.
- if (@rest == 1) {
-
- croak "$sub: parameter is not a reference to a hash"
- if ref $rest[0] ne "HASH" ;
-
- %options = %{ $rest[0] } ;
- }
- elsif (@rest >= 2) {
- %options = @rest ;
- }
-
- while (($key, $value) = each %options)
- {
- $key =~ s/^-// ;
-
- if (exists $default->{$key})
- { $got{$key} = $value }
- else
- { push (@Bad, $key) }
- }
-
- if (@Bad) {
- my ($bad) = join(", ", @Bad) ;
- croak "unknown key value(s) @Bad" ;
- }
-
- return \%got ;
-}
-
-use UNIVERSAL qw( isa ) ;
-
-sub env_remove
-{
- # Usage:
- #
- # $env = new BerkeleyDB::Env
- # [ -Home => $path, ]
- # [ -Config => { name => value, name => value }
- # [ -Flags => DB_INIT_LOCK| ]
- # ;
-
- my $got = BerkeleyDB::ParseParameters({
- Home => undef,
- Flags => 0,
- Config => undef,
- }, @_) ;
-
- if (defined $got->{ErrFile}) {
- if (!isaFilehandle($got->{ErrFile})) {
- my $handle = new IO::File ">$got->{ErrFile}"
- or croak "Cannot open file $got->{ErrFile}: $!\n" ;
- $got->{ErrFile} = $handle ;
- }
- }
-
-
- if (defined $got->{Config}) {
- croak("Config parameter must be a hash reference")
- if ! ref $got->{Config} eq 'HASH' ;
-
- @BerkeleyDB::a = () ;
- my $k = "" ; my $v = "" ;
- while (($k, $v) = each %{$got->{Config}}) {
- push @BerkeleyDB::a, "$k\t$v" ;
- }
-
- $got->{"Config"} = pack("p*", @BerkeleyDB::a, undef)
- if @BerkeleyDB::a ;
- }
-
- return _env_remove($got) ;
-}
-
-sub db_remove
-{
- my $got = BerkeleyDB::ParseParameters(
- {
- Filename => undef,
- Subname => undef,
- Flags => 0,
- Env => undef,
- }, @_) ;
-
- croak("Must specify a filename")
- if ! defined $got->{Filename} ;
-
- croak("Env not of type BerkeleyDB::Env")
- if defined $got->{Env} and ! isa($got->{Env},'BerkeleyDB::Env');
-
- return _db_remove($got);
-}
-
-package BerkeleyDB::Env ;
-
-use UNIVERSAL qw( isa ) ;
-use Carp ;
-use vars qw( %valid_config_keys ) ;
-
-sub isaFilehandle
-{
- my $fh = shift ;
-
- return ((isa($fh,'GLOB') or isa(\$fh,'GLOB')) and defined fileno($fh) )
-
-}
-
-%valid_config_keys = map { $_, 1 } qw( DB_DATA_DIR DB_LOG_DIR DB_TEMP_DIR ) ;
-
-sub new
-{
- # Usage:
- #
- # $env = new BerkeleyDB::Env
- # [ -Home => $path, ]
- # [ -Mode => mode, ]
- # [ -Config => { name => value, name => value }
- # [ -ErrFile => filename or filehandle, ]
- # [ -ErrPrefix => "string", ]
- # [ -Flags => DB_INIT_LOCK| ]
- # [ -Cachesize => number ]
- # [ -LockDetect => ]
- # [ -Verbose => boolean ]
- # ;
-
- my $pkg = shift ;
- my $got = BerkeleyDB::ParseParameters({
- Home => undef,
- Server => undef,
- Mode => 0666,
- ErrFile => undef,
- ErrPrefix => undef,
- Flags => 0,
- Cachesize => 0,
- LockDetect => 0,
- Verbose => 0,
- Config => undef,
- }, @_) ;
-
- if (defined $got->{ErrFile}) {
- if (!isaFilehandle($got->{ErrFile})) {
- my $handle = new IO::File ">$got->{ErrFile}"
- or croak "Cannot open file $got->{ErrFile}: $!\n" ;
- $got->{ErrFile} = $handle ;
- }
- }
-
-
- my %config ;
- if (defined $got->{Config}) {
- croak("Config parameter must be a hash reference")
- if ! ref $got->{Config} eq 'HASH' ;
-
- %config = %{ $got->{Config} } ;
- @BerkeleyDB::a = () ;
- my $k = "" ; my $v = "" ;
- while (($k, $v) = each %config) {
- if ($BerkeleyDB::db_version >= 3.1 && ! $valid_config_keys{$k} ) {
- $BerkeleyDB::Error = "illegal name-value pair: $k $v\n" ;
- croak $BerkeleyDB::Error ;
- }
- push @BerkeleyDB::a, "$k\t$v" ;
- }
-
- $got->{"Config"} = pack("p*", @BerkeleyDB::a, undef)
- if @BerkeleyDB::a ;
- }
-
- my ($addr) = _db_appinit($pkg, $got) ;
- my $obj ;
- $obj = bless [$addr] , $pkg if $addr ;
- if ($obj && $BerkeleyDB::db_version >= 3.1 && keys %config) {
- my ($k, $v);
- while (($k, $v) = each %config) {
- if ($k eq 'DB_DATA_DIR')
- { $obj->set_data_dir($v) }
- elsif ($k eq 'DB_LOG_DIR')
- { $obj->set_lg_dir($v) }
- elsif ($k eq 'DB_TEMP_DIR')
- { $obj->set_tmp_dir($v) }
- else {
- $BerkeleyDB::Error = "illegal name-value pair: $k $v\n" ;
- croak $BerkeleyDB::Error
- }
- }
- }
- return $obj ;
-}
-
-
-sub TxnMgr
-{
- my $env = shift ;
- my ($addr) = $env->_TxnMgr() ;
- my $obj ;
- $obj = bless [$addr, $env] , "BerkeleyDB::TxnMgr" if $addr ;
- return $obj ;
-}
-
-sub txn_begin
-{
- my $env = shift ;
- my ($addr) = $env->_txn_begin(@_) ;
- my $obj ;
- $obj = bless [$addr, $env] , "BerkeleyDB::Txn" if $addr ;
- return $obj ;
-}
-
-sub DESTROY
-{
- my $self = shift ;
- $self->_DESTROY() ;
-}
-
-package BerkeleyDB::Hash ;
-
-use vars qw(@ISA) ;
-@ISA = qw( BerkeleyDB::Common BerkeleyDB::_tiedHash ) ;
-use UNIVERSAL qw( isa ) ;
-use Carp ;
-
-sub new
-{
- my $self = shift ;
- my $got = BerkeleyDB::ParseParameters(
- {
- # Generic Stuff
- Filename => undef,
- Subname => undef,
- #Flags => BerkeleyDB::DB_CREATE(),
- Flags => 0,
- Property => 0,
- Mode => 0666,
- Cachesize => 0,
- Lorder => 0,
- Pagesize => 0,
- Env => undef,
- #Tie => undef,
- Txn => undef,
-
- # Hash specific
- Ffactor => 0,
- Nelem => 0,
- Hash => undef,
- DupCompare => undef,
-
- # BerkeleyDB specific
- ReadKey => undef,
- WriteKey => undef,
- ReadValue => undef,
- WriteValue => undef,
- }, @_) ;
-
- croak("Env not of type BerkeleyDB::Env")
- if defined $got->{Env} and ! isa($got->{Env},'BerkeleyDB::Env');
-
- croak("Txn not of type BerkeleyDB::Txn")
- if defined $got->{Txn} and ! isa($got->{Txn},'BerkeleyDB::Txn');
-
- croak("-Tie needs a reference to a hash")
- if defined $got->{Tie} and $got->{Tie} !~ /HASH/ ;
-
- my ($addr) = _db_open_hash($self, $got);
- my $obj ;
- if ($addr) {
- $obj = bless [$addr] , $self ;
- push @{ $obj }, $got->{Env} if $got->{Env} ;
- $obj->Txn($got->{Txn}) if $got->{Txn} ;
- }
- return $obj ;
-}
-
-*TIEHASH = \&new ;
-
-
-package BerkeleyDB::Btree ;
-
-use vars qw(@ISA) ;
-@ISA = qw( BerkeleyDB::Common BerkeleyDB::_tiedHash ) ;
-use UNIVERSAL qw( isa ) ;
-use Carp ;
-
-sub new
-{
- my $self = shift ;
- my $got = BerkeleyDB::ParseParameters(
- {
- # Generic Stuff
- Filename => undef,
- Subname => undef,
- #Flags => BerkeleyDB::DB_CREATE(),
- Flags => 0,
- Property => 0,
- Mode => 0666,
- Cachesize => 0,
- Lorder => 0,
- Pagesize => 0,
- Env => undef,
- #Tie => undef,
- Txn => undef,
-
- # Btree specific
- Minkey => 0,
- Compare => undef,
- DupCompare => undef,
- Prefix => undef,
- }, @_) ;
-
- croak("Env not of type BerkeleyDB::Env")
- if defined $got->{Env} and ! isa($got->{Env},'BerkeleyDB::Env');
-
- croak("Txn not of type BerkeleyDB::Txn")
- if defined $got->{Txn} and ! isa($got->{Txn},'BerkeleyDB::Txn');
-
- croak("-Tie needs a reference to a hash")
- if defined $got->{Tie} and $got->{Tie} !~ /HASH/ ;
-
- my ($addr) = _db_open_btree($self, $got);
- my $obj ;
- if ($addr) {
- $obj = bless [$addr] , $self ;
- push @{ $obj }, $got->{Env} if $got->{Env} ;
- $obj->Txn($got->{Txn}) if $got->{Txn} ;
- }
- return $obj ;
-}
-
-*BerkeleyDB::Btree::TIEHASH = \&BerkeleyDB::Btree::new ;
-
-
-package BerkeleyDB::Recno ;
-
-use vars qw(@ISA) ;
-@ISA = qw( BerkeleyDB::Common BerkeleyDB::_tiedArray ) ;
-use UNIVERSAL qw( isa ) ;
-use Carp ;
-
-sub new
-{
- my $self = shift ;
- my $got = BerkeleyDB::ParseParameters(
- {
- # Generic Stuff
- Filename => undef,
- Subname => undef,
- #Flags => BerkeleyDB::DB_CREATE(),
- Flags => 0,
- Property => 0,
- Mode => 0666,
- Cachesize => 0,
- Lorder => 0,
- Pagesize => 0,
- Env => undef,
- #Tie => undef,
- Txn => undef,
-
- # Recno specific
- Delim => undef,
- Len => undef,
- Pad => undef,
- Source => undef,
- ArrayBase => 1, # lowest index in array
- }, @_) ;
-
- croak("Env not of type BerkeleyDB::Env")
- if defined $got->{Env} and ! isa($got->{Env},'BerkeleyDB::Env');
-
- croak("Txn not of type BerkeleyDB::Txn")
- if defined $got->{Txn} and ! isa($got->{Txn},'BerkeleyDB::Txn');
-
- croak("Tie needs a reference to an array")
- if defined $got->{Tie} and $got->{Tie} !~ /ARRAY/ ;
-
- croak("ArrayBase can only be 0 or 1, parsed $got->{ArrayBase}")
- if $got->{ArrayBase} != 1 and $got->{ArrayBase} != 0 ;
-
-
- $got->{Fname} = $got->{Filename} if defined $got->{Filename} ;
-
- my ($addr) = _db_open_recno($self, $got);
- my $obj ;
- if ($addr) {
- $obj = bless [$addr] , $self ;
- push @{ $obj }, $got->{Env} if $got->{Env} ;
- $obj->Txn($got->{Txn}) if $got->{Txn} ;
- }
- return $obj ;
-}
-
-*BerkeleyDB::Recno::TIEARRAY = \&BerkeleyDB::Recno::new ;
-*BerkeleyDB::Recno::db_stat = \&BerkeleyDB::Btree::db_stat ;
-
-package BerkeleyDB::Queue ;
-
-use vars qw(@ISA) ;
-@ISA = qw( BerkeleyDB::Common BerkeleyDB::_tiedArray ) ;
-use UNIVERSAL qw( isa ) ;
-use Carp ;
-
-sub new
-{
- my $self = shift ;
- my $got = BerkeleyDB::ParseParameters(
- {
- # Generic Stuff
- Filename => undef,
- Subname => undef,
- #Flags => BerkeleyDB::DB_CREATE(),
- Flags => 0,
- Property => 0,
- Mode => 0666,
- Cachesize => 0,
- Lorder => 0,
- Pagesize => 0,
- Env => undef,
- #Tie => undef,
- Txn => undef,
-
- # Queue specific
- Len => undef,
- Pad => undef,
- ArrayBase => 1, # lowest index in array
- ExtentSize => undef,
- }, @_) ;
-
- croak("Env not of type BerkeleyDB::Env")
- if defined $got->{Env} and ! isa($got->{Env},'BerkeleyDB::Env');
-
- croak("Txn not of type BerkeleyDB::Txn")
- if defined $got->{Txn} and ! isa($got->{Txn},'BerkeleyDB::Txn');
-
- croak("Tie needs a reference to an array")
- if defined $got->{Tie} and $got->{Tie} !~ /ARRAY/ ;
-
- croak("ArrayBase can only be 0 or 1, parsed $got->{ArrayBase}")
- if $got->{ArrayBase} != 1 and $got->{ArrayBase} != 0 ;
-
-
- my ($addr) = _db_open_queue($self, $got);
- my $obj ;
- if ($addr) {
- $obj = bless [$addr] , $self ;
- push @{ $obj }, $got->{Env} if $got->{Env} ;
- $obj->Txn($got->{Txn}) if $got->{Txn} ;
- }
- return $obj ;
-}
-
-*BerkeleyDB::Queue::TIEARRAY = \&BerkeleyDB::Queue::new ;
-
-## package BerkeleyDB::Text ;
-##
-## use vars qw(@ISA) ;
-## @ISA = qw( BerkeleyDB::Common BerkeleyDB::_tiedArray ) ;
-## use UNIVERSAL qw( isa ) ;
-## use Carp ;
-##
-## sub new
-## {
-## my $self = shift ;
-## my $got = BerkeleyDB::ParseParameters(
-## {
-## # Generic Stuff
-## Filename => undef,
-## #Flags => BerkeleyDB::DB_CREATE(),
-## Flags => 0,
-## Property => 0,
-## Mode => 0666,
-## Cachesize => 0,
-## Lorder => 0,
-## Pagesize => 0,
-## Env => undef,
-## #Tie => undef,
-## Txn => undef,
-##
-## # Recno specific
-## Delim => undef,
-## Len => undef,
-## Pad => undef,
-## Btree => undef,
-## }, @_) ;
-##
-## croak("Env not of type BerkeleyDB::Env")
-## if defined $got->{Env} and ! isa($got->{Env},'BerkeleyDB::Env');
-##
-## croak("Txn not of type BerkeleyDB::Txn")
-## if defined $got->{Txn} and ! isa($got->{Txn},'BerkeleyDB::Txn');
-##
-## croak("-Tie needs a reference to an array")
-## if defined $got->{Tie} and $got->{Tie} !~ /ARRAY/ ;
-##
-## # rearange for recno
-## $got->{Source} = $got->{Filename} if defined $got->{Filename} ;
-## delete $got->{Filename} ;
-## $got->{Fname} = $got->{Btree} if defined $got->{Btree} ;
-## return BerkeleyDB::Recno::_db_open_recno($self, $got);
-## }
-##
-## *BerkeleyDB::Text::TIEARRAY = \&BerkeleyDB::Text::new ;
-## *BerkeleyDB::Text::db_stat = \&BerkeleyDB::Btree::db_stat ;
-
-package BerkeleyDB::Unknown ;
-
-use vars qw(@ISA) ;
-@ISA = qw( BerkeleyDB::Common BerkeleyDB::_tiedArray ) ;
-use UNIVERSAL qw( isa ) ;
-use Carp ;
-
-sub new
-{
- my $self = shift ;
- my $got = BerkeleyDB::ParseParameters(
- {
- # Generic Stuff
- Filename => undef,
- Subname => undef,
- #Flags => BerkeleyDB::DB_CREATE(),
- Flags => 0,
- Property => 0,
- Mode => 0666,
- Cachesize => 0,
- Lorder => 0,
- Pagesize => 0,
- Env => undef,
- #Tie => undef,
- Txn => undef,
-
- }, @_) ;
-
- croak("Env not of type BerkeleyDB::Env")
- if defined $got->{Env} and ! isa($got->{Env},'BerkeleyDB::Env');
-
- croak("Txn not of type BerkeleyDB::Txn")
- if defined $got->{Txn} and ! isa($got->{Txn},'BerkeleyDB::Txn');
-
- croak("-Tie needs a reference to a hash")
- if defined $got->{Tie} and $got->{Tie} !~ /HASH/ ;
-
- my ($addr, $type) = _db_open_unknown($got);
- my $obj ;
- if ($addr) {
- $obj = bless [$addr], "BerkeleyDB::$type" ;
- push @{ $obj }, $got->{Env} if $got->{Env} ;
- $obj->Txn($got->{Txn}) if $got->{Txn} ;
- }
- return $obj ;
-}
-
-
-package BerkeleyDB::_tiedHash ;
-
-use Carp ;
-
-#sub TIEHASH
-#{
-# my $self = shift ;
-# my $db_object = shift ;
-#
-#print "Tiehash REF=[$self] [" . (ref $self) . "]\n" ;
-#
-# return bless { Obj => $db_object}, $self ;
-#}
-
-sub Tie
-{
- # Usage:
- #
- # $db->Tie \%hash ;
- #
-
- my $self = shift ;
-
- #print "Tie method REF=[$self] [" . (ref $self) . "]\n" ;
-
- croak("usage \$x->Tie \\%hash\n") unless @_ ;
- my $ref = shift ;
-
- croak("Tie needs a reference to a hash")
- if defined $ref and $ref !~ /HASH/ ;
-
- #tie %{ $ref }, ref($self), $self ;
- tie %{ $ref }, "BerkeleyDB::_tiedHash", $self ;
- return undef ;
-}
-
-
-sub TIEHASH
-{
- my $self = shift ;
- my $db_object = shift ;
- #return bless $db_object, 'BerkeleyDB::Common' ;
- return $db_object ;
-}
-
-sub STORE
-{
- my $self = shift ;
- my $key = shift ;
- my $value = shift ;
-
- $self->db_put($key, $value) ;
-}
-
-sub FETCH
-{
- my $self = shift ;
- my $key = shift ;
- my $value = undef ;
- $self->db_get($key, $value) ;
-
- return $value ;
-}
-
-sub EXISTS
-{
- my $self = shift ;
- my $key = shift ;
- my $value = undef ;
- $self->db_get($key, $value) == 0 ;
-}
-
-sub DELETE
-{
- my $self = shift ;
- my $key = shift ;
- $self->db_del($key) ;
-}
-
-sub CLEAR
-{
- my $self = shift ;
- my ($key, $value) = (0, 0) ;
- my $cursor = $self->db_cursor() ;
- while ($cursor->c_get($key, $value, BerkeleyDB::DB_PREV()) == 0)
- { $cursor->c_del() }
- #1 while $cursor->c_del() == 0 ;
- # cursor will self-destruct
-}
-
-#sub DESTROY
-#{
-# my $self = shift ;
-# print "BerkeleyDB::_tieHash::DESTROY\n" ;
-# $self->{Cursor}->c_close() if $self->{Cursor} ;
-#}
-
-package BerkeleyDB::_tiedArray ;
-
-use Carp ;
-
-sub Tie
-{
- # Usage:
- #
- # $db->Tie \@array ;
- #
-
- my $self = shift ;
-
- #print "Tie method REF=[$self] [" . (ref $self) . "]\n" ;
-
- croak("usage \$x->Tie \\%hash\n") unless @_ ;
- my $ref = shift ;
-
- croak("Tie needs a reference to an array")
- if defined $ref and $ref !~ /ARRAY/ ;
-
- #tie %{ $ref }, ref($self), $self ;
- tie @{ $ref }, "BerkeleyDB::_tiedArray", $self ;
- return undef ;
-}
-
-
-#sub TIEARRAY
-#{
-# my $self = shift ;
-# my $db_object = shift ;
-#
-#print "Tiearray REF=[$self] [" . (ref $self) . "]\n" ;
-#
-# return bless { Obj => $db_object}, $self ;
-#}
-
-sub TIEARRAY
-{
- my $self = shift ;
- my $db_object = shift ;
- #return bless $db_object, 'BerkeleyDB::Common' ;
- return $db_object ;
-}
-
-sub STORE
-{
- my $self = shift ;
- my $key = shift ;
- my $value = shift ;
-
- $self->db_put($key, $value) ;
-}
-
-sub FETCH
-{
- my $self = shift ;
- my $key = shift ;
- my $value = undef ;
- $self->db_get($key, $value) ;
-
- return $value ;
-}
-
-*CLEAR = \&BerkeleyDB::_tiedHash::CLEAR ;
-*FIRSTKEY = \&BerkeleyDB::_tiedHash::FIRSTKEY ;
-*NEXTKEY = \&BerkeleyDB::_tiedHash::NEXTKEY ;
-
-sub EXTEND {} # don't do anything with EXTEND
-
-
-sub SHIFT
-{
- my $self = shift;
- my ($key, $value) = (0, 0) ;
- my $cursor = $self->db_cursor() ;
- return undef if $cursor->c_get($key, $value, BerkeleyDB::DB_FIRST()) != 0 ;
- return undef if $cursor->c_del() != 0 ;
-
- return $value ;
-}
-
-
-sub UNSHIFT
-{
- my $self = shift;
- croak "unshift is unsupported with Queue databases"
- if $self->type == BerkeleyDB::DB_QUEUE() ;
- if (@_)
- {
- my ($key, $value) = (0, 0) ;
- my $cursor = $self->db_cursor() ;
- if ($cursor->c_get($key, $value, BerkeleyDB::DB_FIRST()) == 0)
- {
- foreach $value (reverse @_)
- {
- $key = 0 ;
- $cursor->c_put($key, $value, BerkeleyDB::DB_BEFORE()) ;
- }
- }
- }
-}
-
-sub PUSH
-{
- my $self = shift;
- if (@_)
- {
- my ($key, $value) = (0, 0) ;
- my $cursor = $self->db_cursor() ;
- if ($cursor->c_get($key, $value, BerkeleyDB::DB_LAST()) == 0)
- {
- foreach $value (@_)
- {
- ++ $key ;
- $self->db_put($key, $value) ;
- }
- }
-
-# can use this when DB_APPEND is fixed.
-# foreach $value (@_)
-# {
-# my $status = $cursor->c_put($key, $value, BerkeleyDB::DB_AFTER()) ;
-#print "[$status]\n" ;
-# }
- }
-}
-
-sub POP
-{
- my $self = shift;
- my ($key, $value) = (0, 0) ;
- my $cursor = $self->db_cursor() ;
- return undef if $cursor->c_get($key, $value, BerkeleyDB::DB_LAST()) != 0 ;
- return undef if $cursor->c_del() != 0 ;
-
- return $value ;
-}
-
-sub SPLICE
-{
- my $self = shift;
- croak "SPLICE is not implemented yet" ;
-}
-
-*shift = \&SHIFT ;
-*unshift = \&UNSHIFT ;
-*push = \&PUSH ;
-*pop = \&POP ;
-*clear = \&CLEAR ;
-*length = \&FETCHSIZE ;
-
-sub STORESIZE
-{
- croak "STORESIZE is not implemented yet" ;
-#print "STORESIZE @_\n" ;
-# my $self = shift;
-# my $length = shift ;
-# my $current_length = $self->FETCHSIZE() ;
-#print "length is $current_length\n";
-#
-# if ($length < $current_length) {
-#print "Make smaller $length < $current_length\n" ;
-# my $key ;
-# for ($key = $current_length - 1 ; $key >= $length ; -- $key)
-# { $self->db_del($key) }
-# }
-# elsif ($length > $current_length) {
-#print "Make larger $length > $current_length\n" ;
-# $self->db_put($length-1, "") ;
-# }
-# else { print "stay the same\n" }
-
-}
-
-
-
-#sub DESTROY
-#{
-# my $self = shift ;
-# print "BerkeleyDB::_tieArray::DESTROY\n" ;
-#}
-
-
-package BerkeleyDB::Common ;
-
-
-use Carp ;
-
-sub DESTROY
-{
- my $self = shift ;
- $self->_DESTROY() ;
-}
-
-sub Txn
-{
- my $self = shift ;
- my $txn = shift ;
- #print "BerkeleyDB::Common::Txn db [$self] txn [$txn]\n" ;
- if ($txn) {
- $self->_Txn($txn) ;
- push @{ $txn }, $self ;
- }
- else {
- $self->_Txn() ;
- }
- #print "end BerkeleyDB::Common::Txn \n";
-}
-
-
-sub get_dup
-{
- croak "Usage: \$db->get_dup(key [,flag])\n"
- unless @_ == 2 or @_ == 3 ;
-
- my $db = shift ;
- my $key = shift ;
- my $flag = shift ;
- my $value = 0 ;
- my $origkey = $key ;
- my $wantarray = wantarray ;
- my %values = () ;
- my @values = () ;
- my $counter = 0 ;
- my $status = 0 ;
- my $cursor = $db->db_cursor() ;
-
- # iterate through the database until either EOF ($status == 0)
- # or a different key is encountered ($key ne $origkey).
- for ($status = $cursor->c_get($key, $value, BerkeleyDB::DB_SET()) ;
- $status == 0 and $key eq $origkey ;
- $status = $cursor->c_get($key, $value, BerkeleyDB::DB_NEXT()) ) {
- # save the value or count number of matches
- if ($wantarray) {
- if ($flag)
- { ++ $values{$value} }
- else
- { push (@values, $value) }
- }
- else
- { ++ $counter }
-
- }
-
- return ($wantarray ? ($flag ? %values : @values) : $counter) ;
-}
-
-sub db_cursor
-{
- my $db = shift ;
- my ($addr) = $db->_db_cursor(@_) ;
- my $obj ;
- $obj = bless [$addr, $db] , "BerkeleyDB::Cursor" if $addr ;
- return $obj ;
-}
-
-sub db_join
-{
- croak 'Usage: $db->BerkeleyDB::Common::db_join([cursors], flags=0)'
- if @_ < 2 || @_ > 3 ;
- my $db = shift ;
- my ($addr) = $db->_db_join(@_) ;
- my $obj ;
- $obj = bless [$addr, $db] , "BerkeleyDB::Cursor" if $addr ;
- return $obj ;
-}
-
-package BerkeleyDB::Cursor ;
-
-sub c_close
-{
- my $cursor = shift ;
- $cursor->[1] = "" ;
- return $cursor->_c_close() ;
-}
-
-sub c_dup
-{
- my $cursor = shift ;
- my ($addr) = $cursor->_c_dup(@_) ;
- my $obj ;
- $obj = bless [$addr, $cursor->[1]] , "BerkeleyDB::Cursor" if $addr ;
- return $obj ;
-}
-
-sub DESTROY
-{
- my $self = shift ;
- $self->_DESTROY() ;
-}
-
-package BerkeleyDB::TxnMgr ;
-
-sub DESTROY
-{
- my $self = shift ;
- $self->_DESTROY() ;
-}
-
-sub txn_begin
-{
- my $txnmgr = shift ;
- my ($addr) = $txnmgr->_txn_begin(@_) ;
- my $obj ;
- $obj = bless [$addr, $txnmgr] , "BerkeleyDB::Txn" if $addr ;
- return $obj ;
-}
-
-package BerkeleyDB::Txn ;
-
-sub Txn
-{
- my $self = shift ;
- my $db ;
- # keep a reference to each db in the txn object
- foreach $db (@_) {
- $db->_Txn($self) ;
- push @{ $self}, $db ;
- }
-}
-
-sub txn_commit
-{
- my $self = shift ;
- $self->disassociate() ;
- my $status = $self->_txn_commit() ;
- return $status ;
-}
-
-sub txn_abort
-{
- my $self = shift ;
- $self->disassociate() ;
- my $status = $self->_txn_abort() ;
- return $status ;
-}
-
-sub disassociate
-{
- my $self = shift ;
- my $db ;
- while ( @{ $self } > 2) {
- $db = pop @{ $self } ;
- $db->Txn() ;
- }
- #print "end disassociate\n" ;
-}
-
-
-sub DESTROY
-{
- my $self = shift ;
-
- $self->disassociate() ;
- # first close the close the transaction
- $self->_DESTROY() ;
-}
-
-package BerkeleyDB::Term ;
-
-END
-{
- close_everything() ;
-}
-
-
-package BerkeleyDB ;
-
-
-
-# Autoload methods go after =cut, and are processed by the autosplit program.
-
-1;
-__END__
-
-
diff --git a/db/perl.BerkeleyDB/BerkeleyDB.pod b/db/perl.BerkeleyDB/BerkeleyDB.pod
deleted file mode 100644
index 2c5c3feb5..000000000
--- a/db/perl.BerkeleyDB/BerkeleyDB.pod
+++ /dev/null
@@ -1,1751 +0,0 @@
-=head1 NAME
-
-BerkeleyDB - Perl extension for Berkeley DB version 2 or 3
-
-=head1 SYNOPSIS
-
- use BerkeleyDB;
-
- $env = new BerkeleyDB::Env [OPTIONS] ;
-
- $db = tie %hash, 'BerkeleyDB::Hash', [OPTIONS] ;
- $db = new BerkeleyDB::Hash [OPTIONS] ;
-
- $db = tie %hash, 'BerkeleyDB::Btree', [OPTIONS] ;
- $db = new BerkeleyDB::Btree [OPTIONS] ;
-
- $db = tie %hash, 'BerkeleyDB::Recno', [OPTIONS] ;
- $db = new BerkeleyDB::Recno [OPTIONS] ;
-
- $db = tie %hash, 'BerkeleyDB::Queue', [OPTIONS] ;
- $db = new BerkeleyDB::Queue [OPTIONS] ;
-
- $db = new BerkeleyDB::Unknown [OPTIONS] ;
-
- $status = BerkeleyDB::db_remove [OPTIONS]
-
- $hash{$key} = $value ;
- $value = $hash{$key} ;
- each %hash ;
- keys %hash ;
- values %hash ;
-
- $status = $db->db_get()
- $status = $db->db_put() ;
- $status = $db->db_del() ;
- $status = $db->db_sync() ;
- $status = $db->db_close() ;
- $hash_ref = $db->db_stat() ;
- $status = $db->db_key_range();
- $type = $db->type() ;
- $status = $db->status() ;
- $boolean = $db->byteswapped() ;
-
- ($flag, $old_offset, $old_length) = $db->partial_set($offset, $length) ;
- ($flag, $old_offset, $old_length) = $db->partial_clear() ;
-
- $cursor = $db->db_cursor([$flags]) ;
- $newcursor = $cursor->c_dup([$flags]);
- $status = $cursor->c_get() ;
- $status = $cursor->c_put() ;
- $status = $cursor->c_del() ;
- $status = $cursor->c_count() ;
- $status = $cursor->status() ;
- $status = $cursor->c_close() ;
-
- $cursor = $db->db_join() ;
- $status = $cursor->c_get() ;
- $status = $cursor->c_close() ;
-
- $status = $env->txn_checkpoint()
- $hash_ref = $env->txn_stat()
- $status = $env->setmutexlocks()
-
- $txn = $env->txn_begin() ;
- $status = $txn->txn_prepare()
- $status = $txn->txn_commit()
- $status = $txn->txn_abort()
- $status = $txn->txn_id()
-
- $BerkeleyDB::Error
- $BerkeleyDB::db_version
-
- # DBM Filters
- $old_filter = $db->filter_store_key ( sub { ... } ) ;
- $old_filter = $db->filter_store_value( sub { ... } ) ;
- $old_filter = $db->filter_fetch_key ( sub { ... } ) ;
- $old_filter = $db->filter_fetch_value( sub { ... } ) ;
-
- # deprecated, but supported
- $txn_mgr = $env->TxnMgr();
- $status = $txn_mgr->txn_checkpoint()
- $hash_ref = $txn_mgr->txn_stat()
- $txn = $txn_mgr->txn_begin() ;
-
-=head1 DESCRIPTION
-
-B<NOTE: This document is still under construction. Expect it to be
-incomplete in places.>
-
-This Perl module provides an interface to most of the functionality
-available in Berkeley DB versions 2 and 3. In general it is safe to assume
-that the interface provided here to be identical to the Berkeley DB
-interface. The main changes have been to make the Berkeley DB API work
-in a Perl way. Note that if you are using Berkeley DB 2.x, the new
-features available in Berkeley DB 3.x are not available via this module.
-
-The reader is expected to be familiar with the Berkeley DB
-documentation. Where the interface provided here is identical to the
-Berkeley DB library and the... TODO
-
-The B<db_appinit>, B<db_cursor>, B<db_open> and B<db_txn> man pages are
-particularly relevant.
-
-The interface to Berkeley DB is implemented with a number of Perl
-classes.
-
-=head1 ENV CLASS
-
-The B<BerkeleyDB::Env> class provides an interface to the Berkeley DB
-function B<db_appinit> in Berkeley DB 2.x or B<db_env_create> and
-B<DBENV-E<gt>open> in Berkeley DB 3.x. Its purpose is to initialise a
-number of sub-systems that can then be used in a consistent way in all
-the databases you make use of the environment.
-
-If you don't intend using transactions, locking or logging, then you
-shouldn't need to make use of B<BerkeleyDB::Env>.
-
-=head2 Synopsis
-
- $env = new BerkeleyDB::Env
- [ -Home => $path, ]
- [ -Server => $name, ]
- [ -CacheSize => $number, ]
- [ -Config => { name => value, name => value }, ]
- [ -ErrFile => filename or filehandle, ]
- [ -ErrPrefix => "string", ]
- [ -Flags => number, ]
- [ -LockDetect => number, ]
- [ -Verbose => boolean, ]
-
-=over 5
-
-All the parameters to the BerkeleyDB::Env constructor are optional.
-
-=item -Home
-
-If present, this parameter should point to an existing directory. Any
-files that I<aren't> specified with an absolute path in the sub-systems
-that are initialised by the BerkeleyDB::Env class will be assumed to
-live in the B<Home> directory.
-
-For example, in the code fragment below the database "fred.db" will be
-opened in the directory "/home/databases" because it was specified as a
-relative path, but "joe.db" will be opened in "/other" because it was
-part of an absolute path.
-
- $env = new BerkeleyDB::Env
- -Home => "/home/databases"
- ...
-
- $db1 = new BerkeleyDB::Hash
- -Filename = "fred.db",
- -Env => $env
- ...
-
- $db2 = new BerkeleyDB::Hash
- -Filename = "/other/joe.db",
- -Env => $env
- ...
-
-=item -Server
-
-If present, this parameter should be the hostname of a server that is running
-the Berkeley DB RPC server. All databases will be accessed via the RPC server.
-
-=item -Cachesize
-
-If present, this parameter sets the size of the environments shared memory
-buffer pool.
-
-=item -Config
-
-This is a variation on the C<-Home> parameter, but it allows finer
-control of where specific types of files will be stored.
-
-The parameter expects a reference to a hash. Valid keys are:
-B<DB_DATA_DIR>, B<DB_LOG_DIR> and B<DB_TMP_DIR>
-
-The code below shows an example of how it can be used.
-
- $env = new BerkeleyDB::Env
- -Config => { DB_DATA_DIR => "/home/databases",
- DB_LOG_DIR => "/home/logs",
- DB_TMP_DIR => "/home/tmp"
- }
- ...
-
-=item -ErrFile
-
-Expects either the name of a file or a reference to a filehandle. Any
-errors generated internally by Berkeley DB will be logged to this file.
-
-=item -ErrPrefix
-
-Allows a prefix to be added to the error messages before they are sent
-to B<-ErrFile>.
-
-=item -Flags
-
-The B<Flags> parameter specifies both which sub-systems to initialise,
-as well as a number of environment-wide options.
-See the Berkeley DB documentation for more details of these options.
-
-Any of the following can be specified by OR'ing them:
-
-B<DB_CREATE>
-
-If any of the files specified do not already exist, create them.
-
-B<DB_INIT_CDB>
-
-Initialise the Concurrent Access Methods
-
-B<DB_INIT_LOCK>
-
-Initialise the Locking sub-system.
-
-B<DB_INIT_LOG>
-
-Initialise the Logging sub-system.
-
-B<DB_INIT_MPOOL>
-
-Initialise the ...
-
-B<DB_INIT_TXN>
-
-Initialise the ...
-
-B<DB_MPOOL_PRIVATE>
-
-Initialise the ...
-
-B<DB_INIT_MPOOL> is also specified.
-
-Initialise the ...
-
-B<DB_NOMMAP>
-
-Initialise the ...
-
-B<DB_RECOVER>
-
-
-
-B<DB_RECOVER_FATAL>
-
-B<DB_THREAD>
-
-B<DB_TXN_NOSYNC>
-
-B<DB_USE_ENVIRON>
-
-B<DB_USE_ENVIRON_ROOT>
-
-=item -LockDetect
-
-Specifies what to do when a lock conflict occurs. The value should be one of
-
-B<DB_LOCK_DEFAULT>
-
-B<DB_LOCK_OLDEST>
-
-B<DB_LOCK_RANDOM>
-
-B<DB_LOCK_YOUNGEST>
-
-=item -Verbose
-
-Add extra debugging information to the messages sent to B<-ErrFile>.
-
-=back
-
-=head2 Methods
-
-The environment class has the following methods:
-
-=over 5
-
-=item $env->errPrefix("string") ;
-
-This method is identical to the B<-ErrPrefix> flag. It allows the
-error prefix string to be changed dynamically.
-
-=item $txn = $env->TxnMgr()
-
-Constructor for creating a B<TxnMgr> object.
-See L<"TRANSACTIONS"> for more details of using transactions.
-
-This method is deprecated. Access the transaction methods using the B<txn_>
-methods below from the environment object directly.
-
-=item $env->txn_begin()
-
-TODO
-
-=item $env->txn_stat()
-
-TODO
-
-=item $env->txn_checkpoint()
-
-TODO
-
-=item $env->status()
-
-Returns the status of the last BerkeleyDB::Env method.
-
-=item $env->setmutexlocks()
-
-Only available in Berkeley Db 3.0 or greater. Calls
-B<db_env_set_mutexlocks> when used with Berkeley DB 3.1.x. When used with
-Berkeley DB 3.0 or 3.2 and better it calls B<DBENV-E<gt>set_mutexlocks>.
-
-=back
-
-=head2 Examples
-
-TODO.
-
-=head1 THE DATABASE CLASSES
-
-B<BerkeleyDB> supports the following database formats:
-
-=over 5
-
-=item B<BerkeleyDB::Hash>
-
-This database type allows arbitrary key/value pairs to be stored in data
-files. This is equivalent to the functionality provided by other
-hashing packages like DBM, NDBM, ODBM, GDBM, and SDBM. Remember though,
-the files created using B<BerkeleyDB::Hash> are not compatible with any
-of the other packages mentioned.
-
-A default hashing algorithm, which will be adequate for most applications,
-is built into BerkeleyDB. If you do need to use your own hashing algorithm
-it is possible to write your own in Perl and have B<BerkeleyDB> use
-it instead.
-
-=item B<BerkeleyDB::Btree>
-
-The Btree format allows arbitrary key/value pairs to be stored in a
-B+tree.
-
-As with the B<BerkeleyDB::Hash> format, it is possible to provide a
-user defined Perl routine to perform the comparison of keys. By default,
-though, the keys are stored in lexical order.
-
-=item B<BerkeleyDB::Recno>
-
-TODO.
-
-
-=item B<BerkeleyDB::Queue>
-
-TODO.
-
-=item B<BerkeleyDB::Unknown>
-
-This isn't a database format at all. It is used when you want to open an
-existing Berkeley DB database without having to know what type is it.
-
-=back
-
-
-Each of the database formats described above is accessed via a
-corresponding B<BerkeleyDB> class. These will be described in turn in
-the next sections.
-
-=head1 BerkeleyDB::Hash
-
-Equivalent to calling B<db_open> with type B<DB_HASH> in Berkeley DB 2.x and
-calling B<db_create> followed by B<DB-E<gt>open> with type B<DB_HASH> in
-Berkeley DB 3.x.
-
-Two forms of constructor are supported:
-
- $db = new BerkeleyDB::Hash
- [ -Filename => "filename", ]
- [ -Subname => "sub-database name", ]
- [ -Flags => flags,]
- [ -Property => flags,]
- [ -Mode => number,]
- [ -Cachesize => number,]
- [ -Lorder => number,]
- [ -Pagesize => number,]
- [ -Env => $env,]
- [ -Txn => $txn,]
- # BerkeleyDB::Hash specific
- [ -Ffactor => number,]
- [ -Nelem => number,]
- [ -Hash => code reference,]
- [ -DupCompare => code reference,]
-
-and this
-
- [$db =] tie %hash, 'BerkeleyDB::Hash',
- [ -Filename => "filename", ]
- [ -Subname => "sub-database name", ]
- [ -Flags => flags,]
- [ -Property => flags,]
- [ -Mode => number,]
- [ -Cachesize => number,]
- [ -Lorder => number,]
- [ -Pagesize => number,]
- [ -Env => $env,]
- [ -Txn => $txn,]
- # BerkeleyDB::Hash specific
- [ -Ffactor => number,]
- [ -Nelem => number,]
- [ -Hash => code reference,]
- [ -DupCompare => code reference,]
-
-
-When the "tie" interface is used, reading from and writing to the database
-is achieved via the tied hash. In this case the database operates like
-a Perl associative array that happens to be stored on disk.
-
-In addition to the high-level tied hash interface, it is possible to
-make use of the underlying methods provided by Berkeley DB
-
-=head2 Options
-
-In addition to the standard set of options (see L<COMMON OPTIONS>)
-B<BerkeleyDB::Hash> supports these options:
-
-=over 5
-
-=item -Property
-
-Used to specify extra flags when opening a database. The following
-flags may be specified by logically OR'ing together one or more of the
-following values:
-
-B<DB_DUP>
-
-When creating a new database, this flag enables the storing of duplicate
-keys in the database. If B<DB_DUPSORT> is not specified as well, the
-duplicates are stored in the order they are created in the database.
-
-B<DB_DUPSORT>
-
-Enables the sorting of duplicate keys in the database. Ignored if
-B<DB_DUP> isn't also specified.
-
-=item -Ffactor
-
-=item -Nelem
-
-See the Berkeley DB documentation for details of these options.
-
-=item -Hash
-
-Allows you to provide a user defined hash function. If not specified,
-a default hash function is used. Here is a template for a user-defined
-hash function
-
- sub hash
- {
- my ($data) = shift ;
- ...
- # return the hash value for $data
- return $hash ;
- }
-
- tie %h, "BerkeleyDB::Hash",
- -Filename => $filename,
- -Hash => \&hash,
- ...
-
-See L<""> for an example.
-
-=item -DupCompare
-
-Used in conjunction with the B<DB_DUPOSRT> flag.
-
- sub compare
- {
- my ($key, $key2) = @_ ;
- ...
- # return 0 if $key1 eq $key2
- # -1 if $key1 lt $key2
- # 1 if $key1 gt $key2
- return (-1 , 0 or 1) ;
- }
-
- tie %h, "BerkeleyDB::Hash",
- -Filename => $filename,
- -Property => DB_DUP|DB_DUPSORT,
- -DupCompare => \&compare,
- ...
-
-=back
-
-
-=head2 Methods
-
-B<BerkeleyDB::Hash> only supports the standard database methods.
-See L<COMMON DATABASE METHODS>.
-
-=head2 A Simple Tied Hash Example
-
- use strict ;
- use BerkeleyDB ;
- use vars qw( %h $k $v ) ;
-
- my $filename = "fruit" ;
- unlink $filename ;
- tie %h, "BerkeleyDB::Hash",
- -Filename => $filename,
- -Flags => DB_CREATE
- or die "Cannot open file $filename: $! $BerkeleyDB::Error\n" ;
-
- # Add a few key/value pairs to the file
- $h{"apple"} = "red" ;
- $h{"orange"} = "orange" ;
- $h{"banana"} = "yellow" ;
- $h{"tomato"} = "red" ;
-
- # Check for existence of a key
- print "Banana Exists\n\n" if $h{"banana"} ;
-
- # Delete a key/value pair.
- delete $h{"apple"} ;
-
- # print the contents of the file
- while (($k, $v) = each %h)
- { print "$k -> $v\n" }
-
- untie %h ;
-
-here is the output:
-
- Banana Exists
-
- orange -> orange
- tomato -> red
- banana -> yellow
-
-Note that the like ordinary associative arrays, the order of the keys
-retrieved from a Hash database are in an apparently random order.
-
-=head2 Another Simple Hash Example
-
-Do the same as the previous example but not using tie.
-
- use strict ;
- use BerkeleyDB ;
-
- my $filename = "fruit" ;
- unlink $filename ;
- my $db = new BerkeleyDB::Hash
- -Filename => $filename,
- -Flags => DB_CREATE
- or die "Cannot open file $filename: $! $BerkeleyDB::Error\n" ;
-
- # Add a few key/value pairs to the file
- $db->db_put("apple", "red") ;
- $db->db_put("orange", "orange") ;
- $db->db_put("banana", "yellow") ;
- $db->db_put("tomato", "red") ;
-
- # Check for existence of a key
- print "Banana Exists\n\n" if $db->db_get("banana", $v) == 0;
-
- # Delete a key/value pair.
- $db->db_del("apple") ;
-
- # print the contents of the file
- my ($k, $v) = ("", "") ;
- my $cursor = $db->db_cursor() ;
- while ($cursor->c_get($k, $v, DB_NEXT) == 0)
- { print "$k -> $v\n" }
-
- undef $cursor ;
- undef $db ;
-
-=head2 Duplicate keys
-
-The code below is a variation on the examples above. This time the hash has
-been inverted. The key this time is colour and the value is the fruit name.
-The B<DB_DUP> flag has been specified to allow duplicates.
-
- use strict ;
- use BerkeleyDB ;
-
- my $filename = "fruit" ;
- unlink $filename ;
- my $db = new BerkeleyDB::Hash
- -Filename => $filename,
- -Flags => DB_CREATE,
- -Property => DB_DUP
- or die "Cannot open file $filename: $! $BerkeleyDB::Error\n" ;
-
- # Add a few key/value pairs to the file
- $db->db_put("red", "apple") ;
- $db->db_put("orange", "orange") ;
- $db->db_put("green", "banana") ;
- $db->db_put("yellow", "banana") ;
- $db->db_put("red", "tomato") ;
- $db->db_put("green", "apple") ;
-
- # print the contents of the file
- my ($k, $v) = ("", "") ;
- my $cursor = $db->db_cursor() ;
- while ($cursor->c_get($k, $v, DB_NEXT) == 0)
- { print "$k -> $v\n" }
-
- undef $cursor ;
- undef $db ;
-
-here is the output:
-
- orange -> orange
- yellow -> banana
- red -> apple
- red -> tomato
- green -> banana
- green -> apple
-
-=head2 Sorting Duplicate Keys
-
-In the previous example, when there were duplicate keys, the values are
-sorted in the order they are stored in. The code below is
-identical to the previous example except the B<DB_DUPSORT> flag is
-specified.
-
- use strict ;
- use BerkeleyDB ;
-
- my $filename = "fruit" ;
- unlink $filename ;
- my $db = new BerkeleyDB::Hash
- -Filename => $filename,
- -Flags => DB_CREATE,
- -Property => DB_DUP | DB_DUPSORT
- or die "Cannot open file $filename: $! $BerkeleyDB::Error\n" ;
-
- # Add a few key/value pairs to the file
- $db->db_put("red", "apple") ;
- $db->db_put("orange", "orange") ;
- $db->db_put("green", "banana") ;
- $db->db_put("yellow", "banana") ;
- $db->db_put("red", "tomato") ;
- $db->db_put("green", "apple") ;
-
- # print the contents of the file
- my ($k, $v) = ("", "") ;
- my $cursor = $db->db_cursor() ;
- while ($cursor->c_get($k, $v, DB_NEXT) == 0)
- { print "$k -> $v\n" }
-
- undef $cursor ;
- undef $db ;
-
-Notice that in the output below the duplicate values are sorted.
-
- orange -> orange
- yellow -> banana
- red -> apple
- red -> tomato
- green -> apple
- green -> banana
-
-=head2 Custom Sorting Duplicate Keys
-
-Another variation
-
-TODO
-
-=head2 Changing the hash
-
-TODO
-
-=head2 Using db_stat
-
-TODO
-
-=head1 BerkeleyDB::Btree
-
-Equivalent to calling B<db_open> with type B<DB_BTREE> in Berkeley DB 2.x and
-calling B<db_create> followed by B<DB-E<gt>open> with type B<DB_BTREE> in
-Berkeley DB 3.x.
-
-Two forms of constructor are supported:
-
-
- $db = new BerkeleyDB::Btree
- [ -Filename => "filename", ]
- [ -Subname => "sub-database name", ]
- [ -Flags => flags,]
- [ -Property => flags,]
- [ -Mode => number,]
- [ -Cachesize => number,]
- [ -Lorder => number,]
- [ -Pagesize => number,]
- [ -Env => $env,]
- [ -Txn => $txn,]
- # BerkeleyDB::Btree specific
- [ -Minkey => number,]
- [ -Compare => code reference,]
- [ -DupCompare => code reference,]
- [ -Prefix => code reference,]
-
-and this
-
- [$db =] tie %hash, 'BerkeleyDB::Btree',
- [ -Filename => "filename", ]
- [ -Subname => "sub-database name", ]
- [ -Flags => flags,]
- [ -Property => flags,]
- [ -Mode => number,]
- [ -Cachesize => number,]
- [ -Lorder => number,]
- [ -Pagesize => number,]
- [ -Env => $env,]
- [ -Txn => $txn,]
- # BerkeleyDB::Btree specific
- [ -Minkey => number,]
- [ -Compare => code reference,]
- [ -DupCompare => code reference,]
- [ -Prefix => code reference,]
-
-=head2 Options
-
-In addition to the standard set of options (see L<COMMON OPTIONS>)
-B<BerkeleyDB::Btree> supports these options:
-
-=over 5
-
-=item -Property
-
-Used to specify extra flags when opening a database. The following
-flags may be specified by logically OR'ing together one or more of the
-following values:
-
-B<DB_DUP>
-
-When creating a new database, this flag enables the storing of duplicate
-keys in the database. If B<DB_DUPSORT> is not specified as well, the
-duplicates are stored in the order they are created in the database.
-
-B<DB_DUPSORT>
-
-Enables the sorting of duplicate keys in the database. Ignored if
-B<DB_DUP> isn't also specified.
-
-=item Minkey
-
-TODO
-
-=item Compare
-
-Allow you to override the default sort order used in the database. See
-L<"Changing the sort order"> for an example.
-
- sub compare
- {
- my ($key, $key2) = @_ ;
- ...
- # return 0 if $key1 eq $key2
- # -1 if $key1 lt $key2
- # 1 if $key1 gt $key2
- return (-1 , 0 or 1) ;
- }
-
- tie %h, "BerkeleyDB::Hash",
- -Filename => $filename,
- -Compare => \&compare,
- ...
-
-=item Prefix
-
- sub prefix
- {
- my ($key, $key2) = @_ ;
- ...
- # return number of bytes of $key2 which are
- # necessary to determine that it is greater than $key1
- return $bytes ;
- }
-
- tie %h, "BerkeleyDB::Hash",
- -Filename => $filename,
- -Prefix => \&prefix,
- ...
-=item DupCompare
-
- sub compare
- {
- my ($key, $key2) = @_ ;
- ...
- # return 0 if $key1 eq $key2
- # -1 if $key1 lt $key2
- # 1 if $key1 gt $key2
- return (-1 , 0 or 1) ;
- }
-
- tie %h, "BerkeleyDB::Hash",
- -Filename => $filename,
- -DupCompare => \&compare,
- ...
-
-=back
-
-=head2 Methods
-
-B<BerkeleyDB::Btree> supports the following database methods.
-See also L<COMMON DATABASE METHODS>.
-
-All the methods below return 0 to indicate success.
-
-=over 5
-
-=item $status = $db->db_key_range($key, $less, $equal, $greater [, $flags])
-
-Given a key, C<$key>, this method returns the proportion of keys less than
-C<$key> in C<$less>, the proportion equal to C<$key> in C<$equal> and the
-proportion greater than C<$key> in C<$greater>.
-
-The proportion is returned as a double in the range 0.0 to 1.0.
-
-=back
-
-=head2 A Simple Btree Example
-
-The code below is a simple example of using a btree database.
-
- use strict ;
- use BerkeleyDB ;
-
- my $filename = "tree" ;
- unlink $filename ;
- my %h ;
- tie %h, 'BerkeleyDB::Btree',
- -Filename => $filename,
- -Flags => DB_CREATE
- or die "Cannot open $filename: $!\n" ;
-
- # Add a key/value pair to the file
- $h{'Wall'} = 'Larry' ;
- $h{'Smith'} = 'John' ;
- $h{'mouse'} = 'mickey' ;
- $h{'duck'} = 'donald' ;
-
- # Delete
- delete $h{"duck"} ;
-
- # Cycle through the keys printing them in order.
- # Note it is not necessary to sort the keys as
- # the btree will have kept them in order automatically.
- foreach (keys %h)
- { print "$_\n" }
-
- untie %h ;
-
-Here is the output from the code above. The keys have been sorted using
-Berkeley DB's default sorting algorithm.
-
- Smith
- Wall
- mouse
-
-
-=head2 Changing the sort order
-
-It is possible to supply your own sorting algorithm if the one that Berkeley
-DB used isn't suitable. The code below is identical to the previous example
-except for the case insensitive compare function.
-
- use strict ;
- use BerkeleyDB ;
-
- my $filename = "tree" ;
- unlink $filename ;
- my %h ;
- tie %h, 'BerkeleyDB::Btree',
- -Filename => $filename,
- -Flags => DB_CREATE,
- -Compare => sub { lc $_[0] cmp lc $_[1] }
- or die "Cannot open $filename: $!\n" ;
-
- # Add a key/value pair to the file
- $h{'Wall'} = 'Larry' ;
- $h{'Smith'} = 'John' ;
- $h{'mouse'} = 'mickey' ;
- $h{'duck'} = 'donald' ;
-
- # Delete
- delete $h{"duck"} ;
-
- # Cycle through the keys printing them in order.
- # Note it is not necessary to sort the keys as
- # the btree will have kept them in order automatically.
- foreach (keys %h)
- { print "$_\n" }
-
- untie %h ;
-
-Here is the output from the code above.
-
- mouse
- Smith
- Wall
-
-There are a few point to bear in mind if you want to change the
-ordering in a BTREE database:
-
-=over 5
-
-=item 1.
-
-The new compare function must be specified when you create the database.
-
-=item 2.
-
-You cannot change the ordering once the database has been created. Thus
-you must use the same compare function every time you access the
-database.
-
-=back
-
-=head2 Using db_stat
-
-TODO
-
-=head1 BerkeleyDB::Recno
-
-Equivalent to calling B<db_open> with type B<DB_RECNO> in Berkeley DB 2.x and
-calling B<db_create> followed by B<DB-E<gt>open> with type B<DB_RECNO> in
-Berkeley DB 3.x.
-
-Two forms of constructor are supported:
-
- $db = new BerkeleyDB::Recno
- [ -Filename => "filename", ]
- [ -Subname => "sub-database name", ]
- [ -Flags => flags,]
- [ -Property => flags,]
- [ -Mode => number,]
- [ -Cachesize => number,]
- [ -Lorder => number,]
- [ -Pagesize => number,]
- [ -Env => $env,]
- [ -Txn => $txn,]
- # BerkeleyDB::Recno specific
- [ -Delim => byte,]
- [ -Len => number,]
- [ -Pad => byte,]
- [ -Source => filename,]
-
-and this
-
- [$db =] tie @arry, 'BerkeleyDB::Recno',
- [ -Filename => "filename", ]
- [ -Subname => "sub-database name", ]
- [ -Flags => flags,]
- [ -Property => flags,]
- [ -Mode => number,]
- [ -Cachesize => number,]
- [ -Lorder => number,]
- [ -Pagesize => number,]
- [ -Env => $env,]
- [ -Txn => $txn,]
- # BerkeleyDB::Recno specific
- [ -Delim => byte,]
- [ -Len => number,]
- [ -Pad => byte,]
- [ -Source => filename,]
-
-=head2 A Recno Example
-
-Here is a simple example that uses RECNO (if you are using a version
-of Perl earlier than 5.004_57 this example won't work -- see
-L<Extra RECNO Methods> for a workaround).
-
- use strict ;
- use BerkeleyDB ;
-
- my $filename = "text" ;
- unlink $filename ;
-
- my @h ;
- tie @h, 'BerkeleyDB::Recno',
- -Filename => $filename,
- -Flags => DB_CREATE,
- -Property => DB_RENUMBER
- or die "Cannot open $filename: $!\n" ;
-
- # Add a few key/value pairs to the file
- $h[0] = "orange" ;
- $h[1] = "blue" ;
- $h[2] = "yellow" ;
-
- push @h, "green", "black" ;
-
- my $elements = scalar @h ;
- print "The array contains $elements entries\n" ;
-
- my $last = pop @h ;
- print "popped $last\n" ;
-
- unshift @h, "white" ;
- my $first = shift @h ;
- print "shifted $first\n" ;
-
- # Check for existence of a key
- print "Element 1 Exists with value $h[1]\n" if $h[1] ;
-
- untie @h ;
-
-Here is the output from the script:
-
- The array contains 5 entries
- popped black
- shifted white
- Element 1 Exists with value blue
- The last element is green
- The 2nd last element is yellow
-
-=head1 BerkeleyDB::Queue
-
-Equivalent to calling B<db_create> followed by B<DB-E<gt>open> with
-type B<DB_QUEUE> in Berkeley DB 3.x. This database format isn't available if
-you use Berkeley DB 2.x.
-
-Two forms of constructor are supported:
-
- $db = new BerkeleyDB::Queue
- [ -Filename => "filename", ]
- [ -Subname => "sub-database name", ]
- [ -Flags => flags,]
- [ -Property => flags,]
- [ -Mode => number,]
- [ -Cachesize => number,]
- [ -Lorder => number,]
- [ -Pagesize => number,]
- [ -Env => $env,]
- [ -Txn => $txn,]
- # BerkeleyDB::Queue specific
- [ -Len => number,]
- [ -Pad => byte,]
- [ -ExtentSize => number, ]
-
-and this
-
- [$db =] tie @arry, 'BerkeleyDB::Queue',
- [ -Filename => "filename", ]
- [ -Subname => "sub-database name", ]
- [ -Flags => flags,]
- [ -Property => flags,]
- [ -Mode => number,]
- [ -Cachesize => number,]
- [ -Lorder => number,]
- [ -Pagesize => number,]
- [ -Env => $env,]
- [ -Txn => $txn,]
- # BerkeleyDB::Queue specific
- [ -Len => number,]
- [ -Pad => byte,]
-
-
-=head1 BerkeleyDB::Unknown
-
-This class is used to open an existing database.
-
-Equivalent to calling B<db_open> with type B<DB_UNKNOWN> in Berkeley DB 2.x and
-calling B<db_create> followed by B<DB-E<gt>open> with type B<DB_UNKNOWN> in
-Berkeley DB 3.x.
-
-The constructor looks like this:
-
- $db = new BerkeleyDB::Unknown
- [ -Filename => "filename", ]
- [ -Subname => "sub-database name", ]
- [ -Flags => flags,]
- [ -Property => flags,]
- [ -Mode => number,]
- [ -Cachesize => number,]
- [ -Lorder => number,]
- [ -Pagesize => number,]
- [ -Env => $env,]
- [ -Txn => $txn,]
-
-
-=head2 An example
-
-=head1 COMMON OPTIONS
-
-All database access class constructors support the common set of
-options defined below. All are optional.
-
-=over 5
-
-=item -Filename
-
-The database filename. If no filename is specified, a temporary file will
-be created and removed once the program terminates.
-
-=item -Subname
-
-Specifies the name of the sub-database to open.
-This option is only valid if you are using Berkeley DB 3.x.
-
-=item -Flags
-
-Specify how the database will be opened/created. The valid flags are:
-
-B<DB_CREATE>
-
-Create any underlying files, as necessary. If the files do not already
-exist and the B<DB_CREATE> flag is not specified, the call will fail.
-
-B<DB_NOMMAP>
-
-Not supported by BerkeleyDB.
-
-B<DB_RDONLY>
-
-Opens the database in read-only mode.
-
-B<DB_THREAD>
-
-Not supported by BerkeleyDB.
-
-B<DB_TRUNCATE>
-
-If the database file already exists, remove all the data before
-opening it.
-
-=item -Mode
-
-Determines the file protection when the database is created. Defaults
-to 0666.
-
-=item -Cachesize
-
-=item -Lorder
-
-=item -Pagesize
-
-=item -Env
-
-When working under a Berkeley DB environment, this parameter
-
-Defaults to no environment.
-
-=item -Txn
-
-TODO.
-
-=back
-
-=head1 COMMON DATABASE METHODS
-
-All the database interfaces support the common set of methods defined
-below.
-
-All the methods below return 0 to indicate success.
-
-=head2 $status = $db->db_get($key, $value [, $flags])
-
-Given a key (C<$key>) this method reads the value associated with it
-from the database. If it exists, the value read from the database is
-returned in the C<$value> parameter.
-
-The B<$flags> parameter is optional. If present, it must be set to B<one>
-of the following values:
-
-=over 5
-
-=item B<DB_GET_BOTH>
-
-When the B<DB_GET_BOTH> flag is specified, B<db_get> checks for the
-existence of B<both> the C<$key> B<and> C<$value> in the database.
-
-=item B<DB_SET_RECNO>
-
-TODO.
-
-=back
-
-In addition, the following value may be set by logically OR'ing it into
-the B<$flags> parameter:
-
-=over 5
-
-=item B<DB_RMW>
-
-TODO
-
-=back
-
-
-=head2 $status = $db->db_put($key, $value [, $flags])
-
-Stores a key/value pair in the database.
-
-The B<$flags> parameter is optional. If present it must be set to B<one>
-of the following values:
-
-=over 5
-
-=item B<DB_APPEND>
-
-This flag is only applicable when accessing a B<BerkeleyDB::Recno>
-database.
-
-TODO.
-
-
-=item B<DB_NOOVERWRITE>
-
-If this flag is specified and C<$key> already exists in the database,
-the call to B<db_put> will return B<DB_KEYEXIST>.
-
-=back
-
-=head2 $status = $db->db_del($key [, $flags])
-
-Deletes a key/value pair in the database associated with C<$key>.
-If duplicate keys are enabled in the database, B<db_del> will delete
-B<all> key/value pairs with key C<$key>.
-
-The B<$flags> parameter is optional and is currently unused.
-
-=head2 $status = $db->db_sync()
-
-If any parts of the database are in memory, write them to the database.
-
-=head2 $cursor = $db->db_cursor([$flags])
-
-Creates a cursor object. This is used to access the contents of the
-database sequentially. See L<CURSORS> for details of the methods
-available when working with cursors.
-
-The B<$flags> parameter is optional. If present it must be set to B<one>
-of the following values:
-
-=over 5
-
-=item B<DB_RMW>
-
-TODO.
-
-=back
-
-=head2 ($flag, $old_offset, $old_length) = $db->partial_set($offset, $length) ;
-
-TODO
-
-=head2 ($flag, $old_offset, $old_length) = $db->partial_clear() ;
-
-TODO
-
-=head2 $db->byteswapped()
-
-TODO
-
-=head2 $db->type()
-
-Returns the type of the database. The possible return code are B<DB_HASH>
-for a B<BerkeleyDB::Hash> database, B<DB_BTREE> for a B<BerkeleyDB::Btree>
-database and B<DB_RECNO> for a B<BerkeleyDB::Recno> database. This method
-is typically used when a database has been opened with
-B<BerkeleyDB::Unknown>.
-
-=item $ref = $db->db_stat()
-
-Returns a reference to an associative array containing information about
-the database. The keys of the associative array correspond directly to the
-names of the fields defined in the Berkeley DB documentation. For example,
-in the DB documentation, the field B<bt_version> stores the version of the
-Btree database. Assuming you called B<db_stat> on a Btree database the
-equivalent field would be accessed as follows:
-
- $version = $ref->{'bt_version'} ;
-
-If you are using Berkeley DB 3.x, this method will work will all database
-formats. When DB 2.x is used, it only works with B<BerkeleyDB::Btree>.
-
-=head2 $status = $db->status()
-
-Returns the status of the last C<$db> method called.
-
-=head1 CURSORS
-
-A cursor is used whenever you want to access the contents of a database
-in sequential order.
-A cursor object is created with the C<db_cursor>
-
-A cursor object has the following methods available:
-
-=head2 $newcursor = $cursor->c_dup($flags)
-
-Creates a duplicate of C<$cursor>. This method needs Berkeley DB 3.0.x or better.
-
-The C<$flags> parameter is optional and can take the following value:
-
-=over 5
-
-=item DB_POSITION
-
-When present this flag will position the new cursor at the same place as the
-existing cursor.
-
-=back
-
-=head2 $status = $cursor->c_get($key, $value, $flags)
-
-Reads a key/value pair from the database, returning the data in C<$key>
-and C<$value>. The key/value pair actually read is controlled by the
-C<$flags> parameter, which can take B<one> of the following values:
-
-=over 5
-
-=item B<DB_FIRST>
-
-Set the cursor to point to the first key/value pair in the
-database. Return the key/value pair in C<$key> and C<$value>.
-
-=item B<DB_LAST>
-
-Set the cursor to point to the last key/value pair in the database. Return
-the key/value pair in C<$key> and C<$value>.
-
-=item B<DB_NEXT>
-
-If the cursor is already pointing to a key/value pair, it will be
-incremented to point to the next key/value pair and return its contents.
-
-If the cursor isn't initialised, B<DB_NEXT> works just like B<DB_FIRST>.
-
-If the cursor is already positioned at the last key/value pair, B<c_get>
-will return B<DB_NOTFOUND>.
-
-=item B<DB_NEXT_DUP>
-
-This flag is only valid when duplicate keys have been enabled in
-a database.
-If the cursor is already pointing to a key/value pair and the key of
-the next key/value pair is identical, the cursor will be incremented to
-point to it and their contents returned.
-
-=item B<DB_PREV>
-
-If the cursor is already pointing to a key/value pair, it will be
-decremented to point to the previous key/value pair and return its
-contents.
-
-If the cursor isn't initialised, B<DB_PREV> works just like B<DB_LAST>.
-
-If the cursor is already positioned at the first key/value pair, B<c_get>
-will return B<DB_NOTFOUND>.
-
-=item B<DB_CURRENT>
-
-If the cursor has been set to point to a key/value pair, return their
-contents.
-If the key/value pair referenced by the cursor has been deleted, B<c_get>
-will return B<DB_KEYEMPTY>.
-
-=item B<DB_SET>
-
-Set the cursor to point to the key/value pair referenced by B<$key>
-and return the value in B<$value>.
-
-=item B<DB_SET_RANGE>
-
-This flag is a variation on the B<DB_SET> flag. As well as returning
-the value, it also returns the key, via B<$key>.
-When used with a B<BerkeleyDB::Btree> database the key matched by B<c_get>
-will be the shortest key (in length) which is greater than or equal to
-the key supplied, via B<$key>. This allows partial key searches.
-See ??? for an example of how to use this flag.
-
-=item B<DB_GET_BOTH>
-
-Another variation on B<DB_SET>. This one returns both the key and
-the value.
-
-=item B<DB_SET_RECNO>
-
-TODO.
-
-=item B<DB_GET_RECNO>
-
-TODO.
-
-=back
-
-In addition, the following value may be set by logically OR'ing it into
-the B<$flags> parameter:
-
-=over 5
-
-=item B<DB_RMW>
-
-TODO.
-
-=back
-
-=head2 $status = $cursor->c_put($key, $value, $flags)
-
-Stores the key/value pair in the database. The position that the data is
-stored in the database is controlled by the C<$flags> parameter, which
-must take B<one> of the following values:
-
-=over 5
-
-=item B<DB_AFTER>
-
-When used with a Btree or Hash database, a duplicate of the key referenced
-by the current cursor position will be created and the contents of
-B<$value> will be associated with it - B<$key> is ignored.
-The new key/value pair will be stored immediately after the current
-cursor position.
-Obviously the database has to have been opened with B<DB_DUP>.
-
-When used with a Recno ... TODO
-
-
-=item B<DB_BEFORE>
-
-When used with a Btree or Hash database, a duplicate of the key referenced
-by the current cursor position will be created and the contents of
-B<$value> will be associated with it - B<$key> is ignored.
-The new key/value pair will be stored immediately before the current
-cursor position.
-Obviously the database has to have been opened with B<DB_DUP>.
-
-When used with a Recno ... TODO
-
-=item B<DB_CURRENT>
-
-If the cursor has been initialised, replace the value of the key/value
-pair stored in the database with the contents of B<$value>.
-
-=item B<DB_KEYFIRST>
-
-Only valid with a Btree or Hash database. This flag is only really
-used when duplicates are enabled in the database and sorted duplicates
-haven't been specified.
-In this case the key/value pair will be inserted as the first entry in
-the duplicates for the particular key.
-
-=item B<DB_KEYLAST>
-
-Only valid with a Btree or Hash database. This flag is only really
-used when duplicates are enabled in the database and sorted duplicates
-haven't been specified.
-In this case the key/value pair will be inserted as the last entry in
-the duplicates for the particular key.
-
-=back
-
-=head2 $status = $cursor->c_del([$flags])
-
-This method deletes the key/value pair associated with the current cursor
-position. The cursor position will not be changed by this operation, so
-any subsequent cursor operation must first initialise the cursor to
-point to a valid key/value pair.
-
-If the key/value pair associated with the cursor have already been
-deleted, B<c_del> will return B<DB_KEYEMPTY>.
-
-The B<$flags> parameter is not used at present.
-
-=head2 $status = $cursor->c_del($cnt [, $flags])
-
-Stores the number of duplicates at the current cursor position in B<$cnt>.
-
-The B<$flags> parameter is not used at present. This method needs
-Berkeley DB 3.1 or better.
-
-=head2 $status = $cursor->status()
-
-Returns the status of the last cursor method as a dual type.
-
-=head2 Cursor Examples
-
-TODO
-
-Iterating from first to last, then in reverse.
-
-examples of each of the flags.
-
-=head1 JOIN
-
-Join support for BerkeleyDB is in progress. Watch this space.
-
-TODO
-
-=head1 TRANSACTIONS
-
-TODO.
-
-=head1 DBM Filters
-
-A DBM Filter is a piece of code that is be used when you I<always>
-want to make the same transformation to all keys and/or values in a DBM
-database. All of the database classes (BerkeleyDB::Hash,
-BerkeleyDB::Btree and BerkeleyDB::Recno) support DBM Filters.
-
-There are four methods associated with DBM Filters. All work
-identically, and each is used to install (or uninstall) a single DBM
-Filter. Each expects a single parameter, namely a reference to a sub.
-The only difference between them is the place that the filter is
-installed.
-
-To summarise:
-
-=over 5
-
-=item B<filter_store_key>
-
-If a filter has been installed with this method, it will be invoked
-every time you write a key to a DBM database.
-
-=item B<filter_store_value>
-
-If a filter has been installed with this method, it will be invoked
-every time you write a value to a DBM database.
-
-
-=item B<filter_fetch_key>
-
-If a filter has been installed with this method, it will be invoked
-every time you read a key from a DBM database.
-
-=item B<filter_fetch_value>
-
-If a filter has been installed with this method, it will be invoked
-every time you read a value from a DBM database.
-
-=back
-
-You can use any combination of the methods, from none, to all four.
-
-All filter methods return the existing filter, if present, or C<undef>
-in not.
-
-To delete a filter pass C<undef> to it.
-
-=head2 The Filter
-
-When each filter is called by Perl, a local copy of C<$_> will contain
-the key or value to be filtered. Filtering is achieved by modifying
-the contents of C<$_>. The return code from the filter is ignored.
-
-=head2 An Example -- the NULL termination problem.
-
-Consider the following scenario. You have a DBM database that you need
-to share with a third-party C application. The C application assumes
-that I<all> keys and values are NULL terminated. Unfortunately when
-Perl writes to DBM databases it doesn't use NULL termination, so your
-Perl application will have to manage NULL termination itself. When you
-write to the database you will have to use something like this:
-
- $hash{"$key\0"} = "$value\0" ;
-
-Similarly the NULL needs to be taken into account when you are considering
-the length of existing keys/values.
-
-It would be much better if you could ignore the NULL terminations issue
-in the main application code and have a mechanism that automatically
-added the terminating NULL to all keys and values whenever you write to
-the database and have them removed when you read from the database. As I'm
-sure you have already guessed, this is a problem that DBM Filters can
-fix very easily.
-
- use strict ;
- use BerkeleyDB ;
-
- my %hash ;
- my $filename = "filt.db" ;
- unlink $filename ;
-
- my $db = tie %hash, 'BerkeleyDB::Hash',
- -Filename => $filename,
- -Flags => DB_CREATE
- or die "Cannot open $filename: $!\n" ;
-
- # Install DBM Filters
- $db->filter_fetch_key ( sub { s/\0$// } ) ;
- $db->filter_store_key ( sub { $_ .= "\0" } ) ;
- $db->filter_fetch_value( sub { s/\0$// } ) ;
- $db->filter_store_value( sub { $_ .= "\0" } ) ;
-
- $hash{"abc"} = "def" ;
- my $a = $hash{"ABC"} ;
- # ...
- undef $db ;
- untie %hash ;
-
-Hopefully the contents of each of the filters should be
-self-explanatory. Both "fetch" filters remove the terminating NULL,
-and both "store" filters add a terminating NULL.
-
-
-=head2 Another Example -- Key is a C int.
-
-Here is another real-life example. By default, whenever Perl writes to
-a DBM database it always writes the key and value as strings. So when
-you use this:
-
- $hash{12345} = "something" ;
-
-the key 12345 will get stored in the DBM database as the 5 byte string
-"12345". If you actually want the key to be stored in the DBM database
-as a C int, you will have to use C<pack> when writing, and C<unpack>
-when reading.
-
-Here is a DBM Filter that does it:
-
- use strict ;
- use BerkeleyDB ;
- my %hash ;
- my $filename = "filt.db" ;
- unlink $filename ;
-
-
- my $db = tie %hash, 'BerkeleyDB::Btree',
- -Filename => $filename,
- -Flags => DB_CREATE
- or die "Cannot open $filename: $!\n" ;
-
- $db->filter_fetch_key ( sub { $_ = unpack("i", $_) } ) ;
- $db->filter_store_key ( sub { $_ = pack ("i", $_) } ) ;
- $hash{123} = "def" ;
- # ...
- undef $db ;
- untie %hash ;
-
-This time only two filters have been used -- we only need to manipulate
-the contents of the key, so it wasn't necessary to install any value
-filters.
-
-=head1 Using BerkeleyDB with MLDBM
-
-Both BerkeleyDB::Hash and BerkeleyDB::Btree can be used with the MLDBM
-module. The code fragment below shows how to open associate MLDBM with
-BerkeleyDB::Btree. To use BerkeleyDB::Hash just replace
-BerkeleyDB::Btree with BerkeleyDB::Hash.
-
- use strict ;
- use BerkeleyDB ;
- use MLDBM qw(BerkeleyDB::Btree) ;
- use Data::Dumper;
-
- my $filename = 'testmldbm' ;
- my %o ;
-
- unlink $filename ;
- tie %o, 'MLDBM', -Filename => $filename,
- -Flags => DB_CREATE
- or die "Cannot open database '$filename: $!\n";
-
-See the MLDBM documentation for information on how to use the module
-and for details of its limitations.
-
-=head1 EXAMPLES
-
-TODO.
-
-=head1 HINTS & TIPS
-
-=head2 Sharing Databases With C Applications
-
-There is no technical reason why a Berkeley DB database cannot be
-shared by both a Perl and a C application.
-
-The vast majority of problems that are reported in this area boil down
-to the fact that C strings are NULL terminated, whilst Perl strings
-are not. See L<An Example -- the NULL termination problem.> in the DBM
-FILTERS section for a generic way to work around this problem.
-
-
-=head2 The untie Gotcha
-
-TODO
-
-=head1 COMMON QUESTIONS
-
-This section attempts to answer some of the more common questions that
-I get asked.
-
-
-=head2 Relationship with DB_File
-
-Before Berkeley DB 2.x was written there was only one Perl module that
-interfaced to Berkeley DB. That module is called B<DB_File>. Although
-B<DB_File> can be build with Berkeley DB 1.x, 2.x or 3.x, it only provides
-an interface to the functionality available in Berkeley DB 1.x. That
-means that it doesn't support transactions, locking or any of the other
-new features available in DB 2.x or 3.x.
-
-=head2 How do I store Perl data structures with BerkeleyDB?
-
-See L<Using BerkeleyDB with MLDBM>.
-
-=head1 HISTORY
-
-See the Changes file.
-
-=head1 AVAILABILITY
-
-The most recent version of B<BerkeleyDB> can always be found
-on CPAN (see L<perlmod/CPAN> for details), in the directory
-F<modules/by-module/BerkeleyDB>.
-
-The official web site for Berkeley DB is F<http://www.sleepycat.com>.
-
-=head1 COPYRIGHT
-
-Copyright (c) 1997-2001 Paul Marquess. All rights reserved. This program
-is free software; you can redistribute it and/or modify it under the
-same terms as Perl itself.
-
-Although B<BerkeleyDB> is covered by the Perl license, the library it
-makes use of, namely Berkeley DB, is not. Berkeley DB has its own
-copyright and its own license. Please take the time to read it.
-
-Here are few words taken from the Berkeley DB FAQ (at
-F<http://www.sleepycat.com>) regarding the license:
-
- Do I have to license DB to use it in Perl scripts?
-
- No. The Berkeley DB license requires that software that uses
- Berkeley DB be freely redistributable. In the case of Perl, that
- software is Perl, and not your scripts. Any Perl scripts that you
- write are your property, including scripts that make use of Berkeley
- DB. Neither the Perl license nor the Berkeley DB license
- place any restriction on what you may do with them.
-
-If you are in any doubt about the license situation, contact either the
-Berkeley DB authors or the author of BerkeleyDB.
-See L<"AUTHOR"> for details.
-
-
-=head1 AUTHOR
-
-Paul Marquess E<lt>Paul.Marquess@btinternet.comE<gt>.
-
-Questions about Berkeley DB may be addressed to E<lt>db@sleepycat.comE<gt>.
-
-=head1 SEE ALSO
-
-perl(1), DB_File, Berkeley DB.
-
-=cut
diff --git a/db/perl.BerkeleyDB/BerkeleyDB.pod.P b/db/perl.BerkeleyDB/BerkeleyDB.pod.P
deleted file mode 100644
index 2bcff2d99..000000000
--- a/db/perl.BerkeleyDB/BerkeleyDB.pod.P
+++ /dev/null
@@ -1,1518 +0,0 @@
-=head1 NAME
-
-BerkeleyDB - Perl extension for Berkeley DB version 2 or 3
-
-=head1 SYNOPSIS
-
- use BerkeleyDB;
-
- $env = new BerkeleyDB::Env [OPTIONS] ;
-
- $db = tie %hash, 'BerkeleyDB::Hash', [OPTIONS] ;
- $db = new BerkeleyDB::Hash [OPTIONS] ;
-
- $db = tie %hash, 'BerkeleyDB::Btree', [OPTIONS] ;
- $db = new BerkeleyDB::Btree [OPTIONS] ;
-
- $db = tie %hash, 'BerkeleyDB::Recno', [OPTIONS] ;
- $db = new BerkeleyDB::Recno [OPTIONS] ;
-
- $db = tie %hash, 'BerkeleyDB::Queue', [OPTIONS] ;
- $db = new BerkeleyDB::Queue [OPTIONS] ;
-
- $db = new BerkeleyDB::Unknown [OPTIONS] ;
-
- $status = BerkeleyDB::db_remove [OPTIONS]
-
- $hash{$key} = $value ;
- $value = $hash{$key} ;
- each %hash ;
- keys %hash ;
- values %hash ;
-
- $status = $db->db_get()
- $status = $db->db_put() ;
- $status = $db->db_del() ;
- $status = $db->db_sync() ;
- $status = $db->db_close() ;
- $hash_ref = $db->db_stat() ;
- $status = $db->db_key_range();
- $type = $db->type() ;
- $status = $db->status() ;
- $boolean = $db->byteswapped() ;
-
- ($flag, $old_offset, $old_length) = $db->partial_set($offset, $length) ;
- ($flag, $old_offset, $old_length) = $db->partial_clear() ;
-
- $cursor = $db->db_cursor([$flags]) ;
- $newcursor = $cursor->c_dup([$flags]);
- $status = $cursor->c_get() ;
- $status = $cursor->c_put() ;
- $status = $cursor->c_del() ;
- $status = $cursor->c_count() ;
- $status = $cursor->status() ;
- $status = $cursor->c_close() ;
-
- $cursor = $db->db_join() ;
- $status = $cursor->c_get() ;
- $status = $cursor->c_close() ;
-
- $status = $env->txn_checkpoint()
- $hash_ref = $env->txn_stat()
- $status = $env->setmutexlocks()
-
- $txn = $env->txn_begin() ;
- $status = $txn->txn_prepare()
- $status = $txn->txn_commit()
- $status = $txn->txn_abort()
- $status = $txn->txn_id()
-
- $BerkeleyDB::Error
- $BerkeleyDB::db_version
-
- # DBM Filters
- $old_filter = $db->filter_store_key ( sub { ... } ) ;
- $old_filter = $db->filter_store_value( sub { ... } ) ;
- $old_filter = $db->filter_fetch_key ( sub { ... } ) ;
- $old_filter = $db->filter_fetch_value( sub { ... } ) ;
-
- # deprecated, but supported
- $txn_mgr = $env->TxnMgr();
- $status = $txn_mgr->txn_checkpoint()
- $hash_ref = $txn_mgr->txn_stat()
- $txn = $txn_mgr->txn_begin() ;
-
-=head1 DESCRIPTION
-
-B<NOTE: This document is still under construction. Expect it to be
-incomplete in places.>
-
-This Perl module provides an interface to most of the functionality
-available in Berkeley DB versions 2 and 3. In general it is safe to assume
-that the interface provided here to be identical to the Berkeley DB
-interface. The main changes have been to make the Berkeley DB API work
-in a Perl way. Note that if you are using Berkeley DB 2.x, the new
-features available in Berkeley DB 3.x are not available via this module.
-
-The reader is expected to be familiar with the Berkeley DB
-documentation. Where the interface provided here is identical to the
-Berkeley DB library and the... TODO
-
-The B<db_appinit>, B<db_cursor>, B<db_open> and B<db_txn> man pages are
-particularly relevant.
-
-The interface to Berkeley DB is implemented with a number of Perl
-classes.
-
-=head1 ENV CLASS
-
-The B<BerkeleyDB::Env> class provides an interface to the Berkeley DB
-function B<db_appinit> in Berkeley DB 2.x or B<db_env_create> and
-B<DBENV-E<gt>open> in Berkeley DB 3.x. Its purpose is to initialise a
-number of sub-systems that can then be used in a consistent way in all
-the databases you make use of the environment.
-
-If you don't intend using transactions, locking or logging, then you
-shouldn't need to make use of B<BerkeleyDB::Env>.
-
-=head2 Synopsis
-
- $env = new BerkeleyDB::Env
- [ -Home => $path, ]
- [ -Server => $name, ]
- [ -CacheSize => $number, ]
- [ -Config => { name => value, name => value }, ]
- [ -ErrFile => filename or filehandle, ]
- [ -ErrPrefix => "string", ]
- [ -Flags => number, ]
- [ -LockDetect => number, ]
- [ -Verbose => boolean, ]
-
-=over 5
-
-All the parameters to the BerkeleyDB::Env constructor are optional.
-
-=item -Home
-
-If present, this parameter should point to an existing directory. Any
-files that I<aren't> specified with an absolute path in the sub-systems
-that are initialised by the BerkeleyDB::Env class will be assumed to
-live in the B<Home> directory.
-
-For example, in the code fragment below the database "fred.db" will be
-opened in the directory "/home/databases" because it was specified as a
-relative path, but "joe.db" will be opened in "/other" because it was
-part of an absolute path.
-
- $env = new BerkeleyDB::Env
- -Home => "/home/databases"
- ...
-
- $db1 = new BerkeleyDB::Hash
- -Filename = "fred.db",
- -Env => $env
- ...
-
- $db2 = new BerkeleyDB::Hash
- -Filename = "/other/joe.db",
- -Env => $env
- ...
-
-=item -Server
-
-If present, this parameter should be the hostname of a server that is running
-the Berkeley DB RPC server. All databases will be accessed via the RPC server.
-
-=item -Cachesize
-
-If present, this parameter sets the size of the environments shared memory
-buffer pool.
-
-=item -Config
-
-This is a variation on the C<-Home> parameter, but it allows finer
-control of where specific types of files will be stored.
-
-The parameter expects a reference to a hash. Valid keys are:
-B<DB_DATA_DIR>, B<DB_LOG_DIR> and B<DB_TMP_DIR>
-
-The code below shows an example of how it can be used.
-
- $env = new BerkeleyDB::Env
- -Config => { DB_DATA_DIR => "/home/databases",
- DB_LOG_DIR => "/home/logs",
- DB_TMP_DIR => "/home/tmp"
- }
- ...
-
-=item -ErrFile
-
-Expects either the name of a file or a reference to a filehandle. Any
-errors generated internally by Berkeley DB will be logged to this file.
-
-=item -ErrPrefix
-
-Allows a prefix to be added to the error messages before they are sent
-to B<-ErrFile>.
-
-=item -Flags
-
-The B<Flags> parameter specifies both which sub-systems to initialise,
-as well as a number of environment-wide options.
-See the Berkeley DB documentation for more details of these options.
-
-Any of the following can be specified by OR'ing them:
-
-B<DB_CREATE>
-
-If any of the files specified do not already exist, create them.
-
-B<DB_INIT_CDB>
-
-Initialise the Concurrent Access Methods
-
-B<DB_INIT_LOCK>
-
-Initialise the Locking sub-system.
-
-B<DB_INIT_LOG>
-
-Initialise the Logging sub-system.
-
-B<DB_INIT_MPOOL>
-
-Initialise the ...
-
-B<DB_INIT_TXN>
-
-Initialise the ...
-
-B<DB_MPOOL_PRIVATE>
-
-Initialise the ...
-
-B<DB_INIT_MPOOL> is also specified.
-
-Initialise the ...
-
-B<DB_NOMMAP>
-
-Initialise the ...
-
-B<DB_RECOVER>
-
-
-
-B<DB_RECOVER_FATAL>
-
-B<DB_THREAD>
-
-B<DB_TXN_NOSYNC>
-
-B<DB_USE_ENVIRON>
-
-B<DB_USE_ENVIRON_ROOT>
-
-=item -LockDetect
-
-Specifies what to do when a lock conflict occurs. The value should be one of
-
-B<DB_LOCK_DEFAULT>
-
-B<DB_LOCK_OLDEST>
-
-B<DB_LOCK_RANDOM>
-
-B<DB_LOCK_YOUNGEST>
-
-=item -Verbose
-
-Add extra debugging information to the messages sent to B<-ErrFile>.
-
-=back
-
-=head2 Methods
-
-The environment class has the following methods:
-
-=over 5
-
-=item $env->errPrefix("string") ;
-
-This method is identical to the B<-ErrPrefix> flag. It allows the
-error prefix string to be changed dynamically.
-
-=item $txn = $env->TxnMgr()
-
-Constructor for creating a B<TxnMgr> object.
-See L<"TRANSACTIONS"> for more details of using transactions.
-
-This method is deprecated. Access the transaction methods using the B<txn_>
-methods below from the environment object directly.
-
-=item $env->txn_begin()
-
-TODO
-
-=item $env->txn_stat()
-
-TODO
-
-=item $env->txn_checkpoint()
-
-TODO
-
-=item $env->status()
-
-Returns the status of the last BerkeleyDB::Env method.
-
-=item $env->setmutexlocks()
-
-Only available in Berkeley Db 3.0 or greater. Calls
-B<db_env_set_mutexlocks> when used with Berkeley DB 3.1.x. When used with
-Berkeley DB 3.0 or 3.2 and better it calls B<DBENV-E<gt>set_mutexlocks>.
-
-=back
-
-=head2 Examples
-
-TODO.
-
-=head1 THE DATABASE CLASSES
-
-B<BerkeleyDB> supports the following database formats:
-
-=over 5
-
-=item B<BerkeleyDB::Hash>
-
-This database type allows arbitrary key/value pairs to be stored in data
-files. This is equivalent to the functionality provided by other
-hashing packages like DBM, NDBM, ODBM, GDBM, and SDBM. Remember though,
-the files created using B<BerkeleyDB::Hash> are not compatible with any
-of the other packages mentioned.
-
-A default hashing algorithm, which will be adequate for most applications,
-is built into BerkeleyDB. If you do need to use your own hashing algorithm
-it is possible to write your own in Perl and have B<BerkeleyDB> use
-it instead.
-
-=item B<BerkeleyDB::Btree>
-
-The Btree format allows arbitrary key/value pairs to be stored in a
-B+tree.
-
-As with the B<BerkeleyDB::Hash> format, it is possible to provide a
-user defined Perl routine to perform the comparison of keys. By default,
-though, the keys are stored in lexical order.
-
-=item B<BerkeleyDB::Recno>
-
-TODO.
-
-
-=item B<BerkeleyDB::Queue>
-
-TODO.
-
-=item B<BerkeleyDB::Unknown>
-
-This isn't a database format at all. It is used when you want to open an
-existing Berkeley DB database without having to know what type is it.
-
-=back
-
-
-Each of the database formats described above is accessed via a
-corresponding B<BerkeleyDB> class. These will be described in turn in
-the next sections.
-
-=head1 BerkeleyDB::Hash
-
-Equivalent to calling B<db_open> with type B<DB_HASH> in Berkeley DB 2.x and
-calling B<db_create> followed by B<DB-E<gt>open> with type B<DB_HASH> in
-Berkeley DB 3.x.
-
-Two forms of constructor are supported:
-
- $db = new BerkeleyDB::Hash
- [ -Filename => "filename", ]
- [ -Subname => "sub-database name", ]
- [ -Flags => flags,]
- [ -Property => flags,]
- [ -Mode => number,]
- [ -Cachesize => number,]
- [ -Lorder => number,]
- [ -Pagesize => number,]
- [ -Env => $env,]
- [ -Txn => $txn,]
- # BerkeleyDB::Hash specific
- [ -Ffactor => number,]
- [ -Nelem => number,]
- [ -Hash => code reference,]
- [ -DupCompare => code reference,]
-
-and this
-
- [$db =] tie %hash, 'BerkeleyDB::Hash',
- [ -Filename => "filename", ]
- [ -Subname => "sub-database name", ]
- [ -Flags => flags,]
- [ -Property => flags,]
- [ -Mode => number,]
- [ -Cachesize => number,]
- [ -Lorder => number,]
- [ -Pagesize => number,]
- [ -Env => $env,]
- [ -Txn => $txn,]
- # BerkeleyDB::Hash specific
- [ -Ffactor => number,]
- [ -Nelem => number,]
- [ -Hash => code reference,]
- [ -DupCompare => code reference,]
-
-
-When the "tie" interface is used, reading from and writing to the database
-is achieved via the tied hash. In this case the database operates like
-a Perl associative array that happens to be stored on disk.
-
-In addition to the high-level tied hash interface, it is possible to
-make use of the underlying methods provided by Berkeley DB
-
-=head2 Options
-
-In addition to the standard set of options (see L<COMMON OPTIONS>)
-B<BerkeleyDB::Hash> supports these options:
-
-=over 5
-
-=item -Property
-
-Used to specify extra flags when opening a database. The following
-flags may be specified by logically OR'ing together one or more of the
-following values:
-
-B<DB_DUP>
-
-When creating a new database, this flag enables the storing of duplicate
-keys in the database. If B<DB_DUPSORT> is not specified as well, the
-duplicates are stored in the order they are created in the database.
-
-B<DB_DUPSORT>
-
-Enables the sorting of duplicate keys in the database. Ignored if
-B<DB_DUP> isn't also specified.
-
-=item -Ffactor
-
-=item -Nelem
-
-See the Berkeley DB documentation for details of these options.
-
-=item -Hash
-
-Allows you to provide a user defined hash function. If not specified,
-a default hash function is used. Here is a template for a user-defined
-hash function
-
- sub hash
- {
- my ($data) = shift ;
- ...
- # return the hash value for $data
- return $hash ;
- }
-
- tie %h, "BerkeleyDB::Hash",
- -Filename => $filename,
- -Hash => \&hash,
- ...
-
-See L<""> for an example.
-
-=item -DupCompare
-
-Used in conjunction with the B<DB_DUPOSRT> flag.
-
- sub compare
- {
- my ($key, $key2) = @_ ;
- ...
- # return 0 if $key1 eq $key2
- # -1 if $key1 lt $key2
- # 1 if $key1 gt $key2
- return (-1 , 0 or 1) ;
- }
-
- tie %h, "BerkeleyDB::Hash",
- -Filename => $filename,
- -Property => DB_DUP|DB_DUPSORT,
- -DupCompare => \&compare,
- ...
-
-=back
-
-
-=head2 Methods
-
-B<BerkeleyDB::Hash> only supports the standard database methods.
-See L<COMMON DATABASE METHODS>.
-
-=head2 A Simple Tied Hash Example
-
-## simpleHash
-
-here is the output:
-
- Banana Exists
-
- orange -> orange
- tomato -> red
- banana -> yellow
-
-Note that the like ordinary associative arrays, the order of the keys
-retrieved from a Hash database are in an apparently random order.
-
-=head2 Another Simple Hash Example
-
-Do the same as the previous example but not using tie.
-
-## simpleHash2
-
-=head2 Duplicate keys
-
-The code below is a variation on the examples above. This time the hash has
-been inverted. The key this time is colour and the value is the fruit name.
-The B<DB_DUP> flag has been specified to allow duplicates.
-
-##dupHash
-
-here is the output:
-
- orange -> orange
- yellow -> banana
- red -> apple
- red -> tomato
- green -> banana
- green -> apple
-
-=head2 Sorting Duplicate Keys
-
-In the previous example, when there were duplicate keys, the values are
-sorted in the order they are stored in. The code below is
-identical to the previous example except the B<DB_DUPSORT> flag is
-specified.
-
-##dupSortHash
-
-Notice that in the output below the duplicate values are sorted.
-
- orange -> orange
- yellow -> banana
- red -> apple
- red -> tomato
- green -> apple
- green -> banana
-
-=head2 Custom Sorting Duplicate Keys
-
-Another variation
-
-TODO
-
-=head2 Changing the hash
-
-TODO
-
-=head2 Using db_stat
-
-TODO
-
-=head1 BerkeleyDB::Btree
-
-Equivalent to calling B<db_open> with type B<DB_BTREE> in Berkeley DB 2.x and
-calling B<db_create> followed by B<DB-E<gt>open> with type B<DB_BTREE> in
-Berkeley DB 3.x.
-
-Two forms of constructor are supported:
-
-
- $db = new BerkeleyDB::Btree
- [ -Filename => "filename", ]
- [ -Subname => "sub-database name", ]
- [ -Flags => flags,]
- [ -Property => flags,]
- [ -Mode => number,]
- [ -Cachesize => number,]
- [ -Lorder => number,]
- [ -Pagesize => number,]
- [ -Env => $env,]
- [ -Txn => $txn,]
- # BerkeleyDB::Btree specific
- [ -Minkey => number,]
- [ -Compare => code reference,]
- [ -DupCompare => code reference,]
- [ -Prefix => code reference,]
-
-and this
-
- [$db =] tie %hash, 'BerkeleyDB::Btree',
- [ -Filename => "filename", ]
- [ -Subname => "sub-database name", ]
- [ -Flags => flags,]
- [ -Property => flags,]
- [ -Mode => number,]
- [ -Cachesize => number,]
- [ -Lorder => number,]
- [ -Pagesize => number,]
- [ -Env => $env,]
- [ -Txn => $txn,]
- # BerkeleyDB::Btree specific
- [ -Minkey => number,]
- [ -Compare => code reference,]
- [ -DupCompare => code reference,]
- [ -Prefix => code reference,]
-
-=head2 Options
-
-In addition to the standard set of options (see L<COMMON OPTIONS>)
-B<BerkeleyDB::Btree> supports these options:
-
-=over 5
-
-=item -Property
-
-Used to specify extra flags when opening a database. The following
-flags may be specified by logically OR'ing together one or more of the
-following values:
-
-B<DB_DUP>
-
-When creating a new database, this flag enables the storing of duplicate
-keys in the database. If B<DB_DUPSORT> is not specified as well, the
-duplicates are stored in the order they are created in the database.
-
-B<DB_DUPSORT>
-
-Enables the sorting of duplicate keys in the database. Ignored if
-B<DB_DUP> isn't also specified.
-
-=item Minkey
-
-TODO
-
-=item Compare
-
-Allow you to override the default sort order used in the database. See
-L<"Changing the sort order"> for an example.
-
- sub compare
- {
- my ($key, $key2) = @_ ;
- ...
- # return 0 if $key1 eq $key2
- # -1 if $key1 lt $key2
- # 1 if $key1 gt $key2
- return (-1 , 0 or 1) ;
- }
-
- tie %h, "BerkeleyDB::Hash",
- -Filename => $filename,
- -Compare => \&compare,
- ...
-
-=item Prefix
-
- sub prefix
- {
- my ($key, $key2) = @_ ;
- ...
- # return number of bytes of $key2 which are
- # necessary to determine that it is greater than $key1
- return $bytes ;
- }
-
- tie %h, "BerkeleyDB::Hash",
- -Filename => $filename,
- -Prefix => \&prefix,
- ...
-=item DupCompare
-
- sub compare
- {
- my ($key, $key2) = @_ ;
- ...
- # return 0 if $key1 eq $key2
- # -1 if $key1 lt $key2
- # 1 if $key1 gt $key2
- return (-1 , 0 or 1) ;
- }
-
- tie %h, "BerkeleyDB::Hash",
- -Filename => $filename,
- -DupCompare => \&compare,
- ...
-
-=back
-
-=head2 Methods
-
-B<BerkeleyDB::Btree> supports the following database methods.
-See also L<COMMON DATABASE METHODS>.
-
-All the methods below return 0 to indicate success.
-
-=over 5
-
-=item $status = $db->db_key_range($key, $less, $equal, $greater [, $flags])
-
-Given a key, C<$key>, this method returns the proportion of keys less than
-C<$key> in C<$less>, the proportion equal to C<$key> in C<$equal> and the
-proportion greater than C<$key> in C<$greater>.
-
-The proportion is returned as a double in the range 0.0 to 1.0.
-
-=back
-
-=head2 A Simple Btree Example
-
-The code below is a simple example of using a btree database.
-
-## btreeSimple
-
-Here is the output from the code above. The keys have been sorted using
-Berkeley DB's default sorting algorithm.
-
- Smith
- Wall
- mouse
-
-
-=head2 Changing the sort order
-
-It is possible to supply your own sorting algorithm if the one that Berkeley
-DB used isn't suitable. The code below is identical to the previous example
-except for the case insensitive compare function.
-
-## btreeSortOrder
-
-Here is the output from the code above.
-
- mouse
- Smith
- Wall
-
-There are a few point to bear in mind if you want to change the
-ordering in a BTREE database:
-
-=over 5
-
-=item 1.
-
-The new compare function must be specified when you create the database.
-
-=item 2.
-
-You cannot change the ordering once the database has been created. Thus
-you must use the same compare function every time you access the
-database.
-
-=back
-
-=head2 Using db_stat
-
-TODO
-
-=head1 BerkeleyDB::Recno
-
-Equivalent to calling B<db_open> with type B<DB_RECNO> in Berkeley DB 2.x and
-calling B<db_create> followed by B<DB-E<gt>open> with type B<DB_RECNO> in
-Berkeley DB 3.x.
-
-Two forms of constructor are supported:
-
- $db = new BerkeleyDB::Recno
- [ -Filename => "filename", ]
- [ -Subname => "sub-database name", ]
- [ -Flags => flags,]
- [ -Property => flags,]
- [ -Mode => number,]
- [ -Cachesize => number,]
- [ -Lorder => number,]
- [ -Pagesize => number,]
- [ -Env => $env,]
- [ -Txn => $txn,]
- # BerkeleyDB::Recno specific
- [ -Delim => byte,]
- [ -Len => number,]
- [ -Pad => byte,]
- [ -Source => filename,]
-
-and this
-
- [$db =] tie @arry, 'BerkeleyDB::Recno',
- [ -Filename => "filename", ]
- [ -Subname => "sub-database name", ]
- [ -Flags => flags,]
- [ -Property => flags,]
- [ -Mode => number,]
- [ -Cachesize => number,]
- [ -Lorder => number,]
- [ -Pagesize => number,]
- [ -Env => $env,]
- [ -Txn => $txn,]
- # BerkeleyDB::Recno specific
- [ -Delim => byte,]
- [ -Len => number,]
- [ -Pad => byte,]
- [ -Source => filename,]
-
-=head2 A Recno Example
-
-Here is a simple example that uses RECNO (if you are using a version
-of Perl earlier than 5.004_57 this example won't work -- see
-L<Extra RECNO Methods> for a workaround).
-
-## simpleRecno
-
-Here is the output from the script:
-
- The array contains 5 entries
- popped black
- shifted white
- Element 1 Exists with value blue
- The last element is green
- The 2nd last element is yellow
-
-=head1 BerkeleyDB::Queue
-
-Equivalent to calling B<db_create> followed by B<DB-E<gt>open> with
-type B<DB_QUEUE> in Berkeley DB 3.x. This database format isn't available if
-you use Berkeley DB 2.x.
-
-Two forms of constructor are supported:
-
- $db = new BerkeleyDB::Queue
- [ -Filename => "filename", ]
- [ -Subname => "sub-database name", ]
- [ -Flags => flags,]
- [ -Property => flags,]
- [ -Mode => number,]
- [ -Cachesize => number,]
- [ -Lorder => number,]
- [ -Pagesize => number,]
- [ -Env => $env,]
- [ -Txn => $txn,]
- # BerkeleyDB::Queue specific
- [ -Len => number,]
- [ -Pad => byte,]
- [ -ExtentSize => number, ]
-
-and this
-
- [$db =] tie @arry, 'BerkeleyDB::Queue',
- [ -Filename => "filename", ]
- [ -Subname => "sub-database name", ]
- [ -Flags => flags,]
- [ -Property => flags,]
- [ -Mode => number,]
- [ -Cachesize => number,]
- [ -Lorder => number,]
- [ -Pagesize => number,]
- [ -Env => $env,]
- [ -Txn => $txn,]
- # BerkeleyDB::Queue specific
- [ -Len => number,]
- [ -Pad => byte,]
-
-
-=head1 BerkeleyDB::Unknown
-
-This class is used to open an existing database.
-
-Equivalent to calling B<db_open> with type B<DB_UNKNOWN> in Berkeley DB 2.x and
-calling B<db_create> followed by B<DB-E<gt>open> with type B<DB_UNKNOWN> in
-Berkeley DB 3.x.
-
-The constructor looks like this:
-
- $db = new BerkeleyDB::Unknown
- [ -Filename => "filename", ]
- [ -Subname => "sub-database name", ]
- [ -Flags => flags,]
- [ -Property => flags,]
- [ -Mode => number,]
- [ -Cachesize => number,]
- [ -Lorder => number,]
- [ -Pagesize => number,]
- [ -Env => $env,]
- [ -Txn => $txn,]
-
-
-=head2 An example
-
-=head1 COMMON OPTIONS
-
-All database access class constructors support the common set of
-options defined below. All are optional.
-
-=over 5
-
-=item -Filename
-
-The database filename. If no filename is specified, a temporary file will
-be created and removed once the program terminates.
-
-=item -Subname
-
-Specifies the name of the sub-database to open.
-This option is only valid if you are using Berkeley DB 3.x.
-
-=item -Flags
-
-Specify how the database will be opened/created. The valid flags are:
-
-B<DB_CREATE>
-
-Create any underlying files, as necessary. If the files do not already
-exist and the B<DB_CREATE> flag is not specified, the call will fail.
-
-B<DB_NOMMAP>
-
-Not supported by BerkeleyDB.
-
-B<DB_RDONLY>
-
-Opens the database in read-only mode.
-
-B<DB_THREAD>
-
-Not supported by BerkeleyDB.
-
-B<DB_TRUNCATE>
-
-If the database file already exists, remove all the data before
-opening it.
-
-=item -Mode
-
-Determines the file protection when the database is created. Defaults
-to 0666.
-
-=item -Cachesize
-
-=item -Lorder
-
-=item -Pagesize
-
-=item -Env
-
-When working under a Berkeley DB environment, this parameter
-
-Defaults to no environment.
-
-=item -Txn
-
-TODO.
-
-=back
-
-=head1 COMMON DATABASE METHODS
-
-All the database interfaces support the common set of methods defined
-below.
-
-All the methods below return 0 to indicate success.
-
-=head2 $status = $db->db_get($key, $value [, $flags])
-
-Given a key (C<$key>) this method reads the value associated with it
-from the database. If it exists, the value read from the database is
-returned in the C<$value> parameter.
-
-The B<$flags> parameter is optional. If present, it must be set to B<one>
-of the following values:
-
-=over 5
-
-=item B<DB_GET_BOTH>
-
-When the B<DB_GET_BOTH> flag is specified, B<db_get> checks for the
-existence of B<both> the C<$key> B<and> C<$value> in the database.
-
-=item B<DB_SET_RECNO>
-
-TODO.
-
-=back
-
-In addition, the following value may be set by logically OR'ing it into
-the B<$flags> parameter:
-
-=over 5
-
-=item B<DB_RMW>
-
-TODO
-
-=back
-
-
-=head2 $status = $db->db_put($key, $value [, $flags])
-
-Stores a key/value pair in the database.
-
-The B<$flags> parameter is optional. If present it must be set to B<one>
-of the following values:
-
-=over 5
-
-=item B<DB_APPEND>
-
-This flag is only applicable when accessing a B<BerkeleyDB::Recno>
-database.
-
-TODO.
-
-
-=item B<DB_NOOVERWRITE>
-
-If this flag is specified and C<$key> already exists in the database,
-the call to B<db_put> will return B<DB_KEYEXIST>.
-
-=back
-
-=head2 $status = $db->db_del($key [, $flags])
-
-Deletes a key/value pair in the database associated with C<$key>.
-If duplicate keys are enabled in the database, B<db_del> will delete
-B<all> key/value pairs with key C<$key>.
-
-The B<$flags> parameter is optional and is currently unused.
-
-=head2 $status = $db->db_sync()
-
-If any parts of the database are in memory, write them to the database.
-
-=head2 $cursor = $db->db_cursor([$flags])
-
-Creates a cursor object. This is used to access the contents of the
-database sequentially. See L<CURSORS> for details of the methods
-available when working with cursors.
-
-The B<$flags> parameter is optional. If present it must be set to B<one>
-of the following values:
-
-=over 5
-
-=item B<DB_RMW>
-
-TODO.
-
-=back
-
-=head2 ($flag, $old_offset, $old_length) = $db->partial_set($offset, $length) ;
-
-TODO
-
-=head2 ($flag, $old_offset, $old_length) = $db->partial_clear() ;
-
-TODO
-
-=head2 $db->byteswapped()
-
-TODO
-
-=head2 $db->type()
-
-Returns the type of the database. The possible return code are B<DB_HASH>
-for a B<BerkeleyDB::Hash> database, B<DB_BTREE> for a B<BerkeleyDB::Btree>
-database and B<DB_RECNO> for a B<BerkeleyDB::Recno> database. This method
-is typically used when a database has been opened with
-B<BerkeleyDB::Unknown>.
-
-=item $ref = $db->db_stat()
-
-Returns a reference to an associative array containing information about
-the database. The keys of the associative array correspond directly to the
-names of the fields defined in the Berkeley DB documentation. For example,
-in the DB documentation, the field B<bt_version> stores the version of the
-Btree database. Assuming you called B<db_stat> on a Btree database the
-equivalent field would be accessed as follows:
-
- $version = $ref->{'bt_version'} ;
-
-If you are using Berkeley DB 3.x, this method will work will all database
-formats. When DB 2.x is used, it only works with B<BerkeleyDB::Btree>.
-
-=head2 $status = $db->status()
-
-Returns the status of the last C<$db> method called.
-
-=head1 CURSORS
-
-A cursor is used whenever you want to access the contents of a database
-in sequential order.
-A cursor object is created with the C<db_cursor>
-
-A cursor object has the following methods available:
-
-=head2 $newcursor = $cursor->c_dup($flags)
-
-Creates a duplicate of C<$cursor>. This method needs Berkeley DB 3.0.x or better.
-
-The C<$flags> parameter is optional and can take the following value:
-
-=over 5
-
-=item DB_POSITION
-
-When present this flag will position the new cursor at the same place as the
-existing cursor.
-
-=back
-
-=head2 $status = $cursor->c_get($key, $value, $flags)
-
-Reads a key/value pair from the database, returning the data in C<$key>
-and C<$value>. The key/value pair actually read is controlled by the
-C<$flags> parameter, which can take B<one> of the following values:
-
-=over 5
-
-=item B<DB_FIRST>
-
-Set the cursor to point to the first key/value pair in the
-database. Return the key/value pair in C<$key> and C<$value>.
-
-=item B<DB_LAST>
-
-Set the cursor to point to the last key/value pair in the database. Return
-the key/value pair in C<$key> and C<$value>.
-
-=item B<DB_NEXT>
-
-If the cursor is already pointing to a key/value pair, it will be
-incremented to point to the next key/value pair and return its contents.
-
-If the cursor isn't initialised, B<DB_NEXT> works just like B<DB_FIRST>.
-
-If the cursor is already positioned at the last key/value pair, B<c_get>
-will return B<DB_NOTFOUND>.
-
-=item B<DB_NEXT_DUP>
-
-This flag is only valid when duplicate keys have been enabled in
-a database.
-If the cursor is already pointing to a key/value pair and the key of
-the next key/value pair is identical, the cursor will be incremented to
-point to it and their contents returned.
-
-=item B<DB_PREV>
-
-If the cursor is already pointing to a key/value pair, it will be
-decremented to point to the previous key/value pair and return its
-contents.
-
-If the cursor isn't initialised, B<DB_PREV> works just like B<DB_LAST>.
-
-If the cursor is already positioned at the first key/value pair, B<c_get>
-will return B<DB_NOTFOUND>.
-
-=item B<DB_CURRENT>
-
-If the cursor has been set to point to a key/value pair, return their
-contents.
-If the key/value pair referenced by the cursor has been deleted, B<c_get>
-will return B<DB_KEYEMPTY>.
-
-=item B<DB_SET>
-
-Set the cursor to point to the key/value pair referenced by B<$key>
-and return the value in B<$value>.
-
-=item B<DB_SET_RANGE>
-
-This flag is a variation on the B<DB_SET> flag. As well as returning
-the value, it also returns the key, via B<$key>.
-When used with a B<BerkeleyDB::Btree> database the key matched by B<c_get>
-will be the shortest key (in length) which is greater than or equal to
-the key supplied, via B<$key>. This allows partial key searches.
-See ??? for an example of how to use this flag.
-
-=item B<DB_GET_BOTH>
-
-Another variation on B<DB_SET>. This one returns both the key and
-the value.
-
-=item B<DB_SET_RECNO>
-
-TODO.
-
-=item B<DB_GET_RECNO>
-
-TODO.
-
-=back
-
-In addition, the following value may be set by logically OR'ing it into
-the B<$flags> parameter:
-
-=over 5
-
-=item B<DB_RMW>
-
-TODO.
-
-=back
-
-=head2 $status = $cursor->c_put($key, $value, $flags)
-
-Stores the key/value pair in the database. The position that the data is
-stored in the database is controlled by the C<$flags> parameter, which
-must take B<one> of the following values:
-
-=over 5
-
-=item B<DB_AFTER>
-
-When used with a Btree or Hash database, a duplicate of the key referenced
-by the current cursor position will be created and the contents of
-B<$value> will be associated with it - B<$key> is ignored.
-The new key/value pair will be stored immediately after the current
-cursor position.
-Obviously the database has to have been opened with B<DB_DUP>.
-
-When used with a Recno ... TODO
-
-
-=item B<DB_BEFORE>
-
-When used with a Btree or Hash database, a duplicate of the key referenced
-by the current cursor position will be created and the contents of
-B<$value> will be associated with it - B<$key> is ignored.
-The new key/value pair will be stored immediately before the current
-cursor position.
-Obviously the database has to have been opened with B<DB_DUP>.
-
-When used with a Recno ... TODO
-
-=item B<DB_CURRENT>
-
-If the cursor has been initialised, replace the value of the key/value
-pair stored in the database with the contents of B<$value>.
-
-=item B<DB_KEYFIRST>
-
-Only valid with a Btree or Hash database. This flag is only really
-used when duplicates are enabled in the database and sorted duplicates
-haven't been specified.
-In this case the key/value pair will be inserted as the first entry in
-the duplicates for the particular key.
-
-=item B<DB_KEYLAST>
-
-Only valid with a Btree or Hash database. This flag is only really
-used when duplicates are enabled in the database and sorted duplicates
-haven't been specified.
-In this case the key/value pair will be inserted as the last entry in
-the duplicates for the particular key.
-
-=back
-
-=head2 $status = $cursor->c_del([$flags])
-
-This method deletes the key/value pair associated with the current cursor
-position. The cursor position will not be changed by this operation, so
-any subsequent cursor operation must first initialise the cursor to
-point to a valid key/value pair.
-
-If the key/value pair associated with the cursor have already been
-deleted, B<c_del> will return B<DB_KEYEMPTY>.
-
-The B<$flags> parameter is not used at present.
-
-=head2 $status = $cursor->c_del($cnt [, $flags])
-
-Stores the number of duplicates at the current cursor position in B<$cnt>.
-
-The B<$flags> parameter is not used at present. This method needs
-Berkeley DB 3.1 or better.
-
-=head2 $status = $cursor->status()
-
-Returns the status of the last cursor method as a dual type.
-
-=head2 Cursor Examples
-
-TODO
-
-Iterating from first to last, then in reverse.
-
-examples of each of the flags.
-
-=head1 JOIN
-
-Join support for BerkeleyDB is in progress. Watch this space.
-
-TODO
-
-=head1 TRANSACTIONS
-
-TODO.
-
-=head1 DBM Filters
-
-A DBM Filter is a piece of code that is be used when you I<always>
-want to make the same transformation to all keys and/or values in a DBM
-database. All of the database classes (BerkeleyDB::Hash,
-BerkeleyDB::Btree and BerkeleyDB::Recno) support DBM Filters.
-
-There are four methods associated with DBM Filters. All work
-identically, and each is used to install (or uninstall) a single DBM
-Filter. Each expects a single parameter, namely a reference to a sub.
-The only difference between them is the place that the filter is
-installed.
-
-To summarise:
-
-=over 5
-
-=item B<filter_store_key>
-
-If a filter has been installed with this method, it will be invoked
-every time you write a key to a DBM database.
-
-=item B<filter_store_value>
-
-If a filter has been installed with this method, it will be invoked
-every time you write a value to a DBM database.
-
-
-=item B<filter_fetch_key>
-
-If a filter has been installed with this method, it will be invoked
-every time you read a key from a DBM database.
-
-=item B<filter_fetch_value>
-
-If a filter has been installed with this method, it will be invoked
-every time you read a value from a DBM database.
-
-=back
-
-You can use any combination of the methods, from none, to all four.
-
-All filter methods return the existing filter, if present, or C<undef>
-in not.
-
-To delete a filter pass C<undef> to it.
-
-=head2 The Filter
-
-When each filter is called by Perl, a local copy of C<$_> will contain
-the key or value to be filtered. Filtering is achieved by modifying
-the contents of C<$_>. The return code from the filter is ignored.
-
-=head2 An Example -- the NULL termination problem.
-
-Consider the following scenario. You have a DBM database that you need
-to share with a third-party C application. The C application assumes
-that I<all> keys and values are NULL terminated. Unfortunately when
-Perl writes to DBM databases it doesn't use NULL termination, so your
-Perl application will have to manage NULL termination itself. When you
-write to the database you will have to use something like this:
-
- $hash{"$key\0"} = "$value\0" ;
-
-Similarly the NULL needs to be taken into account when you are considering
-the length of existing keys/values.
-
-It would be much better if you could ignore the NULL terminations issue
-in the main application code and have a mechanism that automatically
-added the terminating NULL to all keys and values whenever you write to
-the database and have them removed when you read from the database. As I'm
-sure you have already guessed, this is a problem that DBM Filters can
-fix very easily.
-
-## nullFilter
-
-Hopefully the contents of each of the filters should be
-self-explanatory. Both "fetch" filters remove the terminating NULL,
-and both "store" filters add a terminating NULL.
-
-
-=head2 Another Example -- Key is a C int.
-
-Here is another real-life example. By default, whenever Perl writes to
-a DBM database it always writes the key and value as strings. So when
-you use this:
-
- $hash{12345} = "something" ;
-
-the key 12345 will get stored in the DBM database as the 5 byte string
-"12345". If you actually want the key to be stored in the DBM database
-as a C int, you will have to use C<pack> when writing, and C<unpack>
-when reading.
-
-Here is a DBM Filter that does it:
-
-## intFilter
-
-This time only two filters have been used -- we only need to manipulate
-the contents of the key, so it wasn't necessary to install any value
-filters.
-
-=head1 Using BerkeleyDB with MLDBM
-
-Both BerkeleyDB::Hash and BerkeleyDB::Btree can be used with the MLDBM
-module. The code fragment below shows how to open associate MLDBM with
-BerkeleyDB::Btree. To use BerkeleyDB::Hash just replace
-BerkeleyDB::Btree with BerkeleyDB::Hash.
-
- use strict ;
- use BerkeleyDB ;
- use MLDBM qw(BerkeleyDB::Btree) ;
- use Data::Dumper;
-
- my $filename = 'testmldbm' ;
- my %o ;
-
- unlink $filename ;
- tie %o, 'MLDBM', -Filename => $filename,
- -Flags => DB_CREATE
- or die "Cannot open database '$filename: $!\n";
-
-See the MLDBM documentation for information on how to use the module
-and for details of its limitations.
-
-=head1 EXAMPLES
-
-TODO.
-
-=head1 HINTS & TIPS
-
-=head2 Sharing Databases With C Applications
-
-There is no technical reason why a Berkeley DB database cannot be
-shared by both a Perl and a C application.
-
-The vast majority of problems that are reported in this area boil down
-to the fact that C strings are NULL terminated, whilst Perl strings
-are not. See L<An Example -- the NULL termination problem.> in the DBM
-FILTERS section for a generic way to work around this problem.
-
-
-=head2 The untie Gotcha
-
-TODO
-
-=head1 COMMON QUESTIONS
-
-This section attempts to answer some of the more common questions that
-I get asked.
-
-
-=head2 Relationship with DB_File
-
-Before Berkeley DB 2.x was written there was only one Perl module that
-interfaced to Berkeley DB. That module is called B<DB_File>. Although
-B<DB_File> can be build with Berkeley DB 1.x, 2.x or 3.x, it only provides
-an interface to the functionality available in Berkeley DB 1.x. That
-means that it doesn't support transactions, locking or any of the other
-new features available in DB 2.x or 3.x.
-
-=head2 How do I store Perl data structures with BerkeleyDB?
-
-See L<Using BerkeleyDB with MLDBM>.
-
-=head1 HISTORY
-
-See the Changes file.
-
-=head1 AVAILABILITY
-
-The most recent version of B<BerkeleyDB> can always be found
-on CPAN (see L<perlmod/CPAN> for details), in the directory
-F<modules/by-module/BerkeleyDB>.
-
-The official web site for Berkeley DB is F<http://www.sleepycat.com>.
-
-=head1 COPYRIGHT
-
-Copyright (c) 1997-2001 Paul Marquess. All rights reserved. This program
-is free software; you can redistribute it and/or modify it under the
-same terms as Perl itself.
-
-Although B<BerkeleyDB> is covered by the Perl license, the library it
-makes use of, namely Berkeley DB, is not. Berkeley DB has its own
-copyright and its own license. Please take the time to read it.
-
-Here are few words taken from the Berkeley DB FAQ (at
-F<http://www.sleepycat.com>) regarding the license:
-
- Do I have to license DB to use it in Perl scripts?
-
- No. The Berkeley DB license requires that software that uses
- Berkeley DB be freely redistributable. In the case of Perl, that
- software is Perl, and not your scripts. Any Perl scripts that you
- write are your property, including scripts that make use of Berkeley
- DB. Neither the Perl license nor the Berkeley DB license
- place any restriction on what you may do with them.
-
-If you are in any doubt about the license situation, contact either the
-Berkeley DB authors or the author of BerkeleyDB.
-See L<"AUTHOR"> for details.
-
-
-=head1 AUTHOR
-
-Paul Marquess E<lt>Paul.Marquess@btinternet.comE<gt>.
-
-Questions about Berkeley DB may be addressed to E<lt>db@sleepycat.comE<gt>.
-
-=head1 SEE ALSO
-
-perl(1), DB_File, Berkeley DB.
-
-=cut
diff --git a/db/perl.BerkeleyDB/BerkeleyDB.xs b/db/perl.BerkeleyDB/BerkeleyDB.xs
deleted file mode 100644
index 19126c98b..000000000
--- a/db/perl.BerkeleyDB/BerkeleyDB.xs
+++ /dev/null
@@ -1,3927 +0,0 @@
-/*
-
- BerkeleyDB.xs -- Perl 5 interface to Berkeley DB version 2 & 3
-
- written by Paul Marquess <Paul.Marquess@btinternet.com>
-
- All comments/suggestions/problems are welcome
-
- Copyright (c) 1997-2001 Paul Marquess. All rights reserved.
- This program is free software; you can redistribute it and/or
- modify it under the same terms as Perl itself.
-
- Please refer to the COPYRIGHT section in
-
- Changes:
- 0.01 - First Alpha Release
- 0.02 -
-
-*/
-
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-#define PERL_POLLUTE
-#include "EXTERN.h"
-#include "perl.h"
-#include "XSUB.h"
-
-/* Being the Berkeley DB we prefer the <sys/cdefs.h> (which will be
- * shortly #included by the <db.h>) __attribute__ to the possibly
- * already defined __attribute__, for example by GNUC or by Perl. */
-
-#undef __attribute__
-
-#ifndef PERL_VERSION
-# include "patchlevel.h"
-# define PERL_REVISION 5
-# define PERL_VERSION PATCHLEVEL
-# define PERL_SUBVERSION SUBVERSION
-#endif
-
-#if PERL_REVISION == 5 && (PERL_VERSION < 4 || (PERL_VERSION == 4 && PERL_SUBVERSION <= 75 ))
-
-# define PL_sv_undef sv_undef
-# define PL_na na
-# define PL_dirty dirty
-
-#endif
-
-#include <db.h>
-
-#if (DB_VERSION_MAJOR == 3 && DB_VERSION_MINOR == 0)
-# define IS_DB_3_0
-#endif
-
-#if DB_VERSION_MAJOR >= 3
-# define AT_LEAST_DB_3
-#endif
-
-#if DB_VERSION_MAJOR > 3 || (DB_VERSION_MAJOR == 3 && DB_VERSION_MINOR >= 1)
-# define AT_LEAST_DB_3_1
-#endif
-
-#if DB_VERSION_MAJOR > 3 || (DB_VERSION_MAJOR == 3 && DB_VERSION_MINOR >= 2)
-# define AT_LEAST_DB_3_2
-#endif
-
-/* need to define DEFSV & SAVE_DEFSV for older version of Perl */
-#ifndef DEFSV
-# define DEFSV GvSV(defgv)
-#endif
-
-#ifndef SAVE_DEFSV
-# define SAVE_DEFSV SAVESPTR(GvSV(defgv))
-#endif
-
-#ifndef pTHX
-# define pTHX
-# define pTHX_
-# define aTHX
-# define aTHX_
-#endif
-
-#ifndef dTHR
-# define dTHR
-#endif
-
-#ifndef newSVpvn
-# define newSVpvn(a,b) newSVpv(a,b)
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#define DBM_FILTERING
-#define STRICT_CLOSE
-/* #define ALLOW_RECNO_OFFSET */
-/* #define TRACE */
-
-#if DB_VERSION_MAJOR == 2 && ! defined(DB_LOCK_DEADLOCK)
-# define DB_LOCK_DEADLOCK EAGAIN
-#endif /* DB_VERSION_MAJOR == 2 */
-
-#if DB_VERSION_MAJOR == 2
-# define DB_QUEUE 4
-#endif /* DB_VERSION_MAJOR == 2 */
-
-#ifdef AT_LEAST_DB_3_2
-# define DB_callback DB * db,
-#else
-# define DB_callback
-#endif
-
-#if DB_VERSION_MAJOR > 2
-typedef struct {
- int db_lorder;
- size_t db_cachesize;
- size_t db_pagesize;
-
-
- void *(*db_malloc) __P((size_t));
- int (*dup_compare)
- __P((DB_callback const DBT *, const DBT *));
-
- u_int32_t bt_maxkey;
- u_int32_t bt_minkey;
- int (*bt_compare)
- __P((DB_callback const DBT *, const DBT *));
- size_t (*bt_prefix)
- __P((DB_callback const DBT *, const DBT *));
-
- u_int32_t h_ffactor;
- u_int32_t h_nelem;
- u_int32_t (*h_hash)
- __P((DB_callback const void *, u_int32_t));
-
- int re_pad;
- int re_delim;
- u_int32_t re_len;
- char *re_source;
-
-#define DB_DELIMITER 0x0001
-#define DB_FIXEDLEN 0x0008
-#define DB_PAD 0x0010
- u_int32_t flags;
- u_int32_t q_extentsize;
-} DB_INFO ;
-
-#endif /* DB_VERSION_MAJOR > 2 */
-
-typedef struct {
- int Status ;
- /* char ErrBuff[1000] ; */
- SV * ErrPrefix ;
- SV * ErrHandle ;
- DB_ENV * Env ;
- int open_dbs ;
- int TxnMgrStatus ;
- int active ;
- bool txn_enabled ;
- } BerkeleyDB_ENV_type ;
-
-
-typedef struct {
- DBTYPE type ;
- bool recno_or_queue ;
- char * filename ;
- BerkeleyDB_ENV_type * parent_env ;
- DB * dbp ;
- SV * compare ;
- SV * dup_compare ;
- SV * prefix ;
- SV * hash ;
- int Status ;
- DB_INFO * info ;
- DBC * cursor ;
- DB_TXN * txn ;
- int open_cursors ;
- u_int32_t partial ;
- u_int32_t dlen ;
- u_int32_t doff ;
- int active ;
-#ifdef ALLOW_RECNO_OFFSET
- int array_base ;
-#endif
-#ifdef DBM_FILTERING
- SV * filter_fetch_key ;
- SV * filter_store_key ;
- SV * filter_fetch_value ;
- SV * filter_store_value ;
- int filtering ;
-#endif
- } BerkeleyDB_type;
-
-
-typedef struct {
- DBTYPE type ;
- bool recno_or_queue ;
- char * filename ;
- DB * dbp ;
- SV * compare ;
- SV * dup_compare ;
- SV * prefix ;
- SV * hash ;
- int Status ;
- DB_INFO * info ;
- DBC * cursor ;
- DB_TXN * txn ;
- BerkeleyDB_type * parent_db ;
- u_int32_t partial ;
- u_int32_t dlen ;
- u_int32_t doff ;
- int active ;
-#ifdef ALLOW_RECNO_OFFSET
- int array_base ;
-#endif
-#ifdef DBM_FILTERING
- SV * filter_fetch_key ;
- SV * filter_store_key ;
- SV * filter_fetch_value ;
- SV * filter_store_value ;
- int filtering ;
-#endif
- } BerkeleyDB_Cursor_type;
-
-typedef struct {
- BerkeleyDB_ENV_type * env ;
- } BerkeleyDB_TxnMgr_type ;
-
-#if 1
-typedef struct {
- int Status ;
- DB_TXN * txn ;
- int active ;
- } BerkeleyDB_Txn_type ;
-#else
-typedef DB_TXN BerkeleyDB_Txn_type ;
-#endif
-
-typedef BerkeleyDB_ENV_type * BerkeleyDB__Env ;
-typedef BerkeleyDB_ENV_type * BerkeleyDB__Env__Raw ;
-typedef BerkeleyDB_ENV_type * BerkeleyDB__Env__Inner ;
-typedef BerkeleyDB_type * BerkeleyDB ;
-typedef void * BerkeleyDB__Raw ;
-typedef BerkeleyDB_type * BerkeleyDB__Common ;
-typedef BerkeleyDB_type * BerkeleyDB__Common__Raw ;
-typedef BerkeleyDB_type * BerkeleyDB__Common__Inner ;
-typedef BerkeleyDB_type * BerkeleyDB__Hash ;
-typedef BerkeleyDB_type * BerkeleyDB__Hash__Raw ;
-typedef BerkeleyDB_type * BerkeleyDB__Btree ;
-typedef BerkeleyDB_type * BerkeleyDB__Btree__Raw ;
-typedef BerkeleyDB_type * BerkeleyDB__Recno ;
-typedef BerkeleyDB_type * BerkeleyDB__Recno__Raw ;
-typedef BerkeleyDB_type * BerkeleyDB__Queue ;
-typedef BerkeleyDB_type * BerkeleyDB__Queue__Raw ;
-typedef BerkeleyDB_Cursor_type BerkeleyDB__Cursor_type ;
-typedef BerkeleyDB_Cursor_type * BerkeleyDB__Cursor ;
-typedef BerkeleyDB_Cursor_type * BerkeleyDB__Cursor__Raw ;
-typedef BerkeleyDB_TxnMgr_type * BerkeleyDB__TxnMgr ;
-typedef BerkeleyDB_TxnMgr_type * BerkeleyDB__TxnMgr__Raw ;
-typedef BerkeleyDB_TxnMgr_type * BerkeleyDB__TxnMgr__Inner ;
-typedef BerkeleyDB_Txn_type * BerkeleyDB__Txn ;
-typedef BerkeleyDB_Txn_type * BerkeleyDB__Txn__Raw ;
-typedef BerkeleyDB_Txn_type * BerkeleyDB__Txn__Inner ;
-#if 0
-typedef DB_LOG * BerkeleyDB__Log ;
-typedef DB_LOCKTAB * BerkeleyDB__Lock ;
-#endif
-typedef DBT DBTKEY ;
-typedef DBT DBT_OPT ;
-typedef DBT DBT_B ;
-typedef DBT DBTKEY_B ;
-typedef DBT DBTVALUE ;
-typedef void * PV_or_NULL ;
-typedef PerlIO * IO_or_NULL ;
-typedef int DualType ;
-
-static void
-hash_delete(char * hash, IV key);
-
-#ifdef TRACE
-# define Trace(x) printf x
-#else
-# define Trace(x)
-#endif
-
-#ifdef ALLOW_RECNO_OFFSET
-# define RECNO_BASE db->array_base
-#else
-# define RECNO_BASE 1
-#endif
-
-#if DB_VERSION_MAJOR == 2
-# define flagSet_DB2(i, f) i |= f
-#else
-# define flagSet_DB2(i, f)
-#endif
-
-#if DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR < 5
-# define flagSet(bitmask) (flags & (bitmask))
-#else
-# define flagSet(bitmask) ((flags & DB_OPFLAGS_MASK) == (bitmask))
-#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))), \
- Zero(to,1,typ))
-
-#define DBT_clear(x) Zero(&x, 1, DBT) ;
-
-#if 1
-#define getInnerObject(x) SvIV(*av_fetch((AV*)SvRV(x), 0, FALSE))
-#else
-#define getInnerObject(x) SvIV((SV*)SvRV(sv))
-#endif
-
-#define my_sv_setpvn(sv, d, s) (s ? sv_setpvn(sv, d, s) : sv_setpv(sv, "") )
-
-#define SetValue_iv(i, k) if ((sv = readHash(hash, k)) && sv != &PL_sv_undef) \
- i = SvIV(sv)
-#define SetValue_io(i, k) if ((sv = readHash(hash, k)) && sv != &PL_sv_undef) \
- i = IoOFP(sv_2io(sv))
-#define SetValue_sv(i, k) if ((sv = readHash(hash, k)) && sv != &PL_sv_undef) \
- i = sv
-#define SetValue_pv(i, k,t) if ((sv = readHash(hash, k)) && sv != &PL_sv_undef) \
- i = (t)SvPV(sv,PL_na)
-#define SetValue_pvx(i, k, t) if ((sv = readHash(hash, k)) && sv != &PL_sv_undef) \
- i = (t)SvPVX(sv)
-#define SetValue_ov(i,k,t) if ((sv = readHash(hash, k)) && sv != &PL_sv_undef) {\
- IV tmp = getInnerObject(sv) ; \
- i = (t) tmp ; \
- }
-
-#define SetValue_ovx(i,k,t) if ((sv = readHash(hash, k)) && sv != &PL_sv_undef) {\
- HV * hv = (HV *)GetInternalObject(sv); \
- SV ** svp = hv_fetch(hv, "db", 2, FALSE);\
- IV tmp = SvIV(*svp); \
- i = (t) tmp ; \
- }
-
-#define SetValue_ovX(i,k,t) if ((sv = readHash(hash, k)) && sv != &PL_sv_undef) {\
- IV tmp = SvIV(GetInternalObject(sv));\
- i = (t) tmp ; \
- }
-
-#define LastDBerror DB_RUNRECOVERY
-
-#define setDUALerrno(var, err) \
- sv_setnv(var, (double)err) ; \
- sv_setpv(var, ((err) ? db_strerror(err) : "")) ;\
- SvNOK_on(var);
-
-#define OutputValue(arg, name) \
- { if (RETVAL == 0) { \
- my_sv_setpvn(arg, name.data, name.size) ; \
- ckFilter(arg, filter_fetch_value,"filter_fetch_value") ; \
- } \
- }
-
-#define OutputValue_B(arg, name) \
- { if (RETVAL == 0) { \
- if (db->type == DB_BTREE && \
- flagSet(DB_GET_RECNO)){ \
- sv_setiv(arg, (I32)(*(I32*)name.data) - RECNO_BASE); \
- } \
- else { \
- my_sv_setpvn(arg, name.data, name.size) ; \
- } \
- ckFilter(arg, filter_fetch_value, "filter_fetch_value"); \
- } \
- }
-
-#define OutputKey(arg, name) \
- { if (RETVAL == 0) \
- { \
- if (!db->recno_or_queue) { \
- my_sv_setpvn(arg, name.data, name.size); \
- } \
- else \
- sv_setiv(arg, (I32)*(I32*)name.data - RECNO_BASE); \
- ckFilter(arg, filter_fetch_key, "filter_fetch_key") ; \
- } \
- }
-
-#define OutputKey_B(arg, name) \
- { if (RETVAL == 0) \
- { \
- if (db->recno_or_queue || \
- (db->type == DB_BTREE && \
- flagSet(DB_GET_RECNO))){ \
- sv_setiv(arg, (I32)(*(I32*)name.data) - RECNO_BASE); \
- } \
- else { \
- my_sv_setpvn(arg, name.data, name.size); \
- } \
- ckFilter(arg, filter_fetch_key, "filter_fetch_key") ; \
- } \
- }
-
-#define SetPartial(data,db) \
- data.flags = db->partial ; \
- data.dlen = db->dlen ; \
- data.doff = db->doff ;
-
-#define ckActive(active, type) \
- { \
- if (!active) \
- softCrash("%s is already closed", type) ; \
- }
-
-#define ckActive_Environment(a) ckActive(a, "Environment")
-#define ckActive_TxnMgr(a) ckActive(a, "Transaction Manager")
-#define ckActive_Transaction(a) ckActive(a, "Transaction")
-#define ckActive_Database(a) ckActive(a, "Database")
-#define ckActive_Cursor(a) ckActive(a, "Cursor")
-
-/* Internal Global Data */
-static db_recno_t Value ;
-static db_recno_t zero = 0 ;
-static BerkeleyDB CurrentDB ;
-static DBTKEY empty ;
-static char ErrBuff[1000] ;
-
-static char *
-my_strdup(const char *s)
-{
- if (s == NULL)
- return NULL ;
-
- {
- MEM_SIZE l = strlen(s);
- char *s1 = (char *)safemalloc(l);
-
- Copy(s, s1, (MEM_SIZE)l, char);
- return s1;
- }
-}
-
-#if DB_VERSION_MAJOR == 2
-static char *
-db_strerror(int err)
-{
- if (err == 0)
- return "" ;
-
- if (err > 0)
- return Strerror(err) ;
-
- switch (err) {
- case DB_INCOMPLETE:
- return ("DB_INCOMPLETE: Sync was unable to complete");
- case DB_KEYEMPTY:
- return ("DB_KEYEMPTY: Non-existent key/data pair");
- case DB_KEYEXIST:
- return ("DB_KEYEXIST: Key/data pair already exists");
- case DB_LOCK_DEADLOCK:
- return (
- "DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock");
- case DB_LOCK_NOTGRANTED:
- return ("DB_LOCK_NOTGRANTED: Lock not granted");
- case DB_LOCK_NOTHELD:
- return ("DB_LOCK_NOTHELD: Lock not held by locker");
- case DB_NOTFOUND:
- return ("DB_NOTFOUND: No matching key/data pair found");
- case DB_RUNRECOVERY:
- return ("DB_RUNRECOVERY: Fatal error, run database recovery");
- default:
- return "Unknown Error" ;
-
- }
-}
-#endif /* DB_VERSION_MAJOR == 2 */
-
-static char *
-my_db_strerror(int err)
-{
- static char buffer[1000] ;
- SV * sv = perl_get_sv(ERR_BUFF, FALSE) ;
- sprintf(buffer, "%d: %s", err, db_strerror(err)) ;
- if (err && sv) {
- strcat(buffer, ", ") ;
- strcat(buffer, SvPVX(sv)) ;
- }
- return buffer;
-}
-
-static void
-close_everything(void)
-{
- dTHR;
- Trace(("close_everything\n")) ;
- /* Abort All Transactions */
- {
- BerkeleyDB__Txn__Raw tid ;
- HE * he ;
- I32 len ;
- HV * hv = perl_get_hv("BerkeleyDB::Term::Txn", TRUE);
- I32 ret = hv_iterinit(hv) ;
- int all = 0 ;
- int closed = 0 ;
- Trace(("BerkeleyDB::Term::close_all_txns dirty=%d\n", PL_dirty)) ;
- while ( he = hv_iternext(hv) ) {
- tid = * (BerkeleyDB__Txn__Raw *) (IV) hv_iterkey(he, &len) ;
- Trace((" Aborting Transaction [%d] in [%d] Active [%d]\n", tid->txn, tid, tid->active));
- if (tid->active) {
- txn_abort(tid->txn);
- ++ closed ;
- }
- tid->active = FALSE ;
- ++ all ;
- }
- Trace(("End of BerkeleyDB::Term::close_all_txns aborted %d of %d transactios\n",closed, all)) ;
- }
-
- /* Close All Cursors */
- {
- BerkeleyDB__Cursor db ;
- HE * he ;
- I32 len ;
- HV * hv = perl_get_hv("BerkeleyDB::Term::Cursor", TRUE);
- I32 ret = hv_iterinit(hv) ;
- int all = 0 ;
- int closed = 0 ;
- Trace(("BerkeleyDB::Term::close_all_cursors \n")) ;
- while ( he = hv_iternext(hv) ) {
- db = * (BerkeleyDB__Cursor*) (IV) hv_iterkey(he, &len) ;
- Trace((" Closing Cursor [%d] in [%d] Active [%d]\n", db->cursor, db, db->active));
- if (db->active) {
- ((db->cursor)->c_close)(db->cursor) ;
- ++ closed ;
- }
- db->active = FALSE ;
- ++ all ;
- }
- Trace(("End of BerkeleyDB::Term::close_all_cursors closed %d of %d cursors\n",closed, all)) ;
- }
-
- /* Close All Databases */
- {
- BerkeleyDB db ;
- HE * he ;
- I32 len ;
- HV * hv = perl_get_hv("BerkeleyDB::Term::Db", TRUE);
- I32 ret = hv_iterinit(hv) ;
- int all = 0 ;
- int closed = 0 ;
- Trace(("BerkeleyDB::Term::close_all_dbs\n" )) ;
- while ( he = hv_iternext(hv) ) {
- db = * (BerkeleyDB*) (IV) hv_iterkey(he, &len) ;
- Trace((" Closing Database [%d] in [%d] Active [%d]\n", db->dbp, db, db->active));
- if (db->active) {
- (db->dbp->close)(db->dbp, 0) ;
- ++ closed ;
- }
- db->active = FALSE ;
- ++ all ;
- }
- Trace(("End of BerkeleyDB::Term::close_all_dbs closed %d of %d dbs\n",closed, all)) ;
- }
-
- /* Close All Environments */
- {
- BerkeleyDB__Env env ;
- HE * he ;
- I32 len ;
- HV * hv = perl_get_hv("BerkeleyDB::Term::Env", TRUE);
- I32 ret = hv_iterinit(hv) ;
- int all = 0 ;
- int closed = 0 ;
- Trace(("BerkeleyDB::Term::close_all_envs\n")) ;
- while ( he = hv_iternext(hv) ) {
- env = * (BerkeleyDB__Env*) (IV) hv_iterkey(he, &len) ;
- Trace((" Closing Environment [%d] in [%d] Active [%d]\n", env->Env, env, env->active));
- if (env->active) {
-#if DB_VERSION_MAJOR == 2
- db_appexit(env->Env) ;
-#else
- (env->Env->close)(env->Env, 0) ;
-#endif
- ++ closed ;
- }
- env->active = FALSE ;
- ++ all ;
- }
- Trace(("End of BerkeleyDB::Term::close_all_envs closed %d of %d dbs\n",closed, all)) ;
- }
-
- Trace(("end close_everything\n")) ;
-
-}
-
-static void
-destroyDB(BerkeleyDB db)
-{
- dTHR;
- if (! PL_dirty && db->active) {
- -- db->open_cursors ;
- ((db->dbp)->close)(db->dbp, 0) ;
- }
- if (db->hash)
- SvREFCNT_dec(db->hash) ;
- if (db->compare)
- SvREFCNT_dec(db->compare) ;
- if (db->dup_compare)
- SvREFCNT_dec(db->dup_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)
- SvREFCNT_dec(db->filter_store_key) ;
- if (db->filter_fetch_value)
- SvREFCNT_dec(db->filter_fetch_value) ;
- if (db->filter_store_value)
- SvREFCNT_dec(db->filter_store_value) ;
-#endif
- hash_delete("BerkeleyDB::Term::Db", (IV)db) ;
- if (db->filename)
- Safefree(db->filename) ;
- Safefree(db) ;
-}
-
-static void
-softCrash(const char *pat, ...)
-{
- char buffer1 [500] ;
- char buffer2 [500] ;
- va_list args;
- va_start(args, pat);
-
- Trace(("softCrash: %s\n", pat)) ;
-
-#define ABORT_PREFIX "BerkeleyDB Aborting: "
-
- /* buffer = (char*) safemalloc(strlen(pat) + strlen(ABORT_PREFIX) + 1) ; */
- strcpy(buffer1, ABORT_PREFIX) ;
- strcat(buffer1, pat) ;
-
- vsprintf(buffer2, buffer1, args) ;
-
- croak(buffer2);
-
- /* NOTREACHED */
- va_end(args);
-}
-
-
-static I32
-GetArrayLength(BerkeleyDB db)
-{
- DBT key ;
- DBT value ;
- int RETVAL = 0 ;
- DBC * cursor ;
-
- DBT_clear(key) ;
- DBT_clear(value) ;
-#if DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR < 6
- if ( ((db->dbp)->cursor)(db->dbp, db->txn, &cursor) == 0 )
-#else
- if ( ((db->dbp)->cursor)(db->dbp, db->txn, &cursor, 0) == 0 )
-#endif
- {
- RETVAL = cursor->c_get(cursor, &key, &value, DB_LAST) ;
- if (RETVAL == 0)
- RETVAL = *(I32 *)key.data ;
- else /* No key means empty file */
- RETVAL = 0 ;
- cursor->c_close(cursor) ;
- }
-
- Trace(("GetArrayLength got %d\n", RETVAL)) ;
- return ((I32)RETVAL) ;
-}
-
-#if 0
-
-#define GetRecnoKey(db, value) _GetRecnoKey(db, value)
-
-static db_recno_t
-_GetRecnoKey(BerkeleyDB db, I32 value)
-{
- Trace(("GetRecnoKey start value = %d\n", value)) ;
- if (db->recno_or_queue && value < 0) {
- /* Get the length of the array */
- I32 length = GetArrayLength(db) ;
-
- /* check for attempt to write before start of array */
- if (length + value + RECNO_BASE <= 0)
- softCrash("Modification of non-creatable array value attempted, subscript %ld", (long)value) ;
-
- value = length + value + RECNO_BASE ;
- }
- else
- ++ value ;
-
- Trace(("GetRecnoKey end value = %d\n", value)) ;
-
- return value ;
-}
-
-#else /* ! 0 */
-
-#if 0
-#ifdef ALLOW_RECNO_OFFSET
-#define GetRecnoKey(db, value) _GetRecnoKey(db, value)
-
-static db_recno_t
-_GetRecnoKey(BerkeleyDB db, I32 value)
-{
- if (value + RECNO_BASE < 1)
- softCrash("key value %d < base (%d)", (value), RECNO_BASE?0:1) ;
- return value + RECNO_BASE ;
-}
-
-#else
-#endif /* ALLOW_RECNO_OFFSET */
-#endif /* 0 */
-
-#define GetRecnoKey(db, value) ((value) + RECNO_BASE )
-
-#endif /* 0 */
-
-static SV *
-GetInternalObject(SV * sv)
-{
- SV * info = (SV*) NULL ;
- SV * s ;
- MAGIC * mg ;
-
- Trace(("in GetInternalObject %d\n", sv)) ;
- if (sv == NULL || !SvROK(sv))
- return NULL ;
-
- s = SvRV(sv) ;
- if (SvMAGICAL(s))
- {
- if (SvTYPE(s) == SVt_PVHV || SvTYPE(s) == SVt_PVAV)
- mg = mg_find(s, 'P') ;
- else
- mg = mg_find(s, 'q') ;
-
- /* all this testing is probably overkill, but till I know more
- about global destruction it stays.
- */
- /* if (mg && mg->mg_obj && SvRV(mg->mg_obj) && SvPVX(SvRV(mg->mg_obj))) */
- if (mg && mg->mg_obj && SvRV(mg->mg_obj) )
- info = SvRV(mg->mg_obj) ;
- else
- info = s ;
- }
-
- Trace(("end of GetInternalObject %d\n", info)) ;
- return info ;
-}
-
-static int
-btree_compare(DB_callback const DBT * key1, const DBT * key2 )
-{
- dSP ;
- void * data1, * data2 ;
- int retval ;
- int count ;
-
- data1 = key1->data ;
- data2 = key2->data ;
-
-#ifndef newSVpvn
- /* As newSVpv will assume that the data pointer is a null terminated C
- string if the size parameter is 0, make sure that data points to an
- empty string if the length is 0
- */
- if (key1->size == 0)
- data1 = "" ;
- if (key2->size == 0)
- data2 = "" ;
-#endif
-
- ENTER ;
- SAVETMPS;
-
- PUSHMARK(SP) ;
- EXTEND(SP,2) ;
- PUSHs(sv_2mortal(newSVpvn(data1,key1->size)));
- PUSHs(sv_2mortal(newSVpvn(data2,key2->size)));
- PUTBACK ;
-
- count = perl_call_sv(CurrentDB->compare, G_SCALAR);
-
- SPAGAIN ;
-
- if (count != 1)
- softCrash ("in btree_compare - expected 1 return value from compare sub, got %d", count) ;
-
- retval = POPi ;
-
- PUTBACK ;
- FREETMPS ;
- LEAVE ;
- return (retval) ;
-
-}
-
-static int
-dup_compare(DB_callback const DBT * key1, const DBT * key2 )
-{
- dSP ;
- void * data1, * data2 ;
- int retval ;
- int count ;
-
- Trace(("In dup_compare \n")) ;
- if (!CurrentDB)
- softCrash("Internal Error - No CurrentDB in dup_compare") ;
- if (CurrentDB->dup_compare == NULL)
- softCrash("in dup_compare: no callback specified for database '%s'", CurrentDB->filename) ;
-
- data1 = key1->data ;
- data2 = key2->data ;
-
-#ifndef newSVpvn
- /* As newSVpv will assume that the data pointer is a null terminated C
- string if the size parameter is 0, make sure that data points to an
- empty string if the length is 0
- */
- if (key1->size == 0)
- data1 = "" ;
- if (key2->size == 0)
- data2 = "" ;
-#endif
-
- ENTER ;
- SAVETMPS;
-
- PUSHMARK(SP) ;
- EXTEND(SP,2) ;
- PUSHs(sv_2mortal(newSVpvn(data1,key1->size)));
- PUSHs(sv_2mortal(newSVpvn(data2,key2->size)));
- PUTBACK ;
-
- count = perl_call_sv(CurrentDB->dup_compare, G_SCALAR);
-
- SPAGAIN ;
-
- if (count != 1)
- softCrash ("dup_compare: expected 1 return value from compare sub, got %d", count) ;
-
- retval = POPi ;
-
- PUTBACK ;
- FREETMPS ;
- LEAVE ;
- return (retval) ;
-
-}
-
-static size_t
-btree_prefix(DB_callback const DBT * key1, const DBT * key2 )
-{
- dSP ;
- void * data1, * data2 ;
- int retval ;
- int count ;
-
- data1 = key1->data ;
- data2 = key2->data ;
-
-#ifndef newSVpvn
- /* As newSVpv will assume that the data pointer is a null terminated C
- string if the size parameter is 0, make sure that data points to an
- empty string if the length is 0
- */
- if (key1->size == 0)
- data1 = "" ;
- if (key2->size == 0)
- data2 = "" ;
-#endif
-
- ENTER ;
- SAVETMPS;
-
- PUSHMARK(SP) ;
- EXTEND(SP,2) ;
- PUSHs(sv_2mortal(newSVpvn(data1,key1->size)));
- PUSHs(sv_2mortal(newSVpvn(data2,key2->size)));
- PUTBACK ;
-
- count = perl_call_sv(CurrentDB->prefix, G_SCALAR);
-
- SPAGAIN ;
-
- if (count != 1)
- softCrash ("btree_prefix: expected 1 return value from prefix sub, got %d", count) ;
-
- retval = POPi ;
-
- PUTBACK ;
- FREETMPS ;
- LEAVE ;
-
- return (retval) ;
-}
-
-static u_int32_t
-hash_cb(DB_callback const void * data, u_int32_t size)
-{
- dSP ;
- int retval ;
- int count ;
-
-#ifndef newSVpvn
- if (size == 0)
- data = "" ;
-#endif
-
- ENTER ;
- SAVETMPS;
-
- PUSHMARK(SP) ;
-
- XPUSHs(sv_2mortal(newSVpvn((char*)data,size)));
- PUTBACK ;
-
- count = perl_call_sv(CurrentDB->hash, G_SCALAR);
-
- SPAGAIN ;
-
- if (count != 1)
- softCrash ("hash_cb: expected 1 return value from hash sub, got %d", count) ;
-
- retval = POPi ;
-
- PUTBACK ;
- FREETMPS ;
- LEAVE ;
-
- return (retval) ;
-}
-
-static void
-db_errcall_cb(const char * db_errpfx, char * buffer)
-{
-#if 0
-
- if (db_errpfx == NULL)
- db_errpfx = "" ;
- if (buffer == NULL )
- buffer = "" ;
- ErrBuff[0] = '\0';
- if (strlen(db_errpfx) + strlen(buffer) + 3 <= 1000) {
- if (*db_errpfx != '\0') {
- strcat(ErrBuff, db_errpfx) ;
- strcat(ErrBuff, ": ") ;
- }
- strcat(ErrBuff, 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) ;
- }
-}
-
-static SV *
-readHash(HV * hash, char * key)
-{
- SV ** svp;
- svp = hv_fetch(hash, key, strlen(key), FALSE);
- if (svp && SvOK(*svp))
- return *svp ;
- return NULL ;
-}
-
-static void
-hash_delete(char * hash, IV key)
-{
- HV * hv = perl_get_hv(hash, TRUE);
- (void) hv_delete(hv, (char*)&key, sizeof(key), G_DISCARD);
-}
-
-static void
-hash_store_iv(char * hash, IV key, IV value)
-{
- HV * hv = perl_get_hv(hash, TRUE);
- SV ** ret = hv_store(hv, (char*)&key, sizeof(key), newSViv(value), 0);
- /* printf("hv_store returned %d\n", ret) ; */
-}
-
-static void
-hv_store_iv(HV * hash, char * key, IV value)
-{
- hv_store(hash, key, strlen(key), newSViv(value), 0);
-}
-
-static BerkeleyDB
-my_db_open(
- BerkeleyDB db ,
- SV * ref,
- SV * ref_dbenv ,
- BerkeleyDB__Env dbenv ,
- const char * file,
- const char * subname,
- DBTYPE type,
- int flags,
- int mode,
- DB_INFO * info
- )
-{
- DB_ENV * env = NULL ;
- BerkeleyDB RETVAL = NULL ;
- DB * dbp ;
- int Status ;
-
- Trace(("_db_open(dbenv[%lu] ref_dbenv [%lu] file[%s] subname [%s] type[%d] flags[%d] mode[%d]\n",
- dbenv, ref_dbenv, file, subname, type, flags, mode)) ;
-
- CurrentDB = db ;
- if (dbenv)
- env = dbenv->Env ;
-
-#if DB_VERSION_MAJOR == 2
- if (subname)
- softCrash("Subname needs Berkeley DB 3 or better") ;
-#endif
-
-#if DB_VERSION_MAJOR > 2
- Status = db_create(&dbp, env, 0) ;
- Trace(("db_create returned %s\n", my_db_strerror(Status))) ;
- if (Status)
- return RETVAL ;
-
- if (info->re_source) {
- Status = dbp->set_re_source(dbp, info->re_source) ;
- Trace(("set_re_source [%s] returned %s\n",
- info->re_source, my_db_strerror(Status)));
- if (Status)
- return RETVAL ;
- }
-
- if (info->db_cachesize) {
- Status = dbp->set_cachesize(dbp, 0, info->db_cachesize, 0) ;
- Trace(("set_cachesize [%d] returned %s\n",
- info->db_cachesize, my_db_strerror(Status)));
- if (Status)
- return RETVAL ;
- }
-
- if (info->db_lorder) {
- Status = dbp->set_lorder(dbp, info->db_lorder) ;
- Trace(("set_lorder [%d] returned %s\n",
- info->db_lorder, my_db_strerror(Status)));
- if (Status)
- return RETVAL ;
- }
-
- if (info->db_pagesize) {
- Status = dbp->set_pagesize(dbp, info->db_pagesize) ;
- Trace(("set_pagesize [%d] returned %s\n",
- info->db_pagesize, my_db_strerror(Status)));
- if (Status)
- return RETVAL ;
- }
-
- if (info->h_ffactor) {
- Status = dbp->set_h_ffactor(dbp, info->h_ffactor) ;
- Trace(("set_h_ffactor [%d] returned %s\n",
- info->h_ffactor, my_db_strerror(Status)));
- if (Status)
- return RETVAL ;
- }
-
- if (info->h_nelem) {
- Status = dbp->set_h_nelem(dbp, info->h_nelem) ;
- Trace(("set_h_nelem [%d] returned %s\n",
- info->h_nelem, my_db_strerror(Status)));
- if (Status)
- return RETVAL ;
- }
-
- if (info->bt_minkey) {
- Status = dbp->set_bt_minkey(dbp, info->bt_minkey) ;
- Trace(("set_bt_minkey [%d] returned %s\n",
- info->bt_minkey, my_db_strerror(Status)));
- if (Status)
- return RETVAL ;
- }
-
- if (info->bt_compare) {
- Status = dbp->set_bt_compare(dbp, info->bt_compare) ;
- Trace(("set_bt_compare [%d] returned %s\n",
- info->bt_compare, my_db_strerror(Status)));
- if (Status)
- return RETVAL ;
- }
-
- if (info->h_hash) {
- Status = dbp->set_h_hash(dbp, info->h_hash) ;
- Trace(("set_h_hash [%d] returned %s\n",
- info->h_hash, my_db_strerror(Status)));
- if (Status)
- return RETVAL ;
- }
-
- if (info->dup_compare) {
- Status = dbp->set_dup_compare(dbp, info->dup_compare) ;
- Trace(("set_dup_compare [%d] returned %s\n",
- info->dup_compare, my_db_strerror(Status)));
- if (Status)
- return RETVAL ;
- }
-
- if (info->bt_prefix) {
- Status = dbp->set_bt_prefix(dbp, info->bt_prefix) ;
- Trace(("set_bt_prefix [%d] returned %s\n",
- info->bt_prefix, my_db_strerror(Status)));
- if (Status)
- return RETVAL ;
- }
-
- if (info->re_len) {
- Status = dbp->set_re_len(dbp, info->re_len) ;
- Trace(("set_re_len [%d] returned %s\n",
- info->re_len, my_db_strerror(Status)));
- if (Status)
- return RETVAL ;
- }
-
- if (info->re_delim) {
- Status = dbp->set_re_delim(dbp, info->re_delim) ;
- Trace(("set_re_delim [%d] returned %s\n",
- info->re_delim, my_db_strerror(Status)));
- if (Status)
- return RETVAL ;
- }
-
- if (info->re_pad) {
- Status = dbp->set_re_pad(dbp, info->re_pad) ;
- Trace(("set_re_pad [%d] returned %s\n",
- info->re_pad, my_db_strerror(Status)));
- if (Status)
- return RETVAL ;
- }
-
- if (info->flags) {
- Status = dbp->set_flags(dbp, info->flags) ;
- Trace(("set_flags [%d] returned %s\n",
- info->flags, my_db_strerror(Status)));
- if (Status)
- return RETVAL ;
- }
-
- if (info->q_extentsize) {
-#ifdef AT_LEAST_DB_3_2
- Status = dbp->set_q_extentsize(dbp, info->q_extentsize) ;
- Trace(("set_flags [%d] returned %s\n",
- info->flags, my_db_strerror(Status)));
- if (Status)
- return RETVAL ;
-#else
- softCrash("-ExtentSize needs at least Berkeley DB 3.2.x") ;
-#endif
- }
-
- if ((Status = (dbp->open)(dbp, file, subname, type, flags, mode)) == 0) {
-#else /* DB_VERSION_MAJOR == 2 */
- if ((Status = db_open(file, type, flags, mode, env, info, &dbp)) == 0) {
-#endif /* DB_VERSION_MAJOR == 2 */
-
- Trace(("db_opened\n"));
- RETVAL = db ;
- RETVAL->dbp = dbp ;
-#if DB_VERSION_MAJOR == 2
- RETVAL->type = dbp->type ;
-#else /* DB_VERSION_MAJOR > 2 */
- RETVAL->type = dbp->get_type(dbp) ;
-#endif /* DB_VERSION_MAJOR > 2 */
- RETVAL->recno_or_queue = (RETVAL->type == DB_RECNO ||
- RETVAL->type == DB_QUEUE) ;
- RETVAL->filename = my_strdup(file) ;
- RETVAL->Status = Status ;
- RETVAL->active = TRUE ;
- hash_store_iv("BerkeleyDB::Term::Db", (IV)RETVAL, 1) ;
- Trace((" storing %d %d in BerkeleyDB::Term::Db\n", RETVAL, dbp)) ;
- if (dbenv) {
- RETVAL->parent_env = dbenv ;
- dbenv->Status = Status ;
- ++ dbenv->open_dbs ;
- }
- }
- else {
-#if DB_VERSION_MAJOR > 2
- (dbp->close)(dbp, 0) ;
-#endif
- destroyDB(db) ;
- Trace(("db open returned %s\n", my_db_strerror(Status))) ;
- }
-
- return RETVAL ;
-}
-
-static double
-constant(char * name, int arg)
-{
- errno = 0;
- switch (*name) {
- case 'A':
- break;
- case 'B':
- break;
- case 'C':
- break;
- case 'D':
- if (strEQ(name, "DB_AFTER"))
-#ifdef DB_AFTER
- return DB_AFTER;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_APPEND"))
-#ifdef DB_APPEND
- return DB_APPEND;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_ARCH_ABS"))
-#ifdef DB_ARCH_ABS
- return DB_ARCH_ABS;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_ARCH_DATA"))
-#ifdef DB_ARCH_DATA
- return DB_ARCH_DATA;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_ARCH_LOG"))
-#ifdef DB_ARCH_LOG
- return DB_ARCH_LOG;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_BEFORE"))
-#ifdef DB_BEFORE
- return DB_BEFORE;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_BTREE"))
- return DB_BTREE;
- if (strEQ(name, "DB_BTREEMAGIC"))
-#ifdef DB_BTREEMAGIC
- return DB_BTREEMAGIC;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_BTREEOLDVER"))
-#ifdef DB_BTREEOLDVER
- return DB_BTREEOLDVER;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_BTREEVERSION"))
-#ifdef DB_BTREEVERSION
- return DB_BTREEVERSION;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_CHECKPOINT"))
-#ifdef DB_CHECKPOINT
- return DB_CHECKPOINT;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_CONSUME"))
-#ifdef DB_CONSUME
- return DB_CONSUME;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_CREATE"))
-#ifdef DB_CREATE
- return DB_CREATE;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_CURLSN"))
-#ifdef DB_CURLSN
- return DB_CURLSN;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_CURRENT"))
-#ifdef DB_CURRENT
- return DB_CURRENT;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_DBT_MALLOC"))
-#ifdef DB_DBT_MALLOC
- return DB_DBT_MALLOC;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_DBT_PARTIAL"))
-#ifdef DB_DBT_PARTIAL
- return DB_DBT_PARTIAL;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_DBT_USERMEM"))
-#ifdef DB_DBT_USERMEM
- return DB_DBT_USERMEM;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_DELETED"))
-#ifdef DB_DELETED
- return DB_DELETED;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_DELIMITER"))
-#ifdef DB_DELIMITER
- return DB_DELIMITER;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_DUP"))
-#ifdef DB_DUP
- return DB_DUP;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_DUPSORT"))
-#ifdef DB_DUPSORT
- return DB_DUPSORT;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_ENV_APPINIT"))
-#ifdef DB_ENV_APPINIT
- return DB_ENV_APPINIT;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_ENV_STANDALONE"))
-#ifdef DB_ENV_STANDALONE
- return DB_ENV_STANDALONE;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_ENV_THREAD"))
-#ifdef DB_ENV_THREAD
- return DB_ENV_THREAD;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_EXCL"))
-#ifdef DB_EXCL
- return DB_EXCL;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_FILE_ID_LEN"))
-#ifdef DB_FILE_ID_LEN
- return DB_FILE_ID_LEN;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_FIRST"))
-#ifdef DB_FIRST
- return DB_FIRST;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_FIXEDLEN"))
-#ifdef DB_FIXEDLEN
- return DB_FIXEDLEN;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_FLUSH"))
-#ifdef DB_FLUSH
- return DB_FLUSH;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_FORCE"))
-#ifdef DB_FORCE
- return DB_FORCE;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_GET_BOTH"))
-#ifdef DB_GET_BOTH
- return DB_GET_BOTH;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_GET_RECNO"))
-#ifdef DB_GET_RECNO
- return DB_GET_RECNO;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_HASH"))
- return DB_HASH;
- if (strEQ(name, "DB_HASHMAGIC"))
-#ifdef DB_HASHMAGIC
- return DB_HASHMAGIC;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_HASHOLDVER"))
-#ifdef DB_HASHOLDVER
- return DB_HASHOLDVER;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_HASHVERSION"))
-#ifdef DB_HASHVERSION
- return DB_HASHVERSION;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_INCOMPLETE"))
-#ifdef DB_INCOMPLETE
- return DB_INCOMPLETE;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_INIT_CDB"))
-#ifdef DB_INIT_CDB
- return DB_INIT_CDB;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_INIT_LOCK"))
-#ifdef DB_INIT_LOCK
- return DB_INIT_LOCK;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_INIT_LOG"))
-#ifdef DB_INIT_LOG
- return DB_INIT_LOG;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_INIT_MPOOL"))
-#ifdef DB_INIT_MPOOL
- return DB_INIT_MPOOL;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_INIT_TXN"))
-#ifdef DB_INIT_TXN
- return DB_INIT_TXN;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_JOIN_ITEM"))
-#ifdef DB_JOIN_ITEM
- return DB_JOIN_ITEM;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_KEYEMPTY"))
-#ifdef DB_KEYEMPTY
- return DB_KEYEMPTY;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_KEYEXIST"))
-#ifdef DB_KEYEXIST
- return DB_KEYEXIST;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_KEYFIRST"))
-#ifdef DB_KEYFIRST
- return DB_KEYFIRST;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_KEYLAST"))
-#ifdef DB_KEYLAST
- return DB_KEYLAST;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_LAST"))
-#ifdef DB_LAST
- return DB_LAST;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_LOCKMAGIC"))
-#ifdef DB_LOCKMAGIC
- return DB_LOCKMAGIC;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_LOCKVERSION"))
-#ifdef DB_LOCKVERSION
- return DB_LOCKVERSION;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_LOCK_CONFLICT"))
-#ifdef DB_LOCK_CONFLICT
- return DB_LOCK_CONFLICT;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_LOCK_DEADLOCK"))
-#ifdef DB_LOCK_DEADLOCK
- return DB_LOCK_DEADLOCK;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_LOCK_DEFAULT"))
-#ifdef DB_LOCK_DEFAULT
- return DB_LOCK_DEFAULT;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_LOCK_GET"))
- return DB_LOCK_GET;
- if (strEQ(name, "DB_LOCK_NORUN"))
-#ifdef DB_LOCK_NORUN
- return DB_LOCK_NORUN;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_LOCK_NOTGRANTED"))
-#ifdef DB_LOCK_NOTGRANTED
- return DB_LOCK_NOTGRANTED;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_LOCK_NOTHELD"))
-#ifdef DB_LOCK_NOTHELD
- return DB_LOCK_NOTHELD;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_LOCK_NOWAIT"))
-#ifdef DB_LOCK_NOWAIT
- return DB_LOCK_NOWAIT;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_LOCK_OLDEST"))
-#ifdef DB_LOCK_OLDEST
- return DB_LOCK_OLDEST;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_LOCK_RANDOM"))
-#ifdef DB_LOCK_RANDOM
- return DB_LOCK_RANDOM;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_LOCK_RIW_N"))
-#ifdef DB_LOCK_RIW_N
- return DB_LOCK_RIW_N;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_LOCK_RW_N"))
-#ifdef DB_LOCK_RW_N
- return DB_LOCK_RW_N;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_LOCK_YOUNGEST"))
-#ifdef DB_LOCK_YOUNGEST
- return DB_LOCK_YOUNGEST;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_LOGMAGIC"))
-#ifdef DB_LOGMAGIC
- return DB_LOGMAGIC;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_LOGOLDVER"))
-#ifdef DB_LOGOLDVER
- return DB_LOGOLDVER;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_MAX_PAGES"))
-#ifdef DB_MAX_PAGES
- return DB_MAX_PAGES;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_MAX_RECORDS"))
-#ifdef DB_MAX_RECORDS
- return DB_MAX_RECORDS;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_MPOOL_CLEAN"))
-#ifdef DB_MPOOL_CLEAN
- return DB_MPOOL_CLEAN;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_MPOOL_CREATE"))
-#ifdef DB_MPOOL_CREATE
- return DB_MPOOL_CREATE;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_MPOOL_DIRTY"))
-#ifdef DB_MPOOL_DIRTY
- return DB_MPOOL_DIRTY;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_MPOOL_DISCARD"))
-#ifdef DB_MPOOL_DISCARD
- return DB_MPOOL_DISCARD;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_MPOOL_LAST"))
-#ifdef DB_MPOOL_LAST
- return DB_MPOOL_LAST;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_MPOOL_NEW"))
-#ifdef DB_MPOOL_NEW
- return DB_MPOOL_NEW;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_MPOOL_PRIVATE"))
-#ifdef DB_MPOOL_PRIVATE
- return DB_MPOOL_PRIVATE;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_MUTEXDEBUG"))
-#ifdef DB_MUTEXDEBUG
- return DB_MUTEXDEBUG;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_MUTEXLOCKS"))
-#ifdef DB_MUTEXLOCKS
- return DB_MUTEXLOCKS;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_NEEDSPLIT"))
-#ifdef DB_NEEDSPLIT
- return DB_NEEDSPLIT;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_NEXT"))
-#ifdef DB_NEXT
- return DB_NEXT;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_NEXT_DUP"))
-#ifdef DB_NEXT_DUP
- return DB_NEXT_DUP;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_NOMMAP"))
-#ifdef DB_NOMMAP
- return DB_NOMMAP;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_NOOVERWRITE"))
-#ifdef DB_NOOVERWRITE
- return DB_NOOVERWRITE;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_NOSYNC"))
-#ifdef DB_NOSYNC
- return DB_NOSYNC;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_NOTFOUND"))
-#ifdef DB_NOTFOUND
- return DB_NOTFOUND;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_PAD"))
-#ifdef DB_PAD
- return DB_PAD;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_PAGEYIELD"))
-#ifdef DB_PAGEYIELD
- return DB_PAGEYIELD;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_POSITION"))
-#ifdef DB_POSITION
- return DB_POSITION;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_PREV"))
-#ifdef DB_PREV
- return DB_PREV;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_PRIVATE"))
-#ifdef DB_PRIVATE
- return DB_PRIVATE;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_QUEUE"))
- return DB_QUEUE;
- if (strEQ(name, "DB_RDONLY"))
-#ifdef DB_RDONLY
- return DB_RDONLY;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_RECNO"))
- return DB_RECNO;
- if (strEQ(name, "DB_RECNUM"))
-#ifdef DB_RECNUM
- return DB_RECNUM;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_RECORDCOUNT"))
-#ifdef DB_RECORDCOUNT
- return DB_RECORDCOUNT;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_RECOVER"))
-#ifdef DB_RECOVER
- return DB_RECOVER;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_RECOVER_FATAL"))
-#ifdef DB_RECOVER_FATAL
- return DB_RECOVER_FATAL;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_REGISTERED"))
-#ifdef DB_REGISTERED
- return DB_REGISTERED;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_RENUMBER"))
-#ifdef DB_RENUMBER
- return DB_RENUMBER;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_RMW"))
-#ifdef DB_RMW
- return DB_RMW;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_RUNRECOVERY"))
-#ifdef DB_RUNRECOVERY
- return DB_RUNRECOVERY;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_SEQUENTIAL"))
-#ifdef DB_SEQUENTIAL
- return DB_SEQUENTIAL;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_SET"))
-#ifdef DB_SET
- return DB_SET;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_SET_RANGE"))
-#ifdef DB_SET_RANGE
- return DB_SET_RANGE;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_SET_RECNO"))
-#ifdef DB_SET_RECNO
- return DB_SET_RECNO;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_SNAPSHOT"))
-#ifdef DB_SNAPSHOT
- return DB_SNAPSHOT;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_SWAPBYTES"))
-#ifdef DB_SWAPBYTES
- return DB_SWAPBYTES;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_TEMPORARY"))
-#ifdef DB_TEMPORARY
- return DB_TEMPORARY;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_THREAD"))
-#ifdef DB_THREAD
- return DB_THREAD;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_TRUNCATE"))
-#ifdef DB_TRUNCATE
- return DB_TRUNCATE;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_TXNMAGIC"))
-#ifdef DB_TXNMAGIC
- return DB_TXNMAGIC;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_TXNVERSION"))
-#ifdef DB_TXNVERSION
- return DB_TXNVERSION;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_TXN_BACKWARD_ROLL"))
- return DB_TXN_BACKWARD_ROLL;
- if (strEQ(name, "DB_TXN_CKP"))
-#ifdef DB_TXN_CKP
- return DB_TXN_CKP;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_TXN_FORWARD_ROLL"))
- return DB_TXN_FORWARD_ROLL;
- if (strEQ(name, "DB_TXN_LOCK_2PL"))
-#ifdef DB_TXN_LOCK_2PL
- return DB_TXN_LOCK_2PL;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_TXN_LOCK_MASK"))
-#ifdef DB_TXN_LOCK_MASK
- return DB_TXN_LOCK_MASK;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_TXN_LOCK_OPTIMIST"))
-#ifdef DB_TXN_LOCK_OPTIMIST
- return DB_TXN_LOCK_OPTIMIST;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_TXN_LOCK_OPTIMISTIC"))
-#ifdef DB_TXN_LOCK_OPTIMISTIC
- return DB_TXN_LOCK_OPTIMISTIC;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_TXN_LOG_MASK"))
-#ifdef DB_TXN_LOG_MASK
- return DB_TXN_LOG_MASK;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_TXN_LOG_REDO"))
-#ifdef DB_TXN_LOG_REDO
- return DB_TXN_LOG_REDO;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_TXN_LOG_UNDO"))
-#ifdef DB_TXN_LOG_UNDO
- return DB_TXN_LOG_UNDO;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_TXN_LOG_UNDOREDO"))
-#ifdef DB_TXN_LOG_UNDOREDO
- return DB_TXN_LOG_UNDOREDO;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_TXN_NOSYNC"))
-#ifdef DB_TXN_NOSYNC
- return DB_TXN_NOSYNC;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_TXN_NOWAIT"))
-#ifdef DB_TXN_NOWAIT
- return DB_TXN_NOWAIT;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_TXN_OPENFILES"))
- return DB_TXN_OPENFILES;
- if (strEQ(name, "DB_TXN_REDO"))
-#ifdef DB_TXN_REDO
- return DB_TXN_REDO;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_TXN_SYNC"))
-#ifdef DB_TXN_SYNC
- return DB_TXN_SYNC;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_TXN_UNDO"))
-#ifdef DB_TXN_UNDO
- return DB_TXN_UNDO;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_UNKNOWN"))
- return DB_UNKNOWN;
- if (strEQ(name, "DB_USE_ENVIRON"))
-#ifdef DB_USE_ENVIRON
- return DB_USE_ENVIRON;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_USE_ENVIRON_ROOT"))
-#ifdef DB_USE_ENVIRON_ROOT
- return DB_USE_ENVIRON_ROOT;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_VERSION_MAJOR"))
-#ifdef DB_VERSION_MAJOR
- return DB_VERSION_MAJOR;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_VERSION_MINOR"))
-#ifdef DB_VERSION_MINOR
- return DB_VERSION_MINOR;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_VERSION_PATCH"))
-#ifdef DB_VERSION_PATCH
- return DB_VERSION_PATCH;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_WRITECURSOR"))
-#ifdef DB_WRITECURSOR
- return DB_WRITECURSOR;
-#else
- goto not_there;
-#endif
- break;
- case 'E':
- break;
- case 'F':
- break;
- case 'G':
- break;
- case 'H':
- break;
- case 'I':
- break;
- case 'J':
- break;
- case 'K':
- break;
- case 'L':
- break;
- case 'M':
- break;
- case 'N':
- break;
- case 'O':
- break;
- case 'P':
- break;
- case 'Q':
- break;
- case 'R':
- break;
- case 'S':
- break;
- case 'T':
- break;
- case 'U':
- break;
- case 'V':
- break;
- case 'W':
- break;
- case 'X':
- break;
- case 'Y':
- break;
- case 'Z':
- break;
- case 'a':
- break;
- case 'b':
- break;
- case 'c':
- break;
- case 'd':
- break;
- case 'e':
- break;
- case 'f':
- break;
- case 'g':
- break;
- case 'h':
- break;
- case 'i':
- break;
- case 'j':
- break;
- case 'k':
- break;
- case 'l':
- break;
- case 'm':
- break;
- case 'n':
- break;
- case 'o':
- break;
- case 'p':
- break;
- case 'q':
- break;
- case 'r':
- break;
- case 's':
- break;
- case 't':
- break;
- case 'u':
- break;
- case 'v':
- break;
- case 'w':
- break;
- case 'x':
- break;
- case 'y':
- break;
- case 'z':
- break;
- }
- errno = EINVAL;
- return 0;
-
-not_there:
- errno = ENOENT;
- return 0;
-}
-
-
-MODULE = BerkeleyDB PACKAGE = BerkeleyDB PREFIX = env_
-
-char *
-DB_VERSION_STRING()
- CODE:
- RETVAL = DB_VERSION_STRING ;
- OUTPUT:
- RETVAL
-
-
-double
-constant(name,arg)
- char * name
- int arg
-
-#define env_db_version(maj, min, patch) db_version(&maj, &min, &patch)
-char *
-env_db_version(maj, min, patch)
- int maj
- int min
- int patch
- OUTPUT:
- RETVAL
- maj
- min
- patch
-
-int
-db_value_set(value, which)
- int value
- int which
- NOT_IMPLEMENTED_YET
-
-
-DualType
-_db_remove(ref)
- SV * ref
- CODE:
- {
-#if DB_VERSION_MAJOR == 2
- softCrash("BerkeleyDB::db_remove needs Berkeley DB 3.x or better") ;
-#else
- HV * hash ;
- DB * dbp ;
- SV * sv ;
- const char * db ;
- const char * subdb = NULL ;
- BerkeleyDB__Env env = NULL ;
- DB_ENV * dbenv = NULL ;
- u_int32_t flags = 0 ;
-
- hash = (HV*) SvRV(ref) ;
- SetValue_pv(db, "Filename", char *) ;
- SetValue_pv(subdb, "Subname", char *) ;
- SetValue_iv(flags, "Flags") ;
- SetValue_ov(env, "Env", BerkeleyDB__Env) ;
- if (env)
- dbenv = env->Env ;
- RETVAL = db_create(&dbp, dbenv, 0) ;
- if (RETVAL == 0) {
- RETVAL = dbp->remove(dbp, db, subdb, flags) ;
- }
-#endif
- }
- OUTPUT:
- RETVAL
-
-MODULE = BerkeleyDB::Env PACKAGE = BerkeleyDB::Env PREFIX = env_
-
-
-BerkeleyDB::Env::Raw
-_db_appinit(self, ref)
- char * self
- SV * ref
- CODE:
- {
- HV * hash ;
- SV * sv ;
- char * home = NULL ;
- char * server = NULL ;
- char ** config = NULL ;
- int flags = 0 ;
- int cachesize = 0 ;
- int lk_detect = 0 ;
- int mode = 0 ;
- SV * errprefix = NULL;
- DB_ENV * env ;
- int status ;
-
- Trace(("in _db_appinit [%s] %d\n", self, ref)) ;
- hash = (HV*) SvRV(ref) ;
- SetValue_pv(home, "Home", char *) ;
- SetValue_pv(config, "Config", char **) ;
- SetValue_sv(errprefix, "ErrPrefix") ;
- SetValue_iv(flags, "Flags") ;
- SetValue_pv(server, "Server", char *) ;
- SetValue_iv(cachesize, "Cachesize") ;
- SetValue_iv(lk_detect, "LockDetect") ;
-#ifndef AT_LEAST_DB_3_1
- if (server)
- softCrash("-Server needs Berkeley DB 3.1 or better") ;
-#endif /* ! AT_LEAST_DB_3_1 */
- Trace(("_db_appinit(config=[%d], home=[%s],errprefix=[%s],flags=[%d]\n",
- config, home, errprefix, flags)) ;
-#ifdef TRACE
- if (config) {
- int i ;
- for (i = 0 ; i < 10 ; ++ i) {
- if (config[i] == NULL) {
- printf(" End\n") ;
- break ;
- }
- printf(" config = [%s]\n", config[i]) ;
- }
- }
-#endif /* TRACE */
- ZMALLOC(RETVAL, BerkeleyDB_ENV_type) ;
- if (flags & DB_INIT_TXN)
- RETVAL->txn_enabled = TRUE ;
-#if DB_VERSION_MAJOR == 2
- ZMALLOC(RETVAL->Env, DB_ENV) ;
- env = RETVAL->Env ;
- {
- /* Take a copy of the error prefix */
- if (errprefix) {
- Trace(("copying errprefix\n" )) ;
- RETVAL->ErrPrefix = newSVsv(errprefix) ;
- SvPOK_only(RETVAL->ErrPrefix) ;
- }
- if (RETVAL->ErrPrefix)
- RETVAL->Env->db_errpfx = SvPVX(RETVAL->ErrPrefix) ;
-
- if ((sv = readHash(hash, "ErrFile")) && sv != &PL_sv_undef) {
- env->db_errfile = IoOFP(sv_2io(sv)) ;
- RETVAL->ErrHandle = newRV(sv) ;
- }
- /* SetValue_io(RETVAL->Env.db_errfile, "ErrFile") ; */
- SetValue_iv(env->db_verbose, "Verbose") ;
- /* env->db_errbuf = RETVAL->ErrBuff ; */
- env->db_errcall = db_errcall_cb ;
- RETVAL->active = TRUE ;
- status = db_appinit(home, config, env, flags) ;
- Trace((" status = %d env %d Env %d\n", status, RETVAL, env)) ;
- if (status == 0)
- hash_store_iv("BerkeleyDB::Term::Env", (IV)RETVAL, 1) ;
- else {
- if (RETVAL->ErrHandle)
- SvREFCNT_dec(RETVAL->ErrHandle) ;
- if (RETVAL->ErrPrefix)
- SvREFCNT_dec(RETVAL->ErrPrefix) ;
- Safefree(RETVAL->Env) ;
- Safefree(RETVAL) ;
- RETVAL = NULL ;
- }
- }
-#else /* DB_VERSION_MAJOR > 2 */
-#ifndef AT_LEAST_DB_3_1
-# define DB_CLIENT 0
-#endif
- status = db_env_create(&RETVAL->Env, server ? DB_CLIENT : 0) ;
- Trace(("db_env_create flags = %d returned %s\n", flags,
- my_db_strerror(status))) ;
- env = RETVAL->Env ;
- if (status == 0 && cachesize) {
- status = env->set_cachesize(env, 0, cachesize, 0) ;
- Trace(("set_cachesize [%d] returned %s\n",
- cachesize, my_db_strerror(status)));
- }
-
- if (status == 0 && lk_detect) {
- status = env->set_lk_detect(env, lk_detect) ;
- Trace(("set_lk_detect [%d] returned %s\n",
- lk_detect, my_db_strerror(status)));
- }
-#ifdef AT_LEAST_DB_3_1
- /* set the server */
- if (server && status == 0)
- {
- status = env->set_server(env, server, 0, 0, 0);
- Trace(("ENV->set_server server = %s returned %s\n", server,
- my_db_strerror(status))) ;
- }
-#endif
- if (status == 0)
- {
- /* Take a copy of the error prefix */
- if (errprefix) {
- Trace(("copying errprefix\n" )) ;
- RETVAL->ErrPrefix = newSVsv(errprefix) ;
- SvPOK_only(RETVAL->ErrPrefix) ;
- }
- if (RETVAL->ErrPrefix)
- env->set_errpfx(env, SvPVX(RETVAL->ErrPrefix)) ;
-
- if ((sv = readHash(hash, "ErrFile")) && sv != &PL_sv_undef) {
- env->set_errfile(env, IoOFP(sv_2io(sv))) ;
- RETVAL->ErrHandle = newRV(sv) ;
- }
- /* SetValue_iv(RETVAL->Env.db_verbose, "Verbose") ; */ /* TODO */
- SetValue_iv(mode, "Mode") ;
- /* RETVAL->Env.db_errbuf = RETVAL->ErrBuff ; */
- env->set_errcall(env, db_errcall_cb) ;
- RETVAL->active = TRUE ;
-#ifdef IS_DB_3_0
- status = (env->open)(env, home, config, flags, mode) ;
-#else /* > 3.0 */
- status = (env->open)(env, home, flags, mode) ;
-#endif
- Trace(("ENV->open returned %s\n", my_db_strerror(status))) ;
- }
-
- if (status == 0)
- hash_store_iv("BerkeleyDB::Term::Env", (IV)RETVAL, 1) ;
- else {
- (env->close)(env, 0) ;
- if (RETVAL->ErrHandle)
- SvREFCNT_dec(RETVAL->ErrHandle) ;
- if (RETVAL->ErrPrefix)
- SvREFCNT_dec(RETVAL->ErrPrefix) ;
- Safefree(RETVAL) ;
- RETVAL = NULL ;
- }
-#endif /* DB_VERSION_MAJOR > 2 */
- }
- OUTPUT:
- RETVAL
-
-BerkeleyDB::Txn::Raw
-_txn_begin(env, pid=NULL, flags=0)
- BerkeleyDB::Env env
- BerkeleyDB::Txn pid
- u_int32_t flags
- CODE:
- {
- DB_TXN *txn ;
- DB_TXN *p_id = NULL ;
- Trace(("txn_begin pid %d, flags %d\n", pid, flags)) ;
-#if DB_VERSION_MAJOR == 2
- if (env->Env->tx_info == NULL)
- softCrash("Transaction Manager not enabled") ;
-#endif
- if (!env->txn_enabled)
- softCrash("Transaction Manager not enabled") ;
- if (pid)
- p_id = pid->txn ;
- env->TxnMgrStatus =
-#if DB_VERSION_MAJOR == 2
- txn_begin(env->Env->tx_info, p_id, &txn) ;
-#else
- txn_begin(env->Env, p_id, &txn, flags) ;
-#endif
- if (env->TxnMgrStatus == 0) {
- ZMALLOC(RETVAL, BerkeleyDB_Txn_type) ;
- RETVAL->txn = txn ;
- RETVAL->active = TRUE ;
- Trace(("_txn_begin created txn [%d] in [%d]\n", txn, RETVAL));
- hash_store_iv("BerkeleyDB::Term::Txn", (IV)RETVAL, 1) ;
- }
- else
- RETVAL = NULL ;
- }
- OUTPUT:
- RETVAL
-
-
-#if DB_VERSION_MAJOR == 2
-# define env_txn_checkpoint(e,k,m) txn_checkpoint(e->Env->tx_info, k, m)
-#else /* DB 3.0 or better */
-# ifdef AT_LEAST_DB_3_1
-# define env_txn_checkpoint(e,k,m) txn_checkpoint(e->Env, k, m, 0)
-# else
-# define env_txn_checkpoint(e,k,m) txn_checkpoint(e->Env, k, m)
-# endif
-#endif
-DualType
-env_txn_checkpoint(env, kbyte, min)
- BerkeleyDB::Env env
- long kbyte
- long min
-
-HV *
-txn_stat(env)
- BerkeleyDB::Env env
- HV * RETVAL = NULL ;
- CODE:
- {
- DB_TXN_STAT * stat ;
-#if DB_VERSION_MAJOR == 2
- if(txn_stat(env->Env->tx_info, &stat, safemalloc) == 0) {
-#else
- if(txn_stat(env->Env, &stat, safemalloc) == 0) {
-#endif
- RETVAL = (HV*)sv_2mortal((SV*)newHV()) ;
- hv_store_iv(RETVAL, "st_time_ckp", stat->st_time_ckp) ;
- hv_store_iv(RETVAL, "st_last_txnid", stat->st_last_txnid) ;
- hv_store_iv(RETVAL, "st_maxtxns", stat->st_maxtxns) ;
- hv_store_iv(RETVAL, "st_naborts", stat->st_naborts) ;
- hv_store_iv(RETVAL, "st_nbegins", stat->st_nbegins) ;
- hv_store_iv(RETVAL, "st_ncommits", stat->st_ncommits) ;
- hv_store_iv(RETVAL, "st_nactive", stat->st_nactive) ;
-#if DB_VERSION_MAJOR > 2
- hv_store_iv(RETVAL, "st_maxnactive", stat->st_maxnactive) ;
- hv_store_iv(RETVAL, "st_regsize", stat->st_regsize) ;
- hv_store_iv(RETVAL, "st_region_wait", stat->st_region_wait) ;
- hv_store_iv(RETVAL, "st_region_nowait", stat->st_region_nowait) ;
-#endif
- safefree(stat) ;
- }
- }
- OUTPUT:
- RETVAL
-
-#define EnDis(x) ((x) ? "Enabled" : "Disabled")
-void
-printEnv(env)
- BerkeleyDB::Env env
- INIT:
- ckActive_Environment(env->active) ;
- CODE:
-#if 0
- printf("env [0x%X]\n", env) ;
- printf(" ErrPrefix [%s]\n", env->ErrPrefix
- ? SvPVX(env->ErrPrefix) : 0) ;
- printf(" DB_ENV\n") ;
- printf(" db_lorder [%d]\n", env->Env.db_lorder) ;
- printf(" db_home [%s]\n", env->Env.db_home) ;
- printf(" db_data_dir [%s]\n", env->Env.db_data_dir) ;
- printf(" db_log_dir [%s]\n", env->Env.db_log_dir) ;
- printf(" db_tmp_dir [%s]\n", env->Env.db_tmp_dir) ;
- printf(" lk_info [%s]\n", EnDis(env->Env.lk_info)) ;
- printf(" lk_max [%d]\n", env->Env.lk_max) ;
- printf(" lg_info [%s]\n", EnDis(env->Env.lg_info)) ;
- printf(" lg_max [%d]\n", env->Env.lg_max) ;
- printf(" mp_info [%s]\n", EnDis(env->Env.mp_info)) ;
- printf(" mp_size [%d]\n", env->Env.mp_size) ;
- printf(" tx_info [%s]\n", EnDis(env->Env.tx_info)) ;
- printf(" tx_max [%d]\n", env->Env.tx_max) ;
- printf(" flags [%d]\n", env->Env.flags) ;
- printf("\n") ;
-#endif
-
-SV *
-errPrefix(env, prefix)
- BerkeleyDB::Env env
- SV * prefix
- INIT:
- ckActive_Environment(env->active) ;
- CODE:
- if (env->ErrPrefix) {
- RETVAL = newSVsv(env->ErrPrefix) ;
- SvPOK_only(RETVAL) ;
- sv_setsv(env->ErrPrefix, prefix) ;
- }
- else {
- RETVAL = NULL ;
- env->ErrPrefix = newSVsv(prefix) ;
- }
- SvPOK_only(env->ErrPrefix) ;
-#if DB_VERSION_MAJOR == 2
- env->Env->db_errpfx = SvPVX(env->ErrPrefix) ;
-#else
- env->Env->set_errpfx(env->Env, SvPVX(env->ErrPrefix)) ;
-#endif
- OUTPUT:
- RETVAL
-
-DualType
-status(env)
- BerkeleyDB::Env env
- CODE:
- RETVAL = env->Status ;
- OUTPUT:
- RETVAL
-
-DualType
-db_appexit(env)
- BerkeleyDB::Env env
- INIT:
- ckActive_Environment(env->active) ;
- CODE:
-#ifdef STRICT_CLOSE
- if (env->open_dbs)
- softCrash("attempted to close an environment with %d open database(s)",
- env->open_dbs) ;
-#endif /* STRICT_CLOSE */
-#if DB_VERSION_MAJOR == 2
- RETVAL = db_appexit(env->Env) ;
-#else
- RETVAL = (env->Env->close)(env->Env, 0) ;
-#endif
- env->active = FALSE ;
- hash_delete("BerkeleyDB::Term::Env", (IV)env) ;
- OUTPUT:
- RETVAL
-
-
-void
-_DESTROY(env)
- BerkeleyDB::Env env
- int RETVAL = 0 ;
- CODE:
- Trace(("In BerkeleyDB::Env::DESTROY\n"));
- Trace((" env %ld Env %ld dirty %d\n", env, &env->Env, PL_dirty)) ;
- if (env->active)
-#if DB_VERSION_MAJOR == 2
- db_appexit(env->Env) ;
-#else
- (env->Env->close)(env->Env, 0) ;
-#endif
- if (env->ErrHandle)
- SvREFCNT_dec(env->ErrHandle) ;
- if (env->ErrPrefix)
- SvREFCNT_dec(env->ErrPrefix) ;
-#if DB_VERSION_MAJOR == 2
- Safefree(env->Env) ;
-#endif
- Safefree(env) ;
- hash_delete("BerkeleyDB::Term::Env", (IV)env) ;
- Trace(("End of BerkeleyDB::Env::DESTROY %d\n", RETVAL)) ;
-
-BerkeleyDB::TxnMgr::Raw
-_TxnMgr(env)
- BerkeleyDB::Env env
- INIT:
- ckActive_Environment(env->active) ;
- if (!env->txn_enabled)
- softCrash("Transaction Manager not enabled") ;
- CODE:
- ZMALLOC(RETVAL, BerkeleyDB_TxnMgr_type) ;
- RETVAL->env = env ;
- /* hash_store_iv("BerkeleyDB::Term::TxnMgr", (IV)txn, 1) ; */
- OUTPUT:
- RETVAL
-
-int
-set_data_dir(env, dir)
- BerkeleyDB::Env env
- char * dir
- INIT:
- ckActive_Database(env->active) ;
- CODE:
-#ifndef AT_LEAST_DB_3_1
- softCrash("$env->set_data_dir needs Berkeley DB 3.1 or better") ;
-#else
- RETVAL = env->Status = env->Env->set_data_dir(env->Env, dir);
-#endif
- OUTPUT:
- RETVAL
-
-int
-set_lg_dir(env, dir)
- BerkeleyDB::Env env
- char * dir
- INIT:
- ckActive_Database(env->active) ;
- CODE:
-#ifndef AT_LEAST_DB_3_1
- softCrash("$env->set_lg_dir needs Berkeley DB 3.1 or better") ;
-#else
- RETVAL = env->Status = env->Env->set_lg_dir(env->Env, dir);
-#endif
- OUTPUT:
- RETVAL
-
-int
-set_tmp_dir(env, dir)
- BerkeleyDB::Env env
- char * dir
- INIT:
- ckActive_Database(env->active) ;
- CODE:
-#ifndef AT_LEAST_DB_3_1
- softCrash("$env->set_tmp_dir needs Berkeley DB 3.1 or better") ;
-#else
- RETVAL = env->Status = env->Env->set_tmp_dir(env->Env, dir);
-#endif
- OUTPUT:
- RETVAL
-
-int
-set_mutexlocks(env, do_lock)
- BerkeleyDB::Env env
- int do_lock
- INIT:
- ckActive_Database(env->active) ;
- CODE:
-#ifndef AT_LEAST_DB_3
- softCrash("$env->set_setmutexlocks needs Berkeley DB 3.0 or better") ;
-#else
-#if defined(IS_DB_3_0) || defined(AT_LEAST_DB_3_2)
- RETVAL = env->Status = env->Env->set_mutexlocks(env->Env, do_lock);
-#else /* DB 3.1 */
- RETVAL = env->Status = db_env_set_mutexlocks(do_lock);
-#endif
-#endif
- OUTPUT:
- RETVAL
-
-MODULE = BerkeleyDB::Term PACKAGE = BerkeleyDB::Term
-
-void
-close_everything()
-
-#define safeCroak(string) softCrash(string)
-void
-safeCroak(string)
- char * string
-
-MODULE = BerkeleyDB::Hash PACKAGE = BerkeleyDB::Hash PREFIX = hash_
-
-BerkeleyDB::Hash::Raw
-_db_open_hash(self, ref)
- char * self
- SV * ref
- CODE:
- {
- HV * hash ;
- SV * sv ;
- DB_INFO info ;
- BerkeleyDB__Env dbenv = NULL;
- SV * ref_dbenv = NULL;
- const char * file = NULL ;
- const char * subname = NULL ;
- int flags = 0 ;
- int mode = 0 ;
- BerkeleyDB db ;
-
- Trace(("_db_open_hash start\n")) ;
- hash = (HV*) SvRV(ref) ;
- SetValue_pv(file, "Filename", char *) ;
- SetValue_pv(subname, "Subname", char *) ;
- SetValue_ov(dbenv, "Env", BerkeleyDB__Env) ;
- ref_dbenv = sv ;
- SetValue_iv(flags, "Flags") ;
- SetValue_iv(mode, "Mode") ;
-
- Zero(&info, 1, DB_INFO) ;
- SetValue_iv(info.db_cachesize, "Cachesize") ;
- SetValue_iv(info.db_lorder, "Lorder") ;
- SetValue_iv(info.db_pagesize, "Pagesize") ;
- SetValue_iv(info.h_ffactor, "Ffactor") ;
- SetValue_iv(info.h_nelem, "Nelem") ;
- SetValue_iv(info.flags, "Property") ;
- ZMALLOC(db, BerkeleyDB_type) ;
- if ((sv = readHash(hash, "Hash")) && sv != &PL_sv_undef) {
- info.h_hash = hash_cb ;
- db->hash = newSVsv(sv) ;
- }
- /* DB_DUPSORT was introduced in DB 2.5.9 */
- if ((sv = readHash(hash, "DupCompare")) && sv != &PL_sv_undef) {
-#ifdef DB_DUPSORT
- info.dup_compare = dup_compare ;
- db->dup_compare = newSVsv(sv) ;
- info.flags |= DB_DUP|DB_DUPSORT ;
-#else
- croak("DupCompare needs Berkeley DB 2.5.9 or later") ;
-#endif
- }
- RETVAL = my_db_open(db, ref, ref_dbenv, dbenv, file, subname, DB_HASH, flags, mode, &info) ;
- Trace(("_db_open_hash end\n")) ;
- }
- OUTPUT:
- RETVAL
-
-
-HV *
-db_stat(db, flags=0)
- BerkeleyDB::Common db
- int flags
- HV * RETVAL = NULL ;
- INIT:
- ckActive_Database(db->active) ;
- CODE:
- {
-#if DB_VERSION_MAJOR == 2
- softCrash("$db->db_stat for a Hash needs Berkeley DB 3.x or better") ;
-#else
- DB_HASH_STAT * stat ;
- db->Status = ((db->dbp)->stat)(db->dbp, &stat, safemalloc, flags) ;
- if (db->Status == 0) {
- RETVAL = (HV*)sv_2mortal((SV*)newHV()) ;
- hv_store_iv(RETVAL, "hash_magic", stat->hash_magic) ;
- hv_store_iv(RETVAL, "hash_version", stat->hash_version);
- hv_store_iv(RETVAL, "hash_pagesize", stat->hash_pagesize);
-#ifdef AT_LEAST_DB_3_1
- hv_store_iv(RETVAL, "hash_nkeys", stat->hash_nkeys);
- hv_store_iv(RETVAL, "hash_ndata", stat->hash_ndata);
-#else
- hv_store_iv(RETVAL, "hash_nrecs", stat->hash_nrecs);
-#endif
- hv_store_iv(RETVAL, "hash_nelem", stat->hash_nelem);
- 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);
- hv_store_iv(RETVAL, "hash_bfree", stat->hash_bfree);
- hv_store_iv(RETVAL, "hash_bigpages", stat->hash_bigpages);
- hv_store_iv(RETVAL, "hash_big_bfree", stat->hash_big_bfree);
- hv_store_iv(RETVAL, "hash_overflows", stat->hash_overflows);
- hv_store_iv(RETVAL, "hash_ovfl_free", stat->hash_ovfl_free);
- hv_store_iv(RETVAL, "hash_dup", stat->hash_dup);
- hv_store_iv(RETVAL, "hash_dup_free", stat->hash_dup_free);
-#if DB_VERSION_MAJOR >= 3
- hv_store_iv(RETVAL, "hash_metaflags", stat->hash_metaflags);
-#endif
- safefree(stat) ;
- }
-#endif
- }
- OUTPUT:
- RETVAL
-
-
-MODULE = BerkeleyDB::Unknown PACKAGE = BerkeleyDB::Unknown PREFIX = hash_
-
-void
-_db_open_unknown(ref)
- SV * ref
- PPCODE:
- {
- HV * hash ;
- SV * sv ;
- DB_INFO info ;
- BerkeleyDB__Env dbenv = NULL;
- SV * ref_dbenv = NULL;
- const char * file = NULL ;
- const char * subname = NULL ;
- int flags = 0 ;
- int mode = 0 ;
- BerkeleyDB db ;
- BerkeleyDB RETVAL ;
- static char * Names[] = {"", "Btree", "Hash", "Recno"} ;
-
- hash = (HV*) SvRV(ref) ;
- SetValue_pv(file, "Filename", char *) ;
- SetValue_pv(subname, "Subname", char *) ;
- SetValue_ov(dbenv, "Env", BerkeleyDB__Env) ;
- ref_dbenv = sv ;
- SetValue_iv(flags, "Flags") ;
- SetValue_iv(mode, "Mode") ;
-
- Zero(&info, 1, DB_INFO) ;
- SetValue_iv(info.db_cachesize, "Cachesize") ;
- SetValue_iv(info.db_lorder, "Lorder") ;
- SetValue_iv(info.db_pagesize, "Pagesize") ;
- SetValue_iv(info.h_ffactor, "Ffactor") ;
- SetValue_iv(info.h_nelem, "Nelem") ;
- SetValue_iv(info.flags, "Property") ;
- ZMALLOC(db, BerkeleyDB_type) ;
-
- RETVAL = my_db_open(db, ref, ref_dbenv, dbenv, file, subname, DB_UNKNOWN, flags, mode, &info) ;
- XPUSHs(sv_2mortal(newSViv((IV)RETVAL)));
- if (RETVAL)
- XPUSHs(sv_2mortal(newSVpv(Names[RETVAL->type], 0))) ;
- else
- XPUSHs(sv_2mortal(newSViv((IV)NULL)));
- }
-
-
-
-MODULE = BerkeleyDB::Btree PACKAGE = BerkeleyDB::Btree PREFIX = btree_
-
-BerkeleyDB::Btree::Raw
-_db_open_btree(self, ref)
- char * self
- SV * ref
- CODE:
- {
- HV * hash ;
- SV * sv ;
- DB_INFO info ;
- BerkeleyDB__Env dbenv = NULL;
- SV * ref_dbenv = NULL;
- const char * file = NULL ;
- const char * subname = NULL ;
- int flags = 0 ;
- int mode = 0 ;
- BerkeleyDB db ;
-
- hash = (HV*) SvRV(ref) ;
- SetValue_pv(file, "Filename", char*) ;
- SetValue_pv(subname, "Subname", char *) ;
- SetValue_ov(dbenv, "Env", BerkeleyDB__Env) ;
- ref_dbenv = sv ;
- SetValue_iv(flags, "Flags") ;
- SetValue_iv(mode, "Mode") ;
-
- Zero(&info, 1, DB_INFO) ;
- SetValue_iv(info.db_cachesize, "Cachesize") ;
- SetValue_iv(info.db_lorder, "Lorder") ;
- SetValue_iv(info.db_pagesize, "Pagesize") ;
- SetValue_iv(info.bt_minkey, "Minkey") ;
- SetValue_iv(info.flags, "Property") ;
- ZMALLOC(db, BerkeleyDB_type) ;
- if ((sv = readHash(hash, "Compare")) && sv != &PL_sv_undef) {
- info.bt_compare = btree_compare ;
- db->compare = newSVsv(sv) ;
- }
- /* DB_DUPSORT was introduced in DB 2.5.9 */
- if ((sv = readHash(hash, "DupCompare")) && sv != &PL_sv_undef) {
-#ifdef DB_DUPSORT
- info.dup_compare = dup_compare ;
- db->dup_compare = newSVsv(sv) ;
- info.flags |= DB_DUP|DB_DUPSORT ;
-#else
- softCrash("DupCompare needs Berkeley DB 2.5.9 or later") ;
-#endif
- }
- if ((sv = readHash(hash, "Prefix")) && sv != &PL_sv_undef) {
- info.bt_prefix = btree_prefix ;
- db->prefix = newSVsv(sv) ;
- }
-
- RETVAL = my_db_open(db, ref, ref_dbenv, dbenv, file, subname, DB_BTREE, flags, mode, &info) ;
- }
- OUTPUT:
- RETVAL
-
-
-HV *
-db_stat(db, flags=0)
- BerkeleyDB::Common db
- int flags
- HV * RETVAL = NULL ;
- INIT:
- ckActive_Database(db->active) ;
- CODE:
- {
- DB_BTREE_STAT * stat ;
- db->Status = ((db->dbp)->stat)(db->dbp, &stat, safemalloc, flags) ;
- if (db->Status == 0) {
- RETVAL = (HV*)sv_2mortal((SV*)newHV()) ;
- hv_store_iv(RETVAL, "bt_magic", stat->bt_magic);
- hv_store_iv(RETVAL, "bt_version", stat->bt_version);
-#if DB_VERSION_MAJOR > 2
- hv_store_iv(RETVAL, "bt_metaflags", stat->bt_metaflags) ;
- hv_store_iv(RETVAL, "bt_flags", stat->bt_metaflags) ;
-#else
- hv_store_iv(RETVAL, "bt_flags", stat->bt_flags) ;
-#endif
- hv_store_iv(RETVAL, "bt_maxkey", stat->bt_maxkey) ;
- hv_store_iv(RETVAL, "bt_minkey", stat->bt_minkey);
- hv_store_iv(RETVAL, "bt_re_len", stat->bt_re_len);
- hv_store_iv(RETVAL, "bt_re_pad", stat->bt_re_pad);
- hv_store_iv(RETVAL, "bt_pagesize", stat->bt_pagesize);
- hv_store_iv(RETVAL, "bt_levels", stat->bt_levels);
-#ifdef AT_LEAST_DB_3_1
- hv_store_iv(RETVAL, "bt_nkeys", stat->bt_nkeys);
- hv_store_iv(RETVAL, "bt_ndata", stat->bt_ndata);
-#else
- hv_store_iv(RETVAL, "bt_nrecs", stat->bt_nrecs);
-#endif
- hv_store_iv(RETVAL, "bt_int_pg", stat->bt_int_pg);
- hv_store_iv(RETVAL, "bt_leaf_pg", stat->bt_leaf_pg);
- hv_store_iv(RETVAL, "bt_dup_pg", stat->bt_dup_pg);
- hv_store_iv(RETVAL, "bt_over_pg", stat->bt_over_pg);
- hv_store_iv(RETVAL, "bt_free", stat->bt_free);
-#if DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR < 5
- hv_store_iv(RETVAL, "bt_freed", stat->bt_freed);
- hv_store_iv(RETVAL, "bt_pfxsaved", stat->bt_pfxsaved);
- hv_store_iv(RETVAL, "bt_split", stat->bt_split);
- hv_store_iv(RETVAL, "bt_rootsplit", stat->bt_rootsplit);
- hv_store_iv(RETVAL, "bt_fastsplit", stat->bt_fastsplit);
- hv_store_iv(RETVAL, "bt_added", stat->bt_added);
- hv_store_iv(RETVAL, "bt_deleted", stat->bt_deleted);
- hv_store_iv(RETVAL, "bt_get", stat->bt_get);
- hv_store_iv(RETVAL, "bt_cache_hit", stat->bt_cache_hit);
- hv_store_iv(RETVAL, "bt_cache_miss", stat->bt_cache_miss);
-#endif
- hv_store_iv(RETVAL, "bt_int_pgfree", stat->bt_int_pgfree);
- hv_store_iv(RETVAL, "bt_leaf_pgfree", stat->bt_leaf_pgfree);
- hv_store_iv(RETVAL, "bt_dup_pgfree", stat->bt_dup_pgfree);
- hv_store_iv(RETVAL, "bt_over_pgfree", stat->bt_over_pgfree);
- safefree(stat) ;
- }
- }
- OUTPUT:
- RETVAL
-
-
-MODULE = BerkeleyDB::Recno PACKAGE = BerkeleyDB::Recno PREFIX = recno_
-
-BerkeleyDB::Recno::Raw
-_db_open_recno(self, ref)
- char * self
- SV * ref
- CODE:
- {
- HV * hash ;
- SV * sv ;
- DB_INFO info ;
- BerkeleyDB__Env dbenv = NULL;
- SV * ref_dbenv = NULL;
- const char * file = NULL ;
- const char * subname = NULL ;
- int flags = 0 ;
- int mode = 0 ;
- BerkeleyDB db ;
-
- hash = (HV*) SvRV(ref) ;
- SetValue_pv(file, "Fname", char*) ;
- SetValue_ov(dbenv, "Env", BerkeleyDB__Env) ;
- ref_dbenv = sv ;
- SetValue_iv(flags, "Flags") ;
- SetValue_iv(mode, "Mode") ;
-
- Zero(&info, 1, DB_INFO) ;
- SetValue_iv(info.db_cachesize, "Cachesize") ;
- SetValue_iv(info.db_lorder, "Lorder") ;
- SetValue_iv(info.db_pagesize, "Pagesize") ;
- SetValue_iv(info.bt_minkey, "Minkey") ;
-
- SetValue_iv(info.flags, "Property") ;
- SetValue_pv(info.re_source, "Source", char*) ;
- if ((sv = readHash(hash, "Len")) && sv != &PL_sv_undef) {
- info.re_len = SvIV(sv) ; ;
- flagSet_DB2(info.flags, DB_FIXEDLEN) ;
- }
- if ((sv = readHash(hash, "Delim")) && sv != &PL_sv_undef) {
- info.re_delim = SvPOK(sv) ? *SvPV(sv,PL_na) : SvIV(sv) ; ;
- flagSet_DB2(info.flags, DB_DELIMITER) ;
- }
- if ((sv = readHash(hash, "Pad")) && sv != &PL_sv_undef) {
- info.re_pad = (u_int32_t)SvPOK(sv) ? *SvPV(sv,PL_na) : SvIV(sv) ; ;
- flagSet_DB2(info.flags, DB_PAD) ;
- }
- ZMALLOC(db, BerkeleyDB_type) ;
-#ifdef ALLOW_RECNO_OFFSET
- SetValue_iv(db->array_base, "ArrayBase") ;
- db->array_base = (db->array_base == 0 ? 1 : 0) ;
-#endif /* ALLOW_RECNO_OFFSET */
-
- RETVAL = my_db_open(db, ref, ref_dbenv, dbenv, file, subname, DB_RECNO, flags, mode, &info) ;
- }
- OUTPUT:
- RETVAL
-
-
-MODULE = BerkeleyDB::Queue PACKAGE = BerkeleyDB::Queue PREFIX = recno_
-
-BerkeleyDB::Queue::Raw
-_db_open_queue(self, ref)
- char * self
- SV * ref
- CODE:
- {
-#ifndef AT_LEAST_DB_3
- softCrash("BerkeleyDB::Queue needs Berkeley DB 3.0.x or better");
-#else
- HV * hash ;
- SV * sv ;
- DB_INFO info ;
- BerkeleyDB__Env dbenv = NULL;
- SV * ref_dbenv = NULL;
- const char * file = NULL ;
- const char * subname = NULL ;
- int flags = 0 ;
- int mode = 0 ;
- BerkeleyDB db ;
-
- hash = (HV*) SvRV(ref) ;
- SetValue_pv(file, "Fname", char*) ;
- SetValue_ov(dbenv, "Env", BerkeleyDB__Env) ;
- ref_dbenv = sv ;
- SetValue_iv(flags, "Flags") ;
- SetValue_iv(mode, "Mode") ;
-
- Zero(&info, 1, DB_INFO) ;
- SetValue_iv(info.db_cachesize, "Cachesize") ;
- SetValue_iv(info.db_lorder, "Lorder") ;
- SetValue_iv(info.db_pagesize, "Pagesize") ;
- SetValue_iv(info.bt_minkey, "Minkey") ;
- SetValue_iv(info.q_extentsize, "ExtentSize") ;
-
-
- SetValue_iv(info.flags, "Property") ;
- if ((sv = readHash(hash, "Len")) && sv != &PL_sv_undef) {
- info.re_len = SvIV(sv) ; ;
- flagSet_DB2(info.flags, DB_PAD) ;
- }
- if ((sv = readHash(hash, "Pad")) && sv != &PL_sv_undef) {
- info.re_pad = (u_int32_t)SvPOK(sv) ? *SvPV(sv,PL_na) : SvIV(sv) ; ;
- flagSet_DB2(info.flags, DB_PAD) ;
- }
- ZMALLOC(db, BerkeleyDB_type) ;
-#ifdef ALLOW_RECNO_OFFSET
- SetValue_iv(db->array_base, "ArrayBase") ;
- db->array_base = (db->array_base == 0 ? 1 : 0) ;
-#endif /* ALLOW_RECNO_OFFSET */
-
- RETVAL = my_db_open(db, ref, ref_dbenv, dbenv, file, subname, DB_QUEUE, flags, mode, &info) ;
-#endif
- }
- OUTPUT:
- RETVAL
-
-HV *
-db_stat(db, flags=0)
- BerkeleyDB::Common db
- int flags
- HV * RETVAL = NULL ;
- INIT:
- ckActive_Database(db->active) ;
- CODE:
- {
-#if DB_VERSION_MAJOR == 2
- softCrash("$db->db_stat for a Queue needs Berkeley DB 3.x or better") ;
-#else /* Berkeley DB 3, or better */
- DB_QUEUE_STAT * stat ;
- db->Status = ((db->dbp)->stat)(db->dbp, &stat, safemalloc, flags) ;
- if (db->Status == 0) {
- RETVAL = (HV*)sv_2mortal((SV*)newHV()) ;
- hv_store_iv(RETVAL, "qs_magic", stat->qs_magic) ;
- hv_store_iv(RETVAL, "qs_version", stat->qs_version);
-#ifdef AT_LEAST_DB_3_1
- hv_store_iv(RETVAL, "qs_nkeys", stat->qs_nkeys);
- hv_store_iv(RETVAL, "qs_ndata", stat->qs_ndata);
-#else
- hv_store_iv(RETVAL, "qs_nrecs", stat->qs_nrecs);
-#endif
- hv_store_iv(RETVAL, "qs_pages", stat->qs_pages);
- hv_store_iv(RETVAL, "qs_pagesize", stat->qs_pagesize);
- hv_store_iv(RETVAL, "qs_pgfree", stat->qs_pgfree);
- hv_store_iv(RETVAL, "qs_re_len", stat->qs_re_len);
- hv_store_iv(RETVAL, "qs_re_pad", stat->qs_re_pad);
-#ifdef AT_LEAST_DB_3_2
-#else
- hv_store_iv(RETVAL, "qs_start", stat->qs_start);
-#endif
- hv_store_iv(RETVAL, "qs_first_recno", stat->qs_first_recno);
- hv_store_iv(RETVAL, "qs_cur_recno", stat->qs_cur_recno);
-#if DB_VERSION_MAJOR >= 3
- hv_store_iv(RETVAL, "qs_metaflags", stat->qs_metaflags);
-#endif
- safefree(stat) ;
- }
-#endif
- }
- OUTPUT:
- RETVAL
-
-
-MODULE = BerkeleyDB::Common PACKAGE = BerkeleyDB::Common PREFIX = dab_
-
-
-DualType
-db_close(db,flags=0)
- BerkeleyDB::Common db
- int flags
- INIT:
- ckActive_Database(db->active) ;
- CurrentDB = db ;
- CODE:
- Trace(("BerkeleyDB::Common::db_close %d\n", db));
-#ifdef STRICT_CLOSE
- if (db->txn)
- softCrash("attempted to close a database while a transaction was still open") ;
- if (db->open_cursors)
- softCrash("attempted to close a database with %d open cursor(s)",
- db->open_cursors) ;
-#endif /* STRICT_CLOSE */
- RETVAL = db->Status = ((db->dbp)->close)(db->dbp, flags) ;
- if (db->parent_env && db->parent_env->open_dbs)
- -- db->parent_env->open_dbs ;
- db->active = FALSE ;
- hash_delete("BerkeleyDB::Term::Db", (IV)db) ;
- -- db->open_cursors ;
- Trace(("end of BerkeleyDB::Common::db_close\n"));
- OUTPUT:
- RETVAL
-
-void
-dab__DESTROY(db)
- BerkeleyDB::Common db
- CODE:
- CurrentDB = db ;
- Trace(("In BerkeleyDB::Common::_DESTROY db %d dirty=%d\n", db, PL_dirty)) ;
- destroyDB(db) ;
- Trace(("End of BerkeleyDB::Common::DESTROY \n")) ;
-
-#if DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR < 6
-#define db_cursor(db, txn, cur,flags) ((db->dbp)->cursor)(db->dbp, txn, cur)
-#else
-#define db_cursor(db, txn, cur,flags) ((db->dbp)->cursor)(db->dbp, txn, cur,flags)
-#endif
-BerkeleyDB::Cursor::Raw
-_db_cursor(db, flags=0)
- BerkeleyDB::Common db
- u_int32_t flags
- BerkeleyDB::Cursor RETVAL = NULL ;
- INIT:
- ckActive_Database(db->active) ;
- CODE:
- {
- DBC * cursor ;
- CurrentDB = db ;
- if ((db->Status = db_cursor(db, db->txn, &cursor, flags)) == 0){
- ZMALLOC(RETVAL, BerkeleyDB__Cursor_type) ;
- db->open_cursors ++ ;
- RETVAL->parent_db = db ;
- RETVAL->cursor = cursor ;
- RETVAL->dbp = db->dbp ;
- RETVAL->type = db->type ;
- RETVAL->recno_or_queue = db->recno_or_queue ;
- RETVAL->filename = my_strdup(db->filename) ;
- RETVAL->compare = db->compare ;
- RETVAL->dup_compare = db->dup_compare ;
- RETVAL->prefix = db->prefix ;
- RETVAL->hash = db->hash ;
- RETVAL->partial = db->partial ;
- RETVAL->doff = db->doff ;
- RETVAL->dlen = db->dlen ;
- RETVAL->active = TRUE ;
-#ifdef ALLOW_RECNO_OFFSET
- RETVAL->array_base = db->array_base ;
-#endif /* ALLOW_RECNO_OFFSET */
-#ifdef DBM_FILTERING
- RETVAL->filtering = FALSE ;
- RETVAL->filter_fetch_key = db->filter_fetch_key ;
- RETVAL->filter_store_key = db->filter_store_key ;
- RETVAL->filter_fetch_value = db->filter_fetch_value ;
- RETVAL->filter_store_value = db->filter_store_value ;
-#endif
- /* RETVAL->info ; */
- hash_store_iv("BerkeleyDB::Term::Cursor", (IV)RETVAL, 1) ;
- }
- }
- OUTPUT:
- RETVAL
-
-BerkeleyDB::Cursor::Raw
-_db_join(db, cursors, flags=0)
- BerkeleyDB::Common db
- AV * cursors
- u_int32_t flags
- BerkeleyDB::Cursor RETVAL = NULL ;
- INIT:
- ckActive_Database(db->active) ;
- CODE:
- {
-#if DB_VERSION_MAJOR == 2 && (DB_VERSION_MINOR < 5 || (DB_VERSION_MINOR == 5 && DB_VERSION_PATCH < 2))
- softCrash("join needs Berkeley DB 2.5.2 or later") ;
-#else /* Berkeley DB >= 2.5.2 */
- DBC * join_cursor ;
- DBC ** cursor_list ;
- I32 count = av_len(cursors) + 1 ;
- int i ;
- CurrentDB = db ;
- if (count < 1 )
- softCrash("db_join: No cursors in parameter list") ;
- cursor_list = (DBC **)safemalloc(sizeof(DBC*) * (count + 1));
- for (i = 0 ; i < count ; ++i) {
- SV * obj = (SV*) * av_fetch(cursors, i, FALSE) ;
- BerkeleyDB__Cursor cur = (BerkeleyDB__Cursor) getInnerObject(obj) ;
- cursor_list[i] = cur->cursor ;
- }
- cursor_list[i] = NULL ;
-#if DB_VERSION_MAJOR == 2
- if ((db->Status = ((db->dbp)->join)(db->dbp, cursor_list, flags, &join_cursor)) == 0){
-#else
- if ((db->Status = ((db->dbp)->join)(db->dbp, cursor_list, &join_cursor, flags)) == 0){
-#endif
- ZMALLOC(RETVAL, BerkeleyDB__Cursor_type) ;
- db->open_cursors ++ ;
- RETVAL->parent_db = db ;
- RETVAL->cursor = join_cursor ;
- RETVAL->dbp = db->dbp ;
- RETVAL->type = db->type ;
- RETVAL->filename = my_strdup(db->filename) ;
- RETVAL->compare = db->compare ;
- RETVAL->dup_compare = db->dup_compare ;
- RETVAL->prefix = db->prefix ;
- RETVAL->hash = db->hash ;
- RETVAL->partial = db->partial ;
- RETVAL->doff = db->doff ;
- RETVAL->dlen = db->dlen ;
- RETVAL->active = TRUE ;
-#ifdef ALLOW_RECNO_OFFSET
- RETVAL->array_base = db->array_base ;
-#endif /* ALLOW_RECNO_OFFSET */
-#ifdef DBM_FILTERING
- RETVAL->filtering = FALSE ;
- RETVAL->filter_fetch_key = db->filter_fetch_key ;
- RETVAL->filter_store_key = db->filter_store_key ;
- RETVAL->filter_fetch_value = db->filter_fetch_value ;
- RETVAL->filter_store_value = db->filter_store_value ;
-#endif
- /* RETVAL->info ; */
- hash_store_iv("BerkeleyDB::Term::Cursor", (IV)RETVAL, 1) ;
- }
- safefree(cursor_list) ;
-#endif /* Berkeley DB >= 2.5.2 */
- }
- OUTPUT:
- RETVAL
-
-int
-ArrayOffset(db)
- BerkeleyDB::Common db
- INIT:
- ckActive_Database(db->active) ;
- CODE:
-#ifdef ALLOW_RECNO_OFFSET
- RETVAL = db->array_base ? 0 : 1 ;
-#else
- RETVAL = 0 ;
-#endif /* ALLOW_RECNO_OFFSET */
- OUTPUT:
- RETVAL
-
-int
-type(db)
- BerkeleyDB::Common db
- INIT:
- ckActive_Database(db->active) ;
- CODE:
- RETVAL = db->type ;
- OUTPUT:
- RETVAL
-
-int
-byteswapped(db)
- BerkeleyDB::Common db
- INIT:
- ckActive_Database(db->active) ;
- CODE:
-#if DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR < 5
- softCrash("byteswapped needs Berkeley DB 2.5 or later") ;
-#else
-#if DB_VERSION_MAJOR == 2
- RETVAL = db->dbp->byteswapped ;
-#else
- RETVAL = db->dbp->get_byteswapped(db->dbp) ;
-#endif
-#endif
- OUTPUT:
- RETVAL
-
-DualType
-status(db)
- BerkeleyDB::Common db
- CODE:
- RETVAL = db->Status ;
- OUTPUT:
- RETVAL
-
-#ifdef DBM_FILTERING
-
-#define setFilter(ftype) \
- { \
- if (db->ftype) \
- RETVAL = sv_mortalcopy(db->ftype) ; \
- ST(0) = RETVAL ; \
- if (db->ftype && (code == &PL_sv_undef)) { \
- SvREFCNT_dec(db->ftype) ; \
- db->ftype = NULL ; \
- } \
- else if (code) { \
- if (db->ftype) \
- sv_setsv(db->ftype, code) ; \
- else \
- db->ftype = newSVsv(code) ; \
- } \
- }
-
-
-SV *
-filter_fetch_key(db, code)
- BerkeleyDB::Common db
- SV * code
- SV * RETVAL = &PL_sv_undef ;
- CODE:
- setFilter(filter_fetch_key) ;
-
-SV *
-filter_store_key(db, code)
- BerkeleyDB::Common db
- SV * code
- SV * RETVAL = &PL_sv_undef ;
- CODE:
- setFilter(filter_store_key) ;
-
-SV *
-filter_fetch_value(db, code)
- BerkeleyDB::Common db
- SV * code
- SV * RETVAL = &PL_sv_undef ;
- CODE:
- setFilter(filter_fetch_value) ;
-
-SV *
-filter_store_value(db, code)
- BerkeleyDB::Common db
- SV * code
- SV * RETVAL = &PL_sv_undef ;
- CODE:
- setFilter(filter_store_value) ;
-
-#endif /* DBM_FILTERING */
-
-void
-partial_set(db, offset, length)
- BerkeleyDB::Common db
- u_int32_t offset
- u_int32_t length
- INIT:
- ckActive_Database(db->active) ;
- PPCODE:
- if (GIMME == G_ARRAY) {
- XPUSHs(sv_2mortal(newSViv(db->partial == DB_DBT_PARTIAL))) ;
- XPUSHs(sv_2mortal(newSViv(db->doff))) ;
- XPUSHs(sv_2mortal(newSViv(db->dlen))) ;
- }
- db->partial = DB_DBT_PARTIAL ;
- db->doff = offset ;
- db->dlen = length ;
-
-
-void
-partial_clear(db)
- BerkeleyDB::Common db
- INIT:
- ckActive_Database(db->active) ;
- PPCODE:
- if (GIMME == G_ARRAY) {
- XPUSHs(sv_2mortal(newSViv(db->partial == DB_DBT_PARTIAL))) ;
- XPUSHs(sv_2mortal(newSViv(db->doff))) ;
- XPUSHs(sv_2mortal(newSViv(db->dlen))) ;
- }
- db->partial =
- db->doff =
- db->dlen = 0 ;
-
-
-#define db_del(db, key, flags) \
- (db->Status = ((db->dbp)->del)(db->dbp, db->txn, &key, flags))
-DualType
-db_del(db, key, flags=0)
- BerkeleyDB::Common db
- DBTKEY key
- u_int flags
- INIT:
- ckActive_Database(db->active) ;
- CurrentDB = db ;
-
-
-#define db_get(db, key, data, flags) \
- (db->Status = ((db->dbp)->get)(db->dbp, db->txn, &key, &data, flags))
-DualType
-db_get(db, key, data, flags=0)
- BerkeleyDB::Common db
- u_int flags
- DBTKEY_B key
- DBT_OPT data
- INIT:
- ckActive_Database(db->active) ;
- CurrentDB = db ;
- SetPartial(data,db) ;
- OUTPUT:
- key if (flagSet(DB_SET_RECNO)) OutputValue(ST(1), key) ;
- data
-
-#define db_put(db,key,data,flag) \
- (db->Status = (db->dbp->put)(db->dbp,db->txn,&key,&data,flag))
-DualType
-db_put(db, key, data, flags=0)
- BerkeleyDB::Common db
- DBTKEY key
- DBT data
- u_int flags
- INIT:
- ckActive_Database(db->active) ;
- CurrentDB = db ;
- /* SetPartial(data,db) ; */
- OUTPUT:
- key if (flagSet(DB_APPEND)) OutputKey(ST(1), key) ;
-
-#define db_key_range(db, key, range, flags) \
- (db->Status = ((db->dbp)->key_range)(db->dbp, db->txn, &key, &range, flags))
-DualType
-db_key_range(db, key, less, equal, greater, flags=0)
- BerkeleyDB::Common db
- DBTKEY_B key
- double less = NO_INIT
- double equal = NO_INIT
- double greater = NO_INIT
- u_int32_t flags
- CODE:
- {
-#ifndef AT_LEAST_DB_3_1
- softCrash("key_range needs Berkeley DB 3.1.x or later") ;
-#else
- DB_KEY_RANGE range ;
- range.less = range.equal = range.greater = 0.0 ;
- ckActive_Database(db->active) ;
- CurrentDB = db ;
- RETVAL = db_key_range(db, key, range, flags);
- if (RETVAL == 0) {
- less = range.less ;
- equal = range.equal;
- greater = range.greater;
- }
-#endif
- }
- OUTPUT:
- RETVAL
- less
- equal
- greater
-
-
-#define db_fd(d, x) (db->Status = (db->dbp->fd)(db->dbp, &x))
-DualType
-db_fd(db)
- BerkeleyDB::Common db
- INIT:
- ckActive_Database(db->active) ;
- CODE:
- CurrentDB = db ;
- db_fd(db, RETVAL) ;
- OUTPUT:
- RETVAL
-
-
-#define db_sync(db, fl) (db->Status = (db->dbp->sync)(db->dbp, fl))
-DualType
-db_sync(db, flags=0)
- BerkeleyDB::Common db
- u_int flags
- INIT:
- ckActive_Database(db->active) ;
- CurrentDB = db ;
-
-void
-_Txn(db, txn=NULL)
- BerkeleyDB::Common db
- BerkeleyDB::Txn txn
- INIT:
- ckActive_Database(db->active) ;
- CODE:
- if (txn) {
- Trace(("_Txn(%d in %d) active [%d]\n", txn->txn, txn, txn->active));
- ckActive_Transaction(txn->active) ;
- db->txn = txn->txn ;
- }
- else {
- Trace(("_Txn(undef) \n"));
- db->txn = NULL ;
- }
-
-
-
-
-MODULE = BerkeleyDB::Cursor PACKAGE = BerkeleyDB::Cursor PREFIX = cu_
-
-BerkeleyDB::Cursor::Raw
-_c_dup(db, flags=0)
- BerkeleyDB::Cursor db
- u_int32_t flags
- BerkeleyDB::Cursor RETVAL = NULL ;
- INIT:
- CurrentDB = db->parent_db ;
- ckActive_Database(db->active) ;
- CODE:
- {
-#ifndef AT_LEAST_DB_3
- softCrash("c_dup needs at least Berkeley DB 3.0.x");
-#else
- DBC * newcursor ;
- db->Status = ((db->cursor)->c_dup)(db->cursor, &newcursor, flags) ;
- if (db->Status == 0){
- ZMALLOC(RETVAL, BerkeleyDB__Cursor_type) ;
- db->parent_db->open_cursors ++ ;
- RETVAL->parent_db = db->parent_db ;
- RETVAL->cursor = newcursor ;
- RETVAL->dbp = db->dbp ;
- RETVAL->type = db->type ;
- RETVAL->recno_or_queue = db->recno_or_queue ;
- RETVAL->filename = my_strdup(db->filename) ;
- RETVAL->compare = db->compare ;
- RETVAL->dup_compare = db->dup_compare ;
- RETVAL->prefix = db->prefix ;
- RETVAL->hash = db->hash ;
- RETVAL->partial = db->partial ;
- RETVAL->doff = db->doff ;
- RETVAL->dlen = db->dlen ;
- RETVAL->active = TRUE ;
-#ifdef ALLOW_RECNO_OFFSET
- RETVAL->array_base = db->array_base ;
-#endif /* ALLOW_RECNO_OFFSET */
-#ifdef DBM_FILTERING
- RETVAL->filtering = FALSE ;
- RETVAL->filter_fetch_key = db->filter_fetch_key ;
- RETVAL->filter_store_key = db->filter_store_key ;
- RETVAL->filter_fetch_value = db->filter_fetch_value ;
- RETVAL->filter_store_value = db->filter_store_value ;
-#endif /* DBM_FILTERING */
- /* RETVAL->info ; */
- hash_store_iv("BerkeleyDB::Term::Cursor", (IV)RETVAL, 1) ;
- }
-#endif
- }
- OUTPUT:
- RETVAL
-
-DualType
-_c_close(db)
- BerkeleyDB::Cursor db
- INIT:
- CurrentDB = db->parent_db ;
- ckActive_Cursor(db->active) ;
- hash_delete("BerkeleyDB::Term::Cursor", (IV)db) ;
- CODE:
- RETVAL = db->Status =
- ((db->cursor)->c_close)(db->cursor) ;
- db->active = FALSE ;
- if (db->parent_db->open_cursors)
- -- db->parent_db->open_cursors ;
- OUTPUT:
- RETVAL
-
-void
-_DESTROY(db)
- BerkeleyDB::Cursor db
- CODE:
- CurrentDB = db->parent_db ;
- Trace(("In BerkeleyDB::Cursor::_DESTROY db %d dirty=%d active=%d\n", db, PL_dirty, db->active));
- hash_delete("BerkeleyDB::Term::Cursor", (IV)db) ;
- if (db->active)
- ((db->cursor)->c_close)(db->cursor) ;
- if (db->parent_db->open_cursors)
- -- db->parent_db->open_cursors ;
- Safefree(db->filename) ;
- Safefree(db) ;
- Trace(("End of BerkeleyDB::Cursor::_DESTROY\n")) ;
-
-DualType
-status(db)
- BerkeleyDB::Cursor db
- CODE:
- RETVAL = db->Status ;
- OUTPUT:
- RETVAL
-
-
-#define cu_c_del(c,f) (c->Status = ((c->cursor)->c_del)(c->cursor,f))
-DualType
-cu_c_del(db, flags=0)
- BerkeleyDB::Cursor db
- int flags
- INIT:
- CurrentDB = db->parent_db ;
- ckActive_Cursor(db->active) ;
- OUTPUT:
- RETVAL
-
-
-#define cu_c_get(c,k,d,f) (c->Status = (c->cursor->c_get)(c->cursor,&k,&d,f))
-DualType
-cu_c_get(db, key, data, flags=0)
- BerkeleyDB::Cursor db
- int flags
- DBTKEY_B key
- DBT_B data
- INIT:
- Trace(("c_get db [%d] flags [%d]\n", db, flags)) ;
- CurrentDB = db->parent_db ;
- ckActive_Cursor(db->active) ;
- SetPartial(data,db) ;
- Trace(("c_get end\n")) ;
- OUTPUT:
- RETVAL
- key
- data if (! flagSet(DB_JOIN_ITEM)) OutputValue_B(ST(2), data) ;
-
-
-#define cu_c_put(c,k,d,f) (c->Status = (c->cursor->c_put)(c->cursor,&k,&d,f))
-DualType
-cu_c_put(db, key, data, flags=0)
- BerkeleyDB::Cursor db
- DBTKEY key
- DBT data
- int flags
- INIT:
- CurrentDB = db->parent_db ;
- ckActive_Cursor(db->active) ;
- /* SetPartial(data,db) ; */
- OUTPUT:
- RETVAL
-
-#define cu_c_count(c,p,f) (c->Status = (c->cursor->c_count)(c->cursor,&p,f))
-DualType
-cu_c_count(db, count, flags=0)
- BerkeleyDB::Cursor db
- u_int32_t count = NO_INIT
- int flags
- CODE:
-#ifndef AT_LEAST_DB_3_1
- softCrash("c_count needs at least Berkeley DB 3.1.x");
-#else
- Trace(("c_get count [%d] flags [%d]\n", db, flags)) ;
- CurrentDB = db->parent_db ;
- ckActive_Cursor(db->active) ;
- RETVAL = cu_c_count(db, count, flags) ;
- Trace((" c_count got %d duplicates\n", count)) ;
-#endif
- OUTPUT:
- RETVAL
- count
-
-MODULE = BerkeleyDB::TxnMgr PACKAGE = BerkeleyDB::TxnMgr PREFIX = xx_
-
-BerkeleyDB::Txn::Raw
-_txn_begin(txnmgr, pid=NULL, flags=0)
- BerkeleyDB::TxnMgr txnmgr
- BerkeleyDB::Txn pid
- u_int32_t flags
- CODE:
- {
- DB_TXN *txn ;
- DB_TXN *p_id = NULL ;
-#if DB_VERSION_MAJOR == 2
- if (txnmgr->env->Env->tx_info == NULL)
- softCrash("Transaction Manager not enabled") ;
-#endif
- if (pid)
- p_id = pid->txn ;
- txnmgr->env->TxnMgrStatus =
-#if DB_VERSION_MAJOR == 2
- txn_begin(txnmgr->env->Env->tx_info, p_id, &txn) ;
-#else
- txn_begin(txnmgr->env->Env, p_id, &txn, flags) ;
-#endif
- if (txnmgr->env->TxnMgrStatus == 0) {
- ZMALLOC(RETVAL, BerkeleyDB_Txn_type) ;
- RETVAL->txn = txn ;
- RETVAL->active = TRUE ;
- Trace(("_txn_begin created txn [%d] in [%d]\n", txn, RETVAL));
- hash_store_iv("BerkeleyDB::Term::Txn", (IV)RETVAL, 1) ;
- }
- else
- RETVAL = NULL ;
- }
- OUTPUT:
- RETVAL
-
-
-DualType
-status(mgr)
- BerkeleyDB::TxnMgr mgr
- CODE:
- RETVAL = mgr->env->TxnMgrStatus ;
- OUTPUT:
- RETVAL
-
-
-void
-_DESTROY(mgr)
- BerkeleyDB::TxnMgr mgr
- CODE:
- Trace(("In BerkeleyDB::TxnMgr::DESTROY dirty=%d\n", PL_dirty)) ;
- Safefree(mgr) ;
- Trace(("End of BerkeleyDB::TxnMgr::DESTROY\n")) ;
-
-DualType
-txn_close(txnp)
- BerkeleyDB::TxnMgr txnp
- NOT_IMPLEMENTED_YET
-
-
-#if DB_VERSION_MAJOR == 2
-# define xx_txn_checkpoint(t,k,m) txn_checkpoint(t->env->Env->tx_info, k, m)
-#else
-# ifdef AT_LEAST_DB_3_1
-# define xx_txn_checkpoint(t,k,m) txn_checkpoint(t->env->Env, k, m, 0)
-# else
-# define xx_txn_checkpoint(t,k,m) txn_checkpoint(t->env->Env, k, m)
-# endif
-#endif
-DualType
-xx_txn_checkpoint(txnp, kbyte, min)
- BerkeleyDB::TxnMgr txnp
- long kbyte
- long min
-
-HV *
-txn_stat(txnp)
- BerkeleyDB::TxnMgr txnp
- HV * RETVAL = NULL ;
- CODE:
- {
- DB_TXN_STAT * stat ;
-#if DB_VERSION_MAJOR == 2
- if(txn_stat(txnp->env->Env->tx_info, &stat, safemalloc) == 0) {
-#else
- if(txn_stat(txnp->env->Env, &stat, safemalloc) == 0) {
-#endif
- RETVAL = (HV*)sv_2mortal((SV*)newHV()) ;
- hv_store_iv(RETVAL, "st_time_ckp", stat->st_time_ckp) ;
- hv_store_iv(RETVAL, "st_last_txnid", stat->st_last_txnid) ;
- hv_store_iv(RETVAL, "st_maxtxns", stat->st_maxtxns) ;
- hv_store_iv(RETVAL, "st_naborts", stat->st_naborts) ;
- hv_store_iv(RETVAL, "st_nbegins", stat->st_nbegins) ;
- hv_store_iv(RETVAL, "st_ncommits", stat->st_ncommits) ;
- hv_store_iv(RETVAL, "st_nactive", stat->st_nactive) ;
-#if DB_VERSION_MAJOR > 2
- hv_store_iv(RETVAL, "st_maxnactive", stat->st_maxnactive) ;
- hv_store_iv(RETVAL, "st_regsize", stat->st_regsize) ;
- hv_store_iv(RETVAL, "st_region_wait", stat->st_region_wait) ;
- hv_store_iv(RETVAL, "st_region_nowait", stat->st_region_nowait) ;
-#endif
- safefree(stat) ;
- }
- }
- OUTPUT:
- RETVAL
-
-
-BerkeleyDB::TxnMgr
-txn_open(dir, flags, mode, dbenv)
- const char * dir
- int flags
- int mode
- BerkeleyDB::Env dbenv
- NOT_IMPLEMENTED_YET
-
-
-MODULE = BerkeleyDB::Txn PACKAGE = BerkeleyDB::Txn PREFIX = xx_
-
-DualType
-status(tid)
- BerkeleyDB::Txn tid
- CODE:
- RETVAL = tid->Status ;
- OUTPUT:
- RETVAL
-
-int
-_DESTROY(tid)
- BerkeleyDB::Txn tid
- CODE:
- Trace(("In BerkeleyDB::Txn::_DESTROY txn [%d] active [%d] dirty=%d\n", tid->txn, tid->active, PL_dirty)) ;
- if (tid->active)
- txn_abort(tid->txn) ;
- RETVAL = (int)tid ;
- hash_delete("BerkeleyDB::Term::Txn", (IV)tid) ;
- Safefree(tid) ;
- Trace(("End of BerkeleyDB::Txn::DESTROY\n")) ;
- OUTPUT:
- RETVAL
-
-#define xx_txn_unlink(d,f,e) txn_unlink(d,f,&(e->Env))
-DualType
-xx_txn_unlink(dir, force, dbenv)
- const char * dir
- int force
- BerkeleyDB::Env dbenv
- NOT_IMPLEMENTED_YET
-
-#define xx_txn_prepare(t) (t->Status = txn_prepare(t->txn))
-DualType
-xx_txn_prepare(tid)
- BerkeleyDB::Txn tid
- INIT:
- ckActive_Transaction(tid->active) ;
-
-#if DB_VERSION_MAJOR == 2
-# define _txn_commit(t,flags) (t->Status = txn_commit(t->txn))
-#else
-# define _txn_commit(t, flags) (t->Status = txn_commit(t->txn, flags))
-#endif
-DualType
-_txn_commit(tid, flags=0)
- BerkeleyDB::Txn tid
- u_int32_t flags
- INIT:
- ckActive_Transaction(tid->active) ;
- hash_delete("BerkeleyDB::Term::Txn", (IV)tid) ;
- tid->active = FALSE ;
-
-#define _txn_abort(t) (t->Status = txn_abort(t->txn))
-DualType
-_txn_abort(tid)
- BerkeleyDB::Txn tid
- INIT:
- ckActive_Transaction(tid->active) ;
- hash_delete("BerkeleyDB::Term::Txn", (IV)tid) ;
- tid->active = FALSE ;
-
-#define xx_txn_id(t) txn_id(t->txn)
-u_int32_t
-xx_txn_id(tid)
- BerkeleyDB::Txn tid
-
-MODULE = BerkeleyDB::_tiedHash PACKAGE = BerkeleyDB::_tiedHash
-
-int
-FIRSTKEY(db)
- BerkeleyDB::Common db
- CODE:
- {
- DBTKEY key ;
- DBT value ;
- DBC * cursor ;
-
- /*
- TODO!
- set partial value to 0 - to eliminate the retrieval of
- the value need to store any existing partial settings &
- restore at the end.
-
- */
- CurrentDB = db ;
- DBT_clear(key) ;
- DBT_clear(value) ;
- /* If necessary create a cursor for FIRSTKEY/NEXTKEY use */
- if (!db->cursor &&
- (db->Status = db_cursor(db, db->txn, &cursor, 0)) == 0 )
- db->cursor = cursor ;
-
- if (db->cursor)
- RETVAL = (db->Status) =
- ((db->cursor)->c_get)(db->cursor, &key, &value, DB_FIRST);
- else
- RETVAL = db->Status ;
- /* check for end of cursor */
- if (RETVAL == DB_NOTFOUND) {
- ((db->cursor)->c_close)(db->cursor) ;
- db->cursor = NULL ;
- }
- ST(0) = sv_newmortal();
- OutputKey(ST(0), key)
- }
-
-
-
-int
-NEXTKEY(db, key)
- BerkeleyDB::Common db
- DBTKEY key
- CODE:
- {
- DBT value ;
-
- CurrentDB = db ;
- DBT_clear(value) ;
- key.flags = 0 ;
- RETVAL = (db->Status) =
- ((db->cursor)->c_get)(db->cursor, &key, &value, DB_NEXT);
-
- /* check for end of cursor */
- if (RETVAL == DB_NOTFOUND) {
- ((db->cursor)->c_close)(db->cursor) ;
- db->cursor = NULL ;
- }
- ST(0) = sv_newmortal();
- OutputKey(ST(0), key)
- }
-
-MODULE = BerkeleyDB::_tiedArray PACKAGE = BerkeleyDB::_tiedArray
-
-I32
-FETCHSIZE(db)
- BerkeleyDB::Common db
- CODE:
- CurrentDB = db ;
- RETVAL = GetArrayLength(db) ;
- OUTPUT:
- RETVAL
-
-
-MODULE = BerkeleyDB PACKAGE = BerkeleyDB
-
-BOOT:
- {
- SV * sv_err = perl_get_sv(ERR_BUFF, GV_ADD|GV_ADDMULTI) ;
- SV * version_sv = perl_get_sv("BerkeleyDB::db_version", GV_ADD|GV_ADDMULTI) ;
- SV * ver_sv = perl_get_sv("BerkeleyDB::db_ver", GV_ADD|GV_ADDMULTI) ;
- int Major, Minor, Patch ;
- (void)db_version(&Major, &Minor, &Patch) ;
- /* Check that the versions of db.h and libdb.a are the same */
- if (Major != DB_VERSION_MAJOR || Minor != DB_VERSION_MINOR
- || Patch != DB_VERSION_PATCH)
- croak("\nBerkeleyDB needs compatible versions of libdb & db.h\n\tyou have db.h version %d.%d.%d and libdb version %d.%d.%d\n",
- DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
- Major, Minor, Patch) ;
-
- if (Major < 2 || (Major == 2 && Minor < 6))
- {
- croak("BerkeleyDB needs Berkeley DB 2.6 or greater. This is %d.%d.%d\n",
- Major, Minor, Patch) ;
- }
- sv_setpvf(version_sv, "%d.%d", Major, Minor) ;
- sv_setpvf(ver_sv, "%d.%03d%03d", Major, Minor, Patch) ;
- sv_setpv(sv_err, "");
-
- DBT_clear(empty) ;
- empty.data = &zero ;
- empty.size = sizeof(db_recno_t) ;
- empty.flags = 0 ;
-
- }
-
diff --git a/db/perl.BerkeleyDB/BerkeleyDB/Btree.pm b/db/perl.BerkeleyDB/BerkeleyDB/Btree.pm
deleted file mode 100644
index ba9a9c008..000000000
--- a/db/perl.BerkeleyDB/BerkeleyDB/Btree.pm
+++ /dev/null
@@ -1,8 +0,0 @@
-
-package BerkeleyDB::Btree ;
-
-# This file is only used for MLDBM
-
-use BerkeleyDB ;
-
-1 ;
diff --git a/db/perl.BerkeleyDB/BerkeleyDB/Hash.pm b/db/perl.BerkeleyDB/BerkeleyDB/Hash.pm
deleted file mode 100644
index 8e7bc7e78..000000000
--- a/db/perl.BerkeleyDB/BerkeleyDB/Hash.pm
+++ /dev/null
@@ -1,8 +0,0 @@
-
-package BerkeleyDB::Hash ;
-
-# This file is only used for MLDBM
-
-use BerkeleyDB ;
-
-1 ;
diff --git a/db/perl.BerkeleyDB/Changes b/db/perl.BerkeleyDB/Changes
deleted file mode 100644
index dcaccd4d0..000000000
--- a/db/perl.BerkeleyDB/Changes
+++ /dev/null
@@ -1,112 +0,0 @@
-Revision history for Perl extension BerkeleyDB.
-
-0.01 23 October 1997
- * first alpha release as BerkDB.
-
-0.02 30 October 1997
- * renamed module to BerkeleyDB
- * fixed a few bugs & added more tests
-
-0.03 5 May 1998
- * fixed db_get with DB_SET_RECNO
- * fixed c_get with DB_SET_RECNO and DB_GET_RECNO
- * implemented BerkeleyDB::Unknown
- * implemented BerkeleyDB::Recno, including push, pop etc
- modified the txn support.
-
-0.04 19 May 1998
- * Define DEFSV & SAVE_DEFSV if not already defined. This allows
- the module to be built with Perl 5.004_04.
-
-0.05 9 November 1998
- * Added a note to README about how to build Berkeley DB 2.x
- when using HP-UX.
- * Minor modifications to get the module to build with DB 2.5.x
-
-0.06 19 December 1998
- * Minor modifications to get the module to build with DB 2.6.x
- * Added support for DB 2.6.x's Concurrent Access Method, DB_INIT_CDB.
-
-0.07 21st September 1999
- * Numerous small bug fixes.
- * Added support for sorting duplicate values DB_DUPSORT.
- * Added support for DB_GET_BOTH & DB_NEXT_DUP.
- * Added get_dup (from DB_File).
- * beefed up the documentation.
- * Forgot to add the DB_INIT_CDB in BerkeleyDB.pm in previous release.
- * Merged the DBM Filter code from DB_File into BerkeleyDB.
- * Fixed a nasty bug where a closed transaction was still used with
- with dp_put, db_get etc.
- * Added logic to gracefully close everything whenever a fatal error
- happens. Previously the plug was just pulled.
- * It is now a fatal error to explicitly close an environment if there
- is still an open database; a database when there are open cursors or
- an open transaction; and a cursor if there is an open transaction.
- Using object destruction doesn't have this issue, as object
- references will ensure everything gets closed in the correct order.
- * The BOOT code now checks that the version of db.h & libdb are the
- same - this seems to be a common problem on Linux.
- * MLDBM support added.
- * Support for the new join cursor added.
- * Builds with Berkeley DB 3.x
- * Updated dbinfo for Berkeley DB 3.x file formats.
- * Deprecated the TxnMgr class. As with Berkeley DB version 3,
- txn_begin etc are now accessed via the environment object.
-
-0.08 28nd November 1999
- * More documentation updates
- * Changed reference to files in /tmp in examples.t
- * Fixed a typo in softCrash that caused problems when building
- with a thread-enabled Perl.
- * BerkeleyDB::Error wasn't initialised properly.
- * ANSI-ified all the static C functions in BerkeleyDB.xs
- * Added support for the following DB 3.x features:
- + The Queue database type
- + db_remove
- + subdatabases
- + db_stat for Hash & Queue
-
-0.09 29th November 1999
- * the queue.t & subdb.t test harnesses were outputting a few
- spurious warnings. This has been fixed.
-
-0.10 8th December 1999
- * The DESTROY method was missing for BerkeleyDB::Env. This resulted in
- a memory leak. Fixed.
- * If opening an environment or database failed, there was a small
- memory leak. This has been fixed.
- * A thread-enabled Perl it could core when a database was closed.
- Problem traced to the strdup function.
-
-0.11 4th June 2000
- * When built with Berkeley Db 3.x there can be a clash with the close
- macro.
- * Typo in the definition of DB_WRITECURSOR
- * The flags parameter wasn't getting sent to db_cursor
- * Plugged small memory leak in db_cursor (DESTROY wasn't freeing
- memory)
- * Can be built with Berkeley DB 3.1
-
-
-0.12 2nd August 2000
- * Serious bug with get fixed. Spotted by Sleepycat.
- * Added hints file for Solaris & Irix (courtesy of Albert Chin-A-Young)
-
-0.13 15th January 2001
- * Added support to allow this module to build with Berkeley DB 3.2
- * Updated dbinfo to support Berkeley DB 3.1 & 3.2 file format
- changes.
- * Documented the Solaris 2.7 core dump problem in README.
- * Tidied up the test harness to fix a problem on Solaris where the
- "fred" directory wasn't being deleted when it should have been.
- * two calls to "open" clashed with a win32 macro.
- * size argument for hash_cb is different for Berkeley DB 3.x
- * Documented the issue of building on Linux.
- * Added -Server, -CacheSize & -LockDetect options
- [original patch supplied by Graham Barr]
- * Added support for set_mutexlocks, c_count, set_q_extentsize,
- key_range, c_dup
- * Dropped the "attempted to close a Cursor with an open transaction"
- error in c_close. The correct behaviour is that the cursor
- should be closed before committing/aborting the transaction.
-
diff --git a/db/perl.BerkeleyDB/MANIFEST b/db/perl.BerkeleyDB/MANIFEST
deleted file mode 100644
index 3b8a820d5..000000000
--- a/db/perl.BerkeleyDB/MANIFEST
+++ /dev/null
@@ -1,49 +0,0 @@
-BerkeleyDB.pm
-BerkeleyDB.pod
-BerkeleyDB.pod.P
-BerkeleyDB.xs
-BerkeleyDB/Btree.pm
-BerkeleyDB/Hash.pm
-Changes
-config.in
-dbinfo
-hints/solaris.pl
-hints/irix_6_5.pl
-Makefile.PL
-MANIFEST
-mkconsts
-mkpod
-README
-t/btree.t
-t/db-3.0.t
-t/db-3.1.t
-t/db-3.2.t
-t/destroy.t
-t/env.t
-t/examples.t
-t/examples.t.T
-t/examples3.t
-t/examples3.t.T
-t/filter.t
-t/hash.t
-t/join.t
-t/mldbm.t
-t/queue.t
-t/recno.t
-t/strict.t
-t/subdb.t
-t/txn.t
-t/unknown.t
-Todo
-typemap
-patches/5.004
-patches/5.004_01
-patches/5.004_02
-patches/5.004_03
-patches/5.004_04
-patches/5.004_05
-patches/5.005
-patches/5.005_01
-patches/5.005_02
-patches/5.005_03
-patches/5.6.0
diff --git a/db/perl.BerkeleyDB/Makefile.PL b/db/perl.BerkeleyDB/Makefile.PL
deleted file mode 100644
index 399a67618..000000000
--- a/db/perl.BerkeleyDB/Makefile.PL
+++ /dev/null
@@ -1,112 +0,0 @@
-#! perl -w
-
-# It should not be necessary to edit this file. The configuration for
-# BerkeleyDB is controlled from the file config.in
-
-
-BEGIN { die "BerkeleyDB needs Perl 5.004_04 or greater" if $] < 5.004_04 ; }
-
-use strict ;
-use ExtUtils::MakeMaker ;
-
-my $LIB_DIR ;
-my $INC_DIR ;
-my $DB_NAME ;
-my $LIBS ;
-
-ParseCONFIG() ;
-
-if (defined $DB_NAME)
- { $LIBS = $DB_NAME }
-else {
- if ($^O eq 'MSWin32')
- { $LIBS = '-llibdb' }
- else
- { $LIBS = '-ldb' }
-}
-
-# OS2 is a special case, so check for it now.
-my $OS2 = "" ;
-$OS2 = "-DOS2" if $^O eq 'os2' ;
-
-WriteMakefile(
- NAME => 'BerkeleyDB',
- LIBS => ["-L${LIB_DIR} $LIBS"],
- MAN3PODS => ' ', # Pods will be built by installman.
- INC => "-I$INC_DIR",
- VERSION_FROM => 'BerkeleyDB.pm',
- XSPROTOARG => '-noprototypes',
- DEFINE => "$OS2",
- #'macro' => { INSTALLDIRS => 'perl' },
- 'dist' => {COMPRESS=>'gzip', SUFFIX=>'gz'},
- ($] >= 5.005
- ? (ABSTRACT_FROM => 'BerkeleyDB.pod',
- AUTHOR => 'Paul Marquess <Paul.Marquess@btinternet.com>')
- : ()
- ),
- );
-
-
-sub MY::postamble {
- '
-$(NAME).pod: $(NAME).pod.P t/examples.t.T t/examples3.t.T mkpod
- perl ./mkpod
-
-$(NAME).xs: typemap
- @$(TOUCH) $(NAME).xs
-
-Makefile: config.in
-
-
-' ;
-}
-
-sub ParseCONFIG
-{
- my ($k, $v) ;
- my @badkey = () ;
- my %Info = () ;
- my @Options = qw( INCLUDE LIB DBNAME ) ;
- my %ValidOption = map {$_, 1} @Options ;
- my %Parsed = %ValidOption ;
- my $CONFIG = 'config.in' ;
-
- print "Parsing $CONFIG...\n" ;
-
- # DBNAME is optional, so pretend it has been parsed.
- delete $Parsed{'DBNAME'} ;
-
- open(F, "$CONFIG") or die "Cannot open file $CONFIG: $!\n" ;
- while (<F>) {
- s/^\s*|\s*$//g ;
- next if /^\s*$/ or /^\s*#/ ;
- s/\s*#\s*$// ;
-
- ($k, $v) = split(/\s+=\s+/, $_, 2) ;
- $k = uc $k ;
- if ($ValidOption{$k}) {
- delete $Parsed{$k} ;
- $Info{$k} = $v ;
- }
- else {
- push(@badkey, $k) ;
- }
- }
- close F ;
-
- print "Unknown keys in $CONFIG ignored [@badkey]\n"
- if @badkey ;
-
- # check parsed values
- my @missing = () ;
- die "The following keys are missing from $CONFIG file: [@missing]\n"
- if @missing = keys %Parsed ;
-
- $INC_DIR = $ENV{'BERKELEYDB_INCLUDE'} || $Info{'INCLUDE'} ;
- $LIB_DIR = $ENV{'BERKELEYDB_LIB'} || $Info{'LIB'} ;
- $DB_NAME = $Info{'DBNAME'} if defined $Info{'DBNAME'} ;
- print "Looks Good.\n" ;
-
-}
-
-# end of file Makefile.PL
diff --git a/db/perl.BerkeleyDB/README b/db/perl.BerkeleyDB/README
deleted file mode 100644
index aa905fa80..000000000
--- a/db/perl.BerkeleyDB/README
+++ /dev/null
@@ -1,464 +0,0 @@
- BerkeleyDB
-
- Version 0.13
-
- 15th Jan 2001
-
- Copyright (c) 1997-2001 Paul Marquess. All rights reserved. This
- program is free software; you can redistribute it and/or modify
- it under the same terms as Perl itself.
-
-
-DESCRIPTION
------------
-
-BerkeleyDB is a module which allows Perl programs to make use of the
-facilities provided by Berkeley DB version 2 or 3. (Note: if you want
-to use version 1 of Berkeley DB with Perl you need the DB_File module).
-
-Berkeley DB is a C library which provides a consistent interface to a
-number of database formats. BerkeleyDB provides an interface to all
-four of the database types (hash, btree, queue and recno) currently
-supported by Berkeley DB.
-
-For further details see the documentation in the file BerkeleyDB.pod.
-
-PREREQUISITES
--------------
-
-Before you can build BerkeleyDB you need to have the following
-installed on your system:
-
- * Perl 5.004_04 or greater.
-
- * Berkeley DB Version 2.6.4 or greater
-
- The official web site for Berkeley DB is http://www.sleepycat.com
-
- The latest version of Berkeley DB is always available there. It
- is recommended that you use the most recent version available at
- the Sleepycat site.
-
- The one exception to this advice is where you want to use BerkeleyDB
- to access database files created by a third-party application,
- like Sendmail. In these cases you must build BerkeleyDB with a
- compatible version of Berkeley DB.
-
-
-BUILDING THE MODULE
--------------------
-
-Assuming you have met all the prerequisites, building the module should
-be relatively straightforward.
-
-Step 1 : If you are running Solaris 2.5, 2.7 or HP-UX 10 read either
- the Solaris Notes or HP-UX Notes sections below.
- If you are running Linux please read the Linux Notes section
- before proceeding.
-
-
-Step 2 : Edit the file config.in to suit you local installation.
- Instructions are given in the file.
-
-Step 3 : Build and test the module using this sequence of commands:
-
- perl Makefile.PL
- make
- make test
-
-INSTALLATION
-------------
-
- make install
-
-TROUBLESHOOTING
-===============
-
-Here are some of the problems that people encounter when building BerkeleyDB.
-
-Missing db.h or libdb.a
------------------------
-
-If you get an error like this:
-
- cc -c -I./libraries/ -Dbool=char -DHAS_BOOL -I/usr/local/include -O2
- -DVERSION=\"0.07\" -DXS_VERSION=\"0.07\" -fpic
- -I/usr/local/lib/perl5/5.00503/i586-linux/CORE BerkeleyDB.c
- BerkeleyDB.xs:52: db.h: No such file or directory
-
-or this:
-
- cc -c -I./libraries/2.7.5 -Dbool=char -DHAS_BOOL -I/usr/local/include -O2
- -DVERSION=\"0.07\" -DXS_VERSION=\"0.07\" -fpic
- -I/usr/local/lib/perl5/5.00503/i586-linux/CORE BerkeleyDB.c
- LD_RUN_PATH="/lib" cc -o blib/arch/auto/BerkeleyDB/BerkeleyDB.so -shared
- -L/usr/local/lib BerkeleyDB.o
- -L/home/paul/perl/ext/BerkDB/BerkeleyDB/libraries -ldb
- ld: cannot open -ldb: No such file or directory
-
-This symptom can imply:
-
- 1. You don't have Berkeley DB installed on your system at all.
- Solution: get & install Berkeley DB.
-
- 2. You do have Berkeley DB installed, but it isn't in a standard place.
- Solution: Edit config.in and set the LIB and INCLUDE variables to point
- to the directories where libdb.a and db.h are installed.
-
-Wrong db.h
-----------
-
-If you get an error like this when building this module:
-
- cc -c -I./libraries/ -Dbool=char -DHAS_BOOL -I/usr/local/include -O2
- -DVERSION=\"0.07\" -DXS_VERSION=\"0.07\" -fpic
- -I/usr/local/lib/perl5/5.00503/i586-linux/CORE BerkeleyDB.c
- BerkeleyDB.xs:93: parse error before `DB_INFO'
- BerkeleyDB.xs:93: warning: no semicolon at end of struct or union
- BerkeleyDB.xs:94: warning: data definition has no type or storage class
- BerkeleyDB.xs:95: parse error before `0x80000000'
- BerkeleyDB.xs:110: parse error before `}'
- BerkeleyDB.xs:110: warning: data definition has no type or storage class
- BerkeleyDB.xs:117: parse error before `DB_ENV'
- ...
-
-This error usually happens when if you only have Berkeley DB version 1
-on your system or you have both version 1 and version 2 (or 3) of Berkeley
-DB installed on your system. When building BerkeleyDB it attempts
-to use the db.h for Berkeley DB version 1. This perl module can only
-be built with Berkeley DB version 2 or 3.
-
-This symptom can imply:
-
- 1. You don't have Berkeley DB version 2 or 3 installed on your system
- at all.
- Solution: get & install Berkeley DB.
-
- 2. You do have Berkeley DB 2 or 3 installed, but it isn't in a standard
- place.
- Solution: Edit config.in and set the LIB and INCLUDE variables
- to point to the directories where libdb.a and db.h are
- installed.
-
-Undefined Symbol: txn_stat
---------------------------
-
-BerkeleyDB seems to have built correctly, but you get an error like this
-when you run the test harness:
-
- $ make test
- PERL_DL_NONLAZY=1 /home/paul/perl/install/bin/perl5.00503
- -Iblib/arch -Iblib/lib -I/usr/local/lib/perl5/5.00503/i586-linux
- -I/usr/local/lib/perl5/5.00503 -e 'use Test::Harness qw(&runtests $verbose);
- $verbose=0; runtests @ARGV;' t/*.t
- t/btree.............Can't load 'blib/arch/auto/BerkeleyDB/BerkeleyDB.so' for
- module BerkeleyDB: blib/arch/auto/BerkeleyDB/BerkeleyDB.so:
- undefined symbol: txn_stat
- at /usr/local/lib/perl5/5.00503/i586-linux/DynaLoader.pm line 169.
- ...
-
-This error usually happens when you have both version 1 and version
-2 (or 3) of Berkeley DB installed on your system and BerkeleyDB attempts
-to build using the db.h for Berkeley DB version 2/3 and the version 1
-library. Unfortunately the two versions aren't compatible with each
-other. BerkeleyDB can only be built with Berkeley DB version 2 or 3.
-
-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 BerkeleyDB to use.
-
-Undefined Symbol: db_appinit
-----------------------------
-
-BerkeleyDB seems to have built correctly, but you get an error like this
-when you run the test harness:
-
- $ make test
- PERL_DL_NONLAZY=1 /home/paul/perl/install/bin/perl5.00561 -Iblib/arch
- -Iblib/lib -I/home/paul/perl/install/5.005_61/lib/5.00561/i586-linux
- -I/home/paul/perl/install/5.005_61/lib/5.00561 -e 'use Test::Harness
- qw(&runtests $verbose); $verbose=0; runtests @ARGV;' t/*.t
- t/btree.............Can't load 'blib/arch/auto/BerkeleyDB/BerkeleyDB.so' for
- module BerkeleyDB: blib/arch/auto/BerkeleyDB/BerkeleyDB.so:
- undefined symbol: db_appinit
- at /home/paul/perl/install/5.005_61/lib/5.00561/i586-linux/DynaLoader.pm
- ...
-
-
-This error usually happens when you have both version 2 and version
-3 of Berkeley DB installed on your system and BerkeleyDB attempts
-to build using the db.h for Berkeley DB version 2 and the version 3
-library. Unfortunately the two versions aren't compatible with each
-other.
-
-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 BerkeleyDB to use.
-
-Undefined Symbol: db_create
----------------------------
-
-BerkeleyDB seems to have built correctly, but you get an error like this
-when you run the test harness:
-
- $ make test
- PERL_DL_NONLAZY=1 /home/paul/perl/install/bin/perl5.00561 -Iblib/arch
- -Iblib/lib -I/home/paul/perl/install/5.005_61/lib/5.00561/i586-linux
- -I/home/paul/perl/install/5.005_61/lib/5.00561 -e 'use Test::Harness
- qw(&runtests $verbose); $verbose=0; runtests @ARGV;' t/*.t
- t/btree.............Can't load 'blib/arch/auto/BerkeleyDB/BerkeleyDB.so' for
- module BerkeleyDB: blib/arch/auto/BerkeleyDB/BerkeleyDB.so:
- undefined symbol: db_create
- at /home/paul/perl/install/5.005_61/lib/5.00561/i586-linux/DynaLoader.pm
- ...
-
-This error usually happens when you have both version 2 and version
-3 of Berkeley DB installed on your system and BerkeleyDB attempts
-to build using the db.h for Berkeley DB version 3 and the version 2
-library. Unfortunately the two versions aren't compatible with each
-other.
-
-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 BerkeleyDB to use.
-
-
-Incompatible versions of db.h and libdb
----------------------------------------
-
-BerkeleyDB seems to have built correctly, but you get an error like this
-when you run the test harness:
-
- $ make test
- PERL_DL_NONLAZY=1 /home/paul/perl/install/bin/perl5.00503
- -Iblib/arch -Iblib/lib -I/usr/local/lib/perl5/5.00503/i586-linux
- -I/usr/local/lib/perl5/5.00503 -e 'use Test::Harness qw(&runtests $verbose);
- $verbose=0; runtests @ARGV;' t/*.t
- t/btree.............
- BerkeleyDB needs compatible versions of libdb & db.h
- you have db.h version 2.6.4 and libdb version 2.7.5
- BEGIN failed--compilation aborted at t/btree.t line 25.
- dubious
- Test returned status 255 (wstat 65280, 0xff00)
- ...
-
-Another variation on the theme of having two versions of Berkeley DB on
-your system.
-
-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 BerkeleyDB to use.
- If you are running Linux, please read the Linux Notes section below.
-
-
-Linux Notes
------------
-
-Newer versions of Linux (e.g. RedHat 6, SuSe 6) ship with a C library
-that has version 2.x of Berkeley DB linked into it. This makes it
-difficult to build this module with anything other than the version of
-Berkeley DB that shipped with your Linux release. If you do try to use
-a different version of Berkeley DB you will most likely get the error
-described in the "Incompatible versions of db.h and libdb" section of
-this file.
-
-To make matters worse, prior to Perl 5.6.1, the perl binary itself
-*always* included the Berkeley DB library.
-
-If you want to use a newer version of Berkeley DB with this module, the
-easiest solution is to use Perl 5.6.1 (or better) and Berkeley DB 3.x
-(or better).
-
-There are two approaches you can use to get older versions of Perl to
-work with specific versions of Berkeley DB. Both have their advantages
-and disadvantages.
-
-The first approach will only work when you want to build a version of
-Perl older than 5.6.1 along with Berkeley DB 3.x. If you want to use
-Berkeley DB 2.x, you must use the next approach. This approach involves
-rebuilding your existing version of Perl after applying an unofficial
-patch. The "patches" directory in the this module's source distribution
-contains a number of patch files. There is one patch file for every
-stable version of Perl since 5.004. Apply the appropriate patch to your
-Perl source tree before re-building and installing Perl from scratch.
-For example, assuming you are in the top-level source directory for
-Perl 5.6.0, the command below will apply the necessary patch. Remember
-to replace the path shown below with one that points to this module's
-patches directory.
-
- patch -p1 -N </path/to/BerkeleyDB/patches/5.6.0
-
-Now rebuild & install perl. You should now have a perl binary that can
-be used to build this module. Follow the instructions in "BUILDING THE
-MODULE", remembering to set the INCLUDE and LIB variables in config.in.
-
-
-The second approach will work with both Berkeley DB 2.x and 3.x.
-Start by building Berkeley DB as a shared library. This is from
-the Berkeley DB build instructions:
-
- Building Shared Libraries for the GNU GCC compiler
-
- If you're using gcc and there's no better shared library example for
- your architecture, the following shared library build procedure will
- probably work.
-
- Add the -fpic option to the CFLAGS value in the Makefile.
-
- Rebuild all of your .o files. This will create a Berkeley DB library
- that contains .o files with PIC code. To build the shared library,
- then take the following steps in the library build directory:
-
- % mkdir tmp
- % cd tmp
- % ar xv ../libdb.a
- % gcc -shared -o libdb.so *.o
- % mv libdb.so ..
- % cd ..
- % rm -rf tmp
-
- Note, you may have to change the gcc line depending on the
- requirements of your system.
-
- The file libdb.so is your shared library
-
-Once you have built libdb.so, you will need to store it somewhere safe.
-
- cp libdb.so /usr/local/BerkeleyDB/lib
-
-If you now set the LD_PRELOAD environment variable to point to this
-shared library, Perl will use it instead of the version of Berkeley DB
-that shipped with your Linux distribution.
-
- export LD_PRELOAD=/usr/local/BerkeleyDB/lib/libdb.so
-
-Finally follow the instructions in "BUILDING THE MODULE" to build,
-test and install this module. Don't forget to set the INCLUDE and LIB
-variables in config.in.
-
-Remember, you will need to have the LD_PRELOAD variable set anytime you
-want to use Perl with Berkeley DB. Also note that if you have LD_PRELOAD
-permanently set it will affect ALL commands you execute. This may be a
-problem if you run any commands that access a database created by the
-version of Berkeley DB that shipped with your Linux distribution.
-
-
-
-Solaris 2.5 Notes
------------------
-
-If you are running Solaris 2.5, and you get this error when you run the
-BerkeleyDB test harness:
-
- libc internal error: _rmutex_unlock: rmutex not held.
-
-you probably need to install a Sun patch. It has been reported that
-Sun patch 103187-25 (or later revisions) fixes this problem.
-
-To find out if you have the patch installed, the command "showrev -p"
-will display the patches that are currently installed on your system.
-
-Solaris 2.7 Notes
------------------
-
-If you are running Solaris 2.7 and all the tests in the test harness
-generate a core dump, try applying Sun patch 106980-09 (or better).
-
-To find out if you have the patch installed, the command "showrev -p"
-will display the patches that are currently installed on your system.
-
-
-HP-UX Notes
------------
-
-Some people running HP-UX 10 have reported getting an error like this
-when building this module with the native HP-UX compiler.
-
- ld: (Warning) At least one PA 2.0 object file (BerkeleyDB.o) was detected.
- The linked output may not run on a PA 1.x system.
- ld: Invalid loader fixup for symbol "$000000A5".
-
-If this is the case for you, Berkeley DB needs to be recompiled with
-the +z or +Z option and the resulting library placed in a .sl file. The
-following steps should do the trick:
-
- 1: Configure the Berkeley DB distribution with the +z or +Z C compiler
- flag:
-
- env "CFLAGS=+z" ../dist/configure ...
-
- 2: Edit the Berkeley DB Makefile and change:
-
- "libdb= libdb.a" to "libdb= libdb.sl".
-
- 3: Build and install the Berkeley DB distribution as usual.
-
-
-
-FEEDBACK
---------
-
-How to report a problem with BerkeleyDB.
-
-To help me help you, I need of the following information:
-
- 1. The version of Perl and the operating system name and version you
- are running. The complete output from running "perl -V" will tell
- me all I need to know.
- If your perl does not understand the "-V" option is too old.
- BerkeleyDB needs Perl version 5.004_04 or better.
-
- 2. The version of BerkeleyDB you have. If you have successfully
- installed BerkeleyDB, this one-liner will tell you:
-
- perl -MBerkeleyDB -e 'print "BerkeleyDB ver $BerkeleyDB::VERSION\n"'
-
- If you haven't installed BerkeleyDB then search BerkeleyDB.pm for a
- line like this:
-
- $VERSION = "1.20" ;
-
- 3. The version of Berkeley DB you have installed. If you have
- successfully installed BerkeleyDB, this one-liner will tell you:
-
- perl -MBerkeleyDB -e 'print BerkeleyDB::DB_VERSION_STRING."\n"'
-
- If you haven't installed BerkeleyDB then search db.h for a line
- like this:
-
- #define DB_VERSION_STRING
-
- 4. If you are having problems building BerkeleyDB, send me a complete
- log of what happened.
-
- 5. Now the difficult one. If you think you have found a bug in
- BerkeleyDB and you want me to fix it, you will *greatly* enhance
- the chances of me being able to track it down by sending me a small
- self-contained Perl script that illustrates the problem you are
- encountering. Include a summary of what you think the problem is
- and a log of what happens when you run the script, in case I can't
- reproduce your problem on my system. If possible, don't have the
- script dependent on an existing 20Meg database. If the script you
- send me can create the database itself then that is preferred.
-
- I realise that in some cases this is easier said than done, so if
- you can only reproduce the problem in your existing script, then
- you can post me that if you want. Just don't expect me to find your
- problem in a hurry, or at all. :-)
-
-
-CHANGES
--------
-
-See the Changes file.
-
-Paul Marquess <Paul.Marquess@btinternet.com>
-
diff --git a/db/perl.BerkeleyDB/Todo b/db/perl.BerkeleyDB/Todo
deleted file mode 100644
index 12d53bcf9..000000000
--- a/db/perl.BerkeleyDB/Todo
+++ /dev/null
@@ -1,57 +0,0 @@
-
- * Proper documentation.
-
- * address or document the "close all cursors if you encounter an error"
-
- * Change the $BerkeleyDB::Error to store the info in the db object,
- if possible.
-
- * $BerkeleyDB::db_version is documented. &db_version isn't.
-
- * migrate perl code into the .xs file where necessary
-
- * convert as many of the DB examples files to BerkeleyDB format.
-
- * add a method to the DB object to allow access to the environment (if there
- actually is one).
-
-
-Possibles
-
- * use '~' magic to store the inner data.
-
- * for the get stuff zap the value to undef if it doesn't find the
- key. This may be more intuitive for those folks who are used with
- the $hash{key} interface.
-
- * Text interface? This can be done as via Recno
-
- * allow recno to allow base offset for arrays to be either 0 or 1.
-
- * when duplicate keys are enabled, allow db_put($key, [$val1, $val2,...])
-
-
-2.x -> 3.x Upgrade
-==================
-
-Environment Verbose
-Env->open mode
-DB cache size extra parameter
-DB->open subdatabases Done
-An empty environment causes DB->open to fail
-where is __db.001 coming from? db_remove seems to create it. Bug in 3.0.55
-Change db_strerror for 0 to ""? Done
-Queue Done
-db_stat for Hash & Queue Done
-No TxnMgr
-DB->remove
-ENV->remove
-ENV->set_verbose
-upgrade
-
- $env = BerkeleyDB::Env::Create
- $env = create BerkeleyDB::Env
- $status = $env->open()
-
- $db = BerkeleyDB::Hash::Create
- $status = $db->open()
diff --git a/db/perl.BerkeleyDB/config.in b/db/perl.BerkeleyDB/config.in
deleted file mode 100644
index c23e6689c..000000000
--- a/db/perl.BerkeleyDB/config.in
+++ /dev/null
@@ -1,51 +0,0 @@
-# Filename: config.in
-#
-# written by Paul Marquess <Paul.Marquess@btinternet.com>
-
-# 1. Where is the file db.h?
-#
-# 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 = ./libraries/3.0.55
-#INCLUDE = ./libraries/3.1.17
-INCLUDE = ./libraries/3.2.7
-
-# 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 = ./libraries/3.0.55
-#LIB = ./libraries/3.1.17
-LIB = ./libraries/3.2.7
-
-# 3. Is the library called libdb?
-#
-# If you have copies of both 1.x and 2.x Berkeley DB installed on
-# your system it can sometimes be tricky to make sure you are using
-# the correct one. Renaming one (or creating a symbolic link) to
-# include the version number of the library can help.
-#
-# For example, if you have Berkeley DB 2.6.4 you could rename the
-# Berkeley DB library from libdb.a to libdb-2.6.4.a and change the
-# DBNAME line below to look like this:
-#
-# DBNAME = -ldb-2.6.4
-#
-# Note: If you are building this module with Win32, -llibdb will be
-# used by default.
-#
-# If you have changed the name of the library, uncomment the line
-# below (by removing the leading #) and edit the line to use the name
-# you have picked.
-
-#DBNAME = -ldb-3.0
-
-# end of file config.in
diff --git a/db/perl.BerkeleyDB/dbinfo b/db/perl.BerkeleyDB/dbinfo
deleted file mode 100755
index 415411aff..000000000
--- a/db/perl.BerkeleyDB/dbinfo
+++ /dev/null
@@ -1,109 +0,0 @@
-#!/usr/local/bin/perl
-
-# Name: dbinfo -- identify berkeley DB version used to create
-# a database file
-#
-# Author: Paul Marquess <Paul.Marquess@btinternet.com>
-# Version: 1.03
-# Date 17th September 2000
-#
-# Copyright (c) 1998-2001 Paul Marquess. All rights reserved.
-# This program is free software; you can redistribute it and/or
-# modify it under the same terms as Perl itself.
-
-# Todo: Print more stats on a db file, e.g. no of records
-# add log/txn/lock files
-
-use strict ;
-
-my %Data =
- (
- 0x053162 => {
- Type => "Btree",
- Versions =>
- {
- 1 => "Unknown (older than 1.71)",
- 2 => "Unknown (older than 1.71)",
- 3 => "1.71 -> 1.85, 1.86",
- 4 => "Unknown",
- 5 => "2.0.0 -> 2.3.0",
- 6 => "2.3.1 -> 2.7.7",
- 7 => "3.0.x",
- 8 => "3.1.x or greater",
- }
- },
- 0x061561 => {
- Type => "Hash",
- Versions =>
- {
- 1 => "Unknown (older than 1.71)",
- 2 => "1.71 -> 1.85",
- 3 => "1.86",
- 4 => "2.0.0 -> 2.1.0",
- 5 => "2.2.6 -> 2.7.7",
- 6 => "3.0.x",
- 7 => "3.1.x or greater",
- }
- },
- 0x042253 => {
- Type => "Queue",
- Versions =>
- {
- 1 => "3.0.x",
- 2 => "3.1.x",
- 3 => "3.2.x or greater",
- }
- },
- ) ;
-
-die "Usage: dbinfo file\n" unless @ARGV == 1 ;
-
-print "testing file $ARGV[0]...\n\n" ;
-open (F, "<$ARGV[0]") or die "Cannot open file $ARGV[0]: $!\n" ;
-
-my $buff ;
-read F, $buff, 20 ;
-
-my (@info) = unpack("NNNNN", $buff) ;
-my (@info1) = unpack("VVVVV", $buff) ;
-my ($magic, $version, $endian) ;
-
-if ($Data{$info[0]}) # first try DB 1.x format
-{
- $magic = $info[0] ;
- $version = $info[1] ;
- $endian = "Unknown" ;
-}
-elsif ($Data{$info[3]}) # next DB 2.x big endian
-{
- $magic = $info[3] ;
- $version = $info[4] ;
- $endian = "Big Endian" ;
-}
-elsif ($Data{$info1[3]}) # next DB 2.x little endian
-{
- $magic = $info1[3] ;
- $version = $info1[4] ;
- $endian = "Little Endian" ;
-}
-else
- { die "not a Berkeley DB database file.\n" }
-
-my $type = $Data{$magic} ;
-$magic = sprintf "%06X", $magic ;
-
-my $ver_string = "Unknown" ;
-$ver_string = $type->{Versions}{$version}
- if defined $type->{Versions}{$version} ;
-
-print <<EOM ;
-File Type: Berkeley DB $type->{Type} file.
-File Version ID: $version
-Built with Berkeley DB: $ver_string
-Byte Order: $endian
-Magic: $magic
-EOM
-
-close F ;
-
-exit ;
diff --git a/db/perl.BerkeleyDB/hints/irix_6_5.pl b/db/perl.BerkeleyDB/hints/irix_6_5.pl
deleted file mode 100644
index b531673e6..000000000
--- a/db/perl.BerkeleyDB/hints/irix_6_5.pl
+++ /dev/null
@@ -1 +0,0 @@
-$self->{LIBS} = [ "@{$self->{LIBS}} -lthread" ];
diff --git a/db/perl.BerkeleyDB/hints/solaris.pl b/db/perl.BerkeleyDB/hints/solaris.pl
deleted file mode 100644
index ddd941d63..000000000
--- a/db/perl.BerkeleyDB/hints/solaris.pl
+++ /dev/null
@@ -1 +0,0 @@
-$self->{LIBS} = [ "@{$self->{LIBS}} -lmt" ];
diff --git a/db/perl.BerkeleyDB/mkconsts b/db/perl.BerkeleyDB/mkconsts
deleted file mode 100644
index 24ef4fca7..000000000
--- a/db/perl.BerkeleyDB/mkconsts
+++ /dev/null
@@ -1,211 +0,0 @@
-#!/usr/bin/perl
-
-%constants = (
- # Symbol 0 = define, 1 = enum
- DB_AFTER => 0,
- DB_APPEND => 0,
- DB_ARCH_ABS => 0,
- DB_ARCH_DATA => 0,
- DB_ARCH_LOG => 0,
- DB_BEFORE => 0,
- DB_BTREE => 1,
- DB_BTREEMAGIC => 0,
- DB_BTREEOLDVER => 0,
- DB_BTREEVERSION => 0,
- DB_CHECKPOINT => 0,
- DB_CONSUME => 0,
- DB_CREATE => 0,
- DB_CURLSN => 0,
- DB_CURRENT => 0,
- DB_DBT_MALLOC => 0,
- DB_DBT_PARTIAL => 0,
- DB_DBT_USERMEM => 0,
- DB_DELETED => 0,
- DB_DELIMITER => 0,
- DB_DUP => 0,
- DB_DUPSORT => 0,
- DB_ENV_APPINIT => 0,
- DB_ENV_STANDALONE => 0,
- DB_ENV_THREAD => 0,
- DB_EXCL => 0,
- DB_FILE_ID_LEN => 0,
- DB_FIRST => 0,
- DB_FIXEDLEN => 0,
- DB_FLUSH => 0,
- DB_FORCE => 0,
- DB_GET_BOTH => 0,
- DB_GET_RECNO => 0,
- DB_HASH => 1,
- DB_HASHMAGIC => 0,
- DB_HASHOLDVER => 0,
- DB_HASHVERSION => 0,
- DB_INCOMPLETE => 0,
- DB_INIT_CDB => 0,
- DB_INIT_LOCK => 0,
- DB_INIT_LOG => 0,
- DB_INIT_MPOOL => 0,
- DB_INIT_TXN => 0,
- DB_JOIN_ITEM => 0,
- DB_KEYEMPTY => 0,
- DB_KEYEXIST => 0,
- DB_KEYFIRST => 0,
- DB_KEYLAST => 0,
- DB_LAST => 0,
- DB_LOCK_CONFLICT => 0,
- DB_LOCK_DEADLOCK => 0,
- DB_LOCK_DEFAULT => 0,
- DB_LOCK_GET => 1,
- DB_LOCK_NORUN => 0,
- DB_LOCK_NOTGRANTED => 0,
- DB_LOCK_NOTHELD => 0,
- DB_LOCK_NOWAIT => 0,
- DB_LOCK_OLDEST => 0,
- DB_LOCK_RANDOM => 0,
- DB_LOCK_RIW_N => 0,
- DB_LOCK_RW_N => 0,
- DB_LOCK_YOUNGEST => 0,
- DB_LOCKMAGIC => 0,
- DB_LOCKVERSION => 0,
- DB_LOGMAGIC => 0,
- DB_LOGOLDVER => 0,
- DB_MAX_PAGES => 0,
- DB_MAX_RECORDS => 0,
- DB_MPOOL_CLEAN => 0,
- DB_MPOOL_CREATE => 0,
- DB_MPOOL_DIRTY => 0,
- DB_MPOOL_DISCARD => 0,
- DB_MPOOL_LAST => 0,
- DB_MPOOL_NEW => 0,
- DB_MPOOL_PRIVATE => 0,
- DB_MUTEXDEBUG => 0,
- DB_MUTEXLOCKS => 0,
- DB_NEEDSPLIT => 0,
- DB_NEXT => 0,
- DB_NEXT_DUP => 0,
- DB_NOMMAP => 0,
- DB_NOOVERWRITE => 0,
- DB_NOSYNC => 0,
- DB_NOTFOUND => 0,
- DB_PAD => 0,
- DB_PAGEYIELD => 0,
- DB_POSITION => 0,
- DB_PREV => 0,
- DB_PRIVATE => 0,
- DB_QUEUE => 1,
- DB_RDONLY => 0,
- DB_RECNO => 1,
- DB_RECNUM => 0,
- DB_RECORDCOUNT => 0,
- DB_RECOVER => 0,
- DB_RECOVER_FATAL => 0,
- DB_REGISTERED => 0,
- DB_RENUMBER => 0,
- DB_RMW => 0,
- DB_RUNRECOVERY => 0,
- DB_SEQUENTIAL => 0,
- DB_SET => 0,
- DB_SET_RANGE => 0,
- DB_SET_RECNO => 0,
- DB_SNAPSHOT => 0,
- DB_SWAPBYTES => 0,
- DB_TEMPORARY => 0,
- DB_THREAD => 0,
- DB_TRUNCATE => 0,
- DB_TXN_ABORT => 1,
- DB_TXN_BACKWARD_ROLL => 1,
- DB_TXN_CKP => 0,
- DB_TXN_FORWARD_ROLL => 1,
- DB_TXN_LOCK_2PL => 0,
- DB_TXN_LOCK_MASK => 0,
- DB_TXN_LOCK_OPTIMISTIC => 0,
- DB_TXN_LOG_MASK => 0,
- DB_TXN_LOG_REDO => 0,
- DB_TXN_LOG_UNDO => 0,
- DB_TXN_LOG_UNDOREDO => 0,
- DB_TXN_NOSYNC => 0,
- DB_TXN_NOWAIT => 0,
- DB_TXN_SYNC => 0,
- DB_TXN_OPENFILES => 1,
- DB_TXN_REDO => 0,
- DB_TXN_UNDO => 0,
- DB_TXNMAGIC => 0,
- DB_TXNVERSION => 0,
- DB_TXN_LOCK_OPTIMIST => 0,
- DB_UNKNOWN => 1,
- DB_USE_ENVIRON => 0,
- DB_USE_ENVIRON_ROOT => 0,
- DB_VERSION_MAJOR => 0,
- DB_VERSION_MINOR => 0,
- DB_VERSION_PATCH => 0,
- DB_WRITECURSOR => 0,
- ) ;
-
-sub OutputXS
-{
- # skip to the marker
- if (0) {
- while (<>)
- {
- last if /^MARKER/ ;
- print ;
- }
- }
-
- foreach my $key (sort keys %constants)
- {
- my $isEnum = $constants{$key} ;
-
- if ($isEnum) {
- print <<EOM
- if (strEQ(name, "$key"))
- return $key;
-EOM
- }
- else
- {
- print <<EOM
- if (strEQ(name, "$key"))
-#ifdef $key
- return $key;
-#else
- goto not_there;
-#endif
-EOM
- }
-
- }
-
- if (0) {
- while (<>)
- {
- print ;
- }
- }
-}
-
-sub OutputPM
-{
- # skip to the marker
- if (0) {
- while (<>)
- {
- last if /^MARKER/ ;
- print ;
- }
- }
-
- foreach my $key (sort keys %constants)
- {
- print "\t$key\n";
- }
-
- if (0) {
- while (<>)
- {
- print ;
- }
- }
-}
-
-OutputXS() if $ARGV[0] =~ /xs/i ;
-OutputPM() if $ARGV[0] =~ /pm/i ;
diff --git a/db/perl.BerkeleyDB/mkpod b/db/perl.BerkeleyDB/mkpod
deleted file mode 100755
index 44bbf3fbf..000000000
--- a/db/perl.BerkeleyDB/mkpod
+++ /dev/null
@@ -1,146 +0,0 @@
-#!/usr/local/bin/perl5
-
-# Filename: mkpod
-#
-# Author: Paul Marquess
-
-# File types
-#
-# Macro files end with .M
-# Tagged source files end with .T
-# Output from the code ends with .O
-# Pre-Pod file ends with .P
-#
-# Tags
-#
-# ## BEGIN tagname
-# ...
-# ## END tagname
-#
-# ## 0
-# ## 1
-#
-
-# Constants
-
-$TOKEN = '##' ;
-$Verbose = 1 if $ARGV[0] =~ /^-v/i ;
-
-# Macros files first
-foreach $file (glob("*.M"))
-{
- open (F, "<$file") or die "Cannot open '$file':$!\n" ;
- print " Processing Macro file $file\n" ;
- while (<F>)
- {
- # Skip blank & comment lines
- next if /^\s*$/ || /^\s*#/ ;
-
- #
- ($name, $expand) = split (/\t+/, $_, 2) ;
-
- $expand =~ s/^\s*// ;
- $expand =~ s/\s*$// ;
-
- if ($expand =~ /\[#/ )
- {
- }
-
- $Macros{$name} = $expand ;
- }
- close F ;
-}
-
-# Suck up all the code files
-foreach $file (glob("t/*.T"))
-{
- ($newfile = $file) =~ s/\.T$// ;
- open (F, "<$file") or die "Cannot open '$file':$!\n" ;
- open (N, ">$newfile") or die "Cannot open '$newfile':$!\n" ;
-
- print " Processing $file -> $newfile\n" ;
-
- while ($line = <F>)
- {
- if ($line =~ /^$TOKEN\s*BEGIN\s+(\w+)\s*$/ or
- $line =~ m[\s*/\*$TOKEN\s*BEGIN\s+(\w+)\s*$] )
- {
- print " Section $1 begins\n" if $Verbose ;
- $InSection{$1} ++ ;
- $Section{$1} = '' unless $Section{$1} ;
- }
- elsif ($line =~ /^$TOKEN\s*END\s+(\w+)\s*$/ or
- $line =~ m[^\s*/\*$TOKEN\s*END\s+(\w+)\s*$] )
- {
- warn "Encountered END without a begin [$line]\n"
- unless $InSection{$1} ;
-
- delete $InSection{$1} ;
- print " Section $1 ends\n" if $Verbose ;
- }
- else
- {
- print N $line ;
- chop $line ;
- $line =~ s/\s*$// ;
-
- # Save the current line in each of the sections
- foreach( keys %InSection)
- {
- if ($line !~ /^\s*$/ )
- #{ $Section{$_} .= " $line" }
- { $Section{$_} .= $line }
- $Section{$_} .= "\n" ;
- }
- }
-
- }
-
- if (%InSection)
- {
- # Check for unclosed sections
- print "The following Sections are not terminated\n" ;
- foreach (sort keys %InSection)
- { print "\t$_\n" }
- exit 1 ;
- }
-
- close F ;
- close N ;
-}
-
-print "\n\nCreating pod file(s)\n\n" if $Verbose ;
-
-@ppods = glob('*.P') ;
-#$ppod = $ARGV[0] ;
-#$pod = $ARGV[1] ;
-
-# Now process the pre-pod file
-foreach $ppod (@ppods)
-{
- ($pod = $ppod) =~ s/\.P$// ;
- open (PPOD, "<$ppod") or die "Cannot open file '$ppod': $!\n" ;
- open (POD, ">$pod") or die "Cannot open file '$pod': $!\n" ;
-
- print " $ppod -> $pod\n" ;
-
- while ($line = <PPOD>)
- {
- if ( $line =~ /^\s*$TOKEN\s*(\w+)\s*$/)
- {
- warn "No code insert '$1' available\n"
- unless $Section{$1} ;
-
- print "Expanding section $1\n" if $Verbose ;
- print POD $Section{$1} ;
- }
- else
- {
-# $line =~ s/\[#([^\]])]/$Macros{$1}/ge ;
- print POD $line ;
- }
- }
-
- close PPOD ;
- close POD ;
-}
diff --git a/db/perl.BerkeleyDB/patches/5.004 b/db/perl.BerkeleyDB/patches/5.004
deleted file mode 100644
index 143ec95af..000000000
--- a/db/perl.BerkeleyDB/patches/5.004
+++ /dev/null
@@ -1,44 +0,0 @@
-diff perl5.004.orig/Configure perl5.004/Configure
-190a191
-> perllibs=''
-9904a9906,9913
-> : Remove libraries needed only for extensions
-> : The appropriate ext/Foo/Makefile.PL will add them back in, if
-> : necessary.
-> set X `echo " $libs " |
-> sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
-> shift
-> perllibs="$*"
->
-10372a10382
-> perllibs='$perllibs'
-diff perl5.004.orig/Makefile.SH perl5.004/Makefile.SH
-122c122
-< libs = $libs $cryptlib
----
-> libs = $perllibs $cryptlib
-Common subdirectories: perl5.004.orig/Porting and perl5.004/Porting
-Common subdirectories: perl5.004.orig/cygwin32 and perl5.004/cygwin32
-Common subdirectories: perl5.004.orig/eg and perl5.004/eg
-Common subdirectories: perl5.004.orig/emacs and perl5.004/emacs
-Common subdirectories: perl5.004.orig/ext and perl5.004/ext
-Common subdirectories: perl5.004.orig/h2pl and perl5.004/h2pl
-Common subdirectories: perl5.004.orig/hints and perl5.004/hints
-Common subdirectories: perl5.004.orig/lib and perl5.004/lib
-diff perl5.004.orig/myconfig perl5.004/myconfig
-38c38
-< libs=$libs
----
-> libs=$perllibs
-Common subdirectories: perl5.004.orig/os2 and perl5.004/os2
-diff perl5.004.orig/patchlevel.h perl5.004/patchlevel.h
-40a41
-> ,"NODB-1.0 - remove -ldb from core perl binary."
-Common subdirectories: perl5.004.orig/plan9 and perl5.004/plan9
-Common subdirectories: perl5.004.orig/pod and perl5.004/pod
-Common subdirectories: perl5.004.orig/qnx and perl5.004/qnx
-Common subdirectories: perl5.004.orig/t and perl5.004/t
-Common subdirectories: perl5.004.orig/utils and perl5.004/utils
-Common subdirectories: perl5.004.orig/vms and perl5.004/vms
-Common subdirectories: perl5.004.orig/win32 and perl5.004/win32
-Common subdirectories: perl5.004.orig/x2p and perl5.004/x2p
diff --git a/db/perl.BerkeleyDB/patches/5.004_01 b/db/perl.BerkeleyDB/patches/5.004_01
deleted file mode 100644
index 1b05eb4e0..000000000
--- a/db/perl.BerkeleyDB/patches/5.004_01
+++ /dev/null
@@ -1,217 +0,0 @@
-diff -rc perl5.004_01.orig/Configure perl5.004_01/Configure
-*** perl5.004_01.orig/Configure Wed Jun 11 00:28:03 1997
---- perl5.004_01/Configure Sun Nov 12 22:12:35 2000
-***************
-*** 188,193 ****
---- 188,194 ----
- mv=''
- nroff=''
- perl=''
-+ perllibs=''
- pg=''
- pmake=''
- pr=''
-***************
-*** 9907,9912 ****
---- 9908,9921 ----
- shift
- extensions="$*"
-
-+ : Remove libraries needed only for extensions
-+ : The appropriate ext/Foo/Makefile.PL will add them back in, if
-+ : necessary.
-+ set X `echo " $libs " |
-+ sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
-+ shift
-+ perllibs="$*"
-+
- : Remove build directory name from cppstdin so it can be used from
- : either the present location or the final installed location.
- echo " "
-***************
-*** 10375,10380 ****
---- 10384,10390 ----
- patchlevel='$patchlevel'
- path_sep='$path_sep'
- perl='$perl'
-+ perllibs='$perllibs'
- perladmin='$perladmin'
- perlpath='$perlpath'
- pg='$pg'
-diff -rc perl5.004_01.orig/Makefile.SH perl5.004_01/Makefile.SH
-*** perl5.004_01.orig/Makefile.SH Thu Jun 12 23:27:56 1997
---- perl5.004_01/Makefile.SH Sun Nov 12 22:12:35 2000
-***************
-*** 126,132 ****
- ext = \$(dynamic_ext) \$(static_ext)
- DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT)
-
-! libs = $libs $cryptlib
-
- public = perl $suidperl utilities translators
-
---- 126,132 ----
- ext = \$(dynamic_ext) \$(static_ext)
- DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT)
-
-! libs = $perllibs $cryptlib
-
- public = perl $suidperl utilities translators
-
-diff -rc perl5.004_01.orig/lib/ExtUtils/Embed.pm perl5.004_01/lib/ExtUtils/Embed.pm
-*** perl5.004_01.orig/lib/ExtUtils/Embed.pm Wed Apr 2 22:12:04 1997
---- perl5.004_01/lib/ExtUtils/Embed.pm Sun Nov 12 22:12:35 2000
-***************
-*** 170,176 ****
- @path = $path ? split(/:/, $path) : @INC;
-
- push(@potential_libs, @link_args) if scalar @link_args;
-! push(@potential_libs, $Config{libs}) if defined $std;
-
- push(@mods, static_ext()) if $std;
-
---- 170,176 ----
- @path = $path ? split(/:/, $path) : @INC;
-
- push(@potential_libs, @link_args) if scalar @link_args;
-! push(@potential_libs, $Config{perllibs}) if defined $std;
-
- push(@mods, static_ext()) if $std;
-
-diff -rc perl5.004_01.orig/lib/ExtUtils/Liblist.pm perl5.004_01/lib/ExtUtils/Liblist.pm
-*** perl5.004_01.orig/lib/ExtUtils/Liblist.pm Sat Jun 7 01:19:44 1997
---- perl5.004_01/lib/ExtUtils/Liblist.pm Sun Nov 12 22:13:27 2000
-***************
-*** 16,33 ****
-
- sub _unix_os2_ext {
- my($self,$potential_libs, $Verbose) = @_;
-! if ($^O =~ 'os2' and $Config{libs}) {
- # Dynamic libraries are not transitive, so we may need including
- # the libraries linked against perl.dll again.
-
- $potential_libs .= " " if $potential_libs;
-! $potential_libs .= $Config{libs};
- }
- return ("", "", "", "") unless $potential_libs;
- print STDOUT "Potential libraries are '$potential_libs':\n" if $Verbose;
-
- my($so) = $Config{'so'};
-! my($libs) = $Config{'libs'};
- my $Config_libext = $Config{lib_ext} || ".a";
-
-
---- 16,33 ----
-
- sub _unix_os2_ext {
- my($self,$potential_libs, $Verbose) = @_;
-! if ($^O =~ 'os2' and $Config{perllibs}) {
- # Dynamic libraries are not transitive, so we may need including
- # the libraries linked against perl.dll again.
-
- $potential_libs .= " " if $potential_libs;
-! $potential_libs .= $Config{perllibs};
- }
- return ("", "", "", "") unless $potential_libs;
- print STDOUT "Potential libraries are '$potential_libs':\n" if $Verbose;
-
- my($so) = $Config{'so'};
-! my($libs) = $Config{'perllibs'};
- my $Config_libext = $Config{lib_ext} || ".a";
-
-
-***************
-*** 186,196 ****
- my($self, $potential_libs, $Verbose) = @_;
-
- # If user did not supply a list, we punt.
-! # (caller should probably use the list in $Config{libs})
- return ("", "", "", "") unless $potential_libs;
-
- my($so) = $Config{'so'};
-! my($libs) = $Config{'libs'};
- my($libpth) = $Config{'libpth'};
- my($libext) = $Config{'lib_ext'} || ".lib";
-
---- 186,196 ----
- my($self, $potential_libs, $Verbose) = @_;
-
- # If user did not supply a list, we punt.
-! # (caller should probably use the list in $Config{perllibs})
- return ("", "", "", "") unless $potential_libs;
-
- my($so) = $Config{'so'};
-! my($libs) = $Config{'perllibs'};
- my($libpth) = $Config{'libpth'};
- my($libext) = $Config{'lib_ext'} || ".lib";
-
-***************
-*** 540,546 ****
- =item *
-
- If C<$potential_libs> is empty, the return value will be empty.
-! Otherwise, the libraries specified by C<$Config{libs}> (see Config.pm)
- will be appended to the list of C<$potential_libs>. The libraries
- will be searched for in the directories specified in C<$potential_libs>
- as well as in C<$Config{libpth}>. For each library that is found, a
---- 540,546 ----
- =item *
-
- If C<$potential_libs> is empty, the return value will be empty.
-! Otherwise, the libraries specified by C<$Config{perllibs}> (see Config.pm)
- will be appended to the list of C<$potential_libs>. The libraries
- will be searched for in the directories specified in C<$potential_libs>
- as well as in C<$Config{libpth}>. For each library that is found, a
-diff -rc perl5.004_01.orig/lib/ExtUtils/MM_Unix.pm perl5.004_01/lib/ExtUtils/MM_Unix.pm
-*** perl5.004_01.orig/lib/ExtUtils/MM_Unix.pm Thu Jun 12 22:06:18 1997
---- perl5.004_01/lib/ExtUtils/MM_Unix.pm Sun Nov 12 22:12:35 2000
-***************
-*** 2137,2143 ****
- MAP_STATIC = ",
- join(" \\\n\t", reverse sort keys %static), "
-
-! MAP_PRELIBS = $Config::Config{libs} $Config::Config{cryptlib}
- ";
-
- if (defined $libperl) {
---- 2137,2143 ----
- MAP_STATIC = ",
- join(" \\\n\t", reverse sort keys %static), "
-
-! MAP_PRELIBS = $Config::Config{perllibs} $Config::Config{cryptlib}
- ";
-
- if (defined $libperl) {
-diff -rc perl5.004_01.orig/myconfig perl5.004_01/myconfig
-*** perl5.004_01.orig/myconfig Sat Dec 21 01:13:20 1996
---- perl5.004_01/myconfig Sun Nov 12 22:12:35 2000
-***************
-*** 35,41 ****
- Linker and Libraries:
- ld='$ld', ldflags ='$ldflags'
- libpth=$libpth
-! libs=$libs
- libc=$libc, so=$so
- useshrplib=$useshrplib, libperl=$libperl
- Dynamic Linking:
---- 35,41 ----
- Linker and Libraries:
- ld='$ld', ldflags ='$ldflags'
- libpth=$libpth
-! libs=$perllibs
- libc=$libc, so=$so
- useshrplib=$useshrplib, libperl=$libperl
- Dynamic Linking:
-diff -rc perl5.004_01.orig/patchlevel.h perl5.004_01/patchlevel.h
-*** perl5.004_01.orig/patchlevel.h Wed Jun 11 03:06:10 1997
---- perl5.004_01/patchlevel.h Sun Nov 12 22:12:35 2000
-***************
-*** 38,43 ****
---- 38,44 ----
- */
- static char *local_patches[] = {
- NULL
-+ ,"NODB-1.0 - remove -ldb from core perl binary."
- ,NULL
- };
-
diff --git a/db/perl.BerkeleyDB/patches/5.004_02 b/db/perl.BerkeleyDB/patches/5.004_02
deleted file mode 100644
index 238f87379..000000000
--- a/db/perl.BerkeleyDB/patches/5.004_02
+++ /dev/null
@@ -1,217 +0,0 @@
-diff -rc perl5.004_02.orig/Configure perl5.004_02/Configure
-*** perl5.004_02.orig/Configure Thu Aug 7 15:08:44 1997
---- perl5.004_02/Configure Sun Nov 12 22:06:24 2000
-***************
-*** 188,193 ****
---- 188,194 ----
- mv=''
- nroff=''
- perl=''
-+ perllibs=''
- pg=''
- pmake=''
- pr=''
-***************
-*** 9911,9916 ****
---- 9912,9925 ----
- shift
- extensions="$*"
-
-+ : Remove libraries needed only for extensions
-+ : The appropriate ext/Foo/Makefile.PL will add them back in, if
-+ : necessary.
-+ set X `echo " $libs " |
-+ sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
-+ shift
-+ perllibs="$*"
-+
- : Remove build directory name from cppstdin so it can be used from
- : either the present location or the final installed location.
- echo " "
-***************
-*** 10379,10384 ****
---- 10388,10394 ----
- patchlevel='$patchlevel'
- path_sep='$path_sep'
- perl='$perl'
-+ perllibs='$perllibs'
- perladmin='$perladmin'
- perlpath='$perlpath'
- pg='$pg'
-diff -rc perl5.004_02.orig/Makefile.SH perl5.004_02/Makefile.SH
-*** perl5.004_02.orig/Makefile.SH Thu Aug 7 13:10:53 1997
---- perl5.004_02/Makefile.SH Sun Nov 12 22:06:24 2000
-***************
-*** 126,132 ****
- ext = \$(dynamic_ext) \$(static_ext)
- DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT)
-
-! libs = $libs $cryptlib
-
- public = perl $suidperl utilities translators
-
---- 126,132 ----
- ext = \$(dynamic_ext) \$(static_ext)
- DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT)
-
-! libs = $perllibs $cryptlib
-
- public = perl $suidperl utilities translators
-
-diff -rc perl5.004_02.orig/lib/ExtUtils/Embed.pm perl5.004_02/lib/ExtUtils/Embed.pm
-*** perl5.004_02.orig/lib/ExtUtils/Embed.pm Fri Aug 1 15:08:44 1997
---- perl5.004_02/lib/ExtUtils/Embed.pm Sun Nov 12 22:06:24 2000
-***************
-*** 178,184 ****
- @path = $path ? split(/:/, $path) : @INC;
-
- push(@potential_libs, @link_args) if scalar @link_args;
-! push(@potential_libs, $Config{libs}) if defined $std;
-
- push(@mods, static_ext()) if $std;
-
---- 178,184 ----
- @path = $path ? split(/:/, $path) : @INC;
-
- push(@potential_libs, @link_args) if scalar @link_args;
-! push(@potential_libs, $Config{perllibs}) if defined $std;
-
- push(@mods, static_ext()) if $std;
-
-diff -rc perl5.004_02.orig/lib/ExtUtils/Liblist.pm perl5.004_02/lib/ExtUtils/Liblist.pm
-*** perl5.004_02.orig/lib/ExtUtils/Liblist.pm Fri Aug 1 19:36:58 1997
---- perl5.004_02/lib/ExtUtils/Liblist.pm Sun Nov 12 22:06:24 2000
-***************
-*** 16,33 ****
-
- sub _unix_os2_ext {
- my($self,$potential_libs, $verbose) = @_;
-! if ($^O =~ 'os2' and $Config{libs}) {
- # Dynamic libraries are not transitive, so we may need including
- # the libraries linked against perl.dll again.
-
- $potential_libs .= " " if $potential_libs;
-! $potential_libs .= $Config{libs};
- }
- return ("", "", "", "") unless $potential_libs;
- print STDOUT "Potential libraries are '$potential_libs':\n" if $verbose;
-
- my($so) = $Config{'so'};
-! my($libs) = $Config{'libs'};
- my $Config_libext = $Config{lib_ext} || ".a";
-
-
---- 16,33 ----
-
- sub _unix_os2_ext {
- my($self,$potential_libs, $verbose) = @_;
-! if ($^O =~ 'os2' and $Config{perllibs}) {
- # Dynamic libraries are not transitive, so we may need including
- # the libraries linked against perl.dll again.
-
- $potential_libs .= " " if $potential_libs;
-! $potential_libs .= $Config{perllibs};
- }
- return ("", "", "", "") unless $potential_libs;
- print STDOUT "Potential libraries are '$potential_libs':\n" if $verbose;
-
- my($so) = $Config{'so'};
-! my($libs) = $Config{'perllibs'};
- my $Config_libext = $Config{lib_ext} || ".a";
-
-
-***************
-*** 186,196 ****
- my($self, $potential_libs, $verbose) = @_;
-
- # If user did not supply a list, we punt.
-! # (caller should probably use the list in $Config{libs})
- return ("", "", "", "") unless $potential_libs;
-
- my($so) = $Config{'so'};
-! my($libs) = $Config{'libs'};
- my($libpth) = $Config{'libpth'};
- my($libext) = $Config{'lib_ext'} || ".lib";
-
---- 186,196 ----
- my($self, $potential_libs, $verbose) = @_;
-
- # If user did not supply a list, we punt.
-! # (caller should probably use the list in $Config{perllibs})
- return ("", "", "", "") unless $potential_libs;
-
- my($so) = $Config{'so'};
-! my($libs) = $Config{'perllibs'};
- my($libpth) = $Config{'libpth'};
- my($libext) = $Config{'lib_ext'} || ".lib";
-
-***************
-*** 540,546 ****
- =item *
-
- If C<$potential_libs> is empty, the return value will be empty.
-! Otherwise, the libraries specified by C<$Config{libs}> (see Config.pm)
- will be appended to the list of C<$potential_libs>. The libraries
- will be searched for in the directories specified in C<$potential_libs>
- as well as in C<$Config{libpth}>. For each library that is found, a
---- 540,546 ----
- =item *
-
- If C<$potential_libs> is empty, the return value will be empty.
-! Otherwise, the libraries specified by C<$Config{perllibs}> (see Config.pm)
- will be appended to the list of C<$potential_libs>. The libraries
- will be searched for in the directories specified in C<$potential_libs>
- as well as in C<$Config{libpth}>. For each library that is found, a
-diff -rc perl5.004_02.orig/lib/ExtUtils/MM_Unix.pm perl5.004_02/lib/ExtUtils/MM_Unix.pm
-*** perl5.004_02.orig/lib/ExtUtils/MM_Unix.pm Tue Aug 5 14:28:08 1997
---- perl5.004_02/lib/ExtUtils/MM_Unix.pm Sun Nov 12 22:06:25 2000
-***************
-*** 2224,2230 ****
- MAP_STATIC = ",
- join(" \\\n\t", reverse sort keys %static), "
-
-! MAP_PRELIBS = $Config::Config{libs} $Config::Config{cryptlib}
- ";
-
- if (defined $libperl) {
---- 2224,2230 ----
- MAP_STATIC = ",
- join(" \\\n\t", reverse sort keys %static), "
-
-! MAP_PRELIBS = $Config::Config{perllibs} $Config::Config{cryptlib}
- ";
-
- if (defined $libperl) {
-diff -rc perl5.004_02.orig/myconfig perl5.004_02/myconfig
-*** perl5.004_02.orig/myconfig Sat Dec 21 01:13:20 1996
---- perl5.004_02/myconfig Sun Nov 12 22:06:25 2000
-***************
-*** 35,41 ****
- Linker and Libraries:
- ld='$ld', ldflags ='$ldflags'
- libpth=$libpth
-! libs=$libs
- libc=$libc, so=$so
- useshrplib=$useshrplib, libperl=$libperl
- Dynamic Linking:
---- 35,41 ----
- Linker and Libraries:
- ld='$ld', ldflags ='$ldflags'
- libpth=$libpth
-! libs=$perllibs
- libc=$libc, so=$so
- useshrplib=$useshrplib, libperl=$libperl
- Dynamic Linking:
-diff -rc perl5.004_02.orig/patchlevel.h perl5.004_02/patchlevel.h
-*** perl5.004_02.orig/patchlevel.h Fri Aug 1 15:07:34 1997
---- perl5.004_02/patchlevel.h Sun Nov 12 22:06:25 2000
-***************
-*** 38,43 ****
---- 38,44 ----
- */
- static char *local_patches[] = {
- NULL
-+ ,"NODB-1.0 - remove -ldb from core perl binary."
- ,NULL
- };
-
diff --git a/db/perl.BerkeleyDB/patches/5.004_03 b/db/perl.BerkeleyDB/patches/5.004_03
deleted file mode 100644
index 06331eac9..000000000
--- a/db/perl.BerkeleyDB/patches/5.004_03
+++ /dev/null
@@ -1,223 +0,0 @@
-diff -rc perl5.004_03.orig/Configure perl5.004_03/Configure
-*** perl5.004_03.orig/Configure Wed Aug 13 16:09:46 1997
---- perl5.004_03/Configure Sun Nov 12 21:56:18 2000
-***************
-*** 188,193 ****
---- 188,194 ----
- mv=''
- nroff=''
- perl=''
-+ perllibs=''
- pg=''
- pmake=''
- pr=''
-***************
-*** 9911,9916 ****
---- 9912,9925 ----
- shift
- extensions="$*"
-
-+ : Remove libraries needed only for extensions
-+ : The appropriate ext/Foo/Makefile.PL will add them back in, if
-+ : necessary.
-+ set X `echo " $libs " |
-+ sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
-+ shift
-+ perllibs="$*"
-+
- : Remove build directory name from cppstdin so it can be used from
- : either the present location or the final installed location.
- echo " "
-***************
-*** 10379,10384 ****
---- 10388,10394 ----
- patchlevel='$patchlevel'
- path_sep='$path_sep'
- perl='$perl'
-+ perllibs='$perllibs'
- perladmin='$perladmin'
- perlpath='$perlpath'
- pg='$pg'
-Only in perl5.004_03: Configure.orig
-diff -rc perl5.004_03.orig/Makefile.SH perl5.004_03/Makefile.SH
-*** perl5.004_03.orig/Makefile.SH Mon Aug 18 19:24:29 1997
---- perl5.004_03/Makefile.SH Sun Nov 12 21:56:18 2000
-***************
-*** 126,132 ****
- ext = \$(dynamic_ext) \$(static_ext)
- DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT)
-
-! libs = $libs $cryptlib
-
- public = perl $suidperl utilities translators
-
---- 126,132 ----
- ext = \$(dynamic_ext) \$(static_ext)
- DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT)
-
-! libs = $perllibs $cryptlib
-
- public = perl $suidperl utilities translators
-
-Only in perl5.004_03: Makefile.SH.orig
-diff -rc perl5.004_03.orig/lib/ExtUtils/Embed.pm perl5.004_03/lib/ExtUtils/Embed.pm
-*** perl5.004_03.orig/lib/ExtUtils/Embed.pm Fri Aug 1 15:08:44 1997
---- perl5.004_03/lib/ExtUtils/Embed.pm Sun Nov 12 21:56:18 2000
-***************
-*** 178,184 ****
- @path = $path ? split(/:/, $path) : @INC;
-
- push(@potential_libs, @link_args) if scalar @link_args;
-! push(@potential_libs, $Config{libs}) if defined $std;
-
- push(@mods, static_ext()) if $std;
-
---- 178,184 ----
- @path = $path ? split(/:/, $path) : @INC;
-
- push(@potential_libs, @link_args) if scalar @link_args;
-! push(@potential_libs, $Config{perllibs}) if defined $std;
-
- push(@mods, static_ext()) if $std;
-
-diff -rc perl5.004_03.orig/lib/ExtUtils/Liblist.pm perl5.004_03/lib/ExtUtils/Liblist.pm
-*** perl5.004_03.orig/lib/ExtUtils/Liblist.pm Fri Aug 1 19:36:58 1997
---- perl5.004_03/lib/ExtUtils/Liblist.pm Sun Nov 12 21:57:17 2000
-***************
-*** 16,33 ****
-
- sub _unix_os2_ext {
- my($self,$potential_libs, $verbose) = @_;
-! if ($^O =~ 'os2' and $Config{libs}) {
- # Dynamic libraries are not transitive, so we may need including
- # the libraries linked against perl.dll again.
-
- $potential_libs .= " " if $potential_libs;
-! $potential_libs .= $Config{libs};
- }
- return ("", "", "", "") unless $potential_libs;
- print STDOUT "Potential libraries are '$potential_libs':\n" if $verbose;
-
- my($so) = $Config{'so'};
-! my($libs) = $Config{'libs'};
- my $Config_libext = $Config{lib_ext} || ".a";
-
-
---- 16,33 ----
-
- sub _unix_os2_ext {
- my($self,$potential_libs, $verbose) = @_;
-! if ($^O =~ 'os2' and $Config{perllibs}) {
- # Dynamic libraries are not transitive, so we may need including
- # the libraries linked against perl.dll again.
-
- $potential_libs .= " " if $potential_libs;
-! $potential_libs .= $Config{perllibs};
- }
- return ("", "", "", "") unless $potential_libs;
- print STDOUT "Potential libraries are '$potential_libs':\n" if $verbose;
-
- my($so) = $Config{'so'};
-! my($libs) = $Config{'perllibs'};
- my $Config_libext = $Config{lib_ext} || ".a";
-
-
-***************
-*** 186,196 ****
- my($self, $potential_libs, $verbose) = @_;
-
- # If user did not supply a list, we punt.
-! # (caller should probably use the list in $Config{libs})
- return ("", "", "", "") unless $potential_libs;
-
- my($so) = $Config{'so'};
-! my($libs) = $Config{'libs'};
- my($libpth) = $Config{'libpth'};
- my($libext) = $Config{'lib_ext'} || ".lib";
-
---- 186,196 ----
- my($self, $potential_libs, $verbose) = @_;
-
- # If user did not supply a list, we punt.
-! # (caller should probably use the list in $Config{perllibs})
- return ("", "", "", "") unless $potential_libs;
-
- my($so) = $Config{'so'};
-! my($libs) = $Config{'perllibs'};
- my($libpth) = $Config{'libpth'};
- my($libext) = $Config{'lib_ext'} || ".lib";
-
-***************
-*** 540,546 ****
- =item *
-
- If C<$potential_libs> is empty, the return value will be empty.
-! Otherwise, the libraries specified by C<$Config{libs}> (see Config.pm)
- will be appended to the list of C<$potential_libs>. The libraries
- will be searched for in the directories specified in C<$potential_libs>
- as well as in C<$Config{libpth}>. For each library that is found, a
---- 540,546 ----
- =item *
-
- If C<$potential_libs> is empty, the return value will be empty.
-! Otherwise, the libraries specified by C<$Config{perllibs}> (see Config.pm)
- will be appended to the list of C<$potential_libs>. The libraries
- will be searched for in the directories specified in C<$potential_libs>
- as well as in C<$Config{libpth}>. For each library that is found, a
-Only in perl5.004_03/lib/ExtUtils: Liblist.pm.orig
-Only in perl5.004_03/lib/ExtUtils: Liblist.pm.rej
-diff -rc perl5.004_03.orig/lib/ExtUtils/MM_Unix.pm perl5.004_03/lib/ExtUtils/MM_Unix.pm
-*** perl5.004_03.orig/lib/ExtUtils/MM_Unix.pm Mon Aug 18 19:16:12 1997
---- perl5.004_03/lib/ExtUtils/MM_Unix.pm Sun Nov 12 21:56:19 2000
-***************
-*** 2224,2230 ****
- MAP_STATIC = ",
- join(" \\\n\t", reverse sort keys %static), "
-
-! MAP_PRELIBS = $Config::Config{libs} $Config::Config{cryptlib}
- ";
-
- if (defined $libperl) {
---- 2224,2230 ----
- MAP_STATIC = ",
- join(" \\\n\t", reverse sort keys %static), "
-
-! MAP_PRELIBS = $Config::Config{perllibs} $Config::Config{cryptlib}
- ";
-
- if (defined $libperl) {
-Only in perl5.004_03/lib/ExtUtils: MM_Unix.pm.orig
-diff -rc perl5.004_03.orig/myconfig perl5.004_03/myconfig
-*** perl5.004_03.orig/myconfig Sat Dec 21 01:13:20 1996
---- perl5.004_03/myconfig Sun Nov 12 21:56:19 2000
-***************
-*** 35,41 ****
- Linker and Libraries:
- ld='$ld', ldflags ='$ldflags'
- libpth=$libpth
-! libs=$libs
- libc=$libc, so=$so
- useshrplib=$useshrplib, libperl=$libperl
- Dynamic Linking:
---- 35,41 ----
- Linker and Libraries:
- ld='$ld', ldflags ='$ldflags'
- libpth=$libpth
-! libs=$perllibs
- libc=$libc, so=$so
- useshrplib=$useshrplib, libperl=$libperl
- Dynamic Linking:
-diff -rc perl5.004_03.orig/patchlevel.h perl5.004_03/patchlevel.h
-*** perl5.004_03.orig/patchlevel.h Wed Aug 13 11:42:01 1997
---- perl5.004_03/patchlevel.h Sun Nov 12 21:56:19 2000
-***************
-*** 38,43 ****
---- 38,44 ----
- */
- static char *local_patches[] = {
- NULL
-+ ,"NODB-1.0 - remove -ldb from core perl binary."
- ,NULL
- };
-
-Only in perl5.004_03: patchlevel.h.orig
diff --git a/db/perl.BerkeleyDB/patches/5.004_04 b/db/perl.BerkeleyDB/patches/5.004_04
deleted file mode 100644
index a227dc700..000000000
--- a/db/perl.BerkeleyDB/patches/5.004_04
+++ /dev/null
@@ -1,209 +0,0 @@
-diff -rc perl5.004_04.orig/Configure perl5.004_04/Configure
-*** perl5.004_04.orig/Configure Fri Oct 3 18:57:39 1997
---- perl5.004_04/Configure Sun Nov 12 21:50:51 2000
-***************
-*** 188,193 ****
---- 188,194 ----
- mv=''
- nroff=''
- perl=''
-+ perllibs=''
- pg=''
- pmake=''
- pr=''
-***************
-*** 9910,9915 ****
---- 9911,9924 ----
- shift
- extensions="$*"
-
-+ : Remove libraries needed only for extensions
-+ : The appropriate ext/Foo/Makefile.PL will add them back in, if
-+ : necessary.
-+ set X `echo " $libs " |
-+ sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
-+ shift
-+ perllibs="$*"
-+
- : Remove build directory name from cppstdin so it can be used from
- : either the present location or the final installed location.
- echo " "
-***************
-*** 10378,10383 ****
---- 10387,10393 ----
- patchlevel='$patchlevel'
- path_sep='$path_sep'
- perl='$perl'
-+ perllibs='$perllibs'
- perladmin='$perladmin'
- perlpath='$perlpath'
- pg='$pg'
-diff -rc perl5.004_04.orig/Makefile.SH perl5.004_04/Makefile.SH
-*** perl5.004_04.orig/Makefile.SH Wed Oct 15 10:33:16 1997
---- perl5.004_04/Makefile.SH Sun Nov 12 21:50:51 2000
-***************
-*** 129,135 ****
- ext = \$(dynamic_ext) \$(static_ext)
- DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT)
-
-! libs = $libs $cryptlib
-
- public = perl $suidperl utilities translators
-
---- 129,135 ----
- ext = \$(dynamic_ext) \$(static_ext)
- DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT)
-
-! libs = $perllibs $cryptlib
-
- public = perl $suidperl utilities translators
-
-diff -rc perl5.004_04.orig/lib/ExtUtils/Embed.pm perl5.004_04/lib/ExtUtils/Embed.pm
-*** perl5.004_04.orig/lib/ExtUtils/Embed.pm Fri Aug 1 15:08:44 1997
---- perl5.004_04/lib/ExtUtils/Embed.pm Sun Nov 12 21:50:51 2000
-***************
-*** 178,184 ****
- @path = $path ? split(/:/, $path) : @INC;
-
- push(@potential_libs, @link_args) if scalar @link_args;
-! push(@potential_libs, $Config{libs}) if defined $std;
-
- push(@mods, static_ext()) if $std;
-
---- 178,184 ----
- @path = $path ? split(/:/, $path) : @INC;
-
- push(@potential_libs, @link_args) if scalar @link_args;
-! push(@potential_libs, $Config{perllibs}) if defined $std;
-
- push(@mods, static_ext()) if $std;
-
-diff -rc perl5.004_04.orig/lib/ExtUtils/Liblist.pm perl5.004_04/lib/ExtUtils/Liblist.pm
-*** perl5.004_04.orig/lib/ExtUtils/Liblist.pm Tue Sep 9 17:41:32 1997
---- perl5.004_04/lib/ExtUtils/Liblist.pm Sun Nov 12 21:51:33 2000
-***************
-*** 16,33 ****
-
- sub _unix_os2_ext {
- my($self,$potential_libs, $verbose) = @_;
-! if ($^O =~ 'os2' and $Config{libs}) {
- # Dynamic libraries are not transitive, so we may need including
- # the libraries linked against perl.dll again.
-
- $potential_libs .= " " if $potential_libs;
-! $potential_libs .= $Config{libs};
- }
- return ("", "", "", "") unless $potential_libs;
- warn "Potential libraries are '$potential_libs':\n" if $verbose;
-
- my($so) = $Config{'so'};
-! my($libs) = $Config{'libs'};
- my $Config_libext = $Config{lib_ext} || ".a";
-
-
---- 16,33 ----
-
- sub _unix_os2_ext {
- my($self,$potential_libs, $verbose) = @_;
-! if ($^O =~ 'os2' and $Config{perllibs}) {
- # Dynamic libraries are not transitive, so we may need including
- # the libraries linked against perl.dll again.
-
- $potential_libs .= " " if $potential_libs;
-! $potential_libs .= $Config{perllibs};
- }
- return ("", "", "", "") unless $potential_libs;
- warn "Potential libraries are '$potential_libs':\n" if $verbose;
-
- my($so) = $Config{'so'};
-! my($libs) = $Config{'perllibs'};
- my $Config_libext = $Config{lib_ext} || ".a";
-
-
-***************
-*** 189,195 ****
- return ("", "", "", "") unless $potential_libs;
-
- my($so) = $Config{'so'};
-! my($libs) = $Config{'libs'};
- my($libpth) = $Config{'libpth'};
- my($libext) = $Config{'lib_ext'} || ".lib";
-
---- 189,195 ----
- return ("", "", "", "") unless $potential_libs;
-
- my($so) = $Config{'so'};
-! my($libs) = $Config{'perllibs'};
- my($libpth) = $Config{'libpth'};
- my($libext) = $Config{'lib_ext'} || ".lib";
-
-***************
-*** 539,545 ****
- =item *
-
- If C<$potential_libs> is empty, the return value will be empty.
-! Otherwise, the libraries specified by C<$Config{libs}> (see Config.pm)
- will be appended to the list of C<$potential_libs>. The libraries
- will be searched for in the directories specified in C<$potential_libs>
- as well as in C<$Config{libpth}>. For each library that is found, a
---- 539,545 ----
- =item *
-
- If C<$potential_libs> is empty, the return value will be empty.
-! Otherwise, the libraries specified by C<$Config{perllibs}> (see Config.pm)
- will be appended to the list of C<$potential_libs>. The libraries
- will be searched for in the directories specified in C<$potential_libs>
- as well as in C<$Config{libpth}>. For each library that is found, a
-diff -rc perl5.004_04.orig/lib/ExtUtils/MM_Unix.pm perl5.004_04/lib/ExtUtils/MM_Unix.pm
-*** perl5.004_04.orig/lib/ExtUtils/MM_Unix.pm Wed Oct 8 14:13:51 1997
---- perl5.004_04/lib/ExtUtils/MM_Unix.pm Sun Nov 12 21:50:51 2000
-***************
-*** 2229,2235 ****
- MAP_STATIC = ",
- join(" \\\n\t", reverse sort keys %static), "
-
-! MAP_PRELIBS = $Config::Config{libs} $Config::Config{cryptlib}
- ";
-
- if (defined $libperl) {
---- 2229,2235 ----
- MAP_STATIC = ",
- join(" \\\n\t", reverse sort keys %static), "
-
-! MAP_PRELIBS = $Config::Config{perllibs} $Config::Config{cryptlib}
- ";
-
- if (defined $libperl) {
-diff -rc perl5.004_04.orig/myconfig perl5.004_04/myconfig
-*** perl5.004_04.orig/myconfig Mon Oct 6 18:26:49 1997
---- perl5.004_04/myconfig Sun Nov 12 21:50:51 2000
-***************
-*** 35,41 ****
- Linker and Libraries:
- ld='$ld', ldflags ='$ldflags'
- libpth=$libpth
-! libs=$libs
- libc=$libc, so=$so
- useshrplib=$useshrplib, libperl=$libperl
- Dynamic Linking:
---- 35,41 ----
- Linker and Libraries:
- ld='$ld', ldflags ='$ldflags'
- libpth=$libpth
-! libs=$perllibs
- libc=$libc, so=$so
- useshrplib=$useshrplib, libperl=$libperl
- Dynamic Linking:
-diff -rc perl5.004_04.orig/patchlevel.h perl5.004_04/patchlevel.h
-*** perl5.004_04.orig/patchlevel.h Wed Oct 15 10:55:19 1997
---- perl5.004_04/patchlevel.h Sun Nov 12 21:50:51 2000
-***************
-*** 39,44 ****
---- 39,45 ----
- /* The following line and terminating '};' are read by perlbug.PL. Don't alter. */
- static char *local_patches[] = {
- NULL
-+ ,"NODB-1.0 - remove -ldb from core perl binary."
- ,NULL
- };
-
diff --git a/db/perl.BerkeleyDB/patches/5.004_05 b/db/perl.BerkeleyDB/patches/5.004_05
deleted file mode 100644
index 51c8bf350..000000000
--- a/db/perl.BerkeleyDB/patches/5.004_05
+++ /dev/null
@@ -1,209 +0,0 @@
-diff -rc perl5.004_05.orig/Configure perl5.004_05/Configure
-*** perl5.004_05.orig/Configure Thu Jan 6 22:05:49 2000
---- perl5.004_05/Configure Sun Nov 12 21:36:25 2000
-***************
-*** 188,193 ****
---- 188,194 ----
- mv=''
- nroff=''
- perl=''
-+ perllibs=''
- pg=''
- pmake=''
- pr=''
-***************
-*** 10164,10169 ****
---- 10165,10178 ----
- shift
- extensions="$*"
-
-+ : Remove libraries needed only for extensions
-+ : The appropriate ext/Foo/Makefile.PL will add them back in, if
-+ : necessary.
-+ set X `echo " $libs " |
-+ sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
-+ shift
-+ perllibs="$*"
-+
- : Remove build directory name from cppstdin so it can be used from
- : either the present location or the final installed location.
- echo " "
-***************
-*** 10648,10653 ****
---- 10657,10663 ----
- patchlevel='$patchlevel'
- path_sep='$path_sep'
- perl='$perl'
-+ perllibs='$perllibs'
- perladmin='$perladmin'
- perlpath='$perlpath'
- pg='$pg'
-diff -rc perl5.004_05.orig/Makefile.SH perl5.004_05/Makefile.SH
-*** perl5.004_05.orig/Makefile.SH Thu Jan 6 22:05:49 2000
---- perl5.004_05/Makefile.SH Sun Nov 12 21:36:25 2000
-***************
-*** 151,157 ****
- ext = \$(dynamic_ext) \$(static_ext)
- DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT)
-
-! libs = $libs $cryptlib
-
- public = perl $suidperl utilities translators
-
---- 151,157 ----
- ext = \$(dynamic_ext) \$(static_ext)
- DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT)
-
-! libs = $perllibs $cryptlib
-
- public = perl $suidperl utilities translators
-
-diff -rc perl5.004_05.orig/lib/ExtUtils/Embed.pm perl5.004_05/lib/ExtUtils/Embed.pm
-*** perl5.004_05.orig/lib/ExtUtils/Embed.pm Fri Aug 1 15:08:44 1997
---- perl5.004_05/lib/ExtUtils/Embed.pm Sun Nov 12 21:36:25 2000
-***************
-*** 178,184 ****
- @path = $path ? split(/:/, $path) : @INC;
-
- push(@potential_libs, @link_args) if scalar @link_args;
-! push(@potential_libs, $Config{libs}) if defined $std;
-
- push(@mods, static_ext()) if $std;
-
---- 178,184 ----
- @path = $path ? split(/:/, $path) : @INC;
-
- push(@potential_libs, @link_args) if scalar @link_args;
-! push(@potential_libs, $Config{perllibs}) if defined $std;
-
- push(@mods, static_ext()) if $std;
-
-diff -rc perl5.004_05.orig/lib/ExtUtils/Liblist.pm perl5.004_05/lib/ExtUtils/Liblist.pm
-*** perl5.004_05.orig/lib/ExtUtils/Liblist.pm Thu Jan 6 22:05:54 2000
---- perl5.004_05/lib/ExtUtils/Liblist.pm Sun Nov 12 21:45:31 2000
-***************
-*** 16,33 ****
-
- sub _unix_os2_ext {
- my($self,$potential_libs, $verbose) = @_;
-! if ($^O =~ 'os2' and $Config{libs}) {
- # Dynamic libraries are not transitive, so we may need including
- # the libraries linked against perl.dll again.
-
- $potential_libs .= " " if $potential_libs;
-! $potential_libs .= $Config{libs};
- }
- return ("", "", "", "") unless $potential_libs;
- warn "Potential libraries are '$potential_libs':\n" if $verbose;
-
- my($so) = $Config{'so'};
-! my($libs) = $Config{'libs'};
- my $Config_libext = $Config{lib_ext} || ".a";
-
-
---- 16,33 ----
-
- sub _unix_os2_ext {
- my($self,$potential_libs, $verbose) = @_;
-! if ($^O =~ 'os2' and $Config{perllibs}) {
- # Dynamic libraries are not transitive, so we may need including
- # the libraries linked against perl.dll again.
-
- $potential_libs .= " " if $potential_libs;
-! $potential_libs .= $Config{perllibs};
- }
- return ("", "", "", "") unless $potential_libs;
- warn "Potential libraries are '$potential_libs':\n" if $verbose;
-
- my($so) = $Config{'so'};
-! my($libs) = $Config{'perllibs'};
- my $Config_libext = $Config{lib_ext} || ".a";
-
-
-***************
-*** 196,202 ****
- my $BC = 1 if $cc =~ /^bcc/i;
- my $GC = 1 if $cc =~ /^gcc/i;
- my $so = $Config{'so'};
-! my $libs = $Config{'libs'};
- my $libpth = $Config{'libpth'};
- my $libext = $Config{'lib_ext'} || ".lib";
-
---- 196,202 ----
- my $BC = 1 if $cc =~ /^bcc/i;
- my $GC = 1 if $cc =~ /^gcc/i;
- my $so = $Config{'so'};
-! my $libs = $Config{'perllibs'};
- my $libpth = $Config{'libpth'};
- my $libext = $Config{'lib_ext'} || ".lib";
-
-***************
-*** 590,596 ****
- =item *
-
- If C<$potential_libs> is empty, the return value will be empty.
-! Otherwise, the libraries specified by C<$Config{libs}> (see Config.pm)
- will be appended to the list of C<$potential_libs>. The libraries
- will be searched for in the directories specified in C<$potential_libs>
- as well as in C<$Config{libpth}>. For each library that is found, a
---- 590,596 ----
- =item *
-
- If C<$potential_libs> is empty, the return value will be empty.
-! Otherwise, the libraries specified by C<$Config{perllibs}> (see Config.pm)
- will be appended to the list of C<$potential_libs>. The libraries
- will be searched for in the directories specified in C<$potential_libs>
- as well as in C<$Config{libpth}>. For each library that is found, a
-diff -rc perl5.004_05.orig/lib/ExtUtils/MM_Unix.pm perl5.004_05/lib/ExtUtils/MM_Unix.pm
-*** perl5.004_05.orig/lib/ExtUtils/MM_Unix.pm Thu Jan 6 22:05:54 2000
---- perl5.004_05/lib/ExtUtils/MM_Unix.pm Sun Nov 12 21:36:25 2000
-***************
-*** 2246,2252 ****
- MAP_STATIC = ",
- join(" \\\n\t", reverse sort keys %static), "
-
-! MAP_PRELIBS = $Config::Config{libs} $Config::Config{cryptlib}
- ";
-
- if (defined $libperl) {
---- 2246,2252 ----
- MAP_STATIC = ",
- join(" \\\n\t", reverse sort keys %static), "
-
-! MAP_PRELIBS = $Config::Config{perllibs} $Config::Config{cryptlib}
- ";
-
- if (defined $libperl) {
-diff -rc perl5.004_05.orig/myconfig perl5.004_05/myconfig
-*** perl5.004_05.orig/myconfig Thu Jan 6 22:05:55 2000
---- perl5.004_05/myconfig Sun Nov 12 21:43:54 2000
-***************
-*** 34,40 ****
- Linker and Libraries:
- ld='$ld', ldflags ='$ldflags'
- libpth=$libpth
-! libs=$libs
- libc=$libc, so=$so
- useshrplib=$useshrplib, libperl=$libperl
- Dynamic Linking:
---- 34,40 ----
- Linker and Libraries:
- ld='$ld', ldflags ='$ldflags'
- libpth=$libpth
-! libs=$perllibs
- libc=$libc, so=$so
- useshrplib=$useshrplib, libperl=$libperl
- Dynamic Linking:
-diff -rc perl5.004_05.orig/patchlevel.h perl5.004_05/patchlevel.h
-*** perl5.004_05.orig/patchlevel.h Thu Jan 6 22:05:48 2000
---- perl5.004_05/patchlevel.h Sun Nov 12 21:36:25 2000
-***************
-*** 39,44 ****
---- 39,45 ----
- /* The following line and terminating '};' are read by perlbug.PL. Don't alter. */
- static char *local_patches[] = {
- NULL
-+ ,"NODB-1.0 - remove -ldb from core perl binary."
- ,NULL
- };
-
diff --git a/db/perl.BerkeleyDB/patches/5.005 b/db/perl.BerkeleyDB/patches/5.005
deleted file mode 100644
index effee3e82..000000000
--- a/db/perl.BerkeleyDB/patches/5.005
+++ /dev/null
@@ -1,209 +0,0 @@
-diff -rc perl5.005.orig/Configure perl5.005/Configure
-*** perl5.005.orig/Configure Wed Jul 15 08:05:44 1998
---- perl5.005/Configure Sun Nov 12 21:30:40 2000
-***************
-*** 234,239 ****
---- 234,240 ----
- nm=''
- nroff=''
- perl=''
-+ perllibs=''
- pg=''
- pmake=''
- pr=''
-***************
-*** 11279,11284 ****
---- 11280,11293 ----
- shift
- extensions="$*"
-
-+ : Remove libraries needed only for extensions
-+ : The appropriate ext/Foo/Makefile.PL will add them back in, if
-+ : necessary.
-+ set X `echo " $libs " |
-+ sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
-+ shift
-+ perllibs="$*"
-+
- : Remove build directory name from cppstdin so it can be used from
- : either the present location or the final installed location.
- echo " "
-***************
-*** 11804,11809 ****
---- 11813,11819 ----
- patchlevel='$patchlevel'
- path_sep='$path_sep'
- perl='$perl'
-+ perllibs='$perllibs'
- perladmin='$perladmin'
- perlpath='$perlpath'
- pg='$pg'
-diff -rc perl5.005.orig/Makefile.SH perl5.005/Makefile.SH
-*** perl5.005.orig/Makefile.SH Sun Jul 19 08:06:35 1998
---- perl5.005/Makefile.SH Sun Nov 12 21:30:40 2000
-***************
-*** 150,156 ****
- ext = \$(dynamic_ext) \$(static_ext) \$(nonxs_ext)
- DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT)
-
-! libs = $libs $cryptlib
-
- public = perl $suidperl utilities translators
-
---- 150,156 ----
- ext = \$(dynamic_ext) \$(static_ext) \$(nonxs_ext)
- DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT)
-
-! libs = $perllibs $cryptlib
-
- public = perl $suidperl utilities translators
-
-diff -rc perl5.005.orig/lib/ExtUtils/Embed.pm perl5.005/lib/ExtUtils/Embed.pm
-*** perl5.005.orig/lib/ExtUtils/Embed.pm Wed Jul 22 07:45:02 1998
---- perl5.005/lib/ExtUtils/Embed.pm Sun Nov 12 21:30:40 2000
-***************
-*** 194,200 ****
- @path = $path ? split(/:/, $path) : @INC;
-
- push(@potential_libs, @link_args) if scalar @link_args;
-! push(@potential_libs, $Config{libs}) if defined $std;
-
- push(@mods, static_ext()) if $std;
-
---- 194,200 ----
- @path = $path ? split(/:/, $path) : @INC;
-
- push(@potential_libs, @link_args) if scalar @link_args;
-! push(@potential_libs, $Config{perllibs}) if defined $std;
-
- push(@mods, static_ext()) if $std;
-
-diff -rc perl5.005.orig/lib/ExtUtils/Liblist.pm perl5.005/lib/ExtUtils/Liblist.pm
-*** perl5.005.orig/lib/ExtUtils/Liblist.pm Wed Jul 22 07:09:42 1998
---- perl5.005/lib/ExtUtils/Liblist.pm Sun Nov 12 21:30:40 2000
-***************
-*** 16,33 ****
-
- sub _unix_os2_ext {
- my($self,$potential_libs, $verbose) = @_;
-! if ($^O =~ 'os2' and $Config{libs}) {
- # Dynamic libraries are not transitive, so we may need including
- # the libraries linked against perl.dll again.
-
- $potential_libs .= " " if $potential_libs;
-! $potential_libs .= $Config{libs};
- }
- return ("", "", "", "") unless $potential_libs;
- warn "Potential libraries are '$potential_libs':\n" if $verbose;
-
- my($so) = $Config{'so'};
-! my($libs) = $Config{'libs'};
- my $Config_libext = $Config{lib_ext} || ".a";
-
-
---- 16,33 ----
-
- sub _unix_os2_ext {
- my($self,$potential_libs, $verbose) = @_;
-! if ($^O =~ 'os2' and $Config{perllibs}) {
- # Dynamic libraries are not transitive, so we may need including
- # the libraries linked against perl.dll again.
-
- $potential_libs .= " " if $potential_libs;
-! $potential_libs .= $Config{perllibs};
- }
- return ("", "", "", "") unless $potential_libs;
- warn "Potential libraries are '$potential_libs':\n" if $verbose;
-
- my($so) = $Config{'so'};
-! my($libs) = $Config{'perllibs'};
- my $Config_libext = $Config{lib_ext} || ".a";
-
-
-***************
-*** 290,296 ****
- $self->{CCFLAS} || $Config{'ccflags'};
- @crtls = ( ($dbgqual =~ m-/Debug-i ? $Config{'dbgprefix'} : '')
- . 'PerlShr/Share' );
-! push(@crtls, grep { not /\(/ } split /\s+/, $Config{'libs'});
- push(@crtls, grep { not /\(/ } split /\s+/, $Config{'libc'});
- # In general, we pass through the basic libraries from %Config unchanged.
- # The one exception is that if we're building in the Perl source tree, and
---- 290,296 ----
- $self->{CCFLAS} || $Config{'ccflags'};
- @crtls = ( ($dbgqual =~ m-/Debug-i ? $Config{'dbgprefix'} : '')
- . 'PerlShr/Share' );
-! push(@crtls, grep { not /\(/ } split /\s+/, $Config{'perllibs'});
- push(@crtls, grep { not /\(/ } split /\s+/, $Config{'libc'});
- # In general, we pass through the basic libraries from %Config unchanged.
- # The one exception is that if we're building in the Perl source tree, and
-***************
-*** 598,604 ****
- =item *
-
- If C<$potential_libs> is empty, the return value will be empty.
-! Otherwise, the libraries specified by C<$Config{libs}> (see Config.pm)
- will be appended to the list of C<$potential_libs>. The libraries
- will be searched for in the directories specified in C<$potential_libs>
- as well as in C<$Config{libpth}>. For each library that is found, a
---- 598,604 ----
- =item *
-
- If C<$potential_libs> is empty, the return value will be empty.
-! Otherwise, the libraries specified by C<$Config{perllibs}> (see Config.pm)
- will be appended to the list of C<$potential_libs>. The libraries
- will be searched for in the directories specified in C<$potential_libs>
- as well as in C<$Config{libpth}>. For each library that is found, a
-diff -rc perl5.005.orig/lib/ExtUtils/MM_Unix.pm perl5.005/lib/ExtUtils/MM_Unix.pm
-*** perl5.005.orig/lib/ExtUtils/MM_Unix.pm Tue Jul 14 04:39:12 1998
---- perl5.005/lib/ExtUtils/MM_Unix.pm Sun Nov 12 21:30:41 2000
-***************
-*** 2281,2287 ****
- MAP_STATIC = ",
- join(" \\\n\t", reverse sort keys %static), "
-
-! MAP_PRELIBS = $Config::Config{libs} $Config::Config{cryptlib}
- ";
-
- if (defined $libperl) {
---- 2281,2287 ----
- MAP_STATIC = ",
- join(" \\\n\t", reverse sort keys %static), "
-
-! MAP_PRELIBS = $Config::Config{perllibs} $Config::Config{cryptlib}
- ";
-
- if (defined $libperl) {
-diff -rc perl5.005.orig/myconfig perl5.005/myconfig
-*** perl5.005.orig/myconfig Fri Apr 3 01:20:35 1998
---- perl5.005/myconfig Sun Nov 12 21:30:41 2000
-***************
-*** 34,40 ****
- Linker and Libraries:
- ld='$ld', ldflags ='$ldflags'
- libpth=$libpth
-! libs=$libs
- libc=$libc, so=$so, useshrplib=$useshrplib, libperl=$libperl
- Dynamic Linking:
- dlsrc=$dlsrc, dlext=$dlext, d_dlsymun=$d_dlsymun, ccdlflags='$ccdlflags'
---- 34,40 ----
- Linker and Libraries:
- ld='$ld', ldflags ='$ldflags'
- libpth=$libpth
-! libs=$perllibs
- libc=$libc, so=$so, useshrplib=$useshrplib, libperl=$libperl
- Dynamic Linking:
- dlsrc=$dlsrc, dlext=$dlext, d_dlsymun=$d_dlsymun, ccdlflags='$ccdlflags'
-diff -rc perl5.005.orig/patchlevel.h perl5.005/patchlevel.h
-*** perl5.005.orig/patchlevel.h Wed Jul 22 19:22:01 1998
---- perl5.005/patchlevel.h Sun Nov 12 21:30:41 2000
-***************
-*** 39,44 ****
---- 39,45 ----
- */
- static char *local_patches[] = {
- NULL
-+ ,"NODB-1.0 - remove -ldb from core perl binary."
- ,NULL
- };
-
diff --git a/db/perl.BerkeleyDB/patches/5.005_01 b/db/perl.BerkeleyDB/patches/5.005_01
deleted file mode 100644
index 2a05dd545..000000000
--- a/db/perl.BerkeleyDB/patches/5.005_01
+++ /dev/null
@@ -1,209 +0,0 @@
-diff -rc perl5.005_01.orig/Configure perl5.005_01/Configure
-*** perl5.005_01.orig/Configure Wed Jul 15 08:05:44 1998
---- perl5.005_01/Configure Sun Nov 12 20:55:58 2000
-***************
-*** 234,239 ****
---- 234,240 ----
- nm=''
- nroff=''
- perl=''
-+ perllibs=''
- pg=''
- pmake=''
- pr=''
-***************
-*** 11279,11284 ****
---- 11280,11293 ----
- shift
- extensions="$*"
-
-+ : Remove libraries needed only for extensions
-+ : The appropriate ext/Foo/Makefile.PL will add them back in, if
-+ : necessary.
-+ set X `echo " $libs " |
-+ sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
-+ shift
-+ perllibs="$*"
-+
- : Remove build directory name from cppstdin so it can be used from
- : either the present location or the final installed location.
- echo " "
-***************
-*** 11804,11809 ****
---- 11813,11819 ----
- patchlevel='$patchlevel'
- path_sep='$path_sep'
- perl='$perl'
-+ perllibs='$perllibs'
- perladmin='$perladmin'
- perlpath='$perlpath'
- pg='$pg'
-diff -rc perl5.005_01.orig/Makefile.SH perl5.005_01/Makefile.SH
-*** perl5.005_01.orig/Makefile.SH Sun Jul 19 08:06:35 1998
---- perl5.005_01/Makefile.SH Sun Nov 12 20:55:58 2000
-***************
-*** 150,156 ****
- ext = \$(dynamic_ext) \$(static_ext) \$(nonxs_ext)
- DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT)
-
-! libs = $libs $cryptlib
-
- public = perl $suidperl utilities translators
-
---- 150,156 ----
- ext = \$(dynamic_ext) \$(static_ext) \$(nonxs_ext)
- DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT)
-
-! libs = $perllibs $cryptlib
-
- public = perl $suidperl utilities translators
-
-diff -rc perl5.005_01.orig/lib/ExtUtils/Embed.pm perl5.005_01/lib/ExtUtils/Embed.pm
-*** perl5.005_01.orig/lib/ExtUtils/Embed.pm Wed Jul 22 07:45:02 1998
---- perl5.005_01/lib/ExtUtils/Embed.pm Sun Nov 12 20:55:58 2000
-***************
-*** 194,200 ****
- @path = $path ? split(/:/, $path) : @INC;
-
- push(@potential_libs, @link_args) if scalar @link_args;
-! push(@potential_libs, $Config{libs}) if defined $std;
-
- push(@mods, static_ext()) if $std;
-
---- 194,200 ----
- @path = $path ? split(/:/, $path) : @INC;
-
- push(@potential_libs, @link_args) if scalar @link_args;
-! push(@potential_libs, $Config{perllibs}) if defined $std;
-
- push(@mods, static_ext()) if $std;
-
-diff -rc perl5.005_01.orig/lib/ExtUtils/Liblist.pm perl5.005_01/lib/ExtUtils/Liblist.pm
-*** perl5.005_01.orig/lib/ExtUtils/Liblist.pm Wed Jul 22 07:09:42 1998
---- perl5.005_01/lib/ExtUtils/Liblist.pm Sun Nov 12 20:55:58 2000
-***************
-*** 16,33 ****
-
- sub _unix_os2_ext {
- my($self,$potential_libs, $verbose) = @_;
-! if ($^O =~ 'os2' and $Config{libs}) {
- # Dynamic libraries are not transitive, so we may need including
- # the libraries linked against perl.dll again.
-
- $potential_libs .= " " if $potential_libs;
-! $potential_libs .= $Config{libs};
- }
- return ("", "", "", "") unless $potential_libs;
- warn "Potential libraries are '$potential_libs':\n" if $verbose;
-
- my($so) = $Config{'so'};
-! my($libs) = $Config{'libs'};
- my $Config_libext = $Config{lib_ext} || ".a";
-
-
---- 16,33 ----
-
- sub _unix_os2_ext {
- my($self,$potential_libs, $verbose) = @_;
-! if ($^O =~ 'os2' and $Config{perllibs}) {
- # Dynamic libraries are not transitive, so we may need including
- # the libraries linked against perl.dll again.
-
- $potential_libs .= " " if $potential_libs;
-! $potential_libs .= $Config{perllibs};
- }
- return ("", "", "", "") unless $potential_libs;
- warn "Potential libraries are '$potential_libs':\n" if $verbose;
-
- my($so) = $Config{'so'};
-! my($libs) = $Config{'perllibs'};
- my $Config_libext = $Config{lib_ext} || ".a";
-
-
-***************
-*** 290,296 ****
- $self->{CCFLAS} || $Config{'ccflags'};
- @crtls = ( ($dbgqual =~ m-/Debug-i ? $Config{'dbgprefix'} : '')
- . 'PerlShr/Share' );
-! push(@crtls, grep { not /\(/ } split /\s+/, $Config{'libs'});
- push(@crtls, grep { not /\(/ } split /\s+/, $Config{'libc'});
- # In general, we pass through the basic libraries from %Config unchanged.
- # The one exception is that if we're building in the Perl source tree, and
---- 290,296 ----
- $self->{CCFLAS} || $Config{'ccflags'};
- @crtls = ( ($dbgqual =~ m-/Debug-i ? $Config{'dbgprefix'} : '')
- . 'PerlShr/Share' );
-! push(@crtls, grep { not /\(/ } split /\s+/, $Config{'perllibs'});
- push(@crtls, grep { not /\(/ } split /\s+/, $Config{'libc'});
- # In general, we pass through the basic libraries from %Config unchanged.
- # The one exception is that if we're building in the Perl source tree, and
-***************
-*** 598,604 ****
- =item *
-
- If C<$potential_libs> is empty, the return value will be empty.
-! Otherwise, the libraries specified by C<$Config{libs}> (see Config.pm)
- will be appended to the list of C<$potential_libs>. The libraries
- will be searched for in the directories specified in C<$potential_libs>
- as well as in C<$Config{libpth}>. For each library that is found, a
---- 598,604 ----
- =item *
-
- If C<$potential_libs> is empty, the return value will be empty.
-! Otherwise, the libraries specified by C<$Config{perllibs}> (see Config.pm)
- will be appended to the list of C<$potential_libs>. The libraries
- will be searched for in the directories specified in C<$potential_libs>
- as well as in C<$Config{libpth}>. For each library that is found, a
-diff -rc perl5.005_01.orig/lib/ExtUtils/MM_Unix.pm perl5.005_01/lib/ExtUtils/MM_Unix.pm
-*** perl5.005_01.orig/lib/ExtUtils/MM_Unix.pm Tue Jul 14 04:39:12 1998
---- perl5.005_01/lib/ExtUtils/MM_Unix.pm Sun Nov 12 20:55:58 2000
-***************
-*** 2281,2287 ****
- MAP_STATIC = ",
- join(" \\\n\t", reverse sort keys %static), "
-
-! MAP_PRELIBS = $Config::Config{libs} $Config::Config{cryptlib}
- ";
-
- if (defined $libperl) {
---- 2281,2287 ----
- MAP_STATIC = ",
- join(" \\\n\t", reverse sort keys %static), "
-
-! MAP_PRELIBS = $Config::Config{perllibs} $Config::Config{cryptlib}
- ";
-
- if (defined $libperl) {
-diff -rc perl5.005_01.orig/myconfig perl5.005_01/myconfig
-*** perl5.005_01.orig/myconfig Fri Apr 3 01:20:35 1998
---- perl5.005_01/myconfig Sun Nov 12 20:55:58 2000
-***************
-*** 34,40 ****
- Linker and Libraries:
- ld='$ld', ldflags ='$ldflags'
- libpth=$libpth
-! libs=$libs
- libc=$libc, so=$so, useshrplib=$useshrplib, libperl=$libperl
- Dynamic Linking:
- dlsrc=$dlsrc, dlext=$dlext, d_dlsymun=$d_dlsymun, ccdlflags='$ccdlflags'
---- 34,40 ----
- Linker and Libraries:
- ld='$ld', ldflags ='$ldflags'
- libpth=$libpth
-! libs=$perllibs
- libc=$libc, so=$so, useshrplib=$useshrplib, libperl=$libperl
- Dynamic Linking:
- dlsrc=$dlsrc, dlext=$dlext, d_dlsymun=$d_dlsymun, ccdlflags='$ccdlflags'
-diff -rc perl5.005_01.orig/patchlevel.h perl5.005_01/patchlevel.h
-*** perl5.005_01.orig/patchlevel.h Mon Jan 3 11:07:45 2000
---- perl5.005_01/patchlevel.h Sun Nov 12 20:55:58 2000
-***************
-*** 39,44 ****
---- 39,45 ----
- */
- static char *local_patches[] = {
- NULL
-+ ,"NODB-1.0 - remove -ldb from core perl binary."
- ,NULL
- };
-
diff --git a/db/perl.BerkeleyDB/patches/5.005_02 b/db/perl.BerkeleyDB/patches/5.005_02
deleted file mode 100644
index 5dd57ddc0..000000000
--- a/db/perl.BerkeleyDB/patches/5.005_02
+++ /dev/null
@@ -1,264 +0,0 @@
-diff -rc perl5.005_02.orig/Configure perl5.005_02/Configure
-*** perl5.005_02.orig/Configure Mon Jan 3 11:12:20 2000
---- perl5.005_02/Configure Sun Nov 12 20:50:51 2000
-***************
-*** 234,239 ****
---- 234,240 ----
- nm=''
- nroff=''
- perl=''
-+ perllibs=''
- pg=''
- pmake=''
- pr=''
-***************
-*** 11334,11339 ****
---- 11335,11348 ----
- shift
- extensions="$*"
-
-+ : Remove libraries needed only for extensions
-+ : The appropriate ext/Foo/Makefile.PL will add them back in, if
-+ : necessary.
-+ set X `echo " $libs " |
-+ sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
-+ shift
-+ perllibs="$*"
-+
- : Remove build directory name from cppstdin so it can be used from
- : either the present location or the final installed location.
- echo " "
-***************
-*** 11859,11864 ****
---- 11868,11874 ----
- patchlevel='$patchlevel'
- path_sep='$path_sep'
- perl='$perl'
-+ perllibs='$perllibs'
- perladmin='$perladmin'
- perlpath='$perlpath'
- pg='$pg'
-Only in perl5.005_02: Configure.orig
-diff -rc perl5.005_02.orig/Makefile.SH perl5.005_02/Makefile.SH
-*** perl5.005_02.orig/Makefile.SH Sun Jul 19 08:06:35 1998
---- perl5.005_02/Makefile.SH Sun Nov 12 20:50:51 2000
-***************
-*** 150,156 ****
- ext = \$(dynamic_ext) \$(static_ext) \$(nonxs_ext)
- DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT)
-
-! libs = $libs $cryptlib
-
- public = perl $suidperl utilities translators
-
---- 150,156 ----
- ext = \$(dynamic_ext) \$(static_ext) \$(nonxs_ext)
- DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT)
-
-! libs = $perllibs $cryptlib
-
- public = perl $suidperl utilities translators
-
-Only in perl5.005_02: Makefile.SH.orig
-diff -rc perl5.005_02.orig/lib/ExtUtils/Embed.pm perl5.005_02/lib/ExtUtils/Embed.pm
-*** perl5.005_02.orig/lib/ExtUtils/Embed.pm Wed Jul 22 07:45:02 1998
---- perl5.005_02/lib/ExtUtils/Embed.pm Sun Nov 12 20:50:51 2000
-***************
-*** 194,200 ****
- @path = $path ? split(/:/, $path) : @INC;
-
- push(@potential_libs, @link_args) if scalar @link_args;
-! push(@potential_libs, $Config{libs}) if defined $std;
-
- push(@mods, static_ext()) if $std;
-
---- 194,200 ----
- @path = $path ? split(/:/, $path) : @INC;
-
- push(@potential_libs, @link_args) if scalar @link_args;
-! push(@potential_libs, $Config{perllibs}) if defined $std;
-
- push(@mods, static_ext()) if $std;
-
-diff -rc perl5.005_02.orig/lib/ExtUtils/Liblist.pm perl5.005_02/lib/ExtUtils/Liblist.pm
-*** perl5.005_02.orig/lib/ExtUtils/Liblist.pm Mon Jan 3 11:12:21 2000
---- perl5.005_02/lib/ExtUtils/Liblist.pm Sun Nov 12 20:50:51 2000
-***************
-*** 16,33 ****
-
- sub _unix_os2_ext {
- my($self,$potential_libs, $verbose) = @_;
-! if ($^O =~ 'os2' and $Config{libs}) {
- # Dynamic libraries are not transitive, so we may need including
- # the libraries linked against perl.dll again.
-
- $potential_libs .= " " if $potential_libs;
-! $potential_libs .= $Config{libs};
- }
- return ("", "", "", "") unless $potential_libs;
- warn "Potential libraries are '$potential_libs':\n" if $verbose;
-
- my($so) = $Config{'so'};
-! my($libs) = $Config{'libs'};
- my $Config_libext = $Config{lib_ext} || ".a";
-
-
---- 16,33 ----
-
- sub _unix_os2_ext {
- my($self,$potential_libs, $verbose) = @_;
-! if ($^O =~ 'os2' and $Config{perllibs}) {
- # Dynamic libraries are not transitive, so we may need including
- # the libraries linked against perl.dll again.
-
- $potential_libs .= " " if $potential_libs;
-! $potential_libs .= $Config{perllibs};
- }
- return ("", "", "", "") unless $potential_libs;
- warn "Potential libraries are '$potential_libs':\n" if $verbose;
-
- my($so) = $Config{'so'};
-! my($libs) = $Config{'perllibs'};
- my $Config_libext = $Config{lib_ext} || ".a";
-
-
-***************
-*** 196,202 ****
- my $BC = 1 if $cc =~ /^bcc/i;
- my $GC = 1 if $cc =~ /^gcc/i;
- my $so = $Config{'so'};
-! my $libs = $Config{'libs'};
- my $libpth = $Config{'libpth'};
- my $libext = $Config{'lib_ext'} || ".lib";
-
---- 196,202 ----
- my $BC = 1 if $cc =~ /^bcc/i;
- my $GC = 1 if $cc =~ /^gcc/i;
- my $so = $Config{'so'};
-! my $libs = $Config{'perllibs'};
- my $libpth = $Config{'libpth'};
- my $libext = $Config{'lib_ext'} || ".lib";
-
-***************
-*** 333,339 ****
- $self->{CCFLAS} || $Config{'ccflags'};
- @crtls = ( ($dbgqual =~ m-/Debug-i ? $Config{'dbgprefix'} : '')
- . 'PerlShr/Share' );
-! push(@crtls, grep { not /\(/ } split /\s+/, $Config{'libs'});
- push(@crtls, grep { not /\(/ } split /\s+/, $Config{'libc'});
- # In general, we pass through the basic libraries from %Config unchanged.
- # The one exception is that if we're building in the Perl source tree, and
---- 333,339 ----
- $self->{CCFLAS} || $Config{'ccflags'};
- @crtls = ( ($dbgqual =~ m-/Debug-i ? $Config{'dbgprefix'} : '')
- . 'PerlShr/Share' );
-! push(@crtls, grep { not /\(/ } split /\s+/, $Config{'perllibs'});
- push(@crtls, grep { not /\(/ } split /\s+/, $Config{'libc'});
- # In general, we pass through the basic libraries from %Config unchanged.
- # The one exception is that if we're building in the Perl source tree, and
-***************
-*** 623,629 ****
- =item *
-
- If C<$potential_libs> is empty, the return value will be empty.
-! Otherwise, the libraries specified by C<$Config{libs}> (see Config.pm)
- will be appended to the list of C<$potential_libs>. The libraries
- will be searched for in the directories specified in C<$potential_libs>
- as well as in C<$Config{libpth}>. For each library that is found, a
---- 623,629 ----
- =item *
-
- If C<$potential_libs> is empty, the return value will be empty.
-! Otherwise, the libraries specified by C<$Config{perllibs}> (see Config.pm)
- will be appended to the list of C<$potential_libs>. The libraries
- will be searched for in the directories specified in C<$potential_libs>
- as well as in C<$Config{libpth}>. For each library that is found, a
-***************
-*** 666,672 ****
- alphanumeric characters are treated as flags. Unknown flags will be ignored.
-
- An entry that matches C</:nodefault/i> disables the appending of default
-! libraries found in C<$Config{libs}> (this should be only needed very rarely).
-
- An entry that matches C</:nosearch/i> disables all searching for
- the libraries specified after it. Translation of C<-Lfoo> and
---- 666,672 ----
- alphanumeric characters are treated as flags. Unknown flags will be ignored.
-
- An entry that matches C</:nodefault/i> disables the appending of default
-! libraries found in C<$Config{perllibs}> (this should be only needed very rarely).
-
- An entry that matches C</:nosearch/i> disables all searching for
- the libraries specified after it. Translation of C<-Lfoo> and
-***************
-*** 676,682 ****
-
- An entry that matches C</:search/i> reenables searching for
- the libraries specified after it. You can put it at the end to
-! enable searching for default libraries specified by C<$Config{libs}>.
-
- =item *
-
---- 676,682 ----
-
- An entry that matches C</:search/i> reenables searching for
- the libraries specified after it. You can put it at the end to
-! enable searching for default libraries specified by C<$Config{perllibs}>.
-
- =item *
-
-Only in perl5.005_02/lib/ExtUtils: Liblist.pm.orig
-diff -rc perl5.005_02.orig/lib/ExtUtils/MM_Unix.pm perl5.005_02/lib/ExtUtils/MM_Unix.pm
-*** perl5.005_02.orig/lib/ExtUtils/MM_Unix.pm Tue Jul 14 04:39:12 1998
---- perl5.005_02/lib/ExtUtils/MM_Unix.pm Sun Nov 12 20:50:51 2000
-***************
-*** 2281,2287 ****
- MAP_STATIC = ",
- join(" \\\n\t", reverse sort keys %static), "
-
-! MAP_PRELIBS = $Config::Config{libs} $Config::Config{cryptlib}
- ";
-
- if (defined $libperl) {
---- 2281,2287 ----
- MAP_STATIC = ",
- join(" \\\n\t", reverse sort keys %static), "
-
-! MAP_PRELIBS = $Config::Config{perllibs} $Config::Config{cryptlib}
- ";
-
- if (defined $libperl) {
-Only in perl5.005_02/lib/ExtUtils: MM_Unix.pm.orig
-diff -rc perl5.005_02.orig/myconfig perl5.005_02/myconfig
-*** perl5.005_02.orig/myconfig Fri Apr 3 01:20:35 1998
---- perl5.005_02/myconfig Sun Nov 12 20:50:51 2000
-***************
-*** 34,40 ****
- Linker and Libraries:
- ld='$ld', ldflags ='$ldflags'
- libpth=$libpth
-! libs=$libs
- libc=$libc, so=$so, useshrplib=$useshrplib, libperl=$libperl
- Dynamic Linking:
- dlsrc=$dlsrc, dlext=$dlext, d_dlsymun=$d_dlsymun, ccdlflags='$ccdlflags'
---- 34,40 ----
- Linker and Libraries:
- ld='$ld', ldflags ='$ldflags'
- libpth=$libpth
-! libs=$perllibs
- libc=$libc, so=$so, useshrplib=$useshrplib, libperl=$libperl
- Dynamic Linking:
- dlsrc=$dlsrc, dlext=$dlext, d_dlsymun=$d_dlsymun, ccdlflags='$ccdlflags'
-diff -rc perl5.005_02.orig/patchlevel.h perl5.005_02/patchlevel.h
-*** perl5.005_02.orig/patchlevel.h Mon Jan 3 11:12:19 2000
---- perl5.005_02/patchlevel.h Sun Nov 12 20:50:51 2000
-***************
-*** 40,45 ****
---- 40,46 ----
- */
- static char *local_patches[] = {
- NULL
-+ ,"NODB-1.0 - remove -ldb from core perl binary."
- ,NULL
- };
-
diff --git a/db/perl.BerkeleyDB/patches/5.005_03 b/db/perl.BerkeleyDB/patches/5.005_03
deleted file mode 100644
index 115f9f5b9..000000000
--- a/db/perl.BerkeleyDB/patches/5.005_03
+++ /dev/null
@@ -1,250 +0,0 @@
-diff -rc perl5.005_03.orig/Configure perl5.005_03/Configure
-*** perl5.005_03.orig/Configure Sun Mar 28 17:12:57 1999
---- perl5.005_03/Configure Sun Sep 17 22:19:16 2000
-***************
-*** 208,213 ****
---- 208,214 ----
- nm=''
- nroff=''
- perl=''
-+ perllibs=''
- pg=''
- pmake=''
- pr=''
-***************
-*** 11642,11647 ****
---- 11643,11656 ----
- shift
- extensions="$*"
-
-+ : Remove libraries needed only for extensions
-+ : The appropriate ext/Foo/Makefile.PL will add them back in, if
-+ : necessary.
-+ set X `echo " $libs " |
-+ sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
-+ shift
-+ perllibs="$*"
-+
- : Remove build directory name from cppstdin so it can be used from
- : either the present location or the final installed location.
- echo " "
-***************
-*** 12183,12188 ****
---- 12192,12198 ----
- patchlevel='$patchlevel'
- path_sep='$path_sep'
- perl='$perl'
-+ perllibs='$perllibs'
- perladmin='$perladmin'
- perlpath='$perlpath'
- pg='$pg'
-diff -rc perl5.005_03.orig/Makefile.SH perl5.005_03/Makefile.SH
-*** perl5.005_03.orig/Makefile.SH Thu Mar 4 02:35:25 1999
---- perl5.005_03/Makefile.SH Sun Sep 17 22:21:01 2000
-***************
-*** 58,67 ****
- shrpldflags="-H512 -T512 -bhalt:4 -bM:SRE -bE:perl.exp"
- case "$osvers" in
- 3*)
-! shrpldflags="$shrpldflags -e _nostart $ldflags $libs $cryptlib"
- ;;
- *)
-! shrpldflags="$shrpldflags -b noentry $ldflags $libs $cryptlib"
- ;;
- esac
- aixinstdir=`pwd | sed 's/\/UU$//'`
---- 58,67 ----
- shrpldflags="-H512 -T512 -bhalt:4 -bM:SRE -bE:perl.exp"
- case "$osvers" in
- 3*)
-! shrpldflags="$shrpldflags -e _nostart $ldflags $perllibs $cryptlib"
- ;;
- *)
-! shrpldflags="$shrpldflags -b noentry $ldflags $perllibs $cryptlib"
- ;;
- esac
- aixinstdir=`pwd | sed 's/\/UU$//'`
-***************
-*** 155,161 ****
- ext = \$(dynamic_ext) \$(static_ext) \$(nonxs_ext)
- DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT)
-
-! libs = $libs $cryptlib
-
- public = perl $suidperl utilities translators
-
---- 155,161 ----
- ext = \$(dynamic_ext) \$(static_ext) \$(nonxs_ext)
- DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT)
-
-! libs = $perllibs $cryptlib
-
- public = perl $suidperl utilities translators
-
-diff -rc perl5.005_03.orig/lib/ExtUtils/Embed.pm perl5.005_03/lib/ExtUtils/Embed.pm
-*** perl5.005_03.orig/lib/ExtUtils/Embed.pm Wed Jan 6 02:17:50 1999
---- perl5.005_03/lib/ExtUtils/Embed.pm Sun Sep 17 22:19:16 2000
-***************
-*** 194,200 ****
- @path = $path ? split(/:/, $path) : @INC;
-
- push(@potential_libs, @link_args) if scalar @link_args;
-! push(@potential_libs, $Config{libs}) if defined $std;
-
- push(@mods, static_ext()) if $std;
-
---- 194,200 ----
- @path = $path ? split(/:/, $path) : @INC;
-
- push(@potential_libs, @link_args) if scalar @link_args;
-! push(@potential_libs, $Config{perllibs}) if defined $std;
-
- push(@mods, static_ext()) if $std;
-
-diff -rc perl5.005_03.orig/lib/ExtUtils/Liblist.pm perl5.005_03/lib/ExtUtils/Liblist.pm
-*** perl5.005_03.orig/lib/ExtUtils/Liblist.pm Wed Jan 6 02:17:47 1999
---- perl5.005_03/lib/ExtUtils/Liblist.pm Sun Sep 17 22:19:16 2000
-***************
-*** 16,33 ****
-
- sub _unix_os2_ext {
- my($self,$potential_libs, $verbose) = @_;
-! if ($^O =~ 'os2' and $Config{libs}) {
- # Dynamic libraries are not transitive, so we may need including
- # the libraries linked against perl.dll again.
-
- $potential_libs .= " " if $potential_libs;
-! $potential_libs .= $Config{libs};
- }
- return ("", "", "", "") unless $potential_libs;
- warn "Potential libraries are '$potential_libs':\n" if $verbose;
-
- my($so) = $Config{'so'};
-! my($libs) = $Config{'libs'};
- my $Config_libext = $Config{lib_ext} || ".a";
-
-
---- 16,33 ----
-
- sub _unix_os2_ext {
- my($self,$potential_libs, $verbose) = @_;
-! if ($^O =~ 'os2' and $Config{perllibs}) {
- # Dynamic libraries are not transitive, so we may need including
- # the libraries linked against perl.dll again.
-
- $potential_libs .= " " if $potential_libs;
-! $potential_libs .= $Config{perllibs};
- }
- return ("", "", "", "") unless $potential_libs;
- warn "Potential libraries are '$potential_libs':\n" if $verbose;
-
- my($so) = $Config{'so'};
-! my($libs) = $Config{'perllibs'};
- my $Config_libext = $Config{lib_ext} || ".a";
-
-
-***************
-*** 196,202 ****
- my $BC = 1 if $cc =~ /^bcc/i;
- my $GC = 1 if $cc =~ /^gcc/i;
- my $so = $Config{'so'};
-! my $libs = $Config{'libs'};
- my $libpth = $Config{'libpth'};
- my $libext = $Config{'lib_ext'} || ".lib";
-
---- 196,202 ----
- my $BC = 1 if $cc =~ /^bcc/i;
- my $GC = 1 if $cc =~ /^gcc/i;
- my $so = $Config{'so'};
-! my $libs = $Config{'perllibs'};
- my $libpth = $Config{'libpth'};
- my $libext = $Config{'lib_ext'} || ".lib";
-
-***************
-*** 336,342 ****
- $self->{CCFLAS} || $Config{'ccflags'};
- @crtls = ( ($dbgqual =~ m-/Debug-i ? $Config{'dbgprefix'} : '')
- . 'PerlShr/Share' );
-! push(@crtls, grep { not /\(/ } split /\s+/, $Config{'libs'});
- push(@crtls, grep { not /\(/ } split /\s+/, $Config{'libc'});
- # In general, we pass through the basic libraries from %Config unchanged.
- # The one exception is that if we're building in the Perl source tree, and
---- 336,342 ----
- $self->{CCFLAS} || $Config{'ccflags'};
- @crtls = ( ($dbgqual =~ m-/Debug-i ? $Config{'dbgprefix'} : '')
- . 'PerlShr/Share' );
-! push(@crtls, grep { not /\(/ } split /\s+/, $Config{'perllibs'});
- push(@crtls, grep { not /\(/ } split /\s+/, $Config{'libc'});
- # In general, we pass through the basic libraries from %Config unchanged.
- # The one exception is that if we're building in the Perl source tree, and
-***************
-*** 626,632 ****
- =item *
-
- If C<$potential_libs> is empty, the return value will be empty.
-! Otherwise, the libraries specified by C<$Config{libs}> (see Config.pm)
- will be appended to the list of C<$potential_libs>. The libraries
- will be searched for in the directories specified in C<$potential_libs>,
- C<$Config{libpth}>, and in C<$Config{installarchlib}/CORE>.
---- 626,632 ----
- =item *
-
- If C<$potential_libs> is empty, the return value will be empty.
-! Otherwise, the libraries specified by C<$Config{perllibs}> (see Config.pm)
- will be appended to the list of C<$potential_libs>. The libraries
- will be searched for in the directories specified in C<$potential_libs>,
- C<$Config{libpth}>, and in C<$Config{installarchlib}/CORE>.
-***************
-*** 670,676 ****
- alphanumeric characters are treated as flags. Unknown flags will be ignored.
-
- An entry that matches C</:nodefault/i> disables the appending of default
-! libraries found in C<$Config{libs}> (this should be only needed very rarely).
-
- An entry that matches C</:nosearch/i> disables all searching for
- the libraries specified after it. Translation of C<-Lfoo> and
---- 670,676 ----
- alphanumeric characters are treated as flags. Unknown flags will be ignored.
-
- An entry that matches C</:nodefault/i> disables the appending of default
-! libraries found in C<$Config{perllibs}> (this should be only needed very rarely).
-
- An entry that matches C</:nosearch/i> disables all searching for
- the libraries specified after it. Translation of C<-Lfoo> and
-***************
-*** 680,686 ****
-
- An entry that matches C</:search/i> reenables searching for
- the libraries specified after it. You can put it at the end to
-! enable searching for default libraries specified by C<$Config{libs}>.
-
- =item *
-
---- 680,686 ----
-
- An entry that matches C</:search/i> reenables searching for
- the libraries specified after it. You can put it at the end to
-! enable searching for default libraries specified by C<$Config{perllibs}>.
-
- =item *
-
-diff -rc perl5.005_03.orig/lib/ExtUtils/MM_Unix.pm perl5.005_03/lib/ExtUtils/MM_Unix.pm
-*** perl5.005_03.orig/lib/ExtUtils/MM_Unix.pm Fri Mar 5 00:34:20 1999
---- perl5.005_03/lib/ExtUtils/MM_Unix.pm Sun Sep 17 22:19:16 2000
-***************
-*** 2284,2290 ****
- MAP_STATIC = ",
- join(" \\\n\t", reverse sort keys %static), "
-
-! MAP_PRELIBS = $Config::Config{libs} $Config::Config{cryptlib}
- ";
-
- if (defined $libperl) {
---- 2284,2290 ----
- MAP_STATIC = ",
- join(" \\\n\t", reverse sort keys %static), "
-
-! MAP_PRELIBS = $Config::Config{perllibs} $Config::Config{cryptlib}
- ";
-
- if (defined $libperl) {
diff --git a/db/perl.BerkeleyDB/patches/5.6.0 b/db/perl.BerkeleyDB/patches/5.6.0
deleted file mode 100644
index 1f9b3b620..000000000
--- a/db/perl.BerkeleyDB/patches/5.6.0
+++ /dev/null
@@ -1,294 +0,0 @@
-diff -cr perl-5.6.0.orig/Configure perl-5.6.0/Configure
-*** perl-5.6.0.orig/Configure Wed Mar 22 20:36:37 2000
---- perl-5.6.0/Configure Sun Sep 17 23:40:15 2000
-***************
-*** 217,222 ****
---- 217,223 ----
- nm=''
- nroff=''
- perl=''
-+ perllibs=''
- pg=''
- pmake=''
- pr=''
-***************
-*** 14971,14976 ****
---- 14972,14985 ----
- shift
- extensions="$*"
-
-+ : Remove libraries needed only for extensions
-+ : The appropriate ext/Foo/Makefile.PL will add them back in, if
-+ : necessary.
-+ set X `echo " $libs " |
-+ sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
-+ shift
-+ perllibs="$*"
-+
- : Remove build directory name from cppstdin so it can be used from
- : either the present location or the final installed location.
- echo " "
-***************
-*** 15640,15645 ****
---- 15649,15655 ----
- path_sep='$path_sep'
- perl5='$perl5'
- perl='$perl'
-+ perllibs='$perllibs'
- perladmin='$perladmin'
- perlpath='$perlpath'
- pg='$pg'
-diff -cr perl-5.6.0.orig/Makefile.SH perl-5.6.0/Makefile.SH
-*** perl-5.6.0.orig/Makefile.SH Sat Mar 11 16:05:24 2000
---- perl-5.6.0/Makefile.SH Sun Sep 17 23:40:15 2000
-***************
-*** 70,76 ****
- *) shrpldflags="$shrpldflags -b noentry"
- ;;
- esac
-! shrpldflags="$shrpldflags $ldflags $libs $cryptlib"
- linklibperl="-L $archlibexp/CORE -L `pwd | sed 's/\/UU$//'` -lperl"
- ;;
- hpux*)
---- 70,76 ----
- *) shrpldflags="$shrpldflags -b noentry"
- ;;
- esac
-! shrpldflags="$shrpldflags $ldflags $perllibs $cryptlib"
- linklibperl="-L $archlibexp/CORE -L `pwd | sed 's/\/UU$//'` -lperl"
- ;;
- hpux*)
-***************
-*** 176,182 ****
- ext = \$(dynamic_ext) \$(static_ext) \$(nonxs_ext)
- DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT)
-
-! libs = $libs $cryptlib
-
- public = perl $suidperl utilities translators
-
---- 176,182 ----
- ext = \$(dynamic_ext) \$(static_ext) \$(nonxs_ext)
- DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT)
-
-! libs = $perllibs $cryptlib
-
- public = perl $suidperl utilities translators
-
-***************
-*** 333,339 ****
- case "$osname" in
- aix)
- $spitshell >>Makefile <<!GROK!THIS!
-! LIBS = $libs
- # In AIX we need to change this for building Perl itself from
- # its earlier definition (which is for building external
- # extensions *after* Perl has been built and installed)
---- 333,339 ----
- case "$osname" in
- aix)
- $spitshell >>Makefile <<!GROK!THIS!
-! LIBS = $perllibs
- # In AIX we need to change this for building Perl itself from
- # its earlier definition (which is for building external
- # extensions *after* Perl has been built and installed)
-diff -cr perl-5.6.0.orig/lib/ExtUtils/Embed.pm perl-5.6.0/lib/ExtUtils/Embed.pm
-*** perl-5.6.0.orig/lib/ExtUtils/Embed.pm Sun Jan 23 12:08:32 2000
---- perl-5.6.0/lib/ExtUtils/Embed.pm Sun Sep 17 23:40:15 2000
-***************
-*** 193,199 ****
- @path = $path ? split(/:/, $path) : @INC;
-
- push(@potential_libs, @link_args) if scalar @link_args;
-! push(@potential_libs, $Config{libs}) if defined $std;
-
- push(@mods, static_ext()) if $std;
-
---- 193,199 ----
- @path = $path ? split(/:/, $path) : @INC;
-
- push(@potential_libs, @link_args) if scalar @link_args;
-! push(@potential_libs, $Config{perllibs}) if defined $std;
-
- push(@mods, static_ext()) if $std;
-
-diff -cr perl-5.6.0.orig/lib/ExtUtils/Liblist.pm perl-5.6.0/lib/ExtUtils/Liblist.pm
-*** perl-5.6.0.orig/lib/ExtUtils/Liblist.pm Wed Mar 22 16:16:31 2000
---- perl-5.6.0/lib/ExtUtils/Liblist.pm Sun Sep 17 23:40:15 2000
-***************
-*** 17,34 ****
-
- sub _unix_os2_ext {
- my($self,$potential_libs, $verbose) = @_;
-! if ($^O =~ 'os2' and $Config{libs}) {
- # Dynamic libraries are not transitive, so we may need including
- # the libraries linked against perl.dll again.
-
- $potential_libs .= " " if $potential_libs;
-! $potential_libs .= $Config{libs};
- }
- return ("", "", "", "") unless $potential_libs;
- warn "Potential libraries are '$potential_libs':\n" if $verbose;
-
- my($so) = $Config{'so'};
-! my($libs) = $Config{'libs'};
- my $Config_libext = $Config{lib_ext} || ".a";
-
-
---- 17,34 ----
-
- sub _unix_os2_ext {
- my($self,$potential_libs, $verbose) = @_;
-! if ($^O =~ 'os2' and $Config{perllibs}) {
- # Dynamic libraries are not transitive, so we may need including
- # the libraries linked against perl.dll again.
-
- $potential_libs .= " " if $potential_libs;
-! $potential_libs .= $Config{perllibs};
- }
- return ("", "", "", "") unless $potential_libs;
- warn "Potential libraries are '$potential_libs':\n" if $verbose;
-
- my($so) = $Config{'so'};
-! my($libs) = $Config{'perllibs'};
- my $Config_libext = $Config{lib_ext} || ".a";
-
-
-***************
-*** 198,204 ****
- my $BC = 1 if $cc =~ /^bcc/i;
- my $GC = 1 if $cc =~ /^gcc/i;
- my $so = $Config{'so'};
-! my $libs = $Config{'libs'};
- my $libpth = $Config{'libpth'};
- my $libext = $Config{'lib_ext'} || ".lib";
-
---- 198,204 ----
- my $BC = 1 if $cc =~ /^bcc/i;
- my $GC = 1 if $cc =~ /^gcc/i;
- my $so = $Config{'so'};
-! my $libs = $Config{'perllibs'};
- my $libpth = $Config{'libpth'};
- my $libext = $Config{'lib_ext'} || ".lib";
-
-***************
-*** 338,344 ****
- $self->{CCFLAS} || $Config{'ccflags'};
- @crtls = ( ($dbgqual =~ m-/Debug-i ? $Config{'dbgprefix'} : '')
- . 'PerlShr/Share' );
-! push(@crtls, grep { not /\(/ } split /\s+/, $Config{'libs'});
- push(@crtls, grep { not /\(/ } split /\s+/, $Config{'libc'});
- # In general, we pass through the basic libraries from %Config unchanged.
- # The one exception is that if we're building in the Perl source tree, and
---- 338,344 ----
- $self->{CCFLAS} || $Config{'ccflags'};
- @crtls = ( ($dbgqual =~ m-/Debug-i ? $Config{'dbgprefix'} : '')
- . 'PerlShr/Share' );
-! push(@crtls, grep { not /\(/ } split /\s+/, $Config{'perllibs'});
- push(@crtls, grep { not /\(/ } split /\s+/, $Config{'libc'});
- # In general, we pass through the basic libraries from %Config unchanged.
- # The one exception is that if we're building in the Perl source tree, and
-***************
-*** 624,630 ****
- =item *
-
- If C<$potential_libs> is empty, the return value will be empty.
-! Otherwise, the libraries specified by C<$Config{libs}> (see Config.pm)
- will be appended to the list of C<$potential_libs>. The libraries
- will be searched for in the directories specified in C<$potential_libs>,
- C<$Config{libpth}>, and in C<$Config{installarchlib}/CORE>.
---- 624,630 ----
- =item *
-
- If C<$potential_libs> is empty, the return value will be empty.
-! Otherwise, the libraries specified by C<$Config{perllibs}> (see Config.pm)
- will be appended to the list of C<$potential_libs>. The libraries
- will be searched for in the directories specified in C<$potential_libs>,
- C<$Config{libpth}>, and in C<$Config{installarchlib}/CORE>.
-***************
-*** 668,674 ****
- alphanumeric characters are treated as flags. Unknown flags will be ignored.
-
- An entry that matches C</:nodefault/i> disables the appending of default
-! libraries found in C<$Config{libs}> (this should be only needed very rarely).
-
- An entry that matches C</:nosearch/i> disables all searching for
- the libraries specified after it. Translation of C<-Lfoo> and
---- 668,674 ----
- alphanumeric characters are treated as flags. Unknown flags will be ignored.
-
- An entry that matches C</:nodefault/i> disables the appending of default
-! libraries found in C<$Config{perllibs}> (this should be only needed very rarely).
-
- An entry that matches C</:nosearch/i> disables all searching for
- the libraries specified after it. Translation of C<-Lfoo> and
-***************
-*** 678,684 ****
-
- An entry that matches C</:search/i> reenables searching for
- the libraries specified after it. You can put it at the end to
-! enable searching for default libraries specified by C<$Config{libs}>.
-
- =item *
-
---- 678,684 ----
-
- An entry that matches C</:search/i> reenables searching for
- the libraries specified after it. You can put it at the end to
-! enable searching for default libraries specified by C<$Config{perllibs}>.
-
- =item *
-
-diff -cr perl-5.6.0.orig/lib/ExtUtils/MM_Unix.pm perl-5.6.0/lib/ExtUtils/MM_Unix.pm
-*** perl-5.6.0.orig/lib/ExtUtils/MM_Unix.pm Thu Mar 2 17:52:52 2000
---- perl-5.6.0/lib/ExtUtils/MM_Unix.pm Sun Sep 17 23:40:15 2000
-***************
-*** 2450,2456 ****
- MAP_STATIC = ",
- join(" \\\n\t", reverse sort keys %static), "
-
-! MAP_PRELIBS = $Config::Config{libs} $Config::Config{cryptlib}
- ";
-
- if (defined $libperl) {
---- 2450,2456 ----
- MAP_STATIC = ",
- join(" \\\n\t", reverse sort keys %static), "
-
-! MAP_PRELIBS = $Config::Config{perllibs} $Config::Config{cryptlib}
- ";
-
- if (defined $libperl) {
-diff -cr perl-5.6.0.orig/myconfig.SH perl-5.6.0/myconfig.SH
-*** perl-5.6.0.orig/myconfig.SH Sat Feb 26 06:34:49 2000
---- perl-5.6.0/myconfig.SH Sun Sep 17 23:41:17 2000
-***************
-*** 48,54 ****
- Linker and Libraries:
- ld='$ld', ldflags ='$ldflags'
- libpth=$libpth
-! libs=$libs
- libc=$libc, so=$so, useshrplib=$useshrplib, libperl=$libperl
- Dynamic Linking:
- dlsrc=$dlsrc, dlext=$dlext, d_dlsymun=$d_dlsymun, ccdlflags='$ccdlflags'
---- 48,54 ----
- Linker and Libraries:
- ld='$ld', ldflags ='$ldflags'
- libpth=$libpth
-! libs=$perllibs
- libc=$libc, so=$so, useshrplib=$useshrplib, libperl=$libperl
- Dynamic Linking:
- dlsrc=$dlsrc, dlext=$dlext, d_dlsymun=$d_dlsymun, ccdlflags='$ccdlflags'
-diff -cr perl-5.6.0.orig/patchlevel.h perl-5.6.0/patchlevel.h
-*** perl-5.6.0.orig/patchlevel.h Wed Mar 22 20:23:11 2000
---- perl-5.6.0/patchlevel.h Sun Sep 17 23:40:15 2000
-***************
-*** 70,75 ****
---- 70,76 ----
- #if !defined(PERL_PATCHLEVEL_H_IMPLICIT) && !defined(LOCAL_PATCH_COUNT)
- static char *local_patches[] = {
- NULL
-+ ,"NODB-1.0 - remove -ldb from core perl binary."
- ,NULL
- };
-
diff --git a/db/perl.BerkeleyDB/t/btree.t b/db/perl.BerkeleyDB/t/btree.t
deleted file mode 100644
index 97bb3257c..000000000
--- a/db/perl.BerkeleyDB/t/btree.t
+++ /dev/null
@@ -1,976 +0,0 @@
-#!./perl -w
-
-# ID: %I%, %G%
-
-use strict ;
-
-BEGIN {
- unless(grep /blib/, @INC) {
- chdir 't' if -d 't';
- @INC = '../lib' if -d '../lib';
- }
-}
-
-#use Config;
-#
-#BEGIN {
-# if(-d "lib" && -f "TEST") {
-# if ($Config{'extensions'} !~ /\bBerkeleyDB\b/ ) {
-# print "1..74\n";
-# exit 0;
-# }
-# }
-#}
-
-use BerkeleyDB;
-use File::Path qw(rmtree);
-
-print "1..243\n";
-
-my %DB_errors = (
- 'DB_INCOMPLETE' => "DB_INCOMPLETE: Sync was unable to complete",
- 'DB_KEYEMPTY' => "DB_KEYEMPTY: Non-existent key/data pair",
- 'DB_KEYEXIST' => "DB_KEYEXIST: Key/data pair already exists",
- 'DB_LOCK_DEADLOCK' => "DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock",
- 'DB_LOCK_NOTGRANTED' => "DB_LOCK_NOTGRANTED: Lock not granted",
- 'DB_NOTFOUND' => "DB_NOTFOUND: No matching key/data pair found",
- 'DB_OLD_VERSION' => "DB_OLDVERSION: Database requires a version upgrade",
- 'DB_RUNRECOVERY' => "DB_RUNRECOVERY: Fatal error, run database recovery",
-) ;
-
-{
- package LexFile ;
-
- sub new
- {
- my $self = shift ;
- unlink @_ ;
- bless [ @_ ], $self ;
- }
-
- sub DESTROY
- {
- my $self = shift ;
- unlink @{ $self } ;
- }
-}
-
-sub ok
-{
- my $no = shift ;
- my $result = shift ;
-
- print "not " unless $result ;
- print "ok $no\n" ;
-}
-
-my $Dfile = "dbhash.tmp";
-my $Dfile2 = "dbhash2.tmp";
-my $Dfile3 = "dbhash3.tmp";
-unlink $Dfile;
-
-umask(0) ;
-
-
-# Check for invalid parameters
-{
- # Check for invalid parameters
- my $db ;
- eval ' $db = new BerkeleyDB::Btree -Stupid => 3 ; ' ;
- ok 1, $@ =~ /unknown key value\(s\) Stupid/ ;
-
- eval ' $db = new BerkeleyDB::Btree -Bad => 2, -Mode => 0345, -Stupid => 3; ' ;
- ok 2, $@ =~ /unknown key value\(s\) (Bad |Stupid ){2}/ ;
-
- eval ' $db = new BerkeleyDB::Btree -Env => 2 ' ;
- ok 3, $@ =~ /^Env not of type BerkeleyDB::Env/ ;
-
- eval ' $db = new BerkeleyDB::Btree -Txn => "x" ' ;
- ok 4, $@ =~ /^Txn not of type BerkeleyDB::Txn/ ;
-
- my $obj = bless [], "main" ;
- eval ' $db = new BerkeleyDB::Btree -Env => $obj ' ;
- ok 5, $@ =~ /^Env not of type BerkeleyDB::Env/ ;
-}
-
-# Now check the interface to Btree
-
-{
- my $lex = new LexFile $Dfile ;
-
- ok 6, my $db = new BerkeleyDB::Btree -Filename => $Dfile,
- -Flags => DB_CREATE ;
-
- # Add a k/v pair
- my $value ;
- my $status ;
- ok 7, $db->db_put("some key", "some value") == 0 ;
- ok 8, $db->status() == 0 ;
- ok 9, $db->db_get("some key", $value) == 0 ;
- ok 10, $value eq "some value" ;
- ok 11, $db->db_put("key", "value") == 0 ;
- ok 12, $db->db_get("key", $value) == 0 ;
- ok 13, $value eq "value" ;
- ok 14, $db->db_del("some key") == 0 ;
- ok 15, ($status = $db->db_get("some key", $value)) == DB_NOTFOUND ;
- ok 16, $db->status() == DB_NOTFOUND ;
- ok 17, $db->status() eq $DB_errors{'DB_NOTFOUND'} ;
-
- ok 18, $db->db_sync() == 0 ;
-
- # Check NOOVERWRITE will make put fail when attempting to overwrite
- # an existing record.
-
- ok 19, $db->db_put( 'key', 'x', DB_NOOVERWRITE) == DB_KEYEXIST ;
- ok 20, $db->status() eq $DB_errors{'DB_KEYEXIST'} ;
- ok 21, $db->status() == DB_KEYEXIST ;
-
-
- # check that the value of the key has not been changed by the
- # previous test
- ok 22, $db->db_get("key", $value) == 0 ;
- ok 23, $value eq "value" ;
-
- # test DB_GET_BOTH
- my ($k, $v) = ("key", "value") ;
- ok 24, $db->db_get($k, $v, DB_GET_BOTH) == 0 ;
-
- ($k, $v) = ("key", "fred") ;
- ok 25, $db->db_get($k, $v, DB_GET_BOTH) == DB_NOTFOUND ;
-
- ($k, $v) = ("another", "value") ;
- ok 26, $db->db_get($k, $v, DB_GET_BOTH) == DB_NOTFOUND ;
-
-
-}
-
-{
- # Check simple env works with a hash.
- my $lex = new LexFile $Dfile ;
-
- my $home = "./fred" ;
- ok 27, -d $home ? chmod 0777, $home : mkdir($home, 0777) ;
-
- ok 28, my $env = new BerkeleyDB::Env -Flags => DB_CREATE|DB_INIT_MPOOL,
- -Home => $home ;
- ok 29, my $db = new BerkeleyDB::Btree -Filename => $Dfile,
- -Env => $env,
- -Flags => DB_CREATE ;
-
- # Add a k/v pair
- my $value ;
- ok 30, $db->db_put("some key", "some value") == 0 ;
- ok 31, $db->db_get("some key", $value) == 0 ;
- ok 32, $value eq "some value" ;
- undef $db ;
- undef $env ;
- rmtree $home ;
-}
-
-
-{
- # cursors
-
- my $lex = new LexFile $Dfile ;
- my %hash ;
- my ($k, $v) ;
- ok 33, my $db = new BerkeleyDB::Btree -Filename => $Dfile,
- -Flags => DB_CREATE ;
-
- # create some data
- my %data = (
- "red" => 2,
- "green" => "house",
- "blue" => "sea",
- ) ;
-
- my $ret = 0 ;
- while (($k, $v) = each %data) {
- $ret += $db->db_put($k, $v) ;
- }
- ok 34, $ret == 0 ;
-
- # create the cursor
- ok 35, my $cursor = $db->db_cursor() ;
-
- $k = $v = "" ;
- my %copy = %data ;
- my $extras = 0 ;
- # sequence forwards
- while ($cursor->c_get($k, $v, DB_NEXT) == 0) {
- if ( $copy{$k} eq $v )
- { delete $copy{$k} }
- else
- { ++ $extras }
- }
- ok 36, $cursor->status() == DB_NOTFOUND ;
- ok 37, $cursor->status() eq $DB_errors{'DB_NOTFOUND'};
- ok 38, keys %copy == 0 ;
- ok 39, $extras == 0 ;
-
- # sequence backwards
- %copy = %data ;
- $extras = 0 ;
- my $status ;
- for ( $status = $cursor->c_get($k, $v, DB_LAST) ;
- $status == 0 ;
- $status = $cursor->c_get($k, $v, DB_PREV)) {
- if ( $copy{$k} eq $v )
- { delete $copy{$k} }
- else
- { ++ $extras }
- }
- ok 40, $status == DB_NOTFOUND ;
- ok 41, $status eq $DB_errors{'DB_NOTFOUND'};
- ok 42, $cursor->status() == $status ;
- ok 43, $cursor->status() eq $status ;
- ok 44, keys %copy == 0 ;
- ok 45, $extras == 0 ;
-
- ($k, $v) = ("green", "house") ;
- ok 46, $cursor->c_get($k, $v, DB_GET_BOTH) == 0 ;
-
- ($k, $v) = ("green", "door") ;
- ok 47, $cursor->c_get($k, $v, DB_GET_BOTH) == DB_NOTFOUND ;
-
- ($k, $v) = ("black", "house") ;
- ok 48, $cursor->c_get($k, $v, DB_GET_BOTH) == DB_NOTFOUND ;
-
-}
-
-{
- # Tied Hash interface
-
- my $lex = new LexFile $Dfile ;
- my %hash ;
- ok 49, tie %hash, 'BerkeleyDB::Btree', -Filename => $Dfile,
- -Flags => DB_CREATE ;
-
- # check "each" with an empty database
- my $count = 0 ;
- while (my ($k, $v) = each %hash) {
- ++ $count ;
- }
- ok 50, (tied %hash)->status() == DB_NOTFOUND ;
- ok 51, $count == 0 ;
-
- # Add a k/v pair
- my $value ;
- $hash{"some key"} = "some value";
- ok 52, (tied %hash)->status() == 0 ;
- ok 53, $hash{"some key"} eq "some value";
- ok 54, defined $hash{"some key"} ;
- ok 55, (tied %hash)->status() == 0 ;
- ok 56, exists $hash{"some key"} ;
- ok 57, !defined $hash{"jimmy"} ;
- ok 58, (tied %hash)->status() == DB_NOTFOUND ;
- ok 59, !exists $hash{"jimmy"} ;
- ok 60, (tied %hash)->status() == DB_NOTFOUND ;
-
- delete $hash{"some key"} ;
- ok 61, (tied %hash)->status() == 0 ;
- ok 62, ! defined $hash{"some key"} ;
- ok 63, (tied %hash)->status() == DB_NOTFOUND ;
- ok 64, ! exists $hash{"some key"} ;
- ok 65, (tied %hash)->status() == DB_NOTFOUND ;
-
- $hash{1} = 2 ;
- $hash{10} = 20 ;
- $hash{1000} = 2000 ;
-
- my ($keys, $values) = (0,0);
- $count = 0 ;
- while (my ($k, $v) = each %hash) {
- $keys += $k ;
- $values += $v ;
- ++ $count ;
- }
- ok 66, $count == 3 ;
- ok 67, $keys == 1011 ;
- ok 68, $values == 2022 ;
-
- # now clear the hash
- %hash = () ;
- ok 69, keys %hash == 0 ;
-
- untie %hash ;
-}
-
-{
- # override default compare
- my $lex = new LexFile $Dfile, $Dfile2, $Dfile3 ;
- my $value ;
- my (%h, %g, %k) ;
- my @Keys = qw( 0123 12 -1234 9 987654321 def ) ;
- ok 70, tie %h, "BerkeleyDB::Btree", -Filename => $Dfile,
- -Compare => sub { $_[0] <=> $_[1] },
- -Flags => DB_CREATE ;
-
- ok 71, tie %g, 'BerkeleyDB::Btree', -Filename => $Dfile2,
- -Compare => sub { $_[0] cmp $_[1] },
- -Flags => DB_CREATE ;
-
- ok 72, tie %k, 'BerkeleyDB::Btree', -Filename => $Dfile3,
- -Compare => sub { length $_[0] <=> length $_[1] },
- -Flags => DB_CREATE ;
-
- my @srt_1 ;
- { local $^W = 0 ;
- @srt_1 = sort { $a <=> $b } @Keys ;
- }
- my @srt_2 = sort { $a cmp $b } @Keys ;
- my @srt_3 = sort { length $a <=> length $b } @Keys ;
-
- foreach (@Keys) {
- local $^W = 0 ;
- $h{$_} = 1 ;
- $g{$_} = 1 ;
- $k{$_} = 1 ;
- }
-
- sub ArrayCompare
- {
- my($a, $b) = @_ ;
-
- return 0 if @$a != @$b ;
-
- foreach (1 .. length @$a)
- {
- return 0 unless $$a[$_] eq $$b[$_] ;
- }
-
- 1 ;
- }
-
- ok 73, ArrayCompare (\@srt_1, [keys %h]);
- ok 74, ArrayCompare (\@srt_2, [keys %g]);
- ok 75, ArrayCompare (\@srt_3, [keys %k]);
-
-}
-
-{
- # override default compare, with duplicates, don't sort values
- my $lex = new LexFile $Dfile, $Dfile2, $Dfile3 ;
- my $value ;
- my (%h, %g, %k) ;
- my @Keys = qw( 0123 9 12 -1234 9 987654321 def ) ;
- my @Values = qw( 1 0 3 dd x abc 0 ) ;
- ok 76, tie %h, "BerkeleyDB::Btree", -Filename => $Dfile,
- -Compare => sub { $_[0] <=> $_[1] },
- -Property => DB_DUP,
- -Flags => DB_CREATE ;
-
- ok 77, tie %g, 'BerkeleyDB::Btree', -Filename => $Dfile2,
- -Compare => sub { $_[0] cmp $_[1] },
- -Property => DB_DUP,
- -Flags => DB_CREATE ;
-
- ok 78, tie %k, 'BerkeleyDB::Btree', -Filename => $Dfile3,
- -Compare => sub { length $_[0] <=> length $_[1] },
- -Property => DB_DUP,
- -Flags => DB_CREATE ;
-
- my @srt_1 ;
- { local $^W = 0 ;
- @srt_1 = sort { $a <=> $b } @Keys ;
- }
- my @srt_2 = sort { $a cmp $b } @Keys ;
- my @srt_3 = sort { length $a <=> length $b } @Keys ;
-
- foreach (@Keys) {
- local $^W = 0 ;
- my $value = shift @Values ;
- $h{$_} = $value ;
- $g{$_} = $value ;
- $k{$_} = $value ;
- }
-
- sub getValues
- {
- my $hash = shift ;
- my $db = tied %$hash ;
- my $cursor = $db->db_cursor() ;
- my @values = () ;
- my ($k, $v) = (0,0) ;
- while ($cursor->c_get($k, $v, DB_NEXT) == 0) {
- push @values, $v ;
- }
- return @values ;
- }
-
- ok 79, ArrayCompare (\@srt_1, [keys %h]);
- ok 80, ArrayCompare (\@srt_2, [keys %g]);
- ok 81, ArrayCompare (\@srt_3, [keys %k]);
- ok 82, ArrayCompare ([qw(dd 0 0 x 3 1 abc)], [getValues \%h]);
- ok 83, ArrayCompare ([qw(dd 1 0 3 x abc 0)], [getValues \%g]);
- ok 84, ArrayCompare ([qw(0 x 3 0 1 dd abc)], [getValues \%k]);
-
- # test DB_DUP_NEXT
- ok 85, my $cur = (tied %g)->db_cursor() ;
- my ($k, $v) = (9, "") ;
- ok 86, $cur->c_get($k, $v, DB_SET) == 0 ;
- ok 87, $k == 9 && $v == 0 ;
- ok 88, $cur->c_get($k, $v, DB_NEXT_DUP) == 0 ;
- ok 89, $k == 9 && $v eq "x" ;
- ok 90, $cur->c_get($k, $v, DB_NEXT_DUP) == DB_NOTFOUND ;
-}
-
-{
- # override default compare, with duplicates, sort values
- my $lex = new LexFile $Dfile, $Dfile2;
- my $value ;
- my (%h, %g) ;
- my @Keys = qw( 0123 9 12 -1234 9 987654321 9 def ) ;
- my @Values = qw( 1 11 3 dd x abc 2 0 ) ;
- ok 91, tie %h, "BerkeleyDB::Btree", -Filename => $Dfile,
- -Compare => sub { $_[0] <=> $_[1] },
- -DupCompare => sub { $_[0] cmp $_[1] },
- -Property => DB_DUP,
- -Flags => DB_CREATE ;
-
- ok 92, tie %g, 'BerkeleyDB::Btree', -Filename => $Dfile2,
- -Compare => sub { $_[0] cmp $_[1] },
- -DupCompare => sub { $_[0] <=> $_[1] },
- -Property => DB_DUP,
-
-
-
- -Flags => DB_CREATE ;
-
- my @srt_1 ;
- { local $^W = 0 ;
- @srt_1 = sort { $a <=> $b } @Keys ;
- }
- my @srt_2 = sort { $a cmp $b } @Keys ;
-
- foreach (@Keys) {
- local $^W = 0 ;
- my $value = shift @Values ;
- $h{$_} = $value ;
- $g{$_} = $value ;
- }
-
- ok 93, ArrayCompare (\@srt_1, [keys %h]);
- ok 94, ArrayCompare (\@srt_2, [keys %g]);
- ok 95, ArrayCompare ([qw(dd 1 3 x 2 11 abc 0)], [getValues \%g]);
- ok 96, ArrayCompare ([qw(dd 0 11 2 x 3 1 abc)], [getValues \%h]);
-
-}
-
-{
- # get_dup etc
- my $lex = new LexFile $Dfile;
- my %hh ;
-
- ok 97, my $YY = tie %hh, "BerkeleyDB::Btree", -Filename => $Dfile,
- -DupCompare => sub { $_[0] cmp $_[1] },
- -Property => DB_DUP,
- -Flags => DB_CREATE ;
-
- $hh{'Wall'} = 'Larry' ;
- $hh{'Wall'} = 'Stone' ; # Note the duplicate key
- $hh{'Wall'} = 'Brick' ; # Note the duplicate key
- $hh{'Smith'} = 'John' ;
- $hh{'mouse'} = 'mickey' ;
-
- # first work in scalar context
- ok 98, scalar $YY->get_dup('Unknown') == 0 ;
- ok 99, scalar $YY->get_dup('Smith') == 1 ;
- ok 100, scalar $YY->get_dup('Wall') == 3 ;
-
- # now in list context
- my @unknown = $YY->get_dup('Unknown') ;
- ok 101, "@unknown" eq "" ;
-
- my @smith = $YY->get_dup('Smith') ;
- ok 102, "@smith" eq "John" ;
-
- {
- my @wall = $YY->get_dup('Wall') ;
- my %wall ;
- @wall{@wall} = @wall ;
- ok 103, (@wall == 3 && $wall{'Larry'} && $wall{'Stone'} && $wall{'Brick'});
- }
-
- # hash
- my %unknown = $YY->get_dup('Unknown', 1) ;
- ok 104, keys %unknown == 0 ;
-
- my %smith = $YY->get_dup('Smith', 1) ;
- ok 105, keys %smith == 1 && $smith{'John'} ;
-
- my %wall = $YY->get_dup('Wall', 1) ;
- ok 106, keys %wall == 3 && $wall{'Larry'} == 1 && $wall{'Stone'} == 1
- && $wall{'Brick'} == 1 ;
-
- undef $YY ;
- untie %hh ;
-
-}
-
-{
- # in-memory file
-
- my $lex = new LexFile $Dfile ;
- my %hash ;
- my $fd ;
- my $value ;
- ok 107, my $db = tie %hash, 'BerkeleyDB::Btree' ;
-
- ok 108, $db->db_put("some key", "some value") == 0 ;
- ok 109, $db->db_get("some key", $value) == 0 ;
- ok 110, $value eq "some value" ;
-
-}
-
-{
- # partial
- # check works via API
-
- my $lex = new LexFile $Dfile ;
- my $value ;
- ok 111, my $db = new BerkeleyDB::Btree, -Filename => $Dfile,
- -Flags => DB_CREATE ;
-
- # create some data
- my %data = (
- "red" => "boat",
- "green" => "house",
- "blue" => "sea",
- ) ;
-
- my $ret = 0 ;
- while (my ($k, $v) = each %data) {
- $ret += $db->db_put($k, $v) ;
- }
- ok 112, $ret == 0 ;
-
-
- # do a partial get
- my ($pon, $off, $len) = $db->partial_set(0,2) ;
- ok 113, ! $pon && $off == 0 && $len == 0 ;
- ok 114, $db->db_get("red", $value) == 0 && $value eq "bo" ;
- ok 115, $db->db_get("green", $value) == 0 && $value eq "ho" ;
- ok 116, $db->db_get("blue", $value) == 0 && $value eq "se" ;
-
- # do a partial get, off end of data
- ($pon, $off, $len) = $db->partial_set(3,2) ;
- ok 117, $pon ;
- ok 118, $off == 0 ;
- ok 119, $len == 2 ;
- ok 120, $db->db_get("red", $value) == 0 && $value eq "t" ;
- ok 121, $db->db_get("green", $value) == 0 && $value eq "se" ;
- ok 122, $db->db_get("blue", $value) == 0 && $value eq "" ;
-
- # switch of partial mode
- ($pon, $off, $len) = $db->partial_clear() ;
- ok 123, $pon ;
- ok 124, $off == 3 ;
- ok 125, $len == 2 ;
- ok 126, $db->db_get("red", $value) == 0 && $value eq "boat" ;
- ok 127, $db->db_get("green", $value) == 0 && $value eq "house" ;
- ok 128, $db->db_get("blue", $value) == 0 && $value eq "sea" ;
-
- # now partial put
- $db->partial_set(0,2) ;
- ok 129, $db->db_put("red", "") == 0 ;
- ok 130, $db->db_put("green", "AB") == 0 ;
- ok 131, $db->db_put("blue", "XYZ") == 0 ;
- ok 132, $db->db_put("new", "KLM") == 0 ;
-
- ($pon, $off, $len) = $db->partial_clear() ;
- ok 133, $pon ;
- ok 134, $off == 0 ;
- ok 135, $len == 2 ;
- ok 136, $db->db_get("red", $value) == 0 && $value eq "at" ;
- ok 137, $db->db_get("green", $value) == 0 && $value eq "ABuse" ;
- ok 138, $db->db_get("blue", $value) == 0 && $value eq "XYZa" ;
- ok 139, $db->db_get("new", $value) == 0 && $value eq "KLM" ;
-
- # now partial put
- ($pon, $off, $len) = $db->partial_set(3,2) ;
- ok 140, ! $pon ;
- ok 141, $off == 0 ;
- ok 142, $len == 0 ;
- ok 143, $db->db_put("red", "PPP") == 0 ;
- ok 144, $db->db_put("green", "Q") == 0 ;
- ok 145, $db->db_put("blue", "XYZ") == 0 ;
- ok 146, $db->db_put("new", "TU") == 0 ;
-
- $db->partial_clear() ;
- ok 147, $db->db_get("red", $value) == 0 && $value eq "at\0PPP" ;
- ok 148, $db->db_get("green", $value) == 0 && $value eq "ABuQ" ;
- ok 149, $db->db_get("blue", $value) == 0 && $value eq "XYZXYZ" ;
- ok 150, $db->db_get("new", $value) == 0 && $value eq "KLMTU" ;
-}
-
-{
- # partial
- # check works via tied hash
-
- my $lex = new LexFile $Dfile ;
- my %hash ;
- my $value ;
- ok 151, my $db = tie %hash, 'BerkeleyDB::Btree', -Filename => $Dfile,
- -Flags => DB_CREATE ;
-
- # create some data
- my %data = (
- "red" => "boat",
- "green" => "house",
- "blue" => "sea",
- ) ;
-
- while (my ($k, $v) = each %data) {
- $hash{$k} = $v ;
- }
-
-
- # do a partial get
- $db->partial_set(0,2) ;
- ok 152, $hash{"red"} eq "bo" ;
- ok 153, $hash{"green"} eq "ho" ;
- ok 154, $hash{"blue"} eq "se" ;
-
- # do a partial get, off end of data
- $db->partial_set(3,2) ;
- ok 155, $hash{"red"} eq "t" ;
- ok 156, $hash{"green"} eq "se" ;
- ok 157, $hash{"blue"} eq "" ;
-
- # switch of partial mode
- $db->partial_clear() ;
- ok 158, $hash{"red"} eq "boat" ;
- ok 159, $hash{"green"} eq "house" ;
- ok 160, $hash{"blue"} eq "sea" ;
-
- # now partial put
- $db->partial_set(0,2) ;
- ok 161, $hash{"red"} = "" ;
- ok 162, $hash{"green"} = "AB" ;
- ok 163, $hash{"blue"} = "XYZ" ;
- ok 164, $hash{"new"} = "KLM" ;
-
- $db->partial_clear() ;
- ok 165, $hash{"red"} eq "at" ;
- ok 166, $hash{"green"} eq "ABuse" ;
- ok 167, $hash{"blue"} eq "XYZa" ;
- ok 168, $hash{"new"} eq "KLM" ;
-
- # now partial put
- $db->partial_set(3,2) ;
- ok 169, $hash{"red"} = "PPP" ;
- ok 170, $hash{"green"} = "Q" ;
- ok 171, $hash{"blue"} = "XYZ" ;
- ok 172, $hash{"new"} = "TU" ;
-
- $db->partial_clear() ;
- ok 173, $hash{"red"} eq "at\0PPP" ;
- ok 174, $hash{"green"} eq "ABuQ" ;
- ok 175, $hash{"blue"} eq "XYZXYZ" ;
- ok 176, $hash{"new"} eq "KLMTU" ;
-}
-
-{
- # transaction
-
- my $lex = new LexFile $Dfile ;
- my %hash ;
- my $value ;
-
- my $home = "./fred" ;
- rmtree $home if -e $home ;
- ok 177, mkdir($home, 0777) ;
- ok 178, my $env = new BerkeleyDB::Env -Home => $home,
- -Flags => DB_CREATE|DB_INIT_TXN|
- DB_INIT_MPOOL|DB_INIT_LOCK ;
- ok 179, my $txn = $env->txn_begin() ;
- ok 180, my $db1 = tie %hash, 'BerkeleyDB::Btree', -Filename => $Dfile,
- -Flags => DB_CREATE ,
- -Env => $env,
- -Txn => $txn ;
-
-
- # create some data
- my %data = (
- "red" => "boat",
- "green" => "house",
- "blue" => "sea",
- ) ;
-
- my $ret = 0 ;
- while (my ($k, $v) = each %data) {
- $ret += $db1->db_put($k, $v) ;
- }
- ok 181, $ret == 0 ;
-
- # should be able to see all the records
-
- ok 182, my $cursor = $db1->db_cursor() ;
- my ($k, $v) = ("", "") ;
- my $count = 0 ;
- # sequence forwards
- while ($cursor->c_get($k, $v, DB_NEXT) == 0) {
- ++ $count ;
- }
- ok 183, $count == 3 ;
- undef $cursor ;
-
- # now abort the transaction
- #ok 151, $txn->txn_abort() == 0 ;
- ok 184, (my $Z = $txn->txn_abort()) == 0 ;
-
- # there shouldn't be any records in the database
- $count = 0 ;
- # sequence forwards
- ok 185, $cursor = $db1->db_cursor() ;
- while ($cursor->c_get($k, $v, DB_NEXT) == 0) {
- ++ $count ;
- }
- ok 186, $count == 0 ;
-
- undef $txn ;
- undef $cursor ;
- undef $db1 ;
- undef $env ;
- untie %hash ;
- rmtree $home ;
-}
-
-{
- # DB_DUP
-
- my $lex = new LexFile $Dfile ;
- my %hash ;
- ok 187, my $db = tie %hash, 'BerkeleyDB::Btree', -Filename => $Dfile,
- -Property => DB_DUP,
- -Flags => DB_CREATE ;
-
- $hash{'Wall'} = 'Larry' ;
- $hash{'Wall'} = 'Stone' ;
- $hash{'Smith'} = 'John' ;
- $hash{'Wall'} = 'Brick' ;
- $hash{'Wall'} = 'Brick' ;
- $hash{'mouse'} = 'mickey' ;
-
- ok 188, keys %hash == 6 ;
-
- # create a cursor
- ok 189, my $cursor = $db->db_cursor() ;
-
- my $key = "Wall" ;
- my $value ;
- ok 190, $cursor->c_get($key, $value, DB_SET) == 0 ;
- ok 191, $key eq "Wall" && $value eq "Larry" ;
- ok 192, $cursor->c_get($key, $value, DB_NEXT) == 0 ;
- ok 193, $key eq "Wall" && $value eq "Stone" ;
- ok 194, $cursor->c_get($key, $value, DB_NEXT) == 0 ;
- ok 195, $key eq "Wall" && $value eq "Brick" ;
- ok 196, $cursor->c_get($key, $value, DB_NEXT) == 0 ;
- ok 197, $key eq "Wall" && $value eq "Brick" ;
-
- my $ref = $db->db_stat() ;
- ok 198, ($ref->{bt_flags} | DB_DUP) == DB_DUP ;
-
- undef $db ;
- undef $cursor ;
- untie %hash ;
-
-}
-
-{
- # db_stat
-
- my $lex = new LexFile $Dfile ;
- my $recs = ($BerkeleyDB::db_version >= 3.1 ? "bt_ndata" : "bt_nrecs") ;
- my %hash ;
- my ($k, $v) ;
- ok 199, my $db = new BerkeleyDB::Btree -Filename => $Dfile,
- -Flags => DB_CREATE,
- -Minkey =>3 ,
- -Pagesize => 2 **12
- ;
-
- my $ref = $db->db_stat() ;
- ok 200, $ref->{$recs} == 0;
- ok 201, $ref->{'bt_minkey'} == 3;
- ok 202, $ref->{'bt_pagesize'} == 2 ** 12;
-
- # create some data
- my %data = (
- "red" => 2,
- "green" => "house",
- "blue" => "sea",
- ) ;
-
- my $ret = 0 ;
- while (($k, $v) = each %data) {
- $ret += $db->db_put($k, $v) ;
- }
- ok 203, $ret == 0 ;
-
- $ref = $db->db_stat() ;
- ok 204, $ref->{$recs} == 3;
-}
-
-{
- # sub-class test
-
- package Another ;
-
- use strict ;
-
- open(FILE, ">SubDB.pm") or die "Cannot open SubDB.pm: $!\n" ;
- print FILE <<'EOM' ;
-
- package SubDB ;
-
- use strict ;
- use vars qw( @ISA @EXPORT) ;
-
- require Exporter ;
- use BerkeleyDB;
- @ISA=qw(BerkeleyDB::Btree);
- @EXPORT = @BerkeleyDB::EXPORT ;
-
- sub db_put {
- my $self = shift ;
- my $key = shift ;
- my $value = shift ;
- $self->SUPER::db_put($key, $value * 3) ;
- }
-
- sub db_get {
- my $self = shift ;
- $self->SUPER::db_get($_[0], $_[1]) ;
- $_[1] -= 2 ;
- }
-
- sub A_new_method
- {
- my $self = shift ;
- my $key = shift ;
- my $value = $self->FETCH($key) ;
- return "[[$value]]" ;
- }
-
- 1 ;
-EOM
-
- close FILE ;
-
- BEGIN { push @INC, '.'; }
- eval 'use SubDB ; ';
- main::ok 205, $@ eq "" ;
- my %h ;
- my $X ;
- eval '
- $X = tie(%h, "SubDB", -Filename => "dbbtree.tmp",
- -Flags => DB_CREATE,
- -Mode => 0640 );
- ' ;
-
- main::ok 206, $@ eq "" ;
-
- my $ret = eval '$h{"fred"} = 3 ; return $h{"fred"} ' ;
- main::ok 207, $@ eq "" ;
- main::ok 208, $ret == 7 ;
-
- my $value = 0;
- $ret = eval '$X->db_put("joe", 4) ; $X->db_get("joe", $value) ; return $value' ;
- main::ok 209, $@ eq "" ;
- main::ok 210, $ret == 10 ;
-
- $ret = eval ' DB_NEXT eq main::DB_NEXT ' ;
- main::ok 211, $@ eq "" ;
- main::ok 212, $ret == 1 ;
-
- $ret = eval '$X->A_new_method("joe") ' ;
- main::ok 213, $@ eq "" ;
- main::ok 214, $ret eq "[[10]]" ;
-
- unlink "SubDB.pm", "dbbtree.tmp" ;
-
-}
-
-{
- # DB_RECNUM, DB_SET_RECNO & DB_GET_RECNO
-
- my $lex = new LexFile $Dfile ;
- my %hash ;
- my ($k, $v) = ("", "");
- ok 215, my $db = new BerkeleyDB::Btree
- -Filename => $Dfile,
- -Flags => DB_CREATE,
- -Property => DB_RECNUM ;
-
-
- # create some data
- my @data = (
- "A zero",
- "B one",
- "C two",
- "D three",
- "E four"
- ) ;
-
- my $ix = 0 ;
- my $ret = 0 ;
- foreach (@data) {
- $ret += $db->db_put($_, $ix) ;
- ++ $ix ;
- }
- ok 216, $ret == 0 ;
-
- # db_get & DB_SET_RECNO
- $k = 1 ;
- ok 217, $db->db_get($k, $v, DB_SET_RECNO) == 0;
- ok 218, $k eq "B one" && $v == 1 ;
-
- $k = 3 ;
- ok 219, $db->db_get($k, $v, DB_SET_RECNO) == 0;
- ok 220, $k eq "D three" && $v == 3 ;
-
- $k = 4 ;
- ok 221, $db->db_get($k, $v, DB_SET_RECNO) == 0;
- ok 222, $k eq "E four" && $v == 4 ;
-
- $k = 0 ;
- ok 223, $db->db_get($k, $v, DB_SET_RECNO) == 0;
- ok 224, $k eq "A zero" && $v == 0 ;
-
- # cursor & DB_SET_RECNO
-
- # create the cursor
- ok 225, my $cursor = $db->db_cursor() ;
-
- $k = 2 ;
- ok 226, $db->db_get($k, $v, DB_SET_RECNO) == 0;
- ok 227, $k eq "C two" && $v == 2 ;
-
- $k = 0 ;
- ok 228, $cursor->c_get($k, $v, DB_SET_RECNO) == 0;
- ok 229, $k eq "A zero" && $v == 0 ;
-
- $k = 3 ;
- ok 230, $db->db_get($k, $v, DB_SET_RECNO) == 0;
- ok 231, $k eq "D three" && $v == 3 ;
-
- # cursor & DB_GET_RECNO
- ok 232, $cursor->c_get($k, $v, DB_FIRST) == 0 ;
- ok 233, $k eq "A zero" && $v == 0 ;
- ok 234, $cursor->c_get($k, $v, DB_GET_RECNO) == 0;
- ok 235, $v == 0 ;
-
- ok 236, $cursor->c_get($k, $v, DB_NEXT) == 0 ;
- ok 237, $k eq "B one" && $v == 1 ;
- ok 238, $cursor->c_get($k, $v, DB_GET_RECNO) == 0;
- ok 239, $v == 1 ;
-
- ok 240, $cursor->c_get($k, $v, DB_LAST) == 0 ;
- ok 241, $k eq "E four" && $v == 4 ;
- ok 242, $cursor->c_get($k, $v, DB_GET_RECNO) == 0;
- ok 243, $v == 4 ;
-
-}
-
diff --git a/db/perl.BerkeleyDB/t/db-3.0.t b/db/perl.BerkeleyDB/t/db-3.0.t
deleted file mode 100644
index 9c324dc7b..000000000
--- a/db/perl.BerkeleyDB/t/db-3.0.t
+++ /dev/null
@@ -1,128 +0,0 @@
-#!./perl -w
-
-# ID: 1.2, 7/17/97
-
-use strict ;
-
-BEGIN {
- unless(grep /blib/, @INC) {
- chdir 't' if -d 't';
- @INC = '../lib' if -d '../lib';
- }
-}
-
-use BerkeleyDB;
-use File::Path qw(rmtree);
-
-BEGIN
-{
- if ($BerkeleyDB::db_version < 3) {
- print "1..0 # Skipped - this needs Berkeley DB 3.x or better\n" ;
- exit 0 ;
- }
-}
-
-print "1..14\n";
-
-
-{
- package LexFile ;
-
- sub new
- {
- my $self = shift ;
- unlink @_ ;
- bless [ @_ ], $self ;
- }
-
- sub DESTROY
- {
- my $self = shift ;
- unlink @{ $self } ;
- }
-}
-
-sub ok
-{
- my $no = shift ;
- my $result = shift ;
-
- print "not " unless $result ;
- print "ok $no\n" ;
-}
-
-sub docat
-{
- my $file = shift;
- local $/ = undef;
- open(CAT,$file) || die "Cannot open $file:$!";
- my $result = <CAT>;
- close(CAT);
- return $result;
-}
-
-
-my $Dfile = "dbhash.tmp";
-
-umask(0);
-
-{
- # set_mutexlocks
-
- my $home = "./fred" ;
- ok 1, -d $home ? chmod 0777, $home : mkdir($home, 0777) ;
- mkdir "./fred", 0777 ;
- chdir "./fred" ;
- ok 2, my $env = new BerkeleyDB::Env -Flags => DB_CREATE ;
- ok 3, $env->set_mutexlocks(0) == 0 ;
- chdir ".." ;
- undef $env ;
- rmtree $home ;
-}
-
-{
- # c_dup
-
-
- my $lex = new LexFile $Dfile ;
- my %hash ;
- my ($k, $v) ;
- ok 4, my $db = new BerkeleyDB::Hash -Filename => $Dfile,
- -Flags => DB_CREATE ;
-
- # create some data
- my %data = (
- "red" => 2,
- "green" => "house",
- "blue" => "sea",
- ) ;
-
- my $ret = 0 ;
- while (($k, $v) = each %data) {
- $ret += $db->db_put($k, $v) ;
- }
- ok 5, $ret == 0 ;
-
- # create a cursor
- ok 6, my $cursor = $db->db_cursor() ;
-
- # point to a specific k/v pair
- $k = "green" ;
- ok 7, $cursor->c_get($k, $v, DB_SET) == 0 ;
- ok 8, $v eq "house" ;
-
- # duplicate the cursor
- my $dup_cursor = $cursor->c_dup(DB_POSITION);
- ok 9, $dup_cursor ;
-
- # move original cursor off green/house
- $cursor->c_get($k, $v, DB_NEXT) ;
- ok 10, $k ne "green" ;
- ok 11, $v ne "house" ;
-
- # duplicate cursor should still be on green/house
- ok 12, $dup_cursor->c_get($k, $v, DB_CURRENT) == 0;
- ok 13, $k eq "green" ;
- ok 14, $v eq "house" ;
-
-}
diff --git a/db/perl.BerkeleyDB/t/db-3.1.t b/db/perl.BerkeleyDB/t/db-3.1.t
deleted file mode 100644
index 35076b6cd..000000000
--- a/db/perl.BerkeleyDB/t/db-3.1.t
+++ /dev/null
@@ -1,172 +0,0 @@
-#!./perl -w
-
-# ID: %I%, %G%
-
-use strict ;
-
-BEGIN {
- unless(grep /blib/, @INC) {
- chdir 't' if -d 't';
- @INC = '../lib' if -d '../lib';
- }
-}
-
-#use Config;
-#
-#BEGIN {
-# if(-d "lib" && -f "TEST") {
-# if ($Config{'extensions'} !~ /\bBerkeleyDB\b/ ) {
-# print "1..74\n";
-# exit 0;
-# }
-# }
-#}
-
-use BerkeleyDB;
-use File::Path qw(rmtree);
-
-BEGIN
-{
- if ($BerkeleyDB::db_version < 3.1) {
- print "1..0 # Skipping test, this needs Berkeley DB 3.1.x or better\n" ;
- exit 0 ;
- }
-}
-
-print "1..25\n";
-
-my %DB_errors = (
- 'DB_INCOMPLETE' => "DB_INCOMPLETE: Sync was unable to complete",
- 'DB_KEYEMPTY' => "DB_KEYEMPTY: Non-existent key/data pair",
- 'DB_KEYEXIST' => "DB_KEYEXIST: Key/data pair already exists",
- 'DB_LOCK_DEADLOCK' => "DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock",
- 'DB_LOCK_NOTGRANTED' => "DB_LOCK_NOTGRANTED: Lock not granted",
- 'DB_NOTFOUND' => "DB_NOTFOUND: No matching key/data pair found",
- 'DB_OLD_VERSION' => "DB_OLDVERSION: Database requires a version upgrade",
- 'DB_RUNRECOVERY' => "DB_RUNRECOVERY: Fatal error, run database recovery",
-) ;
-
-{
- package LexFile ;
-
- sub new
- {
- my $self = shift ;
- unlink @_ ;
- bless [ @_ ], $self ;
- }
-
- sub DESTROY
- {
- my $self = shift ;
- unlink @{ $self } ;
- }
-}
-
-
-sub ok
-{
- my $no = shift ;
- my $result = shift ;
-
- print "not " unless $result ;
- print "ok $no\n" ;
-}
-
-my $Dfile = "dbhash.tmp";
-my $Dfile2 = "dbhash2.tmp";
-my $Dfile3 = "dbhash3.tmp";
-unlink $Dfile;
-
-umask(0) ;
-
-
-
-{
- # c_count
-
- my $lex = new LexFile $Dfile ;
- my %hash ;
- ok 1, my $db = tie %hash, 'BerkeleyDB::Hash', -Filename => $Dfile,
- -Property => DB_DUP,
- -Flags => DB_CREATE ;
-
- $hash{'Wall'} = 'Larry' ;
- $hash{'Wall'} = 'Stone' ;
- $hash{'Smith'} = 'John' ;
- $hash{'Wall'} = 'Brick' ;
- $hash{'Wall'} = 'Brick' ;
- $hash{'mouse'} = 'mickey' ;
-
- ok 2, keys %hash == 6 ;
-
- # create a cursor
- ok 3, my $cursor = $db->db_cursor() ;
-
- my $key = "Wall" ;
- my $value ;
- ok 4, $cursor->c_get($key, $value, DB_SET) == 0 ;
- ok 5, $key eq "Wall" && $value eq "Larry" ;
-
- my $count ;
- ok 6, $cursor->c_count($count) == 0 ;
- ok 7, $count == 4 ;
-
- $key = "Smith" ;
- ok 8, $cursor->c_get($key, $value, DB_SET) == 0 ;
- ok 9, $key eq "Smith" && $value eq "John" ;
-
- ok 10, $cursor->c_count($count) == 0 ;
- ok 11, $count == 1 ;
-
-
- undef $db ;
- undef $cursor ;
- untie %hash ;
-
-}
-
-{
- # db_key_range
-
- my $lex = new LexFile $Dfile ;
- my %hash ;
- ok 12, my $db = tie %hash, 'BerkeleyDB::Btree', -Filename => $Dfile,
- -Property => DB_DUP,
- -Flags => DB_CREATE ;
-
- $hash{'Wall'} = 'Larry' ;
- $hash{'Wall'} = 'Stone' ;
- $hash{'Smith'} = 'John' ;
- $hash{'Wall'} = 'Brick' ;
- $hash{'Wall'} = 'Brick' ;
- $hash{'mouse'} = 'mickey' ;
-
- ok 13, keys %hash == 6 ;
-
- my $key = "Wall" ;
- my ($less, $equal, $greater) ;
- ok 14, $db->db_key_range($key, $less, $equal, $greater) == 0 ;
-
- ok 15, $less != 0 ;
- ok 16, $equal != 0 ;
- ok 17, $greater != 0 ;
-
- $key = "Smith" ;
- ok 18, $db->db_key_range($key, $less, $equal, $greater) == 0 ;
-
- ok 19, $less == 0 ;
- ok 20, $equal != 0 ;
- ok 21, $greater != 0 ;
-
- $key = "NotThere" ;
- ok 22, $db->db_key_range($key, $less, $equal, $greater) == 0 ;
-
- ok 23, $less == 0 ;
- ok 24, $equal == 0 ;
- ok 25, $greater == 1 ;
-
- undef $db ;
- untie %hash ;
-
-}
diff --git a/db/perl.BerkeleyDB/t/db-3.2.t b/db/perl.BerkeleyDB/t/db-3.2.t
deleted file mode 100644
index 0cff24873..000000000
--- a/db/perl.BerkeleyDB/t/db-3.2.t
+++ /dev/null
@@ -1,90 +0,0 @@
-#!./perl -w
-
-# ID: %I%, %G%
-
-use strict ;
-
-BEGIN {
- unless(grep /blib/, @INC) {
- chdir 't' if -d 't';
- @INC = '../lib' if -d '../lib';
- }
-}
-
-#use Config;
-#
-#BEGIN {
-# if(-d "lib" && -f "TEST") {
-# if ($Config{'extensions'} !~ /\bBerkeleyDB\b/ ) {
-# print "1..74\n";
-# exit 0;
-# }
-# }
-#}
-
-use BerkeleyDB;
-use File::Path qw(rmtree);
-
-BEGIN
-{
- if ($BerkeleyDB::db_version < 3.2) {
- print "1..0 # Skipping test, this needs Berkeley DB 3.2.x or better\n" ;
- exit 0 ;
- }
-}
-
-print "1..1\n";
-
-my %DB_errors = (
- 'DB_INCOMPLETE' => "DB_INCOMPLETE: Sync was unable to complete",
- 'DB_KEYEMPTY' => "DB_KEYEMPTY: Non-existent key/data pair",
- 'DB_KEYEXIST' => "DB_KEYEXIST: Key/data pair already exists",
- 'DB_LOCK_DEADLOCK' => "DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock",
- 'DB_LOCK_NOTGRANTED' => "DB_LOCK_NOTGRANTED: Lock not granted",
- 'DB_NOTFOUND' => "DB_NOTFOUND: No matching key/data pair found",
- 'DB_OLD_VERSION' => "DB_OLDVERSION: Database requires a version upgrade",
- 'DB_RUNRECOVERY' => "DB_RUNRECOVERY: Fatal error, run database recovery",
-) ;
-
-{
- package LexFile ;
-
- sub new
- {
- my $self = shift ;
- unlink @_ ;
- bless [ @_ ], $self ;
- }
-
- sub DESTROY
- {
- my $self = shift ;
- unlink @{ $self } ;
- }
-}
-
-
-sub ok
-{
- my $no = shift ;
- my $result = shift ;
-
- print "not " unless $result ;
- print "ok $no\n" ;
-}
-
-my $Dfile = "dbhash.tmp";
-my $Dfile2 = "dbhash2.tmp";
-my $Dfile3 = "dbhash3.tmp";
-unlink $Dfile;
-
-umask(0) ;
-
-
-
-{
- # set_q_extentsize
-
- ok 1, 1 ;
-}
-
diff --git a/db/perl.BerkeleyDB/t/destroy.t b/db/perl.BerkeleyDB/t/destroy.t
deleted file mode 100644
index e3a1e2a97..000000000
--- a/db/perl.BerkeleyDB/t/destroy.t
+++ /dev/null
@@ -1,141 +0,0 @@
-#!./perl -w
-
-use strict ;
-
-BEGIN {
- unless(grep /blib/, @INC) {
- chdir 't' if -d 't';
- @INC = '../lib' if -d '../lib';
- }
-}
-
-use BerkeleyDB;
-use File::Path qw(rmtree);
-
-print "1..13\n";
-
-
-{
- package LexFile ;
-
- sub new
- {
- my $self = shift ;
- unlink @_ ;
- bless [ @_ ], $self ;
- }
-
- sub DESTROY
- {
- my $self = shift ;
- unlink @{ $self } ;
- }
-}
-
-sub ok
-{
- my $no = shift ;
- my $result = shift ;
-
- print "not " unless $result ;
- print "ok $no\n" ;
-}
-
-sub docat
-{
- my $file = shift;
- local $/ = undef;
- open(CAT,$file) || die "Cannot open $file:$!";
- my $result = <CAT>;
- close(CAT);
- return $result;
-}
-
-
-my $Dfile = "dbhash.tmp";
-my $home = "./fred" ;
-
-umask(0);
-
-{
- # let object destroction kill everything
-
- my $lex = new LexFile $Dfile ;
- my %hash ;
- my $value ;
-
- rmtree $home if -e $home ;
- ok 1, mkdir($home, 0777) ;
- ok 2, my $env = new BerkeleyDB::Env -Home => $home,
- -Flags => DB_CREATE|DB_INIT_TXN|
- DB_INIT_MPOOL|DB_INIT_LOCK ;
- ok 3, my $txn = $env->txn_begin() ;
- ok 4, my $db1 = tie %hash, 'BerkeleyDB::Hash', -Filename => $Dfile,
- -Flags => DB_CREATE ,
- -Env => $env,
- -Txn => $txn ;
-
-
- # create some data
- my %data = (
- "red" => "boat",
- "green" => "house",
- "blue" => "sea",
- ) ;
-
- my $ret = 0 ;
- while (my ($k, $v) = each %data) {
- $ret += $db1->db_put($k, $v) ;
- }
- ok 5, $ret == 0 ;
-
- # should be able to see all the records
-
- ok 6, my $cursor = $db1->db_cursor() ;
- my ($k, $v) = ("", "") ;
- my $count = 0 ;
- # sequence forwards
- while ($cursor->c_get($k, $v, DB_NEXT) == 0) {
- ++ $count ;
- }
- ok 7, $count == 3 ;
- undef $cursor ;
-
- # now abort the transaction
- ok 8, $txn->txn_abort() == 0 ;
-
- # there shouldn't be any records in the database
- $count = 0 ;
- # sequence forwards
- ok 9, $cursor = $db1->db_cursor() ;
- while ($cursor->c_get($k, $v, DB_NEXT) == 0) {
- ++ $count ;
- }
- ok 10, $count == 0 ;
-
- #undef $txn ;
- #undef $cursor ;
- #undef $db1 ;
- #undef $env ;
- #untie %hash ;
-
-}
-{
- my $lex = new LexFile $Dfile ;
- my %hash ;
- my $cursor ;
- my ($k, $v) = ("", "") ;
- ok 11, my $db1 = tie %hash, 'BerkeleyDB::Hash',
- -Filename => $Dfile,
- -Flags => DB_CREATE ;
- my $count = 0 ;
- # sequence forwards
- ok 12, $cursor = $db1->db_cursor() ;
- while ($cursor->c_get($k, $v, DB_NEXT) == 0) {
- ++ $count ;
- }
- ok 13, $count == 0 ;
-}
-
-rmtree $home ;
-
diff --git a/db/perl.BerkeleyDB/t/env.t b/db/perl.BerkeleyDB/t/env.t
deleted file mode 100644
index 5d0197f85..000000000
--- a/db/perl.BerkeleyDB/t/env.t
+++ /dev/null
@@ -1,279 +0,0 @@
-#!./perl -w
-
-# ID: 1.2, 7/17/97
-
-use strict ;
-
-BEGIN {
- unless(grep /blib/, @INC) {
- chdir 't' if -d 't';
- @INC = '../lib' if -d '../lib';
- }
-}
-
-use BerkeleyDB;
-use File::Path qw(rmtree);
-
-print "1..52\n";
-
-
-{
- package LexFile ;
-
- sub new
- {
- my $self = shift ;
- unlink @_ ;
- bless [ @_ ], $self ;
- }
-
- sub DESTROY
- {
- my $self = shift ;
- unlink @{ $self } ;
- }
-}
-
-sub ok
-{
- my $no = shift ;
- my $result = shift ;
-
- print "not " unless $result ;
- print "ok $no\n" ;
-}
-
-sub docat
-{
- my $file = shift;
- local $/ = undef;
- open(CAT,$file) || die "Cannot open $file:$!";
- my $result = <CAT>;
- close(CAT);
- return $result;
-}
-
-
-my $Dfile = "dbhash.tmp";
-
-umask(0);
-
-{
- # db version stuff
- my ($major, $minor, $patch) = (0, 0, 0) ;
-
- ok 1, my $VER = BerkeleyDB::DB_VERSION_STRING ;
- ok 2, my $ver = BerkeleyDB::db_version($major, $minor, $patch) ;
- ok 3, $VER eq $ver ;
- ok 4, $major > 1 ;
- ok 5, defined $minor ;
- ok 6, defined $patch ;
-}
-
-{
- # Check for invalid parameters
- my $env ;
- eval ' $env = new BerkeleyDB::Env( -Stupid => 3) ; ' ;
- ok 7, $@ =~ /unknown key value\(s\) Stupid/ ;
-
- eval ' $env = new BerkeleyDB::Env( -Bad => 2, -Home => "/tmp", -Stupid => 3) ; ' ;
- ok 8, $@ =~ /unknown key value\(s\) (Bad |Stupid ){2}/ ;
-
- eval ' $env = new BerkeleyDB::Env (-Config => {"fred" => " "} ) ; ' ;
- ok 9, !$env ;
- ok 10, $BerkeleyDB::Error =~ /^illegal name-value pair/ ;
-}
-
-{
- # create a very simple environment
- my $home = "./fred" ;
- ok 11, -d $home ? chmod 0777, $home : mkdir($home, 0777) ;
- mkdir "./fred", 0777 ;
- chdir "./fred" ;
- ok 12, my $env = new BerkeleyDB::Env -Flags => DB_CREATE ;
- chdir ".." ;
- undef $env ;
- rmtree $home ;
-}
-
-{
- # create an environment with a Home
- my $home = "./fred" ;
- ok 13, -d $home ? chmod 0777, $home : mkdir($home, 0777) ;
- ok 14, my $env = new BerkeleyDB::Env -Home => $home,
- -Flags => DB_CREATE ;
-
- undef $env ;
- rmtree $home ;
-}
-
-{
- # make new fail.
- my $home = "./not_there" ;
- rmtree $home ;
- ok 15, ! -d $home ;
- my $env = new BerkeleyDB::Env -Home => $home,
- -Flags => DB_INIT_LOCK ;
- ok 16, ! $env ;
- ok 17, $! != 0 ;
-
- rmtree $home ;
-}
-
-{
- # Config
- use Cwd ;
- my $cwd = cwd() ;
- my $home = "$cwd/fred" ;
- my $data_dir = "$home/data_dir" ;
- my $log_dir = "$home/log_dir" ;
- my $data_file = "data.db" ;
- ok 18, -d $home ? chmod 0777, $home : mkdir($home, 0777) ;
- ok 19, -d $data_dir ? chmod 0777, $data_dir : mkdir($data_dir, 0777) ;
- ok 20, -d $log_dir ? chmod 0777, $log_dir : mkdir($log_dir, 0777) ;
- my $env = new BerkeleyDB::Env -Home => $home,
- -Config => { DB_DATA_DIR => $data_dir,
- DB_LOG_DIR => $log_dir
- },
- -Flags => DB_CREATE|DB_INIT_TXN|DB_INIT_LOG|
- DB_INIT_MPOOL|DB_INIT_LOCK ;
- ok 21, $env ;
-
- ok 22, my $txn = $env->txn_begin() ;
-
- my %hash ;
- ok 23, tie %hash, 'BerkeleyDB::Hash', -Filename => $data_file,
- -Flags => DB_CREATE ,
- -Env => $env,
- -Txn => $txn ;
-
- $hash{"abc"} = 123 ;
- $hash{"def"} = 456 ;
-
- $txn->txn_commit() ;
-
- untie %hash ;
-
- undef $txn ;
- undef $env ;
- rmtree $home ;
-}
-
-{
- # -ErrFile with a filename
- my $errfile = "./errfile" ;
- my $home = "./fred" ;
- ok 24, -d $home ? chmod 0777, $home : mkdir($home, 0777) ;
- my $lex = new LexFile $errfile ;
- ok 25, my $env = new BerkeleyDB::Env( -ErrFile => $errfile,
- -Flags => DB_CREATE,
- -Home => $home) ;
- my $db = new BerkeleyDB::Hash -Filename => $Dfile,
- -Env => $env,
- -Flags => -1;
- ok 26, !$db ;
-
- ok 27, $BerkeleyDB::Error =~ /^illegal flag specified to (db_open|DB->open)/;
- ok 28, -e $errfile ;
- my $contents = docat($errfile) ;
- chomp $contents ;
- ok 29, $BerkeleyDB::Error eq $contents ;
-
- undef $env ;
- rmtree $home ;
-}
-
-{
- # -ErrFile with a filehandle
- use IO ;
- my $home = "./fred" ;
- ok 30, -d $home ? chmod 0777, $home : mkdir($home, 0777) ;
- my $errfile = "./errfile" ;
- my $lex = new LexFile $errfile ;
- ok 31, my $ef = new IO::File ">$errfile" ;
- ok 32, my $env = new BerkeleyDB::Env( -ErrFile => $ef ,
- -Flags => DB_CREATE,
- -Home => $home) ;
- my $db = new BerkeleyDB::Hash -Filename => $Dfile,
- -Env => $env,
- -Flags => -1;
- ok 33, !$db ;
-
- ok 34, $BerkeleyDB::Error =~ /^illegal flag specified to (db_open|DB->open)/;
- $ef->close() ;
- ok 35, -e $errfile ;
- my $contents = "" ;
- $contents = docat($errfile) ;
- chomp $contents ;
- ok 36, $BerkeleyDB::Error eq $contents ;
- undef $env ;
- rmtree $home ;
-}
-
-{
- # -ErrPrefix
- use IO ;
- my $home = "./fred" ;
- ok 37, -d $home ? chmod 0777, $home : mkdir($home, 0777) ;
- my $errfile = "./errfile" ;
- my $lex = new LexFile $errfile ;
- ok 38, my $env = new BerkeleyDB::Env( -ErrFile => $errfile,
- -ErrPrefix => "PREFIX",
- -Flags => DB_CREATE,
- -Home => $home) ;
- my $db = new BerkeleyDB::Hash -Filename => $Dfile,
- -Env => $env,
- -Flags => -1;
- ok 39, !$db ;
-
- ok 40, $BerkeleyDB::Error =~ /^PREFIX: illegal flag specified to (db_open|DB->open)/;
- ok 41, -e $errfile ;
- my $contents = docat($errfile) ;
- chomp $contents ;
- ok 42, $BerkeleyDB::Error eq $contents ;
-
- # change the prefix on the fly
- my $old = $env->errPrefix("NEW ONE") ;
- ok 43, $old eq "PREFIX" ;
-
- $db = new BerkeleyDB::Hash -Filename => $Dfile,
- -Env => $env,
- -Flags => -1;
- ok 44, !$db ;
- ok 45, $BerkeleyDB::Error =~ /^NEW ONE: illegal flag specified to (db_open|DB->open)/;
- $contents = docat($errfile) ;
- chomp $contents ;
- ok 46, $contents =~ /$BerkeleyDB::Error$/ ;
- undef $env ;
- rmtree $home ;
-}
-
-{
- # test db_appexit
- use Cwd ;
- my $cwd = cwd() ;
- my $home = "$cwd/fred" ;
- my $data_dir = "$home/data_dir" ;
- my $log_dir = "$home/log_dir" ;
- my $data_file = "data.db" ;
- ok 47, -d $home ? chmod 0777, $home : mkdir($home, 0777) ;
- ok 48, -d $data_dir ? chmod 0777, $data_dir : mkdir($data_dir, 0777) ;
- ok 49, -d $log_dir ? chmod 0777, $log_dir : mkdir($log_dir, 0777) ;
- my $env = new BerkeleyDB::Env -Home => $home,
- -Config => { DB_DATA_DIR => $data_dir,
- DB_LOG_DIR => $log_dir
- },
- -Flags => DB_CREATE|DB_INIT_TXN|DB_INIT_LOG|
- DB_INIT_MPOOL|DB_INIT_LOCK ;
- ok 50, $env ;
-
- ok 51, my $txn_mgr = $env->TxnMgr() ;
-
- ok 52, $env->db_appexit() == 0 ;
-
- #rmtree $home ;
-}
-
-# test -Verbose
-# test -Flags
-# db_value_set
diff --git a/db/perl.BerkeleyDB/t/examples.t b/db/perl.BerkeleyDB/t/examples.t
deleted file mode 100644
index 4b6702d54..000000000
--- a/db/perl.BerkeleyDB/t/examples.t
+++ /dev/null
@@ -1,482 +0,0 @@
-#!./perl -w
-
-use strict ;
-
-BEGIN {
- unless(grep /blib/, @INC) {
- chdir 't' if -d 't';
- @INC = '../lib' if -d '../lib';
- }
-}
-
-use BerkeleyDB;
-use File::Path qw(rmtree);
-
-print "1..7\n";
-
-my $FA = 0 ;
-
-{
- sub try::TIEARRAY { bless [], "try" }
- sub try::FETCHSIZE { $FA = 1 }
- $FA = 0 ;
- my @a ;
- tie @a, 'try' ;
- my $a = @a ;
-}
-
-{
- package LexFile ;
-
- sub new
- {
- my $self = shift ;
- unlink @_ ;
- bless [ @_ ], $self ;
- }
-
- sub DESTROY
- {
- my $self = shift ;
- unlink @{ $self } ;
- }
-}
-
-
-sub ok
-{
- my $no = shift ;
- my $result = shift ;
-
- print "not " unless $result ;
- print "ok $no\n" ;
-}
-
-{
- package Redirect ;
- use Symbol ;
-
- sub new
- {
- my $class = shift ;
- my $filename = shift ;
- my $fh = gensym ;
- open ($fh, ">$filename") || die "Cannot open $filename: $!" ;
- my $real_stdout = select($fh) ;
- return bless [$fh, $real_stdout ] ;
-
- }
- sub DESTROY
- {
- my $self = shift ;
- close $self->[0] ;
- select($self->[1]) ;
- }
-}
-
-sub docat
-{
- my $file = shift;
- local $/ = undef;
- open(CAT,$file) || die "Cannot open $file:$!";
- my $result = <CAT> || "" ;
- close(CAT);
- return $result;
-}
-
-sub docat_del
-{
- my $file = shift;
- local $/ = undef;
- open(CAT,$file) || die "Cannot open $file: $!";
- my $result = <CAT> || "" ;
- close(CAT);
- unlink $file ;
- return $result;
-}
-
-my $Dfile = "dbhash.tmp";
-my $Dfile2 = "dbhash2.tmp";
-my $Dfile3 = "dbhash3.tmp";
-unlink $Dfile;
-
-umask(0) ;
-
-my $redirect = "xyzt" ;
-
-
-{
-my $x = $BerkeleyDB::Error;
-my $redirect = "xyzt" ;
- {
- my $redirectObj = new Redirect $redirect ;
-
- use strict ;
- use BerkeleyDB ;
- use vars qw( %h $k $v ) ;
-
- my $filename = "fruit" ;
- unlink $filename ;
- tie %h, "BerkeleyDB::Hash",
- -Filename => $filename,
- -Flags => DB_CREATE
- or die "Cannot open file $filename: $! $BerkeleyDB::Error\n" ;
-
- # Add a few key/value pairs to the file
- $h{"apple"} = "red" ;
- $h{"orange"} = "orange" ;
- $h{"banana"} = "yellow" ;
- $h{"tomato"} = "red" ;
-
- # Check for existence of a key
- print "Banana Exists\n\n" if $h{"banana"} ;
-
- # Delete a key/value pair.
- delete $h{"apple"} ;
-
- # print the contents of the file
- while (($k, $v) = each %h)
- { print "$k -> $v\n" }
-
- untie %h ;
- unlink $filename ;
- }
-
- #print "[" . docat($redirect) . "]" ;
- ok(1, docat_del($redirect) eq <<'EOM') ;
-Banana Exists
-
-orange -> orange
-tomato -> red
-banana -> yellow
-EOM
-
-
-}
-
-{
-my $redirect = "xyzt" ;
- {
-
- my $redirectObj = new Redirect $redirect ;
-
- use strict ;
- use BerkeleyDB ;
-
- my $filename = "fruit" ;
- unlink $filename ;
- my $db = new BerkeleyDB::Hash
- -Filename => $filename,
- -Flags => DB_CREATE
- or die "Cannot open file $filename: $! $BerkeleyDB::Error\n" ;
-
- # Add a few key/value pairs to the file
- $db->db_put("apple", "red") ;
- $db->db_put("orange", "orange") ;
- $db->db_put("banana", "yellow") ;
- $db->db_put("tomato", "red") ;
-
- # Check for existence of a key
- print "Banana Exists\n\n" if $db->db_get("banana", $v) == 0;
-
- # Delete a key/value pair.
- $db->db_del("apple") ;
-
- # print the contents of the file
- my ($k, $v) = ("", "") ;
- my $cursor = $db->db_cursor() ;
- while ($cursor->c_get($k, $v, DB_NEXT) == 0)
- { print "$k -> $v\n" }
-
- undef $cursor ;
- undef $db ;
- unlink $filename ;
- }
-
- #print "[" . docat($redirect) . "]" ;
- ok(2, docat_del($redirect) eq <<'EOM') ;
-Banana Exists
-
-orange -> orange
-tomato -> red
-banana -> yellow
-EOM
-
-}
-
-{
-my $redirect = "xyzt" ;
- {
-
- my $redirectObj = new Redirect $redirect ;
-
- use strict ;
- use BerkeleyDB ;
-
- my $filename = "tree" ;
- unlink $filename ;
- my %h ;
- tie %h, 'BerkeleyDB::Btree',
- -Filename => $filename,
- -Flags => DB_CREATE
- or die "Cannot open $filename: $!\n" ;
-
- # Add a key/value pair to the file
- $h{'Wall'} = 'Larry' ;
- $h{'Smith'} = 'John' ;
- $h{'mouse'} = 'mickey' ;
- $h{'duck'} = 'donald' ;
-
- # Delete
- delete $h{"duck"} ;
-
- # Cycle through the keys printing them in order.
- # Note it is not necessary to sort the keys as
- # the btree will have kept them in order automatically.
- foreach (keys %h)
- { print "$_\n" }
-
- untie %h ;
- unlink $filename ;
- }
-
- #print "[" . docat($redirect) . "]\n" ;
- ok(3, docat_del($redirect) eq <<'EOM') ;
-Smith
-Wall
-mouse
-EOM
-
-}
-
-{
-my $redirect = "xyzt" ;
- {
-
- my $redirectObj = new Redirect $redirect ;
-
- use strict ;
- use BerkeleyDB ;
-
- my $filename = "tree" ;
- unlink $filename ;
- my %h ;
- tie %h, 'BerkeleyDB::Btree',
- -Filename => $filename,
- -Flags => DB_CREATE,
- -Compare => sub { lc $_[0] cmp lc $_[1] }
- or die "Cannot open $filename: $!\n" ;
-
- # Add a key/value pair to the file
- $h{'Wall'} = 'Larry' ;
- $h{'Smith'} = 'John' ;
- $h{'mouse'} = 'mickey' ;
- $h{'duck'} = 'donald' ;
-
- # Delete
- delete $h{"duck"} ;
-
- # Cycle through the keys printing them in order.
- # Note it is not necessary to sort the keys as
- # the btree will have kept them in order automatically.
- foreach (keys %h)
- { print "$_\n" }
-
- untie %h ;
- unlink $filename ;
- }
-
- #print "[" . docat($redirect) . "]\n" ;
- ok(4, docat_del($redirect) eq <<'EOM') ;
-mouse
-Smith
-Wall
-EOM
-
-}
-
-{
-my $redirect = "xyzt" ;
- {
-
- my $redirectObj = new Redirect $redirect ;
-
- use strict ;
- use BerkeleyDB ;
-
- my %hash ;
- my $filename = "filt.db" ;
- unlink $filename ;
-
- my $db = tie %hash, 'BerkeleyDB::Hash',
- -Filename => $filename,
- -Flags => DB_CREATE
- or die "Cannot open $filename: $!\n" ;
-
- # Install DBM Filters
- $db->filter_fetch_key ( sub { s/\0$// } ) ;
- $db->filter_store_key ( sub { $_ .= "\0" } ) ;
- $db->filter_fetch_value( sub { s/\0$// } ) ;
- $db->filter_store_value( sub { $_ .= "\0" } ) ;
-
- $hash{"abc"} = "def" ;
- my $a = $hash{"ABC"} ;
- # ...
- undef $db ;
- untie %hash ;
- $db = tie %hash, 'BerkeleyDB::Hash',
- -Filename => $filename,
- -Flags => DB_CREATE
- or die "Cannot open $filename: $!\n" ;
- while (($k, $v) = each %hash)
- { print "$k -> $v\n" }
- undef $db ;
- untie %hash ;
-
- unlink $filename ;
- }
-
- #print "[" . docat($redirect) . "]\n" ;
- ok(5, docat_del($redirect) eq <<"EOM") ;
-abc\x00 -> def\x00
-EOM
-
-}
-
-{
-my $redirect = "xyzt" ;
- {
-
- my $redirectObj = new Redirect $redirect ;
-
- use strict ;
- use BerkeleyDB ;
- my %hash ;
- my $filename = "filt.db" ;
- unlink $filename ;
-
-
- my $db = tie %hash, 'BerkeleyDB::Btree',
- -Filename => $filename,
- -Flags => DB_CREATE
- or die "Cannot open $filename: $!\n" ;
-
- $db->filter_fetch_key ( sub { $_ = unpack("i", $_) } ) ;
- $db->filter_store_key ( sub { $_ = pack ("i", $_) } ) ;
- $hash{123} = "def" ;
- # ...
- undef $db ;
- untie %hash ;
- $db = tie %hash, 'BerkeleyDB::Btree',
- -Filename => $filename,
- -Flags => DB_CREATE
- or die "Cannot Open $filename: $!\n" ;
- while (($k, $v) = each %hash)
- { print "$k -> $v\n" }
- undef $db ;
- untie %hash ;
-
- unlink $filename ;
- }
-
- my $val = pack("i", 123) ;
- #print "[" . docat($redirect) . "]\n" ;
- ok(6, docat_del($redirect) eq <<"EOM") ;
-$val -> def
-EOM
-
-}
-
-{
-my $redirect = "xyzt" ;
- {
-
- my $redirectObj = new Redirect $redirect ;
-
- if ($FA) {
- use strict ;
- use BerkeleyDB ;
-
- my $filename = "text" ;
- unlink $filename ;
-
- my @h ;
- tie @h, 'BerkeleyDB::Recno',
- -Filename => $filename,
- -Flags => DB_CREATE,
- -Property => DB_RENUMBER
- or die "Cannot open $filename: $!\n" ;
-
- # Add a few key/value pairs to the file
- $h[0] = "orange" ;
- $h[1] = "blue" ;
- $h[2] = "yellow" ;
-
- push @h, "green", "black" ;
-
- my $elements = scalar @h ;
- print "The array contains $elements entries\n" ;
-
- my $last = pop @h ;
- print "popped $last\n" ;
-
- unshift @h, "white" ;
- my $first = shift @h ;
- print "shifted $first\n" ;
-
- # Check for existence of a key
- print "Element 1 Exists with value $h[1]\n" if $h[1] ;
-
- untie @h ;
- unlink $filename ;
- } else {
- use strict ;
- use BerkeleyDB ;
-
- my $filename = "text" ;
- unlink $filename ;
-
- my @h ;
- my $db = tie @h, 'BerkeleyDB::Recno',
- -Filename => $filename,
- -Flags => DB_CREATE,
- -Property => DB_RENUMBER
- or die "Cannot open $filename: $!\n" ;
-
- # Add a few key/value pairs to the file
- $h[0] = "orange" ;
- $h[1] = "blue" ;
- $h[2] = "yellow" ;
-
- $db->push("green", "black") ;
-
- my $elements = $db->length() ;
- print "The array contains $elements entries\n" ;
-
- my $last = $db->pop ;
- print "popped $last\n" ;
-
- $db->unshift("white") ;
- my $first = $db->shift ;
- print "shifted $first\n" ;
-
- # Check for existence of a key
- print "Element 1 Exists with value $h[1]\n" if $h[1] ;
-
- undef $db ;
- untie @h ;
- unlink $filename ;
- }
-
- }
-
- #print "[" . docat($redirect) . "]\n" ;
- ok(7, docat_del($redirect) eq <<"EOM") ;
-The array contains 5 entries
-popped black
-shifted white
-Element 1 Exists with value blue
-EOM
-
-}
-
diff --git a/db/perl.BerkeleyDB/t/examples.t.T b/db/perl.BerkeleyDB/t/examples.t.T
deleted file mode 100644
index fe0922318..000000000
--- a/db/perl.BerkeleyDB/t/examples.t.T
+++ /dev/null
@@ -1,496 +0,0 @@
-#!./perl -w
-
-use strict ;
-
-BEGIN {
- unless(grep /blib/, @INC) {
- chdir 't' if -d 't';
- @INC = '../lib' if -d '../lib';
- }
-}
-
-use BerkeleyDB;
-use File::Path qw(rmtree);
-
-print "1..7\n";
-
-my $FA = 0 ;
-
-{
- sub try::TIEARRAY { bless [], "try" }
- sub try::FETCHSIZE { $FA = 1 }
- $FA = 0 ;
- my @a ;
- tie @a, 'try' ;
- my $a = @a ;
-}
-
-{
- package LexFile ;
-
- sub new
- {
- my $self = shift ;
- unlink @_ ;
- bless [ @_ ], $self ;
- }
-
- sub DESTROY
- {
- my $self = shift ;
- unlink @{ $self } ;
- }
-}
-
-
-sub ok
-{
- my $no = shift ;
- my $result = shift ;
-
- print "not " unless $result ;
- print "ok $no\n" ;
-}
-
-{
- package Redirect ;
- use Symbol ;
-
- sub new
- {
- my $class = shift ;
- my $filename = shift ;
- my $fh = gensym ;
- open ($fh, ">$filename") || die "Cannot open $filename: $!" ;
- my $real_stdout = select($fh) ;
- return bless [$fh, $real_stdout ] ;
-
- }
- sub DESTROY
- {
- my $self = shift ;
- close $self->[0] ;
- select($self->[1]) ;
- }
-}
-
-sub docat
-{
- my $file = shift;
- local $/ = undef;
- open(CAT,$file) || die "Cannot open $file:$!";
- my $result = <CAT> || "" ;
- close(CAT);
- return $result;
-}
-
-sub docat_del
-{
- my $file = shift;
- local $/ = undef;
- open(CAT,$file) || die "Cannot open $file: $!";
- my $result = <CAT> || "" ;
- close(CAT);
- unlink $file ;
- return $result;
-}
-
-my $Dfile = "dbhash.tmp";
-my $Dfile2 = "dbhash2.tmp";
-my $Dfile3 = "dbhash3.tmp";
-unlink $Dfile;
-
-umask(0) ;
-
-my $redirect = "xyzt" ;
-
-
-{
-my $x = $BerkeleyDB::Error;
-my $redirect = "xyzt" ;
- {
- my $redirectObj = new Redirect $redirect ;
-
-## BEGIN simpleHash
- use strict ;
- use BerkeleyDB ;
- use vars qw( %h $k $v ) ;
-
- my $filename = "fruit" ;
- unlink $filename ;
- tie %h, "BerkeleyDB::Hash",
- -Filename => $filename,
- -Flags => DB_CREATE
- or die "Cannot open file $filename: $! $BerkeleyDB::Error\n" ;
-
- # Add a few key/value pairs to the file
- $h{"apple"} = "red" ;
- $h{"orange"} = "orange" ;
- $h{"banana"} = "yellow" ;
- $h{"tomato"} = "red" ;
-
- # Check for existence of a key
- print "Banana Exists\n\n" if $h{"banana"} ;
-
- # Delete a key/value pair.
- delete $h{"apple"} ;
-
- # print the contents of the file
- while (($k, $v) = each %h)
- { print "$k -> $v\n" }
-
- untie %h ;
-## END simpleHash
- unlink $filename ;
- }
-
- #print "[" . docat($redirect) . "]" ;
- ok(1, docat_del($redirect) eq <<'EOM') ;
-Banana Exists
-
-orange -> orange
-tomato -> red
-banana -> yellow
-EOM
-
-
-}
-
-{
-my $redirect = "xyzt" ;
- {
-
- my $redirectObj = new Redirect $redirect ;
-
-## BEGIN simpleHash2
- use strict ;
- use BerkeleyDB ;
-
- my $filename = "fruit" ;
- unlink $filename ;
- my $db = new BerkeleyDB::Hash
- -Filename => $filename,
- -Flags => DB_CREATE
- or die "Cannot open file $filename: $! $BerkeleyDB::Error\n" ;
-
- # Add a few key/value pairs to the file
- $db->db_put("apple", "red") ;
- $db->db_put("orange", "orange") ;
- $db->db_put("banana", "yellow") ;
- $db->db_put("tomato", "red") ;
-
- # Check for existence of a key
- print "Banana Exists\n\n" if $db->db_get("banana", $v) == 0;
-
- # Delete a key/value pair.
- $db->db_del("apple") ;
-
- # print the contents of the file
- my ($k, $v) = ("", "") ;
- my $cursor = $db->db_cursor() ;
- while ($cursor->c_get($k, $v, DB_NEXT) == 0)
- { print "$k -> $v\n" }
-
- undef $cursor ;
- undef $db ;
-## END simpleHash2
- unlink $filename ;
- }
-
- #print "[" . docat($redirect) . "]" ;
- ok(2, docat_del($redirect) eq <<'EOM') ;
-Banana Exists
-
-orange -> orange
-tomato -> red
-banana -> yellow
-EOM
-
-}
-
-{
-my $redirect = "xyzt" ;
- {
-
- my $redirectObj = new Redirect $redirect ;
-
-## BEGIN btreeSimple
- use strict ;
- use BerkeleyDB ;
-
- my $filename = "tree" ;
- unlink $filename ;
- my %h ;
- tie %h, 'BerkeleyDB::Btree',
- -Filename => $filename,
- -Flags => DB_CREATE
- or die "Cannot open $filename: $!\n" ;
-
- # Add a key/value pair to the file
- $h{'Wall'} = 'Larry' ;
- $h{'Smith'} = 'John' ;
- $h{'mouse'} = 'mickey' ;
- $h{'duck'} = 'donald' ;
-
- # Delete
- delete $h{"duck"} ;
-
- # Cycle through the keys printing them in order.
- # Note it is not necessary to sort the keys as
- # the btree will have kept them in order automatically.
- foreach (keys %h)
- { print "$_\n" }
-
- untie %h ;
-## END btreeSimple
- unlink $filename ;
- }
-
- #print "[" . docat($redirect) . "]\n" ;
- ok(3, docat_del($redirect) eq <<'EOM') ;
-Smith
-Wall
-mouse
-EOM
-
-}
-
-{
-my $redirect = "xyzt" ;
- {
-
- my $redirectObj = new Redirect $redirect ;
-
-## BEGIN btreeSortOrder
- use strict ;
- use BerkeleyDB ;
-
- my $filename = "tree" ;
- unlink $filename ;
- my %h ;
- tie %h, 'BerkeleyDB::Btree',
- -Filename => $filename,
- -Flags => DB_CREATE,
- -Compare => sub { lc $_[0] cmp lc $_[1] }
- or die "Cannot open $filename: $!\n" ;
-
- # Add a key/value pair to the file
- $h{'Wall'} = 'Larry' ;
- $h{'Smith'} = 'John' ;
- $h{'mouse'} = 'mickey' ;
- $h{'duck'} = 'donald' ;
-
- # Delete
- delete $h{"duck"} ;
-
- # Cycle through the keys printing them in order.
- # Note it is not necessary to sort the keys as
- # the btree will have kept them in order automatically.
- foreach (keys %h)
- { print "$_\n" }
-
- untie %h ;
-## END btreeSortOrder
- unlink $filename ;
- }
-
- #print "[" . docat($redirect) . "]\n" ;
- ok(4, docat_del($redirect) eq <<'EOM') ;
-mouse
-Smith
-Wall
-EOM
-
-}
-
-{
-my $redirect = "xyzt" ;
- {
-
- my $redirectObj = new Redirect $redirect ;
-
-## BEGIN nullFilter
- use strict ;
- use BerkeleyDB ;
-
- my %hash ;
- my $filename = "filt.db" ;
- unlink $filename ;
-
- my $db = tie %hash, 'BerkeleyDB::Hash',
- -Filename => $filename,
- -Flags => DB_CREATE
- or die "Cannot open $filename: $!\n" ;
-
- # Install DBM Filters
- $db->filter_fetch_key ( sub { s/\0$// } ) ;
- $db->filter_store_key ( sub { $_ .= "\0" } ) ;
- $db->filter_fetch_value( sub { s/\0$// } ) ;
- $db->filter_store_value( sub { $_ .= "\0" } ) ;
-
- $hash{"abc"} = "def" ;
- my $a = $hash{"ABC"} ;
- # ...
- undef $db ;
- untie %hash ;
-## END nullFilter
- $db = tie %hash, 'BerkeleyDB::Hash',
- -Filename => $filename,
- -Flags => DB_CREATE
- or die "Cannot open $filename: $!\n" ;
- while (($k, $v) = each %hash)
- { print "$k -> $v\n" }
- undef $db ;
- untie %hash ;
-
- unlink $filename ;
- }
-
- #print "[" . docat($redirect) . "]\n" ;
- ok(5, docat_del($redirect) eq <<"EOM") ;
-abc\x00 -> def\x00
-EOM
-
-}
-
-{
-my $redirect = "xyzt" ;
- {
-
- my $redirectObj = new Redirect $redirect ;
-
-## BEGIN intFilter
- use strict ;
- use BerkeleyDB ;
- my %hash ;
- my $filename = "filt.db" ;
- unlink $filename ;
-
-
- my $db = tie %hash, 'BerkeleyDB::Btree',
- -Filename => $filename,
- -Flags => DB_CREATE
- or die "Cannot open $filename: $!\n" ;
-
- $db->filter_fetch_key ( sub { $_ = unpack("i", $_) } ) ;
- $db->filter_store_key ( sub { $_ = pack ("i", $_) } ) ;
- $hash{123} = "def" ;
- # ...
- undef $db ;
- untie %hash ;
-## END intFilter
- $db = tie %hash, 'BerkeleyDB::Btree',
- -Filename => $filename,
- -Flags => DB_CREATE
- or die "Cannot Open $filename: $!\n" ;
- while (($k, $v) = each %hash)
- { print "$k -> $v\n" }
- undef $db ;
- untie %hash ;
-
- unlink $filename ;
- }
-
- my $val = pack("i", 123) ;
- #print "[" . docat($redirect) . "]\n" ;
- ok(6, docat_del($redirect) eq <<"EOM") ;
-$val -> def
-EOM
-
-}
-
-{
-my $redirect = "xyzt" ;
- {
-
- my $redirectObj = new Redirect $redirect ;
-
- if ($FA) {
-## BEGIN simpleRecno
- use strict ;
- use BerkeleyDB ;
-
- my $filename = "text" ;
- unlink $filename ;
-
- my @h ;
- tie @h, 'BerkeleyDB::Recno',
- -Filename => $filename,
- -Flags => DB_CREATE,
- -Property => DB_RENUMBER
- or die "Cannot open $filename: $!\n" ;
-
- # Add a few key/value pairs to the file
- $h[0] = "orange" ;
- $h[1] = "blue" ;
- $h[2] = "yellow" ;
-
- push @h, "green", "black" ;
-
- my $elements = scalar @h ;
- print "The array contains $elements entries\n" ;
-
- my $last = pop @h ;
- print "popped $last\n" ;
-
- unshift @h, "white" ;
- my $first = shift @h ;
- print "shifted $first\n" ;
-
- # Check for existence of a key
- print "Element 1 Exists with value $h[1]\n" if $h[1] ;
-
- untie @h ;
-## END simpleRecno
- unlink $filename ;
- } else {
- use strict ;
- use BerkeleyDB ;
-
- my $filename = "text" ;
- unlink $filename ;
-
- my @h ;
- my $db = tie @h, 'BerkeleyDB::Recno',
- -Filename => $filename,
- -Flags => DB_CREATE,
- -Property => DB_RENUMBER
- or die "Cannot open $filename: $!\n" ;
-
- # Add a few key/value pairs to the file
- $h[0] = "orange" ;
- $h[1] = "blue" ;
- $h[2] = "yellow" ;
-
- $db->push("green", "black") ;
-
- my $elements = $db->length() ;
- print "The array contains $elements entries\n" ;
-
- my $last = $db->pop ;
- print "popped $last\n" ;
-
- $db->unshift("white") ;
- my $first = $db->shift ;
- print "shifted $first\n" ;
-
- # Check for existence of a key
- print "Element 1 Exists with value $h[1]\n" if $h[1] ;
-
- undef $db ;
- untie @h ;
- unlink $filename ;
- }
-
- }
-
- #print "[" . docat($redirect) . "]\n" ;
- ok(7, docat_del($redirect) eq <<"EOM") ;
-The array contains 5 entries
-popped black
-shifted white
-Element 1 Exists with value blue
-EOM
-
-}
-
diff --git a/db/perl.BerkeleyDB/t/examples3.t b/db/perl.BerkeleyDB/t/examples3.t
deleted file mode 100644
index 9cc1fa72c..000000000
--- a/db/perl.BerkeleyDB/t/examples3.t
+++ /dev/null
@@ -1,213 +0,0 @@
-#!./perl -w
-
-use strict ;
-
-BEGIN {
- unless(grep /blib/, @INC) {
- chdir 't' if -d 't';
- @INC = '../lib' if -d '../lib';
- }
-}
-
-use BerkeleyDB;
-use File::Path qw(rmtree);
-
-BEGIN
-{
- if ($BerkeleyDB::db_version < 3) {
- print "1..0 # Skipping test, this needs Berkeley DB 3.x or better\n" ;
- exit 0 ;
- }
-}
-
-
-print "1..2\n";
-
-my $FA = 0 ;
-
-{
- sub try::TIEARRAY { bless [], "try" }
- sub try::FETCHSIZE { $FA = 1 }
- $FA = 0 ;
- my @a ;
- tie @a, 'try' ;
- my $a = @a ;
-}
-
-{
- package LexFile ;
-
- sub new
- {
- my $self = shift ;
- unlink @_ ;
- bless [ @_ ], $self ;
- }
-
- sub DESTROY
- {
- my $self = shift ;
- unlink @{ $self } ;
- }
-}
-
-
-sub ok
-{
- my $no = shift ;
- my $result = shift ;
-
- print "not " unless $result ;
- print "ok $no\n" ;
-}
-
-{
- package Redirect ;
- use Symbol ;
-
- sub new
- {
- my $class = shift ;
- my $filename = shift ;
- my $fh = gensym ;
- open ($fh, ">$filename") || die "Cannot open $filename: $!" ;
- my $real_stdout = select($fh) ;
- return bless [$fh, $real_stdout ] ;
-
- }
- sub DESTROY
- {
- my $self = shift ;
- close $self->[0] ;
- select($self->[1]) ;
- }
-}
-
-sub docat
-{
- my $file = shift;
- local $/ = undef;
- open(CAT,$file) || die "Cannot open $file:$!";
- my $result = <CAT> || "" ;
- close(CAT);
- return $result;
-}
-
-sub docat_del
-{
- my $file = shift;
- local $/ = undef;
- open(CAT,$file) || die "Cannot open $file: $!";
- my $result = <CAT> || "" ;
- close(CAT);
- unlink $file ;
- return $result;
-}
-
-my $Dfile = "dbhash.tmp";
-my $Dfile2 = "dbhash2.tmp";
-my $Dfile3 = "dbhash3.tmp";
-unlink $Dfile;
-
-umask(0) ;
-
-my $redirect = "xyzt" ;
-
-
-{
-my $redirect = "xyzt" ;
- {
-
- my $redirectObj = new Redirect $redirect ;
-
- use strict ;
- use BerkeleyDB ;
-
- my $filename = "fruit" ;
- unlink $filename ;
- my $db = new BerkeleyDB::Hash
- -Filename => $filename,
- -Flags => DB_CREATE,
- -Property => DB_DUP
- or die "Cannot open file $filename: $! $BerkeleyDB::Error\n" ;
-
- # Add a few key/value pairs to the file
- $db->db_put("red", "apple") ;
- $db->db_put("orange", "orange") ;
- $db->db_put("green", "banana") ;
- $db->db_put("yellow", "banana") ;
- $db->db_put("red", "tomato") ;
- $db->db_put("green", "apple") ;
-
- # print the contents of the file
- my ($k, $v) = ("", "") ;
- my $cursor = $db->db_cursor() ;
- while ($cursor->c_get($k, $v, DB_NEXT) == 0)
- { print "$k -> $v\n" }
-
- undef $cursor ;
- undef $db ;
- unlink $filename ;
- }
-
- #print "[" . docat($redirect) . "]" ;
- ok(1, docat_del($redirect) eq <<'EOM') ;
-orange -> orange
-yellow -> banana
-red -> apple
-red -> tomato
-green -> banana
-green -> apple
-EOM
-
-}
-
-{
-my $redirect = "xyzt" ;
- {
-
- my $redirectObj = new Redirect $redirect ;
-
- use strict ;
- use BerkeleyDB ;
-
- my $filename = "fruit" ;
- unlink $filename ;
- my $db = new BerkeleyDB::Hash
- -Filename => $filename,
- -Flags => DB_CREATE,
- -Property => DB_DUP | DB_DUPSORT
- or die "Cannot open file $filename: $! $BerkeleyDB::Error\n" ;
-
- # Add a few key/value pairs to the file
- $db->db_put("red", "apple") ;
- $db->db_put("orange", "orange") ;
- $db->db_put("green", "banana") ;
- $db->db_put("yellow", "banana") ;
- $db->db_put("red", "tomato") ;
- $db->db_put("green", "apple") ;
-
- # print the contents of the file
- my ($k, $v) = ("", "") ;
- my $cursor = $db->db_cursor() ;
- while ($cursor->c_get($k, $v, DB_NEXT) == 0)
- { print "$k -> $v\n" }
-
- undef $cursor ;
- undef $db ;
- unlink $filename ;
- }
-
- #print "[" . docat($redirect) . "]" ;
- ok(2, docat_del($redirect) eq <<'EOM') ;
-orange -> orange
-yellow -> banana
-red -> apple
-red -> tomato
-green -> apple
-green -> banana
-EOM
-
-}
-
-
diff --git a/db/perl.BerkeleyDB/t/examples3.t.T b/db/perl.BerkeleyDB/t/examples3.t.T
deleted file mode 100644
index 573c04903..000000000
--- a/db/perl.BerkeleyDB/t/examples3.t.T
+++ /dev/null
@@ -1,217 +0,0 @@
-#!./perl -w
-
-use strict ;
-
-BEGIN {
- unless(grep /blib/, @INC) {
- chdir 't' if -d 't';
- @INC = '../lib' if -d '../lib';
- }
-}
-
-use BerkeleyDB;
-use File::Path qw(rmtree);
-
-BEGIN
-{
- if ($BerkeleyDB::db_version < 3) {
- print "1..0 # Skipping test, this needs Berkeley DB 3.x or better\n" ;
- exit 0 ;
- }
-}
-
-
-print "1..2\n";
-
-my $FA = 0 ;
-
-{
- sub try::TIEARRAY { bless [], "try" }
- sub try::FETCHSIZE { $FA = 1 }
- $FA = 0 ;
- my @a ;
- tie @a, 'try' ;
- my $a = @a ;
-}
-
-{
- package LexFile ;
-
- sub new
- {
- my $self = shift ;
- unlink @_ ;
- bless [ @_ ], $self ;
- }
-
- sub DESTROY
- {
- my $self = shift ;
- unlink @{ $self } ;
- }
-}
-
-
-sub ok
-{
- my $no = shift ;
- my $result = shift ;
-
- print "not " unless $result ;
- print "ok $no\n" ;
-}
-
-{
- package Redirect ;
- use Symbol ;
-
- sub new
- {
- my $class = shift ;
- my $filename = shift ;
- my $fh = gensym ;
- open ($fh, ">$filename") || die "Cannot open $filename: $!" ;
- my $real_stdout = select($fh) ;
- return bless [$fh, $real_stdout ] ;
-
- }
- sub DESTROY
- {
- my $self = shift ;
- close $self->[0] ;
- select($self->[1]) ;
- }
-}
-
-sub docat
-{
- my $file = shift;
- local $/ = undef;
- open(CAT,$file) || die "Cannot open $file:$!";
- my $result = <CAT> || "" ;
- close(CAT);
- return $result;
-}
-
-sub docat_del
-{
- my $file = shift;
- local $/ = undef;
- open(CAT,$file) || die "Cannot open $file: $!";
- my $result = <CAT> || "" ;
- close(CAT);
- unlink $file ;
- return $result;
-}
-
-my $Dfile = "dbhash.tmp";
-my $Dfile2 = "dbhash2.tmp";
-my $Dfile3 = "dbhash3.tmp";
-unlink $Dfile;
-
-umask(0) ;
-
-my $redirect = "xyzt" ;
-
-
-{
-my $redirect = "xyzt" ;
- {
-
- my $redirectObj = new Redirect $redirect ;
-
-## BEGIN dupHash
- use strict ;
- use BerkeleyDB ;
-
- my $filename = "fruit" ;
- unlink $filename ;
- my $db = new BerkeleyDB::Hash
- -Filename => $filename,
- -Flags => DB_CREATE,
- -Property => DB_DUP
- or die "Cannot open file $filename: $! $BerkeleyDB::Error\n" ;
-
- # Add a few key/value pairs to the file
- $db->db_put("red", "apple") ;
- $db->db_put("orange", "orange") ;
- $db->db_put("green", "banana") ;
- $db->db_put("yellow", "banana") ;
- $db->db_put("red", "tomato") ;
- $db->db_put("green", "apple") ;
-
- # print the contents of the file
- my ($k, $v) = ("", "") ;
- my $cursor = $db->db_cursor() ;
- while ($cursor->c_get($k, $v, DB_NEXT) == 0)
- { print "$k -> $v\n" }
-
- undef $cursor ;
- undef $db ;
-## END dupHash
- unlink $filename ;
- }
-
- #print "[" . docat($redirect) . "]" ;
- ok(1, docat_del($redirect) eq <<'EOM') ;
-orange -> orange
-yellow -> banana
-red -> apple
-red -> tomato
-green -> banana
-green -> apple
-EOM
-
-}
-
-{
-my $redirect = "xyzt" ;
- {
-
- my $redirectObj = new Redirect $redirect ;
-
-## BEGIN dupSortHash
- use strict ;
- use BerkeleyDB ;
-
- my $filename = "fruit" ;
- unlink $filename ;
- my $db = new BerkeleyDB::Hash
- -Filename => $filename,
- -Flags => DB_CREATE,
- -Property => DB_DUP | DB_DUPSORT
- or die "Cannot open file $filename: $! $BerkeleyDB::Error\n" ;
-
- # Add a few key/value pairs to the file
- $db->db_put("red", "apple") ;
- $db->db_put("orange", "orange") ;
- $db->db_put("green", "banana") ;
- $db->db_put("yellow", "banana") ;
- $db->db_put("red", "tomato") ;
- $db->db_put("green", "apple") ;
-
- # print the contents of the file
- my ($k, $v) = ("", "") ;
- my $cursor = $db->db_cursor() ;
- while ($cursor->c_get($k, $v, DB_NEXT) == 0)
- { print "$k -> $v\n" }
-
- undef $cursor ;
- undef $db ;
-## END dupSortHash
- unlink $filename ;
- }
-
- #print "[" . docat($redirect) . "]" ;
- ok(2, docat_del($redirect) eq <<'EOM') ;
-orange -> orange
-yellow -> banana
-red -> apple
-red -> tomato
-green -> apple
-green -> banana
-EOM
-
-}
-
-
diff --git a/db/perl.BerkeleyDB/t/filter.t b/db/perl.BerkeleyDB/t/filter.t
deleted file mode 100644
index 8bcdc7f3f..000000000
--- a/db/perl.BerkeleyDB/t/filter.t
+++ /dev/null
@@ -1,244 +0,0 @@
-#!./perl -w
-
-# ID: %I%, %G%
-
-use strict ;
-
-BEGIN {
- unless(grep /blib/, @INC) {
- chdir 't' if -d 't';
- @INC = '../lib' if -d '../lib';
- }
-}
-
-use BerkeleyDB;
-use File::Path qw(rmtree);
-
-print "1..46\n";
-
-{
- package LexFile ;
-
- sub new
- {
- my $self = shift ;
- unlink @_ ;
- bless [ @_ ], $self ;
- }
-
- sub DESTROY
- {
- my $self = shift ;
- unlink @{ $self } ;
- }
-}
-
-
-sub ok
-{
- my $no = shift ;
- my $result = shift ;
-
- print "not " unless $result ;
- print "ok $no\n" ;
-}
-
-my $Dfile = "dbhash.tmp";
-unlink $Dfile;
-
-umask(0) ;
-
-
-{
- # DBM Filter tests
- use strict ;
- my (%h, $db) ;
- my ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ;
- unlink $Dfile;
-
- sub checkOutput
- {
- my($fk, $sk, $fv, $sv) = @_ ;
- return
- $fetch_key eq $fk && $store_key eq $sk &&
- $fetch_value eq $fv && $store_value eq $sv &&
- $_ eq 'original' ;
- }
-
- ok 1, $db = tie %h, 'BerkeleyDB::Hash',
- -Filename => $Dfile,
- -Flags => DB_CREATE;
-
- $db->filter_fetch_key (sub { $fetch_key = $_ }) ;
- $db->filter_store_key (sub { $store_key = $_ }) ;
- $db->filter_fetch_value (sub { $fetch_value = $_}) ;
- $db->filter_store_value (sub { $store_value = $_ }) ;
-
- $_ = "original" ;
-
- $h{"fred"} = "joe" ;
- # fk sk fv sv
- ok 2, checkOutput( "", "fred", "", "joe") ;
-
- ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ;
- ok 3, $h{"fred"} eq "joe";
- # fk sk fv sv
- ok 4, checkOutput( "", "fred", "joe", "") ;
-
- ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ;
- ok 5, $db->FIRSTKEY() eq "fred" ;
- # fk sk fv sv
- ok 6, checkOutput( "fred", "", "", "") ;
-
- # replace the filters, but remember the previous set
- my ($old_fk) = $db->filter_fetch_key
- (sub { $_ = uc $_ ; $fetch_key = $_ }) ;
- my ($old_sk) = $db->filter_store_key
- (sub { $_ = lc $_ ; $store_key = $_ }) ;
- my ($old_fv) = $db->filter_fetch_value
- (sub { $_ = "[$_]"; $fetch_value = $_ }) ;
- my ($old_sv) = $db->filter_store_value
- (sub { s/o/x/g; $store_value = $_ }) ;
-
- ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ;
- $h{"Fred"} = "Joe" ;
- # fk sk fv sv
- ok 7, checkOutput( "", "fred", "", "Jxe") ;
-
- ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ;
- ok 8, $h{"Fred"} eq "[Jxe]";
- # fk sk fv sv
- ok 9, checkOutput( "", "fred", "[Jxe]", "") ;
-
- ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ;
- ok 10, $db->FIRSTKEY() eq "FRED" ;
- # fk sk fv sv
- ok 11, checkOutput( "FRED", "", "", "") ;
-
- # put the original filters back
- $db->filter_fetch_key ($old_fk);
- $db->filter_store_key ($old_sk);
- $db->filter_fetch_value ($old_fv);
- $db->filter_store_value ($old_sv);
-
- ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ;
- $h{"fred"} = "joe" ;
- ok 12, checkOutput( "", "fred", "", "joe") ;
-
- ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ;
- ok 13, $h{"fred"} eq "joe";
- ok 14, checkOutput( "", "fred", "joe", "") ;
-
- ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ;
- ok 15, $db->FIRSTKEY() eq "fred" ;
- ok 16, checkOutput( "fred", "", "", "") ;
-
- # delete the filters
- $db->filter_fetch_key (undef);
- $db->filter_store_key (undef);
- $db->filter_fetch_value (undef);
- $db->filter_store_value (undef);
-
- ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ;
- $h{"fred"} = "joe" ;
- ok 17, checkOutput( "", "", "", "") ;
-
- ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ;
- ok 18, $h{"fred"} eq "joe";
- ok 19, checkOutput( "", "", "", "") ;
-
- ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ;
- ok 20, $db->FIRSTKEY() eq "fred" ;
- ok 21, checkOutput( "", "", "", "") ;
-
- undef $db ;
- untie %h;
- unlink $Dfile;
-}
-
-{
- # DBM Filter with a closure
-
- use strict ;
- my (%h, $db) ;
-
- unlink $Dfile;
- ok 22, $db = tie %h, 'BerkeleyDB::Hash',
- -Filename => $Dfile,
- -Flags => DB_CREATE;
-
- my %result = () ;
-
- sub Closure
- {
- my ($name) = @_ ;
- my $count = 0 ;
- my @kept = () ;
-
- return sub { ++$count ;
- push @kept, $_ ;
- $result{$name} = "$name - $count: [@kept]" ;
- }
- }
-
- $db->filter_store_key(Closure("store key")) ;
- $db->filter_store_value(Closure("store value")) ;
- $db->filter_fetch_key(Closure("fetch key")) ;
- $db->filter_fetch_value(Closure("fetch value")) ;
-
- $_ = "original" ;
-
- $h{"fred"} = "joe" ;
- ok 23, $result{"store key"} eq "store key - 1: [fred]" ;
- ok 24, $result{"store value"} eq "store value - 1: [joe]" ;
- ok 25, ! defined $result{"fetch key"} ;
- ok 26, ! defined $result{"fetch value"} ;
- ok 27, $_ eq "original" ;
-
- ok 28, $db->FIRSTKEY() eq "fred" ;
- ok 29, $result{"store key"} eq "store key - 1: [fred]" ;
- ok 30, $result{"store value"} eq "store value - 1: [joe]" ;
- ok 31, $result{"fetch key"} eq "fetch key - 1: [fred]" ;
- ok 32, ! defined $result{"fetch value"} ;
- ok 33, $_ eq "original" ;
-
- $h{"jim"} = "john" ;
- ok 34, $result{"store key"} eq "store key - 2: [fred jim]" ;
- ok 35, $result{"store value"} eq "store value - 2: [joe john]" ;
- ok 36, $result{"fetch key"} eq "fetch key - 1: [fred]" ;
- ok 37, ! defined $result{"fetch value"} ;
- ok 38, $_ eq "original" ;
-
- ok 39, $h{"fred"} eq "joe" ;
- ok 40, $result{"store key"} eq "store key - 3: [fred jim fred]" ;
- ok 41, $result{"store value"} eq "store value - 2: [joe john]" ;
- ok 42, $result{"fetch key"} eq "fetch key - 1: [fred]" ;
- ok 43, $result{"fetch value"} eq "fetch value - 1: [joe]" ;
- ok 44, $_ eq "original" ;
-
- undef $db ;
- untie %h;
- unlink $Dfile;
-}
-
-{
- # DBM Filter recursion detection
- use strict ;
- my (%h, $db) ;
- unlink $Dfile;
-
- ok 45, $db = tie %h, 'BerkeleyDB::Hash',
- -Filename => $Dfile,
- -Flags => DB_CREATE;
-
- $db->filter_store_key (sub { $_ = $h{$_} }) ;
-
- eval '$h{1} = 1234' ;
- ok 46, $@ =~ /^BerkeleyDB Aborting: recursion detected in filter_store_key at/ ;
- #print "[$@]\n" ;
-
- undef $db ;
- untie %h;
- unlink $Dfile;
-}
-
diff --git a/db/perl.BerkeleyDB/t/hash.t b/db/perl.BerkeleyDB/t/hash.t
deleted file mode 100644
index 1a42c60ac..000000000
--- a/db/perl.BerkeleyDB/t/hash.t
+++ /dev/null
@@ -1,777 +0,0 @@
-#!./perl -w
-
-# ID: %I%, %G%
-
-use strict ;
-
-BEGIN {
- unless(grep /blib/, @INC) {
- chdir 't' if -d 't';
- @INC = '../lib' if -d '../lib';
- }
-}
-
-#use Config;
-#
-#BEGIN {
-# if(-d "lib" && -f "TEST") {
-# if ($Config{'extensions'} !~ /\bBerkeleyDB\b/ ) {
-# print "1..74\n";
-# exit 0;
-# }
-# }
-#}
-
-use BerkeleyDB;
-use File::Path qw(rmtree);
-
-print "1..210\n";
-
-my %DB_errors = (
- 'DB_INCOMPLETE' => "DB_INCOMPLETE: Sync was unable to complete",
- 'DB_KEYEMPTY' => "DB_KEYEMPTY: Non-existent key/data pair",
- 'DB_KEYEXIST' => "DB_KEYEXIST: Key/data pair already exists",
- 'DB_LOCK_DEADLOCK' => "DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock",
- 'DB_LOCK_NOTGRANTED' => "DB_LOCK_NOTGRANTED: Lock not granted",
- 'DB_NOTFOUND' => "DB_NOTFOUND: No matching key/data pair found",
- 'DB_OLD_VERSION' => "DB_OLDVERSION: Database requires a version upgrade",
- 'DB_RUNRECOVERY' => "DB_RUNRECOVERY: Fatal error, run database recovery",
-) ;
-
-{
- package LexFile ;
-
- sub new
- {
- my $self = shift ;
- unlink @_ ;
- bless [ @_ ], $self ;
- }
-
- sub DESTROY
- {
- my $self = shift ;
- unlink @{ $self } ;
- }
-}
-
-
-sub ok
-{
- my $no = shift ;
- my $result = shift ;
-
- print "not " unless $result ;
- print "ok $no\n" ;
-}
-
-my $Dfile = "dbhash.tmp";
-my $Dfile2 = "dbhash2.tmp";
-my $Dfile3 = "dbhash3.tmp";
-unlink $Dfile;
-
-umask(0) ;
-
-
-# Check for invalid parameters
-{
- # Check for invalid parameters
- my $db ;
- eval ' $db = new BerkeleyDB::Hash -Stupid => 3 ; ' ;
- ok 1, $@ =~ /unknown key value\(s\) Stupid/ ;
-
- eval ' $db = new BerkeleyDB::Hash -Bad => 2, -Mode => 0345, -Stupid => 3; ' ;
- ok 2, $@ =~ /unknown key value\(s\) (Bad |Stupid ){2}/ ;
-
- eval ' $db = new BerkeleyDB::Hash -Env => 2 ' ;
- ok 3, $@ =~ /^Env not of type BerkeleyDB::Env/ ;
-
- eval ' $db = new BerkeleyDB::Hash -Txn => "fred" ' ;
- ok 4, $@ =~ /^Txn not of type BerkeleyDB::Txn/ ;
-
- my $obj = bless [], "main" ;
- eval ' $db = new BerkeleyDB::Hash -Env => $obj ' ;
- ok 5, $@ =~ /^Env not of type BerkeleyDB::Env/ ;
-}
-
-# Now check the interface to HASH
-
-{
- my $lex = new LexFile $Dfile ;
-
- ok 6, my $db = new BerkeleyDB::Hash -Filename => $Dfile,
- -Flags => DB_CREATE ;
-
- # Add a k/v pair
- my $value ;
- my $status ;
- ok 7, $db->db_put("some key", "some value") == 0 ;
- ok 8, $db->status() == 0 ;
- ok 9, $db->db_get("some key", $value) == 0 ;
- ok 10, $value eq "some value" ;
- ok 11, $db->db_put("key", "value") == 0 ;
- ok 12, $db->db_get("key", $value) == 0 ;
- ok 13, $value eq "value" ;
- ok 14, $db->db_del("some key") == 0 ;
- ok 15, ($status = $db->db_get("some key", $value)) == DB_NOTFOUND ;
- ok 16, $status eq $DB_errors{'DB_NOTFOUND'} ;
- ok 17, $db->status() == DB_NOTFOUND ;
- ok 18, $db->status() eq $DB_errors{'DB_NOTFOUND'};
-
- ok 19, $db->db_sync() == 0 ;
-
- # Check NOOVERWRITE will make put fail when attempting to overwrite
- # an existing record.
-
- ok 20, $db->db_put( 'key', 'x', DB_NOOVERWRITE) == DB_KEYEXIST ;
- ok 21, $db->status() eq $DB_errors{'DB_KEYEXIST'};
- ok 22, $db->status() == DB_KEYEXIST ;
-
- # check that the value of the key has not been changed by the
- # previous test
- ok 23, $db->db_get("key", $value) == 0 ;
- ok 24, $value eq "value" ;
-
- # test DB_GET_BOTH
- my ($k, $v) = ("key", "value") ;
- ok 25, $db->db_get($k, $v, DB_GET_BOTH) == 0 ;
-
- ($k, $v) = ("key", "fred") ;
- ok 26, $db->db_get($k, $v, DB_GET_BOTH) == DB_NOTFOUND ;
-
- ($k, $v) = ("another", "value") ;
- ok 27, $db->db_get($k, $v, DB_GET_BOTH) == DB_NOTFOUND ;
-
-
-}
-
-{
- # Check simple env works with a hash.
- my $lex = new LexFile $Dfile ;
-
- my $home = "./fred" ;
- ok 28, -d $home ? chmod 0777, $home : mkdir($home, 0777) ;
-
- ok 29, my $env = new BerkeleyDB::Env -Flags => DB_CREATE| DB_INIT_MPOOL,
- -Home => $home ;
- ok 30, my $db = new BerkeleyDB::Hash -Filename => $Dfile,
- -Env => $env,
- -Flags => DB_CREATE ;
-
- # Add a k/v pair
- my $value ;
- ok 31, $db->db_put("some key", "some value") == 0 ;
- ok 32, $db->db_get("some key", $value) == 0 ;
- ok 33, $value eq "some value" ;
- undef $db ;
- undef $env ;
- rmtree $home ;
-}
-
-{
- # override default hash
- my $lex = new LexFile $Dfile ;
- my $value ;
- $::count = 0 ;
- ok 34, my $db = new BerkeleyDB::Hash -Filename => $Dfile,
- -Hash => sub { ++$::count ; length $_[0] },
- -Flags => DB_CREATE ;
-
- ok 35, $db->db_put("some key", "some value") == 0 ;
- ok 36, $db->db_get("some key", $value) == 0 ;
- ok 37, $value eq "some value" ;
- ok 38, $::count > 0 ;
-
-}
-
-{
- # cursors
-
- my $lex = new LexFile $Dfile ;
- my %hash ;
- my ($k, $v) ;
- ok 39, my $db = new BerkeleyDB::Hash -Filename => $Dfile,
- -Flags => DB_CREATE ;
-
- # create some data
- my %data = (
- "red" => 2,
- "green" => "house",
- "blue" => "sea",
- ) ;
-
- my $ret = 0 ;
- while (($k, $v) = each %data) {
- $ret += $db->db_put($k, $v) ;
- }
- ok 40, $ret == 0 ;
-
- # create the cursor
- ok 41, my $cursor = $db->db_cursor() ;
-
- $k = $v = "" ;
- my %copy = %data ;
- my $extras = 0 ;
- # sequence forwards
- while ($cursor->c_get($k, $v, DB_NEXT) == 0) {
- if ( $copy{$k} eq $v )
- { delete $copy{$k} }
- else
- { ++ $extras }
- }
- ok 42, $cursor->status() == DB_NOTFOUND ;
- ok 43, $cursor->status() eq $DB_errors{'DB_NOTFOUND'} ;
- ok 44, keys %copy == 0 ;
- ok 45, $extras == 0 ;
-
- # sequence backwards
- %copy = %data ;
- $extras = 0 ;
- my $status ;
- for ( $status = $cursor->c_get($k, $v, DB_LAST) ;
- $status == 0 ;
- $status = $cursor->c_get($k, $v, DB_PREV)) {
- if ( $copy{$k} eq $v )
- { delete $copy{$k} }
- else
- { ++ $extras }
- }
- ok 46, $status == DB_NOTFOUND ;
- ok 47, $status eq $DB_errors{'DB_NOTFOUND'} ;
- ok 48, $cursor->status() == $status ;
- ok 49, $cursor->status() eq $status ;
- ok 50, keys %copy == 0 ;
- ok 51, $extras == 0 ;
-
- ($k, $v) = ("green", "house") ;
- ok 52, $cursor->c_get($k, $v, DB_GET_BOTH) == 0 ;
-
- ($k, $v) = ("green", "door") ;
- ok 53, $cursor->c_get($k, $v, DB_GET_BOTH) == DB_NOTFOUND ;
-
- ($k, $v) = ("black", "house") ;
- ok 54, $cursor->c_get($k, $v, DB_GET_BOTH) == DB_NOTFOUND ;
-
-}
-
-{
- # Tied Hash interface
-
- my $lex = new LexFile $Dfile ;
- my %hash ;
- ok 55, tie %hash, 'BerkeleyDB::Hash', -Filename => $Dfile,
- -Flags => DB_CREATE ;
-
- # check "each" with an empty database
- my $count = 0 ;
- while (my ($k, $v) = each %hash) {
- ++ $count ;
- }
- ok 56, (tied %hash)->status() == DB_NOTFOUND ;
- ok 57, $count == 0 ;
-
- # Add a k/v pair
- my $value ;
- $hash{"some key"} = "some value";
- ok 58, (tied %hash)->status() == 0 ;
- ok 59, $hash{"some key"} eq "some value";
- ok 60, defined $hash{"some key"} ;
- ok 61, (tied %hash)->status() == 0 ;
- ok 62, exists $hash{"some key"} ;
- ok 63, !defined $hash{"jimmy"} ;
- ok 64, (tied %hash)->status() == DB_NOTFOUND ;
- ok 65, !exists $hash{"jimmy"} ;
- ok 66, (tied %hash)->status() == DB_NOTFOUND ;
-
- delete $hash{"some key"} ;
- ok 67, (tied %hash)->status() == 0 ;
- ok 68, ! defined $hash{"some key"} ;
- ok 69, (tied %hash)->status() == DB_NOTFOUND ;
- ok 70, ! exists $hash{"some key"} ;
- ok 71, (tied %hash)->status() == DB_NOTFOUND ;
-
- $hash{1} = 2 ;
- $hash{10} = 20 ;
- $hash{1000} = 2000 ;
-
- my ($keys, $values) = (0,0);
- $count = 0 ;
- while (my ($k, $v) = each %hash) {
- $keys += $k ;
- $values += $v ;
- ++ $count ;
- }
- ok 72, $count == 3 ;
- ok 73, $keys == 1011 ;
- ok 74, $values == 2022 ;
-
- # now clear the hash
- %hash = () ;
- ok 75, keys %hash == 0 ;
-
- untie %hash ;
-}
-
-{
- # in-memory file
-
- my $lex = new LexFile $Dfile ;
- my %hash ;
- my $fd ;
- my $value ;
- ok 76, my $db = tie %hash, 'BerkeleyDB::Hash' ;
-
- ok 77, $db->db_put("some key", "some value") == 0 ;
- ok 78, $db->db_get("some key", $value) == 0 ;
- ok 79, $value eq "some value" ;
-
- undef $db ;
- untie %hash ;
-}
-
-{
- # partial
- # check works via API
-
- my $lex = new LexFile $Dfile ;
- my %hash ;
- my $value ;
- ok 80, my $db = tie %hash, 'BerkeleyDB::Hash', -Filename => $Dfile,
- -Flags => DB_CREATE ;
-
- # create some data
- my %data = (
- "red" => "boat",
- "green" => "house",
- "blue" => "sea",
- ) ;
-
- my $ret = 0 ;
- while (my ($k, $v) = each %data) {
- $ret += $db->db_put($k, $v) ;
- }
- ok 81, $ret == 0 ;
-
-
- # do a partial get
- my($pon, $off, $len) = $db->partial_set(0,2) ;
- ok 82, $pon == 0 && $off == 0 && $len == 0 ;
- ok 83, ( $db->db_get("red", $value) == 0) && $value eq "bo" ;
- ok 84, ( $db->db_get("green", $value) == 0) && $value eq "ho" ;
- ok 85, ( $db->db_get("blue", $value) == 0) && $value eq "se" ;
-
- # do a partial get, off end of data
- ($pon, $off, $len) = $db->partial_set(3,2) ;
- ok 86, $pon ;
- ok 87, $off == 0 ;
- ok 88, $len == 2 ;
- ok 89, $db->db_get("red", $value) == 0 && $value eq "t" ;
- ok 90, $db->db_get("green", $value) == 0 && $value eq "se" ;
- ok 91, $db->db_get("blue", $value) == 0 && $value eq "" ;
-
- # switch of partial mode
- ($pon, $off, $len) = $db->partial_clear() ;
- ok 92, $pon ;
- ok 93, $off == 3 ;
- ok 94, $len == 2 ;
- ok 95, $db->db_get("red", $value) == 0 && $value eq "boat" ;
- ok 96, $db->db_get("green", $value) == 0 && $value eq "house" ;
- ok 97, $db->db_get("blue", $value) == 0 && $value eq "sea" ;
-
- # now partial put
- ($pon, $off, $len) = $db->partial_set(0,2) ;
- ok 98, ! $pon ;
- ok 99, $off == 0 ;
- ok 100, $len == 0 ;
- ok 101, $db->db_put("red", "") == 0 ;
- ok 102, $db->db_put("green", "AB") == 0 ;
- ok 103, $db->db_put("blue", "XYZ") == 0 ;
- ok 104, $db->db_put("new", "KLM") == 0 ;
-
- $db->partial_clear() ;
- ok 105, $db->db_get("red", $value) == 0 && $value eq "at" ;
- ok 106, $db->db_get("green", $value) == 0 && $value eq "ABuse" ;
- ok 107, $db->db_get("blue", $value) == 0 && $value eq "XYZa" ;
- ok 108, $db->db_get("new", $value) == 0 && $value eq "KLM" ;
-
- # now partial put
- $db->partial_set(3,2) ;
- ok 109, $db->db_put("red", "PPP") == 0 ;
- ok 110, $db->db_put("green", "Q") == 0 ;
- ok 111, $db->db_put("blue", "XYZ") == 0 ;
- ok 112, $db->db_put("new", "--") == 0 ;
-
- ($pon, $off, $len) = $db->partial_clear() ;
- ok 113, $pon ;
- ok 114, $off == 3 ;
- ok 115, $len == 2 ;
- ok 116, $db->db_get("red", $value) == 0 && $value eq "at\0PPP" ;
- ok 117, $db->db_get("green", $value) == 0 && $value eq "ABuQ" ;
- ok 118, $db->db_get("blue", $value) == 0 && $value eq "XYZXYZ" ;
- ok 119, $db->db_get("new", $value) == 0 && $value eq "KLM--" ;
-}
-
-{
- # partial
- # check works via tied hash
-
- my $lex = new LexFile $Dfile ;
- my %hash ;
- my $value ;
- ok 120, my $db = tie %hash, 'BerkeleyDB::Hash', -Filename => $Dfile,
- -Flags => DB_CREATE ;
-
- # create some data
- my %data = (
- "red" => "boat",
- "green" => "house",
- "blue" => "sea",
- ) ;
-
- while (my ($k, $v) = each %data) {
- $hash{$k} = $v ;
- }
-
-
- # do a partial get
- $db->partial_set(0,2) ;
- ok 121, $hash{"red"} eq "bo" ;
- ok 122, $hash{"green"} eq "ho" ;
- ok 123, $hash{"blue"} eq "se" ;
-
- # do a partial get, off end of data
- $db->partial_set(3,2) ;
- ok 124, $hash{"red"} eq "t" ;
- ok 125, $hash{"green"} eq "se" ;
- ok 126, $hash{"blue"} eq "" ;
-
- # switch of partial mode
- $db->partial_clear() ;
- ok 127, $hash{"red"} eq "boat" ;
- ok 128, $hash{"green"} eq "house" ;
- ok 129, $hash{"blue"} eq "sea" ;
-
- # now partial put
- $db->partial_set(0,2) ;
- ok 130, $hash{"red"} = "" ;
- ok 131, $hash{"green"} = "AB" ;
- ok 132, $hash{"blue"} = "XYZ" ;
- ok 133, $hash{"new"} = "KLM" ;
-
- $db->partial_clear() ;
- ok 134, $hash{"red"} eq "at" ;
- ok 135, $hash{"green"} eq "ABuse" ;
- ok 136, $hash{"blue"} eq "XYZa" ;
- ok 137, $hash{"new"} eq "KLM" ;
-
- # now partial put
- $db->partial_set(3,2) ;
- ok 138, $hash{"red"} = "PPP" ;
- ok 139, $hash{"green"} = "Q" ;
- ok 140, $hash{"blue"} = "XYZ" ;
- ok 141, $hash{"new"} = "TU" ;
-
- $db->partial_clear() ;
- ok 142, $hash{"red"} eq "at\0PPP" ;
- ok 143, $hash{"green"} eq "ABuQ" ;
- ok 144, $hash{"blue"} eq "XYZXYZ" ;
- ok 145, $hash{"new"} eq "KLMTU" ;
-}
-
-{
- # transaction
-
- my $lex = new LexFile $Dfile ;
- my %hash ;
- my $value ;
-
- my $home = "./fred" ;
- rmtree $home if -e $home ;
- ok 146, mkdir($home, 0777) ;
- ok 147, my $env = new BerkeleyDB::Env -Home => $home,
- -Flags => DB_CREATE|DB_INIT_TXN|
- DB_INIT_MPOOL|DB_INIT_LOCK ;
- ok 148, my $txn = $env->txn_begin() ;
- ok 149, my $db1 = tie %hash, 'BerkeleyDB::Hash', -Filename => $Dfile,
- -Flags => DB_CREATE ,
- -Env => $env,
- -Txn => $txn ;
-
-
- # create some data
- my %data = (
- "red" => "boat",
- "green" => "house",
- "blue" => "sea",
- ) ;
-
- my $ret = 0 ;
- while (my ($k, $v) = each %data) {
- $ret += $db1->db_put($k, $v) ;
- }
- ok 150, $ret == 0 ;
-
- # should be able to see all the records
-
- ok 151, my $cursor = $db1->db_cursor() ;
- my ($k, $v) = ("", "") ;
- my $count = 0 ;
- # sequence forwards
- while ($cursor->c_get($k, $v, DB_NEXT) == 0) {
- ++ $count ;
- }
- ok 152, $count == 3 ;
- undef $cursor ;
-
- # now abort the transaction
- ok 153, $txn->txn_abort() == 0 ;
-
- # there shouldn't be any records in the database
- $count = 0 ;
- # sequence forwards
- ok 154, $cursor = $db1->db_cursor() ;
- while ($cursor->c_get($k, $v, DB_NEXT) == 0) {
- ++ $count ;
- }
- ok 155, $count == 0 ;
-
- undef $txn ;
- undef $cursor ;
- undef $db1 ;
- undef $env ;
- untie %hash ;
- rmtree $home ;
-}
-
-
-{
- # DB_DUP
-
- my $lex = new LexFile $Dfile ;
- my %hash ;
- ok 156, my $db = tie %hash, 'BerkeleyDB::Hash', -Filename => $Dfile,
- -Property => DB_DUP,
- -Flags => DB_CREATE ;
-
- $hash{'Wall'} = 'Larry' ;
- $hash{'Wall'} = 'Stone' ;
- $hash{'Smith'} = 'John' ;
- $hash{'Wall'} = 'Brick' ;
- $hash{'Wall'} = 'Brick' ;
- $hash{'mouse'} = 'mickey' ;
-
- ok 157, keys %hash == 6 ;
-
- # create a cursor
- ok 158, my $cursor = $db->db_cursor() ;
-
- my $key = "Wall" ;
- my $value ;
- ok 159, $cursor->c_get($key, $value, DB_SET) == 0 ;
- ok 160, $key eq "Wall" && $value eq "Larry" ;
- ok 161, $cursor->c_get($key, $value, DB_NEXT) == 0 ;
- ok 162, $key eq "Wall" && $value eq "Stone" ;
- ok 163, $cursor->c_get($key, $value, DB_NEXT) == 0 ;
- ok 164, $key eq "Wall" && $value eq "Brick" ;
- ok 165, $cursor->c_get($key, $value, DB_NEXT) == 0 ;
- ok 166, $key eq "Wall" && $value eq "Brick" ;
-
- #my $ref = $db->db_stat() ;
- #ok 143, $ref->{bt_flags} | DB_DUP ;
-
- # test DB_DUP_NEXT
- my ($k, $v) = ("Wall", "") ;
- ok 167, $cursor->c_get($k, $v, DB_SET) == 0 ;
- ok 168, $k eq "Wall" && $v eq "Larry" ;
- ok 169, $cursor->c_get($k, $v, DB_NEXT_DUP) == 0 ;
- ok 170, $k eq "Wall" && $v eq "Stone" ;
- ok 171, $cursor->c_get($k, $v, DB_NEXT_DUP) == 0 ;
- ok 172, $k eq "Wall" && $v eq "Brick" ;
- ok 173, $cursor->c_get($k, $v, DB_NEXT_DUP) == 0 ;
- ok 174, $k eq "Wall" && $v eq "Brick" ;
- ok 175, $cursor->c_get($k, $v, DB_NEXT_DUP) == DB_NOTFOUND ;
-
-
- undef $db ;
- undef $cursor ;
- untie %hash ;
-
-}
-
-{
- # DB_DUP & DupCompare
- my $lex = new LexFile $Dfile, $Dfile2;
- my ($key, $value) ;
- my (%h, %g) ;
- my @Keys = qw( 0123 9 12 -1234 9 987654321 9 def ) ;
- my @Values = qw( 1 11 3 dd x abc 2 0 ) ;
-
- ok 176, tie %h, "BerkeleyDB::Hash", -Filename => $Dfile,
- -DupCompare => sub { $_[0] cmp $_[1] },
- -Property => DB_DUP|DB_DUPSORT,
- -Flags => DB_CREATE ;
-
- ok 177, tie %g, 'BerkeleyDB::Hash', -Filename => $Dfile2,
- -DupCompare => sub { $_[0] <=> $_[1] },
- -Property => DB_DUP|DB_DUPSORT,
- -Flags => DB_CREATE ;
-
- foreach (@Keys) {
- local $^W = 0 ;
- my $value = shift @Values ;
- $h{$_} = $value ;
- $g{$_} = $value ;
- }
-
- ok 178, my $cursor = (tied %h)->db_cursor() ;
- $key = 9 ; $value = "";
- ok 179, $cursor->c_get($key, $value, DB_SET) == 0 ;
- ok 180, $key == 9 && $value eq 11 ;
- ok 181, $cursor->c_get($key, $value, DB_NEXT) == 0 ;
- ok 182, $key == 9 && $value == 2 ;
- ok 183, $cursor->c_get($key, $value, DB_NEXT) == 0 ;
- ok 184, $key == 9 && $value eq "x" ;
-
- $cursor = (tied %g)->db_cursor() ;
- $key = 9 ;
- ok 185, $cursor->c_get($key, $value, DB_SET) == 0 ;
- ok 186, $key == 9 && $value eq "x" ;
- ok 187, $cursor->c_get($key, $value, DB_NEXT) == 0 ;
- ok 188, $key == 9 && $value == 2 ;
- ok 189, $cursor->c_get($key, $value, DB_NEXT) == 0 ;
- ok 190, $key == 9 && $value == 11 ;
-
-
-}
-
-{
- # get_dup etc
- my $lex = new LexFile $Dfile;
- my %hh ;
-
- ok 191, my $YY = tie %hh, "BerkeleyDB::Hash", -Filename => $Dfile,
- -DupCompare => sub { $_[0] cmp $_[1] },
- -Property => DB_DUP,
- -Flags => DB_CREATE ;
-
- $hh{'Wall'} = 'Larry' ;
- $hh{'Wall'} = 'Stone' ; # Note the duplicate key
- $hh{'Wall'} = 'Brick' ; # Note the duplicate key
- $hh{'Smith'} = 'John' ;
- $hh{'mouse'} = 'mickey' ;
-
- # first work in scalar context
- ok 192, scalar $YY->get_dup('Unknown') == 0 ;
- ok 193, scalar $YY->get_dup('Smith') == 1 ;
- ok 194, scalar $YY->get_dup('Wall') == 3 ;
-
- # now in list context
- my @unknown = $YY->get_dup('Unknown') ;
- ok 195, "@unknown" eq "" ;
-
- my @smith = $YY->get_dup('Smith') ;
- ok 196, "@smith" eq "John" ;
-
- {
- my @wall = $YY->get_dup('Wall') ;
- my %wall ;
- @wall{@wall} = @wall ;
- ok 197, (@wall == 3 && $wall{'Larry'}
- && $wall{'Stone'} && $wall{'Brick'});
- }
-
- # hash
- my %unknown = $YY->get_dup('Unknown', 1) ;
- ok 198, keys %unknown == 0 ;
-
- my %smith = $YY->get_dup('Smith', 1) ;
- ok 199, keys %smith == 1 && $smith{'John'} ;
-
- my %wall = $YY->get_dup('Wall', 1) ;
- ok 200, keys %wall == 3 && $wall{'Larry'} == 1 && $wall{'Stone'} == 1
- && $wall{'Brick'} == 1 ;
-
- undef $YY ;
- untie %hh ;
-
-}
-
-{
- # sub-class test
-
- package Another ;
-
- use strict ;
-
- open(FILE, ">SubDB.pm") or die "Cannot open SubDB.pm: $!\n" ;
- print FILE <<'EOM' ;
-
- package SubDB ;
-
- use strict ;
- use vars qw( @ISA @EXPORT) ;
-
- require Exporter ;
- use BerkeleyDB;
- @ISA=qw(BerkeleyDB::Hash);
- @EXPORT = @BerkeleyDB::EXPORT ;
-
- sub db_put {
- my $self = shift ;
- my $key = shift ;
- my $value = shift ;
- $self->SUPER::db_put($key, $value * 3) ;
- }
-
- sub db_get {
- my $self = shift ;
- $self->SUPER::db_get($_[0], $_[1]) ;
- $_[1] -= 2 ;
- }
-
- sub A_new_method
- {
- my $self = shift ;
- my $key = shift ;
- my $value = $self->FETCH($key) ;
- return "[[$value]]" ;
- }
-
- 1 ;
-EOM
-
- close FILE ;
-
- BEGIN { push @INC, '.'; }
- eval 'use SubDB ; ';
- main::ok 201, $@ eq "" ;
- my %h ;
- my $X ;
- eval '
- $X = tie(%h, "SubDB", -Filename => "dbhash.tmp",
- -Flags => DB_CREATE,
- -Mode => 0640 );
- ' ;
-
- main::ok 202, $@ eq "" ;
-
- my $ret = eval '$h{"fred"} = 3 ; return $h{"fred"} ' ;
- main::ok 203, $@ eq "" ;
- main::ok 204, $ret == 7 ;
-
- my $value = 0;
- $ret = eval '$X->db_put("joe", 4) ; $X->db_get("joe", $value) ; return $value' ;
- main::ok 205, $@ eq "" ;
- main::ok 206, $ret == 10 ;
-
- $ret = eval ' DB_NEXT eq main::DB_NEXT ' ;
- main::ok 207, $@ eq "" ;
- main::ok 208, $ret == 1 ;
-
- $ret = eval '$X->A_new_method("joe") ' ;
- main::ok 209, $@ eq "" ;
- main::ok 210, $ret eq "[[10]]" ;
-
- unlink "SubDB.pm", "dbhash.tmp" ;
-
-}
diff --git a/db/perl.BerkeleyDB/t/join.t b/db/perl.BerkeleyDB/t/join.t
deleted file mode 100644
index f986d76f7..000000000
--- a/db/perl.BerkeleyDB/t/join.t
+++ /dev/null
@@ -1,270 +0,0 @@
-#!./perl -w
-
-# ID: %I%, %G%
-
-use strict ;
-
-BEGIN {
- unless(grep /blib/, @INC) {
- chdir 't' if -d 't';
- @INC = '../lib' if -d '../lib';
- }
-}
-
-use BerkeleyDB;
-use File::Path qw(rmtree);
-
-if ($BerkeleyDB::db_ver < 2.005002)
-{
- print "1..0 # Skip: join needs Berkeley DB 2.5.2 or later\n" ;
- exit 0 ;
-}
-
-
-print "1..37\n";
-
-{
- package LexFile ;
-
- sub new
- {
- my $self = shift ;
- unlink @_ ;
- bless [ @_ ], $self ;
- }
-
- sub DESTROY
- {
- my $self = shift ;
- unlink @{ $self } ;
- }
-}
-
-
-sub ok
-{
- my $no = shift ;
- my $result = shift ;
-
- print "not " unless $result ;
- print "ok $no\n" ;
-}
-
-my $Dfile1 = "dbhash1.tmp";
-my $Dfile2 = "dbhash2.tmp";
-my $Dfile3 = "dbhash3.tmp";
-unlink $Dfile1, $Dfile2, $Dfile3 ;
-
-umask(0) ;
-
-sub addData
-{
- my $db = shift ;
- my @data = @_ ;
- die "addData odd data\n" unless @data /2 != 0 ;
- my ($k, $v) ;
- my $ret = 0 ;
- while (@data) {
- $k = shift @data ;
- $v = shift @data ;
- $ret += $db->db_put($k, $v) ;
- }
-
- return ($ret == 0) ;
-}
-
-{
- # error cases
- my $lex = new LexFile $Dfile1, $Dfile2, $Dfile3 ;
- my %hash1 ;
- my $value ;
- my $status ;
- my $cursor ;
-
- ok 1, my $db1 = tie %hash1, 'BerkeleyDB::Hash',
- -Filename => $Dfile1,
- -Flags => DB_CREATE,
- -DupCompare => sub { $_[0] lt $_[1] },
- -Property => DB_DUP|DB_DUPSORT ;
-
- # no cursors supplied
- eval '$cursor = $db1->db_join() ;' ;
- ok 2, $@ =~ /Usage: \$db->BerkeleyDB::Common::db_join\Q([cursors], flags=0)/;
-
- # empty list
- eval '$cursor = $db1->db_join([]) ;' ;
- ok 3, $@ =~ /db_join: No cursors in parameter list/;
-
- # cursor list, isn't a []
- eval '$cursor = $db1->db_join({}) ;' ;
- ok 4, $@ =~ /cursors is not an array reference at/ ;
-
- eval '$cursor = $db1->db_join(\1) ;' ;
- ok 5, $@ =~ /cursors is not an array reference at/ ;
-
-}
-
-{
- # test a 2-way & 3-way join
-
- my $lex = new LexFile $Dfile1, $Dfile2, $Dfile3 ;
- my %hash1 ;
- my %hash2 ;
- my %hash3 ;
- my $value ;
- my $status ;
-
- my $home = "./fred" ;
- rmtree $home if -e $home ;
- ok 6, mkdir($home, 0777) ;
- ok 7, my $env = new BerkeleyDB::Env -Home => $home,
- -Flags => DB_CREATE|DB_INIT_TXN
- |DB_INIT_MPOOL;
- #|DB_INIT_MPOOL| DB_INIT_LOCK;
- ok 8, my $txn = $env->txn_begin() ;
- ok 9, my $db1 = tie %hash1, 'BerkeleyDB::Hash',
- -Filename => $Dfile1,
- -Flags => DB_CREATE,
- -DupCompare => sub { $_[0] cmp $_[1] },
- -Property => DB_DUP|DB_DUPSORT,
- -Env => $env,
- -Txn => $txn ;
- ;
-
- ok 10, my $db2 = tie %hash2, 'BerkeleyDB::Hash',
- -Filename => $Dfile2,
- -Flags => DB_CREATE,
- -DupCompare => sub { $_[0] cmp $_[1] },
- -Property => DB_DUP|DB_DUPSORT,
- -Env => $env,
- -Txn => $txn ;
-
- ok 11, my $db3 = tie %hash3, 'BerkeleyDB::Btree',
- -Filename => $Dfile3,
- -Flags => DB_CREATE,
- -DupCompare => sub { $_[0] cmp $_[1] },
- -Property => DB_DUP|DB_DUPSORT,
- -Env => $env,
- -Txn => $txn ;
-
-
- ok 12, addData($db1, qw( apple Convenience
- peach Shopway
- pear Farmer
- raspberry Shopway
- strawberry Shopway
- gooseberry Farmer
- blueberry Farmer
- ));
-
- ok 13, addData($db2, qw( red apple
- red raspberry
- red strawberry
- yellow peach
- yellow pear
- green gooseberry
- blue blueberry)) ;
-
- ok 14, addData($db3, qw( expensive apple
- reasonable raspberry
- expensive strawberry
- reasonable peach
- reasonable pear
- expensive gooseberry
- reasonable blueberry)) ;
-
- ok 15, my $cursor2 = $db2->db_cursor() ;
- my $k = "red" ;
- my $v = "" ;
- ok 16, $cursor2->c_get($k, $v, DB_SET) == 0 ;
-
- # Two way Join
- ok 17, my $cursor1 = $db1->db_join([$cursor2]) ;
-
- my %expected = qw( apple Convenience
- raspberry Shopway
- strawberry Shopway
- ) ;
-
- # sequence forwards
- while ($cursor1->c_get($k, $v) == 0) {
- delete $expected{$k}
- if defined $expected{$k} && $expected{$k} eq $v ;
- #print "[$k] [$v]\n" ;
- }
- ok 18, keys %expected == 0 ;
- ok 19, $cursor1->status() == DB_NOTFOUND ;
-
- # Three way Join
- ok 20, $cursor2 = $db2->db_cursor() ;
- $k = "red" ;
- $v = "" ;
- ok 21, $cursor2->c_get($k, $v, DB_SET) == 0 ;
-
- ok 22, my $cursor3 = $db3->db_cursor() ;
- $k = "expensive" ;
- $v = "" ;
- ok 23, $cursor3->c_get($k, $v, DB_SET) == 0 ;
- ok 24, $cursor1 = $db1->db_join([$cursor2, $cursor3]) ;
-
- %expected = qw( apple Convenience
- strawberry Shopway
- ) ;
-
- # sequence forwards
- while ($cursor1->c_get($k, $v) == 0) {
- delete $expected{$k}
- if defined $expected{$k} && $expected{$k} eq $v ;
- #print "[$k] [$v]\n" ;
- }
- ok 25, keys %expected == 0 ;
- ok 26, $cursor1->status() == DB_NOTFOUND ;
-
- # test DB_JOIN_ITEM
- # #################
- ok 27, $cursor2 = $db2->db_cursor() ;
- $k = "red" ;
- $v = "" ;
- ok 28, $cursor2->c_get($k, $v, DB_SET) == 0 ;
-
- ok 29, $cursor3 = $db3->db_cursor() ;
- $k = "expensive" ;
- $v = "" ;
- ok 30, $cursor3->c_get($k, $v, DB_SET) == 0 ;
- ok 31, $cursor1 = $db1->db_join([$cursor2, $cursor3]) ;
-
- %expected = qw( apple 1
- strawberry 1
- ) ;
-
- # sequence forwards
- $k = "" ;
- $v = "" ;
- while ($cursor1->c_get($k, $v, DB_JOIN_ITEM) == 0) {
- delete $expected{$k}
- if defined $expected{$k} ;
- #print "[$k]\n" ;
- }
- ok 32, keys %expected == 0 ;
- ok 33, $cursor1->status() == DB_NOTFOUND ;
-
- ok 34, $cursor1->c_close() == 0 ;
- ok 35, $cursor2->c_close() == 0 ;
- ok 36, $cursor3->c_close() == 0 ;
-
- ok 37, ($status = $txn->txn_commit) == 0;
-
- undef $txn ;
- #undef $cursor1;
- #undef $cursor2;
- #undef $cursor3;
- undef $db1 ;
- undef $db2 ;
- undef $db3 ;
- undef $env ;
- untie %hash1 ;
- untie %hash2 ;
- untie %hash3 ;
- rmtree $home ;
-}
-
diff --git a/db/perl.BerkeleyDB/t/mldbm.t b/db/perl.BerkeleyDB/t/mldbm.t
deleted file mode 100644
index eb6673b35..000000000
--- a/db/perl.BerkeleyDB/t/mldbm.t
+++ /dev/null
@@ -1,166 +0,0 @@
-#!/usr/bin/perl -w
-
-BEGIN
-{
- if ($] < 5.005) {
- print "1..0 # This is Perl $], skipping test\n" ;
- exit 0 ;
- }
-
- eval { require Data::Dumper ; };
- if ($@) {
- print "1..0 # Data::Dumper is not installed on this system.\n";
- exit 0 ;
- }
- if ($Data::Dumper::VERSION < 2.08) {
- print "1..0 # Data::Dumper 2.08 or better required (found $Data::Dumper::VERSION).\n";
- exit 0 ;
- }
- eval { require MLDBM ; };
- if ($@) {
- print "1..0 # MLDBM is not installed on this system.\n";
- exit 0 ;
- }
-}
-
-sub ok
-{
- my $no = shift ;
- my $result = shift ;
-
- print "not " unless $result ;
- print "ok $no\n" ;
-}
-
-print "1..12\n";
-
-{
-package BTREE ;
-
-use BerkeleyDB ;
-use MLDBM qw(BerkeleyDB::Btree) ;
-use Data::Dumper;
-
-$filename = 'testmldbm' ;
-
-unlink $filename ;
-$MLDBM::UseDB = "BerkeleyDB::Btree" ;
-$db = tie %o, MLDBM, -Filename => $filename,
- -Flags => DB_CREATE
- or die $!;
-::ok 1, $db ;
-::ok 2, $db->type() == DB_BTREE ;
-
-$c = [\'c'];
-$b = {};
-$a = [1, $b, $c];
-$b->{a} = $a;
-$b->{b} = $a->[1];
-$b->{c} = $a->[2];
-@o{qw(a b c)} = ($a, $b, $c);
-$o{d} = "{once upon a time}";
-$o{e} = 1024;
-$o{f} = 1024.1024;
-$first = Data::Dumper->new([@o{qw(a b c)}], [qw(a b c)])->Quotekeys(0)->Dump;
-$second = <<'EOT';
-$a = [
- 1,
- {
- a => $a,
- b => $a->[1],
- c => [
- \'c'
- ]
- },
- $a->[1]{c}
- ];
-$b = {
- a => [
- 1,
- $b,
- [
- \'c'
- ]
- ],
- b => $b,
- c => $b->{a}[2]
- };
-$c = [
- \'c'
- ];
-EOT
-
-::ok 3, $first eq $second ;
-::ok 4, $o{d} eq "{once upon a time}" ;
-::ok 5, $o{e} == 1024 ;
-::ok 6, $o{f} eq 1024.1024 ;
-
-unlink $filename ;
-}
-
-{
-
-package HASH ;
-
-use BerkeleyDB ;
-use MLDBM qw(BerkeleyDB::Hash) ;
-use Data::Dumper;
-
-$filename = 'testmldbm' ;
-
-unlink $filename ;
-$MLDBM::UseDB = "BerkeleyDB::Hash" ;
-$db = tie %o, MLDBM, -Filename => $filename,
- -Flags => DB_CREATE
- or die $!;
-::ok 7, $db ;
-::ok 8, $db->type() == DB_HASH ;
-
-
-$c = [\'c'];
-$b = {};
-$a = [1, $b, $c];
-$b->{a} = $a;
-$b->{b} = $a->[1];
-$b->{c} = $a->[2];
-@o{qw(a b c)} = ($a, $b, $c);
-$o{d} = "{once upon a time}";
-$o{e} = 1024;
-$o{f} = 1024.1024;
-$first = Data::Dumper->new([@o{qw(a b c)}], [qw(a b c)])->Quotekeys(0)->Dump;
-$second = <<'EOT';
-$a = [
- 1,
- {
- a => $a,
- b => $a->[1],
- c => [
- \'c'
- ]
- },
- $a->[1]{c}
- ];
-$b = {
- a => [
- 1,
- $b,
- [
- \'c'
- ]
- ],
- b => $b,
- c => $b->{a}[2]
- };
-$c = [
- \'c'
- ];
-EOT
-
-::ok 9, $first eq $second ;
-::ok 10, $o{d} eq "{once upon a time}" ;
-::ok 11, $o{e} == 1024 ;
-::ok 12, $o{f} eq 1024.1024 ;
-
-unlink $filename ;
-
-}
diff --git a/db/perl.BerkeleyDB/t/queue.t b/db/perl.BerkeleyDB/t/queue.t
deleted file mode 100644
index 0f459a43a..000000000
--- a/db/perl.BerkeleyDB/t/queue.t
+++ /dev/null
@@ -1,837 +0,0 @@
-#!./perl -w
-
-# ID: %I%, %G%
-
-use strict ;
-
-BEGIN {
- unless(grep /blib/, @INC) {
- chdir 't' if -d 't';
- @INC = '../lib' if -d '../lib';
- }
-}
-
-use BerkeleyDB;
-use File::Path qw(rmtree);
-
-BEGIN
-{
- if ($BerkeleyDB::db_version < 3) {
- print "1..0 # Skipping test, Queue needs Berkeley DB 3.x or better\n" ;
- exit 0 ;
- }
-}
-
-print "1..197\n";
-
-my %DB_errors = (
- 'DB_INCOMPLETE' => "DB_INCOMPLETE: Sync was unable to complete",
- 'DB_KEYEMPTY' => "DB_KEYEMPTY: Non-existent key/data pair",
- 'DB_KEYEXIST' => "DB_KEYEXIST: Key/data pair already exists",
- 'DB_LOCK_DEADLOCK' => "DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock",
- 'DB_LOCK_NOTGRANTED' => "DB_LOCK_NOTGRANTED: Lock not granted",
- 'DB_NOTFOUND' => "DB_NOTFOUND: No matching key/data pair found",
- 'DB_OLD_VERSION'=> "DB_OLDVERSION: Database requires a version upgrade",
- 'DB_RUNRECOVERY'=> "DB_RUNRECOVERY: Fatal error, run database recovery",
- ) ;
-
-{
- package LexFile ;
-
- sub new
- {
- my $self = shift ;
- unlink @_ ;
- bless [ @_ ], $self ;
- }
-
- sub DESTROY
- {
- my $self = shift ;
- unlink @{ $self } ;
- }
-}
-
-
-sub ok
-{
- my $no = shift ;
- my $result = shift ;
-
- print "not " unless $result ;
- print "ok $no\n" ;
-}
-
-sub docat
-{
- my $file = shift;
- local $/ = undef;
- open(CAT,$file) || die "Cannot open $file:$!";
- my $result = <CAT>;
- close(CAT);
- return $result;
-}
-
-sub touch
-{
- my $file = shift ;
- open(CAT,">$file") || die "Cannot open $file:$!";
- close(CAT);
-}
-
-sub joiner
-{
- my $db = shift ;
- my $sep = shift ;
- my ($k, $v) = (0, "") ;
- my @data = () ;
-
- my $cursor = $db->db_cursor() or return () ;
- for ( my $status = $cursor->c_get($k, $v, DB_FIRST) ;
- $status == 0 ;
- $status = $cursor->c_get($k, $v, DB_NEXT)) {
- push @data, $v ;
- }
-
- (scalar(@data), join($sep, @data)) ;
-}
-
-sub countRecords
-{
- my $db = shift ;
- my ($k, $v) = (0,0) ;
- my ($count) = 0 ;
- my ($cursor) = $db->db_cursor() ;
- #for ($status = $cursor->c_get($k, $v, DB_FIRST) ;
-# $status == 0 ;
-# $status = $cursor->c_get($k, $v, DB_NEXT) )
- while ($cursor->c_get($k, $v, DB_NEXT) == 0)
- { ++ $count }
-
- return $count ;
-}
-
-sub fillout
-{
- my $var = shift ;
- my $length = shift ;
- my $pad = shift || " " ;
- my $template = $pad x $length ;
- substr($template, 0, length($var)) = $var ;
- return $template ;
-}
-
-my $Dfile = "dbhash.tmp";
-my $Dfile2 = "dbhash2.tmp";
-my $Dfile3 = "dbhash3.tmp";
-unlink $Dfile;
-
-umask(0) ;
-
-
-# Check for invalid parameters
-{
- # Check for invalid parameters
- my $db ;
- eval ' $db = new BerkeleyDB::Queue -Stupid => 3 ; ' ;
- ok 1, $@ =~ /unknown key value\(s\) Stupid/ ;
-
- eval ' $db = new BerkeleyDB::Queue -Bad => 2, -Mode => 0345, -Stupid => 3; ' ;
- ok 2, $@ =~ /unknown key value\(s\) / ;
-
- eval ' $db = new BerkeleyDB::Queue -Env => 2 ' ;
- ok 3, $@ =~ /^Env not of type BerkeleyDB::Env/ ;
-
- eval ' $db = new BerkeleyDB::Queue -Txn => "x" ' ;
- ok 4, $@ =~ /^Txn not of type BerkeleyDB::Txn/ ;
-
- my $obj = bless [], "main" ;
- eval ' $db = new BerkeleyDB::Queue -Env => $obj ' ;
- ok 5, $@ =~ /^Env not of type BerkeleyDB::Env/ ;
-}
-
-# Now check the interface to Queue
-
-{
- my $lex = new LexFile $Dfile ;
- my $rec_len = 10 ;
- my $pad = "x" ;
-
- ok 6, my $db = new BerkeleyDB::Queue -Filename => $Dfile,
- -Flags => DB_CREATE,
- -Len => $rec_len,
- -Pad => $pad;
-
- # Add a k/v pair
- my $value ;
- my $status ;
- ok 7, $db->db_put(1, "some value") == 0 ;
- ok 8, $db->status() == 0 ;
- ok 9, $db->db_get(1, $value) == 0 ;
- ok 10, $value eq fillout("some value", $rec_len, $pad) ;
- ok 11, $db->db_put(2, "value") == 0 ;
- ok 12, $db->db_get(2, $value) == 0 ;
- ok 13, $value eq fillout("value", $rec_len, $pad) ;
- ok 14, $db->db_del(1) == 0 ;
- ok 15, ($status = $db->db_get(1, $value)) == DB_KEYEMPTY ;
- ok 16, $db->status() == DB_KEYEMPTY ;
- ok 17, $db->status() eq $DB_errors{'DB_KEYEMPTY'} ;
-
- ok 18, ($status = $db->db_get(7, $value)) == DB_NOTFOUND ;
- ok 19, $db->status() == DB_NOTFOUND ;
- ok 20, $db->status() eq $DB_errors{'DB_NOTFOUND'} ;
-
- ok 21, $db->db_sync() == 0 ;
-
- # Check NOOVERWRITE will make put fail when attempting to overwrite
- # an existing record.
-
- ok 22, $db->db_put( 2, 'x', DB_NOOVERWRITE) == DB_KEYEXIST ;
- ok 23, $db->status() eq $DB_errors{'DB_KEYEXIST'} ;
- ok 24, $db->status() == DB_KEYEXIST ;
-
-
- # check that the value of the key has not been changed by the
- # previous test
- ok 25, $db->db_get(2, $value) == 0 ;
- ok 26, $value eq fillout("value", $rec_len, $pad) ;
-
-
-}
-
-
-{
- # Check simple env works with a array.
- # and pad defaults to space
- my $lex = new LexFile $Dfile ;
-
- my $home = "./fred" ;
- my $rec_len = 11 ;
- ok 27, -d $home ? chmod 0777, $home : mkdir($home, 0777) ;
-
- ok 28, my $env = new BerkeleyDB::Env -Flags => DB_CREATE|DB_INIT_MPOOL,
- -Home => $home ;
-
- ok 29, my $db = new BerkeleyDB::Queue -Filename => $Dfile,
- -Env => $env,
- -Flags => DB_CREATE,
- -Len => $rec_len;
-
- # Add a k/v pair
- my $value ;
- ok 30, $db->db_put(1, "some value") == 0 ;
- ok 31, $db->db_get(1, $value) == 0 ;
- ok 32, $value eq fillout("some value", $rec_len) ;
- undef $db ;
- undef $env ;
- rmtree $home ;
-}
-
-
-{
- # cursors
-
- my $lex = new LexFile $Dfile ;
- my @array ;
- my ($k, $v) ;
- my $rec_len = 5 ;
- ok 33, my $db = new BerkeleyDB::Queue -Filename => $Dfile,
- -ArrayBase => 0,
- -Flags => DB_CREATE ,
- -Len => $rec_len;
-
- # create some data
- my @data = (
- "red" ,
- "green" ,
- "blue" ,
- ) ;
-
- my $i ;
- my %data ;
- my $ret = 0 ;
- for ($i = 0 ; $i < @data ; ++$i) {
- $ret += $db->db_put($i, $data[$i]) ;
- $data{$i} = $data[$i] ;
- }
- ok 34, $ret == 0 ;
-
- # create the cursor
- ok 35, my $cursor = $db->db_cursor() ;
-
- $k = 0 ; $v = "" ;
- my %copy = %data;
- my $extras = 0 ;
- # sequence forwards
- while ($cursor->c_get($k, $v, DB_NEXT) == 0)
- {
- if ( fillout($copy{$k}, $rec_len) eq $v )
- { delete $copy{$k} }
- else
- { ++ $extras }
- }
-
- ok 36, $cursor->status() == DB_NOTFOUND ;
- ok 37, $cursor->status() eq $DB_errors{'DB_NOTFOUND'} ;
- ok 38, keys %copy == 0 ;
- ok 39, $extras == 0 ;
-
- # sequence backwards
- %copy = %data ;
- $extras = 0 ;
- my $status ;
- for ( $status = $cursor->c_get($k, $v, DB_LAST) ;
- $status == 0 ;
- $status = $cursor->c_get($k, $v, DB_PREV)) {
- if ( fillout($copy{$k}, $rec_len) eq $v )
- { delete $copy{$k} }
- else
- { ++ $extras }
- }
- ok 40, $status == DB_NOTFOUND ;
- ok 41, $status eq $DB_errors{'DB_NOTFOUND'} ;
- ok 42, $cursor->status() == $status ;
- ok 43, $cursor->status() eq $status ;
- ok 44, keys %copy == 0 ;
- ok 45, $extras == 0 ;
-}
-
-{
- # Tied Array interface
-
- # full tied array support started in Perl 5.004_57
- # just double check.
- my $FA = 0 ;
- {
- sub try::TIEARRAY { bless [], "try" }
- sub try::FETCHSIZE { $FA = 1 }
- my @a ;
- tie @a, 'try' ;
- my $a = @a ;
- }
-
- my $lex = new LexFile $Dfile ;
- my @array ;
- my $db ;
- my $rec_len = 10 ;
- ok 46, $db = tie @array, 'BerkeleyDB::Queue', -Filename => $Dfile,
- -ArrayBase => 0,
- -Flags => DB_CREATE ,
- -Len => $rec_len;
-
- ok 47, my $cursor = (tied @array)->db_cursor() ;
- # check the database is empty
- my $count = 0 ;
- my ($k, $v) = (0,"") ;
- while ($cursor->c_get($k, $v, DB_NEXT) == 0) {
- ++ $count ;
- }
- ok 48, $cursor->status() == DB_NOTFOUND ;
- ok 49, $count == 0 ;
-
- ok 50, @array == 0 ;
-
- # Add a k/v pair
- my $value ;
- $array[1] = "some value";
- ok 51, (tied @array)->status() == 0 ;
- ok 52, $array[1] eq fillout("some value", $rec_len);
- ok 53, defined $array[1];
- ok 54, (tied @array)->status() == 0 ;
- ok 55, !defined $array[3];
- ok 56, (tied @array)->status() == DB_NOTFOUND ;
-
- ok 57, (tied @array)->db_del(1) == 0 ;
- ok 58, (tied @array)->status() == 0 ;
- ok 59, ! defined $array[1];
- ok 60, (tied @array)->status() == DB_KEYEMPTY ;
-
- $array[1] = 2 ;
- $array[10] = 20 ;
- $array[1000] = 2000 ;
-
- my ($keys, $values) = (0,0);
- $count = 0 ;
- for ( my $status = $cursor->c_get($k, $v, DB_FIRST) ;
- $status == 0 ;
- $status = $cursor->c_get($k, $v, DB_NEXT)) {
- $keys += $k ;
- $values += $v ;
- ++ $count ;
- }
- ok 61, $count == 3 ;
- ok 62, $keys == 1011 ;
- ok 63, $values == 2022 ;
-
- # unshift isn't allowed
-# eval {
-# $FA ? unshift @array, "red", "green", "blue"
-# : $db->unshift("red", "green", "blue" ) ;
-# } ;
-# ok 64, $@ =~ /^unshift is unsupported with Queue databases/ ;
- $array[0] = "red" ;
- $array[1] = "green" ;
- $array[2] = "blue" ;
- $array[4] = 2 ;
- ok 64, $array[0] eq fillout("red", $rec_len) ;
- ok 65, $cursor->c_get($k, $v, DB_FIRST) == 0 ;
- ok 66, $k == 0 ;
- ok 67, $v eq fillout("red", $rec_len) ;
- ok 68, $array[1] eq fillout("green", $rec_len) ;
- ok 69, $cursor->c_get($k, $v, DB_NEXT) == 0 ;
- ok 70, $k == 1 ;
- ok 71, $v eq fillout("green", $rec_len) ;
- ok 72, $array[2] eq fillout("blue", $rec_len) ;
- ok 73, $cursor->c_get($k, $v, DB_NEXT) == 0 ;
- ok 74, $k == 2 ;
- ok 75, $v eq fillout("blue", $rec_len) ;
- ok 76, $array[4] == 2 ;
- ok 77, $cursor->c_get($k, $v, DB_NEXT) == 0 ;
- ok 78, $k == 4 ;
- ok 79, $v == 2 ;
-
- # shift
- ok 80, ($FA ? shift @array : $db->shift()) eq fillout("red", $rec_len) ;
- ok 81, ($FA ? shift @array : $db->shift()) eq fillout("green", $rec_len) ;
- ok 82, ($FA ? shift @array : $db->shift()) eq fillout("blue", $rec_len) ;
- ok 83, ($FA ? shift @array : $db->shift()) == 2 ;
-
- # push
- $FA ? push @array, "the", "end"
- : $db->push("the", "end") ;
- ok 84, $cursor->c_get($k, $v, DB_LAST) == 0 ;
- ok 85, $k == 1002 ;
- ok 86, $v eq fillout("end", $rec_len) ;
- ok 87, $cursor->c_get($k, $v, DB_PREV) == 0 ;
- ok 88, $k == 1001 ;
- ok 89, $v eq fillout("the", $rec_len) ;
- ok 90, $cursor->c_get($k, $v, DB_PREV) == 0 ;
- ok 91, $k == 1000 ;
- ok 92, $v == 2000 ;
-
- # pop
- ok 93, ( $FA ? pop @array : $db->pop ) eq fillout("end", $rec_len) ;
- ok 94, ( $FA ? pop @array : $db->pop ) eq fillout("the", $rec_len) ;
- ok 95, ( $FA ? pop @array : $db->pop ) == 2000 ;
-
- # now clear the array
- $FA ? @array = ()
- : $db->clear() ;
- ok 96, $cursor->c_get($k, $v, DB_FIRST) == DB_NOTFOUND ;
-
- undef $cursor ;
- undef $db ;
- untie @array ;
-}
-
-{
- # in-memory file
-
- my @array ;
- my $fd ;
- my $value ;
- my $rec_len = 15 ;
- ok 97, my $db = tie @array, 'BerkeleyDB::Queue',
- -Len => $rec_len;
-
- ok 98, $db->db_put(1, "some value") == 0 ;
- ok 99, $db->db_get(1, $value) == 0 ;
- ok 100, $value eq fillout("some value", $rec_len) ;
-
-}
-
-{
- # partial
- # check works via API
-
- my $lex = new LexFile $Dfile ;
- my $value ;
- my $rec_len = 8 ;
- ok 101, my $db = new BerkeleyDB::Queue -Filename => $Dfile,
- -Flags => DB_CREATE ,
- -Len => $rec_len,
- -Pad => " " ;
-
- # create some data
- my @data = (
- "",
- "boat",
- "house",
- "sea",
- ) ;
-
- my $ret = 0 ;
- my $i ;
- for ($i = 0 ; $i < @data ; ++$i) {
- my $r = $db->db_put($i, $data[$i]) ;
- $ret += $r ;
- }
- ok 102, $ret == 0 ;
-
- # do a partial get
- my ($pon, $off, $len) = $db->partial_set(0,2) ;
- ok 103, ! $pon && $off == 0 && $len == 0 ;
- ok 104, $db->db_get(1, $value) == 0 && $value eq "bo" ;
- ok 105, $db->db_get(2, $value) == 0 && $value eq "ho" ;
- ok 106, $db->db_get(3, $value) == 0 && $value eq "se" ;
-
- # do a partial get, off end of data
- ($pon, $off, $len) = $db->partial_set(3,2) ;
- ok 107, $pon ;
- ok 108, $off == 0 ;
- ok 109, $len == 2 ;
- ok 110, $db->db_get(1, $value) == 0 && $value eq fillout("t", 2) ;
- ok 111, $db->db_get(2, $value) == 0 && $value eq "se" ;
- ok 112, $db->db_get(3, $value) == 0 && $value eq " " ;
-
- # switch of partial mode
- ($pon, $off, $len) = $db->partial_clear() ;
- ok 113, $pon ;
- ok 114, $off == 3 ;
- ok 115, $len == 2 ;
- ok 116, $db->db_get(1, $value) == 0 && $value eq fillout("boat", $rec_len) ;
- ok 117, $db->db_get(2, $value) == 0 && $value eq fillout("house", $rec_len) ;
- ok 118, $db->db_get(3, $value) == 0 && $value eq fillout("sea", $rec_len) ;
-
- # now partial put
- $db->partial_set(0,2) ;
- ok 119, $db->db_put(1, "") != 0 ;
- ok 120, $db->db_put(2, "AB") == 0 ;
- ok 121, $db->db_put(3, "XY") == 0 ;
- ok 122, $db->db_put(4, "KLM") != 0 ;
- ok 123, $db->db_put(4, "KL") == 0 ;
-
- ($pon, $off, $len) = $db->partial_clear() ;
- ok 124, $pon ;
- ok 125, $off == 0 ;
- ok 126, $len == 2 ;
- ok 127, $db->db_get(1, $value) == 0 && $value eq fillout("boat", $rec_len) ;
- ok 128, $db->db_get(2, $value) == 0 && $value eq fillout("ABuse", $rec_len) ;
- ok 129, $db->db_get(3, $value) == 0 && $value eq fillout("XYa", $rec_len) ;
- ok 130, $db->db_get(4, $value) == 0 && $value eq fillout("KL", $rec_len) ;
-
- # now partial put
- ($pon, $off, $len) = $db->partial_set(3,2) ;
- ok 131, ! $pon ;
- ok 132, $off == 0 ;
- ok 133, $len == 0 ;
- ok 134, $db->db_put(1, "PP") == 0 ;
- ok 135, $db->db_put(2, "Q") != 0 ;
- ok 136, $db->db_put(3, "XY") == 0 ;
- ok 137, $db->db_put(4, "TU") == 0 ;
-
- $db->partial_clear() ;
- ok 138, $db->db_get(1, $value) == 0 && $value eq fillout("boaPP", $rec_len) ;
- ok 139, $db->db_get(2, $value) == 0 && $value eq fillout("ABuse",$rec_len) ;
- ok 140, $db->db_get(3, $value) == 0 && $value eq fillout("XYaXY", $rec_len) ;
- ok 141, $db->db_get(4, $value) == 0 && $value eq fillout("KL TU", $rec_len) ;
-}
-
-{
- # partial
- # check works via tied array
-
- my $lex = new LexFile $Dfile ;
- my @array ;
- my $value ;
- my $rec_len = 8 ;
- ok 142, my $db = tie @array, 'BerkeleyDB::Queue', -Filename => $Dfile,
- -Flags => DB_CREATE ,
- -Len => $rec_len,
- -Pad => " " ;
-
- # create some data
- my @data = (
- "",
- "boat",
- "house",
- "sea",
- ) ;
-
- my $i ;
- my $status = 0 ;
- for ($i = 1 ; $i < @data ; ++$i) {
- $array[$i] = $data[$i] ;
- $status += $db->status() ;
- }
-
- ok 143, $status == 0 ;
-
- # do a partial get
- $db->partial_set(0,2) ;
- ok 144, $array[1] eq fillout("bo", 2) ;
- ok 145, $array[2] eq fillout("ho", 2) ;
- ok 146, $array[3] eq fillout("se", 2) ;
-
- # do a partial get, off end of data
- $db->partial_set(3,2) ;
- ok 147, $array[1] eq fillout("t", 2) ;
- ok 148, $array[2] eq fillout("se", 2) ;
- ok 149, $array[3] eq fillout("", 2) ;
-
- # switch of partial mode
- $db->partial_clear() ;
- ok 150, $array[1] eq fillout("boat", $rec_len) ;
- ok 151, $array[2] eq fillout("house", $rec_len) ;
- ok 152, $array[3] eq fillout("sea", $rec_len) ;
-
- # now partial put
- $db->partial_set(0,2) ;
- $array[1] = "" ;
- ok 153, $db->status() != 0 ;
- $array[2] = "AB" ;
- ok 154, $db->status() == 0 ;
- $array[3] = "XY" ;
- ok 155, $db->status() == 0 ;
- $array[4] = "KL" ;
- ok 156, $db->status() == 0 ;
-
- $db->partial_clear() ;
- ok 157, $array[1] eq fillout("boat", $rec_len) ;
- ok 158, $array[2] eq fillout("ABuse", $rec_len) ;
- ok 159, $array[3] eq fillout("XYa", $rec_len) ;
- ok 160, $array[4] eq fillout("KL", $rec_len) ;
-
- # now partial put
- $db->partial_set(3,2) ;
- $array[1] = "PP" ;
- ok 161, $db->status() == 0 ;
- $array[2] = "Q" ;
- ok 162, $db->status() != 0 ;
- $array[3] = "XY" ;
- ok 163, $db->status() == 0 ;
- $array[4] = "TU" ;
- ok 164, $db->status() == 0 ;
-
- $db->partial_clear() ;
- ok 165, $array[1] eq fillout("boaPP", $rec_len) ;
- ok 166, $array[2] eq fillout("ABuse", $rec_len) ;
- ok 167, $array[3] eq fillout("XYaXY", $rec_len) ;
- ok 168, $array[4] eq fillout("KL TU", $rec_len) ;
-}
-
-{
- # transaction
-
- my $lex = new LexFile $Dfile ;
- my @array ;
- my $value ;
-
- my $home = "./fred" ;
- rmtree $home if -e $home ;
- ok 169, mkdir($home, 0777) ;
- my $rec_len = 9 ;
- ok 170, my $env = new BerkeleyDB::Env -Home => $home,
- -Flags => DB_CREATE|DB_INIT_TXN|
- DB_INIT_MPOOL|DB_INIT_LOCK ;
- ok 171, my $txn = $env->txn_begin() ;
- ok 172, my $db1 = tie @array, 'BerkeleyDB::Queue',
- -Filename => $Dfile,
- -ArrayBase => 0,
- -Flags => DB_CREATE ,
- -Env => $env,
- -Txn => $txn ,
- -Len => $rec_len,
- -Pad => " " ;
-
-
- # create some data
- my @data = (
- "boat",
- "house",
- "sea",
- ) ;
-
- my $ret = 0 ;
- my $i ;
- for ($i = 0 ; $i < @data ; ++$i) {
- $ret += $db1->db_put($i, $data[$i]) ;
- }
- ok 173, $ret == 0 ;
-
- # should be able to see all the records
-
- ok 174, my $cursor = $db1->db_cursor() ;
- my ($k, $v) = (0, "") ;
- my $count = 0 ;
- # sequence forwards
- while ($cursor->c_get($k, $v, DB_NEXT) == 0) {
- ++ $count ;
- }
- ok 175, $count == 3 ;
- undef $cursor ;
-
- # now abort the transaction
- ok 176, $txn->txn_abort() == 0 ;
-
- # there shouldn't be any records in the database
- $count = 0 ;
- # sequence forwards
- ok 177, $cursor = $db1->db_cursor() ;
- while ($cursor->c_get($k, $v, DB_NEXT) == 0) {
- ++ $count ;
- }
- ok 178, $count == 0 ;
-
- undef $txn ;
- undef $cursor ;
- undef $db1 ;
- undef $env ;
- untie @array ;
- rmtree $home ;
-}
-
-
-{
- # db_stat
-
- my $lex = new LexFile $Dfile ;
- my $recs = ($BerkeleyDB::db_version >= 3.1 ? "qs_ndata" : "qs_nrecs") ;
- my @array ;
- my ($k, $v) ;
- my $rec_len = 7 ;
- ok 179, my $db = new BerkeleyDB::Queue -Filename => $Dfile,
- -Flags => DB_CREATE,
- -Pagesize => 4 * 1024,
- -Len => $rec_len,
- -Pad => " "
- ;
-
- my $ref = $db->db_stat() ;
- ok 180, $ref->{$recs} == 0;
- ok 181, $ref->{'qs_pagesize'} == 4 * 1024;
-
- # create some data
- my @data = (
- 2,
- "house",
- "sea",
- ) ;
-
- my $ret = 0 ;
- my $i ;
- for ($i = $db->ArrayOffset ; @data ; ++$i) {
- $ret += $db->db_put($i, shift @data) ;
- }
- ok 182, $ret == 0 ;
-
- $ref = $db->db_stat() ;
- ok 183, $ref->{$recs} == 3;
-}
-
-{
- # sub-class test
-
- package Another ;
-
- use strict ;
-
- open(FILE, ">SubDB.pm") or die "Cannot open SubDB.pm: $!\n" ;
- print FILE <<'EOM' ;
-
- package SubDB ;
-
- use strict ;
- use vars qw( @ISA @EXPORT) ;
-
- require Exporter ;
- use BerkeleyDB;
- @ISA=qw(BerkeleyDB::Queue);
- @EXPORT = @BerkeleyDB::EXPORT ;
-
- sub db_put {
- my $self = shift ;
- my $key = shift ;
- my $value = shift ;
- $self->SUPER::db_put($key, $value * 3) ;
- }
-
- sub db_get {
- my $self = shift ;
- $self->SUPER::db_get($_[0], $_[1]) ;
- $_[1] -= 2 ;
- }
-
- sub A_new_method
- {
- my $self = shift ;
- my $key = shift ;
- my $value = $self->FETCH($key) ;
- return "[[$value]]" ;
- }
-
- 1 ;
-EOM
-
- close FILE ;
-
- BEGIN { push @INC, '.'; }
- eval 'use SubDB ; ';
- main::ok 184, $@ eq "" ;
- my @h ;
- my $X ;
- my $rec_len = 34 ;
- eval '
- $X = tie(@h, "SubDB", -Filename => "dbbtree.tmp",
- -Flags => DB_CREATE,
- -Mode => 0640 ,
- -Len => $rec_len,
- -Pad => " "
- );
- ' ;
-
- main::ok 185, $@ eq "" ;
-
- my $ret = eval '$h[1] = 3 ; return $h[1] ' ;
- main::ok 186, $@ eq "" ;
- main::ok 187, $ret == 7 ;
-
- my $value = 0;
- $ret = eval '$X->db_put(1, 4) ; $X->db_get(1, $value) ; return $value' ;
- main::ok 188, $@ eq "" ;
- main::ok 189, $ret == 10 ;
-
- $ret = eval ' DB_NEXT eq main::DB_NEXT ' ;
- main::ok 190, $@ eq "" ;
- main::ok 191, $ret == 1 ;
-
- $ret = eval '$X->A_new_method(1) ' ;
- main::ok 192, $@ eq "" ;
- main::ok 193, $ret eq "[[10]]" ;
-
- unlink "SubDB.pm", "dbbtree.tmp" ;
-
-}
-
-{
- # DB_APPEND
-
- my $lex = new LexFile $Dfile;
- my @array ;
- my $value ;
- my $rec_len = 21 ;
- ok 194, my $db = tie @array, 'BerkeleyDB::Queue',
- -Filename => $Dfile,
- -Flags => DB_CREATE ,
- -Len => $rec_len,
- -Pad => " " ;
-
- # create a few records
- $array[1] = "def" ;
- $array[3] = "ghi" ;
-
- my $k = 0 ;
- ok 195, $db->db_put($k, "fred", DB_APPEND) == 0 ;
- ok 196, $k == 4 ;
- ok 197, $array[4] eq fillout("fred", $rec_len) ;
-
- undef $db ;
- untie @array ;
-}
-
-__END__
-
-
-# TODO
-#
-# DB_DELIMETER DB_FIXEDLEN DB_PAD DB_SNAPSHOT with partial records
diff --git a/db/perl.BerkeleyDB/t/recno.t b/db/perl.BerkeleyDB/t/recno.t
deleted file mode 100644
index 0f210f540..000000000
--- a/db/perl.BerkeleyDB/t/recno.t
+++ /dev/null
@@ -1,967 +0,0 @@
-#!./perl -w
-
-# ID: %I%, %G%
-
-use strict ;
-
-BEGIN {
- unless(grep /blib/, @INC) {
- chdir 't' if -d 't';
- @INC = '../lib' if -d '../lib';
- }
-}
-
-use BerkeleyDB;
-use File::Path qw(rmtree);
-
-print "1..218\n";
-
-my %DB_errors = (
- 'DB_INCOMPLETE' => "DB_INCOMPLETE: Sync was unable to complete",
- 'DB_KEYEMPTY' => "DB_KEYEMPTY: Non-existent key/data pair",
- 'DB_KEYEXIST' => "DB_KEYEXIST: Key/data pair already exists",
- 'DB_LOCK_DEADLOCK' => "DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock",
- 'DB_LOCK_NOTGRANTED' => "DB_LOCK_NOTGRANTED: Lock not granted",
- 'DB_NOTFOUND' => "DB_NOTFOUND: No matching key/data pair found",
- 'DB_OLD_VERSION' => "DB_OLDVERSION: Database requires a version upgrade",
- 'DB_RUNRECOVERY' => "DB_RUNRECOVERY: Fatal error, run database recovery",
-) ;
-
-{
- package LexFile ;
-
- sub new
- {
- my $self = shift ;
- unlink @_ ;
- bless [ @_ ], $self ;
- }
-
- sub DESTROY
- {
- my $self = shift ;
- unlink @{ $self } ;
- }
-}
-
-
-sub ok
-{
- my $no = shift ;
- my $result = shift ;
-
- print "not " unless $result ;
- print "ok $no\n" ;
-}
-
-sub docat
-{
- my $file = shift;
- local $/ = undef;
- open(CAT,$file) || die "Cannot open $file:$!";
- my $result = <CAT>;
- close(CAT);
- return $result;
-}
-
-sub touch
-{
- my $file = shift ;
- open(CAT,">$file") || die "Cannot open $file:$!";
- close(CAT);
-}
-
-sub joiner
-{
- my $db = shift ;
- my $sep = shift ;
- my ($k, $v) = (0, "") ;
- my @data = () ;
-
- my $cursor = $db->db_cursor() or return () ;
- for ( my $status = $cursor->c_get($k, $v, DB_FIRST) ;
- $status == 0 ;
- $status = $cursor->c_get($k, $v, DB_NEXT)) {
- push @data, $v ;
- }
-
- (scalar(@data), join($sep, @data)) ;
-}
-
-sub countRecords
-{
- my $db = shift ;
- my ($k, $v) = (0,0) ;
- my ($count) = 0 ;
- my ($cursor) = $db->db_cursor() ;
- #for ($status = $cursor->c_get($k, $v, DB_FIRST) ;
-# $status == 0 ;
-# $status = $cursor->c_get($k, $v, DB_NEXT) )
- while ($cursor->c_get($k, $v, DB_NEXT) == 0)
- { ++ $count }
-
- return $count ;
-}
-
-my $Dfile = "dbhash.tmp";
-my $Dfile2 = "dbhash2.tmp";
-my $Dfile3 = "dbhash3.tmp";
-unlink $Dfile;
-
-umask(0) ;
-
-
-# Check for invalid parameters
-{
- # Check for invalid parameters
- my $db ;
- eval ' $db = new BerkeleyDB::Recno -Stupid => 3 ; ' ;
- ok 1, $@ =~ /unknown key value\(s\) Stupid/ ;
-
- eval ' $db = new BerkeleyDB::Recno -Bad => 2, -Mode => 0345, -Stupid => 3; ' ;
- ok 2, $@ =~ /unknown key value\(s\) / ;
-
- eval ' $db = new BerkeleyDB::Recno -Env => 2 ' ;
- ok 3, $@ =~ /^Env not of type BerkeleyDB::Env/ ;
-
- eval ' $db = new BerkeleyDB::Recno -Txn => "x" ' ;
- ok 4, $@ =~ /^Txn not of type BerkeleyDB::Txn/ ;
-
- my $obj = bless [], "main" ;
- eval ' $db = new BerkeleyDB::Recno -Env => $obj ' ;
- ok 5, $@ =~ /^Env not of type BerkeleyDB::Env/ ;
-}
-
-# Now check the interface to Recno
-
-{
- my $lex = new LexFile $Dfile ;
-
- ok 6, my $db = new BerkeleyDB::Recno -Filename => $Dfile,
- -Flags => DB_CREATE ;
-
- # Add a k/v pair
- my $value ;
- my $status ;
- ok 7, $db->db_put(1, "some value") == 0 ;
- ok 8, $db->status() == 0 ;
- ok 9, $db->db_get(1, $value) == 0 ;
- ok 10, $value eq "some value" ;
- ok 11, $db->db_put(2, "value") == 0 ;
- ok 12, $db->db_get(2, $value) == 0 ;
- ok 13, $value eq "value" ;
- ok 14, $db->db_del(1) == 0 ;
- ok 15, ($status = $db->db_get(1, $value)) == DB_KEYEMPTY ;
- ok 16, $db->status() == DB_KEYEMPTY ;
- ok 17, $db->status() eq $DB_errors{'DB_KEYEMPTY'} ;
-
- ok 18, ($status = $db->db_get(7, $value)) == DB_NOTFOUND ;
- ok 19, $db->status() == DB_NOTFOUND ;
- ok 20, $db->status() eq $DB_errors{'DB_NOTFOUND'} ;
-
- ok 21, $db->db_sync() == 0 ;
-
- # Check NOOVERWRITE will make put fail when attempting to overwrite
- # an existing record.
-
- ok 22, $db->db_put( 2, 'x', DB_NOOVERWRITE) == DB_KEYEXIST ;
- ok 23, $db->status() eq $DB_errors{'DB_KEYEXIST'} ;
- ok 24, $db->status() == DB_KEYEXIST ;
-
-
- # check that the value of the key has not been changed by the
- # previous test
- ok 25, $db->db_get(2, $value) == 0 ;
- ok 26, $value eq "value" ;
-
-
-}
-
-
-{
- # Check simple env works with a array.
- my $lex = new LexFile $Dfile ;
-
- my $home = "./fred" ;
- ok 27, -d $home ? chmod 0777, $home : mkdir($home, 0777) ;
-
- ok 28, my $env = new BerkeleyDB::Env -Flags => DB_CREATE|DB_INIT_MPOOL,
- -Home => $home ;
-
- ok 29, my $db = new BerkeleyDB::Recno -Filename => $Dfile,
- -Env => $env,
- -Flags => DB_CREATE ;
-
- # Add a k/v pair
- my $value ;
- ok 30, $db->db_put(1, "some value") == 0 ;
- ok 31, $db->db_get(1, $value) == 0 ;
- ok 32, $value eq "some value" ;
- undef $db ;
- undef $env ;
- rmtree $home ;
-}
-
-
-{
- # cursors
-
- my $lex = new LexFile $Dfile ;
- my @array ;
- my ($k, $v) ;
- ok 33, my $db = new BerkeleyDB::Recno -Filename => $Dfile,
- -ArrayBase => 0,
- -Flags => DB_CREATE ;
-
- # create some data
- my @data = (
- "red" ,
- "green" ,
- "blue" ,
- ) ;
-
- my $i ;
- my %data ;
- my $ret = 0 ;
- for ($i = 0 ; $i < @data ; ++$i) {
- $ret += $db->db_put($i, $data[$i]) ;
- $data{$i} = $data[$i] ;
- }
- ok 34, $ret == 0 ;
-
- # create the cursor
- ok 35, my $cursor = $db->db_cursor() ;
-
- $k = 0 ; $v = "" ;
- my %copy = %data;
- my $extras = 0 ;
- # sequence forwards
- while ($cursor->c_get($k, $v, DB_NEXT) == 0)
- {
- if ( $copy{$k} eq $v )
- { delete $copy{$k} }
- else
- { ++ $extras }
- }
-
- ok 36, $cursor->status() == DB_NOTFOUND ;
- ok 37, $cursor->status() eq $DB_errors{'DB_NOTFOUND'} ;
- ok 38, keys %copy == 0 ;
- ok 39, $extras == 0 ;
-
- # sequence backwards
- %copy = %data ;
- $extras = 0 ;
- my $status ;
- for ( $status = $cursor->c_get($k, $v, DB_LAST) ;
- $status == 0 ;
- $status = $cursor->c_get($k, $v, DB_PREV)) {
- if ( $copy{$k} eq $v )
- { delete $copy{$k} }
- else
- { ++ $extras }
- }
- ok 40, $status == DB_NOTFOUND ;
- ok 41, $status eq $DB_errors{'DB_NOTFOUND'} ;
- ok 42, $cursor->status() == $status ;
- ok 43, $cursor->status() eq $status ;
- ok 44, keys %copy == 0 ;
- ok 45, $extras == 0 ;
-}
-
-{
- # Tied Array interface
-
- # full tied array support started in Perl 5.004_57
- # just double check.
- my $FA = 0 ;
- {
- sub try::TIEARRAY { bless [], "try" }
- sub try::FETCHSIZE { $FA = 1 }
- my @a ;
- tie @a, 'try' ;
- my $a = @a ;
- }
-
- my $lex = new LexFile $Dfile ;
- my @array ;
- my $db ;
- ok 46, $db = tie @array, 'BerkeleyDB::Recno', -Filename => $Dfile,
- -Property => DB_RENUMBER,
- -ArrayBase => 0,
- -Flags => DB_CREATE ;
-
- ok 47, my $cursor = (tied @array)->db_cursor() ;
- # check the database is empty
- my $count = 0 ;
- my ($k, $v) = (0,"") ;
- while ($cursor->c_get($k, $v, DB_NEXT) == 0) {
- ++ $count ;
- }
- ok 48, $cursor->status() == DB_NOTFOUND ;
- ok 49, $count == 0 ;
-
- ok 50, @array == 0 ;
-
- # Add a k/v pair
- my $value ;
- $array[1] = "some value";
- ok 51, (tied @array)->status() == 0 ;
- ok 52, $array[1] eq "some value";
- ok 53, defined $array[1];
- ok 54, (tied @array)->status() == 0 ;
- ok 55, !defined $array[3];
- ok 56, (tied @array)->status() == DB_NOTFOUND ;
-
- ok 57, (tied @array)->db_del(1) == 0 ;
- ok 58, (tied @array)->status() == 0 ;
- ok 59, ! defined $array[1];
- ok 60, (tied @array)->status() == DB_NOTFOUND ;
-
- $array[1] = 2 ;
- $array[10] = 20 ;
- $array[1000] = 2000 ;
-
- my ($keys, $values) = (0,0);
- $count = 0 ;
- for ( my $status = $cursor->c_get($k, $v, DB_FIRST) ;
- $status == 0 ;
- $status = $cursor->c_get($k, $v, DB_NEXT)) {
- $keys += $k ;
- $values += $v ;
- ++ $count ;
- }
- ok 61, $count == 3 ;
- ok 62, $keys == 1011 ;
- ok 63, $values == 2022 ;
-
- # unshift
- $FA ? unshift @array, "red", "green", "blue"
- : $db->unshift("red", "green", "blue" ) ;
- ok 64, $array[1] eq "red" ;
- ok 65, $cursor->c_get($k, $v, DB_FIRST) == 0 ;
- ok 66, $k == 1 ;
- ok 67, $v eq "red" ;
- ok 68, $array[2] eq "green" ;
- ok 69, $cursor->c_get($k, $v, DB_NEXT) == 0 ;
- ok 70, $k == 2 ;
- ok 71, $v eq "green" ;
- ok 72, $array[3] eq "blue" ;
- ok 73, $cursor->c_get($k, $v, DB_NEXT) == 0 ;
- ok 74, $k == 3 ;
- ok 75, $v eq "blue" ;
- ok 76, $array[4] == 2 ;
- ok 77, $cursor->c_get($k, $v, DB_NEXT) == 0 ;
- ok 78, $k == 4 ;
- ok 79, $v == 2 ;
-
- # shift
- ok 80, ($FA ? shift @array : $db->shift()) eq "red" ;
- ok 81, ($FA ? shift @array : $db->shift()) eq "green" ;
- ok 82, ($FA ? shift @array : $db->shift()) eq "blue" ;
- ok 83, ($FA ? shift @array : $db->shift()) == 2 ;
-
- # push
- $FA ? push @array, "the", "end"
- : $db->push("the", "end") ;
- ok 84, $cursor->c_get($k, $v, DB_LAST) == 0 ;
- ok 85, $k == 1001 ;
- ok 86, $v eq "end" ;
- ok 87, $cursor->c_get($k, $v, DB_PREV) == 0 ;
- ok 88, $k == 1000 ;
- ok 89, $v eq "the" ;
- ok 90, $cursor->c_get($k, $v, DB_PREV) == 0 ;
- ok 91, $k == 999 ;
- ok 92, $v == 2000 ;
-
- # pop
- ok 93, ( $FA ? pop @array : $db->pop ) eq "end" ;
- ok 94, ( $FA ? pop @array : $db->pop ) eq "the" ;
- ok 95, ( $FA ? pop @array : $db->pop ) == 2000 ;
-
- # now clear the array
- $FA ? @array = ()
- : $db->clear() ;
- ok 96, $cursor->c_get($k, $v, DB_FIRST) == DB_NOTFOUND ;
-
- undef $cursor ;
- undef $db ;
- untie @array ;
-}
-
-{
- # in-memory file
-
- my @array ;
- my $fd ;
- my $value ;
- ok 97, my $db = tie @array, 'BerkeleyDB::Recno' ;
-
- ok 98, $db->db_put(1, "some value") == 0 ;
- ok 99, $db->db_get(1, $value) == 0 ;
- ok 100, $value eq "some value" ;
-
-}
-
-{
- # partial
- # check works via API
-
- my $lex = new LexFile $Dfile ;
- my $value ;
- ok 101, my $db = new BerkeleyDB::Recno, -Filename => $Dfile,
- -Flags => DB_CREATE ;
-
- # create some data
- my @data = (
- "",
- "boat",
- "house",
- "sea",
- ) ;
-
- my $ret = 0 ;
- my $i ;
- for ($i = 1 ; $i < @data ; ++$i) {
- $ret += $db->db_put($i, $data[$i]) ;
- }
- ok 102, $ret == 0 ;
-
-
- # do a partial get
- my ($pon, $off, $len) = $db->partial_set(0,2) ;
- ok 103, ! $pon && $off == 0 && $len == 0 ;
- ok 104, $db->db_get(1, $value) == 0 && $value eq "bo" ;
- ok 105, $db->db_get(2, $value) == 0 && $value eq "ho" ;
- ok 106, $db->db_get(3, $value) == 0 && $value eq "se" ;
-
- # do a partial get, off end of data
- ($pon, $off, $len) = $db->partial_set(3,2) ;
- ok 107, $pon ;
- ok 108, $off == 0 ;
- ok 109, $len == 2 ;
- ok 110, $db->db_get(1, $value) == 0 && $value eq "t" ;
- ok 111, $db->db_get(2, $value) == 0 && $value eq "se" ;
- ok 112, $db->db_get(3, $value) == 0 && $value eq "" ;
-
- # switch of partial mode
- ($pon, $off, $len) = $db->partial_clear() ;
- ok 113, $pon ;
- ok 114, $off == 3 ;
- ok 115, $len == 2 ;
- ok 116, $db->db_get(1, $value) == 0 && $value eq "boat" ;
- ok 117, $db->db_get(2, $value) == 0 && $value eq "house" ;
- ok 118, $db->db_get(3, $value) == 0 && $value eq "sea" ;
-
- # now partial put
- $db->partial_set(0,2) ;
- ok 119, $db->db_put(1, "") == 0 ;
- ok 120, $db->db_put(2, "AB") == 0 ;
- ok 121, $db->db_put(3, "XYZ") == 0 ;
- ok 122, $db->db_put(4, "KLM") == 0 ;
-
- ($pon, $off, $len) = $db->partial_clear() ;
- ok 123, $pon ;
- ok 124, $off == 0 ;
- ok 125, $len == 2 ;
- ok 126, $db->db_get(1, $value) == 0 && $value eq "at" ;
- ok 127, $db->db_get(2, $value) == 0 && $value eq "ABuse" ;
- ok 128, $db->db_get(3, $value) == 0 && $value eq "XYZa" ;
- ok 129, $db->db_get(4, $value) == 0 && $value eq "KLM" ;
-
- # now partial put
- ($pon, $off, $len) = $db->partial_set(3,2) ;
- ok 130, ! $pon ;
- ok 131, $off == 0 ;
- ok 132, $len == 0 ;
- ok 133, $db->db_put(1, "PPP") == 0 ;
- ok 134, $db->db_put(2, "Q") == 0 ;
- ok 135, $db->db_put(3, "XYZ") == 0 ;
- ok 136, $db->db_put(4, "TU") == 0 ;
-
- $db->partial_clear() ;
- ok 137, $db->db_get(1, $value) == 0 && $value eq "at\0PPP" ;
- ok 138, $db->db_get(2, $value) == 0 && $value eq "ABuQ" ;
- ok 139, $db->db_get(3, $value) == 0 && $value eq "XYZXYZ" ;
- ok 140, $db->db_get(4, $value) == 0 && $value eq "KLMTU" ;
-}
-
-{
- # partial
- # check works via tied array
-
- my $lex = new LexFile $Dfile ;
- my @array ;
- my $value ;
- ok 141, my $db = tie @array, 'BerkeleyDB::Recno', -Filename => $Dfile,
- -Flags => DB_CREATE ;
-
- # create some data
- my @data = (
- "",
- "boat",
- "house",
- "sea",
- ) ;
-
- my $i ;
- for ($i = 1 ; $i < @data ; ++$i) {
- $array[$i] = $data[$i] ;
- }
-
-
- # do a partial get
- $db->partial_set(0,2) ;
- ok 142, $array[1] eq "bo" ;
- ok 143, $array[2] eq "ho" ;
- ok 144, $array[3] eq "se" ;
-
- # do a partial get, off end of data
- $db->partial_set(3,2) ;
- ok 145, $array[1] eq "t" ;
- ok 146, $array[2] eq "se" ;
- ok 147, $array[3] eq "" ;
-
- # switch of partial mode
- $db->partial_clear() ;
- ok 148, $array[1] eq "boat" ;
- ok 149, $array[2] eq "house" ;
- ok 150, $array[3] eq "sea" ;
-
- # now partial put
- $db->partial_set(0,2) ;
- ok 151, $array[1] = "" ;
- ok 152, $array[2] = "AB" ;
- ok 153, $array[3] = "XYZ" ;
- ok 154, $array[4] = "KLM" ;
-
- $db->partial_clear() ;
- ok 155, $array[1] eq "at" ;
- ok 156, $array[2] eq "ABuse" ;
- ok 157, $array[3] eq "XYZa" ;
- ok 158, $array[4] eq "KLM" ;
-
- # now partial put
- $db->partial_set(3,2) ;
- ok 159, $array[1] = "PPP" ;
- ok 160, $array[2] = "Q" ;
- ok 161, $array[3] = "XYZ" ;
- ok 162, $array[4] = "TU" ;
-
- $db->partial_clear() ;
- ok 163, $array[1] eq "at\0PPP" ;
- ok 164, $array[2] eq "ABuQ" ;
- ok 165, $array[3] eq "XYZXYZ" ;
- ok 166, $array[4] eq "KLMTU" ;
-}
-
-{
- # transaction
-
- my $lex = new LexFile $Dfile ;
- my @array ;
- my $value ;
-
- my $home = "./fred" ;
- rmtree $home if -e $home ;
- ok 167, mkdir($home, 0777) ;
- ok 168, my $env = new BerkeleyDB::Env -Home => $home,
- -Flags => DB_CREATE|DB_INIT_TXN|
- DB_INIT_MPOOL|DB_INIT_LOCK ;
- ok 169, my $txn = $env->txn_begin() ;
- ok 170, my $db1 = tie @array, 'BerkeleyDB::Recno',
- -Filename => $Dfile,
- -ArrayBase => 0,
- -Flags => DB_CREATE ,
- -Env => $env,
- -Txn => $txn ;
-
-
- # create some data
- my @data = (
- "boat",
- "house",
- "sea",
- ) ;
-
- my $ret = 0 ;
- my $i ;
- for ($i = 0 ; $i < @data ; ++$i) {
- $ret += $db1->db_put($i, $data[$i]) ;
- }
- ok 171, $ret == 0 ;
-
- # should be able to see all the records
-
- ok 172, my $cursor = $db1->db_cursor() ;
- my ($k, $v) = (0, "") ;
- my $count = 0 ;
- # sequence forwards
- while ($cursor->c_get($k, $v, DB_NEXT) == 0) {
- ++ $count ;
- }
- ok 173, $count == 3 ;
- undef $cursor ;
-
- # now abort the transaction
- ok 174, $txn->txn_abort() == 0 ;
-
- # there shouldn't be any records in the database
- $count = 0 ;
- # sequence forwards
- ok 175, $cursor = $db1->db_cursor() ;
- while ($cursor->c_get($k, $v, DB_NEXT) == 0) {
- ++ $count ;
- }
- ok 176, $count == 0 ;
-
- undef $txn ;
- undef $cursor ;
- undef $db1 ;
- undef $env ;
- untie @array ;
- rmtree $home ;
-}
-
-
-{
- # db_stat
-
- my $lex = new LexFile $Dfile ;
- my $recs = ($BerkeleyDB::db_version >= 3.1 ? "bt_ndata" : "bt_nrecs") ;
- my @array ;
- my ($k, $v) ;
- ok 177, my $db = new BerkeleyDB::Recno -Filename => $Dfile,
- -Flags => DB_CREATE,
- -Pagesize => 4 * 1024,
- ;
-
- my $ref = $db->db_stat() ;
- ok 178, $ref->{$recs} == 0;
- ok 179, $ref->{'bt_pagesize'} == 4 * 1024;
-
- # create some data
- my @data = (
- 2,
- "house",
- "sea",
- ) ;
-
- my $ret = 0 ;
- my $i ;
- for ($i = $db->ArrayOffset ; @data ; ++$i) {
- $ret += $db->db_put($i, shift @data) ;
- }
- ok 180, $ret == 0 ;
-
- $ref = $db->db_stat() ;
- ok 181, $ref->{$recs} == 3;
-}
-
-{
- # sub-class test
-
- package Another ;
-
- use strict ;
-
- open(FILE, ">SubDB.pm") or die "Cannot open SubDB.pm: $!\n" ;
- print FILE <<'EOM' ;
-
- package SubDB ;
-
- use strict ;
- use vars qw( @ISA @EXPORT) ;
-
- require Exporter ;
- use BerkeleyDB;
- @ISA=qw(BerkeleyDB::Recno);
- @EXPORT = @BerkeleyDB::EXPORT ;
-
- sub db_put {
- my $self = shift ;
- my $key = shift ;
- my $value = shift ;
- $self->SUPER::db_put($key, $value * 3) ;
- }
-
- sub db_get {
- my $self = shift ;
- $self->SUPER::db_get($_[0], $_[1]) ;
- $_[1] -= 2 ;
- }
-
- sub A_new_method
- {
- my $self = shift ;
- my $key = shift ;
- my $value = $self->FETCH($key) ;
- return "[[$value]]" ;
- }
-
- 1 ;
-EOM
-
- close FILE ;
-
- BEGIN { push @INC, '.'; }
- eval 'use SubDB ; ';
- main::ok 182, $@ eq "" ;
- my @h ;
- my $X ;
- eval '
- $X = tie(@h, "SubDB", -Filename => "dbbtree.tmp",
- -Flags => DB_CREATE,
- -Mode => 0640 );
- ' ;
-
- main::ok 183, $@ eq "" ;
-
- my $ret = eval '$h[1] = 3 ; return $h[1] ' ;
- main::ok 184, $@ eq "" ;
- main::ok 185, $ret == 7 ;
-
- my $value = 0;
- $ret = eval '$X->db_put(1, 4) ; $X->db_get(1, $value) ; return $value' ;
- main::ok 186, $@ eq "" ;
- main::ok 187, $ret == 10 ;
-
- $ret = eval ' DB_NEXT eq main::DB_NEXT ' ;
- main::ok 188, $@ eq "" ;
- main::ok 189, $ret == 1 ;
-
- $ret = eval '$X->A_new_method(1) ' ;
- main::ok 190, $@ eq "" ;
- main::ok 191, $ret eq "[[10]]" ;
-
- unlink "SubDB.pm", "dbbtree.tmp" ;
-
-}
-
-{
- # variable length records, DB_DELIMETER -- defaults to \n
-
- my $lex = new LexFile $Dfile, $Dfile2 ;
- touch $Dfile2 ;
- my @array ;
- my $value ;
- ok 192, tie @array, 'BerkeleyDB::Recno', -Filename => $Dfile,
- -ArrayBase => 0,
- -Flags => DB_CREATE ,
- -Source => $Dfile2 ;
- $array[0] = "abc" ;
- $array[1] = "def" ;
- $array[3] = "ghi" ;
- untie @array ;
-
- my $x = docat($Dfile2) ;
- ok 193, $x eq "abc\ndef\n\nghi\n" ;
-}
-
-{
- # variable length records, change DB_DELIMETER
-
- my $lex = new LexFile $Dfile, $Dfile2 ;
- touch $Dfile2 ;
- my @array ;
- my $value ;
- ok 194, tie @array, 'BerkeleyDB::Recno', -Filename => $Dfile,
- -ArrayBase => 0,
- -Flags => DB_CREATE ,
- -Source => $Dfile2 ,
- -Delim => "-";
- $array[0] = "abc" ;
- $array[1] = "def" ;
- $array[3] = "ghi" ;
- untie @array ;
-
- my $x = docat($Dfile2) ;
- ok 195, $x eq "abc-def--ghi-";
-}
-
-{
- # fixed length records, default DB_PAD
-
- my $lex = new LexFile $Dfile, $Dfile2 ;
- touch $Dfile2 ;
- my @array ;
- my $value ;
- ok 196, tie @array, 'BerkeleyDB::Recno', -Filename => $Dfile,
- -ArrayBase => 0,
- -Flags => DB_CREATE ,
- -Len => 5,
- -Source => $Dfile2 ;
- $array[0] = "abc" ;
- $array[1] = "def" ;
- $array[3] = "ghi" ;
- untie @array ;
-
- my $x = docat($Dfile2) ;
- ok 197, $x eq "abc def ghi " ;
-}
-
-{
- # fixed length records, change Pad
-
- my $lex = new LexFile $Dfile, $Dfile2 ;
- touch $Dfile2 ;
- my @array ;
- my $value ;
- ok 198, tie @array, 'BerkeleyDB::Recno', -Filename => $Dfile,
- -ArrayBase => 0,
- -Flags => DB_CREATE ,
- -Len => 5,
- -Pad => "-",
- -Source => $Dfile2 ;
- $array[0] = "abc" ;
- $array[1] = "def" ;
- $array[3] = "ghi" ;
- untie @array ;
-
- my $x = docat($Dfile2) ;
- ok 199, $x eq "abc--def-------ghi--" ;
-}
-
-{
- # DB_RENUMBER
-
- my $lex = new LexFile $Dfile;
- my @array ;
- my $value ;
- ok 200, my $db = tie @array, 'BerkeleyDB::Recno', -Filename => $Dfile,
- -Property => DB_RENUMBER,
- -ArrayBase => 0,
- -Flags => DB_CREATE ;
- # create a few records
- $array[0] = "abc" ;
- $array[1] = "def" ;
- $array[3] = "ghi" ;
-
- ok 201, my ($length, $joined) = joiner($db, "|") ;
- ok 202, $length == 3 ;
- ok 203, $joined eq "abc|def|ghi";
-
- ok 204, $db->db_del(1) == 0 ;
- ok 205, ($length, $joined) = joiner($db, "|") ;
- ok 206, $length == 2 ;
- ok 207, $joined eq "abc|ghi";
-
- undef $db ;
- untie @array ;
-
-}
-
-{
- # DB_APPEND
-
- my $lex = new LexFile $Dfile;
- my @array ;
- my $value ;
- ok 208, my $db = tie @array, 'BerkeleyDB::Recno',
- -Filename => $Dfile,
- -Flags => DB_CREATE ;
-
- # create a few records
- $array[1] = "def" ;
- $array[3] = "ghi" ;
-
- my $k = 0 ;
- ok 209, $db->db_put($k, "fred", DB_APPEND) == 0 ;
- ok 210, $k == 4 ;
-
- undef $db ;
- untie @array ;
-}
-
-{
- # in-memory Btree with an associated text file
-
- my $lex = new LexFile $Dfile2 ;
- touch $Dfile2 ;
- my @array ;
- my $value ;
- ok 211, tie @array, 'BerkeleyDB::Recno', -Source => $Dfile2 ,
- -ArrayBase => 0,
- -Property => DB_RENUMBER,
- -Flags => DB_CREATE ;
- $array[0] = "abc" ;
- $array[1] = "def" ;
- $array[3] = "ghi" ;
- untie @array ;
-
- my $x = docat($Dfile2) ;
- ok 212, $x eq "abc\ndef\n\nghi\n" ;
-}
-
-{
- # in-memory, variable length records, change DB_DELIMETER
-
- my $lex = new LexFile $Dfile, $Dfile2 ;
- touch $Dfile2 ;
- my @array ;
- my $value ;
- ok 213, tie @array, 'BerkeleyDB::Recno',
- -ArrayBase => 0,
- -Flags => DB_CREATE ,
- -Source => $Dfile2 ,
- -Property => DB_RENUMBER,
- -Delim => "-";
- $array[0] = "abc" ;
- $array[1] = "def" ;
- $array[3] = "ghi" ;
- untie @array ;
-
- my $x = docat($Dfile2) ;
- ok 214, $x eq "abc-def--ghi-";
-}
-
-{
- # in-memory, fixed length records, default DB_PAD
-
- my $lex = new LexFile $Dfile, $Dfile2 ;
- touch $Dfile2 ;
- my @array ;
- my $value ;
- ok 215, tie @array, 'BerkeleyDB::Recno', -ArrayBase => 0,
- -Flags => DB_CREATE ,
- -Property => DB_RENUMBER,
- -Len => 5,
- -Source => $Dfile2 ;
- $array[0] = "abc" ;
- $array[1] = "def" ;
- $array[3] = "ghi" ;
- untie @array ;
-
- my $x = docat($Dfile2) ;
- ok 216, $x eq "abc def ghi " ;
-}
-
-{
- # in-memory, fixed length records, change Pad
-
- my $lex = new LexFile $Dfile, $Dfile2 ;
- touch $Dfile2 ;
- my @array ;
- my $value ;
- ok 217, tie @array, 'BerkeleyDB::Recno',
- -ArrayBase => 0,
- -Flags => DB_CREATE ,
- -Property => DB_RENUMBER,
- -Len => 5,
- -Pad => "-",
- -Source => $Dfile2 ;
- $array[0] = "abc" ;
- $array[1] = "def" ;
- $array[3] = "ghi" ;
- untie @array ;
-
- my $x = docat($Dfile2) ;
- ok 218, $x eq "abc--def-------ghi--" ;
-}
-
-__END__
-
-
-# TODO
-#
-# DB_DELIMETER DB_FIXEDLEN DB_PAD DB_SNAPSHOT with partial records
diff --git a/db/perl.BerkeleyDB/t/strict.t b/db/perl.BerkeleyDB/t/strict.t
deleted file mode 100644
index 0a856bbb1..000000000
--- a/db/perl.BerkeleyDB/t/strict.t
+++ /dev/null
@@ -1,220 +0,0 @@
-#!./perl -w
-
-use strict ;
-
-BEGIN {
- unless(grep /blib/, @INC) {
- chdir 't' if -d 't';
- @INC = '../lib' if -d '../lib';
- }
-}
-
-use BerkeleyDB;
-use File::Path qw(rmtree);
-
-print "1..44\n";
-
-
-{
- package LexFile ;
-
- sub new
- {
- my $self = shift ;
- unlink @_ ;
- bless [ @_ ], $self ;
- }
-
- sub DESTROY
- {
- my $self = shift ;
- unlink @{ $self } ;
- }
-}
-
-sub ok
-{
- my $no = shift ;
- my $result = shift ;
-
- print "not " unless $result ;
- print "ok $no\n" ;
-}
-
-sub docat
-{
- my $file = shift;
- local $/ = undef;
- open(CAT,$file) || die "Cannot open $file:$!";
- my $result = <CAT>;
- close(CAT);
- return $result;
-}
-
-
-my $Dfile = "dbhash.tmp";
-my $home = "./fred" ;
-
-umask(0);
-
-{
- # closing a database & an environment in the correct order.
- my $lex = new LexFile $Dfile ;
- my %hash ;
- my $status ;
-
- rmtree $home if -e $home ;
- ok 1, mkdir($home, 0777) ;
- ok 2, my $env = new BerkeleyDB::Env -Home => $home,
- -Flags => DB_CREATE|DB_INIT_TXN|
- DB_INIT_MPOOL|DB_INIT_LOCK ;
-
- ok 3, my $db1 = tie %hash, 'BerkeleyDB::Hash', -Filename => $Dfile,
- -Flags => DB_CREATE ,
- -Env => $env;
-
- ok 4, $db1->db_close() == 0 ;
-
- eval { $status = $env->db_appexit() ; } ;
- ok 5, $status == 0 ;
- ok 6, $@ eq "" ;
- #print "[$@]\n" ;
-
- rmtree $home if -e $home ;
-}
-
-{
- # closing an environment with an open database
- my $lex = new LexFile $Dfile ;
- my %hash ;
-
- rmtree $home if -e $home ;
- ok 7, mkdir($home, 0777) ;
- ok 8, my $env = new BerkeleyDB::Env -Home => $home,
- -Flags => DB_CREATE|DB_INIT_TXN|
- DB_INIT_MPOOL|DB_INIT_LOCK ;
-
- ok 9, my $db1 = tie %hash, 'BerkeleyDB::Hash', -Filename => $Dfile,
- -Flags => DB_CREATE ,
- -Env => $env;
-
- eval { $env->db_appexit() ; } ;
- ok 10, $@ =~ /BerkeleyDB Aborting: attempted to close an environment with 1 open database/ ;
- #print "[$@]\n" ;
-
- undef $db1 ;
- untie %hash ;
- undef $env ;
- rmtree $home if -e $home ;
-}
-
-{
- # closing a transaction & a database
- my $lex = new LexFile $Dfile ;
- my %hash ;
- my $status ;
-
- rmtree $home if -e $home ;
- ok 11, mkdir($home, 0777) ;
- ok 12, my $env = new BerkeleyDB::Env -Home => $home,
- -Flags => DB_CREATE|DB_INIT_TXN|
- DB_INIT_MPOOL|DB_INIT_LOCK ;
-
- ok 13, my $txn = $env->txn_begin() ;
- ok 14, my $db = tie %hash, 'BerkeleyDB::Hash', -Filename => $Dfile,
- -Flags => DB_CREATE ,
- -Env => $env,
- -Txn => $txn ;
-
- ok 15, $txn->txn_commit() == 0 ;
- eval { $status = $db->db_close() ; } ;
- ok 16, $status == 0 ;
- ok 17, $@ eq "" ;
- eval { $status = $env->db_appexit() ; } ;
- ok 18, $status == 0 ;
- ok 19, $@ eq "" ;
- #print "[$@]\n" ;
-}
-
-{
- # closing a database with an open transaction
- my $lex = new LexFile $Dfile ;
- my %hash ;
-
- rmtree $home if -e $home ;
- ok 20, mkdir($home, 0777) ;
- ok 21, my $env = new BerkeleyDB::Env -Home => $home,
- -Flags => DB_CREATE|DB_INIT_TXN|
- DB_INIT_MPOOL|DB_INIT_LOCK ;
-
- ok 22, my $txn = $env->txn_begin() ;
- ok 23, my $db = tie %hash, 'BerkeleyDB::Hash', -Filename => $Dfile,
- -Flags => DB_CREATE ,
- -Env => $env,
- -Txn => $txn ;
-
- eval { $db->db_close() ; } ;
- ok 24, $@ =~ /BerkeleyDB Aborting: attempted to close a database while a transaction was still open at/ ;
- #print "[$@]\n" ;
-}
-
-{
- # closing a cursor & a database
- my $lex = new LexFile $Dfile ;
- my %hash ;
- my $status ;
- ok 25, my $db = tie %hash, 'BerkeleyDB::Hash', -Filename => $Dfile,
- -Flags => DB_CREATE ;
- ok 26, my $cursor = $db->db_cursor() ;
- ok 27, $cursor->c_close() == 0 ;
- eval { $status = $db->db_close() ; } ;
- ok 28, $status == 0 ;
- ok 29, $@ eq "" ;
- #print "[$@]\n" ;
- rmtree $home if -e $home ;
-}
-
-{
- # closing a database with an open cursor
- my $lex = new LexFile $Dfile ;
- my %hash ;
- ok 30, my $db = tie %hash, 'BerkeleyDB::Hash', -Filename => $Dfile,
- -Flags => DB_CREATE ;
- ok 31, my $cursor = $db->db_cursor() ;
- eval { $db->db_close() ; } ;
- ok 32, $@ =~ /\QBerkeleyDB Aborting: attempted to close a database with 1 open cursor(s) at/;
- #print "[$@]\n" ;
- rmtree $home if -e $home ;
-}
-
-{
- # closing a transaction & a cursor
- my $lex = new LexFile $Dfile ;
- my %hash ;
- my $status ;
-
- rmtree $home if -e $home ;
- ok 33, mkdir($home, 0777) ;
- ok 34, my $env = new BerkeleyDB::Env -Home => $home,
- -Flags => DB_CREATE|DB_INIT_TXN|
- DB_INIT_MPOOL|DB_INIT_LOCK ;
- ok 35, my $txn = $env->txn_begin() ;
- ok 36, my $db = tie %hash, 'BerkeleyDB::Hash', -Filename => $Dfile,
- -Flags => DB_CREATE ,
- -Env => $env,
- -Txn => $txn ;
- ok 37, my $cursor = $db->db_cursor() ;
- eval { $status = $cursor->c_close() ; } ;
- ok 38, $status == 0 ;
- ok 39, ($status = $txn->txn_commit()) == 0 ;
- ok 40, $@ eq "" ;
- eval { $status = $db->db_close() ; } ;
- ok 41, $status == 0 ;
- ok 42, $@ eq "" ;
- eval { $status = $env->db_appexit() ; } ;
- ok 43, $status == 0 ;
- ok 44, $@ eq "" ;
- #print "[$@]\n" ;
- rmtree $home if -e $home ;
-}
-
diff --git a/db/perl.BerkeleyDB/t/subdb.t b/db/perl.BerkeleyDB/t/subdb.t
deleted file mode 100644
index 290e5d691..000000000
--- a/db/perl.BerkeleyDB/t/subdb.t
+++ /dev/null
@@ -1,296 +0,0 @@
-#!./perl -w
-
-use strict ;
-
-BEGIN {
- unless(grep /blib/, @INC) {
- chdir 't' if -d 't';
- @INC = '../lib' if -d '../lib';
- }
-}
-
-use BerkeleyDB;
-use File::Path qw(rmtree);
-
-BEGIN
-{
- if ($BerkeleyDB::db_version < 3) {
- print "1..0 # Skipping test, this needs Berkeley DB 3.x or better\n" ;
- exit 0 ;
- }
-}
-
-print "1..43\n";
-
-my %DB_errors = (
- 'DB_INCOMPLETE' => "DB_INCOMPLETE: Sync was unable to complete",
- 'DB_KEYEMPTY' => "DB_KEYEMPTY: Non-existent key/data pair",
- 'DB_KEYEXIST' => "DB_KEYEXIST: Key/data pair already exists",
- 'DB_LOCK_DEADLOCK' => "DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock",
- 'DB_LOCK_NOTGRANTED' => "DB_LOCK_NOTGRANTED: Lock not granted",
- 'DB_NOTFOUND' => "DB_NOTFOUND: No matching key/data pair found",
- 'DB_OLD_VERSION' => "DB_OLDVERSION: Database requires a version upgrade",
- 'DB_RUNRECOVERY' => "DB_RUNRECOVERY: Fatal error, run database recovery",
- ) ;
-
-{
- package LexFile ;
-
- sub new
- {
- my $self = shift ;
- unlink @_ ;
- bless [ @_ ], $self ;
- }
-
- sub DESTROY
- {
- my $self = shift ;
- unlink @{ $self } ;
- }
-}
-
-
-sub ok
-{
- my $no = shift ;
- my $result = shift ;
-
- print "not " unless $result ;
- print "ok $no\n" ;
-}
-
-sub addData
-{
- my $db = shift ;
- my @data = @_ ;
- die "addData odd data\n" unless @data /2 != 0 ;
- my ($k, $v) ;
- my $ret = 0 ;
- while (@data) {
- $k = shift @data ;
- $v = shift @data ;
- $ret += $db->db_put($k, $v) ;
- }
-
- return ($ret == 0) ;
-}
-
-my $Dfile = "dbhash.tmp";
-my $Dfile2 = "dbhash2.tmp";
-my $Dfile3 = "dbhash3.tmp";
-unlink $Dfile;
-
-umask(0) ;
-
-# Berkeley DB 3.x specific functionality
-
-# Check for invalid parameters
-{
- # Check for invalid parameters
- my $db ;
- eval ' BerkeleyDB::db_remove -Stupid => 3 ; ' ;
- ok 1, $@ =~ /unknown key value\(s\) Stupid/ ;
-
- eval ' BerkeleyDB::db_remove -Bad => 2, -Filename => "fred", -Stupid => 3; ' ;
- ok 2, $@ =~ /unknown key value\(s\) (Bad |Stupid ){2}/ ;
-
- eval ' BerkeleyDB::db_remove -Filename => "a", -Env => 2 ' ;
- ok 3, $@ =~ /^Env not of type BerkeleyDB::Env/ ;
-
- eval ' BerkeleyDB::db_remove -Subname => "a"' ;
- ok 4, $@ =~ /^Must specify a filename/ ;
-
- my $obj = bless [], "main" ;
- eval ' BerkeleyDB::db_remove -Filename => "x", -Env => $obj ' ;
- ok 5, $@ =~ /^Env not of type BerkeleyDB::Env/ ;
-}
-
-{
- # subdatabases
-
- # opening a subdatabse in an exsiting database that doesn't have
- # subdatabases at all should fail
-
- my $lex = new LexFile $Dfile ;
-
- ok 6, my $db = new BerkeleyDB::Hash -Filename => $Dfile,
- -Flags => DB_CREATE ;
-
- # Add a k/v pair
- my %data = qw(
- red sky
- blue sea
- black heart
- yellow belley
- green grass
- ) ;
-
- ok 7, addData($db, %data) ;
-
- undef $db ;
-
- $db = new BerkeleyDB::Hash -Filename => $Dfile,
- -Subname => "fred" ;
- ok 8, ! $db ;
-
- ok 9, -e $Dfile ;
- ok 10, ! BerkeleyDB::db_remove(-Filename => $Dfile) ;
-}
-
-{
- # subdatabases
-
- # opening a subdatabse in an exsiting database that does have
- # subdatabases at all, but not this one
-
- my $lex = new LexFile $Dfile ;
-
- ok 11, my $db = new BerkeleyDB::Hash -Filename => $Dfile,
- -Subname => "fred" ,
- -Flags => DB_CREATE ;
-
- # Add a k/v pair
- my %data = qw(
- red sky
- blue sea
- black heart
- yellow belley
- green grass
- ) ;
-
- ok 12, addData($db, %data) ;
-
- undef $db ;
-
- $db = new BerkeleyDB::Hash -Filename => $Dfile,
- -Subname => "joe" ;
-
- ok 13, !$db ;
-
-}
-
-{
- # subdatabases
-
- my $lex = new LexFile $Dfile ;
-
- ok 14, my $db = new BerkeleyDB::Hash -Filename => $Dfile,
- -Subname => "fred" ,
- -Flags => DB_CREATE ;
-
- # Add a k/v pair
- my %data = qw(
- red sky
- blue sea
- black heart
- yellow belley
- green grass
- ) ;
-
- ok 15, addData($db, %data) ;
-
- undef $db ;
-
- ok 16, $db = new BerkeleyDB::Hash -Filename => $Dfile,
- -Subname => "fred" ;
-
- ok 17, my $cursor = $db->db_cursor() ;
- my ($k, $v) = ("", "") ;
- my $status ;
- while (($status = $cursor->c_get($k, $v, DB_NEXT)) == 0) {
- if ($data{$k} eq $v) {
- delete $data{$k} ;
- }
- }
- ok 18, $status == DB_NOTFOUND ;
- ok 19, keys %data == 0 ;
-}
-
-{
- # subdatabases
-
- # opening a database with multiple subdatabases - handle should be a list
- # of the subdatabase names
-
- my $lex = new LexFile $Dfile ;
-
- ok 20, my $db1 = new BerkeleyDB::Hash -Filename => $Dfile,
- -Subname => "fred" ,
- -Flags => DB_CREATE ;
-
- ok 21, my $db2 = new BerkeleyDB::Btree -Filename => $Dfile,
- -Subname => "joe" ,
- -Flags => DB_CREATE ;
-
- # Add a k/v pair
- my %data = qw(
- red sky
- blue sea
- black heart
- yellow belley
- green grass
- ) ;
-
- ok 22, addData($db1, %data) ;
- ok 23, addData($db2, %data) ;
-
- undef $db1 ;
- undef $db2 ;
-
- ok 24, my $db = new BerkeleyDB::Unknown -Filename => $Dfile ,
- -Flags => DB_RDONLY ;
-
- #my $type = $db->type() ; print "type $type\n" ;
- ok 25, my $cursor = $db->db_cursor() ;
- my ($k, $v) = ("", "") ;
- my $status ;
- my @dbnames = () ;
- while (($status = $cursor->c_get($k, $v, DB_NEXT)) == 0) {
- push @dbnames, $k ;
- }
- ok 26, $status == DB_NOTFOUND ;
- ok 27, join(",", sort @dbnames) eq "fred,joe" ;
- undef $db ;
-
- ok 28, BerkeleyDB::db_remove(-Filename => $Dfile, -Subname => "harry") != 0;
- ok 29, BerkeleyDB::db_remove(-Filename => $Dfile, -Subname => "fred") == 0 ;
-
- # should only be one subdatabase
- ok 30, $db = new BerkeleyDB::Unknown -Filename => $Dfile ,
- -Flags => DB_RDONLY ;
-
- ok 31, $cursor = $db->db_cursor() ;
- @dbnames = () ;
- while (($status = $cursor->c_get($k, $v, DB_NEXT)) == 0) {
- push @dbnames, $k ;
- }
- ok 32, $status == DB_NOTFOUND ;
- ok 33, join(",", sort @dbnames) eq "joe" ;
- undef $db ;
-
- # can't delete an already deleted subdatabase
- ok 34, BerkeleyDB::db_remove(-Filename => $Dfile, -Subname => "fred") != 0;
-
- ok 35, BerkeleyDB::db_remove(-Filename => $Dfile, -Subname => "joe") == 0 ;
-
- # should only be one subdatabase
- ok 36, $db = new BerkeleyDB::Unknown -Filename => $Dfile ,
- -Flags => DB_RDONLY ;
-
- ok 37, $cursor = $db->db_cursor() ;
- @dbnames = () ;
- while (($status = $cursor->c_get($k, $v, DB_NEXT)) == 0) {
- push @dbnames, $k ;
- }
- ok 38, $status == DB_NOTFOUND ;
- ok 39, @dbnames == 0 ;
- undef $db ;
-
- ok 40, -e $Dfile ;
- ok 41, BerkeleyDB::db_remove(-Filename => $Dfile) == 0 ;
- ok 42, ! -e $Dfile ;
- ok 43, BerkeleyDB::db_remove(-Filename => $Dfile) != 0 ;
-}
-
-# db_remove with env
diff --git a/db/perl.BerkeleyDB/t/txn.t b/db/perl.BerkeleyDB/t/txn.t
deleted file mode 100644
index 6bef1887e..000000000
--- a/db/perl.BerkeleyDB/t/txn.t
+++ /dev/null
@@ -1,354 +0,0 @@
-#!./perl -w
-
-use strict ;
-
-BEGIN {
- unless(grep /blib/, @INC) {
- chdir 't' if -d 't';
- @INC = '../lib' if -d '../lib';
- }
-}
-
-use BerkeleyDB;
-use File::Path qw(rmtree);
-
-print "1..50\n";
-
-
-{
- package LexFile ;
-
- sub new
- {
- my $self = shift ;
- unlink @_ ;
- bless [ @_ ], $self ;
- }
-
- sub DESTROY
- {
- my $self = shift ;
- unlink @{ $self } ;
- }
-}
-
-sub ok
-{
- my $no = shift ;
- my $result = shift ;
-
- print "not " unless $result ;
- print "ok $no\n" ;
-}
-
-sub docat
-{
- my $file = shift;
- local $/ = undef;
- open(CAT,$file) || die "Cannot open $file:$!";
- my $result = <CAT>;
- close(CAT);
- return $result;
-}
-
-
-my $Dfile = "dbhash.tmp";
-
-umask(0);
-
-{
- # error cases
-
- my $lex = new LexFile $Dfile ;
- my %hash ;
- my $value ;
-
- my $home = "./fred" ;
- rmtree $home if -e $home ;
- ok 1, mkdir($home, 0777) ;
- ok 2, my $env = new BerkeleyDB::Env -Home => $home,
- -Flags => DB_CREATE| DB_INIT_MPOOL;
- eval { $env->txn_begin() ; } ;
- ok 3, $@ =~ /^BerkeleyDB Aborting: Transaction Manager not enabled at/ ;
-
- eval { my $txn_mgr = $env->TxnMgr() ; } ;
- ok 4, $@ =~ /^BerkeleyDB Aborting: Transaction Manager not enabled at/ ;
- undef $env ;
- rmtree $home ;
-
-}
-
-{
- # transaction - abort works
-
- my $lex = new LexFile $Dfile ;
- my %hash ;
- my $value ;
-
- my $home = "./fred" ;
- rmtree $home if -e $home ;
- ok 5, mkdir($home, 0777) ;
- ok 6, my $env = new BerkeleyDB::Env -Home => $home,
- -Flags => DB_CREATE|DB_INIT_TXN|
- DB_INIT_MPOOL|DB_INIT_LOCK ;
- ok 7, my $txn = $env->txn_begin() ;
- ok 8, my $db1 = tie %hash, 'BerkeleyDB::Hash', -Filename => $Dfile,
- -Flags => DB_CREATE ,
- -Env => $env,
- -Txn => $txn ;
-
-
- # create some data
- my %data = (
- "red" => "boat",
- "green" => "house",
- "blue" => "sea",
- ) ;
-
- my $ret = 0 ;
- while (my ($k, $v) = each %data) {
- $ret += $db1->db_put($k, $v) ;
- }
- ok 9, $ret == 0 ;
-
- # should be able to see all the records
-
- ok 10, my $cursor = $db1->db_cursor() ;
- my ($k, $v) = ("", "") ;
- my $count = 0 ;
- # sequence forwards
- while ($cursor->c_get($k, $v, DB_NEXT) == 0) {
- ++ $count ;
- }
- ok 11, $count == 3 ;
- undef $cursor ;
-
- # now abort the transaction
- ok 12, $txn->txn_abort() == 0 ;
-
- # there shouldn't be any records in the database
- $count = 0 ;
- # sequence forwards
- ok 13, $cursor = $db1->db_cursor() ;
- while ($cursor->c_get($k, $v, DB_NEXT) == 0) {
- ++ $count ;
- }
- ok 14, $count == 0 ;
-
- my $stat = $env->txn_stat() ;
- ok 15, $stat->{'st_naborts'} == 1 ;
-
- undef $txn ;
- undef $cursor ;
- undef $db1 ;
- undef $env ;
- untie %hash ;
- rmtree $home ;
-}
-
-{
- # transaction - abort works via txnmgr
-
- my $lex = new LexFile $Dfile ;
- my %hash ;
- my $value ;
-
- my $home = "./fred" ;
- rmtree $home if -e $home ;
- ok 16, mkdir($home, 0777) ;
- ok 17, my $env = new BerkeleyDB::Env -Home => $home,
- -Flags => DB_CREATE|DB_INIT_TXN|
- DB_INIT_MPOOL|DB_INIT_LOCK ;
- ok 18, my $txn_mgr = $env->TxnMgr() ;
- ok 19, my $txn = $txn_mgr->txn_begin() ;
- ok 20, my $db1 = tie %hash, 'BerkeleyDB::Hash', -Filename => $Dfile,
- -Flags => DB_CREATE ,
- -Env => $env,
- -Txn => $txn ;
-
-
- # create some data
- my %data = (
- "red" => "boat",
- "green" => "house",
- "blue" => "sea",
- ) ;
-
- my $ret = 0 ;
- while (my ($k, $v) = each %data) {
- $ret += $db1->db_put($k, $v) ;
- }
- ok 21, $ret == 0 ;
-
- # should be able to see all the records
-
- ok 22, my $cursor = $db1->db_cursor() ;
- my ($k, $v) = ("", "") ;
- my $count = 0 ;
- # sequence forwards
- while ($cursor->c_get($k, $v, DB_NEXT) == 0) {
- ++ $count ;
- }
- ok 23, $count == 3 ;
- undef $cursor ;
-
- # now abort the transaction
- ok 24, $txn->txn_abort() == 0 ;
-
- # there shouldn't be any records in the database
- $count = 0 ;
- # sequence forwards
- ok 25, $cursor = $db1->db_cursor() ;
- while ($cursor->c_get($k, $v, DB_NEXT) == 0) {
- ++ $count ;
- }
- ok 26, $count == 0 ;
-
- my $stat = $txn_mgr->txn_stat() ;
- ok 27, $stat->{'st_naborts'} == 1 ;
-
- undef $txn ;
- undef $cursor ;
- undef $db1 ;
- undef $txn_mgr ;
- undef $env ;
- untie %hash ;
- rmtree $home ;
-}
-
-{
- # transaction - commit works
-
- my $lex = new LexFile $Dfile ;
- my %hash ;
- my $value ;
-
- my $home = "./fred" ;
- rmtree $home if -e $home ;
- ok 28, mkdir($home, 0777) ;
- ok 29, my $env = new BerkeleyDB::Env -Home => $home,
- -Flags => DB_CREATE|DB_INIT_TXN|
- DB_INIT_MPOOL|DB_INIT_LOCK ;
- ok 30, my $txn = $env->txn_begin() ;
- ok 31, my $db1 = tie %hash, 'BerkeleyDB::Hash', -Filename => $Dfile,
- -Flags => DB_CREATE ,
- -Env => $env,
- -Txn => $txn ;
-
-
- # create some data
- my %data = (
- "red" => "boat",
- "green" => "house",
- "blue" => "sea",
- ) ;
-
- my $ret = 0 ;
- while (my ($k, $v) = each %data) {
- $ret += $db1->db_put($k, $v) ;
- }
- ok 32, $ret == 0 ;
-
- # should be able to see all the records
-
- ok 33, my $cursor = $db1->db_cursor() ;
- my ($k, $v) = ("", "") ;
- my $count = 0 ;
- # sequence forwards
- while ($cursor->c_get($k, $v, DB_NEXT) == 0) {
- ++ $count ;
- }
- ok 34, $count == 3 ;
- undef $cursor ;
-
- # now commit the transaction
- ok 35, $txn->txn_commit() == 0 ;
-
- $count = 0 ;
- # sequence forwards
- ok 36, $cursor = $db1->db_cursor() ;
- while ($cursor->c_get($k, $v, DB_NEXT) == 0) {
- ++ $count ;
- }
- ok 37, $count == 3 ;
-
- my $stat = $env->txn_stat() ;
- ok 38, $stat->{'st_naborts'} == 0 ;
-
- undef $txn ;
- undef $cursor ;
- undef $db1 ;
- undef $env ;
- untie %hash ;
- rmtree $home ;
-}
-
-{
- # transaction - commit works via txnmgr
-
- my $lex = new LexFile $Dfile ;
- my %hash ;
- my $value ;
-
- my $home = "./fred" ;
- rmtree $home if -e $home ;
- ok 39, mkdir($home, 0777) ;
- ok 40, my $env = new BerkeleyDB::Env -Home => $home,
- -Flags => DB_CREATE|DB_INIT_TXN|
- DB_INIT_MPOOL|DB_INIT_LOCK ;
- ok 41, my $txn_mgr = $env->TxnMgr() ;
- ok 42, my $txn = $txn_mgr->txn_begin() ;
- ok 43, my $db1 = tie %hash, 'BerkeleyDB::Hash', -Filename => $Dfile,
- -Flags => DB_CREATE ,
- -Env => $env,
- -Txn => $txn ;
-
-
- # create some data
- my %data = (
- "red" => "boat",
- "green" => "house",
- "blue" => "sea",
- ) ;
-
- my $ret = 0 ;
- while (my ($k, $v) = each %data) {
- $ret += $db1->db_put($k, $v) ;
- }
- ok 44, $ret == 0 ;
-
- # should be able to see all the records
-
- ok 45, my $cursor = $db1->db_cursor() ;
- my ($k, $v) = ("", "") ;
- my $count = 0 ;
- # sequence forwards
- while ($cursor->c_get($k, $v, DB_NEXT) == 0) {
- ++ $count ;
- }
- ok 46, $count == 3 ;
- undef $cursor ;
-
- # now commit the transaction
- ok 47, $txn->txn_commit() == 0 ;
-
- $count = 0 ;
- # sequence forwards
- ok 48, $cursor = $db1->db_cursor() ;
- while ($cursor->c_get($k, $v, DB_NEXT) == 0) {
- ++ $count ;
- }
- ok 49, $count == 3 ;
-
- my $stat = $txn_mgr->txn_stat() ;
- ok 50, $stat->{'st_naborts'} == 0 ;
-
- undef $txn ;
- undef $cursor ;
- undef $db1 ;
- undef $txn_mgr ;
- undef $env ;
- untie %hash ;
- rmtree $home ;
-}
-
diff --git a/db/perl.BerkeleyDB/t/unknown.t b/db/perl.BerkeleyDB/t/unknown.t
deleted file mode 100644
index e72021f0b..000000000
--- a/db/perl.BerkeleyDB/t/unknown.t
+++ /dev/null
@@ -1,212 +0,0 @@
-#!./perl -w
-
-# ID: %I%, %G%
-
-use strict ;
-
-BEGIN {
- unless(grep /blib/, @INC) {
- chdir 't' if -d 't';
- @INC = '../lib' if -d '../lib';
- }
-}
-
-use BerkeleyDB;
-use File::Path qw(rmtree);
-
-print "1..41\n";
-
-{
- package LexFile ;
-
- sub new
- {
- my $self = shift ;
- unlink @_ ;
- bless [ @_ ], $self ;
- }
-
- sub DESTROY
- {
- my $self = shift ;
- unlink @{ $self } ;
- }
-}
-
-
-sub ok
-{
- my $no = shift ;
- my $result = shift ;
-
- print "not " unless $result ;
- print "ok $no\n" ;
-}
-
-sub writeFile
-{
- my $name = shift ;
- open(FH, ">$name") or return 0 ;
- print FH @_ ;
- close FH ;
- return 1 ;
-}
-
-my $Dfile = "dbhash.tmp";
-unlink $Dfile;
-
-umask(0) ;
-
-
-# Check for invalid parameters
-{
- # Check for invalid parameters
- my $db ;
- eval ' $db = new BerkeleyDB::Unknown -Stupid => 3 ; ' ;
- ok 1, $@ =~ /unknown key value\(s\) Stupid/ ;
-
- eval ' $db = new BerkeleyDB::Unknown -Bad => 2, -Mode => 0345, -Stupid => 3; ' ;
- ok 2, $@ =~ /unknown key value\(s\) (Bad |Stupid ){2}/ ;
-
- eval ' $db = new BerkeleyDB::Unknown -Env => 2 ' ;
- ok 3, $@ =~ /^Env not of type BerkeleyDB::Env/ ;
-
- eval ' $db = new BerkeleyDB::Unknown -Txn => "fred" ' ;
- ok 4, $@ =~ /^Txn not of type BerkeleyDB::Txn/ ;
-
- my $obj = bless [], "main" ;
- eval ' $db = new BerkeleyDB::Unknown -Env => $obj ' ;
- ok 5, $@ =~ /^Env not of type BerkeleyDB::Env/ ;
-}
-
-# check the interface to a rubbish database
-{
- # first an empty file
- my $lex = new LexFile $Dfile ;
- ok 6, writeFile($Dfile, "") ;
-
- ok 7, ! (new BerkeleyDB::Unknown -Filename => $Dfile);
-
- # now a non-database file
- writeFile($Dfile, "\x2af6") ;
- ok 8, ! (new BerkeleyDB::Unknown -Filename => $Dfile);
-}
-
-# check the interface to a Hash database
-
-{
- my $lex = new LexFile $Dfile ;
-
- # create a hash database
- ok 9, my $db = new BerkeleyDB::Hash -Filename => $Dfile,
- -Flags => DB_CREATE ;
-
- # Add a few k/v pairs
- my $value ;
- my $status ;
- ok 10, $db->db_put("some key", "some value") == 0 ;
- ok 11, $db->db_put("key", "value") == 0 ;
-
- # close the database
- undef $db ;
-
- # now open it with Unknown
- ok 12, $db = new BerkeleyDB::Unknown -Filename => $Dfile;
-
- ok 13, $db->type() == DB_HASH ;
- ok 14, $db->db_get("some key", $value) == 0 ;
- ok 15, $value eq "some value" ;
- ok 16, $db->db_get("key", $value) == 0 ;
- ok 17, $value eq "value" ;
-
- my @array ;
- eval { $db->Tie(\@array)} ;
- ok 18, $@ =~ /^Tie needs a reference to a hash/ ;
-
- my %hash ;
- $db->Tie(\%hash) ;
- ok 19, $hash{"some key"} eq "some value" ;
-
-}
-
-# check the interface to a Btree database
-
-{
- my $lex = new LexFile $Dfile ;
-
- # create a hash database
- ok 20, my $db = new BerkeleyDB::Btree -Filename => $Dfile,
- -Flags => DB_CREATE ;
-
- # Add a few k/v pairs
- my $value ;
- my $status ;
- ok 21, $db->db_put("some key", "some value") == 0 ;
- ok 22, $db->db_put("key", "value") == 0 ;
-
- # close the database
- undef $db ;
-
- # now open it with Unknown
- # create a hash database
- ok 23, $db = new BerkeleyDB::Unknown -Filename => $Dfile;
-
- ok 24, $db->type() == DB_BTREE ;
- ok 25, $db->db_get("some key", $value) == 0 ;
- ok 26, $value eq "some value" ;
- ok 27, $db->db_get("key", $value) == 0 ;
- ok 28, $value eq "value" ;
-
-
- my @array ;
- eval { $db->Tie(\@array)} ;
- ok 29, $@ =~ /^Tie needs a reference to a hash/ ;
-
- my %hash ;
- $db->Tie(\%hash) ;
- ok 30, $hash{"some key"} eq "some value" ;
-
-
-}
-
-# check the interface to a Recno database
-
-{
- my $lex = new LexFile $Dfile ;
-
- # create a recno database
- ok 31, my $db = new BerkeleyDB::Recno -Filename => $Dfile,
- -Flags => DB_CREATE ;
-
- # Add a few k/v pairs
- my $value ;
- my $status ;
- ok 32, $db->db_put(0, "some value") == 0 ;
- ok 33, $db->db_put(1, "value") == 0 ;
-
- # close the database
- undef $db ;
-
- # now open it with Unknown
- # create a hash database
- ok 34, $db = new BerkeleyDB::Unknown -Filename => $Dfile;
-
- ok 35, $db->type() == DB_RECNO ;
- ok 36, $db->db_get(0, $value) == 0 ;
- ok 37, $value eq "some value" ;
- ok 38, $db->db_get(1, $value) == 0 ;
- ok 39, $value eq "value" ;
-
-
- my %hash ;
- eval { $db->Tie(\%hash)} ;
- ok 40, $@ =~ /^Tie needs a reference to an array/ ;
-
- my @array ;
- $db->Tie(\@array) ;
- ok 41, $array[1] eq "value" ;
-
-
-}
-
-# check i/f to text
diff --git a/db/perl.BerkeleyDB/typemap b/db/perl.BerkeleyDB/typemap
deleted file mode 100644
index d6c4c7647..000000000
--- a/db/perl.BerkeleyDB/typemap
+++ /dev/null
@@ -1,275 +0,0 @@
-# typemap for Perl 5 interface to Berkeley DB version 2 & 3
-#
-# SCCS: %I%, %G%
-#
-# written by Paul Marquess <Paul.Marquess@btinternet.com>
-#
-#################################### DB SECTION
-#
-#
-
-void * T_PV
-u_int T_U_INT
-u_int32_t T_U_INT
-const char * T_PV_NULL
-PV_or_NULL T_PV_NULL
-IO_or_NULL T_IO_NULL
-
-AV * T_AV
-
-BerkeleyDB T_PTROBJ
-BerkeleyDB::Common T_PTROBJ_AV
-BerkeleyDB::Hash T_PTROBJ_AV
-BerkeleyDB::Btree T_PTROBJ_AV
-BerkeleyDB::Recno T_PTROBJ_AV
-BerkeleyDB::Queue T_PTROBJ_AV
-BerkeleyDB::Cursor T_PTROBJ_AV
-BerkeleyDB::TxnMgr T_PTROBJ_AV
-BerkeleyDB::Txn T_PTROBJ_AV
-BerkeleyDB::Log T_PTROBJ_AV
-BerkeleyDB::Lock T_PTROBJ_AV
-BerkeleyDB::Env T_PTROBJ_AV
-
-BerkeleyDB::Raw T_RAW
-BerkeleyDB::Common::Raw T_RAW
-BerkeleyDB::Hash::Raw T_RAW
-BerkeleyDB::Btree::Raw T_RAW
-BerkeleyDB::Recno::Raw T_RAW
-BerkeleyDB::Queue::Raw T_RAW
-BerkeleyDB::Cursor::Raw T_RAW
-BerkeleyDB::TxnMgr::Raw T_RAW
-BerkeleyDB::Txn::Raw T_RAW
-BerkeleyDB::Log::Raw T_RAW
-BerkeleyDB::Lock::Raw T_RAW
-BerkeleyDB::Env::Raw T_RAW
-
-BerkeleyDB::Env::Inner T_INNER
-BerkeleyDB::Common::Inner T_INNER
-BerkeleyDB::Txn::Inner T_INNER
-BerkeleyDB::TxnMgr::Inner T_INNER
-# BerkeleyDB__Env T_PTR
-DBT T_dbtdatum
-DBT_OPT T_dbtdatum_opt
-DBT_B T_dbtdatum_btree
-DBTKEY T_dbtkeydatum
-DBTKEY_B T_dbtkeydatum_btree
-DBTYPE T_U_INT
-DualType T_DUAL
-BerkeleyDB_type * T_IV
-BerkeleyDB_ENV_type * T_IV
-BerkeleyDB_TxnMgr_type * T_IV
-BerkeleyDB_Txn_type * T_IV
-BerkeleyDB__Cursor_type * T_IV
-DB * T_IV
-
-INPUT
-
-T_AV
- if (SvROK($arg) && SvTYPE(SvRV($arg)) == SVt_PVAV)
- /* if (sv_isa($arg, \"${ntype}\")) */
- $var = (AV*)SvRV($arg);
- else
- croak(\"$var is not an array reference\")
-
-T_RAW
- $var = ($type)SvIV($arg)
-
-T_U_INT
- $var = SvUV($arg)
-
-T_SV_REF_NULL
- if ($arg == &PL_sv_undef)
- $var = NULL ;
- else if (sv_derived_from($arg, \"${ntype}\")) {
- IV tmp = SvIV((SV *)GetInternalObject($arg));
- $var = ($type) tmp;
- }
- else
- croak(\"$var is not of type ${ntype}\")
-
-T_HV_REF_NULL
- if ($arg == &PL_sv_undef)
- $var = NULL ;
- else if (sv_derived_from($arg, \"${ntype}\")) {
- HV * hv = (HV *)GetInternalObject($arg);
- SV ** svp = hv_fetch(hv, \"db\", 2, FALSE);
- IV tmp = SvIV(*svp);
- $var = ($type) tmp;
- }
- else
- croak(\"$var is not of type ${ntype}\")
-
-T_HV_REF
- if (sv_derived_from($arg, \"${ntype}\")) {
- HV * hv = (HV *)GetInternalObject($arg);
- SV ** svp = hv_fetch(hv, \"db\", 2, FALSE);
- IV tmp = SvIV(*svp);
- $var = ($type) tmp;
- }
- else
- croak(\"$var is not of type ${ntype}\")
-
-
-T_P_REF
- if (sv_derived_from($arg, \"${ntype}\")) {
- IV tmp = SvIV((SV*)SvRV($arg));
- $var = ($type) tmp;
- }
- else
- croak(\"$var is not of type ${ntype}\")
-
-
-T_INNER
- {
- HV * hv = (HV *)SvRV($arg);
- SV ** svp = hv_fetch(hv, \"db\", 2, FALSE);
- IV tmp = SvIV(*svp);
- $var = ($type) tmp;
- }
-
-T_PV_NULL
- if ($arg == &PL_sv_undef)
- $var = NULL ;
- else {
- $var = ($type)SvPV($arg,PL_na) ;
- if (PL_na == 0)
- $var = NULL ;
- }
-
-T_IO_NULL
- if ($arg == &PL_sv_undef)
- $var = NULL ;
- else
- $var = IoOFP(sv_2io($arg))
-
-T_PTROBJ_NULL
- if ($arg == &PL_sv_undef)
- $var = NULL ;
- else if (sv_derived_from($arg, \"${ntype}\")) {
- IV tmp = SvIV((SV*)SvRV($arg));
- $var = ($type) tmp;
- }
- else
- croak(\"$var is not of type ${ntype}\")
-
-T_PTROBJ_SELF
- if ($arg == &PL_sv_undef)
- $var = NULL ;
- else if (sv_derived_from($arg, \"${ntype}\")) {
- IV tmp = SvIV((SV*)SvRV($arg));
- $var = ($type) tmp;
- }
- else
- croak(\"$var is not of type ${ntype}\")
-
-T_PTROBJ_AV
- if ($arg == &PL_sv_undef || $arg == NULL)
- $var = NULL ;
- else if (sv_derived_from($arg, \"${ntype}\")) {
- IV tmp = getInnerObject($arg) ;
- $var = ($type) tmp;
- }
- else
- croak(\"$var is not of type ${ntype}\")
-
-T_dbtkeydatum
- ckFilter($arg, filter_store_key, \"filter_store_key\");
- DBT_clear($var) ;
- if (db->recno_or_queue) {
- Value = GetRecnoKey(db, SvIV($arg)) ;
- $var.data = & Value;
- $var.size = (int)sizeof(db_recno_t);
- }
- else {
- $var.data = SvPV($arg, PL_na);
- $var.size = (int)PL_na;
- }
-
-T_dbtkeydatum_btree
- ckFilter($arg, filter_store_key, \"filter_store_key\");
- DBT_clear($var) ;
- if (db->recno_or_queue ||
- (db->type == DB_BTREE && flagSet(DB_SET_RECNO))) {
- Value = GetRecnoKey(db, SvIV($arg)) ;
- $var.data = & Value;
- $var.size = (int)sizeof(db_recno_t);
- }
- else {
- $var.data = SvPV($arg, PL_na);
- $var.size = (int)PL_na;
- }
-
-T_dbtdatum
- ckFilter($arg, filter_store_value, \"filter_store_value\");
- DBT_clear($var) ;
- $var.data = SvPV($arg, PL_na);
- $var.size = (int)PL_na;
- $var.flags = db->partial ;
- $var.dlen = db->dlen ;
- $var.doff = db->doff ;
-
-T_dbtdatum_opt
- DBT_clear($var) ;
- if (flagSet(DB_GET_BOTH)) {
- ckFilter($arg, filter_store_value, \"filter_store_value\");
- $var.data = SvPV($arg, PL_na);
- $var.size = (int)PL_na;
- $var.flags = db->partial ;
- $var.dlen = db->dlen ;
- $var.doff = db->doff ;
- }
-
-T_dbtdatum_btree
- DBT_clear($var) ;
- if (flagSet(DB_GET_BOTH)) {
- ckFilter($arg, filter_store_value, \"filter_store_value\");
- $var.data = SvPV($arg, PL_na);
- $var.size = (int)PL_na;
- $var.flags = db->partial ;
- $var.dlen = db->dlen ;
- $var.doff = db->doff ;
- }
-
-
-OUTPUT
-
-T_RAW
- sv_setiv($arg, (IV)$var);
-
-T_SV_REF_NULL
- sv_setiv($arg, (IV)$var);
-
-T_HV_REF_NULL
- sv_setiv($arg, (IV)$var);
-
-T_HV_REF
- sv_setiv($arg, (IV)$var);
-
-T_P_REF
- sv_setiv($arg, (IV)$var);
-
-T_DUAL
- setDUALerrno($arg, $var) ;
-
-T_U_INT
- sv_setuv($arg, (UV)$var);
-
-T_PV_NULL
- sv_setpv((SV*)$arg, $var);
-
-T_dbtkeydatum_btree
- OutputKey_B($arg, $var)
-T_dbtkeydatum
- OutputKey($arg, $var)
-T_dbtdatum
- OutputValue($arg, $var)
-T_dbtdatum_opt
- OutputValue($arg, $var)
-T_dbtdatum_btree
- OutputValue_B($arg, $var)
-
-T_PTROBJ_NULL
- sv_setref_pv($arg, \"${ntype}\", (void*)$var);
-
-T_PTROBJ_SELF
- sv_setref_pv($arg, self, (void*)$var);
diff --git a/db/perl.DB_File/Changes b/db/perl.DB_File/Changes
deleted file mode 100644
index b8684cac3..000000000
--- a/db/perl.DB_File/Changes
+++ /dev/null
@@ -1,343 +0,0 @@
-
-0.1
-
- First Release.
-
-0.2
-
- 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.
-
-0.3
-
- Added prototype support for multiple btree compare callbacks.
-
-1.0
-
- DB_File has been in use for over a year. To reflect that, the
- version number has been incremented to 1.0.
-
- Added complete support for multiple concurrent callbacks.
-
- Using the push method on an empty list didn't work properly. This
- has been fixed.
-
-1.01
-
- Fixed a core dump problem with SunOS.
-
- The return value from TIEHASH wasn't set to NULL when dbopen
- returned an error.
-
-1.02
-
- Merged OS/2 specific code into DB_File.xs
-
- Removed some redundant code in DB_File.xs.
-
- Documentation update.
-
- Allow negative subscripts with RECNO interface.
-
- 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.
-
- Added get_dup method.
-
-1.03
-
- Documentation update.
-
- DB_File now imports the constants (O_RDWR, O_CREAT etc.) from Fcntl
- automatically.
-
- The standard hash function exists is now supported.
-
- 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.04
-
- Minor documentation changes.
-
- Fixed a bug in hash_cb. Patches supplied by Dave Hammen,
- <hammen@gothamcity.jsc.nasa.govt>.
-
- 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.
-
- Reworked part of the test harness to be more locale friendly.
-
-1.05
-
- 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.06
-
- Minor namespace cleanup: Localized PrintBtree.
-
-1.07
-
- Fixed bug with RECNO, where bval wasn't defaulting to "\n".
-
-1.08
-
- Documented operation of bval.
-
-1.09
-
- Minor bug fix in DB_File::HASHINFO, DB_File::RECNOINFO and
- DB_File::BTREEINFO.
-
- Changed default mode to 0666.
-
-1.10
-
- Fixed fd method so that it still returns -1 for in-memory files
- when db 1.86 is used.
-
-1.11
-
- Documented the untie gotcha.
-
-1.12
-
- Documented the incompatibility with version 2 of Berkeley DB.
-
-1.13
-
- Minor changes to DB_FIle.xs and DB_File.pm
-
-1.14
-
- Made it illegal to tie an associative array to a RECNO database and
- an ordinary array to a HASH or BTREE database.
-
-1.15
-
- Patch from Gisle Aas <gisle@aas.no> to suppress "use of undefined
- value" warning with db_get and db_seq.
-
- Patch from Gisle Aas <gisle@aas.no> to make DB_File export only the
- O_* constants from Fcntl.
-
- Removed the DESTROY method from the DB_File::HASHINFO module.
-
- 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.
-
-
-1.16
-
- A harmless looking tab was causing Makefile.PL to fail on AIX 3.2.5
-
- 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.50
-
- DB_File can now build with either DB 1.x or 2.x, but not both at
- the same time.
-
-1.51
-
- Fixed the test harness so that it doesn't expect DB_File to have
- been installed by the main Perl build.
-
-
- Fixed a bug in mapping 1.x O_RDONLY flag to 2.x DB_RDONLY equivalent
-
-1.52
-
- Patch from Nick Ing-Simmons now allows DB_File to build on NT.
- Merged 1.15 patch.
-
-1.53
-
- Added DB_RENUMBER to flags for recno.
-
-1.54
-
- Fixed a small bug in the test harness when run under win32
- The emulation of fd when useing DB 2.x was busted.
-
-1.55
- Merged 1.16 changes.
-
-1.56
- Documented the Solaris 2.5 mutex bug
-
-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.58
- Tied Array support was enhanced in Perl 5.004_57. DB_File now
- supports PUSH,POP,SHIFT,UNSHIFT & STORESIZE.
-
- 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.59
- Updated the license section.
-
- 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.
-
- Added dbinfo to the distribution.
-
-1.60
- Changed the test to check for full tied array support
-
-1.61 19th November 1998
-
- Added a note to README about how to build Berkeley DB 2.x when
- using HP-UX.
- 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
-
- Added hints/dynixptx.pl.
- Fixed typemap -- 1.61 used PL_na instead of na
-
-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.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.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.66 15th March 1999
-
- * Added DBM Filter code
-
-1.67 6th June 1999
-
- * Added DBM Filter documentation to DB_File.pm
-
- * Fixed DBM Filter code to work with 5.004
-
- * 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.68 22nd July 1999
-
- * Merged changes from 5.005_58
-
- * Fixed a bug in R_IBEFORE & R_IAFTER procesing in Berkeley DB
- 2 databases.
-
- * Added some of the examples in the POD into the test harness.
-
-1.69 3rd August 1999
-
- * fixed a bug in push -- DB_APPEND wasn't working properly.
-
- * Fixed the R_SETCURSOR bug introduced in 1.68
-
- * Added a new Perl variable $DB_File::db_ver
-
-1.70 4th August 1999
-
- * Initialise $DB_File::db_ver and $DB_File::db_version with
- GV_ADD|GV_ADDMULT -- bug spotted by Nick Ing-Simmons.
-
- * Added a BOOT check to test for equivalent versions of db.h &
- libdb.a/so.
-
-1.71 7th September 1999
-
- * Fixed a bug that prevented 1.70 from compiling under win32
-
- * Updated to support Berkeley DB 3.x
-
- * Updated dbinfo for Berkeley DB 3.x file formats.
-
-1.72 16th January 2000
-
- * Added hints/sco.pl
-
- * The module will now use XSLoader when it is available. When it
- isn't it will use DynaLoader.
-
- * 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.73 31st May 2000
-
- * Added support in version.c for building with threaded Perl.
-
- * Berkeley DB 3.1 has reenabled support for null keys. The test
- harness has been updated to reflect this.
-
-1.74 10th December 2000
-
- * A "close" call in DB_File.xs needed parenthesised to stop win32 from
- thinking it was one of its macros.
-
- * Updated dbinfo to support Berkeley DB 3.1 file format changes.
-
- * DB_File.pm & the test hasness now use the warnings pragma (when
- available).
-
- * Included Perl core patch 7703 -- size argument for hash_cb is different
- for Berkeley DB 3.x
-
- * Included Perl core patch 7801 -- Give __getBerkeleyDBInfo the ANSI C
- treatment.
-
- * @a = () produced the warning 'Argument "" isn't numeric in entersub'
- This has been fixed. Thanks to Edward Avis for spotting this bug.
-
- * Added note about building under Linux. Included patches.
-
- * 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.75 17th December 2000
-
- * Fixed perl core patch 7703
-
- * 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.
-
- * Updated dbinfo to support Berkeley DB 3.2 file format changes.
-
-
-1.76 15th January 2001
-
- * 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.
-
-
diff --git a/db/perl.DB_File/DB_File.pm b/db/perl.DB_File/DB_File.pm
deleted file mode 100644
index e9b6a40d7..000000000
--- a/db/perl.DB_File/DB_File.pm
+++ /dev/null
@@ -1,2072 +0,0 @@
-# DB_File.pm -- Perl 5 interface to Berkeley DB
-#
-# written by Paul Marquess (Paul.Marquess@btinternet.com)
-# last modified 15th January 2001
-# version 1.76
-#
-# Copyright (c) 1995-2001 Paul Marquess. All rights reserved.
-# This program is free software; you can redistribute it and/or
-# modify it under the same terms as Perl itself.
-
-
-package DB_File::HASHINFO ;
-
-require 5.003 ;
-
-use warnings;
-use strict;
-use Carp;
-require Tie::Hash;
-@DB_File::HASHINFO::ISA = qw(Tie::Hash);
-
-sub new
-{
- my $pkg = shift ;
- my %x ;
- tie %x, $pkg ;
- bless \%x, $pkg ;
-}
-
-
-sub TIEHASH
-{
- my $pkg = shift ;
-
- bless { VALID => { map {$_, 1}
- qw( bsize ffactor nelem cachesize hash lorder)
- },
- GOT => {}
- }, $pkg ;
-}
-
-
-sub FETCH
-{
- my $self = shift ;
- my $key = shift ;
-
- return $self->{GOT}{$key} if exists $self->{VALID}{$key} ;
-
- my $pkg = ref $self ;
- croak "${pkg}::FETCH - Unknown element '$key'" ;
-}
-
-
-sub STORE
-{
- my $self = shift ;
- my $key = shift ;
- my $value = shift ;
-
- if ( exists $self->{VALID}{$key} )
- {
- $self->{GOT}{$key} = $value ;
- return ;
- }
-
- my $pkg = ref $self ;
- croak "${pkg}::STORE - Unknown element '$key'" ;
-}
-
-sub DELETE
-{
- my $self = shift ;
- my $key = shift ;
-
- if ( exists $self->{VALID}{$key} )
- {
- delete $self->{GOT}{$key} ;
- return ;
- }
-
- my $pkg = ref $self ;
- croak "DB_File::HASHINFO::DELETE - Unknown element '$key'" ;
-}
-
-sub EXISTS
-{
- my $self = shift ;
- my $key = shift ;
-
- exists $self->{VALID}{$key} ;
-}
-
-sub NotHere
-{
- my $self = shift ;
- my $method = shift ;
-
- croak ref($self) . " does not define the method ${method}" ;
-}
-
-sub FIRSTKEY { my $self = shift ; $self->NotHere("FIRSTKEY") }
-sub NEXTKEY { my $self = shift ; $self->NotHere("NEXTKEY") }
-sub CLEAR { my $self = shift ; $self->NotHere("CLEAR") }
-
-package DB_File::RECNOINFO ;
-
-use warnings;
-use strict ;
-
-@DB_File::RECNOINFO::ISA = qw(DB_File::HASHINFO) ;
-
-sub TIEHASH
-{
- my $pkg = shift ;
-
- bless { VALID => { map {$_, 1}
- qw( bval cachesize psize flags lorder reclen bfname )
- },
- GOT => {},
- }, $pkg ;
-}
-
-package DB_File::BTREEINFO ;
-
-use warnings;
-use strict ;
-
-@DB_File::BTREEINFO::ISA = qw(DB_File::HASHINFO) ;
-
-sub TIEHASH
-{
- my $pkg = shift ;
-
- bless { VALID => { map {$_, 1}
- qw( flags cachesize maxkeypage minkeypage psize
- compare prefix lorder )
- },
- GOT => {},
- }, $pkg ;
-}
-
-
-package DB_File ;
-
-use warnings;
-use strict;
-use vars qw($VERSION @ISA @EXPORT $AUTOLOAD $DB_BTREE $DB_HASH $DB_RECNO
- $db_version $use_XSLoader
- ) ;
-use Carp;
-
-
-$VERSION = "1.76" ;
-
-#typedef enum { DB_BTREE, DB_HASH, DB_RECNO } DBTYPE;
-$DB_BTREE = new DB_File::BTREEINFO ;
-$DB_HASH = new DB_File::HASHINFO ;
-$DB_RECNO = new DB_File::RECNOINFO ;
-
-require Tie::Hash;
-require Exporter;
-use AutoLoader;
-BEGIN {
- $use_XSLoader = 1 ;
- eval { require XSLoader } ;
-
- if ($@) {
- $use_XSLoader = 0 ;
- require DynaLoader;
- @ISA = qw(DynaLoader);
- }
-}
-
-push @ISA, qw(Tie::Hash Exporter);
-@EXPORT = qw(
- $DB_BTREE $DB_HASH $DB_RECNO
-
- BTREEMAGIC
- BTREEVERSION
- DB_LOCK
- DB_SHMEM
- DB_TXN
- HASHMAGIC
- HASHVERSION
- MAX_PAGE_NUMBER
- MAX_PAGE_OFFSET
- MAX_REC_NUMBER
- RET_ERROR
- RET_SPECIAL
- RET_SUCCESS
- R_CURSOR
- R_DUP
- R_FIRST
- R_FIXEDLEN
- R_IAFTER
- R_IBEFORE
- R_LAST
- R_NEXT
- R_NOKEY
- R_NOOVERWRITE
- R_PREV
- R_RECNOSYNC
- R_SETCURSOR
- R_SNAPSHOT
- __R_UNUSED
-
-);
-
-sub AUTOLOAD {
- my($constname);
- ($constname = $AUTOLOAD) =~ s/.*:://;
- my $val = constant($constname, @_ ? $_[0] : 0);
- if ($! != 0) {
- if ($! =~ /Invalid/ || $!{EINVAL}) {
- $AutoLoader::AUTOLOAD = $AUTOLOAD;
- goto &AutoLoader::AUTOLOAD;
- }
- else {
- my($pack,$file,$line) = caller;
- croak "Your vendor has not defined DB macro $constname, used at $file line $line.
-";
- }
- }
- eval "sub $AUTOLOAD { $val }";
- goto &$AUTOLOAD;
-}
-
-
-eval {
- # Make all Fcntl O_XXX constants available for importing
- require Fcntl;
- my @O = grep /^O_/, @Fcntl::EXPORT;
- Fcntl->import(@O); # first we import what we want to export
- push(@EXPORT, @O);
-};
-
-if ($use_XSLoader)
- { XSLoader::load("DB_File", $VERSION)}
-else
- { bootstrap DB_File $VERSION }
-
-# Preloaded methods go here. Autoload methods go after __END__, and are
-# processed by the autosplit program.
-
-sub tie_hash_or_array
-{
- my (@arg) = @_ ;
- my $tieHASH = ( (caller(1))[3] =~ /TIEHASH/ ) ;
-
- $arg[4] = tied %{ $arg[4] }
- if @arg >= 5 && ref $arg[4] && $arg[4] =~ /=HASH/ && tied %{ $arg[4] } ;
-
- # 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]) {
- open(FH, ">$arg[1]") or return undef ;
- close FH ;
- chmod $arg[3] ? $arg[3] : 0666 , $arg[1] ;
- }
-
- DoTie_($tieHASH, @arg) ;
-}
-
-sub TIEHASH
-{
- tie_hash_or_array(@_) ;
-}
-
-sub TIEARRAY
-{
- tie_hash_or_array(@_) ;
-}
-
-sub CLEAR
-{
- my $self = shift;
- my $key = 0 ;
- my $value = "" ;
- my $status = $self->seq($key, $value, R_FIRST());
- my @keys;
-
- while ($status == 0) {
- push @keys, $key;
- $status = $self->seq($key, $value, R_NEXT());
- }
- foreach $key (reverse @keys) {
- my $s = $self->del($key);
- }
-}
-
-sub EXTEND { }
-
-sub STORESIZE
-{
- my $self = shift;
- my $length = shift ;
- my $current_length = $self->length() ;
-
- if ($length < $current_length) {
- my $key ;
- for ($key = $current_length - 1 ; $key >= $length ; -- $key)
- { $self->del($key) }
- }
- elsif ($length > $current_length) {
- $self->put($length-1, "") ;
- }
-}
-
-sub find_dup
-{
- croak "Usage: \$db->find_dup(key,value)\n"
- unless @_ == 3 ;
-
- my $db = shift ;
- my ($origkey, $value_wanted) = @_ ;
- my ($key, $value) = ($origkey, 0);
- my ($status) = 0 ;
-
- for ($status = $db->seq($key, $value, R_CURSOR() ) ;
- $status == 0 ;
- $status = $db->seq($key, $value, R_NEXT() ) ) {
-
- return 0 if $key eq $origkey and $value eq $value_wanted ;
- }
-
- return $status ;
-}
-
-sub del_dup
-{
- croak "Usage: \$db->del_dup(key,value)\n"
- unless @_ == 3 ;
-
- my $db = shift ;
- my ($key, $value) = @_ ;
- my ($status) = $db->find_dup($key, $value) ;
- return $status if $status != 0 ;
-
- $status = $db->del($key, R_CURSOR() ) ;
- return $status ;
-}
-
-sub get_dup
-{
- croak "Usage: \$db->get_dup(key [,flag])\n"
- unless @_ == 2 or @_ == 3 ;
-
- my $db = shift ;
- my $key = shift ;
- my $flag = shift ;
- my $value = 0 ;
- my $origkey = $key ;
- my $wantarray = wantarray ;
- my %values = () ;
- my @values = () ;
- my $counter = 0 ;
- my $status = 0 ;
-
- # iterate through the database until either EOF ($status == 0)
- # or a different key is encountered ($key ne $origkey).
- for ($status = $db->seq($key, $value, R_CURSOR()) ;
- $status == 0 and $key eq $origkey ;
- $status = $db->seq($key, $value, R_NEXT()) ) {
-
- # save the value or count number of matches
- if ($wantarray) {
- if ($flag)
- { ++ $values{$value} }
- else
- { push (@values, $value) }
- }
- else
- { ++ $counter }
-
- }
-
- return ($wantarray ? ($flag ? %values : @values) : $counter) ;
-}
-
-
-1;
-__END__
-
-=head1 NAME
-
-DB_File - Perl5 access to Berkeley DB version 1.x
-
-=head1 SYNOPSIS
-
- use DB_File ;
-
- [$X =] tie %hash, 'DB_File', [$filename, $flags, $mode, $DB_HASH] ;
- [$X =] tie %hash, 'DB_File', $filename, $flags, $mode, $DB_BTREE ;
- [$X =] tie @array, 'DB_File', $filename, $flags, $mode, $DB_RECNO ;
-
- $status = $X->del($key [, $flags]) ;
- $status = $X->put($key, $value [, $flags]) ;
- $status = $X->get($key, $value [, $flags]) ;
- $status = $X->seq($key, $value, $flags) ;
- $status = $X->sync([$flags]) ;
- $status = $X->fd ;
-
- # BTREE only
- $count = $X->get_dup($key) ;
- @list = $X->get_dup($key) ;
- %list = $X->get_dup($key, 1) ;
- $status = $X->find_dup($key, $value) ;
- $status = $X->del_dup($key, $value) ;
-
- # RECNO only
- $a = $X->length;
- $a = $X->pop ;
- $X->push(list);
- $a = $X->shift;
- $X->unshift(list);
-
- # DBM Filters
- $old_filter = $db->filter_store_key ( sub { ... } ) ;
- $old_filter = $db->filter_store_value( sub { ... } ) ;
- $old_filter = $db->filter_fetch_key ( sub { ... } ) ;
- $old_filter = $db->filter_fetch_value( sub { ... } ) ;
-
- untie %hash ;
- untie @array ;
-
-=head1 DESCRIPTION
-
-B<DB_File> is a module which allows Perl programs to make use of the
-facilities provided by Berkeley DB version 1.x (if you have a newer
-version of DB, see L<Using DB_File with Berkeley DB version 2 or 3>).
-It is assumed that you have a copy of the Berkeley DB manual pages at
-hand when reading this documentation. The interface defined here
-mirrors the Berkeley DB interface closely.
-
-Berkeley DB is a C library which provides a consistent interface to a
-number of database formats. B<DB_File> provides an interface to all
-three of the database types currently supported by Berkeley DB.
-
-The file types are:
-
-=over 5
-
-=item B<DB_HASH>
-
-This database type allows arbitrary key/value pairs to be stored in data
-files. This is equivalent to the functionality provided by other
-hashing packages like DBM, NDBM, ODBM, GDBM, and SDBM. Remember though,
-the files created using DB_HASH are not compatible with any of the
-other packages mentioned.
-
-A default hashing algorithm, which will be adequate for most
-applications, is built into Berkeley DB. If you do need to use your own
-hashing algorithm it is possible to write your own in Perl and have
-B<DB_File> use it instead.
-
-=item B<DB_BTREE>
-
-The btree format allows arbitrary key/value pairs to be stored in a
-sorted, balanced binary tree.
-
-As with the DB_HASH format, it is possible to provide a user defined
-Perl routine to perform the comparison of keys. By default, though, the
-keys are stored in lexical order.
-
-=item B<DB_RECNO>
-
-DB_RECNO allows both fixed-length and variable-length flat text files
-to be manipulated using the same key/value pair interface as in DB_HASH
-and DB_BTREE. In this case the key will consist of a record (line)
-number.
-
-=back
-
-=head2 Using DB_File with Berkeley DB version 2 or 3
-
-Although B<DB_File> is intended to be used with Berkeley DB version 1,
-it can also be used with version 2.or 3 In this case the interface is
-limited to the functionality provided by Berkeley DB 1.x. Anywhere the
-version 2 or 3 interface differs, B<DB_File> arranges for it to work
-like version 1. This feature allows B<DB_File> scripts that were built
-with version 1 to be migrated to version 2 or 3 without any changes.
-
-If you want to make use of the new features available in Berkeley DB
-2.x or greater, use the Perl module B<BerkeleyDB> instead.
-
-B<Note:> The database file format has changed in both Berkeley DB
-version 2 and 3. If you cannot recreate your databases, you must dump
-any existing databases with the C<db_dump185> utility that comes with
-Berkeley DB.
-Once you have rebuilt DB_File to use Berkeley DB version 2 or 3, your
-databases can be recreated using C<db_load>. Refer to the Berkeley DB
-documentation for further details.
-
-Please read L<"COPYRIGHT"> before using version 2.x or 3.x of Berkeley
-DB with DB_File.
-
-=head2 Interface to Berkeley DB
-
-B<DB_File> allows access to Berkeley DB files using the tie() mechanism
-in Perl 5 (for full details, see L<perlfunc/tie()>). This facility
-allows B<DB_File> to access Berkeley DB files using either an
-associative array (for DB_HASH & DB_BTREE file types) or an ordinary
-array (for the DB_RECNO file type).
-
-In addition to the tie() interface, it is also possible to access most
-of the functions provided in the Berkeley DB API directly.
-See L<THE API INTERFACE>.
-
-=head2 Opening a Berkeley DB Database File
-
-Berkeley DB uses the function dbopen() to open or create a database.
-Here is the C prototype for dbopen():
-
- DB*
- dbopen (const char * file, int flags, int mode,
- DBTYPE type, const void * openinfo)
-
-The parameter C<type> is an enumeration which specifies which of the 3
-interface methods (DB_HASH, DB_BTREE or DB_RECNO) is to be used.
-Depending on which of these is actually chosen, the final parameter,
-I<openinfo> points to a data structure which allows tailoring of the
-specific interface method.
-
-This interface is handled slightly differently in B<DB_File>. Here is
-an equivalent call using B<DB_File>:
-
- tie %array, 'DB_File', $filename, $flags, $mode, $DB_HASH ;
-
-The C<filename>, C<flags> and C<mode> parameters are the direct
-equivalent of their dbopen() counterparts. The final parameter $DB_HASH
-performs the function of both the C<type> and C<openinfo> parameters in
-dbopen().
-
-In the example above $DB_HASH is actually a pre-defined reference to a
-hash object. B<DB_File> has three of these pre-defined references.
-Apart from $DB_HASH, there is also $DB_BTREE and $DB_RECNO.
-
-The keys allowed in each of these pre-defined references is limited to
-the names used in the equivalent C structure. So, for example, the
-$DB_HASH reference will only allow keys called C<bsize>, C<cachesize>,
-C<ffactor>, C<hash>, C<lorder> and C<nelem>.
-
-To change one of these elements, just assign to it like this:
-
- $DB_HASH->{'cachesize'} = 10000 ;
-
-The three predefined variables $DB_HASH, $DB_BTREE and $DB_RECNO are
-usually adequate for most applications. If you do need to create extra
-instances of these objects, constructors are available for each file
-type.
-
-Here are examples of the constructors and the valid options available
-for DB_HASH, DB_BTREE and DB_RECNO respectively.
-
- $a = new DB_File::HASHINFO ;
- $a->{'bsize'} ;
- $a->{'cachesize'} ;
- $a->{'ffactor'};
- $a->{'hash'} ;
- $a->{'lorder'} ;
- $a->{'nelem'} ;
-
- $b = new DB_File::BTREEINFO ;
- $b->{'flags'} ;
- $b->{'cachesize'} ;
- $b->{'maxkeypage'} ;
- $b->{'minkeypage'} ;
- $b->{'psize'} ;
- $b->{'compare'} ;
- $b->{'prefix'} ;
- $b->{'lorder'} ;
-
- $c = new DB_File::RECNOINFO ;
- $c->{'bval'} ;
- $c->{'cachesize'} ;
- $c->{'psize'} ;
- $c->{'flags'} ;
- $c->{'lorder'} ;
- $c->{'reclen'} ;
- $c->{'bfname'} ;
-
-The values stored in the hashes above are mostly the direct equivalent
-of their C counterpart. Like their C counterparts, all are set to a
-default values - that means you don't have to set I<all> of the
-values when you only want to change one. Here is an example:
-
- $a = new DB_File::HASHINFO ;
- $a->{'cachesize'} = 12345 ;
- tie %y, 'DB_File', "filename", $flags, 0777, $a ;
-
-A few of the options need extra discussion here. When used, the C
-equivalent of the keys C<hash>, C<compare> and C<prefix> store pointers
-to C functions. In B<DB_File> these keys are used to store references
-to Perl subs. Below are templates for each of the subs:
-
- sub hash
- {
- my ($data) = @_ ;
- ...
- # return the hash value for $data
- return $hash ;
- }
-
- sub compare
- {
- my ($key, $key2) = @_ ;
- ...
- # return 0 if $key1 eq $key2
- # -1 if $key1 lt $key2
- # 1 if $key1 gt $key2
- return (-1 , 0 or 1) ;
- }
-
- sub prefix
- {
- my ($key, $key2) = @_ ;
- ...
- # return number of bytes of $key2 which are
- # necessary to determine that it is greater than $key1
- return $bytes ;
- }
-
-See L<Changing the BTREE sort order> for an example of using the
-C<compare> template.
-
-If you are using the DB_RECNO interface and you intend making use of
-C<bval>, you should check out L<The 'bval' Option>.
-
-=head2 Default Parameters
-
-It is possible to omit some or all of the final 4 parameters in the
-call to C<tie> and let them take default values. As DB_HASH is the most
-common file format used, the call:
-
- tie %A, "DB_File", "filename" ;
-
-is equivalent to:
-
- tie %A, "DB_File", "filename", O_CREAT|O_RDWR, 0666, $DB_HASH ;
-
-It is also possible to omit the filename parameter as well, so the
-call:
-
- tie %A, "DB_File" ;
-
-is equivalent to:
-
- tie %A, "DB_File", undef, O_CREAT|O_RDWR, 0666, $DB_HASH ;
-
-See L<In Memory Databases> for a discussion on the use of C<undef>
-in place of a filename.
-
-=head2 In Memory Databases
-
-Berkeley DB allows the creation of in-memory databases by using NULL
-(that is, a C<(char *)0> in C) in place of the filename. B<DB_File>
-uses C<undef> instead of NULL to provide this functionality.
-
-=head1 DB_HASH
-
-The DB_HASH file format is probably the most commonly used of the three
-file formats that B<DB_File> supports. It is also very straightforward
-to use.
-
-=head2 A Simple Example
-
-This example shows how to create a database, add key/value pairs to the
-database, delete keys/value pairs and finally how to enumerate the
-contents of the database.
-
- use warnings ;
- use strict ;
- use DB_File ;
- use vars qw( %h $k $v ) ;
-
- unlink "fruit" ;
- tie %h, "DB_File", "fruit", O_RDWR|O_CREAT, 0640, $DB_HASH
- or die "Cannot open file 'fruit': $!\n";
-
- # Add a few key/value pairs to the file
- $h{"apple"} = "red" ;
- $h{"orange"} = "orange" ;
- $h{"banana"} = "yellow" ;
- $h{"tomato"} = "red" ;
-
- # Check for existence of a key
- print "Banana Exists\n\n" if $h{"banana"} ;
-
- # Delete a key/value pair.
- delete $h{"apple"} ;
-
- # print the contents of the file
- while (($k, $v) = each %h)
- { print "$k -> $v\n" }
-
- untie %h ;
-
-here is the output:
-
- Banana Exists
-
- orange -> orange
- tomato -> red
- banana -> yellow
-
-Note that the like ordinary associative arrays, the order of the keys
-retrieved is in an apparently random order.
-
-=head1 DB_BTREE
-
-The DB_BTREE format is useful when you want to store data in a given
-order. By default the keys will be stored in lexical order, but as you
-will see from the example shown in the next section, it is very easy to
-define your own sorting function.
-
-=head2 Changing the BTREE sort order
-
-This script shows how to override the default sorting algorithm that
-BTREE uses. Instead of using the normal lexical ordering, a case
-insensitive compare function will be used.
-
- use warnings ;
- use strict ;
- use DB_File ;
-
- my %h ;
-
- sub Compare
- {
- my ($key1, $key2) = @_ ;
- "\L$key1" cmp "\L$key2" ;
- }
-
- # specify the Perl sub that will do the comparison
- $DB_BTREE->{'compare'} = \&Compare ;
-
- unlink "tree" ;
- tie %h, "DB_File", "tree", O_RDWR|O_CREAT, 0640, $DB_BTREE
- or die "Cannot open file 'tree': $!\n" ;
-
- # Add a key/value pair to the file
- $h{'Wall'} = 'Larry' ;
- $h{'Smith'} = 'John' ;
- $h{'mouse'} = 'mickey' ;
- $h{'duck'} = 'donald' ;
-
- # Delete
- delete $h{"duck"} ;
-
- # Cycle through the keys printing them in order.
- # Note it is not necessary to sort the keys as
- # the btree will have kept them in order automatically.
- foreach (keys %h)
- { print "$_\n" }
-
- untie %h ;
-
-Here is the output from the code above.
-
- mouse
- Smith
- Wall
-
-There are a few point to bear in mind if you want to change the
-ordering in a BTREE database:
-
-=over 5
-
-=item 1.
-
-The new compare function must be specified when you create the database.
-
-=item 2.
-
-You cannot change the ordering once the database has been created. Thus
-you must use the same compare function every time you access the
-database.
-
-=back
-
-=head2 Handling Duplicate Keys
-
-The BTREE file type optionally allows a single key to be associated
-with an arbitrary number of values. This option is enabled by setting
-the flags element of C<$DB_BTREE> to R_DUP when creating the database.
-
-There are some difficulties in using the tied hash interface if you
-want to manipulate a BTREE database with duplicate keys. Consider this
-code:
-
- use warnings ;
- use strict ;
- use DB_File ;
-
- use vars qw($filename %h ) ;
-
- $filename = "tree" ;
- unlink $filename ;
-
- # Enable duplicate records
- $DB_BTREE->{'flags'} = R_DUP ;
-
- tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0640, $DB_BTREE
- or die "Cannot open $filename: $!\n";
-
- # Add some key/value pairs to the file
- $h{'Wall'} = 'Larry' ;
- $h{'Wall'} = 'Brick' ; # Note the duplicate key
- $h{'Wall'} = 'Brick' ; # Note the duplicate key and value
- $h{'Smith'} = 'John' ;
- $h{'mouse'} = 'mickey' ;
-
- # iterate through the associative array
- # and print each key/value pair.
- foreach (sort keys %h)
- { print "$_ -> $h{$_}\n" }
-
- untie %h ;
-
-Here is the output:
-
- Smith -> John
- Wall -> Larry
- Wall -> Larry
- Wall -> Larry
- mouse -> mickey
-
-As you can see 3 records have been successfully created with key C<Wall>
-- the only thing is, when they are retrieved from the database they
-I<seem> to have the same value, namely C<Larry>. The problem is caused
-by the way that the associative array interface works. Basically, when
-the associative array interface is used to fetch the value associated
-with a given key, it will only ever retrieve the first value.
-
-Although it may not be immediately obvious from the code above, the
-associative array interface can be used to write values with duplicate
-keys, but it cannot be used to read them back from the database.
-
-The way to get around this problem is to use the Berkeley DB API method
-called C<seq>. This method allows sequential access to key/value
-pairs. See L<THE API INTERFACE> for details of both the C<seq> method
-and the API in general.
-
-Here is the script above rewritten using the C<seq> API method.
-
- use warnings ;
- use strict ;
- use DB_File ;
-
- use vars qw($filename $x %h $status $key $value) ;
-
- $filename = "tree" ;
- unlink $filename ;
-
- # Enable duplicate records
- $DB_BTREE->{'flags'} = R_DUP ;
-
- $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0640, $DB_BTREE
- or die "Cannot open $filename: $!\n";
-
- # Add some key/value pairs to the file
- $h{'Wall'} = 'Larry' ;
- $h{'Wall'} = 'Brick' ; # Note the duplicate key
- $h{'Wall'} = 'Brick' ; # Note the duplicate key and value
- $h{'Smith'} = 'John' ;
- $h{'mouse'} = 'mickey' ;
-
- # iterate through the btree using seq
- # and print each key/value pair.
- $key = $value = 0 ;
- for ($status = $x->seq($key, $value, R_FIRST) ;
- $status == 0 ;
- $status = $x->seq($key, $value, R_NEXT) )
- { print "$key -> $value\n" }
-
- undef $x ;
- untie %h ;
-
-that prints:
-
- Smith -> John
- Wall -> Brick
- Wall -> Brick
- Wall -> Larry
- mouse -> mickey
-
-This time we have got all the key/value pairs, including the multiple
-values associated with the key C<Wall>.
-
-To make life easier when dealing with duplicate keys, B<DB_File> comes with
-a few utility methods.
-
-=head2 The get_dup() Method
-
-The C<get_dup> method assists in
-reading duplicate values from BTREE databases. The method can take the
-following forms:
-
- $count = $x->get_dup($key) ;
- @list = $x->get_dup($key) ;
- %list = $x->get_dup($key, 1) ;
-
-In a scalar context the method returns the number of values associated
-with the key, C<$key>.
-
-In list context, it returns all the values which match C<$key>. Note
-that the values will be returned in an apparently random order.
-
-In list context, if the second parameter is present and evaluates
-TRUE, the method returns an associative array. The keys of the
-associative array correspond to the values that matched in the BTREE
-and the values of the array are a count of the number of times that
-particular value occurred in the BTREE.
-
-So assuming the database created above, we can use C<get_dup> like
-this:
-
- use warnings ;
- use strict ;
- use DB_File ;
-
- use vars qw($filename $x %h ) ;
-
- $filename = "tree" ;
-
- # Enable duplicate records
- $DB_BTREE->{'flags'} = R_DUP ;
-
- $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0640, $DB_BTREE
- or die "Cannot open $filename: $!\n";
-
- my $cnt = $x->get_dup("Wall") ;
- print "Wall occurred $cnt times\n" ;
-
- my %hash = $x->get_dup("Wall", 1) ;
- print "Larry is there\n" if $hash{'Larry'} ;
- print "There are $hash{'Brick'} Brick Walls\n" ;
-
- my @list = sort $x->get_dup("Wall") ;
- print "Wall => [@list]\n" ;
-
- @list = $x->get_dup("Smith") ;
- print "Smith => [@list]\n" ;
-
- @list = $x->get_dup("Dog") ;
- print "Dog => [@list]\n" ;
-
-
-and it will print:
-
- Wall occurred 3 times
- Larry is there
- There are 2 Brick Walls
- Wall => [Brick Brick Larry]
- Smith => [John]
- Dog => []
-
-=head2 The find_dup() Method
-
- $status = $X->find_dup($key, $value) ;
-
-This method checks for the existence of a specific key/value pair. If the
-pair exists, the cursor is left pointing to the pair and the method
-returns 0. Otherwise the method returns a non-zero value.
-
-Assuming the database from the previous example:
-
- use warnings ;
- use strict ;
- use DB_File ;
-
- use vars qw($filename $x %h $found) ;
-
- my $filename = "tree" ;
-
- # Enable duplicate records
- $DB_BTREE->{'flags'} = R_DUP ;
-
- $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0640, $DB_BTREE
- or die "Cannot open $filename: $!\n";
-
- $found = ( $x->find_dup("Wall", "Larry") == 0 ? "" : "not") ;
- print "Larry Wall is $found there\n" ;
-
- $found = ( $x->find_dup("Wall", "Harry") == 0 ? "" : "not") ;
- print "Harry Wall is $found there\n" ;
-
- undef $x ;
- untie %h ;
-
-prints this
-
- Larry Wall is there
- Harry Wall is not there
-
-
-=head2 The del_dup() Method
-
- $status = $X->del_dup($key, $value) ;
-
-This method deletes a specific key/value pair. It returns
-0 if they exist and have been deleted successfully.
-Otherwise the method returns a non-zero value.
-
-Again assuming the existence of the C<tree> database
-
- use warnings ;
- use strict ;
- use DB_File ;
-
- use vars qw($filename $x %h $found) ;
-
- my $filename = "tree" ;
-
- # Enable duplicate records
- $DB_BTREE->{'flags'} = R_DUP ;
-
- $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0640, $DB_BTREE
- or die "Cannot open $filename: $!\n";
-
- $x->del_dup("Wall", "Larry") ;
-
- $found = ( $x->find_dup("Wall", "Larry") == 0 ? "" : "not") ;
- print "Larry Wall is $found there\n" ;
-
- undef $x ;
- untie %h ;
-
-prints this
-
- Larry Wall is not there
-
-=head2 Matching Partial Keys
-
-The BTREE interface has a feature which allows partial keys to be
-matched. This functionality is I<only> available when the C<seq> method
-is used along with the R_CURSOR flag.
-
- $x->seq($key, $value, R_CURSOR) ;
-
-Here is the relevant quote from the dbopen man page where it defines
-the use of the R_CURSOR flag with seq:
-
- Note, for the DB_BTREE access method, the returned key is not
- necessarily an exact match for the specified key. The returned key
- is the smallest key greater than or equal to the specified key,
- permitting partial key matches and range searches.
-
-In the example script below, the C<match> sub uses this feature to find
-and print the first matching key/value pair given a partial key.
-
- use warnings ;
- use strict ;
- use DB_File ;
- use Fcntl ;
-
- use vars qw($filename $x %h $st $key $value) ;
-
- sub match
- {
- my $key = shift ;
- my $value = 0;
- my $orig_key = $key ;
- $x->seq($key, $value, R_CURSOR) ;
- print "$orig_key\t-> $key\t-> $value\n" ;
- }
-
- $filename = "tree" ;
- unlink $filename ;
-
- $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0640, $DB_BTREE
- or die "Cannot open $filename: $!\n";
-
- # Add some key/value pairs to the file
- $h{'mouse'} = 'mickey' ;
- $h{'Wall'} = 'Larry' ;
- $h{'Walls'} = 'Brick' ;
- $h{'Smith'} = 'John' ;
-
-
- $key = $value = 0 ;
- print "IN ORDER\n" ;
- for ($st = $x->seq($key, $value, R_FIRST) ;
- $st == 0 ;
- $st = $x->seq($key, $value, R_NEXT) )
-
- { print "$key -> $value\n" }
-
- print "\nPARTIAL MATCH\n" ;
-
- match "Wa" ;
- match "A" ;
- match "a" ;
-
- undef $x ;
- untie %h ;
-
-Here is the output:
-
- IN ORDER
- Smith -> John
- Wall -> Larry
- Walls -> Brick
- mouse -> mickey
-
- PARTIAL MATCH
- Wa -> Wall -> Larry
- A -> Smith -> John
- a -> mouse -> mickey
-
-=head1 DB_RECNO
-
-DB_RECNO provides an interface to flat text files. Both variable and
-fixed length records are supported.
-
-In order to make RECNO more compatible with Perl, the array offset for
-all RECNO arrays begins at 0 rather than 1 as in Berkeley DB.
-
-As with normal Perl arrays, a RECNO array can be accessed using
-negative indexes. The index -1 refers to the last element of the array,
--2 the second last, and so on. Attempting to access an element before
-the start of the array will raise a fatal run-time error.
-
-=head2 The 'bval' Option
-
-The operation of the bval option warrants some discussion. Here is the
-definition of bval from the Berkeley DB 1.85 recno manual page:
-
- The delimiting byte to be used to mark the end of a
- record for variable-length records, and the pad charac-
- ter for fixed-length records. If no value is speci-
- fied, newlines (``\n'') are used to mark the end of
- variable-length records and fixed-length records are
- padded with spaces.
-
-The second sentence is wrong. In actual fact bval will only default to
-C<"\n"> when the openinfo parameter in dbopen is NULL. If a non-NULL
-openinfo parameter is used at all, the value that happens to be in bval
-will be used. That means you always have to specify bval when making
-use of any of the options in the openinfo parameter. This documentation
-error will be fixed in the next release of Berkeley DB.
-
-That clarifies the situation with regards Berkeley DB itself. What
-about B<DB_File>? Well, the behavior defined in the quote above is
-quite useful, so B<DB_File> conforms to it.
-
-That means that you can specify other options (e.g. cachesize) and
-still have bval default to C<"\n"> for variable length records, and
-space for fixed length records.
-
-=head2 A Simple Example
-
-Here is a simple example that uses RECNO (if you are using a version
-of Perl earlier than 5.004_57 this example won't work -- see
-L<Extra RECNO Methods> for a workaround).
-
- use warnings ;
- use strict ;
- use DB_File ;
-
- my $filename = "text" ;
- unlink $filename ;
-
- my @h ;
- tie @h, "DB_File", $filename, O_RDWR|O_CREAT, 0640, $DB_RECNO
- or die "Cannot open file 'text': $!\n" ;
-
- # Add a few key/value pairs to the file
- $h[0] = "orange" ;
- $h[1] = "blue" ;
- $h[2] = "yellow" ;
-
- push @h, "green", "black" ;
-
- my $elements = scalar @h ;
- print "The array contains $elements entries\n" ;
-
- my $last = pop @h ;
- print "popped $last\n" ;
-
- unshift @h, "white" ;
- my $first = shift @h ;
- print "shifted $first\n" ;
-
- # Check for existence of a key
- print "Element 1 Exists with value $h[1]\n" if $h[1] ;
-
- # use a negative index
- print "The last element is $h[-1]\n" ;
- print "The 2nd last element is $h[-2]\n" ;
-
- untie @h ;
-
-Here is the output from the script:
-
- The array contains 5 entries
- popped black
- shifted white
- Element 1 Exists with value blue
- The last element is green
- The 2nd last element is yellow
-
-=head2 Extra RECNO Methods
-
-If you are using a version of Perl earlier than 5.004_57, the tied
-array interface is quite limited. In the example script above
-C<push>, C<pop>, C<shift>, C<unshift>
-or determining the array length will not work with a tied array.
-
-To make the interface more useful for older versions of Perl, a number
-of methods are supplied with B<DB_File> to simulate the missing array
-operations. All these methods are accessed via the object returned from
-the tie call.
-
-Here are the methods:
-
-=over 5
-
-=item B<$X-E<gt>push(list) ;>
-
-Pushes the elements of C<list> to the end of the array.
-
-=item B<$value = $X-E<gt>pop ;>
-
-Removes and returns the last element of the array.
-
-=item B<$X-E<gt>shift>
-
-Removes and returns the first element of the array.
-
-=item B<$X-E<gt>unshift(list) ;>
-
-Pushes the elements of C<list> to the start of the array.
-
-=item B<$X-E<gt>length>
-
-Returns the number of elements in the array.
-
-=back
-
-=head2 Another Example
-
-Here is a more complete example that makes use of some of the methods
-described above. It also makes use of the API interface directly (see
-L<THE API INTERFACE>).
-
- use warnings ;
- use strict ;
- use vars qw(@h $H $file $i) ;
- use DB_File ;
- use Fcntl ;
-
- $file = "text" ;
-
- unlink $file ;
-
- $H = tie @h, "DB_File", $file, O_RDWR|O_CREAT, 0640, $DB_RECNO
- or die "Cannot open file $file: $!\n" ;
-
- # first create a text file to play with
- $h[0] = "zero" ;
- $h[1] = "one" ;
- $h[2] = "two" ;
- $h[3] = "three" ;
- $h[4] = "four" ;
-
-
- # Print the records in order.
- #
- # The length method is needed here because evaluating a tied
- # array in a scalar context does not return the number of
- # elements in the array.
-
- print "\nORIGINAL\n" ;
- foreach $i (0 .. $H->length - 1) {
- print "$i: $h[$i]\n" ;
- }
-
- # use the push & pop methods
- $a = $H->pop ;
- $H->push("last") ;
- print "\nThe last record was [$a]\n" ;
-
- # and the shift & unshift methods
- $a = $H->shift ;
- $H->unshift("first") ;
- print "The first record was [$a]\n" ;
-
- # Use the API to add a new record after record 2.
- $i = 2 ;
- $H->put($i, "Newbie", R_IAFTER) ;
-
- # and a new record before record 1.
- $i = 1 ;
- $H->put($i, "New One", R_IBEFORE) ;
-
- # delete record 3
- $H->del(3) ;
-
- # now print the records in reverse order
- print "\nREVERSE\n" ;
- for ($i = $H->length - 1 ; $i >= 0 ; -- $i)
- { print "$i: $h[$i]\n" }
-
- # same again, but use the API functions instead
- print "\nREVERSE again\n" ;
- my ($s, $k, $v) = (0, 0, 0) ;
- for ($s = $H->seq($k, $v, R_LAST) ;
- $s == 0 ;
- $s = $H->seq($k, $v, R_PREV))
- { print "$k: $v\n" }
-
- undef $H ;
- untie @h ;
-
-and this is what it outputs:
-
- ORIGINAL
- 0: zero
- 1: one
- 2: two
- 3: three
- 4: four
-
- The last record was [four]
- The first record was [zero]
-
- REVERSE
- 5: last
- 4: three
- 3: Newbie
- 2: one
- 1: New One
- 0: first
-
- REVERSE again
- 5: last
- 4: three
- 3: Newbie
- 2: one
- 1: New One
- 0: first
-
-Notes:
-
-=over 5
-
-=item 1.
-
-Rather than iterating through the array, C<@h> like this:
-
- foreach $i (@h)
-
-it is necessary to use either this:
-
- foreach $i (0 .. $H->length - 1)
-
-or this:
-
- for ($a = $H->get($k, $v, R_FIRST) ;
- $a == 0 ;
- $a = $H->get($k, $v, R_NEXT) )
-
-=item 2.
-
-Notice that both times the C<put> method was used the record index was
-specified using a variable, C<$i>, rather than the literal value
-itself. This is because C<put> will return the record number of the
-inserted line via that parameter.
-
-=back
-
-=head1 THE API INTERFACE
-
-As well as accessing Berkeley DB using a tied hash or array, it is also
-possible to make direct use of most of the API functions defined in the
-Berkeley DB documentation.
-
-To do this you need to store a copy of the object returned from the tie.
-
- $db = tie %hash, "DB_File", "filename" ;
-
-Once you have done that, you can access the Berkeley DB API functions
-as B<DB_File> methods directly like this:
-
- $db->put($key, $value, R_NOOVERWRITE) ;
-
-B<Important:> If you have saved a copy of the object returned from
-C<tie>, the underlying database file will I<not> be closed until both
-the tied variable is untied and all copies of the saved object are
-destroyed.
-
- use DB_File ;
- $db = tie %hash, "DB_File", "filename"
- or die "Cannot tie filename: $!" ;
- ...
- undef $db ;
- untie %hash ;
-
-See L<The untie() Gotcha> for more details.
-
-All the functions defined in L<dbopen> are available except for
-close() and dbopen() itself. The B<DB_File> method interface to the
-supported functions have been implemented to mirror the way Berkeley DB
-works whenever possible. In particular note that:
-
-=over 5
-
-=item *
-
-The methods return a status value. All return 0 on success.
-All return -1 to signify an error and set C<$!> to the exact
-error code. The return code 1 generally (but not always) means that the
-key specified did not exist in the database.
-
-Other return codes are defined. See below and in the Berkeley DB
-documentation for details. The Berkeley DB documentation should be used
-as the definitive source.
-
-=item *
-
-Whenever a Berkeley DB function returns data via one of its parameters,
-the equivalent B<DB_File> method does exactly the same.
-
-=item *
-
-If you are careful, it is possible to mix API calls with the tied
-hash/array interface in the same piece of code. Although only a few of
-the methods used to implement the tied interface currently make use of
-the cursor, you should always assume that the cursor has been changed
-any time the tied hash/array interface is used. As an example, this
-code will probably not do what you expect:
-
- $X = tie %x, 'DB_File', $filename, O_RDWR|O_CREAT, 0777, $DB_BTREE
- or die "Cannot tie $filename: $!" ;
-
- # Get the first key/value pair and set the cursor
- $X->seq($key, $value, R_FIRST) ;
-
- # this line will modify the cursor
- $count = scalar keys %x ;
-
- # Get the second key/value pair.
- # oops, it didn't, it got the last key/value pair!
- $X->seq($key, $value, R_NEXT) ;
-
-The code above can be rearranged to get around the problem, like this:
-
- $X = tie %x, 'DB_File', $filename, O_RDWR|O_CREAT, 0777, $DB_BTREE
- or die "Cannot tie $filename: $!" ;
-
- # this line will modify the cursor
- $count = scalar keys %x ;
-
- # Get the first key/value pair and set the cursor
- $X->seq($key, $value, R_FIRST) ;
-
- # Get the second key/value pair.
- # worked this time.
- $X->seq($key, $value, R_NEXT) ;
-
-=back
-
-All the constants defined in L<dbopen> for use in the flags parameters
-in the methods defined below are also available. Refer to the Berkeley
-DB documentation for the precise meaning of the flags values.
-
-Below is a list of the methods available.
-
-=over 5
-
-=item B<$status = $X-E<gt>get($key, $value [, $flags]) ;>
-
-Given a key (C<$key>) this method reads the value associated with it
-from the database. The value read from the database is returned in the
-C<$value> parameter.
-
-If the key does not exist the method returns 1.
-
-No flags are currently defined for this method.
-
-=item B<$status = $X-E<gt>put($key, $value [, $flags]) ;>
-
-Stores the key/value pair in the database.
-
-If you use either the R_IAFTER or R_IBEFORE flags, the C<$key> parameter
-will have the record number of the inserted key/value pair set.
-
-Valid flags are R_CURSOR, R_IAFTER, R_IBEFORE, R_NOOVERWRITE and
-R_SETCURSOR.
-
-=item B<$status = $X-E<gt>del($key [, $flags]) ;>
-
-Removes all key/value pairs with key C<$key> from the database.
-
-A return code of 1 means that the requested key was not in the
-database.
-
-R_CURSOR is the only valid flag at present.
-
-=item B<$status = $X-E<gt>fd ;>
-
-Returns the file descriptor for the underlying database.
-
-See L<Locking: The Trouble with fd> for an explanation for why you should
-not use C<fd> to lock your database.
-
-=item B<$status = $X-E<gt>seq($key, $value, $flags) ;>
-
-This interface allows sequential retrieval from the database. See
-L<dbopen> for full details.
-
-Both the C<$key> and C<$value> parameters will be set to the key/value
-pair read from the database.
-
-The flags parameter is mandatory. The valid flag values are R_CURSOR,
-R_FIRST, R_LAST, R_NEXT and R_PREV.
-
-=item B<$status = $X-E<gt>sync([$flags]) ;>
-
-Flushes any cached buffers to disk.
-
-R_RECNOSYNC is the only valid flag at present.
-
-=back
-
-=head1 DBM FILTERS
-
-A DBM Filter is a piece of code that is be used when you I<always>
-want to make the same transformation to all keys and/or values in a
-DBM database.
-
-There are four methods associated with DBM Filters. All work identically,
-and each is used to install (or uninstall) a single DBM Filter. Each
-expects a single parameter, namely a reference to a sub. The only
-difference between them is the place that the filter is installed.
-
-To summarise:
-
-=over 5
-
-=item B<filter_store_key>
-
-If a filter has been installed with this method, it will be invoked
-every time you write a key to a DBM database.
-
-=item B<filter_store_value>
-
-If a filter has been installed with this method, it will be invoked
-every time you write a value to a DBM database.
-
-
-=item B<filter_fetch_key>
-
-If a filter has been installed with this method, it will be invoked
-every time you read a key from a DBM database.
-
-=item B<filter_fetch_value>
-
-If a filter has been installed with this method, it will be invoked
-every time you read a value from a DBM database.
-
-=back
-
-You can use any combination of the methods, from none, to all four.
-
-All filter methods return the existing filter, if present, or C<undef>
-in not.
-
-To delete a filter pass C<undef> to it.
-
-=head2 The Filter
-
-When each filter is called by Perl, a local copy of C<$_> will contain
-the key or value to be filtered. Filtering is achieved by modifying
-the contents of C<$_>. The return code from the filter is ignored.
-
-=head2 An Example -- the NULL termination problem.
-
-Consider the following scenario. You have a DBM database
-that you need to share with a third-party C application. The C application
-assumes that I<all> keys and values are NULL terminated. Unfortunately
-when Perl writes to DBM databases it doesn't use NULL termination, so
-your Perl application will have to manage NULL termination itself. When
-you write to the database you will have to use something like this:
-
- $hash{"$key\0"} = "$value\0" ;
-
-Similarly the NULL needs to be taken into account when you are considering
-the length of existing keys/values.
-
-It would be much better if you could ignore the NULL terminations issue
-in the main application code and have a mechanism that automatically
-added the terminating NULL to all keys and values whenever you write to
-the database and have them removed when you read from the database. As I'm
-sure you have already guessed, this is a problem that DBM Filters can
-fix very easily.
-
- use warnings ;
- use strict ;
- use DB_File ;
-
- my %hash ;
- my $filename = "/tmp/filt" ;
- unlink $filename ;
-
- my $db = tie %hash, 'DB_File', $filename, O_CREAT|O_RDWR, 0666, $DB_HASH
- or die "Cannot open $filename: $!\n" ;
-
- # Install DBM Filters
- $db->filter_fetch_key ( sub { s/\0$// } ) ;
- $db->filter_store_key ( sub { $_ .= "\0" } ) ;
- $db->filter_fetch_value( sub { s/\0$// } ) ;
- $db->filter_store_value( sub { $_ .= "\0" } ) ;
-
- $hash{"abc"} = "def" ;
- my $a = $hash{"ABC"} ;
- # ...
- undef $db ;
- untie %hash ;
-
-Hopefully the contents of each of the filters should be
-self-explanatory. Both "fetch" filters remove the terminating NULL,
-and both "store" filters add a terminating NULL.
-
-
-=head2 Another Example -- Key is a C int.
-
-Here is another real-life example. By default, whenever Perl writes to
-a DBM database it always writes the key and value as strings. So when
-you use this:
-
- $hash{12345} = "soemthing" ;
-
-the key 12345 will get stored in the DBM database as the 5 byte string
-"12345". If you actually want the key to be stored in the DBM database
-as a C int, you will have to use C<pack> when writing, and C<unpack>
-when reading.
-
-Here is a DBM Filter that does it:
-
- use warnings ;
- use strict ;
- use DB_File ;
- my %hash ;
- my $filename = "/tmp/filt" ;
- unlink $filename ;
-
-
- my $db = tie %hash, 'DB_File', $filename, O_CREAT|O_RDWR, 0666, $DB_HASH
- or die "Cannot open $filename: $!\n" ;
-
- $db->filter_fetch_key ( sub { $_ = unpack("i", $_) } ) ;
- $db->filter_store_key ( sub { $_ = pack ("i", $_) } ) ;
- $hash{123} = "def" ;
- # ...
- undef $db ;
- untie %hash ;
-
-This time only two filters have been used -- we only need to manipulate
-the contents of the key, so it wasn't necessary to install any value
-filters.
-
-=head1 HINTS AND TIPS
-
-
-=head2 Locking: The Trouble with fd
-
-Until version 1.72 of this module, the recommended technique for locking
-B<DB_File> databases was to flock the filehandle returned from the "fd"
-function. Unfortunately this technique has been shown to be fundamentally
-flawed (Kudos to David Harris for tracking this down). Use it at your own
-peril!
-
-The locking technique went like this.
-
- $db = tie(%db, 'DB_File', '/tmp/foo.db', O_CREAT|O_RDWR, 0644)
- || die "dbcreat /tmp/foo.db $!";
- $fd = $db->fd;
- open(DB_FH, "+<&=$fd") || die "dup $!";
- flock (DB_FH, LOCK_EX) || die "flock: $!";
- ...
- $db{"Tom"} = "Jerry" ;
- ...
- flock(DB_FH, LOCK_UN);
- undef $db;
- untie %db;
- close(DB_FH);
-
-In simple terms, this is what happens:
-
-=over 5
-
-=item 1.
-
-Use "tie" to open the database.
-
-=item 2.
-
-Lock the database with fd & flock.
-
-=item 3.
-
-Read & Write to the database.
-
-=item 4.
-
-Unlock and close the database.
-
-=back
-
-Here is the crux of the problem. A side-effect of opening the B<DB_File>
-database in step 2 is that an initial block from the database will get
-read from disk and cached in memory.
-
-To see why this is a problem, consider what can happen when two processes,
-say "A" and "B", both want to update the same B<DB_File> database
-using the locking steps outlined above. Assume process "A" has already
-opened the database and has a write lock, but it hasn't actually updated
-the database yet (it has finished step 2, but not started step 3 yet). Now
-process "B" tries to open the same database - step 1 will succeed,
-but it will block on step 2 until process "A" releases the lock. The
-important thing to notice here is that at this point in time both
-processes will have cached identical initial blocks from the database.
-
-Now process "A" updates the database and happens to change some of the
-data held in the initial buffer. Process "A" terminates, flushing
-all cached data to disk and releasing the database lock. At this point
-the database on disk will correctly reflect the changes made by process
-"A".
-
-With the lock released, process "B" can now continue. It also updates the
-database and unfortunately it too modifies the data that was in its
-initial buffer. Once that data gets flushed to disk it will overwrite
-some/all of the changes process "A" made to the database.
-
-The result of this scenario is at best a database that doesn't contain
-what you expect. At worst the database will corrupt.
-
-The above won't happen every time competing process update the same
-B<DB_File> database, but it does illustrate why the technique should
-not be used.
-
-=head2 Safe ways to lock a database
-
-Starting with version 2.x, Berkeley DB has internal support for locking.
-The companion module to this one, B<BerkeleyDB>, provides an interface
-to this locking functionality. If you are serious about locking
-Berkeley DB databases, I strongly recommend using B<BerkeleyDB>.
-
-If using B<BerkeleyDB> isn't an option, there are a number of modules
-available on CPAN that can be used to implement locking. Each one
-implements locking differently and has different goals in mind. It is
-therefore worth knowing the difference, so that you can pick the right
-one for your application. Here are the three locking wrappers:
-
-=over 5
-
-=item B<Tie::DB_Lock>
-
-A B<DB_File> wrapper which creates copies of the database file for
-read access, so that you have a kind of a multiversioning concurrent read
-system. However, updates are still serial. Use for databases where reads
-may be lengthy and consistency problems may occur.
-
-=item B<Tie::DB_LockFile>
-
-A B<DB_File> wrapper that has the ability to lock and unlock the database
-while it is being used. Avoids the tie-before-flock problem by simply
-re-tie-ing the database when you get or drop a lock. Because of the
-flexibility in dropping and re-acquiring the lock in the middle of a
-session, this can be massaged into a system that will work with long
-updates and/or reads if the application follows the hints in the POD
-documentation.
-
-=item B<DB_File::Lock>
-
-An extremely lightweight B<DB_File> wrapper that simply flocks a lockfile
-before tie-ing the database and drops the lock after the untie. Allows
-one to use the same lockfile for multiple databases to avoid deadlock
-problems, if desired. Use for databases where updates are reads are
-quick and simple flock locking semantics are enough.
-
-=back
-
-=head2 Sharing Databases With C Applications
-
-There is no technical reason why a Berkeley DB database cannot be
-shared by both a Perl and a C application.
-
-The vast majority of problems that are reported in this area boil down
-to the fact that C strings are NULL terminated, whilst Perl strings are
-not. See L<DBM FILTERS> for a generic way to work around this problem.
-
-Here is a real example. Netscape 2.0 keeps a record of the locations you
-visit along with the time you last visited them in a DB_HASH database.
-This is usually stored in the file F<~/.netscape/history.db>. The key
-field in the database is the location string and the value field is the
-time the location was last visited stored as a 4 byte binary value.
-
-If you haven't already guessed, the location string is stored with a
-terminating NULL. This means you need to be careful when accessing the
-database.
-
-Here is a snippet of code that is loosely based on Tom Christiansen's
-I<ggh> script (available from your nearest CPAN archive in
-F<authors/id/TOMC/scripts/nshist.gz>).
-
- use warnings ;
- use strict ;
- use DB_File ;
- use Fcntl ;
-
- use vars qw( $dotdir $HISTORY %hist_db $href $binary_time $date ) ;
- $dotdir = $ENV{HOME} || $ENV{LOGNAME};
-
- $HISTORY = "$dotdir/.netscape/history.db";
-
- tie %hist_db, 'DB_File', $HISTORY
- or die "Cannot open $HISTORY: $!\n" ;;
-
- # Dump the complete database
- while ( ($href, $binary_time) = each %hist_db ) {
-
- # remove the terminating NULL
- $href =~ s/\x00$// ;
-
- # convert the binary time into a user friendly string
- $date = localtime unpack("V", $binary_time);
- print "$date $href\n" ;
- }
-
- # check for the existence of a specific key
- # remember to add the NULL
- if ( $binary_time = $hist_db{"http://mox.perl.com/\x00"} ) {
- $date = localtime unpack("V", $binary_time) ;
- print "Last visited mox.perl.com on $date\n" ;
- }
- else {
- print "Never visited mox.perl.com\n"
- }
-
- untie %hist_db ;
-
-=head2 The untie() Gotcha
-
-If you make use of the Berkeley DB API, it is I<very> strongly
-recommended that you read L<perltie/The untie Gotcha>.
-
-Even if you don't currently make use of the API interface, it is still
-worth reading it.
-
-Here is an example which illustrates the problem from a B<DB_File>
-perspective:
-
- use DB_File ;
- use Fcntl ;
-
- my %x ;
- my $X ;
-
- $X = tie %x, 'DB_File', 'tst.fil' , O_RDWR|O_TRUNC
- or die "Cannot tie first time: $!" ;
-
- $x{123} = 456 ;
-
- untie %x ;
-
- tie %x, 'DB_File', 'tst.fil' , O_RDWR|O_CREAT
- or die "Cannot tie second time: $!" ;
-
- untie %x ;
-
-When run, the script will produce this error message:
-
- Cannot tie second time: Invalid argument at bad.file line 14.
-
-Although the error message above refers to the second tie() statement
-in the script, the source of the problem is really with the untie()
-statement that precedes it.
-
-Having read L<perltie> you will probably have already guessed that the
-error is caused by the extra copy of the tied object stored in C<$X>.
-If you haven't, then the problem boils down to the fact that the
-B<DB_File> destructor, DESTROY, will not be called until I<all>
-references to the tied object are destroyed. Both the tied variable,
-C<%x>, and C<$X> above hold a reference to the object. The call to
-untie() will destroy the first, but C<$X> still holds a valid
-reference, so the destructor will not get called and the database file
-F<tst.fil> will remain open. The fact that Berkeley DB then reports the
-attempt to open a database that is already open via the catch-all
-"Invalid argument" doesn't help.
-
-If you run the script with the C<-w> flag the error message becomes:
-
- untie attempted while 1 inner references still exist at bad.file line 12.
- Cannot tie second time: Invalid argument at bad.file line 14.
-
-which pinpoints the real problem. Finally the script can now be
-modified to fix the original problem by destroying the API object
-before the untie:
-
- ...
- $x{123} = 456 ;
-
- undef $X ;
- untie %x ;
-
- $X = tie %x, 'DB_File', 'tst.fil' , O_RDWR|O_CREAT
- ...
-
-
-=head1 COMMON QUESTIONS
-
-=head2 Why is there Perl source in my database?
-
-If you look at the contents of a database file created by DB_File,
-there can sometimes be part of a Perl script included in it.
-
-This happens because Berkeley DB uses dynamic memory to allocate
-buffers which will subsequently be written to the database file. Being
-dynamic, the memory could have been used for anything before DB
-malloced it. As Berkeley DB doesn't clear the memory once it has been
-allocated, the unused portions will contain random junk. In the case
-where a Perl script gets written to the database, the random junk will
-correspond to an area of dynamic memory that happened to be used during
-the compilation of the script.
-
-Unless you don't like the possibility of there being part of your Perl
-scripts embedded in a database file, this is nothing to worry about.
-
-=head2 How do I store complex data structures with DB_File?
-
-Although B<DB_File> cannot do this directly, there is a module which
-can layer transparently over B<DB_File> to accomplish this feat.
-
-Check out the MLDBM module, available on CPAN in the directory
-F<modules/by-module/MLDBM>.
-
-=head2 What does "Invalid Argument" mean?
-
-You will get this error message when one of the parameters in the
-C<tie> call is wrong. Unfortunately there are quite a few parameters to
-get wrong, so it can be difficult to figure out which one it is.
-
-Here are a couple of possibilities:
-
-=over 5
-
-=item 1.
-
-Attempting to reopen a database without closing it.
-
-=item 2.
-
-Using the O_WRONLY flag.
-
-=back
-
-=head2 What does "Bareword 'DB_File' not allowed" mean?
-
-You will encounter this particular error message when you have the
-C<strict 'subs'> pragma (or the full strict pragma) in your script.
-Consider this script:
-
- use warnings ;
- use strict ;
- use DB_File ;
- use vars qw(%x) ;
- tie %x, DB_File, "filename" ;
-
-Running it produces the error in question:
-
- Bareword "DB_File" not allowed while "strict subs" in use
-
-To get around the error, place the word C<DB_File> in either single or
-double quotes, like this:
-
- tie %x, "DB_File", "filename" ;
-
-Although it might seem like a real pain, it is really worth the effort
-of having a C<use strict> in all your scripts.
-
-=head1 REFERENCES
-
-Articles that are either about B<DB_File> or make use of it.
-
-=over 5
-
-=item 1.
-
-I<Full-Text Searching in Perl>, Tim Kientzle (tkientzle@ddj.com),
-Dr. Dobb's Journal, Issue 295, January 1999, pp 34-41
-
-=back
-
-=head1 HISTORY
-
-Moved to the Changes file.
-
-=head1 BUGS
-
-Some older versions of Berkeley DB had problems with fixed length
-records using the RECNO file format. This problem has been fixed since
-version 1.85 of Berkeley DB.
-
-I am sure there are bugs in the code. If you do find any, or can
-suggest any enhancements, I would welcome your comments.
-
-=head1 AVAILABILITY
-
-B<DB_File> comes with the standard Perl source distribution. Look in
-the directory F<ext/DB_File>. Given the amount of time between releases
-of Perl the version that ships with Perl is quite likely to be out of
-date, so the most recent version can always be found on CPAN (see
-L<perlmod/CPAN> for details), in the directory
-F<modules/by-module/DB_File>.
-
-This version of B<DB_File> will work with either version 1.x, 2.x or
-3.x of Berkeley DB, but is limited to the functionality provided by
-version 1.
-
-The official web site for Berkeley DB is F<http://www.sleepycat.com>.
-All versions of Berkeley DB are available there.
-
-Alternatively, Berkeley DB version 1 is available at your nearest CPAN
-archive in F<src/misc/db.1.85.tar.gz>.
-
-If you are running IRIX, then get Berkeley DB version 1 from
-F<http://reality.sgi.com/ariel>. It has the patches necessary to
-compile properly on IRIX 5.3.
-
-=head1 COPYRIGHT
-
-Copyright (c) 1995-1999 Paul Marquess. All rights reserved. This program
-is free software; you can redistribute it and/or modify it under the
-same terms as Perl itself.
-
-Although B<DB_File> is covered by the Perl license, the library it
-makes use of, namely Berkeley DB, is not. Berkeley DB has its own
-copyright and its own license. Please take the time to read it.
-
-Here are are few words taken from the Berkeley DB FAQ (at
-F<http://www.sleepycat.com>) regarding the license:
-
- Do I have to license DB to use it in Perl scripts?
-
- No. The Berkeley DB license requires that software that uses
- Berkeley DB be freely redistributable. In the case of Perl, that
- software is Perl, and not your scripts. Any Perl scripts that you
- write are your property, including scripts that make use of
- Berkeley DB. Neither the Perl license nor the Berkeley DB license
- place any restriction on what you may do with them.
-
-If you are in any doubt about the license situation, contact either the
-Berkeley DB authors or the author of DB_File. See L<"AUTHOR"> for details.
-
-
-=head1 SEE ALSO
-
-L<perl(1)>, L<dbopen(3)>, L<hash(3)>, L<recno(3)>, L<btree(3)>,
-L<dbmfilter>
-
-=head1 AUTHOR
-
-The DB_File interface was written by Paul Marquess
-E<lt>Paul.Marquess@btinternet.comE<gt>.
-Questions about the DB system itself may be addressed to
-E<lt>db@sleepycat.com<gt>.
-
-=cut
diff --git a/db/perl.DB_File/DB_File.xs b/db/perl.DB_File/DB_File.xs
deleted file mode 100644
index 681134206..000000000
--- a/db/perl.DB_File/DB_File.xs
+++ /dev/null
@@ -1,2072 +0,0 @@
-/*
-
- DB_File.xs -- Perl 5 interface to Berkeley DB
-
- written by Paul Marquess <Paul.Marquess@btinternet.com>
- last modified 15th January 2001
- version 1.76
-
- All comments/suggestions/problems are welcome
-
- Copyright (c) 1995-2001 Paul Marquess. All rights reserved.
- This program is free software; you can redistribute it and/or
- modify it under the same terms as Perl itself.
-
- Changes:
- 0.1 - Initial Release
- 0.2 - No longer bombs out if dbopen returns an error.
- 0.3 - Added some support for multiple btree compares
- 1.0 - Complete support for multiple callbacks added.
- Fixed a problem with pushing a value onto an empty list.
- 1.01 - Fixed a SunOS core dump problem.
- The return value from TIEHASH wasn't set to NULL when
- dbopen returned an error.
- 1.02 - Use ALIAS to define TIEARRAY.
- Removed some redundant commented code.
- Merged OS2 code into the main distribution.
- Allow negative subscripts with RECNO interface.
- Changed the default flags to O_CREAT|O_RDWR
- 1.03 - Added EXISTS
- 1.04 - fixed a couple of bugs in hash_cb. Patches supplied by
- Dave Hammen, hammen@gothamcity.jsc.nasa.gov
- 1.05 - Added logic to allow prefix & hash types to be specified via
- Makefile.PL
- 1.06 - Minor namespace cleanup: Localized PrintBtree.
- 1.07 - Fixed bug with RECNO, where bval wasn't defaulting to "\n".
- 1.08 - No change to DB_File.xs
- 1.09 - Default mode for dbopen changed to 0666
- 1.10 - Fixed fd method so that it still returns -1 for
- in-memory files when db 1.86 is used.
- 1.11 - No change to DB_File.xs
- 1.12 - No change to DB_File.xs
- 1.13 - Tidied up a few casts.
- 1.14 - Made it illegal to tie an associative array to a RECNO
- database and an ordinary array to a HASH or BTREE database.
- 1.50 - Make work with both DB 1.x or DB 2.x
- 1.51 - Fixed a bug in mapping 1.x O_RDONLY flag to 2.x DB_RDONLY equivalent
- 1.52 - Patch from Gisle Aas <gisle@aas.no> to suppress "use of
- undefined value" warning with db_get and db_seq.
- 1.53 - Added DB_RENUMBER to flags for recno.
- 1.54 - Fixed bug in the fd method
- 1.55 - Fix for AIX from Jarkko Hietaniemi
- 1.56 - No change to DB_File.xs
- 1.57 - added the #undef op to allow building with Threads support.
- 1.58 - 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.59 - No change to DB_File.xs
- 1.60 - Some code tidy up
- 1.61 - added flagSet macro for DB 2.5.x
- fixed typo in O_RDONLY test.
- 1.62 - No change to DB_File.xs
- 1.63 - Fix to alllow DB 2.6.x to build.
- 1.64 - Tidied up the 1.x to 2.x flags mapping code.
- Added a patch from Mark Kettenis <kettenis@wins.uva.nl>
- to fix a flag mapping problem with O_RDONLY on the Hurd
- 1.65 - Fixed a bug in the PUSH logic.
- Added BOOT check that using 2.3.4 or greater
- 1.66 - Added DBM filter code
- 1.67 - Backed off the use of newSVpvn.
- Fixed DBM Filter code for Perl 5.004.
- Fixed a small memory leak in the filter code.
- 1.68 - fixed backward compatability bug with R_IAFTER & R_IBEFORE
- merged in the 5.005_58 changes
- 1.69 - fixed a bug in push -- DB_APPEND wasn't working properly.
- Fixed the R_SETCURSOR bug introduced in 1.68
- Added a new Perl variable $DB_File::db_ver
- 1.70 - Initialise $DB_File::db_ver and $DB_File::db_version with
- GV_ADD|GV_ADDMULT -- bug spotted by Nick Ing-Simmons.
- Added a BOOT check to test for equivalent versions of db.h &
- libdb.a/so.
- 1.71 - Support for Berkeley DB version 3.
- Support for Berkeley DB 2/3's backward compatability mode.
- Rewrote push
- 1.72 - No change to DB_File.xs
- 1.73 - No change to DB_File.xs
- 1.74 - A call to open needed parenthesised to stop it clashing
- with a win32 macro.
- Added Perl core patches 7703 & 7801.
- 1.75 - Fixed Perl core patch 7703.
- 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.
- 1.76 - No change to DB_File.xs
-
-*/
-
-#include "EXTERN.h"
-#include "perl.h"
-#include "XSUB.h"
-
-#ifndef PERL_VERSION
-# include "patchlevel.h"
-# define PERL_REVISION 5
-# define PERL_VERSION PATCHLEVEL
-# define PERL_SUBVERSION SUBVERSION
-#endif
-
-#if PERL_REVISION == 5 && (PERL_VERSION < 4 || (PERL_VERSION == 4 && PERL_SUBVERSION <= 75 ))
-
-# define PL_sv_undef sv_undef
-# define PL_na na
-
-#endif
-
-/* DEFSV appears first in 5.004_56 */
-#ifndef DEFSV
-# define DEFSV GvSV(defgv)
-#endif
-
-/* Being the Berkeley DB we prefer the <sys/cdefs.h> (which will be
- * shortly #included by the <db.h>) __attribute__ to the possibly
- * already defined __attribute__, for example by GNUC or by Perl. */
-
-#undef __attribute__
-
-/* If Perl has been compiled with Threads support,the symbol op will
- be defined here. This clashes with a field name in db.h, so get rid of it.
- */
-#ifdef op
-# undef op
-#endif
-
-#ifdef COMPAT185
-# include <db_185.h>
-#else
-# include <db.h>
-#endif
-
-#ifdef CAN_PROTOTYPE
-extern void __getBerkeleyDBInfo(void);
-#endif
-
-#ifndef pTHX
-# define pTHX
-# define pTHX_
-# define aTHX
-# define aTHX_
-#endif
-
-#ifndef newSVpvn
-# define newSVpvn(a,b) newSVpv(a,b)
-#endif
-
-#include <fcntl.h>
-
-/* #define TRACE */
-#define DBM_FILTERING
-
-#ifdef TRACE
-# define Trace(x) printf x
-#else
-# define Trace(x)
-#endif
-
-
-#define DBT_clear(x) Zero(&x, 1, DBT) ;
-
-#ifdef DB_VERSION_MAJOR
-
-#if DB_VERSION_MAJOR == 2
-# define BERKELEY_DB_1_OR_2
-#endif
-
-#if DB_VERSION_MAJOR > 3 || (DB_VERSION_MAJOR == 3 && DB_VERSION_MINOR >= 2)
-# define AT_LEAST_DB_3_2
-#endif
-
-/* map version 2 features & constants onto their version 1 equivalent */
-
-#ifdef DB_Prefix_t
-# undef DB_Prefix_t
-#endif
-#define DB_Prefix_t size_t
-
-#ifdef DB_Hash_t
-# undef DB_Hash_t
-#endif
-#define DB_Hash_t u_int32_t
-
-/* DBTYPE stays the same */
-/* HASHINFO, RECNOINFO and BTREEINFO map to DB_INFO */
-#if DB_VERSION_MAJOR == 2
- typedef DB_INFO INFO ;
-#else /* DB_VERSION_MAJOR > 2 */
-# define DB_FIXEDLEN (0x8000)
-#endif /* DB_VERSION_MAJOR == 2 */
-
-/* version 2 has db_recno_t in place of recno_t */
-typedef db_recno_t recno_t;
-
-
-#define R_CURSOR DB_SET_RANGE
-#define R_FIRST DB_FIRST
-#define R_IAFTER DB_AFTER
-#define R_IBEFORE DB_BEFORE
-#define R_LAST DB_LAST
-#define R_NEXT DB_NEXT
-#define R_NOOVERWRITE DB_NOOVERWRITE
-#define R_PREV DB_PREV
-
-#if DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR < 5
-# define R_SETCURSOR 0x800000
-#else
-# define R_SETCURSOR (-100)
-#endif
-
-#define R_RECNOSYNC 0
-#define R_FIXEDLEN DB_FIXEDLEN
-#define R_DUP DB_DUP
-
-
-#define db_HA_hash h_hash
-#define db_HA_ffactor h_ffactor
-#define db_HA_nelem h_nelem
-#define db_HA_bsize db_pagesize
-#define db_HA_cachesize db_cachesize
-#define db_HA_lorder db_lorder
-
-#define db_BT_compare bt_compare
-#define db_BT_prefix bt_prefix
-#define db_BT_flags flags
-#define db_BT_psize db_pagesize
-#define db_BT_cachesize db_cachesize
-#define db_BT_lorder db_lorder
-#define db_BT_maxkeypage
-#define db_BT_minkeypage
-
-
-#define db_RE_reclen re_len
-#define db_RE_flags flags
-#define db_RE_bval re_pad
-#define db_RE_bfname re_source
-#define db_RE_psize db_pagesize
-#define db_RE_cachesize db_cachesize
-#define db_RE_lorder db_lorder
-
-#define TXN NULL,
-
-#define do_SEQ(db, key, value, flag) (db->cursor->c_get)(db->cursor, &key, &value, flag)
-
-
-#define DBT_flags(x) x.flags = 0
-#define DB_flags(x, v) x |= v
-
-#if DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR < 5
-# define flagSet(flags, bitmask) ((flags) & (bitmask))
-#else
-# define flagSet(flags, bitmask) (((flags) & DB_OPFLAGS_MASK) == (bitmask))
-#endif
-
-#else /* db version 1.x */
-
-#define BERKELEY_DB_1
-#define BERKELEY_DB_1_OR_2
-
-typedef union INFO {
- HASHINFO hash ;
- RECNOINFO recno ;
- BTREEINFO btree ;
- } INFO ;
-
-
-#ifdef mDB_Prefix_t
-# ifdef DB_Prefix_t
-# undef DB_Prefix_t
-# endif
-# define DB_Prefix_t mDB_Prefix_t
-#endif
-
-#ifdef mDB_Hash_t
-# ifdef DB_Hash_t
-# undef DB_Hash_t
-# endif
-# define DB_Hash_t mDB_Hash_t
-#endif
-
-#define db_HA_hash hash.hash
-#define db_HA_ffactor hash.ffactor
-#define db_HA_nelem hash.nelem
-#define db_HA_bsize hash.bsize
-#define db_HA_cachesize hash.cachesize
-#define db_HA_lorder hash.lorder
-
-#define db_BT_compare btree.compare
-#define db_BT_prefix btree.prefix
-#define db_BT_flags btree.flags
-#define db_BT_psize btree.psize
-#define db_BT_cachesize btree.cachesize
-#define db_BT_lorder btree.lorder
-#define db_BT_maxkeypage btree.maxkeypage
-#define db_BT_minkeypage btree.minkeypage
-
-#define db_RE_reclen recno.reclen
-#define db_RE_flags recno.flags
-#define db_RE_bval recno.bval
-#define db_RE_bfname recno.bfname
-#define db_RE_psize recno.psize
-#define db_RE_cachesize recno.cachesize
-#define db_RE_lorder recno.lorder
-
-#define TXN
-
-#define do_SEQ(db, key, value, flag) (db->dbp->seq)(db->dbp, &key, &value, flag)
-#define DBT_flags(x)
-#define DB_flags(x, v)
-#define flagSet(flags, bitmask) ((flags) & (bitmask))
-
-#endif /* db version 1 */
-
-
-
-#define db_DELETE(db, key, flags) ((db->dbp)->del)(db->dbp, TXN &key, flags)
-#define db_STORE(db, key, value, flags) ((db->dbp)->put)(db->dbp, TXN &key, &value, flags)
-#define db_FETCH(db, key, flags) ((db->dbp)->get)(db->dbp, TXN &key, &value, flags)
-
-#define db_sync(db, flags) ((db->dbp)->sync)(db->dbp, flags)
-#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_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) \
- : ((db->dbp)->del)(db->dbp, NULL, &key, flags) )
-
-#else /* ! DB_VERSION_MAJOR */
-
-#define db_DESTROY(db) ((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)
-
-#endif /* ! DB_VERSION_MAJOR */
-
-
-#define db_seq(db, key, value, flags) do_SEQ(db, key, value, flags)
-
-typedef struct {
- DBTYPE type ;
- DB * dbp ;
- SV * compare ;
- SV * prefix ;
- SV * hash ;
- int in_memory ;
-#ifdef BERKELEY_DB_1_OR_2
- INFO info ;
-#endif
-#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") ; \
- } \
- }
-
-#define OutputKey(arg, name) \
- { if (RETVAL == 0) \
- { \
- if (db->type != DB_RECNO) { \
- my_sv_setpvn(arg, name.data, name.size); \
- } \
- else \
- sv_setiv(arg, (I32)*(I32*)name.data - 1); \
- ckFilter(arg, filter_fetch_key,"filter_fetch_key") ; \
- } \
- }
-
-
-/* Internal Global Data */
-static recno_t Value ;
-static recno_t zero = 0 ;
-static DB_File CurrentDB ;
-static DBTKEY empty ;
-
-#ifdef DB_VERSION_MAJOR
-
-static int
-#ifdef CAN_PROTOTYPE
-db_put(DB_File db, DBTKEY key, DBT value, u_int flags)
-#else
-db_put(db, key, value, flags)
-DB_File db ;
-DBTKEY key ;
-DBT value ;
-u_int flags ;
-#endif
-{
- int status ;
-
- if (flagSet(flags, R_IAFTER) || flagSet(flags, R_IBEFORE)) {
- DBC * temp_cursor ;
- DBT l_key, l_value;
-
-#if DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR < 6
- if (((db->dbp)->cursor)(db->dbp, NULL, &temp_cursor) != 0)
-#else
- if (((db->dbp)->cursor)(db->dbp, NULL, &temp_cursor, 0) != 0)
-#endif
- return (-1) ;
-
- memset(&l_key, 0, sizeof(l_key));
- l_key.data = key.data;
- l_key.size = key.size;
- memset(&l_value, 0, sizeof(l_value));
- l_value.data = value.data;
- l_value.size = value.size;
-
- if ( temp_cursor->c_get(temp_cursor, &l_key, &l_value, DB_SET) != 0) {
- (void)temp_cursor->c_close(temp_cursor);
- return (-1);
- }
-
- status = temp_cursor->c_put(temp_cursor, &key, &value, flags);
- (void)temp_cursor->c_close(temp_cursor);
-
- return (status) ;
- }
-
-
- if (flagSet(flags, R_CURSOR)) {
- return ((db->cursor)->c_put)(db->cursor, &key, &value, DB_CURRENT);
- }
-
- if (flagSet(flags, R_SETCURSOR)) {
- if ((db->dbp)->put(db->dbp, NULL, &key, &value, 0) != 0)
- return -1 ;
- return ((db->cursor)->c_get)(db->cursor, &key, &value, DB_SET_RANGE);
-
- }
-
- return ((db->dbp)->put)(db->dbp, NULL, &key, &value, flags) ;
-
-}
-
-#endif /* DB_VERSION_MAJOR */
-
-
-static int
-#ifdef AT_LEAST_DB_3_2
-
-#ifdef CAN_PROTOTYPE
-btree_compare(DB * db, const DBT *key1, const DBT *key2)
-#else
-btree_compare(db, key1, key2)
-DB * db ;
-const DBT * key1 ;
-const DBT * key2 ;
-#endif /* CAN_PROTOTYPE */
-
-#else /* Berkeley DB < 3.2 */
-
-#ifdef CAN_PROTOTYPE
-btree_compare(const DBT *key1, const DBT *key2)
-#else
-btree_compare(key1, key2)
-const DBT * key1 ;
-const DBT * key2 ;
-#endif
-
-#endif
-
-{
-#ifdef dTHX
- dTHX;
-#endif
- dSP ;
- void * data1, * data2 ;
- int retval ;
- int count ;
-
- data1 = key1->data ;
- data2 = key2->data ;
-
-#ifndef newSVpvn
- /* As newSVpv will assume that the data pointer is a null terminated C
- string if the size parameter is 0, make sure that data points to an
- empty string if the length is 0
- */
- if (key1->size == 0)
- data1 = "" ;
- if (key2->size == 0)
- data2 = "" ;
-#endif
-
- ENTER ;
- SAVETMPS;
-
- PUSHMARK(SP) ;
- EXTEND(SP,2) ;
- PUSHs(sv_2mortal(newSVpvn(data1,key1->size)));
- PUSHs(sv_2mortal(newSVpvn(data2,key2->size)));
- PUTBACK ;
-
- count = perl_call_sv(CurrentDB->compare, G_SCALAR);
-
- SPAGAIN ;
-
- if (count != 1)
- croak ("DB_File btree_compare: expected 1 return value from compare sub, got %d\n", count) ;
-
- retval = POPi ;
-
- PUTBACK ;
- FREETMPS ;
- LEAVE ;
- return (retval) ;
-
-}
-
-static DB_Prefix_t
-#ifdef AT_LEAST_DB_3_2
-
-#ifdef CAN_PROTOTYPE
-btree_prefix(DB * db, const DBT *key1, const DBT *key2)
-#else
-btree_prefix(db, key1, key2)
-Db * db ;
-const DBT * key1 ;
-const DBT * key2 ;
-#endif
-
-#else /* Berkeley DB < 3.2 */
-
-#ifdef CAN_PROTOTYPE
-btree_prefix(const DBT *key1, const DBT *key2)
-#else
-btree_prefix(key1, key2)
-const DBT * key1 ;
-const DBT * key2 ;
-#endif
-
-#endif
-{
-#ifdef dTHX
- dTHX;
-#endif
- dSP ;
- void * data1, * data2 ;
- int retval ;
- int count ;
-
- data1 = key1->data ;
- data2 = key2->data ;
-
-#ifndef newSVpvn
- /* As newSVpv will assume that the data pointer is a null terminated C
- string if the size parameter is 0, make sure that data points to an
- empty string if the length is 0
- */
- if (key1->size == 0)
- data1 = "" ;
- if (key2->size == 0)
- data2 = "" ;
-#endif
-
- ENTER ;
- SAVETMPS;
-
- PUSHMARK(SP) ;
- EXTEND(SP,2) ;
- PUSHs(sv_2mortal(newSVpvn(data1,key1->size)));
- PUSHs(sv_2mortal(newSVpvn(data2,key2->size)));
- PUTBACK ;
-
- count = perl_call_sv(CurrentDB->prefix, G_SCALAR);
-
- SPAGAIN ;
-
- if (count != 1)
- croak ("DB_File btree_prefix: expected 1 return value from prefix sub, got %d\n", count) ;
-
- retval = POPi ;
-
- PUTBACK ;
- FREETMPS ;
- LEAVE ;
-
- return (retval) ;
-}
-
-
-#ifdef BERKELEY_DB_1
-# define HASH_CB_SIZE_TYPE size_t
-#else
-# define HASH_CB_SIZE_TYPE u_int32_t
-#endif
-
-static DB_Hash_t
-#ifdef AT_LEAST_DB_3_2
-
-#ifdef CAN_PROTOTYPE
-hash_cb(DB * db, const void *data, u_int32_t size)
-#else
-hash_cb(db, data, size)
-DB * db ;
-const void * data ;
-HASH_CB_SIZE_TYPE size ;
-#endif
-
-#else /* Berkeley DB < 3.2 */
-
-#ifdef CAN_PROTOTYPE
-hash_cb(const void *data, HASH_CB_SIZE_TYPE size)
-#else
-hash_cb(data, size)
-const void * data ;
-HASH_CB_SIZE_TYPE size ;
-#endif
-
-#endif
-{
-#ifdef dTHX
- dTHX;
-#endif
- dSP ;
- int retval ;
- int count ;
-
-#ifndef newSVpvn
- if (size == 0)
- data = "" ;
-#endif
-
- /* DGH - Next two lines added to fix corrupted stack problem */
- ENTER ;
- SAVETMPS;
-
- PUSHMARK(SP) ;
-
- XPUSHs(sv_2mortal(newSVpvn((char*)data,size)));
- PUTBACK ;
-
- count = perl_call_sv(CurrentDB->hash, G_SCALAR);
-
- SPAGAIN ;
-
- if (count != 1)
- croak ("DB_File hash_cb: expected 1 return value from hash sub, got %d\n", count) ;
-
- retval = POPi ;
-
- PUTBACK ;
- FREETMPS ;
- LEAVE ;
-
- return (retval) ;
-}
-
-
-#if defined(TRACE) && defined(BERKELEY_DB_1_OR_2)
-
-static void
-#ifdef CAN_PROTOTYPE
-PrintHash(INFO *hash)
-#else
-PrintHash(hash)
-INFO * hash ;
-#endif
-{
- printf ("HASH Info\n") ;
- printf (" hash = %s\n",
- (hash->db_HA_hash != NULL ? "redefined" : "default")) ;
- printf (" bsize = %d\n", hash->db_HA_bsize) ;
- printf (" ffactor = %d\n", hash->db_HA_ffactor) ;
- printf (" nelem = %d\n", hash->db_HA_nelem) ;
- printf (" cachesize = %d\n", hash->db_HA_cachesize) ;
- printf (" lorder = %d\n", hash->db_HA_lorder) ;
-
-}
-
-static void
-#ifdef CAN_PROTOTYPE
-PrintRecno(INFO *recno)
-#else
-PrintRecno(recno)
-INFO * recno ;
-#endif
-{
- printf ("RECNO Info\n") ;
- printf (" flags = %d\n", recno->db_RE_flags) ;
- printf (" cachesize = %d\n", recno->db_RE_cachesize) ;
- printf (" psize = %d\n", recno->db_RE_psize) ;
- printf (" lorder = %d\n", recno->db_RE_lorder) ;
- printf (" reclen = %ul\n", (unsigned long)recno->db_RE_reclen) ;
- printf (" bval = %d 0x%x\n", recno->db_RE_bval, recno->db_RE_bval) ;
- printf (" bfname = %d [%s]\n", recno->db_RE_bfname, recno->db_RE_bfname) ;
-}
-
-static void
-#ifdef CAN_PROTOTYPE
-PrintBtree(INFO *btree)
-#else
-PrintBtree(btree)
-INFO * btree ;
-#endif
-{
- printf ("BTREE Info\n") ;
- printf (" compare = %s\n",
- (btree->db_BT_compare ? "redefined" : "default")) ;
- printf (" prefix = %s\n",
- (btree->db_BT_prefix ? "redefined" : "default")) ;
- printf (" flags = %d\n", btree->db_BT_flags) ;
- printf (" cachesize = %d\n", btree->db_BT_cachesize) ;
- printf (" psize = %d\n", btree->db_BT_psize) ;
-#ifndef DB_VERSION_MAJOR
- printf (" maxkeypage = %d\n", btree->db_BT_maxkeypage) ;
- printf (" minkeypage = %d\n", btree->db_BT_minkeypage) ;
-#endif
- printf (" lorder = %d\n", btree->db_BT_lorder) ;
-}
-
-#else
-
-#define PrintRecno(recno)
-#define PrintHash(hash)
-#define PrintBtree(btree)
-
-#endif /* TRACE */
-
-
-static I32
-#ifdef CAN_PROTOTYPE
-GetArrayLength(pTHX_ DB_File db)
-#else
-GetArrayLength(db)
-DB_File db ;
-#endif
-{
- DBT key ;
- DBT value ;
- int RETVAL ;
-
- DBT_clear(key) ;
- DBT_clear(value) ;
- RETVAL = do_SEQ(db, key, value, R_LAST) ;
- if (RETVAL == 0)
- RETVAL = *(I32 *)key.data ;
- else /* No key means empty file */
- RETVAL = 0 ;
-
- return ((I32)RETVAL) ;
-}
-
-static recno_t
-#ifdef CAN_PROTOTYPE
-GetRecnoKey(pTHX_ DB_File db, I32 value)
-#else
-GetRecnoKey(db, value)
-DB_File db ;
-I32 value ;
-#endif
-{
- if (value < 0) {
- /* Get the length of the array */
- I32 length = GetArrayLength(aTHX_ db) ;
-
- /* check for attempt to write before start of array */
- if (length + value + 1 <= 0)
- croak("Modification of non-creatable array value attempted, subscript %ld", (long)value) ;
-
- value = length + value + 1 ;
- }
- else
- ++ value ;
-
- return value ;
-}
-
-
-static DB_File
-#ifdef CAN_PROTOTYPE
-ParseOpenInfo(pTHX_ int isHASH, char *name, int flags, int mode, SV *sv)
-#else
-ParseOpenInfo(isHASH, name, flags, mode, sv)
-int isHASH ;
-char * name ;
-int flags ;
-int mode ;
-SV * sv ;
-#endif
-{
-
-#ifdef BERKELEY_DB_1_OR_2 /* Berkeley DB Version 1 or 2 */
-
- SV ** svp;
- HV * action ;
- DB_File RETVAL = (DB_File)safemalloc(sizeof(DB_File_type)) ;
- void * openinfo = NULL ;
- INFO * info = &RETVAL->info ;
- STRLEN n_a;
-
-/* printf("In ParseOpenInfo name=[%s] flags=[%d] mode = [%d]\n", name, flags, mode) ; */
- 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 ;
-
- /* DGH - Next line added to avoid SEGV on existing hash DB */
- CurrentDB = RETVAL;
-
- /* fd for 1.86 hash in memory files doesn't return -1 like 1.85 */
- RETVAL->in_memory = (name == NULL) ;
-
- if (sv)
- {
- if (! SvROK(sv) )
- croak ("type parameter is not a reference") ;
-
- svp = hv_fetch( (HV*)SvRV(sv), "GOT", 3, FALSE) ;
- if (svp && SvOK(*svp))
- action = (HV*) SvRV(*svp) ;
- else
- croak("internal error") ;
-
- if (sv_isa(sv, "DB_File::HASHINFO"))
- {
-
- if (!isHASH)
- croak("DB_File can only tie an associative array to a DB_HASH database") ;
-
- RETVAL->type = DB_HASH ;
- openinfo = (void*)info ;
-
- svp = hv_fetch(action, "hash", 4, FALSE);
-
- if (svp && SvOK(*svp))
- {
- info->db_HA_hash = hash_cb ;
- RETVAL->hash = newSVsv(*svp) ;
- }
- else
- info->db_HA_hash = NULL ;
-
- svp = hv_fetch(action, "ffactor", 7, FALSE);
- info->db_HA_ffactor = svp ? SvIV(*svp) : 0;
-
- svp = hv_fetch(action, "nelem", 5, FALSE);
- info->db_HA_nelem = svp ? SvIV(*svp) : 0;
-
- svp = hv_fetch(action, "bsize", 5, FALSE);
- info->db_HA_bsize = svp ? SvIV(*svp) : 0;
-
- svp = hv_fetch(action, "cachesize", 9, FALSE);
- info->db_HA_cachesize = svp ? SvIV(*svp) : 0;
-
- svp = hv_fetch(action, "lorder", 6, FALSE);
- info->db_HA_lorder = svp ? SvIV(*svp) : 0;
-
- PrintHash(info) ;
- }
- else if (sv_isa(sv, "DB_File::BTREEINFO"))
- {
- if (!isHASH)
- croak("DB_File can only tie an associative array to a DB_BTREE database");
-
- RETVAL->type = DB_BTREE ;
- openinfo = (void*)info ;
-
- svp = hv_fetch(action, "compare", 7, FALSE);
- if (svp && SvOK(*svp))
- {
- info->db_BT_compare = btree_compare ;
- RETVAL->compare = newSVsv(*svp) ;
- }
- else
- info->db_BT_compare = NULL ;
-
- svp = hv_fetch(action, "prefix", 6, FALSE);
- if (svp && SvOK(*svp))
- {
- info->db_BT_prefix = btree_prefix ;
- RETVAL->prefix = newSVsv(*svp) ;
- }
- else
- info->db_BT_prefix = NULL ;
-
- svp = hv_fetch(action, "flags", 5, FALSE);
- info->db_BT_flags = svp ? SvIV(*svp) : 0;
-
- svp = hv_fetch(action, "cachesize", 9, FALSE);
- info->db_BT_cachesize = svp ? SvIV(*svp) : 0;
-
-#ifndef DB_VERSION_MAJOR
- svp = hv_fetch(action, "minkeypage", 10, FALSE);
- info->btree.minkeypage = svp ? SvIV(*svp) : 0;
-
- svp = hv_fetch(action, "maxkeypage", 10, FALSE);
- info->btree.maxkeypage = svp ? SvIV(*svp) : 0;
-#endif
-
- svp = hv_fetch(action, "psize", 5, FALSE);
- info->db_BT_psize = svp ? SvIV(*svp) : 0;
-
- svp = hv_fetch(action, "lorder", 6, FALSE);
- info->db_BT_lorder = svp ? SvIV(*svp) : 0;
-
- PrintBtree(info) ;
-
- }
- else if (sv_isa(sv, "DB_File::RECNOINFO"))
- {
- if (isHASH)
- croak("DB_File can only tie an array to a DB_RECNO database");
-
- RETVAL->type = DB_RECNO ;
- openinfo = (void *)info ;
-
- info->db_RE_flags = 0 ;
-
- svp = hv_fetch(action, "flags", 5, FALSE);
- info->db_RE_flags = (u_long) (svp ? SvIV(*svp) : 0);
-
- svp = hv_fetch(action, "reclen", 6, FALSE);
- info->db_RE_reclen = (size_t) (svp ? SvIV(*svp) : 0);
-
- svp = hv_fetch(action, "cachesize", 9, FALSE);
- info->db_RE_cachesize = (u_int) (svp ? SvIV(*svp) : 0);
-
- svp = hv_fetch(action, "psize", 5, FALSE);
- info->db_RE_psize = (u_int) (svp ? SvIV(*svp) : 0);
-
- svp = hv_fetch(action, "lorder", 6, FALSE);
- info->db_RE_lorder = (int) (svp ? SvIV(*svp) : 0);
-
-#ifdef DB_VERSION_MAJOR
- info->re_source = name ;
- name = NULL ;
-#endif
- svp = hv_fetch(action, "bfname", 6, FALSE);
- if (svp && SvOK(*svp)) {
- char * ptr = SvPV(*svp,n_a) ;
-#ifdef DB_VERSION_MAJOR
- name = (char*) n_a ? ptr : NULL ;
-#else
- info->db_RE_bfname = (char*) (n_a ? ptr : NULL) ;
-#endif
- }
- else
-#ifdef DB_VERSION_MAJOR
- name = NULL ;
-#else
- info->db_RE_bfname = NULL ;
-#endif
-
- svp = hv_fetch(action, "bval", 4, FALSE);
-#ifdef DB_VERSION_MAJOR
- if (svp && SvOK(*svp))
- {
- int value ;
- if (SvPOK(*svp))
- value = (int)*SvPV(*svp, n_a) ;
- else
- value = SvIV(*svp) ;
-
- if (info->flags & DB_FIXEDLEN) {
- info->re_pad = value ;
- info->flags |= DB_PAD ;
- }
- else {
- info->re_delim = value ;
- info->flags |= DB_DELIMITER ;
- }
-
- }
-#else
- if (svp && SvOK(*svp))
- {
- if (SvPOK(*svp))
- info->db_RE_bval = (u_char)*SvPV(*svp, n_a) ;
- else
- info->db_RE_bval = (u_char)(unsigned long) SvIV(*svp) ;
- DB_flags(info->flags, DB_DELIMITER) ;
-
- }
- else
- {
- if (info->db_RE_flags & R_FIXEDLEN)
- info->db_RE_bval = (u_char) ' ' ;
- else
- info->db_RE_bval = (u_char) '\n' ;
- DB_flags(info->flags, DB_DELIMITER) ;
- }
-#endif
-
-#ifdef DB_RENUMBER
- info->flags |= DB_RENUMBER ;
-#endif
-
- PrintRecno(info) ;
- }
- else
- croak("type is not of type DB_File::HASHINFO, DB_File::BTREEINFO or DB_File::RECNOINFO");
- }
-
-
- /* OS2 Specific Code */
-#ifdef OS2
-#ifdef __EMX__
- flags |= O_BINARY;
-#endif /* __EMX__ */
-#endif /* OS2 */
-
-#ifdef DB_VERSION_MAJOR
-
- {
- int Flags = 0 ;
- int status ;
-
- /* Map 1.x flags to 2.x flags */
- if ((flags & O_CREAT) == O_CREAT)
- Flags |= DB_CREATE ;
-
-#if O_RDONLY == 0
- if (flags == O_RDONLY)
-#else
- if ((flags & O_RDONLY) == O_RDONLY && (flags & O_RDWR) != O_RDWR)
-#endif
- Flags |= DB_RDONLY ;
-
-#ifdef O_TRUNC
- if ((flags & O_TRUNC) == O_TRUNC)
- Flags |= DB_TRUNCATE ;
-#endif
-
- status = db_open(name, RETVAL->type, Flags, mode, NULL, openinfo, &RETVAL->dbp) ;
- if (status == 0)
-#if DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR < 6
- status = (RETVAL->dbp->cursor)(RETVAL->dbp, NULL, &RETVAL->cursor) ;
-#else
- status = (RETVAL->dbp->cursor)(RETVAL->dbp, NULL, &RETVAL->cursor,
- 0) ;
-#endif
-
- if (status)
- RETVAL->dbp = NULL ;
-
- }
-#else
-
-#if defined(DB_LIBRARY_COMPATIBILITY_API) && DB_VERSION_MAJOR > 2
- RETVAL->dbp = __db185_open(name, flags, mode, RETVAL->type, openinfo) ;
-#else
- RETVAL->dbp = dbopen(name, flags, mode, RETVAL->type, openinfo) ;
-#endif /* DB_LIBRARY_COMPATIBILITY_API */
-
-#endif
-
- return (RETVAL) ;
-
-#else /* Berkeley DB Version > 2 */
-
- SV ** svp;
- HV * action ;
- DB_File RETVAL = (DB_File)safemalloc(sizeof(DB_File_type)) ;
- DB * dbp ;
- STRLEN n_a;
- int status ;
-
-/* printf("In ParseOpenInfo name=[%s] flags=[%d] mode = [%d]\n", name, flags, mode) ; */
- 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 ;
-
- /* DGH - Next line added to avoid SEGV on existing hash DB */
- CurrentDB = RETVAL;
-
- /* fd for 1.86 hash in memory files doesn't return -1 like 1.85 */
- RETVAL->in_memory = (name == NULL) ;
-
- status = db_create(&RETVAL->dbp, NULL,0) ;
- /* printf("db_create returned %d %s\n", status, db_strerror(status)) ; */
- if (status) {
- RETVAL->dbp = NULL ;
- return (RETVAL) ;
- }
- dbp = RETVAL->dbp ;
-
- if (sv)
- {
- if (! SvROK(sv) )
- croak ("type parameter is not a reference") ;
-
- svp = hv_fetch( (HV*)SvRV(sv), "GOT", 3, FALSE) ;
- if (svp && SvOK(*svp))
- action = (HV*) SvRV(*svp) ;
- else
- croak("internal error") ;
-
- if (sv_isa(sv, "DB_File::HASHINFO"))
- {
-
- if (!isHASH)
- croak("DB_File can only tie an associative array to a DB_HASH database") ;
-
- RETVAL->type = DB_HASH ;
-
- svp = hv_fetch(action, "hash", 4, FALSE);
-
- if (svp && SvOK(*svp))
- {
- (void)dbp->set_h_hash(dbp, hash_cb) ;
- RETVAL->hash = newSVsv(*svp) ;
- }
-
- svp = hv_fetch(action, "ffactor", 7, FALSE);
- if (svp)
- (void)dbp->set_h_ffactor(dbp, SvIV(*svp)) ;
-
- svp = hv_fetch(action, "nelem", 5, FALSE);
- if (svp)
- (void)dbp->set_h_nelem(dbp, SvIV(*svp)) ;
-
- svp = hv_fetch(action, "bsize", 5, FALSE);
- if (svp)
- (void)dbp->set_pagesize(dbp, SvIV(*svp));
-
- svp = hv_fetch(action, "cachesize", 9, FALSE);
- if (svp)
- (void)dbp->set_cachesize(dbp, 0, SvIV(*svp), 0) ;
-
- svp = hv_fetch(action, "lorder", 6, FALSE);
- if (svp)
- (void)dbp->set_lorder(dbp, SvIV(*svp)) ;
-
- PrintHash(info) ;
- }
- else if (sv_isa(sv, "DB_File::BTREEINFO"))
- {
- if (!isHASH)
- croak("DB_File can only tie an associative array to a DB_BTREE database");
-
- RETVAL->type = DB_BTREE ;
-
- svp = hv_fetch(action, "compare", 7, FALSE);
- if (svp && SvOK(*svp))
- {
- (void)dbp->set_bt_compare(dbp, btree_compare) ;
- RETVAL->compare = newSVsv(*svp) ;
- }
-
- svp = hv_fetch(action, "prefix", 6, FALSE);
- if (svp && SvOK(*svp))
- {
- (void)dbp->set_bt_prefix(dbp, btree_prefix) ;
- RETVAL->prefix = newSVsv(*svp) ;
- }
-
- svp = hv_fetch(action, "flags", 5, FALSE);
- if (svp)
- (void)dbp->set_flags(dbp, SvIV(*svp)) ;
-
- svp = hv_fetch(action, "cachesize", 9, FALSE);
- if (svp)
- (void)dbp->set_cachesize(dbp, 0, SvIV(*svp), 0) ;
-
- svp = hv_fetch(action, "psize", 5, FALSE);
- if (svp)
- (void)dbp->set_pagesize(dbp, SvIV(*svp)) ;
-
- svp = hv_fetch(action, "lorder", 6, FALSE);
- if (svp)
- (void)dbp->set_lorder(dbp, SvIV(*svp)) ;
-
- PrintBtree(info) ;
-
- }
- else if (sv_isa(sv, "DB_File::RECNOINFO"))
- {
- int fixed = FALSE ;
-
- if (isHASH)
- croak("DB_File can only tie an array to a DB_RECNO database");
-
- RETVAL->type = DB_RECNO ;
-
- svp = hv_fetch(action, "flags", 5, FALSE);
- if (svp) {
- int flags = SvIV(*svp) ;
- /* remove FIXDLEN, if present */
- if (flags & DB_FIXEDLEN) {
- fixed = TRUE ;
- flags &= ~DB_FIXEDLEN ;
- }
- }
-
- svp = hv_fetch(action, "cachesize", 9, FALSE);
- if (svp) {
- status = dbp->set_cachesize(dbp, 0, SvIV(*svp), 0) ;
- }
-
- svp = hv_fetch(action, "psize", 5, FALSE);
- if (svp) {
- status = dbp->set_pagesize(dbp, SvIV(*svp)) ;
- }
-
- svp = hv_fetch(action, "lorder", 6, FALSE);
- if (svp) {
- status = dbp->set_lorder(dbp, SvIV(*svp)) ;
- }
-
- svp = hv_fetch(action, "bval", 4, FALSE);
- if (svp && SvOK(*svp))
- {
- int value ;
- if (SvPOK(*svp))
- value = (int)*SvPV(*svp, n_a) ;
- else
- value = SvIV(*svp) ;
-
- if (fixed) {
- status = dbp->set_re_pad(dbp, value) ;
- }
- else {
- status = dbp->set_re_delim(dbp, value) ;
- }
-
- }
-
- if (fixed) {
- svp = hv_fetch(action, "reclen", 6, FALSE);
- if (svp) {
- u_int32_t len = (u_int32_t)SvIV(*svp) ;
- status = dbp->set_re_len(dbp, len) ;
- }
- }
-
- if (name != NULL) {
- status = dbp->set_re_source(dbp, name) ;
- name = NULL ;
- }
-
- svp = hv_fetch(action, "bfname", 6, FALSE);
- if (svp && SvOK(*svp)) {
- char * ptr = SvPV(*svp,n_a) ;
- name = (char*) n_a ? ptr : NULL ;
- }
- else
- name = NULL ;
-
-
- status = dbp->set_flags(dbp, DB_RENUMBER) ;
-
- if (flags){
- (void)dbp->set_flags(dbp, flags) ;
- }
- PrintRecno(info) ;
- }
- else
- croak("type is not of type DB_File::HASHINFO, DB_File::BTREEINFO or DB_File::RECNOINFO");
- }
-
- {
- int Flags = 0 ;
- int status ;
-
- /* Map 1.x flags to 3.x flags */
- if ((flags & O_CREAT) == O_CREAT)
- Flags |= DB_CREATE ;
-
-#if O_RDONLY == 0
- if (flags == O_RDONLY)
-#else
- if ((flags & O_RDONLY) == O_RDONLY && (flags & O_RDWR) != O_RDWR)
-#endif
- Flags |= DB_RDONLY ;
-
-#ifdef O_TRUNC
- if ((flags & O_TRUNC) == O_TRUNC)
- Flags |= DB_TRUNCATE ;
-#endif
-
- status = (RETVAL->dbp->open)(RETVAL->dbp, name, NULL, RETVAL->type,
- Flags, mode) ;
- /* printf("open returned %d %s\n", status, db_strerror(status)) ; */
-
- if (status == 0)
- status = (RETVAL->dbp->cursor)(RETVAL->dbp, NULL, &RETVAL->cursor,
- 0) ;
- /* printf("cursor returned %d %s\n", status, db_strerror(status)) ; */
-
- if (status)
- RETVAL->dbp = NULL ;
-
- }
-
- return (RETVAL) ;
-
-#endif /* Berkeley DB Version > 2 */
-
-} /* ParseOpenInfo */
-
-
-static double
-#ifdef CAN_PROTOTYPE
-constant(char *name, int arg)
-#else
-constant(name, arg)
-char *name;
-int arg;
-#endif
-{
- errno = 0;
- switch (*name) {
- case 'A':
- break;
- case 'B':
- if (strEQ(name, "BTREEMAGIC"))
-#ifdef BTREEMAGIC
- return BTREEMAGIC;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "BTREEVERSION"))
-#ifdef BTREEVERSION
- return BTREEVERSION;
-#else
- goto not_there;
-#endif
- break;
- case 'C':
- break;
- case 'D':
- if (strEQ(name, "DB_LOCK"))
-#ifdef DB_LOCK
- return DB_LOCK;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_SHMEM"))
-#ifdef DB_SHMEM
- return DB_SHMEM;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "DB_TXN"))
-#ifdef DB_TXN
- return (U32)DB_TXN;
-#else
- goto not_there;
-#endif
- break;
- case 'E':
- break;
- case 'F':
- break;
- case 'G':
- break;
- case 'H':
- if (strEQ(name, "HASHMAGIC"))
-#ifdef HASHMAGIC
- return HASHMAGIC;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "HASHVERSION"))
-#ifdef HASHVERSION
- return HASHVERSION;
-#else
- goto not_there;
-#endif
- break;
- case 'I':
- break;
- case 'J':
- break;
- case 'K':
- break;
- case 'L':
- break;
- case 'M':
- if (strEQ(name, "MAX_PAGE_NUMBER"))
-#ifdef MAX_PAGE_NUMBER
- return (U32)MAX_PAGE_NUMBER;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "MAX_PAGE_OFFSET"))
-#ifdef MAX_PAGE_OFFSET
- return MAX_PAGE_OFFSET;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "MAX_REC_NUMBER"))
-#ifdef MAX_REC_NUMBER
- return (U32)MAX_REC_NUMBER;
-#else
- goto not_there;
-#endif
- break;
- case 'N':
- break;
- case 'O':
- break;
- case 'P':
- break;
- case 'Q':
- break;
- case 'R':
- if (strEQ(name, "RET_ERROR"))
-#ifdef RET_ERROR
- return RET_ERROR;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "RET_SPECIAL"))
-#ifdef RET_SPECIAL
- return RET_SPECIAL;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "RET_SUCCESS"))
-#ifdef RET_SUCCESS
- return RET_SUCCESS;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "R_CURSOR"))
-#ifdef R_CURSOR
- return R_CURSOR;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "R_DUP"))
-#ifdef R_DUP
- return R_DUP;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "R_FIRST"))
-#ifdef R_FIRST
- return R_FIRST;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "R_FIXEDLEN"))
-#ifdef R_FIXEDLEN
- return R_FIXEDLEN;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "R_IAFTER"))
-#ifdef R_IAFTER
- return R_IAFTER;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "R_IBEFORE"))
-#ifdef R_IBEFORE
- return R_IBEFORE;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "R_LAST"))
-#ifdef R_LAST
- return R_LAST;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "R_NEXT"))
-#ifdef R_NEXT
- return R_NEXT;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "R_NOKEY"))
-#ifdef R_NOKEY
- return R_NOKEY;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "R_NOOVERWRITE"))
-#ifdef R_NOOVERWRITE
- return R_NOOVERWRITE;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "R_PREV"))
-#ifdef R_PREV
- return R_PREV;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "R_RECNOSYNC"))
-#ifdef R_RECNOSYNC
- return R_RECNOSYNC;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "R_SETCURSOR"))
-#ifdef R_SETCURSOR
- return R_SETCURSOR;
-#else
- goto not_there;
-#endif
- if (strEQ(name, "R_SNAPSHOT"))
-#ifdef R_SNAPSHOT
- return R_SNAPSHOT;
-#else
- goto not_there;
-#endif
- break;
- case 'S':
- break;
- case 'T':
- break;
- case 'U':
- break;
- case 'V':
- break;
- case 'W':
- break;
- case 'X':
- break;
- case 'Y':
- break;
- case 'Z':
- break;
- case '_':
- break;
- }
- errno = EINVAL;
- return 0;
-
-not_there:
- errno = ENOENT;
- return 0;
-}
-
-MODULE = DB_File PACKAGE = DB_File PREFIX = db_
-
-BOOT:
- {
- __getBerkeleyDBInfo() ;
-
- DBT_clear(empty) ;
- empty.data = &zero ;
- empty.size = sizeof(recno_t) ;
- }
-
-double
-constant(name,arg)
- char * name
- int arg
-
-
-DB_File
-db_DoTie_(isHASH, dbtype, name=undef, flags=O_CREAT|O_RDWR, mode=0666, type=DB_HASH)
- int isHASH
- char * dbtype
- int flags
- int mode
- CODE:
- {
- char * name = (char *) NULL ;
- SV * sv = (SV *) NULL ;
- STRLEN n_a;
-
- if (items >= 3 && SvOK(ST(2)))
- name = (char*) SvPV(ST(2), n_a) ;
-
- if (items == 6)
- sv = ST(5) ;
-
- RETVAL = ParseOpenInfo(aTHX_ isHASH, name, flags, mode, sv) ;
- if (RETVAL->dbp == NULL)
- RETVAL = NULL ;
- }
- OUTPUT:
- RETVAL
-
-int
-db_DESTROY(db)
- DB_File db
- INIT:
- CurrentDB = db ;
- CLEANUP:
- 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)
- SvREFCNT_dec(db->filter_store_key) ;
- if (db->filter_fetch_value)
- 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)
- RETVAL = -1 ;
-#endif
-
-
-int
-db_DELETE(db, key, flags=0)
- DB_File db
- DBTKEY key
- u_int flags
- INIT:
- CurrentDB = db ;
-
-
-int
-db_EXISTS(db, key)
- DB_File db
- DBTKEY key
- CODE:
- {
- DBT value ;
-
- DBT_clear(value) ;
- CurrentDB = db ;
- RETVAL = (((db->dbp)->get)(db->dbp, TXN &key, &value, 0) == 0) ;
- }
- OUTPUT:
- RETVAL
-
-int
-db_FETCH(db, key, flags=0)
- DB_File db
- DBTKEY key
- u_int flags
- CODE:
- {
- DBT value ;
-
- 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)
- }
-
-int
-db_STORE(db, key, value, flags=0)
- DB_File db
- DBTKEY key
- DBT value
- u_int flags
- INIT:
- CurrentDB = db ;
-
-
-int
-db_FIRSTKEY(db)
- DB_File db
- CODE:
- {
- DBTKEY key ;
- DBT value ;
-
- DBT_clear(key) ;
- DBT_clear(value) ;
- CurrentDB = db ;
- RETVAL = do_SEQ(db, key, value, R_FIRST) ;
- ST(0) = sv_newmortal();
- OutputKey(ST(0), key) ;
- }
-
-int
-db_NEXTKEY(db, key)
- DB_File db
- DBTKEY key
- CODE:
- {
- DBT value ;
-
- DBT_clear(value) ;
- CurrentDB = db ;
- RETVAL = do_SEQ(db, key, value, R_NEXT) ;
- ST(0) = sv_newmortal();
- OutputKey(ST(0), key) ;
- }
-
-#
-# These would be nice for RECNO
-#
-
-int
-unshift(db, ...)
- DB_File db
- ALIAS: UNSHIFT = 1
- CODE:
- {
- DBTKEY key ;
- DBT value ;
- int i ;
- int One ;
- DB * Db = db->dbp ;
- STRLEN n_a;
-
- DBT_clear(key) ;
- DBT_clear(value) ;
- CurrentDB = db ;
-#ifdef DB_VERSION_MAJOR
- /* get the first value */
- RETVAL = do_SEQ(db, key, value, DB_FIRST) ;
- RETVAL = 0 ;
-#else
- RETVAL = -1 ;
-#endif
- for (i = items-1 ; i > 0 ; --i)
- {
- value.data = SvPV(ST(i), n_a) ;
- value.size = n_a ;
- One = 1 ;
- key.data = &One ;
- key.size = sizeof(int) ;
-#ifdef DB_VERSION_MAJOR
- RETVAL = (db->cursor->c_put)(db->cursor, &key, &value, DB_BEFORE) ;
-#else
- RETVAL = (Db->put)(Db, &key, &value, R_IBEFORE) ;
-#endif
- if (RETVAL != 0)
- break;
- }
- }
- OUTPUT:
- RETVAL
-
-I32
-pop(db)
- DB_File db
- ALIAS: POP = 1
- CODE:
- {
- DBTKEY key ;
- DBT value ;
-
- DBT_clear(key) ;
- DBT_clear(value) ;
- CurrentDB = db ;
-
- /* First get the final value */
- RETVAL = do_SEQ(db, key, value, R_LAST) ;
- ST(0) = sv_newmortal();
- /* Now delete it */
- if (RETVAL == 0)
- {
- /* the call to del will trash value, so take a copy now */
- OutputValue(ST(0), value) ;
- RETVAL = db_del(db, key, R_CURSOR) ;
- if (RETVAL != 0)
- sv_setsv(ST(0), &PL_sv_undef);
- }
- }
-
-I32
-shift(db)
- DB_File db
- ALIAS: SHIFT = 1
- CODE:
- {
- DBT value ;
- DBTKEY key ;
-
- DBT_clear(key) ;
- DBT_clear(value) ;
- CurrentDB = db ;
- /* get the first value */
- RETVAL = do_SEQ(db, key, value, R_FIRST) ;
- ST(0) = sv_newmortal();
- /* Now delete it */
- if (RETVAL == 0)
- {
- /* the call to del will trash value, so take a copy now */
- OutputValue(ST(0), value) ;
- RETVAL = db_del(db, key, R_CURSOR) ;
- if (RETVAL != 0)
- sv_setsv (ST(0), &PL_sv_undef) ;
- }
- }
-
-
-I32
-push(db, ...)
- DB_File db
- ALIAS: PUSH = 1
- CODE:
- {
- DBTKEY key ;
- DBT value ;
- DB * Db = db->dbp ;
- int i ;
- STRLEN n_a;
- int keyval ;
-
- DBT_flags(key) ;
- DBT_flags(value) ;
- CurrentDB = db ;
- /* Set the Cursor to the Last element */
- RETVAL = do_SEQ(db, key, value, R_LAST) ;
-#ifndef DB_VERSION_MAJOR
- if (RETVAL >= 0)
-#endif
- {
- if (RETVAL == 0)
- keyval = *(int*)key.data ;
- else
- keyval = 0 ;
- for (i = 1 ; i < items ; ++i)
- {
- value.data = SvPV(ST(i), n_a) ;
- value.size = n_a ;
- ++ keyval ;
- key.data = &keyval ;
- key.size = sizeof(int) ;
- RETVAL = (Db->put)(Db, TXN &key, &value, 0) ;
- if (RETVAL != 0)
- break;
- }
- }
- }
- OUTPUT:
- RETVAL
-
-I32
-length(db)
- DB_File db
- ALIAS: FETCHSIZE = 1
- CODE:
- CurrentDB = db ;
- RETVAL = GetArrayLength(aTHX_ db) ;
- OUTPUT:
- RETVAL
-
-
-#
-# Now provide an interface to the rest of the DB functionality
-#
-
-int
-db_del(db, key, flags=0)
- DB_File db
- DBTKEY key
- u_int flags
- CODE:
- CurrentDB = db ;
- RETVAL = db_del(db, key, flags) ;
-#ifdef DB_VERSION_MAJOR
- if (RETVAL > 0)
- RETVAL = -1 ;
- else if (RETVAL == DB_NOTFOUND)
- RETVAL = 1 ;
-#endif
- OUTPUT:
- RETVAL
-
-
-int
-db_get(db, key, value, flags=0)
- DB_File db
- DBTKEY key
- DBT value = NO_INIT
- u_int flags
- CODE:
- CurrentDB = db ;
- DBT_clear(value) ;
- RETVAL = db_get(db, key, value, flags) ;
-#ifdef DB_VERSION_MAJOR
- if (RETVAL > 0)
- RETVAL = -1 ;
- else if (RETVAL == DB_NOTFOUND)
- RETVAL = 1 ;
-#endif
- OUTPUT:
- RETVAL
- value
-
-int
-db_put(db, key, value, flags=0)
- DB_File db
- DBTKEY key
- DBT value
- u_int flags
- CODE:
- CurrentDB = db ;
- RETVAL = db_put(db, key, value, flags) ;
-#ifdef DB_VERSION_MAJOR
- if (RETVAL > 0)
- RETVAL = -1 ;
- else if (RETVAL == DB_KEYEXIST)
- RETVAL = 1 ;
-#endif
- OUTPUT:
- RETVAL
- key if (flagSet(flags, R_IAFTER) || flagSet(flags, R_IBEFORE)) OutputKey(ST(1), key);
-
-int
-db_fd(db)
- DB_File db
- int status = 0 ;
- CODE:
- CurrentDB = db ;
-#ifdef DB_VERSION_MAJOR
- RETVAL = -1 ;
- status = (db->in_memory
- ? -1
- : ((db->dbp)->fd)(db->dbp, &RETVAL) ) ;
- if (status != 0)
- RETVAL = -1 ;
-#else
- RETVAL = (db->in_memory
- ? -1
- : ((db->dbp)->fd)(db->dbp) ) ;
-#endif
- OUTPUT:
- RETVAL
-
-int
-db_sync(db, flags=0)
- DB_File db
- u_int flags
- CODE:
- CurrentDB = db ;
- RETVAL = db_sync(db, flags) ;
-#ifdef DB_VERSION_MAJOR
- if (RETVAL > 0)
- RETVAL = -1 ;
-#endif
- OUTPUT:
- RETVAL
-
-
-int
-db_seq(db, key, value, flags)
- DB_File db
- DBTKEY key
- DBT value = NO_INIT
- u_int flags
- CODE:
- CurrentDB = db ;
- DBT_clear(value) ;
- RETVAL = db_seq(db, key, value, flags);
-#ifdef DB_VERSION_MAJOR
- if (RETVAL > 0)
- RETVAL = -1 ;
- else if (RETVAL == DB_NOTFOUND)
- RETVAL = 1 ;
-#endif
- OUTPUT:
- RETVAL
- 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) ;
-
-SV *
-filter_store_key(db, code)
- DB_File db
- SV * code
- SV * RETVAL = &PL_sv_undef ;
- CODE:
- setFilter(filter_store_key) ;
-
-SV *
-filter_fetch_value(db, code)
- DB_File db
- SV * code
- SV * RETVAL = &PL_sv_undef ;
- CODE:
- setFilter(filter_fetch_value) ;
-
-SV *
-filter_store_value(db, code)
- DB_File db
- SV * code
- SV * RETVAL = &PL_sv_undef ;
- CODE:
- setFilter(filter_store_value) ;
-
-#endif /* DBM_FILTERING */
diff --git a/db/perl.DB_File/DB_File_BS b/db/perl.DB_File/DB_File_BS
deleted file mode 100644
index 9282c4988..000000000
--- a/db/perl.DB_File/DB_File_BS
+++ /dev/null
@@ -1,6 +0,0 @@
-# NeXT needs /usr/lib/libposix.a to load along with DB_File.so
-if ( $dlsrc eq "dl_next.xs" ) {
- @DynaLoader::dl_resolve_using = ( '/usr/lib/libposix.a' );
-}
-
-1;
diff --git a/db/perl.DB_File/MANIFEST b/db/perl.DB_File/MANIFEST
deleted file mode 100644
index 0cc30dbfb..000000000
--- a/db/perl.DB_File/MANIFEST
+++ /dev/null
@@ -1,27 +0,0 @@
-Makefile.PL
-DB_File.pm
-DB_File.xs
-DB_File_BS
-Changes
-config.in
-dbinfo
-hints/dynixptx.pl
-hints/sco.pl
-MANIFEST
-README
-typemap
-t/db-btree.t
-t/db-hash.t
-t/db-recno.t
-version.c
-patches/5.004
-patches/5.004_01
-patches/5.004_02
-patches/5.004_03
-patches/5.004_04
-patches/5.004_05
-patches/5.005
-patches/5.005_01
-patches/5.005_02
-patches/5.005_03
-patches/5.6.0
diff --git a/db/perl.DB_File/Makefile.PL b/db/perl.DB_File/Makefile.PL
deleted file mode 100644
index 25e707df6..000000000
--- a/db/perl.DB_File/Makefile.PL
+++ /dev/null
@@ -1,187 +0,0 @@
-#! perl -w
-use strict ;
-use ExtUtils::MakeMaker 5.16 ;
-use Config ;
-
-my $VER_INFO ;
-my $LIB_DIR ;
-my $INC_DIR ;
-my $DB_NAME ;
-my $LIBS ;
-my $COMPAT185 = "" ;
-
-my @files = ('DB_File.pm', glob "t/*.t") ;
-# See if warnings is available
-eval 'use warnings;';
-if ($@) {
- # not there, so write a dummy warnings.pm
- oldWarnings(@files) ;
-} else {
- # is there,
- newWarnings(@files) ;
-}
-
-ParseCONFIG() ;
-
-if (defined $DB_NAME)
- { $LIBS = $DB_NAME }
-else {
- if ($^O eq 'MSWin32')
- { $LIBS = '-llibdb' }
- else
- { $LIBS = '-ldb' }
-}
-
-# Solaris is special.
-#$LIBS .= " -lthread" if $^O eq 'solaris' ;
-
-# OS2 is a special case, so check for it now.
-my $OS2 = "" ;
-$OS2 = "-DOS2" if $Config{'osname'} eq 'os2' ;
-
-WriteMakefile(
- NAME => 'DB_File',
- LIBS => ["-L${LIB_DIR} $LIBS"],
- MAN3PODS => ' ', # Pods will be built by installman.
- INC => "-I$INC_DIR",
- VERSION_FROM => 'DB_File.pm',
- XSPROTOARG => '-noprototypes',
- DEFINE => "$OS2 $VER_INFO $COMPAT185",
- OBJECT => 'version$(OBJ_EXT) DB_File$(OBJ_EXT)',
- OPTIMIZE => '-g',
- 'macro' => { INSTALLDIRS => 'perl' },
- 'dist' => {COMPRESS=>'gzip', SUFFIX=>'gz'},
- );
-
-
-sub MY::postamble {
- '
-version$(OBJ_EXT): version.c
-
-$(NAME).xs: typemap
- @$(TOUCH) $(NAME).xs
-
-Makefile: config.in
-
-' ;
-}
-
-
-sub ParseCONFIG
-{
- my ($k, $v) ;
- my @badkey = () ;
- my %Info = () ;
- my @Options = qw( INCLUDE LIB PREFIX HASH DBNAME COMPAT185 ) ;
- my %ValidOption = map {$_, 1} @Options ;
- my %Parsed = %ValidOption ;
- my $CONFIG = 'config.in' ;
-
- print "Parsing $CONFIG...\n" ;
-
- # DBNAME & COMPAT185 are optional, so pretend they have
- # been parsed.
- delete $Parsed{'DBNAME'} ;
- delete $Parsed{'COMPAT185'} ;
- $Info{COMPAT185} = "No" ;
-
-
- open(F, "$CONFIG") or die "Cannot open file $CONFIG: $!\n" ;
- while (<F>) {
- s/^\s*|\s*$//g ;
- next if /^\s*$/ or /^\s*#/ ;
- s/\s*#\s*$// ;
-
- ($k, $v) = split(/\s+=\s+/, $_, 2) ;
- $k = uc $k ;
- if ($ValidOption{$k}) {
- delete $Parsed{$k} ;
- $Info{$k} = $v ;
- }
- else {
- push(@badkey, $k) ;
- }
- }
- close F ;
-
- print "Unknown keys in $CONFIG ignored [@badkey]\n"
- if @badkey ;
-
- # check parsed values
- my @missing = () ;
- die "The following keys are missing from $CONFIG file: [@missing]\n"
- if @missing = keys %Parsed ;
-
- $INC_DIR = $ENV{'DB_FILE_INCLUDE'} || $Info{'INCLUDE'} ;
- $LIB_DIR = $ENV{'DB_FILE_LIB'} || $Info{'LIB'} ;
- $DB_NAME = $Info{'DBNAME'} if defined $Info{'DBNAME'} ;
- $COMPAT185 = "-DCOMPAT185 -DDB_LIBRARY_COMPATIBILITY_API"
- if (defined $ENV{'DB_FILE_COMPAT185'} &&
- $ENV{'DB_FILE_COMPAT185'} =~ /^\s*(on|true|1)\s*$/i) ||
- $Info{'COMPAT185'} =~ /^\s*(on|true|1)\s*$/i ;
- my $PREFIX = $Info{'PREFIX'} ;
- my $HASH = $Info{'HASH'} ;
-
- $VER_INFO = "-DmDB_Prefix_t=${PREFIX} -DmDB_Hash_t=${HASH}" ;
-
- print <<EOM if 0 ;
- INCLUDE [$INC_DIR]
- LIB [$LIB_DIR]
- HASH [$HASH]
- PREFIX [$PREFIX]
- DBNAME [$DB_NAME]
-
-EOM
-
- print "Looks Good.\n" ;
-
-}
-
-sub oldWarnings
-{
- local ($^I) = ".bak" ;
- local (@ARGV) = @_ ;
-
- while (<>)
- {
- if (/^__END__/)
- {
- print ;
- my $this = $ARGV ;
- while (<>)
- {
- last if $ARGV ne $this ;
- print ;
- }
- }
-
- s/^(\s*)(no\s+warnings)/${1}local (\$^W) = 0; #$2/ ;
- s/^(\s*)(use\s+warnings)/${1}local (\$^W) = 1; #$2/ ;
- print ;
- }
-}
-
-sub newWarnings
-{
- local ($^I) = ".bak" ;
- local (@ARGV) = @_ ;
-
- while (<>)
- {
- if (/^__END__/)
- {
- my $this = $ARGV ;
- print ;
- while (<>)
- {
- last if $ARGV ne $this ;
- print ;
- }
- }
-
- s/^(\s*)local\s*\(\$\^W\)\s*=\s*\d+\s*;\s*#\s*((no|use)\s+warnings.*)/$1$2/ ;
- print ;
- }
-}
-
-# end of file Makefile.PL
diff --git a/db/perl.DB_File/README b/db/perl.DB_File/README
deleted file mode 100644
index e780111b2..000000000
--- a/db/perl.DB_File/README
+++ /dev/null
@@ -1,396 +0,0 @@
- DB_File
-
- Version 1.76
-
- 15th January 2001
-
- Copyright (c) 1995-2001 Paul Marquess. All rights reserved. This
- program is free software; you can redistribute it and/or modify
- it under the same terms as Perl itself.
-
-
-IMPORTANT NOTICE
-================
-
-If are using the locking technique described in older versions of
-DB_File, please read the section called "Locking: The Trouble with fd"
-in DB_File.pm immediately. The locking method has been found to be
-unsafe. You risk corrupting your data if you continue to use it.
-
-DESCRIPTION
------------
-
-DB_File is a module which allows Perl programs to make use of the
-facilities provided by Berkeley DB version 1. (DB_File can be built
-version 2 or 3 of Berkeley DB, but it will only support the 1.x
-features),
-
-If you want to make use of the new features available in Berkeley DB
-2.x or 3.x, use the Perl module BerkeleyDB instead.
-
-Berkeley DB is a C library which provides a consistent interface to a
-number of database formats. DB_File provides an interface to all three
-of the database types (hash, btree and recno) currently supported by
-Berkeley DB.
-
-For further details see the documentation included at the end of the
-file DB_File.pm.
-
-PREREQUISITES
--------------
-
-Before you can build DB_File you must have the following installed on
-your system:
-
- * Perl 5.004 or greater.
-
- * Berkeley DB.
-
- The official web site for Berkeley DB is http://www.sleepycat.com.
- The latest version of Berkeley DB is always available there. It
- is recommended that you use the most recent version available at
- the Sleepycat site.
-
- The one exception to this advice is where you want to use DB_File
- to access database files created by a third-party application, like
- Sendmail or Netscape. In these cases you must build DB_File with a
- compatible version of Berkeley DB.
-
- If you want to use Berkeley DB 2.x, you must have version 2.3.4
- or greater. If you want to use Berkeley DB 3.x, any version will
- do. For Berkeley DB 1.x, use either version 1.85 or 1.86.
-
-
-BUILDING THE MODULE
--------------------
-
-Assuming you have met all the prerequisites, building the module should
-be relatively straightforward.
-
-Step 1 : If you are running either Solaris 2.5 or HP-UX 10 and want
- to use Berkeley DB version 2 or 3, read either the Solaris Notes
- or HP-UX Notes sections below. If you are running Linux please
- read the Linux Notes section before proceeding.
-
-Step 2 : Edit the file config.in to suit you local installation.
- Instructions are given in the file.
-
-Step 3 : Build and test the module using this sequence of commands:
-
- perl Makefile.PL
- make
- make test
-
-
- NOTE:
- If you have a very old version of Berkeley DB (i.e. pre 1.85),
- three of the tests in the recno test harness may fail (tests 51,
- 53 and 55). You can safely ignore the errors if you're never
- going to use the broken functionality (recno databases with a
- modified bval). Otherwise you'll have to upgrade your DB
- library.
-
-
-INSTALLATION
-------------
-
- make install
-
-
-TROUBLESHOOTING
-===============
-
-Here are some of the common problems people encounter when building
-DB_File.
-
-Missing db.h or libdb.a
------------------------
-
-If you get an error like this:
-
- cc -c -I/usr/local/include -Dbool=char -DHAS_BOOL
- -O2 -DVERSION=\"1.64\" -DXS_VERSION=\"1.64\" -fpic
- -I/usr/local/lib/perl5/i586-linux/5.00404/CORE -DmDB_Prefix_t=size_t
- -DmDB_Hash_t=u_int32_t DB_File.c
- DB_File.xs:101: db.h: No such file or directory
-
-or this:
-
- LD_RUN_PATH="/lib" cc -o blib/arch/auto/DB_File/DB_File.so -shared
- -L/usr/local/lib DB_File.o -L/usr/local/lib -ldb
- ld: cannot open -ldb: No such file or directory
-
-This symptom can imply:
-
- 1. You don't have Berkeley DB installed on your system at all.
- Solution: get & install Berkeley DB.
-
- 2. You do have Berkeley DB installed, but it isn't in a standard place.
- Solution: Edit config.in and set the LIB and INCLUDE variables to point
- to the directories where libdb.a and db.h are installed.
-
-
-Undefined symbol db_version
----------------------------
-
-DB_File seems to have built correctly, but you get an error like this
-when you run the test harness:
-
- $ make test
- PERL_DL_NONLAZY=1 /usr/bin/perl5.00404 -I./blib/arch -I./blib/lib
- -I/usr/local/lib/perl5/i586-linux/5.00404 -I/usr/local/lib/perl5 -e 'use
- Test::Harness qw(&runtests $verbose); $verbose=0; runtests @ARGV;' t/*.t
- 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:
- db_version at /usr/local/lib/perl5/i586-linux/5.00404/DynaLoader.pm
- line 166.
-
- at t/db-btree.t line 21
- BEGIN failed--compilation aborted at t/db-btree.t line 21.
- dubious Test returned status 2 (wstat 512, 0x200)
-
-This error usually happens when you have both version 1 and version
-2 of Berkeley DB installed on your system and DB_File attempts to
-build using the db.h for Berkeley DB version 2 and the version 1
-library. Unfortunately the two versions aren't compatible with each
-other. The undefined symbol error is actually caused because Berkeley
-DB version 1 doesn't have the symbol db_version.
-
-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
----------------------------------------
-
-BerkeleyDB seems to have built correctly, but you get an error like this
-when you run the test harness:
-
- $ make test
- PERL_DL_NONLAZY=1 /home/paul/perl/install/bin/perl5.00560 -Iblib/arch
- -Iblib/lib -I/home/paul/perl/install/5.005_60/lib/5.00560/i586-linux
- -I/home/paul/perl/install/5.005_60/lib/5.00560 -e 'use Test::Harness
- qw(&runtests $verbose); $verbose=0; runtests @ARGV;' t/*.t
- t/db-btree..........
- DB_File needs compatible versions of libdb & db.h
- you have db.h version 2.3.7 and libdb version 2.7.5
- BEGIN failed--compilation aborted at t/db-btree.t line 21.
- ...
-
-Another variation on the theme of having two versions of Berkeley DB on
-your system.
-
-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 BerkeleyDB to use.
- If you are running Linux, please read the Linux Notes section
- below.
-
-
-Linux Notes
------------
-
-Newer versions of Linux (e.g. RedHat 6, SuSe 6) ship with a C library
-that has version 2.x of Berkeley DB linked into it. This makes it
-difficult to build this module with anything other than the version of
-Berkeley DB that shipped with your Linux release. If you do try to use
-a different version of Berkeley DB you will most likely get the error
-described in the "Incompatible versions of db.h and libdb" section of
-this file.
-
-To make matters worse, prior to Perl 5.6.1, the perl binary itself
-*always* included the Berkeley DB library.
-
-If you want to use a newer version of Berkeley DB with this module, the
-easiest solution is to use Perl 5.6.1 (or better) and Berkeley DB 3.x
-(or better).
-
-There are two approaches you can use to get older versions of Perl to
-work with specific versions of Berkeley DB. Both have their advantages
-and disadvantages.
-
-The first approach will only work when you want to build a version of
-Perl older than 5.6.1 along with Berkeley DB 3.x. If you want to use
-Berkeley DB 2.x, you must use the next approach. This approach involves
-rebuilding your existing version of Perl after applying an unofficial
-patch. The "patches" directory in the this module's source distribution
-contains a number of patch files. There is one patch file for every
-stable version of Perl since 5.004. Apply the appropriate patch to your
-Perl source tree before re-building and installing Perl from scratch.
-For example, assuming you are in the top-level source directory for
-Perl 5.6.0, the command below will apply the necessary patch. Remember
-to replace the path shown below with one that points to this module's
-patches directory.
-
- patch -p1 -N </path/to/DB_File/patches/5.6.0
-
-Now rebuild & install perl. You should now have a perl binary that can
-be used to build this module. Follow the instructions in "BUILDING THE
-MODULE", remembering to set the INCLUDE and LIB variables in config.in.
-
-
-The second approach will work with both Berkeley DB 2.x and 3.x.
-Start by building Berkeley DB as a shared library. This is from
-the Berkeley DB build instructions:
-
- Building Shared Libraries for the GNU GCC compiler
-
- If you're using gcc and there's no better shared library example for
- your architecture, the following shared library build procedure will
- probably work.
-
- Add the -fpic option to the CFLAGS value in the Makefile.
-
- Rebuild all of your .o files. This will create a Berkeley DB library
- that contains .o files with PIC code. To build the shared library,
- then take the following steps in the library build directory:
-
- % mkdir tmp
- % cd tmp
- % ar xv ../libdb.a
- % gcc -shared -o libdb.so *.o
- % mv libdb.so ..
- % cd ..
- % rm -rf tmp
-
- Note, you may have to change the gcc line depending on the
- requirements of your system.
-
- The file libdb.so is your shared library
-
-Once you have built libdb.so, you will need to store it somewhere safe.
-
- cp libdb.so /usr/local/BerkeleyDB/lib
-
-If you now set the LD_PRELOAD environment variable to point to this
-shared library, Perl will use it instead of the version of Berkeley DB
-that shipped with your Linux distribution.
-
- export LD_PRELOAD=/usr/local/BerkeleyDB/lib/libdb.so
-
-Finally follow the instructions in "BUILDING THE MODULE" to build,
-test and install this module. Don't forget to set the INCLUDE and LIB
-variables in config.in.
-
-Remember, you will need to have the LD_PRELOAD variable set anytime you
-want to use Perl with Berkeley DB. Also note that if you have LD_PRELOAD
-permanently set it will affect ALL commands you execute. This may be a
-problem if you run any commands that access a database created by the
-version of Berkeley DB that shipped with your Linux distribution.
-
-
-Solaris Notes
--------------
-
-If you are running Solaris 2.5, and you get this error when you run the
-DB_File test harness:
-
- libc internal error: _rmutex_unlock: rmutex not held.
-
-you probably need to install a Sun patch. It has been reported that
-Sun patch 103187-25 (or later revisions) fixes this problem.
-
-To find out if you have the patch installed, the command "showrev -p"
-will display the patches that are currently installed on your system.
-
-
-HP-UX Notes
------------
-
-Some people running HP-UX 10 have reported getting an error like this
-when building DB_File with the native HP-UX compiler.
-
- ld: (Warning) At least one PA 2.0 object file (DB_File.o) was detected.
- The linked output may not run on a PA 1.x system.
- ld: Invalid loader fixup for symbol "$000000A5".
-
-If this is the case for you, Berkeley DB needs to be recompiled with
-the +z or +Z option and the resulting library placed in a .sl file. The
-following steps should do the trick:
-
- 1: Configure the Berkeley DB distribution with the +z or +Z C compiler
- flag:
-
- env "CFLAGS=+z" ../dist/configure ...
-
- 2: Edit the Berkeley DB Makefile and change:
-
- "libdb= libdb.a" to "libdb= libdb.sl".
-
-
- 3: Build and install the Berkeley DB distribution as usual.
-
-
-IRIX NOTES
-----------
-
-If you are running IRIX, and want to use Berkeley DB version 1, you can
-get it from http://reality.sgi.com/ariel. It has the patches necessary
-to compile properly on IRIX 5.3.
-
-
-FEEDBACK
-========
-
-How to report a problem with DB_File.
-
-To help me help you, I need the following information:
-
- 1. The version of Perl and the operating system name and version you
- are running. The *complete* output from running "perl -V" will
- tell me all I need to know. Don't edit the output in any way. Note,
- I want you to run "perl -V" and NOT "perl -v".
-
- If your perl does not understand the "-V" option it is too old. DB_File
- needs Perl version 5.004 or better.
-
- 2. The version of DB_File you have.
- If you have successfully installed DB_File, this one-liner will
- tell you:
-
- perl -e 'use DB_File; print "DB_File ver $DB_File::VERSION\n"'
-
- If you haven't installed DB_File then search DB_File.pm for a line
- like this:
-
- $VERSION = "1.20" ;
-
- 3. The version of Berkeley DB you are using.
- If you are using a version older than 1.85, think about upgrading. One
- point to note if you are considering upgrading Berkeley DB - the
- file formats for 1.85, 1.86, 2.0, 3.0 & 3.1 are all different.
-
- If you have successfully installed DB_File, this command will display
- the version of Berkeley DB it was built with:
-
- perl -e 'use DB_File; print "Berkeley DB ver $DB_File::db_ver\n"'
-
- 4. If you are having problems building DB_File, send me a complete log
- of what happened.
-
- 5. Now the difficult one. If you think you have found a bug in DB_File
- and you want me to fix it, you will *greatly* enhance the chances
- of me being able to track it down by sending me a small
- self-contained Perl script that illustrates the problem you are
- encountering. Include a summary of what you think the problem is
- and a log of what happens when you run the script, in case I can't
- reproduce your problem on my system. If possible, don't have the
- script dependent on an existing 20Meg database. If the script you
- send me can create the database itself then that is preferred.
-
- I realise that in some cases this is easier said than done, so if
- you can only reproduce the problem in your existing script, then
- you can post me that if you want. Just don't expect me to find your
- problem in a hurry, or at all. :-)
-
-
-CHANGES
--------
-
-See the Changes file.
-
-Paul Marquess <Paul.Marquess@btinternet.com>
diff --git a/db/perl.DB_File/config.in b/db/perl.DB_File/config.in
deleted file mode 100644
index 5bda4a667..000000000
--- a/db/perl.DB_File/config.in
+++ /dev/null
@@ -1,99 +0,0 @@
-# Filename: config.in
-#
-# written by Paul Marquess <Paul.Marquess@btinternet.com>
-# last modified 9th Sept 1997
-# version 1.55
-
-# 1. Where is the file db.h?
-#
-# 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 = /usr/include
-INCLUDE = ./libraries/3.2.7
-
-# 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 = /usr/lib
-LIB = ./libraries/3.2.7
-
-# 3. What version of Berkely DB have you got?
-#
-# If you have version 2.0 or greater, you can skip this question.
-#
-# If you have Berkeley DB 1.78 or greater you shouldn't have to
-# change the definitions for PREFIX and HASH below.
-#
-# For older versions of Berkeley DB change both PREFIX and HASH to int.
-# Version 1.71, 1.72 and 1.73 are known to need this change.
-#
-# If you don't know what version you have have a look in the file db.h.
-#
-# Search for the string "DB_VERSION_MAJOR". If it is present, you
-# have Berkeley DB version 2 (or greater).
-#
-# If that didn't work, find the definition of the BTREEINFO typedef.
-# Check the return type from the prefix element. It should look like
-# this in an older copy of db.h:
-#
-# int (*prefix) __P((const DBT *, const DBT *));
-#
-# and like this in a more recent copy:
-#
-# size_t (*prefix) /* prefix function */
-# __P((const DBT *, const DBT *));
-#
-# Change the definition of PREFIX, below, to reflect the return type
-# of the prefix function in your db.h.
-#
-# Now find the definition of the HASHINFO typedef. Check the return
-# type of the hash element. Older versions look like this:
-#
-# int (*hash) __P((const void *, size_t));
-#
-# newer like this:
-#
-# u_int32_t /* hash function */
-# (*hash) __P((const void *, size_t));
-#
-# Change the definition of HASH, below, to reflect the return type of
-# the hash function in your db.h.
-#
-
-PREFIX = size_t
-HASH = u_int32_t
-
-# 4. Is the library called libdb?
-#
-# If you have copies of both 1.x and 2.x Berkeley DB installed on
-# your system it can sometimes be tricky to make sure you are using
-# the correct one. Renaming one (or creating a symbolic link) to
-# include the version number of the library can help.
-#
-# For example, if you have both Berkeley DB 2.3.12 and 1.85 on your
-# system and you want to use the Berkeley DB version 2 library you
-# could rename the version 2 library from libdb.a to libdb-2.3.12.a and
-# change the DBNAME line below to look like this:
-#
-# DBNAME = -ldb-2.3.12
-#
-# That will ensure you are linking the correct version of the DB
-# library.
-#
-# Note: If you are building this module with Win32, -llibdb will be
-# used by default.
-#
-# If you have changed the name of the library, uncomment the line
-# below (by removing the leading #) and edit the line to use the name
-# you have picked.
-
-#DBNAME = -ldb-2.4.10
-
-# end of file config.in
diff --git a/db/perl.DB_File/dbinfo b/db/perl.DB_File/dbinfo
deleted file mode 100644
index 5a4df1590..000000000
--- a/db/perl.DB_File/dbinfo
+++ /dev/null
@@ -1,109 +0,0 @@
-#!/usr/local/bin/perl
-
-# Name: dbinfo -- identify berkeley DB version used to create
-# a database file
-#
-# Author: Paul Marquess <Paul.Marquess@btinternet.com>
-# Version: 1.03
-# Date 17th September 2000
-#
-# Copyright (c) 1998-2000 Paul Marquess. All rights reserved.
-# This program is free software; you can redistribute it and/or
-# modify it under the same terms as Perl itself.
-
-# Todo: Print more stats on a db file, e.g. no of records
-# add log/txn/lock files
-
-use strict ;
-
-my %Data =
- (
- 0x053162 => {
- Type => "Btree",
- Versions =>
- {
- 1 => "Unknown (older than 1.71)",
- 2 => "Unknown (older than 1.71)",
- 3 => "1.71 -> 1.85, 1.86",
- 4 => "Unknown",
- 5 => "2.0.0 -> 2.3.0",
- 6 => "2.3.1 -> 2.7.7",
- 7 => "3.0.x",
- 8 => "3.1.x or greater",
- }
- },
- 0x061561 => {
- Type => "Hash",
- Versions =>
- {
- 1 => "Unknown (older than 1.71)",
- 2 => "1.71 -> 1.85",
- 3 => "1.86",
- 4 => "2.0.0 -> 2.1.0",
- 5 => "2.2.6 -> 2.7.7",
- 6 => "3.0.x",
- 7 => "3.1.x or greater",
- }
- },
- 0x042253 => {
- Type => "Queue",
- Versions =>
- {
- 1 => "3.0.x",
- 2 => "3.1.x",
- 3 => "3.2.x or greater",
- }
- },
- ) ;
-
-die "Usage: dbinfo file\n" unless @ARGV == 1 ;
-
-print "testing file $ARGV[0]...\n\n" ;
-open (F, "<$ARGV[0]") or die "Cannot open file $ARGV[0]: $!\n" ;
-
-my $buff ;
-read F, $buff, 20 ;
-
-my (@info) = unpack("NNNNN", $buff) ;
-my (@info1) = unpack("VVVVV", $buff) ;
-my ($magic, $version, $endian) ;
-
-if ($Data{$info[0]}) # first try DB 1.x format
-{
- $magic = $info[0] ;
- $version = $info[1] ;
- $endian = "Unknown" ;
-}
-elsif ($Data{$info[3]}) # next DB 2.x big endian
-{
- $magic = $info[3] ;
- $version = $info[4] ;
- $endian = "Big Endian" ;
-}
-elsif ($Data{$info1[3]}) # next DB 2.x little endian
-{
- $magic = $info1[3] ;
- $version = $info1[4] ;
- $endian = "Little Endian" ;
-}
-else
- { die "not a Berkeley DB database file.\n" }
-
-my $type = $Data{$magic} ;
-$magic = sprintf "%06X", $magic ;
-
-my $ver_string = "Unknown" ;
-$ver_string = $type->{Versions}{$version}
- if defined $type->{Versions}{$version} ;
-
-print <<EOM ;
-File Type: Berkeley DB $type->{Type} file.
-File Version ID: $version
-Built with Berkeley DB: $ver_string
-Byte Order: $endian
-Magic: $magic
-EOM
-
-close F ;
-
-exit ;
diff --git a/db/perl.DB_File/hints/dynixptx.pl b/db/perl.DB_File/hints/dynixptx.pl
deleted file mode 100644
index bb5ffa56e..000000000
--- a/db/perl.DB_File/hints/dynixptx.pl
+++ /dev/null
@@ -1,3 +0,0 @@
-# Need to add an extra '-lc' to the end to work around a DYNIX/ptx bug
-
-$self->{LIBS} = ['-lm -lc'];
diff --git a/db/perl.DB_File/hints/sco.pl b/db/perl.DB_File/hints/sco.pl
deleted file mode 100644
index ff6044094..000000000
--- a/db/perl.DB_File/hints/sco.pl
+++ /dev/null
@@ -1,2 +0,0 @@
-# osr5 needs to explicitly link against libc to pull in some static symbols
-$self->{LIBS} = ['-ldb -lc'] if $Config{'osvers'} =~ '3\.2v5\.0\..' ;
diff --git a/db/perl.DB_File/patches/5.004 b/db/perl.DB_File/patches/5.004
deleted file mode 100644
index 143ec95af..000000000
--- a/db/perl.DB_File/patches/5.004
+++ /dev/null
@@ -1,44 +0,0 @@
-diff perl5.004.orig/Configure perl5.004/Configure
-190a191
-> perllibs=''
-9904a9906,9913
-> : Remove libraries needed only for extensions
-> : The appropriate ext/Foo/Makefile.PL will add them back in, if
-> : necessary.
-> set X `echo " $libs " |
-> sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
-> shift
-> perllibs="$*"
->
-10372a10382
-> perllibs='$perllibs'
-diff perl5.004.orig/Makefile.SH perl5.004/Makefile.SH
-122c122
-< libs = $libs $cryptlib
----
-> libs = $perllibs $cryptlib
-Common subdirectories: perl5.004.orig/Porting and perl5.004/Porting
-Common subdirectories: perl5.004.orig/cygwin32 and perl5.004/cygwin32
-Common subdirectories: perl5.004.orig/eg and perl5.004/eg
-Common subdirectories: perl5.004.orig/emacs and perl5.004/emacs
-Common subdirectories: perl5.004.orig/ext and perl5.004/ext
-Common subdirectories: perl5.004.orig/h2pl and perl5.004/h2pl
-Common subdirectories: perl5.004.orig/hints and perl5.004/hints
-Common subdirectories: perl5.004.orig/lib and perl5.004/lib
-diff perl5.004.orig/myconfig perl5.004/myconfig
-38c38
-< libs=$libs
----
-> libs=$perllibs
-Common subdirectories: perl5.004.orig/os2 and perl5.004/os2
-diff perl5.004.orig/patchlevel.h perl5.004/patchlevel.h
-40a41
-> ,"NODB-1.0 - remove -ldb from core perl binary."
-Common subdirectories: perl5.004.orig/plan9 and perl5.004/plan9
-Common subdirectories: perl5.004.orig/pod and perl5.004/pod
-Common subdirectories: perl5.004.orig/qnx and perl5.004/qnx
-Common subdirectories: perl5.004.orig/t and perl5.004/t
-Common subdirectories: perl5.004.orig/utils and perl5.004/utils
-Common subdirectories: perl5.004.orig/vms and perl5.004/vms
-Common subdirectories: perl5.004.orig/win32 and perl5.004/win32
-Common subdirectories: perl5.004.orig/x2p and perl5.004/x2p
diff --git a/db/perl.DB_File/patches/5.004_01 b/db/perl.DB_File/patches/5.004_01
deleted file mode 100644
index 1b05eb4e0..000000000
--- a/db/perl.DB_File/patches/5.004_01
+++ /dev/null
@@ -1,217 +0,0 @@
-diff -rc perl5.004_01.orig/Configure perl5.004_01/Configure
-*** perl5.004_01.orig/Configure Wed Jun 11 00:28:03 1997
---- perl5.004_01/Configure Sun Nov 12 22:12:35 2000
-***************
-*** 188,193 ****
---- 188,194 ----
- mv=''
- nroff=''
- perl=''
-+ perllibs=''
- pg=''
- pmake=''
- pr=''
-***************
-*** 9907,9912 ****
---- 9908,9921 ----
- shift
- extensions="$*"
-
-+ : Remove libraries needed only for extensions
-+ : The appropriate ext/Foo/Makefile.PL will add them back in, if
-+ : necessary.
-+ set X `echo " $libs " |
-+ sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
-+ shift
-+ perllibs="$*"
-+
- : Remove build directory name from cppstdin so it can be used from
- : either the present location or the final installed location.
- echo " "
-***************
-*** 10375,10380 ****
---- 10384,10390 ----
- patchlevel='$patchlevel'
- path_sep='$path_sep'
- perl='$perl'
-+ perllibs='$perllibs'
- perladmin='$perladmin'
- perlpath='$perlpath'
- pg='$pg'
-diff -rc perl5.004_01.orig/Makefile.SH perl5.004_01/Makefile.SH
-*** perl5.004_01.orig/Makefile.SH Thu Jun 12 23:27:56 1997
---- perl5.004_01/Makefile.SH Sun Nov 12 22:12:35 2000
-***************
-*** 126,132 ****
- ext = \$(dynamic_ext) \$(static_ext)
- DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT)
-
-! libs = $libs $cryptlib
-
- public = perl $suidperl utilities translators
-
---- 126,132 ----
- ext = \$(dynamic_ext) \$(static_ext)
- DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT)
-
-! libs = $perllibs $cryptlib
-
- public = perl $suidperl utilities translators
-
-diff -rc perl5.004_01.orig/lib/ExtUtils/Embed.pm perl5.004_01/lib/ExtUtils/Embed.pm
-*** perl5.004_01.orig/lib/ExtUtils/Embed.pm Wed Apr 2 22:12:04 1997
---- perl5.004_01/lib/ExtUtils/Embed.pm Sun Nov 12 22:12:35 2000
-***************
-*** 170,176 ****
- @path = $path ? split(/:/, $path) : @INC;
-
- push(@potential_libs, @link_args) if scalar @link_args;
-! push(@potential_libs, $Config{libs}) if defined $std;
-
- push(@mods, static_ext()) if $std;
-
---- 170,176 ----
- @path = $path ? split(/:/, $path) : @INC;
-
- push(@potential_libs, @link_args) if scalar @link_args;
-! push(@potential_libs, $Config{perllibs}) if defined $std;
-
- push(@mods, static_ext()) if $std;
-
-diff -rc perl5.004_01.orig/lib/ExtUtils/Liblist.pm perl5.004_01/lib/ExtUtils/Liblist.pm
-*** perl5.004_01.orig/lib/ExtUtils/Liblist.pm Sat Jun 7 01:19:44 1997
---- perl5.004_01/lib/ExtUtils/Liblist.pm Sun Nov 12 22:13:27 2000
-***************
-*** 16,33 ****
-
- sub _unix_os2_ext {
- my($self,$potential_libs, $Verbose) = @_;
-! if ($^O =~ 'os2' and $Config{libs}) {
- # Dynamic libraries are not transitive, so we may need including
- # the libraries linked against perl.dll again.
-
- $potential_libs .= " " if $potential_libs;
-! $potential_libs .= $Config{libs};
- }
- return ("", "", "", "") unless $potential_libs;
- print STDOUT "Potential libraries are '$potential_libs':\n" if $Verbose;
-
- my($so) = $Config{'so'};
-! my($libs) = $Config{'libs'};
- my $Config_libext = $Config{lib_ext} || ".a";
-
-
---- 16,33 ----
-
- sub _unix_os2_ext {
- my($self,$potential_libs, $Verbose) = @_;
-! if ($^O =~ 'os2' and $Config{perllibs}) {
- # Dynamic libraries are not transitive, so we may need including
- # the libraries linked against perl.dll again.
-
- $potential_libs .= " " if $potential_libs;
-! $potential_libs .= $Config{perllibs};
- }
- return ("", "", "", "") unless $potential_libs;
- print STDOUT "Potential libraries are '$potential_libs':\n" if $Verbose;
-
- my($so) = $Config{'so'};
-! my($libs) = $Config{'perllibs'};
- my $Config_libext = $Config{lib_ext} || ".a";
-
-
-***************
-*** 186,196 ****
- my($self, $potential_libs, $Verbose) = @_;
-
- # If user did not supply a list, we punt.
-! # (caller should probably use the list in $Config{libs})
- return ("", "", "", "") unless $potential_libs;
-
- my($so) = $Config{'so'};
-! my($libs) = $Config{'libs'};
- my($libpth) = $Config{'libpth'};
- my($libext) = $Config{'lib_ext'} || ".lib";
-
---- 186,196 ----
- my($self, $potential_libs, $Verbose) = @_;
-
- # If user did not supply a list, we punt.
-! # (caller should probably use the list in $Config{perllibs})
- return ("", "", "", "") unless $potential_libs;
-
- my($so) = $Config{'so'};
-! my($libs) = $Config{'perllibs'};
- my($libpth) = $Config{'libpth'};
- my($libext) = $Config{'lib_ext'} || ".lib";
-
-***************
-*** 540,546 ****
- =item *
-
- If C<$potential_libs> is empty, the return value will be empty.
-! Otherwise, the libraries specified by C<$Config{libs}> (see Config.pm)
- will be appended to the list of C<$potential_libs>. The libraries
- will be searched for in the directories specified in C<$potential_libs>
- as well as in C<$Config{libpth}>. For each library that is found, a
---- 540,546 ----
- =item *
-
- If C<$potential_libs> is empty, the return value will be empty.
-! Otherwise, the libraries specified by C<$Config{perllibs}> (see Config.pm)
- will be appended to the list of C<$potential_libs>. The libraries
- will be searched for in the directories specified in C<$potential_libs>
- as well as in C<$Config{libpth}>. For each library that is found, a
-diff -rc perl5.004_01.orig/lib/ExtUtils/MM_Unix.pm perl5.004_01/lib/ExtUtils/MM_Unix.pm
-*** perl5.004_01.orig/lib/ExtUtils/MM_Unix.pm Thu Jun 12 22:06:18 1997
---- perl5.004_01/lib/ExtUtils/MM_Unix.pm Sun Nov 12 22:12:35 2000
-***************
-*** 2137,2143 ****
- MAP_STATIC = ",
- join(" \\\n\t", reverse sort keys %static), "
-
-! MAP_PRELIBS = $Config::Config{libs} $Config::Config{cryptlib}
- ";
-
- if (defined $libperl) {
---- 2137,2143 ----
- MAP_STATIC = ",
- join(" \\\n\t", reverse sort keys %static), "
-
-! MAP_PRELIBS = $Config::Config{perllibs} $Config::Config{cryptlib}
- ";
-
- if (defined $libperl) {
-diff -rc perl5.004_01.orig/myconfig perl5.004_01/myconfig
-*** perl5.004_01.orig/myconfig Sat Dec 21 01:13:20 1996
---- perl5.004_01/myconfig Sun Nov 12 22:12:35 2000
-***************
-*** 35,41 ****
- Linker and Libraries:
- ld='$ld', ldflags ='$ldflags'
- libpth=$libpth
-! libs=$libs
- libc=$libc, so=$so
- useshrplib=$useshrplib, libperl=$libperl
- Dynamic Linking:
---- 35,41 ----
- Linker and Libraries:
- ld='$ld', ldflags ='$ldflags'
- libpth=$libpth
-! libs=$perllibs
- libc=$libc, so=$so
- useshrplib=$useshrplib, libperl=$libperl
- Dynamic Linking:
-diff -rc perl5.004_01.orig/patchlevel.h perl5.004_01/patchlevel.h
-*** perl5.004_01.orig/patchlevel.h Wed Jun 11 03:06:10 1997
---- perl5.004_01/patchlevel.h Sun Nov 12 22:12:35 2000
-***************
-*** 38,43 ****
---- 38,44 ----
- */
- static char *local_patches[] = {
- NULL
-+ ,"NODB-1.0 - remove -ldb from core perl binary."
- ,NULL
- };
-
diff --git a/db/perl.DB_File/patches/5.004_02 b/db/perl.DB_File/patches/5.004_02
deleted file mode 100644
index 238f87379..000000000
--- a/db/perl.DB_File/patches/5.004_02
+++ /dev/null
@@ -1,217 +0,0 @@
-diff -rc perl5.004_02.orig/Configure perl5.004_02/Configure
-*** perl5.004_02.orig/Configure Thu Aug 7 15:08:44 1997
---- perl5.004_02/Configure Sun Nov 12 22:06:24 2000
-***************
-*** 188,193 ****
---- 188,194 ----
- mv=''
- nroff=''
- perl=''
-+ perllibs=''
- pg=''
- pmake=''
- pr=''
-***************
-*** 9911,9916 ****
---- 9912,9925 ----
- shift
- extensions="$*"
-
-+ : Remove libraries needed only for extensions
-+ : The appropriate ext/Foo/Makefile.PL will add them back in, if
-+ : necessary.
-+ set X `echo " $libs " |
-+ sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
-+ shift
-+ perllibs="$*"
-+
- : Remove build directory name from cppstdin so it can be used from
- : either the present location or the final installed location.
- echo " "
-***************
-*** 10379,10384 ****
---- 10388,10394 ----
- patchlevel='$patchlevel'
- path_sep='$path_sep'
- perl='$perl'
-+ perllibs='$perllibs'
- perladmin='$perladmin'
- perlpath='$perlpath'
- pg='$pg'
-diff -rc perl5.004_02.orig/Makefile.SH perl5.004_02/Makefile.SH
-*** perl5.004_02.orig/Makefile.SH Thu Aug 7 13:10:53 1997
---- perl5.004_02/Makefile.SH Sun Nov 12 22:06:24 2000
-***************
-*** 126,132 ****
- ext = \$(dynamic_ext) \$(static_ext)
- DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT)
-
-! libs = $libs $cryptlib
-
- public = perl $suidperl utilities translators
-
---- 126,132 ----
- ext = \$(dynamic_ext) \$(static_ext)
- DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT)
-
-! libs = $perllibs $cryptlib
-
- public = perl $suidperl utilities translators
-
-diff -rc perl5.004_02.orig/lib/ExtUtils/Embed.pm perl5.004_02/lib/ExtUtils/Embed.pm
-*** perl5.004_02.orig/lib/ExtUtils/Embed.pm Fri Aug 1 15:08:44 1997
---- perl5.004_02/lib/ExtUtils/Embed.pm Sun Nov 12 22:06:24 2000
-***************
-*** 178,184 ****
- @path = $path ? split(/:/, $path) : @INC;
-
- push(@potential_libs, @link_args) if scalar @link_args;
-! push(@potential_libs, $Config{libs}) if defined $std;
-
- push(@mods, static_ext()) if $std;
-
---- 178,184 ----
- @path = $path ? split(/:/, $path) : @INC;
-
- push(@potential_libs, @link_args) if scalar @link_args;
-! push(@potential_libs, $Config{perllibs}) if defined $std;
-
- push(@mods, static_ext()) if $std;
-
-diff -rc perl5.004_02.orig/lib/ExtUtils/Liblist.pm perl5.004_02/lib/ExtUtils/Liblist.pm
-*** perl5.004_02.orig/lib/ExtUtils/Liblist.pm Fri Aug 1 19:36:58 1997
---- perl5.004_02/lib/ExtUtils/Liblist.pm Sun Nov 12 22:06:24 2000
-***************
-*** 16,33 ****
-
- sub _unix_os2_ext {
- my($self,$potential_libs, $verbose) = @_;
-! if ($^O =~ 'os2' and $Config{libs}) {
- # Dynamic libraries are not transitive, so we may need including
- # the libraries linked against perl.dll again.
-
- $potential_libs .= " " if $potential_libs;
-! $potential_libs .= $Config{libs};
- }
- return ("", "", "", "") unless $potential_libs;
- print STDOUT "Potential libraries are '$potential_libs':\n" if $verbose;
-
- my($so) = $Config{'so'};
-! my($libs) = $Config{'libs'};
- my $Config_libext = $Config{lib_ext} || ".a";
-
-
---- 16,33 ----
-
- sub _unix_os2_ext {
- my($self,$potential_libs, $verbose) = @_;
-! if ($^O =~ 'os2' and $Config{perllibs}) {
- # Dynamic libraries are not transitive, so we may need including
- # the libraries linked against perl.dll again.
-
- $potential_libs .= " " if $potential_libs;
-! $potential_libs .= $Config{perllibs};
- }
- return ("", "", "", "") unless $potential_libs;
- print STDOUT "Potential libraries are '$potential_libs':\n" if $verbose;
-
- my($so) = $Config{'so'};
-! my($libs) = $Config{'perllibs'};
- my $Config_libext = $Config{lib_ext} || ".a";
-
-
-***************
-*** 186,196 ****
- my($self, $potential_libs, $verbose) = @_;
-
- # If user did not supply a list, we punt.
-! # (caller should probably use the list in $Config{libs})
- return ("", "", "", "") unless $potential_libs;
-
- my($so) = $Config{'so'};
-! my($libs) = $Config{'libs'};
- my($libpth) = $Config{'libpth'};
- my($libext) = $Config{'lib_ext'} || ".lib";
-
---- 186,196 ----
- my($self, $potential_libs, $verbose) = @_;
-
- # If user did not supply a list, we punt.
-! # (caller should probably use the list in $Config{perllibs})
- return ("", "", "", "") unless $potential_libs;
-
- my($so) = $Config{'so'};
-! my($libs) = $Config{'perllibs'};
- my($libpth) = $Config{'libpth'};
- my($libext) = $Config{'lib_ext'} || ".lib";
-
-***************
-*** 540,546 ****
- =item *
-
- If C<$potential_libs> is empty, the return value will be empty.
-! Otherwise, the libraries specified by C<$Config{libs}> (see Config.pm)
- will be appended to the list of C<$potential_libs>. The libraries
- will be searched for in the directories specified in C<$potential_libs>
- as well as in C<$Config{libpth}>. For each library that is found, a
---- 540,546 ----
- =item *
-
- If C<$potential_libs> is empty, the return value will be empty.
-! Otherwise, the libraries specified by C<$Config{perllibs}> (see Config.pm)
- will be appended to the list of C<$potential_libs>. The libraries
- will be searched for in the directories specified in C<$potential_libs>
- as well as in C<$Config{libpth}>. For each library that is found, a
-diff -rc perl5.004_02.orig/lib/ExtUtils/MM_Unix.pm perl5.004_02/lib/ExtUtils/MM_Unix.pm
-*** perl5.004_02.orig/lib/ExtUtils/MM_Unix.pm Tue Aug 5 14:28:08 1997
---- perl5.004_02/lib/ExtUtils/MM_Unix.pm Sun Nov 12 22:06:25 2000
-***************
-*** 2224,2230 ****
- MAP_STATIC = ",
- join(" \\\n\t", reverse sort keys %static), "
-
-! MAP_PRELIBS = $Config::Config{libs} $Config::Config{cryptlib}
- ";
-
- if (defined $libperl) {
---- 2224,2230 ----
- MAP_STATIC = ",
- join(" \\\n\t", reverse sort keys %static), "
-
-! MAP_PRELIBS = $Config::Config{perllibs} $Config::Config{cryptlib}
- ";
-
- if (defined $libperl) {
-diff -rc perl5.004_02.orig/myconfig perl5.004_02/myconfig
-*** perl5.004_02.orig/myconfig Sat Dec 21 01:13:20 1996
---- perl5.004_02/myconfig Sun Nov 12 22:06:25 2000
-***************
-*** 35,41 ****
- Linker and Libraries:
- ld='$ld', ldflags ='$ldflags'
- libpth=$libpth
-! libs=$libs
- libc=$libc, so=$so
- useshrplib=$useshrplib, libperl=$libperl
- Dynamic Linking:
---- 35,41 ----
- Linker and Libraries:
- ld='$ld', ldflags ='$ldflags'
- libpth=$libpth
-! libs=$perllibs
- libc=$libc, so=$so
- useshrplib=$useshrplib, libperl=$libperl
- Dynamic Linking:
-diff -rc perl5.004_02.orig/patchlevel.h perl5.004_02/patchlevel.h
-*** perl5.004_02.orig/patchlevel.h Fri Aug 1 15:07:34 1997
---- perl5.004_02/patchlevel.h Sun Nov 12 22:06:25 2000
-***************
-*** 38,43 ****
---- 38,44 ----
- */
- static char *local_patches[] = {
- NULL
-+ ,"NODB-1.0 - remove -ldb from core perl binary."
- ,NULL
- };
-
diff --git a/db/perl.DB_File/patches/5.004_03 b/db/perl.DB_File/patches/5.004_03
deleted file mode 100644
index 06331eac9..000000000
--- a/db/perl.DB_File/patches/5.004_03
+++ /dev/null
@@ -1,223 +0,0 @@
-diff -rc perl5.004_03.orig/Configure perl5.004_03/Configure
-*** perl5.004_03.orig/Configure Wed Aug 13 16:09:46 1997
---- perl5.004_03/Configure Sun Nov 12 21:56:18 2000
-***************
-*** 188,193 ****
---- 188,194 ----
- mv=''
- nroff=''
- perl=''
-+ perllibs=''
- pg=''
- pmake=''
- pr=''
-***************
-*** 9911,9916 ****
---- 9912,9925 ----
- shift
- extensions="$*"
-
-+ : Remove libraries needed only for extensions
-+ : The appropriate ext/Foo/Makefile.PL will add them back in, if
-+ : necessary.
-+ set X `echo " $libs " |
-+ sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
-+ shift
-+ perllibs="$*"
-+
- : Remove build directory name from cppstdin so it can be used from
- : either the present location or the final installed location.
- echo " "
-***************
-*** 10379,10384 ****
---- 10388,10394 ----
- patchlevel='$patchlevel'
- path_sep='$path_sep'
- perl='$perl'
-+ perllibs='$perllibs'
- perladmin='$perladmin'
- perlpath='$perlpath'
- pg='$pg'
-Only in perl5.004_03: Configure.orig
-diff -rc perl5.004_03.orig/Makefile.SH perl5.004_03/Makefile.SH
-*** perl5.004_03.orig/Makefile.SH Mon Aug 18 19:24:29 1997
---- perl5.004_03/Makefile.SH Sun Nov 12 21:56:18 2000
-***************
-*** 126,132 ****
- ext = \$(dynamic_ext) \$(static_ext)
- DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT)
-
-! libs = $libs $cryptlib
-
- public = perl $suidperl utilities translators
-
---- 126,132 ----
- ext = \$(dynamic_ext) \$(static_ext)
- DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT)
-
-! libs = $perllibs $cryptlib
-
- public = perl $suidperl utilities translators
-
-Only in perl5.004_03: Makefile.SH.orig
-diff -rc perl5.004_03.orig/lib/ExtUtils/Embed.pm perl5.004_03/lib/ExtUtils/Embed.pm
-*** perl5.004_03.orig/lib/ExtUtils/Embed.pm Fri Aug 1 15:08:44 1997
---- perl5.004_03/lib/ExtUtils/Embed.pm Sun Nov 12 21:56:18 2000
-***************
-*** 178,184 ****
- @path = $path ? split(/:/, $path) : @INC;
-
- push(@potential_libs, @link_args) if scalar @link_args;
-! push(@potential_libs, $Config{libs}) if defined $std;
-
- push(@mods, static_ext()) if $std;
-
---- 178,184 ----
- @path = $path ? split(/:/, $path) : @INC;
-
- push(@potential_libs, @link_args) if scalar @link_args;
-! push(@potential_libs, $Config{perllibs}) if defined $std;
-
- push(@mods, static_ext()) if $std;
-
-diff -rc perl5.004_03.orig/lib/ExtUtils/Liblist.pm perl5.004_03/lib/ExtUtils/Liblist.pm
-*** perl5.004_03.orig/lib/ExtUtils/Liblist.pm Fri Aug 1 19:36:58 1997
---- perl5.004_03/lib/ExtUtils/Liblist.pm Sun Nov 12 21:57:17 2000
-***************
-*** 16,33 ****
-
- sub _unix_os2_ext {
- my($self,$potential_libs, $verbose) = @_;
-! if ($^O =~ 'os2' and $Config{libs}) {
- # Dynamic libraries are not transitive, so we may need including
- # the libraries linked against perl.dll again.
-
- $potential_libs .= " " if $potential_libs;
-! $potential_libs .= $Config{libs};
- }
- return ("", "", "", "") unless $potential_libs;
- print STDOUT "Potential libraries are '$potential_libs':\n" if $verbose;
-
- my($so) = $Config{'so'};
-! my($libs) = $Config{'libs'};
- my $Config_libext = $Config{lib_ext} || ".a";
-
-
---- 16,33 ----
-
- sub _unix_os2_ext {
- my($self,$potential_libs, $verbose) = @_;
-! if ($^O =~ 'os2' and $Config{perllibs}) {
- # Dynamic libraries are not transitive, so we may need including
- # the libraries linked against perl.dll again.
-
- $potential_libs .= " " if $potential_libs;
-! $potential_libs .= $Config{perllibs};
- }
- return ("", "", "", "") unless $potential_libs;
- print STDOUT "Potential libraries are '$potential_libs':\n" if $verbose;
-
- my($so) = $Config{'so'};
-! my($libs) = $Config{'perllibs'};
- my $Config_libext = $Config{lib_ext} || ".a";
-
-
-***************
-*** 186,196 ****
- my($self, $potential_libs, $verbose) = @_;
-
- # If user did not supply a list, we punt.
-! # (caller should probably use the list in $Config{libs})
- return ("", "", "", "") unless $potential_libs;
-
- my($so) = $Config{'so'};
-! my($libs) = $Config{'libs'};
- my($libpth) = $Config{'libpth'};
- my($libext) = $Config{'lib_ext'} || ".lib";
-
---- 186,196 ----
- my($self, $potential_libs, $verbose) = @_;
-
- # If user did not supply a list, we punt.
-! # (caller should probably use the list in $Config{perllibs})
- return ("", "", "", "") unless $potential_libs;
-
- my($so) = $Config{'so'};
-! my($libs) = $Config{'perllibs'};
- my($libpth) = $Config{'libpth'};
- my($libext) = $Config{'lib_ext'} || ".lib";
-
-***************
-*** 540,546 ****
- =item *
-
- If C<$potential_libs> is empty, the return value will be empty.
-! Otherwise, the libraries specified by C<$Config{libs}> (see Config.pm)
- will be appended to the list of C<$potential_libs>. The libraries
- will be searched for in the directories specified in C<$potential_libs>
- as well as in C<$Config{libpth}>. For each library that is found, a
---- 540,546 ----
- =item *
-
- If C<$potential_libs> is empty, the return value will be empty.
-! Otherwise, the libraries specified by C<$Config{perllibs}> (see Config.pm)
- will be appended to the list of C<$potential_libs>. The libraries
- will be searched for in the directories specified in C<$potential_libs>
- as well as in C<$Config{libpth}>. For each library that is found, a
-Only in perl5.004_03/lib/ExtUtils: Liblist.pm.orig
-Only in perl5.004_03/lib/ExtUtils: Liblist.pm.rej
-diff -rc perl5.004_03.orig/lib/ExtUtils/MM_Unix.pm perl5.004_03/lib/ExtUtils/MM_Unix.pm
-*** perl5.004_03.orig/lib/ExtUtils/MM_Unix.pm Mon Aug 18 19:16:12 1997
---- perl5.004_03/lib/ExtUtils/MM_Unix.pm Sun Nov 12 21:56:19 2000
-***************
-*** 2224,2230 ****
- MAP_STATIC = ",
- join(" \\\n\t", reverse sort keys %static), "
-
-! MAP_PRELIBS = $Config::Config{libs} $Config::Config{cryptlib}
- ";
-
- if (defined $libperl) {
---- 2224,2230 ----
- MAP_STATIC = ",
- join(" \\\n\t", reverse sort keys %static), "
-
-! MAP_PRELIBS = $Config::Config{perllibs} $Config::Config{cryptlib}
- ";
-
- if (defined $libperl) {
-Only in perl5.004_03/lib/ExtUtils: MM_Unix.pm.orig
-diff -rc perl5.004_03.orig/myconfig perl5.004_03/myconfig
-*** perl5.004_03.orig/myconfig Sat Dec 21 01:13:20 1996
---- perl5.004_03/myconfig Sun Nov 12 21:56:19 2000
-***************
-*** 35,41 ****
- Linker and Libraries:
- ld='$ld', ldflags ='$ldflags'
- libpth=$libpth
-! libs=$libs
- libc=$libc, so=$so
- useshrplib=$useshrplib, libperl=$libperl
- Dynamic Linking:
---- 35,41 ----
- Linker and Libraries:
- ld='$ld', ldflags ='$ldflags'
- libpth=$libpth
-! libs=$perllibs
- libc=$libc, so=$so
- useshrplib=$useshrplib, libperl=$libperl
- Dynamic Linking:
-diff -rc perl5.004_03.orig/patchlevel.h perl5.004_03/patchlevel.h
-*** perl5.004_03.orig/patchlevel.h Wed Aug 13 11:42:01 1997
---- perl5.004_03/patchlevel.h Sun Nov 12 21:56:19 2000
-***************
-*** 38,43 ****
---- 38,44 ----
- */
- static char *local_patches[] = {
- NULL
-+ ,"NODB-1.0 - remove -ldb from core perl binary."
- ,NULL
- };
-
-Only in perl5.004_03: patchlevel.h.orig
diff --git a/db/perl.DB_File/patches/5.004_04 b/db/perl.DB_File/patches/5.004_04
deleted file mode 100644
index a227dc700..000000000
--- a/db/perl.DB_File/patches/5.004_04
+++ /dev/null
@@ -1,209 +0,0 @@
-diff -rc perl5.004_04.orig/Configure perl5.004_04/Configure
-*** perl5.004_04.orig/Configure Fri Oct 3 18:57:39 1997
---- perl5.004_04/Configure Sun Nov 12 21:50:51 2000
-***************
-*** 188,193 ****
---- 188,194 ----
- mv=''
- nroff=''
- perl=''
-+ perllibs=''
- pg=''
- pmake=''
- pr=''
-***************
-*** 9910,9915 ****
---- 9911,9924 ----
- shift
- extensions="$*"
-
-+ : Remove libraries needed only for extensions
-+ : The appropriate ext/Foo/Makefile.PL will add them back in, if
-+ : necessary.
-+ set X `echo " $libs " |
-+ sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
-+ shift
-+ perllibs="$*"
-+
- : Remove build directory name from cppstdin so it can be used from
- : either the present location or the final installed location.
- echo " "
-***************
-*** 10378,10383 ****
---- 10387,10393 ----
- patchlevel='$patchlevel'
- path_sep='$path_sep'
- perl='$perl'
-+ perllibs='$perllibs'
- perladmin='$perladmin'
- perlpath='$perlpath'
- pg='$pg'
-diff -rc perl5.004_04.orig/Makefile.SH perl5.004_04/Makefile.SH
-*** perl5.004_04.orig/Makefile.SH Wed Oct 15 10:33:16 1997
---- perl5.004_04/Makefile.SH Sun Nov 12 21:50:51 2000
-***************
-*** 129,135 ****
- ext = \$(dynamic_ext) \$(static_ext)
- DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT)
-
-! libs = $libs $cryptlib
-
- public = perl $suidperl utilities translators
-
---- 129,135 ----
- ext = \$(dynamic_ext) \$(static_ext)
- DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT)
-
-! libs = $perllibs $cryptlib
-
- public = perl $suidperl utilities translators
-
-diff -rc perl5.004_04.orig/lib/ExtUtils/Embed.pm perl5.004_04/lib/ExtUtils/Embed.pm
-*** perl5.004_04.orig/lib/ExtUtils/Embed.pm Fri Aug 1 15:08:44 1997
---- perl5.004_04/lib/ExtUtils/Embed.pm Sun Nov 12 21:50:51 2000
-***************
-*** 178,184 ****
- @path = $path ? split(/:/, $path) : @INC;
-
- push(@potential_libs, @link_args) if scalar @link_args;
-! push(@potential_libs, $Config{libs}) if defined $std;
-
- push(@mods, static_ext()) if $std;
-
---- 178,184 ----
- @path = $path ? split(/:/, $path) : @INC;
-
- push(@potential_libs, @link_args) if scalar @link_args;
-! push(@potential_libs, $Config{perllibs}) if defined $std;
-
- push(@mods, static_ext()) if $std;
-
-diff -rc perl5.004_04.orig/lib/ExtUtils/Liblist.pm perl5.004_04/lib/ExtUtils/Liblist.pm
-*** perl5.004_04.orig/lib/ExtUtils/Liblist.pm Tue Sep 9 17:41:32 1997
---- perl5.004_04/lib/ExtUtils/Liblist.pm Sun Nov 12 21:51:33 2000
-***************
-*** 16,33 ****
-
- sub _unix_os2_ext {
- my($self,$potential_libs, $verbose) = @_;
-! if ($^O =~ 'os2' and $Config{libs}) {
- # Dynamic libraries are not transitive, so we may need including
- # the libraries linked against perl.dll again.
-
- $potential_libs .= " " if $potential_libs;
-! $potential_libs .= $Config{libs};
- }
- return ("", "", "", "") unless $potential_libs;
- warn "Potential libraries are '$potential_libs':\n" if $verbose;
-
- my($so) = $Config{'so'};
-! my($libs) = $Config{'libs'};
- my $Config_libext = $Config{lib_ext} || ".a";
-
-
---- 16,33 ----
-
- sub _unix_os2_ext {
- my($self,$potential_libs, $verbose) = @_;
-! if ($^O =~ 'os2' and $Config{perllibs}) {
- # Dynamic libraries are not transitive, so we may need including
- # the libraries linked against perl.dll again.
-
- $potential_libs .= " " if $potential_libs;
-! $potential_libs .= $Config{perllibs};
- }
- return ("", "", "", "") unless $potential_libs;
- warn "Potential libraries are '$potential_libs':\n" if $verbose;
-
- my($so) = $Config{'so'};
-! my($libs) = $Config{'perllibs'};
- my $Config_libext = $Config{lib_ext} || ".a";
-
-
-***************
-*** 189,195 ****
- return ("", "", "", "") unless $potential_libs;
-
- my($so) = $Config{'so'};
-! my($libs) = $Config{'libs'};
- my($libpth) = $Config{'libpth'};
- my($libext) = $Config{'lib_ext'} || ".lib";
-
---- 189,195 ----
- return ("", "", "", "") unless $potential_libs;
-
- my($so) = $Config{'so'};
-! my($libs) = $Config{'perllibs'};
- my($libpth) = $Config{'libpth'};
- my($libext) = $Config{'lib_ext'} || ".lib";
-
-***************
-*** 539,545 ****
- =item *
-
- If C<$potential_libs> is empty, the return value will be empty.
-! Otherwise, the libraries specified by C<$Config{libs}> (see Config.pm)
- will be appended to the list of C<$potential_libs>. The libraries
- will be searched for in the directories specified in C<$potential_libs>
- as well as in C<$Config{libpth}>. For each library that is found, a
---- 539,545 ----
- =item *
-
- If C<$potential_libs> is empty, the return value will be empty.
-! Otherwise, the libraries specified by C<$Config{perllibs}> (see Config.pm)
- will be appended to the list of C<$potential_libs>. The libraries
- will be searched for in the directories specified in C<$potential_libs>
- as well as in C<$Config{libpth}>. For each library that is found, a
-diff -rc perl5.004_04.orig/lib/ExtUtils/MM_Unix.pm perl5.004_04/lib/ExtUtils/MM_Unix.pm
-*** perl5.004_04.orig/lib/ExtUtils/MM_Unix.pm Wed Oct 8 14:13:51 1997
---- perl5.004_04/lib/ExtUtils/MM_Unix.pm Sun Nov 12 21:50:51 2000
-***************
-*** 2229,2235 ****
- MAP_STATIC = ",
- join(" \\\n\t", reverse sort keys %static), "
-
-! MAP_PRELIBS = $Config::Config{libs} $Config::Config{cryptlib}
- ";
-
- if (defined $libperl) {
---- 2229,2235 ----
- MAP_STATIC = ",
- join(" \\\n\t", reverse sort keys %static), "
-
-! MAP_PRELIBS = $Config::Config{perllibs} $Config::Config{cryptlib}
- ";
-
- if (defined $libperl) {
-diff -rc perl5.004_04.orig/myconfig perl5.004_04/myconfig
-*** perl5.004_04.orig/myconfig Mon Oct 6 18:26:49 1997
---- perl5.004_04/myconfig Sun Nov 12 21:50:51 2000
-***************
-*** 35,41 ****
- Linker and Libraries:
- ld='$ld', ldflags ='$ldflags'
- libpth=$libpth
-! libs=$libs
- libc=$libc, so=$so
- useshrplib=$useshrplib, libperl=$libperl
- Dynamic Linking:
---- 35,41 ----
- Linker and Libraries:
- ld='$ld', ldflags ='$ldflags'
- libpth=$libpth
-! libs=$perllibs
- libc=$libc, so=$so
- useshrplib=$useshrplib, libperl=$libperl
- Dynamic Linking:
-diff -rc perl5.004_04.orig/patchlevel.h perl5.004_04/patchlevel.h
-*** perl5.004_04.orig/patchlevel.h Wed Oct 15 10:55:19 1997
---- perl5.004_04/patchlevel.h Sun Nov 12 21:50:51 2000
-***************
-*** 39,44 ****
---- 39,45 ----
- /* The following line and terminating '};' are read by perlbug.PL. Don't alter. */
- static char *local_patches[] = {
- NULL
-+ ,"NODB-1.0 - remove -ldb from core perl binary."
- ,NULL
- };
-
diff --git a/db/perl.DB_File/patches/5.004_05 b/db/perl.DB_File/patches/5.004_05
deleted file mode 100644
index 51c8bf350..000000000
--- a/db/perl.DB_File/patches/5.004_05
+++ /dev/null
@@ -1,209 +0,0 @@
-diff -rc perl5.004_05.orig/Configure perl5.004_05/Configure
-*** perl5.004_05.orig/Configure Thu Jan 6 22:05:49 2000
---- perl5.004_05/Configure Sun Nov 12 21:36:25 2000
-***************
-*** 188,193 ****
---- 188,194 ----
- mv=''
- nroff=''
- perl=''
-+ perllibs=''
- pg=''
- pmake=''
- pr=''
-***************
-*** 10164,10169 ****
---- 10165,10178 ----
- shift
- extensions="$*"
-
-+ : Remove libraries needed only for extensions
-+ : The appropriate ext/Foo/Makefile.PL will add them back in, if
-+ : necessary.
-+ set X `echo " $libs " |
-+ sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
-+ shift
-+ perllibs="$*"
-+
- : Remove build directory name from cppstdin so it can be used from
- : either the present location or the final installed location.
- echo " "
-***************
-*** 10648,10653 ****
---- 10657,10663 ----
- patchlevel='$patchlevel'
- path_sep='$path_sep'
- perl='$perl'
-+ perllibs='$perllibs'
- perladmin='$perladmin'
- perlpath='$perlpath'
- pg='$pg'
-diff -rc perl5.004_05.orig/Makefile.SH perl5.004_05/Makefile.SH
-*** perl5.004_05.orig/Makefile.SH Thu Jan 6 22:05:49 2000
---- perl5.004_05/Makefile.SH Sun Nov 12 21:36:25 2000
-***************
-*** 151,157 ****
- ext = \$(dynamic_ext) \$(static_ext)
- DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT)
-
-! libs = $libs $cryptlib
-
- public = perl $suidperl utilities translators
-
---- 151,157 ----
- ext = \$(dynamic_ext) \$(static_ext)
- DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT)
-
-! libs = $perllibs $cryptlib
-
- public = perl $suidperl utilities translators
-
-diff -rc perl5.004_05.orig/lib/ExtUtils/Embed.pm perl5.004_05/lib/ExtUtils/Embed.pm
-*** perl5.004_05.orig/lib/ExtUtils/Embed.pm Fri Aug 1 15:08:44 1997
---- perl5.004_05/lib/ExtUtils/Embed.pm Sun Nov 12 21:36:25 2000
-***************
-*** 178,184 ****
- @path = $path ? split(/:/, $path) : @INC;
-
- push(@potential_libs, @link_args) if scalar @link_args;
-! push(@potential_libs, $Config{libs}) if defined $std;
-
- push(@mods, static_ext()) if $std;
-
---- 178,184 ----
- @path = $path ? split(/:/, $path) : @INC;
-
- push(@potential_libs, @link_args) if scalar @link_args;
-! push(@potential_libs, $Config{perllibs}) if defined $std;
-
- push(@mods, static_ext()) if $std;
-
-diff -rc perl5.004_05.orig/lib/ExtUtils/Liblist.pm perl5.004_05/lib/ExtUtils/Liblist.pm
-*** perl5.004_05.orig/lib/ExtUtils/Liblist.pm Thu Jan 6 22:05:54 2000
---- perl5.004_05/lib/ExtUtils/Liblist.pm Sun Nov 12 21:45:31 2000
-***************
-*** 16,33 ****
-
- sub _unix_os2_ext {
- my($self,$potential_libs, $verbose) = @_;
-! if ($^O =~ 'os2' and $Config{libs}) {
- # Dynamic libraries are not transitive, so we may need including
- # the libraries linked against perl.dll again.
-
- $potential_libs .= " " if $potential_libs;
-! $potential_libs .= $Config{libs};
- }
- return ("", "", "", "") unless $potential_libs;
- warn "Potential libraries are '$potential_libs':\n" if $verbose;
-
- my($so) = $Config{'so'};
-! my($libs) = $Config{'libs'};
- my $Config_libext = $Config{lib_ext} || ".a";
-
-
---- 16,33 ----
-
- sub _unix_os2_ext {
- my($self,$potential_libs, $verbose) = @_;
-! if ($^O =~ 'os2' and $Config{perllibs}) {
- # Dynamic libraries are not transitive, so we may need including
- # the libraries linked against perl.dll again.
-
- $potential_libs .= " " if $potential_libs;
-! $potential_libs .= $Config{perllibs};
- }
- return ("", "", "", "") unless $potential_libs;
- warn "Potential libraries are '$potential_libs':\n" if $verbose;
-
- my($so) = $Config{'so'};
-! my($libs) = $Config{'perllibs'};
- my $Config_libext = $Config{lib_ext} || ".a";
-
-
-***************
-*** 196,202 ****
- my $BC = 1 if $cc =~ /^bcc/i;
- my $GC = 1 if $cc =~ /^gcc/i;
- my $so = $Config{'so'};
-! my $libs = $Config{'libs'};
- my $libpth = $Config{'libpth'};
- my $libext = $Config{'lib_ext'} || ".lib";
-
---- 196,202 ----
- my $BC = 1 if $cc =~ /^bcc/i;
- my $GC = 1 if $cc =~ /^gcc/i;
- my $so = $Config{'so'};
-! my $libs = $Config{'perllibs'};
- my $libpth = $Config{'libpth'};
- my $libext = $Config{'lib_ext'} || ".lib";
-
-***************
-*** 590,596 ****
- =item *
-
- If C<$potential_libs> is empty, the return value will be empty.
-! Otherwise, the libraries specified by C<$Config{libs}> (see Config.pm)
- will be appended to the list of C<$potential_libs>. The libraries
- will be searched for in the directories specified in C<$potential_libs>
- as well as in C<$Config{libpth}>. For each library that is found, a
---- 590,596 ----
- =item *
-
- If C<$potential_libs> is empty, the return value will be empty.
-! Otherwise, the libraries specified by C<$Config{perllibs}> (see Config.pm)
- will be appended to the list of C<$potential_libs>. The libraries
- will be searched for in the directories specified in C<$potential_libs>
- as well as in C<$Config{libpth}>. For each library that is found, a
-diff -rc perl5.004_05.orig/lib/ExtUtils/MM_Unix.pm perl5.004_05/lib/ExtUtils/MM_Unix.pm
-*** perl5.004_05.orig/lib/ExtUtils/MM_Unix.pm Thu Jan 6 22:05:54 2000
---- perl5.004_05/lib/ExtUtils/MM_Unix.pm Sun Nov 12 21:36:25 2000
-***************
-*** 2246,2252 ****
- MAP_STATIC = ",
- join(" \\\n\t", reverse sort keys %static), "
-
-! MAP_PRELIBS = $Config::Config{libs} $Config::Config{cryptlib}
- ";
-
- if (defined $libperl) {
---- 2246,2252 ----
- MAP_STATIC = ",
- join(" \\\n\t", reverse sort keys %static), "
-
-! MAP_PRELIBS = $Config::Config{perllibs} $Config::Config{cryptlib}
- ";
-
- if (defined $libperl) {
-diff -rc perl5.004_05.orig/myconfig perl5.004_05/myconfig
-*** perl5.004_05.orig/myconfig Thu Jan 6 22:05:55 2000
---- perl5.004_05/myconfig Sun Nov 12 21:43:54 2000
-***************
-*** 34,40 ****
- Linker and Libraries:
- ld='$ld', ldflags ='$ldflags'
- libpth=$libpth
-! libs=$libs
- libc=$libc, so=$so
- useshrplib=$useshrplib, libperl=$libperl
- Dynamic Linking:
---- 34,40 ----
- Linker and Libraries:
- ld='$ld', ldflags ='$ldflags'
- libpth=$libpth
-! libs=$perllibs
- libc=$libc, so=$so
- useshrplib=$useshrplib, libperl=$libperl
- Dynamic Linking:
-diff -rc perl5.004_05.orig/patchlevel.h perl5.004_05/patchlevel.h
-*** perl5.004_05.orig/patchlevel.h Thu Jan 6 22:05:48 2000
---- perl5.004_05/patchlevel.h Sun Nov 12 21:36:25 2000
-***************
-*** 39,44 ****
---- 39,45 ----
- /* The following line and terminating '};' are read by perlbug.PL. Don't alter. */
- static char *local_patches[] = {
- NULL
-+ ,"NODB-1.0 - remove -ldb from core perl binary."
- ,NULL
- };
-
diff --git a/db/perl.DB_File/patches/5.005 b/db/perl.DB_File/patches/5.005
deleted file mode 100644
index effee3e82..000000000
--- a/db/perl.DB_File/patches/5.005
+++ /dev/null
@@ -1,209 +0,0 @@
-diff -rc perl5.005.orig/Configure perl5.005/Configure
-*** perl5.005.orig/Configure Wed Jul 15 08:05:44 1998
---- perl5.005/Configure Sun Nov 12 21:30:40 2000
-***************
-*** 234,239 ****
---- 234,240 ----
- nm=''
- nroff=''
- perl=''
-+ perllibs=''
- pg=''
- pmake=''
- pr=''
-***************
-*** 11279,11284 ****
---- 11280,11293 ----
- shift
- extensions="$*"
-
-+ : Remove libraries needed only for extensions
-+ : The appropriate ext/Foo/Makefile.PL will add them back in, if
-+ : necessary.
-+ set X `echo " $libs " |
-+ sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
-+ shift
-+ perllibs="$*"
-+
- : Remove build directory name from cppstdin so it can be used from
- : either the present location or the final installed location.
- echo " "
-***************
-*** 11804,11809 ****
---- 11813,11819 ----
- patchlevel='$patchlevel'
- path_sep='$path_sep'
- perl='$perl'
-+ perllibs='$perllibs'
- perladmin='$perladmin'
- perlpath='$perlpath'
- pg='$pg'
-diff -rc perl5.005.orig/Makefile.SH perl5.005/Makefile.SH
-*** perl5.005.orig/Makefile.SH Sun Jul 19 08:06:35 1998
---- perl5.005/Makefile.SH Sun Nov 12 21:30:40 2000
-***************
-*** 150,156 ****
- ext = \$(dynamic_ext) \$(static_ext) \$(nonxs_ext)
- DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT)
-
-! libs = $libs $cryptlib
-
- public = perl $suidperl utilities translators
-
---- 150,156 ----
- ext = \$(dynamic_ext) \$(static_ext) \$(nonxs_ext)
- DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT)
-
-! libs = $perllibs $cryptlib
-
- public = perl $suidperl utilities translators
-
-diff -rc perl5.005.orig/lib/ExtUtils/Embed.pm perl5.005/lib/ExtUtils/Embed.pm
-*** perl5.005.orig/lib/ExtUtils/Embed.pm Wed Jul 22 07:45:02 1998
---- perl5.005/lib/ExtUtils/Embed.pm Sun Nov 12 21:30:40 2000
-***************
-*** 194,200 ****
- @path = $path ? split(/:/, $path) : @INC;
-
- push(@potential_libs, @link_args) if scalar @link_args;
-! push(@potential_libs, $Config{libs}) if defined $std;
-
- push(@mods, static_ext()) if $std;
-
---- 194,200 ----
- @path = $path ? split(/:/, $path) : @INC;
-
- push(@potential_libs, @link_args) if scalar @link_args;
-! push(@potential_libs, $Config{perllibs}) if defined $std;
-
- push(@mods, static_ext()) if $std;
-
-diff -rc perl5.005.orig/lib/ExtUtils/Liblist.pm perl5.005/lib/ExtUtils/Liblist.pm
-*** perl5.005.orig/lib/ExtUtils/Liblist.pm Wed Jul 22 07:09:42 1998
---- perl5.005/lib/ExtUtils/Liblist.pm Sun Nov 12 21:30:40 2000
-***************
-*** 16,33 ****
-
- sub _unix_os2_ext {
- my($self,$potential_libs, $verbose) = @_;
-! if ($^O =~ 'os2' and $Config{libs}) {
- # Dynamic libraries are not transitive, so we may need including
- # the libraries linked against perl.dll again.
-
- $potential_libs .= " " if $potential_libs;
-! $potential_libs .= $Config{libs};
- }
- return ("", "", "", "") unless $potential_libs;
- warn "Potential libraries are '$potential_libs':\n" if $verbose;
-
- my($so) = $Config{'so'};
-! my($libs) = $Config{'libs'};
- my $Config_libext = $Config{lib_ext} || ".a";
-
-
---- 16,33 ----
-
- sub _unix_os2_ext {
- my($self,$potential_libs, $verbose) = @_;
-! if ($^O =~ 'os2' and $Config{perllibs}) {
- # Dynamic libraries are not transitive, so we may need including
- # the libraries linked against perl.dll again.
-
- $potential_libs .= " " if $potential_libs;
-! $potential_libs .= $Config{perllibs};
- }
- return ("", "", "", "") unless $potential_libs;
- warn "Potential libraries are '$potential_libs':\n" if $verbose;
-
- my($so) = $Config{'so'};
-! my($libs) = $Config{'perllibs'};
- my $Config_libext = $Config{lib_ext} || ".a";
-
-
-***************
-*** 290,296 ****
- $self->{CCFLAS} || $Config{'ccflags'};
- @crtls = ( ($dbgqual =~ m-/Debug-i ? $Config{'dbgprefix'} : '')
- . 'PerlShr/Share' );
-! push(@crtls, grep { not /\(/ } split /\s+/, $Config{'libs'});
- push(@crtls, grep { not /\(/ } split /\s+/, $Config{'libc'});
- # In general, we pass through the basic libraries from %Config unchanged.
- # The one exception is that if we're building in the Perl source tree, and
---- 290,296 ----
- $self->{CCFLAS} || $Config{'ccflags'};
- @crtls = ( ($dbgqual =~ m-/Debug-i ? $Config{'dbgprefix'} : '')
- . 'PerlShr/Share' );
-! push(@crtls, grep { not /\(/ } split /\s+/, $Config{'perllibs'});
- push(@crtls, grep { not /\(/ } split /\s+/, $Config{'libc'});
- # In general, we pass through the basic libraries from %Config unchanged.
- # The one exception is that if we're building in the Perl source tree, and
-***************
-*** 598,604 ****
- =item *
-
- If C<$potential_libs> is empty, the return value will be empty.
-! Otherwise, the libraries specified by C<$Config{libs}> (see Config.pm)
- will be appended to the list of C<$potential_libs>. The libraries
- will be searched for in the directories specified in C<$potential_libs>
- as well as in C<$Config{libpth}>. For each library that is found, a
---- 598,604 ----
- =item *
-
- If C<$potential_libs> is empty, the return value will be empty.
-! Otherwise, the libraries specified by C<$Config{perllibs}> (see Config.pm)
- will be appended to the list of C<$potential_libs>. The libraries
- will be searched for in the directories specified in C<$potential_libs>
- as well as in C<$Config{libpth}>. For each library that is found, a
-diff -rc perl5.005.orig/lib/ExtUtils/MM_Unix.pm perl5.005/lib/ExtUtils/MM_Unix.pm
-*** perl5.005.orig/lib/ExtUtils/MM_Unix.pm Tue Jul 14 04:39:12 1998
---- perl5.005/lib/ExtUtils/MM_Unix.pm Sun Nov 12 21:30:41 2000
-***************
-*** 2281,2287 ****
- MAP_STATIC = ",
- join(" \\\n\t", reverse sort keys %static), "
-
-! MAP_PRELIBS = $Config::Config{libs} $Config::Config{cryptlib}
- ";
-
- if (defined $libperl) {
---- 2281,2287 ----
- MAP_STATIC = ",
- join(" \\\n\t", reverse sort keys %static), "
-
-! MAP_PRELIBS = $Config::Config{perllibs} $Config::Config{cryptlib}
- ";
-
- if (defined $libperl) {
-diff -rc perl5.005.orig/myconfig perl5.005/myconfig
-*** perl5.005.orig/myconfig Fri Apr 3 01:20:35 1998
---- perl5.005/myconfig Sun Nov 12 21:30:41 2000
-***************
-*** 34,40 ****
- Linker and Libraries:
- ld='$ld', ldflags ='$ldflags'
- libpth=$libpth
-! libs=$libs
- libc=$libc, so=$so, useshrplib=$useshrplib, libperl=$libperl
- Dynamic Linking:
- dlsrc=$dlsrc, dlext=$dlext, d_dlsymun=$d_dlsymun, ccdlflags='$ccdlflags'
---- 34,40 ----
- Linker and Libraries:
- ld='$ld', ldflags ='$ldflags'
- libpth=$libpth
-! libs=$perllibs
- libc=$libc, so=$so, useshrplib=$useshrplib, libperl=$libperl
- Dynamic Linking:
- dlsrc=$dlsrc, dlext=$dlext, d_dlsymun=$d_dlsymun, ccdlflags='$ccdlflags'
-diff -rc perl5.005.orig/patchlevel.h perl5.005/patchlevel.h
-*** perl5.005.orig/patchlevel.h Wed Jul 22 19:22:01 1998
---- perl5.005/patchlevel.h Sun Nov 12 21:30:41 2000
-***************
-*** 39,44 ****
---- 39,45 ----
- */
- static char *local_patches[] = {
- NULL
-+ ,"NODB-1.0 - remove -ldb from core perl binary."
- ,NULL
- };
-
diff --git a/db/perl.DB_File/patches/5.005_01 b/db/perl.DB_File/patches/5.005_01
deleted file mode 100644
index 2a05dd545..000000000
--- a/db/perl.DB_File/patches/5.005_01
+++ /dev/null
@@ -1,209 +0,0 @@
-diff -rc perl5.005_01.orig/Configure perl5.005_01/Configure
-*** perl5.005_01.orig/Configure Wed Jul 15 08:05:44 1998
---- perl5.005_01/Configure Sun Nov 12 20:55:58 2000
-***************
-*** 234,239 ****
---- 234,240 ----
- nm=''
- nroff=''
- perl=''
-+ perllibs=''
- pg=''
- pmake=''
- pr=''
-***************
-*** 11279,11284 ****
---- 11280,11293 ----
- shift
- extensions="$*"
-
-+ : Remove libraries needed only for extensions
-+ : The appropriate ext/Foo/Makefile.PL will add them back in, if
-+ : necessary.
-+ set X `echo " $libs " |
-+ sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
-+ shift
-+ perllibs="$*"
-+
- : Remove build directory name from cppstdin so it can be used from
- : either the present location or the final installed location.
- echo " "
-***************
-*** 11804,11809 ****
---- 11813,11819 ----
- patchlevel='$patchlevel'
- path_sep='$path_sep'
- perl='$perl'
-+ perllibs='$perllibs'
- perladmin='$perladmin'
- perlpath='$perlpath'
- pg='$pg'
-diff -rc perl5.005_01.orig/Makefile.SH perl5.005_01/Makefile.SH
-*** perl5.005_01.orig/Makefile.SH Sun Jul 19 08:06:35 1998
---- perl5.005_01/Makefile.SH Sun Nov 12 20:55:58 2000
-***************
-*** 150,156 ****
- ext = \$(dynamic_ext) \$(static_ext) \$(nonxs_ext)
- DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT)
-
-! libs = $libs $cryptlib
-
- public = perl $suidperl utilities translators
-
---- 150,156 ----
- ext = \$(dynamic_ext) \$(static_ext) \$(nonxs_ext)
- DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT)
-
-! libs = $perllibs $cryptlib
-
- public = perl $suidperl utilities translators
-
-diff -rc perl5.005_01.orig/lib/ExtUtils/Embed.pm perl5.005_01/lib/ExtUtils/Embed.pm
-*** perl5.005_01.orig/lib/ExtUtils/Embed.pm Wed Jul 22 07:45:02 1998
---- perl5.005_01/lib/ExtUtils/Embed.pm Sun Nov 12 20:55:58 2000
-***************
-*** 194,200 ****
- @path = $path ? split(/:/, $path) : @INC;
-
- push(@potential_libs, @link_args) if scalar @link_args;
-! push(@potential_libs, $Config{libs}) if defined $std;
-
- push(@mods, static_ext()) if $std;
-
---- 194,200 ----
- @path = $path ? split(/:/, $path) : @INC;
-
- push(@potential_libs, @link_args) if scalar @link_args;
-! push(@potential_libs, $Config{perllibs}) if defined $std;
-
- push(@mods, static_ext()) if $std;
-
-diff -rc perl5.005_01.orig/lib/ExtUtils/Liblist.pm perl5.005_01/lib/ExtUtils/Liblist.pm
-*** perl5.005_01.orig/lib/ExtUtils/Liblist.pm Wed Jul 22 07:09:42 1998
---- perl5.005_01/lib/ExtUtils/Liblist.pm Sun Nov 12 20:55:58 2000
-***************
-*** 16,33 ****
-
- sub _unix_os2_ext {
- my($self,$potential_libs, $verbose) = @_;
-! if ($^O =~ 'os2' and $Config{libs}) {
- # Dynamic libraries are not transitive, so we may need including
- # the libraries linked against perl.dll again.
-
- $potential_libs .= " " if $potential_libs;
-! $potential_libs .= $Config{libs};
- }
- return ("", "", "", "") unless $potential_libs;
- warn "Potential libraries are '$potential_libs':\n" if $verbose;
-
- my($so) = $Config{'so'};
-! my($libs) = $Config{'libs'};
- my $Config_libext = $Config{lib_ext} || ".a";
-
-
---- 16,33 ----
-
- sub _unix_os2_ext {
- my($self,$potential_libs, $verbose) = @_;
-! if ($^O =~ 'os2' and $Config{perllibs}) {
- # Dynamic libraries are not transitive, so we may need including
- # the libraries linked against perl.dll again.
-
- $potential_libs .= " " if $potential_libs;
-! $potential_libs .= $Config{perllibs};
- }
- return ("", "", "", "") unless $potential_libs;
- warn "Potential libraries are '$potential_libs':\n" if $verbose;
-
- my($so) = $Config{'so'};
-! my($libs) = $Config{'perllibs'};
- my $Config_libext = $Config{lib_ext} || ".a";
-
-
-***************
-*** 290,296 ****
- $self->{CCFLAS} || $Config{'ccflags'};
- @crtls = ( ($dbgqual =~ m-/Debug-i ? $Config{'dbgprefix'} : '')
- . 'PerlShr/Share' );
-! push(@crtls, grep { not /\(/ } split /\s+/, $Config{'libs'});
- push(@crtls, grep { not /\(/ } split /\s+/, $Config{'libc'});
- # In general, we pass through the basic libraries from %Config unchanged.
- # The one exception is that if we're building in the Perl source tree, and
---- 290,296 ----
- $self->{CCFLAS} || $Config{'ccflags'};
- @crtls = ( ($dbgqual =~ m-/Debug-i ? $Config{'dbgprefix'} : '')
- . 'PerlShr/Share' );
-! push(@crtls, grep { not /\(/ } split /\s+/, $Config{'perllibs'});
- push(@crtls, grep { not /\(/ } split /\s+/, $Config{'libc'});
- # In general, we pass through the basic libraries from %Config unchanged.
- # The one exception is that if we're building in the Perl source tree, and
-***************
-*** 598,604 ****
- =item *
-
- If C<$potential_libs> is empty, the return value will be empty.
-! Otherwise, the libraries specified by C<$Config{libs}> (see Config.pm)
- will be appended to the list of C<$potential_libs>. The libraries
- will be searched for in the directories specified in C<$potential_libs>
- as well as in C<$Config{libpth}>. For each library that is found, a
---- 598,604 ----
- =item *
-
- If C<$potential_libs> is empty, the return value will be empty.
-! Otherwise, the libraries specified by C<$Config{perllibs}> (see Config.pm)
- will be appended to the list of C<$potential_libs>. The libraries
- will be searched for in the directories specified in C<$potential_libs>
- as well as in C<$Config{libpth}>. For each library that is found, a
-diff -rc perl5.005_01.orig/lib/ExtUtils/MM_Unix.pm perl5.005_01/lib/ExtUtils/MM_Unix.pm
-*** perl5.005_01.orig/lib/ExtUtils/MM_Unix.pm Tue Jul 14 04:39:12 1998
---- perl5.005_01/lib/ExtUtils/MM_Unix.pm Sun Nov 12 20:55:58 2000
-***************
-*** 2281,2287 ****
- MAP_STATIC = ",
- join(" \\\n\t", reverse sort keys %static), "
-
-! MAP_PRELIBS = $Config::Config{libs} $Config::Config{cryptlib}
- ";
-
- if (defined $libperl) {
---- 2281,2287 ----
- MAP_STATIC = ",
- join(" \\\n\t", reverse sort keys %static), "
-
-! MAP_PRELIBS = $Config::Config{perllibs} $Config::Config{cryptlib}
- ";
-
- if (defined $libperl) {
-diff -rc perl5.005_01.orig/myconfig perl5.005_01/myconfig
-*** perl5.005_01.orig/myconfig Fri Apr 3 01:20:35 1998
---- perl5.005_01/myconfig Sun Nov 12 20:55:58 2000
-***************
-*** 34,40 ****
- Linker and Libraries:
- ld='$ld', ldflags ='$ldflags'
- libpth=$libpth
-! libs=$libs
- libc=$libc, so=$so, useshrplib=$useshrplib, libperl=$libperl
- Dynamic Linking:
- dlsrc=$dlsrc, dlext=$dlext, d_dlsymun=$d_dlsymun, ccdlflags='$ccdlflags'
---- 34,40 ----
- Linker and Libraries:
- ld='$ld', ldflags ='$ldflags'
- libpth=$libpth
-! libs=$perllibs
- libc=$libc, so=$so, useshrplib=$useshrplib, libperl=$libperl
- Dynamic Linking:
- dlsrc=$dlsrc, dlext=$dlext, d_dlsymun=$d_dlsymun, ccdlflags='$ccdlflags'
-diff -rc perl5.005_01.orig/patchlevel.h perl5.005_01/patchlevel.h
-*** perl5.005_01.orig/patchlevel.h Mon Jan 3 11:07:45 2000
---- perl5.005_01/patchlevel.h Sun Nov 12 20:55:58 2000
-***************
-*** 39,44 ****
---- 39,45 ----
- */
- static char *local_patches[] = {
- NULL
-+ ,"NODB-1.0 - remove -ldb from core perl binary."
- ,NULL
- };
-
diff --git a/db/perl.DB_File/patches/5.005_02 b/db/perl.DB_File/patches/5.005_02
deleted file mode 100644
index 5dd57ddc0..000000000
--- a/db/perl.DB_File/patches/5.005_02
+++ /dev/null
@@ -1,264 +0,0 @@
-diff -rc perl5.005_02.orig/Configure perl5.005_02/Configure
-*** perl5.005_02.orig/Configure Mon Jan 3 11:12:20 2000
---- perl5.005_02/Configure Sun Nov 12 20:50:51 2000
-***************
-*** 234,239 ****
---- 234,240 ----
- nm=''
- nroff=''
- perl=''
-+ perllibs=''
- pg=''
- pmake=''
- pr=''
-***************
-*** 11334,11339 ****
---- 11335,11348 ----
- shift
- extensions="$*"
-
-+ : Remove libraries needed only for extensions
-+ : The appropriate ext/Foo/Makefile.PL will add them back in, if
-+ : necessary.
-+ set X `echo " $libs " |
-+ sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
-+ shift
-+ perllibs="$*"
-+
- : Remove build directory name from cppstdin so it can be used from
- : either the present location or the final installed location.
- echo " "
-***************
-*** 11859,11864 ****
---- 11868,11874 ----
- patchlevel='$patchlevel'
- path_sep='$path_sep'
- perl='$perl'
-+ perllibs='$perllibs'
- perladmin='$perladmin'
- perlpath='$perlpath'
- pg='$pg'
-Only in perl5.005_02: Configure.orig
-diff -rc perl5.005_02.orig/Makefile.SH perl5.005_02/Makefile.SH
-*** perl5.005_02.orig/Makefile.SH Sun Jul 19 08:06:35 1998
---- perl5.005_02/Makefile.SH Sun Nov 12 20:50:51 2000
-***************
-*** 150,156 ****
- ext = \$(dynamic_ext) \$(static_ext) \$(nonxs_ext)
- DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT)
-
-! libs = $libs $cryptlib
-
- public = perl $suidperl utilities translators
-
---- 150,156 ----
- ext = \$(dynamic_ext) \$(static_ext) \$(nonxs_ext)
- DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT)
-
-! libs = $perllibs $cryptlib
-
- public = perl $suidperl utilities translators
-
-Only in perl5.005_02: Makefile.SH.orig
-diff -rc perl5.005_02.orig/lib/ExtUtils/Embed.pm perl5.005_02/lib/ExtUtils/Embed.pm
-*** perl5.005_02.orig/lib/ExtUtils/Embed.pm Wed Jul 22 07:45:02 1998
---- perl5.005_02/lib/ExtUtils/Embed.pm Sun Nov 12 20:50:51 2000
-***************
-*** 194,200 ****
- @path = $path ? split(/:/, $path) : @INC;
-
- push(@potential_libs, @link_args) if scalar @link_args;
-! push(@potential_libs, $Config{libs}) if defined $std;
-
- push(@mods, static_ext()) if $std;
-
---- 194,200 ----
- @path = $path ? split(/:/, $path) : @INC;
-
- push(@potential_libs, @link_args) if scalar @link_args;
-! push(@potential_libs, $Config{perllibs}) if defined $std;
-
- push(@mods, static_ext()) if $std;
-
-diff -rc perl5.005_02.orig/lib/ExtUtils/Liblist.pm perl5.005_02/lib/ExtUtils/Liblist.pm
-*** perl5.005_02.orig/lib/ExtUtils/Liblist.pm Mon Jan 3 11:12:21 2000
---- perl5.005_02/lib/ExtUtils/Liblist.pm Sun Nov 12 20:50:51 2000
-***************
-*** 16,33 ****
-
- sub _unix_os2_ext {
- my($self,$potential_libs, $verbose) = @_;
-! if ($^O =~ 'os2' and $Config{libs}) {
- # Dynamic libraries are not transitive, so we may need including
- # the libraries linked against perl.dll again.
-
- $potential_libs .= " " if $potential_libs;
-! $potential_libs .= $Config{libs};
- }
- return ("", "", "", "") unless $potential_libs;
- warn "Potential libraries are '$potential_libs':\n" if $verbose;
-
- my($so) = $Config{'so'};
-! my($libs) = $Config{'libs'};
- my $Config_libext = $Config{lib_ext} || ".a";
-
-
---- 16,33 ----
-
- sub _unix_os2_ext {
- my($self,$potential_libs, $verbose) = @_;
-! if ($^O =~ 'os2' and $Config{perllibs}) {
- # Dynamic libraries are not transitive, so we may need including
- # the libraries linked against perl.dll again.
-
- $potential_libs .= " " if $potential_libs;
-! $potential_libs .= $Config{perllibs};
- }
- return ("", "", "", "") unless $potential_libs;
- warn "Potential libraries are '$potential_libs':\n" if $verbose;
-
- my($so) = $Config{'so'};
-! my($libs) = $Config{'perllibs'};
- my $Config_libext = $Config{lib_ext} || ".a";
-
-
-***************
-*** 196,202 ****
- my $BC = 1 if $cc =~ /^bcc/i;
- my $GC = 1 if $cc =~ /^gcc/i;
- my $so = $Config{'so'};
-! my $libs = $Config{'libs'};
- my $libpth = $Config{'libpth'};
- my $libext = $Config{'lib_ext'} || ".lib";
-
---- 196,202 ----
- my $BC = 1 if $cc =~ /^bcc/i;
- my $GC = 1 if $cc =~ /^gcc/i;
- my $so = $Config{'so'};
-! my $libs = $Config{'perllibs'};
- my $libpth = $Config{'libpth'};
- my $libext = $Config{'lib_ext'} || ".lib";
-
-***************
-*** 333,339 ****
- $self->{CCFLAS} || $Config{'ccflags'};
- @crtls = ( ($dbgqual =~ m-/Debug-i ? $Config{'dbgprefix'} : '')
- . 'PerlShr/Share' );
-! push(@crtls, grep { not /\(/ } split /\s+/, $Config{'libs'});
- push(@crtls, grep { not /\(/ } split /\s+/, $Config{'libc'});
- # In general, we pass through the basic libraries from %Config unchanged.
- # The one exception is that if we're building in the Perl source tree, and
---- 333,339 ----
- $self->{CCFLAS} || $Config{'ccflags'};
- @crtls = ( ($dbgqual =~ m-/Debug-i ? $Config{'dbgprefix'} : '')
- . 'PerlShr/Share' );
-! push(@crtls, grep { not /\(/ } split /\s+/, $Config{'perllibs'});
- push(@crtls, grep { not /\(/ } split /\s+/, $Config{'libc'});
- # In general, we pass through the basic libraries from %Config unchanged.
- # The one exception is that if we're building in the Perl source tree, and
-***************
-*** 623,629 ****
- =item *
-
- If C<$potential_libs> is empty, the return value will be empty.
-! Otherwise, the libraries specified by C<$Config{libs}> (see Config.pm)
- will be appended to the list of C<$potential_libs>. The libraries
- will be searched for in the directories specified in C<$potential_libs>
- as well as in C<$Config{libpth}>. For each library that is found, a
---- 623,629 ----
- =item *
-
- If C<$potential_libs> is empty, the return value will be empty.
-! Otherwise, the libraries specified by C<$Config{perllibs}> (see Config.pm)
- will be appended to the list of C<$potential_libs>. The libraries
- will be searched for in the directories specified in C<$potential_libs>
- as well as in C<$Config{libpth}>. For each library that is found, a
-***************
-*** 666,672 ****
- alphanumeric characters are treated as flags. Unknown flags will be ignored.
-
- An entry that matches C</:nodefault/i> disables the appending of default
-! libraries found in C<$Config{libs}> (this should be only needed very rarely).
-
- An entry that matches C</:nosearch/i> disables all searching for
- the libraries specified after it. Translation of C<-Lfoo> and
---- 666,672 ----
- alphanumeric characters are treated as flags. Unknown flags will be ignored.
-
- An entry that matches C</:nodefault/i> disables the appending of default
-! libraries found in C<$Config{perllibs}> (this should be only needed very rarely).
-
- An entry that matches C</:nosearch/i> disables all searching for
- the libraries specified after it. Translation of C<-Lfoo> and
-***************
-*** 676,682 ****
-
- An entry that matches C</:search/i> reenables searching for
- the libraries specified after it. You can put it at the end to
-! enable searching for default libraries specified by C<$Config{libs}>.
-
- =item *
-
---- 676,682 ----
-
- An entry that matches C</:search/i> reenables searching for
- the libraries specified after it. You can put it at the end to
-! enable searching for default libraries specified by C<$Config{perllibs}>.
-
- =item *
-
-Only in perl5.005_02/lib/ExtUtils: Liblist.pm.orig
-diff -rc perl5.005_02.orig/lib/ExtUtils/MM_Unix.pm perl5.005_02/lib/ExtUtils/MM_Unix.pm
-*** perl5.005_02.orig/lib/ExtUtils/MM_Unix.pm Tue Jul 14 04:39:12 1998
---- perl5.005_02/lib/ExtUtils/MM_Unix.pm Sun Nov 12 20:50:51 2000
-***************
-*** 2281,2287 ****
- MAP_STATIC = ",
- join(" \\\n\t", reverse sort keys %static), "
-
-! MAP_PRELIBS = $Config::Config{libs} $Config::Config{cryptlib}
- ";
-
- if (defined $libperl) {
---- 2281,2287 ----
- MAP_STATIC = ",
- join(" \\\n\t", reverse sort keys %static), "
-
-! MAP_PRELIBS = $Config::Config{perllibs} $Config::Config{cryptlib}
- ";
-
- if (defined $libperl) {
-Only in perl5.005_02/lib/ExtUtils: MM_Unix.pm.orig
-diff -rc perl5.005_02.orig/myconfig perl5.005_02/myconfig
-*** perl5.005_02.orig/myconfig Fri Apr 3 01:20:35 1998
---- perl5.005_02/myconfig Sun Nov 12 20:50:51 2000
-***************
-*** 34,40 ****
- Linker and Libraries:
- ld='$ld', ldflags ='$ldflags'
- libpth=$libpth
-! libs=$libs
- libc=$libc, so=$so, useshrplib=$useshrplib, libperl=$libperl
- Dynamic Linking:
- dlsrc=$dlsrc, dlext=$dlext, d_dlsymun=$d_dlsymun, ccdlflags='$ccdlflags'
---- 34,40 ----
- Linker and Libraries:
- ld='$ld', ldflags ='$ldflags'
- libpth=$libpth
-! libs=$perllibs
- libc=$libc, so=$so, useshrplib=$useshrplib, libperl=$libperl
- Dynamic Linking:
- dlsrc=$dlsrc, dlext=$dlext, d_dlsymun=$d_dlsymun, ccdlflags='$ccdlflags'
-diff -rc perl5.005_02.orig/patchlevel.h perl5.005_02/patchlevel.h
-*** perl5.005_02.orig/patchlevel.h Mon Jan 3 11:12:19 2000
---- perl5.005_02/patchlevel.h Sun Nov 12 20:50:51 2000
-***************
-*** 40,45 ****
---- 40,46 ----
- */
- static char *local_patches[] = {
- NULL
-+ ,"NODB-1.0 - remove -ldb from core perl binary."
- ,NULL
- };
-
diff --git a/db/perl.DB_File/patches/5.005_03 b/db/perl.DB_File/patches/5.005_03
deleted file mode 100644
index 115f9f5b9..000000000
--- a/db/perl.DB_File/patches/5.005_03
+++ /dev/null
@@ -1,250 +0,0 @@
-diff -rc perl5.005_03.orig/Configure perl5.005_03/Configure
-*** perl5.005_03.orig/Configure Sun Mar 28 17:12:57 1999
---- perl5.005_03/Configure Sun Sep 17 22:19:16 2000
-***************
-*** 208,213 ****
---- 208,214 ----
- nm=''
- nroff=''
- perl=''
-+ perllibs=''
- pg=''
- pmake=''
- pr=''
-***************
-*** 11642,11647 ****
---- 11643,11656 ----
- shift
- extensions="$*"
-
-+ : Remove libraries needed only for extensions
-+ : The appropriate ext/Foo/Makefile.PL will add them back in, if
-+ : necessary.
-+ set X `echo " $libs " |
-+ sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
-+ shift
-+ perllibs="$*"
-+
- : Remove build directory name from cppstdin so it can be used from
- : either the present location or the final installed location.
- echo " "
-***************
-*** 12183,12188 ****
---- 12192,12198 ----
- patchlevel='$patchlevel'
- path_sep='$path_sep'
- perl='$perl'
-+ perllibs='$perllibs'
- perladmin='$perladmin'
- perlpath='$perlpath'
- pg='$pg'
-diff -rc perl5.005_03.orig/Makefile.SH perl5.005_03/Makefile.SH
-*** perl5.005_03.orig/Makefile.SH Thu Mar 4 02:35:25 1999
---- perl5.005_03/Makefile.SH Sun Sep 17 22:21:01 2000
-***************
-*** 58,67 ****
- shrpldflags="-H512 -T512 -bhalt:4 -bM:SRE -bE:perl.exp"
- case "$osvers" in
- 3*)
-! shrpldflags="$shrpldflags -e _nostart $ldflags $libs $cryptlib"
- ;;
- *)
-! shrpldflags="$shrpldflags -b noentry $ldflags $libs $cryptlib"
- ;;
- esac
- aixinstdir=`pwd | sed 's/\/UU$//'`
---- 58,67 ----
- shrpldflags="-H512 -T512 -bhalt:4 -bM:SRE -bE:perl.exp"
- case "$osvers" in
- 3*)
-! shrpldflags="$shrpldflags -e _nostart $ldflags $perllibs $cryptlib"
- ;;
- *)
-! shrpldflags="$shrpldflags -b noentry $ldflags $perllibs $cryptlib"
- ;;
- esac
- aixinstdir=`pwd | sed 's/\/UU$//'`
-***************
-*** 155,161 ****
- ext = \$(dynamic_ext) \$(static_ext) \$(nonxs_ext)
- DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT)
-
-! libs = $libs $cryptlib
-
- public = perl $suidperl utilities translators
-
---- 155,161 ----
- ext = \$(dynamic_ext) \$(static_ext) \$(nonxs_ext)
- DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT)
-
-! libs = $perllibs $cryptlib
-
- public = perl $suidperl utilities translators
-
-diff -rc perl5.005_03.orig/lib/ExtUtils/Embed.pm perl5.005_03/lib/ExtUtils/Embed.pm
-*** perl5.005_03.orig/lib/ExtUtils/Embed.pm Wed Jan 6 02:17:50 1999
---- perl5.005_03/lib/ExtUtils/Embed.pm Sun Sep 17 22:19:16 2000
-***************
-*** 194,200 ****
- @path = $path ? split(/:/, $path) : @INC;
-
- push(@potential_libs, @link_args) if scalar @link_args;
-! push(@potential_libs, $Config{libs}) if defined $std;
-
- push(@mods, static_ext()) if $std;
-
---- 194,200 ----
- @path = $path ? split(/:/, $path) : @INC;
-
- push(@potential_libs, @link_args) if scalar @link_args;
-! push(@potential_libs, $Config{perllibs}) if defined $std;
-
- push(@mods, static_ext()) if $std;
-
-diff -rc perl5.005_03.orig/lib/ExtUtils/Liblist.pm perl5.005_03/lib/ExtUtils/Liblist.pm
-*** perl5.005_03.orig/lib/ExtUtils/Liblist.pm Wed Jan 6 02:17:47 1999
---- perl5.005_03/lib/ExtUtils/Liblist.pm Sun Sep 17 22:19:16 2000
-***************
-*** 16,33 ****
-
- sub _unix_os2_ext {
- my($self,$potential_libs, $verbose) = @_;
-! if ($^O =~ 'os2' and $Config{libs}) {
- # Dynamic libraries are not transitive, so we may need including
- # the libraries linked against perl.dll again.
-
- $potential_libs .= " " if $potential_libs;
-! $potential_libs .= $Config{libs};
- }
- return ("", "", "", "") unless $potential_libs;
- warn "Potential libraries are '$potential_libs':\n" if $verbose;
-
- my($so) = $Config{'so'};
-! my($libs) = $Config{'libs'};
- my $Config_libext = $Config{lib_ext} || ".a";
-
-
---- 16,33 ----
-
- sub _unix_os2_ext {
- my($self,$potential_libs, $verbose) = @_;
-! if ($^O =~ 'os2' and $Config{perllibs}) {
- # Dynamic libraries are not transitive, so we may need including
- # the libraries linked against perl.dll again.
-
- $potential_libs .= " " if $potential_libs;
-! $potential_libs .= $Config{perllibs};
- }
- return ("", "", "", "") unless $potential_libs;
- warn "Potential libraries are '$potential_libs':\n" if $verbose;
-
- my($so) = $Config{'so'};
-! my($libs) = $Config{'perllibs'};
- my $Config_libext = $Config{lib_ext} || ".a";
-
-
-***************
-*** 196,202 ****
- my $BC = 1 if $cc =~ /^bcc/i;
- my $GC = 1 if $cc =~ /^gcc/i;
- my $so = $Config{'so'};
-! my $libs = $Config{'libs'};
- my $libpth = $Config{'libpth'};
- my $libext = $Config{'lib_ext'} || ".lib";
-
---- 196,202 ----
- my $BC = 1 if $cc =~ /^bcc/i;
- my $GC = 1 if $cc =~ /^gcc/i;
- my $so = $Config{'so'};
-! my $libs = $Config{'perllibs'};
- my $libpth = $Config{'libpth'};
- my $libext = $Config{'lib_ext'} || ".lib";
-
-***************
-*** 336,342 ****
- $self->{CCFLAS} || $Config{'ccflags'};
- @crtls = ( ($dbgqual =~ m-/Debug-i ? $Config{'dbgprefix'} : '')
- . 'PerlShr/Share' );
-! push(@crtls, grep { not /\(/ } split /\s+/, $Config{'libs'});
- push(@crtls, grep { not /\(/ } split /\s+/, $Config{'libc'});
- # In general, we pass through the basic libraries from %Config unchanged.
- # The one exception is that if we're building in the Perl source tree, and
---- 336,342 ----
- $self->{CCFLAS} || $Config{'ccflags'};
- @crtls = ( ($dbgqual =~ m-/Debug-i ? $Config{'dbgprefix'} : '')
- . 'PerlShr/Share' );
-! push(@crtls, grep { not /\(/ } split /\s+/, $Config{'perllibs'});
- push(@crtls, grep { not /\(/ } split /\s+/, $Config{'libc'});
- # In general, we pass through the basic libraries from %Config unchanged.
- # The one exception is that if we're building in the Perl source tree, and
-***************
-*** 626,632 ****
- =item *
-
- If C<$potential_libs> is empty, the return value will be empty.
-! Otherwise, the libraries specified by C<$Config{libs}> (see Config.pm)
- will be appended to the list of C<$potential_libs>. The libraries
- will be searched for in the directories specified in C<$potential_libs>,
- C<$Config{libpth}>, and in C<$Config{installarchlib}/CORE>.
---- 626,632 ----
- =item *
-
- If C<$potential_libs> is empty, the return value will be empty.
-! Otherwise, the libraries specified by C<$Config{perllibs}> (see Config.pm)
- will be appended to the list of C<$potential_libs>. The libraries
- will be searched for in the directories specified in C<$potential_libs>,
- C<$Config{libpth}>, and in C<$Config{installarchlib}/CORE>.
-***************
-*** 670,676 ****
- alphanumeric characters are treated as flags. Unknown flags will be ignored.
-
- An entry that matches C</:nodefault/i> disables the appending of default
-! libraries found in C<$Config{libs}> (this should be only needed very rarely).
-
- An entry that matches C</:nosearch/i> disables all searching for
- the libraries specified after it. Translation of C<-Lfoo> and
---- 670,676 ----
- alphanumeric characters are treated as flags. Unknown flags will be ignored.
-
- An entry that matches C</:nodefault/i> disables the appending of default
-! libraries found in C<$Config{perllibs}> (this should be only needed very rarely).
-
- An entry that matches C</:nosearch/i> disables all searching for
- the libraries specified after it. Translation of C<-Lfoo> and
-***************
-*** 680,686 ****
-
- An entry that matches C</:search/i> reenables searching for
- the libraries specified after it. You can put it at the end to
-! enable searching for default libraries specified by C<$Config{libs}>.
-
- =item *
-
---- 680,686 ----
-
- An entry that matches C</:search/i> reenables searching for
- the libraries specified after it. You can put it at the end to
-! enable searching for default libraries specified by C<$Config{perllibs}>.
-
- =item *
-
-diff -rc perl5.005_03.orig/lib/ExtUtils/MM_Unix.pm perl5.005_03/lib/ExtUtils/MM_Unix.pm
-*** perl5.005_03.orig/lib/ExtUtils/MM_Unix.pm Fri Mar 5 00:34:20 1999
---- perl5.005_03/lib/ExtUtils/MM_Unix.pm Sun Sep 17 22:19:16 2000
-***************
-*** 2284,2290 ****
- MAP_STATIC = ",
- join(" \\\n\t", reverse sort keys %static), "
-
-! MAP_PRELIBS = $Config::Config{libs} $Config::Config{cryptlib}
- ";
-
- if (defined $libperl) {
---- 2284,2290 ----
- MAP_STATIC = ",
- join(" \\\n\t", reverse sort keys %static), "
-
-! MAP_PRELIBS = $Config::Config{perllibs} $Config::Config{cryptlib}
- ";
-
- if (defined $libperl) {
diff --git a/db/perl.DB_File/patches/5.6.0 b/db/perl.DB_File/patches/5.6.0
deleted file mode 100644
index 1f9b3b620..000000000
--- a/db/perl.DB_File/patches/5.6.0
+++ /dev/null
@@ -1,294 +0,0 @@
-diff -cr perl-5.6.0.orig/Configure perl-5.6.0/Configure
-*** perl-5.6.0.orig/Configure Wed Mar 22 20:36:37 2000
---- perl-5.6.0/Configure Sun Sep 17 23:40:15 2000
-***************
-*** 217,222 ****
---- 217,223 ----
- nm=''
- nroff=''
- perl=''
-+ perllibs=''
- pg=''
- pmake=''
- pr=''
-***************
-*** 14971,14976 ****
---- 14972,14985 ----
- shift
- extensions="$*"
-
-+ : Remove libraries needed only for extensions
-+ : The appropriate ext/Foo/Makefile.PL will add them back in, if
-+ : necessary.
-+ set X `echo " $libs " |
-+ sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
-+ shift
-+ perllibs="$*"
-+
- : Remove build directory name from cppstdin so it can be used from
- : either the present location or the final installed location.
- echo " "
-***************
-*** 15640,15645 ****
---- 15649,15655 ----
- path_sep='$path_sep'
- perl5='$perl5'
- perl='$perl'
-+ perllibs='$perllibs'
- perladmin='$perladmin'
- perlpath='$perlpath'
- pg='$pg'
-diff -cr perl-5.6.0.orig/Makefile.SH perl-5.6.0/Makefile.SH
-*** perl-5.6.0.orig/Makefile.SH Sat Mar 11 16:05:24 2000
---- perl-5.6.0/Makefile.SH Sun Sep 17 23:40:15 2000
-***************
-*** 70,76 ****
- *) shrpldflags="$shrpldflags -b noentry"
- ;;
- esac
-! shrpldflags="$shrpldflags $ldflags $libs $cryptlib"
- linklibperl="-L $archlibexp/CORE -L `pwd | sed 's/\/UU$//'` -lperl"
- ;;
- hpux*)
---- 70,76 ----
- *) shrpldflags="$shrpldflags -b noentry"
- ;;
- esac
-! shrpldflags="$shrpldflags $ldflags $perllibs $cryptlib"
- linklibperl="-L $archlibexp/CORE -L `pwd | sed 's/\/UU$//'` -lperl"
- ;;
- hpux*)
-***************
-*** 176,182 ****
- ext = \$(dynamic_ext) \$(static_ext) \$(nonxs_ext)
- DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT)
-
-! libs = $libs $cryptlib
-
- public = perl $suidperl utilities translators
-
---- 176,182 ----
- ext = \$(dynamic_ext) \$(static_ext) \$(nonxs_ext)
- DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT)
-
-! libs = $perllibs $cryptlib
-
- public = perl $suidperl utilities translators
-
-***************
-*** 333,339 ****
- case "$osname" in
- aix)
- $spitshell >>Makefile <<!GROK!THIS!
-! LIBS = $libs
- # In AIX we need to change this for building Perl itself from
- # its earlier definition (which is for building external
- # extensions *after* Perl has been built and installed)
---- 333,339 ----
- case "$osname" in
- aix)
- $spitshell >>Makefile <<!GROK!THIS!
-! LIBS = $perllibs
- # In AIX we need to change this for building Perl itself from
- # its earlier definition (which is for building external
- # extensions *after* Perl has been built and installed)
-diff -cr perl-5.6.0.orig/lib/ExtUtils/Embed.pm perl-5.6.0/lib/ExtUtils/Embed.pm
-*** perl-5.6.0.orig/lib/ExtUtils/Embed.pm Sun Jan 23 12:08:32 2000
---- perl-5.6.0/lib/ExtUtils/Embed.pm Sun Sep 17 23:40:15 2000
-***************
-*** 193,199 ****
- @path = $path ? split(/:/, $path) : @INC;
-
- push(@potential_libs, @link_args) if scalar @link_args;
-! push(@potential_libs, $Config{libs}) if defined $std;
-
- push(@mods, static_ext()) if $std;
-
---- 193,199 ----
- @path = $path ? split(/:/, $path) : @INC;
-
- push(@potential_libs, @link_args) if scalar @link_args;
-! push(@potential_libs, $Config{perllibs}) if defined $std;
-
- push(@mods, static_ext()) if $std;
-
-diff -cr perl-5.6.0.orig/lib/ExtUtils/Liblist.pm perl-5.6.0/lib/ExtUtils/Liblist.pm
-*** perl-5.6.0.orig/lib/ExtUtils/Liblist.pm Wed Mar 22 16:16:31 2000
---- perl-5.6.0/lib/ExtUtils/Liblist.pm Sun Sep 17 23:40:15 2000
-***************
-*** 17,34 ****
-
- sub _unix_os2_ext {
- my($self,$potential_libs, $verbose) = @_;
-! if ($^O =~ 'os2' and $Config{libs}) {
- # Dynamic libraries are not transitive, so we may need including
- # the libraries linked against perl.dll again.
-
- $potential_libs .= " " if $potential_libs;
-! $potential_libs .= $Config{libs};
- }
- return ("", "", "", "") unless $potential_libs;
- warn "Potential libraries are '$potential_libs':\n" if $verbose;
-
- my($so) = $Config{'so'};
-! my($libs) = $Config{'libs'};
- my $Config_libext = $Config{lib_ext} || ".a";
-
-
---- 17,34 ----
-
- sub _unix_os2_ext {
- my($self,$potential_libs, $verbose) = @_;
-! if ($^O =~ 'os2' and $Config{perllibs}) {
- # Dynamic libraries are not transitive, so we may need including
- # the libraries linked against perl.dll again.
-
- $potential_libs .= " " if $potential_libs;
-! $potential_libs .= $Config{perllibs};
- }
- return ("", "", "", "") unless $potential_libs;
- warn "Potential libraries are '$potential_libs':\n" if $verbose;
-
- my($so) = $Config{'so'};
-! my($libs) = $Config{'perllibs'};
- my $Config_libext = $Config{lib_ext} || ".a";
-
-
-***************
-*** 198,204 ****
- my $BC = 1 if $cc =~ /^bcc/i;
- my $GC = 1 if $cc =~ /^gcc/i;
- my $so = $Config{'so'};
-! my $libs = $Config{'libs'};
- my $libpth = $Config{'libpth'};
- my $libext = $Config{'lib_ext'} || ".lib";
-
---- 198,204 ----
- my $BC = 1 if $cc =~ /^bcc/i;
- my $GC = 1 if $cc =~ /^gcc/i;
- my $so = $Config{'so'};
-! my $libs = $Config{'perllibs'};
- my $libpth = $Config{'libpth'};
- my $libext = $Config{'lib_ext'} || ".lib";
-
-***************
-*** 338,344 ****
- $self->{CCFLAS} || $Config{'ccflags'};
- @crtls = ( ($dbgqual =~ m-/Debug-i ? $Config{'dbgprefix'} : '')
- . 'PerlShr/Share' );
-! push(@crtls, grep { not /\(/ } split /\s+/, $Config{'libs'});
- push(@crtls, grep { not /\(/ } split /\s+/, $Config{'libc'});
- # In general, we pass through the basic libraries from %Config unchanged.
- # The one exception is that if we're building in the Perl source tree, and
---- 338,344 ----
- $self->{CCFLAS} || $Config{'ccflags'};
- @crtls = ( ($dbgqual =~ m-/Debug-i ? $Config{'dbgprefix'} : '')
- . 'PerlShr/Share' );
-! push(@crtls, grep { not /\(/ } split /\s+/, $Config{'perllibs'});
- push(@crtls, grep { not /\(/ } split /\s+/, $Config{'libc'});
- # In general, we pass through the basic libraries from %Config unchanged.
- # The one exception is that if we're building in the Perl source tree, and
-***************
-*** 624,630 ****
- =item *
-
- If C<$potential_libs> is empty, the return value will be empty.
-! Otherwise, the libraries specified by C<$Config{libs}> (see Config.pm)
- will be appended to the list of C<$potential_libs>. The libraries
- will be searched for in the directories specified in C<$potential_libs>,
- C<$Config{libpth}>, and in C<$Config{installarchlib}/CORE>.
---- 624,630 ----
- =item *
-
- If C<$potential_libs> is empty, the return value will be empty.
-! Otherwise, the libraries specified by C<$Config{perllibs}> (see Config.pm)
- will be appended to the list of C<$potential_libs>. The libraries
- will be searched for in the directories specified in C<$potential_libs>,
- C<$Config{libpth}>, and in C<$Config{installarchlib}/CORE>.
-***************
-*** 668,674 ****
- alphanumeric characters are treated as flags. Unknown flags will be ignored.
-
- An entry that matches C</:nodefault/i> disables the appending of default
-! libraries found in C<$Config{libs}> (this should be only needed very rarely).
-
- An entry that matches C</:nosearch/i> disables all searching for
- the libraries specified after it. Translation of C<-Lfoo> and
---- 668,674 ----
- alphanumeric characters are treated as flags. Unknown flags will be ignored.
-
- An entry that matches C</:nodefault/i> disables the appending of default
-! libraries found in C<$Config{perllibs}> (this should be only needed very rarely).
-
- An entry that matches C</:nosearch/i> disables all searching for
- the libraries specified after it. Translation of C<-Lfoo> and
-***************
-*** 678,684 ****
-
- An entry that matches C</:search/i> reenables searching for
- the libraries specified after it. You can put it at the end to
-! enable searching for default libraries specified by C<$Config{libs}>.
-
- =item *
-
---- 678,684 ----
-
- An entry that matches C</:search/i> reenables searching for
- the libraries specified after it. You can put it at the end to
-! enable searching for default libraries specified by C<$Config{perllibs}>.
-
- =item *
-
-diff -cr perl-5.6.0.orig/lib/ExtUtils/MM_Unix.pm perl-5.6.0/lib/ExtUtils/MM_Unix.pm
-*** perl-5.6.0.orig/lib/ExtUtils/MM_Unix.pm Thu Mar 2 17:52:52 2000
---- perl-5.6.0/lib/ExtUtils/MM_Unix.pm Sun Sep 17 23:40:15 2000
-***************
-*** 2450,2456 ****
- MAP_STATIC = ",
- join(" \\\n\t", reverse sort keys %static), "
-
-! MAP_PRELIBS = $Config::Config{libs} $Config::Config{cryptlib}
- ";
-
- if (defined $libperl) {
---- 2450,2456 ----
- MAP_STATIC = ",
- join(" \\\n\t", reverse sort keys %static), "
-
-! MAP_PRELIBS = $Config::Config{perllibs} $Config::Config{cryptlib}
- ";
-
- if (defined $libperl) {
-diff -cr perl-5.6.0.orig/myconfig.SH perl-5.6.0/myconfig.SH
-*** perl-5.6.0.orig/myconfig.SH Sat Feb 26 06:34:49 2000
---- perl-5.6.0/myconfig.SH Sun Sep 17 23:41:17 2000
-***************
-*** 48,54 ****
- Linker and Libraries:
- ld='$ld', ldflags ='$ldflags'
- libpth=$libpth
-! libs=$libs
- libc=$libc, so=$so, useshrplib=$useshrplib, libperl=$libperl
- Dynamic Linking:
- dlsrc=$dlsrc, dlext=$dlext, d_dlsymun=$d_dlsymun, ccdlflags='$ccdlflags'
---- 48,54 ----
- Linker and Libraries:
- ld='$ld', ldflags ='$ldflags'
- libpth=$libpth
-! libs=$perllibs
- libc=$libc, so=$so, useshrplib=$useshrplib, libperl=$libperl
- Dynamic Linking:
- dlsrc=$dlsrc, dlext=$dlext, d_dlsymun=$d_dlsymun, ccdlflags='$ccdlflags'
-diff -cr perl-5.6.0.orig/patchlevel.h perl-5.6.0/patchlevel.h
-*** perl-5.6.0.orig/patchlevel.h Wed Mar 22 20:23:11 2000
---- perl-5.6.0/patchlevel.h Sun Sep 17 23:40:15 2000
-***************
-*** 70,75 ****
---- 70,76 ----
- #if !defined(PERL_PATCHLEVEL_H_IMPLICIT) && !defined(LOCAL_PATCH_COUNT)
- static char *local_patches[] = {
- NULL
-+ ,"NODB-1.0 - remove -ldb from core perl binary."
- ,NULL
- };
-
diff --git a/db/perl.DB_File/t/db-btree.t b/db/perl.DB_File/t/db-btree.t
deleted file mode 100644
index 377cfe45c..000000000
--- a/db/perl.DB_File/t/db-btree.t
+++ /dev/null
@@ -1,1306 +0,0 @@
-#!./perl -w
-
-use warnings;
-use strict;
-
-BEGIN {
- unless(grep /blib/, @INC) {
- chdir 't' if -d 't';
- @INC = '../lib' if -d '../lib';
- }
-}
-
-use Config;
-
-BEGIN {
- if(-d "lib" && -f "TEST") {
- if ($Config{'extensions'} !~ /\bDB_File\b/ ) {
- print "1..157\n";
- exit 0;
- }
- }
-}
-
-use DB_File;
-use Fcntl;
-
-print "1..157\n";
-
-sub ok
-{
- my $no = shift ;
- my $result = shift ;
-
- print "not " unless $result ;
- print "ok $no\n" ;
-}
-
-sub lexical
-{
- my(@a) = unpack ("C*", $a) ;
- my(@b) = unpack ("C*", $b) ;
-
- my $len = (@a > @b ? @b : @a) ;
- my $i = 0 ;
-
- foreach $i ( 0 .. $len -1) {
- return $a[$i] - $b[$i] if $a[$i] != $b[$i] ;
- }
-
- return @a - @b ;
-}
-
-{
- package Redirect ;
- use Symbol ;
-
- sub new
- {
- my $class = shift ;
- my $filename = shift ;
- my $fh = gensym ;
- open ($fh, ">$filename") || die "Cannot open $filename: $!" ;
- my $real_stdout = select($fh) ;
- return bless [$fh, $real_stdout ] ;
-
- }
- sub DESTROY
- {
- my $self = shift ;
- close $self->[0] ;
- select($self->[1]) ;
- }
-}
-
-sub docat
-{
- my $file = shift;
- #local $/ = undef unless wantarray ;
- open(CAT,$file) || die "Cannot open $file: $!";
- my @result = <CAT>;
- close(CAT);
- wantarray ? @result : join("", @result) ;
-}
-
-sub docat_del
-{
- my $file = shift;
- #local $/ = undef unless wantarray ;
- open(CAT,$file) || die "Cannot open $file: $!";
- my @result = <CAT>;
- close(CAT);
- unlink $file ;
- wantarray ? @result : join("", @result) ;
-}
-
-
-my $db185mode = ($DB_File::db_version == 1 && ! $DB_File::db_185_compat) ;
-my $null_keys_allowed = ($DB_File::db_ver < 2.004010
- || $DB_File::db_ver >= 3.1 );
-
-my $Dfile = "dbbtree.tmp";
-unlink $Dfile;
-
-umask(0);
-
-# Check the interface to BTREEINFO
-
-my $dbh = new DB_File::BTREEINFO ;
-ok(1, ! defined $dbh->{flags}) ;
-ok(2, ! defined $dbh->{cachesize}) ;
-ok(3, ! defined $dbh->{psize}) ;
-ok(4, ! defined $dbh->{lorder}) ;
-ok(5, ! defined $dbh->{minkeypage}) ;
-ok(6, ! defined $dbh->{maxkeypage}) ;
-ok(7, ! defined $dbh->{compare}) ;
-ok(8, ! defined $dbh->{prefix}) ;
-
-$dbh->{flags} = 3000 ;
-ok(9, $dbh->{flags} == 3000) ;
-
-$dbh->{cachesize} = 9000 ;
-ok(10, $dbh->{cachesize} == 9000);
-
-$dbh->{psize} = 400 ;
-ok(11, $dbh->{psize} == 400) ;
-
-$dbh->{lorder} = 65 ;
-ok(12, $dbh->{lorder} == 65) ;
-
-$dbh->{minkeypage} = 123 ;
-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/ ) ;
-eval 'my $q = $dbh->{fred}' ;
-ok(18, $@ =~ /^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 )) ;
-
-my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,
- $blksize,$blocks) = stat($Dfile);
-ok(20, ($mode & 0777) == ($^O eq 'os2' ? 0666 : 0640) || $^O eq 'amigaos' || $^O eq 'MSWin32');
-
-my ($key, $value, $i);
-while (($key,$value) = each(%h)) {
- $i++;
-}
-ok(21, !$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'} ) ;
-
-$h{'def'} = 'DEF';
-$h{'jkl','mno'} = "JKL\034MNO";
-$h{'a',2,3,4,5} = join("\034",'A',2,3,4,5);
-$h{'a'} = 'A';
-
-#$h{'b'} = 'B';
-$X->STORE('b', 'B') ;
-
-$h{'c'} = 'C';
-
-#$h{'d'} = 'D';
-$X->put('d', 'D') ;
-
-$h{'e'} = 'E';
-$h{'f'} = 'F';
-$h{'g'} = 'X';
-$h{'h'} = 'H';
-$h{'i'} = 'I';
-
-$h{'goner2'} = 'snork';
-delete $h{'goner2'};
-
-
-# IMPORTANT - $X must be undefined before the untie otherwise the
-# underlying DB close routine will not get called.
-undef $X ;
-untie(%h);
-
-# tie to the same file again
-ok(26, $X = tie(%h,'DB_File',$Dfile, O_RDWR, 0640, $DB_BTREE)) ;
-
-# Modify an entry from the previous tie
-$h{'g'} = 'G';
-
-$h{'j'} = 'J';
-$h{'k'} = 'K';
-$h{'l'} = 'L';
-$h{'m'} = 'M';
-$h{'n'} = 'N';
-$h{'o'} = 'O';
-$h{'p'} = 'P';
-$h{'q'} = 'Q';
-$h{'r'} = 'R';
-$h{'s'} = 'S';
-$h{'t'} = 'T';
-$h{'u'} = 'U';
-$h{'v'} = 'V';
-$h{'w'} = 'W';
-$h{'x'} = 'X';
-$h{'y'} = 'Y';
-$h{'z'} = 'Z';
-
-$h{'goner3'} = 'snork';
-
-delete $h{'goner1'};
-$X->DELETE('goner3');
-
-my @keys = keys(%h);
-my @values = values(%h);
-
-ok(27, $#keys == 29 && $#values == 29) ;
-
-$i = 0 ;
-while (($key,$value) = each(%h)) {
- if ($key eq $keys[$i] && $value eq $values[$i] && $key eq lc($value)) {
- $key =~ y/a-z/A-Z/;
- $i++ if $key eq $value;
- }
-}
-
-ok(28, $i == 30) ;
-
-@keys = ('blurfl', keys(%h), 'dyick');
-ok(29, $#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)) ;
-
-$h{'foo'} = '';
-ok(31, $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.
-my $result = 0 ;
-if ($null_keys_allowed) {
- $h{''} = 'bar';
- $result = ( $h{''} eq 'bar' );
-}
-else
- { $result = 1 }
-ok(32, $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);
-
-($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,
- $blksize,$blocks) = stat($Dfile);
-ok(34, $size > 0 );
-
-@h{0..200} = 200..400;
-my @foo = @h{0..200};
-ok(35, join(':',200..400) eq join(':',@foo) );
-
-# Now check all the non-tie specific stuff
-
-
-# Check R_NOOVERWRITE flag will make put fail when attempting to overwrite
-# an existing record.
-
-my $status = $X->put( 'x', 'newvalue', R_NOOVERWRITE) ;
-ok(36, $status == 1 );
-
-# check that the value of the key 'x' has not been changed by the
-# previous test
-ok(37, $h{'x'} eq 'X' );
-
-# standard put
-$status = $X->put('key', 'value') ;
-ok(38, $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' );
-
-# Attempting to delete an existing key should work
-
-$status = $X->del('q') ;
-ok(41, $status == 0 );
-if ($null_keys_allowed) {
- $status = $X->del('') ;
-} else {
- $status = 0 ;
-}
-ok(42, $status == 0 );
-
-# Make sure that the key deleted, cannot be retrieved
-ok(43, ! defined $h{'q'}) ;
-ok(44, ! defined $h{''}) ;
-
-undef $X ;
-untie %h ;
-
-ok(45, $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 );
-
-# Check the get interface
-
-# First a non-existing key
-$status = $X->get('aaaa', $value) ;
-ok(47, $status == 1 );
-
-# Next an existing key
-$status = $X->get('a', $value) ;
-ok(48, $status == 0 );
-ok(49, $value eq 'A' );
-
-# seq
-# ###
-
-# use seq to find an approximate match
-$key = 'ke' ;
-$value = '' ;
-$status = $X->seq($key, $value, R_CURSOR) ;
-ok(50, $status == 0 );
-ok(51, $key eq 'key' );
-ok(52, $value eq 'value' );
-
-# seq when the key does not match
-$key = 'zzz' ;
-$value = '' ;
-$status = $X->seq($key, $value, R_CURSOR) ;
-ok(53, $status == 1 );
-
-
-# use seq to set the cursor, then delete the record @ the cursor.
-
-$key = 'x' ;
-$value = '' ;
-$status = $X->seq($key, $value, R_CURSOR) ;
-ok(54, $status == 0 );
-ok(55, $key eq 'x' );
-ok(56, $value eq 'X' );
-$status = $X->del(0, R_CURSOR) ;
-ok(57, $status == 0 );
-$status = $X->get('x', $value) ;
-ok(58, $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' );
-
-$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' );
-$status = $X->get('y', $value) ;
-ok(65, 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 );
-my $previous = $key ;
-
-$ok = 1 ;
-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 );
-
-# use seq to walk backwards through a file
-$status = $X->seq($key, $value, R_LAST) ;
-ok(69, $status == 0 );
-$previous = $key ;
-
-$ok = 1 ;
-while (($status = $X->seq($key, $value, R_PREV)) == 0)
-{
- ($ok = 0), last if ($previous cmp $key) == -1 ;
- #print "key = [$key] value = [$value]\n" ;
-}
-
-ok(70, $status == 1 );
-ok(71, $ok == 1 );
-
-
-# check seq FIRST/LAST
-
-# sync
-# ####
-
-$status = $X->sync ;
-ok(72, $status == 0 );
-
-
-# fd
-# ##
-
-$status = $X->fd ;
-ok(73, $status != 0 );
-
-
-undef $X ;
-untie %h ;
-
-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 ));
-
-# fd with an in memory file should return failure
-$status = $Y->fd ;
-ok(75, $status == -1 );
-
-
-undef $Y ;
-untie %h ;
-
-# Duplicate keys
-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 )) ;
-
-$hh{'Wall'} = 'Larry' ;
-$hh{'Wall'} = 'Stone' ; # Note the duplicate key
-$hh{'Wall'} = 'Brick' ; # Note the duplicate key
-$hh{'Wall'} = 'Brick' ; # Note the duplicate key and value
-$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 );
-
-# now in list context
-my @unknown = $YY->get_dup('Unknown') ;
-ok(80, "@unknown" eq "" );
-
-my @smith = $YY->get_dup('Smith') ;
-ok(81, "@smith" eq "John" );
-
-{
-my @wall = $YY->get_dup('Wall') ;
-my %wall ;
-@wall{@wall} = @wall ;
-ok(82, (@wall == 4 && $wall{'Larry'} && $wall{'Stone'} && $wall{'Brick'}) );
-}
-
-# hash
-my %unknown = $YY->get_dup('Unknown', 1) ;
-ok(83, keys %unknown == 0 );
-
-my %smith = $YY->get_dup('Smith', 1) ;
-ok(84, keys %smith == 1 && $smith{'John'}) ;
-
-my %wall = $YY->get_dup('Wall', 1) ;
-ok(85, keys %wall == 3 && $wall{'Larry'} == 1 && $wall{'Stone'} == 1
- && $wall{'Brick'} == 2);
-
-undef $YY ;
-untie %hh ;
-unlink $Dfile;
-
-
-# test multiple callbacks
-my $Dfile1 = "btree1" ;
-my $Dfile2 = "btree2" ;
-my $Dfile3 = "btree3" ;
-
-my $dbh1 = new DB_File::BTREEINFO ;
-$dbh1->{compare} = sub {
- no warnings 'numeric' ;
- $_[0] <=> $_[1] } ;
-
-my $dbh2 = new DB_File::BTREEINFO ;
-$dbh2->{compare} = sub { $_[0] cmp $_[1] } ;
-
-my $dbh3 = new DB_File::BTREEINFO ;
-$dbh3->{compare} = sub { length $_[0] <=> length $_[1] } ;
-
-
-my (%g, %k);
-tie(%h, 'DB_File',$Dfile1, O_RDWR|O_CREAT, 0640, $dbh1 ) ;
-tie(%g, 'DB_File',$Dfile2, O_RDWR|O_CREAT, 0640, $dbh2 ) ;
-tie(%k, 'DB_File',$Dfile3, O_RDWR|O_CREAT, 0640, $dbh3 ) ;
-
-my @Keys = qw( 0123 12 -1234 9 987654321 def ) ;
-my (@srt_1, @srt_2, @srt_3);
-{
- no warnings 'numeric' ;
- @srt_1 = sort { $a <=> $b } @Keys ;
-}
-@srt_2 = sort { $a cmp $b } @Keys ;
-@srt_3 = sort { length $a <=> length $b } @Keys ;
-
-foreach (@Keys) {
- $h{$_} = 1 ;
- $g{$_} = 1 ;
- $k{$_} = 1 ;
-}
-
-sub ArrayCompare
-{
- my($a, $b) = @_ ;
-
- return 0 if @$a != @$b ;
-
- foreach (1 .. length @$a)
- {
- return 0 unless $$a[$_] eq $$b[$_] ;
- }
-
- 1 ;
-}
-
-ok(86, ArrayCompare (\@srt_1, [keys %h]) );
-ok(87, ArrayCompare (\@srt_2, [keys %g]) );
-ok(88, ArrayCompare (\@srt_3, [keys %k]) );
-
-untie %h ;
-untie %g ;
-untie %k ;
-unlink $Dfile1, $Dfile2, $Dfile3 ;
-
-# clear
-# #####
-
-ok(89, tie(%h, 'DB_File', $Dfile1, O_RDWR|O_CREAT, 0640, $DB_BTREE ) );
-foreach (1 .. 10)
- { $h{$_} = $_ * 100 }
-
-# check that there are 10 elements in the hash
-$i = 0 ;
-while (($key,$value) = each(%h)) {
- $i++;
-}
-ok(90, $i == 10);
-
-# now clear the hash
-%h = () ;
-
-# check it is empty
-$i = 0 ;
-while (($key,$value) = each(%h)) {
- $i++;
-}
-ok(91, $i == 0);
-
-untie %h ;
-unlink $Dfile1 ;
-
-{
- # check that attempting to tie an array to a DB_BTREE will fail
-
- 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/) ;
- unlink $filename ;
-}
-
-{
- # sub-class test
-
- package Another ;
-
- use warnings ;
- use strict ;
-
- open(FILE, ">SubDB.pm") or die "Cannot open SubDB.pm: $!\n" ;
- print FILE <<'EOM' ;
-
- package SubDB ;
-
- use warnings ;
- use strict ;
- use vars qw( @ISA @EXPORT) ;
-
- require Exporter ;
- use DB_File;
- @ISA=qw(DB_File);
- @EXPORT = @DB_File::EXPORT ;
-
- sub STORE {
- my $self = shift ;
- my $key = shift ;
- my $value = shift ;
- $self->SUPER::STORE($key, $value * 2) ;
- }
-
- sub FETCH {
- my $self = shift ;
- my $key = shift ;
- $self->SUPER::FETCH($key) - 1 ;
- }
-
- sub put {
- my $self = shift ;
- my $key = shift ;
- my $value = shift ;
- $self->SUPER::put($key, $value * 3) ;
- }
-
- sub get {
- my $self = shift ;
- $self->SUPER::get($_[0], $_[1]) ;
- $_[1] -= 2 ;
- }
-
- sub A_new_method
- {
- my $self = shift ;
- my $key = shift ;
- my $value = $self->FETCH($key) ;
- return "[[$value]]" ;
- }
-
- 1 ;
-EOM
-
- close FILE ;
-
- BEGIN { push @INC, '.'; }
- eval 'use SubDB ; ';
- main::ok(93, $@ eq "") ;
- my %h ;
- my $X ;
- eval '
- $X = tie(%h, "SubDB","dbbtree.tmp", O_RDWR|O_CREAT, 0640, $DB_BTREE );
- ' ;
-
- main::ok(94, $@ eq "") ;
-
- my $ret = eval '$h{"fred"} = 3 ; return $h{"fred"} ' ;
- main::ok(95, $@ eq "") ;
- main::ok(96, $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) ;
-
- $ret = eval ' R_NEXT eq main::R_NEXT ' ;
- main::ok(99, $@ eq "" ) ;
- main::ok(100, $ret == 1) ;
-
- $ret = eval '$X->A_new_method("joe") ' ;
- main::ok(101, $@ eq "") ;
- main::ok(102, $ret eq "[[11]]") ;
-
- undef $X;
- untie(%h);
- unlink "SubDB.pm", "dbbtree.tmp" ;
-
-}
-
-{
- # DBM Filter tests
- use warnings ;
- use strict ;
- my (%h, $db) ;
- my ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ;
- unlink $Dfile;
-
- sub checkOutput
- {
- my($fk, $sk, $fv, $sv) = @_ ;
- return
- $fetch_key eq $fk && $store_key eq $sk &&
- $fetch_value eq $fv && $store_value eq $sv &&
- $_ eq 'original' ;
- }
-
- ok(103, $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 = $_ }) ;
- $db->filter_fetch_value (sub { $fetch_value = $_}) ;
- $db->filter_store_value (sub { $store_value = $_ }) ;
-
- $_ = "original" ;
-
- $h{"fred"} = "joe" ;
- # fk sk fv sv
- ok(104, checkOutput( "", "fred", "", "joe")) ;
-
- ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ;
- ok(105, $h{"fred"} eq "joe");
- # fk sk fv sv
- ok(106, checkOutput( "", "fred", "joe", "")) ;
-
- ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ;
- ok(107, $db->FIRSTKEY() eq "fred") ;
- # fk sk fv sv
- ok(108, checkOutput( "fred", "", "", "")) ;
-
- # replace the filters, but remember the previous set
- my ($old_fk) = $db->filter_fetch_key
- (sub { $_ = uc $_ ; $fetch_key = $_ }) ;
- my ($old_sk) = $db->filter_store_key
- (sub { $_ = lc $_ ; $store_key = $_ }) ;
- my ($old_fv) = $db->filter_fetch_value
- (sub { $_ = "[$_]"; $fetch_value = $_ }) ;
- my ($old_sv) = $db->filter_store_value
- (sub { s/o/x/g; $store_value = $_ }) ;
-
- ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ;
- $h{"Fred"} = "Joe" ;
- # fk sk fv sv
- ok(109, checkOutput( "", "fred", "", "Jxe")) ;
-
- ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ;
- ok(110, $h{"Fred"} eq "[Jxe]");
- # fk sk fv sv
- ok(111, checkOutput( "", "fred", "[Jxe]", "")) ;
-
- ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ;
- ok(112, $db->FIRSTKEY() eq "FRED") ;
- # fk sk fv sv
- ok(113, checkOutput( "FRED", "", "", "")) ;
-
- # put the original filters back
- $db->filter_fetch_key ($old_fk);
- $db->filter_store_key ($old_sk);
- $db->filter_fetch_value ($old_fv);
- $db->filter_store_value ($old_sv);
-
- ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ;
- $h{"fred"} = "joe" ;
- ok(114, checkOutput( "", "fred", "", "joe")) ;
-
- ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ;
- ok(115, $h{"fred"} eq "joe");
- ok(116, checkOutput( "", "fred", "joe", "")) ;
-
- ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ;
- ok(117, $db->FIRSTKEY() eq "fred") ;
- ok(118, checkOutput( "fred", "", "", "")) ;
-
- # delete the filters
- $db->filter_fetch_key (undef);
- $db->filter_store_key (undef);
- $db->filter_fetch_value (undef);
- $db->filter_store_value (undef);
-
- ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ;
- $h{"fred"} = "joe" ;
- ok(119, checkOutput( "", "", "", "")) ;
-
- ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ;
- ok(120, $h{"fred"} eq "joe");
- ok(121, checkOutput( "", "", "", "")) ;
-
- ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ;
- ok(122, $db->FIRSTKEY() eq "fred") ;
- ok(123, checkOutput( "", "", "", "")) ;
-
- undef $db ;
- untie %h;
- unlink $Dfile;
-}
-
-{
- # DBM Filter with a closure
-
- use warnings ;
- use strict ;
- my (%h, $db) ;
-
- unlink $Dfile;
- ok(124, $db = tie(%h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_BTREE ) );
-
- my %result = () ;
-
- sub Closure
- {
- my ($name) = @_ ;
- my $count = 0 ;
- my @kept = () ;
-
- return sub { ++$count ;
- push @kept, $_ ;
- $result{$name} = "$name - $count: [@kept]" ;
- }
- }
-
- $db->filter_store_key(Closure("store key")) ;
- $db->filter_store_value(Closure("store value")) ;
- $db->filter_fetch_key(Closure("fetch key")) ;
- $db->filter_fetch_value(Closure("fetch value")) ;
-
- $_ = "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") ;
-
- $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") ;
-
- undef $db ;
- untie %h;
- unlink $Dfile;
-}
-
-{
- # DBM Filter recursion detection
- use warnings ;
- use strict ;
- my (%h, $db) ;
- unlink $Dfile;
-
- ok(147, $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/ );
-
- undef $db ;
- untie %h;
- unlink $Dfile;
-}
-
-
-{
- # Examples from the POD
-
-
- my $file = "xyzt" ;
- {
- my $redirect = new Redirect $file ;
-
- # BTREE example 1
- ###
-
- use warnings FATAL => qw(all) ;
- use strict ;
- use DB_File ;
-
- my %h ;
-
- sub Compare
- {
- my ($key1, $key2) = @_ ;
- "\L$key1" cmp "\L$key2" ;
- }
-
- # specify the Perl sub that will do the comparison
- $DB_BTREE->{'compare'} = \&Compare ;
-
- unlink "tree" ;
- tie %h, "DB_File", "tree", O_RDWR|O_CREAT, 0640, $DB_BTREE
- or die "Cannot open file 'tree': $!\n" ;
-
- # Add a key/value pair to the file
- $h{'Wall'} = 'Larry' ;
- $h{'Smith'} = 'John' ;
- $h{'mouse'} = 'mickey' ;
- $h{'duck'} = 'donald' ;
-
- # Delete
- delete $h{"duck"} ;
-
- # Cycle through the keys printing them in order.
- # Note it is not necessary to sort the keys as
- # the btree will have kept them in order automatically.
- foreach (keys %h)
- { print "$_\n" }
-
- untie %h ;
-
- unlink "tree" ;
- }
-
- delete $DB_BTREE->{'compare'} ;
-
- ok(149, docat_del($file) eq <<'EOM') ;
-mouse
-Smith
-Wall
-EOM
-
- {
- my $redirect = new Redirect $file ;
-
- # BTREE example 2
- ###
-
- use warnings FATAL => qw(all) ;
- use strict ;
- use DB_File ;
-
- use vars qw($filename %h ) ;
-
- $filename = "tree" ;
- unlink $filename ;
-
- # Enable duplicate records
- $DB_BTREE->{'flags'} = R_DUP ;
-
- tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0640, $DB_BTREE
- or die "Cannot open $filename: $!\n";
-
- # Add some key/value pairs to the file
- $h{'Wall'} = 'Larry' ;
- $h{'Wall'} = 'Brick' ; # Note the duplicate key
- $h{'Wall'} = 'Brick' ; # Note the duplicate key and value
- $h{'Smith'} = 'John' ;
- $h{'mouse'} = 'mickey' ;
-
- # iterate through the associative array
- # and print each key/value pair.
- foreach (keys %h)
- { print "$_ -> $h{$_}\n" }
-
- untie %h ;
-
- unlink $filename ;
- }
-
- ok(150, docat_del($file) eq ($db185mode ? <<'EOM' : <<'EOM') ) ;
-Smith -> John
-Wall -> Brick
-Wall -> Brick
-Wall -> Brick
-mouse -> mickey
-EOM
-Smith -> John
-Wall -> Larry
-Wall -> Larry
-Wall -> Larry
-mouse -> mickey
-EOM
-
- {
- my $redirect = new Redirect $file ;
-
- # BTREE example 3
- ###
-
- use warnings FATAL => qw(all) ;
- use strict ;
- use DB_File ;
-
- use vars qw($filename $x %h $status $key $value) ;
-
- $filename = "tree" ;
- unlink $filename ;
-
- # Enable duplicate records
- $DB_BTREE->{'flags'} = R_DUP ;
-
- $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0640, $DB_BTREE
- or die "Cannot open $filename: $!\n";
-
- # Add some key/value pairs to the file
- $h{'Wall'} = 'Larry' ;
- $h{'Wall'} = 'Brick' ; # Note the duplicate key
- $h{'Wall'} = 'Brick' ; # Note the duplicate key and value
- $h{'Smith'} = 'John' ;
- $h{'mouse'} = 'mickey' ;
-
- # iterate through the btree using seq
- # and print each key/value pair.
- $key = $value = 0 ;
- for ($status = $x->seq($key, $value, R_FIRST) ;
- $status == 0 ;
- $status = $x->seq($key, $value, R_NEXT) )
- { print "$key -> $value\n" }
-
-
- undef $x ;
- untie %h ;
- }
-
- ok(151, docat_del($file) eq ($db185mode == 1 ? <<'EOM' : <<'EOM') ) ;
-Smith -> John
-Wall -> Brick
-Wall -> Brick
-Wall -> Larry
-mouse -> mickey
-EOM
-Smith -> John
-Wall -> Larry
-Wall -> Brick
-Wall -> Brick
-mouse -> mickey
-EOM
-
-
- {
- my $redirect = new Redirect $file ;
-
- # BTREE example 4
- ###
-
- use warnings FATAL => qw(all) ;
- use strict ;
- use DB_File ;
-
- use vars qw($filename $x %h ) ;
-
- $filename = "tree" ;
-
- # Enable duplicate records
- $DB_BTREE->{'flags'} = R_DUP ;
-
- $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0640, $DB_BTREE
- or die "Cannot open $filename: $!\n";
-
- my $cnt = $x->get_dup("Wall") ;
- print "Wall occurred $cnt times\n" ;
-
- my %hash = $x->get_dup("Wall", 1) ;
- print "Larry is there\n" if $hash{'Larry'} ;
- print "There are $hash{'Brick'} Brick Walls\n" ;
-
- my @list = sort $x->get_dup("Wall") ;
- print "Wall => [@list]\n" ;
-
- @list = $x->get_dup("Smith") ;
- print "Smith => [@list]\n" ;
-
- @list = $x->get_dup("Dog") ;
- print "Dog => [@list]\n" ;
-
- undef $x ;
- untie %h ;
- }
-
- ok(152, docat_del($file) eq <<'EOM') ;
-Wall occurred 3 times
-Larry is there
-There are 2 Brick Walls
-Wall => [Brick Brick Larry]
-Smith => [John]
-Dog => []
-EOM
-
- {
- my $redirect = new Redirect $file ;
-
- # BTREE example 5
- ###
-
- use warnings FATAL => qw(all) ;
- use strict ;
- use DB_File ;
-
- use vars qw($filename $x %h $found) ;
-
- my $filename = "tree" ;
-
- # Enable duplicate records
- $DB_BTREE->{'flags'} = R_DUP ;
-
- $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0640, $DB_BTREE
- or die "Cannot open $filename: $!\n";
-
- $found = ( $x->find_dup("Wall", "Larry") == 0 ? "" : "not") ;
- print "Larry Wall is $found there\n" ;
-
- $found = ( $x->find_dup("Wall", "Harry") == 0 ? "" : "not") ;
- print "Harry Wall is $found there\n" ;
-
- undef $x ;
- untie %h ;
- }
-
- ok(153, docat_del($file) eq <<'EOM') ;
-Larry Wall is there
-Harry Wall is not there
-EOM
-
- {
- my $redirect = new Redirect $file ;
-
- # BTREE example 6
- ###
-
- use warnings FATAL => qw(all) ;
- use strict ;
- use DB_File ;
-
- use vars qw($filename $x %h $found) ;
-
- my $filename = "tree" ;
-
- # Enable duplicate records
- $DB_BTREE->{'flags'} = R_DUP ;
-
- $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0640, $DB_BTREE
- or die "Cannot open $filename: $!\n";
-
- $x->del_dup("Wall", "Larry") ;
-
- $found = ( $x->find_dup("Wall", "Larry") == 0 ? "" : "not") ;
- print "Larry Wall is $found there\n" ;
-
- undef $x ;
- untie %h ;
-
- unlink $filename ;
- }
-
- ok(154, docat_del($file) eq <<'EOM') ;
-Larry Wall is not there
-EOM
-
- {
- my $redirect = new Redirect $file ;
-
- # BTREE example 7
- ###
-
- use warnings FATAL => qw(all) ;
- use strict ;
- use DB_File ;
- use Fcntl ;
-
- use vars qw($filename $x %h $st $key $value) ;
-
- sub match
- {
- my $key = shift ;
- my $value = 0;
- my $orig_key = $key ;
- $x->seq($key, $value, R_CURSOR) ;
- print "$orig_key\t-> $key\t-> $value\n" ;
- }
-
- $filename = "tree" ;
- unlink $filename ;
-
- $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0640, $DB_BTREE
- or die "Cannot open $filename: $!\n";
-
- # Add some key/value pairs to the file
- $h{'mouse'} = 'mickey' ;
- $h{'Wall'} = 'Larry' ;
- $h{'Walls'} = 'Brick' ;
- $h{'Smith'} = 'John' ;
-
-
- $key = $value = 0 ;
- print "IN ORDER\n" ;
- for ($st = $x->seq($key, $value, R_FIRST) ;
- $st == 0 ;
- $st = $x->seq($key, $value, R_NEXT) )
-
- { print "$key -> $value\n" }
-
- print "\nPARTIAL MATCH\n" ;
-
- match "Wa" ;
- match "A" ;
- match "a" ;
-
- undef $x ;
- untie %h ;
-
- unlink $filename ;
-
- }
-
- ok(155, docat_del($file) eq <<'EOM') ;
-IN ORDER
-Smith -> John
-Wall -> Larry
-Walls -> Brick
-mouse -> mickey
-
-PARTIAL MATCH
-Wa -> Wall -> Larry
-A -> Smith -> John
-a -> mouse -> mickey
-EOM
-
-}
-
-#{
-# # R_SETCURSOR
-# use strict ;
-# my (%h, $db) ;
-# unlink $Dfile;
-#
-# ok(156, $db = tie(%h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_BTREE ) );
-#
-# $h{abc} = 33 ;
-# my $k = "newest" ;
-# my $v = 44 ;
-# my $status = $db->put($k, $v, R_SETCURSOR) ;
-# print "status = [$status]\n" ;
-# ok(157, $status == 0) ;
-# $status = $db->del($k, R_CURSOR) ;
-# print "status = [$status]\n" ;
-# ok(158, $status == 0) ;
-# $k = "newest" ;
-# ok(159, $db->get($k, $v, R_CURSOR)) ;
-#
-# ok(160, keys %h == 1) ;
-#
-# undef $db ;
-# untie %h;
-# unlink $Dfile;
-#}
-
-{
- # Bug ID 20001013.009
- #
- # test that $hash{KEY} = undef doesn't produce the warning
- # Use of uninitialized value in null operation
- use warnings ;
- use strict ;
- use DB_File ;
-
- unlink $Dfile;
- my %h ;
- my $a = "";
- local $SIG{__WARN__} = sub {$a = $_[0]} ;
-
- 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 "") ;
- untie %h ;
- unlink $Dfile;
-}
-
-{
- # test that %hash = () doesn't produce the warning
- # Argument "" isn't numeric in entersub
- use warnings ;
- use strict ;
- use DB_File ;
-
- unlink $Dfile;
- my %h ;
- my $a = "";
- local $SIG{__WARN__} = sub {$a = $_[0]} ;
-
- tie %h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0664, $DB_BTREE
- or die "Can't open file: $!\n" ;
- %h = (); ;
- ok(157, $a eq "") ;
- 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
deleted file mode 100644
index a6efd9810..000000000
--- a/db/perl.DB_File/t/db-hash.t
+++ /dev/null
@@ -1,753 +0,0 @@
-#!./perl
-
-use warnings ;
-use strict ;
-
-BEGIN {
- unless(grep /blib/, @INC) {
- chdir 't' if -d 't';
- @INC = '../lib' if -d '../lib';
- }
-}
-
-use Config;
-
-BEGIN {
- if(-d "lib" && -f "TEST") {
- if ($Config{'extensions'} !~ /\bDB_File\b/ ) {
- print "1..111\n";
- exit 0;
- }
- }
-}
-
-use DB_File;
-use Fcntl;
-
-print "1..111\n";
-
-sub ok
-{
- my $no = shift ;
- my $result = shift ;
-
- print "not " unless $result ;
- print "ok $no\n" ;
-}
-
-{
- package Redirect ;
- use Symbol ;
-
- sub new
- {
- my $class = shift ;
- my $filename = shift ;
- my $fh = gensym ;
- open ($fh, ">$filename") || die "Cannot open $filename: $!" ;
- my $real_stdout = select($fh) ;
- return bless [$fh, $real_stdout ] ;
-
- }
- sub DESTROY
- {
- my $self = shift ;
- close $self->[0] ;
- select($self->[1]) ;
- }
-}
-
-sub docat_del
-{
- my $file = shift;
- local $/ = undef;
- open(CAT,$file) || die "Cannot open $file: $!";
- my $result = <CAT>;
- close(CAT);
- unlink $file ;
- return $result;
-}
-
-my $Dfile = "dbhash.tmp";
-my $null_keys_allowed = ($DB_File::db_ver < 2.004010
- || $DB_File::db_ver >= 3.1 );
-
-unlink $Dfile;
-
-umask(0);
-
-# Check the interface to HASHINFO
-
-my $dbh = new DB_File::HASHINFO ;
-
-ok(1, ! defined $dbh->{bsize}) ;
-ok(2, ! defined $dbh->{ffactor}) ;
-ok(3, ! defined $dbh->{nelem}) ;
-ok(4, ! defined $dbh->{cachesize}) ;
-ok(5, ! defined $dbh->{hash}) ;
-ok(6, ! defined $dbh->{lorder}) ;
-
-$dbh->{bsize} = 3000 ;
-ok(7, $dbh->{bsize} == 3000 );
-
-$dbh->{ffactor} = 9000 ;
-ok(8, $dbh->{ffactor} == 9000 );
-
-$dbh->{nelem} = 400 ;
-ok(9, $dbh->{nelem} == 400 );
-
-$dbh->{cachesize} = 65 ;
-ok(10, $dbh->{cachesize} == 65 );
-
-$dbh->{hash} = "abc" ;
-ok(11, $dbh->{hash} eq "abc" );
-
-$dbh->{lorder} = 1234 ;
-ok(12, $dbh->{lorder} == 1234 );
-
-# Check that an invalid entry is caught both for store & fetch
-eval '$dbh->{fred} = 1234' ;
-ok(13, $@ =~ /^DB_File::HASHINFO::STORE - Unknown element 'fred' at/ );
-eval 'my $q = $dbh->{fred}' ;
-ok(14, $@ =~ /^DB_File::HASHINFO::FETCH - Unknown element 'fred' at/ );
-
-
-# Now check the interface to HASH
-my ($X, %h);
-ok(15, $X = tie(%h, 'DB_File',$Dfile, O_RDWR|O_CREAT, 0640, $DB_HASH ) );
-
-my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,
- $blksize,$blocks) = stat($Dfile);
-ok(16, ($mode & 0777) == ($^O eq 'os2' ? 0666 : 0640) || $^O eq 'amigaos' || $^O eq 'MSWin32');
-
-my ($key, $value, $i);
-while (($key,$value) = each(%h)) {
- $i++;
-}
-ok(17, !$i );
-
-$h{'goner1'} = 'snork';
-
-$h{'abc'} = 'ABC';
-ok(18, $h{'abc'} eq 'ABC' );
-ok(19, !defined $h{'jimmy'} );
-ok(20, !exists $h{'jimmy'} );
-ok(21, exists $h{'abc'} );
-
-$h{'def'} = 'DEF';
-$h{'jkl','mno'} = "JKL\034MNO";
-$h{'a',2,3,4,5} = join("\034",'A',2,3,4,5);
-$h{'a'} = 'A';
-
-#$h{'b'} = 'B';
-$X->STORE('b', 'B') ;
-
-$h{'c'} = 'C';
-
-#$h{'d'} = 'D';
-$X->put('d', 'D') ;
-
-$h{'e'} = 'E';
-$h{'f'} = 'F';
-$h{'g'} = 'X';
-$h{'h'} = 'H';
-$h{'i'} = 'I';
-
-$h{'goner2'} = 'snork';
-delete $h{'goner2'};
-
-
-# IMPORTANT - $X must be undefined before the untie otherwise the
-# underlying DB close routine will not get called.
-undef $X ;
-untie(%h);
-
-
-# tie to the same file again, do not supply a type - should default to HASH
-ok(22, $X = tie(%h,'DB_File',$Dfile, O_RDWR, 0640) );
-
-# Modify an entry from the previous tie
-$h{'g'} = 'G';
-
-$h{'j'} = 'J';
-$h{'k'} = 'K';
-$h{'l'} = 'L';
-$h{'m'} = 'M';
-$h{'n'} = 'N';
-$h{'o'} = 'O';
-$h{'p'} = 'P';
-$h{'q'} = 'Q';
-$h{'r'} = 'R';
-$h{'s'} = 'S';
-$h{'t'} = 'T';
-$h{'u'} = 'U';
-$h{'v'} = 'V';
-$h{'w'} = 'W';
-$h{'x'} = 'X';
-$h{'y'} = 'Y';
-$h{'z'} = 'Z';
-
-$h{'goner3'} = 'snork';
-
-delete $h{'goner1'};
-$X->DELETE('goner3');
-
-my @keys = keys(%h);
-my @values = values(%h);
-
-ok(23, $#keys == 29 && $#values == 29) ;
-
-$i = 0 ;
-while (($key,$value) = each(%h)) {
- if ($key eq $keys[$i] && $value eq $values[$i] && $key eq lc($value)) {
- $key =~ y/a-z/A-Z/;
- $i++ if $key eq $value;
- }
-}
-
-ok(24, $i == 30) ;
-
-@keys = ('blurfl', keys(%h), 'dyick');
-ok(25, $#keys == 31) ;
-
-$h{'foo'} = '';
-ok(26, $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.
-my $result = 0 ;
-if ($null_keys_allowed) {
- $h{''} = 'bar';
- $result = ( $h{''} eq 'bar' );
-}
-else
- { $result = 1 }
-ok(27, $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(28, $ok );
-
-($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,
- $blksize,$blocks) = stat($Dfile);
-ok(29, $size > 0 );
-
-@h{0..200} = 200..400;
-my @foo = @h{0..200};
-ok(30, join(':',200..400) eq join(':',@foo) );
-
-
-# Now check all the non-tie specific stuff
-
-# Check NOOVERWRITE will make put fail when attempting to overwrite
-# an existing record.
-
-my $status = $X->put( 'x', 'newvalue', R_NOOVERWRITE) ;
-ok(31, $status == 1 );
-
-# check that the value of the key 'x' has not been changed by the
-# previous test
-ok(32, $h{'x'} eq 'X' );
-
-# standard put
-$status = $X->put('key', 'value') ;
-ok(33, $status == 0 );
-
-#check that previous put can be retrieved
-$value = 0 ;
-$status = $X->get('key', $value) ;
-ok(34, $status == 0 );
-ok(35, $value eq 'value' );
-
-# Attempting to delete an existing key should work
-
-$status = $X->del('q') ;
-ok(36, $status == 0 );
-
-# Make sure that the key deleted, cannot be retrieved
-{
- no warnings 'uninitialized' ;
- ok(37, $h{'q'} eq undef );
-}
-
-# Attempting to delete a non-existant key should fail
-
-$status = $X->del('joe') ;
-ok(38, $status == 1 );
-
-# Check the get interface
-
-# First a non-existing key
-$status = $X->get('aaaa', $value) ;
-ok(39, $status == 1 );
-
-# Next an existing key
-$status = $X->get('a', $value) ;
-ok(40, $status == 0 );
-ok(41, $value eq 'A' );
-
-# seq
-# ###
-
-# ditto, but use put to replace the key/value pair.
-
-# use seq to walk backwards through a file - check that this reversed is
-
-# check seq FIRST/LAST
-
-# sync
-# ####
-
-$status = $X->sync ;
-ok(42, $status == 0 );
-
-
-# fd
-# ##
-
-$status = $X->fd ;
-ok(43, $status != 0 );
-
-undef $X ;
-untie %h ;
-
-unlink $Dfile;
-
-# clear
-# #####
-
-ok(44, tie(%h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_HASH ) );
-foreach (1 .. 10)
- { $h{$_} = $_ * 100 }
-
-# check that there are 10 elements in the hash
-$i = 0 ;
-while (($key,$value) = each(%h)) {
- $i++;
-}
-ok(45, $i == 10);
-
-# now clear the hash
-%h = () ;
-
-# check it is empty
-$i = 0 ;
-while (($key,$value) = each(%h)) {
- $i++;
-}
-ok(46, $i == 0);
-
-untie %h ;
-unlink $Dfile ;
-
-
-# Now try an in memory file
-ok(47, $X = tie(%h, 'DB_File',undef, O_RDWR|O_CREAT, 0640, $DB_HASH ) );
-
-# fd with an in memory file should return fail
-$status = $X->fd ;
-ok(48, $status == -1 );
-
-undef $X ;
-untie %h ;
-
-{
- # check ability to override the default hashing
- my %x ;
- my $filename = "xyz" ;
- my $hi = new DB_File::HASHINFO ;
- $::count = 0 ;
- $hi->{hash} = sub { ++$::count ; length $_[0] } ;
- ok(49, tie %x, 'DB_File', $filename, O_RDWR|O_CREAT, 0640, $hi ) ;
- $h{"abc"} = 123 ;
- ok(50, $h{"abc"} == 123) ;
- untie %x ;
- unlink $filename ;
- ok(51, $::count >0) ;
-}
-
-{
- # check that attempting to tie an array to a DB_HASH will fail
-
- my $filename = "xyz" ;
- my @x ;
- eval { tie @x, 'DB_File', $filename, O_RDWR|O_CREAT, 0640, $DB_HASH ; } ;
- ok(52, $@ =~ /^DB_File can only tie an associative array to a DB_HASH database/) ;
- unlink $filename ;
-}
-
-{
- # sub-class test
-
- package Another ;
-
- use warnings ;
- use strict ;
-
- open(FILE, ">SubDB.pm") or die "Cannot open SubDB.pm: $!\n" ;
- print FILE <<'EOM' ;
-
- package SubDB ;
-
- use warnings ;
- use strict ;
- use vars qw( @ISA @EXPORT) ;
-
- require Exporter ;
- use DB_File;
- @ISA=qw(DB_File);
- @EXPORT = @DB_File::EXPORT ;
-
- sub STORE {
- my $self = shift ;
- my $key = shift ;
- my $value = shift ;
- $self->SUPER::STORE($key, $value * 2) ;
- }
-
- sub FETCH {
- my $self = shift ;
- my $key = shift ;
- $self->SUPER::FETCH($key) - 1 ;
- }
-
- sub put {
- my $self = shift ;
- my $key = shift ;
- my $value = shift ;
- $self->SUPER::put($key, $value * 3) ;
- }
-
- sub get {
- my $self = shift ;
- $self->SUPER::get($_[0], $_[1]) ;
- $_[1] -= 2 ;
- }
-
- sub A_new_method
- {
- my $self = shift ;
- my $key = shift ;
- my $value = $self->FETCH($key) ;
- return "[[$value]]" ;
- }
-
- 1 ;
-EOM
-
- close FILE ;
-
- BEGIN { push @INC, '.'; }
- eval 'use SubDB ; ';
- main::ok(53, $@ eq "") ;
- my %h ;
- my $X ;
- eval '
- $X = tie(%h, "SubDB","dbhash.tmp", O_RDWR|O_CREAT, 0640, $DB_HASH );
- ' ;
-
- main::ok(54, $@ eq "") ;
-
- my $ret = eval '$h{"fred"} = 3 ; return $h{"fred"} ' ;
- main::ok(55, $@ eq "") ;
- main::ok(56, $ret == 5) ;
-
- my $value = 0;
- $ret = eval '$X->put("joe", 4) ; $X->get("joe", $value) ; return $value' ;
- main::ok(57, $@ eq "") ;
- main::ok(58, $ret == 10) ;
-
- $ret = eval ' R_NEXT eq main::R_NEXT ' ;
- main::ok(59, $@ eq "" ) ;
- main::ok(60, $ret == 1) ;
-
- $ret = eval '$X->A_new_method("joe") ' ;
- main::ok(61, $@ eq "") ;
- main::ok(62, $ret eq "[[11]]") ;
-
- undef $X;
- untie(%h);
- unlink "SubDB.pm", "dbhash.tmp" ;
-
-}
-
-{
- # DBM Filter tests
- use warnings ;
- use strict ;
- my (%h, $db) ;
- my ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ;
- unlink $Dfile;
-
- sub checkOutput
- {
- my($fk, $sk, $fv, $sv) = @_ ;
- return
- $fetch_key eq $fk && $store_key eq $sk &&
- $fetch_value eq $fv && $store_value eq $sv &&
- $_ eq 'original' ;
- }
-
- ok(63, $db = tie(%h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_HASH ) );
-
- $db->filter_fetch_key (sub { $fetch_key = $_ }) ;
- $db->filter_store_key (sub { $store_key = $_ }) ;
- $db->filter_fetch_value (sub { $fetch_value = $_}) ;
- $db->filter_store_value (sub { $store_value = $_ }) ;
-
- $_ = "original" ;
-
- $h{"fred"} = "joe" ;
- # fk sk fv sv
- ok(64, checkOutput( "", "fred", "", "joe")) ;
-
- ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ;
- ok(65, $h{"fred"} eq "joe");
- # fk sk fv sv
- ok(66, checkOutput( "", "fred", "joe", "")) ;
-
- ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ;
- ok(67, $db->FIRSTKEY() eq "fred") ;
- # fk sk fv sv
- ok(68, checkOutput( "fred", "", "", "")) ;
-
- # replace the filters, but remember the previous set
- my ($old_fk) = $db->filter_fetch_key
- (sub { $_ = uc $_ ; $fetch_key = $_ }) ;
- my ($old_sk) = $db->filter_store_key
- (sub { $_ = lc $_ ; $store_key = $_ }) ;
- my ($old_fv) = $db->filter_fetch_value
- (sub { $_ = "[$_]"; $fetch_value = $_ }) ;
- my ($old_sv) = $db->filter_store_value
- (sub { s/o/x/g; $store_value = $_ }) ;
-
- ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ;
- $h{"Fred"} = "Joe" ;
- # fk sk fv sv
- ok(69, checkOutput( "", "fred", "", "Jxe")) ;
-
- ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ;
- ok(70, $h{"Fred"} eq "[Jxe]");
- # fk sk fv sv
- ok(71, checkOutput( "", "fred", "[Jxe]", "")) ;
-
- ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ;
- ok(72, $db->FIRSTKEY() eq "FRED") ;
- # fk sk fv sv
- ok(73, checkOutput( "FRED", "", "", "")) ;
-
- # put the original filters back
- $db->filter_fetch_key ($old_fk);
- $db->filter_store_key ($old_sk);
- $db->filter_fetch_value ($old_fv);
- $db->filter_store_value ($old_sv);
-
- ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ;
- $h{"fred"} = "joe" ;
- ok(74, checkOutput( "", "fred", "", "joe")) ;
-
- ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ;
- ok(75, $h{"fred"} eq "joe");
- ok(76, checkOutput( "", "fred", "joe", "")) ;
-
- ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ;
- ok(77, $db->FIRSTKEY() eq "fred") ;
- ok(78, checkOutput( "fred", "", "", "")) ;
-
- # delete the filters
- $db->filter_fetch_key (undef);
- $db->filter_store_key (undef);
- $db->filter_fetch_value (undef);
- $db->filter_store_value (undef);
-
- ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ;
- $h{"fred"} = "joe" ;
- ok(79, checkOutput( "", "", "", "")) ;
-
- ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ;
- ok(80, $h{"fred"} eq "joe");
- ok(81, checkOutput( "", "", "", "")) ;
-
- ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ;
- ok(82, $db->FIRSTKEY() eq "fred") ;
- ok(83, checkOutput( "", "", "", "")) ;
-
- undef $db ;
- untie %h;
- unlink $Dfile;
-}
-
-{
- # DBM Filter with a closure
-
- use warnings ;
- use strict ;
- my (%h, $db) ;
-
- unlink $Dfile;
- ok(84, $db = tie(%h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_HASH ) );
-
- my %result = () ;
-
- sub Closure
- {
- my ($name) = @_ ;
- my $count = 0 ;
- my @kept = () ;
-
- return sub { ++$count ;
- push @kept, $_ ;
- $result{$name} = "$name - $count: [@kept]" ;
- }
- }
-
- $db->filter_store_key(Closure("store key")) ;
- $db->filter_store_value(Closure("store value")) ;
- $db->filter_fetch_key(Closure("fetch key")) ;
- $db->filter_fetch_value(Closure("fetch value")) ;
-
- $_ = "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") ;
-
- $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") ;
-
- undef $db ;
- untie %h;
- unlink $Dfile;
-}
-
-{
- # DBM Filter recursion detection
- use warnings ;
- use strict ;
- my (%h, $db) ;
- unlink $Dfile;
-
- ok(107, $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/ );
-
- undef $db ;
- untie %h;
- unlink $Dfile;
-}
-
-
-{
- # Examples from the POD
-
- my $file = "xyzt" ;
- {
- my $redirect = new Redirect $file ;
-
- use warnings FATAL => qw(all);
- use strict ;
- use DB_File ;
- use vars qw( %h $k $v ) ;
-
- unlink "fruit" ;
- tie %h, "DB_File", "fruit", O_RDWR|O_CREAT, 0640, $DB_HASH
- or die "Cannot open file 'fruit': $!\n";
-
- # Add a few key/value pairs to the file
- $h{"apple"} = "red" ;
- $h{"orange"} = "orange" ;
- $h{"banana"} = "yellow" ;
- $h{"tomato"} = "red" ;
-
- # Check for existence of a key
- print "Banana Exists\n\n" if $h{"banana"} ;
-
- # Delete a key/value pair.
- delete $h{"apple"} ;
-
- # print the contents of the file
- while (($k, $v) = each %h)
- { print "$k -> $v\n" }
-
- untie %h ;
-
- unlink "fruit" ;
- }
-
- ok(109, docat_del($file) eq <<'EOM') ;
-Banana Exists
-
-orange -> orange
-tomato -> red
-banana -> yellow
-EOM
-
-}
-
-{
- # Bug ID 20001013.009
- #
- # test that $hash{KEY} = undef doesn't produce the warning
- # Use of uninitialized value in null operation
- use warnings ;
- use strict ;
- use DB_File ;
-
- unlink $Dfile;
- my %h ;
- my $a = "";
- local $SIG{__WARN__} = sub {$a = $_[0]} ;
-
- tie %h, 'DB_File', $Dfile or die "Can't open file: $!\n" ;
- $h{ABC} = undef;
- ok(110, $a eq "") ;
- untie %h ;
- unlink $Dfile;
-}
-
-{
- # test that %hash = () doesn't produce the warning
- # Argument "" isn't numeric in entersub
- use warnings ;
- use strict ;
- use DB_File ;
-
- unlink $Dfile;
- my %h ;
- my $a = "";
- local $SIG{__WARN__} = sub {$a = $_[0]} ;
-
- tie %h, 'DB_File', $Dfile or die "Can't open file: $!\n" ;
- %h = (); ;
- ok(111, $a eq "") ;
- 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
deleted file mode 100644
index c64d83b59..000000000
--- a/db/perl.DB_File/t/db-recno.t
+++ /dev/null
@@ -1,899 +0,0 @@
-#!./perl -w
-
-use warnings;
-use strict ;
-
-BEGIN {
- unless(grep /blib/, @INC) {
- chdir 't' if -d 't';
- @INC = '../lib' if -d '../lib';
- }
-}
-
-use Config;
-
-BEGIN {
- if(-d "lib" && -f "TEST") {
- if ($Config{'extensions'} !~ /\bDB_File\b/ ) {
- print "1..128\n";
- exit 0;
- }
- }
-}
-
-use DB_File;
-use Fcntl;
-use vars qw($dbh $Dfile $bad_ones $FA) ;
-
-# full tied array support started in Perl 5.004_57
-# Double check to see if it is available.
-
-{
- sub try::TIEARRAY { bless [], "try" }
- sub try::FETCHSIZE { $FA = 1 }
- $FA = 0 ;
- my @a ;
- tie @a, 'try' ;
- my $a = @a ;
-}
-
-
-sub ok
-{
- my $no = shift ;
- my $result = shift ;
-
- print "not " unless $result ;
- print "ok $no\n" ;
-
- return $result ;
-}
-
-{
- package Redirect ;
- use Symbol ;
-
- sub new
- {
- my $class = shift ;
- my $filename = shift ;
- my $fh = gensym ;
- open ($fh, ">$filename") || die "Cannot open $filename: $!" ;
- my $real_stdout = select($fh) ;
- return bless [$fh, $real_stdout ] ;
-
- }
- sub DESTROY
- {
- my $self = shift ;
- close $self->[0] ;
- select($self->[1]) ;
- }
-}
-
-sub docat
-{
- my $file = shift;
- local $/ = undef;
- open(CAT,$file) || die "Cannot open $file:$!";
- my $result = <CAT>;
- close(CAT);
- return $result;
-}
-
-sub docat_del
-{
- my $file = shift;
- local $/ = undef;
- open(CAT,$file) || die "Cannot open $file: $!";
- my $result = <CAT>;
- close(CAT);
- unlink $file ;
- return $result;
-}
-
-sub bad_one
-{
- print STDERR <<EOM unless $bad_ones++ ;
-#
-# Some older versions of Berkeley DB version 1 will fail tests 51,
-# 53 and 55.
-#
-# You can safely ignore the errors if you're never going to use the
-# broken functionality (recno databases with a modified bval).
-# Otherwise you'll have to upgrade your DB library.
-#
-# If you want to use Berkeley DB version 1, then 1.85 and 1.86 are the
-# last versions that were released. Berkeley DB version 2 is continually
-# being updated -- Check out http://www.sleepycat.com/ for more details.
-#
-EOM
-}
-
-print "1..128\n";
-
-my $Dfile = "recno.tmp";
-unlink $Dfile ;
-
-umask(0);
-
-# Check the interface to RECNOINFO
-
-my $dbh = new DB_File::RECNOINFO ;
-ok(1, ! defined $dbh->{bval}) ;
-ok(2, ! defined $dbh->{cachesize}) ;
-ok(3, ! defined $dbh->{psize}) ;
-ok(4, ! defined $dbh->{flags}) ;
-ok(5, ! defined $dbh->{lorder}) ;
-ok(6, ! defined $dbh->{reclen}) ;
-ok(7, ! defined $dbh->{bfname}) ;
-
-$dbh->{bval} = 3000 ;
-ok(8, $dbh->{bval} == 3000 );
-
-$dbh->{cachesize} = 9000 ;
-ok(9, $dbh->{cachesize} == 9000 );
-
-$dbh->{psize} = 400 ;
-ok(10, $dbh->{psize} == 400 );
-
-$dbh->{flags} = 65 ;
-ok(11, $dbh->{flags} == 65 );
-
-$dbh->{lorder} = 123 ;
-ok(12, $dbh->{lorder} == 123 );
-
-$dbh->{reclen} = 1234 ;
-ok(13, $dbh->{reclen} == 1234 );
-
-$dbh->{bfname} = 1234 ;
-ok(14, $dbh->{bfname} == 1234 );
-
-
-# Check that an invalid entry is caught both for store & fetch
-eval '$dbh->{fred} = 1234' ;
-ok(15, $@ =~ /^DB_File::RECNOINFO::STORE - Unknown element 'fred' at/ );
-eval 'my $q = $dbh->{fred}' ;
-ok(16, $@ =~ /^DB_File::RECNOINFO::FETCH - Unknown element 'fred' at/ );
-
-# Now check the interface to RECNOINFO
-
-my $X ;
-my @h ;
-ok(17, $X = tie @h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_RECNO ) ;
-
-ok(18, ((stat($Dfile))[2] & 0777) == ($^O eq 'os2' ? 0666 : 0640)
- || $^O eq 'MSWin32' || $^O eq 'amigaos') ;
-
-#my $l = @h ;
-my $l = $X->length ;
-ok(19, ($FA ? @h == 0 : !$l) );
-
-my @data = qw( a b c d ever f g h i j k longername m n o p) ;
-
-$h[0] = shift @data ;
-ok(20, $h[0] eq 'a' );
-
-my $ i;
-foreach (@data)
- { $h[++$i] = $_ }
-
-unshift (@data, 'a') ;
-
-ok(21, defined $h[1] );
-ok(22, ! defined $h[16] );
-ok(23, $FA ? @h == @data : $X->length == @data );
-
-
-# Overwrite an entry & check fetch it
-$h[3] = 'replaced' ;
-$data[3] = 'replaced' ;
-ok(24, $h[3] eq 'replaced' );
-
-#PUSH
-my @push_data = qw(added to the end) ;
-($FA ? push(@h, @push_data) : $X->push(@push_data)) ;
-push (@data, @push_data) ;
-ok(25, $h[++$i] eq 'added' );
-ok(26, $h[++$i] eq 'to' );
-ok(27, $h[++$i] eq 'the' );
-ok(28, $h[++$i] eq 'end' );
-
-# POP
-my $popped = pop (@data) ;
-my $value = ($FA ? pop @h : $X->pop) ;
-ok(29, $value eq $popped) ;
-
-# SHIFT
-$value = ($FA ? shift @h : $X->shift) ;
-my $shifted = shift @data ;
-ok(30, $value eq $shifted );
-
-# UNSHIFT
-
-# empty list
-($FA ? unshift @h : $X->unshift) ;
-ok(31, ($FA ? @h == @data : $X->length == @data ));
-
-my @new_data = qw(add this to the start of the array) ;
-$FA ? unshift (@h, @new_data) : $X->unshift (@new_data) ;
-unshift (@data, @new_data) ;
-ok(32, $FA ? @h == @data : $X->length == @data );
-ok(33, $h[0] eq "add") ;
-ok(34, $h[1] eq "this") ;
-ok(35, $h[2] eq "to") ;
-ok(36, $h[3] eq "the") ;
-ok(37, $h[4] eq "start") ;
-ok(38, $h[5] eq "of") ;
-ok(39, $h[6] eq "the") ;
-ok(40, $h[7] eq "array") ;
-ok(41, $h[8] eq $data[8]) ;
-
-# SPLICE
-
-# Now both arrays should be identical
-
-my $ok = 1 ;
-my $j = 0 ;
-foreach (@data)
-{
- $ok = 0, last if $_ ne $h[$j ++] ;
-}
-ok(42, $ok );
-
-# Neagtive subscripts
-
-# get the last element of the array
-ok(43, $h[-1] eq $data[-1] );
-ok(44, $h[-1] eq $h[ ($FA ? @h : $X->length) -1] );
-
-# get the first element using a negative subscript
-eval '$h[ - ( $FA ? @h : $X->length)] = "abcd"' ;
-ok(45, $@ eq "" );
-ok(46, $h[0] eq "abcd" );
-
-# now try to read before the start of the array
-eval '$h[ - (1 + ($FA ? @h : $X->length))] = 1234' ;
-ok(47, $@ =~ '^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);
-
-unlink $Dfile;
-
-
-{
- # Check bval defaults to \n
-
- my @h = () ;
- my $dbh = new DB_File::RECNOINFO ;
- ok(48, tie @h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $dbh ) ;
- $h[0] = "abc" ;
- $h[1] = "def" ;
- $h[3] = "ghi" ;
- untie @h ;
- my $x = docat($Dfile) ;
- unlink $Dfile;
- ok(49, $x eq "abc\ndef\n\nghi\n") ;
-}
-
-{
- # Change bval
-
- my @h = () ;
- my $dbh = new DB_File::RECNOINFO ;
- $dbh->{bval} = "-" ;
- ok(50, tie @h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $dbh ) ;
- $h[0] = "abc" ;
- $h[1] = "def" ;
- $h[3] = "ghi" ;
- untie @h ;
- my $x = docat($Dfile) ;
- unlink $Dfile;
- my $ok = ($x eq "abc-def--ghi-") ;
- bad_one() unless $ok ;
- ok(51, $ok) ;
-}
-
-{
- # Check R_FIXEDLEN with default bval (space)
-
- my @h = () ;
- my $dbh = new DB_File::RECNOINFO ;
- $dbh->{flags} = R_FIXEDLEN ;
- $dbh->{reclen} = 5 ;
- ok(52, tie @h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $dbh ) ;
- $h[0] = "abc" ;
- $h[1] = "def" ;
- $h[3] = "ghi" ;
- untie @h ;
- my $x = docat($Dfile) ;
- unlink $Dfile;
- my $ok = ($x eq "abc def ghi ") ;
- bad_one() unless $ok ;
- ok(53, $ok) ;
-}
-
-{
- # Check R_FIXEDLEN with user-defined bval
-
- my @h = () ;
- my $dbh = new DB_File::RECNOINFO ;
- $dbh->{flags} = R_FIXEDLEN ;
- $dbh->{bval} = "-" ;
- $dbh->{reclen} = 5 ;
- ok(54, tie @h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $dbh ) ;
- $h[0] = "abc" ;
- $h[1] = "def" ;
- $h[3] = "ghi" ;
- untie @h ;
- my $x = docat($Dfile) ;
- unlink $Dfile;
- my $ok = ($x eq "abc--def-------ghi--") ;
- bad_one() unless $ok ;
- ok(55, $ok) ;
-}
-
-{
- # check that attempting to tie an associative array to a DB_RECNO will fail
-
- my $filename = "xyz" ;
- my %x ;
- eval { tie %x, 'DB_File', $filename, O_RDWR|O_CREAT, 0640, $DB_RECNO ; } ;
- ok(56, $@ =~ /^DB_File can only tie an array to a DB_RECNO database/) ;
- unlink $filename ;
-}
-
-{
- # sub-class test
-
- package Another ;
-
- use warnings ;
- use strict ;
-
- open(FILE, ">SubDB.pm") or die "Cannot open SubDB.pm: $!\n" ;
- print FILE <<'EOM' ;
-
- package SubDB ;
-
- use warnings ;
- use strict ;
- use vars qw( @ISA @EXPORT) ;
-
- require Exporter ;
- use DB_File;
- @ISA=qw(DB_File);
- @EXPORT = @DB_File::EXPORT ;
-
- sub STORE {
- my $self = shift ;
- my $key = shift ;
- my $value = shift ;
- $self->SUPER::STORE($key, $value * 2) ;
- }
-
- sub FETCH {
- my $self = shift ;
- my $key = shift ;
- $self->SUPER::FETCH($key) - 1 ;
- }
-
- sub put {
- my $self = shift ;
- my $key = shift ;
- my $value = shift ;
- $self->SUPER::put($key, $value * 3) ;
- }
-
- sub get {
- my $self = shift ;
- $self->SUPER::get($_[0], $_[1]) ;
- $_[1] -= 2 ;
- }
-
- sub A_new_method
- {
- my $self = shift ;
- my $key = shift ;
- my $value = $self->FETCH($key) ;
- return "[[$value]]" ;
- }
-
- 1 ;
-EOM
-
- close FILE ;
-
- BEGIN { push @INC, '.'; }
- eval 'use SubDB ; ';
- main::ok(57, $@ eq "") ;
- my @h ;
- my $X ;
- eval '
- $X = tie(@h, "SubDB","recno.tmp", O_RDWR|O_CREAT, 0640, $DB_RECNO );
- ' ;
-
- main::ok(58, $@ eq "") ;
-
- my $ret = eval '$h[3] = 3 ; return $h[3] ' ;
- main::ok(59, $@ eq "") ;
- main::ok(60, $ret == 5) ;
-
- my $value = 0;
- $ret = eval '$X->put(1, 4) ; $X->get(1, $value) ; return $value' ;
- main::ok(61, $@ eq "") ;
- main::ok(62, $ret == 10) ;
-
- $ret = eval ' R_NEXT eq main::R_NEXT ' ;
- main::ok(63, $@ eq "" ) ;
- main::ok(64, $ret == 1) ;
-
- $ret = eval '$X->A_new_method(1) ' ;
- main::ok(65, $@ eq "") ;
- main::ok(66, $ret eq "[[11]]") ;
-
- undef $X;
- untie(@h);
- unlink "SubDB.pm", "recno.tmp" ;
-
-}
-
-{
-
- # test $#
- my $self ;
- unlink $Dfile;
- ok(67, $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(68, $FA ? $#h == 3 : $self->length() == 4) ;
- undef $self ;
- untie @h ;
- my $x = docat($Dfile) ;
- ok(69, $x eq "abc\ndef\nghi\njkl\n") ;
-
- # $# sets array to same length
- ok(70, $self = tie @h, 'DB_File', $Dfile, O_RDWR, 0640, $DB_RECNO ) ;
- if ($FA)
- { $#h = 3 }
- else
- { $self->STORESIZE(4) }
- ok(71, $FA ? $#h == 3 : $self->length() == 4) ;
- undef $self ;
- untie @h ;
- $x = docat($Dfile) ;
- ok(72, $x eq "abc\ndef\nghi\njkl\n") ;
-
- # $# sets array to bigger
- ok(73, $self = tie @h, 'DB_File', $Dfile, O_RDWR, 0640, $DB_RECNO ) ;
- if ($FA)
- { $#h = 6 }
- else
- { $self->STORESIZE(7) }
- ok(74, $FA ? $#h == 6 : $self->length() == 7) ;
- undef $self ;
- untie @h ;
- $x = docat($Dfile) ;
- ok(75, $x eq "abc\ndef\nghi\njkl\n\n\n\n") ;
-
- # $# sets array smaller
- ok(76, $self = tie @h, 'DB_File', $Dfile, O_RDWR, 0640, $DB_RECNO ) ;
- if ($FA)
- { $#h = 2 }
- else
- { $self->STORESIZE(3) }
- ok(77, $FA ? $#h == 2 : $self->length() == 3) ;
- undef $self ;
- untie @h ;
- $x = docat($Dfile) ;
- ok(78, $x eq "abc\ndef\nghi\n") ;
-
- unlink $Dfile;
-
-
-}
-
-{
- # DBM Filter tests
- use warnings ;
- use strict ;
- my (@h, $db) ;
- my ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ;
- unlink $Dfile;
-
- sub checkOutput
- {
- my($fk, $sk, $fv, $sv) = @_ ;
- return
- $fetch_key eq $fk && $store_key eq $sk &&
- $fetch_value eq $fv && $store_value eq $sv &&
- $_ eq 'original' ;
- }
-
- ok(79, $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 = $_ }) ;
- $db->filter_fetch_value (sub { $fetch_value = $_}) ;
- $db->filter_store_value (sub { $store_value = $_ }) ;
-
- $_ = "original" ;
-
- $h[0] = "joe" ;
- # fk sk fv sv
- ok(80, checkOutput( "", 0, "", "joe")) ;
-
- ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ;
- ok(81, $h[0] eq "joe");
- # fk sk fv sv
- ok(82, checkOutput( "", 0, "joe", "")) ;
-
- ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ;
- ok(83, $db->FIRSTKEY() == 0) ;
- # fk sk fv sv
- ok(84, checkOutput( 0, "", "", "")) ;
-
- # replace the filters, but remember the previous set
- my ($old_fk) = $db->filter_fetch_key
- (sub { ++ $_ ; $fetch_key = $_ }) ;
- my ($old_sk) = $db->filter_store_key
- (sub { $_ *= 2 ; $store_key = $_ }) ;
- my ($old_fv) = $db->filter_fetch_value
- (sub { $_ = "[$_]"; $fetch_value = $_ }) ;
- my ($old_sv) = $db->filter_store_value
- (sub { s/o/x/g; $store_value = $_ }) ;
-
- ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ;
- $h[1] = "Joe" ;
- # fk sk fv sv
- ok(85, checkOutput( "", 2, "", "Jxe")) ;
-
- ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ;
- ok(86, $h[1] eq "[Jxe]");
- # fk sk fv sv
- ok(87, checkOutput( "", 2, "[Jxe]", "")) ;
-
- ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ;
- ok(88, $db->FIRSTKEY() == 1) ;
- # fk sk fv sv
- ok(89, checkOutput( 1, "", "", "")) ;
-
- # put the original filters back
- $db->filter_fetch_key ($old_fk);
- $db->filter_store_key ($old_sk);
- $db->filter_fetch_value ($old_fv);
- $db->filter_store_value ($old_sv);
-
- ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ;
- $h[0] = "joe" ;
- ok(90, checkOutput( "", 0, "", "joe")) ;
-
- ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ;
- ok(91, $h[0] eq "joe");
- ok(92, checkOutput( "", 0, "joe", "")) ;
-
- ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ;
- ok(93, $db->FIRSTKEY() == 0) ;
- ok(94, checkOutput( 0, "", "", "")) ;
-
- # delete the filters
- $db->filter_fetch_key (undef);
- $db->filter_store_key (undef);
- $db->filter_fetch_value (undef);
- $db->filter_store_value (undef);
-
- ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ;
- $h[0] = "joe" ;
- ok(95, checkOutput( "", "", "", "")) ;
-
- ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ;
- ok(96, $h[0] eq "joe");
- ok(97, checkOutput( "", "", "", "")) ;
-
- ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ;
- ok(98, $db->FIRSTKEY() == 0) ;
- ok(99, checkOutput( "", "", "", "")) ;
-
- undef $db ;
- untie @h;
- unlink $Dfile;
-}
-
-{
- # DBM Filter with a closure
-
- use warnings ;
- use strict ;
- my (@h, $db) ;
-
- unlink $Dfile;
- ok(100, $db = tie(@h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_RECNO ) );
-
- my %result = () ;
-
- sub Closure
- {
- my ($name) = @_ ;
- my $count = 0 ;
- my @kept = () ;
-
- return sub { ++$count ;
- push @kept, $_ ;
- $result{$name} = "$name - $count: [@kept]" ;
- }
- }
-
- $db->filter_store_key(Closure("store key")) ;
- $db->filter_store_value(Closure("store value")) ;
- $db->filter_fetch_key(Closure("fetch key")) ;
- $db->filter_fetch_value(Closure("fetch value")) ;
-
- $_ = "original" ;
-
- $h[0] = "joe" ;
- ok(101, $result{"store key"} eq "store key - 1: [0]");
- ok(102, $result{"store value"} eq "store value - 1: [joe]");
- ok(103, ! defined $result{"fetch key"} );
- ok(104, ! defined $result{"fetch value"} );
- ok(105, $_ eq "original") ;
-
- ok(106, $db->FIRSTKEY() == 0 ) ;
- ok(107, $result{"store key"} eq "store key - 1: [0]");
- ok(108, $result{"store value"} eq "store value - 1: [joe]");
- ok(109, $result{"fetch key"} eq "fetch key - 1: [0]");
- ok(110, ! defined $result{"fetch value"} );
- ok(111, $_ eq "original") ;
-
- $h[7] = "john" ;
- ok(112, $result{"store key"} eq "store key - 2: [0 7]");
- ok(113, $result{"store value"} eq "store value - 2: [joe john]");
- ok(114, $result{"fetch key"} eq "fetch key - 1: [0]");
- ok(115, ! defined $result{"fetch value"} );
- ok(116, $_ eq "original") ;
-
- ok(117, $h[0] eq "joe");
- ok(118, $result{"store key"} eq "store key - 3: [0 7 0]");
- ok(119, $result{"store value"} eq "store value - 2: [joe john]");
- ok(120, $result{"fetch key"} eq "fetch key - 1: [0]");
- ok(121, $result{"fetch value"} eq "fetch value - 1: [joe]");
- ok(122, $_ eq "original") ;
-
- undef $db ;
- untie @h;
- unlink $Dfile;
-}
-
-{
- # DBM Filter recursion detection
- use warnings ;
- use strict ;
- my (@h, $db) ;
- unlink $Dfile;
-
- ok(123, $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(124, $@ =~ /^recursion detected in filter_store_key at/ );
-
- undef $db ;
- untie @h;
- unlink $Dfile;
-}
-
-
-{
- # Examples from the POD
-
- my $file = "xyzt" ;
- {
- my $redirect = new Redirect $file ;
-
- use warnings FATAL => qw(all);
- use strict ;
- use DB_File ;
-
- my $filename = "text" ;
- unlink $filename ;
-
- my @h ;
- my $x = tie @h, "DB_File", $filename, O_RDWR|O_CREAT, 0640, $DB_RECNO
- or die "Cannot open file 'text': $!\n" ;
-
- # Add a few key/value pairs to the file
- $h[0] = "orange" ;
- $h[1] = "blue" ;
- $h[2] = "yellow" ;
-
- $FA ? push @h, "green", "black"
- : $x->push("green", "black") ;
-
- my $elements = $FA ? scalar @h : $x->length ;
- print "The array contains $elements entries\n" ;
-
- my $last = $FA ? pop @h : $x->pop ;
- print "popped $last\n" ;
-
- $FA ? unshift @h, "white"
- : $x->unshift("white") ;
- my $first = $FA ? shift @h : $x->shift ;
- print "shifted $first\n" ;
-
- # Check for existence of a key
- print "Element 1 Exists with value $h[1]\n" if $h[1] ;
-
- # use a negative index
- print "The last element is $h[-1]\n" ;
- print "The 2nd last element is $h[-2]\n" ;
-
- undef $x ;
- untie @h ;
-
- unlink $filename ;
- }
-
- ok(125, docat_del($file) eq <<'EOM') ;
-The array contains 5 entries
-popped black
-shifted white
-Element 1 Exists with value blue
-The last element is green
-The 2nd last element is yellow
-EOM
-
- my $save_output = "xyzt" ;
- {
- my $redirect = new Redirect $save_output ;
-
- use warnings FATAL => qw(all);
- use strict ;
- use vars qw(@h $H $file $i) ;
- use DB_File ;
- use Fcntl ;
-
- $file = "text" ;
-
- unlink $file ;
-
- $H = tie @h, "DB_File", $file, O_RDWR|O_CREAT, 0640, $DB_RECNO
- or die "Cannot open file $file: $!\n" ;
-
- # first create a text file to play with
- $h[0] = "zero" ;
- $h[1] = "one" ;
- $h[2] = "two" ;
- $h[3] = "three" ;
- $h[4] = "four" ;
-
-
- # Print the records in order.
- #
- # The length method is needed here because evaluating a tied
- # array in a scalar context does not return the number of
- # elements in the array.
-
- print "\nORIGINAL\n" ;
- foreach $i (0 .. $H->length - 1) {
- print "$i: $h[$i]\n" ;
- }
-
- # use the push & pop methods
- $a = $H->pop ;
- $H->push("last") ;
- print "\nThe last record was [$a]\n" ;
-
- # and the shift & unshift methods
- $a = $H->shift ;
- $H->unshift("first") ;
- print "The first record was [$a]\n" ;
-
- # Use the API to add a new record after record 2.
- $i = 2 ;
- $H->put($i, "Newbie", R_IAFTER) ;
-
- # and a new record before record 1.
- $i = 1 ;
- $H->put($i, "New One", R_IBEFORE) ;
-
- # delete record 3
- $H->del(3) ;
-
- # now print the records in reverse order
- print "\nREVERSE\n" ;
- for ($i = $H->length - 1 ; $i >= 0 ; -- $i)
- { print "$i: $h[$i]\n" }
-
- # same again, but use the API functions instead
- print "\nREVERSE again\n" ;
- my ($s, $k, $v) = (0, 0, 0) ;
- for ($s = $H->seq($k, $v, R_LAST) ;
- $s == 0 ;
- $s = $H->seq($k, $v, R_PREV))
- { print "$k: $v\n" }
-
- undef $H ;
- untie @h ;
-
- unlink $file ;
- }
-
- ok(126, docat_del($save_output) eq <<'EOM') ;
-
-ORIGINAL
-0: zero
-1: one
-2: two
-3: three
-4: four
-
-The last record was [four]
-The first record was [zero]
-
-REVERSE
-5: last
-4: three
-3: Newbie
-2: one
-1: New One
-0: first
-
-REVERSE again
-5: last
-4: three
-3: Newbie
-2: one
-1: New One
-0: first
-EOM
-
-}
-
-{
- # Bug ID 20001013.009
- #
- # test that $hash{KEY} = undef doesn't produce the warning
- # Use of uninitialized value in null operation
- use warnings ;
- use strict ;
- use DB_File ;
-
- unlink $Dfile;
- my @h ;
- my $a = "";
- local $SIG{__WARN__} = sub {$a = $_[0]} ;
-
- tie @h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0664, $DB_RECNO
- or die "Can't open file: $!\n" ;
- $h[0] = undef;
- ok(127, $a eq "") ;
- untie @h ;
- unlink $Dfile;
-}
-
-{
- # test that %hash = () doesn't produce the warning
- # Argument "" isn't numeric in entersub
- use warnings ;
- use strict ;
- use DB_File ;
- my $a = "";
- local $SIG{__WARN__} = sub {$a = $_[0]} ;
-
- unlink $Dfile;
- my @h ;
-
- tie @h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0664, $DB_RECNO
- or die "Can't open file: $!\n" ;
- @h = (); ;
- ok(128, $a eq "") ;
- untie @h ;
- unlink $Dfile;
-}
-
-exit ;
diff --git a/db/perl.DB_File/typemap b/db/perl.DB_File/typemap
deleted file mode 100644
index 55439ee76..000000000
--- a/db/perl.DB_File/typemap
+++ /dev/null
@@ -1,44 +0,0 @@
-# typemap for Perl 5 interface to Berkeley
-#
-# written by Paul Marquess <Paul.Marquess@btinternet.com>
-# last modified 10th December 2000
-# version 1.74
-#
-#################################### DB SECTION
-#
-#
-
-u_int T_U_INT
-DB_File T_PTROBJ
-DBT T_dbtdatum
-DBTKEY T_dbtkeydatum
-
-INPUT
-T_dbtkeydatum
- 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);
- }
-T_dbtdatum
- ckFilter($arg, filter_store_value, \"filter_store_value\");
- DBT_clear($var) ;
- if (SvOK($arg)) {
- $var.data = SvPV($arg, PL_na);
- $var.size = (int)PL_na;
- }
-
-OUTPUT
-
-T_dbtkeydatum
- OutputKey($arg, $var)
-T_dbtdatum
- OutputValue($arg, $var)
-T_PTROBJ
- sv_setref_pv($arg, dbtype, (void*)$var);
diff --git a/db/perl.DB_File/version.c b/db/perl.DB_File/version.c
deleted file mode 100644
index 82b3e8b27..000000000
--- a/db/perl.DB_File/version.c
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
-
- version.c -- Perl 5 interface to Berkeley DB
-
- written by Paul Marquess <Paul.Marquess@btinternet.com>
- last modified 16th January 2000
- version 1.73
-
- All comments/suggestions/problems are welcome
-
- Copyright (c) 1995-2001 Paul Marquess. All rights reserved.
- This program is free software; you can redistribute it and/or
- modify it under the same terms as Perl itself.
-
- Changes:
- 1.71 - Support for Berkeley DB version 3.
- Support for Berkeley DB 2/3's backward compatability mode.
- 1.72 - No change.
- 1.73 - Added support for threading
- 1.74 - Added Perl core patch 7801.
-
-
-*/
-
-#include "EXTERN.h"
-#include "perl.h"
-#include "XSUB.h"
-
-#include <db.h>
-
-void
-#ifdef CAN_PROTOTYPE
-__getBerkeleyDBInfo(void)
-#else
-__getBerkeleyDBInfo()
-#endif
-{
-#ifdef dTHX
- dTHX;
-#endif
- SV * version_sv = perl_get_sv("DB_File::db_version", GV_ADD|GV_ADDMULTI) ;
- SV * ver_sv = perl_get_sv("DB_File::db_ver", GV_ADD|GV_ADDMULTI) ;
- SV * compat_sv = perl_get_sv("DB_File::db_185_compat", GV_ADD|GV_ADDMULTI) ;
-
-#ifdef DB_VERSION_MAJOR
- int Major, Minor, Patch ;
-
- (void)db_version(&Major, &Minor, &Patch) ;
-
- /* Check that the versions of db.h and libdb.a are the same */
- if (Major != DB_VERSION_MAJOR || Minor != DB_VERSION_MINOR
- || Patch != DB_VERSION_PATCH)
- croak("\nDB_File needs compatible versions of libdb & db.h\n\tyou have db.h version %d.%d.%d and libdb version %d.%d.%d\n",
- DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
- Major, Minor, Patch) ;
-
- /* check that libdb is recent enough -- we need 2.3.4 or greater */
- if (Major == 2 && (Minor < 3 || (Minor == 3 && Patch < 4)))
- croak("DB_File needs Berkeley DB 2.3.4 or greater, you have %d.%d.%d\n",
- Major, Minor, Patch) ;
-
- {
- char buffer[40] ;
- sprintf(buffer, "%d.%d", Major, Minor) ;
- sv_setpv(version_sv, buffer) ;
- sprintf(buffer, "%d.%03d%03d", Major, Minor, Patch) ;
- sv_setpv(ver_sv, buffer) ;
- }
-
-#else /* ! DB_VERSION_MAJOR */
- sv_setiv(version_sv, 1) ;
- sv_setiv(ver_sv, 1) ;
-#endif /* ! DB_VERSION_MAJOR */
-
-#ifdef COMPAT185
- sv_setiv(compat_sv, 1) ;
-#else /* ! COMPAT185 */
- sv_setiv(compat_sv, 0) ;
-#endif /* ! COMPAT185 */
-
-}
diff --git a/db/perl/BerkeleyDB/BerkeleyDB.pm b/db/perl/BerkeleyDB/BerkeleyDB.pm
index 441c48ff2..ab14e18c3 100644
--- a/db/perl/BerkeleyDB/BerkeleyDB.pm
+++ b/db/perl/BerkeleyDB/BerkeleyDB.pm
@@ -2,7 +2,7 @@
package BerkeleyDB;
-# Copyright (c) 1997-2006 Paul Marquess. All rights reserved.
+# Copyright (c) 1997-2007 Paul Marquess. All rights reserved.
# This program is free software; you can redistribute it and/or
# modify it under the same terms as Perl itself.
#
@@ -17,7 +17,7 @@ use Carp;
use vars qw($VERSION @ISA @EXPORT $AUTOLOAD
$use_XSLoader);
-$VERSION = '0.30';
+$VERSION = '0.32';
require Exporter;
#require DynaLoader;
@@ -64,6 +64,7 @@ BEGIN {
DB_CHECKPOINT
DB_CHKSUM
DB_CHKSUM_SHA1
+ DB_CKP_INTERNAL
DB_CLIENT
DB_CL_WRITER
DB_COMMIT
@@ -82,6 +83,7 @@ BEGIN {
DB_DIRECT_LOG
DB_DIRTY_READ
DB_DONOTINDEX
+ DB_DSYNC_DB
DB_DSYNC_LOG
DB_DUP
DB_DUPCURSOR
@@ -99,6 +101,7 @@ BEGIN {
DB_ENV_DBLOCAL
DB_ENV_DIRECT_DB
DB_ENV_DIRECT_LOG
+ DB_ENV_DSYNC_DB
DB_ENV_DSYNC_LOG
DB_ENV_FATAL
DB_ENV_LOCKDOWN
@@ -106,13 +109,17 @@ BEGIN {
DB_ENV_LOGGING
DB_ENV_LOG_AUTOREMOVE
DB_ENV_LOG_INMEMORY
+ DB_ENV_MULTIVERSION
DB_ENV_NOLOCKING
DB_ENV_NOMMAP
DB_ENV_NOPANIC
+ DB_ENV_NO_OUTPUT_SET
DB_ENV_OPEN_CALLED
DB_ENV_OVERWRITE
DB_ENV_PANIC_OK
DB_ENV_PRIVATE
+ DB_ENV_RECOVER_FATAL
+ DB_ENV_REF_COUNTED
DB_ENV_REGION_INIT
DB_ENV_REP_CLIENT
DB_ENV_REP_LOGSONLY
@@ -126,9 +133,21 @@ BEGIN {
DB_ENV_TXN
DB_ENV_TXN_NOSYNC
DB_ENV_TXN_NOT_DURABLE
+ DB_ENV_TXN_NOWAIT
+ DB_ENV_TXN_SNAPSHOT
DB_ENV_TXN_WRITE_NOSYNC
DB_ENV_USER_ALLOC
DB_ENV_YIELDCPU
+ DB_EVENT_NOT_HANDLED
+ DB_EVENT_NO_SUCH_EVENT
+ DB_EVENT_PANIC
+ DB_EVENT_REP_CLIENT
+ DB_EVENT_REP_ELECTED
+ DB_EVENT_REP_MASTER
+ DB_EVENT_REP_NEWMASTER
+ DB_EVENT_REP_PERM_FAILED
+ DB_EVENT_REP_STARTUPDONE
+ DB_EVENT_WRITE_FAILED
DB_EXCL
DB_EXTENT
DB_FAST_STAT
@@ -151,6 +170,7 @@ BEGIN {
DB_HASHMAGIC
DB_HASHOLDVER
DB_HASHVERSION
+ DB_IGNORE_LEASE
DB_IMMUTABLE_KEY
DB_INCOMPLETE
DB_INIT_CDB
@@ -232,6 +252,7 @@ BEGIN {
DB_MPOOL_CREATE
DB_MPOOL_DIRTY
DB_MPOOL_DISCARD
+ DB_MPOOL_EDIT
DB_MPOOL_EXTENT
DB_MPOOL_FREE
DB_MPOOL_LAST
@@ -242,10 +263,13 @@ BEGIN {
DB_MPOOL_UNLINK
DB_MULTIPLE
DB_MULTIPLE_KEY
+ DB_MULTIVERSION
DB_MUTEXDEBUG
DB_MUTEXLOCKS
DB_MUTEX_ALLOCATED
+ DB_MUTEX_LOCKED
DB_MUTEX_LOGICAL_LOCK
+ DB_MUTEX_PROCESS_ONLY
DB_MUTEX_SELF_BLOCK
DB_MUTEX_THREAD
DB_NEEDSPLIT
@@ -285,11 +309,13 @@ BEGIN {
DB_POSITION
DB_POSITIONI
DB_PREV
+ DB_PREV_DUP
DB_PREV_NODUP
DB_PRINTABLE
DB_PRIORITY_DEFAULT
DB_PRIORITY_HIGH
DB_PRIORITY_LOW
+ DB_PRIORITY_UNCHANGED
DB_PRIORITY_VERY_HIGH
DB_PRIORITY_VERY_LOW
DB_PRIVATE
@@ -318,16 +344,42 @@ BEGIN {
DB_REGISTERED
DB_RENAMEMAGIC
DB_RENUMBER
+ DB_REPFLAGS_MASK
+ DB_REPMGR_ACKS_ALL
+ DB_REPMGR_ACKS_ALL_PEERS
+ DB_REPMGR_ACKS_NONE
+ DB_REPMGR_ACKS_ONE
+ DB_REPMGR_ACKS_ONE_PEER
+ DB_REPMGR_ACKS_QUORUM
+ DB_REPMGR_CONNECTED
+ DB_REPMGR_DISCONNECTED
+ DB_REPMGR_PEER
+ DB_REP_ACK_TIMEOUT
DB_REP_ANYWHERE
DB_REP_BULKOVF
+ DB_REP_CHECKPOINT_DELAY
DB_REP_CLIENT
+ DB_REP_CONF_BULK
+ DB_REP_CONF_DELAYCLIENT
+ DB_REP_CONF_NOAUTOINIT
+ DB_REP_CONF_NOWAIT
+ DB_REP_CONNECTION_RETRY
DB_REP_CREATE
+ DB_REP_DEFAULT_PRIORITY
DB_REP_DUPMASTER
DB_REP_EGENCHG
+ DB_REP_ELECTION
+ DB_REP_ELECTION_RETRY
+ DB_REP_ELECTION_TIMEOUT
+ DB_REP_FULL_ELECTION
+ DB_REP_FULL_ELECTION_TIMEOUT
DB_REP_HANDLE_DEAD
DB_REP_HOLDELECTION
DB_REP_IGNORE
DB_REP_ISPERM
+ DB_REP_JOIN_FAILURE
+ DB_REP_LEASE_EXPIRED
+ DB_REP_LEASE_TIMEOUT
DB_REP_LOCKOUT
DB_REP_LOGREADY
DB_REP_LOGSONLY
@@ -365,6 +417,7 @@ BEGIN {
DB_SET_TXN_NOW
DB_SET_TXN_TIMEOUT
DB_SNAPSHOT
+ DB_SPARE_FLAG
DB_STAT_ALL
DB_STAT_CLEAR
DB_STAT_LOCK_CONF
@@ -372,6 +425,7 @@ BEGIN {
DB_STAT_LOCK_OBJECTS
DB_STAT_LOCK_PARAMS
DB_STAT_MEMP_HASH
+ DB_STAT_NOERROR
DB_STAT_SUBSYSTEM
DB_SURPRISE_KID
DB_SWAPBYTES
@@ -392,8 +446,10 @@ BEGIN {
DB_TEST_PREDESTROY
DB_TEST_PREOPEN
DB_TEST_PRERENAME
+ DB_TEST_RECYCLE
DB_TEST_SUBDB_LOCKS
DB_THREAD
+ DB_THREADID_STRLEN
DB_TIMEOUT
DB_TIME_NOTGRANTED
DB_TRUNCATE
@@ -421,17 +477,23 @@ BEGIN {
DB_TXN_POPENFILES
DB_TXN_PRINT
DB_TXN_REDO
+ DB_TXN_SNAPSHOT
DB_TXN_SYNC
DB_TXN_UNDO
+ DB_TXN_WAIT
DB_TXN_WRITE_NOSYNC
DB_UNKNOWN
DB_UNREF
DB_UPDATE_SECONDARY
DB_UPGRADE
+ DB_USERCOPY_GETDATA
+ DB_USERCOPY_SETDATA
DB_USE_ENVIRON
DB_USE_ENVIRON_ROOT
DB_VERB_CHKPOINT
DB_VERB_DEADLOCK
+ DB_VERB_FILEOPS
+ DB_VERB_FILEOPS_ALL
DB_VERB_RECOVERY
DB_VERB_REGISTER
DB_VERB_REPLICATION
@@ -454,10 +516,6 @@ BEGIN {
DB_YIELDCPU
DB_debug_FLAG
DB_user_BEGIN
- REP_CONF_AUTOINIT
- REP_CONF_BULK
- REP_CONF_DELAYCLIENT
- REP_CONF_NOWAIT
);
sub AUTOLOAD {
diff --git a/db/perl/BerkeleyDB/BerkeleyDB.pod b/db/perl/BerkeleyDB/BerkeleyDB.pod
index f743c8016..76c04fbd6 100644
--- a/db/perl/BerkeleyDB/BerkeleyDB.pod
+++ b/db/perl/BerkeleyDB/BerkeleyDB.pod
@@ -186,12 +186,12 @@ part of an absolute path.
...
$db1 = new BerkeleyDB::Hash
- -Filename = "fred.db",
+ -Filename => "fred.db",
-Env => $env
...
$db2 = new BerkeleyDB::Hash
- -Filename = "/other/joe.db",
+ -Filename => "/other/joe.db",
-Env => $env
...
@@ -1453,7 +1453,7 @@ set the C<compact_fillpercent>, write you code like this
my %hash;
$hash{compact_fillpercent} = 50;
- $db->commit(undef, undef, \%hash);
+ $db->compact(undef, undef, \%hash);
The parameters operate identically to the C equivalent of this method.
The C<$c_data> needs a bit of explanation - it must be a hash reference.
@@ -1461,7 +1461,9 @@ The values of the following keys can be set before calling C<compact> and
will affect the operation of the compaction.
=over 5
+
=item * compact_fillpercent
+
=item * compact_timeout
=back
@@ -1472,9 +1474,13 @@ hash reference if the C<compact> operation was successful.
=over 5
=item * compact_deadlock
+
=item * compact_levels
+
=item * compact_pages_free
+
=item * compact_pages_examine
+
=item * compact_pages_truncated
=back
diff --git a/db/perl/BerkeleyDB/BerkeleyDB.pod.P b/db/perl/BerkeleyDB/BerkeleyDB.pod.P
index 959b240d0..5b3d46323 100644
--- a/db/perl/BerkeleyDB/BerkeleyDB.pod.P
+++ b/db/perl/BerkeleyDB/BerkeleyDB.pod.P
@@ -186,12 +186,12 @@ part of an absolute path.
...
$db1 = new BerkeleyDB::Hash
- -Filename = "fred.db",
+ -Filename => "fred.db",
-Env => $env
...
$db2 = new BerkeleyDB::Hash
- -Filename = "/other/joe.db",
+ -Filename => "/other/joe.db",
-Env => $env
...
@@ -1259,7 +1259,7 @@ set the C<compact_fillpercent>, write you code like this
my %hash;
$hash{compact_fillpercent} = 50;
- $db->commit(undef, undef, \%hash);
+ $db->compact(undef, undef, \%hash);
The parameters operate identically to the C equivalent of this method.
The C<$c_data> needs a bit of explanation - it must be a hash reference.
@@ -1267,7 +1267,9 @@ The values of the following keys can be set before calling C<compact> and
will affect the operation of the compaction.
=over 5
+
=item * compact_fillpercent
+
=item * compact_timeout
=back
@@ -1278,9 +1280,13 @@ hash reference if the C<compact> operation was successful.
=over 5
=item * compact_deadlock
+
=item * compact_levels
+
=item * compact_pages_free
+
=item * compact_pages_examine
+
=item * compact_pages_truncated
=back
diff --git a/db/perl/BerkeleyDB/BerkeleyDB.xs b/db/perl/BerkeleyDB/BerkeleyDB.xs
index 08a2cde58..44cbf186b 100644
--- a/db/perl/BerkeleyDB/BerkeleyDB.xs
+++ b/db/perl/BerkeleyDB/BerkeleyDB.xs
@@ -6,7 +6,7 @@
All comments/suggestions/problems are welcome
- Copyright (c) 1997-2006 Paul Marquess. All rights reserved.
+ Copyright (c) 1997-2007 Paul Marquess. All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
@@ -162,12 +162,8 @@ extern "C" {
#ifdef AT_LEAST_DB_3_2
# define DB_callback DB * db,
-# define getCurrentDB ((BerkeleyDB)db->BackRef)
-# define saveCurrentDB(db)
#else
# define DB_callback
-# define getCurrentDB CurrentDB
-# define saveCurrentDB(db) CurrentDB = db
#endif
#if DB_VERSION_MAJOR > 2
@@ -359,7 +355,7 @@ static void
hash_delete(char * hash, char * key);
#ifdef TRACE
-# define Trace(x) printf x
+# define Trace(x) (printf("# "), printf x)
#else
# define Trace(x)
#endif
@@ -382,6 +378,12 @@ hash_delete(char * hash, char * key);
# define flagSet(bitmask) ((flags & DB_OPFLAGS_MASK) == (bitmask))
#endif
+#ifdef DB_GET_BOTH_RANGE
+# define flagSetBoth() (flagSet(DB_GET_BOTH) || flagSet(DB_GET_BOTH_RANGE))
+#else
+# define flagSetBoth() (flagSet(DB_GET_BOTH))
+#endif
+
#ifndef AT_LEAST_DB_4
typedef int db_timeout_t ;
#endif
@@ -535,12 +537,39 @@ typedef int db_timeout_t ;
#define isSTDOUT_ERR(f) ((f) == stdout || (f) == stderr)
+
/* Internal Global Data */
-static db_recno_t Value ;
-static db_recno_t zero = 0 ;
-static BerkeleyDB CurrentDB ;
+#define MY_CXT_KEY "BerkeleyDB::_guts" XS_VERSION
+
+typedef struct {
+ db_recno_t x_Value;
+ db_recno_t x_zero;
+ DBTKEY x_empty;
+#ifndef AT_LEAST_DB_3_2
+ BerkeleyDB x_CurrentDB;
+#endif
+} my_cxt_t;
+
+START_MY_CXT
+
+#define Value (MY_CXT.x_Value)
+#define zero (MY_CXT.x_zero)
+#define empty (MY_CXT.x_empty)
+
+#ifdef AT_LEAST_DB_3_2
+# define CurrentDB ((BerkeleyDB)db->BackRef)
+#else
+# define CurrentDB (MY_CXT.x_CurrentDB)
+#endif
+
+#ifdef AT_LEAST_DB_3_2
+# define getCurrentDB ((BerkeleyDB)db->BackRef)
+# define saveCurrentDB(db)
+#else
+# define getCurrentDB (MY_CXT.x_CurrentDB)
+# define saveCurrentDB(db) (MY_CXT.x_CurrentDB) = db
+#endif
-static DBTKEY empty ;
#if 0
static char ErrBuff[1000] ;
#endif
@@ -917,12 +946,17 @@ GetInternalObject(SV * sv)
static int
btree_compare(DB_callback const DBT * key1, const DBT * key2 )
{
+#ifdef dTHX
+ dTHX;
+#endif
dSP ;
+ dMY_CXT ;
char * data1, * data2 ;
int retval ;
int count ;
- BerkeleyDB keepDB = CurrentDB ;
+ /* BerkeleyDB keepDB = getCurrentDB ; */
+ Trace(("In btree_compare \n")) ;
data1 = (char*) key1->data ;
data2 = (char*) key2->data ;
@@ -940,6 +974,8 @@ btree_compare(DB_callback const DBT * key1, const DBT * key2 )
ENTER ;
SAVETMPS;
+ /* SAVESPTR(CurrentDB); */
+
PUSHMARK(SP) ;
EXTEND(SP,2) ;
PUSHs(sv_2mortal(newSVpvn(data1,key1->size)));
@@ -958,7 +994,7 @@ btree_compare(DB_callback const DBT * key1, const DBT * key2 )
PUTBACK ;
FREETMPS ;
LEAVE ;
- CurrentDB = keepDB ;
+ /* CurrentDB = keepDB ; */
return (retval) ;
}
@@ -966,15 +1002,19 @@ btree_compare(DB_callback const DBT * key1, const DBT * key2 )
static int
dup_compare(DB_callback const DBT * key1, const DBT * key2 )
{
+#ifdef dTHX
+ dTHX;
+#endif
dSP ;
+ dMY_CXT ;
char * data1, * data2 ;
int retval ;
int count ;
- BerkeleyDB keepDB = CurrentDB ;
+ /* BerkeleyDB keepDB = CurrentDB ; */
Trace(("In dup_compare \n")) ;
if (!getCurrentDB)
- softCrash("Internal Error - No CurrentDB in dup_compare") ;
+ softCrash("Internal Error - No CurrentDB in dup_compare") ;
if (getCurrentDB->dup_compare == NULL)
@@ -1015,7 +1055,7 @@ dup_compare(DB_callback const DBT * key1, const DBT * key2 )
PUTBACK ;
FREETMPS ;
LEAVE ;
- CurrentDB = keepDB ;
+ /* CurrentDB = keepDB ; */
return (retval) ;
}
@@ -1023,12 +1063,17 @@ dup_compare(DB_callback const DBT * key1, const DBT * key2 )
static size_t
btree_prefix(DB_callback const DBT * key1, const DBT * key2 )
{
+#ifdef dTHX
+ dTHX;
+#endif
dSP ;
+ dMY_CXT ;
char * data1, * data2 ;
int retval ;
int count ;
- BerkeleyDB keepDB = CurrentDB ;
+ /* BerkeleyDB keepDB = CurrentDB ; */
+ Trace(("In btree_prefix \n")) ;
data1 = (char*) key1->data ;
data2 = (char*) key2->data ;
@@ -1064,7 +1109,7 @@ btree_prefix(DB_callback const DBT * key1, const DBT * key2 )
PUTBACK ;
FREETMPS ;
LEAVE ;
- CurrentDB = keepDB ;
+ /* CurrentDB = keepDB ; */
return (retval) ;
}
@@ -1072,11 +1117,16 @@ btree_prefix(DB_callback const DBT * key1, const DBT * key2 )
static u_int32_t
hash_cb(DB_callback const void * data, u_int32_t size)
{
+#ifdef dTHX
+ dTHX;
+#endif
dSP ;
+ dMY_CXT ;
int retval ;
int count ;
- BerkeleyDB keepDB = CurrentDB ;
+ /* BerkeleyDB keepDB = CurrentDB ; */
+ Trace(("In hash_cb \n")) ;
#ifndef newSVpvn
if (size == 0)
data = "" ;
@@ -1102,7 +1152,7 @@ hash_cb(DB_callback const void * data, u_int32_t size)
PUTBACK ;
FREETMPS ;
LEAVE ;
- CurrentDB = keepDB ;
+ /* CurrentDB = keepDB ; */
return (retval) ;
}
@@ -1112,7 +1162,11 @@ hash_cb(DB_callback const void * data, u_int32_t size)
static int
associate_cb(DB_callback const DBT * pkey, const DBT * pdata, DBT * skey)
{
+#ifdef dTHX
+ dTHX;
+#endif
dSP ;
+ dMY_CXT ;
char * pk_dat, * pd_dat ;
/* char *sk_dat ; */
int retval ;
@@ -1188,7 +1242,11 @@ associate_cb(DB_callback const DBT * pkey, const DBT * pdata, DBT * skey)
static int
associate_cb_recno(DB_callback const DBT * pkey, const DBT * pdata, DBT * skey)
{
+#ifdef dTHX
+ dTHX;
+#endif
dSP ;
+ dMY_CXT ;
char * pk_dat, * pd_dat ;
/* char *sk_dat ; */
int retval ;
@@ -1196,7 +1254,7 @@ associate_cb_recno(DB_callback const DBT * pkey, const DBT * pdata, DBT * skey)
SV * skey_SV ;
STRLEN skey_len;
char * skey_ptr ;
- db_recno_t Value;
+ /* db_recno_t Value; */
Trace(("In associate_cb_recno \n")) ;
if (getCurrentDB->associated == NULL){
@@ -1268,6 +1326,7 @@ db_errcall_cb(const DB_ENV* dbenv, const char * db_errpfx, const char * buffer)
db_errcall_cb(const char * db_errpfx, char * buffer)
#endif
{
+ Trace(("In errcall_cb \n")) ;
#if 0
if (db_errpfx == NULL)
@@ -1336,6 +1395,7 @@ hv_store_uv(HV * hash, char * key, UV value)
static void
GetKey(BerkeleyDB_type * db, SV * sv, DBTKEY * key)
{
+ dMY_CXT ;
if (db->recno_or_queue) {
Value = GetRecnoKey(db, SvIV(sv)) ;
key->data = & Value;
@@ -1369,11 +1429,11 @@ my_db_open(
DB * dbp ;
int Status ;
DB_TXN* txnid = NULL ;
+ dMY_CXT;
Trace(("_db_open(dbenv[%p] ref_dbenv [%p] file[%s] subname [%s] type[%d] flags[%d] mode[%d]\n",
dbenv, ref_dbenv, file, subname, type, flags, mode)) ;
- CurrentDB = db ;
if (dbenv)
env = dbenv->Env ;
@@ -1394,7 +1454,12 @@ my_db_open(
softCrash("-Encrypt needs Berkeley DB 4.x or better") ;
#endif /* ! AT_LEAST_DB_4_1 */
+#ifndef AT_LEAST_DB_3_2
+ CurrentDB = db ;
+#endif
+
#if DB_VERSION_MAJOR > 2
+ Trace(("creating\n"));
Status = db_create(&dbp, env, 0) ;
Trace(("db_create returned %s\n", my_db_strerror(Status))) ;
if (Status)
@@ -1496,6 +1561,7 @@ my_db_open(
return RETVAL ;
}
+
if (info->dup_compare) {
Status = dbp->set_dup_compare(dbp, info->dup_compare) ;
Trace(("set_dup_compare [%d] returned %s\n",
@@ -1560,6 +1626,7 @@ my_db_open(
if (! file)
flags |= DB_CREATE;
+ Trace(("db_open'ing\n"));
#ifdef AT_LEAST_DB_4_1
if ((Status = (dbp->open)(dbp, txnid, file, subname, type, flags, mode)) == 0) {
@@ -1568,8 +1635,10 @@ my_db_open(
#endif /* AT_LEAST_DB_4_1 */
#else /* DB_VERSION_MAJOR == 2 */
if ((Status = db_open(file, type, flags, mode, env, info, &dbp)) == 0) {
+ CurrentDB = db ;
#endif /* DB_VERSION_MAJOR == 2 */
+
Trace(("db_opened ok\n"));
RETVAL = db ;
RETVAL->dbp = dbp ;
@@ -1606,6 +1675,7 @@ my_db_open(
Trace(("db open returned %s\n", my_db_strerror(Status))) ;
}
+ Trace(("End of _db_open\n"));
return RETVAL ;
}
@@ -1622,6 +1692,8 @@ env_db_version(maj, min, patch)
int maj
int min
int patch
+ PREINIT:
+ dMY_CXT;
OUTPUT:
RETVAL
maj
@@ -1638,6 +1710,8 @@ db_value_set(value, which)
DualType
_db_remove(ref)
SV * ref
+ PREINIT:
+ dMY_CXT;
CODE:
{
#if DB_VERSION_MAJOR == 2
@@ -1682,6 +1756,8 @@ _db_remove(ref)
DualType
_db_verify(ref)
SV * ref
+ PREINIT:
+ dMY_CXT;
CODE:
{
#ifndef AT_LEAST_DB_3_1
@@ -1728,6 +1804,8 @@ _db_verify(ref)
DualType
_db_rename(ref)
SV * ref
+ PREINIT:
+ dMY_CXT;
CODE:
{
#ifndef AT_LEAST_DB_3_1
@@ -1777,6 +1855,8 @@ MODULE = BerkeleyDB::Env PACKAGE = BerkeleyDB::Env PREFIX = env_
BerkeleyDB::Env::Raw
create(flags=0)
u_int32_t flags
+ PREINIT:
+ dMY_CXT;
CODE:
{
#ifndef AT_LEAST_DB_4_1
@@ -1807,6 +1887,8 @@ open(env, db_home=NULL, flags=0, mode=0777)
char * db_home
u_int32_t flags
int mode
+ PREINIT:
+ dMY_CXT;
CODE:
#ifndef AT_LEAST_DB_4_1
softCrash("$env->create needs Berkeley DB 4.1 or better") ;
@@ -1820,6 +1902,8 @@ open(env, db_home=NULL, flags=0, mode=0777)
bool
cds_enabled(env)
BerkeleyDB::Env env
+ PREINIT:
+ dMY_CXT;
CODE:
RETVAL = env->cds_enabled ;
OUTPUT:
@@ -1831,6 +1915,8 @@ set_encrypt(env, passwd, flags)
BerkeleyDB::Env env
const char * passwd
u_int32_t flags
+ PREINIT:
+ dMY_CXT;
CODE:
#ifndef AT_LEAST_DB_4_1
softCrash("$env->set_encrypt needs Berkeley DB 4.1 or better") ;
@@ -1850,6 +1936,8 @@ _db_appinit(self, ref, errfile=NULL)
char * self
SV * ref
SV * errfile
+ PREINIT:
+ dMY_CXT;
CODE:
{
HV * hash ;
@@ -2083,17 +2171,23 @@ _db_appinit(self, ref, errfile=NULL)
DB_ENV*
DB_ENV(env)
BerkeleyDB::Env env
+ PREINIT:
+ dMY_CXT;
CODE:
if (env->active)
RETVAL = env->Env ;
else
RETVAL = NULL;
+ OUTPUT:
+ RETVAL
void
log_archive(env, flags=0)
u_int32_t flags
BerkeleyDB::Env env
+ PREINIT:
+ dMY_CXT;
PPCODE:
{
char ** list;
@@ -2131,6 +2225,8 @@ _txn_begin(env, pid=NULL, flags=0)
u_int32_t flags
BerkeleyDB::Env env
BerkeleyDB::Txn pid
+ PREINIT:
+ dMY_CXT;
CODE:
{
DB_TXN *txn ;
@@ -2187,11 +2283,15 @@ env_txn_checkpoint(env, kbyte, min, flags=0)
long kbyte
long min
u_int32_t flags
+ PREINIT:
+ dMY_CXT;
HV *
txn_stat(env)
BerkeleyDB::Env env
HV * RETVAL = NULL ;
+ PREINIT:
+ dMY_CXT;
CODE:
{
DB_TXN_STAT * stat ;
@@ -2232,6 +2332,8 @@ txn_stat(env)
void
printEnv(env)
BerkeleyDB::Env env
+ PREINIT:
+ dMY_CXT;
INIT:
ckActive_Environment(env->active) ;
CODE:
@@ -2261,6 +2363,8 @@ SV *
errPrefix(env, prefix)
BerkeleyDB::Env env
SV * prefix
+ PREINIT:
+ dMY_CXT;
INIT:
ckActive_Environment(env->active) ;
CODE:
@@ -2285,6 +2389,8 @@ errPrefix(env, prefix)
DualType
status(env)
BerkeleyDB::Env env
+ PREINIT:
+ dMY_CXT;
CODE:
RETVAL = env->Status ;
OUTPUT:
@@ -2295,6 +2401,8 @@ status(env)
DualType
db_appexit(env)
BerkeleyDB::Env env
+ PREINIT:
+ dMY_CXT;
ALIAS: close =1
INIT:
ckActive_Environment(env->active) ;
@@ -2319,6 +2427,8 @@ void
_DESTROY(env)
BerkeleyDB::Env env
int RETVAL = 0 ;
+ PREINIT:
+ dMY_CXT;
CODE:
Trace(("In BerkeleyDB::Env::DESTROY\n"));
Trace((" env %ld Env %ld dirty %d\n", env, &env->Env, PL_dirty)) ;
@@ -2342,6 +2452,8 @@ _DESTROY(env)
BerkeleyDB::TxnMgr::Raw
_TxnMgr(env)
BerkeleyDB::Env env
+ PREINIT:
+ dMY_CXT;
INIT:
ckActive_Environment(env->active) ;
if (!env->txn_enabled)
@@ -2357,6 +2469,8 @@ int
get_shm_key(env, id)
BerkeleyDB::Env env
long id = NO_INIT
+ PREINIT:
+ dMY_CXT;
INIT:
ckActive_Database(env->active) ;
CODE:
@@ -2374,6 +2488,8 @@ int
set_lg_dir(env, dir)
BerkeleyDB::Env env
char * dir
+ PREINIT:
+ dMY_CXT;
INIT:
ckActive_Database(env->active) ;
CODE:
@@ -2389,6 +2505,8 @@ int
set_lg_bsize(env, bsize)
BerkeleyDB::Env env
u_int32_t bsize
+ PREINIT:
+ dMY_CXT;
INIT:
ckActive_Database(env->active) ;
CODE:
@@ -2404,6 +2522,8 @@ int
set_lg_max(env, lg_max)
BerkeleyDB::Env env
u_int32_t lg_max
+ PREINIT:
+ dMY_CXT;
INIT:
ckActive_Database(env->active) ;
CODE:
@@ -2419,6 +2539,8 @@ int
set_data_dir(env, dir)
BerkeleyDB::Env env
char * dir
+ PREINIT:
+ dMY_CXT;
INIT:
ckActive_Database(env->active) ;
CODE:
@@ -2435,6 +2557,8 @@ int
set_tmp_dir(env, dir)
BerkeleyDB::Env env
char * dir
+ PREINIT:
+ dMY_CXT;
INIT:
ckActive_Database(env->active) ;
CODE:
@@ -2450,6 +2574,8 @@ int
set_mutexlocks(env, do_lock)
BerkeleyDB::Env env
int do_lock
+ PREINIT:
+ dMY_CXT;
INIT:
ckActive_Database(env->active) ;
CODE:
@@ -2474,6 +2600,8 @@ set_verbose(env, which, onoff)
BerkeleyDB::Env env
u_int32_t which
int onoff
+ PREINIT:
+ dMY_CXT;
INIT:
ckActive_Database(env->active) ;
CODE:
@@ -2490,6 +2618,8 @@ set_flags(env, flags, onoff)
BerkeleyDB::Env env
u_int32_t flags
int onoff
+ PREINIT:
+ dMY_CXT;
INIT:
ckActive_Database(env->active) ;
CODE:
@@ -2506,6 +2636,8 @@ lsn_reset(env, file, flags)
BerkeleyDB::Env env
char* file
u_int32_t flags
+ PREINIT:
+ dMY_CXT;
INIT:
ckActive_Database(env->active) ;
CODE:
@@ -2522,6 +2654,8 @@ set_timeout(env, timeout, flags=0)
BerkeleyDB::Env env
db_timeout_t timeout
u_int32_t flags
+ PREINIT:
+ dMY_CXT;
INIT:
ckActive_Database(env->active) ;
CODE:
@@ -2538,6 +2672,8 @@ get_timeout(env, timeout, flags=0)
BerkeleyDB::Env env
db_timeout_t timeout = NO_INIT
u_int32_t flags
+ PREINIT:
+ dMY_CXT;
INIT:
ckActive_Database(env->active) ;
CODE:
@@ -2555,11 +2691,15 @@ MODULE = BerkeleyDB::Term PACKAGE = BerkeleyDB::Term
void
close_everything()
+ PREINIT:
+ dMY_CXT;
#define safeCroak(string) softCrash(string)
void
safeCroak(string)
char * string
+ PREINIT:
+ dMY_CXT;
MODULE = BerkeleyDB::Hash PACKAGE = BerkeleyDB::Hash PREFIX = hash_
@@ -2567,6 +2707,8 @@ BerkeleyDB::Hash::Raw
_db_open_hash(self, ref)
char * self
SV * ref
+ PREINIT:
+ dMY_CXT;
CODE:
{
HV * hash ;
@@ -2629,6 +2771,8 @@ db_stat(db, flags=0)
int flags
BerkeleyDB::Common db
HV * RETVAL = NULL ;
+ PREINIT:
+ dMY_CXT;
INIT:
ckActive_Database(db->active) ;
CODE:
@@ -2686,6 +2830,8 @@ MODULE = BerkeleyDB::Unknown PACKAGE = BerkeleyDB::Unknown PREFIX = hash_
void
_db_open_unknown(ref)
SV * ref
+ PREINIT:
+ dMY_CXT;
PPCODE:
{
HV * hash ;
@@ -2740,6 +2886,8 @@ BerkeleyDB::Btree::Raw
_db_open_btree(self, ref)
char * self
SV * ref
+ PREINIT:
+ dMY_CXT;
CODE:
{
HV * hash ;
@@ -2808,6 +2956,8 @@ db_stat(db, flags=0)
int flags
BerkeleyDB::Common db
HV * RETVAL = NULL ;
+ PREINIT:
+ dMY_CXT;
INIT:
ckActive_Database(db->active) ;
CODE:
@@ -2880,6 +3030,8 @@ BerkeleyDB::Recno::Raw
_db_open_recno(self, ref)
char * self
SV * ref
+ PREINIT:
+ dMY_CXT;
CODE:
{
HV * hash ;
@@ -2945,6 +3097,8 @@ BerkeleyDB::Queue::Raw
_db_open_queue(self, ref)
char * self
SV * ref
+ PREINIT:
+ dMY_CXT;
CODE:
{
#ifndef AT_LEAST_DB_3
@@ -3009,6 +3163,8 @@ db_stat(db, flags=0)
int flags
BerkeleyDB::Common db
HV * RETVAL = NULL ;
+ PREINIT:
+ dMY_CXT;
INIT:
ckActive_Database(db->active) ;
CODE:
@@ -3065,6 +3221,8 @@ DualType
db_close(db,flags=0)
int flags
BerkeleyDB::Common db
+ PREINIT:
+ dMY_CXT;
INIT:
ckActive_Database(db->active) ;
saveCurrentDB(db) ;
@@ -3090,6 +3248,8 @@ db_close(db,flags=0)
void
dab__DESTROY(db)
BerkeleyDB::Common db
+ PREINIT:
+ dMY_CXT;
CODE:
saveCurrentDB(db) ;
Trace(("In BerkeleyDB::Common::_DESTROY db %d dirty=%d\n", db, PL_dirty)) ;
@@ -3106,6 +3266,8 @@ _db_cursor(db, flags=0)
u_int32_t flags
BerkeleyDB::Common db
BerkeleyDB::Cursor RETVAL = NULL ;
+ PREINIT:
+ dMY_CXT;
ALIAS: __db_write_cursor = 1
INIT:
ckActive_Database(db->active) ;
@@ -3167,6 +3329,8 @@ _db_join(db, cursors, flags=0)
BerkeleyDB::Common db
AV * cursors
BerkeleyDB::Cursor RETVAL = NULL ;
+ PREINIT:
+ dMY_CXT;
INIT:
ckActive_Database(db->active) ;
CODE:
@@ -3238,6 +3402,8 @@ _db_join(db, cursors, flags=0)
int
ArrayOffset(db)
BerkeleyDB::Common db
+ PREINIT:
+ dMY_CXT;
INIT:
ckActive_Database(db->active) ;
CODE:
@@ -3253,6 +3419,8 @@ ArrayOffset(db)
bool
cds_enabled(db)
BerkeleyDB::Common db
+ PREINIT:
+ dMY_CXT;
INIT:
ckActive_Database(db->active) ;
CODE:
@@ -3265,6 +3433,8 @@ cds_enabled(db)
int
type(db)
BerkeleyDB::Common db
+ PREINIT:
+ dMY_CXT;
INIT:
ckActive_Database(db->active) ;
CODE:
@@ -3275,6 +3445,8 @@ type(db)
int
byteswapped(db)
BerkeleyDB::Common db
+ PREINIT:
+ dMY_CXT;
INIT:
ckActive_Database(db->active) ;
CODE:
@@ -3297,6 +3469,8 @@ byteswapped(db)
DualType
status(db)
BerkeleyDB::Common db
+ PREINIT:
+ dMY_CXT;
CODE:
RETVAL = db->Status ;
OUTPUT:
@@ -3361,6 +3535,8 @@ partial_set(db, offset, length)
BerkeleyDB::Common db
u_int32_t offset
u_int32_t length
+ PREINIT:
+ dMY_CXT;
INIT:
ckActive_Database(db->active) ;
PPCODE:
@@ -3377,6 +3553,8 @@ partial_set(db, offset, length)
void
partial_clear(db)
BerkeleyDB::Common db
+ PREINIT:
+ dMY_CXT;
INIT:
ckActive_Database(db->active) ;
PPCODE:
@@ -3397,6 +3575,8 @@ db_del(db, key, flags=0)
u_int flags
BerkeleyDB::Common db
DBTKEY key
+ PREINIT:
+ dMY_CXT;
INIT:
Trace(("db_del db[%p] in [%p] txn[%p] key[%.*s] flags[%d]\n", db->dbp, db, db->txn, key.size, key.data, flags)) ;
ckActive_Database(db->active) ;
@@ -3420,6 +3600,8 @@ db_get(db, key, data, flags=0)
BerkeleyDB::Common db
DBTKEY_B key
DBT_OPT data
+ PREINIT:
+ dMY_CXT;
CODE:
ckActive_Database(db->active) ;
saveCurrentDB(db) ;
@@ -3441,6 +3623,8 @@ db_pget(db, key, pkey, data, flags=0)
DBTKEY_B key
DBTKEY_Bpr pkey = NO_INIT
DBT_OPT data
+ PREINIT:
+ dMY_CXT;
CODE:
#ifndef AT_LEAST_DB_3_3
softCrash("db_pget needs at least Berkeley DB 3.3");
@@ -3467,6 +3651,8 @@ db_put(db, key, data, flags=0)
BerkeleyDB::Common db
DBTKEY key
DBT data
+ PREINIT:
+ dMY_CXT;
CODE:
ckActive_Database(db->active) ;
saveCurrentDB(db) ;
@@ -3488,6 +3674,8 @@ db_key_range(db, key, less, equal, greater, flags=0)
double less = 0.0 ;
double equal = 0.0 ;
double greater = 0.0 ;
+ PREINIT:
+ dMY_CXT;
CODE:
{
#ifndef AT_LEAST_DB_3_1
@@ -3516,6 +3704,8 @@ db_key_range(db, key, less, equal, greater, flags=0)
int
db_fd(db)
BerkeleyDB::Common db
+ PREINIT:
+ dMY_CXT;
INIT:
ckActive_Database(db->active) ;
CODE:
@@ -3530,6 +3720,8 @@ DualType
db_sync(db, flags=0)
u_int flags
BerkeleyDB::Common db
+ PREINIT:
+ dMY_CXT;
INIT:
ckActive_Database(db->active) ;
saveCurrentDB(db) ;
@@ -3538,6 +3730,8 @@ void
_Txn(db, txn=NULL)
BerkeleyDB::Common db
BerkeleyDB::Txn txn
+ PREINIT:
+ dMY_CXT;
INIT:
ckActive_Database(db->active) ;
CODE:
@@ -3559,6 +3753,8 @@ truncate(db, countp, flags=0)
BerkeleyDB::Common db
u_int32_t countp
u_int32_t flags
+ PREINIT:
+ dMY_CXT;
INIT:
ckActive_Database(db->active) ;
CODE:
@@ -3585,6 +3781,8 @@ associate(db, secondary, callback, flags=0)
BerkeleyDB::Common secondary
SV* callback
u_int32_t flags
+ PREINIT:
+ dMY_CXT;
INIT:
ckActive_Database(db->active) ;
CODE:
@@ -3607,6 +3805,8 @@ associate(db, secondary, callback, flags=0)
DualType
compact(db, start=NULL, stop=NULL, c_data=NULL, flags=0, end=NULL)
+ PREINIT:
+ dMY_CXT;
PREINIT:
DBTKEY end_key;
INPUT:
@@ -3678,6 +3878,8 @@ _c_dup(db, flags=0)
u_int32_t flags
BerkeleyDB::Cursor db
BerkeleyDB::Cursor RETVAL = NULL ;
+ PREINIT:
+ dMY_CXT;
INIT:
saveCurrentDB(db->parent_db);
ckActive_Database(db->active) ;
@@ -3731,6 +3933,8 @@ _c_dup(db, flags=0)
DualType
_c_close(db)
BerkeleyDB::Cursor db
+ PREINIT:
+ dMY_CXT;
INIT:
saveCurrentDB(db->parent_db);
ckActive_Cursor(db->active) ;
@@ -3747,6 +3951,8 @@ _c_close(db)
void
_DESTROY(db)
BerkeleyDB::Cursor db
+ PREINIT:
+ dMY_CXT;
CODE:
saveCurrentDB(db->parent_db);
Trace(("In BerkeleyDB::Cursor::_DESTROY db %d dirty=%d active=%d\n", db, PL_dirty, db->active));
@@ -3762,6 +3968,8 @@ _DESTROY(db)
DualType
status(db)
BerkeleyDB::Cursor db
+ PREINIT:
+ dMY_CXT;
CODE:
RETVAL = db->Status ;
OUTPUT:
@@ -3773,6 +3981,8 @@ DualType
cu_c_del(db, flags=0)
int flags
BerkeleyDB::Cursor db
+ PREINIT:
+ dMY_CXT;
INIT:
saveCurrentDB(db->parent_db);
ckActive_Cursor(db->active) ;
@@ -3787,6 +3997,8 @@ cu_c_get(db, key, data, flags=0)
BerkeleyDB::Cursor db
DBTKEY_B key
DBT_B data
+ PREINIT:
+ dMY_CXT;
INIT:
Trace(("c_get db [%p] in [%p] flags [%d]\n", db->dbp, db, flags)) ;
saveCurrentDB(db->parent_db);
@@ -3808,6 +4020,8 @@ cu_c_pget(db, key, pkey, data, flags=0)
DBTKEY_B key
DBTKEY_Bpr pkey = NO_INIT
DBT_B data
+ PREINIT:
+ dMY_CXT;
CODE:
#ifndef AT_LEAST_DB_3_3
softCrash("db_c_pget needs at least Berkeley DB 3.3");
@@ -3835,6 +4049,8 @@ cu_c_put(db, key, data, flags=0)
BerkeleyDB::Cursor db
DBTKEY key
DBT data
+ PREINIT:
+ dMY_CXT;
INIT:
saveCurrentDB(db->parent_db);
ckActive_Cursor(db->active) ;
@@ -3848,6 +4064,8 @@ cu_c_count(db, count, flags=0)
int flags
BerkeleyDB::Cursor db
u_int32_t count = NO_INIT
+ PREINIT:
+ dMY_CXT;
CODE:
#ifndef AT_LEAST_DB_3_1
softCrash("c_count needs at least Berkeley DB 3.1.x");
@@ -3869,6 +4087,8 @@ _txn_begin(txnmgr, pid=NULL, flags=0)
u_int32_t flags
BerkeleyDB::TxnMgr txnmgr
BerkeleyDB::Txn pid
+ PREINIT:
+ dMY_CXT;
CODE:
{
DB_TXN *txn ;
@@ -3906,6 +4126,8 @@ _txn_begin(txnmgr, pid=NULL, flags=0)
DualType
status(mgr)
BerkeleyDB::TxnMgr mgr
+ PREINIT:
+ dMY_CXT;
CODE:
RETVAL = mgr->env->TxnMgrStatus ;
OUTPUT:
@@ -3915,6 +4137,8 @@ status(mgr)
void
_DESTROY(mgr)
BerkeleyDB::TxnMgr mgr
+ PREINIT:
+ dMY_CXT;
CODE:
Trace(("In BerkeleyDB::TxnMgr::DESTROY dirty=%d\n", PL_dirty)) ;
Safefree(mgr) ;
@@ -3945,11 +4169,15 @@ xx_txn_checkpoint(txnp, kbyte, min, flags=0)
long kbyte
long min
u_int32_t flags
+ PREINIT:
+ dMY_CXT;
HV *
txn_stat(txnp)
BerkeleyDB::TxnMgr txnp
HV * RETVAL = NULL ;
+ PREINIT:
+ dMY_CXT;
CODE:
{
DB_TXN_STAT * stat ;
@@ -4001,6 +4229,8 @@ MODULE = BerkeleyDB::Txn PACKAGE = BerkeleyDB::Txn PREFIX = xx_
DualType
status(tid)
BerkeleyDB::Txn tid
+ PREINIT:
+ dMY_CXT;
CODE:
RETVAL = tid->Status ;
OUTPUT:
@@ -4011,6 +4241,8 @@ set_timeout(txn, timeout, flags=0)
BerkeleyDB::Txn txn
db_timeout_t timeout
u_int32_t flags
+ PREINIT:
+ dMY_CXT;
INIT:
ckActive_Transaction(txn->active) ;
CODE:
@@ -4026,6 +4258,8 @@ int
set_tx_max(txn, max)
BerkeleyDB::Txn txn
u_int32_t max
+ PREINIT:
+ dMY_CXT;
INIT:
ckActive_Transaction(txn->active) ;
CODE:
@@ -4041,6 +4275,8 @@ int
get_tx_max(txn, max)
BerkeleyDB::Txn txn
u_int32_t max = NO_INIT
+ PREINIT:
+ dMY_CXT;
INIT:
ckActive_Transaction(txn->active) ;
CODE:
@@ -4056,6 +4292,8 @@ get_tx_max(txn, max)
int
_DESTROY(tid)
BerkeleyDB::Txn tid
+ PREINIT:
+ dMY_CXT;
CODE:
Trace(("In BerkeleyDB::Txn::_DESTROY txn [%d] active [%d] dirty=%d\n", tid->txn, tid->active, PL_dirty)) ;
if (tid->active)
@@ -4091,6 +4329,8 @@ xx_txn_unlink(dir, force, dbenv)
DualType
xx_txn_prepare(tid)
BerkeleyDB::Txn tid
+ PREINIT:
+ dMY_CXT;
INIT:
ckActive_Transaction(tid->active) ;
@@ -4107,6 +4347,8 @@ DualType
_txn_commit(tid, flags=0)
u_int32_t flags
BerkeleyDB::Txn tid
+ PREINIT:
+ dMY_CXT;
INIT:
ckActive_Transaction(tid->active) ;
hash_delete("BerkeleyDB::Term::Txn", (char *)tid) ;
@@ -4120,6 +4362,8 @@ _txn_commit(tid, flags=0)
DualType
_txn_abort(tid)
BerkeleyDB::Txn tid
+ PREINIT:
+ dMY_CXT;
INIT:
ckActive_Transaction(tid->active) ;
hash_delete("BerkeleyDB::Term::Txn", (char *)tid) ;
@@ -4138,6 +4382,8 @@ DualType
_txn_discard(tid, flags=0)
BerkeleyDB::Txn tid
u_int32_t flags
+ PREINIT:
+ dMY_CXT;
INIT:
ckActive_Transaction(tid->active) ;
hash_delete("BerkeleyDB::Term::Txn", (char *)tid) ;
@@ -4151,12 +4397,16 @@ _txn_discard(tid, flags=0)
u_int32_t
xx_txn_id(tid)
BerkeleyDB::Txn tid
+ PREINIT:
+ dMY_CXT;
MODULE = BerkeleyDB::_tiedHash PACKAGE = BerkeleyDB::_tiedHash
int
FIRSTKEY(db)
BerkeleyDB::Common db
+ PREINIT:
+ dMY_CXT;
CODE:
{
DBTKEY key ;
@@ -4198,6 +4448,8 @@ int
NEXTKEY(db, key)
BerkeleyDB::Common db
DBTKEY key = NO_INIT
+ PREINIT:
+ dMY_CXT;
CODE:
{
DBT value ;
@@ -4223,6 +4475,8 @@ MODULE = BerkeleyDB::_tiedArray PACKAGE = BerkeleyDB::_tiedArray
I32
FETCHSIZE(db)
BerkeleyDB::Common db
+ PREINIT:
+ dMY_CXT;
CODE:
saveCurrentDB(db) ;
RETVAL = GetArrayLength(db) ;
@@ -4234,10 +4488,14 @@ MODULE = BerkeleyDB PACKAGE = BerkeleyDB
BOOT:
{
+#ifdef dTHX
+ dTHX;
+#endif
SV * sv_err = perl_get_sv(ERR_BUFF, GV_ADD|GV_ADDMULTI) ;
SV * version_sv = perl_get_sv("BerkeleyDB::db_version", GV_ADD|GV_ADDMULTI) ;
SV * ver_sv = perl_get_sv("BerkeleyDB::db_ver", GV_ADD|GV_ADDMULTI) ;
int Major, Minor, Patch ;
+ MY_CXT_INIT;
(void)db_version(&Major, &Minor, &Patch) ;
/* Check that the versions of db.h and libdb.a are the same */
if (Major != DB_VERSION_MAJOR || Minor != DB_VERSION_MINOR
diff --git a/db/perl/BerkeleyDB/Changes b/db/perl/BerkeleyDB/Changes
index 3f27687a8..c8a132ca8 100644
--- a/db/perl/BerkeleyDB/Changes
+++ b/db/perl/BerkeleyDB/Changes
@@ -1,5 +1,16 @@
Revision history for Perl extension BerkeleyDB.
+0.32 10th July 2007
+
+ * Updates to support Berkeley DB 4.6
+
+ * Remove all global static data from BerkeleyDB.xs.
+
+0.31 15th Oct 2006
+
+ * Fixed DB_GET_BOTH. Tnanks to Thomas Drugeon for spotting the typo
+ in typemap and supplying a regression test for this fix.
+
0.30 11th Sept 2006
* Fixed queue test harness for Berkeley DB 4.5 compliance
diff --git a/db/perl/BerkeleyDB/MANIFEST b/db/perl/BerkeleyDB/MANIFEST
index 979e790f7..20fa023d9 100644
--- a/db/perl/BerkeleyDB/MANIFEST
+++ b/db/perl/BerkeleyDB/MANIFEST
@@ -24,6 +24,7 @@ t/db-3.0.t
t/db-3.1.t
t/db-3.2.t
t/db-3.3.t
+t/db-4.x.t
t/db-4.4.t
t/destroy.t
t/encrypt.t
diff --git a/db/perl/BerkeleyDB/META.yml b/db/perl/BerkeleyDB/META.yml
index dd6a0e25b..6bbe20339 100644
--- a/db/perl/BerkeleyDB/META.yml
+++ b/db/perl/BerkeleyDB/META.yml
@@ -1,10 +1,13 @@
-# http://module-build.sourceforge.net/META-spec.html
-#XXXXXXX This is a prototype!!! It will change in the future!!! XXXXX#
-name: BerkeleyDB
-version: 0.30
-version_from: BerkeleyDB.pm
-installdirs: site
-requires:
-
-distribution_type: module
-generated_by: ExtUtils::MakeMaker version 6.17
+--- #YAML:1.0
+name: BerkeleyDB
+version: 0.32
+abstract: Perl extension for Berkeley DB version 2, 3 or 4
+license: perl
+generated_by: ExtUtils::MakeMaker version 6.34
+distribution_type: module
+requires:
+meta-spec:
+ url: http://module-build.sourceforge.net/META-spec-v1.2.html
+ version: 1.2
+author:
+ - Paul Marquess <pmqs@cpan.org>
diff --git a/db/perl/BerkeleyDB/Makefile.PL b/db/perl/BerkeleyDB/Makefile.PL
index 747d6e72c..7d678523b 100644
--- a/db/perl/BerkeleyDB/Makefile.PL
+++ b/db/perl/BerkeleyDB/Makefile.PL
@@ -64,6 +64,11 @@ WriteMakefile(
AUTHOR => 'Paul Marquess <pmqs@cpan.org>')
: ()
),
+ ((ExtUtils::MakeMaker->VERSION() gt '6.30')
+ ? ('LICENSE' => 'perl')
+ : ()
+ ),
+
);
diff --git a/db/perl/BerkeleyDB/README b/db/perl/BerkeleyDB/README
index 0e8735568..009a21766 100644
--- a/db/perl/BerkeleyDB/README
+++ b/db/perl/BerkeleyDB/README
@@ -1,10 +1,10 @@
BerkeleyDB
- Version 0.30
+ Version 0.32
- 11th Sept 2006
+ 10h July 2007
- Copyright (c) 1997-2006 Paul Marquess. All rights reserved. This
+ Copyright (c) 1997-2007 Paul Marquess. All rights reserved. This
program is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.
diff --git a/db/perl/BerkeleyDB/constants.h b/db/perl/BerkeleyDB/constants.h
index 786df3719..ed71ff4ad 100644
--- a/db/perl/BerkeleyDB/constants.h
+++ b/db/perl/BerkeleyDB/constants.h
@@ -689,13 +689,14 @@ static int
constant_11 (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_APP_INIT DB_ARCH_ABS DB_ARCH_LOG DB_DEGREE_2 DB_FILEOPEN DB_FIXEDLEN
- DB_GET_BOTH DB_INIT_CDB DB_INIT_LOG DB_INIT_REP DB_INIT_TXN DB_KEYEMPTY
- DB_KEYEXIST DB_KEYFIRST DB_LOCKDOWN DB_LOCK_GET DB_LOCK_PUT DB_LOGMAGIC
- DB_LOG_DISK DB_LOG_PERM DB_MULTIPLE DB_NEXT_DUP DB_NOSERVER DB_NOTFOUND
- DB_OK_BTREE DB_OK_QUEUE DB_OK_RECNO DB_POSITION DB_QAMMAGIC DB_REGISTER
- DB_RENUMBER DB_SEQ_WRAP DB_SNAPSHOT DB_STAT_ALL DB_TRUNCATE DB_TXNMAGIC
- DB_TXN_LOCK DB_TXN_REDO DB_TXN_SYNC DB_TXN_UNDO DB_WRNOSYNC DB_YIELDCPU */
+ DB_APP_INIT DB_ARCH_ABS DB_ARCH_LOG DB_DEGREE_2 DB_DSYNC_DB DB_FILEOPEN
+ DB_FIXEDLEN DB_GET_BOTH DB_INIT_CDB DB_INIT_LOG DB_INIT_REP DB_INIT_TXN
+ DB_KEYEMPTY DB_KEYEXIST DB_KEYFIRST DB_LOCKDOWN DB_LOCK_GET DB_LOCK_PUT
+ DB_LOGMAGIC DB_LOG_DISK DB_LOG_PERM DB_MULTIPLE DB_NEXT_DUP DB_NOSERVER
+ DB_NOTFOUND DB_OK_BTREE DB_OK_QUEUE DB_OK_RECNO DB_POSITION DB_PREV_DUP
+ DB_QAMMAGIC DB_REGISTER DB_RENUMBER DB_SEQ_WRAP DB_SNAPSHOT DB_STAT_ALL
+ DB_TRUNCATE DB_TXNMAGIC DB_TXN_LOCK DB_TXN_REDO DB_TXN_SYNC DB_TXN_UNDO
+ DB_TXN_WAIT DB_WRNOSYNC DB_YIELDCPU */
/* Offset 8 gives the best switch position. */
switch (name[8]) {
case 'A':
@@ -726,6 +727,15 @@ constant_11 (pTHX_ const char *name, IV *iv_return) {
return PERL_constant_NOTDEF;
#endif
}
+ if (memEQ(name, "DB_TXN_WAIT", 11)) {
+ /* ^ */
+#ifdef DB_TXN_WAIT
+ *iv_return = DB_TXN_WAIT;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
break;
case 'B':
if (memEQ(name, "DB_RENUMBER", 11)) {
@@ -777,6 +787,15 @@ constant_11 (pTHX_ const char *name, IV *iv_return) {
return PERL_constant_NOTDEF;
#endif
}
+ if (memEQ(name, "DB_PREV_DUP", 11)) {
+ /* ^ */
+#ifdef DB_PREV_DUP
+ *iv_return = DB_PREV_DUP;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
break;
case 'E':
if (memEQ(name, "DB_DEGREE_2", 11)) {
@@ -1116,6 +1135,17 @@ constant_11 (pTHX_ const char *name, IV *iv_return) {
#endif
}
break;
+ case '_':
+ if (memEQ(name, "DB_DSYNC_DB", 11)) {
+ /* ^ */
+#ifdef DB_DSYNC_DB
+ *iv_return = DB_DSYNC_DB;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
}
return PERL_constant_NOTFOUND;
}
@@ -1577,79 +1607,78 @@ constant_13 (pTHX_ const char *name, IV *iv_return) {
DB_DONOTINDEX DB_ENV_CREATE DB_ENV_NOMMAP DB_ENV_THREAD DB_FREE_SPACE
DB_HASHOLDVER DB_INCOMPLETE DB_INIT_MPOOL DB_LOCK_ABORT DB_LOCK_NORUN
DB_LOCK_RIW_N DB_LOCK_TRADE DB_LOGVERSION DB_LOG_CHKPNT DB_LOG_COMMIT
- DB_LOG_LOCKED DB_LOG_NOCOPY DB_LOG_RESEND DB_MPOOL_FREE DB_MPOOL_LAST
- DB_MUTEXDEBUG DB_MUTEXLOCKS DB_NEXT_NODUP DB_NOORDERCHK DB_PREV_NODUP
- DB_PR_HEADERS DB_QAMVERSION DB_RDWRMASTER DB_REGISTERED DB_REP_CLIENT
- DB_REP_CREATE DB_REP_IGNORE DB_REP_ISPERM DB_REP_MASTER DB_SEQUENTIAL
- DB_STAT_CLEAR DB_SYSTEM_MEM DB_TXNVERSION DB_TXN_NOSYNC DB_TXN_NOWAIT
- DB_VERIFY_BAD DB_debug_FLAG DB_user_BEGIN REP_CONF_BULK */
- /* Offset 8 gives the best switch position. */
- switch (name[8]) {
+ DB_LOG_LOCKED DB_LOG_NOCOPY DB_LOG_RESEND DB_MPOOL_EDIT DB_MPOOL_FREE
+ DB_MPOOL_LAST DB_MUTEXDEBUG DB_MUTEXLOCKS DB_NEXT_NODUP DB_NOORDERCHK
+ DB_PREV_NODUP DB_PR_HEADERS DB_QAMVERSION DB_RDWRMASTER DB_REGISTERED
+ DB_REP_CLIENT DB_REP_CREATE DB_REP_IGNORE DB_REP_ISPERM DB_REP_MASTER
+ DB_SEQUENTIAL DB_SPARE_FLAG DB_STAT_CLEAR DB_SYSTEM_MEM DB_TXNVERSION
+ DB_TXN_NOSYNC DB_TXN_NOWAIT DB_VERIFY_BAD DB_debug_FLAG DB_user_BEGIN */
+ /* Offset 5 gives the best switch position. */
+ switch (name[5]) {
case 'A':
- if (memEQ(name, "DB_LOCK_ABORT", 13)) {
- /* ^ */
-#ifdef DB_LOCK_ABORT
- *iv_return = DB_LOCK_ABORT;
+ if (memEQ(name, "DB_SPARE_FLAG", 13)) {
+ /* ^ */
+#ifdef DB_SPARE_FLAG
+ *iv_return = DB_SPARE_FLAG;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
- if (memEQ(name, "DB_PR_HEADERS", 13)) {
- /* ^ */
-#ifdef DB_PR_HEADERS
- *iv_return = DB_PR_HEADERS;
+ if (memEQ(name, "DB_STAT_CLEAR", 13)) {
+ /* ^ */
+#ifdef DB_STAT_CLEAR
+ *iv_return = DB_STAT_CLEAR;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
- if (memEQ(name, "DB_RDWRMASTER", 13)) {
- /* ^ */
-#ifdef DB_RDWRMASTER
- *iv_return = DB_RDWRMASTER;
+ break;
+ case 'C':
+ if (memEQ(name, "DB_INCOMPLETE", 13)) {
+ /* ^ */
+#ifdef DB_INCOMPLETE
+ *iv_return = DB_INCOMPLETE;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
- if (memEQ(name, "DB_REP_MASTER", 13)) {
- /* ^ */
-#ifdef DB_REP_MASTER
- *iv_return = DB_REP_MASTER;
+ if (memEQ(name, "DB_LOCK_ABORT", 13)) {
+ /* ^ */
+#ifdef DB_LOCK_ABORT
+ *iv_return = DB_LOCK_ABORT;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
- break;
- case 'B':
- if (memEQ(name, "DB_user_BEGIN", 13)) {
- /* ^ */
-#ifdef DB_user_BEGIN
- *iv_return = DB_user_BEGIN;
+ if (memEQ(name, "DB_LOCK_NORUN", 13)) {
+ /* ^ */
+#ifdef DB_LOCK_NORUN
+ *iv_return = DB_LOCK_NORUN;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
- break;
- case 'C':
- if (memEQ(name, "DB_STAT_CLEAR", 13)) {
- /* ^ */
-#ifdef DB_STAT_CLEAR
- *iv_return = DB_STAT_CLEAR;
+ if (memEQ(name, "DB_LOCK_RIW_N", 13)) {
+ /* ^ */
+#ifdef DB_LOCK_RIW_N
+ *iv_return = DB_LOCK_RIW_N;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
- break;
- case 'D':
- if (memEQ(name, "DB_MUTEXDEBUG", 13)) {
- /* ^ */
-#ifdef DB_MUTEXDEBUG
- *iv_return = DB_MUTEXDEBUG;
+ if (memEQ(name, "DB_LOCK_TRADE", 13)) {
+ /* ^ */
+#if (DB_VERSION_MAJOR > 4) || \
+ (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR > 1) || \
+ (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR == 1 && \
+ DB_VERSION_PATCH >= 24)
+ *iv_return = DB_LOCK_TRADE;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
@@ -1657,19 +1686,28 @@ constant_13 (pTHX_ const char *name, IV *iv_return) {
}
break;
case 'E':
- if (memEQ(name, "DB_LOG_RESEND", 13)) {
- /* ^ */
-#ifdef DB_LOG_RESEND
- *iv_return = DB_LOG_RESEND;
+ if (memEQ(name, "DB_CHECKPOINT", 13)) {
+ /* ^ */
+#ifdef DB_CHECKPOINT
+ *iv_return = DB_CHECKPOINT;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
- if (memEQ(name, "DB_NOORDERCHK", 13)) {
- /* ^ */
-#ifdef DB_NOORDERCHK
- *iv_return = DB_NOORDERCHK;
+ if (memEQ(name, "DB_FREE_SPACE", 13)) {
+ /* ^ */
+#ifdef DB_FREE_SPACE
+ *iv_return = DB_FREE_SPACE;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ if (memEQ(name, "DB_PREV_NODUP", 13)) {
+ /* ^ */
+#ifdef DB_PREV_NODUP
+ *iv_return = DB_PREV_NODUP;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
@@ -1677,28 +1715,26 @@ constant_13 (pTHX_ const char *name, IV *iv_return) {
}
break;
case 'G':
- if (memEQ(name, "DB_REP_IGNORE", 13)) {
- /* ^ */
-#ifdef DB_REP_IGNORE
- *iv_return = DB_REP_IGNORE;
+ if (memEQ(name, "DB_AGGRESSIVE", 13)) {
+ /* ^ */
+#ifdef DB_AGGRESSIVE
+ *iv_return = DB_AGGRESSIVE;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
- break;
- case 'H':
- if (memEQ(name, "DB_ENV_THREAD", 13)) {
- /* ^ */
-#ifdef DB_ENV_THREAD
- *iv_return = DB_ENV_THREAD;
+ if (memEQ(name, "DB_LOGVERSION", 13)) {
+ /* ^ */
+#ifdef DB_LOGVERSION
+ *iv_return = DB_LOGVERSION;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
if (memEQ(name, "DB_LOG_CHKPNT", 13)) {
- /* ^ */
+ /* ^ */
#ifdef DB_LOG_CHKPNT
*iv_return = DB_LOG_CHKPNT;
return PERL_constant_ISIV;
@@ -1706,59 +1742,55 @@ constant_13 (pTHX_ const char *name, IV *iv_return) {
return PERL_constant_NOTDEF;
#endif
}
- break;
- case 'I':
- if (memEQ(name, "DB_DONOTINDEX", 13)) {
- /* ^ */
-#ifdef DB_DONOTINDEX
- *iv_return = DB_DONOTINDEX;
+ if (memEQ(name, "DB_LOG_COMMIT", 13)) {
+ /* ^ */
+#ifdef DB_LOG_COMMIT
+ *iv_return = DB_LOG_COMMIT;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
- break;
- case 'L':
- if (memEQ(name, "DB_HASHOLDVER", 13)) {
- /* ^ */
-#ifdef DB_HASHOLDVER
- *iv_return = DB_HASHOLDVER;
+ if (memEQ(name, "DB_LOG_LOCKED", 13)) {
+ /* ^ */
+#ifdef DB_LOG_LOCKED
+ *iv_return = DB_LOG_LOCKED;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
- if (memEQ(name, "DB_MUTEXLOCKS", 13)) {
- /* ^ */
-#ifdef DB_MUTEXLOCKS
- *iv_return = DB_MUTEXLOCKS;
+ if (memEQ(name, "DB_LOG_NOCOPY", 13)) {
+ /* ^ */
+#ifdef DB_LOG_NOCOPY
+ *iv_return = DB_LOG_NOCOPY;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
- if (memEQ(name, "DB_REP_CLIENT", 13)) {
- /* ^ */
-#ifdef DB_REP_CLIENT
- *iv_return = DB_REP_CLIENT;
+ if (memEQ(name, "DB_LOG_RESEND", 13)) {
+ /* ^ */
+#ifdef DB_LOG_RESEND
+ *iv_return = DB_LOG_RESEND;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
- break;
- case 'M':
- if (memEQ(name, "DB_BTREEMAGIC", 13)) {
- /* ^ */
-#ifdef DB_BTREEMAGIC
- *iv_return = DB_BTREEMAGIC;
+ if (memEQ(name, "DB_REGISTERED", 13)) {
+ /* ^ */
+#ifdef DB_REGISTERED
+ *iv_return = DB_REGISTERED;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
+ break;
+ case 'I':
if (memEQ(name, "DB_INIT_MPOOL", 13)) {
- /* ^ */
+ /* ^ */
#ifdef DB_INIT_MPOOL
*iv_return = DB_INIT_MPOOL;
return PERL_constant_ISIV;
@@ -1766,10 +1798,12 @@ constant_13 (pTHX_ const char *name, IV *iv_return) {
return PERL_constant_NOTDEF;
#endif
}
- if (memEQ(name, "DB_SYSTEM_MEM", 13)) {
- /* ^ */
-#ifdef DB_SYSTEM_MEM
- *iv_return = DB_SYSTEM_MEM;
+ break;
+ case 'M':
+ if (memEQ(name, "DB_QAMVERSION", 13)) {
+ /* ^ */
+#ifdef DB_QAMVERSION
+ *iv_return = DB_QAMVERSION;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
@@ -1777,37 +1811,37 @@ constant_13 (pTHX_ const char *name, IV *iv_return) {
}
break;
case 'N':
- if (memEQ(name, "DB_LOCK_NORUN", 13)) {
- /* ^ */
-#ifdef DB_LOCK_NORUN
- *iv_return = DB_LOCK_NORUN;
+ if (memEQ(name, "DB_DONOTINDEX", 13)) {
+ /* ^ */
+#ifdef DB_DONOTINDEX
+ *iv_return = DB_DONOTINDEX;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
- if (memEQ(name, "DB_NEXT_NODUP", 13)) {
- /* ^ */
-#ifdef DB_NEXT_NODUP
- *iv_return = DB_NEXT_NODUP;
+ if (memEQ(name, "DB_TXNVERSION", 13)) {
+ /* ^ */
+#ifdef DB_TXNVERSION
+ *iv_return = DB_TXNVERSION;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
- if (memEQ(name, "DB_PREV_NODUP", 13)) {
- /* ^ */
-#ifdef DB_PREV_NODUP
- *iv_return = DB_PREV_NODUP;
+ if (memEQ(name, "DB_TXN_NOSYNC", 13)) {
+ /* ^ */
+#ifdef DB_TXN_NOSYNC
+ *iv_return = DB_TXN_NOSYNC;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
- if (memEQ(name, "DB_SEQUENTIAL", 13)) {
- /* ^ */
-#ifdef DB_SEQUENTIAL
- *iv_return = DB_SEQUENTIAL;
+ if (memEQ(name, "DB_TXN_NOWAIT", 13)) {
+ /* ^ */
+#ifdef DB_TXN_NOWAIT
+ *iv_return = DB_TXN_NOWAIT;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
@@ -1815,131 +1849,133 @@ constant_13 (pTHX_ const char *name, IV *iv_return) {
}
break;
case 'O':
- if (memEQ(name, "DB_ENV_NOMMAP", 13)) {
- /* ^ */
-#ifdef DB_ENV_NOMMAP
- *iv_return = DB_ENV_NOMMAP;
+ if (memEQ(name, "DB_MPOOL_EDIT", 13)) {
+ /* ^ */
+#ifdef DB_MPOOL_EDIT
+ *iv_return = DB_MPOOL_EDIT;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
- if (memEQ(name, "DB_LOG_COMMIT", 13)) {
- /* ^ */
-#ifdef DB_LOG_COMMIT
- *iv_return = DB_LOG_COMMIT;
+ if (memEQ(name, "DB_MPOOL_FREE", 13)) {
+ /* ^ */
+#ifdef DB_MPOOL_FREE
+ *iv_return = DB_MPOOL_FREE;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
- if (memEQ(name, "DB_LOG_LOCKED", 13)) {
- /* ^ */
-#ifdef DB_LOG_LOCKED
- *iv_return = DB_LOG_LOCKED;
+ if (memEQ(name, "DB_MPOOL_LAST", 13)) {
+ /* ^ */
+#ifdef DB_MPOOL_LAST
+ *iv_return = DB_MPOOL_LAST;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
- if (memEQ(name, "DB_LOG_NOCOPY", 13)) {
- /* ^ */
-#ifdef DB_LOG_NOCOPY
- *iv_return = DB_LOG_NOCOPY;
+ if (memEQ(name, "DB_NOORDERCHK", 13)) {
+ /* ^ */
+#ifdef DB_NOORDERCHK
+ *iv_return = DB_NOORDERCHK;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
- if (memEQ(name, "DB_TXN_NOSYNC", 13)) {
- /* ^ */
-#ifdef DB_TXN_NOSYNC
- *iv_return = DB_TXN_NOSYNC;
+ break;
+ case 'P':
+ if (memEQ(name, "DB_REP_CLIENT", 13)) {
+ /* ^ */
+#ifdef DB_REP_CLIENT
+ *iv_return = DB_REP_CLIENT;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
- if (memEQ(name, "DB_TXN_NOWAIT", 13)) {
- /* ^ */
-#ifdef DB_TXN_NOWAIT
- *iv_return = DB_TXN_NOWAIT;
+ if (memEQ(name, "DB_REP_CREATE", 13)) {
+ /* ^ */
+#ifdef DB_REP_CREATE
+ *iv_return = DB_REP_CREATE;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
- break;
- case 'P':
- if (memEQ(name, "DB_CHECKPOINT", 13)) {
- /* ^ */
-#ifdef DB_CHECKPOINT
- *iv_return = DB_CHECKPOINT;
+ if (memEQ(name, "DB_REP_IGNORE", 13)) {
+ /* ^ */
+#ifdef DB_REP_IGNORE
+ *iv_return = DB_REP_IGNORE;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
- if (memEQ(name, "DB_INCOMPLETE", 13)) {
- /* ^ */
-#ifdef DB_INCOMPLETE
- *iv_return = DB_INCOMPLETE;
+ if (memEQ(name, "DB_REP_ISPERM", 13)) {
+ /* ^ */
+#ifdef DB_REP_ISPERM
+ *iv_return = DB_REP_ISPERM;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
- break;
- case 'R':
- if (memEQ(name, "DB_ENV_CREATE", 13)) {
- /* ^ */
-#ifdef DB_ENV_CREATE
- *iv_return = DB_ENV_CREATE;
+ if (memEQ(name, "DB_REP_MASTER", 13)) {
+ /* ^ */
+#ifdef DB_REP_MASTER
+ *iv_return = DB_REP_MASTER;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
- if (memEQ(name, "DB_LOCK_RIW_N", 13)) {
- /* ^ */
-#ifdef DB_LOCK_RIW_N
- *iv_return = DB_LOCK_RIW_N;
+ break;
+ case 'Q':
+ if (memEQ(name, "DB_SEQUENTIAL", 13)) {
+ /* ^ */
+#ifdef DB_SEQUENTIAL
+ *iv_return = DB_SEQUENTIAL;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
- if (memEQ(name, "DB_LOGVERSION", 13)) {
- /* ^ */
-#ifdef DB_LOGVERSION
- *iv_return = DB_LOGVERSION;
+ break;
+ case 'R':
+ if (memEQ(name, "DB_BTREEMAGIC", 13)) {
+ /* ^ */
+#ifdef DB_BTREEMAGIC
+ *iv_return = DB_BTREEMAGIC;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
- if (memEQ(name, "DB_QAMVERSION", 13)) {
- /* ^ */
-#ifdef DB_QAMVERSION
- *iv_return = DB_QAMVERSION;
+ if (memEQ(name, "DB_DIRECT_LOG", 13)) {
+ /* ^ */
+#ifdef DB_DIRECT_LOG
+ *iv_return = DB_DIRECT_LOG;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
- if (memEQ(name, "DB_REP_CREATE", 13)) {
- /* ^ */
-#ifdef DB_REP_CREATE
- *iv_return = DB_REP_CREATE;
+ if (memEQ(name, "DB_DIRTY_READ", 13)) {
+ /* ^ */
+#ifdef DB_DIRTY_READ
+ *iv_return = DB_DIRTY_READ;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
- if (memEQ(name, "DB_TXNVERSION", 13)) {
- /* ^ */
-#ifdef DB_TXNVERSION
- *iv_return = DB_TXNVERSION;
+ if (memEQ(name, "DB_VERIFY_BAD", 13)) {
+ /* ^ */
+#ifdef DB_VERIFY_BAD
+ *iv_return = DB_VERIFY_BAD;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
@@ -1947,107 +1983,110 @@ constant_13 (pTHX_ const char *name, IV *iv_return) {
}
break;
case 'S':
- if (memEQ(name, "DB_AGGRESSIVE", 13)) {
- /* ^ */
-#ifdef DB_AGGRESSIVE
- *iv_return = DB_AGGRESSIVE;
+ if (memEQ(name, "DB_HASHOLDVER", 13)) {
+ /* ^ */
+#ifdef DB_HASHOLDVER
+ *iv_return = DB_HASHOLDVER;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
- if (memEQ(name, "DB_FREE_SPACE", 13)) {
- /* ^ */
-#ifdef DB_FREE_SPACE
- *iv_return = DB_FREE_SPACE;
+ if (memEQ(name, "DB_SYSTEM_MEM", 13)) {
+ /* ^ */
+#ifdef DB_SYSTEM_MEM
+ *iv_return = DB_SYSTEM_MEM;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
- if (memEQ(name, "DB_REP_ISPERM", 13)) {
- /* ^ */
-#ifdef DB_REP_ISPERM
- *iv_return = DB_REP_ISPERM;
+ break;
+ case 'T':
+ if (memEQ(name, "DB_MUTEXDEBUG", 13)) {
+ /* ^ */
+#ifdef DB_MUTEXDEBUG
+ *iv_return = DB_MUTEXDEBUG;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
- break;
- case 'T':
- if (memEQ(name, "DB_DIRECT_LOG", 13)) {
- /* ^ */
-#ifdef DB_DIRECT_LOG
- *iv_return = DB_DIRECT_LOG;
+ if (memEQ(name, "DB_MUTEXLOCKS", 13)) {
+ /* ^ */
+#ifdef DB_MUTEXLOCKS
+ *iv_return = DB_MUTEXLOCKS;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
- if (memEQ(name, "DB_LOCK_TRADE", 13)) {
- /* ^ */
-#if (DB_VERSION_MAJOR > 4) || \
- (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR > 1) || \
- (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR == 1 && \
- DB_VERSION_PATCH >= 24)
- *iv_return = DB_LOCK_TRADE;
+ break;
+ case 'V':
+ if (memEQ(name, "DB_ENV_CREATE", 13)) {
+ /* ^ */
+#ifdef DB_ENV_CREATE
+ *iv_return = DB_ENV_CREATE;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
- if (memEQ(name, "DB_REGISTERED", 13)) {
- /* ^ */
-#ifdef DB_REGISTERED
- *iv_return = DB_REGISTERED;
+ if (memEQ(name, "DB_ENV_NOMMAP", 13)) {
+ /* ^ */
+#ifdef DB_ENV_NOMMAP
+ *iv_return = DB_ENV_NOMMAP;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
- break;
- case 'Y':
- if (memEQ(name, "DB_VERIFY_BAD", 13)) {
- /* ^ */
-#ifdef DB_VERIFY_BAD
- *iv_return = DB_VERIFY_BAD;
+ if (memEQ(name, "DB_ENV_THREAD", 13)) {
+ /* ^ */
+#ifdef DB_ENV_THREAD
+ *iv_return = DB_ENV_THREAD;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
break;
- case '_':
- if (memEQ(name, "DB_DIRTY_READ", 13)) {
- /* ^ */
-#ifdef DB_DIRTY_READ
- *iv_return = DB_DIRTY_READ;
+ case 'W':
+ if (memEQ(name, "DB_RDWRMASTER", 13)) {
+ /* ^ */
+#ifdef DB_RDWRMASTER
+ *iv_return = DB_RDWRMASTER;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
- if (memEQ(name, "DB_MPOOL_FREE", 13)) {
- /* ^ */
-#ifdef DB_MPOOL_FREE
- *iv_return = DB_MPOOL_FREE;
+ break;
+ case 'X':
+ if (memEQ(name, "DB_NEXT_NODUP", 13)) {
+ /* ^ */
+#ifdef DB_NEXT_NODUP
+ *iv_return = DB_NEXT_NODUP;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
- if (memEQ(name, "DB_MPOOL_LAST", 13)) {
- /* ^ */
-#ifdef DB_MPOOL_LAST
- *iv_return = DB_MPOOL_LAST;
+ break;
+ case '_':
+ if (memEQ(name, "DB_PR_HEADERS", 13)) {
+ /* ^ */
+#ifdef DB_PR_HEADERS
+ *iv_return = DB_PR_HEADERS;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
+ break;
+ case 'b':
if (memEQ(name, "DB_debug_FLAG", 13)) {
- /* ^ */
+ /* ^ */
#ifdef DB_debug_FLAG
*iv_return = DB_debug_FLAG;
return PERL_constant_ISIV;
@@ -2055,10 +2094,12 @@ constant_13 (pTHX_ const char *name, IV *iv_return) {
return PERL_constant_NOTDEF;
#endif
}
- if (memEQ(name, "REP_CONF_BULK", 13)) {
- /* ^ */
-#ifdef REP_CONF_BULK
- *iv_return = REP_CONF_BULK;
+ break;
+ case 'e':
+ if (memEQ(name, "DB_user_BEGIN", 13)) {
+ /* ^ */
+#ifdef DB_user_BEGIN
+ *iv_return = DB_user_BEGIN;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
@@ -2075,15 +2116,15 @@ constant_14 (pTHX_ const char *name, IV *iv_return) {
here. However, subsequent manual editing may have added or removed some.
DB_ARCH_REMOVE DB_AUTO_COMMIT DB_BTREEOLDVER DB_CHKSUM_SHA1 DB_EID_INVALID
DB_ENCRYPT_AES DB_ENV_APPINIT DB_ENV_DBLOCAL DB_ENV_LOCKING DB_ENV_LOGGING
- DB_ENV_NOPANIC DB_ENV_PRIVATE DB_FILE_ID_LEN DB_HANDLE_LOCK DB_HASHVERSION
- DB_JOIN_NOSORT DB_LOCKVERSION DB_LOCK_EXPIRE DB_LOCK_NOWAIT DB_LOCK_OLDEST
- DB_LOCK_RANDOM DB_LOCK_RECORD DB_LOCK_REMOVE DB_LOCK_SWITCH DB_MAX_RECORDS
- DB_MPOOL_CLEAN DB_MPOOL_DIRTY DB_NOOVERWRITE DB_NOSERVER_ID DB_ODDFILESIZE
- DB_OLD_VERSION DB_OPEN_CALLED DB_RECORDCOUNT DB_RECORD_LOCK DB_REGION_ANON
- DB_REGION_INIT DB_REGION_NAME DB_RENAMEMAGIC DB_REP_BULKOVF DB_REP_EGENCHG
- DB_REP_LOCKOUT DB_REP_NEWSITE DB_REP_NOTPERM DB_REP_UNAVAIL DB_REVSPLITOFF
- DB_RUNRECOVERY DB_SEQ_WRAPPED DB_SET_TXN_NOW DB_USE_ENVIRON DB_WRITECURSOR
- DB_XIDDATASIZE */
+ DB_ENV_NOPANIC DB_ENV_PRIVATE DB_EVENT_PANIC DB_FILE_ID_LEN DB_HANDLE_LOCK
+ DB_HASHVERSION DB_JOIN_NOSORT DB_LOCKVERSION DB_LOCK_EXPIRE DB_LOCK_NOWAIT
+ DB_LOCK_OLDEST DB_LOCK_RANDOM DB_LOCK_RECORD DB_LOCK_REMOVE DB_LOCK_SWITCH
+ DB_MAX_RECORDS DB_MPOOL_CLEAN DB_MPOOL_DIRTY DB_NOOVERWRITE DB_NOSERVER_ID
+ DB_ODDFILESIZE DB_OLD_VERSION DB_OPEN_CALLED DB_RECORDCOUNT DB_RECORD_LOCK
+ DB_REGION_ANON DB_REGION_INIT DB_REGION_NAME DB_RENAMEMAGIC DB_REPMGR_PEER
+ DB_REP_BULKOVF DB_REP_EGENCHG DB_REP_LOCKOUT DB_REP_NEWSITE DB_REP_NOTPERM
+ DB_REP_UNAVAIL DB_REVSPLITOFF DB_RUNRECOVERY DB_SEQ_WRAPPED DB_SET_TXN_NOW
+ DB_USE_ENVIRON DB_WRITECURSOR DB_XIDDATASIZE */
/* Offset 9 gives the best switch position. */
switch (name[9]) {
case 'A':
@@ -2404,6 +2445,15 @@ constant_14 (pTHX_ const char *name, IV *iv_return) {
return PERL_constant_NOTDEF;
#endif
}
+ if (memEQ(name, "DB_EVENT_PANIC", 14)) {
+ /* ^ */
+#ifdef DB_EVENT_PANIC
+ *iv_return = DB_EVENT_PANIC;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
break;
case 'R':
if (memEQ(name, "DB_HASHVERSION", 14)) {
@@ -2580,6 +2630,15 @@ constant_14 (pTHX_ const char *name, IV *iv_return) {
return PERL_constant_NOTDEF;
#endif
}
+ if (memEQ(name, "DB_REPMGR_PEER", 14)) {
+ /* ^ */
+#ifdef DB_REPMGR_PEER
+ *iv_return = DB_REPMGR_PEER;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
break;
}
return PERL_constant_NOTFOUND;
@@ -2589,19 +2648,41 @@ static int
constant_15 (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_APPLY_LOGREG DB_BTREEVERSION DB_BUFFER_SMALL DB_CONSUME_WAIT
- DB_ENV_LOCKDOWN DB_ENV_PANIC_OK DB_ENV_YIELDCPU DB_LOCK_DEFAULT
- DB_LOCK_INHERIT DB_LOCK_NOTHELD DB_LOCK_PUT_ALL DB_LOCK_PUT_OBJ
- DB_LOCK_TIMEOUT DB_LOCK_UPGRADE DB_LOG_INMEMORY DB_LOG_WRNOSYNC
- DB_MPOOL_CREATE DB_MPOOL_EXTENT DB_MPOOL_NOFILE DB_MPOOL_UNLINK
- DB_MULTIPLE_KEY DB_MUTEX_THREAD DB_OPFLAGS_MASK DB_ORDERCHKONLY
- DB_PRIORITY_LOW DB_REGION_MAGIC DB_REP_ANYWHERE DB_REP_LOGREADY
- DB_REP_LOGSONLY DB_REP_NOBUFFER DB_REP_OUTDATED DB_REP_PAGEDONE
- DB_SURPRISE_KID DB_TEST_POSTLOG DB_TEST_PREOPEN DB_TXN_LOCK_2PL
- DB_TXN_LOG_MASK DB_TXN_LOG_REDO DB_TXN_LOG_UNDO DB_VERIFY_FATAL
- REP_CONF_NOWAIT */
+ DB_APPLY_LOGREG DB_BTREEVERSION DB_BUFFER_SMALL DB_CKP_INTERNAL
+ DB_CONSUME_WAIT DB_ENV_DSYNC_DB DB_ENV_LOCKDOWN DB_ENV_PANIC_OK
+ DB_ENV_YIELDCPU DB_IGNORE_LEASE DB_LOCK_DEFAULT DB_LOCK_INHERIT
+ DB_LOCK_NOTHELD DB_LOCK_PUT_ALL DB_LOCK_PUT_OBJ DB_LOCK_TIMEOUT
+ DB_LOCK_UPGRADE DB_LOG_INMEMORY DB_LOG_WRNOSYNC DB_MPOOL_CREATE
+ DB_MPOOL_EXTENT DB_MPOOL_NOFILE DB_MPOOL_UNLINK DB_MULTIPLE_KEY
+ DB_MULTIVERSION DB_MUTEX_LOCKED DB_MUTEX_THREAD DB_OPFLAGS_MASK
+ DB_ORDERCHKONLY DB_PRIORITY_LOW DB_REGION_MAGIC DB_REP_ANYWHERE
+ DB_REP_ELECTION DB_REP_LOGREADY DB_REP_LOGSONLY DB_REP_NOBUFFER
+ DB_REP_OUTDATED DB_REP_PAGEDONE DB_STAT_NOERROR DB_SURPRISE_KID
+ DB_TEST_POSTLOG DB_TEST_PREOPEN DB_TEST_RECYCLE DB_TXN_LOCK_2PL
+ DB_TXN_LOG_MASK DB_TXN_LOG_REDO DB_TXN_LOG_UNDO DB_TXN_SNAPSHOT
+ DB_VERB_FILEOPS DB_VERIFY_FATAL */
/* Offset 10 gives the best switch position. */
switch (name[10]) {
+ case 'C':
+ if (memEQ(name, "DB_REP_ELECTION", 15)) {
+ /* ^ */
+#ifdef DB_REP_ELECTION
+ *iv_return = DB_REP_ELECTION;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ if (memEQ(name, "DB_TEST_RECYCLE", 15)) {
+ /* ^ */
+#ifdef DB_TEST_RECYCLE
+ *iv_return = DB_TEST_RECYCLE;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
case 'D':
if (memEQ(name, "DB_REP_OUTDATED", 15)) {
/* ^ */
@@ -2614,6 +2695,15 @@ constant_15 (pTHX_ const char *name, IV *iv_return) {
}
break;
case 'E':
+ if (memEQ(name, "DB_CKP_INTERNAL", 15)) {
+ /* ^ */
+#ifdef DB_CKP_INTERNAL
+ *iv_return = DB_CKP_INTERNAL;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
if (memEQ(name, "DB_LOG_INMEMORY", 15)) {
/* ^ */
#ifdef DB_LOG_INMEMORY
@@ -2641,6 +2731,15 @@ constant_15 (pTHX_ const char *name, IV *iv_return) {
return PERL_constant_NOTDEF;
#endif
}
+ if (memEQ(name, "DB_STAT_NOERROR", 15)) {
+ /* ^ */
+#ifdef DB_STAT_NOERROR
+ *iv_return = DB_STAT_NOERROR;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
if (memEQ(name, "DB_SURPRISE_KID", 15)) {
/* ^ */
#ifdef DB_SURPRISE_KID
@@ -2764,6 +2863,24 @@ constant_15 (pTHX_ const char *name, IV *iv_return) {
return PERL_constant_NOTDEF;
#endif
}
+ if (memEQ(name, "DB_IGNORE_LEASE", 15)) {
+ /* ^ */
+#ifdef DB_IGNORE_LEASE
+ *iv_return = DB_IGNORE_LEASE;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ if (memEQ(name, "DB_VERB_FILEOPS", 15)) {
+ /* ^ */
+#ifdef DB_VERB_FILEOPS
+ *iv_return = DB_VERB_FILEOPS;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
break;
case 'M':
if (memEQ(name, "DB_LOCK_TIMEOUT", 15)) {
@@ -2789,6 +2906,15 @@ constant_15 (pTHX_ const char *name, IV *iv_return) {
}
break;
case 'N':
+ if (memEQ(name, "DB_ENV_DSYNC_DB", 15)) {
+ /* ^ */
+#ifdef DB_ENV_DSYNC_DB
+ *iv_return = DB_ENV_DSYNC_DB;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
if (memEQ(name, "DB_MPOOL_UNLINK", 15)) {
/* ^ */
#ifdef DB_MPOOL_UNLINK
@@ -2827,10 +2953,21 @@ constant_15 (pTHX_ const char *name, IV *iv_return) {
return PERL_constant_NOTDEF;
#endif
}
- if (memEQ(name, "REP_CONF_NOWAIT", 15)) {
+ if (memEQ(name, "DB_MUTEX_LOCKED", 15)) {
/* ^ */
-#ifdef REP_CONF_NOWAIT
- *iv_return = REP_CONF_NOWAIT;
+#ifdef DB_MUTEX_LOCKED
+ *iv_return = DB_MUTEX_LOCKED;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ case 'P':
+ if (memEQ(name, "DB_TXN_SNAPSHOT", 15)) {
+ /* ^ */
+#ifdef DB_TXN_SNAPSHOT
+ *iv_return = DB_TXN_SNAPSHOT;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
@@ -2856,6 +2993,15 @@ constant_15 (pTHX_ const char *name, IV *iv_return) {
return PERL_constant_NOTDEF;
#endif
}
+ if (memEQ(name, "DB_MULTIVERSION", 15)) {
+ /* ^ */
+#ifdef DB_MULTIVERSION
+ *iv_return = DB_MULTIVERSION;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
if (memEQ(name, "DB_REP_LOGREADY", 15)) {
/* ^ */
#ifdef DB_REP_LOGREADY
@@ -3039,11 +3185,12 @@ constant_16 (pTHX_ const char *name, IV *iv_return) {
DB_LOCK_MAXWRITE DB_LOCK_MINLOCKS DB_LOCK_MINWRITE DB_LOCK_NOTEXIST
DB_LOCK_PUT_READ DB_LOCK_YOUNGEST DB_LOGC_BUF_SIZE DB_MPOOL_DISCARD
DB_MPOOL_PRIVATE DB_NOSERVER_HOME DB_PAGE_NOTFOUND DB_PRIORITY_HIGH
- DB_RECOVER_FATAL DB_REP_DUPMASTER DB_REP_NEWMASTER DB_REP_PERMANENT
- DB_REP_REREQUEST DB_SECONDARY_BAD DB_SEQ_RANGE_SET DB_TEST_POSTOPEN
- DB_TEST_POSTSYNC DB_TXN_LOCK_MASK DB_TXN_OPENFILES DB_VERB_CHKPOINT
- DB_VERB_DEADLOCK DB_VERB_RECOVERY DB_VERB_REGISTER DB_VERB_WAITSFOR
- DB_VERSION_MAJOR DB_VERSION_MINOR DB_VERSION_PATCH DB_VRFY_FLAGMASK */
+ DB_RECOVER_FATAL DB_REPFLAGS_MASK DB_REP_CONF_BULK DB_REP_DUPMASTER
+ DB_REP_NEWMASTER DB_REP_PERMANENT DB_REP_REREQUEST DB_SECONDARY_BAD
+ DB_SEQ_RANGE_SET DB_TEST_POSTOPEN DB_TEST_POSTSYNC DB_TXN_LOCK_MASK
+ DB_TXN_OPENFILES DB_VERB_CHKPOINT DB_VERB_DEADLOCK DB_VERB_RECOVERY
+ DB_VERB_REGISTER DB_VERB_WAITSFOR DB_VERSION_MAJOR DB_VERSION_MINOR
+ DB_VERSION_PATCH DB_VRFY_FLAGMASK */
/* Offset 10 gives the best switch position. */
switch (name[10]) {
case 'A':
@@ -3143,6 +3290,15 @@ constant_16 (pTHX_ const char *name, IV *iv_return) {
return PERL_constant_NOTDEF;
#endif
}
+ if (memEQ(name, "DB_REP_CONF_BULK", 16)) {
+ /* ^ */
+#ifdef DB_REP_CONF_BULK
+ *iv_return = DB_REP_CONF_BULK;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
break;
case 'G':
if (memEQ(name, "DB_SEQ_RANGE_SET", 16)) {
@@ -3362,6 +3518,15 @@ constant_16 (pTHX_ const char *name, IV *iv_return) {
}
break;
case 'S':
+ if (memEQ(name, "DB_REPFLAGS_MASK", 16)) {
+ /* ^ */
+#ifdef DB_REPFLAGS_MASK
+ *iv_return = DB_REPFLAGS_MASK;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
if (memEQ(name, "DB_TEST_POSTOPEN", 16)) {
/* ^ */
#ifdef DB_TEST_POSTOPEN
@@ -3532,11 +3697,11 @@ constant_17 (pTHX_ const char *name, IV *iv_return, const char **pv_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_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_AUTOREMOVE DB_LOG_SILENT_ERR DB_NO_AUTO_COMMIT DB_READ_COMMITTED
- DB_RPC_SERVERPROG DB_RPC_SERVERVERS DB_STAT_LOCK_CONF DB_STAT_MEMP_HASH
- DB_STAT_SUBSYSTEM DB_TEST_ELECTINIT DB_TEST_ELECTSEND DB_TEST_PRERENAME
- DB_TXN_POPENFILES DB_VERSION_STRING REP_CONF_AUTOINIT */
+ DB_ENV_SYSTEM_MEM DB_ENV_TXN_NOSYNC DB_ENV_TXN_NOWAIT DB_ENV_USER_ALLOC
+ DB_GET_BOTH_RANGE DB_LOG_AUTOREMOVE DB_LOG_SILENT_ERR DB_NO_AUTO_COMMIT
+ DB_READ_COMMITTED DB_RPC_SERVERPROG DB_RPC_SERVERVERS DB_STAT_LOCK_CONF
+ DB_STAT_MEMP_HASH DB_STAT_SUBSYSTEM DB_TEST_ELECTINIT DB_TEST_ELECTSEND
+ DB_TEST_PRERENAME DB_TXN_POPENFILES DB_VERSION_STRING */
/* Offset 13 gives the best switch position. */
switch (name[13]) {
case 'A':
@@ -3603,15 +3768,6 @@ constant_17 (pTHX_ const char *name, IV *iv_return, const char **pv_return) {
return PERL_constant_NOTDEF;
#endif
}
- if (memEQ(name, "REP_CONF_AUTOINIT", 17)) {
- /* ^ */
-#ifdef REP_CONF_AUTOINIT
- *iv_return = REP_CONF_AUTOINIT;
- return PERL_constant_ISIV;
-#else
- return PERL_constant_NOTDEF;
-#endif
- }
break;
case 'L':
if (memEQ(name, "DB_ENV_STANDALONE", 17)) {
@@ -3746,6 +3902,17 @@ constant_17 (pTHX_ const char *name, IV *iv_return, const char **pv_return) {
#endif
}
break;
+ case 'W':
+ if (memEQ(name, "DB_ENV_TXN_NOWAIT", 17)) {
+ /* ^ */
+#ifdef DB_ENV_TXN_NOWAIT
+ *iv_return = DB_ENV_TXN_NOWAIT;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
case '_':
if (memEQ(name, "DB_ENV_DIRECT_LOG", 17)) {
/* ^ */
@@ -3784,12 +3951,14 @@ 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_DURABLE_UNKNOWN DB_ENV_AUTO_COMMIT
- DB_ENV_OPEN_CALLED DB_ENV_REGION_INIT DB_LOCK_NOTGRANTED
- DB_LOG_BUFFER_FULL DB_LOG_NOT_DURABLE DB_MPOOL_NEW_GROUP
- DB_MUTEX_ALLOCATED DB_PR_RECOVERYTEST DB_REP_HANDLE_DEAD
- DB_REP_STARTUPDONE DB_SEQUENCE_OLDVER DB_SET_TXN_TIMEOUT
- DB_TEST_ELECTVOTE1 DB_TEST_ELECTVOTE2 DB_TEST_ELECTWAIT1
- DB_TEST_ELECTWAIT2 DB_TEST_POSTRENAME DB_TEST_PREDESTROY
+ DB_ENV_OPEN_CALLED DB_ENV_REF_COUNTED DB_ENV_REGION_INIT
+ DB_LOCK_NOTGRANTED DB_LOG_BUFFER_FULL DB_LOG_NOT_DURABLE
+ DB_MPOOL_NEW_GROUP DB_MUTEX_ALLOCATED DB_PR_RECOVERYTEST
+ DB_REPMGR_ACKS_ALL DB_REPMGR_ACKS_ONE DB_REP_ACK_TIMEOUT
+ DB_REP_CONF_NOWAIT DB_REP_HANDLE_DEAD DB_REP_STARTUPDONE
+ DB_SEQUENCE_OLDVER DB_SET_TXN_TIMEOUT DB_TEST_ELECTVOTE1
+ DB_TEST_ELECTVOTE2 DB_TEST_ELECTWAIT1 DB_TEST_ELECTWAIT2
+ DB_TEST_POSTRENAME DB_TEST_PREDESTROY DB_THREADID_STRLEN
DB_TIME_NOTGRANTED DB_TXN_NOT_DURABLE */
/* Offset 13 gives the best switch position. */
switch (name[13]) {
@@ -3878,6 +4047,15 @@ constant_18 (pTHX_ const char *name, IV *iv_return) {
}
break;
case 'M':
+ if (memEQ(name, "DB_REP_ACK_TIMEOUT", 18)) {
+ /* ^ */
+#ifdef DB_REP_ACK_TIMEOUT
+ *iv_return = DB_REP_ACK_TIMEOUT;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
if (memEQ(name, "DB_SET_TXN_TIMEOUT", 18)) {
/* ^ */
#ifdef DB_SET_TXN_TIMEOUT
@@ -3907,6 +4085,15 @@ constant_18 (pTHX_ const char *name, IV *iv_return) {
return PERL_constant_NOTDEF;
#endif
}
+ if (memEQ(name, "DB_REP_CONF_NOWAIT", 18)) {
+ /* ^ */
+#ifdef DB_REP_CONF_NOWAIT
+ *iv_return = DB_REP_CONF_NOWAIT;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
break;
case 'P':
if (memEQ(name, "DB_REP_STARTUPDONE", 18)) {
@@ -3940,6 +4127,24 @@ constant_18 (pTHX_ const char *name, IV *iv_return) {
}
break;
case 'S':
+ if (memEQ(name, "DB_REPMGR_ACKS_ALL", 18)) {
+ /* ^ */
+#ifdef DB_REPMGR_ACKS_ALL
+ *iv_return = DB_REPMGR_ACKS_ALL;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ if (memEQ(name, "DB_REPMGR_ACKS_ONE", 18)) {
+ /* ^ */
+#ifdef DB_REPMGR_ACKS_ONE
+ *iv_return = DB_REPMGR_ACKS_ONE;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
if (memEQ(name, "DB_TEST_PREDESTROY", 18)) {
/* ^ */
#ifdef DB_TEST_PREDESTROY
@@ -3950,6 +4155,28 @@ constant_18 (pTHX_ const char *name, IV *iv_return) {
#endif
}
break;
+ case 'T':
+ if (memEQ(name, "DB_THREADID_STRLEN", 18)) {
+ /* ^ */
+#ifdef DB_THREADID_STRLEN
+ *iv_return = DB_THREADID_STRLEN;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ case 'U':
+ if (memEQ(name, "DB_ENV_REF_COUNTED", 18)) {
+ /* ^ */
+#ifdef DB_ENV_REF_COUNTED
+ *iv_return = DB_ENV_REF_COUNTED;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
case 'V':
if (memEQ(name, "DB_TEST_ELECTVOTE1", 18)) {
/* ^ */
@@ -4038,71 +4265,73 @@ static int
constant_19 (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_ENV_LOG_INMEMORY DB_ENV_REP_LOGSONLY DB_LOCK_FREE_LOCKER
- DB_LOCK_GET_TIMEOUT DB_LOCK_SET_TIMEOUT DB_MUTEX_SELF_BLOCK
- DB_PRIORITY_DEFAULT DB_READ_UNCOMMITTED DB_REP_HOLDELECTION
- DB_SEQUENCE_VERSION DB_SET_LOCK_TIMEOUT DB_STAT_LOCK_PARAMS
- DB_TEST_POSTDESTROY DB_TEST_POSTLOGMETA DB_TEST_SUBDB_LOCKS
- DB_TXN_FORWARD_ROLL DB_TXN_LOG_UNDOREDO DB_TXN_WRITE_NOSYNC
- DB_UPDATE_SECONDARY DB_USE_ENVIRON_ROOT DB_VERB_REPLICATION
- DB_VERSION_MISMATCH */
- /* Offset 9 gives the best switch position. */
- switch (name[9]) {
- case 'C':
- if (memEQ(name, "DB_SEQUENCE_VERSION", 19)) {
- /* ^ */
-#ifdef DB_SEQUENCE_VERSION
- *iv_return = DB_SEQUENCE_VERSION;
+ DB_ENV_LOG_INMEMORY DB_ENV_MULTIVERSION DB_ENV_REP_LOGSONLY
+ DB_ENV_TXN_SNAPSHOT DB_EVENT_REP_CLIENT DB_EVENT_REP_MASTER
+ DB_LOCK_FREE_LOCKER DB_LOCK_GET_TIMEOUT DB_LOCK_SET_TIMEOUT
+ DB_MUTEX_SELF_BLOCK DB_PRIORITY_DEFAULT DB_READ_UNCOMMITTED
+ DB_REPMGR_ACKS_NONE DB_REPMGR_CONNECTED DB_REP_HOLDELECTION
+ DB_REP_JOIN_FAILURE DB_SEQUENCE_VERSION DB_SET_LOCK_TIMEOUT
+ DB_STAT_LOCK_PARAMS DB_TEST_POSTDESTROY DB_TEST_POSTLOGMETA
+ DB_TEST_SUBDB_LOCKS DB_TXN_FORWARD_ROLL DB_TXN_LOG_UNDOREDO
+ DB_TXN_WRITE_NOSYNC DB_UPDATE_SECONDARY DB_USERCOPY_GETDATA
+ DB_USERCOPY_SETDATA DB_USE_ENVIRON_ROOT DB_VERB_FILEOPS_ALL
+ DB_VERB_REPLICATION DB_VERSION_MISMATCH */
+ /* Offset 14 gives the best switch position. */
+ switch (name[14]) {
+ case 'A':
+ if (memEQ(name, "DB_EVENT_REP_MASTER", 19)) {
+ /* ^ */
+#ifdef DB_EVENT_REP_MASTER
+ *iv_return = DB_EVENT_REP_MASTER;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
- if (memEQ(name, "DB_SET_LOCK_TIMEOUT", 19)) {
- /* ^ */
-#ifdef DB_SET_LOCK_TIMEOUT
- *iv_return = DB_SET_LOCK_TIMEOUT;
+ if (memEQ(name, "DB_STAT_LOCK_PARAMS", 19)) {
+ /* ^ */
+#ifdef DB_STAT_LOCK_PARAMS
+ *iv_return = DB_STAT_LOCK_PARAMS;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
- break;
- case 'E':
- if (memEQ(name, "DB_LOCK_GET_TIMEOUT", 19)) {
- /* ^ */
-#if (DB_VERSION_MAJOR > 4) || \
- (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR > 0) || \
- (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR == 0 && \
- DB_VERSION_PATCH >= 14)
- *iv_return = DB_LOCK_GET_TIMEOUT;
+ if (memEQ(name, "DB_VERB_REPLICATION", 19)) {
+ /* ^ */
+#ifdef DB_VERB_REPLICATION
+ *iv_return = DB_VERB_REPLICATION;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
- if (memEQ(name, "DB_LOCK_SET_TIMEOUT", 19)) {
- /* ^ */
-#ifdef DB_LOCK_SET_TIMEOUT
- *iv_return = DB_LOCK_SET_TIMEOUT;
+ break;
+ case 'B':
+ if (memEQ(name, "DB_MUTEX_SELF_BLOCK", 19)) {
+ /* ^ */
+#ifdef DB_MUTEX_SELF_BLOCK
+ *iv_return = DB_MUTEX_SELF_BLOCK;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
- if (memEQ(name, "DB_VERB_REPLICATION", 19)) {
- /* ^ */
-#ifdef DB_VERB_REPLICATION
- *iv_return = DB_VERB_REPLICATION;
+ break;
+ case 'C':
+ if (memEQ(name, "DB_REP_HOLDELECTION", 19)) {
+ /* ^ */
+#ifdef DB_REP_HOLDELECTION
+ *iv_return = DB_REP_HOLDELECTION;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
break;
- case 'G':
+ case 'E':
if (memEQ(name, "DB_ENV_LOG_INMEMORY", 19)) {
- /* ^ */
+ /* ^ */
#ifdef DB_ENV_LOG_INMEMORY
*iv_return = DB_ENV_LOG_INMEMORY;
return PERL_constant_ISIV;
@@ -4110,41 +4339,44 @@ constant_19 (pTHX_ const char *name, IV *iv_return) {
return PERL_constant_NOTDEF;
#endif
}
- if (memEQ(name, "DB_TXN_LOG_UNDOREDO", 19)) {
- /* ^ */
-#ifdef DB_TXN_LOG_UNDOREDO
- *iv_return = DB_TXN_LOG_UNDOREDO;
+ if (memEQ(name, "DB_REPMGR_CONNECTED", 19)) {
+ /* ^ */
+#ifdef DB_REPMGR_CONNECTED
+ *iv_return = DB_REPMGR_CONNECTED;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
break;
- case 'I':
- if (memEQ(name, "DB_TXN_WRITE_NOSYNC", 19)) {
- /* ^ */
-#ifdef DB_TXN_WRITE_NOSYNC
- *iv_return = DB_TXN_WRITE_NOSYNC;
+ case 'F':
+ if (memEQ(name, "DB_PRIORITY_DEFAULT", 19)) {
+ /* ^ */
+#if (DB_VERSION_MAJOR > 4) || \
+ (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR > 1) || \
+ (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR == 1 && \
+ DB_VERSION_PATCH >= 24)
+ *iv_return = DB_PRIORITY_DEFAULT;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
break;
- case 'L':
- if (memEQ(name, "DB_REP_HOLDELECTION", 19)) {
- /* ^ */
-#ifdef DB_REP_HOLDELECTION
- *iv_return = DB_REP_HOLDELECTION;
+ case 'G':
+ if (memEQ(name, "DB_TEST_POSTLOGMETA", 19)) {
+ /* ^ */
+#ifdef DB_TEST_POSTLOGMETA
+ *iv_return = DB_TEST_POSTLOGMETA;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
break;
- case 'N':
+ case 'I':
if (memEQ(name, "DB_READ_UNCOMMITTED", 19)) {
- /* ^ */
+ /* ^ */
#ifdef DB_READ_UNCOMMITTED
*iv_return = DB_READ_UNCOMMITTED;
return PERL_constant_ISIV;
@@ -4152,8 +4384,69 @@ constant_19 (pTHX_ const char *name, IV *iv_return) {
return PERL_constant_NOTDEF;
#endif
}
+ if (memEQ(name, "DB_REP_JOIN_FAILURE", 19)) {
+ /* ^ */
+#ifdef DB_REP_JOIN_FAILURE
+ *iv_return = DB_REP_JOIN_FAILURE;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ case 'L':
+ if (memEQ(name, "DB_EVENT_REP_CLIENT", 19)) {
+ /* ^ */
+#ifdef DB_EVENT_REP_CLIENT
+ *iv_return = DB_EVENT_REP_CLIENT;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ if (memEQ(name, "DB_TEST_SUBDB_LOCKS", 19)) {
+ /* ^ */
+#ifdef DB_TEST_SUBDB_LOCKS
+ *iv_return = DB_TEST_SUBDB_LOCKS;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ case 'M':
+ if (memEQ(name, "DB_LOCK_GET_TIMEOUT", 19)) {
+ /* ^ */
+#if (DB_VERSION_MAJOR > 4) || \
+ (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR > 0) || \
+ (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR == 0 && \
+ DB_VERSION_PATCH >= 14)
+ *iv_return = DB_LOCK_GET_TIMEOUT;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ if (memEQ(name, "DB_LOCK_SET_TIMEOUT", 19)) {
+ /* ^ */
+#ifdef DB_LOCK_SET_TIMEOUT
+ *iv_return = DB_LOCK_SET_TIMEOUT;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ if (memEQ(name, "DB_SET_LOCK_TIMEOUT", 19)) {
+ /* ^ */
+#ifdef DB_SET_LOCK_TIMEOUT
+ *iv_return = DB_SET_LOCK_TIMEOUT;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
if (memEQ(name, "DB_VERSION_MISMATCH", 19)) {
- /* ^ */
+ /* ^ */
#ifdef DB_VERSION_MISMATCH
*iv_return = DB_VERSION_MISMATCH;
return PERL_constant_ISIV;
@@ -4162,29 +4455,40 @@ constant_19 (pTHX_ const char *name, IV *iv_return) {
#endif
}
break;
+ case 'N':
+ if (memEQ(name, "DB_UPDATE_SECONDARY", 19)) {
+ /* ^ */
+#ifdef DB_UPDATE_SECONDARY
+ *iv_return = DB_UPDATE_SECONDARY;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
case 'O':
- if (memEQ(name, "DB_STAT_LOCK_PARAMS", 19)) {
- /* ^ */
-#ifdef DB_STAT_LOCK_PARAMS
- *iv_return = DB_STAT_LOCK_PARAMS;
+ if (memEQ(name, "DB_LOCK_FREE_LOCKER", 19)) {
+ /* ^ */
+#ifdef DB_LOCK_FREE_LOCKER
+ *iv_return = DB_LOCK_FREE_LOCKER;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
- if (memEQ(name, "DB_TEST_POSTDESTROY", 19)) {
- /* ^ */
-#ifdef DB_TEST_POSTDESTROY
- *iv_return = DB_TEST_POSTDESTROY;
+ if (memEQ(name, "DB_TXN_LOG_UNDOREDO", 19)) {
+ /* ^ */
+#ifdef DB_TXN_LOG_UNDOREDO
+ *iv_return = DB_TXN_LOG_UNDOREDO;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
- if (memEQ(name, "DB_TEST_POSTLOGMETA", 19)) {
- /* ^ */
-#ifdef DB_TEST_POSTLOGMETA
- *iv_return = DB_TEST_POSTLOGMETA;
+ if (memEQ(name, "DB_TXN_WRITE_NOSYNC", 19)) {
+ /* ^ */
+#ifdef DB_TXN_WRITE_NOSYNC
+ *iv_return = DB_TXN_WRITE_NOSYNC;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
@@ -4192,10 +4496,10 @@ constant_19 (pTHX_ const char *name, IV *iv_return) {
}
break;
case 'P':
- if (memEQ(name, "DB_ENV_REP_LOGSONLY", 19)) {
- /* ^ */
-#ifdef DB_ENV_REP_LOGSONLY
- *iv_return = DB_ENV_REP_LOGSONLY;
+ if (memEQ(name, "DB_ENV_TXN_SNAPSHOT", 19)) {
+ /* ^ */
+#ifdef DB_ENV_TXN_SNAPSHOT
+ *iv_return = DB_ENV_TXN_SNAPSHOT;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
@@ -4203,22 +4507,19 @@ constant_19 (pTHX_ const char *name, IV *iv_return) {
}
break;
case 'R':
- if (memEQ(name, "DB_LOCK_FREE_LOCKER", 19)) {
- /* ^ */
-#ifdef DB_LOCK_FREE_LOCKER
- *iv_return = DB_LOCK_FREE_LOCKER;
+ if (memEQ(name, "DB_ENV_MULTIVERSION", 19)) {
+ /* ^ */
+#ifdef DB_ENV_MULTIVERSION
+ *iv_return = DB_ENV_MULTIVERSION;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
- if (memEQ(name, "DB_TXN_FORWARD_ROLL", 19)) {
- /* ^ */
-#if (DB_VERSION_MAJOR > 3) || \
- (DB_VERSION_MAJOR == 3 && DB_VERSION_MINOR > 1) || \
- (DB_VERSION_MAJOR == 3 && DB_VERSION_MINOR == 1 && \
- DB_VERSION_PATCH >= 14)
- *iv_return = DB_TXN_FORWARD_ROLL;
+ if (memEQ(name, "DB_SEQUENCE_VERSION", 19)) {
+ /* ^ */
+#ifdef DB_SEQUENCE_VERSION
+ *iv_return = DB_SEQUENCE_VERSION;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
@@ -4226,46 +4527,48 @@ constant_19 (pTHX_ const char *name, IV *iv_return) {
}
break;
case 'S':
- if (memEQ(name, "DB_MUTEX_SELF_BLOCK", 19)) {
- /* ^ */
-#ifdef DB_MUTEX_SELF_BLOCK
- *iv_return = DB_MUTEX_SELF_BLOCK;
+ if (memEQ(name, "DB_ENV_REP_LOGSONLY", 19)) {
+ /* ^ */
+#ifdef DB_ENV_REP_LOGSONLY
+ *iv_return = DB_ENV_REP_LOGSONLY;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
- break;
- case 'T':
- if (memEQ(name, "DB_PRIORITY_DEFAULT", 19)) {
- /* ^ */
-#if (DB_VERSION_MAJOR > 4) || \
- (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR > 1) || \
- (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR == 1 && \
- DB_VERSION_PATCH >= 24)
- *iv_return = DB_PRIORITY_DEFAULT;
+ if (memEQ(name, "DB_TEST_POSTDESTROY", 19)) {
+ /* ^ */
+#ifdef DB_TEST_POSTDESTROY
+ *iv_return = DB_TEST_POSTDESTROY;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
- break;
- case 'U':
- if (memEQ(name, "DB_TEST_SUBDB_LOCKS", 19)) {
- /* ^ */
-#ifdef DB_TEST_SUBDB_LOCKS
- *iv_return = DB_TEST_SUBDB_LOCKS;
+ if (memEQ(name, "DB_VERB_FILEOPS_ALL", 19)) {
+ /* ^ */
+#ifdef DB_VERB_FILEOPS_ALL
+ *iv_return = DB_VERB_FILEOPS_ALL;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
break;
- case 'V':
- if (memEQ(name, "DB_USE_ENVIRON_ROOT", 19)) {
- /* ^ */
-#ifdef DB_USE_ENVIRON_ROOT
- *iv_return = DB_USE_ENVIRON_ROOT;
+ case 'T':
+ if (memEQ(name, "DB_USERCOPY_GETDATA", 19)) {
+ /* ^ */
+#ifdef DB_USERCOPY_GETDATA
+ *iv_return = DB_USERCOPY_GETDATA;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ if (memEQ(name, "DB_USERCOPY_SETDATA", 19)) {
+ /* ^ */
+#ifdef DB_USERCOPY_SETDATA
+ *iv_return = DB_USERCOPY_SETDATA;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
@@ -4273,10 +4576,31 @@ constant_19 (pTHX_ const char *name, IV *iv_return) {
}
break;
case '_':
- if (memEQ(name, "DB_UPDATE_SECONDARY", 19)) {
- /* ^ */
-#ifdef DB_UPDATE_SECONDARY
- *iv_return = DB_UPDATE_SECONDARY;
+ if (memEQ(name, "DB_REPMGR_ACKS_NONE", 19)) {
+ /* ^ */
+#ifdef DB_REPMGR_ACKS_NONE
+ *iv_return = DB_REPMGR_ACKS_NONE;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ if (memEQ(name, "DB_TXN_FORWARD_ROLL", 19)) {
+ /* ^ */
+#if (DB_VERSION_MAJOR > 3) || \
+ (DB_VERSION_MAJOR == 3 && DB_VERSION_MINOR > 1) || \
+ (DB_VERSION_MAJOR == 3 && DB_VERSION_MINOR == 1 && \
+ DB_VERSION_PATCH >= 14)
+ *iv_return = DB_TXN_FORWARD_ROLL;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ if (memEQ(name, "DB_USE_ENVIRON_ROOT", 19)) {
+ /* ^ */
+#ifdef DB_USE_ENVIRON_ROOT
+ *iv_return = DB_USE_ENVIRON_ROOT;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
@@ -4291,38 +4615,65 @@ static int
constant_20 (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_CXX_NO_EXCEPTIONS DB_LOGFILEID_INVALID DB_PANIC_ENVIRONMENT
- DB_PRIORITY_VERY_LOW DB_STAT_LOCK_LOCKERS DB_STAT_LOCK_OBJECTS
- DB_TXN_BACKWARD_ROLL DB_TXN_LOCK_OPTIMIST REP_CONF_DELAYCLIENT */
- /* Offset 15 gives the best switch position. */
- switch (name[15]) {
- case 'C':
- if (memEQ(name, "DB_STAT_LOCK_LOCKERS", 20)) {
- /* ^ */
-#ifdef DB_STAT_LOCK_LOCKERS
- *iv_return = DB_STAT_LOCK_LOCKERS;
+ DB_CXX_NO_EXCEPTIONS DB_ENV_NO_OUTPUT_SET DB_ENV_RECOVER_FATAL
+ DB_EVENT_NOT_HANDLED DB_EVENT_REP_ELECTED DB_LOGFILEID_INVALID
+ DB_PANIC_ENVIRONMENT DB_PRIORITY_VERY_LOW DB_REP_FULL_ELECTION
+ DB_REP_LEASE_EXPIRED DB_REP_LEASE_TIMEOUT DB_STAT_LOCK_LOCKERS
+ DB_STAT_LOCK_OBJECTS DB_TXN_BACKWARD_ROLL DB_TXN_LOCK_OPTIMIST */
+ /* Offset 14 gives the best switch position. */
+ switch (name[14]) {
+ case 'A':
+ if (memEQ(name, "DB_EVENT_NOT_HANDLED", 20)) {
+ /* ^ */
+#ifdef DB_EVENT_NOT_HANDLED
+ *iv_return = DB_EVENT_NOT_HANDLED;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
break;
- case 'I':
- if (memEQ(name, "DB_TXN_LOCK_OPTIMIST", 20)) {
- /* ^ */
-#ifdef DB_TXN_LOCK_OPTIMIST
- *iv_return = DB_TXN_LOCK_OPTIMIST;
+ case 'B':
+ if (memEQ(name, "DB_STAT_LOCK_OBJECTS", 20)) {
+ /* ^ */
+#ifdef DB_STAT_LOCK_OBJECTS
+ *iv_return = DB_STAT_LOCK_OBJECTS;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
break;
- case 'J':
- if (memEQ(name, "DB_STAT_LOCK_OBJECTS", 20)) {
- /* ^ */
-#ifdef DB_STAT_LOCK_OBJECTS
- *iv_return = DB_STAT_LOCK_OBJECTS;
+ case 'D':
+ if (memEQ(name, "DB_TXN_BACKWARD_ROLL", 20)) {
+ /* ^ */
+#if (DB_VERSION_MAJOR > 3) || \
+ (DB_VERSION_MAJOR == 3 && DB_VERSION_MINOR > 1) || \
+ (DB_VERSION_MAJOR == 3 && DB_VERSION_MINOR == 1 && \
+ DB_VERSION_PATCH >= 14)
+ *iv_return = DB_TXN_BACKWARD_ROLL;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ case 'E':
+ if (memEQ(name, "DB_REP_FULL_ELECTION", 20)) {
+ /* ^ */
+#ifdef DB_REP_FULL_ELECTION
+ *iv_return = DB_REP_FULL_ELECTION;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ case 'I':
+ if (memEQ(name, "DB_REP_LEASE_TIMEOUT", 20)) {
+ /* ^ */
+#ifdef DB_REP_LEASE_TIMEOUT
+ *iv_return = DB_REP_LEASE_TIMEOUT;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
@@ -4330,10 +4681,10 @@ constant_20 (pTHX_ const char *name, IV *iv_return) {
}
break;
case 'L':
- if (memEQ(name, "REP_CONF_DELAYCLIENT", 20)) {
- /* ^ */
-#ifdef REP_CONF_DELAYCLIENT
- *iv_return = REP_CONF_DELAYCLIENT;
+ if (memEQ(name, "DB_EVENT_REP_ELECTED", 20)) {
+ /* ^ */
+#ifdef DB_EVENT_REP_ELECTED
+ *iv_return = DB_EVENT_REP_ELECTED;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
@@ -4341,8 +4692,19 @@ constant_20 (pTHX_ const char *name, IV *iv_return) {
}
break;
case 'N':
+ if (memEQ(name, "DB_LOGFILEID_INVALID", 20)) {
+ /* ^ */
+#ifdef DB_LOGFILEID_INVALID
+ *iv_return = DB_LOGFILEID_INVALID;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ case 'O':
if (memEQ(name, "DB_PANIC_ENVIRONMENT", 20)) {
- /* ^ */
+ /* ^ */
#ifdef DB_PANIC_ENVIRONMENT
*iv_return = DB_PANIC_ENVIRONMENT;
return PERL_constant_ISIV;
@@ -4350,32 +4712,30 @@ constant_20 (pTHX_ const char *name, IV *iv_return) {
return PERL_constant_NOTDEF;
#endif
}
- break;
- case 'T':
- if (memEQ(name, "DB_CXX_NO_EXCEPTIONS", 20)) {
- /* ^ */
-#ifdef DB_CXX_NO_EXCEPTIONS
- *iv_return = DB_CXX_NO_EXCEPTIONS;
+ if (memEQ(name, "DB_STAT_LOCK_LOCKERS", 20)) {
+ /* ^ */
+#ifdef DB_STAT_LOCK_LOCKERS
+ *iv_return = DB_STAT_LOCK_LOCKERS;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
break;
- case 'V':
- if (memEQ(name, "DB_LOGFILEID_INVALID", 20)) {
- /* ^ */
-#ifdef DB_LOGFILEID_INVALID
- *iv_return = DB_LOGFILEID_INVALID;
+ case 'P':
+ if (memEQ(name, "DB_CXX_NO_EXCEPTIONS", 20)) {
+ /* ^ */
+#ifdef DB_CXX_NO_EXCEPTIONS
+ *iv_return = DB_CXX_NO_EXCEPTIONS;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
break;
- case 'Y':
+ case 'R':
if (memEQ(name, "DB_PRIORITY_VERY_LOW", 20)) {
- /* ^ */
+ /* ^ */
#if (DB_VERSION_MAJOR > 4) || \
(DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR > 1) || \
(DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR == 1 && \
@@ -4387,14 +4747,44 @@ constant_20 (pTHX_ const char *name, IV *iv_return) {
#endif
}
break;
+ case 'T':
+ if (memEQ(name, "DB_TXN_LOCK_OPTIMIST", 20)) {
+ /* ^ */
+#ifdef DB_TXN_LOCK_OPTIMIST
+ *iv_return = DB_TXN_LOCK_OPTIMIST;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ case 'U':
+ if (memEQ(name, "DB_ENV_NO_OUTPUT_SET", 20)) {
+ /* ^ */
+#ifdef DB_ENV_NO_OUTPUT_SET
+ *iv_return = DB_ENV_NO_OUTPUT_SET;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ case 'X':
+ if (memEQ(name, "DB_REP_LEASE_EXPIRED", 20)) {
+ /* ^ */
+#ifdef DB_REP_LEASE_EXPIRED
+ *iv_return = DB_REP_LEASE_EXPIRED;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
case '_':
- if (memEQ(name, "DB_TXN_BACKWARD_ROLL", 20)) {
- /* ^ */
-#if (DB_VERSION_MAJOR > 3) || \
- (DB_VERSION_MAJOR == 3 && DB_VERSION_MINOR > 1) || \
- (DB_VERSION_MAJOR == 3 && DB_VERSION_MINOR == 1 && \
- DB_VERSION_PATCH >= 14)
- *iv_return = DB_TXN_BACKWARD_ROLL;
+ if (memEQ(name, "DB_ENV_RECOVER_FATAL", 20)) {
+ /* ^ */
+#ifdef DB_ENV_RECOVER_FATAL
+ *iv_return = DB_ENV_RECOVER_FATAL;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
@@ -4409,38 +4799,49 @@ static int
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_ENV_LOG_AUTOREMOVE DB_LOCK_UPGRADE_WRITE DB_MUTEX_LOGICAL_LOCK
- DB_PRIORITY_VERY_HIGH DB_TXN_BACKWARD_ALLOC */
- /* Offset 4 gives the best switch position. */
- switch (name[4]) {
- case 'N':
- if (memEQ(name, "DB_ENV_LOG_AUTOREMOVE", 21)) {
- /* ^ */
-#ifdef DB_ENV_LOG_AUTOREMOVE
- *iv_return = DB_ENV_LOG_AUTOREMOVE;
+ DB_ENV_LOG_AUTOREMOVE DB_EVENT_WRITE_FAILED DB_LOCK_UPGRADE_WRITE
+ DB_MUTEX_LOGICAL_LOCK DB_MUTEX_PROCESS_ONLY DB_PRIORITY_UNCHANGED
+ DB_PRIORITY_VERY_HIGH DB_REPMGR_ACKS_QUORUM DB_REP_ELECTION_RETRY
+ DB_TXN_BACKWARD_ALLOC */
+ /* Offset 19 gives the best switch position. */
+ switch (name[19]) {
+ case 'C':
+ if (memEQ(name, "DB_MUTEX_LOGICAL_LOCK", 21)) {
+ /* ^ */
+#ifdef DB_MUTEX_LOGICAL_LOCK
+ *iv_return = DB_MUTEX_LOGICAL_LOCK;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
break;
- case 'O':
- if (memEQ(name, "DB_LOCK_UPGRADE_WRITE", 21)) {
- /* ^ */
-#if (DB_VERSION_MAJOR > 3) || \
- (DB_VERSION_MAJOR == 3 && DB_VERSION_MINOR > 3) || \
- (DB_VERSION_MAJOR == 3 && DB_VERSION_MINOR == 3 && \
+ case 'E':
+ if (memEQ(name, "DB_EVENT_WRITE_FAILED", 21)) {
+ /* ^ */
+#ifdef DB_EVENT_WRITE_FAILED
+ *iv_return = DB_EVENT_WRITE_FAILED;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ if (memEQ(name, "DB_PRIORITY_UNCHANGED", 21)) {
+ /* ^ */
+#if (DB_VERSION_MAJOR > 4) || \
+ (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR > 6) || \
+ (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR == 6 && \
DB_VERSION_PATCH >= 11)
- *iv_return = DB_LOCK_UPGRADE_WRITE;
+ *iv_return = DB_PRIORITY_UNCHANGED;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
break;
- case 'R':
+ case 'G':
if (memEQ(name, "DB_PRIORITY_VERY_HIGH", 21)) {
- /* ^ */
+ /* ^ */
#if (DB_VERSION_MAJOR > 4) || \
(DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR > 1) || \
(DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR == 1 && \
@@ -4452,20 +4853,20 @@ constant_21 (pTHX_ const char *name, IV *iv_return) {
#endif
}
break;
- case 'U':
- if (memEQ(name, "DB_MUTEX_LOGICAL_LOCK", 21)) {
- /* ^ */
-#ifdef DB_MUTEX_LOGICAL_LOCK
- *iv_return = DB_MUTEX_LOGICAL_LOCK;
+ case 'L':
+ if (memEQ(name, "DB_MUTEX_PROCESS_ONLY", 21)) {
+ /* ^ */
+#ifdef DB_MUTEX_PROCESS_ONLY
+ *iv_return = DB_MUTEX_PROCESS_ONLY;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
break;
- case 'X':
+ case 'O':
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 && \
@@ -4477,6 +4878,53 @@ constant_21 (pTHX_ const char *name, IV *iv_return) {
#endif
}
break;
+ case 'R':
+ if (memEQ(name, "DB_REP_ELECTION_RETRY", 21)) {
+ /* ^ */
+#ifdef DB_REP_ELECTION_RETRY
+ *iv_return = DB_REP_ELECTION_RETRY;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ case 'T':
+ if (memEQ(name, "DB_LOCK_UPGRADE_WRITE", 21)) {
+ /* ^ */
+#if (DB_VERSION_MAJOR > 3) || \
+ (DB_VERSION_MAJOR == 3 && DB_VERSION_MINOR > 3) || \
+ (DB_VERSION_MAJOR == 3 && DB_VERSION_MINOR == 3 && \
+ DB_VERSION_PATCH >= 11)
+ *iv_return = DB_LOCK_UPGRADE_WRITE;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ case 'U':
+ if (memEQ(name, "DB_REPMGR_ACKS_QUORUM", 21)) {
+ /* ^ */
+#ifdef DB_REPMGR_ACKS_QUORUM
+ *iv_return = DB_REPMGR_ACKS_QUORUM;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ case 'V':
+ if (memEQ(name, "DB_ENV_LOG_AUTOREMOVE", 21)) {
+ /* ^ */
+#ifdef DB_ENV_LOG_AUTOREMOVE
+ *iv_return = DB_ENV_LOG_AUTOREMOVE;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
}
return PERL_constant_NOTFOUND;
}
@@ -4486,12 +4934,35 @@ constant_22 (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_ASSOC_IMMUTABLE_KEY DB_ENV_RPCCLIENT_GIVEN DB_ENV_TIME_NOTGRANTED
- DB_ENV_TXN_NOT_DURABLE DB_TXN_LOCK_OPTIMISTIC */
- /* Offset 17 gives the best switch position. */
- switch (name[17]) {
- case 'A':
+ DB_ENV_TXN_NOT_DURABLE DB_EVENT_NO_SUCH_EVENT DB_EVENT_REP_NEWMASTER
+ DB_REPMGR_DISCONNECTED DB_REP_CONF_NOAUTOINIT DB_TXN_LOCK_OPTIMISTIC */
+ /* Offset 15 gives the best switch position. */
+ switch (name[15]) {
+ case 'B':
+ if (memEQ(name, "DB_ASSOC_IMMUTABLE_KEY", 22)) {
+ /* ^ */
+#ifdef DB_ASSOC_IMMUTABLE_KEY
+ *iv_return = DB_ASSOC_IMMUTABLE_KEY;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ case 'D':
+ if (memEQ(name, "DB_ENV_TXN_NOT_DURABLE", 22)) {
+ /* ^ */
+#ifdef DB_ENV_TXN_NOT_DURABLE
+ *iv_return = DB_ENV_TXN_NOT_DURABLE;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ case 'G':
if (memEQ(name, "DB_ENV_TIME_NOTGRANTED", 22)) {
- /* ^ */
+ /* ^ */
#ifdef DB_ENV_TIME_NOTGRANTED
*iv_return = DB_ENV_TIME_NOTGRANTED;
return PERL_constant_ISIV;
@@ -4500,20 +4971,42 @@ constant_22 (pTHX_ const char *name, IV *iv_return) {
#endif
}
break;
- case 'E':
- if (memEQ(name, "DB_ASSOC_IMMUTABLE_KEY", 22)) {
- /* ^ */
-#ifdef DB_ASSOC_IMMUTABLE_KEY
- *iv_return = DB_ASSOC_IMMUTABLE_KEY;
+ case 'H':
+ if (memEQ(name, "DB_EVENT_NO_SUCH_EVENT", 22)) {
+ /* ^ */
+#ifdef DB_EVENT_NO_SUCH_EVENT
+ *iv_return = DB_EVENT_NO_SUCH_EVENT;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
#endif
}
break;
- case 'G':
+ case 'I':
+ if (memEQ(name, "DB_TXN_LOCK_OPTIMISTIC", 22)) {
+ /* ^ */
+#ifdef DB_TXN_LOCK_OPTIMISTIC
+ *iv_return = DB_TXN_LOCK_OPTIMISTIC;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ case 'N':
+ if (memEQ(name, "DB_REPMGR_DISCONNECTED", 22)) {
+ /* ^ */
+#ifdef DB_REPMGR_DISCONNECTED
+ *iv_return = DB_REPMGR_DISCONNECTED;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ case 'T':
if (memEQ(name, "DB_ENV_RPCCLIENT_GIVEN", 22)) {
- /* ^ */
+ /* ^ */
#ifdef DB_ENV_RPCCLIENT_GIVEN
*iv_return = DB_ENV_RPCCLIENT_GIVEN;
return PERL_constant_ISIV;
@@ -4522,11 +5015,101 @@ constant_22 (pTHX_ const char *name, IV *iv_return) {
#endif
}
break;
+ case 'U':
+ if (memEQ(name, "DB_REP_CONF_NOAUTOINIT", 22)) {
+ /* ^ */
+#ifdef DB_REP_CONF_NOAUTOINIT
+ *iv_return = DB_REP_CONF_NOAUTOINIT;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ case 'W':
+ if (memEQ(name, "DB_EVENT_REP_NEWMASTER", 22)) {
+ /* ^ */
+#ifdef DB_EVENT_REP_NEWMASTER
+ *iv_return = DB_EVENT_REP_NEWMASTER;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ }
+ return PERL_constant_NOTFOUND;
+}
+
+static int
+constant_23 (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_ENV_TXN_WRITE_NOSYNC DB_REPMGR_ACKS_ONE_PEER DB_REP_CHECKPOINT_DELAY
+ DB_REP_CONF_DELAYCLIENT DB_REP_CONNECTION_RETRY DB_REP_DEFAULT_PRIORITY
+ DB_REP_ELECTION_TIMEOUT */
+ /* Offset 12 gives the best switch position. */
+ switch (name[12]) {
+ case 'C':
+ if (memEQ(name, "DB_REP_CONNECTION_RETRY", 23)) {
+ /* ^ */
+#ifdef DB_REP_CONNECTION_RETRY
+ *iv_return = DB_REP_CONNECTION_RETRY;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ case 'D':
+ if (memEQ(name, "DB_REP_CONF_DELAYCLIENT", 23)) {
+ /* ^ */
+#ifdef DB_REP_CONF_DELAYCLIENT
+ *iv_return = DB_REP_CONF_DELAYCLIENT;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
case 'I':
- if (memEQ(name, "DB_TXN_LOCK_OPTIMISTIC", 22)) {
- /* ^ */
-#ifdef DB_TXN_LOCK_OPTIMISTIC
- *iv_return = DB_TXN_LOCK_OPTIMISTIC;
+ if (memEQ(name, "DB_REP_ELECTION_TIMEOUT", 23)) {
+ /* ^ */
+#ifdef DB_REP_ELECTION_TIMEOUT
+ *iv_return = DB_REP_ELECTION_TIMEOUT;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ case 'K':
+ if (memEQ(name, "DB_REPMGR_ACKS_ONE_PEER", 23)) {
+ /* ^ */
+#ifdef DB_REPMGR_ACKS_ONE_PEER
+ *iv_return = DB_REPMGR_ACKS_ONE_PEER;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ case 'L':
+ if (memEQ(name, "DB_REP_DEFAULT_PRIORITY", 23)) {
+ /* ^ */
+#ifdef DB_REP_DEFAULT_PRIORITY
+ *iv_return = DB_REP_DEFAULT_PRIORITY;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ case 'P':
+ if (memEQ(name, "DB_REP_CHECKPOINT_DELAY", 23)) {
+ /* ^ */
+#ifdef DB_REP_CHECKPOINT_DELAY
+ *iv_return = DB_REP_CHECKPOINT_DELAY;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
@@ -4534,10 +5117,55 @@ constant_22 (pTHX_ const char *name, IV *iv_return) {
}
break;
case 'R':
- if (memEQ(name, "DB_ENV_TXN_NOT_DURABLE", 22)) {
- /* ^ */
-#ifdef DB_ENV_TXN_NOT_DURABLE
- *iv_return = DB_ENV_TXN_NOT_DURABLE;
+ if (memEQ(name, "DB_ENV_TXN_WRITE_NOSYNC", 23)) {
+ /* ^ */
+#ifdef DB_ENV_TXN_WRITE_NOSYNC
+ *iv_return = DB_ENV_TXN_WRITE_NOSYNC;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ }
+ return PERL_constant_NOTFOUND;
+}
+
+static int
+constant_24 (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_EVENT_REP_PERM_FAILED DB_EVENT_REP_STARTUPDONE DB_REPMGR_ACKS_ALL_PEERS
+ */
+ /* Offset 20 gives the best switch position. */
+ switch (name[20]) {
+ case 'D':
+ if (memEQ(name, "DB_EVENT_REP_STARTUPDONE", 24)) {
+ /* ^ */
+#ifdef DB_EVENT_REP_STARTUPDONE
+ *iv_return = DB_EVENT_REP_STARTUPDONE;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ case 'E':
+ if (memEQ(name, "DB_REPMGR_ACKS_ALL_PEERS", 24)) {
+ /* ^ */
+#ifdef DB_REPMGR_ACKS_ALL_PEERS
+ *iv_return = DB_REPMGR_ACKS_ALL_PEERS;
+ return PERL_constant_ISIV;
+#else
+ return PERL_constant_NOTDEF;
+#endif
+ }
+ break;
+ case 'I':
+ if (memEQ(name, "DB_EVENT_REP_PERM_FAILED", 24)) {
+ /* ^ */
+#ifdef DB_EVENT_REP_PERM_FAILED
+ *iv_return = DB_EVENT_REP_PERM_FAILED;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
@@ -4570,49 +5198,58 @@ my @names = (qw(DB_AFTER DB_AGGRESSIVE DB_ALREADY_ABORTED DB_APPEND
DB_ARCH_REMOVE DB_ASSOC_IMMUTABLE_KEY DB_AUTO_COMMIT DB_BEFORE
DB_BTREEMAGIC DB_BTREEOLDVER DB_BTREEVERSION DB_BUFFER_SMALL
DB_CACHED_COUNTS DB_CDB_ALLDB DB_CHECKPOINT DB_CHKSUM
- DB_CHKSUM_SHA1 DB_CLIENT DB_CL_WRITER DB_COMMIT DB_COMPACT_FLAGS
- DB_CONSUME DB_CONSUME_WAIT DB_CREATE DB_CURLSN DB_CURRENT
- DB_CXX_NO_EXCEPTIONS DB_DEGREE_2 DB_DELETED DB_DELIMITER
- DB_DIRECT DB_DIRECT_DB DB_DIRECT_LOG DB_DIRTY_READ DB_DONOTINDEX
- DB_DSYNC_LOG DB_DUP DB_DUPCURSOR DB_DUPSORT DB_DURABLE_UNKNOWN
- DB_EID_BROADCAST DB_EID_INVALID 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_CHKSUM_SHA1 DB_CKP_INTERNAL DB_CLIENT DB_CL_WRITER DB_COMMIT
+ DB_COMPACT_FLAGS DB_CONSUME DB_CONSUME_WAIT DB_CREATE DB_CURLSN
+ DB_CURRENT DB_CXX_NO_EXCEPTIONS DB_DEGREE_2 DB_DELETED
+ DB_DELIMITER DB_DIRECT DB_DIRECT_DB DB_DIRECT_LOG DB_DIRTY_READ
+ DB_DONOTINDEX DB_DSYNC_DB DB_DSYNC_LOG DB_DUP DB_DUPCURSOR
+ DB_DUPSORT DB_DURABLE_UNKNOWN DB_EID_BROADCAST DB_EID_INVALID
+ 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_DSYNC_DB
DB_ENV_DSYNC_LOG DB_ENV_FATAL DB_ENV_LOCKDOWN DB_ENV_LOCKING
DB_ENV_LOGGING DB_ENV_LOG_AUTOREMOVE DB_ENV_LOG_INMEMORY
- DB_ENV_NOLOCKING DB_ENV_NOMMAP DB_ENV_NOPANIC DB_ENV_OPEN_CALLED
+ DB_ENV_MULTIVERSION DB_ENV_NOLOCKING DB_ENV_NOMMAP
+ DB_ENV_NOPANIC DB_ENV_NO_OUTPUT_SET 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_TIME_NOTGRANTED DB_ENV_TXN DB_ENV_TXN_NOSYNC
- DB_ENV_TXN_NOT_DURABLE DB_ENV_TXN_WRITE_NOSYNC DB_ENV_USER_ALLOC
- DB_ENV_YIELDCPU DB_EXCL DB_EXTENT DB_FAST_STAT DB_FCNTL_LOCKING
- DB_FILEOPEN DB_FILE_ID_LEN DB_FIRST DB_FIXEDLEN DB_FLUSH
- DB_FORCE DB_FREELIST_ONLY DB_FREE_SPACE DB_GETREC DB_GET_BOTH
- DB_GET_BOTHC DB_GET_BOTH_RANGE DB_GET_RECNO DB_HANDLE_LOCK
- DB_HASHMAGIC DB_HASHOLDVER DB_HASHVERSION DB_IMMUTABLE_KEY
- DB_INCOMPLETE DB_INIT_CDB DB_INIT_LOCK DB_INIT_LOG DB_INIT_MPOOL
- DB_INIT_REP DB_INIT_TXN DB_INORDER DB_JAVA_CALLBACK DB_JOINENV
- DB_JOIN_ITEM DB_JOIN_NOSORT DB_KEYEMPTY DB_KEYEXIST DB_KEYFIRST
- DB_KEYLAST DB_LAST DB_LOCKDOWN DB_LOCKMAGIC DB_LOCKVERSION
- DB_LOCK_ABORT DB_LOCK_CONFLICT DB_LOCK_DEADLOCK DB_LOCK_DEFAULT
- DB_LOCK_EXPIRE DB_LOCK_FREE_LOCKER DB_LOCK_MAXLOCKS
- DB_LOCK_MAXWRITE DB_LOCK_MINLOCKS DB_LOCK_MINWRITE DB_LOCK_NORUN
- DB_LOCK_NOTEXIST DB_LOCK_NOTGRANTED DB_LOCK_NOTHELD
- DB_LOCK_NOWAIT DB_LOCK_OLDEST DB_LOCK_RANDOM DB_LOCK_RECORD
- DB_LOCK_REMOVE DB_LOCK_RIW_N DB_LOCK_RW_N DB_LOCK_SET_TIMEOUT
- DB_LOCK_SWITCH DB_LOCK_UPGRADE DB_LOCK_YOUNGEST DB_LOGC_BUF_SIZE
- DB_LOGFILEID_INVALID DB_LOGMAGIC DB_LOGOLDVER DB_LOGVERSION
- DB_LOG_AUTOREMOVE DB_LOG_BUFFER_FULL DB_LOG_CHKPNT DB_LOG_COMMIT
- DB_LOG_DISK DB_LOG_INMEMORY DB_LOG_LOCKED DB_LOG_NOCOPY
- DB_LOG_NOT_DURABLE DB_LOG_PERM DB_LOG_RESEND DB_LOG_SILENT_ERR
- DB_LOG_WRNOSYNC DB_MAX_PAGES DB_MAX_RECORDS DB_MPOOL_CLEAN
- DB_MPOOL_CREATE DB_MPOOL_DIRTY DB_MPOOL_DISCARD DB_MPOOL_EXTENT
+ DB_ENV_RECOVER_FATAL DB_ENV_REF_COUNTED 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_TIME_NOTGRANTED
+ DB_ENV_TXN DB_ENV_TXN_NOSYNC DB_ENV_TXN_NOT_DURABLE
+ DB_ENV_TXN_NOWAIT DB_ENV_TXN_SNAPSHOT DB_ENV_TXN_WRITE_NOSYNC
+ DB_ENV_USER_ALLOC DB_ENV_YIELDCPU DB_EVENT_NOT_HANDLED
+ DB_EVENT_NO_SUCH_EVENT DB_EVENT_PANIC DB_EVENT_REP_CLIENT
+ DB_EVENT_REP_ELECTED DB_EVENT_REP_MASTER DB_EVENT_REP_NEWMASTER
+ DB_EVENT_REP_PERM_FAILED DB_EVENT_REP_STARTUPDONE
+ DB_EVENT_WRITE_FAILED DB_EXCL DB_EXTENT DB_FAST_STAT
+ DB_FCNTL_LOCKING DB_FILEOPEN DB_FILE_ID_LEN DB_FIRST DB_FIXEDLEN
+ DB_FLUSH DB_FORCE DB_FREELIST_ONLY DB_FREE_SPACE DB_GETREC
+ DB_GET_BOTH DB_GET_BOTHC DB_GET_BOTH_RANGE DB_GET_RECNO
+ DB_HANDLE_LOCK DB_HASHMAGIC DB_HASHOLDVER DB_HASHVERSION
+ DB_IGNORE_LEASE DB_IMMUTABLE_KEY DB_INCOMPLETE DB_INIT_CDB
+ DB_INIT_LOCK DB_INIT_LOG DB_INIT_MPOOL DB_INIT_REP DB_INIT_TXN
+ DB_INORDER DB_JAVA_CALLBACK DB_JOINENV DB_JOIN_ITEM
+ DB_JOIN_NOSORT DB_KEYEMPTY DB_KEYEXIST DB_KEYFIRST DB_KEYLAST
+ DB_LAST DB_LOCKDOWN DB_LOCKMAGIC DB_LOCKVERSION DB_LOCK_ABORT
+ DB_LOCK_CONFLICT DB_LOCK_DEADLOCK DB_LOCK_DEFAULT DB_LOCK_EXPIRE
+ DB_LOCK_FREE_LOCKER DB_LOCK_MAXLOCKS DB_LOCK_MAXWRITE
+ DB_LOCK_MINLOCKS DB_LOCK_MINWRITE DB_LOCK_NORUN DB_LOCK_NOTEXIST
+ DB_LOCK_NOTGRANTED DB_LOCK_NOTHELD DB_LOCK_NOWAIT DB_LOCK_OLDEST
+ DB_LOCK_RANDOM DB_LOCK_RECORD DB_LOCK_REMOVE DB_LOCK_RIW_N
+ DB_LOCK_RW_N DB_LOCK_SET_TIMEOUT DB_LOCK_SWITCH DB_LOCK_UPGRADE
+ DB_LOCK_YOUNGEST DB_LOGC_BUF_SIZE DB_LOGFILEID_INVALID
+ DB_LOGMAGIC DB_LOGOLDVER DB_LOGVERSION DB_LOG_AUTOREMOVE
+ DB_LOG_BUFFER_FULL DB_LOG_CHKPNT DB_LOG_COMMIT DB_LOG_DISK
+ DB_LOG_INMEMORY DB_LOG_LOCKED DB_LOG_NOCOPY DB_LOG_NOT_DURABLE
+ DB_LOG_PERM DB_LOG_RESEND DB_LOG_SILENT_ERR DB_LOG_WRNOSYNC
+ DB_MAX_PAGES DB_MAX_RECORDS DB_MPOOL_CLEAN DB_MPOOL_CREATE
+ DB_MPOOL_DIRTY DB_MPOOL_DISCARD DB_MPOOL_EDIT DB_MPOOL_EXTENT
DB_MPOOL_FREE DB_MPOOL_LAST DB_MPOOL_NEW DB_MPOOL_NEW_GROUP
DB_MPOOL_NOFILE DB_MPOOL_PRIVATE DB_MPOOL_UNLINK DB_MULTIPLE
- DB_MULTIPLE_KEY DB_MUTEXDEBUG DB_MUTEXLOCKS DB_MUTEX_ALLOCATED
- DB_MUTEX_LOGICAL_LOCK DB_MUTEX_SELF_BLOCK DB_MUTEX_THREAD
+ DB_MULTIPLE_KEY DB_MULTIVERSION DB_MUTEXDEBUG DB_MUTEXLOCKS
+ DB_MUTEX_ALLOCATED DB_MUTEX_LOCKED DB_MUTEX_LOGICAL_LOCK
+ DB_MUTEX_PROCESS_ONLY DB_MUTEX_SELF_BLOCK DB_MUTEX_THREAD
DB_NEEDSPLIT DB_NEXT DB_NEXT_DUP DB_NEXT_NODUP DB_NOCOPY
DB_NODUPDATA DB_NOLOCKING DB_NOMMAP DB_NOORDERCHK DB_NOOVERWRITE
DB_NOPANIC DB_NORECURSE DB_NOSERVER DB_NOSERVER_HOME
@@ -4621,49 +5258,62 @@ my @names = (qw(DB_AFTER DB_AGGRESSIVE DB_ALREADY_ABORTED DB_APPEND
DB_OLD_VERSION DB_OPEN_CALLED DB_OPFLAGS_MASK DB_ORDERCHKONLY
DB_OVERWRITE DB_PAD DB_PAGEYIELD DB_PAGE_LOCK DB_PAGE_NOTFOUND
DB_PANIC_ENVIRONMENT DB_PERMANENT DB_POSITION DB_POSITIONI
- DB_PREV DB_PREV_NODUP DB_PRINTABLE DB_PRIVATE DB_PR_HEADERS
- DB_PR_PAGE DB_PR_RECOVERYTEST DB_QAMMAGIC DB_QAMOLDVER
- DB_QAMVERSION DB_RDONLY DB_RDWRMASTER DB_READ_COMMITTED
- DB_READ_UNCOMMITTED DB_RECNUM DB_RECORDCOUNT DB_RECORD_LOCK
- DB_RECOVER DB_RECOVER_FATAL DB_REGION_ANON DB_REGION_INIT
- DB_REGION_MAGIC DB_REGION_NAME DB_REGISTER DB_REGISTERED
- DB_RENAMEMAGIC DB_RENUMBER DB_REP_ANYWHERE DB_REP_BULKOVF
- DB_REP_CLIENT DB_REP_CREATE DB_REP_DUPMASTER DB_REP_EGENCHG
+ DB_PREV DB_PREV_DUP DB_PREV_NODUP DB_PRINTABLE DB_PRIVATE
+ DB_PR_HEADERS DB_PR_PAGE DB_PR_RECOVERYTEST DB_QAMMAGIC
+ DB_QAMOLDVER DB_QAMVERSION DB_RDONLY DB_RDWRMASTER
+ DB_READ_COMMITTED DB_READ_UNCOMMITTED DB_RECNUM DB_RECORDCOUNT
+ DB_RECORD_LOCK DB_RECOVER DB_RECOVER_FATAL DB_REGION_ANON
+ DB_REGION_INIT DB_REGION_MAGIC DB_REGION_NAME DB_REGISTER
+ DB_REGISTERED DB_RENAMEMAGIC DB_RENUMBER DB_REPFLAGS_MASK
+ DB_REPMGR_ACKS_ALL DB_REPMGR_ACKS_ALL_PEERS DB_REPMGR_ACKS_NONE
+ DB_REPMGR_ACKS_ONE DB_REPMGR_ACKS_ONE_PEER DB_REPMGR_ACKS_QUORUM
+ DB_REPMGR_CONNECTED DB_REPMGR_DISCONNECTED DB_REPMGR_PEER
+ DB_REP_ACK_TIMEOUT DB_REP_ANYWHERE DB_REP_BULKOVF
+ DB_REP_CHECKPOINT_DELAY DB_REP_CLIENT DB_REP_CONF_BULK
+ DB_REP_CONF_DELAYCLIENT DB_REP_CONF_NOAUTOINIT
+ DB_REP_CONF_NOWAIT DB_REP_CONNECTION_RETRY DB_REP_CREATE
+ DB_REP_DEFAULT_PRIORITY DB_REP_DUPMASTER DB_REP_EGENCHG
+ DB_REP_ELECTION DB_REP_ELECTION_RETRY DB_REP_ELECTION_TIMEOUT
+ DB_REP_FULL_ELECTION DB_REP_FULL_ELECTION_TIMEOUT
DB_REP_HANDLE_DEAD DB_REP_HOLDELECTION DB_REP_IGNORE
- DB_REP_ISPERM DB_REP_LOCKOUT DB_REP_LOGREADY DB_REP_LOGSONLY
- DB_REP_MASTER DB_REP_NEWMASTER DB_REP_NEWSITE DB_REP_NOBUFFER
- DB_REP_NOTPERM DB_REP_OUTDATED DB_REP_PAGEDONE DB_REP_PERMANENT
- DB_REP_REREQUEST DB_REP_STARTUPDONE DB_REP_UNAVAIL
- DB_REVSPLITOFF DB_RMW DB_RPCCLIENT DB_RPC_SERVERPROG
- DB_RPC_SERVERVERS DB_RUNRECOVERY DB_SALVAGE DB_SECONDARY_BAD
- DB_SEQUENCE_OLDVER DB_SEQUENCE_VERSION DB_SEQUENTIAL DB_SEQ_DEC
- DB_SEQ_INC DB_SEQ_RANGE_SET DB_SEQ_WRAP DB_SEQ_WRAPPED DB_SET
- DB_SET_LOCK_TIMEOUT DB_SET_RANGE DB_SET_RECNO DB_SET_TXN_NOW
- DB_SET_TXN_TIMEOUT DB_SNAPSHOT DB_STAT_ALL DB_STAT_CLEAR
- DB_STAT_LOCK_CONF DB_STAT_LOCK_LOCKERS DB_STAT_LOCK_OBJECTS
- DB_STAT_LOCK_PARAMS DB_STAT_MEMP_HASH DB_STAT_SUBSYSTEM
+ DB_REP_ISPERM DB_REP_JOIN_FAILURE DB_REP_LEASE_EXPIRED
+ DB_REP_LEASE_TIMEOUT DB_REP_LOCKOUT DB_REP_LOGREADY
+ DB_REP_LOGSONLY DB_REP_MASTER DB_REP_NEWMASTER DB_REP_NEWSITE
+ DB_REP_NOBUFFER DB_REP_NOTPERM DB_REP_OUTDATED DB_REP_PAGEDONE
+ DB_REP_PERMANENT DB_REP_REREQUEST DB_REP_STARTUPDONE
+ DB_REP_UNAVAIL DB_REVSPLITOFF DB_RMW DB_RPCCLIENT
+ DB_RPC_SERVERPROG DB_RPC_SERVERVERS DB_RUNRECOVERY DB_SALVAGE
+ DB_SECONDARY_BAD DB_SEQUENCE_OLDVER DB_SEQUENCE_VERSION
+ DB_SEQUENTIAL DB_SEQ_DEC DB_SEQ_INC DB_SEQ_RANGE_SET DB_SEQ_WRAP
+ DB_SEQ_WRAPPED DB_SET DB_SET_LOCK_TIMEOUT DB_SET_RANGE
+ DB_SET_RECNO DB_SET_TXN_NOW DB_SET_TXN_TIMEOUT DB_SNAPSHOT
+ DB_SPARE_FLAG DB_STAT_ALL DB_STAT_CLEAR DB_STAT_LOCK_CONF
+ DB_STAT_LOCK_LOCKERS DB_STAT_LOCK_OBJECTS DB_STAT_LOCK_PARAMS
+ DB_STAT_MEMP_HASH DB_STAT_NOERROR DB_STAT_SUBSYSTEM
DB_SURPRISE_KID 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_POSTLOG DB_TEST_POSTLOGMETA
DB_TEST_POSTOPEN DB_TEST_POSTRENAME DB_TEST_POSTSYNC
DB_TEST_PREDESTROY DB_TEST_PREOPEN DB_TEST_PRERENAME
- DB_TEST_SUBDB_LOCKS DB_THREAD DB_TIMEOUT DB_TIME_NOTGRANTED
- DB_TRUNCATE DB_TXNMAGIC DB_TXNVERSION DB_TXN_CKP DB_TXN_LOCK
- DB_TXN_LOCK_2PL DB_TXN_LOCK_MASK DB_TXN_LOCK_OPTIMIST
- DB_TXN_LOCK_OPTIMISTIC DB_TXN_LOG_MASK DB_TXN_LOG_REDO
- DB_TXN_LOG_UNDO DB_TXN_LOG_UNDOREDO DB_TXN_NOSYNC
- DB_TXN_NOT_DURABLE DB_TXN_NOWAIT DB_TXN_REDO DB_TXN_SYNC
- DB_TXN_UNDO DB_TXN_WRITE_NOSYNC DB_UNREF DB_UPDATE_SECONDARY
- DB_UPGRADE DB_USE_ENVIRON DB_USE_ENVIRON_ROOT DB_VERB_CHKPOINT
- DB_VERB_DEADLOCK DB_VERB_RECOVERY DB_VERB_REGISTER
+ DB_TEST_RECYCLE DB_TEST_SUBDB_LOCKS DB_THREAD DB_THREADID_STRLEN
+ DB_TIMEOUT DB_TIME_NOTGRANTED DB_TRUNCATE DB_TXNMAGIC
+ DB_TXNVERSION DB_TXN_CKP DB_TXN_LOCK DB_TXN_LOCK_2PL
+ DB_TXN_LOCK_MASK DB_TXN_LOCK_OPTIMIST DB_TXN_LOCK_OPTIMISTIC
+ DB_TXN_LOG_MASK DB_TXN_LOG_REDO DB_TXN_LOG_UNDO
+ DB_TXN_LOG_UNDOREDO DB_TXN_NOSYNC DB_TXN_NOT_DURABLE
+ DB_TXN_NOWAIT DB_TXN_REDO DB_TXN_SNAPSHOT DB_TXN_SYNC
+ DB_TXN_UNDO DB_TXN_WAIT DB_TXN_WRITE_NOSYNC DB_UNREF
+ DB_UPDATE_SECONDARY DB_UPGRADE DB_USERCOPY_GETDATA
+ DB_USERCOPY_SETDATA DB_USE_ENVIRON DB_USE_ENVIRON_ROOT
+ DB_VERB_CHKPOINT DB_VERB_DEADLOCK DB_VERB_FILEOPS
+ DB_VERB_FILEOPS_ALL DB_VERB_RECOVERY DB_VERB_REGISTER
DB_VERB_REPLICATION DB_VERB_WAITSFOR DB_VERIFY DB_VERIFY_BAD
DB_VERIFY_FATAL DB_VERSION_MAJOR DB_VERSION_MINOR
DB_VERSION_MISMATCH DB_VERSION_PATCH DB_VRFY_FLAGMASK
DB_WRITECURSOR DB_WRITELOCK DB_WRITEOPEN DB_WRNOSYNC
DB_XA_CREATE DB_XIDDATASIZE DB_YIELDCPU DB_debug_FLAG
- DB_user_BEGIN REP_CONF_AUTOINIT REP_CONF_BULK
- REP_CONF_DELAYCLIENT REP_CONF_NOWAIT),
+ DB_user_BEGIN),
{name=>"DB_BTREE", 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 >= 3)\n", "#endif\n"]},
{name=>"DB_HASH", 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 >= 3)\n", "#endif\n"]},
{name=>"DB_LOCK_DUMP", 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 >= 3)\n", "#endif\n"]},
@@ -4680,6 +5330,7 @@ my @names = (qw(DB_AFTER DB_AGGRESSIVE DB_ALREADY_ABORTED DB_APPEND
{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 >= 24)\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 >= 24)\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 >= 24)\n", "#endif\n"]},
+ {name=>"DB_PRIORITY_UNCHANGED", type=>"IV", macro=>["#if (DB_VERSION_MAJOR > 4) || \\\n (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR > 6) || \\\n (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR == 6 && \\\n DB_VERSION_PATCH >= 11)\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 >= 24)\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 >= 24)\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"]},
@@ -4757,9 +5408,15 @@ __END__
return constant_22 (aTHX_ name, iv_return);
break;
case 23:
- if (memEQ(name, "DB_ENV_TXN_WRITE_NOSYNC", 23)) {
-#ifdef DB_ENV_TXN_WRITE_NOSYNC
- *iv_return = DB_ENV_TXN_WRITE_NOSYNC;
+ return constant_23 (aTHX_ name, iv_return);
+ break;
+ case 24:
+ return constant_24 (aTHX_ name, iv_return);
+ break;
+ case 28:
+ if (memEQ(name, "DB_REP_FULL_ELECTION_TIMEOUT", 28)) {
+#ifdef DB_REP_FULL_ELECTION_TIMEOUT
+ *iv_return = DB_REP_FULL_ELECTION_TIMEOUT;
return PERL_constant_ISIV;
#else
return PERL_constant_NOTDEF;
diff --git a/db/perl/BerkeleyDB/mkconsts b/db/perl/BerkeleyDB/mkconsts
index 2d6a7e152..7bf44d55d 100644
--- a/db/perl/BerkeleyDB/mkconsts
+++ b/db/perl/BerkeleyDB/mkconsts
@@ -714,7 +714,7 @@ use constant IGNORE => 'ignore' ;
DB_SEQUENCE_OLDVER => DEFINE,
#########
- # 4.4.9
+ # 4.4.16
#########
DBC_READ_COMMITTED => IGNORE,
@@ -722,10 +722,13 @@ use constant IGNORE => 'ignore' ;
DB_AM_READ_UNCOMMITTED => IGNORE,
DB_ASSOC_IMMUTABLE_KEY => DEFINE,
DB_COMPACT_FLAGS => DEFINE,
+ DB_DSYNC_DB => DEFINE,
+ DB_ENV_DSYNC_DB => DEFINE,
DB_FREELIST_ONLY => DEFINE,
DB_FREE_SPACE => DEFINE,
DB_IMMUTABLE_KEY => DEFINE,
DB_MUTEX_ALLOCATED => DEFINE,
+ DB_MUTEX_LOCKED => DEFINE,
DB_MUTEX_LOGICAL_LOCK => DEFINE,
DB_MUTEX_SELF_BLOCK => DEFINE,
DB_MUTEX_THREAD => DEFINE,
@@ -734,22 +737,107 @@ use constant IGNORE => 'ignore' ;
DB_REGISTER => DEFINE,
DB_REP_ANYWHERE => DEFINE,
DB_REP_BULKOVF => DEFINE,
+ DB_REP_CONF_BULK => DEFINE,
+ DB_REP_CONF_DELAYCLIENT => DEFINE,
+ DB_REP_CONF_NOAUTOINIT => DEFINE,
+ DB_REP_CONF_NOWAIT => DEFINE,
DB_REP_IGNORE => DEFINE,
+ DB_REP_JOIN_FAILURE => DEFINE,
DB_REP_LOCKOUT => DEFINE,
DB_REP_REREQUEST => DEFINE,
DB_SEQ_WRAPPED => DEFINE,
+ DB_THREADID_STRLEN => DEFINE,
DB_VERB_REGISTER => DEFINE,
- REP_CONF_AUTOINIT => DEFINE,
- REP_CONF_BULK => DEFINE,
- REP_CONF_DELAYCLIENT => DEFINE,
- REP_CONF_NOWAIT => DEFINE,
TXN_READ_COMMITTED => IGNORE,
TXN_READ_UNCOMMITTED => IGNORE,
TXN_SYNC_FLAGS => IGNORE,
TXN_WRITE_NOSYNC => IGNORE,
# enum db_lockmode_t
- DB_LOCK_READ_UNCOMMITTED => IGNORE, # 4.4.9
+ DB_LOCK_READ_UNCOMMITTED => IGNORE, # 4.4.16
+
+ #########
+ # 4.5.20
+ #########
+
+ DBC_DONTLOCK => IGNORE,
+ DB_DBT_USERCOPY => IGNORE,
+ DB_ENV_MULTIVERSION => DEFINE,
+ DB_ENV_TXN_SNAPSHOT => DEFINE,
+ DB_EVENT_NO_SUCH_EVENT => DEFINE,
+ DB_EVENT_PANIC => DEFINE,
+ DB_EVENT_REP_CLIENT => DEFINE,
+ DB_EVENT_REP_MASTER => DEFINE,
+ DB_EVENT_REP_NEWMASTER => DEFINE,
+ DB_EVENT_REP_STARTUPDONE => DEFINE,
+ DB_EVENT_WRITE_FAILED => DEFINE,
+ DB_MPOOL_EDIT => DEFINE,
+ DB_MULTIVERSION => DEFINE,
+ DB_MUTEX_PROCESS_ONLY => DEFINE,
+ DB_REPMGR_ACKS_ALL => DEFINE,
+ DB_REPMGR_ACKS_ALL_PEERS => DEFINE,
+ DB_REPMGR_ACKS_NONE => DEFINE,
+ DB_REPMGR_ACKS_ONE => DEFINE,
+ DB_REPMGR_ACKS_ONE_PEER => DEFINE,
+ DB_REPMGR_ACKS_QUORUM => DEFINE,
+ DB_REPMGR_CONNECTED => DEFINE,
+ DB_REPMGR_DISCONNECTED => DEFINE,
+ DB_REPMGR_PEER => DEFINE,
+ DB_REP_ACK_TIMEOUT => DEFINE,
+ DB_REP_CONNECTION_RETRY => DEFINE,
+ DB_REP_ELECTION => DEFINE,
+ DB_REP_ELECTION_RETRY => DEFINE,
+ DB_REP_ELECTION_TIMEOUT => DEFINE,
+ DB_REP_FULL_ELECTION => DEFINE,
+ DB_STAT_NOERROR => DEFINE,
+ DB_TEST_RECYCLE => DEFINE,
+ DB_TXN_SNAPSHOT => DEFINE,
+ DB_USERCOPY_GETDATA => DEFINE,
+ DB_USERCOPY_SETDATA => DEFINE,
+ MP_MULTIVERSION => IGNORE,
+ TXN_ABORTED => IGNORE,
+ TXN_CDSGROUP => IGNORE,
+ TXN_COMMITTED => IGNORE,
+ TXN_PREPARED => IGNORE,
+ TXN_PRIVATE => IGNORE,
+ TXN_RUNNING => IGNORE,
+ TXN_SNAPSHOT => IGNORE,
+ TXN_XA_ABORTED => IGNORE,
+ TXN_XA_DEADLOCKED => IGNORE,
+ TXN_XA_ENDED => IGNORE,
+ TXN_XA_PREPARED => IGNORE,
+ TXN_XA_STARTED => IGNORE,
+ TXN_XA_SUSPENDED => IGNORE,
+
+ #########
+ # 4.6.11
+ #########
+
+ DB_CKP_INTERNAL => DEFINE,
+ DB_DBT_MULTIPLE => IGNORE,
+ DB_ENV_NO_OUTPUT_SET => DEFINE,
+ DB_ENV_RECOVER_FATAL => DEFINE,
+ DB_ENV_REF_COUNTED => DEFINE,
+ DB_ENV_TXN_NOWAIT => DEFINE,
+ DB_EVENT_NOT_HANDLED => DEFINE,
+ DB_EVENT_REP_ELECTED => DEFINE,
+ DB_EVENT_REP_PERM_FAILED => DEFINE,
+ DB_IGNORE_LEASE => DEFINE,
+ DB_PREV_DUP => DEFINE,
+ DB_REPFLAGS_MASK => DEFINE,
+ DB_REP_CHECKPOINT_DELAY => DEFINE,
+ DB_REP_DEFAULT_PRIORITY => DEFINE,
+ DB_REP_FULL_ELECTION_TIMEOUT => DEFINE,
+ DB_REP_LEASE_EXPIRED => DEFINE,
+ DB_REP_LEASE_TIMEOUT => DEFINE,
+ DB_SPARE_FLAG => DEFINE,
+ DB_TXN_WAIT => DEFINE,
+ DB_VERB_FILEOPS => DEFINE,
+ DB_VERB_FILEOPS_ALL => DEFINE,
+
+ # enum DB_CACHE_PRIORITY
+ DB_PRIORITY_UNCHANGED => '4.6.11',
+
) ;
sub enum_Macro
diff --git a/db/perl/BerkeleyDB/t/btree.t b/db/perl/BerkeleyDB/t/btree.t
index 69e69a4b6..3f70f3d00 100644
--- a/db/perl/BerkeleyDB/t/btree.t
+++ b/db/perl/BerkeleyDB/t/btree.t
@@ -120,7 +120,7 @@ umask(0) ;
my ($k, $v) ;
ok 33, my $db = new BerkeleyDB::Btree -Filename => $Dfile,
-Flags => DB_CREATE ;
-#print "[$db] [$!] $BerkeleyDB::Error\n" ;
+ #print "[$db] [$!] $BerkeleyDB::Error\n" ;
# create some data
my %data = (
diff --git a/db/perl/BerkeleyDB/t/db-4.x.t b/db/perl/BerkeleyDB/t/db-4.x.t
new file mode 100644
index 000000000..9b65a657f
--- /dev/null
+++ b/db/perl/BerkeleyDB/t/db-4.x.t
@@ -0,0 +1,56 @@
+#!./perl -w
+
+use strict ;
+use lib 't';
+use BerkeleyDB;
+use Test::More;
+use util (1);
+
+plan(skip_all => "this needs Berkeley DB 4.x.x or better\n" )
+ if $BerkeleyDB::db_version < 4;
+
+
+plan tests => 9;
+
+my $Dfile = "dbhash.tmp";
+unlink $Dfile;
+
+umask(0) ;
+
+my $db = BerkeleyDB::Btree->new(
+ -Filename => $Dfile,
+ -Flags => DB_CREATE,
+ -Property => DB_DUP | DB_DUPSORT
+) || die "Cannot open file $Dfile: $! $BerkeleyDB::Error\n" ;
+
+my $cursor = $db->db_cursor();
+
+my @pairs = qw(
+ Alabama/Athens
+ Alabama/Florence
+ Alaska/Anchorage
+ Alaska/Fairbanks
+ Arizona/Avondale
+ Arizona/Florence
+);
+
+for (@pairs) {
+ $db->db_put(split '/');
+}
+
+my @tests = (
+ ["Alaska", "Fa", "Alaska", "Fairbanks"],
+ ["Arizona", "Fl", "Arizona", "Florence"],
+ ["Alaska", "An", "Alaska", "Anchorage"],
+);
+
+#my $i;
+while (my $test = shift @tests) {
+ my ($k1, $v1, $k2, $v2) = @$test;
+ ok $cursor->c_get($k1, $v1, DB_GET_BOTH_RANGE) == 0;
+ is $k1, $k2;
+ is $v1, $v2;
+}
+
+undef $db;
+unlink $Dfile;
diff --git a/db/perl/BerkeleyDB/t/examples3.t b/db/perl/BerkeleyDB/t/examples3.t
index 15500bf54..5ed0c062f 100644
--- a/db/perl/BerkeleyDB/t/examples3.t
+++ b/db/perl/BerkeleyDB/t/examples3.t
@@ -77,13 +77,13 @@ my $redirect = "xyzt" ;
}
#print "[" . docat($redirect) . "]" ;
- is(docat_del($redirect), <<'EOM') ;
+ is(docat_del_sort($redirect), <<'EOM') ;
+green -> apple
+green -> banana
orange -> orange
-yellow -> banana
red -> apple
red -> tomato
-green -> banana
-green -> apple
+yellow -> banana
EOM
}
@@ -125,13 +125,13 @@ my $redirect = "xyzt" ;
}
#print "[" . docat($redirect) . "]" ;
- is(docat_del($redirect), <<'EOM') ;
+ is(docat_del_sort($redirect), <<'EOM') ;
+green -> apple
+green -> banana
orange -> orange
-yellow -> banana
red -> apple
red -> tomato
-green -> apple
-green -> banana
+yellow -> banana
EOM
}
diff --git a/db/perl/BerkeleyDB/t/examples3.t.T b/db/perl/BerkeleyDB/t/examples3.t.T
index 82f3c8547..3d41f7088 100644
--- a/db/perl/BerkeleyDB/t/examples3.t.T
+++ b/db/perl/BerkeleyDB/t/examples3.t.T
@@ -79,13 +79,13 @@ my $redirect = "xyzt" ;
}
#print "[" . docat($redirect) . "]" ;
- is(docat_del($redirect), <<'EOM') ;
+ is(docat_del_sort($redirect), <<'EOM') ;
+green -> apple
+green -> banana
orange -> orange
-yellow -> banana
red -> apple
red -> tomato
-green -> banana
-green -> apple
+yellow -> banana
EOM
}
@@ -129,13 +129,13 @@ my $redirect = "xyzt" ;
}
#print "[" . docat($redirect) . "]" ;
- is(docat_del($redirect), <<'EOM') ;
+ is(docat_del_sort($redirect), <<'EOM') ;
+green -> apple
+green -> banana
orange -> orange
-yellow -> banana
red -> apple
red -> tomato
-green -> apple
-green -> banana
+yellow -> banana
EOM
}
diff --git a/db/perl/BerkeleyDB/t/util.pm b/db/perl/BerkeleyDB/t/util.pm
index 01b2f05ac..52e7015f5 100644
--- a/db/perl/BerkeleyDB/t/util.pm
+++ b/db/perl/BerkeleyDB/t/util.pm
@@ -187,6 +187,20 @@ sub docat_del
return $result;
}
+sub docat_del_sort
+{
+ my $file = shift;
+ open(CAT,$file) || die "Cannot open $file: $!";
+ my @got = <CAT>;
+ @got = sort @got;
+
+ my $result = join('', @got) || "" ;
+ close(CAT);
+ unlink $file ;
+ $result = normalise($result);
+ return $result;
+}
+
sub writeFile
{
my $name = shift ;
diff --git a/db/perl/BerkeleyDB/typemap b/db/perl/BerkeleyDB/typemap
index 43035ed39..0717fd160 100644
--- a/db/perl/BerkeleyDB/typemap
+++ b/db/perl/BerkeleyDB/typemap
@@ -269,7 +269,7 @@ T_dbtdatum
T_dbtdatum_opt
DBT_clear($var) ;
- if (flagSet(DB_GET_BOTH)|| flagSet(DB_GET_BOTH)) {
+ if (flagSetBoth()) {
SV* my_sv = $arg ;
DBM_ckFilter(my_sv, filter_store_value, \"filter_store_value\");
SvGETMAGIC($arg) ;
@@ -282,7 +282,7 @@ T_dbtdatum_opt
T_dbtdatum_btree
DBT_clear($var) ;
- if (flagSet(DB_GET_BOTH)|| flagSet(DB_GET_BOTH)) {
+ if (flagSetBoth()) {
SV* my_sv = $arg ;
DBM_ckFilter(my_sv, filter_store_value, \"filter_store_value\");
SvGETMAGIC($arg) ;
diff --git a/db/perl/DB_File/Changes b/db/perl/DB_File/Changes
index d472ece99..44c393025 100644
--- a/db/perl/DB_File/Changes
+++ b/db/perl/DB_File/Changes
@@ -1,5 +1,13 @@
+1.815 4 February 2007
+
+ * A few casting cleanups for building with C++ from Steve Peters.
+
+ * Fixed problem with recno which happened if you changed directory after
+ opening the database. Problem reported by Andrew Pam.
+
+
1.814 11 November 2005
* Fix from Dominic Dunlop to tidy up an OS-X specific warning in
diff --git a/db/perl/DB_File/DB_File.pm b/db/perl/DB_File/DB_File.pm
index 3bdadede0..beb00b577 100644
--- a/db/perl/DB_File/DB_File.pm
+++ b/db/perl/DB_File/DB_File.pm
@@ -1,10 +1,10 @@
# DB_File.pm -- Perl 5 interface to Berkeley DB
#
# written by Paul Marquess (pmqs@cpan.org)
-# last modified 11th November 2005
-# version 1.814
+# last modified 4th February 2007
+# version 1.815
#
-# Copyright (c) 1995-2005 Paul Marquess. All rights reserved.
+# Copyright (c) 1995-2007 Paul Marquess. All rights reserved.
# This program is free software; you can redistribute it and/or
# modify it under the same terms as Perl itself.
@@ -165,7 +165,7 @@ our ($db_version, $use_XSLoader, $splice_end_array, $Error);
use Carp;
-$VERSION = "1.814" ;
+$VERSION = "1.815" ;
{
local $SIG{__WARN__} = sub {$splice_end_array = "@_";};
@@ -260,6 +260,10 @@ sub tie_hash_or_array
my (@arg) = @_ ;
my $tieHASH = ( (caller(1))[3] =~ /TIEHASH/ ) ;
+ use File::Spec;
+ $arg[1] = File::Spec->rel2abs($arg[1])
+ if defined $arg[1] ;
+
$arg[4] = tied %{ $arg[4] }
if @arg >= 5 && ref $arg[4] && $arg[4] =~ /=HASH/ && tied %{ $arg[4] } ;
diff --git a/db/perl/DB_File/DB_File.xs b/db/perl/DB_File/DB_File.xs
index 8f4cb2fe7..6e91dda61 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 <pmqs@cpan.org>
- last modified 11th November 2005
- version 1.814
+ last modified 4th February 2007
+ version 1.815
All comments/suggestions/problems are welcome
@@ -114,6 +114,7 @@
1.812 - no change
1.813 - no change
1.814 - no change
+ 1.814 - C++ casting fixes
*/
@@ -410,12 +411,12 @@ typedef struct {
typedef DB_File_type * DB_File ;
typedef DBT DBTKEY ;
-#define my_sv_setpvn(sv, d, s) sv_setpvn(sv, (s ? d : (void*)""), s)
+#define my_sv_setpvn(sv, d, s) sv_setpvn(sv, (s ? d : (const char *)""), s)
#define OutputValue(arg, name) \
{ if (RETVAL == 0) { \
SvGETMAGIC(arg) ; \
- my_sv_setpvn(arg, name.data, name.size) ; \
+ my_sv_setpvn(arg, (const char *)name.data, name.size) ; \
TAINT; \
SvTAINTED_on(arg); \
SvUTF8_off(arg); \
@@ -428,7 +429,7 @@ typedef DBT DBTKEY ;
{ \
SvGETMAGIC(arg) ; \
if (db->type != DB_RECNO) { \
- my_sv_setpvn(arg, name.data, name.size); \
+ my_sv_setpvn(arg, (const char *)name.data, name.size); \
} \
else \
sv_setiv(arg, (I32)*(I32*)name.data - 1); \
@@ -597,8 +598,8 @@ const DBT * key2 ;
PUSHMARK(SP) ;
EXTEND(SP,2) ;
- PUSHs(sv_2mortal(newSVpvn(data1,key1->size)));
- PUSHs(sv_2mortal(newSVpvn(data2,key2->size)));
+ PUSHs(sv_2mortal(newSVpvn((const char*)data1,key1->size)));
+ PUSHs(sv_2mortal(newSVpvn((const char*)data2,key2->size)));
PUTBACK ;
count = perl_call_sv(CurrentDB->compare, G_SCALAR);
diff --git a/db/perl/DB_File/MANIFEST b/db/perl/DB_File/MANIFEST
index 06b70ee68..20b3973a7 100644
--- a/db/perl/DB_File/MANIFEST
+++ b/db/perl/DB_File/MANIFEST
@@ -26,6 +26,7 @@ ppport.h
t/db-btree.t
t/db-hash.t
t/db-recno.t
+t/pod.t
typemap
version.c
META.yml Module meta-data (added by MakeMaker)
diff --git a/db/perl/DB_File/META.yml b/db/perl/DB_File/META.yml
index 44e0815ee..eb6b8161c 100644
--- a/db/perl/DB_File/META.yml
+++ b/db/perl/DB_File/META.yml
@@ -1,10 +1,13 @@
-# http://module-build.sourceforge.net/META-spec.html
-#XXXXXXX This is a prototype!!! It will change in the future!!! XXXXX#
-name: DB_File
-version: 1.814
-version_from: DB_File.pm
-installdirs: site
-requires:
-
-distribution_type: module
-generated_by: ExtUtils::MakeMaker version 6.17
+--- #YAML:1.0
+name: DB_File
+version: 1.815
+abstract: Perl5 access to Berkeley DB version 1.x
+license: perl
+generated_by: ExtUtils::MakeMaker version 6.31
+distribution_type: module
+requires:
+meta-spec:
+ url: http://module-build.sourceforge.net/META-spec-v1.2.html
+ version: 1.2
+author:
+ - Paul Marquess <pmqs@cpan.org>
diff --git a/db/perl/DB_File/Makefile.PL b/db/perl/DB_File/Makefile.PL
index 582addd92..3d359569d 100644
--- a/db/perl/DB_File/Makefile.PL
+++ b/db/perl/DB_File/Makefile.PL
@@ -50,6 +50,18 @@ WriteMakefile(
XSPROTOARG => '-noprototypes',
DEFINE => "-D_NOT_CORE $OS2 $VER_INFO $COMPAT185 $WALL",
OBJECT => 'version$(OBJ_EXT) DB_File$(OBJ_EXT)',
+ ((ExtUtils::MakeMaker->VERSION() gt '6.30')
+ ? ('LICENSE' => 'perl')
+ : ()
+ ),
+ (
+ $] >= 5.005
+ ? (ABSTRACT_FROM => 'DB_File.pm',
+ AUTHOR => 'Paul Marquess <pmqs@cpan.org>')
+ : ()
+ ),
+
+
#OPTIMIZE => '-g',
'depend' => { 'Makefile' => 'config.in',
'version$(OBJ_EXT)' => 'version.c'},
diff --git a/db/perl/DB_File/README b/db/perl/DB_File/README
index f22c68e05..31c000cbf 100644
--- a/db/perl/DB_File/README
+++ b/db/perl/DB_File/README
@@ -1,10 +1,10 @@
DB_File
- Version 1.814
+ Version 1.815
- 11th November 2005
+ 4th February 2007
- Copyright (c) 1995-2005 Paul Marquess. All rights reserved. This
+ Copyright (c) 1995-2007 Paul Marquess. All rights reserved. This
program is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.
diff --git a/db/perl/DB_File/t/pod.t b/db/perl/DB_File/t/pod.t
new file mode 100644
index 000000000..230df4bd9
--- /dev/null
+++ b/db/perl/DB_File/t/pod.t
@@ -0,0 +1,18 @@
+eval " use Test::More " ;
+
+if ($@)
+{
+ print "1..0 # Skip: Test::More required for testing POD\n" ;
+ exit 0;
+}
+
+eval "use Test::Pod 1.00";
+
+if ($@)
+{
+ print "1..0 # Skip: Test::Pod 1.00 required for testing POD\n" ;
+ exit 0;
+}
+
+all_pod_files_ok();
+
diff --git a/db/php_db4/config.m4 b/db/php_db4/config.m4
index 274965804..e415d286a 100644
--- a/db/php_db4/config.m4
+++ b/db/php_db4/config.m4
@@ -1,11 +1,10 @@
#
-# Copyright (c) 2004-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2004,2007 Oracle. All rights reserved.
#
# http://www.apache.org/licenses/LICENSE-2.0.txt
#
-dnl $Id: config.m4,v 12.6 2006/08/24 14:46:22 bostic Exp $
+dnl $Id: config.m4,v 12.8 2007/05/17 15:15:49 bostic Exp $
dnl config.m4 for extension db4
dnl Comments in this file start with the string 'dnl'.
diff --git a/db/php_db4/db4.cpp b/db/php_db4/db4.cpp
index ad952cb58..cccdc5791 100644
--- a/db/php_db4/db4.cpp
+++ b/db/php_db4/db4.cpp
@@ -1,6 +1,5 @@
/*-
- * Copyright (c) 2004-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2004,2007 Oracle. All rights reserved.
*
* http://www.apache.org/licenses/LICENSE-2.0.txt
*
@@ -59,12 +58,10 @@ struct php_DBC {
struct php_DB {
DB *db;
struct my_llist *open_cursors;
- int autocommit;
};
struct php_DB_ENV {
DB_ENV *dbenv;
- int autocommit;
};
static void _free_php_db_txn(zend_rsrc_list_entry *rsrc TSRMLS_DC)
@@ -283,9 +280,11 @@ ZEND_NAMED_FUNCTION(_wrap_new_DbEnv);
ZEND_NAMED_FUNCTION(_wrap_db_env_close);
ZEND_NAMED_FUNCTION(_wrap_db_env_dbremove);
ZEND_NAMED_FUNCTION(_wrap_db_env_dbrename);
+ZEND_NAMED_FUNCTION(_wrap_db_env_get_encrypt_flags);
ZEND_NAMED_FUNCTION(_wrap_db_env_open);
ZEND_NAMED_FUNCTION(_wrap_db_env_remove);
ZEND_NAMED_FUNCTION(_wrap_db_env_set_data_dir);
+ZEND_NAMED_FUNCTION(_wrap_db_env_set_encrypt);
ZEND_NAMED_FUNCTION(_wrap_db_env_txn_begin);
ZEND_NAMED_FUNCTION(_wrap_db_env_txn_checkpoint);
@@ -294,9 +293,11 @@ static zend_function_entry DbEnv_functions[] = {
ZEND_NAMED_FE(close, _wrap_db_env_close, NULL)
ZEND_NAMED_FE(dbremove, _wrap_db_env_dbremove, NULL)
ZEND_NAMED_FE(dbrename, _wrap_db_env_dbrename, NULL)
+ ZEND_NAMED_FE(get_encrypt, _wrap_db_env_get_encrypt_flags, NULL)
ZEND_NAMED_FE(open, _wrap_db_env_open, NULL)
ZEND_NAMED_FE(remove, _wrap_db_env_remove, NULL)
ZEND_NAMED_FE(set_data_dir, _wrap_db_env_set_data_dir, NULL)
+ ZEND_NAMED_FE(set_encrypt, _wrap_db_env_set_encrypt, NULL)
ZEND_NAMED_FE(txn_begin, _wrap_db_env_txn_begin, NULL)
ZEND_NAMED_FE(txn_checkpoint, _wrap_db_env_txn_checkpoint, NULL)
{ NULL, NULL, NULL}
@@ -317,10 +318,12 @@ ZEND_NAMED_FUNCTION(_wrap_db_open);
ZEND_NAMED_FUNCTION(_wrap_db_close);
ZEND_NAMED_FUNCTION(_wrap_db_del);
ZEND_NAMED_FUNCTION(_wrap_db_get);
+ZEND_NAMED_FUNCTION(_wrap_db_get_encrypt_flags);
ZEND_NAMED_FUNCTION(_wrap_db_pget);
ZEND_NAMED_FUNCTION(_wrap_db_get_type);
ZEND_NAMED_FUNCTION(_wrap_db_join);
ZEND_NAMED_FUNCTION(_wrap_db_put);
+ZEND_NAMED_FUNCTION(_wrap_db_set_encrypt);
ZEND_NAMED_FUNCTION(_wrap_db_stat);
ZEND_NAMED_FUNCTION(_wrap_db_sync);
ZEND_NAMED_FUNCTION(_wrap_db_truncate);
@@ -330,16 +333,18 @@ static zend_function_entry Db4_functions[] = {
ZEND_NAMED_FE(db4, _wrap_new_db4, NULL)
ZEND_NAMED_FE(open, _wrap_db_open, NULL)
ZEND_NAMED_FE(close, _wrap_db_close, NULL)
+ ZEND_NAMED_FE(cursor, _wrap_db_cursor, NULL)
ZEND_NAMED_FE(del, _wrap_db_del, NULL)
ZEND_NAMED_FE(get, _wrap_db_get, NULL)
+ ZEND_NAMED_FE(get_encrypt_flags, _wrap_db_get_encrypt_flags, NULL)
ZEND_NAMED_FE(pget, _wrap_db_pget, second_arg_force_ref)
ZEND_NAMED_FE(get_type, _wrap_db_get_type, NULL)
+ ZEND_NAMED_FE(join, _wrap_db_join, NULL)
ZEND_NAMED_FE(put, _wrap_db_put, NULL)
+ ZEND_NAMED_FE(set_encrypt, _wrap_db_set_encrypt, NULL)
ZEND_NAMED_FE(stat, _wrap_db_stat, NULL)
ZEND_NAMED_FE(sync, _wrap_db_sync, NULL)
ZEND_NAMED_FE(truncate, _wrap_db_truncate, NULL)
- ZEND_NAMED_FE(cursor, _wrap_db_cursor, NULL)
- ZEND_NAMED_FE(join, _wrap_db_join, NULL)
{ NULL, NULL, NULL}
};
/* }}} */
@@ -621,7 +626,6 @@ PHP_MINIT_FUNCTION(db4)
REGISTER_LONG_CONSTANT("DB_OK_QUEUE", DB_OK_QUEUE, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("DB_OK_RECNO", DB_OK_RECNO, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("DB_AM_CHKSUM", DB_AM_CHKSUM, CONST_CS | CONST_PERSISTENT);
- REGISTER_LONG_CONSTANT("DB_AM_CL_WRITER", DB_AM_CL_WRITER, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("DB_AM_COMPENSATE", DB_AM_COMPENSATE, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("DB_AM_CREATED", DB_AM_CREATED, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("DB_AM_CREATED_MSTR", DB_AM_CREATED_MSTR, CONST_CS | CONST_PERSISTENT);
@@ -666,11 +670,9 @@ PHP_MINIT_FUNCTION(db4)
REGISTER_LONG_CONSTANT("DB_ENV_AUTO_COMMIT", DB_ENV_AUTO_COMMIT, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("DB_ENV_CDB", DB_ENV_CDB, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("DB_ENV_CDB_ALLDB", DB_ENV_CDB_ALLDB, CONST_CS | CONST_PERSISTENT);
- REGISTER_LONG_CONSTANT("DB_ENV_CREATE", DB_ENV_CREATE, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("DB_ENV_DBLOCAL", DB_ENV_DBLOCAL, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("DB_ENV_DIRECT_DB", DB_ENV_DIRECT_DB, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("DB_ENV_DIRECT_LOG", DB_ENV_DIRECT_LOG, CONST_CS | CONST_PERSISTENT);
- REGISTER_LONG_CONSTANT("DB_ENV_FATAL", DB_ENV_FATAL, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("DB_ENV_LOCKDOWN", DB_ENV_LOCKDOWN, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("DB_ENV_LOG_AUTOREMOVE", DB_ENV_LOG_AUTOREMOVE, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("DB_ENV_NOLOCKING", DB_ENV_NOLOCKING, CONST_CS | CONST_PERSISTENT);
@@ -770,13 +772,12 @@ do { \
} \
} while(0)
-void setDb(zval *z, DB *db, int autocommit TSRMLS_DC)
+void setDb(zval *z, DB *db TSRMLS_DC)
{
long rsrc_id;
struct php_DB *pdb = (struct php_DB *) emalloc(sizeof(*pdb));
memset(pdb, 0, sizeof(*pdb));
pdb->db = db;
- pdb->autocommit = autocommit;
rsrc_id = ZEND_REGISTER_RESOURCE(NULL, pdb, le_db);
add_property_resource(z, "_db_ptr", rsrc_id);
}
@@ -803,7 +804,7 @@ DB *php_db4_getDbFromObj(zval *z TSRMLS_DC)
return NULL;
}
-#define getDbFromThis(a, b) \
+#define getDbFromThis(a) \
do { \
struct php_DB *pdb; \
zval *_self = getThis(); \
@@ -818,7 +819,6 @@ do { \
RETURN_FALSE; \
} \
(a) = pdb->db; \
- (b) = pdb->autocommit; \
} while(0)
#define getPhpDbFromThis(a) \
@@ -1172,7 +1172,7 @@ ZEND_NAMED_FUNCTION(_wrap_new_db4)
DB_ENV *dbenv = NULL;
zval *dbenv_obj = NULL;
zval *self;
- int ret, autocommit = 0;
+ int ret;
self = getThis();
if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|O",
@@ -1184,14 +1184,13 @@ ZEND_NAMED_FUNCTION(_wrap_new_db4)
dbenv = php_db4_getDbEnvFromObj(dbenv_obj TSRMLS_CC);
zval_add_ref(&dbenv_obj);
add_property_zval(self, "dbenv", dbenv_obj);
- autocommit = 1;
}
if((ret = my_db_create(&db, dbenv, 0)) != 0) {
php_error_docref(NULL TSRMLS_CC,
E_WARNING, "error occurred during open");
RETURN_FALSE;
}
- setDb(self, db, autocommit TSRMLS_CC);
+ setDb(self, db TSRMLS_CC);
}
/* }}} */
@@ -1208,11 +1207,10 @@ ZEND_NAMED_FUNCTION(_wrap_db_open)
u_int32_t flags = DB_CREATE;
int mode = 0;
int ret;
- u_int32_t autocommit;
zval *self;
self = getThis();
- getDbFromThis(db, autocommit);
+ getDbFromThis(db);
if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|O!sslll",
&dbtxn_obj, db_txn_ce,
@@ -1224,8 +1222,6 @@ ZEND_NAMED_FUNCTION(_wrap_db_open)
}
if(dbtxn_obj) {
dbtxn = php_db4_getDbTxnFromObj(dbtxn_obj TSRMLS_CC);
- } else if(autocommit) {
- flags |= DB_AUTO_COMMIT;
}
add_property_string(self, "file", file, 1);
add_property_string(self, "database", database, 1);
@@ -1248,7 +1244,6 @@ ZEND_NAMED_FUNCTION(_wrap_db_open)
ZEND_NAMED_FUNCTION(_wrap_db_close)
{
struct php_DB *pdb = NULL;
- int autocommit;
getPhpDbFromThis(pdb);
if(ZEND_NUM_ARGS()) {
@@ -1272,9 +1267,9 @@ ZEND_NAMED_FUNCTION(_wrap_db_del)
u_int32_t flags;
DBT key;
char *keyname;
- int keylen, autocommit;
+ int keylen;
- getDbFromThis(db, autocommit);
+ getDbFromThis(db);
if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|O", &keyname, &keylen,
&txn_obj, db_txn_ce) == FAILURE)
{
@@ -1283,8 +1278,6 @@ ZEND_NAMED_FUNCTION(_wrap_db_del)
if(txn_obj) {
getDbTxnFromThis(txn);
flags = 0;
- } else if(autocommit) {
- flags = DB_AUTO_COMMIT;
}
memset(&key, 0, sizeof(DBT));
key.data = keyname;
@@ -1302,10 +1295,10 @@ ZEND_NAMED_FUNCTION(_wrap_db_get)
zval *txn_obj = NULL;
DBT key, value;
char *keyname;
- int keylen, autocommit;
+ int keylen;
u_int32_t flags = 0;
- getDbFromThis(db, autocommit);
+ getDbFromThis(db);
if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|Ol", &keyname, &keylen,
&txn_obj, db_txn_ce, &flags) == FAILURE)
{
@@ -1313,8 +1306,6 @@ ZEND_NAMED_FUNCTION(_wrap_db_get)
}
if(txn_obj) {
txn = php_db4_getDbTxnFromObj(txn_obj);
- } else if (((flags & DB_CONSUME) || (flags & DB_CONSUME_WAIT)) && autocommit) {
- flags |= DB_AUTO_COMMIT;
}
memset(&key, 0, sizeof(DBT));
key.data = keyname;
@@ -1336,11 +1327,11 @@ ZEND_NAMED_FUNCTION(_wrap_db_pget)
zval *txn_obj = NULL;
DBT key, value, pkey;
char *keyname;
- int keylen, autocommit;
+ int keylen;
zval *z_pkey;
u_int32_t flags = 0;
- getDbFromThis(db, autocommit);
+ getDbFromThis(db);
if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sz|Ol",
&keyname, &keylen, &z_pkey,
&txn_obj, db_txn_ce, &flags) == FAILURE)
@@ -1349,8 +1340,6 @@ ZEND_NAMED_FUNCTION(_wrap_db_pget)
}
if(txn_obj) {
txn = php_db4_getDbTxnFromObj(txn_obj);
- } else if (((flags & DB_CONSUME) || (flags & DB_CONSUME_WAIT)) && autocommit) {
- flags |= DB_AUTO_COMMIT;
}
memset(&key, 0, sizeof(DBT));
key.data = keyname;
@@ -1377,9 +1366,8 @@ ZEND_NAMED_FUNCTION(_wrap_db_get_type)
{
DB *db = NULL;
DBTYPE type;
- int autocommit;
- getDbFromThis(db, autocommit);
+ getDbFromThis(db);
if(db->get_type(db, &type)) {
RETURN_FALSE;
}
@@ -1403,6 +1391,38 @@ ZEND_NAMED_FUNCTION(_wrap_db_get_type)
}
/* }}} */
+/* {{{ proto bool DB4::set_encrypt(string $password [, long $flags])
+ */
+ZEND_NAMED_FUNCTION(_wrap_db_set_encrypt)
+{
+ DB *db = NULL;
+ char *pass;
+ long passlen;
+ u_int32_t flags = 0;
+ getDbFromThis(db);
+ if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|l", &pass, &passlen,
+ &flags) == FAILURE)
+ {
+ return;
+ }
+ RETURN_BOOL(db->set_encrypt(db, pass, flags)?0:1);
+}
+/* }}} */
+
+/* {{{ proto int DB4::get_encrypt_flags()
+ */
+ZEND_NAMED_FUNCTION(_wrap_db_get_encrypt_flags)
+{
+ DB *db = NULL;
+
+ getDbFromThis(db);
+ u_int32_t flags = 0;
+ if (db->get_encrypt_flags(db, &flags) != 0)
+ RETURN_FALSE;
+ RETURN_LONG(flags);
+}
+/* }}} */
+
/* {{{ proto array DB4::stat([object $txn [, long flags]])
*/
ZEND_NAMED_FUNCTION(_wrap_db_stat)
@@ -1411,10 +1431,9 @@ ZEND_NAMED_FUNCTION(_wrap_db_stat)
DB_TXN *txn = NULL;
zval *txn_obj = NULL;
DBTYPE type;
- int autocommit;
u_int32_t flags = 0;
- getDbFromThis(db, autocommit);
+ getDbFromThis(db);
if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|zl", &txn_obj, db_txn_ce, &flags) == FAILURE) {
return;
}
@@ -1522,11 +1541,11 @@ ZEND_NAMED_FUNCTION(_wrap_db_join)
HashTable *array;
HashPosition pos;
zval **z_cursor;
- int num_cursors, rv, autocommit, i;
+ int num_cursors, rv, i;
u_int32_t flags = 0;
- getDbFromThis(db, autocommit);
+ getDbFromThis(db);
if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a|l",
&z_array, &flags) == FAILURE)
{
@@ -1561,12 +1580,12 @@ ZEND_NAMED_FUNCTION(_wrap_db_put)
DBT key, value;
char *keyname, *dataname;
int keylen, datalen;
- int ret, autocommit;
+ int ret;
zval *self;
long flags = 0;
self = getThis();
- getDbFromThis(db, autocommit);
+ getDbFromThis(db);
if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss|Ol", &keyname, &keylen,
&dataname, &datalen, &txn_obj, db_txn_ce, &flags) == FAILURE)
{
@@ -1574,8 +1593,6 @@ ZEND_NAMED_FUNCTION(_wrap_db_put)
}
if(txn_obj) {
txn = php_db4_getDbTxnFromObj(txn_obj TSRMLS_CC);
- } else if (autocommit) {
- flags |= DB_AUTO_COMMIT;
}
memset(&key, 0, sizeof(DBT));
key.data = keyname;
@@ -1596,9 +1613,8 @@ ZEND_NAMED_FUNCTION(_wrap_db_put)
*/
ZEND_NAMED_FUNCTION(_wrap_db_sync)
{
- int autocommit;
DB *db = NULL;
- getDbFromThis(db, autocommit);
+ getDbFromThis(db);
if(ZEND_NUM_ARGS()) {
WRONG_PARAM_COUNT;
}
@@ -1615,10 +1631,9 @@ ZEND_NAMED_FUNCTION(_wrap_db_truncate)
DB_TXN *txn = NULL;
zval *txn_obj = NULL;
long flags = DB_AUTO_COMMIT;
- int autocommit;
u_int32_t countp;
- getDbFromThis(db, autocommit);
+ getDbFromThis(db);
if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|Ol",
&txn_obj, db_txn_ce, &flags) == FAILURE)
{
@@ -1627,8 +1642,6 @@ ZEND_NAMED_FUNCTION(_wrap_db_truncate)
if(txn_obj) {
txn = php_db4_getDbTxnFromObj(txn_obj TSRMLS_CC);
flags = 0;
- } else if (autocommit) {
- flags = DB_AUTO_COMMIT;
}
if(db->truncate(db, txn, &countp, flags) == 0) {
RETURN_LONG(countp);
@@ -1646,10 +1659,10 @@ ZEND_NAMED_FUNCTION(_wrap_db_cursor)
zval *txn_obj = NULL, *self;
DBC *cursor = NULL;
u_int32_t flags = 0;
- int ret, autocommit;
+ int ret;
self = getThis();
- getDbFromThis(db, autocommit);
+ getDbFromThis(db);
if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|Ol", &txn_obj, db_txn_ce, &flags) == FAILURE)
{
return;
@@ -2046,6 +2059,41 @@ ZEND_NAMED_FUNCTION(_wrap_db_env_set_data_dir)
}
/* }}} */
+/* {{{ proto bool DB4Env::set_encrypt(string $password [, long $flags])
+ */
+ZEND_NAMED_FUNCTION(_wrap_db_env_set_encrypt)
+{
+ DB_ENV *dbenv;
+ zval *self;
+ char *pass;
+ long passlen;
+ u_int32_t flags = 0;
+ self = getThis();
+ getDbEnvFromThis(dbenv);
+ if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|l", &pass, &passlen,
+ &flags) == FAILURE)
+ {
+ return;
+ }
+ RETURN_BOOL(dbenv->set_encrypt(dbenv, pass, flags)?0:1);
+}
+/* }}} */
+
+/* {{{ proto int DB4Env::get_encrypt_flags()
+ */
+ZEND_NAMED_FUNCTION(_wrap_db_env_get_encrypt_flags)
+{
+ DB_ENV *dbenv;
+ zval *self;
+ u_int32_t flags = 0;
+ self = getThis();
+ getDbEnvFromThis(dbenv);
+ if (dbenv->get_encrypt_flags(dbenv, &flags) != 0)
+ RETURN_FALSE;
+ RETURN_LONG(flags);
+}
+/* }}} */
+
/* {{{ proto object Db4Env::txn_begin([object $parent_txn [, long $flags]])
*/
ZEND_NAMED_FUNCTION(_wrap_db_env_txn_begin)
diff --git a/db/php_db4/php_db4.h b/db/php_db4/php_db4.h
index a02ac6e18..51cceecad 100644
--- a/db/php_db4/php_db4.h
+++ b/db/php_db4/php_db4.h
@@ -1,6 +1,5 @@
/*-
- * Copyright (c) 2004-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2004,2007 Oracle. All rights reserved.
*
* http://www.apache.org/licenses/LICENSE-2.0.txt
*
diff --git a/db/qam/qam.c b/db/qam/qam.c
index 08c5e3417..8ef93e0b5 100644
--- a/db/qam/qam.c
+++ b/db/qam/qam.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1999-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1999,2007 Oracle. All rights reserved.
*
- * $Id: qam.c,v 12.38 2006/09/09 14:28:24 bostic Exp $
+ * $Id: qam.c,v 12.51 2007/05/17 17:18:03 bostic Exp $
*/
#include "db_config.h"
@@ -18,11 +17,11 @@
#include "dbinc/qam.h"
static int __qam_bulk __P((DBC *, DBT *, u_int32_t));
-static int __qam_c_close __P((DBC *, db_pgno_t, int *));
-static int __qam_c_del __P((DBC *));
-static int __qam_c_destroy __P((DBC *));
-static int __qam_c_get __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *));
-static int __qam_c_put __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *));
+static int __qamc_close __P((DBC *, db_pgno_t, int *));
+static int __qamc_del __P((DBC *));
+static int __qamc_destroy __P((DBC *));
+static int __qamc_get __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *));
+static int __qamc_put __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *));
static int __qam_consume __P((DBC *, QMETA *, db_recno_t));
static int __qam_getno __P((DB *, const DBT *, db_recno_t *));
@@ -199,7 +198,8 @@ no_partial:
indx, recno, datap, qp->flags,
olddata.size == 0 ? NULL : &olddata)) != 0)
goto err;
- }
+ } else if (!F_ISSET((dbc), DBC_RECOVER))
+ LSN_NOT_LOGGED(LSN(pagep));
F_SET(qp, QAM_VALID | QAM_SET);
memcpy(p, datap->data, datap->size);
@@ -213,12 +213,12 @@ err: if (allocated)
return (ret);
}
/*
- * __qam_c_put
+ * __qamc_put
* Cursor put for queued access method.
* BEFORE and AFTER cannot be specified.
*/
static int
-__qam_c_put(dbc, key, data, flags, pgnop)
+__qamc_put(dbc, key, data, flags, pgnop)
DBC *dbc;
DBT *key, *data;
u_int32_t flags;
@@ -281,7 +281,8 @@ __qam_c_put(dbc, key, data, flags, pgnop)
/* Doing record locking, release the page lock */
if ((t_ret = __LPUT(dbc, cp->lock)) != 0 && ret == 0)
ret = t_ret;
- if ((t_ret = __qam_fput(dbp, cp->pgno, cp->page, 0)) != 0 && ret == 0)
+ if ((t_ret = __qam_fput(dbp,
+ cp->pgno, cp->page, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
cp->page = NULL;
cp->lock = lock;
@@ -301,7 +302,7 @@ __qam_c_put(dbc, key, data, flags, pgnop)
return (ret);
if ((ret = __db_lget(dbc, LCK_COUPLE,
pg, DB_LOCK_READ, 0, &cp->lock)) != 0) {
- (void)__memp_fput(mpf, meta, 0);
+ (void)__memp_fput(mpf, meta, dbc->priority);
return (ret);
}
@@ -344,13 +345,14 @@ recheck:
/* Drop the read lock and get the a write lock on the meta page. */
if (writelock == 0 && (ret = __db_lget(dbc, LCK_COUPLE_ALWAYS,
pg, DB_LOCK_WRITE, 0, &cp->lock)) != 0) {
- (void)__memp_fput(mpf, meta, 0);
+ (void)__memp_fput(mpf, meta, dbc->priority);
return (ret);
}
if (writelock++ == 0)
goto recheck;
- if (((ret = __memp_dirty(mpf, &meta, dbc->txn, DB_MPOOL_DIRTY)) != 0 ||
+ if (((ret = __memp_dirty(mpf,
+ &meta, dbc->txn, dbc->priority, DB_MPOOL_DIRTY)) != 0 ||
(DBC_LOGGING(dbc) &&
(ret = __qam_mvptr_log(dbp, dbc->txn,
&meta->dbmeta.lsn, 0, opcode, meta->first_recno,
@@ -363,7 +365,8 @@ recheck:
if (opcode & QAM_SETFIRST)
meta->first_recno = new_first;
-done: if ((t_ret = __memp_fput(mpf, meta, 0)) != 0 && ret == 0)
+done: if ((t_ret = __memp_fput(mpf,
+ meta, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
/* Don't hold the meta page long term. */
@@ -407,7 +410,7 @@ __qam_append(dbc, key, data)
return (ret);
/* Write lock the meta page. */
if ((ret = __db_lget(dbc, 0, pg, DB_LOCK_WRITE, 0, &lock)) != 0) {
- (void)__memp_fput(mpf, meta, 0);
+ (void)__memp_fput(mpf, meta, dbc->priority);
return (ret);
}
@@ -483,11 +486,11 @@ __qam_append(dbc, key, data)
ret = t_ret;
if ((t_ret =
- __qam_fput(dbp, pg, page, 0)) != 0 && ret == 0)
+ __qam_fput(dbp, pg, page, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
/* Return the record number to the user. */
- if (ret == 0)
+ if (ret == 0 && key != NULL)
ret = __db_retcopy(dbp->dbenv, key,
&recno, sizeof(recno), &dbc->rkey->data, &dbc->rkey->ulen);
@@ -510,18 +513,18 @@ __qam_append(dbc, key, data)
}
err: /* Release the meta page. */
- if ((t_ret = __memp_fput(mpf, meta, 0)) != 0 && ret == 0)
+ if ((t_ret = __memp_fput(mpf, meta, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
return (ret);
}
/*
- * __qam_c_del --
+ * __qamc_del --
* Qam cursor->am_del function
*/
static int
-__qam_c_del(dbc)
+__qamc_del(dbc)
DBC *dbc;
{
DB *dbp;
@@ -549,7 +552,7 @@ __qam_c_del(dbc)
return (ret);
/* Write lock the meta page. */
if ((ret = __db_lget(dbc, 0, pg, DB_LOCK_READ, 0, &metalock)) != 0) {
- (void)__memp_fput(mpf, meta, 0);
+ (void)__memp_fput(mpf, meta, dbc->priority);
return (ret);
}
@@ -597,7 +600,8 @@ __qam_c_del(dbc)
pagep->pgno, cp->indx, cp->recno, &data)) != 0)
goto err;
}
- }
+ } else
+ LSN_NOT_LOGGED(LSN(pagep));
F_CLR(qp, QAM_VALID);
@@ -607,7 +611,6 @@ __qam_c_del(dbc)
* our position while we have the record locked.
* If it's pointing at the deleted record then lock
* the metapage and check again as lower numbered
-recheck:
* record may have been inserted.
*/
if (cp->recno == meta->first_recno) {
@@ -621,10 +624,11 @@ recheck:
ret = t_ret;
}
-err: if ((t_ret = __memp_fput(mpf, meta, 0)) != 0 && ret == 0)
+err: if ((t_ret = __memp_fput(mpf, meta, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
if (cp->page != NULL &&
- (t_ret = __qam_fput(dbp, cp->pgno, cp->page, 0)) != 0 && ret == 0)
+ (t_ret = __qam_fput(dbp,
+ cp->pgno, cp->page, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
cp->page = NULL;
@@ -641,11 +645,11 @@ err: if ((t_ret = __memp_fput(mpf, meta, 0)) != 0 && ret == 0)
#endif
/*
- * __qam_c_get --
- * Queue cursor->c_get function.
+ * __qamc_get --
+ * Queue DBC->get function.
*/
static int
-__qam_c_get(dbc, key, data, flags, pgnop)
+__qamc_get(dbc, key, data, flags, pgnop)
DBC *dbc;
DBT *key, *data;
u_int32_t flags;
@@ -675,18 +679,12 @@ __qam_c_get(dbc, key, data, flags, pgnop)
LOCK_INIT(lock);
LOCK_INIT(pglock);
- PANIC_CHECK(dbenv);
-
- wait = 0;
- with_delete = 0;
- retrying = 0;
lock_mode = F_ISSET(dbc, DBC_RMW) ? DB_LOCK_WRITE : DB_LOCK_READ;
meta_mode = DB_LOCK_READ;
meta = NULL;
- inorder = F_ISSET(dbp, DB_AM_INORDER);
- t_ret = 0;
*pgnop = 0;
pg = NULL;
+ retrying = t_ret = wait = with_delete = 0;
if (flags == DB_CONSUME_WAIT) {
wait = 1;
@@ -697,8 +695,9 @@ __qam_c_get(dbc, key, data, flags, pgnop)
flags = DB_FIRST;
meta_mode = lock_mode = DB_LOCK_WRITE;
}
+ inorder = F_ISSET(dbp, DB_AM_INORDER) && with_delete;
- DEBUG_LREAD(dbc, dbc->txn, "qam_c_get",
+ DEBUG_LREAD(dbc, dbc->txn, "qamc_get",
flags == DB_SET || flags == DB_SET_RANGE ? key : NULL, NULL, flags);
/* Make lint and friends happy. */
@@ -745,6 +744,7 @@ retry: /* Update the record number. */
case DB_CURRENT:
break;
case DB_NEXT_DUP:
+ case DB_PREV_DUP:
ret = DB_NOTFOUND;
goto err;
/* NOTREACHED */
@@ -778,7 +778,8 @@ retry: /* Update the record number. */
if (CDB_LOCKING(dbenv)) {
/* Drop the metapage before we wait. */
- ret = __memp_fput(mpf, meta, 0);
+ ret = __memp_fput(mpf,
+ meta, dbc->priority);
meta = NULL;
if (ret != 0)
goto err;
@@ -814,7 +815,7 @@ retry: /* Update the record number. */
goto retry;
}
/* Drop the metapage before we wait. */
- ret = __memp_fput(mpf, meta, 0);
+ ret = __memp_fput(mpf, meta, dbc->priority);
meta = NULL;
if (ret != 0)
goto err;
@@ -881,7 +882,7 @@ retry: /* Update the record number. */
goto err;
break;
default:
- ret = __db_unknown_flag(dbenv, "__qam_c_get", flags);
+ ret = __db_unknown_flag(dbenv, "__qamc_get", flags);
goto err;
}
@@ -894,7 +895,7 @@ retry: /* Update the record number. */
/* Lock the record. */
if (((ret = __db_lget(dbc, LCK_COUPLE, cp->recno, lock_mode,
- (with_delete && !retrying) ?
+ (with_delete && !inorder && !retrying) ?
DB_LOCK_NOWAIT | DB_LOCK_RECORD : DB_LOCK_RECORD,
&lock)) == DB_LOCK_DEADLOCK || ret == DB_LOCK_NOTGRANTED) &&
with_delete) {
@@ -902,7 +903,8 @@ retry: /* Update the record number. */
if (DBC_LOGGING(dbc))
(void)__log_printf(dbenv,
dbc->txn, "Queue S: %x %d %d %d",
- dbc->locker, cp->recno, first, meta->first_recno);
+ dbc->locker ? dbc->locker->id : 0,
+ cp->recno, first, meta->first_recno);
#endif
first = 0;
if ((ret =
@@ -917,12 +919,18 @@ retry: /* Update the record number. */
/*
* In the DB_FIRST or DB_LAST cases we must wait and then start over
- * since the first/last may have moved while we slept.
- * We release our locks and try again.
+ * since the first/last may have moved while we slept. If we are
+ * reading in order and the first record was not there, we can skip it
+ * as it must have been aborted was was skipped by a non-queue insert
+ * or we could not have gotten its lock. If we have the wrong
+ * record we release our locks and try again.
*/
switch (flags) {
default:
- if ((!inorder && with_delete) || !is_first)
+ if (inorder) {
+ if (first != cp->recno)
+ break;
+ } else if (with_delete || !is_first)
break;
/* FALLTHROUGH */
case DB_SET:
@@ -983,7 +991,7 @@ retry: /* Update the record number. */
if (!exact) {
release_retry: /* Release locks and retry, if possible. */
if (pg != NULL)
- (void)__qam_fput(dbp, cp->pgno, pg, 0);
+ (void)__qam_fput(dbp, cp->pgno, pg, dbc->priority);
cp->page = pg = NULL;
if ((ret = __LPUT(dbc, pglock)) != 0)
goto err1;
@@ -1082,13 +1090,13 @@ release_retry: /* Release locks and retry, if possible. */
DB_ASSERT(dbenv, !F_ISSET(dbp, DB_AM_SECONDARY));
if ((ret = __qam_dirty(dbp, cp->pgno, &cp->page,
- dbc->txn, 0)) != 0)
+ dbc->txn, dbc->priority)) != 0)
goto err1;
pg = cp->page;
/*
* Check and see if we *have* any secondary indices.
- * If we do, we're a primary, so call __db_c_del_primary
+ * If we do, we're a primary, so call __dbc_del_primary
* to delete the references to the item we're about to
* delete.
*
@@ -1097,20 +1105,20 @@ release_retry: /* Release locks and retry, if possible. */
* to perform any additional ops on this cursor.
*/
if (LIST_FIRST(&dbp->s_secondaries) != NULL) {
- if ((ret = __db_c_idup(dbc,
+ if ((ret = __dbc_idup(dbc,
&dbcdup, DB_POSITION)) != 0)
goto err1;
- if ((ret = __db_c_del_primary(dbcdup)) != 0) {
+ if ((ret = __dbc_del_primary(dbcdup)) != 0) {
/*
- * The __db_c_del_primary return is more
+ * The __dbc_del_primary return is more
* interesting.
*/
- (void)__db_c_close(dbcdup);
+ (void)__dbc_close(dbcdup);
goto err1;
}
- if ((ret = __db_c_close(dbcdup)) != 0)
+ if ((ret = __dbc_close(dbcdup)) != 0)
goto err1;
}
@@ -1128,7 +1136,8 @@ release_retry: /* Release locks and retry, if possible. */
pg->pgno, cp->indx, cp->recno, &tmp)) != 0)
goto err1;
}
- }
+ } else
+ LSN_NOT_LOGGED(LSN(pg));
F_CLR(qp, QAM_VALID);
@@ -1156,7 +1165,8 @@ release_retry: /* Release locks and retry, if possible. */
if (DBC_LOGGING(dbc))
(void)__log_printf(dbenv,
dbc->txn, "Queue D: %x %d %d %d",
- dbc->locker, cp->recno, first, meta->first_recno);
+ dbc->locker ? dbc->locker->id : 0,
+ cp->recno, first, meta->first_recno);
#endif
/*
* See if we deleted the "first" record. If
@@ -1175,8 +1185,8 @@ release_retry: /* Release locks and retry, if possible. */
done:
err1: if (cp->page != NULL) {
- if ((t_ret = __qam_fput(dbp, cp->pgno, cp->page, 0)) != 0 &&
- ret == 0)
+ if ((t_ret = __qam_fput(dbp,
+ cp->pgno, cp->page, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
/* Doing record locking, release the page lock */
@@ -1190,7 +1200,8 @@ lerr: (void)__LPUT(dbc, lock);
err: if (meta) {
/* Release the meta page. */
- if ((t_ret = __memp_fput(mpf, meta, 0)) != 0 && ret == 0)
+ if ((t_ret = __memp_fput(mpf,
+ meta, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
/* Don't hold the meta page long term. */
@@ -1222,13 +1233,12 @@ __qam_consume(dbc, meta, first)
db_indx_t save_indx;
db_pgno_t save_page;
db_recno_t current, save_recno;
- u_int32_t put_mode, rec_extent;
+ u_int32_t rec_extent;
int exact, ret, t_ret, wrapped;
dbp = dbc->dbp;
mpf = dbp->mpf;
cp = (QUEUE_CURSOR *)dbc->internal;
- put_mode = 0;
ret = 0;
save_page = cp->pgno;
@@ -1251,7 +1261,7 @@ __qam_consume(dbc, meta, first)
if (ret != 0)
goto done;
if ((ret =
- __qam_fput(dbp, cp->pgno, cp->page, 0)) != 0)
+ __qam_fput(dbp, cp->pgno, cp->page, dbc->priority)) != 0)
goto done;
cp->page = NULL;
if ((ret = __qam_position(dbc,
@@ -1291,12 +1301,12 @@ __qam_consume(dbc, meta, first)
#ifdef QDEBUG
if (DBC_LOGGING(dbc))
(void)__log_printf(dbp->dbenv, dbc->txn,
- "Queue R: %x %d %d %d", dbc->locker,
+ "Queue R: %x %d %d %d",
+ dbc->locker ? dbc->locker->id : 0,
cp->pgno, first, meta->first_recno);
#endif
- put_mode |= DB_MPOOL_DISCARD;
- if ((ret =
- __qam_fput(dbp, cp->pgno, cp->page, put_mode)) != 0)
+ if ((ret = __qam_fput(dbp,
+ cp->pgno, cp->page, DB_PRIORITY_VERY_LOW)) != 0)
break;
cp->page = NULL;
@@ -1308,8 +1318,8 @@ __qam_consume(dbc, meta, first)
}
if (ret != 0)
break;
- } else if (cp->page != NULL && (ret =
- __qam_fput(dbp, cp->pgno, cp->page, put_mode)) != 0)
+ } else if (cp->page != NULL && (ret = __qam_fput(dbp,
+ cp->pgno, cp->page, dbc->priority)) != 0)
break;
cp->page = NULL;
first++;
@@ -1339,11 +1349,10 @@ __qam_consume(dbc, meta, first)
(void)__LPUT(dbc, lock);
break;
}
- put_mode = 0;
if ((ret =__LPUT(dbc, lock)) != 0 ||
(ret = __LPUT(dbc, cp->lock)) != 0 || exact) {
if ((t_ret = __qam_fput(dbp, cp->pgno,
- cp->page, put_mode)) != 0 && ret == 0)
+ cp->page, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
cp->page = NULL;
break;
@@ -1360,19 +1369,23 @@ __qam_consume(dbc, meta, first)
* Advance first_recno to this point.
*/
if (ret == 0 && meta->first_recno != first) {
- if ((ret = __memp_dirty(mpf, &meta, dbc->txn, 0)) != 0)
+ if ((ret = __memp_dirty(mpf,
+ &meta, dbc->txn, dbc->priority, 0)) != 0)
goto done;
#ifdef QDEBUG
if (DBC_LOGGING(dbc))
(void)__log_printf(dbp->dbenv, dbc->txn,
- "Queue M: %x %d %d %d", dbc->locker, cp->recno,
- first, meta->first_recno);
+ "Queue M: %x %d %d %d",
+ dbc->locker ? dbc->locker->id : 0,
+ cp->recno, first, meta->first_recno);
#endif
- if (DBC_LOGGING(dbc))
+ if (DBC_LOGGING(dbc)) {
if ((ret = __qam_incfirst_log(dbp,
dbc->txn, &meta->dbmeta.lsn, 0,
cp->recno, PGNO_BASE_MD)) != 0)
goto done;
+ } else
+ LSN_NOT_LOGGED(meta->dbmeta.lsn);
meta->first_recno = first;
}
@@ -1517,8 +1530,8 @@ get_space:
ret = t_ret;
if (cp->page != NULL) {
- if ((t_ret =
- __qam_fput(dbp, cp->pgno, cp->page, 0)) != 0 && ret == 0)
+ if ((t_ret = __qam_fput(dbp,
+ cp->pgno, cp->page, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
cp->page = NULL;
}
@@ -1542,7 +1555,7 @@ get_space:
*offp = (u_int32_t)-1;
done: /* Release the meta page. */
- if ((t_ret = __memp_fput(mpf, meta, 0)) != 0 && ret == 0)
+ if ((t_ret = __memp_fput(mpf, meta, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
if ((t_ret = __LPUT(dbc, metalock)) != 0 && ret == 0)
ret = t_ret;
@@ -1553,11 +1566,11 @@ done: /* Release the meta page. */
}
/*
- * __qam_c_close --
+ * __qamc_close --
* Close down the cursor from a single use.
*/
static int
-__qam_c_close(dbc, root_pgno, rmroot)
+__qamc_close(dbc, root_pgno, rmroot)
DBC *dbc;
db_pgno_t root_pgno;
int *rmroot;
@@ -1585,14 +1598,14 @@ __qam_c_close(dbc, root_pgno, rmroot)
}
/*
- * __qam_c_dup --
+ * __qamc_dup --
* Duplicate a queue cursor, such that the new one holds appropriate
* locks for the position of the original.
*
- * PUBLIC: int __qam_c_dup __P((DBC *, DBC *));
+ * PUBLIC: int __qamc_dup __P((DBC *, DBC *));
*/
int
-__qam_c_dup(orig_dbc, new_dbc)
+__qamc_dup(orig_dbc, new_dbc)
DBC *orig_dbc, *new_dbc;
{
QUEUE_CURSOR *orig, *new;
@@ -1606,12 +1619,12 @@ __qam_c_dup(orig_dbc, new_dbc)
}
/*
- * __qam_c_init
+ * __qamc_init
*
- * PUBLIC: int __qam_c_init __P((DBC *));
+ * PUBLIC: int __qamc_init __P((DBC *));
*/
int
-__qam_c_init(dbc)
+__qamc_init(dbc)
DBC *dbc;
{
QUEUE_CURSOR *cp;
@@ -1630,30 +1643,30 @@ __qam_c_init(dbc)
}
/* Initialize methods. */
- dbc->c_close = __db_c_close_pp;
- dbc->c_count = __db_c_count_pp;
- dbc->c_del = __db_c_del_pp;
- dbc->c_dup = __db_c_dup_pp;
- dbc->c_get = __db_c_get_pp;
- dbc->c_pget = __db_c_pget_pp;
- dbc->c_put = __db_c_put_pp;
- dbc->c_am_bulk = __qam_bulk;
- dbc->c_am_close = __qam_c_close;
- dbc->c_am_del = __qam_c_del;
- dbc->c_am_destroy = __qam_c_destroy;
- dbc->c_am_get = __qam_c_get;
- dbc->c_am_put = __qam_c_put;
- dbc->c_am_writelock = NULL;
+ dbc->close = dbc->c_close = __dbc_close_pp;
+ dbc->count = dbc->c_count = __dbc_count_pp;
+ dbc->del = dbc->c_del = __dbc_del_pp;
+ dbc->dup = dbc->c_dup = __dbc_dup_pp;
+ dbc->get = dbc->c_get = __dbc_get_pp;
+ dbc->pget = dbc->c_pget = __dbc_pget_pp;
+ dbc->put = dbc->c_put = __dbc_put_pp;
+ dbc->am_bulk = __qam_bulk;
+ dbc->am_close = __qamc_close;
+ dbc->am_del = __qamc_del;
+ dbc->am_destroy = __qamc_destroy;
+ dbc->am_get = __qamc_get;
+ dbc->am_put = __qamc_put;
+ dbc->am_writelock = NULL;
return (0);
}
/*
- * __qam_c_destroy --
+ * __qamc_destroy --
* Close a single cursor -- internal version.
*/
static int
-__qam_c_destroy(dbc)
+__qamc_destroy(dbc)
DBC *dbc;
{
/* Discard the structures. */
@@ -1702,7 +1715,7 @@ __qam_truncate(dbc, countp)
/* Walk the queue, counting rows. */
for (count = 0;
- (ret = __qam_c_get(dbc, NULL, NULL, DB_CONSUME, &metapno)) == 0;)
+ (ret = __qamc_get(dbc, NULL, NULL, DB_CONSUME, &metapno)) == 0;)
count++;
if (ret != DB_NOTFOUND)
return (ret);
@@ -1731,11 +1744,12 @@ __qam_truncate(dbc, countp)
ret = __qam_mvptr_log(dbp, dbc->txn, &meta->dbmeta.lsn, 0,
QAM_SETCUR | QAM_SETFIRST | QAM_TRUNCATE, meta->first_recno,
1, meta->cur_recno, 1, &meta->dbmeta.lsn, PGNO_BASE_MD);
- }
+ } else
+ LSN_NOT_LOGGED(meta->dbmeta.lsn);
if (ret == 0)
meta->first_recno = meta->cur_recno = 1;
- if ((t_ret = __memp_fput(mpf, meta, 0)) != 0 && ret == 0)
+ if ((t_ret = __memp_fput(mpf, meta, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
if ((t_ret = __LPUT(dbc, metalock)) != 0 && ret == 0)
ret = t_ret;
@@ -1764,7 +1778,7 @@ __qam_delete(dbc, key)
if ((ret = __qam_getno(dbc->dbp, key, &cp->recno)) != 0)
goto err;
- ret = __qam_c_del(dbc);
+ ret = __qamc_del(dbc);
err: return (ret);
}
diff --git a/db/qam/qam.src b/db/qam/qam.src
index 4e795e553..f89e552c9 100644
--- a/db/qam/qam.src
+++ b/db/qam/qam.src
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1999-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1999,2007 Oracle. All rights reserved.
*
- * $Id: qam.src,v 12.5 2006/08/24 14:46:23 bostic Exp $
+ * $Id: qam.src,v 12.7 2007/05/17 15:15:50 bostic Exp $
*/
PREFIX __qam
diff --git a/db/qam/qam_auto.c b/db/qam/qam_auto.c
index acca78332..79c2d3de6 100644
--- a/db/qam/qam_auto.c
+++ b/db/qam/qam_auto.c
@@ -138,6 +138,7 @@ __qam_incfirst_log(dbp, txnp, ret_lsnp, flags, recno, meta_pgno)
*ret_lsnp = *rlsnp;
}
} else {
+ ret = 0;
#ifdef DIAGNOSTIC
/*
* Set the debug bit if we are going to log non-durable
@@ -147,10 +148,9 @@ __qam_incfirst_log(dbp, txnp, ret_lsnp, flags, recno, meta_pgno)
rectype |= DB_debug_FLAG;
memcpy(logrec.data, &rectype, sizeof(rectype));
- ret = __log_put(dbenv,
- rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
-#else
- ret = 0;
+ if (!IS_REP_CLIENT(dbenv))
+ ret = __log_put(dbenv,
+ rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
#endif
STAILQ_INSERT_HEAD(&txnp->logs, lr, links);
F_SET((TXN_DETAIL *)txnp->td, TXN_DTL_INMEMORY);
@@ -387,6 +387,7 @@ __qam_mvptr_log(dbp, txnp, ret_lsnp, flags,
*ret_lsnp = *rlsnp;
}
} else {
+ ret = 0;
#ifdef DIAGNOSTIC
/*
* Set the debug bit if we are going to log non-durable
@@ -396,10 +397,9 @@ __qam_mvptr_log(dbp, txnp, ret_lsnp, flags,
rectype |= DB_debug_FLAG;
memcpy(logrec.data, &rectype, sizeof(rectype));
- ret = __log_put(dbenv,
- rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
-#else
- ret = 0;
+ if (!IS_REP_CLIENT(dbenv))
+ ret = __log_put(dbenv,
+ rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
#endif
STAILQ_INSERT_HEAD(&txnp->logs, lr, links);
F_SET((TXN_DETAIL *)txnp->td, TXN_DTL_INMEMORY);
@@ -633,6 +633,7 @@ __qam_del_log(dbp, txnp, ret_lsnp, flags, lsn, pgno, indx, recno)
*ret_lsnp = *rlsnp;
}
} else {
+ ret = 0;
#ifdef DIAGNOSTIC
/*
* Set the debug bit if we are going to log non-durable
@@ -642,10 +643,9 @@ __qam_del_log(dbp, txnp, ret_lsnp, flags, lsn, pgno, indx, recno)
rectype |= DB_debug_FLAG;
memcpy(logrec.data, &rectype, sizeof(rectype));
- ret = __log_put(dbenv,
- rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
-#else
- ret = 0;
+ if (!IS_REP_CLIENT(dbenv))
+ ret = __log_put(dbenv,
+ rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
#endif
STAILQ_INSERT_HEAD(&txnp->logs, lr, links);
F_SET((TXN_DETAIL *)txnp->td, TXN_DTL_INMEMORY);
@@ -901,6 +901,7 @@ __qam_add_log(dbp, txnp, ret_lsnp, flags, lsn, pgno, indx, recno, data,
*ret_lsnp = *rlsnp;
}
} else {
+ ret = 0;
#ifdef DIAGNOSTIC
/*
* Set the debug bit if we are going to log non-durable
@@ -910,10 +911,9 @@ __qam_add_log(dbp, txnp, ret_lsnp, flags, lsn, pgno, indx, recno, data,
rectype |= DB_debug_FLAG;
memcpy(logrec.data, &rectype, sizeof(rectype));
- ret = __log_put(dbenv,
- rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
-#else
- ret = 0;
+ if (!IS_REP_CLIENT(dbenv))
+ ret = __log_put(dbenv,
+ rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
#endif
STAILQ_INSERT_HEAD(&txnp->logs, lr, links);
F_SET((TXN_DETAIL *)txnp->td, TXN_DTL_INMEMORY);
@@ -1165,6 +1165,7 @@ __qam_delext_log(dbp, txnp, ret_lsnp, flags, lsn, pgno, indx, recno, data)
*ret_lsnp = *rlsnp;
}
} else {
+ ret = 0;
#ifdef DIAGNOSTIC
/*
* Set the debug bit if we are going to log non-durable
@@ -1174,10 +1175,9 @@ __qam_delext_log(dbp, txnp, ret_lsnp, flags, lsn, pgno, indx, recno, data)
rectype |= DB_debug_FLAG;
memcpy(logrec.data, &rectype, sizeof(rectype));
- ret = __log_put(dbenv,
- rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
-#else
- ret = 0;
+ if (!IS_REP_CLIENT(dbenv))
+ ret = __log_put(dbenv,
+ rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
#endif
STAILQ_INSERT_HEAD(&txnp->logs, lr, links);
F_SET((TXN_DETAIL *)txnp->td, TXN_DTL_INMEMORY);
diff --git a/db/qam/qam_conv.c b/db/qam/qam_conv.c
index 85fb47871..0f3584390 100644
--- a/db/qam/qam_conv.c
+++ b/db/qam/qam_conv.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1999-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1999,2007 Oracle. All rights reserved.
*
- * $Id: qam_conv.c,v 12.4 2006/08/24 14:46:24 bostic Exp $
+ * $Id: qam_conv.c,v 12.6 2007/05/17 15:15:50 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/qam/qam_files.c b/db/qam/qam_files.c
index 62ad8ed8a..eebe16e64 100644
--- a/db/qam/qam_files.c
+++ b/db/qam/qam_files.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1999-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1999,2007 Oracle. All rights reserved.
*
- * $Id: qam_files.c,v 12.17 2006/08/24 14:46:24 bostic Exp $
+ * $Id: qam_files.c,v 12.31 2007/06/08 17:34:56 bostic Exp $
*/
#include "db_config.h"
@@ -27,15 +26,16 @@
* Calculate which extent the page is in, open and create if necessary.
*
* PUBLIC: int __qam_fprobe __P((DB *, db_pgno_t,
- * PUBLIC: DB_TXN *, void *, qam_probe_mode, u_int32_t));
+ * PUBLIC: DB_TXN *, void *, qam_probe_mode, DB_CACHE_PRIORITY, u_int32_t));
*/
int
-__qam_fprobe(dbp, pgno, txn, addrp, mode, flags)
+__qam_fprobe(dbp, pgno, txn, addrp, mode, priority, flags)
DB *dbp;
db_pgno_t pgno;
DB_TXN *txn;
void *addrp;
qam_probe_mode mode;
+ DB_CACHE_PRIORITY priority;
u_int32_t flags;
{
DB_ENV *dbenv;
@@ -57,9 +57,9 @@ __qam_fprobe(dbp, pgno, txn, addrp, mode, flags)
case QAM_PROBE_GET:
return (__memp_fget(mpf, &pgno, txn, flags, addrp));
case QAM_PROBE_PUT:
- return (__memp_fput(mpf, addrp, flags));
+ return (__memp_fput(mpf, addrp, priority));
case QAM_PROBE_DIRTY:
- return (__memp_dirty(mpf, addrp, txn, flags));
+ return (__memp_dirty(mpf, addrp, txn, priority, flags));
case QAM_PROBE_MPF:
*(DB_MPOOLFILE **)addrp = mpf;
return (0);
@@ -296,10 +296,11 @@ err:
return (0);
break;
case QAM_PROBE_PUT:
- ret = __memp_fput(mpf, addrp, flags);
+ ret = __memp_fput(mpf, addrp, dbp->priority);
break;
case QAM_PROBE_DIRTY:
- return (__memp_dirty(mpf, addrp, txn, flags));
+ return (__memp_dirty(mpf,
+ addrp, txn, dbp->priority, flags));
case QAM_PROBE_MPF:
*(DB_MPOOLFILE **)addrp = mpf;
return (0);
@@ -461,25 +462,17 @@ int
__qam_sync(dbp)
DB *dbp;
{
- DB_ENV *dbenv;
- DB_MPOOLFILE *mpf;
-
- dbenv = dbp->dbenv;
- mpf = dbp->mpf;
-
+ int ret;
/*
- * We need to flush all extent files. There is no easy way to find
- * all the extents for this queue which are currently open. For now
- * just flush the whole cache. An alternative would be to have a
- * call into the cache layer that would flush all of the queue extent
- * files it has open (there's a flag when we open a queue extent file,
- * so the cache layer can identify them).
+ * We can't easily identify the extent files associated with a specific
+ * Queue file, so flush all Queue extent files.
*/
-
- if (((QUEUE *)dbp->q_internal)->page_ext == 0)
- return (__memp_fsync(mpf));
- else
- return (__memp_sync(dbenv, NULL));
+ if ((ret = __memp_fsync(dbp->mpf)) != 0)
+ return (ret);
+ if (((QUEUE *)dbp->q_internal)->page_ext != 0)
+ return (__memp_sync_int(
+ dbp->dbenv, NULL, 0, DB_SYNC_QUEUE_EXTENT, NULL, NULL));
+ return (0);
}
/*
@@ -487,7 +480,7 @@ __qam_sync(dbp)
* Another thread may close the handle so this should only
* be used single threaded or with care.
*
- * PUBLIC: int __qam_gen_filelist __P(( DB *, QUEUE_FILELIST **));
+ * PUBLIC: int __qam_gen_filelist __P((DB *, QUEUE_FILELIST **));
*/
int
__qam_gen_filelist(dbp, filelistp)
@@ -523,7 +516,7 @@ __qam_gen_filelist(dbp, filelistp)
current = meta->cur_recno;
first = meta->first_recno;
- if ((ret = __memp_fput(mpf, meta, 0)) != 0)
+ if ((ret = __memp_fput(mpf, meta, dbp->priority)) != 0)
return (ret);
/*
@@ -541,6 +534,9 @@ __qam_gen_filelist(dbp, filelistp)
else
extent_cnt =
(current + (UINT32_MAX - first)) / rec_extent + 4;
+
+ if (extent_cnt == 0)
+ return (0);
if ((ret = __os_calloc(dbenv,
extent_cnt, sizeof(QUEUE_FILELIST), filelistp)) != 0)
return (ret);
@@ -563,7 +559,7 @@ again:
for (i = first; i >= first && i <= stop; i += rec_extent) {
if ((ret = __qam_fprobe(dbp, QAM_RECNO_PAGE(dbp, i), NULL,
- &fp->mpf, QAM_PROBE_MPF, 0)) != 0) {
+ &fp->mpf, QAM_PROBE_MPF, dbp->priority, 0)) != 0) {
if (ret == ENOENT)
continue;
return (ret);
@@ -601,7 +597,7 @@ __qam_extent_names(dbenv, name, namelistp)
*namelistp = NULL;
filelist = NULL;
- if ((ret = db_create(&dbp, dbenv, 0)) != 0)
+ if ((ret = __db_create_internal(&dbp, dbenv, 0)) != 0)
return (ret);
if ((ret = __db_open(dbp,
NULL, name, NULL, DB_QUEUE, DB_RDONLY, 0, PGNO_BASE_MD)) != 0)
@@ -691,7 +687,8 @@ __qam_exid(dbp, fidp, exnum)
*
* PUBLIC: int __qam_nameop __P((DB *, DB_TXN *, const char *, qam_name_op));
*/
-int __qam_nameop(dbp, txn, newname, op)
+int
+__qam_nameop(dbp, txn, newname, op)
DB *dbp;
DB_TXN *txn;
const char *newname;
@@ -822,7 +819,7 @@ int __qam_nameop(dbp, txn, newname, op)
ndir, PATH_SEPARATOR[0], new, exid);
QAM_EXNAME(qp, exid, buf, sizeof(buf));
if ((ret = __fop_rename(dbenv,
- txn, buf, nbuf, fid, DB_APP_DATA,
+ txn, buf, nbuf, fid, DB_APP_DATA, 1,
F_ISSET(dbp, DB_AM_NOT_DURABLE) ?
DB_LOG_NOT_DURABLE : 0)) != 0)
goto err;
diff --git a/db/qam/qam_method.c b/db/qam/qam_method.c
index ff5129517..ebb94c7b5 100644
--- a/db/qam/qam_method.c
+++ b/db/qam/qam_method.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1999-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1999,2007 Oracle. All rights reserved.
*
- * $Id: qam_method.c,v 12.8 2006/08/24 14:46:24 bostic Exp $
+ * $Id: qam_method.c,v 12.15 2007/05/17 15:15:50 bostic Exp $
*/
#include "db_config.h"
@@ -180,7 +179,7 @@ __queue_pageinfo(dbp, firstp, lastp, emptyp, prpage, flags)
COMPQUIET(flags, 0);
#endif
- if ((t_ret = __memp_fput(mpf, meta, 0)) != 0 && ret == 0)
+ if ((t_ret = __memp_fput(mpf, meta, dbp->priority)) != 0 && ret == 0)
ret = t_ret;
return (ret);
@@ -231,7 +230,7 @@ begin:
return (ret);
}
(void)__db_prpage(dbp, h, flags);
- if ((ret = __qam_fput(dbp, i, h, 0)) != 0)
+ if ((ret = __qam_fput(dbp, i, h, dbp->priority)) != 0)
return (ret);
}
@@ -295,8 +294,6 @@ __qam_rr(dbp, txn, name, subdb, newname, op)
dbenv = dbp->dbenv;
ret = 0;
- PANIC_CHECK(dbenv);
-
if (subdb != NULL && name != NULL) {
__db_errx(dbenv,
"Queue does not support multiple databases per file");
@@ -310,14 +307,14 @@ __qam_rr(dbp, txn, name, subdb, newname, op)
if (F_ISSET(dbp, DB_AM_OPEN_CALLED))
tmpdbp = dbp;
else {
- if ((ret = db_create(&tmpdbp, dbenv, 0)) != 0)
+ if ((ret = __db_create_internal(&tmpdbp, dbenv, 0)) != 0)
return (ret);
/*
* We need to make sure we don't self-deadlock, so give
* this dbp the same locker as the incoming one.
*/
- tmpdbp->lid = dbp->lid;
+ tmpdbp->locker = dbp->locker;
if ((ret = __db_open(tmpdbp, txn,
name, NULL, DB_QUEUE, DB_RDONLY, 0, PGNO_BASE_MD)) != 0)
goto err;
@@ -332,16 +329,22 @@ err: /*
* Since we copied the locker ID from the dbp, we'd better not
* free it here.
*/
- tmpdbp->lid = DB_LOCK_INVALIDID;
+ tmpdbp->locker = NULL;
/* We need to remove the lock event we associated with this. */
if (txn != NULL)
__txn_remlock(dbenv,
txn, &tmpdbp->handle_lock, DB_LOCK_INVALIDID);
- if ((t_ret =
- __db_close(tmpdbp, txn, DB_NOSYNC)) != 0 && ret == 0)
- ret = t_ret;
+ if (txn == NULL ) {
+ if ((t_ret = __db_close(tmpdbp,
+ txn, DB_NOSYNC)) != 0 && ret == 0)
+ ret = t_ret;
+ } else {
+ if ((t_ret = __txn_closeevent(dbenv,
+ txn, tmpdbp)) != 0 && ret == 0)
+ ret = t_ret;
+ }
}
return (ret);
}
diff --git a/db/qam/qam_open.c b/db/qam/qam_open.c
index 75df8e41c..a00a0f319 100644
--- a/db/qam/qam_open.c
+++ b/db/qam/qam_open.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1999-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1999,2007 Oracle. All rights reserved.
*
- * $Id: qam_open.c,v 12.11 2006/08/24 14:46:24 bostic Exp $
+ * $Id: qam_open.c,v 12.17 2007/05/17 15:15:50 bostic Exp $
*/
#include "db_config.h"
@@ -104,22 +103,22 @@ __qam_open(dbp, txn, name, base_pgno, mode, flags)
if (mode == 0)
mode = __db_omode("rw-rw----");
t->mode = mode;
- t->re_pad = qmeta->re_pad;
+ t->re_pad = (int)qmeta->re_pad;
t->re_len = qmeta->re_len;
t->rec_page = qmeta->rec_page;
t->q_meta = base_pgno;
t->q_root = base_pgno + 1;
-err: if (qmeta != NULL &&
- (t_ret = __memp_fput(mpf, qmeta, 0)) != 0 && ret == 0)
+err: if (qmeta != NULL && (t_ret =
+ __memp_fput(mpf, qmeta, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
/* Don't hold the meta page long term. */
if ((t_ret = __LPUT(dbc, metalock)) != 0 && ret == 0)
ret = t_ret;
- if ((t_ret = __db_c_close(dbc)) != 0 && ret == 0)
+ if ((t_ret = __dbc_close(dbc)) != 0 && ret == 0)
ret = t_ret;
return (ret);
@@ -254,7 +253,7 @@ __qam_init_meta(dbp, meta)
meta->crypto_magic = meta->dbmeta.magic;
}
meta->dbmeta.type = P_QAMMETA;
- meta->re_pad = t->re_pad;
+ meta->re_pad = (u_int32_t)t->re_pad;
meta->re_len = t->re_len;
meta->rec_page = CALC_QAM_RECNO_PER_PAGE(dbp);
meta->cur_recno = 1;
@@ -278,12 +277,6 @@ __qam_init_meta(dbp, meta)
* __qam_new_file --
* Create the necessary pages to begin a new queue database file.
*
- * This code appears more complex than it is because of the two cases (named
- * and unnamed). The way to read the code is that for each page being created,
- * there are three parts: 1) a "get page" chunk (which either uses malloc'd
- * memory or calls __memp_fget), 2) the initialization, and 3) the "put page"
- * chunk which either does a fop write or an __memp_fput.
- *
* PUBLIC: int __qam_new_file __P((DB *, DB_TXN *, DB_FH *, const char *));
*/
int
@@ -293,61 +286,62 @@ __qam_new_file(dbp, txn, fhp, name)
DB_FH *fhp;
const char *name;
{
- QMETA *meta;
+ DBT pdbt;
DB_ENV *dbenv;
DB_MPOOLFILE *mpf;
DB_PGINFO pginfo;
- DBT pdbt;
+ QMETA *meta;
db_pgno_t pgno;
- int ret;
- void *buf;
-
- dbenv = dbp->dbenv;
- mpf = dbp->mpf;
- buf = NULL;
- meta = NULL;
-
- /* Build meta-data page. */
+ int ret, t_ret;
+ /*
+ * Build meta-data page.
+ *
+ * This code appears more complex than it is because of the two cases
+ * (named and unnamed).
+ *
+ * For each page being created, there are three parts: 1) a "get page"
+ * chunk (which either uses malloc'd memory or calls __memp_fget), 2)
+ * the initialization, and 3) the "put page" chunk which either does a
+ * fop write or an __memp_fput.
+ */
if (F_ISSET(dbp, DB_AM_INMEM)) {
+ mpf = dbp->mpf;
pgno = PGNO_BASE_MD;
- ret = __memp_fget(mpf, &pgno, txn,
- DB_MPOOL_CREATE | DB_MPOOL_DIRTY, &meta);
- } else {
- ret = __os_calloc(dbenv, 1, dbp->pgsize, &buf);
- meta = (QMETA *)buf;
- }
- if (ret != 0)
- return (ret);
+ if ((ret = __memp_fget(mpf, &pgno, txn,
+ DB_MPOOL_CREATE | DB_MPOOL_DIRTY, &meta)) != 0)
+ return (ret);
- if ((ret = __qam_init_meta(dbp, meta)) != 0)
- goto err;
+ if ((ret = __qam_init_meta(dbp, meta)) != 0)
+ goto err1;
- if (F_ISSET(dbp, DB_AM_INMEM)) {
if ((ret = __db_log_page(dbp,
txn, &meta->dbmeta.lsn, pgno, (PAGE *)meta)) != 0)
- goto err;
- ret = __memp_fput(mpf, meta, 0);
+ goto err1;
+err1: if ((t_ret =
+ __memp_fput(mpf, meta, dbp->priority)) != 0 && ret == 0)
+ ret = t_ret;
} else {
+ dbenv = dbp->dbenv;
+ if ((ret = __os_calloc(dbenv, 1, dbp->pgsize, &meta)) != 0)
+ return (ret);
+
+ if ((ret = __qam_init_meta(dbp, meta)) != 0)
+ goto err2;
+
pginfo.db_pagesize = dbp->pgsize;
pginfo.flags =
F_ISSET(dbp, (DB_AM_CHKSUM | DB_AM_ENCRYPT | DB_AM_SWAP));
pginfo.type = DB_QUEUE;
- pdbt.data = &pginfo;
- pdbt.size = sizeof(pginfo);
+ DB_SET_DBT(pdbt, &pginfo, sizeof(pginfo));
if ((ret = __db_pgout(dbenv, PGNO_BASE_MD, meta, &pdbt)) != 0)
- goto err;
+ goto err2;
ret = __fop_write(dbenv, txn, name,
- DB_APP_DATA, fhp, dbp->pgsize, 0, 0, buf, dbp->pgsize, 1,
+ DB_APP_DATA, fhp, dbp->pgsize, 0, 0, meta, dbp->pgsize, 1,
F_ISSET(dbp, DB_AM_NOT_DURABLE) ? DB_LOG_NOT_DURABLE : 0);
+
+err2: __os_free(dbenv, meta);
}
- if (ret != 0)
- goto err;
- meta = NULL;
-err: if (name != NULL)
- __os_free(dbenv, buf);
- else if (meta != NULL)
- (void)__memp_fput(mpf, meta, 0);
return (ret);
}
diff --git a/db/qam/qam_rec.c b/db/qam/qam_rec.c
index 88a7bf261..d1798b891 100644
--- a/db/qam/qam_rec.c
+++ b/db/qam/qam_rec.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1999-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1999,2007 Oracle. All rights reserved.
*
- * $Id: qam_rec.c,v 12.20 2006/09/09 14:28:24 bostic Exp $
+ * $Id: qam_rec.c,v 12.26 2007/05/17 15:15:50 bostic Exp $
*/
#include "db_config.h"
@@ -26,14 +25,10 @@
* transaction may be completed during a later hot backup cycle.
*/
-/* Determine if we are restoring prepared transactions from __txn_recover. */
-#define IS_IN_RESTORE(dbenv) \
- (((DB_TXNREGION *) \
- (dbenv)->tx_handle->reginfo.primary)->stat.st_nrestores != 0)
-
/* Queue version of REC_DIRTY -- needs to probe the correct file. */
#define QAM_DIRTY(dbp, pgno, pagep) \
- if ((ret = __qam_dirty((dbp), pgno, pagep, NULL, 0)) != 0) { \
+ if ((ret = __qam_dirty((dbp), \
+ pgno, pagep, NULL, (dbp)->priority)) != 0) { \
ret = __db_pgerr((dbp), (pgno), ret); \
goto out; \
}
@@ -99,7 +94,7 @@ __qam_incfirst_recover(dbenv, dbtp, lsnp, op, info)
*/
if (DB_UNDO(op)) {
if (QAM_BEFORE_FIRST(meta, argp->recno)) {
- REC_DIRTY(mpf, &meta);
+ REC_DIRTY(mpf, dbc->priority, &meta);
meta->first_recno = argp->recno;
}
@@ -107,12 +102,12 @@ __qam_incfirst_recover(dbenv, dbtp, lsnp, op, info)
/* if we are truncating, update the LSN */
if (!IS_ZERO_LSN(trunc_lsn) &&
LOG_COMPARE(&LSN(meta), &trunc_lsn) > 0) {
- REC_DIRTY(mpf, &meta);
+ REC_DIRTY(mpf, dbc->priority, &meta);
LSN(meta) = trunc_lsn;
}
} else {
if (LOG_COMPARE(&LSN(meta), lsnp) < 0) {
- REC_DIRTY(mpf, &meta);
+ REC_DIRTY(mpf, dbc->priority, &meta);
LSN(meta) = *lsnp;
}
if (meta->page_ext == 0)
@@ -127,8 +122,8 @@ __qam_incfirst_recover(dbenv, dbtp, lsnp, op, info)
if ((ret = __qam_position(dbc,
&meta->first_recno, DB_LOCK_READ, 0, &exact)) != 0)
goto err;
- if (cp->page != NULL && (ret =
- __qam_fput(file_dbp, cp->pgno, cp->page, 0)) != 0)
+ if (cp->page != NULL && (ret = __qam_fput(file_dbp,
+ cp->pgno, cp->page, dbc->priority)) != 0)
goto err;
if (exact == 1)
@@ -138,14 +133,14 @@ __qam_incfirst_recover(dbenv, dbtp, lsnp, op, info)
if ((ret =
__qam_fremove(file_dbp, cp->pgno)) != 0)
goto err;
- REC_DIRTY(mpf, &meta);
+ REC_DIRTY(mpf, dbc->priority, &meta);
meta->first_recno++;
if (meta->first_recno == RECNO_OOB)
meta->first_recno++;
}
}
- ret = __memp_fput(mpf, meta, 0);
+ ret = __memp_fput(mpf, meta, dbc->priority);
if ((t_ret = __LPUT(dbc, lock)) != 0 && ret == 0)
ret = t_ret;
if (ret != 0)
@@ -155,7 +150,7 @@ done: *lsnp = argp->prev_lsn;
ret = 0;
if (0) {
-err: (void)__memp_fput(mpf, meta, 0);
+err: (void)__memp_fput(mpf, meta, dbc->priority);
(void)__LPUT(dbc, lock);
}
@@ -196,8 +191,7 @@ __qam_mvptr_recover(dbenv, dbtp, lsnp, op, info)
if ((ret = __db_lget(dbc,
LCK_ROLLBACK, metapg, DB_LOCK_WRITE, 0, &lock)) != 0)
goto done;
- if ((ret = __memp_fget(mpf, &metapg, NULL,
- 0, &meta)) != 0) {
+ if ((ret = __memp_fget(mpf, &metapg, NULL, 0, &meta)) != 0) {
if (DB_REDO(op)) {
if ((ret = __memp_fget(mpf, &metapg, NULL,
DB_MPOOL_CREATE, &meta)) != 0) {
@@ -228,7 +222,7 @@ __qam_mvptr_recover(dbenv, dbtp, lsnp, op, info)
*/
if (DB_UNDO(op)) {
if ((argp->opcode & QAM_TRUNCATE) && cmp_n <= 0) {
- REC_DIRTY(mpf, &meta);
+ REC_DIRTY(mpf, dbc->priority, &meta);
meta->first_recno = argp->old_first;
meta->cur_recno = argp->old_cur;
LSN(meta) = argp->metalsn;
@@ -237,11 +231,11 @@ __qam_mvptr_recover(dbenv, dbtp, lsnp, op, info)
trunc_lsn = ((DB_TXNHEAD *)info)->trunc_lsn;
if (!IS_ZERO_LSN(trunc_lsn) &&
LOG_COMPARE(&trunc_lsn, &LSN(meta)) < 0) {
- REC_DIRTY(mpf, &meta);
+ REC_DIRTY(mpf, dbc->priority, &meta);
LSN(meta) = argp->metalsn;
}
} else if (op == DB_TXN_APPLY || cmp_p == 0) {
- REC_DIRTY(mpf, &meta);
+ REC_DIRTY(mpf, dbc->priority, &meta);
cp = (QUEUE_CURSOR *)dbc->internal;
if ((argp->opcode & QAM_SETFIRST) &&
meta->first_recno == argp->old_first) {
@@ -256,7 +250,7 @@ __qam_mvptr_recover(dbenv, dbtp, lsnp, op, info)
meta->first_recno = argp->new_first;
if (cp->page != NULL &&
(ret = __qam_fput(file_dbp,
- cp->pgno, cp->page, 0)) != 0)
+ cp->pgno, cp->page, dbc->priority)) != 0)
goto err;
}
}
@@ -273,7 +267,7 @@ __qam_mvptr_recover(dbenv, dbtp, lsnp, op, info)
meta->cur_recno = argp->new_cur;
if (cp->page != NULL &&
(ret = __qam_fput(file_dbp,
- cp->pgno, cp->page, 0)) != 0)
+ cp->pgno, cp->page, dbc->priority)) != 0)
goto err;
}
}
@@ -281,7 +275,7 @@ __qam_mvptr_recover(dbenv, dbtp, lsnp, op, info)
meta->dbmeta.lsn = *lsnp;
}
- if ((ret = __memp_fput(mpf, meta, 0)) != 0)
+ if ((ret = __memp_fput(mpf, meta, dbc->priority)) != 0)
goto out;
if ((ret = __LPUT(dbc, lock)) != 0)
@@ -291,7 +285,7 @@ done: *lsnp = argp->prev_lsn;
ret = 0;
if (0) {
-err: (void)__memp_fput(mpf, meta, 0);
+err: (void)__memp_fput(mpf, meta, dbc->priority);
(void)__LPUT(dbc, lock);
}
@@ -325,7 +319,6 @@ __qam_del_recover(dbenv, dbtp, lsnp, op, info)
db_pgno_t metapg;
int cmp_n, ret, t_ret;
- COMPQUIET(info, NULL);
COMPQUIET(pagep, NULL);
REC_PRINT(__qam_del_print);
REC_INTRO(__qam_del_read, 1, 1);
@@ -358,11 +351,11 @@ __qam_del_recover(dbenv, dbtp, lsnp, op, info)
(meta->first_recno <= meta->cur_recno ||
meta->first_recno -
argp->recno < argp->recno - meta->cur_recno))) {
- REC_DIRTY(mpf, &meta);
+ REC_DIRTY(mpf, dbc->priority, &meta);
meta->first_recno = argp->recno;
- ret = __memp_fput(mpf, meta, 0);
+ ret = __memp_fput(mpf, meta, dbc->priority);
} else
- ret = __memp_fput(mpf, meta, 0);
+ ret = __memp_fput(mpf, meta, dbc->priority);
if ((t_ret = __LPUT(dbc, lock)) != 0 && ret == 0)
ret = t_ret;
if (ret != 0)
@@ -375,17 +368,12 @@ __qam_del_recover(dbenv, dbtp, lsnp, op, info)
/*
* Move the LSN back to this point; do not move it forward.
- * Only move it back if we're in recovery. If we're in
- * an abort, because we don't hold a page lock, we could
- * foul up a concurrent put. Having too late an LSN
- * is harmless in queue except when we're determining
+ * If we're in an abort, because we don't hold a page lock,
+ * we could foul up a concurrent put. Having too late an
+ * LSN * is harmless in queue except when we're determining
* what we need to roll forward during recovery. [#2588]
- * If we are aborting a restored transaction then it
- * might get rolled forward later so the LSN needs to
- * be correct in that case too. [#12181]
*/
- if (cmp_n <= 0 &&
- (op == DB_TXN_BACKWARD_ROLL || IS_IN_RESTORE(dbenv)))
+ if (cmp_n <= 0 && op == DB_TXN_BACKWARD_ROLL)
LSN(pagep) = argp->lsn;
} else if (op == DB_TXN_APPLY || (cmp_n > 0 && DB_REDO(op))) {
/* Need to redo delete - clear the valid bit */
@@ -401,14 +389,14 @@ __qam_del_recover(dbenv, dbtp, lsnp, op, info)
if (op == DB_TXN_APPLY)
LSN(pagep) = *lsnp;
}
- if ((ret = __qam_fput(file_dbp, argp->pgno, pagep, 0)) != 0)
+ if ((ret = __qam_fput(file_dbp, argp->pgno, pagep, dbc->priority)) != 0)
goto out;
done: *lsnp = argp->prev_lsn;
ret = 0;
if (0) {
-err: (void)__qam_fput(file_dbp, argp->pgno, pagep, 0);
+err: (void)__qam_fput(file_dbp, argp->pgno, pagep, dbc->priority);
}
out: REC_CLOSE;
}
@@ -439,7 +427,6 @@ __qam_delext_recover(dbenv, dbtp, lsnp, op, info)
db_pgno_t metapg;
int cmp_n, ret, t_ret;
- COMPQUIET(info, NULL);
COMPQUIET(pagep, NULL);
REC_PRINT(__qam_delext_print);
REC_INTRO(__qam_delext_read, 1, 1);
@@ -480,9 +467,9 @@ __qam_delext_recover(dbenv, dbtp, lsnp, op, info)
meta->first_recno -
argp->recno < argp->recno - meta->cur_recno))) {
meta->first_recno = argp->recno;
- ret = __memp_fput(mpf, meta, 0);
+ ret = __memp_fput(mpf, meta, dbc->priority);
} else
- ret = __memp_fput(mpf, meta, 0);
+ ret = __memp_fput(mpf, meta, dbc->priority);
if ((t_ret = __LPUT(dbc, lock)) != 0 && ret == 0)
ret = t_ret;
if (ret != 0)
@@ -495,14 +482,12 @@ __qam_delext_recover(dbenv, dbtp, lsnp, op, info)
/*
* Move the LSN back to this point; do not move it forward.
- * Only move it back if we're in recovery. If we're in
- * an abort, because we don't hold a page lock, we could
- * foul up a concurrent put. Having too late an LSN
- * is harmless in queue except when we're determining
+ * If we're in an abort, because we don't hold a page lock,
+ * we could foul up a concurrent put. Having too late an
+ * LSN is harmless in queue except when we're determining
* what we need to roll forward during recovery. [#2588]
*/
- if (cmp_n <= 0 &&
- (op == DB_TXN_BACKWARD_ROLL || IS_IN_RESTORE(dbenv)))
+ if (cmp_n <= 0 && op == DB_TXN_BACKWARD_ROLL)
LSN(pagep) = argp->lsn;
} else if (op == DB_TXN_APPLY || (cmp_n > 0 && DB_REDO(op))) {
QAM_DIRTY(file_dbp, pagep->pgno, &pagep);
@@ -518,14 +503,14 @@ __qam_delext_recover(dbenv, dbtp, lsnp, op, info)
if (op == DB_TXN_APPLY)
LSN(pagep) = *lsnp;
}
- if ((ret = __qam_fput(file_dbp, argp->pgno, pagep, 0)) != 0)
+ if ((ret = __qam_fput(file_dbp, argp->pgno, pagep, dbc->priority)) != 0)
goto out;
done: *lsnp = argp->prev_lsn;
ret = 0;
if (0) {
-err: (void)__qam_fput(file_dbp, argp->pgno, pagep, 0);
+err: (void)__qam_fput(file_dbp, argp->pgno, pagep, dbc->priority);
}
out: REC_CLOSE;
}
@@ -555,7 +540,6 @@ __qam_add_recover(dbenv, dbtp, lsnp, op, info)
db_pgno_t metapg;
int cmp_n, ret;
- COMPQUIET(info, NULL);
COMPQUIET(pagep, NULL);
REC_PRINT(__qam_add_print);
REC_INTRO(__qam_add_read, 1, 1);
@@ -586,15 +570,15 @@ __qam_add_recover(dbenv, dbtp, lsnp, op, info)
0, &meta)) != 0)
goto err;
if (QAM_BEFORE_FIRST(meta, argp->recno)) {
- REC_DIRTY(mpf, &meta);
+ REC_DIRTY(mpf, dbc->priority, &meta);
meta->first_recno = argp->recno;
}
if (argp->recno == meta->cur_recno ||
QAM_AFTER_CURRENT(meta, argp->recno)) {
- REC_DIRTY(mpf, &meta);
+ REC_DIRTY(mpf, dbc->priority, &meta);
meta->cur_recno = argp->recno + 1;
}
- if ((ret = __memp_fput(mpf, meta, 0)) != 0)
+ if ((ret = __memp_fput(mpf, meta, dbc->priority)) != 0)
goto err;
/* Now update the actual page if necessary. */
@@ -638,26 +622,23 @@ __qam_add_recover(dbenv, dbtp, lsnp, op, info)
/*
* Move the LSN back to this point; do not move it forward.
- * Only move it back if we're in recovery. If we're in
- * an abort, because we don't hold a page lock, we could
- * foul up a concurrent put. Having too late an LSN
- * is harmless in queue except when we're determining
+ * If we're in an abort, because we don't hold a page lock,
+ * we could foul up a concurrent put. Having too late an
+ * LSN is harmless in queue except when we're determining
* what we need to roll forward during recovery. [#2588]
*/
- if (cmp_n <= 0 &&
- (op == DB_TXN_BACKWARD_ROLL || IS_IN_RESTORE(dbenv)))
+ if (cmp_n <= 0 && op == DB_TXN_BACKWARD_ROLL)
LSN(pagep) = argp->lsn;
}
- if ((ret = __qam_fput(file_dbp,
- argp->pgno, pagep, 0)) != 0)
+ if ((ret = __qam_fput(file_dbp, argp->pgno, pagep, dbc->priority)) != 0)
goto out;
done: *lsnp = argp->prev_lsn;
ret = 0;
if (0) {
-err: (void)__qam_fput(file_dbp, argp->pgno, pagep, 0);
+err: (void)__qam_fput(file_dbp, argp->pgno, pagep, dbc->priority);
}
out: REC_CLOSE;
diff --git a/db/qam/qam_stat.c b/db/qam/qam_stat.c
index 067555a57..b2b24c33b 100644
--- a/db/qam/qam_stat.c
+++ b/db/qam/qam_stat.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1999-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1999,2007 Oracle. All rights reserved.
*
- * $Id: qam_stat.c,v 12.8 2006/08/24 14:46:24 bostic Exp $
+ * $Id: qam_stat.c,v 12.11 2007/05/17 15:15:50 bostic Exp $
*/
#include "db_config.h"
@@ -74,7 +73,7 @@ __qam_stat(dbc, spp, flags)
first = QAM_RECNO_PAGE(dbp, meta->first_recno);
last = QAM_RECNO_PAGE(dbp, meta->cur_recno);
- ret = __memp_fput(mpf, meta, 0);
+ ret = __memp_fput(mpf, meta, dbc->priority);
if ((t_ret = __LPUT(dbc, lock)) != 0 && ret == 0)
ret = t_ret;
if (ret != 0)
@@ -124,7 +123,7 @@ begin:
sp->qs_pgfree += re_len;
}
- ret = __qam_fput(dbp, pgno, h, 0);
+ ret = __qam_fput(dbp, pgno, h, dbc->priority);
if ((t_ret = __LPUT(dbc, lock)) != 0 && ret == 0)
ret = t_ret;
if (ret != 0)
@@ -167,7 +166,7 @@ meta_only:
sp->qs_cur_recno = meta->cur_recno;
/* Discard the meta-data page. */
- ret = __memp_fput(mpf, meta, 0);
+ ret = __memp_fput(mpf, meta, dbc->priority);
if ((t_ret = __LPUT(dbc, lock)) != 0 && ret == 0)
ret = t_ret;
if (ret != 0)
diff --git a/db/qam/qam_stub.c b/db/qam/qam_stub.c
index 7b02c8ef1..f001e6b16 100644
--- a/db/qam/qam_stub.c
+++ b/db/qam/qam_stub.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: qam_stub.c,v 12.5 2006/08/24 14:46:24 bostic Exp $
+ * $Id: qam_stub.c,v 12.8 2007/05/17 15:15:50 bostic Exp $
*/
#ifndef HAVE_QUEUE
@@ -77,7 +76,7 @@ __qam_append(dbc, key, data)
}
int
-__qam_c_dup(orig_dbc, new_dbc)
+__qamc_dup(orig_dbc, new_dbc)
DBC *orig_dbc, *new_dbc;
{
COMPQUIET(new_dbc, NULL);
@@ -85,7 +84,7 @@ __qam_c_dup(orig_dbc, new_dbc)
}
int
-__qam_c_init(dbc)
+__qamc_init(dbc)
DBC *dbc;
{
return (__db_no_queue_am(dbc->dbp->dbenv));
diff --git a/db/qam/qam_upgrade.c b/db/qam/qam_upgrade.c
index 0c5777e25..58f5df302 100644
--- a/db/qam/qam_upgrade.c
+++ b/db/qam/qam_upgrade.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: qam_upgrade.c,v 12.4 2006/08/24 14:46:24 bostic Exp $
+ * $Id: qam_upgrade.c,v 12.6 2007/05/17 15:15:50 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/qam/qam_verify.c b/db/qam/qam_verify.c
index b6457ce70..64cfd4eb8 100644
--- a/db/qam/qam_verify.c
+++ b/db/qam/qam_verify.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1999-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1999,2007 Oracle. All rights reserved.
*
- * $Id: qam_verify.c,v 12.9 2006/08/24 14:46:24 bostic Exp $
+ * $Id: qam_verify.c,v 12.13 2007/05/17 15:15:50 bostic Exp $
*/
#include "db_config.h"
@@ -44,12 +43,12 @@ __qam_vrfy_meta(dbp, vdp, meta, pgno, flags)
qp = (QUEUE *)dbp->q_internal;
extents = NULL;
first = last = 0;
+ isbad = 0;
buf = NULL;
names = NULL;
if ((ret = __db_vrfy_getpageinfo(vdp, pgno, &pip)) != 0)
return (ret);
- isbad = 0;
/*
* Queue can't be used in subdatabases, so if this isn't set
@@ -409,7 +408,7 @@ put: if ((ret = __db_vrfy_putpageinfo(dbenv, vdp, pip)) != 0)
}
/* Again, keep going iff we're salvaging. */
- if ((t_ret = __qam_fput(dbp, i, h, 0)) != 0) {
+ if ((t_ret = __qam_fput(dbp, i, h, dbp->priority)) != 0) {
if (LF_ISSET(DB_SALVAGE)) {
if (ret == 0)
ret = t_ret;
@@ -439,7 +438,7 @@ put: if ((ret = __db_vrfy_putpageinfo(dbenv, vdp, pip)) != 0)
}
if (0) {
-err: if ((t_ret = __qam_fput(dbp, i, h, 0)) != 0)
+err: if ((t_ret = __qam_fput(dbp, i, h, dbp->priority)) != 0)
return (ret == 0 ? t_ret : ret);
if (pip != NULL &&
(t_ret = __db_vrfy_putpageinfo(dbenv, vdp, pip)) != 0)
diff --git a/db/rep/mlease.html b/db/rep/mlease.html
new file mode 100644
index 000000000..7976530af
--- /dev/null
+++ b/db/rep/mlease.html
@@ -0,0 +1,1219 @@
+<!DOCTYPE doctype PUBLIC "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type"
+ content="text/html; charset=iso-8859-1">
+ <meta name="GENERATOR"
+ content="Mozilla/4.76 [en] (X11; U; FreeBSD 4.3-RELEASE i386) [Netscape]">
+ <title>Master Lease</title>
+</head>
+<body>
+<center>
+<h1>Master Leases for Berkeley DB</h1>
+</center>
+<center><i>Susan LoVerso</i> <br>
+<i>sue@sleepycat.com</i> <br>
+<i>Rev 1.1</i><br>
+<i>2007 Feb 2</i><br>
+</center>
+<p><br>
+</p>
+<h2>What are Master Leases?</h2>
+A master lease is a mechanism whereby clients grant master-ship rights
+to a site and that master, by holding lease rights can provide a&nbsp;
+guarantee of durability to a replication group for a given period of
+time.&nbsp; By granting a lease to a master,
+a&nbsp; client will not participate in an election to elect a new
+master until that granted master lease has expired.&nbsp; By holding a
+collection of granted leases, a master will be able to supply
+authoritative read requests to applications.&nbsp; By holding leases a
+read operation on a master can guarantee several things to the
+application:<br>
+<ol>
+ <li>Authoritative reads: a guarantee that the data being read by the
+application is durable and can never be rolled back.</li>
+ <li>Freshness: a guarantee that the data being read by the
+application <b>at the master</b> is
+not stale.</li>
+ <li>Master viability: a guarantee that a current master with valid
+leases will not encounter a duplicate master situation.<br>
+ </li>
+</ol>
+<h2>Requirements</h2>
+The requirements of DB to support this include:<br>
+<ul>
+ <li>After turning them on, users can choose to ignore them in reads
+or not.</li>
+ <li>We are providing read authority on the master only.&nbsp; A
+read on a client is equivalent to a read while ignoring leases.</li>
+ <li>We guarantee that data committed on a master <b>that has been
+read by an application on the
+master</b> will not be rolled back.&nbsp; Data read on a client or
+while ignoring leases <i>or data
+successfully updated/committed but not read,</i>
+may be rolled back.<br>
+ </li>
+ <li>A master will not return successfully from a read operation
+unless it holds a
+majority of leases unless leases are ignored.</li>
+ <li>Master leases will remove the possibility of a current/correct
+master being "shot down" by DUPMASTER.&nbsp; <b>NOTE: Old/Expired
+masters may discover a
+later master and return DUPMASTER to the application however.</b><br>
+ </li>
+ <li>Any send callback failure must result in premature lease
+expiration on the master.<br>
+ </li>
+ <li>Users who change the system clock during master leases void the
+guarantee and may get undefined behavior.&nbsp; We assume time always
+runs forward. <b>[document this.]</b><br>
+ </li>
+ <li>Clients are forbidden from participating in elections while they
+have an outstanding lease granted to another site.</li>
+ <li>Clients are forbidden from accepting a new master while they have
+an outstanding lease granted to another site.</li>
+ <li>Clients are forbidden from upgrading themselves to master while
+they have an outstanding lease granted to another site.</li>
+ <li>When asked for a lease grant explicitly by the master, the client
+cannot grant the lease to the master unless the LSN in the master's
+request has been processed by this client.<br>
+ </li>
+</ul>
+The requirements of the
+application using leases include:<br>
+<ul>
+ <li>Users must implement (Base API users on their own, RepMgr users
+via configuration) a majority (or larger) ACK policy. <br>
+ </li>
+ <li>The application must use the election mechanism to decide a master.
+It may not simply declare a site master.</li>
+ <li>The send callback must return an error if the majority ACK policy
+is not met for PERM records.</li>
+ <li>Users must set the number of sites in the group.</li>
+ <li>Using leases in a replication group is all-or-none.&nbsp;
+Therefore, if a site knows it is using leases, it can assume other
+sites are also.<br>
+ </li>
+ <li>All applications that care about read guarantees must forward or
+perform all reads on the master.&nbsp; Reading on the client means a
+read ignoring leases. </li>
+</ul>
+<p>There are some open questions
+remaining.</p>
+<ul>
+ <li>There is one major showstopper issue, see Crashing - Potential
+problem near the end of the document.&nbsp; We need a better solution
+than the one shown there (writing to disk every time a lease is
+granted). Perhaps just documenting that durability means it must be
+flushed to disk before success to avoid that situation?<br>
+ </li>
+ <li>What about db-&gt;join?&nbsp; Users can call join, but the calls
+on the join cursor to get the data would be subject to leases and
+therefore protected.&nbsp; Ok, this is not an open question.</li>
+ <li>What about other read-like operations?&nbsp; Clearly <i>
+DB-&gt;get, DB-&gt;pget, DBC-&gt;get,
+DBC-&gt;pget</i> need lease checks.&nbsp; However, other APIs use
+keys.&nbsp; <i>DB-&gt;key_range</i>
+provides an estimate only so it shouldn't need lease checks. <i>
+DB-&gt;stat</i> provides exact counts
+to <i>bt_nkeys</i> and <i>bt_ndata</i> fields.&nbsp; Are those
+fields considered authoritative that providing those values implies a
+durability guarantee and therefore <i>DB-&gt;stat</i>
+should be subject to lease verification?&nbsp; <i>DBC-&gt;count</i>
+provides a count for
+the number of data items associated with a key.&nbsp; Is this
+authoritative information? This is similar to stat - should it be
+subject to lease verification?<br>
+ </li>
+ <li>Do we require master lease checks on write operations?&nbsp; I
+think lease checks are not needed on write operations.&nbsp; It doesn't
+add correctness and adds a lot of complexity (checking leases in put,
+del, and cursors, then what about rename, remove, etc).<br>
+ </li>
+ <li>Do master leases give an iron-clad guarantee of never rolling
+back a transaction? No, but it should mean that a committed transaction
+can never be <b>read</b> on a master
+unless the lease is valid.&nbsp; A committed transaction on a master
+that has never been presented to the application may get rolled back.<br>
+ </li>
+ <li>Do we need to quarantine or prevent reads on an ex-master until
+sync-up is done?&nbsp; No.&nbsp; A master that is simply downgraded to
+client or crashes and reboots is now a client.&nbsp; Reading from that
+client is the same as saying Ignore Leases.</li>
+ <li>What about adding and removing sites while leases are
+active?&nbsp; This is SR 14778.&nbsp; A consistent <i>nsites</i> value
+is required by master
+leases.&nbsp; <b>The resolution of 14778
+is a prerequisite - currently owned by Alan</b>.&nbsp; It isn't
+clear to me what a master is
+supposed to do if the value of nsites gets smaller while leases are
+active.&nbsp; Perhaps it leaves its larger table intact and simply
+checks for a smaller number of granted leases?<br>
+ </li>
+ <li>Can users turn leases off?&nbsp; No.&nbsp; There is no planned <i>turn
+leases off</i> API.</li>
+ <li>Clock skew will be a percentage.&nbsp; However, the smallest, 1%,
+is probably rather large for clock skew.&nbsp; Percentage was chosen
+for simplicity and similarity to other APIs.&nbsp; What granularity is
+appropriate here?</li>
+</ul>
+<h2>API Changes</h2>
+The API changes that are visible
+to the user are fairly minimal.&nbsp;
+There are a few API calls they need to make to configure master leases
+and then there is the API call to turn them on.&nbsp; There is also a
+new flag to existing APIs to allow read operations to ignore leases and
+return data that
+may be non-durable potentially.<br>
+<h3>Lease Timeout<br>
+</h3>
+There is a new timout the user
+must configure for leases called <b>DB_REP_LEASE_TIMEOUT</b>.&nbsp;
+This timeout will be new to
+the <i>dbenv-&gt;rep_set_timeout</i> method. The <b>DB_REP_LEASE_TIMEOUT</b>
+has no default and it is required that the user configure a timeout
+before they turn on leases (obviously, this timeout need not be set of
+leases will not be used).&nbsp; That timeout is the amount of time
+the lease is valid on the master and how long it is granted
+on the client.&nbsp; This timeout must be the same
+value on all sites (like log file size).&nbsp; <b>[Document this
+requirement.&nbsp; We cannot
+enforce it across the group easily.]</b> The timeout used when
+refreshing leases is the <b>DB_REP_ACK_TIMEOUT</b>
+for RepMgr application.&nbsp; For Base API applications, lease
+refreshes will use the same mechanism as <b>PERM</b> messages and they
+should
+have no additional burden.&nbsp; This timeout is used for lease
+refreshment and is the amount of time a reader will wait to refresh
+leases before returning failure to the application from a read
+operation.<br>
+<br>
+This timeout will be both stored
+with its original value, and also
+converted to a <i>db_timespec</i>
+using the <b>DB_TIMEOUT_TO_TIMESPEC</b>
+macro and have the clock skew accounted for and stored in the shared
+rep structure:<br>
+<pre>db_timeout_t lease_timeout;<br>db_timespec lease_duration;<br></pre>
+NOTE:&nbsp; By sending the lease refresh during DB operations, we are
+forcing/assuming that the operation's process has a replication
+transport function set.&nbsp; That is obviously the case for write
+operations, but would it be a burden for read processes (on a
+master)?&nbsp; I think mostly not, but if we need leases for <i>
+DB-&gt;stat</i> then we need to
+document it as it is certainly possible for an application to have a
+separate or dedicated <i>stat</i>
+application or attempt to use <i>db_stat</i>
+(which will not work if leases must be checked).<br>
+<br>
+Leases should be checked after the local operation so that we don't
+have a window/boundary if we were to check leases first, get
+descheduled, the lose our lease and then perform the operation.&nbsp;
+Do the operation, then check leases before returning to the user.<br>
+<h3>Using Leases</h3>
+There is a new API that the user must call to tell the system to use
+the lease mechanism.&nbsp; The method must be called before the
+application calls <i>dbenv-&gt;rep_start</i>
+or <i>dbenv-&gt;repmgr_start</i>.
+This new
+method is:<br>
+<br>
+<pre>&nbsp;&nbsp;&nbsp; dbenv-&gt;rep_set_lease(DB_ENV *dbenv, u_int32_t clock_scale_factor, u_int32_t flags)<br>
+</pre>
+The <i>clock_scale_factor</i>
+parameter is interpreted as a percentage, greater than 100 (to transmit
+a floating point number as an integer to the API) that represents the
+maximum shkew between any two sites' clocks.&nbsp; That is, a <span
+ style="font-style: italic;">clock_scale_factor</span> of 150 suggests
+that the greatest discrepancy between clocks is that one runs 50%
+faster than the others.&nbsp; Both the
+master and client sides
+compensate for possible clock skew.&nbsp; The master uses the value to
+compensate in case the replica has a slow clock and replicas compensate
+in case they have a fast clock.&nbsp; This scaling factor will need to
+be divided by 100 on all sites to truly represent the percentage for
+adjustments made to time values.<br>
+<br>
+Assume the slowest replica's clock is a factor of <i>clock_scale_factor</i>
+slower than the
+fastest clock.&nbsp; Using that assumption, if the fastest clock goes
+from time t1 to t2 in X
+seconds, the slowest clock does it in (<i>clock_scale_factor</i> / 100)
+* X seconds.<br>
+<br>
+The <i>flags</i> parameter is not
+currently used.<br>
+<br>
+When the <i>dbenv-&gt;rep_set_lease</i>
+method is called, we will set a configuration flag indicating that
+leases are turned on:<br>
+<b>#define REP_C_LEASE &lt;value&gt;</b>.&nbsp;
+We will also record the <b>u_int32_t
+clock_skew</b> value passed in.&nbsp; The <i>rep_set_lease</i> method
+will not allow
+calls after <i>rep_start.&nbsp; </i>If
+multiple calls are made prior to calling <i>rep_start</i> then later
+calls will
+overwrite the earlier clock skew value.&nbsp; <br>
+<br>
+We need a new flag to prevent calling <i>rep_set_lease</i>
+after <i>rep_start</i>.&nbsp; The
+simplest solution would be to reject the call to
+<i>rep_set_lease&nbsp;
+</i>if<b>
+REP_F_CLIENT</b>
+or <b>REP_F_MASTER</b> is set.&nbsp;
+However that does not work in the cases where a site cleanly closes its
+environment and then opens without running recovery.&nbsp; The
+replication state will still be set.&nbsp; The prevention will be
+implemented as:<br>
+<pre>#define REP_F_START_CALLED &lt;some bit value&gt;<br></pre>
+In __rep_start, at the end:<br>
+<pre>if (ret == 0 ) {<br> REP_SYSTEM_LOCK<br> F_SET(rep, REP_F_START_CALLED)<br> REP_SYSTEM_UNLOCK<br>}</pre>
+In <i>__rep_env_refresh</i>, if we
+are the last reference closing the env (we already check for that):<br>
+<pre>F_CLR(rep, REP_F_START_CALLED);</pre>
+<b>[Please review the logic here
+carefully.]</b> In order to avoid run-time floating point operations
+on <i>db_timespec</i> structures,
+when a site is declared as a client or master in <i>rep_start</i> we
+will pre-compute the
+lease duration based on the integer-based clock skew and the
+integer-based lease timeout.&nbsp; A master should set a replica's
+lease expiration to the <b>start time of
+the sent message +
+(lease_timeout / clock_scale_factor)</b> in case the replica has a
+slow clock.&nbsp; Replicas extend their leases to <b>received message
+time + (lease_timeout *
+clock_scale_factor)</b> in case this replica has a fast clock.&nbsp;
+Therefore, the computation will be as follows if the site is becoming a
+master:<br>
+<pre>db_timeout_t tmp;<br>tmp = (db_timeout_t)((double)rep-&gt;lease_timeout / ((double)rep-&gt;clock_skew / (double)100));<br>rep-&gt;lease_duration = DB_TIMEOUT_TO_TIMESPEC(&amp;tmp);<br></pre>
+Similarly, on a client the computation is:<br>
+<pre>tmp = (db_timeout_t)((double)rep-&gt;lease_timeout * ((double)rep-&gt;clock_skew / (double)100));<br></pre>
+When a site changes state, its lease duration will change based on
+whether it is becoming a master or client and it will be recomputed
+from the original values.&nbsp; Note that these computations, coupled
+with the fact that the lease on the master is computed based on the
+master's time that it sent the message means that leases on the master
+are more conservatively computed than on the clients.<br>
+<br>
+The <i>dbenv-&gt;rep_set_lease</i>
+method must be called after <i>dbenv-&gt;open</i>,
+similar to <i>dbenv-&gt;rep_set_config</i>.&nbsp;
+The reason is so that we can check that this is a replication
+environment and we have access to the replication shared memory region.<br>
+<h3>Read Operations<br>
+</h3>
+Authoritative read operations on the master with leases enabled will
+abide by leases by default.&nbsp; We will provide a flag that allows an
+operation on a master to ignore leases.&nbsp; <b>All read operations
+on a client imply
+ignoring leases.</b> If an application wants authoritative reads
+they must forward the read requests to the master and it is the
+application's responsibility to provide the forwarding.
+The consensus was that forcing <span style="font-weight: bold;">DB_IGNORE_LEASE</span>
+on client read operations (with leases enabled, obviously) was too
+heavy handed.&nbsp; Read operations on the client will ignore leases,
+but do no special flag checking.<br>
+<br>
+The flag will be called <b>DB_IGNORE_LEASE</b>
+and it will be a flag that can be OR'd into the DB access method and
+cursor operation values.&nbsp; It will be similar to the <b>DB_READ_UNCOMMITTED</b>
+flag. <b>[Keith, I will need your help here for
+finding a bit in the DB flags that isn't in use for my new flag.&nbsp;
+That
+looks like a very full and confusing area...]<br>
+<br>
+</b>The methods that will
+adhere to leases are:<br>
+<ul>
+ <li><i>Db-&gt;get</i></li>
+ <li><i>Db-&gt;pget</i></li>
+ <li><i>Dbc-&gt;get</i></li>
+ <li><i>Dbc-&gt;pget</i></li>
+ <li><i>Db-&gt;stat </i><b>[maybe?]</b></li>
+ <li><i>Dbc-&gt;count</i><b>[maybe?]</b></li>
+</ul>
+The code that will check leases for a client reading would look
+something
+like this, if we decide to become heavy-handed:<br>
+<pre>if (IS_REP_CLIENT(dbenv)) {<br> [get to rep structure]<br> if (FLD_ISSET(rep-&gt;config, REP_C_LEASE) &amp;&amp; !LF_ISSET(DB_IGNORE_LEASE)) {<br> db_err("Read operations must ignore leases or go to master");<br> ret = EINVAL;<br> goto err;<br> }<br>}<br></pre>
+On the master, the new code to abide by leases is more complex.&nbsp;
+After the call to perform the operation we will check the lease.&nbsp;
+In that checking code, the master will see if it has a valid
+lease.&nbsp; If so, then all is well.&nbsp; If not, it will try to
+refresh the leases.&nbsp; If that refresh attempt results in leases,
+all is well.&nbsp; If the refresh attempt does not get leases, then the
+master cannot respond to the read as an authority and we return an
+error.&nbsp; The new error is called <b>DB_REP_LEASE_EXPIRED</b>.&nbsp;
+The location of the master lease check is down after the internal call
+to read the data is successful:<br>
+<pre>if (IS_REP_MASTER(dbenv) &amp;&amp; !LF_ISSET(DB_IGNORE_LEASE)) {<br> [get to rep structure]<br> if (FLD_ISSET(rep-&gt;config, REP_C_LEASE) &amp;&amp;<br> (ret = __rep_lease_check(dbenv)) != 0) {<br> /*<br> * We don't hold the lease.<br> */<br> goto err;<br> }<br>}<br></pre>
+See below for the details of <i>__rep_lease_check</i>.<br>
+<br>
+Also note that if leases (or replication) are not configured, then <span
+ style="font-weight: bold;">DB_IGNORE_LEASE</span> is a no-op.&nbsp; It
+is ignored (and won't error) if used when leases are not in
+effect.&nbsp; The reason is so that we can generically set that flag in
+utility programs like <span style="font-style: italic;">db_dump</span>
+that walk the database with a cursor.&nbsp; Note that <span
+ style="font-style: italic;">db_dump</span> is the only utility that
+reads with a cursor.<span style="font-style: italic;"><span
+ style="font-style: italic;"></span></span><br>
+<h3><b>Nsites
+and Elections</b></h3>
+The call to <i>dbenv-&gt;rep_set_nsites</i>
+must be performed before the call to <i>dbenv-&gt;rep_start</i>
+or <i>dbenv-&gt;repmgr_start</i>.&nbsp;
+This document assumes either that <b>SR
+14778</b> gets resolved, or assumes that the value of <i>nsites</i> is
+immutable.&nbsp; The
+master and all clients need to know how many sites and leases are in
+the group.&nbsp; Clients need to know for elections.&nbsp; The master
+needs to know for the size of the lease table and to know what value a
+majority of the group is. <b>[Until
+14778 is resolved, the master lease work must assume <i>nsites</i> is
+immutable and will
+therefore enforce that this is called before <i>rep_start</i> using
+the same mechanism
+as <i>rep_set_lease</i>.]</b><br>
+<br>
+Elections and leases need to agree on the number of sites in the
+group.&nbsp; Therefore, when leases are in effect on clients, all calls
+to <i>dbenv-&gt;rep_elect</i> must
+set the <i>nsites</i> parameter to
+0.&nbsp; The <i>rep_elect</i> code
+path will return <b>EINVAL</b> if <b>REP_C_LEASE</b> is set and <i>nsites</i>
+is non-0.
+<h2>Lease Management</h2>
+<h3>Message Changes</h3>
+In order for clients to grant leases to the master a new message type
+must be added for that purpose.&nbsp; This will be the <b>REP_LEASE_GRANT</b>
+message.&nbsp;
+Granting leases will be a result of applying a <b>DB_REP_PERM</b>
+record and therefore we
+do not need any additional message in order for a master to request a
+lease grant.&nbsp; The <b>REP_LEASE_GRANT</b>
+message will pass a structure as its message DBT:<br>
+<pre>struct __rep_lease_grant {<br> db_timespec msg_time;<br>#ifdef DIAGNOSTIC<br> db_timespec expire_time;<br>#endif<br>} REP_GRANT_INFO;<br></pre>
+In the <b>REP_LEASE_GRANT</b>
+message, the client is actually giving the master several pieces of
+information.&nbsp; We only need the echoed <i>msg_time</i> in this
+structure because
+everything else is already sent.&nbsp; The client is really sending the
+master:<br>
+<ul>
+ <li>Its EID (parameter to <span style="font-style: italic;">rep_send_message</span>
+and <span style="font-style: italic;">rep_process_message</span>)<br>
+ </li>
+ <li>The PERM LSN this message acknowledged (sent in the control
+message)</li>
+ <li>Unique identifier echoed back to master (<i>msg_time</i> sent in
+message as above)</li>
+</ul>
+On the client, we always maintain the maximum PERM LSN already in <i>lp-&gt;max_perm_lsn</i>.&nbsp;
+<h3>Local State Management</h3>
+Each client must maintain a <i>db_timespec</i>
+timestamp containing the expiration of its granted lease.&nbsp; This
+field will be in the replication shared memory structure:<br>
+<pre>db_timespec grant_expire;<br></pre>
+This timestamp already takes into account the clock skew.&nbsp; All
+new fields must be initialized when the region is created. Whenever we
+grant our master lease and want to send the <b>REP_LEASE_GRANT</b>
+message, this value
+will be updated.&nbsp; It will be used in the following way:
+<pre>db_timespec mytime;<br>DB_LSN perm_lsn;<br>DBT lease_dbt;<br>REP_GRANT_INFO gi;<br><br><br>timespecclear(&amp;mytime);<br>timespecclear(&amp;newgrant);<br>memset(&amp;lease_dbt, 0, sizeof(lease_dbt));<br>memset(&amp;gi, 0, sizeof(gi));<br>__os_gettime(dbenv, &amp;mytime);<br>timespecadd(&amp;mytime, &amp;rep-&gt;lease_duration);<br>MUTEX_LOCK(rep-&gt;clientdb_mutex);<br>perm_lsn = lp-&gt;max_perm_lsn;<br>MUTEX_UNLOCK(rep-&gt;clientdb_mutex);<br>REP_SYSTEM_LOCK(dbenv);<br>if (timespeccmp(mytime, rep-&gt;grant_expire, &gt;))<br> rep-&gt;grant_expire = mytime;<br>gi.msg_time = msg-&gt;msg_time;<br>#ifdef DIAGNOSTIC<br>gi.expire_time = rep-&gt;grant_expire;<br>#endif<br>lease_dbt.data = &amp;gi;<br>lease_dbt.size = sizeof(gi);<br>REP_SYSTEM_UNLOCK(dbenv);<br>__rep_send_message(dbenv, eid, REP_LEASE_GRANT, &amp;perm_lsn, &amp;lease_dbt, 0, 0);<br></pre>
+This updating of the lease grant will occur in the <b>PERM</b> code
+path when we have
+successfully applied the permanent record.<br>
+<h3>Maintaining Leases on the
+Master/Rep_start</h3>
+The master maintains a lease table that it checks when fulfilling a
+read request that is subject to leases.&nbsp; This table is initialized
+when a site calls<i>
+dbenv-&gt;rep_start(DB_MASTER)</i> and the site is undergoing a role
+change (i.e. a master making additional calls to <i>dbenv-&gt;rep_start(DB_MASTER)</i>
+does
+not affect an already existing table).<br>
+<br>
+When a non-master site becomes master, it must do two things related to
+leases on a role change.&nbsp; First, a client cannot upgrade to master
+while it has an outstanding lease granted to another site.&nbsp; If a
+client attempts to do so, an error, <b>EINVAL</b>,
+will be returned.&nbsp; The only way this should happen is if the
+application simply declares a site master, instead of using
+elections.&nbsp; Elections will already wait for leases to expire
+before proceeding. (See below.) <b>[I
+believe an error is sufficient and we do not need, for version 1 at
+least, any other complex waiting mechanism.&nbsp; Applications that
+don't use elections and declare masters are quite rare.]</b><br>
+<br>
+Second, once we are proceeding with becoming a master, the site must
+allocate the table it will use to maintain lease information.&nbsp;
+This table will be sized based on <i>nsites</i>
+and it will be an array of the following structure:<br>
+<pre>struct {<br> int eid; /* EID of client site. */<br> db_timespec start_time; /* Unique time ID client echoes back on grants. */<br> db_timespec end_time; /* Master's lease expiration time. */<br> DB_LSN lease_lsn; /* Durable LSN this lease applies to. */<br> u_int32_t flags; /* Unused for now?? */<br>} REP_LEASE_ENTRY;<br></pre>
+<h3>Granting Leases</h3>
+It is the burden of the application to make sure that all sites in the
+group
+are using leases, or none are.&nbsp; Therefore, when a client processes
+a <b>PERM</b>
+log record that arrived from the master, it will grant its lease
+automatically if that record is permanent (i.e. <b>DB_REP_ISPERM</b>
+is being returned),
+and leases are configured.&nbsp; A client will not send a
+lease grant when it is processing log records (even <b>PERM</b>
+ones) it receives from other clients that use client-to-client
+synchronization.&nbsp; The reason is that the master requires a unique
+time-of-msg ID (see below) that the client echoes back in its lease
+grant and it will not have such an ID from another client.<br>
+<br>
+The master stores a time-of-msg ID in each message and the client
+simply echoes it back to the master.&nbsp; In its lease table, it does
+keep the base
+time-of-msg for a valid lease.&nbsp; When <b>REP_LEASE_GRANT</b>
+message comes in,
+the master does a number of things:<br>
+<ol>
+ <li>Pulls the echoed timespec from the client message, into <i>msg_time</i>.<br>
+ </li>
+ <li>Finds the entry in its lease table for the client's EID.&nbsp; It
+walks the table searching for the ID.&nbsp; EIDs of <span
+ style="font-weight: bold;">DB_EID_INVALID</span> are
+illegal.&nbsp; Either the master will find the entry, or it will find
+an empty slot in the table (i.e. it is still populating the table with
+leases).</li>
+ <li>If this is a previously unknown site lease, the master
+initializes the entry by copying to the <i>eid</i>, <i>start_time, </i>and
+ <i>lease_lsn</i> fields.&nbsp; The master
+also computes the <i>end_time</i>
+based on the adjusted <i>rep-&gt;lease_duration</i>.</li>
+ <li>If this is a lease from a previously known site, the master must
+perform <i>timespeccmp(&amp;msg_time,
+&amp;table[i].start_time, &gt;)</i> and only update the <i>end_time</i>
+of the lease when this is
+a more recent message.&nbsp; If it is a more recent message, then we
+should update
+the <i>lease_lsn</i> to the LSN in
+the message.</li>
+ <li>Since lease durations are computed taking the clock skew into
+account, clients compute them based on the current time and the master
+computes it based on original sending time, for diagnostic purposes
+only, I also plan to send the client's expiration time.&nbsp; The
+client errs on the side of computing a larger lease expiration time and
+the master errs on the side of computing a smaller duration.&nbsp;
+Since both are taking the clock skew
+into account, the client's ending expiration time should never be
+smaller than
+the master's computed expiration time or their value for clock skew may
+not be correct.<br>
+ </li>
+</ol>
+Any log records (new or resent) that originate from the master and
+result in <b>DB_REP_ISPERM</b> get an
+ack.<br>
+<br>
+<h3>Refreshing Leases</h3>
+Leases get refreshed when a master receives a <b>REP_LEASE_GRANT</b>
+message from a client. There are three pieces to lease
+refreshment.&nbsp; <br>
+<h4>Lazy Lease Refreshing on Read<br>
+</h4>
+If the master discovers that leases are
+expired during the read operation, it attempts to refresh its
+collection of lease grants.&nbsp; It does this by calling a new
+function <i>__rep_lease_refresh</i>.&nbsp;
+This function is very similar to the already-existing function <i>__rep_flush</i>.&nbsp;
+Basically, to
+refresh the lease, the master simply needs to resend the last PERM
+record to the clients.&nbsp; The requirements state that when the
+application send function returns successfully from sending a PERM
+record, the majority of clients have that PERM LSN durable.&nbsp; We
+will have a new public DB error return called <b>DB_REP_LEASE_EXPIRED</b>
+that will be
+returned back to the caller if the master cannot assert its
+authority.&nbsp; The code will look something like this:<br>
+<pre>/*<br> * Use lp-&gt;max_perm_lsn on the master (currently not used on the master)<br> * to keep track of the last PERM record written through the logging system.<br> * need to initialize lp-&gt;max_perm_lsn in rep_start on role_chg.<br> */<br>call __rep_send_message on the last PERM record the master wrote, with DB_REP_PERMANENT<br>if failure<br> expire leases<br> return lease expired error to caller<br>else /* success */<br> recheck lease table<br> /*<br> * We need to recheck the lease table because the client<br> * lease grant messages may not be processed yet, or got<br> * lost, or racing with the application's ACK messages or<br> * whatever. <br> */<br> if we have a majority of valid leases<br> return success<br> else<br> return lease expired error to caller <br></pre>
+<h4>Ongoing Update Refreshment<br>
+</h4>
+Second is having the master indicate to
+the client it needs to send a lease grant in response to the current
+PERM log message.&nbsp; The problem is
+that acknowledgements must contain a master-supplied message timestamp
+that the client sends back to the master.&nbsp; We need to modify the
+structure of the&nbsp; log record messages when leases are configured
+so
+that when a PERM message is sent, the master sends, and the client
+expects, the message timestamp.&nbsp; There are three fairly
+straightforward and different implementations to consider.<br>
+<ol>
+ <li>Adding the timestamp to the <b>REP_CONTROL</b>
+structure.&nbsp; If this option is chosen, then the code trivially
+sends back the timestamp in the client's reply.&nbsp; There is no
+special processing done by either side with the message contents.&nbsp;
+So, on a PERM log record, the master will send a non-zero
+timestamp.&nbsp; On a normal log record the timestamp will be zero or
+some known invalid value.&nbsp; If the client sees a non-zero
+timestamp, it sends a <b>REP_LEASE_GRANT</b>
+with the <i>lp-&gt;max_perm_lsn</i>
+after applying that log record.&nbsp; If it is zero, then the client
+does nothing different.&nbsp; The advantage is ease of code.&nbsp; The
+disadvantage is that for mixed version systems, the client is now
+dealing with different sized control structures.&nbsp; We would have to
+retain the old control structure so that during a mixed version group
+the (upgraded) clients can use, expect and send old control structures
+to the master.&nbsp; This is unfortunate, so let's consider additional
+implementations that don't require modifying the control structure.<br>
+ </li>
+ <li>Adding a new <b>REPCTL_LEASE</b>
+flag to the list of flags for the control structure, but do not change
+the control structure fields.&nbsp; When a master wants to send a
+message that needs a lease ack, it sets the flag.&nbsp; Additionally,
+instead of simply sending a log record DBT as the <i>rec</i> parameter
+for replication, we
+would send a new structure that had the timestamp first and then the
+record (similar to the bulk transfer buffer).&nbsp; The advantage of
+this is that the control structure does not change.&nbsp; Disadvantages
+include more special-cased code in the normal code path where we have
+to check the flag.&nbsp; If the flag is set we have to extract the
+timestamp value and massage the incoming data to pass on the real log
+record to <i>rep_apply</i>.&nbsp; On
+bulk transfer, we would just add the timestamp into the buffer.&nbsp;
+On normal transfers, it would incur an additional data copy on the
+master side.&nbsp; That is unfortunate.&nbsp; Additionally, if this
+record needs to be stored in the temp db, we need some way to get it
+back again later or <span style="font-style: italic;">rep_apply</span>
+would have to extract the timestamp out when it processed the record
+(either live or from the temp db).<br>
+ </li>
+ <li>Adding a different message type, such as <b>REP_LOG_ACK</b>.&nbsp;
+Similarly to <b>REP_LOG_MORE</b> this message would be a
+special-case version of a log record.&nbsp; We would extract out the
+timestamp and then handle as a normal log record.&nbsp; This
+implementation is rejected because it actually would require three new
+message types: <b>REP_LOG_ACK,
+REP_LOG_ACK_MORE, REP_BULK_LOG_ACK</b>.&nbsp; That is just too ugly
+to contemplate.</li>
+</ol>
+<b>[Slight digression:</b> it occurs
+to me while writing about #2 and #3 above, that our implementation of
+all of the *_MORE messages could really be implemented with a <b>REPCTL_MORE</b>
+flag instead of a
+separate message type.&nbsp; We should clean that up and simplify the
+messages but not part of master leases. Hmm, taking that thought
+process further, we really could get rid of the <b>REP_BULK_*</b>
+messages as well if we
+added a <b>REPCTL_BULK</b>
+flag.&nbsp; I think we should definitely do it for the *_MORE
+messages.&nbsp; I am not sure we should do it for bulk because the
+structure of the incoming data record is vastly different.]<br>
+<br>
+Of these options, I believe that modifying the control structure is the
+best alternative.&nbsp; The handling of the old structure will be very
+isolated to code dealing with old versions and is far less complicated
+than injecting the timestamp into the log record DBT and doing a data
+copy.&nbsp; Actually, I will likely combine #1 and the flag from #2
+above.&nbsp; I will have the <b>REPCTL_LEASE</b>
+flag that indicates a lease grant reply is expected and have the
+timestamp in the control structure.&nbsp; <b>[Is that necessary - it
+feels cleaner, but
+also we could just have a non-zero timestamp = send a
+reply without have it directed by a flag from the master.&nbsp; That
+means we would not need the flag, but builds in an assumption into the
+code instead of having the client simply send a grant when the flag
+says to do so.&nbsp; See Upgrades/Mixed versions below too.]</b>
+Also I will probably add in a spare field or two for future use in the <b>REP_CONTROL</b>
+structure.<br>
+<h4>Gap processing</h4>
+No matter which implementation we choose for ongoing lease refreshment,
+gap processing must be considered.&nbsp; The code above assumes the
+timestamps will be placed on PERM records only.&nbsp; Normal log
+records will not have a timestamp, nor a flag or anything else like
+that.&nbsp; However, any log message can fill a gap on a client and
+result in the processing of that normal log record to return <b>DB_REP_ISPERM</b>
+because later records
+were also processed.<br>
+<br>
+The current implementation should work fine in that case because when
+we store the message in the client temp db we store both the control
+DBT and the record DBT.&nbsp; Therefore, when a normal record fills a
+gap, the later PERM record, when retrieved will look just like it did
+when it arrived.&nbsp; The client will have access to the LSN, and the
+timestamp, etc.&nbsp; However, it does mean that sending the <b>REP_LEASE_GRANT</b>
+message must take
+place down in <i>__rep_apply</i>
+because that is the only place we have access to the contents of those
+stored records with the timestamps.<br>
+<br>
+There are two logical choices to consider for granting the lease when
+processing an update.&nbsp; As we process (either a live record or one
+read from the temp db after filling a gap) a PERM message, we send the <b>REP_LEASE_GRANT</b>
+message for each
+PERM record we successfully apply.&nbsp; Or, second, we keep track of
+the largest timestamp of all PERM records we've processed and at the
+end of the function after we've applied all records, we send back a
+single lease grant with the <i>max_perm_lsn</i>
+and a new <i>max_lease_timestamp</i>
+value to the master.&nbsp; The first is easier to implement, the second
+results in possibly slightly fewer messages at the expense of more
+bookkeeping on the client.<br>
+<br>
+A third, more complicated option would be to have the message timestamp
+on all records, but grants are only sent on the PERM messages.&nbsp; A
+reason to do this is that the later timestamp of a normal log record
+would be used as the timestamp sent in the reply and the master would
+get a more up to date timestamp value and a longer lease.&nbsp; <br>
+<br>
+<span style="font-weight: bold;">[Concern about gap processing here.]</span>&nbsp;
+If we change the <span style="font-weight: bold;">REP_CONTROL</span>
+structure to include the timestamp, we potentially break or at least
+need to revisit the gap processing algorithm.&nbsp; That code assumes
+that the control and record elements for the same LSN look the same
+each and every time.&nbsp; The code stores the <span
+ style="font-style: italic;">control</span> DBT as the key and the <span
+ style="font-style: italic;">rec</span> DBT as the data.&nbsp; We use a
+specialized compare function to sort based on the LSN in the control
+DBT.&nbsp; With master leases, the same record transmitted by a master
+multiple times or client for the same LSN will be different because the
+timestamp field will not be the same.&nbsp; Therefore, the client will
+end up with duplicate entries in the temp database for the same
+LSN.&nbsp; Both solutions (adding the timestamp to <span
+ style="font-weight: bold;">REP_CONTROL</span> and adding a <span
+ style="font-weight: bold;">REPCTL_LEASE</span> flag) can yield
+duplicate entries.&nbsp; The flag would cause the same record from the
+master and client to be different as well.<br>
+<h4>Handling Incoming Lease Grants<br>
+</h4>
+The third piece of lease management is handling the incoming <b>REP_LEASE_GRANT</b>
+message on the
+master.&nbsp; When this message is received, the master must do the
+following:<br>
+<pre>REP_SYSTEM_LOCK<br>msg_timestamp = cntrl-&gt;timestamp;<br>client_lease = __rep_lease_entry(dbenv, client eid)<br>if (client_lease == NULL)<br> initial lease for this site, DB_ASSERT there is space in the table<br> add this to the table if there is space<br>} else <br> compare msg_timestamp with client_lease-&gt;start_time<br> if (msg_timestamp is more recent &amp;&amp; msg_lsn &gt;= lease LSN)<br> update entry in table<br>REP_SYSTEM_UNLOCK<br></pre>
+<h3>Expiring Leases</h3>
+Leases can expire in two ways.&nbsp; First they can expire naturally
+due to the passage of time.&nbsp; When checking leases, if the current
+time is later than the lease entry's <i>end_time</i>
+then the lease is expired.&nbsp; Second, they can be forced with a
+premature expiration when the application's transport function returns
+an error.&nbsp; In the first case, there is nothing to do, in the
+second case we need to manipulate the <i>end_time</i>
+so that all future lease checks fail.&nbsp; Since the lease <i>start_time</i>
+is guaranteed to not be in the future we will have a function <i>__rep_lease_expire</i>
+that will:<br>
+<pre>REP_SYSTEM_LOCK<br>for each entry in the lease table<br> entry-&gt;end_time = entry-&gt;start_time;<br>REP_SYSTEM_UNLOCK<br></pre>
+Is there a potential race or problem with prematurely expiring
+leases?&nbsp; Consider an application that enforces an ALL
+acknowledgement policy for PERM records in its transport
+callback.&nbsp; There are four clients and three send the PERM ack to
+the application.&nbsp; The callback returns an error to the master DB
+code.&nbsp; The DB code will now prematurely expire its leases.&nbsp;
+However, at approximately the same time the three clients are also
+sending their <span style="font-weight: bold;">REP_LEASE_GRANT</span>
+messages to the master.&nbsp; There is a race between the master
+processing those messages and the thread handling the callback failure
+expiring the table.&nbsp; This is only an issue if the messages arrive
+after the table has been expired.<br>
+<br>
+Let's assume all three clients send their grants after the master
+expires the table.&nbsp; If we accept those grants and then a read
+occurs the read will succeed since the master has a majority of leases
+even though the callback failed earlier.&nbsp; Is that a problem?&nbsp;
+The lease code is using a majority and the application policy is using
+something other value.&nbsp; It feels like this should be okay since
+the data is held by leases on a majority.&nbsp; Should we consider
+having the lease checking threshold be the same as the permanent ack
+policy?&nbsp; That is difficult because Base API users implement
+whatever they want and DB does not know what it is.<br>
+<h3>Checking Leases</h3>
+When a read operation on the master completes, the last thing we need
+to do is verify the master leases.&nbsp; We've already discussed
+refreshing them when they are expired above.&nbsp; We need two things
+for a lease to be valid.&nbsp; It must be within the timeframe of the
+lease grant and the lease must be valid for the last PERM record
+LSN.&nbsp; Here is the logic
+for checking the validity of leases in <i>__rep_lease_check</i>:<br>
+<pre>#define MAX_REFRESH_TRIES 3<br>DB_LSN lease_lsn;<br>REP_LEASE_ENTRY *entry;<br>u_int32_t min_leases, valid_leases;<br>db_timespec cur_time;<br>int ret, tries;<br><br> tries = 0;<br>retry:<br> ret = 0;<br> LOG_SYSTEM_LOCK<br> lease_lsn = lp-&gt;lsn<br> LOG_SYSTEM_UNLOCK<br> REP_SYSTEM_LOCK<br> min_leases = rep-&gt;nsites / 2;<br> __os_gettime(dbenv, &amp;cur_time);<br> for (entry = head of table, valid_leases = 0; entry != NULL &amp;&amp; valid_leases &lt; min_leases; entry++)<br> if (timespec_cmp(&amp;entry-&gt;end_time, &amp;cur_time) &gt;= 0 &amp;&amp; log_compare(&amp;entry-&gt;lsn, lease_lsn) == 0)<br> valid_leases++;<br> REP_SYSTEM_UNLOCK<br> if (valid_leases &lt; min_leases) {<br> ret =__rep_lease_refresh(dbenv, ...);<br> /*<br> * If we are successful, we need to recheck the leases because <br> * the lease grant messages may have raced with the PERM<br> * acknowledgement. Give those messages a chance to arrive.<br> */<br> if (ret == 0) {<br> if (tries &lt;= MAX_REFRESH_TRIES) {<br> /*<br> * If we were successful sending, but not successful in racing the<br> * message thread, yield the processor so that message<br> * threads may have a chance to run.<br> */<br> if (tries &gt; 0)<br> /* __os_sleep instead?? */<br> __os_yield()<br> tries++;<br> goto retry;<br> } else<br> ret = DB_RET_LEASE_EXPIRED;<br> }<br> }<br> return (ret);</pre>
+If the master has enough valid leases it returns success.&nbsp; If it
+does not have enough, it attempts to refresh them.&nbsp; This attempt
+may fail if sending the PERM record does not receive sufficient
+acks.&nbsp; If we do receive sufficient acknowledgements we may still
+find that scheduling of message threads means the master hasn't yet
+processed the incoming <b>REP_LEASE_GRANT</b>
+messages yet.&nbsp; We will retry a couple times (possibly
+parameterized) if the master discovers that situation.&nbsp; <br>
+<h2>Elections</h2>
+When a client grants a lease to a master, it gives up the right to
+participate in an election until that grant expires.&nbsp; If we are
+the master and <i>dbenv-&gt;rep_elect</i>
+is called, it should return, no matter what, like it does today.&nbsp;
+If we are a client and <i>rep_elect</i>
+is called special processing takes place when leases are in
+effect.&nbsp; First, the easy case is if the lease granted by this
+client has already expired, then the client goes directly into the
+election as normal.&nbsp; If a valid lease grant is outstanding to a
+master, this site cannot participate in an election until that grant
+expires.&nbsp; We have at least two options when a site calls the <i>dbenv-&gt;rep_elect</i>
+API while
+leases are in effect.<br>
+<ol>
+ <li>The simplest coding solution for DB would be simply to refuse to
+participate in the election if this site has a current lease granted to
+a master.&nbsp; We would detect this situation and return EINVAL.&nbsp;
+This is correct behavior and trivial to implement.&nbsp; The
+disadvantage of this solution is that the application would then be
+responsible for repeatedly attempting an election until the lease grant
+expired.<br>
+ </li>
+ <li>The more satisfying solution is for DB to wait the remaining time
+for the grant.&nbsp; If this client hears from the master during that
+time the election does not take place and the call to <i>rep_elect</i>
+returns with the
+information for the current/old master.</li>
+</ol>
+<h3>Election Code Changes</h3>
+The code changes to support leases in the election code are fairly
+isolated.&nbsp; First if leases are configured, we must verify the <i>nsites</i>
+parameter is set to 0.&nbsp;
+Second, in <i>__rep_elect_init</i>
+we must not overwrite the value of <i>rep-&gt;nsites</i>
+for leases because it is controlled by the <i>dbenv-&gt;rep_set_nsites</i>
+API.&nbsp;
+These changes are small and easy to understand.<br>
+<br>
+The more complicated code will be the client code when it has an
+outstanding lease granted.&nbsp; The client will wait for the current
+lease grant to expire before proceeding with the election.&nbsp; The
+client will only do so if it does not hear from the master for the
+remainder of the lease grant time.&nbsp; If the client hears from the
+master, it returns and does not begin participating in the
+election.&nbsp; A new election phase, <b>REP_EPHASE0</b>
+will exist so that the call to <i>__rep_wait</i>
+can detect if a master responds.&nbsp; The client, while waiting for
+the lease grant to expire, will send a <b>REP_MASTER_REQ</b>
+message so that the master will respond with a <b>REP_NEWMASTER</b>
+message and thus,
+allow the client to know the master exists.&nbsp; However, it is also
+desirable that if the master
+replies to the client, the master wants the client to update its lease
+grant.&nbsp; <br>
+<br>
+Recall that the <b>REP_NEWMASTER</b>
+message does not result in a lease grant from the client.&nbsp; The
+client responds when it processes a PERM record that has the <b>REPCTL_LEASE</b>
+flag set in the message
+with its lease grant up to the given LSN.&nbsp; Therefore, we want the
+client's <b>REP_MASTER_REQ</b> to
+yield both the discovery of the existing master and have the master
+refresh its leases.&nbsp; The client will also use the <b>REPCTL_LEASE</b>
+flag in its <b>REP_MASTER_REQ</b> message to the
+master.&nbsp; This flag will serve as the indicator to the master that
+it needs to deal with leases and both send the <b>REP_NEWMASTER</b>
+message and refresh
+the lease.<br>
+The code will work as follows:<br>
+<pre>if (leases_configured &amp;&amp; (my_grant_still_valid || lease_never_granted) {<br> if (lease_never_granted)<br> wait_time = lease_timeout<br> else<br> wait_time = grant_expiration - current_time<br> F_SET(REP_F_EPHASE0);<br> __rep_send_message(..., REP_MASTER_REQ, ... REPCTL_LEASE);<br> ret = __rep_wait(..., REP_F_EPHASE0);<br> if (we found a master)<br> return<br>} /* if we don't return, fall out and proceed with election */<br></pre>
+On the master side, the code handling the <b>REP_MASTER_REQ</b> will
+do:<br>
+<pre>if (I am master) {<br> ...<br> __rep_send_message(REP_NEWMASTER...)<br> if (F_ISSET(rp, REPCTL_LEASE))<br> __rep_lease_refresh(...)<br>}<br></pre>
+Other minor implementation details are that<i> __rep_elect_done</i>
+must also clear
+the <b>REP_F_EPHASE0</b> flag.&nbsp;
+We also, obviously, need to define <b>REP_F_EPHASE0</b>
+in the list of replication flags.&nbsp; Note that the client's call to <i>__rep_wait</i>
+will return upon
+receiving the <b>REP_NEWMASTER</b>
+message.&nbsp; The client will independently refresh its lease when it
+receives the log record from the master's call to refresh the lease.<br>
+<br>
+Again, similar to what I suggested above, the code could simply assume
+global leases are configured, and instead of having the <b>REPCTL_LEASE</b>
+flag at all, the master
+assumes that it needs to refresh leases because it has them configured,
+not because it is specified in the <b>REP_MASTER_REQ</b>
+message it is processing. Right now I don't think every possible
+<b>REP_MASTER_REQ</b> message should result in a lease grant request.<br>
+<h4>Elections and Quiescient Systems</h4>
+It is possible that a master is slow or the client is close to its
+expiration time, or that the master is quiescient and all leases are
+currently expired, but nothing much is going on anyway, yet some client
+calls <i>__rep_elect</i> at that
+time.&nbsp; In the code above, we will not send the <b>REP_MASTER_REQ</b>
+because the lease is
+not valid.&nbsp; The client will simply proceed directly to sending the
+<b>REP_VOTE1</b> message, throwing all
+other clients into an election.&nbsp; The master is still master and
+should stay that way.&nbsp; Currently in response to a vote message, a
+master will broadcast out a <b>REP_NEWMASTER</b>
+to assert its mastership.&nbsp; That causes the election to
+complete.&nbsp; However, if desired the master may want to proactively
+refresh its leases.&nbsp; This situation indicates to me that the
+master should choose to refresh leases based on configuration, not a
+flag sent from the client.&nbsp; I believe anytime the master asserts
+its mastership via sending a <b>REP_NEWMASTER</b>
+message that I need to add code to proactively refresh leases at that
+time.<br>
+<h2>Other Implementation Details</h2>
+<h3>Role Changes<br>
+</h3>
+When a site changes its role via a call to <i>rep_start</i> in either
+direction, we
+must take action when leases are configured.&nbsp; There are three
+types of role changes that all need changes to deal with leases:<br>
+<ol>
+ <li><i>A master downgrading to a
+client.</i> When a master downgrades to a client, it can do so
+immediately after it has proactively expired all existing leases it
+holds.&nbsp; This situation is similar to an error from the send
+callback, and it effectively cancels all outstanding leases held on
+this site.&nbsp; Note that if this master expires its leases, it does
+not have any effect on when the clients' lease grants expire on the
+client side.&nbsp; The clients must still wait their full expected
+grant time.<br>
+ </li>
+ <li><i>A client upgrading to master.</i>
+If a client is upgrading to a master but it has an outstanding lease
+granted to another site, the code will return an <b>EINVAL</b>
+error.&nbsp; This situation
+only arises if the application simply declares this site master.&nbsp;
+If a site wins an election then the election itself should have waited
+long enough for the granted lease to expire and this state should not
+arise then.</li>
+ <li><i>A client finding a new master.</i>
+When a client discovers a new and different master, via a <b>REP_NEWMASTER</b>
+message then the
+client cannot accept that new master until its current lease grant
+expires.&nbsp; This situation should only occur when a site declares
+itself master without an election and that site's lease grant expires
+before this client's grant expires.&nbsp; However, it is <b>possible</b>
+for this situation to arise
+with elections also.&nbsp; If we have 5 sites holding an election and 4
+of those sites have leases expire at about the same time T, and this
+site's lease expires at time T+N and the election timeout is &lt; N,
+then those 4 sites may hold an election and elect a master without this
+site's participation.&nbsp; A client in this situation must call <i>__rep_wait</i>
+with the time remaining
+on its lease.&nbsp; If the lease is expired after waiting the remaining
+time, then the client can accept this new master.&nbsp; If the lease
+was refreshed during the waiting period then the client does not accept
+this new master and returns.<br>
+ </li>
+</ol>
+<h3>DUPMASTER</h3>
+A duplicate master situation can occur if an old master becomes
+disconnected from the rest of the group, that group elects a new master
+and then the partition is resolved.&nbsp; The requirement for master
+leases is that this situation will not cause the newly elected,
+rightful master to receive the <b>DB_REP_DUPMASTER</b>
+return.&nbsp; It is okay for the old master to get that return
+value.&nbsp; When a dual master situation exists, the following will
+happen:<br>
+<ul>
+ <li><i>On the current master and all
+current clients</i> - If the current master receives an update
+message or other conflicting message from the old master then that
+message will be ignored because the generation number is out of date.</li>
+ <li><i>On the old master</i> - If
+the old master receives an update message from the current master, or
+any other message with a later generation from any site, the new
+generation number will trigger this site to return <b>DB_REP_DUPMASTER</b>.&nbsp;
+However,
+instead of broadcasting out the <b>REP_DUPMASTER</b>
+message to shoot down others as well, this site, if leases are
+configured, will call <i>__rep_lease_check</i>
+and if they are expired, return the error.&nbsp; It should be
+impossible for us to receive a later generation message and still hold
+a majority of master leases.&nbsp; Something is seriously wrong and we
+will <b>DB_ASSERT</b> this situation
+cannot happen.<br>
+ </li>
+</ul>
+<h3>Client to Client Synchronization</h3>
+One question to ask is how lease grants interact with client-to-client
+synchronization. The only answer is that they do not.&nbsp; A client
+that is sending log records to another client cannot request the
+receiving client refresh its lease with the master.&nbsp; That client
+does not have a timestamp it can use for the master and clock skew
+makes it meaningless between machines.&nbsp; Therefore, sites that use
+client-to-client synchronization will likely see more lease refreshment
+during the read path and leases will be refreshed during live updates
+only.&nbsp; Of course, if a client supplies log records that fill a
+gap, and the later log records stored came from the master in a live
+update then the client will respond as per the discussion on Gap
+Processing above.<br>
+<h2>Interaction Matrix</h2>
+If leases are granted (by a client) or held (by a master) what should
+the following APIs and messages do?<br>
+<br>
+Other:<br>
+log_archive: Leases do not affect log_archive.&nbsp; OK.<br>
+dbenv-&gt;close: OK.<br>
+crash during lease grant and restart: <b>Potential
+problem here.&nbsp; See discussion below</b>.<br>
+<br>
+Rep Base API method:<br>
+rep_elect: Already discussed above.&nbsp; Must wait for lease to expire.<br>
+rep_flush: Master only, OK - this will be the basis for refreshing
+leases.<br>
+rep_get_*: Not affected by leases.<br>
+rep_process_message: Generally OK.&nbsp; We'll discuss each message
+below.<br>
+rep_set_config: OK.<br>
+rep_set_limit: OK<br>
+rep_set_nsites: Must be called before <i>rep_start</i>
+and <i>nsites</i> is immutable until
+14778 is resolved.<br>
+rep_set_priority: OK<br>
+rep_set_timeout: OK.&nbsp; Used to set lease timeout.<br>
+rep_set_transport: OK.<br>
+rep_start(MASTER): Role changes are discussed above.&nbsp; Make sure
+duplicate rep_start calls are no-ops for leases.<br>
+rep_start(CLIENT): Role changes are discussed above.&nbsp; Make sure
+duplicate calls are no-ops for leases.<br>
+rep_stat: OK. <b>[Do we have any stats
+we want to add?&nbsp; Currently none are planned, but may come up
+during implementation and testing as useful to have.&nbsp; Suggestions?]</b><br>
+rep_sync: Should not be able to happen.&nbsp; Client cannot accept new
+master with outstanding lease grant.&nbsp; Add DB_ASSERT here.<br>
+<br>
+REP_ALIVE: OK.<br>
+REP_ALIVE_REQ: OK.<br>
+REP_ALL_REQ: OK.<br>
+REP_BULK_LOG: OK.&nbsp; Clients check to send ACK.<br>
+REP_BULK_PAGE: Should never process one with lease granted.&nbsp; Add
+DB_ASSERT.<br>
+REP_DUPMASTER: Should never happen, this is what leases are supposed to
+prevent.&nbsp; See above.<br>
+REP_LOG: OK.&nbsp; Clients check to send ACK.<br>
+REP_LOG_MORE: OK <b>[maybe remove and
+use flag]</b> Clients check to send ACK.<br>
+REP_LOG_REQ: OK.<br>
+REP_MASTER_REQ: OK.<br>
+REP_NEWCLIENT: OK.<br>
+REP_NEWFILE: OK.&nbsp; Clients check to send ACK.<br>
+REP_NEWMASTER: See above.<br>
+REP_NEWSITE: OK.<br>
+REP_PAGE: OK.&nbsp; Should never process one with lease granted.&nbsp;
+Add DB_ASSERT.<br>
+REP_PAGE_FAIL:&nbsp; OK.&nbsp; Should never process one with lease
+granted.&nbsp; Add DB_ASSERT.<br>
+REP_PAGE_MORE:&nbsp; OK.&nbsp; Should never process one with lease
+granted.&nbsp; Add DB_ASSERT.<br>
+REP_PAGE_REQ: OK.<br>
+REP_REREQUEST: OK.<br>
+REP_UPDATE: OK.&nbsp; Should never process one with lease
+granted.&nbsp; Add DB_ASSERT.<br>
+REP_UPDATE_REQ: OK.&nbsp; This is a master-only message.<br>
+REP_VERIFY: OK.&nbsp; Should never process one with lease
+granted.&nbsp; Add DB_ASSERT.<br>
+REP_VERIFY_FAIL: OK.&nbsp; Should never process one with lease
+granted.&nbsp; Add DB_ASSERT.<br>
+REP_VERIFY_REQ: OK.<br>
+REP_VOTE1: OK.&nbsp; See Election discussion above.&nbsp; It is
+possible to receive one with a lease granted.&nbsp; Client cannot send
+one with an outstanding lease however.<br>
+REP_VOTE2: OK.&nbsp; See Election discussion above.&nbsp; It is
+possible to receive one with a lease granted.<br>
+<br>
+If the following method or message processing is in progress and a
+client wants to grant a lease, what should it do?&nbsp; Let's examine
+what this means.&nbsp; The client wanting to grant a lease simply means
+it is responding to the receipt of a <b>REP_LOG</b>
+(or its variants) message and applying a log record.&nbsp; Therefore,
+we need to consider a thread processing a log message racing with these
+other actions.<br>
+<br>
+Other:<br>
+log_archive: OK.&nbsp; <br>
+dbenv-&gt;close: User error.&nbsp; User should not be closing the env
+while other threads are using that handle.&nbsp; Should have no effect
+if a 2nd dbenv handle to same env is closed.<br>
+<br>
+Rep Base API method:<br>
+rep_elect: See Election discussion above.&nbsp; <i>rep_elect</i>
+should wait and may grant
+lease while election is in progress.<br>
+rep_flush: Should not be called on client.<br>
+rep_get_*: OK.<br>
+rep_process_message: Generally OK.&nbsp; See handling each message
+below.<br>
+rep_set_config: OK.<br>
+rep_set_limit: OK.<br>
+rep_set_nsites: Must be called before <i>rep_start</i>
+until 14778 is resolved.<br>
+rep_set_priority: OK.<br>
+rep_set_timeout: OK.<br>
+rep_set_transport: OK.<br>
+rep_start(MASTER): OK, can't happen - already protect racing <i>rep_start</i>
+and <i>rep_process_message</i>.<br>
+rep_start(CLIENT): OK, can't happen - already protect racing <i>rep_start</i>
+and <i>rep_process_message</i>.<br>
+rep_stat: OK.<br>
+rep_sync: Shouldn't happen because client cannot grant leases during
+sync-up.&nbsp; Incoming log message ignored.<br>
+<br>
+REP_ALIVE: OK.<br>
+REP_ALIVE_REQ: OK.<br>
+REP_ALL_REQ: OK.<br>
+REP_BULK_LOG: OK.<br>
+REP_BULK_PAGE: OK.&nbsp; Incoming log message ignored during internal
+init.<br>
+REP_DUPMASTER: Shouldn't happen.&nbsp; See DUPMASTER discussion above.<br>
+REP_LOG: OK.<br>
+REP_LOG_MORE: OK.<br>
+REP_LOG_REQ: OK.<br>
+REP_MASTER_REQ: OK.<br>
+REP_NEWCLIENT: OK.<br>
+REP_NEWFILE: OK.<br>
+REP_NEWMASTER: See above.&nbsp; If a client accepts a new master
+because its lease grant expired, then that master sends a message
+requesting the lease grant, this client will not process the log record
+if it is in sync-up recovery, or it may after the master switch is
+complete and the client doesn't need sync-up recovery.&nbsp; Basically,
+just uses existing log record processing/newmaster infrastructure.<br>
+REP_NEWSITE: OK.<br>
+REP_PAGE: OK.&nbsp; Receiving a log record during internal init PAGE
+phase should ignore log record.<br>
+REP_PAGE_FAIL: OK.<br>
+REP_PAGE_MORE: OK.<br>
+REP_PAGE_REQ: OK.<br>
+REP_REREQUEST: OK.<br>
+REP_UPDATE: OK.&nbsp; Receiving a log record during internal init
+should ignore log record.<br>
+REP_UPDATE_REQ: OK - master-only message.<br>
+REP_VERIFY: OK.&nbsp; Receiving a log record during verify phase
+ignores log record.<br>
+REP_VERIFY_FAIL: OK.<br>
+REP_VERIFY_REQ: OK.<br>
+REP_VOTE1: OK.&nbsp; This client is processing someone else's vote when
+the lease request comes in.&nbsp; That is fine.&nbsp; We protect our
+own election and lease interaction in <i>__rep_elect</i>.<br>
+REP_VOTE2: OK.<br>
+<h4>Crashing - Potential Problem<br>
+</h4>
+It appears there is one area where we could have a problem.&nbsp; I
+believe that crashes can cause us to break our guarantee on durability,
+authoritative reads and inability to elect duplicate masters.&nbsp;
+Consider this scenario:<br>
+<ol>
+ <li>A master and 4 clients are all up and running.</li>
+ <li>The master commits a txn and all 4 clients refresh their lease
+grants at time T.</li>
+ <li>All 4 clients have the txn and log records in the cache.&nbsp;
+None are flushing to disk.</li>
+ <li>All 4 clients have responded to the PERM messages as well as
+refreshed their lease with the master.</li>
+ <li>All 4 clients hit the same application coding error and crash
+(machine/OS stays up).</li>
+ <li>Master authoritatively reads data in txn from step 2.</li>
+ <li>All 4 clients restart the application and run recovery, thus the
+txn from step 2 is lost on all clients because it isn't any logs.<span
+ style="font-weight: bold;"></span><br>
+ </li>
+ <li>A network partition happens and the master is alone on its side.</li>
+ <li>All 4 clients are on the other side and elect a new master.</li>
+ <li>Partition resolves itself and we have duplicate masters, where
+the former master still holds all valid lease grants.<span
+ style="font-weight: bold;"></span><br>
+ </li>
+</ol>
+Therefore, we have broken both guarantees.&nbsp; In step 6 the data is
+really not durable and we've given it to the user.&nbsp; One can argue
+that if this is an issue the application better be syncing somewhere if
+they really want durability.&nbsp; However, worse than that is that we
+have a legitimate DUPMASTER situation in step 10 where both masters
+hold valid leases.&nbsp; The reason is that all lease knowledge is in
+the shared memory and that is lost when the app restarts and runs
+recovery.<br>
+<br>
+How can we solve this?&nbsp; The obvious solution is (ugh, yet another)
+durable BDB-owned file with some information in it, such as the current
+lease expiration time so that rebooting after a crash leaves the
+knowledge that the lease was granted.&nbsp; However, writing and
+syncing every lease grant on every client out to disk is far too
+expensive.<br>
+<br>
+A second possible solution is to have clients wait a full lease timeout
+before entering an election the first time. This solution solves the
+DUPMASTER issue, but not the non-authoritative read.&nbsp; This
+solution naturally falls out of elections and leases really.&nbsp; If a
+client has never granted a lease, it should be considered as having to
+wait a full lease timeout before entering an election.&nbsp;
+Applications already know that leases impact elections and this does
+not seem so bad as it is only on the first election.<br>
+<br>
+Is it sufficient to document that the authoritative read is only as
+authoritative as the durability guarantees they make on the sites that
+indicate it is permanent? Yes, I believe this is sufficient.&nbsp; If
+the application says it is permanent and it really isn't, then the
+application is at fault.&nbsp; Believing the application when it
+indicates with the PERM response that it is permanent avoids the
+authoritative problem <span style="font-weight: bold;">[document this
+application requirement]</span>.&nbsp; <br>
+<h2>Upgrade/Mixed Versions</h2>
+Clearly leases cannot be used with mixed version sites since masters
+running older releases will not have any knowledge of lease
+support.&nbsp; What considerations are needed in the lease code for
+mixed versions?<br>
+<br>
+First if the <b>REP_CONTROL</b>
+structure changes, we need to maintain and use an old version of the
+structure for talking to older clients and masters.&nbsp; The
+implementation of this would be similar to the way we manage for old <b>REP_VOTE_INFO</b>
+structures.&nbsp;
+Second any new messages need translation table entries added.&nbsp;
+Third, if we are assuming global leases then clearly any mixed versions
+cannot have leases configured, and leases cannot be used in mixed
+version groups.&nbsp; Maintaining two versions of the control structure
+is not necessary if we choose a different style of implementation and
+don't change the control structure.<br>
+<br>
+However, then how could an old application both run continuously,
+upgrade to the new release and take advantage of leases without taking
+down the entire application?&nbsp; I believe it is possible for clients
+to be configured for leases but be subject to the master regarding
+leases, yet the master code can assume that if it has leases
+configured, all client sites do as well.&nbsp; In several places above
+I suggested that a client could make a choice based on either a new <b>REPCTL_LEASE</b>
+flag or simply having
+leases turned on locally.&nbsp; If we choose to use the flag, then we
+can support leases with mixed versions.&nbsp; The upgraded clients can
+configure leases and they simply will not be granted until the old
+master is upgraded and send PERM message with the flag indicating it
+wants a lease grant.&nbsp; The client will not grant a lease until such
+time.&nbsp; The clients, while having the leases configured, will not
+grant a lease until told to do so and will simply have an expired
+lease.&nbsp; Then, when the old master finally upgrades, it too can
+configure leases and suddenly all sites are using them.&nbsp; I believe
+this should work just fine and I will need to make sure a client's
+granting of leases is only in response to the master asking for a
+grant.&nbsp; If the master never asks, then the client has them
+configured, but doesn't grant them.<br>
+<h2>Testing</h2>
+Clearly any user-facing API changes will need the equivalent reflection
+in the Tcl API for testing, under CONFIG_TEST.<br>
+<br>
+I am sure the list of tests will grow but off the top of my head:<br>
+Basic test: have N sites all configure leases, run some,&nbsp; read on
+master, etc.<br>
+Refresh test: Perform update on master, sleep until past expiration,
+read on master and make sure leases are refreshed/read successful<br>
+Error test: Test error conditions (reading on client with leases but no
+ignore flag, calling after rep_start, etc)<br>
+Read test: Test reading on both client and master both with and without
+the IGNORE flag.&nbsp; Test that data read with the ignore flag can be
+rolled back.<br>
+Dupmaster test: Force a DUPMASTER situation and verify that the newer
+master cannot get DUPMASTER error.<br>
+Election test: Call election while grant is outstanding and master
+exists.<br>
+Call election while grant is outstanding and master does not exist.<br>
+Call election after expiration on quiescient system with master
+existing.<br>
+Run with a group where some members have leases configured and other do
+not to make sure we get errors instead of dumping core.<br>
+<br>
+<small><br>
+</small>
+</body>
+</html>
diff --git a/db/rep/rep.src b/db/rep/rep.src
index f80c39dd3..fc2316f6b 100644
--- a/db/rep/rep.src
+++ b/db/rep/rep.src
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2001-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2001,2007 Oracle. All rights reserved.
*
- * $Id: rep.src,v 12.9 2006/08/24 14:46:25 bostic Exp $
+ * $Id: rep.src,v 12.11 2007/05/17 15:15:50 bostic Exp $
*/
PREFIX __rep
diff --git a/db/rep/rep_backup.c b/db/rep/rep_backup.c
index 506dd4467..878c81061 100644
--- a/db/rep/rep_backup.c
+++ b/db/rep/rep_backup.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2004-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2004,2007 Oracle. All rights reserved.
*
- * $Id: rep_backup.c,v 12.75 2006/09/19 14:14:09 mjc Exp $
+ * $Id: rep_backup.c,v 12.120 2007/06/22 18:46:45 paula Exp $
*/
#include "db_config.h"
@@ -19,25 +18,33 @@
#include "dbinc/qam.h"
#include "dbinc/txn.h"
-static int __rep_check_uid __P(( DB_ENV *, u_int8_t *, u_int8_t *, u_int8_t *));
+static int __rep_check_uid __P((DB_ENV *, u_int8_t *, u_int8_t *, u_int8_t *));
static int __rep_filedone __P((DB_ENV *, int, REP *, __rep_fileinfo_args *,
u_int32_t));
static int __rep_find_dbs __P((DB_ENV *, u_int8_t **, size_t *,
- size_t *, u_int32_t *, int));
+ size_t *, u_int32_t *));
static int __rep_get_fileinfo __P((DB_ENV *, const char *,
const char *, __rep_fileinfo_args *, u_int8_t *, u_int32_t *));
-static int __rep_log_setup __P((DB_ENV *, REP *));
+static int __rep_get_file_list __P((DB_ENV *, DB_FH *, DBT *));
+static int __rep_log_setup __P((DB_ENV *,
+ REP *, u_int32_t, u_int32_t, DB_LSN *));
static int __rep_mpf_open __P((DB_ENV *, DB_MPOOLFILE **,
__rep_fileinfo_args *, u_int32_t));
+static int __rep_nextfile __P((DB_ENV *, int, REP *));
static int __rep_page_gap __P((DB_ENV *, REP *, __rep_fileinfo_args *,
u_int32_t));
static int __rep_page_sendpages __P((DB_ENV *, int,
__rep_fileinfo_args *, DB_MPOOLFILE *, DB *));
static int __rep_queue_filedone __P((DB_ENV *, REP *, __rep_fileinfo_args *));
-static int __rep_remove_dbs __P((DB_ENV *));
+static int __rep_remove_all __P((DB_ENV *, DBT *));
+static int __rep_remove_file __P((DB_ENV *, u_int8_t *, const char *,
+ u_int32_t, u_int32_t));
static int __rep_remove_logs __P((DB_ENV *));
+static int __rep_remove_by_list __P((DB_ENV *, void *, u_int32_t));
+static int __rep_remove_by_prefix __P((DB_ENV *, const char *, const char *,
+ size_t, APPNAME));
static int __rep_walk_dir __P((DB_ENV *, const char *, u_int8_t **, u_int8_t *,
- size_t *, size_t *, u_int32_t *, int));
+ size_t *, size_t *, u_int32_t *));
static int __rep_write_page __P((DB_ENV *, REP *, __rep_fileinfo_args *));
/*
@@ -56,7 +63,7 @@ __rep_update_req(dbenv, eid)
DB_LOGC *logc;
DB_LSN lsn;
size_t filelen, filesz, updlen;
- u_int32_t filecnt, version;
+ u_int32_t filecnt, flag, version;
u_int8_t *buf, *fp;
int ret, t_ret;
@@ -87,15 +94,24 @@ __rep_update_req(dbenv, eid)
*/
fp = buf + sizeof(__rep_update_args);
if ((ret = __rep_find_dbs(
- dbenv, &fp, &filesz, &filelen, &filecnt, 0)) != 0)
+ dbenv, &fp, &filesz, &filelen, &filecnt)) != 0)
goto err;
/*
* Now get our first LSN. We send the lsn of the first
* non-archivable log file.
*/
- if ((ret = __log_get_stable_lsn(dbenv, &lsn)) != 0)
- goto err;
+ flag = DB_SET;
+ if ((ret = __log_get_stable_lsn(dbenv, &lsn)) != 0) {
+ if (ret != DB_NOTFOUND)
+ goto err;
+ /*
+ * If ret is DB_NOTFOUND then there is no checkpoint
+ * in this log, that is okay, just start at the beginning.
+ */
+ ret = 0;
+ flag = DB_FIRST;
+ }
/*
* Now get the version number of the log file of that LSN.
@@ -105,13 +121,23 @@ __rep_update_req(dbenv, eid)
memset(&vdbt, 0, sizeof(vdbt));
/*
- * Set our log cursor on the LSN we are sending.
+ * Set our log cursor on the LSN we are sending. Or
+ * to the first LSN if we have no stable LSN.
*/
- if ((ret = __log_c_get(logc, &lsn, &vdbt, DB_SET)) != 0)
- goto err;
-
- if ((ret = __log_c_version(logc, &version)) != 0)
- goto err;
+ if ((ret = __logc_get(logc, &lsn, &vdbt, flag)) != 0) {
+ /*
+ * We could be racing a fresh master starting up. If we
+ * have no log records, assume an initial LSN and current
+ * log version.
+ */
+ if (ret != DB_NOTFOUND)
+ goto err;
+ INIT_LSN(lsn);
+ version = DB_LOGVERSION;
+ } else {
+ if ((ret = __logc_version(logc, &version)) != 0)
+ goto err;
+ }
/*
* Package up the update information.
*/
@@ -130,7 +156,7 @@ __rep_update_req(dbenv, eid)
dbenv, eid, REP_UPDATE, &lsn, &updbt, 0, 0);
err: __os_free(dbenv, buf);
- if (logc != NULL && (t_ret = __log_c_close(logc)) != 0 && ret == 0)
+ if (logc != NULL && (t_ret = __logc_close(logc)) != 0 && ret == 0)
ret = t_ret;
return (ret);
}
@@ -142,14 +168,19 @@ err: __os_free(dbenv, buf);
* need to open them, gather the necessary information and then close
* them. Then we need to figure out if they're already in the dbentry
* array.
+ *
+ * !!!
+ * The pointer *fp is expected to point into a buffer that may be used for an
+ * UPDATE message, at an offset equal to the size of __rep_update_args. This
+ * assumption is relied upon if the buffer is found to be too small and must be
+ * reallocated.
*/
static int
-__rep_find_dbs(dbenv, fp, fileszp, filelenp, filecntp, do_remove)
+__rep_find_dbs(dbenv, fp, fileszp, filelenp, filecntp)
DB_ENV *dbenv;
u_int8_t **fp;
size_t *fileszp, *filelenp;
u_int32_t *filecntp;
- int do_remove;
{
int ret;
char **ddir, *real_dir;
@@ -163,18 +194,15 @@ __rep_find_dbs(dbenv, fp, fileszp, filelenp, filecntp, do_remove)
* env home dir.
*/
ret = __rep_walk_dir(dbenv, dbenv->db_home, fp, NULL,
- fileszp, filelenp, filecntp, do_remove);
+ fileszp, filelenp, filecntp);
} else {
- if (fp != NULL)
- origfp = *fp;
- else
- origfp = NULL;
+ origfp = *fp;
for (ddir = dbenv->db_data_dir; *ddir != NULL; ++ddir) {
if ((ret = __db_appname(dbenv, DB_APP_NONE,
*ddir, 0, NULL, &real_dir)) != 0)
break;
if ((ret = __rep_walk_dir(dbenv, real_dir, fp, origfp,
- fileszp, filelenp, filecntp, do_remove)) != 0)
+ fileszp, filelenp, filecntp)) != 0)
break;
__os_free(dbenv, real_dir);
real_dir = NULL;
@@ -182,9 +210,9 @@ __rep_find_dbs(dbenv, fp, fileszp, filelenp, filecntp, do_remove)
}
/* Now, collect any in-memory named databases. */
- if (ret == 0 && do_remove == 0)
+ if (ret == 0)
ret = __rep_walk_dir(dbenv, NULL,
- fp, NULL, fileszp, filelenp, filecntp, do_remove);
+ fp, NULL, fileszp, filelenp, filecntp);
if (real_dir != NULL)
__os_free(dbenv, real_dir);
@@ -195,23 +223,19 @@ __rep_find_dbs(dbenv, fp, fileszp, filelenp, filecntp, do_remove)
* __rep_walk_dir --
*
* This is the routine that walks a directory and fills in the structures
- * that we use to generate messages to the client telling it what files
+ * that we use to generate messages to the client telling it what
* files are available. If the directory name is NULL, then we should
* walk the list of in-memory named files.
*/
static int
-__rep_walk_dir(dbenv, dir, fp, origfp, fileszp, filelenp, filecntp, do_remove)
+__rep_walk_dir(dbenv, dir, fp, origfp, fileszp, filelenp, filecntp)
DB_ENV *dbenv;
const char *dir;
u_int8_t **fp, *origfp;
size_t *fileszp, *filelenp;
u_int32_t *filecntp;
- int do_remove;
{
DBT namedbt, uiddbt;
-#ifdef DIAGNOSTIC
- DB_MSGBUF mb;
-#endif
__rep_fileinfo_args tmpfp;
size_t len, offset;
int cnt, first_file, i, ret;
@@ -221,12 +245,12 @@ __rep_walk_dir(dbenv, dir, fp, origfp, fileszp, filelenp, filecntp, do_remove)
memset(&namedbt, 0, sizeof(namedbt));
memset(&uiddbt, 0, sizeof(uiddbt));
if (dir == NULL) {
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"Walk_dir: Getting info for in-memory named files"));
if ((ret = __memp_inmemlist(dbenv, &names, &cnt)) != 0)
return (ret);
} else {
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"Walk_dir: Getting info for dir: %s", dir));
if ((ret = __os_dirlist(dbenv, dir, &names, &cnt)) != 0)
return (ret);
@@ -234,11 +258,11 @@ __rep_walk_dir(dbenv, dir, fp, origfp, fileszp, filelenp, filecntp, do_remove)
rfp = NULL;
if (fp != NULL)
rfp = *fp;
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"Walk_dir: Dir %s has %d files", dir, cnt));
first_file = 1;
for (i = 0; i < cnt; i++) {
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"Walk_dir: File %d name: %s", i, names[i]));
/*
* Skip DB-owned files: __db*, DB_CONFIG, log*
@@ -265,62 +289,17 @@ __rep_walk_dir(dbenv, dir, fp, origfp, fileszp, filelenp, filecntp, do_remove)
/*
* If we find a file that isn't a database, skip it.
*/
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"Walk_dir: File %d %s: returned error %s",
i, names[i], db_strerror(ret)));
ret = 0;
continue;
}
- if (do_remove) {
- /*
- * Calling __fop_remove will both purge any matching
- * fileid from mpool and unlink it on disk.
- */
-#ifdef HAVE_QUEUE
- /*
- * Handle queue separately. __fop_remove will not
- * remove extent files. Use __qam_remove to remove
- * extent files that might exist under this name.
- */
- if (tmpfp.type == (u_int32_t)DB_QUEUE) {
- DB *dummydbp;
- if ((ret = db_create(&dummydbp, dbenv, 0))
- != 0)
- goto err;
- RPRINT(dbenv, (dbenv, &mb,
- "Walk_dir: QAM: Unlink %s via __qam_remove", names[i]));
- if ((ret = __qam_remove(dummydbp, NULL,
- names[i], NULL)) != 0) {
- RPRINT(dbenv, (dbenv, &mb,
- "Walk_dir: qam_remove returned %d",
- ret));
- goto err;
- }
- if ((ret = __db_close(dummydbp, NULL,
- DB_NOSYNC)) != 0)
- goto err;
- }
-#endif
- /*
- * We call fop_remove even if we've called qam_remove.
- * That will only have removed extent files. Now
- * we need to deal with the actual file itself.
- */
- if ((ret = __fop_remove(dbenv, NULL, uid,
- names[i], DB_APP_DATA, 0)) != 0)
- goto err;
- continue;
- }
- /*
- * Only do this if we're not removing.
- */
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"Walk_dir: File %d (of %d) %s at 0x%lx: pgsize %lu, max_pgno %lu",
tmpfp.filenum, *filecntp, names[i], P_TO_ULONG(rfp),
(u_long)tmpfp.pgsize, (u_long)tmpfp.max_pgno));
- DB_SET_DBT(namedbt, names[i], strlen(names[i]) + 1);
- uiddbt.data = uid;
- uiddbt.size = DB_FILE_ID_LEN;
+
/*
* Check if we already have info on this file. Since we're
* walking directories, we only need to check the first
@@ -345,8 +324,10 @@ __rep_walk_dir(dbenv, dir, fp, origfp, fileszp, filelenp, filecntp, do_remove)
}
first_file = 0;
}
-retry:
- ret = __rep_fileinfo_buf(rfp, *fileszp, &len,
+
+ DB_SET_DBT(namedbt, names[i], strlen(names[i]) + 1);
+ DB_SET_DBT(uiddbt, uid, DB_FILE_ID_LEN);
+retry: ret = __rep_fileinfo_buf(rfp, *fileszp, &len,
tmpfp.pgsize, tmpfp.pgno, tmpfp.max_pgno,
tmpfp.filenum, tmpfp.id, tmpfp.type,
tmpfp.flags, &uiddbt, &namedbt);
@@ -393,9 +374,6 @@ __rep_check_uid(dbenv, fp, endfp, uid)
u_int8_t *fuid;
int ret;
void *next;
-#ifdef DIAGNOSTIC
- DB_MSGBUF mb;
-#endif
ret = 0;
next = fp;
@@ -408,7 +386,7 @@ __rep_check_uid(dbenv, fp, endfp, uid)
}
fuid = (u_int8_t *)rfp->uid.data;
if (memcmp(fuid, uid, DB_FILE_ID_LEN) == 0) {
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"Check_uid: Found matching file."));
ret = DB_KEYEXIST;
goto err;
@@ -446,7 +424,7 @@ __rep_get_fileinfo(dbenv, file, subdb, rfp, uid, filecntp)
mpf = NULL;
LOCK_INIT(lk);
- if ((ret = db_create(&dbp, dbenv, 0)) != 0)
+ if ((ret = __db_create_internal(&dbp, dbenv, 0)) != 0)
goto err;
if ((ret = __db_open(dbp, NULL, file, subdb, DB_UNKNOWN,
DB_RDONLY | (F_ISSET(dbenv, DB_ENV_THREAD) ? DB_THREAD : 0),
@@ -480,7 +458,7 @@ __rep_get_fileinfo(dbenv, file, subdb, rfp, uid, filecntp)
rfp->type = (u_int32_t)dbp->type;
rfp->flags = dbp->flags;
rfp->id = DB_LOGFILEID_INVALID;
- ret = __memp_fput(dbp->mpf, pagep, 0);
+ ret = __memp_fput(dbp->mpf, pagep, dbc->priority);
pagep = NULL;
if ((t_ret = __LPUT(dbc, lk)) != 0 && ret == 0)
ret = t_ret;
@@ -489,10 +467,10 @@ __rep_get_fileinfo(dbenv, file, subdb, rfp, uid, filecntp)
err:
if ((t_ret = __LPUT(dbc, lk)) != 0 && ret == 0)
ret = t_ret;
- if (dbc != NULL && (t_ret = __db_c_close(dbc)) != 0 && ret == 0)
+ if (dbc != NULL && (t_ret = __dbc_close(dbc)) != 0 && ret == 0)
ret = t_ret;
- if (pagep != NULL &&
- (t_ret = __memp_fput(mpf, pagep, 0)) != 0 && ret == 0)
+ if (pagep != NULL && (t_ret =
+ __memp_fput(mpf, pagep, dbc->priority)) != 0 && ret == 0)
ret = t_ret;
if (dbp != NULL && (t_ret = __db_close(dbp, NULL, 0)) != 0 && ret == 0)
ret = t_ret;
@@ -544,9 +522,6 @@ __rep_page_req(dbenv, eid, rec)
REP *rep;
int ret, t_ret;
void *next;
-#ifdef DIAGNOSTIC
- DB_MSGBUF mb;
-#endif
db_rep = dbenv->rep_handle;
rep = db_rep->region;
@@ -559,7 +534,7 @@ __rep_page_req(dbenv, eid, rec)
* See if we can find it already. If so we can quickly access its
* mpool and process. Otherwise we have to open the file ourselves.
*/
- RPRINT(dbenv, (dbenv, &mb, "page_req: file %d page %lu to %lu",
+ RPRINT(dbenv, (dbenv, "page_req: file %d page %lu to %lu",
msgfp->filenum, (u_long)msgfp->pgno, (u_long)msgfp->max_pgno));
LOG_SYSTEM_LOCK(dbenv);
if (msgfp->id >= 0 && dblp->dbentry_cnt > msgfp->id) {
@@ -569,7 +544,7 @@ __rep_page_req(dbenv, eid, rec)
if (memcmp(msgfp->uid.data, dbp->log_filename->ufid,
DB_FILE_ID_LEN) == 0) {
LOG_SYSTEM_UNLOCK(dbenv);
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"page_req: found %d in dbreg",
msgfp->filenum));
ret = __rep_page_sendpages(dbenv, eid,
@@ -585,13 +560,13 @@ __rep_page_req(dbenv, eid, rec)
* We need to open the file and then send its pages.
* If we cannot open the file, we send REP_FILE_FAIL.
*/
- RPRINT(dbenv, (dbenv, &mb, "page_req: Open %d via mpf_open",
- msgfp->filenum));
+ RPRINT(dbenv,
+ (dbenv, "page_req: Open %d via mpf_open", msgfp->filenum));
if ((ret = __rep_mpf_open(dbenv, &mpf, msgfp, 0)) != 0) {
memset(&msgdbt, 0, sizeof(msgdbt));
msgdbt.data = msgfp;
msgdbt.size = sizeof(*msgfp);
- RPRINT(dbenv, (dbenv, &mb, "page_req: Open %d failed",
+ RPRINT(dbenv, (dbenv, "page_req: Open %d failed",
msgfp->filenum));
if (F_ISSET(rep, REP_F_MASTER))
(void)__rep_send_message(dbenv, eid, REP_FILE_FAIL,
@@ -622,6 +597,7 @@ __rep_page_sendpages(dbenv, eid, msgfp, mpf, dbp)
DBT lockdbt, msgdbt, pgdbt;
DB_LOCK lock;
DB_LOCK_ILOCK lock_obj;
+ DB_LOCKER *locker;
DB_LOG *dblp;
DB_LSN lsn;
DB_REP *db_rep;
@@ -632,16 +608,13 @@ __rep_page_sendpages(dbenv, eid, msgfp, mpf, dbp)
db_pgno_t p;
uintptr_t bulkoff;
size_t len, msgsz;
- u_int32_t bulkflags, lockid, use_bulk;
+ u_int32_t bulkflags, use_bulk;
int opened, ret, t_ret;
u_int8_t *buf;
-#ifdef DIAGNOSTIC
- DB_MSGBUF mb;
-#endif
db_rep = dbenv->rep_handle;
rep = db_rep->region;
- lockid = DB_LOCK_INVALIDID;
+ locker = NULL;
opened = 0;
qdbp = NULL;
buf = NULL;
@@ -649,7 +622,7 @@ __rep_page_sendpages(dbenv, eid, msgfp, mpf, dbp)
use_bulk = FLD_ISSET(rep->config, REP_C_BULK);
if (msgfp->type == (u_int32_t)DB_QUEUE) {
if (dbp == NULL) {
- if ((ret = db_create(&qdbp, dbenv, 0)) != 0)
+ if ((ret = __db_create_internal(&qdbp, dbenv, 0)) != 0)
goto err;
/*
* We need to check whether this is in-memory so that
@@ -674,7 +647,7 @@ __rep_page_sendpages(dbenv, eid, msgfp, mpf, dbp)
goto err;
memset(&msgdbt, 0, sizeof(msgdbt));
memset(&pgdbt, 0, sizeof(pgdbt));
- RPRINT(dbenv, (dbenv, &mb, "sendpages: file %d page %lu to %lu",
+ RPRINT(dbenv, (dbenv, "sendpages: file %d page %lu to %lu",
msgfp->filenum, (u_long)msgfp->pgno, (u_long)msgfp->max_pgno));
memset(&repth, 0, sizeof(repth));
/*
@@ -701,7 +674,7 @@ __rep_page_sendpages(dbenv, eid, msgfp, mpf, dbp)
*/
LOCK_INIT(lock);
memset(&lock_obj, 0, sizeof(lock_obj));
- if ((ret = __lock_id(dbenv, &lockid, NULL)) != 0)
+ if ((ret = __lock_id(dbenv, NULL, &locker)) != 0)
goto err;
memcpy(lock_obj.fileid, mpf->fileid, DB_FILE_ID_LEN);
lock_obj.type = DB_PAGE_LOCK;
@@ -717,7 +690,7 @@ __rep_page_sendpages(dbenv, eid, msgfp, mpf, dbp)
* code will rerequest it.
*/
lock_obj.pgno = p;
- if ((ret = __lock_get(dbenv, lockid, DB_LOCK_NOWAIT, &lockdbt,
+ if ((ret = __lock_get(dbenv, locker, DB_LOCK_NOWAIT, &lockdbt,
DB_LOCK_READ, &lock)) != 0) {
/*
* Continue if we couldn't get the lock.
@@ -745,7 +718,7 @@ __rep_page_sendpages(dbenv, eid, msgfp, mpf, dbp)
msgfp->pgno = p;
if (F_ISSET(rep, REP_F_MASTER)) {
ret = 0;
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"sendpages: PAGE_FAIL on page %lu",
(u_long)p));
(void)__rep_send_message(dbenv, eid,
@@ -758,7 +731,7 @@ __rep_page_sendpages(dbenv, eid, msgfp, mpf, dbp)
else
DB_SET_DBT(pgdbt, pagep, msgfp->pgsize);
len = 0;
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"sendpages: %lu, page lsn [%lu][%lu]", (u_long)p,
(u_long)pagep->lsn.file, (u_long)pagep->lsn.offset));
ret = __rep_fileinfo_buf(buf, msgsz, &len,
@@ -766,7 +739,7 @@ __rep_page_sendpages(dbenv, eid, msgfp, mpf, dbp)
msgfp->filenum, msgfp->id, msgfp->type,
msgfp->flags, &msgfp->uid, &pgdbt);
if (msgfp->type != (u_int32_t)DB_QUEUE || p == 0)
- t_ret = __memp_fput(mpf, pagep, 0);
+ t_ret = __memp_fput(mpf, pagep, DB_PRIORITY_UNCHANGED);
#ifdef HAVE_QUEUE
else
/*
@@ -774,7 +747,7 @@ __rep_page_sendpages(dbenv, eid, msgfp, mpf, dbp)
* we're not compiled with queue, then we're guaranteed
* to have set REP_PAGE_FAIL above.
*/
- t_ret = __qam_fput(qdbp, p, pagep, 0);
+ t_ret = __qam_fput(qdbp, p, pagep, qdbp->priority);
#endif
if ((t_ret = __ENV_LPUT(dbenv, lock)) != 0 && ret == 0)
ret = t_ret;
@@ -797,19 +770,20 @@ __rep_page_sendpages(dbenv, eid, msgfp, mpf, dbp)
ret = __rep_bulk_message(dbenv, &bulk, &repth,
&repth.lsn, &msgdbt, 0);
if (!use_bulk || ret == DB_REP_BULKOVF)
- ret = __rep_send_throttle(dbenv, eid, &repth, 0);
- RPRINT(dbenv, (dbenv, &mb,
+ ret = __rep_send_throttle(dbenv, eid, &repth, 0, 0);
+ RPRINT(dbenv, (dbenv,
"sendpages: %lu, lsn [%lu][%lu]", (u_long)p,
(u_long)repth.lsn.file, (u_long)repth.lsn.offset));
/*
- * If we have REP_PAGE_MORE
- * we need to break this loop after giving the page back
- * to mpool. Otherwise, with REP_PAGE, we keep going.
+ * If we have REP_PAGE_MORE we need to break this loop.
+ * Otherwise, with REP_PAGE, we keep going.
*/
- if (ret == 0)
- ret = t_ret;
- if (repth.type == REP_PAGE_MORE || ret != 0)
+ if (repth.type == REP_PAGE_MORE || ret != 0) {
+ /* Ignore send failure, except to break the loop. */
+ if (ret == DB_REP_UNAVAIL)
+ ret = 0;
break;
+ }
}
if (0) {
@@ -829,8 +803,8 @@ err:
ret = t_ret;
if (buf != NULL)
__os_free(dbenv, buf);
- if (lockid != DB_LOCK_INVALIDID && (t_ret = __lock_id_free(dbenv,
- lockid)) != 0 && ret == 0)
+ if (locker != NULL && (t_ret = __lock_id_free(dbenv,
+ locker)) != 0 && ret == 0)
ret = t_ret;
return (ret);
}
@@ -850,7 +824,6 @@ __rep_update_setup(dbenv, eid, rp, rec)
{
DB_LOG *dblp;
DB_REP *db_rep;
- DBT pagereq_dbt;
LOG *lp;
REGENV *renv;
REGINFO *infop;
@@ -859,10 +832,6 @@ __rep_update_setup(dbenv, eid, rp, rec)
int ret;
u_int32_t count, infolen;
void *next;
-#ifdef DIAGNOSTIC
- __rep_fileinfo_args *msgfp;
- DB_MSGBUF mb;
-#endif
db_rep = dbenv->rep_handle;
rep = db_rep->region;
@@ -871,7 +840,7 @@ __rep_update_setup(dbenv, eid, rp, rec)
ret = 0;
REP_SYSTEM_LOCK(dbenv);
- if (!F_ISSET(rep, REP_F_RECOVER_UPDATE)) {
+ if (!F_ISSET(rep, REP_F_RECOVER_UPDATE) || IN_ELECTION(rep)) {
REP_SYSTEM_UNLOCK(dbenv);
return (0);
}
@@ -882,7 +851,13 @@ __rep_update_setup(dbenv, eid, rp, rec)
*/
F_SET(rep, REP_F_RECOVER_PAGE);
/*
- * We do not clear REP_F_READY or rep->in_recovery in this code.
+ * We should not ever be in internal init with a lease granted.
+ */
+ DB_ASSERT(dbenv,
+ !IS_USING_LEASES(dbenv) || __rep_islease_granted(dbenv) == 0);
+
+ /*
+ * We do not clear REP_F_READY_* in this code.
* We'll eventually call the normal __rep_verify_match recovery
* code and that will clear all the flags and allow others to
* proceed. We only need to lockout the API here. We do not
@@ -907,7 +882,11 @@ __rep_update_setup(dbenv, eid, rp, rec)
ZERO_LSN(lp->waiting_lsn);
ZERO_LSN(lp->max_wait_lsn);
ZERO_LSN(lp->max_perm_lsn);
+ if (db_rep->rep_db == NULL)
+ ret = __rep_client_dbinit(dbenv, 0, REP_DB);
MUTEX_UNLOCK(dbenv, rep->mtx_clientdb);
+ if (ret != 0)
+ goto err_nolock;
if ((ret = __rep_update_read(dbenv, rec->data, &next, &rup)) != 0)
goto err_nolock;
@@ -927,82 +906,34 @@ __rep_update_setup(dbenv, eid, rp, rec)
rep->first_vers = rup->first_vers;
rep->last_lsn = rp->lsn;
rep->nfiles = rup->num_files;
- rep->curfile = 0;
- rep->ready_pg = 0;
- rep->npages = 0;
- rep->waiting_pg = PGNO_INVALID;
- rep->max_wait_pg = PGNO_INVALID;
__os_free(dbenv, rup);
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"Update setup for %d files.", rep->nfiles));
- RPRINT(dbenv, (dbenv, &mb, "Update setup: First LSN [%lu][%lu].",
+ RPRINT(dbenv, (dbenv, "Update setup: First LSN [%lu][%lu].",
(u_long)rep->first_lsn.file, (u_long)rep->first_lsn.offset));
- RPRINT(dbenv, (dbenv, &mb, "Update setup: Last LSN [%lu][%lu]",
+ RPRINT(dbenv, (dbenv, "Update setup: Last LSN [%lu][%lu]",
(u_long)rep->last_lsn.file, (u_long)rep->last_lsn.offset));
- infolen = rec->size - sizeof(__rep_update_args);
- if ((ret = __os_calloc(dbenv, 1, infolen, &rep->originfo)) != 0)
- goto err;
- memcpy(rep->originfo, next, infolen);
- rep->finfo = rep->originfo;
- if ((ret = __rep_fileinfo_read(dbenv,
- rep->finfo, &next, &rep->curinfo)) != 0) {
- RPRINT(dbenv, (dbenv, &mb,
- "Update setup: Fileinfo read: %s", db_strerror(ret)));
- goto errmem1;
+ if (rep->nfiles > 0) {
+ infolen = rec->size - sizeof(__rep_update_args);
+ if ((ret = __os_calloc(dbenv, 1, infolen, &rep->originfo)) != 0)
+ goto err;
+ memcpy(rep->originfo, next, infolen);
+ rep->nextinfo = rep->originfo;
}
- rep->nextinfo = next;
-
-#ifdef DIAGNOSTIC
- msgfp = rep->curinfo;
- DB_ASSERT(dbenv, msgfp->pgno == 0);
-#endif
/*
* We need to remove all logs and databases the client has prior to
* getting pages for current databases on the master.
*/
- if ((ret = __rep_remove_logs(dbenv)) != 0)
- goto errmem;
- if ((ret = __rep_remove_dbs(dbenv)) != 0)
- goto errmem;
-
- /*
- * We want to create/open our dbp to the database
- * where we'll keep our page information.
- */
- if ((ret = __rep_client_dbinit(dbenv, 1, REP_PG)) != 0) {
- RPRINT(dbenv, (dbenv, &mb,
- "Update setup: Client_dbinit %s", db_strerror(ret)));
- goto errmem;
- }
-
- /*
- * We should get file info 'ready to go' to avoid data copies.
- */
- memset(&pagereq_dbt, 0, sizeof(pagereq_dbt));
- pagereq_dbt.data = rep->finfo;
- pagereq_dbt.size =
- (u_int32_t)((u_int8_t *)rep->nextinfo - (u_int8_t *)rep->finfo);
+ if ((ret = __rep_remove_all(dbenv, rec)) != 0)
+ goto err;
- RPRINT(dbenv, (dbenv, &mb,
- "Update PAGE_REQ file 0: pgsize %lu, maxpg %lu",
- (u_long)rep->curinfo->pgsize,
- (u_long)rep->curinfo->max_pgno));
- /*
- * We set up pagereq_dbt as we went along. Send it now.
- */
- (void)__rep_send_message(dbenv, eid, REP_PAGE_REQ,
- NULL, &pagereq_dbt, 0, DB_REP_ANYWHERE);
- if (0) {
-errmem: __os_free(dbenv, rep->curinfo);
-errmem1: __os_free(dbenv, rep->originfo);
- rep->finfo = NULL;
- rep->curinfo = NULL;
- rep->originfo = NULL;
- }
+ rep->curfile = 0;
+ if ((ret = __rep_nextfile(dbenv, eid, rep)) != 0)
+ goto err;
if (0) {
err_nolock: REP_SYSTEM_LOCK(dbenv);
@@ -1014,11 +945,15 @@ err: /*
* the rep_lockout. We need to move back to the RECOVER_UPDATE stage.
*/
if (ret != 0) {
- RPRINT(dbenv, (dbenv, &mb,
+ if (rep->originfo != NULL) {
+ __os_free(dbenv, rep->originfo);
+ rep->originfo = NULL;
+ }
+ RPRINT(dbenv, (dbenv,
"Update_setup: Error: Clear PAGE, set UPDATE again. %s",
db_strerror(ret)));
- F_CLR(rep, REP_F_RECOVER_PAGE | REP_F_READY);
- rep->in_recovery = 0;
+ F_CLR(rep, REP_F_RECOVER_PAGE | REP_F_READY_API |
+ REP_F_READY_OP);
F_SET(rep, REP_F_RECOVER_UPDATE);
}
REP_SYSTEM_UNLOCK(dbenv);
@@ -1026,6 +961,119 @@ err: /*
}
/*
+ * Removes all existing logs and databases, at the start of internal init. But
+ * before we do, write a list of the databases onto the init file, so that in
+ * case we crash in the middle, we'll know how to resume when we restart.
+ * Finally, also write into the init file the UPDATE message from the master (in
+ * the "rec" DBT), which includes the (new) list of databases we intend to
+ * request copies of (again, so that we know what to do if we crash in the
+ * middle).
+ *
+ * For the sake of simplicity, these database lists are in the form of an UPDATE
+ * message (since we already have the mechanisms in place), even though strictly
+ * speaking that contains more information than we really need to store.
+ */
+static int
+__rep_remove_all(dbenv, rec)
+ DB_ENV *dbenv;
+ DBT *rec;
+{
+ __rep_fileinfo_args *finfo;
+ DB_FH *fhp;
+ DB_LSN unused;
+ size_t cnt, filelen, filesz, updlen;
+ u_int32_t bufsz, filecnt;
+ char *fname;
+ int ret, t_ret;
+ u_int8_t *buf, *fp, *origfp;
+
+ ZERO_LSN(unused);
+ finfo = NULL;
+ fname = NULL;
+ fhp = NULL;
+
+ /*
+ * 1. Get list of databases currently present at this client, which we
+ * intend to remove.
+ */
+ filelen = 0;
+ filecnt = 0;
+ filesz = MEGABYTE;
+ if ((ret = __os_calloc(dbenv, 1, filesz, &buf)) != 0)
+ return (ret);
+ origfp = fp = buf + sizeof(__rep_update_args);
+ if ((ret = __rep_find_dbs(
+ dbenv, &fp, &filesz, &filelen, &filecnt)) != 0)
+ goto out;
+ if ((ret = __rep_update_buf(buf, filesz, &updlen,
+ &unused, 0, filecnt)) != 0)
+ goto out;
+
+ /*
+ * 2. Before removing anything, safe-store the database list, so that in
+ * case we crash before we've removed them all, when we restart we
+ * can clean up what we were doing.
+ */
+ if ((ret = __db_appname(
+ dbenv, DB_APP_NONE, REP_INITNAME, 0, NULL, &fname)) != 0)
+ goto out;
+ bufsz = updlen + filelen;
+ /* (Short writes aren't possible, so we don't have to verify 'cnt'.) */
+ if ((ret = __os_open(dbenv, fname, 0,
+ DB_OSO_CREATE | DB_OSO_TRUNC, __db_omode(OWNER_RW), &fhp)) != 0 ||
+ (ret = __os_write(dbenv, fhp, &bufsz, sizeof(bufsz), &cnt)) != 0 ||
+ (ret = __os_write(dbenv, fhp, buf, bufsz, &cnt)) != 0 ||
+ (ret = __os_fsync(dbenv, fhp)) != 0) {
+ __db_err(dbenv, ret, "%s", fname);
+ goto out;
+ }
+
+ /*
+ * 3. Go ahead and remove logs and databases. The databases get removed
+ * according to the list we just finished safe-storing.
+ */
+ if ((ret = __rep_remove_logs(dbenv)) != 0)
+ goto out;
+ if ((ret = __rep_closefiles(dbenv, 0)) != 0)
+ goto out;
+ fp = origfp;
+ while (filecnt-- > 0) {
+ if ((ret =__rep_fileinfo_read(dbenv,
+ fp, (void*)&fp, &finfo)) != 0)
+ goto out;
+ if ((ret = __rep_remove_file(dbenv, finfo->uid.data,
+ finfo->info.data, finfo->type, finfo->flags)) != 0)
+ goto out;
+ __os_free(dbenv, finfo);
+ finfo = NULL;
+ }
+
+ /*
+ * 4. Safe-store the (new) list of database files we intend to copy from
+ * the master (again, so that in case we crash before we're finished
+ * doing so, we'll have enough information to clean up and start over
+ * again).
+ */
+ if ((ret = __os_write(dbenv, fhp,
+ &rec->size, sizeof(rec->size), &cnt)) != 0 ||
+ (ret = __os_write(dbenv, fhp, rec->data, rec->size, &cnt)) != 0 ||
+ (ret = __os_fsync(dbenv, fhp)) != 0) {
+ __db_err(dbenv, ret, "%s", fname);
+ goto out;
+ }
+
+out:
+ if (fhp != NULL && (t_ret = __os_closehandle(dbenv, fhp)) && ret == 0)
+ ret = t_ret;
+ if (fname != NULL)
+ __os_free(dbenv, fname);
+ if (finfo != NULL)
+ __os_free(dbenv, finfo);
+ __os_free(dbenv, buf);
+ return (ret);
+}
+
+/*
* __rep_remove_logs -
* Remove our logs to prepare for internal init.
*/
@@ -1045,19 +1093,23 @@ __rep_remove_logs(dbenv)
ret = 0;
/*
- * Call memp_sync to flush out any logs that might
- * be in the log buffers and not on disk before
- * we remove files on disk.
+ * Call memp_sync to flush any pages that might be in the log buffers
+ * and not on disk before we remove files on disk. If there were no
+ * dirty pages, the log isn't flushed. Yet the log buffers could still
+ * be dirty: __log_flush should take care of this rare situation.
*/
- if ((ret = __memp_sync(dbenv, NULL)) != 0)
+ if ((ret = __memp_sync_int(dbenv,
+ NULL, 0, DB_SYNC_CACHE | DB_SYNC_INTERRUPT_OK, NULL, NULL)) != 0)
+ return (ret);
+ if ((ret = __log_flush(dbenv, NULL)) != 0)
return (ret);
/*
* Forcibly remove existing log files or reset
* the in-memory log space.
*/
if (lp->db_log_inmemory) {
- INIT_LSN(lsn);
- if ((ret = __log_zero(dbenv, &lsn, &lp->lsn)) != 0)
+ ZERO_LSN(lsn);
+ if ((ret = __log_zero(dbenv, &lsn)) != 0)
return (ret);
} else {
lastfile = lp->lsn.file;
@@ -1073,25 +1125,66 @@ __rep_remove_logs(dbenv)
}
/*
- * __rep_remove_dbs
- * Walk the directories removing databases.
+ * Removes a file during internal init. Assumes underlying subsystems are
+ * active; therefore, this can't be used for internal init crash recovery.
*/
static int
-__rep_remove_dbs(dbenv)
+__rep_remove_file(dbenv, uid, name, type, flags)
DB_ENV *dbenv;
+ u_int8_t *uid;
+ const char *name;
+ u_int32_t type, flags;
{
- u_int32_t filecnt;
+ /*
+ * Calling __fop_remove will both purge any matching
+ * fileid from mpool and unlink it on disk.
+ */
+#ifdef HAVE_QUEUE
+ DB *dbp;
int ret;
- filecnt = 0;
- if ((ret = __rep_closefiles(dbenv)) != 0)
- return (ret);
+ /*
+ * Handle queue separately. __fop_remove will not
+ * remove extent files. Use __qam_remove to remove
+ * extent files that might exist under this name. Note that
+ * in-memory queue databases can't have extent files.
+ */
+ if (type == (u_int32_t)DB_QUEUE && !LF_ISSET(DB_AM_INMEM)) {
+ if ((ret = __db_create_internal(&dbp, dbenv, 0)) != 0)
+ return (ret);
+
+ /*
+ * At present, qam_remove expects the passed-in dbp to have a
+ * locker allocated, and if not, db_open allocates a locker
+ * which qam_remove then leaks.
+ *
+ * TODO: it would be better to avoid cobbling together this
+ * sequence of low-level operations, if fileops provided some
+ * API to allow us to remove a database without write-locking
+ * its handle.
+ */
+ if ((ret = __lock_id(dbenv, NULL, &dbp->locker)) != 0)
+ return (ret);
+ RPRINT(dbenv, (dbenv, "QAM: Unlink %s via __qam_remove", name));
+ if ((ret = __qam_remove(dbp, NULL, name, NULL)) != 0) {
+ RPRINT(dbenv, (dbenv, "qam_remove returned %d", ret));
+ (void)__db_close(dbp, NULL, DB_NOSYNC);
+ return (ret);
+ }
+ if ((ret = __db_close(dbp, NULL, DB_NOSYNC)) != 0)
+ return (ret);
+ }
+#else
+ COMPQUIET(type, 0);
+ COMPQUIET(flags, 0);
+#endif
/*
- * We find the databases and remove them instead of building up
- * the file information.
+ * We call fop_remove even if we've called qam_remove.
+ * That will only have removed extent files. Now
+ * we need to deal with the actual file itself.
*/
- return (ret = __rep_find_dbs(dbenv, NULL, NULL, NULL, &filecnt, 1));
+ return (__fop_remove(dbenv, NULL, uid, name, DB_APP_DATA, 0));
}
/*
@@ -1112,9 +1205,6 @@ __rep_bulk_page(dbenv, eid, rp, rec)
u_int32_t len;
int ret;
u_int8_t *p, *ep;
-#ifdef DIAGNOSTIC
- DB_MSGBUF mb;
-#endif
memset(&pgrec, 0, sizeof(pgrec));
/*
@@ -1139,10 +1229,10 @@ __rep_bulk_page(dbenv, eid, rp, rec)
p += sizeof(DB_LSN);
pgrec.data = p;
pgrec.size = len;
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"rep_bulk_page: Processing LSN [%lu][%lu]",
(u_long)tmprp.lsn.file, (u_long)tmprp.lsn.offset));
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"rep_bulk_page: p %#lx ep %#lx pgrec data %#lx, size %lu (%#lx)",
P_TO_ULONG(p), P_TO_ULONG(ep), P_TO_ULONG(pgrec.data),
(u_long)pgrec.size, (u_long)pgrec.size));
@@ -1150,7 +1240,7 @@ __rep_bulk_page(dbenv, eid, rp, rec)
* Now send the page info DBT to the page processing function.
*/
ret = __rep_page(dbenv, eid, &tmprp, &pgrec);
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"rep_bulk_page: rep_page ret %d", ret));
/*
@@ -1186,9 +1276,6 @@ __rep_page(dbenv, eid, rp, rec)
db_recno_t recno;
int ret;
void *next;
-#ifdef DIAGNOSTIC
- DB_MSGBUF mb;
-#endif
ret = 0;
db_rep = dbenv->rep_handle;
@@ -1200,7 +1287,13 @@ __rep_page(dbenv, eid, rp, rec)
return (ret);
MUTEX_LOCK(dbenv, rep->mtx_clientdb);
REP_SYSTEM_LOCK(dbenv);
- RPRINT(dbenv, (dbenv, &mb,
+ /*
+ * We should not ever be in internal init with a lease granted.
+ */
+ DB_ASSERT(dbenv,
+ !IS_USING_LEASES(dbenv) || __rep_islease_granted(dbenv) == 0);
+
+ RPRINT(dbenv, (dbenv,
"PAGE: Received page %lu from file %d",
(u_long)msgfp->pgno, msgfp->filenum));
/*
@@ -1213,8 +1306,7 @@ __rep_page(dbenv, eid, rp, rec)
* is updating, then we'd have to verify the file's uid here too.
*/
if (msgfp->filenum != rep->curfile) {
- RPRINT(dbenv,
- (dbenv, &mb, "Msg file %d != curfile %d",
+ RPRINT(dbenv, (dbenv, "Msg file %d != curfile %d",
msgfp->filenum, rep->curfile));
ret = DB_REP_PAGEDONE;
goto err;
@@ -1223,8 +1315,11 @@ __rep_page(dbenv, eid, rp, rec)
* We want to create/open our dbp to the database
* where we'll keep our page information.
*/
- if ((ret = __rep_client_dbinit(dbenv, 1, REP_PG)) != 0)
+ if ((ret = __rep_client_dbinit(dbenv, 1, REP_PG)) != 0) {
+ RPRINT(dbenv, (dbenv,
+ "PAGE: Client_dbinit %s", db_strerror(ret)));
goto err;
+ }
memset(&key, 0, sizeof(key));
memset(&data, 0, sizeof(data));
@@ -1240,17 +1335,17 @@ __rep_page(dbenv, eid, rp, rec)
*/
ret = __db_put(rep->file_dbp, NULL, &key, &data, DB_NOOVERWRITE);
if (ret == DB_KEYEXIST) {
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"PAGE: Received duplicate page %lu from file %d",
(u_long)msgfp->pgno, msgfp->filenum));
- rep->stat.st_pg_duplicated++;
+ STAT(rep->stat.st_pg_duplicated++);
ret = 0;
goto err;
}
if (ret != 0)
goto err;
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"PAGE: Write page %lu into mpool", (u_long)msgfp->pgno));
/*
* We put the page in the database file itself.
@@ -1269,7 +1364,7 @@ __rep_page(dbenv, eid, rp, rec)
(void)__db_del(rep->file_dbp, NULL, &key, 0);
goto err;
}
- rep->stat.st_pg_records++;
+ STAT(rep->stat.st_pg_records++);
rep->npages++;
/*
@@ -1312,9 +1407,6 @@ __rep_page_fail(dbenv, eid, rec)
__rep_fileinfo_args *msgfp, *rfp;
int ret;
void *next;
-#ifdef DIAGNOSTIC
- DB_MSGBUF mb;
-#endif
ret = 0;
db_rep = dbenv->rep_handle;
@@ -1335,12 +1427,16 @@ __rep_page_fail(dbenv, eid, rec)
*/
MUTEX_LOCK(dbenv, rep->mtx_clientdb);
REP_SYSTEM_LOCK(dbenv);
+ /*
+ * We should not ever be in internal init with a lease granted.
+ */
+ DB_ASSERT(dbenv,
+ !IS_USING_LEASES(dbenv) || __rep_islease_granted(dbenv) == 0);
+
if (msgfp->filenum != rep->curfile) {
- RPRINT(dbenv, (dbenv, &mb, "Msg file %d != curfile %d",
+ RPRINT(dbenv, (dbenv, "Msg file %d != curfile %d",
msgfp->filenum, rep->curfile));
- REP_SYSTEM_UNLOCK(dbenv);
- MUTEX_UNLOCK(dbenv, rep->mtx_clientdb);
- return (0);
+ goto out;
}
rfp = rep->curinfo;
if (rfp->type != (u_int32_t)DB_QUEUE)
@@ -1351,7 +1447,7 @@ __rep_page_fail(dbenv, eid, rec)
* may disappear, as well as at the end. Use msgfp->pgno
* to adjust accordingly.
*/
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"page_fail: BEFORE page %lu failed. ready %lu, max %lu, npages %d",
(u_long)msgfp->pgno, (u_long)rep->ready_pg,
(u_long)rfp->max_pgno, rep->npages));
@@ -1361,11 +1457,12 @@ __rep_page_fail(dbenv, eid, rec)
rep->ready_pg = msgfp->pgno + 1;
rep->npages = rep->ready_pg;
}
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"page_fail: AFTER page %lu failed. ready %lu, max %lu, npages %d",
(u_long)msgfp->pgno, (u_long)rep->ready_pg,
(u_long)rfp->max_pgno, rep->npages));
}
+
/*
* We've lowered the number of pages expected. It is possible that
* this was the last page we were expecting. Now we need to see if
@@ -1374,8 +1471,10 @@ __rep_page_fail(dbenv, eid, rec)
* send out a page request for the next file's pages.
*/
ret = __rep_filedone(dbenv, eid, rep, msgfp, REP_PAGE_FAIL);
+out:
REP_SYSTEM_UNLOCK(dbenv);
MUTEX_UNLOCK(dbenv, rep->mtx_clientdb);
+ __os_free(dbenv, msgfp);
return (ret);
}
@@ -1392,9 +1491,6 @@ __rep_write_page(dbenv, rep, msgfp)
__rep_fileinfo_args *rfp;
int ret;
void *dst;
-#ifdef DIAGNOSTIC
- DB_MSGBUF mb;
-#endif
rfp = NULL;
@@ -1414,7 +1510,7 @@ __rep_write_page(dbenv, rep, msgfp)
* Recreate the file on disk. We'll be putting
* the data into the file via mpool.
*/
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"rep_write_page: Calling fop_create for %s",
(char *)rfp->info.data));
if ((ret = __fop_create(dbenv, NULL, NULL,
@@ -1456,10 +1552,11 @@ __rep_write_page(dbenv, rep, msgfp)
memcpy(dst, msgfp->info.data, msgfp->pgsize);
#ifdef HAVE_QUEUE
if (msgfp->type == (u_int32_t)DB_QUEUE && msgfp->pgno != 0)
- ret = __qam_fput(rep->queue_dbp, msgfp->pgno, dst, 0);
+ ret = __qam_fput(rep->queue_dbp,
+ msgfp->pgno, dst, rep->queue_dbp->priority);
else
#endif
- ret = __memp_fput(rep->file_mpf, dst, 0);
+ ret = __memp_fput(rep->file_mpf, dst, rep->file_dbp->priority);
err: return (ret);
}
@@ -1483,9 +1580,6 @@ __rep_page_gap(dbenv, rep, msgfp, type)
__rep_fileinfo_args *rfp;
db_recno_t recno;
int ret, t_ret;
-#ifdef DIAGNOSTIC
- DB_MSGBUF mb;
-#endif
dblp = dbenv->lg_handle;
lp = dblp->reginfo.primary;
@@ -1527,7 +1621,7 @@ __rep_page_gap(dbenv, rep, msgfp, type)
* We just want to return.
*/
if (msgfp->pgno < rep->ready_pg) {
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"PAGE_GAP: pgno %lu < ready %lu, waiting %lu",
(u_long)msgfp->pgno, (u_long)rep->ready_pg,
(u_long)rep->waiting_pg));
@@ -1540,7 +1634,7 @@ __rep_page_gap(dbenv, rep, msgfp, type)
* (earlier) the current waiting_pg. There is nothing
* to do but see if we need to request.
*/
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"PAGE_GAP: pgno %lu, max_pg %lu ready %lu, waiting %lu max_wait %lu",
(u_long)msgfp->pgno, (u_long)rfp->max_pgno, (u_long)rep->ready_pg,
(u_long)rep->waiting_pg, (u_long)rep->max_wait_pg));
@@ -1584,23 +1678,23 @@ __rep_page_gap(dbenv, rep, msgfp, type)
* We know that page is there, this should
* find the record.
*/
- ret = __db_c_get(dbc, &key, &data, DB_SET);
+ ret = __dbc_get(dbc, &key, &data, DB_SET);
if (ret != 0)
goto err;
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"PAGE_GAP: Set cursor for ready %lu, waiting %lu",
(u_long)rep->ready_pg, (u_long)rep->waiting_pg));
}
while (ret == 0 && rep->ready_pg == rep->waiting_pg) {
rep->ready_pg++;
- ret = __db_c_get(dbc, &key, &data, DB_NEXT);
+ ret = __dbc_get(dbc, &key, &data, DB_NEXT);
/*
* If we get to the end of the list, there are no
* more gaps. Reset waiting_pg.
*/
if (ret == DB_NOTFOUND || ret == DB_KEYEMPTY) {
rep->waiting_pg = PGNO_INVALID;
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"PAGE_GAP: Next cursor No next - ready %lu, waiting %lu",
(u_long)rep->ready_pg,
(u_long)rep->waiting_pg));
@@ -1613,7 +1707,7 @@ __rep_page_gap(dbenv, rep, msgfp, type)
*/
rep->waiting_pg = *(db_pgno_t *)key.data;
rep->waiting_pg--;
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"PAGE_GAP: Next cursor ready %lu, waiting %lu",
(u_long)rep->ready_pg, (u_long)rep->waiting_pg));
}
@@ -1648,7 +1742,11 @@ __rep_page_gap(dbenv, rep, msgfp, type)
}
/*
* If we got REP_PAGE_MORE we always want to ask for more.
+ * We need to set rfp->pgno to the current page number
+ * we will use to ask for more pages.
*/
+ if (type == REP_PAGE_MORE)
+ rfp->pgno = msgfp->pgno;
if ((__rep_check_doreq(dbenv, rep) || type == REP_PAGE_MORE) &&
((ret = __rep_pggap_req(dbenv, rep, rfp,
(type == REP_PAGE_MORE) ? REP_GAP_FORCE : 0)) != 0))
@@ -1659,7 +1757,7 @@ __rep_page_gap(dbenv, rep, msgfp, type)
}
err:
- if (dbc != NULL && (t_ret = __db_c_close(dbc)) != 0 && ret == 0)
+ if (dbc != NULL && (t_ret = __dbc_close(dbc)) != 0 && ret == 0)
ret = t_ret;
return (ret);
@@ -1669,6 +1767,9 @@ err:
* __rep_init_cleanup -
* Clean up internal initialization pieces.
*
+ * !!!
+ * Caller must hold REP_SYSTEM_LOCK.
+ *
* PUBLIC: int __rep_init_cleanup __P((DB_ENV *, REP *, int));
*/
int
@@ -1677,7 +1778,9 @@ __rep_init_cleanup(dbenv, rep, force)
REP *rep;
int force;
{
- int ret, t_ret;
+ DB_LOG *dblp;
+ LOG *lp;
+ int cleanup_failure, ret, t_ret;
ret = 0;
/*
@@ -1707,11 +1810,69 @@ __rep_init_cleanup(dbenv, rep, force)
__os_free(dbenv, rep->curinfo);
rep->curinfo = NULL;
}
- if (rep->originfo != NULL &&
- (force || ++rep->curfile == rep->nfiles)) {
- __os_free(dbenv, rep->originfo);
- rep->originfo = NULL;
+ if (F_ISSET(rep, REP_F_INTERNAL_INIT_MASK) && force) {
+ /*
+ * Clean up files involved in an interrupted internal init.
+ *
+ * 1. logs
+ * a) remove old log files
+ * b) set up initial log file #1
+ * 2. database files
+ * 3. the "init file"
+ *
+ * Steps 1 and 2 can be attempted independently. Step 1b is
+ * dependent on successful completion of 1a. Step 3 must not be
+ * done if anything fails along the way, because the init file's
+ * raison d'etre is to show that some files remain to be cleaned
+ * up.
+ */
+ RPRINT(dbenv, (dbenv, "clean up interrupted internal init"));
+ cleanup_failure = 0;
+
+ if ((t_ret = __rep_remove_logs(dbenv)) == 0) {
+ /*
+ * Since we have no logs, recover by making it look like
+ * the case when a new client first starts up, namely we
+ * have nothing but a fresh log file #1. This is a
+ * little wasteful, since we may soon remove this log
+ * file again. But that's OK, because this is the
+ * unusual case of NEWMASTER during internal init, and
+ * the rest of internal init doubtless dwarfs this.
+ */
+ dblp = dbenv->lg_handle;
+ lp = dblp->reginfo.primary;
+
+ if ((t_ret = __rep_log_setup(dbenv,
+ rep, 1, DB_LOGVERSION, &lp->ready_lsn)) != 0) {
+ cleanup_failure = 1;
+ if (ret == 0)
+ ret = t_ret;
+ }
+ } else {
+ cleanup_failure = 1;
+ if (ret == 0)
+ ret = t_ret;
+ }
+
+ if ((t_ret = __rep_remove_by_list(dbenv,
+ rep->originfo, rep->nfiles)) != 0) {
+ cleanup_failure = 1;
+ if (ret == 0)
+ ret = t_ret;
+ }
+
+ if (!cleanup_failure &&
+ (t_ret = __rep_remove_init_file(dbenv)) != 0) {
+ if (ret == 0)
+ ret = t_ret;
+ }
+
+ if (rep->originfo != NULL) {
+ __os_free(dbenv, rep->originfo);
+ rep->originfo = NULL;
+ }
}
+
return (ret);
}
@@ -1732,12 +1893,8 @@ __rep_filedone(dbenv, eid, rep, msgfp, type)
__rep_fileinfo_args *msgfp;
u_int32_t type;
{
- DBT dbt;
__rep_fileinfo_args *rfp;
int ret;
-#ifdef DIAGNOSTIC
- DB_MSGBUF mb;
-#endif
/*
* We've put our page, now we need to do any gap processing
@@ -1756,7 +1913,7 @@ __rep_filedone(dbenv, eid, rep, msgfp, type)
* max_pgno is 0-based and npages is 1-based, so we don't have
* all the pages until npages is > max_pgno.
*/
- RPRINT(dbenv, (dbenv, &mb, "FILEDONE: have %lu pages. Need %lu.",
+ RPRINT(dbenv, (dbenv, "FILEDONE: have %lu pages. Need %lu.",
(u_long)rep->npages, (u_long)rfp->max_pgno + 1));
if (rep->npages <= rfp->max_pgno)
return (0);
@@ -1775,9 +1932,39 @@ __rep_filedone(dbenv, eid, rep, msgfp, type)
*/
if ((ret = __rep_init_cleanup(dbenv, rep, 0)) != 0)
goto err;
+
+ rep->curfile++;
+ ret = __rep_nextfile(dbenv, eid, rep);
+err:
+ return (ret);
+}
+
+/*
+ * Starts requesting pages for the next file in the list (if any), or if not,
+ * proceeds to the next stage: requesting logs.
+ *
+ * !!!
+ * Called with REP_SYSTEM_LOCK held.
+ */
+static int
+__rep_nextfile(dbenv, eid, rep)
+ DB_ENV *dbenv;
+ int eid;
+ REP *rep;
+{
+ DBT dbt;
+ int ret;
+
+ /*
+ * Always direct the next request to the master (at least nominally),
+ * regardless of where the current response came from. The application
+ * can always still redirect it to another client.
+ */
+ if (rep->master_id != DB_EID_INVALID)
+ eid = rep->master_id;
if (rep->curfile == rep->nfiles) {
- RPRINT(dbenv, (dbenv, &mb,
- "FILEDONE: have %d files. RECOVER_LOG now", rep->nfiles));
+ RPRINT(dbenv, (dbenv,
+ "NEXTFILE: have %d files. RECOVER_LOG now", rep->nfiles));
/*
* Move to REP_RECOVER_LOG state.
* Request logs.
@@ -1788,22 +1975,24 @@ __rep_filedone(dbenv, eid, rep, msgfp, type)
* before we clear REP_F_RECOVER_PAGE so that we do not
* try to flush the log.
*/
- if ((ret = __memp_sync(dbenv, NULL)) != 0)
- goto err;
+ if ((ret = __memp_sync_int(dbenv, NULL, 0,
+ DB_SYNC_CACHE | DB_SYNC_INTERRUPT_OK, NULL, NULL)) != 0)
+ return (ret);
F_CLR(rep, REP_F_RECOVER_PAGE);
F_SET(rep, REP_F_RECOVER_LOG);
memset(&dbt, 0, sizeof(dbt));
dbt.data = &rep->last_lsn;
dbt.size = sizeof(rep->last_lsn);
REP_SYSTEM_UNLOCK(dbenv);
- if ((ret = __rep_log_setup(dbenv, rep)) != 0)
- goto err;
- RPRINT(dbenv, (dbenv, &mb,
- "FILEDONE: LOG_REQ from LSN [%lu][%lu] to [%lu][%lu]",
+ if ((ret = __rep_log_setup(dbenv, rep,
+ rep->first_lsn.file, rep->first_vers, NULL)) != 0)
+ return (ret);
+ RPRINT(dbenv, (dbenv,
+ "NEXTFILE: LOG_REQ from LSN [%lu][%lu] to [%lu][%lu]",
(u_long)rep->first_lsn.file, (u_long)rep->first_lsn.offset,
(u_long)rep->last_lsn.file, (u_long)rep->last_lsn.offset));
(void)__rep_send_message(dbenv, eid,
- REP_LOG_REQ, &rep->first_lsn, &dbt,
+ REP_LOG_REQ, &rep->first_lsn, &dbt,
REPCTL_INIT, DB_REP_ANYWHERE);
REP_SYSTEM_LOCK(dbenv);
return (0);
@@ -1814,24 +2003,27 @@ __rep_filedone(dbenv, eid, rep, msgfp, type)
*/
rep->finfo = rep->nextinfo;
if ((ret = __rep_fileinfo_read(dbenv, rep->finfo, &rep->nextinfo,
- &rep->curinfo)) != 0)
- goto err;
+ &rep->curinfo)) != 0) {
+ RPRINT(dbenv, (dbenv,
+ "NEXTINFO: Fileinfo read: %s", db_strerror(ret)));
+ return (ret);
+ }
DB_ASSERT(dbenv, rep->curinfo->pgno == 0);
rep->ready_pg = 0;
rep->npages = 0;
rep->waiting_pg = PGNO_INVALID;
rep->max_wait_pg = PGNO_INVALID;
memset(&dbt, 0, sizeof(dbt));
- RPRINT(dbenv, (dbenv, &mb,
- "FILEDONE: Next file %d. Request pages 0 to %lu",
- rep->curinfo->filenum, (u_long)rep->curinfo->max_pgno));
+ RPRINT(dbenv, (dbenv,
+ "Next file %d: pgsize %lu, maxpg %lu", rep->curinfo->filenum,
+ (u_long)rep->curinfo->pgsize, (u_long)rep->curinfo->max_pgno));
dbt.data = rep->finfo;
dbt.size =
(u_int32_t)((u_int8_t *)rep->nextinfo - (u_int8_t *)rep->finfo);
(void)__rep_send_message(dbenv, eid, REP_PAGE_REQ,
NULL, &dbt, 0, DB_REP_ANYWHERE);
-err:
- return (ret);
+
+ return (0);
}
/*
@@ -1853,7 +2045,7 @@ __rep_mpf_open(dbenv, mpfp, rfp, flags)
return (ret);
/*
- * We need a dbp to pass into to __db_dbenv_mpool. Set up
+ * We need a dbp to pass into to __db_env_mpool. Set up
* only the parts that it needs.
*/
db.dbenv = dbenv;
@@ -1866,8 +2058,8 @@ __rep_mpf_open(dbenv, mpfp, rfp, flags)
db.mpf = *mpfp;
if (F_ISSET(&db, DB_AM_INMEM))
(void)__memp_set_flags(db.mpf, DB_MPOOL_NOFILE, 1);
- if ((ret = __db_dbenv_mpool(&db, rfp->info.data, flags)) != 0) {
- (void)__memp_fclose(*mpfp, 0);
+ if ((ret = __db_env_mpool(&db, rfp->info.data, flags)) != 0) {
+ (void)__memp_fclose(db.mpf, 0);
*mpfp = NULL;
}
return (ret);
@@ -1922,7 +2114,14 @@ __rep_pggap_req(dbenv, rep, reqfp, gapflags)
*/
flags = 0;
memset(&max_pg_dbt, 0, sizeof(max_pg_dbt));
- tmpfp->pgno = rep->ready_pg;
+ /*
+ * If this is a PAGE_MORE and we're forcing then we want to
+ * force the request to ask for the next page after this one.
+ */
+ if (FLD_ISSET(gapflags, REP_GAP_FORCE))
+ tmpfp->pgno++;
+ else
+ tmpfp->pgno = rep->ready_pg;
max_pg_dbt.data = rep->finfo;
max_pg_dbt.size =
(u_int32_t)((u_int8_t *)rep->nextinfo - (u_int8_t *)rep->finfo);
@@ -1938,8 +2137,18 @@ __rep_pggap_req(dbenv, rep, reqfp, gapflags)
rep->max_wait_pg = rep->curinfo->max_pgno;
else
rep->max_wait_pg = rep->ready_pg;
- } else
- rep->max_wait_pg = rep->waiting_pg - 1;
+ } else {
+ /*
+ * If we're forcing, and waiting_pg is less than
+ * the page we want to start this request at, then
+ * we set max_wait_pg to the max pgno in the file.
+ */
+ if (FLD_ISSET(gapflags, REP_GAP_FORCE) &&
+ rep->waiting_pg < tmpfp->pgno)
+ rep->max_wait_pg = rep->curinfo->max_pgno;
+ else
+ rep->max_wait_pg = rep->waiting_pg - 1;
+ }
tmpfp->max_pgno = rep->max_wait_pg;
/*
* Gap requests are "new" and can go anywhere.
@@ -1960,7 +2169,7 @@ __rep_pggap_req(dbenv, rep, reqfp, gapflags)
flags = DB_REP_REREQUEST;
}
if (rep->master_id != DB_EID_INVALID) {
- rep->stat.st_pg_requested++;
+ STAT(rep->stat.st_pg_requested++);
/*
* We need to request the pages, but we need to get the
* new info into rep->finfo. Assert that the sizes never
@@ -2030,9 +2239,12 @@ __rep_finfo_alloc(dbenv, rfpsrc, rfpp)
* to get our logs set up for the proper file.
*/
static int
-__rep_log_setup(dbenv, rep)
+__rep_log_setup(dbenv, rep, file, version, lsnp)
DB_ENV *dbenv;
REP *rep;
+ u_int32_t file;
+ u_int32_t version;
+ DB_LSN *lsnp;
{
DB_LOG *dblp;
DB_LSN lsn;
@@ -2050,7 +2262,11 @@ __rep_log_setup(dbenv, rep)
* Set up the log starting at the file number of the first LSN we
* need to get from the master.
*/
- ret = __log_newfile(dblp, &lsn, rep->first_lsn.file, rep->first_vers);
+ LOG_SYSTEM_LOCK(dbenv);
+ if ((ret = __log_newfile(dblp, &lsn, file, version)) == 0 &&
+ lsnp != NULL)
+ *lsnp = lsn;
+ LOG_SYSTEM_UNLOCK(dbenv);
/*
* We reset first_lsn to the lp->lsn. We were given the LSN of
@@ -2099,9 +2315,6 @@ __rep_queue_filedone(dbenv, rep, rfp)
db_pgno_t first, last;
u_int32_t flags;
int empty, ret, t_ret;
-#ifdef DIAGNOSTIC
- DB_MSGBUF mb;
-#endif
ret = 0;
if (rep->queue_dbp == NULL) {
@@ -2109,9 +2322,11 @@ __rep_queue_filedone(dbenv, rep, rfp)
* We need to do a sync here so that the open
* can find the file and file id.
*/
- if ((ret = __memp_sync(dbenv, NULL)) != 0)
+ if ((ret = __memp_sync_int(dbenv, NULL, 0,
+ DB_SYNC_CACHE | DB_SYNC_INTERRUPT_OK, NULL, NULL)) != 0)
goto out;
- if ((ret = db_create(&rep->queue_dbp, dbenv, 0)) != 0)
+ if ((ret =
+ __db_create_internal(&rep->queue_dbp, dbenv, 0)) != 0)
goto out;
flags = DB_NO_AUTO_COMMIT |
(F_ISSET(dbenv, DB_ENV_THREAD) ? DB_THREAD : 0);
@@ -2128,7 +2343,7 @@ __rep_queue_filedone(dbenv, rep, rfp)
if ((ret = __queue_pageinfo(rep->queue_dbp,
&first, &last, &empty, 0, 0)) != 0)
goto out;
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"Queue fileinfo: first %lu, last %lu, empty %d",
(u_long)first, (u_long)last, empty));
/*
@@ -2151,7 +2366,7 @@ __rep_queue_filedone(dbenv, rep, rfp)
QAM_RECNO_PAGE(rep->queue_dbp, UINT32_MAX);
} else
rfp->max_pgno = last;
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"Queue fileinfo: First req: first %lu, last %lu",
(u_long)first, (u_long)rfp->max_pgno));
goto req;
@@ -2164,7 +2379,7 @@ __rep_queue_filedone(dbenv, rep, rfp)
*/
first = 1;
rfp->max_pgno = last;
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"Queue fileinfo: Wrap req: first %lu, last %lu",
(u_long)first, (u_long)last));
req:
@@ -2196,3 +2411,279 @@ out:
return (ret);
#endif
}
+
+/*
+ * PUBLIC: int __rep_remove_init_file __P((DB_ENV *));
+ */
+int
+__rep_remove_init_file(dbenv)
+ DB_ENV *dbenv;
+{
+ int ret;
+ char *name;
+
+ if ((ret = __db_appname(
+ dbenv, DB_APP_NONE, REP_INITNAME, 0, NULL, &name)) != 0)
+ return (ret);
+ (void)__os_unlink(dbenv, name);
+ __os_free(dbenv, name);
+ return (0);
+}
+
+/*
+ * Checks for the existence of the internal init flag file. If it exists, we
+ * remove all logs and databases, and then remove the flag file. This is
+ * intended to force the internal init to start over again, and thus affords
+ * protection against a client crashing during internal init. This function
+ * must be called before normal recovery in order to be properly effective.
+ *
+ * !!!
+ * This function should only be called during initial set-up of the environment,
+ * before various subsystems are initialized. It doesn't rely on the
+ * subsystems' code having been initialized, and it summarily deletes files "out
+ * from under" them, which might disturb the subsystems if they were up.
+ *
+ * PUBLIC: int __rep_reset_init __P((DB_ENV *));
+ */
+int
+__rep_reset_init(dbenv)
+ DB_ENV *dbenv;
+{
+ DB_FH *fhp;
+ __rep_update_args *rup;
+ DBT dbt;
+ char *allocated_dir, *dir, *init_name;
+ void *next;
+ int ret, t_ret;
+
+ allocated_dir = NULL;
+ rup = NULL;
+ dbt.data = NULL;
+
+ if ((ret = __db_appname(
+ dbenv, DB_APP_NONE, REP_INITNAME, 0, NULL, &init_name)) != 0)
+ return (ret);
+
+ if ((ret = __os_open(dbenv, init_name, 0, DB_OSO_RDONLY,
+ __db_omode(OWNER_RW), &fhp)) != 0) {
+ if (ret == ENOENT)
+ ret = 0;
+ goto out;
+ }
+
+ RPRINT(dbenv, (dbenv, "Cleaning up interrupted internal init"));
+
+ /* There are a few possibilities:
+ * 1. no init file, or less than 1 full file list
+ * 2. exactly one full file list
+ * 3. more than one, less then a second full file list
+ * 4. second file list in full
+ *
+ * In cases 2 or 4, we need to remove all logs, and then remove files
+ * according to the (most recent) file list. (In case 1 or 3, we don't
+ * have to do anything.)
+ *
+ * The __rep_get_file_list function takes care of folding these cases
+ * into two simple outcomes:
+ */
+ ret = __rep_get_file_list(dbenv, fhp, &dbt);
+ if ((t_ret = __os_closehandle(dbenv, fhp)) != 0 || ret != 0) {
+ if (ret == 0)
+ ret = t_ret;
+ goto out;
+ }
+ if (dbt.data == NULL) {
+ /*
+ * The init file did not end with an intact file list. Since we
+ * never start log/db removal without an intact file list
+ * sync'ed to the init file, this must mean we don't have any
+ * partial set of files to clean up. So all we need to do is
+ * remove the init file.
+ */
+ goto rm;
+ }
+
+ /* Remove all log files. */
+ if (dbenv->db_log_dir == NULL)
+ dir = dbenv->db_home;
+ else {
+ if ((ret = __db_appname(dbenv, DB_APP_NONE,
+ dbenv->db_log_dir, 0, NULL, &dir)) != 0)
+ goto out;
+ allocated_dir = dir;
+ }
+
+ if ((ret = __rep_remove_by_prefix(dbenv,
+ dir, LFPREFIX, sizeof(LFPREFIX)-1, DB_APP_LOG)) != 0)
+ goto out;
+
+ /*
+ * Remove databases according to the list, and queue extent files by
+ * searching them out on a walk through the data_dir's.
+ */
+ if ((ret = __rep_update_read(dbenv, dbt.data, &next, &rup)) != 0)
+ goto out;
+ if ((ret = __rep_remove_by_list(dbenv, next, rup->num_files)) != 0)
+ goto out;
+
+ /* Here, we've established that the file exists. */
+rm: (void)__os_unlink(dbenv, init_name);
+out: if (rup != NULL)
+ __os_free(dbenv, rup);
+ if (allocated_dir != NULL)
+ __os_free(dbenv, allocated_dir);
+ if (dbt.data != NULL)
+ __os_free(dbenv, dbt.data);
+
+ __os_free(dbenv, init_name);
+ return (ret);
+}
+
+/*
+ * Reads the last fully intact file list from the init file. If the file ends
+ * with a partial list (or is empty), we're not interested in it. Lack of a
+ * full file list is indicated by a NULL dbt->data. On success, the list is
+ * returned in allocated space, which becomes the responsibility of the caller.
+ *
+ * The file format is a u_int32_t buffer length, in native format, followed by
+ * the file list itself, in the same format as in an UPDATE message (though many
+ * parts of it in this case are meaningless).
+ */
+static int
+__rep_get_file_list(dbenv, fhp, dbt)
+ DB_ENV *dbenv;
+ DB_FH *fhp;
+ DBT *dbt;
+{
+ u_int32_t length;
+ size_t cnt;
+ int i, ret;
+
+ /* At most 2 file lists: old and new. */
+ dbt->data = NULL;
+ for (i = 1; i <= 2; i++) {
+ if ((ret = __os_read(dbenv,
+ fhp, &length, sizeof(length), &cnt)) != 0)
+ goto err;
+
+ /*
+ * Reaching the end here is fine, if we've been through at least
+ * once already.
+ */
+ if (cnt == 0 && dbt->data != NULL)
+ break;
+ if (cnt != sizeof(length))
+ goto err;
+
+ if ((ret = __os_realloc(dbenv,
+ (size_t)length, &dbt->data)) != 0)
+ goto err;
+
+ if ((ret = __os_read(
+ dbenv, fhp, dbt->data, length, &cnt)) != 0 ||
+ cnt != (size_t)length)
+ goto err;
+ }
+
+ dbt->size = length;
+ return (0);
+
+err:
+ /*
+ * Note that it's OK to get here with a zero value in 'ret': it means we
+ * read less than we expected, and dbt->data == NULL indicates to the
+ * caller that we don't have an intact list.
+ */
+ if (dbt->data != NULL)
+ __os_free(dbenv, dbt->data);
+ dbt->data = NULL;
+ return (ret);
+}
+
+/*
+ * Removes every file in a given directory that matches a given prefix. Notice
+ * how similar this is to __rep_walk_dir.
+ */
+static int
+__rep_remove_by_prefix(dbenv, dir, prefix, pref_len, appname)
+ DB_ENV *dbenv;
+ const char *dir;
+ const char *prefix;
+ size_t pref_len;
+ APPNAME appname; /* What kind of name. */
+{
+ char *namep, **names;
+ int cnt, i, ret;
+
+ if ((ret = __os_dirlist(dbenv, dir, &names, &cnt)) != 0)
+ return (ret);
+ for (i = 0; i < cnt; i++) {
+ if (strncmp(names[i], prefix, pref_len) == 0) {
+ if ((ret = __db_appname(dbenv,
+ appname, names[i], 0, NULL, &namep)) != 0)
+ goto out;
+ (void)__os_unlink(dbenv, namep);
+ __os_free(dbenv, namep);
+ }
+ }
+out: __os_dirfree(dbenv, names, cnt);
+ return (ret);
+}
+
+/*
+ * Removes database files according to the contents of a list.
+ *
+ * This function must support removal either during environment creation, or
+ * when an internal init is reset in the middle. This means it must work
+ * regardless of whether underlying subsystems are initialized. However, it may
+ * assume that databases are not open.
+ */
+static int
+__rep_remove_by_list(dbenv, filelist, count)
+ DB_ENV *dbenv;
+ void *filelist;
+ u_int32_t count;
+{
+ __rep_fileinfo_args *file_argsp;
+ char **ddir, *dir, *namep;
+ int ret;
+
+ ret = 0;
+ file_argsp = NULL;
+ while (count-- > 0) {
+ if ((ret = __rep_fileinfo_read(dbenv,
+ filelist, &filelist, &file_argsp)) != 0)
+ goto out;
+ if ((ret = __db_appname(dbenv,
+ DB_APP_DATA, file_argsp->info.data, 0, NULL, &namep)) != 0)
+ goto out;
+ (void)__os_unlink(dbenv, namep);
+ __os_free(dbenv, namep);
+ __os_free(dbenv, file_argsp);
+ file_argsp = NULL;
+ }
+
+ /* Notice how similar this code is to __rep_find_dbs. */
+ if (dbenv->db_data_dir == NULL)
+ ret = __rep_remove_by_prefix(dbenv, dbenv->db_home,
+ QUEUE_EXTENT_PREFIX, sizeof(QUEUE_EXTENT_PREFIX) - 1,
+ DB_APP_DATA);
+ else {
+ for (ddir = dbenv->db_data_dir; *ddir != NULL; ++ddir) {
+ if ((ret = __db_appname(dbenv, DB_APP_NONE,
+ *ddir, 0, NULL, &dir)) != 0)
+ break;
+ ret = __rep_remove_by_prefix(dbenv, dir,
+ QUEUE_EXTENT_PREFIX, sizeof(QUEUE_EXTENT_PREFIX)-1,
+ DB_APP_DATA);
+ __os_free(dbenv, dir);
+ if (ret != 0)
+ break;
+ }
+ }
+
+out:
+ if (file_argsp != NULL)
+ __os_free(dbenv, file_argsp);
+ return (ret);
+}
diff --git a/db/rep/rep_elect.c b/db/rep/rep_elect.c
index f158cb337..804015ad1 100644
--- a/db/rep/rep_elect.c
+++ b/db/rep/rep_elect.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2004-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2004,2007 Oracle. All rights reserved.
*
- * $Id: rep_elect.c,v 12.35 2006/09/13 17:43:40 alanb Exp $
+ * $Id: rep_elect.c,v 12.58 2007/06/19 19:43:45 sue Exp $
*/
#include "db_config.h"
@@ -21,50 +20,58 @@
* and not short-circuit once we reach more than half. The
* real winner's vote may be in the last half.
*/
-#define IS_PHASE1_DONE(rep) \
+#define IS_PHASE1_DONE(rep) \
((rep)->sites >= (rep)->nsites && (rep)->w_priority > 0)
-#define I_HAVE_WON(rep, winner) \
+#define I_HAVE_WON(rep, winner) \
((rep)->votes >= (rep)->nvotes && winner == (rep)->eid)
static void __rep_cmp_vote __P((DB_ENV *, REP *, int, DB_LSN *,
int, u_int32_t, u_int32_t, u_int32_t));
static int __rep_elect_init
- __P((DB_ENV *, DB_LSN *, int, int, int *, u_int32_t *));
+ __P((DB_ENV *, int, int, int *, u_int32_t *));
+static int __rep_fire_elected __P((DB_ENV *, REP *, u_int32_t));
+static void __rep_elect_master __P((DB_ENV *, REP *));
static int __rep_tally __P((DB_ENV *, REP *, int, int *, u_int32_t, roff_t));
-static int __rep_wait __P((DB_ENV *, u_int32_t, int *, u_int32_t));
+static int __rep_wait __P((DB_ENV *, db_timeout_t *, int *, int, u_int32_t));
/*
* __rep_elect --
* Called after master failure to hold/participate in an election for
* a new master.
*
- * PUBLIC: int __rep_elect __P((DB_ENV *, int, int, int *, u_int32_t));
+ * PUBLIC: int __rep_elect __P((DB_ENV *, int, int, u_int32_t));
*/
int
-__rep_elect(dbenv, given_nsites, nvotes, eidp, flags)
+__rep_elect(dbenv, given_nsites, nvotes, flags)
DB_ENV *dbenv;
int given_nsites, nvotes;
- int *eidp;
u_int32_t flags;
{
DB_LOG *dblp;
DB_LSN lsn;
DB_REP *db_rep;
+ DB_THREAD_INFO *ip;
LOG *lp;
REP *rep;
- int ack, done, in_progress, nsites, priority, realpri, ret, send_vote;
- u_int32_t ctlflags, egen, orig_tally, tiebreaker, to, timeout;
-#ifdef DIAGNOSTIC
- DB_MSGBUF mb;
-#endif
+ int ack, done, eid, elected, full_elect, locked, in_progress, need_req;
+ int nsites, priority, realpri, ret, send_vote, t_ret;
+ u_int32_t ctlflags, egen, orig_tally, tiebreaker;
+ db_timeout_t timeout, to;
+
COMPQUIET(flags, 0);
+ COMPQUIET(egen, 0);
PANIC_CHECK(dbenv);
ENV_REQUIRES_CONFIG_XX(
dbenv, rep_handle, "DB_ENV->rep_elect", DB_INIT_REP);
/* Error checking. */
+ if (IS_USING_LEASES(dbenv) && given_nsites != 0) {
+ __db_errx(dbenv,
+ "DB_ENV->rep_elect: nsites must be zero if leases configured");
+ return (EINVAL);
+ }
if (given_nsites < 0) {
__db_errx(dbenv,
"DB_ENV->rep_elect: nsites may not be negative");
@@ -80,6 +87,7 @@ __rep_elect(dbenv, given_nsites, nvotes, eidp, flags)
rep = db_rep->region;
dblp = dbenv->lg_handle;
lp = dblp->reginfo.primary;
+ elected = 0;
/*
* Specifying 0 for nsites signals us to use the value configured
@@ -88,6 +96,7 @@ __rep_elect(dbenv, given_nsites, nvotes, eidp, flags)
*/
nsites = given_nsites == 0 ? db_rep->config_nsites : given_nsites;
ack = nvotes == 0 ? ELECTION_MAJORITY(nsites) : nvotes;
+ locked = 0;
/*
* XXX
@@ -109,11 +118,19 @@ __rep_elect(dbenv, given_nsites, nvotes, eidp, flags)
return (EINVAL);
}
+ /*
+ * Default to the normal timeout unless the user configured
+ * a full election timeout and we think we need a full election.
+ */
+ full_elect = 0;
timeout = rep->elect_timeout;
+ if (!F_ISSET(rep, REP_F_GROUP_ESTD) && rep->full_elect_timeout != 0) {
+ full_elect = 1;
+ timeout = rep->full_elect_timeout;
+ }
realpri = rep->priority;
- RPRINT(dbenv,
- (dbenv, &mb, "Start election nsites %d, ack %d, priority %d",
+ RPRINT(dbenv, (dbenv, "Start election nsites %d, ack %d, priority %d",
nsites, ack, realpri));
/*
@@ -128,50 +145,120 @@ __rep_elect(dbenv, given_nsites, nvotes, eidp, flags)
* real, configured priority, as retrieved from REP region.
*/
ctlflags = realpri != 0 ? REPCTL_ELECTABLE : 0;
- LOG_SYSTEM_LOCK(dbenv);
- lsn = lp->lsn;
+ ENV_ENTER(dbenv, ip);
+
+ orig_tally = 0;
+ if ((ret = __rep_elect_init(dbenv, nsites, ack,
+ &in_progress, &orig_tally)) != 0) {
+ if (ret == DB_REP_NEWMASTER)
+ ret = 0;
+ goto err;
+ }
+ /*
+ * If another thread is in the middle of an election we
+ * just quietly return and not interfere.
+ */
+ if (in_progress)
+ goto edone;
+
priority = lp->persist.version != DB_LOGVERSION ? 0 : realpri;
#ifdef CONFIG_TEST
/*
* This allows us to unit test the ELECTABLE flag simply by
* using the priority values.
*/
- if (priority > 0 && priority <= 10) {
- RPRINT(dbenv,
- (dbenv, &mb,
+ if (priority > 0 && priority <= 5) {
+ RPRINT(dbenv, (dbenv,
"Artificially setting priority 0 (ELECTABLE) for CONFIG_TEST mode"));
DB_ASSERT(dbenv, ctlflags == REPCTL_ELECTABLE);
priority = 0;
}
#endif
- LOG_SYSTEM_UNLOCK(dbenv);
-
- orig_tally = 0;
- to = timeout;
- if ((ret = __rep_elect_init(dbenv,
- &lsn, nsites, ack, &in_progress, &orig_tally)) != 0) {
- if (ret == DB_REP_NEWMASTER) {
- ret = 0;
- *eidp = rep->eid;
+ __os_gettime(dbenv, &rep->etime);
+ REP_SYSTEM_LOCK(dbenv);
+ /*
+ * If leases are configured, wait for them to expire, and
+ * see if we can discover the master while waiting.
+ */
+ if (IS_USING_LEASES(dbenv)) {
+ to = __rep_lease_waittime(dbenv);
+ if (to != 0) {
+ F_SET(rep, REP_F_EPHASE0);
+ REP_SYSTEM_UNLOCK(dbenv);
+ (void)__rep_send_message(dbenv, DB_EID_BROADCAST,
+ REP_MASTER_REQ, NULL, NULL, 0, 0);
+ ret = __rep_wait(dbenv, &to, &eid,
+ 0, REP_F_EPHASE0);
+ REP_SYSTEM_LOCK(dbenv);
+ F_CLR(rep, REP_F_EPHASE0);
+ switch (ret) {
+ /*
+ * If waiting is successful, our flag is cleared
+ * and the master responded. We're done.
+ */
+ case DB_REP_EGENCHG:
+ case 0:
+ REP_SYSTEM_UNLOCK(dbenv);
+ goto edone;
+ /*
+ * If we get a timeout, continue with the election.
+ */
+ case DB_TIMEOUT:
+ break;
+ default:
+ goto lockdone;
+ }
}
- goto err;
}
/*
- * If another thread is in the middle of an election we
- * just quietly return and not interfere.
+ * We need to lockout applying incoming log records during
+ * the election. We need to use a special rep_lockout_apply
+ * instead of rep_lockout_msg because we do not want to
+ * lockout all incoming messages, like other VOTEs!
*/
- if (in_progress) {
- *eidp = rep->master_id;
- return (0);
- }
- __os_clock(dbenv, &rep->esec, &rep->eusec);
+ if ((ret = __rep_lockout_apply(dbenv, rep, 0)) != 0)
+ goto lockdone;
+ locked = 1;
+ to = timeout;
+ REP_SYSTEM_UNLOCK(dbenv);
restart:
/* Generate a randomized tiebreaker value. */
__os_unique_id(dbenv, &tiebreaker);
-
+ LOG_SYSTEM_LOCK(dbenv);
+ lsn = lp->lsn;
+ LOG_SYSTEM_UNLOCK(dbenv);
REP_SYSTEM_LOCK(dbenv);
+
F_SET(rep, REP_F_EPHASE1 | REP_F_NOARCHIVE);
F_CLR(rep, REP_F_TALLY);
+ /*
+ * We made sure that leases were expired before starting the
+ * election, but an existing master may be slow in responding.
+ * If, during lockout, acquiring mutexes, etc, the client has now
+ * re-granted its lease, we're done - a master exists.
+ */
+ if (IS_USING_LEASES(dbenv) &&
+ __rep_islease_granted(dbenv)) {
+ ret = 0;
+ goto lockdone;
+ }
+
+ /*
+ * If we are in the middle of recovering or internal
+ * init, we participate, but we set our priority to 0
+ * and turn off REPCTL_ELECTABLE. We *cannot* use the
+ * REP_F_RECOVER_MASK macro because we must explicitly
+ * exclude REP_F_RECOVER_VERIFY. If we are in verify
+ * then that is okay, we can be elected (i.e. we are not
+ * in an inconsistent state).
+ */
+ if (F_ISSET(rep, REP_F_READY_API | REP_F_READY_OP |
+ REP_F_RECOVER_LOG | REP_F_RECOVER_PAGE | REP_F_RECOVER_UPDATE)) {
+ RPRINT(dbenv, (dbenv,
+ "Setting priority 0, unelectable, due to internal init/recovery"));
+ priority = 0;
+ ctlflags = 0;
+ }
/*
* We are about to participate at this egen. We must
@@ -191,7 +278,7 @@ restart:
__rep_cmp_vote(dbenv, rep, rep->eid, &lsn, priority, rep->gen,
tiebreaker, ctlflags);
- RPRINT(dbenv, (dbenv, &mb, "Beginning an election"));
+ RPRINT(dbenv, (dbenv, "Beginning an election"));
/* Now send vote */
send_vote = DB_EID_INVALID;
@@ -205,13 +292,13 @@ restart:
REP_SYSTEM_LOCK(dbenv);
goto vote;
}
- ret = __rep_wait(dbenv, to, eidp, REP_F_EPHASE1);
+ ret = __rep_wait(dbenv, &to, &eid, full_elect, REP_F_EPHASE1);
switch (ret) {
case 0:
/* Check if election complete or phase complete. */
- if (*eidp != DB_EID_INVALID && !IN_ELECTION(rep)) {
- RPRINT(dbenv, (dbenv, &mb,
- "Ended election phase 1"));
+ if (eid != DB_EID_INVALID && !IN_ELECTION(rep)) {
+ RPRINT(dbenv,
+ (dbenv, "Ended election phase 1"));
goto edone;
}
goto phase2;
@@ -219,7 +306,7 @@ restart:
if (to > timeout)
to = timeout;
to = (to * 8) / 10;
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"Egen changed while waiting. Now %lu. New timeout %lu, orig timeout %lu",
(u_long)rep->egen, (u_long)to, (u_long)timeout));
/*
@@ -249,7 +336,7 @@ restart:
*/
if (egen != rep->egen) {
REP_SYSTEM_UNLOCK(dbenv);
- RPRINT(dbenv, (dbenv, &mb, "Egen changed from %lu to %lu",
+ RPRINT(dbenv, (dbenv, "Egen changed from %lu to %lu",
(u_long)egen, (u_long)rep->egen));
goto restart;
}
@@ -265,7 +352,7 @@ vote:
if (rep->winner == rep->eid) {
(void)__rep_tally(dbenv, rep, rep->eid, &rep->votes,
egen, rep->v2tally_off);
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"Counted my vote %d", rep->votes));
}
F_SET(rep, REP_F_EPHASE2);
@@ -274,90 +361,91 @@ vote:
REP_SYSTEM_UNLOCK(dbenv);
if (send_vote == DB_EID_INVALID) {
/* We do not have enough votes to elect. */
- RPRINT(dbenv, (dbenv, &mb,
- "Not enough votes to elect: recvd %d of %d from %d sites",
- rep->sites, rep->nvotes, rep->nsites));
+ if (rep->sites >= rep->nvotes)
+ __db_errx(dbenv,
+ "No electable site found: recvd %d of %d votes from %d sites",
+ rep->sites, rep->nvotes, rep->nsites);
+ else
+ __db_errx(dbenv,
+ "Not enough votes to elect: recvd %d of %d from %d sites",
+ rep->sites, rep->nvotes, rep->nsites);
ret = DB_REP_UNAVAIL;
goto err;
+ }
- } else {
+ /*
+ * We have seen enough vote1's. Now we need to wait
+ * for all the vote2's.
+ */
+ if (send_vote != rep->eid) {
+ RPRINT(dbenv, (dbenv, "Sending vote"));
+ __rep_send_vote(dbenv, NULL, 0, 0, 0, 0, egen,
+ send_vote, REP_VOTE2, 0);
/*
- * We have seen enough vote1's. Now we need to wait
- * for all the vote2's.
+ * If we are NOT the new master we want to send
+ * our vote to the winner, and wait longer. The
+ * reason is that the winner may be "behind" us
+ * in the election waiting and if the master is
+ * down, the winner will wait the full timeout
+ * and we want to give the winner enough time to
+ * process all the votes. Otherwise we could
+ * incorrectly return DB_REP_UNAVAIL and start a
+ * new election before the winner can declare
+ * itself.
*/
- if (send_vote != rep->eid) {
- RPRINT(dbenv, (dbenv, &mb, "Sending vote"));
- __rep_send_vote(dbenv, NULL, 0, 0, 0, 0, egen,
- send_vote, REP_VOTE2, 0);
- /*
- * If we are NOT the new master we want to send
- * our vote to the winner, and wait longer. The
- * reason is that the winner may be "behind" us
- * in the election waiting and if the master is
- * down, the winner will wait the full timeout
- * and we want to give the winner enough time to
- * process all the votes. Otherwise we could
- * incorrectly return DB_REP_UNAVAIL and start a
- * new election before the winner can declare
- * itself.
- */
- to = to * 2;
-
- }
+ to = to * 2;
+ }
phase2:
- if (I_HAVE_WON(rep, rep->winner)) {
- RPRINT(dbenv, (dbenv, &mb,
- "Skipping phase2 wait: already got %d votes",
- rep->votes));
- REP_SYSTEM_LOCK(dbenv);
- goto i_won;
- }
- ret = __rep_wait(dbenv, to, eidp, REP_F_EPHASE2);
- RPRINT(dbenv, (dbenv, &mb,
- "Ended election phase 2 %d", ret));
- switch (ret) {
- case 0:
- if (*eidp != DB_EID_INVALID)
- goto edone;
- ret = DB_REP_UNAVAIL;
- break;
- case DB_REP_EGENCHG:
- if (to > timeout)
- to = timeout;
- to = (to * 8) / 10;
- RPRINT(dbenv, (dbenv, &mb,
-"While waiting egen changed to %lu. Phase 2 New timeout %lu, orig timeout %lu",
- (u_long)rep->egen,
- (u_long)to, (u_long)timeout));
- goto restart;
- case DB_TIMEOUT:
- ret = DB_REP_UNAVAIL;
- break;
- default:
- goto err;
- }
+ if (I_HAVE_WON(rep, rep->winner)) {
+ RPRINT(dbenv, (dbenv,
+ "Skipping phase2 wait: already got %d votes", rep->votes));
REP_SYSTEM_LOCK(dbenv);
- if (egen != rep->egen) {
- REP_SYSTEM_UNLOCK(dbenv);
- RPRINT(dbenv, (dbenv, &mb,
- "Egen ph2 changed from %lu to %lu",
- (u_long)egen, (u_long)rep->egen));
+ goto i_won;
+ }
+ ret = __rep_wait(dbenv, &to, &eid, full_elect, REP_F_EPHASE2);
+ RPRINT(dbenv, (dbenv, "Ended election phase 2 %d", ret));
+ switch (ret) {
+ case 0:
+ if (eid != DB_EID_INVALID)
+ goto edone;
+ ret = DB_REP_UNAVAIL;
+ break;
+ case DB_REP_EGENCHG:
+ if (to > timeout)
+ to = timeout;
+ to = (to * 8) / 10;
+ RPRINT(dbenv, (dbenv,
+"While waiting egen changed to %lu. Phase 2 New timeout %lu, orig timeout %lu",
+ (u_long)rep->egen,
+ (u_long)to, (u_long)timeout));
goto restart;
- }
- done = rep->votes >= rep->nvotes;
- RPRINT(dbenv, (dbenv, &mb,
- "After phase 2: votes %d, nvotes %d, nsites %d",
- rep->votes, rep->nvotes, rep->nsites));
- if (I_HAVE_WON(rep, rep->winner)) {
-i_won: __rep_elect_master(dbenv, rep, eidp);
- ret = 0;
- goto lockdone;
- }
+ case DB_TIMEOUT:
+ ret = DB_REP_UNAVAIL;
+ break;
+ default:
+ goto err;
+ }
+ REP_SYSTEM_LOCK(dbenv);
+ if (egen != rep->egen) {
REP_SYSTEM_UNLOCK(dbenv);
+ RPRINT(dbenv, (dbenv,
+ "Egen ph2 changed from %lu to %lu",
+ (u_long)egen, (u_long)rep->egen));
+ goto restart;
+ }
+ done = rep->votes >= rep->nvotes;
+ RPRINT(dbenv, (dbenv,
+ "After phase 2: votes %d, nvotes %d, nsites %d",
+ rep->votes, rep->nvotes, rep->nsites));
+ if (I_HAVE_WON(rep, rep->winner)) {
+i_won: __rep_elect_master(dbenv, rep);
+ ret = 0;
+ elected = 1;
+ }
+ if (0) {
+err: REP_SYSTEM_LOCK(dbenv);
}
-
-err: REP_SYSTEM_LOCK(dbenv);
lockdone:
/*
* If we get here because of a non-election error, then we
@@ -371,20 +459,35 @@ lockdone:
F_SET(rep, orig_tally);
/*
- * If the election finished elsewhere, we need to decrement
- * the elect_th anyway.
+ * If the election finished elsewhere, we need to clear
+ * the elect flag anyway.
*/
if (0) {
edone: REP_SYSTEM_LOCK(dbenv);
}
- rep->elect_th = 0;
+ F_CLR(rep, REP_F_INREPELECT);
+ if (locked) {
+ need_req = F_ISSET(rep, REP_F_SKIPPED_APPLY);
+ F_CLR(rep, REP_F_READY_APPLY | REP_F_SKIPPED_APPLY);
+ REP_SYSTEM_UNLOCK(dbenv);
+ /*
+ * If we skipped any log records, request them now.
+ */
+ if (need_req && (t_ret = __rep_resend_req(dbenv, 0)) != 0 &&
+ ret == 0)
+ ret = t_ret;
+ } else
+ REP_SYSTEM_UNLOCK(dbenv);
- RPRINT(dbenv, (dbenv, &mb,
+ if (elected)
+ ret = __rep_fire_elected(dbenv, rep, egen);
+
+ RPRINT(dbenv, (dbenv,
"Ended election with %d, sites %d, egen %lu, flags 0x%lx",
ret, rep->sites, (u_long)rep->egen, (u_long)rep->flags));
- REP_SYSTEM_UNLOCK(dbenv);
DB_TEST_RECOVERY_LABEL
+ ENV_LEAVE(dbenv, ip);
return (ret);
}
@@ -392,14 +495,14 @@ DB_TEST_RECOVERY_LABEL
* __rep_vote1 --
* Handle incoming vote1 message on a client.
*
- * PUBLIC: int __rep_vote1 __P((DB_ENV *, REP_CONTROL *, DBT *, int *));
+ * PUBLIC: int __rep_vote1 __P((DB_ENV *, REP_CONTROL *, DBT *, int));
*/
int
-__rep_vote1(dbenv, rp, rec, eidp)
+__rep_vote1(dbenv, rp, rec, eid)
DB_ENV *dbenv;
REP_CONTROL *rp;
DBT *rec;
- int *eidp;
+ int eid;
{
DB_LOG *dblp;
DB_LSN lsn;
@@ -410,24 +513,25 @@ __rep_vote1(dbenv, rp, rec, eidp)
REP_OLD_VOTE_INFO *ovi;
REP_VOTE_INFO tmpvi, *vi;
u_int32_t egen;
- int master, ret;
-#ifdef DIAGNOSTIC
- DB_MSGBUF mb;
-#endif
+ int elected, master, ret;
- ret = 0;
+ COMPQUIET(egen, 0);
+
+ elected = ret = 0;
db_rep = dbenv->rep_handle;
rep = db_rep->region;
dblp = dbenv->lg_handle;
lp = dblp->reginfo.primary;
if (F_ISSET(rep, REP_F_MASTER)) {
- RPRINT(dbenv, (dbenv, &mb, "Master received vote"));
+ RPRINT(dbenv, (dbenv, "Master received vote"));
LOG_SYSTEM_LOCK(dbenv);
lsn = lp->lsn;
LOG_SYSTEM_UNLOCK(dbenv);
(void)__rep_send_message(dbenv,
DB_EID_BROADCAST, REP_NEWMASTER, &lsn, NULL, 0, 0);
+ if (IS_USING_LEASES(dbenv))
+ ret = __rep_lease_refresh(dbenv);
return (ret);
}
@@ -449,11 +553,10 @@ __rep_vote1(dbenv, rp, rec, eidp)
* start over by tallying it. If we get an old vote,
* send an ALIVE to the old participant.
*/
- RPRINT(dbenv, (dbenv, &mb,
- "Received vote1 egen %lu, egen %lu",
+ RPRINT(dbenv, (dbenv, "Received vote1 egen %lu, egen %lu",
(u_long)vi->egen, (u_long)rep->egen));
if (vi->egen < rep->egen) {
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"Received old vote %lu, egen %lu, ignoring vote1",
(u_long)vi->egen, (u_long)rep->egen));
egen = rep->egen;
@@ -461,11 +564,11 @@ __rep_vote1(dbenv, rp, rec, eidp)
data_dbt.data = &egen;
data_dbt.size = sizeof(egen);
(void)__rep_send_message(dbenv,
- *eidp, REP_ALIVE, &rp->lsn, &data_dbt, 0, 0);
+ eid, REP_ALIVE, &rp->lsn, &data_dbt, 0, 0);
return (ret);
}
if (vi->egen > rep->egen) {
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"Received VOTE1 from egen %lu, my egen %lu; reset",
(u_long)vi->egen, (u_long)rep->egen));
__rep_elect_done(dbenv, rep);
@@ -496,7 +599,7 @@ __rep_vote1(dbenv, rp, rec, eidp)
rep->nsites = rep->sites + 1;
if (rep->nsites > rep->asites &&
(ret = __rep_grow_sites(dbenv, rep->nsites)) != 0) {
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"Grow sites returned error %d", ret));
goto err;
}
@@ -505,8 +608,7 @@ __rep_vote1(dbenv, rp, rec, eidp)
* Ignore vote1's if we're in phase 2.
*/
if (F_ISSET(rep, REP_F_EPHASE2)) {
- RPRINT(dbenv, (dbenv, &mb,
- "In phase 2, ignoring vote1"));
+ RPRINT(dbenv, (dbenv, "In phase 2, ignoring vote1"));
goto err;
}
@@ -514,30 +616,28 @@ __rep_vote1(dbenv, rp, rec, eidp)
* Record this vote. If we get back non-zero, we
* ignore the vote.
*/
- if ((ret = __rep_tally(dbenv, rep, *eidp, &rep->sites,
+ if ((ret = __rep_tally(dbenv, rep, eid, &rep->sites,
vi->egen, rep->tally_off)) != 0) {
- RPRINT(dbenv, (dbenv, &mb,
- "Tally returned %d, sites %d",
+ RPRINT(dbenv, (dbenv, "Tally returned %d, sites %d",
ret, rep->sites));
ret = 0;
goto err;
}
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"Incoming vote: (eid)%d (pri)%d %s (gen)%lu (egen)%lu [%lu,%lu]",
- *eidp, vi->priority,
+ eid, vi->priority,
F_ISSET(rp, REPCTL_ELECTABLE) ? "ELECTABLE" : "",
(u_long)rp->gen, (u_long)vi->egen,
(u_long)rp->lsn.file, (u_long)rp->lsn.offset));
-#ifdef DIAGNOSTIC
if (rep->sites > 1)
- RPRINT(dbenv, (dbenv, &mb,
- "Existing vote: (eid)%d (pri)%d (gen)%lu (sites)%d [%lu,%lu]",
+ RPRINT(dbenv, (dbenv,
+ "Existing vote: (eid)%d (pri)%d (gen)%lu (sites)%d [%lu,%lu]",
rep->winner, rep->w_priority,
(u_long)rep->w_gen, rep->sites,
(u_long)rep->w_lsn.file,
(u_long)rep->w_lsn.offset));
-#endif
- __rep_cmp_vote(dbenv, rep, *eidp, &rp->lsn, vi->priority,
+
+ __rep_cmp_vote(dbenv, rep, eid, &rp->lsn, vi->priority,
rp->gen, vi->tiebreaker, rp->flags);
/*
* If you get a vote and you're not in an election, we've
@@ -545,9 +645,8 @@ __rep_vote1(dbenv, rp, rec, eidp)
* to do.
*/
if (!IN_ELECTION(rep)) {
- RPRINT(dbenv, (dbenv, &mb,
- "Not in election, but received vote1 0x%x",
- rep->flags));
+ RPRINT(dbenv, (dbenv,
+ "Not in election, but received vote1 0x%x", rep->flags));
ret = DB_REP_HOLDELECTION;
goto err;
}
@@ -555,9 +654,8 @@ __rep_vote1(dbenv, rp, rec, eidp)
master = rep->winner;
lsn = rep->w_lsn;
if (IS_PHASE1_DONE(rep)) {
- RPRINT(dbenv,
- (dbenv, &mb, "Phase1 election done"));
- RPRINT(dbenv, (dbenv, &mb, "Voting for %d%s",
+ RPRINT(dbenv, (dbenv, "Phase1 election done"));
+ RPRINT(dbenv, (dbenv, "Voting for %d%s",
master, master == rep->eid ? "(self)" : ""));
egen = rep->egen;
F_SET(rep, REP_F_EPHASE2);
@@ -565,12 +663,12 @@ __rep_vote1(dbenv, rp, rec, eidp)
if (master == rep->eid) {
(void)__rep_tally(dbenv, rep, rep->eid,
&rep->votes, egen, rep->v2tally_off);
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"After phase 1 done: counted vote %d of %d",
rep->votes, rep->nvotes));
if (I_HAVE_WON(rep, rep->winner)) {
- __rep_elect_master(dbenv, rep, eidp);
- ret = DB_REP_NEWMASTER;
+ __rep_elect_master(dbenv, rep);
+ elected = 1;
}
goto err;
}
@@ -581,6 +679,8 @@ __rep_vote1(dbenv, rp, rec, eidp)
master, REP_VOTE2, 0);
} else
err: REP_SYSTEM_UNLOCK(dbenv);
+ if (elected)
+ ret = __rep_fire_elected(dbenv, rep, egen);
return (ret);
}
@@ -588,13 +688,13 @@ err: REP_SYSTEM_UNLOCK(dbenv);
* __rep_vote2 --
* Handle incoming vote2 message on a client.
*
- * PUBLIC: int __rep_vote2 __P((DB_ENV *, DBT *, int *));
+ * PUBLIC: int __rep_vote2 __P((DB_ENV *, DBT *, int));
*/
int
-__rep_vote2(dbenv, rec, eidp)
+__rep_vote2(dbenv, rec, eid)
DB_ENV *dbenv;
DBT *rec;
- int *eidp;
+ int eid;
{
DB_LOG *dblp;
DB_LSN lsn;
@@ -603,10 +703,8 @@ __rep_vote2(dbenv, rec, eidp)
REP *rep;
REP_OLD_VOTE_INFO *ovi;
REP_VOTE_INFO tmpvi, *vi;
+ u_int32_t egen;
int ret;
-#ifdef DIAGNOSTIC
- DB_MSGBUF mb;
-#endif
ret = 0;
db_rep = dbenv->rep_handle;
@@ -614,19 +712,22 @@ __rep_vote2(dbenv, rec, eidp)
dblp = dbenv->lg_handle;
lp = dblp->reginfo.primary;
- RPRINT(dbenv, (dbenv, &mb, "We received a vote%s",
+ RPRINT(dbenv, (dbenv, "We received a vote%s",
F_ISSET(rep, REP_F_MASTER) ? " (master)" : ""));
if (F_ISSET(rep, REP_F_MASTER)) {
LOG_SYSTEM_LOCK(dbenv);
lsn = lp->lsn;
LOG_SYSTEM_UNLOCK(dbenv);
- rep->stat.st_elections_won++;
+ STAT(rep->stat.st_elections_won++);
(void)__rep_send_message(dbenv,
DB_EID_BROADCAST, REP_NEWMASTER, &lsn, NULL, 0, 0);
+ if (IS_USING_LEASES(dbenv))
+ ret = __rep_lease_refresh(dbenv);
return (ret);
}
REP_SYSTEM_LOCK(dbenv);
+ egen = rep->egen;
/* If we have priority 0, we should never get a vote. */
DB_ASSERT(dbenv, rep->priority != 0);
@@ -650,7 +751,7 @@ __rep_vote2(dbenv, rec, eidp)
} else
vi = (REP_VOTE_INFO *)rec->data;
if (!IN_ELECTION_TALLY(rep) && vi->egen >= rep->egen) {
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"Not in election gen %lu, at %lu, got vote",
(u_long)vi->egen, (u_long)rep->egen));
ret = DB_REP_HOLDELECTION;
@@ -678,7 +779,7 @@ __rep_vote2(dbenv, rec, eidp)
* Case 1.
*/
if (vi->egen != rep->egen) {
- RPRINT(dbenv, (dbenv, &mb, "Bad vote egen %lu. Mine %lu",
+ RPRINT(dbenv, (dbenv, "Bad vote egen %lu. Mine %lu",
(u_long)vi->egen, (u_long)rep->egen));
ret = 0;
goto err;
@@ -687,19 +788,21 @@ __rep_vote2(dbenv, rec, eidp)
/*
* __rep_tally takes care of cases 2, 3 and 4.
*/
- if ((ret = __rep_tally(dbenv, rep, *eidp, &rep->votes,
+ if ((ret = __rep_tally(dbenv, rep, eid, &rep->votes,
vi->egen, rep->v2tally_off)) != 0) {
ret = 0;
goto err;
}
- RPRINT(dbenv, (dbenv, &mb, "Counted vote %d of %d",
+ RPRINT(dbenv, (dbenv, "Counted vote %d of %d",
rep->votes, rep->nvotes));
if (I_HAVE_WON(rep, rep->winner)) {
- __rep_elect_master(dbenv, rep, eidp);
+ __rep_elect_master(dbenv, rep);
ret = DB_REP_NEWMASTER;
}
err: REP_SYSTEM_UNLOCK(dbenv);
+ if (ret == DB_REP_NEWMASTER)
+ ret = __rep_fire_elected(dbenv, rep, egen);
return (ret);
}
@@ -721,11 +824,6 @@ __rep_tally(dbenv, rep, eid, countp, egen, vtoff)
{
REP_VTALLY *tally, *vtp;
int i;
-#ifdef DIAGNOSTIC
- DB_MSGBUF mb;
-#else
- COMPQUIET(rep, NULL);
-#endif
tally = R_ADDR((REGINFO *)dbenv->reginfo, vtoff);
i = 0;
@@ -742,7 +840,7 @@ __rep_tally(dbenv, rep, eid, countp, egen, vtoff)
* Also ignore votes that are duplicates.
*/
if (vtp->eid == eid) {
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"Tally found[%d] (%d, %lu), this vote (%d, %lu)",
i, vtp->eid, (u_long)vtp->egen,
eid, (u_long)egen));
@@ -756,18 +854,14 @@ __rep_tally(dbenv, rep, eid, countp, egen, vtoff)
i++;
vtp = &tally[i];
}
+
/*
- * If we get here, we have a new voter we haven't
- * seen before. Tally this vote.
+ * If we get here, we have a new voter we haven't seen before. Tally
+ * this vote.
*/
-#ifdef DIAGNOSTIC
- if (vtoff == rep->tally_off)
- RPRINT(dbenv, (dbenv, &mb, "Tallying VOTE1[%d] (%d, %lu)",
- i, eid, (u_long)egen));
- else
- RPRINT(dbenv, (dbenv, &mb, "Tallying VOTE2[%d] (%d, %lu)",
- i, eid, (u_long)egen));
-#endif
+ RPRINT(dbenv, (dbenv, "Tallying VOTE%c[%d] (%d, %lu)",
+ vtoff == rep->tally_off ? '1' : '2', i, eid, (u_long)egen));
+
vtp->eid = eid;
vtp->egen = egen;
(*countp)++;
@@ -791,11 +885,6 @@ __rep_cmp_vote(dbenv, rep, eid, lsnp, priority, gen, tiebreaker, flags)
{
int cmp;
-#ifdef DIAGNOSTIC
- DB_MSGBUF mb;
-#else
- COMPQUIET(dbenv, NULL);
-#endif
cmp = LOG_COMPARE(lsnp, &rep->w_lsn);
/*
* If we've seen more than one, compare us to the best so far.
@@ -823,7 +912,7 @@ __rep_cmp_vote(dbenv, rep, eid, lsnp, priority, gen, tiebreaker, flags)
(cmp == 0 && (priority > rep->w_priority ||
(priority == rep->w_priority &&
(tiebreaker > rep->w_tiebreaker))))) {
- RPRINT(dbenv, (dbenv, &mb, "Accepting new vote"));
+ RPRINT(dbenv, (dbenv, "Accepting new vote"));
rep->winner = eid;
rep->w_priority = priority;
rep->w_lsn = *lsnp;
@@ -846,7 +935,6 @@ __rep_cmp_vote(dbenv, rep, eid, lsnp, priority, gen, tiebreaker, flags)
rep->w_tiebreaker = 0;
}
}
- return;
}
/*
@@ -855,14 +943,16 @@ __rep_cmp_vote(dbenv, rep, eid, lsnp, priority, gen, tiebreaker, flags)
* already in progress; makes it 0 otherwise.
*/
static int
-__rep_elect_init(dbenv, lsnp, nsites, nvotes, beginp, otally)
+__rep_elect_init(dbenv, nsites, nvotes, beginp, otally)
DB_ENV *dbenv;
- DB_LSN *lsnp;
int nsites, nvotes;
int *beginp;
u_int32_t *otally;
{
+ DB_LOG *dblp;
+ DB_LSN lsn;
DB_REP *db_rep;
+ LOG *lp;
REP *rep;
int ret;
@@ -872,20 +962,27 @@ __rep_elect_init(dbenv, lsnp, nsites, nvotes, beginp, otally)
ret = 0;
/* We may miscount, as we don't hold the replication mutex here. */
- rep->stat.st_elections++;
+ STAT(rep->stat.st_elections++);
- /* If we are already a master; simply broadcast that fact and return. */
+ /* If we are already master; simply broadcast that fact and return. */
if (F_ISSET(rep, REP_F_MASTER)) {
+ dblp = dbenv->lg_handle;
+ lp = dblp->reginfo.primary;
+ LOG_SYSTEM_LOCK(dbenv);
+ lsn = lp->lsn;
+ LOG_SYSTEM_UNLOCK(dbenv);
(void)__rep_send_message(dbenv,
- DB_EID_BROADCAST, REP_NEWMASTER, lsnp, NULL, 0, 0);
- rep->stat.st_elections_won++;
+ DB_EID_BROADCAST, REP_NEWMASTER, &lsn, NULL, 0, 0);
+ if (IS_USING_LEASES(dbenv))
+ ret = __rep_lease_refresh(dbenv);
+ STAT(rep->stat.st_elections_won++);
return (DB_REP_NEWMASTER);
}
REP_SYSTEM_LOCK(dbenv);
if (otally != NULL)
*otally = F_ISSET(rep, REP_F_TALLY);
- *beginp = IN_ELECTION(rep) || rep->elect_th;
+ *beginp = IN_ELECTION(rep) || F_ISSET(rep, REP_F_INREPELECT);
if (!*beginp) {
/*
* Make sure that we always initialize all the election fields
@@ -897,7 +994,8 @@ __rep_elect_init(dbenv, lsnp, nsites, nvotes, beginp, otally)
(ret = __rep_grow_sites(dbenv, nsites)) != 0)
goto err;
DB_ENV_TEST_RECOVERY(dbenv, DB_TEST_ELECTINIT, ret, NULL);
- rep->elect_th = 1;
+ F_SET(rep, REP_F_INREPELECT);
+ F_CLR(rep, REP_F_EGENUPDATE);
/*
* If we're the first to the party, we simply set initial
* values: pre-existing values would be left over from previous
@@ -922,74 +1020,144 @@ err: REP_SYSTEM_UNLOCK(dbenv);
* __rep_elect_master
* Set up for new master from election. Must be called with
* the replication region mutex held.
- *
- * PUBLIC: void __rep_elect_master __P((DB_ENV *, REP *, int *));
*/
-void
-__rep_elect_master(dbenv, rep, eidp)
+static void
+__rep_elect_master(dbenv, rep)
DB_ENV *dbenv;
REP *rep;
- int *eidp;
{
-#ifdef DIAGNOSTIC
- DB_MSGBUF mb;
-#else
- COMPQUIET(dbenv, NULL);
-#endif
+ /*
+ * We often come through here twice, sometimes even more. We mustn't
+ * let the redundant calls affect stats counting. But rep_elect relies
+ * on this first part for setting eidp.
+ */
rep->master_id = rep->eid;
+
+ if (F_ISSET(rep, REP_F_MASTERELECT | REP_F_MASTER)) {
+ /* We've been through here already; avoid double counting. */
+ return;
+ }
+
F_SET(rep, REP_F_MASTERELECT);
- if (eidp != NULL)
- *eidp = rep->master_id;
- rep->stat.st_elections_won++;
- RPRINT(dbenv, (dbenv, &mb,
+ STAT(rep->stat.st_elections_won++);
+
+ RPRINT(dbenv, (dbenv,
"Got enough votes to win; election done; winner is %d, gen %lu",
rep->master_id, (u_long)rep->gen));
}
static int
-__rep_wait(dbenv, timeout, eidp, flags)
+__rep_fire_elected(dbenv, rep, egen)
DB_ENV *dbenv;
- u_int32_t timeout;
- int *eidp;
+ REP *rep;
+ u_int32_t egen;
+{
+ REP_EVENT_LOCK(dbenv);
+ if (rep->notified_egen < egen) {
+ __rep_fire_event(dbenv, DB_EVENT_REP_ELECTED, NULL);
+ rep->notified_egen = egen;
+ }
+ REP_EVENT_UNLOCK(dbenv);
+ return (0);
+}
+
+/*
+ * Compute a sleep interval. Set it to the smaller of .5s or
+ * timeout/10, making sure we sleep at least 1usec if timeout < 10.
+ */
+#define SLEEPTIME(timeout) \
+ (timeout > 5000000) ? 500000 : ((timeout >= 10) ? timeout / 10 : 1);
+
+static int
+__rep_wait(dbenv, timeoutp, eidp, full_elect, flags)
+ DB_ENV *dbenv;
+ db_timeout_t *timeoutp;
+ int *eidp, full_elect;
u_int32_t flags;
{
DB_REP *db_rep;
REP *rep;
- int done, echg;
- u_int32_t egen, sleeptime;
+ int done, echg, phase_over, ret;
+ u_int32_t egen, sleeptime, sleeptotal, timeout;
- done = echg = 0;
db_rep = dbenv->rep_handle;
rep = db_rep->region;
egen = rep->egen;
+ done = echg = phase_over = ret = 0;
+ timeout = *timeoutp;
/*
* The user specifies an overall timeout function, but checking
* is cheap and the timeout may be a generous upper bound.
* Sleep repeatedly for the smaller of .5s and timeout/10.
*/
- sleeptime = (timeout > 5000000) ? 500000 : timeout / 10;
- if (sleeptime == 0)
- sleeptime++;
- while (timeout > 0) {
+ sleeptime = SLEEPTIME(timeout);
+ sleeptotal = 0;
+ while (sleeptotal < timeout) {
__os_sleep(dbenv, 0, sleeptime);
+ sleeptotal += sleeptime;
REP_SYSTEM_LOCK(dbenv);
+ /*
+ * Check if group membership changed while we were
+ * sleeping. Specifically we're trying for a full
+ * election and someone is telling us we're joining
+ * a previously established replication group.
+ */
+ if (full_elect && F_ISSET(rep, REP_F_GROUP_ESTD)) {
+ *timeoutp = rep->elect_timeout;
+ timeout = *timeoutp;
+ /*
+ * We adjusted timeout, if we've already waited
+ * that long, then return as though this phase
+ * timed out. However, we want to give other
+ * changes a chance to return, so if we both
+ * found a group and found a new egen, we
+ * override this return with the egen information.
+ * If we found a group and our election finished
+ * then we want to return the election completion.
+ */
+ if (sleeptotal >= timeout) {
+ done = 1;
+ ret = DB_TIMEOUT;
+ } else
+ sleeptime = SLEEPTIME(timeout);
+ }
+
echg = egen != rep->egen;
- done = !F_ISSET(rep, flags);
+ phase_over = !F_ISSET(rep, flags);
- *eidp = rep->master_id;
+ /*
+ * Since we're not clearing out master_id any more,
+ * we need to do more to detect the difference between
+ * a new master getting elected and egen changing,
+ * or a new election starting because the old one
+ * timed out at another site (which easily happens
+ * when sites have very different timeout settings).
+ *
+ * Detect this by:
+ * If my phase was over, egen has changed but
+ * there are still election flags set, or we're
+ * told our egen was out of date and updated
+ * then return DB_REP_EGENCHG.
+ *
+ * Otherwise, if my phase is over I want to
+ * set my idea of the master and return.
+ */
+ if (phase_over && echg &&
+ (IN_ELECTION_TALLY(rep) ||
+ F_ISSET(rep, REP_F_EGENUPDATE))) {
+ done = 1;
+ F_CLR(rep, REP_F_EGENUPDATE);
+ ret = DB_REP_EGENCHG;
+ } else if (phase_over) {
+ *eidp = rep->master_id;
+ done = 1;
+ ret = 0;
+ }
REP_SYSTEM_UNLOCK(dbenv);
if (done)
- return (0);
-
- if (echg)
- return (DB_REP_EGENCHG);
-
- if (timeout > sleeptime)
- timeout -= sleeptime;
- else
- timeout = 0;
+ return (ret);
}
return (DB_TIMEOUT);
}
diff --git a/db/rep/rep_lease.c b/db/rep/rep_lease.c
new file mode 100644
index 000000000..d0d69a65b
--- /dev/null
+++ b/db/rep/rep_lease.c
@@ -0,0 +1,485 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ *
+ * $Id: rep_lease.c,v 12.5 2007/06/19 19:43:45 sue Exp $
+ */
+
+#include "db_config.h"
+
+#include "db_int.h"
+#include "dbinc/log.h"
+
+static void __rep_find_entry __P((DB_ENV *, REP *, int, REP_LEASE_ENTRY **));
+
+/*
+ * __rep_update_grant -
+ * Update a client's lease grant for this perm record
+ * and send the grant to the master. Caller must
+ * hold the mtx_clientdb mutex.
+ *
+ * PUBLIC: int __rep_update_grant __P((DB_ENV *, db_timespec *));
+ */
+int
+__rep_update_grant(dbenv, ts)
+ DB_ENV *dbenv;
+ db_timespec *ts;
+{
+ DB_LOG *dblp;
+ DB_REP *db_rep;
+ DBT lease_dbt;
+ LOG *lp;
+ REP *rep;
+ REP_GRANT_INFO gi;
+ db_timespec mytime;
+
+ db_rep = dbenv->rep_handle;
+ rep = db_rep->region;
+ dblp = dbenv->lg_handle;
+ lp = dblp->reginfo.primary;
+ timespecclear(&mytime);
+
+ /*
+ * Get current time, and add in the (skewed) lease duration
+ * time to send the grant to the master.
+ */
+ __os_gettime(dbenv, &mytime);
+ timespecadd(&mytime, &rep->lease_duration);
+ REP_SYSTEM_LOCK(dbenv);
+ /*
+ * If we are in an election, we cannot grant the lease.
+ * We need to check under the region mutex.
+ */
+ if (IN_ELECTION(rep)) {
+ REP_SYSTEM_UNLOCK(dbenv);
+ return (0);
+ }
+ if (timespeccmp(&mytime, &rep->grant_expire, >))
+ rep->grant_expire = mytime;
+ REP_SYSTEM_UNLOCK(dbenv);
+
+ /*
+ * Send the LEASE_GRANT message with the current lease grant
+ * no matter if we've actually extended the lease or not.
+ */
+ memset(&gi, 0, sizeof(gi));
+#ifdef DIAGNOSTIC
+ gi.expire_time = rep->grant_expire;
+#endif
+ gi.msg_time = *ts;
+
+ DB_INIT_DBT(lease_dbt, &gi, sizeof(gi));
+ (void)__rep_send_message(dbenv, rep->master_id, REP_LEASE_GRANT,
+ &lp->max_perm_lsn, &lease_dbt, 0, 0);
+ return (0);
+}
+
+/*
+ * __rep_islease_granted -
+ * Return 0 if this client has no outstanding lease granted.
+ * Return 1 otherwise.
+ * Caller must hold the REP_SYSTEM (region) mutex.
+ *
+ * PUBLIC: int __rep_islease_granted __P((DB_ENV *));
+ */
+int
+__rep_islease_granted(dbenv)
+ DB_ENV *dbenv;
+{
+ DB_REP *db_rep;
+ REP *rep;
+ db_timespec mytime;
+
+ db_rep = dbenv->rep_handle;
+ rep = db_rep->region;
+ /*
+ * Get current time and compare against our granted lease.
+ */
+ timespecclear(&mytime);
+ __os_gettime(dbenv, &mytime);
+
+ return (timespeccmp(&mytime, &rep->grant_expire, <=) ? 1 : 0);
+}
+
+/*
+ * __rep_lease_table_alloc -
+ * Allocate the lease table on a master. Called with rep mutex
+ * held. We need to acquire the env region mutex, so we need to
+ * make sure we never acquire those mutexes in the opposite order.
+ *
+ * PUBLIC: int __rep_lease_table_alloc __P((DB_ENV *, int));
+ */
+int
+__rep_lease_table_alloc(dbenv, nsites)
+ DB_ENV *dbenv;
+ int nsites;
+{
+ REGENV *renv;
+ REGINFO *infop;
+ REP *rep;
+ REP_LEASE_ENTRY *le, *table;
+ int i, *lease, ret;
+
+ rep = dbenv->rep_handle->region;
+
+ infop = dbenv->reginfo;
+ renv = infop->primary;
+ MUTEX_LOCK(dbenv, renv->mtx_regenv);
+ if ((ret = __env_alloc(infop, (size_t)nsites * sizeof(REP_LEASE_ENTRY),
+ &lease)) == 0) {
+ if (rep->lease_off != INVALID_ROFF)
+ __env_alloc_free(infop,
+ R_ADDR(infop, rep->lease_off));
+ rep->lease_off = R_OFFSET(infop, lease);
+ }
+ MUTEX_UNLOCK(dbenv, renv->mtx_regenv);
+ table = R_ADDR(infop, rep->lease_off);
+ for (i = 0; i < nsites; i++) {
+ le = &table[i];
+ le->eid = DB_EID_INVALID;
+ timespecclear(&le->start_time);
+ timespecclear(&le->end_time);
+ ZERO_LSN(le->lease_lsn);
+ }
+ return (ret);
+}
+
+/*
+ * __rep_lease_grant -
+ * Handle incoming REP_LEASE_GRANT message on a master.
+ *
+ * PUBLIC: int __rep_lease_grant __P((DB_ENV *, REP_CONTROL *, DBT *, int));
+ */
+int
+__rep_lease_grant(dbenv, rp, rec, eid)
+ DB_ENV *dbenv;
+ REP_CONTROL *rp;
+ DBT *rec;
+ int eid;
+{
+ DB_REP *db_rep;
+ REP *rep;
+ REP_GRANT_INFO *gi;
+ REP_LEASE_ENTRY *le;
+
+ db_rep = dbenv->rep_handle;
+ rep = db_rep->region;
+ gi = (REP_GRANT_INFO *)rec->data;
+ le = NULL;
+
+ /*
+ * Get current time, and add in the (skewed) lease duration
+ * time to send the grant to the master.
+ */
+ REP_SYSTEM_LOCK(dbenv);
+ __rep_find_entry(dbenv, rep, eid, &le);
+ /*
+ * We either get back this site's entry, or an empty entry
+ * that we need to initialize.
+ */
+ DB_ASSERT(dbenv, le != NULL);
+ /*
+ * Update the entry if it is an empty entry or if the new
+ * lease grant is a later start time than the current one.
+ */
+ RPRINT(dbenv, (dbenv, "lease_grant: gi msg_time %lu %lu",
+ (u_long)gi->msg_time.tv_sec, (u_long)gi->msg_time.tv_nsec));
+ if (le->eid == DB_EID_INVALID ||
+ timespeccmp(&gi->msg_time, &le->start_time, >)) {
+ le->eid = eid;
+ le->start_time = gi->msg_time;
+ le->end_time = le->start_time;
+ timespecadd(&le->end_time, &rep->lease_duration);
+ RPRINT(dbenv, (dbenv,
+ "lease_grant: eid %d, start %lu %lu, end %lu %lu, duration %lu %lu",
+ le->eid, (u_long)le->start_time.tv_sec, (u_long)le->start_time.tv_nsec,
+ (u_long)le->end_time.tv_sec, (u_long)le->end_time.tv_nsec,
+ (u_long)rep->lease_duration.tv_sec, (u_long)rep->lease_duration.tv_nsec));
+ /*
+ * XXX Is this really true? Could we have a lagging
+ * record that has a later start time, but smaller
+ * LSN than we have previously seen??
+ */
+ DB_ASSERT(dbenv, LOG_COMPARE(&rp->lsn, &le->lease_lsn) >= 0);
+ le->lease_lsn = rp->lsn;
+ }
+ REP_SYSTEM_UNLOCK(dbenv);
+ return (0);
+}
+
+/*
+ * Find the entry for the given EID. Or the first empty one.
+ */
+static void
+__rep_find_entry(dbenv, rep, eid, lep)
+ DB_ENV *dbenv;
+ REP *rep;
+ int eid;
+ REP_LEASE_ENTRY **lep;
+{
+ REGINFO *infop;
+ REP_LEASE_ENTRY *le, *table;
+ int i;
+
+ infop = dbenv->reginfo;
+ table = R_ADDR(infop, rep->lease_off);
+
+ for (i = 0; i < rep->nsites; i++) {
+ le = &table[i];
+ /*
+ * Find either the one that matches the client's
+ * EID or the first empty one.
+ */
+ if (le->eid == eid || le->eid == DB_EID_INVALID) {
+ *lep = le;
+ return;
+ }
+ }
+ return;
+}
+
+/*
+ * __rep_lease_check -
+ * Return 0 if this master holds valid leases and can confirm
+ * its mastership. If leases are expired, an attempt is made
+ * to refresh the leases. If that fails, then return the
+ * DB_REP_LEASE_EXPIRED error to the user. No mutexes held.
+ *
+ * PUBLIC: int __rep_lease_check __P((DB_ENV *, int));
+ */
+int
+__rep_lease_check(dbenv, refresh)
+ DB_ENV *dbenv;
+ int refresh;
+{
+ DB_LOG *dblp;
+ DB_LSN lease_lsn;
+ DB_REP *db_rep;
+ LOG *lp;
+ REGINFO *infop;
+ REP *rep;
+ REP_LEASE_ENTRY *le, *table;
+ db_timespec curtime;
+ int i, min_leases, ret, tries, valid_leases;
+
+ infop = dbenv->reginfo;
+ tries = 0;
+retry:
+ ret = 0;
+ db_rep = dbenv->rep_handle;
+ rep = db_rep->region;
+ dblp = dbenv->lg_handle;
+ lp = dblp->reginfo.primary;
+ LOG_SYSTEM_LOCK(dbenv);
+ lease_lsn = lp->max_perm_lsn;
+ LOG_SYSTEM_UNLOCK(dbenv);
+ REP_SYSTEM_LOCK(dbenv);
+ min_leases = rep->nsites / 2;
+
+ __os_gettime(dbenv, &curtime);
+
+ RPRINT(dbenv, (dbenv, "lease_check: min_leases %d curtime %lu %lu",
+ min_leases, (u_long)curtime.tv_sec, (u_long)curtime.tv_nsec));
+ table = R_ADDR(infop, rep->lease_off);
+ for (i = 0, valid_leases = 0;
+ i < rep->nsites && valid_leases < min_leases; i++) {
+ le = &table[i];
+ /*
+ * Count this lease as valid if:
+ * - It is a valid entry (has an EID).
+ * - The lease has not expired.
+ * - The LSN is up to date.
+ */
+ if (le->eid != DB_EID_INVALID) {
+ RPRINT(dbenv, (dbenv,
+ "lease_check: valid %d eid %d, lease_lsn [%lu][%lu]",
+ valid_leases, le->eid, (u_long)le->lease_lsn.file,
+ (u_long)le->lease_lsn.offset));
+ RPRINT(dbenv, (dbenv, "lease_check: endtime %lu %lu",
+ (u_long)le->end_time.tv_sec,
+ (u_long)le->end_time.tv_nsec));
+ }
+ if (le->eid != DB_EID_INVALID &&
+ timespeccmp(&le->end_time, &curtime, >=) &&
+ LOG_COMPARE(&le->lease_lsn, &lease_lsn) == 0)
+ valid_leases++;
+ }
+ REP_SYSTEM_UNLOCK(dbenv);
+
+ /*
+ * Now see if we have enough.
+ */
+ RPRINT(dbenv, (dbenv, "valid %d, min %d", valid_leases, min_leases));
+ if (valid_leases < min_leases) {
+ if (!refresh)
+ ret = DB_REP_LEASE_EXPIRED;
+ else {
+ /*
+ * If we are successful, we need to recheck the leases
+ * because the lease grant messages may have raced with
+ * the PERM acknowledgement. Give the grant messages
+ * a chance to arrive and be processed.
+ */
+ if ((ret = __rep_lease_refresh(dbenv)) == 0) {
+ if (tries <= LEASE_REFRESH_TRIES) {
+ /*
+ * If we were successful sending, but
+ * not in racing the message threads,
+ * then yield the processor so that
+ * the message threads get a chance
+ * to run.
+ */
+ if (tries > 0)
+ __os_sleep(dbenv, 1, 0);
+ tries++;
+ goto retry;
+ } else
+ ret = DB_REP_LEASE_EXPIRED;
+ }
+ }
+ }
+
+ return (ret);
+}
+
+/*
+ * __rep_lease_refresh -
+ * Find the last permanent record and send that out so that it
+ * forces clients to grant their leases.
+ *
+ * PUBLIC: int __rep_lease_refresh __P((DB_ENV *));
+ */
+int
+__rep_lease_refresh(dbenv)
+ DB_ENV *dbenv;
+{
+ DBT rec;
+ DB_LOGC *logc;
+ DB_LSN lsn;
+ DB_REP *db_rep;
+ REP *rep;
+ int ret, t_ret;
+
+ db_rep = dbenv->rep_handle;
+ rep = db_rep->region;
+
+ if ((ret = __log_cursor(dbenv, &logc)) != 0)
+ return (ret);
+
+ memset(&rec, 0, sizeof(rec));
+ memset(&lsn, 0, sizeof(lsn));
+ /*
+ * Use __rep_log_backup to find the last PERM record.
+ */
+ if ((ret = __rep_log_backup(dbenv, rep, logc, &lsn)) != 0)
+ goto err;
+
+ if ((ret = __logc_get(logc, &lsn, &rec, DB_CURRENT)) != 0)
+ goto err;
+
+ if ((ret = __rep_send_message(dbenv,
+ DB_EID_BROADCAST, REP_LOG, &lsn, &rec, REPCTL_PERM, 0)) != 0) {
+ /*
+ * If we do not get an ack, we expire leases.
+ */
+ (void)__rep_lease_expire(dbenv, 0);
+ ret = DB_REP_LEASE_EXPIRED;
+ }
+
+err: if ((t_ret = __logc_close(logc)) != 0 && ret == 0)
+ ret = t_ret;
+ return (ret);
+}
+
+/*
+ * __rep_lease_expire -
+ * Proactively expire all leases granted to us.
+ *
+ * PUBLIC: int __rep_lease_expire __P((DB_ENV *, int));
+ */
+int
+__rep_lease_expire(dbenv, locked)
+ DB_ENV *dbenv;
+ int locked;
+{
+ DB_REP *db_rep;
+ REGINFO *infop;
+ REP *rep;
+ REP_LEASE_ENTRY *le, *table;
+ int i, ret;
+
+ ret = 0;
+ db_rep = dbenv->rep_handle;
+ rep = db_rep->region;
+ infop = dbenv->reginfo;
+
+ if (!locked)
+ REP_SYSTEM_LOCK(dbenv);
+ if (rep->lease_off != INVALID_ROFF) {
+ table = R_ADDR(infop, rep->lease_off);
+ /*
+ * Expire all leases forcibly. We are guaranteed that the
+ * start_time for all leases are not in the future. Therefore,
+ * set the end_time to the start_time.
+ */
+ for (i = 0; i < rep->nsites; i++) {
+ le = &table[i];
+ le->end_time = le->start_time;
+ }
+ }
+ if (!locked)
+ REP_SYSTEM_UNLOCK(dbenv);
+ return (ret);
+}
+
+/*
+ * __rep_lease_waittime -
+ * Return the amount of time remaining on a granted lease.
+ * Assume the caller holds the REP_SYSTEM (region) mutex.
+ *
+ * PUBLIC: db_timeout_t __rep_lease_waittime __P((DB_ENV *));
+ */
+db_timeout_t
+__rep_lease_waittime(dbenv)
+ DB_ENV *dbenv;
+{
+ DB_REP *db_rep;
+ REP *rep;
+ db_timespec exptime, mytime;
+ db_timeout_t to;
+
+ db_rep = dbenv->rep_handle;
+ rep = db_rep->region;
+ exptime = rep->grant_expire;
+ to = 0;
+ /*
+ * If the lease has never been granted, we must wait a full
+ * lease timeout because we could be freshly rebooted after
+ * a crash and a lease could be granted from a previous
+ * incarnation of this client.
+ */
+ RPRINT(dbenv, (dbenv,
+ "wait_time: grant_expire %lu %lu lease_to %lu",
+ (u_long)exptime.tv_sec, (u_long)exptime.tv_nsec,
+ (u_long)rep->lease_timeout));
+ if (!timespecisset(&exptime))
+ to = rep->lease_timeout;
+ else {
+ __os_gettime(dbenv, &mytime);
+ RPRINT(dbenv, (dbenv,
+ "wait_time: mytime %lu %lu, grant_expire %lu %lu",
+ (u_long)mytime.tv_sec, (u_long)mytime.tv_nsec,
+ (u_long)exptime.tv_sec, (u_long)exptime.tv_nsec));
+ if (timespeccmp(&mytime, &exptime, <=)) {
+ /*
+ * If the current time is before the grant expiration
+ * compute the difference and return remaining grant
+ * time.
+ */
+ timespecsub(&exptime, &mytime);
+ DB_TIMESPEC_TO_TIMEOUT(to, &exptime);
+ }
+ }
+ return (to);
+}
diff --git a/db/rep/rep_log.c b/db/rep/rep_log.c
index 230b14e43..029170533 100644
--- a/db/rep/rep_log.c
+++ b/db/rep/rep_log.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2004-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2004,2007 Oracle. All rights reserved.
*
- * $Id: rep_log.c,v 12.47 2006/09/11 19:41:20 sue Exp $
+ * $Id: rep_log.c,v 12.64 2007/06/21 16:32:24 alanb Exp $
*/
#include "db_config.h"
@@ -28,14 +27,14 @@ __rep_allreq(dbenv, rp, eid)
int eid;
{
DB_LOGC *logc;
- DB_LSN oldfilelsn;
+ DB_LSN log_end, oldfilelsn;
DB_REP *db_rep;
DBT data_dbt, newfiledbt;
REP *rep;
REP_BULK bulk;
REP_THROTTLE repth;
uintptr_t bulkoff;
- u_int32_t bulkflags, flags, use_bulk, version;
+ u_int32_t bulkflags, end_flag, flags, use_bulk, version;
int ret, t_ret;
ret = 0;
@@ -67,6 +66,18 @@ __rep_allreq(dbenv, rp, eid)
repth.type = REP_LOG;
repth.data_dbt = &data_dbt;
REP_SYSTEM_UNLOCK(dbenv);
+
+ /*
+ * Get the LSN of the end of the log, so that in our reading loop
+ * (below), we can recognize when we get there, and set the
+ * REPCTL_LOG_END flag.
+ */
+ if ((ret = __logc_get(logc, &log_end, &data_dbt, DB_LAST)) != 0) {
+ if (ret == DB_NOTFOUND && F_ISSET(rep, REP_F_MASTER))
+ ret = 0;
+ goto err;
+ }
+
flags = IS_ZERO_LSN(rp->lsn) ||
IS_INIT_LSN(rp->lsn) ? DB_FIRST : DB_SET;
/*
@@ -76,7 +87,7 @@ __rep_allreq(dbenv, rp, eid)
* cannot get the record. Return 0 if we finish the loop and
* sent all that we have.
*/
- ret = __log_c_get(logc, &repth.lsn, &data_dbt, flags);
+ ret = __logc_get(logc, &repth.lsn, &data_dbt, flags);
/*
* If the client is asking for all records
* because it doesn't have any, and our first
@@ -102,9 +113,9 @@ __rep_allreq(dbenv, rp, eid)
* Any other error is returned.
*/
if (ret == 0)
- ret = __log_c_get(logc, &repth.lsn,
+ ret = __logc_get(logc, &repth.lsn,
&data_dbt, DB_CURRENT);
- else if (ret == DB_NOTFOUND && F_ISSET(rep, REP_F_MASTER)) {
+ if (ret == DB_NOTFOUND && F_ISSET(rep, REP_F_MASTER)) {
ret = 0;
goto err;
}
@@ -117,11 +128,15 @@ __rep_allreq(dbenv, rp, eid)
* Or if we're not using throttling, or we are using bulk, we stop
* when we reach the end (i.e. ret != 0).
*/
- for (;
- ret == 0 && repth.type != REP_LOG_MORE;
- ret = __log_c_get(logc, &repth.lsn, &data_dbt, DB_NEXT)) {
+ for (end_flag = 0;
+ ret == 0 && repth.type != REP_LOG_MORE && end_flag == 0;
+ ret = __logc_get(logc, &repth.lsn, &data_dbt, DB_NEXT)) {
+ /*
+ * If we just changed log files, we need to send the
+ * version of this log file to the client.
+ */
if (repth.lsn.file != oldfilelsn.file) {
- if ((ret = __log_c_version(logc, &version)) != 0)
+ if ((ret = __logc_version(logc, &version)) != 0)
break;
memset(&newfiledbt, 0, sizeof(newfiledbt));
newfiledbt.data = &version;
@@ -129,6 +144,18 @@ __rep_allreq(dbenv, rp, eid)
(void)__rep_send_message(dbenv,
eid, REP_NEWFILE, &oldfilelsn, &newfiledbt, 0, 0);
}
+
+ /*
+ * Mark the end of the ALL_REQ response to show that the
+ * receiving client should now be "caught up" with the
+ * replication group. If we're the master, then our log end is
+ * certainly authoritative. If we're another client, only if we
+ * ourselves have reached STARTUPDONE.
+ */
+ end_flag = (LOG_COMPARE(&repth.lsn, &log_end) >= 0 &&
+ (F_ISSET(rep, REP_F_MASTER) ||
+ rep->stat.st_startup_complete)) ?
+ REPCTL_LOG_END : 0;
/*
* If we are configured for bulk, try to send this as a bulk
* request. If not configured, or it is too big for bulk
@@ -136,9 +163,10 @@ __rep_allreq(dbenv, rp, eid)
*/
if (use_bulk)
ret = __rep_bulk_message(dbenv, &bulk, &repth,
- &repth.lsn, &data_dbt, REPCTL_RESEND);
+ &repth.lsn, &data_dbt, (REPCTL_RESEND | end_flag));
if (!use_bulk || ret == DB_REP_BULKOVF)
- ret = __rep_send_throttle(dbenv, eid, &repth, 0);
+ ret = __rep_send_throttle(dbenv,
+ eid, &repth, 0, end_flag);
if (ret != 0)
break;
/*
@@ -146,20 +174,20 @@ __rep_allreq(dbenv, rp, eid)
* last LSN in the previous file. Save it here.
*/
oldfilelsn = repth.lsn;
- oldfilelsn.offset += logc->c_len;
+ oldfilelsn.offset += logc->len;
}
- if (ret == DB_NOTFOUND)
+ if (ret == DB_NOTFOUND || ret == DB_REP_UNAVAIL)
ret = 0;
/*
* We're done, force out whatever remains in the bulk buffer and
* free it.
*/
if (use_bulk && (t_ret = __rep_bulk_free(dbenv, &bulk,
- REPCTL_RESEND)) != 0 && ret == 0)
+ (REPCTL_RESEND | end_flag))) != 0 && ret == 0)
ret = t_ret;
err:
- if ((t_ret = __log_c_close(logc)) != 0 && ret == 0)
+ if ((t_ret = __logc_close(logc)) != 0 && ret == 0)
ret = t_ret;
return (ret);
}
@@ -225,12 +253,23 @@ __rep_log(dbenv, rp, rec, savetime, ret_lsnp)
goto out;
}
if (rp->rectype == REP_LOG_MORE) {
- REP_SYSTEM_LOCK(dbenv);
master = rep->master_id;
- REP_SYSTEM_UNLOCK(dbenv);
- LOG_SYSTEM_LOCK(dbenv);
- lsn = lp->lsn;
- LOG_SYSTEM_UNLOCK(dbenv);
+
+ /*
+ * Keep the cycle from stalling: In case we got the LOG_MORE out
+ * of order, before some preceding log records, we want to make
+ * sure our follow-up request resumes from where the LOG_MORE
+ * said it should. (If the preceding log records never arrive,
+ * normal gap processing should take care of asking for them.)
+ * But if we already have this record and/or more, we need to
+ * ask to resume from what we need. The upshot is we need the
+ * max of lp->lsn and the lsn from the message.
+ */
+ MUTEX_LOCK(dbenv, rep->mtx_clientdb);
+ lsn = lp->ready_lsn;
+ if (LOG_COMPARE(&rp->lsn, &lsn) > 0)
+ lsn = rp->lsn;
+
/*
* If the master_id is invalid, this means that since
* the last record was sent, somebody declared an
@@ -240,37 +279,21 @@ __rep_log(dbenv, rp, rec, savetime, ret_lsnp)
* This is not an error; when we find a new master,
* we'll re-negotiate where the end of the log is and
* try to bring ourselves up to date again anyway.
- *
- * If we've asked for a bunch of records, it could
- * either be from a LOG_REQ or ALL_REQ. If we're
- * waiting for a gap to be filled, call loggap_req,
- * otherwise use ALL_REQ again.
*/
- MUTEX_LOCK(dbenv, rep->mtx_clientdb);
if (master == DB_EID_INVALID) {
ret = 0;
MUTEX_UNLOCK(dbenv, rep->mtx_clientdb);
- } else if (IS_ZERO_LSN(lp->waiting_lsn)) {
- /*
- * We're making an ALL_REQ. However, since we're
- * in a LOG_MORE, this is in reply to a request and
- * it is likely we may receive new records, even if
- * we don't have any at this moment. So, to avoid
- * multiple data streams, set the wait_recs high
- * now to give the master a chance to start sending
- * us these records before the gap code re-requests
- * the same gap. Wait_recs will get reset once we
- * start receiving these records.
- */
- lp->wait_recs = rep->max_gap;
- MUTEX_UNLOCK(dbenv, rep->mtx_clientdb);
- if (__rep_send_message(dbenv, master, REP_ALL_REQ,
- &lsn, NULL, 0, DB_REP_ANYWHERE) != 0)
- goto out;
- } else {
- ret = __rep_loggap_req(dbenv, rep, &lsn, REP_GAP_FORCE);
- MUTEX_UNLOCK(dbenv, rep->mtx_clientdb);
+ goto out;
}
+ /*
+ * If we're waiting for records, set the wait_recs
+ * high so that we avoid re-requesting too soon and
+ * end up with multiple data streams.
+ */
+ if (IS_ZERO_LSN(lp->waiting_lsn))
+ lp->wait_recs = rep->max_gap;
+ ret = __rep_loggap_req(dbenv, rep, &lsn, REP_GAP_FORCE);
+ MUTEX_UNLOCK(dbenv, rep->mtx_clientdb);
}
out:
return (ret);
@@ -340,16 +363,13 @@ __rep_logreq(dbenv, rp, rec, eid)
uintptr_t bulkoff;
u_int32_t bulkflags, use_bulk, version;
int ret, t_ret;
-#ifdef DIAGNOSTIC
- DB_MSGBUF mb;
-#endif
ret = 0;
db_rep = dbenv->rep_handle;
rep = db_rep->region;
if (rec != NULL && rec->size != 0) {
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"[%lu][%lu]: LOG_REQ max lsn: [%lu][%lu]",
(u_long) rp->lsn.file, (u_long)rp->lsn.offset,
(u_long)((DB_LSN *)rec->data)->file,
@@ -357,11 +377,11 @@ __rep_logreq(dbenv, rp, rec, eid)
}
/*
* There are three different cases here.
- * 1. We asked log_c_get for a particular LSN and got it.
- * 2. We asked log_c_get for an LSN and it's not found because it is
+ * 1. We asked logc_get for a particular LSN and got it.
+ * 2. We asked logc_get for an LSN and it's not found because it is
* beyond the end of a log file and we need a NEWFILE msg.
* and then the record that was requested.
- * 3. We asked log_c_get for an LSN and it simply doesn't exist, but
+ * 3. We asked logc_get for an LSN and it simply doesn't exist, but
* doesn't meet any of those other criteria, in which case
* it's an error (that should never happen on a master).
*
@@ -373,7 +393,7 @@ __rep_logreq(dbenv, rp, rec, eid)
oldfilelsn = lsn = rp->lsn;
if ((ret = __log_cursor(dbenv, &logc)) != 0)
return (ret);
- ret = __log_c_get(logc, &lsn, &data_dbt, DB_SET);
+ ret = __logc_get(logc, &lsn, &data_dbt, DB_SET);
if (ret == 0) /* Case 1 */
(void)__rep_send_message(dbenv,
@@ -427,7 +447,7 @@ __rep_logreq(dbenv, rp, rec, eid)
while (ret == 0 && rec != NULL && rec->size != 0 &&
repth.type == REP_LOG) {
if ((ret =
- __log_c_get(logc, &repth.lsn, &data_dbt, DB_NEXT)) != 0) {
+ __logc_get(logc, &repth.lsn, &data_dbt, DB_NEXT)) != 0) {
/*
* If we're a client and we only have part of the gap,
* return DB_NOTFOUND so that we send a REREQUEST
@@ -440,7 +460,7 @@ __rep_logreq(dbenv, rp, rec, eid)
if (LOG_COMPARE(&repth.lsn, (DB_LSN *)rec->data) >= 0)
break;
if (repth.lsn.file != oldfilelsn.file) {
- if ((ret = __log_c_version(logc, &version)) != 0)
+ if ((ret = __logc_version(logc, &version)) != 0)
break;
memset(&newfiledbt, 0, sizeof(newfiledbt));
newfiledbt.data = &version;
@@ -457,15 +477,19 @@ __rep_logreq(dbenv, rp, rec, eid)
ret = __rep_bulk_message(dbenv, &bulk, &repth,
&repth.lsn, &data_dbt, REPCTL_RESEND);
if (!use_bulk || ret == DB_REP_BULKOVF)
- ret = __rep_send_throttle(dbenv, eid, &repth, 0);
- if (ret != 0)
+ ret = __rep_send_throttle(dbenv, eid, &repth, 0, 0);
+ if (ret != 0) {
+ /* Ignore send failure, except to break the loop. */
+ if (ret == DB_REP_UNAVAIL)
+ ret = 0;
break;
+ }
/*
* If we are about to change files, then we'll need the
* last LSN in the previous file. Save it here.
*/
oldfilelsn = repth.lsn;
- oldfilelsn.offset += logc->c_len;
+ oldfilelsn.offset += logc->len;
}
/*
@@ -476,7 +500,7 @@ __rep_logreq(dbenv, rp, rec, eid)
REPCTL_RESEND)) != 0 && ret == 0)
ret = t_ret;
err:
- if ((t_ret = __log_c_close(logc)) != 0 && ret == 0)
+ if ((t_ret = __logc_close(logc)) != 0 && ret == 0)
ret = t_ret;
return (ret);
}
@@ -507,9 +531,10 @@ __rep_loggap_req(dbenv, rep, lsnp, gapflags)
dblp = dbenv->lg_handle;
lp = dblp->reginfo.primary;
- LOG_SYSTEM_LOCK(dbenv);
- next_lsn = lp->lsn;
- LOG_SYSTEM_UNLOCK(dbenv);
+ if (FLD_ISSET(gapflags, REP_GAP_FORCE))
+ next_lsn = *lsnp;
+ else
+ next_lsn = lp->ready_lsn;
ctlflags = flags = 0;
type = REP_LOG_REQ;
@@ -529,15 +554,32 @@ __rep_loggap_req(dbenv, rep, lsnp, gapflags)
IS_ZERO_LSN(lp->max_wait_lsn) ||
(lsnp != NULL && LOG_COMPARE(lsnp, &lp->max_wait_lsn) == 0)) {
lp->max_wait_lsn = lp->waiting_lsn;
+ /*
+ * If we are forcing a gap, we need to send a max_wait_lsn
+ * that may be beyond the current gap/waiting_lsn (but
+ * it may not be). If we cannot determine any future
+ * waiting LSN, then it should be zero. If we're in
+ * internal init, it should be our ending LSN.
+ */
+ if (FLD_ISSET(gapflags, REP_GAP_FORCE)) {
+ if (LOG_COMPARE(&lp->max_wait_lsn, lsnp) <= 0) {
+ if (F_ISSET(rep, REP_F_RECOVER_LOG)) {
+ DB_ASSERT(dbenv, LOG_COMPARE(lsnp,
+ &rep->last_lsn) <= 0);
+ lp->max_wait_lsn = rep->last_lsn;
+ } else
+ ZERO_LSN(lp->max_wait_lsn);
+ }
+ }
if (IS_ZERO_LSN(lp->max_wait_lsn))
type = REP_ALL_REQ;
memset(&max_lsn_dbt, 0, sizeof(max_lsn_dbt));
- max_lsn_dbt.data = &lp->waiting_lsn;
- max_lsn_dbt.size = sizeof(lp->waiting_lsn);
+ max_lsn_dbt.data = &lp->max_wait_lsn;
+ max_lsn_dbt.size = sizeof(lp->max_wait_lsn);
max_lsn_dbtp = &max_lsn_dbt;
/*
* Gap requests are "new" and can go anywhere, unless
- * this is already a rerequest.
+ * this is already a re-request.
*/
if (FLD_ISSET(gapflags, REP_GAP_REREQUEST))
flags = DB_REP_REREQUEST;
@@ -547,12 +589,12 @@ __rep_loggap_req(dbenv, rep, lsnp, gapflags)
max_lsn_dbtp = NULL;
lp->max_wait_lsn = next_lsn;
/*
- * If we're dropping to singletons, this is a rerequest.
+ * If we're dropping to singletons, this is a re-request.
*/
flags = DB_REP_REREQUEST;
}
if (rep->master_id != DB_EID_INVALID) {
- rep->stat.st_log_requested++;
+ STAT(rep->stat.st_log_requested++);
if (F_ISSET(rep, REP_F_RECOVER_LOG))
ctlflags = REPCTL_INIT;
(void)__rep_send_message(dbenv, rep->master_id,
@@ -586,6 +628,12 @@ __rep_logready(dbenv, rep, savetime, last_lsnp)
savetime)) == 0) {
REP_SYSTEM_LOCK(dbenv);
ZERO_LSN(rep->first_lsn);
+
+ if (rep->originfo != NULL) {
+ __os_free(dbenv, rep->originfo);
+ rep->originfo = NULL;
+ }
+
F_CLR(rep, REP_F_RECOVER_LOG);
REP_SYSTEM_UNLOCK(dbenv);
} else {
@@ -605,9 +653,9 @@ out: __db_errx(dbenv,
* This function handles these cases:
* [Case 1 was that we found the record we were looking for - it
* is already handled by the caller.]
- * 2. We asked log_c_get for an LSN and it's not found because it is
+ * 2. We asked logc_get for an LSN and it's not found because it is
* beyond the end of a log file and we need a NEWFILE msg.
- * 3. We asked log_c_get for an LSN and it simply doesn't exist, but
+ * 3. We asked logc_get for an LSN and it simply doesn't exist, but
* doesn't meet any of those other criteria, in which case
* we return DB_NOTFOUND and the caller decides if it's an error.
*
@@ -629,9 +677,6 @@ __rep_chk_newfile(dbenv, logc, rep, rp, eid)
LOG *lp;
u_int32_t version;
int ret;
-#ifdef DIAGNOSTIC
- DB_MSGBUF mb;
-#endif
ret = 0;
dblp = dbenv->lg_handle;
@@ -651,11 +696,11 @@ __rep_chk_newfile(dbenv, logc, rep, rp, eid)
*/
endlsn.file = rp->lsn.file + 1;
endlsn.offset = 0;
- if ((ret = __log_c_get(logc,
+ if ((ret = __logc_get(logc,
&endlsn, &data_dbt, DB_SET)) != 0 ||
- (ret = __log_c_get(logc,
+ (ret = __logc_get(logc,
&endlsn, &data_dbt, DB_PREV)) != 0) {
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"Unable to get prev of [%lu][%lu]",
(u_long)rp->lsn.file,
(u_long)rp->lsn.offset));
@@ -684,8 +729,8 @@ __rep_chk_newfile(dbenv, logc, rep, rp, eid)
} else
ret = DB_NOTFOUND;
} else {
- endlsn.offset += logc->c_len;
- if ((ret = __log_c_version(logc,
+ endlsn.offset += logc->len;
+ if ((ret = __logc_version(logc,
&version)) == 0) {
memset(&newfiledbt, 0,
sizeof(newfiledbt));
diff --git a/db/rep/rep_method.c b/db/rep/rep_method.c
index 749123e5f..f319a3342 100644
--- a/db/rep/rep_method.c
+++ b/db/rep/rep_method.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2001-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2001,2007 Oracle. All rights reserved.
*
- * $Id: rep_method.c,v 12.46 2006/09/09 14:19:20 bostic Exp $
+ * $Id: rep_method.c,v 12.91 2007/06/21 16:42:39 alanb Exp $
*/
#include "db_config.h"
@@ -13,6 +12,7 @@
#include "dbinc/db_page.h"
#include "dbinc/btree.h"
#include "dbinc/log.h"
+#include "dbinc/mp.h"
#include "dbinc/txn.h"
static int __rep_abort_prepared __P((DB_ENV *));
@@ -22,13 +22,13 @@ static u_int32_t __rep_conv_vers __P((DB_ENV *, u_int32_t));
static int __rep_restore_prepared __P((DB_ENV *));
/*
- * __rep_dbenv_create --
+ * __rep_env_create --
* Replication-specific initialization of the DB_ENV structure.
*
- * PUBLIC: int __rep_dbenv_create __P((DB_ENV *));
+ * PUBLIC: int __rep_env_create __P((DB_ENV *));
*/
int
-__rep_dbenv_create(dbenv)
+__rep_env_create(dbenv)
DB_ENV *dbenv;
{
DB_REP *db_rep;
@@ -38,11 +38,15 @@ __rep_dbenv_create(dbenv)
return (ret);
db_rep->eid = DB_EID_INVALID;
+ db_rep->bytes = REP_DEFAULT_THROTTLE;
db_rep->request_gap = DB_REP_REQUEST_GAP;
db_rep->max_gap = DB_REP_MAX_GAP;
+ db_rep->elect_timeout = 2 * US_PER_SEC; /* 2 seconds */
+ db_rep->chkpt_delay = 30; /* 30 seconds */
+ db_rep->my_priority = DB_REP_DEFAULT_PRIORITY;
#ifdef HAVE_REPLICATION_THREADS
- if ((ret = __repmgr_dbenv_create(dbenv, db_rep)) != 0) {
+ if ((ret = __repmgr_env_create(dbenv, db_rep)) != 0) {
__os_free(dbenv, db_rep);
return (ret);
}
@@ -53,18 +57,18 @@ __rep_dbenv_create(dbenv)
}
/*
- * __rep_dbenv_destroy --
+ * __rep_env_destroy --
* Replication-specific destruction of the DB_ENV structure.
*
- * PUBLIC: void __rep_dbenv_destroy __P((DB_ENV *));
+ * PUBLIC: void __rep_env_destroy __P((DB_ENV *));
*/
void
-__rep_dbenv_destroy(dbenv)
+__rep_env_destroy(dbenv)
DB_ENV *dbenv;
{
if (dbenv->rep_handle != NULL) {
#ifdef HAVE_REPLICATION_THREADS
- __repmgr_dbenv_destroy(dbenv, dbenv->rep_handle);
+ __repmgr_env_destroy(dbenv, dbenv->rep_handle);
#endif
__os_free(dbenv, dbenv->rep_handle);
dbenv->rep_handle = NULL;
@@ -130,6 +134,7 @@ __rep_set_config(dbenv, which, on)
{
DB_LOG *dblp;
DB_REP *db_rep;
+ DB_THREAD_INFO *ip;
LOG *lp;
REP *rep;
REP_BULK bulk;
@@ -151,6 +156,7 @@ __rep_set_config(dbenv, which, on)
dbenv, db_rep->region, "DB_ENV->rep_set_config", DB_INIT_REP);
mapped = 0;
+ ENV_ENTER(dbenv, ip);
__rep_config_map(dbenv, &which, &mapped);
if (REP_ON(dbenv)) {
rep = db_rep->region;
@@ -199,6 +205,7 @@ __rep_set_config(dbenv, which, on)
else
FLD_CLR(db_rep->config, mapped);
}
+ ENV_LEAVE(dbenv, ip);
return (ret);
}
@@ -238,11 +245,9 @@ __rep_config_map(dbenv, inflagsp, outflagsp)
* the library. Rep_start checks the following:
*
* rep->msg_th - this is the count of threads currently in rep_process_message
- * rep->lockout_th - this is set if a thread is in rep_start or other
- * operation requiring lockout with rep_proc_msg threads.
* rep->handle_cnt - number of threads actively using a dbp in library.
* rep->txn_cnt - number of active txns.
- * REP_F_READY - Replication flag that indicates that we wish to run
+ * REP_F_READY_* - Replication flag that indicates that we wish to run
* recovery, and want to prohibit new transactions from entering and cause
* existing ones to return immediately (with a DB_LOCK_DEADLOCK error).
*
@@ -262,17 +267,19 @@ __rep_start(dbenv, dbt, flags)
DBT *dbt;
u_int32_t flags;
{
+ DB *dbp;
DB_LOG *dblp;
DB_LSN lsn;
DB_REP *db_rep;
+ DB_THREAD_INFO *ip;
+ DB_TXNREGION *region;
LOG *lp;
+ REGINFO *infop;
REP *rep;
- u_int32_t oldvers, pending_event, repflags;
- int announce, init_db, locked, redo_prepared, ret, role_chg;
+ db_timeout_t tmp;
+ u_int32_t oldvers, pending_event, repflags, role;
+ int announce, locked, ret, role_chg;
int t_ret;
-#ifdef DIAGNOSTIC
- DB_MSGBUF mb;
-#endif
PANIC_CHECK(dbenv);
ENV_REQUIRES_CONFIG_XX(
@@ -280,19 +287,19 @@ __rep_start(dbenv, dbt, flags)
db_rep = dbenv->rep_handle;
rep = db_rep->region;
+ infop = dbenv->reginfo;
locked = 0;
+ pending_event = DB_EVENT_NO_SUCH_EVENT;
- if ((ret = __db_fchk(dbenv, "DB_ENV->rep_start", flags,
- DB_REP_CLIENT | DB_REP_MASTER)) != 0)
- return (ret);
+ role = flags & DB_REPFLAGS_MASK;
- /* Exactly one of CLIENT and MASTER must be specified. */
- if ((ret = __db_fcchk(dbenv,
- "DB_ENV->rep_start", flags, DB_REP_CLIENT, DB_REP_MASTER)) != 0)
- return (ret);
- if (!LF_ISSET(DB_REP_CLIENT | DB_REP_MASTER)) {
+ switch (role) {
+ case DB_REP_CLIENT:
+ case DB_REP_MASTER:
+ break;
+ default:
__db_errx(dbenv,
- "DB_ENV->rep_start: replication mode must be specified");
+ "DB_ENV->rep_start: must specify DB_REP_CLIENT or DB_REP_MASTER");
return (EINVAL);
}
@@ -303,14 +310,15 @@ __rep_start(dbenv, dbt, flags)
return (EINVAL);
}
+ ENV_ENTER(dbenv, ip);
+
/*
* In order to correctly check log files for old versions, we
* need to flush the logs.
*/
if ((ret = __log_flush(dbenv, NULL)) != 0)
- return (ret);
+ goto out;
- pending_event = DB_EVENT_NO_SUCH_EVENT;
REP_SYSTEM_LOCK(dbenv);
/*
* We only need one thread to start-up replication, so if
@@ -318,17 +326,18 @@ __rep_start(dbenv, dbt, flags)
* its work and have this thread simply return. Similarly,
* if a thread is in a critical lockout section we return.
*/
- if (rep->lockout_th != 0) {
+ if (F_ISSET(rep, REP_F_READY_MSG)) {
/*
* There is already someone in lockout. Return.
*/
- RPRINT(dbenv, (dbenv, &mb, "Thread already in lockout"));
- goto err;
+ RPRINT(dbenv, (dbenv, "Thread already in lockout"));
+ REP_SYSTEM_UNLOCK(dbenv);
+ goto out;
} else if ((ret = __rep_lockout_msg(dbenv, rep, 0)) != 0)
goto errunlock;
- role_chg = (!F_ISSET(rep, REP_F_MASTER) && LF_ISSET(DB_REP_MASTER)) ||
- (!F_ISSET(rep, REP_F_CLIENT) && LF_ISSET(DB_REP_CLIENT));
+ role_chg = (!F_ISSET(rep, REP_F_MASTER) && role == DB_REP_MASTER) ||
+ (!F_ISSET(rep, REP_F_CLIENT) && role == DB_REP_CLIENT);
/*
* Wait for any active txns or mpool ops to complete, and
@@ -341,7 +350,9 @@ __rep_start(dbenv, dbt, flags)
locked = 1;
}
- if (LF_ISSET(DB_REP_MASTER)) {
+ dblp = dbenv->lg_handle;
+ lp = dblp->reginfo.primary;
+ if (role == DB_REP_MASTER) {
if (role_chg) {
/*
* If we're upgrading from having been a client,
@@ -363,50 +374,77 @@ __rep_start(dbenv, dbt, flags)
if ((ret = __rep_preclose(dbenv)) != 0)
goto errunlock;
- }
-
- redo_prepared = 0;
- if (!F_ISSET(rep, REP_F_MASTER)) {
- /* Master is not yet set. */
- if (role_chg) {
- if (rep->w_gen > rep->recover_gen)
- rep->gen = ++rep->w_gen;
- else if (rep->gen > rep->recover_gen)
- rep->gen++;
- else
- rep->gen = rep->recover_gen + 1;
- /*
- * There could have been any number of failed
- * elections, so jump the gen if we need to now.
- */
- if (rep->egen > rep->gen)
- rep->gen = rep->egen;
- redo_prepared = 1;
- } else if (rep->gen == 0)
- rep->gen = rep->recover_gen + 1;
+ rep->gen++;
+ /*
+ * There could have been any number of failed
+ * elections, so jump the gen if we need to now.
+ */
+ if (rep->egen > rep->gen)
+ rep->gen = rep->egen;
+ if (IS_USING_LEASES(dbenv) &&
+ !F_ISSET(rep, REP_F_MASTERELECT)) {
+ __db_errx(dbenv,
+ "Rep_start: Cannot become master without being elected when using leases.");
+ ret = EINVAL;
+ goto errunlock;
+ }
if (F_ISSET(rep, REP_F_MASTERELECT)) {
__rep_elect_done(dbenv, rep);
F_CLR(rep, REP_F_MASTERELECT);
}
if (rep->egen <= rep->gen)
rep->egen = rep->gen + 1;
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"New master gen %lu, egen %lu",
(u_long)rep->gen, (u_long)rep->egen));
+ if ((ret = __rep_write_gen(dbenv, rep->gen)) != 0)
+ goto errunlock;
+ }
+ /*
+ * Set lease duration assuming clients have slower clock.
+ */
+ if (IS_USING_LEASES(dbenv) &&
+ (role_chg || !F_ISSET(rep, REP_F_START_CALLED))) {
+ /*
+ * If we have already granted our lease, we
+ * cannot become master.
+ */
+ if ((ret = __rep_islease_granted(dbenv))) {
+ __db_errx(dbenv,
+ "Rep_start: Cannot become master with outstanding lease granted.");
+ ret = EINVAL;
+ goto errunlock;
+ }
+ tmp = (db_timeout_t)((double)rep->lease_timeout /
+ ((double)rep->clock_skew / (double) 100));
+ DB_TIMEOUT_TO_TIMESPEC(tmp, &rep->lease_duration);
+ /*
+ * Keep track of last perm LSN on master for
+ * lease refresh.
+ */
+ INIT_LSN(lp->max_perm_lsn);
+ if ((ret = __rep_lease_table_alloc(dbenv,
+ rep->nsites)) != 0)
+ goto errunlock;
}
rep->master_id = rep->eid;
+
/*
* Clear out almost everything, and then set MASTER. Leave
- * READY alone in case we did a lockout above; we'll clear it in
- * a moment (below), once we've written the txn_recycle into the
- * log.
+ * READY_* alone in case we did a lockout above;
+ * we'll clear it in a moment (below), once we've written
+ * the txn_recycle into the log.
*/
- repflags = F_ISSET(rep, REP_F_READY);
- FLD_SET(repflags, REP_F_MASTER);
+ repflags = F_ISSET(rep, REP_F_READY_API | REP_F_READY_MSG |
+ REP_F_READY_OP);
+#ifdef DIAGNOSTIC
+ if (!F_ISSET(rep, REP_F_GROUP_ESTD))
+ RPRINT(dbenv, (dbenv,
+ "Establishing group as master."));
+#endif
+ FLD_SET(repflags, REP_F_MASTER | REP_F_GROUP_ESTD);
rep->flags = repflags;
- dblp = (DB_LOG *)dbenv->lg_handle;
- lp = dblp->reginfo.primary;
/*
* We're master. Set the versions to the current ones.
*/
@@ -417,14 +455,14 @@ __rep_start(dbenv, dbt, flags)
* recovery table since it contains pointers to old
* recovery functions.
*/
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"rep_start: Old log version was %lu", (u_long)oldvers));
if (lp->persist.version != DB_LOGVERSION) {
if ((ret = __env_init_rec(dbenv, DB_LOGVERSION)) != 0)
goto errunlock;
}
rep->version = DB_REPVERSION;
- rep->lockout_th = 0;
+ F_CLR(rep, REP_F_READY_MSG);
REP_SYSTEM_UNLOCK(dbenv);
LOG_SYSTEM_LOCK(dbenv);
lsn = lp->lsn;
@@ -441,54 +479,78 @@ __rep_start(dbenv, dbt, flags)
ret = 0;
if (role_chg) {
pending_event = DB_EVENT_REP_MASTER;
- ret = __dbreg_invalidate_files(dbenv);
- if ((t_ret = __rep_closefiles(dbenv)) != 0 && ret == 0)
+ /*
+ * If prepared transactions have not been restored
+ * look to see if there are any. If there are,
+ * then mark the open files, otherwise close them.
+ */
+ region = dbenv->tx_handle->reginfo.primary;
+ if (region->stat.st_nrestores == 0 &&
+ (t_ret = __rep_restore_prepared(dbenv)) != 0 &&
+ ret == 0)
ret = t_ret;
- if ((t_ret = __txn_reset(dbenv)) != 0 && ret == 0)
+ if (region->stat.st_nrestores != 0) {
+ if ((t_ret = __dbreg_mark_restored(dbenv)) != 0 &&
+ ret == 0)
+ ret = t_ret;
+ } else {
+ ret = __dbreg_invalidate_files(dbenv, 0);
+ if ((t_ret = __rep_closefiles(
+ dbenv, 0)) != 0 && ret == 0)
+ ret = t_ret;
+ }
+ if ((t_ret = __txn_recycle_id(dbenv)) != 0 && ret == 0)
ret = t_ret;
DB_ENV_TEST_RECYCLE(dbenv, ret);
REP_SYSTEM_LOCK(dbenv);
- F_CLR(rep, REP_F_READY);
- rep->in_recovery = 0;
+ F_CLR(rep, REP_F_READY_API | REP_F_READY_OP);
locked = 0;
REP_SYSTEM_UNLOCK(dbenv);
+ (void)__memp_set_config(
+ dbenv, DB_MEMP_SYNC_INTERRUPT, 0);
}
- /*
- * Take a transaction checkpoint so that our new generation
- * number get written to the log.
- */
- if ((t_ret = __txn_checkpoint(dbenv, 0, 0, DB_FORCE)) != 0 &&
- ret == 0)
- ret = t_ret;
- if (redo_prepared &&
- (t_ret = __rep_restore_prepared(dbenv)) != 0 && ret == 0)
- ret = t_ret;
} else {
- init_db = 0;
announce = role_chg || rep->master_id == DB_EID_INVALID;
- /*
- * If we're changing roles we need to init the db.
- */
- if (role_chg) {
+ if (role_chg)
rep->master_id = DB_EID_INVALID;
- init_db = 1;
- }
/* Zero out everything except recovery and tally flags. */
- repflags = F_ISSET(rep, REP_F_NOARCHIVE |
+ repflags = F_ISSET(rep, REP_F_NOARCHIVE | REP_F_READY_MSG |
REP_F_RECOVER_MASK | REP_F_TALLY);
FLD_SET(repflags, REP_F_CLIENT);
- if ((ret = __log_get_oldversion(dbenv, &oldvers)) != 0)
- goto errunlock;
- RPRINT(dbenv, (dbenv, &mb,
- "rep_start: Found old version log %d", oldvers));
- if (oldvers >= DB_LOGVERSION_42) {
- __log_set_version(dbenv, oldvers);
- oldvers = __rep_conv_vers(dbenv, oldvers);
- DB_ASSERT(dbenv, oldvers != DB_REPVERSION_INVALID);
- rep->version = oldvers;
+ if (role_chg) {
+ if ((ret = __log_get_oldversion(dbenv, &oldvers)) != 0)
+ goto errunlock;
+ RPRINT(dbenv, (dbenv,
+ "rep_start: Found old version log %d", oldvers));
+ if (oldvers >= DB_LOGVERSION_42) {
+ __log_set_version(dbenv, oldvers);
+ oldvers = __rep_conv_vers(dbenv, oldvers);
+ DB_ASSERT(
+ dbenv, oldvers != DB_REPVERSION_INVALID);
+ rep->version = oldvers;
+ }
}
rep->flags = repflags;
+ /*
+ * On a client, compute the lease duration on the
+ * assumption that the client has a fast clock.
+ * Expire any existing leases we might have held as
+ * a master.
+ */
+ if (IS_USING_LEASES(dbenv) &&
+ (role_chg || !F_ISSET(rep, REP_F_START_CALLED))) {
+ if ((ret = __rep_lease_expire(dbenv, 1)) != 0)
+ goto errunlock;
+ tmp = (db_timeout_t)((double)rep->lease_timeout *
+ ((double)rep->clock_skew / (double) 100));
+ DB_TIMEOUT_TO_TIMESPEC(tmp, &rep->lease_duration);
+ if (rep->lease_off != INVALID_ROFF) {
+ __env_alloc_free(infop,
+ R_ADDR(infop, rep->lease_off));
+ rep->lease_off = INVALID_ROFF;
+ }
+ }
REP_SYSTEM_UNLOCK(dbenv);
/*
@@ -502,18 +564,29 @@ __rep_start(dbenv, dbt, flags)
if ((ret = __rep_abort_prepared(dbenv)) != 0)
goto errlock;
- MUTEX_LOCK(dbenv, rep->mtx_clientdb);
- ret = __rep_client_dbinit(dbenv, init_db, REP_DB);
- MUTEX_UNLOCK(dbenv, rep->mtx_clientdb);
- if (ret != 0)
- goto errlock;
- if (role_chg)
+ /*
+ * If we're changing roles we need to init the db.
+ */
+ if (role_chg) {
+ if ((ret = db_create(&dbp, dbenv, 0)) != 0)
+ goto errlock;
+ /*
+ * Ignore errors, because if the file doesn't exist,
+ * this is perfectly OK.
+ */
+ MUTEX_LOCK(dbenv, rep->mtx_clientdb);
+ (void)__db_remove(dbp, NULL, REPDBNAME,
+ NULL, DB_FORCE);
+ MUTEX_UNLOCK(dbenv, rep->mtx_clientdb);
+ /*
+ * Set pending_event after calls that can fail.
+ */
pending_event = DB_EVENT_REP_CLIENT;
+ }
REP_SYSTEM_LOCK(dbenv);
- rep->lockout_th = 0;
+ F_CLR(rep, REP_F_READY_MSG);
if (locked) {
- F_CLR(rep, REP_F_READY);
- rep->in_recovery = 0;
+ F_CLR(rep, REP_F_READY_API | REP_F_READY_OP);
locked = 0;
}
REP_SYSTEM_UNLOCK(dbenv);
@@ -526,10 +599,24 @@ __rep_start(dbenv, dbt, flags)
* will allow the client to either perform recovery or
* simply join in.
*/
- if (announce)
+ if (announce) {
+ /*
+ * If we think we're a new client, and we have a
+ * private env, set our gen number down to 0.
+ * Otherwise, we can restart and think
+ * we're ready to accept a new record (because our
+ * gen is okay), but really this client needs to
+ * sync with the master. So, if we are announcing
+ * ourselves force ourselves to find the master
+ * and sync up.
+ */
+ if (F_ISSET(dbenv, DB_ENV_PRIVATE))
+ rep->gen = 0;
+ if ((ret = __dbt_usercopy(dbenv, dbt)) != 0)
+ goto out;
(void)__rep_send_message(dbenv,
DB_EID_BROADCAST, REP_NEWCLIENT, NULL, dbt, 0, 0);
- else
+ } else
(void)__rep_send_message(dbenv,
DB_EID_BROADCAST, REP_ALIVE_REQ, NULL, NULL, 0, 0);
}
@@ -537,22 +624,28 @@ __rep_start(dbenv, dbt, flags)
if (0) {
/*
* We have separate labels for errors. If we're returning an
- * error before we've set lockout_th, we use 'err'. If
+ * error before we've set REP_F_READY_MSG, we use 'err'. If
* we are erroring while holding the region mutex, then we use
- * 'errunlock' label. If we're erroring without holding the rep
+ * 'errunlock' label. If we error without holding the rep
* mutex we must use 'errlock'.
*/
DB_TEST_RECOVERY_LABEL
errlock: REP_SYSTEM_LOCK(dbenv);
-errunlock: rep->lockout_th = 0;
- if (locked) {
- F_CLR(rep, REP_F_READY);
- rep->in_recovery = 0;
- }
-err: REP_SYSTEM_UNLOCK(dbenv);
+errunlock: F_CLR(rep, REP_F_READY_MSG);
+ if (locked)
+ F_CLR(rep, REP_F_READY_API | REP_F_READY_OP);
+ REP_SYSTEM_UNLOCK(dbenv);
+ }
+out:
+ if (ret == 0) {
+ REP_SYSTEM_LOCK(dbenv);
+ F_SET(rep, REP_F_START_CALLED);
+ REP_SYSTEM_UNLOCK(dbenv);
}
if (pending_event != DB_EVENT_NO_SUCH_EVENT)
- DB_EVENT(dbenv, pending_event, NULL);
+ __rep_fire_event(dbenv, pending_event, NULL);
+ __dbt_userfree(dbenv, dbt, NULL, NULL);
+ ENV_LEAVE(dbenv, ip);
return (ret);
}
@@ -614,11 +707,11 @@ __rep_client_dbinit(dbenv, startup, which)
(ret = __bam_set_bt_compare(dbp, __rep_bt_cmp)) != 0)
goto err;
- /* Allow writes to this database on a client. */
- F_SET(dbp, DB_AM_CL_WRITER);
+ /* Don't write log records on the client. */
+ if ((ret = __db_set_flags(dbp, DB_TXN_NOT_DURABLE)) != 0)
+ goto err;
- flags = DB_NO_AUTO_COMMIT |
- (startup ? DB_CREATE : 0) |
+ flags = DB_NO_AUTO_COMMIT | DB_CREATE |
(F_ISSET(dbenv, DB_ENV_THREAD) ? DB_THREAD : 0);
if ((ret = __db_open(dbp, NULL, name, NULL,
@@ -626,7 +719,7 @@ __rep_client_dbinit(dbenv, startup, which)
flags, 0, PGNO_BASE_MD)) != 0)
goto err;
- *rdbpp= dbp;
+ *rdbpp = dbp;
if (0) {
err: if (dbp != NULL &&
@@ -690,36 +783,38 @@ __rep_abort_prepared(dbenv)
DB_ENV *dbenv;
{
#define PREPLISTSIZE 50
+ DB_LOG *dblp;
DB_PREPLIST prep[PREPLISTSIZE], *p;
DB_TXNMGR *mgr;
DB_TXNREGION *region;
- int do_aborts, ret;
+ LOG *lp;
+ int ret;
long count, i;
u_int32_t op;
mgr = dbenv->tx_handle;
region = mgr->reginfo.primary;
+ dblp = dbenv->lg_handle;
+ lp = dblp->reginfo.primary;
- do_aborts = 0;
- TXN_SYSTEM_LOCK(dbenv);
- if (region->stat.st_nrestores != 0)
- do_aborts = 1;
- TXN_SYSTEM_UNLOCK(dbenv);
-
- if (do_aborts) {
- op = DB_FIRST;
- do {
- if ((ret = __txn_recover(dbenv,
- prep, PREPLISTSIZE, &count, op)) != 0)
+ if (region->stat.st_nrestores == 0)
+ return (0);
+
+ op = DB_FIRST;
+ do {
+ if ((ret = __txn_recover(dbenv,
+ prep, PREPLISTSIZE, &count, op)) != 0)
+ return (ret);
+ for (i = 0; i < count; i++) {
+ p = &prep[i];
+ if ((ret = __txn_abort(p->txn)) != 0)
return (ret);
- for (i = 0; i < count; i++) {
- p = &prep[i];
- if ((ret = __txn_abort(p->txn)) != 0)
- return (ret);
- }
- op = DB_NEXT;
- } while (count == PREPLISTSIZE);
- }
+ dbenv->rep_handle->region->op_cnt--;
+ dbenv->rep_handle->region->max_prep_lsn = lp->lsn;
+ region->stat.st_nrestores--;
+ }
+ op = DB_NEXT;
+ } while (count == PREPLISTSIZE);
return (0);
}
@@ -754,6 +849,10 @@ __rep_restore_prepared(dbenv)
db_rep = dbenv->rep_handle;
rep = db_rep->region;
+ if (IS_ZERO_LSN(rep->max_prep_lsn)) {
+ RPRINT(dbenv, (dbenv, "restore_prep: No prepares. Skip."));
+ return (0);
+ }
txninfo = NULL;
ckp_args = NULL;
ckp42_args = NULL;
@@ -767,6 +866,25 @@ __rep_restore_prepared(dbenv)
return (ret);
/*
+ * Get our first LSN to see if the prepared LSN is still
+ * available. If so, it might be unresolved. If not,
+ * then it is guaranteed to be resolved.
+ */
+ memset(&rec, 0, sizeof(DBT));
+ if ((ret = __logc_get(logc, &lsn, &rec, DB_FIRST)) != 0) {
+ __db_errx(dbenv, "First record not found");
+ goto err;
+ }
+ /*
+ * If the max_prep_lsn is no longer available, we're sure
+ * that txn has been resolved. We're done.
+ */
+ if (rep->max_prep_lsn.file < lsn.file) {
+ RPRINT(dbenv, (dbenv, "restore_prep: Prepare resolved. Skip"));
+ ZERO_LSN(rep->max_prep_lsn);
+ goto done;
+ }
+ /*
* We need to consider the set of records between the most recent
* checkpoint LSN and the end of the log; any txn in that
* range, and only txns in that range, could still have been
@@ -777,9 +895,8 @@ __rep_restore_prepared(dbenv)
* If there is no checkpoint in the log, start off by getting
* the very first record in the log instead.
*/
- memset(&rec, 0, sizeof(DBT));
if ((ret = __txn_getckp(dbenv, &lsn)) == 0) {
- if ((ret = __log_c_get(logc, &lsn, &rec, DB_SET)) != 0) {
+ if ((ret = __logc_get(logc, &lsn, &rec, DB_SET)) != 0) {
__db_errx(dbenv,
"Checkpoint record at LSN [%lu][%lu] not found",
(u_long)lsn.file, (u_long)lsn.offset);
@@ -806,13 +923,13 @@ __rep_restore_prepared(dbenv)
goto err;
}
- if ((ret = __log_c_get(logc, &ckp_lsn, &rec, DB_SET)) != 0) {
+ if ((ret = __logc_get(logc, &ckp_lsn, &rec, DB_SET)) != 0) {
__db_errx(dbenv,
"Checkpoint LSN record [%lu][%lu] not found",
(u_long)ckp_lsn.file, (u_long)ckp_lsn.offset);
goto err;
}
- } else if ((ret = __log_c_get(logc, &lsn, &rec, DB_FIRST)) != 0) {
+ } else if ((ret = __logc_get(logc, &lsn, &rec, DB_FIRST)) != 0) {
if (ret == DB_NOTFOUND) {
/* An empty log means no PBNYC txns. */
ret = 0;
@@ -835,7 +952,7 @@ __rep_restore_prepared(dbenv)
(u_int8_t *)rec.data + sizeof(u_int32_t), sizeof(low_txn));
if (low_txn != 0)
break;
- } while ((ret = __log_c_get(logc, &lsn, &rec, DB_NEXT)) == 0);
+ } while ((ret = __logc_get(logc, &lsn, &rec, DB_NEXT)) == 0);
/* If there are no txns, there are no PBNYC txns. */
if (ret == DB_NOTFOUND) {
@@ -845,7 +962,7 @@ __rep_restore_prepared(dbenv)
goto err;
/* Now, the high txnid. */
- if ((ret = __log_c_get(logc, &lsn, &rec, DB_LAST)) != 0) {
+ if ((ret = __logc_get(logc, &lsn, &rec, DB_LAST)) != 0) {
/*
* Note that DB_NOTFOUND is unacceptable here because we
* had to have looked at some log record to get this far.
@@ -859,7 +976,7 @@ __rep_restore_prepared(dbenv)
(u_int8_t *)rec.data + sizeof(u_int32_t), sizeof(hi_txn));
if (hi_txn != 0)
break;
- } while ((ret = __log_c_get(logc, &lsn, &rec, DB_PREV)) == 0);
+ } while ((ret = __logc_get(logc, &lsn, &rec, DB_PREV)) == 0);
if (ret == DB_NOTFOUND) {
ret = 0;
goto done;
@@ -881,9 +998,10 @@ __rep_restore_prepared(dbenv)
* Since all PBNYC txns still held locks on the old master and
* were isolated, this should be safe.
*/
- for (ret = __log_c_get(logc, &lsn, &rec, DB_LAST);
+ F_SET(dbenv->lg_handle, DBLOG_RECOVER);
+ for (ret = __logc_get(logc, &lsn, &rec, DB_LAST);
ret == 0 && LOG_COMPARE(&lsn, &ckp_lsn) > 0;
- ret = __log_c_get(logc, &lsn, &rec, DB_PREV)) {
+ ret = __logc_get(logc, &lsn, &rec, DB_PREV)) {
memcpy(&rectype, rec.data, sizeof(rectype));
switch (rectype) {
case DB___txn_regop:
@@ -933,9 +1051,19 @@ __rep_restore_prepared(dbenv)
prep_args->txnp->txnid,
prep_args->opcode, &lsn);
else if ((ret =
- __rep_process_txn(dbenv, &rec)) == 0)
+ __rep_process_txn(dbenv, &rec)) == 0) {
+ /*
+ * We are guaranteed to be single
+ * threaded here. We need to
+ * account for this newly
+ * instantiated txn in the op_cnt
+ * so that it is counted when it is
+ * resolved.
+ */
+ rep->op_cnt++;
ret = __txn_restore_txn(dbenv,
&lsn, prep_args);
+ }
} else if (ret != 0)
goto err;
__os_free(dbenv, prep_args);
@@ -950,7 +1078,8 @@ __rep_restore_prepared(dbenv)
ret = 0;
done:
-err: t_ret = __log_c_close(logc);
+err: t_ret = __logc_close(logc);
+ F_CLR(dbenv->lg_handle, DBLOG_RECOVER);
if (txninfo != NULL)
__db_txnlist_end(dbenv, txninfo);
@@ -1008,6 +1137,7 @@ __rep_set_limit(dbenv, gbytes, bytes)
u_int32_t gbytes, bytes;
{
DB_REP *db_rep;
+ DB_THREAD_INFO *ip;
REP *rep;
db_rep = dbenv->rep_handle;
@@ -1021,10 +1151,12 @@ __rep_set_limit(dbenv, gbytes, bytes)
if (REP_ON(dbenv)) {
rep = db_rep->region;
+ ENV_ENTER(dbenv, ip);
REP_SYSTEM_LOCK(dbenv);
rep->gbytes = gbytes;
rep->bytes = bytes;
REP_SYSTEM_UNLOCK(dbenv);
+ ENV_LEAVE(dbenv, ip);
} else {
db_rep->gbytes = gbytes;
db_rep->bytes = bytes;
@@ -1052,10 +1184,16 @@ __rep_set_nsites(dbenv, n)
db_rep = dbenv->rep_handle;
- /* TODO: ENV_REQUIRES_CONFIG(... ) and/or ENV_NOT_CONFIGURED (?) */
+ ENV_NOT_CONFIGURED(
+ dbenv, db_rep->region, "DB_ENV->rep_set_nsites", DB_INIT_REP);
if (REP_ON(dbenv)) {
rep = db_rep->region;
+ if (rep != NULL && F_ISSET(rep, REP_F_START_CALLED)) {
+ __db_errx(dbenv,
+ "DB_ENV->rep_set_nsites: must be called before DB_ENV->rep_start");
+ return (EINVAL);
+ }
rep->config_nsites = n;
} else
db_rep->config_nsites = n;
@@ -1148,12 +1286,30 @@ __rep_set_timeout(dbenv, which, timeout)
ret = 0;
switch (which) {
+ case DB_REP_CHECKPOINT_DELAY:
+ if (REP_ON(dbenv))
+ rep->chkpt_delay = timeout;
+ else
+ db_rep->chkpt_delay = timeout;
+ break;
case DB_REP_ELECTION_TIMEOUT:
if (REP_ON(dbenv))
rep->elect_timeout = timeout;
else
db_rep->elect_timeout = timeout;
break;
+ case DB_REP_FULL_ELECTION_TIMEOUT:
+ if (REP_ON(dbenv))
+ rep->full_elect_timeout = timeout;
+ else
+ db_rep->full_elect_timeout = timeout;
+ break;
+ case DB_REP_LEASE_TIMEOUT:
+ if (REP_ON(dbenv))
+ rep->lease_timeout = timeout;
+ else
+ db_rep->lease_timeout = timeout;
+ break;
#ifdef HAVE_REPLICATION_THREADS
case DB_REP_ACK_TIMEOUT:
db_rep->ack_timeout = timeout;
@@ -1185,18 +1341,26 @@ __rep_get_timeout(dbenv, which, timeout)
{
DB_REP *db_rep;
REP *rep;
- int ret;
db_rep = dbenv->rep_handle;
rep = db_rep->region;
- ret = 0;
switch (which) {
+ case DB_REP_CHECKPOINT_DELAY:
+ *timeout = REP_ON(dbenv) ?
+ rep->chkpt_delay : db_rep->chkpt_delay;
+ break;
case DB_REP_ELECTION_TIMEOUT:
- if (REP_ON(dbenv))
- *timeout = rep->elect_timeout;
- else
- *timeout = db_rep->elect_timeout;
+ *timeout = REP_ON(dbenv) ?
+ rep->elect_timeout : db_rep->elect_timeout;
+ break;
+ case DB_REP_FULL_ELECTION_TIMEOUT:
+ *timeout = REP_ON(dbenv) ?
+ rep->full_elect_timeout : db_rep->full_elect_timeout;
+ break;
+ case DB_REP_LEASE_TIMEOUT:
+ *timeout = REP_ON(dbenv) ?
+ rep->lease_timeout : db_rep->lease_timeout;
break;
#ifdef HAVE_REPLICATION_THREADS
case DB_REP_ACK_TIMEOUT:
@@ -1211,11 +1375,11 @@ __rep_get_timeout(dbenv, which, timeout)
#endif
default:
__db_errx(dbenv,
- "Unknown timeout type argument to DB_ENV->rep_get_timeout");
- ret = EINVAL;
+ "unknown timeout type argument to DB_ENV->rep_get_timeout");
+ return (EINVAL);
}
- return (ret);
+ return (0);
}
/*
@@ -1223,9 +1387,6 @@ __rep_get_timeout(dbenv, which, timeout)
* Get the minimum and maximum number of log records that we wait
* before retransmitting.
*
- * !!!
- * UNDOCUMENTED.
- *
* PUBLIC: int __rep_get_request __P((DB_ENV *, u_int32_t *, u_int32_t *));
*/
int
@@ -1266,9 +1427,6 @@ __rep_get_request(dbenv, minp, maxp)
* Set the minimum and maximum number of log records that we wait
* before retransmitting.
*
- * !!!
- * UNDOCUMENTED.
- *
* PUBLIC: int __rep_set_request __P((DB_ENV *, u_int32_t, u_int32_t));
*/
int
@@ -1326,6 +1484,7 @@ __rep_set_transport(dbenv, eid, f_send)
int, u_int32_t));
{
DB_REP *db_rep;
+ DB_THREAD_INFO *ip;
REP *rep;
if (f_send == NULL) {
@@ -1345,15 +1504,57 @@ __rep_set_transport(dbenv, eid, f_send)
if (REP_ON(dbenv)) {
rep = db_rep->region;
+ ENV_ENTER(dbenv, ip);
REP_SYSTEM_LOCK(dbenv);
rep->eid = eid;
REP_SYSTEM_UNLOCK(dbenv);
+ ENV_LEAVE(dbenv, ip);
} else
db_rep->eid = eid;
return (0);
}
/*
+ * PUBLIC: int __rep_set_lease __P((DB_ENV *, u_int32_t, u_int32_t));
+ */
+int
+__rep_set_lease(dbenv, clock_scale_factor, flags)
+ DB_ENV *dbenv;
+ u_int32_t clock_scale_factor, flags;
+{
+ DB_REP *db_rep;
+ REP *rep;
+ u_int32_t clock_scale_normal;
+ int ret;
+
+ PANIC_CHECK(dbenv);
+ COMPQUIET(flags, 0);
+ db_rep = dbenv->rep_handle;
+ ENV_NOT_CONFIGURED(
+ dbenv, db_rep->region, "DB_ENV->rep_set_lease", DB_INIT_REP);
+
+ ret = 0;
+ clock_scale_normal = clock_scale_factor + 100;
+ if (REP_ON(dbenv)) {
+ rep = db_rep->region;
+ if (F_ISSET(rep, REP_F_START_CALLED)) {
+ __db_errx(dbenv,
+ "DB_ENV->rep_set_lease: must be called before DB_ENV->rep_start");
+ return (EINVAL);
+ }
+
+ REP_SYSTEM_LOCK(dbenv);
+ FLD_SET(rep->config, REP_C_LEASE);
+ rep->clock_skew = clock_scale_normal;
+ REP_SYSTEM_UNLOCK(dbenv);
+ } else {
+ FLD_SET(db_rep->config, REP_C_LEASE);
+ db_rep->clock_skew = clock_scale_normal;
+ }
+ return (ret);
+}
+
+/*
* __rep_flush --
* Re-push the last log record to all clients, in case they've lost
* messages and don't know it.
@@ -1367,11 +1568,13 @@ __rep_flush(dbenv)
DBT rec;
DB_LOGC *logc;
DB_LSN lsn;
+ DB_THREAD_INFO *ip;
int ret, t_ret;
PANIC_CHECK(dbenv);
ENV_REQUIRES_CONFIG_XX(
dbenv, rep_handle, "DB_ENV->rep_flush", DB_INIT_REP);
+ ENV_ENTER(dbenv, ip);
if ((ret = __log_cursor(dbenv, &logc)) != 0)
return (ret);
@@ -1379,14 +1582,15 @@ __rep_flush(dbenv)
memset(&rec, 0, sizeof(rec));
memset(&lsn, 0, sizeof(lsn));
- if ((ret = __log_c_get(logc, &lsn, &rec, DB_LAST)) != 0)
+ if ((ret = __logc_get(logc, &lsn, &rec, DB_LAST)) != 0)
goto err;
(void)__rep_send_message(dbenv,
DB_EID_BROADCAST, REP_LOG, &lsn, &rec, 0, 0);
-err: if ((t_ret = __log_c_close(logc)) != 0 && ret == 0)
+err: if ((t_ret = __logc_close(logc)) != 0 && ret == 0)
ret = t_ret;
+ ENV_LEAVE(dbenv, ip);
return (ret);
}
@@ -1405,10 +1609,11 @@ __rep_sync(dbenv, flags)
DB_LOG *dblp;
DB_LSN lsn;
DB_REP *db_rep;
+ DB_THREAD_INFO *ip;
LOG *lp;
REP *rep;
- int master;
- u_int32_t type;
+ int master, ret;
+ u_int32_t repflags, type;
COMPQUIET(flags, 0);
@@ -1421,6 +1626,9 @@ __rep_sync(dbenv, flags)
db_rep = dbenv->rep_handle;
rep = db_rep->region;
+ ENV_ENTER(dbenv, ip);
+ ret = 0;
+
/*
* Simple cases. If we're not in the DELAY state we have nothing
* to do. If we don't know who the master is, send a MASTER_REQ.
@@ -1434,7 +1642,7 @@ __rep_sync(dbenv, flags)
REP_SYSTEM_UNLOCK(dbenv);
(void)__rep_send_message(dbenv, DB_EID_BROADCAST,
REP_MASTER_REQ, NULL, NULL, 0, 0);
- return (0);
+ goto out;
}
/*
* We want to hold the rep mutex to test and then clear the
@@ -1443,29 +1651,44 @@ __rep_sync(dbenv, flags)
*/
if (!F_ISSET(rep, REP_F_DELAY)) {
REP_SYSTEM_UNLOCK(dbenv);
- return (0);
+ goto out;
}
+ DB_ASSERT(dbenv,
+ !IS_USING_LEASES(dbenv) || __rep_islease_granted(dbenv) == 0);
+
/*
* If we get here, we clear the delay flag and kick off a
* synchronization. From this point forward, we will
* synchronize until the next time the master changes.
*/
F_CLR(rep, REP_F_DELAY);
+ if (IS_ZERO_LSN(lsn) && FLD_ISSET(rep->config, REP_C_NOAUTOINIT)) {
+ F_CLR(rep, REP_F_NOARCHIVE | REP_F_RECOVER_MASK);
+ ret = DB_REP_JOIN_FAILURE;
+ REP_SYSTEM_UNLOCK(dbenv);
+ goto out;
+ }
REP_SYSTEM_UNLOCK(dbenv);
/*
- * When we set REP_F_DELAY, we set verify_lsn to the real verify
- * lsn if we need to verify, or we zeroed it out if this is a client
- * that needs to sync up from the beginning. So, send the type
- * of message now that __rep_new_master delayed sending.
+ * When we set REP_F_DELAY, we set verify_lsn to the real verify lsn if
+ * we need to verify, or we zeroed it out if this is a client that needs
+ * internal init. So, send the type of message now that
+ * __rep_new_master delayed sending.
*/
- if (IS_ZERO_LSN(lsn))
- type = REP_ALL_REQ;
- else
+ if (IS_ZERO_LSN(lsn)) {
+ DB_ASSERT(dbenv, F_ISSET(rep, REP_F_RECOVER_UPDATE));
+ type = REP_UPDATE_REQ;
+ repflags = 0;
+ } else {
+ DB_ASSERT(dbenv, F_ISSET(rep, REP_F_RECOVER_VERIFY));
type = REP_VERIFY_REQ;
- (void)__rep_send_message(dbenv, master, type, &lsn, NULL, 0,
- DB_REP_ANYWHERE);
- return (0);
+ repflags = DB_REP_ANYWHERE;
+ }
+ (void)__rep_send_message(dbenv, master, type, &lsn, NULL, 0, repflags);
+
+out: ENV_LEAVE(dbenv, ip);
+ return (ret);
}
/*
@@ -1479,6 +1702,11 @@ __rep_conv_vers(dbenv, log_ver)
u_int32_t log_ver;
{
COMPQUIET(dbenv, NULL);
+
+ /*
+ * We can't use a switch statement, some of the DB_LOGVERSION_XX
+ * constants are the same
+ */
if (log_ver == DB_LOGVERSION_42)
return (DB_REPVERSION_42);
if (log_ver == DB_LOGVERSION_43)
@@ -1487,5 +1715,7 @@ __rep_conv_vers(dbenv, log_ver)
return (DB_REPVERSION_44);
if (log_ver == DB_LOGVERSION_45)
return (DB_REPVERSION_45);
+ if (log_ver == DB_LOGVERSION_46)
+ return (DB_REPVERSION_46);
return (DB_REPVERSION_INVALID);
}
diff --git a/db/rep/rep_record.c b/db/rep/rep_record.c
index e50203407..345fa2a75 100644
--- a/db/rep/rep_record.c
+++ b/db/rep/rep_record.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2001-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2001,2007 Oracle. All rights reserved.
*
- * $Id: rep_record.c,v 12.51 2006/09/11 19:41:20 sue Exp $
+ * $Id: rep_record.c,v 12.108 2007/07/10 15:40:16 bostic Exp $
*/
#include "db_config.h"
@@ -19,13 +18,14 @@
static int __rep_collect_txn __P((DB_ENV *, DB_LSN *, LSN_COLLECTION *));
static int __rep_do_ckp __P((DB_ENV *, DBT *, REP_CONTROL *));
+static int __rep_fire_newmaster __P((DB_ENV *, u_int32_t, int));
+static int __rep_fire_startupdone __P((DB_ENV *, u_int32_t, int));
static int __rep_getnext __P((DB_ENV *));
static int __rep_lsn_cmp __P((const void *, const void *));
-static int __rep_newfile __P((DB_ENV *, REP_CONTROL *, DBT *, DB_LSN *));
-static int __rep_process_rec __P((DB_ENV *,
- REP_CONTROL *, DBT *, u_int32_t *, DB_LSN *));
+static int __rep_newfile __P((DB_ENV *, REP_CONTROL *, DBT *));
+static int __rep_process_rec __P((DB_ENV *, REP_CONTROL *,
+ DBT *, db_timespec *, DB_LSN *));
static int __rep_remfirst __P((DB_ENV *, DBT *, DBT *));
-static int __rep_resend_req __P((DB_ENV *, int));
static int __rep_skip_msg __P((DB_ENV *, REP *, int, u_int32_t));
/* Used to consistently designate which messages ought to be received where. */
@@ -33,9 +33,9 @@ static int __rep_skip_msg __P((DB_ENV *, REP *, int, u_int32_t));
#define MASTER_ONLY(rep, rp) do { \
if (!F_ISSET(rep, REP_F_MASTER)) { \
RPRINT(dbenv, \
- (dbenv, &mb, "Master record received on client")); \
+ (dbenv, "Master record received on client")); \
REP_PRINT_MESSAGE(dbenv, \
- *eidp, rp, "rep_process_message", 0); \
+ eid, rp, "rep_process_message", 0); \
ret = EINVAL; \
goto errlock; \
} \
@@ -44,11 +44,23 @@ static int __rep_skip_msg __P((DB_ENV *, REP *, int, u_int32_t));
#define CLIENT_ONLY(rep, rp) do { \
if (!F_ISSET(rep, REP_F_CLIENT)) { \
RPRINT(dbenv, \
- (dbenv, &mb, "Client record received on master")); \
- REP_PRINT_MESSAGE(dbenv, \
- *eidp, rp, "rep_process_message", 0); \
- (void)__rep_send_message(dbenv, \
- DB_EID_BROADCAST, REP_DUPMASTER, NULL, NULL, 0, 0); \
+ (dbenv, "Client record received on master")); \
+ /* \
+ * Only broadcast DUPMASTER if leases are not \
+ * in effect. If I am an old master, using \
+ * leases and I get a newer message, my leases \
+ * had better all be expired. \
+ */ \
+ if (IS_USING_LEASES(dbenv)) \
+ DB_ASSERT(dbenv, \
+ __rep_lease_check(dbenv, 0) == \
+ DB_REP_LEASE_EXPIRED); \
+ else { \
+ REP_PRINT_MESSAGE(dbenv, \
+ eid, rp, "rep_process_message", 0); \
+ (void)__rep_send_message(dbenv, DB_EID_BROADCAST, \
+ REP_DUPMASTER, NULL, NULL, 0, 0); \
+ } \
ret = DB_REP_DUPMASTER; \
goto errlock; \
} \
@@ -61,10 +73,10 @@ static int __rep_skip_msg __P((DB_ENV *, REP *, int, u_int32_t));
*/
#define CLIENT_REREQ do { \
if (F_ISSET(rep, REP_F_CLIENT)) { \
- rep->stat.st_client_svc_req++; \
+ STAT(rep->stat.st_client_svc_req++); \
if (ret == DB_NOTFOUND) { \
- rep->stat.st_client_svc_miss++; \
- ret = __rep_skip_msg(dbenv, rep, *eidp, rp->rectype);\
+ STAT(rep->stat.st_client_svc_miss++); \
+ ret = __rep_skip_msg(dbenv, rep, eid, rp->rectype);\
} \
} \
} while (0)
@@ -77,10 +89,10 @@ static int __rep_skip_msg __P((DB_ENV *, REP *, int, u_int32_t));
} while (0)
#define RECOVERING_SKIP do { \
- if (recovering) { \
+ if (IS_REP_CLIENT(dbenv) && recovering) { \
/* Not holding region mutex, may miscount */ \
- rep->stat.st_msgs_recover++; \
- ret = __rep_skip_msg(dbenv, rep, *eidp, rp->rectype); \
+ STAT(rep->stat.st_msgs_recover++); \
+ ret = __rep_skip_msg(dbenv, rep, eid, rp->rectype); \
goto errlock; \
} \
} while (0)
@@ -94,12 +106,13 @@ static int __rep_skip_msg __P((DB_ENV *, REP *, int, u_int32_t));
*/
#define RECOVERING_LOG_SKIP do { \
if (F_ISSET(rep, REP_F_DELAY) || \
+ rep->master_id == DB_EID_INVALID || \
(recovering && \
(!F_ISSET(rep, REP_F_RECOVER_LOG) || \
LOG_COMPARE(&rp->lsn, &rep->last_lsn) > 0))) { \
/* Not holding region mutex, may miscount */ \
- rep->stat.st_msgs_recover++; \
- ret = __rep_skip_msg(dbenv, rep, *eidp, rp->rectype); \
+ STAT(rep->stat.st_msgs_recover++); \
+ ret = __rep_skip_msg(dbenv, rep, eid, rp->rectype); \
goto errlock; \
} \
} while (0)
@@ -113,38 +126,35 @@ static int __rep_skip_msg __P((DB_ENV *, REP *, int, u_int32_t));
*
* control: contains the control fields from the record
* rec: contains the actual record
- * eidp: contains the machine id of the sender of the message;
- * in the case of a DB_NEWMASTER message, returns the eid
- * of the new master.
+ * eid: the environment id of the sender of the message;
* ret_lsnp: On DB_REP_ISPERM and DB_REP_NOTPERM returns, contains the
* lsn of the maximum permanent or current not permanent log record
* (respectively).
*
- * PUBLIC: int __rep_process_message __P((DB_ENV *, DBT *, DBT *, int *,
+ * PUBLIC: int __rep_process_message __P((DB_ENV *, DBT *, DBT *, int,
* PUBLIC: DB_LSN *));
*/
int
-__rep_process_message(dbenv, control, rec, eidp, ret_lsnp)
+__rep_process_message(dbenv, control, rec, eid, ret_lsnp)
DB_ENV *dbenv;
DBT *control, *rec;
- int *eidp;
+ int eid;
DB_LSN *ret_lsnp;
{
DB_LOG *dblp;
DB_LSN last_lsn, lsn;
DB_REP *db_rep;
+ DB_THREAD_INFO *ip;
DBT data_dbt;
LOG *lp;
REGENV *renv;
REGINFO *infop;
REP *rep;
- REP_CONTROL *rp;
+ REP_CONTROL *rp, tmprp;
+ REP_OLD_CONTROL *orp;
u_int32_t egen, gen;
- int cmp, recovering, ret;
+ int cmp, do_sync, recovering, ret;
time_t savetime;
-#ifdef DIAGNOSTIC
- DB_MSGBUF mb;
-#endif
PANIC_CHECK(dbenv);
ENV_REQUIRES_CONFIG_XX(
@@ -163,48 +173,88 @@ __rep_process_message(dbenv, control, rec, eidp, ret_lsnp)
return (EINVAL);
}
+ if ((ret = __dbt_usercopy(dbenv, control)) != 0 ||
+ (ret = __dbt_usercopy(dbenv, rec)) != 0) {
+ __dbt_userfree(dbenv, control, rec, NULL);
+ __db_errx(dbenv,
+ "DB_ENV->rep_process_message: error retrieving DBT contents");
+ return ret;
+ }
+
ret = 0;
+ do_sync = 0;
db_rep = dbenv->rep_handle;
rep = db_rep->region;
dblp = dbenv->lg_handle;
lp = dblp->reginfo.primary;
infop = dbenv->reginfo;
renv = infop->primary;
- rp = (REP_CONTROL *)control->data;
+ /*
+ * Casting this to REP_OLD_CONTROL is just kind of stylistic: the
+ * rep_version field of course has to be in the same offset in all
+ * versions in order for this to work.
+ */
+ if (((REP_OLD_CONTROL *)control->data)->rep_version
+ <= DB_REPVERSION_45) {
+ orp = (REP_OLD_CONTROL *)control->data;
+ tmprp.rep_version = orp->rep_version;
+ tmprp.log_version = orp->log_version;
+ tmprp.lsn = orp->lsn;
+ tmprp.rectype = orp->rectype;
+ tmprp.gen = orp->gen;
+ tmprp.flags = orp->flags;
+ timespecclear(&tmprp.msg_time);
+ rp = (REP_CONTROL *)&tmprp;
+ } else
+ rp = (REP_CONTROL *)control->data;
if (ret_lsnp != NULL)
ZERO_LSN(*ret_lsnp);
+ ENV_ENTER(dbenv, ip);
+
+ REP_PRINT_MESSAGE(dbenv, eid, rp, "rep_process_message", 0);
/*
* Acquire the replication lock.
*/
REP_SYSTEM_LOCK(dbenv);
- if (rep->lockout_th != 0) {
+ if (F_ISSET(rep, REP_F_READY_MSG)) {
/*
* If we're racing with a thread in rep_start, then
* just ignore the message and return.
*/
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"Racing replication msg lockout, ignore message."));
if (F_ISSET(rp, REPCTL_PERM))
ret = DB_REP_IGNORE;
REP_SYSTEM_UNLOCK(dbenv);
+ /*
+ * If another client has sent a c2c request to us, it may be a
+ * long time before it resends the request (due to its dual data
+ * streams avoidance heuristic); let it know we can't serve the
+ * request just now.
+ */
+ if (F_ISSET(rep, REP_F_CLIENT) && REP_MSG_REQ(rp->rectype)) {
+ STAT(rep->stat.st_client_svc_req++);
+ STAT(rep->stat.st_client_svc_miss++);
+ (void)__rep_send_message(dbenv,
+ eid, REP_REREQUEST, NULL, NULL, 0, 0);
+ }
goto out;
}
rep->msg_th++;
gen = rep->gen;
- recovering = rep->in_recovery || F_ISSET(rep, REP_F_RECOVER_MASK);
+ recovering = F_ISSET(rep, REP_F_RECOVER_MASK);
savetime = renv->rep_timestamp;
- rep->stat.st_msgs_processed++;
+ STAT(rep->stat.st_msgs_processed++);
REP_SYSTEM_UNLOCK(dbenv);
/*
* Check the version number for both rep and log. If it is
* an old version we support, convert it. Otherwise complain.
*/
- REP_PRINT_MESSAGE(dbenv, *eidp, rp, "rep_process_message", 0);
if (rp->rep_version < DB_REPVERSION) {
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"Received record %lu with old rep version %lu",
(u_long)rp->rectype, (u_long)rp->rep_version));
rp->rectype = __rep_msg_from_old(rp->rep_version, rp->rectype);
@@ -213,7 +263,7 @@ __rep_process_message(dbenv, control, rec, eidp, ret_lsnp)
* versions.
*/
DB_ASSERT(dbenv, rp->rectype != REP_INVALID);
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"Converted to record %lu with old rep version %lu",
(u_long)rp->rectype, (u_long)rp->rep_version));
} else if (rp->rep_version > DB_REPVERSION) {
@@ -225,7 +275,7 @@ __rep_process_message(dbenv, control, rec, eidp, ret_lsnp)
}
if (rp->log_version < DB_LOGVERSION) {
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"Received record %lu with old log version %lu",
(u_long)rp->rectype, (u_long)rp->log_version));
} else if (rp->log_version > DB_LOGVERSION) {
@@ -247,7 +297,7 @@ __rep_process_message(dbenv, control, rec, eidp, ret_lsnp)
/*
* We don't hold the rep mutex, and could miscount if we race.
*/
- rep->stat.st_msgs_badgen++;
+ STAT(rep->stat.st_msgs_badgen++);
if (F_ISSET(rp, REPCTL_PERM))
ret = DB_REP_IGNORE;
goto errlock;
@@ -259,9 +309,19 @@ __rep_process_message(dbenv, control, rec, eidp, ret_lsnp)
* number, I am in bad shape and should downgrade.
*/
if (F_ISSET(rep, REP_F_MASTER)) {
- rep->stat.st_dupmasters++;
+ STAT(rep->stat.st_dupmasters++);
ret = DB_REP_DUPMASTER;
- if (rp->rectype != REP_DUPMASTER)
+ /*
+ * Only broadcast DUPMASTER if leases are not
+ * in effect. If I am an old master, using
+ * leases and I get a newer message, my leases
+ * had better all be expired.
+ */
+ if (IS_USING_LEASES(dbenv))
+ DB_ASSERT(dbenv,
+ __rep_lease_check(dbenv, 0) ==
+ DB_REP_LEASE_EXPIRED);
+ else if (rp->rectype != REP_DUPMASTER)
(void)__rep_send_message(dbenv,
DB_EID_BROADCAST, REP_DUPMASTER,
NULL, NULL, 0, 0);
@@ -278,7 +338,7 @@ __rep_process_message(dbenv, control, rec, eidp, ret_lsnp)
if (rp->rectype == REP_ALIVE ||
rp->rectype == REP_VOTE1 || rp->rectype == REP_VOTE2) {
REP_SYSTEM_LOCK(dbenv);
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"Updating gen from %lu to %lu",
(u_long)gen, (u_long)rp->gen));
rep->master_id = DB_EID_INVALID;
@@ -310,6 +370,20 @@ __rep_process_message(dbenv, control, rec, eidp, ret_lsnp)
}
/*
+ * If the sender is part of an established group, so are we now.
+ */
+ if (F_ISSET(rp, REPCTL_GROUP_ESTD)) {
+ REP_SYSTEM_LOCK(dbenv);
+#ifdef DIAGNOSTIC
+ if (!F_ISSET(rep, REP_F_GROUP_ESTD))
+ RPRINT(dbenv, (dbenv,
+ "I am now part of an established group"));
+#endif
+ F_SET(rep, REP_F_GROUP_ESTD);
+ REP_SYSTEM_UNLOCK(dbenv);
+ }
+
+ /*
* We need to check if we're in recovery and if we are
* then we need to ignore any messages except VERIFY*, VOTE*,
* NEW* and ALIVE_REQ, or backup related messages: UPDATE*,
@@ -324,16 +398,22 @@ __rep_process_message(dbenv, control, rec, eidp, ret_lsnp)
ANYSITE(rep);
egen = *(u_int32_t *)rec->data;
REP_SYSTEM_LOCK(dbenv);
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"Received ALIVE egen of %lu, mine %lu",
(u_long)egen, (u_long)rep->egen));
if (egen > rep->egen) {
/*
* We're changing egen, need to clear out any old
- * election information.
+ * election information. We need to set the
+ * REP_F_EGENUPDATE flag here so that any thread
+ * waiting in rep_elect/rep_wait can distinguish
+ * this situation (and restart its election) from
+ * a current master saying it is still master and
+ * the egen getting incremented on that path.
*/
__rep_elect_done(dbenv, rep);
rep->egen = egen;
+ F_SET(rep, REP_F_EGENUPDATE);
}
REP_SYSTEM_UNLOCK(dbenv);
break;
@@ -352,11 +432,11 @@ __rep_process_message(dbenv, control, rec, eidp, ret_lsnp)
data_dbt.data = &egen;
data_dbt.size = sizeof(egen);
(void)__rep_send_message(dbenv,
- *eidp, REP_ALIVE, &lsn, &data_dbt, 0, 0);
+ eid, REP_ALIVE, &lsn, &data_dbt, 0, 0);
break;
case REP_ALL_REQ:
RECOVERING_SKIP;
- ret = __rep_allreq(dbenv, rp, *eidp);
+ ret = __rep_allreq(dbenv, rp, eid);
CLIENT_REREQ;
break;
case REP_BULK_LOG:
@@ -369,7 +449,7 @@ __rep_process_message(dbenv, control, rec, eidp, ret_lsnp)
* Handle even if we're recovering.
*/
CLIENT_ONLY(rep, rp);
- ret = __rep_bulk_page(dbenv, *eidp, rp, rec);
+ ret = __rep_bulk_page(dbenv, eid, rp, rec);
break;
case REP_DUPMASTER:
/*
@@ -383,7 +463,7 @@ __rep_process_message(dbenv, control, rec, eidp, ret_lsnp)
CLIENT_ONLY(rep, rp);
break;
case REP_FILE_REQ:
- ret = __rep_send_file(dbenv, rec, *eidp);
+ ret = __rep_send_file(dbenv, rec, eid);
break;
#endif
case REP_FILE_FAIL:
@@ -395,6 +475,13 @@ __rep_process_message(dbenv, control, rec, eidp, ret_lsnp)
* XXX
*/
break;
+ case REP_LEASE_GRANT:
+ /*
+ * Handle even if we're recovering.
+ */
+ MASTER_ONLY(rep, rp);
+ ret = __rep_lease_grant(dbenv, rp, rec, eid);
+ break;
case REP_LOG:
case REP_LOG_MORE:
RECOVERING_LOG_SKIP;
@@ -405,7 +492,7 @@ __rep_process_message(dbenv, control, rec, eidp, ret_lsnp)
RECOVERING_SKIP;
if (F_ISSET(rp, REPCTL_INIT))
MASTER_UPDATE(dbenv, renv);
- ret = __rep_logreq(dbenv, rp, rec, *eidp);
+ ret = __rep_logreq(dbenv, rp, rec, eid);
CLIENT_REREQ;
break;
case REP_NEWSITE:
@@ -413,7 +500,7 @@ __rep_process_message(dbenv, control, rec, eidp, ret_lsnp)
* Handle even if we're recovering.
*/
/* We don't hold the rep mutex, and may miscount. */
- rep->stat.st_newsites++;
+ STAT(rep->stat.st_newsites++);
/* This is a rebroadcast; simply tell the application. */
if (F_ISSET(rep, REP_F_MASTER)) {
@@ -423,7 +510,9 @@ __rep_process_message(dbenv, control, rec, eidp, ret_lsnp)
lsn = lp->lsn;
LOG_SYSTEM_UNLOCK(dbenv);
(void)__rep_send_message(dbenv,
- *eidp, REP_NEWMASTER, &lsn, NULL, 0, 0);
+ eid, REP_NEWMASTER, &lsn, NULL, 0, 0);
+ if (IS_USING_LEASES(dbenv))
+ ret = __rep_lease_refresh(dbenv);
}
ret = DB_REP_NEWSITE;
break;
@@ -448,7 +537,7 @@ __rep_process_message(dbenv, control, rec, eidp, ret_lsnp)
if (F_ISSET(rep, REP_F_CLIENT)) {
REP_SYSTEM_LOCK(dbenv);
egen = rep->egen;
- if (*eidp == rep->master_id)
+ if (eid == rep->master_id)
rep->master_id = DB_EID_INVALID;
REP_SYSTEM_UNLOCK(dbenv);
data_dbt.data = &egen;
@@ -466,6 +555,8 @@ __rep_process_message(dbenv, control, rec, eidp, ret_lsnp)
LOG_SYSTEM_UNLOCK(dbenv);
(void)__rep_send_message(dbenv,
DB_EID_BROADCAST, REP_NEWMASTER, &lsn, NULL, 0, 0);
+ if (IS_USING_LEASES(dbenv))
+ ret = __rep_lease_refresh(dbenv);
}
/*
* If there is no master, then we could get into a state
@@ -476,12 +567,12 @@ __rep_process_message(dbenv, control, rec, eidp, ret_lsnp)
if (F_ISSET(rep, REP_F_CLIENT) && rp->gen < gen) {
REP_SYSTEM_LOCK(dbenv);
egen = rep->egen;
- if (*eidp == rep->master_id)
+ if (eid == rep->master_id)
rep->master_id = DB_EID_INVALID;
REP_SYSTEM_UNLOCK(dbenv);
data_dbt.data = &egen;
data_dbt.size = sizeof(egen);
- (void)__rep_send_message(dbenv, *eidp,
+ (void)__rep_send_message(dbenv, eid,
REP_ALIVE, &rp->lsn, &data_dbt, 0, 0);
}
break;
@@ -498,15 +589,23 @@ __rep_process_message(dbenv, control, rec, eidp, ret_lsnp)
*/
ANYSITE(rep);
if (F_ISSET(rep, REP_F_MASTER) &&
- *eidp != rep->eid) {
+ eid != rep->eid) {
/* We don't hold the rep mutex, and may miscount. */
- rep->stat.st_dupmasters++;
+ STAT(rep->stat.st_dupmasters++);
ret = DB_REP_DUPMASTER;
- (void)__rep_send_message(dbenv,
- DB_EID_BROADCAST, REP_DUPMASTER, NULL, NULL, 0, 0);
+ if (IS_USING_LEASES(dbenv))
+ DB_ASSERT(dbenv,
+ __rep_lease_check(dbenv, 0) ==
+ DB_REP_LEASE_EXPIRED);
+ else
+ (void)__rep_send_message(dbenv,
+ DB_EID_BROADCAST, REP_DUPMASTER,
+ NULL, NULL, 0, 0);
break;
}
- ret = __rep_new_master(dbenv, rp, *eidp);
+ if ((ret =
+ __rep_new_master(dbenv, rp, eid)) == DB_REP_NEWMASTER)
+ ret = __rep_fire_newmaster(dbenv, rp->gen, eid);
break;
case REP_PAGE:
case REP_PAGE_MORE:
@@ -514,7 +613,7 @@ __rep_process_message(dbenv, control, rec, eidp, ret_lsnp)
* Handle even if we're recovering.
*/
CLIENT_ONLY(rep, rp);
- ret = __rep_page(dbenv, *eidp, rp, rec);
+ ret = __rep_page(dbenv, eid, rp, rec);
if (ret == DB_REP_PAGEDONE)
ret = 0;
break;
@@ -523,14 +622,12 @@ __rep_process_message(dbenv, control, rec, eidp, ret_lsnp)
* Handle even if we're recovering.
*/
CLIENT_ONLY(rep, rp);
- ret = __rep_page_fail(dbenv, *eidp, rec);
+ ret = __rep_page_fail(dbenv, eid, rec);
break;
case REP_PAGE_REQ:
- /*
- * Handle even if we're recovering.
- */
+ RECOVERING_SKIP;
MASTER_UPDATE(dbenv, renv);
- ret = __rep_page_req(dbenv, *eidp, rec);
+ ret = __rep_page_req(dbenv, eid, rec);
CLIENT_REREQ;
break;
case REP_REREQUEST:
@@ -542,15 +639,52 @@ __rep_process_message(dbenv, control, rec, eidp, ret_lsnp)
/*
* Don't hold any mutex, may miscount.
*/
- rep->stat.st_client_rerequests++;
+ STAT(rep->stat.st_client_rerequests++);
ret = __rep_resend_req(dbenv, 1);
break;
+ case REP_START_SYNC:
+ RECOVERING_SKIP;
+ MUTEX_LOCK(dbenv, rep->mtx_clientdb);
+ cmp = LOG_COMPARE(&rp->lsn, &lp->ready_lsn);
+ /*
+ * The comparison needs to be <= because the LSN in
+ * the message can be the LSN of the first outstanding
+ * txn, which may be the LSN immediately after the
+ * previous commit. The ready_lsn is the LSN of the
+ * next record expected. In that case, the LSNs
+ * could be equal and the client has the commit and
+ * wants to sync. [SR #15338]
+ */
+ if (cmp <= 0) {
+ MUTEX_UNLOCK(dbenv, rep->mtx_clientdb);
+ do_sync = 1;
+ } else {
+ STAT(rep->stat.st_startsync_delayed++);
+ /*
+ * There are cases where keeping the first ckp_lsn
+ * LSN is advantageous and cases where keeping
+ * a later LSN is better. If random, earlier
+ * log records are missing, keeping the later
+ * LSN seems to be better. That is what we'll
+ * do for now.
+ */
+ if (LOG_COMPARE(&rp->lsn, &rep->ckp_lsn) > 0)
+ rep->ckp_lsn = rp->lsn;
+ RPRINT(dbenv, (dbenv,
+ "Delayed START_SYNC memp_sync due to missing records."));
+ RPRINT(dbenv, (dbenv,
+ "ready LSN [%lu][%lu], ckp_lsn [%lu][%lu]",
+ (u_long)lp->ready_lsn.file, (u_long)lp->ready_lsn.offset,
+ (u_long)rep->ckp_lsn.file, (u_long)rep->ckp_lsn.offset));
+ MUTEX_UNLOCK(dbenv, rep->mtx_clientdb);
+ }
+ break;
case REP_UPDATE:
/*
* Handle even if we're recovering.
*/
CLIENT_ONLY(rep, rp);
- ret = __rep_update_setup(dbenv, *eidp, rp, rec);
+ ret = __rep_update_setup(dbenv, eid, rp, rec);
break;
case REP_UPDATE_REQ:
/*
@@ -560,7 +694,7 @@ __rep_process_message(dbenv, control, rec, eidp, ret_lsnp)
infop = dbenv->reginfo;
renv = infop->primary;
MASTER_UPDATE(dbenv, renv);
- ret = __rep_update_req(dbenv, *eidp);
+ ret = __rep_update_req(dbenv, eid);
break;
case REP_VERIFY:
if (recovering) {
@@ -572,36 +706,36 @@ __rep_process_message(dbenv, control, rec, eidp, ret_lsnp)
*/
if (cmp != 0) {
ret = __rep_skip_msg(
- dbenv, rep, *eidp, rp->rectype);
+ dbenv, rep, eid, rp->rectype);
break;
}
}
CLIENT_ONLY(rep, rp);
- ret = __rep_verify(dbenv, rp, rec, *eidp, savetime);
+ ret = __rep_verify(dbenv, rp, rec, eid, savetime);
break;
case REP_VERIFY_FAIL:
/*
* Handle even if we're recovering.
*/
CLIENT_ONLY(rep, rp);
- ret = __rep_verify_fail(dbenv, rp, *eidp);
+ ret = __rep_verify_fail(dbenv, rp, eid);
break;
case REP_VERIFY_REQ:
RECOVERING_SKIP;
- ret = __rep_verify_req(dbenv, rp, *eidp);
+ ret = __rep_verify_req(dbenv, rp, eid);
CLIENT_REREQ;
break;
case REP_VOTE1:
/*
* Handle even if we're recovering.
*/
- ret = __rep_vote1(dbenv, rp, rec, eidp);
+ ret = __rep_vote1(dbenv, rp, rec, eid);
break;
case REP_VOTE2:
/*
* Handle even if we're recovering.
*/
- ret = __rep_vote2(dbenv, rec, eidp);
+ ret = __rep_vote2(dbenv, rec, eid);
break;
default:
__db_errx(dbenv,
@@ -615,12 +749,27 @@ errlock:
REP_SYSTEM_LOCK(dbenv);
rep->msg_th--;
REP_SYSTEM_UNLOCK(dbenv);
+ if (do_sync) {
+ MUTEX_LOCK(dbenv, rep->mtx_ckp);
+ lsn = rp->lsn;
+ /*
+ * This is the REP_START_SYNC sync, and so we permit it to be
+ * interrupted.
+ */
+ ret = __memp_sync(
+ dbenv, DB_SYNC_CHECKPOINT | DB_SYNC_INTERRUPT_OK, &lsn);
+ MUTEX_UNLOCK(dbenv, rep->mtx_ckp);
+ RPRINT(dbenv, (dbenv, "ALIVE: Completed sync [%lu][%lu]",
+ (u_long)lsn.file, (u_long)lsn.offset));
+ }
out:
if (ret == 0 && F_ISSET(rp, REPCTL_PERM)) {
if (ret_lsnp != NULL)
*ret_lsnp = rp->lsn;
ret = DB_REP_NOTPERM;
}
+ __dbt_userfree(dbenv, control, rec, NULL);
+ ENV_LEAVE(dbenv, ip);
return (ret);
}
@@ -651,37 +800,95 @@ __rep_apply(dbenv, rp, rec, ret_lsnp, is_dupp, last_lsnp)
DBT rec_dbt;
DB *dbp;
DB_LOG *dblp;
- DB_LSN max_lsn;
+ DB_LSN max_lsn, save_lsn;
LOG *lp;
REP *rep;
- u_int32_t rectype;
- int cmp, ret;
-#ifdef DIAGNOSTIC
- DB_MSGBUF mb;
-#endif
+ db_timespec max_ts;
+ u_int32_t gen;
+ int cmp, event, master, ret, set_apply, t_ret;
+
+ COMPQUIET(gen, 0);
+ COMPQUIET(master, DB_EID_INVALID);
db_rep = dbenv->rep_handle;
rep = db_rep->region;
- dbp = db_rep->rep_db;
- rectype = 0;
- ret = 0;
+ event = ret = set_apply = 0;
memset(&control_dbt, 0, sizeof(control_dbt));
memset(&rec_dbt, 0, sizeof(rec_dbt));
ZERO_LSN(max_lsn);
+ timespecclear(&max_ts);
+ cmp = -2; /* OOB value that LOG_COMPARE can't return. */
dblp = dbenv->lg_handle;
MUTEX_LOCK(dbenv, rep->mtx_clientdb);
+ /*
+ * Lazily open the temp db. Always set the startup flag to 0
+ * because it was initialized from rep_start.
+ */
+ if (db_rep->rep_db == NULL &&
+ (ret = __rep_client_dbinit(dbenv, 0, REP_DB)) != 0) {
+ MUTEX_UNLOCK(dbenv, rep->mtx_clientdb);
+ goto out;
+ }
+ dbp = db_rep->rep_db;
lp = dblp->reginfo.primary;
REP_SYSTEM_LOCK(dbenv);
if (F_ISSET(rep, REP_F_RECOVER_LOG) &&
LOG_COMPARE(&lp->ready_lsn, &rep->first_lsn) < 0)
lp->ready_lsn = rep->first_lsn;
- REP_SYSTEM_UNLOCK(dbenv);
cmp = LOG_COMPARE(&rp->lsn, &lp->ready_lsn);
+ /*
+ * If we are going to skip or process any message other
+ * than a duplicate, make note of it if we're in an
+ * election so that the election can rerequest proactively.
+ */
+ if (F_ISSET(rep, REP_F_READY_APPLY) && cmp >= 0)
+ F_SET(rep, REP_F_SKIPPED_APPLY);
+
+ /*
+ * If we're in the middle of processing a NEWFILE, we've dropped
+ * the mutex and if this matches it is a duplicate record. We
+ * do not want this call taking the "matching" code below because
+ * we may then process later records in the temp db and the
+ * original NEWFILE may not have the log file ready. It will
+ * process those temp db items when it completes.
+ */
+ if (F_ISSET(rep, REP_F_NEWFILE) && cmp == 0)
+ cmp = -1;
if (cmp == 0) {
+ /*
+ * If we are in an election (i.e. we've sent a vote
+ * with an LSN in it), then we drop the next record
+ * we're expecting. When we find a master, we'll
+ * either go into sync, or if it was an existing
+ * master, rerequest this one record (later records
+ * are accumulating in the temp db).
+ *
+ * We can simply return here, and rep_process_message
+ * will set NOTPERM if necessary for this record.
+ */
+ if (F_ISSET(rep, REP_F_READY_APPLY)) {
+ /*
+ * We will simply return now. All special return
+ * processing should be ignored because the special
+ * values are just initialized. Variables like
+ * max_lsn are still 0.
+ */
+ RPRINT(dbenv, (dbenv,
+ "rep_apply: In election. Ignoring [%lu][%lu]",
+ (u_long)rp->lsn.file, (u_long)rp->lsn.offset));
+ REP_SYSTEM_UNLOCK(dbenv);
+ MUTEX_UNLOCK(dbenv, rep->mtx_clientdb);
+ goto out;
+ }
+ rep->apply_th++;
+ set_apply = 1;
+ RPRINT(dbenv, (dbenv,
+ "rep_apply: Set apply_th %d", rep->apply_th));
+ REP_SYSTEM_UNLOCK(dbenv);
if ((ret =
- __rep_process_rec(dbenv, rp, rec, &rectype, &max_lsn)) != 0)
+ __rep_process_rec(dbenv, rp, rec, &max_ts, &max_lsn)) != 0)
goto err;
/*
* If we get the record we are expecting, reset
@@ -705,12 +912,9 @@ gap_check:
rp = (REP_CONTROL *)control_dbt.data;
rec = &rec_dbt;
if ((ret = __rep_process_rec(dbenv,
- rp, rec, &rectype, &max_lsn)) != 0)
+ rp, rec, &max_ts, &max_lsn)) != 0)
goto err;
- /*
- * We may miscount, as we don't hold the rep mutex.
- */
--rep->stat.st_log_queued;
/*
@@ -765,6 +969,7 @@ gap_check:
* calculations to determine if we should issue requests
* for new records.
*/
+ REP_SYSTEM_UNLOCK(dbenv);
memset(&key_dbt, 0, sizeof(key_dbt));
key_dbt.data = rp;
key_dbt.size = sizeof(*rp);
@@ -784,10 +989,16 @@ gap_check:
goto err;
ret = __db_put(dbp, NULL, &key_dbt, rec, DB_NOOVERWRITE);
- rep->stat.st_log_queued++;
- rep->stat.st_log_queued_total++;
- if (rep->stat.st_log_queued_max < rep->stat.st_log_queued)
- rep->stat.st_log_queued_max = rep->stat.st_log_queued;
+ if (ret == 0) {
+ rep->stat.st_log_queued++;
+#ifdef HAVE_STATISTICS
+ STAT(rep->stat.st_log_queued_total++);
+ if (rep->stat.st_log_queued_max <
+ rep->stat.st_log_queued)
+ rep->stat.st_log_queued_max =
+ rep->stat.st_log_queued;
+#endif
+ }
if (ret == DB_KEYEXIST)
ret = 0;
@@ -808,15 +1019,26 @@ gap_check:
}
goto done;
} else {
- /*
- * We may miscount if we race, since we
- * don't currently hold the rep mutex.
- */
- rep->stat.st_log_duplicated++;
+ STAT(rep->stat.st_log_duplicated++);
+ REP_SYSTEM_UNLOCK(dbenv);
if (is_dupp != NULL)
*is_dupp = 1;
if (F_ISSET(rp, REPCTL_PERM))
max_lsn = lp->max_perm_lsn;
+ /*
+ * We check REPCTL_LEASE here, because this client may
+ * have leases configured but the master may not (especially
+ * in a mixed version group. If the master has leases
+ * configured, all clients must also.
+ */
+ if (IS_USING_LEASES(dbenv) &&
+ F_ISSET(rp, REPCTL_LEASE) &&
+ timespecisset(&rp->msg_time)) {
+ if (timespeccmp(&rp->msg_time, &lp->max_lease_ts, >))
+ max_ts = rp->msg_time;
+ else
+ max_ts = lp->max_lease_ts;
+ }
goto done;
}
@@ -840,7 +1062,16 @@ err: /*
ZERO_LSN(max_lsn);
ret = DB_REP_LOGREADY;
}
- REP_SYSTEM_UNLOCK(dbenv);
+ /*
+ * Only decrement if we were actually applying log records.
+ * We do not care if we processed a dup record or put one
+ * in the temp db.
+ */
+ if (set_apply) {
+ rep->apply_th--;
+ RPRINT(dbenv, (dbenv,
+ "rep_apply: Decrement apply_th %d", rep->apply_th));
+ }
if (ret == 0 && !F_ISSET(rep, REP_F_RECOVER_LOG) &&
!IS_ZERO_LSN(max_lsn)) {
@@ -850,21 +1081,77 @@ err: /*
DB_ASSERT(dbenv, LOG_COMPARE(&max_lsn, &lp->max_perm_lsn) >= 0);
lp->max_perm_lsn = max_lsn;
}
- MUTEX_UNLOCK(dbenv, rep->mtx_clientdb);
/*
- * Startup is complete when we process our first live record. We know
- * we've processed at least one record when rectype is non-zero.
+ * Start-up is complete when we process (or have already processed) up
+ * to the end of the replication group's log. In case we miss that
+ * message, as a back-up, we also recognize start-up completion when we
+ * actually process a live log record. Having cmp==0 here (with a good
+ * "ret" value) implies we actually processed the record.
*/
- if ((ret == 0 || ret == DB_REP_ISPERM) && !F_ISSET(rp, REPCTL_RESEND) &&
- rectype != 0 && rep->stat.st_startup_complete == 0) {
+ if ((ret == 0 || ret == DB_REP_ISPERM) &&
+ rep->stat.st_startup_complete == 0 &&
+ ((cmp <= 0 && F_ISSET(rp, REPCTL_LOG_END)) ||
+ (cmp == 0 && !F_ISSET(rp, REPCTL_RESEND)))) {
rep->stat.st_startup_complete = 1;
-#ifdef DIAGNOSTIC
- RPRINT(dbenv, (dbenv, &mb,
- "Firing STARTUPDONE event [%lu][%lu]",
+ event = 1;
+ gen = rep->gen;
+ master = rep->master_id;
+ }
+ REP_SYSTEM_UNLOCK(dbenv);
+ /*
+ * If we've processed beyond the needed LSN for a pending
+ * start sync, start it now. We can compare >= here
+ * because ready_lsn is the next record we expect.
+ * Since ckp_lsn can point to the last commit record itself,
+ * but if it does and ready_lsn == commit (i.e. we haven't
+ * written the commit yet), we can still start to sync
+ * because we're guaranteed no additional buffers can
+ * be dirtied.
+ */
+ if (!IS_ZERO_LSN(rep->ckp_lsn) &&
+ LOG_COMPARE(&lp->ready_lsn, &rep->ckp_lsn) >= 0) {
+ save_lsn = rep->ckp_lsn;
+ ZERO_LSN(rep->ckp_lsn);
+ } else
+ ZERO_LSN(save_lsn);
+
+ /*
+ * If this is a perm record, we are using leases, update the lease
+ * grant. We must hold the clientdb mutex. We must not hold
+ * the region mutex because rep_update_grant will acquire it.
+ */
+ if (ret == DB_REP_ISPERM && IS_USING_LEASES(dbenv) &&
+ timespecisset(&max_ts)) {
+ if ((ret = __rep_update_grant(dbenv, &max_ts)) != 0)
+ return (ret);
+ if (timespeccmp(&max_ts, &lp->max_lease_ts, >))
+ lp->max_lease_ts = max_ts;
+ }
+
+ MUTEX_UNLOCK(dbenv, rep->mtx_clientdb);
+ if (!IS_ZERO_LSN(save_lsn)) {
+ /*
+ * Now call memp_sync holding only the ckp mutex.
+ */
+ MUTEX_LOCK(dbenv, rep->mtx_ckp);
+ RPRINT(dbenv, (dbenv,
+ "Starting delayed __memp_sync call [%lu][%lu]",
+ (u_long)save_lsn.file, (u_long)save_lsn.offset));
+ ret = __memp_sync(dbenv, DB_SYNC_CHECKPOINT, &save_lsn);
+ MUTEX_UNLOCK(dbenv, rep->mtx_ckp);
+ }
+ if (event) {
+ RPRINT(dbenv, (dbenv,
+ "Start-up is done [%lu][%lu]",
(u_long)rp->lsn.file, (u_long)rp->lsn.offset));
-#endif
- DB_EVENT(dbenv, DB_EVENT_REP_STARTUPDONE, NULL);
+
+ if ((t_ret = __rep_fire_startupdone(dbenv, gen, master)) != 0) {
+ DB_ASSERT(dbenv, ret == 0 || ret == DB_REP_ISPERM);
+ /* Failure trumps either of those values. */
+ ret = t_ret;
+ goto out;
+ }
}
if (ret == 0 && rp->rectype == REP_NEWFILE && lp->db_log_autoremove)
__log_autoremove(dbenv);
@@ -873,26 +1160,34 @@ err: /*
if (rec_dbt.data != NULL)
__os_ufree(dbenv, rec_dbt.data);
- if (ret == DB_REP_NOTPERM && !F_ISSET(rep, REP_F_RECOVER_LOG) &&
- !IS_ZERO_LSN(max_lsn) && ret_lsnp != NULL)
- *ret_lsnp = max_lsn;
-
-#ifdef DIAGNOSTIC
- if (ret == DB_REP_ISPERM)
- RPRINT(dbenv, (dbenv, &mb, "Returning ISPERM [%lu][%lu]",
- (u_long)max_lsn.file, (u_long)max_lsn.offset));
- else if (ret == DB_REP_LOGREADY)
- RPRINT(dbenv, (dbenv, &mb,
- "Returning LOGREADY up to [%lu][%lu]",
- (u_long)rep->last_lsn.file,
- (u_long)rep->last_lsn.offset));
- else if (ret == DB_REP_NOTPERM)
- RPRINT(dbenv, (dbenv, &mb, "Returning NOTPERM [%lu][%lu]",
- (u_long)max_lsn.file, (u_long)max_lsn.offset));
- else if (ret != 0)
- RPRINT(dbenv, (dbenv, &mb, "Returning %d [%lu][%lu]", ret,
- (u_long)max_lsn.file, (u_long)max_lsn.offset));
-#endif
+out:
+ switch (ret) {
+ case 0:
+ break;
+ case DB_REP_ISPERM:
+ RPRINT(dbenv, (dbenv, "Returning ISPERM [%lu][%lu], cmp = %d",
+ (u_long)max_lsn.file, (u_long)max_lsn.offset, cmp));
+ break;
+ case DB_REP_LOGREADY:
+ RPRINT(dbenv, (dbenv,
+ "Returning LOGREADY up to [%lu][%lu], cmp = %d",
+ (u_long)last_lsnp->file,
+ (u_long)last_lsnp->offset, cmp));
+ break;
+ case DB_REP_NOTPERM:
+ if (!F_ISSET(rep, REP_F_RECOVER_LOG) &&
+ !IS_ZERO_LSN(max_lsn) && ret_lsnp != NULL)
+ *ret_lsnp = max_lsn;
+
+ RPRINT(dbenv, (dbenv, "Returning NOTPERM [%lu][%lu], cmp = %d",
+ (u_long)max_lsn.file, (u_long)max_lsn.offset, cmp));
+ break;
+ default:
+ RPRINT(dbenv, (dbenv, "Returning %d [%lu][%lu], cmp = %d", ret,
+ (u_long)max_lsn.file, (u_long)max_lsn.offset, cmp));
+ break;
+ }
+
return (ret);
}
@@ -910,6 +1205,7 @@ __rep_process_txn(dbenv, rec)
DBT *rec;
{
DBT data_dbt, *lock_dbt;
+ DB_LOCKER *locker;
DB_LOCKREQ req, *lvp;
DB_LOGC *logc;
DB_LSN prev_lsn, *lsnp;
@@ -920,7 +1216,7 @@ __rep_process_txn(dbenv, rec)
__txn_regop_args *txn_args;
__txn_regop_42_args *txn42_args;
__txn_xa_regop_args *prep_args;
- u_int32_t lockid, rectype;
+ u_int32_t rectype;
u_int i;
int ret, t_ret;
@@ -985,11 +1281,11 @@ __rep_process_txn(dbenv, rec)
}
/* Get locks. */
- if ((ret = __lock_id(dbenv, &lockid, NULL)) != 0)
+ if ((ret = __lock_id(dbenv, NULL, &locker)) != 0)
goto err1;
if ((ret =
- __lock_get_list(dbenv, lockid, 0, DB_LOCK_WRITE, lock_dbt)) != 0)
+ __lock_get_list(dbenv, locker, 0, DB_LOCK_WRITE, lock_dbt)) != 0)
goto err;
/* Phase 1. Get a list of the LSNs in this transaction, and sort it. */
@@ -1009,7 +1305,7 @@ __rep_process_txn(dbenv, rec)
if ((ret = __log_cursor(dbenv, &logc)) != 0)
goto err;
for (lsnp = &lc.array[0], i = 0; i < lc.nlsns; i++, lsnp++) {
- if ((ret = __log_c_get(logc, lsnp, &data_dbt, DB_SET)) != 0) {
+ if ((ret = __logc_get(logc, lsnp, &data_dbt, DB_SET)) != 0) {
__db_errx(dbenv, "failed to read the log at [%lu][%lu]",
(u_long)lsnp->file, (u_long)lsnp->offset);
goto err;
@@ -1026,10 +1322,10 @@ __rep_process_txn(dbenv, rec)
err: memset(&req, 0, sizeof(req));
req.op = DB_LOCK_PUT_ALL;
if ((t_ret =
- __lock_vec(dbenv, lockid, 0, &req, 1, &lvp)) != 0 && ret == 0)
+ __lock_vec(dbenv, locker, 0, &req, 1, &lvp)) != 0 && ret == 0)
ret = t_ret;
- if ((t_ret = __lock_id_free(dbenv, lockid)) != 0 && ret == 0)
+ if ((t_ret = __lock_id_free(dbenv, locker)) != 0 && ret == 0)
ret = t_ret;
err1: if (txn_args != NULL)
@@ -1041,7 +1337,7 @@ err1: if (txn_args != NULL)
if (lc.array != NULL)
__os_free(dbenv, lc.array);
- if (logc != NULL && (t_ret = __log_c_close(logc)) != 0 && ret == 0)
+ if (logc != NULL && (t_ret = __logc_close(logc)) != 0 && ret == 0)
ret = t_ret;
if (txninfo != NULL)
@@ -1050,11 +1346,13 @@ err1: if (txn_args != NULL)
if (F_ISSET(&data_dbt, DB_DBT_REALLOC) && data_dbt.data != NULL)
__os_ufree(dbenv, data_dbt.data);
+#ifdef HAVE_STATISTICS
if (ret == 0)
/*
* We don't hold the rep mutex, and could miscount if we race.
*/
rep->stat.st_txns_applied++;
+#endif
return (ret);
}
@@ -1086,7 +1384,7 @@ __rep_collect_txn(dbenv, lsnp, lc)
return (ret);
while (!IS_ZERO_LSN(*lsnp) &&
- (ret = __log_c_get(logc, lsnp, &data, DB_SET)) == 0) {
+ (ret = __logc_get(logc, lsnp, &data, DB_SET)) == 0) {
memcpy(&rectype, data.data, sizeof(rectype));
if (rectype == DB___txn_child) {
if ((ret = __txn_child_read(dbenv,
@@ -1125,7 +1423,7 @@ __rep_collect_txn(dbenv, lsnp, lc)
__db_errx(dbenv, "collect failed at: [%lu][%lu]",
(u_long)lsnp->file, (u_long)lsnp->offset);
-err: if ((t_ret = __log_c_close(logc)) != 0 && ret == 0)
+err: if ((t_ret = __logc_close(logc)) != 0 && ret == 0)
ret = t_ret;
if (data.data != NULL)
__os_ufree(dbenv, data.data);
@@ -1148,35 +1446,69 @@ __rep_lsn_cmp(lsn1, lsn2)
* __rep_newfile --
* NEWFILE messages have the LSN of the last record in the previous
* log file. When applying a NEWFILE message, make sure we haven't already
- * swapped files.
+ * swapped files. Assume caller hold mtx_clientdb.
*/
static int
-__rep_newfile(dbenv, rc, rec, lsnp)
+__rep_newfile(dbenv, rc, rec)
DB_ENV *dbenv;
REP_CONTROL *rc;
DBT *rec;
- DB_LSN *lsnp;
{
DB_LOG *dblp;
+ DB_LSN tmplsn;
+ DB_REP *db_rep;
LOG *lp;
+ REP *rep;
u_int32_t version;
-#ifdef DIAGNOSTIC
- DB_MSGBUF mb;
-#endif
+ int ret;
dblp = dbenv->lg_handle;
lp = dblp->reginfo.primary;
+ db_rep = dbenv->rep_handle;
+ rep = db_rep->region;
- if (rc->lsn.file + 1 > lp->lsn.file) {
- version = *(u_int32_t *)rec->data;
- RPRINT(dbenv, (dbenv, &mb, "Rep_newfile: File %d vers %d",
- rc->lsn.file + 1, version));
- return (__log_newfile(dblp, lsnp, 0, version));
- } else {
+ /*
+ * If a newfile is already in progress, just ignore.
+ */
+ if (F_ISSET(rep, REP_F_NEWFILE))
+ return (0);
+ if (rc->lsn.file + 1 > lp->ready_lsn.file) {
+ if (rec == NULL || rec->size == 0) {
+ RPRINT(dbenv, (dbenv,
+"Rep_newfile: Old-style NEWFILE msg. Use control msg log version: %lu",
+ (u_long) rc->log_version));
+ version = rc->log_version;
+ } else
+ version = *(u_int32_t *)rec->data;
+ RPRINT(dbenv, (dbenv, "Rep_newfile: File %lu vers %lu",
+ (u_long)rc->lsn.file + 1, (u_long)version));
+
+ /*
+ * We drop the mtx_clientdb mutex during
+ * the file operation, and then reacquire it when
+ * we're done. We avoid colliding with new incoming
+ * log records because lp->ready_lsn is not getting
+ * updated and there is no real log record at this
+ * ready_lsn. We avoid colliding with a duplicate
+ * NEWFILE message by setting an in-progress flag.
+ */
+ REP_SYSTEM_LOCK(dbenv);
+ F_SET(rep, REP_F_NEWFILE);
+ REP_SYSTEM_UNLOCK(dbenv);
+ MUTEX_UNLOCK(dbenv, rep->mtx_clientdb);
+ LOG_SYSTEM_LOCK(dbenv);
+ ret = __log_newfile(dblp, &tmplsn, 0, version);
+ LOG_SYSTEM_UNLOCK(dbenv);
+ MUTEX_LOCK(dbenv, rep->mtx_clientdb);
+ REP_SYSTEM_LOCK(dbenv);
+ F_CLR(rep, REP_F_NEWFILE);
+ REP_SYSTEM_UNLOCK(dbenv);
+ if (ret == 0)
+ lp->ready_lsn = tmplsn;
+ return (ret);
+ } else
/* We've already applied this NEWFILE. Just ignore it. */
- *lsnp = lp->lsn;
return (0);
- }
}
/*
@@ -1191,20 +1523,38 @@ __rep_do_ckp(dbenv, rec, rp)
DBT *rec;
REP_CONTROL *rp;
{
+ __txn_ckp_args *ckp_args;
DB_LSN ckp_lsn;
- DB_REP *db_rep;
+ REP *rep;
int ret;
- db_rep = dbenv->rep_handle;
+ /* Crack the log record and extract the checkpoint LSN. */
+ if ((ret = __txn_ckp_read(dbenv, rec->data, &ckp_args)) != 0)
+ return (ret);
+ ckp_lsn = ckp_args->ckp_lsn;
+ __os_free(dbenv, ckp_args);
- MUTEX_UNLOCK(dbenv, db_rep->region->mtx_clientdb);
+ rep = dbenv->rep_handle->region;
+ MUTEX_UNLOCK(dbenv, rep->mtx_clientdb);
DB_TEST_WAIT(dbenv, dbenv->test_check);
- /* Sync the memory pool. */
- memcpy(&ckp_lsn, (u_int8_t *)rec->data +
- SSZ(__txn_ckp_args, ckp_lsn), sizeof(DB_LSN));
- ret = __memp_sync(dbenv, &ckp_lsn);
+ /*
+ * Sync the memory pool.
+ *
+ * This is the real PERM lock record/ckp. We cannot return ISPERM
+ * if we haven't truly completed the checkpoint, so we don't allow
+ * this call to be interrupted.
+ *
+ * We may be overlapping our log record with an in-progress startsync
+ * of this checkpoint; suppress the max_write settings on any running
+ * cache-flush operation so it completes quickly.
+ */
+ (void)__memp_set_config(dbenv, DB_MEMP_SUPPRESS_WRITE, 1);
+ MUTEX_LOCK(dbenv, rep->mtx_ckp);
+ ret = __memp_sync(dbenv, DB_SYNC_CHECKPOINT, &ckp_lsn);
+ MUTEX_UNLOCK(dbenv, rep->mtx_ckp);
+ (void)__memp_set_config(dbenv, DB_MEMP_SUPPRESS_WRITE, 0);
/* Update the last_ckp in the txn region. */
if (ret == 0)
@@ -1214,8 +1564,8 @@ __rep_do_ckp(dbenv, rec, rp)
(u_long)ckp_lsn.file, (u_long)ckp_lsn.offset);
ret = __db_panic(dbenv, ret);
}
- MUTEX_LOCK(dbenv, db_rep->region->mtx_clientdb);
+ MUTEX_LOCK(dbenv, rep->mtx_clientdb);
return (ret);
}
@@ -1243,9 +1593,9 @@ __rep_remfirst(dbenv, cntrl, rec)
/* The DBTs need to persist through another call. */
F_SET(cntrl, DB_DBT_REALLOC);
F_SET(rec, DB_DBT_REALLOC);
- if ((ret = __db_c_get(dbc, cntrl, rec, DB_RMW | DB_FIRST)) == 0)
- ret = __db_c_del(dbc, 0);
- if ((t_ret = __db_c_close(dbc)) != 0 && ret == 0)
+ if ((ret = __dbc_get(dbc, cntrl, rec, DB_RMW | DB_FIRST)) == 0)
+ ret = __dbc_del(dbc, 0);
+ if ((t_ret = __dbc_close(dbc)) != 0 && ret == 0)
ret = t_ret;
return (ret);
@@ -1292,7 +1642,7 @@ __rep_getnext(dbenv)
nextrec_dbt.ulen = nextrec_dbt.dlen = 0;
memset(&lsn_dbt, 0, sizeof(lsn_dbt));
- ret = __db_c_get(dbc, &lsn_dbt, &nextrec_dbt, DB_FIRST);
+ ret = __dbc_get(dbc, &lsn_dbt, &nextrec_dbt, DB_FIRST);
if (ret != DB_NOTFOUND && ret != 0)
goto err;
@@ -1309,7 +1659,7 @@ __rep_getnext(dbenv)
rp = (REP_CONTROL *)lsn_dbt.data;
lp->waiting_lsn = rp->lsn;
-err: if ((t_ret = __db_c_close(dbc)) != 0 && ret == 0)
+err: if ((t_ret = __dbc_close(dbc)) != 0 && ret == 0)
ret = t_ret;
return (ret);
}
@@ -1323,38 +1673,31 @@ err: if ((t_ret = __db_c_close(dbc)) != 0 && ret == 0)
* the log.
*/
static int
-__rep_process_rec(dbenv, rp, rec, typep, ret_lsnp)
+__rep_process_rec(dbenv, rp, rec, ret_tsp, ret_lsnp)
DB_ENV *dbenv;
REP_CONTROL *rp;
DBT *rec;
- u_int32_t *typep;
+ db_timespec *ret_tsp;
DB_LSN *ret_lsnp;
{
DB *dbp;
- DB_LOG *dblp;
DB_REP *db_rep;
DBT control_dbt, key_dbt, rec_dbt;
- LOG *lp;
REP *rep;
- u_int32_t txnid;
+ u_int32_t rectype, txnid;
int ret, t_ret;
db_rep = dbenv->rep_handle;
rep = db_rep->region;
dbp = db_rep->rep_db;
- dblp = dbenv->lg_handle;
- lp = dblp->reginfo.primary;
ret = 0;
if (rp->rectype == REP_NEWFILE) {
- ret = __rep_newfile(dbenv, rp, rec, &lp->ready_lsn);
-
- /* Make this evaluate to a simple rectype. */
- *typep = 0;
+ ret = __rep_newfile(dbenv, rp, rec);
return (0);
}
- memcpy(typep, rec->data, sizeof(*typep));
+ memcpy(&rectype, rec->data, sizeof(rectype));
memset(&control_dbt, 0, sizeof(control_dbt));
memset(&rec_dbt, 0, sizeof(rec_dbt));
@@ -1376,17 +1719,17 @@ __rep_process_rec(dbenv, rp, rec, typep, ret_lsnp)
* are added to the bookkeeping database because ready_lsn is not yet
* updated to point after the checkpoint record.
*/
- if (*typep != DB___txn_ckp || F_ISSET(rep, REP_F_RECOVER_LOG)) {
- if ((ret = __log_rep_put(dbenv, &rp->lsn, rec)) != 0)
+ if (rectype != DB___txn_ckp || F_ISSET(rep, REP_F_RECOVER_LOG)) {
+ if ((ret = __log_rep_put(dbenv, &rp->lsn, rec, 0)) != 0)
return (ret);
- rep->stat.st_log_records++;
+ STAT(rep->stat.st_log_records++);
if (F_ISSET(rep, REP_F_RECOVER_LOG)) {
*ret_lsnp = rp->lsn;
goto out;
}
}
- switch (*typep) {
+ switch (rectype) {
case DB___dbreg_register:
/*
* DB opens occur in the context of a transaction, so we can
@@ -1442,6 +1785,13 @@ __rep_process_rec(dbenv, rp, rec, typep, ret_lsnp)
break;
case DB___txn_xa_regop:
ret = __log_flush(dbenv, NULL);
+ /*
+ * Save the biggest prepared LSN we've seen.
+ */
+ rep->max_prep_lsn = rp->lsn;
+ RPRINT(dbenv, (dbenv, "process_rec: prepare at [%lu][%lu]",
+ (u_long)rep->max_prep_lsn.file,
+ (u_long)rep->max_prep_lsn.offset));
break;
case DB___txn_ckp:
/*
@@ -1480,7 +1830,8 @@ __rep_process_rec(dbenv, rp, rec, typep, ret_lsnp)
* checkpoint.
*/
if ((ret = __rep_do_ckp(dbenv, rec, rp)) == 0)
- ret = __log_rep_put(dbenv, &rp->lsn, rec);
+ ret = __log_rep_put(dbenv, &rp->lsn, rec,
+ DB_LOG_CHKPNT);
if ((t_ret = __rep_remfirst(dbenv,
&control_dbt, &rec_dbt)) != 0 && ret == 0)
ret = t_ret;
@@ -1498,6 +1849,16 @@ __rep_process_rec(dbenv, rp, rec, typep, ret_lsnp)
out:
if (ret == 0 && F_ISSET(rp, REPCTL_PERM))
*ret_lsnp = rp->lsn;
+ if (IS_USING_LEASES(dbenv) &&
+ F_ISSET(rp, REPCTL_LEASE))
+ *ret_tsp = rp->msg_time;
+ /*
+ * Set ret_lsnp before flushing the log because if the
+ * flush fails, we've still written the record to the
+ * log and the LSN has been entered.
+ */
+ if (ret == 0 && F_ISSET(rp, REPCTL_FLUSH))
+ ret = __log_flush(dbenv, NULL);
if (control_dbt.data != NULL)
__os_ufree(dbenv, control_dbt.data);
if (rec_dbt.data != NULL)
@@ -1511,8 +1872,10 @@ out:
* We might have dropped a message, we need to resend our request.
* The request we send is dependent on what recovery state we're in.
* The caller holds no locks.
+ *
+ * PUBLIC: int __rep_resend_req __P((DB_ENV *, int));
*/
-static int
+int
__rep_resend_req(dbenv, rereq)
DB_ENV *dbenv;
int rereq;
@@ -1650,3 +2013,66 @@ __rep_skip_msg(dbenv, rep, eid, rectype)
}
return (ret);
}
+
+static int
+__rep_fire_newmaster(dbenv, gen, master)
+ DB_ENV *dbenv;
+ u_int32_t gen;
+ int master;
+{
+ DB_REP *db_rep;
+ REP *rep;
+
+ db_rep = dbenv->rep_handle;
+ rep = db_rep->region;
+
+ REP_EVENT_LOCK(dbenv);
+ /*
+ * The firing of this event should be idempotent with respect to a
+ * particular generation number.
+ */
+ if (rep->newmaster_event_gen < gen) {
+ __rep_fire_event(dbenv, DB_EVENT_REP_NEWMASTER, &master);
+ rep->newmaster_event_gen = gen;
+ }
+ REP_EVENT_UNLOCK(dbenv);
+ return (0);
+}
+
+static int
+__rep_fire_startupdone(dbenv, gen, master)
+ DB_ENV *dbenv;
+ u_int32_t gen;
+ int master;
+{
+ DB_REP *db_rep;
+ REP *rep;
+
+ db_rep = dbenv->rep_handle;
+ rep = db_rep->region;
+
+ REP_EVENT_LOCK(dbenv);
+ /*
+ * Usually NEWMASTER will already have been fired. But if not, fire
+ * it here now, to ensure the application receives events in the
+ * expected order.
+ */
+ if (rep->newmaster_event_gen < gen) {
+ __rep_fire_event(dbenv, DB_EVENT_REP_NEWMASTER, &master);
+ rep->newmaster_event_gen = gen;
+ }
+
+ /*
+ * Caller already ensures that it only tries to fire STARTUPDONE once
+ * per generation. If we did not want to rely on that, we could add a
+ * simple boolean flag (to the set of data protected by the mtx_event).
+ * The precise meaning of that flag would be "STARTUPDONE has been fired
+ * for the generation value stored in `newmaster_event_gen'". Then the
+ * more accurate test here would be simply to check that flag, and fire
+ * the event (and set the flag) if it were not already set.
+ */
+ if (rep->newmaster_event_gen == gen)
+ __rep_fire_event(dbenv, DB_EVENT_REP_STARTUPDONE, NULL);
+ REP_EVENT_UNLOCK(dbenv);
+ return (0);
+}
diff --git a/db/rep/rep_region.c b/db/rep/rep_region.c
index dc500d1cf..6c12ac519 100644
--- a/db/rep/rep_region.c
+++ b/db/rep/rep_region.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2001-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2001,2007 Oracle. All rights reserved.
*
- * $Id: rep_region.c,v 12.29 2006/08/24 14:46:25 bostic Exp $
+ * $Id: rep_region.c,v 12.48 2007/06/19 19:43:45 sue Exp $
*/
#include "db_config.h"
@@ -15,6 +14,7 @@
#include "dbinc/log.h"
static int __rep_egen_init __P((DB_ENV *, REP *));
+static int __rep_gen_init __P((DB_ENV *, REP *));
/*
* __rep_open --
@@ -39,7 +39,7 @@ __rep_open(dbenv)
if (renv->rep_off == INVALID_ROFF) {
/* Must create the region. */
- if ((ret = __db_shalloc(infop, sizeof(REP), 0, &rep)) != 0)
+ if ((ret = __env_alloc(infop, sizeof(REP), &rep)) != 0)
return (ret);
memset(rep, 0, sizeof(*rep));
@@ -62,15 +62,27 @@ __rep_open(dbenv)
dbenv, MTX_REP_DATABASE, 0, &rep->mtx_clientdb)) != 0)
return (ret);
+ if ((ret = __mutex_alloc(
+ dbenv, MTX_REP_CKP, 0, &rep->mtx_ckp)) != 0)
+ return (ret);
+
+ if ((ret = __mutex_alloc(
+ dbenv, MTX_REP_EVENT, 0, &rep->mtx_event)) != 0)
+ return (ret);
+
+ rep->newmaster_event_gen = 0;
+ rep->notified_egen = 0;
+ rep->lease_off = INVALID_ROFF;
rep->tally_off = INVALID_ROFF;
rep->v2tally_off = INVALID_ROFF;
rep->eid = db_rep->eid;
rep->master_id = DB_EID_INVALID;
rep->gen = 0;
rep->version = DB_REPVERSION;
+ if ((ret = __rep_gen_init(dbenv, rep)) != 0)
+ return (ret);
if ((ret = __rep_egen_init(dbenv, rep)) != 0)
return (ret);
- rep->gen = 0;
rep->gbytes = db_rep->gbytes;
rep->bytes = db_rep->bytes;
rep->request_gap = db_rep->request_gap;
@@ -78,6 +90,12 @@ __rep_open(dbenv)
rep->config_nsites = db_rep->config_nsites;
rep->config = db_rep->config;
rep->elect_timeout = db_rep->elect_timeout;
+ rep->full_elect_timeout = db_rep->full_elect_timeout;
+ rep->lease_timeout = db_rep->lease_timeout;
+ rep->clock_skew = db_rep->clock_skew;
+ timespecclear(&rep->lease_duration);
+ timespecclear(&rep->grant_expire);
+ rep->chkpt_delay = db_rep->chkpt_delay;
rep->priority = db_rep->my_priority;
F_SET(rep, REP_F_NOARCHIVE);
@@ -96,68 +114,79 @@ __rep_open(dbenv)
}
/*
- * __rep_region_destroy --
- * Destroy any system resources allocated in the replication region.
+ * __rep_env_refresh --
+ * Replication-specific refresh of the DB_ENV structure.
*
- * PUBLIC: int __rep_region_destroy __P((DB_ENV *));
+ * PUBLIC: int __rep_env_refresh __P((DB_ENV *));
*/
int
-__rep_region_destroy(dbenv)
+__rep_env_refresh(dbenv)
DB_ENV *dbenv;
{
DB_REP *db_rep;
REGENV *renv;
REGINFO *infop;
+ REP *rep;
int ret, t_ret;
- if (!REP_ON(dbenv))
- return (0);
-
- ret = 0;
-
db_rep = dbenv->rep_handle;
- if (db_rep->region != NULL) {
- ret = __mutex_free(dbenv, &db_rep->region->mtx_region);
- if ((t_ret = __mutex_free(
- dbenv, &db_rep->region->mtx_clientdb)) != 0 && ret == 0)
- ret = t_ret;
- }
-
+ rep = db_rep->region;
infop = dbenv->reginfo;
renv = infop->primary;
- if (renv->rep_off != INVALID_ROFF)
- __db_shalloc_free(infop, R_ADDR(infop, renv->rep_off));
+ ret = 0;
- return (ret);
-}
+ /*
+ * If we are the last reference closing the env, clear our knowledge of
+ * belonging to a group and that there is a valid handle where
+ * rep_start had already been called.
+ */
+ if (renv->refcnt == 1) {
+ F_CLR(rep, REP_F_GROUP_ESTD);
+ F_CLR(rep, REP_F_START_CALLED);
+ }
+
+ /*
+ * If a private region, return the memory to the heap. Not needed for
+ * filesystem-backed or system shared memory regions, that memory isn't
+ * owned by any particular process.
+ */
+ if (F_ISSET(dbenv, DB_ENV_PRIVATE)) {
+ db_rep = dbenv->rep_handle;
+ if (db_rep->region != NULL) {
+ ret = __mutex_free(dbenv, &db_rep->region->mtx_region);
+ if ((t_ret = __mutex_free(dbenv,
+ &db_rep->region->mtx_clientdb)) != 0 && ret == 0)
+ ret = t_ret;
+ if ((t_ret = __mutex_free(dbenv,
+ &db_rep->region->mtx_ckp)) != 0 && ret == 0)
+ ret = t_ret;
+ if ((t_ret = __mutex_free(dbenv,
+ &db_rep->region->mtx_event)) != 0 && ret == 0)
+ ret = t_ret;
+ }
+
+ if (renv->rep_off != INVALID_ROFF)
+ __env_alloc_free(infop, R_ADDR(infop, renv->rep_off));
+ }
-/*
- * __rep_dbenv_refresh --
- * Replication-specific refresh of the DB_ENV structure.
- *
- * PUBLIC: void __rep_dbenv_refresh __P((DB_ENV *));
- */
-void
-__rep_dbenv_refresh(dbenv)
- DB_ENV *dbenv;
-{
dbenv->rep_handle->region = NULL;
+ return (ret);
}
/*
* __rep_close --
* Shut down all of replication.
*
- * PUBLIC: int __rep_close __P((DB_ENV *));
+ * PUBLIC: int __rep_env_close __P((DB_ENV *));
*/
int
-__rep_close(dbenv)
+__rep_env_close(dbenv)
DB_ENV *dbenv;
{
int ret, t_ret;
ret = __rep_preclose(dbenv);
- if ((t_ret = __rep_closefiles(dbenv)) != 0 && ret == 0)
+ if ((t_ret = __rep_closefiles(dbenv, 0)) != 0 && ret == 0)
ret = t_ret;
return (ret);
}
@@ -232,11 +261,12 @@ out: MUTEX_UNLOCK(dbenv, db_rep->region->mtx_clientdb);
* be called from __env_close and we need to check if the env,
* handles and regions are set up, or not.
*
- * PUBLIC: int __rep_closefiles __P((DB_ENV *));
+ * PUBLIC: int __rep_closefiles __P((DB_ENV *, int));
*/
int
-__rep_closefiles(dbenv)
+__rep_closefiles(dbenv, do_restored)
DB_ENV *dbenv;
+ int do_restored;
{
DB_LOG *dblp;
DB_REP *db_rep;
@@ -247,11 +277,11 @@ __rep_closefiles(dbenv)
db_rep = dbenv->rep_handle;
dblp = dbenv->lg_handle;
- if (db_rep == NULL)
+ if (db_rep == NULL || db_rep->region == NULL)
return (ret);
if (dblp == NULL)
return (ret);
- if ((ret = __dbreg_close_files(dbenv)) == 0)
+ if ((ret = __dbreg_close_files(dbenv, do_restored)) == 0)
F_CLR(db_rep, DBREP_OPENFILES);
return (ret);
@@ -273,9 +303,6 @@ __rep_egen_init(dbenv, rep)
int ret;
size_t cnt;
char *p;
-#ifdef DIAGNOSTIC
- DB_MSGBUF mb;
-#endif
if ((ret =
__db_appname(dbenv, DB_APP_NONE, REP_EGENNAME, 0, NULL, &p)) != 0)
@@ -291,14 +318,13 @@ __rep_egen_init(dbenv, rep)
/*
* File exists, open it and read in our egen.
*/
- if ((ret = __os_open(dbenv, p, DB_OSO_RDONLY,
- __db_omode(OWNER_RW), &fhp)) != 0)
+ if ((ret = __os_open(dbenv, p, 0,
+ DB_OSO_RDONLY, __db_omode(OWNER_RW), &fhp)) != 0)
goto err;
if ((ret = __os_read(dbenv, fhp, &rep->egen, sizeof(u_int32_t),
- &cnt)) < 0 || cnt == 0)
+ &cnt)) != 0 || cnt != sizeof(u_int32_t))
goto err1;
- RPRINT(dbenv, (dbenv, &mb, "Read in egen %lu",
- (u_long)rep->egen));
+ RPRINT(dbenv, (dbenv, "Read in egen %lu", (u_long)rep->egen));
err1: (void)__os_closehandle(dbenv, fhp);
}
err: __os_free(dbenv, p);
@@ -324,7 +350,7 @@ __rep_write_egen(dbenv, egen)
if ((ret =
__db_appname(dbenv, DB_APP_NONE, REP_EGENNAME, 0, NULL, &p)) != 0)
return (ret);
- if ((ret = __os_open(dbenv, p, DB_OSO_CREATE | DB_OSO_TRUNC,
+ if ((ret = __os_open(dbenv, p, 0, DB_OSO_CREATE | DB_OSO_TRUNC,
__db_omode(OWNER_RW), &fhp)) == 0) {
if ((ret = __os_write(dbenv, fhp, &egen, sizeof(u_int32_t),
&cnt)) != 0 || ((ret = __os_fsync(dbenv, fhp)) != 0))
@@ -334,3 +360,78 @@ __rep_write_egen(dbenv, egen)
__os_free(dbenv, p);
return (ret);
}
+
+/*
+ * __rep_gen_init --
+ * Initialize the value of gen in the region. Called only from
+ * __rep_region_init, which is guaranteed to be single-threaded
+ * as we create the rep region. We set the rep->gen field which
+ * is normally protected by db_rep->region->mutex.
+ */
+static int
+__rep_gen_init(dbenv, rep)
+ DB_ENV *dbenv;
+ REP *rep;
+{
+ DB_FH *fhp;
+ int ret;
+ size_t cnt;
+ char *p;
+
+ if ((ret =
+ __db_appname(dbenv, DB_APP_NONE, REP_GENNAME, 0, NULL, &p)) != 0)
+ return (ret);
+ /*
+ * If the file doesn't exist, create it now and initialize with 0.
+ */
+ if (__os_exists(dbenv, p, NULL) != 0) {
+ rep->gen = 0;
+ if ((ret = __rep_write_gen(dbenv, rep->gen)) != 0)
+ goto err;
+ } else {
+ /*
+ * File exists, open it and read in our gen.
+ */
+ if ((ret = __os_open(dbenv, p, 0,
+ DB_OSO_RDONLY, __db_omode(OWNER_RW), &fhp)) != 0)
+ goto err;
+ if ((ret = __os_read(dbenv, fhp, &rep->gen, sizeof(u_int32_t),
+ &cnt)) < 0 || cnt == 0)
+ goto err1;
+ RPRINT(dbenv, (dbenv, "Read in gen %lu",
+ (u_long)rep->gen));
+err1: (void)__os_closehandle(dbenv, fhp);
+ }
+err: __os_free(dbenv, p);
+ return (ret);
+}
+
+/*
+ * __rep_write_gen --
+ * Write out the gen into the env file.
+ *
+ * PUBLIC: int __rep_write_gen __P((DB_ENV *, u_int32_t));
+ */
+int
+__rep_write_gen(dbenv, gen)
+ DB_ENV *dbenv;
+ u_int32_t gen;
+{
+ DB_FH *fhp;
+ int ret;
+ size_t cnt;
+ char *p;
+
+ if ((ret =
+ __db_appname(dbenv, DB_APP_NONE, REP_GENNAME, 0, NULL, &p)) != 0)
+ return (ret);
+ if ((ret = __os_open(dbenv, p, 0, DB_OSO_CREATE | DB_OSO_TRUNC,
+ __db_omode(OWNER_RW), &fhp)) == 0) {
+ if ((ret = __os_write(dbenv, fhp, &gen, sizeof(u_int32_t),
+ &cnt)) != 0 || ((ret = __os_fsync(dbenv, fhp)) != 0))
+ __db_err(dbenv, ret, "%s", p);
+ (void)__os_closehandle(dbenv, fhp);
+ }
+ __os_free(dbenv, p);
+ return (ret);
+}
diff --git a/db/rep/rep_stat.c b/db/rep/rep_stat.c
index ab8a993ce..38f02e2cf 100644
--- a/db/rep/rep_stat.c
+++ b/db/rep/rep_stat.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2001-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2001,2007 Oracle. All rights reserved.
*
- * $Id: rep_stat.c,v 12.16 2006/09/07 16:51:04 bostic Exp $
+ * $Id: rep_stat.c,v 12.26 2007/06/21 16:32:24 alanb Exp $
*/
#include "db_config.h"
@@ -64,7 +63,7 @@ __rep_stat(dbenv, statp, flags)
DB_REP_STAT *stats;
LOG *lp;
REP *rep;
- u_int32_t queued;
+ u_int32_t queued, startupdone;
int dolock, ret;
db_rep = dbenv->rep_handle;
@@ -118,9 +117,11 @@ __rep_stat(dbenv, statp, flags)
if (LF_ISSET(DB_STAT_CLEAR)) {
queued = rep->stat.st_log_queued;
+ startupdone = rep->stat.st_startup_complete;
memset(&rep->stat, 0, sizeof(rep->stat));
rep->stat.st_log_queued = rep->stat.st_log_queued_total =
rep->stat.st_log_queued_max = queued;
+ rep->stat.st_startup_complete = startupdone;
}
/*
@@ -135,9 +136,11 @@ __rep_stat(dbenv, statp, flags)
stats->st_next_pg = rep->ready_pg;
stats->st_waiting_pg = rep->waiting_pg;
} else {
- if (F_ISSET(rep, REP_F_MASTER))
+ if (F_ISSET(rep, REP_F_MASTER)) {
+ LOG_SYSTEM_LOCK(dbenv);
stats->st_next_lsn = lp->lsn;
- else
+ LOG_SYSTEM_UNLOCK(dbenv);
+ } else
ZERO_LSN(stats->st_next_lsn);
ZERO_LSN(stats->st_waiting_lsn);
}
@@ -192,7 +195,7 @@ __rep_stat_print(dbenv, flags)
int ret;
orig_flags = flags;
- LF_CLR(DB_STAT_CLEAR);
+ LF_CLR(DB_STAT_CLEAR | DB_STAT_SUBSYSTEM);
if (flags == 0 || LF_ISSET(DB_STAT_ALL)) {
ret = __rep_print_stats(dbenv, orig_flags);
if (flags == 0 || ret != 0)
@@ -316,6 +319,9 @@ __rep_print_stats(dbenv, flags)
__db_dl(dbenv,
"Number of transactions applied", (u_long)sp->st_txns_applied);
+ __db_dl(dbenv, "Number of startsync messages delayed",
+ (u_long)sp->st_startsync_delayed);
+
__db_dl(dbenv, "Number of elections held", (u_long)sp->st_elections);
__db_dl(dbenv,
"Number of elections won", (u_long)sp->st_elections_won);
@@ -367,11 +373,6 @@ __rep_print_stats(dbenv, flags)
__os_ufree(dbenv, sp);
-#ifdef HAVE_REPLICATION_THREADS
- if ((ret = __repmgr_print_stats(dbenv)) != 0)
- return (ret);
-#endif
-
return (0);
}
@@ -388,10 +389,13 @@ __rep_print_all(dbenv, flags)
{ REP_F_CLIENT, "REP_F_CLIENT" },
{ REP_F_EPHASE1, "REP_F_EPHASE1" },
{ REP_F_EPHASE2, "REP_F_EPHASE2" },
+ { REP_F_INREPELECT, "REP_F_INREPELECT" },
{ REP_F_MASTER, "REP_F_MASTER" },
{ REP_F_MASTERELECT, "REP_F_MASTERELECT" },
{ REP_F_NOARCHIVE, "REP_F_NOARCHIVE" },
- { REP_F_READY, "REP_F_READY" },
+ { REP_F_READY_API, "REP_F_READY_API" },
+ { REP_F_READY_MSG, "REP_F_READY_MSG" },
+ { REP_F_READY_OP, "REP_F_READY_OP" },
{ REP_F_RECOVER_LOG, "REP_F_RECOVER_LOG" },
{ REP_F_RECOVER_PAGE, "REP_F_RECOVER_PAGE" },
{ REP_F_RECOVER_UPDATE, "REP_F_RECOVER_UPDATE" },
@@ -447,12 +451,9 @@ __rep_print_all(dbenv, flags)
STAT_ULONG("Request gap", rep->request_gap);
STAT_ULONG("Maximum gap", rep->max_gap);
- STAT_LONG("Thread is in rep_elect", rep->elect_th);
STAT_ULONG("Callers in rep_proc_msg", rep->msg_th);
- STAT_LONG("Thread is in msg lockout", rep->lockout_th);
STAT_ULONG("Library handle count", rep->handle_cnt);
STAT_ULONG("Multi-step operation count", rep->op_cnt);
- STAT_LONG("Running recovery", rep->in_recovery);
__db_msg(dbenv, "%.24s\tRecovery timestamp",
renv->rep_timestamp == 0 ?
"0" : __db_ctime(&renv->rep_timestamp, time_buf));
diff --git a/db/rep/rep_stub.c b/db/rep/rep_stub.c
index 354bca4d0..d090fab83 100644
--- a/db/rep/rep_stub.c
+++ b/db/rep/rep_stub.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: rep_stub.c,v 12.18 2006/08/24 14:46:25 bostic Exp $
+ * $Id: rep_stub.c,v 12.32 2007/06/08 14:46:00 bostic Exp $
*/
#ifndef HAVE_REPLICATION
@@ -22,7 +21,7 @@ static int __db_norep __P((DB_ENV *));
/*
* __db_norep --
- * Error when a Berkeley DB build doesn't include the access method.
+ * Error when a Berkeley DB build doesn't include replication support.
*/
static int
__db_norep(dbenv)
@@ -91,24 +90,22 @@ __rep_bulk_message(dbenv, bulkp, repth, lsnp, dbt, flags)
return (__db_norep(dbenv));
}
-void
-__rep_dbenv_refresh(dbenv)
+int
+__rep_env_refresh(dbenv)
DB_ENV *dbenv;
{
COMPQUIET(dbenv, NULL);
- return;
+ return (0);
}
int
-__rep_elect(dbenv, nsites, nvotes, eidp, flags)
+__rep_elect(dbenv, nsites, nvotes, flags)
DB_ENV *dbenv;
int nsites, nvotes;
u_int32_t flags;
- int *eidp;
{
COMPQUIET(nsites, 0);
COMPQUIET(nvotes, 0);
- COMPQUIET(eidp, NULL);
COMPQUIET(flags, 0);
return (__db_norep(dbenv));
}
@@ -121,6 +118,34 @@ __rep_flush(dbenv)
}
int
+__rep_lease_check(dbenv, refresh)
+ DB_ENV *dbenv;
+ int refresh;
+{
+ COMPQUIET(refresh, 0);
+ return (__db_norep(dbenv));
+}
+
+int
+__rep_lease_expire(dbenv, locked)
+ DB_ENV *dbenv;
+ int locked;
+{
+ COMPQUIET(locked, 0);
+ return (__db_norep(dbenv));
+}
+
+int
+__rep_set_lease(dbenv, clock_scale_factor, flags)
+ DB_ENV *dbenv;
+ u_int32_t clock_scale_factor, flags;
+{
+ COMPQUIET(clock_scale_factor, 0);
+ COMPQUIET(flags, 0);
+ return (__db_norep(dbenv));
+}
+
+int
__rep_set_nsites(dbenv, n)
DB_ENV *dbenv;
int n;
@@ -211,15 +236,6 @@ __rep_get_limit(dbenv, gbytesp, bytesp)
}
int
-__rep_get_gen(dbenv, genp)
- DB_ENV *dbenv;
- u_int32_t *genp;
-{
- COMPQUIET(genp, NULL);
- return (__db_norep(dbenv));
-}
-
-int
__rep_noarchive(dbenv)
DB_ENV *dbenv;
{
@@ -243,28 +259,20 @@ __rep_preclose(dbenv)
}
int
-__rep_process_message(dbenv, control, rec, eidp, ret_lsnp)
+__rep_process_message(dbenv, control, rec, eid, ret_lsnp)
DB_ENV *dbenv;
DBT *control, *rec;
- int *eidp;
+ int eid;
DB_LSN *ret_lsnp;
{
COMPQUIET(control, NULL);
COMPQUIET(rec, NULL);
- COMPQUIET(eidp, NULL);
+ COMPQUIET(eid, 0);
COMPQUIET(ret_lsnp, NULL);
return (__db_norep(dbenv));
}
int
-__rep_region_destroy(dbenv)
- DB_ENV *dbenv;
-{
- COMPQUIET(dbenv, NULL);
- return (0);
-}
-
-int
__rep_send_message(dbenv, eid, rtype, lsnp, dbtp, logflags, repflags)
DB_ENV *dbenv;
int eid;
diff --git a/db/rep/rep_util.c b/db/rep/rep_util.c
index f624a136c..9510734ce 100644
--- a/db/rep/rep_util.c
+++ b/db/rep/rep_util.c
@@ -1,16 +1,18 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2001-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2001,2007 Oracle. All rights reserved.
*
- * $Id: rep_util.c,v 12.73 2006/09/15 15:59:37 alanb Exp $
+ * $Id: rep_util.c,v 12.115 2007/06/22 18:46:45 paula Exp $
*/
#include "db_config.h"
#include "db_int.h"
+#include "dbinc/db_page.h"
+#include "dbinc/db_am.h"
#include "dbinc/log.h"
+#include "dbinc/mp.h"
#include "dbinc/txn.h"
#ifdef REP_DIAGNOSTIC
@@ -26,7 +28,6 @@
* Miscellaneous replication-related utility functions, including
* those called by other subsystems.
*/
-
#define TIMESTAMP_CHECK(dbenv, ts, renv) do { \
if (renv->op_timestamp != 0 && \
renv->op_timestamp + DB_REGENV_TIMEOUT < ts) { \
@@ -37,7 +38,9 @@
} \
} while (0)
-static int __rep_newmaster_empty __P((DB_ENV *, DB_LSN *, REP_CONTROL *, int));
+static int __rep_lockout_int __P((DB_ENV *, REP *, u_int32_t *, u_int32_t,
+ const char *, u_int32_t));
+static int __rep_newmaster_empty __P((DB_ENV *, int));
#ifdef REP_DIAGNOSTIC
static void __rep_print_logmsg __P((DB_ENV *, const DBT *, DB_LSN *));
#endif
@@ -66,9 +69,6 @@ __rep_bulk_message(dbenv, bulk, repth, lsn, dbt, flags)
int ret;
u_int32_t recsize, typemore;
u_int8_t *p;
-#ifdef DIAGNOSTIC
- DB_MSGBUF mb;
-#endif
db_rep = dbenv->rep_handle;
rep = db_rep->region;
@@ -97,10 +97,10 @@ __rep_bulk_message(dbenv, bulk, repth, lsn, dbt, flags)
* do that here? XXX
*/
if (recsize > bulk->len) {
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"bulk_msg: Record %d (0x%x) larger than entire buffer 0x%x",
recsize, recsize, bulk->len));
- rep->stat.st_bulk_overflows++;
+ STAT(rep->stat.st_bulk_overflows++);
(void)__rep_send_bulk(dbenv, bulk, flags);
/*
* XXX __rep_send_message...
@@ -115,13 +115,15 @@ __rep_bulk_message(dbenv, bulk, repth, lsn, dbt, flags)
* if we're racing.
*/
while (recsize + *(bulk->offp) > bulk->len) {
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"bulk_msg: Record %lu (%#lx) doesn't fit. Send %lu (%#lx) now.",
(u_long)recsize, (u_long)recsize,
(u_long)bulk->len, (u_long)bulk->len));
- rep->stat.st_bulk_fills++;
- if ((ret = __rep_send_bulk(dbenv, bulk, flags)) != 0)
- break;
+ STAT(rep->stat.st_bulk_fills++);
+ if ((ret = __rep_send_bulk(dbenv, bulk, flags)) != 0) {
+ MUTEX_UNLOCK(dbenv, rep->mtx_clientdb);
+ return (ret);
+ }
}
/*
@@ -135,14 +137,19 @@ __rep_bulk_message(dbenv, bulk, repth, lsn, dbt, flags)
typemore = REP_LOG_MORE;
else
typemore = REP_PAGE_MORE;
- if (repth != NULL &&
- (ret = __rep_send_throttle(dbenv, bulk->eid, repth,
- REP_THROTTLE_ONLY)) == 0 && repth->type == typemore) {
- RPRINT(dbenv, (dbenv, &mb,
- "bulk_msg: Record %d (0x%x) hit throttle limit.",
- recsize, recsize));
- MUTEX_UNLOCK(dbenv, rep->mtx_clientdb);
- return (ret);
+ if (repth != NULL) {
+ if ((ret = __rep_send_throttle(dbenv,
+ bulk->eid, repth, REP_THROTTLE_ONLY, flags)) != 0) {
+ MUTEX_UNLOCK(dbenv, rep->mtx_clientdb);
+ return (ret);
+ }
+ if (repth->type == typemore) {
+ RPRINT(dbenv, (dbenv,
+ "bulk_msg: Record %lu (0x%lx) hit throttle limit.",
+ (u_long)recsize, (u_long)recsize));
+ MUTEX_UNLOCK(dbenv, rep->mtx_clientdb);
+ return (ret);
+ }
}
/*
@@ -163,7 +170,7 @@ __rep_bulk_message(dbenv, bulk, repth, lsn, dbt, flags)
* this record. For pages, the LSN is used by the internal init code.
*/
memcpy(p, lsn, sizeof(DB_LSN));
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"bulk_msg: Copying LSN [%lu][%lu] of %lu bytes to %#lx",
(u_long)lsn->file, (u_long)lsn->offset, (u_long)dbt->size,
P_TO_ULONG(p)));
@@ -180,14 +187,13 @@ __rep_bulk_message(dbenv, bulk, repth, lsn, dbt, flags)
memcpy(p, dbt->data, dbt->size);
p += dbt->size;
*(bulk->offp) = (uintptr_t)p - (uintptr_t)bulk->addr;
- rep->stat.st_bulk_records++;
+ STAT(rep->stat.st_bulk_records++);
/*
* Send the buffer if it is a perm record or a force.
*/
- if (LF_ISSET(REPCTL_PERM) || FLD_ISSET(*(bulk->flagsp), BULK_FORCE)) {
- RPRINT(dbenv, (dbenv, &mb,
- "bulk_msg: Send buffer after copy due to %s",
- LF_ISSET(REPCTL_PERM) ? "PERM" : "FORCE"));
+ if (LF_ISSET(REPCTL_PERM)) {
+ RPRINT(dbenv, (dbenv,
+ "bulk_msg: Send buffer after copy due to PERM"));
ret = __rep_send_bulk(dbenv, bulk, flags);
}
MUTEX_UNLOCK(dbenv, rep->mtx_clientdb);
@@ -213,9 +219,6 @@ __rep_send_bulk(dbenv, bulkp, ctlflags)
REP *rep;
DBT dbt;
int ret;
-#ifdef DIAGNOSTIC
- DB_MSGBUF mb;
-#endif
/*
* If the offset is 0, we're done. There is nothing to send.
@@ -232,15 +235,16 @@ __rep_send_bulk(dbenv, bulkp, ctlflags)
FLD_SET(*(bulkp->flagsp), BULK_XMIT);
DB_INIT_DBT(dbt, bulkp->addr, *(bulkp->offp));
MUTEX_UNLOCK(dbenv, rep->mtx_clientdb);
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"send_bulk: Send %d (0x%x) bulk buffer bytes", dbt.size, dbt.size));
/*
* Unlocked the mutex and now send the message.
*/
- rep->stat.st_bulk_transfers++;
- ret = __rep_send_message(dbenv, bulkp->eid, bulkp->type, &bulkp->lsn,
- &dbt, ctlflags, 0);
+ STAT(rep->stat.st_bulk_transfers++);
+ if ((ret = __rep_send_message(dbenv,
+ bulkp->eid, bulkp->type, &bulkp->lsn, &dbt, ctlflags, 0)) != 0)
+ ret = DB_REP_UNAVAIL;
MUTEX_LOCK(dbenv, rep->mtx_clientdb);
/*
@@ -329,11 +333,9 @@ __rep_send_message(dbenv, eid, rtype, lsnp, dbt, ctlflags, repflags)
LOG *lp;
REP *rep;
REP_CONTROL cntrl;
+ REP_OLD_CONTROL ocntrl;
int ret;
u_int32_t myflags, rectype;
-#ifdef DIAGNOSTIC
- DB_MSGBUF mb;
-#endif
db_rep = dbenv->rep_handle;
rep = db_rep->region;
@@ -348,6 +350,7 @@ __rep_send_message(dbenv, eid, rtype, lsnp, dbt, ctlflags, repflags)
/* Set up control structure. */
memset(&cntrl, 0, sizeof(cntrl));
+ memset(&ocntrl, 0, sizeof(ocntrl));
if (lsnp == NULL)
ZERO_LSN(cntrl.lsn);
else
@@ -359,7 +362,7 @@ __rep_send_message(dbenv, eid, rtype, lsnp, dbt, ctlflags, repflags)
cntrl.rectype = rtype;
else if (rep->version < DB_REPVERSION) {
cntrl.rectype = __rep_msg_to_old(rep->version, rtype);
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"rep_send_msg: rtype %lu to version %lu record %lu.",
(u_long)rtype, (u_long)rep->version,
(u_long)cntrl.rectype));
@@ -376,10 +379,6 @@ __rep_send_message(dbenv, eid, rtype, lsnp, dbt, ctlflags, repflags)
cntrl.log_version = lp->persist.version;
cntrl.gen = rep->gen;
- memset(&cdbt, 0, sizeof(cdbt));
- cdbt.data = &cntrl;
- cdbt.size = sizeof(cntrl);
-
/* Don't assume the send function will be tolerant of NULL records. */
if (dbt == NULL) {
memset(&scrap_dbt, 0, sizeof(DBT));
@@ -413,12 +412,33 @@ __rep_send_message(dbenv, eid, rtype, lsnp, dbt, ctlflags, repflags)
}
/*
+ * Let everyone know if we've been in an established group.
+ */
+ if (F_ISSET(rep, REP_F_GROUP_ESTD))
+ F_SET(&cntrl, REPCTL_GROUP_ESTD);
+
+ /*
* We're sending messages to some other version. We cannot
* assume DB_REP_ANYWHERE is available. Turn it off.
*/
if (rep->version != DB_REPVERSION)
FLD_CLR(myflags, DB_REP_ANYWHERE);
+ /*
+ * If we are a master sending a perm record, then set the
+ * REPCTL_LEASE flag to have the client reply. Also set
+ * the start time that the client will echo back to us.
+ *
+ * !!! If we are a master, using leases, we had better not be
+ * sending to an older version.
+ */
+ if (IS_REP_MASTER(dbenv) && IS_USING_LEASES(dbenv) &&
+ FLD_ISSET(ctlflags, REPCTL_PERM)) {
+ F_SET(&cntrl, REPCTL_LEASE);
+ DB_ASSERT(dbenv, rep->version == DB_REPVERSION);
+ __os_gettime(dbenv, &cntrl.msg_time);
+ }
+
REP_PRINT_MESSAGE(dbenv, eid, &cntrl, "rep_send_message", myflags);
#ifdef REP_DIAGNOSTIC
if (FLD_ISSET(dbenv->verbose, DB_VERB_REPLICATION) && rtype == REP_LOG)
@@ -430,6 +450,25 @@ __rep_send_message(dbenv, eid, rtype, lsnp, dbt, ctlflags, repflags)
*/
DB_ASSERT(dbenv, !FLD_ISSET(myflags, DB_REP_PERMANENT) ||
!IS_ZERO_LSN(cntrl.lsn));
+
+ /*
+ * If we're talking to an old version, send an old control structure.
+ */
+ memset(&cdbt, 0, sizeof(cdbt));
+ if (rep->version < DB_REPVERSION) {
+ ocntrl.rep_version = cntrl.rep_version;
+ ocntrl.log_version = cntrl.log_version;
+ ocntrl.lsn = cntrl.lsn;
+ ocntrl.rectype = cntrl.rectype;
+ ocntrl.gen = cntrl.gen;
+ ocntrl.flags = cntrl.flags;
+ cdbt.data = &ocntrl;
+ cdbt.size = sizeof(ocntrl);
+ } else {
+ cdbt.data = &cntrl;
+ cdbt.size = sizeof(cntrl);
+ }
+
/*
* We set the LSN above to something valid. Give the master the
* actual LSN so that they can coordinate with permanent records from
@@ -442,13 +481,16 @@ __rep_send_message(dbenv, eid, rtype, lsnp, dbt, ctlflags, repflags)
* I don't think it's worth grabbing the mutex for that bit of
* extra accuracy.
*/
- if (ret == 0)
- rep->stat.st_msgs_sent++;
- else {
- rep->stat.st_msgs_send_failures++;
- RPRINT(dbenv, (dbenv, &mb,
+ if (ret != 0) {
+ RPRINT(dbenv, (dbenv,
"rep_send_function returned: %d", ret));
+#ifdef HAVE_STATISTICS
+ rep->stat.st_msgs_send_failures++;
+ } else
+ rep->stat.st_msgs_sent++;
+#else
}
+#endif
return (ret);
}
@@ -512,18 +554,18 @@ __rep_new_master(dbenv, cntrl, eid)
REGENV *renv;
REGINFO *infop;
REP *rep;
+ db_timeout_t lease_to;
+ u_int32_t unused;
int change, do_req, lockout, ret, t_ret;
-#ifdef DIAGNOSTIC
- DB_MSGBUF mb;
-#endif
db_rep = dbenv->rep_handle;
rep = db_rep->region;
+ dblp = dbenv->lg_handle;
+ lp = dblp->reginfo.primary;
ret = 0;
logc = NULL;
lockout = 0;
REP_SYSTEM_LOCK(dbenv);
- __rep_elect_done(dbenv, rep);
change = rep->gen != cntrl->gen || rep->master_id != eid;
if (change) {
/*
@@ -538,41 +580,87 @@ __rep_new_master(dbenv, cntrl, eid)
* our old internal init information. We need to clean
* up any flags and unlock our lockout.
*/
- if (rep->lockout_th != 0)
+ if (F_ISSET(rep, REP_F_READY_MSG))
goto lckout;
if ((ret = __rep_lockout_msg(dbenv, rep, 1)) != 0)
goto errlck;
lockout = 1;
+ /*
+ * We must wait any remaining lease time before accepting
+ * this new master. This must be after the lockout above
+ * to that no new message can be processed and re-grant
+ * the lease out from under us.
+ */
+ if (IS_USING_LEASES(dbenv) &&
+ ((lease_to = __rep_lease_waittime(dbenv)) != 0)) {
+ REP_SYSTEM_UNLOCK(dbenv);
+ __os_sleep(dbenv, 0, (u_long)lease_to);
+ REP_SYSTEM_LOCK(dbenv);
+ }
+
if ((ret = __env_init_rec(dbenv, cntrl->log_version)) != 0)
goto errlck;
- if (rep->in_recovery || F_ISSET(rep, REP_F_READY)) {
- REP_SYSTEM_UNLOCK(dbenv);
- MUTEX_LOCK(dbenv, rep->mtx_clientdb);
- REP_SYSTEM_LOCK(dbenv);
- if (rep->in_recovery || F_ISSET(rep, REP_F_READY)) {
- (void)__rep_init_cleanup(dbenv, rep, DB_FORCE);
- F_CLR(rep, REP_F_RECOVER_MASK);
- rep->in_recovery = 0;
- F_CLR(rep, REP_F_READY);
- }
+ REP_SYSTEM_UNLOCK(dbenv);
+
+ MUTEX_LOCK(dbenv, rep->mtx_clientdb);
+ lp->wait_recs = rep->request_gap;
+ lp->rcvd_recs = 0;
+ ZERO_LSN(lp->verify_lsn);
+ ZERO_LSN(lp->waiting_lsn);
+ ZERO_LSN(lp->max_wait_lsn);
+ /*
+ * Open if we need to, in preparation for the truncate
+ * we'll do in a moment.
+ */
+ if (db_rep->rep_db == NULL &&
+ (ret = __rep_client_dbinit(dbenv, 0, REP_DB)) != 0) {
MUTEX_UNLOCK(dbenv, rep->mtx_clientdb);
+ goto err;
+ }
+
+ REP_SYSTEM_LOCK(dbenv);
+ if (F_ISSET(rep, REP_F_READY_API | REP_F_READY_OP)) {
+ ret = __rep_init_cleanup(dbenv, rep, DB_FORCE);
+ /*
+ * Note that if an in-progress internal init was indeed
+ * "cleaned up", clearing these flags now will allow the
+ * application to see a completely empty database
+ * environment for a moment (until the master responds
+ * to our ALL_REQ).
+ */
+ F_CLR(rep, REP_F_RECOVER_MASK);
}
- RPRINT(dbenv, (dbenv, &mb,
+ MUTEX_UNLOCK(dbenv, rep->mtx_clientdb);
+ if (ret != 0) {
+ /* TODO: consider add'l error recovery steps. */
+ goto errlck;
+ }
+ if ((ret = __db_truncate(db_rep->rep_db, NULL, &unused)) != 0)
+ goto errlck;
+
+ /*
+ * This needs to be performed under message lockout
+ * if we're actually changing master.
+ */
+ __rep_elect_done(dbenv, rep);
+ RPRINT(dbenv, (dbenv,
"Updating gen from %lu to %lu from master %d",
(u_long)rep->gen, (u_long)cntrl->gen, eid));
rep->gen = cntrl->gen;
+ (void)__rep_write_gen(dbenv, rep->gen);
if (rep->egen <= rep->gen)
rep->egen = rep->gen + 1;
- RPRINT(dbenv, (dbenv, &mb,
- "Egen is %lu", (u_long)rep->egen));
rep->master_id = eid;
- rep->stat.st_master_changes++;
+ STAT(rep->stat.st_master_changes++);
rep->stat.st_startup_complete = 0;
__log_set_version(dbenv, cntrl->log_version);
rep->version = cntrl->rep_version;
+ RPRINT(dbenv, (dbenv,
+ "Egen: %lu. RepVersion %lu",
+ (u_long)rep->egen, (u_long)rep->version));
/*
* If we're delaying client sync-up, we know we have a
@@ -582,45 +670,45 @@ __rep_new_master(dbenv, cntrl, eid)
if (FLD_ISSET(rep->config, REP_C_DELAYCLIENT))
F_SET(rep, REP_F_DELAY);
F_SET(rep, REP_F_NOARCHIVE | REP_F_RECOVER_VERIFY);
- rep->lockout_th = 0;
+ F_CLR(rep, REP_F_READY_MSG);
lockout = 0;
- }
+ } else
+ __rep_elect_done(dbenv, rep);
REP_SYSTEM_UNLOCK(dbenv);
- dblp = dbenv->lg_handle;
- lp = dblp->reginfo.primary;
- LOG_SYSTEM_LOCK(dbenv);
- lsn = lp->lsn;
- LOG_SYSTEM_UNLOCK(dbenv);
+ MUTEX_LOCK(dbenv, rep->mtx_clientdb);
+ lsn = lp->ready_lsn;
if (!change) {
+ ret = 0;
+ do_req = __rep_check_doreq(dbenv, rep);
+ MUTEX_UNLOCK(dbenv, rep->mtx_clientdb);
/*
* If there wasn't a change, we might still have some
* catching up or verification to do.
*/
- ret = 0;
- MUTEX_LOCK(dbenv, rep->mtx_clientdb);
- do_req = __rep_check_doreq(dbenv, rep);
- if (F_ISSET(rep, REP_F_RECOVER_VERIFY)) {
- lsn = lp->verify_lsn;
- MUTEX_UNLOCK(dbenv, rep->mtx_clientdb);
- if (!F_ISSET(rep, REP_F_DELAY) &&
- !IS_ZERO_LSN(lsn) && do_req)
- (void)__rep_send_message(dbenv, eid,
- REP_VERIFY_REQ, &lsn, NULL, 0,
- DB_REP_ANYWHERE);
- } else {
- MUTEX_UNLOCK(dbenv, rep->mtx_clientdb);
- if (LOG_COMPARE(&lsn, &cntrl->lsn) < 0 && do_req)
- (void)__rep_send_message(dbenv, eid,
- REP_ALL_REQ, &lsn, NULL,
- 0, DB_REP_ANYWHERE);
+ if (do_req &&
+ (F_ISSET(rep, REP_F_RECOVER_MASK) ||
+ LOG_COMPARE(&lsn, &cntrl->lsn) < 0)) {
+ ret = __rep_resend_req(dbenv, 0);
+ if (ret != 0)
+ RPRINT(dbenv, (dbenv,
+ "resend_req ret is %lu", (u_long)ret));
+ }
+ /*
+ * If we're not in one of the recovery modes, we need to
+ * clear the NOARCHIVE flag. Elections set NOARCHIVE
+ * and if we called an election and found the same
+ * master, we need to clear NOARCHIVE here.
+ */
+ if (!F_ISSET(rep, REP_F_RECOVER_MASK)) {
REP_SYSTEM_LOCK(dbenv);
F_CLR(rep, REP_F_NOARCHIVE);
REP_SYSTEM_UNLOCK(dbenv);
}
return (ret);
}
+ MUTEX_UNLOCK(dbenv, rep->mtx_clientdb);
/*
* If the master changed, we need to start the process of
@@ -631,8 +719,9 @@ __rep_new_master(dbenv, cntrl, eid)
* records from the master.
*/
if (IS_INIT_LSN(lsn) || IS_ZERO_LSN(lsn)) {
- if ((ret = __rep_newmaster_empty(dbenv, &lsn, cntrl, eid)) != 0)
- return (ret);
+ if ((ret = __rep_newmaster_empty(dbenv, eid)) != 0)
+ goto err;
+ (void)__memp_set_config(dbenv, DB_MEMP_SYNC_INTERRUPT, 0);
return (DB_REP_NEWMASTER);
}
@@ -646,8 +735,8 @@ __rep_new_master(dbenv, cntrl, eid)
if (cntrl->lsn.file < lsn.file) {
if ((ret = __log_cursor(dbenv, &logc)) != 0)
goto err;
- ret = __log_c_get(logc, &first_lsn, &dbt, DB_FIRST);
- if ((t_ret = __log_c_close(logc)) != 0 && ret == 0)
+ ret = __logc_get(logc, &first_lsn, &dbt, DB_FIRST);
+ if ((t_ret = __logc_close(logc)) != 0 && ret == 0)
ret = t_ret;
if (ret == DB_NOTFOUND)
goto notfound;
@@ -663,7 +752,7 @@ __rep_new_master(dbenv, cntrl, eid)
if ((ret = __log_cursor(dbenv, &logc)) != 0)
goto err;
ret = __rep_log_backup(dbenv, rep, logc, &lsn);
- if ((t_ret = __log_c_close(logc)) != 0 && ret == 0)
+ if ((t_ret = __logc_close(logc)) != 0 && ret == 0)
ret = t_ret;
if (ret == DB_NOTFOUND)
goto notfound;
@@ -682,6 +771,7 @@ __rep_new_master(dbenv, cntrl, eid)
(void)__rep_send_message(dbenv,
eid, REP_VERIFY_REQ, &lsn, NULL, 0, DB_REP_ANYWHERE);
+ (void)__memp_set_config(dbenv, DB_MEMP_SYNC_INTERRUPT, 0);
return (DB_REP_NEWMASTER);
err: /*
@@ -690,7 +780,7 @@ err: /*
*/
REP_SYSTEM_LOCK(dbenv);
errlck: if (lockout)
- rep->lockout_th = 0;
+ F_CLR(rep, REP_F_READY_MSG);
F_CLR(rep, REP_F_RECOVER_MASK | REP_F_DELAY);
lckout: REP_SYSTEM_UNLOCK(dbenv);
return (ret);
@@ -704,10 +794,13 @@ notfound:
* were empty. In-memory logs can't be completely
* zeroed using __log_vtruncate, so just zero them out.
*/
- INIT_LSN(lsn);
- RPRINT(dbenv, (dbenv, &mb, "No commit or ckp found. Truncate log."));
+ if (lp->db_log_inmemory)
+ ZERO_LSN(lsn);
+ else
+ INIT_LSN(lsn);
+ RPRINT(dbenv, (dbenv, "No commit or ckp found. Truncate log."));
ret = lp->db_log_inmemory ?
- __log_zero(dbenv, &lsn, &lp->lsn) :
+ __log_zero(dbenv, &lsn) :
__log_vtruncate(dbenv, &lsn, &lsn, NULL);
if (ret != 0 && ret != DB_NOTFOUND)
return (ret);
@@ -716,67 +809,60 @@ notfound:
REP_SYSTEM_LOCK(dbenv);
(void)time(&renv->rep_timestamp);
REP_SYSTEM_UNLOCK(dbenv);
- if ((ret = __rep_newmaster_empty(dbenv, &lsn, cntrl, eid)) != 0)
- return (ret);
+ if ((ret = __rep_newmaster_empty(dbenv, eid)) != 0)
+ goto err;
return (DB_REP_NEWMASTER);
}
/*
* __rep_newmaster_empty
* Handle the case of a NEWMASTER message received when we have an empty
- * log. If both the master and we agree that the max LSN is 0,0, then there is
- * no recovery to be done. If we are at 0 and the master is not, then we just
- * need to request all the log records from the master.
+ * log. This requires internal init. If we can't do that because of
+ * NOAUTOINIT, return JOIN_FAILURE. If F_DELAY is in effect, don't even
+ * consider NOAUTOINIT yet, because they could change it before rep_sync call.
*/
static int
-__rep_newmaster_empty(dbenv, lsnp, cntrl, eid)
+__rep_newmaster_empty(dbenv, eid)
DB_ENV *dbenv;
- DB_LSN *lsnp;
- REP_CONTROL *cntrl;
int eid;
{
DB_REP *db_rep;
REP *rep;
LOG *lp;
+ int msg, ret;
db_rep = dbenv->rep_handle;
rep = db_rep->region;
lp = dbenv->lg_handle->reginfo.primary;
+ msg = ret = 0;
- /*
- * If we have no log, then we have no files to open in recovery, but
- * we've opened what we can, which is none. Mark DBREP_OPENFILES here.
- */
MUTEX_LOCK(dbenv, rep->mtx_clientdb);
- F_SET(db_rep, DBREP_OPENFILES);
- ZERO_LSN(lp->verify_lsn);
REP_SYSTEM_LOCK(dbenv);
- F_CLR(rep, REP_F_NOARCHIVE | REP_F_RECOVER_MASK);
- REP_SYSTEM_UNLOCK(dbenv);
+ lp->wait_recs = rep->request_gap;
- if (!IS_INIT_LSN(cntrl->lsn)) {
- /*
- * We're making an ALL_REQ. But now that we've cleared the
- * flags, we're likely receiving new log records from the
- * master, resulting in a gap immediately. So to avoid multiple
- * data streams, set the wait_recs value high now to give the
- * master a chance to start sending us these records before the
- * gap code re-requests the same gap. Wait_recs will get reset
- * once we start receiving these records.
- */
- lp->wait_recs = rep->max_gap;
- MUTEX_UNLOCK(dbenv, rep->mtx_clientdb);
+ /* Usual case is to skip to UPDATE state; we may revise this below. */
+ F_CLR(rep, REP_F_RECOVER_VERIFY);
+ F_SET(rep, REP_F_RECOVER_UPDATE);
+
+ if (F_ISSET(rep, REP_F_DELAY)) {
/*
- * Don't send the ALL_REQ if we're delayed. But we check here,
- * after lp->wait_recs is set up so that when the app calls
- * rep_sync, everything is ready to go.
+ * Having properly set up wait_recs for later, nothing more to
+ * do now.
*/
- if (!F_ISSET(rep, REP_F_DELAY))
- (void)__rep_send_message(dbenv, eid, REP_ALL_REQ,
- lsnp, NULL, 0, DB_REP_ANYWHERE);
- } else
- MUTEX_UNLOCK(dbenv, rep->mtx_clientdb);
- return (0);
+ } else if (FLD_ISSET(rep->config, REP_C_NOAUTOINIT)) {
+ F_CLR(rep, REP_F_NOARCHIVE | REP_F_RECOVER_MASK);
+ ret = DB_REP_JOIN_FAILURE;
+ } else {
+ /* Normal case: neither DELAY nor NOAUTOINIT. */
+ msg = 1;
+ }
+ REP_SYSTEM_UNLOCK(dbenv);
+ MUTEX_UNLOCK(dbenv, rep->mtx_clientdb);
+
+ if (msg)
+ (void)__rep_send_message(dbenv, eid, REP_UPDATE_REQ,
+ NULL, NULL, 0, 0);
+ return (ret);
}
/*
@@ -883,33 +969,30 @@ __rep_elect_done(dbenv, rep)
REP *rep;
{
int inelect;
- u_int32_t endsec, endusec;
-#ifdef DIAGNOSTIC
- DB_MSGBUF mb;
-#else
- COMPQUIET(dbenv, NULL);
-#endif
- inelect = IN_ELECTION_TALLY(rep);
- F_CLR(rep, REP_F_EPHASE1 | REP_F_EPHASE2 | REP_F_TALLY);
+ db_timespec endtime;
+
+ inelect = IN_ELECTION(rep);
+ F_CLR(rep,
+ REP_F_EPHASE0 | REP_F_EPHASE1 | REP_F_EPHASE2 | REP_F_TALLY);
rep->sites = 0;
rep->votes = 0;
if (inelect) {
- if (rep->esec != 0) {
- __os_clock(dbenv, &endsec, &endusec);
- __db_difftime(rep->esec, endsec, rep->eusec, endusec,
- &rep->stat.st_election_sec,
- &rep->stat.st_election_usec);
- RPRINT(dbenv, (dbenv, &mb,
- "Election finished in %u.%06u sec",
- rep->stat.st_election_sec,
- rep->stat.st_election_usec));
- rep->esec = 0;
- rep->eusec = 0;
+ if (timespecisset(&rep->etime)) {
+ __os_gettime(dbenv, &endtime);
+ timespecsub(&endtime, &rep->etime);
+#ifdef HAVE_STATISTICS
+ rep->stat.st_election_sec = (u_int32_t)endtime.tv_sec;
+ rep->stat.st_election_usec = (u_int32_t)
+ (endtime.tv_nsec / NS_PER_US);
+#endif
+ RPRINT(dbenv, (dbenv,
+ "Election finished in %lu.%09lu sec",
+ (u_long)endtime.tv_sec, (u_long)endtime.tv_nsec));
+ timespecclear(&rep->etime);
}
rep->egen++;
}
- RPRINT(dbenv, (dbenv, &mb,
- "Election done; egen %lu", (u_long)rep->egen));
+ RPRINT(dbenv, (dbenv, "Election done; egen %lu", (u_long)rep->egen));
}
/*
@@ -919,7 +1002,7 @@ __rep_elect_done(dbenv, rep)
* we need to make sure that we *never* acquire those mutexes in the
* opposite order.
*
- * PUBLIC: int __rep_grow_sites __P((DB_ENV *dbenv, int nsites));
+ * PUBLIC: int __rep_grow_sites __P((DB_ENV *, int));
*/
int
__rep_grow_sites(dbenv, nsites)
@@ -950,17 +1033,17 @@ __rep_grow_sites(dbenv, nsites)
* one for VOTE2's. Always grow them in tandem, because if we
* get more VOTE1's we'll always expect more VOTE2's then too.
*/
- if ((ret = __db_shalloc(infop,
- (size_t)nalloc * sizeof(REP_VTALLY), 0, &tally)) == 0) {
+ if ((ret = __env_alloc(infop,
+ (size_t)nalloc * sizeof(REP_VTALLY), &tally)) == 0) {
if (rep->tally_off != INVALID_ROFF)
- __db_shalloc_free(
+ __env_alloc_free(
infop, R_ADDR(infop, rep->tally_off));
rep->tally_off = R_OFFSET(infop, tally);
- if ((ret = __db_shalloc(infop,
- (size_t)nalloc * sizeof(REP_VTALLY), 0, &tally)) == 0) {
+ if ((ret = __env_alloc(infop,
+ (size_t)nalloc * sizeof(REP_VTALLY), &tally)) == 0) {
/* Success */
if (rep->v2tally_off != INVALID_ROFF)
- __db_shalloc_free(infop,
+ __env_alloc_free(infop,
R_ADDR(infop, rep->v2tally_off));
rep->v2tally_off = R_OFFSET(infop, tally);
rep->asites = nalloc;
@@ -974,9 +1057,9 @@ __rep_grow_sites(dbenv, nsites)
* to the error.
*/
if (rep->v2tally_off != INVALID_ROFF)
- __db_shalloc_free(infop,
+ __env_alloc_free(infop,
R_ADDR(infop, rep->v2tally_off));
- __db_shalloc_free(infop,
+ __env_alloc_free(infop,
R_ADDR(infop, rep->tally_off));
rep->v2tally_off = rep->tally_off = INVALID_ROFF;
rep->asites = 0;
@@ -1030,7 +1113,7 @@ __env_rep_enter(dbenv, checklock)
}
REP_SYSTEM_LOCK(dbenv);
- for (cnt = 0; rep->in_recovery;) {
+ for (cnt = 0; F_ISSET(rep, REP_F_READY_API);) {
REP_SYSTEM_UNLOCK(dbenv);
if (FLD_ISSET(rep->config, REP_C_NOWAIT)) {
__db_errx(dbenv,
@@ -1125,7 +1208,7 @@ __db_rep_enter(dbp, checkgen, checklock, return_now)
return (EINVAL);
}
REP_SYSTEM_LOCK(dbenv);
- if (F_ISSET(rep, REP_F_READY)) {
+ if (F_ISSET(rep, REP_F_READY_OP)) {
REP_SYSTEM_UNLOCK(dbenv);
if (!return_now)
__os_sleep(dbenv, 5, 0);
@@ -1172,7 +1255,7 @@ __op_rep_enter(dbenv)
rep = db_rep->region;
REP_SYSTEM_LOCK(dbenv);
- for (cnt = 0; F_ISSET(rep, REP_F_READY);) {
+ for (cnt = 0; F_ISSET(rep, REP_F_READY_OP);) {
REP_SYSTEM_UNLOCK(dbenv);
if (FLD_ISSET(rep->config, REP_C_NOWAIT)) {
__db_errx(dbenv,
@@ -1224,90 +1307,47 @@ __op_rep_exit(dbenv)
}
/*
- * __rep_get_gen --
- *
- * Get the generation number from a replicated environment.
+ * __rep_lockout_api --
+ * Coordinate with other threads in the library and active txns so
+ * that we can run single-threaded, for recovery or internal backup.
+ * Assumes the caller holds the region mutex.
*
- * PUBLIC: int __rep_get_gen __P((DB_ENV *, u_int32_t *));
+ * PUBLIC: int __rep_lockout_api __P((DB_ENV *, REP *));
*/
int
-__rep_get_gen(dbenv, genp)
+__rep_lockout_api(dbenv, rep)
DB_ENV *dbenv;
- u_int32_t *genp;
-{
- DB_REP *db_rep;
REP *rep;
+{
+ int ret;
- db_rep = dbenv->rep_handle;
- rep = db_rep->region;
-
- REP_SYSTEM_LOCK(dbenv);
- if (rep->recover_gen > rep->gen)
- *genp = rep->recover_gen;
- else
- *genp = rep->gen;
- REP_SYSTEM_UNLOCK(dbenv);
-
- return (0);
+ if ((ret = __rep_lockout_int(dbenv, rep, &rep->op_cnt, 0,
+ "op_cnt", REP_F_READY_OP)) != 0)
+ return (ret);
+ return (__rep_lockout_int(dbenv, rep, &rep->handle_cnt, 0,
+ "handle_cnt", REP_F_READY_API));
}
/*
- * __rep_lockout_api --
- * Coordinate with other threads in the library and active txns so
- * that we can run single-threaded, for recovery or internal backup.
+ * __rep_lockout_apply --
+ * Coordinate with other threads processing messages so that
+ * we can run single-threaded and know that no incoming
+ * message can apply new log records.
+ * This call should be short-term covering a specific critical
+ * operation where we need to make sure no new records change
+ * the log. Currently used to coordinate with elections.
* Assumes the caller holds the region mutex.
*
- * PUBLIC: int __rep_lockout_api __P((DB_ENV *, REP *));
+ * PUBLIC: int __rep_lockout_apply __P((DB_ENV *, REP *, u_int32_t));
*/
int
-__rep_lockout_api(dbenv, rep)
+__rep_lockout_apply(dbenv, rep, apply_th)
DB_ENV *dbenv;
REP *rep;
+ u_int32_t apply_th;
{
- int wait_cnt;
-
- /* Phase 1: set REP_F_READY and wait for op_cnt to go to 0. */
- F_SET(rep, REP_F_READY);
- for (wait_cnt = 0; rep->op_cnt != 0;) {
- REP_SYSTEM_UNLOCK(dbenv);
- __os_sleep(dbenv, 1, 0);
-#if defined(DIAGNOSTIC) || defined(CONFIG_TEST)
- if (wait_cnt == 5)
- __db_errx(dbenv,
- "Waiting for op_cnt (%lu) to complete replication lockout",
- (u_long)rep->op_cnt);
- if (++wait_cnt % 60 == 0)
- __db_errx(dbenv,
-"Waiting for op_cnt (%lu) to complete replication lockout for %d minutes",
- (u_long)rep->op_cnt, wait_cnt / 60);
-#endif
- REP_SYSTEM_LOCK(dbenv);
- }
-
- /*
- * Phase 2: set in_recovery and wait for handle count to go
- * to 0 and for the number of threads in __rep_process_message
- * to go to 1 (us).
- */
- rep->in_recovery = 1;
- for (wait_cnt = 0; rep->handle_cnt != 0;) {
- REP_SYSTEM_UNLOCK(dbenv);
- __os_sleep(dbenv, 1, 0);
-#ifdef DIAGNOSTIC
- if (wait_cnt == 5)
- __db_errx(dbenv,
-"Waiting for handle count (%lu) or msg_th (%lu) to complete replication lockout",
- (u_long)rep->handle_cnt, (u_long)rep->msg_th);
- if (++wait_cnt % 60 == 0)
- __db_errx(dbenv,
-"Waiting for handle count (%lu) to complete replication lockout for %d minutes",
- (u_long)rep->handle_cnt,
- wait_cnt / 60);
-#endif
- REP_SYSTEM_LOCK(dbenv);
- }
-
- return (0);
+ return (__rep_lockout_int(dbenv, rep, &rep->apply_th, apply_th,
+ "apply_th", REP_F_READY_APPLY));
}
/*
@@ -1328,25 +1368,45 @@ __rep_lockout_msg(dbenv, rep, msg_th)
REP *rep;
u_int32_t msg_th;
{
+ return (__rep_lockout_int(dbenv, rep, &rep->msg_th, msg_th,
+ "msg_th", REP_F_READY_MSG));
+}
+
+/*
+ * __rep_lockout_int --
+ * Internal common code for locking out and coordinating
+ * with other areas of the code.
+ * Assumes the caller holds the region mutex.
+ *
+ */
+static int
+__rep_lockout_int(dbenv, rep, fieldp, field_val, msg, lockout_flag)
+ DB_ENV *dbenv;
+ REP *rep;
+ u_int32_t *fieldp;
+ const char *msg;
+ u_int32_t field_val, lockout_flag;
+{
int wait_cnt;
- rep->lockout_th = 1;
- for (wait_cnt = 0; rep->msg_th > msg_th;) {
+ F_SET(rep, lockout_flag);
+ for (wait_cnt = 0; *fieldp > field_val;) {
REP_SYSTEM_UNLOCK(dbenv);
__os_sleep(dbenv, 1, 0);
#ifdef DIAGNOSTIC
if (wait_cnt == 5)
__db_errx(dbenv,
-"Waiting for msg_th (%lu) to complete replication lockout",
- (u_long)rep->msg_th);
+"Waiting for %s (%lu) to complete replication lockout",
+ msg, (u_long)*fieldp);
if (++wait_cnt % 60 == 0)
__db_errx(dbenv,
-"Waiting for msg_th (%lu) to complete replication lockout for %d minutes",
- (u_long)rep->msg_th, wait_cnt / 60);
+"Waiting for %s (%lu) to complete replication lockout for %d minutes",
+ msg, (u_long)*fieldp, wait_cnt / 60);
#endif
REP_SYSTEM_LOCK(dbenv);
}
+ COMPQUIET(msg, NULL);
return (0);
}
@@ -1358,15 +1418,19 @@ __rep_lockout_msg(dbenv, rep, msg_th)
* This function will send the normal type unless throttling gets invoked.
* Then it sets the type field and sends the _MORE message.
*
+ * Throttling is always only relevant in serving requests, so we always send
+ * with REPCTL_RESEND. Additional desired flags can be passed in the ctlflags
+ * argument.
+ *
* PUBLIC: int __rep_send_throttle __P((DB_ENV *, int, REP_THROTTLE *,
- * PUBLIC: u_int32_t));
+ * PUBLIC: u_int32_t, u_int32_t));
*/
int
-__rep_send_throttle(dbenv, eid, repth, flags)
+__rep_send_throttle(dbenv, eid, repth, flags, ctlflags)
DB_ENV *dbenv;
int eid;
REP_THROTTLE *repth;
- u_int32_t flags;
+ u_int32_t ctlflags, flags;
{
DB_REP *db_rep;
REP *rep;
@@ -1399,10 +1463,6 @@ __rep_send_throttle(dbenv, eid, repth, flags)
*/
size = repth->data_dbt->size + sizeof(REP_CONTROL);
if (check_limit) {
- if (repth->lsn.offset == 28) {
- repth->type = typemore;
- goto send;
- }
while (repth->bytes <= size) {
if (repth->gbytes > 0) {
repth->bytes += GIGABYTE;
@@ -1413,7 +1473,7 @@ __rep_send_throttle(dbenv, eid, repth, flags)
* We don't hold the rep mutex,
* and may miscount.
*/
- rep->stat.st_nthrottles++;
+ STAT(rep->stat.st_nthrottles++);
repth->type = typemore;
goto send;
}
@@ -1425,8 +1485,8 @@ __rep_send_throttle(dbenv, eid, repth, flags)
*/
send: if ((repth->type == typemore || !LF_ISSET(REP_THROTTLE_ONLY)) &&
(__rep_send_message(dbenv, eid, repth->type,
- &repth->lsn, repth->data_dbt, REPCTL_RESEND, 0) != 0))
- return (1);
+ &repth->lsn, repth->data_dbt, (REPCTL_RESEND | ctlflags), 0) != 0))
+ return (DB_REP_UNAVAIL);
return (0);
}
@@ -1449,6 +1509,7 @@ __rep_msg_to_old(version, rectype)
* Everything for version 0 is invalid, there is no version 0.
*/
static const u_int32_t table[DB_REPVERSION][REP_MAX_MSG+1] = {
+ /* There is no DB_REPVERSION 0. */
{ REP_INVALID, REP_INVALID, REP_INVALID, REP_INVALID,
REP_INVALID, REP_INVALID, REP_INVALID, REP_INVALID,
REP_INVALID, REP_INVALID, REP_INVALID, REP_INVALID,
@@ -1456,14 +1517,115 @@ __rep_msg_to_old(version, rectype)
REP_INVALID, REP_INVALID, REP_INVALID, REP_INVALID,
REP_INVALID, REP_INVALID, REP_INVALID, REP_INVALID,
REP_INVALID, REP_INVALID, REP_INVALID, REP_INVALID,
- REP_INVALID, REP_INVALID },
- { REP_INVALID, 1, 2, 3, REP_INVALID, REP_INVALID,
- 4, 5, REP_INVALID, 6, 7, 8, 9, 10, 11, 12, 13,
- 14, 15, REP_INVALID, REP_INVALID, 16, REP_INVALID,
- REP_INVALID, REP_INVALID, 19, 20, 21, 22, 23 },
- { REP_INVALID, 1, 2, 3, REP_INVALID, REP_INVALID,
- 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
- 17, 18, 19, REP_INVALID, 20, 21, 22, 23, 24, 25, 26 }
+ REP_INVALID, REP_INVALID, REP_INVALID, REP_INVALID },
+ /*
+ * From 4.6 message number To 4.2 message number
+ */
+ { REP_INVALID, /* NO message 0 */
+ 1, /* REP_ALIVE */
+ 2, /* REP_ALIVE_REQ */
+ 3, /* REP_ALL_REQ */
+ REP_INVALID, /* REP_BULK_LOG */
+ REP_INVALID, /* REP_BULK_PAGE */
+ 4, /* REP_DUPMASTER */
+ 5, /* REP_FILE */
+ REP_INVALID, /* REP_FILE_FAIL */
+ 6, /* REP_FILE_REQ */
+ REP_INVALID, /* REP_LEASE_GRANT */
+ 7, /* REP_LOG */
+ 8, /* REP_LOG_MORE */
+ 9, /* REP_LOG_REQ */
+ 10, /* REP_MASTER_REQ */
+ 11, /* REP_NEWCLIENT */
+ 12, /* REP_NEWFILE */
+ 13, /* REP_NEWMASTER */
+ 14, /* REP_NEWSITE */
+ 15, /* REP_PAGE */
+ REP_INVALID, /* REP_PAGE_FAIL */
+ REP_INVALID, /* REP_PAGE_MORE */
+ 16, /* REP_PAGE_REQ */
+ REP_INVALID, /* REP_REREQUEST */
+ REP_INVALID, /* REP_START_SYNC */
+ REP_INVALID, /* REP_UPDATE */
+ REP_INVALID, /* REP_UPDATE_REQ */
+ 19, /* REP_VERIFY */
+ 20, /* REP_VERIFY_FAIL */
+ 21, /* REP_VERIFY_REQ */
+ 22, /* REP_VOTE1 */
+ 23 /* REP_VOTE2 */
+ },
+ /*
+ * From 4.6 message number To 4.3 message number
+ */
+ { REP_INVALID, /* NO message 0 */
+ 1, /* REP_ALIVE */
+ 2, /* REP_ALIVE_REQ */
+ 3, /* REP_ALL_REQ */
+ REP_INVALID, /* REP_BULK_LOG */
+ REP_INVALID, /* REP_BULK_PAGE */
+ 4, /* REP_DUPMASTER */
+ 5, /* REP_FILE */
+ 6, /* REP_FILE_FAIL */
+ 7, /* REP_FILE_REQ */
+ REP_INVALID, /* REP_LEASE_GRANT */
+ 8, /* REP_LOG */
+ 9, /* REP_LOG_MORE */
+ 10, /* REP_LOG_REQ */
+ 11, /* REP_MASTER_REQ */
+ 12, /* REP_NEWCLIENT */
+ 13, /* REP_NEWFILE */
+ 14, /* REP_NEWMASTER */
+ 15, /* REP_NEWSITE */
+ 16, /* REP_PAGE */
+ 17, /* REP_PAGE_FAIL */
+ 18, /* REP_PAGE_MORE */
+ 19, /* REP_PAGE_REQ */
+ REP_INVALID, /* REP_REREQUEST */
+ REP_INVALID, /* REP_START_SYNC */
+ 20, /* REP_UPDATE */
+ 21, /* REP_UPDATE_REQ */
+ 22, /* REP_VERIFY */
+ 23, /* REP_VERIFY_FAIL */
+ 24, /* REP_VERIFY_REQ */
+ 25, /* REP_VOTE1 */
+ 26 /* REP_VOTE2 */
+ },
+ /*
+ * From 4.6 message number To 4.4/4.5 message number
+ */
+ { REP_INVALID, /* NO message 0 */
+ 1, /* REP_ALIVE */
+ 2, /* REP_ALIVE_REQ */
+ 3, /* REP_ALL_REQ */
+ 4, /* REP_BULK_LOG */
+ 5, /* REP_BULK_PAGE */
+ 6, /* REP_DUPMASTER */
+ 7, /* REP_FILE */
+ 8, /* REP_FILE_FAIL */
+ 9, /* REP_FILE_REQ */
+ REP_INVALID, /* REP_LEASE_GRANT */
+ 10, /* REP_LOG */
+ 11, /* REP_LOG_MORE */
+ 12, /* REP_LOG_REQ */
+ 13, /* REP_MASTER_REQ */
+ 14, /* REP_NEWCLIENT */
+ 15, /* REP_NEWFILE */
+ 16, /* REP_NEWMASTER */
+ 17, /* REP_NEWSITE */
+ 18, /* REP_PAGE */
+ 19, /* REP_PAGE_FAIL */
+ 20, /* REP_PAGE_MORE */
+ 21, /* REP_PAGE_REQ */
+ 22, /* REP_REREQUEST */
+ REP_INVALID, /* REP_START_SYNC */
+ 23, /* REP_UPDATE */
+ 24, /* REP_UPDATE_REQ */
+ 25, /* REP_VERIFY */
+ 26, /* REP_VERIFY_FAIL */
+ 27, /* REP_VERIFY_REQ */
+ 28, /* REP_VOTE1 */
+ 29 /* REP_VOTE2 */
+ }
};
return (table[version][rectype]);
}
@@ -1487,27 +1649,193 @@ __rep_msg_from_old(version, rectype)
* Everything for version 0 is invalid, there is no version 0.
*/
const u_int32_t table[DB_REPVERSION][REP_MAX_MSG+1] = {
- { REP_INVALID, REP_INVALID, REP_INVALID, REP_INVALID,
- REP_INVALID, REP_INVALID, REP_INVALID, REP_INVALID,
- REP_INVALID, REP_INVALID, REP_INVALID, REP_INVALID,
- REP_INVALID, REP_INVALID, REP_INVALID, REP_INVALID,
- REP_INVALID, REP_INVALID, REP_INVALID, REP_INVALID,
- REP_INVALID, REP_INVALID, REP_INVALID, REP_INVALID,
- REP_INVALID, REP_INVALID, REP_INVALID, REP_INVALID,
- REP_INVALID, REP_INVALID },
- { REP_INVALID, 1, 2, 3, 6, 7, 9, 10, 11, 12, 13,
- 14, 15, 16, 17, 18, 21, REP_INVALID, REP_INVALID,
- 25, 26, 27, 28, 29,
- REP_INVALID, REP_INVALID, REP_INVALID, REP_INVALID,
- REP_INVALID, REP_INVALID },
- { REP_INVALID, 1, 2, 3, 6, 7, 8, 9, 10, 11, 12, 13,
- 14, 15, 16, 17, 18, 19, 20, 21, 23, 24, 25, 26,
- 27, 28, 29, REP_INVALID, REP_INVALID, REP_INVALID }
+ /* There is no DB_REPVERSION 0. */
+ { REP_INVALID, REP_INVALID, REP_INVALID, REP_INVALID,
+ REP_INVALID, REP_INVALID, REP_INVALID, REP_INVALID,
+ REP_INVALID, REP_INVALID, REP_INVALID, REP_INVALID,
+ REP_INVALID, REP_INVALID, REP_INVALID, REP_INVALID,
+ REP_INVALID, REP_INVALID, REP_INVALID, REP_INVALID,
+ REP_INVALID, REP_INVALID, REP_INVALID, REP_INVALID,
+ REP_INVALID, REP_INVALID, REP_INVALID, REP_INVALID,
+ REP_INVALID, REP_INVALID, REP_INVALID, REP_INVALID },
+ /*
+ * From 4.2 message number To 4.6 message number
+ */
+ { REP_INVALID, /* NO message 0 */
+ 1, /* REP_ALIVE */
+ 2, /* REP_ALIVE_REQ */
+ 3, /* REP_ALL_REQ */
+ /* 4, REP_BULK_LOG doesn't exist */
+ /* 5, REP_BULK_PAGE doesn't exist */
+ 6, /* 4, REP_DUPMASTER */
+ 7, /* 5, REP_FILE */
+ /* 8, REP_FILE_FAIL doesn't exist */
+ 9, /* 6, REP_FILE_REQ */
+ /* 10, REP_LEASE_GRANT doesn't exist */
+ 11, /* 7, REP_LOG */
+ 12, /* 8, REP_LOG_MORE */
+ 13, /* 9, REP_LOG_REQ */
+ 14, /* 10, REP_MASTER_REQ */
+ 15, /* 11, REP_NEWCLIENT */
+ 16, /* 12, REP_NEWFILE */
+ 17, /* 13, REP_NEWMASTER */
+ 18, /* 14, REP_NEWSITE */
+ 19, /* 15, REP_PAGE */
+ /* 20, REP_PAGE_FAIL doesn't exist */
+ /* 21, REP_PAGE_MORE doesn't exist */
+ 22, /* 16, REP_PAGE_REQ */
+ REP_INVALID, /* 17, REP_PLIST (UNUSED) */
+ REP_INVALID, /* 18, REP_PLIST_REQ (UNUSED) */
+ /* 23, REP_REREQUEST doesn't exist */
+ /* 24, REP_START_SYNC doesn't exist */
+ /* 25, REP_UPDATE doesn't exist */
+ /* 26, REP_UPDATE_REQ doesn't exist */
+ 27, /* 19, REP_VERIFY */
+ 28, /* 20, REP_VERIFY_FAIL */
+ 29, /* 21, REP_VERIFY_REQ */
+ 30, /* 22, REP_VOTE1 */
+ 31, /* 23, REP_VOTE2 */
+ REP_INVALID, /* 24, 4.2 no message */
+ REP_INVALID, /* 25, 4.2 no message */
+ REP_INVALID, /* 26, 4.2 no message */
+ REP_INVALID, /* 27, 4.2 no message */
+ REP_INVALID, /* 28, 4.2 no message */
+ REP_INVALID, /* 29, 4.2 no message */
+ REP_INVALID, /* 30, 4.2 no message */
+ REP_INVALID /* 31, 4.2 no message */
+ },
+ /*
+ * From 4.3 message number To 4.6 message number
+ */
+ { REP_INVALID, /* NO message 0 */
+ 1, /* 1, REP_ALIVE */
+ 2, /* 2, REP_ALIVE_REQ */
+ 3, /* 3, REP_ALL_REQ */
+ /* 4, REP_BULK_LOG doesn't exist */
+ /* 5, REP_BULK_PAGE doesn't exist */
+ 6, /* 4, REP_DUPMASTER */
+ 7, /* 5, REP_FILE */
+ 8, /* 6, REP_FILE_FAIL */
+ 9, /* 7, REP_FILE_REQ */
+ /* 10, REP_LEASE_GRANT doesn't exist */
+ 11, /* 8, REP_LOG */
+ 12, /* 9, REP_LOG_MORE */
+ 13, /* 10, REP_LOG_REQ */
+ 14, /* 11, REP_MASTER_REQ */
+ 15, /* 12, REP_NEWCLIENT */
+ 16, /* 13, REP_NEWFILE */
+ 17, /* 14, REP_NEWMASTER */
+ 18, /* 15, REP_NEWSITE */
+ 19, /* 16, REP_PAGE */
+ 20, /* 17, REP_PAGE_FAIL */
+ 21, /* 18, REP_PAGE_MORE */
+ 22, /* 19, REP_PAGE_REQ */
+ /* 23, REP_REREQUEST doesn't exist */
+ /* 24, REP_START_SYNC doesn't exist */
+ 25, /* 20, REP_UPDATE */
+ 26, /* 21, REP_UPDATE_REQ */
+ 27, /* 22, REP_VERIFY */
+ 28, /* 23, REP_VERIFY_FAIL */
+ 29, /* 24, REP_VERIFY_REQ */
+ 30, /* 25, REP_VOTE1 */
+ 31, /* 26, REP_VOTE2 */
+ REP_INVALID, /* 27, 4.3 no message */
+ REP_INVALID, /* 28, 4.3 no message */
+ REP_INVALID, /* 29, 4.3 no message */
+ REP_INVALID, /* 30, 4.3 no message */
+ REP_INVALID /* 31, 4.3 no message */
+ },
+ /*
+ * From 4.4/4.5 message number To 4.6 message number
+ */
+ { REP_INVALID, /* NO message 0 */
+ 1, /* 1, REP_ALIVE */
+ 2, /* 2, REP_ALIVE_REQ */
+ 3, /* 3, REP_ALL_REQ */
+ 4, /* 4, REP_ALL_REQ */
+ 5, /* 5, REP_ALL_REQ */
+ 6, /* 6, REP_DUPMASTER */
+ 7, /* 7, REP_FILE */
+ 8, /* 8, REP_FILE_FAIL */
+ 9, /* 9, REP_FILE_REQ */
+ /* 10, REP_LEASE_GRANT doesn't exist */
+ 11, /* 10, REP_LOG */
+ 12, /* 11, REP_LOG_MORE */
+ 13, /* 12, REP_LOG_REQ */
+ 14, /* 13, REP_MASTER_REQ */
+ 15, /* 14, REP_NEWCLIENT */
+ 16, /* 15, REP_NEWFILE */
+ 17, /* 16, REP_NEWMASTER */
+ 18, /* 17, REP_NEWSITE */
+ 19, /* 18, REP_PAGE */
+ 20, /* 19, REP_PAGE_FAIL */
+ 21, /* 20, REP_PAGE_MORE */
+ 22, /* 21, REP_PAGE_REQ */
+ 23, /* 22, REP_REREQUEST */
+ /* 24, REP_START_SYNC doesn't exist */
+ 25, /* 23, REP_UPDATE */
+ 26, /* 24, REP_UPDATE_REQ */
+ 27, /* 25, REP_VERIFY */
+ 28, /* 26, REP_VERIFY_FAIL */
+ 29, /* 27, REP_VERIFY_REQ */
+ 30, /* 28, REP_VOTE1 */
+ 31, /* 29, REP_VOTE2 */
+ REP_INVALID, /* 30, 4.4/4.5 no message */
+ REP_INVALID /* 31, 4.4/4.5 no message */
+ }
};
return (table[version][rectype]);
}
-#ifdef DIAGNOSTIC
+/*
+ * __rep_print --
+ * Optionally print a verbose message.
+ *
+ * PUBLIC: void __rep_print __P((DB_ENV *, const char *, ...))
+ * PUBLIC: __attribute__ ((__format__ (__printf__, 2, 3)));
+ */
+void
+#ifdef STDC_HEADERS
+__rep_print(DB_ENV *dbenv, const char *fmt, ...)
+#else
+__rep_print(dbenv, fmt, va_alist)
+ DB_ENV *dbenv;
+ const char *fmt;
+ va_dcl
+#endif
+{
+ va_list ap;
+ DB_MSGBUF mb;
+ REP *rep;
+ const char *s;
+
+ DB_MSGBUF_INIT(&mb);
+
+ s = NULL;
+ if (dbenv->db_errpfx != NULL)
+ s = dbenv->db_errpfx;
+ else if (REP_ON(dbenv)) {
+ rep = dbenv->rep_handle->region;
+ if (F_ISSET(rep, REP_F_CLIENT))
+ s = "CLIENT";
+ else if (F_ISSET(rep, REP_F_MASTER))
+ s = "MASTER";
+ }
+ if (s == NULL)
+ s = "REP_UNDEF";
+ __db_msgadd(dbenv, &mb, "%s: ", s);
+
+#ifdef STDC_HEADERS
+ va_start(ap, fmt);
+#else
+ va_start(ap);
+#endif
+ __db_msgadd_ap(dbenv, &mb, fmt, ap);
+ va_end(ap);
+
+ DB_MSGBUF_FLUSH(dbenv, &mb);
+}
+
/*
* PUBLIC: void __rep_print_message
* PUBLIC: __P((DB_ENV *, int, REP_CONTROL *, char *, u_int32_t));
@@ -1520,11 +1848,11 @@ __rep_print_message(dbenv, eid, rp, str, flags)
char *str;
u_int32_t flags;
{
- DB_MSGBUF mb;
- u_int32_t rectype;
- char ftype[32], *type;
+ u_int32_t ctlflags, rectype;
+ char ftype[64], *type;
rectype = rp->rectype;
+ ctlflags = rp->flags;
if (rp->rep_version != DB_REPVERSION)
rectype = __rep_msg_from_old(rp->rep_version, rectype);
switch (rectype) {
@@ -1555,6 +1883,9 @@ __rep_print_message(dbenv, eid, rp, str, flags)
case REP_FILE_REQ:
type = "file_req";
break;
+ case REP_LEASE_GRANT:
+ type = "lease_grant";
+ break;
case REP_LOG:
type = "log";
break;
@@ -1594,6 +1925,9 @@ __rep_print_message(dbenv, eid, rp, str, flags)
case REP_REREQUEST:
type = "rerequest";
break;
+ case REP_START_SYNC:
+ type = "start_sync";
+ break;
case REP_UPDATE:
type = "update";
break;
@@ -1627,18 +1961,55 @@ __rep_print_message(dbenv, eid, rp, str, flags)
*/
ftype[0] = '\0';
if (LF_ISSET(DB_REP_ANYWHERE))
- (void)strcat(ftype, " any");
+ (void)strcat(ftype, " any"); /* 4 */
+ if (FLD_ISSET(ctlflags, REPCTL_FLUSH))
+ (void)strcat(ftype, " flush"); /* 10 */
+ /*
+ * We expect most of the time the messages will indicate
+ * group membership. Only print if we're not already
+ * part of a group.
+ */
+ if (!FLD_ISSET(ctlflags, REPCTL_GROUP_ESTD))
+ (void)strcat(ftype, " nogroup"); /* 18 */
+ if (FLD_ISSET(ctlflags, REPCTL_LEASE))
+ (void)strcat(ftype, " lease"); /* 24 */
if (LF_ISSET(DB_REP_NOBUFFER))
- (void)strcat(ftype, " nobuf");
+ (void)strcat(ftype, " nobuf"); /* 30 */
if (LF_ISSET(DB_REP_PERMANENT))
- (void)strcat(ftype, " perm");
+ (void)strcat(ftype, " perm"); /* 35 */
if (LF_ISSET(DB_REP_REREQUEST))
- (void)strcat(ftype, " rereq");
+ (void)strcat(ftype, " rereq"); /* 41 */
+ if (FLD_ISSET(ctlflags, REPCTL_RESEND))
+ (void)strcat(ftype, " resend"); /* 48 */
+ if (FLD_ISSET(ctlflags, REPCTL_LOG_END))
+ (void)strcat(ftype, " logend"); /* 55 */
RPRINT(dbenv,
- (dbenv, &mb,
+ (dbenv,
"%s %s: msgv = %lu logv %lu gen = %lu eid %d, type %s, LSN [%lu][%lu] %s",
dbenv->db_home, str,
(u_long)rp->rep_version, (u_long)rp->log_version, (u_long)rp->gen,
eid, type, (u_long)rp->lsn.file, (u_long)rp->lsn.offset, ftype));
}
-#endif
+
+/*
+ * PUBLIC: void __rep_fire_event __P((DB_ENV *, u_int32_t, void *));
+ */
+void
+__rep_fire_event(dbenv, event, info)
+ DB_ENV *dbenv;
+ u_int32_t event;
+ void *info;
+{
+ int ret;
+
+ /*
+ * Give repmgr first crack at handling all replication-related events.
+ * If it can't (or chooses not to) handle the event fully, then pass it
+ * along to the application.
+ */
+ ret = __repmgr_handle_event(dbenv, event, info);
+ DB_ASSERT(dbenv, ret == 0 || ret == DB_EVENT_NOT_HANDLED);
+
+ if (ret == DB_EVENT_NOT_HANDLED)
+ DB_EVENT(dbenv, event, info);
+}
diff --git a/db/rep/rep_verify.c b/db/rep/rep_verify.c
index 630db3f02..6031cbb12 100644
--- a/db/rep/rep_verify.c
+++ b/db/rep/rep_verify.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2004-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2004,2007 Oracle. All rights reserved.
*
- * $Id: rep_verify.c,v 12.32 2006/09/07 03:05:26 sue Exp $
+ * $Id: rep_verify.c,v 12.51 2007/06/21 19:11:52 bostic Exp $
*/
#include "db_config.h"
@@ -47,13 +46,25 @@ __rep_verify(dbenv, rp, rec, eid, savetime)
dblp = dbenv->lg_handle;
lp = dblp->reginfo.primary;
- if (IS_ZERO_LSN(lp->verify_lsn))
+ MUTEX_LOCK(dbenv, rep->mtx_clientdb);
+ lsn = lp->verify_lsn;
+ MUTEX_UNLOCK(dbenv, rep->mtx_clientdb);
+ if (IS_ZERO_LSN(lsn))
return (ret);
+ /*
+ * We should not ever be in internal init with a lease granted.
+ */
+ if (IS_USING_LEASES(dbenv)) {
+ REP_SYSTEM_LOCK(dbenv);
+ DB_ASSERT(dbenv, __rep_islease_granted(dbenv) == 0);
+ REP_SYSTEM_UNLOCK(dbenv);
+ }
+
if ((ret = __log_cursor(dbenv, &logc)) != 0)
return (ret);
memset(&mylog, 0, sizeof(mylog));
- if ((ret = __log_c_get(logc, &rp->lsn, &mylog, DB_SET)) != 0)
+ if ((ret = __logc_get(logc, &rp->lsn, &mylog, DB_SET)) != 0)
goto err;
match = 0;
memcpy(&rectype, mylog.data, sizeof(rectype));
@@ -88,11 +99,7 @@ __rep_verify(dbenv, rp, rec, eid, savetime)
"Client was never part of master's environment");
ret = DB_REP_JOIN_FAILURE;
} else {
- rep->stat.st_outdated++;
-
- LOG_SYSTEM_LOCK(dbenv);
- lsn = lp->lsn;
- LOG_SYSTEM_UNLOCK(dbenv);
+ STAT(rep->stat.st_outdated++);
REP_SYSTEM_LOCK(dbenv);
F_CLR(rep, REP_F_RECOVER_VERIFY);
if (FLD_ISSET(rep->config, REP_C_NOAUTOINIT) ||
@@ -101,18 +108,19 @@ __rep_verify(dbenv, rp, rec, eid, savetime)
else {
F_SET(rep, REP_F_RECOVER_UPDATE);
ZERO_LSN(rep->first_lsn);
+ ret = 0;
}
REP_SYSTEM_UNLOCK(dbenv);
if (ret == 0)
(void)__rep_send_message(dbenv,
eid, REP_UPDATE_REQ, NULL,
- NULL, 0, DB_REP_ANYWHERE);
+ NULL, 0, 0);
}
}
} else
ret = __rep_verify_match(dbenv, &rp->lsn, savetime);
-err: if ((t_ret = __log_c_close(logc)) != 0 && ret == 0)
+err: if ((t_ret = __logc_close(logc)) != 0 && ret == 0)
ret = t_ret;
return (ret);
}
@@ -149,25 +157,30 @@ __rep_verify_fail(dbenv, rp, eid)
if (F_ISSET(rep, REP_F_RECOVER_MASK) &&
!F_ISSET(rep, REP_F_RECOVER_VERIFY))
return (0);
+ MUTEX_LOCK(dbenv, rep->mtx_clientdb);
+ REP_SYSTEM_LOCK(dbenv);
/*
- * Update stats. Reset startup_complete.
+ * We should not ever be in internal init with a lease granted.
*/
- rep->stat.st_outdated++;
- rep->stat.st_startup_complete = 0;
+ DB_ASSERT(dbenv,
+ !IS_USING_LEASES(dbenv) || __rep_islease_granted(dbenv) == 0);
+
+ /*
+ * Update stats.
+ */
+ STAT(rep->stat.st_outdated++);
- MUTEX_LOCK(dbenv, rep->mtx_clientdb);
- REP_SYSTEM_LOCK(dbenv);
/*
* We don't want an old or delayed VERIFY_FAIL
* message to throw us into internal initialization
* when we shouldn't be.
- *
- * Only go into internal initialization if:
- * We are set for AUTOINIT mode.
- * We are in RECOVER_VERIFY and this LSN == verify_lsn.
- * We are not in any RECOVERY and we are expecting
- * an LSN that no longer exists on the master.
- * Otherwise, ignore this message.
+ */
+ /*
+ * Return DB_REP_JOIN_FAILURE only if:
+ * REP_C_NOAUTOINIT is configured and
+ * we're in VERIFY and this is the LSN we're verifying,
+ * or we are in normal mode (no recovery flags set)
+ * and the failing LSN is the next one we're ready for.
*/
if (FLD_ISSET(rep->config, REP_C_NOAUTOINIT) &&
((F_ISSET(rep, REP_F_RECOVER_VERIFY) &&
@@ -177,6 +190,14 @@ __rep_verify_fail(dbenv, rp, eid)
ret = DB_REP_JOIN_FAILURE;
goto unlock;
}
+
+ /*
+ * Commence an internal init if:
+ * We are in VERIFY state and the failing LSN is the one we
+ * were verifying or
+ * we are in normal state (no recovery flags set) and
+ * the failing LSN is the one we're ready for.
+ */
if (((F_ISSET(rep, REP_F_RECOVER_VERIFY)) &&
LOG_COMPARE(&rp->lsn, &lp->verify_lsn) == 0) ||
(F_ISSET(rep, REP_F_RECOVER_MASK) == 0 &&
@@ -190,6 +211,9 @@ __rep_verify_fail(dbenv, rp, eid)
(void)__rep_send_message(dbenv,
eid, REP_UPDATE_REQ, NULL, NULL, 0, 0);
} else {
+ /*
+ * Otherwise ignore this message.
+ */
unlock: REP_SYSTEM_UNLOCK(dbenv);
MUTEX_UNLOCK(dbenv, rep->mtx_clientdb);
}
@@ -225,23 +249,25 @@ __rep_verify_req(dbenv, rp, eid)
d = &data_dbt;
memset(d, 0, sizeof(data_dbt));
F_SET(logc, DB_LOG_SILENT_ERR);
- ret = __log_c_get(logc, &rp->lsn, d, DB_SET);
+ ret = __logc_get(logc, &rp->lsn, d, DB_SET);
/*
- * If the LSN was invalid, then we might get a not
- * found, we might get an EIO, we could get anything.
+ * If the LSN was invalid, then we might get a DB_NOTFOUND
+ * we might get an EIO, we could get anything.
* If we get a DB_NOTFOUND, then there is a chance that
* the LSN comes before the first file present in which
- * case we need to return a fail so that the client can return
- * a DB_OUTDATED.
+ * case we need to return a fail so that the client can
+ * perform an internal init or return a REP_JOIN_FAILURE.
*
* If we're a client servicing this request and we get a
* NOTFOUND, return it so the caller can rerequest from
* a better source.
*/
if (ret == DB_NOTFOUND) {
- if (F_ISSET(rep, REP_F_CLIENT))
- goto notfound;
- else if (__log_is_outdated(dbenv, rp->lsn.file, &old) == 0 &&
+ if (F_ISSET(rep, REP_F_CLIENT)) {
+ (void)__logc_close(logc);
+ return (DB_NOTFOUND);
+ }
+ if (__log_is_outdated(dbenv, rp->lsn.file, &old) == 0 &&
old != 0)
type = REP_VERIFY_FAIL;
}
@@ -250,9 +276,7 @@ __rep_verify_req(dbenv, rp, eid)
d = NULL;
(void)__rep_send_message(dbenv, eid, type, &rp->lsn, d, 0, 0);
-notfound:
- ret = __log_c_close(logc);
- return (ret);
+ return (__logc_close(logc));
}
static int
@@ -260,12 +284,12 @@ __rep_dorecovery(dbenv, lsnp, trunclsnp)
DB_ENV *dbenv;
DB_LSN *lsnp, *trunclsnp;
{
- DB_LSN lsn;
+ DB_LSN last_ckp, lsn;
DB_REP *db_rep;
DBT mylog;
DB_LOGC *logc;
REP *rep;
- int ret, t_ret, update;
+ int ret, skip_rec, t_ret, update;
u_int32_t rectype, opcode;
__txn_regop_args *txnrec;
__txn_regop_42_args *txn42rec;
@@ -278,14 +302,46 @@ __rep_dorecovery(dbenv, lsnp, trunclsnp)
return (ret);
memset(&mylog, 0, sizeof(mylog));
- if (F_ISSET(rep, REP_F_RECOVER_LOG))
+ if (F_ISSET(rep, REP_F_RECOVER_LOG)) {
+ /*
+ * Internal init can never skip recovery.
+ * Internal init must always update the timestamp and
+ * force dead handles.
+ */
+ skip_rec = 0;
update = 1;
- else
+ } else {
+ skip_rec = 1;
update = 0;
+ }
while (update == 0 &&
- (ret = __log_c_get(logc, &lsn, &mylog, DB_PREV)) == 0 &&
+ (ret = __logc_get(logc, &lsn, &mylog, DB_PREV)) == 0 &&
LOG_COMPARE(&lsn, lsnp) > 0) {
memcpy(&rectype, mylog.data, sizeof(rectype));
+ /*
+ * Find out if we can skip recovery completely. If we
+ * are backing up over any record a client usually
+ * cares about, we must run recovery.
+ *
+ * Skipping sync-up recovery can be pretty scary!
+ * Here's why we can do it:
+ * If a master downgraded to client and is now running
+ * sync-up to a new master, that old master must have
+ * waited for any outstanding txns to resolve before
+ * becoming a client. Also we are in lockout so there
+ * can be no other operations right now.
+ *
+ * If the client wrote a commit record to the log, but
+ * was descheduled before processing the txn, and then
+ * a new master was found, we must've let the txn get
+ * processed because right now we are the only message
+ * thread allowed to be running.
+ */
+ DB_ASSERT(dbenv, rep->op_cnt == 0);
+ DB_ASSERT(dbenv, rep->msg_th == 1);
+ if (rectype == DB___txn_regop || rectype == DB___txn_ckp ||
+ rectype == DB___dbreg_register)
+ skip_rec = 0;
if (rectype == DB___txn_regop) {
if (rep->version >= DB_REPVERSION_44) {
if ((ret = __txn_regop_read(dbenv,
@@ -305,7 +361,7 @@ __rep_dorecovery(dbenv, lsnp, trunclsnp)
}
}
/*
- * Handle if the log_c_get fails.
+ * Handle if the logc_get fails.
*/
if (ret != 0)
goto err;
@@ -315,10 +371,25 @@ __rep_dorecovery(dbenv, lsnp, trunclsnp)
* files. We are guaranteed to be single-threaded here, so no mutex
* is necessary.
*/
- if ((ret = __db_apprec(dbenv, lsnp, trunclsnp, update, 0)) == 0)
- F_SET(db_rep, DBREP_OPENFILES);
+ if (skip_rec) {
+ if ((ret = __log_get_stable_lsn(dbenv, &last_ckp)) != 0) {
+ if (ret != DB_NOTFOUND)
+ goto err;
+ ZERO_LSN(last_ckp);
+ }
+ RPRINT(dbenv, (dbenv,
+ "Skip sync-up rec. Truncate log to [%lu][%lu], ckp [%lu][%lu]",
+ (u_long)lsnp->file, (u_long)lsnp->offset,
+ (u_long)last_ckp.file, (u_long)last_ckp.offset));
+ ret = __log_vtruncate(dbenv, lsnp, &last_ckp, trunclsnp);
+ } else
+ ret = __db_apprec(dbenv, lsnp, trunclsnp, update, 0);
+
+ if (ret != 0)
+ goto err;
+ F_SET(db_rep, DBREP_OPENFILES);
-err: if ((t_ret = __log_c_close(logc)) != 0 && ret == 0)
+err: if ((t_ret = __logc_close(logc)) != 0 && ret == 0)
ret = t_ret;
return (ret);
@@ -377,27 +448,35 @@ __rep_verify_match(dbenv, reclsnp, savetime)
* operations out of DB and run recovery.
*/
REP_SYSTEM_LOCK(dbenv);
- if (rep->lockout_th != 0 ||
+ if (F_ISSET(rep, REP_F_READY_MSG) ||
(!F_ISSET(rep, REP_F_RECOVER_LOG) &&
- (F_ISSET(rep, REP_F_READY) || rep->in_recovery != 0))) {
- rep->stat.st_msgs_recover++;
+ F_ISSET(rep, REP_F_READY_API | REP_F_READY_OP))) {
+ /*
+ * We lost. The world changed and we should do nothing.
+ */
+ STAT(rep->stat.st_msgs_recover++);
goto errunlock;
}
+ /*
+ * Lockout all message threads but ourselves.
+ */
if ((ret = __rep_lockout_msg(dbenv, rep, 1)) != 0)
goto errunlock;
+ /*
+ * Lockout the API and wait for operations to complete.
+ */
if ((ret = __rep_lockout_api(dbenv, rep)) != 0)
goto errunlock;
/* OK, everyone is out, we can now run recovery. */
REP_SYSTEM_UNLOCK(dbenv);
- if ((ret = __rep_dorecovery(dbenv, reclsnp, &trunclsn)) != 0) {
+ if ((ret = __rep_dorecovery(dbenv, reclsnp, &trunclsn)) != 0 ||
+ (ret = __rep_remove_init_file(dbenv)) != 0) {
REP_SYSTEM_LOCK(dbenv);
- rep->lockout_th = 0;
- rep->in_recovery = 0;
- F_CLR(rep, REP_F_READY);
+ F_CLR(rep, REP_F_READY_API | REP_F_READY_MSG | REP_F_READY_OP);
goto errunlock;
}
@@ -421,6 +500,12 @@ __rep_verify_match(dbenv, reclsnp, savetime)
* DB_AM_RECOVER bit in this handle, so that the operation doesn't
* deadlock.
*/
+ if (db_rep->rep_db == NULL &&
+ (ret = __rep_client_dbinit(dbenv, 0, REP_DB)) != 0) {
+ MUTEX_UNLOCK(dbenv, rep->mtx_clientdb);
+ goto out;
+ }
+
F_SET(db_rep->rep_db, DB_AM_RECOVER);
MUTEX_UNLOCK(dbenv, rep->mtx_clientdb);
ret = __db_truncate(db_rep->rep_db, NULL, &unused);
@@ -429,27 +514,19 @@ __rep_verify_match(dbenv, reclsnp, savetime)
REP_SYSTEM_LOCK(dbenv);
rep->stat.st_log_queued = 0;
- rep->in_recovery = 0;
- rep->lockout_th = 0;
- F_CLR(rep, REP_F_NOARCHIVE | REP_F_RECOVER_MASK);
+ F_CLR(rep, REP_F_NOARCHIVE | REP_F_RECOVER_MASK | REP_F_READY_MSG);
if (ret != 0)
goto errunlock2;
/*
* If the master_id is invalid, this means that since
- * the last record was sent, somebody declared an
- * election and we may not have a master to request
+ * the last record was sent, something happened to the
+ * master and we may not have a master to request
* things of.
*
* This is not an error; when we find a new master,
* we'll re-negotiate where the end of the log is and
* try to bring ourselves up to date again anyway.
- *
- * !!!
- * We cannot assert the election flags though because
- * somebody may have declared an election and then
- * got an error, thus clearing the election flags
- * but we still have an invalid master_id.
*/
master = rep->master_id;
REP_SYSTEM_UNLOCK(dbenv);
@@ -477,7 +554,7 @@ __rep_verify_match(dbenv, reclsnp, savetime)
errunlock2: MUTEX_UNLOCK(dbenv, rep->mtx_clientdb);
errunlock: REP_SYSTEM_UNLOCK(dbenv);
}
- return (ret);
+out: return (ret);
}
/*
@@ -503,7 +580,7 @@ __rep_log_backup(dbenv, rep, logc, lsn)
COMPQUIET(dbenv, NULL);
ret = 0;
memset(&mylog, 0, sizeof(mylog));
- while ((ret = __log_c_get(logc, lsn, &mylog, DB_PREV)) == 0) {
+ while ((ret = __logc_get(logc, lsn, &mylog, DB_PREV)) == 0) {
/*
* Determine what we look for based on version number.
* Due to the contents of records changing between
diff --git a/db/repmgr/repmgr_elect.c b/db/repmgr/repmgr_elect.c
index 39ed1e863..bf2b41dac 100644
--- a/db/repmgr/repmgr_elect.c
+++ b/db/repmgr/repmgr_elect.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2005-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2005,2007 Oracle. All rights reserved.
*
- * $Id: repmgr_elect.c,v 1.23 2006/09/12 01:06:34 alanb Exp $
+ * $Id: repmgr_elect.c,v 1.31 2007/05/17 15:15:50 bostic Exp $
*/
#include "db_config.h"
@@ -34,14 +33,10 @@ __repmgr_init_election(dbenv, initial_operation)
{
DB_REP *db_rep;
int ret;
-#ifdef DIAGNOSTIC
- DB_MSGBUF mb;
-#endif
db_rep = dbenv->rep_handle;
-
if (db_rep->finished) {
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"ignoring elect thread request %d; repmgr is finished",
initial_operation));
return (0);
@@ -51,14 +46,14 @@ __repmgr_init_election(dbenv, initial_operation)
if (db_rep->elect_thread == NULL)
ret = start_election_thread(dbenv);
else if (db_rep->elect_thread->finished) {
- RPRINT(dbenv, (dbenv, &mb, "join dead elect thread"));
+ RPRINT(dbenv, (dbenv, "join dead elect thread"));
if ((ret = __repmgr_thread_join(db_rep->elect_thread)) != 0)
return (ret);
__os_free(dbenv, db_rep->elect_thread);
db_rep->elect_thread = NULL;
ret = start_election_thread(dbenv);
} else {
- RPRINT(dbenv, (dbenv, &mb, "reusing existing elect thread"));
+ RPRINT(dbenv, (dbenv, "reusing existing elect thread"));
if ((ret = __repmgr_signal(&db_rep->check_election)) != 0)
__db_err(dbenv, ret, "can't signal election thread");
}
@@ -99,18 +94,15 @@ __repmgr_elect_thread(args)
{
DB_ENV *dbenv = args;
int ret;
-#ifdef DIAGNOSTIC
- DB_MSGBUF mb;
-#endif
- RPRINT(dbenv, (dbenv, &mb, "starting election thread"));
+ RPRINT(dbenv, (dbenv, "starting election thread"));
if ((ret = __repmgr_elect_main(dbenv)) != 0) {
__db_err(dbenv, ret, "election thread failed");
__repmgr_thread_failure(dbenv, ret);
}
- RPRINT(dbenv, (dbenv, &mb, "election thread is exiting"));
+ RPRINT(dbenv, (dbenv, "election thread is exiting"));
return (NULL);
}
@@ -126,13 +118,14 @@ __repmgr_elect_main(dbenv)
struct timespec deadline;
#endif
u_int nsites, nvotes;
- int chosen_master, done, failure_recovery, last_op, ret, to_do;
-#ifdef DIAGNOSTIC
- DB_MSGBUF mb;
-#endif
+ int done, failure_recovery, last_op;
+ int need_success, ret, succeeded, to_do;
+
+ COMPQUIET(need_success, TRUE);
db_rep = dbenv->rep_handle;
last_op = 0;
+ failure_recovery = succeeded = FALSE;
/*
* db_rep->operation_needed is the mechanism by which the outside world
@@ -159,61 +152,78 @@ __repmgr_elect_main(dbenv)
to_do = db_rep->operation_needed;
db_rep->operation_needed = 0;
UNLOCK_MUTEX(db_rep->mutex);
- if (to_do == ELECT_FAILURE_ELECTION) {
+
+ /*
+ * The way we are invoked determines the criterion for completion (which
+ * is represented as "need_success"): if we've been asked to do an
+ * election, we're only "done" when an election has actually succeeded.
+ * If we're just here trying to find the master initially, then merely
+ * getting a valid master_eid suffices.
+ */
+ switch (to_do) {
+ case ELECT_FAILURE_ELECTION:
failure_recovery = TRUE;
to_do = ELECT_ELECTION;
- } else
- failure_recovery = FALSE;
+ /* FALLTHROUGH */
+ case ELECT_ELECTION:
+ need_success = TRUE;
+ break;
+ case ELECT_SEEK_MASTER:
+ to_do = 0; /* Caller has already called rep_start. */
+ /* FALLTHROUGH */
+ case ELECT_REPSTART:
+ need_success = FALSE;
+ break;
+ default:
+ DB_ASSERT(dbenv, FALSE);
+ }
+ /* Here, need_success has been initialized. */
for (;;) {
- RPRINT(dbenv, (dbenv, &mb, "elect thread to do: %d", to_do));
+ RPRINT(dbenv, (dbenv, "elect thread to do: %d", to_do));
switch (to_do) {
case ELECT_ELECTION:
nsites = __repmgr_get_nsites(db_rep);
- if (db_rep->init_policy == DB_REP_FULL_ELECTION &&
- !db_rep->found_master)
- nvotes = nsites;
- else {
- nvotes = ELECTION_MAJORITY(nsites);
+ nvotes = ELECTION_MAJORITY(nsites);
- /*
- * If we're doing an election because we noticed
- * that the master failed, it's reasonable to
- * expect that the master won't participate. By
- * not waiting for its vote, we can probably
- * complete the election faster. But note that
- * we shouldn't allow this to affect nvotes
- * calculation.
- */
- if (failure_recovery) {
- nsites--;
-
- if (nsites == 1) {
- /*
- * We've just lost the only
- * other site in the group, so
- * there's no point in holding
- * an election.
- */
- if ((ret =
- __repmgr_become_master(
- dbenv)) != 0)
- return (ret);
- break;
- }
+ /*
+ * If we're doing an election because we noticed that
+ * the master failed, it's reasonable to expect that the
+ * master won't participate. By not waiting for its
+ * vote, we can probably complete the election faster.
+ * But note that we shouldn't allow this to affect
+ * nvotes calculation.
+ */
+ if (failure_recovery) {
+ nsites--;
+
+ if (nsites == 1) {
+ /*
+ * We've just lost the only other site
+ * in the group, so there's no point in
+ * holding an election.
+ */
+ if ((ret = __repmgr_become_master(
+ dbenv)) != 0)
+ return (ret);
+ break;
}
}
switch (ret = __rep_elect(dbenv,
- (int)nsites, (int)nvotes, &chosen_master, 0)) {
+ (int)nsites, (int)nvotes, 0)) {
case DB_REP_UNAVAIL:
break;
case 0:
- if (chosen_master == SELF_EID &&
- (ret = __repmgr_become_master(dbenv)) != 0)
- return (ret);
+ succeeded = TRUE;
+ if (db_rep->takeover_pending) {
+ db_rep->takeover_pending = FALSE;
+ if ((ret =
+ __repmgr_become_master(dbenv)) != 0)
+ return (ret);
+ }
break;
default:
@@ -247,9 +257,9 @@ __repmgr_elect_main(dbenv)
}
LOCK_MUTEX(db_rep->mutex);
- while (!__repmgr_is_ready(dbenv)) {
+ while (!succeeded && !__repmgr_is_ready(dbenv)) {
#ifdef DB_WIN32
- duration = db_rep->election_retry_wait / 1000;
+ duration = db_rep->election_retry_wait / US_PER_MS;
ret = SignalObjectAndWait(db_rep->mutex,
db_rep->check_election, duration, FALSE);
LOCK_MUTEX(db_rep->mutex);
@@ -268,18 +278,39 @@ __repmgr_elect_main(dbenv)
}
/*
- * Ways we can get here: time out, operation needed, master
- * becomes valid, or thread shut-down command.
+ * Ways we can get here: election succeeded, sleep duration
+ * expired, "operation needed", or thread shut-down command.
*
- * If we're not yet done, figure out what to do next: if we've
- * been told explicitly what to do (operation_needed), do that.
- * Otherwise, what we do next is approximately the complement of
- * what we just did; in other words, we alternate.
+ * If we're not yet done, figure out what to do next (which may
+ * be trivially easy if we've been told explicitly, via the
+ * "operation needed" flag). We must first check if we've been
+ * told to do a specific operation, because that could make our
+ * completion criterion more stringent. Note that we never
+ * lessen our completion criterion (i.e., unlike the initial
+ * case, we may leave need_success untouched here).
*/
- done = IS_VALID_EID(db_rep->master_eid) || db_rep->finished;
- if (done)
+ done = FALSE;
+ if ((to_do = db_rep->operation_needed) != 0) {
+ db_rep->operation_needed = 0;
+ switch (to_do) {
+ case ELECT_FAILURE_ELECTION:
+ failure_recovery = TRUE;
+ to_do = ELECT_ELECTION;
+ /* FALLTHROUGH */
+ case ELECT_ELECTION:
+ need_success = TRUE;
+ break;
+ case ELECT_SEEK_MASTER:
+ to_do = 0;
+ break;
+ default:
+ break;
+ }
+ } else if ((done = (succeeded ||
+ (!need_success && IS_VALID_EID(db_rep->master_eid)) ||
+ db_rep->finished)))
db_rep->elect_thread->finished = TRUE;
- else if ((to_do = db_rep->operation_needed) == 0) {
+ else {
if (last_op == ELECT_ELECTION)
to_do = ELECT_REPSTART;
else {
@@ -296,22 +327,8 @@ __repmgr_elect_main(dbenv)
!db_rep->found_master)
to_do = ELECT_REPSTART;
}
- } else {
- db_rep->operation_needed = 0;
- if (to_do == ELECT_FAILURE_ELECTION) {
- failure_recovery = TRUE;
- to_do = ELECT_ELECTION;
- } else
- failure_recovery = FALSE;
}
- /*
- * TODO: is it possible for an operation_needed to be set, with
- * nevertheless a valid master? I don't think so. Would a more
- * straightforward exit test involve "operation_needed" instead
- * of (or in addition to) valid master?
- */
-
UNLOCK_MUTEX(db_rep->mutex);
if (done)
return (0);
@@ -319,26 +336,21 @@ __repmgr_elect_main(dbenv)
}
/*
- * Tests whether the election thread is ready to do something, or if it should
- * wait a little while.
+ * Tests whether another thread has signalled for our attention.
*/
static int
__repmgr_is_ready(dbenv)
DB_ENV *dbenv;
{
DB_REP *db_rep;
-#ifdef DIAGNOSTIC
- DB_MSGBUF mb;
-#endif
db_rep = dbenv->rep_handle;
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"repmgr elect: opcode %d, finished %d, master %d",
db_rep->operation_needed, db_rep->finished, db_rep->master_eid));
- return (db_rep->operation_needed ||
- db_rep->finished || IS_VALID_EID(db_rep->master_eid));
+ return (db_rep->operation_needed || db_rep->finished);
}
/*
@@ -356,14 +368,17 @@ __repmgr_become_master(dbenv)
db_rep->master_eid = SELF_EID;
db_rep->found_master = TRUE;
+ /*
+ * At the moment, it's useless to pass my address to rep_start here,
+ * because rep_start ignores it in the case of MASTER. So we could
+ * avoid the trouble of allocating and freeing this memory. But might
+ * this conceivably change in the future?
+ */
if ((ret = __repmgr_prepare_my_addr(dbenv, &my_addr)) != 0)
return (ret);
ret = __rep_start(dbenv, &my_addr, DB_REP_MASTER);
__os_free(dbenv, my_addr.data);
- if (ret != 0)
- return (ret);
- if ((ret = __repmgr_stash_generation(dbenv)) != 0)
- return (ret);
+ __repmgr_stash_generation(dbenv);
- return (0);
+ return (ret);
}
diff --git a/db/repmgr/repmgr_method.c b/db/repmgr/repmgr_method.c
index d2fdb8eb9..723bde7e7 100644
--- a/db/repmgr/repmgr_method.c
+++ b/db/repmgr/repmgr_method.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2005-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2005,2007 Oracle. All rights reserved.
*
- * $Id: repmgr_method.c,v 1.28 2006/09/11 15:15:20 bostic Exp $
+ * $Id: repmgr_method.c,v 1.38 2007/06/11 18:29:34 alanb Exp $
*/
#include "db_config.h"
@@ -15,11 +14,6 @@
static int __repmgr_await_threads __P((DB_ENV *));
/*
- * TODO: should (more of) this function be protected by mutex? Caution: calling
- * rep_start while holding mutex doesn't work, 'cuz it pushes out a message to
- * the send() function.
- */
-/*
* PUBLIC: int __repmgr_start __P((DB_ENV *, int, u_int32_t));
*/
int
@@ -51,7 +45,6 @@ __repmgr_start(dbenv, nthreads, flags)
switch (flags) {
case DB_REP_CLIENT:
case DB_REP_ELECTION:
- case DB_REP_FULL_ELECTION:
case DB_REP_MASTER:
break;
default:
@@ -91,7 +84,7 @@ __repmgr_start(dbenv, nthreads, flags)
__os_free(dbenv, my_addr.data);
if (ret == 0) {
LOCK_MUTEX(db_rep->mutex);
- ret = __repmgr_init_election(dbenv, 0);
+ ret = __repmgr_init_election(dbenv, ELECT_SEEK_MASTER);
UNLOCK_MUTEX(db_rep->mutex);
}
}
@@ -136,18 +129,15 @@ __repmgr_close(dbenv)
{
DB_REP *db_rep;
int ret, t_ret;
-#ifdef DIAGNOSTIC
- DB_MSGBUF mb;
-#endif
ret = 0;
db_rep = dbenv->rep_handle;
if (db_rep->selector != NULL) {
- RPRINT(dbenv, (dbenv, &mb, "Stopping repmgr threads"));
+ RPRINT(dbenv, (dbenv, "Stopping repmgr threads"));
ret = __repmgr_stop_threads(dbenv);
if ((t_ret = __repmgr_await_threads(dbenv)) != 0 && ret == 0)
ret = t_ret;
- RPRINT(dbenv, (dbenv, &mb, "Repmgr threads are finished"));
+ RPRINT(dbenv, (dbenv, "Repmgr threads are finished"));
}
if ((t_ret = __repmgr_net_close(dbenv)) != 0 && ret == 0)
@@ -196,33 +186,23 @@ __repmgr_get_ack_policy(dbenv, policy)
}
/*
- * PUBLIC: int __repmgr_dbenv_create __P((DB_ENV *, DB_REP *));
+ * PUBLIC: int __repmgr_env_create __P((DB_ENV *, DB_REP *));
*/
int
-__repmgr_dbenv_create(dbenv, db_rep)
+__repmgr_env_create(dbenv, db_rep)
DB_ENV *dbenv;
DB_REP *db_rep;
{
int ret;
/* Set some default values. */
- db_rep->elect_timeout = 2 * 1000000; /* 2 seconds */
- db_rep->ack_timeout = 1 * 1000000; /* 1 second */
- db_rep->connection_retry_wait = 30 * 1000000; /* 30 seconds */
- db_rep->election_retry_wait = 10 * 1000000; /* 10 seconds */
+ db_rep->ack_timeout = 1 * US_PER_SEC; /* 1 second */
+ db_rep->connection_retry_wait = 30 * US_PER_SEC; /* 30 seconds */
+ db_rep->election_retry_wait = 10 * US_PER_SEC; /* 10 seconds */
db_rep->config_nsites = 0;
db_rep->peer = DB_EID_INVALID;
db_rep->perm_policy = DB_REPMGR_ACKS_QUORUM;
- db_rep->my_priority = 100;
- /*
- * TODO: OK, this has just crossed my pain tolerance threshold: I think
- * this is just getting too unjustifiably complex. It's probably just
- * to have an explicit flag of some sort indicating that initialization
- * has been done, and maybe not even bother with the fine granularity of
- * initializing net, sync and queue separately (at least in terms of
- * letting them succeed or fail independently).
- */
#ifdef DB_WIN32
db_rep->waiters = NULL;
#else
@@ -235,10 +215,10 @@ __repmgr_dbenv_create(dbenv, db_rep)
}
/*
- * PUBLIC: void __repmgr_dbenv_destroy __P((DB_ENV *, DB_REP *));
+ * PUBLIC: void __repmgr_env_destroy __P((DB_ENV *, DB_REP *));
*/
void
-__repmgr_dbenv_destroy(dbenv, db_rep)
+__repmgr_env_destroy(dbenv, db_rep)
DB_ENV *dbenv;
DB_REP *db_rep;
{
@@ -299,7 +279,6 @@ __repmgr_await_threads(dbenv)
db_rep->elect_thread = NULL;
}
- /* TODO: if the join fails, how/when do we clean up the memory? */
for (i=0; i<db_rep->nthreads && db_rep->messengers[i] != NULL; i++) {
messenger = db_rep->messengers[i];
if ((t_ret = __repmgr_thread_join(messenger)) != 0 && ret == 0)
diff --git a/db/repmgr/repmgr_msg.c b/db/repmgr/repmgr_msg.c
index ceeeb968d..6b70bbbe1 100644
--- a/db/repmgr/repmgr_msg.c
+++ b/db/repmgr/repmgr_msg.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2005-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2005,2007 Oracle. All rights reserved.
*
- * $Id: repmgr_msg.c,v 1.23 2006/09/11 15:15:20 bostic Exp $
+ * $Id: repmgr_msg.c,v 1.36 2007/06/11 18:29:34 alanb Exp $
*/
#include "db_config.h"
@@ -40,14 +39,11 @@ message_loop(dbenv)
{
REPMGR_MESSAGE *msg;
int ret;
-#ifdef DIAGNOSTIC
- DB_MSGBUF mb;
-#endif
while ((ret = __repmgr_queue_get(dbenv, &msg)) == 0) {
while ((ret = process_message(dbenv, &msg->control, &msg->rec,
msg->originating_eid)) == DB_LOCK_DEADLOCK)
- RPRINT(dbenv, (dbenv, &mb, "repmgr deadlock retry"));
+ RPRINT(dbenv, (dbenv, "repmgr deadlock retry"));
__os_free(dbenv, msg);
if (ret != 0)
@@ -68,9 +64,6 @@ process_message(dbenv, control, rec, eid)
DB_LSN permlsn;
int ret;
u_int32_t generation;
-#ifdef DIAGNOSTIC
- DB_MSGBUF mb;
-#endif
db_rep = dbenv->rep_handle;
@@ -81,35 +74,19 @@ process_message(dbenv, control, rec, eid)
generation = db_rep->generation;
switch (ret =
- __rep_process_message(dbenv, control, rec, &eid, &permlsn)) {
- case DB_REP_NEWSITE:
- return (handle_newsite(dbenv, rec));
-
- case DB_REP_NEWMASTER:
- db_rep->found_master = TRUE;
- /* Check if it's us. */
- if ((db_rep->master_eid = eid) == SELF_EID) {
- if ((ret = __repmgr_become_master(dbenv)) != 0)
- return (ret);
- } else {
- /*
- * Since we have no further need for 'eid' throughout
- * the remainder of this function, it's (relatively)
- * safe to pass its address directly to the
- * application. If that were not the case, we could
- * instead copy it into a scratch variable.
- */
- RPRINT(dbenv,
- (dbenv, &mb, "firing NEWMASTER (%d) event", eid));
- DB_EVENT(dbenv, DB_EVENT_REP_NEWMASTER, &eid);
- if ((ret = __repmgr_stash_generation(dbenv)) != 0)
- return (ret);
+ __rep_process_message(dbenv, control, rec, eid, &permlsn)) {
+ case 0:
+ if (db_rep->takeover_pending) {
+ db_rep->takeover_pending = FALSE;
+ return (__repmgr_become_master(dbenv));
}
break;
+ case DB_REP_NEWSITE:
+ return (handle_newsite(dbenv, rec));
+
case DB_REP_HOLDELECTION:
LOCK_MUTEX(db_rep->mutex);
- db_rep->master_eid = DB_EID_INVALID;
ret = __repmgr_init_election(dbenv, ELECT_ELECTION);
UNLOCK_MUTEX(db_rep->mutex);
if (ret != 0)
@@ -117,9 +94,10 @@ process_message(dbenv, control, rec, eid)
break;
case DB_REP_DUPMASTER:
+ if ((ret = __repmgr_repstart(dbenv, DB_REP_CLIENT)) != 0)
+ return (ret);
LOCK_MUTEX(db_rep->mutex);
- db_rep->master_eid = DB_EID_INVALID;
- ret = __repmgr_init_election(dbenv, ELECT_REPSTART);
+ ret = __repmgr_init_election(dbenv, ELECT_ELECTION);
UNLOCK_MUTEX(db_rep->mutex);
if (ret != 0)
return (ret);
@@ -142,9 +120,9 @@ process_message(dbenv, control, rec, eid)
case DB_REP_NOTPERM: /* FALLTHROUGH */
case DB_REP_IGNORE: /* FALLTHROUGH */
- case DB_LOCK_DEADLOCK: /* FALLTHROUGH */
- case 0:
+ case DB_LOCK_DEADLOCK:
break;
+
default:
__db_err(dbenv, ret, "DB_ENV->rep_process_message");
return (ret);
@@ -153,7 +131,62 @@ process_message(dbenv, control, rec, eid)
}
/*
+ * Handle replication-related events. Returns only 0 or DB_EVENT_NOT_HANDLED;
+ * no other error returns are tolerated.
+ *
+ * PUBLIC: int __repmgr_handle_event __P((DB_ENV *, u_int32_t, void *));
+ */
+int
+__repmgr_handle_event(dbenv, event, info)
+ DB_ENV *dbenv;
+ u_int32_t event;
+ void *info;
+{
+ DB_REP *db_rep;
+
+ db_rep = dbenv->rep_handle;
+
+ if (db_rep->selector == NULL) {
+ /* Repmgr is not in use, so all events go to application. */
+ return (DB_EVENT_NOT_HANDLED);
+ }
+
+ switch (event) {
+ case DB_EVENT_REP_ELECTED:
+ DB_ASSERT(dbenv, info == NULL);
+
+ db_rep->found_master = TRUE;
+ db_rep->takeover_pending = TRUE;
+
+ /*
+ * The application doesn't really need to see this, because the
+ * purpose of this event is to tell the winning site that it
+ * should call rep_start(MASTER), and in repmgr we do that
+ * automatically. Still, they could conceivably be curious, and
+ * it doesn't hurt anything to let them know.
+ */
+ break;
+ case DB_EVENT_REP_NEWMASTER:
+ DB_ASSERT(dbenv, info != NULL);
+
+ db_rep->found_master = TRUE;
+ db_rep->master_eid = *(int *)info;
+ __repmgr_stash_generation(dbenv);
+
+ /* Application still needs to see this. */
+ break;
+ default:
+ break;
+ }
+ return (DB_EVENT_NOT_HANDLED);
+}
+
+/*
* Acknowledges a message.
+ *
+ * !!!
+ * Note that this cannot be called from the select() thread, in case we call
+ * __repmgr_bust_connection(..., FALSE).
*/
static int
ack_message(dbenv, generation, lsn)
@@ -167,9 +200,6 @@ ack_message(dbenv, generation, lsn)
DB_REPMGR_ACK ack;
DBT control2, rec2;
int ret;
-#ifdef DIAGNOSTIC
- DB_MSGBUF mb;
-#endif
db_rep = dbenv->rep_handle;
/*
@@ -179,7 +209,7 @@ ack_message(dbenv, generation, lsn)
*/
if (!IS_VALID_EID(db_rep->master_eid) ||
db_rep->master_eid == SELF_EID) {
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"dropping ack with master %d", db_rep->master_eid));
return (0);
}
@@ -217,15 +247,12 @@ handle_newsite(dbenv, rec)
ADDRINFO *ai;
DB_REP *db_rep;
REPMGR_SITE *site;
+ SITE_STRING_BUFFER buffer;
repmgr_netaddr_t *addr;
size_t hlen;
u_int16_t port;
int ret;
char *host;
-#ifdef DIAGNOSTIC
- DB_MSGBUF mb;
- SITE_STRING_BUFFER buffer;
-#endif
db_rep = dbenv->rep_handle;
/*
@@ -251,57 +278,40 @@ handle_newsite(dbenv, rec)
/* It's me, do nothing. */
if (strcmp(host, db_rep->my_addr.host) == 0 &&
port == db_rep->my_addr.port) {
- RPRINT(dbenv, (dbenv, &mb, "repmgr ignores own NEWSITE info"));
+ RPRINT(dbenv, (dbenv, "repmgr ignores own NEWSITE info"));
return (0);
}
LOCK_MUTEX(db_rep->mutex);
if ((ret = __repmgr_add_site(dbenv, host, port, &site)) == EEXIST) {
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"NEWSITE info from %s was already known",
__repmgr_format_site_loc(site, buffer)));
/*
- * TODO: test this. Is this really how it works? When
- * a site comes back on-line, do we really get NEWSITE?
- * Or is that return code reserved for only the first
- * time a site joins a group?
- */
-
- /*
- * TODO: it seems like it might be a good idea to move
- * this site's retry up to the beginning of the queue,
- * and try it now, on the theory that if it's
- * generating a NEWSITE, it might have woken up. Does
- * that pose a problem for my assumption of time-ordered
- * retry list? I guess not, if we can reorder items.
- */
-
- /*
* In case we already know about this site only because it
* first connected to us, we may not yet have had a chance to
* look up its addresses. Even though we don't need them just
* now, this is an advantageous opportunity to get them since we
- * can do so away from the critical select thread.
+ * can do so away from the critical select thread. Give up only
+ * for a disastrous failure.
*/
addr = &site->net_addr;
- if (addr->address_list == NULL &&
- __repmgr_getaddr(dbenv,
- addr->host, addr->port, 0, &ai) == 0)
- addr->address_list = ai;
+ if (addr->address_list == NULL) {
+ if ((ret = __repmgr_getaddr(dbenv,
+ addr->host, addr->port, 0, &ai)) == 0)
+ addr->address_list = ai;
+ else if (ret != DB_REP_UNAVAIL)
+ goto unlock;
+ }
ret = 0;
- if (site->state == SITE_IDLE) {
- /*
- * TODO: yank the retry object up to the front
- * of the queue, after marking it as due now
- */
- } else
+ if (site->state == SITE_CONNECTED)
goto unlock; /* Nothing to do. */
} else {
- RPRINT(dbenv, (dbenv, &mb, "NEWSITE info added %s",
- __repmgr_format_site_loc(site, buffer)));
if (ret != 0)
goto unlock;
+ RPRINT(dbenv, (dbenv, "NEWSITE info added %s",
+ __repmgr_format_site_loc(site, buffer)));
}
/*
@@ -315,19 +325,17 @@ unlock: UNLOCK_MUTEX(db_rep->mutex);
}
/*
- * PUBLIC: int __repmgr_stash_generation __P((DB_ENV *));
+ * PUBLIC: void __repmgr_stash_generation __P((DB_ENV *));
*/
-int
+void
__repmgr_stash_generation(dbenv)
DB_ENV *dbenv;
{
- DB_REP_STAT *statp;
- int ret;
+ DB_REP *db_rep;
+ REP *rep;
- if ((ret = __rep_stat_pp(dbenv, &statp, 0)) != 0)
- return (ret);
- dbenv->rep_handle->generation = statp->st_gen;
+ db_rep = dbenv->rep_handle;
+ rep = db_rep->region;
- __os_ufree(dbenv, statp);
- return (0);
+ db_rep->generation = rep->gen;
}
diff --git a/db/repmgr/repmgr_net.c b/db/repmgr/repmgr_net.c
index 15402e490..95fdeee1f 100644
--- a/db/repmgr/repmgr_net.c
+++ b/db/repmgr/repmgr_net.c
@@ -1,16 +1,16 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2005-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2005,2007 Oracle. All rights reserved.
*
- * $Id: repmgr_net.c,v 1.39 2006/09/19 14:14:11 mjc Exp $
+ * $Id: repmgr_net.c,v 1.55 2007/06/11 18:29:34 alanb Exp $
*/
#include "db_config.h"
#define __INCLUDE_NETWORKING 1
#include "db_int.h"
+#include "dbinc/mp.h"
/*
* The functions in this module implement a simple wire protocol for
@@ -50,9 +50,6 @@
* Note that, for the broadcast case, where we're going to use this
* repeatedly, the iovecs is a template that must be copied, since in normal use
* the iovecs pointers and lengths get adjusted after every partial write.
- *
- * TODO: this is such an important point that it's probably worth renaming the
- * iovecs field here to iovecs_template.
*/
struct sending_msg {
REPMGR_IOVECS iovecs;
@@ -76,6 +73,13 @@ static REPMGR_SITE *__repmgr_available_site __P((DB_ENV *, int));
* __repmgr_send --
* The send function for DB_ENV->rep_set_transport.
*
+ * !!!
+ * This is only ever called as the replication transport call-back, which means
+ * it's either on one of our message processing threads or an application
+ * thread. It mustn't be called from the select() thread, because we might call
+ * __repmgr_bust_connection(..., FALSE) here, and that's not allowed in the
+ * select() thread.
+ *
* PUBLIC: int __repmgr_send __P((DB_ENV *, const DBT *, const DBT *,
* PUBLIC: const DB_LSN *, int, u_int32_t));
*/
@@ -92,9 +96,6 @@ __repmgr_send(dbenv, control, rec, lsnp, eid, flags)
int ret, t_ret;
REPMGR_SITE *site;
REPMGR_CONNECTION *conn;
-#ifdef DIAGNOSTIC
- DB_MSGBUF mb;
-#endif
db_rep = dbenv->rep_handle;
@@ -115,10 +116,10 @@ __repmgr_send(dbenv, control, rec, lsnp, eid, flags)
IS_VALID_EID(db_rep->peer) &&
(site = __repmgr_available_site(dbenv, db_rep->peer)) !=
NULL) {
- RPRINT(dbenv, (dbenv, &mb, "sending request to peer"));
+ RPRINT(dbenv, (dbenv, "sending request to peer"));
} else if ((site = __repmgr_available_site(dbenv, eid)) ==
NULL) {
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"ignoring message sent to unavailable site"));
ret = DB_REP_UNAVAIL;
goto out;
@@ -195,13 +196,16 @@ __repmgr_send(dbenv, control, rec, lsnp, eid, flags)
goto out;
}
/* In ALL_PEERS case, display of "needed" might be confusing. */
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"will await acknowledgement: need %u", needed));
ret = __repmgr_await_ack(dbenv, lsnp);
}
out: UNLOCK_MUTEX(db_rep->mutex);
-
+ if (ret != 0 && LF_ISSET(DB_REP_PERMANENT)) {
+ STAT(db_rep->region->mstat.st_perm_failed++);
+ DB_EVENT(dbenv, DB_EVENT_REP_PERM_FAILED, NULL);
+ }
return (ret);
}
@@ -231,6 +235,10 @@ __repmgr_available_site(dbenv, eid)
*
* !!!
* Caller must hold dbenv->mutex.
+ *
+ * !!!
+ * Note that this cannot be called from the select() thread, in case we call
+ * __repmgr_bust_connection(..., FALSE).
*/
static int
__repmgr_send_broadcast(dbenv, control, rec, nsitesp, npeersp)
@@ -321,13 +329,10 @@ __repmgr_send_internal(dbenv, conn, msg)
{
#define OUT_QUEUE_LIMIT 10 /* arbitrary, for now */
REPMGR_IOVECS iovecs;
+ SITE_STRING_BUFFER buffer;
int ret;
size_t nw;
size_t total_written;
-#ifdef DIAGNOSTIC
- DB_MSGBUF mb;
- SITE_STRING_BUFFER buffer;
-#endif
DB_ASSERT(dbenv, !F_ISSET(conn, CONN_CONNECTING));
if (!STAILQ_EMPTY(&conn->outbound_queue)) {
@@ -336,14 +341,15 @@ __repmgr_send_internal(dbenv, conn, msg)
* thread, so we can't try sending in-line here. We can only
* queue the msg for later.
*/
- RPRINT(dbenv, (dbenv, &mb, "msg to %s to be queued",
+ RPRINT(dbenv, (dbenv, "msg to %s to be queued",
__repmgr_format_eid_loc(dbenv->rep_handle,
conn->eid, buffer)));
if (conn->out_queue_length < OUT_QUEUE_LIMIT)
return (enqueue_msg(dbenv, conn, msg, 0));
else {
- RPRINT(dbenv, (dbenv, &mb, "queue limit exceeded"));
-/* repmgr->stats.tossed_msgs++; */
+ RPRINT(dbenv, (dbenv, "queue limit exceeded"));
+ STAT(dbenv->rep_handle->
+ region->mstat.st_msgs_dropped++);
return (0);
}
}
@@ -368,7 +374,7 @@ __repmgr_send_internal(dbenv, conn, msg)
return (DB_REP_UNAVAIL);
}
- RPRINT(dbenv, (dbenv, &mb, "wrote only %lu bytes to %s",
+ RPRINT(dbenv, (dbenv, "wrote only %lu bytes to %s",
(u_long)total_written,
__repmgr_format_eid_loc(dbenv->rep_handle, conn->eid, buffer)));
/*
@@ -379,7 +385,7 @@ __repmgr_send_internal(dbenv, conn, msg)
if ((ret = enqueue_msg(dbenv, conn, msg, total_written)) != 0)
return (ret);
-/* repmgr->stats.partial_retransmissions++; */
+ STAT(dbenv->rep_handle->region->mstat.st_msgs_queued++);
/*
* Wake the main select thread so that it can discover that it has
@@ -512,13 +518,14 @@ __repmgr_bust_connection(dbenv, conn, do_close)
int do_close;
{
DB_REP *db_rep;
- int ret, eid;
+ int connecting, ret, eid;
db_rep = dbenv->rep_handle;
ret = 0;
DB_ASSERT(dbenv, !TAILQ_EMPTY(&db_rep->connections));
eid = conn->eid;
+ connecting = F_ISSET(conn, CONN_CONNECTING);
if (do_close)
__repmgr_cleanup_connection(dbenv, conn);
else {
@@ -538,9 +545,14 @@ __repmgr_bust_connection(dbenv, conn, do_close)
dbenv, (u_int)eid, FALSE)) != 0)
return (ret);
- if (eid == db_rep->master_eid) {
- db_rep->master_eid = DB_EID_INVALID;
-
+ /*
+ * If this connection had gotten no further than the CONNECTING
+ * state, this can't count as a loss of connection to the
+ * master.
+ */
+ if (!connecting && eid == db_rep->master_eid) {
+ (void)__memp_set_config(
+ dbenv, DB_MEMP_SYNC_INTERRUPT, 1);
if ((ret = __repmgr_init_election(
dbenv, ELECT_FAILURE_ELECTION)) != 0)
return (ret);
@@ -572,10 +584,12 @@ __repmgr_cleanup_connection(dbenv, conn)
db_rep = dbenv->rep_handle;
TAILQ_REMOVE(&db_rep->connections, conn, entries);
- (void)closesocket(conn->fd);
+ if (conn->fd != INVALID_SOCKET) {
+ (void)closesocket(conn->fd);
#ifdef DB_WIN32
- (void)WSACloseEvent(conn->event_object);
+ (void)WSACloseEvent(conn->event_object);
#endif
+ }
/*
* Deallocate any input and output buffers we may have.
@@ -768,8 +782,10 @@ __repmgr_getaddr(dbenv, host, port, flags, result)
ADDRINFO **result;
{
ADDRINFO *answer, hints;
- int ret;
char buffer[10]; /* 2**16 fits in 5 digits. */
+#ifdef DB_WIN32
+ int ret;
+#endif
/*
* Ports are really 16-bit unsigned values, but it's too painful to
@@ -792,9 +808,16 @@ __repmgr_getaddr(dbenv, host, port, flags, result)
hints.ai_socktype = SOCK_STREAM;
hints.ai_flags = flags;
(void)snprintf(buffer, sizeof(buffer), "%u", port);
- if ((ret =
- __db_getaddrinfo(dbenv, host, port, buffer, &hints, &answer)) != 0)
- return (ret);
+
+ /*
+ * Although it's generally bad to discard error information, the return
+ * code from __db_getaddrinfo is undependable. Our callers at least
+ * would like to be able to distinguish errors in getaddrinfo (which we
+ * want to consider to be re-tryable), from other failure (e.g., EINVAL,
+ * above).
+ */
+ if (__db_getaddrinfo(dbenv, host, port, buffer, &hints, &answer) != 0)
+ return (DB_REP_UNAVAIL);
*result = answer;
return (0);
@@ -834,7 +857,11 @@ __repmgr_add_site(dbenv, host, port, newsitep)
goto out;
}
- if ((ret = __repmgr_getaddr(dbenv, host, port, 0, &address_list)) != 0)
+ if ((ret = __repmgr_getaddr(
+ dbenv, host, port, 0, &address_list)) == DB_REP_UNAVAIL) {
+ /* Allow re-tryable errors. We'll try again later. */
+ address_list = NULL;
+ } else if (ret != 0)
return (ret);
if ((ret = __repmgr_pack_netaddr(
@@ -968,6 +995,7 @@ __repmgr_net_close(dbenv)
DB_ENV *dbenv;
{
DB_REP *db_rep;
+ REPMGR_CONNECTION *conn;
#ifndef DB_WIN32
struct sigaction sigact;
#endif
@@ -977,8 +1005,17 @@ __repmgr_net_close(dbenv)
if (db_rep->listen_fd == INVALID_SOCKET)
return (0);
- ret = 0;
+ TAILQ_FOREACH(conn, &db_rep->connections, entries) {
+ if (conn->fd != INVALID_SOCKET) {
+ (void)closesocket(conn->fd);
+ conn->fd = INVALID_SOCKET;
+#ifdef DB_WIN32
+ (void)WSACloseEvent(conn->event_object);
+#endif
+ }
+ }
+ ret = 0;
if (closesocket(db_rep->listen_fd) == SOCKET_ERROR)
ret = net_errno;
@@ -1013,14 +1050,11 @@ __repmgr_net_destroy(dbenv, db_rep)
REPMGR_SITE *site;
u_int i;
+ __repmgr_cleanup_netaddr(dbenv, &db_rep->my_addr);
+
if (db_rep->sites == NULL)
return;
- /*
- * TODO: I think maybe these, and especially connections, should be
- * cleaned up in close(), 'cuz there's more than just memory there.
- * Does it matter, I wonder?
- */
while (!TAILQ_EMPTY(&db_rep->retries)) {
retry = TAILQ_FIRST(&db_rep->retries);
TAILQ_REMOVE(&db_rep->retries, retry, entries);
diff --git a/db/repmgr/repmgr_posix.c b/db/repmgr/repmgr_posix.c
index 1a04fef25..fde88262d 100644
--- a/db/repmgr/repmgr_posix.c
+++ b/db/repmgr/repmgr_posix.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2005-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2005,2007 Oracle. All rights reserved.
*
- * $Id: repmgr_posix.c,v 1.22 2006/09/11 15:15:20 bostic Exp $
+ * $Id: repmgr_posix.c,v 1.29 2007/06/11 18:29:34 alanb Exp $
*/
#include "db_config.h"
@@ -89,7 +88,8 @@ __repmgr_thread_join(thread)
/*
* PUBLIC: int __repmgr_set_nonblocking __P((socket_t));
*/
-int __repmgr_set_nonblocking(fd)
+int
+__repmgr_set_nonblocking(fd)
socket_t fd;
{
int flags;
@@ -124,8 +124,7 @@ __repmgr_wake_waiting_senders(dbenv)
* LSN.
*
* !!!
- * Caller must hold repmgr->mutex (TODO: although that seems a shame, with all
- * that deadline calculation).
+ * Caller must hold repmgr->mutex.
*/
int
__repmgr_await_ack(dbenv, lsnp)
@@ -154,8 +153,7 @@ __repmgr_await_ack(dbenv, lsnp)
if (db_rep->finished)
return (DB_REP_UNAVAIL);
if (ret != 0)
- return (ret); /* TODO: but first check if we need (to
- * create) a panic */
+ return (ret);
}
return (0);
}
@@ -174,26 +172,20 @@ __repmgr_compute_wait_deadline(dbenv, result, wait)
struct timespec *result;
db_timeout_t wait;
{
- u_int32_t secs, usecs;
+ db_timespec v;
/*
* Start with "now"; then add the "wait" offset.
+ *
+ * A db_timespec is the same as a "struct timespec" so we can pass
+ * result directly to the underlying Berkeley DB OS routine.
*/
- __os_clock(dbenv, &secs, &usecs);
-
- if (wait > 1000000) {
- secs += wait / 1000000;
- usecs += wait % 1000000;
- } else
- usecs += wait;
+ __os_gettime(dbenv, (db_timespec *)result);
- if (usecs > 1000000) {
- secs++;
- usecs -= 1000000;
- }
+ /* Convert microsecond wait to a timespec. */
+ DB_TIMEOUT_TO_TIMESPEC(wait, &v);
- result->tv_sec = (time_t)secs;
- result->tv_nsec = (long)(usecs * 1000);
+ timespecadd(result, &v);
}
/*
@@ -439,53 +431,21 @@ __repmgr_readv(fd, iovec, buf_count, byte_count_p)
}
/*
- * Calculate the time duration from now til "when", in the form of a struct
- * timeval (suitable for select()), clipping the result at 0 (i.e., avoid a
- * negative result).
- *
- * PUBLIC: void __repmgr_timeval_diff_current
- * PUBLIC: __P((DB_ENV *, repmgr_timeval_t *, select_timeout_t *));
- */
-void
-__repmgr_timeval_diff_current(dbenv, when, result)
- DB_ENV *dbenv;
- repmgr_timeval_t *when;
- select_timeout_t *result;
-{
- repmgr_timeval_t now;
-
- __os_clock(dbenv, &now.tv_sec, &now.tv_usec);
- if (__repmgr_timeval_cmp(when, &now) <= 0)
- result->tv_sec = result->tv_usec = 0;
- else {
- /*
- * Do the arithmetic; first see if we need to "borrow".
- */
- if (when->tv_usec < now.tv_usec) {
- when->tv_usec += 1000000;
- when->tv_sec--;
- }
- result->tv_usec = (long)(when->tv_usec - now.tv_usec);
- result->tv_sec = (time_t)(when->tv_sec - now.tv_sec);
- }
-}
-
-/*
* PUBLIC: int __repmgr_select_loop __P((DB_ENV *));
*/
int
__repmgr_select_loop(dbenv)
DB_ENV *dbenv;
{
+ struct timeval select_timeout, *select_timeout_p;
DB_REP *db_rep;
REPMGR_CONNECTION *conn, *next;
REPMGR_RETRY *retry;
- select_timeout_t timeout, *timeout_p;
+ db_timespec timeout;
fd_set reads, writes;
int ret, flow_control, maxfd, nready;
u_int8_t buf[10]; /* arbitrary size */
- /* TODO: turn this on when the input queue gets too big. */
flow_control = FALSE;
db_rep = dbenv->rep_handle;
@@ -514,19 +474,9 @@ __repmgr_select_loop(dbenv)
/*
* Examine all connections to see what sort of I/O to ask for on
- * each one. The TAILQ_FOREACH macro would be suitable here,
- * except that it doesn't allow unlinking the current element,
- * which is needed for cleanup_connection.
+ * each one.
*/
- for (conn = TAILQ_FIRST(&db_rep->connections);
- conn != NULL;
- conn = next) {
- next = TAILQ_NEXT(conn, entries);
- if (F_ISSET(conn, CONN_DEFUNCT)) {
- __repmgr_cleanup_connection(dbenv, conn);
- continue;
- }
-
+ TAILQ_FOREACH(conn, &db_rep->connections, entries) {
if (F_ISSET(conn, CONN_CONNECTING)) {
FD_SET((u_int)conn->fd, &reads);
FD_SET((u_int)conn->fd, &writes);
@@ -556,19 +506,23 @@ __repmgr_select_loop(dbenv)
* only have to examine the first one.)
*/
if (TAILQ_EMPTY(&db_rep->retries))
- timeout_p = NULL;
+ select_timeout_p = NULL;
else {
retry = TAILQ_FIRST(&db_rep->retries);
- timeout_p = &timeout;
- __repmgr_timeval_diff_current(
- dbenv, &retry->time, timeout_p);
+ __repmgr_timespec_diff_now(
+ dbenv, &retry->time, &timeout);
+
+ /* Convert the timespec to a timeval. */
+ select_timeout.tv_sec = timeout.tv_sec;
+ select_timeout.tv_usec = timeout.tv_nsec / NS_PER_US;
+ select_timeout_p = &select_timeout;
}
UNLOCK_MUTEX(db_rep->mutex);
- if ((ret = select(maxfd + 1, &reads, &writes, NULL, timeout_p))
- == -1) {
+ if ((ret = select(maxfd + 1,
+ &reads, &writes, NULL, select_timeout_p)) == -1) {
switch (ret = errno) {
case EINTR:
case EWOULDBLOCK:
@@ -582,14 +536,33 @@ __repmgr_select_loop(dbenv)
nready = ret;
LOCK_MUTEX(db_rep->mutex);
+
+ /*
+ * The first priority thing we must do is to clean up any
+ * pending defunct connections. Otherwise, if they have any
+ * lingering pending input, we get very confused if we try to
+ * process it.
+ *
+ * The TAILQ_FOREACH macro would be suitable here, except that
+ * it doesn't allow unlinking the current element, which is
+ * needed for cleanup_connection.
+ */
+ for (conn = TAILQ_FIRST(&db_rep->connections);
+ conn != NULL;
+ conn = next) {
+ next = TAILQ_NEXT(conn, entries);
+ if (F_ISSET(conn, CONN_DEFUNCT))
+ __repmgr_cleanup_connection(dbenv, conn);
+ }
+
if ((ret = __repmgr_retry_connections(dbenv)) != 0)
goto out;
if (nready == 0)
continue;
/*
- * Traverse the linked list. Almost like TAILQ_FOREACH, except
- * that we need the ability to unlink an element along the way.
+ * Traverse the linked list. (Again, like TAILQ_FOREACH, except
+ * that we need the ability to unlink an element along the way.)
*/
for (conn = TAILQ_FIRST(&db_rep->connections);
conn != NULL;
@@ -705,6 +678,10 @@ err_rpt:
* This is just like a little mini-"bust_connection", except that we
* don't reschedule for later, 'cuz we're just about to try again right
* now.
+ *
+ * !!!
+ * Which means this must only be called on the select() thread, since
+ * only there are we allowed to actually close a connection.
*/
DB_ASSERT(dbenv, !TAILQ_EMPTY(&db_rep->connections));
__repmgr_cleanup_connection(dbenv, conn);
diff --git a/db/repmgr/repmgr_queue.c b/db/repmgr/repmgr_queue.c
index be9adc2e7..af9c84e5a 100644
--- a/db/repmgr/repmgr_queue.c
+++ b/db/repmgr/repmgr_queue.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2006,2007 Oracle. All rights reserved.
*
- * $Id: repmgr_queue.c,v 1.6 2006/08/24 14:46:26 bostic Exp $
+ * $Id: repmgr_queue.c,v 1.9 2007/05/17 15:15:51 bostic Exp $
*/
#include "db_config.h"
@@ -29,8 +28,6 @@ __repmgr_queue_create(dbenv, db_rep)
REPMGR_QUEUE *q;
int ret;
- COMPQUIET(dbenv, NULL);
-
if ((ret = __os_calloc(dbenv, 1, sizeof(REPMGR_QUEUE), &q)) != 0)
return (ret);
q->size = 0;
diff --git a/db/repmgr/repmgr_sel.c b/db/repmgr/repmgr_sel.c
index bbb29b0ee..f1aa2ad88 100644
--- a/db/repmgr/repmgr_sel.c
+++ b/db/repmgr/repmgr_sel.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2005
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2006,2007 Oracle. All rights reserved.
*
- * $Id: repmgr_sel.c,v 1.25 2006/09/19 14:14:11 mjc Exp $
+ * $Id: repmgr_sel.c,v 1.36 2007/06/11 18:29:34 alanb Exp $
*/
#include "db_config.h"
@@ -13,9 +12,10 @@
#include "db_int.h"
static int __repmgr_connect __P((DB_ENV*, socket_t *, REPMGR_SITE *));
-static int record_ack __P((DB_ENV *, REPMGR_SITE *, DB_REPMGR_ACK *));
static int dispatch_phase_completion __P((DB_ENV *, REPMGR_CONNECTION *));
static int notify_handshake __P((DB_ENV *, REPMGR_CONNECTION *));
+static int record_ack __P((DB_ENV *, REPMGR_SITE *, DB_REPMGR_ACK *));
+static int __repmgr_try_one __P((DB_ENV *, u_int));
/*
* PUBLIC: void *__repmgr_select_thread __P((void *));
@@ -36,6 +36,10 @@ __repmgr_select_thread(args)
/*
* PUBLIC: int __repmgr_accept __P((DB_ENV *));
+ *
+ * !!!
+ * Only ever called in the select() thread, since we may call
+ * __repmgr_bust_connection(..., TRUE).
*/
int
__repmgr_accept(dbenv)
@@ -50,9 +54,6 @@ __repmgr_accept(dbenv)
#ifdef DB_WIN32
WSAEVENT event_obj;
#endif
-#ifdef DIAGNOSTIC
- DB_MSGBUF mb;
-#endif
db_rep = dbenv->rep_handle;
addrlen = sizeof(siaddr);
@@ -85,7 +86,7 @@ __repmgr_accept(dbenv)
case EOPNOTSUPP:
case ENETUNREACH:
#endif
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"accept error %d considered innocuous", ret));
return (0);
default:
@@ -93,7 +94,7 @@ __repmgr_accept(dbenv)
return (ret);
}
}
- RPRINT(dbenv, (dbenv, &mb, "accepted a new connection"));
+ RPRINT(dbenv, (dbenv, "accepted a new connection"));
if ((ret = __repmgr_set_nonblocking(s)) != 0) {
__db_err(dbenv, ret, "can't set nonblock after accept");
@@ -153,18 +154,16 @@ __repmgr_retry_connections(dbenv)
{
DB_REP *db_rep;
REPMGR_RETRY *retry;
- repmgr_netaddr_t *addr;
- repmgr_timeval_t now;
- ADDRINFO *list;
+ db_timespec now;
u_int eid;
int ret;
db_rep = dbenv->rep_handle;
- __os_clock(dbenv, &now.tv_sec, &now.tv_usec);
+ __os_gettime(dbenv, &now);
while (!TAILQ_EMPTY(&db_rep->retries)) {
retry = TAILQ_FIRST(&db_rep->retries);
- if (__repmgr_timeval_cmp(&retry->time, &now) > 0)
+ if (timespeccmp(&retry->time, &now, >=))
break; /* since items are in time order */
TAILQ_REMOVE(&db_rep->retries, retry, entries);
@@ -172,32 +171,7 @@ __repmgr_retry_connections(dbenv)
eid = retry->eid;
__os_free(dbenv, retry);
- /*
- * If have never yet successfully resolved this site's host
- * name, try to do so now.
- *
- * (Throughout all the rest of repmgr, we almost never do any
- * sort of blocking operation in the select thread. This is the
- * sole exception to that rule. Fortunately, it should rarely
- * happen. It only happens for a site that we only learned
- * about because it connected to us: not only were we not
- * configured to know about it, but we also never got a NEWSITE
- * message about it. And even then only after the connection
- * fails and we want to retry it from this end.)
- */
- addr = &SITE_FROM_EID(eid)->net_addr;
- if (ADDR_LIST_FIRST(addr) == NULL) {
- if (__repmgr_getaddr(dbenv,
- addr->host, addr->port, 0, &list) == 0) {
- addr->address_list = list;
- (void)ADDR_LIST_FIRST(addr);
- } else if ((ret = __repmgr_schedule_connection_attempt(
- dbenv, eid, FALSE)) != 0)
- return (ret);
- else
- continue;
- }
- if ((ret = __repmgr_connect_site(dbenv, eid)) != 0)
+ if ((ret = __repmgr_try_one(dbenv, eid)) != 0)
return (ret);
}
return (0);
@@ -218,19 +192,72 @@ __repmgr_first_try_connections(dbenv)
int ret;
db_rep = dbenv->rep_handle;
- for (eid=0; eid<db_rep->site_cnt; eid++) {
- ADDR_LIST_FIRST(&SITE_FROM_EID(eid)->net_addr);
- if ((ret = __repmgr_connect_site(dbenv, eid)) != 0)
+ for (eid=0; eid<db_rep->site_cnt; eid++)
+ if ((ret = __repmgr_try_one(dbenv, eid)) != 0)
return (ret);
- }
return (0);
}
/*
+ * Makes a best-effort attempt to connect to the indicated site. Returns a
+ * non-zero error indication only for disastrous failures. For re-tryable
+ * errors, we will have scheduled another attempt, and that can be considered
+ * success enough.
+ */
+static int
+__repmgr_try_one(dbenv, eid)
+ DB_ENV *dbenv;
+ u_int eid;
+{
+ DB_REP *db_rep;
+ ADDRINFO *list;
+ repmgr_netaddr_t *addr;
+ int ret;
+
+ db_rep = dbenv->rep_handle;
+
+ /*
+ * If have never yet successfully resolved this site's host name, try to
+ * do so now.
+ *
+ * Throughout all the rest of repmgr, we almost never do any sort of
+ * blocking operation in the select thread. This is the sole exception
+ * to that rule. Fortunately, it should rarely happen:
+ *
+ * - for a site that we only learned about because it connected to us:
+ * not only were we not configured to know about it, but we also never
+ * got a NEWSITE message about it. And even then only if the
+ * connection fails and we want to retry it from this end;
+ *
+ * - if the name look-up system (e.g., DNS) is not working (let's hope
+ * it's temporary), or the host name is not found.
+ */
+ addr = &SITE_FROM_EID(eid)->net_addr;
+ if (ADDR_LIST_FIRST(addr) == NULL) {
+ if ((ret = __repmgr_getaddr(
+ dbenv, addr->host, addr->port, 0, &list)) == 0) {
+ addr->address_list = list;
+ (void)ADDR_LIST_FIRST(addr);
+ } else if (ret == DB_REP_UNAVAIL)
+ return (__repmgr_schedule_connection_attempt(
+ dbenv, eid, FALSE));
+ else
+ return (ret);
+ }
+
+ /* Here, when we have a valid address. */
+ return (__repmgr_connect_site(dbenv, eid));
+}
+
+/*
* Tries to establish a connection with the site indicated by the given eid,
* starting with the "current" element of its address list and trying as many
* addresses as necessary until the list is exhausted.
*
+ * !!!
+ * Only ever called in the select() thread, since we may call
+ * __repmgr_bust_connection(..., TRUE).
+ *
* PUBLIC: int __repmgr_connect_site __P((DB_ENV *, u_int eid));
*/
int
@@ -267,6 +294,7 @@ __repmgr_connect_site(dbenv, eid)
#endif
break;
default:
+ STAT(db_rep->region->mstat.st_connect_fail++);
return (
__repmgr_schedule_connection_attempt(dbenv, eid, FALSE));
}
@@ -329,9 +357,6 @@ __repmgr_connect(dbenv, socket_result, site)
char *why;
int ret;
SITE_STRING_BUFFER buffer;
-#ifdef DIAGNOSTIC
- DB_MSGBUF mb;
-#endif
/*
* Lint doesn't know about DB_ASSERT, so it can't tell that this
@@ -361,7 +386,7 @@ __repmgr_connect(dbenv, socket_result, site)
if (ret == 0 || ret == INPROGRESS) {
*socket_result = s;
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"init connection to %s with result %d",
__repmgr_format_site_loc(site, buffer), ret));
return (ret);
@@ -392,6 +417,8 @@ __repmgr_send_handshake(dbenv, conn)
DB_REPMGR_HANDSHAKE buffer;
DBT cntrl, rec;
+ DB_ASSERT(dbenv, !F_ISSET(conn, CONN_CONNECTING | CONN_DEFUNCT));
+
db_rep = dbenv->rep_handle;
rep = db_rep->region;
my_addr = &db_rep->my_addr;
@@ -403,7 +430,6 @@ __repmgr_send_handshake(dbenv, conn)
DB_ASSERT(dbenv, sizeof(u_int32_t) >= sizeof(int));
buffer.version = DB_REPMGR_VERSION;
- /* TODO: using network byte order is pointless if we only do it here. */
buffer.priority = htonl((u_int32_t)rep->priority);
buffer.port = my_addr->port;
cntrl.data = &buffer;
@@ -449,6 +475,8 @@ __repmgr_read_from_site(dbenv, conn)
conn->eid, buffer);
__db_err(dbenv, ret,
"can't read from %s", buffer);
+ STAT(dbenv->rep_handle->
+ region->mstat.st_connection_drop++);
return (DB_REP_UNAVAIL);
}
}
@@ -461,6 +489,8 @@ __repmgr_read_from_site(dbenv, conn)
(void)__repmgr_format_eid_loc(dbenv->rep_handle,
conn->eid, buffer);
__db_errx(dbenv, "EOF on connection from %s", buffer);
+ STAT(dbenv->rep_handle->
+ region->mstat.st_connection_drop++);
return (DB_REP_UNAVAIL);
}
}
@@ -489,9 +519,6 @@ dispatch_phase_completion(dbenv, conn)
char *host;
u_int port;
int ret, eid;
-#ifdef DIAGNOSTIC
- DB_MSGBUF mb;
-#endif
db_rep = dbenv->rep_handle;
switch (conn->reading_phase) {
@@ -520,10 +547,6 @@ dispatch_phase_completion(dbenv, conn)
* the total memory needed, rounding up for the start of
* each DBT, to ensure possible alignment requirements.
*/
- /*
- * TODO: Keith says we don't need to mess with this: put
- * the burden on base replication code.
- */
memsize = (size_t)
DB_ALIGN(sizeof(REPMGR_MESSAGE), MEM_ALIGN);
control_offset = memsize;
@@ -567,14 +590,6 @@ dispatch_phase_completion(dbenv, conn)
conn->input.repmgr_msg.cntrl.size = control_size;
conn->input.repmgr_msg.rec.size = rec_size;
- /*
- * TODO: consider allocating space for ack's just once
- * (lazily?), or even providing static space for it in
- * the conn structure itself, thus avoiding a bit of
- * thrashing in the memory pool. If we do that, then of
- * course we must get rid of the corresponding call to
- * free(), below.
- */
dbt = &conn->input.repmgr_msg.cntrl;
dbt->size = control_size;
if ((ret = __os_malloc(dbenv, control_size,
@@ -643,7 +658,7 @@ dispatch_phase_completion(dbenv, conn)
host = conn->input.repmgr_msg.rec.data;
host[conn->input.repmgr_msg.rec.size-1] = '\0';
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"got handshake %s:%u, pri %lu", host, port,
(u_long)ntohl(handshake->priority)));
@@ -655,7 +670,7 @@ dispatch_phase_completion(dbenv, conn)
* priority.
*/
site = SITE_FROM_EID(conn->eid);
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"handshake from connection to %s:%lu",
site->net_addr.host,
(u_long)site->net_addr.port));
@@ -664,7 +679,7 @@ dispatch_phase_completion(dbenv, conn)
__repmgr_find_site(dbenv, host, port))) {
site = SITE_FROM_EID(eid);
if (site->state == SITE_IDLE) {
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"handshake from previously idle site"));
retry = site->ref.retry;
TAILQ_REMOVE(&db_rep->retries,
@@ -685,7 +700,7 @@ dispatch_phase_completion(dbenv, conn)
return (DB_REP_UNAVAIL);
}
} else {
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"handshake introduces unknown site"));
if ((ret = __repmgr_pack_netaddr(
dbenv, host, port, NULL,
@@ -752,9 +767,6 @@ notify_handshake(dbenv, conn)
REPMGR_CONNECTION *conn;
{
DB_REP *db_rep;
-#ifdef DIAGNOSTIC
- DB_MSGBUF mb;
-#endif
COMPQUIET(conn, NULL);
@@ -764,12 +776,11 @@ notify_handshake(dbenv, conn)
* getting in touch with another site might finally provide sufficient
* connectivity to find out. But just do this once, because otherwise
* we get messages while the subsequent rep_start operations are going
- * on, and rep tosses them in that case. (TODO: this may need further
- * refinement.)
+ * on, and rep tosses them in that case.
*/
if (db_rep->master_eid == DB_EID_INVALID && !db_rep->done_one) {
db_rep->done_one = TRUE;
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"handshake with no known master to wake election thread"));
return (__repmgr_init_election(dbenv, ELECT_REPSTART));
}
@@ -783,37 +794,24 @@ record_ack(dbenv, site, ack)
DB_REPMGR_ACK *ack;
{
DB_REP *db_rep;
- int ret;
-#ifdef DIAGNOSTIC
- DB_MSGBUF mb;
SITE_STRING_BUFFER buffer;
-#endif
+ int ret;
db_rep = dbenv->rep_handle;
/* Ignore stale acks. */
if (ack->generation < db_rep->generation) {
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"ignoring stale ack (%lu<%lu), from %s",
(u_long)ack->generation, (u_long)db_rep->generation,
__repmgr_format_site_loc(site, buffer)));
return (0);
}
- RPRINT(dbenv, (dbenv, &mb,
+ RPRINT(dbenv, (dbenv,
"got ack [%lu][%lu](%lu) from %s", (u_long)ack->lsn.file,
(u_long)ack->lsn.offset, (u_long)ack->generation,
__repmgr_format_site_loc(site, buffer)));
- /*
- * TODO: what about future ones? Ideally, you'd like to wake up any
- * waiting send() threads and have them return DB_REP_OUTDATED or
- * something. But a mechanism to do that would be messy, and it almost
- * seems not worth it, since (1) this almost can't happen; and (2) if we
- * just ignore it, eventually the send() calls will time out (or not),
- * and as long as we don't mistakenly ack something. The only advantage
- * to doing something is more timely failure notification to the
- * application, in (what I think is) an extremely rare situation.
- */
if (ack->generation == db_rep->generation &&
log_compare(&ack->lsn, &site->max_ack) == 1) {
memcpy(&site->max_ack, &ack->lsn, sizeof(DB_LSN));
@@ -844,6 +842,8 @@ __repmgr_write_some(dbenv, conn)
return (0);
else {
__db_err(dbenv, ret, "writing data");
+ STAT(dbenv->rep_handle->
+ region->mstat.st_connection_drop++);
return (DB_REP_UNAVAIL);
}
}
diff --git a/db/repmgr/repmgr_stat.c b/db/repmgr/repmgr_stat.c
index cbd7113ee..825bfa765 100644
--- a/db/repmgr/repmgr_stat.c
+++ b/db/repmgr/repmgr_stat.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2005-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2005,2007 Oracle. All rights reserved.
*
- * $Id: repmgr_stat.c,v 1.28 2006/09/08 19:22:42 bostic Exp $
+ * $Id: repmgr_stat.c,v 1.35 2007/06/22 18:26:52 bostic Exp $
*/
#include "db_config.h"
@@ -12,6 +11,220 @@
#define __INCLUDE_NETWORKING 1
#include "db_int.h"
+#ifdef HAVE_STATISTICS
+static int __repmgr_print_all __P((DB_ENV *, u_int32_t));
+static int __repmgr_print_sites __P((DB_ENV *));
+static int __repmgr_print_stats __P((DB_ENV *, u_int32_t));
+static int __repmgr_stat __P((DB_ENV *, DB_REPMGR_STAT **, u_int32_t));
+static int __repmgr_stat_print __P((DB_ENV *, u_int32_t));
+
+/*
+ * __repmgr_stat_pp --
+ * DB_ENV->repmgr_stat pre/post processing.
+ *
+ * PUBLIC: int __repmgr_stat_pp __P((DB_ENV *, DB_REPMGR_STAT **, u_int32_t));
+ */
+int
+__repmgr_stat_pp(dbenv, statp, flags)
+ DB_ENV *dbenv;
+ DB_REPMGR_STAT **statp;
+ u_int32_t flags;
+{
+ DB_THREAD_INFO *ip;
+ int ret;
+
+ PANIC_CHECK(dbenv);
+ ENV_REQUIRES_CONFIG_XX(
+ dbenv, rep_handle, "DB_ENV->repmgr_stat", DB_INIT_REP);
+
+ if ((ret = __db_fchk(dbenv,
+ "DB_ENV->repmgr_stat", flags, DB_STAT_CLEAR)) != 0)
+ return (ret);
+
+ ENV_ENTER(dbenv, ip);
+ ret = __repmgr_stat(dbenv, statp, flags);
+ ENV_LEAVE(dbenv, ip);
+
+ return (ret);
+}
+
+/*
+ * __repmgr_stat --
+ * DB_ENV->repmgr_stat.
+ */
+static int
+__repmgr_stat(dbenv, statp, flags)
+ DB_ENV *dbenv;
+ DB_REPMGR_STAT **statp;
+ u_int32_t flags;
+{
+ DB_REP *db_rep;
+ DB_REPMGR_STAT *stats;
+ int ret;
+
+ db_rep = dbenv->rep_handle;
+
+ *statp = NULL;
+
+ /* Allocate a stat struct to return to the user. */
+ if ((ret = __os_umalloc(dbenv, sizeof(DB_REPMGR_STAT), &stats)) != 0)
+ return (ret);
+
+ memcpy(stats, &db_rep->region->mstat, sizeof(*stats));
+ if (LF_ISSET(DB_STAT_CLEAR))
+ memset(&db_rep->region->mstat, 0, sizeof(DB_REPMGR_STAT));
+
+ *statp = stats;
+ return (0);
+}
+
+/*
+ * __repmgr_stat_print_pp --
+ * DB_ENV->repmgr_stat_print pre/post processing.
+ *
+ * PUBLIC: int __repmgr_stat_print_pp __P((DB_ENV *, u_int32_t));
+ */
+int
+__repmgr_stat_print_pp(dbenv, flags)
+ DB_ENV *dbenv;
+ u_int32_t flags;
+{
+ DB_THREAD_INFO *ip;
+ int ret;
+
+ PANIC_CHECK(dbenv);
+ ENV_REQUIRES_CONFIG_XX(
+ dbenv, rep_handle, "DB_ENV->repmgr_stat_print", DB_INIT_REP);
+
+ if ((ret = __db_fchk(dbenv, "DB_ENV->repmgr_stat_print",
+ flags, DB_STAT_ALL | DB_STAT_CLEAR)) != 0)
+ return (ret);
+
+ ENV_ENTER(dbenv, ip);
+ ret = __repmgr_stat_print(dbenv, flags);
+ ENV_LEAVE(dbenv, ip);
+
+ return (ret);
+}
+
+int
+__repmgr_stat_print(dbenv, flags)
+ DB_ENV *dbenv;
+ u_int32_t flags;
+{
+ u_int32_t orig_flags;
+ int ret;
+
+ orig_flags = flags;
+ LF_CLR(DB_STAT_CLEAR | DB_STAT_SUBSYSTEM);
+ if (flags == 0 || LF_ISSET(DB_STAT_ALL)) {
+ if ((ret = __repmgr_print_stats(dbenv, orig_flags)) == 0)
+ ret = __repmgr_print_sites(dbenv);
+ if (flags == 0 || ret != 0)
+ return (ret);
+ }
+
+ if (LF_ISSET(DB_STAT_ALL) &&
+ (ret = __repmgr_print_all(dbenv, orig_flags)) != 0)
+ return (ret);
+
+ return (0);
+}
+
+static int
+__repmgr_print_stats(dbenv, flags)
+ DB_ENV *dbenv;
+ u_int32_t flags;
+{
+ DB_REPMGR_STAT *sp;
+ int ret;
+
+ if ((ret = __repmgr_stat(dbenv, &sp, flags)) != 0)
+ return (ret);
+
+ __db_dl(dbenv, "Number of PERM messages not acknowledged",
+ (u_long)sp->st_perm_failed);
+ __db_dl(dbenv, "Number of messages queued due to network delay",
+ (u_long)sp->st_msgs_queued);
+ __db_dl(dbenv, "Number of messages discarded due to queue length",
+ (u_long)sp->st_msgs_dropped);
+ __db_dl(dbenv, "Number of existing connections dropped",
+ (u_long)sp->st_connection_drop);
+ __db_dl(dbenv, "Number of failed new connection attempts",
+ (u_long)sp->st_connect_fail);
+
+ __os_ufree(dbenv, sp);
+
+ return (0);
+}
+
+static int
+__repmgr_print_sites(dbenv)
+ DB_ENV *dbenv;
+{
+ DB_REPMGR_SITE *list;
+ u_int count, i;
+ int ret;
+
+ if ((ret = __repmgr_site_list(dbenv, &count, &list)) != 0)
+ return (ret);
+
+ if (count == 0)
+ return (0);
+
+ __db_msg(dbenv, "%s", DB_GLOBAL(db_line));
+ __db_msg(dbenv, "DB_REPMGR site information:");
+
+ for (i = 0; i < count; ++i) {
+ __db_msg(dbenv, "%s (eid: %d, port: %u, %sconnected)",
+ list[i].host, list[i].eid, list[i].port,
+ list[i].status == DB_REPMGR_CONNECTED ? "" : "dis");
+ }
+
+ __os_ufree(dbenv, list);
+
+ return (0);
+}
+
+/*
+ * __repmgr_print_all --
+ * Display debugging replication manager statistics.
+ */
+static int
+__repmgr_print_all(dbenv, flags)
+ DB_ENV *dbenv;
+ u_int32_t flags;
+{
+ COMPQUIET(dbenv, NULL);
+ COMPQUIET(flags, 0);
+ return (0);
+}
+
+#else /* !HAVE_STATISTICS */
+
+int
+__repmgr_stat_pp(dbenv, statp, flags)
+ DB_ENV *dbenv;
+ DB_REPMGR_STAT **statp;
+ u_int32_t flags;
+{
+ COMPQUIET(statp, NULL);
+ COMPQUIET(flags, 0);
+
+ return (__db_stat_not_built(dbenv));
+}
+
+int
+__repmgr_stat_print_pp(dbenv, flags)
+ DB_ENV *dbenv;
+ u_int32_t flags;
+{
+ COMPQUIET(flags, 0);
+
+ return (__db_stat_not_built(dbenv));
+}
+#endif
+
/*
* PUBLIC: int __repmgr_site_list __P((DB_ENV *, u_int *, DB_REPMGR_SITE **));
*/
@@ -83,34 +296,3 @@ err: if (locked)
UNLOCK_MUTEX(db_rep->mutex);
return (ret);
}
-
-/*
- * PUBLIC: int __repmgr_print_stats __P((DB_ENV *));
- */
-int
-__repmgr_print_stats(dbenv)
- DB_ENV *dbenv;
-{
- DB_REPMGR_SITE *list;
- u_int count, i;
- int ret;
-
- if ((ret = __repmgr_site_list(dbenv, &count, &list)) != 0)
- return (ret);
-
- if (count == 0)
- return (0);
-
- __db_msg(dbenv, "%s", DB_GLOBAL(db_line));
- __db_msg(dbenv, "DB_REPMGR site information:");
-
- for (i = 0; i < count; ++i) {
- __db_msg(dbenv, "%s (eid: %d, port: %u, %sconnected)",
- list[i].host, list[i].eid, list[i].port,
- list[i].status == DB_REPMGR_CONNECTED ? "" : "dis");
- }
-
- __os_ufree(dbenv, list);
-
- return (0);
-}
diff --git a/db/repmgr/repmgr_stub.c b/db/repmgr/repmgr_stub.c
new file mode 100644
index 000000000..1f74f6f01
--- /dev/null
+++ b/db/repmgr/repmgr_stub.c
@@ -0,0 +1,198 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
+ *
+ * $Id: repmgr_stub.c,v 1.7 2007/05/17 15:15:51 bostic Exp $
+ */
+
+#ifndef HAVE_REPLICATION_THREADS
+#include "db_config.h"
+
+#include "db_int.h"
+
+/*
+ * If the library wasn't compiled with replication support, various routines
+ * aren't available. Stub them here, returning an appropriate error.
+ */
+static int __db_norepmgr __P((DB_ENV *));
+
+/*
+ * __db_norepmgr --
+ * Error when a Berkeley DB build doesn't include replication mgr support.
+ */
+static int
+__db_norepmgr(dbenv)
+ DB_ENV *dbenv;
+{
+ __db_errx(dbenv,
+ "library build did not include support for the Replication Manager");
+ return (DB_OPNOTSUP);
+}
+
+/*
+ * PUBLIC: #ifndef HAVE_REPLICATION_THREADS
+ * PUBLIC: int __repmgr_close __P((DB_ENV *));
+ * PUBLIC: #endif
+ */
+int
+__repmgr_close(dbenv)
+ DB_ENV *dbenv;
+{
+ COMPQUIET(dbenv, NULL);
+ return (0);
+}
+
+/*
+ * PUBLIC: #ifndef HAVE_REPLICATION_THREADS
+ * PUBLIC: int __repmgr_add_remote_site
+ * PUBLIC: __P((DB_ENV *, const char *, u_int, int *, u_int32_t));
+ * PUBLIC: #endif
+ */
+int
+__repmgr_add_remote_site(dbenv, host, port, eidp, flags)
+ DB_ENV *dbenv;
+ const char *host;
+ u_int port;
+ int *eidp;
+ u_int32_t flags;
+{
+ COMPQUIET(host, NULL);
+ COMPQUIET(port, 0);
+ COMPQUIET(eidp, NULL);
+ COMPQUIET(flags, 0);
+ return (__db_norepmgr(dbenv));
+}
+
+/*
+ * PUBLIC: #ifndef HAVE_REPLICATION_THREADS
+ * PUBLIC: int __repmgr_get_ack_policy __P((DB_ENV *, int *));
+ * PUBLIC: #endif
+ */
+int
+__repmgr_get_ack_policy(dbenv, policy)
+ DB_ENV *dbenv;
+ int *policy;
+{
+ COMPQUIET(policy, NULL);
+ return (__db_norepmgr(dbenv));
+}
+
+/*
+ * PUBLIC: #ifndef HAVE_REPLICATION_THREADS
+ * PUBLIC: int __repmgr_set_ack_policy __P((DB_ENV *, int));
+ * PUBLIC: #endif
+ */
+int
+__repmgr_set_ack_policy(dbenv, policy)
+ DB_ENV *dbenv;
+ int policy;
+{
+ COMPQUIET(policy, 0);
+ return (__db_norepmgr(dbenv));
+}
+
+/*
+ * PUBLIC: #ifndef HAVE_REPLICATION_THREADS
+ * PUBLIC: int __repmgr_set_local_site
+ * PUBLIC: __P((DB_ENV *, const char *, u_int, u_int32_t));
+ * PUBLIC: #endif
+ */
+int
+__repmgr_set_local_site(dbenv, host, port, flags)
+ DB_ENV *dbenv;
+ const char *host;
+ u_int port;
+ u_int32_t flags;
+{
+ COMPQUIET(host, NULL);
+ COMPQUIET(port, 0);
+ COMPQUIET(flags, 0);
+ return (__db_norepmgr(dbenv));
+}
+
+/*
+ * PUBLIC: #ifndef HAVE_REPLICATION_THREADS
+ * PUBLIC: int __repmgr_site_list __P((DB_ENV *, u_int *, DB_REPMGR_SITE **));
+ * PUBLIC: #endif
+ */
+int
+__repmgr_site_list(dbenv, countp, listp)
+ DB_ENV *dbenv;
+ u_int *countp;
+ DB_REPMGR_SITE **listp;
+{
+ COMPQUIET(countp, NULL);
+ COMPQUIET(listp, NULL);
+ return (__db_norepmgr(dbenv));
+}
+
+/*
+ * PUBLIC: #ifndef HAVE_REPLICATION_THREADS
+ * PUBLIC: int __repmgr_start __P((DB_ENV *, int, u_int32_t));
+ * PUBLIC: #endif
+ */
+int
+__repmgr_start(dbenv, nthreads, flags)
+ DB_ENV *dbenv;
+ int nthreads;
+ u_int32_t flags;
+{
+ COMPQUIET(nthreads, 0);
+ COMPQUIET(flags, 0);
+ return (__db_norepmgr(dbenv));
+}
+
+/*
+ * PUBLIC: #ifndef HAVE_REPLICATION_THREADS
+ * PUBLIC: int __repmgr_stat_pp __P((DB_ENV *, DB_REPMGR_STAT **, u_int32_t));
+ * PUBLIC: #endif
+ */
+int
+__repmgr_stat_pp(dbenv, statp, flags)
+ DB_ENV *dbenv;
+ DB_REPMGR_STAT **statp;
+ u_int32_t flags;
+{
+ COMPQUIET(statp, NULL);
+ COMPQUIET(flags, 0);
+ return (__db_norepmgr(dbenv));
+}
+
+/*
+ * PUBLIC: #ifndef HAVE_REPLICATION_THREADS
+ * PUBLIC: int __repmgr_stat_print_pp __P((DB_ENV *, u_int32_t));
+ * PUBLIC: #endif
+ */
+int
+__repmgr_stat_print_pp(dbenv, flags)
+ DB_ENV *dbenv;
+ u_int32_t flags;
+{
+ COMPQUIET(flags, 0);
+ return (__db_norepmgr(dbenv));
+}
+
+/*
+ * PUBLIC: #ifndef HAVE_REPLICATION_THREADS
+ * PUBLIC: int __repmgr_handle_event __P((DB_ENV *, u_int32_t, void *));
+ * PUBLIC: #endif
+ */
+int
+__repmgr_handle_event(dbenv, event, info)
+ DB_ENV *dbenv;
+ u_int32_t event;
+ void *info;
+{
+ COMPQUIET(dbenv, NULL);
+ COMPQUIET(event, 0);
+ COMPQUIET(info, NULL);
+
+ /*
+ * It's not an error for this function to be called. Replication calls
+ * this to let repmgr handle events. If repmgr isn't part of the build,
+ * all replication events should be forwarded to the application.
+ */
+ return (DB_EVENT_NOT_HANDLED);
+}
+#endif /* !HAVE_REPLICATION_THREADS */
diff --git a/db/repmgr/repmgr_util.c b/db/repmgr/repmgr_util.c
index 541308384..b6cbf3c9c 100644
--- a/db/repmgr/repmgr_util.c
+++ b/db/repmgr/repmgr_util.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2005-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2005,2007 Oracle. All rights reserved.
*
- * $Id: repmgr_util.c,v 1.27 2006/09/19 14:14:12 mjc Exp $
+ * $Id: repmgr_util.c,v 1.34 2007/06/11 18:29:34 alanb Exp $
*/
#include "db_config.h"
@@ -37,27 +36,23 @@ __repmgr_schedule_connection_attempt(dbenv, eid, immediate)
DB_REP *db_rep;
REPMGR_SITE *site;
REPMGR_RETRY *retry;
- repmgr_timeval_t t;
+ db_timespec t, v;
int ret;
db_rep = dbenv->rep_handle;
if ((ret = __os_malloc(dbenv, sizeof(*retry), &retry)) != 0)
return (ret);
- __os_clock(dbenv, &t.tv_sec, &t.tv_usec);
+ __os_gettime(dbenv, &t);
if (immediate)
TAILQ_INSERT_HEAD(&db_rep->retries, retry, entries);
else {
- if ((t.tv_usec += db_rep->connection_retry_wait%1000000) >
- 1000000) {
- t.tv_sec++;
- t.tv_usec -= 1000000;
- }
- t.tv_sec += db_rep->connection_retry_wait/1000000;
+ DB_TIMEOUT_TO_TIMESPEC(db_rep->connection_retry_wait, &v);
+ timespecadd(&t, &v);
TAILQ_INSERT_TAIL(&db_rep->retries, retry, entries);
}
retry->eid = eid;
- memcpy(&retry->time, &t, sizeof(repmgr_timeval_t));
+ retry->time = t;
site = SITE_FROM_EID(eid);
site->state = SITE_IDLE;
@@ -72,13 +67,6 @@ __repmgr_schedule_connection_attempt(dbenv, eid, immediate)
*
* PUBLIC: void __repmgr_reset_for_reading __P((REPMGR_CONNECTION *));
*/
-/*
- * TODO: we need to make sure we call this: (1) initially, when we first create
- * a connection; (2) after processing a message, to get ready to read the next
- * one; and (3) after a connection gets successfully re-established after a
- * failure. (Actually, #1 and #3 should probably end up being the same thing,
- * if the code is organized properly.)
- */
void
__repmgr_reset_for_reading(con)
REPMGR_CONNECTION *con;
@@ -145,12 +133,9 @@ __repmgr_new_site(dbenv, sitep, addr, state)
{
DB_REP *db_rep;
REPMGR_SITE *site;
+ SITE_STRING_BUFFER buffer;
u_int new_site_max, eid;
int ret;
-#ifdef DIAGNOSTIC
- DB_MSGBUF mb;
- SITE_STRING_BUFFER buffer;
-#endif
db_rep = dbenv->rep_handle;
if (db_rep->site_cnt >= db_rep->site_max) {
@@ -171,8 +156,8 @@ __repmgr_new_site(dbenv, sitep, addr, state)
site->priority = -1; /* OOB value indicates we don't yet know. */
site->state = state;
- RPRINT(dbenv, (dbenv, &mb, "EID %u is assigned for %s", eid,
- __repmgr_format_site_loc(site, buffer)));
+ RPRINT(dbenv, (dbenv, "EID %u is assigned for %s", eid,
+ __repmgr_format_site_loc(site, buffer)));
*sitep = site;
return (0);
}
@@ -333,23 +318,6 @@ __repmgr_prepare_my_addr(dbenv, dbt)
}
/*
- * PUBLIC: int __repmgr_timeval_cmp
- * PUBLIC: __P((repmgr_timeval_t *, repmgr_timeval_t *));
- */
-int
-__repmgr_timeval_cmp(a, b)
- repmgr_timeval_t *a, *b;
-{
- if (a->tv_sec == b->tv_sec) {
- if (a->tv_usec == b->tv_usec)
- return (0);
- else
- return (a->tv_usec < b->tv_usec ? -1 : 1);
- } else
- return (a->tv_sec < b->tv_sec ? -1 : 1);
-}
-
-/*
* Provide the appropriate value for nsites, the number of sites in the
* replication group. If the application has specified a value, use that.
* Otherwise, just use the number of sites we know of.
@@ -413,3 +381,46 @@ __repmgr_format_site_loc(site, buffer)
site->net_addr.host, (u_long)site->net_addr.port);
return (buffer);
}
+
+/*
+ * __repmgr_timespec_diff_now --
+ * Calculate the time duration from now til "when".
+ *
+ * PUBLIC: void __repmgr_timespec_diff_now
+ * PUBLIC: __P((DB_ENV *, db_timespec *, db_timespec *));
+ */
+void
+__repmgr_timespec_diff_now(dbenv, when, result)
+ DB_ENV *dbenv;
+ db_timespec *when, *result;
+{
+ db_timespec now;
+
+ __os_gettime(dbenv, &now);
+ if (timespeccmp(&now, when, >=))
+ timespecclear(result);
+ else {
+ *result = *when;
+ timespecsub(result, &now);
+ }
+}
+
+/*
+ * PUBLIC: int __repmgr_repstart __P((DB_ENV *, u_int32_t));
+ */
+int
+__repmgr_repstart(dbenv, flags)
+ DB_ENV *dbenv;
+ u_int32_t flags;
+{
+ DBT my_addr;
+ int ret;
+
+ if ((ret = __repmgr_prepare_my_addr(dbenv, &my_addr)) != 0)
+ return (ret);
+ ret = __rep_start(dbenv, &my_addr, flags);
+ __os_free(dbenv, my_addr.data);
+ if (ret != 0)
+ __db_err(dbenv, ret, "rep_start");
+ return (ret);
+}
diff --git a/db/repmgr/repmgr_windows.c b/db/repmgr/repmgr_windows.c
index 20c290665..c48f94e43 100644
--- a/db/repmgr/repmgr_windows.c
+++ b/db/repmgr/repmgr_windows.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2005-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2005,2007 Oracle. All rights reserved.
*
- * $Id: repmgr_windows.c,v 1.14 2006/09/11 15:15:20 bostic Exp $
+ * $Id: repmgr_windows.c,v 1.22 2007/06/11 18:29:34 alanb Exp $
*/
#include "db_config.h"
@@ -69,7 +68,8 @@ __repmgr_thread_join(thread)
return (GetLastError());
}
-int __repmgr_set_nonblocking(s)
+int
+__repmgr_set_nonblocking(s)
SOCKET s;
{
int ret;
@@ -129,8 +129,8 @@ __repmgr_await_ack(dbenv, lsnp)
goto err;
/* convert time-out from microseconds to milliseconds, rounding up */
- timeout = db_rep->ack_timeout > 0 ? ((db_rep->ack_timeout+999) / 1000) :
- INFINITE;
+ timeout = db_rep->ack_timeout > 0 ?
+ ((db_rep->ack_timeout + (US_PER_MS - 1)) / US_PER_MS) : INFINITE;
me->lsnp = lsnp;
if ((ret = SignalObjectAndWait(db_rep->mutex, me->event, timeout,
FALSE)) == WAIT_FAILED) {
@@ -438,41 +438,21 @@ __repmgr_readv(fd, iovec, buf_count, xfr_count_p)
return (0);
}
-/*
- * Calculate the time duration from now til "when", in the form of an integer
- * (suitable for WSAWaitForMultipleEvents()), clipping the result at 0 (i.e.,
- * avoid a negative result).
- */
-void
-__repmgr_timeval_diff_current(dbenv, when, result)
- DB_ENV *dbenv;
- repmgr_timeval_t *when;
- select_timeout_t *result;
-{
- repmgr_timeval_t now;
-
- __os_clock(dbenv, &now.tv_sec, &now.tv_usec);
- if (__repmgr_timeval_cmp(when, &now) <= 0)
- *result = 0;
- else
- *result = (when->tv_sec - now.tv_sec) * MS_PER_SEC +
- (when->tv_usec - now.tv_usec) / USEC_PER_MS;
-}
-
int
__repmgr_select_loop(dbenv)
DB_ENV *dbenv;
{
+ DWORD select_timeout;
DB_REP *db_rep;
REPMGR_CONNECTION *conn, *next;
REPMGR_RETRY *retry;
- select_timeout_t timeout;
WSAEVENT events[WSA_MAXIMUM_WAIT_EVENTS];
REPMGR_CONNECTION *connections[WSA_MAXIMUM_WAIT_EVENTS];
DWORD nevents, ret;
- int flow_control, i;
+ db_timespec timeout;
WSAEVENT listen_event;
WSANETWORKEVENTS net_events;
+ int flow_control, i;
db_rep = dbenv->rep_handle;
@@ -506,17 +486,8 @@ __repmgr_select_loop(dbenv)
* nevertheless still read if we haven't even yet gotten a
* handshake. Why? (1) Handshakes are important; and (2) they
* don't hurt anything flow-control-wise.
- * Loop just like TAILQ_FOREACH, except that we need to be
- * able to unlink a list entry.
*/
- for (conn = TAILQ_FIRST(&db_rep->connections);
- conn != NULL;
- conn = next) {
- next = TAILQ_NEXT(conn, entries);
- if (F_ISSET(conn, CONN_DEFUNCT)) {
- __repmgr_cleanup_connection(dbenv, conn);
- continue;
- }
+ TAILQ_FOREACH(conn, &db_rep->connections, entries) {
if (F_ISSET(conn, CONN_CONNECTING) ||
!STAILQ_EMPTY(&conn->outbound_queue) ||
(!flow_control || !IS_VALID_EID(conn->eid))) {
@@ -531,23 +502,47 @@ __repmgr_select_loop(dbenv)
* only have to examine the first one.)
*/
if (TAILQ_EMPTY(&db_rep->retries))
- timeout = WSA_INFINITE;
+ select_timeout = WSA_INFINITE;
else {
retry = TAILQ_FIRST(&db_rep->retries);
- __repmgr_timeval_diff_current(
+ __repmgr_timespec_diff_now(
dbenv, &retry->time, &timeout);
+ select_timeout =
+ (DWORD)(timeout.tv_sec * MS_PER_SEC +
+ timeout.tv_nsec / NS_PER_MS);
}
UNLOCK_MUTEX(db_rep->mutex);
- ret = WSAWaitForMultipleEvents(nevents, events, FALSE, timeout,
- FALSE);
+ ret = WSAWaitForMultipleEvents(
+ nevents, events, FALSE, select_timeout, FALSE);
if (db_rep->finished) {
ret = 0;
goto out;
}
LOCK_MUTEX(db_rep->mutex);
+ /*
+ * The first priority thing we must do is to clean up any
+ * pending defunct connections. Otherwise, if they have any
+ * lingering pending input, we get very confused if we try to
+ * process it.
+ * Loop just like TAILQ_FOREACH, except that we need to be
+ * able to unlink a list entry.
+ */
+ for (conn = TAILQ_FIRST(&db_rep->connections);
+ conn != NULL;
+ conn = next) {
+ next = TAILQ_NEXT(conn, entries);
+ if (F_ISSET(conn, CONN_DEFUNCT))
+ __repmgr_cleanup_connection(dbenv, conn);
+ }
+
+ /*
+ * !!!
+ * Note that `ret' remains set as the return code from
+ * WSAWaitForMultipleEvents, above.
+ */
if (ret >= WSA_WAIT_EVENT_0 &&
ret < WSA_WAIT_EVENT_0 + nevents) {
switch (i = ret - WSA_WAIT_EVENT_0) {
@@ -592,6 +587,11 @@ out:
return (ret);
}
+/*
+ * !!!
+ * Only ever called on the select() thread, since we may call
+ * __repmgr_bust_connection(..., TRUE).
+ */
static int
handle_completion(dbenv, conn)
DB_ENV *dbenv;
@@ -603,6 +603,7 @@ handle_completion(dbenv, conn)
if ((ret = WSAEnumNetworkEvents(conn->fd, conn->event_object, &events))
== SOCKET_ERROR) {
__db_err(dbenv, net_errno, "EnumNetworkEvents");
+ STAT(dbenv->rep_handle->region->mstat.st_connection_drop++);
ret = DB_REP_UNAVAIL;
goto err;
}
@@ -615,6 +616,8 @@ handle_completion(dbenv, conn)
__db_err(dbenv,
events.iErrorCode[FD_CLOSE_BIT],
"connection closed");
+ STAT(dbenv->rep_handle->
+ region->mstat.st_connection_drop++);
ret = DB_REP_UNAVAIL;
goto err;
}
@@ -624,6 +627,8 @@ handle_completion(dbenv, conn)
__db_err(dbenv,
events.iErrorCode[FD_WRITE_BIT],
"error writing");
+ STAT(dbenv->rep_handle->
+ region->mstat.st_connection_drop++);
ret = DB_REP_UNAVAIL;
goto err;
} else if ((ret =
@@ -636,6 +641,8 @@ handle_completion(dbenv, conn)
__db_err(dbenv,
events.iErrorCode[FD_READ_BIT],
"error reading");
+ STAT(dbenv->rep_handle->
+ region->mstat.st_connection_drop++);
ret = DB_REP_UNAVAIL;
goto err;
} else if ((ret =
@@ -663,10 +670,8 @@ finish_connecting(dbenv, conn, events)
int ret/*, t_ret*/;
/* DWORD_PTR values[1]; */
- if (!(events->lNetworkEvents & FD_CONNECT)) {
- /* TODO: Is this even possible? */
+ if (!(events->lNetworkEvents & FD_CONNECT))
return (0);
- }
F_CLR(conn, CONN_CONNECTING);
@@ -697,8 +702,10 @@ err:
eid = conn->eid;
DB_ASSERT(dbenv, IS_VALID_EID(eid));
- if (ADDR_LIST_NEXT(&SITE_FROM_EID(eid)->net_addr) == NULL)
+ if (ADDR_LIST_NEXT(&SITE_FROM_EID(eid)->net_addr) == NULL) {
+ STAT(db_rep->region->mstat.st_connect_fail++);
return (DB_REP_UNAVAIL);
+ }
DB_ASSERT(dbenv, !TAILQ_EMPTY(&db_rep->connections));
__repmgr_cleanup_connection(dbenv, conn);
diff --git a/db/rpc_client/client.c b/db/rpc_client/client.c
index e31fac848..539404ede 100644
--- a/db/rpc_client/client.c
+++ b/db/rpc_client/client.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: client.c,v 12.7 2006/08/24 14:46:27 bostic Exp $
+ * $Id: client.c,v 12.11 2007/05/17 15:15:51 bostic Exp $
*/
#include "db_config.h"
@@ -14,7 +13,7 @@
#include "dbinc/db_am.h"
#include "dbinc/txn.h"
-#ifndef NO_SYSTEM_INCLUDES
+#ifdef HAVE_SYSTEM_INCLUDE_FILES
#ifdef HAVE_VXWORKS
#include <rpcLib.h>
#else
@@ -411,7 +410,7 @@ __dbcl_c_setup(cl_id, dbp, dbcp)
*/
tmpdbc.dbp = NULL;
tmpdbc.cl_id = cl_id;
- (void)__dbcl_dbc_c_close(&tmpdbc);
+ (void)__dbcl_dbc_close(&tmpdbc);
return (ret);
}
@@ -422,7 +421,7 @@ __dbcl_c_setup(cl_id, dbp, dbcp)
* Set up the local destroy function -- we're not really
* an access method, but it does what we need.
*/
- dbc->c_am_destroy = __dbcl_c_destroy;
+ dbc->am_destroy = __dbcl_c_destroy;
}
dbc->cl_id = cl_id;
dbc->dbp = dbp;
diff --git a/db/rpc_client/gen_client.c b/db/rpc_client/gen_client.c
index ea1fb8f0f..7b6b8ae72 100644
--- a/db/rpc_client/gen_client.c
+++ b/db/rpc_client/gen_client.c
@@ -2,7 +2,7 @@
#include "db_config.h"
#include "db_int.h"
-#ifndef NO_SYSTEM_INCLUDES
+#ifdef HAVE_SYSTEM_INCLUDE_FILES
#include <rpc/rpc.h>
#endif
#include "db_server.h"
@@ -77,9 +77,9 @@ __dbcl_env_create(dbenv, timeout)
cl = (CLIENT *)dbenv->cl_handle;
- msg.timeout = timeout;
+ msg.timeout = (u_int)timeout;
- replyp = __db_env_create_4005(&msg, cl);
+ replyp = __db_env_create_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -113,7 +113,7 @@ __dbcl_env_cdsgroup_begin(dbenv, txnpp)
msg.dbenvcl_id = dbenv->cl_id;
- replyp = __db_env_cdsgroup_begin_4005(&msg, cl);
+ replyp = __db_env_cdsgroup_begin_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -146,9 +146,9 @@ __dbcl_env_close(dbenv, flags)
cl = (CLIENT *)dbenv->cl_handle;
msg.dbenvcl_id = dbenv->cl_id;
- msg.flags = flags;
+ msg.flags = (u_int)flags;
- replyp = __db_env_close_4005(&msg, cl);
+ replyp = __db_env_close_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -197,9 +197,9 @@ __dbcl_env_dbremove(dbenv, txnp, name, subdb, flags)
msg.subdb = "";
else
msg.subdb = (char *)subdb;
- msg.flags = flags;
+ msg.flags = (u_int)flags;
- replyp = __db_env_dbremove_4005(&msg, cl);
+ replyp = __db_env_dbremove_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -253,9 +253,9 @@ __dbcl_env_dbrename(dbenv, txnp, name, subdb, newname, flags)
msg.newname = "";
else
msg.newname = (char *)newname;
- msg.flags = flags;
+ msg.flags = (u_int)flags;
- replyp = __db_env_dbrename_4005(&msg, cl);
+ replyp = __db_env_dbrename_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -292,7 +292,7 @@ __dbcl_env_get_cachesize(dbenv, gbytesp, bytesp, ncachep)
msg.dbenvcl_id = dbenv->cl_id;
- replyp = __db_env_get_cachesize_4005(&msg, cl);
+ replyp = __db_env_get_cachesize_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -300,11 +300,11 @@ __dbcl_env_get_cachesize(dbenv, gbytesp, bytesp, ncachep)
}
ret = replyp->status;
if (gbytesp != NULL)
- *gbytesp = replyp->gbytes;
+ *gbytesp = (u_int32_t)replyp->gbytes;
if (bytesp != NULL)
- *bytesp = replyp->bytes;
+ *bytesp = (u_int32_t)replyp->bytes;
if (ncachep != NULL)
- *ncachep = replyp->ncache;
+ *ncachep = (int)replyp->ncache;
out:
if (replyp != NULL)
xdr_free((xdrproc_t)xdr___env_get_cachesize_reply, (void *)replyp);
@@ -332,7 +332,7 @@ __dbcl_env_get_encrypt_flags(dbenv, flagsp)
msg.dbenvcl_id = dbenv->cl_id;
- replyp = __db_env_get_encrypt_flags_4005(&msg, cl);
+ replyp = __db_env_get_encrypt_flags_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -340,7 +340,7 @@ __dbcl_env_get_encrypt_flags(dbenv, flagsp)
}
ret = replyp->status;
if (flagsp != NULL)
- *flagsp = replyp->flags;
+ *flagsp = (u_int32_t)replyp->flags;
out:
if (replyp != NULL)
xdr_free((xdrproc_t)xdr___env_get_encrypt_flags_reply, (void *)replyp);
@@ -368,7 +368,7 @@ __dbcl_env_get_flags(dbenv, flagsp)
msg.dbenvcl_id = dbenv->cl_id;
- replyp = __db_env_get_flags_4005(&msg, cl);
+ replyp = __db_env_get_flags_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -376,7 +376,7 @@ __dbcl_env_get_flags(dbenv, flagsp)
}
ret = replyp->status;
if (flagsp != NULL)
- *flagsp = replyp->flags;
+ *flagsp = (u_int32_t)replyp->flags;
out:
if (replyp != NULL)
xdr_free((xdrproc_t)xdr___env_get_flags_reply, (void *)replyp);
@@ -404,7 +404,7 @@ __dbcl_env_get_home(dbenv, homep)
msg.dbenvcl_id = dbenv->cl_id;
- replyp = __db_env_get_home_4005(&msg, cl);
+ replyp = __db_env_get_home_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -412,7 +412,7 @@ __dbcl_env_get_home(dbenv, homep)
}
ret = replyp->status;
if (homep != NULL)
- *homep = replyp->home;
+ *homep = (const char *)replyp->home;
out:
if (replyp != NULL)
xdr_free((xdrproc_t)xdr___env_get_home_reply, (void *)replyp);
@@ -440,7 +440,7 @@ __dbcl_env_get_open_flags(dbenv, flagsp)
msg.dbenvcl_id = dbenv->cl_id;
- replyp = __db_env_get_open_flags_4005(&msg, cl);
+ replyp = __db_env_get_open_flags_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -448,7 +448,7 @@ __dbcl_env_get_open_flags(dbenv, flagsp)
}
ret = replyp->status;
if (flagsp != NULL)
- *flagsp = replyp->flags;
+ *flagsp = (u_int32_t)replyp->flags;
out:
if (replyp != NULL)
xdr_free((xdrproc_t)xdr___env_get_open_flags_reply, (void *)replyp);
@@ -481,10 +481,10 @@ __dbcl_env_open(dbenv, home, flags, mode)
msg.home = "";
else
msg.home = (char *)home;
- msg.flags = flags;
- msg.mode = mode;
+ msg.flags = (u_int)flags;
+ msg.mode = (u_int)mode;
- replyp = __db_env_open_4005(&msg, cl);
+ replyp = __db_env_open_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -522,9 +522,9 @@ __dbcl_env_remove(dbenv, home, flags)
msg.home = "";
else
msg.home = (char *)home;
- msg.flags = flags;
+ msg.flags = (u_int)flags;
- replyp = __db_env_remove_4005(&msg, cl);
+ replyp = __db_env_remove_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -560,11 +560,11 @@ __dbcl_env_set_cachesize(dbenv, gbytes, bytes, ncache)
cl = (CLIENT *)dbenv->cl_handle;
msg.dbenvcl_id = dbenv->cl_id;
- msg.gbytes = gbytes;
- msg.bytes = bytes;
- msg.ncache = ncache;
+ msg.gbytes = (u_int)gbytes;
+ msg.bytes = (u_int)bytes;
+ msg.ncache = (u_int)ncache;
- replyp = __db_env_set_cachesize_4005(&msg, cl);
+ replyp = __db_env_set_cachesize_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -602,9 +602,9 @@ __dbcl_env_set_encrypt(dbenv, passwd, flags)
msg.passwd = "";
else
msg.passwd = (char *)passwd;
- msg.flags = flags;
+ msg.flags = (u_int)flags;
- replyp = __db_env_set_encrypt_4005(&msg, cl);
+ replyp = __db_env_set_encrypt_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -638,10 +638,10 @@ __dbcl_env_set_flags(dbenv, flags, onoff)
cl = (CLIENT *)dbenv->cl_handle;
msg.dbenvcl_id = dbenv->cl_id;
- msg.flags = flags;
- msg.onoff = onoff;
+ msg.flags = (u_int)flags;
+ msg.onoff = (u_int)onoff;
- replyp = __db_env_set_flags_4005(&msg, cl);
+ replyp = __db_env_set_flags_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -681,9 +681,9 @@ __dbcl_env_txn_begin(dbenv, parent, txnpp, flags)
msg.parentcl_id = 0;
else
msg.parentcl_id = parent->txnid;
- msg.flags = flags;
+ msg.flags = (u_int)flags;
- replyp = __db_env_txn_begin_4005(&msg, cl);
+ replyp = __db_env_txn_begin_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -720,10 +720,10 @@ __dbcl_env_txn_recover(dbenv, preplist, count, retp, flags)
cl = (CLIENT *)dbenv->cl_handle;
msg.dbenvcl_id = dbenv->cl_id;
- msg.count = count;
- msg.flags = flags;
+ msg.count = (u_int)count;
+ msg.flags = (u_int)flags;
- replyp = __db_env_txn_recover_4005(&msg, cl);
+ replyp = __db_env_txn_recover_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -757,9 +757,9 @@ __dbcl_db_create(dbp, dbenv, flags)
cl = (CLIENT *)dbenv->cl_handle;
msg.dbenvcl_id = dbenv->cl_id;
- msg.flags = flags;
+ msg.flags = (u_int)flags;
- replyp = __db_db_create_4005(&msg, cl);
+ replyp = __db_db_create_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -813,9 +813,9 @@ __dbcl_db_associate(dbp, txnp, sdbp, func0, flags)
msg.sdbpcl_id = 0;
else
msg.sdbpcl_id = sdbp->cl_id;
- msg.flags = flags;
+ msg.flags = (u_int)flags;
- replyp = __db_db_associate_4005(&msg, cl);
+ replyp = __db_db_associate_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -853,9 +853,9 @@ __dbcl_db_close(dbp, flags)
msg.dbpcl_id = 0;
else
msg.dbpcl_id = dbp->cl_id;
- msg.flags = flags;
+ msg.flags = (u_int)flags;
- replyp = __db_db_close_4005(&msg, cl);
+ replyp = __db_db_close_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -899,9 +899,9 @@ __dbcl_db_cursor(dbp, txnp, dbcpp, flags)
msg.txnpcl_id = 0;
else
msg.txnpcl_id = txnp->txnid;
- msg.flags = flags;
+ msg.flags = (u_int)flags;
- replyp = __db_db_cursor_4005(&msg, cl);
+ replyp = __db_db_cursor_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -951,9 +951,9 @@ __dbcl_db_del(dbp, txnp, key, flags)
msg.keyflags = key->flags;
msg.keydata.keydata_val = key->data;
msg.keydata.keydata_len = key->size;
- msg.flags = flags;
+ msg.flags = (u_int)flags;
- replyp = __db_db_del_4005(&msg, cl);
+ replyp = __db_db_del_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -1010,9 +1010,9 @@ __dbcl_db_get(dbp, txnp, key, data, flags)
msg.dataflags = data->flags;
msg.datadata.datadata_val = data->data;
msg.datadata.datadata_len = data->size;
- msg.flags = flags;
+ msg.flags = (u_int)flags;
- replyp = __db_db_get_4005(&msg, cl);
+ replyp = __db_db_get_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -1051,7 +1051,7 @@ __dbcl_db_get_bt_minkey(dbp, minkeyp)
else
msg.dbpcl_id = dbp->cl_id;
- replyp = __db_db_get_bt_minkey_4005(&msg, cl);
+ replyp = __db_db_get_bt_minkey_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -1059,7 +1059,7 @@ __dbcl_db_get_bt_minkey(dbp, minkeyp)
}
ret = replyp->status;
if (minkeyp != NULL)
- *minkeyp = replyp->minkey;
+ *minkeyp = (u_int32_t)replyp->minkey;
out:
if (replyp != NULL)
xdr_free((xdrproc_t)xdr___db_get_bt_minkey_reply, (void *)replyp);
@@ -1094,7 +1094,7 @@ __dbcl_db_get_dbname(dbp, filenamep, dbnamep)
else
msg.dbpcl_id = dbp->cl_id;
- replyp = __db_db_get_dbname_4005(&msg, cl);
+ replyp = __db_db_get_dbname_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -1102,9 +1102,9 @@ __dbcl_db_get_dbname(dbp, filenamep, dbnamep)
}
ret = replyp->status;
if (filenamep != NULL)
- *filenamep = replyp->filename;
+ *filenamep = (const char *)replyp->filename;
if (dbnamep != NULL)
- *dbnamep = replyp->dbname;
+ *dbnamep = (const char *)replyp->dbname;
out:
if (replyp != NULL)
xdr_free((xdrproc_t)xdr___db_get_dbname_reply, (void *)replyp);
@@ -1137,7 +1137,7 @@ __dbcl_db_get_encrypt_flags(dbp, flagsp)
else
msg.dbpcl_id = dbp->cl_id;
- replyp = __db_db_get_encrypt_flags_4005(&msg, cl);
+ replyp = __db_db_get_encrypt_flags_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -1145,7 +1145,7 @@ __dbcl_db_get_encrypt_flags(dbp, flagsp)
}
ret = replyp->status;
if (flagsp != NULL)
- *flagsp = replyp->flags;
+ *flagsp = (u_int32_t)replyp->flags;
out:
if (replyp != NULL)
xdr_free((xdrproc_t)xdr___db_get_encrypt_flags_reply, (void *)replyp);
@@ -1178,7 +1178,7 @@ __dbcl_db_get_flags(dbp, flagsp)
else
msg.dbpcl_id = dbp->cl_id;
- replyp = __db_db_get_flags_4005(&msg, cl);
+ replyp = __db_db_get_flags_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -1186,7 +1186,7 @@ __dbcl_db_get_flags(dbp, flagsp)
}
ret = replyp->status;
if (flagsp != NULL)
- *flagsp = replyp->flags;
+ *flagsp = (u_int32_t)replyp->flags;
out:
if (replyp != NULL)
xdr_free((xdrproc_t)xdr___db_get_flags_reply, (void *)replyp);
@@ -1219,7 +1219,7 @@ __dbcl_db_get_h_ffactor(dbp, ffactorp)
else
msg.dbpcl_id = dbp->cl_id;
- replyp = __db_db_get_h_ffactor_4005(&msg, cl);
+ replyp = __db_db_get_h_ffactor_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -1227,7 +1227,7 @@ __dbcl_db_get_h_ffactor(dbp, ffactorp)
}
ret = replyp->status;
if (ffactorp != NULL)
- *ffactorp = replyp->ffactor;
+ *ffactorp = (u_int32_t)replyp->ffactor;
out:
if (replyp != NULL)
xdr_free((xdrproc_t)xdr___db_get_h_ffactor_reply, (void *)replyp);
@@ -1260,7 +1260,7 @@ __dbcl_db_get_h_nelem(dbp, nelemp)
else
msg.dbpcl_id = dbp->cl_id;
- replyp = __db_db_get_h_nelem_4005(&msg, cl);
+ replyp = __db_db_get_h_nelem_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -1268,7 +1268,7 @@ __dbcl_db_get_h_nelem(dbp, nelemp)
}
ret = replyp->status;
if (nelemp != NULL)
- *nelemp = replyp->nelem;
+ *nelemp = (u_int32_t)replyp->nelem;
out:
if (replyp != NULL)
xdr_free((xdrproc_t)xdr___db_get_h_nelem_reply, (void *)replyp);
@@ -1301,7 +1301,7 @@ __dbcl_db_get_lorder(dbp, lorderp)
else
msg.dbpcl_id = dbp->cl_id;
- replyp = __db_db_get_lorder_4005(&msg, cl);
+ replyp = __db_db_get_lorder_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -1309,7 +1309,7 @@ __dbcl_db_get_lorder(dbp, lorderp)
}
ret = replyp->status;
if (lorderp != NULL)
- *lorderp = replyp->lorder;
+ *lorderp = (int)replyp->lorder;
out:
if (replyp != NULL)
xdr_free((xdrproc_t)xdr___db_get_lorder_reply, (void *)replyp);
@@ -1342,7 +1342,7 @@ __dbcl_db_get_open_flags(dbp, flagsp)
else
msg.dbpcl_id = dbp->cl_id;
- replyp = __db_db_get_open_flags_4005(&msg, cl);
+ replyp = __db_db_get_open_flags_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -1350,7 +1350,7 @@ __dbcl_db_get_open_flags(dbp, flagsp)
}
ret = replyp->status;
if (flagsp != NULL)
- *flagsp = replyp->flags;
+ *flagsp = (u_int32_t)replyp->flags;
out:
if (replyp != NULL)
xdr_free((xdrproc_t)xdr___db_get_open_flags_reply, (void *)replyp);
@@ -1383,7 +1383,7 @@ __dbcl_db_get_pagesize(dbp, pagesizep)
else
msg.dbpcl_id = dbp->cl_id;
- replyp = __db_db_get_pagesize_4005(&msg, cl);
+ replyp = __db_db_get_pagesize_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -1391,7 +1391,7 @@ __dbcl_db_get_pagesize(dbp, pagesizep)
}
ret = replyp->status;
if (pagesizep != NULL)
- *pagesizep = replyp->pagesize;
+ *pagesizep = (u_int32_t)replyp->pagesize;
out:
if (replyp != NULL)
xdr_free((xdrproc_t)xdr___db_get_pagesize_reply, (void *)replyp);
@@ -1399,6 +1399,47 @@ out:
}
/*
+ * PUBLIC: int __dbcl_db_get_priority __P((DB *, DB_CACHE_PRIORITY *));
+ */
+int
+__dbcl_db_get_priority(dbp, priorityp)
+ DB * dbp;
+ DB_CACHE_PRIORITY * priorityp;
+{
+ CLIENT *cl;
+ __db_get_priority_msg msg;
+ __db_get_priority_reply *replyp = NULL;
+ int ret;
+ DB_ENV *dbenv;
+
+ ret = 0;
+ dbenv = dbp->dbenv;
+ if (dbenv == NULL || !RPC_ON(dbenv))
+ return (__dbcl_noserver(NULL));
+
+ cl = (CLIENT *)dbenv->cl_handle;
+
+ if (dbp == NULL)
+ msg.dbpcl_id = 0;
+ else
+ msg.dbpcl_id = dbp->cl_id;
+
+ replyp = __db_db_get_priority_4006(&msg, cl);
+ if (replyp == NULL) {
+ __db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
+ ret = DB_NOSERVER;
+ goto out;
+ }
+ ret = replyp->status;
+ if (priorityp != NULL)
+ *priorityp = (DB_CACHE_PRIORITY)replyp->priority;
+out:
+ if (replyp != NULL)
+ xdr_free((xdrproc_t)xdr___db_get_priority_reply, (void *)replyp);
+ return (ret);
+}
+
+/*
* PUBLIC: int __dbcl_db_get_q_extentsize __P((DB *, u_int32_t *));
*/
int
@@ -1424,7 +1465,7 @@ __dbcl_db_get_q_extentsize(dbp, extentsizep)
else
msg.dbpcl_id = dbp->cl_id;
- replyp = __db_db_get_q_extentsize_4005(&msg, cl);
+ replyp = __db_db_get_q_extentsize_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -1432,7 +1473,7 @@ __dbcl_db_get_q_extentsize(dbp, extentsizep)
}
ret = replyp->status;
if (extentsizep != NULL)
- *extentsizep = replyp->extentsize;
+ *extentsizep = (u_int32_t)replyp->extentsize;
out:
if (replyp != NULL)
xdr_free((xdrproc_t)xdr___db_get_q_extentsize_reply, (void *)replyp);
@@ -1465,7 +1506,7 @@ __dbcl_db_get_re_delim(dbp, delimp)
else
msg.dbpcl_id = dbp->cl_id;
- replyp = __db_db_get_re_delim_4005(&msg, cl);
+ replyp = __db_db_get_re_delim_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -1473,7 +1514,7 @@ __dbcl_db_get_re_delim(dbp, delimp)
}
ret = replyp->status;
if (delimp != NULL)
- *delimp = replyp->delim;
+ *delimp = (int)replyp->delim;
out:
if (replyp != NULL)
xdr_free((xdrproc_t)xdr___db_get_re_delim_reply, (void *)replyp);
@@ -1506,7 +1547,7 @@ __dbcl_db_get_re_len(dbp, lenp)
else
msg.dbpcl_id = dbp->cl_id;
- replyp = __db_db_get_re_len_4005(&msg, cl);
+ replyp = __db_db_get_re_len_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -1514,7 +1555,7 @@ __dbcl_db_get_re_len(dbp, lenp)
}
ret = replyp->status;
if (lenp != NULL)
- *lenp = replyp->len;
+ *lenp = (u_int32_t)replyp->len;
out:
if (replyp != NULL)
xdr_free((xdrproc_t)xdr___db_get_re_len_reply, (void *)replyp);
@@ -1547,7 +1588,7 @@ __dbcl_db_get_re_pad(dbp, padp)
else
msg.dbpcl_id = dbp->cl_id;
- replyp = __db_db_get_re_pad_4005(&msg, cl);
+ replyp = __db_db_get_re_pad_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -1555,7 +1596,7 @@ __dbcl_db_get_re_pad(dbp, padp)
}
ret = replyp->status;
if (padp != NULL)
- *padp = replyp->pad;
+ *padp = (int)replyp->pad;
out:
if (replyp != NULL)
xdr_free((xdrproc_t)xdr___db_get_re_pad_reply, (void *)replyp);
@@ -1594,15 +1635,15 @@ __dbcl_db_join(dbp, curs, dbcp, flags)
msg.dbpcl_id = dbp->cl_id;
for (cursi = 0, cursp = curs; *cursp != 0; cursi++, cursp++)
;
- msg.curs.curs_len = cursi;
+ msg.curs.curs_len = (u_int)cursi;
if ((ret = __os_calloc(dbenv,
msg.curs.curs_len, sizeof(u_int32_t), &msg.curs.curs_val)) != 0)
return (ret);
for (cursq = msg.curs.curs_val, cursp = curs; cursi--; cursq++, cursp++)
*cursq = (*cursp)->cl_id;
- msg.flags = flags;
+ msg.flags = (u_int)flags;
- replyp = __db_db_join_4005(&msg, cl);
+ replyp = __db_db_join_4006(&msg, cl);
__os_free(dbenv, msg.curs.curs_val);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
@@ -1655,9 +1696,9 @@ __dbcl_db_key_range(dbp, txnp, key, range, flags)
msg.keyflags = key->flags;
msg.keydata.keydata_val = key->data;
msg.keydata.keydata_len = key->size;
- msg.flags = flags;
+ msg.flags = (u_int)flags;
- replyp = __db_db_key_range_4005(&msg, cl);
+ replyp = __db_db_key_range_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -1713,11 +1754,11 @@ __dbcl_db_open(dbp, txnp, name, subdb, type, flags, mode)
msg.subdb = "";
else
msg.subdb = (char *)subdb;
- msg.type = type;
- msg.flags = flags;
- msg.mode = mode;
+ msg.type = (u_int)type;
+ msg.flags = (u_int)flags;
+ msg.mode = (u_int)mode;
- replyp = __db_db_open_4005(&msg, cl);
+ replyp = __db_db_open_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -1782,9 +1823,9 @@ __dbcl_db_pget(dbp, txnp, skey, pkey, data, flags)
msg.dataflags = data->flags;
msg.datadata.datadata_val = data->data;
msg.datadata.datadata_len = data->size;
- msg.flags = flags;
+ msg.flags = (u_int)flags;
- replyp = __db_db_pget_4005(&msg, cl);
+ replyp = __db_db_pget_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -1841,9 +1882,9 @@ __dbcl_db_put(dbp, txnp, key, data, flags)
msg.dataflags = data->flags;
msg.datadata.datadata_val = data->data;
msg.datadata.datadata_len = data->size;
- msg.flags = flags;
+ msg.flags = (u_int)flags;
- replyp = __db_db_put_4005(&msg, cl);
+ replyp = __db_db_put_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -1892,9 +1933,9 @@ __dbcl_db_remove(dbp, name, subdb, flags)
msg.subdb = "";
else
msg.subdb = (char *)subdb;
- msg.flags = flags;
+ msg.flags = (u_int)flags;
- replyp = __db_db_remove_4005(&msg, cl);
+ replyp = __db_db_remove_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -1948,9 +1989,9 @@ __dbcl_db_rename(dbp, name, subdb, newname, flags)
msg.newname = "";
else
msg.newname = (char *)newname;
- msg.flags = flags;
+ msg.flags = (u_int)flags;
- replyp = __db_db_rename_4005(&msg, cl);
+ replyp = __db_db_rename_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -1988,9 +2029,9 @@ __dbcl_db_set_bt_minkey(dbp, minkey)
msg.dbpcl_id = 0;
else
msg.dbpcl_id = dbp->cl_id;
- msg.minkey = minkey;
+ msg.minkey = (u_int)minkey;
- replyp = __db_db_set_bt_minkey_4005(&msg, cl);
+ replyp = __db_db_set_bt_minkey_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -2033,9 +2074,9 @@ __dbcl_db_set_encrypt(dbp, passwd, flags)
msg.passwd = "";
else
msg.passwd = (char *)passwd;
- msg.flags = flags;
+ msg.flags = (u_int)flags;
- replyp = __db_db_set_encrypt_4005(&msg, cl);
+ replyp = __db_db_set_encrypt_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -2073,9 +2114,9 @@ __dbcl_db_set_flags(dbp, flags)
msg.dbpcl_id = 0;
else
msg.dbpcl_id = dbp->cl_id;
- msg.flags = flags;
+ msg.flags = (u_int)flags;
- replyp = __db_db_set_flags_4005(&msg, cl);
+ replyp = __db_db_set_flags_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -2113,9 +2154,9 @@ __dbcl_db_set_h_ffactor(dbp, ffactor)
msg.dbpcl_id = 0;
else
msg.dbpcl_id = dbp->cl_id;
- msg.ffactor = ffactor;
+ msg.ffactor = (u_int)ffactor;
- replyp = __db_db_set_h_ffactor_4005(&msg, cl);
+ replyp = __db_db_set_h_ffactor_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -2153,9 +2194,9 @@ __dbcl_db_set_h_nelem(dbp, nelem)
msg.dbpcl_id = 0;
else
msg.dbpcl_id = dbp->cl_id;
- msg.nelem = nelem;
+ msg.nelem = (u_int)nelem;
- replyp = __db_db_set_h_nelem_4005(&msg, cl);
+ replyp = __db_db_set_h_nelem_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -2193,9 +2234,9 @@ __dbcl_db_set_lorder(dbp, lorder)
msg.dbpcl_id = 0;
else
msg.dbpcl_id = dbp->cl_id;
- msg.lorder = lorder;
+ msg.lorder = (u_int)lorder;
- replyp = __db_db_set_lorder_4005(&msg, cl);
+ replyp = __db_db_set_lorder_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -2233,9 +2274,9 @@ __dbcl_db_set_pagesize(dbp, pagesize)
msg.dbpcl_id = 0;
else
msg.dbpcl_id = dbp->cl_id;
- msg.pagesize = pagesize;
+ msg.pagesize = (u_int)pagesize;
- replyp = __db_db_set_pagesize_4005(&msg, cl);
+ replyp = __db_db_set_pagesize_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -2249,6 +2290,46 @@ out:
}
/*
+ * PUBLIC: int __dbcl_db_set_priority __P((DB *, DB_CACHE_PRIORITY));
+ */
+int
+__dbcl_db_set_priority(dbp, priority)
+ DB * dbp;
+ DB_CACHE_PRIORITY priority;
+{
+ CLIENT *cl;
+ __db_set_priority_msg msg;
+ __db_set_priority_reply *replyp = NULL;
+ int ret;
+ DB_ENV *dbenv;
+
+ ret = 0;
+ dbenv = dbp->dbenv;
+ if (dbenv == NULL || !RPC_ON(dbenv))
+ return (__dbcl_noserver(NULL));
+
+ cl = (CLIENT *)dbenv->cl_handle;
+
+ if (dbp == NULL)
+ msg.dbpcl_id = 0;
+ else
+ msg.dbpcl_id = dbp->cl_id;
+ msg.priority = (u_int)priority;
+
+ replyp = __db_db_set_priority_4006(&msg, cl);
+ if (replyp == NULL) {
+ __db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
+ ret = DB_NOSERVER;
+ goto out;
+ }
+ ret = replyp->status;
+out:
+ if (replyp != NULL)
+ xdr_free((xdrproc_t)xdr___db_set_priority_reply, (void *)replyp);
+ return (ret);
+}
+
+/*
* PUBLIC: int __dbcl_db_set_q_extentsize __P((DB *, u_int32_t));
*/
int
@@ -2273,9 +2354,9 @@ __dbcl_db_set_q_extentsize(dbp, extentsize)
msg.dbpcl_id = 0;
else
msg.dbpcl_id = dbp->cl_id;
- msg.extentsize = extentsize;
+ msg.extentsize = (u_int)extentsize;
- replyp = __db_db_set_q_extentsize_4005(&msg, cl);
+ replyp = __db_db_set_q_extentsize_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -2313,9 +2394,9 @@ __dbcl_db_set_re_delim(dbp, delim)
msg.dbpcl_id = 0;
else
msg.dbpcl_id = dbp->cl_id;
- msg.delim = delim;
+ msg.delim = (u_int)delim;
- replyp = __db_db_set_re_delim_4005(&msg, cl);
+ replyp = __db_db_set_re_delim_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -2353,9 +2434,9 @@ __dbcl_db_set_re_len(dbp, len)
msg.dbpcl_id = 0;
else
msg.dbpcl_id = dbp->cl_id;
- msg.len = len;
+ msg.len = (u_int)len;
- replyp = __db_db_set_re_len_4005(&msg, cl);
+ replyp = __db_db_set_re_len_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -2393,9 +2474,9 @@ __dbcl_db_set_re_pad(dbp, pad)
msg.dbpcl_id = 0;
else
msg.dbpcl_id = dbp->cl_id;
- msg.pad = pad;
+ msg.pad = (u_int)pad;
- replyp = __db_db_set_re_pad_4005(&msg, cl);
+ replyp = __db_db_set_re_pad_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -2439,9 +2520,9 @@ __dbcl_db_stat(dbp, txnp, sp, flags)
msg.txnpcl_id = 0;
else
msg.txnpcl_id = txnp->txnid;
- msg.flags = flags;
+ msg.flags = (u_int)flags;
- replyp = __db_db_stat_4005(&msg, cl);
+ replyp = __db_db_stat_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -2479,9 +2560,9 @@ __dbcl_db_sync(dbp, flags)
msg.dbpcl_id = 0;
else
msg.dbpcl_id = dbp->cl_id;
- msg.flags = flags;
+ msg.flags = (u_int)flags;
- replyp = __db_db_sync_4005(&msg, cl);
+ replyp = __db_db_sync_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -2526,9 +2607,9 @@ __dbcl_db_truncate(dbp, txnp, countp, flags)
msg.txnpcl_id = 0;
else
msg.txnpcl_id = txnp->txnid;
- msg.flags = flags;
+ msg.flags = (u_int)flags;
- replyp = __db_db_truncate_4005(&msg, cl);
+ replyp = __db_db_truncate_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -2542,15 +2623,15 @@ out:
}
/*
- * PUBLIC: int __dbcl_dbc_c_close __P((DBC *));
+ * PUBLIC: int __dbcl_dbc_close __P((DBC *));
*/
int
-__dbcl_dbc_c_close(dbc)
+__dbcl_dbc_close(dbc)
DBC * dbc;
{
CLIENT *cl;
- __dbc_c_close_msg msg;
- __dbc_c_close_reply *replyp = NULL;
+ __dbc_close_msg msg;
+ __dbc_close_reply *replyp = NULL;
int ret;
DB_ENV *dbenv;
@@ -2566,31 +2647,31 @@ __dbcl_dbc_c_close(dbc)
else
msg.dbccl_id = dbc->cl_id;
- replyp = __db_dbc_c_close_4005(&msg, cl);
+ replyp = __db_dbc_close_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
goto out;
}
- ret = __dbcl_dbc_c_close_ret(dbc, replyp);
+ ret = __dbcl_dbc_close_ret(dbc, replyp);
out:
if (replyp != NULL)
- xdr_free((xdrproc_t)xdr___dbc_c_close_reply, (void *)replyp);
+ xdr_free((xdrproc_t)xdr___dbc_close_reply, (void *)replyp);
return (ret);
}
/*
- * PUBLIC: int __dbcl_dbc_c_count __P((DBC *, db_recno_t *, u_int32_t));
+ * PUBLIC: int __dbcl_dbc_count __P((DBC *, db_recno_t *, u_int32_t));
*/
int
-__dbcl_dbc_c_count(dbc, countp, flags)
+__dbcl_dbc_count(dbc, countp, flags)
DBC * dbc;
db_recno_t * countp;
u_int32_t flags;
{
CLIENT *cl;
- __dbc_c_count_msg msg;
- __dbc_c_count_reply *replyp = NULL;
+ __dbc_count_msg msg;
+ __dbc_count_reply *replyp = NULL;
int ret;
DB_ENV *dbenv;
@@ -2605,32 +2686,32 @@ __dbcl_dbc_c_count(dbc, countp, flags)
msg.dbccl_id = 0;
else
msg.dbccl_id = dbc->cl_id;
- msg.flags = flags;
+ msg.flags = (u_int)flags;
- replyp = __db_dbc_c_count_4005(&msg, cl);
+ replyp = __db_dbc_count_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
goto out;
}
- ret = __dbcl_dbc_c_count_ret(dbc, countp, flags, replyp);
+ ret = __dbcl_dbc_count_ret(dbc, countp, flags, replyp);
out:
if (replyp != NULL)
- xdr_free((xdrproc_t)xdr___dbc_c_count_reply, (void *)replyp);
+ xdr_free((xdrproc_t)xdr___dbc_count_reply, (void *)replyp);
return (ret);
}
/*
- * PUBLIC: int __dbcl_dbc_c_del __P((DBC *, u_int32_t));
+ * PUBLIC: int __dbcl_dbc_del __P((DBC *, u_int32_t));
*/
int
-__dbcl_dbc_c_del(dbc, flags)
+__dbcl_dbc_del(dbc, flags)
DBC * dbc;
u_int32_t flags;
{
CLIENT *cl;
- __dbc_c_del_msg msg;
- __dbc_c_del_reply *replyp = NULL;
+ __dbc_del_msg msg;
+ __dbc_del_reply *replyp = NULL;
int ret;
DB_ENV *dbenv;
@@ -2645,9 +2726,9 @@ __dbcl_dbc_c_del(dbc, flags)
msg.dbccl_id = 0;
else
msg.dbccl_id = dbc->cl_id;
- msg.flags = flags;
+ msg.flags = (u_int)flags;
- replyp = __db_dbc_c_del_4005(&msg, cl);
+ replyp = __db_dbc_del_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -2656,22 +2737,22 @@ __dbcl_dbc_c_del(dbc, flags)
ret = replyp->status;
out:
if (replyp != NULL)
- xdr_free((xdrproc_t)xdr___dbc_c_del_reply, (void *)replyp);
+ xdr_free((xdrproc_t)xdr___dbc_del_reply, (void *)replyp);
return (ret);
}
/*
- * PUBLIC: int __dbcl_dbc_c_dup __P((DBC *, DBC **, u_int32_t));
+ * PUBLIC: int __dbcl_dbc_dup __P((DBC *, DBC **, u_int32_t));
*/
int
-__dbcl_dbc_c_dup(dbc, dbcp, flags)
+__dbcl_dbc_dup(dbc, dbcp, flags)
DBC * dbc;
DBC ** dbcp;
u_int32_t flags;
{
CLIENT *cl;
- __dbc_c_dup_msg msg;
- __dbc_c_dup_reply *replyp = NULL;
+ __dbc_dup_msg msg;
+ __dbc_dup_reply *replyp = NULL;
int ret;
DB_ENV *dbenv;
@@ -2686,34 +2767,34 @@ __dbcl_dbc_c_dup(dbc, dbcp, flags)
msg.dbccl_id = 0;
else
msg.dbccl_id = dbc->cl_id;
- msg.flags = flags;
+ msg.flags = (u_int)flags;
- replyp = __db_dbc_c_dup_4005(&msg, cl);
+ replyp = __db_dbc_dup_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
goto out;
}
- ret = __dbcl_dbc_c_dup_ret(dbc, dbcp, flags, replyp);
+ ret = __dbcl_dbc_dup_ret(dbc, dbcp, flags, replyp);
out:
if (replyp != NULL)
- xdr_free((xdrproc_t)xdr___dbc_c_dup_reply, (void *)replyp);
+ xdr_free((xdrproc_t)xdr___dbc_dup_reply, (void *)replyp);
return (ret);
}
/*
- * PUBLIC: int __dbcl_dbc_c_get __P((DBC *, DBT *, DBT *, u_int32_t));
+ * PUBLIC: int __dbcl_dbc_get __P((DBC *, DBT *, DBT *, u_int32_t));
*/
int
-__dbcl_dbc_c_get(dbc, key, data, flags)
+__dbcl_dbc_get(dbc, key, data, flags)
DBC * dbc;
DBT * key;
DBT * data;
u_int32_t flags;
{
CLIENT *cl;
- __dbc_c_get_msg msg;
- __dbc_c_get_reply *replyp = NULL;
+ __dbc_get_msg msg;
+ __dbc_get_reply *replyp = NULL;
int ret;
DB_ENV *dbenv;
@@ -2740,26 +2821,67 @@ __dbcl_dbc_c_get(dbc, key, data, flags)
msg.dataflags = data->flags;
msg.datadata.datadata_val = data->data;
msg.datadata.datadata_len = data->size;
- msg.flags = flags;
+ msg.flags = (u_int)flags;
+
+ replyp = __db_dbc_get_4006(&msg, cl);
+ if (replyp == NULL) {
+ __db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
+ ret = DB_NOSERVER;
+ goto out;
+ }
+ ret = __dbcl_dbc_get_ret(dbc, key, data, flags, replyp);
+out:
+ if (replyp != NULL)
+ xdr_free((xdrproc_t)xdr___dbc_get_reply, (void *)replyp);
+ return (ret);
+}
+
+/*
+ * PUBLIC: int __dbcl_dbc_get_priority __P((DBC *, DB_CACHE_PRIORITY *));
+ */
+int
+__dbcl_dbc_get_priority(dbc, priorityp)
+ DBC * dbc;
+ DB_CACHE_PRIORITY * priorityp;
+{
+ CLIENT *cl;
+ __dbc_get_priority_msg msg;
+ __dbc_get_priority_reply *replyp = NULL;
+ int ret;
+ DB_ENV *dbenv;
+
+ ret = 0;
+ dbenv = dbc->dbp->dbenv;
+ if (dbenv == NULL || !RPC_ON(dbenv))
+ return (__dbcl_noserver(NULL));
+
+ cl = (CLIENT *)dbenv->cl_handle;
- replyp = __db_dbc_c_get_4005(&msg, cl);
+ if (dbc == NULL)
+ msg.dbccl_id = 0;
+ else
+ msg.dbccl_id = dbc->cl_id;
+
+ replyp = __db_dbc_get_priority_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
goto out;
}
- ret = __dbcl_dbc_c_get_ret(dbc, key, data, flags, replyp);
+ ret = replyp->status;
+ if (priorityp != NULL)
+ *priorityp = (DB_CACHE_PRIORITY)replyp->priority;
out:
if (replyp != NULL)
- xdr_free((xdrproc_t)xdr___dbc_c_get_reply, (void *)replyp);
+ xdr_free((xdrproc_t)xdr___dbc_get_priority_reply, (void *)replyp);
return (ret);
}
/*
- * PUBLIC: int __dbcl_dbc_c_pget __P((DBC *, DBT *, DBT *, DBT *, u_int32_t));
+ * PUBLIC: int __dbcl_dbc_pget __P((DBC *, DBT *, DBT *, DBT *, u_int32_t));
*/
int
-__dbcl_dbc_c_pget(dbc, skey, pkey, data, flags)
+__dbcl_dbc_pget(dbc, skey, pkey, data, flags)
DBC * dbc;
DBT * skey;
DBT * pkey;
@@ -2767,8 +2889,8 @@ __dbcl_dbc_c_pget(dbc, skey, pkey, data, flags)
u_int32_t flags;
{
CLIENT *cl;
- __dbc_c_pget_msg msg;
- __dbc_c_pget_reply *replyp = NULL;
+ __dbc_pget_msg msg;
+ __dbc_pget_reply *replyp = NULL;
int ret;
DB_ENV *dbenv;
@@ -2801,34 +2923,34 @@ __dbcl_dbc_c_pget(dbc, skey, pkey, data, flags)
msg.dataflags = data->flags;
msg.datadata.datadata_val = data->data;
msg.datadata.datadata_len = data->size;
- msg.flags = flags;
+ msg.flags = (u_int)flags;
- replyp = __db_dbc_c_pget_4005(&msg, cl);
+ replyp = __db_dbc_pget_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
goto out;
}
- ret = __dbcl_dbc_c_pget_ret(dbc, skey, pkey, data, flags, replyp);
+ ret = __dbcl_dbc_pget_ret(dbc, skey, pkey, data, flags, replyp);
out:
if (replyp != NULL)
- xdr_free((xdrproc_t)xdr___dbc_c_pget_reply, (void *)replyp);
+ xdr_free((xdrproc_t)xdr___dbc_pget_reply, (void *)replyp);
return (ret);
}
/*
- * PUBLIC: int __dbcl_dbc_c_put __P((DBC *, DBT *, DBT *, u_int32_t));
+ * PUBLIC: int __dbcl_dbc_put __P((DBC *, DBT *, DBT *, u_int32_t));
*/
int
-__dbcl_dbc_c_put(dbc, key, data, flags)
+__dbcl_dbc_put(dbc, key, data, flags)
DBC * dbc;
DBT * key;
DBT * data;
u_int32_t flags;
{
CLIENT *cl;
- __dbc_c_put_msg msg;
- __dbc_c_put_reply *replyp = NULL;
+ __dbc_put_msg msg;
+ __dbc_put_reply *replyp = NULL;
int ret;
DB_ENV *dbenv;
@@ -2855,18 +2977,58 @@ __dbcl_dbc_c_put(dbc, key, data, flags)
msg.dataflags = data->flags;
msg.datadata.datadata_val = data->data;
msg.datadata.datadata_len = data->size;
- msg.flags = flags;
+ msg.flags = (u_int)flags;
- replyp = __db_dbc_c_put_4005(&msg, cl);
+ replyp = __db_dbc_put_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
goto out;
}
- ret = __dbcl_dbc_c_put_ret(dbc, key, data, flags, replyp);
+ ret = __dbcl_dbc_put_ret(dbc, key, data, flags, replyp);
out:
if (replyp != NULL)
- xdr_free((xdrproc_t)xdr___dbc_c_put_reply, (void *)replyp);
+ xdr_free((xdrproc_t)xdr___dbc_put_reply, (void *)replyp);
+ return (ret);
+}
+
+/*
+ * PUBLIC: int __dbcl_dbc_set_priority __P((DBC *, DB_CACHE_PRIORITY));
+ */
+int
+__dbcl_dbc_set_priority(dbc, priority)
+ DBC * dbc;
+ DB_CACHE_PRIORITY priority;
+{
+ CLIENT *cl;
+ __dbc_set_priority_msg msg;
+ __dbc_set_priority_reply *replyp = NULL;
+ int ret;
+ DB_ENV *dbenv;
+
+ ret = 0;
+ dbenv = dbc->dbp->dbenv;
+ if (dbenv == NULL || !RPC_ON(dbenv))
+ return (__dbcl_noserver(NULL));
+
+ cl = (CLIENT *)dbenv->cl_handle;
+
+ if (dbc == NULL)
+ msg.dbccl_id = 0;
+ else
+ msg.dbccl_id = dbc->cl_id;
+ msg.priority = (u_int)priority;
+
+ replyp = __db_dbc_set_priority_4006(&msg, cl);
+ if (replyp == NULL) {
+ __db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
+ ret = DB_NOSERVER;
+ goto out;
+ }
+ ret = replyp->status;
+out:
+ if (replyp != NULL)
+ xdr_free((xdrproc_t)xdr___dbc_set_priority_reply, (void *)replyp);
return (ret);
}
@@ -2895,7 +3057,7 @@ __dbcl_txn_abort(txnp)
else
msg.txnpcl_id = txnp->txnid;
- replyp = __db_txn_abort_4005(&msg, cl);
+ replyp = __db_txn_abort_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -2933,9 +3095,9 @@ __dbcl_txn_commit(txnp, flags)
msg.txnpcl_id = 0;
else
msg.txnpcl_id = txnp->txnid;
- msg.flags = flags;
+ msg.flags = (u_int)flags;
- replyp = __db_txn_commit_4005(&msg, cl);
+ replyp = __db_txn_commit_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -2973,9 +3135,9 @@ __dbcl_txn_discard(txnp, flags)
msg.txnpcl_id = 0;
else
msg.txnpcl_id = txnp->txnid;
- msg.flags = flags;
+ msg.flags = (u_int)flags;
- replyp = __db_txn_discard_4005(&msg, cl);
+ replyp = __db_txn_discard_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -3015,7 +3177,7 @@ __dbcl_txn_prepare(txnp, gid)
msg.txnpcl_id = txnp->txnid;
memcpy(msg.gid, gid, 128);
- replyp = __db_txn_prepare_4005(&msg, cl);
+ replyp = __db_txn_prepare_4006(&msg, cl);
if (replyp == NULL) {
__db_errx(dbenv, clnt_sperror(cl, "Berkeley DB"));
ret = DB_NOSERVER;
@@ -3064,6 +3226,7 @@ __dbcl_dbp_init(dbp)
__dbcl_dbp_illegal;
dbp->get_open_flags = __dbcl_db_get_open_flags;
dbp->get_pagesize = __dbcl_db_get_pagesize;
+ dbp->get_priority = __dbcl_db_get_priority;
dbp->get_q_extentsize = __dbcl_db_get_q_extentsize;
dbp->get_re_delim = __dbcl_db_get_re_delim;
dbp->get_re_len = __dbcl_db_get_re_len;
@@ -3102,6 +3265,9 @@ __dbcl_dbp_init(dbp)
(int (*)(DB *, void (*)(DB *, int, int)))
__dbcl_dbp_illegal;
dbp->set_flags = __dbcl_db_set_flags;
+ dbp->set_h_compare =
+ (int (*)(DB *, int (*)(DB *, const DBT *, const DBT *)))
+ __dbcl_dbp_illegal;
dbp->set_h_ffactor = __dbcl_db_set_h_ffactor;
dbp->set_h_hash =
(int (*)(DB *, u_int32_t(*)(DB *, const void *, u_int32_t)))
@@ -3112,6 +3278,7 @@ __dbcl_dbp_init(dbp)
dbp->set_paniccall =
(int (*)(DB *, void (*)(DB_ENV *, int)))
__dbcl_dbp_illegal;
+ dbp->set_priority = __dbcl_db_set_priority;
dbp->set_q_extentsize = __dbcl_db_set_q_extentsize;
dbp->set_re_delim = __dbcl_db_set_re_delim;
dbp->set_re_len = __dbcl_db_set_re_len;
@@ -3144,13 +3311,15 @@ void
__dbcl_dbc_init(dbc)
DBC *dbc;
{
- dbc->c_close = __dbcl_dbc_c_close;
- dbc->c_count = __dbcl_dbc_c_count;
- dbc->c_del = __dbcl_dbc_c_del;
- dbc->c_dup = __dbcl_dbc_c_dup;
- dbc->c_get = __dbcl_dbc_c_get;
- dbc->c_pget = __dbcl_dbc_c_pget;
- dbc->c_put = __dbcl_dbc_c_put;
+ dbc->close = dbc->c_close = __dbcl_dbc_close;
+ dbc->count = dbc->c_count = __dbcl_dbc_count;
+ dbc->del = dbc->c_del = __dbcl_dbc_del;
+ dbc->dup = dbc->c_dup = __dbcl_dbc_dup;
+ dbc->get = dbc->c_get = __dbcl_dbc_get;
+ dbc->get_priority = __dbcl_dbc_get_priority;
+ dbc->pget = dbc->c_pget = __dbcl_dbc_pget;
+ dbc->put = dbc->c_put = __dbcl_dbc_put;
+ dbc->set_priority = __dbcl_dbc_set_priority;
return;
}
@@ -3175,6 +3344,9 @@ __dbcl_dbenv_init(dbenv)
(int (*)(DB_ENV *, const char *, u_int32_t))
__dbcl_dbenv_illegal;
dbenv->get_cachesize = __dbcl_env_get_cachesize;
+ dbenv->get_cache_max =
+ (int (*)(DB_ENV *, u_int32_t *, u_int32_t *))
+ __dbcl_dbenv_illegal;
dbenv->get_data_dirs =
(int (*)(DB_ENV *, const char ***))
__dbcl_dbenv_illegal;
@@ -3215,7 +3387,7 @@ __dbcl_dbenv_init(dbenv)
(int (*)(DB_ENV *, int *))
__dbcl_dbenv_illegal;
dbenv->get_mp_max_write =
- (int (*)(DB_ENV *, int *, int *))
+ (int (*)(DB_ENV *, int *, db_timeout_t *))
__dbcl_dbenv_illegal;
dbenv->get_mp_mmapsize =
(int (*)(DB_ENV *, size_t *))
@@ -3224,6 +3396,9 @@ __dbcl_dbenv_init(dbenv)
dbenv->get_shm_key =
(int (*)(DB_ENV *, long *))
__dbcl_dbenv_illegal;
+ dbenv->get_thread_count =
+ (int (*)(DB_ENV *, u_int32_t *))
+ __dbcl_dbenv_illegal;
dbenv->get_timeout =
(int (*)(DB_ENV *, db_timeout_t *, u_int32_t))
__dbcl_dbenv_illegal;
@@ -3353,7 +3528,7 @@ __dbcl_dbenv_init(dbenv)
dbenv->open = __dbcl_env_open;
dbenv->remove = __dbcl_env_remove;
dbenv->rep_elect =
- (int (*)(DB_ENV *, int, int, int *, u_int32_t))
+ (int (*)(DB_ENV *, int, int, u_int32_t))
__dbcl_dbenv_illegal;
dbenv->rep_flush =
(int (*)(DB_ENV *))
@@ -3374,11 +3549,14 @@ __dbcl_dbenv_init(dbenv)
(int (*)(DB_ENV *, int, db_timeout_t *))
__dbcl_dbenv_illegal;
dbenv->rep_process_message =
- (int (*)(DB_ENV *, DBT *, DBT *, int *, DB_LSN *))
+ (int (*)(DB_ENV *, DBT *, DBT *, int, DB_LSN *))
__dbcl_dbenv_illegal;
dbenv->rep_set_config =
(int (*)(DB_ENV *, u_int32_t, int))
__dbcl_dbenv_illegal;
+ dbenv->rep_set_lease =
+ (int (*)(DB_ENV *, u_int32_t, u_int32_t))
+ __dbcl_dbenv_illegal;
dbenv->rep_set_limit =
(int (*)(DB_ENV *, u_int32_t, u_int32_t))
__dbcl_dbenv_illegal;
@@ -3424,6 +3602,12 @@ __dbcl_dbenv_init(dbenv)
dbenv->repmgr_start =
(int (*)(DB_ENV *, int, u_int32_t))
__dbcl_dbenv_illegal;
+ dbenv->repmgr_stat =
+ (int (*)(DB_ENV *, DB_REPMGR_STAT **, u_int32_t))
+ __dbcl_dbenv_illegal;
+ dbenv->repmgr_stat_print =
+ (int (*)(DB_ENV *, u_int32_t))
+ __dbcl_dbenv_illegal;
dbenv->set_alloc =
(int (*)(DB_ENV *, void *(*)(size_t), void *(*)(void *, size_t), void (*)(void *)))
__dbcl_dbenv_illegal;
@@ -3431,6 +3615,9 @@ __dbcl_dbenv_init(dbenv)
(int (*)(DB_ENV *, int (*)(DB_ENV *, DBT *, DB_LSN *, db_recops)))
__dbcl_dbenv_illegal;
dbenv->set_cachesize = __dbcl_env_set_cachesize;
+ dbenv->set_cache_max =
+ (int (*)(DB_ENV *, u_int32_t, u_int32_t))
+ __dbcl_dbenv_illegal;
dbenv->set_data_dir =
(int (*)(DB_ENV *, const char *))
__dbcl_dbenv_illegal;
@@ -3482,7 +3669,7 @@ __dbcl_dbenv_init(dbenv)
(int (*)(DB_ENV *, int))
__dbcl_dbenv_illegal;
dbenv->set_mp_max_write =
- (int (*)(DB_ENV *, int, int))
+ (int (*)(DB_ENV *, int, db_timeout_t))
__dbcl_dbenv_illegal;
dbenv->set_mp_mmapsize =
(int (*)(DB_ENV *, size_t))
diff --git a/db/rpc_client/gen_client_ret.c b/db/rpc_client/gen_client_ret.c
index 1a475f07a..8c4230fdf 100644
--- a/db/rpc_client/gen_client_ret.c
+++ b/db/rpc_client/gen_client_ret.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: gen_client_ret.c,v 12.7 2006/09/08 19:27:46 bostic Exp $
+ * $Id: gen_client_ret.c,v 12.12 2007/05/23 15:18:37 bostic Exp $
*/
#include "db_config.h"
@@ -14,7 +13,7 @@
#include "dbinc/db_am.h"
#include "dbinc/txn.h"
-#ifndef NO_SYSTEM_INCLUDES
+#ifdef HAVE_SYSTEM_INCLUDE_FILES
#include <rpc/rpc.h>
#endif
#include "db_server.h"
@@ -418,7 +417,7 @@ __dbcl_db_open_ret(dbp, txn, name, subdb, type, flags, mode, replyp)
* __db_set_lorder checks that it is called before
* the open flag is set.
*/
- (void)__db_set_lorder(dbp, replyp->lorder);
+ (void)__db_set_lorder(dbp, (int)replyp->lorder);
/*
* Explicitly set DB_AM_OPEN_CALLED since open is now
@@ -658,27 +657,27 @@ __dbcl_db_join_ret(dbp, curs, dbcp, flags, replyp)
}
/*
- * PUBLIC: int __dbcl_dbc_c_close_ret __P((DBC *, __dbc_c_close_reply *));
+ * PUBLIC: int __dbcl_dbc_close_ret __P((DBC *, __dbc_close_reply *));
*/
int
-__dbcl_dbc_c_close_ret(dbc, replyp)
+__dbcl_dbc_close_ret(dbc, replyp)
DBC *dbc;
- __dbc_c_close_reply *replyp;
+ __dbc_close_reply *replyp;
{
__dbcl_c_refresh(dbc);
return (replyp->status);
}
/*
- * PUBLIC: int __dbcl_dbc_c_count_ret
- * PUBLIC: __P((DBC *, db_recno_t *, u_int32_t, __dbc_c_count_reply *));
+ * PUBLIC: int __dbcl_dbc_count_ret
+ * PUBLIC: __P((DBC *, db_recno_t *, u_int32_t, __dbc_count_reply *));
*/
int
-__dbcl_dbc_c_count_ret(dbc, countp, flags, replyp)
+__dbcl_dbc_count_ret(dbc, countp, flags, replyp)
DBC *dbc;
db_recno_t *countp;
u_int32_t flags;
- __dbc_c_count_reply *replyp;
+ __dbc_count_reply *replyp;
{
COMPQUIET(dbc, NULL);
COMPQUIET(flags, 0);
@@ -691,14 +690,14 @@ __dbcl_dbc_c_count_ret(dbc, countp, flags, replyp)
}
/*
- * PUBLIC: int __dbcl_dbc_c_dup_ret
- * PUBLIC: __P((DBC *, DBC **, u_int32_t, __dbc_c_dup_reply *));
+ * PUBLIC: int __dbcl_dbc_dup_ret
+ * PUBLIC: __P((DBC *, DBC **, u_int32_t, __dbc_dup_reply *));
*/
int
-__dbcl_dbc_c_dup_ret(dbc, dbcp, flags, replyp)
+__dbcl_dbc_dup_ret(dbc, dbcp, flags, replyp)
DBC *dbc, **dbcp;
u_int32_t flags;
- __dbc_c_dup_reply *replyp;
+ __dbc_dup_reply *replyp;
{
COMPQUIET(flags, 0);
@@ -709,15 +708,15 @@ __dbcl_dbc_c_dup_ret(dbc, dbcp, flags, replyp)
}
/*
- * PUBLIC: int __dbcl_dbc_c_get_ret
- * PUBLIC: __P((DBC *, DBT *, DBT *, u_int32_t, __dbc_c_get_reply *));
+ * PUBLIC: int __dbcl_dbc_get_ret
+ * PUBLIC: __P((DBC *, DBT *, DBT *, u_int32_t, __dbc_get_reply *));
*/
int
-__dbcl_dbc_c_get_ret(dbc, key, data, flags, replyp)
+__dbcl_dbc_get_ret(dbc, key, data, flags, replyp)
DBC *dbc;
DBT *key, *data;
u_int32_t flags;
- __dbc_c_get_reply *replyp;
+ __dbc_get_reply *replyp;
{
DB_ENV *dbenv;
int ret;
@@ -750,17 +749,17 @@ __dbcl_dbc_c_get_ret(dbc, key, data, flags, replyp)
}
/*
- * PUBLIC: int __dbcl_dbc_c_pget_ret __P((DBC *, DBT *, DBT *, DBT *, u_int32_t,
- * PUBLIC: __dbc_c_pget_reply *));
+ * PUBLIC: int __dbcl_dbc_pget_ret __P((DBC *, DBT *, DBT *, DBT *, u_int32_t,
+ * PUBLIC: __dbc_pget_reply *));
*/
int
-__dbcl_dbc_c_pget_ret(dbc, skey, pkey, data, flags, replyp)
+__dbcl_dbc_pget_ret(dbc, skey, pkey, data, flags, replyp)
DBC * dbc;
DBT * skey;
DBT * pkey;
DBT * data;
u_int32_t flags;
- __dbc_c_pget_reply *replyp;
+ __dbc_pget_reply *replyp;
{
DB_ENV *dbenv;
int ret;
@@ -802,15 +801,15 @@ err: FREE_IF_CHANGED(skey, oldskey);
}
/*
- * PUBLIC: int __dbcl_dbc_c_put_ret
- * PUBLIC: __P((DBC *, DBT *, DBT *, u_int32_t, __dbc_c_put_reply *));
+ * PUBLIC: int __dbcl_dbc_put_ret
+ * PUBLIC: __P((DBC *, DBT *, DBT *, u_int32_t, __dbc_put_reply *));
*/
int
-__dbcl_dbc_c_put_ret(dbc, key, data, flags, replyp)
+__dbcl_dbc_put_ret(dbc, key, data, flags, replyp)
DBC *dbc;
DBT *key, *data;
u_int32_t flags;
- __dbc_c_put_reply *replyp;
+ __dbc_put_reply *replyp;
{
COMPQUIET(data, NULL);
diff --git a/db/rpc_server/c/db_server_proc.c b/db/rpc_server/c/db_server_proc.c
index c563caa8d..dd10f93ab 100644
--- a/db/rpc_server/c/db_server_proc.c
+++ b/db/rpc_server/c/db_server_proc.c
@@ -1,16 +1,15 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: db_server_proc.c,v 12.14 2006/09/19 13:39:44 mjc Exp $
+ * $Id: db_server_proc.c,v 12.22 2007/06/28 13:59:24 bostic Exp $
*/
#include "db_config.h"
#include "db_int.h"
-#ifndef NO_SYSTEM_INCLUDES
+#ifdef HAVE_SYSTEM_INCLUDE_FILES
#include <rpc/rpc.h>
#endif
#include "db_server.h"
@@ -373,7 +372,8 @@ __env_open_proc(dbenvcl_id, home, flags, mode, replyp)
if (__dbsrv_verbose) {
dbenv->set_errfile(dbenv, stderr);
dbenv->set_errpfx(dbenv, fullhome->home);
- }
+ } else
+ dbenv->set_errfile(dbenv, NULL);
/*
* Mask off flags we ignore
@@ -1755,6 +1755,47 @@ err: FREE_IF_CHANGED(dbp->dbenv, key.data, keydata);
}
/*
+ * PUBLIC: void __db_get_priority_proc __P((u_int, __db_get_priority_reply *));
+ */
+void
+__db_get_priority_proc(dbpcl_id, replyp)
+ u_int dbpcl_id;
+ __db_get_priority_reply *replyp;
+{
+ DB *dbp;
+ ct_entry *dbp_ctp;
+
+ ACTIVATE_CTP(dbp_ctp, dbpcl_id, CT_DB);
+ dbp = (DB *)dbp_ctp->ct_anyp;
+
+ replyp->status =
+ dbp->get_priority(dbp, (DB_CACHE_PRIORITY *)&replyp->priority);
+}
+
+/*
+ * PUBLIC: void __db_set_priority_proc __P((u_int, u_int32_t,
+ * PUBLIC: __db_set_priority_reply *));
+ */
+void
+__db_set_priority_proc(dbpcl_id, priority, replyp)
+ u_int dbpcl_id;
+ u_int32_t priority;
+ __db_set_priority_reply *replyp;
+{
+ DB *dbp;
+ ct_entry *dbp_ctp;
+ int ret;
+
+ ACTIVATE_CTP(dbp_ctp, dbpcl_id, CT_DB);
+ dbp = (DB *)dbp_ctp->ct_anyp;
+
+ ret = dbp->set_priority(dbp, (DB_CACHE_PRIORITY)priority);
+
+ replyp->status = ret;
+ return;
+}
+
+/*
* PUBLIC: void __db_get_re_delim_proc __P((u_int, __db_get_re_delim_reply *));
*/
void
@@ -2198,12 +2239,12 @@ out: __os_free(dbenv, jcurs);
}
/*
- * PUBLIC: void __dbc_c_close_proc __P((u_int, __dbc_c_close_reply *));
+ * PUBLIC: void __dbc_close_proc __P((u_int, __dbc_close_reply *));
*/
void
-__dbc_c_close_proc(dbccl_id, replyp)
+__dbc_close_proc(dbccl_id, replyp)
u_int dbccl_id;
- __dbc_c_close_reply *replyp;
+ __dbc_close_reply *replyp;
{
ct_entry *dbc_ctp;
@@ -2213,14 +2254,14 @@ __dbc_c_close_proc(dbccl_id, replyp)
}
/*
- * PUBLIC: void __dbc_c_count_proc
- * PUBLIC: __P((u_int, u_int32_t, __dbc_c_count_reply *));
+ * PUBLIC: void __dbc_count_proc
+ * PUBLIC: __P((u_int, u_int32_t, __dbc_count_reply *));
*/
void
-__dbc_c_count_proc(dbccl_id, flags, replyp)
+__dbc_count_proc(dbccl_id, flags, replyp)
u_int dbccl_id;
u_int32_t flags;
- __dbc_c_count_reply *replyp;
+ __dbc_count_reply *replyp;
{
DBC *dbc;
ct_entry *dbc_ctp;
@@ -2230,7 +2271,7 @@ __dbc_c_count_proc(dbccl_id, flags, replyp)
ACTIVATE_CTP(dbc_ctp, dbccl_id, CT_CURSOR);
dbc = (DBC *)dbc_ctp->ct_anyp;
- ret = dbc->c_count(dbc, &num, flags);
+ ret = dbc->count(dbc, &num, flags);
replyp->status = ret;
if (ret == 0)
replyp->dupcount = num;
@@ -2238,13 +2279,13 @@ __dbc_c_count_proc(dbccl_id, flags, replyp)
}
/*
- * PUBLIC: void __dbc_c_del_proc __P((u_int, u_int32_t, __dbc_c_del_reply *));
+ * PUBLIC: void __dbc_del_proc __P((u_int, u_int32_t, __dbc_del_reply *));
*/
void
-__dbc_c_del_proc(dbccl_id, flags, replyp)
+__dbc_del_proc(dbccl_id, flags, replyp)
u_int dbccl_id;
u_int32_t flags;
- __dbc_c_del_reply *replyp;
+ __dbc_del_reply *replyp;
{
DBC *dbc;
ct_entry *dbc_ctp;
@@ -2253,20 +2294,20 @@ __dbc_c_del_proc(dbccl_id, flags, replyp)
ACTIVATE_CTP(dbc_ctp, dbccl_id, CT_CURSOR);
dbc = (DBC *)dbc_ctp->ct_anyp;
- ret = dbc->c_del(dbc, flags);
+ ret = dbc->del(dbc, flags);
replyp->status = ret;
return;
}
/*
- * PUBLIC: void __dbc_c_dup_proc __P((u_int, u_int32_t, __dbc_c_dup_reply *));
+ * PUBLIC: void __dbc_dup_proc __P((u_int, u_int32_t, __dbc_dup_reply *));
*/
void
-__dbc_c_dup_proc(dbccl_id, flags, replyp)
+__dbc_dup_proc(dbccl_id, flags, replyp)
u_int dbccl_id;
u_int32_t flags;
- __dbc_c_dup_reply *replyp;
+ __dbc_dup_reply *replyp;
{
DBC *dbc, *newdbc;
ct_entry *dbc_ctp, *new_ctp;
@@ -2279,7 +2320,7 @@ __dbc_c_dup_proc(dbccl_id, flags, replyp)
if (new_ctp == NULL)
return;
- if ((ret = dbc->c_dup(dbc, &newdbc, flags)) == 0) {
+ if ((ret = dbc->dup(dbc, &newdbc, flags)) == 0) {
new_ctp->ct_dbc = newdbc;
new_ctp->ct_type = CT_CURSOR;
new_ctp->ct_parent = dbc_ctp->ct_parent;
@@ -2300,13 +2341,13 @@ __dbc_c_dup_proc(dbccl_id, flags, replyp)
}
/*
- * PUBLIC: void __dbc_c_get_proc __P((u_int, u_int32_t, u_int32_t, u_int32_t,
+ * PUBLIC: void __dbc_get_proc __P((u_int, u_int32_t, u_int32_t, u_int32_t,
* PUBLIC: u_int32_t, void *, u_int32_t, u_int32_t, u_int32_t, u_int32_t,
- * PUBLIC: u_int32_t, void *, u_int32_t, u_int32_t, __dbc_c_get_reply *,
+ * PUBLIC: u_int32_t, void *, u_int32_t, u_int32_t, __dbc_get_reply *,
* PUBLIC: int *));
*/
void
-__dbc_c_get_proc(dbccl_id, keydlen, keydoff, keyulen, keyflags, keydata,
+__dbc_get_proc(dbccl_id, keydlen, keydoff, keyulen, keyflags, keydata,
keysize, datadlen, datadoff, dataulen, dataflags, datadata, datasize,
flags, replyp, freep)
u_int dbccl_id;
@@ -2323,7 +2364,7 @@ __dbc_c_get_proc(dbccl_id, keydlen, keydoff, keyulen, keyflags, keydata,
void *datadata;
u_int32_t datasize;
u_int32_t flags;
- __dbc_c_get_reply *replyp;
+ __dbc_get_reply *replyp;
int * freep;
{
DBC *dbc;
@@ -2381,7 +2422,7 @@ __dbc_c_get_proc(dbccl_id, keydlen, keydoff, keyulen, keyflags, keydata,
data.flags |= DB_DBT_PARTIAL;
/* Got all our stuff, now do the get */
- ret = dbc->c_get(dbc, &key, &data, flags);
+ ret = dbc->get(dbc, &key, &data, flags);
/*
* Otherwise just status.
@@ -2441,14 +2482,14 @@ err: FREE_IF_CHANGED(dbenv, key.data, keydata);
}
/*
- * PUBLIC: void __dbc_c_pget_proc __P((u_int, u_int32_t, u_int32_t, u_int32_t,
+ * PUBLIC: void __dbc_pget_proc __P((u_int, u_int32_t, u_int32_t, u_int32_t,
* PUBLIC: u_int32_t, void *, u_int32_t, u_int32_t, u_int32_t, u_int32_t,
* PUBLIC: u_int32_t, void *, u_int32_t, u_int32_t, u_int32_t, u_int32_t,
- * PUBLIC: u_int32_t, void *, u_int32_t, u_int32_t, __dbc_c_pget_reply *,
+ * PUBLIC: u_int32_t, void *, u_int32_t, u_int32_t, __dbc_pget_reply *,
* PUBLIC: int *));
*/
void
-__dbc_c_pget_proc(dbccl_id, skeydlen, skeydoff, skeyulen, skeyflags,
+__dbc_pget_proc(dbccl_id, skeydlen, skeydoff, skeyulen, skeyflags,
skeydata, skeysize, pkeydlen, pkeydoff, pkeyulen, pkeyflags, pkeydata,
pkeysize, datadlen, datadoff, dataulen, dataflags, datadata, datasize,
flags, replyp, freep)
@@ -2472,7 +2513,7 @@ __dbc_c_pget_proc(dbccl_id, skeydlen, skeydoff, skeyulen, skeyflags,
void *datadata;
u_int32_t datasize;
u_int32_t flags;
- __dbc_c_pget_reply *replyp;
+ __dbc_pget_reply *replyp;
int * freep;
{
DBC *dbc;
@@ -2525,7 +2566,7 @@ __dbc_c_pget_proc(dbccl_id, skeydlen, skeydoff, skeyulen, skeyflags,
data.data = datadata;
/* Got all our stuff, now do the get */
- ret = dbc->c_pget(dbc, &skey, &pkey, &data, flags);
+ ret = dbc->pget(dbc, &skey, &pkey, &data, flags);
/*
* Otherwise just status.
*/
@@ -2609,13 +2650,13 @@ err: FREE_IF_CHANGED(dbenv, skey.data, skeydata);
}
/*
- * PUBLIC: void __dbc_c_put_proc __P((u_int, u_int32_t, u_int32_t, u_int32_t,
+ * PUBLIC: void __dbc_put_proc __P((u_int, u_int32_t, u_int32_t, u_int32_t,
* PUBLIC: u_int32_t, void *, u_int32_t, u_int32_t, u_int32_t, u_int32_t,
- * PUBLIC: u_int32_t, void *, u_int32_t, u_int32_t, __dbc_c_put_reply *,
+ * PUBLIC: u_int32_t, void *, u_int32_t, u_int32_t, __dbc_put_reply *,
* PUBLIC: int *));
*/
void
-__dbc_c_put_proc(dbccl_id, keydlen, keydoff, keyulen, keyflags, keydata,
+__dbc_put_proc(dbccl_id, keydlen, keydoff, keyulen, keyflags, keydata,
keysize, datadlen, datadoff, dataulen, dataflags, datadata, datasize,
flags, replyp, freep)
u_int dbccl_id;
@@ -2632,7 +2673,7 @@ __dbc_c_put_proc(dbccl_id, keydlen, keydoff, keyulen, keyflags, keydata,
void *datadata;
u_int32_t datasize;
u_int32_t flags;
- __dbc_c_put_reply *replyp;
+ __dbc_put_reply *replyp;
int * freep;
{
DB *dbp;
@@ -2669,7 +2710,7 @@ __dbc_c_put_proc(dbccl_id, keydlen, keydoff, keyulen, keyflags, keydata,
data.data = datadata;
/* Got all our stuff, now do the put */
- ret = dbc->c_put(dbc, &key, &data, flags);
+ ret = dbc->put(dbc, &key, &data, flags);
*freep = 0;
if (ret == 0 && (flags == DB_AFTER || flags == DB_BEFORE) &&
@@ -2686,3 +2727,45 @@ __dbc_c_put_proc(dbccl_id, keydlen, keydoff, keyulen, keyflags, keydata,
replyp->status = ret;
return;
}
+
+/*
+ * PUBLIC: void
+ * PUBLIC: __dbc_get_priority_proc __P((u_int, __dbc_get_priority_reply *));
+ */
+void
+__dbc_get_priority_proc(dbccl_id, replyp)
+ u_int dbccl_id;
+ __dbc_get_priority_reply *replyp;
+{
+ DBC *dbc;
+ ct_entry *dbc_ctp;
+
+ ACTIVATE_CTP(dbc_ctp, dbccl_id, CT_CURSOR);
+ dbc = (DBC *)dbc_ctp->ct_anyp;
+
+ replyp->status =
+ dbc->get_priority(dbc, (DB_CACHE_PRIORITY *)&replyp->priority);
+}
+
+/*
+ * PUBLIC: void __dbc_set_priority_proc __P((u_int, u_int32_t,
+ * PUBLIC: __dbc_set_priority_reply *));
+ */
+void
+__dbc_set_priority_proc(dbccl_id, priority, replyp)
+ u_int dbccl_id;
+ u_int32_t priority;
+ __dbc_set_priority_reply *replyp;
+{
+ DBC *dbc;
+ ct_entry *dbc_ctp;
+ int ret;
+
+ ACTIVATE_CTP(dbc_ctp, dbccl_id, CT_CURSOR);
+ dbc = (DBC *)dbc_ctp->ct_anyp;
+
+ ret = dbc->set_priority(dbc, (DB_CACHE_PRIORITY)priority);
+
+ replyp->status = ret;
+ return;
+}
diff --git a/db/rpc_server/c/db_server_util.c b/db/rpc_server/c/db_server_util.c
index 9ef8dfcdf..ac5bbc8c4 100644
--- a/db/rpc_server/c/db_server_util.c
+++ b/db/rpc_server/c/db_server_util.c
@@ -1,16 +1,15 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: db_server_util.c,v 12.9 2006/08/24 14:46:29 bostic Exp $
+ * $Id: db_server_util.c,v 12.13 2007/05/17 15:15:52 bostic Exp $
*/
#include "db_config.h"
#include "db_int.h"
-#ifndef NO_SYSTEM_INCLUDES
+#ifdef HAVE_SYSTEM_INCLUDE_FILES
#include <rpc/rpc.h>
#endif
#include "db_server.h"
@@ -597,7 +596,7 @@ __dbc_close_int(dbc_ctp)
dbc = (DBC *)dbc_ctp->ct_anyp;
- ret = dbc->c_close(dbc);
+ ret = dbc->close(dbc);
/*
* If this cursor is a join cursor then we need to fix up the
* cursors that it was joined from so that they are independent again.
diff --git a/db/rpc_server/c/gen_db_server.c b/db/rpc_server/c/gen_db_server.c
index 0f8062648..a3b3dcac6 100644
--- a/db/rpc_server/c/gen_db_server.c
+++ b/db/rpc_server/c/gen_db_server.c
@@ -2,7 +2,7 @@
#include "db_config.h"
#include "db_int.h"
-#ifndef NO_SYSTEM_INCLUDES
+#ifdef HAVE_SYSTEM_INCLUDE_FILES
#include <rpc/rpc.h>
#endif
#include "db_server.h"
@@ -10,7 +10,7 @@
#include "dbinc_auto/rpc_server_ext.h"
__env_create_reply *
-__db_env_create_4005__SVCSUFFIX__(msg, req)
+__db_env_create_4006__SVCSUFFIX__(msg, req)
__env_create_msg *msg;
struct svc_req *req;
{
@@ -24,7 +24,7 @@ __db_env_create_4005__SVCSUFFIX__(msg, req)
}
__env_cdsgroup_begin_reply *
-__db_env_cdsgroup_begin_4005__SVCSUFFIX__(msg, req)
+__db_env_cdsgroup_begin_4006__SVCSUFFIX__(msg, req)
__env_cdsgroup_begin_msg *msg;
struct svc_req *req;
{
@@ -38,7 +38,7 @@ __db_env_cdsgroup_begin_4005__SVCSUFFIX__(msg, req)
}
__env_close_reply *
-__db_env_close_4005__SVCSUFFIX__(msg, req)
+__db_env_close_4006__SVCSUFFIX__(msg, req)
__env_close_msg *msg;
struct svc_req *req;
{
@@ -53,7 +53,7 @@ __db_env_close_4005__SVCSUFFIX__(msg, req)
}
__env_dbremove_reply *
-__db_env_dbremove_4005__SVCSUFFIX__(msg, req)
+__db_env_dbremove_4006__SVCSUFFIX__(msg, req)
__env_dbremove_msg *msg;
struct svc_req *req;
{
@@ -71,7 +71,7 @@ __db_env_dbremove_4005__SVCSUFFIX__(msg, req)
}
__env_dbrename_reply *
-__db_env_dbrename_4005__SVCSUFFIX__(msg, req)
+__db_env_dbrename_4006__SVCSUFFIX__(msg, req)
__env_dbrename_msg *msg;
struct svc_req *req;
{
@@ -90,7 +90,7 @@ __db_env_dbrename_4005__SVCSUFFIX__(msg, req)
}
__env_get_cachesize_reply *
-__db_env_get_cachesize_4005__SVCSUFFIX__(msg, req)
+__db_env_get_cachesize_4006__SVCSUFFIX__(msg, req)
__env_get_cachesize_msg *msg;
struct svc_req *req;
{
@@ -104,7 +104,7 @@ __db_env_get_cachesize_4005__SVCSUFFIX__(msg, req)
}
__env_get_encrypt_flags_reply *
-__db_env_get_encrypt_flags_4005__SVCSUFFIX__(msg, req)
+__db_env_get_encrypt_flags_4006__SVCSUFFIX__(msg, req)
__env_get_encrypt_flags_msg *msg;
struct svc_req *req;
{
@@ -118,7 +118,7 @@ __db_env_get_encrypt_flags_4005__SVCSUFFIX__(msg, req)
}
__env_get_flags_reply *
-__db_env_get_flags_4005__SVCSUFFIX__(msg, req)
+__db_env_get_flags_4006__SVCSUFFIX__(msg, req)
__env_get_flags_msg *msg;
struct svc_req *req;
{
@@ -132,7 +132,7 @@ __db_env_get_flags_4005__SVCSUFFIX__(msg, req)
}
__env_get_home_reply *
-__db_env_get_home_4005__SVCSUFFIX__(msg, req)
+__db_env_get_home_4006__SVCSUFFIX__(msg, req)
__env_get_home_msg *msg;
struct svc_req *req;
{
@@ -146,7 +146,7 @@ __db_env_get_home_4005__SVCSUFFIX__(msg, req)
}
__env_get_open_flags_reply *
-__db_env_get_open_flags_4005__SVCSUFFIX__(msg, req)
+__db_env_get_open_flags_4006__SVCSUFFIX__(msg, req)
__env_get_open_flags_msg *msg;
struct svc_req *req;
{
@@ -160,7 +160,7 @@ __db_env_get_open_flags_4005__SVCSUFFIX__(msg, req)
}
__env_open_reply *
-__db_env_open_4005__SVCSUFFIX__(msg, req)
+__db_env_open_4006__SVCSUFFIX__(msg, req)
__env_open_msg *msg;
struct svc_req *req;
{
@@ -177,7 +177,7 @@ __db_env_open_4005__SVCSUFFIX__(msg, req)
}
__env_remove_reply *
-__db_env_remove_4005__SVCSUFFIX__(msg, req)
+__db_env_remove_4006__SVCSUFFIX__(msg, req)
__env_remove_msg *msg;
struct svc_req *req;
{
@@ -193,7 +193,7 @@ __db_env_remove_4005__SVCSUFFIX__(msg, req)
}
__env_set_cachesize_reply *
-__db_env_set_cachesize_4005__SVCSUFFIX__(msg, req)
+__db_env_set_cachesize_4006__SVCSUFFIX__(msg, req)
__env_set_cachesize_msg *msg;
struct svc_req *req;
{
@@ -210,7 +210,7 @@ __db_env_set_cachesize_4005__SVCSUFFIX__(msg, req)
}
__env_set_encrypt_reply *
-__db_env_set_encrypt_4005__SVCSUFFIX__(msg, req)
+__db_env_set_encrypt_4006__SVCSUFFIX__(msg, req)
__env_set_encrypt_msg *msg;
struct svc_req *req;
{
@@ -226,7 +226,7 @@ __db_env_set_encrypt_4005__SVCSUFFIX__(msg, req)
}
__env_set_flags_reply *
-__db_env_set_flags_4005__SVCSUFFIX__(msg, req)
+__db_env_set_flags_4006__SVCSUFFIX__(msg, req)
__env_set_flags_msg *msg;
struct svc_req *req;
{
@@ -242,7 +242,7 @@ __db_env_set_flags_4005__SVCSUFFIX__(msg, req)
}
__env_txn_begin_reply *
-__db_env_txn_begin_4005__SVCSUFFIX__(msg, req)
+__db_env_txn_begin_4006__SVCSUFFIX__(msg, req)
__env_txn_begin_msg *msg;
struct svc_req *req;
{
@@ -258,7 +258,7 @@ __db_env_txn_begin_4005__SVCSUFFIX__(msg, req)
}
__env_txn_recover_reply *
-__db_env_txn_recover_4005__SVCSUFFIX__(msg, req)
+__db_env_txn_recover_4006__SVCSUFFIX__(msg, req)
__env_txn_recover_msg *msg;
struct svc_req *req;
{
@@ -283,7 +283,7 @@ __db_env_txn_recover_4005__SVCSUFFIX__(msg, req)
}
__db_create_reply *
-__db_db_create_4005__SVCSUFFIX__(msg, req)
+__db_db_create_4006__SVCSUFFIX__(msg, req)
__db_create_msg *msg;
struct svc_req *req;
{
@@ -298,7 +298,7 @@ __db_db_create_4005__SVCSUFFIX__(msg, req)
}
__db_associate_reply *
-__db_db_associate_4005__SVCSUFFIX__(msg, req)
+__db_db_associate_4006__SVCSUFFIX__(msg, req)
__db_associate_msg *msg;
struct svc_req *req;
{
@@ -315,7 +315,7 @@ __db_db_associate_4005__SVCSUFFIX__(msg, req)
}
__db_close_reply *
-__db_db_close_4005__SVCSUFFIX__(msg, req)
+__db_db_close_4006__SVCSUFFIX__(msg, req)
__db_close_msg *msg;
struct svc_req *req;
{
@@ -330,7 +330,7 @@ __db_db_close_4005__SVCSUFFIX__(msg, req)
}
__db_cursor_reply *
-__db_db_cursor_4005__SVCSUFFIX__(msg, req)
+__db_db_cursor_4006__SVCSUFFIX__(msg, req)
__db_cursor_msg *msg;
struct svc_req *req;
{
@@ -346,7 +346,7 @@ __db_db_cursor_4005__SVCSUFFIX__(msg, req)
}
__db_del_reply *
-__db_db_del_4005__SVCSUFFIX__(msg, req)
+__db_db_del_4006__SVCSUFFIX__(msg, req)
__db_del_msg *msg;
struct svc_req *req;
{
@@ -368,7 +368,7 @@ __db_db_del_4005__SVCSUFFIX__(msg, req)
}
__db_get_reply *
-__db_db_get_4005__SVCSUFFIX__(msg, req)
+__db_db_get_4006__SVCSUFFIX__(msg, req)
__db_get_msg *msg;
struct svc_req *req;
{
@@ -405,7 +405,7 @@ __db_db_get_4005__SVCSUFFIX__(msg, req)
}
__db_get_bt_minkey_reply *
-__db_db_get_bt_minkey_4005__SVCSUFFIX__(msg, req)
+__db_db_get_bt_minkey_4006__SVCSUFFIX__(msg, req)
__db_get_bt_minkey_msg *msg;
struct svc_req *req;
{
@@ -419,7 +419,7 @@ __db_db_get_bt_minkey_4005__SVCSUFFIX__(msg, req)
}
__db_get_dbname_reply *
-__db_db_get_dbname_4005__SVCSUFFIX__(msg, req)
+__db_db_get_dbname_4006__SVCSUFFIX__(msg, req)
__db_get_dbname_msg *msg;
struct svc_req *req;
{
@@ -433,7 +433,7 @@ __db_db_get_dbname_4005__SVCSUFFIX__(msg, req)
}
__db_get_encrypt_flags_reply *
-__db_db_get_encrypt_flags_4005__SVCSUFFIX__(msg, req)
+__db_db_get_encrypt_flags_4006__SVCSUFFIX__(msg, req)
__db_get_encrypt_flags_msg *msg;
struct svc_req *req;
{
@@ -447,7 +447,7 @@ __db_db_get_encrypt_flags_4005__SVCSUFFIX__(msg, req)
}
__db_get_flags_reply *
-__db_db_get_flags_4005__SVCSUFFIX__(msg, req)
+__db_db_get_flags_4006__SVCSUFFIX__(msg, req)
__db_get_flags_msg *msg;
struct svc_req *req;
{
@@ -461,7 +461,7 @@ __db_db_get_flags_4005__SVCSUFFIX__(msg, req)
}
__db_get_h_ffactor_reply *
-__db_db_get_h_ffactor_4005__SVCSUFFIX__(msg, req)
+__db_db_get_h_ffactor_4006__SVCSUFFIX__(msg, req)
__db_get_h_ffactor_msg *msg;
struct svc_req *req;
{
@@ -475,7 +475,7 @@ __db_db_get_h_ffactor_4005__SVCSUFFIX__(msg, req)
}
__db_get_h_nelem_reply *
-__db_db_get_h_nelem_4005__SVCSUFFIX__(msg, req)
+__db_db_get_h_nelem_4006__SVCSUFFIX__(msg, req)
__db_get_h_nelem_msg *msg;
struct svc_req *req;
{
@@ -489,7 +489,7 @@ __db_db_get_h_nelem_4005__SVCSUFFIX__(msg, req)
}
__db_get_lorder_reply *
-__db_db_get_lorder_4005__SVCSUFFIX__(msg, req)
+__db_db_get_lorder_4006__SVCSUFFIX__(msg, req)
__db_get_lorder_msg *msg;
struct svc_req *req;
{
@@ -503,7 +503,7 @@ __db_db_get_lorder_4005__SVCSUFFIX__(msg, req)
}
__db_get_open_flags_reply *
-__db_db_get_open_flags_4005__SVCSUFFIX__(msg, req)
+__db_db_get_open_flags_4006__SVCSUFFIX__(msg, req)
__db_get_open_flags_msg *msg;
struct svc_req *req;
{
@@ -517,7 +517,7 @@ __db_db_get_open_flags_4005__SVCSUFFIX__(msg, req)
}
__db_get_pagesize_reply *
-__db_db_get_pagesize_4005__SVCSUFFIX__(msg, req)
+__db_db_get_pagesize_4006__SVCSUFFIX__(msg, req)
__db_get_pagesize_msg *msg;
struct svc_req *req;
{
@@ -530,8 +530,22 @@ __db_db_get_pagesize_4005__SVCSUFFIX__(msg, req)
return (&reply);
}
+__db_get_priority_reply *
+__db_db_get_priority_4006__SVCSUFFIX__(msg, req)
+ __db_get_priority_msg *msg;
+ struct svc_req *req;
+{
+ static __db_get_priority_reply reply; /* must be static */
+ COMPQUIET(req, NULL);
+
+ __db_get_priority_proc(msg->dbpcl_id,
+ &reply);
+
+ return (&reply);
+}
+
__db_get_q_extentsize_reply *
-__db_db_get_q_extentsize_4005__SVCSUFFIX__(msg, req)
+__db_db_get_q_extentsize_4006__SVCSUFFIX__(msg, req)
__db_get_q_extentsize_msg *msg;
struct svc_req *req;
{
@@ -545,7 +559,7 @@ __db_db_get_q_extentsize_4005__SVCSUFFIX__(msg, req)
}
__db_get_re_delim_reply *
-__db_db_get_re_delim_4005__SVCSUFFIX__(msg, req)
+__db_db_get_re_delim_4006__SVCSUFFIX__(msg, req)
__db_get_re_delim_msg *msg;
struct svc_req *req;
{
@@ -559,7 +573,7 @@ __db_db_get_re_delim_4005__SVCSUFFIX__(msg, req)
}
__db_get_re_len_reply *
-__db_db_get_re_len_4005__SVCSUFFIX__(msg, req)
+__db_db_get_re_len_4006__SVCSUFFIX__(msg, req)
__db_get_re_len_msg *msg;
struct svc_req *req;
{
@@ -573,7 +587,7 @@ __db_db_get_re_len_4005__SVCSUFFIX__(msg, req)
}
__db_get_re_pad_reply *
-__db_db_get_re_pad_4005__SVCSUFFIX__(msg, req)
+__db_db_get_re_pad_4006__SVCSUFFIX__(msg, req)
__db_get_re_pad_msg *msg;
struct svc_req *req;
{
@@ -587,7 +601,7 @@ __db_db_get_re_pad_4005__SVCSUFFIX__(msg, req)
}
__db_join_reply *
-__db_db_join_4005__SVCSUFFIX__(msg, req)
+__db_db_join_4006__SVCSUFFIX__(msg, req)
__db_join_msg *msg;
struct svc_req *req;
{
@@ -604,7 +618,7 @@ __db_db_join_4005__SVCSUFFIX__(msg, req)
}
__db_key_range_reply *
-__db_db_key_range_4005__SVCSUFFIX__(msg, req)
+__db_db_key_range_4006__SVCSUFFIX__(msg, req)
__db_key_range_msg *msg;
struct svc_req *req;
{
@@ -626,7 +640,7 @@ __db_db_key_range_4005__SVCSUFFIX__(msg, req)
}
__db_open_reply *
-__db_db_open_4005__SVCSUFFIX__(msg, req)
+__db_db_open_4006__SVCSUFFIX__(msg, req)
__db_open_msg *msg;
struct svc_req *req;
{
@@ -646,7 +660,7 @@ __db_db_open_4005__SVCSUFFIX__(msg, req)
}
__db_pget_reply *
-__db_db_pget_4005__SVCSUFFIX__(msg, req)
+__db_db_pget_4006__SVCSUFFIX__(msg, req)
__db_pget_msg *msg;
struct svc_req *req;
{
@@ -690,7 +704,7 @@ __db_db_pget_4005__SVCSUFFIX__(msg, req)
}
__db_put_reply *
-__db_db_put_4005__SVCSUFFIX__(msg, req)
+__db_db_put_4006__SVCSUFFIX__(msg, req)
__db_put_msg *msg;
struct svc_req *req;
{
@@ -726,7 +740,7 @@ __db_db_put_4005__SVCSUFFIX__(msg, req)
}
__db_remove_reply *
-__db_db_remove_4005__SVCSUFFIX__(msg, req)
+__db_db_remove_4006__SVCSUFFIX__(msg, req)
__db_remove_msg *msg;
struct svc_req *req;
{
@@ -743,7 +757,7 @@ __db_db_remove_4005__SVCSUFFIX__(msg, req)
}
__db_rename_reply *
-__db_db_rename_4005__SVCSUFFIX__(msg, req)
+__db_db_rename_4006__SVCSUFFIX__(msg, req)
__db_rename_msg *msg;
struct svc_req *req;
{
@@ -761,7 +775,7 @@ __db_db_rename_4005__SVCSUFFIX__(msg, req)
}
__db_set_bt_minkey_reply *
-__db_db_set_bt_minkey_4005__SVCSUFFIX__(msg, req)
+__db_db_set_bt_minkey_4006__SVCSUFFIX__(msg, req)
__db_set_bt_minkey_msg *msg;
struct svc_req *req;
{
@@ -776,7 +790,7 @@ __db_db_set_bt_minkey_4005__SVCSUFFIX__(msg, req)
}
__db_set_encrypt_reply *
-__db_db_set_encrypt_4005__SVCSUFFIX__(msg, req)
+__db_db_set_encrypt_4006__SVCSUFFIX__(msg, req)
__db_set_encrypt_msg *msg;
struct svc_req *req;
{
@@ -792,7 +806,7 @@ __db_db_set_encrypt_4005__SVCSUFFIX__(msg, req)
}
__db_set_flags_reply *
-__db_db_set_flags_4005__SVCSUFFIX__(msg, req)
+__db_db_set_flags_4006__SVCSUFFIX__(msg, req)
__db_set_flags_msg *msg;
struct svc_req *req;
{
@@ -807,7 +821,7 @@ __db_db_set_flags_4005__SVCSUFFIX__(msg, req)
}
__db_set_h_ffactor_reply *
-__db_db_set_h_ffactor_4005__SVCSUFFIX__(msg, req)
+__db_db_set_h_ffactor_4006__SVCSUFFIX__(msg, req)
__db_set_h_ffactor_msg *msg;
struct svc_req *req;
{
@@ -822,7 +836,7 @@ __db_db_set_h_ffactor_4005__SVCSUFFIX__(msg, req)
}
__db_set_h_nelem_reply *
-__db_db_set_h_nelem_4005__SVCSUFFIX__(msg, req)
+__db_db_set_h_nelem_4006__SVCSUFFIX__(msg, req)
__db_set_h_nelem_msg *msg;
struct svc_req *req;
{
@@ -837,7 +851,7 @@ __db_db_set_h_nelem_4005__SVCSUFFIX__(msg, req)
}
__db_set_lorder_reply *
-__db_db_set_lorder_4005__SVCSUFFIX__(msg, req)
+__db_db_set_lorder_4006__SVCSUFFIX__(msg, req)
__db_set_lorder_msg *msg;
struct svc_req *req;
{
@@ -852,7 +866,7 @@ __db_db_set_lorder_4005__SVCSUFFIX__(msg, req)
}
__db_set_pagesize_reply *
-__db_db_set_pagesize_4005__SVCSUFFIX__(msg, req)
+__db_db_set_pagesize_4006__SVCSUFFIX__(msg, req)
__db_set_pagesize_msg *msg;
struct svc_req *req;
{
@@ -866,8 +880,23 @@ __db_db_set_pagesize_4005__SVCSUFFIX__(msg, req)
return (&reply);
}
+__db_set_priority_reply *
+__db_db_set_priority_4006__SVCSUFFIX__(msg, req)
+ __db_set_priority_msg *msg;
+ struct svc_req *req;
+{
+ static __db_set_priority_reply reply; /* must be static */
+ COMPQUIET(req, NULL);
+
+ __db_set_priority_proc(msg->dbpcl_id,
+ msg->priority,
+ &reply);
+
+ return (&reply);
+}
+
__db_set_q_extentsize_reply *
-__db_db_set_q_extentsize_4005__SVCSUFFIX__(msg, req)
+__db_db_set_q_extentsize_4006__SVCSUFFIX__(msg, req)
__db_set_q_extentsize_msg *msg;
struct svc_req *req;
{
@@ -882,7 +911,7 @@ __db_db_set_q_extentsize_4005__SVCSUFFIX__(msg, req)
}
__db_set_re_delim_reply *
-__db_db_set_re_delim_4005__SVCSUFFIX__(msg, req)
+__db_db_set_re_delim_4006__SVCSUFFIX__(msg, req)
__db_set_re_delim_msg *msg;
struct svc_req *req;
{
@@ -897,7 +926,7 @@ __db_db_set_re_delim_4005__SVCSUFFIX__(msg, req)
}
__db_set_re_len_reply *
-__db_db_set_re_len_4005__SVCSUFFIX__(msg, req)
+__db_db_set_re_len_4006__SVCSUFFIX__(msg, req)
__db_set_re_len_msg *msg;
struct svc_req *req;
{
@@ -912,7 +941,7 @@ __db_db_set_re_len_4005__SVCSUFFIX__(msg, req)
}
__db_set_re_pad_reply *
-__db_db_set_re_pad_4005__SVCSUFFIX__(msg, req)
+__db_db_set_re_pad_4006__SVCSUFFIX__(msg, req)
__db_set_re_pad_msg *msg;
struct svc_req *req;
{
@@ -927,7 +956,7 @@ __db_db_set_re_pad_4005__SVCSUFFIX__(msg, req)
}
__db_stat_reply *
-__db_db_stat_4005__SVCSUFFIX__(msg, req)
+__db_db_stat_4006__SVCSUFFIX__(msg, req)
__db_stat_msg *msg;
struct svc_req *req;
{
@@ -951,7 +980,7 @@ __db_db_stat_4005__SVCSUFFIX__(msg, req)
}
__db_sync_reply *
-__db_db_sync_4005__SVCSUFFIX__(msg, req)
+__db_db_sync_4006__SVCSUFFIX__(msg, req)
__db_sync_msg *msg;
struct svc_req *req;
{
@@ -966,7 +995,7 @@ __db_db_sync_4005__SVCSUFFIX__(msg, req)
}
__db_truncate_reply *
-__db_db_truncate_4005__SVCSUFFIX__(msg, req)
+__db_db_truncate_4006__SVCSUFFIX__(msg, req)
__db_truncate_msg *msg;
struct svc_req *req;
{
@@ -981,83 +1010,83 @@ __db_db_truncate_4005__SVCSUFFIX__(msg, req)
return (&reply);
}
-__dbc_c_close_reply *
-__db_dbc_c_close_4005__SVCSUFFIX__(msg, req)
- __dbc_c_close_msg *msg;
+__dbc_close_reply *
+__db_dbc_close_4006__SVCSUFFIX__(msg, req)
+ __dbc_close_msg *msg;
struct svc_req *req;
{
- static __dbc_c_close_reply reply; /* must be static */
+ static __dbc_close_reply reply; /* must be static */
COMPQUIET(req, NULL);
- __dbc_c_close_proc(msg->dbccl_id,
+ __dbc_close_proc(msg->dbccl_id,
&reply);
return (&reply);
}
-__dbc_c_count_reply *
-__db_dbc_c_count_4005__SVCSUFFIX__(msg, req)
- __dbc_c_count_msg *msg;
+__dbc_count_reply *
+__db_dbc_count_4006__SVCSUFFIX__(msg, req)
+ __dbc_count_msg *msg;
struct svc_req *req;
{
- static __dbc_c_count_reply reply; /* must be static */
+ static __dbc_count_reply reply; /* must be static */
COMPQUIET(req, NULL);
- __dbc_c_count_proc(msg->dbccl_id,
+ __dbc_count_proc(msg->dbccl_id,
msg->flags,
&reply);
return (&reply);
}
-__dbc_c_del_reply *
-__db_dbc_c_del_4005__SVCSUFFIX__(msg, req)
- __dbc_c_del_msg *msg;
+__dbc_del_reply *
+__db_dbc_del_4006__SVCSUFFIX__(msg, req)
+ __dbc_del_msg *msg;
struct svc_req *req;
{
- static __dbc_c_del_reply reply; /* must be static */
+ static __dbc_del_reply reply; /* must be static */
COMPQUIET(req, NULL);
- __dbc_c_del_proc(msg->dbccl_id,
+ __dbc_del_proc(msg->dbccl_id,
msg->flags,
&reply);
return (&reply);
}
-__dbc_c_dup_reply *
-__db_dbc_c_dup_4005__SVCSUFFIX__(msg, req)
- __dbc_c_dup_msg *msg;
+__dbc_dup_reply *
+__db_dbc_dup_4006__SVCSUFFIX__(msg, req)
+ __dbc_dup_msg *msg;
struct svc_req *req;
{
- static __dbc_c_dup_reply reply; /* must be static */
+ static __dbc_dup_reply reply; /* must be static */
COMPQUIET(req, NULL);
- __dbc_c_dup_proc(msg->dbccl_id,
+ __dbc_dup_proc(msg->dbccl_id,
msg->flags,
&reply);
return (&reply);
}
-__dbc_c_get_reply *
-__db_dbc_c_get_4005__SVCSUFFIX__(msg, req)
- __dbc_c_get_msg *msg;
+__dbc_get_reply *
+__db_dbc_get_4006__SVCSUFFIX__(msg, req)
+ __dbc_get_msg *msg;
struct svc_req *req;
{
- static __dbc_c_get_reply reply; /* must be static */
- static int __dbc_c_get_free = 0; /* must be static */
+ static __dbc_get_reply reply; /* must be static */
+ static int __dbc_get_free = 0; /* must be static */
COMPQUIET(req, NULL);
- if (__dbc_c_get_free)
- xdr_free((xdrproc_t)xdr___dbc_c_get_reply, (void *)&reply);
- __dbc_c_get_free = 0;
+ if (__dbc_get_free)
+ xdr_free((xdrproc_t)xdr___dbc_get_reply, (void *)&reply);
+ __dbc_get_free = 0;
/* Reinitialize allocated fields */
reply.keydata.keydata_val = NULL;
reply.datadata.datadata_val = NULL;
- __dbc_c_get_proc(msg->dbccl_id,
+ __dbc_get_proc(msg->dbccl_id,
msg->keydlen,
msg->keydoff,
msg->keyulen,
@@ -1072,29 +1101,43 @@ __db_dbc_c_get_4005__SVCSUFFIX__(msg, req)
msg->datadata.datadata_len,
msg->flags,
&reply,
- &__dbc_c_get_free);
+ &__dbc_get_free);
return (&reply);
}
-__dbc_c_pget_reply *
-__db_dbc_c_pget_4005__SVCSUFFIX__(msg, req)
- __dbc_c_pget_msg *msg;
+__dbc_get_priority_reply *
+__db_dbc_get_priority_4006__SVCSUFFIX__(msg, req)
+ __dbc_get_priority_msg *msg;
struct svc_req *req;
{
- static __dbc_c_pget_reply reply; /* must be static */
- static int __dbc_c_pget_free = 0; /* must be static */
+ static __dbc_get_priority_reply reply; /* must be static */
+ COMPQUIET(req, NULL);
+
+ __dbc_get_priority_proc(msg->dbccl_id,
+ &reply);
+
+ return (&reply);
+}
+
+__dbc_pget_reply *
+__db_dbc_pget_4006__SVCSUFFIX__(msg, req)
+ __dbc_pget_msg *msg;
+ struct svc_req *req;
+{
+ static __dbc_pget_reply reply; /* must be static */
+ static int __dbc_pget_free = 0; /* must be static */
COMPQUIET(req, NULL);
- if (__dbc_c_pget_free)
- xdr_free((xdrproc_t)xdr___dbc_c_pget_reply, (void *)&reply);
- __dbc_c_pget_free = 0;
+ if (__dbc_pget_free)
+ xdr_free((xdrproc_t)xdr___dbc_pget_reply, (void *)&reply);
+ __dbc_pget_free = 0;
/* Reinitialize allocated fields */
reply.skeydata.skeydata_val = NULL;
reply.pkeydata.pkeydata_val = NULL;
reply.datadata.datadata_val = NULL;
- __dbc_c_pget_proc(msg->dbccl_id,
+ __dbc_pget_proc(msg->dbccl_id,
msg->skeydlen,
msg->skeydoff,
msg->skeyulen,
@@ -1115,27 +1158,27 @@ __db_dbc_c_pget_4005__SVCSUFFIX__(msg, req)
msg->datadata.datadata_len,
msg->flags,
&reply,
- &__dbc_c_pget_free);
+ &__dbc_pget_free);
return (&reply);
}
-__dbc_c_put_reply *
-__db_dbc_c_put_4005__SVCSUFFIX__(msg, req)
- __dbc_c_put_msg *msg;
+__dbc_put_reply *
+__db_dbc_put_4006__SVCSUFFIX__(msg, req)
+ __dbc_put_msg *msg;
struct svc_req *req;
{
- static __dbc_c_put_reply reply; /* must be static */
- static int __dbc_c_put_free = 0; /* must be static */
+ static __dbc_put_reply reply; /* must be static */
+ static int __dbc_put_free = 0; /* must be static */
COMPQUIET(req, NULL);
- if (__dbc_c_put_free)
- xdr_free((xdrproc_t)xdr___dbc_c_put_reply, (void *)&reply);
- __dbc_c_put_free = 0;
+ if (__dbc_put_free)
+ xdr_free((xdrproc_t)xdr___dbc_put_reply, (void *)&reply);
+ __dbc_put_free = 0;
/* Reinitialize allocated fields */
reply.keydata.keydata_val = NULL;
- __dbc_c_put_proc(msg->dbccl_id,
+ __dbc_put_proc(msg->dbccl_id,
msg->keydlen,
msg->keydoff,
msg->keyulen,
@@ -1150,12 +1193,27 @@ __db_dbc_c_put_4005__SVCSUFFIX__(msg, req)
msg->datadata.datadata_len,
msg->flags,
&reply,
- &__dbc_c_put_free);
+ &__dbc_put_free);
+ return (&reply);
+}
+
+__dbc_set_priority_reply *
+__db_dbc_set_priority_4006__SVCSUFFIX__(msg, req)
+ __dbc_set_priority_msg *msg;
+ struct svc_req *req;
+{
+ static __dbc_set_priority_reply reply; /* must be static */
+ COMPQUIET(req, NULL);
+
+ __dbc_set_priority_proc(msg->dbccl_id,
+ msg->priority,
+ &reply);
+
return (&reply);
}
__txn_abort_reply *
-__db_txn_abort_4005__SVCSUFFIX__(msg, req)
+__db_txn_abort_4006__SVCSUFFIX__(msg, req)
__txn_abort_msg *msg;
struct svc_req *req;
{
@@ -1169,7 +1227,7 @@ __db_txn_abort_4005__SVCSUFFIX__(msg, req)
}
__txn_commit_reply *
-__db_txn_commit_4005__SVCSUFFIX__(msg, req)
+__db_txn_commit_4006__SVCSUFFIX__(msg, req)
__txn_commit_msg *msg;
struct svc_req *req;
{
@@ -1184,7 +1242,7 @@ __db_txn_commit_4005__SVCSUFFIX__(msg, req)
}
__txn_discard_reply *
-__db_txn_discard_4005__SVCSUFFIX__(msg, req)
+__db_txn_discard_4006__SVCSUFFIX__(msg, req)
__txn_discard_msg *msg;
struct svc_req *req;
{
@@ -1199,7 +1257,7 @@ __db_txn_discard_4005__SVCSUFFIX__(msg, req)
}
__txn_prepare_reply *
-__db_txn_prepare_4005__SVCSUFFIX__(msg, req)
+__db_txn_prepare_4006__SVCSUFFIX__(msg, req)
__txn_prepare_msg *msg;
struct svc_req *req;
{
diff --git a/db/rpc_server/cxx/db_server_cxxproc.cpp b/db/rpc_server/cxx/db_server_cxxproc.cpp
index f182c69e0..b9714169e 100644
--- a/db/rpc_server/cxx/db_server_cxxproc.cpp
+++ b/db/rpc_server/cxx/db_server_cxxproc.cpp
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2001-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2001,2007 Oracle. All rights reserved.
*
- * $Id: db_server_cxxproc.cpp,v 12.12 2006/08/24 14:46:29 bostic Exp $
+ * $Id: db_server_cxxproc.cpp,v 12.18 2007/06/28 14:01:21 bostic Exp $
*/
#include "db_config.h"
@@ -315,7 +314,8 @@ __env_open_proc(
if (__dbsrv_verbose) {
dbenv->set_errfile(stderr);
dbenv->set_errpfx(fullhome->home);
- }
+ } else
+ dbenv->set_errfile(NULL);
/*
* Mask off flags we ignore
@@ -1261,6 +1261,40 @@ __db_set_pagesize_proc(
}
extern "C" void
+__db_get_priority_proc(
+ u_int dbpcl_id,
+ __db_get_priority_reply *replyp)
+{
+ Db *dbp;
+ ct_entry *dbp_ctp;
+
+ ACTIVATE_CTP(dbp_ctp, dbpcl_id, CT_DB);
+ dbp = (Db *)dbp_ctp->ct_anyp;
+
+ replyp->status =
+ dbp->get_priority((DB_CACHE_PRIORITY *)&replyp->priority);
+}
+
+extern "C" void
+__db_set_priority_proc(
+ u_int dbpcl_id,
+ u_int32_t priority,
+ __db_set_priority_reply *replyp)
+{
+ Db *dbp;
+ ct_entry *dbp_ctp;
+ int ret;
+
+ ACTIVATE_CTP(dbp_ctp, dbpcl_id, CT_DB);
+ dbp = (Db *)dbp_ctp->ct_anyp;
+
+ ret = dbp->set_priority((DB_CACHE_PRIORITY)priority);
+
+ replyp->status = ret;
+ return;
+}
+
+extern "C" void
__db_pget_proc(
u_int dbpcl_id,
u_int txnpcl_id,
@@ -1894,9 +1928,9 @@ out:
}
extern "C" void
-__dbc_c_close_proc(
+__dbc_close_proc(
u_int dbccl_id,
- __dbc_c_close_reply *replyp)
+ __dbc_close_reply *replyp)
{
ct_entry *dbc_ctp;
@@ -1906,10 +1940,10 @@ __dbc_c_close_proc(
}
extern "C" void
-__dbc_c_count_proc(
+__dbc_count_proc(
u_int dbccl_id,
u_int32_t flags,
- __dbc_c_count_reply *replyp)
+ __dbc_count_reply *replyp)
{
Dbc *dbc;
ct_entry *dbc_ctp;
@@ -1927,10 +1961,10 @@ __dbc_c_count_proc(
}
extern "C" void
-__dbc_c_del_proc(
+__dbc_del_proc(
u_int dbccl_id,
u_int32_t flags,
- __dbc_c_del_reply *replyp)
+ __dbc_del_reply *replyp)
{
Dbc *dbc;
ct_entry *dbc_ctp;
@@ -1946,10 +1980,10 @@ __dbc_c_del_proc(
}
extern "C" void
-__dbc_c_dup_proc(
+__dbc_dup_proc(
u_int dbccl_id,
u_int32_t flags,
- __dbc_c_dup_reply *replyp)
+ __dbc_dup_reply *replyp)
{
Dbc *dbc, *newdbc;
ct_entry *dbc_ctp, *new_ctp;
@@ -1983,7 +2017,7 @@ __dbc_c_dup_proc(
}
extern "C" void
-__dbc_c_get_proc(
+__dbc_get_proc(
u_int dbccl_id,
u_int32_t keydlen,
u_int32_t keydoff,
@@ -1998,7 +2032,7 @@ __dbc_c_get_proc(
void *datadata,
u_int32_t datasize,
u_int32_t flags,
- __dbc_c_get_reply *replyp,
+ __dbc_get_reply *replyp,
int * freep)
{
Dbc *dbc;
@@ -2104,7 +2138,7 @@ err: FREE_IF_CHANGED(dbenv->get_DB_ENV(),
}
extern "C" void
-__dbc_c_pget_proc(
+__dbc_pget_proc(
u_int dbccl_id,
u_int32_t skeydlen,
u_int32_t skeydoff,
@@ -2125,7 +2159,7 @@ __dbc_c_pget_proc(
void *datadata,
u_int32_t datasize,
u_int32_t flags,
- __dbc_c_pget_reply *replyp,
+ __dbc_pget_reply *replyp,
int * freep)
{
Dbc *dbc;
@@ -2246,7 +2280,7 @@ err: FREE_IF_CHANGED(dbenv->get_DB_ENV(),
}
extern "C" void
-__dbc_c_put_proc(
+__dbc_put_proc(
u_int dbccl_id,
u_int32_t keydlen,
u_int32_t keydoff,
@@ -2261,7 +2295,7 @@ __dbc_c_put_proc(
void *datadata,
u_int32_t datasize,
u_int32_t flags,
- __dbc_c_put_reply *replyp,
+ __dbc_put_reply *replyp,
int * freep)
{
Db *dbp;
@@ -2310,3 +2344,37 @@ __dbc_c_put_proc(
replyp->status = ret;
return;
}
+
+extern "C" void
+__dbc_get_priority_proc(
+ u_int dbccl_id,
+ __dbc_get_priority_reply *replyp)
+{
+ Dbc *dbc;
+ ct_entry *dbc_ctp;
+
+ ACTIVATE_CTP(dbc_ctp, dbccl_id, CT_CURSOR);
+ dbc = (Dbc *)dbc_ctp->ct_anyp;
+
+ replyp->status =
+ dbc->get_priority((DB_CACHE_PRIORITY *)&replyp->priority);
+}
+
+extern "C" void
+__dbc_set_priority_proc(
+ u_int dbccl_id,
+ u_int32_t priority,
+ __dbc_set_priority_reply *replyp)
+{
+ Dbc *dbc;
+ ct_entry *dbc_ctp;
+ int ret;
+
+ ACTIVATE_CTP(dbc_ctp, dbccl_id, CT_CURSOR);
+ dbc = (Dbc *)dbc_ctp->ct_anyp;
+
+ ret = dbc->set_priority((DB_CACHE_PRIORITY)priority);
+
+ replyp->status = ret;
+ return;
+}
diff --git a/db/rpc_server/cxx/db_server_cxxutil.cpp b/db/rpc_server/cxx/db_server_cxxutil.cpp
index 13083dfd4..794d8e8b1 100644
--- a/db/rpc_server/cxx/db_server_cxxutil.cpp
+++ b/db/rpc_server/cxx/db_server_cxxutil.cpp
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: db_server_cxxutil.cpp,v 12.6 2006/08/24 14:46:30 bostic Exp $
+ * $Id: db_server_cxxutil.cpp,v 12.8 2007/05/17 15:15:52 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/rpc_server/db_server.sed b/db/rpc_server/db_server.sed
deleted file mode 100644
index f028f778e..000000000
--- a/db/rpc_server/db_server.sed
+++ /dev/null
@@ -1,5 +0,0 @@
-1i\
-\#include "db_config.h"\
-\#ifdef HAVE_RPC
-$a\
-\#endif /* HAVE_RPC */
diff --git a/db/rpc_server/db_server.x b/db/rpc_server/db_server.x
index 322582181..52cb2be4b 100644
--- a/db/rpc_server/db_server.x
+++ b/db/rpc_server/db_server.x
@@ -368,6 +368,16 @@ struct __db_get_pagesize_reply {
unsigned int pagesize;
};
+struct __db_get_priority_msg {
+ unsigned int dbpcl_id;
+};
+
+struct __db_get_priority_reply {
+ /* num return vars: 1 */
+ int status;
+ unsigned int priority;
+};
+
struct __db_get_q_extentsize_msg {
unsigned int dbpcl_id;
};
@@ -604,6 +614,16 @@ struct __db_set_pagesize_reply {
int status;
};
+struct __db_set_priority_msg {
+ unsigned int dbpcl_id;
+ unsigned int priority;
+};
+
+struct __db_set_priority_reply {
+ /* num return vars: 0 */
+ int status;
+};
+
struct __db_set_q_extentsize_msg {
unsigned int dbpcl_id;
unsigned int extentsize;
@@ -678,48 +698,48 @@ struct __db_truncate_reply {
unsigned int count;
};
-struct __dbc_c_close_msg {
+struct __dbc_close_msg {
unsigned int dbccl_id;
};
-struct __dbc_c_close_reply {
+struct __dbc_close_reply {
/* num return vars: 0 */
int status;
};
-struct __dbc_c_count_msg {
+struct __dbc_count_msg {
unsigned int dbccl_id;
unsigned int flags;
};
-struct __dbc_c_count_reply {
+struct __dbc_count_reply {
/* num return vars: 1 */
int status;
unsigned int dupcount;
};
-struct __dbc_c_del_msg {
+struct __dbc_del_msg {
unsigned int dbccl_id;
unsigned int flags;
};
-struct __dbc_c_del_reply {
+struct __dbc_del_reply {
/* num return vars: 0 */
int status;
};
-struct __dbc_c_dup_msg {
+struct __dbc_dup_msg {
unsigned int dbccl_id;
unsigned int flags;
};
-struct __dbc_c_dup_reply {
+struct __dbc_dup_reply {
/* num return vars: 1 */
int status;
unsigned int dbcidcl_id;
};
-struct __dbc_c_get_msg {
+struct __dbc_get_msg {
unsigned int dbccl_id;
unsigned int keydlen;
unsigned int keydoff;
@@ -734,14 +754,24 @@ struct __dbc_c_get_msg {
unsigned int flags;
};
-struct __dbc_c_get_reply {
+struct __dbc_get_reply {
/* num return vars: 2 */
int status;
opaque keydata<>;
opaque datadata<>;
};
-struct __dbc_c_pget_msg {
+struct __dbc_get_priority_msg {
+ unsigned int dbccl_id;
+};
+
+struct __dbc_get_priority_reply {
+ /* num return vars: 1 */
+ int status;
+ unsigned int priority;
+};
+
+struct __dbc_pget_msg {
unsigned int dbccl_id;
unsigned int skeydlen;
unsigned int skeydoff;
@@ -761,7 +791,7 @@ struct __dbc_c_pget_msg {
unsigned int flags;
};
-struct __dbc_c_pget_reply {
+struct __dbc_pget_reply {
/* num return vars: 3 */
int status;
opaque skeydata<>;
@@ -769,7 +799,7 @@ struct __dbc_c_pget_reply {
opaque datadata<>;
};
-struct __dbc_c_put_msg {
+struct __dbc_put_msg {
unsigned int dbccl_id;
unsigned int keydlen;
unsigned int keydoff;
@@ -784,12 +814,22 @@ struct __dbc_c_put_msg {
unsigned int flags;
};
-struct __dbc_c_put_reply {
+struct __dbc_put_reply {
/* num return vars: 1 */
int status;
opaque keydata<>;
};
+struct __dbc_set_priority_msg {
+ unsigned int dbccl_id;
+ unsigned int priority;
+};
+
+struct __dbc_set_priority_reply {
+ /* num return vars: 0 */
+ int status;
+};
+
struct __txn_abort_msg {
unsigned int txnpcl_id;
};
@@ -862,41 +902,45 @@ program DB_RPC_SERVERPROG {
__db_get_lorder_reply __DB_db_get_lorder(__db_get_lorder_msg) = 30;
__db_get_open_flags_reply __DB_db_get_open_flags(__db_get_open_flags_msg) = 31;
__db_get_pagesize_reply __DB_db_get_pagesize(__db_get_pagesize_msg) = 32;
- __db_get_q_extentsize_reply __DB_db_get_q_extentsize(__db_get_q_extentsize_msg) = 33;
- __db_get_re_delim_reply __DB_db_get_re_delim(__db_get_re_delim_msg) = 34;
- __db_get_re_len_reply __DB_db_get_re_len(__db_get_re_len_msg) = 35;
- __db_get_re_pad_reply __DB_db_get_re_pad(__db_get_re_pad_msg) = 36;
- __db_join_reply __DB_db_join(__db_join_msg) = 37;
- __db_key_range_reply __DB_db_key_range(__db_key_range_msg) = 38;
- __db_open_reply __DB_db_open(__db_open_msg) = 39;
- __db_pget_reply __DB_db_pget(__db_pget_msg) = 40;
- __db_put_reply __DB_db_put(__db_put_msg) = 41;
- __db_remove_reply __DB_db_remove(__db_remove_msg) = 42;
- __db_rename_reply __DB_db_rename(__db_rename_msg) = 43;
- __db_set_bt_minkey_reply __DB_db_set_bt_minkey(__db_set_bt_minkey_msg) = 44;
- __db_set_encrypt_reply __DB_db_set_encrypt(__db_set_encrypt_msg) = 45;
- __db_set_flags_reply __DB_db_set_flags(__db_set_flags_msg) = 46;
- __db_set_h_ffactor_reply __DB_db_set_h_ffactor(__db_set_h_ffactor_msg) = 47;
- __db_set_h_nelem_reply __DB_db_set_h_nelem(__db_set_h_nelem_msg) = 48;
- __db_set_lorder_reply __DB_db_set_lorder(__db_set_lorder_msg) = 49;
- __db_set_pagesize_reply __DB_db_set_pagesize(__db_set_pagesize_msg) = 50;
- __db_set_q_extentsize_reply __DB_db_set_q_extentsize(__db_set_q_extentsize_msg) = 51;
- __db_set_re_delim_reply __DB_db_set_re_delim(__db_set_re_delim_msg) = 52;
- __db_set_re_len_reply __DB_db_set_re_len(__db_set_re_len_msg) = 53;
- __db_set_re_pad_reply __DB_db_set_re_pad(__db_set_re_pad_msg) = 54;
- __db_stat_reply __DB_db_stat(__db_stat_msg) = 55;
- __db_sync_reply __DB_db_sync(__db_sync_msg) = 56;
- __db_truncate_reply __DB_db_truncate(__db_truncate_msg) = 57;
- __dbc_c_close_reply __DB_dbc_c_close(__dbc_c_close_msg) = 58;
- __dbc_c_count_reply __DB_dbc_c_count(__dbc_c_count_msg) = 59;
- __dbc_c_del_reply __DB_dbc_c_del(__dbc_c_del_msg) = 60;
- __dbc_c_dup_reply __DB_dbc_c_dup(__dbc_c_dup_msg) = 61;
- __dbc_c_get_reply __DB_dbc_c_get(__dbc_c_get_msg) = 62;
- __dbc_c_pget_reply __DB_dbc_c_pget(__dbc_c_pget_msg) = 63;
- __dbc_c_put_reply __DB_dbc_c_put(__dbc_c_put_msg) = 64;
- __txn_abort_reply __DB_txn_abort(__txn_abort_msg) = 65;
- __txn_commit_reply __DB_txn_commit(__txn_commit_msg) = 66;
- __txn_discard_reply __DB_txn_discard(__txn_discard_msg) = 67;
- __txn_prepare_reply __DB_txn_prepare(__txn_prepare_msg) = 68;
- } = 4005;
+ __db_get_priority_reply __DB_db_get_priority(__db_get_priority_msg) = 33;
+ __db_get_q_extentsize_reply __DB_db_get_q_extentsize(__db_get_q_extentsize_msg) = 34;
+ __db_get_re_delim_reply __DB_db_get_re_delim(__db_get_re_delim_msg) = 35;
+ __db_get_re_len_reply __DB_db_get_re_len(__db_get_re_len_msg) = 36;
+ __db_get_re_pad_reply __DB_db_get_re_pad(__db_get_re_pad_msg) = 37;
+ __db_join_reply __DB_db_join(__db_join_msg) = 38;
+ __db_key_range_reply __DB_db_key_range(__db_key_range_msg) = 39;
+ __db_open_reply __DB_db_open(__db_open_msg) = 40;
+ __db_pget_reply __DB_db_pget(__db_pget_msg) = 41;
+ __db_put_reply __DB_db_put(__db_put_msg) = 42;
+ __db_remove_reply __DB_db_remove(__db_remove_msg) = 43;
+ __db_rename_reply __DB_db_rename(__db_rename_msg) = 44;
+ __db_set_bt_minkey_reply __DB_db_set_bt_minkey(__db_set_bt_minkey_msg) = 45;
+ __db_set_encrypt_reply __DB_db_set_encrypt(__db_set_encrypt_msg) = 46;
+ __db_set_flags_reply __DB_db_set_flags(__db_set_flags_msg) = 47;
+ __db_set_h_ffactor_reply __DB_db_set_h_ffactor(__db_set_h_ffactor_msg) = 48;
+ __db_set_h_nelem_reply __DB_db_set_h_nelem(__db_set_h_nelem_msg) = 49;
+ __db_set_lorder_reply __DB_db_set_lorder(__db_set_lorder_msg) = 50;
+ __db_set_pagesize_reply __DB_db_set_pagesize(__db_set_pagesize_msg) = 51;
+ __db_set_priority_reply __DB_db_set_priority(__db_set_priority_msg) = 52;
+ __db_set_q_extentsize_reply __DB_db_set_q_extentsize(__db_set_q_extentsize_msg) = 53;
+ __db_set_re_delim_reply __DB_db_set_re_delim(__db_set_re_delim_msg) = 54;
+ __db_set_re_len_reply __DB_db_set_re_len(__db_set_re_len_msg) = 55;
+ __db_set_re_pad_reply __DB_db_set_re_pad(__db_set_re_pad_msg) = 56;
+ __db_stat_reply __DB_db_stat(__db_stat_msg) = 57;
+ __db_sync_reply __DB_db_sync(__db_sync_msg) = 58;
+ __db_truncate_reply __DB_db_truncate(__db_truncate_msg) = 59;
+ __dbc_close_reply __DB_dbc_close(__dbc_close_msg) = 60;
+ __dbc_count_reply __DB_dbc_count(__dbc_count_msg) = 61;
+ __dbc_del_reply __DB_dbc_del(__dbc_del_msg) = 62;
+ __dbc_dup_reply __DB_dbc_dup(__dbc_dup_msg) = 63;
+ __dbc_get_reply __DB_dbc_get(__dbc_get_msg) = 64;
+ __dbc_get_priority_reply __DB_dbc_get_priority(__dbc_get_priority_msg) = 65;
+ __dbc_pget_reply __DB_dbc_pget(__dbc_pget_msg) = 66;
+ __dbc_put_reply __DB_dbc_put(__dbc_put_msg) = 67;
+ __dbc_set_priority_reply __DB_dbc_set_priority(__dbc_set_priority_msg) = 68;
+ __txn_abort_reply __DB_txn_abort(__txn_abort_msg) = 69;
+ __txn_commit_reply __DB_txn_commit(__txn_commit_msg) = 70;
+ __txn_discard_reply __DB_txn_discard(__txn_discard_msg) = 71;
+ __txn_prepare_reply __DB_txn_prepare(__txn_prepare_msg) = 72;
+ } = 4006;
} = 351457;
diff --git a/db/rpc_server/db_server_proc.c b/db/rpc_server/db_server_proc.c
deleted file mode 100644
index 108a00fb3..000000000
--- a/db/rpc_server/db_server_proc.c
+++ /dev/null
@@ -1,1546 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2000
- * Sleepycat Software. All rights reserved.
- */
-
-#include "db_config.h"
-
-#ifdef HAVE_RPC
-#ifndef lint
-static const char revid[] = "$Id: db_server_proc.c,v 1.48 2001/01/06 16:08:01 sue Exp $";
-#endif /* not lint */
-
-#ifndef NO_SYSTEM_INCLUDES
-#include <sys/types.h>
-
-#include <rpc/rpc.h>
-
-#include <string.h>
-#endif
-#include "db_server.h"
-
-#include "db_int.h"
-#include "db_server_int.h"
-#include "rpc_server_ext.h"
-
-static int __db_stats_list __P((DB_ENV *,
- __db_stat_statsreplist **, u_int32_t *, int));
-
-/* BEGIN __env_cachesize_1_proc */
-void
-__env_cachesize_1_proc(dbenvcl_id, gbytes, bytes,
- ncache, replyp)
- long dbenvcl_id;
- u_int32_t gbytes;
- u_int32_t bytes;
- u_int32_t ncache;
- __env_cachesize_reply *replyp;
-/* END __env_cachesize_1_proc */
-{
- int ret;
- DB_ENV * dbenv;
- ct_entry *dbenv_ctp;
-
- ACTIVATE_CTP(dbenv_ctp, dbenvcl_id, CT_ENV);
- dbenv = (DB_ENV *)dbenv_ctp->ct_anyp;
-
- ret = dbenv->set_cachesize(dbenv, gbytes, bytes, ncache);
-
- replyp->status = ret;
- return;
-}
-
-/* BEGIN __env_close_1_proc */
-void
-__env_close_1_proc(dbenvcl_id, flags, replyp)
- long dbenvcl_id;
- u_int32_t flags;
- __env_close_reply *replyp;
-/* END __env_close_1_proc */
-{
- replyp->status = __dbenv_close_int(dbenvcl_id, flags);
- return;
-}
-
-/* BEGIN __env_create_1_proc */
-void
-__env_create_1_proc(timeout, replyp)
- u_int32_t timeout;
- __env_create_reply *replyp;
-/* END __env_create_1_proc */
-{
- int ret;
- DB_ENV *dbenv;
- ct_entry *ctp;
-
- ctp = new_ct_ent(&replyp->status);
- if (ctp == NULL)
- return;
- if ((ret = db_env_create(&dbenv, 0)) == 0) {
- ctp->ct_envp = dbenv;
- ctp->ct_type = CT_ENV;
- ctp->ct_parent = NULL;
- ctp->ct_envparent = ctp;
- __dbsrv_settimeout(ctp, timeout);
- __dbsrv_active(ctp);
- replyp->envcl_id = ctp->ct_id;
- } else
- __dbclear_ctp(ctp);
-
- replyp->status = ret;
- return;
-}
-
-/* BEGIN __env_flags_1_proc */
-void
-__env_flags_1_proc(dbenvcl_id, flags, onoff, replyp)
- long dbenvcl_id;
- u_int32_t flags;
- u_int32_t onoff;
- __env_flags_reply *replyp;
-/* END __env_flags_1_proc */
-{
- int ret;
- DB_ENV * dbenv;
- ct_entry *dbenv_ctp;
-
- ACTIVATE_CTP(dbenv_ctp, dbenvcl_id, CT_ENV);
- dbenv = (DB_ENV *)dbenv_ctp->ct_anyp;
-
- ret = dbenv->set_flags(dbenv, flags, onoff);
-
- replyp->status = ret;
- return;
-}
-/* BEGIN __env_open_1_proc */
-void
-__env_open_1_proc(dbenvcl_id, home, flags,
- mode, replyp)
- long dbenvcl_id;
- char *home;
- u_int32_t flags;
- u_int32_t mode;
- __env_open_reply *replyp;
-/* END __env_open_1_proc */
-{
- int ret;
- DB_ENV * dbenv;
- ct_entry *dbenv_ctp;
- char *fullhome;
-
- ACTIVATE_CTP(dbenv_ctp, dbenvcl_id, CT_ENV);
- dbenv = (DB_ENV *)dbenv_ctp->ct_anyp;
- fullhome = get_home(home);
- if (fullhome == NULL) {
- replyp->status = DB_NOSERVER_HOME;
- return;
- }
-
- ret = dbenv->open(dbenv, fullhome, flags, mode);
- replyp->status = ret;
- return;
-}
-
-/* BEGIN __env_remove_1_proc */
-void
-__env_remove_1_proc(dbenvcl_id, home, flags, replyp)
- long dbenvcl_id;
- char *home;
- u_int32_t flags;
- __env_remove_reply *replyp;
-/* END __env_remove_1_proc */
-{
- int ret;
- DB_ENV * dbenv;
- ct_entry *dbenv_ctp;
- char *fullhome;
-
- ACTIVATE_CTP(dbenv_ctp, dbenvcl_id, CT_ENV);
- dbenv = (DB_ENV *)dbenv_ctp->ct_anyp;
- fullhome = get_home(home);
- if (fullhome == NULL) {
- replyp->status = DB_NOSERVER_HOME;
- return;
- }
-
- ret = dbenv->remove(dbenv, fullhome, flags);
- __dbdel_ctp(dbenv_ctp);
- replyp->status = ret;
- return;
-}
-
-/* BEGIN __txn_abort_1_proc */
-void
-__txn_abort_1_proc(txnpcl_id, replyp)
- long txnpcl_id;
- __txn_abort_reply *replyp;
-/* END __txn_abort_1_proc */
-{
- DB_TXN * txnp;
- ct_entry *txnp_ctp;
- int ret;
-
- ACTIVATE_CTP(txnp_ctp, txnpcl_id, CT_TXN);
- txnp = (DB_TXN *)txnp_ctp->ct_anyp;
-
- ret = txn_abort(txnp);
- __dbdel_ctp(txnp_ctp);
- replyp->status = ret;
- return;
-}
-
-/* BEGIN __txn_begin_1_proc */
-void
-__txn_begin_1_proc(envpcl_id, parentcl_id,
- flags, replyp)
- long envpcl_id;
- long parentcl_id;
- u_int32_t flags;
- __txn_begin_reply *replyp;
-/* END __txn_begin_1_proc */
-{
- int ret;
- DB_ENV * envp;
- ct_entry *envp_ctp;
- DB_TXN * parent;
- ct_entry *parent_ctp;
- DB_TXN *txnp;
- ct_entry *ctp;
-
- ACTIVATE_CTP(envp_ctp, envpcl_id, CT_ENV);
- envp = (DB_ENV *)envp_ctp->ct_anyp;
- parent_ctp = NULL;
-
- ctp = new_ct_ent(&replyp->status);
- if (ctp == NULL)
- return;
-
- if (parentcl_id != 0) {
- ACTIVATE_CTP(parent_ctp, parentcl_id, CT_TXN);
- parent = (DB_TXN *)parent_ctp->ct_anyp;
- ctp->ct_activep = parent_ctp->ct_activep;
- } else
- parent = NULL;
-
- ret = txn_begin(envp, parent, &txnp, flags);
- if (ret == 0) {
- ctp->ct_txnp = txnp;
- ctp->ct_type = CT_TXN;
- ctp->ct_parent = parent_ctp;
- ctp->ct_envparent = envp_ctp;
- replyp->txnidcl_id = ctp->ct_id;
- __dbsrv_settimeout(ctp, envp_ctp->ct_timeout);
- __dbsrv_active(ctp);
- } else
- __dbclear_ctp(ctp);
-
- replyp->status = ret;
- return;
-}
-
-/* BEGIN __txn_commit_1_proc */
-void
-__txn_commit_1_proc(txnpcl_id, flags, replyp)
- long txnpcl_id;
- u_int32_t flags;
- __txn_commit_reply *replyp;
-/* END __txn_commit_1_proc */
-{
- int ret;
- DB_TXN * txnp;
- ct_entry *txnp_ctp;
-
- ACTIVATE_CTP(txnp_ctp, txnpcl_id, CT_TXN);
- txnp = (DB_TXN *)txnp_ctp->ct_anyp;
-
- ret = txn_commit(txnp, flags);
- __dbdel_ctp(txnp_ctp);
-
- replyp->status = ret;
- return;
-}
-
-/* BEGIN __db_bt_maxkey_1_proc */
-void
-__db_bt_maxkey_1_proc(dbpcl_id, maxkey, replyp)
- long dbpcl_id;
- u_int32_t maxkey;
- __db_bt_maxkey_reply *replyp;
-/* END __db_bt_maxkey_1_proc */
-{
- int ret;
- DB * dbp;
- ct_entry *dbp_ctp;
-
- ACTIVATE_CTP(dbp_ctp, dbpcl_id, CT_DB);
- dbp = (DB *)dbp_ctp->ct_anyp;
-
- ret = dbp->set_bt_maxkey(dbp, maxkey);
-
- replyp->status = ret;
- return;
-}
-
-/* BEGIN __db_bt_minkey_1_proc */
-void
-__db_bt_minkey_1_proc(dbpcl_id, minkey, replyp)
- long dbpcl_id;
- u_int32_t minkey;
- __db_bt_minkey_reply *replyp;
-/* END __db_bt_minkey_1_proc */
-{
- int ret;
- DB * dbp;
- ct_entry *dbp_ctp;
-
- ACTIVATE_CTP(dbp_ctp, dbpcl_id, CT_DB);
- dbp = (DB *)dbp_ctp->ct_anyp;
-
- ret = dbp->set_bt_minkey(dbp, minkey);
-
- replyp->status = ret;
- return;
-}
-
-/* BEGIN __db_close_1_proc */
-void
-__db_close_1_proc(dbpcl_id, flags, replyp)
- long dbpcl_id;
- u_int32_t flags;
- __db_close_reply *replyp;
-/* END __db_close_1_proc */
-{
- int ret;
- DB * dbp;
- ct_entry *dbp_ctp;
-
- ACTIVATE_CTP(dbp_ctp, dbpcl_id, CT_DB);
- dbp = (DB *)dbp_ctp->ct_anyp;
-
- ret = dbp->close(dbp, flags);
- __dbdel_ctp(dbp_ctp);
-
- replyp-> status= ret;
- return;
-}
-
-/* BEGIN __db_create_1_proc */
-void
-__db_create_1_proc(flags, envpcl_id, replyp)
- u_int32_t flags;
- long envpcl_id;
- __db_create_reply *replyp;
-/* END __db_create_1_proc */
-{
- int ret;
- DB_ENV * envp;
- DB *dbp;
- ct_entry *envp_ctp, *dbp_ctp;
-
- ACTIVATE_CTP(envp_ctp, envpcl_id, CT_ENV);
- envp = (DB_ENV *)envp_ctp->ct_anyp;
-
- dbp_ctp = new_ct_ent(&replyp->status);
- if (dbp_ctp == NULL)
- return ;
- /*
- * We actually require env's for databases. The client should
- * have caught it, but just in case.
- */
- DB_ASSERT(envp != NULL);
- if ((ret = db_create(&dbp, envp, flags)) == 0) {
- dbp_ctp->ct_dbp = dbp;
- dbp_ctp->ct_type = CT_DB;
- dbp_ctp->ct_parent = envp_ctp;
- dbp_ctp->ct_envparent = envp_ctp;
- replyp->dbpcl_id = dbp_ctp->ct_id;
- } else
- __dbclear_ctp(dbp_ctp);
- replyp->status = ret;
- return;
-}
-
-/* BEGIN __db_del_1_proc */
-void
-__db_del_1_proc(dbpcl_id, txnpcl_id, keydlen,
- keydoff, keyflags, keydata, keysize,
- flags, replyp)
- long dbpcl_id;
- long txnpcl_id;
- u_int32_t keydlen;
- u_int32_t keydoff;
- u_int32_t keyflags;
- void *keydata;
- u_int32_t keysize;
- u_int32_t flags;
- __db_del_reply *replyp;
-/* END __db_del_1_proc */
-{
- int ret;
- DB * dbp;
- ct_entry *dbp_ctp;
- DB_TXN * txnp;
- ct_entry *txnp_ctp;
- DBT key;
-
- ACTIVATE_CTP(dbp_ctp, dbpcl_id, CT_DB);
- dbp = (DB *)dbp_ctp->ct_anyp;
- if (txnpcl_id != 0) {
- ACTIVATE_CTP(txnp_ctp, txnpcl_id, CT_TXN);
- txnp = (DB_TXN *)txnp_ctp->ct_anyp;
- } else
- txnp = NULL;
-
- memset(&key, 0, sizeof(key));
-
- /* Set up key DBT */
- key.dlen = keydlen;
- key.doff = keydoff;
- key.flags = keyflags;
- key.size = keysize;
- key.data = keydata;
-
- ret = dbp->del(dbp, txnp, &key, flags);
-
- replyp->status = ret;
- return;
-}
-
-/* BEGIN __db_extentsize_1_proc */
-void
-__db_extentsize_1_proc(dbpcl_id, extentsize, replyp)
- long dbpcl_id;
- u_int32_t extentsize;
- __db_extentsize_reply *replyp;
-/* END __db_extentsize_1_proc */
-{
- int ret;
- DB * dbp;
- ct_entry *dbp_ctp;
-
- ACTIVATE_CTP(dbp_ctp, dbpcl_id, CT_DB);
- dbp = (DB *)dbp_ctp->ct_anyp;
-
- ret = dbp->set_q_extentsize(dbp, extentsize);
-
- replyp->status = ret;
- return;
-}
-
-/* BEGIN __db_flags_1_proc */
-void
-__db_flags_1_proc(dbpcl_id, flags, replyp)
- long dbpcl_id;
- u_int32_t flags;
- __db_flags_reply *replyp;
-/* END __db_flags_1_proc */
-{
- int ret;
- DB * dbp;
- ct_entry *dbp_ctp;
-
- ACTIVATE_CTP(dbp_ctp, dbpcl_id, CT_DB);
- dbp = (DB *)dbp_ctp->ct_anyp;
-
- ret = dbp->set_flags(dbp, flags);
-
- replyp->status = ret;
- return;
-}
-
-/* BEGIN __db_get_1_proc */
-void
-__db_get_1_proc(dbpcl_id, txnpcl_id, keydlen,
- keydoff, keyflags, keydata, keysize,
- datadlen, datadoff, dataflags, datadata,
- datasize, flags, replyp, freep)
- long dbpcl_id;
- long txnpcl_id;
- u_int32_t keydlen;
- u_int32_t keydoff;
- u_int32_t keyflags;
- void *keydata;
- u_int32_t keysize;
- u_int32_t datadlen;
- u_int32_t datadoff;
- u_int32_t dataflags;
- void *datadata;
- u_int32_t datasize;
- u_int32_t flags;
- __db_get_reply *replyp;
- int * freep;
-/* END __db_get_1_proc */
-{
- int key_alloc, ret;
- DB * dbp;
- ct_entry *dbp_ctp;
- DB_TXN * txnp;
- ct_entry *txnp_ctp;
- DBT key, data;
-
- ACTIVATE_CTP(dbp_ctp, dbpcl_id, CT_DB);
- dbp = (DB *)dbp_ctp->ct_anyp;
- if (txnpcl_id != 0) {
- ACTIVATE_CTP(txnp_ctp, txnpcl_id, CT_TXN);
- txnp = (DB_TXN *)txnp_ctp->ct_anyp;
- } else
- txnp = NULL;
-
- *freep = 0;
- memset(&key, 0, sizeof(key));
- memset(&data, 0, sizeof(data));
-
- /* Set up key and data DBT */
- key.dlen = keydlen;
- key.doff = keydoff;
- /*
- * Ignore memory related flags on server.
- */
- key.flags = DB_DBT_MALLOC;
- if (keyflags & DB_DBT_PARTIAL)
- key.flags |= DB_DBT_PARTIAL;
- key.size = keysize;
- key.data = keydata;
-
- data.dlen = datadlen;
- data.doff = datadoff;
- /*
- * Ignore memory related flags on server.
- */
- data.flags = DB_DBT_MALLOC;
- if (dataflags & DB_DBT_PARTIAL)
- data.flags |= DB_DBT_PARTIAL;
- data.size = datasize;
- data.data = datadata;
-
- /* Got all our stuff, now do the get */
- ret = dbp->get(dbp, txnp, &key, &data, flags);
- /*
- * Otherwise just status.
- */
- if (ret == 0) {
- /*
- * XXX
- * We need to xdr_free whatever we are returning, next time.
- * However, DB does not allocate a new key if one was given
- * and we'd be free'ing up space allocated in the request.
- * So, allocate a new key/data pointer if it is the same one
- * as in the request.
- */
- *freep = 1;
- /*
- * Key
- */
- key_alloc = 0;
- if (key.data == keydata) {
- ret = __os_malloc(dbp->dbenv,
- key.size, NULL, &replyp->keydata.keydata_val);
- if (ret != 0) {
- __os_free(key.data, key.size);
- __os_free(data.data, data.size);
- goto err;
- }
- key_alloc = 1;
- memcpy(replyp->keydata.keydata_val, key.data, key.size);
- } else
- replyp->keydata.keydata_val = key.data;
-
- replyp->keydata.keydata_len = key.size;
-
- /*
- * Data
- */
- if (data.data == datadata) {
- ret = __os_malloc(dbp->dbenv,
- data.size, NULL, &replyp->datadata.datadata_val);
- if (ret != 0) {
- __os_free(key.data, key.size);
- __os_free(data.data, data.size);
- if (key_alloc)
- __os_free(replyp->keydata.keydata_val,
- key.size);
- goto err;
- }
- memcpy(replyp->datadata.datadata_val, data.data,
- data.size);
- } else
- replyp->datadata.datadata_val = data.data;
- replyp->datadata.datadata_len = data.size;
- } else {
-err: replyp->keydata.keydata_val = NULL;
- replyp->keydata.keydata_len = 0;
- replyp->datadata.datadata_val = NULL;
- replyp->datadata.datadata_len = 0;
- *freep = 0;
- }
- replyp->status = ret;
- return;
-}
-
-/* BEGIN __db_h_ffactor_1_proc */
-void
-__db_h_ffactor_1_proc(dbpcl_id, ffactor, replyp)
- long dbpcl_id;
- u_int32_t ffactor;
- __db_h_ffactor_reply *replyp;
-/* END __db_h_ffactor_1_proc */
-{
- int ret;
- DB * dbp;
- ct_entry *dbp_ctp;
-
- ACTIVATE_CTP(dbp_ctp, dbpcl_id, CT_DB);
- dbp = (DB *)dbp_ctp->ct_anyp;
-
- ret = dbp->set_h_ffactor(dbp, ffactor);
-
- replyp->status = ret;
- return;
-}
-
-/* BEGIN __db_h_nelem_1_proc */
-void
-__db_h_nelem_1_proc(dbpcl_id, nelem, replyp)
- long dbpcl_id;
- u_int32_t nelem;
- __db_h_nelem_reply *replyp;
-/* END __db_h_nelem_1_proc */
-{
- int ret;
- DB * dbp;
- ct_entry *dbp_ctp;
-
- ACTIVATE_CTP(dbp_ctp, dbpcl_id, CT_DB);
- dbp = (DB *)dbp_ctp->ct_anyp;
-
- ret = dbp->set_h_nelem(dbp, nelem);
-
- replyp->status = ret;
- return;
-}
-
-/* BEGIN __db_key_range_1_proc */
-void
-__db_key_range_1_proc(dbpcl_id, txnpcl_id, keydlen,
- keydoff, keyflags, keydata, keysize,
- flags, replyp)
- long dbpcl_id;
- long txnpcl_id;
- u_int32_t keydlen;
- u_int32_t keydoff;
- u_int32_t keyflags;
- void *keydata;
- u_int32_t keysize;
- u_int32_t flags;
- __db_key_range_reply *replyp;
-/* END __db_key_range_1_proc */
-{
- int ret;
- DB * dbp;
- ct_entry *dbp_ctp;
- DB_TXN * txnp;
- ct_entry *txnp_ctp;
- DBT key;
- DB_KEY_RANGE range;
-
- ACTIVATE_CTP(dbp_ctp, dbpcl_id, CT_DB);
- dbp = (DB *)dbp_ctp->ct_anyp;
- if (txnpcl_id != 0) {
- ACTIVATE_CTP(txnp_ctp, txnpcl_id, CT_TXN);
- txnp = (DB_TXN *)txnp_ctp->ct_anyp;
- } else
- txnp = NULL;
-
- memset(&key, 0, sizeof(key));
- /* Set up key and data DBT */
- key.dlen = keydlen;
- key.doff = keydoff;
- key.size = keysize;
- key.data = keydata;
- key.flags = keyflags;
-
- ret = dbp->key_range(dbp, txnp, &key, &range, flags);
-
- replyp->status = ret;
- replyp->less = range.less;
- replyp->equal = range.equal;
- replyp->greater = range.greater;
- return;
-}
-
-/* BEGIN __db_lorder_1_proc */
-void
-__db_lorder_1_proc(dbpcl_id, lorder, replyp)
- long dbpcl_id;
- u_int32_t lorder;
- __db_lorder_reply *replyp;
-/* END __db_lorder_1_proc */
-{
- int ret;
- DB * dbp;
- ct_entry *dbp_ctp;
-
- ACTIVATE_CTP(dbp_ctp, dbpcl_id, CT_DB);
- dbp = (DB *)dbp_ctp->ct_anyp;
-
- ret = dbp->set_lorder(dbp, lorder);
-
- replyp->status = ret;
- return;
-}
-
-/* BEGIN __dbopen_1_proc */
-void
-__db_open_1_proc(dbpcl_id, name, subdb,
- type, flags, mode, replyp)
- long dbpcl_id;
- char *name;
- char *subdb;
- u_int32_t type;
- u_int32_t flags;
- u_int32_t mode;
- __db_open_reply *replyp;
-/* END __db_open_1_proc */
-{
- int ret;
- DB * dbp;
- ct_entry *dbp_ctp;
-
- ACTIVATE_CTP(dbp_ctp, dbpcl_id, CT_DB);
- dbp = (DB *)dbp_ctp->ct_anyp;
-
- ret = dbp->open(dbp, name, subdb, (DBTYPE)type, flags, mode);
- if (ret == 0) {
- replyp->type = (int) dbp->get_type(dbp);
- /* XXX
- * Tcl needs to peek at dbp->flags for DB_AM_DUP. Send
- * this dbp's flags back.
- */
- replyp->dbflags = (int) dbp->flags;
- }
- replyp->status = ret;
- return;
-}
-
-/* BEGIN __db_pagesize_1_proc */
-void
-__db_pagesize_1_proc(dbpcl_id, pagesize, replyp)
- long dbpcl_id;
- u_int32_t pagesize;
- __db_pagesize_reply *replyp;
-/* END __db_pagesize_1_proc */
-{
- int ret;
- DB * dbp;
- ct_entry *dbp_ctp;
-
- ACTIVATE_CTP(dbp_ctp, dbpcl_id, CT_DB);
- dbp = (DB *)dbp_ctp->ct_anyp;
-
- ret = dbp->set_pagesize(dbp, pagesize);
-
- replyp->status = ret;
- return;
-}
-
-/* BEGIN __db_put_1_proc */
-void
-__db_put_1_proc(dbpcl_id, txnpcl_id, keydlen,
- keydoff, keyflags, keydata, keysize,
- datadlen, datadoff, dataflags, datadata,
- datasize, flags, replyp, freep)
- long dbpcl_id;
- long txnpcl_id;
- u_int32_t keydlen;
- u_int32_t keydoff;
- u_int32_t keyflags;
- void *keydata;
- u_int32_t keysize;
- u_int32_t datadlen;
- u_int32_t datadoff;
- u_int32_t dataflags;
- void *datadata;
- u_int32_t datasize;
- u_int32_t flags;
- __db_put_reply *replyp;
- int * freep;
-/* END __db_put_1_proc */
-{
- int ret;
- DB * dbp;
- ct_entry *dbp_ctp;
- DB_TXN * txnp;
- ct_entry *txnp_ctp;
- DBT key, data;
-
- ACTIVATE_CTP(dbp_ctp, dbpcl_id, CT_DB);
- dbp = (DB *)dbp_ctp->ct_anyp;
- if (txnpcl_id != 0) {
- ACTIVATE_CTP(txnp_ctp, txnpcl_id, CT_TXN);
- txnp = (DB_TXN *)txnp_ctp->ct_anyp;
- } else
- txnp = NULL;
-
- *freep = 0;
- memset(&key, 0, sizeof(key));
- memset(&data, 0, sizeof(data));
-
- /* Set up key and data DBT */
- key.dlen = keydlen;
- key.doff = keydoff;
- /*
- * Ignore memory related flags on server.
- */
- key.flags = DB_DBT_MALLOC;
- if (keyflags & DB_DBT_PARTIAL)
- key.flags |= DB_DBT_PARTIAL;
- key.size = keysize;
- key.data = keydata;
-
- data.dlen = datadlen;
- data.doff = datadoff;
- data.flags = dataflags;
- data.size = datasize;
- data.data = datadata;
-
- /* Got all our stuff, now do the put */
- ret = dbp->put(dbp, txnp, &key, &data, flags);
- /*
- * If the client did a DB_APPEND, set up key in reply.
- * Otherwise just status.
- */
- if (ret == 0 && (flags == DB_APPEND)) {
- /*
- * XXX
- * We need to xdr_free whatever we are returning, next time.
- * However, DB does not allocate a new key if one was given
- * and we'd be free'ing up space allocated in the request.
- * So, allocate a new key/data pointer if it is the same one
- * as in the request.
- */
- *freep = 1;
- /*
- * Key
- */
- if (key.data == keydata) {
- ret = __os_malloc(dbp->dbenv,
- key.size, NULL, &replyp->keydata.keydata_val);
- if (ret != 0) {
- __os_free(key.data, key.size);
- goto err;
- }
- memcpy(replyp->keydata.keydata_val, key.data, key.size);
- } else
- replyp->keydata.keydata_val = key.data;
-
- replyp->keydata.keydata_len = key.size;
- } else {
-err: replyp->keydata.keydata_val = NULL;
- replyp->keydata.keydata_len = 0;
- *freep = 0;
- }
- replyp->status = ret;
- return;
-}
-
-/* BEGIN __db_re_delim_1_proc */
-void
-__db_re_delim_1_proc(dbpcl_id, delim, replyp)
- long dbpcl_id;
- u_int32_t delim;
- __db_re_delim_reply *replyp;
-/* END __db_re_delim_1_proc */
-{
- int ret;
- DB * dbp;
- ct_entry *dbp_ctp;
-
- ACTIVATE_CTP(dbp_ctp, dbpcl_id, CT_DB);
- dbp = (DB *)dbp_ctp->ct_anyp;
-
- ret = dbp->set_re_delim(dbp, delim);
-
- replyp->status = ret;
- return;
-}
-
-/* BEGIN __db_re_len_1_proc */
-void
-__db_re_len_1_proc(dbpcl_id, len, replyp)
- long dbpcl_id;
- u_int32_t len;
- __db_re_len_reply *replyp;
-/* END __db_re_len_1_proc */
-{
- int ret;
- DB * dbp;
- ct_entry *dbp_ctp;
-
- ACTIVATE_CTP(dbp_ctp, dbpcl_id, CT_DB);
- dbp = (DB *)dbp_ctp->ct_anyp;
-
- ret = dbp->set_re_len(dbp, len);
-
- replyp->status = ret;
- return;
-}
-
-/* BEGIN __db_re_pad_1_proc */
-void
-__db_re_pad_1_proc(dbpcl_id, pad, replyp)
- long dbpcl_id;
- u_int32_t pad;
- __db_re_pad_reply *replyp;
-/* END __db_re_pad_1_proc */
-{
- int ret;
- DB * dbp;
- ct_entry *dbp_ctp;
-
- ACTIVATE_CTP(dbp_ctp, dbpcl_id, CT_DB);
- dbp = (DB *)dbp_ctp->ct_anyp;
-
- ret = dbp->set_re_pad(dbp, pad);
-
- replyp->status = ret;
- return;
-}
-
-/* BEGIN __db_remove_1_proc */
-void
-__db_remove_1_proc(dbpcl_id, name, subdb,
- flags, replyp)
- long dbpcl_id;
- char *name;
- char *subdb;
- u_int32_t flags;
- __db_remove_reply *replyp;
-/* END __db_remove_1_proc */
-{
- int ret;
- DB * dbp;
- ct_entry *dbp_ctp;
-
- ACTIVATE_CTP(dbp_ctp, dbpcl_id, CT_DB);
- dbp = (DB *)dbp_ctp->ct_anyp;
-
- ret = dbp->remove(dbp, name, subdb, flags);
- __dbdel_ctp(dbp_ctp);
-
- replyp->status = ret;
- return;
-}
-
-/* BEGIN __db_rename_1_proc */
-void
-__db_rename_1_proc(dbpcl_id, name, subdb,
- newname, flags, replyp)
- long dbpcl_id;
- char *name;
- char *subdb;
- char *newname;
- u_int32_t flags;
- __db_rename_reply *replyp;
-/* END __db_rename_1_proc */
-{
- int ret;
- DB * dbp;
- ct_entry *dbp_ctp;
-
- ACTIVATE_CTP(dbp_ctp, dbpcl_id, CT_DB);
- dbp = (DB *)dbp_ctp->ct_anyp;
-
- ret = dbp->rename(dbp, name, subdb, newname, flags);
- __dbdel_ctp(dbp_ctp);
-
- replyp->status = ret;
- return;
-}
-
-/* BEGIN __db_stat_1_proc */
-void
-__db_stat_1_proc(dbpcl_id,
- flags, replyp, freep)
- long dbpcl_id;
- u_int32_t flags;
- __db_stat_reply *replyp;
- int * freep;
-/* END __db_stat_1_proc */
-{
- int ret;
- DB * dbp;
- ct_entry *dbp_ctp;
- DBTYPE type;
- void *sp;
- int len;
-
- ACTIVATE_CTP(dbp_ctp, dbpcl_id, CT_DB);
- dbp = (DB *)dbp_ctp->ct_anyp;
-
- ret = dbp->stat(dbp, &sp, NULL, flags);
- replyp->status = ret;
- if (ret != 0)
- return;
- /*
- * We get here, we have success. Allocate an array so that
- * we can use the list generator. Generate the reply, free
- * up the space.
- */
- /*
- * XXX This assumes that all elements of all stat structures
- * are u_int32_t fields. They are, currently.
- */
- type = dbp->get_type(dbp);
- if (type == DB_HASH)
- len = sizeof(DB_HASH_STAT) / sizeof(u_int32_t);
- else if (type == DB_QUEUE)
- len = sizeof(DB_QUEUE_STAT) / sizeof(u_int32_t);
- else /* BTREE or RECNO are same stats */
- len = sizeof(DB_BTREE_STAT) / sizeof(u_int32_t);
- /*
- * Set up our list of stats.
- */
- ret = __db_stats_list(dbp->dbenv,
- &replyp->statslist, (u_int32_t*)sp, len);
-
- __os_free(sp, 0);
- if (ret == 0)
- *freep = 1;
- replyp->status = ret;
- return;
-}
-
-int
-__db_stats_list(dbenv, locp, pp, len)
- DB_ENV *dbenv;
- __db_stat_statsreplist **locp;
- u_int32_t *pp;
- int len;
-{
- u_int32_t *p, *q;
- int i, ret;
- __db_stat_statsreplist *nl, **nlp;
-
- nlp = locp;
- for (i = 0; i < len; i++) {
- p = pp+i;
- if ((ret = __os_malloc(dbenv, sizeof(*nl), NULL, nlp)) != 0)
- goto out;
- nl = *nlp;
- nl->next = NULL;
- if ((ret = __os_malloc(dbenv,
- sizeof(u_int32_t), NULL, &nl->ent.ent_val)) != 0)
- goto out;
- q = (u_int32_t *)nl->ent.ent_val;
- *q = *p;
- nl->ent.ent_len = sizeof(u_int32_t);
- nlp = &nl->next;
- }
- return (0);
-out:
- __db_stats_freelist(locp);
- return (ret);
-}
-
-/*
- * PUBLIC: void __db_stats_freelist __P((__db_stat_statsreplist **));
- */
-void
-__db_stats_freelist(locp)
- __db_stat_statsreplist **locp;
-{
- __db_stat_statsreplist *nl, *nl1;
-
- for (nl = *locp; nl != NULL; nl = nl1) {
- nl1 = nl->next;
- if (nl->ent.ent_val)
- __os_free(nl->ent.ent_val, nl->ent.ent_len);
- __os_free(nl, sizeof(*nl));
- }
- *locp = NULL;
-}
-
-/* BEGIN __db_swapped_1_proc */
-void
-__db_swapped_1_proc(dbpcl_id, replyp)
- long dbpcl_id;
- __db_swapped_reply *replyp;
-/* END __db_swapped_1_proc */
-{
- int ret;
- DB * dbp;
- ct_entry *dbp_ctp;
-
- ACTIVATE_CTP(dbp_ctp, dbpcl_id, CT_DB);
- dbp = (DB *)dbp_ctp->ct_anyp;
-
- ret = dbp->get_byteswapped(dbp);
-
- replyp->status = ret;
- return;
-}
-
-/* BEGIN __db_sync_1_proc */
-void
-__db_sync_1_proc(dbpcl_id, flags, replyp)
- long dbpcl_id;
- u_int32_t flags;
- __db_sync_reply *replyp;
-/* END __db_sync_1_proc */
-{
- int ret;
- DB * dbp;
- ct_entry *dbp_ctp;
-
- ACTIVATE_CTP(dbp_ctp, dbpcl_id, CT_DB);
- dbp = (DB *)dbp_ctp->ct_anyp;
-
- ret = dbp->sync(dbp, flags);
-
- replyp->status = ret;
- return;
-}
-
-/* BEGIN __db_cursor_1_proc */
-void
-__db_cursor_1_proc(dbpcl_id, txnpcl_id,
- flags, replyp)
- long dbpcl_id;
- long txnpcl_id;
- u_int32_t flags;
- __db_cursor_reply *replyp;
-/* END __db_cursor_1_proc */
-{
- int ret;
- DB * dbp;
- ct_entry *dbp_ctp;
- DB_TXN * txnp;
- ct_entry *txnp_ctp;
- DBC *dbc;
- ct_entry *dbc_ctp, *env_ctp;
-
- ACTIVATE_CTP(dbp_ctp, dbpcl_id, CT_DB);
- dbp = (DB *)dbp_ctp->ct_anyp;
- dbc_ctp = new_ct_ent(&replyp->status);
- if (dbc_ctp == NULL)
- return;
-
- if (txnpcl_id != 0) {
- ACTIVATE_CTP(txnp_ctp, txnpcl_id, CT_TXN);
- txnp = (DB_TXN *)txnp_ctp->ct_anyp;
- dbc_ctp->ct_activep = txnp_ctp->ct_activep;
- } else
- txnp = NULL;
-
- if ((ret = dbp->cursor(dbp, txnp, &dbc, flags)) == 0) {
- dbc_ctp->ct_dbc = dbc;
- dbc_ctp->ct_type = CT_CURSOR;
- dbc_ctp->ct_parent = dbp_ctp;
- env_ctp = dbp_ctp->ct_envparent;
- dbc_ctp->ct_envparent = env_ctp;
- __dbsrv_settimeout(dbc_ctp, env_ctp->ct_timeout);
- __dbsrv_active(dbc_ctp);
- replyp->dbcidcl_id = dbc_ctp->ct_id;
- } else
- __dbclear_ctp(dbc_ctp);
-
- replyp->status = ret;
- return;
-}
-
-/* BEGIN __db_join_1_proc */
-void
-__db_join_1_proc(dbpcl_id, curslist,
- flags, replyp)
- long dbpcl_id;
- u_int32_t * curslist;
- u_int32_t flags;
- __db_join_reply *replyp;
-/* END __db_join_1_proc */
-{
- DB * dbp;
- ct_entry *dbp_ctp;
- DBC *dbc;
- DBC **jcurs, **c;
- ct_entry *dbc_ctp, *ctp;
- size_t size;
- int ret;
- u_int32_t *cl;
-
- ACTIVATE_CTP(dbp_ctp, dbpcl_id, CT_DB);
- dbp = (DB *)dbp_ctp->ct_anyp;
-
- dbc_ctp = new_ct_ent(&replyp->status);
- if (dbc_ctp == NULL)
- return;
-
- for (size = sizeof(DBC *), cl = curslist; *cl != 0; size += sizeof(DBC *), cl++)
- ;
- if ((ret = __os_malloc(dbp->dbenv, size, NULL, &jcurs)) != 0) {
- replyp->status = ret;
- __dbclear_ctp(dbc_ctp);
- return;
- }
- /*
- * If our curslist has a parent txn, we need to use it too
- * for the activity timeout. All cursors must be part of
- * the same transaction, so just check the first.
- */
- ctp = get_tableent(*curslist);
- DB_ASSERT(ctp->ct_type == CT_CURSOR);
- /*
- * If we are using a transaction, set the join activity timer
- * to point to the parent transaction.
- */
- if (ctp->ct_activep != &ctp->ct_active)
- dbc_ctp->ct_activep = ctp->ct_activep;
- for (cl = curslist, c = jcurs; *cl != 0; cl++, c++) {
- ctp = get_tableent(*cl);
- if (ctp == NULL) {
- replyp->status = DB_NOSERVER_ID;
- goto out;
- }
- /*
- * If we are using a txn, the join cursor points to the
- * transaction timeout. If we are not using a transaction,
- * then all the curslist cursors must point to the join
- * cursor's timeout so that we do not timeout any of the
- * curlist cursors while the join cursor is active.
- * Change the type of the curslist ctps to CT_JOIN so that
- * we know they are part of a join list and we can distinguish
- * them and later restore them when the join cursor is closed.
- */
- DB_ASSERT(ctp->ct_type == CT_CURSOR);
- ctp->ct_type |= CT_JOIN;
- ctp->ct_origp = ctp->ct_activep;
- /*
- * Setting this to the ct_active field of the dbc_ctp is
- * really just a way to distinguish which join dbc this
- * cursor is part of. The ct_activep of this cursor is
- * not used at all during its lifetime as part of a join
- * cursor.
- */
- ctp->ct_activep = &dbc_ctp->ct_active;
- *c = ctp->ct_dbc;
- }
- *c = NULL;
- if ((ret = dbp->join(dbp, jcurs, &dbc, flags)) == 0) {
- dbc_ctp->ct_dbc = dbc;
- dbc_ctp->ct_type = (CT_JOINCUR | CT_CURSOR);
- dbc_ctp->ct_parent = dbp_ctp;
- dbc_ctp->ct_envparent = dbp_ctp->ct_envparent;
- __dbsrv_settimeout(dbc_ctp, dbp_ctp->ct_envparent->ct_timeout);
- __dbsrv_active(dbc_ctp);
- replyp->dbcidcl_id = dbc_ctp->ct_id;
- } else {
- __dbclear_ctp(dbc_ctp);
- /*
- * If we get an error, undo what we did above to any cursors.
- */
- for (cl = curslist; *cl != 0; cl++) {
- ctp = get_tableent(*cl);
- ctp->ct_type = CT_CURSOR;
- ctp->ct_activep = ctp->ct_origp;
- }
- }
-
- replyp->status = ret;
-out:
- __os_free(jcurs, size);
- return;
-}
-
-/* BEGIN __dbc_close_1_proc */
-void
-__dbc_close_1_proc(dbccl_id, replyp)
- long dbccl_id;
- __dbc_close_reply *replyp;
-/* END __dbc_close_1_proc */
-{
- ct_entry *dbc_ctp;
-
- ACTIVATE_CTP(dbc_ctp, dbccl_id, CT_CURSOR);
- replyp->status = __dbc_close_int(dbc_ctp);
- return;
-}
-
-/* BEGIN __dbc_count_1_proc */
-void
-__dbc_count_1_proc(dbccl_id, flags, replyp)
- long dbccl_id;
- u_int32_t flags;
- __dbc_count_reply *replyp;
-/* END __dbc_count_1_proc */
-{
- int ret;
- DBC * dbc;
- ct_entry *dbc_ctp;
- db_recno_t num;
-
- ACTIVATE_CTP(dbc_ctp, dbccl_id, CT_CURSOR);
- dbc = (DBC *)dbc_ctp->ct_anyp;
-
- ret = dbc->c_count(dbc, &num, flags);
- replyp->status = ret;
- if (ret == 0)
- replyp->dupcount = num;
- return;
-}
-
-/* BEGIN __dbc_del_1_proc */
-void
-__dbc_del_1_proc(dbccl_id, flags, replyp)
- long dbccl_id;
- u_int32_t flags;
- __dbc_del_reply *replyp;
-/* END __dbc_del_1_proc */
-{
- int ret;
- DBC * dbc;
- ct_entry *dbc_ctp;
-
- ACTIVATE_CTP(dbc_ctp, dbccl_id, CT_CURSOR);
- dbc = (DBC *)dbc_ctp->ct_anyp;
-
- ret = dbc->c_del(dbc, flags);
-
- replyp->status = ret;
- return;
-}
-
-/* BEGIN __dbc_dup_1_proc */
-void
-__dbc_dup_1_proc(dbccl_id, flags, replyp)
- long dbccl_id;
- u_int32_t flags;
- __dbc_dup_reply *replyp;
-/* END __dbc_dup_1_proc */
-{
- int ret;
- DBC * dbc;
- ct_entry *dbc_ctp;
- DBC *newdbc;
- ct_entry *new_ctp;
-
- ACTIVATE_CTP(dbc_ctp, dbccl_id, CT_CURSOR);
- dbc = (DBC *)dbc_ctp->ct_anyp;
-
- new_ctp = new_ct_ent(&replyp->status);
- if (new_ctp == NULL)
- return;
-
- if ((ret = dbc->c_dup(dbc, &newdbc, flags)) == 0) {
- new_ctp->ct_dbc = newdbc;
- new_ctp->ct_type = CT_CURSOR;
- new_ctp->ct_parent = dbc_ctp->ct_parent;
- new_ctp->ct_envparent = dbc_ctp->ct_envparent;
- /*
- * If our cursor has a parent txn, we need to use it too.
- */
- if (dbc_ctp->ct_activep != &dbc_ctp->ct_active)
- new_ctp->ct_activep = dbc_ctp->ct_activep;
- __dbsrv_settimeout(new_ctp, dbc_ctp->ct_timeout);
- __dbsrv_active(new_ctp);
- replyp->dbcidcl_id = new_ctp->ct_id;
- } else
- __dbclear_ctp(new_ctp);
-
- replyp->status = ret;
- return;
-}
-
-/* BEGIN __dbc_get_1_proc */
-void
-__dbc_get_1_proc(dbccl_id, keydlen, keydoff,
- keyflags, keydata, keysize, datadlen,
- datadoff, dataflags, datadata, datasize,
- flags, replyp, freep)
- long dbccl_id;
- u_int32_t keydlen;
- u_int32_t keydoff;
- u_int32_t keyflags;
- void *keydata;
- u_int32_t keysize;
- u_int32_t datadlen;
- u_int32_t datadoff;
- u_int32_t dataflags;
- void *datadata;
- u_int32_t datasize;
- u_int32_t flags;
- __dbc_get_reply *replyp;
- int * freep;
-/* END __dbc_get_1_proc */
-{
- DB_ENV *dbenv;
- DBC *dbc;
- DBT key, data;
- ct_entry *dbc_ctp;
- int key_alloc, ret;
-
- ACTIVATE_CTP(dbc_ctp, dbccl_id, CT_CURSOR);
- dbc = (DBC *)dbc_ctp->ct_anyp;
- dbenv = dbc->dbp->dbenv;
-
- *freep = 0;
- memset(&key, 0, sizeof(key));
- memset(&data, 0, sizeof(data));
-
- /* Set up key and data DBT */
- key.dlen = keydlen;
- key.doff = keydoff;
- /*
- * Ignore memory related flags on server.
- */
- key.flags = DB_DBT_MALLOC;
- if (keyflags & DB_DBT_PARTIAL)
- key.flags |= DB_DBT_PARTIAL;
- key.size = keysize;
- key.data = keydata;
-
- data.dlen = datadlen;
- data.doff = datadoff;
- data.flags = DB_DBT_MALLOC;
- if (dataflags & DB_DBT_PARTIAL)
- data.flags |= DB_DBT_PARTIAL;
- data.size = datasize;
- data.data = datadata;
-
- /* Got all our stuff, now do the get */
- ret = dbc->c_get(dbc, &key, &data, flags);
-
- /*
- * Otherwise just status.
- */
- if (ret == 0) {
- /*
- * XXX
- * We need to xdr_free whatever we are returning, next time.
- * However, DB does not allocate a new key if one was given
- * and we'd be free'ing up space allocated in the request.
- * So, allocate a new key/data pointer if it is the same one
- * as in the request.
- */
- *freep = 1;
- /*
- * Key
- */
- key_alloc = 0;
- if (key.data == keydata) {
- ret = __os_malloc(dbenv, key.size, NULL,
- &replyp->keydata.keydata_val);
- if (ret != 0) {
- __os_free(key.data, key.size);
- __os_free(data.data, data.size);
- goto err;
- }
- key_alloc = 1;
- memcpy(replyp->keydata.keydata_val, key.data, key.size);
- } else
- replyp->keydata.keydata_val = key.data;
-
- replyp->keydata.keydata_len = key.size;
-
- /*
- * Data
- */
- if (data.data == datadata) {
- ret = __os_malloc(dbenv, data.size, NULL,
- &replyp->datadata.datadata_val);
- if (ret != 0) {
- __os_free(key.data, key.size);
- __os_free(data.data, data.size);
- if (key_alloc)
- __os_free(replyp->keydata.keydata_val,
- key.size);
- goto err;
- }
- memcpy(replyp->datadata.datadata_val, data.data,
- data.size);
- } else
- replyp->datadata.datadata_val = data.data;
- replyp->datadata.datadata_len = data.size;
- } else {
-err: replyp->keydata.keydata_val = NULL;
- replyp->keydata.keydata_len = 0;
- replyp->datadata.datadata_val = NULL;
- replyp->datadata.datadata_len = 0;
- *freep = 0;
- }
- replyp->status = ret;
- return;
-}
-
-/* BEGIN __dbc_put_1_proc */
-void
-__dbc_put_1_proc(dbccl_id, keydlen, keydoff,
- keyflags, keydata, keysize, datadlen,
- datadoff, dataflags, datadata, datasize,
- flags, replyp, freep)
- long dbccl_id;
- u_int32_t keydlen;
- u_int32_t keydoff;
- u_int32_t keyflags;
- void *keydata;
- u_int32_t keysize;
- u_int32_t datadlen;
- u_int32_t datadoff;
- u_int32_t dataflags;
- void *datadata;
- u_int32_t datasize;
- u_int32_t flags;
- __dbc_put_reply *replyp;
- int * freep;
-/* END __dbc_put_1_proc */
-{
- int ret;
- DBC * dbc;
- DB *dbp;
- ct_entry *dbc_ctp;
- DBT key, data;
-
- ACTIVATE_CTP(dbc_ctp, dbccl_id, CT_CURSOR);
- dbc = (DBC *)dbc_ctp->ct_anyp;
- dbp = (DB *)dbc_ctp->ct_parent->ct_anyp;
-
- memset(&key, 0, sizeof(key));
- memset(&data, 0, sizeof(data));
-
- /* Set up key and data DBT */
- key.dlen = keydlen;
- key.doff = keydoff;
- /*
- * Ignore memory related flags on server.
- */
- key.flags = 0;
- if (keyflags & DB_DBT_PARTIAL)
- key.flags |= DB_DBT_PARTIAL;
- key.size = keysize;
- key.data = keydata;
-
- data.dlen = datadlen;
- data.doff = datadoff;
- data.flags = dataflags;
- data.size = datasize;
- data.data = datadata;
-
- /* Got all our stuff, now do the put */
- ret = dbc->c_put(dbc, &key, &data, flags);
-
- *freep = 0;
- if (ret == 0 && (flags == DB_AFTER || flags == DB_BEFORE) &&
- dbp->type == DB_RECNO) {
- /*
- * We need to xdr_free whatever we are returning, next time.
- */
- replyp->keydata.keydata_val = key.data;
- replyp->keydata.keydata_len = key.size;
- } else {
- replyp->keydata.keydata_val = NULL;
- replyp->keydata.keydata_len = 0;
- }
- replyp->status = ret;
- return;
-}
-#endif /* HAVE_RPC */
diff --git a/db/rpc_server/db_server_proc.sed b/db/rpc_server/db_server_proc.sed
deleted file mode 100644
index 7266275b2..000000000
--- a/db/rpc_server/db_server_proc.sed
+++ /dev/null
@@ -1,418 +0,0 @@
-/^\/\* BEGIN __env_cachesize_1_proc/,/^\/\* END __env_cachesize_1_proc/c\
-/* BEGIN __env_cachesize_1_proc */\
-void\
-__env_cachesize_1_proc(dbenvcl_id, gbytes, bytes,\
-\ \ ncache, replyp)\
-\ long dbenvcl_id;\
-\ u_int32_t gbytes;\
-\ u_int32_t bytes;\
-\ u_int32_t ncache;\
-\ __env_cachesize_reply *replyp;\
-/* END __env_cachesize_1_proc */
-/^\/\* BEGIN __env_close_1_proc/,/^\/\* END __env_close_1_proc/c\
-/* BEGIN __env_close_1_proc */\
-void\
-__env_close_1_proc(dbenvcl_id, flags, replyp)\
-\ long dbenvcl_id;\
-\ u_int32_t flags;\
-\ __env_close_reply *replyp;\
-/* END __env_close_1_proc */
-/^\/\* BEGIN __env_create_1_proc/,/^\/\* END __env_create_1_proc/c\
-/* BEGIN __env_create_1_proc */\
-void\
-__env_create_1_proc(timeout, replyp)\
-\ u_int32_t timeout;\
-\ __env_create_reply *replyp;\
-/* END __env_create_1_proc */
-/^\/\* BEGIN __env_flags_1_proc/,/^\/\* END __env_flags_1_proc/c\
-/* BEGIN __env_flags_1_proc */\
-void\
-__env_flags_1_proc(dbenvcl_id, flags, onoff, replyp)\
-\ long dbenvcl_id;\
-\ u_int32_t flags;\
-\ u_int32_t onoff;\
-\ __env_flags_reply *replyp;\
-/* END __env_flags_1_proc */
-/^\/\* BEGIN __env_open_1_proc/,/^\/\* END __env_open_1_proc/c\
-/* BEGIN __env_open_1_proc */\
-void\
-__env_open_1_proc(dbenvcl_id, home, flags,\
-\ \ mode, replyp)\
-\ long dbenvcl_id;\
-\ char *home;\
-\ u_int32_t flags;\
-\ u_int32_t mode;\
-\ __env_open_reply *replyp;\
-/* END __env_open_1_proc */
-/^\/\* BEGIN __env_remove_1_proc/,/^\/\* END __env_remove_1_proc/c\
-/* BEGIN __env_remove_1_proc */\
-void\
-__env_remove_1_proc(dbenvcl_id, home, flags, replyp)\
-\ long dbenvcl_id;\
-\ char *home;\
-\ u_int32_t flags;\
-\ __env_remove_reply *replyp;\
-/* END __env_remove_1_proc */
-/^\/\* BEGIN __txn_abort_1_proc/,/^\/\* END __txn_abort_1_proc/c\
-/* BEGIN __txn_abort_1_proc */\
-void\
-__txn_abort_1_proc(txnpcl_id, replyp)\
-\ long txnpcl_id;\
-\ __txn_abort_reply *replyp;\
-/* END __txn_abort_1_proc */
-/^\/\* BEGIN __txn_begin_1_proc/,/^\/\* END __txn_begin_1_proc/c\
-/* BEGIN __txn_begin_1_proc */\
-void\
-__txn_begin_1_proc(envpcl_id, parentcl_id,\
-\ \ flags, replyp)\
-\ long envpcl_id;\
-\ long parentcl_id;\
-\ u_int32_t flags;\
-\ __txn_begin_reply *replyp;\
-/* END __txn_begin_1_proc */
-/^\/\* BEGIN __txn_commit_1_proc/,/^\/\* END __txn_commit_1_proc/c\
-/* BEGIN __txn_commit_1_proc */\
-void\
-__txn_commit_1_proc(txnpcl_id, flags, replyp)\
-\ long txnpcl_id;\
-\ u_int32_t flags;\
-\ __txn_commit_reply *replyp;\
-/* END __txn_commit_1_proc */
-/^\/\* BEGIN __db_bt_maxkey_1_proc/,/^\/\* END __db_bt_maxkey_1_proc/c\
-/* BEGIN __db_bt_maxkey_1_proc */\
-void\
-__db_bt_maxkey_1_proc(dbpcl_id, maxkey, replyp)\
-\ long dbpcl_id;\
-\ u_int32_t maxkey;\
-\ __db_bt_maxkey_reply *replyp;\
-/* END __db_bt_maxkey_1_proc */
-/^\/\* BEGIN __db_bt_minkey_1_proc/,/^\/\* END __db_bt_minkey_1_proc/c\
-/* BEGIN __db_bt_minkey_1_proc */\
-void\
-__db_bt_minkey_1_proc(dbpcl_id, minkey, replyp)\
-\ long dbpcl_id;\
-\ u_int32_t minkey;\
-\ __db_bt_minkey_reply *replyp;\
-/* END __db_bt_minkey_1_proc */
-/^\/\* BEGIN __db_close_1_proc/,/^\/\* END __db_close_1_proc/c\
-/* BEGIN __db_close_1_proc */\
-void\
-__db_close_1_proc(dbpcl_id, flags, replyp)\
-\ long dbpcl_id;\
-\ u_int32_t flags;\
-\ __db_close_reply *replyp;\
-/* END __db_close_1_proc */
-/^\/\* BEGIN __db_create_1_proc/,/^\/\* END __db_create_1_proc/c\
-/* BEGIN __db_create_1_proc */\
-void\
-__db_create_1_proc(flags, envpcl_id, replyp)\
-\ u_int32_t flags;\
-\ long envpcl_id;\
-\ __db_create_reply *replyp;\
-/* END __db_create_1_proc */
-/^\/\* BEGIN __db_del_1_proc/,/^\/\* END __db_del_1_proc/c\
-/* BEGIN __db_del_1_proc */\
-void\
-__db_del_1_proc(dbpcl_id, txnpcl_id, keydlen,\
-\ \ keydoff, keyflags, keydata, keysize,\
-\ \ flags, replyp)\
-\ long dbpcl_id;\
-\ long txnpcl_id;\
-\ u_int32_t keydlen;\
-\ u_int32_t keydoff;\
-\ u_int32_t keyflags;\
-\ void *keydata;\
-\ u_int32_t keysize;\
-\ u_int32_t flags;\
-\ __db_del_reply *replyp;\
-/* END __db_del_1_proc */
-/^\/\* BEGIN __db_extentsize_1_proc/,/^\/\* END __db_extentsize_1_proc/c\
-/* BEGIN __db_extentsize_1_proc */\
-void\
-__db_extentsize_1_proc(dbpcl_id, extentsize, replyp)\
-\ long dbpcl_id;\
-\ u_int32_t extentsize;\
-\ __db_extentsize_reply *replyp;\
-/* END __db_extentsize_1_proc */
-/^\/\* BEGIN __db_flags_1_proc/,/^\/\* END __db_flags_1_proc/c\
-/* BEGIN __db_flags_1_proc */\
-void\
-__db_flags_1_proc(dbpcl_id, flags, replyp)\
-\ long dbpcl_id;\
-\ u_int32_t flags;\
-\ __db_flags_reply *replyp;\
-/* END __db_flags_1_proc */
-/^\/\* BEGIN __db_get_1_proc/,/^\/\* END __db_get_1_proc/c\
-/* BEGIN __db_get_1_proc */\
-void\
-__db_get_1_proc(dbpcl_id, txnpcl_id, keydlen,\
-\ \ keydoff, keyflags, keydata, keysize,\
-\ \ datadlen, datadoff, dataflags, datadata,\
-\ \ datasize, flags, replyp, freep)\
-\ long dbpcl_id;\
-\ long txnpcl_id;\
-\ u_int32_t keydlen;\
-\ u_int32_t keydoff;\
-\ u_int32_t keyflags;\
-\ void *keydata;\
-\ u_int32_t keysize;\
-\ u_int32_t datadlen;\
-\ u_int32_t datadoff;\
-\ u_int32_t dataflags;\
-\ void *datadata;\
-\ u_int32_t datasize;\
-\ u_int32_t flags;\
-\ __db_get_reply *replyp;\
-\ int * freep;\
-/* END __db_get_1_proc */
-/^\/\* BEGIN __db_h_ffactor_1_proc/,/^\/\* END __db_h_ffactor_1_proc/c\
-/* BEGIN __db_h_ffactor_1_proc */\
-void\
-__db_h_ffactor_1_proc(dbpcl_id, ffactor, replyp)\
-\ long dbpcl_id;\
-\ u_int32_t ffactor;\
-\ __db_h_ffactor_reply *replyp;\
-/* END __db_h_ffactor_1_proc */
-/^\/\* BEGIN __db_h_nelem_1_proc/,/^\/\* END __db_h_nelem_1_proc/c\
-/* BEGIN __db_h_nelem_1_proc */\
-void\
-__db_h_nelem_1_proc(dbpcl_id, nelem, replyp)\
-\ long dbpcl_id;\
-\ u_int32_t nelem;\
-\ __db_h_nelem_reply *replyp;\
-/* END __db_h_nelem_1_proc */
-/^\/\* BEGIN __db_key_range_1_proc/,/^\/\* END __db_key_range_1_proc/c\
-/* BEGIN __db_key_range_1_proc */\
-void\
-__db_key_range_1_proc(dbpcl_id, txnpcl_id, keydlen,\
-\ \ keydoff, keyflags, keydata, keysize,\
-\ \ flags, replyp)\
-\ long dbpcl_id;\
-\ long txnpcl_id;\
-\ u_int32_t keydlen;\
-\ u_int32_t keydoff;\
-\ u_int32_t keyflags;\
-\ void *keydata;\
-\ u_int32_t keysize;\
-\ u_int32_t flags;\
-\ __db_key_range_reply *replyp;\
-/* END __db_key_range_1_proc */
-/^\/\* BEGIN __db_lorder_1_proc/,/^\/\* END __db_lorder_1_proc/c\
-/* BEGIN __db_lorder_1_proc */\
-void\
-__db_lorder_1_proc(dbpcl_id, lorder, replyp)\
-\ long dbpcl_id;\
-\ u_int32_t lorder;\
-\ __db_lorder_reply *replyp;\
-/* END __db_lorder_1_proc */
-/^\/\* BEGIN __db_open_1_proc/,/^\/\* END __db_open_1_proc/c\
-/* BEGIN __db_open_1_proc */\
-void\
-__db_open_1_proc(dbpcl_id, name, subdb,\
-\ \ type, flags, mode, replyp)\
-\ long dbpcl_id;\
-\ char *name;\
-\ char *subdb;\
-\ u_int32_t type;\
-\ u_int32_t flags;\
-\ u_int32_t mode;\
-\ __db_open_reply *replyp;\
-/* END __db_open_1_proc */
-/^\/\* BEGIN __db_pagesize_1_proc/,/^\/\* END __db_pagesize_1_proc/c\
-/* BEGIN __db_pagesize_1_proc */\
-void\
-__db_pagesize_1_proc(dbpcl_id, pagesize, replyp)\
-\ long dbpcl_id;\
-\ u_int32_t pagesize;\
-\ __db_pagesize_reply *replyp;\
-/* END __db_pagesize_1_proc */
-/^\/\* BEGIN __db_put_1_proc/,/^\/\* END __db_put_1_proc/c\
-/* BEGIN __db_put_1_proc */\
-void\
-__db_put_1_proc(dbpcl_id, txnpcl_id, keydlen,\
-\ \ keydoff, keyflags, keydata, keysize,\
-\ \ datadlen, datadoff, dataflags, datadata,\
-\ \ datasize, flags, replyp, freep)\
-\ long dbpcl_id;\
-\ long txnpcl_id;\
-\ u_int32_t keydlen;\
-\ u_int32_t keydoff;\
-\ u_int32_t keyflags;\
-\ void *keydata;\
-\ u_int32_t keysize;\
-\ u_int32_t datadlen;\
-\ u_int32_t datadoff;\
-\ u_int32_t dataflags;\
-\ void *datadata;\
-\ u_int32_t datasize;\
-\ u_int32_t flags;\
-\ __db_put_reply *replyp;\
-\ int * freep;\
-/* END __db_put_1_proc */
-/^\/\* BEGIN __db_re_delim_1_proc/,/^\/\* END __db_re_delim_1_proc/c\
-/* BEGIN __db_re_delim_1_proc */\
-void\
-__db_re_delim_1_proc(dbpcl_id, delim, replyp)\
-\ long dbpcl_id;\
-\ u_int32_t delim;\
-\ __db_re_delim_reply *replyp;\
-/* END __db_re_delim_1_proc */
-/^\/\* BEGIN __db_re_len_1_proc/,/^\/\* END __db_re_len_1_proc/c\
-/* BEGIN __db_re_len_1_proc */\
-void\
-__db_re_len_1_proc(dbpcl_id, len, replyp)\
-\ long dbpcl_id;\
-\ u_int32_t len;\
-\ __db_re_len_reply *replyp;\
-/* END __db_re_len_1_proc */
-/^\/\* BEGIN __db_re_pad_1_proc/,/^\/\* END __db_re_pad_1_proc/c\
-/* BEGIN __db_re_pad_1_proc */\
-void\
-__db_re_pad_1_proc(dbpcl_id, pad, replyp)\
-\ long dbpcl_id;\
-\ u_int32_t pad;\
-\ __db_re_pad_reply *replyp;\
-/* END __db_re_pad_1_proc */
-/^\/\* BEGIN __db_remove_1_proc/,/^\/\* END __db_remove_1_proc/c\
-/* BEGIN __db_remove_1_proc */\
-void\
-__db_remove_1_proc(dbpcl_id, name, subdb,\
-\ \ flags, replyp)\
-\ long dbpcl_id;\
-\ char *name;\
-\ char *subdb;\
-\ u_int32_t flags;\
-\ __db_remove_reply *replyp;\
-/* END __db_remove_1_proc */
-/^\/\* BEGIN __db_rename_1_proc/,/^\/\* END __db_rename_1_proc/c\
-/* BEGIN __db_rename_1_proc */\
-void\
-__db_rename_1_proc(dbpcl_id, name, subdb,\
-\ \ newname, flags, replyp)\
-\ long dbpcl_id;\
-\ char *name;\
-\ char *subdb;\
-\ char *newname;\
-\ u_int32_t flags;\
-\ __db_rename_reply *replyp;\
-/* END __db_rename_1_proc */
-/^\/\* BEGIN __db_stat_1_proc/,/^\/\* END __db_stat_1_proc/c\
-/* BEGIN __db_stat_1_proc */\
-void\
-__db_stat_1_proc(dbpcl_id,\
-\ \ flags, replyp, freep)\
-\ long dbpcl_id;\
-\ u_int32_t flags;\
-\ __db_stat_reply *replyp;\
-\ int * freep;\
-/* END __db_stat_1_proc */
-/^\/\* BEGIN __db_swapped_1_proc/,/^\/\* END __db_swapped_1_proc/c\
-/* BEGIN __db_swapped_1_proc */\
-void\
-__db_swapped_1_proc(dbpcl_id, replyp)\
-\ long dbpcl_id;\
-\ __db_swapped_reply *replyp;\
-/* END __db_swapped_1_proc */
-/^\/\* BEGIN __db_sync_1_proc/,/^\/\* END __db_sync_1_proc/c\
-/* BEGIN __db_sync_1_proc */\
-void\
-__db_sync_1_proc(dbpcl_id, flags, replyp)\
-\ long dbpcl_id;\
-\ u_int32_t flags;\
-\ __db_sync_reply *replyp;\
-/* END __db_sync_1_proc */
-/^\/\* BEGIN __db_cursor_1_proc/,/^\/\* END __db_cursor_1_proc/c\
-/* BEGIN __db_cursor_1_proc */\
-void\
-__db_cursor_1_proc(dbpcl_id, txnpcl_id,\
-\ \ flags, replyp)\
-\ long dbpcl_id;\
-\ long txnpcl_id;\
-\ u_int32_t flags;\
-\ __db_cursor_reply *replyp;\
-/* END __db_cursor_1_proc */
-/^\/\* BEGIN __db_join_1_proc/,/^\/\* END __db_join_1_proc/c\
-/* BEGIN __db_join_1_proc */\
-void\
-__db_join_1_proc(dbpcl_id, curslist,\
-\ \ flags, replyp)\
-\ long dbpcl_id;\
-\ u_int32_t * curslist;\
-\ u_int32_t flags;\
-\ __db_join_reply *replyp;\
-/* END __db_join_1_proc */
-/^\/\* BEGIN __dbc_close_1_proc/,/^\/\* END __dbc_close_1_proc/c\
-/* BEGIN __dbc_close_1_proc */\
-void\
-__dbc_close_1_proc(dbccl_id, replyp)\
-\ long dbccl_id;\
-\ __dbc_close_reply *replyp;\
-/* END __dbc_close_1_proc */
-/^\/\* BEGIN __dbc_count_1_proc/,/^\/\* END __dbc_count_1_proc/c\
-/* BEGIN __dbc_count_1_proc */\
-void\
-__dbc_count_1_proc(dbccl_id, flags, replyp)\
-\ long dbccl_id;\
-\ u_int32_t flags;\
-\ __dbc_count_reply *replyp;\
-/* END __dbc_count_1_proc */
-/^\/\* BEGIN __dbc_del_1_proc/,/^\/\* END __dbc_del_1_proc/c\
-/* BEGIN __dbc_del_1_proc */\
-void\
-__dbc_del_1_proc(dbccl_id, flags, replyp)\
-\ long dbccl_id;\
-\ u_int32_t flags;\
-\ __dbc_del_reply *replyp;\
-/* END __dbc_del_1_proc */
-/^\/\* BEGIN __dbc_dup_1_proc/,/^\/\* END __dbc_dup_1_proc/c\
-/* BEGIN __dbc_dup_1_proc */\
-void\
-__dbc_dup_1_proc(dbccl_id, flags, replyp)\
-\ long dbccl_id;\
-\ u_int32_t flags;\
-\ __dbc_dup_reply *replyp;\
-/* END __dbc_dup_1_proc */
-/^\/\* BEGIN __dbc_get_1_proc/,/^\/\* END __dbc_get_1_proc/c\
-/* BEGIN __dbc_get_1_proc */\
-void\
-__dbc_get_1_proc(dbccl_id, keydlen, keydoff,\
-\ \ keyflags, keydata, keysize, datadlen,\
-\ \ datadoff, dataflags, datadata, datasize,\
-\ \ flags, replyp, freep)\
-\ long dbccl_id;\
-\ u_int32_t keydlen;\
-\ u_int32_t keydoff;\
-\ u_int32_t keyflags;\
-\ void *keydata;\
-\ u_int32_t keysize;\
-\ u_int32_t datadlen;\
-\ u_int32_t datadoff;\
-\ u_int32_t dataflags;\
-\ void *datadata;\
-\ u_int32_t datasize;\
-\ u_int32_t flags;\
-\ __dbc_get_reply *replyp;\
-\ int * freep;\
-/* END __dbc_get_1_proc */
-/^\/\* BEGIN __dbc_put_1_proc/,/^\/\* END __dbc_put_1_proc/c\
-/* BEGIN __dbc_put_1_proc */\
-void\
-__dbc_put_1_proc(dbccl_id, keydlen, keydoff,\
-\ \ keyflags, keydata, keysize, datadlen,\
-\ \ datadoff, dataflags, datadata, datasize,\
-\ \ flags, replyp, freep)\
-\ long dbccl_id;\
-\ u_int32_t keydlen;\
-\ u_int32_t keydoff;\
-\ u_int32_t keyflags;\
-\ void *keydata;\
-\ u_int32_t keysize;\
-\ u_int32_t datadlen;\
-\ u_int32_t datadoff;\
-\ u_int32_t dataflags;\
-\ void *datadata;\
-\ u_int32_t datasize;\
-\ u_int32_t flags;\
-\ __dbc_put_reply *replyp;\
-\ int * freep;\
-/* END __dbc_put_1_proc */
diff --git a/db/rpc_server/db_server_svc.c b/db/rpc_server/db_server_svc.c
deleted file mode 100644
index 96d8a4a5d..000000000
--- a/db/rpc_server/db_server_svc.c
+++ /dev/null
@@ -1,359 +0,0 @@
-#include "db_config.h"
-#ifdef HAVE_RPC
-/*
- * Please do not edit this file.
- * It was generated using rpcgen.
- */
-
-#include "db_server.h"
-#include <stdio.h>
-#include <stdlib.h> /* getenv, exit */
-#include <memory.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-extern void __dbsrv_timeout();
-
-#ifdef DEBUG
-#define RPC_SVC_FG
-#endif
-
-static void
-db_serverprog_1(rqstp, transp)
- struct svc_req *rqstp;
- register SVCXPRT *transp;
-{
- union {
- __env_cachesize_msg __db_env_cachesize_1_arg;
- __env_close_msg __db_env_close_1_arg;
- __env_create_msg __db_env_create_1_arg;
- __env_flags_msg __db_env_flags_1_arg;
- __env_open_msg __db_env_open_1_arg;
- __env_remove_msg __db_env_remove_1_arg;
- __txn_abort_msg __db_txn_abort_1_arg;
- __txn_begin_msg __db_txn_begin_1_arg;
- __txn_commit_msg __db_txn_commit_1_arg;
- __db_bt_maxkey_msg __db_db_bt_maxkey_1_arg;
- __db_bt_minkey_msg __db_db_bt_minkey_1_arg;
- __db_close_msg __db_db_close_1_arg;
- __db_create_msg __db_db_create_1_arg;
- __db_del_msg __db_db_del_1_arg;
- __db_extentsize_msg __db_db_extentsize_1_arg;
- __db_flags_msg __db_db_flags_1_arg;
- __db_get_msg __db_db_get_1_arg;
- __db_h_ffactor_msg __db_db_h_ffactor_1_arg;
- __db_h_nelem_msg __db_db_h_nelem_1_arg;
- __db_key_range_msg __db_db_key_range_1_arg;
- __db_lorder_msg __db_db_lorder_1_arg;
- __db_open_msg __db_db_open_1_arg;
- __db_pagesize_msg __db_db_pagesize_1_arg;
- __db_put_msg __db_db_put_1_arg;
- __db_re_delim_msg __db_db_re_delim_1_arg;
- __db_re_len_msg __db_db_re_len_1_arg;
- __db_re_pad_msg __db_db_re_pad_1_arg;
- __db_remove_msg __db_db_remove_1_arg;
- __db_rename_msg __db_db_rename_1_arg;
- __db_stat_msg __db_db_stat_1_arg;
- __db_swapped_msg __db_db_swapped_1_arg;
- __db_sync_msg __db_db_sync_1_arg;
- __db_cursor_msg __db_db_cursor_1_arg;
- __db_join_msg __db_db_join_1_arg;
- __dbc_close_msg __db_dbc_close_1_arg;
- __dbc_count_msg __db_dbc_count_1_arg;
- __dbc_del_msg __db_dbc_del_1_arg;
- __dbc_dup_msg __db_dbc_dup_1_arg;
- __dbc_get_msg __db_dbc_get_1_arg;
- __dbc_put_msg __db_dbc_put_1_arg;
- } argument;
- char *result;
- bool_t (*xdr_argument)(), (*xdr_result)();
- char *(*local)();
-
- switch (rqstp->rq_proc) {
- case NULLPROC:
- (void) svc_sendreply(transp, xdr_void,
- (char *)NULL);
- return;
-
- case __DB_env_cachesize:
- xdr_argument = xdr___env_cachesize_msg;
- xdr_result = xdr___env_cachesize_reply;
- local = (char *(*)()) __db_env_cachesize_1;
- break;
-
- case __DB_env_close:
- xdr_argument = xdr___env_close_msg;
- xdr_result = xdr___env_close_reply;
- local = (char *(*)()) __db_env_close_1;
- break;
-
- case __DB_env_create:
- xdr_argument = xdr___env_create_msg;
- xdr_result = xdr___env_create_reply;
- local = (char *(*)()) __db_env_create_1;
- break;
-
- case __DB_env_flags:
- xdr_argument = xdr___env_flags_msg;
- xdr_result = xdr___env_flags_reply;
- local = (char *(*)()) __db_env_flags_1;
- break;
-
- case __DB_env_open:
- xdr_argument = xdr___env_open_msg;
- xdr_result = xdr___env_open_reply;
- local = (char *(*)()) __db_env_open_1;
- break;
-
- case __DB_env_remove:
- xdr_argument = xdr___env_remove_msg;
- xdr_result = xdr___env_remove_reply;
- local = (char *(*)()) __db_env_remove_1;
- break;
-
- case __DB_txn_abort:
- xdr_argument = xdr___txn_abort_msg;
- xdr_result = xdr___txn_abort_reply;
- local = (char *(*)()) __db_txn_abort_1;
- break;
-
- case __DB_txn_begin:
- xdr_argument = xdr___txn_begin_msg;
- xdr_result = xdr___txn_begin_reply;
- local = (char *(*)()) __db_txn_begin_1;
- break;
-
- case __DB_txn_commit:
- xdr_argument = xdr___txn_commit_msg;
- xdr_result = xdr___txn_commit_reply;
- local = (char *(*)()) __db_txn_commit_1;
- break;
-
- case __DB_db_bt_maxkey:
- xdr_argument = xdr___db_bt_maxkey_msg;
- xdr_result = xdr___db_bt_maxkey_reply;
- local = (char *(*)()) __db_db_bt_maxkey_1;
- break;
-
- case __DB_db_bt_minkey:
- xdr_argument = xdr___db_bt_minkey_msg;
- xdr_result = xdr___db_bt_minkey_reply;
- local = (char *(*)()) __db_db_bt_minkey_1;
- break;
-
- case __DB_db_close:
- xdr_argument = xdr___db_close_msg;
- xdr_result = xdr___db_close_reply;
- local = (char *(*)()) __db_db_close_1;
- break;
-
- case __DB_db_create:
- xdr_argument = xdr___db_create_msg;
- xdr_result = xdr___db_create_reply;
- local = (char *(*)()) __db_db_create_1;
- break;
-
- case __DB_db_del:
- xdr_argument = xdr___db_del_msg;
- xdr_result = xdr___db_del_reply;
- local = (char *(*)()) __db_db_del_1;
- break;
-
- case __DB_db_extentsize:
- xdr_argument = xdr___db_extentsize_msg;
- xdr_result = xdr___db_extentsize_reply;
- local = (char *(*)()) __db_db_extentsize_1;
- break;
-
- case __DB_db_flags:
- xdr_argument = xdr___db_flags_msg;
- xdr_result = xdr___db_flags_reply;
- local = (char *(*)()) __db_db_flags_1;
- break;
-
- case __DB_db_get:
- xdr_argument = xdr___db_get_msg;
- xdr_result = xdr___db_get_reply;
- local = (char *(*)()) __db_db_get_1;
- break;
-
- case __DB_db_h_ffactor:
- xdr_argument = xdr___db_h_ffactor_msg;
- xdr_result = xdr___db_h_ffactor_reply;
- local = (char *(*)()) __db_db_h_ffactor_1;
- break;
-
- case __DB_db_h_nelem:
- xdr_argument = xdr___db_h_nelem_msg;
- xdr_result = xdr___db_h_nelem_reply;
- local = (char *(*)()) __db_db_h_nelem_1;
- break;
-
- case __DB_db_key_range:
- xdr_argument = xdr___db_key_range_msg;
- xdr_result = xdr___db_key_range_reply;
- local = (char *(*)()) __db_db_key_range_1;
- break;
-
- case __DB_db_lorder:
- xdr_argument = xdr___db_lorder_msg;
- xdr_result = xdr___db_lorder_reply;
- local = (char *(*)()) __db_db_lorder_1;
- break;
-
- case __DB_db_open:
- xdr_argument = xdr___db_open_msg;
- xdr_result = xdr___db_open_reply;
- local = (char *(*)()) __db_db_open_1;
- break;
-
- case __DB_db_pagesize:
- xdr_argument = xdr___db_pagesize_msg;
- xdr_result = xdr___db_pagesize_reply;
- local = (char *(*)()) __db_db_pagesize_1;
- break;
-
- case __DB_db_put:
- xdr_argument = xdr___db_put_msg;
- xdr_result = xdr___db_put_reply;
- local = (char *(*)()) __db_db_put_1;
- break;
-
- case __DB_db_re_delim:
- xdr_argument = xdr___db_re_delim_msg;
- xdr_result = xdr___db_re_delim_reply;
- local = (char *(*)()) __db_db_re_delim_1;
- break;
-
- case __DB_db_re_len:
- xdr_argument = xdr___db_re_len_msg;
- xdr_result = xdr___db_re_len_reply;
- local = (char *(*)()) __db_db_re_len_1;
- break;
-
- case __DB_db_re_pad:
- xdr_argument = xdr___db_re_pad_msg;
- xdr_result = xdr___db_re_pad_reply;
- local = (char *(*)()) __db_db_re_pad_1;
- break;
-
- case __DB_db_remove:
- xdr_argument = xdr___db_remove_msg;
- xdr_result = xdr___db_remove_reply;
- local = (char *(*)()) __db_db_remove_1;
- break;
-
- case __DB_db_rename:
- xdr_argument = xdr___db_rename_msg;
- xdr_result = xdr___db_rename_reply;
- local = (char *(*)()) __db_db_rename_1;
- break;
-
- case __DB_db_stat:
- xdr_argument = xdr___db_stat_msg;
- xdr_result = xdr___db_stat_reply;
- local = (char *(*)()) __db_db_stat_1;
- break;
-
- case __DB_db_swapped:
- xdr_argument = xdr___db_swapped_msg;
- xdr_result = xdr___db_swapped_reply;
- local = (char *(*)()) __db_db_swapped_1;
- break;
-
- case __DB_db_sync:
- xdr_argument = xdr___db_sync_msg;
- xdr_result = xdr___db_sync_reply;
- local = (char *(*)()) __db_db_sync_1;
- break;
-
- case __DB_db_cursor:
- xdr_argument = xdr___db_cursor_msg;
- xdr_result = xdr___db_cursor_reply;
- local = (char *(*)()) __db_db_cursor_1;
- break;
-
- case __DB_db_join:
- xdr_argument = xdr___db_join_msg;
- xdr_result = xdr___db_join_reply;
- local = (char *(*)()) __db_db_join_1;
- break;
-
- case __DB_dbc_close:
- xdr_argument = xdr___dbc_close_msg;
- xdr_result = xdr___dbc_close_reply;
- local = (char *(*)()) __db_dbc_close_1;
- break;
-
- case __DB_dbc_count:
- xdr_argument = xdr___dbc_count_msg;
- xdr_result = xdr___dbc_count_reply;
- local = (char *(*)()) __db_dbc_count_1;
- break;
-
- case __DB_dbc_del:
- xdr_argument = xdr___dbc_del_msg;
- xdr_result = xdr___dbc_del_reply;
- local = (char *(*)()) __db_dbc_del_1;
- break;
-
- case __DB_dbc_dup:
- xdr_argument = xdr___dbc_dup_msg;
- xdr_result = xdr___dbc_dup_reply;
- local = (char *(*)()) __db_dbc_dup_1;
- break;
-
- case __DB_dbc_get:
- xdr_argument = xdr___dbc_get_msg;
- xdr_result = xdr___dbc_get_reply;
- local = (char *(*)()) __db_dbc_get_1;
- break;
-
- case __DB_dbc_put:
- xdr_argument = xdr___dbc_put_msg;
- xdr_result = xdr___dbc_put_reply;
- local = (char *(*)()) __db_dbc_put_1;
- break;
-
- default:
- svcerr_noproc(transp);
- return;
- }
- (void) memset((char *)&argument, 0, sizeof (argument));
- if (!svc_getargs(transp, xdr_argument, &argument)) {
- svcerr_decode(transp);
- return;
- }
- result = (*local)(&argument, rqstp);
- if (result != NULL && !svc_sendreply(transp, xdr_result, result)) {
- svcerr_systemerr(transp);
- }
- if (!svc_freeargs(transp, xdr_argument, &argument)) {
- fprintf(stderr, "unable to free arguments");
- exit(1);
- }
- __dbsrv_timeout(0);
- return;
-}
-
-void __dbsrv_main()
-{
- register SVCXPRT *transp;
-
- (void) pmap_unset(DB_SERVERPROG, DB_SERVERVERS);
-
- transp = svctcp_create(RPC_ANYSOCK, 0, 0);
- if (transp == NULL) {
- fprintf(stderr, "cannot create tcp service.");
- exit(1);
- }
- if (!svc_register(transp, DB_SERVERPROG, DB_SERVERVERS, db_serverprog_1, IPPROTO_TCP)) {
- fprintf(stderr, "unable to register (DB_SERVERPROG, DB_SERVERVERS, tcp).");
- exit(1);
- }
-
- svc_run();
- fprintf(stderr, "svc_run returned");
- exit(1);
- /* NOTREACHED */
-}
-#endif /* HAVE_RPC */
diff --git a/db/rpc_server/db_server_svc.sed b/db/rpc_server/db_server_svc.sed
deleted file mode 100644
index 9d540e51a..000000000
--- a/db/rpc_server/db_server_svc.sed
+++ /dev/null
@@ -1,5 +0,0 @@
-/^#include <netinet.in.h>/a\
-\extern void __dbsrv_timeout();
-/^ return;/i\
-\ __dbsrv_timeout(0);
-s/^main/void __dbsrv_main/
diff --git a/db/rpc_server/db_server_util.c b/db/rpc_server/db_server_util.c
deleted file mode 100644
index 862bbd05e..000000000
--- a/db/rpc_server/db_server_util.c
+++ /dev/null
@@ -1,612 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2000
- * Sleepycat Software. All rights reserved.
- */
-
-#include "db_config.h"
-
-#ifndef lint
-static const char revid[] = "$Id: db_server_util.c,v 1.32 2001/01/18 18:36:59 bostic Exp $";
-#endif /* not lint */
-
-#ifndef NO_SYSTEM_INCLUDES
-#include <sys/types.h>
-
-#if TIME_WITH_SYS_TIME
-#include <sys/time.h>
-#include <time.h>
-#else
-#if HAVE_SYS_TIME_H
-#include <sys/time.h>
-#else
-#include <time.h>
-#endif
-#endif
-
-#include <rpc/rpc.h>
-
-#include <limits.h>
-#include <signal.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#endif
-#include "db_server.h"
-
-#include "db_int.h"
-#include "clib_ext.h"
-#include "db_server_int.h"
-#include "rpc_server_ext.h"
-#include "common_ext.h"
-
-extern int __dbsrv_main __P((void));
-static int add_home __P((char *));
-static int env_recover __P((char *));
-static void __dbclear_child __P((ct_entry *));
-
-static LIST_HEAD(cthead, ct_entry) __dbsrv_head;
-static LIST_HEAD(homehead, home_entry) __dbsrv_home;
-static long __dbsrv_defto = DB_SERVER_TIMEOUT;
-static long __dbsrv_maxto = DB_SERVER_MAXTIMEOUT;
-static long __dbsrv_idleto = DB_SERVER_IDLETIMEOUT;
-static char *logfile = NULL;
-static char *prog;
-
-static void usage __P((char *));
-static void version_check __P((void));
-
-int __dbsrv_verbose = 0;
-
-int
-main(argc, argv)
- int argc;
- char **argv;
-{
- extern char *optarg;
- extern int optind;
- CLIENT *cl;
- int ch, ret;
-
- prog = argv[0];
-
- version_check();
-
- /*
- * Check whether another server is running or not. There
- * is a race condition where two servers could be racing to
- * register with the portmapper. The goal of this check is to
- * forbid running additional servers (like those started from
- * the test suite) if the user is already running one.
- *
- * XXX
- * This does not solve nor prevent two servers from being
- * started at the same time and running recovery at the same
- * time on the same environments.
- */
- if ((cl = clnt_create("localhost",
- DB_SERVERPROG, DB_SERVERVERS, "tcp")) != NULL) {
- fprintf(stderr,
- "%s: Berkeley DB RPC server already running.\n", prog);
- clnt_destroy(cl);
- exit(1);
- }
-
- LIST_INIT(&__dbsrv_home);
- while ((ch = getopt(argc, argv, "h:I:L:t:T:Vv")) != EOF)
- switch (ch) {
- case 'h':
- (void)add_home(optarg);
- break;
- case 'I':
- (void)__db_getlong(NULL, prog, optarg, 1,
- LONG_MAX, &__dbsrv_idleto);
- break;
- case 'L':
- logfile = optarg;
- break;
- case 't':
- (void)__db_getlong(NULL, prog, optarg, 1,
- LONG_MAX, &__dbsrv_defto);
- break;
- case 'T':
- (void)__db_getlong(NULL, prog, optarg, 1,
- LONG_MAX, &__dbsrv_maxto);
- break;
- case 'V':
- printf("%s\n", db_version(NULL, NULL, NULL));
- exit(0);
- case 'v':
- __dbsrv_verbose = 1;
- break;
- default:
- usage(prog);
- }
- /*
- * Check default timeout against maximum timeout
- */
- if (__dbsrv_defto > __dbsrv_maxto)
- __dbsrv_defto = __dbsrv_maxto;
-
- /*
- * Check default timeout against idle timeout
- * It would be bad to timeout environments sooner than txns.
- */
- if (__dbsrv_defto > __dbsrv_idleto)
-printf("%s: WARNING: Idle timeout %ld is less than resource timeout %ld\n",
- prog, __dbsrv_idleto, __dbsrv_defto);
-
- LIST_INIT(&__dbsrv_head);
-
- /*
- * If a client crashes during an RPC, our reply to it
- * generates a SIGPIPE. Ignore SIGPIPE so we don't exit unnecessarily.
- */
-#ifdef SIGPIPE
- signal(SIGPIPE, SIG_IGN);
-#endif
-
- if (logfile != NULL && __db_util_logset("berkeley_db_svc", logfile))
- exit(1);
-
- /*
- * Now that we are ready to start, run recovery on all the
- * environments specified.
- */
- if ((ret = env_recover(prog)) != 0)
- exit(1);
-
- /*
- * We've done our setup, now call the generated server loop
- */
- if (__dbsrv_verbose)
- printf("%s: Ready to receive requests\n", prog);
- __dbsrv_main();
-
- /* NOTREACHED */
- abort();
-}
-
-static void
-usage(prog)
- char *prog;
-{
- fprintf(stderr, "usage: %s %s\n\t%s\n", prog,
- "[-Vv] [-h home]",
- "[-I idletimeout] [-L logfile] [-t def_timeout] [-T maxtimeout]");
- exit(1);
-}
-
-static void
-version_check()
-{
- int v_major, v_minor, v_patch;
-
- /* Make sure we're loaded with the right version of the DB library. */
- (void)db_version(&v_major, &v_minor, &v_patch);
- if (v_major != DB_VERSION_MAJOR ||
- v_minor != DB_VERSION_MINOR || v_patch != DB_VERSION_PATCH) {
- fprintf(stderr,
- "%s: version %d.%d.%d doesn't match library version %d.%d.%d\n",
- prog, DB_VERSION_MAJOR, DB_VERSION_MINOR,
- DB_VERSION_PATCH, v_major, v_minor, v_patch);
- exit (1);
- }
-}
-
-/*
- * PUBLIC: void __dbsrv_settimeout __P((ct_entry *, u_int32_t));
- */
-void
-__dbsrv_settimeout(ctp, to)
- ct_entry *ctp;
- u_int32_t to;
-{
- if (to > (u_int32_t)__dbsrv_maxto)
- ctp->ct_timeout = __dbsrv_maxto;
- else if (to <= 0)
- ctp->ct_timeout = __dbsrv_defto;
- else
- ctp->ct_timeout = to;
-}
-
-/*
- * PUBLIC: void __dbsrv_timeout __P((int));
- */
-void
-__dbsrv_timeout(force)
- int force;
-{
- static long to_hint = -1;
- DBC *dbcp;
- time_t t;
- long to;
- ct_entry *ctp, *nextctp;
-
- if ((t = time(NULL)) == -1)
- return;
-
- /*
- * Check hint. If hint is further in the future
- * than now, no work to do.
- */
- if (!force && to_hint > 0 && t < to_hint)
- return;
- to_hint = -1;
- /*
- * Timeout transactions or cursors holding DB resources.
- * Do this before timing out envs to properly release resources.
- *
- * !!!
- * We can just loop through this list looking for cursors and txns.
- * We do not need to verify txn and cursor relationships at this
- * point because we maintain the list in LIFO order *and* we
- * maintain activity in the ultimate txn parent of any cursor
- * so either everything in a txn is timing out, or nothing.
- * So, since we are LIFO, we will correctly close/abort all the
- * appropriate handles, in the correct order.
- */
- for (ctp = LIST_FIRST(&__dbsrv_head); ctp != NULL; ctp = nextctp) {
- nextctp = LIST_NEXT(ctp, entries);
- switch (ctp->ct_type) {
- case CT_TXN:
- to = *(ctp->ct_activep) + ctp->ct_timeout;
- /* TIMEOUT */
- if (to < t) {
- if (__dbsrv_verbose)
- printf("Timing out txn id %ld\n",
- ctp->ct_id);
- (void)txn_abort((DB_TXN *)ctp->ct_anyp);
- __dbdel_ctp(ctp);
- /*
- * If we timed out an txn, we may have closed
- * all sorts of ctp's.
- * So start over with a guaranteed good ctp.
- */
- nextctp = LIST_FIRST(&__dbsrv_head);
- } else if ((to_hint > 0 && to_hint > to) ||
- to_hint == -1)
- to_hint = to;
- break;
- case CT_CURSOR:
- case (CT_JOINCUR | CT_CURSOR):
- to = *(ctp->ct_activep) + ctp->ct_timeout;
- /* TIMEOUT */
- if (to < t) {
- if (__dbsrv_verbose)
- printf("Timing out cursor %ld\n",
- ctp->ct_id);
- dbcp = (DBC *)ctp->ct_anyp;
- (void)__dbc_close_int(ctp);
- /*
- * Start over with a guaranteed good ctp.
- */
- nextctp = LIST_FIRST(&__dbsrv_head);
- } else if ((to_hint > 0 && to_hint > to) ||
- to_hint == -1)
- to_hint = to;
- break;
- default:
- break;
- }
- }
- /*
- * Timeout idle handles.
- * If we are forcing a timeout, we'll close all env handles.
- */
- for (ctp = LIST_FIRST(&__dbsrv_head); ctp != NULL; ctp = nextctp) {
- nextctp = LIST_NEXT(ctp, entries);
- if (ctp->ct_type != CT_ENV)
- continue;
- to = *(ctp->ct_activep) + ctp->ct_idle;
- /* TIMEOUT */
- if (to < t || force) {
- if (__dbsrv_verbose)
- printf("Timing out env id %ld\n", ctp->ct_id);
- (void)__dbenv_close_int(ctp->ct_id, 0);
- /*
- * If we timed out an env, we may have closed
- * all sorts of ctp's (maybe even all of them.
- * So start over with a guaranteed good ctp.
- */
- nextctp = LIST_FIRST(&__dbsrv_head);
- }
- }
-}
-
-/*
- * RECURSIVE FUNCTION. We need to clear/free any number of levels of nested
- * layers.
- */
-static void
-__dbclear_child(parent)
- ct_entry *parent;
-{
- ct_entry *ctp, *nextctp;
-
- for (ctp = LIST_FIRST(&__dbsrv_head); ctp != NULL;
- ctp = nextctp) {
- nextctp = LIST_NEXT(ctp, entries);
- if (ctp->ct_type == 0)
- continue;
- if (ctp->ct_parent == parent) {
- __dbclear_child(ctp);
- /*
- * Need to do this here because le_next may
- * have changed with the recursive call and we
- * don't want to point to a removed entry.
- */
- nextctp = LIST_NEXT(ctp, entries);
- __dbclear_ctp(ctp);
- }
- }
-}
-
-/*
- * PUBLIC: void __dbclear_ctp __P((ct_entry *));
- */
-void
-__dbclear_ctp(ctp)
- ct_entry *ctp;
-{
- LIST_REMOVE(ctp, entries);
- __os_free(ctp, sizeof(ct_entry));
-}
-
-/*
- * PUBLIC: void __dbdel_ctp __P((ct_entry *));
- */
-void
-__dbdel_ctp(parent)
- ct_entry *parent;
-{
- __dbclear_child(parent);
- __dbclear_ctp(parent);
-}
-
-/*
- * PUBLIC: ct_entry *new_ct_ent __P((u_int32_t *));
- */
-ct_entry *
-new_ct_ent(errp)
- u_int32_t *errp;
-{
- time_t t;
- ct_entry *ctp, *octp;
- int ret;
-
- if ((ret = __os_malloc(NULL, sizeof(ct_entry), NULL, &ctp)) != 0) {
- *errp = ret;
- return (NULL);
- }
- /*
- * Get the time as ID. We may service more than one request per
- * second however. If we are, then increment id value until we
- * find an unused one. We insert entries in LRU fashion at the
- * head of the list. So, if the first entry doesn't match, then
- * we know for certain that we can use our entry.
- */
- if ((t = time(NULL)) == -1) {
- *errp = t;
- __os_free(ctp, sizeof(ct_entry));
- return (NULL);
- }
- octp = LIST_FIRST(&__dbsrv_head);
- if (octp != NULL && octp->ct_id >= t)
- t = octp->ct_id + 1;
- ctp->ct_id = t;
- ctp->ct_idle = __dbsrv_idleto;
- ctp->ct_activep = &ctp->ct_active;
- ctp->ct_origp = NULL;
-
- LIST_INSERT_HEAD(&__dbsrv_head, ctp, entries);
- return (ctp);
-}
-
-/*
- * PUBLIC: ct_entry *get_tableent __P((long));
- */
-ct_entry *
-get_tableent(id)
- long id;
-{
- ct_entry *ctp;
-
- for (ctp = LIST_FIRST(&__dbsrv_head); ctp != NULL;
- ctp = LIST_NEXT(ctp, entries))
- if (ctp->ct_id == id)
- return (ctp);
- return (NULL);
-}
-
-/*
- * PUBLIC: void __dbsrv_active __P((ct_entry *));
- */
-void
-__dbsrv_active(ctp)
- ct_entry *ctp;
-{
- time_t t;
- ct_entry *envctp;
-
- if (ctp == NULL)
- return;
- if ((t = time(NULL)) == -1)
- return;
- *(ctp->ct_activep) = t;
- if ((envctp = ctp->ct_envparent) == NULL)
- return;
- *(envctp->ct_activep) = t;
- return;
-}
-
-/*
- * PUBLIC: int __dbc_close_int __P((ct_entry *));
- */
-int
-__dbc_close_int(dbc_ctp)
- ct_entry *dbc_ctp;
-{
- DBC *dbc;
- int ret;
- ct_entry *ctp;
-
- dbc = (DBC *)dbc_ctp->ct_anyp;
-
- ret = dbc->c_close(dbc);
- /*
- * If this cursor is a join cursor then we need to fix up the
- * cursors that it was joined from so that they are independent again.
- */
- if (dbc_ctp->ct_type & CT_JOINCUR)
- for (ctp = LIST_FIRST(&__dbsrv_head); ctp != NULL;
- ctp = LIST_NEXT(ctp, entries)) {
- /*
- * Test if it is a join cursor, and if it is part
- * of this one.
- */
- if ((ctp->ct_type & CT_JOIN) &&
- ctp->ct_activep == &dbc_ctp->ct_active) {
- ctp->ct_type &= ~CT_JOIN;
- ctp->ct_activep = ctp->ct_origp;
- __dbsrv_active(ctp);
- }
- }
- __dbclear_ctp(dbc_ctp);
- return (ret);
-
-}
-
-/*
- * PUBLIC: int __dbenv_close_int __P((long, int));
- */
-int
-__dbenv_close_int(id, flags)
- long id;
- int flags;
-{
- DB_ENV *dbenv;
- int ret;
- ct_entry *ctp;
-
- ctp = get_tableent(id);
- if (ctp == NULL)
- return (DB_NOSERVER_ID);
- DB_ASSERT(ctp->ct_type == CT_ENV);
- dbenv = ctp->ct_envp;
-
- ret = dbenv->close(dbenv, flags);
- __dbdel_ctp(ctp);
- return (ret);
-}
-
-static int
-add_home(home)
- char *home;
-{
- home_entry *hp, *homep;
- int ret;
-
- if ((ret = __os_malloc(NULL, sizeof(home_entry), NULL, &hp)) != 0)
- return (ret);
- if ((ret = __os_malloc(NULL, strlen(home)+1, NULL, &hp->home)) != 0)
- return (ret);
- memcpy(hp->home, home, strlen(home)+1);
- hp->dir = home;
- /*
- * This loop is to remove any trailing path separators,
- * to assure hp->name points to the last component.
- */
- hp->name = __db_rpath(home);
- *(hp->name) = '\0';
- hp->name++;
- while (*(hp->name) == '\0') {
- hp->name = __db_rpath(home);
- *(hp->name) = '\0';
- hp->name++;
- }
- /*
- * Now we have successfully added it. Make sure there are no
- * identical names.
- */
- for (homep = LIST_FIRST(&__dbsrv_home); homep != NULL;
- homep = LIST_NEXT(homep, entries))
- if (strcmp(homep->name, hp->name) == 0) {
- printf("Already added home name %s, at directory %s\n",
- hp->name, homep->dir);
- return (-1);
- }
- LIST_INSERT_HEAD(&__dbsrv_home, hp, entries);
- if (__dbsrv_verbose)
- printf("Added home %s in dir %s\n", hp->name, hp->dir);
- return (0);
-}
-
-/*
- * PUBLIC: char *get_home __P((char *));
- */
-char *
-get_home(name)
- char *name;
-{
- home_entry *hp;
-
- for (hp = LIST_FIRST(&__dbsrv_home); hp != NULL;
- hp = LIST_NEXT(hp, entries))
- if (strcmp(name, hp->name) == 0)
- return (hp->home);
- return (NULL);
-}
-
-static int
-env_recover(progname)
- char *progname;
-{
- DB_ENV *dbenv;
- home_entry *hp;
- u_int32_t flags;
- int exitval, ret;
-
- for (hp = LIST_FIRST(&__dbsrv_home); hp != NULL;
- hp = LIST_NEXT(hp, entries)) {
- exitval = 0;
- if ((ret = db_env_create(&dbenv, 0)) != 0) {
- fprintf(stderr, "%s: db_env_create: %s\n",
- progname, db_strerror(ret));
- exit(1);
- }
- if (__dbsrv_verbose == 1) {
- (void)dbenv->set_verbose(dbenv, DB_VERB_RECOVERY, 1);
- (void)dbenv->set_verbose(dbenv, DB_VERB_CHKPOINT, 1);
- }
- dbenv->set_errfile(dbenv, stderr);
- dbenv->set_errpfx(dbenv, progname);
-
- /*
- * Initialize the env with DB_RECOVER. That is all we
- * have to do to run recovery.
- */
- if (__dbsrv_verbose)
- printf("Running recovery on %s\n", hp->home);
- flags = DB_CREATE | DB_INIT_LOCK | DB_INIT_LOG | DB_INIT_MPOOL |
- DB_INIT_TXN | DB_PRIVATE | DB_USE_ENVIRON | DB_RECOVER;
- if ((ret = dbenv->open(dbenv, hp->home, flags, 0)) != 0) {
- dbenv->err(dbenv, ret, "DBENV->open");
- goto error;
- }
-
- if (0) {
-error: exitval = 1;
- }
- if ((ret = dbenv->close(dbenv, 0)) != 0) {
- exitval = 1;
- fprintf(stderr, "%s: dbenv->close: %s\n",
- progname, db_strerror(ret));
- }
- if (exitval)
- return (exitval);
- }
- return (0);
-}
diff --git a/db/rpc_server/db_server_xdr.c b/db/rpc_server/db_server_xdr.c
deleted file mode 100644
index f403f862e..000000000
--- a/db/rpc_server/db_server_xdr.c
+++ /dev/null
@@ -1,1149 +0,0 @@
-#include "db_config.h"
-#ifdef HAVE_RPC
-/*
- * Please do not edit this file.
- * It was generated using rpcgen.
- */
-
-#include "db_server.h"
-
-bool_t
-xdr___env_cachesize_msg(xdrs, objp)
- register XDR *xdrs;
- __env_cachesize_msg *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->dbenvcl_id))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->gbytes))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->bytes))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->ncache))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___env_cachesize_reply(xdrs, objp)
- register XDR *xdrs;
- __env_cachesize_reply *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->status))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___env_close_msg(xdrs, objp)
- register XDR *xdrs;
- __env_close_msg *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->dbenvcl_id))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->flags))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___env_close_reply(xdrs, objp)
- register XDR *xdrs;
- __env_close_reply *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->status))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___env_create_msg(xdrs, objp)
- register XDR *xdrs;
- __env_create_msg *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->timeout))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___env_create_reply(xdrs, objp)
- register XDR *xdrs;
- __env_create_reply *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->status))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->envcl_id))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___env_flags_msg(xdrs, objp)
- register XDR *xdrs;
- __env_flags_msg *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->dbenvcl_id))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->flags))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->onoff))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___env_flags_reply(xdrs, objp)
- register XDR *xdrs;
- __env_flags_reply *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->status))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___env_open_msg(xdrs, objp)
- register XDR *xdrs;
- __env_open_msg *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->dbenvcl_id))
- return (FALSE);
- if (!xdr_string(xdrs, &objp->home, ~0))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->flags))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->mode))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___env_open_reply(xdrs, objp)
- register XDR *xdrs;
- __env_open_reply *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->status))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___env_remove_msg(xdrs, objp)
- register XDR *xdrs;
- __env_remove_msg *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->dbenvcl_id))
- return (FALSE);
- if (!xdr_string(xdrs, &objp->home, ~0))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->flags))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___env_remove_reply(xdrs, objp)
- register XDR *xdrs;
- __env_remove_reply *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->status))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___txn_abort_msg(xdrs, objp)
- register XDR *xdrs;
- __txn_abort_msg *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->txnpcl_id))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___txn_abort_reply(xdrs, objp)
- register XDR *xdrs;
- __txn_abort_reply *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->status))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___txn_begin_msg(xdrs, objp)
- register XDR *xdrs;
- __txn_begin_msg *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->envpcl_id))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->parentcl_id))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->flags))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___txn_begin_reply(xdrs, objp)
- register XDR *xdrs;
- __txn_begin_reply *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->status))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->txnidcl_id))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___txn_commit_msg(xdrs, objp)
- register XDR *xdrs;
- __txn_commit_msg *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->txnpcl_id))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->flags))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___txn_commit_reply(xdrs, objp)
- register XDR *xdrs;
- __txn_commit_reply *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->status))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___db_bt_maxkey_msg(xdrs, objp)
- register XDR *xdrs;
- __db_bt_maxkey_msg *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->dbpcl_id))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->maxkey))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___db_bt_maxkey_reply(xdrs, objp)
- register XDR *xdrs;
- __db_bt_maxkey_reply *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->status))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___db_bt_minkey_msg(xdrs, objp)
- register XDR *xdrs;
- __db_bt_minkey_msg *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->dbpcl_id))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->minkey))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___db_bt_minkey_reply(xdrs, objp)
- register XDR *xdrs;
- __db_bt_minkey_reply *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->status))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___db_close_msg(xdrs, objp)
- register XDR *xdrs;
- __db_close_msg *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->dbpcl_id))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->flags))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___db_close_reply(xdrs, objp)
- register XDR *xdrs;
- __db_close_reply *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->status))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___db_create_msg(xdrs, objp)
- register XDR *xdrs;
- __db_create_msg *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->flags))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->envpcl_id))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___db_create_reply(xdrs, objp)
- register XDR *xdrs;
- __db_create_reply *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->status))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->dbpcl_id))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___db_del_msg(xdrs, objp)
- register XDR *xdrs;
- __db_del_msg *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->dbpcl_id))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->txnpcl_id))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->keydlen))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->keydoff))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->keyflags))
- return (FALSE);
- if (!xdr_bytes(xdrs, (char **)&objp->keydata.keydata_val, (u_int *) &objp->keydata.keydata_len, ~0))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->flags))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___db_del_reply(xdrs, objp)
- register XDR *xdrs;
- __db_del_reply *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->status))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___db_extentsize_msg(xdrs, objp)
- register XDR *xdrs;
- __db_extentsize_msg *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->dbpcl_id))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->extentsize))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___db_extentsize_reply(xdrs, objp)
- register XDR *xdrs;
- __db_extentsize_reply *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->status))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___db_flags_msg(xdrs, objp)
- register XDR *xdrs;
- __db_flags_msg *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->dbpcl_id))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->flags))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___db_flags_reply(xdrs, objp)
- register XDR *xdrs;
- __db_flags_reply *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->status))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___db_get_msg(xdrs, objp)
- register XDR *xdrs;
- __db_get_msg *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->dbpcl_id))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->txnpcl_id))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->keydlen))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->keydoff))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->keyflags))
- return (FALSE);
- if (!xdr_bytes(xdrs, (char **)&objp->keydata.keydata_val, (u_int *) &objp->keydata.keydata_len, ~0))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->datadlen))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->datadoff))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->dataflags))
- return (FALSE);
- if (!xdr_bytes(xdrs, (char **)&objp->datadata.datadata_val, (u_int *) &objp->datadata.datadata_len, ~0))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->flags))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___db_get_reply(xdrs, objp)
- register XDR *xdrs;
- __db_get_reply *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->status))
- return (FALSE);
- if (!xdr_bytes(xdrs, (char **)&objp->keydata.keydata_val, (u_int *) &objp->keydata.keydata_len, ~0))
- return (FALSE);
- if (!xdr_bytes(xdrs, (char **)&objp->datadata.datadata_val, (u_int *) &objp->datadata.datadata_len, ~0))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___db_h_ffactor_msg(xdrs, objp)
- register XDR *xdrs;
- __db_h_ffactor_msg *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->dbpcl_id))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->ffactor))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___db_h_ffactor_reply(xdrs, objp)
- register XDR *xdrs;
- __db_h_ffactor_reply *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->status))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___db_h_nelem_msg(xdrs, objp)
- register XDR *xdrs;
- __db_h_nelem_msg *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->dbpcl_id))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->nelem))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___db_h_nelem_reply(xdrs, objp)
- register XDR *xdrs;
- __db_h_nelem_reply *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->status))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___db_key_range_msg(xdrs, objp)
- register XDR *xdrs;
- __db_key_range_msg *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->dbpcl_id))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->txnpcl_id))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->keydlen))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->keydoff))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->keyflags))
- return (FALSE);
- if (!xdr_bytes(xdrs, (char **)&objp->keydata.keydata_val, (u_int *) &objp->keydata.keydata_len, ~0))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->flags))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___db_key_range_reply(xdrs, objp)
- register XDR *xdrs;
- __db_key_range_reply *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->status))
- return (FALSE);
- if (!xdr_double(xdrs, &objp->less))
- return (FALSE);
- if (!xdr_double(xdrs, &objp->equal))
- return (FALSE);
- if (!xdr_double(xdrs, &objp->greater))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___db_lorder_msg(xdrs, objp)
- register XDR *xdrs;
- __db_lorder_msg *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->dbpcl_id))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->lorder))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___db_lorder_reply(xdrs, objp)
- register XDR *xdrs;
- __db_lorder_reply *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->status))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___db_open_msg(xdrs, objp)
- register XDR *xdrs;
- __db_open_msg *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->dbpcl_id))
- return (FALSE);
- if (!xdr_string(xdrs, &objp->name, ~0))
- return (FALSE);
- if (!xdr_string(xdrs, &objp->subdb, ~0))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->type))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->flags))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->mode))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___db_open_reply(xdrs, objp)
- register XDR *xdrs;
- __db_open_reply *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->status))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->type))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->dbflags))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___db_pagesize_msg(xdrs, objp)
- register XDR *xdrs;
- __db_pagesize_msg *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->dbpcl_id))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->pagesize))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___db_pagesize_reply(xdrs, objp)
- register XDR *xdrs;
- __db_pagesize_reply *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->status))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___db_put_msg(xdrs, objp)
- register XDR *xdrs;
- __db_put_msg *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->dbpcl_id))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->txnpcl_id))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->keydlen))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->keydoff))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->keyflags))
- return (FALSE);
- if (!xdr_bytes(xdrs, (char **)&objp->keydata.keydata_val, (u_int *) &objp->keydata.keydata_len, ~0))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->datadlen))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->datadoff))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->dataflags))
- return (FALSE);
- if (!xdr_bytes(xdrs, (char **)&objp->datadata.datadata_val, (u_int *) &objp->datadata.datadata_len, ~0))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->flags))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___db_put_reply(xdrs, objp)
- register XDR *xdrs;
- __db_put_reply *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->status))
- return (FALSE);
- if (!xdr_bytes(xdrs, (char **)&objp->keydata.keydata_val, (u_int *) &objp->keydata.keydata_len, ~0))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___db_re_delim_msg(xdrs, objp)
- register XDR *xdrs;
- __db_re_delim_msg *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->dbpcl_id))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->delim))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___db_re_delim_reply(xdrs, objp)
- register XDR *xdrs;
- __db_re_delim_reply *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->status))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___db_re_len_msg(xdrs, objp)
- register XDR *xdrs;
- __db_re_len_msg *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->dbpcl_id))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->len))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___db_re_len_reply(xdrs, objp)
- register XDR *xdrs;
- __db_re_len_reply *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->status))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___db_re_pad_msg(xdrs, objp)
- register XDR *xdrs;
- __db_re_pad_msg *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->dbpcl_id))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->pad))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___db_re_pad_reply(xdrs, objp)
- register XDR *xdrs;
- __db_re_pad_reply *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->status))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___db_remove_msg(xdrs, objp)
- register XDR *xdrs;
- __db_remove_msg *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->dbpcl_id))
- return (FALSE);
- if (!xdr_string(xdrs, &objp->name, ~0))
- return (FALSE);
- if (!xdr_string(xdrs, &objp->subdb, ~0))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->flags))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___db_remove_reply(xdrs, objp)
- register XDR *xdrs;
- __db_remove_reply *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->status))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___db_rename_msg(xdrs, objp)
- register XDR *xdrs;
- __db_rename_msg *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->dbpcl_id))
- return (FALSE);
- if (!xdr_string(xdrs, &objp->name, ~0))
- return (FALSE);
- if (!xdr_string(xdrs, &objp->subdb, ~0))
- return (FALSE);
- if (!xdr_string(xdrs, &objp->newname, ~0))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->flags))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___db_rename_reply(xdrs, objp)
- register XDR *xdrs;
- __db_rename_reply *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->status))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___db_stat_msg(xdrs, objp)
- register XDR *xdrs;
- __db_stat_msg *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->dbpcl_id))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->flags))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___db_stat_statsreplist(xdrs, objp)
- register XDR *xdrs;
- __db_stat_statsreplist *objp;
-{
-
- if (!xdr_bytes(xdrs, (char **)&objp->ent.ent_val, (u_int *) &objp->ent.ent_len, ~0))
- return (FALSE);
- if (!xdr_pointer(xdrs, (char **)&objp->next, sizeof (__db_stat_statsreplist), (xdrproc_t) xdr___db_stat_statsreplist))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___db_stat_reply(xdrs, objp)
- register XDR *xdrs;
- __db_stat_reply *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->status))
- return (FALSE);
- if (!xdr_pointer(xdrs, (char **)&objp->statslist, sizeof (__db_stat_statsreplist), (xdrproc_t) xdr___db_stat_statsreplist))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___db_swapped_msg(xdrs, objp)
- register XDR *xdrs;
- __db_swapped_msg *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->dbpcl_id))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___db_swapped_reply(xdrs, objp)
- register XDR *xdrs;
- __db_swapped_reply *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->status))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___db_sync_msg(xdrs, objp)
- register XDR *xdrs;
- __db_sync_msg *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->dbpcl_id))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->flags))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___db_sync_reply(xdrs, objp)
- register XDR *xdrs;
- __db_sync_reply *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->status))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___db_cursor_msg(xdrs, objp)
- register XDR *xdrs;
- __db_cursor_msg *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->dbpcl_id))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->txnpcl_id))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->flags))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___db_cursor_reply(xdrs, objp)
- register XDR *xdrs;
- __db_cursor_reply *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->status))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->dbcidcl_id))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___db_join_curslist(xdrs, objp)
- register XDR *xdrs;
- __db_join_curslist *objp;
-{
-
- if (!xdr_bytes(xdrs, (char **)&objp->ent.ent_val, (u_int *) &objp->ent.ent_len, ~0))
- return (FALSE);
- if (!xdr_pointer(xdrs, (char **)&objp->next, sizeof (__db_join_curslist), (xdrproc_t) xdr___db_join_curslist))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___db_join_msg(xdrs, objp)
- register XDR *xdrs;
- __db_join_msg *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->dbpcl_id))
- return (FALSE);
- if (!xdr_pointer(xdrs, (char **)&objp->curslist, sizeof (__db_join_curslist), (xdrproc_t) xdr___db_join_curslist))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->flags))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___db_join_reply(xdrs, objp)
- register XDR *xdrs;
- __db_join_reply *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->status))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->dbcidcl_id))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___dbc_close_msg(xdrs, objp)
- register XDR *xdrs;
- __dbc_close_msg *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->dbccl_id))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___dbc_close_reply(xdrs, objp)
- register XDR *xdrs;
- __dbc_close_reply *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->status))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___dbc_count_msg(xdrs, objp)
- register XDR *xdrs;
- __dbc_count_msg *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->dbccl_id))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->flags))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___dbc_count_reply(xdrs, objp)
- register XDR *xdrs;
- __dbc_count_reply *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->status))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->dupcount))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___dbc_del_msg(xdrs, objp)
- register XDR *xdrs;
- __dbc_del_msg *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->dbccl_id))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->flags))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___dbc_del_reply(xdrs, objp)
- register XDR *xdrs;
- __dbc_del_reply *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->status))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___dbc_dup_msg(xdrs, objp)
- register XDR *xdrs;
- __dbc_dup_msg *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->dbccl_id))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->flags))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___dbc_dup_reply(xdrs, objp)
- register XDR *xdrs;
- __dbc_dup_reply *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->status))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->dbcidcl_id))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___dbc_get_msg(xdrs, objp)
- register XDR *xdrs;
- __dbc_get_msg *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->dbccl_id))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->keydlen))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->keydoff))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->keyflags))
- return (FALSE);
- if (!xdr_bytes(xdrs, (char **)&objp->keydata.keydata_val, (u_int *) &objp->keydata.keydata_len, ~0))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->datadlen))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->datadoff))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->dataflags))
- return (FALSE);
- if (!xdr_bytes(xdrs, (char **)&objp->datadata.datadata_val, (u_int *) &objp->datadata.datadata_len, ~0))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->flags))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___dbc_get_reply(xdrs, objp)
- register XDR *xdrs;
- __dbc_get_reply *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->status))
- return (FALSE);
- if (!xdr_bytes(xdrs, (char **)&objp->keydata.keydata_val, (u_int *) &objp->keydata.keydata_len, ~0))
- return (FALSE);
- if (!xdr_bytes(xdrs, (char **)&objp->datadata.datadata_val, (u_int *) &objp->datadata.datadata_len, ~0))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___dbc_put_msg(xdrs, objp)
- register XDR *xdrs;
- __dbc_put_msg *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->dbccl_id))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->keydlen))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->keydoff))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->keyflags))
- return (FALSE);
- if (!xdr_bytes(xdrs, (char **)&objp->keydata.keydata_val, (u_int *) &objp->keydata.keydata_len, ~0))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->datadlen))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->datadoff))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->dataflags))
- return (FALSE);
- if (!xdr_bytes(xdrs, (char **)&objp->datadata.datadata_val, (u_int *) &objp->datadata.datadata_len, ~0))
- return (FALSE);
- if (!xdr_u_int(xdrs, &objp->flags))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr___dbc_put_reply(xdrs, objp)
- register XDR *xdrs;
- __dbc_put_reply *objp;
-{
-
- if (!xdr_u_int(xdrs, &objp->status))
- return (FALSE);
- if (!xdr_bytes(xdrs, (char **)&objp->keydata.keydata_val, (u_int *) &objp->keydata.keydata_len, ~0))
- return (FALSE);
- return (TRUE);
-}
-#endif /* HAVE_RPC */
diff --git a/db/rpc_server/gen_db_server.c b/db/rpc_server/gen_db_server.c
deleted file mode 100644
index 20da69c4b..000000000
--- a/db/rpc_server/gen_db_server.c
+++ /dev/null
@@ -1,703 +0,0 @@
-/* Do not edit: automatically built by gen_rpc.awk. */
-#include "db_config.h"
-
-#ifndef NO_SYSTEM_INCLUDES
-#include <sys/types.h>
-
-#include <rpc/rpc.h>
-#include <rpc/xdr.h>
-
-#include <errno.h>
-#include <string.h>
-#endif
-#include "db_server.h"
-
-#include "db_int.h"
-#include "db_server_int.h"
-#include "rpc_server_ext.h"
-
-#include "gen_server_ext.h"
-
-__env_cachesize_reply *
-__db_env_cachesize_1(req)
- __env_cachesize_msg *req;
-{
- static __env_cachesize_reply reply; /* must be static */
-
- __env_cachesize_1_proc(req->dbenvcl_id,
- req->gbytes,
- req->bytes,
- req->ncache,
- &reply);
-
- return (&reply);
-}
-
-__env_close_reply *
-__db_env_close_1(req)
- __env_close_msg *req;
-{
- static __env_close_reply reply; /* must be static */
-
- __env_close_1_proc(req->dbenvcl_id,
- req->flags,
- &reply);
-
- return (&reply);
-}
-
-__env_create_reply *
-__db_env_create_1(req)
- __env_create_msg *req;
-{
- static __env_create_reply reply; /* must be static */
-
- __env_create_1_proc(req->timeout,
- &reply);
-
- return (&reply);
-}
-
-__env_flags_reply *
-__db_env_flags_1(req)
- __env_flags_msg *req;
-{
- static __env_flags_reply reply; /* must be static */
-
- __env_flags_1_proc(req->dbenvcl_id,
- req->flags,
- req->onoff,
- &reply);
-
- return (&reply);
-}
-
-__env_open_reply *
-__db_env_open_1(req)
- __env_open_msg *req;
-{
- static __env_open_reply reply; /* must be static */
-
- __env_open_1_proc(req->dbenvcl_id,
- (*req->home == '\0') ? NULL : req->home,
- req->flags,
- req->mode,
- &reply);
-
- return (&reply);
-}
-
-__env_remove_reply *
-__db_env_remove_1(req)
- __env_remove_msg *req;
-{
- static __env_remove_reply reply; /* must be static */
-
- __env_remove_1_proc(req->dbenvcl_id,
- (*req->home == '\0') ? NULL : req->home,
- req->flags,
- &reply);
-
- return (&reply);
-}
-
-__txn_abort_reply *
-__db_txn_abort_1(req)
- __txn_abort_msg *req;
-{
- static __txn_abort_reply reply; /* must be static */
-
- __txn_abort_1_proc(req->txnpcl_id,
- &reply);
-
- return (&reply);
-}
-
-__txn_begin_reply *
-__db_txn_begin_1(req)
- __txn_begin_msg *req;
-{
- static __txn_begin_reply reply; /* must be static */
-
- __txn_begin_1_proc(req->envpcl_id,
- req->parentcl_id,
- req->flags,
- &reply);
-
- return (&reply);
-}
-
-__txn_commit_reply *
-__db_txn_commit_1(req)
- __txn_commit_msg *req;
-{
- static __txn_commit_reply reply; /* must be static */
-
- __txn_commit_1_proc(req->txnpcl_id,
- req->flags,
- &reply);
-
- return (&reply);
-}
-
-__db_bt_maxkey_reply *
-__db_db_bt_maxkey_1(req)
- __db_bt_maxkey_msg *req;
-{
- static __db_bt_maxkey_reply reply; /* must be static */
-
- __db_bt_maxkey_1_proc(req->dbpcl_id,
- req->maxkey,
- &reply);
-
- return (&reply);
-}
-
-__db_bt_minkey_reply *
-__db_db_bt_minkey_1(req)
- __db_bt_minkey_msg *req;
-{
- static __db_bt_minkey_reply reply; /* must be static */
-
- __db_bt_minkey_1_proc(req->dbpcl_id,
- req->minkey,
- &reply);
-
- return (&reply);
-}
-
-__db_close_reply *
-__db_db_close_1(req)
- __db_close_msg *req;
-{
- static __db_close_reply reply; /* must be static */
-
- __db_close_1_proc(req->dbpcl_id,
- req->flags,
- &reply);
-
- return (&reply);
-}
-
-__db_create_reply *
-__db_db_create_1(req)
- __db_create_msg *req;
-{
- static __db_create_reply reply; /* must be static */
-
- __db_create_1_proc(req->flags,
- req->envpcl_id,
- &reply);
-
- return (&reply);
-}
-
-__db_del_reply *
-__db_db_del_1(req)
- __db_del_msg *req;
-{
- static __db_del_reply reply; /* must be static */
-
- __db_del_1_proc(req->dbpcl_id,
- req->txnpcl_id,
- req->keydlen,
- req->keydoff,
- req->keyflags,
- req->keydata.keydata_val,
- req->keydata.keydata_len,
- req->flags,
- &reply);
-
- return (&reply);
-}
-
-__db_extentsize_reply *
-__db_db_extentsize_1(req)
- __db_extentsize_msg *req;
-{
- static __db_extentsize_reply reply; /* must be static */
-
- __db_extentsize_1_proc(req->dbpcl_id,
- req->extentsize,
- &reply);
-
- return (&reply);
-}
-
-__db_flags_reply *
-__db_db_flags_1(req)
- __db_flags_msg *req;
-{
- static __db_flags_reply reply; /* must be static */
-
- __db_flags_1_proc(req->dbpcl_id,
- req->flags,
- &reply);
-
- return (&reply);
-}
-
-__db_get_reply *
-__db_db_get_1(req)
- __db_get_msg *req;
-{
- static __db_get_reply reply; /* must be static */
- static int __db_get_free = 0; /* must be static */
-
- if (__db_get_free)
- xdr_free((xdrproc_t)xdr___db_get_reply, (void *)&reply);
- __db_get_free = 0;
-
- /* Reinitialize allocated fields */
- reply.keydata.keydata_val = NULL;
- reply.datadata.datadata_val = NULL;
-
- __db_get_1_proc(req->dbpcl_id,
- req->txnpcl_id,
- req->keydlen,
- req->keydoff,
- req->keyflags,
- req->keydata.keydata_val,
- req->keydata.keydata_len,
- req->datadlen,
- req->datadoff,
- req->dataflags,
- req->datadata.datadata_val,
- req->datadata.datadata_len,
- req->flags,
- &reply,
- &__db_get_free);
- return (&reply);
-}
-
-__db_h_ffactor_reply *
-__db_db_h_ffactor_1(req)
- __db_h_ffactor_msg *req;
-{
- static __db_h_ffactor_reply reply; /* must be static */
-
- __db_h_ffactor_1_proc(req->dbpcl_id,
- req->ffactor,
- &reply);
-
- return (&reply);
-}
-
-__db_h_nelem_reply *
-__db_db_h_nelem_1(req)
- __db_h_nelem_msg *req;
-{
- static __db_h_nelem_reply reply; /* must be static */
-
- __db_h_nelem_1_proc(req->dbpcl_id,
- req->nelem,
- &reply);
-
- return (&reply);
-}
-
-__db_key_range_reply *
-__db_db_key_range_1(req)
- __db_key_range_msg *req;
-{
- static __db_key_range_reply reply; /* must be static */
-
- __db_key_range_1_proc(req->dbpcl_id,
- req->txnpcl_id,
- req->keydlen,
- req->keydoff,
- req->keyflags,
- req->keydata.keydata_val,
- req->keydata.keydata_len,
- req->flags,
- &reply);
-
- return (&reply);
-}
-
-__db_lorder_reply *
-__db_db_lorder_1(req)
- __db_lorder_msg *req;
-{
- static __db_lorder_reply reply; /* must be static */
-
- __db_lorder_1_proc(req->dbpcl_id,
- req->lorder,
- &reply);
-
- return (&reply);
-}
-
-__db_open_reply *
-__db_db_open_1(req)
- __db_open_msg *req;
-{
- static __db_open_reply reply; /* must be static */
-
- __db_open_1_proc(req->dbpcl_id,
- (*req->name == '\0') ? NULL : req->name,
- (*req->subdb == '\0') ? NULL : req->subdb,
- req->type,
- req->flags,
- req->mode,
- &reply);
-
- return (&reply);
-}
-
-__db_pagesize_reply *
-__db_db_pagesize_1(req)
- __db_pagesize_msg *req;
-{
- static __db_pagesize_reply reply; /* must be static */
-
- __db_pagesize_1_proc(req->dbpcl_id,
- req->pagesize,
- &reply);
-
- return (&reply);
-}
-
-__db_put_reply *
-__db_db_put_1(req)
- __db_put_msg *req;
-{
- static __db_put_reply reply; /* must be static */
- static int __db_put_free = 0; /* must be static */
-
- if (__db_put_free)
- xdr_free((xdrproc_t)xdr___db_put_reply, (void *)&reply);
- __db_put_free = 0;
-
- /* Reinitialize allocated fields */
- reply.keydata.keydata_val = NULL;
-
- __db_put_1_proc(req->dbpcl_id,
- req->txnpcl_id,
- req->keydlen,
- req->keydoff,
- req->keyflags,
- req->keydata.keydata_val,
- req->keydata.keydata_len,
- req->datadlen,
- req->datadoff,
- req->dataflags,
- req->datadata.datadata_val,
- req->datadata.datadata_len,
- req->flags,
- &reply,
- &__db_put_free);
- return (&reply);
-}
-
-__db_re_delim_reply *
-__db_db_re_delim_1(req)
- __db_re_delim_msg *req;
-{
- static __db_re_delim_reply reply; /* must be static */
-
- __db_re_delim_1_proc(req->dbpcl_id,
- req->delim,
- &reply);
-
- return (&reply);
-}
-
-__db_re_len_reply *
-__db_db_re_len_1(req)
- __db_re_len_msg *req;
-{
- static __db_re_len_reply reply; /* must be static */
-
- __db_re_len_1_proc(req->dbpcl_id,
- req->len,
- &reply);
-
- return (&reply);
-}
-
-__db_re_pad_reply *
-__db_db_re_pad_1(req)
- __db_re_pad_msg *req;
-{
- static __db_re_pad_reply reply; /* must be static */
-
- __db_re_pad_1_proc(req->dbpcl_id,
- req->pad,
- &reply);
-
- return (&reply);
-}
-
-__db_remove_reply *
-__db_db_remove_1(req)
- __db_remove_msg *req;
-{
- static __db_remove_reply reply; /* must be static */
-
- __db_remove_1_proc(req->dbpcl_id,
- (*req->name == '\0') ? NULL : req->name,
- (*req->subdb == '\0') ? NULL : req->subdb,
- req->flags,
- &reply);
-
- return (&reply);
-}
-
-__db_rename_reply *
-__db_db_rename_1(req)
- __db_rename_msg *req;
-{
- static __db_rename_reply reply; /* must be static */
-
- __db_rename_1_proc(req->dbpcl_id,
- (*req->name == '\0') ? NULL : req->name,
- (*req->subdb == '\0') ? NULL : req->subdb,
- (*req->newname == '\0') ? NULL : req->newname,
- req->flags,
- &reply);
-
- return (&reply);
-}
-
-__db_stat_reply *
-__db_db_stat_1(req)
- __db_stat_msg *req;
-{
- static __db_stat_reply reply; /* must be static */
- static int __db_stat_free = 0; /* must be static */
-
- if (__db_stat_free)
- xdr_free((xdrproc_t)xdr___db_stat_reply, (void *)&reply);
- __db_stat_free = 0;
-
- /* Reinitialize allocated fields */
- reply.statslist = NULL;
-
- __db_stat_1_proc(req->dbpcl_id,
- req->flags,
- &reply,
- &__db_stat_free);
- return (&reply);
-}
-
-__db_swapped_reply *
-__db_db_swapped_1(req)
- __db_swapped_msg *req;
-{
- static __db_swapped_reply reply; /* must be static */
-
- __db_swapped_1_proc(req->dbpcl_id,
- &reply);
-
- return (&reply);
-}
-
-__db_sync_reply *
-__db_db_sync_1(req)
- __db_sync_msg *req;
-{
- static __db_sync_reply reply; /* must be static */
-
- __db_sync_1_proc(req->dbpcl_id,
- req->flags,
- &reply);
-
- return (&reply);
-}
-
-__db_cursor_reply *
-__db_db_cursor_1(req)
- __db_cursor_msg *req;
-{
- static __db_cursor_reply reply; /* must be static */
-
- __db_cursor_1_proc(req->dbpcl_id,
- req->txnpcl_id,
- req->flags,
- &reply);
-
- return (&reply);
-}
-
-int __db_db_join_curslist __P((__db_join_curslist *, u_int32_t **));
-void __db_db_join_cursfree __P((u_int32_t *));
-
-__db_join_reply *
-__db_db_join_1(req)
- __db_join_msg *req;
-{
- u_int32_t *__db_curslist;
- int ret;
- static __db_join_reply reply; /* must be static */
-
- if ((ret = __db_db_join_curslist(req->curslist, &__db_curslist)) != 0)
- goto out;
-
- __db_join_1_proc(req->dbpcl_id,
- __db_curslist,
- req->flags,
- &reply);
-
- __db_db_join_cursfree(__db_curslist);
-
-out:
- return (&reply);
-}
-
-int
-__db_db_join_curslist(locp, ppp)
- __db_join_curslist *locp;
- u_int32_t **ppp;
-{
- u_int32_t *pp;
- int cnt, ret, size;
- __db_join_curslist *nl;
-
- for (cnt = 0, nl = locp; nl != NULL; cnt++, nl = nl->next)
- ;
-
- if (cnt == 0) {
- *ppp = NULL;
- return (0);
- }
- size = sizeof(*pp) * (cnt + 1);
- if ((ret = __os_malloc(NULL, size, NULL, ppp)) != 0)
- return (ret);
- memset(*ppp, 0, size);
- for (pp = *ppp, nl = locp; nl != NULL; nl = nl->next, pp++) {
- *pp = *(u_int32_t *)nl->ent.ent_val;
- }
- return (0);
-}
-
-void
-__db_db_join_cursfree(pp)
- u_int32_t *pp;
-{
- size_t size;
- u_int32_t *p;
-
- if (pp == NULL)
- return;
- size = sizeof(*p);
- for (p = pp; *p != 0; p++) {
- size += sizeof(*p);
- }
- __os_free(pp, size);
-}
-
-__dbc_close_reply *
-__db_dbc_close_1(req)
- __dbc_close_msg *req;
-{
- static __dbc_close_reply reply; /* must be static */
-
- __dbc_close_1_proc(req->dbccl_id,
- &reply);
-
- return (&reply);
-}
-
-__dbc_count_reply *
-__db_dbc_count_1(req)
- __dbc_count_msg *req;
-{
- static __dbc_count_reply reply; /* must be static */
-
- __dbc_count_1_proc(req->dbccl_id,
- req->flags,
- &reply);
-
- return (&reply);
-}
-
-__dbc_del_reply *
-__db_dbc_del_1(req)
- __dbc_del_msg *req;
-{
- static __dbc_del_reply reply; /* must be static */
-
- __dbc_del_1_proc(req->dbccl_id,
- req->flags,
- &reply);
-
- return (&reply);
-}
-
-__dbc_dup_reply *
-__db_dbc_dup_1(req)
- __dbc_dup_msg *req;
-{
- static __dbc_dup_reply reply; /* must be static */
-
- __dbc_dup_1_proc(req->dbccl_id,
- req->flags,
- &reply);
-
- return (&reply);
-}
-
-__dbc_get_reply *
-__db_dbc_get_1(req)
- __dbc_get_msg *req;
-{
- static __dbc_get_reply reply; /* must be static */
- static int __dbc_get_free = 0; /* must be static */
-
- if (__dbc_get_free)
- xdr_free((xdrproc_t)xdr___dbc_get_reply, (void *)&reply);
- __dbc_get_free = 0;
-
- /* Reinitialize allocated fields */
- reply.keydata.keydata_val = NULL;
- reply.datadata.datadata_val = NULL;
-
- __dbc_get_1_proc(req->dbccl_id,
- req->keydlen,
- req->keydoff,
- req->keyflags,
- req->keydata.keydata_val,
- req->keydata.keydata_len,
- req->datadlen,
- req->datadoff,
- req->dataflags,
- req->datadata.datadata_val,
- req->datadata.datadata_len,
- req->flags,
- &reply,
- &__dbc_get_free);
- return (&reply);
-}
-
-__dbc_put_reply *
-__db_dbc_put_1(req)
- __dbc_put_msg *req;
-{
- static __dbc_put_reply reply; /* must be static */
- static int __dbc_put_free = 0; /* must be static */
-
- if (__dbc_put_free)
- xdr_free((xdrproc_t)xdr___dbc_put_reply, (void *)&reply);
- __dbc_put_free = 0;
-
- /* Reinitialize allocated fields */
- reply.keydata.keydata_val = NULL;
-
- __dbc_put_1_proc(req->dbccl_id,
- req->keydlen,
- req->keydoff,
- req->keyflags,
- req->keydata.keydata_val,
- req->keydata.keydata_len,
- req->datadlen,
- req->datadoff,
- req->dataflags,
- req->datadata.datadata_val,
- req->datadata.datadata_len,
- req->flags,
- &reply,
- &__dbc_put_free);
- return (&reply);
-}
-
diff --git a/db/rpc_server/java/AssociateCallbacks.java b/db/rpc_server/java/AssociateCallbacks.java
deleted file mode 100644
index 4e8e24d51..000000000
--- a/db/rpc_server/java/AssociateCallbacks.java
+++ /dev/null
@@ -1,178 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2001-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: AssociateCallbacks.java,v 1.3 2004/04/06 20:43:41 mjc Exp $
- */
-
-package com.sleepycat.db.rpcserver;
-
-import com.sleepycat.db.*;
-
-/** Implementations of the callbacks required by the Tcl test suite. **/
-class AssociateCallbacks {
- /*
- * Tcl passes one of these special flags for the callbacks used in the
- * test suite. Note: these must match db_int.in!
- */
- static final int DB_RPC2ND_REVERSEDATA = 0x00100000;
- static final int DB_RPC2ND_NOOP = 0x00200000;
- static final int DB_RPC2ND_CONCATKEYDATA = 0x00300000;
- static final int DB_RPC2ND_CONCATDATAKEY = 0x00400000;
- static final int DB_RPC2ND_REVERSECONCAT = 0x00500000;
- static final int DB_RPC2ND_TRUNCDATA = 0x00600000;
- static final int DB_RPC2ND_CONSTANT = 0x00700000;
- static final int DB_RPC2ND_GETZIP = 0x00800000;
- static final int DB_RPC2ND_GETNAME = 0x00900000;
-
- static final int DB_RPC2ND_MASK = 0x00f00000;
-
- static SecondaryKeyCreator getCallback(int flags) {
- switch(flags & DB_RPC2ND_MASK) {
- case 0:
- return null;
-
- case DB_RPC2ND_REVERSEDATA:
- return new SecondaryKeyCreator() {
- public boolean createSecondaryKey(SecondaryDatabase secondary,
- DatabaseEntry key, DatabaseEntry data, DatabaseEntry result)
- throws DatabaseException {
- byte[] dataBuf = data.getData();
- int dataSize = data.getSize();
- byte[] buf = new byte[dataSize];
- for (int i = 0; i < dataSize; i++)
- buf[dataSize - 1 - i] = dataBuf[i];
- result.setData(buf);
- result.setSize(buf.length);
- return true;
- }
- };
-
- case DB_RPC2ND_NOOP:
- return new SecondaryKeyCreator() {
- public boolean createSecondaryKey(SecondaryDatabase secondary,
- DatabaseEntry key, DatabaseEntry data, DatabaseEntry result)
- throws DatabaseException {
- result.setData(data.getData());
- result.setSize(data.getSize());
- return true;
- }
- };
-
- case DB_RPC2ND_CONCATKEYDATA:
- return new SecondaryKeyCreator() {
- public boolean createSecondaryKey(SecondaryDatabase secondary,
- DatabaseEntry key, DatabaseEntry data, DatabaseEntry result)
- throws DatabaseException {
- byte[] buf = new byte[key.getSize() +
- data.getSize()];
- System.arraycopy(key.getData(), 0,
- buf, 0,
- key.getSize());
- System.arraycopy(data.getData(), 0,
- buf, key.getSize(),
- data.getSize());
- result.setData(buf);
- result.setSize(buf.length);
- return true;
- }
- };
-
- case DB_RPC2ND_CONCATDATAKEY:
- return new SecondaryKeyCreator() {
- public boolean createSecondaryKey(SecondaryDatabase secondary,
- DatabaseEntry key, DatabaseEntry data, DatabaseEntry result)
- throws DatabaseException {
- byte[] buf = new byte[key.getSize() +
- data.getSize()];
- System.arraycopy(data.getData(), 0,
- buf, 0,
- data.getSize());
- System.arraycopy(key.getData(), 0,
- buf, data.getSize(),
- key.getSize());
- result.setData(buf);
- result.setSize(buf.length);
- return true;
- }
- };
-
- case DB_RPC2ND_REVERSECONCAT:
- return new SecondaryKeyCreator() {
- public boolean createSecondaryKey(SecondaryDatabase secondary,
- DatabaseEntry key, DatabaseEntry data, DatabaseEntry result)
- throws DatabaseException {
- byte[] keyBuf = key.getData();
- int keySize = key.getSize();
- byte[] dataBuf = data.getData();
- int dataSize = data.getSize();
- byte[] buf = new byte[keySize + dataSize];
- for (int i = 0; i < keySize; i++)
- buf[buf.length - 1 - i] = keyBuf[i];
- for (int i = 0; i < dataSize; i++)
- buf[dataSize - 1 - i] = dataBuf[i];
- result.setData(buf);
- result.setSize(buf.length);
- return true;
- }
- };
-
- case DB_RPC2ND_TRUNCDATA:
- return new SecondaryKeyCreator() {
- public boolean createSecondaryKey(SecondaryDatabase secondary,
- DatabaseEntry key, DatabaseEntry data, DatabaseEntry result)
- throws DatabaseException {
- result.setData(data.getData());
- result.setOffset(1);
- result.setSize(data.getSize() - 1);
- return true;
- }
- };
-
- case DB_RPC2ND_CONSTANT:
- return new SecondaryKeyCreator() {
- public boolean createSecondaryKey(SecondaryDatabase secondary,
- DatabaseEntry key, DatabaseEntry data, DatabaseEntry result)
- throws DatabaseException {
- byte[] buf = "constant data".getBytes();
- result.setData(buf);
- result.setSize(buf.length);
- return true;
- }
- };
-
- case DB_RPC2ND_GETZIP:
- return new SecondaryKeyCreator() {
- public boolean createSecondaryKey(SecondaryDatabase secondary,
- DatabaseEntry key, DatabaseEntry data, DatabaseEntry result)
- throws DatabaseException {
- result.setData(data.getData());
- result.setSize(5);
- return true;
- }
- };
-
- case DB_RPC2ND_GETNAME:
- return new SecondaryKeyCreator() {
- public boolean createSecondaryKey(SecondaryDatabase secondary,
- DatabaseEntry key, DatabaseEntry data, DatabaseEntry result)
- throws DatabaseException {
- result.setData(data.getData());
- result.setOffset(5);
- result.setSize(data.getSize() - 5);
- return true;
- }
- };
-
- default:
- Server.err.println("Warning: Java RPC server doesn't implement callback: " + (flags & DB_RPC2ND_MASK));
- return null;
- }
- }
-
- // Utility classes should not have a public or default constructor
- protected AssociateCallbacks() {
- }
-}
diff --git a/db/rpc_server/java/Dispatcher.java b/db/rpc_server/java/Dispatcher.java
deleted file mode 100644
index 618cb9295..000000000
--- a/db/rpc_server/java/Dispatcher.java
+++ /dev/null
@@ -1,721 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2001-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: Dispatcher.java,v 1.1 2004/04/06 20:43:41 mjc Exp $
- */
-
-package com.sleepycat.db.rpcserver;
-
-import com.sleepycat.db.*;
-import com.sleepycat.db.internal.DbConstants;
-import java.io.IOException;
-import org.acplt.oncrpc.OncRpcException;
-
-/**
- * Dispatcher for RPC messages for the Java RPC server.
- * These are hooks that translate between RPC msg/reply structures and
- * DB calls, which keeps the real implementation code in Rpc* classes cleaner.
- */
-public abstract class Dispatcher extends ServerStubs {
- abstract int addEnv(RpcDbEnv rdbenv);
- abstract int addDatabase(RpcDb rdb);
- abstract int addTxn(RpcDbTxn rtxn);
- abstract int addCursor(RpcDbc rdbc);
- abstract void delEnv(RpcDbEnv rdbenv, boolean dispose);
- abstract void delDatabase(RpcDb rdb, boolean dispose);
- abstract void delTxn(RpcDbTxn rtxn, boolean dispose);
- abstract void delCursor(RpcDbc rdbc, boolean dispose);
- abstract RpcDbEnv getEnv(int envid);
- abstract RpcDb getDatabase(int dbid);
- abstract RpcDbTxn getTxn(int txnbid);
- abstract RpcDbc getCursor(int dbcid);
-
- public Dispatcher() throws IOException, OncRpcException {
- super();
- }
-
- //// Database methods
-
- public __db_associate_reply __DB_db_associate_4003(__db_associate_msg args) {
- __db_associate_reply reply = new __db_associate_reply();
- RpcDb rdb = getDatabase(args.dbpcl_id);
- if (rdb == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdb.associate(this, args, reply);
- return reply;
- }
-
- public __db_bt_maxkey_reply __DB_db_bt_maxkey_4003(__db_bt_maxkey_msg args) {
- __db_bt_maxkey_reply reply = new __db_bt_maxkey_reply();
- RpcDb rdb = getDatabase(args.dbpcl_id);
- if (rdb == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdb.set_bt_maxkey(this, args, reply);
- return reply;
- }
-
- public __db_get_bt_minkey_reply __DB_db_get_bt_minkey_4003(__db_get_bt_minkey_msg args) {
- __db_get_bt_minkey_reply reply = new __db_get_bt_minkey_reply();
- RpcDb rdb = getDatabase(args.dbpcl_id);
- if (rdb == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdb.get_bt_minkey(this, args, reply);
- return reply;
- }
-
- public __db_bt_minkey_reply __DB_db_bt_minkey_4003(__db_bt_minkey_msg args) {
- __db_bt_minkey_reply reply = new __db_bt_minkey_reply();
- RpcDb rdb = getDatabase(args.dbpcl_id);
- if (rdb == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdb.set_bt_minkey(this, args, reply);
- return reply;
- }
-
- public __db_close_reply __DB_db_close_4003(__db_close_msg args) {
- __db_close_reply reply = new __db_close_reply();
- RpcDb rdb = getDatabase(args.dbpcl_id);
- if (rdb == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdb.close(this, args, reply);
- return reply;
- }
-
- public __db_create_reply __DB_db_create_4003(__db_create_msg args) {
- __db_create_reply reply = new __db_create_reply();
- RpcDb rdb = new RpcDb(getEnv(args.dbenvcl_id));
- if (rdb == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdb.create(this, args, reply);
- return reply;
- }
-
- public __db_cursor_reply __DB_db_cursor_4003(__db_cursor_msg args) {
- __db_cursor_reply reply = new __db_cursor_reply();
- RpcDb rdb = getDatabase(args.dbpcl_id);
- if (rdb == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdb.cursor(this, args, reply);
- return reply;
- }
-
- public __db_del_reply __DB_db_del_4003(__db_del_msg args) {
- __db_del_reply reply = new __db_del_reply();
- RpcDb rdb = getDatabase(args.dbpcl_id);
- if (rdb == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdb.del(this, args, reply);
- return reply;
- }
-
- public __db_get_encrypt_flags_reply __DB_db_get_encrypt_flags_4003(__db_get_encrypt_flags_msg args) {
- __db_get_encrypt_flags_reply reply = new __db_get_encrypt_flags_reply();
- RpcDb rdb = getDatabase(args.dbpcl_id);
- if (rdb == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdb.get_encrypt_flags(this, args, reply);
- return reply;
- }
-
- public __db_encrypt_reply __DB_db_encrypt_4003(__db_encrypt_msg args) {
- __db_encrypt_reply reply = new __db_encrypt_reply();
- RpcDb rdb = getDatabase(args.dbpcl_id);
- if (rdb == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdb.set_encrypt(this, args, reply);
- return reply;
- }
-
- public __db_get_extentsize_reply __DB_db_get_extentsize_4003(__db_get_extentsize_msg args) {
- __db_get_extentsize_reply reply = new __db_get_extentsize_reply();
- RpcDb rdb = getDatabase(args.dbpcl_id);
- if (rdb == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdb.get_q_extentsize(this, args, reply);
- return reply;
- }
-
- public __db_extentsize_reply __DB_db_extentsize_4003(__db_extentsize_msg args) {
- __db_extentsize_reply reply = new __db_extentsize_reply();
- RpcDb rdb = getDatabase(args.dbpcl_id);
- if (rdb == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdb.set_q_extentsize(this, args, reply);
- return reply;
- }
-
- public __db_get_flags_reply __DB_db_get_flags_4003(__db_get_flags_msg args) {
- __db_get_flags_reply reply = new __db_get_flags_reply();
- RpcDb rdb = getDatabase(args.dbpcl_id);
- if (rdb == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdb.get_flags(this, args, reply);
- return reply;
- }
-
- public __db_flags_reply __DB_db_flags_4003(__db_flags_msg args) {
- __db_flags_reply reply = new __db_flags_reply();
- RpcDb rdb = getDatabase(args.dbpcl_id);
- if (rdb == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdb.set_flags(this, args, reply);
- return reply;
- }
-
- public __db_get_reply __DB_db_get_4003(__db_get_msg args) {
- __db_get_reply reply = new __db_get_reply();
- RpcDb rdb = getDatabase(args.dbpcl_id);
- if (rdb == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdb.get(this, args, reply);
- return reply;
- }
-
- public __db_get_h_ffactor_reply __DB_db_get_h_ffactor_4003(__db_get_h_ffactor_msg args) {
- __db_get_h_ffactor_reply reply = new __db_get_h_ffactor_reply();
- RpcDb rdb = getDatabase(args.dbpcl_id);
- if (rdb == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdb.get_h_ffactor(this, args, reply);
- return reply;
- }
-
- public __db_h_ffactor_reply __DB_db_h_ffactor_4003(__db_h_ffactor_msg args) {
- __db_h_ffactor_reply reply = new __db_h_ffactor_reply();
- RpcDb rdb = getDatabase(args.dbpcl_id);
- if (rdb == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdb.set_h_ffactor(this, args, reply);
- return reply;
- }
-
- public __db_get_h_nelem_reply __DB_db_get_h_nelem_4003(__db_get_h_nelem_msg args) {
- __db_get_h_nelem_reply reply = new __db_get_h_nelem_reply();
- RpcDb rdb = getDatabase(args.dbpcl_id);
- if (rdb == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdb.get_h_nelem(this, args, reply);
- return reply;
- }
-
- public __db_h_nelem_reply __DB_db_h_nelem_4003(__db_h_nelem_msg args) {
- __db_h_nelem_reply reply = new __db_h_nelem_reply();
- RpcDb rdb = getDatabase(args.dbpcl_id);
- if (rdb == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdb.set_h_nelem(this, args, reply);
- return reply;
- }
-
- public __db_join_reply __DB_db_join_4003(__db_join_msg args) {
- __db_join_reply reply = new __db_join_reply();
- RpcDb rdb = getDatabase(args.dbpcl_id);
- if (rdb == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdb.join(this, args, reply);
- return reply;
- }
-
- public __db_key_range_reply __DB_db_key_range_4003(__db_key_range_msg args) {
- __db_key_range_reply reply = new __db_key_range_reply();
- RpcDb rdb = getDatabase(args.dbpcl_id);
- if (rdb == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdb.key_range(this, args, reply);
- return reply;
- }
-
- public __db_get_lorder_reply __DB_db_get_lorder_4003(__db_get_lorder_msg args) {
- __db_get_lorder_reply reply = new __db_get_lorder_reply();
- RpcDb rdb = getDatabase(args.dbpcl_id);
- if (rdb == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdb.get_lorder(this, args, reply);
- return reply;
- }
-
- public __db_lorder_reply __DB_db_lorder_4003(__db_lorder_msg args) {
- __db_lorder_reply reply = new __db_lorder_reply();
- RpcDb rdb = getDatabase(args.dbpcl_id);
- if (rdb == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdb.set_lorder(this, args, reply);
- return reply;
- }
-
- public __db_get_name_reply __DB_db_get_name_4003(__db_get_name_msg args) {
- __db_get_name_reply reply = new __db_get_name_reply();
- RpcDb rdb = getDatabase(args.dbpcl_id);
- if (rdb == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdb.get_name(this, args, reply);
- return reply;
- }
-
- public __db_get_open_flags_reply __DB_db_get_open_flags_4003(__db_get_open_flags_msg args) {
- __db_get_open_flags_reply reply = new __db_get_open_flags_reply();
- RpcDb rdb = getDatabase(args.dbpcl_id);
- if (rdb == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdb.get_open_flags(this, args, reply);
- return reply;
- }
-
- public __db_open_reply __DB_db_open_4003(__db_open_msg args) {
- __db_open_reply reply = new __db_open_reply();
- RpcDb rdb = getDatabase(args.dbpcl_id);
- if (rdb == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdb.open(this, args, reply);
- return reply;
- }
-
- public __db_get_pagesize_reply __DB_db_get_pagesize_4003(__db_get_pagesize_msg args) {
- __db_get_pagesize_reply reply = new __db_get_pagesize_reply();
- RpcDb rdb = getDatabase(args.dbpcl_id);
- if (rdb == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdb.get_pagesize(this, args, reply);
- return reply;
- }
-
- public __db_pagesize_reply __DB_db_pagesize_4003(__db_pagesize_msg args) {
- __db_pagesize_reply reply = new __db_pagesize_reply();
- RpcDb rdb = getDatabase(args.dbpcl_id);
- if (rdb == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdb.set_pagesize(this, args, reply);
- return reply;
- }
-
- public __db_pget_reply __DB_db_pget_4003(__db_pget_msg args) {
- __db_pget_reply reply = new __db_pget_reply();
- RpcDb rdb = getDatabase(args.dbpcl_id);
- if (rdb == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdb.pget(this, args, reply);
- return reply;
- }
-
- public __db_put_reply __DB_db_put_4003(__db_put_msg args) {
- __db_put_reply reply = new __db_put_reply();
- RpcDb rdb = getDatabase(args.dbpcl_id);
- if (rdb == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdb.put(this, args, reply);
- return reply;
- }
-
- public __db_remove_reply __DB_db_remove_4003(__db_remove_msg args) {
- __db_remove_reply reply = new __db_remove_reply();
- RpcDb rdb = getDatabase(args.dbpcl_id);
- if (rdb == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdb.remove(this, args, reply);
- return reply;
- }
-
- public __db_rename_reply __DB_db_rename_4003(__db_rename_msg args) {
- __db_rename_reply reply = new __db_rename_reply();
- RpcDb rdb = getDatabase(args.dbpcl_id);
- if (rdb == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdb.rename(this, args, reply);
- return reply;
- }
-
- public __db_get_re_delim_reply __DB_db_get_re_delim_4003(__db_get_re_delim_msg args) {
- __db_get_re_delim_reply reply = new __db_get_re_delim_reply();
- RpcDb rdb = getDatabase(args.dbpcl_id);
- if (rdb == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdb.get_re_delim(this, args, reply);
- return reply;
- }
-
- public __db_re_delim_reply __DB_db_re_delim_4003(__db_re_delim_msg args) {
- __db_re_delim_reply reply = new __db_re_delim_reply();
- RpcDb rdb = getDatabase(args.dbpcl_id);
- if (rdb == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdb.set_re_delim(this, args, reply);
- return reply;
- }
-
- public __db_get_re_len_reply __DB_db_get_re_len_4003(__db_get_re_len_msg args) {
- __db_get_re_len_reply reply = new __db_get_re_len_reply();
- RpcDb rdb = getDatabase(args.dbpcl_id);
- if (rdb == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdb.get_re_len(this, args, reply);
- return reply;
- }
-
- public __db_re_len_reply __DB_db_re_len_4003(__db_re_len_msg args) {
- __db_re_len_reply reply = new __db_re_len_reply();
- RpcDb rdb = getDatabase(args.dbpcl_id);
- if (rdb == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdb.set_re_len(this, args, reply);
- return reply;
- }
-
- public __db_get_re_pad_reply __DB_db_get_re_pad_4003(__db_get_re_pad_msg args) {
- __db_get_re_pad_reply reply = new __db_get_re_pad_reply();
- RpcDb rdb = getDatabase(args.dbpcl_id);
- if (rdb == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdb.get_re_pad(this, args, reply);
- return reply;
- }
-
- public __db_re_pad_reply __DB_db_re_pad_4003(__db_re_pad_msg args) {
- __db_re_pad_reply reply = new __db_re_pad_reply();
- RpcDb rdb = getDatabase(args.dbpcl_id);
- if (rdb == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdb.set_re_pad(this, args, reply);
- return reply;
- }
-
- public __db_stat_reply __DB_db_stat_4003(__db_stat_msg args) {
- __db_stat_reply reply = new __db_stat_reply();
- RpcDb rdb = getDatabase(args.dbpcl_id);
- if (rdb == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdb.stat(this, args, reply);
- return reply;
- }
-
- public __db_sync_reply __DB_db_sync_4003(__db_sync_msg args) {
- __db_sync_reply reply = new __db_sync_reply();
- RpcDb rdb = getDatabase(args.dbpcl_id);
- if (rdb == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdb.sync(this, args, reply);
- return reply;
- }
-
- public __db_truncate_reply __DB_db_truncate_4003(__db_truncate_msg args) {
- __db_truncate_reply reply = new __db_truncate_reply();
- RpcDb rdb = getDatabase(args.dbpcl_id);
- if (rdb == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdb.truncate(this, args, reply);
- return reply;
- }
-
- //// Cursor methods
-
- public __dbc_close_reply __DB_dbc_close_4003(__dbc_close_msg args) {
- __dbc_close_reply reply = new __dbc_close_reply();
- RpcDbc rdbc = getCursor(args.dbccl_id);
- if (rdbc == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdbc.close(this, args, reply);
- return reply;
- }
-
- public __dbc_count_reply __DB_dbc_count_4003(__dbc_count_msg args) {
- __dbc_count_reply reply = new __dbc_count_reply();
- RpcDbc rdbc = getCursor(args.dbccl_id);
- if (rdbc == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdbc.count(this, args, reply);
- return reply;
- }
-
- public __dbc_del_reply __DB_dbc_del_4003(__dbc_del_msg args) {
- __dbc_del_reply reply = new __dbc_del_reply();
- RpcDbc rdbc = getCursor(args.dbccl_id);
- if (rdbc == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdbc.del(this, args, reply);
- return reply;
- }
-
- public __dbc_dup_reply __DB_dbc_dup_4003(__dbc_dup_msg args) {
- __dbc_dup_reply reply = new __dbc_dup_reply();
- RpcDbc rdbc = getCursor(args.dbccl_id);
- if (rdbc == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdbc.dup(this, args, reply);
- return reply;
- }
-
- public __dbc_get_reply __DB_dbc_get_4003(__dbc_get_msg args) {
- __dbc_get_reply reply = new __dbc_get_reply();
- RpcDbc rdbc = getCursor(args.dbccl_id);
- if (rdbc == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdbc.get(this, args, reply);
- return reply;
- }
-
- public __dbc_pget_reply __DB_dbc_pget_4003(__dbc_pget_msg args) {
- __dbc_pget_reply reply = new __dbc_pget_reply();
- RpcDbc rdbc = getCursor(args.dbccl_id);
- if (rdbc == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdbc.pget(this, args, reply);
- return reply;
- }
-
- public __dbc_put_reply __DB_dbc_put_4003(__dbc_put_msg args) {
- __dbc_put_reply reply = new __dbc_put_reply();
- RpcDbc rdbc = getCursor(args.dbccl_id);
- if (rdbc == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdbc.put(this, args, reply);
- return reply;
- }
-
- //// Environment methods
-
- public __env_get_cachesize_reply __DB_env_get_cachesize_4003(__env_get_cachesize_msg args) {
- __env_get_cachesize_reply reply = new __env_get_cachesize_reply();
- RpcDbEnv rdbenv = getEnv(args.dbenvcl_id);
- if (rdbenv == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdbenv.get_cachesize(this, args, reply);
- return reply;
- }
-
- public __env_cachesize_reply __DB_env_cachesize_4003(__env_cachesize_msg args) {
- __env_cachesize_reply reply = new __env_cachesize_reply();
- RpcDbEnv rdbenv = getEnv(args.dbenvcl_id);
- if (rdbenv == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdbenv.set_cachesize(this, args, reply);
- return reply;
- }
-
- public __env_close_reply __DB_env_close_4003(__env_close_msg args) {
- __env_close_reply reply = new __env_close_reply();
- RpcDbEnv rdbenv = getEnv(args.dbenvcl_id);
- if (rdbenv == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdbenv.close(this, args, reply);
- return reply;
- }
-
- public __env_create_reply __DB_env_create_4003(__env_create_msg args) {
- __env_create_reply reply = new __env_create_reply();
- RpcDbEnv rdbenv = new RpcDbEnv();
- rdbenv.create(this, args, reply);
- return reply;
- }
-
- public __env_dbremove_reply __DB_env_dbremove_4003(__env_dbremove_msg args) {
- __env_dbremove_reply reply = new __env_dbremove_reply();
- RpcDbEnv rdbenv = getEnv(args.dbenvcl_id);
- if (rdbenv == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdbenv.dbremove(this, args, reply);
- return reply;
- }
-
- public __env_dbrename_reply __DB_env_dbrename_4003(__env_dbrename_msg args) {
- __env_dbrename_reply reply = new __env_dbrename_reply();
- RpcDbEnv rdbenv = getEnv(args.dbenvcl_id);
- if (rdbenv == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdbenv.dbrename(this, args, reply);
- return reply;
- }
-
- public __env_get_encrypt_flags_reply __DB_env_get_encrypt_flags_4003(__env_get_encrypt_flags_msg args) {
- __env_get_encrypt_flags_reply reply = new __env_get_encrypt_flags_reply();
- RpcDbEnv rdbenv = getEnv(args.dbenvcl_id);
- if (rdbenv == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdbenv.get_encrypt_flags(this, args, reply);
- return reply;
- }
-
- public __env_encrypt_reply __DB_env_encrypt_4003(__env_encrypt_msg args) {
- __env_encrypt_reply reply = new __env_encrypt_reply();
- RpcDbEnv rdbenv = getEnv(args.dbenvcl_id);
- if (rdbenv == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdbenv.set_encrypt(this, args, reply);
- return reply;
- }
-
- public __env_get_flags_reply __DB_env_get_flags_4003(__env_get_flags_msg args) {
- __env_get_flags_reply reply = new __env_get_flags_reply();
- RpcDbEnv rdbenv = getEnv(args.dbenvcl_id);
- if (rdbenv == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdbenv.get_flags(this, args, reply);
- return reply;
- }
-
- public __env_flags_reply __DB_env_flags_4003(__env_flags_msg args) {
- __env_flags_reply reply = new __env_flags_reply();
- RpcDbEnv rdbenv = getEnv(args.dbenvcl_id);
- if (rdbenv == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdbenv.set_flags(this, args, reply);
- return reply;
- }
-
- public __env_get_home_reply __DB_env_get_home_4003(__env_get_home_msg args) {
- __env_get_home_reply reply = new __env_get_home_reply();
- RpcDbEnv rdbenv = getEnv(args.dbenvcl_id);
- if (rdbenv == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdbenv.get_home(this, args, reply);
- return reply;
- }
-
- public __env_get_open_flags_reply __DB_env_get_open_flags_4003(__env_get_open_flags_msg args) {
- __env_get_open_flags_reply reply = new __env_get_open_flags_reply();
- RpcDbEnv rdbenv = getEnv(args.dbenvcl_id);
- if (rdbenv == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdbenv.get_open_flags(this, args, reply);
- return reply;
- }
-
- public __env_open_reply __DB_env_open_4003(__env_open_msg args) {
- __env_open_reply reply = new __env_open_reply();
- RpcDbEnv rdbenv = getEnv(args.dbenvcl_id);
- if (rdbenv == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdbenv.open(this, args, reply);
- return reply;
- }
-
- public __env_remove_reply __DB_env_remove_4003(__env_remove_msg args) {
- __env_remove_reply reply = new __env_remove_reply();
- RpcDbEnv rdbenv = getEnv(args.dbenvcl_id);
- if (rdbenv == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdbenv.remove(this, args, reply);
- return reply;
- }
-
- //// Transaction methods
-
- public __txn_abort_reply __DB_txn_abort_4003(__txn_abort_msg args) {
- __txn_abort_reply reply = new __txn_abort_reply();
- RpcDbTxn rdbtxn = getTxn(args.txnpcl_id);
- if (rdbtxn == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdbtxn.abort(this, args, reply);
- return reply;
- }
-
- public __txn_begin_reply __DB_txn_begin_4003(__txn_begin_msg args) {
- __txn_begin_reply reply = new __txn_begin_reply();
- RpcDbTxn rdbtxn = new RpcDbTxn(getEnv(args.dbenvcl_id), null);
- rdbtxn.begin(this, args, reply);
- return reply;
- }
-
- public __txn_commit_reply __DB_txn_commit_4003(__txn_commit_msg args) {
- __txn_commit_reply reply = new __txn_commit_reply();
- RpcDbTxn rdbtxn = getTxn(args.txnpcl_id);
- if (rdbtxn == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdbtxn.commit(this, args, reply);
- return reply;
- }
-
- public __txn_discard_reply __DB_txn_discard_4003(__txn_discard_msg args) {
- __txn_discard_reply reply = new __txn_discard_reply();
- RpcDbTxn rdbtxn = getTxn(args.txnpcl_id);
- if (rdbtxn == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdbtxn.discard(this, args, reply);
- return reply;
- }
-
- public __txn_prepare_reply __DB_txn_prepare_4003(__txn_prepare_msg args) {
- __txn_prepare_reply reply = new __txn_prepare_reply();
- RpcDbTxn rdbtxn = getTxn(args.txnpcl_id);
- if (rdbtxn == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdbtxn.prepare(this, args, reply);
- return reply;
- }
-
- public __txn_recover_reply __DB_txn_recover_4003(__txn_recover_msg args) {
- __txn_recover_reply reply = new __txn_recover_reply();
- RpcDbEnv rdbenv = getEnv(args.dbenvcl_id);
- if (rdbenv == null)
- reply.status = DbConstants.DB_NOSERVER_ID;
- else
- rdbenv.txn_recover(this, args, reply);
- return reply;
- }
-}
diff --git a/db/rpc_server/java/FreeList.java b/db/rpc_server/java/FreeList.java
deleted file mode 100644
index bec2b8772..000000000
--- a/db/rpc_server/java/FreeList.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2001-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: FreeList.java,v 1.7 2004/04/06 20:43:41 mjc Exp $
- */
-
-package com.sleepycat.db.rpcserver;
-
-import java.util.*;
-
-/**
- * Keep track of a list of objects by id with a free list.
- * Intentionally package-protected exposure.
- */
-class FreeList {
- class FreeIndex {
- int index;
- FreeIndex(int index) { this.index = index; }
- int getIndex() { return index; }
- }
-
- Vector items = new Vector();
- FreeIndex free_head = null;
-
- public synchronized int add(Object obj) {
- int pos;
- if (free_head == null) {
- pos = items.size();
- items.addElement(obj);
- if (pos + 1 % 1000 == 0)
- Server.err.println(this + " grew to size " + (pos + 1));
- } else {
- pos = free_head.getIndex();
- free_head = (FreeIndex)items.elementAt(pos);
- items.setElementAt(obj, pos);
- }
- return pos;
- }
-
- public synchronized void del(int pos) {
- Object obj = items.elementAt(pos);
- if (obj != null && obj instanceof FreeIndex)
- throw new NoSuchElementException("index " + pos + " has already been freed");
- items.setElementAt(free_head, pos);
- free_head = new FreeIndex(pos);
- }
-
- public void del(Object obj) {
- del(items.indexOf(obj));
- }
-
- public Object get(int pos) {
- Object obj = items.elementAt(pos);
- if (obj instanceof FreeIndex)
- obj = null;
- return obj;
- }
-
- public LocalIterator iterator() {
- return new FreeListIterator();
- }
-
- /**
- * Iterator for a FreeList. Note that this class doesn't implement
- * java.util.Iterator to maintain compatibility with Java 1.1
- * Intentionally package-protected exposure.
- */
- class FreeListIterator implements LocalIterator {
- int current;
-
- FreeListIterator() { current = findNext(-1); }
-
- private int findNext(int start) {
- int next = start;
- while (++next < items.size()) {
- Object obj = items.elementAt(next);
- if (obj == null || !(obj instanceof FreeIndex))
- break;
- }
- return next;
- }
-
- public boolean hasNext() {
- return (findNext(current) < items.size());
- }
-
- public Object next() {
- current = findNext(current);
- if (current == items.size())
- throw new NoSuchElementException("enumerated past end of FreeList");
- return items.elementAt(current);
- }
-
- public void remove() {
- del(current);
- }
- }
-}
diff --git a/db/rpc_server/java/JoinCursorAdapter.java b/db/rpc_server/java/JoinCursorAdapter.java
deleted file mode 100644
index 78495f28f..000000000
--- a/db/rpc_server/java/JoinCursorAdapter.java
+++ /dev/null
@@ -1,170 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2001-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: JoinCursorAdapter.java,v 1.1 2004/04/06 20:43:41 mjc Exp $
- */
-
-package com.sleepycat.db.rpcserver;
-
-import com.sleepycat.db.*;
-
-class JoinCursorAdapter extends Cursor {
- JoinCursor jc;
-
- JoinCursorAdapter(Database database, JoinCursor jc)
- throws DatabaseException {
- this.database = database;
- this.config = new CursorConfig();
- this.jc = jc;
- }
-
- public synchronized void close()
- throws DatabaseException {
- jc.close();
- }
-
- public Cursor dup(boolean samePosition)
- throws DatabaseException {
- throw new UnsupportedOperationException("not supported on join cursors");
- }
-
- public int count()
- throws DatabaseException {
- throw new UnsupportedOperationException("not supported on join cursors");
- }
-
- public OperationStatus delete()
- throws DatabaseException {
- throw new UnsupportedOperationException("not supported on join cursors");
- }
-
- public OperationStatus getCurrent(DatabaseEntry key,
- DatabaseEntry data,
- LockMode lockMode)
- throws DatabaseException {
- throw new UnsupportedOperationException("not supported on join cursors");
- }
-
- public OperationStatus getFirst(DatabaseEntry key,
- DatabaseEntry data,
- LockMode lockMode)
- throws DatabaseException {
- throw new UnsupportedOperationException("not supported on join cursors");
- }
-
- public OperationStatus getLast(DatabaseEntry key,
- DatabaseEntry data,
- LockMode lockMode)
- throws DatabaseException {
- throw new UnsupportedOperationException("not supported on join cursors");
- }
-
- public OperationStatus getNext(DatabaseEntry key,
- DatabaseEntry data,
- LockMode lockMode)
- throws DatabaseException {
- throw new UnsupportedOperationException("not supported on join cursors");
- }
-
- public OperationStatus getNextDup(DatabaseEntry key,
- DatabaseEntry data,
- LockMode lockMode)
- throws DatabaseException {
- throw new UnsupportedOperationException("not supported on join cursors");
- }
-
- public OperationStatus getNextNoDup(DatabaseEntry key,
- DatabaseEntry data,
- LockMode lockMode)
- throws DatabaseException {
- throw new UnsupportedOperationException("not supported on join cursors");
- }
-
- public OperationStatus getPrev(DatabaseEntry key,
- DatabaseEntry data,
- LockMode lockMode)
- throws DatabaseException {
- throw new UnsupportedOperationException("not supported on join cursors");
- }
-
- public OperationStatus getPrevDup(DatabaseEntry key,
- DatabaseEntry data,
- LockMode lockMode)
- throws DatabaseException {
- throw new UnsupportedOperationException("not supported on join cursors");
- }
-
- public OperationStatus getPrevNoDup(DatabaseEntry key,
- DatabaseEntry data,
- LockMode lockMode)
- throws DatabaseException {
- throw new UnsupportedOperationException("not supported on join cursors");
- }
-
- public OperationStatus getRecordNumber(DatabaseEntry recno,
- LockMode lockMode)
- throws DatabaseException {
- throw new UnsupportedOperationException("not supported on join cursors");
- }
-
- public OperationStatus getSearchKey(DatabaseEntry key,
- DatabaseEntry data,
- LockMode lockMode)
- throws DatabaseException {
- throw new UnsupportedOperationException("not supported on join cursors");
- }
-
- public OperationStatus getSearchKeyRange(DatabaseEntry key,
- DatabaseEntry data,
- LockMode lockMode)
- throws DatabaseException {
- throw new UnsupportedOperationException("not supported on join cursors");
- }
-
- public OperationStatus getSearchBoth(DatabaseEntry key,
- DatabaseEntry data,
- LockMode lockMode)
- throws DatabaseException {
- throw new UnsupportedOperationException("not supported on join cursors");
- }
-
- public OperationStatus getSearchBothRange(DatabaseEntry key,
- DatabaseEntry data,
- LockMode lockMode)
- throws DatabaseException {
- throw new UnsupportedOperationException("not supported on join cursors");
- }
-
- public OperationStatus put(DatabaseEntry key, DatabaseEntry data)
- throws DatabaseException {
- throw new UnsupportedOperationException("not supported on join cursors");
- }
-
- public OperationStatus putNoOverwrite(DatabaseEntry key, DatabaseEntry data)
- throws DatabaseException {
- throw new UnsupportedOperationException("not supported on join cursors");
- }
-
- public OperationStatus putKeyFirst(DatabaseEntry key, DatabaseEntry data)
- throws DatabaseException {
- throw new UnsupportedOperationException("not supported on join cursors");
- }
-
- public OperationStatus putKeyLast(DatabaseEntry key, DatabaseEntry data)
- throws DatabaseException {
- throw new UnsupportedOperationException("not supported on join cursors");
- }
-
- public OperationStatus putNoDupData(DatabaseEntry key, DatabaseEntry data)
- throws DatabaseException {
- throw new UnsupportedOperationException("not supported on join cursors");
- }
-
- public OperationStatus putCurrent(DatabaseEntry data)
- throws DatabaseException {
- throw new UnsupportedOperationException("not supported on join cursors");
- }
-}
diff --git a/db/rpc_server/java/LocalIterator.java b/db/rpc_server/java/LocalIterator.java
deleted file mode 100644
index f142eb318..000000000
--- a/db/rpc_server/java/LocalIterator.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2001-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: LocalIterator.java,v 1.5 2004/04/06 20:43:41 mjc Exp $
- */
-
-package com.sleepycat.db.rpcserver;
-
-import java.util.*;
-
-/**
- * Iterator interface. Note that this matches java.util.Iterator
- * but maintains compatibility with Java 1.1
- * Intentionally package-protected exposure.
- */
-interface LocalIterator {
- boolean hasNext();
- Object next();
- void remove();
-}
diff --git a/db/rpc_server/java/README b/db/rpc_server/java/README
deleted file mode 100644
index f29c87805..000000000
--- a/db/rpc_server/java/README
+++ /dev/null
@@ -1,27 +0,0 @@
-Berkeley DB Java RPC server.
-
-Copyright (c) 2002-2004
- Sleepycat Software. All rights reserved.
-
-The Java implementation of the Berkeley DB RPC server is intended
-primarily for testing purposes. It provides the same interface
-as the C and C++ RPC servers, but is implemented via the Java API
-rather than the C or C++ APIs. This allows the existing Tcl test
-suite to exercise the Java API without modification.
-
-The Java RPC server relies on a Java version of rpcgen to
-automatically generate appropriate Java classes from the RPC
-interface specification (../db_server.x). We use jrpcgen, which
-is part of the Remote Tea for Java project:
- acplt.plt.rwth-aachen.de/ks/english/remotetea.html
-
-To rebuild the Java stubs from db_server.x, you will need to
-download the full Remote Tea package, but if you just want to
-compile the Java sources and run the Java RPC server, the runtime
-component of Remote Tea is included in oncrpc.jar. Building
-the Java RPC server is automatic when Berkeley DB is configured
-with the both --enable-rpc and --enable-java.
-
-All of the Remote Tea project is licensed under the Library GNU
-Public License, and we have made no modifications to their
-released code.
diff --git a/db/rpc_server/java/RpcDb.java b/db/rpc_server/java/RpcDb.java
deleted file mode 100644
index bcdb861e3..000000000
--- a/db/rpc_server/java/RpcDb.java
+++ /dev/null
@@ -1,780 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2001-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: RpcDb.java,v 1.24 2004/11/05 00:42:40 mjc Exp $
- */
-
-package com.sleepycat.db.rpcserver;
-
-import com.sleepycat.db.*;
-import com.sleepycat.db.internal.DbConstants;
-import java.io.*;
-import java.util.*;
-
-/**
- * RPC wrapper around a db object for the Java RPC server.
- */
-public class RpcDb extends Timer {
- static final byte[] empty = new byte[0];
- DatabaseConfig config;
- Database db;
- RpcDbEnv rdbenv;
- int refcount = 0;
- String dbname, subdbname;
- int type, setflags, openflags;
-
- public RpcDb(RpcDbEnv rdbenv) {
- this.rdbenv = rdbenv;
- }
-
- void dispose() {
- if (db != null) {
- try {
- db.close();
- } catch (Throwable t) {
- Util.handleException(t);
- }
- db = null;
- }
- }
-
- public void associate(Dispatcher server,
- __db_associate_msg args, __db_associate_reply reply) {
- try {
- // The semantics of the new API are a little different.
- // The secondary database will already be open, here, so we first
- // have to close it and then call openSecondaryDatabase.
- RpcDb secondary = server.getDatabase(args.sdbpcl_id);
- try {
- secondary.db.close();
- } finally {
- secondary.db = null;
- }
-
- RpcDbTxn rtxn = server.getTxn(args.txnpcl_id);
- Transaction txn = (rtxn != null) ? rtxn.txn : null;
-
- args.flags &= ~AssociateCallbacks.DB_RPC2ND_MASK;
- SecondaryConfig secondaryConfig = new SecondaryConfig();
- // The secondary has already been opened once, so we don't
- // need all of the settings here, only a few:
- secondaryConfig.setReadOnly(secondary.config.getReadOnly());
- secondaryConfig.setTransactional(secondary.config.getTransactional());
- secondaryConfig.setKeyCreator(AssociateCallbacks.getCallback(args.flags));
- secondaryConfig.setAllowPopulate((args.flags & DbConstants.DB_CREATE) != 0);
- secondary.db = rdbenv.dbenv.openSecondaryDatabase(txn, secondary.dbname, secondary.subdbname, db, secondaryConfig);
- secondary.config = secondary.db.getConfig();
- reply.status = 0;
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- }
- }
-
- public void close(Dispatcher server,
- __db_close_msg args, __db_close_reply reply) {
- if (refcount == 0 || --refcount > 0) {
- reply.status = 0;
- return;
- }
-
- try {
- server.delDatabase(this, false);
- if (db != null)
- db.close((args.flags & DbConstants.DB_NOSYNC) != 0);
- reply.status = 0;
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- } finally {
- db = null;
- }
- }
-
- public void create(Dispatcher server,
- __db_create_msg args, __db_create_reply reply) {
- try {
- config = new DatabaseConfig();
- config.setXACreate((args.flags & DbConstants.DB_XA_CREATE) != 0);
- reply.dbcl_id = server.addDatabase(this);
- reply.status = 0;
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- }
- }
-
- public void cursor(Dispatcher server,
- __db_cursor_msg args, __db_cursor_reply reply) {
- try {
- RpcDbTxn rtxn = server.getTxn(args.txnpcl_id);
- Transaction txn = (rtxn != null) ? rtxn.txn : null;
-
- CursorConfig config = new CursorConfig();
- config.setDirtyRead((args.flags & DbConstants.DB_DIRTY_READ) != 0);
- config.setDegree2((args.flags & DbConstants.DB_DEGREE_2) != 0);
- config.setWriteCursor((args.flags & DbConstants.DB_WRITECURSOR) != 0);
-
- Cursor dbc = db.openCursor(txn, config);
- RpcDbc rdbc = new RpcDbc(this, dbc, false);
- rdbc.timer = (rtxn != null) ? rtxn.timer : this;
- reply.dbcidcl_id = server.addCursor(rdbc);
- reply.status = 0;
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- }
- }
-
- public void del(Dispatcher server,
- __db_del_msg args, __db_del_reply reply) {
- try {
- RpcDbTxn rtxn = server.getTxn(args.txnpcl_id);
- Transaction txn = (rtxn != null) ? rtxn.txn : null;
- DatabaseEntry key = Util.makeDatabaseEntry(args.keydata, args.keydlen, args.keydoff, args.keyulen, args.keyflags);
-
- db.delete(txn, key /* args.flags == 0 */);
- reply.status = 0;
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- }
- }
-
- public void get(Dispatcher server,
- __db_get_msg args, __db_get_reply reply) {
- try {
- RpcDbTxn rtxn = server.getTxn(args.txnpcl_id);
- Transaction txn = (rtxn != null) ? rtxn.txn : null;
- DatabaseEntry key = Util.makeDatabaseEntry(args.keydata, args.keydlen, args.keydoff, args.keyulen, args.keyflags);
- DatabaseEntry data = Util.makeDatabaseEntry(args.datadata,
- args.datadlen, args.datadoff, args.dataulen, args.dataflags,
- args.flags & DbConstants.DB_MULTIPLE);
-
- OperationStatus status;
- switch(args.flags & ~Server.DB_MODIFIER_MASK) {
- case 0:
- status = db.get(txn, key, data, Util.getLockMode(args.flags));
- break;
-
- case DbConstants.DB_CONSUME:
- status = db.consume(txn, key, data, false);
- break;
-
- case DbConstants.DB_CONSUME_WAIT:
- status = db.consume(txn, key, data, true);
- break;
-
- case DbConstants.DB_GET_BOTH:
- status = db.getSearchBoth(txn, key, data, Util.getLockMode(args.flags));
- break;
-
- case DbConstants.DB_SET_RECNO:
- status = db.getSearchRecordNumber(txn, key, data, Util.getLockMode(args.flags));
- break;
-
- default:
- throw new UnsupportedOperationException("Unknown flag: " + (args.flags & ~Server.DB_MODIFIER_MASK));
- }
- reply.status = Util.getStatus(status);
-
- reply.keydata = Util.returnDatabaseEntry(key);
- reply.datadata = Util.returnDatabaseEntry(data);
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- reply.keydata = reply.datadata = empty;
- }
- }
-
- public void join(Dispatcher server,
- __db_join_msg args, __db_join_reply reply) {
- try {
- Cursor[] cursors = new Cursor[args.curs.length + 1];
- for (int i = 0; i < args.curs.length; i++) {
- RpcDbc rdbc = server.getCursor(args.curs[i]);
- if (rdbc == null) {
- reply.status = DbConstants.DB_NOSERVER_ID;
- return;
- }
- cursors[i] = rdbc.dbc;
- }
- cursors[args.curs.length] = null;
-
- JoinConfig config = new JoinConfig();
- config.setNoSort(args.flags == DbConstants.DB_JOIN_NOSORT);
- JoinCursor jdbc = db.join(cursors, config);
-
- RpcDbc rjdbc = new RpcDbc(this, new JoinCursorAdapter(db, jdbc), true);
- /*
- * If our curslist has a parent txn, we need to use it too
- * for the activity timeout. All cursors must be part of
- * the same transaction, so just check the first.
- */
- RpcDbc rdbc0 = server.getCursor(args.curs[0]);
- if (rdbc0.timer != rdbc0)
- rjdbc.timer = rdbc0.timer;
-
- /*
- * All of the curslist cursors must point to the join
- * cursor's timeout so that we do not timeout any of the
- * curlist cursors while the join cursor is active.
- */
- for (int i = 0; i < args.curs.length; i++) {
- RpcDbc rdbc = server.getCursor(args.curs[i]);
- rdbc.orig_timer = rdbc.timer;
- rdbc.timer = rjdbc;
- }
- reply.dbcidcl_id = server.addCursor(rjdbc);
- reply.status = 0;
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- }
- }
-
- public void key_range(Dispatcher server,
- __db_key_range_msg args, __db_key_range_reply reply) {
- try {
- RpcDbTxn rtxn = server.getTxn(args.txnpcl_id);
- Transaction txn = (rtxn != null) ? rtxn.txn : null;
- DatabaseEntry key = Util.makeDatabaseEntry(args.keydata, args.keydlen, args.keydoff, args.keyulen, args.keyflags);
-
- KeyRange range = db.getKeyRange(txn, key /*, args.flags == 0 */);
- reply.status = 0;
- reply.less = range.less;
- reply.equal = range.equal;
- reply.greater = range.greater;
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- }
- }
-
- private boolean findSharedDatabase(Dispatcher server, __db_open_reply reply)
- throws DatabaseException {
- RpcDb rdb = null;
- boolean matchFound = false;
- LocalIterator i = ((Server)server).db_list.iterator();
-
- while (!matchFound && i.hasNext()) {
- rdb = (RpcDb)i.next();
- if (rdb != null && rdb != this && rdb.rdbenv == rdbenv &&
- (type == DbConstants.DB_UNKNOWN || rdb.type == type) &&
- openflags == rdb.openflags &&
- setflags == rdb.setflags &&
- dbname != null && rdb.dbname != null &&
- dbname.equals(rdb.dbname) &&
- (subdbname == rdb.subdbname ||
- (subdbname != null && rdb.subdbname != null &&
- subdbname.equals(rdb.subdbname))))
- matchFound = true;
- }
-
- if (matchFound) {
- ++rdb.refcount;
- reply.dbcl_id = ((FreeList.FreeListIterator)i).current;
- reply.type = Util.fromDatabaseType(rdb.config.getType());
- reply.lorder = rdb.config.getByteOrder();
- reply.status = 0;
-
- // Server.err.println("Sharing Database: " + reply.dbcl_id);
- }
-
- return matchFound;
- }
-
- public void get_name(Dispatcher server,
- __db_get_name_msg args, __db_get_name_reply reply) {
- reply.filename = dbname;
- reply.dbname = subdbname;
- reply.status = 0;
- }
-
- public void get_open_flags(Dispatcher server,
- __db_get_open_flags_msg args, __db_get_open_flags_reply reply) {
- try {
- reply.flags = 0;
- if (config.getAllowCreate()) reply.flags |= DbConstants.DB_CREATE;
- if (config.getExclusiveCreate()) reply.flags |= DbConstants.DB_EXCL;
- if (config.getReadOnly()) reply.flags |= DbConstants.DB_RDONLY;
- reply.status = 0;
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- }
- }
-
- public void open(Dispatcher server,
- __db_open_msg args, __db_open_reply reply) {
- try {
- dbname = (args.name.length() > 0) ? args.name : null;
- subdbname = (args.subdb.length() > 0) ? args.subdb : null;
- type = args.type;
- openflags = args.flags & Server.DB_SERVER_DBFLAGS;
-
- if (findSharedDatabase(server, reply)) {
- server.delDatabase(this, true);
- } else {
- RpcDbTxn rtxn = server.getTxn(args.txnpcl_id);
- Transaction txn = (rtxn != null) ? rtxn.txn : null;
-
- // Server.err.println("Calling db.open(" + null + ", " + dbname + ", " + subdbname + ", " + args.type + ", " + Integer.toHexString(args.flags) + ", " + args.mode + ")");
-
- config.setAllowCreate((args.flags & DbConstants.DB_CREATE) != 0);
- config.setExclusiveCreate((args.flags & DbConstants.DB_EXCL) != 0);
- config.setReadOnly((args.flags & DbConstants.DB_RDONLY) != 0);
- config.setTransactional(txn != null || (args.flags & DbConstants.DB_AUTO_COMMIT) != 0);
- config.setTruncate((args.flags & DbConstants.DB_TRUNCATE) != 0);
- config.setType(Util.toDatabaseType(args.type));
- config.setMode(args.mode);
-
- db = rdbenv.dbenv.openDatabase(txn, dbname, subdbname, config);
- ++refcount;
-
- // Refresh config in case we didn't know the full story before opening
- config = db.getConfig();
-
- reply.dbcl_id = args.dbpcl_id;
- type = reply.type = Util.fromDatabaseType(config.getType());
- reply.lorder = config.getByteOrder();
- reply.status = 0;
- }
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- }
-
- // System.err.println("Database.open: reply.status = " + reply.status + ", reply.dbcl_id = " + reply.dbcl_id);
- }
-
- public void pget(Dispatcher server,
- __db_pget_msg args, __db_pget_reply reply) {
- try {
- RpcDbTxn rtxn = server.getTxn(args.txnpcl_id);
- Transaction txn = (rtxn != null) ? rtxn.txn : null;
- DatabaseEntry skey = Util.makeDatabaseEntry(args.skeydata, args.skeydlen, args.skeydoff, args.skeyulen, args.skeyflags);
- DatabaseEntry pkey = Util.makeDatabaseEntry(args.pkeydata, args.pkeydlen, args.pkeydoff, args.pkeyulen, args.pkeyflags);
- DatabaseEntry data = Util.makeDatabaseEntry(args.datadata, args.datadlen, args.datadoff, args.dataulen, args.dataflags);
-
- OperationStatus status;
- switch(args.flags & ~Server.DB_MODIFIER_MASK) {
- case 0:
- status = ((SecondaryDatabase)db).get(txn, skey, pkey, data, Util.getLockMode(args.flags));
- break;
-
- case DbConstants.DB_GET_BOTH:
- status = ((SecondaryDatabase)db).getSearchBoth(txn, skey, pkey, data, Util.getLockMode(args.flags));
- break;
-
- case DbConstants.DB_SET_RECNO:
- status = ((SecondaryDatabase)db).getSearchRecordNumber(txn, skey, pkey, data, Util.getLockMode(args.flags));
- break;
-
- default:
- throw new UnsupportedOperationException("Unknown flag: " + (args.flags & ~Server.DB_MODIFIER_MASK));
- }
- reply.status = Util.getStatus(status);
-
- reply.skeydata = Util.returnDatabaseEntry(skey);
- reply.pkeydata = Util.returnDatabaseEntry(pkey);
- reply.datadata = Util.returnDatabaseEntry(data);
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- reply.skeydata = reply.pkeydata = reply.datadata = empty;
- }
- }
-
- public void put(Dispatcher server,
- __db_put_msg args, __db_put_reply reply) {
- try {
- RpcDbTxn rtxn = server.getTxn(args.txnpcl_id);
- Transaction txn = (rtxn != null) ? rtxn.txn : null;
-
- DatabaseEntry key = Util.makeDatabaseEntry(args.keydata, args.keydlen, args.keydoff, args.keyulen, args.keyflags);
- DatabaseEntry data = Util.makeDatabaseEntry(args.datadata, args.datadlen, args.datadoff, args.dataulen, args.dataflags);
-
- reply.keydata = empty;
- OperationStatus status;
- switch(args.flags & ~Server.DB_MODIFIER_MASK) {
- case 0:
- status = db.put(txn, key, data);
- break;
-
- case DbConstants.DB_APPEND:
- status = db.append(txn, key, data);
- reply.keydata = Util.returnDatabaseEntry(key);
- break;
-
- case DbConstants.DB_NODUPDATA:
- status = db.putNoDupData(txn, key, data);
- break;
-
- case DbConstants.DB_NOOVERWRITE:
- status = db.putNoOverwrite(txn, key, data);
- break;
-
- default:
- throw new UnsupportedOperationException("Unknown flag: " + (args.flags & ~Server.DB_MODIFIER_MASK));
- }
- reply.status = Util.getStatus(status);
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- reply.keydata = empty;
- }
- }
-
- public void remove(Dispatcher server,
- __db_remove_msg args, __db_remove_reply reply) {
- try {
- args.name = (args.name.length() > 0) ? args.name : null;
- args.subdb = (args.subdb.length() > 0) ? args.subdb : null;
- Database.remove(args.name, args.subdb, config);
- reply.status = 0;
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- } finally {
- server.delDatabase(this, false);
- }
- }
-
- public void rename(Dispatcher server,
- __db_rename_msg args, __db_rename_reply reply) {
- try {
- args.name = (args.name.length() > 0) ? args.name : null;
- args.subdb = (args.subdb.length() > 0) ? args.subdb : null;
- args.newname = (args.newname.length() > 0) ? args.newname : null;
- Database.rename(args.name, args.subdb, args.newname, config);
- reply.status = 0;
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- } finally {
- server.delDatabase(this, false);
- }
- }
-
- public void set_bt_maxkey(Dispatcher server,
- __db_bt_maxkey_msg args, __db_bt_maxkey_reply reply) {
- try {
- // XXX: check what to do about: config.setBtreeMaxKey(args.maxkey);
- reply.status = 0;
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- }
- }
-
- public void get_bt_minkey(Dispatcher server,
- __db_get_bt_minkey_msg args, __db_get_bt_minkey_reply reply) {
- try {
- reply.minkey = config.getBtreeMinKey();
- reply.status = 0;
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- }
- }
-
- public void set_bt_minkey(Dispatcher server,
- __db_bt_minkey_msg args, __db_bt_minkey_reply reply) {
- try {
- config.setBtreeMinKey(args.minkey);
- reply.status = 0;
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- }
- }
-
- public void get_encrypt_flags(Dispatcher server,
- __db_get_encrypt_flags_msg args, __db_get_encrypt_flags_reply reply) {
- try {
- reply.flags = config.getEncrypted() ? DbConstants.DB_ENCRYPT_AES : 0;
- reply.status = 0;
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- }
- }
-
- public void set_encrypt(Dispatcher server,
- __db_encrypt_msg args, __db_encrypt_reply reply) {
- try {
- config.setEncrypted(args.passwd /*, args.flags == 0 */);
- reply.status = 0;
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- }
- }
-
- public void get_flags(Dispatcher server,
- __db_get_flags_msg args, __db_get_flags_reply reply) {
- try {
- reply.flags = 0;
- if (config.getChecksum()) reply.flags |= DbConstants.DB_CHKSUM;
- if (config.getEncrypted()) reply.flags |= DbConstants.DB_ENCRYPT;
- if (config.getBtreeRecordNumbers()) reply.flags |= DbConstants.DB_RECNUM;
- if (config.getRenumbering()) reply.flags |= DbConstants.DB_RENUMBER;
- if (config.getReverseSplitOff()) reply.flags |= DbConstants.DB_REVSPLITOFF;
- if (config.getSortedDuplicates()) reply.flags |= DbConstants.DB_DUPSORT;
- if (config.getSnapshot()) reply.flags |= DbConstants.DB_SNAPSHOT;
- if (config.getUnsortedDuplicates()) reply.flags |= DbConstants.DB_DUP;
- if (config.getTransactionNotDurable()) reply.flags |= DbConstants.DB_TXN_NOT_DURABLE;
- reply.status = 0;
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- }
- }
-
- public void set_flags(Dispatcher server,
- __db_flags_msg args, __db_flags_reply reply) {
- try {
- // Server.err.println("Calling db.setflags(" + Integer.toHexString(args.flags) + ")");
- config.setChecksum((args.flags & DbConstants.DB_CHKSUM) != 0);
- config.setBtreeRecordNumbers((args.flags & DbConstants.DB_RECNUM) != 0);
- config.setRenumbering((args.flags & DbConstants.DB_RENUMBER) != 0);
- config.setReverseSplitOff((args.flags & DbConstants.DB_REVSPLITOFF) != 0);
- config.setSortedDuplicates((args.flags & DbConstants.DB_DUPSORT) != 0);
- config.setSnapshot((args.flags & DbConstants.DB_SNAPSHOT) != 0);
- config.setUnsortedDuplicates((args.flags & DbConstants.DB_DUP) != 0);
- config.setTransactionNotDurable((args.flags & DbConstants.DB_TXN_NOT_DURABLE) != 0);
-
- setflags |= args.flags;
- reply.status = 0;
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- }
- }
-
- public void get_h_ffactor(Dispatcher server,
- __db_get_h_ffactor_msg args, __db_get_h_ffactor_reply reply) {
- try {
- reply.ffactor = config.getHashFillFactor();
- reply.status = 0;
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- }
- }
-
- public void set_h_ffactor(Dispatcher server,
- __db_h_ffactor_msg args, __db_h_ffactor_reply reply) {
- try {
- config.setHashFillFactor(args.ffactor);
- reply.status = 0;
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- }
- }
-
- public void get_h_nelem(Dispatcher server,
- __db_get_h_nelem_msg args, __db_get_h_nelem_reply reply) {
- try {
- reply.nelem = config.getHashNumElements();
- reply.status = 0;
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- }
- }
-
- public void set_h_nelem(Dispatcher server,
- __db_h_nelem_msg args, __db_h_nelem_reply reply) {
- try {
- config.setHashNumElements(args.nelem);
- reply.status = 0;
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- }
- }
-
- public void get_lorder(Dispatcher server,
- __db_get_lorder_msg args, __db_get_lorder_reply reply) {
- try {
- reply.lorder = config.getByteOrder();
- reply.status = 0;
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- }
- }
-
- public void set_lorder(Dispatcher server,
- __db_lorder_msg args, __db_lorder_reply reply) {
- try {
- config.setByteOrder(args.lorder);
- reply.status = 0;
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- }
- }
-
- public void get_pagesize(Dispatcher server,
- __db_get_pagesize_msg args, __db_get_pagesize_reply reply) {
- try {
- reply.pagesize = config.getPageSize();
- reply.status = 0;
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- }
- }
-
- public void set_pagesize(Dispatcher server,
- __db_pagesize_msg args, __db_pagesize_reply reply) {
- try {
- config.setPageSize(args.pagesize);
- reply.status = 0;
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- }
- }
-
- public void get_q_extentsize(Dispatcher server,
- __db_get_extentsize_msg args, __db_get_extentsize_reply reply) {
- try {
- reply.extentsize = config.getQueueExtentSize();
- reply.status = 0;
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- }
- }
-
- public void set_q_extentsize(Dispatcher server,
- __db_extentsize_msg args, __db_extentsize_reply reply) {
- try {
- config.setQueueExtentSize(args.extentsize);
- reply.status = 0;
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- }
- }
-
- public void get_re_delim(Dispatcher server,
- __db_get_re_delim_msg args, __db_get_re_delim_reply reply) {
- try {
- reply.delim = config.getRecordDelimiter();
- reply.status = 0;
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- }
- }
-
- public void set_re_delim(Dispatcher server,
- __db_re_delim_msg args, __db_re_delim_reply reply) {
- try {
- config.setRecordDelimiter(args.delim);
- reply.status = 0;
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- }
- }
-
- public void get_re_len(Dispatcher server,
- __db_get_re_len_msg args, __db_get_re_len_reply reply) {
- try {
- reply.len = config.getRecordLength();
- reply.status = 0;
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- }
- }
-
- public void set_re_len(Dispatcher server,
- __db_re_len_msg args, __db_re_len_reply reply) {
- try {
- config.setRecordLength(args.len);
- reply.status = 0;
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- }
- }
-
- public void get_re_pad(Dispatcher server,
- __db_get_re_pad_msg args, __db_get_re_pad_reply reply) {
- try {
- reply.pad = config.getRecordPad();
- reply.status = 0;
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- }
- }
-
- public void set_re_pad(Dispatcher server,
- __db_re_pad_msg args, __db_re_pad_reply reply) {
- try {
- config.setRecordPad(args.pad);
- reply.status = 0;
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- }
- }
-
- public void stat(Dispatcher server,
- __db_stat_msg args, __db_stat_reply reply) {
- try {
- RpcDbTxn rtxn = server.getTxn(args.txnpcl_id);
- Transaction txn = (rtxn != null) ? rtxn.txn : null;
- StatsConfig config = new StatsConfig();
- config.setClear((args.flags & DbConstants.DB_STAT_CLEAR) != 0);
- config.setFast((args.flags & DbConstants.DB_FAST_STAT) != 0);
- DatabaseStats raw_stat = db.getStats(txn, config);
-
- if (raw_stat instanceof BtreeStats) {
- BtreeStats bs = (BtreeStats)raw_stat;
- int[] raw_stats = {
- bs.getMagic(), bs.getVersion(),
- bs.getMetaFlags(), bs.getNumKeys(),
- bs.getNumData(), bs.getPageSize(),
- bs.getMaxKey(), bs.getMinKey(),
- bs.getReLen(), bs.getRePad(),
- bs.getLevels(), bs.getIntPages(),
- bs.getLeafPages(), bs.getDupPages(),
- bs.getOverPages(), bs.getFree(),
- bs.getIntPagesFree(), bs.getLeafPagesFree(),
- bs.getDupPagesFree(), bs.getOverPagesFree()
- };
- reply.stats = raw_stats;
- } else if (raw_stat instanceof HashStats) {
- HashStats hs = (HashStats)raw_stat;
- int[] raw_stats = {
- hs.getMagic(), hs.getVersion(),
- hs.getMetaFlags(), hs.getNumKeys(),
- hs.getNumData(), hs.getPageSize(),
- hs.getFfactor(), hs.getBuckets(),
- hs.getFree(), hs.getBFree(),
- hs.getBigPages(), hs.getBigBFree(),
- hs.getOverflows(), hs.getOvflFree(),
- hs.getDup(), hs.getDupFree()
- };
- reply.stats = raw_stats;
- } else if (raw_stat instanceof QueueStats) {
- QueueStats qs = (QueueStats)raw_stat;
- int[] raw_stats = {
- qs.getMagic(), qs.getVersion(),
- qs.getMetaFlags(), qs.getNumKeys(),
- qs.getNumData(), qs.getPageSize(),
- qs.getExtentSize(), qs.getPages(),
- qs.getReLen(), qs.getRePad(),
- qs.getPagesFree(), qs.getFirstRecno(),
- qs.getCurRecno()
- };
- reply.stats = raw_stats;
- } else
- throw new DatabaseException("Invalid return type from db.stat()", DbConstants.DB_NOTFOUND);
-
- reply.status = 0;
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- reply.stats = new int[0];
- }
- }
-
- public void sync(Dispatcher server,
- __db_sync_msg args, __db_sync_reply reply) {
- try {
- db.sync(/* args.flags == 0 */);
- reply.status = 0;
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- }
- }
-
- public void truncate(Dispatcher server,
- __db_truncate_msg args, __db_truncate_reply reply) {
- try {
- RpcDbTxn rtxn = server.getTxn(args.txnpcl_id);
- Transaction txn = (rtxn != null) ? rtxn.txn : null;
- reply.count = db.truncate(txn, true /*, args.flags == 0 */);
- reply.status = 0;
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- reply.count = 0;
- }
- }
-}
diff --git a/db/rpc_server/java/RpcDbEnv.java b/db/rpc_server/java/RpcDbEnv.java
deleted file mode 100644
index 71e134f7f..000000000
--- a/db/rpc_server/java/RpcDbEnv.java
+++ /dev/null
@@ -1,369 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2001-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: RpcDbEnv.java,v 1.15 2004/04/21 01:09:11 mjc Exp $
- */
-
-package com.sleepycat.db.rpcserver;
-
-import com.sleepycat.db.*;
-import com.sleepycat.db.internal.DbConstants;
-import java.io.*;
-import java.util.*;
-
-/**
- * RPC wrapper around a dbenv for the Java RPC server.
- */
-public class RpcDbEnv extends Timer {
- EnvironmentConfig config;
- Environment dbenv;
- String home;
- long idletime, timeout;
- int openflags, onflags, offflags;
- int refcount = 1;
-
- void dispose() {
- if (dbenv != null) {
- try {
- dbenv.close();
- } catch (Throwable t) {
- Util.handleException(t);
- }
- dbenv = null;
- }
- }
-
- public void close(Dispatcher server,
- __env_close_msg args, __env_close_reply reply) {
- if (--refcount != 0) {
- reply.status = 0;
- return;
- }
-
- try {
- server.delEnv(this, false);
- if (dbenv != null)
- dbenv.close(/* args.flags == 0 */);
- reply.status = 0;
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- } finally {
- dbenv = null;
- }
- }
-
- public void create(Dispatcher server,
- __env_create_msg args, __env_create_reply reply) {
- this.idletime = (args.timeout != 0) ? args.timeout : Server.idleto;
- this.timeout = Server.defto;
- try {
- config = new EnvironmentConfig();
- config.setErrorStream(Server.errstream);
- reply.envcl_id = server.addEnv(this);
- reply.status = 0;
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- }
- }
-
- public void dbremove(Dispatcher server,
- __env_dbremove_msg args, __env_dbremove_reply reply) {
- try {
- args.name = (args.name.length() > 0) ? args.name : null;
- args.subdb = (args.subdb.length() > 0) ? args.subdb : null;
-
- RpcDbTxn rtxn = server.getTxn(args.txnpcl_id);
- Transaction txn = (rtxn != null) ? rtxn.txn : null;
- dbenv.removeDatabase(txn, args.name, args.subdb /*, args.flags == 0 */);
- reply.status = 0;
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- }
- }
-
- public void dbrename(Dispatcher server,
- __env_dbrename_msg args, __env_dbrename_reply reply) {
- try {
- args.name = (args.name.length() > 0) ? args.name : null;
- args.subdb = (args.subdb.length() > 0) ? args.subdb : null;
- args.newname = (args.newname.length() > 0) ? args.newname : null;
-
- RpcDbTxn rtxn = server.getTxn(args.txnpcl_id);
- Transaction txn = (rtxn != null) ? rtxn.txn : null;
- dbenv.renameDatabase(txn, args.name, args.subdb, args.newname /*, args.flags == 0 */);
- reply.status = 0;
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- }
- }
-
- private boolean findSharedEnvironment(Dispatcher server, __env_open_reply reply)
- throws DatabaseException {
- RpcDbEnv rdbenv = null;
- boolean matchFound = false;
- LocalIterator i = ((Server)server).env_list.iterator();
-
- while (!matchFound && i.hasNext()) {
- rdbenv = (RpcDbEnv)i.next();
- if (rdbenv != null && rdbenv != this &&
- (home == rdbenv.home ||
- (home != null && home.equals(rdbenv.home))) &&
- openflags == rdbenv.openflags &&
- onflags == rdbenv.onflags &&
- offflags == rdbenv.offflags)
- matchFound = true;
- }
-
- if (matchFound) {
- /*
- * The only thing left to check is the timeout.
- * Since the server timeout set by the client is a hint, for sharing
- * we'll give them the benefit of the doubt and grant them the
- * longer timeout.
- */
- if (rdbenv.timeout < timeout)
- rdbenv.timeout = timeout;
-
- ++rdbenv.refcount;
- reply.envcl_id = ((FreeList.FreeListIterator)i).current;
- reply.status = 0;
-
- Server.err.println("Sharing Environment: " + reply.envcl_id);
- }
-
- return matchFound;
- }
-
- public void get_home(Dispatcher server,
- __env_get_home_msg args, __env_get_home_reply reply) {
- try {
- reply.home = dbenv.getHome().toString();
- reply.status = 0;
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- }
- }
-
- public void get_open_flags(Dispatcher server,
- __env_get_open_flags_msg args, __env_get_open_flags_reply reply) {
- try {
- reply.flags = 0;
- if (config.getAllowCreate()) reply.flags |= DbConstants.DB_CREATE;
- if (config.getInitializeCache()) reply.flags |= DbConstants.DB_INIT_MPOOL;
- if (config.getInitializeCDB()) reply.flags |= DbConstants.DB_INIT_CDB;
- if (config.getInitializeLocking()) reply.flags |= DbConstants.DB_INIT_LOCK;
- if (config.getInitializeLogging()) reply.flags |= DbConstants.DB_INIT_LOG;
- if (config.getInitializeReplication()) reply.flags |= DbConstants.DB_INIT_REP;
- if (config.getJoinEnvironment()) reply.flags |= DbConstants.DB_JOINENV;
- if (config.getLockDown()) reply.flags |= DbConstants.DB_LOCKDOWN;
- if (config.getPrivate()) reply.flags |= DbConstants.DB_PRIVATE;
- if (config.getReadOnly()) reply.flags |= DbConstants.DB_RDONLY;
- if (config.getRunRecovery()) reply.flags |= DbConstants.DB_RECOVER;
- if (config.getRunFatalRecovery()) reply.flags |= DbConstants.DB_RECOVER_FATAL;
- if (config.getSystemMemory()) reply.flags |= DbConstants.DB_SYSTEM_MEM;
- if (config.getTransactional()) reply.flags |= DbConstants.DB_INIT_TXN;
- if (config.getUseEnvironment()) reply.flags |= DbConstants.DB_USE_ENVIRON;
- if (config.getUseEnvironmentRoot()) reply.flags |= DbConstants.DB_USE_ENVIRON_ROOT;
-
- reply.status = 0;
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- }
- }
-
- public void open(Dispatcher server,
- __env_open_msg args, __env_open_reply reply) {
- try {
- home = (args.home.length() > 0) ? args.home : null;
-
- /*
- * If they are using locking do deadlock detection for
- * them, internally.
- */
- if ((args.flags & DbConstants.DB_INIT_LOCK) != 0)
- config.setLockDetectMode(LockDetectMode.DEFAULT);
-
- // adjust flags for RPC
- int newflags = (args.flags & ~Server.DB_SERVER_FLAGMASK);
- openflags = (newflags & Server.DB_SERVER_ENVFLAGS);
-
- config.setAllowCreate((args.flags & DbConstants.DB_CREATE) != 0);
- config.setInitializeCache((args.flags & DbConstants.DB_INIT_MPOOL) != 0);
- config.setInitializeCDB((args.flags & DbConstants.DB_INIT_CDB) != 0);
- config.setInitializeLocking((args.flags & DbConstants.DB_INIT_LOCK) != 0);
- config.setInitializeLogging((args.flags & DbConstants.DB_INIT_LOG) != 0);
- config.setInitializeReplication((args.flags & DbConstants.DB_INIT_REP) != 0);
- config.setJoinEnvironment((args.flags & DbConstants.DB_JOINENV) != 0);
- config.setLockDown((args.flags & DbConstants.DB_LOCKDOWN) != 0);
- config.setPrivate((args.flags & DbConstants.DB_PRIVATE) != 0);
- config.setReadOnly((args.flags & DbConstants.DB_RDONLY) != 0);
- config.setRunRecovery((args.flags & DbConstants.DB_RECOVER) != 0);
- config.setRunFatalRecovery((args.flags & DbConstants.DB_RECOVER_FATAL) != 0);
- config.setSystemMemory((args.flags & DbConstants.DB_SYSTEM_MEM) != 0);
- config.setTransactional((args.flags & DbConstants.DB_INIT_TXN) != 0);
- config.setUseEnvironment((args.flags & DbConstants.DB_USE_ENVIRON) != 0);
- config.setUseEnvironmentRoot((args.flags & DbConstants.DB_USE_ENVIRON_ROOT) != 0);
-
- if (findSharedEnvironment(server, reply))
- dbenv = null;
- else if (Server.check_home(home)) {
- dbenv = new Environment(new File(home), config);
- // Get the configuration after opening -- it may have changed if we're joining an environment
- config = dbenv.getConfig();
- reply.status = 0;
- reply.envcl_id = args.dbenvcl_id;
- } else
- reply.status = DbConstants.DB_NOSERVER_HOME;
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- }
-
- // System.err.println("Environment.open: reply.status = " + reply.status + ", reply.envcl_id = " + reply.envcl_id);
- }
-
- public void remove(Dispatcher server,
- __env_remove_msg args, __env_remove_reply reply) {
- Server.err.println("RpcDbEnv.remove(" + args.home + ")");
- try {
- args.home = (args.home.length() > 0) ? args.home : null;
- // TODO: check home?
-
- boolean force = (args.flags & DbConstants.DB_FORCE) != 0;
- config.setUseEnvironment((args.flags & DbConstants.DB_USE_ENVIRON) != 0);
- config.setUseEnvironmentRoot((args.flags & DbConstants.DB_USE_ENVIRON_ROOT) != 0);
-
- Environment.remove(new File(args.home), force, config);
- reply.status = 0;
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- } finally {
- server.delEnv(this, false);
- }
- }
-
- public void get_cachesize(Dispatcher server,
- __env_get_cachesize_msg args, __env_get_cachesize_reply reply) {
- try {
- long cachesize = config.getCacheSize();
- final long GIGABYTE = 1073741824;
- reply.gbytes = (int)(cachesize / GIGABYTE);
- reply.bytes = (int)(cachesize % GIGABYTE);
- reply.ncache = config.getCacheCount();
- reply.status = 0;
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- }
- }
-
- public void set_cachesize(Dispatcher server,
- __env_cachesize_msg args, __env_cachesize_reply reply) {
- try {
- long bytes = (long)args.gbytes * 1024 * 1024 * 1024;
- bytes += args.bytes;
- config.setCacheSize(bytes);
- config.setCacheCount(args.ncache);
- reply.status = 0;
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- }
- }
-
- public void get_encrypt_flags(Dispatcher server,
- __env_get_encrypt_flags_msg args, __env_get_encrypt_flags_reply reply) {
- try {
- reply.flags = config.getEncrypted() ? DbConstants.DB_ENCRYPT_AES : 0;
- reply.status = 0;
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- }
- }
-
- public void set_encrypt(Dispatcher server,
- __env_encrypt_msg args, __env_encrypt_reply reply) {
- try {
- config.setEncrypted(args.passwd);
- reply.status = 0;
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- }
- }
-
- public void get_flags(Dispatcher server,
- __env_get_flags_msg args, __env_get_flags_reply reply) {
- try {
- reply.flags = 0;
- if (config.getCDBLockAllDatabases()) reply.flags |= DbConstants.DB_CDB_ALLDB;
- if (config.getDirectDatabaseIO()) reply.flags |= DbConstants.DB_DIRECT_DB;
- if (config.getDirectLogIO()) reply.flags |= DbConstants.DB_DIRECT_LOG;
- if (config.getInitializeRegions()) reply.flags |= DbConstants.DB_REGION_INIT;
- if (config.getLogAutoRemove()) reply.flags |= DbConstants.DB_LOG_AUTOREMOVE;
- if (config.getNoLocking()) reply.flags |= DbConstants.DB_NOLOCKING;
- if (config.getNoMMap()) reply.flags |= DbConstants.DB_NOMMAP;
- if (config.getNoPanic()) reply.flags |= DbConstants.DB_NOPANIC;
- if (config.getOverwrite()) reply.flags |= DbConstants.DB_OVERWRITE;
- if (config.getTxnNoSync()) reply.flags |= DbConstants.DB_TXN_NOSYNC;
- if (config.getTxnNotDurable()) reply.flags |= DbConstants.DB_TXN_NOT_DURABLE;
- if (config.getTxnWriteNoSync()) reply.flags |= DbConstants.DB_TXN_WRITE_NOSYNC;
- if (config.getYieldCPU()) reply.flags |= DbConstants.DB_YIELDCPU;
-
- reply.status = 0;
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- }
- }
-
- public void set_flags(Dispatcher server,
- __env_flags_msg args, __env_flags_reply reply) {
- try {
- boolean onoff = (args.onoff != 0);
- if (onoff)
- onflags |= args.flags;
- else
- offflags |= args.flags;
-
- if ((args.flags & DbConstants.DB_CDB_ALLDB) != 0) config.setCDBLockAllDatabases(onoff);
- if ((args.flags & DbConstants.DB_DIRECT_DB) != 0) config.setDirectDatabaseIO(onoff);
- if ((args.flags & DbConstants.DB_DIRECT_LOG) != 0) config.setDirectLogIO(onoff);
- if ((args.flags & DbConstants.DB_REGION_INIT) != 0) config.setInitializeRegions(onoff);
- if ((args.flags & DbConstants.DB_LOG_AUTOREMOVE) != 0) config.setLogAutoRemove(onoff);
- if ((args.flags & DbConstants.DB_NOLOCKING) != 0) config.setNoLocking(onoff);
- if ((args.flags & DbConstants.DB_NOMMAP) != 0) config.setNoMMap(onoff);
- if ((args.flags & DbConstants.DB_NOPANIC) != 0) config.setNoPanic(onoff);
- if ((args.flags & DbConstants.DB_OVERWRITE) != 0) config.setOverwrite(onoff);
- if ((args.flags & DbConstants.DB_TXN_NOSYNC) != 0) config.setTxnNoSync(onoff);
- if ((args.flags & DbConstants.DB_TXN_NOT_DURABLE) != 0) config.setTxnNotDurable(onoff);
- if ((args.flags & DbConstants.DB_TXN_WRITE_NOSYNC) != 0) config.setTxnWriteNoSync(onoff);
- if ((args.flags & DbConstants.DB_YIELDCPU) != 0) config.setYieldCPU(onoff);
-
- reply.status = 0;
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- }
- }
-
- // txn_recover implementation
- public void txn_recover(Dispatcher server,
- __txn_recover_msg args, __txn_recover_reply reply) {
- try {
- PreparedTransaction[] prep_list = dbenv.recover(args.count, args.flags == DbConstants.DB_NEXT);
- if (prep_list != null && prep_list.length > 0) {
- int count = prep_list.length;
- reply.retcount = count;
- reply.txn = new int[count];
- reply.gid = new byte[count * DbConstants.DB_XIDDATASIZE];
-
- for (int i = 0; i < count; i++) {
- reply.txn[i] = server.addTxn(new RpcDbTxn(this, prep_list[i].getTransaction()));
- System.arraycopy(prep_list[i].getGID(), 0, reply.gid, i * DbConstants.DB_XIDDATASIZE, DbConstants.DB_XIDDATASIZE);
- }
- }
-
- reply.status = 0;
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- }
- }
-}
diff --git a/db/rpc_server/java/RpcDbTxn.java b/db/rpc_server/java/RpcDbTxn.java
deleted file mode 100644
index 85cdad038..000000000
--- a/db/rpc_server/java/RpcDbTxn.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2001-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: RpcDbTxn.java,v 1.9 2004/05/04 13:45:33 sue Exp $
- */
-
-package com.sleepycat.db.rpcserver;
-
-import com.sleepycat.db.*;
-import com.sleepycat.db.internal.DbConstants;
-import java.io.*;
-import java.util.*;
-
-/**
- * RPC wrapper around a txn object for the Java RPC server.
- */
-public class RpcDbTxn extends Timer {
- RpcDbEnv rdbenv;
- Transaction txn;
-
- public RpcDbTxn(RpcDbEnv rdbenv, Transaction txn) {
- this.rdbenv = rdbenv;
- this.txn = txn;
- }
-
- void dispose() {
- if (txn != null) {
- try {
- txn.abort();
- } catch (DatabaseException e) {
- e.printStackTrace(Server.err);
- }
- txn = null;
- }
- }
-
- public void abort(Dispatcher server,
- __txn_abort_msg args, __txn_abort_reply reply) {
- try {
- txn.abort();
- txn = null;
- reply.status = 0;
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- } finally {
- server.delTxn(this, false);
- }
- }
-
- public void begin(Dispatcher server,
- __txn_begin_msg args, __txn_begin_reply reply) {
- try {
- if (rdbenv == null) {
- reply.status = DbConstants.DB_NOSERVER_ID;
- return;
- }
- Environment dbenv = rdbenv.dbenv;
- RpcDbTxn rparent = server.getTxn(args.parentcl_id);
- Transaction parent = (rparent != null) ? rparent.txn : null;
-
- TransactionConfig config = new TransactionConfig();
- config.setDegree2((args.flags & DbConstants.DB_DEGREE_2) != 0);
- config.setDirtyRead((args.flags & DbConstants.DB_DIRTY_READ) != 0);
- config.setNoSync((args.flags & DbConstants.DB_TXN_NOSYNC) != 0);
- config.setNoWait(true);
- config.setSync((args.flags & DbConstants.DB_TXN_SYNC) != 0);
-
- txn = dbenv.beginTransaction(parent, config);
-
- if (rparent != null)
- timer = rparent.timer;
- reply.txnidcl_id = server.addTxn(this);
- reply.status = 0;
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- }
- }
-
- public void commit(Dispatcher server,
- __txn_commit_msg args, __txn_commit_reply reply) {
- try {
- switch(args.flags) {
- case 0:
- txn.commit();
- break;
-
- case DbConstants.DB_TXN_SYNC:
- txn.commitSync();
- break;
-
- case DbConstants.DB_TXN_NOSYNC:
- txn.commitSync();
- break;
-
- default:
- throw new UnsupportedOperationException("Unknown flag: " + (args.flags & ~Server.DB_MODIFIER_MASK));
- }
- txn = null;
- reply.status = 0;
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- } finally {
- server.delTxn(this, false);
- }
- }
-
- public void discard(Dispatcher server,
- __txn_discard_msg args, __txn_discard_reply reply) {
- try {
- txn.discard(/* args.flags == 0 */);
- txn = null;
- reply.status = 0;
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- } finally {
- server.delTxn(this, false);
- }
- }
-
- public void prepare(Dispatcher server,
- __txn_prepare_msg args, __txn_prepare_reply reply) {
- try {
- txn.prepare(args.gid);
- reply.status = 0;
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- }
- }
-}
diff --git a/db/rpc_server/java/RpcDbc.java b/db/rpc_server/java/RpcDbc.java
deleted file mode 100644
index 75f644c4b..000000000
--- a/db/rpc_server/java/RpcDbc.java
+++ /dev/null
@@ -1,317 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2001-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: RpcDbc.java,v 1.13 2004/11/05 01:08:31 mjc Exp $
- */
-
-package com.sleepycat.db.rpcserver;
-
-import com.sleepycat.db.*;
-import com.sleepycat.db.internal.DbConstants;
-import java.io.*;
-import java.util.*;
-
-/**
- * RPC wrapper around a dbc object for the Java RPC server.
- */
-public class RpcDbc extends Timer {
- static final byte[] empty = new byte[0];
- RpcDbEnv rdbenv;
- RpcDb rdb;
- Cursor dbc;
- Timer orig_timer;
- boolean isJoin;
-
- public RpcDbc(RpcDb rdb, Cursor dbc, boolean isJoin) {
- this.rdb = rdb;
- this.rdbenv = rdb.rdbenv;
- this.dbc = dbc;
- this.isJoin = isJoin;
- }
-
- void dispose() {
- if (dbc != null) {
- try {
- dbc.close();
- } catch (Throwable t) {
- Util.handleException(t);
- }
- dbc = null;
- }
- }
-
- public void close(Dispatcher server,
- __dbc_close_msg args, __dbc_close_reply reply) {
- try {
- dbc.close();
- dbc = null;
-
- if (isJoin)
- for (LocalIterator i = ((Server)server).cursor_list.iterator(); i.hasNext();) {
- RpcDbc rdbc = (RpcDbc)i.next();
- // Unjoin cursors that were joined to create this
- if (rdbc != null && rdbc.timer == this)
- rdbc.timer = rdbc.orig_timer;
- }
-
- reply.status = 0;
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- } finally {
- server.delCursor(this, false);
- }
- }
-
- public void count(Dispatcher server,
- __dbc_count_msg args, __dbc_count_reply reply) {
- try {
- reply.dupcount = dbc.count(/* args.flags == 0 */);
- reply.status = 0;
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- }
- }
-
- public void del(Dispatcher server,
- __dbc_del_msg args, __dbc_del_reply reply) {
- try {
- reply.status = Util.getStatus(dbc.delete(/* args.flags == 0 */));
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- }
- }
-
- public void dup(Dispatcher server,
- __dbc_dup_msg args, __dbc_dup_reply reply) {
- try {
- Cursor newdbc = dbc.dup(args.flags == DbConstants.DB_POSITION);
- RpcDbc rdbc = new RpcDbc(rdb, newdbc, false);
- /* If this cursor has a parent txn, we need to use it too. */
- if (timer != this)
- rdbc.timer = timer;
- reply.dbcidcl_id = server.addCursor(rdbc);
- reply.status = 0;
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- }
- }
-
- public void get(Dispatcher server,
- __dbc_get_msg args, __dbc_get_reply reply) {
- try {
- DatabaseEntry key = Util.makeDatabaseEntry(args.keydata, args.keydlen, args.keydoff, args.keyulen, args.keyflags);
- DatabaseEntry data = Util.makeDatabaseEntry(args.datadata,
- args.datadlen, args.datadoff, args.dataulen, args.dataflags,
- args.flags & (DbConstants.DB_MULTIPLE | DbConstants.DB_MULTIPLE_KEY));
-
- OperationStatus status;
- switch(args.flags & ~Server.DB_MODIFIER_MASK) {
- case DbConstants.DB_CURRENT:
- status = dbc.getCurrent(key, data, Util.getLockMode(args.flags));
- break;
-
- case DbConstants.DB_FIRST:
- status = dbc.getFirst(key, data, Util.getLockMode(args.flags));
- break;
-
- case DbConstants.DB_LAST:
- status = dbc.getLast(key, data, Util.getLockMode(args.flags));
- break;
-
- case DbConstants.DB_NEXT:
- status = dbc.getNext(key, data, Util.getLockMode(args.flags));
- break;
-
- case DbConstants.DB_NEXT_DUP:
- status = dbc.getNextDup(key, data, Util.getLockMode(args.flags));
- break;
-
- case DbConstants.DB_NEXT_NODUP:
- status = dbc.getNextNoDup(key, data, Util.getLockMode(args.flags));
- break;
-
- case DbConstants.DB_PREV:
- status = dbc.getPrev(key, data, Util.getLockMode(args.flags));
- break;
-
- case DbConstants.DB_PREV_NODUP:
- status = dbc.getPrevNoDup(key, data, Util.getLockMode(args.flags));
- break;
-
- case DbConstants.DB_GET_RECNO:
- status = dbc.getRecordNumber(data, Util.getLockMode(args.flags));
- break;
-
- case DbConstants.DB_SET:
- status = dbc.getSearchKey(key, data, Util.getLockMode(args.flags));
- break;
-
- case DbConstants.DB_SET_RANGE:
- status = dbc.getSearchKeyRange(key, data, Util.getLockMode(args.flags));
- break;
-
- case DbConstants.DB_GET_BOTH:
- status = dbc.getSearchBoth(key, data, Util.getLockMode(args.flags));
- break;
-
- case DbConstants.DB_GET_BOTH_RANGE:
- status = dbc.getSearchBothRange(key, data, Util.getLockMode(args.flags));
- break;
-
- case DbConstants.DB_SET_RECNO:
- status = dbc.getSearchRecordNumber(key, data, Util.getLockMode(args.flags));
- break;
-
- /* Join cursors */
- case 0:
- status = ((JoinCursorAdapter)dbc).jc.getNext(key, Util.getLockMode(args.flags));
- break;
-
- case DbConstants.DB_JOIN_ITEM:
- status = ((JoinCursorAdapter)dbc).jc.getNext(key, Util.getLockMode(args.flags));
- break;
-
- default:
- throw new UnsupportedOperationException("Unknown flag: " + (args.flags & ~Server.DB_MODIFIER_MASK));
- }
- reply.status = Util.getStatus(status);
- reply.keydata = Util.returnDatabaseEntry(key);
- reply.datadata = Util.returnDatabaseEntry(data);
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- reply.keydata = reply.datadata = empty;
- }
- }
-
- public void pget(Dispatcher server,
- __dbc_pget_msg args, __dbc_pget_reply reply) {
- try {
- DatabaseEntry skey = Util.makeDatabaseEntry(args.skeydata, args.skeydlen, args.skeydoff, args.skeyulen, args.skeyflags);
- DatabaseEntry pkey = Util.makeDatabaseEntry(args.pkeydata, args.pkeydlen, args.pkeydoff, args.pkeyulen, args.pkeyflags);
- DatabaseEntry data = Util.makeDatabaseEntry(args.datadata, args.datadlen, args.datadoff, args.dataulen, args.dataflags);
-
- OperationStatus status;
- switch(args.flags & ~Server.DB_MODIFIER_MASK) {
- case DbConstants.DB_CURRENT:
- status = ((SecondaryCursor)dbc).getCurrent(skey, pkey, data, Util.getLockMode(args.flags));
- break;
-
- case DbConstants.DB_FIRST:
- status = ((SecondaryCursor)dbc).getFirst(skey, pkey, data, Util.getLockMode(args.flags));
- break;
-
- case DbConstants.DB_LAST:
- status = ((SecondaryCursor)dbc).getLast(skey, pkey, data, Util.getLockMode(args.flags));
- break;
-
- case DbConstants.DB_NEXT:
- status = ((SecondaryCursor)dbc).getNext(skey, pkey, data, Util.getLockMode(args.flags));
- break;
-
- case DbConstants.DB_NEXT_DUP:
- status = ((SecondaryCursor)dbc).getNextDup(skey, pkey, data, Util.getLockMode(args.flags));
- break;
-
- case DbConstants.DB_NEXT_NODUP:
- status = ((SecondaryCursor)dbc).getNextNoDup(skey, pkey, data, Util.getLockMode(args.flags));
- break;
-
- case DbConstants.DB_PREV:
- status = ((SecondaryCursor)dbc).getPrev(skey, pkey, data, Util.getLockMode(args.flags));
- break;
-
- case DbConstants.DB_PREV_NODUP:
- status = ((SecondaryCursor)dbc).getPrevNoDup(skey, pkey, data, Util.getLockMode(args.flags));
- break;
-
- case DbConstants.DB_GET_RECNO:
- status = ((SecondaryCursor)dbc).getRecordNumber(pkey, data, Util.getLockMode(args.flags));
- break;
-
- case DbConstants.DB_SET:
- status = ((SecondaryCursor)dbc).getSearchKey(skey, pkey, data, Util.getLockMode(args.flags));
- break;
-
- case DbConstants.DB_SET_RANGE:
- status = ((SecondaryCursor)dbc).getSearchKeyRange(skey, pkey, data, Util.getLockMode(args.flags));
- break;
-
- case DbConstants.DB_GET_BOTH:
- status = ((SecondaryCursor)dbc).getSearchBoth(skey, pkey, data, Util.getLockMode(args.flags));
- break;
-
- case DbConstants.DB_GET_BOTH_RANGE:
- status = ((SecondaryCursor)dbc).getSearchBothRange(skey, pkey, data, Util.getLockMode(args.flags));
- break;
-
- case DbConstants.DB_SET_RECNO:
- status = ((SecondaryCursor)dbc).getSearchRecordNumber(skey, pkey, data, Util.getLockMode(args.flags));
- break;
-
- default:
- throw new UnsupportedOperationException("Unknown flag: " + (args.flags & ~Server.DB_MODIFIER_MASK));
- }
- reply.status = Util.getStatus(status);
- reply.skeydata = Util.returnDatabaseEntry(skey);
- reply.pkeydata = Util.returnDatabaseEntry(pkey);
- reply.datadata = Util.returnDatabaseEntry(data);
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- reply.skeydata = reply.pkeydata = reply.datadata = empty;
- }
- }
-
- public void put(Dispatcher server,
- __dbc_put_msg args, __dbc_put_reply reply) {
- try {
- DatabaseEntry key = Util.makeDatabaseEntry(args.keydata, args.keydlen, args.keydoff, args.keyulen, args.keyflags);
- DatabaseEntry data = Util.makeDatabaseEntry(args.datadata, args.datadlen, args.datadoff, args.dataulen, args.dataflags);
-
- OperationStatus status;
- switch(args.flags & ~Server.DB_MODIFIER_MASK) {
- case 0:
- status = dbc.put(key, data);
- break;
-
- case DbConstants.DB_AFTER:
- status = dbc.putAfter(key, data);
- break;
-
- case DbConstants.DB_BEFORE:
- status = dbc.putBefore(key, data);
- break;
-
- case DbConstants.DB_NOOVERWRITE:
- status = dbc.putNoOverwrite(key, data);
- break;
-
- case DbConstants.DB_KEYFIRST:
- status = dbc.putKeyFirst(key, data);
- break;
-
- case DbConstants.DB_KEYLAST:
- status = dbc.putKeyLast(key, data);
- break;
-
- case DbConstants.DB_NODUPDATA:
- status = dbc.putNoDupData(key, data);
- break;
-
- case DbConstants.DB_CURRENT:
- status = dbc.putCurrent(data);
- break;
-
- default:
- throw new UnsupportedOperationException("Unknown flag: " + (args.flags & ~Server.DB_MODIFIER_MASK));
- }
- reply.status = Util.getStatus(status);
- reply.keydata = Util.returnDatabaseEntry(key);
- } catch (Throwable t) {
- reply.status = Util.handleException(t);
- reply.keydata = empty;
- }
- }
-}
diff --git a/db/rpc_server/java/Server.java b/db/rpc_server/java/Server.java
deleted file mode 100644
index 32eba6a16..000000000
--- a/db/rpc_server/java/Server.java
+++ /dev/null
@@ -1,328 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2001-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: Server.java,v 1.1 2004/04/06 20:43:42 mjc Exp $
- */
-
-package com.sleepycat.db.rpcserver;
-
-import com.sleepycat.db.*;
-import com.sleepycat.db.internal.DbConstants;
-import java.io.*;
-import java.util.*;
-import org.acplt.oncrpc.OncRpcException;
-import org.acplt.oncrpc.server.OncRpcCallInformation;
-
-/**
- * Main entry point for the Java version of the Berkeley DB RPC server
- */
-public class Server extends Dispatcher {
- public static long idleto = 10 * 60 * 1000; // 5 minutes
- public static long defto = 5 * 60 * 1000; // 5 minutes
- public static long maxto = 60 * 60 * 1000; // 1 hour
- public static String passwd = null;
- public static OutputStream errstream;
- public static PrintWriter err;
-
- long now, hint; // updated each operation
- FreeList env_list = new FreeList();
- FreeList db_list = new FreeList();
- FreeList txn_list = new FreeList();
- FreeList cursor_list = new FreeList();
-
- public Server() throws IOException, OncRpcException {
- super();
- init_lists();
- }
-
- public void dispatchOncRpcCall(OncRpcCallInformation call, int program,
- int version, int procedure) throws OncRpcException, IOException {
- long newnow = System.currentTimeMillis();
- // Server.err.println("Dispatching RPC call " + procedure + " after delay of " + (newnow - now));
- now = newnow;
- try {
- super.dispatchOncRpcCall(call, program, version, procedure);
- doTimeouts();
- } catch (Throwable t) {
- System.err.println("Caught " + t + " while dispatching RPC call " + procedure);
- t.printStackTrace(Server.err);
- } finally {
- Server.err.flush();
- }
- }
-
- // Internal methods to track context
- private void init_lists() {
- // We do this so that getEnv/Database/etc(0) == null
- env_list.add(null);
- db_list.add(null);
- txn_list.add(null);
- cursor_list.add(null);
- }
-
- int addEnv(RpcDbEnv rdbenv) {
- rdbenv.timer.last_access = now;
- int id = env_list.add(rdbenv);
- return id;
- }
-
- int addDatabase(RpcDb rdb) {
- int id = db_list.add(rdb);
- return id;
- }
-
- int addTxn(RpcDbTxn rtxn) {
- rtxn.timer.last_access = now;
- int id = txn_list.add(rtxn);
- return id;
- }
-
- int addCursor(RpcDbc rdbc) {
- rdbc.timer.last_access = now;
- int id = cursor_list.add(rdbc);
- return id;
- }
-
- void delEnv(RpcDbEnv rdbenv, boolean dispose) {
- env_list.del(rdbenv);
-
- // cursors and transactions will already have been cleaned up
- for (LocalIterator i = db_list.iterator(); i.hasNext();) {
- RpcDb rdb = (RpcDb)i.next();
- if (rdb != null && rdb.rdbenv == rdbenv)
- delDatabase(rdb, true);
- }
-
- if (dispose)
- rdbenv.dispose();
- }
-
- void delDatabase(RpcDb rdb, boolean dispose) {
- db_list.del(rdb);
-
- for (LocalIterator i = cursor_list.iterator(); i.hasNext();) {
- RpcDbc rdbc = (RpcDbc)i.next();
- if (rdbc != null && rdbc.timer == rdb) {
- i.remove();
- rdbc.dispose();
- }
- }
-
- if (dispose)
- rdb.dispose();
- }
-
- void delTxn(RpcDbTxn rtxn, boolean dispose) {
- txn_list.del(rtxn);
-
- for (LocalIterator i = cursor_list.iterator(); i.hasNext();) {
- RpcDbc rdbc = (RpcDbc)i.next();
- if (rdbc != null && rdbc.timer == rtxn) {
- i.remove();
- rdbc.dispose();
- }
- }
-
- for (LocalIterator i = txn_list.iterator(); i.hasNext();) {
- RpcDbTxn rtxn_child = (RpcDbTxn)i.next();
- if (rtxn_child != null && rtxn_child.timer == rtxn) {
- i.remove();
- rtxn_child.dispose();
- }
- }
-
- if (dispose)
- rtxn.dispose();
- }
-
- void delCursor(RpcDbc rdbc, boolean dispose) {
- cursor_list.del(rdbc);
- if (dispose)
- rdbc.dispose();
- }
-
- RpcDbEnv getEnv(int envid) {
- RpcDbEnv rdbenv = (RpcDbEnv)env_list.get(envid);
- if (rdbenv != null)
- rdbenv.timer.last_access = now;
- return rdbenv;
- }
-
- RpcDb getDatabase(int dbid) {
- RpcDb rdb = (RpcDb)db_list.get(dbid);
- if (rdb != null)
- rdb.rdbenv.timer.last_access = now;
- return rdb;
- }
-
- RpcDbTxn getTxn(int txnid) {
- RpcDbTxn rtxn = (RpcDbTxn)txn_list.get(txnid);
- if (rtxn != null)
- rtxn.timer.last_access = rtxn.rdbenv.timer.last_access = now;
- return rtxn;
- }
-
- RpcDbc getCursor(int dbcid) {
- RpcDbc rdbc = (RpcDbc)cursor_list.get(dbcid);
- if (rdbc != null)
- rdbc.last_access = rdbc.timer.last_access = rdbc.rdbenv.timer.last_access = now;
- return rdbc;
- }
-
- void doTimeouts() {
- if (now < hint) {
- // Server.err.println("Skipping cleaner sweep - now = " + now + ", hint = " + hint);
- return;
- }
-
- // Server.err.println("Starting a cleaner sweep");
- hint = now + Server.maxto;
-
- for (LocalIterator i = cursor_list.iterator(); i.hasNext();) {
- RpcDbc rdbc = (RpcDbc)i.next();
- if (rdbc == null)
- continue;
-
- long end_time = rdbc.timer.last_access + rdbc.rdbenv.timeout;
- // Server.err.println("Examining " + rdbc + ", time left = " + (end_time - now));
- if (end_time < now) {
- Server.err.println("Cleaning up " + rdbc);
- delCursor(rdbc, true);
- } else if (end_time < hint)
- hint = end_time;
- }
-
- for (LocalIterator i = txn_list.iterator(); i.hasNext();) {
- RpcDbTxn rtxn = (RpcDbTxn)i.next();
- if (rtxn == null)
- continue;
-
- long end_time = rtxn.timer.last_access + rtxn.rdbenv.timeout;
- // Server.err.println("Examining " + rtxn + ", time left = " + (end_time - now));
- if (end_time < now) {
- Server.err.println("Cleaning up " + rtxn);
- delTxn(rtxn, true);
- } else if (end_time < hint)
- hint = end_time;
- }
-
- for (LocalIterator i = env_list.iterator(); i.hasNext();) {
- RpcDbEnv rdbenv = (RpcDbEnv)i.next();
- if (rdbenv == null)
- continue;
-
- long end_time = rdbenv.timer.last_access + rdbenv.idletime;
- // Server.err.println("Examining " + rdbenv + ", time left = " + (end_time - now));
- if (end_time < now) {
- Server.err.println("Cleaning up " + rdbenv);
- delEnv(rdbenv, true);
- }
- }
-
- // if we didn't find anything, reset the hint
- if (hint == now + Server.maxto)
- hint = 0;
-
- // Server.err.println("Finishing a cleaner sweep");
- }
-
- // Some constants that aren't available elsewhere
- static final int ENOENT = 2;
- static final int EACCES = 13;
- static final int EEXIST = 17;
- static final int EINVAL = 22;
- static final int DB_SERVER_FLAGMASK = DbConstants.DB_LOCKDOWN |
- DbConstants.DB_PRIVATE | DbConstants.DB_RECOVER | DbConstants.DB_RECOVER_FATAL |
- DbConstants.DB_SYSTEM_MEM | DbConstants.DB_USE_ENVIRON |
- DbConstants.DB_USE_ENVIRON_ROOT;
- static final int DB_SERVER_ENVFLAGS = DbConstants.DB_INIT_CDB |
- DbConstants.DB_INIT_LOCK | DbConstants.DB_INIT_LOG | DbConstants.DB_INIT_MPOOL |
- DbConstants.DB_INIT_TXN | DbConstants.DB_JOINENV;
- static final int DB_SERVER_DBFLAGS = DbConstants.DB_DIRTY_READ |
- DbConstants.DB_NOMMAP | DbConstants.DB_RDONLY;
- static final int DB_SERVER_DBNOSHARE = DbConstants.DB_EXCL | DbConstants.DB_TRUNCATE;
- static final int DB_MODIFIER_MASK = 0xff000000;
-
- static Vector homes = new Vector();
-
- static void add_home(String home) {
- File f = new File(home);
- try {
- home = f.getCanonicalPath();
- } catch (IOException e) {
- // ignored
- }
- homes.addElement(home);
- }
-
- static boolean check_home(String home) {
- if (home == null)
- return false;
- File f = new File(home);
- try {
- home = f.getCanonicalPath();
- } catch (IOException e) {
- // ignored
- }
- return homes.contains(home);
- }
-
- public static void main(String[] args) {
- System.out.println("Starting Server...");
- for (int i = 0; i < args.length; i++) {
- if (args[i].charAt(0) != '-')
- usage();
-
- switch (args[i].charAt(1)) {
- case 'h':
- add_home(args[++i]);
- break;
- case 'I':
- idleto = Long.parseLong(args[++i]) * 1000L;
- break;
- case 'P':
- passwd = args[++i];
- break;
- case 't':
- defto = Long.parseLong(args[++i]) * 1000L;
- break;
- case 'T':
- maxto = Long.parseLong(args[++i]) * 1000L;
- break;
- case 'V':
- // version;
- break;
- case 'v':
- // verbose
- break;
- default:
- usage();
- }
- }
-
- try {
- // Server.errstream = System.err;
- Server.errstream = new FileOutputStream("JavaRPCServer.trace", true);
- Server.err = new PrintWriter(Server.errstream);
- Server server = new Server();
- server.run();
- } catch (Throwable e) {
- System.err.println("Server exception:");
- e.printStackTrace(Server.err);
- } finally {
- if (Server.err != null)
- Server.err.close();
- }
-
- System.out.println("Server stopped.");
- }
-
- static void usage() {
- System.err.println("usage: java com.sleepycat.db.rpcserver.Server \\");
- System.err.println("[-Vv] [-h home] [-P passwd] [-I idletimeout] [-L logfile] [-t def_timeout] [-T maxtimeout]");
- System.exit(1);
- }
-}
diff --git a/db/rpc_server/java/Timer.java b/db/rpc_server/java/Timer.java
deleted file mode 100644
index 469ad1ad4..000000000
--- a/db/rpc_server/java/Timer.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2001-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: Timer.java,v 1.4 2004/04/06 20:43:42 mjc Exp $
- */
-
-package com.sleepycat.db.rpcserver;
-
-/**
- * Class to keep track of access times. This is slightly devious by having
- * both the access_time and a reference to another Timer that can be
- * used to group/share access times. This is done to keep the Java code
- * close to the canonical C implementation of the RPC server.
- */
-public class Timer {
- Timer timer = this;
- long last_access;
-}
diff --git a/db/rpc_server/java/Util.java b/db/rpc_server/java/Util.java
deleted file mode 100644
index cd7797fa7..000000000
--- a/db/rpc_server/java/Util.java
+++ /dev/null
@@ -1,172 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2001-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: Util.java,v 1.6 2004/11/05 00:42:41 mjc Exp $
- */
-
-package com.sleepycat.db.rpcserver;
-
-import java.io.FileNotFoundException;
-
-import com.sleepycat.db.*;
-import com.sleepycat.db.internal.DbConstants;
-
-/**
- * Helper methods for Java API <-> C API mapping
- */
-public class Util {
- static int handleException(Throwable t) {
- int ret = Server.EINVAL;
-
- if (t instanceof DatabaseException) {
- ret = ((DatabaseException)t).getErrno();
- if (ret == DbConstants.DB_LOCK_NOTGRANTED)
- ret = DbConstants.DB_LOCK_DEADLOCK;
- } else if (t instanceof FileNotFoundException)
- ret = Server.ENOENT;
-
- t.printStackTrace(Server.err);
- Server.err.println("handleException(" + t + ") returned " + ret);
- return ret;
- }
-
- static int notSupported(String meth) {
- Server.err.println("Unsupported functionality with JE: " + meth);
- return Server.EINVAL;
- }
-
- static int ignored(String meth) {
- Server.err.println("Warning functionality ignored with JE: " + meth);
- return 0;
- }
-
- static DatabaseEntry makeDatabaseEntry(byte[] data, int dlen, int doff, int ulen, int flags, int multiFlags) throws DatabaseException {
- DatabaseEntry dbt;
- switch (multiFlags) {
- case DbConstants.DB_MULTIPLE:
- dbt = new MultipleDataEntry(new byte[ulen]);
- break;
- case DbConstants.DB_MULTIPLE_KEY:
- dbt = new MultipleKeyDataEntry(new byte[ulen]);
- break;
- default:
- dbt = new DatabaseEntry(data);
- break;
- }
- dbt.setPartial(doff, dlen, (flags & DbConstants.DB_DBT_PARTIAL) != 0);
- return dbt;
- }
-
- static DatabaseEntry makeDatabaseEntry(byte[] data, int dlen, int doff, int ulen, int flags) throws DatabaseException {
- return makeDatabaseEntry(data, dlen, doff, ulen, flags, 0);
- }
-
- static byte[] returnDatabaseEntry(DatabaseEntry dbt) throws DatabaseException {
- if (dbt.getData().length == dbt.getSize())
- return dbt.getData();
- else {
- byte[] newdata = new byte[dbt.getSize()];
- System.arraycopy(dbt.getData(), 0, newdata, 0, dbt.getSize());
- return newdata;
- }
- }
-
- private static final String separator = ":::";
-
- static String makeFileName(String file, String database) {
- return null;
- }
-
- static String makeDatabaseName(String file, String database) {
- if (file == null && database == null)
- return null;
- else if (database.length() == 0 && file.indexOf(separator) >= 0)
- return file;
- return file + separator + database;
- }
-
- static String makeRenameTarget(String file, String database, String newname) {
- if (database.length() == 0)
- return makeDatabaseName(newname, database);
- else
- return makeDatabaseName(file, newname);
- }
-
- static String getFileName(String fullname) {
- if (fullname == null)
- return null;
- int pos = fullname.indexOf(separator);
- return fullname.substring(0, pos);
- }
-
- static String getDatabaseName(String fullname) {
- if (fullname == null)
- return null;
- int pos = fullname.indexOf(separator);
- return fullname.substring(pos + separator.length());
- }
-
- static LockMode getLockMode(int flags) {
- switch(flags & Server.DB_MODIFIER_MASK) {
- case DbConstants.DB_DIRTY_READ:
- return LockMode.DIRTY_READ;
- case DbConstants.DB_DEGREE_2:
- return LockMode.DEGREE_2;
- case DbConstants.DB_RMW:
- return LockMode.RMW;
- default:
- return LockMode.DEFAULT;
- }
- }
-
- static int getStatus(OperationStatus status) {
- if (status == OperationStatus.SUCCESS)
- return 0;
- else if (status == OperationStatus.KEYEXIST)
- return DbConstants.DB_KEYEXIST;
- else if (status == OperationStatus.KEYEMPTY)
- return DbConstants.DB_KEYEMPTY;
- else if (status == OperationStatus.NOTFOUND)
- return DbConstants.DB_NOTFOUND;
- else
- throw new IllegalArgumentException("Unknown status: " + status);
- }
-
- static int fromDatabaseType(DatabaseType type) {
- if (type == DatabaseType.BTREE)
- return DbConstants.DB_BTREE;
- else if (type == DatabaseType.HASH)
- return DbConstants.DB_HASH;
- else if (type == DatabaseType.QUEUE)
- return DbConstants.DB_QUEUE;
- else if (type == DatabaseType.RECNO)
- return DbConstants.DB_RECNO;
- else
- throw new
- IllegalArgumentException("Unknown database type: " + type);
- }
-
- static DatabaseType toDatabaseType(int type) {
- switch (type) {
- case DbConstants.DB_BTREE:
- return DatabaseType.BTREE;
- case DbConstants.DB_HASH:
- return DatabaseType.HASH;
- case DbConstants.DB_QUEUE:
- return DatabaseType.QUEUE;
- case DbConstants.DB_RECNO:
- return DatabaseType.RECNO;
- case DbConstants.DB_UNKNOWN:
- return DatabaseType.UNKNOWN;
- default:
- throw new IllegalArgumentException("Unknown database type ID: " + type);
- }
- }
-
- // Utility classes should not have a public or default constructor
- protected Util() {
- }
-}
diff --git a/db/rpc_server/java/gen/ServerStubs.java b/db/rpc_server/java/gen/ServerStubs.java
deleted file mode 100644
index 48e24f179..000000000
--- a/db/rpc_server/java/gen/ServerStubs.java
+++ /dev/null
@@ -1,657 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 4/6/04 2:22 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-import org.acplt.oncrpc.server.*;
-
-/**
- */
-public abstract class ServerStubs extends OncRpcServerStub implements OncRpcDispatchable {
-
- public ServerStubs()
- throws OncRpcException, IOException {
- this(0);
- }
-
- public ServerStubs(int port)
- throws OncRpcException, IOException {
- info = new OncRpcServerTransportRegistrationInfo [] {
- new OncRpcServerTransportRegistrationInfo(db_server.DB_RPC_SERVERPROG, 4003),
- };
- transports = new OncRpcServerTransport [] {
- new OncRpcUdpServerTransport(this, port, info, 32768),
- new OncRpcTcpServerTransport(this, port, info, 32768)
- };
- }
-
- public void dispatchOncRpcCall(OncRpcCallInformation call, int program, int version, int procedure)
- throws OncRpcException, IOException {
- if ( version == 4003 ) {
- switch ( procedure ) {
- case 1: {
- __env_get_cachesize_msg args$ = new __env_get_cachesize_msg();
- call.retrieveCall(args$);
- __env_get_cachesize_reply result$ = __DB_env_get_cachesize_4003(args$);
- call.reply(result$);
- break;
- }
- case 2: {
- __env_cachesize_msg args$ = new __env_cachesize_msg();
- call.retrieveCall(args$);
- __env_cachesize_reply result$ = __DB_env_cachesize_4003(args$);
- call.reply(result$);
- break;
- }
- case 3: {
- __env_close_msg args$ = new __env_close_msg();
- call.retrieveCall(args$);
- __env_close_reply result$ = __DB_env_close_4003(args$);
- call.reply(result$);
- break;
- }
- case 4: {
- __env_create_msg args$ = new __env_create_msg();
- call.retrieveCall(args$);
- __env_create_reply result$ = __DB_env_create_4003(args$);
- call.reply(result$);
- break;
- }
- case 5: {
- __env_dbremove_msg args$ = new __env_dbremove_msg();
- call.retrieveCall(args$);
- __env_dbremove_reply result$ = __DB_env_dbremove_4003(args$);
- call.reply(result$);
- break;
- }
- case 6: {
- __env_dbrename_msg args$ = new __env_dbrename_msg();
- call.retrieveCall(args$);
- __env_dbrename_reply result$ = __DB_env_dbrename_4003(args$);
- call.reply(result$);
- break;
- }
- case 7: {
- __env_get_encrypt_flags_msg args$ = new __env_get_encrypt_flags_msg();
- call.retrieveCall(args$);
- __env_get_encrypt_flags_reply result$ = __DB_env_get_encrypt_flags_4003(args$);
- call.reply(result$);
- break;
- }
- case 8: {
- __env_encrypt_msg args$ = new __env_encrypt_msg();
- call.retrieveCall(args$);
- __env_encrypt_reply result$ = __DB_env_encrypt_4003(args$);
- call.reply(result$);
- break;
- }
- case 9: {
- __env_get_flags_msg args$ = new __env_get_flags_msg();
- call.retrieveCall(args$);
- __env_get_flags_reply result$ = __DB_env_get_flags_4003(args$);
- call.reply(result$);
- break;
- }
- case 10: {
- __env_flags_msg args$ = new __env_flags_msg();
- call.retrieveCall(args$);
- __env_flags_reply result$ = __DB_env_flags_4003(args$);
- call.reply(result$);
- break;
- }
- case 11: {
- __env_get_home_msg args$ = new __env_get_home_msg();
- call.retrieveCall(args$);
- __env_get_home_reply result$ = __DB_env_get_home_4003(args$);
- call.reply(result$);
- break;
- }
- case 12: {
- __env_get_open_flags_msg args$ = new __env_get_open_flags_msg();
- call.retrieveCall(args$);
- __env_get_open_flags_reply result$ = __DB_env_get_open_flags_4003(args$);
- call.reply(result$);
- break;
- }
- case 13: {
- __env_open_msg args$ = new __env_open_msg();
- call.retrieveCall(args$);
- __env_open_reply result$ = __DB_env_open_4003(args$);
- call.reply(result$);
- break;
- }
- case 14: {
- __env_remove_msg args$ = new __env_remove_msg();
- call.retrieveCall(args$);
- __env_remove_reply result$ = __DB_env_remove_4003(args$);
- call.reply(result$);
- break;
- }
- case 15: {
- __txn_abort_msg args$ = new __txn_abort_msg();
- call.retrieveCall(args$);
- __txn_abort_reply result$ = __DB_txn_abort_4003(args$);
- call.reply(result$);
- break;
- }
- case 16: {
- __txn_begin_msg args$ = new __txn_begin_msg();
- call.retrieveCall(args$);
- __txn_begin_reply result$ = __DB_txn_begin_4003(args$);
- call.reply(result$);
- break;
- }
- case 17: {
- __txn_commit_msg args$ = new __txn_commit_msg();
- call.retrieveCall(args$);
- __txn_commit_reply result$ = __DB_txn_commit_4003(args$);
- call.reply(result$);
- break;
- }
- case 18: {
- __txn_discard_msg args$ = new __txn_discard_msg();
- call.retrieveCall(args$);
- __txn_discard_reply result$ = __DB_txn_discard_4003(args$);
- call.reply(result$);
- break;
- }
- case 19: {
- __txn_prepare_msg args$ = new __txn_prepare_msg();
- call.retrieveCall(args$);
- __txn_prepare_reply result$ = __DB_txn_prepare_4003(args$);
- call.reply(result$);
- break;
- }
- case 20: {
- __txn_recover_msg args$ = new __txn_recover_msg();
- call.retrieveCall(args$);
- __txn_recover_reply result$ = __DB_txn_recover_4003(args$);
- call.reply(result$);
- break;
- }
- case 21: {
- __db_associate_msg args$ = new __db_associate_msg();
- call.retrieveCall(args$);
- __db_associate_reply result$ = __DB_db_associate_4003(args$);
- call.reply(result$);
- break;
- }
- case 22: {
- __db_bt_maxkey_msg args$ = new __db_bt_maxkey_msg();
- call.retrieveCall(args$);
- __db_bt_maxkey_reply result$ = __DB_db_bt_maxkey_4003(args$);
- call.reply(result$);
- break;
- }
- case 23: {
- __db_get_bt_minkey_msg args$ = new __db_get_bt_minkey_msg();
- call.retrieveCall(args$);
- __db_get_bt_minkey_reply result$ = __DB_db_get_bt_minkey_4003(args$);
- call.reply(result$);
- break;
- }
- case 24: {
- __db_bt_minkey_msg args$ = new __db_bt_minkey_msg();
- call.retrieveCall(args$);
- __db_bt_minkey_reply result$ = __DB_db_bt_minkey_4003(args$);
- call.reply(result$);
- break;
- }
- case 25: {
- __db_close_msg args$ = new __db_close_msg();
- call.retrieveCall(args$);
- __db_close_reply result$ = __DB_db_close_4003(args$);
- call.reply(result$);
- break;
- }
- case 26: {
- __db_create_msg args$ = new __db_create_msg();
- call.retrieveCall(args$);
- __db_create_reply result$ = __DB_db_create_4003(args$);
- call.reply(result$);
- break;
- }
- case 27: {
- __db_del_msg args$ = new __db_del_msg();
- call.retrieveCall(args$);
- __db_del_reply result$ = __DB_db_del_4003(args$);
- call.reply(result$);
- break;
- }
- case 28: {
- __db_get_encrypt_flags_msg args$ = new __db_get_encrypt_flags_msg();
- call.retrieveCall(args$);
- __db_get_encrypt_flags_reply result$ = __DB_db_get_encrypt_flags_4003(args$);
- call.reply(result$);
- break;
- }
- case 29: {
- __db_encrypt_msg args$ = new __db_encrypt_msg();
- call.retrieveCall(args$);
- __db_encrypt_reply result$ = __DB_db_encrypt_4003(args$);
- call.reply(result$);
- break;
- }
- case 30: {
- __db_get_extentsize_msg args$ = new __db_get_extentsize_msg();
- call.retrieveCall(args$);
- __db_get_extentsize_reply result$ = __DB_db_get_extentsize_4003(args$);
- call.reply(result$);
- break;
- }
- case 31: {
- __db_extentsize_msg args$ = new __db_extentsize_msg();
- call.retrieveCall(args$);
- __db_extentsize_reply result$ = __DB_db_extentsize_4003(args$);
- call.reply(result$);
- break;
- }
- case 32: {
- __db_get_flags_msg args$ = new __db_get_flags_msg();
- call.retrieveCall(args$);
- __db_get_flags_reply result$ = __DB_db_get_flags_4003(args$);
- call.reply(result$);
- break;
- }
- case 33: {
- __db_flags_msg args$ = new __db_flags_msg();
- call.retrieveCall(args$);
- __db_flags_reply result$ = __DB_db_flags_4003(args$);
- call.reply(result$);
- break;
- }
- case 34: {
- __db_get_msg args$ = new __db_get_msg();
- call.retrieveCall(args$);
- __db_get_reply result$ = __DB_db_get_4003(args$);
- call.reply(result$);
- break;
- }
- case 35: {
- __db_get_name_msg args$ = new __db_get_name_msg();
- call.retrieveCall(args$);
- __db_get_name_reply result$ = __DB_db_get_name_4003(args$);
- call.reply(result$);
- break;
- }
- case 36: {
- __db_get_open_flags_msg args$ = new __db_get_open_flags_msg();
- call.retrieveCall(args$);
- __db_get_open_flags_reply result$ = __DB_db_get_open_flags_4003(args$);
- call.reply(result$);
- break;
- }
- case 37: {
- __db_get_h_ffactor_msg args$ = new __db_get_h_ffactor_msg();
- call.retrieveCall(args$);
- __db_get_h_ffactor_reply result$ = __DB_db_get_h_ffactor_4003(args$);
- call.reply(result$);
- break;
- }
- case 38: {
- __db_h_ffactor_msg args$ = new __db_h_ffactor_msg();
- call.retrieveCall(args$);
- __db_h_ffactor_reply result$ = __DB_db_h_ffactor_4003(args$);
- call.reply(result$);
- break;
- }
- case 39: {
- __db_get_h_nelem_msg args$ = new __db_get_h_nelem_msg();
- call.retrieveCall(args$);
- __db_get_h_nelem_reply result$ = __DB_db_get_h_nelem_4003(args$);
- call.reply(result$);
- break;
- }
- case 40: {
- __db_h_nelem_msg args$ = new __db_h_nelem_msg();
- call.retrieveCall(args$);
- __db_h_nelem_reply result$ = __DB_db_h_nelem_4003(args$);
- call.reply(result$);
- break;
- }
- case 41: {
- __db_key_range_msg args$ = new __db_key_range_msg();
- call.retrieveCall(args$);
- __db_key_range_reply result$ = __DB_db_key_range_4003(args$);
- call.reply(result$);
- break;
- }
- case 42: {
- __db_get_lorder_msg args$ = new __db_get_lorder_msg();
- call.retrieveCall(args$);
- __db_get_lorder_reply result$ = __DB_db_get_lorder_4003(args$);
- call.reply(result$);
- break;
- }
- case 43: {
- __db_lorder_msg args$ = new __db_lorder_msg();
- call.retrieveCall(args$);
- __db_lorder_reply result$ = __DB_db_lorder_4003(args$);
- call.reply(result$);
- break;
- }
- case 44: {
- __db_open_msg args$ = new __db_open_msg();
- call.retrieveCall(args$);
- __db_open_reply result$ = __DB_db_open_4003(args$);
- call.reply(result$);
- break;
- }
- case 45: {
- __db_get_pagesize_msg args$ = new __db_get_pagesize_msg();
- call.retrieveCall(args$);
- __db_get_pagesize_reply result$ = __DB_db_get_pagesize_4003(args$);
- call.reply(result$);
- break;
- }
- case 46: {
- __db_pagesize_msg args$ = new __db_pagesize_msg();
- call.retrieveCall(args$);
- __db_pagesize_reply result$ = __DB_db_pagesize_4003(args$);
- call.reply(result$);
- break;
- }
- case 47: {
- __db_pget_msg args$ = new __db_pget_msg();
- call.retrieveCall(args$);
- __db_pget_reply result$ = __DB_db_pget_4003(args$);
- call.reply(result$);
- break;
- }
- case 48: {
- __db_put_msg args$ = new __db_put_msg();
- call.retrieveCall(args$);
- __db_put_reply result$ = __DB_db_put_4003(args$);
- call.reply(result$);
- break;
- }
- case 49: {
- __db_get_re_delim_msg args$ = new __db_get_re_delim_msg();
- call.retrieveCall(args$);
- __db_get_re_delim_reply result$ = __DB_db_get_re_delim_4003(args$);
- call.reply(result$);
- break;
- }
- case 50: {
- __db_re_delim_msg args$ = new __db_re_delim_msg();
- call.retrieveCall(args$);
- __db_re_delim_reply result$ = __DB_db_re_delim_4003(args$);
- call.reply(result$);
- break;
- }
- case 51: {
- __db_get_re_len_msg args$ = new __db_get_re_len_msg();
- call.retrieveCall(args$);
- __db_get_re_len_reply result$ = __DB_db_get_re_len_4003(args$);
- call.reply(result$);
- break;
- }
- case 52: {
- __db_re_len_msg args$ = new __db_re_len_msg();
- call.retrieveCall(args$);
- __db_re_len_reply result$ = __DB_db_re_len_4003(args$);
- call.reply(result$);
- break;
- }
- case 53: {
- __db_re_pad_msg args$ = new __db_re_pad_msg();
- call.retrieveCall(args$);
- __db_re_pad_reply result$ = __DB_db_re_pad_4003(args$);
- call.reply(result$);
- break;
- }
- case 54: {
- __db_get_re_pad_msg args$ = new __db_get_re_pad_msg();
- call.retrieveCall(args$);
- __db_get_re_pad_reply result$ = __DB_db_get_re_pad_4003(args$);
- call.reply(result$);
- break;
- }
- case 55: {
- __db_remove_msg args$ = new __db_remove_msg();
- call.retrieveCall(args$);
- __db_remove_reply result$ = __DB_db_remove_4003(args$);
- call.reply(result$);
- break;
- }
- case 56: {
- __db_rename_msg args$ = new __db_rename_msg();
- call.retrieveCall(args$);
- __db_rename_reply result$ = __DB_db_rename_4003(args$);
- call.reply(result$);
- break;
- }
- case 57: {
- __db_stat_msg args$ = new __db_stat_msg();
- call.retrieveCall(args$);
- __db_stat_reply result$ = __DB_db_stat_4003(args$);
- call.reply(result$);
- break;
- }
- case 58: {
- __db_sync_msg args$ = new __db_sync_msg();
- call.retrieveCall(args$);
- __db_sync_reply result$ = __DB_db_sync_4003(args$);
- call.reply(result$);
- break;
- }
- case 59: {
- __db_truncate_msg args$ = new __db_truncate_msg();
- call.retrieveCall(args$);
- __db_truncate_reply result$ = __DB_db_truncate_4003(args$);
- call.reply(result$);
- break;
- }
- case 60: {
- __db_cursor_msg args$ = new __db_cursor_msg();
- call.retrieveCall(args$);
- __db_cursor_reply result$ = __DB_db_cursor_4003(args$);
- call.reply(result$);
- break;
- }
- case 61: {
- __db_join_msg args$ = new __db_join_msg();
- call.retrieveCall(args$);
- __db_join_reply result$ = __DB_db_join_4003(args$);
- call.reply(result$);
- break;
- }
- case 62: {
- __dbc_close_msg args$ = new __dbc_close_msg();
- call.retrieveCall(args$);
- __dbc_close_reply result$ = __DB_dbc_close_4003(args$);
- call.reply(result$);
- break;
- }
- case 63: {
- __dbc_count_msg args$ = new __dbc_count_msg();
- call.retrieveCall(args$);
- __dbc_count_reply result$ = __DB_dbc_count_4003(args$);
- call.reply(result$);
- break;
- }
- case 64: {
- __dbc_del_msg args$ = new __dbc_del_msg();
- call.retrieveCall(args$);
- __dbc_del_reply result$ = __DB_dbc_del_4003(args$);
- call.reply(result$);
- break;
- }
- case 65: {
- __dbc_dup_msg args$ = new __dbc_dup_msg();
- call.retrieveCall(args$);
- __dbc_dup_reply result$ = __DB_dbc_dup_4003(args$);
- call.reply(result$);
- break;
- }
- case 66: {
- __dbc_get_msg args$ = new __dbc_get_msg();
- call.retrieveCall(args$);
- __dbc_get_reply result$ = __DB_dbc_get_4003(args$);
- call.reply(result$);
- break;
- }
- case 67: {
- __dbc_pget_msg args$ = new __dbc_pget_msg();
- call.retrieveCall(args$);
- __dbc_pget_reply result$ = __DB_dbc_pget_4003(args$);
- call.reply(result$);
- break;
- }
- case 68: {
- __dbc_put_msg args$ = new __dbc_put_msg();
- call.retrieveCall(args$);
- __dbc_put_reply result$ = __DB_dbc_put_4003(args$);
- call.reply(result$);
- break;
- }
- default:
- call.failProcedureUnavailable();
- }
- } else {
- call.failProcedureUnavailable();
- }
- }
-
- public abstract __env_get_cachesize_reply __DB_env_get_cachesize_4003(__env_get_cachesize_msg arg1);
-
- public abstract __env_cachesize_reply __DB_env_cachesize_4003(__env_cachesize_msg arg1);
-
- public abstract __env_close_reply __DB_env_close_4003(__env_close_msg arg1);
-
- public abstract __env_create_reply __DB_env_create_4003(__env_create_msg arg1);
-
- public abstract __env_dbremove_reply __DB_env_dbremove_4003(__env_dbremove_msg arg1);
-
- public abstract __env_dbrename_reply __DB_env_dbrename_4003(__env_dbrename_msg arg1);
-
- public abstract __env_get_encrypt_flags_reply __DB_env_get_encrypt_flags_4003(__env_get_encrypt_flags_msg arg1);
-
- public abstract __env_encrypt_reply __DB_env_encrypt_4003(__env_encrypt_msg arg1);
-
- public abstract __env_get_flags_reply __DB_env_get_flags_4003(__env_get_flags_msg arg1);
-
- public abstract __env_flags_reply __DB_env_flags_4003(__env_flags_msg arg1);
-
- public abstract __env_get_home_reply __DB_env_get_home_4003(__env_get_home_msg arg1);
-
- public abstract __env_get_open_flags_reply __DB_env_get_open_flags_4003(__env_get_open_flags_msg arg1);
-
- public abstract __env_open_reply __DB_env_open_4003(__env_open_msg arg1);
-
- public abstract __env_remove_reply __DB_env_remove_4003(__env_remove_msg arg1);
-
- public abstract __txn_abort_reply __DB_txn_abort_4003(__txn_abort_msg arg1);
-
- public abstract __txn_begin_reply __DB_txn_begin_4003(__txn_begin_msg arg1);
-
- public abstract __txn_commit_reply __DB_txn_commit_4003(__txn_commit_msg arg1);
-
- public abstract __txn_discard_reply __DB_txn_discard_4003(__txn_discard_msg arg1);
-
- public abstract __txn_prepare_reply __DB_txn_prepare_4003(__txn_prepare_msg arg1);
-
- public abstract __txn_recover_reply __DB_txn_recover_4003(__txn_recover_msg arg1);
-
- public abstract __db_associate_reply __DB_db_associate_4003(__db_associate_msg arg1);
-
- public abstract __db_bt_maxkey_reply __DB_db_bt_maxkey_4003(__db_bt_maxkey_msg arg1);
-
- public abstract __db_get_bt_minkey_reply __DB_db_get_bt_minkey_4003(__db_get_bt_minkey_msg arg1);
-
- public abstract __db_bt_minkey_reply __DB_db_bt_minkey_4003(__db_bt_minkey_msg arg1);
-
- public abstract __db_close_reply __DB_db_close_4003(__db_close_msg arg1);
-
- public abstract __db_create_reply __DB_db_create_4003(__db_create_msg arg1);
-
- public abstract __db_del_reply __DB_db_del_4003(__db_del_msg arg1);
-
- public abstract __db_get_encrypt_flags_reply __DB_db_get_encrypt_flags_4003(__db_get_encrypt_flags_msg arg1);
-
- public abstract __db_encrypt_reply __DB_db_encrypt_4003(__db_encrypt_msg arg1);
-
- public abstract __db_get_extentsize_reply __DB_db_get_extentsize_4003(__db_get_extentsize_msg arg1);
-
- public abstract __db_extentsize_reply __DB_db_extentsize_4003(__db_extentsize_msg arg1);
-
- public abstract __db_get_flags_reply __DB_db_get_flags_4003(__db_get_flags_msg arg1);
-
- public abstract __db_flags_reply __DB_db_flags_4003(__db_flags_msg arg1);
-
- public abstract __db_get_reply __DB_db_get_4003(__db_get_msg arg1);
-
- public abstract __db_get_name_reply __DB_db_get_name_4003(__db_get_name_msg arg1);
-
- public abstract __db_get_open_flags_reply __DB_db_get_open_flags_4003(__db_get_open_flags_msg arg1);
-
- public abstract __db_get_h_ffactor_reply __DB_db_get_h_ffactor_4003(__db_get_h_ffactor_msg arg1);
-
- public abstract __db_h_ffactor_reply __DB_db_h_ffactor_4003(__db_h_ffactor_msg arg1);
-
- public abstract __db_get_h_nelem_reply __DB_db_get_h_nelem_4003(__db_get_h_nelem_msg arg1);
-
- public abstract __db_h_nelem_reply __DB_db_h_nelem_4003(__db_h_nelem_msg arg1);
-
- public abstract __db_key_range_reply __DB_db_key_range_4003(__db_key_range_msg arg1);
-
- public abstract __db_get_lorder_reply __DB_db_get_lorder_4003(__db_get_lorder_msg arg1);
-
- public abstract __db_lorder_reply __DB_db_lorder_4003(__db_lorder_msg arg1);
-
- public abstract __db_open_reply __DB_db_open_4003(__db_open_msg arg1);
-
- public abstract __db_get_pagesize_reply __DB_db_get_pagesize_4003(__db_get_pagesize_msg arg1);
-
- public abstract __db_pagesize_reply __DB_db_pagesize_4003(__db_pagesize_msg arg1);
-
- public abstract __db_pget_reply __DB_db_pget_4003(__db_pget_msg arg1);
-
- public abstract __db_put_reply __DB_db_put_4003(__db_put_msg arg1);
-
- public abstract __db_get_re_delim_reply __DB_db_get_re_delim_4003(__db_get_re_delim_msg arg1);
-
- public abstract __db_re_delim_reply __DB_db_re_delim_4003(__db_re_delim_msg arg1);
-
- public abstract __db_get_re_len_reply __DB_db_get_re_len_4003(__db_get_re_len_msg arg1);
-
- public abstract __db_re_len_reply __DB_db_re_len_4003(__db_re_len_msg arg1);
-
- public abstract __db_re_pad_reply __DB_db_re_pad_4003(__db_re_pad_msg arg1);
-
- public abstract __db_get_re_pad_reply __DB_db_get_re_pad_4003(__db_get_re_pad_msg arg1);
-
- public abstract __db_remove_reply __DB_db_remove_4003(__db_remove_msg arg1);
-
- public abstract __db_rename_reply __DB_db_rename_4003(__db_rename_msg arg1);
-
- public abstract __db_stat_reply __DB_db_stat_4003(__db_stat_msg arg1);
-
- public abstract __db_sync_reply __DB_db_sync_4003(__db_sync_msg arg1);
-
- public abstract __db_truncate_reply __DB_db_truncate_4003(__db_truncate_msg arg1);
-
- public abstract __db_cursor_reply __DB_db_cursor_4003(__db_cursor_msg arg1);
-
- public abstract __db_join_reply __DB_db_join_4003(__db_join_msg arg1);
-
- public abstract __dbc_close_reply __DB_dbc_close_4003(__dbc_close_msg arg1);
-
- public abstract __dbc_count_reply __DB_dbc_count_4003(__dbc_count_msg arg1);
-
- public abstract __dbc_del_reply __DB_dbc_del_4003(__dbc_del_msg arg1);
-
- public abstract __dbc_dup_reply __DB_dbc_dup_4003(__dbc_dup_msg arg1);
-
- public abstract __dbc_get_reply __DB_dbc_get_4003(__dbc_get_msg arg1);
-
- public abstract __dbc_pget_reply __DB_dbc_pget_4003(__dbc_pget_msg arg1);
-
- public abstract __dbc_put_reply __DB_dbc_put_4003(__dbc_put_msg arg1);
-
-}
-// End of ServerStubs.java
diff --git a/db/rpc_server/java/gen/__db_associate_msg.java b/db/rpc_server/java/gen/__db_associate_msg.java
deleted file mode 100644
index 8977303b9..000000000
--- a/db/rpc_server/java/gen/__db_associate_msg.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 4/25/02 11:01 AM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_associate_msg implements XdrAble {
- public int dbpcl_id;
- public int txnpcl_id;
- public int sdbpcl_id;
- public int flags;
-
- public __db_associate_msg() {
- }
-
- public __db_associate_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbpcl_id);
- xdr.xdrEncodeInt(txnpcl_id);
- xdr.xdrEncodeInt(sdbpcl_id);
- xdr.xdrEncodeInt(flags);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbpcl_id = xdr.xdrDecodeInt();
- txnpcl_id = xdr.xdrDecodeInt();
- sdbpcl_id = xdr.xdrDecodeInt();
- flags = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_associate_msg.java
diff --git a/db/rpc_server/java/gen/__db_associate_reply.java b/db/rpc_server/java/gen/__db_associate_reply.java
deleted file mode 100644
index 476d0868b..000000000
--- a/db/rpc_server/java/gen/__db_associate_reply.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_associate_reply implements XdrAble {
- public int status;
-
- public __db_associate_reply() {
- }
-
- public __db_associate_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_associate_reply.java
diff --git a/db/rpc_server/java/gen/__db_bt_maxkey_msg.java b/db/rpc_server/java/gen/__db_bt_maxkey_msg.java
deleted file mode 100644
index 007ce16a9..000000000
--- a/db/rpc_server/java/gen/__db_bt_maxkey_msg.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_bt_maxkey_msg implements XdrAble {
- public int dbpcl_id;
- public int maxkey;
-
- public __db_bt_maxkey_msg() {
- }
-
- public __db_bt_maxkey_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbpcl_id);
- xdr.xdrEncodeInt(maxkey);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbpcl_id = xdr.xdrDecodeInt();
- maxkey = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_bt_maxkey_msg.java
diff --git a/db/rpc_server/java/gen/__db_bt_maxkey_reply.java b/db/rpc_server/java/gen/__db_bt_maxkey_reply.java
deleted file mode 100644
index 855573271..000000000
--- a/db/rpc_server/java/gen/__db_bt_maxkey_reply.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_bt_maxkey_reply implements XdrAble {
- public int status;
-
- public __db_bt_maxkey_reply() {
- }
-
- public __db_bt_maxkey_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_bt_maxkey_reply.java
diff --git a/db/rpc_server/java/gen/__db_bt_minkey_msg.java b/db/rpc_server/java/gen/__db_bt_minkey_msg.java
deleted file mode 100644
index c86ec3824..000000000
--- a/db/rpc_server/java/gen/__db_bt_minkey_msg.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_bt_minkey_msg implements XdrAble {
- public int dbpcl_id;
- public int minkey;
-
- public __db_bt_minkey_msg() {
- }
-
- public __db_bt_minkey_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbpcl_id);
- xdr.xdrEncodeInt(minkey);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbpcl_id = xdr.xdrDecodeInt();
- minkey = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_bt_minkey_msg.java
diff --git a/db/rpc_server/java/gen/__db_bt_minkey_reply.java b/db/rpc_server/java/gen/__db_bt_minkey_reply.java
deleted file mode 100644
index 4d944b6bf..000000000
--- a/db/rpc_server/java/gen/__db_bt_minkey_reply.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_bt_minkey_reply implements XdrAble {
- public int status;
-
- public __db_bt_minkey_reply() {
- }
-
- public __db_bt_minkey_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_bt_minkey_reply.java
diff --git a/db/rpc_server/java/gen/__db_close_msg.java b/db/rpc_server/java/gen/__db_close_msg.java
deleted file mode 100644
index ce8d21370..000000000
--- a/db/rpc_server/java/gen/__db_close_msg.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_close_msg implements XdrAble {
- public int dbpcl_id;
- public int flags;
-
- public __db_close_msg() {
- }
-
- public __db_close_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbpcl_id);
- xdr.xdrEncodeInt(flags);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbpcl_id = xdr.xdrDecodeInt();
- flags = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_close_msg.java
diff --git a/db/rpc_server/java/gen/__db_close_reply.java b/db/rpc_server/java/gen/__db_close_reply.java
deleted file mode 100644
index a9380e9c0..000000000
--- a/db/rpc_server/java/gen/__db_close_reply.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_close_reply implements XdrAble {
- public int status;
-
- public __db_close_reply() {
- }
-
- public __db_close_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_close_reply.java
diff --git a/db/rpc_server/java/gen/__db_create_msg.java b/db/rpc_server/java/gen/__db_create_msg.java
deleted file mode 100644
index d21ca50f8..000000000
--- a/db/rpc_server/java/gen/__db_create_msg.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_create_msg implements XdrAble {
- public int dbenvcl_id;
- public int flags;
-
- public __db_create_msg() {
- }
-
- public __db_create_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbenvcl_id);
- xdr.xdrEncodeInt(flags);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbenvcl_id = xdr.xdrDecodeInt();
- flags = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_create_msg.java
diff --git a/db/rpc_server/java/gen/__db_create_reply.java b/db/rpc_server/java/gen/__db_create_reply.java
deleted file mode 100644
index e3dcbbab1..000000000
--- a/db/rpc_server/java/gen/__db_create_reply.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_create_reply implements XdrAble {
- public int status;
- public int dbcl_id;
-
- public __db_create_reply() {
- }
-
- public __db_create_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- xdr.xdrEncodeInt(dbcl_id);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- dbcl_id = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_create_reply.java
diff --git a/db/rpc_server/java/gen/__db_cursor_msg.java b/db/rpc_server/java/gen/__db_cursor_msg.java
deleted file mode 100644
index 60e09db6e..000000000
--- a/db/rpc_server/java/gen/__db_cursor_msg.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_cursor_msg implements XdrAble {
- public int dbpcl_id;
- public int txnpcl_id;
- public int flags;
-
- public __db_cursor_msg() {
- }
-
- public __db_cursor_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbpcl_id);
- xdr.xdrEncodeInt(txnpcl_id);
- xdr.xdrEncodeInt(flags);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbpcl_id = xdr.xdrDecodeInt();
- txnpcl_id = xdr.xdrDecodeInt();
- flags = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_cursor_msg.java
diff --git a/db/rpc_server/java/gen/__db_cursor_reply.java b/db/rpc_server/java/gen/__db_cursor_reply.java
deleted file mode 100644
index bafd2817c..000000000
--- a/db/rpc_server/java/gen/__db_cursor_reply.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_cursor_reply implements XdrAble {
- public int status;
- public int dbcidcl_id;
-
- public __db_cursor_reply() {
- }
-
- public __db_cursor_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- xdr.xdrEncodeInt(dbcidcl_id);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- dbcidcl_id = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_cursor_reply.java
diff --git a/db/rpc_server/java/gen/__db_del_msg.java b/db/rpc_server/java/gen/__db_del_msg.java
deleted file mode 100644
index fdf47907d..000000000
--- a/db/rpc_server/java/gen/__db_del_msg.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_del_msg implements XdrAble {
- public int dbpcl_id;
- public int txnpcl_id;
- public int keydlen;
- public int keydoff;
- public int keyulen;
- public int keyflags;
- public byte [] keydata;
- public int flags;
-
- public __db_del_msg() {
- }
-
- public __db_del_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbpcl_id);
- xdr.xdrEncodeInt(txnpcl_id);
- xdr.xdrEncodeInt(keydlen);
- xdr.xdrEncodeInt(keydoff);
- xdr.xdrEncodeInt(keyulen);
- xdr.xdrEncodeInt(keyflags);
- xdr.xdrEncodeDynamicOpaque(keydata);
- xdr.xdrEncodeInt(flags);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbpcl_id = xdr.xdrDecodeInt();
- txnpcl_id = xdr.xdrDecodeInt();
- keydlen = xdr.xdrDecodeInt();
- keydoff = xdr.xdrDecodeInt();
- keyulen = xdr.xdrDecodeInt();
- keyflags = xdr.xdrDecodeInt();
- keydata = xdr.xdrDecodeDynamicOpaque();
- flags = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_del_msg.java
diff --git a/db/rpc_server/java/gen/__db_del_reply.java b/db/rpc_server/java/gen/__db_del_reply.java
deleted file mode 100644
index 8a5544594..000000000
--- a/db/rpc_server/java/gen/__db_del_reply.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_del_reply implements XdrAble {
- public int status;
-
- public __db_del_reply() {
- }
-
- public __db_del_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_del_reply.java
diff --git a/db/rpc_server/java/gen/__db_encrypt_msg.java b/db/rpc_server/java/gen/__db_encrypt_msg.java
deleted file mode 100644
index 46d9f8ee7..000000000
--- a/db/rpc_server/java/gen/__db_encrypt_msg.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 2/13/02 1:05 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_encrypt_msg implements XdrAble {
- public int dbpcl_id;
- public String passwd;
- public int flags;
-
- public __db_encrypt_msg() {
- }
-
- public __db_encrypt_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbpcl_id);
- xdr.xdrEncodeString(passwd);
- xdr.xdrEncodeInt(flags);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbpcl_id = xdr.xdrDecodeInt();
- passwd = xdr.xdrDecodeString();
- flags = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_encrypt_msg.java
diff --git a/db/rpc_server/java/gen/__db_encrypt_reply.java b/db/rpc_server/java/gen/__db_encrypt_reply.java
deleted file mode 100644
index a97cc98c9..000000000
--- a/db/rpc_server/java/gen/__db_encrypt_reply.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 2/13/02 1:05 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_encrypt_reply implements XdrAble {
- public int status;
-
- public __db_encrypt_reply() {
- }
-
- public __db_encrypt_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_encrypt_reply.java
diff --git a/db/rpc_server/java/gen/__db_extentsize_msg.java b/db/rpc_server/java/gen/__db_extentsize_msg.java
deleted file mode 100644
index 41a51cff9..000000000
--- a/db/rpc_server/java/gen/__db_extentsize_msg.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_extentsize_msg implements XdrAble {
- public int dbpcl_id;
- public int extentsize;
-
- public __db_extentsize_msg() {
- }
-
- public __db_extentsize_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbpcl_id);
- xdr.xdrEncodeInt(extentsize);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbpcl_id = xdr.xdrDecodeInt();
- extentsize = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_extentsize_msg.java
diff --git a/db/rpc_server/java/gen/__db_extentsize_reply.java b/db/rpc_server/java/gen/__db_extentsize_reply.java
deleted file mode 100644
index 409625486..000000000
--- a/db/rpc_server/java/gen/__db_extentsize_reply.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_extentsize_reply implements XdrAble {
- public int status;
-
- public __db_extentsize_reply() {
- }
-
- public __db_extentsize_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_extentsize_reply.java
diff --git a/db/rpc_server/java/gen/__db_flags_msg.java b/db/rpc_server/java/gen/__db_flags_msg.java
deleted file mode 100644
index d8752e2e4..000000000
--- a/db/rpc_server/java/gen/__db_flags_msg.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_flags_msg implements XdrAble {
- public int dbpcl_id;
- public int flags;
-
- public __db_flags_msg() {
- }
-
- public __db_flags_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbpcl_id);
- xdr.xdrEncodeInt(flags);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbpcl_id = xdr.xdrDecodeInt();
- flags = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_flags_msg.java
diff --git a/db/rpc_server/java/gen/__db_flags_reply.java b/db/rpc_server/java/gen/__db_flags_reply.java
deleted file mode 100644
index c4ec253db..000000000
--- a/db/rpc_server/java/gen/__db_flags_reply.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_flags_reply implements XdrAble {
- public int status;
-
- public __db_flags_reply() {
- }
-
- public __db_flags_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_flags_reply.java
diff --git a/db/rpc_server/java/gen/__db_get_bt_minkey_msg.java b/db/rpc_server/java/gen/__db_get_bt_minkey_msg.java
deleted file mode 100644
index 6cf11f930..000000000
--- a/db/rpc_server/java/gen/__db_get_bt_minkey_msg.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 3/26/03 6:40 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_get_bt_minkey_msg implements XdrAble {
- public int dbpcl_id;
-
- public __db_get_bt_minkey_msg() {
- }
-
- public __db_get_bt_minkey_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbpcl_id);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbpcl_id = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_get_bt_minkey_msg.java
diff --git a/db/rpc_server/java/gen/__db_get_bt_minkey_reply.java b/db/rpc_server/java/gen/__db_get_bt_minkey_reply.java
deleted file mode 100644
index 62fd2590e..000000000
--- a/db/rpc_server/java/gen/__db_get_bt_minkey_reply.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 3/26/03 6:40 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_get_bt_minkey_reply implements XdrAble {
- public int status;
- public int minkey;
-
- public __db_get_bt_minkey_reply() {
- }
-
- public __db_get_bt_minkey_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- xdr.xdrEncodeInt(minkey);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- minkey = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_get_bt_minkey_reply.java
diff --git a/db/rpc_server/java/gen/__db_get_encrypt_flags_msg.java b/db/rpc_server/java/gen/__db_get_encrypt_flags_msg.java
deleted file mode 100644
index f302b4e27..000000000
--- a/db/rpc_server/java/gen/__db_get_encrypt_flags_msg.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 3/26/03 6:40 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_get_encrypt_flags_msg implements XdrAble {
- public int dbpcl_id;
-
- public __db_get_encrypt_flags_msg() {
- }
-
- public __db_get_encrypt_flags_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbpcl_id);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbpcl_id = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_get_encrypt_flags_msg.java
diff --git a/db/rpc_server/java/gen/__db_get_encrypt_flags_reply.java b/db/rpc_server/java/gen/__db_get_encrypt_flags_reply.java
deleted file mode 100644
index 840112db1..000000000
--- a/db/rpc_server/java/gen/__db_get_encrypt_flags_reply.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 3/26/03 6:40 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_get_encrypt_flags_reply implements XdrAble {
- public int status;
- public int flags;
-
- public __db_get_encrypt_flags_reply() {
- }
-
- public __db_get_encrypt_flags_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- xdr.xdrEncodeInt(flags);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- flags = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_get_encrypt_flags_reply.java
diff --git a/db/rpc_server/java/gen/__db_get_extentsize_msg.java b/db/rpc_server/java/gen/__db_get_extentsize_msg.java
deleted file mode 100644
index c963be7b3..000000000
--- a/db/rpc_server/java/gen/__db_get_extentsize_msg.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 3/26/03 6:40 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_get_extentsize_msg implements XdrAble {
- public int dbpcl_id;
-
- public __db_get_extentsize_msg() {
- }
-
- public __db_get_extentsize_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbpcl_id);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbpcl_id = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_get_extentsize_msg.java
diff --git a/db/rpc_server/java/gen/__db_get_extentsize_reply.java b/db/rpc_server/java/gen/__db_get_extentsize_reply.java
deleted file mode 100644
index 4f97e35c2..000000000
--- a/db/rpc_server/java/gen/__db_get_extentsize_reply.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 3/26/03 6:40 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_get_extentsize_reply implements XdrAble {
- public int status;
- public int extentsize;
-
- public __db_get_extentsize_reply() {
- }
-
- public __db_get_extentsize_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- xdr.xdrEncodeInt(extentsize);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- extentsize = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_get_extentsize_reply.java
diff --git a/db/rpc_server/java/gen/__db_get_flags_msg.java b/db/rpc_server/java/gen/__db_get_flags_msg.java
deleted file mode 100644
index f8a7a0e50..000000000
--- a/db/rpc_server/java/gen/__db_get_flags_msg.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 3/26/03 6:40 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_get_flags_msg implements XdrAble {
- public int dbpcl_id;
-
- public __db_get_flags_msg() {
- }
-
- public __db_get_flags_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbpcl_id);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbpcl_id = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_get_flags_msg.java
diff --git a/db/rpc_server/java/gen/__db_get_flags_reply.java b/db/rpc_server/java/gen/__db_get_flags_reply.java
deleted file mode 100644
index 9c2ac44ee..000000000
--- a/db/rpc_server/java/gen/__db_get_flags_reply.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 3/26/03 6:40 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_get_flags_reply implements XdrAble {
- public int status;
- public int flags;
-
- public __db_get_flags_reply() {
- }
-
- public __db_get_flags_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- xdr.xdrEncodeInt(flags);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- flags = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_get_flags_reply.java
diff --git a/db/rpc_server/java/gen/__db_get_h_ffactor_msg.java b/db/rpc_server/java/gen/__db_get_h_ffactor_msg.java
deleted file mode 100644
index deb3723aa..000000000
--- a/db/rpc_server/java/gen/__db_get_h_ffactor_msg.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 3/26/03 6:40 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_get_h_ffactor_msg implements XdrAble {
- public int dbpcl_id;
-
- public __db_get_h_ffactor_msg() {
- }
-
- public __db_get_h_ffactor_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbpcl_id);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbpcl_id = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_get_h_ffactor_msg.java
diff --git a/db/rpc_server/java/gen/__db_get_h_ffactor_reply.java b/db/rpc_server/java/gen/__db_get_h_ffactor_reply.java
deleted file mode 100644
index 30b769cb3..000000000
--- a/db/rpc_server/java/gen/__db_get_h_ffactor_reply.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 3/26/03 6:40 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_get_h_ffactor_reply implements XdrAble {
- public int status;
- public int ffactor;
-
- public __db_get_h_ffactor_reply() {
- }
-
- public __db_get_h_ffactor_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- xdr.xdrEncodeInt(ffactor);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- ffactor = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_get_h_ffactor_reply.java
diff --git a/db/rpc_server/java/gen/__db_get_h_nelem_msg.java b/db/rpc_server/java/gen/__db_get_h_nelem_msg.java
deleted file mode 100644
index cef259967..000000000
--- a/db/rpc_server/java/gen/__db_get_h_nelem_msg.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 3/26/03 6:40 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_get_h_nelem_msg implements XdrAble {
- public int dbpcl_id;
-
- public __db_get_h_nelem_msg() {
- }
-
- public __db_get_h_nelem_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbpcl_id);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbpcl_id = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_get_h_nelem_msg.java
diff --git a/db/rpc_server/java/gen/__db_get_h_nelem_reply.java b/db/rpc_server/java/gen/__db_get_h_nelem_reply.java
deleted file mode 100644
index c01c329ad..000000000
--- a/db/rpc_server/java/gen/__db_get_h_nelem_reply.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 3/26/03 6:40 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_get_h_nelem_reply implements XdrAble {
- public int status;
- public int nelem;
-
- public __db_get_h_nelem_reply() {
- }
-
- public __db_get_h_nelem_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- xdr.xdrEncodeInt(nelem);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- nelem = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_get_h_nelem_reply.java
diff --git a/db/rpc_server/java/gen/__db_get_lorder_msg.java b/db/rpc_server/java/gen/__db_get_lorder_msg.java
deleted file mode 100644
index dc6ca97f5..000000000
--- a/db/rpc_server/java/gen/__db_get_lorder_msg.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 3/26/03 6:40 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_get_lorder_msg implements XdrAble {
- public int dbpcl_id;
-
- public __db_get_lorder_msg() {
- }
-
- public __db_get_lorder_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbpcl_id);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbpcl_id = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_get_lorder_msg.java
diff --git a/db/rpc_server/java/gen/__db_get_lorder_reply.java b/db/rpc_server/java/gen/__db_get_lorder_reply.java
deleted file mode 100644
index e6d302920..000000000
--- a/db/rpc_server/java/gen/__db_get_lorder_reply.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 3/26/03 6:40 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_get_lorder_reply implements XdrAble {
- public int status;
- public int lorder;
-
- public __db_get_lorder_reply() {
- }
-
- public __db_get_lorder_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- xdr.xdrEncodeInt(lorder);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- lorder = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_get_lorder_reply.java
diff --git a/db/rpc_server/java/gen/__db_get_msg.java b/db/rpc_server/java/gen/__db_get_msg.java
deleted file mode 100644
index 3dfe8e9d8..000000000
--- a/db/rpc_server/java/gen/__db_get_msg.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_get_msg implements XdrAble {
- public int dbpcl_id;
- public int txnpcl_id;
- public int keydlen;
- public int keydoff;
- public int keyulen;
- public int keyflags;
- public byte [] keydata;
- public int datadlen;
- public int datadoff;
- public int dataulen;
- public int dataflags;
- public byte [] datadata;
- public int flags;
-
- public __db_get_msg() {
- }
-
- public __db_get_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbpcl_id);
- xdr.xdrEncodeInt(txnpcl_id);
- xdr.xdrEncodeInt(keydlen);
- xdr.xdrEncodeInt(keydoff);
- xdr.xdrEncodeInt(keyulen);
- xdr.xdrEncodeInt(keyflags);
- xdr.xdrEncodeDynamicOpaque(keydata);
- xdr.xdrEncodeInt(datadlen);
- xdr.xdrEncodeInt(datadoff);
- xdr.xdrEncodeInt(dataulen);
- xdr.xdrEncodeInt(dataflags);
- xdr.xdrEncodeDynamicOpaque(datadata);
- xdr.xdrEncodeInt(flags);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbpcl_id = xdr.xdrDecodeInt();
- txnpcl_id = xdr.xdrDecodeInt();
- keydlen = xdr.xdrDecodeInt();
- keydoff = xdr.xdrDecodeInt();
- keyulen = xdr.xdrDecodeInt();
- keyflags = xdr.xdrDecodeInt();
- keydata = xdr.xdrDecodeDynamicOpaque();
- datadlen = xdr.xdrDecodeInt();
- datadoff = xdr.xdrDecodeInt();
- dataulen = xdr.xdrDecodeInt();
- dataflags = xdr.xdrDecodeInt();
- datadata = xdr.xdrDecodeDynamicOpaque();
- flags = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_get_msg.java
diff --git a/db/rpc_server/java/gen/__db_get_name_msg.java b/db/rpc_server/java/gen/__db_get_name_msg.java
deleted file mode 100644
index 77008ba3d..000000000
--- a/db/rpc_server/java/gen/__db_get_name_msg.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 3/26/03 6:40 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_get_name_msg implements XdrAble {
- public int dbpcl_id;
-
- public __db_get_name_msg() {
- }
-
- public __db_get_name_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbpcl_id);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbpcl_id = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_get_name_msg.java
diff --git a/db/rpc_server/java/gen/__db_get_name_reply.java b/db/rpc_server/java/gen/__db_get_name_reply.java
deleted file mode 100644
index 853157f47..000000000
--- a/db/rpc_server/java/gen/__db_get_name_reply.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 3/26/03 6:40 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_get_name_reply implements XdrAble {
- public int status;
- public String filename;
- public String dbname;
-
- public __db_get_name_reply() {
- }
-
- public __db_get_name_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- xdr.xdrEncodeString(filename);
- xdr.xdrEncodeString(dbname);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- filename = xdr.xdrDecodeString();
- dbname = xdr.xdrDecodeString();
- }
-
-}
-// End of __db_get_name_reply.java
diff --git a/db/rpc_server/java/gen/__db_get_open_flags_msg.java b/db/rpc_server/java/gen/__db_get_open_flags_msg.java
deleted file mode 100644
index 372e07bf0..000000000
--- a/db/rpc_server/java/gen/__db_get_open_flags_msg.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 3/26/03 6:40 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_get_open_flags_msg implements XdrAble {
- public int dbpcl_id;
-
- public __db_get_open_flags_msg() {
- }
-
- public __db_get_open_flags_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbpcl_id);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbpcl_id = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_get_open_flags_msg.java
diff --git a/db/rpc_server/java/gen/__db_get_open_flags_reply.java b/db/rpc_server/java/gen/__db_get_open_flags_reply.java
deleted file mode 100644
index 354b97a69..000000000
--- a/db/rpc_server/java/gen/__db_get_open_flags_reply.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 3/26/03 6:40 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_get_open_flags_reply implements XdrAble {
- public int status;
- public int flags;
-
- public __db_get_open_flags_reply() {
- }
-
- public __db_get_open_flags_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- xdr.xdrEncodeInt(flags);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- flags = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_get_open_flags_reply.java
diff --git a/db/rpc_server/java/gen/__db_get_pagesize_msg.java b/db/rpc_server/java/gen/__db_get_pagesize_msg.java
deleted file mode 100644
index b8fa483a4..000000000
--- a/db/rpc_server/java/gen/__db_get_pagesize_msg.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 3/26/03 6:40 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_get_pagesize_msg implements XdrAble {
- public int dbpcl_id;
-
- public __db_get_pagesize_msg() {
- }
-
- public __db_get_pagesize_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbpcl_id);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbpcl_id = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_get_pagesize_msg.java
diff --git a/db/rpc_server/java/gen/__db_get_pagesize_reply.java b/db/rpc_server/java/gen/__db_get_pagesize_reply.java
deleted file mode 100644
index 2a1442b9c..000000000
--- a/db/rpc_server/java/gen/__db_get_pagesize_reply.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 3/26/03 6:40 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_get_pagesize_reply implements XdrAble {
- public int status;
- public int pagesize;
-
- public __db_get_pagesize_reply() {
- }
-
- public __db_get_pagesize_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- xdr.xdrEncodeInt(pagesize);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- pagesize = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_get_pagesize_reply.java
diff --git a/db/rpc_server/java/gen/__db_get_re_delim_msg.java b/db/rpc_server/java/gen/__db_get_re_delim_msg.java
deleted file mode 100644
index bd0ac3acd..000000000
--- a/db/rpc_server/java/gen/__db_get_re_delim_msg.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 3/26/03 6:40 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_get_re_delim_msg implements XdrAble {
- public int dbpcl_id;
-
- public __db_get_re_delim_msg() {
- }
-
- public __db_get_re_delim_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbpcl_id);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbpcl_id = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_get_re_delim_msg.java
diff --git a/db/rpc_server/java/gen/__db_get_re_delim_reply.java b/db/rpc_server/java/gen/__db_get_re_delim_reply.java
deleted file mode 100644
index 000a44816..000000000
--- a/db/rpc_server/java/gen/__db_get_re_delim_reply.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 3/26/03 6:40 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_get_re_delim_reply implements XdrAble {
- public int status;
- public int delim;
-
- public __db_get_re_delim_reply() {
- }
-
- public __db_get_re_delim_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- xdr.xdrEncodeInt(delim);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- delim = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_get_re_delim_reply.java
diff --git a/db/rpc_server/java/gen/__db_get_re_len_msg.java b/db/rpc_server/java/gen/__db_get_re_len_msg.java
deleted file mode 100644
index afc7d7ba6..000000000
--- a/db/rpc_server/java/gen/__db_get_re_len_msg.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 3/26/03 6:40 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_get_re_len_msg implements XdrAble {
- public int dbpcl_id;
-
- public __db_get_re_len_msg() {
- }
-
- public __db_get_re_len_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbpcl_id);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbpcl_id = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_get_re_len_msg.java
diff --git a/db/rpc_server/java/gen/__db_get_re_len_reply.java b/db/rpc_server/java/gen/__db_get_re_len_reply.java
deleted file mode 100644
index 688f75a4b..000000000
--- a/db/rpc_server/java/gen/__db_get_re_len_reply.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 3/26/03 6:40 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_get_re_len_reply implements XdrAble {
- public int status;
- public int len;
-
- public __db_get_re_len_reply() {
- }
-
- public __db_get_re_len_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- xdr.xdrEncodeInt(len);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- len = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_get_re_len_reply.java
diff --git a/db/rpc_server/java/gen/__db_get_re_pad_msg.java b/db/rpc_server/java/gen/__db_get_re_pad_msg.java
deleted file mode 100644
index f8678ccce..000000000
--- a/db/rpc_server/java/gen/__db_get_re_pad_msg.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 3/26/03 6:40 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_get_re_pad_msg implements XdrAble {
- public int dbpcl_id;
-
- public __db_get_re_pad_msg() {
- }
-
- public __db_get_re_pad_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbpcl_id);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbpcl_id = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_get_re_pad_msg.java
diff --git a/db/rpc_server/java/gen/__db_get_re_pad_reply.java b/db/rpc_server/java/gen/__db_get_re_pad_reply.java
deleted file mode 100644
index 88d682854..000000000
--- a/db/rpc_server/java/gen/__db_get_re_pad_reply.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 3/26/03 6:40 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_get_re_pad_reply implements XdrAble {
- public int status;
- public int pad;
-
- public __db_get_re_pad_reply() {
- }
-
- public __db_get_re_pad_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- xdr.xdrEncodeInt(pad);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- pad = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_get_re_pad_reply.java
diff --git a/db/rpc_server/java/gen/__db_get_reply.java b/db/rpc_server/java/gen/__db_get_reply.java
deleted file mode 100644
index 64ce52572..000000000
--- a/db/rpc_server/java/gen/__db_get_reply.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_get_reply implements XdrAble {
- public int status;
- public byte [] keydata;
- public byte [] datadata;
-
- public __db_get_reply() {
- }
-
- public __db_get_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- xdr.xdrEncodeDynamicOpaque(keydata);
- xdr.xdrEncodeDynamicOpaque(datadata);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- keydata = xdr.xdrDecodeDynamicOpaque();
- datadata = xdr.xdrDecodeDynamicOpaque();
- }
-
-}
-// End of __db_get_reply.java
diff --git a/db/rpc_server/java/gen/__db_h_ffactor_msg.java b/db/rpc_server/java/gen/__db_h_ffactor_msg.java
deleted file mode 100644
index 8d2ed1b1c..000000000
--- a/db/rpc_server/java/gen/__db_h_ffactor_msg.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_h_ffactor_msg implements XdrAble {
- public int dbpcl_id;
- public int ffactor;
-
- public __db_h_ffactor_msg() {
- }
-
- public __db_h_ffactor_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbpcl_id);
- xdr.xdrEncodeInt(ffactor);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbpcl_id = xdr.xdrDecodeInt();
- ffactor = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_h_ffactor_msg.java
diff --git a/db/rpc_server/java/gen/__db_h_ffactor_reply.java b/db/rpc_server/java/gen/__db_h_ffactor_reply.java
deleted file mode 100644
index 1885ec502..000000000
--- a/db/rpc_server/java/gen/__db_h_ffactor_reply.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_h_ffactor_reply implements XdrAble {
- public int status;
-
- public __db_h_ffactor_reply() {
- }
-
- public __db_h_ffactor_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_h_ffactor_reply.java
diff --git a/db/rpc_server/java/gen/__db_h_nelem_msg.java b/db/rpc_server/java/gen/__db_h_nelem_msg.java
deleted file mode 100644
index 7d0843517..000000000
--- a/db/rpc_server/java/gen/__db_h_nelem_msg.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_h_nelem_msg implements XdrAble {
- public int dbpcl_id;
- public int nelem;
-
- public __db_h_nelem_msg() {
- }
-
- public __db_h_nelem_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbpcl_id);
- xdr.xdrEncodeInt(nelem);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbpcl_id = xdr.xdrDecodeInt();
- nelem = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_h_nelem_msg.java
diff --git a/db/rpc_server/java/gen/__db_h_nelem_reply.java b/db/rpc_server/java/gen/__db_h_nelem_reply.java
deleted file mode 100644
index 20c5c774e..000000000
--- a/db/rpc_server/java/gen/__db_h_nelem_reply.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_h_nelem_reply implements XdrAble {
- public int status;
-
- public __db_h_nelem_reply() {
- }
-
- public __db_h_nelem_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_h_nelem_reply.java
diff --git a/db/rpc_server/java/gen/__db_join_msg.java b/db/rpc_server/java/gen/__db_join_msg.java
deleted file mode 100644
index 88c72dbd6..000000000
--- a/db/rpc_server/java/gen/__db_join_msg.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_join_msg implements XdrAble {
- public int dbpcl_id;
- public int [] curs;
- public int flags;
-
- public __db_join_msg() {
- }
-
- public __db_join_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbpcl_id);
- xdr.xdrEncodeIntVector(curs);
- xdr.xdrEncodeInt(flags);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbpcl_id = xdr.xdrDecodeInt();
- curs = xdr.xdrDecodeIntVector();
- flags = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_join_msg.java
diff --git a/db/rpc_server/java/gen/__db_join_reply.java b/db/rpc_server/java/gen/__db_join_reply.java
deleted file mode 100644
index 80980e23d..000000000
--- a/db/rpc_server/java/gen/__db_join_reply.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_join_reply implements XdrAble {
- public int status;
- public int dbcidcl_id;
-
- public __db_join_reply() {
- }
-
- public __db_join_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- xdr.xdrEncodeInt(dbcidcl_id);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- dbcidcl_id = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_join_reply.java
diff --git a/db/rpc_server/java/gen/__db_key_range_msg.java b/db/rpc_server/java/gen/__db_key_range_msg.java
deleted file mode 100644
index 233077e09..000000000
--- a/db/rpc_server/java/gen/__db_key_range_msg.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_key_range_msg implements XdrAble {
- public int dbpcl_id;
- public int txnpcl_id;
- public int keydlen;
- public int keydoff;
- public int keyulen;
- public int keyflags;
- public byte [] keydata;
- public int flags;
-
- public __db_key_range_msg() {
- }
-
- public __db_key_range_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbpcl_id);
- xdr.xdrEncodeInt(txnpcl_id);
- xdr.xdrEncodeInt(keydlen);
- xdr.xdrEncodeInt(keydoff);
- xdr.xdrEncodeInt(keyulen);
- xdr.xdrEncodeInt(keyflags);
- xdr.xdrEncodeDynamicOpaque(keydata);
- xdr.xdrEncodeInt(flags);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbpcl_id = xdr.xdrDecodeInt();
- txnpcl_id = xdr.xdrDecodeInt();
- keydlen = xdr.xdrDecodeInt();
- keydoff = xdr.xdrDecodeInt();
- keyulen = xdr.xdrDecodeInt();
- keyflags = xdr.xdrDecodeInt();
- keydata = xdr.xdrDecodeDynamicOpaque();
- flags = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_key_range_msg.java
diff --git a/db/rpc_server/java/gen/__db_key_range_reply.java b/db/rpc_server/java/gen/__db_key_range_reply.java
deleted file mode 100644
index 09244c13d..000000000
--- a/db/rpc_server/java/gen/__db_key_range_reply.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_key_range_reply implements XdrAble {
- public int status;
- public double less;
- public double equal;
- public double greater;
-
- public __db_key_range_reply() {
- }
-
- public __db_key_range_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- xdr.xdrEncodeDouble(less);
- xdr.xdrEncodeDouble(equal);
- xdr.xdrEncodeDouble(greater);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- less = xdr.xdrDecodeDouble();
- equal = xdr.xdrDecodeDouble();
- greater = xdr.xdrDecodeDouble();
- }
-
-}
-// End of __db_key_range_reply.java
diff --git a/db/rpc_server/java/gen/__db_lorder_msg.java b/db/rpc_server/java/gen/__db_lorder_msg.java
deleted file mode 100644
index 3399ad8da..000000000
--- a/db/rpc_server/java/gen/__db_lorder_msg.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_lorder_msg implements XdrAble {
- public int dbpcl_id;
- public int lorder;
-
- public __db_lorder_msg() {
- }
-
- public __db_lorder_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbpcl_id);
- xdr.xdrEncodeInt(lorder);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbpcl_id = xdr.xdrDecodeInt();
- lorder = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_lorder_msg.java
diff --git a/db/rpc_server/java/gen/__db_lorder_reply.java b/db/rpc_server/java/gen/__db_lorder_reply.java
deleted file mode 100644
index cdcda4d4f..000000000
--- a/db/rpc_server/java/gen/__db_lorder_reply.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_lorder_reply implements XdrAble {
- public int status;
-
- public __db_lorder_reply() {
- }
-
- public __db_lorder_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_lorder_reply.java
diff --git a/db/rpc_server/java/gen/__db_open_msg.java b/db/rpc_server/java/gen/__db_open_msg.java
deleted file mode 100644
index 14dbd9e3b..000000000
--- a/db/rpc_server/java/gen/__db_open_msg.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 2/13/02 1:05 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_open_msg implements XdrAble {
- public int dbpcl_id;
- public int txnpcl_id;
- public String name;
- public String subdb;
- public int type;
- public int flags;
- public int mode;
-
- public __db_open_msg() {
- }
-
- public __db_open_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbpcl_id);
- xdr.xdrEncodeInt(txnpcl_id);
- xdr.xdrEncodeString(name);
- xdr.xdrEncodeString(subdb);
- xdr.xdrEncodeInt(type);
- xdr.xdrEncodeInt(flags);
- xdr.xdrEncodeInt(mode);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbpcl_id = xdr.xdrDecodeInt();
- txnpcl_id = xdr.xdrDecodeInt();
- name = xdr.xdrDecodeString();
- subdb = xdr.xdrDecodeString();
- type = xdr.xdrDecodeInt();
- flags = xdr.xdrDecodeInt();
- mode = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_open_msg.java
diff --git a/db/rpc_server/java/gen/__db_open_reply.java b/db/rpc_server/java/gen/__db_open_reply.java
deleted file mode 100644
index 9b36b44a6..000000000
--- a/db/rpc_server/java/gen/__db_open_reply.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 7/15/04 4:39 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_open_reply implements XdrAble {
- public int status;
- public int dbcl_id;
- public int type;
- public int lorder;
-
- public __db_open_reply() {
- }
-
- public __db_open_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- xdr.xdrEncodeInt(dbcl_id);
- xdr.xdrEncodeInt(type);
- xdr.xdrEncodeInt(lorder);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- dbcl_id = xdr.xdrDecodeInt();
- type = xdr.xdrDecodeInt();
- lorder = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_open_reply.java
diff --git a/db/rpc_server/java/gen/__db_pagesize_msg.java b/db/rpc_server/java/gen/__db_pagesize_msg.java
deleted file mode 100644
index a452ea4e3..000000000
--- a/db/rpc_server/java/gen/__db_pagesize_msg.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_pagesize_msg implements XdrAble {
- public int dbpcl_id;
- public int pagesize;
-
- public __db_pagesize_msg() {
- }
-
- public __db_pagesize_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbpcl_id);
- xdr.xdrEncodeInt(pagesize);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbpcl_id = xdr.xdrDecodeInt();
- pagesize = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_pagesize_msg.java
diff --git a/db/rpc_server/java/gen/__db_pagesize_reply.java b/db/rpc_server/java/gen/__db_pagesize_reply.java
deleted file mode 100644
index 830b2078b..000000000
--- a/db/rpc_server/java/gen/__db_pagesize_reply.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_pagesize_reply implements XdrAble {
- public int status;
-
- public __db_pagesize_reply() {
- }
-
- public __db_pagesize_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_pagesize_reply.java
diff --git a/db/rpc_server/java/gen/__db_pget_msg.java b/db/rpc_server/java/gen/__db_pget_msg.java
deleted file mode 100644
index 11d27ca9e..000000000
--- a/db/rpc_server/java/gen/__db_pget_msg.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_pget_msg implements XdrAble {
- public int dbpcl_id;
- public int txnpcl_id;
- public int skeydlen;
- public int skeydoff;
- public int skeyulen;
- public int skeyflags;
- public byte [] skeydata;
- public int pkeydlen;
- public int pkeydoff;
- public int pkeyulen;
- public int pkeyflags;
- public byte [] pkeydata;
- public int datadlen;
- public int datadoff;
- public int dataulen;
- public int dataflags;
- public byte [] datadata;
- public int flags;
-
- public __db_pget_msg() {
- }
-
- public __db_pget_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbpcl_id);
- xdr.xdrEncodeInt(txnpcl_id);
- xdr.xdrEncodeInt(skeydlen);
- xdr.xdrEncodeInt(skeydoff);
- xdr.xdrEncodeInt(skeyulen);
- xdr.xdrEncodeInt(skeyflags);
- xdr.xdrEncodeDynamicOpaque(skeydata);
- xdr.xdrEncodeInt(pkeydlen);
- xdr.xdrEncodeInt(pkeydoff);
- xdr.xdrEncodeInt(pkeyulen);
- xdr.xdrEncodeInt(pkeyflags);
- xdr.xdrEncodeDynamicOpaque(pkeydata);
- xdr.xdrEncodeInt(datadlen);
- xdr.xdrEncodeInt(datadoff);
- xdr.xdrEncodeInt(dataulen);
- xdr.xdrEncodeInt(dataflags);
- xdr.xdrEncodeDynamicOpaque(datadata);
- xdr.xdrEncodeInt(flags);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbpcl_id = xdr.xdrDecodeInt();
- txnpcl_id = xdr.xdrDecodeInt();
- skeydlen = xdr.xdrDecodeInt();
- skeydoff = xdr.xdrDecodeInt();
- skeyulen = xdr.xdrDecodeInt();
- skeyflags = xdr.xdrDecodeInt();
- skeydata = xdr.xdrDecodeDynamicOpaque();
- pkeydlen = xdr.xdrDecodeInt();
- pkeydoff = xdr.xdrDecodeInt();
- pkeyulen = xdr.xdrDecodeInt();
- pkeyflags = xdr.xdrDecodeInt();
- pkeydata = xdr.xdrDecodeDynamicOpaque();
- datadlen = xdr.xdrDecodeInt();
- datadoff = xdr.xdrDecodeInt();
- dataulen = xdr.xdrDecodeInt();
- dataflags = xdr.xdrDecodeInt();
- datadata = xdr.xdrDecodeDynamicOpaque();
- flags = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_pget_msg.java
diff --git a/db/rpc_server/java/gen/__db_pget_reply.java b/db/rpc_server/java/gen/__db_pget_reply.java
deleted file mode 100644
index 86c9c2111..000000000
--- a/db/rpc_server/java/gen/__db_pget_reply.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_pget_reply implements XdrAble {
- public int status;
- public byte [] skeydata;
- public byte [] pkeydata;
- public byte [] datadata;
-
- public __db_pget_reply() {
- }
-
- public __db_pget_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- xdr.xdrEncodeDynamicOpaque(skeydata);
- xdr.xdrEncodeDynamicOpaque(pkeydata);
- xdr.xdrEncodeDynamicOpaque(datadata);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- skeydata = xdr.xdrDecodeDynamicOpaque();
- pkeydata = xdr.xdrDecodeDynamicOpaque();
- datadata = xdr.xdrDecodeDynamicOpaque();
- }
-
-}
-// End of __db_pget_reply.java
diff --git a/db/rpc_server/java/gen/__db_put_msg.java b/db/rpc_server/java/gen/__db_put_msg.java
deleted file mode 100644
index b6159cff3..000000000
--- a/db/rpc_server/java/gen/__db_put_msg.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_put_msg implements XdrAble {
- public int dbpcl_id;
- public int txnpcl_id;
- public int keydlen;
- public int keydoff;
- public int keyulen;
- public int keyflags;
- public byte [] keydata;
- public int datadlen;
- public int datadoff;
- public int dataulen;
- public int dataflags;
- public byte [] datadata;
- public int flags;
-
- public __db_put_msg() {
- }
-
- public __db_put_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbpcl_id);
- xdr.xdrEncodeInt(txnpcl_id);
- xdr.xdrEncodeInt(keydlen);
- xdr.xdrEncodeInt(keydoff);
- xdr.xdrEncodeInt(keyulen);
- xdr.xdrEncodeInt(keyflags);
- xdr.xdrEncodeDynamicOpaque(keydata);
- xdr.xdrEncodeInt(datadlen);
- xdr.xdrEncodeInt(datadoff);
- xdr.xdrEncodeInt(dataulen);
- xdr.xdrEncodeInt(dataflags);
- xdr.xdrEncodeDynamicOpaque(datadata);
- xdr.xdrEncodeInt(flags);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbpcl_id = xdr.xdrDecodeInt();
- txnpcl_id = xdr.xdrDecodeInt();
- keydlen = xdr.xdrDecodeInt();
- keydoff = xdr.xdrDecodeInt();
- keyulen = xdr.xdrDecodeInt();
- keyflags = xdr.xdrDecodeInt();
- keydata = xdr.xdrDecodeDynamicOpaque();
- datadlen = xdr.xdrDecodeInt();
- datadoff = xdr.xdrDecodeInt();
- dataulen = xdr.xdrDecodeInt();
- dataflags = xdr.xdrDecodeInt();
- datadata = xdr.xdrDecodeDynamicOpaque();
- flags = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_put_msg.java
diff --git a/db/rpc_server/java/gen/__db_put_reply.java b/db/rpc_server/java/gen/__db_put_reply.java
deleted file mode 100644
index fc89ae1c3..000000000
--- a/db/rpc_server/java/gen/__db_put_reply.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_put_reply implements XdrAble {
- public int status;
- public byte [] keydata;
-
- public __db_put_reply() {
- }
-
- public __db_put_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- xdr.xdrEncodeDynamicOpaque(keydata);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- keydata = xdr.xdrDecodeDynamicOpaque();
- }
-
-}
-// End of __db_put_reply.java
diff --git a/db/rpc_server/java/gen/__db_re_delim_msg.java b/db/rpc_server/java/gen/__db_re_delim_msg.java
deleted file mode 100644
index c386bddd2..000000000
--- a/db/rpc_server/java/gen/__db_re_delim_msg.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_re_delim_msg implements XdrAble {
- public int dbpcl_id;
- public int delim;
-
- public __db_re_delim_msg() {
- }
-
- public __db_re_delim_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbpcl_id);
- xdr.xdrEncodeInt(delim);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbpcl_id = xdr.xdrDecodeInt();
- delim = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_re_delim_msg.java
diff --git a/db/rpc_server/java/gen/__db_re_delim_reply.java b/db/rpc_server/java/gen/__db_re_delim_reply.java
deleted file mode 100644
index aa8a797f5..000000000
--- a/db/rpc_server/java/gen/__db_re_delim_reply.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_re_delim_reply implements XdrAble {
- public int status;
-
- public __db_re_delim_reply() {
- }
-
- public __db_re_delim_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_re_delim_reply.java
diff --git a/db/rpc_server/java/gen/__db_re_len_msg.java b/db/rpc_server/java/gen/__db_re_len_msg.java
deleted file mode 100644
index 664de5c89..000000000
--- a/db/rpc_server/java/gen/__db_re_len_msg.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_re_len_msg implements XdrAble {
- public int dbpcl_id;
- public int len;
-
- public __db_re_len_msg() {
- }
-
- public __db_re_len_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbpcl_id);
- xdr.xdrEncodeInt(len);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbpcl_id = xdr.xdrDecodeInt();
- len = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_re_len_msg.java
diff --git a/db/rpc_server/java/gen/__db_re_len_reply.java b/db/rpc_server/java/gen/__db_re_len_reply.java
deleted file mode 100644
index dda27c8c1..000000000
--- a/db/rpc_server/java/gen/__db_re_len_reply.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_re_len_reply implements XdrAble {
- public int status;
-
- public __db_re_len_reply() {
- }
-
- public __db_re_len_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_re_len_reply.java
diff --git a/db/rpc_server/java/gen/__db_re_pad_msg.java b/db/rpc_server/java/gen/__db_re_pad_msg.java
deleted file mode 100644
index 2c1290b6e..000000000
--- a/db/rpc_server/java/gen/__db_re_pad_msg.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_re_pad_msg implements XdrAble {
- public int dbpcl_id;
- public int pad;
-
- public __db_re_pad_msg() {
- }
-
- public __db_re_pad_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbpcl_id);
- xdr.xdrEncodeInt(pad);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbpcl_id = xdr.xdrDecodeInt();
- pad = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_re_pad_msg.java
diff --git a/db/rpc_server/java/gen/__db_re_pad_reply.java b/db/rpc_server/java/gen/__db_re_pad_reply.java
deleted file mode 100644
index f0aaa9a3a..000000000
--- a/db/rpc_server/java/gen/__db_re_pad_reply.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_re_pad_reply implements XdrAble {
- public int status;
-
- public __db_re_pad_reply() {
- }
-
- public __db_re_pad_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_re_pad_reply.java
diff --git a/db/rpc_server/java/gen/__db_remove_msg.java b/db/rpc_server/java/gen/__db_remove_msg.java
deleted file mode 100644
index dfa9066a7..000000000
--- a/db/rpc_server/java/gen/__db_remove_msg.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_remove_msg implements XdrAble {
- public int dbpcl_id;
- public String name;
- public String subdb;
- public int flags;
-
- public __db_remove_msg() {
- }
-
- public __db_remove_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbpcl_id);
- xdr.xdrEncodeString(name);
- xdr.xdrEncodeString(subdb);
- xdr.xdrEncodeInt(flags);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbpcl_id = xdr.xdrDecodeInt();
- name = xdr.xdrDecodeString();
- subdb = xdr.xdrDecodeString();
- flags = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_remove_msg.java
diff --git a/db/rpc_server/java/gen/__db_remove_reply.java b/db/rpc_server/java/gen/__db_remove_reply.java
deleted file mode 100644
index a2b86c049..000000000
--- a/db/rpc_server/java/gen/__db_remove_reply.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_remove_reply implements XdrAble {
- public int status;
-
- public __db_remove_reply() {
- }
-
- public __db_remove_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_remove_reply.java
diff --git a/db/rpc_server/java/gen/__db_rename_msg.java b/db/rpc_server/java/gen/__db_rename_msg.java
deleted file mode 100644
index 12b434e33..000000000
--- a/db/rpc_server/java/gen/__db_rename_msg.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_rename_msg implements XdrAble {
- public int dbpcl_id;
- public String name;
- public String subdb;
- public String newname;
- public int flags;
-
- public __db_rename_msg() {
- }
-
- public __db_rename_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbpcl_id);
- xdr.xdrEncodeString(name);
- xdr.xdrEncodeString(subdb);
- xdr.xdrEncodeString(newname);
- xdr.xdrEncodeInt(flags);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbpcl_id = xdr.xdrDecodeInt();
- name = xdr.xdrDecodeString();
- subdb = xdr.xdrDecodeString();
- newname = xdr.xdrDecodeString();
- flags = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_rename_msg.java
diff --git a/db/rpc_server/java/gen/__db_rename_reply.java b/db/rpc_server/java/gen/__db_rename_reply.java
deleted file mode 100644
index 4e4a22be5..000000000
--- a/db/rpc_server/java/gen/__db_rename_reply.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_rename_reply implements XdrAble {
- public int status;
-
- public __db_rename_reply() {
- }
-
- public __db_rename_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_rename_reply.java
diff --git a/db/rpc_server/java/gen/__db_stat_msg.java b/db/rpc_server/java/gen/__db_stat_msg.java
deleted file mode 100644
index 419ee14a6..000000000
--- a/db/rpc_server/java/gen/__db_stat_msg.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 7/15/04 4:39 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_stat_msg implements XdrAble {
- public int dbpcl_id;
- public int txnpcl_id;
- public int flags;
-
- public __db_stat_msg() {
- }
-
- public __db_stat_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbpcl_id);
- xdr.xdrEncodeInt(txnpcl_id);
- xdr.xdrEncodeInt(flags);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbpcl_id = xdr.xdrDecodeInt();
- txnpcl_id = xdr.xdrDecodeInt();
- flags = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_stat_msg.java
diff --git a/db/rpc_server/java/gen/__db_stat_reply.java b/db/rpc_server/java/gen/__db_stat_reply.java
deleted file mode 100644
index 8df146014..000000000
--- a/db/rpc_server/java/gen/__db_stat_reply.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_stat_reply implements XdrAble {
- public int status;
- public int [] stats;
-
- public __db_stat_reply() {
- }
-
- public __db_stat_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- xdr.xdrEncodeIntVector(stats);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- stats = xdr.xdrDecodeIntVector();
- }
-
-}
-// End of __db_stat_reply.java
diff --git a/db/rpc_server/java/gen/__db_sync_msg.java b/db/rpc_server/java/gen/__db_sync_msg.java
deleted file mode 100644
index c6594670f..000000000
--- a/db/rpc_server/java/gen/__db_sync_msg.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_sync_msg implements XdrAble {
- public int dbpcl_id;
- public int flags;
-
- public __db_sync_msg() {
- }
-
- public __db_sync_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbpcl_id);
- xdr.xdrEncodeInt(flags);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbpcl_id = xdr.xdrDecodeInt();
- flags = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_sync_msg.java
diff --git a/db/rpc_server/java/gen/__db_sync_reply.java b/db/rpc_server/java/gen/__db_sync_reply.java
deleted file mode 100644
index d0a8bc8b1..000000000
--- a/db/rpc_server/java/gen/__db_sync_reply.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_sync_reply implements XdrAble {
- public int status;
-
- public __db_sync_reply() {
- }
-
- public __db_sync_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_sync_reply.java
diff --git a/db/rpc_server/java/gen/__db_truncate_msg.java b/db/rpc_server/java/gen/__db_truncate_msg.java
deleted file mode 100644
index 38810d656..000000000
--- a/db/rpc_server/java/gen/__db_truncate_msg.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_truncate_msg implements XdrAble {
- public int dbpcl_id;
- public int txnpcl_id;
- public int flags;
-
- public __db_truncate_msg() {
- }
-
- public __db_truncate_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbpcl_id);
- xdr.xdrEncodeInt(txnpcl_id);
- xdr.xdrEncodeInt(flags);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbpcl_id = xdr.xdrDecodeInt();
- txnpcl_id = xdr.xdrDecodeInt();
- flags = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_truncate_msg.java
diff --git a/db/rpc_server/java/gen/__db_truncate_reply.java b/db/rpc_server/java/gen/__db_truncate_reply.java
deleted file mode 100644
index c4f688690..000000000
--- a/db/rpc_server/java/gen/__db_truncate_reply.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __db_truncate_reply implements XdrAble {
- public int status;
- public int count;
-
- public __db_truncate_reply() {
- }
-
- public __db_truncate_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- xdr.xdrEncodeInt(count);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- count = xdr.xdrDecodeInt();
- }
-
-}
-// End of __db_truncate_reply.java
diff --git a/db/rpc_server/java/gen/__dbc_close_msg.java b/db/rpc_server/java/gen/__dbc_close_msg.java
deleted file mode 100644
index eb1ca7f7e..000000000
--- a/db/rpc_server/java/gen/__dbc_close_msg.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __dbc_close_msg implements XdrAble {
- public int dbccl_id;
-
- public __dbc_close_msg() {
- }
-
- public __dbc_close_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbccl_id);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbccl_id = xdr.xdrDecodeInt();
- }
-
-}
-// End of __dbc_close_msg.java
diff --git a/db/rpc_server/java/gen/__dbc_close_reply.java b/db/rpc_server/java/gen/__dbc_close_reply.java
deleted file mode 100644
index 47459aace..000000000
--- a/db/rpc_server/java/gen/__dbc_close_reply.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __dbc_close_reply implements XdrAble {
- public int status;
-
- public __dbc_close_reply() {
- }
-
- public __dbc_close_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- }
-
-}
-// End of __dbc_close_reply.java
diff --git a/db/rpc_server/java/gen/__dbc_count_msg.java b/db/rpc_server/java/gen/__dbc_count_msg.java
deleted file mode 100644
index 5f554e18a..000000000
--- a/db/rpc_server/java/gen/__dbc_count_msg.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __dbc_count_msg implements XdrAble {
- public int dbccl_id;
- public int flags;
-
- public __dbc_count_msg() {
- }
-
- public __dbc_count_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbccl_id);
- xdr.xdrEncodeInt(flags);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbccl_id = xdr.xdrDecodeInt();
- flags = xdr.xdrDecodeInt();
- }
-
-}
-// End of __dbc_count_msg.java
diff --git a/db/rpc_server/java/gen/__dbc_count_reply.java b/db/rpc_server/java/gen/__dbc_count_reply.java
deleted file mode 100644
index 4daecdd22..000000000
--- a/db/rpc_server/java/gen/__dbc_count_reply.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __dbc_count_reply implements XdrAble {
- public int status;
- public int dupcount;
-
- public __dbc_count_reply() {
- }
-
- public __dbc_count_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- xdr.xdrEncodeInt(dupcount);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- dupcount = xdr.xdrDecodeInt();
- }
-
-}
-// End of __dbc_count_reply.java
diff --git a/db/rpc_server/java/gen/__dbc_del_msg.java b/db/rpc_server/java/gen/__dbc_del_msg.java
deleted file mode 100644
index bc4bd05f5..000000000
--- a/db/rpc_server/java/gen/__dbc_del_msg.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __dbc_del_msg implements XdrAble {
- public int dbccl_id;
- public int flags;
-
- public __dbc_del_msg() {
- }
-
- public __dbc_del_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbccl_id);
- xdr.xdrEncodeInt(flags);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbccl_id = xdr.xdrDecodeInt();
- flags = xdr.xdrDecodeInt();
- }
-
-}
-// End of __dbc_del_msg.java
diff --git a/db/rpc_server/java/gen/__dbc_del_reply.java b/db/rpc_server/java/gen/__dbc_del_reply.java
deleted file mode 100644
index e55ac9ffa..000000000
--- a/db/rpc_server/java/gen/__dbc_del_reply.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __dbc_del_reply implements XdrAble {
- public int status;
-
- public __dbc_del_reply() {
- }
-
- public __dbc_del_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- }
-
-}
-// End of __dbc_del_reply.java
diff --git a/db/rpc_server/java/gen/__dbc_dup_msg.java b/db/rpc_server/java/gen/__dbc_dup_msg.java
deleted file mode 100644
index 9a3894e61..000000000
--- a/db/rpc_server/java/gen/__dbc_dup_msg.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __dbc_dup_msg implements XdrAble {
- public int dbccl_id;
- public int flags;
-
- public __dbc_dup_msg() {
- }
-
- public __dbc_dup_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbccl_id);
- xdr.xdrEncodeInt(flags);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbccl_id = xdr.xdrDecodeInt();
- flags = xdr.xdrDecodeInt();
- }
-
-}
-// End of __dbc_dup_msg.java
diff --git a/db/rpc_server/java/gen/__dbc_dup_reply.java b/db/rpc_server/java/gen/__dbc_dup_reply.java
deleted file mode 100644
index 6b942f1a6..000000000
--- a/db/rpc_server/java/gen/__dbc_dup_reply.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __dbc_dup_reply implements XdrAble {
- public int status;
- public int dbcidcl_id;
-
- public __dbc_dup_reply() {
- }
-
- public __dbc_dup_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- xdr.xdrEncodeInt(dbcidcl_id);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- dbcidcl_id = xdr.xdrDecodeInt();
- }
-
-}
-// End of __dbc_dup_reply.java
diff --git a/db/rpc_server/java/gen/__dbc_get_msg.java b/db/rpc_server/java/gen/__dbc_get_msg.java
deleted file mode 100644
index 672ace43f..000000000
--- a/db/rpc_server/java/gen/__dbc_get_msg.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __dbc_get_msg implements XdrAble {
- public int dbccl_id;
- public int keydlen;
- public int keydoff;
- public int keyulen;
- public int keyflags;
- public byte [] keydata;
- public int datadlen;
- public int datadoff;
- public int dataulen;
- public int dataflags;
- public byte [] datadata;
- public int flags;
-
- public __dbc_get_msg() {
- }
-
- public __dbc_get_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbccl_id);
- xdr.xdrEncodeInt(keydlen);
- xdr.xdrEncodeInt(keydoff);
- xdr.xdrEncodeInt(keyulen);
- xdr.xdrEncodeInt(keyflags);
- xdr.xdrEncodeDynamicOpaque(keydata);
- xdr.xdrEncodeInt(datadlen);
- xdr.xdrEncodeInt(datadoff);
- xdr.xdrEncodeInt(dataulen);
- xdr.xdrEncodeInt(dataflags);
- xdr.xdrEncodeDynamicOpaque(datadata);
- xdr.xdrEncodeInt(flags);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbccl_id = xdr.xdrDecodeInt();
- keydlen = xdr.xdrDecodeInt();
- keydoff = xdr.xdrDecodeInt();
- keyulen = xdr.xdrDecodeInt();
- keyflags = xdr.xdrDecodeInt();
- keydata = xdr.xdrDecodeDynamicOpaque();
- datadlen = xdr.xdrDecodeInt();
- datadoff = xdr.xdrDecodeInt();
- dataulen = xdr.xdrDecodeInt();
- dataflags = xdr.xdrDecodeInt();
- datadata = xdr.xdrDecodeDynamicOpaque();
- flags = xdr.xdrDecodeInt();
- }
-
-}
-// End of __dbc_get_msg.java
diff --git a/db/rpc_server/java/gen/__dbc_get_reply.java b/db/rpc_server/java/gen/__dbc_get_reply.java
deleted file mode 100644
index 8671fec63..000000000
--- a/db/rpc_server/java/gen/__dbc_get_reply.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __dbc_get_reply implements XdrAble {
- public int status;
- public byte [] keydata;
- public byte [] datadata;
-
- public __dbc_get_reply() {
- }
-
- public __dbc_get_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- xdr.xdrEncodeDynamicOpaque(keydata);
- xdr.xdrEncodeDynamicOpaque(datadata);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- keydata = xdr.xdrDecodeDynamicOpaque();
- datadata = xdr.xdrDecodeDynamicOpaque();
- }
-
-}
-// End of __dbc_get_reply.java
diff --git a/db/rpc_server/java/gen/__dbc_pget_msg.java b/db/rpc_server/java/gen/__dbc_pget_msg.java
deleted file mode 100644
index 8ca3c6171..000000000
--- a/db/rpc_server/java/gen/__dbc_pget_msg.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __dbc_pget_msg implements XdrAble {
- public int dbccl_id;
- public int skeydlen;
- public int skeydoff;
- public int skeyulen;
- public int skeyflags;
- public byte [] skeydata;
- public int pkeydlen;
- public int pkeydoff;
- public int pkeyulen;
- public int pkeyflags;
- public byte [] pkeydata;
- public int datadlen;
- public int datadoff;
- public int dataulen;
- public int dataflags;
- public byte [] datadata;
- public int flags;
-
- public __dbc_pget_msg() {
- }
-
- public __dbc_pget_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbccl_id);
- xdr.xdrEncodeInt(skeydlen);
- xdr.xdrEncodeInt(skeydoff);
- xdr.xdrEncodeInt(skeyulen);
- xdr.xdrEncodeInt(skeyflags);
- xdr.xdrEncodeDynamicOpaque(skeydata);
- xdr.xdrEncodeInt(pkeydlen);
- xdr.xdrEncodeInt(pkeydoff);
- xdr.xdrEncodeInt(pkeyulen);
- xdr.xdrEncodeInt(pkeyflags);
- xdr.xdrEncodeDynamicOpaque(pkeydata);
- xdr.xdrEncodeInt(datadlen);
- xdr.xdrEncodeInt(datadoff);
- xdr.xdrEncodeInt(dataulen);
- xdr.xdrEncodeInt(dataflags);
- xdr.xdrEncodeDynamicOpaque(datadata);
- xdr.xdrEncodeInt(flags);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbccl_id = xdr.xdrDecodeInt();
- skeydlen = xdr.xdrDecodeInt();
- skeydoff = xdr.xdrDecodeInt();
- skeyulen = xdr.xdrDecodeInt();
- skeyflags = xdr.xdrDecodeInt();
- skeydata = xdr.xdrDecodeDynamicOpaque();
- pkeydlen = xdr.xdrDecodeInt();
- pkeydoff = xdr.xdrDecodeInt();
- pkeyulen = xdr.xdrDecodeInt();
- pkeyflags = xdr.xdrDecodeInt();
- pkeydata = xdr.xdrDecodeDynamicOpaque();
- datadlen = xdr.xdrDecodeInt();
- datadoff = xdr.xdrDecodeInt();
- dataulen = xdr.xdrDecodeInt();
- dataflags = xdr.xdrDecodeInt();
- datadata = xdr.xdrDecodeDynamicOpaque();
- flags = xdr.xdrDecodeInt();
- }
-
-}
-// End of __dbc_pget_msg.java
diff --git a/db/rpc_server/java/gen/__dbc_pget_reply.java b/db/rpc_server/java/gen/__dbc_pget_reply.java
deleted file mode 100644
index 16cc79587..000000000
--- a/db/rpc_server/java/gen/__dbc_pget_reply.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __dbc_pget_reply implements XdrAble {
- public int status;
- public byte [] skeydata;
- public byte [] pkeydata;
- public byte [] datadata;
-
- public __dbc_pget_reply() {
- }
-
- public __dbc_pget_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- xdr.xdrEncodeDynamicOpaque(skeydata);
- xdr.xdrEncodeDynamicOpaque(pkeydata);
- xdr.xdrEncodeDynamicOpaque(datadata);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- skeydata = xdr.xdrDecodeDynamicOpaque();
- pkeydata = xdr.xdrDecodeDynamicOpaque();
- datadata = xdr.xdrDecodeDynamicOpaque();
- }
-
-}
-// End of __dbc_pget_reply.java
diff --git a/db/rpc_server/java/gen/__dbc_put_msg.java b/db/rpc_server/java/gen/__dbc_put_msg.java
deleted file mode 100644
index 98d12423d..000000000
--- a/db/rpc_server/java/gen/__dbc_put_msg.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __dbc_put_msg implements XdrAble {
- public int dbccl_id;
- public int keydlen;
- public int keydoff;
- public int keyulen;
- public int keyflags;
- public byte [] keydata;
- public int datadlen;
- public int datadoff;
- public int dataulen;
- public int dataflags;
- public byte [] datadata;
- public int flags;
-
- public __dbc_put_msg() {
- }
-
- public __dbc_put_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbccl_id);
- xdr.xdrEncodeInt(keydlen);
- xdr.xdrEncodeInt(keydoff);
- xdr.xdrEncodeInt(keyulen);
- xdr.xdrEncodeInt(keyflags);
- xdr.xdrEncodeDynamicOpaque(keydata);
- xdr.xdrEncodeInt(datadlen);
- xdr.xdrEncodeInt(datadoff);
- xdr.xdrEncodeInt(dataulen);
- xdr.xdrEncodeInt(dataflags);
- xdr.xdrEncodeDynamicOpaque(datadata);
- xdr.xdrEncodeInt(flags);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbccl_id = xdr.xdrDecodeInt();
- keydlen = xdr.xdrDecodeInt();
- keydoff = xdr.xdrDecodeInt();
- keyulen = xdr.xdrDecodeInt();
- keyflags = xdr.xdrDecodeInt();
- keydata = xdr.xdrDecodeDynamicOpaque();
- datadlen = xdr.xdrDecodeInt();
- datadoff = xdr.xdrDecodeInt();
- dataulen = xdr.xdrDecodeInt();
- dataflags = xdr.xdrDecodeInt();
- datadata = xdr.xdrDecodeDynamicOpaque();
- flags = xdr.xdrDecodeInt();
- }
-
-}
-// End of __dbc_put_msg.java
diff --git a/db/rpc_server/java/gen/__dbc_put_reply.java b/db/rpc_server/java/gen/__dbc_put_reply.java
deleted file mode 100644
index 385f9f783..000000000
--- a/db/rpc_server/java/gen/__dbc_put_reply.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __dbc_put_reply implements XdrAble {
- public int status;
- public byte [] keydata;
-
- public __dbc_put_reply() {
- }
-
- public __dbc_put_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- xdr.xdrEncodeDynamicOpaque(keydata);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- keydata = xdr.xdrDecodeDynamicOpaque();
- }
-
-}
-// End of __dbc_put_reply.java
diff --git a/db/rpc_server/java/gen/__env_cachesize_msg.java b/db/rpc_server/java/gen/__env_cachesize_msg.java
deleted file mode 100644
index d1fce1ffa..000000000
--- a/db/rpc_server/java/gen/__env_cachesize_msg.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __env_cachesize_msg implements XdrAble {
- public int dbenvcl_id;
- public int gbytes;
- public int bytes;
- public int ncache;
-
- public __env_cachesize_msg() {
- }
-
- public __env_cachesize_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbenvcl_id);
- xdr.xdrEncodeInt(gbytes);
- xdr.xdrEncodeInt(bytes);
- xdr.xdrEncodeInt(ncache);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbenvcl_id = xdr.xdrDecodeInt();
- gbytes = xdr.xdrDecodeInt();
- bytes = xdr.xdrDecodeInt();
- ncache = xdr.xdrDecodeInt();
- }
-
-}
-// End of __env_cachesize_msg.java
diff --git a/db/rpc_server/java/gen/__env_cachesize_reply.java b/db/rpc_server/java/gen/__env_cachesize_reply.java
deleted file mode 100644
index 193f8355d..000000000
--- a/db/rpc_server/java/gen/__env_cachesize_reply.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __env_cachesize_reply implements XdrAble {
- public int status;
-
- public __env_cachesize_reply() {
- }
-
- public __env_cachesize_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- }
-
-}
-// End of __env_cachesize_reply.java
diff --git a/db/rpc_server/java/gen/__env_close_msg.java b/db/rpc_server/java/gen/__env_close_msg.java
deleted file mode 100644
index 5e657bacf..000000000
--- a/db/rpc_server/java/gen/__env_close_msg.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __env_close_msg implements XdrAble {
- public int dbenvcl_id;
- public int flags;
-
- public __env_close_msg() {
- }
-
- public __env_close_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbenvcl_id);
- xdr.xdrEncodeInt(flags);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbenvcl_id = xdr.xdrDecodeInt();
- flags = xdr.xdrDecodeInt();
- }
-
-}
-// End of __env_close_msg.java
diff --git a/db/rpc_server/java/gen/__env_close_reply.java b/db/rpc_server/java/gen/__env_close_reply.java
deleted file mode 100644
index 11e61f7c8..000000000
--- a/db/rpc_server/java/gen/__env_close_reply.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __env_close_reply implements XdrAble {
- public int status;
-
- public __env_close_reply() {
- }
-
- public __env_close_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- }
-
-}
-// End of __env_close_reply.java
diff --git a/db/rpc_server/java/gen/__env_create_msg.java b/db/rpc_server/java/gen/__env_create_msg.java
deleted file mode 100644
index dbe546ae2..000000000
--- a/db/rpc_server/java/gen/__env_create_msg.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __env_create_msg implements XdrAble {
- public int timeout;
-
- public __env_create_msg() {
- }
-
- public __env_create_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(timeout);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- timeout = xdr.xdrDecodeInt();
- }
-
-}
-// End of __env_create_msg.java
diff --git a/db/rpc_server/java/gen/__env_create_reply.java b/db/rpc_server/java/gen/__env_create_reply.java
deleted file mode 100644
index 5427fc4bc..000000000
--- a/db/rpc_server/java/gen/__env_create_reply.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __env_create_reply implements XdrAble {
- public int status;
- public int envcl_id;
-
- public __env_create_reply() {
- }
-
- public __env_create_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- xdr.xdrEncodeInt(envcl_id);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- envcl_id = xdr.xdrDecodeInt();
- }
-
-}
-// End of __env_create_reply.java
diff --git a/db/rpc_server/java/gen/__env_dbremove_msg.java b/db/rpc_server/java/gen/__env_dbremove_msg.java
deleted file mode 100644
index 9730a92c5..000000000
--- a/db/rpc_server/java/gen/__env_dbremove_msg.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 3/19/02 10:30 AM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __env_dbremove_msg implements XdrAble {
- public int dbenvcl_id;
- public int txnpcl_id;
- public String name;
- public String subdb;
- public int flags;
-
- public __env_dbremove_msg() {
- }
-
- public __env_dbremove_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbenvcl_id);
- xdr.xdrEncodeInt(txnpcl_id);
- xdr.xdrEncodeString(name);
- xdr.xdrEncodeString(subdb);
- xdr.xdrEncodeInt(flags);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbenvcl_id = xdr.xdrDecodeInt();
- txnpcl_id = xdr.xdrDecodeInt();
- name = xdr.xdrDecodeString();
- subdb = xdr.xdrDecodeString();
- flags = xdr.xdrDecodeInt();
- }
-
-}
-// End of __env_dbremove_msg.java
diff --git a/db/rpc_server/java/gen/__env_dbremove_reply.java b/db/rpc_server/java/gen/__env_dbremove_reply.java
deleted file mode 100644
index 75cc5a940..000000000
--- a/db/rpc_server/java/gen/__env_dbremove_reply.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 3/19/02 10:30 AM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __env_dbremove_reply implements XdrAble {
- public int status;
-
- public __env_dbremove_reply() {
- }
-
- public __env_dbremove_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- }
-
-}
-// End of __env_dbremove_reply.java
diff --git a/db/rpc_server/java/gen/__env_dbrename_msg.java b/db/rpc_server/java/gen/__env_dbrename_msg.java
deleted file mode 100644
index 0bbda262b..000000000
--- a/db/rpc_server/java/gen/__env_dbrename_msg.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 3/19/02 10:30 AM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __env_dbrename_msg implements XdrAble {
- public int dbenvcl_id;
- public int txnpcl_id;
- public String name;
- public String subdb;
- public String newname;
- public int flags;
-
- public __env_dbrename_msg() {
- }
-
- public __env_dbrename_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbenvcl_id);
- xdr.xdrEncodeInt(txnpcl_id);
- xdr.xdrEncodeString(name);
- xdr.xdrEncodeString(subdb);
- xdr.xdrEncodeString(newname);
- xdr.xdrEncodeInt(flags);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbenvcl_id = xdr.xdrDecodeInt();
- txnpcl_id = xdr.xdrDecodeInt();
- name = xdr.xdrDecodeString();
- subdb = xdr.xdrDecodeString();
- newname = xdr.xdrDecodeString();
- flags = xdr.xdrDecodeInt();
- }
-
-}
-// End of __env_dbrename_msg.java
diff --git a/db/rpc_server/java/gen/__env_dbrename_reply.java b/db/rpc_server/java/gen/__env_dbrename_reply.java
deleted file mode 100644
index 0cc888230..000000000
--- a/db/rpc_server/java/gen/__env_dbrename_reply.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 3/19/02 10:30 AM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __env_dbrename_reply implements XdrAble {
- public int status;
-
- public __env_dbrename_reply() {
- }
-
- public __env_dbrename_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- }
-
-}
-// End of __env_dbrename_reply.java
diff --git a/db/rpc_server/java/gen/__env_encrypt_msg.java b/db/rpc_server/java/gen/__env_encrypt_msg.java
deleted file mode 100644
index 84e9a36d3..000000000
--- a/db/rpc_server/java/gen/__env_encrypt_msg.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 2/13/02 1:05 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __env_encrypt_msg implements XdrAble {
- public int dbenvcl_id;
- public String passwd;
- public int flags;
-
- public __env_encrypt_msg() {
- }
-
- public __env_encrypt_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbenvcl_id);
- xdr.xdrEncodeString(passwd);
- xdr.xdrEncodeInt(flags);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbenvcl_id = xdr.xdrDecodeInt();
- passwd = xdr.xdrDecodeString();
- flags = xdr.xdrDecodeInt();
- }
-
-}
-// End of __env_encrypt_msg.java
diff --git a/db/rpc_server/java/gen/__env_encrypt_reply.java b/db/rpc_server/java/gen/__env_encrypt_reply.java
deleted file mode 100644
index e202a3089..000000000
--- a/db/rpc_server/java/gen/__env_encrypt_reply.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 2/13/02 1:05 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __env_encrypt_reply implements XdrAble {
- public int status;
-
- public __env_encrypt_reply() {
- }
-
- public __env_encrypt_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- }
-
-}
-// End of __env_encrypt_reply.java
diff --git a/db/rpc_server/java/gen/__env_flags_msg.java b/db/rpc_server/java/gen/__env_flags_msg.java
deleted file mode 100644
index 25cd5f85f..000000000
--- a/db/rpc_server/java/gen/__env_flags_msg.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __env_flags_msg implements XdrAble {
- public int dbenvcl_id;
- public int flags;
- public int onoff;
-
- public __env_flags_msg() {
- }
-
- public __env_flags_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbenvcl_id);
- xdr.xdrEncodeInt(flags);
- xdr.xdrEncodeInt(onoff);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbenvcl_id = xdr.xdrDecodeInt();
- flags = xdr.xdrDecodeInt();
- onoff = xdr.xdrDecodeInt();
- }
-
-}
-// End of __env_flags_msg.java
diff --git a/db/rpc_server/java/gen/__env_flags_reply.java b/db/rpc_server/java/gen/__env_flags_reply.java
deleted file mode 100644
index d348a9224..000000000
--- a/db/rpc_server/java/gen/__env_flags_reply.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __env_flags_reply implements XdrAble {
- public int status;
-
- public __env_flags_reply() {
- }
-
- public __env_flags_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- }
-
-}
-// End of __env_flags_reply.java
diff --git a/db/rpc_server/java/gen/__env_get_cachesize_msg.java b/db/rpc_server/java/gen/__env_get_cachesize_msg.java
deleted file mode 100644
index f7ae42fac..000000000
--- a/db/rpc_server/java/gen/__env_get_cachesize_msg.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 3/26/03 6:40 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __env_get_cachesize_msg implements XdrAble {
- public int dbenvcl_id;
-
- public __env_get_cachesize_msg() {
- }
-
- public __env_get_cachesize_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbenvcl_id);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbenvcl_id = xdr.xdrDecodeInt();
- }
-
-}
-// End of __env_get_cachesize_msg.java
diff --git a/db/rpc_server/java/gen/__env_get_cachesize_reply.java b/db/rpc_server/java/gen/__env_get_cachesize_reply.java
deleted file mode 100644
index 9604f59ef..000000000
--- a/db/rpc_server/java/gen/__env_get_cachesize_reply.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 3/26/03 6:40 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __env_get_cachesize_reply implements XdrAble {
- public int status;
- public int gbytes;
- public int bytes;
- public int ncache;
-
- public __env_get_cachesize_reply() {
- }
-
- public __env_get_cachesize_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- xdr.xdrEncodeInt(gbytes);
- xdr.xdrEncodeInt(bytes);
- xdr.xdrEncodeInt(ncache);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- gbytes = xdr.xdrDecodeInt();
- bytes = xdr.xdrDecodeInt();
- ncache = xdr.xdrDecodeInt();
- }
-
-}
-// End of __env_get_cachesize_reply.java
diff --git a/db/rpc_server/java/gen/__env_get_encrypt_flags_msg.java b/db/rpc_server/java/gen/__env_get_encrypt_flags_msg.java
deleted file mode 100644
index cb87819bc..000000000
--- a/db/rpc_server/java/gen/__env_get_encrypt_flags_msg.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 3/26/03 6:40 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __env_get_encrypt_flags_msg implements XdrAble {
- public int dbenvcl_id;
-
- public __env_get_encrypt_flags_msg() {
- }
-
- public __env_get_encrypt_flags_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbenvcl_id);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbenvcl_id = xdr.xdrDecodeInt();
- }
-
-}
-// End of __env_get_encrypt_flags_msg.java
diff --git a/db/rpc_server/java/gen/__env_get_encrypt_flags_reply.java b/db/rpc_server/java/gen/__env_get_encrypt_flags_reply.java
deleted file mode 100644
index a13740bff..000000000
--- a/db/rpc_server/java/gen/__env_get_encrypt_flags_reply.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 3/26/03 6:40 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __env_get_encrypt_flags_reply implements XdrAble {
- public int status;
- public int flags;
-
- public __env_get_encrypt_flags_reply() {
- }
-
- public __env_get_encrypt_flags_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- xdr.xdrEncodeInt(flags);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- flags = xdr.xdrDecodeInt();
- }
-
-}
-// End of __env_get_encrypt_flags_reply.java
diff --git a/db/rpc_server/java/gen/__env_get_flags_msg.java b/db/rpc_server/java/gen/__env_get_flags_msg.java
deleted file mode 100644
index 6580e004f..000000000
--- a/db/rpc_server/java/gen/__env_get_flags_msg.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 3/26/03 6:40 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __env_get_flags_msg implements XdrAble {
- public int dbenvcl_id;
-
- public __env_get_flags_msg() {
- }
-
- public __env_get_flags_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbenvcl_id);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbenvcl_id = xdr.xdrDecodeInt();
- }
-
-}
-// End of __env_get_flags_msg.java
diff --git a/db/rpc_server/java/gen/__env_get_flags_reply.java b/db/rpc_server/java/gen/__env_get_flags_reply.java
deleted file mode 100644
index e8bded8b4..000000000
--- a/db/rpc_server/java/gen/__env_get_flags_reply.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 3/26/03 6:40 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __env_get_flags_reply implements XdrAble {
- public int status;
- public int flags;
-
- public __env_get_flags_reply() {
- }
-
- public __env_get_flags_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- xdr.xdrEncodeInt(flags);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- flags = xdr.xdrDecodeInt();
- }
-
-}
-// End of __env_get_flags_reply.java
diff --git a/db/rpc_server/java/gen/__env_get_home_msg.java b/db/rpc_server/java/gen/__env_get_home_msg.java
deleted file mode 100644
index 5f51318b8..000000000
--- a/db/rpc_server/java/gen/__env_get_home_msg.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 3/26/03 6:40 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __env_get_home_msg implements XdrAble {
- public int dbenvcl_id;
-
- public __env_get_home_msg() {
- }
-
- public __env_get_home_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbenvcl_id);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbenvcl_id = xdr.xdrDecodeInt();
- }
-
-}
-// End of __env_get_home_msg.java
diff --git a/db/rpc_server/java/gen/__env_get_home_reply.java b/db/rpc_server/java/gen/__env_get_home_reply.java
deleted file mode 100644
index e86bded2d..000000000
--- a/db/rpc_server/java/gen/__env_get_home_reply.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 3/26/03 6:40 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __env_get_home_reply implements XdrAble {
- public int status;
- public String home;
-
- public __env_get_home_reply() {
- }
-
- public __env_get_home_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- xdr.xdrEncodeString(home);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- home = xdr.xdrDecodeString();
- }
-
-}
-// End of __env_get_home_reply.java
diff --git a/db/rpc_server/java/gen/__env_get_open_flags_msg.java b/db/rpc_server/java/gen/__env_get_open_flags_msg.java
deleted file mode 100644
index dc9960b1f..000000000
--- a/db/rpc_server/java/gen/__env_get_open_flags_msg.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 3/26/03 6:40 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __env_get_open_flags_msg implements XdrAble {
- public int dbenvcl_id;
-
- public __env_get_open_flags_msg() {
- }
-
- public __env_get_open_flags_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbenvcl_id);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbenvcl_id = xdr.xdrDecodeInt();
- }
-
-}
-// End of __env_get_open_flags_msg.java
diff --git a/db/rpc_server/java/gen/__env_get_open_flags_reply.java b/db/rpc_server/java/gen/__env_get_open_flags_reply.java
deleted file mode 100644
index bc581e6a5..000000000
--- a/db/rpc_server/java/gen/__env_get_open_flags_reply.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 3/26/03 6:40 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __env_get_open_flags_reply implements XdrAble {
- public int status;
- public int flags;
-
- public __env_get_open_flags_reply() {
- }
-
- public __env_get_open_flags_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- xdr.xdrEncodeInt(flags);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- flags = xdr.xdrDecodeInt();
- }
-
-}
-// End of __env_get_open_flags_reply.java
diff --git a/db/rpc_server/java/gen/__env_open_msg.java b/db/rpc_server/java/gen/__env_open_msg.java
deleted file mode 100644
index e4649b41f..000000000
--- a/db/rpc_server/java/gen/__env_open_msg.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __env_open_msg implements XdrAble {
- public int dbenvcl_id;
- public String home;
- public int flags;
- public int mode;
-
- public __env_open_msg() {
- }
-
- public __env_open_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbenvcl_id);
- xdr.xdrEncodeString(home);
- xdr.xdrEncodeInt(flags);
- xdr.xdrEncodeInt(mode);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbenvcl_id = xdr.xdrDecodeInt();
- home = xdr.xdrDecodeString();
- flags = xdr.xdrDecodeInt();
- mode = xdr.xdrDecodeInt();
- }
-
-}
-// End of __env_open_msg.java
diff --git a/db/rpc_server/java/gen/__env_open_reply.java b/db/rpc_server/java/gen/__env_open_reply.java
deleted file mode 100644
index 1994afb4c..000000000
--- a/db/rpc_server/java/gen/__env_open_reply.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __env_open_reply implements XdrAble {
- public int status;
- public int envcl_id;
-
- public __env_open_reply() {
- }
-
- public __env_open_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- xdr.xdrEncodeInt(envcl_id);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- envcl_id = xdr.xdrDecodeInt();
- }
-
-}
-// End of __env_open_reply.java
diff --git a/db/rpc_server/java/gen/__env_remove_msg.java b/db/rpc_server/java/gen/__env_remove_msg.java
deleted file mode 100644
index b32d758f0..000000000
--- a/db/rpc_server/java/gen/__env_remove_msg.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __env_remove_msg implements XdrAble {
- public int dbenvcl_id;
- public String home;
- public int flags;
-
- public __env_remove_msg() {
- }
-
- public __env_remove_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbenvcl_id);
- xdr.xdrEncodeString(home);
- xdr.xdrEncodeInt(flags);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbenvcl_id = xdr.xdrDecodeInt();
- home = xdr.xdrDecodeString();
- flags = xdr.xdrDecodeInt();
- }
-
-}
-// End of __env_remove_msg.java
diff --git a/db/rpc_server/java/gen/__env_remove_reply.java b/db/rpc_server/java/gen/__env_remove_reply.java
deleted file mode 100644
index 19e4d52f6..000000000
--- a/db/rpc_server/java/gen/__env_remove_reply.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __env_remove_reply implements XdrAble {
- public int status;
-
- public __env_remove_reply() {
- }
-
- public __env_remove_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- }
-
-}
-// End of __env_remove_reply.java
diff --git a/db/rpc_server/java/gen/__txn_abort_msg.java b/db/rpc_server/java/gen/__txn_abort_msg.java
deleted file mode 100644
index ff44c534e..000000000
--- a/db/rpc_server/java/gen/__txn_abort_msg.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __txn_abort_msg implements XdrAble {
- public int txnpcl_id;
-
- public __txn_abort_msg() {
- }
-
- public __txn_abort_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(txnpcl_id);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- txnpcl_id = xdr.xdrDecodeInt();
- }
-
-}
-// End of __txn_abort_msg.java
diff --git a/db/rpc_server/java/gen/__txn_abort_reply.java b/db/rpc_server/java/gen/__txn_abort_reply.java
deleted file mode 100644
index 58f275c1a..000000000
--- a/db/rpc_server/java/gen/__txn_abort_reply.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __txn_abort_reply implements XdrAble {
- public int status;
-
- public __txn_abort_reply() {
- }
-
- public __txn_abort_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- }
-
-}
-// End of __txn_abort_reply.java
diff --git a/db/rpc_server/java/gen/__txn_begin_msg.java b/db/rpc_server/java/gen/__txn_begin_msg.java
deleted file mode 100644
index 877031e8d..000000000
--- a/db/rpc_server/java/gen/__txn_begin_msg.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __txn_begin_msg implements XdrAble {
- public int dbenvcl_id;
- public int parentcl_id;
- public int flags;
-
- public __txn_begin_msg() {
- }
-
- public __txn_begin_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbenvcl_id);
- xdr.xdrEncodeInt(parentcl_id);
- xdr.xdrEncodeInt(flags);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbenvcl_id = xdr.xdrDecodeInt();
- parentcl_id = xdr.xdrDecodeInt();
- flags = xdr.xdrDecodeInt();
- }
-
-}
-// End of __txn_begin_msg.java
diff --git a/db/rpc_server/java/gen/__txn_begin_reply.java b/db/rpc_server/java/gen/__txn_begin_reply.java
deleted file mode 100644
index 65a0c4016..000000000
--- a/db/rpc_server/java/gen/__txn_begin_reply.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __txn_begin_reply implements XdrAble {
- public int status;
- public int txnidcl_id;
-
- public __txn_begin_reply() {
- }
-
- public __txn_begin_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- xdr.xdrEncodeInt(txnidcl_id);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- txnidcl_id = xdr.xdrDecodeInt();
- }
-
-}
-// End of __txn_begin_reply.java
diff --git a/db/rpc_server/java/gen/__txn_commit_msg.java b/db/rpc_server/java/gen/__txn_commit_msg.java
deleted file mode 100644
index 4b988d0c2..000000000
--- a/db/rpc_server/java/gen/__txn_commit_msg.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __txn_commit_msg implements XdrAble {
- public int txnpcl_id;
- public int flags;
-
- public __txn_commit_msg() {
- }
-
- public __txn_commit_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(txnpcl_id);
- xdr.xdrEncodeInt(flags);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- txnpcl_id = xdr.xdrDecodeInt();
- flags = xdr.xdrDecodeInt();
- }
-
-}
-// End of __txn_commit_msg.java
diff --git a/db/rpc_server/java/gen/__txn_commit_reply.java b/db/rpc_server/java/gen/__txn_commit_reply.java
deleted file mode 100644
index b26937b82..000000000
--- a/db/rpc_server/java/gen/__txn_commit_reply.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __txn_commit_reply implements XdrAble {
- public int status;
-
- public __txn_commit_reply() {
- }
-
- public __txn_commit_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- }
-
-}
-// End of __txn_commit_reply.java
diff --git a/db/rpc_server/java/gen/__txn_discard_msg.java b/db/rpc_server/java/gen/__txn_discard_msg.java
deleted file mode 100644
index 87f5d4f77..000000000
--- a/db/rpc_server/java/gen/__txn_discard_msg.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __txn_discard_msg implements XdrAble {
- public int txnpcl_id;
- public int flags;
-
- public __txn_discard_msg() {
- }
-
- public __txn_discard_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(txnpcl_id);
- xdr.xdrEncodeInt(flags);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- txnpcl_id = xdr.xdrDecodeInt();
- flags = xdr.xdrDecodeInt();
- }
-
-}
-// End of __txn_discard_msg.java
diff --git a/db/rpc_server/java/gen/__txn_discard_reply.java b/db/rpc_server/java/gen/__txn_discard_reply.java
deleted file mode 100644
index 9792211af..000000000
--- a/db/rpc_server/java/gen/__txn_discard_reply.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __txn_discard_reply implements XdrAble {
- public int status;
-
- public __txn_discard_reply() {
- }
-
- public __txn_discard_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- }
-
-}
-// End of __txn_discard_reply.java
diff --git a/db/rpc_server/java/gen/__txn_prepare_msg.java b/db/rpc_server/java/gen/__txn_prepare_msg.java
deleted file mode 100644
index 6e09f2c77..000000000
--- a/db/rpc_server/java/gen/__txn_prepare_msg.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __txn_prepare_msg implements XdrAble {
- public int txnpcl_id;
- public byte [] gid;
-
- public __txn_prepare_msg() {
- }
-
- public __txn_prepare_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(txnpcl_id);
- xdr.xdrEncodeOpaque(gid, 128);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- txnpcl_id = xdr.xdrDecodeInt();
- gid = xdr.xdrDecodeOpaque(128);
- }
-
-}
-// End of __txn_prepare_msg.java
diff --git a/db/rpc_server/java/gen/__txn_prepare_reply.java b/db/rpc_server/java/gen/__txn_prepare_reply.java
deleted file mode 100644
index d75901179..000000000
--- a/db/rpc_server/java/gen/__txn_prepare_reply.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __txn_prepare_reply implements XdrAble {
- public int status;
-
- public __txn_prepare_reply() {
- }
-
- public __txn_prepare_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- }
-
-}
-// End of __txn_prepare_reply.java
diff --git a/db/rpc_server/java/gen/__txn_recover_msg.java b/db/rpc_server/java/gen/__txn_recover_msg.java
deleted file mode 100644
index 651533344..000000000
--- a/db/rpc_server/java/gen/__txn_recover_msg.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __txn_recover_msg implements XdrAble {
- public int dbenvcl_id;
- public int count;
- public int flags;
-
- public __txn_recover_msg() {
- }
-
- public __txn_recover_msg(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(dbenvcl_id);
- xdr.xdrEncodeInt(count);
- xdr.xdrEncodeInt(flags);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- dbenvcl_id = xdr.xdrDecodeInt();
- count = xdr.xdrDecodeInt();
- flags = xdr.xdrDecodeInt();
- }
-
-}
-// End of __txn_recover_msg.java
diff --git a/db/rpc_server/java/gen/__txn_recover_reply.java b/db/rpc_server/java/gen/__txn_recover_reply.java
deleted file mode 100644
index 0161ec949..000000000
--- a/db/rpc_server/java/gen/__txn_recover_reply.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 12/18/01 7:23 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-public class __txn_recover_reply implements XdrAble {
- public int status;
- public int [] txn;
- public byte [] gid;
- public int retcount;
-
- public __txn_recover_reply() {
- }
-
- public __txn_recover_reply(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- xdrDecode(xdr);
- }
-
- public void xdrEncode(XdrEncodingStream xdr)
- throws OncRpcException, IOException {
- xdr.xdrEncodeInt(status);
- xdr.xdrEncodeIntVector(txn);
- xdr.xdrEncodeDynamicOpaque(gid);
- xdr.xdrEncodeInt(retcount);
- }
-
- public void xdrDecode(XdrDecodingStream xdr)
- throws OncRpcException, IOException {
- status = xdr.xdrDecodeInt();
- txn = xdr.xdrDecodeIntVector();
- gid = xdr.xdrDecodeDynamicOpaque();
- retcount = xdr.xdrDecodeInt();
- }
-
-}
-// End of __txn_recover_reply.java
diff --git a/db/rpc_server/java/gen/db_server.java b/db/rpc_server/java/gen/db_server.java
deleted file mode 100644
index dccc3d8ad..000000000
--- a/db/rpc_server/java/gen/db_server.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Automatically generated by jrpcgen 0.95.1 on 2/11/04 1:28 PM
- * jrpcgen is part of the "Remote Tea" ONC/RPC package for Java
- * See http://acplt.org/ks/remotetea.html for details
- */
-package com.sleepycat.db.rpcserver;
-import org.acplt.oncrpc.*;
-import java.io.IOException;
-
-/**
- * A collection of constants used by the "db_server" ONC/RPC program.
- */
-public interface db_server {
- public static final int __DB_db_get_re_delim_4003 = 49;
- public static final int __DB_db_close_4003 = 25;
- public static final int __DB_db_flags_4003 = 33;
- public static final int __DB_dbc_dup_4003 = 65;
- public static final int __DB_db_get_open_flags_4003 = 36;
- public static final int __DB_db_encrypt_4003 = 29;
- public static final int __DB_env_remove_4003 = 14;
- public static final int __DB_env_dbrename_4003 = 6;
- public static final int __DB_dbc_pget_4003 = 67;
- public static final int __DB_env_get_cachesize_4003 = 1;
- public static final int __DB_env_cachesize_4003 = 2;
- public static final int __DB_db_get_lorder_4003 = 42;
- public static final int __DB_db_lorder_4003 = 43;
- public static final int __DB_db_key_range_4003 = 41;
- public static final int __DB_env_get_open_flags_4003 = 12;
- public static final int __DB_db_bt_minkey_4003 = 24;
- public static final int __DB_db_sync_4003 = 58;
- public static final int __DB_dbc_close_4003 = 62;
- public static final int __DB_db_join_4003 = 61;
- public static final int __DB_db_pagesize_4003 = 46;
- public static final int DB_RPC_SERVERVERS = 4003;
- public static final int __DB_db_open_4003 = 44;
- public static final int __DB_db_get_extentsize_4003 = 30;
- public static final int __DB_dbc_get_4003 = 66;
- public static final int __DB_db_cursor_4003 = 60;
- public static final int __DB_txn_commit_4003 = 17;
- public static final int __DB_dbc_del_4003 = 64;
- public static final int __DB_env_create_4003 = 4;
- public static final int __DB_env_open_4003 = 13;
- public static final int __DB_txn_prepare_4003 = 19;
- public static final int __DB_db_get_re_pad_4003 = 54;
- public static final int __DB_db_pget_4003 = 47;
- public static final int __DB_db_stat_4003 = 57;
- public static final int __DB_db_h_nelem_4003 = 40;
- public static final int __DB_db_remove_4003 = 55;
- public static final int __DB_db_get_flags_4003 = 32;
- public static final int __DB_db_re_delim_4003 = 50;
- public static final int __DB_db_re_pad_4003 = 53;
- public static final int __DB_env_get_flags_4003 = 9;
- public static final int __DB_txn_abort_4003 = 15;
- public static final int __DB_env_get_encrypt_flags_4003 = 7;
- public static final int __DB_db_get_encrypt_flags_4003 = 28;
- public static final int __DB_db_get_h_ffactor_4003 = 37;
- public static final int __DB_txn_recover_4003 = 20;
- public static final int __DB_db_get_4003 = 34;
- public static final int __DB_db_extentsize_4003 = 31;
- public static final int __DB_db_get_h_nelem_4003 = 39;
- public static final int __DB_dbc_put_4003 = 68;
- public static final int DB_RPC_SERVERPROG = 351457;
- public static final int __DB_db_get_re_len_4003 = 51;
- public static final int __DB_db_truncate_4003 = 59;
- public static final int __DB_db_del_4003 = 27;
- public static final int __DB_db_bt_maxkey_4003 = 22;
- public static final int __DB_env_dbremove_4003 = 5;
- public static final int __DB_db_get_pagesize_4003 = 45;
- public static final int __DB_db_get_name_4003 = 35;
- public static final int __DB_txn_discard_4003 = 18;
- public static final int __DB_db_re_len_4003 = 52;
- public static final int __DB_env_close_4003 = 3;
- public static final int __DB_env_flags_4003 = 10;
- public static final int __DB_db_rename_4003 = 56;
- public static final int __DB_db_get_bt_minkey_4003 = 23;
- public static final int __DB_db_associate_4003 = 21;
- public static final int __DB_txn_begin_4003 = 16;
- public static final int __DB_env_encrypt_4003 = 8;
- public static final int __DB_db_h_ffactor_4003 = 38;
- public static final int __DB_db_put_4003 = 48;
- public static final int __DB_db_create_4003 = 26;
- public static final int __DB_env_get_home_4003 = 11;
- public static final int __DB_dbc_count_4003 = 63;
-}
-// End of db_server.java
diff --git a/db/rpc_server/java/jrpcgen.jar b/db/rpc_server/java/jrpcgen.jar
deleted file mode 100644
index 338825b84..000000000
--- a/db/rpc_server/java/jrpcgen.jar
+++ /dev/null
Binary files differ
diff --git a/db/rpc_server/java/oncrpc.jar b/db/rpc_server/java/oncrpc.jar
deleted file mode 100644
index e0f5cfa69..000000000
--- a/db/rpc_server/java/oncrpc.jar
+++ /dev/null
Binary files differ
diff --git a/db/rpc_server/java/s_jrpcgen b/db/rpc_server/java/s_jrpcgen
deleted file mode 100644
index b585f431f..000000000
--- a/db/rpc_server/java/s_jrpcgen
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-java -jar jrpcgen.jar -d gen -noclient -nobackup -p com.sleepycat.db.rpcserver -s ServerStubs ../db_server.x
diff --git a/db/rpc_server/rpc.src b/db/rpc_server/rpc.src
index ec834332a..26fe6ff0e 100644
--- a/db/rpc_server/rpc.src
+++ b/db/rpc_server/rpc.src
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: rpc.src,v 12.20 2006/09/11 15:52:44 bostic Exp $
+# $Id: rpc.src,v 12.30 2007/06/22 17:50:28 bostic Exp $
#
# Syntax:
# BEGIN function_name {CODE | LINKONLY | RETCODE}
@@ -97,6 +96,7 @@ ARET INT u_int32_t gbytes
ARET INT u_int32_t bytes
ARET INT int ncache
END
+NOFUNC env_get_cache_max DB_ENV *, u_int32_t *, u_int32_t *
NOFUNC env_get_data_dirs DB_ENV *, const char ***
BEGIN env_get_encrypt_flags CODE
ARG ID DB_ENV * dbenv
@@ -123,7 +123,7 @@ NOFUNC env_get_lk_max_lockers DB_ENV *, u_int32_t *
NOFUNC env_get_lk_max_locks DB_ENV *, u_int32_t *
NOFUNC env_get_lk_max_objects DB_ENV *, u_int32_t *
NOFUNC env_get_mp_max_openfd DB_ENV *, int *
-NOFUNC env_get_mp_max_write DB_ENV *, int *, int *
+NOFUNC env_get_mp_max_write DB_ENV *, int *, db_timeout_t *
NOFUNC env_get_mp_mmapsize DB_ENV *, size_t *
LOCAL env_get_msgfile
BEGIN env_get_open_flags CODE
@@ -131,6 +131,7 @@ ARG ID DB_ENV * dbenv
ARET INT u_int32_t flags
END
NOFUNC env_get_shm_key DB_ENV *, long *
+NOFUNC env_get_thread_count DB_ENV *, u_int32_t *
NOFUNC env_get_timeout DB_ENV *, db_timeout_t *, u_int32_t
NOFUNC env_get_tmp_dir DB_ENV *, const char **
NOFUNC env_get_tx_max DB_ENV *, u_int32_t *
@@ -186,15 +187,16 @@ ARG ID DB_ENV * dbenv
ARG STRING const char * home
ARG INT u_int32_t flags
END
-NOFUNC env_rep_elect DB_ENV *, int, int, int *, u_int32_t
+NOFUNC env_rep_elect DB_ENV *, int, int, u_int32_t
NOFUNC env_rep_flush DB_ENV *
NOFUNC env_rep_get_config DB_ENV *, u_int32_t, int *
NOFUNC env_rep_get_limit DB_ENV *, u_int32_t *, u_int32_t *
NOFUNC env_rep_get_nsites DB_ENV *, int *
NOFUNC env_rep_get_priority DB_ENV *, int *
NOFUNC env_rep_get_timeout DB_ENV *, int, db_timeout_t *
-NOFUNC env_rep_process_message DB_ENV *, DBT *, DBT *, int *, DB_LSN *
+NOFUNC env_rep_process_message DB_ENV *, DBT *, DBT *, int, DB_LSN *
NOFUNC env_rep_set_config DB_ENV *, u_int32_t, int
+NOFUNC env_rep_set_lease DB_ENV *, u_int32_t, u_int32_t
NOFUNC env_rep_set_limit DB_ENV *, u_int32_t, u_int32_t
NOFUNC env_rep_set_nsites DB_ENV *, int
NOFUNC env_rep_set_priority DB_ENV *, int
@@ -210,6 +212,8 @@ NOFUNC env_repmgr_set_ack_policy DB_ENV *, int
NOFUNC env_repmgr_set_local_site DB_ENV *, const char *, u_int, u_int32_t
NOFUNC env_repmgr_site_list DB_ENV *, u_int *, DB_REPMGR_SITE **
NOFUNC env_repmgr_start DB_ENV *, int, u_int32_t
+NOFUNC env_repmgr_stat DB_ENV *, DB_REPMGR_STAT **, u_int32_t
+NOFUNC env_repmgr_stat_print DB_ENV *, u_int32_t
NOFUNC env_set_alloc DB_ENV *, void *(*)(size_t), void *(*)(void *, size_t), void (*)(void *)
NOFUNC env_set_app_dispatch DB_ENV *, int (*)(DB_ENV *, DBT *, DB_LSN *, db_recops)
BEGIN env_set_cachesize CODE
@@ -218,6 +222,7 @@ ARG INT u_int32_t gbytes
ARG INT u_int32_t bytes
ARG INT int ncache
END
+NOFUNC env_set_cache_max DB_ENV *, u_int32_t, u_int32_t
NOFUNC env_set_data_dir DB_ENV *, const char *
BEGIN env_set_encrypt CODE
ARG ID DB_ENV * dbenv
@@ -247,7 +252,7 @@ NOFUNC env_set_lk_max_lockers DB_ENV *, u_int32_t
NOFUNC env_set_lk_max_locks DB_ENV *, u_int32_t
NOFUNC env_set_lk_max_objects DB_ENV *, u_int32_t
NOFUNC env_set_mp_max_openfd DB_ENV *, int
-NOFUNC env_set_mp_max_write DB_ENV *, int, int
+NOFUNC env_set_mp_max_write DB_ENV *, int, db_timeout_t
NOFUNC env_set_mp_mmapsize DB_ENV *, size_t
LOCAL env_set_msgcall
LOCAL env_set_msgfile
@@ -327,6 +332,7 @@ ARG INT u_int32_t flags
END
LOCAL db_err
LOCAL db_errx
+LOCAL db_exists
NOFUNC db_fd DB *, int *
BEGIN db_get RETCODE
ARG ID DB * dbp
@@ -373,6 +379,7 @@ ARET INT int lorder
END
NOFUNC db_get_mpf DB *
LOCAL db_get_msgfile
+LOCAL db_get_multiple
BEGIN db_get_open_flags CODE
ARG ID DB * dbp
ARET INT u_int32_t flags
@@ -381,6 +388,10 @@ BEGIN db_get_pagesize CODE
ARG ID DB * dbp
ARET INT u_int32_t pagesize
END
+BEGIN db_get_priority CODE
+ARG ID DB * dbp
+ARET INT DB_CACHE_PRIORITY priority
+END
BEGIN db_get_q_extentsize CODE
ARG ID DB * dbp
ARET INT u_int32_t extentsize
@@ -484,6 +495,7 @@ BEGIN db_set_flags CODE
ARG ID DB * dbp
ARG INT u_int32_t flags
END
+NOFUNC db_set_h_compare DB *, int (*)(DB *, const DBT *, const DBT *)
BEGIN db_set_h_ffactor CODE
ARG ID DB * dbp
ARG INT u_int32_t ffactor
@@ -504,6 +516,10 @@ ARG ID DB * dbp
ARG INT u_int32_t pagesize
END
NOFUNC db_set_paniccall DB *, void (*)(DB_ENV *, int)
+BEGIN db_set_priority CODE
+ARG ID DB * dbp
+ARG INT DB_CACHE_PRIORITY priority
+END
BEGIN db_set_q_extentsize CODE
ARG ID DB * dbp
ARG INT u_int32_t extentsize
@@ -546,26 +562,26 @@ NOFUNC db_verify DB *, const char *, const char *, FILE *, u_int32_t
######################################################
# DBC handle methods.
######################################################
-BEGIN dbc_c_close RETCODE
+BEGIN dbc_close RETCODE
ARG ID DBC * dbc
END
-BEGIN dbc_c_count RETCODE
+BEGIN dbc_count RETCODE
ARG ID DBC * dbc
ARG IGNORE db_recno_t * countp
ARG INT u_int32_t flags
RET INT db_recno_t dupcount
END
-BEGIN dbc_c_del CODE
+BEGIN dbc_del CODE
ARG ID DBC * dbc
ARG INT u_int32_t flags
END
-BEGIN dbc_c_dup RETCODE
+BEGIN dbc_dup RETCODE
ARG ID DBC * dbc
ARG IGNORE DBC ** dbcp
ARG INT u_int32_t flags
RET ID long dbcid
END
-BEGIN dbc_c_get RETCODE
+BEGIN dbc_get RETCODE
ARG ID DBC * dbc
ARG DBT DBT * key
ARG DBT DBT * data
@@ -573,7 +589,11 @@ ARG INT u_int32_t flags
RET DBT DBT * key
RET DBT DBT * data
END
-BEGIN dbc_c_pget RETCODE
+BEGIN dbc_get_priority CODE
+ARG ID DBC * dbc
+ARET INT DB_CACHE_PRIORITY priority
+END
+BEGIN dbc_pget RETCODE
ARG ID DBC * dbc
ARG DBT DBT * skey
ARG DBT DBT * pkey
@@ -583,13 +603,17 @@ RET DBT DBT * skey
RET DBT DBT * pkey
RET DBT DBT * data
END
-BEGIN dbc_c_put RETCODE
+BEGIN dbc_put RETCODE
ARG ID DBC * dbc
ARG DBT DBT * key
ARG DBT DBT * data
ARG INT u_int32_t flags
RET DBT DBT * key
END
+BEGIN dbc_set_priority CODE
+ARG ID DBC * dbc
+ARG INT DB_CACHE_PRIORITY priority
+END
######################################################
# DB_TXN handle methods.
diff --git a/db/sequence/seq_stat.c b/db/sequence/seq_stat.c
index 11d4508f3..5ae9c8b4e 100644
--- a/db/sequence/seq_stat.c
+++ b/db/sequence/seq_stat.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2004-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2004,2007 Oracle. All rights reserved.
*
- * $Id: seq_stat.c,v 12.10 2006/08/24 14:46:31 bostic Exp $
+ * $Id: seq_stat.c,v 12.12 2007/05/17 15:15:53 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/sequence/sequence.c b/db/sequence/sequence.c
index aa72c045a..03889fed7 100644
--- a/db/sequence/sequence.c
+++ b/db/sequence/sequence.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2004-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2004,2007 Oracle. All rights reserved.
*
- * $Id: sequence.c,v 12.38 2006/08/24 14:46:31 bostic Exp $
+ * $Id: sequence.c,v 12.46 2007/05/17 17:18:04 bostic Exp $
*/
#include "db_config.h"
@@ -13,12 +12,11 @@
#include "dbinc/db_page.h"
#include "dbinc/db_am.h"
#include "dbinc/lock.h"
-#include "dbinc/mp.h"
#include "dbinc/txn.h"
#include "dbinc_auto/sequence_ext.h"
#ifdef HAVE_RPC
-#ifndef NO_SYSTEM_INCLUDES
+#ifdef HAVE_SYSTEM_INCLUDE_FILES
#include <rpc/rpc.h>
#endif
#include "db_server.h"
@@ -191,15 +189,21 @@ __seq_open_pp(seq, txn, keyp, flags)
if (keyp->size == 0) {
__db_errx(dbenv, "Zero length sequence key specified");
+ ret = EINVAL;
goto err;
}
if ((ret = __db_get_flags(dbp, &tflags)) != 0)
goto err;
+ if (DB_IS_READONLY(dbp)) {
+ ret = __db_rdonly(dbp->dbenv, "DB_SEQUENCE->open");
+ goto err;
+ }
if (FLD_ISSET(tflags, DB_DUP)) {
__db_errx(dbenv,
"Sequences not supported in databases configured for duplicate data");
+ ret = EINVAL;
goto err;
}
@@ -228,6 +232,9 @@ __seq_open_pp(seq, txn, keyp, flags)
seq->seq_data.ulen = seq->seq_data.size = sizeof(seq->seq_record);
seq->seq_rp = &seq->seq_record;
+ if ((ret = __dbt_usercopy(dbenv, keyp)) != 0)
+ goto err;
+
memset(&seq->seq_key, 0, sizeof(DBT));
if ((ret = __os_malloc(dbenv, keyp->size, &seq->seq_key.data)) != 0)
goto err;
@@ -365,6 +372,7 @@ err: if (txn_local &&
ret = t_ret;
ENV_LEAVE(dbenv, ip);
+ __dbt_userfree(dbenv, keyp, NULL, NULL);
return (ret);
}
@@ -765,6 +773,10 @@ __seq_get_key(seq, key)
{
SEQ_ILLEGAL_BEFORE_OPEN(seq, "DB_SEQUENCE->get_key");
+ if (F_ISSET(key, DB_DBT_USERCOPY))
+ return (__db_retcopy(seq->seq_dbp->dbenv, key,
+ seq->seq_key.data, seq->seq_key.size, NULL, 0));
+
key->data = seq->seq_key.data;
key->size = key->ulen = seq->seq_key.size;
key->flags = seq->seq_key.flags;
@@ -819,10 +831,11 @@ __seq_remove(seq, txn, flags)
DB *dbp;
DB_ENV *dbenv;
DB_THREAD_INFO *ip;
- int handle_check, ret, t_ret;
+ int handle_check, ret, t_ret, txn_local;
dbp = seq->seq_dbp;
dbenv = dbp->dbenv;
+ txn_local = 0;
SEQ_ILLEGAL_BEFORE_OPEN(seq, "DB_SEQUENCE->remove");
ENV_ENTER(dbenv, ip);
@@ -834,8 +847,25 @@ __seq_remove(seq, txn, flags)
handle_check = 0;
goto err;
}
- if (flags != 0)
+ if (flags != 0) {
ret = __db_ferr(dbenv, "DB_SEQUENCE->remove", 0);
+ goto err;
+ }
+
+ /*
+ * Create a local transaction as necessary, check for consistent
+ * transaction usage, and, if we have no transaction but do have
+ * locking on, acquire a locker id for the handle lock acquisition.
+ */
+ if (IS_DB_AUTO_COMMIT(dbp, txn)) {
+ if ((ret = __txn_begin(dbenv, NULL, &txn, 0)) != 0)
+ return (ret);
+ txn_local = 1;
+ }
+
+ /* Check for consistent transaction usage. */
+ if ((ret = __db_check_txn(dbp, txn, DB_LOCK_INVALIDID, 0)) != 0)
+ goto err;
ret = __db_del(dbp, txn, &seq->seq_key, 0);
@@ -845,7 +875,11 @@ __seq_remove(seq, txn, flags)
/* Release replication block. */
if (handle_check && (t_ret = __env_db_rep_exit(dbenv)) != 0 && ret == 0)
ret = t_ret;
-err: ENV_LEAVE(dbenv, ip);
+err: if (txn_local && (t_ret =
+ __db_txn_auto_resolve(dbenv, txn, 0, ret)) != 0 && ret == 0)
+ ret = t_ret;
+
+ ENV_LEAVE(dbenv, ip);
return (ret);
}
diff --git a/db/tcl/docs/db.html b/db/tcl/docs/db.html
index 91a5e6542..2e6b3d666 100644
--- a/db/tcl/docs/db.html
+++ b/db/tcl/docs/db.html
@@ -1,5 +1,4 @@
-<!--Copyright 1999-2006 by Oracle Corporation.-->
-<!--All rights reserved.-->
+<!--Copyright 1999,2007 Oracle. All rights reserved.-->
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
diff --git a/db/tcl/docs/env.html b/db/tcl/docs/env.html
index cb73bed10..a42824129 100644
--- a/db/tcl/docs/env.html
+++ b/db/tcl/docs/env.html
@@ -1,5 +1,4 @@
-<!--Copyright 1999-2006 by Oracle Corporation.-->
-<!--All rights reserved.-->
+<!--Copyright 1999,2007 Oracle. All rights reserved.-->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
diff --git a/db/tcl/docs/historic.html b/db/tcl/docs/historic.html
index 72b40b489..0c3032d23 100644
--- a/db/tcl/docs/historic.html
+++ b/db/tcl/docs/historic.html
@@ -1,5 +1,4 @@
-<!--Copyright 1999-2006 by Oracle Corporation.-->
-<!--All rights reserved.-->
+<!--Copyright 1999,2007 Oracle. All rights reserved.-->
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
diff --git a/db/tcl/docs/index.html b/db/tcl/docs/index.html
index 7acf4d1ed..edec91c68 100644
--- a/db/tcl/docs/index.html
+++ b/db/tcl/docs/index.html
@@ -1,5 +1,4 @@
-<!--Copyright 1999-2006 by Oracle Corporation.-->
-<!--All rights reserved.-->
+<!--Copyright 1999,2007 Oracle. All rights reserved.-->
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
diff --git a/db/tcl/docs/library.html b/db/tcl/docs/library.html
index 35ce8cf15..df8123327 100644
--- a/db/tcl/docs/library.html
+++ b/db/tcl/docs/library.html
@@ -1,5 +1,4 @@
-<!--Copyright 1999-2006 by Oracle Corporation.-->
-<!--All rights reserved.-->
+<!--Copyright 1999,2007 Oracle. All rights reserved.-->
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
diff --git a/db/tcl/docs/lock.html b/db/tcl/docs/lock.html
index d418519ff..a21c9ca8e 100644
--- a/db/tcl/docs/lock.html
+++ b/db/tcl/docs/lock.html
@@ -1,5 +1,4 @@
-<!--Copyright 1999-2006 by Oracle Corporation.-->
-<!--All rights reserved.-->
+<!--Copyright 1999,2007 Oracle. All rights reserved.-->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
diff --git a/db/tcl/docs/log.html b/db/tcl/docs/log.html
index 0cda2bc47..5cdd6d38f 100644
--- a/db/tcl/docs/log.html
+++ b/db/tcl/docs/log.html
@@ -1,5 +1,4 @@
-<!--Copyright 1999-2006 by Oracle Corporation.-->
-<!--All rights reserved.-->
+<!--Copyright 1999,2007 Oracle. All rights reserved.-->
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
diff --git a/db/tcl/docs/mpool.html b/db/tcl/docs/mpool.html
index 59372aa34..f47658daf 100644
--- a/db/tcl/docs/mpool.html
+++ b/db/tcl/docs/mpool.html
@@ -1,5 +1,4 @@
-<!--Copyright 1999-2006 by Oracle Corporation.-->
-<!--All rights reserved.-->
+<!--Copyright 1999,2007 Oracle. All rights reserved.-->
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
diff --git a/db/tcl/docs/rep.html b/db/tcl/docs/rep.html
index 2f1ee7a58..7534639fc 100644
--- a/db/tcl/docs/rep.html
+++ b/db/tcl/docs/rep.html
@@ -1,5 +1,4 @@
-<!--Copyright 1999-2006 by Oracle Corporation.-->
-<!--All rights reserved.-->
+<!--Copyright 1999,2007 Oracle. All rights reserved.-->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
diff --git a/db/tcl/docs/sequence.html b/db/tcl/docs/sequence.html
index a0b3df068..de150cc11 100644
--- a/db/tcl/docs/sequence.html
+++ b/db/tcl/docs/sequence.html
@@ -1,3 +1,4 @@
+<!--Copyright 1999,2007 Oracle. All rights reserved.-->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
diff --git a/db/tcl/docs/test.html b/db/tcl/docs/test.html
index f714beb37..7c1dd3eba 100644
--- a/db/tcl/docs/test.html
+++ b/db/tcl/docs/test.html
@@ -1,5 +1,4 @@
-<!--Copyright 1999-2006 by Oracle Corporation.-->
-<!--All rights reserved.-->
+<!--Copyright 1999,2007 Oracle. All rights reserved.-->
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
diff --git a/db/tcl/docs/txn.html b/db/tcl/docs/txn.html
index 27892d3ea..d483c66f0 100644
--- a/db/tcl/docs/txn.html
+++ b/db/tcl/docs/txn.html
@@ -1,5 +1,4 @@
-<!--Copyright 1999-2006 by Oracle Corporation.-->
-<!--All rights reserved.-->
+<!--Copyright 1999,2007 Oracle. All rights reserved.-->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
diff --git a/db/tcl/tcl_compat.c b/db/tcl/tcl_compat.c
index 79c63aa8c..3ca82d80d 100644
--- a/db/tcl/tcl_compat.c
+++ b/db/tcl/tcl_compat.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1999-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1999,2007 Oracle. All rights reserved.
*
- * $Id: tcl_compat.c,v 12.4 2006/08/24 14:46:32 bostic Exp $
+ * $Id: tcl_compat.c,v 12.7 2007/05/17 15:15:54 bostic Exp $
*/
#include "db_config.h"
@@ -12,7 +11,7 @@
#define DB_DBM_HSEARCH 1
#include "db_int.h"
-#ifndef NO_SYSTEM_INCLUDES
+#ifdef HAVE_SYSTEM_INCLUDE_FILES
#include <tcl.h>
#endif
#include "dbinc/tcl_db.h"
diff --git a/db/tcl/tcl_db.c b/db/tcl/tcl_db.c
index 9de948ea6..b39b879bc 100644
--- a/db/tcl/tcl_db.c
+++ b/db/tcl/tcl_db.c
@@ -1,16 +1,15 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1999-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1999,2007 Oracle. All rights reserved.
*
- * $Id: tcl_db.c,v 12.23 2006/08/24 14:46:32 bostic Exp $
+ * $Id: tcl_db.c,v 12.33 2007/06/21 17:46:59 bostic Exp $
*/
#include "db_config.h"
#include "db_int.h"
-#ifndef NO_SYSTEM_INCLUDES
+#ifdef HAVE_SYSTEM_INCLUDE_FILES
#include <tcl.h>
#endif
#include "dbinc/db_page.h"
@@ -645,6 +644,7 @@ tcl_DbStat(interp, objc, objv, dbp)
MAKE_STAT_LIST("Magic", hsp->hash_magic);
MAKE_STAT_LIST("Version", hsp->hash_version);
MAKE_STAT_LIST("Page size", hsp->hash_pagesize);
+ MAKE_STAT_LIST("Page count", hsp->hash_pagecnt);
MAKE_STAT_LIST("Number of keys", hsp->hash_nkeys);
MAKE_STAT_LIST("Number of records", hsp->hash_ndata);
MAKE_STAT_LIST("Fill factor", hsp->hash_ffactor);
@@ -688,6 +688,7 @@ tcl_DbStat(interp, objc, objv, dbp)
MAKE_STAT_LIST("Fixed record length", bsp->bt_re_len);
MAKE_STAT_LIST("Record pad", bsp->bt_re_pad);
MAKE_STAT_LIST("Page size", bsp->bt_pagesize);
+ MAKE_STAT_LIST("Page count", bsp->bt_pagecnt);
if (flag != DB_FAST_STAT) {
MAKE_STAT_LIST("Levels", bsp->bt_levels);
MAKE_STAT_LIST("Internal pages", bsp->bt_int_pg);
@@ -1035,6 +1036,7 @@ tcl_DbGet(interp, objc, objv, dbp, ispget)
#ifdef CONFIG_TEST
"-data_buf_size",
"-multi",
+ "-nolease",
"-read_committed",
"-read_uncommitted",
#endif
@@ -1053,6 +1055,7 @@ tcl_DbGet(interp, objc, objv, dbp, ispget)
#ifdef CONFIG_TEST
DBGET_DATA_BUF_SIZE,
DBGET_MULTI,
+ DBGET_NOLEASE,
DBGET_READ_COMMITTED,
DBGET_READ_UNCOMMITTED,
#endif
@@ -1141,6 +1144,9 @@ tcl_DbGet(interp, objc, objv, dbp, ispget)
goto out;
i++;
break;
+ case DBGET_NOLEASE:
+ rmw |= DB_IGNORE_LEASE;
+ break;
case DBGET_READ_COMMITTED:
rmw |= DB_READ_COMMITTED;
break;
@@ -1584,10 +1590,10 @@ tcl_DbGet(interp, objc, objv, dbp, ispget)
if (ispget) {
_debug_check();
F_SET(&pkey, DB_DBT_MALLOC);
- ret = dbc->c_pget(dbc, &key, &pkey, &data, cflag | rmw);
+ ret = dbc->pget(dbc, &key, &pkey, &data, cflag | rmw);
} else {
_debug_check();
- ret = dbc->c_get(dbc, &key, &data, cflag | rmw);
+ ret = dbc->get(dbc, &key, &data, cflag | rmw);
}
result = _ReturnSetup(interp, ret, DB_RETOK_DBCGET(ret),
"db get (cursor)");
@@ -1636,9 +1642,9 @@ tcl_DbGet(interp, objc, objv, dbp, ispget)
data = save;
if (ispget) {
F_SET(&pkey, DB_DBT_MALLOC);
- ret = dbc->c_pget(dbc, &key, &pkey, &data, cflag | rmw);
+ ret = dbc->pget(dbc, &key, &pkey, &data, cflag | rmw);
} else
- ret = dbc->c_get(dbc, &key, &data, cflag | rmw);
+ ret = dbc->get(dbc, &key, &data, cflag | rmw);
if (ret == 0 && prefix != NULL &&
memcmp(key.data, prefix, strlen(prefix)) != 0) {
/*
@@ -1649,7 +1655,7 @@ tcl_DbGet(interp, objc, objv, dbp, ispget)
}
}
out1:
- (void)dbc->c_close(dbc);
+ (void)dbc->close(dbc);
if (result == TCL_OK)
Tcl_SetObjResult(interp, retlist);
out:
@@ -1867,7 +1873,7 @@ tcl_DbDelete(interp, objc, objv, dbp)
flag = DB_FIRST;
else
flag = DB_SET_RANGE;
- ret = dbc->c_get(dbc, &key, &data, flag);
+ ret = dbc->get(dbc, &key, &data, flag);
while (ret == 0 &&
memcmp(key.data, prefix, strlen(prefix)) == 0) {
/*
@@ -1876,7 +1882,7 @@ tcl_DbDelete(interp, objc, objv, dbp)
* move ahead.
*/
_debug_check();
- ret = dbc->c_del(dbc, 0);
+ ret = dbc->del(dbc, 0);
if (ret != 0) {
result = _ReturnSetup(interp, ret,
DB_RETOK_DBCDEL(ret), "db c_del");
@@ -1888,7 +1894,7 @@ tcl_DbDelete(interp, objc, objv, dbp)
*/
memset(&key, 0, sizeof(key));
memset(&data, 0, sizeof(data));
- ret = dbc->c_get(dbc, &key, &data, DB_NEXT);
+ ret = dbc->get(dbc, &key, &data, DB_NEXT);
}
if (ret == DB_NOTFOUND)
ret = 0;
@@ -1898,7 +1904,7 @@ tcl_DbDelete(interp, objc, objv, dbp)
* have multiple nuls at the end, so we free using __os_free().
*/
__os_free(dbp->dbenv, prefix);
- (void)dbc->c_close(dbc);
+ (void)dbc->close(dbc);
result = _ReturnSetup(interp, ret, DB_RETOK_STD(ret), "db del");
}
out:
@@ -2191,10 +2197,12 @@ tcl_second_call(dbp, pkey, data, skey)
DBT *skey;
{
DBTCL_INFO *ip;
+ DBT *tskey;
Tcl_Interp *interp;
- Tcl_Obj *pobj, *dobj, *objv[3];
+ Tcl_Obj *pobj, *dobj, *objv[3], *robj, **skeylist;
size_t len;
int ilen, result, ret;
+ u_int32_t i, nskeys;
void *retbuf, *databuf;
ip = (DBTCL_INFO *)dbp->api_internal;
@@ -2224,22 +2232,62 @@ tcl_second_call(dbp, pkey, data, skey)
return (EINVAL);
}
- retbuf = Tcl_GetByteArrayFromObj(Tcl_GetObjResult(interp), &ilen);
- len = (size_t)ilen;
+ robj = Tcl_GetObjResult(interp);
+ if (robj->typePtr == NULL || strcmp(robj->typePtr->name, "list") != 0) {
+ nskeys = 1;
+ skeylist = &robj;
+ tskey = skey;
+ } else {
+ if ((result = Tcl_ListObjGetElements(interp,
+ robj, &ilen, &skeylist)) != TCL_OK) {
+ __db_errx(dbp->dbenv,
+ "Could not get list elements from Tcl callback");
+ return (EINVAL);
+ }
+ nskeys = (u_int32_t)ilen;
- /*
- * retbuf is owned by Tcl; copy it into malloc'ed memory.
- * We need to use __os_umalloc rather than ufree because this will
- * be freed by DB using __os_ufree--the DB_DBT_APPMALLOC flag
- * tells DB to free application-allocated memory.
- */
- if ((ret = __os_umalloc(dbp->dbenv, len, &databuf)) != 0)
- return (ret);
- memcpy(databuf, retbuf, len);
+ /*
+ * It would be nice to check for nskeys == 0 and return
+ * DB_DONOTINDEX, but Tcl does not distinguish between an empty
+ * string and an empty list, so that would disallow empty
+ * secondary keys.
+ */
+ if (nskeys == 0) {
+ nskeys = 1;
+ skeylist = &robj;
+ }
+ if (nskeys == 1)
+ tskey = skey;
+ else {
+ memset(skey, 0, sizeof(DBT));
+ if ((ret = __os_umalloc(dbp->dbenv,
+ nskeys * sizeof(DBT), &skey->data)) != 0)
+ return (ret);
+ skey->size = nskeys;
+ F_SET(skey, DB_DBT_MULTIPLE | DB_DBT_APPMALLOC);
+ tskey = (DBT *)skey->data;
+ }
+ }
+
+ for (i = 0; i < nskeys; i++, tskey++) {
+ retbuf = Tcl_GetByteArrayFromObj(skeylist[i], &ilen);
+ len = (size_t)ilen;
- skey->data = databuf;
- skey->size = len;
- F_SET(skey, DB_DBT_APPMALLOC);
+ /*
+ * retbuf is owned by Tcl; copy it into malloc'ed memory.
+ * We need to use __os_umalloc rather than ufree because this
+ * will be freed by DB using __os_ufree--the DB_DBT_APPMALLOC
+ * flag tells DB to free application-allocated memory.
+ */
+ if ((ret = __os_umalloc(dbp->dbenv, len, &databuf)) != 0)
+ return (ret);
+ memcpy(databuf, retbuf, len);
+
+ memset(tskey, 0, sizeof(DBT));
+ tskey->data = databuf;
+ tskey->size = len;
+ F_SET(tskey, DB_DBT_APPMALLOC);
+ }
return (0);
}
@@ -2457,7 +2505,7 @@ tcl_DbGetjoin(interp, objc, objv, dbp)
goto out;
}
key.data = ktmp;
- ret = (listp[j])->c_get(listp[j], &key, &data, DB_SET);
+ ret = (listp[j])->get(listp[j], &key, &data, DB_SET);
if ((result = _ReturnSetup(interp, ret, DB_RETOK_DBCGET(ret),
"db cget")) == TCL_ERROR)
goto out;
@@ -2475,7 +2523,7 @@ tcl_DbGetjoin(interp, objc, objv, dbp)
memset(&data, 0, sizeof(data));
key.flags |= DB_DBT_MALLOC;
data.flags |= DB_DBT_MALLOC;
- ret = dbc->c_get(dbc, &key, &data, 0);
+ ret = dbc->get(dbc, &key, &data, 0);
/*
* Build up our {name value} sublist
*/
@@ -2487,7 +2535,7 @@ tcl_DbGetjoin(interp, objc, objv, dbp)
__os_ufree(dbp->dbenv, data.data);
}
}
- (void)dbc->c_close(dbc);
+ (void)dbc->close(dbc);
if (result == TCL_OK)
Tcl_SetObjResult(interp, retlist);
out:
@@ -2495,7 +2543,7 @@ out:
__os_free(dbp->dbenv, ktmp);
while (j) {
if (listp[j])
- (void)(listp[j])->c_close(listp[j]);
+ (void)(listp[j])->close(listp[j]);
j--;
}
__os_free(dbp->dbenv, listp);
@@ -2682,11 +2730,11 @@ tcl_DbCount(interp, objc, objv, dbp)
/*
* Move our cursor to the key.
*/
- ret = dbc->c_get(dbc, &key, &data, DB_SET);
+ ret = dbc->get(dbc, &key, &data, DB_SET);
if (ret == DB_KEYEMPTY || ret == DB_NOTFOUND)
count = 0;
else {
- ret = dbc->c_count(dbc, &count, 0);
+ ret = dbc->count(dbc, &count, 0);
if (ret != 0) {
result = _ReturnSetup(interp, ret, DB_RETOK_STD(ret),
"db c count");
@@ -2698,7 +2746,7 @@ tcl_DbCount(interp, objc, objv, dbp)
out: if (ktmp != NULL && freekey)
__os_free(dbp->dbenv, ktmp);
- (void)dbc->c_close(dbc);
+ (void)dbc->close(dbc);
return (result);
}
diff --git a/db/tcl/tcl_db_pkg.c b/db/tcl/tcl_db_pkg.c
index 398507b4b..1d0dd130f 100644
--- a/db/tcl/tcl_db_pkg.c
+++ b/db/tcl/tcl_db_pkg.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1999-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1999,2007 Oracle. All rights reserved.
*
- * $Id: tcl_db_pkg.c,v 12.36 2006/09/08 19:22:21 bostic Exp $
+ * $Id: tcl_db_pkg.c,v 12.51 2007/07/09 17:38:45 bostic Exp $
*/
#include "db_config.h"
@@ -14,7 +13,7 @@
#endif
#include "db_int.h"
-#ifndef NO_SYSTEM_INCLUDES
+#ifdef HAVE_SYSTEM_INCLUDE_FILES
#include <tcl.h>
#endif
#include "dbinc/db_page.h"
@@ -417,6 +416,7 @@ bdb_EnvOpen(interp, objc, objv, ip, env)
"-region_init",
"-rep",
"-rep_client",
+ "-rep_lease",
"-rep_master",
"-rep_transport",
"-server",
@@ -425,12 +425,14 @@ bdb_EnvOpen(interp, objc, objv, ip, env)
"-snapshot",
"-thread",
"-time_notgranted",
+ "-txn_nowait",
"-txn_timeout",
"-txn_timestamp",
"-verbose",
"-wrnosync",
#endif
"-cachesize",
+ "-cache_max",
"-create",
"-data_dir",
"-encryptaes",
@@ -489,6 +491,7 @@ bdb_EnvOpen(interp, objc, objv, ip, env)
ENV_REGION_INIT,
ENV_REP,
ENV_REP_CLIENT,
+ ENV_REP_LEASE,
ENV_REP_MASTER,
ENV_REP_TRANSPORT,
ENV_SERVER,
@@ -497,12 +500,14 @@ bdb_EnvOpen(interp, objc, objv, ip, env)
ENV_SNAPSHOT,
ENV_THREAD,
ENV_TIME_NOTGRANTED,
+ ENV_TXN_NOWAIT,
ENV_TXN_TIMEOUT,
ENV_TXN_TIME,
ENV_VERBOSE,
ENV_WRNOSYNC,
#endif
ENV_CACHESIZE,
+ ENV_CACHE_MAX,
ENV_CREATE,
ENV_DATA_DIR,
ENV_ENCRYPT_AES,
@@ -814,6 +819,9 @@ bdb_EnvOpen(interp, objc, objv, ip, env)
DB_RETOK_STD(ret), "lock_max");
}
break;
+ case ENV_TXN_NOWAIT:
+ FLD_SET(set_flags, DB_TXN_NOWAIT);
+ break;
case ENV_TXN_TIME:
case ENV_TXN_TIMEOUT:
case ENV_LOCK_TIMEOUT:
@@ -959,7 +967,8 @@ bdb_EnvOpen(interp, objc, objv, ip, env)
if (result != TCL_OK)
break;
_debug_check();
- ret = (*env)->set_mp_max_write(*env, intarg, intarg2);
+ ret = (*env)->set_mp_max_write(
+ *env, intarg, (db_timeout_t)intarg2);
result = _ReturnSetup(interp, ret, DB_RETOK_STD(ret),
"set_mp_max_write");
break;
@@ -1021,6 +1030,23 @@ bdb_EnvOpen(interp, objc, objv, ip, env)
rep_flags = DB_REP_MASTER;
FLD_SET(open_flags, DB_INIT_REP);
break;
+ case ENV_REP_LEASE:
+ if (i >= objc) {
+ Tcl_WrongNumArgs(interp, 2, objv,
+ "-rep_lease {nsites timeout clockskew}");
+ result = TCL_ERROR;
+ break;
+ }
+ result = Tcl_ListObjGetElements(interp, objv[i],
+ &myobjc, &myobjv);
+ if (result == TCL_OK)
+ i++;
+ else
+ break;
+ result = tcl_RepLease(interp, myobjc, myobjv, *env);
+ if (result == TCL_OK)
+ FLD_SET(open_flags, DB_INIT_REP);
+ break;
case ENV_REP_TRANSPORT:
if (i >= objc) {
Tcl_WrongNumArgs(interp, 2, objv,
@@ -1190,6 +1216,30 @@ bdb_EnvOpen(interp, objc, objv, ip, env)
result = _ReturnSetup(interp, ret, DB_RETOK_STD(ret),
"set_cachesize");
break;
+ case ENV_CACHE_MAX:
+ result = Tcl_ListObjGetElements(interp, objv[i],
+ &myobjc, &myobjv);
+ if (result == TCL_OK)
+ i++;
+ else
+ break;
+ if (myobjc != 2) {
+ Tcl_WrongNumArgs(interp, 2, objv,
+ "?-cache_max {gbytes bytes}?");
+ result = TCL_ERROR;
+ break;
+ }
+ result = _GetUInt32(interp, myobjv[0], &gbytes);
+ if (result != TCL_OK)
+ break;
+ result = _GetUInt32(interp, myobjv[1], &bytes);
+ if (result != TCL_OK)
+ break;
+ _debug_check();
+ ret = (*env)->set_cache_max(*env, gbytes, bytes);
+ result = _ReturnSetup(interp, ret, DB_RETOK_STD(ret),
+ "set_cache_max");
+ break;
case ENV_SHM_KEY:
if (i >= objc) {
Tcl_WrongNumArgs(interp, 2, objv,
@@ -1379,6 +1429,7 @@ bdb_DbOpen(interp, objc, objv, ip, dbp)
#ifdef CONFIG_TEST
"-btcompare",
"-dupcompare",
+ "-hashcompare",
"-hashproc",
"-lorder",
"-minkey",
@@ -1432,6 +1483,7 @@ bdb_DbOpen(interp, objc, objv, ip, dbp)
#ifdef CONFIG_TEST
TCL_DB_BTCOMPARE,
TCL_DB_DUPCOMPARE,
+ TCL_DB_HASHCOMPARE,
TCL_DB_HASHPROC,
TCL_DB_LORDER,
TCL_DB_MINKEY,
@@ -1562,15 +1614,13 @@ bdb_DbOpen(interp, objc, objv, ip, dbp)
(*dbp)->api_internal = ip;
/*
- * XXX Remove restriction when err stuff is not tied to env.
+ * XXX
+ * Remove restriction if error handling not tied to env.
*
- * The DB->set_err* functions actually overwrite in the
- * environment. So, if we are explicitly using an env,
- * don't overwrite what we have already set up. If we are
- * not using one, then we set up since we get a private
- * default env.
+ * The DB->set_err* functions overwrite the environment. So, if
+ * we are using an env, don't overwrite it; if not using an env,
+ * then configure error handling.
*/
- /* XXX - remove this conditional if/when err is not tied to env */
if (envp == NULL) {
(*dbp)->set_errpfx((*dbp), ip->i_name);
(*dbp)->set_errcall((*dbp), _ErrorFunc);
@@ -1619,8 +1669,8 @@ bdb_DbOpen(interp, objc, objv, ip, dbp)
* Tcl's object refcounting will--I hope--take care
* of the memory management here.
*/
- ip->i_btcompare = objv[i++];
- Tcl_IncrRefCount(ip->i_btcompare);
+ ip->i_compare = objv[i++];
+ Tcl_IncrRefCount(ip->i_compare);
_debug_check();
ret = (*dbp)->set_bt_compare(*dbp, tcl_bt_compare);
result = _ReturnSetup(interp, ret, DB_RETOK_STD(ret),
@@ -1645,6 +1695,28 @@ bdb_DbOpen(interp, objc, objv, ip, dbp)
result = _ReturnSetup(interp, ret, DB_RETOK_STD(ret),
"set_dup_compare");
break;
+ case TCL_DB_HASHCOMPARE:
+ if (i >= objc) {
+ Tcl_WrongNumArgs(interp, 2, objv,
+ "-hashcompare compareproc");
+ result = TCL_ERROR;
+ break;
+ }
+
+ /*
+ * Store the object containing the procedure name.
+ * We don't need to crack it out now--we'll want
+ * to bundle it up to pass into Tcl_EvalObjv anyway.
+ * Tcl's object refcounting will--I hope--take care
+ * of the memory management here.
+ */
+ ip->i_compare = objv[i++];
+ Tcl_IncrRefCount(ip->i_compare);
+ _debug_check();
+ ret = (*dbp)->set_h_compare(*dbp, tcl_bt_compare);
+ result = _ReturnSetup(interp, ret, DB_RETOK_STD(ret),
+ "set_h_compare");
+ break;
case TCL_DB_HASHPROC:
if (i >= objc) {
Tcl_WrongNumArgs(interp, 2, objv,
@@ -2595,6 +2667,17 @@ bdb_DbRemove(interp, objc, objv)
goto error;
}
+ /*
+ * XXX
+ * Remove restriction if error handling not tied to env.
+ *
+ * The DB->set_err* functions overwrite the environment. So, if
+ * we are using an env, don't overwrite it; if not using an env,
+ * then configure error handling.
+ */
+ dbp->set_errpfx(dbp, "DbRemove");
+ dbp->set_errcall(dbp, _ErrorFunc);
+
if (passwd != NULL) {
ret = dbp->set_encrypt(dbp, passwd, enc_flag);
result = _ReturnSetup(interp, ret, DB_RETOK_STD(ret),
@@ -2815,6 +2898,17 @@ bdb_DbRename(interp, objc, objv)
"db_create");
goto error;
}
+ /*
+ * XXX
+ * Remove restriction if error handling not tied to env.
+ *
+ * The DB->set_err* functions overwrite the environment. So, if
+ * we are using an env, don't overwrite it; if not using an env,
+ * then configure error handling.
+ */
+ dbp->set_errpfx(dbp, "DbRename");
+ dbp->set_errcall(dbp, _ErrorFunc);
+
if (passwd != NULL) {
ret = dbp->set_encrypt(dbp, passwd, enc_flag);
result = _ReturnSetup(interp, ret, DB_RETOK_STD(ret),
@@ -2865,6 +2959,8 @@ bdb_DbVerify(interp, objc, objv)
"-env",
"-errfile",
"-errpfx",
+ "-noorderchk",
+ "-orderchkonly",
"-unref",
"--",
NULL
@@ -2876,6 +2972,8 @@ bdb_DbVerify(interp, objc, objv)
TCL_DBVRFY_ENV,
TCL_DBVRFY_ERRFILE,
TCL_DBVRFY_ERRPFX,
+ TCL_DBVRFY_NOORDERCHK,
+ TCL_DBVRFY_ORDERCHKONLY,
TCL_DBVRFY_UNREF,
TCL_DBVRFY_ENDARG
};
@@ -2883,14 +2981,15 @@ bdb_DbVerify(interp, objc, objv)
DB *dbp;
FILE *errf;
u_int32_t enc_flag, flags, set_flags;
- int endarg, i, optindex, result, ret;
- char *arg, *db, *errpfx, *passwd;
+ int endarg, i, optindex, result, ret, subdblen;
+ char *arg, *db, *errpfx, *passwd, *subdb;
+ u_char *subdbtmp;
envp = NULL;
dbp = NULL;
passwd = NULL;
result = TCL_OK;
- db = errpfx = NULL;
+ db = errpfx = subdb = NULL;
errf = NULL;
flags = endarg = 0;
enc_flag = set_flags = 0;
@@ -2994,6 +3093,12 @@ bdb_DbVerify(interp, objc, objv)
break;
}
break;
+ case TCL_DBVRFY_NOORDERCHK:
+ flags |= DB_NOORDERCHK;
+ break;
+ case TCL_DBVRFY_ORDERCHKONLY:
+ flags |= DB_ORDERCHKONLY;
+ break;
case TCL_DBVRFY_UNREF:
flags |= DB_UNREF;
break;
@@ -3015,9 +3120,32 @@ bdb_DbVerify(interp, objc, objv)
/*
* The remaining arg is the db filename.
*/
- if (i == (objc - 1))
+ /*
+ * Any args we have left, (better be 1 or 2 left) are
+ * file names. If there is 1, a db name, if 2 a db and subdb name.
+ */
+ if (i != objc) {
+ /*
+ * Dbs must be NULL terminated file names, but subdbs can
+ * be anything. Use Strings for the db name and byte
+ * arrays for the subdb.
+ */
db = Tcl_GetStringFromObj(objv[i++], NULL);
- else {
+ if (strcmp(db, "") == 0)
+ db = NULL;
+ if (i != objc) {
+ subdbtmp =
+ Tcl_GetByteArrayFromObj(objv[i++], &subdblen);
+ if ((ret = __os_malloc(envp,
+ (size_t)subdblen + 1, &subdb)) != 0) {
+ Tcl_SetResult(interp, db_strerror(ret),
+ TCL_STATIC);
+ return (0);
+ }
+ memcpy(subdb, subdbtmp, (size_t)subdblen);
+ subdb[subdblen] = '\0';
+ }
+ } else {
Tcl_WrongNumArgs(interp, 2, objv, "?args? filename");
result = TCL_ERROR;
goto error;
@@ -3048,7 +3176,7 @@ bdb_DbVerify(interp, objc, objv)
/*
* The verify method is a destructor, NULL out the dbp.
*/
- ret = dbp->verify(dbp, db, NULL, NULL, flags);
+ ret = dbp->verify(dbp, db, subdb, NULL, flags);
result = _ReturnSetup(interp, ret, DB_RETOK_STD(ret), "db verify");
dbp = NULL;
error:
@@ -3256,11 +3384,11 @@ bdb_MsgType(interp, objc, objv)
static const char *msgnames[] = {
"no_type", "alive", "alive_req", "all_req",
"bulk_log", "bulk_page",
- "dupmaster", "file", "file_fail", "file_req", "log",
- "log_more", "log_req", "master_req", "newclient",
+ "dupmaster", "file", "file_fail", "file_req", "lease_grant",
+ "log", "log_more", "log_req", "master_req", "newclient",
"newfile", "newmaster", "newsite", "page",
"page_fail", "page_more", "page_req",
- "rerequest", "update", "update_req",
+ "rerequest", "startsync", "update", "update_req",
"verify", "verify_fail", "verify_req",
"vote1", "vote2", NULL
};
@@ -3381,6 +3509,18 @@ bdb_DbUpgrade(interp, objc, objv)
goto error;
}
+ /*
+ * XXX
+ * Remove restriction if error handling not tied to env.
+ *
+ * The DB->set_err* functions overwrite the environment. So, if
+ * we are using an env, don't overwrite it; if not using an env,
+ * then configure error handling.
+ */
+ if (envp == NULL) {
+ dbp->set_errpfx(dbp, "DbUpgrade");
+ dbp->set_errcall(dbp, _ErrorFunc);
+ }
ret = dbp->upgrade(dbp, db, flags);
result = _ReturnSetup(interp, ret, DB_RETOK_STD(ret), "db upgrade");
error:
@@ -3401,7 +3541,7 @@ tcl_bt_compare(dbp, dbta, dbtb)
const DBT *dbta, *dbtb;
{
return (tcl_compare_callback(dbp, dbta, dbtb,
- ((DBTCL_INFO *)dbp->api_internal)->i_btcompare, "bt_compare"));
+ ((DBTCL_INFO *)dbp->api_internal)->i_compare, "bt_compare"));
}
static int
@@ -3417,7 +3557,7 @@ tcl_dup_compare(dbp, dbta, dbtb)
* tcl_compare_callback --
* Tcl callback for set_bt_compare and set_dup_compare. What this
* function does is stuff the data fields of the two DBTs into Tcl ByteArray
- * objects, then call the procedure stored in ip->i_btcompare on the two
+ * objects, then call the procedure stored in ip->i_compare on the two
* objects. Then we return that procedure's result as the comparison.
*/
static int
@@ -3612,7 +3752,8 @@ tcl_rep_send(dbenv, control, rec, lsnp, eid, flags)
* this error should only happen if the Tcl callback is
* somehow invalid, which is a fatal scripting bug.
*/
-err: __db_errx(dbenv, "Tcl rep_send failure");
+err: __db_errx(dbenv, "Tcl rep_send failure: %s",
+ Tcl_GetStringResult(interp));
return (EINVAL);
}
diff --git a/db/tcl/tcl_dbcursor.c b/db/tcl/tcl_dbcursor.c
index 1e40afa83..ed45f4b5a 100644
--- a/db/tcl/tcl_dbcursor.c
+++ b/db/tcl/tcl_dbcursor.c
@@ -1,16 +1,15 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1999-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1999,2007 Oracle. All rights reserved.
*
- * $Id: tcl_dbcursor.c,v 12.11 2006/08/24 14:46:33 bostic Exp $
+ * $Id: tcl_dbcursor.c,v 12.17 2007/05/17 15:15:54 bostic Exp $
*/
#include "db_config.h"
#include "db_int.h"
-#ifndef NO_SYSTEM_INCLUDES
+#ifdef HAVE_SYSTEM_INCLUDE_FILES
#include <tcl.h>
#endif
#include "dbinc/tcl_db.h"
@@ -100,7 +99,7 @@ dbc_Cmd(clientData, interp, objc, objv)
return (TCL_ERROR);
}
_debug_check();
- ret = dbc->c_close(dbc);
+ ret = dbc->close(dbc);
result = _ReturnSetup(interp, ret, DB_RETOK_STD(ret),
"dbc close");
if (result == TCL_OK) {
@@ -117,7 +116,7 @@ dbc_Cmd(clientData, interp, objc, objv)
return (TCL_ERROR);
}
_debug_check();
- ret = dbc->c_del(dbc, 0);
+ ret = dbc->del(dbc, 0);
result = _ReturnSetup(interp, ret, DB_RETOK_DBCDEL(ret),
"dbc delete");
break;
@@ -349,7 +348,7 @@ tcl_DbcPut(interp, objc, objv, dbc)
goto out;
}
_debug_check();
- ret = dbc->c_put(dbc, &key, &data, flag);
+ ret = dbc->put(dbc, &key, &data, flag);
result = _ReturnSetup(interp, ret, DB_RETOK_DBCPUT(ret),
"dbc put");
if (ret == 0 &&
@@ -383,6 +382,7 @@ tcl_DbcGet(interp, objc, objv, dbc, ispget)
"-key_buf_size",
"-multi",
"-multi_key",
+ "-nolease",
"-read_committed",
"-read_uncommitted",
#endif
@@ -397,6 +397,7 @@ tcl_DbcGet(interp, objc, objv, dbc, ispget)
"-nextnodup",
"-partial",
"-prev",
+ "-prevdup",
"-prevnodup",
"-rmw",
"-set",
@@ -411,6 +412,7 @@ tcl_DbcGet(interp, objc, objv, dbc, ispget)
DBCGET_KEY_BUF_SIZE,
DBCGET_MULTI,
DBCGET_MULTI_KEY,
+ DBCGET_NOLEASE,
DBCGET_READ_COMMITTED,
DBCGET_READ_UNCOMMITTED,
#endif
@@ -425,6 +427,7 @@ tcl_DbcGet(interp, objc, objv, dbc, ispget)
DBCGET_NEXTNODUP,
DBCGET_PART,
DBCGET_PREV,
+ DBCGET_PREVDUP,
DBCGET_PREVNODUP,
DBCGET_RMW,
DBCGET_SET,
@@ -482,7 +485,8 @@ tcl_DbcGet(interp, objc, objv, dbc, ispget)
i++;
#define FLAG_CHECK2_STDARG \
- (DB_RMW | DB_MULTIPLE | DB_MULTIPLE_KEY | DB_READ_UNCOMMITTED)
+ (DB_RMW | DB_MULTIPLE | DB_MULTIPLE_KEY | DB_IGNORE_LEASE | \
+ DB_READ_UNCOMMITTED)
switch ((enum dbcgetopts)optindex) {
#ifdef CONFIG_TEST
@@ -520,6 +524,9 @@ tcl_DbcGet(interp, objc, objv, dbc, ispget)
goto out;
i++;
break;
+ case DBCGET_NOLEASE:
+ flag |= DB_IGNORE_LEASE;
+ break;
case DBCGET_READ_COMMITTED:
flag |= DB_READ_COMMITTED;
break;
@@ -550,6 +557,10 @@ tcl_DbcGet(interp, objc, objv, dbc, ispget)
FLAG_CHECK2(flag, FLAG_CHECK2_STDARG);
flag |= DB_PREV;
break;
+ case DBCGET_PREVDUP:
+ FLAG_CHECK2(flag, FLAG_CHECK2_STDARG);
+ flag |= DB_PREV_DUP;
+ break;
case DBCGET_PREVNODUP:
FLAG_CHECK2(flag, FLAG_CHECK2_STDARG);
flag |= DB_PREV_NODUP;
@@ -777,9 +788,9 @@ tcl_DbcGet(interp, objc, objv, dbc, ispget)
_debug_check();
if (ispget) {
F_SET(&pdata, DB_DBT_MALLOC);
- ret = dbc->c_pget(dbc, &key, &data, &pdata, flag);
+ ret = dbc->pget(dbc, &key, &data, &pdata, flag);
} else
- ret = dbc->c_get(dbc, &key, &data, flag);
+ ret = dbc->get(dbc, &key, &data, flag);
result = _ReturnSetup(interp, ret, DB_RETOK_DBCGET(ret), "dbc get");
if (result == TCL_ERROR)
goto out;
@@ -937,7 +948,7 @@ tcl_DbcDup(interp, objc, objv, dbc)
"%s.c%d", dbip->i_name, dbip->i_dbdbcid);
newdbcip = _NewInfo(interp, NULL, newname, I_DBC);
if (newdbcip != NULL) {
- ret = dbc->c_dup(dbc, &newdbc, flag);
+ ret = dbc->dup(dbc, &newdbc, flag);
if (ret == 0) {
dbip->i_dbdbcid++;
newdbcip->i_parent = dbip;
diff --git a/db/tcl/tcl_env.c b/db/tcl/tcl_env.c
index ac18c40cf..b6b61f1ec 100644
--- a/db/tcl/tcl_env.c
+++ b/db/tcl/tcl_env.c
@@ -1,16 +1,15 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1999-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1999,2007 Oracle. All rights reserved.
*
- * $Id: tcl_env.c,v 12.29 2006/08/24 14:46:33 bostic Exp $
+ * $Id: tcl_env.c,v 12.40 2007/06/21 22:28:47 sue Exp $
*/
#include "db_config.h"
#include "db_int.h"
-#ifndef NO_SYSTEM_INCLUDES
+#ifdef HAVE_SYSTEM_INCLUDE_FILES
#include <tcl.h>
#endif
#include "dbinc/lock.h"
@@ -76,6 +75,7 @@ env_Cmd(clientData, interp, objc, objv)
"rep_elect",
"rep_flush",
"rep_get_config",
+ "rep_lease",
"rep_limit",
"rep_process_message",
"rep_request",
@@ -84,6 +84,7 @@ env_Cmd(clientData, interp, objc, objv)
"rep_sync",
"rep_transport",
"repmgr",
+ "repmgr_stat",
"rpcid",
"set_flags",
"test",
@@ -98,6 +99,7 @@ env_Cmd(clientData, interp, objc, objv)
"dbremove",
"dbrename",
"get_cachesize",
+ "get_cache_max",
"get_data_dirs",
"get_encrypt_flags",
"get_errpfx",
@@ -124,6 +126,7 @@ env_Cmd(clientData, interp, objc, objv)
"get_tx_max",
"get_tx_timestamp",
"get_verbose",
+ "resize_cache",
"set_data_dir",
"txn",
"txn_checkpoint",
@@ -161,6 +164,7 @@ env_Cmd(clientData, interp, objc, objv)
ENVREPELECT,
ENVREPFLUSH,
ENVREPGETCONFIG,
+ ENVREPLEASE,
ENVREPLIMIT,
ENVREPPROCMESS,
ENVREPREQUEST,
@@ -169,6 +173,7 @@ env_Cmd(clientData, interp, objc, objv)
ENVREPSYNC,
ENVREPTRANSPORT,
ENVREPMGR,
+ ENVREPMGRSTAT,
ENVRPCID,
ENVSETFLAGS,
ENVTEST,
@@ -183,6 +188,7 @@ env_Cmd(clientData, interp, objc, objv)
ENVDBREMOVE,
ENVDBRENAME,
ENVGETCACHESIZE,
+ ENVGETCACHEMAX,
ENVGETDATADIRS,
ENVGETENCRYPTFLAGS,
ENVGETERRPFX,
@@ -209,28 +215,27 @@ env_Cmd(clientData, interp, objc, objv)
ENVGETTXMAX,
ENVGETTXTIMESTAMP,
ENVGETVERBOSE,
+ ENVRESIZECACHE,
ENVSETDATADIR,
ENVTXN,
ENVTXNCKP
};
DBTCL_INFO *envip;
DB_ENV *dbenv;
- Tcl_Obj *myobjv[3], *res;
- char newname[MSG_SIZE];
- int cmdindex, i, intvalue1, intvalue2, ncache, result, ret;
- u_int32_t bytes, gbytes, value;
+ Tcl_Obj **listobjv, *myobjv[3], *res;
+ db_timeout_t timeout;
size_t size;
- long shm_key;
time_t timeval;
+ u_int32_t bytes, gbytes, value;
+ long shm_key;
+ int cmdindex, i, intvalue, listobjc, ncache, result, ret;
const char *strval, **dirs;
- char *strarg;
+ char *strarg, newname[MSG_SIZE];
#ifdef CONFIG_TEST
DBTCL_INFO *logcip;
DB_LOGC *logc;
- Tcl_Obj **repobjv;
u_int32_t lockid;
long newval, otherval;
- int repobjc;
#endif
Tcl_ResetResult(interp);
@@ -425,6 +430,17 @@ env_Cmd(clientData, interp, objc, objv)
}
result = tcl_RepGetConfig(interp, dbenv, objv[2]);
break;
+ case ENVREPLEASE:
+ if (objc != 3) {
+ Tcl_WrongNumArgs(interp, 2, objv, NULL);
+ return (TCL_ERROR);
+ }
+ result = Tcl_ListObjGetElements(interp, objv[2],
+ &listobjc, &listobjv);
+ if (result == TCL_OK)
+ result = tcl_RepLease(interp,
+ listobjc, listobjv, dbenv);
+ break;
case ENVREPLIMIT:
result = tcl_RepLimit(interp, objc, objv, dbenv);
break;
@@ -449,14 +465,17 @@ env_Cmd(clientData, interp, objc, objv)
return (TCL_ERROR);
}
result = Tcl_ListObjGetElements(interp, objv[2],
- &repobjc, &repobjv);
+ &listobjc, &listobjv);
if (result == TCL_OK)
result = tcl_RepTransport(interp,
- repobjc, repobjv, dbenv, envip);
+ listobjc, listobjv, dbenv, envip);
break;
case ENVREPMGR:
result = tcl_RepMgr(interp, objc, objv, dbenv);
break;
+ case ENVREPMGRSTAT:
+ result = tcl_RepMgrStat(interp, objc, objv, dbenv);
+ break;
case ENVRPCID:
/*
* No args for this. Error if there are some.
@@ -592,6 +611,19 @@ env_Cmd(clientData, interp, objc, objv)
res = Tcl_NewListObj(3, myobjv);
}
break;
+ case ENVGETCACHEMAX:
+ if (objc != 2) {
+ Tcl_WrongNumArgs(interp, 1, objv, NULL);
+ return (TCL_ERROR);
+ }
+ ret = dbenv->get_cache_max(dbenv, &gbytes, &bytes);
+ if ((result = _ReturnSetup(interp, ret, DB_RETOK_STD(ret),
+ "env get_cache_max")) == TCL_OK) {
+ myobjv[0] = Tcl_NewLongObj((long)gbytes);
+ myobjv[1] = Tcl_NewLongObj((long)bytes);
+ res = Tcl_NewListObj(2, myobjv);
+ }
+ break;
case ENVGETDATADIRS:
if (objc != 2) {
Tcl_WrongNumArgs(interp, 1, objv, NULL);
@@ -655,10 +687,10 @@ env_Cmd(clientData, interp, objc, objv)
Tcl_WrongNumArgs(interp, 1, objv, NULL);
return (TCL_ERROR);
}
- ret = dbenv->get_lg_filemode(dbenv, &intvalue1);
+ ret = dbenv->get_lg_filemode(dbenv, &intvalue);
if ((result = _ReturnSetup(interp, ret, DB_RETOK_STD(ret),
"env get_lg_filemode")) == TCL_OK)
- res = Tcl_NewLongObj((long)intvalue1);
+ res = Tcl_NewLongObj((long)intvalue);
break;
case ENVGETLGMAX:
if (objc != 2) {
@@ -718,21 +750,21 @@ env_Cmd(clientData, interp, objc, objv)
Tcl_WrongNumArgs(interp, 1, objv, NULL);
return (TCL_ERROR);
}
- ret = dbenv->get_mp_max_openfd(dbenv, &intvalue1);
+ ret = dbenv->get_mp_max_openfd(dbenv, &intvalue);
if ((result = _ReturnSetup(interp, ret, DB_RETOK_STD(ret),
"env get_mp_max_openfd")) == TCL_OK)
- res = Tcl_NewIntObj(intvalue1);
+ res = Tcl_NewIntObj(intvalue);
break;
case ENVGETMPMAXWRITE:
if (objc != 2) {
Tcl_WrongNumArgs(interp, 1, objv, NULL);
return (TCL_ERROR);
}
- ret = dbenv->get_mp_max_write(dbenv, &intvalue1, &intvalue2);
+ ret = dbenv->get_mp_max_write(dbenv, &intvalue, &timeout);
if ((result = _ReturnSetup(interp, ret, DB_RETOK_STD(ret),
"env get_mp_max_write")) == TCL_OK) {
- myobjv[0] = Tcl_NewIntObj(intvalue1);
- myobjv[1] = Tcl_NewIntObj(intvalue2);
+ myobjv[0] = Tcl_NewIntObj(intvalue);
+ myobjv[1] = Tcl_NewIntObj((int)timeout);
res = Tcl_NewListObj(2, myobjv);
}
break;
@@ -818,6 +850,26 @@ env_Cmd(clientData, interp, objc, objv)
case ENVGETVERBOSE:
result = env_GetVerbose(interp, objc, objv, dbenv);
break;
+ case ENVRESIZECACHE:
+ if ((result = Tcl_ListObjGetElements(
+ interp, objv[2], &listobjc, &listobjv)) != TCL_OK)
+ break;
+ if (objc != 3 || listobjc != 2) {
+ Tcl_WrongNumArgs(interp, 2, objv,
+ "?-resize_cache {gbytes bytes}?");
+ result = TCL_ERROR;
+ break;
+ }
+ result = _GetUInt32(interp, listobjv[0], &gbytes);
+ if (result != TCL_OK)
+ break;
+ result = _GetUInt32(interp, listobjv[1], &bytes);
+ if (result != TCL_OK)
+ break;
+ ret = dbenv->set_cachesize(dbenv, gbytes, bytes, 0);
+ result = _ReturnSetup(interp, ret, DB_RETOK_STD(ret),
+ "resize_cache");
+ break;
case ENVSETDATADIR:
/*
* One args for this. Error if different.
@@ -1067,6 +1119,8 @@ tcl_EnvRemove(interp, objc, objv, dbenv, envip)
if (result != TCL_OK)
goto error;
}
+ e->set_errpfx(e, "EnvRemove");
+ e->set_errcall(e, _ErrorFunc);
} else {
/*
* We have to clean up any info associated with this env,
@@ -1270,6 +1324,8 @@ tcl_EnvVerbose(interp, dbenv, which, onoff)
{
static const char *verbwhich[] = {
"deadlock",
+ "fileops",
+ "fileops_all",
"recovery",
"register",
"rep",
@@ -1278,6 +1334,8 @@ tcl_EnvVerbose(interp, dbenv, which, onoff)
};
enum verbwhich {
ENVVERB_DEADLOCK,
+ ENVVERB_FILEOPS,
+ ENVVERB_FILEOPS_ALL,
ENVVERB_RECOVERY,
ENVVERB_REGISTER,
ENVVERB_REPLICATION,
@@ -1303,6 +1361,12 @@ tcl_EnvVerbose(interp, dbenv, which, onoff)
case ENVVERB_DEADLOCK:
wh = DB_VERB_DEADLOCK;
break;
+ case ENVVERB_FILEOPS:
+ wh = DB_VERB_FILEOPS;
+ break;
+ case ENVVERB_FILEOPS_ALL:
+ wh = DB_VERB_FILEOPS_ALL;
+ break;
case ENVVERB_RECOVERY:
wh = DB_VERB_RECOVERY;
break;
@@ -1591,9 +1655,20 @@ tcl_EnvSetFlags(interp, dbenv, which, onoff)
}
/*
- * PUBLIC: int tcl_EnvTest __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
- *
* tcl_EnvTest --
+ * The "$env test ..." command is a sort of catch-all for any sort of
+ * desired test hook manipulation. The "abort", "check" and "copy" subcommands
+ * all set one or another certain location in the DB_ENV handle to a specific
+ * value. (In the case of "check", the value is an integer passed in with the
+ * command itself. For the other two, the "value" is a predefined enum
+ * constant, specified by name.)
+ * The "$env test force ..." subcommand invokes other, more arbitrary
+ * manipulations.
+ * Although these functions may not all seem closely related, putting them
+ * all under the name "test" has the aesthetic appeal of keeping the rest of the
+ * API clean.
+ *
+ * PUBLIC: int tcl_EnvTest __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
*/
int
tcl_EnvTest(interp, objc, objv, dbenv)
@@ -1606,12 +1681,14 @@ tcl_EnvTest(interp, objc, objv, dbenv)
"abort",
"check",
"copy",
+ "force",
NULL
};
enum envtestcmd {
ENVTEST_ABORT,
ENVTEST_CHECK,
- ENVTEST_COPY
+ ENVTEST_COPY,
+ ENVTEST_FORCE
};
static const char *envtestat[] = {
"electinit",
@@ -1642,13 +1719,21 @@ tcl_EnvTest(interp, objc, objv, dbenv)
ENVTEST_RECYCLE,
ENVTEST_SUBDB_LOCKS
};
+ static const char *envtestforce[] = {
+ "noarchive_timeout",
+ NULL
+ };
+ enum envtestforce {
+ ENVTEST_NOARCHIVE_TIMEOUT
+ };
int *loc, optindex, result, testval;
result = TCL_OK;
loc = NULL;
if (objc != 4) {
- Tcl_WrongNumArgs(interp, 2, objv, "abort|copy location");
+ Tcl_WrongNumArgs(interp,
+ 2, objv, "abort|check|copy|force <args>");
return (TCL_ERROR);
}
@@ -1674,6 +1759,19 @@ tcl_EnvTest(interp, objc, objv, dbenv)
case ENVTEST_COPY:
loc = &dbenv->test_copy;
break;
+ case ENVTEST_FORCE:
+ if (Tcl_GetIndexFromObj(interp, objv[3], envtestforce, "arg",
+ TCL_EXACT, &optindex) != TCL_OK) {
+ result = IS_HELP(objv[3]);
+ return (result);
+ }
+ /*
+ * In the future we might add more, and then we'd use a switch
+ * statement.
+ */
+ DB_ASSERT(dbenv,
+ (enum envtestforce)optindex == ENVTEST_NOARCHIVE_TIMEOUT);
+ return (tcl_RepNoarchiveTimeout(interp, dbenv));
default:
Tcl_SetResult(interp, "Illegal store location", TCL_STATIC);
return (TCL_ERROR);
@@ -2310,6 +2408,8 @@ env_GetVerbose(interp, objc, objv, dbenv)
char *arg;
} verbose_flags[] = {
{ DB_VERB_DEADLOCK, "deadlock" },
+ { DB_VERB_FILEOPS, "fileops" },
+ { DB_VERB_FILEOPS_ALL, "fileops_all" },
{ DB_VERB_RECOVERY, "recovery" },
{ DB_VERB_REGISTER, "register" },
{ DB_VERB_REPLICATION, "rep" },
diff --git a/db/tcl/tcl_internal.c b/db/tcl/tcl_internal.c
index d1071c71c..42543ad00 100644
--- a/db/tcl/tcl_internal.c
+++ b/db/tcl/tcl_internal.c
@@ -1,16 +1,15 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1999-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1999,2007 Oracle. All rights reserved.
*
- * $Id: tcl_internal.c,v 12.13 2006/08/24 14:46:33 bostic Exp $
+ * $Id: tcl_internal.c,v 12.24 2007/05/17 17:18:05 bostic Exp $
*/
#include "db_config.h"
#include "db_int.h"
-#ifndef NO_SYSTEM_INCLUDES
+#ifdef HAVE_SYSTEM_INCLUDE_FILES
#include <tcl.h>
#endif
#include "dbinc/tcl_db.h"
@@ -151,8 +150,8 @@ _DeleteInfo(p)
}
if (p->i_errpfx != NULL)
__os_free(NULL, p->i_errpfx);
- if (p->i_btcompare != NULL)
- Tcl_DecrRefCount(p->i_btcompare);
+ if (p->i_compare != NULL)
+ Tcl_DecrRefCount(p->i_compare);
if (p->i_dupcompare != NULL)
Tcl_DecrRefCount(p->i_dupcompare);
if (p->i_hashproc != NULL)
@@ -163,6 +162,8 @@ _DeleteInfo(p)
Tcl_DecrRefCount(p->i_rep_eid);
if (p->i_rep_send != NULL)
Tcl_DecrRefCount(p->i_rep_send);
+ if (p->i_event != NULL)
+ Tcl_DecrRefCount(p->i_event);
__os_free(NULL, p->i_name);
__os_free(NULL, p);
@@ -510,7 +511,7 @@ _EventFunc(dbenv, event, info)
void *info;
{
#define TCLDB_EVENTITEMS 2 /* Event name and any info */
-#define TCLDB_SENDEVENT 2
+#define TCLDB_SENDEVENT 3 /* Event Tcl proc, env name, event objects. */
DBTCL_INFO *ip;
Tcl_Interp *interp;
Tcl_Obj *event_o, *origobj;
@@ -522,6 +523,7 @@ _EventFunc(dbenv, event, info)
if (ip->i_event == NULL)
return;
objv[0] = ip->i_event;
+ objv[1] = NewStringObj(ip->i_name, strlen(ip->i_name));
/*
* Most events don't have additional info. Assume none
@@ -540,6 +542,9 @@ _EventFunc(dbenv, event, info)
case DB_EVENT_REP_CLIENT:
myobjv[0] = NewStringObj("rep_client", strlen("rep_client"));
break;
+ case DB_EVENT_REP_ELECTED:
+ myobjv[0] = NewStringObj("elected", strlen("elected"));
+ break;
case DB_EVENT_REP_MASTER:
myobjv[0] = NewStringObj("rep_master", strlen("rep_master"));
break;
@@ -550,6 +555,9 @@ _EventFunc(dbenv, event, info)
myobjv[0] = NewStringObj("newmaster", strlen("newmaster"));
myobjv[myobjc++] = Tcl_NewIntObj(*(int *)info);
break;
+ case DB_EVENT_REP_PERM_FAILED:
+ myobjv[0] = NewStringObj("perm_failed", strlen("perm_failed"));
+ break;
case DB_EVENT_REP_STARTUPDONE:
myobjv[0] = NewStringObj("startupdone", strlen("startupdone"));
break;
@@ -567,7 +575,7 @@ _EventFunc(dbenv, event, info)
event_o = Tcl_NewListObj(myobjc, myobjv);
Tcl_IncrRefCount(event_o);
- objv[1] = event_o;
+ objv[2] = event_o;
/*
* We really want to return the original result to the
@@ -589,7 +597,7 @@ _EventFunc(dbenv, event, info)
* For now, abort.
*/
__db_errx(dbenv, "Tcl event failure");
- abort();
+ __os_abort();
}
Tcl_SetObjResult(interp, origobj);
@@ -695,6 +703,13 @@ _GetFlagsList(interp, flags, fnp)
newlist = Tcl_NewObj();
/*
+ * If the Berkeley DB library wasn't compiled with statistics, then
+ * we may get a NULL reference.
+ */
+ if (fnp == NULL)
+ return (newlist);
+
+ /*
* Append a Tcl_Obj containing each pertinent flag string to the
* specified Tcl list.
*/
diff --git a/db/tcl/tcl_lock.c b/db/tcl/tcl_lock.c
index bc73bf81b..7747afb14 100644
--- a/db/tcl/tcl_lock.c
+++ b/db/tcl/tcl_lock.c
@@ -1,16 +1,15 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1999-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1999,2007 Oracle. All rights reserved.
*
- * $Id: tcl_lock.c,v 12.6 2006/08/24 14:46:33 bostic Exp $
+ * $Id: tcl_lock.c,v 12.12 2007/06/22 17:39:08 bostic Exp $
*/
#include "db_config.h"
#include "db_int.h"
-#ifndef NO_SYSTEM_INCLUDES
+#ifdef HAVE_SYSTEM_INCLUDE_FILES
#include <tcl.h>
#endif
#include "dbinc/tcl_db.h"
@@ -238,6 +237,7 @@ tcl_LockStat(interp, objc, objv, envp)
* list pairs and free up the memory.
*/
res = Tcl_NewObj();
+#ifdef HAVE_STATISTICS
/*
* MAKE_STAT_LIST assumes 'res' and 'error' label.
*/
@@ -265,10 +265,22 @@ tcl_LockStat(interp, objc, objv, envp)
MAKE_STAT_LIST("Deadlocks detected", sp->st_ndeadlocks);
MAKE_STAT_LIST("Number of region lock waits", sp->st_region_wait);
MAKE_STAT_LIST("Number of region lock nowaits", sp->st_region_nowait);
+ MAKE_STAT_LIST("Number of object allocation waits", sp->st_objs_wait);
+ MAKE_STAT_LIST("Number of object allocation nowaits",
+ sp->st_objs_nowait);
+ MAKE_STAT_LIST("Number of locker allocation waits",
+ sp->st_lockers_wait);
+ MAKE_STAT_LIST("Number of locker allocation nowaits",
+ sp->st_lockers_nowait);
+ MAKE_STAT_LIST("Number of lock allocation waits", sp->st_locks_wait);
+ MAKE_STAT_LIST(
+ "Number of lock allocation nowaits", sp->st_locks_nowait);
+ MAKE_STAT_LIST("Maximum hash bucket length", sp->st_hash_len);
MAKE_STAT_LIST("Lock timeout value", sp->st_locktimeout);
MAKE_STAT_LIST("Number of lock timeouts", sp->st_nlocktimeouts);
MAKE_STAT_LIST("Transaction timeout value", sp->st_txntimeout);
MAKE_STAT_LIST("Number of transaction timeouts", sp->st_ntxntimeouts);
+#endif
Tcl_SetObjResult(interp, res);
error:
__os_ufree(envp, sp);
diff --git a/db/tcl/tcl_log.c b/db/tcl/tcl_log.c
index 650f632c9..0bad89091 100644
--- a/db/tcl/tcl_log.c
+++ b/db/tcl/tcl_log.c
@@ -1,16 +1,15 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1999-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1999,2007 Oracle. All rights reserved.
*
- * $Id: tcl_log.c,v 12.10 2006/08/24 14:46:33 bostic Exp $
+ * $Id: tcl_log.c,v 12.14 2007/05/17 15:15:54 bostic Exp $
*/
#include "db_config.h"
#include "db_int.h"
-#ifndef NO_SYSTEM_INCLUDES
+#ifdef HAVE_SYSTEM_INCLUDE_FILES
#include <tcl.h>
#endif
#include "dbinc/log.h"
@@ -370,6 +369,7 @@ tcl_LogStat(interp, objc, objv, envp)
/*
* MAKE_STAT_LIST assumes 'res' and 'error' label.
*/
+#ifdef HAVE_STATISTICS
MAKE_STAT_LIST("Magic", sp->st_magic);
MAKE_STAT_LIST("Log file Version", sp->st_version);
MAKE_STAT_LIST("Region size", sp->st_regsize);
@@ -395,6 +395,7 @@ tcl_LogStat(interp, objc, objv, envp)
MAKE_STAT_LIST("Min commits in a log flush", sp->st_mincommitperflush);
MAKE_STAT_LIST("Number of region lock waits", sp->st_region_wait);
MAKE_STAT_LIST("Number of region lock nowaits", sp->st_region_nowait);
+#endif
Tcl_SetObjResult(interp, res);
error:
__os_ufree(envp, sp);
diff --git a/db/tcl/tcl_mp.c b/db/tcl/tcl_mp.c
index ce205728a..15adbe41c 100644
--- a/db/tcl/tcl_mp.c
+++ b/db/tcl/tcl_mp.c
@@ -1,16 +1,15 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1999-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1999,2007 Oracle. All rights reserved.
*
- * $Id: tcl_mp.c,v 12.7 2006/09/11 14:53:42 bostic Exp $
+ * $Id: tcl_mp.c,v 12.14 2007/06/22 17:41:45 bostic Exp $
*/
#include "db_config.h"
#include "db_int.h"
-#ifndef NO_SYSTEM_INCLUDES
+#ifdef HAVE_SYSTEM_INCLUDE_FILES
#include <tcl.h>
#endif
#include "dbinc/tcl_db.h"
@@ -24,7 +23,7 @@ static int pg_Cmd __P((ClientData, Tcl_Interp *, int, Tcl_Obj * CONST*));
static int tcl_MpGet __P((Tcl_Interp *, int, Tcl_Obj * CONST*,
DB_MPOOLFILE *, DBTCL_INFO *));
static int tcl_Pg __P((Tcl_Interp *, int, Tcl_Obj * CONST*,
- void *, DB_MPOOLFILE *, DBTCL_INFO *, int));
+ void *, DB_MPOOLFILE *, DBTCL_INFO *));
static int tcl_PgInit __P((Tcl_Interp *, int, Tcl_Obj * CONST*,
void *, DBTCL_INFO *));
static int tcl_PgIsset __P((Tcl_Interp *, int, Tcl_Obj * CONST*,
@@ -340,12 +339,14 @@ tcl_MpStat(interp, objc, objv, envp)
* list pairs and free up the memory.
*/
res = Tcl_NewObj();
+#ifdef HAVE_STATISTICS
/*
* MAKE_STAT_LIST assumes 'res' and 'error' label.
*/
MAKE_STAT_LIST("Cache size (gbytes)", sp->st_gbytes);
MAKE_STAT_LIST("Cache size (bytes)", sp->st_bytes);
MAKE_STAT_LIST("Number of caches", sp->st_ncache);
+ MAKE_STAT_LIST("Maximum number of caches", sp->st_max_ncache);
MAKE_STAT_LIST("Region size", sp->st_regsize);
MAKE_STAT_LIST("Maximum memory-mapped file size", sp->st_mmapsize);
MAKE_STAT_LIST("Maximum open file descriptors", sp->st_maxopenfd);
@@ -416,6 +417,7 @@ tcl_MpStat(interp, objc, objv, envp)
if (result != TCL_OK)
goto error;
}
+#endif
Tcl_SetObjResult(interp, res1);
error:
__os_ufree(envp, sp);
@@ -730,7 +732,6 @@ pg_Cmd(clientData, interp, objc, objv)
"pgnum",
"pgsize",
"put",
- "set",
NULL
};
enum pgcmds {
@@ -738,8 +739,7 @@ pg_Cmd(clientData, interp, objc, objv)
PGISSET,
PGNUM,
PGSIZE,
- PGPUT,
- PGSET
+ PGPUT
};
DB_MPOOLFILE *mp;
int cmdindex, length, result;
@@ -784,10 +784,8 @@ pg_Cmd(clientData, interp, objc, objv)
case PGSIZE:
res = Tcl_NewWideIntObj((Tcl_WideInt)pgip->i_pgsz);
break;
- case PGSET:
case PGPUT:
- result = tcl_Pg(interp, objc, objv, page, mp, pgip,
- (enum pgcmds)cmdindex == PGSET ? 0 : 1);
+ result = tcl_Pg(interp, objc, objv, page, mp, pgip);
break;
case PGINIT:
result = tcl_PgInit(interp, objc, objv, page, pgip);
@@ -807,14 +805,13 @@ pg_Cmd(clientData, interp, objc, objv)
}
static int
-tcl_Pg(interp, objc, objv, page, mp, pgip, putop)
+tcl_Pg(interp, objc, objv, page, mp, pgip)
Tcl_Interp *interp; /* Interpreter */
int objc; /* How many arguments? */
Tcl_Obj *CONST objv[]; /* The argument objects */
void *page; /* Page pointer */
DB_MPOOLFILE *mp; /* Mpool pointer */
DBTCL_INFO *pgip; /* Info pointer */
- int putop; /* Operation */
{
static const char *pgopt[] = {
"-discard",
@@ -842,17 +839,12 @@ tcl_Pg(interp, objc, objv, page, mp, pgip, putop)
}
_debug_check();
- if (putop)
- ret = mp->put(mp, page, flag);
- else
- ret = mp->set(mp, page, flag);
+ ret = mp->put(mp, page, DB_PRIORITY_UNCHANGED, flag);
result = _ReturnSetup(interp, ret, DB_RETOK_STD(ret), "page");
- if (putop) {
- (void)Tcl_DeleteCommand(interp, pgip->i_name);
- _DeleteInfo(pgip);
- }
+ (void)Tcl_DeleteCommand(interp, pgip->i_name);
+ _DeleteInfo(pgip);
return (result);
}
diff --git a/db/tcl/tcl_rep.c b/db/tcl/tcl_rep.c
index 036171a0c..c94d32ac7 100644
--- a/db/tcl/tcl_rep.c
+++ b/db/tcl/tcl_rep.c
@@ -1,16 +1,15 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1999-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1999,2007 Oracle. All rights reserved.
*
- * $Id: tcl_rep.c,v 12.25 2006/09/07 08:06:37 alexg Exp $
+ * $Id: tcl_rep.c,v 12.40 2007/06/19 19:43:45 sue Exp $
*/
#include "db_config.h"
#include "db_int.h"
-#ifndef NO_SYSTEM_INCLUDES
+#ifdef HAVE_SYSTEM_INCLUDE_FILES
#include <tcl.h>
#endif
#include "dbinc/tcl_db.h"
@@ -174,11 +173,12 @@ tcl_RepElect(interp, objc, objv, dbenv)
Tcl_Obj *CONST objv[]; /* The argument objects */
DB_ENV *dbenv; /* Environment pointer */
{
- int eid, nsites, nvotes, pri, result, ret;
- u_int32_t timeout;
+ int nsites, nvotes, pri, result, ret;
+ u_int32_t full_timeout, timeout;
- if (objc != 6) {
- Tcl_WrongNumArgs(interp, 6, objv, "nsites pri timeout");
+ if (objc != 6 && objc != 7) {
+ Tcl_WrongNumArgs(interp, 6, objv,
+ "nsites nvotes pri timeout [full_timeout]");
return (TCL_ERROR);
}
@@ -190,6 +190,10 @@ tcl_RepElect(interp, objc, objv, dbenv)
return (result);
if ((result = _GetUInt32(interp, objv[5], &timeout)) != TCL_OK)
return (result);
+ full_timeout = 0;
+ if (objc == 7)
+ if ((result = _GetUInt32(interp, objv[5], &timeout)) != TCL_OK)
+ return (result);
_debug_check();
@@ -201,13 +205,13 @@ tcl_RepElect(interp, objc, objv, dbenv)
return (_ReturnSetup(interp, ret, DB_RETOK_STD(ret),
"env rep_elect (rep_set_timeout)"));
- if ((ret = dbenv->rep_elect(dbenv, nsites, nvotes, &eid, 0)) != 0)
+ if (full_timeout != 0 && (ret = dbenv->rep_set_timeout(dbenv,
+ DB_REP_FULL_ELECTION_TIMEOUT, full_timeout)) != 0)
return (_ReturnSetup(interp, ret, DB_RETOK_STD(ret),
- "env rep_elect"));
-
- Tcl_SetObjResult(interp, Tcl_NewIntObj(eid));
+ "env rep_elect (rep_set_timeout)"));
- return (TCL_OK);
+ ret = dbenv->rep_elect(dbenv, nsites, nvotes, 0);
+ return (_ReturnSetup(interp, ret, DB_RETOK_STD(ret), "env rep_elect"));
}
#endif
@@ -265,6 +269,54 @@ tcl_RepSync(interp, objc, objv, dbenv)
return (_ReturnSetup(interp, ret, DB_RETOK_STD(ret), "env rep_sync"));
}
#endif
+
+#ifdef CONFIG_TEST
+/*
+ * tcl_RepLease --
+ * Call DB_ENV->rep_set_lease().
+ *
+ * PUBLIC: int tcl_RepLease __P((Tcl_Interp *, int, Tcl_Obj * CONST *,
+ * PUBLIC: DB_ENV *));
+ */
+int
+tcl_RepLease(interp, objc, objv, dbenv)
+ Tcl_Interp *interp; /* Interpreter */
+ int objc; /* How many arguments? */
+ Tcl_Obj *CONST objv[]; /* The argument objects */
+ DB_ENV *dbenv;
+{
+ int result, ret;
+ u_int32_t nsites, skew, timeout;
+
+ if (objc != 3) {
+ Tcl_WrongNumArgs(interp, 1, objv, "{nsites timeout clockskew}");
+ return (TCL_ERROR);
+ }
+
+ if ((result = _GetUInt32(interp, objv[0], &nsites)) != TCL_OK)
+ return (result);
+ if ((result = _GetUInt32(interp, objv[1], &timeout)) != TCL_OK)
+ return (result);
+ if ((result = _GetUInt32(interp, objv[2], &skew)) != TCL_OK)
+ return (result);
+ ret = dbenv->rep_set_nsites(dbenv, (int)nsites);
+ result = _ReturnSetup(interp, ret, DB_RETOK_STD(ret),
+ "rep_set_nsites");
+ if (result != TCL_OK)
+ return (result);
+ ret = dbenv->rep_set_timeout(dbenv, DB_REP_LEASE_TIMEOUT,
+ (db_timeout_t)timeout);
+ result = _ReturnSetup(interp, ret, DB_RETOK_STD(ret),
+ "rep_set_timeout");
+ if (result != TCL_OK)
+ return (result);
+ _debug_check();
+ ret = dbenv->rep_set_lease(dbenv, skew, 0);
+ return (_ReturnSetup(interp, ret, DB_RETOK_STD(ret),
+ "env rep_set_lease"));
+}
+#endif
+
#ifdef CONFIG_TEST
/*
* tcl_RepLimit --
@@ -343,6 +395,35 @@ tcl_RepRequest(interp, objc, objv, dbenv)
#ifdef CONFIG_TEST
/*
+ * tcl_RepNoarchiveTimeout --
+ * Reset the master update timer, to allow immediate log archiving.
+ *
+ * PUBLIC: int tcl_RepNoarchiveTimeout
+ * PUBLIC: __P((Tcl_Interp *, DB_ENV *));
+ */
+int
+tcl_RepNoarchiveTimeout(interp, dbenv)
+ Tcl_Interp *interp; /* Interpreter */
+ DB_ENV *dbenv; /* Environment pointer */
+{
+ REGENV *renv;
+ REGINFO *infop;
+
+ _debug_check();
+ infop = dbenv->reginfo;
+ renv = infop->primary;
+ REP_SYSTEM_LOCK(dbenv);
+ F_CLR(renv, DB_REGENV_REPLOCKED);
+ renv->op_timestamp = 0;
+ REP_SYSTEM_UNLOCK(dbenv);
+
+ return (_ReturnSetup(interp,
+ 0, DB_RETOK_STD(0), "env test force noarchive_timeout"));
+}
+#endif
+
+#ifdef CONFIG_TEST
+/*
* tcl_RepTransport --
* Call DB_ENV->rep_set_transport().
*
@@ -459,10 +540,10 @@ tcl_RepStart(interp, objc, objv, dbenv)
i++;
switch ((enum tclrpstrt)optindex) {
case TCL_RPSTRT_CLIENT:
- flag |= DB_REP_CLIENT;
+ flag = DB_REP_CLIENT;
break;
case TCL_RPSTRT_MASTER:
- flag |= DB_REP_MASTER;
+ flag = DB_REP_MASTER;
break;
}
}
@@ -525,7 +606,7 @@ tcl_RepProcessMessage(interp, objc, objv, dbenv)
}
rec.data = rtmp;
_debug_check();
- ret = dbenv->rep_process_message(dbenv, &control, &rec, &eid, &permlsn);
+ ret = dbenv->rep_process_message(dbenv, &control, &rec, eid, &permlsn);
/*
* !!!
* The TCL API diverges from the C++/Java APIs here. For us, it
@@ -547,7 +628,6 @@ tcl_RepProcessMessage(interp, objc, objv, dbenv)
* {HOLDELECTION 0} - HOLDELECTION, no other info needed.
* {NEWMASTER #} - NEWMASTER and its ID.
* {NEWSITE 0} - NEWSITE, no other info needed.
- * {STARTUPDONE 0} - STARTUPDONE, no other info needed.
* {IGNORE {LSN list}} - IGNORE and this msg's LSN.
* {ISPERM {LSN list}} - ISPERM and the perm LSN.
* {NOTPERM {LSN list}} - NOTPERM and this msg's LSN.
@@ -584,11 +664,6 @@ tcl_RepProcessMessage(interp, objc, objv, dbenv)
(u_char *)"ISPERM", (int)strlen("ISPERM"));
myobjv[1] = lsnlist;
break;
- case DB_REP_NEWMASTER:
- myobjv[0] = Tcl_NewByteArrayObj(
- (u_char *)"NEWMASTER", (int)strlen("NEWMASTER"));
- myobjv[1] = Tcl_NewIntObj(eid);
- break;
case DB_REP_NEWSITE:
myobjv[0] = Tcl_NewByteArrayObj(
(u_char *)"NEWSITE", (int)strlen("NEWSITE"));
@@ -673,6 +748,7 @@ tcl_RepStat(interp, objc, objv, dbenv)
* list pairs and free up the memory.
*/
res = Tcl_NewObj();
+#ifdef HAVE_STATISTICS
/*
* MAKE_STAT_* assumes 'res' and 'error' label.
*/
@@ -726,12 +802,15 @@ tcl_RepStat(interp, objc, objv, dbenv)
MAKE_STAT_LIST("Election generation number", sp->st_election_gen);
MAKE_STAT_LSN("Election max LSN", &sp->st_election_lsn);
MAKE_STAT_LIST("Election sites", sp->st_election_nsites);
- MAKE_STAT_LIST("Election votes", sp->st_election_nvotes);
+ MAKE_STAT_LIST("Election nvotes", sp->st_election_nvotes);
MAKE_STAT_LIST("Election priority", sp->st_election_priority);
MAKE_STAT_LIST("Election tiebreaker", sp->st_election_tiebreaker);
MAKE_STAT_LIST("Election votes", sp->st_election_votes);
MAKE_STAT_LIST("Election seconds", sp->st_election_sec);
MAKE_STAT_LIST("Election usecs", sp->st_election_usec);
+ MAKE_STAT_LIST("Start-sync operations delayed",
+ sp->st_startsync_delayed);
+#endif
Tcl_SetObjResult(interp, res);
error:
@@ -879,7 +958,8 @@ tcl_RepMgr(interp, objc, objv, dbenv)
result = _GetUInt32(interp, objv[i++], &uintarg);
if (result == TCL_OK) {
_debug_check();
- ret = dbenv->rep_set_nsites(dbenv, uintarg);
+ ret = dbenv->
+ rep_set_nsites(dbenv, (int)uintarg);
}
break;
case RMGR_PRI:
@@ -947,8 +1027,6 @@ tcl_RepMgr(interp, objc, objv, dbenv)
start_flag = DB_REP_CLIENT;
else if (strcmp(arg, "elect") == 0)
start_flag = DB_REP_ELECTION;
- else if (strcmp(arg, "full_elect") == 0)
- start_flag = DB_REP_FULL_ELECTION;
else {
Tcl_AddErrorInfo(
interp, "start: illegal state");
@@ -1019,4 +1097,71 @@ tcl_RepMgr(interp, objc, objv, dbenv)
error:
return (result);
}
+
+/*
+ * tcl_RepMgrStat --
+ * Call DB_ENV->repmgr_stat().
+ *
+ * PUBLIC: int tcl_RepMgrStat
+ * PUBLIC: __P((Tcl_Interp *, int, Tcl_Obj * CONST *, DB_ENV *));
+ */
+int
+tcl_RepMgrStat(interp, objc, objv, dbenv)
+ Tcl_Interp *interp; /* Interpreter */
+ int objc; /* How many arguments? */
+ Tcl_Obj *CONST objv[]; /* The argument objects */
+ DB_ENV *dbenv;
+{
+ DB_REPMGR_STAT *sp;
+ Tcl_Obj *res;
+ u_int32_t flag;
+ int result, ret;
+ char *arg;
+
+ flag = 0;
+ result = TCL_OK;
+
+ if (objc > 3) {
+ Tcl_WrongNumArgs(interp, 2, objv, NULL);
+ return (TCL_ERROR);
+ }
+ if (objc == 3) {
+ arg = Tcl_GetStringFromObj(objv[2], NULL);
+ if (strcmp(arg, "-clear") == 0)
+ flag = DB_STAT_CLEAR;
+ else {
+ Tcl_SetResult(interp,
+ "db stat: unknown arg", TCL_STATIC);
+ return (TCL_ERROR);
+ }
+ }
+
+ _debug_check();
+ ret = dbenv->repmgr_stat(dbenv, &sp, flag);
+ result = _ReturnSetup(interp, ret, DB_RETOK_STD(ret),
+ "repmgr stat");
+ if (result == TCL_ERROR)
+ return (result);
+
+ /*
+ * Have our stats, now construct the name value
+ * list pairs and free up the memory.
+ */
+ res = Tcl_NewObj();
+#ifdef HAVE_STATISTICS
+ /*
+ * MAKE_STAT_* assumes 'res' and 'error' label.
+ */
+ MAKE_STAT_LIST("Acknowledgement failures", sp->st_perm_failed);
+ MAKE_STAT_LIST("Messages delayed", sp->st_msgs_queued);
+ MAKE_STAT_LIST("Messages discarded", sp->st_msgs_dropped);
+ MAKE_STAT_LIST("Connections dropped", sp->st_connection_drop);
+ MAKE_STAT_LIST("Failed re-connects", sp->st_connect_fail);
+#endif
+
+ Tcl_SetObjResult(interp, res);
+error:
+ __os_ufree(dbenv, sp);
+ return (result);
+}
#endif
diff --git a/db/tcl/tcl_seq.c b/db/tcl/tcl_seq.c
index 2fc43f7d6..a77a0d908 100644
--- a/db/tcl/tcl_seq.c
+++ b/db/tcl/tcl_seq.c
@@ -1,17 +1,16 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2004-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2004,2007 Oracle. All rights reserved.
*
- * $Id: tcl_seq.c,v 12.6 2006/08/24 14:46:33 bostic Exp $
+ * $Id: tcl_seq.c,v 12.9 2007/05/17 15:15:54 bostic Exp $
*/
#include "db_config.h"
#ifdef HAVE_64BIT_TYPES
#include "db_int.h"
-#ifndef NO_SYSTEM_INCLUDES
+#ifdef HAVE_SYSTEM_INCLUDE_FILES
#include <tcl.h>
#endif
#include "dbinc/tcl_db.h"
diff --git a/db/tcl/tcl_txn.c b/db/tcl/tcl_txn.c
index a3712172f..a1d918a7c 100644
--- a/db/tcl/tcl_txn.c
+++ b/db/tcl/tcl_txn.c
@@ -1,16 +1,15 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1999-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1999,2007 Oracle. All rights reserved.
*
- * $Id: tcl_txn.c,v 12.16 2006/09/11 14:53:42 bostic Exp $
+ * $Id: tcl_txn.c,v 12.22 2007/05/17 15:15:54 bostic Exp $
*/
#include "db_config.h"
#include "db_int.h"
-#ifndef NO_SYSTEM_INCLUDES
+#ifdef HAVE_SYSTEM_INCLUDE_FILES
#include <tcl.h>
#endif
#include "dbinc/tcl_db.h"
@@ -141,6 +140,7 @@ tcl_Txn(interp, objc, objv, envp, envip)
"-read_committed",
"-read_uncommitted",
"-txn_timeout",
+ "-txn_wait",
#endif
"-nosync",
"-nowait",
@@ -156,6 +156,7 @@ tcl_Txn(interp, objc, objv, envp, envip)
TXNREAD_COMMITTED,
TXNREAD_UNCOMMITTED,
TXNTIMEOUT,
+ TXNWAIT,
#endif
TXNNOSYNC,
TXNNOWAIT,
@@ -217,6 +218,9 @@ get_timeout: if (i >= objc) {
case TXNREAD_UNCOMMITTED:
flag |= DB_READ_UNCOMMITTED;
break;
+ case TXNWAIT:
+ flag |= DB_TXN_WAIT;
+ break;
#endif
case TXNNOSYNC:
flag |= DB_TXN_NOSYNC;
@@ -405,6 +409,7 @@ tcl_TxnStat(interp, objc, objv, envp)
/*
* MAKE_STAT_LIST assumes 'res' and 'error' label.
*/
+#ifdef HAVE_STATISTICS
MAKE_STAT_LIST("Region size", sp->st_regsize);
MAKE_STAT_LSN("LSN of last checkpoint", &sp->st_last_ckp);
MAKE_STAT_LIST("Time of last checkpoint", sp->st_time_ckp);
@@ -435,6 +440,7 @@ tcl_TxnStat(interp, objc, objv, envp)
break;
}
}
+#endif
Tcl_SetObjResult(interp, res);
error:
__os_ufree(envp, sp);
diff --git a/db/tcl/tcl_util.c b/db/tcl/tcl_util.c
index 90935f27e..14304ec9f 100644
--- a/db/tcl/tcl_util.c
+++ b/db/tcl/tcl_util.c
@@ -1,16 +1,15 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1999-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1999,2007 Oracle. All rights reserved.
*
- * $Id: tcl_util.c,v 12.5 2006/08/24 14:46:33 bostic Exp $
+ * $Id: tcl_util.c,v 12.8 2007/05/17 15:15:54 bostic Exp $
*/
#include "db_config.h"
#include "db_int.h"
-#ifndef NO_SYSTEM_INCLUDES
+#ifdef HAVE_SYSTEM_INCLUDE_FILES
#include <tcl.h>
#endif
#include "dbinc/tcl_db.h"
diff --git a/db/test/README b/db/test/README
index 881cd7df9..2f4a90e1d 100644
--- a/db/test/README
+++ b/db/test/README
@@ -28,10 +28,9 @@ Each test starts with a section like the following:
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: README,v 12.3 2006/08/24 14:46:34 bostic Exp $
+# $Id: README,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# TEST test001
# TEST Small keys/data
diff --git a/db/test/TESTS b/db/test/TESTS
index e2331cb6c..b15f702d6 100644
--- a/db/test/TESTS
+++ b/db/test/TESTS
@@ -2,24 +2,22 @@
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
-MVCC and cursor adjustment.
- Set up a -snapshot cursor and position it in the middle
- of a database.
- Write to the database, both before and after the cursor,
- and verify that it stays on the same position.
-
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
-MVCC and databases that turn multi-version on and off.
+backup
+ Test of hotbackup functionality.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
-Test basic functionality: a snapshot transaction started
- before a regular transaction's put can't see the modification.
- A snapshot transaction started after the put can see it.
+ Do all the of the following tests with and without
+ the -c (checkpoint) option. Make sure that -c and
+ -d (data_dir) are not allowed together.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
-Test what happens if a txn_ckp record falls into a
- different log file than the DBREG_CKP records generated
- by the same checkpoint.
+ (1) Test that plain and simple hotbackup works.
+ (2) Test with -data_dir (-d).
+ (3) Test updating an existing hot backup (-u).
+ (4) Test with absolute path.
+ (5) Test with DB_CONFIG (-D), setting log_dir (-l)
+ and data_dir (-d).
+ (6) DB_CONFIG and update.
+ (7) Repeat hot backup (non-update) with DB_CONFIG and
+ existing directories.
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
bigfile001
@@ -337,6 +335,12 @@ log007
Test db_printlog with in-memory logs.
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+log008
+ Test what happens if a txn_ckp record falls into a
+ different log file than the DBREG_CKP records generated
+ by the same checkpoint.
+
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
log009
Test of logging and getting log file version information.
Each time we cross a log file boundary verify we can
@@ -811,14 +815,15 @@ rep033
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep034
- Test of client startup synchronization.
+ Test of STARTUPDONE notification.
- One master, two clients.
- Run rep_test.
- Close one client and change master to other client.
- Reopen closed client - enter startup.
- Run rep_test and we should see live messages and startup complete.
- Run the test with/without client-to-client synchronization.
+ STARTUPDONE can now be recognized without the need for new "live" log
+ records from the master (under favorable conditions). The response to
+ the ALL_REQ at the end of synchronization includes an end-of-log marker
+ that now triggers it. However, the message containing that end marker
+ could get lost, so live log records still serve as a back-up mechanism.
+ The end marker may also be set under c2c sync, but only if the serving
+ client has itself achieved STARTUPDONE.
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep035
@@ -862,17 +867,20 @@ rep038
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rep039
- Test of internal initialization and master changes.
+ Test of interrupted internal initialization changes. The
+ interruption is due to a changed master, or the client crashing,
+ or both.
One master, two clients.
Generate several log files. Remove old master log files.
- Delete client files and restart client.
- While initialization is happening, change masters.
+ Restart client, optionally having "cleaned" client env dir. Either
+ way, this has the effect of forcing an internal init.
+ Interrupt the internal init.
Vary the number of times we process messages to make sure
- we change masters at varying stages of the first internal
+ the interruption occurs at varying stages of the first internal
initialization.
- Run for btree only because of the number of permutations.
+ Run for btree and queue only because of the number of permutations.
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
@@ -1179,6 +1187,136 @@ rep066
commit will fail).
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+rep067
+ Replication election test with large timeouts.
+
+ Test replication elections among clients with widely varying
+ timeouts. This test is used to simulate a customer that
+ wants to force full participation in an election, but only
+ if all sites are present (i.e. if all sites are restarted
+ together). If any site has already been part of the group,
+ then we want to be able to elect a master based on majority.
+ Using varied timeouts, we can force full participation if
+ all sites are present with "long_timeout" amount of time and
+ then revert to majority.
+
+ A long_timeout would be several minutes whereas a normal
+ short timeout would be a few seconds.
+
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+rep068
+ Verify replication of dbreg operations does not hang clients.
+ In a simple replication group, create a database with very
+ little data. With DB_TXN_NOSYNC the database can be created
+ at the client even though the log is not flushed. If we crash
+ and restart, the application of the log starts over again, even
+ though the database is still there. The application can open
+ the database before replication tries to re-apply the create.
+ This causes a hang as replication waits to be able to get a
+ handle lock.
+
+ Run for btree only because access method shouldn't matter.
+
+
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+rep069
+ Test of internal initialization and elections.
+
+ If a client is in a recovery mode of any kind, it
+ participates in elections at priority 0 so it can
+ never be elected master.
+
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+rep070
+ Test of startup_done condition with idle master.
+
+ Join a client to an existing master, and verify that
+ the client detects startup_done even if the master
+ does not execute any new transactions.
+
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+rep071
+ Test of multiple simultaneous client env handles and
+ upgrading/downgrading. Tests use of temp db handle
+ internally.
+
+ Open a master and 2 handles to the same client env.
+ Run rep_test.
+ Close master and upgrade client to master using one env handle.
+ Run rep_test again, and then downgrade back to client.
+
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+rep072
+ Verify that internal init does not leak resources from
+ the locking subsystem.
+
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+rep073
+
+ Test of allowing clients to create and update their own scratch
+ databases within the environment. Doing so requires the use
+ use of the DB_TXN_NOT_DURABLE flag for those databases.
+
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+rep074
+ Verify replication withstands send errors processing requests.
+
+ Run for btree only because access method shouldn't matter.
+
+
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+rep075
+ Replication and prepared transactions.
+ Test having outstanding prepared transactions and simulating
+ crashing or upgrading or downgrading sites.
+
+
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+rep076
+ Replication elections - what happens if elected client
+ does not become master?
+
+ Set up a master and 3 clients. Take down master, run election.
+ The elected client will ignore the fact that it's been elected,
+ so we still have 2 clients.
+
+ Run another election, a regular election that allows the winner
+ to become master, and make sure it goes okay. We do this both
+ for the client that ignored its election and for the other client.
+
+ This simulates what would happen if, say, we had a temporary
+ network partition and lost the winner.
+
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+rep077
+
+ Replication, recovery and applying log records immediately.
+ Master and 1 client. Start up both sites.
+ Close client and run rep_test on the master so that the
+ log record is the same LSN the client would be expecting.
+ Reopen client with recovery and verify the client does not
+ try to apply that "expected" record before it synchronizes
+ with the master.
+
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+rep078
+
+ Replication and basic lease test.
+ Set leases on master and 2 clients.
+ Do a lease operation and process to all clients.
+ Read with lease on master. Do another lease operation
+ and don't process on any client. Try to read with
+ on the master and verify it fails. Process the messages
+ to the clients and retry the read.
+
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+repmgr001
+ Check repmgr stats.
+
+ Run for btree only because access method shouldn't matter.
+
+
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
rpc001
Test RPC server timeouts for cursor, txn and env handles.
@@ -2270,12 +2408,16 @@ test092
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test093
- Test using set_bt_compare.
+ Test set_bt_compare (btree key comparison function) and
+ set_h_compare (hash key comparison function).
- Use the first 10,000 entries from the dictionary.
- Insert each with self as key and data; retrieve each.
- After all are entered, retrieve all; compare output to original.
- Close file, reopen, do retrieve and re-verify.
+ Open a database with a comparison function specified,
+ populate, and close, saving a list with that key order as
+ we do so. Reopen and read in the keys, saving in another
+ list; the keys should be in the order specified by the
+ comparison function. Sort the original saved list of keys
+ using the comparison function, and verify that it matches
+ the keys as read out of the database.
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test094
@@ -2480,14 +2622,26 @@ test119
test120
Test of multi-version concurrency control.
+ Test basic functionality: a snapshot transaction started
+ before a regular transaction's put can't see the modification.
+ A snapshot transaction started after the put can see it.
+
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test121
Tests of multi-version concurrency control.
+ MVCC and cursor adjustment.
+ Set up a -snapshot cursor and position it in the middle
+ of a database.
+ Write to the database, both before and after the cursor,
+ and verify that it stays on the same position.
+
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
test122
Tests of multi-version concurrency control.
+ MVCC and databases that turn multi-version on and off.
+
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
txn001
Begin, commit, abort testing.
@@ -2540,3 +2694,21 @@ txn013
Test of txns used in the wrong environment.
Set up two envs. Start a txn in one env, and attempt to use it
in the other env. Verify we get the appropriate error message.
+
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+txn014
+ Test of parent and child txns working on the same database.
+ A txn that will become a parent create a database.
+ A txn that will not become a parent creates another database.
+ Start a child txn of the 1st txn.
+ Verify that the parent txn is disabled while child is open.
+ 1. Child reads contents with child handle (should succeed).
+ 2. Child reads contents with parent handle (should succeed).
+ Verify that the non-parent txn can read from its database,
+ and that the child txn cannot.
+ Return to the child txn.
+ 3. Child writes with child handle (should succeed).
+ 4. Child writes with parent handle (should succeed).
+
+ Commit the child, verify that the parent can write again.
+ Check contents of database with a second child.
diff --git a/db/test/archive.tcl b/db/test/archive.tcl
index d3583d05a..4b3b034c9 100644
--- a/db/test/archive.tcl
+++ b/db/test/archive.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: archive.tcl,v 12.3 2006/08/24 14:46:34 bostic Exp $
+# $Id: archive.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# Options are:
# -checkrec <checkpoint frequency"
diff --git a/db/test/backup.tcl b/db/test/backup.tcl
new file mode 100644
index 000000000..c1674382f
--- /dev/null
+++ b/db/test/backup.tcl
@@ -0,0 +1,225 @@
+# See the file LICENSE for redistribution information.
+#
+# Copyright (c) 2007 Oracle. All rights reserved.
+#
+# $Id: backup.tcl,v 1.4 2007/06/11 19:20:09 carol Exp $
+#
+# TEST backup
+# TEST Test of hotbackup functionality.
+# TEST
+# TEST Do all the of the following tests with and without
+# TEST the -c (checkpoint) option. Make sure that -c and
+# TEST -d (data_dir) are not allowed together.
+# TEST
+# TEST (1) Test that plain and simple hotbackup works.
+# TEST (2) Test with -data_dir (-d).
+# TEST (3) Test updating an existing hot backup (-u).
+# TEST (4) Test with absolute path.
+# TEST (5) Test with DB_CONFIG (-D), setting log_dir (-l)
+# TEST and data_dir (-d).
+# TEST (6) DB_CONFIG and update.
+# TEST (7) Repeat hot backup (non-update) with DB_CONFIG and
+# TEST existing directories.
+
+proc backup { {nentries 1000} } {
+ source ./include.tcl
+ global util_path
+
+ set omethod "-btree"
+ set testfile "foo.db"
+ set backupdir "backup"
+
+ # Set up small logs so we quickly create more than one.
+ set log_size 20000
+ set env_flags " -create -txn -home $testdir -log_max $log_size"
+ set db_flags " -create $omethod -auto_commit $testfile "
+
+ foreach option { checkpoint nocheckpoint } {
+ if { $option == "checkpoint" } {
+ set c "c"
+ set msg "with checkpoint"
+ } else {
+ set c ""
+ set msg "without checkpoint"
+ }
+ puts "Backuptest $msg."
+
+ env_cleanup $testdir
+ env_cleanup $backupdir
+
+ set env [eval {berkdb_env} $env_flags]
+ set db [eval {berkdb_open} -env $env $db_flags]
+ set txn [$env txn]
+ populate $db $omethod $txn $nentries 0 0
+ $txn commit
+
+ # Backup directory is empty before hot backup.
+ set files [glob -nocomplain $backupdir/*]
+ error_check_good no_files [llength $files] 0
+
+ puts "\tBackuptest.a: Hot backup to directory $backupdir."
+ if {[catch { eval exec $util_path/db_hotbackup\
+ -${c}vh $testdir -b $backupdir } res ] } {
+ error "FAIL: $res"
+ }
+
+ set logfiles [glob $backupdir/log*]
+ error_check_bad found_logs [llength $logfiles] 0
+ error_check_good found_db [file exists $backupdir/$testfile] 1
+
+ error_check_good db_close [$db close] 0
+ error_check_good env_close [$env close] 0
+ env_cleanup $testdir
+
+ puts "\tBackuptest.b: Hot backup with data_dir."
+ file mkdir $testdir/data1
+ error_check_good db_data_dir\
+ [file exists $testdir/data1/$testfile] 0
+
+ # Create a new env with data_dir.
+ set env [eval {berkdb_env_noerr} $env_flags -data_dir data1]
+ set db [eval {berkdb_open} -env $env $db_flags]
+ set txn [$env txn]
+ populate $db $omethod $txn $nentries 0 0
+ $txn commit
+
+ # Check that data went into data_dir.
+ error_check_good db_data_dir\
+ [file exists $testdir/data1/$testfile] 1
+
+ # You may not specify both -d (data_dir) and -c (checkpoint).
+ set msg2 "cannot specify -d and -c"
+ if { $option == "checkpoint" } {
+ catch {eval exec $util_path/db_hotbackup\
+ -${c}vh $testdir -b $backupdir\
+ -d $testdir/data1} res
+ error_check_good c_and_d [is_substr $res $msg2] 1
+ } else {
+ if {[catch {eval exec $util_path/db_hotbackup\
+ -${c}vh $testdir -b $backupdir\
+ -d $testdir/data1} res] } {
+ error "FAIL: $res"
+ }
+ # Check that logs and db are in backupdir.
+ error_check_good db_backup\
+ [file exists $backupdir/$testfile] 1
+ set logfiles [glob $backupdir/log*]
+ error_check_bad logs_backed_up [llength $logfiles] 0
+ }
+
+ # Add more data and try the "update" flag.
+ puts "\tBackuptest.c: Update existing hot backup."
+ set txn [$env txn]
+ populate $db $omethod $txn [expr $nentries * 2] 0 0
+ $txn commit
+
+ if { $option == "checkpoint" } {
+ catch {eval exec $util_path/db_hotbackup\
+ -${c}vuh $testdir -b backup -d $testdir/data1} res
+ error_check_good c_and_d [is_substr $res $msg2] 1
+ } else {
+ if {[catch {eval exec $util_path/db_hotbackup\
+ -${c}vuh $testdir -b backup\
+ -d $testdir/data1} res] } {
+ error "FAIL: $res"
+ }
+ # There should be more log files now.
+ set newlogfiles [glob $backupdir/log*]
+ error_check_bad more_logs $newlogfiles $logfiles
+ }
+
+ puts "\tBackuptest.d: Hot backup with full path."
+ set fullpath [pwd]
+ if { $option == "checkpoint" } {
+ catch {eval exec $util_path/db_hotbackup\
+ -${c}vh $testdir -b backup\
+ -d $fullpath/$testdir/data1} res
+ error_check_good c_and_d [is_substr $res $msg2] 1
+ } else {
+ if {[catch {eval exec $util_path/db_hotbackup\
+ -${c}vh $testdir -b backup\
+ -d $fullpath/$testdir/data1} res] } {
+ error "FAIL: $res"
+ }
+ }
+
+ error_check_good db_close [$db close] 0
+ error_check_good env_close [$env close] 0
+ env_cleanup $testdir
+ env_cleanup $backupdir
+
+ puts "\tBackuptest.e: Hot backup with DB_CONFIG."
+ backuptest_makeconfig
+
+ set env [eval {berkdb_env_noerr} $env_flags]
+ set db [eval {berkdb_open} -env $env $db_flags]
+ set txn [$env txn]
+ populate $db $omethod $txn $nentries 0 0
+ $txn commit
+
+ if { $option == "checkpoint" } {
+ catch {eval exec $util_path/db_hotbackup\
+ -${c}vh $testdir -b $backupdir -l $testdir/logs\
+ -d $testdir/data1} res
+ error_check_good c_and_d [is_substr $res $msg2] 1
+ } else {
+ if {[catch {eval exec $util_path/db_hotbackup\
+ -${c}vh $testdir -b $backupdir -l $testdir/logs\
+ -d $testdir/data1} res] } {
+ error "FAIL: $res"
+ }
+ # Check that logs and db are in backupdir.
+ error_check_good db_backup\
+ [file exists $backupdir/$testfile] 1
+ set logfiles [glob $backupdir/log*]
+ error_check_bad logs_backed_up [llength $logfiles] 0
+ }
+
+ set txn [$env txn]
+ populate $db $omethod $txn [expr $nentries * 2] 0 0
+ $txn commit
+
+ puts "\tBackuptest.f:\
+ Hot backup update with DB_CONFIG."
+ if { $option == "checkpoint" } {
+ catch {eval exec $util_path/db_hotbackup\
+ -${c}vuh $testdir -b backup -l $testdir/logs\
+ -d $testdir/data1} res
+ error_check_good c_and_d [is_substr $res $msg2] 1
+ } else {
+ if {[catch {eval exec $util_path/db_hotbackup\
+ -${c}vuh $testdir -b backup -l $testdir/logs\
+ -d $testdir/data1} res] } {
+ error "FAIL: $res"
+ }
+ # There should be more log files now.
+ set newlogfiles [glob $backupdir/log*]
+ error_check_bad more_logs $newlogfiles $logfiles
+ }
+
+ # Repeat with directories already there to test cleaning.
+ # We are not doing an update this time.
+ puts "\tBackuptest.g:\
+ Hot backup with DB_CONFIG (non-update)."
+ if { [catch { eval exec $util_path/db_hotbackup\
+ -${c}vh $testdir -b $backupdir -D } res] } {
+ error "FAIL: $res"
+ }
+
+ error_check_good db_close [$db close] 0
+ error_check_good env_close [$env close] 0
+ }
+}
+
+proc backuptest_makeconfig { } {
+ source ./include.tcl
+
+ file mkdir $testdir/logs
+ file mkdir $testdir/data1
+
+ set cid [open $testdir/DB_CONFIG w]
+ puts $cid "set_lg_dir logs"
+ puts $cid "set_data_dir data1"
+ close $cid
+}
+
diff --git a/db/test/bigfile.tcl b/db/test/bigfile.tcl
deleted file mode 100644
index 0ffddd21e..000000000
--- a/db/test/bigfile.tcl
+++ /dev/null
@@ -1,84 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 2001
-# Sleepycat Software. All rights reserved.
-#
-# Id: bigfile.tcl,v 11.1 2001/05/03 17:26:19 krinsky Exp
-#
-# Big file test.
-# Create a database greater than 4 GB in size. Close, verify. Grow
-# the database somewhat. Close, reverify. Lather, rinse, repeat.
-# Since it will not work on all systems, this test is not run by default.
-proc bigfile { method \
- { itemsize 4096 } { nitems 1048576 } { growby 5000 } { growtms 2 } args } {
- source ./include.tcl
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- puts "Bigfile: $method ($args) $nitems * $itemsize bytes of data"
-
- env_cleanup $testdir
-
- # Create the database. Use 64K pages; we want a good fill
- # factor, and page size doesn't matter much. Use a 50MB
- # cache; that should be manageable, and will help
- # performance.
- set dbname TESTDIR/big.db
-
- set db [eval {berkdb_open -create} {-pagesize 65536 \
- -cachesize {0 50000000 0}} $omethod $args $dbname]
- error_check_good db_open [is_valid_db $db] TRUE
-
- puts -nonewline "\tBigfile.a: Creating database...0%..."
- flush stdout
-
- set data [string repeat z $itemsize]
-
- set more_than_ten_already 0
- for { set i 0 } { $i < $nitems } { incr i } {
- set key key[format %08u $i]
-
- error_check_good db_put($i) [$db put $key $data] 0
-
- if { $i % 5000 == 0 } {
- set pct [expr 100 * $i / $nitems]
- puts -nonewline "\b\b\b\b\b"
- if { $pct >= 10 } {
- if { $more_than_ten_already } {
- puts -nonewline "\b"
- } else {
- set more_than_ten_already 1
- }
- }
-
- puts -nonewline "$pct%..."
- flush stdout
- }
- }
- puts "\b\b\b\b\b\b100%..."
- error_check_good db_close [$db close] 0
-
- puts "\tBigfile.b: Verifying database..."
- error_check_good verify \
- [verify_dir $testdir "\t\t" 0 0 1 50000000] 0
-
- puts "\tBigfile.c: Grow database $growtms times by $growby items"
-
- for { set j 0 } { $j < $growtms } { incr j } {
- set db [eval {berkdb_open} {-cachesize {0 50000000 0}} $dbname]
- error_check_good db_open [is_valid_db $db] TRUE
- puts -nonewline "\t\tBigfile.c.1: Adding $growby items..."
- flush stdout
- for { set i 0 } { $i < $growby } { incr i } {
- set key key[format %08u $i].$j
- error_check_good db_put($j.$i) [$db put $key $data] 0
- }
- error_check_good db_close [$db close] 0
- puts "done."
-
- puts "\t\tBigfile.c.2: Verifying database..."
- error_check_good verify($j) \
- [verify_dir $testdir "\t\t\t" 0 0 1 50000000] 0
- }
-}
diff --git a/db/test/bigfile001.tcl b/db/test/bigfile001.tcl
index 2d1d878ac..c457678fe 100644
--- a/db/test/bigfile001.tcl
+++ b/db/test/bigfile001.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2001-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2001,2007 Oracle. All rights reserved.
#
-# $Id: bigfile001.tcl,v 12.4 2006/08/24 14:46:34 bostic Exp $
+# $Id: bigfile001.tcl,v 12.6 2007/05/17 15:15:55 bostic Exp $
#
# TEST bigfile001
# TEST Create a database greater than 4 GB in size. Close, verify.
diff --git a/db/test/bigfile002.tcl b/db/test/bigfile002.tcl
index 7d3f8324a..b05d43d40 100644
--- a/db/test/bigfile002.tcl
+++ b/db/test/bigfile002.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2001-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2001,2007 Oracle. All rights reserved.
#
-# $Id: bigfile002.tcl,v 12.5 2006/08/24 14:46:34 bostic Exp $
+# $Id: bigfile002.tcl,v 12.7 2007/05/17 15:15:55 bostic Exp $
#
# TEST bigfile002
# TEST This one should be faster and not require so much disk space,
diff --git a/db/test/byteorder.tcl b/db/test/byteorder.tcl
index 7559a4798..cf1ae6a3d 100644
--- a/db/test/byteorder.tcl
+++ b/db/test/byteorder.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: byteorder.tcl,v 12.3 2006/08/24 14:46:34 bostic Exp $
+# $Id: byteorder.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# Byte Order Test
# Use existing tests and run with both byte orders.
diff --git a/db/test/conscript.tcl b/db/test/conscript.tcl
index 52b5bbacf..01fd227cf 100644
--- a/db/test/conscript.tcl
+++ b/db/test/conscript.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: conscript.tcl,v 12.3 2006/08/24 14:46:34 bostic Exp $
+# $Id: conscript.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# Script for DB_CONSUME test (test070.tcl).
# Usage: conscript dir file runtype nitems outputfile tnum args
diff --git a/db/test/dbm.tcl b/db/test/dbm.tcl
index 5ed41e346..07245a088 100644
--- a/db/test/dbm.tcl
+++ b/db/test/dbm.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: dbm.tcl,v 12.3 2006/08/24 14:46:34 bostic Exp $
+# $Id: dbm.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# TEST dbm
# TEST Historic DBM interface test. Use the first 1000 entries from the
diff --git a/db/test/dbscript.tcl b/db/test/dbscript.tcl
index 3388a5ad4..09a270f34 100644
--- a/db/test/dbscript.tcl
+++ b/db/test/dbscript.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: dbscript.tcl,v 12.3 2006/08/24 14:46:34 bostic Exp $
+# $Id: dbscript.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# Random db tester.
# Usage: dbscript file numops min_del max_add key_avg data_avgdups
diff --git a/db/test/ddoyscript.tcl b/db/test/ddoyscript.tcl
index 9f1d4b44e..7d769c72e 100644
--- a/db/test/ddoyscript.tcl
+++ b/db/test/ddoyscript.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: ddoyscript.tcl,v 12.3 2006/08/24 14:46:34 bostic Exp $
+# $Id: ddoyscript.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# Deadlock detector script tester.
# Usage: ddoyscript dir lockerid numprocs
diff --git a/db/test/ddscript.tcl b/db/test/ddscript.tcl
index 15772e89f..9cc05e607 100644
--- a/db/test/ddscript.tcl
+++ b/db/test/ddscript.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: ddscript.tcl,v 12.3 2006/08/24 14:46:34 bostic Exp $
+# $Id: ddscript.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# Deadlock detector script tester.
# Usage: ddscript dir test lockerid objid numprocs
diff --git a/db/test/dead001.tcl b/db/test/dead001.tcl
index 27c37dfc3..3f6a09cd5 100644
--- a/db/test/dead001.tcl
+++ b/db/test/dead001.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: dead001.tcl,v 12.5 2006/08/24 14:46:34 bostic Exp $
+# $Id: dead001.tcl,v 12.7 2007/05/17 15:15:55 bostic Exp $
#
# TEST dead001
# TEST Use two different configurations to test deadlock detection among a
diff --git a/db/test/dead002.tcl b/db/test/dead002.tcl
index d90c99cdc..98b78f862 100644
--- a/db/test/dead002.tcl
+++ b/db/test/dead002.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: dead002.tcl,v 12.4 2006/08/24 14:46:34 bostic Exp $
+# $Id: dead002.tcl,v 12.6 2007/05/17 15:15:55 bostic Exp $
#
# TEST dead002
# TEST Same test as dead001, but use "detect on every collision" instead
diff --git a/db/test/dead003.tcl b/db/test/dead003.tcl
index a50ab30ce..a864abdd5 100644
--- a/db/test/dead003.tcl
+++ b/db/test/dead003.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: dead003.tcl,v 12.3 2006/08/24 14:46:34 bostic Exp $
+# $Id: dead003.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# TEST dead003
# TEST
diff --git a/db/test/dead004.tcl b/db/test/dead004.tcl
index 1bc1bbeee..b174c56ee 100644
--- a/db/test/dead004.tcl
+++ b/db/test/dead004.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: dead004.tcl,v 12.3 2006/08/24 14:46:34 bostic Exp $
+# $Id: dead004.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# Deadlock Test 4.
# This test is designed to make sure that we handle youngest and oldest
diff --git a/db/test/dead005.tcl b/db/test/dead005.tcl
index fc3dea5a4..09dd1e694 100644
--- a/db/test/dead005.tcl
+++ b/db/test/dead005.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: dead005.tcl,v 12.4 2006/08/24 14:46:35 bostic Exp $
+# $Id: dead005.tcl,v 12.6 2007/05/17 15:15:55 bostic Exp $
#
# Deadlock Test 5.
# Test out the minlocks, maxlocks, and minwrites options
diff --git a/db/test/dead006.tcl b/db/test/dead006.tcl
index 12acf176f..0ff1fe6d8 100644
--- a/db/test/dead006.tcl
+++ b/db/test/dead006.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: dead006.tcl,v 12.3 2006/08/24 14:46:35 bostic Exp $
+# $Id: dead006.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# TEST dead006
# TEST use timeouts rather than the normal dd algorithm.
diff --git a/db/test/dead007.tcl b/db/test/dead007.tcl
index 23e3b8ce8..89e014d3c 100644
--- a/db/test/dead007.tcl
+++ b/db/test/dead007.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: dead007.tcl,v 12.3 2006/08/24 14:46:35 bostic Exp $
+# $Id: dead007.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# TEST dead007
# TEST Tests for locker and txn id wraparound.
diff --git a/db/test/env001.tcl b/db/test/env001.tcl
index 792a074bd..157958ce1 100644
--- a/db/test/env001.tcl
+++ b/db/test/env001.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: env001.tcl,v 12.5 2006/08/24 14:46:35 bostic Exp $
+# $Id: env001.tcl,v 12.7 2007/05/17 15:15:55 bostic Exp $
#
# TEST env001
# TEST Test of env remove interface (formerly env_remove).
diff --git a/db/test/env002.tcl b/db/test/env002.tcl
index fa16e6745..60eeb8762 100644
--- a/db/test/env002.tcl
+++ b/db/test/env002.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: env002.tcl,v 12.3 2006/08/24 14:46:35 bostic Exp $
+# $Id: env002.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# TEST env002
# TEST Test of DB_LOG_DIR and env name resolution.
diff --git a/db/test/env003.tcl b/db/test/env003.tcl
index c845f84db..06b7965c3 100644
--- a/db/test/env003.tcl
+++ b/db/test/env003.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: env003.tcl,v 12.3 2006/08/24 14:46:35 bostic Exp $
+# $Id: env003.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# TEST env003
# TEST Test DB_TMP_DIR and env name resolution
diff --git a/db/test/env004.tcl b/db/test/env004.tcl
index ab6a34ec1..bbfe92c5e 100644
--- a/db/test/env004.tcl
+++ b/db/test/env004.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: env004.tcl,v 12.3 2006/08/24 14:46:35 bostic Exp $
+# $Id: env004.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# TEST env004
# TEST Test multiple data directories. Do a bunch of different opens
diff --git a/db/test/env005.tcl b/db/test/env005.tcl
index 89efec925..b7ce9dffd 100644
--- a/db/test/env005.tcl
+++ b/db/test/env005.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: env005.tcl,v 12.3 2006/08/24 14:46:35 bostic Exp $
+# $Id: env005.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# TEST env005
# TEST Test that using subsystems without initializing them correctly
diff --git a/db/test/env006.tcl b/db/test/env006.tcl
index a30bb194a..280d35765 100644
--- a/db/test/env006.tcl
+++ b/db/test/env006.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: env006.tcl,v 12.3 2006/08/24 14:46:35 bostic Exp $
+# $Id: env006.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# TEST env006
# TEST Make sure that all the utilities exist and run.
diff --git a/db/test/env007.tcl b/db/test/env007.tcl
index 92fbbbd3b..18a872d88 100644
--- a/db/test/env007.tcl
+++ b/db/test/env007.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: env007.tcl,v 12.13 2006/09/12 18:19:08 carol Exp $
+# $Id: env007.tcl,v 12.16 2007/05/17 15:15:55 bostic Exp $
#
# TEST env007
# TEST Test DB_CONFIG config file options for berkdb env.
@@ -220,6 +219,8 @@ proc env007 { } {
{ "set_tx_max" "31" "get_tx_max" "31" }
{ "set_txn_timeout" "50" "get_timeout txn" "50" }
{ "set_verbose" "db_verb_deadlock" "get_verbose deadlock" "on" }
+ { "set_verbose" "db_verb_fileops" "get_verbose fileops" "on" }
+ { "set_verbose" "db_verb_fileops_all" "get_verbose fileops_all" "on" }
{ "set_verbose" "db_verb_recovery" "get_verbose recovery" "on" }
{ "set_verbose" "db_verb_register" "get_verbose register" "on" }
{ "set_verbose" "db_verb_replication" "get_verbose rep" "on" }
diff --git a/db/test/env008.tcl b/db/test/env008.tcl
index c34504771..1de20bc8a 100644
--- a/db/test/env008.tcl
+++ b/db/test/env008.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: env008.tcl,v 12.3 2006/08/24 14:46:35 bostic Exp $
+# $Id: env008.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# TEST env008
# TEST Test environments and subdirectories.
diff --git a/db/test/env009.tcl b/db/test/env009.tcl
index fb4898f89..b0f0a127a 100644
--- a/db/test/env009.tcl
+++ b/db/test/env009.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: env009.tcl,v 12.4 2006/09/12 18:22:37 carol Exp $
+# $Id: env009.tcl,v 12.6 2007/05/17 15:15:55 bostic Exp $
#
# TEST env009
# TEST Test calls to all the various stat functions. We have several
diff --git a/db/test/env010.tcl b/db/test/env010.tcl
index 5e6d7fe8b..5969eacf1 100644
--- a/db/test/env010.tcl
+++ b/db/test/env010.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: env010.tcl,v 12.3 2006/08/24 14:46:35 bostic Exp $
+# $Id: env010.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# TEST env010
# TEST Run recovery in an empty directory, and then make sure we can still
diff --git a/db/test/env011.tcl b/db/test/env011.tcl
index ed92e94bb..4ad04293a 100644
--- a/db/test/env011.tcl
+++ b/db/test/env011.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: env011.tcl,v 12.4 2006/08/24 14:46:35 bostic Exp $
+# $Id: env011.tcl,v 12.6 2007/05/17 15:15:55 bostic Exp $
#
# TEST env011
# TEST Run with region overwrite flag.
diff --git a/db/test/env012.tcl b/db/test/env012.tcl
index 4f40bd28b..bba65e6fc 100644
--- a/db/test/env012.tcl
+++ b/db/test/env012.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2004-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2004,2007 Oracle. All rights reserved.
#
-# $Id: env012.tcl,v 12.11 2006/09/18 19:43:26 carol Exp $
+# $Id: env012.tcl,v 12.17 2007/07/05 18:25:04 carol Exp $
#
# TEST env012
# TEST Test DB_REGISTER.
@@ -106,7 +105,7 @@ proc env012 { } {
puts "\tEnv$tnum.d: Second process cannot join without -recover\
after first process is killed."
env_cleanup $testdir
-
+
puts "\t\tEnv$tnum.d1: Start process 1."
set pids {}
set p1 [exec $tclsh_path $test_path/wrap.tcl envscript.tcl \
@@ -114,28 +113,28 @@ proc env012 { } {
$testdir $testfile PUT $key $data RECOVER 10 &]
lappend pids $p1
tclsleep 2
-
+
puts "\t\tEnv$tnum.d2: Kill process 1."
set pids [findprocessids $testdir $pids]
foreach pid $pids {
tclkill $pid
}
-
+
puts "\t\tEnv$tnum.d3: Start process 2."
set p2 [exec $tclsh_path $test_path/wrap.tcl envscript.tcl \
$testdir/env$tnum.log.p2 \
$testdir $testfile GET $key $data 0 0 &]
tclsleep 2
watch_procs $p2 1 120
-
+
# Check log files. Log p1 should be clean, but we
# expect DB_RUNRECOVERY in log p2.
logcheck $testdir/env$tnum.log.p1
logcheckfails $testdir/env$tnum.log.p2 DB_RUNRECOVERY
-
+
puts "\tEnv$tnum.e: Running registered process detects failure."
env_cleanup $testdir
-
+
puts "\t\tEnv$tnum.e1: Start process 1."
set pids {}
set p1 [exec $tclsh_path $test_path/wrap.tcl envscript.tcl \
@@ -143,29 +142,29 @@ proc env012 { } {
$testdir $testfile PUT $key $data RECOVER 10 &]
lappend pids $p1
tclsleep 2
-
+
# Identify child process to kill later.
set pids [findprocessids $testdir $pids]
-
+
puts "\t\tEnv$tnum.e2: Start process 2."
set p2 [exec $tclsh_path $test_path/wrap.tcl envscript.tcl \
$testdir/env$tnum.log.p2 \
$testdir $testfile LOOP $key $data 0 10 &]
-
+
puts "\t\tEnv$tnum.e3: Kill process 1."
foreach pid $pids {
tclkill $pid
}
-
+
puts "\t\tEnv$tnum.e4: Start process 3."
set p3 [exec $tclsh_path $test_path/wrap.tcl envscript.tcl \
$testdir/env$tnum.log.p3 \
$testdir $testfile GET $key $data RECOVER 0 &]
tclsleep 2
-
+
watch_procs $p2 1 120
watch_procs $p3 1 120
-
+
# Check log files. Logs p1 and p3 should be clean, but we
# expect DB_RUNRECOVERY in log p2.
logcheck $testdir/env$tnum.log.p1
@@ -209,7 +208,7 @@ proc env012 { } {
watch_procs $p3 1 120
watch_procs $p4 1 120
- # Check log files to verify that neither process returned DB_RUNRECOVERY.
+ # Check log files: neither process should have returned DB_RUNRECOVERY.
logcheck $testdir/env$tnum.log.p3
logcheck $testdir/env$tnum.log.p4
}
diff --git a/db/test/env013.tcl b/db/test/env013.tcl
index cc9eeedf4..e16fc3c7f 100644
--- a/db/test/env013.tcl
+++ b/db/test/env013.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2005-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2005,2007 Oracle. All rights reserved.
#
-# $Id: env013.tcl,v 1.8 2006/08/24 14:46:35 bostic Exp $
+# $Id: env013.tcl,v 1.10 2007/05/17 15:15:55 bostic Exp $
#
# TEST env013
# TEST Test of basic functionality of fileid_reset.
diff --git a/db/test/env014.tcl b/db/test/env014.tcl
index 90a6c2d63..a8e50b899 100644
--- a/db/test/env014.tcl
+++ b/db/test/env014.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2005-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2005,2007 Oracle. All rights reserved.
#
-# $Id: env014.tcl,v 12.4 2006/08/24 14:46:35 bostic Exp $
+# $Id: env014.tcl,v 12.6 2007/05/17 15:15:55 bostic Exp $
#
# TEST env014
# TEST
diff --git a/db/test/env015.tcl b/db/test/env015.tcl
index 2f741c8d2..6c6db750f 100644
--- a/db/test/env015.tcl
+++ b/db/test/env015.tcl
@@ -1,15 +1,13 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2006,2007 Oracle. All rights reserved.
#
-# $Id: env015.tcl,v 12.4 2006/09/13 13:26:05 mjc Exp $
+# $Id: env015.tcl,v 12.7 2007/05/17 15:15:55 bostic Exp $
#
# TEST env015
# TEST Rename the underlying directory of an env, make sure everything
# TEST still works. Test runs with regular named databases and with
# TEST in-memory named databases.
-
proc env015 { } {
source ./include.tcl
@@ -35,6 +33,11 @@ proc env015 { } {
error_check_good db_put [$db put $i $i] 0
}
+ # When the database is on disk, we have a file handle open
+ # during the attempt to rename the directory. As far as we
+ # can tell, Windows doesn't allow this (that is, Windows
+ # doesn't allow directories to be renamed when there is an
+ # open handle inside them).
puts "\tEnv015.b: Rename directory."
if { $is_windows_test } {
file mkdir $newdir
@@ -51,11 +54,12 @@ proc env015 { } {
}
puts "\tEnv015.d: Can't open database in old directory."
- catch {set db2 \
- [eval {berkdb_open} -env $env -btree $testdir/$testfile]} db2
+ catch {set db2 [eval \
+ {berkdb_open} -env $env -btree $testdir/$testfile]} db2
error_check_bad open_fails [is_valid_db $db2] TRUE
- puts "\tEnv015.e: Recreate directory with original name and use it."
+ puts \
+ "\tEnv015.e: Recreate directory with original name and use it."
file mkdir $testdir
set newenv [berkdb_env -create -mode 0644 -home $testdir]
error_check_good newenv [is_valid_env $env] TRUE
@@ -77,4 +81,3 @@ proc env015 { } {
fileremove -f $newdir
}
}
-
diff --git a/db/test/envscript.tcl b/db/test/envscript.tcl
index e865b797c..fbeb0764b 100644
--- a/db/test/envscript.tcl
+++ b/db/test/envscript.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2004-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2004,2007 Oracle. All rights reserved.
#
-# $Id: envscript.tcl,v 12.5 2006/08/24 14:46:35 bostic Exp $
+# $Id: envscript.tcl,v 12.7 2007/05/17 15:15:55 bostic Exp $
#
# Envscript -- for use with env012, DB_REGISTER test.
# Usage: envscript testdir testfile putget key data recover envclose wait
diff --git a/db/test/fop001.tcl b/db/test/fop001.tcl
index 61b5bc006..b03b6346f 100644
--- a/db/test/fop001.tcl
+++ b/db/test/fop001.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2000-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2000,2007 Oracle. All rights reserved.
#
-# $Id: fop001.tcl,v 12.6 2006/08/24 14:46:35 bostic Exp $
+# $Id: fop001.tcl,v 12.9 2007/06/01 21:00:58 carol Exp $
#
# TEST fop001.tcl
# TEST Test file system operations, combined in a transaction. [#7363]
@@ -91,90 +90,114 @@ proc fop001 { method { inmem 0 } args } {
puts "\tFop$tnum.$testid: $op1 ($names1), then $op2 ($names2)."
- # Create transactional environment.
- set env [berkdb_env -create -home $testdir -txn]
- error_check_good is_valid_env [is_valid_env $env] TRUE
-
- # Create two databases, dba and dbb.
- if { $inmem == 0 } {
- set dba [eval {berkdb_open -create} \
- $omethod $args -env $env -auto_commit a]
- } else {
- set dba [eval {berkdb_open -create} \
- $omethod $args -env $env -auto_commit { "" a }]
- }
- error_check_good dba_open [is_valid_db $dba] TRUE
- error_check_good dba_put [$dba put 1 a] 0
- error_check_good dba_close [$dba close] 0
-
- if { $inmem == 0 } {
- set dbb [eval {berkdb_open -create} \
- $omethod $args -env $env -auto_commit b]
- } else {
- set dbb [eval {berkdb_open -create} \
- $omethod $args -env $env -auto_commit { "" b }]
- }
- error_check_good dbb_open [is_valid_db $dbb] TRUE
- error_check_good dbb_put [$dbb put 1 b] 0
- error_check_good dbb_close [$dbb close] 0
-
- foreach end {abort commit} {
- # Start transaction
- set txn [$env txn]
-
- # Execute and check operation 1
- set result1 [$operator $omethod $op1 $names1 $txn $env $args]
- if { $res1 == 0 } {
- error_check_good op1_should_succeed $result1 $res1
+ # The variable 'when' describes when to resolve a txn --
+ # before or after closing any open databases.
+ foreach when { before after } {
+
+ # Create transactional environment.
+ set env [berkdb_env -create -home $testdir -txn]
+ error_check_good is_valid_env [is_valid_env $env] TRUE
+
+ # Create two databases, dba and dbb.
+ if { $inmem == 0 } {
+ set dba [eval {berkdb_open -create} $omethod \
+ $args -env $env -auto_commit a]
} else {
- set error [extract_error $result1]
- error_check_good op1_wrong_failure $error $res1
+ set dba [eval {berkdb_open -create} $omethod \
+ $args -env $env -auto_commit { "" a }]
}
-
- # Execute and check operation 2
- set result2 [$operator $omethod $op2 $names2 $txn $env $args]
- if { $res2 == 0 } {
- error_check_good op2_should_succeed $result2 $res2
+ error_check_good dba_open [is_valid_db $dba] TRUE
+ error_check_good dba_put [$dba put 1 a] 0
+ error_check_good dba_close [$dba close] 0
+
+ if { $inmem == 0 } {
+ set dbb [eval {berkdb_open -create} $omethod \
+ $args -env $env -auto_commit b]
} else {
- set error [extract_error $result2]
- error_check_good op2_wrong_failure $error $res2
+ set dbb [eval {berkdb_open -create} $omethod \
+ $args -env $env -auto_commit { "" b }]
}
-
- # End transaction
- error_check_good txn_$end [$txn $end] 0
-
- # If the txn was aborted, we still have the original two
- # databases.
- if { $end == "abort" } {
- if { $inmem == 1 } {
- error_check_good a_exists \
- [inmem_exists $testdir a] 1
- error_check_good b_exists \
- [inmem_exists $testdir b] 1
+ error_check_good dbb_open [is_valid_db $dbb] TRUE
+ error_check_good dbb_put [$dbb put 1 b] 0
+ error_check_good dbb_close [$dbb close] 0
+
+ # The variable 'end' describes how to resolve the txn.
+ # We run the 'abort' first because that leaves the env
+ # properly set up for the 'commit' test.
+ foreach end {abort commit} {
+
+ puts "\t\tFop$tnum.$testid:\
+ $end $when closing database."
+
+ # Start transaction
+ set txn [$env txn]
+
+ # Execute and check operation 1
+ set result1 [$operator \
+ $omethod $op1 $names1 $txn $env $args]
+ if { $res1 == 0 } {
+ error_check_good \
+ op1_should_succeed $result1 $res1
} else {
- error_check_good a_exists \
- [file exists $testdir/a] 1
- error_check_good b_exists \
- [file exists $testdir/b] 1
+ set error [extract_error $result1]
+ error_check_good \
+ op1_wrong_failure $error $res1
}
+
+ # Execute and check operation 2
+ set result2 [$operator \
+ $omethod $op2 $names2 $txn $env $args]
+ if { $res2 == 0 } {
+ error_check_good \
+ op2_should_succeed $result2 $res2
+ } else {
+ set error [extract_error $result2]
+ error_check_good \
+ op2_wrong_failure $error $res2
+ }
+
+ if { $when == "before" } {
+ error_check_good txn_$end [$txn $end] 0
+
+ # If the txn was aborted, we still
+ # have the original two databases.
+ if { $end == "abort" } {
+ database_exists \
+ $inmem $testdir a
+ database_exists \
+ $inmem $testdir b
+ }
+ close_db_handles
+ } else {
+ close_db_handles
+ error_check_good txn_$end [$txn $end] 0
+
+ if { $end == "abort" } {
+ database_exists \
+ $inmem $testdir a
+ database_exists \
+ $inmem $testdir b
+ }
+ }
}
+
+ # Clean up for next case
+ error_check_good env_close [$env close] 0
+ error_check_good envremove \
+ [berkdb envremove -home $testdir] 0
+ env_cleanup $testdir
}
-
- # Close any open db handles. We had to wait until now
- # because you can't close a database inside a transaction.
- set handles [berkdb handles]
- foreach handle $handles {
- if {[string range $handle 0 1] == "db" } {
- error_check_good db_close [$handle close] 0
- }
- }
- # Clean up for next case
- error_check_good env_close [$env close] 0
- error_check_good envremove [berkdb envremove -home $testdir] 0
- env_cleanup $testdir
}
}
+proc database_exists { inmem testdir name } {
+ if { $inmem == 1 } {
+ error_check_good db_exists [inmem_exists $testdir $name] 1
+ } else {
+ error_check_good db_exists [file exists $testdir/$name] 1
+ }
+}
+
# This is a real hack. We need to figure out if an in-memory named
# file exists. In a perfect world we could use mpool stat. Unfortunately,
# mpool_stat returns files that have deadfile set and we need to not consider
diff --git a/db/test/fop002.tcl b/db/test/fop002.tcl
index ec1921328..a187990d8 100644
--- a/db/test/fop002.tcl
+++ b/db/test/fop002.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2000-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2000,2007 Oracle. All rights reserved.
#
-# $Id: fop002.tcl,v 12.3 2006/08/24 14:46:35 bostic Exp $
+# $Id: fop002.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# TEST fop002.tcl
# TEST Test file system operations in the presence of bad permissions.
diff --git a/db/test/fop003.tcl b/db/test/fop003.tcl
index 9f41148c6..abc5624ef 100644
--- a/db/test/fop003.tcl
+++ b/db/test/fop003.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2003-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2003,2007 Oracle. All rights reserved.
#
-# $Id: fop003.tcl,v 12.3 2006/08/24 14:46:35 bostic Exp $
+# $Id: fop003.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# TEST fop003
# TEST
diff --git a/db/test/fop004.tcl b/db/test/fop004.tcl
index f40ceea37..8727a69fd 100644
--- a/db/test/fop004.tcl
+++ b/db/test/fop004.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2000-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2000,2007 Oracle. All rights reserved.
#
-# $Id: fop004.tcl,v 12.3 2006/08/24 14:46:35 bostic Exp $
+# $Id: fop004.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# TEST fop004
# TEST Test of DB->rename(). (formerly test075)
diff --git a/db/test/fop005.tcl b/db/test/fop005.tcl
index d3227cc58..9e677e4da 100644
--- a/db/test/fop005.tcl
+++ b/db/test/fop005.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2000-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2000,2007 Oracle. All rights reserved.
#
-# $Id: fop005.tcl,v 12.3 2006/08/24 14:46:35 bostic Exp $
+# $Id: fop005.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# TEST fop005
# TEST Test of DB->remove()
diff --git a/db/test/fop006.tcl b/db/test/fop006.tcl
index ec1cab1c7..9056ab46a 100644
--- a/db/test/fop006.tcl
+++ b/db/test/fop006.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2003-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2003,2007 Oracle. All rights reserved.
#
-# $Id: fop006.tcl,v 12.9 2006/08/24 14:46:35 bostic Exp $
+# $Id: fop006.tcl,v 12.13 2007/05/17 18:17:21 bostic Exp $
#
# TEST fop006
# TEST Test file system operations in multiple simultaneous
@@ -82,6 +81,12 @@ proc fop006 { method { inmem 0 } args } {
# incr i
# }
+ # To run a particular case, add the case in this format and
+ # uncomment.
+# set cases {
+# {{open_excl {foo} 0 abort} {rename {b foo} 0}}
+# }
+
set testid 0
# Run all the cases
diff --git a/db/test/fop007.tcl b/db/test/fop007.tcl
index 5852f36b6..4a12cb077 100644
--- a/db/test/fop007.tcl
+++ b/db/test/fop007.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2005-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2005,2007 Oracle. All rights reserved.
#
-# $Id: fop007.tcl,v 12.4 2006/08/24 14:46:35 bostic Exp $
+# $Id: fop007.tcl,v 12.6 2007/05/17 15:15:55 bostic Exp $
#
# TEST fop007
# TEST Test file system operations on named in-memory databases.
diff --git a/db/test/fop008.tcl b/db/test/fop008.tcl
index 9f452c385..e574af035 100644
--- a/db/test/fop008.tcl
+++ b/db/test/fop008.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2005-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2005,2007 Oracle. All rights reserved.
#
-# $Id: fop008.tcl,v 12.3 2006/08/24 14:46:35 bostic Exp $
+# $Id: fop008.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# TEST fop008
# TEST Test file system operations on named in-memory databases.
diff --git a/db/test/fopscript.tcl b/db/test/fopscript.tcl
index f5280c00f..0e36eab1b 100644
--- a/db/test/fopscript.tcl
+++ b/db/test/fopscript.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2003-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2003,2007 Oracle. All rights reserved.
#
-# $Id: fopscript.tcl,v 12.4 2006/08/24 14:46:35 bostic Exp $
+# $Id: fopscript.tcl,v 12.6 2007/05/17 15:15:55 bostic Exp $
#
# Fop006 script - test of fileops in multiple transactions
# Usage: fopscript
diff --git a/db/test/foputils.tcl b/db/test/foputils.tcl
index 2c3bac707..5aab6129b 100644
--- a/db/test/foputils.tcl
+++ b/db/test/foputils.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2003-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2003,2007 Oracle. All rights reserved.
#
-# $Id: foputils.tcl,v 12.5 2006/08/24 14:46:35 bostic Exp $
+# $Id: foputils.tcl,v 12.7 2007/05/17 15:15:55 bostic Exp $
#
proc do_op {omethod op names txn env {largs ""}} {
switch -exact $op {
diff --git a/db/test/hsearch.tcl b/db/test/hsearch.tcl
index e130e8b72..9f4008a72 100644
--- a/db/test/hsearch.tcl
+++ b/db/test/hsearch.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: hsearch.tcl,v 12.3 2006/08/24 14:46:35 bostic Exp $
+# $Id: hsearch.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# Historic Hsearch interface test.
# Use the first 1000 entries from the dictionary.
diff --git a/db/test/join.tcl b/db/test/join.tcl
index 3e53af4b5..2c57a5c1c 100644
--- a/db/test/join.tcl
+++ b/db/test/join.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: join.tcl,v 12.3 2006/08/24 14:46:35 bostic Exp $
+# $Id: join.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# TEST jointest
# TEST Test duplicate assisted joins. Executes 1, 2, 3 and 4-way joins
diff --git a/db/test/lock001.tcl b/db/test/lock001.tcl
index d478b3b67..440dd0ad3 100644
--- a/db/test/lock001.tcl
+++ b/db/test/lock001.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: lock001.tcl,v 12.4 2006/08/24 14:46:35 bostic Exp $
+# $Id: lock001.tcl,v 12.6 2007/05/17 15:15:55 bostic Exp $
#
# TEST lock001
diff --git a/db/test/lock002.tcl b/db/test/lock002.tcl
index 0cbbf988a..9cd4c43c5 100644
--- a/db/test/lock002.tcl
+++ b/db/test/lock002.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: lock002.tcl,v 12.5 2006/08/24 14:46:36 bostic Exp $
+# $Id: lock002.tcl,v 12.7 2007/05/17 15:15:55 bostic Exp $
#
# TEST lock002
# TEST Exercise basic multi-process aspects of lock.
diff --git a/db/test/lock003.tcl b/db/test/lock003.tcl
index 5c2418324..86aac4838 100644
--- a/db/test/lock003.tcl
+++ b/db/test/lock003.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: lock003.tcl,v 12.3 2006/08/24 14:46:36 bostic Exp $
+# $Id: lock003.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# TEST lock003
# TEST Exercise multi-process aspects of lock. Generate a bunch of parallel
diff --git a/db/test/lock004.tcl b/db/test/lock004.tcl
index 72268a729..4f570f5d7 100644
--- a/db/test/lock004.tcl
+++ b/db/test/lock004.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: lock004.tcl,v 12.3 2006/08/24 14:46:36 bostic Exp $
+# $Id: lock004.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# TEST lock004
# TEST Test locker ids wraping around.
diff --git a/db/test/lock005.tcl b/db/test/lock005.tcl
index ff870c2cb..e498a0921 100644
--- a/db/test/lock005.tcl
+++ b/db/test/lock005.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: lock005.tcl,v 12.3 2006/08/24 14:46:36 bostic Exp $
+# $Id: lock005.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# TEST lock005
# TEST Check that page locks are being released properly.
diff --git a/db/test/lock006.tcl b/db/test/lock006.tcl
index 21a898dbd..431045a4e 100644
--- a/db/test/lock006.tcl
+++ b/db/test/lock006.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2003-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2003,2007 Oracle. All rights reserved.
#
-# $Id: lock006.tcl,v 12.3 2006/08/24 14:46:36 bostic Exp $
+# $Id: lock006.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# TEST lock006
# TEST Test lock_vec interface. We do all the same things that
diff --git a/db/test/lockscript.tcl b/db/test/lockscript.tcl
index dc0451700..162ab5a3d 100644
--- a/db/test/lockscript.tcl
+++ b/db/test/lockscript.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: lockscript.tcl,v 12.3 2006/08/24 14:46:36 bostic Exp $
+# $Id: lockscript.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# Random lock tester.
# Usage: lockscript dir numiters numobjs sleepint degree readratio
diff --git a/db/test/log.tcl b/db/test/log.tcl
deleted file mode 100644
index c3802d0f9..000000000
--- a/db/test/log.tcl
+++ /dev/null
@@ -1,337 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996, 1997, 1998, 1999, 2000
-# Sleepycat Software. All rights reserved.
-#
-# $Id: log.tcl,v 11.17 2000/11/30 20:09:19 dda Exp $
-#
-# Options are:
-# -dir <directory in which to store memp>
-# -maxfilesize <maxsize of log file>
-# -iterations <iterations>
-# -stat
-proc log_usage {} {
- puts "log -dir <directory> -iterations <number of ops> \
- -maxfilesize <max size of log files> -stat"
-}
-proc logtest { args } {
- source ./include.tcl
- global rand_init
-
- # Set defaults
- set iterations 1000
- set maxfile [expr 1024 * 128]
- set dostat 0
- for { set i 0 } { $i < [llength $args] } {incr i} {
- switch -regexp -- [lindex $args $i] {
- -d.* { incr i; set testdir [lindex $args $i] }
- -i.* { incr i; set iterations [lindex $args $i] }
- -m.* { incr i; set maxfile [lindex $args $i] }
- -s.* { set dostat 1 }
- default {
- puts -nonewline "FAIL:[timestamp] Usage: "
- log_usage
- return
- }
- }
- }
- set multi_log [expr 3 * $iterations]
-
- # Clean out old log if it existed
- puts "Unlinking log: error message OK"
- env_cleanup $testdir
-
- # Now run the various functionality tests
- berkdb srand $rand_init
-
- log001 $testdir $maxfile $iterations
- log001 $testdir $maxfile $multi_log
- log002 $testdir $maxfile
- log003 $testdir $maxfile
- log004 $testdir
-}
-
-proc log001 { dir max nrecs } {
- source ./include.tcl
-
- puts "Log001: Basic put/get test"
-
- env_cleanup $dir
-
- set env [berkdb env -log -create -home $dir \
- -mode 0644 -log_max $max]
- error_check_bad log_env:$dir $env NULL
- error_check_good log:$dir [is_substr $env "env"] 1
-
- # We will write records to the log and make sure we can
- # read them back correctly. We'll use a standard pattern
- # repeated some number of times for each record.
-
- set lsn_list {}
- set rec_list {}
- puts "Log001.a: Writing $nrecs log records"
- for { set i 0 } { $i < $nrecs } { incr i } {
- set rec ""
- for { set j 0 } { $j < [expr $i % 10 + 1] } {incr j} {
- set rec $rec$i:logrec:$i
- }
- set lsn [$env log_put $rec]
- error_check_bad log_put [is_substr $lsn log_cmd] 1
- lappend lsn_list $lsn
- lappend rec_list $rec
- }
- puts "Log001.b: Retrieving log records sequentially (forward)"
- set i 0
- for { set grec [$env log_get -first] } { [llength $grec] != 0 } {
- set grec [$env log_get -next]} {
- error_check_good log_get:seq [lindex $grec 1] \
- [lindex $rec_list $i]
- incr i
- }
-
- puts "Log001.c: Retrieving log records sequentially (backward)"
- set i [llength $rec_list]
- for { set grec [$env log_get -last] } { [llength $grec] != 0 } {
- set grec [$env log_get -prev] } {
- incr i -1
- error_check_good \
- log_get:seq [lindex $grec 1] [lindex $rec_list $i]
- }
-
- puts "Log001.d: Retrieving log records sequentially by LSN"
- set i 0
- foreach lsn $lsn_list {
- set grec [$env log_get -set $lsn]
- error_check_good \
- log_get:seq [lindex $grec 1] [lindex $rec_list $i]
- incr i
- }
-
- puts "Log001.e: Retrieving log records randomly by LSN"
- set m [expr [llength $lsn_list] - 1]
- for { set i 0 } { $i < $nrecs } { incr i } {
- set recno [berkdb random_int 0 $m ]
- set lsn [lindex $lsn_list $recno]
- set grec [$env log_get -set $lsn]
- error_check_good \
- log_get:seq [lindex $grec 1] [lindex $rec_list $recno]
- }
-
- # Close and unlink the file
- error_check_good env:close:$env [$env close] 0
- error_check_good envremove:$dir [berkdb envremove -home $dir] 0
-
- puts "Log001 Complete"
-}
-
-proc log002 { dir {max 32768} } {
- source ./include.tcl
-
- puts "Log002: Multiple log test w/trunc, file, compare functionality"
-
- env_cleanup $dir
-
- set env [berkdb env -create -home $dir -mode 0644 -log -log_max $max]
- error_check_bad log_env:$dir $env NULL
- error_check_good log:$dir [is_substr $env "env"] 1
-
- # We'll record every hundred'th record for later use
- set info_list {}
-
- set i 0
- puts "Log002.a: Writing log records"
-
- for {set s 0} { $s < [expr 3 * $max] } { incr s $len } {
- set rec [random_data 120 0 0]
- set len [string length $rec]
- set lsn [$env log_put $rec]
-
- if { [expr $i % 100 ] == 0 } {
- lappend info_list [list $lsn $rec]
- }
- incr i
- }
-
- puts "Log002.b: Checking log_compare"
- set last {0 0}
- foreach p $info_list {
- set l [lindex $p 0]
- if { [llength $last] != 0 } {
- error_check_good \
- log_compare [$env log_compare $l $last] 1
- error_check_good \
- log_compare [$env log_compare $last $l] -1
- error_check_good \
- log_compare [$env log_compare $l $l] 0
- }
- set last $l
- }
-
- puts "Log002.c: Checking log_file"
- set flist [glob $dir/log*]
- foreach p $info_list {
-
- set lsn [lindex $p 0]
- set f [$env log_file $lsn]
-
- # Change all backslash separators on Windows to forward slash
- # separators, which is what the rest of the test suite expects.
- regsub -all {\\} $f {/} f
-
- error_check_bad log_file:$f [lsearch $flist $f] -1
- }
-
- puts "Log002.d: Verifying records"
- for {set i [expr [llength $info_list] - 1] } { $i >= 0 } { incr i -1} {
- set p [lindex $info_list $i]
- set grec [$env log_get -set [lindex $p 0]]
- error_check_good log_get:$env [lindex $grec 1] [lindex $p 1]
- }
-
- # Close and unlink the file
- error_check_good env:close:$env [$env close] 0
- error_check_good envremove:$dir [berkdb envremove -home $dir] 0
-
- puts "Log002 Complete"
-}
-
-proc log003 { dir {max 32768} } {
- source ./include.tcl
-
- puts "Log003: Verify log_flush behavior"
-
- env_cleanup $dir
- set short_rec "abcdefghijklmnopqrstuvwxyz"
- set long_rec [repeat $short_rec 200]
- set very_long_rec [repeat $long_rec 4]
-
- foreach rec "$short_rec $long_rec $very_long_rec" {
- puts "Log003.a: Verify flush on [string length $rec] byte rec"
-
- set env [berkdb env -log -home $dir \
- -create -mode 0644 -log_max $max]
- error_check_bad log_env:$dir $env NULL
- error_check_good log:$dir [is_substr $env "env"] 1
-
- set lsn [$env log_put $rec]
- error_check_bad log_put [lindex $lsn 0] "ERROR:"
- set ret [$env log_flush $lsn]
- error_check_good log_flush $ret 0
-
- # Now, we want to crash the region and recheck. Closing the
- # log does not flush any records, so we'll use a close to
- # do the "crash"
- set ret [$env close]
- error_check_good log_env:close $ret 0
-
- # Now, remove the log region
- #set ret [berkdb envremove -home $dir]
- #error_check_good env:remove $ret 0
-
- # Re-open the log and try to read the record.
- set env [berkdb env -create -home $dir \
- -log -mode 0644 -log_max $max]
- error_check_bad log_env:$dir $env NULL
- error_check_good log:$dir [is_substr $env "env"] 1
-
- set gotrec [$env log_get -first]
- error_check_good lp_get [lindex $gotrec 1] $rec
-
- # Close and unlink the file
- error_check_good env:close:$env [$env close] 0
- error_check_good envremove:$dir [berkdb envremove -home $dir] 0
- log_cleanup $dir
- }
-
- foreach rec "$short_rec $long_rec $very_long_rec" {
- puts "Log003.b: \
- Verify flush on non-last record [string length $rec]"
- set env [berkdb env \
- -create -log -home $dir -mode 0644 -log_max $max]
- error_check_bad log_env:$dir $env NULL
- error_check_good log:$dir [is_substr $env "env"] 1
-
- # Put 10 random records
- for { set i 0 } { $i < 10 } { incr i} {
- set r [random_data 450 0 0]
- set lsn [$env log_put $r]
- error_check_bad log_put [lindex $lsn 0] "ERROR:"
- }
-
- # Put the record we are interested in
- set save_lsn [$env log_put $rec]
- error_check_bad log_put [lindex $save_lsn 0] "ERROR:"
-
- # Put 10 more random records
- for { set i 0 } { $i < 10 } { incr i} {
- set r [random_data 450 0 0]
- set lsn [$env log_put $r]
- error_check_bad log_put [lindex $lsn 0] "ERROR:"
- }
-
- # Now check the flush
- set ret [$env log_flush $save_lsn]
- error_check_good log_flush $ret 0
-
- # Now, we want to crash the region and recheck. Closing the
- # log does not flush any records, so we'll use a close to
- # do the "crash"
-
- #
- # Now, close and remove the log region
- error_check_good env:close:$env [$env close] 0
- set ret [berkdb envremove -home $dir]
- error_check_good env:remove $ret 0
-
- # Re-open the log and try to read the record.
- set env [berkdb env \
- -home $dir -create -log -mode 0644 -log_max $max]
- error_check_bad log_env:$dir $env NULL
- error_check_good log:$dir [is_substr $env "env"] 1
-
- set gotrec [$env log_get -set $save_lsn]
- error_check_good lp_get [lindex $gotrec 1] $rec
-
- # Close and unlink the file
- error_check_good env:close:$env [$env close] 0
- error_check_good envremove:$dir [berkdb envremove -home $dir] 0
- log_cleanup $dir
- }
-
- puts "Log003 Complete"
-}
-
-# Make sure that if we do PREVs on a log, but the beginning of the
-# log has been truncated, we do the right thing.
-proc log004 { dir } {
- source ./include.tcl
-
- puts "Log004: Prev on log when beginning of log has been truncated."
- # Use archive test to populate log
- env_cleanup $dir
- puts "Log004.a: Call archive to populate log."
- archive
-
- # Delete all log files under 100
- puts "Log004.b: Delete all log files under 100."
- set ret [catch { glob $dir/log.00000000* } result]
- if { $ret == 0 } {
- eval fileremove -f $result
- }
-
- # Now open the log and get the first record and try a prev
- puts "Log004.c: Open truncated log, attempt to access missing portion."
- set myenv [berkdb env -create -log -home $dir]
- error_check_good log_open [is_substr $myenv "env"] 1
-
- set ret [$myenv log_get -first]
- error_check_bad log_get [llength $ret] 0
-
- # This should give DB_NOTFOUND which is a ret of length 0
- catch {$myenv log_get -prev} ret
- error_check_good log_get_prev [string length $ret] 0
-
- puts "Log004.d: Close log and environment."
- error_check_good log_close [$myenv close] 0
- puts "Log004 complete."
-}
diff --git a/db/test/log001.tcl b/db/test/log001.tcl
index 1dab9ad2a..05966052a 100644
--- a/db/test/log001.tcl
+++ b/db/test/log001.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: log001.tcl,v 12.3 2006/08/24 14:46:36 bostic Exp $
+# $Id: log001.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# TEST log001
diff --git a/db/test/log002.tcl b/db/test/log002.tcl
index 3a499a861..556953864 100644
--- a/db/test/log002.tcl
+++ b/db/test/log002.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: log002.tcl,v 12.3 2006/08/24 14:46:36 bostic Exp $
+# $Id: log002.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# TEST log002
# TEST Tests multiple logs
diff --git a/db/test/log003.tcl b/db/test/log003.tcl
index 6370c87da..643c0e324 100644
--- a/db/test/log003.tcl
+++ b/db/test/log003.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: log003.tcl,v 12.3 2006/08/24 14:46:36 bostic Exp $
+# $Id: log003.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# TEST log003
# TEST Verify that log_flush is flushing records correctly.
diff --git a/db/test/log004.tcl b/db/test/log004.tcl
index c2f9d9591..96250b6ee 100644
--- a/db/test/log004.tcl
+++ b/db/test/log004.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: log004.tcl,v 12.3 2006/08/24 14:46:36 bostic Exp $
+# $Id: log004.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# TEST log004
diff --git a/db/test/log005.tcl b/db/test/log005.tcl
index 908e3fd54..dff79444f 100644
--- a/db/test/log005.tcl
+++ b/db/test/log005.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: log005.tcl,v 12.3 2006/08/24 14:46:36 bostic Exp $
+# $Id: log005.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# TEST log005
# TEST Check that log file sizes can change on the fly.
diff --git a/db/test/log006.tcl b/db/test/log006.tcl
index 9f7076b1c..2564e74d3 100644
--- a/db/test/log006.tcl
+++ b/db/test/log006.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: log006.tcl,v 12.3 2006/08/24 14:46:36 bostic Exp $
+# $Id: log006.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# TEST log006
# TEST Test log file auto-remove.
diff --git a/db/test/log007.tcl b/db/test/log007.tcl
index b430003b3..6a7b13dc2 100644
--- a/db/test/log007.tcl
+++ b/db/test/log007.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2005-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2005,2007 Oracle. All rights reserved.
#
-# $Id: log007.tcl,v 12.5 2006/08/24 14:46:36 bostic Exp $
+# $Id: log007.tcl,v 12.7 2007/05/17 15:15:55 bostic Exp $
#
# TEST log007
# TEST Test of in-memory logging bugs. [#11505]
diff --git a/db/test/log008.tcl b/db/test/log008.tcl
index 5efe372ac..1118e19ed 100644
--- a/db/test/log008.tcl
+++ b/db/test/log008.tcl
@@ -1,10 +1,10 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2005-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2005,2007 Oracle. All rights reserved.
#
-# $Id: log008.tcl,v 12.4 2006/08/24 14:46:36 bostic Exp $
+# $Id: log008.tcl,v 12.7 2007/05/24 18:20:47 carol Exp $
#
+# TEST log008
# TEST Test what happens if a txn_ckp record falls into a
# TEST different log file than the DBREG_CKP records generated
# TEST by the same checkpoint.
diff --git a/db/test/log008script.tcl b/db/test/log008script.tcl
index 8433d05c4..960c0db44 100644
--- a/db/test/log008script.tcl
+++ b/db/test/log008script.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2005-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2005,2007 Oracle. All rights reserved.
#
-# $Id: log008script.tcl,v 12.4 2006/08/24 14:46:36 bostic Exp $
+# $Id: log008script.tcl,v 12.6 2007/05/17 15:15:55 bostic Exp $
#
# Log008 script - dbreg_ckp and txn_ckp records spanning log files.
#
diff --git a/db/test/log009.tcl b/db/test/log009.tcl
index 85e4c4d89..aea821f4b 100644
--- a/db/test/log009.tcl
+++ b/db/test/log009.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2004-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2004,2007 Oracle. All rights reserved.
#
-# $Id: log009.tcl,v 12.6 2006/08/24 14:46:36 bostic Exp $
+# $Id: log009.tcl,v 12.8 2007/05/17 15:15:55 bostic Exp $
#
# TEST log009
# TEST Test of logging and getting log file version information.
diff --git a/db/test/logtrack.tcl b/db/test/logtrack.tcl
index 29cd1ceb3..241d54fda 100644
--- a/db/test/logtrack.tcl
+++ b/db/test/logtrack.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information
#
-# Copyright (c) 2000-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2000,2007 Oracle. All rights reserved.
#
-# $Id: logtrack.tcl,v 12.4 2006/08/24 14:46:36 bostic Exp $
+# $Id: logtrack.tcl,v 12.6 2007/05/17 15:15:55 bostic Exp $
#
# logtrack.tcl: A collection of routines, formerly implemented in Perl
# as log.pl, to track which log record types the test suite hits.
diff --git a/db/test/mdbscript.tcl b/db/test/mdbscript.tcl
index a4db21cc0..2b57b0308 100644
--- a/db/test/mdbscript.tcl
+++ b/db/test/mdbscript.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: mdbscript.tcl,v 12.3 2006/08/24 14:46:36 bostic Exp $
+# $Id: mdbscript.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# Process script for the multi-process db tester.
diff --git a/db/test/memp001.tcl b/db/test/memp001.tcl
index 2cf161283..d6d4036cd 100644
--- a/db/test/memp001.tcl
+++ b/db/test/memp001.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: memp001.tcl,v 12.4 2006/08/24 14:46:36 bostic Exp $
+# $Id: memp001.tcl,v 12.6 2007/05/17 15:15:55 bostic Exp $
#
# TEST memp001
diff --git a/db/test/memp002.tcl b/db/test/memp002.tcl
index 7e9ffb60e..8e5e17c20 100644
--- a/db/test/memp002.tcl
+++ b/db/test/memp002.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: memp002.tcl,v 12.3 2006/08/24 14:46:36 bostic Exp $
+# $Id: memp002.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# TEST memp002
diff --git a/db/test/memp003.tcl b/db/test/memp003.tcl
index 9fb7b4e66..72b752240 100644
--- a/db/test/memp003.tcl
+++ b/db/test/memp003.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: memp003.tcl,v 12.3 2006/08/24 14:46:36 bostic Exp $
+# $Id: memp003.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# TEST memp003
# TEST Test reader-only/writer process combinations; we use the access methods
diff --git a/db/test/memp004.tcl b/db/test/memp004.tcl
index 2ab0f4366..be82907e4 100644
--- a/db/test/memp004.tcl
+++ b/db/test/memp004.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: memp004.tcl,v 12.3 2006/08/24 14:46:36 bostic Exp $
+# $Id: memp004.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# TEST memp004
diff --git a/db/test/mpool.tcl b/db/test/mpool.tcl
deleted file mode 100644
index b2eb22520..000000000
--- a/db/test/mpool.tcl
+++ /dev/null
@@ -1,420 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996, 1997, 1998, 1999, 2000
-# Sleepycat Software. All rights reserved.
-#
-# $Id: mpool.tcl,v 11.34 2001/01/18 04:58:07 krinsky Exp $
-#
-# Options are:
-# -cachesize {gbytes bytes ncache}
-# -nfiles <files>
-# -iterations <iterations>
-# -pagesize <page size in bytes>
-# -dir <directory in which to store memp>
-# -stat
-proc memp_usage {} {
- puts "memp -cachesize {gbytes bytes ncache}"
- puts "\t-nfiles <files>"
- puts "\t-iterations <iterations>"
- puts "\t-pagesize <page size in bytes>"
- puts "\t-dir <memp directory>"
- puts "\t-mem {private system}"
- return
-}
-
-proc mpool { args } {
- source ./include.tcl
- global errorCode
-
- puts "mpool {$args} running"
- # Set defaults
- set cachearg " -cachesize {0 200000 3}"
- set nfiles 5
- set iterations 500
- set pagesize "512 1024 2048 4096 8192"
- set npages 100
- set procs 4
- set seeds ""
- set shm_key 1
- set dostat 0
- set flags ""
- for { set i 0 } { $i < [llength $args] } {incr i} {
- switch -regexp -- [lindex $args $i] {
- -c.* {
- incr i
- set cachesize [lindex $args $i]
- set cachearg " -cachesize $cachesize"
- }
- -d.* { incr i; set testdir [lindex $args $i] }
- -i.* { incr i; set iterations [lindex $args $i] }
- -me.* {
- incr i
- if { [string \
- compare [lindex $args $i] private] == 0 } {
- set flags -private
- } elseif { [string \
- compare [lindex $args $i] system] == 0 } {
- #
- # We need to use a shm id. Use one
- # that is the same each time so that
- # we do not grow segments infinitely.
- set flags "-system_mem -shm_key $shm_key"
- } else {
- puts -nonewline \
- "FAIL:[timestamp] Usage: "
- memp_usage
- return
- }
- }
- -nf.* { incr i; set nfiles [lindex $args $i] }
- -np.* { incr i; set npages [lindex $args $i] }
- -pa.* { incr i; set pagesize [lindex $args $i] }
- -pr.* { incr i; set procs [lindex $args $i] }
- -se.* { incr i; set seeds [lindex $args $i] }
- -st.* { set dostat 1 }
- default {
- puts -nonewline "FAIL:[timestamp] Usage: "
- memp_usage
- return
- }
- }
- }
-
- # Clean out old directory
- env_cleanup $testdir
-
- # Open the memp with region init specified
- set ret [catch {eval {berkdb env -create -mode 0644}\
- $cachearg {-region_init -home $testdir} $flags} res]
- if { $ret == 0 } {
- set env $res
- } else {
- # If the env open failed, it may be because we're on a platform
- # such as HP-UX 10 that won't support mutexes in shmget memory.
- # Or QNX, which doesn't support system memory at all.
- # Verify that the return value was EINVAL or EOPNOTSUPP
- # and bail gracefully.
- error_check_good is_shm_test [is_substr $flags -system_mem] 1
- error_check_good returned_error [expr \
- [is_substr $errorCode EINVAL] || \
- [is_substr $errorCode EOPNOTSUPP]] 1
- puts "Warning:\
- platform does not support mutexes in shmget memory."
- puts "Skipping shared memory mpool test."
- return
- }
- error_check_good env_open [is_substr $env env] 1
-
- reset_env $env
- env_cleanup $testdir
-
- # Now open without region init
- set env [eval {berkdb env -create -mode 0644}\
- $cachearg {-home $testdir} $flags]
- error_check_good evn_open [is_substr $env env] 1
-
- memp001 $env \
- $testdir $nfiles $iterations [lindex $pagesize 0] $dostat $flags
- reset_env $env
- set ret [berkdb envremove -home $testdir]
- error_check_good env_remove $ret 0
- env_cleanup $testdir
-
- memp002 $testdir \
- $procs $pagesize $iterations $npages $seeds $dostat $flags
- set ret [berkdb envremove -home $testdir]
- error_check_good env_remove $ret 0
- env_cleanup $testdir
-
- memp003 $testdir $iterations $flags
- set ret [berkdb envremove -home $testdir]
- error_check_good env_remove $ret 0
-
- env_cleanup $testdir
-}
-
-proc memp001 {env dir n iter psize dostat flags} {
- source ./include.tcl
- global rand_init
-
- puts "Memp001: {$flags} random update $iter iterations on $n files."
-
- # Open N memp files
- for {set i 1} {$i <= $n} {incr i} {
- set fname "data_file.$i"
- file_create $dir/$fname 50 $psize
-
- set mpools($i) \
- [$env mpool -create -pagesize $psize -mode 0644 $fname]
- error_check_good mp_open [is_substr $mpools($i) $env.mp] 1
- }
-
- # Now, loop, picking files at random
- berkdb srand $rand_init
- for {set i 0} {$i < $iter} {incr i} {
- set mpool $mpools([berkdb random_int 1 $n])
- set p1 [get_range $mpool 10]
- set p2 [get_range $mpool 10]
- set p3 [get_range $mpool 10]
- set p1 [replace $mpool $p1]
- set p3 [replace $mpool $p3]
- set p4 [get_range $mpool 20]
- set p4 [replace $mpool $p4]
- set p5 [get_range $mpool 10]
- set p6 [get_range $mpool 20]
- set p7 [get_range $mpool 10]
- set p8 [get_range $mpool 20]
- set p5 [replace $mpool $p5]
- set p6 [replace $mpool $p6]
- set p9 [get_range $mpool 40]
- set p9 [replace $mpool $p9]
- set p10 [get_range $mpool 40]
- set p7 [replace $mpool $p7]
- set p8 [replace $mpool $p8]
- set p9 [replace $mpool $p9]
- set p10 [replace $mpool $p10]
- }
-
- if { $dostat == 1 } {
- puts [$env mpool_stat]
- for {set i 1} {$i <= $n} {incr i} {
- error_check_good mp_sync [$mpools($i) fsync] 0
- }
- }
-
- # Close N memp files
- for {set i 1} {$i <= $n} {incr i} {
- error_check_good memp_close:$mpools($i) [$mpools($i) close] 0
- fileremove -f $dir/data_file.$i
- }
-}
-
-proc file_create { fname nblocks blocksize } {
- set fid [open $fname w]
- for {set i 0} {$i < $nblocks} {incr i} {
- seek $fid [expr $i * $blocksize] start
- puts -nonewline $fid $i
- }
- seek $fid [expr $nblocks * $blocksize - 1]
-
- # We don't end the file with a newline, because some platforms (like
- # Windows) emit CR/NL. There does not appear to be a BINARY open flag
- # that prevents this.
- puts -nonewline $fid "Z"
- close $fid
-
- # Make sure it worked
- if { [file size $fname] != $nblocks * $blocksize } {
- error "FAIL: file_create could not create correct file size"
- }
-}
-
-proc get_range { mpool max } {
- set pno [berkdb random_int 0 $max]
- set p [$mpool get $pno]
- error_check_good page [is_valid_page $p $mpool] TRUE
- set got [$p pgnum]
- if { $got != $pno } {
- puts "Get_range: Page mismatch page |$pno| val |$got|"
- }
- set ret [$p init "Page is pinned by [pid]"]
- error_check_good page_init $ret 0
-
- return $p
-}
-
-proc replace { mpool p } {
- set pgno [$p pgnum]
-
- set ret [$p init "Page is unpinned by [pid]"]
- error_check_good page_init $ret 0
-
- set ret [$p put -dirty]
- error_check_good page_put $ret 0
-
- set p2 [$mpool get $pgno]
- error_check_good page [is_valid_page $p2 $mpool] TRUE
-
- return $p2
-}
-
-proc memp002 { dir procs psizes iterations npages seeds dostat flags } {
- source ./include.tcl
-
- puts "Memp002: {$flags} Multiprocess mpool tester"
-
- if { [is_substr $flags -private] != 0 } {
- puts "Memp002 skipping\
- multiple processes not supported by private memory"
- return
- }
- set iter [expr $iterations / $procs]
-
- # Clean up old stuff and create new.
- env_cleanup $dir
-
- for { set i 0 } { $i < [llength $psizes] } { incr i } {
- fileremove -f $dir/file$i
- }
- set e [eval {berkdb env -create -lock -home $dir} $flags]
- error_check_good dbenv [is_valid_widget $e env] TRUE
-
- set pidlist {}
- for { set i 0 } { $i < $procs } {incr i} {
- if { [llength $seeds] == $procs } {
- set seed [lindex $seeds $i]
- } else {
- set seed -1
- }
-
- puts "$tclsh_path\
- $test_path/mpoolscript.tcl $dir $i $procs \
- $iter $psizes $npages 3 $flags > \
- $dir/memp002.$i.out &"
- set p [exec $tclsh_path $test_path/wrap.tcl \
- mpoolscript.tcl $dir/memp002.$i.out $dir $i $procs \
- $iter $psizes $npages 3 $flags &]
- lappend pidlist $p
- }
- puts "Memp002: $procs independent processes now running"
- watch_procs
-
- reset_env $e
-}
-
-# Test reader-only/writer process combinations; we use the access methods
-# for testing.
-proc memp003 { dir {nentries 10000} flags } {
- global alphabet
- source ./include.tcl
-
- puts "Memp003: {$flags} Reader/Writer tests"
-
- if { [is_substr $flags -private] != 0 } {
- puts "Memp003 skipping\
- multiple processes not supported by private memory"
- return
- }
-
- env_cleanup $dir
- set psize 1024
- set testfile mpool.db
- set t1 $dir/t1
-
- # Create an environment that the two processes can share
- set c [list 0 [expr $psize * 10] 3]
- set dbenv [eval {berkdb env \
- -create -lock -home $dir -cachesize $c} $flags]
- error_check_good dbenv [is_valid_env $dbenv] TRUE
-
- # First open and create the file.
-
- set db [berkdb_open -env $dbenv -create -truncate \
- -mode 0644 -pagesize $psize -btree $testfile]
- error_check_good dbopen/RW [is_valid_db $db] TRUE
-
- set did [open $dict]
- set txn ""
- set count 0
-
- puts "\tMemp003.a: create database"
- set keys ""
- # Here is the loop where we put and get each key/data pair
- while { [gets $did str] != -1 && $count < $nentries } {
- lappend keys $str
-
- set ret [eval {$db put} $txn {$str $str}]
- error_check_good put $ret 0
-
- set ret [eval {$db get} $txn {$str}]
- error_check_good get $ret [list [list $str $str]]
-
- incr count
- }
- close $did
- error_check_good close [$db close] 0
-
- # Now open the file for read-only
- set db [berkdb_open -env $dbenv -rdonly $testfile]
- error_check_good dbopen/RO [is_substr $db db] 1
-
- puts "\tMemp003.b: verify a few keys"
- # Read and verify a couple of keys; saving them to check later
- set testset ""
- for { set i 0 } { $i < 10 } { incr i } {
- set ndx [berkdb random_int 0 [expr $nentries - 1]]
- set key [lindex $keys $ndx]
- if { [lsearch $testset $key] != -1 } {
- incr i -1
- continue;
- }
-
- # The remote process stuff is unhappy with
- # zero-length keys; make sure we don't pick one.
- if { [llength $key] == 0 } {
- incr i -1
- continue
- }
-
- lappend testset $key
-
- set ret [eval {$db get} $txn {$key}]
- error_check_good get/RO $ret [list [list $key $key]]
- }
-
- puts "\tMemp003.c: retrieve and modify keys in remote process"
- # Now open remote process where we will open the file RW
- set f1 [open |$tclsh_path r+]
- puts $f1 "source $test_path/test.tcl"
- puts $f1 "flush stdout"
- flush $f1
-
- set c [concat "{" [list 0 [expr $psize * 10] 3] "}" ]
- set remote_env [send_cmd $f1 \
- "berkdb env -create -lock -home $dir -cachesize $c $flags"]
- error_check_good remote_dbenv [is_valid_env $remote_env] TRUE
-
- set remote_db [send_cmd $f1 "berkdb_open -env $remote_env $testfile"]
- error_check_good remote_dbopen [is_valid_db $remote_db] TRUE
-
- foreach k $testset {
- # Get the key
- set ret [send_cmd $f1 "$remote_db get $k"]
- error_check_good remote_get $ret [list [list $k $k]]
-
- # Now replace the key
- set ret [send_cmd $f1 "$remote_db put $k $k$k"]
- error_check_good remote_put $ret 0
- }
-
- puts "\tMemp003.d: verify changes in local process"
- foreach k $testset {
- set ret [eval {$db get} $txn {$key}]
- error_check_good get_verify/RO $ret [list [list $key $key$key]]
- }
-
- puts "\tMemp003.e: Fill up the cache with dirty buffers"
- foreach k $testset {
- # Now rewrite the keys with BIG data
- set data [replicate $alphabet 32]
- set ret [send_cmd $f1 "$remote_db put $k $data"]
- error_check_good remote_put $ret 0
- }
-
- puts "\tMemp003.f: Get more pages for the read-only file"
- dump_file $db $txn $t1 nop
-
- puts "\tMemp003.g: Sync from the read-only file"
- error_check_good db_sync [$db sync] 0
- error_check_good db_close [$db close] 0
-
- set ret [send_cmd $f1 "$remote_db close"]
- error_check_good remote_get $ret 0
-
- # Close the environment both remotely and locally.
- set ret [send_cmd $f1 "$remote_env close"]
- error_check_good remote:env_close $ret 0
- close $f1
-
- reset_env $dbenv
-}
diff --git a/db/test/mpoolscript.tcl b/db/test/mpoolscript.tcl
index 03f599ad9..06831d180 100644
--- a/db/test/mpoolscript.tcl
+++ b/db/test/mpoolscript.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: mpoolscript.tcl,v 12.4 2006/08/24 14:46:36 bostic Exp $
+# $Id: mpoolscript.tcl,v 12.6 2007/05/17 15:15:55 bostic Exp $
#
# Random multiple process mpool tester.
# Usage: mpoolscript dir id numiters numfiles numpages sleepint
diff --git a/db/test/mutex.tcl b/db/test/mutex.tcl
deleted file mode 100644
index 5300fb0c4..000000000
--- a/db/test/mutex.tcl
+++ /dev/null
@@ -1,225 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996, 1997, 1998, 1999, 2000
-# Sleepycat Software. All rights reserved.
-#
-# $Id: mutex.tcl,v 11.18 2000/09/01 19:24:59 krinsky Exp $
-#
-# Exercise mutex functionality.
-# Options are:
-# -dir <directory in which to store mpool>
-# -iter <iterations>
-# -mdegree <number of mutexes per iteration>
-# -nmutex <number of mutexes>
-# -procs <number of processes to run>
-# -wait <wait interval after getting locks>
-proc mutex_usage {} {
- puts stderr "mutex\n\t-dir <dir>\n\t-iter <iterations>"
- puts stderr "\t-mdegree <locks per iteration>\n\t-nmutex <n>"
- puts stderr "\t-procs <nprocs>"
- puts stderr "\n\t-wait <max wait interval>"
- return
-}
-
-proc mutex { args } {
- source ./include.tcl
-
- set dir db
- set iter 500
- set mdegree 3
- set nmutex 20
- set procs 5
- set wait 2
-
- for { set i 0 } { $i < [llength $args] } {incr i} {
- switch -regexp -- [lindex $args $i] {
- -d.* { incr i; set testdir [lindex $args $i] }
- -i.* { incr i; set iter [lindex $args $i] }
- -m.* { incr i; set mdegree [lindex $args $i] }
- -n.* { incr i; set nmutex [lindex $args $i] }
- -p.* { incr i; set procs [lindex $args $i] }
- -w.* { incr i; set wait [lindex $args $i] }
- default {
- puts -nonewline "FAIL:[timestamp] Usage: "
- mutex_usage
- return
- }
- }
- }
-
- if { [file exists $testdir/$dir] != 1 } {
- file mkdir $testdir/$dir
- } elseif { [file isdirectory $testdir/$dir ] != 1 } {
- error "$testdir/$dir is not a directory"
- }
-
- # Basic sanity tests
- mutex001 $testdir $nmutex
-
- # Basic synchronization tests
- mutex002 $testdir $nmutex
-
- # Multiprocess tests
- mutex003 $testdir $iter $nmutex $procs $mdegree $wait
-}
-
-proc mutex001 { dir nlocks } {
- source ./include.tcl
-
- puts "Mutex001: Basic functionality"
- env_cleanup $dir
-
- # Test open w/out create; should fail
- error_check_bad \
- env_open [catch {berkdb env -lock -home $dir} env] 0
-
- # Now open for real
- set env [berkdb env -create -mode 0644 -lock -home $dir]
- error_check_good env_open [is_valid_env $env] TRUE
-
- set m [$env mutex 0644 $nlocks]
- error_check_good mutex_init [is_valid_mutex $m $env] TRUE
-
- # Get, set each mutex; sleep, then get Release
- for { set i 0 } { $i < $nlocks } { incr i } {
- set r [$m get $i ]
- error_check_good mutex_get $r 0
-
- set r [$m setval $i $i]
- error_check_good mutex_setval $r 0
- }
- tclsleep 5
- for { set i 0 } { $i < $nlocks } { incr i } {
- set r [$m getval $i]
- error_check_good mutex_getval $r $i
-
- set r [$m release $i ]
- error_check_good mutex_get $r 0
- }
-
- error_check_good mutex_close [$m close] 0
- error_check_good env_close [$env close] 0
- puts "Mutex001: completed successfully."
-}
-
-# Test basic synchronization
-proc mutex002 { dir nlocks } {
- source ./include.tcl
-
- puts "Mutex002: Basic synchronization"
- env_cleanup $dir
-
- # Fork off child before we open any files.
- set f1 [open |$tclsh_path r+]
- puts $f1 "source $test_path/test.tcl"
- flush $f1
-
- # Open the environment and the mutex locally
- set local_env [berkdb env -create -mode 0644 -lock -home $dir]
- error_check_good env_open [is_valid_env $local_env] TRUE
-
- set local_mutex [$local_env mutex 0644 $nlocks]
- error_check_good \
- mutex_init [is_valid_mutex $local_mutex $local_env] TRUE
-
- # Open the environment and the mutex remotely
- set remote_env [send_cmd $f1 "berkdb env -lock -home $dir"]
- error_check_good remote:env_open [is_valid_env $remote_env] TRUE
-
- set remote_mutex [send_cmd $f1 "$remote_env mutex 0644 $nlocks"]
- error_check_good \
- mutex_init [is_valid_mutex $remote_mutex $remote_env] TRUE
-
- # Do a get here, then set the value to be pid.
- # On the remote side fire off a get and getval.
- set r [$local_mutex get 1]
- error_check_good lock_get $r 0
-
- set r [$local_mutex setval 1 [pid]]
- error_check_good lock_get $r 0
-
- # Now have the remote side request the lock and check its
- # value. Then wait 5 seconds, release the mutex and see
- # what the remote side returned.
- send_timed_cmd $f1 1 "$remote_mutex get 1"
- send_timed_cmd $f1 1 "set ret \[$remote_mutex getval 1\]"
-
- # Now sleep before resetting and releasing lock
- tclsleep 5
- set newv [expr [pid] - 1]
- set r [$local_mutex setval 1 $newv]
- error_check_good mutex_setval $r 0
-
- set r [$local_mutex release 1]
- error_check_good mutex_release $r 0
-
- # Now get the result from the other script
- # Timestamp
- set result [rcv_result $f1]
- error_check_good lock_get:remote_time [expr $result > 4] 1
-
- # Timestamp
- set result [rcv_result $f1]
-
- # Mutex value
- set result [send_cmd $f1 "puts \$ret"]
- error_check_good lock_get:remote_getval $result $newv
-
- # Close down the remote
- set ret [send_cmd $f1 "$remote_mutex close" 5]
- # Not sure why we need this, but we do... an extra blank line
- # someone gets output somewhere
- gets $f1 ret
- error_check_good remote:mutex_close $ret 0
-
- set ret [send_cmd $f1 "$remote_env close"]
- error_check_good remote:env_close $ret 0
-
- catch { close $f1 } result
-
- set ret [$local_mutex close]
- error_check_good local:mutex_close $ret 0
-
- set ret [$local_env close]
- error_check_good local:env_close $ret 0
-
- puts "Mutex002: completed successfully."
-}
-
-# Generate a bunch of parallel
-# testers that try to randomly obtain locks.
-proc mutex003 { dir iter nmutex procs mdegree wait } {
- source ./include.tcl
-
- puts "Mutex003: Multi-process random mutex test ($procs processes)"
-
- env_cleanup $dir
-
- # Now open the region we'll use for multiprocess testing.
- set env [berkdb env -create -mode 0644 -lock -home $dir]
- error_check_good env_open [is_valid_env $env] TRUE
-
- set mutex [$env mutex 0644 $nmutex]
- error_check_good mutex_init [is_valid_mutex $mutex $env] TRUE
-
- error_check_good mutex_close [$mutex close] 0
-
- # Now spawn off processes
- set proclist {}
- for { set i 0 } {$i < $procs} {incr i} {
- puts "$tclsh_path\
- $test_path/mutexscript.tcl $dir\
- $iter $nmutex $wait $mdegree > $testdir/$i.mutexout &"
- set p [exec $tclsh_path $test_path/wrap.tcl \
- mutexscript.tcl $testdir/$i.mutexout $dir\
- $iter $nmutex $wait $mdegree &]
- lappend proclist $p
- }
- puts "Mutex003: $procs independent processes now running"
- watch_procs
- error_check_good env_close [$env close] 0
- # Remove output files
- for { set i 0 } {$i < $procs} {incr i} {
- fileremove -f $dir/$i.mutexout
- }
-}
diff --git a/db/test/mutex001.tcl b/db/test/mutex001.tcl
deleted file mode 100644
index 66d14c41c..000000000
--- a/db/test/mutex001.tcl
+++ /dev/null
@@ -1,51 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2004
-# Sleepycat Software. All rights reserved.
-#
-# $Id: mutex001.tcl,v 11.25 2004/01/28 03:36:28 bostic Exp $
-#
-
-# TEST mutex001
-# TEST Test basic mutex functionality
-proc mutex001 { } {
- source ./include.tcl
-
- puts "Mutex001: Basic functionality"
- env_cleanup $testdir
- set nlocks 20
-
- # Test open w/out create; should fail
- error_check_bad \
- env_open [catch {berkdb_env -lock -home $testdir} env] 0
-
- puts "\tMutex001.a: Create lock env"
- # Now open for real
- set env [berkdb_env -create -mode 0644 -lock -home $testdir]
- error_check_good env_open [is_valid_env $env] TRUE
-
- puts "\tMutex001.b: Create $nlocks mutexes"
- set m [$env mutex 0644 $nlocks]
- error_check_good mutex_init [is_valid_mutex $m $env] TRUE
-
- # Get, set each mutex; sleep, then get Release
- puts "\tMutex001.c: Get/set loop"
- for { set i 0 } { $i < $nlocks } { incr i } {
- set r [$m get $i ]
- error_check_good mutex_get $r 0
-
- set r [$m setval $i $i]
- error_check_good mutex_setval $r 0
- }
- tclsleep 5
- for { set i 0 } { $i < $nlocks } { incr i } {
- set r [$m getval $i]
- error_check_good mutex_getval $r $i
-
- set r [$m release $i ]
- error_check_good mutex_get $r 0
- }
-
- error_check_good mutex_close [$m close] 0
- error_check_good env_close [$env close] 0
-}
diff --git a/db/test/mutex002.tcl b/db/test/mutex002.tcl
deleted file mode 100644
index f03a63ac1..000000000
--- a/db/test/mutex002.tcl
+++ /dev/null
@@ -1,94 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2004
-# Sleepycat Software. All rights reserved.
-#
-# $Id: mutex002.tcl,v 11.25 2004/01/28 03:36:28 bostic Exp $
-#
-
-# TEST mutex002
-# TEST Test basic mutex synchronization
-proc mutex002 { } {
- source ./include.tcl
-
- puts "Mutex002: Basic synchronization"
- env_cleanup $testdir
- set nlocks 20
-
- # Fork off child before we open any files.
- set f1 [open |$tclsh_path r+]
- puts $f1 "source $test_path/test.tcl"
- flush $f1
-
- # Open the environment and the mutex locally
- puts "\tMutex002.a: Open local and remote env"
- set local_env [berkdb_env -create -mode 0644 -lock -home $testdir]
- error_check_good env_open [is_valid_env $local_env] TRUE
-
- set local_mutex [$local_env mutex 0644 $nlocks]
- error_check_good \
- mutex_init [is_valid_mutex $local_mutex $local_env] TRUE
-
- # Open the environment and the mutex remotely
- set remote_env [send_cmd $f1 "berkdb_env -lock -home $testdir"]
- error_check_good remote:env_open [is_valid_env $remote_env] TRUE
-
- set remote_mutex [send_cmd $f1 "$remote_env mutex 0644 $nlocks"]
- error_check_good \
- mutex_init [is_valid_mutex $remote_mutex $remote_env] TRUE
-
- # Do a get here, then set the value to be pid.
- # On the remote side fire off a get and getval.
- puts "\tMutex002.b: Local and remote get/set"
- set r [$local_mutex get 1]
- error_check_good lock_get $r 0
-
- set r [$local_mutex setval 1 [pid]]
- error_check_good lock_get $r 0
-
- # Now have the remote side request the lock and check its
- # value. Then wait 5 seconds, release the mutex and see
- # what the remote side returned.
- send_timed_cmd $f1 1 "$remote_mutex get 1"
- send_timed_cmd $f1 1 "set ret \[$remote_mutex getval 1\]"
-
- # Now sleep before resetting and releasing lock
- tclsleep 5
- set newv [expr [pid] - 1]
- set r [$local_mutex setval 1 $newv]
- error_check_good mutex_setval $r 0
-
- set r [$local_mutex release 1]
- error_check_good mutex_release $r 0
-
- # Now get the result from the other script
- # Timestamp
- set result [rcv_result $f1]
- error_check_good lock_get:remote_time [expr $result > 4] 1
-
- # Timestamp
- set result [rcv_result $f1]
-
- # Mutex value
- set result [send_cmd $f1 "puts \$ret"]
- error_check_good lock_get:remote_getval $result $newv
-
- # Close down the remote
- puts "\tMutex002.c: Close remote"
- set ret [send_cmd $f1 "$remote_mutex close" 5]
- # Not sure why we need this, but we do... an extra blank line
- # someone gets output somewhere
- gets $f1 ret
- error_check_good remote:mutex_close $ret 0
-
- set ret [send_cmd $f1 "$remote_env close"]
- error_check_good remote:env_close $ret 0
-
- catch { close $f1 } result
-
- set ret [$local_mutex close]
- error_check_good local:mutex_close $ret 0
-
- set ret [$local_env close]
- error_check_good local:env_close $ret 0
-}
diff --git a/db/test/mutex003.tcl b/db/test/mutex003.tcl
deleted file mode 100644
index 7efd0883e..000000000
--- a/db/test/mutex003.tcl
+++ /dev/null
@@ -1,52 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2004
-# Sleepycat Software. All rights reserved.
-#
-# $Id: mutex003.tcl,v 11.26 2004/01/28 03:36:28 bostic Exp $
-#
-
-# TEST mutex003
-# TEST Generate a bunch of parallel testers that try to randomly obtain locks.
-proc mutex003 { } {
- source ./include.tcl
-
- set nmutex 20
- set iter 500
- set procs 5
- set mdegree 3
- set wait 2
- puts "Mutex003: Multi-process random mutex test"
-
- env_cleanup $testdir
-
- puts "\tMutex003.a: Create environment"
- # Now open the region we'll use for multiprocess testing.
- set env [berkdb_env -create -mode 0644 -lock -home $testdir]
- error_check_good env_open [is_valid_env $env] TRUE
-
- set mutex [$env mutex 0644 $nmutex]
- error_check_good mutex_init [is_valid_mutex $mutex $env] TRUE
-
- error_check_good mutex_close [$mutex close] 0
-
- # Now spawn off processes
- puts "\tMutex003.b: Create $procs processes"
- set pidlist {}
- for { set i 0 } {$i < $procs} {incr i} {
- puts "$tclsh_path\
- $test_path/mutexscript.tcl $testdir\
- $iter $nmutex $wait $mdegree > $testdir/$i.mutexout &"
- set p [exec $tclsh_path $test_path/wrap.tcl \
- mutexscript.tcl $testdir/$i.mutexout $testdir\
- $iter $nmutex $wait $mdegree &]
- lappend pidlist $p
- }
- puts "\tMutex003.c: $procs independent processes now running"
- watch_procs $pidlist
- error_check_good env_close [$env close] 0
- # Remove output files
- for { set i 0 } {$i < $procs} {incr i} {
- fileremove -f $testdir/$i.mutexout
- }
-}
diff --git a/db/test/mutexscript.tcl b/db/test/mutexscript.tcl
deleted file mode 100644
index 7bf1bbe95..000000000
--- a/db/test/mutexscript.tcl
+++ /dev/null
@@ -1,91 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2004
-# Sleepycat Software. All rights reserved.
-#
-# $Id: mutexscript.tcl,v 11.18 2004/01/28 03:36:28 bostic Exp $
-#
-# Random mutex tester.
-# Usage: mutexscript dir numiters mlocks sleepint degree
-# dir: dir in which all the mutexes live.
-# numiters: Total number of iterations.
-# nmutex: Total number of mutexes.
-# sleepint: Maximum sleep interval.
-# degree: Maximum number of locks to acquire at once
-
-source ./include.tcl
-source $test_path/test.tcl
-source $test_path/testutils.tcl
-
-set usage "mutexscript dir numiters nmutex sleepint degree"
-
-# Verify usage
-if { $argc != 5 } {
- puts stderr "FAIL:[timestamp] Usage: $usage"
- exit
-}
-
-# Initialize arguments
-set dir [lindex $argv 0]
-set numiters [ lindex $argv 1 ]
-set nmutex [ lindex $argv 2 ]
-set sleepint [ lindex $argv 3 ]
-set degree [ lindex $argv 4 ]
-set locker [pid]
-set mypid [sanitized_pid]
-
-# Initialize seed
-global rand_init
-berkdb srand $rand_init
-
-puts -nonewline "Mutexscript: Beginning execution for $locker:"
-puts " $numiters $nmutex $sleepint $degree"
-flush stdout
-
-# Open the environment and the mutex
-set e [berkdb_env -create -mode 0644 -lock -home $dir]
-error_check_good evn_open [is_valid_env $e] TRUE
-
-set mutex [$e mutex 0644 $nmutex]
-error_check_good mutex_init [is_valid_mutex $mutex $e] TRUE
-
-# Sleep for awhile to make sure that everyone has gotten in
-tclsleep 5
-
-for { set iter 0 } { $iter < $numiters } { incr iter } {
- set nlocks [berkdb random_int 1 $degree]
- # We will always lock objects in ascending order to avoid
- # deadlocks.
- set lastobj 1
- set mlist {}
- for { set lnum 0 } { $lnum < $nlocks } { incr lnum } {
- # Pick lock parameters
- set obj [berkdb random_int $lastobj [expr $nmutex - 1]]
- set lastobj [expr $obj + 1]
- puts "[timestamp] $locker $lnum: $obj"
-
- # Do get, set its val to own pid, and then add to list
- error_check_good mutex_get:$obj [$mutex get $obj] 0
- error_check_good mutex_setval:$obj [$mutex setval $obj $mypid] 0
- lappend mlist $obj
- if {$lastobj >= $nmutex} {
- break
- }
- }
-
- # Sleep for 10 to (100*$sleepint) ms.
- after [berkdb random_int 10 [expr $sleepint * 100]]
-
- # Now release locks
- foreach i $mlist {
- error_check_good mutex_getval:$i [$mutex getval $i] $mypid
- error_check_good mutex_setval:$i \
- [$mutex setval $i [expr 0 - $mypid]] 0
- error_check_good mutex_release:$i [$mutex release $i] 0
- }
- puts "[timestamp] $locker released mutexes"
- flush stdout
-}
-
-puts "[timestamp] $locker Complete"
-flush stdout
diff --git a/db/test/ndbm.tcl b/db/test/ndbm.tcl
index 461364f56..93642124d 100644
--- a/db/test/ndbm.tcl
+++ b/db/test/ndbm.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: ndbm.tcl,v 12.3 2006/08/24 14:46:36 bostic Exp $
+# $Id: ndbm.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# Historic NDBM interface test.
# Use the first 1000 entries from the dictionary.
diff --git a/db/test/parallel.tcl b/db/test/parallel.tcl
index 5fca52e1d..1bea5b740 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 12.5 2006/07/28 14:00:25 carol Exp $
+# $Id: parallel.tcl,v 12.6 2007/06/05 20:00:46 carol Exp $
proc load_queue { file {dbdir RUNQUEUE} nitems } {
global serial_tests
global num_serial
@@ -298,7 +298,7 @@ proc mkparalleldirs { nprocs basename queuedir } {
catch {eval file copy \
[eval glob {$dir/db_{checkpoint,deadlock}$EXE} \
{$dir/db_{dump,load,printlog,recover,stat,upgrade}$EXE} \
- {$dir/db_{archive,verify}$EXE}] \
+ {$dir/db_{archive,verify,hotbackup}$EXE}] \
$destdir}
# Create modified copies of include.tcl in parallel
diff --git a/db/test/plat001.tcl b/db/test/plat001.tcl
index 995af0e39..389b5c8f4 100644
--- a/db/test/plat001.tcl
+++ b/db/test/plat001.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2005-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2005,2007 Oracle. All rights reserved.
#
-# $Id: plat001.tcl,v 1.5 2006/08/24 14:46:36 bostic Exp $
+# $Id: plat001.tcl,v 1.7 2007/05/17 15:15:55 bostic Exp $
#
# TEST plat001
# TEST
diff --git a/db/test/recd001.tcl b/db/test/recd001.tcl
index 047c50a33..f180d217f 100644
--- a/db/test/recd001.tcl
+++ b/db/test/recd001.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: recd001.tcl,v 12.4 2006/08/24 14:46:36 bostic Exp $
+# $Id: recd001.tcl,v 12.6 2007/05/17 15:15:55 bostic Exp $
#
# TEST recd001
# TEST Per-operation recovery tests for non-duplicate, non-split
diff --git a/db/test/recd002.tcl b/db/test/recd002.tcl
index 13ef01f77..152e3bf53 100644
--- a/db/test/recd002.tcl
+++ b/db/test/recd002.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: recd002.tcl,v 12.5 2006/08/24 14:46:36 bostic Exp $
+# $Id: recd002.tcl,v 12.7 2007/05/17 15:15:55 bostic Exp $
#
# TEST recd002
# TEST Split recovery tests. For every known split log message, makes sure
diff --git a/db/test/recd003.tcl b/db/test/recd003.tcl
index 0fc7cd219..1927d4f51 100644
--- a/db/test/recd003.tcl
+++ b/db/test/recd003.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: recd003.tcl,v 12.3 2006/08/24 14:46:36 bostic Exp $
+# $Id: recd003.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# TEST recd003
# TEST Duplicate recovery tests. For every known duplicate log message,
diff --git a/db/test/recd004.tcl b/db/test/recd004.tcl
index 4b35c460b..8f788cd23 100644
--- a/db/test/recd004.tcl
+++ b/db/test/recd004.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: recd004.tcl,v 12.3 2006/08/24 14:46:36 bostic Exp $
+# $Id: recd004.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# TEST recd004
# TEST Big key test where big key gets elevated to internal page.
diff --git a/db/test/recd005.tcl b/db/test/recd005.tcl
index e3a0df3e5..d8ddd5033 100644
--- a/db/test/recd005.tcl
+++ b/db/test/recd005.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: recd005.tcl,v 12.5 2006/08/24 14:46:36 bostic Exp $
+# $Id: recd005.tcl,v 12.7 2007/05/17 15:15:55 bostic Exp $
#
# TEST recd005
# TEST Verify reuse of file ids works on catastrophic recovery.
diff --git a/db/test/recd006.tcl b/db/test/recd006.tcl
index 168941bb3..a32c91701 100644
--- a/db/test/recd006.tcl
+++ b/db/test/recd006.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: recd006.tcl,v 12.3 2006/08/24 14:46:36 bostic Exp $
+# $Id: recd006.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# TEST recd006
# TEST Nested transactions.
diff --git a/db/test/recd007.tcl b/db/test/recd007.tcl
index 266ab2200..aae499129 100644
--- a/db/test/recd007.tcl
+++ b/db/test/recd007.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: recd007.tcl,v 12.6 2006/08/24 14:46:36 bostic Exp $
+# $Id: recd007.tcl,v 12.8 2007/05/17 15:15:55 bostic Exp $
#
# TEST recd007
# TEST File create/delete tests.
diff --git a/db/test/recd008.tcl b/db/test/recd008.tcl
index 45103db91..ff0605ff8 100644
--- a/db/test/recd008.tcl
+++ b/db/test/recd008.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: recd008.tcl,v 12.5 2006/08/24 14:46:36 bostic Exp $
+# $Id: recd008.tcl,v 12.7 2007/05/17 15:15:55 bostic Exp $
#
# TEST recd008
# TEST Test deeply nested transactions and many-child transactions.
diff --git a/db/test/recd009.tcl b/db/test/recd009.tcl
index 9e25cf359..f28b7a158 100644
--- a/db/test/recd009.tcl
+++ b/db/test/recd009.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: recd009.tcl,v 12.3 2006/08/24 14:46:36 bostic Exp $
+# $Id: recd009.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# TEST recd009
# TEST Verify record numbering across split/reverse splits and recovery.
diff --git a/db/test/recd010.tcl b/db/test/recd010.tcl
index 4c36bdcf7..e4483f29a 100644
--- a/db/test/recd010.tcl
+++ b/db/test/recd010.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: recd010.tcl,v 12.3 2006/08/24 14:46:36 bostic Exp $
+# $Id: recd010.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# TEST recd010
# TEST Test stability of btree duplicates across btree off-page dup splits
diff --git a/db/test/recd011.tcl b/db/test/recd011.tcl
index a2ef7561b..796a9f1f2 100644
--- a/db/test/recd011.tcl
+++ b/db/test/recd011.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2000-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2000,2007 Oracle. All rights reserved.
#
-# $Id: recd011.tcl,v 12.3 2006/08/24 14:46:36 bostic Exp $
+# $Id: recd011.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# TEST recd011
# TEST Verify that recovery to a specific timestamp works.
diff --git a/db/test/recd012.tcl b/db/test/recd012.tcl
index 29a03b02a..f21dc4b7e 100644
--- a/db/test/recd012.tcl
+++ b/db/test/recd012.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2000-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2000,2007 Oracle. All rights reserved.
#
-# $Id: recd012.tcl,v 12.3 2006/08/24 14:46:36 bostic Exp $
+# $Id: recd012.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# TEST recd012
# TEST Test of log file ID management. [#2288]
diff --git a/db/test/recd013.tcl b/db/test/recd013.tcl
index bf8d9e6b2..ef794e4b1 100644
--- a/db/test/recd013.tcl
+++ b/db/test/recd013.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2000-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2000,2007 Oracle. All rights reserved.
#
-# $Id: recd013.tcl,v 12.4 2006/08/24 14:46:36 bostic Exp $
+# $Id: recd013.tcl,v 12.6 2007/05/17 15:15:55 bostic Exp $
#
# TEST recd013
# TEST Test of cursor adjustment on child transaction aborts. [#2373]
diff --git a/db/test/recd014.tcl b/db/test/recd014.tcl
index 1af31f85e..575da4406 100644
--- a/db/test/recd014.tcl
+++ b/db/test/recd014.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: recd014.tcl,v 12.3 2006/08/24 14:46:36 bostic Exp $
+# $Id: recd014.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# TEST recd014
# TEST This is a recovery test for create/delete of queue extents. We
diff --git a/db/test/recd015.tcl b/db/test/recd015.tcl
index 99d0fc533..aed3733ce 100644
--- a/db/test/recd015.tcl
+++ b/db/test/recd015.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: recd015.tcl,v 12.3 2006/08/24 14:46:36 bostic Exp $
+# $Id: recd015.tcl,v 12.8 2007/05/17 15:15:55 bostic Exp $
#
# TEST recd015
# TEST This is a recovery test for testing lots of prepared txns.
@@ -26,8 +25,8 @@ proc recd015 { method args } {
set env_cmd "berkdb_env -create -txn -home $testdir"
set msg "\tRecd015.a"
- puts "$msg Simple test to prepare $numtxns txn "
foreach op { abort commit discard } {
+ puts "$msg: Simple test to prepare $numtxns txn with $op "
env_cleanup $testdir
recd015_body $env_cmd $testfile $numtxns $msg $op
}
@@ -36,7 +35,7 @@ proc recd015 { method args } {
# Now test large numbers of prepared txns to test DB_NEXT
# on txn_recover.
#
- set numtxns 250
+ set numtxns 10000
set testfile recd015.db
set txnmax [expr $numtxns + 5]
#
@@ -44,7 +43,8 @@ proc recd015 { method args } {
# don't need to send methods and args to the script.
#
env_cleanup $testdir
- set env_cmd "berkdb_env -create -txn_max $txnmax -txn -home $testdir"
+ set env_cmd "berkdb_env -create -txn_max \
+ $txnmax -lock_max_lockers $txnmax -txn -home $testdir"
set env [eval $env_cmd]
error_check_good dbenv [is_valid_env $env] TRUE
set db [eval {berkdb_open -create} $omethod -env $env $args $testfile]
@@ -53,8 +53,8 @@ proc recd015 { method args } {
error_check_good envclose [$env close] 0
set msg "\tRecd015.b"
- puts "$msg Large test to prepare $numtxns txn "
foreach op { abort commit discard } {
+ puts "$msg: Large test to prepare $numtxns txn with $op"
recd015_body $env_cmd $testfile $numtxns $msg $op
}
diff --git a/db/test/recd016.tcl b/db/test/recd016.tcl
index 92e41068c..f4aecd2a7 100644
--- a/db/test/recd016.tcl
+++ b/db/test/recd016.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: recd016.tcl,v 12.4 2006/08/24 14:46:36 bostic Exp $
+# $Id: recd016.tcl,v 12.7 2007/05/17 15:15:55 bostic Exp $
#
# TEST recd016
# TEST Test recovery after checksum error.
@@ -136,7 +135,7 @@ proc recd016 { method args} {
error_check_good db:fail [is_substr $ret "run recovery"] 1
set ret [send_cmd $f1 "$dbenv close"]
- error_check_good env_close:fail [is_substr $ret "run recovery"] 1
+ error_check_good env_close:fail [is_substr $ret "handles still open"] 1
close $f1
# Keep track of the log types we've seen
diff --git a/db/test/recd017.tcl b/db/test/recd017.tcl
index a95ed9c4f..4aaa1572c 100644
--- a/db/test/recd017.tcl
+++ b/db/test/recd017.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: recd017.tcl,v 12.3 2006/08/24 14:46:36 bostic Exp $
+# $Id: recd017.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# TEST recd017
# TEST Test recovery and security. This is basically a watered
diff --git a/db/test/recd018.tcl b/db/test/recd018.tcl
index 94e0ddf30..2d47dad42 100644
--- a/db/test/recd018.tcl
+++ b/db/test/recd018.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2000-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2000,2007 Oracle. All rights reserved.
#
-# $Id: recd018.tcl,v 12.3 2006/08/24 14:46:36 bostic Exp $
+# $Id: recd018.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# TEST recd018
# TEST Test recover of closely interspersed checkpoints and commits.
diff --git a/db/test/recd019.tcl b/db/test/recd019.tcl
index 0efc2b042..ed19eb6e5 100644
--- a/db/test/recd019.tcl
+++ b/db/test/recd019.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: recd019.tcl,v 12.3 2006/08/24 14:46:37 bostic Exp $
+# $Id: recd019.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# TEST recd019
# TEST Test txn id wrap-around and recovery.
diff --git a/db/test/recd020.tcl b/db/test/recd020.tcl
index 8bf133e66..30e5823d8 100644
--- a/db/test/recd020.tcl
+++ b/db/test/recd020.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2004-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2004,2007 Oracle. All rights reserved.
#
-# $Id: recd020.tcl,v 12.4 2006/08/24 14:46:37 bostic Exp $
+# $Id: recd020.tcl,v 12.6 2007/05/17 15:15:55 bostic Exp $
#
# TEST recd020
# TEST Test creation of intermediate directories -- an
diff --git a/db/test/recd021.tcl b/db/test/recd021.tcl
index 096838297..71b32672d 100644
--- a/db/test/recd021.tcl
+++ b/db/test/recd021.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2004-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2004,2007 Oracle. All rights reserved.
#
-# $Id: recd021.tcl,v 12.4 2006/08/24 14:46:37 bostic Exp $
+# $Id: recd021.tcl,v 12.6 2007/05/17 15:15:55 bostic Exp $
#
# TEST recd021
# TEST Test of failed opens in recovery.
diff --git a/db/test/recd022.tcl b/db/test/recd022.tcl
index cf2038b32..df124c285 100644
--- a/db/test/recd022.tcl
+++ b/db/test/recd022.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: recd022.tcl,v 12.6 2006/08/24 14:46:37 bostic Exp $
+# $Id: recd022.tcl,v 12.9 2007/05/17 15:15:55 bostic Exp $
#
# TEST recd022
# TEST Test that pages allocated by an aborted subtransaction
@@ -105,7 +104,7 @@ proc recd022 { method args} {
# Recover, then abort the recovered parent txn
puts "\tRecd022.h: recover, then abort parent"
- set env1 [berkdb env -create -recover -home $testdir -txn]
+ set env1 [berkdb_env -create -recover -home $testdir -txn]
set txnlist [$env1 txn_recover]
set aborttxn [lindex [lindex $txnlist 0] 0]
error_check_good parent_abort [$aborttxn abort] 0
diff --git a/db/test/recd023.tcl b/db/test/recd023.tcl
index 141c2b9ec..8f777a68b 100644
--- a/db/test/recd023.tcl
+++ b/db/test/recd023.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2004-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2004,2007 Oracle. All rights reserved.
#
-# $Id: recd023.tcl,v 12.6 2006/08/24 14:46:37 bostic Exp $
+# $Id: recd023.tcl,v 12.8 2007/05/17 15:15:55 bostic Exp $
#
# TEST recd023
# TEST Test recover of reverse split.
diff --git a/db/test/recd15scr.tcl b/db/test/recd15scr.tcl
index 43721e288..301a123f9 100644
--- a/db/test/recd15scr.tcl
+++ b/db/test/recd15scr.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: recd15scr.tcl,v 12.3 2006/08/24 14:46:37 bostic Exp $
+# $Id: recd15scr.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# Recd15 - lots of txns - txn prepare script
# Usage: recd15script envcmd dbcmd gidf numtxns
diff --git a/db/test/recd15script.tcl b/db/test/recd15script.tcl
deleted file mode 100644
index 4d28d9452..000000000
--- a/db/test/recd15script.tcl
+++ /dev/null
@@ -1,66 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2001
-# Sleepycat Software. All rights reserved.
-#
-# Id: recd15script.tcl,v 1.2 2001/05/02 15:32:33 sue Exp
-#
-# Recd15 - lots of txns - txn prepare script
-# Usage: recd15script envcmd dbcmd gidf numtxns
-# envcmd: command to open env
-# dbfile: name of database file
-# gidf: name of global id file
-# numtxns: number of txns to start
-
-source ./include.tcl
-source $test_path/test.tcl
-source $test_path/testutils.tcl
-
-set usage "recd15script envcmd dbfile gidfile numtxns"
-
-# Verify usage
-if { $argc != 4 } {
- puts stderr "FAIL:[timestamp] Usage: $usage"
- exit
-}
-
-# Initialize arguments
-set envcmd [ lindex $argv 0 ]
-set dbfile [ lindex $argv 1 ]
-set gidfile [ lindex $argv 2 ]
-set numtxns [ lindex $argv 3 ]
-
-set txnmax [expr $numtxns + 5]
-set dbenv [eval $envcmd]
-error_check_good envopen [is_valid_env $dbenv] TRUE
-
-set db [berkdb_open -env $dbenv $dbfile]
-error_check_good dbopen [is_valid_db $db] TRUE
-
-puts "\tRecd015script.b: Begin $numtxns txns"
-for {set i 0} {$i < $numtxns} {incr i} {
- set t [$dbenv txn]
- error_check_good txnbegin($i) [is_valid_txn $t $dbenv] TRUE
- set txns($i) $t
-# set dbc [$db cursor -txn $t]
-# error_check_good cursor($i) [is_valid_cursor $dbc $db] TRUE
-# set curs($i) $dbc
-}
-
-puts "\tRecd015script.c: Prepare $numtxns txns"
-set gfd [open $gidfile w+]
-for {set i 0} {$i < $numtxns} {incr i} {
-# set dbc $curs($i)
-# error_check_good dbc_close [$dbc close] 0
- set t $txns($i)
- set gid [make_gid recd015script:$t]
- puts $gfd $gid
- error_check_good txn_prepare:$t [$t prepare $gid] 0
-}
-close $gfd
-
-#
-# We do not close the db or env, but exit with the txns outstanding.
-#
-puts "\tRecd015script completed successfully"
-flush stdout
diff --git a/db/test/recdscript.tcl b/db/test/recdscript.tcl
index ef5e44546..393c00de0 100644
--- a/db/test/recdscript.tcl
+++ b/db/test/recdscript.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: recdscript.tcl,v 12.3 2006/08/24 14:46:37 bostic Exp $
+# $Id: recdscript.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# Recovery txn prepare script
# Usage: recdscript op dir envcmd dbfile cmd
diff --git a/db/test/rep001.tcl b/db/test/rep001.tcl
index a78a844e9..34b239969 100644
--- a/db/test/rep001.tcl
+++ b/db/test/rep001.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2001-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2001,2007 Oracle. All rights reserved.
#
-# $Id: rep001.tcl,v 12.11 2006/08/24 14:46:37 bostic Exp $
+# $Id: rep001.tcl,v 12.17 2007/06/19 02:50:40 mjc Exp $
#
# TEST rep001
# TEST Replication rename and forced-upgrade test.
@@ -85,6 +84,12 @@ proc rep001_sub { method niter tnum envargs logset recargs inmem largs } {
source ./include.tcl
global testdir
global encrypt
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
env_cleanup $testdir
@@ -99,6 +104,9 @@ proc rep001_sub { method niter tnum envargs logset recargs inmem largs } {
set m_logtype [lindex $logset 0]
set c_logtype [lindex $logset 1]
+ set verify_subset \
+ [expr { $m_logtype == "in-memory" || $c_logtype == "in-memory" }]
+
# In-memory logs require a large log buffer, and cannot
# be used with -txn nosync. Adjust the args for master
# and client.
@@ -110,37 +118,29 @@ proc rep001_sub { method niter tnum envargs logset recargs inmem largs } {
# Open a master.
repladd 1
set env_cmd(M) "berkdb_env_noerr -create \
- -log_max 1000000 $envargs $m_logargs $recargs \
+ -log_max 1000000 $envargs $m_logargs $recargs $verbargs \
-home $masterdir -errpfx MASTER $m_txnargs -rep_master \
-rep_transport \[list 1 replsend\]"
-# set env_cmd(M) "berkdb_env_noerr -create \
-# -log_max 1000000 $envargs $m_logargs $recargs \
-# -home $masterdir \
-# -verbose {rep on} -errfile /dev/stderr \
-# -errpfx MASTER $m_txnargs -rep_master \
-# -rep_transport \[list 1 replsend\]"
set masterenv [eval $env_cmd(M)]
- error_check_good master_env [is_valid_env $masterenv] TRUE
# Open a client
repladd 2
set env_cmd(C) "berkdb_env_noerr -create \
- -log_max 1000000 $envargs $c_logargs $recargs \
+ -log_max 1000000 $envargs $c_logargs $recargs $verbargs \
-home $clientdir -errpfx CLIENT $c_txnargs -rep_client \
-rep_transport \[list 2 replsend\]"
-# set env_cmd(C) "berkdb_env_noerr -create \
-# -log_max 1000000 $envargs $c_logargs $recargs \
-# -home $clientdir \
-# -verbose {rep on} -errfile /dev/stderr \
-# -errpfx CLIENT $c_txnargs -rep_client \
-# -rep_transport \[list 2 replsend\]"
set clientenv [eval $env_cmd(C)]
- error_check_good client_env [is_valid_env $clientenv] TRUE
# Bring the client online by processing the startup messages.
set envlist "{$masterenv 1} {$clientenv 2}"
process_msgs $envlist
+ # Clobber replication's 30-second anti-archive timer, which will have
+ # been started by client sync-up internal init, so that we can do a
+ # db_remove in a moment.
+ #
+ $masterenv test force noarchive_timeout
+
# Run rep_test in the master (and update client).
puts "\tRep$tnum.a:\
Running rep_test in replicated env ($envargs $recargs)."
@@ -154,7 +154,7 @@ proc rep001_sub { method niter tnum envargs logset recargs inmem largs } {
set dbname "test.db"
}
- rep_verify $masterdir $masterenv $clientdir $clientenv 0 1 1 $dbname
+ rep_verify $masterdir $masterenv $clientdir $clientenv $verify_subset 1 1 $dbname
# Remove the file (and update client).
puts "\tRep$tnum.c: Remove the file on the master and close master."
@@ -176,10 +176,9 @@ proc rep001_sub { method niter tnum envargs logset recargs inmem largs } {
puts "\tRep$tnum.f: Reopen old master as client and catch up."
# Throttle master so it can't send everything at once
$newmasterenv rep_limit 0 [expr 64 * 1024]
- set newclientenv [eval {berkdb_env -create -recover} \
- $envargs -txn nosync \
+ set newclientenv [eval {berkdb_env_noerr -create -recover} \
+ $envargs -txn nosync -errpfx NEWCLIENT \
{-home $masterdir -rep_client -rep_transport [list 1 replsend]}]
- error_check_good newclient_env [is_valid_env $newclientenv] TRUE
set envlist "{$newclientenv 1} {$newmasterenv 2}"
process_msgs $envlist
@@ -201,7 +200,8 @@ proc rep001_sub { method niter tnum envargs logset recargs inmem largs } {
# Verify the database in the client dir.
puts "\tRep$tnum.h: Verifying new client database contents."
- rep_verify $masterdir $newmasterenv $clientdir $newclientenv 0 1 1 $dbname
+ rep_verify \
+ $masterdir $newmasterenv $clientdir $newclientenv $verify_subset 1 1 $dbname
error_check_good newmasterenv_close [$newmasterenv close] 0
error_check_good newclientenv_close [$newclientenv close] 0
diff --git a/db/test/rep002.tcl b/db/test/rep002.tcl
index ddc34ea28..af34b7dcb 100644
--- a/db/test/rep002.tcl
+++ b/db/test/rep002.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2002-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2002,2007 Oracle. All rights reserved.
#
-# $Id: rep002.tcl,v 12.10 2006/09/13 16:51:39 carol Exp $
+# $Id: rep002.tcl,v 12.16 2007/05/17 18:17:21 bostic Exp $
#
# TEST rep002
# TEST Basic replication election test.
@@ -60,7 +59,14 @@ proc rep002 { method { niter 10 } { nclients 3 } { tnum "002" } args } {
proc rep002_sub { method niter nclients tnum logset recargs largs } {
source ./include.tcl
global elect_timeout elect_serial
- set elect_timeout 5000000
+ set elect_timeout(default) 5000000
+
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
env_cleanup $testdir
@@ -84,32 +90,23 @@ proc rep002_sub { method niter nclients tnum logset recargs largs } {
# Open a master.
repladd 1
set env_cmd(M) "berkdb_env_noerr -create -log_max 1000000 \
- -home $masterdir $m_logargs -errpfx MASTER \
+ -event rep_event \
+ -home $masterdir $m_logargs -errpfx MASTER $verbargs \
$m_txnargs -rep_master -rep_transport \[list 1 replsend\]"
-# set env_cmd(M) "berkdb_env_noerr -create -log_max 1000000 \
-# -home $masterdir $m_logargs -errpfx MASTER -errfile /dev/stderr \
-# -verbose {rep on} $m_txnargs -rep_master \
-# -rep_transport \[list 1 replsend\]"
# In an election test, the -recovery arg must not go
# in the env_cmd string because that is going to be
# passed to a child process.
set masterenv [eval $env_cmd(M) $recargs]
- error_check_good master_env [is_valid_env $masterenv] TRUE
# Open the clients.
for { set i 0 } { $i < $nclients } { incr i } {
set envid [expr $i + 2]
repladd $envid
set env_cmd($i) "berkdb_env_noerr -create -home $clientdir($i) \
+ -event rep_event \
$c_logargs($i) $c_txnargs($i) -rep_client -errpfx CLIENT$i \
- -rep_transport \[list $envid replsend\]"
-# set env_cmd($i) "berkdb_env_noerr -create -home $clientdir($i) \
-# $c_logargs($i) -verbose {rep on} -errfile /dev/stderr \
-# $c_txnargs($i) -rep_client -errpfx CLIENT$i \
-# -rep_transport \[list $envid replsend\]"
+ $verbargs -rep_transport \[list $envid replsend\]"
set clientenv($i) [eval $env_cmd($i) $recargs]
- error_check_good \
- client_env($i) [is_valid_env $clientenv($i)] TRUE
}
# Loop, processing first the master's messages, then the client's,
@@ -152,7 +149,7 @@ proc rep002_sub { method niter nclients tnum logset recargs largs } {
# sites got a HOLDELECTION and checking that the master i.d. is
# unchanged after the election.
- set origmasterid [stat_field $masterenv rep_stat "Master"]
+ set origmasterid [stat_field $masterenv rep_stat "Master"]
set origgeneration [stat_field $masterenv rep_stat "Generation number"]
set got_hold_elect(M) 0
@@ -160,8 +157,8 @@ proc rep002_sub { method niter nclients tnum logset recargs largs } {
set got_hold_elect($i) 0
set elect_pipe($i) INVALID
}
- set elect_pipe(0) [start_election C0 \
- $qdir $env_cmd(0) [expr $nclients + 1] $nclients 20 $elect_timeout]
+ set elect_pipe(0) [start_election C0 $qdir $env_cmd(0) \
+ [expr $nclients + 1] $nclients 20 $elect_timeout(default)]
tclsleep 2
@@ -176,7 +173,7 @@ proc rep002_sub { method niter nclients tnum logset recargs largs } {
incr elect_serial
set elect_pipe(M) [start_election CM $qdir \
$env_cmd(M) [expr $nclients + 1] $nclients \
- 0 $elect_timeout]
+ 0 $elect_timeout(default)]
set got_hold_elect(M) 1
}
@@ -195,7 +192,7 @@ proc rep002_sub { method niter nclients tnum logset recargs largs } {
set elect_pipe($i) [start_election $pfx $qdir \
$env_cmd($i) [expr $nclients + 1] \
$nclients 0 \
- $elect_timeout]
+ $elect_timeout(default)]
set got_hold_elect($i) 1
}
}
@@ -204,7 +201,7 @@ proc rep002_sub { method niter nclients tnum logset recargs largs } {
break
}
}
- set masterid [stat_field $masterenv rep_stat "Master"]
+ set masterid [stat_field $masterenv rep_stat "Master"]
set generation [stat_field $masterenv rep_stat "Generation number"]
error_check_good master_unchanged $origmasterid $masterid
error_check_good gen_unchanged $origgeneration $generation
diff --git a/db/test/rep003.tcl b/db/test/rep003.tcl
index c9a2e793a..45d40a04e 100644
--- a/db/test/rep003.tcl
+++ b/db/test/rep003.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2002-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2002,2007 Oracle. All rights reserved.
#
-# $Id: rep003.tcl,v 12.7 2006/08/24 14:46:37 bostic Exp $
+# $Id: rep003.tcl,v 12.12 2007/06/01 20:15:58 sue Exp $
#
# TEST rep003
# TEST Repeated shutdown/restart replication test
@@ -65,6 +64,12 @@ proc rep003 { method { tnum "003" } args } {
proc rep003_sub { method tnum logset recargs largs } {
source ./include.tcl
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
env_cleanup $testdir
@@ -88,7 +93,7 @@ proc rep003_sub { method tnum logset recargs largs } {
# Open a master.
repladd 1
set env_cmd(M) "berkdb_env_noerr -create -log_max 1000000 \
- -errpfx MASTER -errfile /dev/stderr \
+ -errpfx MASTER $verbargs \
-home $masterdir -txn $m_logargs -rep_master \
-rep_transport \[list 1 replsend\]"
set masterenv [eval $env_cmd(M) $recargs]
@@ -102,7 +107,7 @@ proc rep003_sub { method tnum logset recargs largs } {
# Open a client.
repladd 2
set env_cmd(C) "berkdb_env_noerr -create -private -home $clientdir \
- -txn $c_logargs -errpfx CLIENT -errfile /dev/stderr \
+ -txn $c_logargs -errpfx CLIENT $verbargs \
-rep_client -rep_transport \[list 2 replsend\]"
set clientenv [eval $env_cmd(C) $recargs]
error_check_good client_env [is_valid_env $clientenv] TRUE
@@ -125,9 +130,7 @@ proc rep003_sub { method tnum logset recargs largs } {
puts "\tRep$tnum.b: Client restart."
rep003_put $masterenv B1 b-one
- unset clientenv
- set clientenv [berkdb_env_noerr -create -private -home $clientdir -txn \
- -rep_client -rep_transport [list 2 replsend]]
+ set clientenv [eval $env_cmd(C)]
error_check_good client_env [is_valid_env $clientenv] TRUE
# Loop letting the client and master sync up and get the
@@ -172,9 +175,7 @@ proc rep003_sub { method tnum logset recargs largs } {
puts "\tRep$tnum.c: Client restart after recovery."
rep003_put $masterenv C1 c-one
- unset clientenv
- set clientenv [berkdb_env_noerr -create -private -home $clientdir -txn \
- -recover -rep_client -rep_transport [list 2 replsend]]
+ set clientenv [eval $env_cmd(C) -recover]
error_check_good client_env [is_valid_env $clientenv] TRUE
# Loop, processing first the master's messages, then the client's,
@@ -222,9 +223,7 @@ proc rep003_sub { method tnum logset recargs largs } {
puts "\tRep$tnum.d: Client restart after catastrophic recovery."
rep003_put $masterenv D1 d-one
- unset clientenv
- set clientenv [berkdb_env_noerr -create -private -home $clientdir -txn \
- -recover_fatal -rep_client -rep_transport [list 2 replsend]]
+ set clientenv [eval $env_cmd(C) -recover_fatal]
error_check_good client_env [is_valid_env $clientenv] TRUE
# Loop, processing first the master's messages, then the client's,
diff --git a/db/test/rep005.tcl b/db/test/rep005.tcl
index 4fc309a57..1fcc94055 100644
--- a/db/test/rep005.tcl
+++ b/db/test/rep005.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2002-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2002,2007 Oracle. All rights reserved.
#
-# $Id: rep005.tcl,v 12.11 2006/08/24 14:46:37 bostic Exp $
+# $Id: rep005.tcl,v 12.19 2007/06/15 14:39:51 carol Exp $
#
# TEST rep005
# TEST Replication election test with error handling.
@@ -58,6 +57,12 @@ proc rep005_sub { method tnum niter nclients logset recargs largs } {
source ./include.tcl
global rand_init
error_check_good set_random_seed [berkdb srand $rand_init] 0
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
env_cleanup $testdir
@@ -80,20 +85,11 @@ proc rep005_sub { method tnum niter nclients logset recargs largs } {
# Open a master.
repladd 1
- set env_cmd(M) "berkdb_env -create -log_max 1000000 \
- -home $masterdir $m_logargs \
+ set env_cmd(M) "berkdb_env_noerr -create -log_max 1000000 \
+ -event rep_event \
+ -home $masterdir $m_logargs -errpfx MASTER $verbargs \
$m_txnargs -rep_master -rep_transport \[list 1 replsend\]"
-# To debug elections, uncomment the line below and further below
-# for the clients to turn on verbose. Also edit reputils.tcl
-# in proc start_election and swap the 2 commented lines with
-# their counterpart.
-# set env_cmd(M) "berkdb_env_noerr -create -log_max 1000000 \
-# -home $masterdir $m_logargs \
-# $m_txnargs -rep_master \
-# -verbose {rep on} -errpfx MASTER -errfile /dev/stderr \
-# -rep_transport \[list 1 replsend\]"
set masterenv [eval $env_cmd(M) $recargs]
- error_check_good master_env [is_valid_env $masterenv] TRUE
set envlist {}
lappend envlist "$masterenv 1"
@@ -102,16 +98,13 @@ proc rep005_sub { method tnum niter nclients logset recargs largs } {
for { set i 0 } { $i < $nclients } { incr i } {
set envid [expr $i + 2]
repladd $envid
- set env_cmd($i) "berkdb_env -create -home $clientdir($i) \
- $c_logargs($i) $c_txnargs($i) -rep_client \
+ set env_cmd($i) "berkdb_env_noerr -create \
+ -event rep_event \
+ -home $clientdir($i) $c_logargs($i) \
+ $c_txnargs($i) -rep_client $verbargs \
+ -errpfx CLIENT$i \
-rep_transport \[list $envid replsend\]"
-# set env_cmd($i) "berkdb_env_noerr -create -home $clientdir($i) \
-# -verbose {rep on} -errpfx CLIENT$i -errfile /dev/stderr \
-# $c_logargs($i) $c_txnargs($i) -rep_client \
-# -rep_transport \[list $envid replsend\]"
set clientenv($i) [eval $env_cmd($i) $recargs]
- error_check_good \
- client_env($i) [is_valid_env $clientenv($i)] TRUE
lappend envlist "$clientenv($i) $envid"
}
@@ -173,12 +166,19 @@ proc rep005_sub { method tnum niter nclients logset recargs largs } {
proc rep005_elect { ecmd celist qdir msg count \
winner lsn_lose elist logset} {
global elect_timeout elect_serial
+ global timeout_ok
upvar $ecmd env_cmd
upvar $celist envlist
upvar $winner win
upvar $lsn_lose last_win
- set elect_timeout 5000000
+ # Set the proper value for the first time through the
+ # loop. On subsequent passes, timeout_ok will already
+ # be set.
+ if { [info exists timeout_ok] == 0 } {
+ set timeout_ok 0
+ }
+
set nclients [llength $elist]
set nsites [expr $nclients + 1]
@@ -232,7 +232,9 @@ proc rep005_elect { ecmd celist qdir msg count \
set nsites $nclients
set nvotes $nsites
run_election env_cmd envlist err_cmd pri crash \
- $qdir $msg $el $nsites $nvotes $nclients $win
+ $qdir $msg $el $nsites $nvotes $nclients $win \
+ 0 "test.db" 0 $timeout_ok
+
#
# Sometimes test elections with an existing master.
# Other times test elections without master by closing the
@@ -243,8 +245,15 @@ proc rep005_elect { ecmd celist qdir msg count \
set close_list { 0 0 0 1 1 1 1 1 1 1}
set close_len [expr [llength $close_list] - 1]
set close_index [berkdb random_int 0 $close_len]
+
+ # Unless we close the master, the next election will time out.
+ set timeout_ok 1
+
if { [lindex $close_list $close_index] == 1 } {
+ # Declare that we expect the next election to succeed.
+ set timeout_ok 0
puts -nonewline "\t\t$msg: Closing "
+ error_check_good log_flush [$clientenv($win) log_flush] 0
error_check_good newmaster_close [$clientenv($win) close] 0
#
# If the next test should win via LSN then remove the
diff --git a/db/test/rep006.tcl b/db/test/rep006.tcl
index cb9aa5a0a..b89f7a3c6 100644
--- a/db/test/rep006.tcl
+++ b/db/test/rep006.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2003-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2003,2007 Oracle. All rights reserved.
#
-# $Id: rep006.tcl,v 12.11 2006/09/08 20:32:18 bostic Exp $
+# $Id: rep006.tcl,v 12.15 2007/05/17 18:17:21 bostic Exp $
#
# TEST rep006
# TEST Replication and non-rep env handles.
@@ -49,6 +48,12 @@ proc rep006_sub { method niter tnum logset recargs largs } {
source ./include.tcl
global testdir
global is_hp_test
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
env_cleanup $testdir
@@ -79,22 +84,20 @@ proc rep006_sub { method niter tnum logset recargs largs } {
# Open a master.
repladd 1
set max_locks 2500
- set env_cmd(M) "berkdb_env -create -log_max 1000000 \
+ set env_cmd(M) "berkdb_env_noerr -create -log_max 1000000 \
-lock_max_objects $max_locks -lock_max_locks $max_locks \
- -home $masterdir \
+ -home $masterdir -errpfx MASTER $verbargs \
$m_txnargs $m_logargs -rep_master -rep_transport \
\[list 1 replsend\]"
set masterenv [eval $env_cmd(M) $recargs]
- error_check_good master_env [is_valid_env $masterenv] TRUE
# Open a client
repladd 2
- set env_cmd(C) "berkdb_env -create $c_txnargs $c_logargs \
+ set env_cmd(C) "berkdb_env_noerr -create $c_txnargs $c_logargs \
-lock_max_objects $max_locks -lock_max_locks $max_locks \
- -home $clientdir \
+ -home $clientdir -errpfx CLIENT $verbargs \
-rep_client -rep_transport \[list 2 replsend\]"
set clientenv [eval $env_cmd(C) $recargs]
- error_check_good client_env [is_valid_env $clientenv] TRUE
# Bring the client online by processing the startup messages.
set envlist "{$masterenv 1} {$clientenv 2}"
@@ -102,7 +105,7 @@ proc rep006_sub { method niter tnum logset recargs largs } {
# Run a modified test001 in the master (and update client).
puts "\tRep$tnum.a: Running test001 in replicated env."
- eval test001 $method $niter 0 0 $tnum -env $masterenv $largs
+ eval rep_test $method $masterenv NULL $niter 0 0 0 0 $largs
process_msgs $envlist
# Verify the database in the client dir.
@@ -111,7 +114,7 @@ proc rep006_sub { method niter tnum logset recargs largs } {
set t1 $testdir/t1
set t2 $testdir/t2
set t3 $testdir/t3
- open_and_dump_file test$tnum.db $clientenv $t1 \
+ open_and_dump_file test.db $clientenv $t1 \
$checkfunc dump_file_direction "-first" "-next"
# Determine whether this build is configured with --enable-debug_rop
@@ -145,15 +148,15 @@ proc rep006_sub { method niter tnum logset recargs largs } {
} else {
puts "\tRep$tnum.d: Verifying non-master access."
- set rdenv \
- [eval {berkdb_env_noerr -home $masterdir}]
+ set rdenv [eval {berkdb_env_noerr} \
+ -home $masterdir $verbargs]
error_check_good rdenv [is_valid_env $rdenv] TRUE
#
# Open the db read/write which will cause it to try to
# write out a log record, which should fail.
#
set stat \
- [catch {berkdb_open_noerr -env $rdenv test$tnum.db} ret]
+ [catch {berkdb_open_noerr -env $rdenv test.db} ret]
error_check_good open_err $stat 1
error_check_good \
open_err1 [is_substr $ret "attempting to modify"] 1
diff --git a/db/test/rep007.tcl b/db/test/rep007.tcl
index 9395dd04f..3ed0c4c89 100644
--- a/db/test/rep007.tcl
+++ b/db/test/rep007.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2001-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2001,2007 Oracle. All rights reserved.
#
-# $Id: rep007.tcl,v 12.11 2006/08/24 14:46:37 bostic Exp $
+# $Id: rep007.tcl,v 12.16 2007/05/17 18:17:21 bostic Exp $
#
# TEST rep007
# TEST Replication and bad LSNs
@@ -49,6 +48,13 @@ proc rep007 { method { niter 10 } { tnum "007" } args } {
proc rep007_sub { method niter tnum logset recargs largs } {
global testdir
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
+
env_cleanup $testdir
set orig_tdir $testdir
@@ -77,32 +83,23 @@ proc rep007_sub { method niter tnum logset recargs largs } {
# Open a master.
repladd 1
- set ma_envcmd "berkdb_env -create $m_txnargs $m_logargs \
- -home $masterdir -rep_transport \[list 1 replsend\]"
-# set ma_envcmd "berkdb_env -create $m_txnargs $m_logargs \
-# -verbose {rep on} -errpfx MASTER -errfile /dev/stderr \
-# -home $masterdir -rep_transport \[list 1 replsend\]"
+ set ma_envcmd "berkdb_env_noerr -create $m_txnargs $m_logargs \
+ -home $masterdir $verbargs -errpfx MASTER \
+ -rep_transport \[list 1 replsend\]"
set masterenv [eval $ma_envcmd $recargs -rep_master]
- error_check_good master_env [is_valid_env $masterenv] TRUE
# Open two clients
repladd 2
- set cl_envcmd "berkdb_env -create $c_txnargs $c_logargs \
- -home $clientdir -rep_transport \[list 2 replsend\]"
-# set cl_envcmd "berkdb_env -create $c_txnargs $c_logargs \
-# -verbose {rep on} -errpfx CLIENT -errfile /dev/stderr \
-# -home $clientdir -rep_transport \[list 2 replsend\]"
+ set cl_envcmd "berkdb_env_noerr -create $c_txnargs $c_logargs \
+ -home $clientdir $verbargs -errpfx CLIENT1 \
+ -rep_transport \[list 2 replsend\]"
set clientenv [eval $cl_envcmd $recargs -rep_client]
- error_check_good client_env [is_valid_env $clientenv] TRUE
repladd 3
- set cl2_envcmd "berkdb_env -create $c2_txnargs $c2_logargs \
- -home $clientdir2 -rep_transport \[list 3 replsend\]"
-# set cl2_envcmd "berkdb_env -create $c2_txnargs $c2_logargs \
-# -home $clientdir2 -rep_transport \[list 3 replsend\] \
-# -verbose {rep on} -errpfx CLIENT2 -errfile /dev/stderr"
+ set cl2_envcmd "berkdb_env_noerr -create $c2_txnargs $c2_logargs \
+ -home $clientdir2 $verbargs -errpfx CLIENT2 \
+ -rep_transport \[list 3 replsend\]"
set cl2env [eval $cl2_envcmd $recargs -rep_client]
- error_check_good client2_env [is_valid_env $cl2env] TRUE
# Bring the clients online by processing the startup messages.
set envlist "{$masterenv 1} {$clientenv 2} {$cl2env 3}"
@@ -116,9 +113,9 @@ proc rep007_sub { method niter tnum logset recargs largs } {
# Databases should now have identical contents.
set dbname "test.db"
if { [is_hash $method] == 0 } {
- set db1 [berkdb_open -env $masterenv -auto_commit $dbname]
- set db2 [berkdb_open -env $clientenv -auto_commit $dbname]
- set db3 [berkdb_open -env $cl2env -auto_commit $dbname]
+ set db1 [berkdb_open_noerr -env $masterenv -auto_commit $dbname]
+ set db2 [berkdb_open_noerr -env $clientenv -auto_commit $dbname]
+ set db3 [berkdb_open_noerr -env $cl2env -auto_commit $dbname]
error_check_good compare1and2 [db_compare \
$db1 $db2 $masterdir/$dbname $clientdir/$dbname] 0
@@ -142,7 +139,7 @@ proc rep007_sub { method niter tnum logset recargs largs } {
# particularly for queue. Delete the first pair and remember
# what it is -- it should come back after the master is closed
# and reopened as a client.
- set db1 [berkdb_open -env $masterenv -auto_commit $dbname]
+ set db1 [berkdb_open_noerr -env $masterenv -auto_commit $dbname]
error_check_good dbopen [is_valid_db $db1] TRUE
set txn [$masterenv txn]
set c [$db1 cursor -txn $txn]
@@ -168,8 +165,8 @@ proc rep007_sub { method niter tnum logset recargs largs } {
# Databases 1 and 3 should now have identical contents.
# Database 2 should be different. First check 1 and 3. We
# have to wait to check 2 until the env is open again.
- set db1 [berkdb_open -env $masterenv -auto_commit $dbname]
- set db3 [berkdb_open -env $cl2env -auto_commit $dbname]
+ set db1 [berkdb_open_noerr -env $masterenv -auto_commit $dbname]
+ set db3 [berkdb_open_noerr -env $cl2env -auto_commit $dbname]
error_check_good compare1and3 \
[db_compare $db1 $db3 $masterdir/$dbname $clientdir2/$dbname] 0
@@ -181,7 +178,8 @@ proc rep007_sub { method niter tnum logset recargs largs } {
set newmasterenv [eval $cl_envcmd $recargs -rep_master]
# Now we can check that database 2 does not match 3.
if { [is_hash $method] == 0 } {
- set db2 [berkdb_open -env $newmasterenv -auto_commit $dbname]
+ set db2 \
+ [berkdb_open_noerr -env $newmasterenv -auto_commit $dbname]
error_check_good db_compare [db_compare $db2 $db3 \
$clientdir/$dbname $clientdir2/$dbname] 1
@@ -190,19 +188,11 @@ proc rep007_sub { method niter tnum logset recargs largs } {
error_check_good db3_close [$db3 close] 0
puts "\tRep$tnum.d: Make incompatible changes to new master."
- #
- # Process startup messages and note that startup isn't complete.
- #
set envlist "{$newmasterenv 2} {$cl2env 3}"
process_msgs $envlist
- set stup [stat_field $cl2env rep_stat "Startup complete"]
- error_check_good cl2recover $stup 0
- #
- # Making modifications should trigger startup complete.
- #
- set db [berkdb_open -env $newmasterenv -auto_commit -create $omethod \
- test.db]
+ set db [berkdb_open_noerr \
+ -env $newmasterenv -auto_commit -create $omethod test.db]
error_check_good dbopen [is_valid_db $db] TRUE
set t [$newmasterenv txn]
# Force in a pair {10 10}. This works for all access
@@ -220,12 +210,9 @@ proc rep007_sub { method niter tnum logset recargs largs } {
# Nuke those for closed old master
replclear 1
- set stup [stat_field $cl2env rep_stat "Startup complete"]
- error_check_good cl2recover $stup 1
-
# Databases 2 and 3 should now match.
- set db2 [berkdb_open -env $newmasterenv -auto_commit $dbname]
- set db3 [berkdb_open -env $cl2env -auto_commit $dbname]
+ set db2 [berkdb_open_noerr -env $newmasterenv -auto_commit $dbname]
+ set db3 [berkdb_open_noerr -env $cl2env -auto_commit $dbname]
error_check_good compare2and3 \
[db_compare $db2 $db3 $clientdir/$dbname $clientdir2/$dbname] 0
@@ -237,12 +224,9 @@ proc rep007_sub { method niter tnum logset recargs largs } {
set envlist "{$newclientenv 1} {$newmasterenv 2} {$cl2env 3}"
process_msgs $envlist
- set stup [stat_field $newclientenv rep_stat "Startup complete"]
- error_check_good ncrecover $stup 0
-
# The pair we deleted earlier from the master should now
# have reappeared.
- set db1 [berkdb_open -env $newclientenv -auto_commit $dbname]
+ set db1 [berkdb_open_noerr -env $newclientenv -auto_commit $dbname]
error_check_good dbopen [is_valid_db $db1] TRUE
set ret [$db1 get -get_both $key [pad_data $method $data]]
error_check_good get_both $ret [list $pair]
@@ -253,16 +237,10 @@ proc rep007_sub { method niter tnum logset recargs largs } {
set envlist "{$newclientenv 1} {$newmasterenv 2} {$cl2env 3}"
process_msgs $envlist
- #
- # Now startup should be complete.
- #
- set stup [stat_field $newclientenv rep_stat "Startup complete"]
- error_check_good nc2recover $stup 1
-
# Now all 3 should match again.
- set db1 [berkdb_open -env $newclientenv -auto_commit $dbname]
- set db2 [berkdb_open -env $newmasterenv -auto_commit $dbname]
- set db3 [berkdb_open -env $cl2env -auto_commit $dbname]
+ set db1 [berkdb_open_noerr -env $newclientenv -auto_commit $dbname]
+ set db2 [berkdb_open_noerr -env $newmasterenv -auto_commit $dbname]
+ set db3 [berkdb_open_noerr -env $cl2env -auto_commit $dbname]
error_check_good compare1and2 \
[db_compare $db1 $db2 $masterdir/$dbname $clientdir/$dbname] 0
diff --git a/db/test/rep008.tcl b/db/test/rep008.tcl
index d43d531ae..ab779b9d8 100644
--- a/db/test/rep008.tcl
+++ b/db/test/rep008.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2001-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2001,2007 Oracle. All rights reserved.
#
-# $Id: rep008.tcl,v 12.9 2006/08/24 14:46:37 bostic Exp $
+# $Id: rep008.tcl,v 12.15 2007/05/17 18:17:21 bostic Exp $
#
# TEST rep008
# TEST Replication, back up and synchronizing
@@ -53,6 +52,12 @@ proc rep008 { method { niter 10 } { tnum "008" } args } {
proc rep008_sub { method niter tnum recargs largs } {
global testdir
global util_path
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
env_cleanup $testdir
@@ -66,23 +71,17 @@ proc rep008_sub { method niter tnum recargs largs } {
# Open a master.
repladd 1
- set ma_envcmd "berkdb_env_noerr -create -txn nosync \
- -home $masterdir -rep_transport \[list 1 replsend\]"
-# set ma_envcmd "berkdb_env_noerr -create -txn nosync \
-# -verbose {rep on} -errpfx MASTER \
-# -home $masterdir -rep_transport \[list 1 replsend\]"
+ set ma_envcmd "berkdb_env_noerr -create -txn nosync $verbargs \
+ -home $masterdir -errpfx MASTER \
+ -rep_transport \[list 1 replsend\]"
set masterenv [eval $ma_envcmd $recargs -rep_master]
- error_check_good master_env [is_valid_env $masterenv] TRUE
# Open a client
repladd 2
- set cl_envcmd "berkdb_env_noerr -create -txn nosync \
- -home $clientdir -rep_transport \[list 2 replsend\]"
-# set cl_envcmd "berkdb_env_noerr -create -txn nosync \
-# -verbose {rep on} -errpfx CLIENT \
-# -home $clientdir -rep_transport \[list 2 replsend\]"
+ set cl_envcmd "berkdb_env_noerr -create -txn nosync $verbargs \
+ -home $clientdir -errpfx CLIENT \
+ -rep_transport \[list 2 replsend\]"
set clientenv [eval $cl_envcmd $recargs -rep_client]
- error_check_good client_env [is_valid_env $clientenv] TRUE
# Bring the clients online by processing the startup messages.
set envlist "{$masterenv 1} {$clientenv 2}"
@@ -114,13 +113,12 @@ proc rep008_sub { method niter tnum recargs largs } {
set clientenv [eval $cl_envcmd $recargs -rep_client]
error_check_good client_env [is_valid_env $clientenv] TRUE
- #
# Process the messages to get them out of the db.
#
set envlist "{$masterenv 1} {$clientenv 2}"
process_msgs $envlist 0 NONE err
error_check_bad err $err 0
- error_check_good errchk [is_substr $err "Client was never part"] 1
+ error_check_good errchk [is_substr $err "DB_REP_JOIN_FAILURE"] 1
error_check_good masterenv_close [$masterenv close] 0
error_check_good clientenv_close [$clientenv close] 0
diff --git a/db/test/rep009.tcl b/db/test/rep009.tcl
index 1c97da60d..9ca94713b 100644
--- a/db/test/rep009.tcl
+++ b/db/test/rep009.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2001-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2001,2007 Oracle. All rights reserved.
#
-# $Id: rep009.tcl,v 12.9 2006/08/24 14:46:37 bostic Exp $
+# $Id: rep009.tcl,v 12.15 2007/05/17 18:17:21 bostic Exp $
#
# TEST rep009
# TEST Replication and DUPMASTERs
@@ -52,6 +51,12 @@ proc rep009 { method { niter 10 } { tnum "009" } args } {
proc rep009_sub { method niter tnum clean logset recargs largs } {
global testdir
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
env_cleanup $testdir
@@ -79,32 +84,24 @@ proc rep009_sub { method niter tnum clean logset recargs largs } {
# Open a master.
repladd 1
- set ma_envcmd "berkdb_env -create $m_txnargs $m_logargs \
- -home $masterdir -rep_transport \[list 1 replsend\]"
-# set ma_envcmd "berkdb_env -create $m_txnargs $m_logargs \
-# -verbose {rep on} -errpfx MASTER -errfile /dev/stderr \
-# -home $masterdir -rep_transport \[list 1 replsend\]"
+ set ma_envcmd "berkdb_env_noerr -create $m_txnargs $m_logargs \
+ -home $masterdir $verbargs -errpfx MASTER \
+ -rep_transport \[list 1 replsend\]"
set masterenv [eval $ma_envcmd $recargs -rep_master]
- error_check_good master_env [is_valid_env $masterenv] TRUE
- # Open a client
+ # Open a client.
repladd 2
- set cl_envcmd "berkdb_env -create $c_txnargs $c_logargs \
- -home $clientdir -rep_transport \[list 2 replsend\]"
-# set cl_envcmd "berkdb_env -create $c_txnargs $c_logargs \
-# -verbose {rep on} -errpfx CLIENT -errfile /dev/stderr \
-# -home $clientdir -rep_transport \[list 2 replsend\]"
+ set cl_envcmd "berkdb_env_noerr -create $c_txnargs $c_logargs \
+ -home $clientdir $verbargs -errpfx CLIENT1 \
+ -rep_transport \[list 2 replsend\]"
set clientenv [eval $cl_envcmd $recargs -rep_client]
- error_check_good client_env [is_valid_env $clientenv] TRUE
+ # Open a second client.
repladd 3
- set cl2_envcmd "berkdb_env -create $c2_txnargs $c2_logargs \
- -home $clientdir2 -rep_transport \[list 3 replsend\]"
-# set cl2_envcmd "berkdb_env -create $c2_txnargs $c2_logargs \
-# -home $clientdir2 -rep_transport \[list 3 replsend\] \
-# -verbose {rep on} -errpfx CLIENT2 -errfile /dev/stderr"
+ set cl2_envcmd "berkdb_env_noerr -create $c2_txnargs $c2_logargs \
+ -home $clientdir2 $verbargs -errpfx CLIENT2 \
+ -rep_transport \[list 3 replsend\]"
set cl2env [eval $cl2_envcmd $recargs -rep_client]
- error_check_good client2_env [is_valid_env $cl2env] TRUE
# Bring the clients online by processing the startup messages.
set envlist "{$masterenv 1} {$clientenv 2} {$cl2env 3}"
@@ -134,9 +131,12 @@ proc rep009_sub { method niter tnum clean logset recargs largs } {
while { 1 } {
set nproced 0
- incr nproced [replprocessqueue $masterenv 1 0 he nm dup1 err1]
- incr nproced [replprocessqueue $clientenv 2 0 he nm dup2 err2]
- incr nproced [replprocessqueue $cl2env 3 0 he nm dup3 err3]
+ incr nproced [replprocessqueue \
+ $masterenv 1 0 NONE dup1 err1]
+ incr nproced [replprocessqueue \
+ $clientenv 2 0 NONE dup2 err2]
+ incr nproced [replprocessqueue \
+ $cl2env 3 0 NONE dup3 err3]
if { $dup1 != 0 } {
set seen_dup(1) 1
error_check_good downgrade1 \
diff --git a/db/test/rep010.tcl b/db/test/rep010.tcl
index 0f576f2cc..99563ab88 100644
--- a/db/test/rep010.tcl
+++ b/db/test/rep010.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2003-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2003,2007 Oracle. All rights reserved.
#
-# $Id: rep010.tcl,v 12.9 2006/08/24 14:46:37 bostic Exp $
+# $Id: rep010.tcl,v 12.14 2007/05/17 18:17:21 bostic Exp $
#
# TEST rep010
# TEST Replication and ISPERM
@@ -52,6 +51,12 @@ proc rep010_sub { method niter tnum logset recargs largs } {
global rand_init
berkdb srand $rand_init
global perm_sent_list
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
env_cleanup $testdir
set omethod [convert_method $method]
@@ -77,36 +82,28 @@ proc rep010_sub { method niter tnum logset recargs largs } {
# Open a master.
repladd 1
- set env_cmd(M) "berkdb_env_noerr -create \
- -log_max 1000000 $m_logargs \
+ set env_cmd(M) "berkdb_env_noerr -create -log_max 1000000 \
+ $m_logargs $verbargs -errpfx MASTER \
-home $masterdir $m_txnargs -rep_master \
-rep_transport \[list 1 replsend\]"
-# set env_cmd(M) "berkdb_env_noerr -create \
-# -log_max 1000000 $m_logargs \
-# -errpfx MASTER -errfile /dev/stderr -verbose {rep on} \
-# -home $masterdir $m_txnargs -rep_master \
-# -rep_transport \[list 1 replsend\]"
set masterenv [eval $env_cmd(M) $recargs]
- error_check_good master_env [is_valid_env $masterenv] TRUE
# Open a client
repladd 2
set env_cmd(C) "berkdb_env_noerr -create -home $clientdir \
- $c_txnargs $c_logargs -rep_client \
+ $c_txnargs $c_logargs $verbargs -rep_client -errpfx CLIENT \
-rep_transport \[list 2 replsend\]"
-# set env_cmd(C) "berkdb_env_noerr -create -home $clientdir \
-# $c_txnargs $c_logargs -rep_client \
-# -errpfx CLIENT -errfile /dev/stderr -verbose {rep on} \
-# -rep_transport \[list 2 replsend\]"
set clientenv [eval $env_cmd(C) $recargs]
- error_check_good client_env [is_valid_env $clientenv] TRUE
- # Bring the client online.
- rep010_process_msgs $masterenv $clientenv 1
+ # Bring the client online. Since that now involves internal init, we
+ # have to avoid the special rep010_process_msgs here, because otherwise
+ # we would hang trying to open a log cursor.
+ #
+ process_msgs "{$masterenv 1} {$clientenv 2}"
# Open database in master, propagate to client.
set dbname rep010.db
- set db1 [eval {berkdb_open -create} $omethod -auto_commit \
+ set db1 [eval {berkdb_open_noerr -create} $omethod -auto_commit \
-env $masterenv $largs $dbname]
rep010_process_msgs $masterenv $clientenv 1
diff --git a/db/test/rep011.tcl b/db/test/rep011.tcl
index ff83ebac9..29f043a52 100644
--- a/db/test/rep011.tcl
+++ b/db/test/rep011.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2003-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2003,2007 Oracle. All rights reserved.
#
-# $Id: rep011.tcl,v 12.9 2006/08/24 14:46:37 bostic Exp $
+# $Id: rep011.tcl,v 12.13 2007/05/17 18:17:21 bostic Exp $
#
# TEST rep011
# TEST Replication: test open handle across an upgrade.
@@ -67,6 +66,12 @@ proc rep011_sub { method tnum envargs logset recargs largs } {
source ./include.tcl
global testdir
global encrypt
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
env_cleanup $testdir
@@ -90,21 +95,19 @@ proc rep011_sub { method tnum envargs logset recargs largs } {
# Open a master.
repladd 1
- set env_cmd(M) "berkdb_env -create \
- -log_max 1000000 $m_logargs $envargs -home $masterdir \
- $m_txnargs -rep_master -rep_transport \
+ set env_cmd(M) "berkdb_env_noerr -create -log_max 1000000 \
+ $m_logargs $envargs $verbargs -home $masterdir \
+ $m_txnargs -errpfx MASTER -rep_master -rep_transport \
\[list 1 replsend\]"
set masterenv [eval $env_cmd(M) $recargs]
- error_check_good master_env [is_valid_env $masterenv] TRUE
# Open a client
repladd 2
- set env_cmd(C) "berkdb_env -create \
- $c_logargs $envargs -home $clientdir \
- $c_txnargs -rep_client -rep_transport \
+ set env_cmd(C) "berkdb_env_noerr -create \
+ $c_logargs $envargs $verbargs -home $clientdir \
+ $c_txnargs -errpfx CLIENT -rep_client -rep_transport \
\[list 2 replsend\]"
set clientenv [eval $env_cmd(C) $recargs]
- error_check_good client_env [is_valid_env $clientenv] TRUE
# Bring the client online by processing the startup messages.
set envlist "{$masterenv 1} {$clientenv 2}"
@@ -114,7 +117,7 @@ proc rep011_sub { method tnum envargs logset recargs largs } {
# handles open across an upgrade.
puts "\tRep$tnum.a:\
Opening test database for post-upgrade client logging test."
- set master_upg_db [berkdb_open \
+ set master_upg_db [berkdb_open_noerr \
-create -auto_commit -btree -env $masterenv rep$tnum-upg.db]
set puttxn [$masterenv txn]
error_check_good master_upg_db_put \
@@ -126,7 +129,7 @@ proc rep011_sub { method tnum envargs logset recargs largs } {
process_msgs $envlist
# Open the cross-upgrade database on the client and check its contents.
- set client_upg_db [berkdb_open \
+ set client_upg_db [berkdb_open_noerr \
-create -auto_commit -btree -env $clientenv rep$tnum-upg.db]
error_check_good client_upg_db_get [$client_upg_db get hello] \
[list [list hello world]]
@@ -141,10 +144,9 @@ proc rep011_sub { method tnum envargs logset recargs largs } {
error_check_good upgrade_client [$newmasterenv rep_start -master] 0
puts "\tRep$tnum.d: Reopen old master as client and catch up."
- set newclientenv [eval {berkdb_env -create -recover} $envargs \
- -txn nosync \
+ set newclientenv [eval {berkdb_env_noerr -create -recover} $envargs \
+ -txn nosync -errpfx NEWCLIENT $verbargs \
{-home $masterdir -rep_client -rep_transport [list 1 replsend]}]
- error_check_good newclient_env [is_valid_env $newclientenv] TRUE
set envlist "{$newclientenv 1} {$newmasterenv 2}"
process_msgs $envlist
@@ -162,7 +164,8 @@ proc rep011_sub { method tnum envargs logset recargs largs } {
# update the database.
puts "\tRep$tnum.f: Test that client did update the database."
error_check_good client_upg_db_close [$client_upg_db close] 0
- set newclient_upg_db [berkdb_open -env $newclientenv rep$tnum-upg.db]
+ set newclient_upg_db \
+ [berkdb_open_noerr -env $newclientenv rep$tnum-upg.db]
error_check_good newclient_upg_db_get [$newclient_upg_db get hello] \
[list [list hello there]]
error_check_good newclient_upg_db_close [$newclient_upg_db close] 0
diff --git a/db/test/rep012.tcl b/db/test/rep012.tcl
index b276f1412..254a37c83 100644
--- a/db/test/rep012.tcl
+++ b/db/test/rep012.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2001-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2001,2007 Oracle. All rights reserved.
#
-# $Id: rep012.tcl,v 12.10 2006/08/24 14:46:37 bostic Exp $
+# $Id: rep012.tcl,v 12.14 2007/05/17 18:17:21 bostic Exp $
#
# TEST rep012
# TEST Replication and dead DB handles.
@@ -51,6 +50,12 @@ proc rep012 { method { niter 10 } { tnum "012" } args } {
proc rep012_sub { method niter tnum logset recargs largs } {
global testdir
global verbose_check_secondaries
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
env_cleanup $testdir
set orig_tdir $testdir
@@ -80,39 +85,24 @@ proc rep012_sub { method niter tnum logset recargs largs } {
# Open a master.
repladd 1
set ma_envcmd "berkdb_env_noerr -create $m_txnargs \
- $m_logargs -errpfx ENV0 \
+ $m_logargs -errpfx ENV0 $verbargs \
-home $masterdir -rep_transport \[list 1 replsend\]"
-# set ma_envcmd "berkdb_env_noerr -create $m_txnargs \
-# $m_logargs \
-# -errpfx ENV0 -verbose {rep on} -errfile /dev/stderr \
-# -home $masterdir -rep_transport \[list 1 replsend\]"
set env0 [eval $ma_envcmd $recargs -rep_master]
set masterenv $env0
- error_check_good master_env [is_valid_env $env0] TRUE
# Open two clients
repladd 2
set cl_envcmd "berkdb_env_noerr -create $c_txnargs \
- $c_logargs -errpfx ENV1 \
+ $c_logargs -errpfx ENV1 $verbargs \
-home $clientdir -rep_transport \[list 2 replsend\]"
-# set cl_envcmd "berkdb_env_noerr -create $c_txnargs \
-# $c_logargs \
-# -errpfx ENV1 -verbose {rep on} -errfile /dev/stderr \
-# -home $clientdir -rep_transport \[list 2 replsend\]"
set env1 [eval $cl_envcmd $recargs -rep_client]
set clientenv $env1
- error_check_good client_env [is_valid_env $env1] TRUE
repladd 3
set cl2_envcmd "berkdb_env_noerr -create $c2_txnargs \
- $c2_logargs -errpfx ENV2 \
+ $c2_logargs -errpfx ENV2 $verbargs \
-home $clientdir2 -rep_transport \[list 3 replsend\]"
-# set cl2_envcmd "berkdb_env_noerr -create $c2_txnargs \
-# $c2_logargs \
-# -errpfx ENV2 -verbose {rep on} -errfile /dev/stderr \
-# -home $clientdir2 -rep_transport \[list 3 replsend\]"
set cl2env [eval $cl2_envcmd $recargs -rep_client]
- error_check_good client2_env [is_valid_env $cl2env] TRUE
set testfile "test$tnum.db"
set pname "primary$tnum.db"
diff --git a/db/test/rep013.tcl b/db/test/rep013.tcl
index f0c1a2c05..d1a8dceae 100644
--- a/db/test/rep013.tcl
+++ b/db/test/rep013.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2001-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2001,2007 Oracle. All rights reserved.
#
-# $Id: rep013.tcl,v 12.11 2006/08/24 14:46:37 bostic Exp $
+# $Id: rep013.tcl,v 12.16 2007/05/25 18:30:16 alanb Exp $
#
# TEST rep013
# TEST Replication and swapping master/clients with open dbs.
@@ -55,6 +54,12 @@ proc rep013 { method { niter 10 } { tnum "013" } args } {
proc rep013_sub { method niter tnum logset recargs anyopt largs } {
global testdir
global anywhere
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
env_cleanup $testdir
set orig_tdir $testdir
@@ -92,40 +97,25 @@ proc rep013_sub { method niter tnum logset recargs anyopt largs } {
# Open a master.
repladd 1
set ma_envcmd "berkdb_env_noerr -create $m_txnargs \
- $m_logargs -errpfx ENV1 \
+ $m_logargs -errpfx ENV1 $verbargs \
-cachesize {0 4194304 3} \
-home $masterdir -rep_transport \[list 1 replsend\]"
-# set ma_envcmd "berkdb_env_noerr -create $m_txnargs \
-# $m_logargs -cachesize {0 4194304 3} \
-# -errpfx ENV1 -verbose {rep on} -errfile /dev/stderr \
-# -home $masterdir -rep_transport \[list 1 replsend\]"
set env1 [eval $ma_envcmd $recargs -rep_master]
- error_check_good master_env [is_valid_env $env1] TRUE
# Open two clients
repladd 2
set cl_envcmd "berkdb_env_noerr -create $c_txnargs \
- $c_logargs -errpfx ENV2 \
+ $c_logargs -errpfx ENV2 $verbargs \
-cachesize {0 2097152 2} \
-home $clientdir -rep_transport \[list 2 replsend\]"
-# set cl_envcmd "berkdb_env_noerr -create $c_txnargs \
-# $c_logargs -cachesize {0 2097152 2} \
-# -errpfx ENV2 -verbose {rep on} -errfile /dev/stderr \
-# -home $clientdir -rep_transport \[list 2 replsend\]"
set env2 [eval $cl_envcmd $recargs -rep_client]
- error_check_good client_env [is_valid_env $env2] TRUE
repladd 3
set cl2_envcmd "berkdb_env_noerr -create $c2_txnargs \
- $c2_logargs -errpfx ENV3 \
+ $c2_logargs -errpfx ENV3 $verbargs \
-cachesize {0 1048576 1} \
-home $clientdir2 -rep_transport \[list 3 replsend\]"
-# set cl2_envcmd "berkdb_env_noerr -create $c2_txnargs \
-# $c2_logargs -cachesize {0 1048576 1} \
-# -errpfx ENV3 -verbose {rep on} -errfile /dev/stderr \
-# -home $clientdir2 -rep_transport \[list 3 replsend\]"
set cl2env [eval $cl2_envcmd $recargs -rep_client]
- error_check_good client2_env [is_valid_env $cl2env] TRUE
set testfile "test$tnum.db"
@@ -246,17 +236,14 @@ proc rep013_sub { method niter tnum logset recargs anyopt largs } {
}
puts "\tRep$tnum.e: Check message handling of client."
set req3 [stat_field $cl2env rep_stat "Client service requests"]
- set miss3 [stat_field $cl2env rep_stat "Client service req misses"]
set rereq1 [stat_field $env1 rep_stat "Client rerequests"]
set rereq2 [stat_field $env2 rep_stat "Client rerequests"]
if { $anyopt == "anywhere" } {
error_check_bad req $req3 0
- error_check_bad miss $miss3 0
error_check_bad rereq1 $rereq1 0
error_check_bad rereq2 $rereq2 0
} else {
error_check_good req $req3 0
- error_check_good miss $miss3 0
error_check_good rereq1 $rereq1 0
error_check_good rereq2 $rereq2 0
}
diff --git a/db/test/rep014.tcl b/db/test/rep014.tcl
index fd77cdf14..67889b558 100644
--- a/db/test/rep014.tcl
+++ b/db/test/rep014.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2001-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2001,2007 Oracle. All rights reserved.
#
-# $Id: rep014.tcl,v 12.10 2006/08/24 14:46:37 bostic Exp $
+# $Id: rep014.tcl,v 12.14 2007/05/17 18:17:21 bostic Exp $
#
# TEST rep014
# TEST Replication and multiple replication handles.
@@ -52,6 +51,13 @@ proc rep014 { method { niter 10 } { tnum "014" } args } {
proc rep014_sub { method niter tnum logset recargs largs } {
global testdir
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
+
env_cleanup $testdir
set orig_tdir $testdir
@@ -74,22 +80,17 @@ proc rep014_sub { method niter tnum logset recargs largs } {
# Open a master.
repladd 1
- set ma_envcmd "berkdb_env -create $m_txnargs $m_logargs \
- -home $masterdir -rep_transport \[list 1 replsend\]"
-# set ma_envcmd "berkdb_env -create $m_txnargs $m_logargs \
-# -errpfx MASTER -verbose {rep on} \
-# -home $masterdir -rep_transport \[list 1 replsend\]"
+ set ma_envcmd "berkdb_env_noerr -create $m_txnargs $m_logargs \
+ $verbargs -errpfx MASTER -home $masterdir \
+ -rep_transport \[list 1 replsend\]"
set env0 [eval $ma_envcmd $recargs -rep_master]
set masterenv $env0
- error_check_good master_env [is_valid_env $env0] TRUE
# Open a client.
repladd 2
- set cl_envcmd "berkdb_env -create $c_txnargs $c_logargs \
- -home $clientdir -rep_transport \[list 2 replsend\]"
-# set cl_envcmd "berkdb_env -create $c_txnargs $c_logargs \
-# -errpfx CLIENT1 -verbose {rep on} \
-# -home $clientdir -rep_transport \[list 2 replsend\]"
+ set cl_envcmd "berkdb_env_noerr -create $c_txnargs $c_logargs \
+ $verbargs -errpfx CLIENT1 -home $clientdir \
+ -rep_transport \[list 2 replsend\]"
set env1 [eval $cl_envcmd $recargs]
error_check_good client_env [is_valid_env $env1] TRUE
set env2 [eval $cl_envcmd]
diff --git a/db/test/rep015.tcl b/db/test/rep015.tcl
index 41b5a78ef..7d1234f37 100644
--- a/db/test/rep015.tcl
+++ b/db/test/rep015.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2003-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2003,2007 Oracle. All rights reserved.
#
-# $Id: rep015.tcl,v 12.8 2006/08/24 14:46:37 bostic Exp $
+# $Id: rep015.tcl,v 12.12 2007/05/17 18:17:21 bostic Exp $
#
# TEST rep015
# TEST Locking across multiple pages with replication.
@@ -64,6 +63,13 @@ proc rep015 { method { nentries 100 } { tnum "015" } { ndb 3 } args } {
proc rep015_sub { method nentries tnum ndb logset recargs largs } {
global testdir
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
+
env_cleanup $testdir
set omethod [convert_method $method]
@@ -88,22 +94,16 @@ proc rep015_sub { method nentries tnum ndb logset recargs largs } {
# Open a master.
repladd 1
set ma_envcmd "berkdb_env_noerr -create $m_txnargs $m_logargs \
+ $verbargs -errpfx MASTER \
-home $masterdir -rep_transport \[list 1 replsend\]"
-# set ma_envcmd "berkdb_env_noerr -create $m_txnargs $m_logargs \
-# -verbose {rep on} -errpfx MASTER \
-# -home $masterdir -rep_transport \[list 1 replsend\]"
set masterenv [eval $ma_envcmd $recargs -rep_master]
- error_check_good master_env [is_valid_env $masterenv] TRUE
# Open a client
repladd 2
set cl_envcmd "berkdb_env_noerr -create $c_txnargs $c_logargs \
+ $verbargs -errpfx CLIENT \
-home $clientdir -rep_transport \[list 2 replsend\]"
-# set cl_envcmd "berkdb_env_noerr -create $c_txnargs $c_logargs \
-# -verbose {rep on} -errpfx CLIENT \
-# -home $clientdir -rep_transport \[list 2 replsend\]"
set clientenv [eval $cl_envcmd $recargs -rep_client]
- error_check_good client_env [is_valid_env $clientenv] TRUE
# Bring the clients online by processing the startup messages.
set envlist "{$masterenv 1} {$clientenv 2}"
@@ -114,8 +114,8 @@ proc rep015_sub { method nentries tnum ndb logset recargs largs } {
set pagesize 512
puts "\tRep$tnum.a: Create and populate databases in master."
for { set i 0 } { $i < $ndb } { incr i } {
- set db [eval "berkdb_open -create $omethod -auto_commit \
- -pagesize $pagesize -env $masterenv $largs -dup testdb$i.db"]
+ set db [eval berkdb_open_noerr -create $omethod -auto_commit \
+ -pagesize $pagesize -env $masterenv $largs -dup testdb$i.db]
set dblist($i) $db
#
# Populate, being sure to create multiple pages.
@@ -150,7 +150,7 @@ proc rep015_sub { method nentries tnum ndb logset recargs largs } {
# Open client databases so we can exercise locking there too.
for { set i 0 } { $i < $ndb } { incr i } {
- set cdb [eval {berkdb_open} -auto_commit \
+ set cdb [eval {berkdb_open_noerr} -auto_commit \
-env $clientenv $largs testdb$i.db]
set cdblist($i) $cdb
}
diff --git a/db/test/rep016.tcl b/db/test/rep016.tcl
index 54f34d121..2b0af3a12 100644
--- a/db/test/rep016.tcl
+++ b/db/test/rep016.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2002-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2002,2007 Oracle. All rights reserved.
#
-# $Id: rep016.tcl,v 12.9 2006/08/24 14:46:37 bostic Exp $
+# $Id: rep016.tcl,v 12.14 2007/05/17 18:17:21 bostic Exp $
#
# TEST rep016
# TEST Replication election test with varying required nvotes.
@@ -58,10 +57,16 @@ proc rep016 { method args } {
proc rep016_sub { method nclients tnum logset recargs largs } {
source ./include.tcl
- set niter 5
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
env_cleanup $testdir
+ set niter 5
set qdir $testdir/MSGQUEUEDIR
replsetup $qdir
@@ -80,30 +85,27 @@ proc rep016_sub { method nclients tnum logset recargs largs } {
set c_txnargs($i) [adjust_txnargs $c_logtype($i)]
}
-# To debug elections, the lines to uncomment are below the
-# error checking portion of this test. This is needed in order
-# for the error messages to come back in errorInfo and for
-# that portion of the test to pass.
# Open a master.
set envlist {}
repladd 1
- set env_cmd(M) "berkdb_env -create -log_max 1000000 -home $masterdir \
- $m_txnargs $m_logargs -rep_master \
+ set env_cmd(M) "berkdb_env_noerr -create -log_max 1000000 \
+ -event rep_event \
+ -home $masterdir $m_txnargs $m_logargs -rep_master $verbargs \
-errpfx MASTER -rep_transport \[list 1 replsend\]"
set masterenv [eval $env_cmd(M) $recargs]
- error_check_good master_env [is_valid_env $masterenv] TRUE
lappend envlist "$masterenv 1"
# Open the clients.
+ # Don't set -errfile now -- wait until the error catching
+ # portion of the test is complete.
for { set i 0 } { $i < $nclients } { incr i } {
set envid [expr $i + 2]
repladd $envid
set env_cmd($i) "berkdb_env_noerr -create -home $clientdir($i) \
- $c_txnargs($i) $c_logargs($i) -rep_client \
+ -event rep_event \
+ $c_txnargs($i) $c_logargs($i) -rep_client $verbargs \
-rep_transport \[list $envid replsend\]"
set clientenv($i) [eval $env_cmd($i) $recargs]
- error_check_good \
- client_env($i) [is_valid_env $clientenv($i)] TRUE
lappend envlist "$clientenv($i) $envid"
}
# Bring the clients online by processing the startup messages.
@@ -181,10 +183,6 @@ proc rep016_sub { method nclients tnum logset recargs largs } {
error_check_bad catch $res 0
error_check_good ret [is_substr $ret "may not be negative"] 1
-# To debug elections, uncomment the lines below to turn on verbose
-# and set the errfile. Also edit reputils.tcl
-# in proc start_election and swap the 2 commented lines with
-# their counterpart.
for { set i 0 } { $i < $nclients } { incr i } {
replclear [expr $i + 2]
#
@@ -199,11 +197,13 @@ proc rep016_sub { method nclients tnum logset recargs largs } {
#
set pri($i) 0
#
-# error_check_good pfx [$clientenv($i) errpfx CLIENT$i] 0
-# error_check_good verb [$clientenv($i) verbose rep on] 0
-# $clientenv($i) errfile /dev/stderr
-# set env_cmd($i) [concat $env_cmd($i) \
-# "-errpfx CLIENT$i -verbose {rep on} -errfile /dev/stderr"]
+ if { $rep_verbose == 1 } {
+ $clientenv($i) errpfx CLIENT.$i
+ $clientenv($i) verbose rep on
+ $clientenv($i) errfile /dev/stderr
+ set env_cmd($i) [concat $env_cmd($i) \
+ "-errpfx CLIENT.$i -errfile /dev/stderr "]
+ }
}
set m "Rep$tnum.c"
puts "\t$m: Check single master/client can elect itself"
diff --git a/db/test/rep017.tcl b/db/test/rep017.tcl
index b59263f00..f5974afb6 100644
--- a/db/test/rep017.tcl
+++ b/db/test/rep017.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2003-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2003,2007 Oracle. All rights reserved.
#
-# $Id: rep017.tcl,v 12.9 2006/08/24 14:46:37 bostic Exp $
+# $Id: rep017.tcl,v 12.15 2007/06/21 20:09:57 carol Exp $
#
# TEST rep017
# TEST Concurrency with checkpoints.
@@ -53,7 +52,12 @@ proc rep017 { method { niter 10 } { tnum "017" } args } {
proc rep017_sub { method niter tnum logset recargs largs } {
source ./include.tcl
global perm_response_list
- global is_repchild
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
env_cleanup $testdir
set omethod [convert_method $method]
@@ -77,29 +81,18 @@ proc rep017_sub { method niter tnum logset recargs largs } {
# Open a master.
repladd 1
- set ma_cmd "berkdb_env_noerr -create \
+ set ma_cmd "berkdb_env_noerr -create $verbargs \
-log_max 1000000 $m_txnargs $m_logargs \
- -home $masterdir -rep_master \
+ -home $masterdir -rep_master -errpfx MASTER \
-rep_transport \[list 1 replsend\]"
-# set ma_cmd "berkdb_env_noerr -create \
-# -log_max 1000000 $m_txnargs $m_logargs \
-# -verbose {rep on} -errfile /dev/stderr \
-# -home $masterdir -rep_master -rep_transport \
-# \[list 1 replsend\]"
set masterenv [eval $ma_cmd $recargs]
- error_check_good master_env [is_valid_env $masterenv] TRUE
# Open a client
repladd 2
- set cl_cmd "berkdb_env_noerr -create -home $clientdir \
- $c_txnargs $c_logargs -rep_client \
+ set cl_cmd "berkdb_env_noerr -create -home $clientdir $verbargs \
+ $c_txnargs $c_logargs -rep_client -errpfx CLIENT \
-rep_transport \[list 2 replsend\]"
-# set cl_cmd "berkdb_env_noerr -create -home $clientdir \
-# -verbose {rep on} -errfile /dev/stderr \
-# $c_txnargs $c_logargs -rep_client \
-# -rep_transport \[list 2 replsend\]"
set clientenv [eval $cl_cmd $recargs]
- error_check_good client_env [is_valid_env $clientenv] TRUE
# Bring the client online.
process_msgs "{$masterenv 1} {$clientenv 2}"
@@ -108,7 +101,7 @@ proc rep017_sub { method niter tnum logset recargs largs } {
# will take a while, and propagate to client.
puts "\tRep$tnum.a: Create and populate database."
set dbname rep017.db
- set db [eval "berkdb_open -create $omethod -auto_commit \
+ set db [eval "berkdb_open_noerr -create $omethod -auto_commit \
-env $masterenv $largs $dbname"]
for { set i 1 } { $i <= $niter } { incr i } {
set t [$masterenv txn]
@@ -134,12 +127,7 @@ proc rep017_sub { method niter tnum logset recargs largs } {
# for now. It's run in the background so the parent can
# test for whether we're checkpointing at the same time.
#
- # Since the child is processing messages, we want to
- # set is_repchild here so that any messages we generate
- # will be seen by the child process.
- #
puts "\tRep$tnum.c: Fork child process on client."
- set is_repchild 1
set pid [exec $tclsh_path $test_path/wrap.tcl \
rep017script.tcl $testdir/repscript.log \
$masterdir $clientdir &]
@@ -151,6 +139,15 @@ proc rep017_sub { method niter tnum logset recargs largs } {
# later than the last LSN when the master took the checkpoint, we've
# begin the checkpoint. By test design, we should not finish the
# checkpoint until this process has at least had a chance to run.
+ #
+ # In order to do this, we have handles open on the message
+ # queue from both this process and its child. This is not
+ # normally legal behavior for an application using Berkeley DB,
+ # but this test depends on the parent process doing things while
+ # the child is pausing in the middle of the checkpoint. We are
+ # very careful to control which process is handling which
+ # messages.
+
puts "\tRep$tnum.d: Test whether client is in checkpoint."
while { 1 } {
set client_off \
@@ -205,7 +202,6 @@ proc rep017_sub { method niter tnum logset recargs largs } {
puts "\tRep$tnum.f: Waiting for child ..."
# Watch until the checkpoint is done.
watch_procs $pid 5
- set is_repchild 0
# Verify that the checkpoint is now complete on the client and
# that all later messages have been applied.
diff --git a/db/test/rep017script.tcl b/db/test/rep017script.tcl
index 815dbcf99..87ccf8e4c 100644
--- a/db/test/rep017script.tcl
+++ b/db/test/rep017script.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2003-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2003,2007 Oracle. All rights reserved.
#
-# $Id: rep017script.tcl,v 12.4 2006/08/24 14:46:37 bostic Exp $
+# $Id: rep017script.tcl,v 12.7 2007/05/17 15:15:55 bostic Exp $
#
# Rep017 script - concurrency with checkpoints.
#
@@ -33,7 +32,11 @@ if { $argc != 2 } {
set masterdir [ lindex $argv 0 ]
set clientdir [ lindex $argv 1 ]
-#
+# Join the queue env. We assume the rep test convention of
+# placing the messages in $testdir/MSGQUEUEDIR.
+set queueenv [eval berkdb_env -home $testdir/MSGQUEUEDIR]
+error_check_good script_qenv_open [is_valid_env $queueenv] TRUE
+
# We need to set up our own machids.
# Add 1 for master env id, and 2 for the clientenv id.
#
diff --git a/db/test/rep018.tcl b/db/test/rep018.tcl
index 311729899..1f5855277 100644
--- a/db/test/rep018.tcl
+++ b/db/test/rep018.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2003-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2003,2007 Oracle. All rights reserved.
#
-# $Id: rep018.tcl,v 12.9 2006/08/24 14:46:37 bostic Exp $
+# $Id: rep018.tcl,v 12.14 2007/05/17 18:17:21 bostic Exp $
#
# TEST rep018
# TEST Replication with dbremove.
@@ -47,6 +46,13 @@ proc rep018 { method { niter 10 } { tnum "018" } args } {
proc rep018_sub { method niter tnum logset recargs largs } {
source ./include.tcl
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
+
env_cleanup $testdir
set omethod [convert_method $method]
@@ -71,23 +77,27 @@ proc rep018_sub { method niter tnum logset recargs largs } {
# Open a master.
repladd 1
set env_cmd(M) "berkdb_env_noerr -create \
- -log_max 1000000 -home $masterdir \
- $m_txnargs $m_logargs -rep_master \
+ -log_max 1000000 -home $masterdir $verbargs \
+ $m_txnargs $m_logargs -rep_master -errpfx MASTER \
-rep_transport \[list 1 replsend\]"
set masterenv [eval $env_cmd(M) $recargs]
- error_check_good master_env [is_valid_env $masterenv] TRUE
# Open a client
repladd 2
set env_cmd(C) "berkdb_env_noerr -create -home $clientdir \
- $c_txnargs $c_logargs -rep_client \
+ $c_txnargs $c_logargs -rep_client $verbargs -errpfx CLIENT \
-rep_transport \[list 2 replsend\]"
set clientenv [eval $env_cmd(C) $recargs]
- error_check_good client_env [is_valid_env $clientenv] TRUE
# Bring the client online.
process_msgs "{$masterenv 1} {$clientenv 2}"
+ # Clobber replication's 30-second anti-archive timer, which will have
+ # been started by client sync-up internal init, so that we can do a
+ # db_remove in a moment.
+ #
+ $masterenv test force noarchive_timeout
+
puts "\tRep$tnum.b: Open database on master, propagate to client."
set dbname rep$tnum.db
set db [eval "berkdb_open -create $omethod -auto_commit \
@@ -167,4 +177,3 @@ proc rep018_sub { method niter tnum logset recargs largs } {
}
}
-
diff --git a/db/test/rep018script.tcl b/db/test/rep018script.tcl
index 4fc19be95..55c93d07e 100644
--- a/db/test/rep018script.tcl
+++ b/db/test/rep018script.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2003-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2003,2007 Oracle. All rights reserved.
#
-# $Id: rep018script.tcl,v 12.5 2006/08/24 14:46:37 bostic Exp $
+# $Id: rep018script.tcl,v 12.9 2007/05/17 18:17:21 bostic Exp $
#
# Rep018 script - concurrency with checkpoints.
#
@@ -33,7 +32,10 @@ set niter [ lindex $argv 1 ]
set dbfile [ lindex $argv 2 ]
set method [ lindex $argv 3 ]
-set is_repchild 1
+# Join the queue env. We assume the rep test convention of
+# placing the messages in $testdir/MSGQUEUEDIR.
+set queueenv [eval berkdb_env -home $testdir/MSGQUEUEDIR]
+error_check_good script_qenv_open [is_valid_env $queueenv] TRUE
#
# We need to set up our own machids.
diff --git a/db/test/rep019.tcl b/db/test/rep019.tcl
index e339d3637..68ca7f5c9 100644
--- a/db/test/rep019.tcl
+++ b/db/test/rep019.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2001-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2001,2007 Oracle. All rights reserved.
#
-# $Id: rep019.tcl,v 12.10 2006/08/24 14:46:37 bostic Exp $
+# $Id: rep019.tcl,v 12.14 2007/05/17 18:17:21 bostic Exp $
#
# TEST rep019
# TEST Replication and multiple clients at same LSN.
@@ -44,6 +43,12 @@ proc rep019 { method { nclients 3 } { tnum "019" } args } {
proc rep019_sub { method nclients tnum recargs largs } {
global testdir
global util_path
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
set orig_tdir $testdir
env_cleanup $testdir
@@ -56,26 +61,19 @@ proc rep019_sub { method nclients tnum recargs largs } {
# Open a master.
repladd 1
- set ma_envcmd "berkdb_env -create -txn nosync \
- -home $masterdir -rep_master -rep_transport \[list 1 replsend\]"
-# set ma_envcmd "berkdb_env -create $m_txnargs \
-# -errpfx MASTER -verbose {rep on} \
-# -home $masterdir -rep_master -rep_transport \[list 1 replsend\]"
+ set ma_envcmd "berkdb_env_noerr -create -txn nosync $verbargs \
+ -home $masterdir -rep_master -errpfx MASTER \
+ -rep_transport \[list 1 replsend\]"
set menv [eval $ma_envcmd $recargs]
- error_check_good master_env [is_valid_env $menv] TRUE
for {set i 0} {$i < $nclients} {incr i} {
set clientdir($i) $testdir/CLIENTDIR.$i
file mkdir $clientdir($i)
set id($i) [expr 2 + $i]
repladd $id($i)
- set cl_envcmd($i) "berkdb_env -create -txn nosync \
- -home $clientdir($i) \
+ set cl_envcmd($i) "berkdb_env_noerr -create -txn nosync \
+ -home $clientdir($i) $verbargs -errpfx CLIENT.$i \
-rep_client -rep_transport \[list $id($i) replsend\]"
-# set cl_envcmd($i) "berkdb_env -create -txn nosync \
-# -home $clientdir($i) \
-# -errpfx CLIENT$i -verbose {rep on} \
-# -rep_client -rep_transport \[list $id($i) replsend\]"
set clenv($i) [eval $cl_envcmd($i) $recargs]
error_check_good client_env [is_valid_env $clenv($i)] TRUE
}
diff --git a/db/test/rep020.tcl b/db/test/rep020.tcl
index f6d51c227..8a3b305b4 100644
--- a/db/test/rep020.tcl
+++ b/db/test/rep020.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2004-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2004,2007 Oracle. All rights reserved.
#
-# $Id: rep020.tcl,v 12.10 2006/08/24 14:46:37 bostic Exp $
+# $Id: rep020.tcl,v 12.16 2007/05/30 16:19:14 sue Exp $
#
# TEST rep020
# TEST Replication elections - test election generation numbers.
@@ -47,6 +46,13 @@ proc rep020_sub { method nclients tnum logset largs } {
source ./include.tcl
global errorInfo
global mixed_mode_logging
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
+
env_cleanup $testdir
set qdir $testdir/MSGQUEUEDIR
@@ -66,30 +72,25 @@ proc rep020_sub { method nclients tnum logset largs } {
set c_txnargs($i) [adjust_txnargs $c_logtype($i)]
}
-# To debug elections, the lines to uncomment are below the
-# error checking portion of this test. This is needed in order
-# for the error messages to come back in errorInfo and for
-# that portion of the test to pass.
# Open a master.
set envlist {}
repladd 1
- set env_cmd(M) "berkdb_env -create -log_max 1000000 \
+ set env_cmd(M) "berkdb_env_noerr -create -log_max 1000000 $verbargs \
+ -event rep_event \
-home $masterdir $m_txnargs $m_logargs -rep_master \
-errpfx MASTER -rep_transport \[list 1 replsend\]"
set masterenv [eval $env_cmd(M)]
- error_check_good master_env [is_valid_env $masterenv] TRUE
lappend envlist "$masterenv 1"
# Open the clients.
for { set i 0 } { $i < $nclients } { incr i } {
set envid [expr $i + 2]
repladd $envid
- set env_cmd($i) "berkdb_env_noerr -create \
- -home $clientdir($i) $c_txnargs($i) $c_logargs($i) \
+ set env_cmd($i) "berkdb_env_noerr -create -event rep_event \
+ $verbargs -home $clientdir($i) \
+ $c_txnargs($i) $c_logargs($i) \
-rep_client -rep_transport \[list $envid replsend\]"
set clientenv($i) [eval $env_cmd($i)]
- error_check_good \
- client_env($i) [is_valid_env $clientenv($i)] TRUE
lappend envlist "$clientenv($i) $envid"
}
@@ -102,21 +103,19 @@ proc rep020_sub { method nclients tnum logset largs } {
error_check_good masterenv_close [$masterenv close] 0
set envlist [lreplace $envlist 0 0]
-# To debug elections, uncomment the lines below to turn on verbose
-# and set the errfile. Also edit reputils.tcl
-# in proc start_election and swap the 2 commented lines with
-# their counterpart.
foreach pair $envlist {
set i [expr [lindex $pair 1] - 2]
replclear [expr $i + 2]
set err_cmd($i) "none"
set pri($i) 10
set crash($i) 0
-# error_check_good pfx [$clientenv($i) errpfx CLIENT$i] 0
-# error_check_good verb [$clientenv($i) verbose rep on] 0
-# $clientenv($i) errfile /dev/stderr
-# set env_cmd($i) [concat $env_cmd($i) \
-# "-errpfx CLIENT$i -verbose {rep on} -errfile /dev/stderr"]
+ if { $rep_verbose == 1 } {
+ $clientenv($i) errpfx CLIENT$i
+ $clientenv($i) verbose rep on
+ $clientenv($i) errfile /dev/stderr
+ set env_cmd($i) [concat $env_cmd($i) \
+ "-errpfx CLIENT$i -errfile /dev/stderr"]
+ }
}
set msg "Rep$tnum.b"
@@ -234,6 +233,7 @@ proc rep020_sub { method nclients tnum logset largs } {
binary scan $data c val
close $fid
set clientenv($i) [lindex $pair 0]
+ $clientenv($i) log_flush
error_check_good \
clientenv_close($i) [$clientenv($i) close] 0
set clientenv($i) [eval $env_cmd($i) -recover]
diff --git a/db/test/rep021.tcl b/db/test/rep021.tcl
index fca913043..d9ab6a0bf 100644
--- a/db/test/rep021.tcl
+++ b/db/test/rep021.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2001-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2001,2007 Oracle. All rights reserved.
#
-# $Id: rep021.tcl,v 12.9 2006/08/24 14:46:37 bostic Exp $
+# $Id: rep021.tcl,v 12.13 2007/05/17 18:17:21 bostic Exp $
#
# TEST rep021
# TEST Replication and multiple environments.
@@ -54,6 +53,12 @@ proc rep021 { method { nclients 3 } { tnum "021" } args } {
proc rep021_sub { method nclients tnum logset recargs largs } {
global testdir
global util_path
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
set orig_tdir $testdir
env_cleanup $testdir
@@ -110,15 +115,10 @@ proc rep021_sub { method nclients tnum logset recargs largs } {
# Open a 2nd master. Make all the 2nd env ids >= 10.
# For the 2nd group, just have 1 master and 1 client.
repladd 10
- set ma2_envcmd "berkdb_env -create $m_txnargs \
+ set ma2_envcmd "berkdb_env_noerr -create $m_txnargs $verbargs \
$m_logargs -home $masterdir2 \
-rep_master -rep_transport \[list 10 replsend\]"
-# set ma2_envcmd "berkdb_env -create $m_txnargs \
-# $m_logargs -home $masterdir2 \
-# -errpfx MASTER2 -verbose {rep on} \
-# -rep_master -rep_transport \[list 10 replsend\]"
set menv2 [eval $ma2_envcmd $recargs]
- error_check_good master2_env [is_valid_env $menv2] TRUE
set clientdir2 $testdir/CLIENTDIR.NEW
file mkdir $clientdir2
@@ -129,15 +129,10 @@ proc rep021_sub { method nclients tnum logset recargs largs } {
set id2 11
repladd $id2
- set cl2_envcmd "berkdb_env -create $c_txnargs($id2) \
+ set cl2_envcmd "berkdb_env_noerr -create $c_txnargs($id2) $verbargs \
$c_logargs($id2) -home $clientdir2 \
-rep_client -rep_transport \[list $id2 replsend\]"
-# set cl2_envcmd "berkdb_env -create $c_txnargs($id2) \
-# -errpfx CLIENT2 -verbose {rep on} \
-# $c_logargs($id2) -home $clientdir2 \
-# -rep_client -rep_transport \[list $id2 replsend\]"
set clenv2 [eval $cl2_envcmd $recargs]
- error_check_good client_env [is_valid_env $clenv2] TRUE
set testfile "test$tnum.db"
set omethod [convert_method $method]
@@ -192,15 +187,10 @@ proc rep021_sub { method nclients tnum logset recargs largs } {
replsetup $testdir/MSGQUEUEDIR
# Open a master.
repladd 1
- set ma_envcmd "berkdb_env -create $m_txnargs \
+ set ma_envcmd "berkdb_env_noerr -create $m_txnargs $verbargs \
$m_logargs -home $masterdir \
-rep_master -rep_transport \[list 1 replsend\]"
-# set ma_envcmd "berkdb_env -create $m_txnargs \
-# $m_logargs -home $masterdir \
-# -errpfx MASTER -verbose {rep on} \
-# -rep_master -rep_transport \[list 1 replsend\]"
set menv [eval $ma_envcmd $recargs]
- error_check_good master_env [is_valid_env $menv] TRUE
for {set i 0} {$i < $nclients} {incr i} {
set clientdir($i) $testdir/CLIENTDIR.$i
@@ -210,15 +200,11 @@ proc rep021_sub { method nclients tnum logset recargs largs } {
set c_txnargs($i) [adjust_txnargs $c_logtype($i)]
set id($i) [expr 2 + $i]
repladd $id($i)
- set cl_envcmd($i) "berkdb_env -create $c_txnargs($i) \
+ set cl_envcmd($i) "berkdb_env_noerr -create $c_txnargs($i) \
$c_logargs($i) -home $clientdir($i) \
+ $verbargs \
-rep_client -rep_transport \[list $id($i) replsend\]"
-# set cl_envcmd($i) "berkdb_env -create $c_txnargs($i) \
-# $c_logargs($i) -home $clientdir($i) \
-# -errpfx CLIENT$i -verbose {rep on} \
-# -rep_client -rep_transport \[list $id($i) replsend\]"
set clenv($i) [eval $cl_envcmd($i) $recargs]
- error_check_good client_env [is_valid_env $clenv($i)] TRUE
}
set masterdb [eval {berkdb_open_noerr -env $menv -auto_commit \
@@ -251,14 +237,9 @@ proc rep021_sub { method nclients tnum logset recargs largs } {
set id($i) [expr 2 + $i]
repladd $id($i)
set cl_envcmd($i) "berkdb_env_noerr -create -txn nosync \
- -home $clientdir($i) \
+ -home $clientdir($i) $verbargs \
-rep_client -rep_transport \[list $id($i) replsend\]"
-# set cl_envcmd($i) "berkdb_env -create -txn nosync \
-# -errpfx CLIENT$i -verbose {rep on} \
-# -home $clientdir($i) \
-# -rep_client -rep_transport \[list $id($i) replsend\]"
set clenv($i) [eval $cl_envcmd($i) $recargs]
- error_check_good client_env [is_valid_env $clenv($i)] TRUE
lappend envlist "$clenv($i) $id($i)"
@@ -266,7 +247,6 @@ proc rep021_sub { method nclients tnum logset recargs largs } {
set stat [catch {eval exec $util_path/db_printlog \
-h $clientdir2 >> $clientdir2/prlog.orig} result]
-
set err 0
process_msgs $envlist 0 NONE err
@@ -280,7 +260,7 @@ proc rep021_sub { method nclients tnum logset recargs largs } {
fileremove -f $clientdir($i)/prlog
set stat [catch {eval exec $util_path/db_printlog \
-h $clientdir($i) >> $clientdir($i)/prlog} result]
- #
+
# If we got an error, then the log should match the original
# and the error message should tell us the client was never
# part of this environment.
diff --git a/db/test/rep022.tcl b/db/test/rep022.tcl
index 3c1b1815b..34cd70a92 100644
--- a/db/test/rep022.tcl
+++ b/db/test/rep022.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2004-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2004,2007 Oracle. All rights reserved.
#
-# $Id: rep022.tcl,v 12.10 2006/08/24 14:46:37 bostic Exp $
+# $Id: rep022.tcl,v 12.16 2007/06/08 15:10:05 sue Exp $
#
# TEST rep022
# TEST Replication elections - test election generation numbers
@@ -52,7 +51,13 @@ proc rep022 { method args } {
proc rep022_sub { method nclients tnum logset largs } {
source ./include.tcl
- global errorInfo
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
+
env_cleanup $testdir
set qdir $testdir/MSGQUEUEDIR
@@ -72,32 +77,28 @@ proc rep022_sub { method nclients tnum logset largs } {
set c_txnargs($i) [adjust_txnargs $c_logtype($i)]
}
-# To debug elections, the lines to uncomment are below the
-# error checking portion of this test. This is needed in order
-# for the error messages to come back in errorInfo and for
-# that portion of the test to pass.
# Open a master.
set envlist {}
repladd 1
- set env_cmd(M) "berkdb_env -create -log_max 1000000 \
+ set env_cmd(M) "berkdb_env_noerr -create -log_max 1000000 $verbargs \
+ -event rep_event \
-home $masterdir $m_txnargs $m_logargs -rep_master \
-errpfx MASTER -rep_transport \[list 1 replsend\]"
set masterenv [eval $env_cmd(M)]
- error_check_good master_env [is_valid_env $masterenv] TRUE
lappend envlist "$masterenv 1"
# Open the clients.
for { set i 0 } { $i < $nclients } { incr i } {
set envid [expr $i + 2]
repladd $envid
- set env_cmd($i) "berkdb_env_noerr -create \
+ set env_cmd($i) "berkdb_env_noerr -create $verbargs \
+ -errpfx CLIENT.$i -event rep_event \
-home $clientdir($i) $c_txnargs($i) $c_logargs($i) \
-rep_client -rep_transport \[list $envid replsend\]"
set clientenv($i) [eval $env_cmd($i)]
- error_check_good \
- client_env($i) [is_valid_env $clientenv($i)] TRUE
lappend envlist "$clientenv($i) $envid"
}
+
# Bring the clients online by processing the startup messages.
process_msgs $envlist
@@ -109,21 +110,19 @@ proc rep022_sub { method nclients tnum logset largs } {
error_check_good masterenv_close [$masterenv close] 0
set envlist [lreplace $envlist 0 0]
-# To debug elections, uncomment the lines below to turn on verbose
-# and set the errfile. Also edit reputils.tcl
-# in proc start_election and swap the 2 commented lines with
-# their counterpart.
foreach pair $envlist {
set i [expr [lindex $pair 1] - 2]
replclear [expr $i + 2]
set err_cmd($i) "none"
set pri($i) 10
set crash($i) 0
-# error_check_good pfx [$clientenv($i) errpfx CLIENT$i] 0
-# error_check_good verb [$clientenv($i) verbose rep on] 0
-# $clientenv($i) errfile /dev/stderr
-# set env_cmd($i) [concat $env_cmd($i) \
-# "-errpfx CLIENT$i -verbose {rep on} -errfile /dev/stderr"]
+ if { $rep_verbose == 1 } {
+ $clientenv($i) errpfx CLIENT$i
+ $clientenv($i) verbose rep on
+ $clientenv($i) errfile /dev/stderr
+ set env_cmd($i) [concat $env_cmd($i) \
+ "-errpfx CLIENT$i -errfile /dev/stderr"]
+ }
}
set msg "Rep$tnum.b"
@@ -150,6 +149,9 @@ proc rep022_sub { method nclients tnum logset largs } {
# Now close and reopen 2 with recovery. Update the
# list of all client envs with the new information.
#
+ replclear 5
+ replclear 6
+ error_check_good flush [$clientenv(2) log_flush] 0
error_check_good clientenv_close(2) [$clientenv(2) close] 0
set clientenv(2) [eval $env_cmd(2) -recover]
set origlist [lreplace $origlist 2 2 "$clientenv(2) 4"]
diff --git a/db/test/rep023.tcl b/db/test/rep023.tcl
index c5a92427c..7b6fcc0f3 100644
--- a/db/test/rep023.tcl
+++ b/db/test/rep023.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2004-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2004,2007 Oracle. All rights reserved.
#
-# $Id: rep023.tcl,v 12.10 2006/08/24 14:46:37 bostic Exp $
+# $Id: rep023.tcl,v 12.14 2007/05/17 18:17:21 bostic Exp $
#
# TEST rep023
# TEST Replication using two master handles.
@@ -66,6 +65,13 @@ proc rep023 { method { niter 10 } { tnum "023" } args } {
proc rep023_sub { method niter tnum logset recargs startopt largs } {
global testdir
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
+
env_cleanup $testdir
replsetup $testdir/MSGQUEUEDIR
@@ -87,31 +93,24 @@ proc rep023_sub { method niter tnum logset recargs startopt largs } {
# Open 1st master.
repladd 1
- set ma_envcmd "berkdb_env -create $m_txnargs $m_logargs \
- -home $masterdir -rep_transport \[list 1 replsend\]"
-# set ma_envcmd "berkdb_env -create $m_txnargs $m_logargs \
-# -errpfx MASTER -verbose {rep on} \
-# -home $masterdir -rep_transport \[list 1 replsend\]"
+ set ma_envcmd "berkdb_env_noerr -create $m_txnargs $m_logargs \
+ $verbargs -errpfx MASTER -home $masterdir \
+ -rep_transport \[list 1 replsend\]"
set masterenv1 [eval $ma_envcmd $recargs -rep_master]
- error_check_good master_env [is_valid_env $masterenv1] TRUE
# Open 2nd handle on master. The master envs will share
# the same envid.
set masterenv2 [eval $ma_envcmd]
- error_check_good master_env [is_valid_env $masterenv2] TRUE
if { $startopt == 1 } {
error_check_good rep_start [$masterenv2 rep_start -master] 0
}
# Open a client.
repladd 2
- set cl_envcmd "berkdb_env -create $c_txnargs $c_logargs \
- -home $clientdir -rep_transport \[list 2 replsend\]"
-# set cl_envcmd "berkdb_env -create $c_txnargs $c_logargs \
-# -errpfx CLIENT1 -verbose {rep on} \
-# -home $clientdir -rep_transport \[list 2 replsend\]"
+ set cl_envcmd "berkdb_env_noerr -create $c_txnargs \
+ $c_logargs $verbargs -errpfx CLIENT -home $clientdir \
+ -rep_transport \[list 2 replsend\]"
set clientenv [eval $cl_envcmd $recargs -rep_client]
- error_check_good client_env [is_valid_env $clientenv] TRUE
# Bring the clients online by processing the startup messages.
# Process messages on the first masterenv handle, not the second.
diff --git a/db/test/rep024.tcl b/db/test/rep024.tcl
index 8092b03c2..aa011b44d 100644
--- a/db/test/rep024.tcl
+++ b/db/test/rep024.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2004-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2004,2007 Oracle. All rights reserved.
#
-# $Id: rep024.tcl,v 12.9 2006/08/24 14:46:37 bostic Exp $
+# $Id: rep024.tcl,v 12.14 2007/06/14 18:12:56 alanb Exp $
#
# TEST rep024
# TEST Replication page allocation / verify test
@@ -54,7 +53,13 @@ proc rep024 { method { niter 1000 } { tnum "024" } args } {
proc rep024_sub { method niter tnum envargs logset recargs largs } {
source ./include.tcl
- global testdir
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
+
env_cleanup $testdir
replsetup $testdir/MSGQUEUEDIR
@@ -83,29 +88,17 @@ proc rep024_sub { method niter tnum envargs logset recargs largs } {
repladd 1
set env_cmd(1) "berkdb_env_noerr -create \
-log_max 1000000 $envargs $recargs -home $masterdir \
- -errpfx MASTER -txn $m_logargs \
+ -errpfx MASTER $verbargs -txn $m_logargs \
-rep_transport \[list 1 replsend\]"
-# set env_cmd(1) "berkdb_env_noerr -create \
-# -log_max 1000000 $envargs $recargs -home $masterdir \
-# -verbose {rep on} -errfile /dev/stderr \
-# -errpfx MASTER -txn $m_logargs \
-# -rep_transport \[list 1 replsend\]"
set masterenv [eval $env_cmd(1) -rep_master]
- error_check_good master_env [is_valid_env $masterenv] TRUE
# Open a client
repladd 2
set env_cmd(2) "berkdb_env_noerr -create \
-log_max 1000000 $envargs $recargs -home $clientdir \
- -errpfx CLIENT -txn $c_logargs \
+ -errpfx CLIENT $verbargs -txn $c_logargs \
-rep_transport \[list 2 replsend\]"
-# set env_cmd(2) "berkdb_env_noerr -create \
-# -log_max 1000000 $envargs $recargs -home $clientdir \
-# -verbose {rep on} -errfile /dev/stderr \
-# -errpfx CLIENT -txn $c_logargs \
-# -rep_transport \[list 2 replsend\]"
set clientenv [eval $env_cmd(2) -rep_client]
- error_check_good client_env [is_valid_env $clientenv] TRUE
# Bring the client online by processing the startup messages.
set envlist "{$masterenv 1} {$clientenv 2}"
@@ -126,7 +119,7 @@ proc rep024_sub { method niter tnum envargs logset recargs largs } {
set omethod [convert_method $method]
set testfile "test$tnum.db"
- set db [eval "berkdb_open -create $omethod -auto_commit \
+ set db [eval "berkdb_open_noerr -create $omethod -auto_commit \
-pagesize $pagesize -env $masterenv $largs $testfile"]
eval rep_test $method $masterenv $db $niter 0 0 0 0 $largs
process_msgs $envlist
@@ -166,11 +159,13 @@ proc rep024_sub { method niter tnum envargs logset recargs largs } {
puts "\tRep$tnum.d: Swap master and client ($option)."
set newmasterenv [eval $env_cmd(2) -rep_master]
set newclientenv [eval $env_cmd(1) -rep_client]
+ set newmasterdir [$newmasterenv get_home]
+ set newclientdir [$newclientenv get_home]
set envlist "{$newmasterenv 2} {$newclientenv 1}"
process_msgs $envlist
if { $option == "add new data" } {
set key [expr $niter + 2]
- set db [eval "berkdb_open -create $omethod \
+ set db [eval "berkdb_open_noerr -create $omethod \
-auto_commit -pagesize $pagesize \
-env $newmasterenv $largs $testfile"]
set pages1 [r24_check_pages $db $method]
@@ -184,6 +179,17 @@ proc rep024_sub { method niter tnum envargs logset recargs largs } {
process_msgs $envlist
}
puts "\tRep$tnum.e: Close master and client, run verify."
+ #
+ # Verify_dir will db_verify with its own private environment,
+ # which means any dirty pages still in our environment won't be
+ # noticed. So, make sure there are no dirty pages. Running
+ # checkpoint at the master flushes its cache, and replicating
+ # that checkpoint to the client makes the client flush its
+ # cache.
+ #
+ $newmasterenv txn_checkpoint
+ process_msgs $envlist
+
error_check_good newmasterenv_close [$newmasterenv close] 0
error_check_good newclientenv_close [$newclientenv close] 0
if { $newpages <= 0 } {
@@ -193,9 +199,9 @@ proc rep024_sub { method niter tnum envargs logset recargs largs } {
# This test can leave unreferenced pages on systems without
# FTRUNCATE and that's OK, so set unref to 0.
error_check_good verify \
- [verify_dir $masterdir "\tRep$tnum.f: " 0 0 1 0 0] 0
+ [verify_dir $newmasterdir "\tRep$tnum.f: " 0 0 1 0 0] 0
error_check_good verify \
- [verify_dir $clientdir "\tRep$tnum.g: " 0 0 1 0 0] 0
+ [verify_dir $newclientdir "\tRep$tnum.g: " 0 0 1 0 0] 0
}
replclose $testdir/MSGQUEUEDIR
}
diff --git a/db/test/rep025.tcl b/db/test/rep025.tcl
index cd458be95..fd43d3ca5 100644
--- a/db/test/rep025.tcl
+++ b/db/test/rep025.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2004-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2004,2007 Oracle. All rights reserved.
#
-# $Id: rep025.tcl,v 12.12 2006/08/24 14:46:37 bostic Exp $
+# $Id: rep025.tcl,v 12.18 2007/05/17 18:17:21 bostic Exp $
#
# TEST rep025
# TEST Test of DB_REP_JOIN_FAILURE.
@@ -58,6 +57,12 @@ proc rep025 { method { niter 200 } { tnum "025" } args } {
proc rep025_sub { method niter tnum logset recargs largs } {
global testdir
global util_path
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
env_cleanup $testdir
@@ -74,11 +79,7 @@ proc rep025_sub { method niter tnum logset recargs largs } {
# four times the size of the in-memory log buffer.
set pagesize 4096
append largs " -pagesize $pagesize "
- set log_buf [expr $pagesize * 2]
- set log_max [expr $log_buf * 4]
-
- set m_logargs " -log_buffer $log_buf"
- set c_logargs " -log_buffer $log_buf"
+ set log_max [expr $pagesize * 8]
set m_logtype [lindex $logset 0]
set c_logtype [lindex $logset 1]
@@ -92,31 +93,27 @@ proc rep025_sub { method niter tnum logset recargs largs } {
# Open a master.
repladd 1
set ma_envcmd "berkdb_env_noerr -create $m_txnargs \
- $m_logargs -log_max $log_max \
+ $m_logargs -log_max $log_max $verbargs -errpfx MASTER \
-home $masterdir -rep_transport \[list 1 replsend\]"
-# set ma_envcmd "berkdb_env_noerr -create $m_txnargs \
-# $m_logargs -log_max $log_max \
-# -verbose {rep on} -errpfx MASTER \
-# -home $masterdir -rep_transport \[list 1 replsend\]"
set masterenv [eval $ma_envcmd $recargs -rep_master]
- error_check_good master_env [is_valid_env $masterenv] TRUE
# Open a client
repladd 2
set cl_envcmd "berkdb_env_noerr -create $c_txnargs \
- $c_logargs -log_max $log_max \
+ $c_logargs -log_max $log_max $verbargs -errpfx CLIENT \
-home $clientdir -rep_transport \[list 2 replsend\]"
-# set cl_envcmd "berkdb_env_noerr -create $c_txnargs \
-# $c_logargs -log_max $log_max \
-# -verbose {rep on} -errpfx CLIENT \
-# -home $clientdir -rep_transport \[list 2 replsend\]"
set clientenv [eval $cl_envcmd $recargs -rep_client]
- error_check_good client_env [is_valid_env $clientenv] TRUE
# Bring the clients online by processing the startup messages.
set envlist "{$masterenv 1} {$clientenv 2}"
process_msgs $envlist
+ # Clobber replication's 30-second anti-archive timer, which will have
+ # been started by client sync-up internal init, so that we can do a
+ # log_archive in a moment.
+ #
+ $masterenv test force noarchive_timeout
+
# Run a modified test001 in the master (and update client).
puts "\tRep$tnum.a: Running rep_test in replicated env."
set start 0
diff --git a/db/test/rep026.tcl b/db/test/rep026.tcl
index 50a7a57eb..a7e502943 100644
--- a/db/test/rep026.tcl
+++ b/db/test/rep026.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2004-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2004,2007 Oracle. All rights reserved.
#
-# $Id: rep026.tcl,v 12.12 2006/09/13 21:51:23 carol Exp $
+# $Id: rep026.tcl,v 12.18 2007/05/17 18:17:21 bostic Exp $
#
# TEST rep026
# TEST Replication elections - simulate a crash after sending
@@ -55,8 +54,14 @@ proc rep026 { method args } {
proc rep026_sub { method nclients tnum logset largs } {
source ./include.tcl
- global errorInfo
- global machids queuedbs
+ global machids
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
+
env_cleanup $testdir
set qdir $testdir/MSGQUEUEDIR
@@ -76,25 +81,22 @@ proc rep026_sub { method nclients tnum logset largs } {
set c_txnargs($i) [adjust_txnargs $c_logtype($i)]
}
-# To debug elections, the lines to uncomment are below the
-# error checking portion of this test. This is needed in order
-# for the error messages to come back in errorInfo and for
-# that portion of the test to pass.
# Open a master.
set envlist {}
repladd 1
- set env_cmd(M) "berkdb_env -create -log_max 1000000 \
+ set env_cmd(M) "berkdb_env -create -log_max 1000000 $verbargs \
+ -event rep_event \
-home $masterdir $m_txnargs $m_logargs -rep_master \
-errpfx MASTER -rep_transport \[list 1 replsend\]"
set masterenv [eval $env_cmd(M)]
- error_check_good master_env [is_valid_env $masterenv] TRUE
lappend envlist "$masterenv 1"
# Open the clients.
for { set i 0 } { $i < $nclients } { incr i } {
set envid [expr $i + 2]
repladd $envid
- set env_cmd($i) "berkdb_env_noerr -create \
+ set env_cmd($i) "berkdb_env_noerr -create $verbargs \
+ -event rep_event \
-home $clientdir($i) $c_txnargs($i) $c_logargs($i) \
-rep_client -rep_transport \[list $envid replsend\]"
set clientenv($i) [eval $env_cmd($i)]
@@ -113,21 +115,19 @@ proc rep026_sub { method nclients tnum logset largs } {
error_check_good masterenv_close [$masterenv close] 0
set envlist [lreplace $envlist 0 0]
-# To debug elections, uncomment the lines below to turn on verbose
-# and set the errfile. Also edit reputils.tcl
-# in proc start_election and swap the 2 commented lines with
-# their counterpart.
foreach pair $envlist {
set i [expr [lindex $pair 1] - 2]
replclear [expr $i + 2]
set err_cmd($i) "none"
set crash($i) 0
set pri($i) 10
-# error_check_good pfx [$clientenv($i) errpfx CLIENT$i] 0
-# error_check_good verb [$clientenv($i) verbose rep on] 0
-# $clientenv($i) errfile /dev/stderr
-# set env_cmd($i) [concat $env_cmd($i) \
-# "-errpfx CLIENT$i -verbose {rep on} -errfile /dev/stderr"]
+ if { $rep_verbose == 1 } {
+ $clientenv($i) errpfx CLIENT$i
+ $clientenv($i) verbose rep on
+ $clientenv($i) errfile /dev/stderr
+ set env_cmd($i) [concat $env_cmd($i) \
+ "-errpfx CLIENT$i -errfile /dev/stderr"]
+ }
}
# In each case we simulate a crash in client C, recover, and
@@ -190,14 +190,7 @@ proc rep026_sub { method nclients tnum logset largs } {
# and emptying the originals.
set cwd [pwd]
foreach machid $machids {
- replready $machid to
- cd $qdir
- set msgdbs [glob -nocomplain ready.$machid.*]
- foreach msgdb $msgdbs {
- set savename [string replace $msgdb 0 5 save.]
- file copy -force $msgdb $savename
- }
- cd $cwd
+ file copy -force $qdir/repqueue$machid.db $qdir/save$machid.db
replclear $machid
}
@@ -208,16 +201,19 @@ proc rep026_sub { method nclients tnum logset largs } {
$elector $elector "$clientenv($elector) [expr $elector + 2]"]
process_msgs $envlist
- # Verify egens (should be +1 in C, and unchanged in other clients).
+ # Verify egens (should be +1 in C, and unchanged
+ # in other clients).
foreach pair $envlist {
set i [expr [lindex $pair 1] - 2]
set clientenv($i) [lindex $pair 0]
- set newegen($i) [stat_field \
- $clientenv($i) rep_stat "Election generation number"]
+ set newegen($i) [stat_field $clientenv($i) \
+ rep_stat "Election generation number"]
if { $i == $elector } {
- error_check_good egen+1 $newegen($i) [expr $egen($i) + 1]
+ error_check_good \
+ egen+1 $newegen($i) [expr $egen($i) + 1]
} else {
- error_check_good egen_unchanged $newegen($i) $egen($i)
+ error_check_good \
+ egen_unchanged $newegen($i) $egen($i)
}
}
@@ -266,14 +262,7 @@ proc restore_messages { qdir } {
global machids
set cwd [pwd]
foreach machid $machids {
- replready $machid to
- cd $qdir
- set msgdbs [glob -nocomplain save.$machid.*]
- foreach msgdb $msgdbs {
- set rdyname [string replace $msgdb 0 4 ready.]
- file copy -force $msgdb $rdyname
- }
- cd $cwd
+ file copy -force $qdir/save$machid.db $qdir/repqueue$machid.db
}
}
diff --git a/db/test/rep027.tcl b/db/test/rep027.tcl
index 33edb4216..21832e5eb 100644
--- a/db/test/rep027.tcl
+++ b/db/test/rep027.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2004-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2004,2007 Oracle. All rights reserved.
#
-# $Id: rep027.tcl,v 12.9 2006/08/24 14:46:37 bostic Exp $
+# $Id: rep027.tcl,v 12.13 2007/05/17 18:17:21 bostic Exp $
#
# TEST rep027
# TEST Replication and secondary indexes.
@@ -57,8 +56,13 @@ proc rep027 { method { niter 1000 } { tnum "027" } args } {
proc rep027_sub { method niter tnum logset recargs largs } {
source ./include.tcl
- global testdir
global verbose_check_secondaries
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
set omethod [convert_method $method]
env_cleanup $testdir
@@ -83,20 +87,18 @@ proc rep027_sub { method niter tnum logset recargs largs } {
# Open a master.
repladd 1
- set env_cmd(M) "berkdb_env -create \
- -log_max 1000000 -home $masterdir \
+ set env_cmd(M) "berkdb_env_noerr -create $verbargs \
+ -log_max 1000000 -home $masterdir -errpfx MASTER \
$m_txnargs $m_logargs -rep_master -rep_transport \
\[list 1 replsend\]"
set masterenv [eval $env_cmd(M) $recargs]
- error_check_good master_env [is_valid_env $masterenv] TRUE
# Open a client
repladd 2
- set env_cmd(C) "berkdb_env -create \
- $c_txnargs $c_logargs -home $clientdir \
+ set env_cmd(C) "berkdb_env_noerr -create $verbargs \
+ $c_txnargs $c_logargs -home $clientdir -errpfx CLIENT \
-rep_client -rep_transport \[list 2 replsend\]"
set clientenv [eval $env_cmd(C) $recargs]
- error_check_good client_env [is_valid_env $clientenv] TRUE
# Bring the client online by processing the startup messages.
set envlist "{$masterenv 1} {$clientenv 2}"
@@ -108,13 +110,13 @@ proc rep027_sub { method niter tnum logset recargs largs } {
set sname "secondary$tnum.db"
# Open the primary.
- set pdb [eval {berkdb_open -create \
+ set pdb [eval {berkdb_open_noerr -create \
-auto_commit -env} $masterenv $omethod $largs $pname]
error_check_good primary_open [is_valid_db $pdb] TRUE
process_msgs $envlist
# Open and associate a secondary.
- set sdb [eval {berkdb_open -create \
+ set sdb [eval {berkdb_open_noerr -create \
-auto_commit -env} $masterenv -btree $sname]
error_check_good second_open [is_valid_db $sdb] TRUE
error_check_good db_associate [$pdb associate [callback_n 0] $sdb] 0
diff --git a/db/test/rep028.tcl b/db/test/rep028.tcl
index 7c2fa366f..c466856e5 100644
--- a/db/test/rep028.tcl
+++ b/db/test/rep028.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2004-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2004,2007 Oracle. All rights reserved.
#
-# $Id: rep028.tcl,v 12.11 2006/08/24 14:46:37 bostic Exp $
+# $Id: rep028.tcl,v 12.15 2007/05/17 18:17:21 bostic Exp $
#
# TEST rep028
# TEST Replication and non-rep env handles. (Also see rep006.)
@@ -64,8 +63,13 @@ proc rep028 { method { niter 100 } { tnum "028" } args } {
proc rep028_sub { method niter tnum logset recargs clargs largs } {
source ./include.tcl
- global testdir
global is_hp_test
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
set omethod [convert_method $method]
env_cleanup $testdir
@@ -92,28 +96,17 @@ proc rep028_sub { method niter tnum logset recargs clargs largs } {
puts "\tRep$tnum.a: Open replicated envs and non-replicated client env."
repladd 1
set env_cmd(M) "berkdb_env_noerr -create \
- -log_max 1000000 -home $masterdir \
+ -log_max 1000000 -home $masterdir $verbargs \
$m_txnargs $m_logargs -rep_master \
-rep_transport \[list 1 replsend\]"
-# set env_cmd(M) "berkdb_env_noerr -create \
-# -log_max 1000000 -home $masterdir \
-# $m_txnargs $m_logargs -rep_master \
-# -verbose {rep on} -errpfx MASTER \
-# -rep_transport \[list 1 replsend\]"
set masterenv [eval $env_cmd(M) $recargs]
- error_check_good master_env [is_valid_env $masterenv] TRUE
# Open a client
repladd 2
set env_cmd(C) "berkdb_env_noerr -create $c_txnargs \
- $c_logargs -home $clientdir \
+ $c_logargs -home $clientdir $verbargs \
-rep_transport \[list 2 replsend\]"
-# set env_cmd(C) "berkdb_env_noerr -create $c_txnargs \
-# $c_logargs -home $clientdir \
-# -verbose {rep on} -errpfx CLIENT \
-# -rep_transport \[list 2 replsend\]"
set clientenv [eval $env_cmd(C) $recargs]
- error_check_good client_env [is_valid_env $clientenv] TRUE
# Open 2nd non-replication handle on client env, and create
# a db. Note, by not specifying any subsystem args, we
@@ -162,7 +155,7 @@ proc rep028_sub { method niter tnum logset recargs clargs largs } {
# Open the same db through the master handle. Put data
# and process messages.
- set db [eval berkdb_open \
+ set db [eval berkdb_open_noerr \
-create $omethod -env $masterenv -auto_commit $dbname]
error_check_good db_open [is_valid_db $db] TRUE
eval rep_test $method $masterenv $db $niter 0 0 0 0 $largs
diff --git a/db/test/rep029.tcl b/db/test/rep029.tcl
index fd5454c36..ba8fc2123 100644
--- a/db/test/rep029.tcl
+++ b/db/test/rep029.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2004-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2004,2007 Oracle. All rights reserved.
#
-# $Id: rep029.tcl,v 12.17 2006/08/24 14:46:37 bostic Exp $
+# $Id: rep029.tcl,v 12.24 2007/05/17 18:17:21 bostic Exp $
#
# TEST rep029
# TEST Test of internal initialization.
@@ -67,7 +66,7 @@ proc rep029 { method { niter 200 } { tnum "029" } args } {
set envargs ""
set args $saved_args
puts "Rep$tnum ($method $envargs $r $c $args):\
- Test of internal initialization with $msg."
+ Test of internal initialization $msg."
puts "Rep$tnum: Master logs are [lindex $l 0]"
puts "Rep$tnum: Client logs are [lindex $l 1]"
rep029_sub $method $niter $tnum $envargs \
@@ -97,6 +96,12 @@ proc rep029_sub { method niter tnum envargs logset recargs opts inmem largs } {
global testdir
global passwd
global util_path
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
env_cleanup $testdir
@@ -113,10 +118,7 @@ proc rep029_sub { method niter tnum envargs logset recargs opts inmem largs } {
# four times the size of the in-memory log buffer.
set pagesize 4096
append largs " -pagesize $pagesize "
- set log_buf [expr $pagesize * 2]
- set log_max [expr $log_buf * 4]
- set m_logargs " -log_buffer $log_buf"
- set c_logargs " -log_buffer $log_buf"
+ set log_max [expr $pagesize * 8]
set m_logtype [lindex $logset 0]
set c_logtype [lindex $logset 1]
@@ -130,35 +132,34 @@ proc rep029_sub { method niter tnum envargs logset recargs opts inmem largs } {
# Open a master.
repladd 1
set ma_envcmd "berkdb_env_noerr -create $m_txnargs \
- $m_logargs -log_max $log_max $envargs \
- -home $masterdir -rep_transport \[list 1 replsend\]"
-# set ma_envcmd "berkdb_env_noerr -create $m_txnargs \
-# $m_logargs -log_max $log_max $envargs \
-# -verbose {rep on} -errpfx MASTER -errfile /dev/stderr \
-# -home $masterdir -rep_transport \[list 1 replsend\]"
+ $m_logargs -log_max $log_max $envargs $verbargs \
+ -errpfx MASTER -home $masterdir \
+ -rep_transport \[list 1 replsend\]"
set masterenv [eval $ma_envcmd $recargs -rep_master]
- error_check_good master_env [is_valid_env $masterenv] TRUE
# Open a client
repladd 2
set cl_envcmd "berkdb_env_noerr -create $c_txnargs \
- $c_logargs -log_max $log_max $envargs \
- -home $clientdir -rep_transport \[list 2 replsend\]"
-# set cl_envcmd "berkdb_env_noerr -create $c_txnargs \
-# $c_logargs -log_max $log_max $envargs \
-# -verbose {rep on} -errpfx CLIENT -errfile /dev/stderr \
-# -home $clientdir -rep_transport \[list 2 replsend\]"
+ $c_logargs -log_max $log_max $envargs $verbargs \
+ -errpfx CLIENT -home $clientdir \
+ -rep_transport \[list 2 replsend\]"
set clientenv [eval $cl_envcmd $recargs -rep_client]
- error_check_good client_env [is_valid_env $clientenv] TRUE
# Bring the clients online by processing the startup messages.
set envlist "{$masterenv 1} {$clientenv 2}"
process_msgs $envlist
+ # Clobber replication's 30-second anti-archive timer, which will have
+ # been started by client sync-up internal init, so that we can do a
+ # log_archive in a moment.
+ #
+ $masterenv test force noarchive_timeout
+
# Run rep_test in the master (and update client).
puts "\tRep$tnum.a: Running rep_test in replicated env."
set start 0
- eval rep_test $method $masterenv NULL $niter $start $start 0 $inmem $largs
+ eval rep_test \
+ $method $masterenv NULL $niter $start $start 0 $inmem $largs
incr start $niter
process_msgs $envlist 0 NONE err
error_check_good process_msgs $err 0
@@ -256,7 +257,8 @@ proc rep029_sub { method niter tnum envargs logset recargs opts inmem largs } {
# Add records to the master and update client.
puts "\tRep$tnum.g: Add more records and check again."
set entries 10
- eval rep_test $method $masterenv NULL $entries $start $start 0 $inmem $largs
+ eval rep_test \
+ $method $masterenv NULL $entries $start $start 0 $inmem $largs
incr start $entries
process_msgs $envlist 0 NONE err
error_check_good process_msgs $err 0
diff --git a/db/test/rep030.tcl b/db/test/rep030.tcl
index fd427c619..3015b221c 100644
--- a/db/test/rep030.tcl
+++ b/db/test/rep030.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2004-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2004,2007 Oracle. All rights reserved.
#
-# $Id: rep030.tcl,v 12.16 2006/08/24 14:46:37 bostic Exp $
+# $Id: rep030.tcl,v 12.24 2007/05/17 18:17:21 bostic Exp $
#
# TEST rep030
# TEST Test of internal initialization multiple files and pagesizes.
@@ -65,6 +64,12 @@ proc rep030 { method { niter 500 } { tnum "030" } args } {
proc rep030_sub { method niter tnum logset recargs opts largs } {
global testdir
global util_path
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
env_cleanup $testdir
@@ -80,13 +85,9 @@ proc rep030_sub { method niter tnum logset recargs opts largs } {
# The documentation says that the log file must be at least
# four times the size of the in-memory log buffer.
set maxpg 16384
- set log_buf [expr $maxpg * 2]
- set log_max [expr $log_buf * 4]
+ set log_max [expr $maxpg * 8]
set cache [expr $maxpg * 32 ]
- set m_logargs " -log_buffer $log_buf"
- set c_logargs " -log_buffer $log_buf"
-
set m_logtype [lindex $logset 0]
set c_logtype [lindex $logset 1]
@@ -101,54 +102,41 @@ proc rep030_sub { method niter tnum logset recargs opts largs } {
#
# Run internal init using a data directory
#
-
+ file mkdir $masterdir/data
+ file mkdir $masterdir/data2
+ file mkdir $clientdir/data
+ file mkdir $clientdir/data2
#
- # !!! - SR 14578 opening with recovery blows away data_dir.
+ # Set it twice to test duplicates data_dirs as well
+ # as multiple, different data dirs
#
- if { $recargs != "-recover" } {
- file mkdir $masterdir/data
- file mkdir $masterdir/data2
- file mkdir $clientdir/data
- file mkdir $clientdir/data2
- #
- # Set it twice to test duplicates data_dirs as well
- # as multiple, different data dirs
- #
- set data_diropts " -data_dir data -data_dir data -data_dir data2"
- } else {
- set data_diropts ""
- }
+ set data_diropts " -data_dir data -data_dir data -data_dir data2"
+
repladd 1
set ma_envcmd "berkdb_env_noerr -create $m_txnargs \
- $m_logargs -log_max $log_max \
- -cachesize { 0 $cache 1 } $data_diropts \
+ $m_logargs -log_max $log_max -errpfx MASTER \
+ -cachesize { 0 $cache 1 } $data_diropts $verbargs \
-home $masterdir -rep_transport \[list 1 replsend\]"
-# set ma_envcmd "berkdb_env_noerr -create $m_txnargs \
-# $m_logargs -log_max $log_max \
-# -cachesize { 0 $cache 1 } $data_diropts \
-# -verbose {rep on} -errpfx MASTER -errfile /dev/stderr \
-# -home $masterdir -rep_transport \[list 1 replsend\]"
set masterenv [eval $ma_envcmd $recargs -rep_master]
- error_check_good master_env [is_valid_env $masterenv] TRUE
# Open a client
repladd 2
set cl_envcmd "berkdb_env_noerr -create $c_txnargs \
- $c_logargs -log_max $log_max \
- -cachesize { 0 $cache 1 } $data_diropts \
+ $c_logargs -log_max $log_max -errpfx CLIENT \
+ -cachesize { 0 $cache 1 } $data_diropts $verbargs \
-home $clientdir -rep_transport \[list 2 replsend\]"
-# set cl_envcmd "berkdb_env_noerr -create $c_txnargs \
-# $c_logargs -log_max $log_max \
-# -cachesize { 0 $cache 1 } $data_diropts \
-# -verbose {rep on} -errpfx CLIENT -errfile /dev/stderr \
-# -home $clientdir -rep_transport \[list 2 replsend\]"
set clientenv [eval $cl_envcmd $recargs -rep_client]
- error_check_good client_env [is_valid_env $clientenv] TRUE
# Bring the clients online by processing the startup messages.
set envlist "{$masterenv 1} {$clientenv 2}"
process_msgs $envlist
+ # Clobber replication's 30-second anti-archive timer, which will have
+ # been started by client sync-up internal init, so that we can do a
+ # log_archive in a moment.
+ #
+ $masterenv test force noarchive_timeout
+
# Run rep_test in the master (and update client).
set startpgsz 512
set pglist ""
@@ -183,7 +171,7 @@ proc rep030_sub { method niter tnum logset recargs opts largs } {
# them in dbreg list.
#
if { [expr $i % 2 ] == 0 } {
- set db [berkdb_open -env $masterenv $new]
+ set db [berkdb_open_noerr -env $masterenv $new]
error_check_good dbopen.$i [is_valid_db $db] TRUE
lappend dbopen $db
}
diff --git a/db/test/rep031.tcl b/db/test/rep031.tcl
index 03a1936c8..d36e7c0f9 100644
--- a/db/test/rep031.tcl
+++ b/db/test/rep031.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2004-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2004,2007 Oracle. All rights reserved.
#
-# $Id: rep031.tcl,v 12.17 2006/09/11 19:47:22 sue Exp $
+# $Id: rep031.tcl,v 12.23 2007/05/17 18:17:21 bostic Exp $
#
# TEST rep031
# TEST Test of internal initialization and blocked operations.
@@ -69,6 +68,12 @@ proc rep031 { method { niter 200 } { tnum "031" } args } {
proc rep031_sub { method niter tnum logset recargs clean largs } {
source ./include.tcl
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
env_cleanup $testdir
@@ -85,11 +90,7 @@ proc rep031_sub { method niter tnum logset recargs clean largs } {
# four times the size of the in-memory log buffer.
set pagesize 4096
append largs " -pagesize $pagesize "
- set log_buf [expr $pagesize * 2]
- set log_max [expr $log_buf * 4]
-
- set m_logargs " -log_buffer $log_buf"
- set c_logargs " -log_buffer $log_buf"
+ set log_max [expr $pagesize * 8]
set m_logtype [lindex $logset 0]
set c_logtype [lindex $logset 1]
@@ -103,31 +104,23 @@ proc rep031_sub { method niter tnum logset recargs clean largs } {
# Open a master.
repladd 1
set ma_envcmd "berkdb_env_noerr -create $m_txnargs \
- $m_logargs -log_max $log_max \
+ $m_logargs -log_max $log_max $verbargs \
-home $masterdir -rep_transport \[list 1 replsend\]"
-# set ma_envcmd "berkdb_env_noerr -create $m_txnargs \
-# $m_logargs -log_max $log_max \
-# -verbose {rep on} -errpfx MASTER -errfile /dev/stderr \
-# -home $masterdir -rep_transport \[list 1 replsend\]"
set masterenv [eval $ma_envcmd $recargs -rep_master]
- error_check_good master_env [is_valid_env $masterenv] TRUE
# Open a client
repladd 2
set cl_envcmd "berkdb_env_noerr -create $c_txnargs \
- $c_logargs -log_max $log_max \
+ $c_logargs -log_max $log_max $verbargs \
-home $clientdir -rep_transport \[list 2 replsend\]"
-# set cl_envcmd "berkdb_env_noerr -create $c_txnargs \
-# $c_logargs -log_max $log_max \
-# -verbose {rep on} -errpfx CLIENT -errfile /dev/stderr \
-# -home $clientdir -rep_transport \[list 2 replsend\]"
set clientenv [eval $cl_envcmd $recargs -rep_client]
- error_check_good client_env [is_valid_env $clientenv] TRUE
# Bring the clients online by processing the startup messages.
set envlist "{$masterenv 1} {$clientenv 2}"
process_msgs $envlist
+ $masterenv test force noarchive_timeout
+
# Run rep_test in the master (and update client).
puts "\tRep$tnum.a: Running rep_test in replicated env."
set start 0
@@ -248,8 +241,7 @@ proc rep031_sub { method niter tnum logset recargs clean largs } {
if { $is_hp_test != 1 } {
puts "\tRep$tnum.j.1: Log_archive in new non-rep env."
set newenv [berkdb_env_noerr -txn nosync \
- -log_buffer $log_buf -log_max $log_max \
- -home $masterdir]
+ -log_max $log_max -home $masterdir]
error_check_good newenv [is_valid_env $newenv] TRUE
set res [$newenv log_archive -arch_remove]
set res [eval exec \
diff --git a/db/test/rep032.tcl b/db/test/rep032.tcl
index 4495b3181..fa74d7c64 100644
--- a/db/test/rep032.tcl
+++ b/db/test/rep032.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2004-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2004,2007 Oracle. All rights reserved.
#
-# $Id: rep032.tcl,v 12.10 2006/08/24 14:46:37 bostic Exp $
+# $Id: rep032.tcl,v 12.15 2007/05/17 18:17:21 bostic Exp $
#
# TEST rep032
# TEST Test of log gap processing.
@@ -53,6 +52,12 @@ proc rep032 { method { niter 200 } { tnum "032" } args } {
proc rep032_sub { method niter tnum logset recargs opts largs } {
global testdir
global util_path
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
env_cleanup $testdir
@@ -76,26 +81,20 @@ proc rep032_sub { method niter tnum logset recargs opts largs } {
# Open a master.
repladd 1
- set ma_envcmd "berkdb_env_noerr -create $m_txnargs $m_logargs \
- -home $masterdir -rep_transport \[list 1 replsend\]"
-# set ma_envcmd "berkdb_env_noerr -create $m_txnargs $m_logargs \
-# -verbose {rep on} -errpfx MASTER \
-# -home $masterdir -rep_transport \[list 1 replsend\]"
+ set ma_envcmd "berkdb_env_noerr -create $m_txnargs \
+ $m_logargs $verbargs -home $masterdir -errpfx MASTER \
+ -rep_transport \[list 1 replsend\]"
set masterenv [eval $ma_envcmd $recargs -rep_master]
- error_check_good master_env [is_valid_env $masterenv] TRUE
if { $opts == "bulk" } {
error_check_good bulk [$masterenv rep_config {bulk on}] 0
}
# Open a client
repladd 2
- set cl_envcmd "berkdb_env_noerr -create $c_txnargs $c_logargs \
- -home $clientdir -rep_transport \[list 2 replsend\]"
-# set cl_envcmd "berkdb_env_noerr -create $c_txnargs $c_logargs \
-# -verbose {rep on} -errpfx CLIENT \
-# -home $clientdir -rep_transport \[list 2 replsend\]"
+ set cl_envcmd "berkdb_env_noerr -create $c_txnargs \
+ $c_logargs $verbargs -home $clientdir -errpfx CLIENT \
+ -rep_transport \[list 2 replsend\]"
set clientenv [eval $cl_envcmd $recargs -rep_client]
- error_check_good client_env [is_valid_env $clientenv] TRUE
# Bring the client online by processing the startup messages.
set envlist "{$masterenv 1} {$clientenv 2}"
@@ -110,9 +109,8 @@ proc rep032_sub { method niter tnum logset recargs opts largs } {
puts "\tRep$tnum.b: Check client processed everything properly."
set queued [stat_field $clientenv rep_stat "Maximum log records queued"]
- set request [stat_field $clientenv rep_stat "Log records requested"]
+ set request1 [stat_field $clientenv rep_stat "Log records requested"]
error_check_good queued $queued 0
- error_check_good request $request 0
# Run rep_test in the master (don't update client).
# First run with dropping all client messages via replclear.
@@ -133,9 +131,9 @@ proc rep032_sub { method niter tnum logset recargs opts largs } {
puts "\tRep$tnum.e: Check we re-requested and had a backlog."
set queued [stat_field $clientenv rep_stat "Maximum log records queued"]
- set request [stat_field $clientenv rep_stat "Log records requested"]
+ set request2 [stat_field $clientenv rep_stat "Log records requested"]
error_check_bad queued $queued 0
- error_check_bad request $request 0
+ error_check_bad request $request1 $request2
puts "\tRep$tnum.f: Verify logs and databases"
#
diff --git a/db/test/rep033.tcl b/db/test/rep033.tcl
index be9bf90ca..eb4238804 100644
--- a/db/test/rep033.tcl
+++ b/db/test/rep033.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2004-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2004,2007 Oracle. All rights reserved.
#
-# $Id: rep033.tcl,v 12.11 2006/08/24 14:46:37 bostic Exp $
+# $Id: rep033.tcl,v 12.17 2007/06/19 03:33:16 moshen Exp $
#
# TEST rep033
# TEST Test of internal initialization with rename and remove of dbs.
@@ -26,6 +25,14 @@ proc rep033 { method { niter 200 } { tnum "033" } args } {
return "ALL"
}
+ # This test depends on manipulating logs, so can not be run with
+ # in-memory logging.
+ global mixed_mode_logging
+ if { $mixed_mode_logging > 0 } {
+ puts "Rep$tnum: Skipping for mixed-mode logging."
+ return
+ }
+
set args [convert_args $method $args]
set omethod [convert_method $method]
@@ -49,6 +56,12 @@ proc rep033 { method { niter 200 } { tnum "033" } args } {
proc rep033_sub { method niter tnum envargs recargs clean when largs } {
global testdir
global util_path
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
env_cleanup $testdir
@@ -72,36 +85,34 @@ proc rep033_sub { method niter tnum envargs recargs clean when largs } {
repladd 1
set ma_envcmd "berkdb_env_noerr -create -txn nosync \
-log_buffer $log_buf -log_max $log_max $envargs \
+ -errpfx MASTER $verbargs \
-home $masterdir -rep_transport \[list 1 replsend\]"
-# set ma_envcmd "berkdb_env_noerr -create -txn nosync \
-# -log_buffer $log_buf -log_max $log_max $envargs \
-# -verbose {rep on} -errpfx MASTER \
-# -home $masterdir -rep_transport \[list 1 replsend\]"
set masterenv [eval $ma_envcmd $recargs -rep_master]
- error_check_good master_env [is_valid_env $masterenv] TRUE
# Open a client
repladd 2
set cl_envcmd "berkdb_env_noerr -create -txn nosync \
-log_buffer $log_buf -log_max $log_max $envargs \
+ -errpfx CLIENT $verbargs \
-home $clientdir -rep_transport \[list 2 replsend\]"
-# set cl_envcmd "berkdb_env_noerr -create -txn nosync \
-# -log_buffer $log_buf -log_max $log_max $envargs \
-# -verbose {rep on} -errpfx CLIENT \
-# -home $clientdir -rep_transport \[list 2 replsend\]"
set clientenv [eval $cl_envcmd $recargs -rep_client]
- error_check_good client_env [is_valid_env $clientenv] TRUE
# Bring the clients online by processing the startup messages.
set envlist "{$masterenv 1} {$clientenv 2}"
process_msgs $envlist
+ # Clobber replication's 30-second anti-archive timer, which will have
+ # been started by client sync-up internal init, so that we can do a
+ # log_archive in a moment.
+ #
+ $masterenv test force noarchive_timeout
+
puts "\tRep$tnum.a: Create several databases on master."
set oflags " -env $masterenv $method -create -auto_commit "
- set dbw [eval {berkdb_open} $oflags $largs w.db]
- set dbx [eval {berkdb_open} $oflags $largs x.db]
- set dby [eval {berkdb_open} $oflags $largs y.db]
- set dbz [eval {berkdb_open} $oflags $largs z.db]
+ set dbw [eval {berkdb_open_noerr} $oflags $largs w.db]
+ set dbx [eval {berkdb_open_noerr} $oflags $largs x.db]
+ set dby [eval {berkdb_open_noerr} $oflags $largs y.db]
+ set dbz [eval {berkdb_open_noerr} $oflags $largs z.db]
error_check_good dbw_close [$dbw close] 0
error_check_good dbx_close [$dbx close] 0
error_check_good dby_close [$dby close] 0
@@ -125,8 +136,8 @@ proc rep033_sub { method niter tnum envargs recargs clean when largs } {
# rep_test an existing handle.
#
puts "\tRep$tnum.c: Create new databases. Populate with rep_test."
- set dba [eval {berkdb_open} $oflags $largs a.db]
- set dbb [eval {berkdb_open} $oflags $largs b.db]
+ set dba [eval {berkdb_open_noerr} $oflags $largs a.db]
+ set dbb [eval {berkdb_open_noerr} $oflags $largs b.db]
eval rep_test $method $masterenv $dba $niter 0 0 0 0 $largs
eval rep_test $method $masterenv $dbb $niter 0 0 0 0 $largs
error_check_good dba_close [$dba close] 0
@@ -181,8 +192,10 @@ proc rep033_sub { method niter tnum envargs recargs clean when largs } {
#
set dbnames "x.db w.db c.db"
foreach db $dbnames {
- set db1 [eval {berkdb_open -env $masterenv} $largs {-rdonly $db}]
- set db2 [eval {berkdb_open -env $clientenv} $largs {-rdonly $db}]
+ set db1 [eval \
+ {berkdb_open_noerr -env $masterenv} $largs {-rdonly $db}]
+ set db2 [eval \
+ {berkdb_open_noerr -env $clientenv} $largs {-rdonly $db}]
error_check_good compare:$db [db_compare \
$db1 $db2 $masterdir/$db $clientdir/$db] 0
diff --git a/db/test/rep034.tcl b/db/test/rep034.tcl
index 06aa7c07e..56f04bef8 100644
--- a/db/test/rep034.tcl
+++ b/db/test/rep034.tcl
@@ -1,19 +1,19 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2004-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2004,2007 Oracle. All rights reserved.
#
-# $Id: rep034.tcl,v 12.13 2006/09/08 20:32:18 bostic Exp $
+# $Id: rep034.tcl,v 12.22 2007/06/21 16:32:24 alanb Exp $
#
# TEST rep034
-# TEST Test of client startup synchronization.
+# TEST Test of STARTUPDONE notification.
# TEST
-# TEST One master, two clients.
-# TEST Run rep_test.
-# TEST Close one client and change master to other client.
-# TEST Reopen closed client - enter startup.
-# TEST Run rep_test and we should see live messages and startup complete.
-# TEST Run the test with/without client-to-client synchronization.
+# TEST STARTUPDONE can now be recognized without the need for new "live" log
+# TEST records from the master (under favorable conditions). The response to
+# TEST the ALL_REQ at the end of synchronization includes an end-of-log marker
+# TEST that now triggers it. However, the message containing that end marker
+# TEST could get lost, so live log records still serve as a back-up mechanism.
+# TEST The end marker may also be set under c2c sync, but only if the serving
+# TEST client has itself achieved STARTUPDONE.
#
proc rep034 { method { niter 2 } { tnum "034" } args } {
@@ -30,40 +30,31 @@ proc rep034 { method { niter 2 } { tnum "034" } args } {
set args [convert_args $method $args]
set logsets [create_logsets 3]
-
- # Run the body of the test with and without recovery.
- #
- # Test a couple sets of options. Getting 'startup' from the stat
- # or return value is unrelated to servicing requests from anywhere
- # or from the master. List them together to make the test shorter.
- # We don't need to test every combination.
- #
- set opts { {stat anywhere} {ret from_master} }
- foreach r $test_recopts {
- foreach l $logsets {
- set logindex [lsearch -exact $l "in-memory"]
- if { $r == "-recover" && $logindex != -1 } {
- puts "Rep$tnum: Skipping\
- for in-memory logs with -recover."
- continue
- }
- foreach s $opts {
- puts "Rep$tnum ($method $r $s $args):\
- Test of startup synchronization detection."
- puts "Rep$tnum: Master logs are [lindex $l 0]"
- puts "Rep$tnum: Client 0 logs are [lindex $l 1]"
- puts "Rep$tnum: Client 1 logs are [lindex $l 2]"
- rep034_sub $method $niter $tnum $l $r $s $args
- }
- }
+ foreach l $logsets {
+ puts "Rep$tnum ($method $args):\
+ Test of startup synchronization detection."
+ puts "Rep$tnum: Master logs are [lindex $l 0]"
+ puts "Rep$tnum: Client 0 logs are [lindex $l 1]"
+ puts "Rep$tnum: Client 1 logs are [lindex $l 2]"
+ rep034_sub $method $niter $tnum $l $args
}
}
-proc rep034_sub { method niter tnum logset recargs opts largs } {
+# This test manages on its own the decision of whether or not to open an
+# environment with recovery. (It varies throughout the test.) Therefore there
+# is no need to run it twice (as we often do with a loop in the main proc).
+#
+proc rep034_sub { method niter tnum logset largs } {
global anywhere
global testdir
- global util_path
global startup_done
+ global rep_verbose
+ global rep034_got_allreq
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
env_cleanup $testdir
@@ -90,158 +81,243 @@ proc rep034_sub { method niter tnum logset recargs opts largs } {
set c_txnargs [adjust_txnargs $c_logtype]
set c2_txnargs [adjust_txnargs $c2_logtype]
- set stup [lindex $opts 0]
- set anyopt [lindex $opts 1]
- if { $anyopt == "anywhere" } {
- set anywhere 1
- } else {
- set anywhere 0
- }
+ # In first part of test master serves requests.
+ #
+ set anywhere 0
- # Open a master.
+ # Create a master; add some data.
+ #
repladd 1
set ma_envcmd "berkdb_env_noerr -create $m_txnargs $m_logargs \
- -event rep_startup_event \
- -home $masterdir -rep_transport \[list 1 replsend\]"
-# set ma_envcmd "berkdb_env_noerr -create $m_txnargs $m_logargs \
-# -verbose {rep on} -errpfx MASTER \
-# -event rep_startup_event \
-# -home $masterdir -rep_transport \[list 1 replsend\]"
- set masterenv [eval $ma_envcmd $recargs -rep_master]
- error_check_good master_env [is_valid_env $masterenv] TRUE
-
- # Open a client
+ -event rep_event $verbargs -errpfx MASTER \
+ -home $masterdir -rep_master -rep_transport \[list 1 replsend\]"
+ set masterenv [eval $ma_envcmd]
+ puts "\tRep$tnum.a: Create master; add some data."
+ eval rep_test $method $masterenv NULL $niter 0 0 0 0 $largs
+
+ # Bring up a new client, and see that it can get STARTUPDONE with no new
+ # live transactions at the master.
+ #
+ puts "\tRep$tnum.b: Bring up client; check STARTUPDONE."
repladd 2
set cl_envcmd "berkdb_env_noerr -create $c_txnargs $c_logargs \
- -event rep_startup_event \
- -home $clientdir -rep_transport \[list 2 replsend\]"
-# set cl_envcmd "berkdb_env_noerr -create $c_txnargs $c_logargs \
-# -event rep_startup_event \
-# -verbose {rep on} -errpfx CLIENT \
-# -home $clientdir -rep_transport \[list 2 replsend\]"
- set clientenv [eval $cl_envcmd $recargs -rep_client]
- error_check_good client_env [is_valid_env $clientenv] TRUE
-
- # Open a client
- repladd 3
- set cl2_envcmd "berkdb_env_noerr -create $c2_txnargs $c2_logargs \
- -event rep_startup_event \
- -home $clientdir2 -rep_transport \[list 3 replsend\]"
-# set cl2_envcmd "berkdb_env_noerr -create $c2_txnargs $c2_logargs \
-# -event rep_startup_event \
-# -verbose {rep on} -errpfx CLIENT2 \
-# -home $clientdir2 -rep_transport \[list 3 replsend\]"
- set client2env [eval $cl2_envcmd $recargs -rep_client]
- error_check_good client_env [is_valid_env $client2env] TRUE
-
- # Bring the clients online by processing the startup messages.
- set envlist "{$masterenv 1} {$clientenv 2} {$client2env 3}"
+ -event rep_event $verbargs -errpfx CLIENT \
+ -home $clientdir -rep_client -rep_transport \[list 2 replsend\]"
+ set clientenv [eval $cl_envcmd]
+ set envlist "{$masterenv 1} {$clientenv 2}"
+ set startup_done 0
process_msgs $envlist
- # Run rep_test in the master (and update client).
- puts "\tRep$tnum.a: Running rep_test in replicated env."
- eval rep_test $method $masterenv NULL $niter 0 0 0 0 $largs
- process_msgs $envlist
+ error_check_good done_without_live_txns \
+ [stat_field $clientenv rep_stat "Startup complete"] 1
- puts "\tRep$tnum.b: Close client and run with new master."
- error_check_good client_close [$clientenv close] 0
- set envlist "{$masterenv 1} {$client2env 3}"
+ # Test that the event got fired as well. In the rest of the test things
+ # get a little complex (what with having two clients), so only check the
+ # event part here. The important point is the various ways that
+ # STARTUPDONE can be computed, so testing the event firing mechanism
+ # just this once is enough.
+ #
+ error_check_good done_event_too $startup_done 1
- error_check_good master_downgr [$masterenv rep_start -client] 0
- error_check_good cl2_upgr [$client2env rep_start -master] 0
#
- # Just so that we don't get confused who is master/client.
+ # Bring up another client. Do additional new txns at master, ensure
+ # that STARTUPDONE is not triggered at NEWMASTER LSN.
+ #
+ puts "\tRep$tnum.c: Another client; no STARTUPDONE at NEWMASTER LSN."
+ set newmaster_lsn [stat_field $masterenv rep_stat "Next LSN expected"]
+ repladd 3
+ #
+ # !!! Please note that we're giving client2 a special customized version
+ # of the replication transport call-back function.
#
- set newmaster $client2env
- set newclient $masterenv
- process_msgs $envlist
+ set cl2_envcmd "berkdb_env_noerr -create $c2_txnargs $c2_logargs \
+ -event rep_event $verbargs -errpfx CLIENT2 \
+ -home $clientdir2 -rep_client -rep_transport \[list 3 rep034_send\]"
+ set client2env [eval $cl2_envcmd]
- # Run rep_test in the master (don't update client).
- # Run with dropping all client messages via replclear.
- eval rep_test $method $newmaster NULL $niter 0 0 0 0 $largs
- process_msgs $envlist
- replclear 2
+ set envlist "{$masterenv 1} {$clientenv 2} {$client2env 3}"
+ set verified false
+ for {set i 0} {$i < 10} {incr i} {
+ proc_msgs_once $envlist
+ set client2lsn \
+ [stat_field $client2env rep_stat "Next LSN expected"]
- puts "\tRep$tnum.c: Restart client"
- set startup_done 0
- set clientenv [eval $cl_envcmd $recargs -rep_client]
- error_check_good client_env [is_valid_env $clientenv] TRUE
+ # Get to the point where we've gone past where the master's LSN
+ # was at NEWMASTER time, and make sure we haven't yet gotten
+ # STARTUPDONE. Ten loop iterations should be plenty.
+ #
+ if {[$client2env log_compare $client2lsn $newmaster_lsn] > 0} {
+ if {![stat_field \
+ $client2env rep_stat "Startup complete"]} {
+ set verified true
+ }
+ break;
+ }
+ eval rep_test $method $masterenv NULL $niter 0 0 0 0 $largs
+ }
+ error_check_good no_newmaster_trigger $verified true
+
+ process_msgs $envlist
+ error_check_good done_during_live_txns \
+ [stat_field $client2env rep_stat "Startup complete"] 1
#
- # Record the number of rerequests now because they can
- # happen during initial processing or later.
+ # From here on out we use client-to-client sync.
+ #
+ set anywhere 1
+
+ # Here we rely on recovery at client 1. If that client is running with
+ # in-memory logs, forgo the remainder of the test.
#
- if { $anyopt == "anywhere" } {
- set clrereq1 [stat_field $clientenv rep_stat \
- "Client rerequests"]
- set nclrereq1 [stat_field $newclient rep_stat \
- "Client rerequests"]
+ if {$c_logtype eq "in-mem"} {
+ puts "\tRep$tnum.d: Skip rest of test for in-memory logging."
+ $masterenv close
+ $clientenv close
+ $client2env close
+ replclose $testdir/MSGQUEUEDIR
+ return
}
- set envlist "{$newclient 1} {$clientenv 2} {$newmaster 3}"
- process_msgs $envlist
- puts "\tRep$tnum.d: Verify client in startup mode"
- set start [stat_field $clientenv rep_stat "Startup complete"]
- error_check_good start_incomplete $start 0
+ # Shut down client 1. Bring it back, with recovery. Verify that it can
+ # get STARTUPDONE by syncing to other client, even with no new master
+ # txns.
+ #
+ puts "\tRep$tnum.d: Verify STARTUPDONE using c2c sync."
+ $clientenv close
+ set clientenv [eval $cl_envcmd -recover]
+ set envlist "{$masterenv 1} {$clientenv 2} {$client2env 3}"
- puts "\tRep$tnum.e: Generate live message"
- eval rep_test $method $newmaster NULL $niter 0 0 0 0 $largs
+ # Clear counters at client2, so that we can check "Client service
+ # requests" in a moment.
+ #
+ $client2env rep_stat -clear
process_msgs $envlist
+ error_check_good done_via_c2c \
+ [stat_field $clientenv rep_stat "Startup complete"] 1
+ #
+ # Make sure our request was served by client2. This isn't a test of c2c
+ # sync per se, but if this fails it indicates that we're not really
+ # testing what we thought we were testing.
+ #
+ error_check_bad c2c_served_by_master \
+ [stat_field $client2env rep_stat "Client service requests"] 0
+ # Verify that we don't get STARTUPDONE if we are using c2c sync to
+ # another client, and the serving client has not itself reached
+ # STARTUPDONE, because that suggests that the serving client could be
+ # way far behind. But that we can still eventually get STARTUPDONE, as
+ # a fall-back, once the master starts generating new txns again.
#
- # If we're running with 'anywhere' request servicing, then we
- # need to run several more iterations. When the new master took over
- # the old master requested from the down client and its request
- # got erased via the replclear. We need to generate enough
- # new message now that the 2nd client is online again for the
- # newclient to make its request again.
+ # To do so, we'll need to restart both clients. Start with the client
+ # that will serve the request. Turn off "anywhere" process for a moment
+ # so that we can get this client set up without having the other one
+ # running.
#
- if { $anyopt == "anywhere" } {
- puts "\tRep$tnum.e.1: Generate messages for rerequest"
- set niter 50
- eval rep_test $method $newmaster NULL $niter 0 0 0 0 $largs
- process_msgs $envlist
- set clrereq2 [stat_field $clientenv rep_stat \
- "Client rerequests"]
- set nclrereq2 [stat_field $newclient rep_stat \
- "Client rerequests"]
- #
- # Verify that we had a rerequest. The before/after
- # values should not be the same.
- #
- error_check_bad clrereq $clrereq1 $clrereq2
- error_check_bad nclrereq $nclrereq1 $nclrereq2
- puts "\tRep$tnum.e.2: Generate live messages again"
- set niter 5
- eval rep_test $method $newmaster NULL $niter 0 0 0 0 $largs
- process_msgs $envlist
+ # Now it's client 2 that needs recovery. Forgo the rest of the test if
+ # it is logging in memory. (We could get this far in mixed mode, with
+ # client 1 logging on disk.)
+ #
+ if {$c2_logtype eq "in-mem"} {
+ puts "\tRep$tnum.e: Skip rest of test for in-memory logging."
+ $masterenv close
+ $clientenv close
+ $client2env close
+ replclose $testdir/MSGQUEUEDIR
+ return
}
-
- if { $stup == "stat" } {
- puts "\tRep$tnum.f: Verify client completed startup via stat"
- set start [stat_field $clientenv rep_stat "Startup complete"]
- error_check_good start_complete $start 1
- } else {
- puts "\tRep$tnum.f: Verify client completed startup via event"
- error_check_good start_complete $startup_done 1
+ puts "\tRep$tnum.e: Check no STARTUPDONE when c2c server is behind."
+ $clientenv close
+ $client2env close
+
+ set anywhere 0
+ set client2env [eval $cl2_envcmd -recover]
+ set envlist "{$masterenv 1} {$client2env 3}"
+
+ # We want client2 to get partway through initialization, but once it
+ # sends the ALL_REQ to the master, we want to cut things off there.
+ # Recall that we gave client2 a special "wrapper" version of the
+ # replication transport call-back function: that function will set a
+ # flag when it sees an ALL_REQ message go by.
+ #
+ set rep034_got_allreq false
+ while { !$rep034_got_allreq } {
+ proc_msgs_once $envlist
}
- puts "\tRep$tnum.g: Check message handling of client."
#
- # The newclient would have made requests of clientenv while it
- # was down and then after it was up. Therefore, clientenv's
- # stats should show that it received the request.
+ # To make sure we're doing a valid test, verify that we really did
+ # succeed in getting the serving client into the state we intended.
+ #
+ error_check_good serve_from_notstarted \
+ [stat_field $client2env rep_stat "Startup complete"] 0
+
+ # Start up the client to be tested. Make sure it doesn't get
+ # STARTUPDONE (yet). Again, the checking of service request stats is
+ # just for test debugging, to make sure we have a valid test.
#
- set req3 [stat_field $clientenv rep_stat "Client service requests"]
- if { $anyopt == "anywhere" } {
- error_check_bad req.bad $req3 0
- } else {
- error_check_good req $req3 0
- }
+ # To add insult to injury, not only do we not get STARTUPDONE from the
+ # "behind" client, we also don't even get all the log records we need
+ # (because we didn't allow client2's ALL_REQ to get to the master).
+ # And no mechanism to let us know that. The only resolution is to wait
+ # for gap detection to rerequest (which would then go to the master).
+ # So, set a small rep_request upper bound, so that it doesn't take a ton
+ # of new live txns to reach the trigger.
+ #
+ set anywhere 1
+ $client2env rep_stat -clear
+ replclear 2
+ set clientenv [eval $cl_envcmd -recover]
+ $clientenv rep_request 4 4
+ set envlist "{$masterenv 1} {$clientenv 2} {$client2env 3}"
+
+ while {[rep034_proc_msgs_once $masterenv $clientenv $client2env] > 0} {}
+
+ error_check_good not_from_undone_c2c_client \
+ [stat_field $clientenv rep_stat "Startup complete"] 0
+
+ error_check_bad c2c_served_by_master \
+ [stat_field $client2env rep_stat "Client service requests"] 0
- error_check_good masterenv_close [$newclient close] 0
- error_check_good clientenv_close [$clientenv close] 0
- error_check_good client2env_close [$newmaster close] 0
+ # Verify that we nevertheless *do* get STARTUPDONE after the master
+ # starts generating new txns again.
+ #
+ puts "\tRep$tnum.f: Check STARTUPDONE via fall-back to live txns."
+ eval rep_test $method $masterenv NULL $niter 0 0 0 0 $largs
+ process_msgs $envlist
+ error_check_good fallback_live_txns \
+ [stat_field $clientenv rep_stat "Startup complete"] 1
+
+ $masterenv close
+ $clientenv close
+ $client2env close
replclose $testdir/MSGQUEUEDIR
set anywhere 0
}
+
+# Do a round of message processing, but juggle things such that client2 can
+# never receive a message from the master.
+#
+# Assumes the usual "{$masterenv 1} {$clientenv 2} {$client2env 3}" structure.
+#
+proc rep034_proc_msgs_once { masterenv clientenv client2env } {
+ set nproced [proc_msgs_once "{$masterenv 1}" NONE err]
+ error_check_good pmonce_1 $err 0
+ replclear 3
+
+ incr nproced [proc_msgs_once "{$clientenv 2} {$client2env 3}" NONE err]
+ error_check_good pmonce_2 $err 0
+
+ return $nproced
+}
+
+# Wrapper for replsend. Mostly just a pass-through to the real replsend, except
+# we watch for an ALL_REQ, and just set a flag when we see it.
+#
+proc rep034_send { control rec fromid toid flags lsn } {
+ global rep034_got_allreq
+
+ if {[berkdb msgtype $control] eq "all_req"} {
+ set rep034_got_allreq true
+ }
+ return [replsend $control $rec $fromid $toid $flags $lsn]
+}
diff --git a/db/test/rep035.tcl b/db/test/rep035.tcl
index 109060c5e..3ee038dc8 100644
--- a/db/test/rep035.tcl
+++ b/db/test/rep035.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2004-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2004,2007 Oracle. All rights reserved.
#
-# $Id: rep035.tcl,v 12.10 2006/08/24 14:46:37 bostic Exp $
+# $Id: rep035.tcl,v 12.17 2007/05/17 18:17:21 bostic Exp $
#
# TEST rep035
# TEST Test sync-up recovery in replication.
@@ -48,6 +47,12 @@ proc rep035 { method { niter 100 } { tnum "035" } args } {
proc rep035_sub { method niter tnum envargs logset largs } {
source ./include.tcl
global testdir
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
env_cleanup $testdir
@@ -76,43 +81,26 @@ proc rep035_sub { method niter tnum envargs logset largs } {
# Open a master.
repladd 1
- set env_cmd(M) "berkdb_env_noerr -create \
+ set env_cmd(M) "berkdb_env_noerr -create $verbargs \
-log_max 1000000 $envargs -home $masterdir $m_logargs \
-errpfx MASTER -errfile /dev/stderr $m_txnargs -rep_master \
-rep_transport \[list 1 replsend\]"
-# set env_cmd(M) "berkdb_env_noerr -create \
-# -log_max 1000000 $envargs -home $masterdir $m_logargs \
-# -errpfx MASTER -errfile /dev/stderr $m_txnargs -rep_master \
-# -verbose {rep on} \
-# -rep_transport \[list 1 replsend\]"
set env1 [eval $env_cmd(M)]
- error_check_good env1 [is_valid_env $env1] TRUE
# Open two clients
repladd 2
- set env_cmd(C1) "berkdb_env_noerr -create \
+ set env_cmd(C1) "berkdb_env_noerr -create $verbargs \
-log_max 1000000 $envargs -home $clientdir1 $c_logargs \
-errfile /dev/stderr -errpfx CLIENT $c_txnargs -rep_client \
-rep_transport \[list 2 replsend\]"
-# set env_cmd(C1) "berkdb_env_noerr -create \
-# -log_max 1000000 $envargs -home $clientdir1 $c_logargs \
-# -errfile /dev/stderr -errpfx CLIENT $c_txnargs -rep_client \
-# -verbose {rep on} \
-# -rep_transport \[list 2 replsend\]"
set env2 [eval $env_cmd(C1)]
- error_check_good env2 [is_valid_env $env2] TRUE
# Second client needs lock_detect flag.
repladd 3
- set env_cmd(C2) "berkdb_env_noerr -create \
+ set env_cmd(C2) "berkdb_env_noerr -create $verbargs \
-log_max 1000000 $envargs -home $clientdir2 $c2_logargs \
-errpfx CLIENT2 -errfile /dev/stderr $c2_txnargs -rep_client \
-lock_detect default -rep_transport \[list 3 replsend\]"
-# set env_cmd(C2) "berkdb_env_noerr -create \
-# -log_max 1000000 $envargs -home $clientdir2 $c2_logargs \
-# -errpfx CLIENT2 -errfile /dev/stderr $c2_txnargs -rep_client \
-# -verbose {rep on} \
-# -lock_detect default -rep_transport \[list 3 replsend\]"
set env3 [eval $env_cmd(C2)]
error_check_good client_env [is_valid_env $env3] TRUE
@@ -120,6 +108,12 @@ proc rep035_sub { method niter tnum envargs logset largs } {
set envlist "{$env1 1} {$env2 2} {$env3 3}"
process_msgs $envlist
+ # Clobber replication's 30-second anti-archive timer, which will have
+ # been started by client sync-up internal init, so that we can do a
+ # log_archive in a moment.
+ #
+ $env1 test force noarchive_timeout
+
# We need to fork off 3 child tclsh processes to operate
# on Site 3's (client always) home directory:
# Process 1 continually calls lock_detect (DB_LOCK_DEFAULT)
@@ -147,6 +141,11 @@ proc rep035_sub { method niter tnum envargs logset largs } {
rep035script.tcl $testdir/log_archive.log \
$clientdir2 archive &]
+ # Pause a bit to let the children get going.
+ tclsleep 5
+
+ set logfilelist [list lock_detect.log \
+ txn_checkpoint.log memp_trickle.log log_archive.log]
set pidlist [list $pid1 $pid2 $pid3 $pid4]
#
@@ -231,14 +230,24 @@ proc rep035_sub { method niter tnum envargs logset largs } {
}
# Communicate with child processes by creating a marker file.
- set markerenv [berkdb_env -create -home $testdir -txn]
+ set markerenv [berkdb_env_noerr -create -home $testdir -txn]
error_check_good markerenv_open [is_valid_env $markerenv] TRUE
- set marker [eval "berkdb_open \
+ set marker [eval "berkdb_open_noerr \
-create -btree -auto_commit -env $markerenv marker.db"]
error_check_good marker_close [$marker close] 0
- # Script should be able to shut itself down fairly quickly.
- watch_procs $pidlist 5
+ # Wait for child processes; they should shut down quickly.
+ watch_procs $pidlist 1
+
+ # There should not be any messages in the log files.
+ # If there are, print them out.
+ foreach file $logfilelist {
+ puts "\tRep$tnum.f: Checking $file for errors."
+ set fd [open $testdir/$file r]
+ while { [gets $fd str] != -1 } {
+ error "FAIL: found message $str"
+ }
+ }
error_check_good masterdb [$masterdb close] 0
error_check_good clientdb [$clientdb close] 0
diff --git a/db/test/rep035script.tcl b/db/test/rep035script.tcl
index 21e9af6f2..e2610833c 100644
--- a/db/test/rep035script.tcl
+++ b/db/test/rep035script.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2004-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2004,2007 Oracle. All rights reserved.
#
-# $Id: rep035script.tcl,v 12.4 2006/08/24 14:46:37 bostic Exp $
+# $Id: rep035script.tcl,v 12.9 2007/05/17 18:17:21 bostic Exp $
#
# Rep035 script - continually calls lock_detect, txn_checkpoint,
# or mpool_trickle.
@@ -28,8 +27,13 @@ if { $argc != 2 } {
set clientdir [ lindex $argv 0 ]
set apicall [ lindex $argv 1 ]
-set is_repchild 1
+# Join the queue env. We assume the rep test convention of
+# placing the messages in $testdir/MSGQUEUEDIR.
+set queueenv [eval berkdb_env -home $testdir/MSGQUEUEDIR]
+error_check_good script_qenv_open [is_valid_env $queueenv] TRUE
+
# Join the client env.
+repladd 3
set envid 3
set cl2_cmd "berkdb_env_noerr -home $clientdir \
-errfile /dev/stderr -errpfx CLIENT.$apicall \
diff --git a/db/test/rep036.tcl b/db/test/rep036.tcl
index 05d5fefe5..15cbf8222 100644
--- a/db/test/rep036.tcl
+++ b/db/test/rep036.tcl
@@ -1,11 +1,10 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2004-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2004,2007 Oracle. All rights reserved.
#
-# $Id: rep036.tcl,v 12.9 2006/09/15 14:48:14 carol Exp $
+# $Id: rep036.tcl,v 12.13 2007/05/17 18:17:21 bostic Exp $
#
-# TEST rep036
+# TEST rep036
# TEST Multiple master processes writing to the database.
# TEST One process handles all message processing.
@@ -43,7 +42,12 @@ proc rep036 { method { niter 200 } { tnum "036" } args } {
proc rep036_sub { method niter tnum envargs logset args } {
source ./include.tcl
- global testdir
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
env_cleanup $testdir
@@ -65,31 +69,19 @@ proc rep036_sub { method niter tnum envargs logset args } {
# Open a master.
repladd 1
- set env_cmd(M) "berkdb_env_noerr -create \
+ set env_cmd(M) "berkdb_env_noerr -create $verbargs \
-log_max 1000000 $envargs -home $masterdir $m_logargs \
-errpfx MASTER -errfile /dev/stderr -txn -rep_master \
-rep_transport \[list 1 replsend\]"
-# set env_cmd(M) "berkdb_env_noerr -create \
-# -log_max 1000000 $envargs -home $masterdir $m_logargs \
-# -errpfx MASTER -errfile /dev/stderr -txn -rep_master \
-# -verbose {rep on} \
-# -rep_transport \[list 1 replsend\]"
set env1 [eval $env_cmd(M)]
- error_check_good env1 [is_valid_env $env1] TRUE
# Open a client
repladd 2
- set env_cmd(C) "berkdb_env_noerr -create \
+ set env_cmd(C) "berkdb_env_noerr -create $verbargs \
-log_max 1000000 $envargs -home $clientdir $c_logargs \
-errfile /dev/stderr -errpfx CLIENT -txn -rep_client \
-rep_transport \[list 2 replsend\]"
-# set env_cmd(C) "berkdb_env_noerr -create \
-# -log_max 1000000 $envargs -home $clientdir $c_logargs \
-# -errfile /dev/stderr -errpfx CLIENT -txn -rep_client \
-# -verbose {rep on} \
-# -rep_transport \[list 2 replsend\]"
set env2 [eval $env_cmd(C)]
- error_check_good env2 [is_valid_env $env2] TRUE
# Bring the client online by processing the startup messages.
set envlist "{$env1 1} {$env2 2}"
@@ -99,7 +91,7 @@ proc rep036_sub { method niter tnum envargs logset args } {
# # Commented out, as are two more sections below - see [#15049].
# set dpid [eval {exec $util_path/db_deadlock} \
# -a o -v -t 2.0 -h $masterdir >& $testdir/dd.parent.out &]
-
+
# Set up master database.
set testfile "rep$tnum.db"
set omethod [convert_method $method]
@@ -174,7 +166,7 @@ proc rep036_sub { method niter tnum envargs logset args } {
# # We are done with the deadlock detector.
# error_check_good kill_deadlock_detector [tclkill $dpid] ""
-
+
puts "\tRep$tnum.c: Verify logs and databases"
# Check that master and client logs and dbs are identical.
# Logs first ...
@@ -189,8 +181,8 @@ proc rep036_sub { method niter tnum envargs logset args } {
# [filecmp $masterdir/prlog $clientdir/prlog] 0
# ... now the databases.
- set db1 [eval {berkdb_open -env $env1 -rdonly $testfile}]
- set db2 [eval {berkdb_open -env $env2 -rdonly $testfile}]
+ set db1 [eval {berkdb_open_noerr -env $env1 -rdonly $testfile}]
+ set db2 [eval {berkdb_open_noerr -env $env2 -rdonly $testfile}]
error_check_good comparedbs [db_compare \
$db1 $db2 $masterdir/$testfile $clientdir/$testfile] 0
diff --git a/db/test/rep036script.tcl b/db/test/rep036script.tcl
index a06937d29..96bda5799 100644
--- a/db/test/rep036script.tcl
+++ b/db/test/rep036script.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2004-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2004,2007 Oracle. All rights reserved.
#
-# $Id: rep036script.tcl,v 12.5 2006/09/15 14:48:14 carol Exp $
+# $Id: rep036script.tcl,v 12.9 2007/05/17 18:17:21 bostic Exp $
#
# Rep036 script - create additional writers in master env.
#
@@ -30,7 +29,11 @@ set writerid [ lindex $argv 1 ]
set nentries [ lindex $argv 2 ]
set method [ lindex $argv 3 ]
-set is_repchild 1
+# Join the queue env. We assume the rep test convention of
+# placing the messages in $testdir/MSGQUEUEDIR.
+set queueenv [eval berkdb_env -home $testdir/MSGQUEUEDIR]
+error_check_good script_qenv_open [is_valid_env $queueenv] TRUE
+
# We need to set up our own machid.
repladd 1
repladd 2
@@ -82,7 +85,7 @@ while { $count < $nentries } {
set txn "-txn $t"
# If using deadlock detection, uncomment this and comment the
-# following put statement.
+# following put statement.
# # Writing to this database can deadlock. If we do, let the
# # deadlock detector break the lock, wait a second, and try again.
# while { [catch {eval {$mdb put}\
@@ -90,7 +93,7 @@ while { $count < $nentries } {
# error_check_good deadlock [is_substr $ret DB_LOCK_DEADLOCK] 1
# tclsleep 1
# }
-
+
set ret [eval \
{$mdb put} $txn {$key [chop_data $method $str]}]
error_check_good put $ret 0
diff --git a/db/test/rep037.tcl b/db/test/rep037.tcl
index 89ef004c6..c12f45038 100644
--- a/db/test/rep037.tcl
+++ b/db/test/rep037.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2004-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2004,2007 Oracle. All rights reserved.
#
-# $Id: rep037.tcl,v 12.10 2006/08/24 14:46:37 bostic Exp $
+# $Id: rep037.tcl,v 12.17 2007/05/17 18:17:21 bostic Exp $
#
# TEST rep037
# TEST Test of internal initialization and page throttling.
@@ -42,7 +41,7 @@ proc rep037 { method { niter 1500 } { tnum "037" } args } {
# Run the body of the test with and without recovery,
# and with and without cleaning.
- set cleanopts { clean noclean }
+ set cleanopts { bulk clean noclean }
foreach r $test_recopts {
foreach c $cleanopts {
foreach l $logsets {
@@ -66,6 +65,12 @@ proc rep037 { method { niter 1500 } { tnum "037" } args } {
proc rep037_sub { method niter tnum logset recargs clean largs } {
global testdir
global util_path
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
env_cleanup $testdir
@@ -82,10 +87,7 @@ proc rep037_sub { method niter tnum logset recargs clean largs } {
# four times the size of the in-memory log buffer.
set pagesize 4096
append largs " -pagesize $pagesize "
- set log_buf [expr $pagesize * 2]
- set log_max [expr $log_buf * 4]
- set m_logargs " -log_buffer $log_buf"
- set c_logargs " -log_buffer $log_buf"
+ set log_max [expr $pagesize * 8]
set m_logtype [lindex $logset 0]
set c_logtype [lindex $logset 1]
@@ -96,35 +98,46 @@ proc rep037_sub { method niter tnum logset recargs clean largs } {
set m_txnargs [adjust_txnargs $m_logtype]
set c_txnargs [adjust_txnargs $c_logtype]
+ #
+ # If using bulk processing, just use clean. We could add
+ # another control loop to do bulk+clean and then bulk+noclean
+ # but that seems like overkill.
+ #
+ set bulk 0
+ if { $clean == "bulk" } {
+ set bulk 1
+ set clean "clean"
+ }
# Open a master.
repladd 1
set ma_envcmd "berkdb_env_noerr -create $m_txnargs \
- $m_logargs -log_max $log_max \
+ $m_logargs -log_max $log_max -errpfx MASTER $verbargs \
-home $masterdir -rep_transport \[list 1 replsend\]"
-# set ma_envcmd "berkdb_env_noerr -create $m_txnargs \
-# $m_logargs -log_max $log_max \
-# -verbose {rep on} -errpfx MASTER \
-# -home $masterdir -rep_transport \[list 1 replsend\]"
set masterenv [eval $ma_envcmd $recargs -rep_master]
$masterenv rep_limit 0 [expr 32 * 1024]
- error_check_good master_env [is_valid_env $masterenv] TRUE
# Open a client
repladd 2
set cl_envcmd "berkdb_env_noerr -create $c_txnargs \
- $c_logargs -log_max $log_max \
+ $c_logargs -log_max $log_max -errpfx CLIENT $verbargs \
-home $clientdir -rep_transport \[list 2 replsend\]"
-# set cl_envcmd "berkdb_env_noerr -create $c_txnargs \
-# $c_logargs -log_max $log_max \
-# -verbose {rep on} -errpfx CLIENT \
-# -home $clientdir -rep_transport \[list 2 replsend\]"
set clientenv [eval $cl_envcmd $recargs -rep_client]
error_check_good client_env [is_valid_env $clientenv] TRUE
+ if { $bulk } {
+ error_check_good set_bulk [$masterenv rep_config {bulk on}] 0
+ }
+
# Bring the clients online by processing the startup messages.
set envlist "{$masterenv 1} {$clientenv 2}"
process_msgs $envlist
+ # Clobber replication's 30-second anti-archive timer, which will have
+ # been started by client sync-up internal init, so that we can do a
+ # log_archive in a moment.
+ #
+ $masterenv test force noarchive_timeout
+
# Run rep_test in the master (and update client).
puts "\tRep$tnum.a: Running rep_test in replicated env."
set start 0
diff --git a/db/test/rep038.tcl b/db/test/rep038.tcl
index 3b8911962..b9673d271 100644
--- a/db/test/rep038.tcl
+++ b/db/test/rep038.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2004-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2004,2007 Oracle. All rights reserved.
#
-# $Id: rep038.tcl,v 12.12 2006/08/24 14:46:37 bostic Exp $
+# $Id: rep038.tcl,v 12.19 2007/05/17 18:17:21 bostic Exp $
#
# TEST rep038
# TEST Test of internal initialization and ongoing master updates.
@@ -64,6 +63,12 @@ proc rep038 { method { niter 200 } { tnum "038" } args } {
proc rep038_sub { method niter tnum logset recargs clean largs } {
global testdir
global util_path
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
env_cleanup $testdir
@@ -80,10 +85,7 @@ proc rep038_sub { method niter tnum logset recargs clean largs } {
# four times the size of the in-memory log buffer.
set pagesize 4096
append largs " -pagesize $pagesize "
- set log_buf [expr $pagesize * 2]
- set log_max [expr $log_buf * 4]
- set m_logargs " -log_buffer $log_buf"
- set c_logargs " -log_buffer $log_buf"
+ set log_max [expr $pagesize * 8]
set m_logtype [lindex $logset 0]
set c_logtype [lindex $logset 1]
@@ -97,31 +99,29 @@ proc rep038_sub { method niter tnum logset recargs clean largs } {
# Open a master.
repladd 1
set ma_envcmd "berkdb_env_noerr -create $m_txnargs \
- $m_logargs -log_max $log_max \
+ $m_logargs -log_max $log_max -errpfx MASTER $verbargs \
-home $masterdir -rep_transport \[list 1 replsend\]"
-# set ma_envcmd "berkdb_env_noerr -create $m_txnargs \
-# $m_logargs -log_max $log_max \
-# -verbose {rep on} -errpfx MASTER \
-# -home $masterdir -rep_transport \[list 1 replsend\]"
set masterenv [eval $ma_envcmd $recargs -rep_master]
- error_check_good master_env [is_valid_env $masterenv] TRUE
+ $masterenv rep_limit 0 0
# Open a client
repladd 2
set cl_envcmd "berkdb_env_noerr -create $c_txnargs \
- $c_logargs -log_max $log_max \
+ $c_logargs -log_max $log_max -errpfx CLIENT $verbargs \
-home $clientdir -rep_transport \[list 2 replsend\]"
-# set cl_envcmd "berkdb_env_noerr -create $c_txnargs \
-# $c_logargs -log_max $log_max \
-# -verbose {rep on} -errpfx CLIENT \
-# -home $clientdir -rep_transport \[list 2 replsend\]"
set clientenv [eval $cl_envcmd $recargs -rep_client]
- error_check_good client_env [is_valid_env $clientenv] TRUE
+ $clientenv rep_limit 0 0
# Bring the clients online by processing the startup messages.
set envlist "{$masterenv 1} {$clientenv 2}"
process_msgs $envlist
+ # Clobber replication's 30-second anti-archive timer, which will have
+ # been started by client sync-up internal init, so that we can do a
+ # log_archive in a moment.
+ #
+ $masterenv test force noarchive_timeout
+
# Run rep_test in the master (and update client).
puts "\tRep$tnum.a: Running rep_test in replicated env."
set start 0
@@ -165,6 +165,7 @@ proc rep038_sub { method niter tnum logset recargs clean largs } {
}
set clientenv [eval $cl_envcmd $recargs -rep_client]
error_check_good client_env [is_valid_env $clientenv] TRUE
+ $clientenv rep_limit 0 0
set envlist "{$masterenv 1} {$clientenv 2}"
#
# We want to simulate a master continually getting new
diff --git a/db/test/rep039.tcl b/db/test/rep039.tcl
index ad8d6c6fd..e32721343 100644
--- a/db/test/rep039.tcl
+++ b/db/test/rep039.tcl
@@ -1,22 +1,24 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2004-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2004,2007 Oracle. All rights reserved.
#
-# $Id: rep039.tcl,v 1.15 2006/08/24 14:46:37 bostic Exp $
+# $Id: rep039.tcl,v 1.24 2007/05/24 20:06:39 alanb Exp $
#
# TEST rep039
-# TEST Test of internal initialization and master changes.
+# TEST Test of interrupted internal initialization changes. The
+# TEST interruption is due to a changed master, or the client crashing,
+# TEST or both.
# TEST
# TEST One master, two clients.
# TEST Generate several log files. Remove old master log files.
-# TEST Delete client files and restart client.
-# TEST While initialization is happening, change masters.
+# TEST Restart client, optionally having "cleaned" client env dir. Either
+# TEST way, this has the effect of forcing an internal init.
+# TEST Interrupt the internal init.
# TEST Vary the number of times we process messages to make sure
-# TEST we change masters at varying stages of the first internal
+# TEST the interruption occurs at varying stages of the first internal
# TEST initialization.
# TEST
-# TEST Run for btree only because of the number of permutations.
+# TEST Run for btree and queue only because of the number of permutations.
# TEST
proc rep039 { method { niter 200 } { tnum "039" } args } {
@@ -60,35 +62,82 @@ proc rep039 { method { niter 200 } { tnum "039" } args } {
set cleanopts { noclean clean }
set archopts { archive noarchive }
set nummsgs 5
+ set announce {puts "Rep$tnum ($method $r $clean $a $crash $args):\
+ Test of internal init. $i message iters."}
foreach r $test_recopts {
- foreach c $cleanopts {
- foreach a $archopts {
- for { set i 1 } { $i < $nummsgs } { incr i } {
- puts "Rep$tnum ($method $r $c $a $args):\
- Test of internal init. $i message iters."
- rep039_sub $method $niter $tnum \
- $r $c $a $i $args
+ if { $r == "-recover" && ! $is_windows_test } {
+ set crashopts { master_change client_crash both }
+ } else {
+ set crashopts { master_change }
+ }
+ foreach crash $crashopts {
+ foreach clean $cleanopts {
+ foreach a $archopts {
+ for { set i 1 } \
+ { $i < $nummsgs } { incr i } {
+ eval $announce
+ rep039_sub $method $niter \
+ $tnum $r $clean $a $crash \
+ $i $args
+ }
}
}
}
}
}
-proc rep039_sub { method niter tnum recargs clean archive pmsgs largs } {
+proc rep039_sub { method niter tnum recargs clean archive crash pmsgs largs } {
global testdir
global util_path
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
+
+ set master_change false
+ set client_crash false
+ if { $crash == "master_change" } {
+ set master_change true
+ } elseif { $crash == "client_crash" } {
+ set client_crash true
+ } elseif { $crash == "both" } {
+ set master_change true
+ set client_crash true
+ } else {
+ error "FAIL:[timestamp] '$crash' is an unrecognized crash type"
+ }
env_cleanup $testdir
replsetup $testdir/MSGQUEUEDIR
- set masterdir $testdir/MASTERDIR
- set clientdir $testdir/CLIENTDIR
- set clientdir2 $testdir/CLIENTDIR2
+ # This test has three replication sites: a master, a client whose
+ # behavior is under test, and another client. We'll call them
+ # "A", "B" and "C". At one point during the test, we may (depending on
+ # the setting of $master_change) switch roles between the master and the
+ # other client.
+ #
+ # The initial site/role assignments are as follows:
+ #
+ # A = master
+ # B = client under test
+ # C = other client
+ #
+ # In the case where we do switch roles, the roles become:
+ #
+ # A = other client
+ # B = client under test (no change here)
+ # C = master
+ #
+ # Although the real names are A, B, and C, we'll use mnemonic names
+ # whenever possible. In particular, this means that we'll have to
+ # re-jigger the mnemonic names after the role switch.
- file mkdir $masterdir
- file mkdir $clientdir
- file mkdir $clientdir2
+ file mkdir [set dirs(A) $testdir/SITE_A]
+ file mkdir [set dirs(B) $testdir/SITE_B]
+ file mkdir [set dirs(C) $testdir/SITE_C]
# Log size is small so we quickly create more than one.
# The documentation says that the log file must be at least
@@ -98,98 +147,127 @@ proc rep039_sub { method niter tnum recargs clean archive pmsgs largs } {
set log_buf [expr $pagesize * 2]
set log_max [expr $log_buf * 4]
- # Open a master.
+ # Set up the three sites: A, B, and C will correspond to EID's
+ # 1, 2, and 3 in the obvious way. As we start out, site A is always the
+ # master.
+ #
repladd 1
- set ma_envcmd "berkdb_env_noerr -create -txn nosync \
- -log_buffer $log_buf -log_max $log_max \
- -home $masterdir -rep_transport \[list 1 replsend\]"
-# set ma_envcmd "berkdb_env_noerr -create -txn nosync \
-# -log_buffer $log_buf -log_max $log_max \
-# -verbose {rep on} -errpfx MASTER \
-# -home $masterdir -rep_transport \[list 1 replsend\]"
- set masterenv [eval $ma_envcmd $recargs -rep_master]
- error_check_good master_env [is_valid_env $masterenv] TRUE
+ set env_A_cmd "berkdb_env_noerr -create -txn nosync $verbargs \
+ -log_buffer $log_buf -log_max $log_max -errpfx SITE_A \
+ -home $dirs(A) -rep_transport \[list 1 replsend\]"
+ set envs(A) [eval $env_A_cmd $recargs -rep_master]
# Open a client
repladd 2
- set cl_envcmd "berkdb_env_noerr -create -txn nosync \
- -log_buffer $log_buf -log_max $log_max \
- -home $clientdir -rep_transport \[list 2 replsend\]"
-# set cl_envcmd "berkdb_env_noerr -create -txn nosync \
-# -log_buffer $log_buf -log_max $log_max \
-# -verbose {rep on} -errpfx CLIENT \
-# -home $clientdir -rep_transport \[list 2 replsend\]"
- set clientenv [eval $cl_envcmd $recargs -rep_client]
- error_check_good client_env [is_valid_env $clientenv] TRUE
+ set env_B_cmd "berkdb_env_noerr -create -txn nosync $verbargs \
+ -log_buffer $log_buf -log_max $log_max -errpfx SITE_B \
+ -home $dirs(B) -rep_transport \[list 2 replsend\]"
+ set envs(B) [eval $env_B_cmd $recargs -rep_client]
# Open 2nd client
repladd 3
- set cl2_envcmd "berkdb_env_noerr -create -txn nosync \
- -log_buffer $log_buf -log_max $log_max \
- -home $clientdir2 -rep_transport \[list 3 replsend\]"
-# set cl2_envcmd "berkdb_env_noerr -create -txn nosync \
-# -log_buffer $log_buf -log_max $log_max \
-# -verbose {rep on} -errpfx CLIENT2 \
-# -home $clientdir2 -rep_transport \[list 3 replsend\]"
- set clientenv2 [eval $cl2_envcmd $recargs -rep_client]
- error_check_good client2_env [is_valid_env $clientenv2] TRUE
+ set env_C_cmd "berkdb_env_noerr -create -txn nosync $verbargs \
+ -log_buffer $log_buf -log_max $log_max -errpfx SITE_C \
+ -home $dirs(C) -rep_transport \[list 3 replsend\]"
+ set envs(C) [eval $env_C_cmd $recargs -rep_client]
+
+ # Turn off throttling for this test.
+ foreach site [array names envs] {
+ $envs($site) rep_limit 0 0
+ }
# Bring the clients online by processing the startup messages.
- set envlist "{$masterenv 1} {$clientenv 2} {$clientenv2 3}"
+ set envlist "{$envs(A) 1} {$envs(B) 2} {$envs(C) 3}"
process_msgs $envlist
+ # Set up the (indirect) mnemonic role names for the first part of the
+ # test.
+ set master A
+ set test_client B
+ set other C
+
+ # Clobber replication's 30-second anti-archive timer, which will have
+ # been started by client sync-up internal init, so that we can do a
+ # log_archive in a moment.
+ #
+ $envs($master) test force noarchive_timeout
+
# Run rep_test in the master (and update client).
puts "\tRep$tnum.a: Running rep_test in replicated env."
- eval rep_test $method $masterenv NULL $niter 0 0 0 0 $largs
+ eval rep_test $method $envs($master) NULL $niter 0 0 0 0 $largs
process_msgs $envlist
puts "\tRep$tnum.b: Close client."
- error_check_good client_close [$clientenv close] 0
+ error_check_good client_close [$envs($test_client) close] 0
- set res [eval exec $util_path/db_archive -l -h $clientdir]
+ set res [eval exec $util_path/db_archive -l -h $dirs($test_client)]
set last_client_log [lindex [lsort $res] end]
set stop 0
while { $stop == 0 } {
# Run rep_test in the master (don't update client).
puts "\tRep$tnum.c: Running rep_test in replicated env."
- eval rep_test $method $masterenv NULL $niter 0 0 0 0 $largs
+ eval rep_test $method $envs($master) NULL $niter 0 0 0 0 $largs
#
# Clear messages for first client. We want that site
# to get far behind.
#
replclear 2
puts "\tRep$tnum.d: Run db_archive on master."
- set res [eval exec $util_path/db_archive -d -h $masterdir]
- set res [eval exec $util_path/db_archive -l -h $masterdir]
+ set res [eval exec $util_path/db_archive -d -h $dirs($master)]
+ set res [eval exec $util_path/db_archive -l -h $dirs($master)]
if { [lsearch -exact $res $last_client_log] == -1 } {
set stop 1
}
}
- set envlist "{$masterenv 1} {$clientenv2 3}"
+ set envlist "{$envs($master) 1} {$envs($other) 3}"
process_msgs $envlist
if { $archive == "archive" } {
- puts "\tRep$tnum.d: Run db_archive on client2."
- set res [eval exec $util_path/db_archive -l -h $clientdir2]
+ puts "\tRep$tnum.d: Run db_archive on other client."
+ set res [eval exec $util_path/db_archive -l -h $dirs($other)]
error_check_bad \
log.1.present [lsearch -exact $res log.0000000001] -1
- set res [eval exec $util_path/db_archive -d -h $clientdir2]
- set res [eval exec $util_path/db_archive -l -h $clientdir2]
+ set res [eval exec $util_path/db_archive -d -h $dirs($other)]
+ set res [eval exec $util_path/db_archive -l -h $dirs($other)]
error_check_good \
log.1.gone [lsearch -exact $res log.0000000001] -1
} else {
- puts "\tRep$tnum.d: Skipping db_archive on client2."
+ puts "\tRep$tnum.d: Skipping db_archive on other client."
}
- puts "\tRep$tnum.e: Reopen client ($clean)."
+ puts "\tRep$tnum.e: Reopen test client ($clean)."
if { $clean == "clean" } {
- env_cleanup $clientdir
+ env_cleanup $dirs($test_client)
}
- set clientenv [eval $cl_envcmd $recargs -rep_client]
- error_check_good client_env [is_valid_env $clientenv] TRUE
- set envlist "{$masterenv 1} {$clientenv 2} {$clientenv2 3}"
+
+ # (The test client is always site B, EID 2.)
+ #
+ set envs(B) [eval $env_B_cmd $recargs -rep_client]
+ error_check_good client_env [is_valid_env $envs(B)] TRUE
+ $envs(B) rep_limit 0 0
+
+ # Hold an open database handle while doing internal init, to make sure
+ # no back lock interactions are happening. But only do so some of the
+ # time.
+ #
+ if {$clean == "noclean" && [berkdb random_int 0 1] == 1} {
+ puts "\tRep$tnum.g: Hold open db handle from client app."
+ set cdb [eval {berkdb_open_noerr -env} $envs($test_client) "test.db"]
+ error_check_good dbopen [is_valid_db $cdb] TRUE
+ set ccur [$cdb cursor]
+ error_check_good curs [is_valid_cursor $ccur $cdb] TRUE
+ set ret [$ccur get -first]
+ set kd [lindex $ret 0]
+ set key [lindex $kd 0]
+ error_check_good cclose [$ccur close] 0
+ } else {
+ puts "\tRep$tnum.g: (No client app handle will be held.)"
+ set cdb "NONE"
+ }
+
+ set envlist "{$envs(A) 1} {$envs(B) 2} {$envs(C) 3}"
proc_msgs_once $envlist
#
@@ -197,7 +275,7 @@ proc rep039_sub { method niter tnum recargs clean archive pmsgs largs } {
# records while an update is going on.
#
set entries 10
- eval rep_test $method $masterenv NULL $entries $niter 0 0 0 $largs
+ eval rep_test $method $envs($master) NULL $entries $niter 0 0 0 $largs
#
# We call proc_msgs_once N times to get us into page recovery:
# 1. Send master messages and client finds master.
@@ -214,11 +292,45 @@ proc rep039_sub { method niter tnum recargs clean archive pmsgs largs } {
for { set i 1 } { $i < $pmsgs } { incr i } {
incr nproced [proc_msgs_once $envlist]
}
- replclear 1
- replclear 3
- puts "\tRep$tnum.g: Downgrade/upgrade master."
- error_check_good downgrade [$masterenv rep_start -client] 0
- error_check_good upgrade [$clientenv2 rep_start -master] 0
+
+ if { [string is true $master_change] } {
+ replclear 1
+ replclear 3
+ puts "\tRep$tnum.g: Downgrade/upgrade master."
+
+ # Downgrade the existing master to a client, switch around the
+ # roles, and then upgrade the newly appointed master.
+ error_check_good downgrade [$envs($master) rep_start -client] 0
+
+ set master C
+ set other A
+
+ error_check_good upgrade [$envs($master) rep_start -master] 0
+ }
+
+ # Simulate a client crash: simply abandon the handle without closing it.
+ # Note that this doesn't work on Windows, because there you can't remove
+ # a file if anyone (including yourself) has it open.
+ #
+ # Note that crashing only makes sense with "-recover".
+ #
+ if { [string is true $client_crash] } {
+ error_check_good assert [string compare $recargs "-recover"] 0
+
+ set abandoned_env $envs($test_client)
+ set abandoned true
+
+ set envs($test_client) [eval $env_B_cmd $recargs -rep_client]
+ $envs($test_client) rep_limit 0 0
+
+ # Again, remember: whatever the current roles, a site and its EID
+ # stay linked always.
+ #
+ set envlist "{$envs(A) 1} {$envs(B) 2} {$envs(C) 3}"
+ } else {
+ set abandoned false
+ }
+
process_msgs $envlist
#
# Now simulate continual updates to the new master. Each
@@ -229,7 +341,7 @@ proc rep039_sub { method niter tnum recargs clean archive pmsgs largs } {
for { set i 0 } { $i < $niter } { incr i } {
set nproced 0
set start [expr $i * $entries]
- eval rep_test $method $clientenv2 NULL $entries $start \
+ eval rep_test $method $envs($master) NULL $entries $start \
$start 0 0 $largs
incr nproced [proc_msgs_once $envlist]
error_check_bad nproced $nproced 0
@@ -238,26 +350,51 @@ proc rep039_sub { method niter tnum recargs clean archive pmsgs largs } {
process_msgs $envlist
puts "\tRep$tnum.h: Verify logs and databases"
- rep_verify $clientdir2 $clientenv2 $masterdir $masterenv 1
+ # Whether or not we've switched roles, it's always site A that may have
+ # had its logs archived away. When the $init_test flag is turned on,
+ # rep_verify allows the site in the second position to have
+ # (more-)archived logs, so we have to abuse the calling signature a bit
+ # here to get this to work. (I.e., even when A is still master and C is
+ # still the other client, we have to pass things in this order so that
+ # the $init_test different-sized-logs trick can work.)
+ #
+ set init_test 1
+ rep_verify $dirs(C) $envs(C) $dirs(A) $envs(A) $init_test
# Process messages again in case we are running with debug_rop.
process_msgs $envlist
- rep_verify $clientdir2 $clientenv2 $clientdir $clientenv 1
+ rep_verify $dirs($master) $envs($master) \
+ $dirs($test_client) $envs($test_client) $init_test
# Add records to the master and update client.
puts "\tRep$tnum.i: Add more records and check again."
set entries 10
- eval rep_test $method $clientenv2 NULL $entries $start \
+ eval rep_test $method $envs($master) NULL $entries $start \
$start 0 0 $largs
process_msgs $envlist 0 NONE err
# Check again that everyone is identical.
- rep_verify $clientdir2 $clientenv2 $masterdir $masterenv 1
+ rep_verify $dirs(C) $envs(C) $dirs(A) $envs(A) $init_test
process_msgs $envlist
- rep_verify $clientdir2 $clientenv2 $clientdir $clientenv 1
+ rep_verify $dirs($master) $envs($master) \
+ $dirs($test_client) $envs($test_client) $init_test
- error_check_good masterenv_close [$masterenv close] 0
- error_check_good clientenv_close [$clientenv close] 0
- error_check_good clientenv2_close [$clientenv2 close] 0
+ if {$cdb != "NONE"} {
+ if {$abandoned} {
+ # The $cdb was opened in an env which was then
+ # abandoned, recovered, marked panic'ed. We don't
+ # really care; we're just trying to clean up resources.
+ #
+ catch {$cdb close}
+ } else {
+ error_check_good clientdb_close [$cdb close] 0
+ }
+ }
+ error_check_good masterenv_close [$envs($master) close] 0
+ error_check_good clientenv_close [$envs($test_client) close] 0
+ error_check_good clientenv2_close [$envs($other) close] 0
+ if { $abandoned } {
+ catch {$abandoned_env close}
+ }
replclose $testdir/MSGQUEUEDIR
}
diff --git a/db/test/rep040.tcl b/db/test/rep040.tcl
index ad1123681..fa9bad44f 100644
--- a/db/test/rep040.tcl
+++ b/db/test/rep040.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2004-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2004,2007 Oracle. All rights reserved.
#
-# $Id: rep040.tcl,v 12.11 2006/08/24 14:46:37 bostic Exp $
+# $Id: rep040.tcl,v 12.15 2007/05/17 18:17:21 bostic Exp $
#
# TEST rep040
# TEST Test of racing rep_start and transactions.
@@ -54,6 +53,12 @@ proc rep040_sub { method niter tnum logset recargs largs } {
source ./include.tcl
global testdir
global util_path
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
env_cleanup $testdir
@@ -78,20 +83,15 @@ proc rep040_sub { method niter tnum logset recargs largs } {
# Open a master.
repladd 1
set ma_envcmd "berkdb_env_noerr -create $m_txnargs $m_logargs \
- -home $masterdir -rep_transport \[list 1 replsend\]"
-# set ma_envcmd "berkdb_env_noerr -create $m_txnargs $m_logargs \
-# -verbose {rep on} -errpfx MASTER \
-# -home $masterdir -rep_transport \[list 1 replsend\]"
+ -errpfx MASTER \
+ -home $masterdir $verbargs -rep_transport \[list 1 replsend\]"
set masterenv [eval $ma_envcmd $recargs -rep_master]
- error_check_good master_env [is_valid_env $masterenv] TRUE
# Open a client
repladd 2
set cl_envcmd "berkdb_env_noerr -create $c_txnargs $c_logargs \
- -home $clientdir -rep_transport \[list 2 replsend\]"
-# set cl_envcmd "berkdb_env_noerr -create $c_txnargs $c_logargs \
-# -verbose {rep on} -errpfx CLIENT \
-# -home $clientdir -rep_transport \[list 2 replsend\]"
+ -errpfx CLIENT \
+ -home $clientdir $verbargs -rep_transport \[list 2 replsend\]"
set clientenv [eval $cl_envcmd $recargs -rep_client]
error_check_good client_env [is_valid_env $clientenv] TRUE
diff --git a/db/test/rep040script.tcl b/db/test/rep040script.tcl
index b743dcc5b..fa868b5a7 100644
--- a/db/test/rep040script.tcl
+++ b/db/test/rep040script.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2003-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2003,2007 Oracle. All rights reserved.
#
-# $Id: rep040script.tcl,v 12.5 2006/08/24 14:46:38 bostic Exp $
+# $Id: rep040script.tcl,v 12.9 2007/05/17 18:17:21 bostic Exp $
#
# Rep040 script - transaction concurrency with rep_start
#
@@ -33,11 +32,13 @@ if { $argc != 1 } {
# Initialize arguments
set masterdir [ lindex $argv 0 ]
-set is_repchild 1
+# Join the queue env. We assume the rep test convention of
+# placing the messages in $testdir/MSGQUEUEDIR.
+set queueenv [eval berkdb_env -home $testdir/MSGQUEUEDIR]
+error_check_good script_qenv_open [is_valid_env $queueenv] TRUE
# We need to set up our own machids.
# Add 1 for master env id, and 2 for the clientenv id.
-#
repladd 1
repladd 2
diff --git a/db/test/rep041.tcl b/db/test/rep041.tcl
index 0941a7f66..6e96520f6 100644
--- a/db/test/rep041.tcl
+++ b/db/test/rep041.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2004-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2004,2007 Oracle. All rights reserved.
#
-# $Id: rep041.tcl,v 12.11 2006/08/24 14:46:38 bostic Exp $
+# $Id: rep041.tcl,v 12.18 2007/05/17 18:17:21 bostic Exp $
#
# TEST rep041
# TEST Turn replication on and off at run-time.
@@ -68,6 +67,12 @@ proc rep041 { method { niter 500 } { tnum "041" } args } {
proc rep041_sub { method niter tnum envargs logset recargs largs } {
global testdir
global util_path
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
env_cleanup $testdir
@@ -84,11 +89,7 @@ proc rep041_sub { method niter tnum envargs logset recargs largs } {
# four times the size of the in-memory log buffer.
set pagesize 4096
append largs " -pagesize $pagesize "
- set log_buf [expr $pagesize * 2]
- set log_max [expr $log_buf * 4]
-
- set m_logargs " -log_buffer $log_buf"
- set c_logargs " -log_buffer $log_buf"
+ set log_max [expr $pagesize * 8]
set m_logtype [lindex $logset 0]
set c_logtype [lindex $logset 1]
@@ -102,15 +103,11 @@ proc rep041_sub { method niter tnum envargs logset recargs largs } {
# Open a master.
puts "\tRep$tnum.a: Open master with replication OFF."
repladd 1
- set ma_envcmd "berkdb_env_noerr -create $m_txnargs \
- $m_logargs -log_max $log_max $envargs \
+ set ma_envcmd "berkdb_env_noerr -create $m_txnargs $verbargs \
+ $m_logargs -log_max $log_max $envargs -errpfx MASTER \
-home $masterdir -rep"
-# set ma_envcmd "berkdb_env_noerr -create $m_txnargs \
-# $m_logargs -log_max $log_max $envargs \
-# -verbose {rep on} -errpfx MASTER \
-# -home $masterdir -rep"
set masterenv [eval $ma_envcmd $recargs]
- error_check_good master_env [is_valid_env $masterenv] TRUE
+ $masterenv rep_limit 0 0
# Run rep_test in the master to advance log files.
puts "\tRep$tnum.b: Running rep_test to create some log files."
@@ -124,7 +121,7 @@ proc rep041_sub { method niter tnum envargs logset recargs largs } {
transport_noop [$masterenv rep_transport {1 replnoop}] 0
error_check_good rep_on [$masterenv rep_start -master] 0
- # If master is on-dish, archive.
+ # If master is on-disk, archive.
if { $m_logtype != "in-memory" } {
puts "\tRep$tnum.c: Run log_archive - some logs should be removed."
set res [eval exec $util_path/db_archive -l -h $masterdir]
@@ -142,17 +139,12 @@ proc rep041_sub { method niter tnum envargs logset recargs largs } {
# Open a client
puts "\tRep$tnum.e: Open client."
repladd 2
- set cl_envcmd "berkdb_env_noerr -create $c_txnargs \
- $c_logargs -log_max $log_max $envargs \
+ set cl_envcmd "berkdb_env_noerr -create $c_txnargs $verbargs \
+ $c_logargs -log_max $log_max $envargs -errpfx CLIENT \
-home $clientdir \
-rep_transport \[list 2 replsend\]"
-# set cl_envcmd "berkdb_env_noerr -create $c_txnargs \
-# $c_logargs -log_max $log_max $envargs \
-# -verbose {rep on} -errpfx CLIENT \
-# -home $clientdir \
-# -rep_transport \[list 2 replsend\]"
set clientenv [eval $cl_envcmd $recargs -rep_client]
- error_check_good client_env [is_valid_env $clientenv] TRUE
+ $clientenv rep_limit 0 0
# Set up envlist for processing messages later.
set envlist "{$masterenv 1} {$clientenv 2}"
diff --git a/db/test/rep042.tcl b/db/test/rep042.tcl
index 2fa95fe78..1e7210aca 100644
--- a/db/test/rep042.tcl
+++ b/db/test/rep042.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2003-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2003,2007 Oracle. All rights reserved.
#
-# $Id: rep042.tcl,v 12.13 2006/09/08 20:32:18 bostic Exp $
+# $Id: rep042.tcl,v 12.17 2007/05/17 18:17:21 bostic Exp $
#
# TEST rep042
# TEST Concurrency with updates.
@@ -54,6 +53,12 @@ proc rep042 { method { niter 10 } { tnum "042" } args } {
proc rep042_sub { method niter tnum logset recargs largs } {
source ./include.tcl
global perm_response_list
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
env_cleanup $testdir
set omethod [convert_method $method]
@@ -78,35 +83,24 @@ proc rep042_sub { method niter tnum logset recargs largs } {
# Open a master.
repladd 1
set ma_cmd "berkdb_env_noerr -create \
- -log_max 1000000 $m_txnargs $m_logargs \
- -home $masterdir -rep_master \
+ -log_max 1000000 $m_txnargs $m_logargs $verbargs \
+ -home $masterdir -rep_master -errpfx MASTER \
-rep_transport \[list 1 replsend\]"
-# set ma_cmd "berkdb_env_noerr -create \
-# -log_max 1000000 $m_txnargs $m_logargs \
-# -verbose {rep on} -errfile /dev/stderr \
-# -home $masterdir -rep_master -rep_transport \
-# \[list 1 replsend\]"
set masterenv [eval $ma_cmd $recargs]
- error_check_good master_env [is_valid_env $masterenv] TRUE
# Open a client
repladd 2
set cl_cmd "berkdb_env_noerr -create -home $clientdir \
- $c_txnargs $c_logargs -rep_client \
+ $c_txnargs $c_logargs $verbargs -errpfx CLIENT -rep_client \
-rep_transport \[list 2 replsend\]"
-# set cl_cmd "berkdb_env_noerr -create -home $clientdir \
-# -verbose {rep on} -errfile /dev/stderr \
-# $c_txnargs $c_logargs -rep_client \
-# -rep_transport \[list 2 replsend\]"
set clientenv [eval $cl_cmd $recargs]
- error_check_good client_env [is_valid_env $clientenv] TRUE
# Bring the client online.
process_msgs "{$masterenv 1} {$clientenv 2}"
puts "\tRep$tnum.a: Create and populate database."
set dbname rep042.db
- set db [eval "berkdb_open -create $omethod -auto_commit \
+ set db [eval "berkdb_open_noerr -create $omethod -auto_commit \
-env $masterenv $largs $dbname"]
for { set i 1 } { $i < $niter } { incr i } {
set t [$masterenv txn]
diff --git a/db/test/rep042script.tcl b/db/test/rep042script.tcl
index b90fbe8be..7bc545feb 100644
--- a/db/test/rep042script.tcl
+++ b/db/test/rep042script.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2003-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2003,2007 Oracle. All rights reserved.
#
-# $Id: rep042script.tcl,v 12.6 2006/08/24 14:46:38 bostic Exp $
+# $Id: rep042script.tcl,v 12.9 2007/05/17 15:15:55 bostic Exp $
#
# Rep042 script - concurrency with updates.
@@ -30,9 +29,11 @@ set sleepval [ lindex $argv 1 ]
set dbname [lindex $argv 2]
set op [lindex $argv 3]
-set is_repchild 1
+# Join the queue env. We assume the rep test convention of
+# placing the messages in $testdir/MSGQUEUEDIR.
+set queueenv [eval berkdb_env -home $testdir/MSGQUEUEDIR]
+error_check_good script_qenv_open [is_valid_env $queueenv] TRUE
-#
# We need to set up our own machids.
# Add 1 for master env id, and 2 for the clientenv id.
#
diff --git a/db/test/rep043.tcl b/db/test/rep043.tcl
index 5a4c490b1..a2d3bd88b 100644
--- a/db/test/rep043.tcl
+++ b/db/test/rep043.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2005-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2005,2007 Oracle. All rights reserved.
#
-# $Id: rep043.tcl,v 1.10 2006/08/24 14:46:38 bostic Exp $
+# $Id: rep043.tcl,v 1.15 2007/05/17 18:17:21 bostic Exp $
#
# TEST rep043
# TEST
@@ -60,8 +59,14 @@ proc rep043 { method { rotations 25 } { tnum "043" } args } {
}
proc rep043_sub { method rotations tnum logset recargs largs } {
- global testdir
source ./include.tcl
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
+
env_cleanup $testdir
set orig_tdir $testdir
@@ -98,43 +103,25 @@ proc rep043_sub { method rotations tnum logset recargs largs } {
# Open a master.
repladd 1
set ma_envcmd "berkdb_env_noerr -create $m_txnargs \
- $m_logargs -errpfx ENV0 -errfile /dev/stderr \
+ $m_logargs -errpfx ENV0 -errfile /dev/stderr $verbargs \
-cachesize {0 4194304 3} -lock_detect default \
-home $masterdir -rep_transport \[list 1 replsend\]"
-# set ma_envcmd "berkdb_env_noerr -create $m_txnargs \
-# $m_logargs -lock_detect default \
-# -cachesize {0 4194304 3} \
-# -errpfx ENV0 -verbose {rep on} -errfile /dev/stderr \
-# -home $masterdir -rep_transport \[list 1 replsend\]"
set env0 [eval $ma_envcmd $recargs -rep_master]
- error_check_good master_env [is_valid_env $env0] TRUE
# Open two clients
repladd 2
set cl_envcmd "berkdb_env_noerr -create $c_txnargs \
- $c_logargs -errpfx ENV1 -errfile /dev/stderr \
+ $c_logargs -errpfx ENV1 -errfile /dev/stderr $verbargs \
-cachesize {0 2097152 2} -lock_detect default \
-home $clientdir -rep_transport \[list 2 replsend\]"
-# set cl_envcmd "berkdb_env_noerr -create $c_txnargs \
-# $c_logargs -lock_detect default \
-# -cachesize {0 2097152 2} \
-# -errpfx ENV1 -verbose {rep on} -errfile /dev/stderr \
-# -home $clientdir -rep_transport \[list 2 replsend\]"
set env1 [eval $cl_envcmd $recargs -rep_client]
- error_check_good client_env [is_valid_env $env1] TRUE
repladd 3
set cl2_envcmd "berkdb_env_noerr -create $c2_txnargs \
- $c2_logargs -errpfx ENV2 -errfile /dev/stderr \
+ $c2_logargs -errpfx ENV2 -errfile /dev/stderr $verbargs \
-cachesize {0 1048576 1} -lock_detect default \
-home $clientdir2 -rep_transport \[list 3 replsend\]"
-# set cl2_envcmd "berkdb_env_noerr -create $c2_txnargs \
-# $c2_logargs -lock_detect default \
-# -cachesize {0 1048576 1} \
-# -errpfx ENV2 -verbose {rep on} -errfile /dev/stderr \
-# -home $clientdir2 -rep_transport \[list 3 replsend\]"
set env2 [eval $cl2_envcmd $recargs -rep_client]
- error_check_good client_env2 [is_valid_env $env2] TRUE
# Bring the clients online by processing the startup messages.
set envlist "{$env0 1} {$env1 2} {$env2 3}"
@@ -227,6 +214,18 @@ proc rep043_sub { method rotations tnum logset recargs largs } {
error_check_good env1_close [$env1 close] 0
error_check_good env2_close [$env2 close] 0
+ # Make sure the child processes are done.
+ watch_procs $pids 1
+
+ # Check log files for failures.
+ for { set n 0 } { $n < 3 } { incr n } {
+ set file rep043script.log.$n
+ set errstrings [eval findfail $testdir/$file]
+ foreach str $errstrings {
+ puts "FAIL: error message in file $file: $str"
+ }
+ }
+
replclose $testdir/MSGQUEUEDIR
set testdir $orig_tdir
return
diff --git a/db/test/rep043script.tcl b/db/test/rep043script.tcl
index c81110aef..ce2709195 100644
--- a/db/test/rep043script.tcl
+++ b/db/test/rep043script.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2005-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2005,2007 Oracle. All rights reserved.
#
-# $Id: rep043script.tcl,v 1.8 2006/08/24 14:46:38 bostic Exp $
+# $Id: rep043script.tcl,v 1.15 2007/07/09 19:34:35 carol Exp $
#
# Rep043 script - constant writes to an env which may be
# either a master or a client, or changing between the
@@ -26,14 +25,18 @@ set dir [ lindex $argv 0 ]
set writerid [ lindex $argv 1 ]
set nentries 50
-set is_repchild 1
+# Join the queue env. We assume the rep test convention of
+# placing the messages in $testdir/MSGQUEUEDIR.
+set queueenv [eval berkdb_env -home $testdir/MSGQUEUEDIR]
+error_check_good script_qenv_open [is_valid_env $queueenv] TRUE
# We need to set up our own machids.
set envid [expr $writerid + 1]
repladd $envid
set name "WRITER.$writerid"
-# Pause to make sure the database exists before we try to join.
+# Pause a bit to give the master a chance to create the database
+# before we try to join.
tclsleep 3
# Join the env.
@@ -47,10 +50,15 @@ set env_cmd "berkdb_env_noerr -home $dir -lock_detect default \
set dbenv [eval $env_cmd]
error_check_good script_env_open [is_valid_env $dbenv] TRUE
-# Open database.
+# Open database. It's still possible under heavy load that the
+# master hasn't created the database, so pause even longer if it's
+# not there.
set testfile "rep043.db"
-set db [eval {berkdb_open_noerr} -errpfx $name -errfile /dev/stderr \
- -env $dbenv -auto_commit $testfile]
+while {[catch {berkdb_open_noerr -errpfx $name -errfile /dev/stderr\
+ -env $dbenv -auto_commit $testfile} db]} {
+ puts "Could not open handle $db, sleeping 1 second."
+ tclsleep 1
+}
error_check_good dbopen [is_valid_db $db] TRUE
# Communicate with parent in marker file.
@@ -94,8 +102,11 @@ puts "res is $res, abort"
puts "Close - dead handle."
error_check_good db_close [$db close] 0
puts "Getting new handle"
- set db [eval {berkdb_open_noerr} \
- -env $dbenv -auto_commit $testfile]
+ while {[catch {berkdb_open_noerr -env $dbenv\
+ -auto_commit $testfile} db]} {
+ puts "Could not open handle: $db"
+ tclsleep 1
+ }
error_check_good db_open [is_valid_db $db] TRUE
}
diff --git a/db/test/rep044.tcl b/db/test/rep044.tcl
index 588f3893d..127818f2c 100644
--- a/db/test/rep044.tcl
+++ b/db/test/rep044.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2005-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2005,2007 Oracle. All rights reserved.
#
-# $Id: rep044.tcl,v 12.10 2006/08/24 14:46:38 bostic Exp $
+# $Id: rep044.tcl,v 12.14 2007/05/17 18:17:21 bostic Exp $
#
# TEST rep044
# TEST
@@ -49,10 +48,16 @@ proc rep044 { method { tnum "044" } args } {
}
proc rep044_sub { method tnum logset largs } {
- global testdir
source ./include.tcl
set orig_tdir $testdir
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
+
set masterdir $testdir/ENV0
set clientdir $testdir/ENV1
@@ -121,38 +126,25 @@ proc rep044_sub { method tnum logset largs } {
repladd 1
set envcmd(M0) "berkdb_env_noerr -create $m_txnargs \
$m_logargs -lock_detect default \
+ -errpfx ENV.M0 $verbargs \
-home $masterdir -rep_transport \[list 1 replsend\]"
-# set envcmd(M0) "berkdb_env_noerr -create $m_txnargs \
-# $m_logargs -lock_detect default \
-# -errpfx ENV.M0 -verbose {rep on} -errfile /dev/stderr \
-# -home $masterdir -rep_transport \[list 1 replsend\]"
set menv0 [eval $envcmd(M0) -rep_master]
- error_check_good master_env0 [is_valid_env $menv0] TRUE
# Open second handle on master env.
set envcmd(M1) "berkdb_env_noerr $m_txnargs \
$m_logargs -lock_detect default \
+ -errpfx ENV.M1 $verbargs \
-home $masterdir -rep_transport \[list 1 replsend\]"
-# set envcmd(M1) "berkdb_env_noerr -create $m_txnargs \
-# $m_logargs -lock_detect default \
-# -errpfx ENV.M1 -verbose {rep on} -errfile /dev/stderr \
-# -home $masterdir -rep_transport \[list 1 replsend\]"
set menv1 [eval $envcmd(M1)]
- error_check_good master_env [is_valid_env $menv1] TRUE
error_check_good rep_start [$menv1 rep_start -master] 0
# Open a client
repladd 2
set envcmd(C) "berkdb_env_noerr -create $c_txnargs \
- $c_logargs -errpfx ENV.C \
- -errfile /dev/stderr -lock_detect default \
+ $c_logargs -errpfx ENV.C $verbargs \
+ -lock_detect default \
-home $clientdir -rep_transport \[list 2 replsend\]"
-# set envcmd(C) "berkdb_env_noerr -create $c_txnargs \
-# $c_logargs -lock_detect default \
-# -errpfx ENV.C -verbose {rep on} -errfile /dev/stderr \
-# -home $clientdir -rep_transport \[list 2 replsend\]"
set cenv [eval $envcmd(C) -rep_client]
- error_check_good client_env [is_valid_env $cenv] TRUE
# Bring the client online by processing the startup messages.
set envlist "{$menv0 1} {$cenv 2}"
diff --git a/db/test/rep045.tcl b/db/test/rep045.tcl
index ccc305632..e4147391e 100644
--- a/db/test/rep045.tcl
+++ b/db/test/rep045.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2005-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2005,2007 Oracle. All rights reserved.
#
-# $Id: rep045.tcl,v 12.12 2006/08/24 14:46:38 bostic Exp $
+# $Id: rep045.tcl,v 12.17 2007/05/17 18:17:21 bostic Exp $
#
# TEST rep045
# TEST
@@ -51,9 +50,14 @@ proc rep045 { method { tnum "045" } args } {
}
proc rep045_sub { method tnum logset largs } {
- global testdir
source ./include.tcl
set orig_tdir $testdir
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
set masterdir $testdir/MASTERDIR
set clientdir0 $testdir/CLIENTDIR0
@@ -83,46 +87,37 @@ proc rep045_sub { method tnum logset largs } {
# Open a master.
repladd 1
set envcmd(M0) "berkdb_env_noerr -create $m_txnargs \
- $m_logargs -errpfx ENV.M0 \
+ $m_logargs -errpfx ENV.M0 $verbargs \
-errfile /dev/stderr -lock_detect default \
-home $masterdir -rep_transport \[list 1 replsend\]"
-# set envcmd(M0) "berkdb_env_noerr -create $m_txnargs \
-# $m_logargs -lock_detect default \
-# -errpfx ENV.M0 -verbose {rep on} -errfile /dev/stderr \
-# -home $masterdir -rep_transport \[list 1 replsend\]"
set menv [eval $envcmd(M0) -rep_master]
- error_check_good master_env0 [is_valid_env $menv] TRUE
# Open a client
repladd 2
set envcmd(C0) "berkdb_env_noerr -create $c_txnargs \
- $c_logargs -errpfx ENV.C0 \
+ $c_logargs -errpfx ENV.C0 $verbargs \
-errfile /dev/stderr -lock_detect default \
-home $clientdir0 -rep_transport \[list 2 replsend\]"
-# set envcmd(C0) "berkdb_env_noerr -create $c_txnargs \
-# $c_logargs -lock_detect default \
-# -errpfx ENV.C0 -verbose {rep on} -errfile /dev/stderr \
-# -home $clientdir0 -rep_transport \[list 2 replsend\]"
set cenv0 [eval $envcmd(C0) -rep_client]
- error_check_good client_env [is_valid_env $cenv0] TRUE
# Open second client.
repladd 3
set envcmd(C1) "berkdb_env_noerr -create $c2_txnargs \
- $c2_logargs -errpfx ENV.C1 \
+ $c2_logargs -errpfx ENV.C1 $verbargs \
-errfile /dev/stderr -lock_detect default \
-home $clientdir1 -rep_transport \[list 3 replsend\]"
-# set envcmd(C1) "berkdb_env_noerr -create $c2_txnargs \
-# $c2_logargs -lock_detect default \
-# -errpfx ENV.C -verbose {rep on} -errfile /dev/stderr \
-# -home $clientdir1 -rep_transport \[list 3 replsend\]"
set cenv1 [eval $envcmd(C1) -rep_client]
- error_check_good client_env [is_valid_env $cenv1] TRUE
# Bring the clients online by processing the startup messages.
set envlist "{$menv 1} {$cenv0 2} {$cenv1 3}"
process_msgs $envlist
+ # Clobber replication's 30-second anti-archive timer, which will have
+ # been started by client sync-up internal init, so that we can do a
+ # db_remove in a moment.
+ #
+ $menv test force noarchive_timeout
+
puts "\tRep$tnum.a: Initialize version database."
# Set up variables so we cycle through version numbers 1
# through maxversion several times.
diff --git a/db/test/rep045script.tcl b/db/test/rep045script.tcl
index 78b592108..9968e87fc 100644
--- a/db/test/rep045script.tcl
+++ b/db/test/rep045script.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2005-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2005,2007 Oracle. All rights reserved.
#
-# $Id: rep045script.tcl,v 12.7 2006/09/15 13:16:25 carol Exp $
+# $Id: rep045script.tcl,v 12.10 2007/05/17 15:15:55 bostic Exp $
#
# Rep045 script - replication with version dbs.
#
@@ -29,7 +28,10 @@ set clientdir [ lindex $argv 0 ]
set vfile [ lindex $argv 1 ]
set niter 50
-set is_repchild 1
+# Join the queue env. We assume the rep test convention of
+# placing the messages in $testdir/MSGQUEUEDIR.
+set queueenv [eval berkdb_env -home $testdir/MSGQUEUEDIR]
+error_check_good script_qenv_open [is_valid_env $queueenv] TRUE
# We need to set up our own machids.
repladd 3
diff --git a/db/test/rep046.tcl b/db/test/rep046.tcl
index fc02f8dc4..7f4e19e3d 100644
--- a/db/test/rep046.tcl
+++ b/db/test/rep046.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2001-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2001,2007 Oracle. All rights reserved.
#
-# $Id: rep046.tcl,v 12.16 2006/09/07 14:48:25 carol Exp $
+# $Id: rep046.tcl,v 12.21 2007/06/19 03:33:16 moshen Exp $
#
# TEST rep046
# TEST Replication and basic bulk transfer.
@@ -26,23 +25,42 @@ proc rep046 { method { nentries 200 } { tnum "046" } args } {
}
set args [convert_args $method $args]
+ set logsets [create_logsets 3]
# Run the body of the test with and without recovery.
set throttle { "throttle" "" }
foreach r $test_recopts {
- foreach t $throttle {
- puts "Rep$tnum ($method $r $t):\
- Replication and bulk transfer."
- rep046_sub $method $nentries $tnum $r $t $args
+ foreach l $logsets {
+ set logindex [lsearch -exact $l "in-memory"]
+ if { $r == "-recover" && $logindex != -1 } {
+ puts "Skipping test with -recover for \
+ in-memory logs."
+ continue
+ }
+ foreach t $throttle {
+ puts "Rep$tnum ($method $r $t):\
+ Replication and bulk transfer."
+ puts "Rep$tnum: Master logs are [lindex $l 0]"
+ puts "Rep$tnum: Client 0 logs are [lindex $l 1]"
+ puts "Rep$tnum: Client 1 logs are [lindex $l 2]"
+ rep046_sub $method $nentries $tnum $l $r \
+ $t $args
+ }
}
}
}
-proc rep046_sub { method niter tnum recargs throttle largs } {
+proc rep046_sub { method niter tnum logset recargs throttle largs } {
global overflowword1
global overflowword2
global testdir
global util_path
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
set orig_tdir $testdir
env_cleanup $testdir
@@ -54,49 +72,51 @@ proc rep046_sub { method niter tnum recargs throttle largs } {
file mkdir $masterdir
file mkdir $clientdir
+ set m_logtype [lindex $logset 0]
+ set c_logtype [lindex $logset 1]
+ set c2_logtype [lindex $logset 2]
+
+ # In-memory logs require a large log buffer, and can not
+ # be used with -txn nosync. Adjust the args for master
+ # and client.
+ # This test has a long transaction, allocate a larger log
+ # buffer for in-memory test.
+ set m_logargs [adjust_logargs $m_logtype [expr 20 * 1024 * 1024]]
+ set c_logargs [adjust_logargs $c_logtype [expr 20 * 1024 * 1024]]
+ set c2_logargs [adjust_logargs $c2_logtype [expr 20 * 1024 * 1024]]
+ set m_txnargs [adjust_txnargs $m_logtype]
+ set c_txnargs [adjust_txnargs $c_logtype]
+ set c2_txnargs [adjust_txnargs $c2_logtype]
+
+
set bigniter [expr 10000 - [expr 2 * $niter]]
set lkmax [expr $bigniter * 2]
# Open a master.
repladd 1
- set ma_envcmd "berkdb_env -create -txn nosync \
- -lock_max_locks 10000 -lock_max_objects 10000 \
- -home $masterdir -rep_master -rep_transport \[list 1 replsend\]"
-# set ma_envcmd "berkdb_env -create -txn nosync \
-# -lock_max_locks 10000 -lock_max_objects 10000 \
-# -errpfx MASTER -verbose {rep on} -errfile /dev/stderr \
-# -home $masterdir -rep_master -rep_transport \[list 1 replsend\]"
+ set ma_envcmd "berkdb_env_noerr -create $m_txnargs $m_logargs \
+ $verbargs -lock_max_locks 10000 -lock_max_objects 10000 \
+ -errpfx MASTER -home $masterdir -rep_master -rep_transport \
+ \[list 1 replsend\]"
set masterenv [eval $ma_envcmd $recargs]
error_check_good master_env [is_valid_env $masterenv] TRUE
repladd 2
- set cl_envcmd "berkdb_env -create -txn nosync \
- -home $clientdir \
+ set cl_envcmd "berkdb_env_noerr -create $c_txnargs $c_logargs \
+ $verbargs -home $clientdir -errpfx CLIENT \
-lock_max_locks 10000 -lock_max_objects 10000 \
-rep_client -rep_transport \[list 2 replsend\]"
-# set cl_envcmd "berkdb_env -create -txn nosync \
-# -home $clientdir \
-# -lock_max_locks 10000 -lock_max_objects 10000 \
-# -errpfx CLIENT -verbose {rep on} -errfile /dev/stderr \
-# -rep_client -rep_transport \[list 2 replsend\]"
set clientenv [eval $cl_envcmd $recargs]
- error_check_good client_env [is_valid_env $clientenv] TRUE
if { $throttle == "throttle" } {
set clientdir2 $testdir/CLIENTDIR2
file mkdir $clientdir2
repladd 3
- set cl2_envcmd "berkdb_env -create -txn nosync \
- -home $clientdir2 \
+ set cl2_envcmd "berkdb_env_noerr -create $c2_txnargs $verbargs \
+ $c2_logargs -home $clientdir2 -errpfx CLIENT2 \
-lock_max_locks 10000 -lock_max_objects 10000 \
-rep_client -rep_transport \[list 3 replsend\]"
-# set cl2_envcmd "berkdb_env -create -txn nosync \
-# -home $clientdir2 \
-# -lock_max_locks 10000 -lock_max_objects 10000 \
-# -errpfx CLIENT2 -verbose {rep on} -errfile /dev/stderr \
-# -rep_client -rep_transport \[list 3 replsend\]"
set cl2env [eval $cl2_envcmd $recargs]
- error_check_good client2_env [is_valid_env $cl2env] TRUE
set envlist "{$masterenv 1} {$clientenv 2} {$cl2env 3}"
#
# Turn throttling on in master
diff --git a/db/test/rep047.tcl b/db/test/rep047.tcl
index 247cd754c..370d74f43 100644
--- a/db/test/rep047.tcl
+++ b/db/test/rep047.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2001-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2001,2007 Oracle. All rights reserved.
#
-# $Id: rep047.tcl,v 12.11 2006/08/24 14:46:38 bostic Exp $
+# $Id: rep047.tcl,v 12.16 2007/05/17 18:17:21 bostic Exp $
#
# TEST rep047
# TEST Replication and log gap bulk transfers.
@@ -54,6 +53,12 @@ proc rep047_sub { method niter tnum logset recargs largs } {
global testdir
global util_path
global overflowword1 overflowword2
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
set overflowword1 "0"
set overflowword2 "0"
@@ -85,28 +90,24 @@ proc rep047_sub { method niter tnum logset recargs largs } {
# Open a master.
repladd 1
set ma_envcmd "berkdb_env -create $m_txnargs $m_logargs \
- -home $masterdir -rep_master -rep_transport \[list 1 replsend\]"
-# set ma_envcmd "berkdb_env -create $m_txnargs $m_logargs \
-# -errpfx MASTER -verbose {rep on} \
-# -home $masterdir -rep_master -rep_transport \[list 1 replsend\]"
+ $verbargs -errpfx MASTER -home $masterdir \
+ -rep_master -rep_transport \[list 1 replsend\]"
set masterenv [eval $ma_envcmd $recargs]
error_check_good master_env [is_valid_env $masterenv] TRUE
+ # Open two clients.
repladd 2
set cl_envcmd "berkdb_env -create $c_txnargs $c_logargs \
- -home $clientdir -rep_client -rep_transport \[list 2 replsend\]"
-# set cl_envcmd "berkdb_env -create $c_txnargs $c_logargs \
-# -home $clientdir -errpfx CLIENT -verbose {rep on} \
-# -rep_client -rep_transport \[list 2 replsend\]"
+ $verbargs -errpfx CLIENT -home $clientdir \
+ -rep_client -rep_transport \[list 2 replsend\]"
set clientenv [eval $cl_envcmd $recargs]
error_check_good client_env [is_valid_env $clientenv] TRUE
repladd 3
set cl2_envcmd "berkdb_env -create $c2_txnargs $c2_logargs \
- -home $clientdir2 -rep_client -rep_transport \[list 3 replsend\]"
-# set cl2_envcmd "berkdb_env -create $c2_txnargs $c2_logargs \
-# -home $clientdir2 -errpfx CLIENT2 -verbose {rep on} \
-# -rep_client -rep_transport \[list 3 replsend\]"
+ $verbargs -errpfx CLIENT2 -home $clientdir2 \
+ -rep_client -rep_transport \[list 3 replsend\]"
+
# Bring the client online by processing the startup messages.
set envlist "{$masterenv 1} {$clientenv 2}"
process_msgs $envlist
@@ -116,7 +117,7 @@ proc rep047_sub { method niter tnum logset recargs largs } {
puts "\tRep$tnum.a: Create and open master database"
set testfile "test.db"
set omethod [convert_method $method]
- set masterdb [eval {berkdb_open_noerr -env $masterenv -auto_commit \
+ set masterdb [eval {berkdb_open -env $masterenv -auto_commit \
-create -mode 0644} $largs $omethod $testfile]
error_check_good dbopen [is_valid_db $masterdb] TRUE
@@ -130,6 +131,14 @@ proc rep047_sub { method niter tnum logset recargs largs } {
process_msgs $envlist
rep_verify $masterdir $masterenv $clientdir $clientenv
+ # Clean up after rep_verify: remove the temporary "prlog" file. Now
+ # that a newly joining client uses internal init, when the master scans
+ # its directory for database files it complains about prlog not looking
+ # like a proper db. This is harmless, but it does put a distracting
+ # error message into the test output.
+ #
+ file delete $masterdir/prlog
+
puts "\tRep$tnum.c: Bring new client online"
replclear 3
set bulkrec1 [stat_field $masterenv rep_stat "Bulk records stored"]
@@ -171,6 +180,13 @@ proc rep047_sub { method niter tnum logset recargs largs } {
set start $skip
rep_test_bulk $method $masterenv $masterdb $niter $start $skip 0
set envlist "{$masterenv 1} {$clientenv 2} {$clientenv2 3}"
+
+ # Since we're relying on the client to detect a gap and request missing
+ # records, reset gap parameters to their defaults. Otherwise,
+ # "wait_recs" is still set at its maximum "high" value, due to this
+ # client having been through an internal init.
+ #
+ $clientenv2 rep_request 4 128
process_msgs $envlist
#
# We know we added 2*$niter items to the database so there should be
diff --git a/db/test/rep048.tcl b/db/test/rep048.tcl
index 48bbaf961..8e5096b8d 100644
--- a/db/test/rep048.tcl
+++ b/db/test/rep048.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2001-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2001,2007 Oracle. All rights reserved.
#
-# $Id: rep048.tcl,v 12.8 2006/08/24 14:46:38 bostic Exp $
+# $Id: rep048.tcl,v 12.13 2007/06/19 03:33:16 moshen Exp $
#
# TEST rep048
# TEST Replication and log gap bulk transfers.
@@ -20,19 +19,36 @@ proc rep048 { method { nentries 3000 } { tnum "048" } args } {
}
set args [convert_args $method $args]
+ set logsets [create_logsets 2]
# Run the body of the test with and without recovery.
foreach r $test_recopts {
- puts "Rep$tnum ($method $r):\
- Replication and toggling bulk transfer."
- rep048_sub $method $nentries $tnum $r $args
+ foreach l $logsets {
+ set logindex [lsearch -exact $l "in-memory"]
+ if { $r == "-recover" && $logindex != -1 } {
+ puts "Skipping test with -recover for \
+ in-memory logs."
+ continue
+ }
+ puts "Rep$tnum ($method $r):\
+ Replication and toggling bulk transfer."
+ puts "Rep$tnum: Master logs are [lindex $l 0]"
+ puts "Rep$tnum: Client logs are [lindex $l 1]"
+ rep048_sub $method $nentries $tnum $l $r $args
+ }
}
}
-proc rep048_sub { method niter tnum recargs largs } {
+proc rep048_sub { method niter tnum logset recargs largs } {
source ./include.tcl
global overflowword1
global overflowword2
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
set orig_tdir $testdir
env_cleanup $testdir
@@ -46,22 +62,30 @@ proc rep048_sub { method niter tnum recargs largs } {
file mkdir $clientdir
file mkdir $masterdir
+ set m_logtype [lindex $logset 0]
+ set c_logtype [lindex $logset 1]
+
+ # In-memory logs require a large log buffer, and can not
+ # be used with -txn nosync. Adjust the args for master
+ # and client.
+ set m_logargs [adjust_logargs $m_logtype]
+ set c_logargs [adjust_logargs $c_logtype]
+ set m_txnargs [adjust_txnargs $m_logtype]
+ set c_txnargs [adjust_txnargs $c_logtype]
+
# Open a master.
repladd 1
- set ma_envcmd "berkdb_env -create -txn nosync \
- -home $masterdir -rep_master -rep_transport \[list 1 replsend\]"
-# set ma_envcmd "berkdb_env -create -txn nosync \
-# -errpfx MASTER -verbose {rep on} \
-# -home $masterdir -rep_master -rep_transport \[list 1 replsend\]"
+ set ma_envcmd "berkdb_env_noerr -create $m_txnargs $m_logargs \
+ -errpfx MASTER $verbargs -home $masterdir \
+ -rep_master -rep_transport \[list 1 replsend\]"
set masterenv [eval $ma_envcmd $recargs]
error_check_good master_env [is_valid_env $masterenv] TRUE
+ # Open a client.
repladd 2
- set cl_envcmd "berkdb_env -create -txn nosync -home $clientdir \
+ set cl_envcmd "berkdb_env_noerr -create $c_txnargs $c_logargs \
+ -errpfx CLIENT $verbargs -home $clientdir \
-rep_client -rep_transport \[list 2 replsend\]"
-# set cl_envcmd "berkdb_env -create -txn nosync -home $clientdir \
-# -errpfx CLIENT -verbose {rep on} \
-# -rep_client -rep_transport \[list 2 replsend\]"
set clientenv [eval $cl_envcmd $recargs]
error_check_good client_env [is_valid_env $clientenv] TRUE
diff --git a/db/test/rep048script.tcl b/db/test/rep048script.tcl
index c29293f63..15a3b7ee7 100644
--- a/db/test/rep048script.tcl
+++ b/db/test/rep048script.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2003-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2003,2007 Oracle. All rights reserved.
#
-# $Id: rep048script.tcl,v 12.4 2006/08/24 14:46:38 bostic Exp $
+# $Id: rep048script.tcl,v 12.8 2007/05/17 18:17:21 bostic Exp $
#
# Rep048 script - toggle bulk transfer while updates are going on.
@@ -24,7 +23,11 @@ if { $argc != 1 } {
# Initialize arguments
set masterdir [ lindex $argv 0 ]
-set is_repchild 1
+
+# Join the queue env. We assume the rep test convention of
+# placing the messages in $testdir/MSGQUEUEDIR.
+set queueenv [eval berkdb_env -home $testdir/MSGQUEUEDIR]
+error_check_good script_qenv_open [is_valid_env $queueenv] TRUE
#
# We need to set up our own machids.
diff --git a/db/test/rep049.tcl b/db/test/rep049.tcl
index 69b93a9b6..2e4cf7f57 100644
--- a/db/test/rep049.tcl
+++ b/db/test/rep049.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2001-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2001,2007 Oracle. All rights reserved.
#
-# $Id: rep049.tcl,v 12.11 2006/08/24 14:46:38 bostic Exp $
+# $Id: rep049.tcl,v 12.17 2007/05/17 19:33:06 bostic Exp $
#
# TEST rep049
# TEST Replication and delay syncing clients - basic test.
@@ -42,7 +41,7 @@ proc rep049 { method { niter 10 } { tnum "049" } args } {
continue
}
puts "Rep$tnum ($r):\
- Replication and ($method) delayed syncup."
+ Replication and ($method) delayed sync-up."
puts "Rep$tnum: Master logs are [lindex $l 0]"
puts "Rep$tnum: Swap Client logs are [lindex $l 1]"
puts "Rep$tnum: Delay Client logs are [lindex $l 2]"
@@ -55,6 +54,13 @@ proc rep049 { method { niter 10 } { tnum "049" } args } {
proc rep049_sub { method niter tnum logset recargs largs } {
global testdir
global util_path
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
+
env_cleanup $testdir
set orig_tdir $testdir
@@ -87,38 +93,29 @@ proc rep049_sub { method niter tnum logset recargs largs } {
# Open a master.
repladd 1
- set ma_envcmd "berkdb_env_noerr -create $m_txnargs \
+ set ma_envcmd "berkdb_env_noerr -create $m_txnargs $verbargs \
$m_logargs -errpfx ENV1 -cachesize {0 4194304 3} \
-home $env1dir -rep_transport \[list 1 replsend\]"
-# set ma_envcmd "berkdb_env_noerr -create $m_txnargs \
-# $m_logargs -cachesize {0 4194304 3} \
-# -errpfx ENV1 -verbose {rep on} -errfile /dev/stderr \
-# -home $env1dir -rep_transport \[list 1 replsend\]"
set env1 [eval $ma_envcmd $recargs -rep_master]
error_check_good master_env [is_valid_env $env1] TRUE
+ $env1 rep_limit 0 0
# Open two clients
repladd 2
- set cl_envcmd "berkdb_env_noerr -create $c_txnargs \
+ set cl_envcmd "berkdb_env_noerr -create $c_txnargs $verbargs \
$c_logargs -errpfx ENV2 \
-home $env2dir -rep_transport \[list 2 replsend\]"
-# set cl_envcmd "berkdb_env_noerr -create $c_txnargs \
-# $c_logargs -errpfx ENV2 \
-# -verbose {rep on} -errfile /dev/stderr \
-# -home $env2dir -rep_transport \[list 2 replsend\]"
set env2 [eval $cl_envcmd $recargs -rep_client]
error_check_good client_env [is_valid_env $env2] TRUE
+ $env2 rep_limit 0 0
repladd 3
set dc_envcmd "berkdb_env_noerr -create $dc_txnargs \
- $dc_logargs -errpfx ENV3 \
+ $verbargs $dc_logargs -errpfx ENV3 \
-home $delaycldir -rep_transport \[list 3 replsend\]"
-# set dc_envcmd "berkdb_env_noerr -create $dc_txnargs \
-# $dc_logargs -errpfx DELAYCL \
-# -verbose {rep on} -errfile /dev/stderr \
-# -home $delaycldir -rep_transport \[list 3 replsend\]"
set dcenv [eval $dc_envcmd $recargs -rep_client]
error_check_good client2_env [is_valid_env $dcenv] TRUE
+ $dcenv rep_limit 0 0
#
# !!!
@@ -126,12 +123,8 @@ proc rep049_sub { method niter tnum logset recargs largs } {
# We'll do the repladd and execute this env command later.
#
set fc_envcmd "berkdb_env_noerr -create $fc_txnargs \
- $fc_logargs -errpfx ENV4 \
+ $fc_logargs -errpfx ENV4 $verbargs \
-home $freshcldir -rep_transport \[list 4 replsend\]"
-# set fc_envcmd "berkdb_env_noerr -create $fc_txnargs \
-# $fc_logargs \
-# -errpfx FRESHCL -verbose {rep on} -errfile /dev/stderr \
-# -home $freshcldir -rep_transport \[list 4 replsend\]"
# Bring the clients online by processing the startup messages.
set envlist "{$env1 1} {$env2 2} {$dcenv 3}"
@@ -143,7 +136,7 @@ proc rep049_sub { method niter tnum logset recargs largs } {
process_msgs $envlist
- puts "\tRep$tnum.b: Set delayed sync on client. Basic test"
+ puts "\tRep$tnum.b: Set delayed sync on client. Basic test."
error_check_good set_delay [$dcenv rep_config {delayclient on}] 0
#
# Call sync when we're not delayed. Verify it just returns and
@@ -177,7 +170,7 @@ proc rep049_sub { method niter tnum logset recargs largs } {
#
rep_verify $env2dir $env2 $delaycldir $dcenv
- puts "\tRep$tnum.f: Run rep_test after syncup in new master env"
+ puts "\tRep$tnum.f: Run rep_test after sync-up in new master env"
set start [expr $start + $niter]
eval rep_test $method $env2 NULL $niter $start $start 0 0 $largs
process_msgs $envlist
diff --git a/db/test/rep050.tcl b/db/test/rep050.tcl
index 11b995758..b538bb46a 100644
--- a/db/test/rep050.tcl
+++ b/db/test/rep050.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2001-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2001,2007 Oracle. All rights reserved.
#
-# $Id: rep050.tcl,v 12.10 2006/08/24 14:46:38 bostic Exp $
+# $Id: rep050.tcl,v 12.16 2007/05/17 19:33:06 bostic Exp $
#
# TEST rep050
# TEST Replication and delay syncing clients - change master test.
@@ -44,7 +43,7 @@ proc rep050 { method { niter 10 } { tnum "050" } args } {
continue
}
puts "Rep$tnum ($r):\
- Replication and ($method) delayed syncup."
+ Replication and ($method) delayed sync-up."
puts "Rep$tnum: Master logs are [lindex $l 0]"
puts "Rep$tnum: Client 0 logs are [lindex $l 1]"
puts "Rep$tnum: Delay Client 1 logs are [lindex $l 2]"
@@ -58,6 +57,13 @@ proc rep050 { method { niter 10 } { tnum "050" } args } {
proc rep050_sub { method niter tnum logset recargs largs } {
global testdir
global util_path
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
+
env_cleanup $testdir
set orig_tdir $testdir
@@ -94,63 +100,44 @@ proc rep050_sub { method niter tnum logset recargs largs } {
set dc3_txnargs [adjust_txnargs $dc3_logtype]
#
- # XXX rep050 delayed syncup but change master:
+ # XXX rep050 delayed sync-up but change master:
# while client is delayed.
# while client is in the middle of delayed sync.
# Open a master.
repladd 1
set ma_envcmd "berkdb_env_noerr -create $m_txnargs \
- $m_logargs -errpfx ENV1 \
+ $m_logargs -errpfx ENV1 $verbargs \
-home $env1dir -rep_transport \[list 1 replsend\]"
-# set ma_envcmd "berkdb_env_noerr -create $m_txnargs $m_logargs \
-# -errpfx ENV1 -verbose {rep on} -errfile /dev/stderr \
-# -home $env1dir -rep_transport \[list 1 replsend\]"
set env1 [eval $ma_envcmd $recargs -rep_master]
- error_check_good master_env [is_valid_env $env1] TRUE
+ $env1 rep_limit 0 0
# Open two clients
repladd 2
set cl_envcmd "berkdb_env_noerr -create $c_txnargs \
- $c_logargs -errpfx ENV2 -cachesize {0 2097152 2} \
+ $c_logargs -errpfx ENV2 $verbargs -cachesize {0 2097152 2} \
-home $env2dir -rep_transport \[list 2 replsend\]"
-# set cl_envcmd "berkdb_env_noerr -create $c_txnargs \
-# $c_logargs -cachesize {0 2097152 2} \
-# -errpfx ENV2 -verbose {rep on} -errfile /dev/stderr \
-# -home $env2dir -rep_transport \[list 2 replsend\]"
set env2 [eval $cl_envcmd $recargs -rep_client]
- error_check_good client_env [is_valid_env $env2] TRUE
+ $env2 rep_limit 0 0
repladd 3
set dc1_envcmd "berkdb_env_noerr -create $dc1_txnargs \
- $dc1_logargs -errpfx ENV3 \
+ $dc1_logargs -errpfx ENV3 $verbargs \
-home $delaycldir1 -rep_transport \[list 3 replsend\]"
-# set dc1_envcmd "berkdb_env_noerr -create $dc1_txnargs \
-# $dc1_logargs \
-# -errpfx ENV3 -verbose {rep on} -errfile /dev/stderr \
-# -home $delaycldir1 -rep_transport \[list 3 replsend\]"
set dc1env [eval $dc1_envcmd $recargs -rep_client]
- error_check_good client2_env [is_valid_env $dc1env] TRUE
+ $dc1env rep_limit 0 0
repladd 4
set dc2_envcmd "berkdb_env_noerr -create $dc2_txnargs \
- $dc2_logargs -errpfx ENV4 \
+ $dc2_logargs -errpfx ENV4 $verbargs \
-home $delaycldir2 -rep_transport \[list 4 replsend\]"
-# set dc2_envcmd "berkdb_env_noerr -create $dc2_txnargs \
-# $dc2_logargs \
-# -errpfx ENV4 -verbose {rep on} -errfile /dev/stderr \
-# -home $delaycldir2 -rep_transport \[list 4 replsend\]"
set dc2env [eval $dc2_envcmd $recargs -rep_client]
- error_check_good client3_env [is_valid_env $dc2env] TRUE
+ $dc2env rep_limit 0 0
repladd 5
set dc3_envcmd "berkdb_env_noerr -create $dc3_txnargs \
- $dc3_logargs -errpfx ENV5 \
+ $dc3_logargs -errpfx ENV5 $verbargs \
-home $delaycldir3 -rep_transport \[list 5 replsend\]"
-# set dc3_envcmd "berkdb_env_noerr -create $dc3_txnargs \
-# $dc3_logargs \
-# -errpfx ENV5 -verbose {rep on} -errfile /dev/stderr \
-# -home $delaycldir3 -rep_transport \[list 5 replsend\]"
# Bring the clients online by processing the startup messages.
# !!!
@@ -224,7 +211,8 @@ proc rep050_sub { method niter tnum logset recargs largs } {
#
puts "\tRep$tnum.e: Run rep_test in new master env only"
set start [expr $start + $niter]
- eval rep_test $method $masterenv NULL $niter $start $start 0 0 $largs
+ eval rep_test \
+ $method $masterenv NULL $niter $start $start 0 0 $largs
replclear $cid
replclear 3
replclear 4
@@ -233,6 +221,7 @@ proc rep050_sub { method niter tnum logset recargs largs } {
puts "\tRep$tnum.f: Start 4th, clean delayed client."
set dc3env [eval $dc3_envcmd $recargs -rep_client]
error_check_good client4_env [is_valid_env $dc3env] TRUE
+ $dc3env rep_limit 0 0
error_check_good set_delay [$dc3env rep_config \
{delayclient on}] 0
set envlist "{$env1 1} {$env2 2} {$dc1env 3} \
@@ -278,7 +267,7 @@ proc rep050_sub { method niter tnum logset recargs largs } {
error_check_good rep_sync [$dc3env rep_sync] 0
if { $op == "syncing" } {
#
- # Proces messages twice to get us into syncing,
+ # Process messages twice to get us into syncing,
# but not enough to complete it. Then swap.
#
set nproced [proc_msgs_once $envlist NONE err]
diff --git a/db/test/rep051.tcl b/db/test/rep051.tcl
index 7308ee5c0..801516652 100644
--- a/db/test/rep051.tcl
+++ b/db/test/rep051.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2001-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2001,2007 Oracle. All rights reserved.
#
-# $Id: rep051.tcl,v 12.9 2006/08/24 14:46:38 bostic Exp $
+# $Id: rep051.tcl,v 12.15 2007/07/11 14:50:17 paula Exp $
#
# TEST rep051
# TEST Test of compaction with replication.
@@ -24,7 +23,8 @@ proc rep051 { method { niter 5000 } { tnum "051" } args } {
if { $checking_valid_methods } {
set test_methods {}
foreach method $valid_methods {
- if { [is_btree $method] == 1 || [is_recno $method] == 1 } {
+ if { [is_btree $method] == 1 || \
+ [is_recno $method] == 1 } {
lappend test_methods $method
}
}
@@ -45,12 +45,14 @@ proc rep051 { method { niter 5000 } { tnum "051" } args } {
foreach l $logsets {
set logindex [lsearch -exact $l "in-memory"]
if { $recopt == "-recover" && $logindex != -1 } {
- puts "Skipping test with -recover for in-memory logs."
+ puts "Skipping test \
+ with -recover for in-memory logs."
continue
}
set envargs ""
set args $saved_args
- puts "Rep$tnum: Replication with compaction ($method $recopt)."
+ puts "Rep$tnum:\
+ Replication with compaction ($method $recopt)."
puts "Rep$tnum: Master logs are [lindex $l 0]"
puts "Rep$tnum: Client logs are [lindex $l 1]"
rep051_sub $method \
@@ -61,7 +63,12 @@ proc rep051 { method { niter 5000 } { tnum "051" } args } {
proc rep051_sub { method niter tnum envargs logset recargs largs } {
source ./include.tcl
- global testdir
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
env_cleanup $testdir
@@ -76,43 +83,34 @@ proc rep051_sub { method niter tnum envargs logset recargs largs } {
set m_logtype [lindex $logset 0]
set c_logtype [lindex $logset 1]
+ set verify_subset \
+ [expr { $m_logtype == "in-memory" || $c_logtype == "in-memory" }]
+
# In-memory logs require a large log buffer, and cannot
# be used with -txn nosync. Adjust the args for master
# and client.
- set m_logargs [adjust_logargs $m_logtype]
- set c_logargs [adjust_logargs $c_logtype]
+ # This test has a long transaction, allocate a larger log
+ # buffer for in-memory test.
+ set m_logargs [adjust_logargs $m_logtype [expr 2 * [expr 1024 * 1024]]]
+ set c_logargs [adjust_logargs $c_logtype [expr 2 * [expr 1024 * 1024]]]
set m_txnargs [adjust_txnargs $m_logtype]
set c_txnargs [adjust_txnargs $c_logtype]
# Open a master.
repladd 1
- set env_cmd(M) "berkdb_env_noerr -create \
+ set env_cmd(M) "berkdb_env_noerr -create $verbargs \
-log_max 1000000 $envargs $m_logargs $recargs \
-home $masterdir -errpfx MASTER $m_txnargs -rep_master \
-rep_transport \[list 1 replsend\]"
-# set env_cmd(M) "berkdb_env_noerr -create \
-# -log_max 1000000 $envargs $m_logargs $recargs \
-# -home $masterdir \
-# -verbose {rep on} -errfile /dev/stderr \
-# -errpfx MASTER $m_txnargs -rep_master \
-# -rep_transport \[list 1 replsend\]"
set masterenv [eval $env_cmd(M)]
- error_check_good master_env [is_valid_env $masterenv] TRUE
# Open a client
repladd 2
- set env_cmd(C) "berkdb_env_noerr -create \
+ set env_cmd(C) "berkdb_env_noerr -create $verbargs \
-log_max 1000000 $envargs $c_logargs $recargs \
-home $clientdir -errpfx CLIENT $c_txnargs -rep_client \
-rep_transport \[list 2 replsend\]"
-# set env_cmd(C) "berkdb_env_noerr -create \
-# -log_max 1000000 $envargs $c_logargs $recargs \
-# -home $clientdir \
-# -verbose {rep on} -errfile /dev/stderr \
-# -errpfx CLIENT $c_txnargs -rep_client \
-# -rep_transport \[list 2 replsend\]"
set clientenv [eval $env_cmd(C)]
- error_check_good client_env [is_valid_env $clientenv] TRUE
# Bring the client online by processing the startup messages.
set envlist "{$masterenv 1} {$clientenv 2}"
@@ -134,7 +132,7 @@ proc rep051_sub { method niter tnum envargs logset recargs largs } {
# Verify that contents match.
puts "\tRep$tnum.b: Verifying client database contents."
- rep_verify $masterdir $masterenv $clientdir $clientenv
+ rep_verify $masterdir $masterenv $clientdir $clientenv $verify_subset
# Delete most entries. Since some of our methods renumber,
# delete starting at $niter and working down to 0.
@@ -179,7 +177,7 @@ proc rep051_sub { method niter tnum envargs logset recargs largs } {
# Reverify.
puts "\tRep$tnum.b: Verifying client database contents."
- rep_verify $masterdir $masterenv $clientdir $clientenv
+ rep_verify $masterdir $masterenv $clientdir $clientenv $verify_subset
# Clean up.
error_check_good db_close [$db close] 0
diff --git a/db/test/rep052.tcl b/db/test/rep052.tcl
index 4444617f7..a2503822d 100644
--- a/db/test/rep052.tcl
+++ b/db/test/rep052.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2004-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2004,2007 Oracle. All rights reserved.
#
-# $Id: rep052.tcl,v 12.9 2006/08/24 14:46:38 bostic Exp $
+# $Id: rep052.tcl,v 12.16 2007/05/17 18:17:21 bostic Exp $
#
# TEST rep052
# TEST Test of replication with NOWAIT.
@@ -70,6 +69,12 @@ proc rep052 { method { niter 200 } { tnum "052" } args } {
proc rep052_sub { method niter tnum envargs logset recargs largs } {
global testdir
global util_path
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
env_cleanup $testdir
@@ -86,10 +91,7 @@ proc rep052_sub { method niter tnum envargs logset recargs largs } {
# four times the size of the in-memory log buffer.
set pagesize 4096
append largs " -pagesize $pagesize "
- set log_buf [expr $pagesize * 2]
- set log_max [expr $log_buf * 4]
- set m_logargs " -log_buffer $log_buf"
- set c_logargs " -log_buffer $log_buf"
+ set log_max [expr $pagesize * 8]
set m_logtype [lindex $logset 0]
set c_logtype [lindex $logset 1]
@@ -102,32 +104,30 @@ proc rep052_sub { method niter tnum envargs logset recargs largs } {
# Open a master.
repladd 1
- set ma_envcmd "berkdb_env_noerr -create $m_txnargs \
- $m_logargs -log_max $log_max $envargs \
+ set ma_envcmd "berkdb_env_noerr -create $m_txnargs $verbargs \
+ $m_logargs -log_max $log_max $envargs -errpfx MASTER \
-home $masterdir -rep_transport \[list 1 replsend\]"
-# set ma_envcmd "berkdb_env_noerr -create $m_txnargs \
-# $m_logargs -log_max $log_max $envargs \
-# -verbose {rep on} -errpfx MASTER \
-# -home $masterdir -rep_transport \[list 1 replsend\]"
set masterenv [eval $ma_envcmd $recargs -rep_master]
- error_check_good master_env [is_valid_env $masterenv] TRUE
+ $masterenv rep_limit 0 0
# Open a client
repladd 2
- set cl_envcmd "berkdb_env_noerr -create $c_txnargs \
- $c_logargs -log_max $log_max $envargs \
+ set cl_envcmd "berkdb_env_noerr -create $c_txnargs $verbargs \
+ $c_logargs -log_max $log_max $envargs -errpfx CLIENT \
-home $clientdir -rep_transport \[list 2 replsend\]"
-# set cl_envcmd "berkdb_env_noerr -create $c_txnargs \
-# $c_logargs -log_max $log_max $envargs \
-# -verbose {rep on} -errpfx CLIENT \
-# -home $clientdir -rep_transport \[list 2 replsend\]"
set clientenv [eval $cl_envcmd $recargs -rep_client]
- error_check_good client_env [is_valid_env $clientenv] TRUE
+ $clientenv rep_limit 0 0
# Bring the clients online by processing the startup messages.
set envlist "{$masterenv 1} {$clientenv 2}"
process_msgs $envlist
+ # Clobber replication's 30-second anti-archive timer, which will have
+ # been started by client sync-up internal init, so that we can do a
+ # log_archive in a moment.
+ #
+ $masterenv test force noarchive_timeout
+
# Run rep_test in the master (and update client).
puts "\tRep$tnum.a: Running rep_test in replicated env."
set start 0
@@ -172,6 +172,7 @@ proc rep052_sub { method niter tnum envargs logset recargs largs } {
env_cleanup $clientdir
set clientenv [eval $cl_envcmd $recargs -rep_client]
error_check_good client_env [is_valid_env $clientenv] TRUE
+ $clientenv rep_limit 0 0
set envlist "{$masterenv 1} {$clientenv 2}"
# Turn on nowait.
@@ -179,24 +180,23 @@ proc rep052_sub { method niter tnum envargs logset recargs largs } {
# Process messages a few times, just enough to get client
# into lockout/recovery mode, but not enough to complete recovery.
- set iter 4
+ set iter 3
for { set i 0 } { $i < $iter } { incr i } {
set nproced [proc_msgs_once $envlist NONE err]
}
puts "\tRep$tnum.f: Verify we are locked out of txn API calls."
if { [catch { set txn [$clientenv txn] } res] } {
- error_check_good txn_lockout [is_substr $res "locked out"] 1
+ error_check_good txn_lockout [is_substr $res "DB_REP_LOCKOUT"] 1
} else {
- error_check_good txn_no_lockout [$txn commit] 0
- puts "FAIL: Not locked out of txn API calls: $res"
+ error "FAIL:[timestamp] Not locked out of txn API calls."
}
puts "\tRep$tnum.g: Verify we are locked out of env API calls."
if { [catch { set stat [$clientenv lock_stat] } res] } {
- error_check_good env_lockout [is_substr $res "locked out"] 1
+ error_check_good env_lockout [is_substr $res "DB_REP_LOCKOUT"] 1
} else {
- puts "FAIL: Not locked out of env API calls: $res"
+ error "FAIL:[timestamp] Not locked out of env API calls."
}
# Now catch up and make sure we're not locked out anymore.
diff --git a/db/test/rep053.tcl b/db/test/rep053.tcl
index bdfbda5dc..578e445e0 100644
--- a/db/test/rep053.tcl
+++ b/db/test/rep053.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2001-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2001,2007 Oracle. All rights reserved.
#
-# $Id: rep053.tcl,v 12.13 2006/08/24 14:46:38 bostic Exp $
+# $Id: rep053.tcl,v 12.19 2007/05/17 19:33:06 bostic Exp $
#
# TEST rep053
# TEST Replication and basic client-to-client synchronization.
@@ -42,7 +41,7 @@ proc rep053 { method { niter 200 } { tnum "053" } args } {
continue
}
puts "Rep$tnum ($method $r $t):\
- Replication and client-to-client syncup."
+ Replication and client-to-client sync up."
puts "Rep$tnum: Master logs are [lindex $l 0]"
puts "Rep$tnum: Client logs are [lindex $l 1]"
puts "Rep$tnum: Client2 logs are [lindex $l 2]"
@@ -56,6 +55,13 @@ proc rep053_sub { method niter tnum logset recargs throttle largs } {
global anywhere
global testdir
global util_path
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
+
env_cleanup $testdir
set orig_tdir $testdir
@@ -83,32 +89,22 @@ proc rep053_sub { method niter tnum logset recargs throttle largs } {
# Open a master.
repladd 1
set ma_envcmd "berkdb_env_noerr -create $m_txnargs \
- $m_logargs -errpfx MASTER \
+ $m_logargs -errpfx MASTER $verbargs \
-home $masterdir -rep_transport \[list 1 replsend\]"
-# set ma_envcmd "berkdb_env_noerr -create $m_txnargs \
-# $m_logargs -errpfx MASTER \
-# -verbose {rep on} -errfile /dev/stderr \
-# -home $masterdir -rep_transport \[list 1 replsend\]"
set masterenv [eval $ma_envcmd $recargs -rep_master]
- error_check_good master_env [is_valid_env $masterenv] TRUE
# Open two clients
repladd 2
set cl_envcmd "berkdb_env_noerr -create $c_txnargs \
- $c_logargs -errpfx CLIENT \
+ $c_logargs -errpfx CLIENT $verbargs \
-home $clientdir -rep_transport \[list 2 replsend\]"
-# set cl_envcmd "berkdb_env_noerr -create $c_txnargs \
-# $c_logargs -errpfx CLIENT \
-# -verbose {rep on} -errfile /dev/stderr \
-# -home $clientdir -rep_transport \[list 2 replsend\]"
set clientenv [eval $cl_envcmd $recargs -rep_client]
- error_check_good client_env [is_valid_env $clientenv] TRUE
# If throttling is specified, turn it on here. Throttle the
- # client, since this is a test of client-to-client sync up.
+ # client, since this is a test of client-to-client sync-up.
if { $throttle == "throttle" } {
error_check_good \
- throttle [$clientenv rep_limit 0 [expr 32 * 1024]] 0
+ throttle [$clientenv rep_limit 0 [expr 8 * 1024]] 0
}
#
@@ -118,12 +114,8 @@ proc rep053_sub { method niter tnum logset recargs throttle largs } {
# when it starts.
#
set dc1_envcmd "berkdb_env_noerr -create $c2_txnargs \
- $c2_logargs -errpfx DELAYCL \
+ $c2_logargs -errpfx DELAYCL $verbargs \
-home $delaycldir1 -rep_transport \[list 3 replsend\]"
-# set dc1_envcmd "berkdb_env_noerr -create $c2_txnargs \
-# $c2_logargs -errpfx DELAYCL \
-# -verbose {rep on} -errfile /dev/stderr \
-# -home $delaycldir1 -rep_transport \[list 3 replsend\]"
# Bring the client online by processing the startup messages.
set envlist "{$masterenv 1} {$clientenv 2}"
@@ -148,19 +140,32 @@ proc rep053_sub { method niter tnum logset recargs throttle largs } {
set req [stat_field $clientenv rep_stat "Client service requests"]
set miss [stat_field $clientenv rep_stat "Client service req misses"]
set rereq [stat_field $newclient rep_stat "Client rerequests"]
+
+ # To complete the internal init, we need a PAGE_REQ and a LOG_REQ. These
+ # requests get served by $clientenv. Since the end-of-range specified
+ # in the LOG_REQ points to the very end of the log (i.e., the LSN given
+ # in the NEWMASTER message), the serving client gets NOTFOUND in its log
+ # cursor reading loop, and can't tell whether it simply hit the end, or
+ # is really missing sufficient log records to fulfill the request. So
+ # it counts a "miss" and generates a rerequest. When internal init
+ # finishes recovery, it sends an ALL_REQ, for a total of 3 requests in
+ # the simple case, and more than 3 in the "throttle" case.
#
- # The original client should have received at least one request for
- # service from the new client. Since this is a fully operational
- # client, there should be no misses and more than one request only
- # if we are throttling.
- #
+
+ set expected_msgs 3
+ if { [is_queue $method] } {
+ # Queue database require an extra request
+ # to retrieve the meta page.
+ incr expected_msgs
+ }
+
if { $throttle == "throttle" } {
- error_check_good req [expr $req > 1] 1
+ error_check_good req [expr $req > $expected_msgs] 1
} else {
- error_check_good req $req 1
+ error_check_good req $req $expected_msgs
}
- error_check_good miss $miss 0
- error_check_good rereq $rereq 0
+ error_check_good miss $miss 1
+ error_check_good rereq $rereq 1
# Check for throttling.
if { $throttle == "throttle" } {
diff --git a/db/test/rep054.tcl b/db/test/rep054.tcl
index 64d1af624..cefc16e9d 100644
--- a/db/test/rep054.tcl
+++ b/db/test/rep054.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2004-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2004,2007 Oracle. All rights reserved.
#
-# $Id: rep054.tcl,v 1.9 2006/08/24 14:46:38 bostic Exp $
+# $Id: rep054.tcl,v 1.16 2007/05/17 18:17:21 bostic Exp $
#
# TEST rep054
# TEST Test of internal initialization where a far-behind
@@ -63,6 +62,13 @@ proc rep054 { method { nentries 200 } { tnum "054" } args } {
proc rep054_sub { method nentries tnum logset recargs largs } {
global testdir
global util_path
+ global errorInfo
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
env_cleanup $testdir
set omethod [convert_method $method]
@@ -82,12 +88,7 @@ proc rep054_sub { method nentries tnum logset recargs largs } {
# four times the size of the in-memory log buffer.
set pagesize 4096
append largs " -pagesize $pagesize "
- set log_buf [expr $pagesize * 2]
- set log_max [expr $log_buf * 4]
-
- set m_logargs " -log_buffer $log_buf"
- set c_logargs " -log_buffer $log_buf"
- set c2_logargs " -log_buffer $log_buf"
+ set log_max [expr $pagesize * 8]
set m_logtype [lindex $logset 0]
set c_logtype [lindex $logset 1]
@@ -104,36 +105,24 @@ proc rep054_sub { method nentries tnum logset recargs largs } {
# Open a master.
repladd 1
set ma_envcmd "berkdb_env_noerr -create $m_txnargs \
- $m_logargs -log_max $log_max \
+ $m_logargs -log_max $log_max $verbargs \
-home $masterdir -rep_transport \[list 1 replsend\]"
-# set ma_envcmd "berkdb_env_noerr -create $m_txnargs \
-# $m_logargs -log_max $log_max \
-# -verbose {rep on} -errpfx MASTER -errfile /dev/stderr \
-# -home $masterdir -rep_transport \[list 1 replsend\]"
set masterenv [eval $ma_envcmd $recargs -rep_master]
error_check_good master_env [is_valid_env $masterenv] TRUE
# Open a client
repladd 2
set cl_envcmd "berkdb_env_noerr -create $c_txnargs \
- $c_logargs -log_max $log_max \
+ $c_logargs -log_max $log_max $verbargs \
-home $clientdir -rep_transport \[list 2 replsend\]"
-# set cl_envcmd "berkdb_env_noerr -create $c_txnargs \
-# $c_logargs -log_max $log_max \
-# -verbose {rep on} -errpfx CLIENT \
-# -home $clientdir -rep_transport \[list 2 replsend\]"
set clientenv [eval $cl_envcmd $recargs -rep_client]
error_check_good client_env [is_valid_env $clientenv] TRUE
# Open 2nd client
repladd 3
set cl2_envcmd "berkdb_env_noerr -create $c2_txnargs \
- $c2_logargs -log_max $log_max \
+ $c2_logargs -log_max $log_max $verbargs \
-home $clientdir2 -rep_transport \[list 3 replsend\]"
-# set cl2_envcmd "berkdb_env_noerr -create $c2_txnargs \
-# $c2_logargs -log_max $log_max \
-# -verbose {rep on} -errpfx CLIENT2 \
-# -home $clientdir2 -rep_transport \[list 3 replsend\]"
set clientenv2 [eval $cl2_envcmd $recargs -rep_client]
error_check_good client2_env [is_valid_env $clientenv2] TRUE
@@ -141,6 +130,12 @@ proc rep054_sub { method nentries tnum logset recargs largs } {
set envlist "{$masterenv 1} {$clientenv 2} {$clientenv2 3}"
process_msgs $envlist
+ # Clobber replication's 30-second anti-archive timer, which will have
+ # been started by client sync-up internal init, so that we can do a
+ # log_archive in a moment.
+ #
+ $masterenv test force noarchive_timeout
+
# Run rep_test in the master and in each client.
puts "\tRep$tnum.a: Running rep_test in master & clients."
set start 0
diff --git a/db/test/rep055.tcl b/db/test/rep055.tcl
index 23a0308b3..2ca372e9e 100644
--- a/db/test/rep055.tcl
+++ b/db/test/rep055.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2004-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2004,2007 Oracle. All rights reserved.
#
-# $Id: rep055.tcl,v 1.8 2006/08/24 14:46:38 bostic Exp $
+# $Id: rep055.tcl,v 1.14 2007/05/17 18:17:21 bostic Exp $
#
# TEST rep055
# TEST Test of internal initialization and log archiving.
@@ -61,6 +60,12 @@ proc rep055_sub { method niter tnum recargs opts largs } {
global testdir
global passwd
global util_path
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
env_cleanup $testdir
@@ -80,32 +85,30 @@ proc rep055_sub { method niter tnum recargs opts largs } {
# Open a master.
repladd 1
- set ma_envcmd "berkdb_env_noerr -create -txn nosync \
- -log_buffer $log_buf -log_max $log_max \
+ set ma_envcmd "berkdb_env_noerr -create -txn nosync $verbargs \
+ -log_buffer $log_buf -log_max $log_max -errpfx MASTER \
-home $masterdir -rep_transport \[list 1 replsend\]"
-# set ma_envcmd "berkdb_env_noerr -create -txn nosync \
-# -log_buffer $log_buf -log_max $log_max \
-# -verbose {rep on} -errpfx MASTER \
-# -home $masterdir -rep_transport \[list 1 replsend\]"
set masterenv [eval $ma_envcmd $recargs -rep_master]
- error_check_good master_env [is_valid_env $masterenv] TRUE
+ $masterenv rep_limit 0 0
# Open a client
repladd 2
- set cl_envcmd "berkdb_env_noerr -create -txn nosync \
- -log_buffer $log_buf -log_max $log_max \
+ set cl_envcmd "berkdb_env_noerr -create -txn nosync $verbargs \
+ -log_buffer $log_buf -log_max $log_max -errpfx CLIENT \
-home $clientdir -rep_transport \[list 2 replsend\]"
-# set cl_envcmd "berkdb_env_noerr -create -txn nosync \
-# -log_buffer $log_buf -log_max $log_max \
-# -verbose {rep on} -errpfx CLIENT \
-# -home $clientdir -rep_transport \[list 2 replsend\]"
set clientenv [eval $cl_envcmd $recargs -rep_client]
- error_check_good client_env [is_valid_env $clientenv] TRUE
+ $clientenv rep_limit 0 0
# Bring the clients online by processing the startup messages.
set envlist "{$masterenv 1} {$clientenv 2}"
process_msgs $envlist
+ # Clobber replication's 30-second anti-archive timer, which will have
+ # been started by client sync-up internal init, so that we can do a
+ # log_archive in a moment.
+ #
+ $masterenv test force noarchive_timeout
+
# Run rep_test in the master (and update client).
puts "\tRep$tnum.a: Running rep_test in replicated env."
eval rep_test $method $masterenv NULL $niter 0 0 0 0 $largs
@@ -164,6 +167,7 @@ proc rep055_sub { method niter tnum recargs opts largs } {
}
set clientenv [eval $cl_envcmd $recargs -rep_client]
error_check_good client_env [is_valid_env $clientenv] TRUE
+ $clientenv rep_limit 0 0
set envlist "{$masterenv 1} {$clientenv 2}"
#
# Process messages once to get partially through internal init.
diff --git a/db/test/rep056.tcl b/db/test/rep056.tcl
index ab7eb63c0..2e9aecbb9 100644
--- a/db/test/rep056.tcl
+++ b/db/test/rep056.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2005-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2005,2007 Oracle. All rights reserved.
#
-# $Id: rep056.tcl,v 1.6 2006/08/24 14:46:38 bostic Exp $
+# $Id: rep056.tcl,v 1.8 2007/05/17 15:15:55 bostic Exp $
#
# TEST rep056
# TEST Replication test with in-memory named databases.
diff --git a/db/test/rep057.tcl b/db/test/rep057.tcl
index ab4e31eb6..2bce3a290 100644
--- a/db/test/rep057.tcl
+++ b/db/test/rep057.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2005-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2005,2007 Oracle. All rights reserved.
#
-# $Id: rep057.tcl,v 1.6 2006/08/24 14:46:38 bostic Exp $
+# $Id: rep057.tcl,v 1.8 2007/05/17 15:15:55 bostic Exp $
#
# TEST rep057
# TEST Replication test of internal initialization with
diff --git a/db/test/rep058.tcl b/db/test/rep058.tcl
index f1ad631ee..3f17a78ee 100644
--- a/db/test/rep058.tcl
+++ b/db/test/rep058.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2005-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2005,2007 Oracle. All rights reserved.
#
-# $Id: rep058.tcl,v 12.8 2006/08/24 14:46:38 bostic Exp $
+# $Id: rep058.tcl,v 12.13 2007/05/17 18:17:21 bostic Exp $
#
# TEST rep058
# TEST
@@ -53,8 +52,14 @@ proc rep058 { method { tnum "058" } args } {
}
proc rep058_sub { method tnum logset recargs largs } {
- global testdir
source ./include.tcl
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
+
set orig_tdir $testdir
set masterdir $testdir/MASTERDIR
@@ -81,24 +86,15 @@ proc rep058_sub { method tnum logset recargs largs } {
# Open a master.
repladd 1
set envcmd(M) "berkdb_env_noerr -create $m_txnargs \
- $m_logargs -lock_detect default \
+ $m_logargs -lock_detect default $verbargs \
-home $masterdir -rep_transport \[list 1 replsend\]"
-# set envcmd(M) "berkdb_env_noerr -create $m_txnargs \
-# $m_logargs -lock_detect default \
-# -errpfx ENV.M -verbose {rep on} -errfile /dev/stderr \
-# -home $masterdir -rep_transport \[list 1 replsend\]"
set menv [eval $envcmd(M) $recargs]
- error_check_good master_env0 [is_valid_env $menv] TRUE
# Open a client
repladd 2
set envcmd(C) "berkdb_env_noerr -create $c_txnargs \
- $c_logargs -lock_detect default \
+ $c_logargs -lock_detect default $verbargs \
-home $clientdir -rep_transport \[list 2 replsend\]"
-# set envcmd(C) "berkdb_env_noerr -create $c_txnargs \
-# $c_logargs -lock_detect default \
-# -errpfx ENV.C -verbose {rep on} -errfile /dev/stderr \
-# -home $clientdir -rep_transport \[list 2 replsend\]"
set cenv [eval $envcmd(C) $recargs]
error_check_good client_env [is_valid_env $cenv] TRUE
diff --git a/db/test/rep059.tcl b/db/test/rep059.tcl
index 0f9cd13da..36a313805 100644
--- a/db/test/rep059.tcl
+++ b/db/test/rep059.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2005-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2005,2007 Oracle. All rights reserved.
#
-# $Id: rep059.tcl,v 1.7 2006/09/08 20:32:18 bostic Exp $
+# $Id: rep059.tcl,v 1.12 2007/05/17 18:17:21 bostic Exp $
#
# TEST rep059
# TEST
@@ -15,8 +14,14 @@
# TEST match on.
#
proc rep059 { method { tnum "059" } args } {
- global testdir
source ./include.tcl
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
+
set orig_tdir $testdir
if { $is_windows9x_test == 1 } {
@@ -25,7 +30,7 @@ proc rep059 { method { tnum "059" } args } {
}
# There should be no difference with methods. Just use btree.
#
- if { $checking_valid_methods }
+ if { $checking_valid_methods } {
set test_methods { btree }
return $test_methods
}
@@ -51,38 +56,23 @@ proc rep059 { method { tnum "059" } args } {
# Open a master.
repladd 1
set envcmd(M) "berkdb_env_noerr -create -txn nosync\
- -lock_detect default \
+ -lock_detect default -errpfx MASTER $verbargs \
-home $masterdir -rep_transport \[list 1 replsend\]"
-# set envcmd(M) "berkdb_env_noerr -create -txn nosync \
-# -lock_detect default \
-# -errpfx ENV.M -verbose {rep on} -errfile /dev/stderr \
-# -home $masterdir -rep_transport \[list 1 replsend\]"
set menv [eval $envcmd(M)]
- error_check_good master_env0 [is_valid_env $menv] TRUE
# Open a client
repladd 2
set envcmd(C) "berkdb_env_noerr -create -txn nosync \
- -lock_detect default \
+ -lock_detect default -errpfx CLIENT1 $verbargs \
-home $clientdir -rep_transport \[list 2 replsend\]"
-# set envcmd(C) "berkdb_env_noerr -create -txn nosync \
-# -lock_detect default \
-# -errpfx ENV.C -verbose {rep on} -errfile /dev/stderr \
-# -home $clientdir -rep_transport \[list 2 replsend\]"
set cenv [eval $envcmd(C)]
- error_check_good client_env [is_valid_env $cenv] TRUE
# Open a 2nd client
repladd 3
set envcmd(C2) "berkdb_env_noerr -create -txn nosync \
- -lock_detect default \
+ -lock_detect default -errpfx CLIENT2 $verbargs \
-home $clientdir2 -rep_transport \[list 3 replsend\]"
-# set envcmd(C2) "berkdb_env_noerr -create -txn nosync \
-# -lock_detect default \
-# -errpfx ENV.C2 -verbose {rep on} -errfile /dev/stderr \
-# -home $clientdir2 -rep_transport \[list 3 replsend\]"
set c2env [eval $envcmd(C2)]
- error_check_good client2_env [is_valid_env $c2env] TRUE
#
# Set test location, then start as master and client
diff --git a/db/test/rep060.tcl b/db/test/rep060.tcl
index 2c3d051a5..4715272b7 100644
--- a/db/test/rep060.tcl
+++ b/db/test/rep060.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2004-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2004,2007 Oracle. All rights reserved.
#
-# $Id: rep060.tcl,v 12.7 2006/08/24 14:46:38 bostic Exp $
+# $Id: rep060.tcl,v 12.13 2007/05/17 18:17:21 bostic Exp $
#
# TEST rep060
# TEST Test of normally running clients and internal initialization.
@@ -21,7 +20,8 @@ proc rep060 { method { niter 200 } { tnum "060" } args } {
if { $checking_valid_methods } {
set test_methods {}
foreach method $valid_methods {
- if { [is_btree $method] == 1 || [is_queue $method] == 1 } {
+ if { [is_btree $method] == 1 || \
+ [is_queue $method] == 1 } {
lappend test_methods $method
}
}
@@ -71,6 +71,12 @@ proc rep060 { method { niter 200 } { tnum "060" } args } {
proc rep060_sub { method niter tnum logset recargs opt largs } {
source ./include.tcl
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
env_cleanup $testdir
@@ -87,11 +93,7 @@ proc rep060_sub { method niter tnum logset recargs opt largs } {
# four times the size of the in-memory log buffer.
set pagesize 4096
append largs " -pagesize $pagesize "
- set log_buf [expr $pagesize * 2]
- set log_max [expr $log_buf * 4]
-
- set m_logargs " -log_buffer $log_buf"
- set c_logargs " -log_buffer $log_buf"
+ set log_max [expr $pagesize * 4]
set m_logtype [lindex $logset 0]
set c_logtype [lindex $logset 1]
@@ -105,14 +107,26 @@ proc rep060_sub { method niter tnum logset recargs opt largs } {
# Open a master.
repladd 1
set ma_envcmd "berkdb_env_noerr -create $m_txnargs \
- $m_logargs -log_max $log_max \
+ $m_logargs -log_max $log_max -errpfx MASTER $verbargs \
-home $masterdir -rep_transport \[list 1 replsend\]"
-# set ma_envcmd "berkdb_env_noerr -create $m_txnargs \
-# $m_logargs -log_max $log_max \
-# -verbose {rep on} -errpfx MASTER \
-# -home $masterdir -rep_transport \[list 1 replsend\]"
set masterenv [eval $ma_envcmd $recargs -rep_master]
- error_check_good master_env [is_valid_env $masterenv] TRUE
+
+ # Open a client
+ puts "\tRep$tnum.a: Open client."
+ repladd 2
+ set cl_envcmd "berkdb_env_noerr -create $c_txnargs \
+ $c_logargs -log_max $log_max -errpfx CLIENT $verbargs \
+ -home $clientdir -rep_transport \[list 2 replsend\]"
+ set clientenv [eval $cl_envcmd $recargs -rep_client]
+
+ # Bring the client online by processing the startup messages.
+ set envlist "{$masterenv 1} {$clientenv 2}"
+ process_msgs $envlist
+
+ # Clobber replication's 30-second anti-archive timer, which will have
+ # been started by client sync-up internal init.
+ #
+ $masterenv test force noarchive_timeout
# Set a low limit so that there are lots of reps between
# master and client. This allows greater control over
@@ -130,11 +144,12 @@ proc rep060_sub { method niter tnum logset recargs opt largs } {
-create -mode 0644} $largs $omethod $dbname]
error_check_good dbopen [is_valid_db $db] TRUE
- # Put some data into the database
- puts "\tRep$tnum.a: Run rep_test in master env."
+ # Put some data into the database, running the master up past
+ # log file 10, discarding messages to the client so that it will
+ # be forced to request them as a gap.
+ #
+ puts "\tRep$tnum.c: Run rep_test in master env."
set start 0
- eval rep_test $method $masterenv $db $niter $start $start 0 0 $largs
- incr start $niter
set stop 0
set endlog 10
@@ -143,6 +158,7 @@ proc rep060_sub { method niter tnum logset recargs opt largs } {
eval rep_test $method \
$masterenv $db $niter $start $start 0 0 $largs
incr start $niter
+ replclear 2
if { $m_logtype != "in-memory" } {
set res \
@@ -155,21 +171,13 @@ proc rep060_sub { method niter tnum logset recargs opt largs } {
}
}
- # Open a client
- puts "\tRep$tnum.c: Open client."
- repladd 2
- set cl_envcmd "berkdb_env_noerr -create $c_txnargs \
- $c_logargs -log_max $log_max \
- -home $clientdir -rep_transport \[list 2 replsend\]"
-# set cl_envcmd "berkdb_env_noerr -create $c_txnargs \
-# $c_logargs -log_max $log_max \
-# -verbose {rep on} -errpfx CLIENT -errfile /dev/stderr \
-# -home $clientdir -rep_transport \[list 2 replsend\]"
- set clientenv [eval $cl_envcmd $recargs -rep_client]
- error_check_good client_env [is_valid_env $clientenv] TRUE
+ # Do one more set of txns at the master, replicating log records
+ # normally, to give the client a chance to notice how many messages
+ # it is missing.
+ #
+ eval rep_test $method $masterenv $db $niter $start $start 0 0 $largs
+ incr start $niter
- # Bring the client online by processing the startup messages.
- set envlist "{$masterenv 1} {$clientenv 2}"
set stop 0
set client_endlog 5
set last_client_log 0
diff --git a/db/test/rep061.tcl b/db/test/rep061.tcl
index 1a0fa73f4..cf885bba8 100644
--- a/db/test/rep061.tcl
+++ b/db/test/rep061.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2004-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2004,2007 Oracle. All rights reserved.
#
-# $Id: rep061.tcl,v 1.4 2006/08/24 14:46:38 bostic Exp $
+# $Id: rep061.tcl,v 1.11 2007/05/17 18:17:21 bostic Exp $
#
# TEST rep061
# TEST Test of internal initialization multiple files and pagesizes
@@ -87,6 +86,12 @@ proc rep061_sub { method niter tnum logset recargs opts dpct largs } {
global util_path
global drop drop_msg
global startup_done
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
env_cleanup $testdir
@@ -98,20 +103,11 @@ proc rep061_sub { method niter tnum logset recargs opts dpct largs } {
file mkdir $masterdir
file mkdir $clientdir
- #
- # Note that by setting these 2 globals below, message dropping
- # is automatically enabled. By setting 'drop' to 0, further
- # down in the test, we disable message dropping.
- #
- set drop 1
- set drop_msg [expr 100 / $dpct]
-
# Log size is small so we quickly create more than one.
# The documentation says that the log file must be at least
# four times the size of the in-memory log buffer.
set maxpg 16384
- set log_buf [expr $maxpg * 2]
- set log_max [expr $log_buf * 4]
+ set log_max [expr $maxpg * 8]
set cache [expr $maxpg * 32 ]
set m_logtype [lindex $logset 0]
@@ -123,31 +119,17 @@ proc rep061_sub { method niter tnum logset recargs opts dpct largs } {
# Open a master.
repladd 1
- set ma_envcmd "berkdb_env_noerr -create $m_txnargs \
- -log_buffer $log_buf -log_max $log_max \
- -cachesize { 0 $cache 1 } \
+ set ma_envcmd "berkdb_env_noerr -create $m_txnargs $verbargs \
+ -log_max $log_max -cachesize { 0 $cache 1 } -errpfx MASTER \
-home $masterdir -rep_transport \[list 1 replsend\]"
-# set ma_envcmd "berkdb_env_noerr -create $m_txnargs \
-# -log_buffer $log_buf -log_max $log_max \
-# -cachesize { 0 $cache 1 }\
-# -verbose {rep on} -errpfx MASTER -errfile /dev/stderr \
-# -home $masterdir -rep_transport \[list 1 replsend\]"
set masterenv [eval $ma_envcmd $recargs -rep_master]
- error_check_good master_env [is_valid_env $masterenv] TRUE
# Open a client
repladd 2
- set cl_envcmd "berkdb_env_noerr -create $c_txnargs \
- -log_buffer $log_buf -log_max $log_max \
- -cachesize { 0 $cache 1 }\
+ set cl_envcmd "berkdb_env_noerr -create $c_txnargs $verbargs \
+ -log_max $log_max -cachesize { 0 $cache 1 } -errpfx CLIENT \
-home $clientdir -rep_transport \[list 2 replsend\]"
-# set cl_envcmd "berkdb_env_noerr -create $c_txnargs \
-# -log_buffer $log_buf -log_max $log_max \
-# -cachesize { 0 $cache 1 }\
-# -verbose {rep on} -errpfx CLIENT \
-# -home $clientdir -rep_transport \[list 2 replsend\]"
set clientenv [eval $cl_envcmd $recargs -rep_client]
- error_check_good client_env [is_valid_env $clientenv] TRUE
#
# Since we're dropping messages, set the rerequest values
@@ -159,6 +141,20 @@ proc rep061_sub { method niter tnum logset recargs opts dpct largs } {
set envlist "{$masterenv 1} {$clientenv 2}"
process_msgs $envlist
+ # Clobber replication's 30-second anti-archive timer, which will have
+ # been started by client sync-up internal init, so that we can do a
+ # log_archive in a moment.
+ #
+ $masterenv test force noarchive_timeout
+
+ #
+ # Note that by setting these 2 globals below, message dropping
+ # is automatically enabled. By setting 'drop' to 0, further
+ # down in the test, we disable message dropping.
+ #
+ set drop 1
+ set drop_msg [expr 100 / $dpct]
+
# Run rep_test in the master (and update client).
set startpgsz 512
set pglist ""
@@ -260,6 +256,11 @@ proc rep061_sub { method niter tnum logset recargs opts dpct largs } {
set clientenv [eval $cl_envcmd $recargs -rep_client]
error_check_good client_env [is_valid_env $clientenv] TRUE
+ #
+ # Since we are dropping frequent messages, we set the
+ # rerequest rate low to make sure the test finishes.
+ #
+ $clientenv rep_request 2 8
set envlist "{$masterenv 1} {$clientenv 2}"
process_msgs $envlist 0 NONE err
set done 0
@@ -294,9 +295,12 @@ proc rep061_sub { method niter tnum logset recargs opts dpct largs } {
set entries 4
eval rep_test $method $masterenv $db $entries $niter 0 0 0 $largs
process_msgs $envlist 0 NONE err
- set startup_done [stat_field $clientenv rep_stat \
- "Startup complete"]
- if { $startup_done || $iter >= $max_drop_iter } {
+ set stat [exec $util_path/db_stat -N -r -R A -h $clientdir]
+ #
+ # Loop until we are done with the RECOVER_PAGE phase.
+ #
+ set in_page [is_substr $stat "REP_F_RECOVER_PAGE"]
+ if { !$in_page || $iter >= $max_drop_iter } {
#
# If we're dropping, stop doing so.
# If we're not dropping, we're done.
diff --git a/db/test/rep062.tcl b/db/test/rep062.tcl
index 851285662..e3547d5d7 100644
--- a/db/test/rep062.tcl
+++ b/db/test/rep062.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2006,2007 Oracle. All rights reserved.
#
-# $Id: rep062.tcl,v 1.5 2006/09/11 18:54:25 carol Exp $
+# $Id: rep062.tcl,v 1.13 2007/05/17 18:17:21 bostic Exp $
#
# TEST rep062
# TEST Test of internal initialization where client has a different
@@ -69,7 +68,14 @@ proc rep062_sub { method tnum logset recargs largs } {
global testdir
global util_path
global passwd
+ global has_crypto
global encrypt
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
set masterdir $testdir/MASTERDIR
set clientdir $testdir/CLIENTDIR
@@ -78,12 +84,8 @@ proc rep062_sub { method tnum logset recargs largs } {
# The documentation says that the log file must be at least
# four times the size of the in-memory log buffer.
set maxpg 16384
- set log_buf [expr $maxpg * 2]
- set log_max [expr $log_buf * 4]
- set cache [expr $maxpg * 32 ]
-
- set m_logargs " -log_buffer $log_buf"
- set c_logargs " -log_buffer $log_buf"
+ set log_max [expr $maxpg * 8]
+ set cache [expr $maxpg * 32]
set m_logtype [lindex $logset 0]
set c_logtype [lindex $logset 1]
@@ -116,17 +118,20 @@ proc rep062_sub { method tnum logset recargs largs } {
foreach p $pairlist {
env_cleanup $testdir
- replsetup $testdir/MSGQUEUEDIR
-
- file mkdir $masterdir
- file mkdir $clientdir
-
# Extract values from the list.
set encryptenv [lindex [lindex $p 0] 0]
set encryptmsg "clear"
+ if { $has_crypto == 0 && $encryptenv == 1 } {
+ continue
+ }
if { $encryptenv == 1 } {
set encryptmsg "encrypted"
}
+ replsetup $testdir/MSGQUEUEDIR
+
+ file mkdir $masterdir
+ file mkdir $clientdir
+
set method1 [lindex [lindex $p 1] 0]
set method2 [lindex [lindex $p 2] 0]
set flags1 [lindex [lindex $p 1] 1]
@@ -151,35 +156,29 @@ proc rep062_sub { method tnum logset recargs largs } {
# Open a master.
repladd 1
set ma_envcmd "berkdb_env_noerr -create $m_txnargs \
- $m_logargs -log_max $log_max \
+ $m_logargs -log_max $log_max $verbargs -errpfx MASTER \
-cachesize { 0 $cache 1 } $envflags \
-home $masterdir -rep_transport \[list 1 replsend\]"
-# set ma_envcmd "berkdb_env_noerr -create $m_txnargs \
-# $m_logargs -log_max $log_max \
-# -cachesize { 0 $cache 1 } $envflags \
-# -verbose {rep on} -errpfx MASTER -errfile /dev/stderr \
-# -home $masterdir -rep_transport \[list 1 replsend\]"
set masterenv [eval $ma_envcmd $recargs -rep_master]
- error_check_good master_env [is_valid_env $masterenv] TRUE
# Open a client.
repladd 2
set cl_envcmd "berkdb_env_noerr -create $c_txnargs \
- $c_logargs -log_max $log_max \
+ $c_logargs -log_max $log_max $verbargs -errpfx CLIENT \
-cachesize { 0 $cache 1 } $envflags \
-home $clientdir -rep_transport \[list 2 replsend\]"
-# set cl_envcmd "berkdb_env_noerr -create $c_txnargs \
-# $c_logargs -log_max $log_max \
-# -cachesize { 0 $cache 1 } $envflags \
-# -verbose {rep on} -errpfx CLIENT -errfile /dev/stderr \
-# -home $clientdir -rep_transport \[list 2 replsend\]"
set clientenv [eval $cl_envcmd $recargs -rep_client]
- error_check_good client_env [is_valid_env $clientenv] TRUE
# Bring the client online by processing the startup messages.
set envlist "{$masterenv 1} {$clientenv 2}"
process_msgs $envlist
+ # Clobber replication's 30-second anti-archive timer, which will have
+ # been started by client sync-up internal init, so that we can do a
+ # log_archive in a moment.
+ #
+ $masterenv test force noarchive_timeout
+
# Open two databases on the master - one to test different
# methods, one to advance the log, forcing internal
# initialization.
diff --git a/db/test/rep063.tcl b/db/test/rep063.tcl
index 661774937..7b7687451 100644
--- a/db/test/rep063.tcl
+++ b/db/test/rep063.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2002-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2002,2007 Oracle. All rights reserved.
#
-# $Id: rep063.tcl,v 1.5 2006/08/24 14:46:38 bostic Exp $
+# $Id: rep063.tcl,v 1.12 2007/05/17 18:17:21 bostic Exp $
#
# TEST rep063
# TEST Replication election test with simulated different versions
@@ -17,8 +16,6 @@
# TEST the master with varying LSNs and priorities.
#
proc rep063 { method args } {
- global errorInfo
-
source ./include.tcl
if { $is_windows9x_test == 1 } {
puts "Skipping replication test on Win 9x platform."
@@ -63,6 +60,14 @@ proc rep063 { method args } {
proc rep063_sub { method nclients tnum logset recargs largs } {
source ./include.tcl
+ global electable_pri
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
+
set niter 80
env_cleanup $testdir
@@ -85,15 +90,12 @@ proc rep063_sub { method nclients tnum logset recargs largs } {
set c_txnargs($i) [adjust_txnargs $c_logtype($i)]
}
-# To debug elections, the lines to uncomment are below the
-# error checking portion of this test. This is needed in order
-# for the error messages to come back in errorInfo and for
-# that portion of the test to pass.
# Open a master.
set envlist {}
repladd 1
- set env_cmd(M) "berkdb_env -create -log_max 1000000 -home $masterdir \
- $m_txnargs $m_logargs -rep_master \
+ set env_cmd(M) "berkdb_env_noerr -create -log_max 1000000 \
+ -event rep_event \
+ -home $masterdir $m_txnargs $m_logargs -rep_master $verbargs \
-errpfx MASTER -rep_transport \[list 1 replsend\]"
set masterenv [eval $env_cmd(M) $recargs]
error_check_good master_env [is_valid_env $masterenv] TRUE
@@ -104,6 +106,7 @@ proc rep063_sub { method nclients tnum logset recargs largs } {
set envid [expr $i + 2]
repladd $envid
set env_cmd($i) "berkdb_env_noerr -create -home $clientdir($i) \
+ -event rep_event \
$c_txnargs($i) $c_logargs($i) -rep_client \
-rep_transport \[list $envid replsend\]"
set clientenv($i) [eval $env_cmd($i) $recargs]
@@ -154,10 +157,6 @@ proc rep063_sub { method nclients tnum logset recargs largs } {
error_check_good masterenv_close [$masterenv close] 0
set envlist [lreplace $envlist 0 0]
-# To debug elections, uncomment the lines below to turn on verbose
-# and set the errfile. Also edit reputils.tcl
-# in proc start_election and swap the 2 commented lines with
-# their counterpart.
for { set i 0 } { $i < $nclients } { incr i } {
replclear [expr $i + 2]
#
@@ -172,11 +171,12 @@ proc rep063_sub { method nclients tnum logset recargs largs } {
#
set pri($i) 0
#
-# error_check_good pfx [$clientenv($i) errpfx CLIENT$i] 0
-# error_check_good verb [$clientenv($i) verbose rep on] 0
-# $clientenv($i) errfile /dev/stderr
-# set env_cmd($i) [concat $env_cmd($i) \
-# "-errpfx CLIENT$i -verbose {rep on} -errfile /dev/stderr"]
+ if { $rep_verbose == 1 } {
+ error_check_good pfx [$clientenv($i) errpfx CLIENT$i] 0
+ $clientenv($i) verbose rep on
+ set env_cmd($i) [concat $env_cmd($i) \
+ "-errpfx CLIENT$i $verbargs "]
+ }
}
#
# Remove clients 3 and 4 from the envlist. We'll save those for
@@ -202,7 +202,7 @@ proc rep063_sub { method nclients tnum logset recargs largs } {
set nvotes $nclients
set winner 1
set elector 2
- setpriority pri $nclients $winner
+ setpriority pri $nclients $winner 0 1
run_election env_cmd envlist err_cmd pri crash\
$qdir $m $elector $nsites $nvotes $nclients $winner
#
@@ -229,7 +229,7 @@ proc rep063_sub { method nclients tnum logset recargs largs } {
# and client 1 a real 0 priority new client.
#
set winner 0
- setpriority pri $nclients $winner
+ setpriority pri $nclients $winner 0 1
set pri(1) 0
run_election env_cmd envlist err_cmd pri crash\
$qdir $m $elector $nsites $nvotes $nclients $winner
@@ -248,7 +248,7 @@ proc rep063_sub { method nclients tnum logset recargs largs } {
# is a bigger LSN "new" client participating.
#
set winner 1
- setpriority pri $nclients $winner
+ setpriority pri $nclients $winner 0 1
set pri(2) [expr $pri(1) / 2]
run_election env_cmd envlist err_cmd pri crash\
$qdir $m $elector $nsites $nvotes $nclients $winner
@@ -261,7 +261,7 @@ proc rep063_sub { method nclients tnum logset recargs largs } {
#
# Client 1 now has a bigger LSN, so make it unelectable. Add in
# old client 3 since that should be the biggest LSN of all these.
- # Set all other priorities to 10 to make them all equal (and
+ # Set all other priorities to electable_pri to make them all equal (and
# all "new" clients). We know client 3 should win because we
# set its LSN much farther ahead in the beginning.
#
@@ -270,10 +270,10 @@ proc rep063_sub { method nclients tnum logset recargs largs } {
set nclients 4
set nsites $nclients
set nvotes $nclients
- set pri(0) 10
+ set pri(0) $electable_pri
set pri(1) 0
- set pri(2) 10
- set pri(3) 10
+ set pri(2) $electable_pri
+ set pri(3) $electable_pri
replclear [lindex $cl3 1]
lappend envlist $cl3
#
@@ -295,11 +295,11 @@ proc rep063_sub { method nclients tnum logset recargs largs } {
set nclients 5
set nsites $nclients
set nvotes $nclients
- set pri(0) 10
- set pri(1) 10
- set pri(2) 10
- set pri(3) 10
- set pri(4) 10
+ set pri(0) $electable_pri
+ set pri(1) $electable_pri
+ set pri(2) $electable_pri
+ set pri(3) $electable_pri
+ set pri(4) $electable_pri
replclear [expr $winner + 2]
lappend envlist $cl4
#
diff --git a/db/test/rep064.tcl b/db/test/rep064.tcl
index 275979104..a314d706f 100644
--- a/db/test/rep064.tcl
+++ b/db/test/rep064.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2006,2007 Oracle. All rights reserved.
#
-# $Id: rep064.tcl,v 12.5 2006/08/24 14:46:38 bostic Exp $
+# $Id: rep064.tcl,v 12.9 2007/05/17 18:17:21 bostic Exp $
#
# TEST rep064
# TEST Replication rename and forced-upgrade test.
@@ -56,6 +55,12 @@ proc rep064 { method { niter 10 } { tnum "064" } args } {
proc rep064_sub { method niter tnum logset recargs largs } {
global testdir
global util_path
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
env_cleanup $testdir
@@ -78,24 +83,16 @@ proc rep064_sub { method niter tnum logset recargs largs } {
# Open a master.
repladd 1
set ma_envcmd "berkdb_env_noerr -create $m_txnargs $m_logargs \
- -errpfx MASTER -errfile /dev/stderr \
+ -errpfx MASTER -errfile /dev/stderr $verbargs \
-home $masterdir -rep_transport \[list 1 replsend\]"
-# set ma_envcmd "berkdb_env_noerr -create $m_txnargs $m_logargs \
-# -verbose {rep on} -errpfx MASTER -errfile /dev/stderr \
-# -home $masterdir -rep_transport \[list 1 replsend\]"
set masterenv [eval $ma_envcmd $recargs -rep_master]
- error_check_good master_env [is_valid_env $masterenv] TRUE
# Open a client
repladd 2
set cl_envcmd "berkdb_env_noerr -create $c_txnargs $c_logargs \
- -errpfx CLIENT -errfile /dev/stderr \
+ -errpfx CLIENT -errfile /dev/stderr $verbargs \
-home $clientdir -rep_transport \[list 2 replsend\]"
-# set cl_envcmd "berkdb_env_noerr -create $c_txnargs $c_logargs \
-# -verbose {rep on} -errpfx CLIENT -errfile /dev/stderr \
-# -home $clientdir -rep_transport \[list 2 replsend\]"
set clientenv [eval $cl_envcmd $recargs -rep_client]
- error_check_good client_env [is_valid_env $clientenv] TRUE
# Bring the clients online by processing the startup messages.
set envlist "{$masterenv 1} {$clientenv 2}"
diff --git a/db/test/rep065.tcl b/db/test/rep065.tcl
index d445e4daf..3b31862d9 100644
--- a/db/test/rep065.tcl
+++ b/db/test/rep065.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2006,2007 Oracle. All rights reserved.
#
-# $Id: rep065.tcl,v 12.9 2006/09/08 20:32:18 bostic Exp $
+# $Id: rep065.tcl,v 12.16 2007/07/06 00:24:16 sue Exp $
#
# TEST rep065
# TEST Tests replication running with different versions.
@@ -18,6 +17,9 @@
# TEST the 4.5 tcl code (e.g. test.tcl).
proc rep065 { method { nsites 3 } args } {
source ./include.tcl
+ global noenv_messaging
+ set noenv_messaging 1
+
if { $is_windows9x_test == 1 } {
puts "Skipping replication test on Win 9x platform."
return
@@ -44,15 +46,17 @@ proc rep065 { method { nsites 3 } args } {
puts "Rep065: Testing the following $mvlen method/version pairs:"
puts "Rep065: $mvlist"
set count 1
+ set total [llength $mvlist]
set slist [setup_sites $nsites]
foreach i $mvlist {
- puts "Rep065: Test iteration $count: $i"
- rep065_sub $i $nsites $slist
+ puts "Rep065: Test iteration $count of $total: $i"
+ rep065_sub $count $i $nsites $slist
incr count
}
+ set noenv_messaging 0
}
-proc rep065_sub { mv nsites slist } {
+proc rep065_sub { iter mv nsites slist } {
source ./include.tcl
global machids
global util_path
@@ -60,13 +64,13 @@ proc rep065_sub { mv nsites slist } {
set method [lindex $mv 0]
set vers [lindex $mv 1]
- puts "\tRep065.a: Set up."
+ puts "\tRep065.$iter.a: Set up."
# Whatever directory we started this process from is referred
# to as the controlling directory. It will contain the message
# queue and start all the child processes.
set controldir [pwd]
env_cleanup $controldir/$testdir
- replsetup $controldir/$testdir/MSGQUEUEDIR
+ replsetup_noenv $controldir/$testdir/MSGQUEUEDIR
# Set up the historical build directory. The master will start
# running with historical code.
@@ -80,12 +84,13 @@ proc rep065_sub { mv nsites slist } {
set reputils_path $pwd/../test
set histdir $homedir/$vers/build_unix
if { [file exists $histdir] == 0 } {
- puts "Skipping iteration: cannot find historical version $vers."
+ puts -nonewline "Skipping iteration $iter: cannot find"
+ puts " historical version $vers."
return
}
if { [file exists $histdir/db_verify] == 0 } {
- puts -nonewline "Skipping iteration: historical version $vers"
- puts " is missing some executables. Is it built?"
+ puts -nonewline "Skipping iteration $iter: historical version"
+ puts " $vers is missing some executables. Is it built?"
return
}
@@ -117,7 +122,7 @@ proc rep065_sub { mv nsites slist } {
#
set count 1
foreach sitevers $slist {
- puts "\tRep065.b.$count: Run with sitelist $sitevers."
+ puts "\tRep065.b.$iter.$count: Run with sitelist $sitevers."
#
# Delete the marker directory each iteration so that
# we don't find old data in there.
@@ -193,7 +198,7 @@ proc rep065_sub { mv nsites slist } {
# non-existent clients. Just clean up everyone.
#
for { set i 0 } { $i < $nsites } { incr i } {
- replclear $siteid($i)
+ replclear_noenv $siteid($i)
}
#
@@ -203,7 +208,7 @@ proc rep065_sub { mv nsites slist } {
# old sites need to use old utilities.
#
set pids {}
- puts "\tRep065.c.$count: Verify all sites."
+ puts "\tRep065.c.$iter.$count: Verify all sites."
for { set i 0 } { $i < $nsites } { incr i } {
if { $siteid($i) == $meid } {
set state MASTER
@@ -215,7 +220,7 @@ proc rep065_sub { mv nsites slist } {
$controldir/$testdir/$count.S$i.ver \
SKIP \
VERIFY $state \
- {DB LOG} \
+ {LOG DB} \
$siteid($i) $allids $controldir \
$sitedir($i) $reputils_path &]
}
@@ -363,7 +368,7 @@ proc method_version { } {
global valid_methods
set meth $valid_methods
- set startmv { {hash db-4.2.52} {btree db-4.2.52} }
+ set startmv { {hash db-4.2.52} {btree db-4.2.52} {hash db-4.5.20} }
# Remove btree and hash from the method list, we're manually
# assigning those versions due to log/recovery record changes
@@ -376,9 +381,15 @@ proc method_version { } {
#
# Since we're explicitly testing 4.2.52 weight testing the other
# versions a bit more.
- set vers {db-4.2.52 db-4.3.29 db-4.4.20}
+ set vers {db-4.2.52 db-4.3.29 db-4.4.20 db-4.5.20}
set dbvlen [llength $vers]
- set vers_list { 0 0 1 1 1 1 2 2 2 2 }
+ #
+ # NOTE: The values in "vers_list" are indices into $vers above.
+ # Therefore, when you add a new version to $vers, you must
+ # add some new items to $vers_list to choose that index.
+ # Also need to add an entry for 'vtest' below.
+ #
+ set vers_list { 0 0 1 1 1 2 2 2 3 3 3 }
set vers_len [expr [llength $vers_list] - 1]
# Walk through the list of remaining methods and randomly
@@ -391,6 +402,7 @@ proc method_version { } {
set vtest(0) 1
set vtest(1) 0
set vtest(2) 0
+ set vtest(3) 0
foreach m $meth {
# Index into distribution list.
set vidx [berkdb random_int 0 $vers_len]
diff --git a/db/test/rep065script.tcl b/db/test/rep065script.tcl
index 34a599a4c..0aff5f0a3 100644
--- a/db/test/rep065script.tcl
+++ b/db/test/rep065script.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2006,2007 Oracle. All rights reserved.
#
-# $Id: rep065script.tcl,v 12.7 2006/09/08 20:32:18 bostic Exp $
+# $Id: rep065script.tcl,v 12.15 2007/07/05 15:43:29 sue Exp $
#
# rep065script - procs to use at each replication site in the
# replication upgrade test.
@@ -95,36 +94,42 @@ proc rep065scr_starttest { role oplist envid msgdir mydir allids markerfile } {
global qtestdir
global util_path
- puts "repladd $allids"
+ puts "repladd_noenv $allids"
set qtestdir $msgdir
foreach id $allids {
- repladd $id
+ repladd_noenv $id
}
set markerdb [berkdb_open -create -btree $markerfile]
error_check_good marker [is_valid_db $markerdb] TRUE
puts "set up env cmd"
set lockmax 40000
+ set logbuf [expr 16 * 1024]
+ set logmax [expr $logbuf * 4]
if { $role == "MASTER" } {
set rep_env_cmd "berkdb_env_noerr -create -home $mydir \
+ -log_max $logmax -log_buffer $logbuf \
-lock_max_objects $lockmax -lock_max_locks $lockmax \
-errpfx MASTER -txn -rep_master \
- -rep_transport \[list $envid replsend\]"
+ -rep_transport \[list $envid replsend_noenv\]"
# set rep_env_cmd "berkdb_env_noerr -create -home $mydir \
+# -log_max $logmax -log_buffer $logbuf \
# -lock_max_objects $lockmax -lock_max_locks $lockmax \
# -errpfx MASTER -txn -rep_master \
# -verbose {rep on} -errfile /dev/stderr \
-# -rep_transport \[list $envid replsend\]"
+# -rep_transport \[list $envid replsend_noenv\]"
} elseif { $role == "CLIENT" } {
set rep_env_cmd "berkdb_env_noerr -create -home $mydir \
+ -log_max $logmax -log_buffer $logbuf \
-lock_max_objects $lockmax -lock_max_locks $lockmax \
-errpfx CLIENT -txn -rep_client \
- -rep_transport \[list $envid replsend\]"
+ -rep_transport \[list $envid replsend_noenv\]"
# set rep_env_cmd "berkdb_env_noerr -create -home $mydir \
+# -log_max $logmax -log_buffer $logbuf \
# -lock_max_objects $lockmax -lock_max_locks $lockmax \
# -errpfx CLIENT -txn -rep_client \
# -verbose {rep on} -errfile /dev/stderr \
-# -rep_transport \[list $envid replsend\]"
+# -rep_transport \[list $envid replsend_noenv\]"
} else {
puts "FAIL: unrecognized replication role $role"
return
@@ -209,29 +214,29 @@ puts "$mydir: Looking for START$envid. Got $s"
puts "$mydir: Loop: Looking for START$envid. Got $s"
}
- puts "repladd $allids"
+ puts "repladd_noenv $allids"
set qtestdir $msgdir
foreach id $allids {
- repladd $id
+ repladd_noenv $id
}
puts "set up env cmd"
if { $role == "MASTER" } {
set rep_env_cmd "berkdb_env_noerr -home $mydir \
-errpfx MASTER -txn -rep_master \
- -rep_transport \[list $envid replsend\]"
+ -rep_transport \[list $envid replsend_noenv\]"
# set rep_env_cmd "berkdb_env_noerr -home $mydir \
# -errpfx MASTER -txn -rep_master \
# -verbose {rep on} -errfile /dev/stderr \
-# -rep_transport \[list $envid replsend\]"
+# -rep_transport \[list $envid replsend_noenv\]"
} elseif { $role == "CLIENT" } {
set rep_env_cmd "berkdb_env_noerr -home $mydir \
-errpfx CLIENT -txn -rep_client \
- -rep_transport \[list $envid replsend\]"
+ -rep_transport \[list $envid replsend_noenv\]"
# set rep_env_cmd "berkdb_env_noerr -home $mydir \
# -errpfx CLIENT -txn -rep_client \
# -verbose {rep on} -errfile /dev/stderr \
-# -rep_transport \[list $envid replsend\]"
+# -rep_transport \[list $envid replsend_noenv\]"
} else {
puts "FAIL: unrecognized replication role $role"
return
@@ -264,9 +269,10 @@ puts "$mydir: Loop: Looking for START$envid. Got $s"
process_msgs $envlist 0 NONE NONE 1
tclsleep 1
error_check_good marker_close [$markerdb close] 0
- replclear $envid from
+ replclear_noenv $envid from
tclsleep 1
- replclear $envid
+ replclear_noenv $envid
+ $repenv mpool_sync
error_check_good envclose [$repenv close] 0
}
@@ -358,16 +364,27 @@ puts "Histdir $histdir"
set msgtestdir $ctldir/TESTDIR
+global env
cd $histdir
+set stat [catch {eval exec ./db_printlog -V} result]
+if { $stat != 0 } {
+ set env(LD_LIBRARY_PATH) ":$histdir:$histdir/.libs:$env(LD_LIBRARY_PATH)"
+}
source ./include.tcl
source $test_path/test.tcl
if { [is_substr $histdir "db-4.2"] } {
source $ctldir/$test_path/testutils42.tcl
}
+# The global variable noenv_messaging must be set after sourcing
+# test.tcl or its value will be wrong.
+global noenv_messaging
+set noenv_messaging 1
+
set is_repchild 1
puts "Did args. now source reputils"
source $reputils_path/reputils.tcl
+source $reputils_path/reputilsnoenv.tcl
set markerdir $msgtestdir/MARKER
if { [file exists $markerdir] == 0 } {
diff --git a/db/test/rep066.tcl b/db/test/rep066.tcl
index e751e2e78..e5d2a615c 100644
--- a/db/test/rep066.tcl
+++ b/db/test/rep066.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2001-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2001,2007 Oracle. All rights reserved.
#
-# $Id: rep066.tcl,v 12.4 2006/09/08 20:32:18 bostic Exp $
+# $Id: rep066.tcl,v 12.10 2007/05/24 20:20:42 alanb Exp $
#
# TEST rep066
# TEST Replication and dead log handles.
@@ -56,6 +55,12 @@ proc rep066 { method { niter 10 } { tnum "066" } args } {
proc rep066_sub { method niter tnum logset recargs largs } {
global testdir
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
env_cleanup $testdir
@@ -71,10 +76,7 @@ proc rep066_sub { method niter tnum logset recargs largs } {
# four times the size of the in-memory log buffer.
set pagesize 4096
append largs " -pagesize $pagesize "
- set log_buf [expr $pagesize * 2]
- set log_max [expr $log_buf * 4]
- set m_logargs " -log_buffer $log_buf "
- set c_logargs " -log_buffer $log_buf "
+ set log_max [expr $pagesize * 8]
set m_logtype [lindex $logset 0]
set c_logtype [lindex $logset 1]
@@ -90,29 +92,18 @@ proc rep066_sub { method niter tnum logset recargs largs } {
# Later we'll open a 2nd handle to this env.
repladd 1
set ma_envcmd "berkdb_env_noerr -create $m_txnargs \
- $m_logargs -errpfx ENV0 -log_max $log_max \
+ $m_logargs -errpfx ENV0 -log_max $log_max $verbargs \
-home $masterdir -rep_transport \[list 1 replsend\]"
-# set ma_envcmd "berkdb_env_noerr -create $m_txnargs \
-# $m_logargs -log_max $log_max \
-# -errpfx ENV0 -verbose {rep on} -errfile /dev/stderr \
-# -home $masterdir -rep_transport \[list 1 replsend\]"
set env0 [eval $ma_envcmd $recargs -rep_master]
set masterenv $env0
- error_check_good master_env [is_valid_env $env0] TRUE
# Open a client.
repladd 2
set cl_envcmd "berkdb_env_noerr -create $c_txnargs \
- $c_logargs -errpfx ENV1 -log_max $log_max \
+ $c_logargs -errpfx ENV1 -log_max $log_max $verbargs \
-home $clientdir -rep_transport \[list 2 replsend\]"
-# set cl_envcmd "berkdb_env_noerr -create $c_txnargs \
-# $c_logargs -log_max $log_max \
-# -errpfx ENV1 -verbose {rep on} -errfile /dev/stderr \
-# -home $clientdir -rep_transport \[list 2 replsend\]"
set env1 [eval $cl_envcmd $recargs -rep_client]
set clientenv $env1
- error_check_good client_env [is_valid_env $env1] TRUE
-
# Bring the clients online by processing the startup messages.
set envlist "{$env0 1} {$env1 2}"
@@ -149,8 +140,8 @@ proc rep066_sub { method niter tnum logset recargs largs } {
set omethod [convert_method $method]
set txn [$masterenv txn]
error_check_good txn [is_valid_txn $txn $masterenv] TRUE
- set db [eval {berkdb_open_noerr -env $masterenv -txn $txn \
- -create -mode 0644} $largs $omethod $testfile2]
+ set db [eval {berkdb_open_noerr -env $masterenv -errpfx MASTER \
+ -txn $txn -create -mode 0644} $largs $omethod $testfile2]
error_check_good dbopen [is_valid_db $db] TRUE
# Flush on the 2nd handle
@@ -159,6 +150,12 @@ proc rep066_sub { method niter tnum logset recargs largs } {
set lf2 [stat_field $2ndenv log_stat "Times log flushed to disk"]
error_check_bad log_flush $lf $lf2
+ # The detection of dead log handle is based on a 1-second resolution
+ # timestamp comparison. Now that we've established the threatening
+ # source of the dead handle in $2ndenv, wait a moment to make sure that
+ # the fresh handle that we're about to create gets a later timestamp.
+ tclsleep 1
+
# Resolve the txn and close the database
error_check_good commit [$txn commit] 0
error_check_good close [$db close] 0
@@ -202,8 +199,8 @@ proc rep066_sub { method niter tnum logset recargs largs } {
puts "\tRep$tnum.f: Create some log records."
set txn [$masterenv txn]
error_check_good txn [is_valid_txn $txn $masterenv] TRUE
- set db [eval {berkdb_open_noerr -env $masterenv -txn $txn \
- -create -mode 0644} $largs $omethod $testfile2]
+ set db [eval {berkdb_open_noerr -env $masterenv -errpfx MASTER \
+ -txn $txn -create -mode 0644} $largs $omethod $testfile2]
error_check_good dbopen [is_valid_db $db] TRUE
process_msgs $envlist
diff --git a/db/test/rep067.tcl b/db/test/rep067.tcl
new file mode 100644
index 000000000..439a95b73
--- /dev/null
+++ b/db/test/rep067.tcl
@@ -0,0 +1,361 @@
+# See the file LICENSE for redistribution information.
+#
+# Copyright (c) 2002,2007 Oracle. All rights reserved.
+#
+# $Id: rep067.tcl,v 1.8 2007/06/15 14:39:51 carol Exp $
+#
+# TEST rep067
+# TEST Replication election test with large timeouts.
+# TEST
+# TEST Test replication elections among clients with widely varying
+# TEST timeouts. This test is used to simulate a customer that
+# TEST wants to force full participation in an election, but only
+# TEST if all sites are present (i.e. if all sites are restarted
+# TEST together). If any site has already been part of the group,
+# TEST then we want to be able to elect a master based on majority.
+# TEST Using varied timeouts, we can force full participation if
+# TEST all sites are present with "long_timeout" amount of time and
+# TEST then revert to majority.
+# TEST
+# TEST A long_timeout would be several minutes whereas a normal
+# TEST short timeout would be a few seconds.
+#
+proc rep067 { method args } {
+
+ source ./include.tcl
+ if { $is_windows9x_test == 1 } {
+ puts "Skipping replication test on Win 9x platform."
+ return
+ }
+
+ # Skip for all methods except btree.
+ if { $checking_valid_methods } {
+ set test_methods { btree }
+ return $test_methods
+ }
+ if { [is_btree $method] == 0 } {
+ puts "Rep067: Skipping for method $method."
+ return
+ }
+
+ set tnum "067"
+ set niter 10
+ set nclients 3
+ set logsets [create_logsets [expr $nclients + 1]]
+
+ # We don't want to run this with -recover - it takes too
+ # long and doesn't cover any new ground.
+ set recargs ""
+ foreach l $logsets {
+ puts "Rep$tnum ($recargs): Replication election\
+ mixed long timeouts with $nclients clients."
+ puts -nonewline "Rep$tnum: Started at: "
+ puts [clock format [clock seconds] -format "%H:%M %D"]
+ puts "Rep$tnum: Master logs are [lindex $l 0]"
+ for { set i 0 } { $i < $nclients } { incr i } {
+ puts "Rep$tnum: Client $i logs are\
+ [lindex $l [expr $i + 1]]"
+ }
+ rep067_sub $method $tnum \
+ $niter $nclients $l $recargs $args
+ }
+}
+
+proc rep067_sub { method tnum niter nclients logset recargs largs } {
+ source ./include.tcl
+ global rand_init
+ error_check_good set_random_seed [berkdb srand $rand_init] 0
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
+
+ env_cleanup $testdir
+
+ set qdir $testdir/MSGQUEUEDIR
+ replsetup $qdir
+
+ set masterdir $testdir/MASTERDIR
+ file mkdir $masterdir
+ set m_logtype [lindex $logset 0]
+ set m_logargs [adjust_logargs $m_logtype]
+ set m_txnargs [adjust_txnargs $m_logtype]
+
+ for { set i 0 } { $i < $nclients } { incr i } {
+ set clientdir($i) $testdir/CLIENTDIR.$i
+ file mkdir $clientdir($i)
+ set c_logtype($i) [lindex $logset [expr $i + 1]]
+ set c_logargs($i) [adjust_logargs $c_logtype($i)]
+ set c_txnargs($i) [adjust_txnargs $c_logtype($i)]
+ }
+
+ # Open a master.
+ repladd 1
+ set env_cmd(M) "berkdb_env_noerr -create -log_max 1000000 \
+ -event rep_event \
+ -home $masterdir $m_logargs $verbargs -errpfx MASTER \
+ $m_txnargs -rep_master -rep_transport \[list 1 replsend\]"
+ set masterenv [eval $env_cmd(M) $recargs]
+
+ set envlist {}
+ lappend envlist "$masterenv 1"
+
+ # Open the clients.
+ for { set i 0 } { $i < $nclients } { incr i } {
+ set envid [expr $i + 2]
+ repladd $envid
+ set env_cmd($i) "berkdb_env_noerr -create \
+ -event rep_event -home $clientdir($i) \
+ $c_logargs($i) $c_txnargs($i) -rep_client $verbargs \
+ -errpfx CLIENT.$i -rep_transport \[list $envid replsend\]"
+ set clientenv($i) [eval $env_cmd($i) $recargs]
+ lappend envlist "$clientenv($i) $envid"
+ }
+
+ # Process startup messages
+ process_msgs $envlist
+ # Run a modified test001 in the master.
+ puts "\tRep$tnum.a: Running test001 in replicated env."
+ eval rep_test $method $masterenv NULL $niter 0 0 0 0 $largs
+
+ # Process all the messages and close the master.
+ process_msgs $envlist
+ error_check_good masterenv_close [$masterenv close] 0
+ set envlist [lreplace $envlist 0 0]
+
+ #
+ # Make sure all clients are starting with no pending messages.
+ #
+ for { set i 0 } { $i < $nclients } { incr i } {
+ replclear [expr $i + 2]
+ }
+
+ #
+ # Run the test for all different timoeut combinations.
+ #
+ set c0to { long medium short }
+ set c1to { medium short long }
+ set c2to { short medium long }
+ set numtests [expr [llength $c0to] * [llength $c1to] * \
+ [llength $c2to]]
+ set m "Rep$tnum"
+ set count 0
+ set last_win -1
+ set win -1
+ set quorum { majority all }
+ foreach q $quorum {
+ puts "\t$m.b: Starting $numtests election with\
+ timeout tests: $q must participate"
+ foreach c0 $c0to {
+ foreach c1 $c1to {
+ foreach c2 $c2to {
+ set elist [list $c0 $c1 $c2]
+ rep067_elect env_cmd envlist $qdir \
+ $m $count win last_win $elist \
+ $q $logset
+ incr count
+ }
+ }
+ }
+ }
+
+ foreach pair $envlist {
+ set cenv [lindex $pair 0]
+ error_check_good cenv_close [$cenv close] 0
+ }
+
+ replclose $testdir/MSGQUEUEDIR
+ puts -nonewline \
+ "Rep$tnum: Completed at: "
+ puts [clock format [clock seconds] -format "%H:%M %D"]
+}
+
+proc rep067_elect { ecmd celist qdir msg count \
+ winner lsn_lose elist quorum logset} {
+ global elect_timeout elect_serial
+ global timeout_ok
+ upvar $ecmd env_cmd
+ upvar $celist envlist
+ upvar $winner win
+ upvar $lsn_lose last_win
+
+ # Set the proper value for the first time through the
+ # loop. On subsequent passes, timeout_ok will already
+ # be set.
+ if { [info exists timeout_ok] == 0 } {
+ set timeout_ok 0
+ }
+
+ set nclients [llength $elist]
+ set nsites [expr $nclients + 1]
+
+ #
+ # Set long timeout to 3 minutes (180 sec).
+ # Set medium timeout to half the long timeout.
+ # Set short timeout to 10 seconds.
+ set long_timeout 180000000
+ set med_timeout [expr $long_timeout / 2]
+ set short_timeout 10000000
+ set cl_list {}
+ foreach pair $envlist {
+ set id [lindex $pair 1]
+ set i [expr $id - 2]
+ set clientenv($i) [lindex $pair 0]
+ set to [lindex $elist $i]
+ if { $to == "long" } {
+ set elect_timeout($i) $long_timeout
+ } elseif { $to == "medium" } {
+ set elect_timeout($i) $med_timeout
+ } elseif { $to == "short" } {
+ set elect_timeout($i) $short_timeout
+ }
+ set elect_pipe($i) INVALID
+ set err_cmd($i) "none"
+ replclear $id
+ lappend cl_list $i
+ }
+
+ # Select winner. We want to test biggest LSN wins, and secondarily
+ # highest priority wins. If we already have a master, make sure
+ # we don't start a client in that master.
+ set elector 0
+ if { $win == -1 } {
+ if { $last_win != -1 } {
+ set cl_list [lreplace $cl_list $last_win $last_win]
+ set elector $last_win
+ }
+ set windex [berkdb random_int 0 [expr [llength $cl_list] - 1]]
+ set win [lindex $cl_list $windex]
+ } else {
+ # Easy case, if we have a master, the winner must be the
+ # same one as last time, just use $win.
+ # If client0 is the current existing master, start the
+ # election in client 1.
+ if {$win == 0} {
+ set elector 1
+ }
+ }
+ # Winner has priority 100. If we are testing LSN winning, the
+ # make sure the lowest LSN client has the highest priority.
+ # Everyone else has priority 10.
+ for { set i 0 } { $i < $nclients } { incr i } {
+ set crash($i) 0
+ if { $i == $win } {
+ set pri($i) 100
+ } elseif { $i == $last_win } {
+ set pri($i) 200
+ } else {
+ set pri($i) 10
+ }
+ }
+
+ puts "\t$msg.b.$count: Start election (win=client$win) $elist"
+ set msg $msg.c.$count
+ #
+ # If we want all sites, then set nsites and nvotes the same.
+ # otherwise, we need to increase nsites to account
+ # for the master that is "down".
+ #
+ if { $quorum == "all" } {
+ set nsites $nclients
+ } else {
+ set nsites [expr $nclients + 1]
+ }
+ set nvotes $nclients
+ run_election env_cmd envlist err_cmd pri crash \
+ $qdir $msg $elector $nsites $nvotes $nclients $win \
+ 0 "test.db" 0 $timeout_ok
+ #
+ # Sometimes test elections with an existing master.
+ # Other times test elections without master by closing the
+ # master we just elected and creating a new client.
+ # We want to weight it to close the new master. So, use
+ # a list to cause closing about 70% of the time.
+ #
+ set close_list { 0 0 0 1 1 1 1 1 1 1}
+ set close_len [expr [llength $close_list] - 1]
+ set close_index [berkdb random_int 0 $close_len]
+
+ # Unless we close the master, the next election will time out.
+ set timeout_ok 1
+
+ if { [lindex $close_list $close_index] == 1 } {
+ # Declare that we expect the next election to succeed.
+ set timeout_ok 0
+ puts -nonewline "\t\t$msg: Closing "
+ error_check_good newmaster_flush [$clientenv($win) log_flush] 0
+ error_check_good newmaster_close [$clientenv($win) close] 0
+ #
+ # If the next test should win via LSN then remove the
+ # env before starting the new client so that we
+ # can guarantee this client doesn't win the next one.
+ set lsn_win { 0 0 0 0 1 1 1 1 1 1 }
+ set lsn_len [expr [llength $lsn_win] - 1]
+ set lsn_index [berkdb random_int 0 $lsn_len]
+ set rec_arg ""
+ set win_inmem [expr [string compare [lindex $logset \
+ [expr $win + 1]] in-memory] == 0]
+ if { [lindex $lsn_win $lsn_index] == 1 } {
+ set last_win $win
+ set dirindex [lsearch -exact $env_cmd($win) "-home"]
+ incr dirindex
+ set lsn_dir [lindex $env_cmd($win) $dirindex]
+ env_cleanup $lsn_dir
+ puts -nonewline "and cleaning "
+ } else {
+ #
+ # If we're not cleaning the env, decide if we should
+ # run recovery upon reopening the env. This causes
+ # two things:
+ # 1. Removal of region files which forces the env
+ # to read its __db.rep.egen file.
+ # 2. Adding a couple log records, so this client must
+ # be the next winner as well since it'll have the
+ # biggest LSN.
+ #
+ set rec_win { 0 0 0 0 0 0 1 1 1 1 }
+ set rec_len [expr [llength $rec_win] - 1]
+ set rec_index [berkdb random_int 0 $rec_len]
+ if { [lindex $rec_win $rec_index] == 1 } {
+ puts -nonewline "and recovering "
+ set rec_arg "-recover"
+ #
+ # If we're in memory and about to run
+ # recovery, we force ourselves not to win
+ # the next election because recovery will
+ # blow away the entire log in memory.
+ # However, we don't skip this entirely
+ # because we still want to force reading
+ # of __db.rep.egen.
+ #
+ if { $win_inmem } {
+ set last_win $win
+ } else {
+ set last_win -1
+ }
+ } else {
+ set last_win -1
+ }
+ }
+ puts "new master, new client $win"
+ set clientenv($win) [eval $env_cmd($win) $rec_arg]
+ error_check_good cl($win) [is_valid_env $clientenv($win)] TRUE
+ #
+ # Since we started a new client, we need to replace it
+ # in the message processing list so that we get the
+ # new Tcl handle name in there.
+ set newelector "$clientenv($win) [expr $win + 2]"
+ set envlist [lreplace $envlist $win $win $newelector]
+ if { $rec_arg == "" || $win_inmem } {
+ set win -1
+ }
+ #
+ # Since we started a new client we want to give them
+ # all a chance to process everything outstanding before
+ # the election on the next iteration.
+ #
+ process_msgs $envlist
+ }
+}
diff --git a/db/test/rep068.tcl b/db/test/rep068.tcl
new file mode 100644
index 000000000..bff24dc55
--- /dev/null
+++ b/db/test/rep068.tcl
@@ -0,0 +1,187 @@
+# See the file LICENSE for redistribution information.
+#
+# Copyright (c) 2006,2007 Oracle. All rights reserved.
+#
+# $Id: rep068.tcl,v 1.10 2007/07/11 02:15:03 moshen Exp $
+#
+# TEST rep068
+# TEST Verify replication of dbreg operations does not hang clients.
+# TEST In a simple replication group, create a database with very
+# TEST little data. With DB_TXN_NOSYNC the database can be created
+# TEST at the client even though the log is not flushed. If we crash
+# TEST and restart, the application of the log starts over again, even
+# TEST though the database is still there. The application can open
+# TEST the database before replication tries to re-apply the create.
+# TEST This causes a hang as replication waits to be able to get a
+# TEST handle lock.
+# TEST
+# TEST Run for btree only because access method shouldn't matter.
+# TEST
+proc rep068 { method { tnum "068" } args } {
+
+ source ./include.tcl
+
+ if { $is_windows9x_test == 1 } {
+ puts "Skipping replication test on Win9x platform."
+ return
+ }
+
+ # Run for btree methods only.
+ if { $checking_valid_methods } {
+ set test_methods {}
+ foreach method $valid_methods {
+ if { [is_btree $method] } {
+ lappend test_methods $method
+ }
+ }
+ return $test_methods
+ }
+ if { [is_btree $method] == 0 } {
+ puts "Rep$tnum: skipping for non-btree method."
+ return
+ }
+
+ set args [convert_args $method $args]
+
+ set logsets [create_logsets 2]
+
+ # Run the body of the test with/without recovery and txn nosync.
+ foreach s {"nosync" ""} {
+ foreach r $test_recopts {
+ foreach l $logsets {
+ set logindex [lsearch -exact $l "in-memory"]
+ if { (($r == "-recover") || ($s == "nosync"))
+ && ($logindex != -1) } {
+ puts "Skipping test with -recover or\
+ nosync for in-memory logs."
+ continue
+ }
+ # Temporary note: at the moment, this test
+ # fails when both "-recover" and
+ # "nosync" are in use, because of problems
+ # described in SR #15071.
+ if { ($r == "-recover") && ($s == "nosync") } {
+ puts "Skipping test with -recover or\
+ nosync."
+ continue
+ }
+ puts "Rep$tnum ($method $r $s):\
+ Test of dbreg lock conflicts at client"
+ puts "Rep$tnum: Master logs are [lindex $l 0]"
+ puts "Rep$tnum: Client logs are [lindex $l 1]"
+ rep068_sub $method $tnum $l $r $s $args
+ }
+ }
+ }
+}
+
+proc rep068_sub { method tnum logset recargs nosync largs } {
+ global testdir
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
+
+ set KEY "any old key"
+ set DATA "arbitrary data"
+ set DBNAME "test.db"
+
+ set nosync_args [subst {-txn $nosync}]
+
+ env_cleanup $testdir
+
+ replsetup $testdir/MSGQUEUEDIR
+
+ set masterdir $testdir/MASTERDIR
+ set clientdir $testdir/CLIENTDIR
+
+ file mkdir $masterdir
+ file mkdir $clientdir
+
+ set m_logtype [lindex $logset 0]
+ set c_logtype [lindex $logset 1]
+
+ # In-memory logs require a large log buffer, and cannot
+ # be used with -txn nosync. Adjust the args for master
+ # and client
+ # There is no need to adjust txn args for this test since
+ # the txn args are explicitly set.
+ set m_logargs [adjust_logargs $m_logtype]
+ set c_logargs [adjust_logargs $c_logtype]
+
+ # Open a master.
+ repladd 1
+ set ma_envcmd "berkdb_env_noerr -create $m_logargs \
+ $verbargs -errpfx MASTER \
+ -home $masterdir -rep_transport \[list 1 replsend\]"
+ set masterenv [eval $ma_envcmd $recargs $nosync_args -rep_master]
+
+ # Open a client
+ repladd 2
+ set cl_envcmd "berkdb_env_noerr -create $c_logargs \
+ $verbargs -errpfx CLIENT \
+ -home $clientdir -rep_transport \[list 2 replsend\]"
+ set clientenv [eval $cl_envcmd $recargs $nosync_args -rep_client]
+
+ # Bring the client online by processing the startup messages.
+ set envlist "{$masterenv 1} {$clientenv 2}"
+ process_msgs $envlist
+
+ # Open/create a database, maybe put just one record in it
+ # abandon the client env, and restart it. Before trying to sync,
+ # open the database at the client.
+
+ set db [berkdb_open_noerr -auto_commit \
+ -btree -create -env $masterenv $DBNAME]
+ set ret [$db put $KEY $DATA]
+ error_check_good initial_insert $ret 0
+ process_msgs $envlist
+
+ # Simulate a crash and restart of the client, by simply abandoning
+ # the old environment handle and opening a new one.
+ #
+ puts "\tRep$tnum.a: Open a fresh handle onto the client env."
+ set origclientenv $clientenv
+ set clientenv [eval $cl_envcmd $recargs $nosync_args -rep_client]
+ set envlist "{$masterenv 1} {$clientenv 2}"
+
+ # We expect the db creation operation to have been flushed to the log,
+ # so that at this point recovery will have removed the database (since
+ # we expect the transaction did not commit). But the bug we are testing
+ # for is that the applying of replicated transactions hangs if the
+ # database turns out to be present. Thus, for a stringent test, we want
+ # to at least try to open the database, and "dare ourselves" not to hang
+ # if it turns out to be present.
+ #
+ if {[catch {set client_db [berkdb_open_noerr \
+ -auto_commit -unknown -env $clientenv $DBNAME]} result] == 0} {
+ puts "\t\tRep$tnum.a(ii): warning: db open at restarted client\
+ succeeded unexpectedly"
+ } else {
+ set client_db "NULL"
+ }
+
+ puts "\tRep$tnum.b: Attempting sync-up with db handle open."
+ process_msgs $envlist
+ puts "\tRep$tnum.c: Sync-up completed."
+
+ if {$client_db == "NULL"} {
+ set client_db [berkdb_open_noerr \
+ -auto_commit -unknown -env $clientenv $DBNAME]
+ }
+ set result [$client_db get $KEY]
+ error_check_good one_pair [llength $result] 1
+ set val [lindex $result 0 1]
+ error_check_good "value still matches" $val $DATA
+ puts "\tRep$tnum.d: Confirmed correct data."
+
+ $client_db close
+ $clientenv close
+ catch { $origclientenv close } res
+
+ $db close
+ $masterenv close
+ replclose $testdir/MSGQUEUEDIR
+}
diff --git a/db/test/rep069.tcl b/db/test/rep069.tcl
new file mode 100644
index 000000000..6511397f8
--- /dev/null
+++ b/db/test/rep069.tcl
@@ -0,0 +1,260 @@
+# See the file LICENSE for redistribution information.
+#
+# Copyright (c) 2004,2007 Oracle. All rights reserved.
+#
+# $Id: rep069.tcl,v 12.5 2007/06/15 14:39:51 carol Exp $
+#
+# TEST rep069
+# TEST Test of internal initialization and elections.
+# TEST
+# TEST If a client is in a recovery mode of any kind, it
+# TEST participates in elections at priority 0 so it can
+# TEST never be elected master.
+#
+proc rep069 { method { niter 200 } { tnum "069" } args } {
+
+ source ./include.tcl
+ if { $is_windows9x_test == 1 } {
+ puts "Skipping replication test on Win 9x platform."
+ return
+ }
+ if { $checking_valid_methods } {
+ set test_methods { btree }
+ return $test_methods
+ }
+ if { [is_btree $method] == 0 } {
+ puts "Rep$tnum: Skipping for method $method."
+ return
+ }
+
+ set args [convert_args $method $args]
+ set saved_args $args
+
+ set logsets [create_logsets 2]
+
+ foreach l $logsets {
+ set args $saved_args
+ puts "Rep$tnum ($method $args):\
+ Test internal initialization and elections."
+ puts "Rep$tnum: Master logs are [lindex $l 0]"
+ puts "Rep$tnum: Client logs are [lindex $l 1]"
+ rep069_sub $method $niter $tnum $l $args
+ }
+}
+
+proc rep069_sub { method niter tnum logset largs } {
+ global testdir
+ global util_path
+ global rep_verbose
+ global timeout_ok
+
+ env_cleanup $testdir
+
+ set qdir $testdir/MSGQUEUEDIR
+ replsetup $qdir
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose { rep on } "
+ }
+ set masterdir $testdir/MASTERDIR
+ file mkdir $masterdir
+
+ set nclients 2
+ for { set i 0 } { $i < $nclients } { incr i } {
+ set clientdir($i) $testdir/CLIENTDIR.$i
+ file mkdir $clientdir($i)
+ }
+
+ # Log size is small so we quickly create more than one, and
+ # can easily force internal initialization.
+ set pagesize 4096
+ append largs " -pagesize $pagesize "
+ set log_max [expr $pagesize * 8]
+
+ set m_logtype [lindex $logset 0]
+ set c_logtype [lindex $logset 1]
+
+ # In-memory logs cannot be used with -txn nosync.
+ set m_logargs [adjust_logargs $m_logtype]
+ set c_logargs [adjust_logargs $c_logtype]
+ set m_txnargs [adjust_txnargs $m_logtype]
+ set c_txnargs [adjust_txnargs $c_logtype]
+
+ # Open a master.
+ set envlist {}
+ repladd 1
+ set ma_envcmd "berkdb_env_noerr -create $m_txnargs \
+ $m_logargs -log_max $log_max -event rep_event $verbargs \
+ -home $masterdir -rep_transport \[list 1 replsend\]"
+ set masterenv [eval $ma_envcmd -recover -rep_master]
+ lappend envlist "$masterenv 1"
+
+ # Open clients.
+ for { set i 0 } { $i < $nclients } { incr i } {
+ set envid [expr $i + 2]
+ repladd $envid
+ set envcmd($i) "berkdb_env_noerr -create \
+ $c_txnargs $c_logargs -log_max $log_max \
+ -home $clientdir($i) -event rep_event $verbargs \
+ -rep_transport \[list $envid replsend\]"
+ set clientenv($i) [eval $envcmd($i) -recover -rep_client]
+ lappend envlist "$clientenv($i) $envid"
+ }
+
+ # Bring the clients online by processing the startup messages.
+ process_msgs $envlist
+
+ # Clobber replication's 30-second anti-archive timer, which will have
+ # been started by client sync-up internal init, so that we can do a
+ # db_archive in a moment.
+ #
+ $masterenv test force noarchive_timeout
+
+ # Run rep_test in the master and update clients.
+ puts "\tRep$tnum.a: Running rep_test in replicated env."
+ set start 0
+ eval rep_test \
+ $method $masterenv NULL $niter $start $start 0 0 $largs
+ incr start $niter
+ process_msgs $envlist 0 NONE err
+ error_check_good process_msgs $err 0
+
+ # Find out what exists on the client. We need to loop until
+ # the first master log file > last client log file. The two
+ # clients should be the same, so just inspect one.
+ puts "\tRep$tnum.b: Close clients."
+ if { $c_logtype != "in-memory" } {
+ set res [eval exec $util_path/db_archive -l -h $clientdir(0)]
+ set res [eval exec $util_path/db_archive -l -h $clientdir(1)]
+ }
+ set last_client_log [get_logfile $clientenv(1) last]
+ for { set i 0 } { $i < $nclients } { incr i } {
+ error_check_good client_close [$clientenv($i) close] 0
+ }
+ set envlist [lreplace $envlist 1 2]
+
+ # Run the master forward.
+ set stop 0
+ while { $stop == 0 } {
+ puts "\tRep$tnum.c: Running rep_test in replicated env."
+ eval rep_test \
+ $method $masterenv NULL $niter $start $start 0 0 $largs
+ incr start $niter
+
+ puts "\tRep$tnum.d: Run db_archive on master."
+ if { $m_logtype != "in-memory"} {
+ set res [eval \
+ exec $util_path/db_archive -d -h $masterdir]
+ }
+ set first_master_log [get_logfile $masterenv first]
+ if { $first_master_log > $last_client_log } {
+ set stop 1
+ }
+ }
+
+ for { set i 0 } { $i < $nclients } { incr i } {
+ set envid [expr $i + 2]
+ replclear $envid
+ }
+
+ # Reopen clients.
+ puts "\tRep$tnum.e: Reopen clients."
+ for { set i 0 } { $i < $nclients } { incr i } {
+ env_cleanup $clientdir($i)
+ set clientenv($i) [eval $envcmd($i) -recover -rep_client]
+ set envid [expr $i + 2]
+ lappend envlist "$clientenv($i) $envid"
+ }
+
+ # Run proc_msgs_once until both clients are in internal
+ # initialization.
+ #
+ # We figure out whether each client is in initialization
+ # by searching for any of the flags REP_F_RECOVER_UPDATE,
+ # REP_F_RECOVER_PAGE, and REP_F_RECOVER_LOG. As soon as
+ # a client produces one of these, it's marked as being
+ # in initialization, and stays that way even if it proceeds
+ # further, but we don't exit the loop until all clients
+ # have gotten into initialization.
+ #
+ puts "\tRep$tnum.f:\
+ Run proc_msgs_once until all clients enter internal init."
+ set in_init 0
+ for { set i 0 } { $i < $nclients } { incr i } {
+ set initializing($i) 0
+ }
+
+ while { $in_init != 1 } {
+ set nproced [proc_msgs_once $envlist NONE err]
+ for { set i 0 } { $i < $nclients } { incr i } {
+ set stat($i) \
+ [exec $util_path/db_stat -r -R A -h $clientdir(1)]
+ if {[is_substr $stat($i) "REP_F_RECOVER_UPDATE"] } {
+ set initializing($i) 1
+ }
+ if {[is_substr $stat($i) "REP_F_RECOVER_PAGE"] } {
+ set initializing($i) 1
+ }
+ if {[is_substr $stat($i) "REP_F_RECOVER_LOG"] } {
+ set initializing($i) 1
+ }
+ }
+ set in_init 1
+ for { set i 0 } { $i < $nclients } { incr i } {
+ if { $initializing($i) == 0 } {
+ set in_init 0
+ }
+ }
+ }
+
+ # Call an election. It should fail, because both clients
+ # are in internal initialization and therefore not electable.
+ # Indicate failure with winner = -2.
+ # First, close the master.
+ error_check_good masterenv_close [$masterenv close] 0
+ set envlist [lreplace $envlist 0 0]
+
+ puts "\tRep$tnum.g: Run election; no one will get elected."
+ set m "Rep$tnum.g"
+ set nsites $nclients
+ set nvotes $nclients
+ set winner -2
+ set elector 0
+ for { set i 0 } { $i < $nclients } { incr i } {
+ set err_cmd($i) "none"
+ set crash($i) 0
+ set pri($i) 10
+ }
+
+ # This election will time out instead of succeeding.
+ set timeout_ok 1
+ run_election envcmd envlist err_cmd pri crash \
+ $qdir $m $elector $nsites $nvotes $nclients $winner \
+ 0 "test.db" 0 $timeout_ok
+
+ # Verify that each client saw the message that no
+ # electable site was found.
+ puts "\tRep$tnum.h: Check for right error message."
+ for { set i 0 } { $i < $nclients } { incr i } {
+ set none_electable 0
+ set id [expr $i + 1]
+ set fd [open $testdir/ELECTION_ERRFILE.$id r]
+ while { [gets $fd str] != -1 } {
+ if { [is_substr $str "No electable site found"] == 1 } {
+ set none_electable 1
+ break
+ }
+ }
+ close $fd
+ error_check_good none_electable $none_electable 1
+ }
+
+ # Clean up for the next pass.
+ for { set i 0 } { $i < $nclients } { incr i } {
+ $clientenv($i) close
+ }
+
+ replclose $testdir/MSGQUEUEDIR
+}
+
diff --git a/db/test/rep070.tcl b/db/test/rep070.tcl
new file mode 100644
index 000000000..274449a2b
--- /dev/null
+++ b/db/test/rep070.tcl
@@ -0,0 +1,160 @@
+# See the file LICENSE for redistribution information.
+#
+# Copyright (c) 2004,2007 Oracle. All rights reserved.
+#
+# $Id: rep070.tcl,v 1.5 2007/05/17 18:17:21 bostic Exp $
+#
+# TEST rep070
+# TEST Test of startup_done condition with idle master.
+# TEST
+# TEST Join a client to an existing master, and verify that
+# TEST the client detects startup_done even if the master
+# TEST does not execute any new transactions.
+#
+proc rep070 { method { niter 200 } { tnum "070" } args } {
+
+ source ./include.tcl
+
+ # Run for btree and queue only.
+ if { $checking_valid_methods } {
+ set test_methods {}
+ foreach method $valid_methods {
+ if { [is_btree $method] == 1 || [is_queue $method] == 1 } {
+ lappend test_methods $method
+ }
+ }
+ return $test_methods
+ }
+ if { [is_btree $method] != 1 && [is_queue $method] != 1 } {
+ puts "Skipping rep070 for method $method."
+ return
+ }
+
+ set args [convert_args $method $args]
+ set logsets [create_logsets 2]
+
+ # Run the body of the test with and without recovery,
+ # and with and without cleaning. Skip recovery with in-memory
+ # logging - it doesn't make sense.
+ #
+ foreach r $test_recopts {
+ foreach l $logsets {
+ set logindex [lsearch -exact $l "in-memory"]
+ if { $r == "-recover" && $logindex != -1 } {
+ puts "Skipping rep$tnum for -recover\
+ with in-memory logs."
+ continue
+ }
+ puts "Rep$tnum ($method $r $args): Test of\
+ internal initialization and startup_done."
+ puts "Rep$tnum: Master logs are [lindex $l 0]"
+ puts "Rep$tnum: Client logs are [lindex $l 1]"
+ rep070_sub $method $niter $tnum $l $r $args
+ }
+ }
+}
+
+proc rep070_sub { method niter tnum logset recargs largs } {
+ source ./include.tcl
+ global startp_done
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
+
+ env_cleanup $testdir
+
+ replsetup $testdir/MSGQUEUEDIR
+
+ set masterdir $testdir/MASTERDIR
+ set clientdir $testdir/CLIENTDIR
+
+ file mkdir $masterdir
+ file mkdir $clientdir
+
+ set m_logtype [lindex $logset 0]
+ set c_logtype [lindex $logset 1]
+
+ # In-memory logs cannot be used with -txn nosync.
+ set m_logargs [adjust_logargs $m_logtype]
+ set c_logargs [adjust_logargs $c_logtype]
+ set m_txnargs [adjust_txnargs $m_logtype]
+ set c_txnargs [adjust_txnargs $c_logtype]
+
+ # Open a master.
+ repladd 1
+ set ma_envcmd "berkdb_env_noerr -create $m_txnargs \
+ $m_logargs $verbargs -errpfx MASTER \
+ -home $masterdir -rep_transport \[list 1 replsend\]"
+ set masterenv [eval $ma_envcmd $recargs -rep_master]
+
+ # Put some data into the database
+ puts "\tRep$tnum.a: Run rep_test in master env."
+ set start 0
+ eval rep_test $method $masterenv NULL $niter $start $start 0 0 $largs
+
+ # Open a client
+ puts "\tRep$tnum.b: Open client."
+ repladd 2
+ set cl_envcmd "berkdb_env_noerr -create $c_txnargs \
+ $c_logargs $verbargs -errpfx CLIENT \
+ -home $clientdir -rep_transport \[list 2 replsend\]"
+ set clientenv [eval $cl_envcmd $recargs -rep_client]
+
+ set envlist "{$masterenv 1} {$clientenv 2}"
+ rep070_verify_startup_done $clientenv $envlist
+
+ # Close and re-open the client. What happens next depends on whether we
+ # used -recover.
+ #
+ $clientenv close
+ set clientenv [eval $cl_envcmd $recargs -rep_client]
+ set envlist "{$masterenv 1} {$clientenv 2}"
+ if { $recargs == "-recover" } {
+ rep070_verify_startup_done $clientenv $envlist
+ } else {
+ error_check_good \
+ startup_still_done [rep070_startup_done $clientenv] 1
+ }
+
+ rep_verify $masterdir $masterenv $clientdir $clientenv 1
+
+ check_log_location $masterenv
+ check_log_location $clientenv
+
+ error_check_good masterenv_close [$masterenv close] 0
+ error_check_good clientenv_close [$clientenv close] 0
+ replclose $testdir/MSGQUEUEDIR
+}
+
+# Verify that startup_done starts off false, then turns to true at some point,
+# and thereafter never reverts to false.
+#
+proc rep070_verify_startup_done { clientenv envlist } {
+ # Initially we should not yet have startup_done.
+ set got_startup_done [rep070_startup_done $clientenv]
+ error_check_good startup_not_done_yet $got_startup_done 0
+
+ # Bring the client online little by little.
+ #
+ while { [proc_msgs_once $envlist] > 0 } {
+ set done [rep070_startup_done $clientenv]
+
+ # At some point, startup_done gets turned on. Make sure it
+ # never gets turned off after that.
+ #
+ if { $got_startup_done } {
+ # We've seen startup_done previously.
+ error_check_good no_rescind $done 1
+ } else {
+ set got_startup_done $done
+ }
+ }
+ error_check_good startup_done $got_startup_done 1
+}
+
+proc rep070_startup_done { env } {
+ stat_field $env rep_stat "Startup complete"
+}
diff --git a/db/test/rep071.tcl b/db/test/rep071.tcl
new file mode 100644
index 000000000..ae22f307b
--- /dev/null
+++ b/db/test/rep071.tcl
@@ -0,0 +1,136 @@
+# See the file LICENSE for redistribution information.
+#
+# Copyright (c) 2001,2007 Oracle. All rights reserved.
+#
+# $Id: rep071.tcl,v 12.3 2007/05/17 18:17:21 bostic Exp $
+#
+# TEST rep071
+# TEST Test of multiple simultaneous client env handles and
+# TEST upgrading/downgrading. Tests use of temp db handle
+# TEST internally.
+# TEST
+# TEST Open a master and 2 handles to the same client env.
+# TEST Run rep_test.
+# TEST Close master and upgrade client to master using one env handle.
+# TEST Run rep_test again, and then downgrade back to client.
+#
+proc rep071 { method { niter 10 } { tnum "071" } args } {
+
+ source ./include.tcl
+ if { $is_windows9x_test == 1 } {
+ puts "Skipping replication test on Win 9x platform."
+ return
+ }
+
+ # Run for btree only.
+ if { $checking_valid_methods } {
+ set test_methods { btree }
+ return $test_methods
+ }
+ if { [is_btree $method] == 0 } {
+ puts "Rep$tnum: Skipping for method $method."
+ return
+ }
+
+ # We can't open two envs on HP-UX, so just skip the
+ # whole test since that is at the core of it.
+ if { $is_hp_test == 1 } {
+ puts "Rep$tnum: Skipping for HP-UX."
+ return
+ }
+ # This test depends on copying logs, so can't be run with
+ # in-memory logging.
+ global mixed_mode_logging
+ if { $mixed_mode_logging > 0 } {
+ puts "Rep$tnum: Skipping for mixed-mode logging."
+ return
+ }
+
+ set args [convert_args $method $args]
+
+ # Run the body of the test with and without recovery.
+ foreach r $test_recopts {
+ puts "Rep$tnum ($method $r):\
+ Replication backup and synchronizing."
+ rep071_sub $method $niter $tnum $r $args
+ }
+}
+
+proc rep071_sub { method niter tnum recargs largs } {
+ global testdir
+ global util_path
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
+
+ env_cleanup $testdir
+
+ replsetup $testdir/MSGQUEUEDIR
+
+ set masterdir $testdir/MASTERDIR
+ set clientdir $testdir/CLIENTDIR
+
+ file mkdir $masterdir
+ file mkdir $clientdir
+
+ # Open a master.
+ repladd 1
+ set ma_envcmd "berkdb_env_noerr -create -txn nosync $verbargs \
+ -home $masterdir -errpfx MASTER \
+ -rep_transport \[list 1 replsend\]"
+ set masterenv [eval $ma_envcmd $recargs -rep_master]
+
+ # Open a client
+ repladd 2
+ set cl_envcmd "berkdb_env_noerr -create -txn nosync $verbargs \
+ -home $clientdir -errpfx CLIENT \
+ -rep_transport \[list 2 replsend\]"
+ set clientenv [eval $cl_envcmd $recargs -rep_client]
+ error_check_good clenv [is_valid_env $clientenv] TRUE
+ #
+ # Open a 2nd client handle to the same client env.
+ # This handle needs to be a full client handle so just
+ # use the same env command for both.
+ #
+ set 2ndclientenv [eval $cl_envcmd -rep_client -errpfx 2ND]
+ error_check_good cl2env [is_valid_env $2ndclientenv] TRUE
+
+ # Bring the clients online by processing the startup messages.
+ set envlist "{$masterenv 1} {$clientenv 2}"
+ process_msgs $envlist
+
+ # Run a modified test001 in the master (and update client).
+ puts "\tRep$tnum.a: Running rep_test in replicated env."
+ eval rep_test $method $masterenv NULL $niter 0 0 0 0 $largs
+ process_msgs $envlist
+
+ puts "\tRep$tnum.b: Downgrade master and upgrade client."
+ error_check_good master_close [$masterenv rep_start -client] 0
+ error_check_good client_close [$clientenv rep_start -master] 0
+
+ puts "\tRep$tnum.b: Run rep_test."
+ eval rep_test $method $clientenv NULL $niter 0 0 0 0 $largs
+ process_msgs $envlist
+
+ puts "\tRep$tnum.c: Downgrade back to client and upgrade master"
+ #
+ # The act of upgrading and downgrading an env, with another
+ # handle open had issues with open internal db handles.
+ # So, the existence of the 2nd client env handle is needed
+ # even though we're not doing anything active with that handle.
+ #
+ error_check_good client_close [$clientenv rep_start -client] 0
+ error_check_good master_close [$masterenv rep_start -master] 0
+
+ puts "\tRep$tnum.d: Run rep_test in master."
+ eval rep_test $method $masterenv NULL $niter 0 0 0 0 $largs
+ process_msgs $envlist
+
+ error_check_good master_close [$masterenv close] 0
+ error_check_good clientenv_close [$clientenv close] 0
+ error_check_good clientenv_close [$2ndclientenv close] 0
+ replclose $testdir/MSGQUEUEDIR
+}
diff --git a/db/test/rep072.tcl b/db/test/rep072.tcl
new file mode 100644
index 000000000..2e155075f
--- /dev/null
+++ b/db/test/rep072.tcl
@@ -0,0 +1,185 @@
+# See the file LICENSE for redistribution information.
+#
+# Copyright (c) 2007 Oracle. All rights reserved.
+#
+# $Id: rep072.tcl,v 12.4 2007/06/19 03:33:16 moshen Exp $
+#
+# TEST rep072
+# TEST Verify that internal init does not leak resources from
+# TEST the locking subsystem.
+
+proc rep072 { method { niter 200 } { tnum "072" } args } {
+ source ./include.tcl
+
+ if { $is_windows9x_test == 1 } {
+ puts "Skipping replication test on Win9x platform."
+ return
+ }
+
+ # Run for btree and queue methods only.
+ if { $checking_valid_methods } {
+ set test_methods {}
+ foreach method $valid_methods {
+ if { [is_btree $method] == 1 || \
+ [is_queue $method] == 1 } {
+ lappend test_methods $method
+ }
+ }
+ return $test_methods
+ }
+ if { [is_btree $method] == 0 && [is_queue $method] == 0 } {
+ puts "Rep$tnum: skipping for non-btree, non-queue method."
+ return
+ }
+
+ set args [convert_args $method $args]
+ set limit 3
+ set check true
+
+ set logsets [create_logsets 2]
+
+ foreach l $logsets {
+ puts "Rep$tnum ($method): Confirm internal init does not \
+ leak locks."
+ puts "Rep$tnum: Master logs are [lindex $l 0]"
+ puts "Rep$tnum: Client logs are [lindex $l 1]"
+ rep072_sub $method $niter $tnum $l $limit $check $args
+ }
+}
+
+proc rep072_sub {method {niter 200} {tnum 072} logset \
+ {limit 3} {check true} largs} {
+ global testdir
+ global util_path
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
+
+ env_cleanup $testdir
+
+ replsetup $testdir/MSGQUEUEDIR
+
+ set masterdir $testdir/MASTERDIR
+ set clientdir $testdir/CLIENTDIR
+
+ file mkdir $masterdir
+ file mkdir $clientdir
+
+ set m_logtype [lindex $logset 0]
+ set c_logtype [lindex $logset 1]
+
+ # In-memory logs require a large log buffer, and cannot
+ # be used with -txn nosync. Adjust the args for master
+ # and client.
+ set m_logargs [adjust_logargs $m_logtype]
+ set c_logargs [adjust_logargs $c_logtype]
+ set m_txnargs [adjust_txnargs $m_logtype]
+ set c_txnargs [adjust_txnargs $c_logtype]
+
+ # Log size is small so we quickly create more than one.
+ # The documentation says that the log file must be at least
+ # four times the size of the in-memory log buffer.
+ set pagesize 4096
+ append largs " -pagesize $pagesize "
+ set log_max [expr $pagesize * 8]
+
+ # Open a master.
+ repladd 1
+ set ma_envcmd "berkdb_env_noerr -create $verbargs \
+ $m_logargs $m_txnargs -log_max $log_max -errpfx MASTER \
+ -home $masterdir -rep_transport \[list 1 replsend\]"
+ set masterenv [eval $ma_envcmd -rep_master]
+ $masterenv rep_limit 0 0
+
+ # Open a client
+ repladd 2
+ set cl_envcmd "berkdb_env_noerr -create $verbargs \
+ $c_logargs $c_txnargs -log_max $log_max -errpfx CLIENT \
+ -home $clientdir -rep_transport \[list 2 replsend\]"
+ set clientenv [eval $cl_envcmd -rep_client]
+ $clientenv rep_limit 0 0
+
+ # Bring the client online by processing the startup messages.
+ set envlist "{$masterenv 1} {$clientenv 2}"
+ process_msgs $envlist
+
+ # Clobber replication's 30-second anti-archive timer, which will have
+ # been started by client sync-up internal init, so that we can do a
+ # log_archive in a moment.
+ #
+ $masterenv test force noarchive_timeout
+
+ # $limit is the number of internal init cycles we want to try
+ for {set count 1} {$count <= $limit} {incr count} {
+ puts "\tRep$tnum.a: Try internal init cycle number $count"
+
+ # Run rep_test in the master.
+ puts "\tRep$tnum.b: Running rep_test in replicated env."
+ eval rep_test $method $masterenv NULL $niter 0 0 0 0 $largs
+ process_msgs $envlist
+
+ puts "\tRep$tnum.c: Leave client alive, but isolated."
+
+ if { $c_logtype != "in-memory" } {
+ set res [exec $util_path/db_archive -l -h $clientdir]
+ }
+ set last_client_log [get_logfile $clientenv last]
+
+ set stop 0
+ while { $stop == 0 } {
+ # Run rep_test in the master (don't update client).
+ puts "\tRep$tnum.d: Running rep_test in replicated env."
+ eval rep_test \
+ $method $masterenv NULL $niter 0 0 0 0 $largs
+ #
+ # Clear messages for client. We want that site
+ # to get far behind.
+ #
+ replclear 2
+ if { $m_logtype != "in-memory" } {
+ puts "\tRep$tnum.e: Run db_archive on master."
+ exec $util_path/db_archive -d -h $masterdir
+ set res [exec $util_path/db_archive -l \
+ -h $masterdir]
+ }
+ set first_master_log [get_logfile $masterenv first]
+ if { $first_master_log > $last_client_log } {
+ set stop 1
+ }
+ }
+
+ #
+ # Run rep_test one more time, this time letting client see
+ # messages. This will induce client to ask master for missing
+ # log records, leading to internal init.
+ #
+ puts "\tRep$tnum.f: Running rep_test in replicated env."
+ set entries 10
+ eval rep_test $method \
+ $masterenv NULL $entries $niter 0 0 0 $largs
+ process_msgs $envlist
+
+ set n_lockers [stat_field \
+ $clientenv lock_stat "Current number of lockers"]
+ puts "\tRep$tnum.f: num lockers: $n_lockers"
+ if {$count == 1} {
+ set expected_lockers $n_lockers
+ } elseif {[string is true $check]} {
+ error_check_good leaking? $n_lockers $expected_lockers
+ }
+
+ if {$count < $limit} {
+ # Wait for replication "no-archive" timeout to expire
+ #
+ puts "\tRep$tnum.g: Sleep for 32 seconds"
+ tclsleep 32
+ }
+ }
+
+ error_check_good masterenv_close [$masterenv close] 0
+ error_check_good clientenv_close [$clientenv close] 0
+ replclose $testdir/MSGQUEUEDIR
+}
diff --git a/db/test/rep073.tcl b/db/test/rep073.tcl
new file mode 100644
index 000000000..cf3590557
--- /dev/null
+++ b/db/test/rep073.tcl
@@ -0,0 +1,146 @@
+# See the file LICENSE for redistribution information.
+#
+# Copyright (c) 2007 Oracle. All rights reserved.
+#
+# $Id: rep073.tcl,v 1.3 2007/05/17 18:17:21 bostic Exp $
+#
+# TEST rep073
+# TEST
+# TEST Test of allowing clients to create and update their own scratch
+# TEST databases within the environment. Doing so requires the use
+# TEST use of the DB_TXN_NOT_DURABLE flag for those databases.
+#
+proc rep073 { method { niter 200 } { tnum "073" } args } {
+
+ source ./include.tcl
+ if { $is_windows9x_test == 1 } {
+ puts "Skipping replication test on Win 9x platform."
+ return
+ }
+
+ # Valid for all access methods.
+ if { $checking_valid_methods } {
+ return "ALL"
+ }
+
+ set args [convert_args $method $args]
+ set logsets [create_logsets 2]
+
+ # Run the body of the test with and without recovery,
+ # and with and without cleaning. Skip recovery with in-memory
+ # logging - it doesn't make sense.
+ foreach r $test_recopts {
+ foreach l $logsets {
+ set logindex [lsearch -exact $l "in-memory"]
+ if { $r == "-recover" && $logindex != -1 } {
+ puts "Skipping rep$tnum for -recover\
+ with in-memory logs."
+ continue
+ }
+ puts "Rep$tnum ($method $r $args):\
+ Test of non-durable databases and replication."
+ puts "Rep$tnum: Master logs are [lindex $l 0]"
+ puts "Rep$tnum: Client logs are [lindex $l 1]"
+ rep073_sub $method $niter $tnum $l $r $args
+ }
+ }
+}
+
+proc rep073_sub { method niter tnum logset recargs largs } {
+ source ./include.tcl
+ global testdir
+ global util_path
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
+
+ env_cleanup $testdir
+
+ set omethod [convert_method $method]
+ replsetup $testdir/MSGQUEUEDIR
+
+ set masterdir $testdir/MASTERDIR
+ set clientdir $testdir/CLIENTDIR
+
+ file mkdir $masterdir
+ file mkdir $clientdir
+
+ set m_logtype [lindex $logset 0]
+ set c_logtype [lindex $logset 1]
+
+ # In-memory logs cannot be used with -txn nosync.
+ set m_logargs [adjust_logargs $m_logtype]
+ set c_logargs [adjust_logargs $c_logtype]
+ set m_txnargs [adjust_txnargs $m_logtype]
+ set c_txnargs [adjust_txnargs $c_logtype]
+
+ # Open a master.
+ repladd 1
+ set ma_envcmd "berkdb_env_noerr -create $m_txnargs $m_logargs \
+ -errpfx MASTER \
+ -home $masterdir $verbargs -rep_transport \[list 1 replsend\]"
+ set masterenv [eval $ma_envcmd $recargs -rep_master]
+
+ # Open a client
+ repladd 2
+ set cl_envcmd "berkdb_env_noerr -create $c_txnargs $c_logargs \
+ -errpfx CLIENT \
+ -home $clientdir $verbargs -rep_transport \[list 2 replsend\]"
+ set clientenv [eval $cl_envcmd $recargs -rep_client]
+ error_check_good client_env [is_valid_env $clientenv] TRUE
+
+ # Bring the clients online by processing the startup messages.
+ set envlist "{$masterenv 1} {$clientenv 2}"
+ process_msgs $envlist
+
+ # Run rep_test in the master (and update client).
+ puts "\tRep$tnum.a: Running rep_test in replicated env."
+ set start 0
+ eval rep_test $method $masterenv NULL $niter $start $start 0 0 $largs
+ incr start $niter
+ process_msgs $envlist
+
+ set mtestfile "master.db"
+ set ctestfile "client.db"
+ puts "\tRep$tnum.b: Open non-durable databases on master and client."
+ set mdb [berkdb_open -create -auto_commit \
+ -btree -env $masterenv -notdurable $mtestfile]
+ set cdb [berkdb_open -create -auto_commit \
+ -btree -env $clientenv -notdurable $ctestfile]
+ process_msgs $envlist
+ #
+ # Verify that neither file exists on the other site.
+ #
+ error_check_good master_not_on_client \
+ [file exists $clientdir/$mtestfile] 0
+ error_check_good client_not_on_master \
+ [file exists $masterdir/$ctestfile] 0
+
+ #
+ # Now write to the master database, process messages and
+ # make sure nothing get sent to the client.
+ #
+ puts "\tRep$tnum.c: Write to non-durable database on master."
+ eval rep_test $method $masterenv $mdb $niter $start $start 0 0 $largs
+ incr start $niter
+ process_msgs $envlist
+ error_check_good master_not_on_client \
+ [file exists $clientdir/$mtestfile] 0
+
+ # Make sure client can write to its own database.
+ puts "\tRep$tnum.d: Write to non-durable database on client."
+ eval rep_test $method $clientenv $cdb $niter $start $start 0 0 $largs
+ process_msgs $envlist
+
+ error_check_good mdb_close [$mdb close] 0
+ error_check_good cdb_close [$cdb close] 0
+
+ rep_verify $masterdir $masterenv $clientdir $clientenv
+ error_check_good masterenv_close [$masterenv close] 0
+ error_check_good clientenv_close [$clientenv close] 0
+
+ replclose $testdir/MSGQUEUEDIR
+}
diff --git a/db/test/rep074.tcl b/db/test/rep074.tcl
new file mode 100644
index 000000000..78f705c88
--- /dev/null
+++ b/db/test/rep074.tcl
@@ -0,0 +1,163 @@
+# See the file LICENSE for redistribution information.
+#
+# Copyright (c) 2007 Oracle. All rights reserved.
+#
+# $Id: rep074.tcl,v 12.5 2007/06/19 03:33:16 moshen Exp $
+#
+# TEST rep074
+# TEST Verify replication withstands send errors processing requests.
+# TEST
+# TEST Run for btree only because access method shouldn't matter.
+# TEST
+proc rep074 { method { niter 20 } { tnum "074" } args } {
+
+ source ./include.tcl
+
+ if { $is_windows9x_test == 1 } {
+ puts "Skipping replication test on Win9x platform."
+ return
+ }
+
+ # Skip for all methods except btree.
+ if { $checking_valid_methods } {
+ return btree
+ }
+ if { [is_btree $method] == 0 } {
+ puts "Rep$tnum: skipping for non-btree method $method."
+ return
+ }
+
+ set args [convert_args $method $args]
+
+ set logsets [create_logsets 2]
+
+ foreach l $logsets {
+ puts "Rep$tnum ($method): Test of send errors processing \
+ requests"
+ puts "Rep$tnum: Master logs are [lindex $l 0]"
+ puts "Rep$tnum: Client logs are [lindex $l 1]"
+ rep074_sub $method $niter $tnum $l $args
+ }
+}
+
+proc rep074_sub { method niter tnum logset largs } {
+ global testdir rep_verbose rep074_failure_count
+
+ set rep074_failure_count -1
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
+
+ env_cleanup $testdir
+
+ replsetup $testdir/MSGQUEUEDIR
+
+ set masterdir $testdir/MASTERDIR
+ set clientdir $testdir/CLIENTDIR
+
+ file mkdir $masterdir
+ file mkdir $clientdir
+
+ set m_logtype [lindex $logset 0]
+ set c_logtype [lindex $logset 1]
+
+ # In-memory logs require a large log buffer, and cannot
+ # be used with -txn nosync. Adjust the args for master
+ # and client.
+ set m_logargs [adjust_logargs $m_logtype]
+ set c_logargs [adjust_logargs $c_logtype]
+ set m_txnargs [adjust_txnargs $m_logtype]
+ set c_txnargs [adjust_txnargs $c_logtype]
+
+ # Open a master.
+ repladd 1
+ set ma_envcmd "berkdb_env_noerr -create $verbargs -errpfx MASTER \
+ -home $masterdir $m_logargs $m_txnargs \
+ -rep_transport \[list 1 rep074_replsend\]"
+ set masterenv [eval $ma_envcmd -rep_master]
+
+ # Create some new records, so that the master will have something
+ # substantial to say when asked for LOG_REQ.
+ #
+ puts "\tRep$tnum.a: Running rep_test in replicated env."
+ eval rep_test $method $masterenv NULL $niter 0 0 0 0 $largs
+
+ # Open a client
+ repladd 2
+ set cl_envcmd "berkdb_env_noerr -create $verbargs -errpfx CLIENT \
+ -home $clientdir $c_logargs $c_txnargs \
+ -rep_transport \[list 2 replsend\]"
+ set clientenv [eval $cl_envcmd -rep_client]
+ set envlist "{$masterenv 1} {$clientenv 2}"
+
+ # Bring the client online by processing the startup messages. This will
+ # cause the client to send a request to the master.
+ #
+ # In the first cycle, the client gets NEWMASTER and sends an UPDATE_REQ.
+ # In the second cycle, the master answers the UPDATE_REQ with an UPDATE,
+ # and the client sends a PAGE_REQ. Third, once we've gotten pages, we
+ # send a LOG_REQ.
+ #
+ # 1. NEWCLIENT -> NEWMASTER -> UPDATE_REQ
+ # 2. UPDATE -> PAGE_REQ
+ # 3. PAGE -> LOG_REQ
+ #
+ puts "\tRep$tnum.b: NEWMASTER -> UPDATE_REQ"
+ proc_msgs_once $envlist
+ puts "\tRep$tnum.c: UPDATE -> PAGE_REQ"
+ proc_msgs_once $envlist
+ puts "\tRep$tnum.d: PAGE -> LOG_REQ"
+ proc_msgs_once $envlist
+
+ # Force a sending error at the master while processing the LOG_REQ.
+ # We should ignore it, and return success to rep_proces_message
+ #
+ puts "\tRep$tnum.e: Simulate a send error."
+ set rep074_failure_count [expr $niter / 2]
+ proc_msgs_once $envlist NONE errorp
+
+ puts "\tRep$tnum.f: Check for good return from rep_process_msg."
+ error_check_good rep_resilient $errorp 0
+
+ # Since we interrupted the flow with the simulated error, we don't have
+ # the log records we need yet.
+ #
+ error_check_bad startupdone \
+ [stat_field $clientenv rep_stat "Startup complete"] 1
+
+ # Run some more new txns at the master, so that the client eventually
+ # decides to request the remainder of the LOG_REQ response that it's
+ # missing.
+ #
+ set rep074_failure_count -1
+ eval rep_test $method $masterenv NULL $niter 0 0 0 0 $largs
+ process_msgs $envlist
+
+ error_check_good startupdone \
+ [stat_field $clientenv rep_stat "Startup complete"] 1
+
+ $masterenv close
+ $clientenv close
+ replclose $testdir/MSGQUEUEDIR
+}
+
+# Failure count < 0 turns off any special failure simulation processing.
+# When the count is > 0, it means we should process that many messages normally,
+# before invoking a failure.
+#
+proc rep074_replsend { control rec fromid toid flags lsn } {
+ global rep074_failure_count
+
+ if { $rep074_failure_count < 0 } {
+ return [replsend $control $rec $fromid $toid $flags $lsn]
+ }
+
+ if { $rep074_failure_count > 0 } {
+ incr rep074_failure_count -1
+ return [replsend $control $rec $fromid $toid $flags $lsn]
+ }
+
+ # Return an arbitrary non-zero value to indicate an error.
+ return 1
+}
diff --git a/db/test/rep075.tcl b/db/test/rep075.tcl
new file mode 100644
index 000000000..fcd3d7851
--- /dev/null
+++ b/db/test/rep075.tcl
@@ -0,0 +1,500 @@
+# See the file LICENSE for redistribution information.
+#
+# Copyright (c) 2001,2007 Oracle. All rights reserved.
+#
+# $Id: rep075.tcl,v 12.5 2007/07/02 17:29:19 paula Exp $
+#
+# TEST rep075
+# TEST Replication and prepared transactions.
+# TEST Test having outstanding prepared transactions and simulating
+# TEST crashing or upgrading or downgrading sites.
+# TEST
+#
+proc rep075 { method { tnum "075" } args } {
+
+ source ./include.tcl
+ if { $is_windows9x_test == 1 } {
+ puts "Skipping replication test on Win 9x platform."
+ return
+ }
+
+ # Run for all access methods.
+ if { $checking_valid_methods } {
+ set test_methods { btree }
+ return $test_methods
+ }
+ if { [is_btree $method] == 0 } {
+ puts "Rep075: Skipping for method $method"
+ return
+ }
+
+ set args [convert_args $method $args]
+ set logsets [create_logsets 2]
+ #
+ # Swapping the envs is the only thing that should
+ # work for:
+ # HP, old Windows: can't open two handles on same env.
+ # in-memory logs: prepared txns don't survive recovery
+ #
+ global mixed_mode_logging
+ if { $is_hp_test == 1 || $is_windows9x_test == 1 ||
+ $mixed_mode_logging > 0 } {
+ set prep {swap}
+ } else {
+ set prep {dbrecover swap resolve recover envrecover}
+ }
+ set ops {commit abort both}
+
+ # Run the body of the test with and without recovery.
+ foreach l $logsets {
+ foreach p $prep {
+ foreach o $ops {
+ puts "Rep$tnum ($method $p $o):\
+ Replication and prepared txns."
+ puts "Rep$tnum: Master logs are [lindex $l 0]"
+ puts "Rep$tnum: Client logs are [lindex $l 1]"
+ puts "Rep$tnum: close DBs after prepare"
+ rep075_sub $method $tnum $l $p $o 1 $args
+ puts "Rep$tnum: close DBs before prepare"
+ rep075_sub $method $tnum $l $p $o 0 $args
+ }
+ }
+ }
+}
+
+proc rep075_sub { method tnum logset prep op after largs } {
+ global testdir
+ global rep_verbose
+ global util_path
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
+ env_cleanup $testdir
+
+ replsetup $testdir/MSGQUEUEDIR
+
+ set masterdir $testdir/MASTERDIR
+ set clientdir $testdir/CLIENTDIR
+ set clientdir2 $testdir/CLIENTDIR2
+ file mkdir $masterdir
+ file mkdir $clientdir
+ file mkdir $clientdir2
+
+ # Log size is small so we quickly create more than one.
+ # The documentation says that the log file must be at least
+ # four times the size of the in-memory log buffer.
+ set pagesize 4096
+ append largs " -pagesize $pagesize "
+ set log_buf [expr $pagesize * 2]
+ set log_max [expr $log_buf * 4]
+ set m_logargs " -log_buffer $log_buf "
+ set c_logargs " -log_buffer $log_buf "
+
+ set m_logtype [lindex $logset 0]
+ set c_logtype [lindex $logset 1]
+
+ # In-memory logs require a large log buffer, and cannot
+ # be used with -txn nosync.
+ set m_logargs [adjust_logargs $m_logtype]
+ set c_logargs [adjust_logargs $c_logtype]
+ set m_txnargs [adjust_txnargs $m_logtype]
+ set c_txnargs [adjust_txnargs $c_logtype]
+
+ # Open a master.
+ repladd 1
+ set ma_envcmd "berkdb_env_noerr -create $m_txnargs \
+ $m_logargs -errpfx ENV0 -log_max $log_max $verbargs \
+ -home $masterdir -rep_transport \[list 1 replsend\]"
+ set env0 [eval $ma_envcmd -rep_master]
+ set masterenv $env0
+ error_check_good master_env [is_valid_env $env0] TRUE
+
+ # Open a client.
+ repladd 2
+ set cl_envcmd "berkdb_env_noerr -create $c_txnargs \
+ $c_logargs -errpfx ENV1 -log_max $log_max $verbargs \
+ -home $clientdir -rep_transport \[list 2 replsend\]"
+ set env1 [eval $cl_envcmd -rep_client]
+ set clientenv $env1
+ error_check_good client_env [is_valid_env $env1] TRUE
+
+ repladd 3
+ set cl2_envcmd "berkdb_env_noerr -create $c_txnargs \
+ $c_logargs -errpfx ENV2 -log_max $log_max $verbargs \
+ -home $clientdir2 -rep_transport \[list 3 replsend\]"
+ set env2 [eval $cl2_envcmd -rep_client]
+ set clientenv2 $env2
+ error_check_good client_env [is_valid_env $env2] TRUE
+
+ set omethod [convert_method $method]
+
+ # Bring the clients online by processing the startup messages.
+ set envlist "{$env0 1} {$env1 2} {$env2 3}"
+ process_msgs $envlist
+
+ #
+ # Run rep_test in a database with a sub database.
+ #
+ set testfile "test$tnum.db"
+ set sub "subdb"
+ set db1 [eval {berkdb_open_noerr -env $masterenv -auto_commit \
+ -create -mode 0644} $largs $omethod $testfile $sub]
+ error_check_good dbopen [is_valid_db $db1] TRUE
+
+ puts "\tRep$tnum.a: Running rep_test in replicated env."
+ set niter 1
+ eval rep_test $method $masterenv $db1 $niter 0 0 0 0 $largs
+ process_msgs $envlist
+
+ set testfile2 "test$tnum.2.db"
+ set db [eval {berkdb_open_noerr -env $masterenv -auto_commit \
+ -create -mode 0644} $largs $omethod $testfile2]
+ error_check_good dbopen [is_valid_db $db] TRUE
+
+ #
+ # Create and prepare 2 transactions:
+ # One txn is for the first database and one txn for the
+ # second database. We want to test that we can detect
+ # when the last restored txn has been resolved. And we
+ # want to test various files being open.
+ #
+ puts "\tRep$tnum.b: Prepare some txns."
+ set pbnyc 2
+ set key key
+ set data some_data
+ set txn1 [$masterenv txn]
+ error_check_good txn [is_valid_txn $txn1 $masterenv] TRUE
+ error_check_good put [$db1 put -txn $txn1 $key $data] 0
+
+ set gid [make_gid rep075:$txn1]
+ error_check_good commit [$txn1 prepare $gid] 0
+
+ set txn2 [$masterenv txn]
+ error_check_good txn [is_valid_txn $txn2 $masterenv] TRUE
+ error_check_good put [$db put -txn $txn2 $key $data] 0
+
+ set gid [make_gid rep075:$txn2]
+ error_check_good commit [$txn2 prepare $gid] 0
+ if { $after == 0 } {
+ $db1 close
+ $db close
+ }
+ process_msgs $envlist
+
+ #
+ # Now we have txns on a master that are PBNYC (prepared but
+ # not yet committed). Alter the replication system now
+ # based on what we're testing this time through.
+ #
+ puts "\tRep$tnum.c: Reset replication ($prep)."
+
+ if { $op == "commit" } {
+ set op1 commit
+ set op2 commit
+ } elseif { $op == "abort" } {
+ set op1 abort
+ set op2 abort
+ } else {
+ set i [berkdb random_int 0 1]
+ if { $i == 0 } {
+ set op1 commit
+ set op2 abort
+ } else {
+ set op1 abort
+ set op2 commit
+ }
+ }
+ set oplist [list $op1 $op2]
+ #
+ # If we are doing a swap, swap roles between master and client
+ # and then call txn recover. Master should then commit.
+ # This operation tests handling prepared txns in replication code.
+ #
+ # If we are doing a recover, each site stops using its old
+ # env handle and then opens a new one, with recovery.
+ # This operation tests handling prepared txns and then
+ # starting replication.
+ #
+ # If we are doing an envrecover, each site stops using its old
+ # env handle and then opens a new one, with recovery.
+ # Each site then opens a 2nd dbenv handle to run txn_recover
+ # and resolve each operation.
+ # This operation tests handling prepared txns and then
+ # starting replication.
+ #
+ # If we are doing a resolve, each site prepares the txns
+ # and then resolves the txns and then stops using the old
+ # env handle to cause a "crash". We then open a new one
+ # with recovery. This operation tests handling prepared
+ # txns and having them resolved.
+ #
+ if { $prep == "swap" } {
+ puts "\tRep$tnum.c.0: Swap roles master->client."
+ #
+ # A downgrading master must resolve the txns. So, commit
+ # them here, but don't send the messages to the client that
+ # is about to become master.
+ #
+ error_check_good commit [$txn1 commit] 0
+ error_check_good commit [$txn2 commit] 0
+ if { $after == 1 } {
+ $db1 close
+ $db close
+ }
+ replclear 2
+ replclear 3
+ set newclient $env0
+ error_check_good downgrade [$newclient rep_start -client] 0
+ set ctxnlist [$newclient txn_recover]
+ set newmaster $env1
+ puts "\tRep$tnum.c.1: Swap roles client->master."
+ error_check_good upgrade [$newmaster rep_start -master] 0
+ set txnlist [$newmaster txn_recover]
+
+ puts "\tRep$tnum.c.2: Check status of prepared txn."
+ error_check_good txnlist_len [llength $txnlist] $pbnyc
+ error_check_good txnlist_len [llength $ctxnlist] 0
+
+ #
+ # Now commit that old prepared txn.
+ #
+ puts "\tRep$tnum.c.3: Resolve prepared txn ($op)."
+ rep075_resolve $txnlist $oplist
+ } elseif { $prep == "recover" } {
+ #
+ # To simulate a crash, simply stop using the old handles
+ # and reopen new ones, with recovery. First flush both
+ # the log and mpool to disk.
+ #
+ set origenv0 $env0
+ set origenv1 $env1
+ set origtxn1 $txn1
+ set origtxn2 $txn2
+ puts "\tRep$tnum.c.0: Sync and recover master environment."
+ error_check_good flush1 [$env0 log_flush] 0
+ error_check_good sync1 [$env0 mpool_sync] 0
+ if { $after == 1 } {
+ $db1 close
+ $db close
+ }
+ set env0 [eval $ma_envcmd -recover]
+ error_check_good master_env [is_valid_env $env0] TRUE
+ puts "\tRep$tnum.c.1: Run txn_recover on master env."
+ set txnlist [$env0 txn_recover]
+ error_check_good txnlist_len [llength $txnlist] $pbnyc
+ puts "\tRep$tnum.c.2: Resolve txn ($op) on master env."
+ rep075_resolve $txnlist $oplist
+
+ puts "\tRep$tnum.c.3: Sync and recover client environment."
+ error_check_good flush1 [$env1 log_flush] 0
+ error_check_good sync1 [$env1 mpool_sync] 0
+ set env1 [eval $cl_envcmd -recover]
+ error_check_good client_env [is_valid_env $env1] TRUE
+ puts "\tRep$tnum.c.4: Run txn_recover on client env."
+ set txnlist [$env1 txn_recover]
+ error_check_good txnlist_len [llength $txnlist] $pbnyc
+
+ puts "\tRep$tnum.c.5: Resolve txn ($op) on client env."
+ rep075_resolve $txnlist $oplist
+
+ puts "\tRep$tnum.c.6: Restart replication on both envs."
+ error_check_good master [$env0 rep_start -master] 0
+ error_check_good client [$env1 rep_start -client] 0
+ set newmaster $env0
+ set envlist "{$env0 1} {$env1 2} {$env2 3}"
+ #
+ # Clean up old Tcl handles.
+ #
+ catch {$origenv0 close} res
+ catch {$origenv1 close} res
+ catch {$origtxn1 close} res
+ catch {$origtxn2 close} res
+ } elseif { $prep == "resolve" } {
+ #
+ # Check having prepared txns in the log, but they are
+ # also resolved before we "crash".
+ # To simulate a crash, simply stop using the old handles
+ # and reopen new ones, with recovery. First flush both
+ # the log and mpool to disk.
+ #
+ set origenv0 $env0
+ set origenv1 $env1
+ set origdb1 $db1
+ set origdb $db
+ puts "\tRep$tnum.c.0: Resolve ($op1 $op2) and recover master."
+ error_check_good resolve1 [$txn1 $op1] 0
+ error_check_good resolve2 [$txn2 $op2] 0
+ error_check_good flush0 [$env0 log_flush] 0
+ error_check_good sync0 [$env0 mpool_sync] 0
+ process_msgs $envlist
+ set env0 [eval $ma_envcmd -recover]
+ error_check_good master_env [is_valid_env $env0] TRUE
+ puts "\tRep$tnum.c.1: Run txn_recover on master env."
+ set txnlist [$env0 txn_recover]
+ error_check_good txnlist_len [llength $txnlist] 0
+
+ puts "\tRep$tnum.c.2: Sync and recover client environment."
+ error_check_good flush1 [$env1 log_flush] 0
+ error_check_good sync1 [$env1 mpool_sync] 0
+ set env1 [eval $cl_envcmd -recover]
+ error_check_good client_env [is_valid_env $env1] TRUE
+ puts "\tRep$tnum.c.3: Run txn_recover on client env."
+ set txnlist [$env1 txn_recover]
+ error_check_good txnlist_len [llength $txnlist] 0
+
+ puts "\tRep$tnum.c.4: Restart replication on both envs."
+ error_check_good master [$env0 rep_start -master] 0
+ error_check_good client [$env1 rep_start -client] 0
+ set newmaster $env0
+ set envlist "{$env0 1} {$env1 2} {$env2 3}"
+ catch {$origenv0 close} res
+ catch {$origenv1 close} res
+ catch {$origdb close} res
+ catch {$origdb1 close} res
+ } elseif { $prep == "envrecover" || $prep == "dbrecover" } {
+ #
+ # To simulate a crash, simply stop using the old handles
+ # and reopen new ones, with recovery. First flush both
+ # the log and mpool to disk.
+ #
+ set origenv0 $env0
+ set origenv1 $env1
+ set origtxn1 $txn1
+ set origtxn2 $txn2
+ puts "\tRep$tnum.c.0: Sync and recover master environment."
+ error_check_good flush1 [$env0 log_flush] 0
+ error_check_good sync1 [$env0 mpool_sync] 0
+ set oldgen [stat_field $env0 rep_stat "Generation number"]
+ error_check_good flush1 [$env1 log_flush] 0
+ error_check_good sync1 [$env1 mpool_sync] 0
+ if { $after == 1 } {
+ $db1 close
+ $db close
+ }
+ if { $prep == "dbrecover" } {
+ set recargs "-h $masterdir -c "
+ set stat [catch {eval exec $util_path/db_recover \
+ -e $recargs} result]
+ if { $stat == 1 } {
+ error "FAIL: Recovery error: $result."
+ }
+ set recargs "-h $clientdir -c "
+ set stat [catch {eval exec $util_path/db_recover \
+ -e $recargs} result]
+ if { $stat == 1 } {
+ error "FAIL: Recovery error: $result."
+ }
+ }
+ #
+ # !!!
+ # We still need to open with recovery, even if 'dbrecover'
+ # because db_recover cannot open the env with replication
+ # enabled. But db_recover will be the real recovery that
+ # needs to deal with the prepared txn. This recovery below
+ # for db_recover, should be a no-op essentially.
+ #
+ set recenv0 [eval $ma_envcmd -recover]
+ error_check_good master_env [is_valid_env $recenv0] TRUE
+ puts "\tRep$tnum.c.1: Run txn_recover on master env."
+ set env0 [eval $ma_envcmd]
+ error_check_good master_env [is_valid_env $env0] TRUE
+ set txnlist [$env0 txn_recover]
+ error_check_good txnlist_len [llength $txnlist] $pbnyc
+ puts "\tRep$tnum.c.2: Resolve txn ($op) on master env."
+ rep075_resolve $txnlist $oplist
+ error_check_good recenv0_close [$recenv0 close] 0
+
+ puts "\tRep$tnum.c.3: Recover client environment."
+ set recenv1 [eval $cl_envcmd -recover -errpfx "ENV1REC"]
+ error_check_good client_env [is_valid_env $recenv1] TRUE
+ puts "\tRep$tnum.c.4: Run txn_recover on client env."
+ set env1 [eval $cl_envcmd -errpfx "ENV1NEW"]
+ error_check_good client_env [is_valid_env $env1] TRUE
+ set txnlist [$env1 txn_recover]
+ error_check_good txnlist_len [llength $txnlist] $pbnyc
+
+ puts "\tRep$tnum.c.5: Resolve txns ($oplist) on client env."
+ rep075_resolve $txnlist $oplist
+ error_check_good recenv1_close [$recenv1 close] 0
+
+ puts "\tRep$tnum.c.6: Restart replication on both envs."
+ if { $prep == "dbrecover" } {
+ #
+ # XXX Since we ran db_recover, we lost the rep gen
+ # and clientenv2 cannot detect the change. Until
+ # SR 15396 is fixed, we'll fake it by becoming
+ # master, downgrading and then upgrading again to
+ # advance the generation number.
+ #
+ error_check_good master [$env0 rep_start -master] 0
+ error_check_good master [$env0 rep_start -client] 0
+ replclear 2
+ replclear 3
+ }
+ error_check_good master [$env0 rep_start -master] 0
+ set gen [stat_field $env0 rep_stat "Generation number"]
+ error_check_bad gen $gen $oldgen
+ error_check_good client [$env1 rep_start -client] 0
+ set newmaster $env0
+ set envlist "{$env0 1} {$env1 2} {$env2 3}"
+ process_msgs $envlist
+ #
+ # Clean up old Tcl handles.
+ #
+ catch {$origenv0 close} res
+ catch {$origenv1 close} res
+ catch {$origtxn1 close} res
+ catch {$origtxn2 close} res
+ }
+ #
+ # Run a standard rep_test creating test.db now.
+ #
+ eval rep_test $method $newmaster NULL $niter 0 0 0 0 $largs
+ process_msgs $envlist
+
+ #
+ # Verify whether or not the key exists in the databases both
+ # on the client and the master.
+ #
+ puts "\tRep$tnum.d: Verify prepared data."
+ foreach e $envlist {
+ set env [lindex $e 0]
+ set db1 [eval {berkdb_open_noerr -env $env -auto_commit \
+ -create -mode 0644} $largs $omethod $testfile $sub]
+ error_check_good dbopen [is_valid_db $db1] TRUE
+ set db2 [eval {berkdb_open_noerr -env $env -auto_commit \
+ -create -mode 0644} $largs $omethod $testfile2]
+ error_check_good dbopen [is_valid_db $db2] TRUE
+ set k1 [$db1 get $key]
+ set k2 [$db2 get $key]
+ if { $op1 == "commit" } {
+ error_check_good key [llength $k1] 1
+ } else {
+ error_check_good key [llength $k1] 0
+ }
+ if { $op2 == "commit" } {
+ error_check_good key [llength $k2] 1
+ } else {
+ error_check_good key [llength $k2] 0
+ }
+
+ error_check_good db_close [$db1 close] 0
+ error_check_good db_close [$db2 close] 0
+ }
+ error_check_good env0_close [$env0 close] 0
+ error_check_good env1_close [$env1 close] 0
+ error_check_good env2_close [$env2 close] 0
+
+ replclose $testdir/MSGQUEUEDIR
+ return
+}
+
+proc rep075_resolve { txnlist ops } {
+ error_check_good resolve_lists [llength $txnlist] [llength $ops]
+ foreach trec $txnlist op $ops {
+ set txn [lindex $trec 0]
+ error_check_good commit [$txn $op] 0
+ }
+}
diff --git a/db/test/rep076.tcl b/db/test/rep076.tcl
new file mode 100644
index 000000000..f2ce40687
--- /dev/null
+++ b/db/test/rep076.tcl
@@ -0,0 +1,170 @@
+# See the file LICENSE for redistribution information.
+#
+# Copyright (c) 2007 Oracle. All rights reserved.
+#
+# $Id: rep076.tcl,v 12.2 2007/05/17 18:17:21 bostic Exp $
+#
+# TEST rep076
+# TEST Replication elections - what happens if elected client
+# TEST does not become master?
+# TEST
+# TEST Set up a master and 3 clients. Take down master, run election.
+# TEST The elected client will ignore the fact that it's been elected,
+# TEST so we still have 2 clients.
+# TEST
+# TEST Run another election, a regular election that allows the winner
+# TEST to become master, and make sure it goes okay. We do this both
+# TEST for the client that ignored its election and for the other client.
+# TEST
+# TEST This simulates what would happen if, say, we had a temporary
+# TEST network partition and lost the winner.
+#
+proc rep076 { method args } {
+ source ./include.tcl
+
+ global mixed_mode_logging
+ set tnum "076"
+ if { $is_windows9x_test == 1 } {
+ puts "Skipping replication test on Win 9x platform."
+ return
+ }
+
+ # Run for btree only.
+ if { $checking_valid_methods } {
+ set test_methods { btree }
+ return $test_methods
+ }
+ if { [is_btree $method] == 0 } {
+ puts "Rep$tnum: Skipping for method $method."
+ return
+ }
+
+ set nclients 3
+ set logsets [create_logsets [expr $nclients + 1]]
+ set winsets { { 1 1 } { 1 2 } }
+ foreach l $logsets {
+ foreach w $winsets {
+ puts "Rep$tnum ($method): Replication elections -\
+ elected client ignores election."
+ puts "Rep$tnum: Master logs are [lindex $l 0]"
+ for { set i 0 } { $i < $nclients } { incr i } {
+ puts "Rep$tnum: Client $i logs are\
+ [lindex $l [expr $i + 1]]"
+ }
+ rep076_sub $method $nclients $tnum $l $w $args
+ }
+ }
+}
+
+proc rep076_sub { method nclients tnum logset winset largs } {
+ source ./include.tcl
+ global machids
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
+
+ env_cleanup $testdir
+
+ set qdir $testdir/MSGQUEUEDIR
+ replsetup $qdir
+
+ set masterdir $testdir/MASTERDIR
+ file mkdir $masterdir
+ set m_logtype [lindex $logset 0]
+ set m_logargs [adjust_logargs $m_logtype]
+ set m_txnargs [adjust_txnargs $m_logtype]
+
+ for { set i 0 } { $i < $nclients } { incr i } {
+ set clientdir($i) $testdir/CLIENTDIR.$i
+ file mkdir $clientdir($i)
+ set c_logtype($i) [lindex $logset [expr $i + 1]]
+ set c_logargs($i) [adjust_logargs $c_logtype($i)]
+ set c_txnargs($i) [adjust_txnargs $c_logtype($i)]
+ }
+
+ # Open a master.
+ set envlist {}
+ repladd 1
+ set env_cmd(M) "berkdb_env -create -log_max 1000000 $verbargs \
+ -event rep_event \
+ -home $masterdir $m_txnargs $m_logargs -rep_master \
+ -errpfx MASTER -rep_transport \[list 1 replsend\]"
+ set masterenv [eval $env_cmd(M)]
+ lappend envlist "$masterenv 1"
+
+ # Open the clients.
+ for { set i 0 } { $i < $nclients } { incr i } {
+ set envid [expr $i + 2]
+ repladd $envid
+ set env_cmd($i) "berkdb_env_noerr -create $verbargs \
+ -event rep_event \
+ -home $clientdir($i) $c_txnargs($i) $c_logargs($i) \
+ -rep_client -rep_transport \[list $envid replsend\]"
+ set clientenv($i) [eval $env_cmd($i)]
+ error_check_good \
+ client_env($i) [is_valid_env $clientenv($i)] TRUE
+ lappend envlist "$clientenv($i) $envid"
+ }
+
+ # Bring the clients online by processing the startup messages.
+ process_msgs $envlist
+
+ # Run a modified test001 in the master.
+ puts "\tRep$tnum.a: Running rep_test in replicated env."
+ set niter 10
+ eval rep_test $method $masterenv NULL $niter 0 0 0 0 $largs
+ process_msgs $envlist
+
+ # Close master.
+ error_check_good masterenv_close [$masterenv close] 0
+ set envlist [lreplace $envlist 0 0]
+
+ # Winner1 is set up to win the first election, winner2
+ # the second.
+ set m "Rep$tnum.b"
+ set winner1 [lindex $winset 0]
+ set winner2 [lindex $winset 1]
+ set elector 1
+ set nsites $nclients
+ set nvotes $nclients
+ setpriority pri $nclients $winner1
+ foreach pair $envlist {
+ set i [expr [lindex $pair 1] - 2]
+ replclear [expr $i + 2]
+ set err_cmd($i) "none"
+ set crash($i) 0
+ if { $rep_verbose == 1 } {
+ $clientenv($i) errpfx CLIENT$i
+ $clientenv($i) verbose rep on
+ $clientenv($i) errfile /dev/stderr
+ set env_cmd($i) [concat $env_cmd($i) \
+ "-errpfx CLIENT$i -errfile /dev/stderr"]
+ }
+ }
+
+
+ # Run election where winner will ignore its election and
+ # not be made master.
+ puts "\tRep$tnum: First winner ignores its election."
+ run_election env_cmd envlist err_cmd pri crash $qdir $m\
+ $elector $nsites $nvotes $nclients $winner1 0 test.db 1
+
+ # Run second election where winner accepts its election and
+ # is made master.
+ puts "\tRep$tnum: Second winner accepts its election."
+ setpriority pri $nclients $winner2
+ run_election env_cmd envlist err_cmd pri crash $qdir $m\
+ $elector $nsites $nvotes $nclients $winner2
+
+ # Clean up.
+ foreach pair $envlist {
+ set cenv [lindex $pair 0]
+ error_check_good cenv_close [$cenv close] 0
+ }
+
+ replclose $testdir/MSGQUEUEDIR
+}
+
diff --git a/db/test/rep077.tcl b/db/test/rep077.tcl
new file mode 100644
index 000000000..362568927
--- /dev/null
+++ b/db/test/rep077.tcl
@@ -0,0 +1,132 @@
+# See the file LICENSE for redistribution information.
+#
+# Copyright (c) 2001,2007 Oracle. All rights reserved.
+#
+# $Id: rep077.tcl,v 12.1 2007/06/11 18:45:19 sue Exp $
+#
+# TEST rep077
+# TEST
+# TEST Replication, recovery and applying log records immediately.
+# TEST Master and 1 client. Start up both sites.
+# TEST Close client and run rep_test on the master so that the
+# TEST log record is the same LSN the client would be expecting.
+# TEST Reopen client with recovery and verify the client does not
+# TEST try to apply that "expected" record before it synchronizes
+# TEST with the master.
+#
+proc rep077 { method { tnum "077"} args} {
+ source ./include.tcl
+
+ if { $is_windows9x_test == 1 } {
+ puts "Skipping replication test on Win9x platform."
+ return
+ }
+
+ # Valid for all access methods.
+ if { $checking_valid_methods } {
+ return "ALL"
+ }
+
+ set args [convert_args $method $args]
+ set logsets [create_logsets 2]
+
+ foreach l $logsets {
+ puts "Rep$tnum ($method):\
+ Recovered client getting immediate log records."
+ puts "Rep$tnum: Master logs are [lindex $l 0]"
+ puts "Rep$tnum: Client logs are [lindex $l 1]"
+ rep077_sub $method $tnum $l $args
+ }
+}
+
+proc rep077_sub { method tnum logset largs} {
+ global testdir
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
+
+ set niter 5
+ env_cleanup $testdir
+
+ replsetup $testdir/MSGQUEUEDIR
+
+ set masterdir $testdir/MASTERDIR
+ set clientdir $testdir/CLIENTDIR
+
+ file mkdir $masterdir
+ file mkdir $clientdir
+
+ set m_logtype [lindex $logset 0]
+ set c_logtype [lindex $logset 1]
+
+ # In-memory logs cannot be used with -txn nosync.
+ set m_logargs [adjust_logargs $m_logtype]
+ set c_logargs [adjust_logargs $c_logtype]
+ set m_txnargs [adjust_txnargs $m_logtype]
+ set c_txnargs [adjust_txnargs $c_logtype]
+
+ # Open a master.
+ repladd 1
+ set env_cmd(M) "berkdb_env_noerr -create \
+ $verbargs \
+ -home $masterdir -errpfx MASTER -txn nosync -rep_master \
+ -rep_transport \[list 1 replsend\]"
+ set masterenv [eval $env_cmd(M)]
+
+ eval rep_test $method $masterenv NULL $niter 0 0 0 0 $largs
+
+ # Open a client
+ repladd 2
+ set env_cmd(C) "berkdb_env_noerr -create \
+ $verbargs \
+ -home $clientdir -errpfx CLIENT -txn nosync -rep_client \
+ -rep_transport \[list 2 replsend\]"
+ set clientenv [eval $env_cmd(C)]
+
+ puts "\tRep$tnum.a: Start up master and client."
+ # Bring the client online by processing the startup messages.
+ set envlist "{$masterenv 1} {$clientenv 2}"
+ process_msgs $envlist
+
+ puts "\tRep$tnum.b: Close client."
+ $clientenv close
+
+ #
+ # We want to run rep_test now and DO NOT replclear the
+ # messages for the closed client. We want to make sure
+ # that the first message the client sees upon restarting
+ # is a log record that exactly matches the current
+ # expected LSN.
+ #
+ puts "\tRep$tnum.c: Run rep_test on master with client closed."
+ #
+ # Move it forward by sending in niter as start and skip.
+ #
+ eval rep_test $method $masterenv NULL $niter $niter $niter 0 0 $largs
+
+ # We need to reopen with recovery to blow away our idea of
+ # who the master is, because this client will start up with
+ # the right generation number and the ready_lsn will be
+ # set to the right value for the first log record to apply.
+ #
+ # However, this client is running recovery and will have
+ # written its own recovery log records. So, until this
+ # client finds and synchronizes with the master after
+ # restarting, its ready_lsn and lp->lsn will not be
+ # in sync and this client better not try to apply the records.
+ #
+ puts "\tRep$tnum.d: Restart client with recovery and process messages."
+ set clientenv [eval $env_cmd(C) -recover]
+ set envlist "{$masterenv 1} {$clientenv 2}"
+ process_msgs $envlist
+
+ #
+ # If we didn't crash at this point, we're okay.
+ #
+ $masterenv close
+ $clientenv close
+ replclose $testdir/MSGQUEUEDIR
+}
diff --git a/db/test/rep078.tcl b/db/test/rep078.tcl
new file mode 100644
index 000000000..1ceddba89
--- /dev/null
+++ b/db/test/rep078.tcl
@@ -0,0 +1,217 @@
+# See the file LICENSE for redistribution information.
+#
+# Copyright (c) 2001,2007 Oracle. All rights reserved.
+#
+# $Id: rep078.tcl,v 12.2 2007/07/02 15:56:56 sue Exp $
+#
+# TEST rep078
+# TEST
+# TEST Replication and basic lease test.
+# TEST Set leases on master and 2 clients.
+# TEST Do a lease operation and process to all clients.
+# TEST Read with lease on master. Do another lease operation
+# TEST and don't process on any client. Try to read with
+# TEST on the master and verify it fails. Process the messages
+# TEST to the clients and retry the read.
+#
+proc rep078 { method { tnum "078" } args } {
+ source ./include.tcl
+
+ if { $is_windows9x_test == 1 } {
+ puts "Skipping replication test on Win9x platform."
+ return
+ }
+
+ # Valid for all access methods.
+ if { $checking_valid_methods } {
+ return "ALL"
+ }
+
+ set args [convert_args $method $args]
+ set logsets [create_logsets 3]
+
+ # Run the body of the test with and without recovery,
+ # and with and without cleaning. Skip recovery with in-memory
+ # logging - it doesn't make sense.
+ foreach r $test_recopts {
+ foreach l $logsets {
+ set logindex [lsearch -exact $l "in-memory"]
+ if { $r == "-recover" && $logindex != -1 } {
+ puts "Skipping rep$tnum for -recover\
+ with in-memory logs."
+ continue
+ }
+ puts "Rep$tnum ($method $r):\
+ Replication and basic master leases."
+ puts "Rep$tnum: Master logs are [lindex $l 0]"
+ puts "Rep$tnum: Client logs are [lindex $l 1]"
+ puts "Rep$tnum: Client 2 logs are [lindex $l 2]"
+ rep078_sub $method $tnum $l $r $args
+ }
+ }
+}
+
+proc rep078_sub { method tnum logset recargs largs } {
+ global testdir
+ global rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
+
+ env_cleanup $testdir
+
+ set qdir $testdir/MSGQUEUEDIR
+ replsetup $qdir
+
+ set masterdir $testdir/MASTERDIR
+ set clientdir $testdir/CLIENTDIR
+ set clientdir2 $testdir/CLIENTDIR2
+
+ file mkdir $masterdir
+ file mkdir $clientdir
+ file mkdir $clientdir2
+
+ set m_logtype [lindex $logset 0]
+ set c_logtype [lindex $logset 1]
+ set c2_logtype [lindex $logset 2]
+
+ # In-memory logs cannot be used with -txn nosync.
+ set m_logargs [adjust_logargs $m_logtype]
+ set c_logargs [adjust_logargs $c_logtype]
+ set c2_logargs [adjust_logargs $c2_logtype]
+ set m_txnargs [adjust_txnargs $m_logtype]
+ set c_txnargs [adjust_txnargs $c_logtype]
+ set c2_txnargs [adjust_txnargs $c2_logtype]
+
+ # Set leases for 3 sites, 1 second timeout, 1% clock skew
+ set nsites 3
+ set lease_to 1000000
+ set lease_tosec [expr $lease_to / 1000000]
+ set lease_skew 0
+ #
+ # Since we have to use elections, the election code
+ # assumes a 2-off site id scheme.
+ # Open a master.
+ repladd 2
+ set err_cmd(0) "none"
+ set crash(0) 0
+ set pri(0) 100
+ set envcmd(0) "berkdb_env -create $m_txnargs $m_logargs \
+ $verbargs -errpfx MASTER -home $masterdir \
+ -rep_lease \[list $nsites $lease_to $lease_skew\] \
+ -event rep_event \
+ -rep_client -rep_transport \[list 2 replsend\]"
+ set masterenv [eval $envcmd(0) $recargs]
+ error_check_good master_env [is_valid_env $masterenv] TRUE
+
+ # Open two clients.
+ repladd 3
+ set err_cmd(1) "none"
+ set crash(1) 0
+ set pri(1) 10
+ set envcmd(1) "berkdb_env -create $c_txnargs $c_logargs \
+ $verbargs -errpfx CLIENT -home $clientdir \
+ -rep_lease \[list $nsites $lease_to $lease_skew\] \
+ -event rep_event \
+ -rep_client -rep_transport \[list 3 replsend\]"
+ set clientenv [eval $envcmd(1) $recargs]
+ error_check_good client_env [is_valid_env $clientenv] TRUE
+
+ repladd 4
+ set err_cmd(2) "none"
+ set crash(2) 0
+ set pri(2) 10
+ set envcmd(2) "berkdb_env -create $c2_txnargs $c2_logargs \
+ $verbargs -errpfx CLIENT2 -home $clientdir2 \
+ -rep_lease \[list $nsites $lease_to $lease_skew\] \
+ -event rep_event \
+ -rep_client -rep_transport \[list 4 replsend\]"
+ set clientenv2 [eval $envcmd(2) $recargs]
+ error_check_good client_env [is_valid_env $clientenv2] TRUE
+
+ # Bring the clients online by processing the startup messages.
+ set envlist "{$masterenv 2} {$clientenv 3} {$clientenv2 4}"
+ process_msgs $envlist
+
+ #
+ # Run election to get a master. Leases prevent us from
+ # simply assigning a master.
+ #
+ set msg "Rep$tnum.a"
+ puts "\tRep$tnum.a: Run initial election."
+ set nvotes $nsites
+ set winner 0
+ setpriority pri $nsites $winner
+ set elector [berkdb random_int 0 2]
+ #
+ # Note we send in a 0 for nsites because we set nsites back
+ # when we started running with leases. Master leases require
+ # that nsites be set before calling rep_start, and master leases
+ # require that the nsites arg to rep_elect be 0.
+ #
+ run_election envcmd envlist err_cmd pri crash $qdir $msg \
+ $elector 0 $nvotes $nsites $winner 0
+
+ puts "\tRep$tnum.b: Create and open master database."
+ set testfile "test.db"
+ set omethod [convert_method $method]
+ set masterdb [eval {berkdb_open_noerr -env $masterenv -auto_commit \
+ -create -mode 0644} $largs $omethod $testfile]
+ error_check_good dbopen [is_valid_db $masterdb] TRUE
+
+ process_msgs $envlist
+
+ #
+ # Just use numeric key so we don't have to worry about method.
+ #
+ set key 1
+ puts "\tRep$tnum.c: Put some data to master database."
+ do_leaseop $masterenv $masterdb $method $key $envlist
+
+ set uselease ""
+ set ignorelease "-nolease"
+ puts "\tRep$tnum.d.0: Read with leases."
+ check_leaseget $masterdb $key $uselease 0
+ puts "\tRep$tnum.d.1: Read ignoring leases."
+ check_leaseget $masterdb $key $ignorelease 0
+ #
+ # This should fail because the lease is expired and all
+ # attempts by master to refresh it will not be processed.
+ #
+ set sleep [expr $lease_tosec + 1]
+ puts "\tRep$tnum.e.0: Sleep $sleep secs to expire leases and read again."
+ tclsleep $sleep
+ check_leaseget $masterdb $key $uselease REP_LEASE_EXPIRED
+ puts "\tRep$tnum.e.1: Read ignoring leases."
+ check_leaseget $masterdb $key $ignorelease 0
+ incr key
+
+ #
+ # This will fail because when we try to read the data
+ # none of the clients will have processed the messages.
+ # Sending in the 0 to do_leaseop means we don't process
+ # the messages there.
+ #
+ puts "\tRep$tnum.f: Put data to master, verify read fails."
+ do_leaseop $masterenv $masterdb $method $key $envlist 0
+ check_leaseget $masterdb $key $uselease REP_LEASE_EXPIRED
+ puts "\tRep$tnum.f.0: Read ignoring leases."
+ check_leaseget $masterdb $key $ignorelease 0
+
+ puts "\tRep$tnum.g: Process messages to clients."
+ process_msgs $envlist
+ puts "\tRep$tnum.h: Verify read with leases now succeeds."
+ check_leaseget $masterdb $key $uselease 0
+ process_msgs $envlist
+
+ rep_verify $masterdir $masterenv $clientdir $clientenv
+ rep_verify $masterdir $masterenv $clientdir2 $clientenv2 0 1 0
+
+ error_check_good dbclose [$masterdb close] 0
+ error_check_good mclose [$masterenv close] 0
+ error_check_good cclose [$clientenv close] 0
+ error_check_good c2close [$clientenv2 close] 0
+ replclose $testdir/MSGQUEUEDIR
+}
diff --git a/db/test/repmgr001.tcl b/db/test/repmgr001.tcl
new file mode 100644
index 000000000..7d8b5abe4
--- /dev/null
+++ b/db/test/repmgr001.tcl
@@ -0,0 +1,130 @@
+# See the file LICENSE for redistribution information.
+#
+# Copyright (c) 2007 Oracle. All rights reserved.
+#
+# $Id: repmgr001.tcl,v 12.2 2007/05/17 18:17:21 bostic Exp $
+#
+# TEST repmgr001
+# TEST Check repmgr stats.
+# TEST
+# TEST Run for btree only because access method shouldn't matter.
+# TEST
+proc repmgr001 { method { niter 20 } { tnum "001" } args } {
+
+ source ./include.tcl
+
+ if { $is_windows9x_test == 1 } {
+ puts "Skipping replication test on Win9x platform."
+ return
+ }
+
+ # Skip for all methods except btree.
+ if { $checking_valid_methods } {
+ return btree
+ }
+ if { [is_btree $method] == 0 } {
+ puts "Rep$tnum: skipping for non-btree method $method."
+ return
+ }
+
+ set args [convert_args $method $args]
+
+ puts "Rep$tnum ($method): Test of repmgr stats"
+ repmgr001_sub $method $niter $tnum $args
+}
+
+proc repmgr001_sub { method niter tnum largs } {
+ global testdir rep_verbose
+
+ set verbargs ""
+ if { $rep_verbose == 1 } {
+ set verbargs " -verbose {rep on} "
+ }
+
+ env_cleanup $testdir
+ set ports [available_ports 2]
+
+ set masterdir $testdir/MASTERDIR
+ set clientdir $testdir/CLIENTDIR
+
+ file mkdir $masterdir
+ file mkdir $clientdir
+
+ # Open a master.
+ puts "\tRepmgr$tnum.a: Start a master."
+ set ma_envcmd "berkdb_env_noerr -create $verbargs -errpfx MASTER \
+ -home $masterdir -txn -rep"
+ set masterenv [eval $ma_envcmd]
+ $masterenv repmgr -ack all -nsites 2 \
+ -local [list localhost [lindex $ports 0]] \
+ -start master
+
+ # Open a client
+ puts "\tRepmgr$tnum.b: Start a client."
+ set cl_envcmd "berkdb_env_noerr -create $verbargs -errpfx CLIENT \
+ -home $clientdir -txn -rep"
+ set clientenv [eval $cl_envcmd]
+ $clientenv repmgr -ack all -nsites 2 \
+ -local [list localhost [lindex $ports 1]] \
+ -remote [list localhost [lindex $ports 0]] \
+ -start client
+ await_startup_done $clientenv
+
+ puts "\tRepmgr$tnum.c: Run some transactions at master."
+ eval rep_test $method $masterenv NULL $niter 0 0 0 0 $largs
+
+ error_check_good perm_no_failed_stat \
+ [stat_field $masterenv repmgr_stat "Acknowledgement failures"] 0
+
+ error_check_good no_connections_dropped \
+ [stat_field $masterenv repmgr_stat "Connections dropped"] 0
+
+ $clientenv close
+
+ # Just do a few transactions (i.e., 3 of them), because each one is
+ # expected to time out, and if we did many the test would take a long
+ # time (with no benefit).
+ #
+ puts "\tRepmgr$tnum.d: Run transactions with no client."
+ eval rep_test $method $masterenv NULL 3 $niter $niter 0 0 $largs
+
+ error_check_bad perm_failed_stat \
+ [stat_field $masterenv repmgr_stat "Acknowledgement failures"] 0
+
+ error_check_good connections_dropped \
+ [stat_field $masterenv repmgr_stat "Connections dropped"] 1
+
+ # Bring the client back up, and down, a couple times, to test resetting
+ # of stats.
+ #
+ puts "\tRepmgr$tnum.e: Shut down client (pause), check dropped connection."
+ set clientenv [eval $cl_envcmd]
+ $clientenv repmgr -ack all -nsites 2 \
+ -local [list localhost [lindex $ports 1]] \
+ -remote [list localhost [lindex $ports 0]] \
+ -start client
+ await_startup_done $clientenv
+ $clientenv close
+
+ # Wait a moment for the dust to settle.
+ tclsleep 5
+
+ error_check_good connections_dropped \
+ [stat_field $masterenv repmgr_stat "Connections dropped"] 2
+ $masterenv repmgr_stat -clear
+
+ puts "\tRepmgr$tnum.e: Shut down, pause, check dropped connection (reset)."
+ set clientenv [eval $cl_envcmd]
+ $clientenv repmgr -ack all -nsites 2 \
+ -local [list localhost [lindex $ports 1]] \
+ -remote [list localhost [lindex $ports 0]] \
+ -start client
+ await_startup_done $clientenv
+ $clientenv close
+ tclsleep 5
+
+ error_check_good connections_dropped \
+ [stat_field $masterenv repmgr_stat "Connections dropped"] 1
+
+ $masterenv close
+}
diff --git a/db/test/reputils.tcl b/db/test/reputils.tcl
index 4815ac866..3244e1fe6 100644
--- a/db/test/reputils.tcl
+++ b/db/test/reputils.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2001-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2001,2007 Oracle. All rights reserved.
#
-# $Id: reputils.tcl,v 12.30 2006/09/13 21:51:23 carol Exp $
+# $Id: reputils.tcl,v 12.54 2007/07/12 16:36:07 alanb Exp $
#
# Replication testing utilities
@@ -42,11 +41,47 @@ set perm_response_list {}
global perm_sent_list
set perm_sent_list {}
global elect_timeout
-set elect_timeout 50000000
+unset -nocomplain elect_timeout
+set elect_timeout(default) 5000000
+global electable_pri
+set electable_pri 5
set drop 0
global anywhere
set anywhere 0
+global rep_verbose
+set rep_verbose 0
+
+# To run a replication test with verbose messages, type
+# 'run_verbose <test> <method>'.
+proc run_verbose { reptest args } {
+ global rep_verbose
+ if { [string match rep* $reptest] == 0 } {
+ error "run_verbose runs only for rep tests"
+ return
+ }
+
+ set rep_verbose 1
+ if { [catch {
+ eval $reptest $args
+ flush stdout
+ flush stderr
+ } res] != 0 } {
+ global errorInfo
+
+ set rep_verbose 0
+ set fnl [string first "\n" $errorInfo]
+ set theError [string range $errorInfo 0 [expr $fnl - 1]]
+ if {[string first FAIL $errorInfo] == -1} {
+ error "FAIL:[timestamp]\
+ run_verbose: $reptest: $theError"
+ } else {
+ error $theError;
+ }
+ }
+ set rep_verbose 0
+}
+
# The default for replication testing is for logs to be on-disk.
# Mixed-mode log testing provides a mixture of on-disk and
# in-memory logging, or even all in-memory. When testing on a
@@ -143,16 +178,11 @@ proc repl_envsetup { envargs largs test {nclients 1} {droppct 0} { oob 0 } } {
global drop drop_msg
global masterdir
global repenv
- global qtestdir testdir
env_cleanup $testdir
replsetup $testdir/MSGQUEUEDIR
- if { ![info exists qtestdir] } {
- set qtestdir $testdir
- }
-
set masterdir $testdir/MASTERDIR
file mkdir $masterdir
if { $droppct != 0 } {
@@ -215,6 +245,12 @@ proc repl_envsetup { envargs largs test {nclients 1} {droppct 0} { oob 0 } } {
# Process startup messages
repl_envprocq $test $nclients $oob
+ # Clobber replication's 30-second anti-archive timer, which
+ # will have been started by client sync-up internal init, in
+ # case the test we're about to run wants to do any log
+ # archiving, or database renaming and/or removal.
+ $masterenv test force noarchive_timeout
+
return $largs
}
@@ -431,7 +467,7 @@ proc repl_envclose { test envargs } {
global encrypt
global masterdir
global repenv
- global qtestdir testdir
+ global drop
if { [lsearch $envargs "-encrypta*"] !=-1 } {
set encrypt 1
@@ -441,7 +477,6 @@ proc repl_envclose { test envargs } {
# databases on all the clients, do a checkpoint on the master and
# process messages in order to flush all the clients.
set drop 0
- set do_check 0
berkdb debug_check
puts "\t$test: Checkpointing master."
error_check_good masterenv_ckp [$repenv(master) txn_checkpoint] 0
@@ -451,6 +486,7 @@ proc repl_envclose { test envargs } {
if { $repenv($ncli) == "NULL" } {
break
}
+ $repenv($ncli) rep_request 1 1
}
repl_envprocq $test $ncli
@@ -460,57 +496,52 @@ proc repl_envclose { test envargs } {
error_check_good client($i)_close [$repenv($i) close] 0
verify_dir $clientdir($i) "\t$test: " 0 0 1
}
- replclose $qtestdir/MSGQUEUEDIR
+ replclose $testdir/MSGQUEUEDIR
+
+}
+# Replnoop is a dummy function to substitute for replsend
+# when replication is off.
+proc replnoop { control rec fromid toid flags lsn } {
+ return 0
}
-# Close up a replication group - close all message dbs.
proc replclose { queuedir } {
- global queuedbs machids
+ global queueenv queuedbs machids
- set dbs [array names queuedbs]
- foreach tofrom $dbs {
- set handle $queuedbs($tofrom)
- error_check_good db_close [$handle close] 0
- unset queuedbs($tofrom)
+ foreach m $machids {
+ set db $queuedbs($m)
+ error_check_good dbr_close [$db close] 0
}
-
+ error_check_good qenv_close [$queueenv close] 0
set machids {}
}
# Create a replication group for testing.
proc replsetup { queuedir } {
- global queuedbs machids
+ global queueenv queuedbs machids
file mkdir $queuedir
+ set max_locks 20000
+ set queueenv [berkdb_env \
+ -create -txn nosync -lock_max_locks $max_locks -home $queuedir]
+ error_check_good queueenv [is_valid_env $queueenv] TRUE
- # If there are any leftover handles, get rid of them.
- set dbs [array names queuedbs]
- foreach tofrom $dbs {
- unset queuedbs($tofrom)
+ if { [info exists queuedbs] } {
+ unset queuedbs
}
set machids {}
-}
-# Replnoop is a dummy function to substitute for replsend
-# when replication is off.
-proc replnoop { control rec fromid toid flags lsn } {
- return 0
+ return $queueenv
}
# Send function for replication.
proc replsend { control rec fromid toid flags lsn } {
- global is_repchild
- global queuedbs machids
+ global queuedbs queueenv machids
global drop drop_msg
global perm_sent_list
global anywhere
- global qtestdir testdir
- if { ![info exists qtestdir] } {
- set qtestdir $testdir
- }
- set queuedir $qtestdir/MSGQUEUEDIR
set permflags [lsearch $flags "perm"]
if { [llength $perm_sent_list] != 0 && $permflags != -1 } {
# puts "replsend sent perm message, LSN $lsn"
@@ -534,12 +565,15 @@ proc replsend { control rec fromid toid flags lsn } {
if { $toid == -1 } {
set machlist $machids
} else {
+ if { [info exists queuedbs($toid)] != 1 } {
+ error "replsend: machid $toid not found"
+ }
set m NULL
- # If we can send this anywhere, send it to the first id
- # we find that is neither toid or fromid. If we don't
- # find any other candidates, this falls back to the
- # original toid.
if { $anywhere != 0 } {
+ #
+ # If we can send this anywhere, send it to the first
+ # id we find that is neither toid or fromid.
+ #
set anyflags [lsearch $flags "any"]
if { $anyflags != -1 } {
foreach m $machids {
@@ -552,206 +586,78 @@ proc replsend { control rec fromid toid flags lsn } {
}
}
#
- # If we didn't find a different site, fall back
- # to the toid.
+ # If we didn't find a different site, then we must
+ # fallback to the toid.
#
if { $m == "NULL" } {
set machlist [list $toid]
}
}
+
foreach m $machlist {
- # Do not broadcast to self.
+ # do not broadcast to self.
if { $m == $fromid } {
continue
}
- # Find the handle for the right message file.
- set pid [pid]
- set db $queuedbs($m.$fromid.$pid)
- set stat [catch {$db put -append [list $control $rec $fromid]} ret]
- }
- if { $is_repchild } {
- replready $fromid from
+
+ set db $queuedbs($m)
+ set txn [$queueenv txn]
+ $db put -txn $txn -append [list $control $rec $fromid]
+ error_check_good replsend_commit [$txn commit] 0
}
return 0
}
# Discard all the pending messages for a particular site.
-proc replclear { machid {tf "to"}} {
- global queuedbs qtestdir testdir
-
- if { ![info exists qtestdir] } {
- set qtestdir $testdir
- }
- set queuedir $qtestdir/MSGQUEUEDIR
- set orig [pwd]
-
- cd $queuedir
- if { $tf == "to" } {
- set msgdbs [glob -nocomplain ready.$machid.*]
- } else {
- set msgdbs [glob -nocomplain ready.*.$machid.*]
- }
- foreach m $msgdbs {
- file delete -force $m
- }
- cd $orig
- set dbs [array names queuedbs]
- foreach tofrom $dbs {
- # Process only messages _to_ the specified machid.
- if { [string match $machid.* $tofrom] == 1 } {
- set db $queuedbs($tofrom)
- set dbc [$db cursor]
- for { set dbt [$dbc get -first] } \
- { [llength $dbt] > 0 } \
- { set dbt [$dbc get -next] } {
- error_check_good \
- replclear($machid)_del [$dbc del] 0
- }
- error_check_good replclear($db)_dbc_close [$dbc close] 0
- }
- }
- cd $queuedir
- if { $tf == "to" } {
- set msgdbs [glob -nocomplain temp.$machid.*]
- } else {
- set msgdbs [glob -nocomplain temp.*.$machid.*]
- }
- foreach m $msgdbs {
-# file delete -force $m
- }
- cd $orig
-}
+proc replclear { machid } {
+ global queuedbs queueenv
-# Makes messages available to replprocessqueue by closing and
-# renaming the message files. We ready the files for one machine
-# ID at a time -- just those "to" or "from" the machine we want to
-# process, depending on 'tf'.
-proc replready { machid tf } {
- global queuedbs machids
- global counter
- global qtestdir testdir
-
- if { ![info exists qtestdir] } {
- set qtestdir $testdir
+ if { [info exists queuedbs($machid)] != 1 } {
+ error "FAIL: replclear: machid $machid not found"
}
- set queuedir $qtestdir/MSGQUEUEDIR
-
- set pid [pid]
- #
- # Close the temporary message files for the specified machine.
- # Only close it if there are messages available.
- #
- set dbs [array names queuedbs]
- set closed {}
- foreach tofrom $dbs {
- set toidx [string first . $tofrom]
- set toid [string replace $tofrom $toidx end]
- set fidx [expr $toidx + 1]
- set fromidx [string first . $tofrom $fidx]
- #
- # First chop off the end, then chop off the toid
- # in the beginning.
- #
- set fromid [string replace $tofrom $fromidx end]
- set fromid [string replace $fromid 0 $toidx]
- if { ($tf == "to" && $machid == $toid) || \
- ($tf == "from" && $machid == $fromid) } {
- set nkeys [stat_field $queuedbs($tofrom) \
- stat "Number of keys"]
- if { $nkeys != 0 } {
- lappend closed \
- [list $toid $fromid temp.$tofrom]
- error_check_good temp_close \
- [$queuedbs($tofrom) close] 0
- }
- }
- }
-
- # Rename the message files.
- set cwd [pwd]
- foreach filename $closed {
- set toid [lindex $filename 0]
- set fromid [lindex $filename 1]
- set fname [lindex $filename 2]
- set tofrom [string replace $fname 0 4]
- incr counter($machid)
- cd $queuedir
-# puts "$queuedir: Msg ready $fname to ready.$tofrom.$counter($machid)"
- file rename -force $fname ready.$tofrom.$counter($machid)
- cd $cwd
- replsetuptempfile $toid $fromid $queuedir
+ set db $queuedbs($machid)
+ set txn [$queueenv txn]
+ set dbc [$db cursor -txn $txn]
+ for { set dbt [$dbc get -rmw -first] } { [llength $dbt] > 0 } \
+ { set dbt [$dbc get -rmw -next] } {
+ error_check_good replclear($machid)_del [$dbc del] 0
}
+ error_check_good replclear($machid)_dbc_close [$dbc close] 0
+ error_check_good replclear($machid)_txn_commit [$txn commit] 0
}
-# Add a machine to a replication environment. This checks
-# that we have not already established that machine id, and
-# adds the machid to the list of ids.
+# Add a machine to a replication environment.
proc repladd { machid } {
- global queuedbs machids counter qtestdir testdir
+ global queueenv queuedbs machids
- if { ![info exists qtestdir] } {
- set qtestdir $testdir
- }
- set queuedir $qtestdir/MSGQUEUEDIR
- if { [info exists machids] } {
- if { [lsearch -exact $machids $machid] >= 0 } {
- error "FAIL: repladd: machid $machid already exists."
- }
+ if { [info exists queuedbs($machid)] == 1 } {
+ error "FAIL: repladd: machid $machid already exists"
}
- set counter($machid) 0
- lappend machids $machid
-
- # Create all the databases that receive messages sent _to_
- # the new machid.
- replcreatetofiles $machid $queuedir
-
- # Create all the databases that receive messages sent _from_
- # the new machid.
- replcreatefromfiles $machid $queuedir
-}
-
-# Creates all the databases that a machid needs for receiving messages
-# from other participants in a replication group. Used when first
-# establishing the temp files, but also used whenever replready moves the
-# temp files away, because we'll need new files for any future messages.
-proc replcreatetofiles { toid queuedir } {
- global machids
+ set queuedbs($machid) [berkdb open -auto_commit \
+ -env $queueenv -create -recno -renumber repqueue$machid.db]
+ error_check_good repqueue_create [is_valid_db $queuedbs($machid)] TRUE
- foreach m $machids {
- # We don't need a file for a machid to send itself messages.
- if { $m == $toid } {
- continue
- }
- replsetuptempfile $toid $m $queuedir
- }
+ lappend machids $machid
}
-# Creates all the databases that a machid needs for sending messages
-# to other participants in a replication group. Used when first
-# establishing the temp files only. Replready moves files based on
-# recipient, so we recreate files based on the recipient, also.
-proc replcreatefromfiles { fromid queuedir } {
- global machids
-
- foreach m $machids {
- # We don't need a file for a machid to send itself messages.
- if { $m == $fromid } {
- continue
- }
- replsetuptempfile $m $fromid $queuedir
- }
-}
+# Acquire a handle to work with an existing machine's replication
+# queue. This is for situations where more than one process
+# is working with a message queue. In general, having more than one
+# process handle the queue is wrong. However, in order to test some
+# things, we need two processes (since Tcl doesn't support threads). We
+# go to great pain in the test harness to make sure this works, but we
+# don't let customers do it.
+proc repljoin { machid } {
+ global queueenv queuedbs machids
-proc replsetuptempfile { to from queuedir } {
- global queuedbs
+ set queuedbs($machid) [berkdb open -auto_commit \
+ -env $queueenv repqueue$machid.db]
+ error_check_good repqueue_create [is_valid_db $queuedbs($machid)] TRUE
- set pid [pid]
- set queuedbs($to.$from.$pid) [berkdb open -create -excl -recno\
- -renumber $queuedir/temp.$to.$from.$pid]
- error_check_good open_queuedbs [is_valid_db $queuedbs($to.$from.$pid)] TRUE
+ lappend machids $machid
}
# Process a queue of messages, skipping every "skip_interval" entry.
@@ -759,10 +665,10 @@ proc replsetuptempfile { to from queuedir } {
# may end up leaving things in the queue, which should get picked up
# on a later run.
proc replprocessqueue { dbenv machid { skip_interval 0 } { hold_electp NONE } \
- { newmasterp NONE } { dupmasterp NONE } { errp NONE } } {
- global errorCode
+ { dupmasterp NONE } { errp NONE } } {
+ global queuedbs queueenv errorCode
global perm_response_list
- global qtestdir testdir
+ global startup_done
# hold_electp is a call-by-reference variable which lets our caller
# know we need to hold an election.
@@ -771,13 +677,6 @@ proc replprocessqueue { dbenv machid { skip_interval 0 } { hold_electp NONE } \
}
set hold_elect 0
- # newmasterp is the same idea, only returning the ID of a master
- # given in a DB_REP_NEWMASTER return.
- if { [string compare $newmasterp NONE] != 0 } {
- upvar $newmasterp newmaster
- }
- set newmaster 0
-
# dupmasterp is a call-by-reference variable which lets our caller
# know we have a duplicate master.
if { [string compare $dupmasterp NONE] != 0 } {
@@ -794,157 +693,144 @@ proc replprocessqueue { dbenv machid { skip_interval 0 } { hold_electp NONE } \
set nproced 0
- set queuedir $qtestdir/MSGQUEUEDIR
- replready $machid to
+ set txn [$queueenv txn]
- # Change directories temporarily so we get just the msg file name.
- set cwd [pwd]
- cd $queuedir
- set msgdbs [glob -nocomplain ready.$machid.*]
-# puts "$queuedir.$machid: My messages: $msgdbs"
- cd $cwd
+ # If we are running separate processes, the second process has
+ # to join an existing message queue.
+ if { [info exists queuedbs($machid)] == 0 } {
+ repljoin $machid
+ }
- foreach msgdb $msgdbs {
- set db [berkdb_open $queuedir/$msgdb]
- set dbc [$db cursor]
+ set dbc [$queuedbs($machid) cursor -txn $txn]
- error_check_good process_dbc($machid) \
- [is_valid_cursor $dbc $db] TRUE
+ error_check_good process_dbc($machid) \
+ [is_valid_cursor $dbc $queuedbs($machid)] TRUE
- for { set dbt [$dbc get -first] } \
- { [llength $dbt] != 0 } \
- { set dbt [$dbc get -next] } {
- set data [lindex [lindex $dbt 0] 1]
- set recno [lindex [lindex $dbt 0] 0]
-
- # If skip_interval is nonzero, we want to process
- # messages out of order. We do this in a simple but
- # slimy way -- continue walking with the cursor
- # without processing the message or deleting it from
- # the queue, but do increment "nproced". The way
- # this proc is normally used, the precise value of
- # nproced doesn't matter--we just don't assume the
- # queues are empty if it's nonzero. Thus, if we
- # contrive to make sure it's nonzero, we'll always
- # come back to records we've skipped on a later call
- # to replprocessqueue. (If there really are no records,
- # we'll never get here.)
- #
- # Skip every skip_interval'th record (and use a
- # remainder other than zero so that we're guaranteed
- # to really process at least one record on every call).
- if { $skip_interval != 0 } {
- if { $nproced % $skip_interval == 1 } {
- incr nproced
- set dbt [$dbc get -next]
- continue
- }
+ for { set dbt [$dbc get -first] } \
+ { [llength $dbt] != 0 } \
+ { } {
+ set data [lindex [lindex $dbt 0] 1]
+ set recno [lindex [lindex $dbt 0] 0]
+
+ # If skip_interval is nonzero, we want to process messages
+ # out of order. We do this in a simple but slimy way--
+ # continue walking with the cursor without processing the
+ # message or deleting it from the queue, but do increment
+ # "nproced". The way this proc is normally used, the
+ # precise value of nproced doesn't matter--we just don't
+ # assume the queues are empty if it's nonzero. Thus,
+ # if we contrive to make sure it's nonzero, we'll always
+ # come back to records we've skipped on a later call
+ # to replprocessqueue. (If there really are no records,
+ # we'll never get here.)
+ #
+ # Skip every skip_interval'th record (and use a remainder other
+ # than zero so that we're guaranteed to really process at least
+ # one record on every call).
+ if { $skip_interval != 0 } {
+ if { $nproced % $skip_interval == 1 } {
+ incr nproced
+ set dbt [$dbc get -next]
+ continue
}
+ }
- # We need to remove the current message from the
- # queue, because we're about to end the transaction
- # and someone else processing messages might come in
- # and reprocess this message which would be bad.
- #
- error_check_good queue_remove [$dbc del] 0
-
- # We have to play an ugly cursor game here: we
- # currently hold a lock on the page of messages, but
- # rep_process_message might need to lock the page with
- # a different cursor in order to send a response. So
- # save the next recno, close the cursor, and then
- # reopen and reset the cursor. If someone else is
- # processing this queue, our entry might have gone
- # away, and we need to be able to handle that.
- #
-# error_check_good dbc_process_close [$dbc close] 0
+ # We need to remove the current message from the queue,
+ # because we're about to end the transaction and someone
+ # else processing messages might come in and reprocess this
+ # message which would be bad.
+ error_check_good queue_remove [$dbc del] 0
+
+ # We have to play an ugly cursor game here: we currently
+ # hold a lock on the page of messages, but rep_process_message
+ # might need to lock the page with a different cursor in
+ # order to send a response. So save the next recno, close
+ # the cursor, and then reopen and reset the cursor.
+ # If someone else is processing this queue, our entry might
+ # have gone away, and we need to be able to handle that.
+
+ error_check_good dbc_process_close [$dbc close] 0
+ error_check_good txn_commit [$txn commit] 0
- set ret [catch {$dbenv rep_process_message \
- [lindex $data 2] [lindex $data 0] \
- [lindex $data 1]} res]
+ set ret [catch {$dbenv rep_process_message \
+ [lindex $data 2] [lindex $data 0] [lindex $data 1]} res]
- # Save all ISPERM and NOTPERM responses so we can
- # compare their LSNs to the LSN in the log. The
- # variable perm_response_list holds the entire
- # response so we can extract responses and LSNs as
- # needed.
- #
- if { [llength $perm_response_list] != 0 && \
- ([is_substr $res ISPERM] || [is_substr $res NOTPERM]) } {
- lappend perm_response_list $res
- }
+ # Save all ISPERM and NOTPERM responses so we can compare their
+ # LSNs to the LSN in the log. The variable perm_response_list
+ # holds the entire response so we can extract responses and
+ # LSNs as needed.
+ #
+ if { [llength $perm_response_list] != 0 && \
+ ([is_substr $res ISPERM] || [is_substr $res NOTPERM]) } {
+ lappend perm_response_list $res
+ }
- if { $ret != 0 } {
- if { [string compare $errp NONE] != 0 } {
- set errorp "$dbenv $machid $res"
- } else {
- error "FAIL:[timestamp]\
- rep_process_message returned $res"
- }
+ if { $ret != 0 } {
+ if { [string compare $errp NONE] != 0 } {
+ set errorp "$dbenv $machid $res"
+ } else {
+ error "FAIL:[timestamp]\
+ rep_process_message returned $res"
}
+ }
- incr nproced
- if { $ret == 0 } {
- set rettype [lindex $res 0]
- set retval [lindex $res 1]
- #
- # Do nothing for 0 and NEWSITE
- #
- if { [is_substr $rettype HOLDELECTION] } {
- set hold_elect 1
- }
- if { [is_substr $rettype DUPMASTER] } {
- set dupmaster "1 $dbenv $machid"
- }
- if { [is_substr $rettype NOTPERM] || \
- [is_substr $rettype ISPERM] } {
- set lsnfile [lindex $retval 0]
- set lsnoff [lindex $retval 1]
- }
- if { [is_substr $rettype NEWMASTER] } {
- set newmaster $retval
- # Break when we get a NEWMASTER message;
- # our caller needs to handle it.
- break
- }
- }
+ incr nproced
- if { $errorp != 0 } {
- # Break on an error, caller wants to handle it.
- break
+ # Now, re-establish the cursor position. We fetch the
+ # current record number. If there is something there,
+ # that is the record for the next iteration. If there
+ # is nothing there, then we've consumed the last item
+ # in the queue.
+
+ set txn [$queueenv txn]
+ set dbc [$queuedbs($machid) cursor -txn $txn]
+ set dbt [$dbc get -set_range $recno]
+
+ if { $ret == 0 } {
+ set rettype [lindex $res 0]
+ set retval [lindex $res 1]
+ #
+ # Do nothing for 0 and NEWSITE
+ #
+ if { [is_substr $rettype STARTUPDONE] } {
+ set startup_done 1
}
- if { $hold_elect == 1 } {
- # Break on a HOLDELECTION, for the same reason.
- break
+ if { [is_substr $rettype HOLDELECTION] } {
+ set hold_elect 1
}
- if { $dupmaster == 1 } {
- # Break on a DUPMASTER, for the same reason.
- break
+ if { [is_substr $rettype DUPMASTER] } {
+ set dupmaster "1 $dbenv $machid"
+ }
+ if { [is_substr $rettype NOTPERM] || \
+ [is_substr $rettype ISPERM] } {
+ set lsnfile [lindex $retval 0]
+ set lsnoff [lindex $retval 1]
}
-
}
- error_check_good dbc_close [$dbc close] 0
-
- #
- # Check the number of keys remaining because we only
- # want to rename to done, message file that are
- # fully processed. Some message types might break
- # out of the loop early and we want to process
- # the remaining messages the next time through.
- #
- set nkeys [stat_field $db stat "Number of keys"]
- error_check_good db_close [$db close] 0
- if { $nkeys == 0 } {
- set dbname [string replace $msgdb 0 5 done.]
-# file rename -force $queuedir/$msgdb $queuedir/$dbname
- file delete -force $queuedir/$msgdb
+ if { $errorp != 0 } {
+ # Break also on an error, caller wants to handle it.
+ break
}
+ if { $hold_elect == 1 } {
+ # Break also on a HOLDELECTION, for the same reason.
+ break
+ }
+ if { $dupmaster == 1 } {
+ # Break also on a DUPMASTER, for the same reason.
+ break
+ }
+
}
+
+ error_check_good dbc_close [$dbc close] 0
+ error_check_good txn_commit [$txn commit] 0
+
# Return the number of messages processed.
return $nproced
}
+
set run_repl_flag "-run_repl"
proc extract_repl_args { args } {
@@ -985,7 +871,8 @@ set elect_serial 0
proc start_election \
{ pfx qdir envstring nsites nvotes pri timeout {err "none"} {crash 0}} {
source ./include.tcl
- global elect_serial elect_timeout elections_in_progress machids
+ global elect_serial elections_in_progress machids
+ global rep_verbose
set filelist {}
set ret [catch {glob $testdir/ELECTION*.$elect_serial} result]
@@ -999,20 +886,25 @@ proc start_election \
set oid [open $testdir/ELECTION_SOURCE.$elect_serial w]
puts $oid "source $test_path/test.tcl"
+ puts $oid "set elected_event 0"
+ puts $oid "set elected_env \"NONE\""
puts $oid "set is_repchild 1"
puts $oid "replsetup $qdir"
foreach i $machids { puts $oid "repladd $i" }
puts $oid "set env_cmd \{$envstring\}"
- puts $oid "set dbenv \[eval \$env_cmd -errfile \
- $testdir/ELECTION_ERRFILE.$elect_serial -errpfx $pfx \]"
-# puts $oid "set dbenv \[eval \$env_cmd -errfile \
-# /dev/stdout -errpfx $pfx \]"
+ if { $rep_verbose == 1 } {
+ puts $oid "set dbenv \[eval \$env_cmd -errfile \
+ /dev/stdout -errpfx $pfx \]"
+ } else {
+ puts $oid "set dbenv \[eval \$env_cmd -errfile \
+ $testdir/ELECTION_ERRFILE.$elect_serial -errpfx $pfx \]"
+ }
puts $oid "\$dbenv test abort $err"
- puts $oid "set res \[catch \{\$dbenv rep_elect $nsites $nvotes $pri \
- $elect_timeout\} ret\]"
+ puts $oid "set res \[catch \{\$dbenv rep_elect $nsites \
+ $nvotes $pri $timeout\} ret\]"
puts $oid "set r \[open \$testdir/ELECTION_RESULT.$elect_serial w\]"
puts $oid "if \{\$res == 0 \} \{"
- puts $oid "puts \$r \"NEWMASTER \$ret\""
+ puts $oid "puts \$r \"SUCCESS \$ret\""
puts $oid "\} else \{"
puts $oid "puts \$r \"ERROR \$ret\""
puts $oid "\}"
@@ -1022,18 +914,25 @@ proc start_election \
if { $err != "none" && $crash != 1 } {
puts $oid "\$dbenv test abort none"
puts $oid "set res \[catch \{\$dbenv rep_elect $nsites \
- $nvotes $pri $elect_timeout\} ret\]"
+ $nvotes $pri $timeout\} ret\]"
puts $oid "if \{\$res == 0 \} \{"
- puts $oid "puts \$r \"NEWMASTER \$ret\""
+ puts $oid "puts \$r \"SUCCESS \$ret\""
puts $oid "\} else \{"
puts $oid "puts \$r \"ERROR \$ret\""
puts $oid "\}"
}
+
+ puts $oid "if \{ \$elected_event == 1 \} \{"
+ puts $oid "puts \$r \"ELECTED \$elected_env\""
+ puts $oid "\}"
+
puts $oid "close \$r"
close $oid
set t [open "|$tclsh_path >& $testdir/ELECTION_OUTPUT.$elect_serial" w]
-# set t [open "|$tclsh_path" w]
+ if { $rep_verbose } {
+ set t [open "|$tclsh_path" w]
+ }
puts $t "source ./include.tcl"
puts $t "source $testdir/ELECTION_SOURCE.$elect_serial"
flush $t
@@ -1042,14 +941,25 @@ proc start_election \
return $elect_serial
}
-proc setpriority { priority nclients winner {start 0} } {
+#
+# If we are doing elections during upgrade testing, set
+# upgrade to 1. Doing that sets the priority to the
+# test priority in rep_elect, which will simulate a
+# 0-priority but electable site.
+#
+proc setpriority { priority nclients winner {start 0} {upgrade 0} } {
+ global electable_pri
upvar $priority pri
for { set i $start } { $i < [expr $nclients + $start] } { incr i } {
if { $i == $winner } {
set pri($i) 100
} else {
- set pri($i) 10
+ if { $upgrade } {
+ set pri($i) $electable_pri
+ } else {
+ set pri($i) 10
+ }
}
}
}
@@ -1076,9 +986,16 @@ proc setpriority { priority nclients winner {start 0} } {
# and reopened as a client?
# dbname Name of the underlying database. Defaults to
# the name of the db created by rep_test.
-#
-proc run_election { ecmd celist errcmd priority crsh qdir msg elector \
- nsites nvotes nclients win {reopen 0} {dbname "test.db"} } {
+# ignore Should the winner ignore its own election?
+# If ignore is 1, the winner is not made master.
+# timeout_ok We expect that this election will not succeed
+# in electing a new master (perhaps because there
+# already is a master).
+
+proc run_election { ecmd celist errcmd priority crsh\
+ qdir msg elector nsites nvotes nclients win {reopen 0}\
+ {dbname "test.db"} {ignore 0} {timeout_ok 0} } {
+
global elect_timeout elect_serial
global is_hp_test
global is_windows_test
@@ -1089,12 +1006,53 @@ proc run_election { ecmd celist errcmd priority crsh qdir msg elector \
upvar $priority pri
upvar $crsh crash
- set elect_timeout 15000000
+ set elect_timeout(default) 15000000
+ # Windows and HP-UX require a longer timeout.
+ if { $is_windows_test == 1 || $is_hp_test == 1 } {
+ set elect_timeout(default) [expr $elect_timeout(default) * 2]
+ }
+ set long_timeout $elect_timeout(default)
+ #
+ # Initialize tries based on the default timeout.
+ # We use tries to loop looking for messages because
+ # as sites are sleeping waiting for their timeout
+ # to expire we need to keep checking for messages.
+ #
+ set tries [expr [expr $long_timeout * 4] / 1000000]
+ #
+ # Retry indicates whether the test should retry the election
+ # if it gets a timeout. This is primarily used for the
+ # varied timeout election test because we expect short timeouts
+ # to timeout when interacting with long timeouts and the
+ # short timeout sites need to call elections again.
+ #
+ set retry 0
foreach pair $cenvlist {
set id [lindex $pair 1]
set i [expr $id - 2]
set elect_pipe($i) INVALID
+ #
+ # Array get should return us a list of 1 element:
+ # { {$i timeout_value} }
+ # If that doesn't exist, use the default.
+ #
+ set this_timeout [array get elect_timeout $i]
+ if { [llength $this_timeout] } {
+ set e_timeout($i) [lindex $this_timeout 1]
+ #
+ # Set number of tries based on the biggest
+ # timeout we see in this group if using
+ # varied timeouts.
+ #
+ set retry 1
+ if { $e_timeout($i) > $long_timeout } {
+ set long_timeout $e_timeout($i)
+ set tries [expr $long_timeout / 1000000]
+ }
+ } else {
+ set e_timeout($i) $elect_timeout(default)
+ }
replclear $id
}
@@ -1113,18 +1071,13 @@ proc run_election { ecmd celist errcmd priority crsh qdir msg elector \
expected winner is $win (eid [expr $win + 2])"
incr elect_serial
set pfx "CHILD$elector.$elect_serial"
- # Windows and HP-UX require a longer timeout.
- if { $is_windows_test == 1 || $is_hp_test == 1 } {
- set elect_timeout [expr $elect_timeout * 2]
- }
set elect_pipe($elector) [start_election \
$pfx $qdir $env_cmd($elector) $nsites $nvotes $pri($elector) \
- $elect_timeout $err_cmd($elector) $crash($elector)]
-
+ $e_timeout($elector) $err_cmd($elector) $crash($elector)]
tclsleep 2
set got_newmaster 0
- set tries [expr [expr $elect_timeout * 4] / 1000000]
+ set max_retry $tries
# If we're simulating a crash, skip the while loop and
# just give the initial election a chance to complete.
@@ -1135,39 +1088,106 @@ proc run_election { ecmd celist errcmd priority crsh qdir msg elector \
}
}
+ global elected_event
+ global elected_env
+ set elected_event 0
+ set c_elected_event 0
+ set elected_env "NONE"
+
+ set orig_tries $tries
if { $crashing == 1 } {
tclsleep 10
} else {
+ set retry_cnt 0
while { 1 } {
set nproced 0
set he 0
- set nm 0
- set nm2 0
+ set winning_envid -1
+ set c_winning_envid -1
foreach pair $cenvlist {
set he 0
+ set unavail 0
set envid [lindex $pair 1]
set i [expr $envid - 2]
set clientenv($i) [lindex $pair 0]
- set child_done [check_election $elect_pipe($i) nm2]
- if { $got_newmaster == 0 && $nm2 != 0 } {
- error_check_good newmaster_is_master2 $nm2 \
- [expr $win + 2]
- set got_newmaster $nm2
-
- # If this env is the new master, it needs to
- # configure itself as such--this is a different
- # env handle from the one that performed the
- # election.
- if { $nm2 == $envid } {
- error_check_good make_master($i) \
- [$clientenv($i) rep_start -master] \
- 0
+
+ # If the "elected" event is received by the
+ # child process, the env set up in that child
+ # is the elected env.
+ set child_done [check_election $elect_pipe($i)\
+ unavail c_elected_event c_elected_env]
+ if { $c_elected_event != 0 } {
+ set elected_event 1
+ set c_winning_envid $envid
+ set c_elected_event 0
+ }
+
+ incr nproced [replprocessqueue \
+ $clientenv($i) $envid 0 he]
+# puts "Tries $tries:\
+# Processed queue for client $i, $nproced msgs he $he unavail $unavail"
+
+ # Check for completed election. If it's the
+ # first time we've noticed it, deal with it.
+ if { $elected_event == 1 && \
+ $got_newmaster == 0 } {
+ set got_newmaster 1
+
+ # Find env id of winner.
+ if { $c_winning_envid != -1 } {
+ set winning_envid \
+ $c_winning_envid
+ set c_winning_envid -1
+ } else {
+ foreach pair $cenvlist {
+ if { [lindex $pair 0]\
+ == $elected_env } {
+ set winning_envid \
+ [lindex $pair 1]
+ break
+ }
+ }
+ }
+
+ # Make sure it's the expected winner.
+ error_check_good right_winner \
+ $winning_envid [expr $win + 2]
+
+ # Reconfigure winning env as master.
+ if { $ignore == 0 } {
+ error_check_good \
+ make_master($i) \
+ [$clientenv($i) \
+ rep_start -master] 0
}
+
+ # Occasionally force new log records
+ # to be written.
+ set write [berkdb random_int 1 10]
+ if { $write == 1 } {
+ set db [eval berkdb_open \
+ -env $clientenv($i) \
+ -auto_commit $dbname]
+ error_check_good dbopen \
+ [is_valid_db $db] TRUE
+ error_check_good dbclose \
+ [$db close] 0
+ }
+ }
+
+ # If the previous election failed with a
+ # timeout and we need to retry because we
+ # are testing varying site timeouts, force
+ # a hold election to start a new one.
+ if { $unavail && $retry && $retry_cnt < $max_retry} {
+ incr retry_cnt
+ puts "\t\t$msg.2.b: Client $i timed\
+ out. Retry $retry_cnt\
+ of max $max_retry"
+ set he 1
+ set tries $orig_tries
}
- incr nproced \
- [replprocessqueue $clientenv($i) $envid 0 he nm]
-# puts "Tries $tries: Processed queue for client $i, $nproced msgs he $he nm $nm nm2 $nm2"
if { $he == 1 } {
#
# Only close down the election pipe if the
@@ -1188,44 +1208,25 @@ proc run_election { ecmd celist errcmd priority crsh qdir msg elector \
set elect_pipe($i) [start_election \
$pfx $qdir \
$env_cmd($i) $nsites \
- $nvotes $pri($i) $elect_timeout]
+ $nvotes $pri($i) $e_timeout($i)]
set got_hold_elect($i) 1
}
}
- if { $nm != 0 } {
- error_check_good newmaster_is_master $nm \
- [expr $win + 2]
- set got_newmaster $nm
-
- # If this env is the new master, it needs to
- # configure itself as such--this is a different
- # env handle from the one that performed the
- # election.
- if { $nm == $envid } {
- error_check_good make_master($i) \
- [$clientenv($i) rep_start -master] \
- 0
- # Occasionally force new log records
- # to be written.
- set write [berkdb random_int 1 10]
- if { $write == 1 } {
- set db [eval \
- berkdb_open -env \
- $clientenv($i) \
- -auto_commit $dbname]
- error_check_good dbopen \
- [is_valid_db $db] TRUE
- error_check_good dbclose \
- [$db close] 0
- }
- }
- }
}
# We need to wait around to make doubly sure that the
# election has finished...
if { $nproced == 0 } {
incr tries -1
+ #
+ # If we have a newmaster already, set tries
+ # down to just allow straggling messages to
+ # be processed. Tries could be a very large
+ # number if we have long timeouts.
+ #
+ if { $got_newmaster != 0 && $tries > 10 } {
+ set tries 10
+ }
if { $tries == 0 } {
break
} else {
@@ -1236,10 +1237,14 @@ proc run_election { ecmd celist errcmd priority crsh qdir msg elector \
}
}
- # Verify that expected winner is actually the winner.
- error_check_good "client $win wins" $got_newmaster [expr $win + 2]
- }
+ # If we did get a new master, its identity was checked
+ # at that time. But we still have to make sure that we
+ # didn't just time out.
+ if { $got_newmaster == 0 && $timeout_ok == 0 } {
+ error "FAIL: Did not elect new master."
+ }
+ }
cleanup_elections
#
@@ -1253,6 +1258,7 @@ proc run_election { ecmd celist errcmd priority crsh qdir msg elector \
if { $reopen == 1 } {
puts "\t\t$msg.3: Closing new master and reopening as client"
+ error_check_good log_flush [$clientenv($win) log_flush] 0
error_check_good newmaster_close [$clientenv($win) close] 0
set clientenv($win) [eval $env_cmd($win)]
@@ -1265,37 +1271,20 @@ proc run_election { ecmd celist errcmd priority crsh qdir msg elector \
}
}
-proc got_newmaster { cenv i newmaster win {dbname "test.db"} } {
- upvar $cenv clientenv
-
- # Check that the new master we got is the one we expected.
- error_check_good newmaster_is_master $newmaster [expr $win + 2]
-
- # If this env is the new master, it needs to configure itself
- # as such -- this is a different env handle from the one that
- # performed the election.
- if { $nm == $envid } {
- error_check_good make_master($i) \
- [$clientenv($i) rep_start -master] 0
- # Occasionally force new log records to be written.
- set write [berkdb random_int 1 10]
- if { $write == 1 } {
- set db [eval berkdb_open -env $clientenv($i) \
- -auto_commit -create -btree $dbname]
- error_check_good dbopen [is_valid_db $db] TRUE
- error_check_good dbclose [$db close] 0
- }
- }
-}
-
-proc check_election { id newmasterp } {
+proc check_election { id unavailp elected_eventp elected_envp } {
source ./include.tcl
if { $id == "INVALID" } {
return 0
}
- upvar $newmasterp newmaster
- set newmaster 0
+ upvar $unavailp unavail
+ upvar $elected_eventp elected_event
+ upvar $elected_envp elected_env
+
+ set unavail 0
+ set elected_event 0
+ set elected_env "NONE"
+
set res [catch {open $testdir/ELECTION_RESULT.$id} nmid]
if { $res != 0 } {
return 0
@@ -1303,8 +1292,12 @@ proc check_election { id newmasterp } {
while { [gets $nmid val] != -1 } {
# puts "result $id: $val"
set str [lindex $val 0]
- if { [is_substr $str NEWMASTER] } {
- set newmaster [lindex $val 1]
+ if { [is_substr $val UNAVAIL] } {
+ set unavail 1
+ }
+ if { [is_substr $val ELECTED] } {
+ set elected_event 1
+ set elected_env [lindex $val 1]
}
}
close $nmid
@@ -1313,10 +1306,15 @@ proc check_election { id newmasterp } {
proc close_election { i } {
global elections_in_progress
+ global noenv_messaging
global qtestdir
+ if { $noenv_messaging == 1 } {
+ set testdir $qtestdir
+ }
+
set t $elections_in_progress($i)
- puts $t "replclose \$qtestdir/MSGQUEUEDIR"
+ puts $t "replclose \$testdir/MSGQUEUEDIR"
puts $t "\$dbenv close"
close $t
unset elections_in_progress($i)
@@ -1676,7 +1674,7 @@ proc rep_test_upg { method env repdb {nentries 10000} \
set t [$env txn]
error_check_good txn [is_valid_txn $t $env] TRUE
set txn "-txn $t"
-puts "rep_test_upg: put $count of $nentries: key $key, data $str"
+# puts "rep_test_upg: put $count of $nentries: key $key, data $str"
set ret [eval \
{$db put} $txn $pflags {$key [chop_data $method $str]}]
error_check_good put $ret 0
@@ -1779,6 +1777,8 @@ proc process_msgs { elist {perm_response 0} {dupp NONE} {errp NONE} \
proc proc_msgs_once { elist {dupp NONE} {errp NONE} } {
+ global noenv_messaging
+
if { [string compare $dupp NONE] != 0 } {
upvar $dupp dupmaster
set dupmaster 0
@@ -1799,8 +1799,14 @@ proc proc_msgs_once { elist {dupp NONE} {errp NONE} } {
set envid [lindex $pair 1]
#
# If we need to send in all the other args
- incr nproced [replprocessqueue $envname $envid \
- 0 NONE NONE dupmaster errorp]
+# puts "Call replpq with on $envid"
+ if { $noenv_messaging } {
+ incr nproced [replprocessqueue_noenv $envname $envid \
+ 0 NONE dupmaster errorp]
+ } else {
+ incr nproced [replprocessqueue $envname $envid \
+ 0 NONE dupmaster errorp]
+ }
#
# If the user is expecting to handle an error and we get
# one, return the error immediately.
@@ -1809,14 +1815,15 @@ proc proc_msgs_once { elist {dupp NONE} {errp NONE} } {
return 0
}
if { $errorp != 0 && $errorp != "NONE" } {
+# puts "Returning due to error $errorp"
return 0
}
}
return $nproced
}
-proc rep_verify { masterdir masterenv clientdir clientenv {init_test 0} \
- {match 1} {logcompare 1} {dbname "test.db"} } {
+proc rep_verify { masterdir masterenv clientdir clientenv \
+ {compare_shared_portion 0} {match 1} {logcompare 1} {dbname "test.db"} } {
global util_path
global encrypt
global passwd
@@ -1845,31 +1852,45 @@ proc rep_verify { masterdir masterenv clientdir clientenv {init_test 0} \
# Logs first, if specified ...
#
- # If init_test is set, we need to run db_printlog on the log
- # subset that the client has. The master may have more (earlier)
- # log files.
+ # If compare_shared_portion is set, run db_printlog on the log
+ # subset that both client and master have. Either the client or
+ # the master may have more (earlier) log files, due to internal
+ # initialization, in-memory log wraparound, or other causes.
#
if { $logcompare } {
- set margs ""
- if { $init_test } {
+ set args ""
+ if { $compare_shared_portion } {
+ set logc [$masterenv log_cursor]
+ error_check_good logc [is_valid_logc $logc $masterenv] TRUE
+ set first [$logc get -first]
+ error_check_good close [$logc close] 0
+ set m_lsn [lindex $first 0]
+
set logc [$clientenv log_cursor]
error_check_good logc [is_valid_logc $logc $clientenv] TRUE
set first [$logc get -first]
error_check_good close [$logc close] 0
- set lsn [lindex $first 0]
+ set c_lsn [lindex $first 0]
+
+ if { [$masterenv log_compare $m_lsn $c_lsn] < 0 } {
+ set lsn $c_lsn
+ } else {
+ set lsn $m_lsn
+ }
+
set file [lindex $lsn 0]
set off [lindex $lsn 1]
- set margs "-b $file/$off"
+ set args "-b $file/$off"
}
set encargs ""
if { $encrypt == 1 } {
set encargs " -P $passwd "
}
- set stat [catch {eval exec $util_path/db_printlog $margs \
+ set stat [catch {eval exec $util_path/db_printlog $args \
$encargs -h $masterdir > $masterdir/prlog} result]
error_check_good stat_mprlog $stat 0
- set stat [catch {eval exec $util_path/db_printlog \
+ set stat [catch {eval exec $util_path/db_printlog $args \
$encargs -h $clientdir > $clientdir/prlog} result]
error_check_good stat_cprlog $stat 0
if { $match } {
@@ -1890,7 +1911,7 @@ proc rep_verify { masterdir masterenv clientdir clientenv {init_test 0} \
set db2 [eval {berkdb_open_noerr} -env $clientenv -rdonly $dbname]
if { $match } {
- error_check_good comparedbs [db_compare \
+ error_check_good [concat comparedbs. $dbname] [db_compare \
$db1 $db2 $masterdir/$dbname $clientdir/$dbname] 0
} else {
error_check_bad comparedbs [db_compare \
@@ -1900,12 +1921,126 @@ proc rep_verify { masterdir masterenv clientdir clientenv {init_test 0} \
error_check_good db2_close [$db2 close] 0
}
-proc rep_startup_event { event } {
+proc rep_event { env eventlist } {
global startup_done
+ global elected_event
+ global elected_env
+
+ set event [lindex $eventlist 0]
+# puts "rep_event: Got event $event on env $env"
+ set eventlength [llength $eventlist]
- # puts "rep_startup_event: Got event $event"
if { $event == "startupdone" } {
+ error_check_good event_nodata $eventlength 1
set startup_done 1
}
+ if { $event == "elected" } {
+ error_check_good event_nodata $eventlength 1
+ set elected_event 1
+ set elected_env $env
+ }
+ if { $event == "newmaster" } {
+ error_check_good eiddata $eventlength 2
+ set event_newmasterid [lindex $eventlist 1]
+ }
return
}
+
+# Return a list of TCP port numbers that are not currently in use on
+# the local system. Note that this doesn't actually reserve the
+# ports, so it's possible that by the time the caller tries to use
+# them, another process could have taken one of them. But for our
+# purposes that's unlikely enough that this is still useful: it's
+# still better than trying to find hard-coded port numbers that will
+# always be available.
+#
+proc available_ports { n } {
+ set ports {}
+ set socks {}
+
+ while {[incr n -1] >= 0} {
+ set sock [socket -server Unused -myaddr localhost 0]
+ set port [lindex [fconfigure $sock -sockname] 2]
+
+ lappend socks $sock
+ lappend ports $port
+ }
+
+ foreach sock $socks {
+ close $sock
+ }
+ return $ports
+}
+
+# Wait (a limited amount of time) for the given client environment to achieve
+# the "start-up done" state.
+#
+proc await_startup_done { env { limit 5 } } {
+ for {set i 0} {$i < $limit} {incr i} {
+ if {[stat_field $env rep_stat "Startup complete"]} {
+ break
+ }
+ tclsleep 1
+ }
+}
+
+proc do_leaseop { env db method key envlist { domsgs 1 } } {
+ global alphabet
+
+ #
+ # Put a txn to the database. Process messages to envlist
+ # if directed to do so. Read data on the master, ignoring
+ # leases (should always succeed).
+ #
+ set num [berkdb random_int 1 100]
+ set data $alphabet.$num
+ set t [$env txn]
+ error_check_good txn [is_valid_txn $t $env] TRUE
+ set txn "-txn $t"
+ set ret [eval \
+ {$db put} $txn {$key [chop_data $method $data]}]
+ error_check_good put $ret 0
+ error_check_good txn [$t commit] 0
+
+ if { $domsgs } {
+ process_msgs $envlist
+ }
+
+ #
+ # Now make sure we can successfully read on the master
+ # if we ignore leases. That should always work. The
+ # caller will do any lease related calls and checks
+ # that are specific to the test.
+ #
+ set kd [$db get -nolease $key]
+ set curs [$db cursor]
+ set ckd [$curs get -nolease -set $key]
+ $curs close
+ error_check_good kd [llength $kd] 1
+ error_check_good ckd [llength $ckd] 1
+}
+
+#
+# Get the given key, expecting status depending on whether leases
+# are currently expected to be valid or not.
+#
+proc check_leaseget { db key getarg status } {
+ set stat [catch {eval {$db get} $getarg $key} kd]
+ if { $status != 0 } {
+ error_check_good get_result $stat 1
+ error_check_good kd_check \
+ [is_substr $kd $status] 1
+ } else {
+ error_check_good get_result $stat $status
+ }
+ set curs [$db cursor]
+ set stat [catch {eval {$curs get} $getarg -set $key} kd]
+ if { $status != 0 } {
+ error_check_good get_result2 $stat 1
+ error_check_good kd_check \
+ [is_substr $kd $status] 1
+ } else {
+ error_check_good get_result2 $stat $status
+ }
+ $curs close
+}
diff --git a/db/test/reputilsnoenv.tcl b/db/test/reputilsnoenv.tcl
new file mode 100644
index 000000000..9d0c0dadc
--- /dev/null
+++ b/db/test/reputilsnoenv.tcl
@@ -0,0 +1,486 @@
+#
+# The procs in this file are used for replication messaging
+# ONLY when the default mechanism of setting up a queue of
+# messages in a environment is not possible. This situation
+# is fairly rare, but it is necessary when a replication
+# test simultaneously runs different versions of Berkeley DB,
+# because different versions cannot share an env.
+#
+# Note, all procs should be named with the suffix _noenv
+# so it's explicit that we are using them.
+#
+# Close up a replication group - close all message dbs.
+proc replclose_noenv { queuedir } {
+ global queuedbs machids
+
+ set dbs [array names queuedbs]
+ foreach tofrom $dbs {
+ set handle $queuedbs($tofrom)
+ error_check_good db_close [$handle close] 0
+ unset queuedbs($tofrom)
+ }
+
+ set machids {}
+}
+
+# Create a replication group for testing.
+proc replsetup_noenv { queuedir } {
+ global queuedbs machids
+
+ file mkdir $queuedir
+
+ # If there are any leftover handles, get rid of them.
+ set dbs [array names queuedbs]
+ foreach tofrom $dbs {
+ unset queuedbs($tofrom)
+ }
+ set machids {}
+}
+
+# Send function for replication.
+proc replsend_noenv { control rec fromid toid flags lsn } {
+ global is_repchild
+ global queuedbs machids
+ global drop drop_msg
+ global perm_sent_list
+ global anywhere
+ global qtestdir testdir
+
+ if { ![info exists qtestdir] } {
+ set qtestdir $testdir
+ }
+ set queuedir $qtestdir/MSGQUEUEDIR
+ set permflags [lsearch $flags "perm"]
+ if { [llength $perm_sent_list] != 0 && $permflags != -1 } {
+# puts "replsend_noenv sent perm message, LSN $lsn"
+ lappend perm_sent_list $lsn
+ }
+
+ #
+ # If we are testing with dropped messages, then we drop every
+ # $drop_msg time. If we do that just return 0 and don't do
+ # anything.
+ #
+ if { $drop != 0 } {
+ incr drop
+ if { $drop == $drop_msg } {
+ set drop 1
+ return 0
+ }
+ }
+ # XXX
+ # -1 is DB_BROADCAST_EID
+ if { $toid == -1 } {
+ set machlist $machids
+ } else {
+ set m NULL
+ # If we can send this anywhere, send it to the first id
+ # we find that is neither toid or fromid. If we don't
+ # find any other candidates, this falls back to the
+ # original toid.
+ if { $anywhere != 0 } {
+ set anyflags [lsearch $flags "any"]
+ if { $anyflags != -1 } {
+ foreach m $machids {
+ if { $m == $fromid || $m == $toid } {
+ continue
+ }
+ set machlist [list $m]
+ break
+ }
+ }
+ }
+ #
+ # If we didn't find a different site, fall back
+ # to the toid.
+ #
+ if { $m == "NULL" } {
+ set machlist [list $toid]
+ }
+ }
+ foreach m $machlist {
+ # Do not broadcast to self.
+ if { $m == $fromid } {
+ continue
+ }
+ # Find the handle for the right message file.
+ set pid [pid]
+ set db $queuedbs($m.$fromid.$pid)
+ set stat [catch {$db put -append [list $control $rec $fromid]} ret]
+ }
+ if { $is_repchild } {
+ replready_noenv $fromid from
+ }
+
+ return 0
+}
+
+# Discard all the pending messages for a particular site.
+proc replclear_noenv { machid {tf "to"}} {
+ global queuedbs qtestdir testdir
+
+ if { ![info exists qtestdir] } {
+ set qtestdir $testdir
+ }
+ set queuedir $qtestdir/MSGQUEUEDIR
+ set orig [pwd]
+
+ cd $queuedir
+ if { $tf == "to" } {
+ set msgdbs [glob -nocomplain ready.$machid.*]
+ } else {
+ set msgdbs [glob -nocomplain ready.*.$machid.*]
+ }
+ foreach m $msgdbs {
+ file delete -force $m
+ }
+ cd $orig
+ set dbs [array names queuedbs]
+ foreach tofrom $dbs {
+ # Process only messages _to_ the specified machid.
+ if { [string match $machid.* $tofrom] == 1 } {
+ set db $queuedbs($tofrom)
+ set dbc [$db cursor]
+ for { set dbt [$dbc get -first] } \
+ { [llength $dbt] > 0 } \
+ { set dbt [$dbc get -next] } {
+ error_check_good \
+ replclear($machid)_del [$dbc del] 0
+ }
+ error_check_good replclear($db)_dbc_close [$dbc close] 0
+ }
+ }
+ cd $queuedir
+ if { $tf == "to" } {
+ set msgdbs [glob -nocomplain temp.$machid.*]
+ } else {
+ set msgdbs [glob -nocomplain temp.*.$machid.*]
+ }
+ foreach m $msgdbs {
+# file delete -force $m
+ }
+ cd $orig
+}
+
+# Makes messages available to replprocessqueue by closing and
+# renaming the message files. We ready the files for one machine
+# ID at a time -- just those "to" or "from" the machine we want to
+# process, depending on 'tf'.
+proc replready_noenv { machid tf } {
+ global queuedbs machids
+ global counter
+ global qtestdir testdir
+
+ if { ![info exists qtestdir] } {
+ set qtestdir $testdir
+ }
+ set queuedir $qtestdir/MSGQUEUEDIR
+
+ set pid [pid]
+ #
+ # Close the temporary message files for the specified machine.
+ # Only close it if there are messages available.
+ #
+ set dbs [array names queuedbs]
+ set closed {}
+ foreach tofrom $dbs {
+ set toidx [string first . $tofrom]
+ set toid [string replace $tofrom $toidx end]
+ set fidx [expr $toidx + 1]
+ set fromidx [string first . $tofrom $fidx]
+ #
+ # First chop off the end, then chop off the toid
+ # in the beginning.
+ #
+ set fromid [string replace $tofrom $fromidx end]
+ set fromid [string replace $fromid 0 $toidx]
+ if { ($tf == "to" && $machid == $toid) || \
+ ($tf == "from" && $machid == $fromid) } {
+ set nkeys [stat_field $queuedbs($tofrom) \
+ stat "Number of keys"]
+ if { $nkeys != 0 } {
+ lappend closed \
+ [list $toid $fromid temp.$tofrom]
+ error_check_good temp_close \
+ [$queuedbs($tofrom) close] 0
+ }
+ }
+ }
+
+ # Rename the message files.
+ set cwd [pwd]
+ foreach filename $closed {
+ set toid [lindex $filename 0]
+ set fromid [lindex $filename 1]
+ set fname [lindex $filename 2]
+ set tofrom [string replace $fname 0 4]
+ incr counter($machid)
+ cd $queuedir
+# puts "$queuedir: Msg ready $fname to ready.$tofrom.$counter($machid)"
+ file rename -force $fname ready.$tofrom.$counter($machid)
+ cd $cwd
+ replsetuptempfile_noenv $toid $fromid $queuedir
+
+ }
+}
+
+# Add a machine to a replication environment. This checks
+# that we have not already established that machine id, and
+# adds the machid to the list of ids.
+proc repladd_noenv { machid } {
+ global queuedbs machids counter qtestdir testdir
+
+ if { ![info exists qtestdir] } {
+ set qtestdir $testdir
+ }
+ set queuedir $qtestdir/MSGQUEUEDIR
+ if { [info exists machids] } {
+ if { [lsearch -exact $machids $machid] >= 0 } {
+ error "FAIL: repladd_noenv: machid $machid already exists."
+ }
+ }
+
+ set counter($machid) 0
+ lappend machids $machid
+
+ # Create all the databases that receive messages sent _to_
+ # the new machid.
+ replcreatetofiles_noenv $machid $queuedir
+
+ # Create all the databases that receive messages sent _from_
+ # the new machid.
+ replcreatefromfiles_noenv $machid $queuedir
+}
+
+# Creates all the databases that a machid needs for receiving messages
+# from other participants in a replication group. Used when first
+# establishing the temp files, but also used whenever replready_noenv moves
+# the temp files away, because we'll need new files for any future messages.
+proc replcreatetofiles_noenv { toid queuedir } {
+ global machids
+
+ foreach m $machids {
+ # We don't need a file for a machid to send itself messages.
+ if { $m == $toid } {
+ continue
+ }
+ replsetuptempfile_noenv $toid $m $queuedir
+ }
+}
+
+# Creates all the databases that a machid needs for sending messages
+# to other participants in a replication group. Used when first
+# establishing the temp files only. Replready moves files based on
+# recipient, so we recreate files based on the recipient, also.
+proc replcreatefromfiles_noenv { fromid queuedir } {
+ global machids
+
+ foreach m $machids {
+ # We don't need a file for a machid to send itself messages.
+ if { $m == $fromid } {
+ continue
+ }
+ replsetuptempfile_noenv $m $fromid $queuedir
+ }
+}
+
+proc replsetuptempfile_noenv { to from queuedir } {
+ global queuedbs
+
+ set pid [pid]
+# puts "Open new temp.$to.$from.$pid"
+ set queuedbs($to.$from.$pid) [berkdb_open -create -excl -recno\
+ -renumber $queuedir/temp.$to.$from.$pid]
+ error_check_good open_queuedbs [is_valid_db $queuedbs($to.$from.$pid)] TRUE
+}
+
+# Process a queue of messages, skipping every "skip_interval" entry.
+# We traverse the entire queue, but since we skip some messages, we
+# may end up leaving things in the queue, which should get picked up
+# on a later run.
+proc replprocessqueue_noenv { dbenv machid { skip_interval 0 } { hold_electp NONE } \
+ { dupmasterp NONE } { errp NONE } } {
+ global errorCode
+ global perm_response_list
+ global qtestdir testdir
+
+ # hold_electp is a call-by-reference variable which lets our caller
+ # know we need to hold an election.
+ if { [string compare $hold_electp NONE] != 0 } {
+ upvar $hold_electp hold_elect
+ }
+ set hold_elect 0
+
+ # dupmasterp is a call-by-reference variable which lets our caller
+ # know we have a duplicate master.
+ if { [string compare $dupmasterp NONE] != 0 } {
+ upvar $dupmasterp dupmaster
+ }
+ set dupmaster 0
+
+ # errp is a call-by-reference variable which lets our caller
+ # know we have gotten an error (that they expect).
+ if { [string compare $errp NONE] != 0 } {
+ upvar $errp errorp
+ }
+ set errorp 0
+
+ set nproced 0
+
+ set queuedir $qtestdir/MSGQUEUEDIR
+# puts "replprocessqueue_noenv: Make ready messages to eid $machid"
+
+ # Change directories temporarily so we get just the msg file name.
+ set cwd [pwd]
+ cd $queuedir
+ set msgdbs [glob -nocomplain ready.$machid.*]
+# puts "$queuedir.$machid: My messages: $msgdbs"
+ cd $cwd
+
+ foreach msgdb $msgdbs {
+ set db [berkdb_open $queuedir/$msgdb]
+ set dbc [$db cursor]
+
+ error_check_good process_dbc($machid) \
+ [is_valid_cursor $dbc $db] TRUE
+
+ for { set dbt [$dbc get -first] } \
+ { [llength $dbt] != 0 } \
+ { set dbt [$dbc get -next] } {
+ set data [lindex [lindex $dbt 0] 1]
+ set recno [lindex [lindex $dbt 0] 0]
+
+ # If skip_interval is nonzero, we want to process
+ # messages out of order. We do this in a simple but
+ # slimy way -- continue walking with the cursor
+ # without processing the message or deleting it from
+ # the queue, but do increment "nproced". The way
+ # this proc is normally used, the precise value of
+ # nproced doesn't matter--we just don't assume the
+ # queues are empty if it's nonzero. Thus, if we
+ # contrive to make sure it's nonzero, we'll always
+ # come back to records we've skipped on a later call
+ # to replprocessqueue. (If there really are no records,
+ # we'll never get here.)
+ #
+ # Skip every skip_interval'th record (and use a
+ # remainder other than zero so that we're guaranteed
+ # to really process at least one record on every call).
+ if { $skip_interval != 0 } {
+ if { $nproced % $skip_interval == 1 } {
+ incr nproced
+ set dbt [$dbc get -next]
+ continue
+ }
+ }
+
+ # We need to remove the current message from the
+ # queue, because we're about to end the transaction
+ # and someone else processing messages might come in
+ # and reprocess this message which would be bad.
+ #
+ error_check_good queue_remove [$dbc del] 0
+
+ # We have to play an ugly cursor game here: we
+ # currently hold a lock on the page of messages, but
+ # rep_process_message might need to lock the page with
+ # a different cursor in order to send a response. So
+ # save the next recno, close the cursor, and then
+ # reopen and reset the cursor. If someone else is
+ # processing this queue, our entry might have gone
+ # away, and we need to be able to handle that.
+ #
+# error_check_good dbc_process_close [$dbc close] 0
+
+ set ret [catch {$dbenv rep_process_message \
+ [lindex $data 2] [lindex $data 0] \
+ [lindex $data 1]} res]
+
+ # Save all ISPERM and NOTPERM responses so we can
+ # compare their LSNs to the LSN in the log. The
+ # variable perm_response_list holds the entire
+ # response so we can extract responses and LSNs as
+ # needed.
+ #
+ if { [llength $perm_response_list] != 0 && \
+ ([is_substr $res ISPERM] || [is_substr $res NOTPERM]) } {
+ lappend perm_response_list $res
+ }
+
+ if { $ret != 0 } {
+ if { [string compare $errp NONE] != 0 } {
+ set errorp "$dbenv $machid $res"
+ } else {
+ error "FAIL:[timestamp]\
+ rep_process_message returned $res"
+ }
+ }
+
+ incr nproced
+ if { $ret == 0 } {
+ set rettype [lindex $res 0]
+ set retval [lindex $res 1]
+ #
+ # Do nothing for 0 and NEWSITE
+ #
+ if { [is_substr $rettype HOLDELECTION] } {
+ set hold_elect 1
+ }
+ if { [is_substr $rettype DUPMASTER] } {
+ set dupmaster "1 $dbenv $machid"
+ }
+ if { [is_substr $rettype NOTPERM] || \
+ [is_substr $rettype ISPERM] } {
+ set lsnfile [lindex $retval 0]
+ set lsnoff [lindex $retval 1]
+ }
+ }
+
+ if { $errorp != 0 } {
+ # Break on an error, caller wants to handle it.
+ break
+ }
+ if { $hold_elect == 1 } {
+ # Break on a HOLDELECTION, for the same reason.
+ break
+ }
+ if { $dupmaster == 1 } {
+ # Break on a DUPMASTER, for the same reason.
+ break
+ }
+
+ }
+ error_check_good dbc_close [$dbc close] 0
+
+ #
+ # Check the number of keys remaining because we only
+ # want to rename to done, message file that are
+ # fully processed. Some message types might break
+ # out of the loop early and we want to process
+ # the remaining messages the next time through.
+ #
+ set nkeys [stat_field $db stat "Number of keys"]
+ error_check_good db_close [$db close] 0
+
+ if { $nkeys == 0 } {
+ set dbname [string replace $msgdb 0 5 done.]
+ #
+ # We have to do a special dance to get rid of the
+ # empty messaging files because of the way Windows
+ # handles open files marked for deletion.
+ # On Windows, a file is marked for deletion but
+ # does not actually get deleted until the last handle
+ # is closed. This causes a problem when a test tries
+ # to create a new file with a previously-used name,
+ # and Windows believes the old file still exists.
+ # Therefore, we rename the files before deleting them,
+ # to guarantee they are out of the way.
+ #
+ file rename -force $queuedir/$msgdb $queuedir/$dbname
+ file delete -force $queuedir/$dbname
+ }
+ }
+ # Return the number of messages processed.
+ return $nproced
+}
+
diff --git a/db/test/rpc001.tcl b/db/test/rpc001.tcl
index d24c4f9be..acbae1fe8 100644
--- a/db/test/rpc001.tcl
+++ b/db/test/rpc001.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: rpc001.tcl,v 12.4 2006/08/24 14:46:38 bostic Exp $
+# $Id: rpc001.tcl,v 12.6 2007/05/17 15:15:55 bostic Exp $
#
# TEST rpc001
# TEST Test RPC server timeouts for cursor, txn and env handles.
diff --git a/db/test/rpc002.tcl b/db/test/rpc002.tcl
index 78e4068a7..a6c7a7ecc 100644
--- a/db/test/rpc002.tcl
+++ b/db/test/rpc002.tcl
@@ -1,9 +1,8 @@
# Sel the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: rpc002.tcl,v 12.5 2006/08/24 14:46:38 bostic Exp $
+# $Id: rpc002.tcl,v 12.8 2007/07/09 16:33:08 bostic Exp $
#
# TEST rpc002
# TEST Test invalid RPC functions and make sure we error them correctly
@@ -135,8 +134,6 @@ proc rpc002 { } {
"Interface not supported by Berkeley DB RPC"] 1
puts "\tRpc002.d1: Try to upgrade a database"
- #
- # NOTE: the type of database doesn't matter, just use btree.
set stat [catch {eval {berkdb upgrade -env} $env $testfile} ret]
error_check_good dbupgrade $stat 1
error_check_good dbupgrade_err [is_substr $errorInfo \
diff --git a/db/test/rpc003.tcl b/db/test/rpc003.tcl
index fe3433007..0054cba28 100644
--- a/db/test/rpc003.tcl
+++ b/db/test/rpc003.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2001-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2001,2007 Oracle. All rights reserved.
#
-# $Id: rpc003.tcl,v 12.3 2006/08/24 14:46:38 bostic Exp $
+# $Id: rpc003.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# TEST rpc003
# TEST Test RPC and secondary indices.
diff --git a/db/test/rpc004.tcl b/db/test/rpc004.tcl
index a4c760375..ba1fade0f 100644
--- a/db/test/rpc004.tcl
+++ b/db/test/rpc004.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: rpc004.tcl,v 12.3 2006/08/24 14:46:38 bostic Exp $
+# $Id: rpc004.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# TEST rpc004
# TEST Test RPC server and security
diff --git a/db/test/rpc005.tcl b/db/test/rpc005.tcl
index a7b40e709..86fd45491 100644
--- a/db/test/rpc005.tcl
+++ b/db/test/rpc005.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: rpc005.tcl,v 12.3 2006/08/24 14:46:38 bostic Exp $
+# $Id: rpc005.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# TEST rpc005
# TEST Test RPC server handle ID sharing
diff --git a/db/test/rpc006.tcl b/db/test/rpc006.tcl
index cd7e06a55..29278edf2 100644
--- a/db/test/rpc006.tcl
+++ b/db/test/rpc006.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: rpc006.tcl,v 12.3 2006/08/24 14:46:38 bostic Exp $
+# $Id: rpc006.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# TEST rpc006
# TEST Test RPC server and multiple operations to server.
diff --git a/db/test/rsrc001.tcl b/db/test/rsrc001.tcl
index f93db65c0..7a76f5be6 100644
--- a/db/test/rsrc001.tcl
+++ b/db/test/rsrc001.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: rsrc001.tcl,v 12.3 2006/08/24 14:46:38 bostic Exp $
+# $Id: rsrc001.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# TEST rsrc001
# TEST Recno backing file test. Try different patterns of adding
diff --git a/db/test/rsrc002.tcl b/db/test/rsrc002.tcl
index 94660eeff..e41ba23b8 100644
--- a/db/test/rsrc002.tcl
+++ b/db/test/rsrc002.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: rsrc002.tcl,v 12.3 2006/08/24 14:46:38 bostic Exp $
+# $Id: rsrc002.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# TEST rsrc002
# TEST Recno backing file test #2: test of set_re_delim. Specify a backing
diff --git a/db/test/rsrc003.tcl b/db/test/rsrc003.tcl
index 9b1a751c0..cbb862a65 100644
--- a/db/test/rsrc003.tcl
+++ b/db/test/rsrc003.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: rsrc003.tcl,v 12.4 2006/09/12 13:11:37 bostic Exp $
+# $Id: rsrc003.tcl,v 12.6 2007/05/17 15:15:55 bostic Exp $
#
# TEST rsrc003
# TEST Recno backing file test. Try different patterns of adding
diff --git a/db/test/rsrc004.tcl b/db/test/rsrc004.tcl
index 40adb17a7..ddef0fbaf 100644
--- a/db/test/rsrc004.tcl
+++ b/db/test/rsrc004.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2001-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2001,2007 Oracle. All rights reserved.
#
-# $Id: rsrc004.tcl,v 12.3 2006/08/24 14:46:38 bostic Exp $
+# $Id: rsrc004.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# TEST rsrc004
# TEST Recno backing file test for EOF-terminated records.
diff --git a/db/test/scr001/chk.code b/db/test/scr001/chk.code
index 2bafc3974..17796bebf 100644
--- a/db/test/scr001/chk.code
+++ b/db/test/scr001/chk.code
@@ -1,10 +1,10 @@
#!/bin/sh -
#
-# $Id: chk.code,v 12.1 2005/10/15 15:25:05 bostic Exp $
+# $Id: chk.code,v 12.2 2007/04/20 13:50:31 bostic Exp $
#
# Check to make sure that the code samples in the documents build.
-d=../../../db_docs
+d=../../docs_src
[ -d $d ] || {
echo 'FAIL: cannot find source distribution directory.'
diff --git a/db/test/scr003/chk.define b/db/test/scr003/chk.define
index 1ccd74e55..cf43fb24c 100644
--- a/db/test/scr003/chk.define
+++ b/db/test/scr003/chk.define
@@ -1,6 +1,6 @@
#!/bin/sh -
#
-# $Id: chk.define,v 12.3 2006/07/12 21:12:17 bostic Exp $
+# $Id: chk.define,v 12.4 2007/04/20 13:53:41 bostic Exp $
#
# Check to make sure that all #defines are actually used.
# Check to make sure that all #defines start in column 1.
@@ -43,6 +43,7 @@ egrep '^#define' $d/dbinc/*.h $d/dbinc/*.in |
-e '/^DB_MAX_PAGES/d' \
-e '/^DB_PAGE_QUEUE_LEN/d' \
-e '/^DB_QAMOLDVER/d' \
+ -e '/^DB_SPARE_FLAG/d' \
-e '/^DB_TXNVERSION/d' \
-e '/^DB_UNUSED/d' \
-e '/^DEFINE_DB_CLASS/d' \
@@ -72,8 +73,10 @@ egrep '^#define' $d/dbinc/*.h $d/dbinc/*.in |
-e '/^UINT64_MAX/d' \
-e '/^VM_PAGESIZE/d' \
-e '/^WRAPPED_CLASS/d' \
+ -e '/^_WIN32_WINNT/d' \
-e '/^__BIT_TYPES_DEFINED__/d' \
-e '/^__DBC_INTERNAL/d' \
+ -e '/^__STDC__/d' \
-e '/^__lock_locker_hash/d' \
-e '/^i_/d' \
-e '/_H_/d' \
diff --git a/db/test/scr006/chk.offt b/db/test/scr006/chk.offt
index e6bb7b686..e720d25d7 100644
--- a/db/test/scr006/chk.offt
+++ b/db/test/scr006/chk.offt
@@ -1,6 +1,6 @@
#!/bin/sh -
#
-# $Id: chk.offt,v 12.2 2006/07/12 21:13:48 bostic Exp $
+# $Id: chk.offt,v 12.3 2007/04/20 13:57:50 bostic Exp $
#
# Make sure that no off_t's have snuck into the release.
@@ -15,6 +15,9 @@ t=__1
egrep -w off_t $d/*/*.[ch] $d/*/*.in |
sed -e "/#undef off_t/d" \
+ -e "/build_brew\//d" \
+ -e "/build_wince\//d" \
+ -e "/build_windows\//d" \
-e "/db_env_set_func_ftruncate/d" \
-e "/db_env_set_func_pread/d" \
-e "/db_env_set_func_pwrite/d" \
@@ -43,9 +46,7 @@ sed -e "/#undef off_t/d" \
-e "/os_truncate.c:.*offset = /d" \
-e "/test_perf\/perf_misc.c:/d" \
-e "/test_server\/dbs.c:/d" \
- -e "/test_vxworks\/vx_mutex.c:/d" \
- -e "/win_db.h:/d" \
- -e "/win_db.in/d" > $t
+ -e "/test_vxworks\/vx_mutex.c:/d" > $t
test -s $t && {
cat $t
diff --git a/db/test/scr008/chk.pubdef b/db/test/scr008/chk.pubdef
index f5e66ccbc..830887f64 100644
--- a/db/test/scr008/chk.pubdef
+++ b/db/test/scr008/chk.pubdef
@@ -3,7 +3,7 @@
# Reconcile the list of public defines with the man pages and the Java files.
d=../..
-docs=$d/../db_docs
+docs=$d/docs_src
[ -f $d/LICENSE ] || {
echo 'FAIL: cannot find source distribution directory.'
diff --git a/db/test/scr010/chk.str b/db/test/scr010/chk.str
index e1a17709f..db54eefae 100644
--- a/db/test/scr010/chk.str
+++ b/db/test/scr010/chk.str
@@ -1,6 +1,6 @@
#!/bin/sh -
#
-# $Id: chk.str,v 12.0 2004/11/17 03:44:44 bostic Exp $
+# $Id: chk.str,v 12.1 2007/04/20 14:25:47 bostic Exp $
#
# Check spelling in quoted strings.
@@ -21,7 +21,7 @@ sed -e '/^#include/d' \
-e 's/\\[nt]/ /g' \
`find $d -name '*.[ch]' -o -name '*.cpp' -o -name '*.java' |
sed '/\/perl\//d'` |
-spell | sort | comm -23 /dev/stdin spell.ok > $t1
+spell | sort -u | comm -23 /dev/stdin spell.ok > $t1
test -s $t1 && {
cat $t1
@@ -31,7 +31,7 @@ test -s $t1 && {
egrep -h '/\* | \* ' \
`find $d -name '*.[ch]' -o -name '*.cpp' | sed '/\/perl\//d'` |
-spell | sort | comm -23 /dev/stdin spell.ok | tee /tmp/f/1 > $t1
+spell | sort -u | comm -23 /dev/stdin spell.ok | tee /tmp/f/1 > $t1
test -s $t1 && {
cat $t1
diff --git a/db/test/scr010/spell.ok b/db/test/scr010/spell.ok
index cb182eb65..fe34da422 100644
--- a/db/test/scr010/spell.ok
+++ b/db/test/scr010/spell.ok
@@ -1,11 +1,14 @@
AAAA
+ABCDEFabcdef
ABS
ABSMODE
+ABc
ACK
ACKS
ADDR
ADDRINFO
AEE
+AEEApplet
AES
AIX's
AJVX
@@ -30,9 +33,11 @@ ATOL
AUTOCOMMIT
AUTOINIT
AUTOREMOVE
+AV
AccessExample
AccesssExample
Acflmo
+Acknowledgement
Acknowledgements
Acks
Aclmop
@@ -42,17 +47,24 @@ Addr
Ahlm
Ahm
Antoon
+App
+AppendRecnoTest
Applock
ArithmeticException
Arntzen
+ArrayIndex
ArrayList
+AssertionError
AssociateCallbacks
+AssociateTest
AttachCurrentThread
Aug
+BASETEST
BBBB
BC
BCFILprRsvVxX
BCc
+BDB
BDBXXXXX
BDBXXXXXX
BEGID
@@ -101,6 +113,7 @@ ByteArrayInputStream
ByteArrayOutputStream
ByteBuffer
C'est
+CACHESIZE
CALLBACK
CALLPGIN
CANONNAME
@@ -159,8 +172,12 @@ CXX
CacheFilePriority
CacheFileStats
CacheStats
+Cachesize
Callback
+Callbacks
+Cc
CdFILTvX
+Cf
Ch
ClassCastException
ClassCatalog
@@ -179,15 +196,20 @@ Config
CopyObjBytes
CreateEvent
CreateFile
+CreateFileForMapping
CreateFileMapping
CreateHashEntry
+CreateInstance
Crypto
CurrentTransaction
Cygwin
DATAHOME
+DB's
DBC
DBCursor
+DBDIR
DBENV
+DBGPRINTF
DBHOME
DBINFO
DBINIT
@@ -215,6 +237,7 @@ DBaa
DBaz
DBba
DBcursor
+DBs
DBz
DEADFILE
DECLS
@@ -232,6 +255,7 @@ DJ
DLFCN
DLL
DLLs
+DNS
DOALL
DONOTINDEX
DONTEXTEND
@@ -250,6 +274,7 @@ DUPONLY
DUPS
DUPSET
DUPSORT
+DWORD
DataBinding
DataBuffer
DataCursor
@@ -267,6 +292,7 @@ DataType
DataView
DatabaseEntry
DatabaseException
+DatabaseTest
DatabaseType
Db
DbAppDispatch
@@ -406,6 +432,7 @@ EFILEOPEN
EFSFULL
EFTYPE
EGENCHG
+EGENUPDATE
EHOSTDOWN
EHOSTUNREACH
EID
@@ -462,6 +489,7 @@ ENOTTY
ENT
ENV
ENV's
+ENVLINK
ENVVAR
ENXIO
EOFException
@@ -493,6 +521,7 @@ ESOCKTNOSUPPORT
ESPIPE
ESRCH
ESTALE
+ESTD
ETIME
ETIMEDOUT
ETOOMANYREFS
@@ -503,13 +532,16 @@ EWOULDBLOCK
EXCL
EXDEV
EXT
+Eefgh
Eefh
Egen
Elp
+EncryptTest
Endian
EntityBinding
EnumInit
EnumNetworkEvents
+Env
EnvAttr
EnvExample
EnvGetEncryptFlags
@@ -526,6 +558,7 @@ EnvVerbose
Equidistributed
Errcall
Errfile
+Errno
ErrorFunc
ErrorSetup
Errpfx
@@ -552,11 +585,13 @@ FF
FGETC
FGETS
FH
+FH's
FILEDONE
FILEID
FILELIST
FILENO
FILEOPEN
+FILEOPS
FILEWRITTEN
FIXEDLEN
FIXLEN
@@ -567,15 +602,20 @@ FML
FMT
FN
FNAME
+FNAMES
+FNFE
FOPEN
FOREACH
FP
FREELIST
+FREESPACE
+FS
FST
FSTAT
FSTATI
FTRUNCATE
FTYPE
+FULLSYNC
FWRITE
FastInputStream
FastOutputStream
@@ -609,6 +649,7 @@ GETADDRINFO
GETALL
GETCWD
GETDYNAMIC
+GETENV
GETNAME
GETOPT
GETRECNO
@@ -625,6 +666,7 @@ GetByteArray
GetByteArrayFromObj
GetConfig
GetDiskFreeSpace
+GetDiskFreeSpaceEx
GetEnvironmentVariable
GetFileInformationByHandle
GetFlags
@@ -641,6 +683,8 @@ GetLockDetect
GetLongFromObj
GetLsn
GetOpenFlag
+GetSystemTime
+GetSystemTimeAsFileTime
GetTimeout
GetUInt
GetUnsignedIntFromObj
@@ -669,6 +713,7 @@ HEURCOM
HEURHAZ
HEURMIX
HEURRB
+HFS
HKEYDATA
HMAC
HMETA
@@ -679,7 +724,10 @@ HOLDELECTION
HPPA
HPUX
HSEARCH
+HSTAT
+HSTRERROR
Harbison
+HashCompareTest
HashStats
Hashtable
HelloDatabaseWorld
@@ -697,11 +745,13 @@ IDs
IFF
IFILE
IFILEMGR
+IFile
IIL
IL
ILOCK
ILo
ILprR
+INADDR
INDX
INFOTYPE
INI
@@ -712,6 +762,8 @@ INITSPIN
INMEM
INMEMORY
INORDER
+INREPELECT
+INT
INTTYPES
INVAL
INVALIDID
@@ -733,6 +785,7 @@ ISALPHA
ISBIG
ISDIGIT
ISDUP
+ISHELL
ISPERM
ISPRINT
ISSET
@@ -753,9 +806,11 @@ Ik
IllegalArgumentException
IllegalStateException
IncrRefCount
+Index's
IndexOutOfBoundsException
Init
Initialise
+Inline
IntegrityConstraintException
Interp
InventoryDB
@@ -948,6 +1003,7 @@ MT
MULTIVERSION
MUNLOCK
MUNMAP
+MUTEX
MUTEXMGR
MUTEXREGION
MUTEXes
@@ -973,6 +1029,7 @@ Maxid
Maxkey
Mb
Mbytes
+McIlroy's
MemoryException
Mempool
Mersenne
@@ -983,6 +1040,7 @@ Minkey
Misc
MixColumn
MkDir
+Mobilus
MonTueWedThuFriSatSun
MoveFile
MoveFileEx
@@ -1010,12 +1068,15 @@ NCACHE
NCACHED
NDBM
NDIR
+NDX
NEEDSPLIT
NEEDSWAP
NEWCLIENT
NEWFILE
NEWMASTER
NEWSITE
+NEXTFILE
+NEXTINFO
NG
NL
NOARCHIVE
@@ -1032,6 +1093,7 @@ NOHEADER
NOKEY
NOLOCK
NOLOCKING
+NOLSN
NOMIGRATE
NOMMAP
NOMORE
@@ -1058,6 +1120,9 @@ NOTZERO
NOWAIT
NP
NRECS
+NREGION
+NS
+NSLOTS
NT
NTFS
NULL'ing
@@ -1075,6 +1140,7 @@ Ndbm
NdbmOpen
NewInfo
NewStringObj
+Newfile
Nishimura
NoP
NoqV
@@ -1165,6 +1231,7 @@ PROT
PSIZE
PSTAT
PTHREAD
+PTHREADS
PWRITE
PaRisc
PackedIntegerTest
@@ -1177,6 +1244,7 @@ PartData
PartKey
PartKeyBinding
PartValue
+PartialGetTest
Paulo
Perl
Pg
@@ -1188,6 +1256,7 @@ Phong
PlatformSDK
Posix
PowerPC
+Pre
PreparedTransaction
Prev
PrimaryKeyAssigner
@@ -1204,8 +1273,10 @@ QAMVERSION
QMETA
QNX
QPAGE
+QSORT
QUIESCED
QUOTESERVER
+Qsort
QueueStats
RB
RBBASE
@@ -1241,6 +1312,7 @@ RELIANTUNIX
REM
RENAMEMAGIC
REPCTL
+REPFLAGS
REPLOCKED
REPMGR
REPQUOTE
@@ -1259,6 +1331,7 @@ RINTERNAL
RIW
RLOCK
RM
+RMDIR
RMERR
RMFAIL
RMID
@@ -1296,8 +1369,11 @@ RepElect
RepElectResult
RepFlush
RepGetConfig
+RepLease
RepLimit
RepMgr
+RepMgrStat
+RepNoarchiveTimeout
RepProcessMessage
RepQuoteExample
RepRequest
@@ -1305,6 +1381,7 @@ RepStart
RepStat
RepSync
RepTransport
+RepVersion
ReplicationConfig
ReplicationDuplicateMasterException
ReplicationHandleDeadException
@@ -1314,12 +1391,16 @@ ReplicationJoinFailureException
ReplicationLockoutException
ReplicationManagerAckPolicy
ReplicationManagerStartPolicy
+ReplicationManagerStats
ReplicationSiteUnavailableException
ReplicationStats
ReplicationStatus
ReplicationTimeoutType
Repmgr
Repmgr's
+RepmgrConfigTest
+RepmgrElectionTest
+RepmgrStartupTest
ResetResult
ResolvePath
ReturnSetup
@@ -1341,11 +1422,14 @@ SC
SCHED
SCO
SCO's
+SDK
SDups
+SECS
SEGDATA
SEGID
SEM
SEMA
+SENDEVENT
SEP
SEQ
SERVERPROG
@@ -1372,6 +1456,7 @@ SKIPFIRSTKEY
SKU
SMerge
SNPRINTF
+SORTPAGE
SPACEONLY
SPL
SPLITOLD
@@ -1380,6 +1465,7 @@ SS
SSLeay
SSZ
STAILQ
+STARTSYNC
STARTUPDONE
STAT
STATS
@@ -1388,12 +1474,15 @@ STD
STDC
STDERR
STDINT
+STDLIB
STK
STR
STRCASECMP
STRCAT
STRCHR
STRDUP
+STRERROR
+STRFTIME
STRLIST
STRNCAT
STRNCMP
@@ -1409,7 +1498,9 @@ SWAPBYTES
SWIG's
SWITCHes
SWR
+SYMBIAN
SYSCONF
+SYSTEMTIME
SampleDatabase
SampleViews
Schlossnagle
@@ -1458,6 +1549,7 @@ SortedMap
SortedSet
Sparc
Splitp
+Standalone
Stat
Stats
Std
@@ -1483,6 +1575,7 @@ StoredValueSet
StringBuffer
StringDbt
Subdatabase
+Subdatabases
Subdb
Subname
SunOS
@@ -1492,6 +1585,7 @@ SupplierData
SupplierKey
SupplierKeyBinding
SupplierValue
+Symbian
SystemInfo
TAILQ
TCHAR
@@ -1503,6 +1597,7 @@ TESTTESTEST
TESTXADIR
THR
TID
+TIMESPEC
TLPUT
TM
TMASYNC
@@ -1583,6 +1678,7 @@ TestStore
TestTruncate
TestTxn
TestUtil
+TestUtils
TestXAServlet
Thang
Thies
@@ -1653,6 +1749,7 @@ USERMEM
UTF
UTFDataFormatException
UTS
+UVW
UX
Unencrypted
Unicode
@@ -1672,13 +1769,16 @@ VC
VER
VM
VMPAGESIZE
+VOTEs
VRFY
VSNPRINTF
VTALLY
VX
+VXWORKS
Var
Vc
VendorDB
+VerboseConfig
VersionMismatchException
Vo
Voter's
@@ -1707,6 +1807,7 @@ WW
WWRITE
Waitsfor
WebLogic
+WinCE
WinNT
WinXP
WriteFile
@@ -1736,6 +1837,7 @@ aaB
aaC
aaD
aaa
+aaaaa
aaaaaa
aaaaaaaaaaaaaaaaaaaaaa
aaaaab
@@ -1747,6 +1849,9 @@ ab
abc
abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq
abcdef
+abcdefghijklmnopqrstuvwxuz
+abcdefghijklmnopqrstuvwxyz
+abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
abs
abshome
absname
@@ -1757,6 +1862,8 @@ accessor
ack
ack'ed
ack's
+acknowledgement
+acknowledgements
acks
acplt
activekids
@@ -1766,14 +1873,17 @@ actualData
actualKey
acurs
ada
+add'l
addAll
addfamilylocker
+addl
addpage
addr
addrem
addrinfo
addrlen
addrp
+addrq
adh
adj
adjindx
@@ -1802,9 +1912,14 @@ amd
amx
antoon
anum
+ap
aparts
+api
apologise
+app
app's
+appendRecordNumber
+appendrecnotest
appexit
appl
appname
@@ -1824,10 +1939,12 @@ argv
arr
arraycopy
arraysz
+arw
asap
asites
asprintf
assertEquals
+associatetest
astubble
ata
atoi
@@ -1849,15 +1966,18 @@ badgen
badkey
badnum
bak
+bamc
barreto
baseClass
bb
bba
+bbbbb
bcopy
bcurs
bd
bdb
bdbcmds
+bde
beginInclusive
beginKey
beq
@@ -1878,6 +1998,7 @@ bigint
bigpages
bigpair
binding's
+bitmask
bitmasks
bk
blbs
@@ -1916,6 +2037,7 @@ bufs
bufsize
buildpartial
builtin
+bulkbufsize
bumpSize
bval
bylsn
@@ -1937,10 +2059,13 @@ cEelmNrtVxZ
caaaaa
cachep
cachesize
+cachesz
cadjust
call's
callback
callback's
+callbacks
+callbacktest
callbk
calloc
callocs
@@ -1962,6 +2087,8 @@ cdel
cds
cdsgroup
ceVv
+cefVv
+cefh
ceh
celmNrtVZ
celmNtV
@@ -2014,7 +2141,9 @@ clientdb
clientrun
clist
clnt
+clockskew
closeEnv
+closeddbtest
closeevent
closefiles
closehandle
@@ -2027,6 +2156,7 @@ cmds
cmp
cmpwi
cnt
+codegen
com
comm
compareDuplicates
@@ -2037,6 +2167,7 @@ concatdatakey
concatkeydata
conf
config
+configname
const
containsAll
containsKey
@@ -2049,6 +2180,7 @@ copyleft
copymap
copyout
copypage
+copypair
countElements
countRecords
countp
@@ -2068,6 +2200,7 @@ csp
csv
ct
ctime
+ctlflags
ctp
ctp's
ctps
@@ -2075,15 +2208,20 @@ ctx
ctxn
cuVv
curadj
+curalloc
+curdata
curfile
curinfo
curinval
curlist
curlsn
+curroffset
curslen
curslist
cursp
cursq
+curtime
+curwalk
cutlim
cuz
cxx
@@ -2095,11 +2233,14 @@ dataBinding
dataInput
dataOutput
dataToObject
+databasetest
databuf
datalen
datap
datapage
+datasize
datastr
+datastring
datatype
db
dbFileName
@@ -2195,6 +2336,7 @@ denom
dereffing
des
desc
+descheduled
deserialize
deserialized
deserializing
@@ -2202,11 +2344,13 @@ dest
detectp
dev
df
+dft
dh
diff
difflen
difftime
dir
+dir's
directio
dirent
dirf
@@ -2244,17 +2388,20 @@ dpages
dpair
dpgno
dr
+dref
dremoved
ds
dsearch
dsize
dst
dsync
+dt
dtab
dtabsize
dumptree
dup
dup'ed
+dupcnt
dupcompare
duperr
duplicate's
@@ -2292,6 +2439,7 @@ emt
encrpyting
encryptaes
encryptany
+encrypttest
endInclusive
endKey
endian
@@ -2301,6 +2449,8 @@ endname
endodata
endofile
endpath
+endsWith
+endtime
enqueuing
ent
entityBinding
@@ -2340,11 +2490,13 @@ errnum
erroring
errorret
errpfx
+errstream
errunlock
errx
esat
esec
esp
+etime
eusec
eval
eventproc
@@ -2380,6 +2532,7 @@ fcreate
fd
fd's
fdatasync
+fdlist
fdlock
fdm
fdp
@@ -2417,6 +2570,7 @@ fillf
fillfactor
fillpercent
finalcount
+findData
findFirst
finddatum
findlastckp
@@ -2435,6 +2589,7 @@ fmethod
fmsg
fmt
fn
+fnam
fname
fnl
fnp
@@ -2487,6 +2642,7 @@ ftruncate
ftype
fullhome
fullname
+fullnew
func
funcs
fv
@@ -2499,6 +2655,7 @@ gbytesp
gc
gc'ed
gcc
+gcount
gdb
gen
genrand
@@ -2509,6 +2666,7 @@ getCity
getClassFormat
getCollection
getCurrentKey
+getDBFileName
getData
getDbEnv
getDbt
@@ -2534,6 +2692,7 @@ getPartialOffset
getPrimaryKeyFormat
getPrimitiveBinding
getProperty
+getRecno
getRecordNumber
getSize
getString
@@ -2553,7 +2712,9 @@ getdata
getdynamic
getenv
gethostbyname
+getindex
getinfo
+getitrs
getjoin
getline
getlocker
@@ -2577,8 +2738,10 @@ getulong
getval
getzip
ghi
+gi
gid
gm
+gmtoff
golive
gonna
gotkey
@@ -2592,6 +2755,7 @@ gtrid
guesspgsize
guesstimated
hEvent
+hamc
handle's
handleException
happend
@@ -2600,6 +2764,8 @@ hardcoding
hasNext
hasPrevious
hashCode
+hashcompare
+hashcomparetest
hashhdr
hashinit
hashmeta
@@ -2644,8 +2810,11 @@ hq
href
hs
hsearch
+hstrerror
htab
+html
htonl
+http
httpd
iX
ia
@@ -2662,9 +2831,11 @@ idup
idup'ed
iface
ifdef
+ifdef's
iff
ifmt
ifndef
+ifp
ihold
iitem
ik
@@ -2711,6 +2882,7 @@ inpitem
inputOctets
inregion
insdel
+insertpair
int
intBitsToFloat
intValue
@@ -2752,6 +2924,7 @@ isdigit
isdone
isdst
isdup
+islease
isolder
isopd
ispget
@@ -2761,6 +2934,7 @@ isspace
istmp
isvalid
isync
+itemcount
itemname
itemnameDB
itemorder
@@ -2813,7 +2987,9 @@ keylast
keynum
keyp
keyrange
+keysize
keystr
+keystring
kgnum
ki
kidsp
@@ -2852,6 +3028,7 @@ lcnt
ld
ldata
ldbp
+ldbs
ldbt
ldbtsize
ldcws
@@ -2876,6 +3053,7 @@ libdb
libfile
libname
libpthread
+libresolv
libthread
lineno
linux
@@ -2893,6 +3071,7 @@ lm
ln
lnP
lnsl
+loadEnvVars
loadme
loc
localhost
@@ -2916,9 +3095,11 @@ lockreq
lockstep
locktimeout
logbuf
+logbufsize
logc
logclean
logdir
+logend
logfile
logfiles
logflush
@@ -2955,6 +3136,7 @@ lsnoff
lsnp
lsynch
lt
+ltm
lu
luB
luGB
@@ -2970,6 +3152,7 @@ lx
mNP
mNs
machid
+machlock
machtab
maddr
magicno
@@ -2977,6 +3160,7 @@ maintinit
maj
majver
makeKey
+makecopy
makedup
malloc
malloc'd
@@ -3029,6 +3213,7 @@ maxwrites
mb
mbp
mbucket
+mbuf
mbytes
mbytesp
md
@@ -3052,6 +3237,7 @@ metasub
metaswap
methodID
mf
+mfence
mfp
mgr
mgrp
@@ -3087,7 +3273,9 @@ mmpgno
modeFlag
moremiddle
mortem
+moshen
mov
+movb
movl
mp
mpf
@@ -3101,6 +3289,7 @@ mpools
mpreg
mprotect
mps
+ms
msem
msemaphore
msg
@@ -3122,6 +3311,7 @@ mt
mti
mtx
mtxmgr
+mtxp
mtxregion
multiversion
munlock
@@ -3144,6 +3334,7 @@ mydrivexxx
myfree
mylock
myobjc
+mytime
myval
n'th
nO
@@ -3162,6 +3353,7 @@ nargc
nargv
nbegins
nbucket
+nbuckets
nbuf
nbytes
ncache
@@ -3218,6 +3410,7 @@ nextkey
nextlsn
nextnodup
nextpgno
+nf
nfid
nfiles
ng
@@ -3229,6 +3422,7 @@ nlist
nlockers
nlocks
nlocktimeouts
+nlog
nlsn
nmodes
nnext
@@ -3245,16 +3439,20 @@ nodup
nodupdata
noet
nogrant
+nogroup
nohasham
+nolease
nolock
nolocking
nolonger
nomacro
nomem
nommap
+nomutex
nonblock
noone
noop
+noorderchk
nooverwrite
nop
nopanic
@@ -3271,6 +3469,7 @@ notgranted
notsup
notused
notzero
+noundo
novrfy
nowait
nowaits
@@ -3297,6 +3496,7 @@ nrestores
nsec
nsites
nsize
+nskeys
nsl
nsleep
nsleepp
@@ -3383,6 +3583,7 @@ optind
optopt
optreset
orderchkonly
+orderedkeys
org
orig
originfo
@@ -3406,9 +3607,12 @@ ovflpoint
ovflsize
ovput
ovref
+pSs
+pSst
padDecrypt
padEncrypt
padp
+pagecnt
pageimage
pageinfo
pagelayout
@@ -3421,6 +3625,7 @@ pagesize
pagesizep
pagesizes
pagespace
+pagesz
pagetype
pagezero
pagf
@@ -3433,13 +3638,18 @@ panicstate
params
parentid
parseLong
+partialgettest
partsize
passwd
passwds
patchver
+paula
paulo
pbuf
+pc
+pcount
pct
+pd
pdata
pdbp
pdf
@@ -3460,6 +3670,7 @@ pget
pgfmt
pgfree
pggap
+pgheader
pgin
pginfo
pgip
@@ -3494,8 +3705,10 @@ pkey
pkey's
pkeys
pkg
+pl
placeholder
plist
+pm
pmap
pn
poff
@@ -3509,6 +3722,7 @@ postopen
postsync
pp
ppc
+pqrst
pr
prR
prdb
@@ -3527,6 +3741,7 @@ prereq
presorted
prev
prev's
+prevdup
prevfile
previousIndex
prevlsn
@@ -3535,6 +3750,7 @@ prflags
prfooter
prheader
pri
+pridata
primaryKey
primaryKeyData
primaryKeyFormat
@@ -3546,6 +3762,7 @@ printlock
printlog
priorityp
prnpage
+proactively
proc
procs
proff
@@ -3578,6 +3795,7 @@ pv
pwrite
qV
qam
+qamc
qammeta
qmeta
qmpf
@@ -3585,6 +3803,7 @@ qnx
qp
qr
qs
+qsort
qtest
quV
queuestart
@@ -3593,6 +3812,8 @@ quotedStr
rRV
rRs
rV
+raison
+ramc
rand
randtbl
rb
@@ -3626,6 +3847,7 @@ readUnsignedInt
readUnsignedShort
readd
readdir
+readkey
readn
readonly
readratio
@@ -3651,6 +3873,7 @@ record's
recordNumber
recordlen
recordp
+recoveryFeedback
recs
rectype
rectypes
@@ -3662,8 +3885,10 @@ refcounting
reffed
reflectField
reflectMethod
+refs
regcomp
regenv
+regid
regids
reginfo
regionmax
@@ -3676,11 +3901,13 @@ regsize
relen
relink
rem
+remainingfiles
remevent
remfile
remfirst
remlock
removeAll
+removeall
remrem
renum
renv
@@ -3690,6 +3917,7 @@ repdb
repflag
repl
replication's
+replicationManagerStart
replpair
replyp
repmgr
@@ -3698,6 +3926,7 @@ repoman
reppg
repquote
repsite
+repstart
reptest
repth
reput
@@ -3767,6 +3996,7 @@ rptr
rq
rr
rrecno
+rrecovery
rs
rsearch
rskey
@@ -3789,11 +4019,13 @@ salvager's
savekey
savetime
sc
+sccsid
sce
sched
scount
sdb
sdbp
+secdata
seckey
secon
secondary's
@@ -3892,7 +4124,10 @@ sizeAdded
sizeNeeded
sizefix
sizeof
+sizeq
sj
+skeys
+skeyset
skiplist
skiplists
skipput
@@ -3908,6 +4143,7 @@ snapshotting
sniglet
snprintf
sockaddr
+socklen
sockopt
socktype
sortdups
@@ -3935,6 +4171,9 @@ sshift
ssize
sslll
sss
+standalone
+startsWith
+startsync
startupdone
stat
stati
@@ -3946,6 +4185,7 @@ stderr
stdfd
stdin
stdint
+stdio's
stdlib
stdmode
stdout
@@ -3998,6 +4238,7 @@ subclassed
subdata
subdatabase
subdatabase's
+subdatabases
subdb
subdbname
subdbpg
@@ -4015,6 +4256,7 @@ svc
sw
swigCPtr
swpb
+symbian
sync'd
sync'ed
synced
@@ -4038,6 +4280,7 @@ tailSet
tailq
tas
taskLock
+tbhp
tbuf
tc
tchar
@@ -4062,6 +4305,7 @@ thies
thr
thread's
threadID
+threadNumber
threadedness
threadid
thrp
@@ -4071,6 +4315,8 @@ tiebreaker
tiebreaking
timeoutp
timespec
+timespecp
+timespecs
timestamp
timeval
timout
@@ -4098,6 +4344,7 @@ toString
toValue
toched
todo
+tolower
toobig
tp
tpabort
@@ -4119,6 +4366,7 @@ tregion
trinomials
trunc
truncdata
+tryable
ts
tsize
tsl
@@ -4193,6 +4441,7 @@ updateDatabaseEntry
updateDbt
updateckp
upg
+upgradeFeedback
upi
urealloc
useCurrentKey
@@ -4236,6 +4485,8 @@ vendorDB
vendordb
ver
verbage
+verboseconfigtest
+verifyFeedback
vers
versioned
versioning
@@ -4248,6 +4499,7 @@ vrfyutil
vsnprintf
vsprintf
vtruncate
+vvp
vw
vx
vxmutex
@@ -4265,13 +4517,16 @@ waitl
waitlist
waitpid
waitsfor
+waittime
wakeme
wakep
+walkcnt
walkdupint
walkpages
walkqueue
wb
wc
+wce
wcount
wday
weblogic
@@ -4279,6 +4534,7 @@ weblogic's
webquill
windsh
winnt
+winuser
wmask
wnt
wordlist
@@ -4310,6 +4566,7 @@ wsa
wsize
wt
wthread
+www
xa
xact
xalinks
@@ -4324,6 +4581,7 @@ xori
xorl
xunlock
xxx
+xy
xyz
yieldcpu
zend
diff --git a/db/test/scr011/chk.tags b/db/test/scr011/chk.tags
index 8ef210a46..a5a1df6e7 100644
--- a/db/test/scr011/chk.tags
+++ b/db/test/scr011/chk.tags
@@ -1,6 +1,6 @@
#!/bin/sh -
#
-# $Id: chk.tags,v 12.3 2006/09/09 00:42:20 bostic Exp $
+# $Id: chk.tags,v 12.6 2007/07/06 18:44:33 bostic Exp $
#
# Check to make sure we don't need any more symbolic links to tags files.
@@ -19,7 +19,9 @@ t2=__2
sed -e 's/\///' \
-e '/^CVS$/d' \
-e '/^build_brew$/d' \
+ -e '/^build_s60$/d' \
-e '/^build_vxworks$/d' \
+ -e '/^build_wince$/d' \
-e '/^build_windows$/d' \
-e '/^docs$/d' \
-e '/^docs_book$/d' \
@@ -31,6 +33,7 @@ t2=__2
-e '/^php_db4$/d' \
-e '/^test$/d' \
-e '/^test_cxx$/d' \
+ -e '/^test_micro$/d' \
-e '/^test_purify$/d' \
-e '/^test_thread$/d' \
-e '/^test_vxworks$/d') > $t1
diff --git a/db/test/scr013/chk.stats b/db/test/scr013/chk.stats
index 241fa23bc..acca952e3 100644
--- a/db/test/scr013/chk.stats
+++ b/db/test/scr013/chk.stats
@@ -1,13 +1,13 @@
#!/bin/sh -
#
-# $Id: chk.stats,v 12.2 2006/09/11 16:26:46 bostic Exp $
+# $Id: chk.stats,v 12.3 2007/04/20 18:29:00 bostic Exp $
#
# Check to make sure all of the stat structure members are included in
# all of the possible formats.
# Top-level directory.
d=../..
-docs=../../../db_docs
+docs=$d/docs_src
# Path names are from a top-level directory.
[ -f $d/README ] || {
diff --git a/db/test/scr015/TestConstruct01.cpp b/db/test/scr015/TestConstruct01.cpp
index 9574ca06d..2979f298a 100644
--- a/db/test/scr015/TestConstruct01.cpp
+++ b/db/test/scr015/TestConstruct01.cpp
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: TestConstruct01.cpp,v 12.4 2006/08/24 14:46:42 bostic Exp $
+ * $Id: TestConstruct01.cpp,v 12.6 2007/05/17 15:15:56 bostic Exp $
*/
/*
diff --git a/db/test/scr015/TestGetSetMethods.cpp b/db/test/scr015/TestGetSetMethods.cpp
index 42908f485..1c0fd0cf5 100644
--- a/db/test/scr015/TestGetSetMethods.cpp
+++ b/db/test/scr015/TestGetSetMethods.cpp
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: TestGetSetMethods.cpp,v 12.5 2006/08/24 14:46:42 bostic Exp $
+ * $Id: TestGetSetMethods.cpp,v 12.7 2007/05/17 15:15:57 bostic Exp $
*/
/*
diff --git a/db/test/scr015/TestKeyRange.cpp b/db/test/scr015/TestKeyRange.cpp
index d14a72427..c94c29381 100644
--- a/db/test/scr015/TestKeyRange.cpp
+++ b/db/test/scr015/TestKeyRange.cpp
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1997,2007 Oracle. All rights reserved.
*
- * $Id: TestKeyRange.cpp,v 12.4 2006/08/24 14:46:43 bostic Exp $
+ * $Id: TestKeyRange.cpp,v 12.6 2007/05/17 15:15:57 bostic Exp $
*/
/*
diff --git a/db/test/scr015/TestLogc.cpp b/db/test/scr015/TestLogc.cpp
index b08508856..3ff9c743f 100644
--- a/db/test/scr015/TestLogc.cpp
+++ b/db/test/scr015/TestLogc.cpp
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: TestLogc.cpp,v 12.3 2006/08/24 14:46:43 bostic Exp $
+ * $Id: TestLogc.cpp,v 12.5 2007/05/17 15:15:57 bostic Exp $
*/
/*
diff --git a/db/test/scr015/TestSimpleAccess.cpp b/db/test/scr015/TestSimpleAccess.cpp
index b4022e8bc..74a894142 100644
--- a/db/test/scr015/TestSimpleAccess.cpp
+++ b/db/test/scr015/TestSimpleAccess.cpp
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: TestSimpleAccess.cpp,v 12.3 2006/08/24 14:46:43 bostic Exp $
+ * $Id: TestSimpleAccess.cpp,v 12.5 2007/05/17 15:15:57 bostic Exp $
*/
/*
diff --git a/db/test/scr015/TestTruncate.cpp b/db/test/scr015/TestTruncate.cpp
index 1f8587ac5..d74670a72 100644
--- a/db/test/scr015/TestTruncate.cpp
+++ b/db/test/scr015/TestTruncate.cpp
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: TestTruncate.cpp,v 12.3 2006/08/24 14:46:43 bostic Exp $
+ * $Id: TestTruncate.cpp,v 12.5 2007/05/17 15:15:57 bostic Exp $
*/
/*
diff --git a/db/test/scr016/CallbackTest.java b/db/test/scr016/CallbackTest.java
deleted file mode 100644
index 14abcf44f..000000000
--- a/db/test/scr016/CallbackTest.java
+++ /dev/null
@@ -1,83 +0,0 @@
-package com.sleepycat.test;
-import com.sleepycat.db.*;
-
-public class CallbackTest
-{
- public static void main(String args[])
- {
- try {
- Db db = new Db(null, 0);
- db.setBtreeCompare(new BtreeCompare());
- db.open(null, "test.db", "", Db.DB_BTREE, Db.DB_CREATE, 0666);
- StringDbt[] keys = new StringDbt[10];
- StringDbt[] datas = new StringDbt[10];
- for (int i = 0; i<10; i++) {
- int val = (i * 3) % 10;
- keys[i] = new StringDbt("key" + val);
- datas[i] = new StringDbt("data" + val);
- System.out.println("put " + val);
- db.put(null, keys[i], datas[i], 0);
- }
- }
- catch (DbException dbe) {
- System.err.println("FAIL: " + dbe);
- }
- catch (java.io.FileNotFoundException fnfe) {
- System.err.println("FAIL: " + fnfe);
- }
-
- }
-
-
-}
-
-class BtreeCompare
- implements DbBtreeCompare
-{
- /* A weird comparator, for example.
- * In fact, it may not be legal, since it's not monotonically increasing.
- */
- public int compare(Db db, Dbt dbt1, Dbt dbt2)
- {
- System.out.println("compare function called");
- byte b1[] = dbt1.getData();
- byte b2[] = dbt2.getData();
- System.out.println(" " + (new String(b1)) + ", " + (new String(b2)));
- int len1 = b1.length;
- int len2 = b2.length;
- if (len1 != len2)
- return (len1 < len2) ? 1 : -1;
- int value = 1;
- for (int i=0; i<len1; i++) {
- if (b1[i] != b2[i])
- return (b1[i] < b2[i]) ? value : -value;
- value *= -1;
- }
- return 0;
- }
-}
-
-class StringDbt extends Dbt
-{
- StringDbt()
- {
- setFlags(Db.DB_DBT_MALLOC); // tell Db to allocate on retrieval
- }
-
- StringDbt(String value)
- {
- setString(value);
- setFlags(Db.DB_DBT_MALLOC); // tell Db to allocate on retrieval
- }
-
- void setString(String value)
- {
- setData(value.getBytes());
- setSize(value.length());
- }
-
- String getString()
- {
- return new String(getData(), 0, getSize());
- }
-}
diff --git a/db/test/scr016/CallbackTest.testout b/db/test/scr016/CallbackTest.testout
deleted file mode 100644
index 447888285..000000000
--- a/db/test/scr016/CallbackTest.testout
+++ /dev/null
@@ -1,54 +0,0 @@
-put 0
-put 3
-compare function called
- key3, key0
-put 6
-compare function called
- key6, key3
-put 9
-compare function called
- key9, key3
-compare function called
- key9, key6
-put 2
-compare function called
- key2, key6
-compare function called
- key2, key3
-compare function called
- key2, key0
-put 5
-compare function called
- key5, key3
-compare function called
- key5, key9
-compare function called
- key5, key6
-put 8
-compare function called
- key8, key5
-compare function called
- key8, key9
-compare function called
- key8, key6
-put 1
-compare function called
- key1, key5
-compare function called
- key1, key2
-compare function called
- key1, key0
-put 4
-compare function called
- key4, key5
-compare function called
- key4, key2
-compare function called
- key4, key3
-put 7
-compare function called
- key7, key4
-compare function called
- key7, key8
-compare function called
- key7, key6
diff --git a/db/test/scr016/README b/db/test/scr016/README
index 226a8aa3b..841d726ae 100644
--- a/db/test/scr016/README
+++ b/db/test/scr016/README
@@ -1,37 +1,14 @@
-# $Id: README,v 1.2 2001/05/31 23:09:10 dda Exp $
-Use the scripts testall or testone to run all, or just one of the Java
-tests. You must be in this directory to run them. For example,
+This test suite is designed to test the basic functionality of the core DB Java API.
- $ export LD_LIBRARY_PATH=/usr/local/Berkeley3.3/lib
- $ ./testone TestAppendRecno
- $ ./testall
+To build and run the test suite you need to have JUnit 4 or higher installed, and set in your environment as JUNIT_JAR.
-The scripts will use javac and java in your path. Set environment
-variables $JAVAC and $JAVA to override this. It will also and honor
-any $CLASSPATH that is already set, prepending ../../../../classes to
-it, which is where the test .class files are put, and where the DB
-.class files can normally be found after a build on Unix and Windows.
-If none of these variables are set, everything will probably work
-with whatever java/javac is in your path.
+The script chk.bdb builds and runs all of the test cases currently enabled.
-To run successfully, you will probably need to set $LD_LIBRARY_PATH
-to be the directory containing libdb_java-X.Y.so
+Each new java source file you created needs to be added to the Makefile.
-As an alternative, use the --prefix=<DIR> option, a la configure
-to set the top of the BerkeleyDB install directory. This forces
-the proper options to be added to $LD_LIBRARY_PATH.
-For example,
+The script createnewtest.sh in this directory does just that. run the script with a single parameter which is the name of the new test to create. It will populate the java source file in com/sleepycat/db/test with the basic layout all tests should have.
- $ ./testone --prefix=/usr/include/BerkeleyDB TestAppendRecno
- $ ./testall --prefix=/usr/include/BerkeleyDB
+The two files config_nix and config_win are used by the test cases to load profile information. For now they only contain a path to the root directory where test output files should be written.
+The configuration gets loaded via the TestUtils class.
-The test framework is pretty simple. Any <name>.java file in this
-directory that is not mentioned in the 'ignore' file represents a
-test. If the test is not compiled successfully, the compiler output
-is left in <name>.compileout . Otherwise, the java program is run in
-a clean subdirectory using as input <name>.testin, or if that doesn't
-exist, /dev/null. Output and error from the test run are put into
-<name>.out, <name>.err . If <name>.testout, <name>.testerr exist,
-they are used as reference files and any differences are reported.
-If either of the reference files does not exist, /dev/null is used.
diff --git a/db/test/scr016/TestAppendRecno.java b/db/test/scr016/TestAppendRecno.java
deleted file mode 100644
index 4237b99db..000000000
--- a/db/test/scr016/TestAppendRecno.java
+++ /dev/null
@@ -1,258 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: TestAppendRecno.java,v 1.6 2004/01/28 03:36:34 bostic Exp $
- */
-
-package com.sleepycat.test;
-
-import com.sleepycat.db.*;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.InputStreamReader;
-import java.io.IOException;
-import java.io.PrintStream;
-
-public class TestAppendRecno
- implements DbAppendRecno
-{
- private static final String FileName = "access.db";
- int callback_count = 0;
- Db table = null;
-
- public TestAppendRecno()
- {
- }
-
- private static void usage()
- {
- System.err.println("usage: TestAppendRecno\n");
- System.exit(1);
- }
-
- public static void main(String argv[])
- {
- try
- {
- TestAppendRecno app = new TestAppendRecno();
- app.run();
- }
- catch (DbException dbe)
- {
- System.err.println("TestAppendRecno: " + dbe.toString());
- System.exit(1);
- }
- catch (FileNotFoundException fnfe)
- {
- System.err.println("TestAppendRecno: " + fnfe.toString());
- System.exit(1);
- }
- System.exit(0);
- }
-
- public void run()
- throws DbException, FileNotFoundException
- {
- // Remove the previous database.
- new File(FileName).delete();
-
- // Create the database object.
- // There is no environment for this simple example.
- table = new Db(null, 0);
- table.set_error_stream(System.err);
- table.set_errpfx("TestAppendRecno");
- table.set_append_recno(this);
-
- 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 {
- RecnoDbt key = new RecnoDbt(77+i);
- StringDbt data = new StringDbt("data" + i + "_xyz");
- table.put(null, key, data, Db.DB_APPEND);
- }
- catch (DbException dbe) {
- System.out.println("dbe: " + dbe);
- }
- }
-
- // Acquire an iterator for the table.
- Dbc iterator;
- iterator = table.cursor(null, 0);
-
- // Walk through the table, printing the key/data pairs.
- // See class StringDbt defined below.
- //
- RecnoDbt key = new RecnoDbt();
- StringDbt data = new StringDbt();
- while (iterator.get(key, data, Db.DB_NEXT) == 0)
- {
- System.out.println(key.getRecno() + " : " + data.getString());
- }
- iterator.close();
- table.close(0);
- System.out.println("Test finished.");
- }
-
- public void db_append_recno(Db db, Dbt dbt, int recno)
- throws DbException
- {
- int count = callback_count++;
-
- System.out.println("====\ncallback #" + count);
- System.out.println("db is table: " + (db == table));
- System.out.println("recno = " + recno);
-
- // This gives variable output.
- //System.out.println("dbt = " + dbt);
- if (dbt instanceof RecnoDbt) {
- System.out.println("dbt = " +
- ((RecnoDbt)dbt).getRecno());
- }
- else if (dbt instanceof StringDbt) {
- System.out.println("dbt = " +
- ((StringDbt)dbt).getString());
- }
- else {
- // Note: the dbts are created out of whole
- // cloth by Berkeley DB, not us!
- System.out.println("internally created dbt: " +
- new StringDbt(dbt) + ", size " +
- dbt.get_size());
- }
-
- switch (count) {
- case 0:
- // nothing
- break;
-
- case 1:
- dbt.set_size(dbt.get_size() - 1);
- break;
-
- case 2:
- System.out.println("throwing...");
- throw new DbException("append_recno thrown");
- //not reached
-
- case 3:
- // Should result in an error (size unchanged).
- dbt.set_offset(1);
- break;
-
- case 4:
- dbt.set_offset(1);
- dbt.set_size(dbt.get_size() - 1);
- break;
-
- case 5:
- dbt.set_offset(1);
- dbt.set_size(dbt.get_size() - 2);
- break;
-
- case 6:
- dbt.set_data(new String("abc").getBytes());
- dbt.set_size(3);
- break;
-
- case 7:
- // Should result in an error.
- dbt.set_data(null);
- break;
-
- case 8:
- // Should result in an error.
- dbt.set_data(new String("abc").getBytes());
- dbt.set_size(4);
- break;
-
- default:
- break;
- }
- }
-
-
- // Here's an example of how you can extend a Dbt to store recno's.
- //
- static /*inner*/
- class RecnoDbt extends Dbt
- {
- RecnoDbt()
- {
- this(0); // let other constructor do most of the work
- }
-
- RecnoDbt(int value)
- {
- set_flags(Db.DB_DBT_USERMEM); // do not allocate on retrieval
- arr = new byte[4];
- set_data(arr); // use our local array for data
- set_ulen(4); // size of return storage
- setRecno(value);
- }
-
- public String toString() /*override*/
- {
- return String.valueOf(getRecno());
- }
-
- void setRecno(int value)
- {
- set_recno_key_data(value);
- set_size(arr.length);
- }
-
- int getRecno()
- {
- return get_recno_key_data();
- }
-
- byte arr[];
- }
-
- // Here's an example of how you can extend a Dbt in a straightforward
- // way to allow easy storage/retrieval of strings, or whatever
- // kind of data you wish. We've declared it as a static inner
- // class, but it need not be.
- //
- static /*inner*/
- class StringDbt extends Dbt
- {
- StringDbt(Dbt dbt)
- {
- set_data(dbt.get_data());
- set_size(dbt.get_size());
- }
-
- StringDbt()
- {
- set_flags(Db.DB_DBT_MALLOC); // tell Db to allocate on retrieval
- }
-
- StringDbt(String value)
- {
- setString(value);
- set_flags(Db.DB_DBT_MALLOC); // tell Db to allocate on retrieval
- }
-
- void setString(String value)
- {
- set_data(value.getBytes());
- set_size(value.length());
- }
-
- String getString()
- {
- return new String(get_data(), 0, get_size());
- }
-
- public String toString() /*override*/
- {
- return getString();
- }
- }
-}
-
diff --git a/db/test/scr016/TestAppendRecno.testout b/db/test/scr016/TestAppendRecno.testout
deleted file mode 100644
index 970174e7a..000000000
--- a/db/test/scr016/TestAppendRecno.testout
+++ /dev/null
@@ -1,82 +0,0 @@
-
-*** Iteration 0
-====
-callback #0
-db is table: true
-recno = 1
-internally created dbt: data0_xyz, size 9
-
-*** Iteration 1
-====
-callback #1
-db is table: true
-recno = 2
-internally created dbt: data1_xyz, size 9
-
-*** Iteration 2
-====
-callback #2
-db is table: true
-recno = 3
-internally created dbt: data2_xyz, size 9
-throwing...
-dbe: com.sleepycat.db.DbException: append_recno thrown
-
-*** Iteration 3
-====
-callback #3
-db is table: true
-recno = 3
-internally created dbt: data3_xyz, size 9
-dbe: com.sleepycat.db.DbException: Dbt.size + Dbt.offset greater than array length
-
-*** Iteration 4
-====
-callback #4
-db is table: true
-recno = 3
-internally created dbt: data4_xyz, size 9
-
-*** Iteration 5
-====
-callback #5
-db is table: true
-recno = 4
-internally created dbt: data5_xyz, size 9
-
-*** Iteration 6
-====
-callback #6
-db is table: true
-recno = 5
-internally created dbt: data6_xyz, size 9
-
-*** Iteration 7
-====
-callback #7
-db is table: true
-recno = 6
-internally created dbt: data7_xyz, size 9
-dbe: com.sleepycat.db.DbException: Dbt.data is null
-
-*** Iteration 8
-====
-callback #8
-db is table: true
-recno = 6
-internally created dbt: data8_xyz, size 9
-dbe: com.sleepycat.db.DbException: Dbt.size + Dbt.offset greater than array length
-
-*** Iteration 9
-====
-callback #9
-db is table: true
-recno = 6
-internally created dbt: data9_xyz, size 9
-1 : data0_xyz
-2 : data1_xy
-3 : ata4_xyz
-4 : ata5_xy
-5 : abc
-6 : data9_xyz
-Test finished.
diff --git a/db/test/scr016/TestAssociate.java b/db/test/scr016/TestAssociate.java
deleted file mode 100644
index 80451d1e6..000000000
--- a/db/test/scr016/TestAssociate.java
+++ /dev/null
@@ -1,333 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: TestAssociate.java,v 1.8 2004/01/28 03:36:34 bostic Exp $
- */
-
-package com.sleepycat.test;
-
-import com.sleepycat.db.*;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.Reader;
-import java.io.StringReader;
-import java.io.IOException;
-import java.io.PrintStream;
-import java.util.Hashtable;
-
-public class TestAssociate
- implements DbDupCompare
-{
- private static final String FileName = "access.db";
- public static Db saveddb1 = null;
- public static Db saveddb2 = null;
-
- public TestAssociate()
- {
- }
-
- private static void usage()
- {
- System.err.println("usage: TestAssociate\n");
- System.exit(1);
- }
-
- public static void main(String argv[])
- {
- try
- {
- TestAssociate app = new TestAssociate();
- app.run();
- }
- catch (DbException dbe)
- {
- System.err.println("TestAssociate: " + dbe.toString());
- System.exit(1);
- }
- catch (FileNotFoundException fnfe)
- {
- System.err.println("TestAssociate: " + fnfe.toString());
- System.exit(1);
- }
- System.exit(0);
- }
-
- public static int counter = 0;
- public static String results[] = { "abc", "def", "ghi", "JKL", "MNO", null };
-
- // Prompts for a line, and keeps prompting until a non blank
- // line is returned. Returns null on error.
- //
- static public String askForLine(Reader reader,
- PrintStream out, String prompt)
- {
- /*
- String result = "";
- while (result != null && result.length() == 0) {
- out.print(prompt);
- out.flush();
- result = getLine(reader);
- }
- return result;
- */
- return results[counter++];
- }
-
- // Not terribly efficient, but does the job.
- // Works for reading a line from stdin or a file.
- // Returns null on EOF. If EOF appears in the middle
- // of a line, returns that line, then null on next call.
- //
- static public String getLine(Reader reader)
- {
- StringBuffer b = new StringBuffer();
- int c;
- try {
- while ((c = reader.read()) != -1 && c != '\n') {
- if (c != '\r')
- b.append((char)c);
- }
- }
- catch (IOException ioe) {
- c = -1;
- }
-
- if (c == -1 && b.length() == 0)
- return null;
- else
- return b.toString();
- }
-
- static public String shownull(Object o)
- {
- if (o == null)
- return "null";
- else
- return "not null";
- }
-
- public void run()
- throws DbException, FileNotFoundException
- {
- // Remove the previous database.
- new File(FileName).delete();
-
- // Create the database object.
- // There is no environment for this simple example.
- DbEnv dbenv = new DbEnv(0);
- dbenv.open("./", Db.DB_CREATE|Db.DB_INIT_MPOOL, 0644);
- (new java.io.File(FileName)).delete();
- Db table = new Db(dbenv, 0);
- Db table2 = new Db(dbenv, 0);
- table2.set_dup_compare(this);
- table2.set_flags(Db.DB_DUPSORT);
- table.set_error_stream(System.err);
- table2.set_error_stream(System.err);
- table.set_errpfx("TestAssociate");
- table2.set_errpfx("TestAssociate(table2)");
- System.out.println("Primary database is " + shownull(table));
- System.out.println("Secondary database is " + shownull(table2));
- saveddb1 = table;
- saveddb2 = table2;
- 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
- // input and the data is the user input in reverse order.
- //
- Reader reader = new StringReader("abc\ndef\njhi");
-
- for (;;) {
- String line = askForLine(reader, System.out, "input> ");
- if (line == null)
- break;
-
- String reversed = (new StringBuffer(line)).reverse().toString();
-
- // See definition of StringDbt below
- //
- StringDbt key = new StringDbt(line);
- StringDbt data = new StringDbt(reversed);
-
- try
- {
- int err;
- if ((err = table.put(null,
- key, data, Db.DB_NOOVERWRITE)) == Db.DB_KEYEXIST) {
- System.out.println("Key " + line + " already exists.");
- }
- }
- catch (DbException dbe)
- {
- System.out.println(dbe.toString());
- }
- System.out.println("");
- }
-
- // Acquire an iterator for the table.
- Dbc iterator;
- iterator = table2.cursor(null, 0);
-
- // Walk through the table, printing the key/data pairs.
- // See class StringDbt defined below.
- //
- StringDbt key = new StringDbt();
- StringDbt data = new StringDbt();
- StringDbt pkey = new StringDbt();
-
- while (iterator.get(key, data, Db.DB_NEXT) == 0)
- {
- System.out.println(key.getString() + " : " + data.getString());
- }
-
- key.setString("BC");
- System.out.println("get BC returns " + table2.get(null, key, data, 0));
- System.out.println(" values: " + key.getString() + " : " + data.getString());
- System.out.println("pget BC returns " + table2.pget(null, key, pkey, data, 0));
- System.out.println(" values: " + key.getString() + " : " + pkey.getString() + " : " + data.getString());
- key.setString("KL");
- System.out.println("get KL returns " + table2.get(null, key, data, 0));
- System.out.println(" values: " + key.getString() + " : " + data.getString());
- System.out.println("pget KL returns " + table2.pget(null, key, pkey, data, 0));
- System.out.println(" values: " + key.getString() + " : " + pkey.getString() + " : " + data.getString());
-
- iterator.close();
- table.close(0);
- }
-
- // Here's an example of how you can extend a Dbt in a straightforward
- // way to allow easy storage/retrieval of strings, or whatever
- // kind of data you wish. We've declared it as a static inner
- // class, but it need not be.
- //
- static /*inner*/
- class StringDbt extends Dbt
- {
- StringDbt()
- {
- set_flags(Db.DB_DBT_MALLOC); // tell Db to allocate on retrieval
- }
-
- StringDbt(String value)
- {
- setString(value);
- set_flags(Db.DB_DBT_MALLOC); // tell Db to allocate on retrieval
- }
-
- void setString(String value)
- {
- set_data(value.getBytes());
- set_size(value.length());
- }
-
- String getString()
- {
- return new String(get_data(), 0, get_size());
- }
-
- public String toString()
- {
- return "StringDbt=" + getString();
- }
- }
-
- /* creates a stupid secondary index as follows:
- For an N letter key, we use N-1 letters starting at
- position 1. If the new letters are already capitalized,
- we return the old array, but with offset set to 1.
- If the letters are not capitalized, we create a new,
- capitalized array. This is pretty stupid for
- an application, but it tests all the paths in the runtime.
- */
- public static class Capitalize implements DbSecondaryKeyCreate
- {
- public int secondaryKeyCreate(Db secondary, Dbt key, Dbt value,
- Dbt result)
- throws DbException
- {
- String which = "unknown db";
- if (saveddb1.equals(secondary)) {
- which = "primary";
- }
- else if (saveddb2.equals(secondary)) {
- which = "secondary";
- }
- System.out.println("secondaryKeyCreate, Db: " + shownull(secondary) + "(" + which + "), key: " + show_dbt(key) + ", data: " + show_dbt(value));
- int len = key.get_size();
- byte[] arr = key.get_data();
- boolean capped = true;
-
- if (len < 1)
- throw new DbException("bad key");
-
- if (len < 2)
- return Db.DB_DONOTINDEX;
-
- result.set_size(len - 1);
- for (int i=1; capped && i<len; i++) {
- if (!Character.isUpperCase((char)arr[i]))
- capped = false;
- }
- if (capped) {
- System.out.println(" creating key(1): " + new String(arr, 1, len-1));
- result.set_data(arr);
- result.set_offset(1);
- }
- else {
- System.out.println(" creating key(2): " + (new String(arr)).substring(1).
- toUpperCase());
- result.set_data((new String(arr)).substring(1).
- toUpperCase().getBytes());
- }
- return 0;
- }
- }
-
- public int compareDuplicates(Db db, Dbt dbt1, Dbt dbt2)
- {
- System.out.println("compare");
- int sz1 = dbt1.get_size();
- int sz2 = dbt2.get_size();
- if (sz1 < sz2)
- return -1;
- if (sz1 > sz2)
- return 1;
- byte[] data1 = dbt1.get_data();
- byte[] data2 = dbt2.get_data();
- for (int i=0; i<sz1; i++)
- if (data1[i] != data2[i])
- return (data1[i] < data2[i] ? -1 : 1);
- return 0;
- }
-
- public static int nseen = 0;
- public static Hashtable ht = new Hashtable();
-
- public static String show_dbt(Dbt dbt)
- {
- String name;
-
- if (dbt == null)
- return "null dbt";
-
- name = (String)ht.get(dbt);
- if (name == null) {
- name = "Dbt" + (nseen++);
- ht.put(dbt, name);
- }
-
- byte[] value = dbt.get_data();
- if (value == null)
- return name + "(null)";
- else
- return name + "(\"" + new String(value) + "\")";
- }
-}
-
-
diff --git a/db/test/scr016/TestAssociate.testout b/db/test/scr016/TestAssociate.testout
deleted file mode 100644
index 34414b660..000000000
--- a/db/test/scr016/TestAssociate.testout
+++ /dev/null
@@ -1,30 +0,0 @@
-Primary database is not null
-Secondary database is not null
-secondary_key_create, Db: not null(secondary), key: Dbt0("abc"), data: Dbt1("cba")
- creating key(2): BC
-
-secondary_key_create, Db: not null(secondary), key: Dbt2("def"), data: Dbt3("fed")
- creating key(2): EF
-
-secondary_key_create, Db: not null(secondary), key: Dbt4("ghi"), data: Dbt5("ihg")
- creating key(2): HI
-
-secondary_key_create, Db: not null(secondary), key: Dbt6("JKL"), data: Dbt7("LKJ")
- creating key(1): KL
-
-secondary_key_create, Db: not null(secondary), key: Dbt8("MNO"), data: Dbt9("ONM")
- creating key(1): NO
-
-BC : cba
-EF : fed
-HI : ihg
-KL : LKJ
-NO : ONM
-get BC returns 0
- values: BC : cba
-pget BC returns 0
- values: BC : abc : cba
-get KL returns 0
- values: KL : LKJ
-pget KL returns 0
- values: KL : JKL : LKJ
diff --git a/db/test/scr016/TestCallback.java b/db/test/scr016/TestCallback.java
deleted file mode 100644
index b89856cda..000000000
--- a/db/test/scr016/TestCallback.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: TestCallback.java,v 1.3 2004/01/28 03:36:34 bostic Exp $
- */
-
-/*
- * Simple tests for DbErrorHandler, DbFeedbackHandler, DbPanicHandler
- */
-
-package com.sleepycat.test;
-
-import com.sleepycat.db.*;
-import java.io.FileNotFoundException;
-
-public class TestCallback
- implements DbFeedbackHandler, DbErrorHandler, DbPanicHandler,
- DbEnvFeedbackHandler, DbBtreeCompare
-{
- public void run()
- throws DbException, FileNotFoundException
- {
- DbEnv dbenv = new DbEnv(0);
- dbenv.setFeedbackHandler(this);
- dbenv.setPanicHandler(this);
- dbenv.setErrorHandler(this);
- dbenv.open(".", Db.DB_INIT_LOCK | Db.DB_INIT_MPOOL | Db.DB_INIT_LOG
- | Db.DB_INIT_TXN | Db.DB_CREATE, 0);
- Db db = new Db(dbenv, 0);
- db.setFeedbackHandler(this);
- //db.setPanicHandler(this);
- //db.setErrorHandler(this);
- db.open(null, "my.db", null, Db.DB_BTREE, Db.DB_CREATE, 0644);
-
- TestUtil.populate(db);
- dbenv.txnCheckpoint(0, 0, Db.DB_FORCE);
-
- System.out.println("before compare");
- try {
- db.setBtreeCompare(null);
- }
- catch (IllegalArgumentException dbe)
- {
- System.out.println("got expected exception: " + dbe);
- // ignore
- }
- System.out.println("after compare");
-
- /*
- // Pretend we crashed, and reopen the environment
- db = null;
- dbenv = null;
-
- dbenv = new DbEnv(0);
- dbenv.setFeedbackHandler(this);
- dbenv.open(".", Db.DB_INIT_LOCK | Db.DB_INIT_MPOOL | Db.DB_INIT_LOG
- | Db.DB_INIT_TXN | Db.DB_RECOVER, 0);
- */
-
- dbenv.setFlags(Db.DB_PANIC_ENVIRONMENT, true);
- System.out.println("before panic");
- try {
- Dbt key = new Dbt("foo".getBytes());
- Dbt data = new Dbt();
- db.get(null, key, data, 0);
- }
- catch (DbException dbe2)
- {
- System.out.println("got expected exception: " + dbe2);
- // ignore
- }
- System.out.println("after panic");
-
- }
-
- public static void main(String[] args)
- {
- try {
- (new TestCallback()).run();
- }
- catch (DbException dbe) {
- System.err.println("Db Exception: " + dbe);
- }
- catch (FileNotFoundException fnfe) {
- System.err.println("FileNotFoundException: " + fnfe);
- }
- System.out.println("finished test");
- }
-
- public void panic(DbEnv dbenv, DbException e)
- {
- System.out.println("CALLBACK: panic(" +
- envStr(dbenv) + ", " + e + ")");
- }
-
- public void error(String prefix, String str)
- {
- System.out.println("CALLBACK: error(" + quotedStr(prefix) +
- ", " + quotedStr(str) + ")");
- }
-
- public void feedback(Db db, int opcode, int pct)
- {
- System.out.println("CALLBACK: (db) feedback(" +
- dbStr(db) + ", " + opcode + ", " + pct + ")");
- }
-
- public void feedback(DbEnv dbenv, int opcode, int pct)
- {
- System.out.println("CALLBACK: (env) feedback(" +
- envStr(dbenv) + ", " + opcode + ", " + pct + ")");
- }
-
- public String quotedStr(String s)
- {
- if (s == null)
- return "null";
- else
- return "\"" + s + "\"";
- }
-
- public String envStr(DbEnv dbenv)
- {
- if (dbenv == null)
- return "null";
- else
- return "DbEnv";
- }
-
- public String dbStr(Db db)
- {
- if (db == null)
- return "null";
- else
- return "Db";
- }
-
- public int compare(Db db, Dbt dbt1, Dbt dbt2)
- {
- System.out.println("**ERROR** btree compare should never be called" +
- " in this test");
- return 0;
- }
-}
diff --git a/db/test/scr016/TestCallback.testout b/db/test/scr016/TestCallback.testout
deleted file mode 100644
index 9e67a17bd..000000000
--- a/db/test/scr016/TestCallback.testout
+++ /dev/null
@@ -1,12 +0,0 @@
-got data: data
-get using bad key: DB_NOTFOUND: No matching key/data pair found
-before compare
-CALLBACK: error(null, "DB->set_bt_compare: method not permitted after handle's open method")
-got expected exception: java.lang.IllegalArgumentException: Invalid argument
-after compare
-before panic
-CALLBACK: error(null, "PANIC: fatal region error detected; run recovery")
-CALLBACK: panic(DbEnv, com.sleepycat.db.DbRunRecoveryException: DB_RUNRECOVERY: Fatal error, run database recovery: DB_RUNRECOVERY: Fatal error, run database recovery)
-got expected exception: com.sleepycat.db.DbRunRecoveryException: DB_RUNRECOVERY: Fatal error, run database recovery: DB_RUNRECOVERY: Fatal error, run database recovery
-after panic
-finished test
diff --git a/db/test/scr016/TestClosedDb.java b/db/test/scr016/TestClosedDb.java
deleted file mode 100644
index 50ccdcc88..000000000
--- a/db/test/scr016/TestClosedDb.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: TestClosedDb.java,v 1.8 2004/01/28 03:36:34 bostic Exp $
- */
-
-/*
- * Close the Db, and make sure operations after that fail gracefully.
- */
-
-package com.sleepycat.test;
-
-import com.sleepycat.db.*;
-import java.io.FileNotFoundException;
-
-public class TestClosedDb
-{
- public static void main(String[] args)
- {
- try {
- 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.setFlags(Db.DB_DBT_MALLOC);
-
- int ret;
-
- // Close the db - subsequent operations should fail
- // by throwing an exception.
- db.close(0);
- try {
- db.get(null, goodkeydbt, resultdbt, 0);
- System.out.println("Error - did not expect to get this far.");
- }
- catch (IllegalArgumentException dbe) {
- System.out.println("Got expected exception: " + dbe);
- }
- System.out.println("finished test");
- }
- catch (DbException dbe) {
- System.err.println("Db Exception: " + dbe);
- }
- catch (FileNotFoundException fnfe) {
- System.err.println("FileNotFoundException: " + fnfe);
- }
-
- }
-
-}
diff --git a/db/test/scr016/TestClosedDb.testout b/db/test/scr016/TestClosedDb.testout
deleted file mode 100644
index ffa537136..000000000
--- a/db/test/scr016/TestClosedDb.testout
+++ /dev/null
@@ -1,2 +0,0 @@
-Got expected exception: java.lang.IllegalArgumentException: call on closed handle
-finished test
diff --git a/db/test/scr016/TestConstruct01.java b/db/test/scr016/TestConstruct01.java
deleted file mode 100644
index 6309409c7..000000000
--- a/db/test/scr016/TestConstruct01.java
+++ /dev/null
@@ -1,477 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2000-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: TestConstruct01.java,v 1.10 2004/01/28 03:36:34 bostic Exp $
- */
-
-/*
- * Do some regression tests for constructors.
- * Run normally (without arguments) it is a simple regression test.
- * Run with a numeric argument, it repeats the regression a number
- * of times, to try to determine if there are memory leaks.
- */
-
-package com.sleepycat.test;
-
-import com.sleepycat.db.*;
-import java.io.File;
-import java.io.IOException;
-import java.io.FileNotFoundException;
-
-public class TestConstruct01
-{
- public static final String CONSTRUCT01_DBNAME = "construct01.db";
- public static final String CONSTRUCT01_DBDIR = "/tmp";
- public static final String CONSTRUCT01_DBFULLPATH =
- CONSTRUCT01_DBDIR + "/" + CONSTRUCT01_DBNAME;
-
- private int itemcount; // count the number of items in the database
- public static boolean verbose_flag = false;
-
- public static void ERR(String a)
- {
- System.out.println("FAIL: " + a);
- System.err.println("FAIL: " + a);
- sysexit(1);
- }
-
- public static void DEBUGOUT(String s)
- {
- System.out.println(s);
- }
-
- public static void VERBOSEOUT(String s)
- {
- if (verbose_flag)
- System.out.println(s);
- }
-
- public static void sysexit(int code)
- {
- System.exit(code);
- }
-
- private static void check_file_removed(String name, boolean fatal,
- boolean force_remove_first)
- {
- File f = new File(name);
- if (force_remove_first) {
- f.delete();
- }
- if (f.exists()) {
- if (fatal)
- System.out.print("FAIL: ");
- System.out.print("File \"" + name + "\" still exists after run\n");
- if (fatal)
- sysexit(1);
- }
- }
-
-
- // Check that key/data for 0 - count-1 are already present,
- // and write a key/data for count. The key and data are
- // both "0123...N" where N == count-1.
- //
- // For some reason on Windows, we need to open using the full pathname
- // of the file when there is no environment, thus the 'has_env'
- // variable.
- //
- void rundb(Db db, int count, boolean has_env, TestOptions options)
- throws DbException, FileNotFoundException
- {
- String name;
-
- if (has_env)
- name = CONSTRUCT01_DBNAME;
- else
- name = CONSTRUCT01_DBFULLPATH;
-
- db.set_error_stream(System.err);
-
- // We don't really care about the pagesize, but we do want
- // to make sure adjusting Db specific variables works before
- // opening the db.
- //
- db.set_pagesize(1024);
- db.open(null, name, null, Db.DB_BTREE,
- (count != 0) ? 0 : Db.DB_CREATE, 0664);
-
-
- // The bit map of keys we've seen
- long bitmap = 0;
-
- // The bit map of keys we expect to see
- long expected = (1 << (count+1)) - 1;
-
- byte outbuf[] = new byte[count+1];
- 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, 0, i));
- db.put(null, key, data, Db.DB_NOOVERWRITE);
-
- // Acquire a cursor for the table.
- Dbc dbcp = db.cursor(null, 0);
-
- // Walk through the table, checking
- Dbt readkey = new Dbt();
- Dbt readdata = new Dbt();
- Dbt whoknows = new Dbt();
-
- readkey.set_flags(options.dbt_alloc_flags);
- readdata.set_flags(options.dbt_alloc_flags);
-
- //DEBUGOUT("Dbc.get");
- while (dbcp.get(readkey, readdata, Db.DB_NEXT) == 0) {
- String key_string =
- new String(readkey.get_data(), 0, readkey.get_size());
- String data_string =
- new String(readdata.get_data(), 0, readkey.get_size());
- //DEBUGOUT("Got: " + key_string + ": " + data_string);
- int len = key_string.length();
- if (len <= 0 || key_string.charAt(len-1) != '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");
- }
- else if ((bitmap & bit) != 0) {
- ERR("key already seen");
- }
- 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");
- }
- }
- }
- }
- if (expected != 0) {
- System.out.print(" expected more keys, bitmap is: " + expected + "\n");
- ERR("missing keys in database");
- }
-
- dbcp.close();
- db.close(0);
- }
-
- void t1(TestOptions options)
- throws DbException, FileNotFoundException
- {
- Db db = new Db(null, 0);
- rundb(db, itemcount++, false, options);
- }
-
- void t2(TestOptions options)
- throws DbException, FileNotFoundException
- {
- Db db = new Db(null, 0);
- rundb(db, itemcount++, false, options);
- // rundb(db, itemcount++, false, options);
- // rundb(db, itemcount++, false, options);
- }
-
- void t3(TestOptions options)
- throws DbException, FileNotFoundException
- {
- Db db = new Db(null, 0);
- // rundb(db, itemcount++, false, options);
- db.set_errpfx("test3");
- for (int i=0; i<100; i++)
- db.set_errpfx("str" + i);
- rundb(db, itemcount++, false, options);
- }
-
- void t4(TestOptions options)
- throws DbException, FileNotFoundException
- {
- DbEnv env = new DbEnv(0);
- env.open(CONSTRUCT01_DBDIR, Db.DB_CREATE | Db.DB_INIT_MPOOL, 0);
- Db db = new Db(env, 0);
- /**/
- //rundb(db, itemcount++, true, options);
- db.set_errpfx("test4");
- rundb(db, itemcount++, true, options);
- /**/
- env.close(0);
- }
-
- void t5(TestOptions options)
- throws DbException, FileNotFoundException
- {
- DbEnv env = new DbEnv(0);
- env.open(CONSTRUCT01_DBDIR, Db.DB_CREATE | Db.DB_INIT_MPOOL, 0);
- Db db = new Db(env, 0);
- // rundb(db, itemcount++, true, options);
- db.set_errpfx("test5");
- rundb(db, itemcount++, true, options);
- /*
- env.close(0);
-
- // reopen the environment, don't recreate
- env.open(CONSTRUCT01_DBDIR, Db.DB_INIT_MPOOL, 0);
- // Note we cannot reuse the old Db!
- */
- Db anotherdb = new Db(env, 0);
-
- // rundb(anotherdb, itemcount++, true, options);
- anotherdb.set_errpfx("test5");
- rundb(anotherdb, itemcount++, true, options);
- env.close(0);
- }
-
- void t6(TestOptions options)
- throws DbException, FileNotFoundException
- {
- Db db = new Db(null, 0);
- DbEnv dbenv = new DbEnv(0);
- db.close(0);
- dbenv.close(0);
-
- System.gc();
- System.runFinalization();
- }
-
- // By design, t7 leaves a db and dbenv open; it should be detected.
- void t7(TestOptions options)
- throws DbException, FileNotFoundException
- {
- Db db = new Db(null, 0);
- DbEnv dbenv = new DbEnv(0);
-
- System.gc();
- System.runFinalization();
- }
-
- // remove any existing environment or database
- void removeall(boolean use_db)
- {
- {
- if (use_db) {
- try {
- /**/
- //memory leak for this:
- Db tmpdb = new Db(null, 0);
- tmpdb.remove(CONSTRUCT01_DBFULLPATH, null, 0);
- /**/
- DbEnv tmpenv = new DbEnv(0);
- tmpenv.remove(CONSTRUCT01_DBDIR, Db.DB_FORCE);
- }
- catch (DbException dbe) {
- System.err.println("error during remove: " + dbe);
- }
- catch (FileNotFoundException fnfe) {
- //expected error:
- // System.err.println("error during remove: " + fnfe);
- }
- }
- }
- check_file_removed(CONSTRUCT01_DBFULLPATH, true, !use_db);
- for (int i=0; i<8; i++) {
- String fname = "__db.00" + i;
- check_file_removed(fname, true, !use_db);
- }
- }
-
- boolean doall(TestOptions options)
- {
- itemcount = 0;
- try {
- removeall((options.testmask & 1) != 0);
- for (int item=1; item<32; item++) {
- if ((options.testmask & (1 << item)) != 0) {
- VERBOSEOUT(" Running test " + item + ":");
- switch (item) {
- case 1:
- t1(options);
- break;
- case 2:
- t2(options);
- break;
- case 3:
- t3(options);
- break;
- case 4:
- t4(options);
- break;
- case 5:
- t5(options);
- break;
- case 6:
- t6(options);
- break;
- case 7:
- t7(options);
- break;
- default:
- ERR("unknown test case: " + item);
- break;
- }
- VERBOSEOUT(" finished.\n");
- }
- }
- removeall((options.testmask & 1) != 0);
- options.successcounter++;
- return true;
- }
- catch (DbException dbe) {
- ERR("EXCEPTION RECEIVED: " + dbe);
- }
- catch (FileNotFoundException fnfe) {
- ERR("EXCEPTION RECEIVED: " + fnfe);
- }
- return false;
- }
-
- public static void main(String args[])
- {
- int iterations = 200;
- int mask = 0x7f;
-
- // Make sure the database file is removed before we start.
- check_file_removed(CONSTRUCT01_DBFULLPATH, true, true);
-
- 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: construct01 [-testdigits] count");
- }
- }
- VERBOSEOUT("mask = " + mask);
-
- }
- else {
- try {
- iterations = Integer.parseInt(arg);
- if (iterations < 0) {
- ERR("Usage: construct01 [-testdigits] count");
- }
- }
- catch (NumberFormatException nfe) {
- ERR("EXCEPTION RECEIVED: " + nfe);
- }
- }
- }
-
- // Run GC before and after the test to give
- // a baseline for any Java memory used.
- //
- System.gc();
- System.runFinalization();
- VERBOSEOUT("gc complete");
- long starttotal = Runtime.getRuntime().totalMemory();
- long startfree = Runtime.getRuntime().freeMemory();
-
- TestConstruct01 con = new TestConstruct01();
- int[] dbt_flags = { 0, Db.DB_DBT_MALLOC, Db.DB_DBT_REALLOC };
- String[] dbt_flags_name = { "default", "malloc", "realloc" };
-
- TestOptions options = new TestOptions();
- options.testmask = mask;
-
- for (int flagiter = 0; flagiter < dbt_flags.length; flagiter++) {
- options.dbt_alloc_flags = dbt_flags[flagiter];
-
- VERBOSEOUT("Running with DBT alloc flags: " +
- dbt_flags_name[flagiter]);
- for (int i=0; i<iterations; i++) {
- if (iterations != 0) {
- VERBOSEOUT("(" + i + "/" + iterations + ") ");
- }
- VERBOSEOUT("construct01 running:");
- if (!con.doall(options)) {
- ERR("SOME TEST FAILED");
- }
- else {
- VERBOSEOUT("\nTESTS SUCCESSFUL");
- }
-
- // We continually run GC during the test to keep
- // the Java memory usage low. That way we can
- // monitor the total memory usage externally
- // (e.g. via ps) and verify that we aren't leaking
- // memory in the JNI or DB layer.
- //
- System.gc();
- System.runFinalization();
- VERBOSEOUT("gc complete, bytes free == " + Runtime.getRuntime().freeMemory());
- }
- }
-
- if (options.successcounter == 600) {
- System.out.println("ALL TESTS SUCCESSFUL");
- }
- else {
- System.out.println("***FAIL: " + (600 - options.successcounter) +
- " tests did not complete");
- }
- long endtotal = Runtime.getRuntime().totalMemory();
- long endfree = Runtime.getRuntime().freeMemory();
-
- System.out.println("delta for total mem: " + magnitude(endtotal - starttotal));
- System.out.println("delta for free mem: " + magnitude(endfree - startfree));
-
- return;
- }
-
- static String magnitude(long value)
- {
- final long max = 10000000;
- for (long scale = 10; scale <= max; scale *= 10) {
- if (value < scale && value > -scale)
- return "<" + scale;
- }
- return ">" + max;
- }
-
-}
-
-class TestOptions
-{
- int testmask = 0; // which tests to run
- int dbt_alloc_flags = 0; // DB_DBT_* flags to use
- int successcounter =0;
-}
-
diff --git a/db/test/scr016/TestConstruct01.testerr b/db/test/scr016/TestConstruct01.testerr
deleted file mode 100644
index e69de29bb..000000000
--- a/db/test/scr016/TestConstruct01.testerr
+++ /dev/null
diff --git a/db/test/scr016/TestConstruct01.testout b/db/test/scr016/TestConstruct01.testout
deleted file mode 100644
index 2de13da00..000000000
--- a/db/test/scr016/TestConstruct01.testout
+++ /dev/null
@@ -1,3 +0,0 @@
-ALL TESTS SUCCESSFUL
-delta for total mem: <10
-delta for free mem: <1000
diff --git a/db/test/scr016/TestConstruct02.java b/db/test/scr016/TestConstruct02.java
deleted file mode 100644
index 2e55cfc6f..000000000
--- a/db/test/scr016/TestConstruct02.java
+++ /dev/null
@@ -1,326 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2000-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: TestConstruct02.java,v 1.8 2004/01/28 03:36:34 bostic Exp $
- */
-
-/*
- * Do some regression tests for constructors.
- * Run normally (without arguments) it is a simple regression test.
- * Run with a numeric argument, it repeats the regression a number
- * of times, to try to determine if there are memory leaks.
- */
-
-package com.sleepycat.test;
-import com.sleepycat.db.*;
-import java.io.File;
-import java.io.IOException;
-import java.io.FileNotFoundException;
-
-public class TestConstruct02
-{
- public static final String CONSTRUCT02_DBNAME = "construct02.db";
- public static final String CONSTRUCT02_DBDIR = "./";
- public static final String CONSTRUCT02_DBFULLPATH =
- CONSTRUCT02_DBDIR + "/" + CONSTRUCT02_DBNAME;
-
- private int itemcount; // count the number of items in the database
- public static boolean verbose_flag = false;
-
- private DbEnv dbenv = new DbEnv(0);
-
- public TestConstruct02()
- throws DbException, FileNotFoundException
- {
- dbenv.open(CONSTRUCT02_DBDIR, Db.DB_CREATE | Db.DB_INIT_MPOOL, 0666);
- }
-
- public void close()
- {
- try {
- dbenv.close(0);
- removeall(true, true);
- }
- catch (DbException dbe) {
- ERR("DbException: " + dbe);
- }
- }
-
- public static void ERR(String a)
- {
- System.out.println("FAIL: " + a);
- sysexit(1);
- }
-
- public static void DEBUGOUT(String s)
- {
- System.out.println(s);
- }
-
- public static void VERBOSEOUT(String s)
- {
- if (verbose_flag)
- System.out.println(s);
- }
-
- public static void sysexit(int code)
- {
- System.exit(code);
- }
-
- private static void check_file_removed(String name, boolean fatal,
- boolean force_remove_first)
- {
- File f = new File(name);
- if (force_remove_first) {
- f.delete();
- }
- if (f.exists()) {
- if (fatal)
- System.out.print("FAIL: ");
- System.out.print("File \"" + name + "\" still exists after run\n");
- if (fatal)
- sysexit(1);
- }
- }
-
-
- // Check that key/data for 0 - count-1 are already present,
- // and write a key/data for count. The key and data are
- // both "0123...N" where N == count-1.
- //
- 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;
-
- // The bit map of keys we expect to see
- long expected = (1 << (count+1)) - 1;
-
- byte outbuf[] = new byte[count+1];
- int i;
- for (i=0; i<count; i++) {
- outbuf[i] = (byte)('0' + i);
- }
- outbuf[i++] = (byte)'x';
-
- Dbt key = new Dbt(outbuf, 0, i);
- Dbt data = new Dbt(outbuf, 0, i);
-
- db.put(null, key, data, Db.DB_NOOVERWRITE);
-
- // Acquire a cursor for the table.
- Dbc dbcp = db.cursor(null, 0);
-
- // Walk through the table, checking
- Dbt readkey = new Dbt();
- Dbt readdata = new Dbt();
- Dbt whoknows = new Dbt();
-
- readkey.set_flags(Db.DB_DBT_MALLOC);
- readdata.set_flags(Db.DB_DBT_MALLOC);
-
- while (dbcp.get(readkey, readdata, Db.DB_NEXT) == 0) {
- byte[] key_bytes = readkey.get_data();
- byte[] data_bytes = readdata.get_data();
-
- 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);
- }
- else if ((bitmap & bit) != 0) {
- ERR("key already seen");
- }
- else if ((expected & bit) == 0) {
- ERR("key was not expected");
- }
- bitmap |= bit;
- expected &= ~(bit);
- }
- if (expected != 0) {
- System.out.print(" expected more keys, bitmap is: " +
- expected + "\n");
- ERR("missing keys in database");
- }
- dbcp.close();
- }
-
- void t1()
- throws DbException, FileNotFoundException
- {
- Db db = new Db(dbenv, 0);
- db.set_error_stream(System.err);
- db.set_pagesize(1024);
- db.open(null, CONSTRUCT02_DBNAME, null, Db.DB_BTREE,
- Db.DB_CREATE, 0664);
-
- rundb(db, itemcount++);
- rundb(db, itemcount++);
- rundb(db, itemcount++);
- rundb(db, itemcount++);
- rundb(db, itemcount++);
- rundb(db, itemcount++);
- db.close(0);
-
- // Reopen no longer allowed, so we create a new db.
- db = new Db(dbenv, 0);
- db.set_error_stream(System.err);
- db.set_pagesize(1024);
- db.open(null, CONSTRUCT02_DBNAME, null, Db.DB_BTREE,
- Db.DB_CREATE, 0664);
- rundb(db, itemcount++);
- rundb(db, itemcount++);
- rundb(db, itemcount++);
- rundb(db, itemcount++);
- db.close(0);
- }
-
- // remove any existing environment or database
- void removeall(boolean use_db, boolean remove_env)
- {
- {
- try {
- if (remove_env) {
- DbEnv tmpenv = new DbEnv(0);
- tmpenv.remove(CONSTRUCT02_DBDIR, Db.DB_FORCE);
- }
- else if (use_db) {
- /**/
- //memory leak for this:
- Db tmpdb = new Db(null, 0);
- tmpdb.remove(CONSTRUCT02_DBFULLPATH, null, 0);
- /**/
- }
- }
- catch (DbException dbe) {
- System.err.println("error during remove: " + dbe);
- }
- catch (FileNotFoundException dbe) {
- System.err.println("error during remove: " + dbe);
- }
- }
- check_file_removed(CONSTRUCT02_DBFULLPATH, true, !use_db);
- if (remove_env) {
- for (int i=0; i<8; i++) {
- String fname = "__db.00" + i;
- check_file_removed(fname, true, !use_db);
- }
- }
- }
-
- boolean doall()
- {
- itemcount = 0;
- try {
- VERBOSEOUT(" Running test 1:\n");
- t1();
- VERBOSEOUT(" finished.\n");
- removeall(true, false);
- return true;
- }
- catch (DbException dbe) {
- ERR("EXCEPTION RECEIVED: " + dbe);
- }
- catch (FileNotFoundException fnfe) {
- ERR("EXCEPTION RECEIVED: " + fnfe);
- }
- return false;
- }
-
- public static void main(String args[])
- {
- int iterations = 200;
-
- for (int argcnt=0; argcnt<args.length; argcnt++) {
- String arg = args[argcnt];
- try {
- iterations = Integer.parseInt(arg);
- if (iterations < 0) {
- ERR("Usage: construct02 [-testdigits] count");
- }
- }
- catch (NumberFormatException nfe) {
- ERR("EXCEPTION RECEIVED: " + nfe);
- }
- }
-
- System.gc();
- System.runFinalization();
- VERBOSEOUT("gc complete");
- long starttotal = Runtime.getRuntime().totalMemory();
- long startfree = Runtime.getRuntime().freeMemory();
- TestConstruct02 con = null;
-
- try {
- con = new TestConstruct02();
- }
- catch (DbException dbe) {
- System.err.println("Exception: " + dbe);
- System.exit(1);
- }
- catch (java.io.FileNotFoundException fnfe) {
- System.err.println("Exception: " + fnfe);
- System.exit(1);
- }
-
- for (int i=0; i<iterations; i++) {
- if (iterations != 0) {
- VERBOSEOUT("(" + i + "/" + iterations + ") ");
- }
- VERBOSEOUT("construct02 running:\n");
- if (!con.doall()) {
- ERR("SOME TEST FAILED");
- }
- System.gc();
- System.runFinalization();
- VERBOSEOUT("gc complete");
-
- }
- con.close();
-
- System.out.print("ALL TESTS SUCCESSFUL\n");
-
- long endtotal = Runtime.getRuntime().totalMemory();
- long endfree = Runtime.getRuntime().freeMemory();
-
- System.out.println("delta for total mem: " + magnitude(endtotal - starttotal));
- System.out.println("delta for free mem: " + magnitude(endfree - startfree));
-
- return;
- }
-
- static String magnitude(long value)
- {
- final long max = 10000000;
- for (long scale = 10; scale <= max; scale *= 10) {
- if (value < scale && value > -scale)
- return "<" + scale;
- }
- return ">" + max;
- }
-}
diff --git a/db/test/scr016/TestConstruct02.testout b/db/test/scr016/TestConstruct02.testout
deleted file mode 100644
index 5d2041cd1..000000000
--- a/db/test/scr016/TestConstruct02.testout
+++ /dev/null
@@ -1,3 +0,0 @@
-ALL TESTS SUCCESSFUL
-delta for total mem: <10
-delta for free mem: <10000
diff --git a/db/test/scr016/TestDbtFlags.java b/db/test/scr016/TestDbtFlags.java
deleted file mode 100644
index 0e2110ad1..000000000
--- a/db/test/scr016/TestDbtFlags.java
+++ /dev/null
@@ -1,241 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: TestDbtFlags.java,v 1.8 2004/01/28 03:36:34 bostic Exp $
- */
-
-package com.sleepycat.test;
-
-import com.sleepycat.db.*;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.InputStreamReader;
-import java.io.IOException;
-import java.io.PrintStream;
-
-public class TestDbtFlags
-{
- private static final String FileName = "access.db";
- private int flag_value;
- private int buf_size;
- private int cur_input_line = 0;
-
- /*zippy quotes for test input*/
- static final String[] input_lines = {
- "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)
- {
- this.flag_value = flag_value;
- this.buf_size = buf_size;
- }
-
- public static void runWithFlags(int flag_value, int size)
- {
- String msg = "=-=-=-= Test with DBT flags " + flag_value +
- " bufsize " + size;
- System.out.println(msg);
- System.err.println(msg);
-
- try
- {
- TestDbtFlags app = new TestDbtFlags(flag_value, size);
- app.run();
- }
- catch (DbException dbe)
- {
- System.err.println("TestDbtFlags: " + dbe.toString());
- System.exit(1);
- }
- catch (FileNotFoundException fnfe)
- {
- System.err.println("TestDbtFlags: " + fnfe.toString());
- System.exit(1);
- }
- }
-
- public static void main(String argv[])
- {
- runWithFlags(Db.DB_DBT_MALLOC, -1);
- runWithFlags(Db.DB_DBT_REALLOC, -1);
- runWithFlags(Db.DB_DBT_USERMEM, 20);
- runWithFlags(Db.DB_DBT_USERMEM, 50);
- runWithFlags(Db.DB_DBT_USERMEM, 200);
- runWithFlags(0, -1);
-
- System.exit(0);
- }
-
- String get_input_line()
- {
- if (cur_input_line >= input_lines.length)
- return null;
- return input_lines[cur_input_line++];
- }
-
- public void run()
- throws DbException, FileNotFoundException
- {
- // Remove the previous database.
- new File(FileName).delete();
-
- // Create the database object.
- // There is no environment for this simple example.
- Db table = new Db(null, 0);
- table.setErrorStream(System.err);
- table.setErrorPrefix("TestDbtFlags");
- table.open(null, FileName, null, Db.DB_BTREE, Db.DB_CREATE, 0644);
-
- //
- // Insert records into the database, where the key is the user
- // input and the data is the user input in reverse order.
- //
- for (;;) {
- //System.err.println("input line " + cur_input_line);
- String line = get_input_line();
- if (line == null)
- break;
-
- String reversed = (new StringBuffer(line)).reverse().toString();
-
- // See definition of StringDbt below
- //
- StringDbt key = new StringDbt(line, flag_value);
- StringDbt data = new StringDbt(reversed, flag_value);
-
- try
- {
- int err;
- if ((err = table.put(null,
- key, data, Db.DB_NOOVERWRITE)) == Db.DB_KEYEXIST) {
- System.out.println("Key " + line + " already exists.");
- }
- key.check_flags();
- data.check_flags();
- }
- catch (DbException dbe)
- {
- System.out.println(dbe.toString());
- }
- }
-
- // Acquire an iterator for the table.
- Dbc iterator;
- iterator = table.cursor(null, 0);
-
- // Walk through the table, printing the key/data pairs.
- // See class StringDbt defined below.
- //
- StringDbt key = new StringDbt(flag_value, buf_size);
- StringDbt data = new StringDbt(flag_value, buf_size);
-
- int iteration_count = 0;
- int dbreturn = 0;
-
- while (dbreturn == 0) {
- //System.err.println("iteration " + iteration_count);
- try {
- if ((dbreturn = iterator.get(key, data, Db.DB_NEXT)) == 0) {
- System.out.println(key.get_string() + " : " + data.get_string());
- }
- }
- catch (DbMemoryException dme) {
- /* In a real application, we'd normally increase
- * the size of the buffer. Since we've created
- * this error condition for testing, we'll just report it.
- * We still need to skip over this record, and we don't
- * want to mess with our original Dbt's, since we want
- * to see more errors. So create some temporary
- * mallocing Dbts to get this record.
- */
- System.err.println("exception, iteration " + iteration_count +
- ": " + dme);
- System.err.println(" key size: " + key.getSize() +
- " ulen: " + key.getUserBufferLength());
- System.err.println(" data size: " + key.getSize() +
- " ulen: " + key.getUserBufferLength());
-
- dme.getDbt().setSize(buf_size);
- StringDbt tempkey = new StringDbt(Db.DB_DBT_MALLOC, -1);
- StringDbt tempdata = new StringDbt(Db.DB_DBT_MALLOC, -1);
- if ((dbreturn = iterator.get(tempkey, tempdata, Db.DB_NEXT)) != 0) {
- System.err.println("cannot get expected next record");
- return;
- }
- System.out.println(tempkey.get_string() + " : " +
- tempdata.get_string());
- }
- iteration_count++;
- }
- key.check_flags();
- data.check_flags();
-
- iterator.close();
- table.close(0);
- }
-
- // Here's an example of how you can extend a Dbt in a straightforward
- // way to allow easy storage/retrieval of strings, or whatever
- // kind of data you wish. We've declared it as a static inner
- // class, but it need not be.
- //
- static /*inner*/
- class StringDbt extends Dbt
- {
- int saved_flags;
-
- StringDbt(int flags, int buf_size)
- {
- this.saved_flags = flags;
- setFlags(saved_flags);
- if (buf_size != -1) {
- setData(new byte[buf_size]);
- setUserBufferLength(buf_size);
- }
- }
-
- StringDbt(String value, int flags)
- {
- this.saved_flags = flags;
- setFlags(saved_flags);
- set_string(value);
- }
-
- void set_string(String value)
- {
- setData(value.getBytes());
- setSize(value.length());
- check_flags();
- }
-
- String get_string()
- {
- check_flags();
- return new String(getData(), 0, getSize());
- }
-
- void check_flags()
- {
- int actual_flags = getFlags();
- if (actual_flags != saved_flags) {
- System.err.println("flags botch: expected " + saved_flags +
- ", got " + actual_flags);
- }
- }
- }
-}
diff --git a/db/test/scr016/TestDbtFlags.testerr b/db/test/scr016/TestDbtFlags.testerr
deleted file mode 100644
index 7666868eb..000000000
--- a/db/test/scr016/TestDbtFlags.testerr
+++ /dev/null
@@ -1,54 +0,0 @@
-=-=-=-= Test with DBT flags 4 bufsize -1
-=-=-=-= 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: 28 ulen: 20
- data size: 28 ulen: 20
-exception, iteration 1: Dbt not large enough for available data
- key size: 53 ulen: 20
- data size: 53 ulen: 20
-exception, iteration 2: Dbt not large enough for available data
- key size: 55 ulen: 20
- data size: 55 ulen: 20
-exception, iteration 3: Dbt not large enough for available data
- key size: 25 ulen: 20
- data size: 25 ulen: 20
-exception, iteration 4: Dbt not large enough for available data
- key size: 69 ulen: 20
- data size: 69 ulen: 20
-exception, iteration 5: Dbt not large enough for available data
- key size: 27 ulen: 20
- data size: 27 ulen: 20
-exception, iteration 6: Dbt not large enough for available data
- 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: 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
deleted file mode 100644
index b8deb1bcc..000000000
--- a/db/test/scr016/TestDbtFlags.testout
+++ /dev/null
@@ -1,78 +0,0 @@
-=-=-=-= Test with DBT flags 4 bufsize -1
-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
-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
-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
-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
-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
-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/TestGetSetMethods.java b/db/test/scr016/TestGetSetMethods.java
deleted file mode 100644
index 06a52c5ad..000000000
--- a/db/test/scr016/TestGetSetMethods.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2000-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: TestGetSetMethods.java,v 1.7 2004/01/28 03:36:34 bostic Exp $
- */
-
-/*
- * Do some regression tests for simple get/set access methods
- * on DbEnv, DbTxn, Db. We don't currently test that they have
- * the desired effect, only that they operate and return correctly.
- */
-package com.sleepycat.test;
-
-import com.sleepycat.db.*;
-import java.io.FileNotFoundException;
-
-public class TestGetSetMethods
-{
- public void testMethods()
- throws DbException, FileNotFoundException
- {
- DbEnv dbenv = new DbEnv(0);
- DbTxn dbtxn;
- byte[][] conflicts = new byte[10][10];
-
- dbenv.setTimeout(0x90000000,
- Db.DB_SET_LOCK_TIMEOUT);
- dbenv.setLogBufferSize(0x1000);
- dbenv.setLogDir(".");
- dbenv.setLogMax(0x10000000);
- dbenv.setLogRegionMax(0x100000);
- dbenv.setLockConflicts(conflicts);
- dbenv.setLockDetect(Db.DB_LOCK_DEFAULT);
- // exists, but is deprecated:
- // dbenv.set_lk_max(0);
- dbenv.setLockMaxLockers(100);
- dbenv.setLockMaxLocks(10);
- dbenv.setLockMaxObjects(1000);
- dbenv.setMemoryPoolMapSize(0x10000);
- dbenv.setTestAndSetSpins(1000);
-
- // Need to open the environment so we
- // can get a transaction.
- //
- dbenv.open(".", Db.DB_CREATE | Db.DB_INIT_TXN |
- Db.DB_INIT_LOCK | Db.DB_INIT_LOG |
- Db.DB_INIT_MPOOL,
- 0644);
-
- dbtxn = dbenv.txnBegin(null, Db.DB_TXN_NOWAIT);
- dbtxn.setTimeout(0xA0000000, Db.DB_SET_TXN_TIMEOUT);
- dbtxn.abort();
-
- dbenv.close(0);
-
- // We get a db, one for each type.
- // That's because once we call (for instance)
- // setBtreeMinKey, DB 'knows' that this is a
- // Btree Db, and it cannot be used to try Hash
- // or Recno functions.
- //
- Db db_bt = new Db(null, 0);
- db_bt.setBtreeMinKey(100);
- db_bt.setCacheSize(0x100000, 0);
- db_bt.close(0);
-
- Db db_h = new Db(null, 0);
- db_h.setHashFillFactor(0x10);
- db_h.setHashNumElements(100);
- db_h.setByteOrder(0);
- db_h.setPageSize(0x10000);
- db_h.close(0);
-
- Db db_re = new Db(null, 0);
- db_re.setRecordDelimiter('@');
- db_re.setRecordPad(10);
- db_re.setRecordSource("re.in");
- db_re.setRecordLength(1000);
- db_re.close(0);
-
- Db db_q = new Db(null, 0);
- db_q.setQueueExtentSize(200);
- db_q.close(0);
- }
-
- public static void main(String[] args)
- {
- try {
- TestGetSetMethods tester = new TestGetSetMethods();
- tester.testMethods();
- }
- catch (Exception e) {
- System.err.println("TestGetSetMethods: Exception: " + e);
- }
- }
-}
diff --git a/db/test/scr016/TestKeyRange.java b/db/test/scr016/TestKeyRange.java
deleted file mode 100644
index 57a776b01..000000000
--- a/db/test/scr016/TestKeyRange.java
+++ /dev/null
@@ -1,205 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: TestKeyRange.java,v 1.7 2004/01/28 03:36:34 bostic Exp $
- */
-
-/*
- * NOTE: TestKeyRange is AccessExample changed to test Db.key_range.
- * See comments with ADDED for specific areas of change.
- */
-
-package com.sleepycat.test;
-
-import com.sleepycat.db.*;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.StringReader;
-import java.io.Reader;
-import java.io.IOException;
-import java.io.PrintStream;
-
-public class TestKeyRange
-{
- private static final String FileName = "access.db";
-
- public TestKeyRange()
- {
- }
-
- private static void usage()
- {
- System.err.println("usage: TestKeyRange\n");
- System.exit(1);
- }
-
- public static void main(String argv[])
- {
- try
- {
- TestKeyRange app = new TestKeyRange();
- app.run();
- }
- catch (DbException dbe)
- {
- System.err.println("TestKeyRange: " + dbe.toString());
- System.exit(1);
- }
- catch (FileNotFoundException fnfe)
- {
- System.err.println("TestKeyRange: " + fnfe.toString());
- System.exit(1);
- }
- System.exit(0);
- }
-
- // Prompts for a line, and keeps prompting until a non blank
- // line is returned. Returns null on error.
- //
- static public String askForLine(Reader reader,
- PrintStream out, String prompt)
- {
- String result = "";
- while (result != null && result.length() == 0) {
- out.print(prompt);
- out.flush();
- result = getLine(reader);
- }
- return result;
- }
-
- // Not terribly efficient, but does the job.
- // Works for reading a line from stdin or a file.
- // Returns null on EOF. If EOF appears in the middle
- // of a line, returns that line, then null on next call.
- //
- static public String getLine(Reader reader)
- {
- StringBuffer b = new StringBuffer();
- int c;
- try {
- while ((c = reader.read()) != -1 && c != '\n') {
- if (c != '\r')
- b.append((char)c);
- }
- }
- catch (IOException ioe) {
- c = -1;
- }
-
- if (c == -1 && b.length() == 0)
- return null;
- else
- return b.toString();
- }
-
- public void run()
- throws DbException, FileNotFoundException
- {
- // Remove the previous database.
- new File(FileName).delete();
-
- // Create the database object.
- // There is no environment for this simple example.
- Db table = new Db(null, 0);
- table.setErrorStream(System.err);
- table.setErrorPrefix("TestKeyRange");
- table.open(null, FileName, null, Db.DB_BTREE, Db.DB_CREATE, 0644);
-
- //
- // Insert records into the database, where the key is the user
- // input and the data is the user input in reverse order.
- //
- Reader reader = new StringReader("abc\nmiddle\nzend\nmoremiddle\nZED\nMAMAMIA");
-
- int count= 0;/*ADDED*/
- for (;;) {
- String line = askForLine(reader, System.out, "input>");
- if (line == null)
- break;
-
- String reversed = (new StringBuffer(line)).reverse().toString();
-
- // See definition of StringDbt below
- //
- StringDbt key = new StringDbt(line);
- StringDbt data = new StringDbt(reversed);
-
- try
- {
- int err;
- if ((err = table.put(null, key, data, 0)) == Db.DB_KEYEXIST) {
- System.out.println("Key " + line + " already exists.");
- }
- }
- catch (DbException dbe)
- {
- System.out.println(dbe.toString());
- }
- System.out.println("");
-
- /*START ADDED*/
- {
- if (count++ > 0) {
- DbKeyRange range = new DbKeyRange();
- table.keyRange(null, key, range, 0);
- System.out.println("less: " + range.less);
- System.out.println("equal: " + range.equal);
- System.out.println("greater: " + range.greater);
- }
- }
- /*END ADDED*/
-
- }
-
- // Acquire an iterator for the table.
- Dbc iterator;
- iterator = table.cursor(null, 0);
-
- // Walk through the table, printing the key/data pairs.
- // See class StringDbt defined below.
- //
- StringDbt key = new StringDbt();
- StringDbt data = new StringDbt();
- while (iterator.get(key, data, Db.DB_NEXT) == 0)
- {
- System.out.println(key.getString() + " : " + data.getString());
- }
- iterator.close();
- table.close(0);
- }
-
- // Here's an example of how you can extend a Dbt in a straightforward
- // way to allow easy storage/retrieval of strings, or whatever
- // kind of data you wish. We've declared it as a static inner
- // class, but it need not be.
- //
- static /*inner*/
- class StringDbt extends Dbt
- {
- StringDbt()
- {
- setFlags(Db.DB_DBT_MALLOC); // tell Db to allocate on retrieval
- }
-
- StringDbt(String value)
- {
- setString(value);
- setFlags(Db.DB_DBT_MALLOC); // tell Db to allocate on retrieval
- }
-
- void setString(String value)
- {
- setData(value.getBytes());
- setSize(value.length());
- }
-
- String getString()
- {
- return new String(getData(), 0, getSize());
- }
- }
-}
diff --git a/db/test/scr016/TestKeyRange.testout b/db/test/scr016/TestKeyRange.testout
deleted file mode 100644
index c265f3289..000000000
--- a/db/test/scr016/TestKeyRange.testout
+++ /dev/null
@@ -1,27 +0,0 @@
-input>
-input>
-less: 0.5
-equal: 0.5
-greater: 0.0
-input>
-less: 0.6666666666666666
-equal: 0.3333333333333333
-greater: 0.0
-input>
-less: 0.5
-equal: 0.25
-greater: 0.25
-input>
-less: 0.0
-equal: 0.2
-greater: 0.8
-input>
-less: 0.0
-equal: 0.16666666666666666
-greater: 0.8333333333333334
-input>MAMAMIA : AIMAMAM
-ZED : DEZ
-abc : cba
-middle : elddim
-moremiddle : elddimerom
-zend : dnez
diff --git a/db/test/scr016/TestLockVec.java b/db/test/scr016/TestLockVec.java
deleted file mode 100644
index b14a20c68..000000000
--- a/db/test/scr016/TestLockVec.java
+++ /dev/null
@@ -1,249 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: TestLockVec.java,v 1.7 2004/01/28 03:36:34 bostic Exp $
- */
-
-/*
- * test of DbEnv.lock_vec()
- */
-
-package com.sleepycat.test;
-
-import com.sleepycat.db.*;
-import java.io.FileNotFoundException;
-
-public class TestLockVec
-{
- public static int locker1;
- public static int locker2;
-
- public static void gdb_pause()
- {
- try {
- System.err.println("attach gdb and type return...");
- System.in.read(new byte[10]);
- }
- catch (java.io.IOException ie) {
- }
- }
-
- public static void main(String[] args)
- {
- try {
- DbEnv dbenv1 = new DbEnv(0);
- DbEnv dbenv2 = new DbEnv(0);
- dbenv1.open(".",
- Db.DB_CREATE | Db.DB_INIT_LOCK | Db.DB_INIT_MPOOL, 0);
- dbenv2.open(".",
- Db.DB_CREATE | Db.DB_INIT_LOCK | Db.DB_INIT_MPOOL, 0);
- locker1 = dbenv1.lockId();
- locker2 = dbenv1.lockId();
- Db db1 = new Db(dbenv1, 0);
- db1.open(null, "my.db", null, Db.DB_BTREE, Db.DB_CREATE, 0);
- Db db2 = new Db(dbenv2, 0);
- db2.open(null, "my.db", null, Db.DB_BTREE, 0, 0);
-
- // populate our database, just two elements.
- Dbt Akey = new Dbt("A".getBytes());
- Dbt Adata = new Dbt("Adata".getBytes());
- Dbt Bkey = new Dbt("B".getBytes());
- Dbt Bdata = new Dbt("Bdata".getBytes());
-
- // We don't allow Dbts to be reused within the
- // same method call, so we need some duplicates.
- Dbt Akeyagain = new Dbt("A".getBytes());
- Dbt Bkeyagain = new Dbt("B".getBytes());
-
- db1.put(null, Akey, Adata, 0);
- db1.put(null, Bkey, Bdata, 0);
-
- Dbt notInDatabase = new Dbt("C".getBytes());
-
- /* make sure our check mechanisms work */
- int expectedErrs = 0;
-
- lock_check_free(dbenv2, Akey);
- try {
- lock_check_held(dbenv2, Bkey, Db.DB_LOCK_READ);
- }
- catch (DbException dbe1) {
- expectedErrs += 1;
- }
- DbLock tmplock = dbenv1.lockGet(locker1, Db.DB_LOCK_NOWAIT,
- Akey, Db.DB_LOCK_READ);
- lock_check_held(dbenv2, Akey, Db.DB_LOCK_READ);
- try {
- lock_check_free(dbenv2, Akey);
- }
- catch (DbException dbe2) {
- expectedErrs += 2;
- }
- if (expectedErrs != 1+2) {
- System.err.println("lock check mechanism is broken");
- System.exit(1);
- }
- dbenv1.lockPut(tmplock);
-
- /* Now on with the test, a series of lock_vec requests,
- * with checks between each call.
- */
-
- System.out.println("get a few");
- /* Request: get A(W), B(R), B(R) */
- DbLockRequest[] reqs = new DbLockRequest[3];
-
- reqs[0] = new DbLockRequest(Db.DB_LOCK_GET, Db.DB_LOCK_WRITE,
- Akey, null);
- reqs[1] = new DbLockRequest(Db.DB_LOCK_GET, Db.DB_LOCK_READ,
- Bkey, null);
- reqs[2] = new DbLockRequest(Db.DB_LOCK_GET, Db.DB_LOCK_READ,
- Bkeyagain, null);
-
- dbenv1.lockVector(locker1, Db.DB_LOCK_NOWAIT, reqs, 0, 3);
-
- /* Locks held: A(W), B(R), B(R) */
- lock_check_held(dbenv2, Bkey, Db.DB_LOCK_READ);
- lock_check_held(dbenv2, Akey, Db.DB_LOCK_WRITE);
-
- System.out.println("put a couple");
- /* Request: put A, B(first) */
- reqs[0].setOp(Db.DB_LOCK_PUT);
- reqs[1].setOp(Db.DB_LOCK_PUT);
-
- dbenv1.lockVector(locker1, Db.DB_LOCK_NOWAIT, reqs, 0, 2);
-
- /* Locks held: B(R) */
- lock_check_free(dbenv2, Akey);
- lock_check_held(dbenv2, Bkey, Db.DB_LOCK_READ);
-
- System.out.println("put one more, test index offset");
- /* Request: put B(second) */
- reqs[2].setOp(Db.DB_LOCK_PUT);
-
- dbenv1.lockVector(locker1, Db.DB_LOCK_NOWAIT, reqs, 2, 1);
-
- /* Locks held: <none> */
- lock_check_free(dbenv2, Akey);
- lock_check_free(dbenv2, Bkey);
-
- System.out.println("get a few");
- /* Request: get A(R), A(R), B(R) */
- reqs[0] = new DbLockRequest(Db.DB_LOCK_GET, Db.DB_LOCK_READ,
- Akey, null);
- reqs[1] = new DbLockRequest(Db.DB_LOCK_GET, Db.DB_LOCK_READ,
- Akeyagain, null);
- reqs[2] = new DbLockRequest(Db.DB_LOCK_GET, Db.DB_LOCK_READ,
- Bkey, null);
- dbenv1.lockVector(locker1, Db.DB_LOCK_NOWAIT, reqs, 0, 3);
-
- /* Locks held: A(R), B(R), B(R) */
- lock_check_held(dbenv2, Akey, Db.DB_LOCK_READ);
- lock_check_held(dbenv2, Bkey, Db.DB_LOCK_READ);
-
- System.out.println("try putobj");
- /* Request: get B(R), putobj A */
- reqs[1] = new DbLockRequest(Db.DB_LOCK_GET, Db.DB_LOCK_READ,
- Bkey, null);
- reqs[2] = new DbLockRequest(Db.DB_LOCK_PUT_OBJ, 0,
- Akey, null);
- dbenv1.lockVector(locker1, Db.DB_LOCK_NOWAIT, reqs, 1, 2);
-
- /* Locks held: B(R), B(R) */
- lock_check_free(dbenv2, Akey);
- lock_check_held(dbenv2, Bkey, Db.DB_LOCK_READ);
-
- System.out.println("get one more");
- /* Request: get A(W) */
- reqs[0] = new DbLockRequest(Db.DB_LOCK_GET, Db.DB_LOCK_WRITE,
- Akey, null);
- dbenv1.lockVector(locker1, Db.DB_LOCK_NOWAIT, reqs, 0, 1);
-
- /* Locks held: A(W), B(R), B(R) */
- lock_check_held(dbenv2, Akey, Db.DB_LOCK_WRITE);
- lock_check_held(dbenv2, Bkey, Db.DB_LOCK_READ);
-
- System.out.println("putall");
- /* Request: putall */
- reqs[0] = new DbLockRequest(Db.DB_LOCK_PUT_ALL, 0,
- null, null);
- dbenv1.lockVector(locker1, Db.DB_LOCK_NOWAIT, reqs, 0, 1);
-
- lock_check_free(dbenv2, Akey);
- lock_check_free(dbenv2, Bkey);
- db1.close(0);
- dbenv1.close(0);
- db2.close(0);
- dbenv2.close(0);
- System.out.println("done");
- }
- catch (DbLockNotGrantedException nge) {
- System.err.println("Db Exception: " + nge);
- }
- catch (DbException dbe) {
- System.err.println("Db Exception: " + dbe);
- }
- catch (FileNotFoundException fnfe) {
- System.err.println("FileNotFoundException: " + fnfe);
- }
-
- }
-
- /* Verify that the lock is free, throw an exception if not.
- * We do this by trying to grab a write lock (no wait).
- */
- static void lock_check_free(DbEnv dbenv, Dbt dbt)
- throws DbException
- {
- DbLock tmplock = dbenv.lockGet(locker2, Db.DB_LOCK_NOWAIT,
- dbt, Db.DB_LOCK_WRITE);
- dbenv.lockPut(tmplock);
- }
-
- /* Verify that the lock is held with the mode, throw an exception if not.
- * If we have a write lock, we should not be able to get the lock
- * for reading. If we have a read lock, we should be able to get
- * it for reading, but not writing.
- */
- static void lock_check_held(DbEnv dbenv, Dbt dbt, int mode)
- throws DbException
- {
- DbLock never = null;
-
- try {
- if (mode == Db.DB_LOCK_WRITE) {
- never = dbenv.lockGet(locker2, Db.DB_LOCK_NOWAIT,
- dbt, Db.DB_LOCK_READ);
- }
- else if (mode == Db.DB_LOCK_READ) {
- DbLock rlock = dbenv.lockGet(locker2, Db.DB_LOCK_NOWAIT,
- dbt, Db.DB_LOCK_READ);
- dbenv.lockPut(rlock);
- never = dbenv.lockGet(locker2, Db.DB_LOCK_NOWAIT,
- dbt, Db.DB_LOCK_WRITE);
- }
- else {
- throw new DbException("lock_check_held bad mode");
- }
- }
- catch (DbLockNotGrantedException nge) {
- /* We expect this on our last lock_get call */
- }
-
- /* make sure we failed */
- if (never != null) {
- try {
- dbenv.lockPut(never);
- }
- catch (DbException dbe2) {
- System.err.println("Got some real troubles now");
- System.exit(1);
- }
- throw new DbException("lock_check_held: lock was not held");
- }
- }
-
-}
diff --git a/db/test/scr016/TestLockVec.testout b/db/test/scr016/TestLockVec.testout
deleted file mode 100644
index 1cf16c6ac..000000000
--- a/db/test/scr016/TestLockVec.testout
+++ /dev/null
@@ -1,8 +0,0 @@
-get a few
-put a couple
-put one more, test index offset
-get a few
-try putobj
-get one more
-putall
-done
diff --git a/db/test/scr016/TestLogc.java b/db/test/scr016/TestLogc.java
deleted file mode 100644
index 8f4068318..000000000
--- a/db/test/scr016/TestLogc.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: TestLogc.java,v 1.9 2004/01/28 03:36:34 bostic Exp $
- */
-
-/*
- * A basic regression test for the Logc class.
- */
-
-package com.sleepycat.test;
-
-import com.sleepycat.db.*;
-import java.io.FileNotFoundException;
-
-public class TestLogc
-{
- public static void main(String[] args)
- {
- try {
- DbEnv env = new DbEnv(0);
- env.open(".", Db.DB_CREATE | Db.DB_INIT_LOG | Db.DB_INIT_MPOOL, 0);
-
- // Do some database activity to get something into the log.
- Db db1 = new Db(env, 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(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);
-
- // Now get a log cursor and walk through.
- DbLogc logc = env.log_cursor(0);
-
- int ret = 0;
- DbLsn lsn = new DbLsn();
- Dbt dbt = new Dbt();
- int flags = Db.DB_FIRST;
-
- int count = 0;
- while ((ret = logc.get(lsn, dbt, flags)) == 0) {
-
- // We ignore the contents of the log record,
- // it's not portable. Even the exact count
- // is may change when the underlying implementation
- // changes, we'll just make sure at the end we saw
- // 'enough'.
- //
- // System.out.println("logc.get: " + count);
- // System.out.println(showDbt(dbt));
- //
- count++;
- flags = Db.DB_NEXT;
- }
- if (ret != Db.DB_NOTFOUND) {
- System.err.println("*** FAIL: logc.get returned: " +
- DbEnv.strerror(ret));
- }
- logc.close(0);
-
- // There has to be at *least* four log records,
- // since we did four separate database operations.
- //
- if (count < 4)
- System.out.println("*** FAIL: not enough log records");
-
- System.out.println("TestLogc done.");
- }
- catch (DbException dbe) {
- System.err.println("*** FAIL: Db Exception: " + dbe);
- }
- catch (FileNotFoundException fnfe) {
- System.err.println("*** FAIL: FileNotFoundException: " + fnfe);
- }
-
- }
-
- public static String showDbt(Dbt dbt)
- {
- StringBuffer sb = new StringBuffer();
- int size = dbt.get_size();
- byte[] data = dbt.get_data();
- int i;
- for (i=0; i<size && i<10; i++) {
- sb.append(Byte.toString(data[i]));
- sb.append(' ');
- }
- if (i<size)
- sb.append("...");
- return "size: " + size + " data: " + sb.toString();
- }
-}
diff --git a/db/test/scr016/TestLogc.testout b/db/test/scr016/TestLogc.testout
deleted file mode 100644
index afac3af7e..000000000
--- a/db/test/scr016/TestLogc.testout
+++ /dev/null
@@ -1 +0,0 @@
-TestLogc done.
diff --git a/db/test/scr016/TestOpenEmpty.java b/db/test/scr016/TestOpenEmpty.java
deleted file mode 100644
index ab5fb5a8d..000000000
--- a/db/test/scr016/TestOpenEmpty.java
+++ /dev/null
@@ -1,199 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: TestOpenEmpty.java,v 1.8 2004/01/28 03:36:34 bostic Exp $
- */
-
-package com.sleepycat.test;
-
-import com.sleepycat.db.*;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.InputStreamReader;
-import java.io.IOException;
-import java.io.PrintStream;
-
-public class TestOpenEmpty
-{
- private static final String FileName = "access.db";
-
- public TestOpenEmpty()
- {
- }
-
- private static void usage()
- {
- System.err.println("usage: TestOpenEmpty\n");
- System.exit(1);
- }
-
- public static void main(String argv[])
- {
- try
- {
- TestOpenEmpty app = new TestOpenEmpty();
- app.run();
- }
- catch (DbException dbe)
- {
- System.err.println("TestOpenEmpty: " + dbe.toString());
- System.exit(1);
- }
- catch (FileNotFoundException fnfe)
- {
- System.err.println("TestOpenEmpty: " + fnfe.toString());
- System.exit(1);
- }
- catch (Exception ex)
- {
- System.err.println("TestOpenEmpty: " + ex.toString());
- System.exit(1);
- }
- System.exit(0);
- }
-
- // Prompts for a line, and keeps prompting until a non blank
- // line is returned. Returns null on error.
- //
- static public String askForLine(InputStreamReader reader,
- PrintStream out, String prompt)
- {
- String result = "";
- while (result != null && result.length() == 0) {
- out.print(prompt);
- out.flush();
- result = getLine(reader);
- }
- return result;
- }
-
- // Not terribly efficient, but does the job.
- // Works for reading a line from stdin or a file.
- // Returns null on EOF. If EOF appears in the middle
- // of a line, returns that line, then null on next call.
- //
- static public String getLine(InputStreamReader reader)
- {
- StringBuffer b = new StringBuffer();
- int c;
- try {
- while ((c = reader.read()) != -1 && c != '\n') {
- if (c != '\r')
- b.append((char)c);
- }
- }
- catch (IOException ioe) {
- c = -1;
- }
-
- if (c == -1 && b.length() == 0)
- return null;
- else
- return b.toString();
- }
-
- public void run()
- throws DbException, FileNotFoundException
- {
- // Remove the previous database.
- new File(FileName).delete();
-
- try {
- FileOutputStream os = new FileOutputStream(FileName);
- os.write("abc".getBytes());
- os.close();
- }
- catch (IOException ioe) { }
-
- // Create the database object.
- // There is no environment for this simple example.
- Db table = new Db(null, 0);
- table.setErrorStream(System.err);
- table.setErrorPrefix("TestOpenEmpty");
- table.open(null, FileName, null, Db.DB_BTREE, Db.DB_CREATE, 0644);
-
- //
- // Insert records into the database, where the key is the user
- // input and the data is the user input in reverse order.
- //
- InputStreamReader reader = new InputStreamReader(System.in);
-
- for (;;) {
- String line = askForLine(reader, System.out, "input> ");
- if (line == null)
- break;
-
- String reversed = (new StringBuffer(line)).reverse().toString();
-
- // See definition of StringDbt below
- //
- StringDbt key = new StringDbt(line);
- StringDbt data = new StringDbt(reversed);
-
- try
- {
- int err;
- if ((err = table.put(null,
- key, data, Db.DB_NOOVERWRITE)) == Db.DB_KEYEXIST) {
- System.out.println("Key " + line + " already exists.");
- }
- }
- catch (DbException dbe)
- {
- System.out.println(dbe.toString());
- }
- System.out.println("");
- }
-
- // Acquire an iterator for the table.
- Dbc iterator;
- iterator = table.cursor(null, 0);
-
- // Walk through the table, printing the key/data pairs.
- // See class StringDbt defined below.
- //
- StringDbt key = new StringDbt();
- StringDbt data = new StringDbt();
- while (iterator.get(key, data, Db.DB_NEXT) == 0)
- {
- System.out.println(key.getString() + " : " + data.getString());
- }
- iterator.close();
- table.close(0);
- }
-
- // Here's an example of how you can extend a Dbt in a straightforward
- // way to allow easy storage/retrieval of strings, or whatever
- // kind of data you wish. We've declared it as a static inner
- // class, but it need not be.
- //
- static /*inner*/
- class StringDbt extends Dbt
- {
- StringDbt()
- {
- setFlags(Db.DB_DBT_MALLOC); // tell Db to allocate on retrieval
- }
-
- StringDbt(String value)
- {
- setString(value);
- setFlags(Db.DB_DBT_MALLOC); // tell Db to allocate on retrieval
- }
-
- void setString(String value)
- {
- setData(value.getBytes());
- setSize(value.length());
- }
-
- String getString()
- {
- return new String(getData(), 0, getSize());
- }
- }
-}
diff --git a/db/test/scr016/TestOpenEmpty.testerr b/db/test/scr016/TestOpenEmpty.testerr
deleted file mode 100644
index c08da27b3..000000000
--- a/db/test/scr016/TestOpenEmpty.testerr
+++ /dev/null
@@ -1,2 +0,0 @@
-TestOpenEmpty: access.db: unexpected file type or format
-TestOpenEmpty: java.lang.IllegalArgumentException: Invalid argument
diff --git a/db/test/scr016/TestReplication.java b/db/test/scr016/TestReplication.java
deleted file mode 100644
index e20b9a929..000000000
--- a/db/test/scr016/TestReplication.java
+++ /dev/null
@@ -1,289 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: TestReplication.java,v 1.7 2004/01/28 03:36:34 bostic Exp $
- */
-
-/*
- * Simple test of replication, merely to exercise the individual
- * methods in the API. Rather than use TCP/IP, our transport
- * mechanism is just an ArrayList of byte arrays.
- * It's managed like a queue, and synchronization is via
- * the ArrayList object itself and java's wait/notify.
- * It's not terribly extensible, but it's fine for a small test.
- */
-
-package com.sleepycat.test;
-
-import com.sleepycat.db.*;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.util.Vector;
-
-public class TestReplication extends Thread
- implements DbRepTransport
-{
- public static final String MASTER_ENVDIR = "./master";
- public static final String CLIENT_ENVDIR = "./client";
-
- private Vector queue = new Vector();
- private DbEnv master_env;
- private DbEnv client_env;
-
- private static void mkdir(String name)
- throws IOException
- {
- (new File(name)).mkdir();
- }
-
-
- // The client thread runs this
- public void run()
- {
- try {
- System.err.println("c10");
- client_env = new DbEnv(0);
- System.err.println("c11");
- client_env.set_rep_transport(1, this);
- System.err.println("c12");
- client_env.open(CLIENT_ENVDIR, Db.DB_CREATE | Db.DB_INIT_MPOOL, 0);
- System.err.println("c13");
- Dbt myid = new Dbt("master01".getBytes());
- System.err.println("c14");
- client_env.rep_start(myid, Db.DB_REP_CLIENT);
- System.err.println("c15");
- DbEnv.RepProcessMessage processMsg = new DbEnv.RepProcessMessage();
- processMsg.envid = 2;
- System.err.println("c20");
- boolean running = true;
-
- Dbt control = new Dbt();
- Dbt rec = new Dbt();
-
- while (running) {
- int msgtype = 0;
-
- System.err.println("c30");
- synchronized (queue) {
- if (queue.size() == 0) {
- System.err.println("c40");
- sleepShort();
- }
- else {
- msgtype = ((Integer)queue.firstElement()).intValue();
- queue.removeElementAt(0);
- byte[] data;
-
- System.err.println("c50 " + msgtype);
-
- switch (msgtype) {
- case -1:
- running = false;
- break;
- case 1:
- data = (byte[])queue.firstElement();
- queue.removeElementAt(0);
- control.set_data(data);
- control.set_size(data.length);
- break;
- case 2:
- control.set_data(null);
- control.set_size(0);
- break;
- case 3:
- data = (byte[])queue.firstElement();
- queue.removeElementAt(0);
- rec.set_data(data);
- rec.set_size(data.length);
- break;
- case 4:
- rec.set_data(null);
- rec.set_size(0);
- break;
- }
-
- }
- }
- System.err.println("c60");
- if (msgtype == 3 || msgtype == 4) {
- System.out.println("client: Got message");
- client_env.rep_process_message(control, rec,
- processMsg);
- }
- }
- System.err.println("c70");
- Db db = new Db(client_env, 0);
- db.open(null, "x.db", null, Db.DB_BTREE, 0, 0);
- Dbt data = new Dbt();
- System.err.println("c80");
- db.get(null, new Dbt("Hello".getBytes()), data, 0);
- System.err.println("c90");
- System.out.println("Hello " + new String(data.get_data(), data.get_offset(), data.get_size()));
- System.err.println("c95");
- client_env.close(0);
- }
- catch (Exception e) {
- System.err.println("client exception: " + e);
- }
- }
-
- // Implements DbTransport
- public int send(DbEnv env, Dbt control, Dbt rec, int flags, int envid)
- throws DbException
- {
- System.out.println("Send to " + envid);
- if (envid == 1) {
- System.err.println("Unexpected envid = " + envid);
- return 0;
- }
-
- int nbytes = 0;
-
- synchronized (queue) {
- System.out.println("Sending message");
- byte[] data = control.get_data();
- if (data != null && data.length > 0) {
- queue.addElement(new Integer(1));
- nbytes += data.length;
- byte[] newdata = new byte[data.length];
- System.arraycopy(data, 0, newdata, 0, data.length);
- queue.addElement(newdata);
- }
- else
- {
- queue.addElement(new Integer(2));
- }
-
- data = rec.get_data();
- if (data != null && data.length > 0) {
- queue.addElement(new Integer(3));
- nbytes += data.length;
- byte[] newdata = new byte[data.length];
- System.arraycopy(data, 0, newdata, 0, data.length);
- queue.addElement(newdata);
- }
- else
- {
- queue.addElement(new Integer(4));
- }
- System.out.println("MASTER: sent message");
- }
- return 0;
- }
-
- public void sleepShort()
- {
- try {
- sleep(100);
- }
- catch (InterruptedException ie)
- {
- }
- }
-
- public void send_terminator()
- {
- synchronized (queue) {
- queue.addElement(new Integer(-1));
- }
- }
-
- public void master()
- {
- try {
- master_env = new DbEnv(0);
- master_env.set_rep_transport(2, this);
- master_env.open(MASTER_ENVDIR, Db.DB_CREATE | Db.DB_INIT_MPOOL, 0644);
- System.err.println("10");
- Dbt myid = new Dbt("client01".getBytes());
- master_env.rep_start(myid, Db.DB_REP_MASTER);
- System.err.println("10");
- Db db = new Db(master_env, 0);
- System.err.println("20");
- db.open(null, "x.db", null, Db.DB_BTREE, Db.DB_CREATE, 0644);
- System.err.println("30");
- db.put(null, new Dbt("Hello".getBytes()),
- new Dbt("world".getBytes()), 0);
- System.err.println("40");
- //DbEnv.RepElectResult electionResult = new DbEnv.RepElectResult();
- //master_env.rep_elect(2, 2, 3, 4, electionResult);
- db.close(0);
- System.err.println("50");
- master_env.close(0);
- send_terminator();
- }
- catch (Exception e) {
- System.err.println("client exception: " + e);
- }
- }
-
- public static void main(String[] args)
- {
- // The test should only take a few milliseconds.
- // give it 10 seconds before bailing out.
- TimelimitThread t = new TimelimitThread(1000*10);
- t.start();
-
- try {
- mkdir(CLIENT_ENVDIR);
- mkdir(MASTER_ENVDIR);
-
- TestReplication rep = new TestReplication();
-
- // Run the client as a seperate thread.
- rep.start();
-
- // Run the master.
- rep.master();
-
- // Wait for the master to finish.
- rep.join();
- }
- catch (Exception e)
- {
- System.err.println("Exception: " + e);
- }
- t.finished();
- }
-
-}
-
-class TimelimitThread extends Thread
-{
- long nmillis;
- boolean finished = false;
-
- TimelimitThread(long nmillis)
- {
- this.nmillis = nmillis;
- }
-
- public void finished()
- {
- finished = true;
- }
-
- public void run()
- {
- long targetTime = System.currentTimeMillis() + nmillis;
- long curTime;
-
- while (!finished &&
- ((curTime = System.currentTimeMillis()) < targetTime)) {
- long diff = targetTime - curTime;
- if (diff > 100)
- diff = 100;
- try {
- sleep(diff);
- }
- catch (InterruptedException ie) {
- }
- }
- System.err.println("");
- System.exit(1);
- }
-}
diff --git a/db/test/scr016/TestRpcServer.java b/db/test/scr016/TestRpcServer.java
deleted file mode 100644
index ee040f0cf..000000000
--- a/db/test/scr016/TestRpcServer.java
+++ /dev/null
@@ -1,193 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: TestRpcServer.java,v 1.5 2004/01/28 03:36:34 bostic Exp $
- */
-
-package com.sleepycat.test;
-
-import com.sleepycat.db.*;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.Reader;
-import java.io.StringReader;
-import java.io.IOException;
-import java.io.PrintStream;
-
-public class TestRpcServer
-{
- private static final String FileName = "access.db";
-
- public TestRpcServer()
- {
- }
-
- private static void usage()
- {
- System.err.println("usage: TestRpcServer\n");
- System.exit(1);
- }
-
- public static void main(String argv[])
- {
- try
- {
- TestRpcServer app = new TestRpcServer();
- app.run();
- }
- catch (DbException dbe)
- {
- System.err.println("TestRpcServer: " + dbe.toString());
- System.exit(1);
- }
- catch (FileNotFoundException fnfe)
- {
- System.err.println("TestRpcServer: " + fnfe.toString());
- System.exit(1);
- }
- System.exit(0);
- }
-
- // Prompts for a line, and keeps prompting until a non blank
- // line is returned. Returns null on error.
- //
- static public String askForLine(Reader reader,
- PrintStream out, String prompt)
- {
- String result = "";
- while (result != null && result.length() == 0) {
- out.print(prompt);
- out.flush();
- result = getLine(reader);
- }
- return result;
- }
-
- // Not terribly efficient, but does the job.
- // Works for reading a line from stdin or a file.
- // Returns null on EOF. If EOF appears in the middle
- // of a line, returns that line, then null on next call.
- //
- static public String getLine(Reader reader)
- {
- StringBuffer b = new StringBuffer();
- int c;
- try {
- while ((c = reader.read()) != -1 && c != '\n') {
- if (c != '\r')
- b.append((char)c);
- }
- }
- catch (IOException ioe) {
- c = -1;
- }
-
- if (c == -1 && b.length() == 0)
- return null;
- else
- return b.toString();
- }
-
- public void run()
- throws DbException, FileNotFoundException
- {
- // Remove the previous database.
- new File(FileName).delete();
-
- DbEnv dbenv = new DbEnv(Db.DB_CLIENT);
- dbenv.set_rpc_server(null, "localhost", 0, 0, 0);
- dbenv.open(".", Db.DB_CREATE, 0644);
- System.out.println("server connection set");
-
- // Create the database object.
- // There is no environment for this simple example.
- Db table = new Db(dbenv, 0);
- table.set_error_stream(System.err);
- table.set_errpfx("TestRpcServer");
- table.open(FileName, null, Db.DB_BTREE, Db.DB_CREATE, 0644);
-
- //
- // Insert records into the database, where the key is the user
- // input and the data is the user input in reverse order.
- //
- Reader reader =
- new StringReader("abc\nStuff\nmore Stuff\nlast line\n");
-
- for (;;) {
- String line = askForLine(reader, System.out, "input> ");
- if (line == null)
- break;
-
- String reversed = (new StringBuffer(line)).reverse().toString();
-
- // See definition of StringDbt below
- //
- StringDbt key = new StringDbt(line);
- StringDbt data = new StringDbt(reversed);
-
- try
- {
- int err;
- if ((err = table.put(null,
- key, data, Db.DB_NOOVERWRITE)) == Db.DB_KEYEXIST) {
- System.out.println("Key " + line + " already exists.");
- }
- }
- catch (DbException dbe)
- {
- System.out.println(dbe.toString());
- }
- System.out.println("");
- }
-
- // Acquire an iterator for the table.
- Dbc iterator;
- iterator = table.cursor(null, 0);
-
- // Walk through the table, printing the key/data pairs.
- // See class StringDbt defined below.
- //
- StringDbt key = new StringDbt();
- StringDbt data = new StringDbt();
- while (iterator.get(key, data, Db.DB_NEXT) == 0)
- {
- System.out.println(key.getString() + " : " + data.getString());
- }
- iterator.close();
- table.close(0);
- }
-
- // Here's an example of how you can extend a Dbt in a straightforward
- // way to allow easy storage/retrieval of strings, or whatever
- // kind of data you wish. We've declared it as a static inner
- // class, but it need not be.
- //
- static /*inner*/
- class StringDbt extends Dbt
- {
- StringDbt()
- {
- set_flags(Db.DB_DBT_MALLOC); // tell Db to allocate on retrieval
- }
-
- StringDbt(String value)
- {
- setString(value);
- set_flags(Db.DB_DBT_MALLOC); // tell Db to allocate on retrieval
- }
-
- void setString(String value)
- {
- set_data(value.getBytes());
- set_size(value.length());
- }
-
- String getString()
- {
- return new String(get_data(), 0, get_size());
- }
- }
-}
diff --git a/db/test/scr016/TestSameDbt.java b/db/test/scr016/TestSameDbt.java
deleted file mode 100644
index 28a46af31..000000000
--- a/db/test/scr016/TestSameDbt.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: TestSameDbt.java,v 1.6 2004/01/28 03:36:34 bostic Exp $
- */
-
-/*
- * Simple test for get/put of specific values.
- */
-
-package com.sleepycat.test;
-
-import com.sleepycat.db.*;
-import java.io.FileNotFoundException;
-
-public class TestSameDbt
-{
- public static void main(String[] args)
- {
- try {
- Db db = new Db(null, 0);
- db.open(null, "my.db", null, Db.DB_BTREE, Db.DB_CREATE, 0644);
-
- // try reusing the dbt
- Dbt keydatadbt = new Dbt("stuff".getBytes());
- int gotexcept = 0;
-
- try {
- db.put(null, keydatadbt, keydatadbt, 0);
- }
- catch (DbException dbe) {
- System.out.println("got expected Db Exception: " + dbe);
- gotexcept++;
- }
-
- if (gotexcept != 1) {
- System.err.println("Missed exception");
- System.out.println("** FAIL **");
- }
- else {
- System.out.println("Test succeeded.");
- }
- }
- catch (DbException dbe) {
- System.err.println("Db Exception: " + dbe);
- }
- catch (FileNotFoundException fnfe) {
- System.err.println("FileNotFoundException: " + fnfe);
- }
-
- }
-
-}
diff --git a/db/test/scr016/TestSameDbt.testout b/db/test/scr016/TestSameDbt.testout
deleted file mode 100644
index be4bbbe59..000000000
--- a/db/test/scr016/TestSameDbt.testout
+++ /dev/null
@@ -1,2 +0,0 @@
-got expected Db Exception: com.sleepycat.db.DbException: Dbt is already in use
-Test succeeded.
diff --git a/db/test/scr016/TestSimpleAccess.java b/db/test/scr016/TestSimpleAccess.java
deleted file mode 100644
index 72886b5d2..000000000
--- a/db/test/scr016/TestSimpleAccess.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: TestSimpleAccess.java,v 1.7 2004/01/28 03:36:34 bostic Exp $
- */
-
-/*
- * Simple test for get/put of specific values.
- */
-
-package com.sleepycat.test;
-
-import com.sleepycat.db.*;
-import java.io.FileNotFoundException;
-
-public class TestSimpleAccess
-{
- public static void main(String[] args)
- {
- try {
- Db db = new Db(null, 0);
- db.open(null, "my.db", null, Db.DB_BTREE, Db.DB_CREATE, 0644);
-
- TestUtil.populate(db);
- System.out.println("finished test");
- }
- catch (DbException dbe) {
- System.err.println("Db Exception: " + dbe);
- }
- catch (FileNotFoundException fnfe) {
- System.err.println("FileNotFoundException: " + fnfe);
- }
- }
-}
diff --git a/db/test/scr016/TestSimpleAccess.testout b/db/test/scr016/TestSimpleAccess.testout
deleted file mode 100644
index dc88d4788..000000000
--- a/db/test/scr016/TestSimpleAccess.testout
+++ /dev/null
@@ -1,3 +0,0 @@
-got data: data
-get using bad key: DB_NOTFOUND: No matching key/data pair found
-finished test
diff --git a/db/test/scr016/TestStat.java b/db/test/scr016/TestStat.java
deleted file mode 100644
index 84add875e..000000000
--- a/db/test/scr016/TestStat.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: TestStat.java,v 1.10 2004/01/28 03:36:34 bostic Exp $
- */
-
-/*
- * Simple test for get/put of specific values.
- */
-
-package com.sleepycat.test;
-
-import com.sleepycat.db.*;
-import java.io.FileNotFoundException;
-
-public class TestStat
-{
- public static void main(String[] args)
- {
- int envflags =
- Db.DB_INIT_MPOOL | Db.DB_INIT_LOCK | Db.DB_INIT_LOG |
- Db.DB_INIT_REP | Db.DB_INIT_TXN | Db.DB_CREATE;
- try {
- DbEnv dbenv = new DbEnv(0);
- dbenv.open(".", envflags, 0);
-
- // Use a separate environment that has no activity
- // to do the replication stats. We don't want to get
- // into configuring a real replication environment here.
- DbEnv repenv = new DbEnv(0);
- repenv.open(".", envflags, 0);
-
- // Keep a couple transactions open so DbTxnStat active
- // array will have some entries.
- DbTxn dbtxn1 = dbenv.txnBegin(null, 0);
- DbTxn dbtxn2 = dbenv.txnBegin(dbtxn1, 0);
- Db db = new Db(dbenv, 0);
- db.open(null, "my.db", null, Db.DB_BTREE, Db.DB_CREATE, 0);
-
- TestUtil.populate(db);
- System.out.println("BtreeStat:");
- DbBtreeStat stat = (DbBtreeStat)db.stat(0);
- System.out.println(" bt_magic: " + stat.bt_magic);
-
- System.out.println("LogStat:");
- DbLogStat logstat = dbenv.logStat(0);
- System.out.println(" st_magic: " + logstat.st_magic);
- System.out.println(" st_cur_file: " + logstat.st_cur_file);
-
- System.out.println("TxnStat:");
- DbTxnStat txnstat = dbenv.txnStat(0);
- System.out.println(" st_ncommits: " + txnstat.st_ncommits);
- System.out.println(" st_nactive: " + txnstat.st_nactive);
-
- DbTxnStat.Active active0 = txnstat.st_txnarray[0];
- DbTxnStat.Active active1 = txnstat.st_txnarray[1];
- if (active0.txnid != active1.parentid &&
- active1.txnid != active0.parentid) {
- System.out.println("Missing PARENT/CHILD txn relationship:");
- System.out.println(" st_active[0].txnid: " + active0.txnid);
- System.out.println(" st_active[0].parentid: " +
- active0.parentid);
- System.out.println(" st_active[1].txnid: " + active1.txnid);
- System.out.println(" st_active[1].parentid: " +
- active1.parentid);
- }
-
- System.out.println("DbMpoolStat:");
- DbMpoolStat mpstat = dbenv.memoryPoolStat(0);
- System.out.println(" st_gbytes: " + mpstat.st_gbytes);
-
- System.out.println("DbMpoolFileStat:");
- DbMpoolFStat[] mpfstat = dbenv.memoryPoolFileStat(0);
- System.out.println(" num files: " + mpfstat.length);
-
- System.out.println("RepStat:");
- DbRepStat repstat = repenv.replicationStat(0);
- System.out.println(" st_status: " + repstat.st_status);
- System.out.println(" st_log_duplication: " +
- repstat.st_log_duplicated);
-
- System.out.println("finished test");
- }
- catch (DbException dbe) {
- System.err.println("Db Exception: " + dbe);
- }
- catch (FileNotFoundException fnfe) {
- System.err.println("FileNotFoundException: " + fnfe);
- }
- }
-}
diff --git a/db/test/scr016/TestStat.testout b/db/test/scr016/TestStat.testout
deleted file mode 100644
index bd21aa763..000000000
--- a/db/test/scr016/TestStat.testout
+++ /dev/null
@@ -1,18 +0,0 @@
-got data: data
-get using bad key: DB_NOTFOUND: No matching key/data pair found
-BtreeStat:
- bt_magic: 340322
-LogStat:
- st_magic: 264584
- st_cur_file: 1
-TxnStat:
- st_ncommits: 0
- st_nactive: 2
-DbMpoolStat:
- st_gbytes: 0
-DbMpoolFileStat:
- num files: 1
-RepStat:
- st_status: 0
- st_log_duplication: 0
-finished test
diff --git a/db/test/scr016/TestTruncate.java b/db/test/scr016/TestTruncate.java
deleted file mode 100644
index c84f68db4..000000000
--- a/db/test/scr016/TestTruncate.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: TestTruncate.java,v 1.8 2004/01/28 03:36:34 bostic Exp $
- */
-
-/*
- * Simple test for get/put of specific values.
- */
-
-package com.sleepycat.test;
-
-import com.sleepycat.db.*;
-import java.io.FileNotFoundException;
-
-public class TestTruncate
-{
- public static void main(String[] args)
- {
- try {
- 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.setFlags(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.getData(), 0, resultdbt.getSize());
- 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.getData(), 0, resultdbt.getSize());
- System.out.println("*** got data using bad key!!: " + result);
- }
-
- // Now, truncate and make sure that it's really gone.
- System.out.println("truncating data...");
- int nrecords = db.truncate(null, 0);
- System.out.println("truncate returns " + nrecords);
- if ((ret = db.get(null, goodkeydbt, resultdbt, 0)) != 0) {
- // We expect this...
- System.out.println("after truncate get: " +
- DbEnv.strerror(ret));
- }
- else {
- String result =
- new String(resultdbt.getData(), 0, resultdbt.getSize());
- System.out.println("got data: " + result);
- }
-
- db.close(0);
- System.out.println("finished test");
- }
- catch (DbException dbe) {
- System.err.println("Db Exception: " + dbe);
- }
- catch (FileNotFoundException fnfe) {
- System.err.println("FileNotFoundException: " + fnfe);
- }
-
- }
-
-}
diff --git a/db/test/scr016/TestTruncate.testout b/db/test/scr016/TestTruncate.testout
deleted file mode 100644
index 0a4bc9816..000000000
--- a/db/test/scr016/TestTruncate.testout
+++ /dev/null
@@ -1,6 +0,0 @@
-got data: data
-get using bad key: DB_NOTFOUND: No matching key/data pair found
-truncating data...
-truncate returns 1
-after truncate get: DB_NOTFOUND: No matching key/data pair found
-finished test
diff --git a/db/test/scr016/TestUtil.java b/db/test/scr016/TestUtil.java
deleted file mode 100644
index 799d326cd..000000000
--- a/db/test/scr016/TestUtil.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: TestUtil.java,v 1.5 2004/01/28 03:36:34 bostic Exp $
- */
-
-/*
- * Utilities used by many tests.
- */
-
-package com.sleepycat.test;
-
-import com.sleepycat.db.*;
-import java.io.FileNotFoundException;
-
-public class TestUtil
-{
- public static void populate(Db db)
- throws DbException
- {
- // 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.setFlags(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.getData(), 0, resultdbt.getSize());
- 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.getData(), 0, resultdbt.getSize());
- System.out.println("*** got data using bad key!!: " + result);
- }
- }
-}
diff --git a/db/test/scr016/TestXAServlet.java b/db/test/scr016/TestXAServlet.java
deleted file mode 100644
index 29545b3b9..000000000
--- a/db/test/scr016/TestXAServlet.java
+++ /dev/null
@@ -1,313 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997-2004
- * Sleepycat Software. All rights reserved.
- *
- * $Id: TestXAServlet.java,v 1.4 2004/01/28 03:36:34 bostic Exp $
- */
-
-/*
- * Simple test of XA, using WebLogic.
- */
-
-package com.sleepycat.test;
-
-import com.sleepycat.db.*;
-import com.sleepycat.db.xa.*;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.util.Hashtable;
-import javax.servlet.*;
-import javax.servlet.http.*;
-import javax.transaction.*;
-import javax.transaction.xa.*;
-import javax.naming.Context;
-import javax.naming.InitialContext;
-import javax.naming.NamingException;
-import weblogic.transaction.TxHelper;
-import weblogic.transaction.TransactionManager;
-
-public class TestXAServlet extends HttpServlet
-{
- public static final String ENV_HOME = "TESTXADIR";
- public static final String DEFAULT_URL = "t3://localhost:7001";
- public static String filesep = System.getProperty("file.separator");
-
- private static TransactionManager tm;
- private static DbXAResource xaresource;
- private static boolean initialized = false;
-
- /**
- * Utility to remove files recursively.
- */
- public static void removeRecursive(File f)
- {
- if (f.isDirectory()) {
- String[] sub = f.list();
- for (int i=0; i<sub.length; i++)
- removeRecursive(new File(f.getName() + filesep + sub[i]));
- }
- f.delete();
- }
-
- /**
- * Typically done only once, unless shutdown is invoked. This
- * sets up directories, and removes any work files from previous
- * runs. Also establishes a transaction manager that we'll use
- * for various transactions. Each call opens/creates a new DB
- * environment in our work directory.
- */
- public static synchronized void startup()
- {
- if (initialized)
- return;
-
- try {
- File dir = new File(ENV_HOME);
- removeRecursive(dir);
- dir.mkdirs();
-
- System.out.println("Getting context");
- InitialContext ic = getInitialContext(DEFAULT_URL);
- System.out.println("Creating XAResource");
- xaresource = new DbXAResource(ENV_HOME, 77, 0);
- System.out.println("Registering with transaction manager");
- tm = TxHelper.getTransactionManager();
- tm.registerStaticResource("DbXA", xaresource);
- initialized = true;
- }
- catch (Exception e) {
- System.err.println("Exception: " + e);
- e.printStackTrace();
- }
- initialized = true;
- }
-
- /**
- * Closes the XA resource manager.
- */
- public static synchronized void shutdown(PrintWriter out)
- throws XAException
- {
- if (!initialized)
- return;
-
- out.println("Closing the resource.");
- xaresource.close(0);
- out.println("Shutdown complete.");
- initialized = false;
- }
-
-
- /**
- * Should be called once per chunk of major activity.
- */
- public void initialize()
- {
- startup();
- }
-
- private static int count = 1;
- private static boolean debugInited = false;
- private Xid bogusXid;
-
- public static synchronized int incrCount()
- {
- return count++;
- }
-
- public void debugSetup(PrintWriter out)
- throws ServletException, IOException
- {
- try {
- Db.load_db();
- }
- catch (Exception e) {
- out.println("got exception during load: " + e);
- System.out.println("got exception during load: " + e);
- }
- out.println("The servlet has been restarted, and Berkeley DB is loaded");
- out.println("<p>If you're debugging, you should now start the debugger and set breakpoints.");
- }
-
- public void doXATransaction(PrintWriter out, String key, String value,
- String operation)
- throws ServletException, IOException
- {
- try {
- int counter = incrCount();
- if (key == null || key.equals(""))
- key = "key" + counter;
- if (value == null || value.equals(""))
- value = "value" + counter;
-
- out.println("Adding (\"" + key + "\", \"" + value + "\")");
-
- System.out.println("XA transaction begin");
- tm.begin();
- System.out.println("getting XA transaction");
- DbXAResource.DbAttach attach = DbXAResource.xa_attach(null, null);
- DbTxn txn = attach.get_txn();
- DbEnv env = attach.get_env();
- Db db = new Db(env, 0);
- db.open(txn, "my.db", null, Db.DB_BTREE, Db.DB_CREATE, 0644);
- System.out.println("DB put " + key);
- db.put(txn,
- new Dbt(key.getBytes()),
- new Dbt(value.getBytes()),
- 0);
-
- if (operation.equals("rollback")) {
- out.println("<p>ROLLBACK");
- System.out.println("XA transaction rollback");
- tm.rollback();
- System.out.println("XA rollback returned");
-
- // The old db is no good after the rollback
- // since the open was part of the transaction.
- // Get another db for the cursor dump
- //
- db = new Db(env, 0);
- db.open(null, "my.db", null, Db.DB_BTREE, Db.DB_CREATE, 0644);
- }
- else {
- out.println("<p>COMMITTED");
- System.out.println("XA transaction commit");
- tm.commit();
- }
-
- // Show the current state of the database.
- Dbc dbc = db.cursor(null, 0);
- Dbt gotkey = new Dbt();
- Dbt gotdata = new Dbt();
-
- out.println("<p>Current database values:");
- while (dbc.get(gotkey, gotdata, Db.DB_NEXT) == 0) {
- out.println("<br> " + getDbtString(gotkey) + " : "
- + getDbtString(gotdata));
- }
- dbc.close();
- db.close(0);
- }
- catch (DbException dbe) {
- System.err.println("Db Exception: " + dbe);
- out.println(" *** Exception received: " + dbe);
- dbe.printStackTrace();
- }
- catch (FileNotFoundException fnfe) {
- System.err.println("FileNotFoundException: " + fnfe);
- out.println(" *** Exception received: " + fnfe);
- fnfe.printStackTrace();
- }
- // Includes SystemException, NotSupportedException, RollbackException
- catch (Exception e) {
- System.err.println("Exception: " + e);
- out.println(" *** Exception received: " + e);
- e.printStackTrace();
- }
- }
-
- private static Xid getBogusXid()
- throws XAException
- {
- return new DbXid(1, "BOGUS_gtrid".getBytes(),
- "BOGUS_bqual".getBytes());
- }
-
- private static String getDbtString(Dbt dbt)
- {
- return new String(dbt.get_data(), 0, dbt.get_size());
- }
-
- /**
- * doGet is called as a result of invoking the servlet.
- */
- public void doGet(HttpServletRequest req, HttpServletResponse resp)
- throws ServletException, IOException
- {
- try {
- resp.setContentType("text/html");
- PrintWriter out = resp.getWriter();
-
- String key = req.getParameter("key");
- String value = req.getParameter("value");
- String operation = req.getParameter("operation");
-
- out.println("<HTML>");
- out.println("<HEAD>");
- out.println("<TITLE>Berkeley DB with XA</TITLE>");
- out.println("</HEAD><BODY>");
- out.println("<a href=\"TestXAServlet" +
- "\">Database put and commit</a><br>");
- out.println("<a href=\"TestXAServlet?operation=rollback" +
- "\">Database put and rollback</a><br>");
- out.println("<a href=\"TestXAServlet?operation=close" +
- "\">Close the XA resource manager</a><br>");
- out.println("<a href=\"TestXAServlet?operation=forget" +
- "\">Forget an operation (bypasses TM)</a><br>");
- out.println("<a href=\"TestXAServlet?operation=prepare" +
- "\">Prepare an operation (bypasses TM)</a><br>");
- out.println("<br>");
-
- if (!debugInited) {
- // Don't initialize XA yet, give the user
- // a chance to attach a debugger if necessary.
- debugSetup(out);
- debugInited = true;
- }
- else {
- initialize();
- if (operation == null)
- operation = "commit";
-
- if (operation.equals("close")) {
- shutdown(out);
- }
- else if (operation.equals("forget")) {
- // A bogus test, we just make sure the API is callable.
- out.println("<p>FORGET");
- System.out.println("XA forget bogus XID (bypass TM)");
- xaresource.forget(getBogusXid());
- }
- else if (operation.equals("prepare")) {
- // A bogus test, we just make sure the API is callable.
- out.println("<p>PREPARE");
- System.out.println("XA prepare bogus XID (bypass TM)");
- xaresource.prepare(getBogusXid());
- }
- else {
- // commit, rollback, prepare, forget
- doXATransaction(out, key, value, operation);
- }
- }
- out.println("</BODY></HTML>");
-
- System.out.println("Finished.");
- }
- // Includes SystemException, NotSupportedException, RollbackException
- catch (Exception e) {
- System.err.println("Exception: " + e);
- e.printStackTrace();
- }
-
- }
-
-
- /**
- * From weblogic's sample code:
- * samples/examples/jta/jmsjdbc/Client.java
- */
- private static InitialContext getInitialContext(String url)
- throws NamingException
- {
- Hashtable env = new Hashtable();
- env.put(Context.INITIAL_CONTEXT_FACTORY,
- "weblogic.jndi.WLInitialContextFactory");
- env.put(Context.PROVIDER_URL, url);
- return new InitialContext(env);
- }
-
-}
diff --git a/db/test/scr016/chk.bdb b/db/test/scr016/chk.bdb
new file mode 100644
index 000000000..3178c9d6d
--- /dev/null
+++ b/db/test/scr016/chk.bdb
@@ -0,0 +1,76 @@
+#!/bin/sh -
+#
+# $Id: chk.bdb,v 1.2 2007/05/17 18:17:21 bostic Exp $
+#
+# Run the DB Java API test suite.
+# Alternatively supply the class name for an individual test
+# case and have that run.
+
+# NOTES:
+# This test requires one JAR not included with the Berkeley DB
+# distribution: JUnit (junit.jar) I've been using the 8/31/2002 version
+# of JUnit. You can download this JAR from http://jakarta.apache.org/
+#
+# JUNIT_JAR=/Users/gburd/Unix/opt/junit/junit.jar
+
+[ "x$JUNIT_JAR" = "x" ] && {
+ echo 'FAIL: unset environment variable JUNIT_JAR for junit.jar.'
+ exit 1
+}
+
+[ -f $JUNIT_JAR ] || {
+ echo 'FAIL: JUNIT_JAR not a valid path to the junit.jar.'
+ exit 1
+}
+
+case `uname` in
+*CYGWIN*)
+ CP_SEP=";"
+ d="../../build_windows/Debug"
+ DB_LIB_DIR="$d"
+ PATH="../../build_windows/Debug:$PATH"
+ export PATH;;
+*)
+ CP_SEP=":"
+ d="../../build_unix/"
+ DB_LIB_DIR="$d/.libs"
+esac
+
+REQUIRED_JARS=$JUNIT_JAR
+DB_JAR=$d/db.jar
+export DB_JAR
+export REQUIRED_JARS
+export CP_SEP
+export DB_LIB_DIR
+
+# Build the tests.
+
+make clean
+
+[ -f ./dbtest.jar ] || (make dbtest.jar) || {
+ echo 'FAIL: unable to find or build dbtest.jar'
+ exit 1
+}
+
+# Run the tests.
+
+
+if [ -n "$1" ]
+then
+ echo "Running: $1"
+ java -Xcheck:jni -Djava.library.path=$DB_LIB_DIR -cp "$REQUIRED_JARS$CP_SEP$DB_JAR$CP_SEP./dbtest.jar" org.junit.runner.JUnitCore $1
+
+else
+
+ for f in `find classes -name "*Test.class"`; do
+ c=`echo "$f" | sed -e 's/classes\///' -e 's/\.class//' -e 's/\//./g'`
+ echo "Running: $c"
+ if java -Xcheck:jni -Djava.library.path=$DB_LIB_DIR -cp "$REQUIRED_JARS$CP_SEP$DB_JAR$CP_SEP./dbtest.jar" org.junit.runner.JUnitCore $c ; then
+ :
+ else
+ echo "FAIL: test program failed"
+ # exit 1
+ fi
+ done
+fi
+exit 0
diff --git a/db/test/scr016/chk.javatests b/db/test/scr016/chk.javatests
deleted file mode 100644
index 2e2217dc7..000000000
--- a/db/test/scr016/chk.javatests
+++ /dev/null
@@ -1,79 +0,0 @@
-#!/bin/sh -
-#
-# $Id: chk.javatests,v 1.6 2003/11/21 02:35:46 bostic Exp $
-#
-# Check to make sure that regression tests for Java run.
-
-TEST_JAVA_SRCDIR=../test/scr016 # must be a relative directory
-JAVA=${JAVA:-java}
-JAVAC=${JAVAC:-javac}
-
-# CLASSPATH is used by javac and java.
-# We use CLASSPATH rather than the -classpath command line option
-# because the latter behaves differently from JDK1.1 and JDK1.2
-export CLASSPATH="./classes:../db.jar"
-export LD_LIBRARY_PATH="../.libs"
-
-
-# All paths must be relative to a subdirectory of the build directory
-LIBS="-L.. -ldb -ldb_cxx"
-CXXFLAGS="-I.. -I../../dbinc"
-
-# Test must be run from a local build directory, not from a test
-# directory.
-cd ..
-[ -f db_config.h ] || {
- echo 'FAIL: chk.javatests must be run from a local build directory.'
- exit 1
-}
-[ -d ../env ] || {
- echo 'FAIL: chk.javatests must be run from a local build directory.'
- exit 1
-}
-version=`sed -e 's/.* \([0-9]*\.[0-9]*\)\..*/\1/' -e q ../README `
-[ -f libdb_java-$version.la ] || make libdb_java-$version.la || {
- echo "FAIL: unable to build libdb_java-$version.la"
- exit 1
-}
-[ -f db.jar ] || make db.jar || {
- echo 'FAIL: unable to build db.jar'
- exit 1
-}
-testnames=`cd $TEST_JAVA_SRCDIR; ls *.java | sed -e 's/\.java$//'`
-
-for testname in $testnames; do
- if grep -x $testname $TEST_JAVA_SRCDIR/ignore > /dev/null; then
- echo " **** java test $testname ignored"
- continue
- fi
-
- echo " ==== java test $testname"
- rm -rf TESTJAVA; mkdir -p TESTJAVA/classes
- cd ./TESTJAVA
- testprefix=../$TEST_JAVA_SRCDIR/$testname
- ${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
- }
- rm -f ../$testname.compileout
- infile=$testprefix.testin
- [ -f $infile ] || infile=/dev/null
- goodoutfile=$testprefix.testout
- [ -f $goodoutfile ] || goodoutfile=/dev/null
- gooderrfile=$testprefix.testerr
- [ -f $gooderrfile ] || gooderrfile=/dev/null
- ${JAVA} com.sleepycat.test.$testname <$infile >../$testname.out 2>../$testname.err
- cmp ../$testname.out $goodoutfile > /dev/null || {
- echo "FAIL: $testname output differs: see ../$testname.out, $goodoutfile"
- exit 1
- }
- cmp ../$testname.err $gooderrfile > /dev/null || {
- echo "FAIL: $testname error differs: see ../$testname.err, $gooderrfile"
- exit 1
- }
- cd ..
- rm -f $testname.err $testname.out
-done
-rm -rf TESTJAVA
-exit 0
diff --git a/db/test/scr016/ignore b/db/test/scr016/ignore
deleted file mode 100644
index 03469ecdc..000000000
--- a/db/test/scr016/ignore
+++ /dev/null
@@ -1,25 +0,0 @@
-#
-# $Id: ignore,v 1.7 2003/08/07 15:48:03 mjc Exp $
-#
-# A list of tests to ignore
-
-# These tests are not debugged
-TestRpcServer
-TestReplication
-
-# These are currently not working
-TestAppendRecno
-TestAssociate
-TestLogc
-TestConstruct01
-TestConstruct02
-
-# We no longer check to see that a Dbt is used more than
-# once simultaneously. It's no longer a disastrous error.
-TestSameDbt
-
-# 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/makenewtest.sh b/db/test/scr016/makenewtest.sh
new file mode 100644
index 000000000..d074767c6
--- /dev/null
+++ b/db/test/scr016/makenewtest.sh
@@ -0,0 +1,117 @@
+
+# A script that helps create an empty test shell
+# application.
+# The only parameter is the name of the class.
+# The output file will be in the src/com/sleepycat/db/test
+# directory.
+
+
+case $1 in
+*Test)
+;;
+*)
+ echo "New test case names must end in Test."
+ exit 1;;
+esac
+
+outdir="src/com/sleepycat/db/test"
+if [ ! -d $outdir ]
+then
+ echo "Could not find test source directory. Ensure the script is being run from the right place."
+ exit 1
+fi
+
+outname="$outdir/$1.java"
+
+if [ -f $outname ]
+then
+ echo "A test with that file name exists."
+ echo -n "Are you sure you want to overwrite the file (yes/no)? "
+ read got_ok
+ if [ $got_ok != "yes" ]
+ then
+ exit 1
+ else
+ echo "" > $outname
+ fi
+fi
+
+nameupper=`echo $1 | tr -t [:lower:] [:upper:]`
+namelower=`echo $1 | tr -t [:upper:] [:lower:]`
+
+echo "/*-" >> $outname
+echo " * See the file LICENSE for redistribution information." >> $outname
+echo " * " >> $outname
+echo " * Copyright (c) 2002,2007 Oracle. All rights reserved." >> $outname
+echo " *" >> $outname
+echo " */" >> $outname
+echo "" >> $outname
+
+echo "" >> $outname
+
+echo "package com.sleepycat.db.test;" >> $outname
+echo "" >> $outname
+echo "import org.junit.After;" >> $outname
+echo "import org.junit.AfterClass;" >> $outname
+echo "import org.junit.Before;" >> $outname
+echo "import org.junit.BeforeClass;" >> $outname
+echo "import org.junit.Test;" >> $outname
+echo "import static org.junit.Assert.assertEquals;" >> $outname
+echo "import static org.junit.Assert.fail;" >> $outname
+echo "" >> $outname
+echo "import com.sleepycat.db.*;" >> $outname
+echo "" >> $outname
+
+# some other likely ones :)
+echo "import java.io.File;" >> $outname
+echo "import java.io.FileNotFoundException;" >> $outname
+echo "import java.io.IOException;" >> $outname
+
+echo "" >> $outname
+echo "import com.sleepycat.db.test.TestUtils;" >> $outname
+
+echo "public class $1 {" >> $outname
+
+echo " public static final String ${nameupper}_DBNAME = \"${namelower}.db\";" >> $outname
+
+echo " @BeforeClass public static void ClassInit() {" >> $outname
+echo " TestUtils.loadConfig(null);" >> $outname
+echo -n " TestUtils.check_file_removed(TestUtils." >> $outname
+echo "getDBFileName(${nameupper}_DBNAME), true, true);" >> $outname
+echo -n " TestUtils.removeall(true, true, TestUtils." >> $outname
+echo "BASETEST_DBDIR, TestUtils.getDBFileName(${nameupper}_DBNAME));" >> $outname
+echo " }" >> $outname
+
+echo "" >> $outname
+echo " @AfterClass public static void ClassShutdown() {" >> $outname
+echo -n " TestUtils.check_file_removed(TestUtils." >> $outname
+echo "getDBFileName(${nameupper}_DBNAME), true, true);" >> $outname
+echo -n " TestUtils.removeall(true, true, TestUtils." >> $outname
+echo "BASETEST_DBDIR, TestUtils.getDBFileName(${nameupper}_DBNAME));" >> $outname
+echo " }" >> $outname
+
+echo "" >> $outname
+echo " @Before public void PerTestInit()" >> $outname
+echo " throws Exception {" >> $outname
+echo " }" >> $outname
+
+echo "" >> $outname
+echo " @After public void PerTestShutdown()" >> $outname
+echo " throws Exception {" >> $outname
+echo " }" >> $outname
+
+echo " /*" >> $outname
+echo " * Test case implementations." >> $outname
+echo " * To disable a test mark it with @Ignore" >> $outname
+echo " * To set a timeout(ms) notate like: @Test(timeout=1000)" >> $outname
+echo " * To indicate an expected exception notate like: $Test(expected=Exception)" >> $outname
+echo " */" >> $outname
+
+echo "" >> $outname
+echo " @Test public void test1()" >> $outname
+echo " throws DatabaseException, FileNotFoundException" >> $outname
+echo " {" >> $outname
+echo " }" >> $outname
+
+echo "}" >> $outname
+
diff --git a/db/test/scr016/src/com/sleepycat/db/test/AppendRecnoTest.java b/db/test/scr016/src/com/sleepycat/db/test/AppendRecnoTest.java
new file mode 100644
index 000000000..70fc6d2c3
--- /dev/null
+++ b/db/test/scr016/src/com/sleepycat/db/test/AppendRecnoTest.java
@@ -0,0 +1,209 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
+ *
+ */
+
+/*
+ * Alexg 23-4-06
+ * Based on scr016 TestAppendRecno test application.
+ */
+
+package com.sleepycat.db.test;
+
+import org.junit.Before;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import com.sleepycat.db.*;
+
+import com.sleepycat.db.DatabaseException;
+
+import com.sleepycat.db.test.TestUtils;
+
+public class AppendRecnoTest implements RecordNumberAppender {
+
+ public static final String RECNOTEST_DBNAME = "appendrecnotest.db";
+
+ public static final String[] EXPECTED_ENTRIES = { "data0_xyz", "data1_xy", "ata4_xyz", "ata5_xy",
+ "abc", "", "data9_xyz" };
+
+ int callback_count = 0;
+ boolean callback_throws = false;
+
+ @BeforeClass public static void ClassInit() {
+ TestUtils.loadConfig(null);
+ TestUtils.check_file_removed(TestUtils.getDBFileName(RECNOTEST_DBNAME), true, true);
+ }
+
+ @AfterClass public static void ClassShutdown() {
+ TestUtils.check_file_removed(TestUtils.getDBFileName(RECNOTEST_DBNAME), true, true);
+ }
+
+ @Before public void PerTestInit()
+ throws Exception {
+ TestUtils.removeall(true, false, TestUtils.BASETEST_DBDIR, TestUtils.getDBFileName(RECNOTEST_DBNAME));
+ }
+
+ @After public void PerTestShutdown()
+ throws Exception {
+ }
+
+ /*
+ * Test creating a new database.
+ */
+ @Test public void test1()
+ throws DatabaseException, FileNotFoundException
+ {
+ DatabaseConfig dbConfig = new DatabaseConfig();
+ dbConfig.setErrorStream(TestUtils.getErrorStream());
+ dbConfig.setErrorPrefix("AppendRecnoTest");
+ dbConfig.setType(DatabaseType.RECNO);
+ dbConfig.setPageSize(1024);
+ dbConfig.setAllowCreate(true);
+ dbConfig.setRecordNumberAppender(this);
+
+ Database db = new Database(TestUtils.getDBFileName(RECNOTEST_DBNAME), null, dbConfig);
+
+ for (int i=0; i<10; i++) {
+ TestUtils.DEBUGOUT("\n*** Iteration " + i );
+ boolean gotExcept = false;
+ try {
+ RecnoEntry key = new RecnoEntry(77+i);
+ DatabaseEntry data = new DatabaseEntry((new String("data" + i + "_xyz")).getBytes());
+ db.append(null, key, data);
+ }
+ catch (DatabaseException dbe) {
+ gotExcept = true;
+ // Can be expected since testing throwing from the appendRecordNumber callback.
+ TestUtils.DEBUGOUT("dbe: " + dbe);
+ } catch (ArrayIndexOutOfBoundsException e) {
+ gotExcept = true;
+ TestUtils.DEBUGOUT("ArrayIndex: " + e);
+ }
+ if((gotExcept && callback_throws == false ) || (!gotExcept && callback_throws == true))
+ TestUtils.DEBUGOUT(3, "appendRecordNumber callback exception or non-exception condition dealt with incorrectly. Case " + callback_count);
+ }
+
+ Cursor dbcp = db.openCursor(null, CursorConfig.DEFAULT);
+
+ // Walk through the table, validating the key/data pairs.
+ RecnoEntry readkey = new RecnoEntry();
+ DatabaseEntry readdata = new DatabaseEntry();
+ TestUtils.DEBUGOUT("Dbc.get");
+
+ int itemcount = 0;
+ while (dbcp.getNext(readkey, readdata, LockMode.DEFAULT) == OperationStatus.SUCCESS) {
+ String gotString = new String(readdata.getData(), readdata.getOffset(), readdata.getSize());
+ TestUtils.DEBUGOUT(1, readkey.getRecno() + " : " + gotString);
+
+ if(readkey.getRecno() != ++itemcount)
+ TestUtils.DEBUGOUT(3, "Recno iteration out of order. key: " + readkey.getRecno() + " item: " + itemcount);
+
+ if(itemcount > EXPECTED_ENTRIES.length)
+ TestUtils.ERR("More entries in recno DB than expected.");
+
+
+ if(gotString.compareTo(EXPECTED_ENTRIES[itemcount-1]) != 0)
+ TestUtils.DEBUGOUT(3, "Recno - stored data mismatch. Expected: " + EXPECTED_ENTRIES[itemcount-1] + " received: " + gotString);
+ }
+
+ dbcp.close();
+ db.close(false);
+
+ }
+
+ public void appendRecordNumber(Database db, DatabaseEntry data, int recno)
+ throws DatabaseException
+ {
+ callback_throws = false;
+ TestUtils.DEBUGOUT("AppendRecnoTest::appendRecordNumber. data " + new String(data.getData()) + " recno: " + recno);
+
+ switch (callback_count++) {
+ case 0:
+ // nothing
+ break;
+
+ case 1:
+ data.setSize(data.getSize() - 1);
+ break;
+
+ case 2:
+ // Should result in an error.
+ callback_throws = true;
+ TestUtils.DEBUGOUT("throwing...");
+ throw new DatabaseException("appendRecordNumber thrown");
+ //not reached
+
+ case 3:
+ // Should result in an error (size unchanged).
+ callback_throws = true;
+ data.setOffset(1);
+ break;
+
+ case 4:
+ data.setOffset(1);
+ data.setSize(data.getSize() - 1);
+ break;
+
+ case 5:
+ data.setOffset(1);
+ data.setSize(data.getSize() - 2);
+ break;
+
+ case 6:
+ data.setData(new String("abc").getBytes());
+ data.setSize(3);
+ break;
+
+ case 7:
+ // Should result in an error.
+ callback_throws = true;
+ data.setData(new String("abc").getBytes());
+ data.setSize(4);
+ break;
+// TODO: Broken - does not throw an exception.
+ case 8:
+ // TODO: Should this result in an error?
+ data.setData(null);
+ break;
+
+ default:
+ break;
+ }
+ }
+
+ static class RecnoEntry extends DatabaseEntry
+ {
+ public RecnoEntry() {
+ super();
+ }
+
+ public RecnoEntry(int value)
+ {
+ setReuseBuffer(false);
+ arr = new byte[4];
+ setData(arr); // use our local array for data
+ setRecno(value);
+ }
+
+ public void setRecno(int value)
+ {
+ setRecordNumber(value);
+ }
+
+ public int getRecno()
+ {
+ return getRecordNumber();
+ }
+ byte arr[];
+ } // end of RecnoEntry sub-class.
+
+}
diff --git a/db/test/scr016/src/com/sleepycat/db/test/AssociateTest.java b/db/test/scr016/src/com/sleepycat/db/test/AssociateTest.java
new file mode 100644
index 000000000..04d4c96d8
--- /dev/null
+++ b/db/test/scr016/src/com/sleepycat/db/test/AssociateTest.java
@@ -0,0 +1,252 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
+ *
+ */
+
+/*
+ * Alexg 23-4-06
+ * Based on scr016 TestAssociate test application.
+ */
+
+package com.sleepycat.db.test;
+
+import org.junit.Before;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import com.sleepycat.db.*;
+
+import com.sleepycat.db.DatabaseException;
+
+import com.sleepycat.db.test.TestUtils;
+
+public class AssociateTest {
+
+ public static final String ASSOCTEST_DBNAME = "associatetest.db";
+
+ public static final String[] DATABASETEST_SAMPLE_DATA = {"abc", "def", "ghi", "JKL", "MNO", "pqrst", "UVW", "y", "Z"};
+
+ public static Database savedPriDb = null;
+ public static Database savedSecDb = null;
+
+ int callback_count = 0;
+ boolean callback_throws = false;
+
+ @BeforeClass public static void ClassInit() {
+ TestUtils.loadConfig(null);
+ TestUtils.check_file_removed(TestUtils.getDBFileName(ASSOCTEST_DBNAME), true, true);
+ TestUtils.removeall(true, true, TestUtils.BASETEST_DBDIR, TestUtils.getDBFileName(ASSOCTEST_DBNAME));
+ }
+
+ @AfterClass public static void ClassShutdown() {
+ TestUtils.removeall(true, true, TestUtils.BASETEST_DBDIR, TestUtils.getDBFileName(ASSOCTEST_DBNAME));
+ }
+
+ @Before public void PerTestInit()
+ throws Exception {
+ }
+
+ @After public void PerTestShutdown()
+ throws Exception {
+ }
+
+ /*
+ * Test creating a new database.
+ */
+ @Test public void test1()
+ throws DatabaseException, FileNotFoundException
+ {
+ int i;
+ EnvironmentConfig envc = new EnvironmentConfig();
+ envc.setAllowCreate(true);
+ envc.setInitializeCache(true);
+ Environment dbEnv = new Environment(TestUtils.BASETEST_DBFILE, envc);
+
+ DatabaseConfig dbConfig = new DatabaseConfig();
+ dbConfig.setErrorStream(TestUtils.getErrorStream());
+ dbConfig.setErrorPrefix("AssociateTest");
+ dbConfig.setType(DatabaseType.BTREE);
+ dbConfig.setAllowCreate(true);
+
+ Database priDb = dbEnv.openDatabase(null, ASSOCTEST_DBNAME, null, dbConfig);
+
+ SecondaryConfig secConfig = new SecondaryConfig();
+ secConfig.setAllowCreate(true);
+ secConfig.setType(DatabaseType.BTREE);
+ secConfig.setSortedDuplicates(true);
+ secConfig.setKeyCreator(new Capitalize());
+ SecondaryDatabase secDb = dbEnv.openSecondaryDatabase(null, ASSOCTEST_DBNAME+"2", null,
+ priDb, secConfig);
+ savedPriDb = priDb;
+ savedSecDb = secDb;
+
+ // Insert records into the database
+ for(i =0; i < DATABASETEST_SAMPLE_DATA.length; i++)
+ {
+ String curdata = DATABASETEST_SAMPLE_DATA[i];
+ String reversed = (new StringBuffer(curdata)).reverse().toString();
+
+ DatabaseEntry key = new DatabaseEntry(curdata.getBytes());
+ key.setReuseBuffer(false);
+ DatabaseEntry data = new DatabaseEntry(reversed.getBytes());
+ data.setReuseBuffer(false);
+ try {
+ if (priDb.putNoOverwrite(null, key, data) == OperationStatus.KEYEXIST) {
+ // should not in this - since we control the data.
+ TestUtils.DEBUGOUT(2, "Key: " + curdata + " already exists\n");
+ }
+ } catch(DatabaseException dbe) {
+ TestUtils.ERR("Caught DatabaseException: " + dbe);
+ }
+ }
+
+ DatabaseEntry readkey = new DatabaseEntry();
+ readkey.setReuseBuffer(false);
+ DatabaseEntry readdata = new DatabaseEntry();
+ readdata.setReuseBuffer(false);
+ Cursor dbcp = priDb.openCursor(null, CursorConfig.DEFAULT);
+ while (dbcp.getNext(readkey, readdata, LockMode.DEFAULT) == OperationStatus.SUCCESS) {
+ String keystring = new String(readkey.getData());
+ String datastring = new String(readdata.getData());
+ String expecteddata = (new StringBuffer(keystring)).reverse().toString();
+
+ boolean found = false;
+ for(i = 0; i < DATABASETEST_SAMPLE_DATA.length; i++)
+ {
+ if(DATABASETEST_SAMPLE_DATA[i].compareTo(keystring) == 0)
+ found = true;
+ }
+ if(!found)
+ TestUtils.ERR("Key: " + keystring + " retrieved from DB, but never added!");
+ if(datastring.compareTo(expecteddata) != 0)
+ TestUtils.ERR("Data: " + datastring + " does not match expected data: " + expecteddata);
+ }
+
+ // Test secondary get functionality.
+ DatabaseEntry seckey = new DatabaseEntry();
+ seckey.setReuseBuffer(false);
+ DatabaseEntry secpkey = new DatabaseEntry();
+ secpkey.setReuseBuffer(false);
+ DatabaseEntry secdata = new DatabaseEntry();
+ secdata.setReuseBuffer(false);
+
+ seckey.setData("BC".getBytes());
+ if(secDb.get(null, seckey, secdata, null) == OperationStatus.SUCCESS)
+ {
+ TestUtils.DEBUGOUT(2, "seckey: " + new String(seckey.getData()) + " secdata: " +
+ new String(secdata.getData()));
+ } else {
+ TestUtils.ERR("Secondary get of key: " + new String(seckey.getData()) + " did not succeed.");
+ }
+ // pget
+ if(secDb.get(null, seckey, secpkey, secdata, null) == OperationStatus.SUCCESS)
+ {
+ TestUtils.DEBUGOUT(2, "seckey: " + new String(seckey.getData()) + " secdata: " +
+ new String(secdata.getData()) + " pkey: " + new String(secpkey.getData()));
+
+ // ensure that the retrievals are consistent using both primary and secondary keys.
+ DatabaseEntry tmpdata = new DatabaseEntry();
+ priDb.get(null, secpkey, tmpdata, null);
+ String tmpstr = new String(tmpdata.getData());
+ if(tmpstr.compareTo(new String(secdata.getData())) != 0)
+ TestUtils.ERR("Data retrieved from matching primary secondary keys is not consistent. secdata: " + new String(secdata.getData()) +
+ " pridata: " + new String(tmpdata.getData()));
+ } else {
+ TestUtils.ERR("Secondary pget of key: " + new String(seckey.getData()) + " did not succeed.");
+ }
+ seckey.setData("KL".getBytes());
+ if(secDb.get(null, seckey, secdata, null) == OperationStatus.SUCCESS)
+ {
+ TestUtils.DEBUGOUT(2, "seckey: " + new String(seckey.getData()) + " secdata: " +
+ new String(secdata.getData()));
+ } else {
+ TestUtils.ERR("Secondary get of key: " + new String(seckey.getData()) + " did not succeed.");
+ }
+ // pget
+ if(secDb.get(null, seckey, secpkey, secdata, null) == OperationStatus.SUCCESS)
+ {
+ TestUtils.DEBUGOUT(2, "seckey: " + new String(seckey.getData()) + " secdata: " +
+ new String(secdata.getData()) + " pkey: " + new String(secpkey.getData()));
+
+ // ensure that the retrievals are consistent using both primary and secondary keys.
+ DatabaseEntry tmpdata = new DatabaseEntry();
+ priDb.get(null, secpkey, tmpdata, null);
+ String tmpstr = new String(tmpdata.getData());
+ if(tmpstr.compareTo(new String(secdata.getData())) != 0)
+ TestUtils.ERR("Data retrieved from matching primary secondary keys is not consistent. secdata: " + new String(secdata.getData()) +
+ " pridata: " + new String(tmpdata.getData()));
+ } else {
+ TestUtils.ERR("Secondary pget of key: " + new String(seckey.getData()) + " did not succeed.");
+ }
+
+ }
+
+/**************************************************************************************
+ **************************************************************************************
+ **************************************************************************************/
+ /* creates a stupid secondary index as follows:
+ For an N letter key, we use N-1 letters starting at
+ position 1. If the new letters are already capitalized,
+ we return the old array, but with offset set to 1.
+ If the letters are not capitalized, we create a new,
+ capitalized array. This is pretty stupid for
+ an application, but it tests all the paths in the runtime.
+ */
+ public static class Capitalize implements SecondaryKeyCreator
+ {
+ public boolean createSecondaryKey(SecondaryDatabase secondary,
+ DatabaseEntry key,
+ DatabaseEntry data,
+ DatabaseEntry result)
+ throws DatabaseException
+ {
+ key.setReuseBuffer(false);
+ data.setReuseBuffer(false);
+ result.setReuseBuffer(false);
+ String which = "unknown db";
+ if (savedPriDb.equals(secondary)) {
+ which = "primary";
+ }
+ else if (savedSecDb.equals(secondary)) {
+ which = "secondary";
+ }
+ String keystring = new String(key.getData());
+ String datastring = new String(data.getData());
+ TestUtils.DEBUGOUT(2, "secondaryKeyCreate, Db: " + TestUtils.shownull(secondary) + "(" + which + "), key: " + keystring + ", data: " + datastring);
+ int len = key.getSize();
+ byte[] arr = key.getData();
+ boolean capped = true;
+
+ if (len < 1)
+ throw new DatabaseException("bad key");
+
+ result.setSize(len - 1);
+ for (int i=1; capped && i<len; i++) {
+ if (!Character.isUpperCase((char)arr[i]))
+ capped = false;
+ }
+ if (capped) {
+ TestUtils.DEBUGOUT(2, " creating key(1): " + new String(arr, 1, len-1));
+ result.setData(arr);
+ result.setOffset(1);
+ result.setSize(result.getSize() -1);
+ }
+ else {
+ TestUtils.DEBUGOUT(2, " creating key(2): " + (new String(arr)).substring(1).
+ toUpperCase());
+ result.setData((new String(arr)).substring(1).
+ toUpperCase().getBytes());
+ }
+ return true;
+ }
+ }
+
+}
diff --git a/db/test/scr016/src/com/sleepycat/db/test/CallbackTest.java b/db/test/scr016/src/com/sleepycat/db/test/CallbackTest.java
new file mode 100644
index 000000000..608d95540
--- /dev/null
+++ b/db/test/scr016/src/com/sleepycat/db/test/CallbackTest.java
@@ -0,0 +1,159 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
+ *
+ */
+
+/*
+ * Alexg 23-4-06
+ * Based on scr016 TestCallback test application.
+ *
+ * Simple tests for DbErrorHandler, DbFeedbackHandler, DbPanicHandler
+ */
+
+package com.sleepycat.db.test;
+
+import org.junit.Before;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import com.sleepycat.db.*;
+
+import com.sleepycat.db.DatabaseException;
+
+import com.sleepycat.db.test.TestUtils;
+
+public class CallbackTest
+ implements FeedbackHandler, PanicHandler, ErrorHandler {
+
+ public static final String CALLBACKTEST_DBNAME = "callbacktest.db";
+
+ int callback_count = 0;
+ boolean callback_throws = false;
+
+ @BeforeClass public static void ClassInit() {
+ TestUtils.loadConfig(null);
+ TestUtils.check_file_removed(TestUtils.getDBFileName(CALLBACKTEST_DBNAME), true, true);
+ }
+
+ @AfterClass public static void ClassShutdown() {
+ TestUtils.check_file_removed(TestUtils.getDBFileName(CALLBACKTEST_DBNAME), true, true);
+ }
+
+ @Before public void PerTestInit()
+ throws Exception {
+ TestUtils.removeall(true, true, TestUtils.BASETEST_DBDIR, TestUtils.getDBFileName(CALLBACKTEST_DBNAME));
+ }
+
+ @After public void PerTestShutdown()
+ throws Exception {
+ TestUtils.removeall(true, true, TestUtils.BASETEST_DBDIR, TestUtils.getDBFileName(CALLBACKTEST_DBNAME));
+ }
+
+ /*
+ * Test creating a new database.
+ */
+ @Test public void test1()
+ throws DatabaseException, FileNotFoundException
+ {
+ TestUtils.debug_level = 2;
+ EnvironmentConfig envc = new EnvironmentConfig();
+ envc.setAllowCreate(true);
+ envc.setInitializeCache(true);
+ envc.setTransactional(true);
+ envc.setInitializeLocking(true);
+ envc.setCacheSize(64 * 1024);
+ envc.setFeedbackHandler(this);
+ envc.setPanicHandler(this);
+ envc.setErrorHandler(this);
+ Environment dbEnv = new Environment(TestUtils.BASETEST_DBFILE, envc);
+
+ // set up a transaction DB.
+ DatabaseConfig dbConfig = new DatabaseConfig();
+ dbConfig.setType(DatabaseType.BTREE);
+ dbConfig.setAllowCreate(true);
+ Database db = dbEnv.openDatabase(null, CALLBACKTEST_DBNAME, null, dbConfig);
+
+ DatabaseEntry key1 = new DatabaseEntry("key".getBytes());
+ DatabaseEntry data1 = new DatabaseEntry("data".getBytes());
+ // populate was doing some more than this (validating that not retrieving things that were not added)
+ db.putNoOverwrite(null, key1, data1);
+// TestUtil.populate(db);
+
+ CheckpointConfig cpcfg = new CheckpointConfig();
+ cpcfg.setForce(true);
+ dbEnv.checkpoint(cpcfg);
+
+ try {
+ dbConfig.setBtreeComparator(null);
+ }
+ catch (IllegalArgumentException dbe)
+ {
+ TestUtils.DEBUGOUT(1, "got expected exception: " + dbe);
+ // ignore
+ }
+
+ /*
+ // Pretend we crashed, and reopen the environment
+ db = null;
+ dbenv = null;
+
+ dbenv = new DbEnv(0);
+ dbenv.setFeedbackHandler(this);
+ dbenv.open(".", Db.DB_INIT_LOCK | Db.DB_INIT_MPOOL | Db.DB_INIT_LOG
+ | Db.DB_INIT_TXN | Db.DB_RECOVER, 0);
+ */
+
+ dbEnv.panic(true);
+ try {
+ DatabaseEntry key = new DatabaseEntry("foo".getBytes());
+ DatabaseEntry data = new DatabaseEntry();
+ db.get(null, key, data, null);
+ }
+ catch (DatabaseException dbe2)
+ {
+ TestUtils.DEBUGOUT(2, "got expected exception: " + dbe2);
+ // ignore
+ }
+
+ }
+
+ /*
+ * FeedbackHandler interface implementation.
+ */
+ public void recoveryFeedback(Environment dbenv, int percent)
+ {
+ TestUtils.DEBUGOUT(2, "recoveryFeedback callback invoked. percent: " + percent);
+ }
+ public void upgradeFeedback(Database db, int percent)
+ {
+ TestUtils.DEBUGOUT(2, "upgradeFeedback callback invoked. percent: " + percent);
+ }
+ public void verifyFeedback(Database db, int percent)
+ {
+ TestUtils.DEBUGOUT(2, "verifyFeedback callback invoked. percent: " + percent);
+ }
+
+ /*
+ * Panic handler interface implementation.
+ */
+ public void panic(Environment dbenv, DatabaseException e)
+ {
+ TestUtils.DEBUGOUT(2, "panic callback invoked. exception: " + e);
+ }
+
+ /*
+ * Error handler interface implementation.
+ */
+ public void error(Environment dbenv, String errpfx, String msg)
+ {
+ TestUtils.DEBUGOUT(2, "error callback invoked, errpfx: \"" + errpfx + "\", msg: \"" + msg + "\"");
+ }
+}
diff --git a/db/test/scr016/src/com/sleepycat/db/test/ClosedDbTest.java b/db/test/scr016/src/com/sleepycat/db/test/ClosedDbTest.java
new file mode 100644
index 000000000..8ad6ded4e
--- /dev/null
+++ b/db/test/scr016/src/com/sleepycat/db/test/ClosedDbTest.java
@@ -0,0 +1,80 @@
+
+package com.sleepycat.db.test;
+
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
+import com.sleepycat.db.*;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+
+import com.sleepycat.db.test.TestUtils;
+public class ClosedDbTest {
+ public static final String CLOSEDDBTEST_DBNAME = "closeddbtest.db";
+ @BeforeClass public static void ClassInit() {
+ TestUtils.loadConfig(null);
+ TestUtils.check_file_removed(TestUtils.getDBFileName(CLOSEDDBTEST_DBNAME), true, true);
+ TestUtils.removeall(true, true, TestUtils.BASETEST_DBDIR, TestUtils.getDBFileName(CLOSEDDBTEST_DBNAME));
+ }
+
+ @AfterClass public static void ClassShutdown() {
+ TestUtils.check_file_removed(TestUtils.getDBFileName(CLOSEDDBTEST_DBNAME), true, true);
+ TestUtils.removeall(true, true, TestUtils.BASETEST_DBDIR, TestUtils.getDBFileName(CLOSEDDBTEST_DBNAME));
+ }
+
+ @Before public void PerTestInit()
+ throws Exception {
+ }
+
+ @After public void PerTestShutdown()
+ throws Exception {
+ }
+ /*
+ * Test case implementations.
+ * To disable a test mark it with @Ignore
+ * To set a timeout(ms) notate like: @Test(timeout=1000)
+ * To indicate an expected exception notate like: (expected=Exception)
+ */
+
+ @Test public void test1()
+ throws DatabaseException, FileNotFoundException
+ {
+ DatabaseConfig dbConf = new DatabaseConfig();
+ dbConf.setType(DatabaseType.BTREE);
+ dbConf.setAllowCreate(true);
+ Database db = new Database(TestUtils.getDBFileName(CLOSEDDBTEST_DBNAME), null, dbConf);
+
+ DatabaseEntry key = new DatabaseEntry("key".getBytes());
+ DatabaseEntry data = new DatabaseEntry("data".getBytes());
+ db.putNoOverwrite(null, key, data);
+
+ // Now, retrieve. It would be possible to reuse the
+ // same key object, but that would be a-typical.
+ DatabaseEntry getkey = new DatabaseEntry("key".getBytes());
+ DatabaseEntry badgetkey = new DatabaseEntry("badkey".getBytes());
+ DatabaseEntry getdata = new DatabaseEntry();
+ getdata.setReuseBuffer(false); // TODO: is this enabling DB_DBT_MALLOC?
+
+ int ret;
+
+ // close the db - subsequent operations should fail by throwing
+ // an exception.
+ db.close();
+
+ try {
+ db.get(null, getkey, getdata, LockMode.DEFAULT);
+ fail("Database get on a closed Db should not have completed.");
+ } catch (IllegalArgumentException e) {
+ TestUtils.DEBUGOUT(1, "Got expected exception from db.get on closed database.");
+ }
+
+ }
+}
+
diff --git a/db/test/scr016/src/com/sleepycat/db/test/DatabaseTest.java b/db/test/scr016/src/com/sleepycat/db/test/DatabaseTest.java
new file mode 100644
index 000000000..65614b69d
--- /dev/null
+++ b/db/test/scr016/src/com/sleepycat/db/test/DatabaseTest.java
@@ -0,0 +1,377 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
+ *
+ */
+
+/*
+ * Alexg 23-4-06
+ * Based on scr016 TestConstruct01 and TestConstruct02
+ * test applications.
+ */
+
+package com.sleepycat.db.test;
+
+import org.junit.Before;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
+import com.sleepycat.db.Cursor;
+import com.sleepycat.db.CursorConfig;
+import com.sleepycat.db.Database;
+import com.sleepycat.db.DatabaseConfig;
+import com.sleepycat.db.DatabaseEntry;
+import com.sleepycat.db.DatabaseException;
+import com.sleepycat.db.DatabaseType;
+import com.sleepycat.db.Environment;
+import com.sleepycat.db.EnvironmentConfig;
+import com.sleepycat.db.LockMode;
+import com.sleepycat.db.OperationStatus;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.FileNotFoundException;
+import com.sleepycat.db.test.TestUtils;
+
+public class DatabaseTest {
+
+ public static final String DATABASETEST_DBNAME = "databasetest.db";
+
+ private static int itemcount; // count the number of items in the database
+
+ @BeforeClass public static void ClassInit() {
+ TestUtils.loadConfig(null);
+ TestUtils.check_file_removed(TestUtils.getDBFileName(DATABASETEST_DBNAME), true, true);
+ TestUtils.removeall(true, true, TestUtils.BASETEST_DBDIR, TestUtils.getDBFileName(DATABASETEST_DBNAME));
+ itemcount = 0;
+ }
+
+ @AfterClass public static void ClassShutdown() {
+ TestUtils.check_file_removed(TestUtils.getDBFileName(DATABASETEST_DBNAME), true, true);
+ TestUtils.removeall(true, true, TestUtils.BASETEST_DBDIR, TestUtils.getDBFileName(DATABASETEST_DBNAME));
+ }
+
+ @Before public void PerTestInit()
+ throws Exception {
+ }
+
+ @After public void PerTestShutdown()
+ throws Exception {
+ }
+
+ /*
+ * Test creating a new database.
+ */
+ @Test public void test1()
+ throws DatabaseException, FileNotFoundException
+ {
+ TestOptions options = new TestOptions();
+ options.db_config.setErrorPrefix("DatabaseTest::test1 ");
+
+ rundb(itemcount++, options);
+ }
+
+ /*
+ * Test opening and adding to an existing database.
+ */
+ @Test public void test2()
+ throws DatabaseException, FileNotFoundException
+ {
+ TestOptions options = new TestOptions();
+ options.db_config.setErrorPrefix("DatabaseTest::test2 ");
+
+ rundb(itemcount++, options);
+ }
+
+ /*
+ * Test modifying the error prefix multiple times ?
+ */
+ @Test public void test3()
+ throws DatabaseException, FileNotFoundException
+ {
+ TestOptions options = new TestOptions();
+ options.db_config.setErrorPrefix("DatabaseTest::test3 ");
+
+ for (int i=0; i<100; i++)
+ options.db_config.setErrorPrefix("str" + i);
+
+ rundb(itemcount++, options);
+ }
+
+ /*
+ * Test opening a database with an env.
+ */
+ @Test public void test4()
+ throws DatabaseException, FileNotFoundException
+ {
+ TestOptions options = new TestOptions();
+ options.db_config.setErrorPrefix("DatabaseTest::test4 ");
+
+ EnvironmentConfig envc = new EnvironmentConfig();
+ envc.setAllowCreate(true);
+ envc.setInitializeCache(true);
+ options.db_env = new Environment(TestUtils.BASETEST_DBFILE, envc);
+
+ rundb(itemcount++, options);
+ options.db_env.close();
+ }
+
+ /*
+ * Test opening multiple databases using the same env.
+ */
+ @Test public void test5()
+ throws DatabaseException, FileNotFoundException
+ {
+ TestOptions options = new TestOptions();
+ options.db_config.setErrorPrefix("DatabaseTest::test5 ");
+
+ EnvironmentConfig envc = new EnvironmentConfig();
+ envc.setAllowCreate(true);
+ envc.setInitializeCache(true);
+ options.db_env = new Environment(TestUtils.BASETEST_DBFILE, envc);
+
+ rundb(itemcount++, options);
+
+ rundb(itemcount++, options);
+
+ options.db_env.close();
+ }
+
+ /*
+ * Test just opening and closing a DB and an Env without doing any operations.
+ */
+ @Test public void test6()
+ throws DatabaseException, FileNotFoundException
+ {
+ TestOptions options = new TestOptions();
+ options.db_config.setErrorPrefix("DatabaseTest::test6 ");
+
+ Database db = new Database(TestUtils.getDBFileName(DATABASETEST_DBNAME), null, options.db_config);
+
+ EnvironmentConfig envc = new EnvironmentConfig();
+ envc.setAllowCreate(true);
+ envc.setInitializeCache(true);
+ Environment db_env = new Environment(TestUtils.BASETEST_DBFILE, envc);
+
+ db.close();
+ db_env.close();
+
+ System.gc();
+ System.runFinalization();
+ }
+
+ /*
+ * test7 leaves a db and dbenv open; it should be detected.
+ */
+ /* Not sure if relevant with current API.
+ @Test public void test7()
+ throws DatabaseException, FileNotFoundException
+ {
+ TestOptions options = new TestOptions();
+ options.db_config.setErrorPrefix("DatabaseTest::test7 ");
+
+ Database db = new Database(TestUtils.getDBFileName(DATABASETEST_DBNAME), null, options.db_config);
+
+ EnvironmentConfig envc = new EnvironmentConfig();
+ envc.setAllowCreate(true);
+ envc.setInitializeCache(true);
+ Environment db_env = new Environment(TestUtils.BASETEST_DBFILE, envc);
+
+ System.gc();
+ System.runFinalization();
+ }
+ */
+
+ /*
+ * Test creating a new database.
+ */
+ @Test public void test8()
+ throws DatabaseException, FileNotFoundException
+ {
+ TestUtils.removeall(true, false, TestUtils.BASETEST_DBDIR, TestUtils.getDBFileName(DATABASETEST_DBNAME));
+ itemcount = 0;
+ TestOptions options = new TestOptions();
+ options.save_db = true;
+ options.db_config.setErrorPrefix("DatabaseTest::test8 ");
+
+ EnvironmentConfig envc = new EnvironmentConfig();
+ envc.setAllowCreate(true);
+ envc.setInitializeCache(true);
+ options.db_env = new Environment(TestUtils.BASETEST_DBFILE, envc);
+
+ // stop rundb from closing the database, and pass in one created.
+ rundb(itemcount++, options);
+ rundb(itemcount++, options);
+ rundb(itemcount++, options);
+ rundb(itemcount++, options);
+ rundb(itemcount++, options);
+ rundb(itemcount++, options);
+
+ options.database.close();
+ options.database = null;
+
+ // reopen the same database.
+ rundb(itemcount++, options);
+ rundb(itemcount++, options);
+ rundb(itemcount++, options);
+ rundb(itemcount++, options);
+ rundb(itemcount++, options);
+ rundb(itemcount++, options);
+
+ options.database.close();
+ options.database = null;
+
+ }
+
+ // Check that key/data for 0 - count-1 are already present,
+ // and write a key/data for count. The key and data are
+ // both "0123...N" where N == count-1.
+ //
+ // For some reason on Windows, we need to open using the full pathname
+ // of the file when there is no environment, thus the 'has_env'
+ // variable.
+ //
+ void rundb(int count, TestOptions options)
+ throws DatabaseException, FileNotFoundException
+ {
+ String name;
+
+ Database db;
+ if(options.database == null)
+ {
+ if (options.db_env != null)
+ name = DATABASETEST_DBNAME;
+ else
+ name = TestUtils.getDBFileName(DATABASETEST_DBNAME);
+
+ if(count == 0)
+ options.db_config.setAllowCreate(true);
+
+ if(options.db_env == null)
+ db = new Database(name, null, options.db_config);
+ else
+ db = options.db_env.openDatabase(null, name, null, options.db_config);
+ } else {
+ db = options.database;
+ }
+
+ // The bit map of keys we've seen
+ long bitmap = 0;
+
+ // The bit map of keys we expect to see
+ long expected = (1 << (count+1)) - 1;
+
+ byte outbuf[] = new byte[count+1];
+ int i;
+ for (i=0; i<count; i++) {
+ outbuf[i] = (byte)('0' + i);
+ }
+ outbuf[i++] = (byte)'x';
+
+ DatabaseEntry key = new DatabaseEntry(outbuf, 0, i);
+ DatabaseEntry data = new DatabaseEntry(outbuf, 0, i);
+
+ TestUtils.DEBUGOUT("Put: " + (char)outbuf[0] + ": " + new String(outbuf, 0, i));
+ db.putNoOverwrite(null, key, data);
+
+ // Acquire a cursor for the table.
+ Cursor dbcp = db.openCursor(null, CursorConfig.DEFAULT);
+
+ // Walk through the table, checking
+ DatabaseEntry readkey = new DatabaseEntry();
+ DatabaseEntry readdata = new DatabaseEntry();
+ DatabaseEntry whoknows = new DatabaseEntry();
+
+ /*
+ * NOTE: Maybe want to change from user-buffer to DB buffer
+ * depending on the flag options.user_buffer (setReuseBuffer)
+ * The old version set MALLOC/REALLOC here - not sure if it is the same.
+ */
+
+ TestUtils.DEBUGOUT("Dbc.get");
+ while (dbcp.getNext(readkey, readdata, LockMode.DEFAULT) == OperationStatus.SUCCESS) {
+ String key_string =
+ new String(readkey.getData(), 0, readkey.getSize());
+ String data_string =
+ new String(readdata.getData(), 0, readkey.getSize());
+ TestUtils.DEBUGOUT("Got: " + key_string + ": " + data_string);
+ int len = key_string.length();
+ if (len <= 0 || key_string.charAt(len-1) != 'x') {
+ TestUtils.ERR("reread terminator is bad");
+ }
+ len--;
+ long bit = (1 << len);
+ if (len > count) {
+ TestUtils.ERR("reread length is bad: expect " + count + " got "+ len + " (" + key_string + ")" );
+ }
+ else if (!data_string.equals(key_string)) {
+ TestUtils.ERR("key/data don't match");
+ }
+ else if ((bitmap & bit) != 0) {
+ TestUtils.ERR("key already seen");
+ }
+ else if ((expected & bit) == 0) {
+ TestUtils.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");
+ TestUtils.ERR("key is corrupt");
+ }
+ }
+ }
+ }
+ if (expected != 0) {
+ System.out.print(" expected more keys, bitmap is: " + expected + "\n");
+ TestUtils.ERR("missing keys in database");
+ }
+
+ dbcp.close();
+ TestUtils.DEBUGOUT("options.save_db " + options.save_db + " options.database " + options.database);
+ if(options.save_db == false)
+ db.close(false);
+ else if (options.database == null)
+ options.database = db;
+ }
+}
+
+
+class TestOptions
+{
+ int testmask = 0; // which tests to run
+ int user_buffer = 0; // use DB_DBT_USERMEM or DB_DBT_MALLOC
+ int successcounter =0;
+ boolean save_db = false;
+ Environment db_env = null;
+ DatabaseConfig db_config;
+ Database database = null; // db is saved here by rundb if save_db is true.
+
+ public TestOptions()
+ {
+ this.testmask = 0;
+ this.user_buffer = 0;
+ this.successcounter = 0;
+ this.db_env = null;
+
+ db_config = new DatabaseConfig();
+ db_config.setErrorStream(TestUtils.getErrorStream());
+ db_config.setErrorPrefix("DatabaseTest");
+ db_config.setType(DatabaseType.BTREE);
+ // We don't really care about the pagesize
+ db_config.setPageSize(1024);
+
+ }
+
+}
diff --git a/db/test/scr016/src/com/sleepycat/db/test/EncryptTest.java b/db/test/scr016/src/com/sleepycat/db/test/EncryptTest.java
new file mode 100644
index 000000000..0a8ef2991
--- /dev/null
+++ b/db/test/scr016/src/com/sleepycat/db/test/EncryptTest.java
@@ -0,0 +1,132 @@
+
+package com.sleepycat.db.test;
+
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Ignore;
+import org.junit.Test;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
+import com.sleepycat.db.*;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+
+import com.sleepycat.db.test.TestUtils;
+public class EncryptTest {
+ public static final String ENCRYPTTEST_DBNAME = "encrypttest.db";
+ @BeforeClass public static void ClassInit() {
+ TestUtils.loadConfig(null);
+ TestUtils.check_file_removed(TestUtils.getDBFileName(ENCRYPTTEST_DBNAME), true, true);
+ }
+
+ @AfterClass public static void ClassShutdown() {
+ TestUtils.check_file_removed(TestUtils.getDBFileName(ENCRYPTTEST_DBNAME), true, true);
+ }
+
+ @Before public void PerTestInit()
+ throws Exception {
+ TestUtils.check_file_removed(TestUtils.getDBFileName(ENCRYPTTEST_DBNAME), true, true);
+ }
+
+ @After() public void PerTestShutdown()
+ throws Exception {
+ TestUtils.check_file_removed(TestUtils.getDBFileName(ENCRYPTTEST_DBNAME), true, true);
+ }
+ /*
+ * Test case implementations.
+ * To disable a test mark it with @Ignore
+ * To set a timeout(ms) notate like: @Test(timeout=1000)
+ * To indicate an expected exception notate like: (expected=Exception)
+ */
+
+ /*
+ * Test the basic db no env and encryption disabled.
+ */
+ @Test public void test1()
+ throws DatabaseException, FileNotFoundException, UnsupportedEncodingException
+ {
+ DatabaseConfig dbConf = new DatabaseConfig();
+ dbConf.setType(DatabaseType.BTREE);
+ dbConf.setAllowCreate(true);
+
+ Database db = new Database(TestUtils.getDBFileName(ENCRYPTTEST_DBNAME), null, dbConf);
+
+ DatabaseEntry key = new DatabaseEntry("key".getBytes("UTF-8"));
+ DatabaseEntry data = new DatabaseEntry("data".getBytes("UTF-8"));
+
+ db.put(null, key, data);
+
+ db.close();
+ //try { Thread.sleep(10000); } catch(InterruptedException e) {}
+
+ if(!findData("key"))
+ fail("Did not find the un-encrypted value in the database file after close");
+ }
+
+ /*
+ * Test database with encryption, no env.
+ */
+ @Test public void test2()
+ throws DatabaseException, FileNotFoundException, UnsupportedEncodingException
+ {
+ DatabaseConfig dbConf = new DatabaseConfig();
+ dbConf.setType(DatabaseType.BTREE);
+ dbConf.setAllowCreate(true);
+ dbConf.setEncrypted("password");
+ dbConf.setErrorStream(System.err);
+
+ Database db = new Database(TestUtils.getDBFileName(ENCRYPTTEST_DBNAME), null, dbConf);
+
+ DatabaseEntry key = new DatabaseEntry("key".getBytes("UTF-8"));
+ DatabaseEntry data = new DatabaseEntry("data".getBytes("UTF-8"));
+
+ db.put(null, key, data);
+
+ db.sync();
+ db.close();
+
+ if (findData("key"))
+ fail("Found the un-encrypted value in an encrypted database file after close");
+ }
+
+ private boolean findData(String toFind)
+ {
+ boolean found = false;
+ try {
+ String dbname = TestUtils.getDBFileName(ENCRYPTTEST_DBNAME);
+ File f = new File(dbname);
+ if (!f.exists() || f.isDirectory()) {
+ TestUtils.ERR("Could not find database file: " + dbname + " to look for encrypted string.");
+ return false;
+ }
+ FileInputStream fin = new FileInputStream(f);
+ byte[] buf = new byte[(int)f.length()];
+ fin.read(buf, 0, (int)f.length());
+ fin.close();
+
+ TestUtils.DEBUGOUT(1, "EncryptTest findData file length: " + buf.length);
+ byte firstbyte = (toFind.getBytes("UTF-8"))[0];
+ // buf can contain non-ascii characters, so no easy string search
+ for (int i = 0; i < buf.length - toFind.length(); i++)
+ {
+ if (buf[i] == firstbyte)
+ {
+ if(toFind.compareTo(new String(buf, i, toFind.length())) == 0)
+ {
+ found = true;
+ break;
+ }
+ }
+ }
+ } catch(Exception e) {
+ }
+ return found;
+ }
+}
diff --git a/db/test/scr016/src/com/sleepycat/db/test/HashCompareTest.java b/db/test/scr016/src/com/sleepycat/db/test/HashCompareTest.java
new file mode 100644
index 000000000..293deed03
--- /dev/null
+++ b/db/test/scr016/src/com/sleepycat/db/test/HashCompareTest.java
@@ -0,0 +1,125 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
+ *
+ */
+
+
+package com.sleepycat.db.test;
+
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Ignore;
+import org.junit.Test;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
+import com.sleepycat.db.*;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+
+import com.sleepycat.db.test.TestUtils;
+public class HashCompareTest {
+ public static final String HASHCOMPARETEST_DBNAME = "hashcomparetest.db";
+ @BeforeClass public static void ClassInit() {
+ TestUtils.loadConfig(null);
+ TestUtils.check_file_removed(TestUtils.getDBFileName(HASHCOMPARETEST_DBNAME), true, true);
+ TestUtils.removeall(true, true, TestUtils.BASETEST_DBDIR, TestUtils.getDBFileName(HASHCOMPARETEST_DBNAME));
+ }
+
+ @AfterClass public static void ClassShutdown() {
+ TestUtils.check_file_removed(TestUtils.getDBFileName(HASHCOMPARETEST_DBNAME), true, true);
+ TestUtils.removeall(true, true, TestUtils.BASETEST_DBDIR, TestUtils.getDBFileName(HASHCOMPARETEST_DBNAME));
+ }
+
+ @Before public void PerTestInit()
+ throws Exception {
+ TestUtils.check_file_removed(TestUtils.getDBFileName(HASHCOMPARETEST_DBNAME), true, true);
+ java.io.File dbfile = new File(HASHCOMPARETEST_DBNAME);
+ dbfile.delete();
+ }
+
+ @After public void PerTestShutdown()
+ throws Exception {
+ }
+ /*
+ * Test case implementations.
+ * To disable a test mark it with @Ignore
+ * To set a timeout(ms) notate like: @Test(timeout=1000)
+ * To indicate an expected exception notate like: (expected=Exception)
+ */
+
+ @Test public void test1()
+ throws DatabaseException, FileNotFoundException
+ {
+ runTest(DatabaseType.HASH);
+ }
+
+ @Test public void test2()
+ throws DatabaseException, FileNotFoundException
+ {
+ runTest(DatabaseType.BTREE);
+ }
+
+ public void runTest(DatabaseType type)
+ throws DatabaseException, FileNotFoundException
+ {
+ int i;
+ DatabaseConfig conf = new DatabaseConfig();
+ conf.setErrorStream(TestUtils.getErrorStream());
+ conf.setErrorPrefix("HashCompareTest");
+ conf.setType(type);
+ if (type == DatabaseType.HASH) {
+ conf.setHashComparator(new HashComparator());
+ } else
+ conf.setBtreeComparator(new BtreeComparator());
+ conf.setAllowCreate(true);
+
+ Database db = new Database(HASHCOMPARETEST_DBNAME, null, conf);
+
+ DatabaseEntry key = new DatabaseEntry();
+ DatabaseEntry data = new DatabaseEntry("world".getBytes());
+ for (i = 0; i < 100; i++) {
+ key.setData((new String("key"+i)).getBytes());
+ db.put(null, key, data);
+ }
+ i = 0;
+ Cursor dbc;
+ dbc = db.openCursor(null, CursorConfig.DEFAULT);
+ while (dbc.getNext(key, data, LockMode.DEFAULT) ==
+ OperationStatus.SUCCESS) {
+ ++i;
+ }
+// System.out.println("retrieved " + i + " entries");
+ dbc.close();
+ db.close();
+
+ }
+}
+
+class HashComparator implements java.util.Comparator
+{
+ public int compare(Object o1, Object o2) {
+// System.out.println("Comparing: " + o1 + ":"+o2);
+ String s1, s2;
+ s1 = new String((byte[])o1);
+ s2 = new String((byte[])o2);
+ return s1.compareToIgnoreCase(s2);
+ }
+}
+
+class BtreeComparator implements java.util.Comparator
+{
+ public int compare(Object o1, Object o2) {
+ //System.out.println("Comparing: " + o1 + ":"+o2);
+ String s1, s2;
+ s1 = new String((byte[])o1);
+ s2 = new String((byte[])o2);
+ return s1.compareToIgnoreCase(s2);
+ }
+}
diff --git a/db/test/scr016/src/com/sleepycat/db/test/PartialGetTest.java b/db/test/scr016/src/com/sleepycat/db/test/PartialGetTest.java
new file mode 100644
index 000000000..5b7e269d6
--- /dev/null
+++ b/db/test/scr016/src/com/sleepycat/db/test/PartialGetTest.java
@@ -0,0 +1,264 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
+ *
+ */
+
+package com.sleepycat.db.test;
+
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Ignore;
+import org.junit.Test;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
+import com.sleepycat.db.*;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+
+import com.sleepycat.db.test.TestUtils;
+public class PartialGetTest {
+ public static final String PARTIALGETTEST_DBNAME = "partialgettest.db";
+ public static final byte[] data_64chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890<>".getBytes();
+ @BeforeClass public static void ClassInit() {
+ TestUtils.loadConfig(null);
+ TestUtils.check_file_removed(TestUtils.getDBFileName(PARTIALGETTEST_DBNAME), true, true);
+ TestUtils.removeall(true, true, TestUtils.BASETEST_DBDIR, TestUtils.getDBFileName(PARTIALGETTEST_DBNAME));
+ }
+
+ @AfterClass public static void ClassShutdown() {
+ TestUtils.check_file_removed(TestUtils.getDBFileName(PARTIALGETTEST_DBNAME), true, true);
+ TestUtils.removeall(true, true, TestUtils.BASETEST_DBDIR, TestUtils.getDBFileName(PARTIALGETTEST_DBNAME));
+ }
+
+ @Before public void PerTestInit()
+ throws Exception {
+ }
+
+ @After public void PerTestShutdown()
+ throws Exception {
+ TestUtils.check_file_removed(TestUtils.getDBFileName(PARTIALGETTEST_DBNAME), true, true);
+ }
+ /*
+ * Test case implementations.
+ * To disable a test mark it with @Ignore
+ * To set a timeout(ms) notate like: @Test(timeout=1000)
+ * To indicate an expected exception notate like: (expected=Exception)
+ */
+
+ /*
+ * Simple partial gets on a record which is on a single page.
+ */
+ @Test public void test1()
+ throws DatabaseException, FileNotFoundException
+ {
+ DatabaseEntry key = new DatabaseEntry("key".getBytes());
+ Database db = setupDb1(key, data_64chars);
+
+ StringEntry partialData = new StringEntry();
+ partialData.setPartial(true);
+ partialData.setPartial(0, 12, true);
+
+ if (db.get(null, key, partialData, LockMode.DEFAULT) !=
+ OperationStatus.SUCCESS)
+ fail("Failed doing partial retrieval, first part of entry on single page.");
+ // Validate the data.
+ if (!MatchData(data_64chars, partialData.getString(), 12))
+ fail("Data mismatch from partial get.");
+
+ partialData.setPartial(12, 12, true);
+ if (db.get(null, key, partialData, LockMode.DEFAULT) !=
+ OperationStatus.SUCCESS)
+ fail("Failed doing partial retrieval, second part of entry on single page.");
+ // Validate the data.
+ if (!MatchData(new String(data_64chars, 12, 12), partialData.getString(), 12))
+ fail("Data mismatch from partial get.");
+
+ db.close(false);
+ }
+
+ /*
+ * Retrieve entry using different DB_DBT_alloc flags.
+ * Verify results.
+ */
+ @Test public void test2()
+ throws DatabaseException, FileNotFoundException
+ {
+ DatabaseEntry key = new DatabaseEntry("key".getBytes());
+ Database db = setupDb1(key, data_64chars);
+ StringEntry partialData = new StringEntry();
+ partialData.setPartial(true);
+ partialData.setPartial(0, 12, true);
+
+ if (db.get(null, key, partialData, LockMode.DEFAULT) !=
+ OperationStatus.SUCCESS)
+ fail("Failed doing partial retrieval.");
+ // Validate the data.
+ if (!MatchData(data_64chars, partialData.getString(), 12))
+ fail("Data mismatch from partial get.");
+
+ partialData.setReuseBuffer(true);
+ if (db.get(null, key, partialData, LockMode.DEFAULT) !=
+ OperationStatus.SUCCESS)
+ if (!MatchData(data_64chars, partialData.getString(), 12))
+ fail("Data mismatch from partial get.");
+
+ partialData.setReuseBuffer(false);
+ partialData.setUserBuffer(64, true);
+ partialData.setData(new byte[64]);
+ if (db.get(null, key, partialData, LockMode.DEFAULT) !=
+ OperationStatus.SUCCESS)
+ if (!MatchData(data_64chars, partialData.getString(), 12))
+ fail("Data mismatch from partial get.");
+
+ partialData.setPartial(12, 12, true);
+ if (db.get(null, key, partialData, LockMode.DEFAULT) !=
+ OperationStatus.SUCCESS)
+ fail("Failed doing partial retrieval.");
+ // Validate the data.
+ if (!MatchData(new String(data_64chars, 12, 12), partialData.getString(), 12))
+ fail("Data mismatch from partial get.");
+
+ db.close(false);
+ }
+
+ /* Retrieve entry that spans multiple pages. */
+
+ @Test public void test3()
+ throws DatabaseException, FileNotFoundException
+ {
+ DatabaseEntry key = new DatabaseEntry("key".getBytes());
+ StringBuffer sb = new StringBuffer(1024*100);
+ for(int i = 0; i < 1024; i++) {
+ sb.append("abcdefghijklmnopqrstuvwxyz1234567890!@#$%^&*()_+-=");
+ sb.append("abcdefghijklmnopqrstuvwxyz1234567890!@#$%^&*()_+-=");
+ }
+ Database db = setupDb1(key, sb.toString().getBytes());
+
+ StringEntry partialData = new StringEntry();
+ partialData.setPartial(true);
+ partialData.setPartial(0, 12, true);
+
+ if (db.get(null, key, partialData, LockMode.DEFAULT) !=
+ OperationStatus.SUCCESS)
+ fail("Failed doing partial retrieval.");
+ // Validate the data.
+ if (!MatchData(data_64chars, partialData.getString(), 12))
+ fail("Data mismatch from partial get.");
+
+ // retrieve a chunk larger than a page size, starting at offset 0.
+ partialData.setPartial(0, 2048, true);
+ if (db.get(null, key, partialData, LockMode.DEFAULT) !=
+ OperationStatus.SUCCESS)
+ fail("Failed doing partial retrieval.");
+ // Validate the data.
+ if (!MatchData(sb.substring(0, 2048), partialData.getString(), 2048))
+ fail("Data mismatch from partial get.");
+
+ // retrieve a chunk larger than a page size, starting at offset greater than 0.
+ partialData.setPartial(10, 2048, true);
+ if (db.get(null, key, partialData, LockMode.DEFAULT) !=
+ OperationStatus.SUCCESS)
+ fail("Failed doing partial retrieval.");
+ // Validate the data.
+ if (!MatchData(sb.substring(10, 2048+10), partialData.getString(), 12))
+ fail("Data mismatch from partial get.");
+
+ db.close(false);
+ }
+
+ /*
+ * Test partial retrieval using a cursor.
+ */
+ @Test public void test4()
+ throws DatabaseException, FileNotFoundException
+ {
+ }
+
+ /*
+ * Test partial retrieval using different DB types.
+ */
+ @Test public void test5()
+ throws DatabaseException, FileNotFoundException
+ {
+ }
+
+ /*
+ * Test partial retrieval .
+ */
+ @Test public void test6()
+ throws DatabaseException, FileNotFoundException
+ {
+ }
+
+ /*
+ * Helper methods and classes follow.
+ */
+
+ private Database setupDb1(DatabaseEntry key, byte[] dataData)
+ throws DatabaseException, FileNotFoundException
+ {
+ DatabaseConfig dbConfig = new DatabaseConfig();
+ dbConfig.setErrorStream(TestUtils.getErrorStream());
+ dbConfig.setErrorPrefix("PartialGetTest");
+ dbConfig.setType(DatabaseType.BTREE);
+ dbConfig.setPageSize(1024);
+ dbConfig.setAllowCreate(true);
+ Database db = new Database(TestUtils.getDBFileName(PARTIALGETTEST_DBNAME), null, dbConfig);
+
+ DatabaseEntry data = new DatabaseEntry(dataData);
+
+ if(db.putNoOverwrite(null, key, data) != OperationStatus.SUCCESS)
+ TestUtils.ERR("Failed to create standard entry in database.");
+
+ return db;
+ }
+
+ /* Save converting String to do data comparisons. */
+ private boolean MatchData(byte[] data1, byte[] data2, int len)
+ {
+ return MatchData(new String(data1), new String(data2), len);
+ }
+ private boolean MatchData(String data1, byte[] data2, int len)
+ {
+ return MatchData(data1, new String(data2), len);
+ }
+ private boolean MatchData(byte[] data1, String data2, int len)
+ {
+ return MatchData(new String(data1), data2, len);
+ }
+ private boolean MatchData(String data1, String data2, int len)
+ {
+ if(data1.length() < len || data2.length() < len)
+ return false;
+ TestUtils.DEBUGOUT(0, "data1: " +data1.substring(0, 12));
+ TestUtils.DEBUGOUT(0, "data2: " +data2.substring(0, 12));
+ return data1.regionMatches(0, data2, 0, len);
+ }
+
+ static /*inner*/
+ class StringEntry extends DatabaseEntry {
+ StringEntry() {
+ }
+
+ StringEntry (String value) {
+ setString(value);
+ }
+
+ void setString(String value) {
+ byte[] data = value.getBytes();
+ setData(data);
+ setSize(data.length);
+ }
+
+ String getString() {
+ return new String(getData(), getOffset(), getSize());
+ }
+ }
+}
diff --git a/db/test/scr016/src/com/sleepycat/db/test/RepmgrConfigTest.java b/db/test/scr016/src/com/sleepycat/db/test/RepmgrConfigTest.java
new file mode 100644
index 000000000..b48e073ca
--- /dev/null
+++ b/db/test/scr016/src/com/sleepycat/db/test/RepmgrConfigTest.java
@@ -0,0 +1,325 @@
+
+/*
+ * A test case that brings up the replication
+ * manager infrastructure as master. Then shut
+ * the master down cleanly.
+ * This case does not have any replication clients
+ * or even update the underlying DB.
+ */
+
+package com.sleepycat.db.test;
+
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Ignore;
+import org.junit.Test;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+import junit.framework.JUnit4TestAdapter;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+
+import com.sleepycat.db.*;
+
+public class RepmgrConfigTest extends EventHandlerAdapter
+{
+ private class ConfigOptions {
+ public ConfigOptions(
+ boolean txnSync,
+ boolean initializeReplication,
+ boolean verboseReplication,
+ boolean setLocalSiteEnable,
+ boolean setReplicationPriority,
+ int replicationPriority,
+ boolean setValidEventHandler,
+ boolean setAckPolicy,
+ ReplicationManagerAckPolicy ackPolicyToSet,
+ int nsitesToStart,
+ boolean validStartPolicy,
+ boolean validPolicy
+ )
+ {
+ this.txnSync = txnSync;
+ this.initializeReplication = initializeReplication;
+ this.verboseReplication = verboseReplication;
+ this.setLocalSiteEnable = setLocalSiteEnable;
+ this.setReplicationPriority = setReplicationPriority;
+ this.replicationPriority = replicationPriority;
+ this.setValidEventHandler = setValidEventHandler;
+ this.setAckPolicy = setAckPolicy;
+ this.ackPolicyToSet = ackPolicyToSet;
+ this.nsitesToStart = nsitesToStart;
+ this.validStartPolicy = validStartPolicy;
+ this.validPolicy = validPolicy;
+ }
+
+ boolean txnSync;
+ boolean initializeReplication;
+ boolean verboseReplication;
+ boolean setLocalSiteEnable;
+ boolean setValidEventHandler;
+ boolean setReplicationPriority;
+ int replicationPriority;
+ boolean setAckPolicy;
+ ReplicationManagerAckPolicy ackPolicyToSet;
+ int nsitesToStart;
+ boolean validStartPolicy;
+
+ // should this set of options work or not?
+ boolean validPolicy;
+ }
+ static String address = "localhost";
+ static int port = 4242;
+ static int priority = 100;
+ static String homedirName = "";
+ ConfigOptions[] optionVariations =
+ { new ConfigOptions(true, true, false, true, true, 50, true, true, ReplicationManagerAckPolicy.ALL, 1, true, true ), //0:
+ new ConfigOptions(false, true, false, true, true, 50, true, true, ReplicationManagerAckPolicy.ALL, 1, true, true ), //1: disable txnSync
+ new ConfigOptions(true, false, false, true, true, 50, true, true, ReplicationManagerAckPolicy.ALL, 1, true, false), //2: don't call initRep
+ new ConfigOptions(true, true, true, true, true, 50, true, true, ReplicationManagerAckPolicy.ALL, 1, true, true ), //3: enable verbose rep
+ new ConfigOptions(true, true, false, false, true, 50, true, true, ReplicationManagerAckPolicy.ALL, 1, true, false), //4: don't set a local site
+ new ConfigOptions(true, true, false, true, false, 50, true, true, ReplicationManagerAckPolicy.ALL, 1, true, true ), //5: don't assign priority explicitly
+ new ConfigOptions(true, true, false, true, true, -1, true, true, ReplicationManagerAckPolicy.ALL, 1, true, false), //6: ??assign an invalid priority.
+ new ConfigOptions(true, true, false, true, true, 50, false, true, ReplicationManagerAckPolicy.ALL, 1, true, false), //7: don't set the event handler.
+ new ConfigOptions(true, true, false, true, true, 50, true, false, ReplicationManagerAckPolicy.ALL, 1, true, true ), //8: ?? don't set ack policy
+ new ConfigOptions(true, true, false, true, true, 50, true, true, ReplicationManagerAckPolicy.ALL_PEERS, 1, true, true ), //9:
+ new ConfigOptions(true, true, false, true, true, 50, true, true, ReplicationManagerAckPolicy.NONE, 1, true, true ), //10:
+ new ConfigOptions(true, true, false, true, true, 50, true, true, ReplicationManagerAckPolicy.ONE, 1, true, true ), //11:
+ new ConfigOptions(true, true, false, true, true, 50, true, true, ReplicationManagerAckPolicy.ONE_PEER, 1, true, true ), //12:
+ new ConfigOptions(true, true, false, true, true, 50, true, true, null, 1, true, false), //13: set an invalid ack policy
+ new ConfigOptions(true, true, false, true, true, 50, true, true, ReplicationManagerAckPolicy.ALL, -1, true, false), //14: set nsites negative
+ new ConfigOptions(true, true, false, true, true, 50, true, true, ReplicationManagerAckPolicy.ALL, 0, true, false), //15:
+ new ConfigOptions(true, true, false, true, true, 50, true, true, ReplicationManagerAckPolicy.ALL, 1, false, false), //16: dont set a valid start policy.
+ };
+ File homedir;
+ EnvironmentConfig envConfig;
+
+ @BeforeClass public static void ClassInit() {
+ TestUtils.loadConfig(null);
+ homedirName = TestUtils.BASETEST_DBDIR + "/TESTDIR";
+ }
+
+ @AfterClass public static void ClassShutdown() {
+ }
+
+ @Before public void PerTestInit()
+ {
+ TestUtils.removeDir(homedirName);
+ try {
+ homedir = new File(homedirName);
+ homedir.mkdir();
+ } catch (Exception e) {
+ TestUtils.DEBUGOUT(2, "Warning: initialization had a problem creating a clean directory.\n" + e);
+ }
+ try {
+ homedir = new File(homedirName);
+ } catch (NullPointerException npe) {
+ // can't really happen :)
+ }
+ envConfig = new EnvironmentConfig();
+ envConfig.setErrorStream(TestUtils.getErrorStream());
+ envConfig.setErrorPrefix("RepmgrConfigTest test");
+ envConfig.setAllowCreate(true);
+ envConfig.setRunRecovery(true);
+ envConfig.setThreaded(true);
+ envConfig.setInitializeLocking(true);
+ envConfig.setInitializeLogging(true);
+ envConfig.setInitializeCache(true);
+ envConfig.setTransactional(true);
+
+ // Linux seems to have problems cleaning up its sockets.
+ // so start each test at a new address.
+ ++port;
+ }
+
+ @After public void PerTestShutdown()
+ throws Exception {
+ TestUtils.removeDir(homedirName);
+ }
+
+ @Test (timeout=3000) public void TestOptions0()
+ {
+ assertTrue(runTestWithOptions(optionVariations[0]));
+ }
+ @Test (timeout=3000) public void TestOptions1()
+ {
+ assertTrue(runTestWithOptions(optionVariations[1]));
+ }
+ @Test (timeout=3000) public void TestOptions2()
+ {
+ assertTrue(runTestWithOptions(optionVariations[2]));
+ }
+ @Test (timeout=3000) public void TestOptions3()
+ {
+ assertTrue(runTestWithOptions(optionVariations[3]));
+ }
+ @Test (timeout=3000) public void TestOptions4()
+ {
+ assertTrue(runTestWithOptions(optionVariations[4]));
+ }
+ @Test (timeout=3000) public void TestOptions5()
+ {
+ assertTrue(runTestWithOptions(optionVariations[5]));
+ }
+ @Test (timeout=3000) public void TestOptions6()
+ {
+ assertTrue(runTestWithOptions(optionVariations[6]));
+ }
+ @Ignore("Currently failing") @Test (timeout=3000) public void TestOptions7()
+ {
+ assertTrue(runTestWithOptions(optionVariations[7]));
+ }
+ @Test (timeout=3000) public void TestOptions8()
+ {
+ assertTrue(runTestWithOptions(optionVariations[8]));
+ }
+ @Test (timeout=3000) public void TestOptions9()
+ {
+ assertTrue(runTestWithOptions(optionVariations[9]));
+ }
+ @Test (timeout=3000) public void TestOptions10()
+ {
+ assertTrue(runTestWithOptions(optionVariations[10]));
+ }
+ @Test (timeout=3000) public void TestOptions11()
+ {
+ assertTrue(runTestWithOptions(optionVariations[11]));
+ }
+ @Test (timeout=3000) public void TestOptions12()
+ {
+ assertTrue(runTestWithOptions(optionVariations[12]));
+ }
+ @Test (timeout=3000) public void TestOptions13()
+ {
+ assertTrue(runTestWithOptions(optionVariations[13]));
+ }
+ @Test (timeout=3000) public void TestOptions14()
+ {
+ assertTrue(runTestWithOptions(optionVariations[14]));
+ }
+ @Test (timeout=3000) public void TestOptions15()
+ {
+ assertTrue(runTestWithOptions(optionVariations[15]));
+ }
+ @Test (timeout=3000) public void TestOptions16()
+ {
+ assertTrue(runTestWithOptions(optionVariations[16]));
+ }
+
+ // returns true if failure matches options failure spec.
+ boolean runTestWithOptions(ConfigOptions opts)
+ {
+ boolean retval = true;
+ boolean gotexcept = false;
+ Environment dbenv = null;
+ try {
+
+ envConfig.setTxnNoSync(opts.txnSync);
+ if (opts.initializeReplication)
+ envConfig.setInitializeReplication(true);
+ if (opts.verboseReplication)
+ envConfig.setVerboseReplication(false);
+
+ if (opts.setLocalSiteEnable) {
+ ReplicationHostAddress haddr = new ReplicationHostAddress(address, port);
+ envConfig.setReplicationManagerLocalSite(haddr);
+ }
+ if (opts.setReplicationPriority)
+ envConfig.setReplicationPriority(opts.replicationPriority);
+ if (opts.setValidEventHandler)
+ envConfig.setEventHandler(this);
+
+ if (opts.setAckPolicy)
+ envConfig.setReplicationManagerAckPolicy(opts.ackPolicyToSet);
+
+ try {
+ dbenv = new Environment(homedir, envConfig);
+ } catch(FileNotFoundException e) {
+ TestUtils.DEBUGOUT(3, "Unexpected FNFE in standard environment creation." + e);
+ gotexcept = true;
+ retval = false; // never expect a FNFE
+ } catch(DatabaseException dbe) {
+ gotexcept = true;
+ if (opts.validPolicy)
+ TestUtils.DEBUGOUT(3, "Unexpected DB exception from Environment create." + dbe);
+ }
+
+ if (!gotexcept) {
+ try {
+ // start replication manager
+ if (opts.validStartPolicy)
+ dbenv.replicationManagerStart(opts.nsitesToStart, ReplicationManagerStartPolicy.REP_MASTER);
+ else
+ dbenv.replicationManagerStart(opts.nsitesToStart, null);
+ } catch(DatabaseException dbe) {
+ gotexcept = true;
+ if (opts.validPolicy)
+ TestUtils.DEBUGOUT(3, "Unexpected database exception came from replicationManagerStart." + dbe);
+ } catch (IllegalArgumentException iae) {
+ gotexcept = true;
+ if (opts.validPolicy)
+ TestUtils.DEBUGOUT(3, "Unexpected IllegalArgumentException came from replicationManagerStart." + iae);
+ } catch (NullPointerException npe) {
+ gotexcept = true;
+ if (opts.validPolicy)
+ TestUtils.DEBUGOUT(3, "Unexpected NullPointerException came from replicationManagerStart." + npe);
+ } catch (AssertionError ae) {
+ gotexcept = true;
+ if (opts.validPolicy)
+ TestUtils.DEBUGOUT(3, "Unexpected AssertionError came from replicationManagerStart." + ae);
+ }
+
+ }
+ } catch (IllegalArgumentException iae) {
+ gotexcept = true;
+ if (opts.validPolicy)
+ TestUtils.DEBUGOUT(3, "Unexpected IllegalArgumentException." + iae);
+ } catch (AssertionError ae) {
+ gotexcept = true;
+ if (opts.validPolicy)
+ TestUtils.DEBUGOUT(3, "Unexpected AssertionError." + ae);
+ } catch (NullPointerException npe) {
+ gotexcept = true;
+ if (opts.validPolicy)
+ TestUtils.DEBUGOUT(3, "Unexpected NullPointerException." + npe);
+ }
+ if (dbenv != null) {
+ try {
+ java.lang.Thread.sleep(1000);
+ }catch(InterruptedException ie) {}
+ try {
+ dbenv.close();
+ Environment.remove(homedir, true, envConfig);
+ } catch(FileNotFoundException fnfe) {
+ gotexcept = true;
+ retval = false;
+ } catch(DatabaseException dbe) {
+ TestUtils.DEBUGOUT(3, "Unexpected database exception came during shutdown." + dbe);
+ gotexcept = true; // never expect a shutdown failure.
+ }
+ }
+ if (retval) {
+ if (gotexcept == opts.validPolicy)
+ retval = false;
+ }
+ return retval;
+ }
+
+ /*
+ * TODO: Maybe move this into a general TestEventHandler?
+ */
+ public void handleRepMasterEvent() {
+ TestUtils.DEBUGOUT(1, "Got a REP_MASTER message");
+ }
+
+ public void handleRepClientEvent() {
+ TestUtils.DEBUGOUT(1, "Got a REP_CLIENT message");
+ }
+
+ public void handleRepNewMasterEvent() {
+ TestUtils.DEBUGOUT(1, "Got a REP_NEW_MASTER message");
+ }
+}
diff --git a/db/test/scr016/src/com/sleepycat/db/test/RepmgrElectionTest.java b/db/test/scr016/src/com/sleepycat/db/test/RepmgrElectionTest.java
new file mode 100644
index 000000000..221057bf8
--- /dev/null
+++ b/db/test/scr016/src/com/sleepycat/db/test/RepmgrElectionTest.java
@@ -0,0 +1,199 @@
+
+/*
+ */
+
+package com.sleepycat.db.test;
+
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Test;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+import junit.framework.JUnit4TestAdapter;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.util.Vector;
+
+import com.sleepycat.db.*;
+
+public class RepmgrElectionTest extends EventHandlerAdapter implements Runnable
+{
+ static String address = "localhost";
+ static int basePort = 4242;
+ static String baseDirName = "";
+ File homedir;
+ EnvironmentConfig envConfig;
+ Environment dbenv;
+
+ @BeforeClass public static void ClassInit() {
+ TestUtils.loadConfig(null);
+ baseDirName = TestUtils.BASETEST_DBDIR + "/TESTDIR";
+ }
+
+ @AfterClass public static void ClassShutdown() {
+ }
+
+ @Before public void PerTestInit()
+ throws Exception {
+ }
+
+ @After public void PerTestShutdown()
+ throws Exception {
+ for(int j = 0; j < NUM_WORKER_THREADS; j++)
+ {
+ String homedirName = baseDirName+j;
+ TestUtils.removeDir(homedirName);
+ }
+ }
+
+ private static boolean lastSiteStarted = false;
+ private static int NUM_WORKER_THREADS = 5;
+ @Test(timeout=180000) public void startConductor()
+ {
+ Vector<RepmgrElectionTest> workers = new Vector<RepmgrElectionTest>(NUM_WORKER_THREADS);
+ // start the worker threads
+ for (int i = 0; i < NUM_WORKER_THREADS; i++) {
+ RepmgrElectionTest worker = new RepmgrElectionTest(i);
+ worker.run();
+ workers.add(worker);
+ /*
+ while (!lastSiteStarted) {
+ try {
+ java.lang.Thread.sleep(10);
+ }catch(InterruptedException e){}
+ }
+ lastSiteStarted = false;
+ */
+ }
+
+ // stop the master - ensure the client with the highest priority is elected.
+
+ // re-start original master. Call election ensure correct client is elected
+ }
+
+ /*
+ * Worker thread implementation
+ */
+ private final static int priorities[] = {100, 75, 50, 50, 25};
+ private int threadNumber;
+ public RepmgrElectionTest() {
+ // needed to comply with JUnit, since there is also another constructor.
+ }
+ RepmgrElectionTest(int threadNumber) {
+ this.threadNumber = threadNumber;
+ }
+
+ public void run() {
+ EnvironmentConfig envConfig;
+ Environment dbenv = null;
+ TestUtils.DEBUGOUT(1, "Creating worker: " + threadNumber);
+ try {
+ File homedir = new File(baseDirName + threadNumber);
+
+ if (homedir.exists()) {
+ // The following will fail if the directory contains sub-dirs.
+ if (homedir.isDirectory()) {
+ File[] contents = homedir.listFiles();
+ for (int i = 0; i < contents.length; i++)
+ contents[i].delete();
+ }
+ homedir.delete();
+ }
+ homedir.mkdir();
+ } catch (Exception e) {
+ TestUtils.DEBUGOUT(2, "Warning: initialization had a problem creating a clean directory.\n"+e);
+ }
+ try {
+ homedir = new File(baseDirName+threadNumber);
+ } catch (NullPointerException npe) {
+ // can't really happen :)
+ }
+ envConfig = new EnvironmentConfig();
+ envConfig.setErrorStream(TestUtils.getErrorStream());
+ envConfig.setErrorPrefix("RepmgrElectionTest test("+threadNumber+")");
+ envConfig.setAllowCreate(true);
+ envConfig.setRunRecovery(true);
+ envConfig.setThreaded(true);
+ envConfig.setInitializeLocking(true);
+ envConfig.setInitializeLogging(true);
+ envConfig.setInitializeCache(true);
+ envConfig.setTransactional(true);
+ envConfig.setTxnNoSync(true);
+ envConfig.setInitializeReplication(true);
+ envConfig.setVerboseReplication(false);
+
+ ReplicationHostAddress haddr = new ReplicationHostAddress(address, basePort+threadNumber);
+ envConfig.setReplicationManagerLocalSite(haddr);
+ envConfig.setReplicationPriority(priorities[threadNumber]);
+ envConfig.setEventHandler(this);
+ envConfig.setReplicationManagerAckPolicy(ReplicationManagerAckPolicy.ALL);
+
+ for(int existingSites = 0; existingSites < threadNumber; existingSites++)
+ {
+ /*
+ * This causes warnings to be produced - it seems only
+ * able to make a connection to the master site, not other
+ * client sites.
+ * The documentation and code lead me to believe this is not
+ * as expected - so leaving in here for now.
+ */
+ ReplicationHostAddress host = new ReplicationHostAddress(address, basePort+existingSites);
+ envConfig.replicationManagerAddRemoteSite(host);
+ }
+
+ try {
+ dbenv = new Environment(homedir, envConfig);
+ } catch(FileNotFoundException e) {
+ fail("Unexpected FNFE in standard environment creation." + e);
+ } catch(DatabaseException dbe) {
+ fail("Unexpected database exception came from environment create." + dbe);
+ }
+
+ try {
+ /*
+ * If all threads are started with REP_ELECTION flag
+ * The whole system freezes, and I get:
+ * RepmgrElectionTest test(0): Waiting for handle count (1) or msg_th (0) to complete replication lockout
+ * Repeated every minute.
+ */
+ if(threadNumber == 0)
+ dbenv.replicationManagerStart(NUM_WORKER_THREADS, ReplicationManagerStartPolicy.REP_MASTER);
+ else
+ dbenv.replicationManagerStart(NUM_WORKER_THREADS, ReplicationManagerStartPolicy.REP_CLIENT);
+ } catch(DatabaseException dbe) {
+ fail("Unexpected database exception came from replicationManagerStart." + dbe);
+ }
+ TestUtils.DEBUGOUT(1, "Started replication site: " + threadNumber);
+ lastSiteStarted = true;
+ try {
+ java.lang.Thread.sleep(10000);
+ }catch(InterruptedException ie) {}
+ try {
+ dbenv.close();
+ Environment.remove(homedir, false, envConfig);
+ } catch(FileNotFoundException fnfe) {
+ } catch(DatabaseException dbe) {
+ fail("Unexpected database exception came during shutdown." + dbe);
+ }
+ }
+
+ /*
+ * End worker thread implementation
+ */
+ public void handleRepMasterEvent() {
+ TestUtils.DEBUGOUT(1, "Got a REP_MASTER message");
+ TestUtils.DEBUGOUT(1, "My priority: " + priorities[threadNumber]);
+ }
+
+ public void handleRepClientEvent() {
+ TestUtils.DEBUGOUT(1, "Got a REP_CLIENT message");
+ }
+
+ public void handleRepNewMasterEvent() {
+ TestUtils.DEBUGOUT(1, "Got a REP_NEW_MASTER message");
+ TestUtils.DEBUGOUT(1, "My priority: " + priorities[threadNumber]);
+ }
+}
diff --git a/db/test/scr016/src/com/sleepycat/db/test/RepmgrStartupTest.java b/db/test/scr016/src/com/sleepycat/db/test/RepmgrStartupTest.java
new file mode 100644
index 000000000..b0afc4d1e
--- /dev/null
+++ b/db/test/scr016/src/com/sleepycat/db/test/RepmgrStartupTest.java
@@ -0,0 +1,210 @@
+
+/*
+ * A test case that brings up the replication
+ * manager infrastructure as master. Then shut
+ * the master down cleanly.
+ * This case does not have any replication clients
+ * or even update the underlying DB.
+ */
+
+package com.sleepycat.db.test;
+
+import com.sleepycat.db.test.TestUtils;
+
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Test;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+import junit.framework.JUnit4TestAdapter;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+
+import com.sleepycat.db.*;
+
+public class RepmgrStartupTest extends EventHandlerAdapter
+{
+ static String address = "localhost";
+ static int port = 4242;
+ static int priority = 100;
+ static String homedirName = "TESTDIR";
+ File homedir;
+ EnvironmentConfig envConfig;
+ Environment dbenv;
+
+ @BeforeClass public static void ClassInit() {
+ TestUtils.loadConfig(null);
+ }
+
+ @AfterClass public static void ClassShutdown() {
+ }
+
+ @Before public void PerTestInit()
+ {
+ TestUtils.removeDir(homedirName);
+ try {
+ homedir = new File(homedirName);
+ homedir.mkdir();
+ } catch (Exception e) {
+ TestUtils.DEBUGOUT(2, "Warning: initialization had a problem creating a clean directory.\n" + e);
+ }
+ try {
+ homedir = new File(homedirName);
+ } catch (NullPointerException npe) {
+ // can't really happen :)
+ }
+ envConfig = new EnvironmentConfig();
+ envConfig.setErrorStream(TestUtils.getErrorStream());
+ envConfig.setErrorPrefix("RepmgrStartupTest test");
+ envConfig.setAllowCreate(true);
+ envConfig.setRunRecovery(true);
+ envConfig.setThreaded(true);
+ envConfig.setInitializeLocking(true);
+ envConfig.setInitializeLogging(true);
+ envConfig.setInitializeCache(true);
+ envConfig.setTransactional(true);
+ envConfig.setTxnNoSync(true);
+ envConfig.setInitializeReplication(true);
+ envConfig.setVerboseReplication(false);
+
+ ReplicationHostAddress haddr = new ReplicationHostAddress(address, port);
+ envConfig.setReplicationManagerLocalSite(haddr);
+ envConfig.setReplicationPriority(priority);
+ envConfig.setEventHandler(this);
+ envConfig.setReplicationManagerAckPolicy(ReplicationManagerAckPolicy.ALL);
+
+ try {
+ dbenv = new Environment(homedir, envConfig);
+ } catch(FileNotFoundException e) {
+ fail("Unexpected FNFE in standard environment creation." + e);
+ } catch(DatabaseException dbe) {
+ fail("Unexpected database exception came from environment create." + dbe);
+ }
+ }
+
+ @After public void PerTestShutdown()
+ throws Exception {
+ try {
+ File homedir = new File(homedirName);
+
+ if (homedir.exists()) {
+ // The following will fail if the directory contains sub-dirs.
+ if (homedir.isDirectory()) {
+ File[] contents = homedir.listFiles();
+ for (int i = 0; i < contents.length; i++)
+ contents[i].delete();
+ }
+ homedir.delete();
+ }
+ } catch (Exception e) {
+ TestUtils.DEBUGOUT(2, "Warning: shutdown had a problem cleaning up test directory.\n" + e);
+ }
+ }
+
+
+ @Test (timeout=3000) public void startMaster()
+ {
+ try {
+ // start replication manager
+ dbenv.replicationManagerStart(3, ReplicationManagerStartPolicy.REP_MASTER);
+ } catch(DatabaseException dbe) {
+ fail("Unexpected database exception came from replicationManagerStart." + dbe);
+ }
+ try {
+ java.lang.Thread.sleep(1000);
+ }catch(InterruptedException ie) {}
+
+ try {
+ dbenv.close();
+ Environment.remove(homedir, false, envConfig);
+ } catch(FileNotFoundException fnfe) {
+ } catch(DatabaseException dbe) {
+ fail("Unexpected database exception came during shutdown." + dbe);
+ }
+ }
+
+ @Test (timeout=3000) public void startClient()
+ {
+ try {
+ // start replication manager
+ dbenv.replicationManagerStart(3, ReplicationManagerStartPolicy.REP_CLIENT);
+ } catch(DatabaseException dbe) {
+ fail("Unexpected database exception came from replicationManagerStart." + dbe);
+ }
+ try {
+ java.lang.Thread.sleep(1000);
+ }catch(InterruptedException ie) {}
+
+ try {
+ dbenv.close();
+ Environment.remove(homedir, false, envConfig);
+ } catch(FileNotFoundException fnfe) {
+ } catch(DatabaseException dbe) {
+ fail("Unexpected database exception came during shutdown." + dbe);
+ }
+ }
+
+ @Test (timeout=3000) public void startElection()
+ {
+ try {
+ // start replication manager
+ dbenv.replicationManagerStart(3, ReplicationManagerStartPolicy.REP_ELECTION);
+ } catch(DatabaseException dbe) {
+ fail("Unexpected database exception came from replicationManagerStart." + dbe);
+ }
+ try {
+ java.lang.Thread.sleep(1000);
+ }catch(InterruptedException ie) {}
+
+ try {
+ dbenv.close();
+ Environment.remove(homedir, false, envConfig);
+ } catch(FileNotFoundException fnfe) {
+ } catch(DatabaseException dbe) {
+ fail("Unexpected database exception came during shutdown." + dbe);
+ }
+ }
+
+ @Test (timeout=15000) public void startMasterWaitBeforeShutdown()
+ {
+ try {
+ // start replication manager
+ dbenv.replicationManagerStart(3, ReplicationManagerStartPolicy.REP_MASTER);
+ } catch(DatabaseException dbe) {
+ fail("Unexpected database exception came from replicationManagerStart." + dbe.toString());
+ }
+ try {
+ /*
+ * NOTE! This is a bit alarming - I have seen shutdown failures with the following message:
+ *
+ * RepmgrStartupTest test: Waiting for handle count (1) or msg_th (0) to complete replication lockout
+ *
+ * When the sleep is over 10 seconds.
+ */
+ java.lang.Thread.sleep(12000);
+ }catch(InterruptedException ie) {}
+
+ try {
+ dbenv.close();
+ Environment.remove(homedir, false, envConfig);
+ } catch(FileNotFoundException fnfe) {
+ } catch(DatabaseException dbe) {
+ fail("Unexpected database exception came during shutdown." + dbe.toString());
+ }
+ }
+
+ public void handleRepMasterEvent() {
+ TestUtils.DEBUGOUT(1, "Got a REP_MASTER message");
+ }
+
+ public void handleRepClientEvent() {
+ TestUtils.DEBUGOUT(1, "Got a REP_CLIENT message");
+ }
+
+ public void handleRepNewMasterEvent() {
+ TestUtils.DEBUGOUT(1, "Got a REP_NEW_MASTER message");
+ }
+}
diff --git a/db/test/scr016/src/com/sleepycat/db/test/TestUtils.java b/db/test/scr016/src/com/sleepycat/db/test/TestUtils.java
new file mode 100644
index 000000000..4e85c428a
--- /dev/null
+++ b/db/test/scr016/src/com/sleepycat/db/test/TestUtils.java
@@ -0,0 +1,227 @@
+/*
+ * Generally useful functions :)
+ */
+
+package com.sleepycat.db.test;
+
+import static org.junit.Assert.fail;
+
+import com.sleepycat.db.*;
+
+import java.io.BufferedInputStream;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.FileNotFoundException;
+import java.io.InputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.Properties;
+
+public class TestUtils
+{
+ public static boolean config_loaded = false;
+ public static boolean verbose_flag = false;
+ public static int debug_level = 2;
+
+ // should be initialized by calling loadEnvVars. Shared between all tests.
+ public static String BASETEST_DBDIR = "";
+ public static File BASETEST_DBFILE = null; // new File(TestUtils.BASETEST_DBDIR);
+
+ public static void ERR(String a)
+ {
+ System.err.println("FAIL: " + a);
+ fail(a);
+ }
+
+ public static void DEBUGOUT(String s)
+ {
+ DEBUGOUT(1, s);
+ }
+
+ public static void DEBUGOUT(int importance, String s)
+ {
+ if(importance > debug_level)
+ System.out.println("DEBUG: " +s);
+ }
+
+ public static void VERBOSEOUT(String s)
+ {
+ if (verbose_flag)
+ System.out.println(s);
+ }
+
+ public static void sysexit(int code)
+ {
+ System.exit(code);
+ }
+
+ public static void check_file_removed(String name, boolean fatal,
+ boolean force_remove_first)
+ {
+ File f = new File(name);
+ if (force_remove_first) {
+ f.delete();
+ }
+ if (f.exists()) {
+ if (fatal)
+ System.out.print("FAIL: ");
+ DEBUGOUT(1, "File \"" + name + "\" still exists after check_file_removed\n");
+ if (fatal)
+ fail("File \"" + name + "\" still exists after check_file_removed");
+ }
+ }
+
+
+ // remove any existing environment or database
+ public static void removeall(boolean use_db, boolean remove_env, String envpath, String dbname)
+ {
+ {
+ try {
+ if (remove_env)
+ Environment.remove(new File(envpath), true, EnvironmentConfig.DEFAULT);
+ if (use_db)
+ Database.remove(dbname, null, DatabaseConfig.DEFAULT);
+ }
+ catch (DatabaseException dbe) {
+ DEBUGOUT(1, "TestUtil::removeall exception caught: " + dbe);
+ }
+ catch (FileNotFoundException dbe) {
+ DEBUGOUT(1, "TestUtil::removeall exception caught: " + dbe);
+ }
+ }
+ check_file_removed(dbname, false, !use_db);
+ if (remove_env) {
+ for (int i=0; i<8; i++) {
+ String fname = envpath + "/" + "__db." + i;
+ check_file_removed(fname, true, !use_db);
+ }
+
+ // ensure the user knows if there is junk remaining.
+ // clean out spurious log.00X files
+ File dir = new File(envpath);
+ if(dir.isDirectory()) {
+ String[] remainingfiles = dir.list();
+ for(int i = 0; i < remainingfiles.length; i++) {
+ if(remainingfiles[i].startsWith("log") || remainingfiles[i].endsWith("db2") ||
+ remainingfiles[i].endsWith("log") || remainingfiles[i].startsWith("__db")) {
+ DEBUGOUT(1, "TestUtils::removeall removing: " +remainingfiles[i]);
+ check_file_removed(envpath + "/" + remainingfiles[i], false, true);
+ } else {
+ if(remainingfiles[i].indexOf("del") == -1)
+ DEBUGOUT(3, "TestUtils::removeall warning, file: " + remainingfiles[i] + " remains in directory after cleanup.");
+ }
+ }
+ }
+ }
+ }
+
+ public static boolean removeDir(String dirname)
+ {
+ try {
+ File deldir = new File(dirname);
+
+ if (!deldir.exists()) {
+ return true;
+ } else if(!deldir.isDirectory()) {
+ return false;
+ } else {
+ // The following will fail if the directory contains sub-dirs.
+ File[] contents = deldir.listFiles();
+ for (int i = 0; i < contents.length; i++)
+ contents[i].delete();
+ deldir.delete();
+ }
+ } catch (Exception e) {
+ TestUtils.DEBUGOUT(4, "Warning: error encountered removing directory.\n" + e);
+ }
+ return true;
+ }
+
+ static public String shownull(Object o)
+ {
+ if (o == null)
+ return "null";
+ else
+ return "not null";
+ }
+
+ /*
+ * The config file is not currently required.
+ * The only variable that can be set via the
+ * config file is the base directory for the
+ * tests to be run in. The default is "data"
+ * and will be created for the tests.
+ */
+ public static void loadConfig(String envfilename)
+ {
+ if(config_loaded)
+ return;
+
+ String configname = envfilename;
+ if(envfilename == null)
+ {
+ String OSStr = java.lang.System.getProperty("os.name");
+ if((OSStr.toLowerCase()).indexOf("windows") != -1)
+ {
+ configname = "config_win32";
+ } else {
+ // assume a nix variant.
+ configname = "config_nix";
+ }
+ }
+ config_loaded = true;
+ try {
+ InputStream in = new FileInputStream(configname);
+ DEBUGOUT(2, "Opened " + configname + " to read configuration.");
+ Properties props = new Properties();
+ props.load(in);
+
+ String var = props.getProperty("BASETEST_DBDIR");
+ if(var != null)
+ { // Property seems to encase things in "";
+ var = var.substring(1);
+ var = var.substring(0, var.length() -2);
+ BASETEST_DBDIR = var;
+ }
+ DEBUGOUT(2, "BASETEST_DBDIR is: " + BASETEST_DBDIR);
+
+ } catch (Exception e) {
+ // expected - the config file is optional.
+ DEBUGOUT(0, "loadEnvVars -- loading of default variables failed. error: " + e);
+ }
+ if (BASETEST_DBDIR == "")
+ BASETEST_DBDIR = "data";
+ BASETEST_DBFILE = new File(BASETEST_DBDIR);
+ if (!BASETEST_DBFILE.exists())
+ BASETEST_DBFILE.mkdirs();
+ }
+
+ public static String getDBFileName(String dbname)
+ {
+ DEBUGOUT(1, "getDBFileName returning: " + BASETEST_DBDIR + "/" + dbname);
+ return BASETEST_DBDIR + "/" + dbname;
+ }
+
+ public static OutputStream getErrorStream()
+ {
+ OutputStream retval = System.err;
+ try {
+ File outfile = new File(BASETEST_DBDIR + "/" + "errstream.log");
+ if(outfile.exists())
+ {
+ outfile.delete();
+ outfile.createNewFile();
+ } else {
+ outfile.createNewFile();
+ }
+ retval = new FileOutputStream(outfile);
+ } catch (FileNotFoundException fnfe) {
+ DEBUGOUT(3, "Unable to open error log file. " + fnfe);
+ } catch (IOException ioe) {
+ DEBUGOUT(3, "Unable to create error log file. " + ioe);
+ }
+ return retval;
+ }
+}
diff --git a/db/test/scr016/src/com/sleepycat/db/test/VerboseConfigTest.java b/db/test/scr016/src/com/sleepycat/db/test/VerboseConfigTest.java
new file mode 100644
index 000000000..fa3c0bd30
--- /dev/null
+++ b/db/test/scr016/src/com/sleepycat/db/test/VerboseConfigTest.java
@@ -0,0 +1,91 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
+ */
+
+package com.sleepycat.db.test;
+
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
+import com.sleepycat.db.*;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+
+import com.sleepycat.db.test.TestUtils;
+public class VerboseConfigTest {
+ public static final String VERBOSECONFIGTEST_DBNAME = "verboseconfigtest.db";
+ @BeforeClass public static void ClassInit() {
+ TestUtils.loadConfig(null);
+ TestUtils.check_file_removed(TestUtils.getDBFileName(VERBOSECONFIGTEST_DBNAME), true, true);
+ TestUtils.removeall(true, true, TestUtils.BASETEST_DBDIR, TestUtils.getDBFileName(VERBOSECONFIGTEST_DBNAME));
+ }
+
+ @AfterClass public static void ClassShutdown() {
+ TestUtils.check_file_removed(TestUtils.getDBFileName(VERBOSECONFIGTEST_DBNAME), true, true);
+ TestUtils.removeall(true, true, TestUtils.BASETEST_DBDIR, TestUtils.getDBFileName(VERBOSECONFIGTEST_DBNAME));
+ }
+
+ @Before public void PerTestInit()
+ throws Exception {
+ }
+
+ @After public void PerTestShutdown()
+ throws Exception {
+ }
+ /*
+ * Test case implementations.
+ * To disable a test mark it with @Ignore
+ * To set a timeout(ms) notate like: @Test(timeout=1000)
+ * To indicate an expected exception notate like: (expected=Exception)
+ */
+
+ @Test public void test1()
+ throws DatabaseException, FileNotFoundException
+ {
+ EnvironmentConfig envc = new EnvironmentConfig();
+ envc.setAllowCreate(true);
+ envc.setInitializeCache(true);
+ envc.setVerbose(VerboseConfig.DEADLOCK, true);
+ envc.setVerbose(VerboseConfig.FILEOPS, true);
+ envc.setVerbose(VerboseConfig.FILEOPS_ALL, true);
+ envc.setVerbose(VerboseConfig.RECOVERY, true);
+ envc.setVerbose(VerboseConfig.REGISTER, true);
+ envc.setVerbose(VerboseConfig.REPLICATION, true);
+ envc.setVerbose(VerboseConfig.WAITSFOR, true);
+ envc.setMessageStream(new FileOutputStream(new File("messages.txt")));
+ Environment db_env = new Environment(TestUtils.BASETEST_DBFILE, envc);
+
+ new File("messages.txt").delete();
+ }
+
+ /*
+ * Tests for old (now deprecated) API.
+ */
+ @Test public void test2()
+ throws DatabaseException, FileNotFoundException
+ {
+ EnvironmentConfig envc = new EnvironmentConfig();
+ envc.setAllowCreate(true);
+ envc.setInitializeCache(true);
+ envc.setVerboseDeadlock(true);
+ envc.setVerboseRecovery(true);
+ envc.setVerboseRegister(true);
+ envc.setVerboseReplication(true);
+ envc.setVerboseWaitsFor(true);
+ envc.setMessageStream(new FileOutputStream(new File("messages.txt")));
+ Environment db_env = new Environment(TestUtils.BASETEST_DBFILE, envc);
+
+ new File("messages.txt").delete();
+ }
+}
diff --git a/db/test/scr016/testall b/db/test/scr016/testall
deleted file mode 100644
index a4e1b5a8c..000000000
--- a/db/test/scr016/testall
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/bin/sh -
-# $Id: testall,v 1.4 2001/09/13 14:49:37 dda Exp $
-#
-# Run all the Java regression tests
-
-ecode=0
-prefixarg=""
-stdinarg=""
-while :
-do
- case "$1" in
- --prefix=* )
- prefixarg="$1"; shift;;
- --stdin )
- stdinarg="$1"; shift;;
- * )
- break
- esac
-done
-files="`find . -name \*.java -print`"
-for file in $files; do
- name=`echo $file | sed -e 's:^\./::' -e 's/\.java$//'`
- if grep $name ignore > /dev/null; then
- echo " **** java test $name ignored"
- else
- echo " ==== java test $name"
- if ! sh ./testone $prefixarg $stdinarg $name; then
- ecode=1
- fi
- fi
-done
-exit $ecode
diff --git a/db/test/scr016/testone b/db/test/scr016/testone
deleted file mode 100644
index ff654da3a..000000000
--- a/db/test/scr016/testone
+++ /dev/null
@@ -1,126 +0,0 @@
-#!/bin/sh -
-# $Id: testone,v 1.7 2003/05/06 17:09:44 dda Exp $
-#
-# Run just one Java regression test, the single argument
-# is the classname within this package.
-
-error()
-{
- echo '' >&2
- echo "Java regression error: $@" >&2
- echo '' >&2
- ecode=1
-}
-
-# compares the result against the good version,
-# reports differences, and removes the result file
-# if there are no differences.
-#
-compare_result()
-{
- good="$1"
- latest="$2"
- if [ ! -e "$good" ]; then
- echo "Note: $good does not exist"
- return
- fi
- tmpout=/tmp/blddb$$.tmp
- diff "$good" "$latest" > $tmpout
- if [ -s $tmpout ]; then
- nbad=`grep '^[0-9]' $tmpout | wc -l`
- error "$good and $latest differ in $nbad places."
- else
- rm $latest
- fi
- rm -f $tmpout
-}
-
-ecode=0
-stdinflag=n
-JAVA=${JAVA:-java}
-JAVAC=${JAVAC:-javac}
-
-# classdir is relative to TESTDIR subdirectory
-classdir=./classes
-
-# CLASSPATH is used by javac and java.
-# We use CLASSPATH rather than the -classpath command line option
-# because the latter behaves differently from JDK1.1 and JDK1.2
-export CLASSPATH="$classdir:$CLASSPATH"
-
-# determine the prefix of the install tree
-prefix=""
-while :
-do
- case "$1" in
- --prefix=* )
- prefix="`echo $1 | sed -e 's/--prefix=//'`"; shift
- export LD_LIBRARY_PATH="$prefix/lib:$LD_LIBRARY_PATH"
- export CLASSPATH="$prefix/lib/db.jar:$CLASSPATH"
- ;;
- --stdin )
- stdinflag=y; shift
- ;;
- * )
- break
- ;;
- esac
-done
-
-if [ "$#" = 0 ]; then
- echo 'Usage: testone [ --prefix=<dir> | --stdin ] TestName'
- exit 1
-fi
-name="$1"
-
-# class must be public
-if ! grep "public.*class.*$name" $name.java > /dev/null; then
- error "public class $name is not declared in file $name.java"
- exit 1
-fi
-
-# compile
-rm -rf TESTDIR; mkdir TESTDIR
-cd ./TESTDIR
-mkdir -p $classdir
-${JAVAC} -deprecation -d $classdir ../$name.java ../TestUtil.java > ../$name.compileout 2>&1
-ERR=$?
-if [ $ERR != 0 -o -s ../$name.compileout ]; then
- error "compilation of $name failed, see $name.compileout"
- if [ "$ERR" != 0 ]; then
- exit 1
- fi
-else
- rm -f ../$name.compileout
-fi
-
-# find input and error file
-infile=../$name.testin
-if [ ! -f $infile ]; then
- infile=/dev/null
-fi
-
-# run and diff results
-rm -rf TESTDIR
-if [ "$stdinflag" = y ]
-then
- ${JAVA} com.sleepycat.test.$name $TEST_ARGS >../$name.out 2>../$name.err
-else
- ${JAVA} com.sleepycat.test.$name $TEST_ARGS <$infile >../$name.out 2>../$name.err
-fi
-cd ..
-
-testerr=$name.testerr
-if [ ! -f $testerr ]; then
- testerr=/dev/null
-fi
-
-testout=$name.testout
-if [ ! -f $testout ]; then
- testout=/dev/null
-fi
-
-compare_result $testout $name.out
-compare_result $testerr $name.err
-rm -rf TESTDIR
-exit $ecode
diff --git a/db/test/scr017/t.c b/db/test/scr017/t.c
index f03b33880..26142d297 100644
--- a/db/test/scr017/t.c
+++ b/db/test/scr017/t.c
@@ -184,5 +184,5 @@ err(s)
char *s;
{
fprintf(stderr, "\t%s: %s\n", s, strerror(errno));
- exit (1);
+ exit(EXIT_FAILURE);
}
diff --git a/db/test/scr018/t.c b/db/test/scr018/t.c
index d7dd7ac65..3a473c1e7 100644
--- a/db/test/scr018/t.c
+++ b/db/test/scr018/t.c
@@ -14,7 +14,7 @@ chk(f)
if (freopen(f, "r", stdin) == NULL) {
fprintf(stderr, "%s: %s\n", f, strerror(errno));
- exit (1);
+ exit(EXIT_FAILURE);
}
for (l = 1, r = 0; (ch = getchar()) != EOF;) {
if (ch != ',')
diff --git a/db/test/scr019/chk.include b/db/test/scr019/chk.include
index 4d583e580..c444ab270 100644
--- a/db/test/scr019/chk.include
+++ b/db/test/scr019/chk.include
@@ -1,6 +1,6 @@
#!/bin/sh -
#
-# $Id: chk.include,v 12.2 2006/09/11 15:27:36 bostic Exp $
+# $Id: chk.include,v 12.4 2007/05/17 19:38:09 bostic Exp $
#
# Check for inclusion of files already included in db_int.h.
@@ -25,10 +25,10 @@ for i in `cat $t1`; do
(cd $d && egrep "^#include[ ].*[<\"]$i[>\"]" */*.[ch])
done |
sed -e '/^build/d' \
- -e '/^clib\/strtol.c/d' \
- -e '/^clib\/strtoul.c/d' \
+ -e '/^db_codegen\/code_capi.c/d' \
-e '/^db_dump185/d' \
-e '/^dbinc\/mutex_int.h.*<sys\/mman.h>/d' \
+ -e '/^dbinc\/win_db.h:/d' \
-e '/^examples_c/d' \
-e '/^libdb_java.*errno.h/d' \
-e '/^libdb_java.*java_util.h/d' \
diff --git a/db/test/scr021/chk.flags b/db/test/scr021/chk.flags
index 0a7cc9034..1a6324c29 100644
--- a/db/test/scr021/chk.flags
+++ b/db/test/scr021/chk.flags
@@ -1,6 +1,6 @@
#!/bin/sh -
#
-# $Id: chk.flags,v 12.1 2005/10/20 19:16:41 bostic Exp $
+# $Id: chk.flags,v 12.2 2007/04/20 14:46:30 bostic Exp $
#
# Check flag name-spaces.
@@ -27,7 +27,7 @@ cat $t1 |
grep '(dbenv,' |
sed -e '/DB_ENV_/d' \
-e '/env_method.c.*, mapped_flags*)/d' \
- -e '/env_region.c.*, db_env_reset)/d' \
+ -e '/env_region.c.*, flags_orig*)/d' \
> $t2
[ -s $t2 ] && {
cat $t2
@@ -37,6 +37,7 @@ sed -e '/DB_ENV_/d' \
grep 'DB_ENV_' $t1 |
sed -e '/((*dbenv)*,/d' \
-e '/((*dbp)*->dbenv,/d' \
+ -e '/((*env)*,/d' \
-e '/((*infop)*->dbenv,/d' \
-e '/((*reginfop)*->dbenv,/d' \
-e '/((*sdbp)*->dbenv,/d' \
diff --git a/db/test/scr021/t.c b/db/test/scr021/t.c
index d22d6a2f0..63170a902 100644
--- a/db/test/scr021/t.c
+++ b/db/test/scr021/t.c
@@ -15,7 +15,7 @@ chk(f, str)
if (freopen(f, "r", stdin) == NULL) {
fprintf(stderr, "%s: %s\n", f, strerror(errno));
- exit (1);
+ exit(EXIT_FAILURE);
}
for (l = 1, ok = 1, s = str; (ch = getchar()) != EOF;) {
diff --git a/db/test/scr023/q.c b/db/test/scr023/q.c
index 401c7bd65..303beae16 100644
--- a/db/test/scr023/q.c
+++ b/db/test/scr023/q.c
@@ -388,7 +388,7 @@ sh_t_remove_tail(l)
struct sh_te *ele = SH_TAILQ_FIRST(l, sh_te);
if (SH_TAILQ_EMPTY(l))
- return(l);
+ return (l);
while (SH_TAILQ_NEXT(ele, sh_tes, sh_te) != NULL)
ele = SH_TAILQ_NEXT(ele, sh_tes, sh_te);
@@ -720,7 +720,7 @@ struct {
{ "B C", "A B C", "B", "A", INSERT_BEFORE },
{ "A C", "A B C", "C", "B", INSERT_BEFORE },
{ "A C", "A B C", "A", "B", INSERT_AFTER },
- { "A C", "A C B", "C", "B", INSERT_AFTER },
+ { "A C", "A C B", "C", "B", INSERT_AFTER },
/* all operations on a three element list */
diff --git a/db/test/scr024/src/com/sleepycat/bind/serial/test/MarshalledObject.java b/db/test/scr024/src/com/sleepycat/bind/serial/test/MarshalledObject.java
index ee7b13b7d..6e3957aa5 100644
--- a/db/test/scr024/src/com/sleepycat/bind/serial/test/MarshalledObject.java
+++ b/db/test/scr024/src/com/sleepycat/bind/serial/test/MarshalledObject.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: MarshalledObject.java,v 12.4 2006/08/24 14:46:43 bostic Exp $
+ * $Id: MarshalledObject.java,v 12.6 2007/05/04 00:28:27 mark Exp $
*/
package com.sleepycat.bind.serial.test;
diff --git a/db/test/scr024/src/com/sleepycat/bind/serial/test/NullClassCatalog.java b/db/test/scr024/src/com/sleepycat/bind/serial/test/NullClassCatalog.java
index eda415e8c..bab978698 100644
--- a/db/test/scr024/src/com/sleepycat/bind/serial/test/NullClassCatalog.java
+++ b/db/test/scr024/src/com/sleepycat/bind/serial/test/NullClassCatalog.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: NullClassCatalog.java,v 12.4 2006/08/24 14:46:43 bostic Exp $
+ * $Id: NullClassCatalog.java,v 12.6 2007/05/04 00:28:27 mark Exp $
*/
package com.sleepycat.bind.serial.test;
@@ -19,7 +18,7 @@ import com.sleepycat.bind.serial.ClassCatalog;
* NullCatalog is a dummy Catalog implementation that simply
* returns large (8 byte) class IDs so that ObjectOutput
* can be simulated when computing a serialized size.
- *
+ *
* @author Mark Hayes
*/
class NullClassCatalog implements ClassCatalog {
diff --git a/db/test/scr024/src/com/sleepycat/bind/serial/test/SerialBindingTest.java b/db/test/scr024/src/com/sleepycat/bind/serial/test/SerialBindingTest.java
index 29f05419c..c5b7a4f5b 100644
--- a/db/test/scr024/src/com/sleepycat/bind/serial/test/SerialBindingTest.java
+++ b/db/test/scr024/src/com/sleepycat/bind/serial/test/SerialBindingTest.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: SerialBindingTest.java,v 12.5 2006/08/24 14:46:43 bostic Exp $
+ * $Id: SerialBindingTest.java,v 12.7 2007/05/04 00:28:27 mark Exp $
*/
package com.sleepycat.bind.serial.test;
diff --git a/db/test/scr024/src/com/sleepycat/bind/serial/test/TestClassCatalog.java b/db/test/scr024/src/com/sleepycat/bind/serial/test/TestClassCatalog.java
index 77301de9f..3d9bde506 100644
--- a/db/test/scr024/src/com/sleepycat/bind/serial/test/TestClassCatalog.java
+++ b/db/test/scr024/src/com/sleepycat/bind/serial/test/TestClassCatalog.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: TestClassCatalog.java,v 12.3 2006/08/24 14:46:43 bostic Exp $
+ * $Id: TestClassCatalog.java,v 12.5 2007/05/04 00:28:27 mark Exp $
*/
package com.sleepycat.bind.serial.test;
diff --git a/db/test/scr024/src/com/sleepycat/bind/test/BindingSpeedTest.java b/db/test/scr024/src/com/sleepycat/bind/test/BindingSpeedTest.java
index df1a8c8e9..0d68cde53 100644
--- a/db/test/scr024/src/com/sleepycat/bind/test/BindingSpeedTest.java
+++ b/db/test/scr024/src/com/sleepycat/bind/test/BindingSpeedTest.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: BindingSpeedTest.java,v 12.5 2006/09/12 00:37:27 alexg Exp $
+ * $Id: BindingSpeedTest.java,v 12.7 2007/05/04 00:28:28 mark Exp $
*/
package com.sleepycat.bind.test;
@@ -324,11 +323,11 @@ public class BindingSpeedTest extends TestCase {
to.reset();
Data data = new Data();
- to.writeString((String) getters[0].invoke(data, (Object[])null));
- to.writeString((String) getters[1].invoke(data, (Object[])null));
- to.writeInt(((Integer) getters[2].invoke(data, (Object[])null)).intValue());
- to.writeInt(((Integer) getters[3].invoke(data, (Object[])null)).intValue());
- to.writeString((String) getters[4].invoke(data, (Object[])null));
+ to.writeString((String) getters[0].invoke(data, (Object[]) null));
+ to.writeString((String) getters[1].invoke(data, (Object[]) null));
+ to.writeInt(((Integer) getters[2].invoke(data, (Object[]) null)).intValue());
+ to.writeInt(((Integer) getters[3].invoke(data, (Object[]) null)).intValue());
+ to.writeString((String) getters[4].invoke(data, (Object[]) null));
TupleInput ti = new TupleInput(
to.getBufferBytes(), to.getBufferOffset(),
diff --git a/db/test/scr024/src/com/sleepycat/bind/tuple/test/MarshalledObject.java b/db/test/scr024/src/com/sleepycat/bind/tuple/test/MarshalledObject.java
index 3882a3d99..9985d713a 100644
--- a/db/test/scr024/src/com/sleepycat/bind/tuple/test/MarshalledObject.java
+++ b/db/test/scr024/src/com/sleepycat/bind/tuple/test/MarshalledObject.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: MarshalledObject.java,v 12.3 2006/08/24 14:46:45 bostic Exp $
+ * $Id: MarshalledObject.java,v 12.5 2007/05/04 00:28:28 mark Exp $
*/
package com.sleepycat.bind.tuple.test;
diff --git a/db/test/scr024/src/com/sleepycat/bind/tuple/test/TupleBindingTest.java b/db/test/scr024/src/com/sleepycat/bind/tuple/test/TupleBindingTest.java
index f9d719da5..8c7395e63 100644
--- a/db/test/scr024/src/com/sleepycat/bind/tuple/test/TupleBindingTest.java
+++ b/db/test/scr024/src/com/sleepycat/bind/tuple/test/TupleBindingTest.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: TupleBindingTest.java,v 12.5 2006/08/24 14:46:45 bostic Exp $
+ * $Id: TupleBindingTest.java,v 12.7 2007/05/04 00:28:28 mark Exp $
*/
package com.sleepycat.bind.tuple.test;
diff --git a/db/test/scr024/src/com/sleepycat/bind/tuple/test/TupleFormatTest.java b/db/test/scr024/src/com/sleepycat/bind/tuple/test/TupleFormatTest.java
index 3eb691631..63b6b0196 100644
--- a/db/test/scr024/src/com/sleepycat/bind/tuple/test/TupleFormatTest.java
+++ b/db/test/scr024/src/com/sleepycat/bind/tuple/test/TupleFormatTest.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: TupleFormatTest.java,v 12.5 2006/08/24 14:46:45 bostic Exp $
+ * $Id: TupleFormatTest.java,v 12.7 2007/05/04 00:28:28 mark Exp $
*/
package com.sleepycat.bind.tuple.test;
@@ -869,4 +868,62 @@ public class TupleFormatTest extends TestCase {
assertEquals(-1, in.readSortedDouble(), 0);
assertEquals(0, in.available(), 0);
}
+
+ private void packedIntTest(int val, int size) {
+
+ out.reset();
+ out.writePackedInt(val);
+ assertEquals(size, out.size());
+ copyOutputToInput();
+ assertEquals(size, in.getPackedIntByteLength());
+ assertEquals(val, in.readPackedInt());
+ }
+
+ public void testPackedInt() {
+
+ /* Exhaustive value testing is in PackedIntTest. */
+ packedIntTest(119, 1);
+ packedIntTest(0xFFFF + 119, 3);
+ packedIntTest(Integer.MAX_VALUE, 5);
+
+ out.reset();
+ out.writePackedInt(119);
+ out.writePackedInt(0xFFFF + 119);
+ out.writePackedInt(Integer.MAX_VALUE);
+ assertEquals(1 + 3 + 5, out.size());
+ copyOutputToInput();
+ assertEquals(119, in.readPackedInt(), 0);
+ assertEquals(0xFFFF + 119, in.readPackedInt(), 0);
+ assertEquals(Integer.MAX_VALUE, in.readPackedInt(), 0);
+ assertEquals(0, in.available(), 0);
+ }
+
+ private void packedLongTest(long val, int size) {
+
+ out.reset();
+ out.writePackedLong(val);
+ assertEquals(size, out.size());
+ copyOutputToInput();
+ assertEquals(size, in.getPackedLongByteLength());
+ assertEquals(val, in.readPackedLong());
+ }
+
+ public void testPackedLong() {
+
+ /* Exhaustive value testing is in PackedIntTest. */
+ packedLongTest(119, 1);
+ packedLongTest(0xFFFFFFFFL + 119, 5);
+ packedLongTest(Long.MAX_VALUE, 9);
+
+ out.reset();
+ out.writePackedLong(119);
+ out.writePackedLong(0xFFFFFFFFL + 119);
+ out.writePackedLong(Long.MAX_VALUE);
+ assertEquals(1 + 5 + 9, out.size());
+ copyOutputToInput();
+ assertEquals(119, in.readPackedLong(), 0);
+ assertEquals(0xFFFFFFFFL + 119, in.readPackedLong(), 0);
+ assertEquals(Long.MAX_VALUE, in.readPackedLong(), 0);
+ assertEquals(0, in.available(), 0);
+ }
}
diff --git a/db/test/scr024/src/com/sleepycat/bind/tuple/test/TupleOrderingTest.java b/db/test/scr024/src/com/sleepycat/bind/tuple/test/TupleOrderingTest.java
index 218c4ceef..9734c0b3c 100644
--- a/db/test/scr024/src/com/sleepycat/bind/tuple/test/TupleOrderingTest.java
+++ b/db/test/scr024/src/com/sleepycat/bind/tuple/test/TupleOrderingTest.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: TupleOrderingTest.java,v 12.6 2006/08/24 14:46:45 bostic Exp $
+ * $Id: TupleOrderingTest.java,v 12.8 2007/05/04 00:28:28 mark Exp $
*/
package com.sleepycat.bind.tuple.test;
@@ -317,7 +316,7 @@ public class TupleOrderingTest extends TestCase {
}
public void testFloat() {
-
+
// Only positive floats and doubles are ordered deterministically
final float[] DATA = {
@@ -339,7 +338,7 @@ public class TupleOrderingTest extends TestCase {
}
public void testDouble() {
-
+
// Only positive floats and doubles are ordered deterministically
final double[] DATA = {
diff --git a/db/test/scr024/src/com/sleepycat/collections/KeyRangeTest.java b/db/test/scr024/src/com/sleepycat/collections/KeyRangeTest.java
index 573585919..15d2ed92f 100644
--- a/db/test/scr024/src/com/sleepycat/collections/KeyRangeTest.java
+++ b/db/test/scr024/src/com/sleepycat/collections/KeyRangeTest.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: KeyRangeTest.java,v 12.5 2006/08/24 14:46:45 bostic Exp $
+ * $Id: KeyRangeTest.java,v 12.7 2007/05/04 00:28:29 mark Exp $
*/
package com.sleepycat.collections;
@@ -109,7 +108,7 @@ public class KeyRangeTest extends TestCase {
private void closeDb()
throws Exception {
-
+
store.close();
store = null;
env.close();
diff --git a/db/test/scr024/src/com/sleepycat/collections/test/CollectionTest.java b/db/test/scr024/src/com/sleepycat/collections/test/CollectionTest.java
index fdea67576..7bbe3b014 100644
--- a/db/test/scr024/src/com/sleepycat/collections/test/CollectionTest.java
+++ b/db/test/scr024/src/com/sleepycat/collections/test/CollectionTest.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: CollectionTest.java,v 12.6 2006/08/24 14:46:46 bostic Exp $
+ * $Id: CollectionTest.java,v 12.8 2007/05/04 00:28:29 mark Exp $
*/
package com.sleepycat.collections.test;
@@ -253,7 +252,7 @@ public class CollectionTest extends TestCase {
(testStoredIterator ? "-storedIter" : "") +
((maxKey != DEFAULT_MAX_KEY) ? ("-maxKey-" + maxKey) : "");
}
-
+
public void tearDown()
throws Exception {
@@ -277,11 +276,13 @@ public class CollectionTest extends TestCase {
DbCompat.NESTED_TRANSACTIONS);
TransactionRunner nullRunner = new NullTransactionRunner(env);
readRunner = nullRunner;
- writeIterRunner = normalRunner;
if (isAutoCommit) {
writeRunner = nullRunner;
+ writeIterRunner = testStoredIterator ? normalRunner
+ : nullRunner;
} else {
writeRunner = normalRunner;
+ writeIterRunner = normalRunner;
}
store = testStore.open(env, "unindexed.db");
@@ -415,7 +416,7 @@ public class CollectionTest extends TestCase {
// create primary list
if (testStore.hasRecNumAccess()) {
if (isEntityBinding) {
- ilist = new StoredList(store, entityBinding,
+ ilist = new StoredList(store, entityBinding,
testStore.getKeyAssigner());
} else {
ilist = new StoredList(store, valueBinding,
diff --git a/db/test/scr024/src/com/sleepycat/collections/test/DbTestUtil.java b/db/test/scr024/src/com/sleepycat/collections/test/DbTestUtil.java
index 1623caf8c..a04b0a833 100644
--- a/db/test/scr024/src/com/sleepycat/collections/test/DbTestUtil.java
+++ b/db/test/scr024/src/com/sleepycat/collections/test/DbTestUtil.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: DbTestUtil.java,v 12.4 2006/08/24 14:46:46 bostic Exp $
+ * $Id: DbTestUtil.java,v 12.6 2007/05/04 00:28:29 mark Exp $
*/
package com.sleepycat.collections.test;
diff --git a/db/test/scr024/src/com/sleepycat/collections/test/IterDeadlockTest.java b/db/test/scr024/src/com/sleepycat/collections/test/IterDeadlockTest.java
index bbb1517cd..f149e010c 100644
--- a/db/test/scr024/src/com/sleepycat/collections/test/IterDeadlockTest.java
+++ b/db/test/scr024/src/com/sleepycat/collections/test/IterDeadlockTest.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: IterDeadlockTest.java,v 12.5 2006/08/24 14:46:46 bostic Exp $
+ * $Id: IterDeadlockTest.java,v 12.7 2007/05/04 00:28:29 mark Exp $
*/
package com.sleepycat.collections.test;
diff --git a/db/test/scr024/src/com/sleepycat/collections/test/JoinTest.java b/db/test/scr024/src/com/sleepycat/collections/test/JoinTest.java
index 552a4d5e8..da0a8cb87 100644
--- a/db/test/scr024/src/com/sleepycat/collections/test/JoinTest.java
+++ b/db/test/scr024/src/com/sleepycat/collections/test/JoinTest.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: JoinTest.java,v 12.5 2006/08/31 18:14:14 bostic Exp $
+ * $Id: JoinTest.java,v 12.7 2007/05/04 00:28:29 mark Exp $
*/
package com.sleepycat.collections.test;
diff --git a/db/test/scr024/src/com/sleepycat/collections/test/NullTransactionRunner.java b/db/test/scr024/src/com/sleepycat/collections/test/NullTransactionRunner.java
index 5e69aa4d2..c4f927563 100644
--- a/db/test/scr024/src/com/sleepycat/collections/test/NullTransactionRunner.java
+++ b/db/test/scr024/src/com/sleepycat/collections/test/NullTransactionRunner.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: NullTransactionRunner.java,v 12.3 2006/08/24 14:46:46 bostic Exp $
+ * $Id: NullTransactionRunner.java,v 12.5 2007/05/04 00:28:29 mark Exp $
*/
package com.sleepycat.collections.test;
diff --git a/db/test/scr024/src/com/sleepycat/collections/test/SecondaryDeadlockTest.java b/db/test/scr024/src/com/sleepycat/collections/test/SecondaryDeadlockTest.java
index e77cb0ea5..e8a23768d 100644
--- a/db/test/scr024/src/com/sleepycat/collections/test/SecondaryDeadlockTest.java
+++ b/db/test/scr024/src/com/sleepycat/collections/test/SecondaryDeadlockTest.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: SecondaryDeadlockTest.java,v 12.5 2006/08/24 14:46:46 bostic Exp $
+ * $Id: SecondaryDeadlockTest.java,v 12.7 2007/05/04 00:28:29 mark Exp $
*/
package com.sleepycat.collections.test;
diff --git a/db/test/scr024/src/com/sleepycat/collections/test/TestDataBinding.java b/db/test/scr024/src/com/sleepycat/collections/test/TestDataBinding.java
index 7d8697462..fe7604830 100644
--- a/db/test/scr024/src/com/sleepycat/collections/test/TestDataBinding.java
+++ b/db/test/scr024/src/com/sleepycat/collections/test/TestDataBinding.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: TestDataBinding.java,v 12.3 2006/08/24 14:46:46 bostic Exp $
+ * $Id: TestDataBinding.java,v 12.5 2007/05/04 00:28:29 mark Exp $
*/
package com.sleepycat.collections.test;
diff --git a/db/test/scr024/src/com/sleepycat/collections/test/TestEntity.java b/db/test/scr024/src/com/sleepycat/collections/test/TestEntity.java
index a5c5e2b93..2f3254b71 100644
--- a/db/test/scr024/src/com/sleepycat/collections/test/TestEntity.java
+++ b/db/test/scr024/src/com/sleepycat/collections/test/TestEntity.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: TestEntity.java,v 12.3 2006/08/24 14:46:46 bostic Exp $
+ * $Id: TestEntity.java,v 12.5 2007/05/04 00:28:29 mark Exp $
*/
package com.sleepycat.collections.test;
diff --git a/db/test/scr024/src/com/sleepycat/collections/test/TestEntityBinding.java b/db/test/scr024/src/com/sleepycat/collections/test/TestEntityBinding.java
index 0e7cf3df8..d559be752 100644
--- a/db/test/scr024/src/com/sleepycat/collections/test/TestEntityBinding.java
+++ b/db/test/scr024/src/com/sleepycat/collections/test/TestEntityBinding.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: TestEntityBinding.java,v 12.3 2006/08/24 14:46:46 bostic Exp $
+ * $Id: TestEntityBinding.java,v 12.5 2007/05/04 00:28:29 mark Exp $
*/
package com.sleepycat.collections.test;
diff --git a/db/test/scr024/src/com/sleepycat/collections/test/TestEnv.java b/db/test/scr024/src/com/sleepycat/collections/test/TestEnv.java
index 8c8c82537..a2331c7e6 100644
--- a/db/test/scr024/src/com/sleepycat/collections/test/TestEnv.java
+++ b/db/test/scr024/src/com/sleepycat/collections/test/TestEnv.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: TestEnv.java,v 12.4 2006/08/24 14:46:47 bostic Exp $
+ * $Id: TestEnv.java,v 12.6 2007/05/04 00:28:29 mark Exp $
*/
package com.sleepycat.collections.test;
diff --git a/db/test/scr024/src/com/sleepycat/collections/test/TestKeyAssigner.java b/db/test/scr024/src/com/sleepycat/collections/test/TestKeyAssigner.java
index 45297130d..ce3ee08cb 100644
--- a/db/test/scr024/src/com/sleepycat/collections/test/TestKeyAssigner.java
+++ b/db/test/scr024/src/com/sleepycat/collections/test/TestKeyAssigner.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: TestKeyAssigner.java,v 12.3 2006/08/24 14:46:47 bostic Exp $
+ * $Id: TestKeyAssigner.java,v 12.5 2007/05/04 00:28:29 mark Exp $
*/
package com.sleepycat.collections.test;
diff --git a/db/test/scr024/src/com/sleepycat/collections/test/TestKeyCreator.java b/db/test/scr024/src/com/sleepycat/collections/test/TestKeyCreator.java
index b5ae6e50d..2611886d2 100644
--- a/db/test/scr024/src/com/sleepycat/collections/test/TestKeyCreator.java
+++ b/db/test/scr024/src/com/sleepycat/collections/test/TestKeyCreator.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: TestKeyCreator.java,v 12.3 2006/08/24 14:46:47 bostic Exp $
+ * $Id: TestKeyCreator.java,v 12.5 2007/05/04 00:28:29 mark Exp $
*/
package com.sleepycat.collections.test;
diff --git a/db/test/scr024/src/com/sleepycat/collections/test/TestStore.java b/db/test/scr024/src/com/sleepycat/collections/test/TestStore.java
index 560fcd58c..88230dd11 100644
--- a/db/test/scr024/src/com/sleepycat/collections/test/TestStore.java
+++ b/db/test/scr024/src/com/sleepycat/collections/test/TestStore.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: TestStore.java,v 12.4 2006/08/24 14:46:47 bostic Exp $
+ * $Id: TestStore.java,v 12.6 2007/05/04 00:28:29 mark Exp $
*/
package com.sleepycat.collections.test;
@@ -267,11 +266,11 @@ class TestStore {
DbCompat.setReadUncommitted(config, true);
config.setTransactional(CurrentTransaction.getInstance(env) != null);
if (primary != null) {
- return DbCompat.openSecondaryDatabase(env, null,
+ return DbCompat.openSecondaryDatabase(env, null,
fileName, null,
primary, config);
} else {
- return DbCompat.openDatabase(env, null,
+ return DbCompat.openDatabase(env, null,
fileName, null,
config);
}
diff --git a/db/test/scr024/src/com/sleepycat/collections/test/TransactionTest.java b/db/test/scr024/src/com/sleepycat/collections/test/TransactionTest.java
index 63db15c31..c9b38c754 100644
--- a/db/test/scr024/src/com/sleepycat/collections/test/TransactionTest.java
+++ b/db/test/scr024/src/com/sleepycat/collections/test/TransactionTest.java
@@ -1,14 +1,14 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: TransactionTest.java,v 12.7 2006/08/24 14:46:47 bostic Exp $
+ * $Id: TransactionTest.java,v 12.9 2007/05/04 00:28:29 mark Exp $
*/
package com.sleepycat.collections.test;
+import java.io.File;
import java.util.Iterator;
import java.util.List;
import java.util.SortedSet;
@@ -30,7 +30,9 @@ import com.sleepycat.db.CursorConfig;
import com.sleepycat.db.Database;
import com.sleepycat.db.DatabaseConfig;
import com.sleepycat.db.DatabaseEntry;
+import com.sleepycat.db.DatabaseException;
import com.sleepycat.db.Environment;
+import com.sleepycat.db.EnvironmentConfig;
import com.sleepycat.db.Transaction;
import com.sleepycat.db.TransactionConfig;
import com.sleepycat.util.RuntimeExceptionWrapper;
@@ -200,7 +202,7 @@ public class TransactionTest extends TestCase {
DatabaseConfig dbConfig = new DatabaseConfig();
DbCompat.setTypeBtree(dbConfig);
dbConfig.setAllowCreate(true);
- Database db = DbCompat.openDatabase(env, null,
+ Database db = DbCompat.openDatabase(env, null,
dbName(1), null,
dbConfig);
map = new StoredSortedMap(db, testStore.getKeyBinding(),
@@ -214,7 +216,7 @@ public class TransactionTest extends TestCase {
//
dbConfig.setTransactional(true);
currentTxn.beginTransaction(null);
- db = DbCompat.openDatabase(env, currentTxn.getTransaction(),
+ db = DbCompat.openDatabase(env, currentTxn.getTransaction(),
dbName(2), null, dbConfig);
currentTxn.commitTransaction();
map = new StoredSortedMap(db, testStore.getKeyBinding(),
@@ -581,6 +583,7 @@ public class TransactionTest extends TestCase {
assertNull(currentTxn.getTransaction());
}
+
private synchronized void doReadUncommitted(StoredSortedMap dirtyMap)
throws Exception {
diff --git a/db/test/scr024/src/com/sleepycat/collections/test/serial/CatalogCornerCaseTest.java b/db/test/scr024/src/com/sleepycat/collections/test/serial/CatalogCornerCaseTest.java
index 455ffd745..d8dcc16ef 100644
--- a/db/test/scr024/src/com/sleepycat/collections/test/serial/CatalogCornerCaseTest.java
+++ b/db/test/scr024/src/com/sleepycat/collections/test/serial/CatalogCornerCaseTest.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: CatalogCornerCaseTest.java,v 12.3 2006/08/31 18:14:14 bostic Exp $
+ * $Id: CatalogCornerCaseTest.java,v 12.5 2007/05/04 00:28:29 mark Exp $
*/
package com.sleepycat.collections.test.serial;
diff --git a/db/test/scr024/src/com/sleepycat/collections/test/serial/StoredClassCatalogTest.java b/db/test/scr024/src/com/sleepycat/collections/test/serial/StoredClassCatalogTest.java
index d1a55ef7e..c9a36ab00 100644
--- a/db/test/scr024/src/com/sleepycat/collections/test/serial/StoredClassCatalogTest.java
+++ b/db/test/scr024/src/com/sleepycat/collections/test/serial/StoredClassCatalogTest.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: StoredClassCatalogTest.java,v 12.3 2006/08/31 18:14:14 bostic Exp $
+ * $Id: StoredClassCatalogTest.java,v 12.5 2007/05/04 00:28:29 mark Exp $
*/
package com.sleepycat.collections.test.serial;
diff --git a/db/test/scr024/src/com/sleepycat/collections/test/serial/StoredClassCatalogTestInit.java b/db/test/scr024/src/com/sleepycat/collections/test/serial/StoredClassCatalogTestInit.java
index a307457aa..7715a55b8 100644
--- a/db/test/scr024/src/com/sleepycat/collections/test/serial/StoredClassCatalogTestInit.java
+++ b/db/test/scr024/src/com/sleepycat/collections/test/serial/StoredClassCatalogTestInit.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: StoredClassCatalogTestInit.java,v 12.4 2006/08/31 18:14:14 bostic Exp $
+ * $Id: StoredClassCatalogTestInit.java,v 12.6 2007/05/04 00:28:29 mark Exp $
*/
package com.sleepycat.collections.test.serial;
diff --git a/db/test/scr024/src/com/sleepycat/collections/test/serial/TestSerial.java b/db/test/scr024/src/com/sleepycat/collections/test/serial/TestSerial.java
index aaaa13f78..df53912c0 100644
--- a/db/test/scr024/src/com/sleepycat/collections/test/serial/TestSerial.java
+++ b/db/test/scr024/src/com/sleepycat/collections/test/serial/TestSerial.java
@@ -1,14 +1,14 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: TestSerial.java,v 12.3 2006/08/31 18:14:14 bostic Exp $
+ * $Id: TestSerial.java,v 12.5 2007/05/04 00:28:29 mark Exp $
*/
package com.sleepycat.collections.test.serial;
/**
+ * @see StoredClassCatalogTest
* @author Mark Hayes
*/
class TestSerial implements java.io.Serializable {
diff --git a/db/test/scr024/src/com/sleepycat/collections/test/serial/TestSerial.java.original b/db/test/scr024/src/com/sleepycat/collections/test/serial/TestSerial.java.original
index 09aae7b99..54af697ce 100644
--- a/db/test/scr024/src/com/sleepycat/collections/test/serial/TestSerial.java.original
+++ b/db/test/scr024/src/com/sleepycat/collections/test/serial/TestSerial.java.original
@@ -1,13 +1,16 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2000-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2000,2007 Oracle. All rights reserved.
*
- * $Id: TestSerial.java.original,v 12.6 2006/08/31 18:14:14 bostic Exp $
+ * $Id: TestSerial.java.original,v 12.8 2007/05/04 00:28:29 mark Exp $
*/
package com.sleepycat.collections.test.serial;
+/**
+ * @see StoredClassCatalogTest
+ * @author Mark Hayes
+ */
class TestSerial implements java.io.Serializable
{
static final long serialVersionUID = -3738980000390384920L;
diff --git a/db/test/scr024/src/com/sleepycat/util/test/ExceptionWrapperTest.java b/db/test/scr024/src/com/sleepycat/util/test/ExceptionWrapperTest.java
index 3de6f02cb..a7914f095 100644
--- a/db/test/scr024/src/com/sleepycat/util/test/ExceptionWrapperTest.java
+++ b/db/test/scr024/src/com/sleepycat/util/test/ExceptionWrapperTest.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: ExceptionWrapperTest.java,v 12.4 2006/08/24 14:46:47 bostic Exp $
+ * $Id: ExceptionWrapperTest.java,v 12.6 2007/05/04 00:28:30 mark Exp $
*/
package com.sleepycat.util.test;
diff --git a/db/test/scr024/src/com/sleepycat/util/test/FastOutputStreamTest.java b/db/test/scr024/src/com/sleepycat/util/test/FastOutputStreamTest.java
index 0c6a9ea9a..2025702ec 100644
--- a/db/test/scr024/src/com/sleepycat/util/test/FastOutputStreamTest.java
+++ b/db/test/scr024/src/com/sleepycat/util/test/FastOutputStreamTest.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: FastOutputStreamTest.java,v 12.3 2006/08/24 14:46:47 bostic Exp $
+ * $Id: FastOutputStreamTest.java,v 12.5 2007/05/04 00:28:30 mark Exp $
*/
package com.sleepycat.util.test;
diff --git a/db/test/scr024/src/com/sleepycat/util/test/PackedIntegerTest.java b/db/test/scr024/src/com/sleepycat/util/test/PackedIntegerTest.java
index b9d7dc8a9..5a22ca9d9 100644
--- a/db/test/scr024/src/com/sleepycat/util/test/PackedIntegerTest.java
+++ b/db/test/scr024/src/com/sleepycat/util/test/PackedIntegerTest.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: PackedIntegerTest.java,v 1.2 2006/08/24 14:46:47 bostic Exp $
+ * $Id: PackedIntegerTest.java,v 1.4 2007/05/04 00:28:30 mark Exp $
*/
package com.sleepycat.util.test;
@@ -15,10 +14,14 @@ import junit.framework.TestCase;
public class PackedIntegerTest extends TestCase
{
- static final int V119 = 119;
- static final int BYTE_MAX = 0xFF;
- static final int SHORT_MAX = 0xFFFF;
- static final int THREE_MAX = 0xFFFFFF;
+ static final long V119 = 119L;
+ static final long MAX_1 = 0xFFL;
+ static final long MAX_2 = 0xFFFFL;
+ static final long MAX_3 = 0xFFFFFFL;
+ static final long MAX_4 = 0xFFFFFFFFL;
+ static final long MAX_5 = 0xFFFFFFFFFFL;
+ static final long MAX_6 = 0xFFFFFFFFFFFFL;
+ static final long MAX_7 = 0xFFFFFFFFFFFFFFL;
public static void main(String[] args)
throws Exception {
@@ -45,28 +48,70 @@ public class PackedIntegerTest extends TestCase
public void runTest() {
- testRange(-V119, V119, 1);
+ /* Packed int tests. */
- testRange(-BYTE_MAX - V119, -1 - V119, 2);
- testRange(1 + V119, BYTE_MAX + V119, 2);
+ testIntRange(-V119, V119, 1);
- testRange(-SHORT_MAX - V119, -SHORT_MAX + 99, 3);
- testRange(-BYTE_MAX - V119 - 99, -BYTE_MAX - V119 - 1, 3);
- testRange(BYTE_MAX + V119 + 1, BYTE_MAX + V119 + 99, 3);
- testRange(SHORT_MAX - 99, SHORT_MAX + V119, 3);
+ testIntRange(-MAX_1 - V119, -1 - V119, 2);
+ testIntRange(1 + V119, MAX_1 + V119, 2);
- testRange(-THREE_MAX - V119, -THREE_MAX + 99, 4);
- testRange(-SHORT_MAX - V119 - 99, -SHORT_MAX - V119 - 1, 4);
- testRange(SHORT_MAX + V119 + 1, SHORT_MAX + V119 + 99, 4);
- testRange(THREE_MAX - 99, THREE_MAX + V119, 4);
+ testIntRange(-MAX_2 - V119, -MAX_2 + 99, 3);
+ testIntRange(-MAX_1 - V119 - 99, -MAX_1 - V119 - 1, 3);
+ testIntRange(MAX_1 + V119 + 1, MAX_1 + V119 + 99, 3);
+ testIntRange(MAX_2 - 99, MAX_2 + V119, 3);
- testRange(Integer.MIN_VALUE, Integer.MIN_VALUE + 99, 5);
- testRange(Integer.MAX_VALUE - 99, Integer.MAX_VALUE, 5);
+ testIntRange(-MAX_3 - V119, -MAX_3 + 99, 4);
+ testIntRange(-MAX_2 - V119 - 99, -MAX_2 - V119 - 1, 4);
+ testIntRange(MAX_2 + V119 + 1, MAX_2 + V119 + 99, 4);
+ testIntRange(MAX_3 - 99, MAX_3 + V119, 4);
+
+ testIntRange(Integer.MIN_VALUE, Integer.MIN_VALUE + 99, 5);
+ testIntRange(Integer.MAX_VALUE - 99, Integer.MAX_VALUE, 5);
+
+ /* Packed long tests. */
+
+ testLongRange(-V119, V119, 1);
+
+ testLongRange(-MAX_1 - V119, -1 - V119, 2);
+ testLongRange(1 + V119, MAX_1 + V119, 2);
+
+ testLongRange(-MAX_2 - V119, -MAX_2 + 99, 3);
+ testLongRange(-MAX_1 - V119 - 99, -MAX_1 - V119 - 1, 3);
+ testLongRange(MAX_1 + V119 + 1, MAX_1 + V119 + 99, 3);
+ testLongRange(MAX_2 - 99, MAX_2 + V119, 3);
+
+ testLongRange(-MAX_3 - V119, -MAX_3 + 99, 4);
+ testLongRange(-MAX_2 - V119 - 99, -MAX_2 - V119 - 1, 4);
+ testLongRange(MAX_2 + V119 + 1, MAX_2 + V119 + 99, 4);
+ testLongRange(MAX_3 - 99, MAX_3 + V119, 4);
+
+ testLongRange(-MAX_4 - V119, -MAX_4 + 99, 5);
+ testLongRange(-MAX_3 - V119 - 99, -MAX_3 - V119 - 1, 5);
+ testLongRange(MAX_3 + V119 + 1, MAX_3 + V119 + 99, 5);
+ testLongRange(MAX_4 - 99, MAX_4 + V119, 5);
+
+ testLongRange(-MAX_5 - V119, -MAX_5 + 99, 6);
+ testLongRange(-MAX_4 - V119 - 99, -MAX_4 - V119 - 1, 6);
+ testLongRange(MAX_4 + V119 + 1, MAX_4 + V119 + 99, 6);
+ testLongRange(MAX_5 - 99, MAX_5 + V119, 6);
+
+ testLongRange(-MAX_6 - V119, -MAX_6 + 99, 7);
+ testLongRange(-MAX_5 - V119 - 99, -MAX_5 - V119 - 1, 7);
+ testLongRange(MAX_5 + V119 + 1, MAX_5 + V119 + 99, 7);
+ testLongRange(MAX_6 - 99, MAX_6 + V119, 7);
+
+ testLongRange(-MAX_7 - V119, -MAX_7 + 99, 8);
+ testLongRange(-MAX_6 - V119 - 99, -MAX_6 - V119 - 1, 8);
+ testLongRange(MAX_6 + V119 + 1, MAX_6 + V119 + 99, 8);
+ testLongRange(MAX_7 - 99, MAX_7 + V119, 8);
+
+ testLongRange(Long.MIN_VALUE, Long.MIN_VALUE + 99, 9);
+ testLongRange(Long.MAX_VALUE - 99, Long.MAX_VALUE - 1, 9);
}
- private void testRange(long firstValue,
- long lastValue,
- int bytesExpected) {
+ private void testIntRange(long firstValue,
+ long lastValue,
+ int bytesExpected) {
byte[] buf = new byte[1000];
int off = 0;
@@ -103,4 +148,44 @@ public class PackedIntegerTest extends TestCase
off += bytes;
}
}
+
+ private void testLongRange(long firstValue,
+ long lastValue,
+ int bytesExpected) {
+
+ byte[] buf = new byte[2000];
+ int off = 0;
+
+ for (long longI = firstValue; longI <= lastValue; longI += 1) {
+ long i = longI;
+ int before = off;
+ off = PackedInteger.writeLong(buf, off, i);
+ int bytes = off - before;
+ if (bytes != bytesExpected) {
+ fail("output of value=" + i + " bytes=" + bytes +
+ " bytesExpected=" + bytesExpected);
+ }
+ bytes = PackedInteger.getWriteLongLength(i);
+ if (bytes != bytesExpected) {
+ fail("count of value=" + i + " bytes=" + bytes +
+ " bytesExpected=" + bytesExpected);
+ }
+ }
+
+ off = 0;
+
+ for (long longI = firstValue; longI <= lastValue; longI += 1) {
+ long i = longI;
+ int bytes = PackedInteger.getReadLongLength(buf, off);
+ if (bytes != bytesExpected) {
+ fail("count of value=" + i + " bytes=" + bytes +
+ " bytesExpected=" + bytesExpected);
+ }
+ long value = PackedInteger.readLong(buf, off);
+ if (value != i) {
+ fail("input of value=" + i + " but got=" + value);
+ }
+ off += bytes;
+ }
+ }
}
diff --git a/db/test/scr024/src/com/sleepycat/util/test/UtfTest.java b/db/test/scr024/src/com/sleepycat/util/test/UtfTest.java
index 1b0b25fbc..e8b5ff015 100644
--- a/db/test/scr024/src/com/sleepycat/util/test/UtfTest.java
+++ b/db/test/scr024/src/com/sleepycat/util/test/UtfTest.java
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*
- * $Id: UtfTest.java,v 12.3 2006/08/24 14:46:47 bostic Exp $
+ * $Id: UtfTest.java,v 12.5 2007/05/04 00:28:30 mark Exp $
*/
package com.sleepycat.util.test;
diff --git a/db/test/scr026/chk.method b/db/test/scr026/chk.method
index b8aeb61fe..ab6eb2366 100644
--- a/db/test/scr026/chk.method
+++ b/db/test/scr026/chk.method
@@ -1,6 +1,6 @@
#!/bin/sh -
#
-# $Id: chk.method,v 12.3 2006/09/11 15:28:06 bostic Exp $
+# $Id: chk.method,v 12.6 2007/06/15 18:45:42 bostic Exp $
#
# Check that DB doesn't call DB or DB_ENV methods internally.
@@ -14,16 +14,16 @@ echo ========================================================
m=`grep '(\*[a-z][_a-z]*)' $d/dbinc/db.in |
sed -e 's/^[^(]*(\*//' \
-e 's/).*//' \
+ -e '/am_bulk/d' \
+ -e '/am_close/d' \
+ -e '/am_del/d' \
+ -e '/am_destroy/d' \
+ -e '/am_get/d' \
+ -e '/am_put/d' \
-e '/am_remove/d' \
-e '/am_rename/d' \
+ -e '/am_writelock/d' \
-e '/app_dispatch/d' \
- -e '/c_am_bulk/d' \
- -e '/c_am_close/d' \
- -e '/c_am_del/d' \
- -e '/c_am_destroy/d' \
- -e '/c_am_get/d' \
- -e '/c_am_put/d' \
- -e '/c_am_writelock/d' \
-e '/db_append_recno/d' \
-e '/db_errcall/d' \
-e '/db_event_func/d' \
@@ -52,6 +52,7 @@ sed \
-e '/^db185\//d' \
-e '/^db_archive\//d' \
-e '/^db_checkpoint\//d' \
+ -e '/^db_codegen\//d' \
-e '/^db_deadlock\//d' \
-e '/^db_dump185\//d' \
-e '/^db_dump\//d' \
@@ -86,10 +87,12 @@ sed \
-e '/db_iface.c:.*(txn->commit(txn, nosync ? DB_TXN_NOSYNC : 0));/d' \
-e '/db_iface.c:.*if ((t_ret = txn->abort(txn)) != 0)/d' \
-e '/db_iface.c:.*return (dbenv->txn_begin(dbenv, NULL, txnidp, 0));/d' \
+ -e '/db_iface.c:.*return (dbp->get(dbp, txn, key, &data, flags));/d' \
-e '/dbenv->is_alive(/d' \
-e '/dbenv->thread_id(/d' \
-e '/dbenv->thread_id_string(/d' \
-e '/rep_util.c:.*ret = dbenv->rep_send(/d' \
+ -e '/test_mutex.c:/d' \
>$t
test -s $t && {
diff --git a/db/test/scr030/chk.build b/db/test/scr030/chk.build
index 729f2fde7..82ed3dfc1 100644
--- a/db/test/scr030/chk.build
+++ b/db/test/scr030/chk.build
@@ -1,6 +1,6 @@
#!/bin/sh -
#
-# $Id: chk.build,v 12.6 2006/09/16 13:16:07 bostic Exp $
+# $Id: chk.build,v 12.10 2007/05/21 13:14:20 bostic Exp $
#
# Build a program that calls the run-time API configuration functions.
@@ -13,19 +13,23 @@ trap 'rm -rf scr030 ; exit 1' 1 2 3 13 15
}
# Flags to build Java.
-JAVA_HOME=/usr/local/linux-sun-jdk1.4.2
-JAVA_FLAGS="-I$JAVA_HOME/include -I$JAVA_HOME/include/linux"
+JAVA_INC=/usr/local/diablo-jdk1.5.0/include
+JAVA_FLAGS="-I$JAVA_INC -I$JAVA_INC/linux -I$JAVA_INC/freebsd"
# Configure and build.
# $1: config flags
config()
{
- echo "run: $1: $dir (`date`)" | tee CONFIGURATION
+ (echo `date`; echo "run: $1: $dir") | tee CONFIGURATION
../../../dist/configure $1 > config.OUT 2>&1
if test $? -ne 0; then
echo "$i: FAILED in configure"
- return
+ return 1
+ fi
+
+ if `echo "$1" | grep disable-statistics > /dev/null`; then
+ echo '#define __TEST_DB_NO_STATISTICS 1' >> db_config.h
fi
(echo /^CFLAGS=/ &&
@@ -35,11 +39,13 @@ config()
's/-c /-c -W -Werror -Wall -Wpointer-arith -Wmissing-prototypes /' &&
# Warnings are fatal errors, so don't set gcc warning flags for files
# where we can't avoid warnings.
- echo '/^db_server_svc.*: db_server_svc.c$/' &&
+ echo '/^db_server_svc.*: .*db_server_svc.c$/' &&
+ echo '+1s/\$(CFLAGS)/-c \$(CPPFLAGS)/' &&
+ echo '/^db_server_util.*: .*db_server_util.c$/' &&
echo '+1s/\$(CFLAGS)/-c \$(CPPFLAGS)/' &&
- echo '/^db_server_xdr.*: db_server_xdr.c$/' &&
+ echo '/^db_server_xdr.*: .*db_server_xdr.c$/' &&
echo '+1s/\$(CFLAGS)/-c \$(CPPFLAGS)/' &&
- echo '/^gen_db_server.*: gen_db_server.c$/' &&
+ echo '/^gen_db_server.*: .*gen_db_server.c$/' &&
echo '+1s/\$(CFLAGS)/-c \$(CPPFLAGS)/' &&
echo '/^db_java_wrap.*: .*db_java_wrap.c$/' &&
echo '+1s/\$(CFLAGS)/-c \$(CPPFLAGS)/' &&
@@ -57,7 +63,14 @@ config()
echo q) | ed Makefile > /dev/null
fi
- make > mklog 2>&1
+ make > mklog 2>&1 && make ex_access >> mklog 2>&1
+ if test $? -ne 0; then
+ echo "$i: FAILED in make"
+ return 1
+ fi
+
+ (echo a; echo b; echo c) | ./ex_access > /dev/null 2>&1
+ return $?
}
# Run a test.
@@ -80,6 +93,7 @@ s="\
--disable-cryptography \
--disable-hash \
--disable-largefile \
+--disable-mutexsupport \
--disable-queue \
--disable-replication \
--disable-statistics \
diff --git a/db/test/scr031/chk.xa b/db/test/scr031/chk.xa
index 4392ce20b..3ebb86058 100644
--- a/db/test/scr031/chk.xa
+++ b/db/test/scr031/chk.xa
@@ -224,7 +224,7 @@ for i in $dlist; do
}
done
flist="bin/buildclient bin/buildserver bin/buildtms bin/tmadmin bin/tmboot
- bin/tmloadcf bin/tmshutdown lib/libtux.so udataobj/RM"
+ bin/tmloadcf bin/tmshutdown udataobj/RM"
for i in $flist; do
test -f $TUXDIR/$i || {
echo "FAIL: check the Tuxedo install"
@@ -232,17 +232,24 @@ for i in $flist; do
exit 1
}
done
+msg "Using Tuxedo $TUXDIR installation"
# Set the location of the Berkeley DB libraries -- allow the user to override.
# Check to make sure we have a Berkeley DB installation. (I'd like to use the
# local DB installation, but I've never been able to make Tuxedo load shared
# libraries from the .libs directory.)
-test -z "$DB_INSTALL" && DB_INSTALL=/usr/local/BerkeleyDB.4.5
-export DB_INSTALL
+REL=../../dist/RELEASE
+test -z "$DB_INSTALL" && test -f $REL && {
+ . $REL
+ DB_INSTALL=/usr/local/BerkeleyDB.${DB_VERSION_MAJOR}.${DB_VERSION_MINOR}
+ export DB_INSTALL
+}
if test -f "$DB_INSTALL/lib/libdb.so"; then
msg "Using Berkeley DB $DB_INSTALL/lib/ installation"
else
echo "FAIL: $DB_INSTALL/lib/libdb.so not found"
+ echo \
+ "FAIL: DB_INSTALL must be set to the absolute path of the Berkeley DB install"
exit 1
fi
diff --git a/db/test/scr031/src/client.c b/db/test/scr031/src/client.c
index cdb71511a..efd731c48 100644
--- a/db/test/scr031/src/client.c
+++ b/db/test/scr031/src/client.c
@@ -83,7 +83,7 @@ main(int argc, char* argv[])
printf("%s: tpinit() OK\n", progname);
/* Allocate init buffer */
- if((initBuf = (TPINIT *)tpalloc("TPINIT", NULL, TPINITNEED(0))) == 0)
+ if ((initBuf = (TPINIT *)tpalloc("TPINIT", NULL, TPINITNEED(0))) == 0)
goto tuxedo_err;
if (verbose)
printf("%s: tpalloc(\"TPINIT\") OK\n", progname);
diff --git a/db/test/scr031/src/hcommonxa.h b/db/test/scr031/src/hcommonxa.h
index 0623c262f..d86a38c5e 100644
--- a/db/test/scr031/src/hcommonxa.h
+++ b/db/test/scr031/src/hcommonxa.h
@@ -1,8 +1,8 @@
#ifndef HCOMMONXA_H
-#define HCOMMONXA_H
+#define HCOMMONXA_H
-#define HERR_SYS_CUR 102
-#define HERR_TUX_CUR 103
-#define HERR_FML_CUR 104
+#define HERR_SYS_CUR 102
+#define HERR_TUX_CUR 103
+#define HERR_FML_CUR 104
#endif
diff --git a/db/test/scr031/src/hdbrec.h b/db/test/scr031/src/hdbrec.h
index bc947217c..16932f608 100644
--- a/db/test/scr031/src/hdbrec.h
+++ b/db/test/scr031/src/hdbrec.h
@@ -1,5 +1,5 @@
#ifndef HDBREC_H
-#define HDBREC_H
+#define HDBREC_H
#include "htimestampxa.h"
diff --git a/db/test/scr031/src/htimestampxa.h b/db/test/scr031/src/htimestampxa.h
index 338bc55b8..975b315e7 100644
--- a/db/test/scr031/src/htimestampxa.h
+++ b/db/test/scr031/src/htimestampxa.h
@@ -1,5 +1,5 @@
#ifndef HTIMESTAMPXA_H
-#define HTIMESTAMPXA_H
+#define HTIMESTAMPXA_H
/*
* Timestamp with microseconds precision
diff --git a/db/test/scr031/src/server.c b/db/test/scr031/src/server.c
index 4353ee926..386e506fb 100644
--- a/db/test/scr031/src/server.c
+++ b/db/test/scr031/src/server.c
@@ -258,7 +258,7 @@ fml_err: fprintf(stderr, "%s: FML ERROR: %s (code %d)\n",
*/
if (rand() % 10 > 7) {
if (verbose)
- printf("%s: %s: commit\n", progname, TXN_STRING);
+ printf("%s: %s: commit\n", progname, TXN_STRING);
tpreturn(TPSUCCESS, 0L, 0, 0L, 0);
} else {
if (verbose)
diff --git a/db/test/scr033/chk.codegen b/db/test/scr033/chk.codegen
new file mode 100644
index 000000000..3a0ef136a
--- /dev/null
+++ b/db/test/scr033/chk.codegen
@@ -0,0 +1,43 @@
+#!/bin/sh -
+#
+# $Id: chk.codegen,v 1.4 2007/05/01 17:44:31 bostic Exp $
+#
+# Check to make sure that the db_codegen examples build and compile.
+
+d=../../db_codegen
+
+[ -d $d ] || {
+ echo 'FAIL: cannot find db_codegen source directory.'
+ exit 1
+}
+(cd .. && make db_codegen > /dev/null) || {
+ echo 'FAIL: unable to build db_codgen'
+ exit 1
+}
+
+for i in `find $d -name 'example[0-9]*'` ; do
+ echo " example $i"
+ rm -rf BUILD && mkdir BUILD && cd BUILD
+ if ../../db_codegen -a c -i ../$i; then
+ :
+ else
+ echo "FAIL: failed to load $i"
+ exit 1
+ fi
+ if cc -DBUILD_STANDALONE -pthread \
+ -Wall -Werror -I../.. application.c ../../libdb.a -o t; then
+ :
+ else
+ echo "FAIL: failed to compile $i"
+ exit 1
+ fi
+ if ./t ; then
+ :
+ else
+ echo "FAIL: failed to run $i"
+ exit 1
+ fi
+ cd ..
+done
+
+exit 0
diff --git a/db/test/sdb001.tcl b/db/test/sdb001.tcl
index d4f6e2b48..f7fe69cc6 100644
--- a/db/test/sdb001.tcl
+++ b/db/test/sdb001.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: sdb001.tcl,v 12.3 2006/08/24 14:46:38 bostic Exp $
+# $Id: sdb001.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# TEST sdb001 Tests mixing db and subdb operations
# TEST Tests mixing db and subdb operations
diff --git a/db/test/sdb002.tcl b/db/test/sdb002.tcl
index 7c396b2c7..26079023e 100644
--- a/db/test/sdb002.tcl
+++ b/db/test/sdb002.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: sdb002.tcl,v 12.3 2006/08/24 14:46:38 bostic Exp $
+# $Id: sdb002.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# TEST sdb002
# TEST Tests basic subdb functionality
diff --git a/db/test/sdb003.tcl b/db/test/sdb003.tcl
index 5af8f1e6c..8cac57fc7 100644
--- a/db/test/sdb003.tcl
+++ b/db/test/sdb003.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: sdb003.tcl,v 12.3 2006/08/24 14:46:39 bostic Exp $
+# $Id: sdb003.tcl,v 12.8 2007/07/05 20:48:30 carol Exp $
#
# TEST sdb003
# TEST Tests many subdbs
@@ -28,6 +27,7 @@ proc sdb003 { method {nentries 1000} args } {
puts "Subdb003: $method ($args) many subdb tests"
set txnenv 0
+ set rpcenv 0
set eindex [lsearch -exact $args "-env"]
#
# If we are using an env, then testfile should just be the db name.
@@ -39,6 +39,7 @@ proc sdb003 { method {nentries 1000} args } {
set testfile subdb003.db
incr eindex
set env [lindex $args $eindex]
+ set rpcenv [is_rpcenv $env]
set txnenv [is_txnenv $env]
if { $txnenv == 1 } {
append args " -auto_commit "
@@ -70,9 +71,12 @@ proc sdb003 { method {nentries 1000} args } {
set ndataent 10
set fdid [open $dict]
while { [gets $fdid str] != -1 && $fcount < $nentries } {
- if { $str == "" } {
+ # Unlike the standard API, RPC doesn't support empty
+ # database names. [#15600]
+ if { $str == "" && $rpcenv == 1 } {
continue
}
+
set subdb $str
set db [eval {berkdb_open -create -mode 0644} \
$args {$omethod $testfile $subdb}]
diff --git a/db/test/sdb004.tcl b/db/test/sdb004.tcl
index 03f4a253a..466e18a7c 100644
--- a/db/test/sdb004.tcl
+++ b/db/test/sdb004.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: sdb004.tcl,v 12.3 2006/08/24 14:46:39 bostic Exp $
+# $Id: sdb004.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# TEST sdb004
# TEST Tests large subdb names
diff --git a/db/test/sdb005.tcl b/db/test/sdb005.tcl
index 68acc2b8c..4a4abca9e 100644
--- a/db/test/sdb005.tcl
+++ b/db/test/sdb005.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: sdb005.tcl,v 12.3 2006/08/24 14:46:39 bostic Exp $
+# $Id: sdb005.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# TEST sdb005
# TEST Tests cursor operations in subdbs
diff --git a/db/test/sdb006.tcl b/db/test/sdb006.tcl
index 89ee6a747..917f5f6f4 100644
--- a/db/test/sdb006.tcl
+++ b/db/test/sdb006.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: sdb006.tcl,v 12.3 2006/08/24 14:46:39 bostic Exp $
+# $Id: sdb006.tcl,v 12.5 2007/05/17 15:15:55 bostic Exp $
#
# TEST sdb006
# TEST Tests intra-subdb join
diff --git a/db/test/sdb007.tcl b/db/test/sdb007.tcl
index 6ad1a6488..ac178759d 100644
--- a/db/test/sdb007.tcl
+++ b/db/test/sdb007.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: sdb007.tcl,v 12.5 2006/08/24 14:46:39 bostic Exp $
+# $Id: sdb007.tcl,v 12.7 2007/05/17 15:15:56 bostic Exp $
#
# TEST sdb007
# TEST Tests page size difference errors between subdbs.
diff --git a/db/test/sdb008.tcl b/db/test/sdb008.tcl
index 1277deb04..4ca138752 100644
--- a/db/test/sdb008.tcl
+++ b/db/test/sdb008.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: sdb008.tcl,v 12.3 2006/08/24 14:46:39 bostic Exp $
+# $Id: sdb008.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST sdb008
# TEST Tests explicit setting of lorders for subdatabases -- the
diff --git a/db/test/sdb009.tcl b/db/test/sdb009.tcl
index 3e4541c0d..fcde1dab2 100644
--- a/db/test/sdb009.tcl
+++ b/db/test/sdb009.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2000-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2000,2007 Oracle. All rights reserved.
#
-# $Id: sdb009.tcl,v 12.3 2006/08/24 14:46:39 bostic Exp $
+# $Id: sdb009.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST sdb009
# TEST Test DB->rename() method for subdbs
diff --git a/db/test/sdb010.tcl b/db/test/sdb010.tcl
index 5c3602907..c4e554e43 100644
--- a/db/test/sdb010.tcl
+++ b/db/test/sdb010.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2000-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2000,2007 Oracle. All rights reserved.
#
-# $Id: sdb010.tcl,v 12.4 2006/08/24 14:46:39 bostic Exp $
+# $Id: sdb010.tcl,v 12.6 2007/05/17 15:15:56 bostic Exp $
#
# TEST sdb010
# TEST Test DB->remove() method and DB->truncate() for subdbs
diff --git a/db/test/sdb011.tcl b/db/test/sdb011.tcl
index 9690de261..0f3a590b3 100644
--- a/db/test/sdb011.tcl
+++ b/db/test/sdb011.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: sdb011.tcl,v 12.3 2006/08/24 14:46:39 bostic Exp $
+# $Id: sdb011.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST sdb011
# TEST Test deleting Subdbs with overflow pages
diff --git a/db/test/sdb012.tcl b/db/test/sdb012.tcl
index 19ba276bd..11c8909bc 100644
--- a/db/test/sdb012.tcl
+++ b/db/test/sdb012.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: sdb012.tcl,v 12.5 2006/08/24 14:46:39 bostic Exp $
+# $Id: sdb012.tcl,v 12.7 2007/05/17 15:15:56 bostic Exp $
#
# TEST sdb012
# TEST Test subdbs with locking and transactions
diff --git a/db/test/sdb013.tcl b/db/test/sdb013.tcl
index 3580b00b0..611345d31 100644
--- a/db/test/sdb013.tcl
+++ b/db/test/sdb013.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: sdb013.tcl,v 12.10 2006/08/24 14:46:39 bostic Exp $
+# $Id: sdb013.tcl,v 12.12 2007/05/17 15:15:56 bostic Exp $
#
# TEST sdb013
# TEST Tests in-memory subdatabases.
diff --git a/db/test/sdb014.tcl b/db/test/sdb014.tcl
index 74228c3bc..9e102776e 100644
--- a/db/test/sdb014.tcl
+++ b/db/test/sdb014.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: sdb014.tcl,v 12.9 2006/08/24 14:46:39 bostic Exp $
+# $Id: sdb014.tcl,v 12.11 2007/05/17 15:15:56 bostic Exp $
#
# TEST sdb014
# TEST Tests mixing in-memory named and in-memory unnamed dbs.
diff --git a/db/test/sdb015.tcl b/db/test/sdb015.tcl
index 1b1069287..3b0209dea 100644
--- a/db/test/sdb015.tcl
+++ b/db/test/sdb015.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: sdb015.tcl,v 12.7 2006/08/24 14:46:39 bostic Exp $
+# $Id: sdb015.tcl,v 12.9 2007/05/17 15:15:56 bostic Exp $
#
# TEST sdb015
# TEST Tests basic in-memory named database functionality
diff --git a/db/test/sdb016.tcl b/db/test/sdb016.tcl
index c96dce4e4..ff2c22b11 100644
--- a/db/test/sdb016.tcl
+++ b/db/test/sdb016.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2004-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2004,2007 Oracle. All rights reserved.
#
-# $Id: sdb016.tcl,v 12.9 2006/08/24 14:46:39 bostic Exp $
+# $Id: sdb016.tcl,v 12.11 2007/05/17 15:15:56 bostic Exp $
#
# TEST sdb016
# TEST Creates many in-memory named dbs and puts a small amount of
diff --git a/db/test/sdb017.tcl b/db/test/sdb017.tcl
index 0f2af0f3e..3a94ff574 100644
--- a/db/test/sdb017.tcl
+++ b/db/test/sdb017.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2004-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2004,2007 Oracle. All rights reserved.
#
-# $Id: sdb017.tcl,v 12.6 2006/08/24 14:46:39 bostic Exp $
+# $Id: sdb017.tcl,v 12.8 2007/05/17 15:15:56 bostic Exp $
#
# TEST sdb017
# TEST Test DB->rename() for in-memory named databases.
diff --git a/db/test/sdb018.tcl b/db/test/sdb018.tcl
index ee6d9a9ad..9db92d25a 100644
--- a/db/test/sdb018.tcl
+++ b/db/test/sdb018.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: sdb018.tcl,v 12.6 2006/08/24 14:46:39 bostic Exp $
+# $Id: sdb018.tcl,v 12.8 2007/05/17 15:15:56 bostic Exp $
#
# TEST sdb018
# TEST Tests join of in-memory named databases.
diff --git a/db/test/sdb019.tcl b/db/test/sdb019.tcl
index 3a44f4ad9..f6d6f5306 100644
--- a/db/test/sdb019.tcl
+++ b/db/test/sdb019.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: sdb019.tcl,v 12.7 2006/09/13 14:54:13 carol Exp $
+# $Id: sdb019.tcl,v 12.9 2007/05/17 15:15:56 bostic Exp $
#
# TEST sdb019
# TEST Tests in-memory subdatabases.
diff --git a/db/test/sdb020.tcl b/db/test/sdb020.tcl
index 7b4813e2e..8ef1b5f36 100644
--- a/db/test/sdb020.tcl
+++ b/db/test/sdb020.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: sdb020.tcl,v 12.6 2006/08/24 14:46:39 bostic Exp $
+# $Id: sdb020.tcl,v 12.8 2007/05/17 15:15:56 bostic Exp $
#
# TEST sdb020
# TEST Tests in-memory subdatabases.
diff --git a/db/test/sdbscript.tcl b/db/test/sdbscript.tcl
index 61a8d54a7..7425ed33b 100644
--- a/db/test/sdbscript.tcl
+++ b/db/test/sdbscript.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: sdbscript.tcl,v 12.3 2006/08/24 14:46:39 bostic Exp $
+# $Id: sdbscript.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# Usage: subdbscript testfile subdbnumber factor
# testfile: name of DB itself
diff --git a/db/test/sdbtest001.tcl b/db/test/sdbtest001.tcl
index a71ee5c94..5aaea2934 100644
--- a/db/test/sdbtest001.tcl
+++ b/db/test/sdbtest001.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: sdbtest001.tcl,v 12.3 2006/08/24 14:46:39 bostic Exp $
+# $Id: sdbtest001.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST sdbtest001
# TEST Tests multiple access methods in one subdb
diff --git a/db/test/sdbtest002.tcl b/db/test/sdbtest002.tcl
index cd41e7740..c3b6d335f 100644
--- a/db/test/sdbtest002.tcl
+++ b/db/test/sdbtest002.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: sdbtest002.tcl,v 12.4 2006/08/24 14:46:39 bostic Exp $
+# $Id: sdbtest002.tcl,v 12.6 2007/05/17 15:15:56 bostic Exp $
#
# TEST sdbtest002
# TEST Tests multiple access methods in one subdb access by multiple
diff --git a/db/test/sdbutils.tcl b/db/test/sdbutils.tcl
index f6065ed1d..73705fbbc 100644
--- a/db/test/sdbutils.tcl
+++ b/db/test/sdbutils.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: sdbutils.tcl,v 12.4 2006/08/24 14:46:39 bostic Exp $
+# $Id: sdbutils.tcl,v 12.6 2007/05/17 15:15:56 bostic Exp $
#
proc build_all_subdb { dbname methods psize dups {nentries 100} {dbargs ""}} {
set nsubdbs [llength $dups]
diff --git a/db/test/sec001.tcl b/db/test/sec001.tcl
index 272ddccae..db9901033 100644
--- a/db/test/sec001.tcl
+++ b/db/test/sec001.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: sec001.tcl,v 12.3 2006/08/24 14:46:39 bostic Exp $
+# $Id: sec001.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST sec001
# TEST Test of security interface
diff --git a/db/test/sec002.tcl b/db/test/sec002.tcl
index 9d986eff2..c5d5bc245 100644
--- a/db/test/sec002.tcl
+++ b/db/test/sec002.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: sec002.tcl,v 12.3 2006/08/24 14:46:39 bostic Exp $
+# $Id: sec002.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST sec002
# TEST Test of security interface and catching errors in the
diff --git a/db/test/shelltest.tcl b/db/test/shelltest.tcl
index b163c28c2..c53f9ac95 100644
--- a/db/test/shelltest.tcl
+++ b/db/test/shelltest.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2001-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2001,2007 Oracle. All rights reserved.
#
-# $Id: shelltest.tcl,v 12.6 2006/08/24 14:46:39 bostic Exp $
+# $Id: shelltest.tcl,v 12.10 2007/05/17 15:15:56 bostic Exp $
#
# TEST scr###
# TEST The scr### directories are shell scripts that test a variety of
@@ -84,6 +83,7 @@ proc scr012 {} { shelltest 12 }
proc scr013 {} { shelltest 13 }
proc scr014 {} { shelltest 14 }
proc scr015 {} { shelltest 15 }
+proc scr016 {} { shelltest 16 }
proc scr017 {} { shelltest 17 }
proc scr018 {} { shelltest 18 }
proc scr019 {} { shelltest 19 }
@@ -100,3 +100,4 @@ proc scr029 {} { shelltest 29 }
proc scr030 {} { shelltest 30 }
proc scr031 {} { shelltest 31 }
proc scr032 {} { shelltest 32 }
+proc scr033 {} { shelltest 33 }
diff --git a/db/test/si001.tcl b/db/test/si001.tcl
index 017d525a2..b46f4e78d 100644
--- a/db/test/si001.tcl
+++ b/db/test/si001.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2001-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2001,2007 Oracle. All rights reserved.
#
-# $Id: si001.tcl,v 12.11 2006/08/24 14:46:39 bostic Exp $
+# $Id: si001.tcl,v 12.13 2007/05/17 15:15:56 bostic Exp $
#
# TEST si001
# TEST Secondary index put/delete with lorder test
diff --git a/db/test/si002.tcl b/db/test/si002.tcl
index 9f2f64df3..0a2942a7f 100644
--- a/db/test/si002.tcl
+++ b/db/test/si002.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2001-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2001,2007 Oracle. All rights reserved.
#
-# $Id: si002.tcl,v 12.8 2006/08/24 14:46:39 bostic Exp $
+# $Id: si002.tcl,v 12.13 2007/06/18 14:50:03 carol Exp $
#
# TEST si002
# TEST Basic cursor-based secondary index put/delete test
@@ -91,11 +90,14 @@ proc si002 { methods {nentries 200} {tnum "002"} args } {
lappend sdbs $sdb
}
- puts "\tSi$tnum.a: Cursor put (-keyfirst/-keylast) loop"
set did [open $dict]
+
+ # Populate with a cursor, exercising keyfirst/keylast.
+ puts "\tSi$tnum.a: Cursor put (-keyfirst/-keylast) loop"
set pdbc [$pdb cursor]
error_check_good pdb_cursor [is_valid_cursor $pdbc $pdb] TRUE
for { set n 0 } { [gets $did str] != -1 && $n < $nentries } { incr n } {
+
if { [is_record_based $pmethod] == 1 } {
set key [expr $n + 1]
set datum $str
@@ -103,6 +105,7 @@ proc si002 { methods {nentries 200} {tnum "002"} args } {
set key $str
gets $did datum
}
+
set ns($key) $n
set keys($n) $key
set data($n) [pad_data $pmethod $datum]
@@ -117,8 +120,9 @@ proc si002 { methods {nentries 200} {tnum "002"} args } {
{$key [chop_data $pmethod $datum]}]
error_check_good put($n) $ret 0
}
- close $did
error_check_good pdbc_close [$pdbc close] 0
+
+ close $did
check_secondaries $pdb $sdbs $nentries keys data "Si$tnum.a"
puts "\tSi$tnum.b: Cursor put overwrite (-current) loop"
diff --git a/db/test/si003.tcl b/db/test/si003.tcl
index 3e2419628..75b9fd38f 100644
--- a/db/test/si003.tcl
+++ b/db/test/si003.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2001-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2001,2007 Oracle. All rights reserved.
#
-# $Id: si003.tcl,v 12.8 2006/08/24 14:46:39 bostic Exp $
+# $Id: si003.tcl,v 12.10 2007/05/17 15:15:56 bostic Exp $
#
# TEST si003
# TEST si001 with secondaries created and closed mid-test
diff --git a/db/test/si004.tcl b/db/test/si004.tcl
index 51346b3b7..8d1c51c15 100644
--- a/db/test/si004.tcl
+++ b/db/test/si004.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2001-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2001,2007 Oracle. All rights reserved.
#
-# $Id: si004.tcl,v 12.8 2006/08/24 14:46:39 bostic Exp $
+# $Id: si004.tcl,v 12.13 2007/06/18 14:50:03 carol Exp $
#
# TEST si004
# TEST si002 with secondaries created and closed mid-test
@@ -79,12 +78,14 @@ proc si004 { methods {nentries 200} {tnum "004"} args } {
set pdb [eval {berkdb_open -create -env} $env $pomethod $pargs $pname]
error_check_good primary_open [is_valid_db $pdb] TRUE
+ # Populate with a cursor put, exercising keyfirst/keylast.
+ set did [open $dict]
puts -nonewline \
"\tSi$tnum.a: Cursor put (-keyfirst/-keylast) loop ... "
- set did [open $dict]
set pdbc [$pdb cursor]
error_check_good pdb_cursor [is_valid_cursor $pdbc $pdb] TRUE
- for { set n 0 } { [gets $did str] != -1 && $n < $nentries } { incr n } {
+ for { set n 0 } \
+ { [gets $did str] != -1 && $n < $nentries } { incr n } {
if { [is_record_based $pmethod] == 1 } {
set key [expr $n + 1]
set datum $str
@@ -92,6 +93,7 @@ proc si004 { methods {nentries 200} {tnum "004"} args } {
set key $str
gets $did datum
}
+
set ns($key) $n
set keys($n) $key
set data($n) [pad_data $pmethod $datum]
@@ -106,8 +108,8 @@ proc si004 { methods {nentries 200} {tnum "004"} args } {
{$key [chop_data $pmethod $datum]}]
error_check_good put($n) $ret 0
}
- close $did
error_check_good pdbc_close [$pdbc close] 0
+ close $did
# Open and associate the secondaries
set sdbs {}
diff --git a/db/test/si005.tcl b/db/test/si005.tcl
index 73b3ba1cf..df8a3be2a 100644
--- a/db/test/si005.tcl
+++ b/db/test/si005.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2001-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2001,2007 Oracle. All rights reserved.
#
-# $Id: si005.tcl,v 12.8 2006/08/24 14:46:39 bostic Exp $
+# $Id: si005.tcl,v 12.10 2007/05/17 15:15:56 bostic Exp $
#
# TEST si005
# TEST Basic secondary index put/delete test with transactions
diff --git a/db/test/si006.tcl b/db/test/si006.tcl
index a905c4cb9..8539cd0dd 100644
--- a/db/test/si006.tcl
+++ b/db/test/si006.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2001-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2001,2007 Oracle. All rights reserved.
#
-# $Id: si006.tcl,v 12.6 2006/08/24 14:46:39 bostic Exp $
+# $Id: si006.tcl,v 12.8 2007/05/17 15:15:56 bostic Exp $
#
# TEST si006
# TEST
diff --git a/db/test/si007.tcl b/db/test/si007.tcl
index f286321ab..bb2fbd88f 100644
--- a/db/test/si007.tcl
+++ b/db/test/si007.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2001-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2001,2007 Oracle. All rights reserved.
#
-# $Id: si007.tcl,v 12.6 2006/08/24 14:46:39 bostic Exp $
+# $Id: si007.tcl,v 12.8 2007/05/17 15:15:56 bostic Exp $
#
# TEST si007
# TEST Secondary index put/delete with lorder test
diff --git a/db/test/si008.tcl b/db/test/si008.tcl
index 859bd1215..4b42f2da6 100644
--- a/db/test/si008.tcl
+++ b/db/test/si008.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2005-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2005,2007 Oracle. All rights reserved.
#
-# $Id: si008.tcl,v 12.7 2006/08/24 14:46:39 bostic Exp $
+# $Id: si008.tcl,v 12.9 2007/05/17 15:15:56 bostic Exp $
#
# TEST si008
# TEST Secondary index put/delete with lorder test
diff --git a/db/test/sijointest.tcl b/db/test/sijointest.tcl
index b9603d115..2e1d55066 100644
--- a/db/test/sijointest.tcl
+++ b/db/test/sijointest.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2001-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2001,2007 Oracle. All rights reserved.
#
-# $Id: sijointest.tcl,v 12.4 2006/08/24 14:46:39 bostic Exp $
+# $Id: sijointest.tcl,v 12.6 2007/05/17 15:15:56 bostic Exp $
#
# TEST sijointest: Secondary index and join test.
# TEST This used to be si005.tcl.
diff --git a/db/test/siutils.tcl b/db/test/siutils.tcl
index 09139dc74..9f68c56da 100644
--- a/db/test/siutils.tcl
+++ b/db/test/siutils.tcl
@@ -1,9 +1,8 @@
#See the file LICENSE for redistribution information.
#
-# Copyright (c) 2001-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2001,2007 Oracle. All rights reserved.
#
-# $Id: siutils.tcl,v 12.3 2006/08/24 14:46:39 bostic Exp $
+# $Id: siutils.tcl,v 12.6 2007/05/17 15:15:56 bostic Exp $
#
# Secondary index utilities. This file used to be known as
# sindex.tcl.
@@ -36,17 +35,28 @@ proc callback_n { n } {
4 { return _s_reverseconcat }
5 { return _s_truncdata }
6 { return _s_constant }
+ 7 { return _s_twokeys }
+ 8 { return _s_variablekeys }
}
return _s_noop
}
+proc _s_noop { a b } { return $b }
proc _s_reversedata { a b } { return [reverse $b] }
proc _s_truncdata { a b } { return [string range $b 1 end] }
proc _s_concatkeydata { a b } { return $a$b }
proc _s_concatdatakey { a b } { return $b$a }
proc _s_reverseconcat { a b } { return [reverse $a$b] }
-proc _s_constant { a b } { return "constant data" }
-proc _s_noop { a b } { return $b }
+proc _s_constant { a b } { return "constant-data" }
+proc _s_twokeys { a b } { return [list 1 2] }
+proc _s_variablekeys { a b } {
+ set rlen [string length $b]
+ set result {}
+ for {set i 0} {$i < $rlen} {incr i} {
+ lappend $result $i
+ }
+ return $result
+}
# Should the check_secondary routines print lots of output?
set verbose_check_secondaries 0
@@ -77,7 +87,7 @@ proc check_secondaries { pdb sdbs nentries keyarr dataarr {pref "Check"} \
puts "\t\t$pref.1: Each key/data pair is in the primary"
}
for { set i 0 } { $i < $nentries } { incr i } {
- if { [string compare $errp NONE] == 0 } {
+ if { [string equal $errp NONE] } {
error_check_good pdb_get($i) [$pdb get $keys($i)] \
[list [list $keys($i) $data($i)]]
} else {
@@ -99,74 +109,85 @@ proc check_secondaries { pdb sdbs nentries keyarr dataarr {pref "Check"} \
Each skey/key/data tuple is in secondary #$j"
}
set sdb [lindex $sdbs $j]
+ set nskeys 0
for { set i 0 } { $i < $nentries } { incr i } {
- set skey [[callback_n $j] $keys($i) $data($i)]
- # Check with pget on the secondary.
- set stat [catch {$sdb pget -get_both \
- $skey $keys($i)} ret]
- if { [string compare $errs NONE] == 0 } {
- error_check_good stat $stat 0
- error_check_good sdb($j)_pget($i) $ret \
- [list [list $skey $keys($i) $data($i)]]
- } else {
- if { $stat == 1 } {
- set errors $ret
- } else {
+ set skeys [[callback_n $j] $keys($i) $data($i)]
+ if { [llength $skeys] == 0 } {
+ set skeys [list $skeys]
+ }
+ foreach skey $skeys {
+ incr nskeys
+ # Check with pget on the secondary.
+ set stat [catch {$sdb pget -get_both \
+ $skey $keys($i)} ret]
+ if { [string equal $errs NONE] } {
+ error_check_good stat $stat 0
error_check_good sdb($j)_pget($i) $ret \
- [list [list $skey $keys($i) $data($i)]]
+ [list [list \
+ $skey $keys($i) $data($i)]]
+ } else {
+ if { $stat == 1 } {
+ set errors $ret
+ } else {
+ error_check_good \
+ sdb($j)_pget($i) $ret \
+ [list [list \
+ $skey $keys($i) $data($i)]]
+ }
}
- }
- # Check again with get on the secondary.
- # Since get_both is not an allowed option
- # with get on a secondary handle, we can't
- # get an exact match on callback method 6,
- # and can't guarantee an exact match on
- # method 5. We just make sure that one of
- # the returned key/data pairs is the right one.
- if { $j == 5 || $j == 6 } {
- error_check_good sdb($j)_get($i) \
- [is_substr [$sdb get $skey] \
- [list [list $skey $data($i)]]] 1
- } else {
- set stat [catch {$sdb get $skey} ret]
- if { [string compare $errs NONE] == 0 } {
+ # Check again with get on the secondary. Since
+ # get_both is not an allowed option with get on
+ # a secondary handle, we can't guarantee an
+ # exact match on method 5 and over. We just
+ # make sure that one of the returned key/data
+ # pairs is the right one.
+ if { $j >= 5 } {
error_check_good sdb($j)_get($i) \
- $ret \
- [list [list $skey $data($i)]]
+ [is_substr [$sdb get $skey] \
+ [list [list $skey $data($i)]]] 1
} else {
- if { $stat == 1 } {
- set errorsg $ret
- break
+ set stat [catch {$sdb get $skey} ret]
+ if { [string equal $errs NONE] } {
+ error_check_good \
+ sdb($j)_get($i) $ret \
+ [list [list \
+ $skey $data($i)]]
} else {
- error_check_good sdb($j)_get($i) \
- $ret \
- [list [list $skey $data($i)]]
+ if { $stat == 1 } {
+ set errorsg $ret
+ break
+ } else {
+ error_check_good \
+ sdb($j)_get($i) \
+ $ret [list [list \
+ $skey $data($i)]]
+ }
}
}
- }
- #
- # We couldn't break above because we need to execute
- # the errorsg error as well.
- #
- if { $errors != 0 } {
- break
+ #
+ # We couldn't break above because we need to
+ # execute the errorsg error as well.
+ #
+ if { $errors != 0 } {
+ break
+ }
}
}
if { $errors != 0 || $errorsg != 0 } {
break
}
- # Make sure this secondary contains only $nentries
+ # Make sure this secondary contains only $nskeys
# items.
if { $verbose_check_secondaries } {
- puts "\t\t$pref.3: Secondary #$j has $nentries items"
+ puts "\t\t$pref.3: Secondary #$j has $nskeys items"
}
set dbc [$sdb cursor]
error_check_good dbc($i) \
[is_valid_cursor $dbc $sdb] TRUE
for { set k 0 } { [llength [$dbc get -next]] > 0 } \
{ incr k } { }
- error_check_good numitems($i) $k $nentries
+ error_check_good numitems($i) $k $nskeys
error_check_good dbc($i)_close [$dbc close] 0
}
if { $errorp != 0 || $errors != 0 || $errorsg != 0 } {
@@ -209,12 +230,13 @@ proc cursor_check_secondaries { pdb sdbs nentries { pref "Check" } } {
for { set j 0 } { $j < [llength $sdbs] } { incr j } {
set sdb [lindex $sdbs $j]
# Check with pget.
- set sdbt [$sdb pget -get_both \
- [[callback_n $j] $pkey $pdata] $pkey]
+ foreach skey [[callback_n $j] $pkey $pdata] {
+ set sdbt [$sdb pget -get_both $skey $pkey]
error_check_good pkey($pkey,$j) \
[lindex [lindex $sdbt 0] 1] $pkey
error_check_good pdata($pdata,$j) \
[lindex [lindex $sdbt 0] 2] $pdata
+ }
}
}
error_check_good ccs_pdbc_close [$pdbc close] 0
@@ -228,30 +250,24 @@ proc cursor_check_secondaries { pdb sdbs nentries { pref "Check" } } {
set sdb [lindex $sdbs $j]
set sdbc [$sdb cursor]
error_check_good ccs_sdbc($j) [is_valid_cursor $sdbc $sdb] TRUE
- set i 0
for { set dbt [$sdbc pget -first] } { [llength $dbt] > 0 } \
{ set dbt [$sdbc pget -next] } {
- incr i
set pkey [lindex [lindex $dbt 0] 1]
set pdata [lindex [lindex $dbt 0] 2]
error_check_good pdb_get($pkey/$pdata,$j) \
[$pdb get -get_both $pkey $pdata] \
[list [list $pkey $pdata]]
}
- error_check_good secondary($j)_has_nentries $i $nentries
# To exercise pget -last/pget -prev, we do it backwards too.
- set i 0
for { set dbt [$sdbc pget -last] } { [llength $dbt] > 0 } \
{ set dbt [$sdbc pget -prev] } {
- incr i
set pkey [lindex [lindex $dbt 0] 1]
set pdata [lindex [lindex $dbt 0] 2]
error_check_good pdb_get_bkwds($pkey/$pdata,$j) \
[$pdb get -get_both $pkey $pdata] \
[list [list $pkey $pdata]]
}
- error_check_good secondary($j)_has_nentries_bkwds $i $nentries
error_check_good ccs_sdbc_close($j) [$sdbc close] 0
}
diff --git a/db/test/sysscript.tcl b/db/test/sysscript.tcl
index 85fe09c23..aedf7ec3f 100644
--- a/db/test/sysscript.tcl
+++ b/db/test/sysscript.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: sysscript.tcl,v 12.4 2006/09/06 05:13:30 alexg Exp $
+# $Id: sysscript.tcl,v 12.6 2007/05/17 15:15:56 bostic Exp $
#
# System integration test script.
# This script runs a single process that tests the full functionality of
diff --git a/db/test/t106script.tcl b/db/test/t106script.tcl
index a57d5d812..b7b5a8fa6 100644
--- a/db/test/t106script.tcl
+++ b/db/test/t106script.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: t106script.tcl,v 12.3 2006/08/24 14:46:39 bostic Exp $
+# $Id: t106script.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
proc t106_initial { nitems nprod id tnum dbenv order args } {
diff --git a/db/test/test.tcl b/db/test/test.tcl
index d5b67ae91..19260bd18 100644
--- a/db/test/test.tcl
+++ b/db/test/test.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: test.tcl,v 12.30 2006/08/24 14:46:39 bostic Exp $
+# $Id: test.tcl,v 12.42 2007/06/28 14:26:02 bostic Exp $
source ./include.tcl
@@ -64,6 +63,12 @@ set is_envmethod 0
global is_repchild
set is_repchild 0
+# Set when we want to use replication test messaging that cannot
+# share an env -- for example, because the replication processes
+# are not all from the same BDB version.
+global noenv_messaging
+set noenv_messaging 0
+
# For testing locker id wrap around.
global lock_curid
global lock_maxid
@@ -88,6 +93,12 @@ global checking_valid_methods
set checking_valid_methods 0
global valid_methods
set valid_methods { btree rbtree queue queueext recno frecno rrecno hash }
+
+# The variable test_recopts controls whether we open envs in
+# replication tests with the -recover flag. The default is
+# to test with and without the flag, but to run a meaningful
+# subset of rep tests more quickly, rep_subset will randomly
+# pick one or the other.
global test_recopts
set test_recopts { "-recover" "" }
@@ -120,8 +131,8 @@ source $test_path/testparams.tcl
# Try to open an encrypted database. If it fails, this release
# doesn't support encryption, and encryption tests should be skipped.
set has_crypto 1
-set stat [catch {set db \
- [eval {berkdb open -create -btree -encryptaes test_passwd} ] } result ]
+set stat [catch {set db [eval {berkdb_open_noerr \
+ -create -btree -encryptaes test_passwd} ] } result ]
if { $stat != 0 } {
# Make sure it's the right error for a non-crypto release.
error_check_good non_crypto_release \
@@ -199,6 +210,7 @@ proc run_std { { testname ALL } args } {
set test_list {
{"environment" "env"}
{"archive" "archive"}
+ {"backup" "backup"}
{"file operations" "fop"}
{"locking" "lock"}
{"logging" "log"}
@@ -362,8 +374,10 @@ proc check_output { file } {
^100.*|
^eval\s.*|
^exec\s.*|
+ ^fileops:\s.*|
^jointest.*$|
^r\sarchive\s*|
+ ^r\sbackup\s*|
^r\sdbm\s*|
^r\shsearch\s*|
^r\sndbm\s*|
@@ -373,6 +387,7 @@ proc check_output { file } {
^run_rpcmethod:\s.*|
^run_secenv:\s.*|
^All\sprocesses\shave\sexited.$|
+ ^Backuptest\s.*|
^Beginning\scycle\s\d$|
^Byteorder:.*|
^Child\sruns\scomplete\.\s\sParent\smodifies\sdata\.$|
@@ -398,6 +413,7 @@ proc check_output { file } {
^\t*About\sto\srun\srecovery\s.*complete$|
^\t*Add\sa\sthird\sversion\s.*|
^\t*Archive[:\.].*|
+ ^\t*Backuptest.*|
^\t*Bigfile[0-9][0-9][0-9].*|
^\t*Building\s.*|
^\t*closing\ssecondaries\.$|
@@ -473,13 +489,6 @@ proc r { args } {
source ./include.tcl
- # The variable test_recopts controls whether we open envs in
- # replication tests with the -recover flag. The default is
- # to test with and without the flag, but to run a meaningful
- # subset of rep tests more quickly, rep_subset will randomly
- # pick one or the other.
- set test_recopts { " -recover" "" }
-
set exflgs [eval extractflags $args]
set args [lindex $exflgs 0]
set flags [lindex $exflgs 1]
@@ -523,6 +532,7 @@ proc r { args } {
}
}
archive -
+ backup -
dbm -
hsearch -
ndbm -
@@ -649,6 +659,7 @@ proc r { args } {
verify_dir $testdir "" 1
}
}
+ set test_recopts { "-recover" "" }
}
rep_complete {
set tindex [lsearch $test_names(rep) $starttest]
@@ -713,8 +724,8 @@ proc r { args } {
}
set rpc_svc $old_rpc_src
- }
}
+ }
sec {
# Skip secure mode tests if release
# does not support encryption.
@@ -1111,7 +1122,7 @@ proc run_secenv { method test {largs ""} } {
set stat [catch {
check_handles
set env [eval {berkdb_env -create -mode 0644 -home $testdir \
- -encryptaes $passwd -cachesize {0 2097152 1}}]
+ -encryptaes $passwd -cachesize {0 4194304 1}}]
error_check_good env_open [is_valid_env $env] TRUE
append largs " -env $env "
@@ -1329,7 +1340,7 @@ proc run_envmethod { method test {display 0} {run 1} {outfile stdout} \
set envargs ""
# Enlarge the cache by default - some compaction tests need it.
- set cacheargs "-cachesize {0 2097152 1}"
+ set cacheargs "-cachesize {0 4194304 1}"
env_cleanup $testdir
if { $display == 1 } {
diff --git a/db/test/test001.tcl b/db/test/test001.tcl
index ee655ba1f..eedd2ea96 100644
--- a/db/test/test001.tcl
+++ b/db/test/test001.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: test001.tcl,v 12.3 2006/08/24 14:46:39 bostic Exp $
+# $Id: test001.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test001
# TEST Small keys/data
diff --git a/db/test/test002.tcl b/db/test/test002.tcl
index 28972cca8..047bbf3f0 100644
--- a/db/test/test002.tcl
+++ b/db/test/test002.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: test002.tcl,v 12.3 2006/08/24 14:46:39 bostic Exp $
+# $Id: test002.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test002
# TEST Small keys/medium data
diff --git a/db/test/test003.tcl b/db/test/test003.tcl
index 8832da23b..f012adab4 100644
--- a/db/test/test003.tcl
+++ b/db/test/test003.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: test003.tcl,v 12.3 2006/08/24 14:46:39 bostic Exp $
+# $Id: test003.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test003
# TEST Small keys/large data
diff --git a/db/test/test004.tcl b/db/test/test004.tcl
index 1dd1a7b88..47ba0e541 100644
--- a/db/test/test004.tcl
+++ b/db/test/test004.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: test004.tcl,v 12.3 2006/08/24 14:46:39 bostic Exp $
+# $Id: test004.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test004
# TEST Small keys/medium data
diff --git a/db/test/test005.tcl b/db/test/test005.tcl
index 6a991a5ac..9151a5ac3 100644
--- a/db/test/test005.tcl
+++ b/db/test/test005.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: test005.tcl,v 12.3 2006/08/24 14:46:39 bostic Exp $
+# $Id: test005.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test005
# TEST Small keys/medium data
diff --git a/db/test/test006.tcl b/db/test/test006.tcl
index 5b6c30e08..62dd2b2c5 100644
--- a/db/test/test006.tcl
+++ b/db/test/test006.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: test006.tcl,v 12.3 2006/08/24 14:46:39 bostic Exp $
+# $Id: test006.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test006
# TEST Small keys/medium data
diff --git a/db/test/test007.tcl b/db/test/test007.tcl
index f57b86940..a0348267a 100644
--- a/db/test/test007.tcl
+++ b/db/test/test007.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: test007.tcl,v 12.3 2006/08/24 14:46:39 bostic Exp $
+# $Id: test007.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test007
# TEST Small keys/medium data
diff --git a/db/test/test008.tcl b/db/test/test008.tcl
index afab3b281..e2b1c6654 100644
--- a/db/test/test008.tcl
+++ b/db/test/test008.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: test008.tcl,v 12.3 2006/08/24 14:46:39 bostic Exp $
+# $Id: test008.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test008
# TEST Small keys/large data
diff --git a/db/test/test009.tcl b/db/test/test009.tcl
index 05ae8fd4e..2317f24ed 100644
--- a/db/test/test009.tcl
+++ b/db/test/test009.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: test009.tcl,v 12.3 2006/08/24 14:46:39 bostic Exp $
+# $Id: test009.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test009
# TEST Small keys/large data
diff --git a/db/test/test010.tcl b/db/test/test010.tcl
index 9e6a495c9..38447333e 100644
--- a/db/test/test010.tcl
+++ b/db/test/test010.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: test010.tcl,v 12.3 2006/08/24 14:46:39 bostic Exp $
+# $Id: test010.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test010
# TEST Duplicate test
diff --git a/db/test/test011.tcl b/db/test/test011.tcl
index 544cd1947..02f7c95fe 100644
--- a/db/test/test011.tcl
+++ b/db/test/test011.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: test011.tcl,v 12.3 2006/08/24 14:46:39 bostic Exp $
+# $Id: test011.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test011
# TEST Duplicate test
diff --git a/db/test/test012.tcl b/db/test/test012.tcl
index 2b5c8819c..2a55a26f0 100644
--- a/db/test/test012.tcl
+++ b/db/test/test012.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: test012.tcl,v 12.3 2006/08/24 14:46:39 bostic Exp $
+# $Id: test012.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test012
# TEST Large keys/small data
diff --git a/db/test/test013.tcl b/db/test/test013.tcl
index 9e0ee36a0..6c7383b94 100644
--- a/db/test/test013.tcl
+++ b/db/test/test013.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: test013.tcl,v 12.4 2006/08/24 14:46:39 bostic Exp $
+# $Id: test013.tcl,v 12.6 2007/05/17 15:15:56 bostic Exp $
#
# TEST test013
# TEST Partial put test
diff --git a/db/test/test014.tcl b/db/test/test014.tcl
index 421ec3412..6b6646c91 100644
--- a/db/test/test014.tcl
+++ b/db/test/test014.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: test014.tcl,v 12.3 2006/08/24 14:46:39 bostic Exp $
+# $Id: test014.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test014
# TEST Exercise partial puts on short data
diff --git a/db/test/test015.tcl b/db/test/test015.tcl
index 432c6ad5e..cd5c545d4 100644
--- a/db/test/test015.tcl
+++ b/db/test/test015.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: test015.tcl,v 12.4 2006/08/24 14:46:40 bostic Exp $
+# $Id: test015.tcl,v 12.6 2007/05/17 15:15:56 bostic Exp $
#
# TEST test015
# TEST Partial put test
diff --git a/db/test/test016.tcl b/db/test/test016.tcl
index 4333d81cb..504f38621 100644
--- a/db/test/test016.tcl
+++ b/db/test/test016.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: test016.tcl,v 12.3 2006/08/24 14:46:40 bostic Exp $
+# $Id: test016.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test016
# TEST Partial put test
diff --git a/db/test/test017.tcl b/db/test/test017.tcl
index 9944a4360..e9c1ee3be 100644
--- a/db/test/test017.tcl
+++ b/db/test/test017.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: test017.tcl,v 12.3 2006/08/24 14:46:40 bostic Exp $
+# $Id: test017.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test017
# TEST Basic offpage duplicate test.
diff --git a/db/test/test018.tcl b/db/test/test018.tcl
index b9799631b..7181295ab 100644
--- a/db/test/test018.tcl
+++ b/db/test/test018.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: test018.tcl,v 12.3 2006/08/24 14:46:40 bostic Exp $
+# $Id: test018.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test018
# TEST Offpage duplicate test
diff --git a/db/test/test019.tcl b/db/test/test019.tcl
index 4871a139a..03ab6d9a3 100644
--- a/db/test/test019.tcl
+++ b/db/test/test019.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: test019.tcl,v 12.3 2006/08/24 14:46:40 bostic Exp $
+# $Id: test019.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test019
# TEST Partial get test.
diff --git a/db/test/test020.tcl b/db/test/test020.tcl
index 1f5360f1b..790864beb 100644
--- a/db/test/test020.tcl
+++ b/db/test/test020.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: test020.tcl,v 12.3 2006/08/24 14:46:40 bostic Exp $
+# $Id: test020.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test020
# TEST In-Memory database tests.
diff --git a/db/test/test021.tcl b/db/test/test021.tcl
index df52e9232..96ea548c9 100644
--- a/db/test/test021.tcl
+++ b/db/test/test021.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: test021.tcl,v 12.3 2006/08/24 14:46:40 bostic Exp $
+# $Id: test021.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test021
# TEST Btree range tests.
diff --git a/db/test/test022.tcl b/db/test/test022.tcl
index a549289aa..f2061c703 100644
--- a/db/test/test022.tcl
+++ b/db/test/test022.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: test022.tcl,v 12.3 2006/08/24 14:46:40 bostic Exp $
+# $Id: test022.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test022
# TEST Test of DB->getbyteswapped().
diff --git a/db/test/test023.tcl b/db/test/test023.tcl
index 5f42ee249..b56c15ae8 100644
--- a/db/test/test023.tcl
+++ b/db/test/test023.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: test023.tcl,v 12.3 2006/08/24 14:46:40 bostic Exp $
+# $Id: test023.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test023
# TEST Duplicate test
diff --git a/db/test/test024.tcl b/db/test/test024.tcl
index 77c931f23..503d6bec6 100644
--- a/db/test/test024.tcl
+++ b/db/test/test024.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: test024.tcl,v 12.3 2006/08/24 14:46:40 bostic Exp $
+# $Id: test024.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test024
# TEST Record number retrieval test.
diff --git a/db/test/test025.tcl b/db/test/test025.tcl
index 3baea3e3e..9467886a6 100644
--- a/db/test/test025.tcl
+++ b/db/test/test025.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: test025.tcl,v 12.3 2006/08/24 14:46:40 bostic Exp $
+# $Id: test025.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test025
# TEST DB_APPEND flag test.
diff --git a/db/test/test026.tcl b/db/test/test026.tcl
index 426bb8279..d6f5e3374 100644
--- a/db/test/test026.tcl
+++ b/db/test/test026.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: test026.tcl,v 12.3 2006/08/24 14:46:40 bostic Exp $
+# $Id: test026.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test026
# TEST Small keys/medium data w/duplicates
diff --git a/db/test/test027.tcl b/db/test/test027.tcl
index d8ac78c5a..5f7c14fd9 100644
--- a/db/test/test027.tcl
+++ b/db/test/test027.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: test027.tcl,v 12.3 2006/08/24 14:46:40 bostic Exp $
+# $Id: test027.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test027
# TEST Off-page duplicate test
diff --git a/db/test/test028.tcl b/db/test/test028.tcl
index 42eb60940..726740c97 100644
--- a/db/test/test028.tcl
+++ b/db/test/test028.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: test028.tcl,v 12.3 2006/08/24 14:46:40 bostic Exp $
+# $Id: test028.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test028
# TEST Cursor delete test
diff --git a/db/test/test029.tcl b/db/test/test029.tcl
index f3137cb7f..c641065f6 100644
--- a/db/test/test029.tcl
+++ b/db/test/test029.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: test029.tcl,v 12.3 2006/08/24 14:46:40 bostic Exp $
+# $Id: test029.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test029
# TEST Test the Btree and Record number renumbering.
diff --git a/db/test/test030.tcl b/db/test/test030.tcl
index 7ed4f3991..7c3039f53 100644
--- a/db/test/test030.tcl
+++ b/db/test/test030.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: test030.tcl,v 12.3 2006/08/24 14:46:40 bostic Exp $
+# $Id: test030.tcl,v 12.6 2007/05/17 15:15:56 bostic Exp $
#
# TEST test030
# TEST Test DB_NEXT_DUP Functionality.
@@ -113,11 +112,11 @@ proc test030 { method {nentries 10000} args } {
for {set ret [$dbc get -set $str]} \
{[llength $ret] != 0} \
{set ret [$dbc get -nextdup] } {
- incr x
if { [llength $ret] == 0 } {
break
}
+ incr x
set k [lindex [lindex $ret 0] 0]
if { [string compare $k $str] != 0 } {
@@ -132,6 +131,30 @@ proc test030 { method {nentries 10000} args } {
error_check_good Test030:dup# $id $x
}
error_check_good Test030:numdups $x $ndup
+
+ # Now retrieve them backwards
+ for {set ret [$dbc get -prev]} \
+ {[llength $ret] != 0} \
+ {set ret [$dbc get -prevdup] } {
+
+ if { [llength $ret] == 0 } {
+ break
+ }
+
+ set k [lindex [lindex $ret 0] 0]
+ if { [string compare $k $str] != 0 } {
+ break
+ }
+ incr x -1
+
+ set datastr [lindex [lindex $ret 0] 1]
+ set d [data_of $datastr]
+ error_check_good Test030:put $d $str
+
+ set id [ id_of $datastr ]
+ error_check_good Test030:dup# $id $x
+ }
+ error_check_good Test030:numdups $x 1
incr count
}
close $did
diff --git a/db/test/test031.tcl b/db/test/test031.tcl
index c6b65be1b..fe4f34c46 100644
--- a/db/test/test031.tcl
+++ b/db/test/test031.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: test031.tcl,v 12.3 2006/08/24 14:46:40 bostic Exp $
+# $Id: test031.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test031
# TEST Duplicate sorting functionality
diff --git a/db/test/test032.tcl b/db/test/test032.tcl
index bf839e170..a55cac3f5 100644
--- a/db/test/test032.tcl
+++ b/db/test/test032.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: test032.tcl,v 12.3 2006/08/24 14:46:40 bostic Exp $
+# $Id: test032.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test032
# TEST DB_GET_BOTH, DB_GET_BOTH_RANGE
diff --git a/db/test/test033.tcl b/db/test/test033.tcl
index 455084681..a236461c4 100644
--- a/db/test/test033.tcl
+++ b/db/test/test033.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: test033.tcl,v 12.3 2006/08/24 14:46:40 bostic Exp $
+# $Id: test033.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test033
# TEST DB_GET_BOTH without comparison function
diff --git a/db/test/test034.tcl b/db/test/test034.tcl
index ac00eb392..ec9d14e23 100644
--- a/db/test/test034.tcl
+++ b/db/test/test034.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1998-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1998,2007 Oracle. All rights reserved.
#
-# $Id: test034.tcl,v 12.3 2006/08/24 14:46:40 bostic Exp $
+# $Id: test034.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test034
# TEST test032 with off-page duplicates
diff --git a/db/test/test035.tcl b/db/test/test035.tcl
index d25ede647..3ee51d3c2 100644
--- a/db/test/test035.tcl
+++ b/db/test/test035.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: test035.tcl,v 12.3 2006/08/24 14:46:40 bostic Exp $
+# $Id: test035.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test035
# TEST Test033 with off-page duplicates
diff --git a/db/test/test036.tcl b/db/test/test036.tcl
index aea0ead20..4223cce22 100644
--- a/db/test/test036.tcl
+++ b/db/test/test036.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: test036.tcl,v 12.3 2006/08/24 14:46:40 bostic Exp $
+# $Id: test036.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test036
# TEST Test KEYFIRST and KEYLAST when the key doesn't exist
diff --git a/db/test/test037.tcl b/db/test/test037.tcl
index 1f8c6b397..045d17d26 100644
--- a/db/test/test037.tcl
+++ b/db/test/test037.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: test037.tcl,v 12.3 2006/08/24 14:46:40 bostic Exp $
+# $Id: test037.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test037
# TEST Test DB_RMW
diff --git a/db/test/test038.tcl b/db/test/test038.tcl
index 59769bd50..2bc2e118b 100644
--- a/db/test/test038.tcl
+++ b/db/test/test038.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: test038.tcl,v 12.3 2006/08/24 14:46:40 bostic Exp $
+# $Id: test038.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test038
# TEST DB_GET_BOTH, DB_GET_BOTH_RANGE on deleted items
diff --git a/db/test/test039.tcl b/db/test/test039.tcl
index b39e64248..d4daf84bf 100644
--- a/db/test/test039.tcl
+++ b/db/test/test039.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: test039.tcl,v 12.3 2006/08/24 14:46:40 bostic Exp $
+# $Id: test039.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test039
# TEST DB_GET_BOTH/DB_GET_BOTH_RANGE on deleted items without comparison
diff --git a/db/test/test040.tcl b/db/test/test040.tcl
index 50712f65b..91f548584 100644
--- a/db/test/test040.tcl
+++ b/db/test/test040.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1998-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1998,2007 Oracle. All rights reserved.
#
-# $Id: test040.tcl,v 12.3 2006/08/24 14:46:40 bostic Exp $
+# $Id: test040.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test040
# TEST Test038 with off-page duplicates
diff --git a/db/test/test041.tcl b/db/test/test041.tcl
index e647b3583..fef7067e5 100644
--- a/db/test/test041.tcl
+++ b/db/test/test041.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: test041.tcl,v 12.3 2006/08/24 14:46:40 bostic Exp $
+# $Id: test041.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test041
# TEST Test039 with off-page duplicates
diff --git a/db/test/test042.tcl b/db/test/test042.tcl
index c4f7d3a69..b5405f67b 100644
--- a/db/test/test042.tcl
+++ b/db/test/test042.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: test042.tcl,v 12.3 2006/08/24 14:46:40 bostic Exp $
+# $Id: test042.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test042
# TEST Concurrent Data Store test (CDB)
diff --git a/db/test/test043.tcl b/db/test/test043.tcl
index 2460c4e60..5462c331b 100644
--- a/db/test/test043.tcl
+++ b/db/test/test043.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: test043.tcl,v 12.3 2006/08/24 14:46:40 bostic Exp $
+# $Id: test043.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test043
# TEST Recno renumbering and implicit creation test
diff --git a/db/test/test044.tcl b/db/test/test044.tcl
index 9525a2cc9..0a14681c6 100644
--- a/db/test/test044.tcl
+++ b/db/test/test044.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: test044.tcl,v 12.3 2006/08/24 14:46:40 bostic Exp $
+# $Id: test044.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test044
# TEST Small system integration tests
diff --git a/db/test/test045.tcl b/db/test/test045.tcl
index 77f2905fd..76242f019 100644
--- a/db/test/test045.tcl
+++ b/db/test/test045.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: test045.tcl,v 12.3 2006/08/24 14:46:40 bostic Exp $
+# $Id: test045.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test045
# TEST Small random tester
diff --git a/db/test/test046.tcl b/db/test/test046.tcl
index 50d5307b0..0e52fd2e4 100644
--- a/db/test/test046.tcl
+++ b/db/test/test046.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: test046.tcl,v 12.3 2006/08/24 14:46:40 bostic Exp $
+# $Id: test046.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test046
# TEST Overwrite test of small/big key/data with cursor checks.
diff --git a/db/test/test047.tcl b/db/test/test047.tcl
index 973ab2afe..f1af4b24a 100644
--- a/db/test/test047.tcl
+++ b/db/test/test047.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: test047.tcl,v 12.3 2006/08/24 14:46:40 bostic Exp $
+# $Id: test047.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test047
# TEST DBcursor->c_get get test with SET_RANGE option.
diff --git a/db/test/test048.tcl b/db/test/test048.tcl
index 457bfe857..9d8c7c445 100644
--- a/db/test/test048.tcl
+++ b/db/test/test048.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: test048.tcl,v 12.3 2006/08/24 14:46:40 bostic Exp $
+# $Id: test048.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test048
# TEST Cursor stability across Btree splits.
diff --git a/db/test/test049.tcl b/db/test/test049.tcl
index 1403ced65..6321901ef 100644
--- a/db/test/test049.tcl
+++ b/db/test/test049.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: test049.tcl,v 12.3 2006/08/24 14:46:40 bostic Exp $
+# $Id: test049.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test049
# TEST Cursor operations on uninitialized cursors.
diff --git a/db/test/test050.tcl b/db/test/test050.tcl
index ee057b248..ab5a07459 100644
--- a/db/test/test050.tcl
+++ b/db/test/test050.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: test050.tcl,v 12.3 2006/08/24 14:46:40 bostic Exp $
+# $Id: test050.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test050
# TEST Overwrite test of small/big key/data with cursor checks for Recno.
diff --git a/db/test/test051.tcl b/db/test/test051.tcl
index 06026e349..0fe0e123a 100644
--- a/db/test/test051.tcl
+++ b/db/test/test051.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: test051.tcl,v 12.5 2006/08/24 14:46:40 bostic Exp $
+# $Id: test051.tcl,v 12.7 2007/05/17 15:15:56 bostic Exp $
#
# TEST test051
# TEST Fixed-length record Recno test.
diff --git a/db/test/test052.tcl b/db/test/test052.tcl
index ebe49aa53..104957d6a 100644
--- a/db/test/test052.tcl
+++ b/db/test/test052.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: test052.tcl,v 12.3 2006/08/24 14:46:40 bostic Exp $
+# $Id: test052.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test052
# TEST Renumbering record Recno test.
diff --git a/db/test/test053.tcl b/db/test/test053.tcl
index 2c2312335..18b92c21b 100644
--- a/db/test/test053.tcl
+++ b/db/test/test053.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: test053.tcl,v 12.3 2006/08/24 14:46:40 bostic Exp $
+# $Id: test053.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test053
# TEST Test of the DB_REVSPLITOFF flag in the Btree and Btree-w-recnum
diff --git a/db/test/test054.tcl b/db/test/test054.tcl
index a3787013c..3f5e90677 100644
--- a/db/test/test054.tcl
+++ b/db/test/test054.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: test054.tcl,v 12.3 2006/08/24 14:46:40 bostic Exp $
+# $Id: test054.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test054
# TEST Cursor maintenance during key/data deletion.
diff --git a/db/test/test055.tcl b/db/test/test055.tcl
index 3cf2cd1ca..ac49132c2 100644
--- a/db/test/test055.tcl
+++ b/db/test/test055.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: test055.tcl,v 12.3 2006/08/24 14:46:40 bostic Exp $
+# $Id: test055.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test055
# TEST Basic cursor operations.
diff --git a/db/test/test056.tcl b/db/test/test056.tcl
index 6c177923c..28c71dac2 100644
--- a/db/test/test056.tcl
+++ b/db/test/test056.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: test056.tcl,v 12.3 2006/08/24 14:46:40 bostic Exp $
+# $Id: test056.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test056
# TEST Cursor maintenance during deletes.
diff --git a/db/test/test057.tcl b/db/test/test057.tcl
index 9b4cdf666..a89bce57b 100644
--- a/db/test/test057.tcl
+++ b/db/test/test057.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: test057.tcl,v 12.3 2006/08/24 14:46:40 bostic Exp $
+# $Id: test057.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test057
# TEST Cursor maintenance during key deletes.
diff --git a/db/test/test058.tcl b/db/test/test058.tcl
index 87d0bc035..3a5b4c9ea 100644
--- a/db/test/test058.tcl
+++ b/db/test/test058.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: test058.tcl,v 12.3 2006/08/24 14:46:40 bostic Exp $
+# $Id: test058.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test058
# TEST Verify that deleting and reading duplicates results in correct ordering.
diff --git a/db/test/test059.tcl b/db/test/test059.tcl
index 3f2f01f4b..fe068bc55 100644
--- a/db/test/test059.tcl
+++ b/db/test/test059.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: test059.tcl,v 12.3 2006/08/24 14:46:40 bostic Exp $
+# $Id: test059.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test059
# TEST Cursor ops work with a partial length of 0.
diff --git a/db/test/test060.tcl b/db/test/test060.tcl
index 73177bb62..6115f7f3b 100644
--- a/db/test/test060.tcl
+++ b/db/test/test060.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: test060.tcl,v 12.3 2006/08/24 14:46:41 bostic Exp $
+# $Id: test060.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test060
# TEST Test of the DB_EXCL flag to DB->open().
diff --git a/db/test/test061.tcl b/db/test/test061.tcl
index d94debc43..8915171ba 100644
--- a/db/test/test061.tcl
+++ b/db/test/test061.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: test061.tcl,v 12.3 2006/08/24 14:46:41 bostic Exp $
+# $Id: test061.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test061
# TEST Test of txn abort and commit for in-memory databases.
diff --git a/db/test/test062.tcl b/db/test/test062.tcl
index 4264124cd..787ff2415 100644
--- a/db/test/test062.tcl
+++ b/db/test/test062.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: test062.tcl,v 12.3 2006/08/24 14:46:41 bostic Exp $
+# $Id: test062.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test062
# TEST Test of partial puts (using DB_CURRENT) onto duplicate pages.
diff --git a/db/test/test063.tcl b/db/test/test063.tcl
index d1c15320d..7b233c244 100644
--- a/db/test/test063.tcl
+++ b/db/test/test063.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: test063.tcl,v 12.3 2006/08/24 14:46:41 bostic Exp $
+# $Id: test063.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test063
# TEST Test of the DB_RDONLY flag to DB->open
diff --git a/db/test/test064.tcl b/db/test/test064.tcl
index d08ad746f..e5560fbe0 100644
--- a/db/test/test064.tcl
+++ b/db/test/test064.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: test064.tcl,v 12.3 2006/08/24 14:46:41 bostic Exp $
+# $Id: test064.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test064
# TEST Test of DB->get_type
diff --git a/db/test/test065.tcl b/db/test/test065.tcl
index 5aa3bb43d..fbe772fbc 100644
--- a/db/test/test065.tcl
+++ b/db/test/test065.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: test065.tcl,v 12.3 2006/08/24 14:46:41 bostic Exp $
+# $Id: test065.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test065
# TEST Test of DB->stat, both -DB_FAST_STAT and row
diff --git a/db/test/test066.tcl b/db/test/test066.tcl
index 5d6c4598d..bdae86b7e 100644
--- a/db/test/test066.tcl
+++ b/db/test/test066.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: test066.tcl,v 12.3 2006/08/24 14:46:41 bostic Exp $
+# $Id: test066.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test066
# TEST Test of cursor overwrites of DB_CURRENT w/ duplicates.
diff --git a/db/test/test067.tcl b/db/test/test067.tcl
index be80f62ca..db7da363a 100644
--- a/db/test/test067.tcl
+++ b/db/test/test067.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: test067.tcl,v 12.3 2006/08/24 14:46:41 bostic Exp $
+# $Id: test067.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test067
# TEST Test of DB_CURRENT partial puts onto almost empty duplicate
diff --git a/db/test/test068.tcl b/db/test/test068.tcl
index eb44f6991..fb91aacb3 100644
--- a/db/test/test068.tcl
+++ b/db/test/test068.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: test068.tcl,v 12.4 2006/08/24 14:46:41 bostic Exp $
+# $Id: test068.tcl,v 12.6 2007/05/17 15:15:56 bostic Exp $
#
# TEST test068
# TEST Test of DB_BEFORE and DB_AFTER with partial puts.
diff --git a/db/test/test069.tcl b/db/test/test069.tcl
index 8a6f52e54..ff3ebd01d 100644
--- a/db/test/test069.tcl
+++ b/db/test/test069.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: test069.tcl,v 12.3 2006/08/24 14:46:41 bostic Exp $
+# $Id: test069.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test069
# TEST Test of DB_CURRENT partial puts without duplicates-- test067 w/
diff --git a/db/test/test070.tcl b/db/test/test070.tcl
index f8210ccf2..4e3d13511 100644
--- a/db/test/test070.tcl
+++ b/db/test/test070.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: test070.tcl,v 12.3 2006/08/24 14:46:41 bostic Exp $
+# $Id: test070.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test070
# TEST Test of DB_CONSUME (Four consumers, 1000 items.)
diff --git a/db/test/test071.tcl b/db/test/test071.tcl
index a83644007..549a61727 100644
--- a/db/test/test071.tcl
+++ b/db/test/test071.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: test071.tcl,v 12.3 2006/08/24 14:46:41 bostic Exp $
+# $Id: test071.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test071
# TEST Test of DB_CONSUME (One consumer, 10000 items.)
diff --git a/db/test/test072.tcl b/db/test/test072.tcl
index 378ae7797..4f83ac930 100644
--- a/db/test/test072.tcl
+++ b/db/test/test072.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: test072.tcl,v 12.3 2006/08/24 14:46:41 bostic Exp $
+# $Id: test072.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test072
# TEST Test of cursor stability when duplicates are moved off-page.
diff --git a/db/test/test073.tcl b/db/test/test073.tcl
index b79e639e2..5eb7497a7 100644
--- a/db/test/test073.tcl
+++ b/db/test/test073.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: test073.tcl,v 12.3 2006/08/24 14:46:41 bostic Exp $
+# $Id: test073.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test073
# TEST Test of cursor stability on duplicate pages.
diff --git a/db/test/test074.tcl b/db/test/test074.tcl
index 7d8091f86..af5e9cff5 100644
--- a/db/test/test074.tcl
+++ b/db/test/test074.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: test074.tcl,v 12.3 2006/08/24 14:46:41 bostic Exp $
+# $Id: test074.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test074
# TEST Test of DB_NEXT_NODUP.
diff --git a/db/test/test076.tcl b/db/test/test076.tcl
index ebdb2127d..9a93aed39 100644
--- a/db/test/test076.tcl
+++ b/db/test/test076.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2000-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2000,2007 Oracle. All rights reserved.
#
-# $Id: test076.tcl,v 12.4 2006/08/24 14:46:41 bostic Exp $
+# $Id: test076.tcl,v 12.6 2007/05/17 15:15:56 bostic Exp $
#
# TEST test076
# TEST Test creation of many small databases in a single environment. [#1528].
diff --git a/db/test/test077.tcl b/db/test/test077.tcl
index dc8d41b08..789aae6ee 100644
--- a/db/test/test077.tcl
+++ b/db/test/test077.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2000-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2000,2007 Oracle. All rights reserved.
#
-# $Id: test077.tcl,v 12.3 2006/08/24 14:46:41 bostic Exp $
+# $Id: test077.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test077
# TEST Test of DB_GET_RECNO [#1206].
diff --git a/db/test/test078.tcl b/db/test/test078.tcl
index b0254d80d..0da7c8fa7 100644
--- a/db/test/test078.tcl
+++ b/db/test/test078.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2000-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2000,2007 Oracle. All rights reserved.
#
-# $Id: test078.tcl,v 12.3 2006/08/24 14:46:41 bostic Exp $
+# $Id: test078.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test078
# TEST Test of DBC->c_count(). [#303]
diff --git a/db/test/test079.tcl b/db/test/test079.tcl
index e80bff442..166055c8c 100644
--- a/db/test/test079.tcl
+++ b/db/test/test079.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2000-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2000,2007 Oracle. All rights reserved.
#
-# $Id: test079.tcl,v 12.3 2006/08/24 14:46:41 bostic Exp $
+# $Id: test079.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test079
# TEST Test of deletes in large trees. (test006 w/ sm. pagesize).
diff --git a/db/test/test081.tcl b/db/test/test081.tcl
index ed9d38505..fe2dcf0ff 100644
--- a/db/test/test081.tcl
+++ b/db/test/test081.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: test081.tcl,v 12.3 2006/08/24 14:46:41 bostic Exp $
+# $Id: test081.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test081
# TEST Test off-page duplicates and overflow pages together with
diff --git a/db/test/test082.tcl b/db/test/test082.tcl
index 576f14b62..2bc2ae23e 100644
--- a/db/test/test082.tcl
+++ b/db/test/test082.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2000-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2000,2007 Oracle. All rights reserved.
#
-# $Id: test082.tcl,v 12.3 2006/08/24 14:46:41 bostic Exp $
+# $Id: test082.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test082
# TEST Test of DB_PREV_NODUP (uses test074).
diff --git a/db/test/test083.tcl b/db/test/test083.tcl
index d20e4c974..2b1a5e0ca 100644
--- a/db/test/test083.tcl
+++ b/db/test/test083.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2000-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2000,2007 Oracle. All rights reserved.
#
-# $Id: test083.tcl,v 12.3 2006/08/24 14:46:41 bostic Exp $
+# $Id: test083.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test083
# TEST Test of DB->key_range.
diff --git a/db/test/test084.tcl b/db/test/test084.tcl
index b972c9a32..971a0f1cf 100644
--- a/db/test/test084.tcl
+++ b/db/test/test084.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2000-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2000,2007 Oracle. All rights reserved.
#
-# $Id: test084.tcl,v 12.3 2006/08/24 14:46:41 bostic Exp $
+# $Id: test084.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test084
# TEST Basic sanity test (test001) with large (64K) pages.
diff --git a/db/test/test085.tcl b/db/test/test085.tcl
index 00a22322e..ebc4af911 100644
--- a/db/test/test085.tcl
+++ b/db/test/test085.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2000-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2000,2007 Oracle. All rights reserved.
#
-# $Id: test085.tcl,v 12.3 2006/08/24 14:46:41 bostic Exp $
+# $Id: test085.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test085
# TEST Test of cursor behavior when a cursor is pointing to a deleted
diff --git a/db/test/test086.tcl b/db/test/test086.tcl
index f9bb0cdcb..d219c89ac 100644
--- a/db/test/test086.tcl
+++ b/db/test/test086.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: test086.tcl,v 12.3 2006/08/24 14:46:41 bostic Exp $
+# $Id: test086.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test086
# TEST Test of cursor stability across btree splits/rsplits with
diff --git a/db/test/test087.tcl b/db/test/test087.tcl
index fab6e4199..652780c00 100644
--- a/db/test/test087.tcl
+++ b/db/test/test087.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: test087.tcl,v 12.3 2006/08/24 14:46:41 bostic Exp $
+# $Id: test087.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test087
# TEST Test of cursor stability when converting to and modifying
diff --git a/db/test/test088.tcl b/db/test/test088.tcl
index 369306782..c244cf5f5 100644
--- a/db/test/test088.tcl
+++ b/db/test/test088.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: test088.tcl,v 12.3 2006/08/24 14:46:41 bostic Exp $
+# $Id: test088.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test088
# TEST Test of cursor stability across btree splits with very
diff --git a/db/test/test089.tcl b/db/test/test089.tcl
index 303a9ce81..8bedce885 100644
--- a/db/test/test089.tcl
+++ b/db/test/test089.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: test089.tcl,v 12.4 2006/08/24 14:46:41 bostic Exp $
+# $Id: test089.tcl,v 12.6 2007/05/17 15:15:56 bostic Exp $
#
# TEST test089
# TEST Concurrent Data Store test (CDB)
diff --git a/db/test/test090.tcl b/db/test/test090.tcl
index 8b4150b35..19175b567 100644
--- a/db/test/test090.tcl
+++ b/db/test/test090.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2000-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2000,2007 Oracle. All rights reserved.
#
-# $Id: test090.tcl,v 12.3 2006/08/24 14:46:41 bostic Exp $
+# $Id: test090.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test090
# TEST Test for functionality near the end of the queue using test001.
diff --git a/db/test/test091.tcl b/db/test/test091.tcl
index 25a13702b..29cbc9ff1 100644
--- a/db/test/test091.tcl
+++ b/db/test/test091.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2000-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2000,2007 Oracle. All rights reserved.
#
-# $Id: test091.tcl,v 12.3 2006/08/24 14:46:41 bostic Exp $
+# $Id: test091.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test091
# TEST Test of DB_CONSUME_WAIT.
diff --git a/db/test/test092.tcl b/db/test/test092.tcl
index 28fc9193b..6440e5675 100644
--- a/db/test/test092.tcl
+++ b/db/test/test092.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: test092.tcl,v 12.4 2006/08/24 14:46:41 bostic Exp $
+# $Id: test092.tcl,v 12.6 2007/05/17 15:15:56 bostic Exp $
#
# TEST test092
# TEST Test of DB_DIRTY_READ [#3395]
diff --git a/db/test/test093.tcl b/db/test/test093.tcl
index 618c7c9de..ea087b501 100644
--- a/db/test/test093.tcl
+++ b/db/test/test093.tcl
@@ -1,34 +1,39 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: test093.tcl,v 12.3 2006/08/24 14:46:41 bostic Exp $
+# $Id: test093.tcl,v 12.8 2007/05/17 18:17:21 bostic Exp $
#
# TEST test093
-# TEST Test using set_bt_compare.
+# TEST Test set_bt_compare (btree key comparison function) and
+# TEST set_h_compare (hash key comparison function).
# TEST
-# TEST Use the first 10,000 entries from the dictionary.
-# TEST Insert each with self as key and data; retrieve each.
-# TEST After all are entered, retrieve all; compare output to original.
-# TEST Close file, reopen, do retrieve and re-verify.
+# TEST Open a database with a comparison function specified,
+# TEST populate, and close, saving a list with that key order as
+# TEST we do so. Reopen and read in the keys, saving in another
+# TEST list; the keys should be in the order specified by the
+# TEST comparison function. Sort the original saved list of keys
+# TEST using the comparison function, and verify that it matches
+# TEST the keys as read out of the database.
+
proc test093 { method {nentries 10000} {tnum "093"} args} {
source ./include.tcl
- global btvals
- global btvalsck
- global errorInfo
set dbargs [convert_args $method $args]
set omethod [convert_method $method]
- if { [is_btree $method] != 1 } {
+ if { [is_btree $method] == 1 } {
+ set compflag -btcompare
+ } elseif { [is_hash $method] == 1 } {
+ set compflag -hashcompare
+ } else {
puts "Test$tnum: skipping for method $method."
return
}
+
set txnenv 0
set eindex [lsearch -exact $dbargs "-env"]
if { $eindex != -1 } {
- set testfile test$tnum.db
incr eindex
set env [lindex $dbargs $eindex]
set rpcenv [is_rpcenv $env]
@@ -45,43 +50,38 @@ proc test093 { method {nentries 10000} {tnum "093"} args} {
}
set testdir [get_home $env]
cleanup $testdir $env
+ } else {
+ set env NULL
}
- puts "Test$tnum: $method ($args) $nentries using btcompare"
+ puts "Test$tnum: $method ($args) $nentries entries using $compflag"
- test093_run $omethod $dbargs $nentries $tnum test093_cmp1 test093_sort1
+ test093_run $omethod $dbargs $nentries $tnum \
+ $compflag test093_cmp1 test093_sort1
test093_runbig $omethod $dbargs $nentries $tnum \
- test093_cmp1 test093_sort1
- test093_run $omethod $dbargs $nentries $tnum test093_cmp2 test093_sort2
- #
+ $compflag test093_cmp1 test093_sort1
+ test093_run $omethod $dbargs $nentries $tnum \
+ $compflag test093_cmp2 test093_sort2
+
# Don't bother running the second, really slow, comparison
# function on test093_runbig (file contents).
# Clean up so verification doesn't fail. (There's currently
# no way to specify a comparison function to berkdb dbverify.)
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- set eindex [lsearch -exact $dbargs "-env"]
- if { $eindex == -1 } {
- set env NULL
- } else {
- incr eindex
- set env [lindex $dbargs $eindex]
+ if { $env != "NULL" } {
set testdir [get_home $env]
}
cleanup $testdir $env
}
-proc test093_run { method dbargs nentries tnum cmpfunc sortfunc } {
+proc test093_run { method dbargs nentries tnum compflag cmpfunc sortfunc } {
source ./include.tcl
global btvals
global btvalsck
- # Create the database and open the dictionary
- set eindex [lsearch -exact $dbargs "-env"]
- #
# If we are using an env, then testfile should just be the db name.
# Otherwise it is the test directory and the name.
+ set eindex [lsearch -exact $dbargs "-env"]
set txnenv 0
if { $eindex == -1 } {
set testfile $testdir/test$tnum.db
@@ -95,7 +95,7 @@ proc test093_run { method dbargs nentries tnum cmpfunc sortfunc } {
}
cleanup $testdir $env
- set db [eval {berkdb_open -btcompare $cmpfunc \
+ set db [eval {berkdb_open $compflag $cmpfunc \
-create -mode 0644} $method $dbargs $testfile]
error_check_good dbopen [is_valid_db $db] TRUE
set did [open $dict]
@@ -103,12 +103,14 @@ proc test093_run { method dbargs nentries tnum cmpfunc sortfunc } {
set t1 $testdir/t1
set t2 $testdir/t2
set t3 $testdir/t3
- set pflags ""
- set gflags ""
set txn ""
+
+ # Use btvals to save the order of the keys as they are
+ # written to the database. The btvalsck variable will contain
+ # the values as sorted by the comparison function.
set btvals {}
set btvalsck {}
- set checkfunc test093_check
+
puts "\tTest$tnum.a: put/get loop"
# Here is the loop where we put and get each key/data pair
set count 0
@@ -121,7 +123,7 @@ proc test093_run { method dbargs nentries tnum cmpfunc sortfunc } {
set txn "-txn $t"
}
set ret [eval \
- {$db put} $txn $pflags {$key [chop_data $method $str]}]
+ {$db put} $txn {$key [chop_data $method $str]}]
error_check_good put $ret 0
if { $txnenv == 1 } {
error_check_good txn [$t commit] 0
@@ -129,13 +131,14 @@ proc test093_run { method dbargs nentries tnum cmpfunc sortfunc } {
lappend btvals $key
- set ret [eval {$db get} $gflags {$key}]
+ set ret [eval {$db get $key}]
error_check_good \
get $ret [list [list $key [pad_data $method $str]]]
incr count
}
close $did
+
# Now we will get each key from the DB and compare the results
# to the original.
puts "\tTest$tnum.b: dump file"
@@ -144,14 +147,13 @@ proc test093_run { method dbargs nentries tnum cmpfunc sortfunc } {
error_check_good txn [is_valid_txn $t $env] TRUE
set txn "-txn $t"
}
- dump_file $db $txn $t1 $checkfunc
+ dump_file $db $txn $t1 test093_check
if { $txnenv == 1 } {
error_check_good txn [$t commit] 0
}
error_check_good db_close [$db close] 0
# Now compare the keys to see if they match the dictionary (or ints)
- set q q
filehead $nentries $dict $t2
filesort $t2 $t3
file rename -force $t3 $t2
@@ -166,7 +168,7 @@ proc test093_run { method dbargs nentries tnum cmpfunc sortfunc } {
# need to have the correct comparison func set. Then
# call dump_file_direction directly.
set btvalsck {}
- set db [eval {berkdb_open -btcompare $cmpfunc -rdonly} \
+ set db [eval {berkdb_open $compflag $cmpfunc -rdonly} \
$dbargs $method $testfile]
error_check_good dbopen [is_valid_db $db] TRUE
if { $txnenv == 1 } {
@@ -174,13 +176,16 @@ proc test093_run { method dbargs nentries tnum cmpfunc sortfunc } {
error_check_good txn [is_valid_txn $t $env] TRUE
set txn "-txn $t"
}
- dump_file_direction $db $txn $t1 $checkfunc "-first" "-next"
+ dump_file_direction $db $txn $t1 test093_check "-first" "-next"
if { $txnenv == 1 } {
error_check_good txn [$t commit] 0
}
error_check_good db_close [$db close] 0
- #
+ if { [is_hash $method] == 1 } {
+ return
+ }
+
# We need to sort btvals according to the comparison function.
# Once that is done, btvalsck and btvals should be the same.
puts "\tTest$tnum.d: check file order"
@@ -194,7 +199,7 @@ proc test093_run { method dbargs nentries tnum cmpfunc sortfunc } {
}
}
-proc test093_runbig { method dbargs nentries tnum cmpfunc sortfunc } {
+proc test093_runbig { method dbargs nentries tnum compflag cmpfunc sortfunc } {
source ./include.tcl
global btvals
global btvalsck
@@ -217,7 +222,7 @@ proc test093_runbig { method dbargs nentries tnum cmpfunc sortfunc } {
}
cleanup $testdir $env
- set db [eval {berkdb_open -btcompare $cmpfunc \
+ set db [eval {berkdb_open $compflag $cmpfunc \
-create -mode 0644} $method $dbargs $testfile]
error_check_good dbopen [is_valid_db $db] TRUE
@@ -226,12 +231,9 @@ proc test093_runbig { method dbargs nentries tnum cmpfunc sortfunc } {
set t3 $testdir/t3
set t4 $testdir/t4
set t5 $testdir/t5
- set pflags ""
- set gflags ""
set txn ""
set btvals {}
set btvalsck {}
- set checkfunc test093_checkbig
puts "\tTest$tnum.e:\
big key put/get loop key=filecontents data=filename"
@@ -257,7 +259,7 @@ proc test093_runbig { method dbargs nentries tnum cmpfunc sortfunc } {
error_check_good txn [is_valid_txn $t $env] TRUE
set txn "-txn $t"
}
- set ret [eval {$db put} $txn $pflags {$key \
+ set ret [eval {$db put} $txn {$key \
[chop_data $method $f]}]
error_check_good put_file $ret 0
if { $txnenv == 1 } {
@@ -269,7 +271,7 @@ proc test093_runbig { method dbargs nentries tnum cmpfunc sortfunc } {
# Should really catch errors
set fid [open $t4 w]
fconfigure $fid -translation binary
- if [catch {eval {$db get} $gflags {$key}} data] {
+ if [catch {eval {$db get} {$key}} data] {
puts -nonewline $fid $data
} else {
# Data looks like {{key data}}
@@ -291,7 +293,7 @@ proc test093_runbig { method dbargs nentries tnum cmpfunc sortfunc } {
error_check_good txn [is_valid_txn $t $env] TRUE
set txn "-txn $t"
}
- dump_file $db $txn $t1 $checkfunc
+ dump_file $db $txn $t1 test093_checkbig
if { $txnenv == 1 } {
error_check_good txn [$t commit] 0
}
@@ -304,7 +306,7 @@ proc test093_runbig { method dbargs nentries tnum cmpfunc sortfunc } {
# call dump_file_direction directly.
set btvalsck {}
- set db [eval {berkdb_open -btcompare $cmpfunc -rdonly} \
+ set db [eval {berkdb_open $compflag $cmpfunc -rdonly} \
$dbargs $method $testfile]
error_check_good dbopen [is_valid_db $db] TRUE
if { $txnenv == 1 } {
@@ -312,13 +314,16 @@ proc test093_runbig { method dbargs nentries tnum cmpfunc sortfunc } {
error_check_good txn [is_valid_txn $t $env] TRUE
set txn "-txn $t"
}
- dump_file_direction $db $txn $t1 $checkfunc "-first" "-next"
+ dump_file_direction $db $txn $t1 test093_checkbig "-first" "-next"
if { $txnenv == 1 } {
error_check_good txn [$t commit] 0
}
error_check_good db_close [$db close] 0
- #
+ if { [is_hash $method] == 1 } {
+ return
+ }
+
# We need to sort btvals according to the comparison function.
# Once that is done, btvalsck and btvals should be the same.
puts "\tTest$tnum.h: check file order"
diff --git a/db/test/test094.tcl b/db/test/test094.tcl
index 9dc69dac5..0def47b28 100644
--- a/db/test/test094.tcl
+++ b/db/test/test094.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: test094.tcl,v 12.3 2006/08/24 14:46:41 bostic Exp $
+# $Id: test094.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test094
# TEST Test using set_dup_compare.
diff --git a/db/test/test095.tcl b/db/test/test095.tcl
index 214e9aae5..5b769b0d9 100644
--- a/db/test/test095.tcl
+++ b/db/test/test095.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2000-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2000,2007 Oracle. All rights reserved.
#
-# $Id: test095.tcl,v 12.3 2006/08/24 14:46:41 bostic Exp $
+# $Id: test095.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test095
# TEST Bulk get test for methods supporting dups. [#2934]
diff --git a/db/test/test096.tcl b/db/test/test096.tcl
index c725a9c8d..35abbe92e 100644
--- a/db/test/test096.tcl
+++ b/db/test/test096.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: test096.tcl,v 12.7 2006/08/24 14:46:41 bostic Exp $
+# $Id: test096.tcl,v 12.9 2007/05/17 15:15:56 bostic Exp $
#
# TEST test096
# TEST Db->truncate test.
diff --git a/db/test/test097.tcl b/db/test/test097.tcl
index a26a221e9..75363692c 100644
--- a/db/test/test097.tcl
+++ b/db/test/test097.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: test097.tcl,v 12.3 2006/08/24 14:46:41 bostic Exp $
+# $Id: test097.tcl,v 12.6 2007/05/17 15:15:56 bostic Exp $
#
# TEST test097
# TEST Open up a large set of database files simultaneously.
@@ -30,7 +29,7 @@ proc test097 { method {ndbs 500} {nentries 400} args } {
return
}
env_cleanup $testdir
- set env [eval {berkdb_env -create \
+ set env [eval {berkdb_env -create -log_regionmax 131072 \
-cachesize { 0 1048576 1 } -txn} -home $testdir $encargs]
error_check_good dbenv [is_valid_env $env] TRUE
diff --git a/db/test/test098.tcl b/db/test/test098.tcl
index a28243d5a..ac9aa1c89 100644
--- a/db/test/test098.tcl
+++ b/db/test/test098.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2002-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2002,2007 Oracle. All rights reserved.
#
-# $Id: test098.tcl,v 12.3 2006/08/24 14:46:41 bostic Exp $
+# $Id: test098.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test098
# TEST Test of DB_GET_RECNO and secondary indices. Open a primary and
diff --git a/db/test/test099.tcl b/db/test/test099.tcl
index adb990cee..b992ad1c2 100644
--- a/db/test/test099.tcl
+++ b/db/test/test099.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: test099.tcl,v 12.3 2006/08/24 14:46:41 bostic Exp $
+# $Id: test099.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test099
# TEST
diff --git a/db/test/test100.tcl b/db/test/test100.tcl
index 6118ec2a9..6c817b284 100644
--- a/db/test/test100.tcl
+++ b/db/test/test100.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2000-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2000,2007 Oracle. All rights reserved.
#
-# $Id: test100.tcl,v 12.3 2006/08/24 14:46:41 bostic Exp $
+# $Id: test100.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test100
# TEST Test for functionality near the end of the queue
diff --git a/db/test/test101.tcl b/db/test/test101.tcl
index a16d652ac..96003dcb4 100644
--- a/db/test/test101.tcl
+++ b/db/test/test101.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2000-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2000,2007 Oracle. All rights reserved.
#
-# $Id: test101.tcl,v 12.3 2006/08/24 14:46:41 bostic Exp $
+# $Id: test101.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test101
# TEST Test for functionality near the end of the queue
diff --git a/db/test/test102.tcl b/db/test/test102.tcl
index 788e093e3..a56de11a9 100644
--- a/db/test/test102.tcl
+++ b/db/test/test102.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2000-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2000,2007 Oracle. All rights reserved.
#
-# $Id: test102.tcl,v 12.3 2006/08/24 14:46:41 bostic Exp $
+# $Id: test102.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test102
# TEST Bulk get test for record-based methods. [#2934]
diff --git a/db/test/test103.tcl b/db/test/test103.tcl
index 85f4774b0..4c76223c5 100644
--- a/db/test/test103.tcl
+++ b/db/test/test103.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2003-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2003,2007 Oracle. All rights reserved.
#
-# $Id: test103.tcl,v 12.3 2006/08/24 14:46:41 bostic Exp $
+# $Id: test103.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST test103
# TEST Test bulk get when record numbers wrap around.
diff --git a/db/test/test106.tcl b/db/test/test106.tcl
index 48c1476a2..c39d9f528 100644
--- a/db/test/test106.tcl
+++ b/db/test/test106.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2003-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2003,2007 Oracle. All rights reserved.
#
-# $Id: test106.tcl,v 12.5 2006/08/24 14:46:41 bostic Exp $
+# $Id: test106.tcl,v 12.8 2007/05/17 15:15:56 bostic Exp $
#
# TEST test106
# TEST
@@ -51,7 +50,6 @@ proc test106 { method {nitems 100} {niter 200} {tnum "106"} args } {
set testdir [get_home $env]
}
-
cleanup $testdir $env
# The bulk of the work of this test is done in t106script.tcl.
diff --git a/db/test/test107.tcl b/db/test/test107.tcl
index 52ad5147e..dc95c7367 100644
--- a/db/test/test107.tcl
+++ b/db/test/test107.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2004-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2004,2007 Oracle. All rights reserved.
#
-# $Id: test107.tcl,v 12.6 2006/08/24 14:46:41 bostic Exp $
+# $Id: test107.tcl,v 12.8 2007/05/17 15:15:56 bostic Exp $
#
# TEST test107
# TEST Test of read-committed (degree 2 isolation). [#8689]
diff --git a/db/test/test109.tcl b/db/test/test109.tcl
index 1620576f3..af3f379b9 100644
--- a/db/test/test109.tcl
+++ b/db/test/test109.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2004-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2004,2007 Oracle. All rights reserved.
#
-# $Id: test109.tcl,v 12.9 2006/08/24 14:46:41 bostic Exp $
+# $Id: test109.tcl,v 12.11 2007/05/17 15:15:56 bostic Exp $
#
# TEST test109
# TEST
diff --git a/db/test/test110.tcl b/db/test/test110.tcl
index f9735faf4..1f7fd6a77 100644
--- a/db/test/test110.tcl
+++ b/db/test/test110.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2004-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2004,2007 Oracle. All rights reserved.
#
-# $Id: test110.tcl,v 1.8 2006/08/24 14:46:41 bostic Exp $
+# $Id: test110.tcl,v 1.10 2007/05/17 15:15:56 bostic Exp $
#
# TEST test110
# TEST Partial get test with duplicates.
diff --git a/db/test/test111.tcl b/db/test/test111.tcl
index 9e4235429..715c7baa4 100644
--- a/db/test/test111.tcl
+++ b/db/test/test111.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2005-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2005,2007 Oracle. All rights reserved.
#
-# $Id: test111.tcl,v 1.14 2006/08/24 14:46:41 bostic Exp $
+# $Id: test111.tcl,v 1.16 2007/05/17 15:15:56 bostic Exp $
#
# TEST test111
# TEST Test database compaction.
diff --git a/db/test/test112.tcl b/db/test/test112.tcl
index f5e83f319..963f677db 100644
--- a/db/test/test112.tcl
+++ b/db/test/test112.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2005-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2005,2007 Oracle. All rights reserved.
#
-# $Id: test112.tcl,v 12.11 2006/08/24 14:46:41 bostic Exp $
+# $Id: test112.tcl,v 12.13 2007/05/17 15:15:56 bostic Exp $
#
# TEST test112
# TEST Test database compaction with a deep tree.
diff --git a/db/test/test113.tcl b/db/test/test113.tcl
index d2fcf3d78..59210989e 100644
--- a/db/test/test113.tcl
+++ b/db/test/test113.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2005-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2005,2007 Oracle. All rights reserved.
#
-# $Id: test113.tcl,v 12.7 2006/08/24 14:46:41 bostic Exp $
+# $Id: test113.tcl,v 12.9 2007/05/17 15:15:56 bostic Exp $
#
# TEST test113
# TEST Test database compaction with duplicates.
diff --git a/db/test/test114.tcl b/db/test/test114.tcl
index 85c9f7218..19a45dd5e 100644
--- a/db/test/test114.tcl
+++ b/db/test/test114.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2005-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2005,2007 Oracle. All rights reserved.
#
-# $Id: test114.tcl,v 12.10 2006/08/24 14:46:41 bostic Exp $
+# $Id: test114.tcl,v 12.12 2007/05/17 15:15:56 bostic Exp $
#
# TEST test114
# TEST Test database compaction with overflows.
diff --git a/db/test/test115.tcl b/db/test/test115.tcl
index a61d13be4..ddb6489a2 100644
--- a/db/test/test115.tcl
+++ b/db/test/test115.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2005-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2005,2007 Oracle. All rights reserved.
#
-# $Id: test115.tcl,v 12.13 2006/08/24 14:46:41 bostic Exp $
+# $Id: test115.tcl,v 12.16 2007/05/17 15:15:56 bostic Exp $
#
# TEST test115
# TEST Test database compaction with user-specified btree sort.
@@ -27,14 +26,6 @@ proc test115 { method {nentries 10000} {tnum "115"} args } {
return
}
- # XXX This should be removed when the fix for [#13500]
- # is checked in.
- # If the test module sent in the -chksum arg, get rid of it.
- set chkindex [lsearch -exact $args "-chksum"]
- if { $chkindex != -1 } {
- set args [lreplace $args $chkindex $chkindex]
- }
-
# If a page size was specified, find out what it is. Pages
# might not be freed in the case of really large pages (64K)
# but we still want to run this test just to make sure
diff --git a/db/test/test116.tcl b/db/test/test116.tcl
index 0ab091b72..999db4cb2 100644
--- a/db/test/test116.tcl
+++ b/db/test/test116.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2005-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2005,2007 Oracle. All rights reserved.
#
-# $Id: test116.tcl,v 12.6 2006/08/24 14:46:41 bostic Exp $
+# $Id: test116.tcl,v 12.9 2007/05/17 15:15:56 bostic Exp $
#
# TEST test116
# TEST Test of basic functionality of lsn_reset.
@@ -38,6 +37,7 @@ proc test116 { method {tnum "116"} args } {
if { $eindex == -1 } {
puts "\tTest$tnum.a: Creating env."
+ env_cleanup $testdir
set env [eval {berkdb_env} \
-create $encargs $envargs -home $testdir -txn]
append args " -auto_commit "
@@ -140,8 +140,14 @@ proc test116 { method {tnum "116"} args } {
set testdir [get_home $env]
set newdir [get_home $newenv]
- # Reset LSNs before copying.
+ # Reset LSNs before copying. We do a little dance here:
+ # first copy the file within the same directory, then reset
+ # the fileid on the copy, then reset the LSNs on the copy,
+ # and only then copy the new file to the new env. Otherwise
+ # the LSNs would get reset on the original file.
+
file copy -force $testdir/$testfile $testdir/$newfile
+ error_check_good fileid_reset [$env id_reset $newfile] 0
error_check_good \
lsn_reset [eval {$env lsn_reset} $resetargs {$newfile}] 0
@@ -229,6 +235,7 @@ proc test116 { method {tnum "116"} args } {
}
}
error_check_good newenv_close [$newenv close] 0
+ fileremove -f $newdir
}
set testdir $orig_tdir
diff --git a/db/test/test117.tcl b/db/test/test117.tcl
index e86fe3e19..bd4e288e0 100644
--- a/db/test/test117.tcl
+++ b/db/test/test117.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2005-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2005,2007 Oracle. All rights reserved.
#
-# $Id: test117.tcl,v 12.7 2006/08/24 14:46:41 bostic Exp $
+# $Id: test117.tcl,v 12.9 2007/05/17 15:15:56 bostic Exp $
#
# TEST test117
# TEST Test database compaction with requested fill percent.
diff --git a/db/test/test119.tcl b/db/test/test119.tcl
index 5a399fff9..9223ad908 100644
--- a/db/test/test119.tcl
+++ b/db/test/test119.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2003-2005
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2003,2007 Oracle. All rights reserved.
#
-# $Id: test119.tcl,v 12.4 2006/08/24 14:46:41 bostic Exp $
+# $Id: test119.tcl,v 12.6 2007/05/17 15:15:56 bostic Exp $
#
# TEST test119
# TEST Test behavior when Berkeley DB returns DB_BUFFER_SMALL on a cursor.
diff --git a/db/test/test120.tcl b/db/test/test120.tcl
index 5eb655dd8..684648b05 100644
--- a/db/test/test120.tcl
+++ b/db/test/test120.tcl
@@ -1,13 +1,12 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2006,2007 Oracle. All rights reserved.
#
-# $Id: test120.tcl,v 12.3 2006/08/24 14:46:41 bostic Exp $
+# $Id: test120.tcl,v 12.6 2007/05/24 18:20:47 carol Exp $
#
# TEST test120
# TEST Test of multi-version concurrency control.
-#
+# TEST
# TEST Test basic functionality: a snapshot transaction started
# TEST before a regular transaction's put can't see the modification.
# TEST A snapshot transaction started after the put can see it.
diff --git a/db/test/test121.tcl b/db/test/test121.tcl
index 0ff17cd41..41a069a44 100644
--- a/db/test/test121.tcl
+++ b/db/test/test121.tcl
@@ -1,13 +1,12 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2006,2007 Oracle. All rights reserved.
#
-# $Id: test121.tcl,v 1.6 2006/09/08 20:32:18 bostic Exp $
+# $Id: test121.tcl,v 1.9 2007/05/24 18:20:47 carol Exp $
#
# TEST test121
# TEST Tests of multi-version concurrency control.
-#
+# TEST
# TEST MVCC and cursor adjustment.
# TEST Set up a -snapshot cursor and position it in the middle
# TEST of a database.
diff --git a/db/test/test122.tcl b/db/test/test122.tcl
index 17bd540f1..734027db4 100644
--- a/db/test/test122.tcl
+++ b/db/test/test122.tcl
@@ -1,13 +1,12 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2006,2007 Oracle. All rights reserved.
#
-# $Id: test122.tcl,v 1.3 2006/08/24 14:46:41 bostic Exp $
+# $Id: test122.tcl,v 1.6 2007/05/24 18:20:47 carol Exp $
#
# TEST test122
# TEST Tests of multi-version concurrency control.
-#
+# TEST
# TEST MVCC and databases that turn multi-version on and off.
proc test122 { method {tnum "122"} args } {
diff --git a/db/test/testparams.tcl b/db/test/testparams.tcl
index 6d0899228..0619c9963 100644
--- a/db/test/testparams.tcl
+++ b/db/test/testparams.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2000-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2000,2007 Oracle. All rights reserved.
#
-# $Id: testparams.tcl,v 12.82 2006/09/08 20:32:18 bostic Exp $
+# $Id: testparams.tcl,v 12.104 2007/07/12 16:26:08 carol Exp $
source ./include.tcl
global is_freebsd_test
@@ -20,13 +19,14 @@ set test_names(bigfile) [list bigfile001 bigfile002]
set test_names(compact) [list test111 test112 test113 test114 test115 test117]
set test_names(dead) [list dead001 dead002 dead003 dead004 dead005 dead006 \
dead007]
-set test_names(elect) [list rep002 rep005 rep016 rep020 rep022 rep026 rep063]
+set test_names(elect) [list rep002 rep005 rep016 rep020 rep022 rep026 \
+ rep063 rep067 rep069 rep076]
set test_names(env) [list env001 env002 env003 env004 env005 env006 \
env007 env008 env009 env010 env011 env012 env013 env014 env015]
set test_names(fop) [list fop001 fop002 fop003 fop004 fop005 fop006 \
fop007 fop008]
set test_names(init) [list rep029 rep030 rep031 rep033 rep037 rep038 rep039\
- rep055 rep060 rep061 rep062]
+ rep055 rep057 rep060 rep061 rep062 rep070 rep072]
set test_names(inmemdb) [list fop007 fop008 rep056 rep057 sdb013 sdb014 \
sdb015 sdb016 sdb017 sdb018 sdb019 sdb020]
set test_names(lock) [list lock001 lock002 lock003 lock004 lock005 lock006]
@@ -37,18 +37,14 @@ set test_names(plat) [list plat001]
set test_names(recd) [list recd001 recd002 recd003 recd004 recd005 recd006 \
recd007 recd008 recd009 recd010 recd011 recd012 recd013 recd014 recd015 \
recd016 recd017 recd018 recd019 recd020 recd022 recd023]
-#
-# XXX rep043 and rep044 are removed from the list for now. There are
-# issues in dbreg that need to be fixed. There is nothing wrong
-# with the tests themselves - they do legal operations.
-#
set test_names(rep) [list rep001 rep002 rep003 rep005 rep006 rep007 \
rep008 rep009 rep010 rep011 rep012 rep013 rep014 rep015 rep016 rep017 \
rep018 rep019 rep020 rep021 rep022 rep023 rep024 rep025 rep026 rep027 \
rep028 rep029 rep030 rep031 rep032 rep033 rep034 rep035 rep036 rep037 \
rep038 rep039 rep040 rep041 rep042 rep043 rep044 rep045 rep046 rep047 \
rep048 rep049 rep050 rep051 rep052 rep053 rep054 rep055 rep056 rep057 \
- rep058 rep060 rep061 rep062 rep063 rep064 rep065 rep066]
+ rep058 rep060 rep061 rep062 rep063 rep064 rep066 rep067 rep068 \
+ rep069 rep070 rep071 rep072 rep073 rep074 rep075 rep076 rep077 ]
set test_names(rpc) [list rpc001 rpc002 rpc003 rpc004 rpc005 rpc006]
set test_names(rsrc) [list rsrc001 rsrc002 rsrc003 rsrc004]
set test_names(sdb) [list sdb001 sdb002 sdb003 sdb004 sdb005 sdb006 \
@@ -72,7 +68,7 @@ set test_names(test) [list test001 test002 test003 test004 test005 \
test109 test110 test111 test112 test113 test114 test115 test116 test117 \
test119 test120 test121 test122]
set test_names(txn) [list txn001 txn002 txn003 txn004 txn005 txn006 \
- txn007 txn008 txn009 txn010 txn011 txn012 txn013]
+ txn007 txn008 txn009 txn010 txn011 txn012 txn013 txn014]
set rpc_tests(berkeley_db_svc) [concat $test_names(test) $test_names(sdb)]
set rpc_tests(berkeley_db_cxxsvc) $test_names(test)
@@ -136,6 +132,7 @@ if { $one_test != "ALL" } {
}
source $test_path/archive.tcl
+source $test_path/backup.tcl
source $test_path/byteorder.tcl
source $test_path/dbm.tcl
source $test_path/foputils.tcl
@@ -145,6 +142,7 @@ source $test_path/logtrack.tcl
source $test_path/ndbm.tcl
source $test_path/parallel.tcl
source $test_path/reputils.tcl
+source $test_path/reputilsnoenv.tcl
source $test_path/sdbutils.tcl
source $test_path/shelltest.tcl
source $test_path/sijointest.tcl
@@ -237,6 +235,19 @@ set parms(rep062) "062"
set parms(rep063) ""
set parms(rep064) {10 "064"}
set parms(rep065} {3}
+set parms(rep066) {10 "066"}
+set parms(rep067) ""
+set parms(rep068) {"068"}
+set parms(rep069) {200 "069"}
+set parms(rep070) {200 "070"}
+set parms(rep071) { 10 "071"}
+set parms(rep072) {200 "072"}
+set parms(rep073) {200 "073"}
+set parms(rep074) {"074"}
+set parms(rep075) {"075"}
+set parms(rep076) ""
+set parms(rep077) {"077"}
+set parms(rep078) {"078"}
set parms(subdb001) ""
set parms(subdb002) 10000
set parms(subdb003) 1000
@@ -417,7 +428,7 @@ set shelltest_list {
{ scr013 chk.stats }
{ scr014 chk.err }
{ scr015 chk.cxxtests }
- { scr016 "-c exit 0" }
+ { scr016 chk.bdb }
{ scr017 chk.db185 }
{ scr018 chk.comma }
{ scr019 chk.include }
@@ -434,4 +445,5 @@ set shelltest_list {
{ scr030 chk.build }
{ scr031 chk.xa }
{ scr032 chk.rpc }
+ { scr033 chk.codegen }
}
diff --git a/db/test/testutils.tcl b/db/test/testutils.tcl
index 44521d65f..d084de608 100644
--- a/db/test/testutils.tcl
+++ b/db/test/testutils.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: testutils.tcl,v 12.26 2006/09/08 20:32:17 bostic Exp $
+# $Id: testutils.tcl,v 12.36 2007/07/02 16:06:35 bostic Exp $
#
# Test system utilities
#
@@ -711,16 +710,6 @@ proc watch_procs { pidlist {delay 30} {max 3600} {quiet 0} } {
set r [ catch { exec $KILL -0 $i } res ]
if { $r == 0 } {
lappend rlist $i
- } else {
- # It's OK if the process is already dead, but
- # we want to know about other kinds of failures.
- if { [is_substr $res "no such process"] == 0 &&
- [is_substr $res "No such process"] == 0 &&
- [is_substr $res\
- "process does not exist"] == 0 } {
- puts "FAIL: Problem\
- reported killing process $i: $res"
- }
}
}
if { [ llength $rlist] == 0 } {
@@ -1311,6 +1300,9 @@ proc rpc_server_start { { encrypted 0 } { maxwait 30 } { args "" } } {
global passwd
set encargs ""
+ # Set -v for verbose messages from the RPC server.
+ # set encargs " -v "
+
if { $encrypted == 1 } {
set encargs " -P $passwd "
}
@@ -2862,6 +2854,12 @@ proc verify_dir { {directory $testdir} { pref "" } \
}
foreach db $dbs {
+ # Replication's temp db uses a custom comparison function,
+ # so we can't verify it.
+ #
+ if { [file tail $db] == "__db.rep.db" } {
+ continue
+ }
if { [catch \
{eval {berkdb dbverify} $uflag $earg $db} res] != 0 } {
puts $res
@@ -3022,7 +3020,7 @@ proc dumploadtest { db } {
# Test regular and aggressive salvage procedures for all databases
# in a directory.
-proc salvagetest { dir { noredo 0 } { quiet 0 } } {
+proc salvage_dir { dir { noredo 0 } { quiet 0 } } {
global util_path
global encrypt
global passwd
@@ -3072,7 +3070,7 @@ proc salvagetest { dir { noredo 0 } { quiet 0 } } {
set rval [catch {eval {exec $util_path/db_dump} $utilflag -R \
-f $aggsalvagefile $db} res]
if { $rval == 1 } {
-puts "res is $res"
+#puts "res is $res"
error_check_good agg_failure \
[is_substr $res "DB_VERIFY_BAD"] 1
} else {
@@ -3299,6 +3297,34 @@ proc open_handles { } {
return [llength [berkdb handles]]
}
+# Will close any database and cursor handles, cursors first.
+# Ignores other handles, like env handles.
+proc close_db_handles { } {
+ set handles [berkdb handles]
+ set db_handles {}
+ set cursor_handles {}
+
+ # Find the handles we want to process. We can't use
+ # is_valid_cursor to find cursors because we don't know
+ # the cursor's parent database handle.
+ foreach handle $handles {
+ if {[string range $handle 0 1] == "db"} {
+ if { [string first "c" $handle] != -1} {
+ lappend cursor_handles $handle
+ } else {
+ lappend db_handles $handle
+ }
+ }
+ }
+
+ foreach handle $cursor_handles {
+ error_check_good cursor_close [$handle close] 0
+ }
+ foreach handle $db_handles {
+ error_check_good db_close [$handle close] 0
+ }
+}
+
proc move_file_extent { dir dbfile tag op } {
set curfiles [get_extfiles $dir $dbfile ""]
set tagfiles [get_extfiles $dir $dbfile $tag]
@@ -3556,14 +3582,18 @@ proc is_debug { } {
return 0
}
-proc adjust_logargs { logtype } {
+proc adjust_logargs { logtype {lbufsize 0} } {
if { $logtype == "in-memory" } {
- set lbuf [expr 1 * [expr 1024 * 1024]]
- set logargs " -log_inmemory -log_buffer $lbuf "
+ if { $lbufsize == 0 } {
+ set lbuf [expr 1 * [expr 1024 * 1024]]
+ set logargs " -log_inmemory -log_buffer $lbuf "
+ } else {
+ set logargs " -log_inmemory -log_buffer $lbufsize "
+ }
} elseif { $logtype == "on-disk" } {
set logargs ""
} else {
- puts "FAIL: unrecognized log type $logtype"
+ error "FAIL: unrecognized log type $logtype"
}
return $logargs
}
@@ -3574,7 +3604,7 @@ proc adjust_txnargs { logtype } {
} elseif { $logtype == "on-disk" } {
set txnargs " -txn nosync "
} else {
- puts "FAIL: unrecognized log type $logtype"
+ error "FAIL: unrecognized log type $logtype"
}
return $txnargs
}
diff --git a/db/test/txn.tcl b/db/test/txn.tcl
deleted file mode 100644
index 904ef5fdc..000000000
--- a/db/test/txn.tcl
+++ /dev/null
@@ -1,181 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996, 1997, 1998, 1999, 2000
-# Sleepycat Software. All rights reserved.
-#
-# $Id: txn.tcl,v 11.12 2000/12/31 19:26:23 bostic Exp $
-#
-# Options are:
-# -dir <directory in which to store memp>
-# -max <max number of concurrent transactions>
-# -iterations <iterations>
-# -stat
-proc txn_usage {} {
- puts "txn -dir <directory> -iterations <number of ops> \
- -max <max number of transactions> -stat"
-}
-
-proc txntest { args } {
- source ./include.tcl
-
- # Set defaults
- set iterations 50
- set max 1024
- set dostat 0
- set flags ""
- for { set i 0 } { $i < [llength $args] } {incr i} {
- switch -regexp -- [lindex $args $i] {
- -d.* { incr i; set testdir [lindex $args $i] }
- -f.* { incr i; set flags [lindex $args $i] }
- -i.* { incr i; set iterations [lindex $args $i] }
- -m.* { incr i; set max [lindex $args $i] }
- -s.* { set dostat 1 }
- default {
- puts -nonewline "FAIL:[timestamp] Usage: "
- txn_usage
- return
- }
- }
- }
- if { $max < $iterations } {
- set max $iterations
- }
-
- # Now run the various functionality tests
- txn001 $testdir $max $iterations $flags
- txn002 $testdir $max $iterations
-}
-
-proc txn001 { dir max ntxns flags} {
- source ./include.tcl
-
- puts "Txn001: Basic begin, commit, abort"
-
- # Open environment
- env_cleanup $dir
-
- set env [eval {berkdb \
- env -create -mode 0644 -txn -txn_max $max -home $dir} $flags]
- error_check_good evn_open [is_valid_env $env] TRUE
- txn001_suba $ntxns $env
- txn001_subb $ntxns $env
- txn001_subc $ntxns $env
- # Close and unlink the file
- error_check_good env_close:$env [$env close] 0
-}
-
-proc txn001_suba { ntxns env } {
- source ./include.tcl
-
- # We will create a bunch of transactions and commit them.
- set txn_list {}
- set tid_list {}
- puts "Txn001.a: Beginning/Committing $ntxns Transactions in $env"
- for { set i 0 } { $i < $ntxns } { incr i } {
- set txn [$env txn]
- error_check_good txn_begin [is_valid_txn $txn $env] TRUE
-
- lappend txn_list $txn
-
- set tid [$txn id]
- error_check_good tid_check [lsearch $tid_list $tid] -1
-
- lappend tid_list $tid
- }
-
- # Now commit them all
- foreach t $txn_list {
- error_check_good txn_commit:$t [$t commit] 0
- }
-}
-
-proc txn001_subb { ntxns env } {
- # We will create a bunch of transactions and abort them.
- set txn_list {}
- set tid_list {}
- puts "Txn001.b: Beginning/Aborting Transactions"
- for { set i 0 } { $i < $ntxns } { incr i } {
- set txn [$env txn]
- error_check_good txn_begin [is_valid_txn $txn $env] TRUE
-
- lappend txn_list $txn
-
- set tid [$txn id]
- error_check_good tid_check [lsearch $tid_list $tid] -1
-
- lappend tid_list $tid
- }
-
- # Now abort them all
- foreach t $txn_list {
- error_check_good txn_abort:$t [$t abort] 0
- }
-}
-
-proc txn001_subc { ntxns env } {
- # We will create a bunch of transactions and commit them.
- set txn_list {}
- set tid_list {}
- puts "Txn001.c: Beginning/Prepare/Committing Transactions"
- for { set i 0 } { $i < $ntxns } { incr i } {
- set txn [$env txn]
- error_check_good txn_begin [is_valid_txn $txn $env] TRUE
-
- lappend txn_list $txn
-
- set tid [$txn id]
- error_check_good tid_check [lsearch $tid_list $tid] -1
-
- lappend tid_list $tid
- }
-
- # Now prepare them all
- foreach t $txn_list {
- error_check_good txn_prepare:$t [$t prepare] 0
- }
-
- # Now commit them all
- foreach t $txn_list {
- error_check_good txn_commit:$t [$t commit] 0
- }
-
-}
-
-# Verify that read-only transactions do not create any log records
-proc txn002 { dir max ntxns } {
- source ./include.tcl
-
- puts "Txn002: Read-only transaction test"
-
- env_cleanup $dir
- set env [berkdb \
- env -create -mode 0644 -txn -txn_max $max -home $dir]
- error_check_good dbenv [is_valid_env $env] TRUE
-
- # We will create a bunch of transactions and commit them.
- set txn_list {}
- set tid_list {}
- puts "Txn002.a: Beginning/Committing Transactions"
- for { set i 0 } { $i < $ntxns } { incr i } {
- set txn [$env txn]
- error_check_good txn_begin [is_valid_txn $txn $env] TRUE
-
- lappend txn_list $txn
-
- set tid [$txn id]
- error_check_good tid_check [lsearch $tid_list $tid] -1
-
- lappend tid_list $tid
- }
-
- # Now commit them all
- foreach t $txn_list {
- error_check_good txn_commit:$t [$t commit] 0
- }
-
- # Now verify that there aren't any log records.
- set r [$env log_get -first]
- error_check_good log_get:$r [llength $r] 0
-
- error_check_good env_close:$r [$env close] 0
-}
diff --git a/db/test/txn001.tcl b/db/test/txn001.tcl
index f2b1e5bed..6b9404d4c 100644
--- a/db/test/txn001.tcl
+++ b/db/test/txn001.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: txn001.tcl,v 12.3 2006/08/24 14:46:41 bostic Exp $
+# $Id: txn001.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST txn001
# TEST Begin, commit, abort testing.
diff --git a/db/test/txn002.tcl b/db/test/txn002.tcl
index 7ac9ff88c..151229abe 100644
--- a/db/test/txn002.tcl
+++ b/db/test/txn002.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: txn002.tcl,v 12.3 2006/08/24 14:46:41 bostic Exp $
+# $Id: txn002.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST txn002
# TEST Verify that read-only transactions do not write log records.
diff --git a/db/test/txn003.tcl b/db/test/txn003.tcl
index 8ce8efc30..d834af82a 100644
--- a/db/test/txn003.tcl
+++ b/db/test/txn003.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: txn003.tcl,v 12.5 2006/08/24 14:46:41 bostic Exp $
+# $Id: txn003.tcl,v 12.9 2007/05/17 18:17:21 bostic Exp $
#
# TEST txn003
# TEST Test abort/commit/prepare of txns with outstanding child txns.
@@ -212,11 +211,12 @@ proc txn003_body { env_cmd testfile dir key newdata2 msg op } {
[is_substr $ret "transaction already prepared"] 1
error_check_good txn:prep_abort [$txn abort] 0
} elseif { $op == "begin" } {
- set stat [catch {$env txn} ret]
- error_check_good begin_error $stat 1
- error_check_good begin_err \
- [is_substr $ret "not yet committed transactions is incomplete"] 1
- error_check_good txn:prep_abort [$txn abort] 0
+ # As of the 4.6 release, we allow new txns to be created
+ # while prepared but not committed txns exist, so this
+ # should succeed.
+ set txn2 [$env txn]
+ error_check_good txn:begin_abort [$txn abort] 0
+ error_check_good txn2:begin_abort [$txn2 abort] 0
} else {
error_check_good txn:$op [$txn $op] 0
}
diff --git a/db/test/txn004.tcl b/db/test/txn004.tcl
index a7dfec06c..46e4a3b63 100644
--- a/db/test/txn004.tcl
+++ b/db/test/txn004.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: txn004.tcl,v 12.3 2006/08/24 14:46:41 bostic Exp $
+# $Id: txn004.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST txn004
# TEST Test of wraparound txnids (txn001)
diff --git a/db/test/txn005.tcl b/db/test/txn005.tcl
index 4b759e777..2aef5ea4a 100644
--- a/db/test/txn005.tcl
+++ b/db/test/txn005.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: txn005.tcl,v 12.3 2006/08/24 14:46:41 bostic Exp $
+# $Id: txn005.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST txn005
# TEST Test transaction ID wraparound and recovery.
diff --git a/db/test/txn006.tcl b/db/test/txn006.tcl
index a71381c52..ae53d816e 100644
--- a/db/test/txn006.tcl
+++ b/db/test/txn006.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: txn006.tcl,v 12.3 2006/08/24 14:46:41 bostic Exp $
+# $Id: txn006.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
#TEST txn006
#TEST Test dump/load in transactional environment.
diff --git a/db/test/txn007.tcl b/db/test/txn007.tcl
index df7640d41..77760b17c 100644
--- a/db/test/txn007.tcl
+++ b/db/test/txn007.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: txn007.tcl,v 12.4 2006/08/24 14:46:41 bostic Exp $
+# $Id: txn007.tcl,v 12.6 2007/05/17 15:15:56 bostic Exp $
#
#TEST txn007
#TEST Test of DB_TXN_WRITE_NOSYNC
diff --git a/db/test/txn008.tcl b/db/test/txn008.tcl
index 376feef1c..8746a96bb 100644
--- a/db/test/txn008.tcl
+++ b/db/test/txn008.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: txn008.tcl,v 12.3 2006/08/24 14:46:41 bostic Exp $
+# $Id: txn008.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST txn008
# TEST Test of wraparound txnids (txn002)
diff --git a/db/test/txn009.tcl b/db/test/txn009.tcl
index d8ef08ed3..8afa57f4c 100644
--- a/db/test/txn009.tcl
+++ b/db/test/txn009.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: txn009.tcl,v 12.3 2006/08/24 14:46:41 bostic Exp $
+# $Id: txn009.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST txn009
# TEST Test of wraparound txnids (txn003)
diff --git a/db/test/txn010.tcl b/db/test/txn010.tcl
index 1d101db81..2d6689c23 100644
--- a/db/test/txn010.tcl
+++ b/db/test/txn010.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: txn010.tcl,v 12.3 2006/08/24 14:46:41 bostic Exp $
+# $Id: txn010.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# TEST txn010
# TEST Test DB_ENV->txn_checkpoint arguments/flags
diff --git a/db/test/txn011.tcl b/db/test/txn011.tcl
index ff2218931..1a67853ff 100644
--- a/db/test/txn011.tcl
+++ b/db/test/txn011.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2003-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2003,2007 Oracle. All rights reserved.
#
-# $Id: txn011.tcl,v 12.5 2006/08/24 14:46:41 bostic Exp $
+# $Id: txn011.tcl,v 12.7 2007/05/17 15:15:56 bostic Exp $
#
# TEST txn011
# TEST Test durable and non-durable txns.
diff --git a/db/test/txn012.tcl b/db/test/txn012.tcl
index ed8028baf..485401ecf 100644
--- a/db/test/txn012.tcl
+++ b/db/test/txn012.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2005-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2005,2007 Oracle. All rights reserved.
#
-# $Id: txn012.tcl,v 12.4 2006/08/24 14:46:41 bostic Exp $
+# $Id: txn012.tcl,v 12.6 2007/05/17 15:15:56 bostic Exp $
#
# TEST txn012
# TEST Test txn->getname and txn->setname.
diff --git a/db/test/txn012script.tcl b/db/test/txn012script.tcl
index 07919d927..26656af1e 100644
--- a/db/test/txn012script.tcl
+++ b/db/test/txn012script.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2005-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2005,2007 Oracle. All rights reserved.
#
-# $Id: txn012script.tcl,v 12.4 2006/08/24 14:46:41 bostic Exp $
+# $Id: txn012script.tcl,v 12.6 2007/05/17 15:15:56 bostic Exp $
#
# Script to check that txn names can be seen across processes.
# Names over 50 characters will be truncated.
diff --git a/db/test/txn013.tcl b/db/test/txn013.tcl
index 89e557cc9..9ada12a32 100644
--- a/db/test/txn013.tcl
+++ b/db/test/txn013.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2005-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2005,2007 Oracle. All rights reserved.
#
-# $Id: txn013.tcl,v 12.4 2006/08/24 14:46:41 bostic Exp $
+# $Id: txn013.tcl,v 12.6 2007/05/17 15:15:56 bostic Exp $
#
# TEST txn013
# TEST Test of txns used in the wrong environment.
diff --git a/db/test/txn014.tcl b/db/test/txn014.tcl
new file mode 100644
index 000000000..c1e0f8d31
--- /dev/null
+++ b/db/test/txn014.tcl
@@ -0,0 +1,151 @@
+# See the file LICENSE for redistribution information.
+#
+# Copyright (c) 2005,2007 Oracle. All rights reserved.
+#
+# $Id: txn014.tcl,v 12.3 2007/05/17 18:17:21 bostic Exp $
+#
+# TEST txn014
+# TEST Test of parent and child txns working on the same database.
+# TEST A txn that will become a parent create a database.
+# TEST A txn that will not become a parent creates another database.
+# TEST Start a child txn of the 1st txn.
+# TEST Verify that the parent txn is disabled while child is open.
+# TEST 1. Child reads contents with child handle (should succeed).
+# TEST 2. Child reads contents with parent handle (should succeed).
+# TEST Verify that the non-parent txn can read from its database,
+# TEST and that the child txn cannot.
+# TEST Return to the child txn.
+# TEST 3. Child writes with child handle (should succeed).
+# TEST 4. Child writes with parent handle (should succeed).
+# TEST
+# TEST Commit the child, verify that the parent can write again.
+# TEST Check contents of database with a second child.
+proc txn014 { } {
+ source ./include.tcl
+
+ set tnum "014"
+ puts "Txn$tnum: Test use of parent and child txns."
+ set parentfile test$tnum.db
+ set nonparentfile test$tnum.db.2
+ set method "-btree"
+
+ # Use 5000 entries so there will be new items on the wordlist
+ # when we double nentries in part h.
+ set nentries 5000
+
+ env_cleanup $testdir
+
+ puts "\tTxn$tnum.a: Create environment."
+ set eflags "-create -mode 0644 -txn -home $testdir"
+ set env [eval {berkdb_env_noerr} $eflags]
+ error_check_good env [is_valid_env $env] TRUE
+
+ # Open a database with parent txn and populate. We populate
+ # before starting up the child txn, because the only allowed
+ # Berkeley DB calls for a parent txn are beginning child txns,
+ # committing, or aborting.
+
+ puts "\tTxn$tnum.b: Start parent txn and open database."
+ set parent [$env txn]
+ error_check_good parent_begin [is_valid_txn $parent $env] TRUE
+ set db [berkdb_open_noerr \
+ -env $env -txn $parent -create $method $parentfile]
+ populate $db $method $parent $nentries 0 0
+
+ puts "\tTxn$tnum.c: Start non-parent txn and open database."
+ set nonparent [$env txn]
+ error_check_good nonparent_begin [is_valid_txn $nonparent $env] TRUE
+ set db2 [berkdb_open_noerr \
+ -env $env -txn $nonparent -create $method $nonparentfile]
+ populate $db2 $method $nonparent $nentries 0 0
+
+ # Start child txn and open database. Parent txn is not yet
+ # committed, but the child should be able to read what's there.
+ # The child txn should also be able to use the parent txn.
+
+ puts "\tTxn$tnum.d: Start child txn."
+ set child [$env txn -parent $parent]
+
+ puts "\tTxn$tnum.e: Verify parent is disabled."
+ catch {$db put -txn $parent a a} ret
+ error_check_good \
+ parent_disabled [is_substr $ret "Child transaction is active"] 1
+
+ puts "\tTxn$tnum.f: Get a handle on parent's database using child txn."
+ set childdb \
+ [berkdb_open_noerr -env $env -txn $child $method $parentfile]
+
+ puts "\tTxn$tnum.g: Read database with child txn/child handle,"
+ puts "\tTxn$tnum.g: and with child txn/parent handle."
+ set did [open $dict]
+ set count 0
+ while { [gets $did str] != -1 && $count < $nentries } {
+ set key $str
+
+ # First use child's handle.
+ set ret [$childdb get -txn $child $key]
+ error_check_good \
+ get $ret [list [list $key [pad_data $method $str]]]
+
+ # Have the child use the parent's handle.
+ set ret [$db get -txn $child $key]
+ error_check_good \
+ get $ret [list [list $key [pad_data $method $str]]]
+ incr count
+ }
+ close $did
+
+ # Read the last key from the non-parent database, then try
+ # to read the same key using the child txn. It will fail.
+ puts "\tTxn$tnum.h: Child cannot read data from non-parent."
+ set ret [$db2 get -txn $nonparent $key]
+
+ # Check the return against $key, because $str has gone on to
+ # the next item in the wordlist.
+ error_check_good \
+ np_get $ret [list [list $key [pad_data $method $key]]]
+ catch {$db2 get -txn $child $key} ret
+ error_check_good \
+ child_np_get [is_substr $ret "is still active"] 1
+
+ # The child should also be able to update the database, using
+ # either handle.
+ puts "\tTxn$tnum.i: Write to database with child txn & child handle."
+ populate $childdb $method $child $nentries 0 0
+ puts "\tTxn$tnum.j: Write to database with child txn & parent handle."
+ populate $db $method $child $nentries 0 0
+
+ puts "\tTxn$tnum.k: Commit child, freeing parent."
+ error_check_good child_commit [$child commit] 0
+ error_check_good childdb_close [$childdb close] 0
+
+ puts "\tTxn$tnum.l: Add more entries to db using parent txn."
+ set nentries [expr $nentries * 2]
+ populate $db $method $parent $nentries 0 0
+
+ puts "\tTxn$tnum.m: Start new child txn and read database."
+ set child2 [$env txn -parent $parent]
+ set child2db \
+ [berkdb_open_noerr -env $env -txn $child2 $method $parentfile]
+
+ set did [open $dict]
+ set count 0
+ while { [gets $did str] != -1 && $count < $nentries } {
+ set key $str
+ set ret [$child2db get -txn $child2 $key]
+ error_check_good \
+ get $ret [list [list $key [pad_data $method $str]]] 1
+ incr count
+ }
+ close $did
+
+ puts "\tTxn$tnum.n: Clean up."
+ error_check_good child2_commit [$child2 commit] 0
+ error_check_good nonparent_commit [$nonparent commit] 0
+ error_check_good parent_commit [$parent commit] 0
+ error_check_good db_close [$db close] 0
+ error_check_good db2_close [$db2 close] 0
+ error_check_good childdb_close [$child2db close] 0
+ error_check_good env_close [$env close] 0
+}
+
diff --git a/db/test/txnscript.tcl b/db/test/txnscript.tcl
index b516655a6..bfa1d1877 100644
--- a/db/test/txnscript.tcl
+++ b/db/test/txnscript.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1996-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1996,2007 Oracle. All rights reserved.
#
-# $Id: txnscript.tcl,v 12.3 2006/08/24 14:46:41 bostic Exp $
+# $Id: txnscript.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
#
# Txn003 script - outstanding child prepare script
# Usage: txnscript envcmd dbcmd gidf key data
diff --git a/db/test/update.tcl b/db/test/update.tcl
index e5faa8b11..68271ae28 100644
--- a/db/test/update.tcl
+++ b/db/test/update.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: update.tcl,v 12.3 2006/08/24 14:46:41 bostic Exp $
+# $Id: update.tcl,v 12.5 2007/05/17 15:15:56 bostic Exp $
source ./include.tcl
global update_dir
diff --git a/db/test/upgrade.tcl b/db/test/upgrade.tcl
index add597d85..5caec3c57 100644
--- a/db/test/upgrade.tcl
+++ b/db/test/upgrade.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 1999-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 1999,2007 Oracle. All rights reserved.
#
-# $Id: upgrade.tcl,v 12.8 2006/09/18 14:22:44 carol Exp $
+# $Id: upgrade.tcl,v 12.13 2007/07/03 14:04:04 carol Exp $
source ./include.tcl
@@ -240,8 +239,10 @@ proc _upgrade_test { temp_dir version method file endianness } {
# Open the database prior to upgrading. If it fails,
# it should fail with the DB_OLDVERSION message.
set encargs ""
+ set upgradeargs ""
if { $encrypt == 1 } {
set encargs " -encryptany $passwd "
+ set upgradeargs " -P $passwd "
}
if { [catch \
{ set db [eval {berkdb open} $encargs \
@@ -252,7 +253,8 @@ proc _upgrade_test { temp_dir version method file endianness } {
}
# Now upgrade the database.
- set ret [berkdb upgrade "$temp_dir/$file-$endianness.db"]
+ set ret [catch {eval exec {$util_path/db_upgrade} $upgradeargs \
+ "$temp_dir/$file-$endianness.db" } message]
error_check_good dbupgrade $ret 0
error_check_good dbupgrade_verify [verify_dir $temp_dir "" 0 0 1] 0
@@ -326,11 +328,11 @@ proc _log_test { temp_dir release method file } {
# Log versions prior to 8 can only be read by their own version.
# Log versions of 8 or greater are readable by Berkeley DB 4.5
- # or greater, but the output of printlog does not match unless
+ # or greater, but the output of printlog does not match unless
# the versions are identical.
set logoldver 8
if { $current_logvers > $saved_logvers &&\
- $current_logvers < $logoldver } {
+ $saved_logvers < $logoldver } {
error_check_good historic_log_version \
[is_substr $message "historic log version"] 1
} elseif { $current_logvers > $saved_logvers } {
diff --git a/db/test/upgrade/README b/db/test/upgrade/README
deleted file mode 100644
index 1afada2ec..000000000
--- a/db/test/upgrade/README
+++ /dev/null
@@ -1,85 +0,0 @@
- The Berkeley DB Upgrade Tests
-
-Quick ref:
-
- Running the tests:
- (in tclsh)
- % source ../test/test.tcl
- % upgrade
-
- Generating the test databases:
- (in tclsh)
- % source ../test/test.tcl
- % gen_upgrade /where/you/want/them
-
- (in your shell)
- $ cd /where/you/want/them
- $ perl $db_dir/upgrade/scripts/pack-3.0.pl
- $ mv 3.0 $db_dir/upgrade/databases
-
-What they are:
-
-The DB upgrade tests are a framework for testing two main features of
-Berkeley DB: the db_dump utility, and the "DB_UPGRADE" flag to DB->open.
-They work by taking a tarred, gzipped set of test databases and dumps, and
-verifying that the set of items is the same in the original database (as
-dumped by the version of DB that created it) as in the upgraded one,
-and is the same in the original database and in a new database generated by
-db_loading a db_dump.
-
-In db 3.X and higher, the upgrade test is repeated on a database with
-the opposite endianness to the system the database was generated on.
-
-How to generate test databases:
-
-Ordinarily, this is something that only very rarely has to occur;
-an archive of upgrade test databases can and should be kept, so ideally
-the generation step only needs to be done once for each major DB release.
-
-To generate the test databases, execute the command "gen_upgrade <dir>"
-inside a tclsh. The method tests will run twice, once for each endianness,
-and all the databases will be saved in a hierarchy named by <dir>.
-
-Once the databases have been built, the archives expected by the upgrade tests
-must be built using the "pack" script, in upgrade/scripts/pack-<version>.pl.
-This script must be edited slightly to specify the location on a given system
-of the DB source tree and utilities; it then converts the set of databases
-under the current working directory into a set of .tar.gz files containing
-the databases as well as flat files with their contents in item-by-item and
-db_dump formats.
-
-How to run the upgrade tests:
-
-Run "upgrade" from tclsh in the DB build directory. By default, this
-looks in upgrade/databases, in the DB source tree. An optional first argument
-can be used to specify an alternate directory.
-
-A note on 2.X tests:
-
-The 2.X packing script, as well as a patch against a 2.6.6 test directory
-to allow it to generate test databases, is in upgrade/generate-2.X.
-
-Note that the upgrade tests can be *run* on an the 2.X test archives
-without anything in this directory. It is provided only for
-archival reasons, in case there is ever reason to generate a new
-set of test databases.
-
-XXX: Note also that it quite likely has paths hard-coded for a specific
-system that is not yours.
-
-Known Issues:
-
-1. The following 2.X databases trigger a bug in the db 2.X hash code.
-This bug affects only empty and near-empty databases, and has been
-corrected in db 3.X, but it will prevent the following from passing
-the db_dump test. (They have been removed from the canonical database
-collection.)
-
- 2.X hash -- test026
- 2.X hash -- test038
- 2.X hash -- test039
- 2.X hash -- test040
-
-2. The 2.X recno versions of test043 cannot be made to pass the db_dump
-test because the 2.X version of db_dump has no -k flag and cannot preserve
-sparsely populated databases.
diff --git a/db/test/upgrade/generate-2.X/pack-2.6.6.pl b/db/test/upgrade/generate-2.X/pack-2.6.6.pl
deleted file mode 100644
index f031d46ca..000000000
--- a/db/test/upgrade/generate-2.X/pack-2.6.6.pl
+++ /dev/null
@@ -1,114 +0,0 @@
-#!/usr/bin/perl
-
-use strict;
-use Archive::Tar;
-
-my $subdir;
-my $file;
-my $archive_name;
-
-my $version = "2.6.6";
-my $build_dir = "/work/db/upgrade/db-2.6.6/build_unix";
-my $db_dump_path = "$build_dir/db_dump";
-my $pwd = `pwd`;
-
-$| = 1;
-
-chomp( $pwd );
-
-opendir( DIR, $version . "le" ) || die;
-while( $subdir = readdir( DIR ) )
-{
- if( $subdir !~ m{^\.\.?$} )
- {
- opendir( SUBDIR, $version . "le/$subdir" ) || die;
- while( $file = readdir( SUBDIR ) )
- {
- if( $file !~ m{^\.\.?$} )
- {
- print "[" . localtime() . "] " . "$subdir $file", "\n";
-
- eval
- {
- my $data;
- my $archive;
-
- system( "mkdir", "-p", "$version/$subdir" );
- $file =~ m{(.*)\.};
- $archive_name = "$1";
- $archive_name =~ s{Test}{test};
- $archive = Archive::Tar->new();
- $archive->add_data( "$archive_name-le.db",
- read_file( $version . "le/$subdir/$file" ) );
-# $archive->add_data( "$archive_name-be.db",
-# read_file( $version . "be/$subdir/$file" ) );
- $archive->add_data( "$archive_name.dump",
- db_dump( "$pwd/$version" . "le/$subdir/$file" ) );
- $data = tcl_dump( "$pwd/$version" . "le/$subdir/$file" );
- $archive->add_data( "$archive_name.tcldump", $data );
- $archive->write( "$version/$subdir/$archive_name.tar.gz", 9 );
- };
- if( $@ )
- {
- print( "Could not process $file: $@\n" );
- }
- }
- }
- }
-}
-
-sub read_file
-{
- my ($file) = @_;
- my $data;
-
- open( FILE, "<$file" ) || die;
- read( FILE, $data, -s $file );
- close( file );
-
- return $data;
-}
-
-sub db_dump
-{
- my ($file) = @_;
-
- #print $file, "\n";
- unlink( "temp.dump" );
- system( "sh", "-c", "$db_dump_path $file >temp.dump" ) && die;
- if( -e "temp.dump" )
- {
- return read_file( "temp.dump" );
- }
- else
- {
- die "db_dump failure: $file\n";
- }
-}
-
-sub tcl_dump
-{
- my ($file) = @_;
- my $up_dump_args = "";
-
- if ($file =~ /test012/) {
- $up_dump_args .= "1";
- }
-
- unlink( "temp.dump" );
- open( TCL, "|$build_dir/dbtest" );
-print TCL <<END;
-cd $build_dir
-source ../test/test.tcl
-upgrade_dump $file $pwd/temp.dump $up_dump_args
-END
- close( TCL );
- if( -e "temp.dump" )
- {
- return read_file( "temp.dump" );
- }
- else
- {
- die "TCL dump failure: $file\n";
- }
-}
diff --git a/db/test/upgrade/generate-2.X/test-2.6.patch b/db/test/upgrade/generate-2.X/test-2.6.patch
deleted file mode 100644
index 557e8061e..000000000
--- a/db/test/upgrade/generate-2.X/test-2.6.patch
+++ /dev/null
@@ -1,379 +0,0 @@
-diff -crN test.orig/test.tcl test/test.tcl
-*** test.orig/test.tcl Fri Dec 11 14:56:26 1998
---- test/test.tcl Mon Oct 4 15:26:16 1999
-***************
-*** 8,13 ****
---- 8,14 ----
- source ./include.tcl
- source ../test/testutils.tcl
- source ../test/byteorder.tcl
-+ source ../test/upgrade.tcl
-
- set testdir ./TESTDIR
- if { [file exists $testdir] != 1 } {
-***************
-*** 114,119 ****
---- 115,124 ----
- global debug_print
- global debug_on
- global runtests
-+
-+ global __method
-+ set __method $method
-+
- if { $stop == 0 } {
- set stop $runtests
- }
-diff -crN test.orig/testutils.tcl test/testutils.tcl
-*** test.orig/testutils.tcl Tue Dec 15 07:58:51 1998
---- test/testutils.tcl Wed Oct 6 17:40:45 1999
-***************
-*** 680,690 ****
---- 680,698 ----
-
- proc cleanup { dir } {
- source ./include.tcl
-+ global __method
-+ global errorInfo
- # Remove the database and environment.
- txn_unlink $dir 1
- memp_unlink $dir 1
- log_unlink $dir 1
- lock_unlink $dir 1
-+
-+ catch { exec mkdir -p /work/upgrade/2.6/$__method } res
-+ puts $res
-+ catch { exec sh -c "mv $dir/*.db /work/upgrade/2.6/$__method" } res
-+ puts $res
-+
- set ret [catch { glob $dir/* } result]
- if { $ret == 0 } {
- eval exec $RM -rf $result
-diff -crN test.orig/upgrade.tcl test/upgrade.tcl
-*** test.orig/upgrade.tcl Wed Dec 31 19:00:00 1969
---- test/upgrade.tcl Mon Oct 18 21:22:39 1999
-***************
-*** 0 ****
---- 1,322 ----
-+ # See the file LICENSE for redistribution information.
-+ #
-+ # Copyright (c) 1999
-+ # Sleepycat Software. All rights reserved.
-+ #
-+ # @(#)upgrade.tcl 11.1 (Sleepycat) 8/23/99
-+ #
-+ source ./include.tcl
-+ global gen_upgrade
-+ set gen_upgrade 0
-+ global upgrade_dir
-+ set upgrade_dir "/work/upgrade/DOTEST"
-+ global upgrade_be
-+ global upgrade_method
-+
-+ proc upgrade { } {
-+ source ./include.tcl
-+ global upgrade_dir
-+
-+ foreach version [glob $upgrade_dir/*] {
-+ regexp \[^\/\]*$ $version version
-+ foreach method [glob $upgrade_dir/$version/*] {
-+ regexp \[^\/\]*$ $method method
-+ foreach file [glob $upgrade_dir/$version/$method/*] {
-+ puts $file
-+ regexp (\[^\/\]*)\.tar\.gz$ $file dummy name
-+ foreach endianness {"le" "be"} {
-+ puts "Update: $version $method $name $endianness"
-+ set ret [catch {_upgrade $upgrade_dir $testdir $version $method $name $endianness 1 1} message]
-+ if { $ret != 0 } {
-+ puts $message
-+ }
-+ }
-+ }
-+ }
-+ }
-+ }
-+
-+ proc _upgrade { source_dir temp_dir version method file endianness do_db_load_test do_upgrade_test } {
-+ source include.tcl
-+ global errorInfo
-+
-+ cleanup $temp_dir
-+
-+ exec tar zxf "$source_dir/$version/$method/$file.tar.gz" -C $temp_dir
-+
-+ if { $do_db_load_test } {
-+ set ret [catch \
-+ {exec ./db_load -f "$temp_dir/$file.dump" \
-+ "$temp_dir/upgrade.db"} message]
-+ error_check_good \
-+ "Update load: $version $method $file $message" $ret 0
-+
-+ set ret [catch \
-+ {exec ./db_dump -f "$temp_dir/upgrade.dump" \
-+ "$temp_dir/upgrade.db"} message]
-+ error_check_good \
-+ "Update dump: $version $method $file $message" $ret 0
-+
-+ error_check_good "Update diff.1.1: $version $method $file" \
-+ [catch { exec $CMP "$temp_dir/$file.dump" "$temp_dir/upgrade.dump" } ret] 0
-+ error_check_good "Update diff.1.2: $version $method $file" $ret ""
-+ }
-+
-+ if { $do_upgrade_test } {
-+ set ret [catch {berkdb open -upgrade "$temp_dir/$file-$endianness.db"} db]
-+ if { $ret == 1 } {
-+ if { ![is_substr $errorInfo "version upgrade"] } {
-+ set fnl [string first "\n" $errorInfo]
-+ set theError [string range $errorInfo 0 [expr $fnl - 1]]
-+ error $theError
-+ }
-+ } else {
-+ error_check_good dbopen [is_valid_db $db] TRUE
-+ error_check_good dbclose [$db close] 0
-+
-+ set ret [catch \
-+ {exec ./db_dump -f "$temp_dir/upgrade.dump" \
-+ "$temp_dir/$file-$endianness.db"} message]
-+ error_check_good \
-+ "Update dump: $version $method $file $message" $ret 0
-+
-+ error_check_good "Update diff.2: $version $method $file" \
-+ [catch { exec $CMP "$temp_dir/$file.dump" "$temp_dir/upgrade.dump" } ret] 0
-+ error_check_good "Update diff.2: $version $method $file" $ret ""
-+ }
-+ }
-+ }
-+
-+ proc gen_upgrade { dir } {
-+ global gen_upgrade
-+ global upgrade_dir
-+ global upgrade_be
-+ global upgrade_method
-+ global __method
-+ global runtests
-+ source ./include.tcl
-+ set tclsh_path "/work/db/upgrade/db-2.6.6/build_unix/dbtest"
-+
-+ set gen_upgrade 1
-+ set upgrade_dir $dir
-+
-+ foreach upgrade_be { 0 1 } {
-+ foreach i "rrecno" {
-+ # "hash btree rbtree hash recno rrecno"
-+ puts "Running $i tests"
-+ set upgrade_method $i
-+ for { set j 1 } { $j <= $runtests } {incr j} {
-+ if [catch {exec $tclsh_path \
-+ << "source ../test/test.tcl; \
-+ run_method $i $j $j"} res] {
-+ puts "FAIL: [format "test%03d" $j] $i"
-+ }
-+ puts $res
-+ set __method $i
-+ cleanup $testdir
-+ }
-+ }
-+ }
-+
-+ set gen_upgrade 0
-+ }
-+
-+ proc upgrade_dump { database file {with_binkey 0} } {
-+ source ./include.tcl
-+ global errorInfo
-+
-+ set is_recno 0
-+
-+ set db [dbopen $database 0 0600 DB_UNKNOWN]
-+ set dbc [$db cursor 0]
-+
-+ set f [open $file w+]
-+ fconfigure $f -encoding binary -translation binary
-+
-+ #
-+ # Get a sorted list of keys
-+ #
-+ set key_list ""
-+ if { [catch {set pair [$dbc get "" $DB_FIRST]}] != 0 } {
-+ set pair [$dbc get 0 $DB_FIRST]
-+ set is_recno 1
-+ }
-+
-+ while { 1 } {
-+ if { [llength $pair] == 0 } {
-+ break
-+ }
-+ lappend key_list [list [lindex $pair 0]]
-+ set pair [$dbc get 0 $DB_NEXT]
-+ }
-+
-+
-+ # Discard duplicated keys; we now have a key for each
-+ # duplicate, not each unique key, and we don't want to get each
-+ # duplicate multiple times when we iterate over key_list.
-+ set uniq_keys {}
-+ foreach key $key_list {
-+ if { [info exists existence_list($key)] == 0 } {
-+ lappend uniq_keys [list $key]
-+ }
-+ set existence_list($key) 1
-+ }
-+ set key_list $uniq_keys
-+
-+ set key_list [lsort -command _comp $key_list]
-+
-+ #foreach llave $key_list {
-+ # puts $llave
-+ #}
-+
-+ #
-+ # Get the data for each key
-+ #
-+
-+ for { set i 0 } { $i < [llength $key_list] } { incr i } {
-+ set key [concat [lindex $key_list $i]]
-+ # XXX Gross awful hack. We want to DB_SET in the vast
-+ # majority of cases, but DB_SET can't handle binary keys
-+ # in the 2.X Tcl interface. So we look manually and linearly
-+ # for the key we want if with_binkey == 1.
-+ if { $with_binkey != 1 } {
-+ set pair [$dbc get $key $DB_SET]
-+ } else {
-+ set pair [_search_binkey $key $dbc]
-+ }
-+ if { $is_recno != 1 } {
-+ set key [upgrade_convkey $key $dbc]
-+ }
-+ #puts "pair:$pair:[lindex $pair 1]"
-+ set data [lindex $pair 1]
-+ set data [upgrade_convdata $data $dbc]
-+ set data_list [list $data]
-+ catch { while { $is_recno == 0 } {
-+ set pair [$dbc get 0 $DB_NEXT_DUP]
-+ if { [llength $pair] == 0 } {
-+ break
-+ }
-+
-+ set data [lindex $pair 1]
-+ set data [upgrade_convdata $data $dbc]
-+ lappend data_list [list $data]
-+ } }
-+ set data_list [lsort -command _comp $data_list]
-+ puts -nonewline $f [binary format i [string length $key]]
-+ puts -nonewline $f $key
-+ puts -nonewline $f [binary format i [llength $data_list]]
-+ for { set j 0 } { $j < [llength $data_list] } { incr j } {
-+ puts -nonewline $f [binary format i [string length [concat [lindex $data_list $j]]]]
-+ puts -nonewline $f [concat [lindex $data_list $j]]
-+ }
-+ }
-+
-+ close $f
-+ }
-+
-+ proc _comp { a b } {
-+ # return expr [[concat $a] < [concat $b]]
-+ return [string compare [concat $a] [concat $b]]
-+ }
-+
-+ # Converts a key to the format of keys in the 3.X Tcl interface
-+ proc upgrade_convkey { key dbc } {
-+ source ./include.tcl
-+
-+ # Stick a null on the end.
-+ set k "$key\0"
-+
-+ set tmp $testdir/gb0
-+
-+ # Attempt a dbc getbinkey to get any additional parts of the key.
-+ set dbt [$dbc getbinkey $tmp 0 $DB_CURRENT]
-+
-+ set tmpid [open $tmp r]
-+ fconfigure $tmpid -encoding binary -translation binary
-+ set cont [read $tmpid]
-+
-+ set k $k$cont
-+
-+ close $tmpid
-+
-+ exec $RM -f $tmp
-+
-+ return $k
-+ }
-+
-+ # Converts a datum to the format of data in the 3.X Tcl interface
-+ proc upgrade_convdata { data dbc } {
-+ source ./include.tcl
-+ set is_partial 0
-+
-+ # Get the datum out of "data"
-+ if { [llength $data] == 1 } {
-+ set d [lindex $data 0]
-+ } elseif { [llength $data] == 2 } {
-+ # It was a partial return; the first arg is the number of nuls
-+ set d [lindex $data 1]
-+ set numnul [lindex $data 0]
-+ while { $numnul > 0 } {
-+ set d "\0$d"
-+ incr numnul -1
-+ }
-+
-+ # The old Tcl getbin and the old Tcl partial put
-+ # interface are incompatible; we'll wind up returning
-+ # the datum twice if we try a getbin now. So
-+ # set a flag to avoid it.
-+ set is_partial 1
-+
-+ } else {
-+ set d $data
-+ }
-+
-+
-+ if { $is_partial != 1 } {
-+
-+ # Stick a null on the end.
-+ set d "$d\0"
-+
-+ set tmp $testdir/gb1
-+
-+ # Attempt a dbc getbin to get any additional parts of the datum
-+ # the Tcl interface has neglected.
-+ set dbt [$dbc getbin $tmp 0 $DB_CURRENT]
-+
-+ set tmpid [open $tmp r]
-+ fconfigure $tmpid -encoding binary -translation binary
-+ set cont [read $tmpid]
-+
-+ set d $d$cont
-+
-+ #puts "$data->$d"
-+
-+ close $tmpid
-+ }
-+
-+ return [list $d]
-+ }
-+
-+ # Implement the DB_SET functionality, stupidly, in terms of DB_NEXT and
-+ # manual comparisons. We have to use this instead of DB_SET with
-+ # binary keys, as the old Tcl interface can't handle binary keys but DB_SET
-+ # requires them. So instead, we page through using DB_NEXT, which returns
-+ # the binary keys only up to the first null, and compare to our specified
-+ # key, which is similarly truncated.
-+ #
-+ # This is really slow, but is seldom used.
-+ proc _search_binkey { key dbc } {
-+ #puts "doing _search_binkey $key $dbc"
-+ source ./include.tcl
-+ set dbt [$dbc get 0 $DB_FIRST]
-+ while { [llength $dbt] != 0 } {
-+ set curkey [lindex $dbt 0]
-+ if { [string compare $key $curkey] == 0 } {
-+ return $dbt
-+ }
-+ set dbt [$dbc get 0 $DB_NEXT]
-+ }
-+
-+ # We didn't find it. Return an empty list.
-+ return {}
-+ }
diff --git a/db/test/wrap.tcl b/db/test/wrap.tcl
index 183f03c92..fa9c93847 100644
--- a/db/test/wrap.tcl
+++ b/db/test/wrap.tcl
@@ -1,9 +1,8 @@
# See the file LICENSE for redistribution information.
#
-# Copyright (c) 2000-2006
-# Oracle Corporation. All rights reserved.
+# Copyright (c) 2000,2007 Oracle. All rights reserved.
#
-# $Id: wrap.tcl,v 12.4 2006/08/24 14:46:41 bostic Exp $
+# $Id: wrap.tcl,v 12.7 2007/07/03 13:59:39 carol Exp $
#
# Sentinel file wrapper for multi-process tests. This is designed to avoid a
# set of nasty bugs, primarily on Windows, where pid reuse causes watch_procs
@@ -68,7 +67,7 @@ set scr $test_path/$script
puts $t "set scr $scr"
puts $t {set ret [catch { source $scr } result]}
puts $t {if { [string length $result] > 0 } { puts $result }}
-puts $t {error_check_good "$scr run: pid [pid]" $ret 0}
+puts $t {error_check_good "$scr run: $result: pid [pid]" $ret 0}
# Close the pipe. This will flush the above commands and actually run the
# test, and will also return an error a la exec if anything bad happens
diff --git a/db/test_micro/README b/db/test_micro/README
new file mode 100644
index 000000000..331f7b477
--- /dev/null
+++ b/db/test_micro/README
@@ -0,0 +1,92 @@
+# $Id: README,v 1.5 2007/05/29 17:32:27 bostic Exp $
+
+A simple framework for core Berkeley DB micro-benchmarks, intended for
+two purposes: to certify a port of Berkeley DB to a new platform, and
+to provide micro-benchmark information between different Berkeley DB
+releases.
+
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+To run the tests:
+
+1. Unpack and build the Berkeley DB releases you want to run against.
+
+2. Run the tests:
+
+ % sh test_micro
+
+ By default, tests are run for all of the Berkeley DB builds found in
+ the current working directory. A build is identified by its top-level
+ name, and is expected to be of the form:
+
+ db-<major>.<minor>.<patch>
+
+ and the fact the Berkeley DB library has been built in the standard
+ location in that directory tree (for example, in "build_unix".
+ Directories with other names and directories without a library will
+ be ignored.
+
+ You can run a subset of the tests using command-line arguments:
+
+ % sh test_micro 3 # Run test 3
+ % sh test_micro 3-5 # Run tests 3-5
+ % sh test_micro 3- # Run test 3 to the maximum test
+ % sh test_micro -3 # Run tests 1-3
+
+ You can run on a subset of the releases using the MAJOR and MINOR
+ environment variables:
+
+ % env MAJOR=4 MINOR=2 sh test_micro # Run on 4.2.XX
+ # Run on 4.1.XX and 4.2.XX
+ % env MAJOR=4 MINOR='[12]' sh test_micro
+
+3. If you want to generate the micro-benchmark output build the HTML
+ page after the run:
+
+ % sh test_micro html
+
+ The output of the tests and the web page are created in the directory
+ RUN.hostname (for example, "RUN.abyssinian"). The tests are numeric
+ filenames (for example, "1", "2", "36"). The web page output is in the
+ file "test_micro.html".
+
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+To add a new test program:
+
+1. Add a new file to the SOURCE directory. If you're using gcc as your
+ compiler, the default compile line is:
+
+ gcc -O3 -Wall -lpthread -I. source.c -o t libdb.a
+
+ otherwise, the default compile line is
+
+ cc -O2 -I. source.c -o t libdb.a
+
+ If your compiler offers different or better optimization, and you're
+ running the script to output benchmark results, you should change the
+ run script to take advantage of your compiler's optimization options.
+
+ The file must output the following line on stdout:
+
+ # title
+ major.minor.patch<tab>operations/second
+
+ For example:
+
+ # 10000 Btree database open/close pairs
+ 3.0.55 29600.69
+ 3.1.17 30438.25
+
+2. Add a new line to the "runone" function in the shell script "test_micro"
+ as follows:
+
+ #) runone $1 source-file "./t command-line";;
+
+ For example:
+
+ 27) runone $1 b_curwalk.c "./t -c 100000 -t btree -w 100";;
+ 28) runone $1 b_curwalk.c "./t -c 100000 -t hash" -w 100;;
+ 29) runone $1 b_curwalk.c "./t -c 100000 -t queue" -w 100;;
+ 30) runone $1 b_curwalk.c "./t -c 100000 -t recno" -w 100;;
+
+3. Update the value of the shell script "test_micro" variable "maxtest" to
+ be the new maximum test number.
diff --git a/db/test_micro/SOURCE/LIST b/db/test_micro/SOURCE/LIST
new file mode 100644
index 000000000..84ce95c5b
--- /dev/null
+++ b/db/test_micro/SOURCE/LIST
@@ -0,0 +1,26 @@
+b_curalloc.c
+ allocate a cursor
+b_curwalk.c
+ walk a cursor through N records
+b_del.c
+ delete N records
+b_get.c
+ read a single record
+b_load.c
+ insert N in-order records
+ insert N in-order duplicate records
+b_open.c
+ open/close a database
+b_put.c
+ overwrite a single record
+ optionally with secondaries
+b_txn.c
+ start/abort a transaction containing no operations
+ start/commit a transaction containing no operations
+b_txn_write.c
+ write/commit transaction synchronously
+ write/commit transaction nosync
+ write/commit transaction write-nosync
+ optionally with replication stub
+b_recover.c
+ time recovery after N transactions.
diff --git a/db/test_micro/SOURCE/b_curalloc.c b/db/test_micro/SOURCE/b_curalloc.c
new file mode 100644
index 000000000..ae21ade7b
--- /dev/null
+++ b/db/test_micro/SOURCE/b_curalloc.c
@@ -0,0 +1,63 @@
+/*
+ * $Id: b_curalloc.c,v 1.8 2007/05/29 17:39:15 bostic Exp $
+ */
+#include "bench.h"
+
+int usage(void);
+
+int
+main(int argc, char *argv[])
+{
+ DB *dbp;
+ DBC *curp;
+ int ch, i, count;
+
+ cleanup_test_dir();
+
+ count = 100000;
+ while ((ch = getopt(argc, argv, "c:")) != EOF)
+ switch (ch) {
+ case 'c':
+ count = atoi(optarg);
+ break;
+ case '?':
+ default:
+ return (usage());
+ }
+ argc -= optind;
+ argv += optind;
+ if (argc != 0)
+ return (usage());
+
+ /* Create the database. */
+ DB_BENCH_ASSERT(db_create(&dbp, NULL, 0) == 0);
+ dbp->set_errfile(dbp, stderr);
+
+#if DB_VERSION_MAJOR >= 4 && DB_VERSION_MINOR >= 1
+ DB_BENCH_ASSERT(
+ dbp->open(dbp, NULL, "a", NULL, DB_BTREE, DB_CREATE, 0666) == 0);
+#else
+ DB_BENCH_ASSERT(
+ dbp->open(dbp, "a", NULL, DB_BTREE, DB_CREATE, 0666) == 0);
+#endif
+
+ /* Allocate a cursor count times. */
+ TIMER_START;
+ for (i = 0; i < count; ++i) {
+ DB_BENCH_ASSERT(dbp->cursor(dbp, NULL, &curp, 0) == 0);
+ DB_BENCH_ASSERT(curp->c_close(curp) == 0);
+ }
+ TIMER_STOP;
+
+ printf("# %d cursor allocations\n", count);
+ TIMER_DISPLAY(count);
+
+ return (0);
+}
+
+int
+usage()
+{
+ (void)fprintf(stderr, "usage: b_curalloc [-c count]\n");
+ return (EXIT_FAILURE);
+}
diff --git a/db/test_micro/SOURCE/b_curwalk.c b/db/test_micro/SOURCE/b_curwalk.c
new file mode 100644
index 000000000..429273bec
--- /dev/null
+++ b/db/test_micro/SOURCE/b_curwalk.c
@@ -0,0 +1,182 @@
+/*
+ * $Id: b_curwalk.c,v 1.10 2007/05/29 17:39:15 bostic Exp $
+ */
+#include "bench.h"
+
+int usage(void);
+
+int
+main(int argc, char *argv[])
+{
+ DB *dbp;
+ DBTYPE type;
+ DBC *dbc;
+ DBT key, data;
+ db_recno_t recno;
+ u_int32_t walkflags;
+ int ch, i, count, dupcount, j;
+ int prev, ret, skipdupwalk, sorted, walkcount;
+ char *ts, dbuf[32], kbuf[32];
+
+ cleanup_test_dir();
+
+ count = 100000;
+ dupcount = prev = skipdupwalk = sorted = 0;
+ walkcount = 1000;
+ ts = "Btree";
+ type = DB_BTREE;
+ while ((ch = getopt(argc, argv, "c:d:pSst:w:")) != EOF)
+ switch (ch) {
+ case 'c':
+ count = atoi(optarg);
+ break;
+ case 'd':
+ dupcount = atoi(optarg);
+ break;
+ case 'p':
+ prev = 1;
+ break;
+ case 'S':
+ skipdupwalk = 1;
+ break;
+ case 's':
+ sorted = 1;
+ break;
+ case 't':
+ switch (optarg[0]) {
+ case 'B': case 'b':
+ ts = "Btree";
+ type = DB_BTREE;
+ break;
+ case 'H': case 'h':
+ ts = "Hash";
+ type = DB_HASH;
+ break;
+ case 'Q': case 'q':
+ ts = "Queue";
+ type = DB_QUEUE;
+ break;
+ case 'R': case 'r':
+ ts = "Recno";
+ type = DB_RECNO;
+ break;
+ default:
+ return (usage());
+ }
+ break;
+ case 'w':
+ walkcount = atoi(optarg);
+ break;
+ case '?':
+ default:
+ return (usage());
+ }
+ argc -= optind;
+ argv += optind;
+ if (argc != 0)
+ return (usage());
+
+ /*
+ * Queue and Recno don't support duplicates.
+ */
+ if (dupcount != 0 && (type == DB_QUEUE || type == DB_RECNO)) {
+ fprintf(stderr,
+ "b_curwalk: Queue and Recno don't support duplicates\n");
+ return (usage());
+ }
+
+#if DB_VERSION_MAJOR < 3 || DB_VERSION_MAJOR == 3 && DB_VERSION_MINOR == 0
+#define DB_PREV_NODUP 0
+ /*
+ * DB_PREV_NODUP wasn't available until after 3.0.55.
+ *
+ * For some reason, testing sorted duplicates doesn't work either.
+ * I don't really care about 3.0.55 any more, just ignore it.
+ */
+ return (0);
+#endif
+
+ /* Create the database. */
+ DB_BENCH_ASSERT(db_create(&dbp, NULL, 0) == 0);
+ DB_BENCH_ASSERT(
+ dbp->set_cachesize(dbp, 0, 10 * 1024 * 1024 /* 10MB */, 0) == 0);
+ DB_BENCH_ASSERT(dbp->set_pagesize(dbp, 16 * 1024 /* 16KB */) == 0);
+ dbp->set_errfile(dbp, stderr);
+
+ /* Set record length for Queue. */
+ if (type == DB_QUEUE)
+ DB_BENCH_ASSERT(dbp->set_re_len(dbp, 20) == 0);
+
+ /* Set duplicates flag. */
+ if (dupcount != 0)
+ DB_BENCH_ASSERT(
+ dbp->set_flags(dbp, sorted ? DB_DUPSORT : DB_DUP) == 0);
+
+#if DB_VERSION_MAJOR >= 4 && DB_VERSION_MINOR >= 1
+ DB_BENCH_ASSERT(dbp->open(
+ dbp, NULL, "a", NULL, type, DB_CREATE, 0666) == 0);
+#else
+ DB_BENCH_ASSERT(dbp->open(
+ dbp, "a", NULL, type, DB_CREATE, 0666) == 0);
+#endif
+
+ /* Initialize the data. */
+ memset(&key, 0, sizeof(key));
+ memset(&data, 0, sizeof(data));
+
+ /* Insert count in-order key/data pairs. */
+ data.data = dbuf;
+ data.size = 20;
+ if (type == DB_BTREE || type == DB_HASH) {
+ key.size = 10;
+ key.data = kbuf;
+ for (i = 0; i < count; ++i) {
+ (void)snprintf(kbuf, sizeof(kbuf), "%010d", i);
+ for (j = 0; j <= dupcount; ++j) {
+ (void)snprintf(dbuf, sizeof(dbuf), "%020d", j);
+ DB_BENCH_ASSERT(
+ dbp->put(dbp, NULL, &key, &data, 0) == 0);
+ }
+ }
+ } else {
+ key.data = &recno;
+ key.size = sizeof(recno);
+ for (i = 0, recno = 1; i < count; ++i, ++recno)
+ DB_BENCH_ASSERT(
+ dbp->put(dbp, NULL, &key, &data, 0) == 0);
+ }
+
+ walkflags = prev ?
+ (skipdupwalk ? DB_PREV_NODUP : DB_PREV) :
+ (skipdupwalk ? DB_NEXT_NODUP : DB_NEXT);
+
+ /* Walk the cursor through the tree N times. */
+ TIMER_START;
+ for (i = 0; i < walkcount; ++i) {
+ DB_BENCH_ASSERT(dbp->cursor(dbp, NULL, &dbc, 0) == 0);
+ while ((ret = dbc->c_get(dbc, &key, &data, walkflags)) == 0);
+ DB_BENCH_ASSERT(ret == DB_NOTFOUND);
+ DB_BENCH_ASSERT(dbc->c_close(dbc) == 0);
+ }
+ TIMER_STOP;
+
+ printf("# %d %s %s cursor of %d 10/20 byte key/data items",
+ walkcount, ts, prev ?
+ (skipdupwalk ? "DB_PREV_NODUP" : "DB_PREV") :
+ (skipdupwalk ? "DB_NEXT_NODUP" : "DB_NEXT"),
+ count);
+ if (dupcount != 0)
+ printf(" with %d dups", dupcount);
+ printf("\n");
+ TIMER_DISPLAY(count);
+
+ return (EXIT_SUCCESS);
+}
+
+int
+usage()
+{
+ (void)fprintf(stderr,
+ "usage: b_curwalk [-pSs] [-c cnt] [-d dupcnt] [-t type] [-w walkcnt]\n");
+ return (EXIT_FAILURE);
+}
diff --git a/db/test_micro/SOURCE/b_del.c b/db/test_micro/SOURCE/b_del.c
new file mode 100644
index 000000000..09edb2577
--- /dev/null
+++ b/db/test_micro/SOURCE/b_del.c
@@ -0,0 +1,149 @@
+/*
+ * $Id: b_del.c,v 1.10 2007/05/29 17:39:15 bostic Exp $
+ */
+#include "bench.h"
+
+int usage(void);
+
+int
+main(int argc, char *argv[])
+{
+ DB *dbp;
+ DBC *dbc;
+ DBT key, data;
+ DBTYPE type;
+ db_recno_t recno;
+ int ch, i, count, ret, use_cursor;
+ char *ts, buf[32];
+
+ cleanup_test_dir();
+
+ type = DB_BTREE;
+ count = 100000;
+ use_cursor = 0;
+ ts = "Btree";
+ while ((ch = getopt(argc, argv, "Cc:t:")) != EOF)
+ switch (ch) {
+ case 'C':
+ use_cursor = 1;
+ break;
+ case 'c':
+ count = atoi(optarg);
+ break;
+ case 't':
+ switch (optarg[0]) {
+ case 'B': case 'b':
+ ts = "Btree";
+ type = DB_BTREE;
+ break;
+ case 'H': case 'h':
+ ts = "Hash";
+ type = DB_HASH;
+ break;
+ case 'Q': case 'q':
+ ts = "Queue";
+ type = DB_QUEUE;
+ break;
+ case 'R': case 'r':
+ ts = "Recno";
+ type = DB_RECNO;
+ break;
+ default:
+ return (usage());
+ }
+ break;
+ case '?':
+ default:
+ return (usage());
+ }
+ argc -= optind;
+ argv += optind;
+ if (argc != 0)
+ return (usage());
+
+ /* Create the database. */
+ DB_BENCH_ASSERT(db_create(&dbp, NULL, 0) == 0);
+ DB_BENCH_ASSERT(dbp->set_cachesize(dbp, 0, 1048576 /* 1MB */, 0) == 0);
+ dbp->set_errfile(dbp, stderr);
+
+ /* Set record length for Queue. */
+ if (type == DB_QUEUE)
+ DB_BENCH_ASSERT(dbp->set_re_len(dbp, 20) == 0);
+
+#if DB_VERSION_MAJOR >= 4 && DB_VERSION_MINOR >= 1
+ DB_BENCH_ASSERT(
+ dbp->open(dbp, NULL, "a", NULL, type, DB_CREATE, 0666) == 0);
+#else
+ DB_BENCH_ASSERT(dbp->open(dbp, "a", NULL, type, DB_CREATE, 0666) == 0);
+#endif
+
+ /* Initialize the data. */
+ memset(&key, 0, sizeof(key));
+ memset(&data, 0, sizeof(data));
+ data.data = "01234567890123456789";
+ data.size = 20;
+
+ /* Store a key/data pair. */
+ switch (type) {
+ case DB_BTREE:
+ case DB_HASH:
+ key.data = buf;
+ key.size = 10;
+ break;
+ case DB_QUEUE:
+ case DB_RECNO:
+ key.data = &recno;
+ key.size = sizeof(recno);
+ break;
+ case DB_UNKNOWN:
+ abort();
+ break;
+ }
+
+ /* Insert count in-order key/data pairs. */
+ if (type == DB_BTREE || type == DB_HASH)
+ for (i = 0; i < count; ++i) {
+ (void)snprintf(buf, sizeof(buf), "%010d", i);
+ DB_BENCH_ASSERT(
+ dbp->put(dbp, NULL, &key, &data, 0) == 0);
+ }
+ else
+ for (i = 0, recno = 1; i < count; ++i, ++recno)
+ DB_BENCH_ASSERT(
+ dbp->put(dbp, NULL, &key, &data, 0) == 0);
+
+ /* Delete the records. */
+ TIMER_START;
+ if (use_cursor) {
+ DB_BENCH_ASSERT(dbp->cursor(dbp, NULL, &dbc, 0) == 0);
+ while ((ret = dbc->c_get(dbc, &key, &data, DB_NEXT)) == 0)
+ DB_BENCH_ASSERT(dbc->c_del(dbc, 0) == 0);
+ DB_BENCH_ASSERT (ret == DB_NOTFOUND);
+ } else
+ if (type == DB_BTREE || type == DB_HASH)
+ for (i = 0; i < count; ++i) {
+ (void)snprintf(buf, sizeof(buf), "%010d", i);
+ DB_BENCH_ASSERT(
+ dbp->del(dbp, NULL, &key, 0) == 0);
+ }
+ else
+ for (i = 0, recno = 1; i < count; ++i, ++recno)
+ DB_BENCH_ASSERT(
+ dbp->del(dbp, NULL, &key, 0) == 0);
+
+ TIMER_STOP;
+
+ printf(
+ "# %d %s database in-order delete of 10/20 byte key/data pairs using %s\n",
+ count, ts, use_cursor ? "a cursor" : "the key");
+ TIMER_DISPLAY(count);
+
+ return (0);
+}
+
+int
+usage()
+{
+ (void)fprintf(stderr, "usage: b_del [-C] [-c count] [-t type]\n");
+ return (EXIT_FAILURE);
+}
diff --git a/db/test_micro/SOURCE/b_get.c b/db/test_micro/SOURCE/b_get.c
new file mode 100644
index 000000000..7fa5388b3
--- /dev/null
+++ b/db/test_micro/SOURCE/b_get.c
@@ -0,0 +1,118 @@
+/*
+ * $Id: b_get.c,v 1.10 2007/05/29 18:53:43 bostic Exp $
+ */
+#include "bench.h"
+
+int usage(void);
+
+int
+main(int argc, char *argv[])
+{
+ DB *dbp;
+ DBTYPE type;
+ DBT key, data;
+ db_recno_t recno;
+ int ch, i, count;
+ char *ts;
+
+ dbp = NULL;
+ cleanup_test_dir();
+
+ count = 100000;
+ ts = "Btree";
+ type = DB_BTREE;
+
+ while ((ch = getopt(argc, argv, "c:t:")) != EOF)
+ switch (ch) {
+ case 'c':
+ count = atoi(optarg);
+ break;
+ case 't':
+ switch (optarg[0]) {
+ case 'B': case 'b':
+ ts = "Btree";
+ type = DB_BTREE;
+ break;
+ case 'H': case 'h':
+ ts = "Hash";
+ type = DB_HASH;
+ break;
+ case 'Q': case 'q':
+ ts = "Queue";
+ type = DB_QUEUE;
+ break;
+ case 'R': case 'r':
+ ts = "Recno";
+ type = DB_RECNO;
+ break;
+ default:
+ return (usage());
+ }
+ break;
+ case '?':
+ default:
+ return (usage());
+ }
+ argc -= optind;
+ argv += optind;
+ if (argc != 0)
+ return (usage());
+
+ /* Create the database. */
+ DB_BENCH_ASSERT(db_create(&dbp, NULL, 0) == 0);
+ DB_BENCH_ASSERT(dbp->set_cachesize(dbp, 0, 1048576 /* 1MB */, 0) == 0);
+ dbp->set_errfile(dbp, stderr);
+
+ /* Set record length for Queue. */
+ if (type == DB_QUEUE)
+ DB_BENCH_ASSERT(dbp->set_re_len(dbp, 10) == 0);
+
+#if DB_VERSION_MAJOR >= 4 && DB_VERSION_MINOR >= 1
+ DB_BENCH_ASSERT(
+ dbp->open(dbp, NULL, "a", NULL, type, DB_CREATE, 0666) == 0);
+#else
+ DB_BENCH_ASSERT(dbp->open(dbp, "a", NULL, type, DB_CREATE, 0666) == 0);
+#endif
+
+ /* Store a key/data pair. */
+ memset(&key, 0, sizeof(key));
+ memset(&data, 0, sizeof(data));
+ switch (type) {
+ case DB_BTREE:
+ case DB_HASH:
+ key.data = "aaaaa";
+ key.size = 5;
+ break;
+ case DB_QUEUE:
+ case DB_RECNO:
+ recno = 1;
+ key.data = &recno;
+ key.size = sizeof(recno);
+ break;
+ case DB_UNKNOWN:
+ abort();
+ break;
+ }
+ data.data = "bbbbb";
+ data.size = 5;
+
+ DB_BENCH_ASSERT(dbp->put(dbp, NULL, &key, &data, 0) == 0);
+
+ /* Retrieve the key/data pair count times. */
+ TIMER_START;
+ for (i = 0; i < count; ++i)
+ DB_BENCH_ASSERT(dbp->get(dbp, NULL, &key, &data, 0) == 0);
+ TIMER_STOP;
+
+ printf("# %d %s database get of cached key/data item\n", count, ts);
+ TIMER_DISPLAY(count);
+
+ return (0);
+}
+
+int
+usage()
+{
+ (void)fprintf(stderr, "usage: b_get [-c count] [-t type]\n");
+ return (EXIT_FAILURE);
+}
diff --git a/db/test_micro/SOURCE/b_load.c b/db/test_micro/SOURCE/b_load.c
new file mode 100644
index 000000000..12cd8c84d
--- /dev/null
+++ b/db/test_micro/SOURCE/b_load.c
@@ -0,0 +1,147 @@
+/*
+ * $Id: b_load.c,v 1.12 2007/07/02 09:31:20 moshen Exp $
+ */
+#include "bench.h"
+
+int usage(void);
+
+int
+main(int argc, char *argv[])
+{
+ DB *dbp;
+ DBTYPE type;
+ DBT key, data;
+ db_recno_t recno;
+ int ch, i, count, duplicate;
+ char *ts, buf[32];
+
+ cleanup_test_dir();
+
+ duplicate = 0;
+ count = 100000;
+ ts = "Btree";
+ type = DB_BTREE;
+ while ((ch = getopt(argc, argv, "c:dt:")) != EOF)
+ switch (ch) {
+ case 'c':
+ count = atoi(optarg);
+ break;
+ case 'd':
+ duplicate = 1;
+ break;
+ case 't':
+ switch (optarg[0]) {
+ case 'B': case 'b':
+ ts = "Btree";
+ type = DB_BTREE;
+ break;
+ case 'H': case 'h':
+ ts = "Hash";
+ type = DB_HASH;
+ break;
+ case 'Q': case 'q':
+ ts = "Queue";
+ type = DB_QUEUE;
+ break;
+ case 'R': case 'r':
+ ts = "Recno";
+ type = DB_RECNO;
+ break;
+ default:
+ return (usage());
+ }
+ break;
+ case '?':
+ default:
+ return (usage());
+ }
+ argc -= optind;
+ argv += optind;
+ if (argc != 0)
+ return (usage());
+
+ /* Usage. */
+ if (duplicate && (type == DB_QUEUE || type == DB_RECNO)) {
+ fprintf(stderr,
+ "b_load: Queue an Recno don't support duplicates\n");
+ return (usage());
+ }
+
+#if DB_VERSION_MAJOR < 3 || DB_VERSION_MAJOR == 3 && DB_VERSION_MINOR < 1
+ /*
+ * DB versions prior to 3.1.17 didn't have off-page duplicates, so
+ * this test can run forever.
+ */
+ if (duplicate)
+ return (0);
+#endif
+
+ /* Create the database. */
+ DB_BENCH_ASSERT(db_create(&dbp, NULL, 0) == 0);
+ DB_BENCH_ASSERT(dbp->set_cachesize(dbp, 0, 1048576 /* 1MB */, 0) == 0);
+ if (duplicate)
+ DB_BENCH_ASSERT(dbp->set_flags(dbp, DB_DUP) == 0);
+ dbp->set_errfile(dbp, stderr);
+
+ /* Set record length for Queue. */
+ if (type == DB_QUEUE)
+ DB_BENCH_ASSERT(dbp->set_re_len(dbp, 20) == 0);
+
+#if DB_VERSION_MAJOR >= 4 && DB_VERSION_MINOR >= 1
+ DB_BENCH_ASSERT(
+ dbp->open(dbp, NULL, "a", NULL, type, DB_CREATE, 0666) == 0);
+#else
+ DB_BENCH_ASSERT(dbp->open(dbp, "a", NULL, type, DB_CREATE, 0666) == 0);
+#endif
+
+ /* Initialize the data. */
+ memset(&key, 0, sizeof(key));
+ memset(&data, 0, sizeof(data));
+
+ /* Insert count in-order key/data pairs. */
+ TIMER_START;
+ if (duplicate) {
+ key.size = 10;
+ key.data = "01234567890123456789";
+ data.data = buf;
+ data.size = 20;
+ for (i = 0; i < count; ++i) {
+ (void)snprintf(buf, sizeof(buf), "%020d", i);
+ DB_BENCH_ASSERT(
+ dbp->put(dbp, NULL, &key, &data, 0) == 0);
+ }
+ } else {
+ data.data = buf;
+ data.size = 20;
+ if (type == DB_BTREE || type == DB_HASH) {
+ key.size = 10;
+ key.data = buf;
+ for (i = 0; i < count; ++i) {
+ (void)snprintf(buf, sizeof(buf), "%010d", i);
+ DB_BENCH_ASSERT(
+ dbp->put(dbp, NULL, &key, &data, 0) == 0);
+ }
+ } else {
+ key.data = &recno;
+ key.size = sizeof(recno);
+ for (i = 0, recno = 1; i < count; ++i, ++recno)
+ DB_BENCH_ASSERT(
+ dbp->put(dbp, NULL, &key, &data, 0) == 0);
+ }
+ }
+
+ TIMER_STOP;
+
+ printf("# %d %s database in-order put of 10/20 byte key/data %sitems\n",
+ count, ts, duplicate ? "duplicate " : "");
+ TIMER_DISPLAY(count);
+
+ return (0);
+}
+
+int
+usage()
+{
+ (void)fprintf(stderr, "usage: b_load [-d] [-c count] [-t type]\n");
+ return (EXIT_FAILURE);
+}
diff --git a/db/test_micro/SOURCE/b_open.c b/db/test_micro/SOURCE/b_open.c
new file mode 100644
index 000000000..722fc6b5c
--- /dev/null
+++ b/db/test_micro/SOURCE/b_open.c
@@ -0,0 +1,138 @@
+/*
+ * $Id: b_open.c,v 1.9 2007/05/29 18:53:43 bostic Exp $
+ */
+#include "bench.h"
+
+int usage(void);
+
+int
+main(int argc, char *argv[])
+{
+ DB_ENV *dbenv;
+ DB *dbp;
+ DBTYPE type;
+ int ch, i, count;
+ char *fname, *dbname, *ts;
+
+ cleanup_test_dir();
+
+ count = 1000;
+ ts = "Btree";
+ type = DB_BTREE;
+ fname = dbname = NULL;
+ while ((ch = getopt(argc, argv, "c:dft:")) != EOF)
+ switch (ch) {
+ case 'c':
+ count = atoi(optarg);
+ break;
+ case 'd':
+ dbname = "dbname";
+ break;
+ case 'f':
+ fname = "filename";
+ break;
+ case 't':
+ switch (optarg[0]) {
+ case 'B': case 'b':
+ ts = "Btree";
+ type = DB_BTREE;
+ break;
+ case 'H': case 'h':
+ ts = "Hash";
+ type = DB_HASH;
+ break;
+ case 'Q': case 'q':
+ ts = "Queue";
+ type = DB_QUEUE;
+ break;
+ case 'R': case 'r':
+ ts = "Recno";
+ type = DB_RECNO;
+ break;
+ default:
+ return (usage());
+ }
+ break;
+ case '?':
+ default:
+ return (usage());
+ }
+ argc -= optind;
+ argv += optind;
+ if (argc != 0)
+ return (usage());
+
+#if DB_VERSION_MAJOR < 4
+ /*
+ * Don't run in-memory database tests on versions less than 3, it
+ * takes forever and eats memory.
+ */
+ if (fname == NULL && dbname == NULL)
+ return (0);
+#endif
+#if DB_VERSION_MAJOR < 4 || DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR < 4
+ /*
+ * Named in-memory databases weren't available until 4.4.
+ */
+ if (fname == NULL && dbname != NULL)
+ return (0);
+#endif
+
+ /* Create the environment. */
+ DB_BENCH_ASSERT(db_env_create(&dbenv, 0) == 0);
+ dbenv->set_errfile(dbenv, stderr);
+ DB_BENCH_ASSERT(dbenv->set_cachesize(
+ dbenv, 0, 1 * 1024 * 1024 /* 1MB */, 0) == 0);
+#if DB_VERSION_MAJOR == 3 && DB_VERSION_MINOR == 0
+ DB_BENCH_ASSERT(dbenv->open(dbenv, "TESTDIR",
+ NULL, DB_CREATE | DB_INIT_MPOOL | DB_PRIVATE, 0666) == 0);
+#else
+ DB_BENCH_ASSERT(dbenv->open(dbenv, "TESTDIR",
+ DB_CREATE | DB_INIT_MPOOL | DB_PRIVATE, 0666) == 0);
+#endif
+
+ /* Create the database. */
+ DB_BENCH_ASSERT(db_create(&dbp, dbenv, 0) == 0);
+ DB_BENCH_ASSERT(dbp->set_pagesize(dbp, 8 * 1024) == 0);
+
+#if DB_VERSION_MAJOR >= 4 && DB_VERSION_MINOR >= 1
+ DB_BENCH_ASSERT(dbp->open(
+ dbp, NULL, fname, dbname, type, DB_CREATE, 0666) == 0);
+#else
+ DB_BENCH_ASSERT(dbp->open(
+ dbp, fname, dbname, type, DB_CREATE, 0666) == 0);
+#endif
+ DB_BENCH_ASSERT(dbp->close(dbp, 0) == 0);
+
+ /* Open the database count times. */
+ TIMER_START;
+ for (i = 0; i < count; ++i) {
+ DB_BENCH_ASSERT(db_create(&dbp, dbenv, 0) == 0);
+ DB_BENCH_ASSERT(dbp->set_pagesize(dbp, 8 * 1024) == 0);
+#if DB_VERSION_MAJOR >= 4 && DB_VERSION_MINOR >= 1
+ DB_BENCH_ASSERT(dbp->open(
+ dbp, NULL, fname, dbname, type, DB_CREATE, 0666) == 0);
+#else
+ DB_BENCH_ASSERT(dbp->open(
+ dbp, fname, dbname, type, DB_CREATE, 0666) == 0);
+#endif
+ DB_BENCH_ASSERT(dbp->close(dbp, 0) == 0);
+ }
+ TIMER_STOP;
+
+ printf("# %d %s %sdatabase open/close pairs\n",
+ count, ts,
+ fname == NULL ?
+ (dbname == NULL ? "in-memory " : "named in-memory ") :
+ (dbname == NULL ? "" : "sub-"));
+ TIMER_DISPLAY(count);
+
+ return (0);
+}
+
+int
+usage()
+{
+ (void)fprintf(stderr, "usage: b_open [-df] [-c count] [-t type]\n");
+ return (EXIT_FAILURE);
+}
diff --git a/db/test_micro/SOURCE/b_put.c b/db/test_micro/SOURCE/b_put.c
new file mode 100644
index 000000000..bac7e0832
--- /dev/null
+++ b/db/test_micro/SOURCE/b_put.c
@@ -0,0 +1,195 @@
+/*
+ * $Id: b_put.c,v 1.11 2007/05/29 17:39:15 bostic Exp $
+ */
+#include "bench.h"
+
+int usage(void);
+int s(DB *, const DBT *, const DBT *, DBT *);
+
+int
+main(int argc, char *argv[])
+{
+ DB_ENV *dbenv = NULL;
+ DB *dbp, **second;
+ DBTYPE type;
+ DBT key, data;
+ db_recno_t recno;
+ size_t dsize;
+ int ch, i, count, secondaries;
+ char *ts, buf[64];
+
+ cleanup_test_dir();
+
+ count = 100000;
+ ts = "Btree";
+ type = DB_BTREE;
+ dsize = 20;
+ secondaries = 0;
+ while ((ch = getopt(argc, argv, "c:d:s:t:")) != EOF)
+ switch (ch) {
+ case 'c':
+ count = atoi(optarg);
+ break;
+ case 'd':
+ dsize = atoi(optarg);
+ break;
+ case 's':
+ secondaries = atoi(optarg);
+ break;
+ case 't':
+ switch (optarg[0]) {
+ case 'B': case 'b':
+ ts = "Btree";
+ type = DB_BTREE;
+ break;
+ case 'H': case 'h':
+ ts = "Hash";
+ type = DB_HASH;
+ break;
+ case 'Q': case 'q':
+ ts = "Queue";
+ type = DB_QUEUE;
+ break;
+ case 'R': case 'r':
+ ts = "Recno";
+ type = DB_RECNO;
+ break;
+ default:
+ return (usage());
+ }
+ break;
+ case '?':
+ default:
+ return (usage());
+ }
+ argc -= optind;
+ argv += optind;
+ if (argc != 0)
+ return (usage());
+
+#if DB_VERSION_MAJOR < 3 || DB_VERSION_MAJOR == 3 && DB_VERSION_MINOR < 3
+ /*
+ * Secondaries were added after DB 3.2.9.
+ */
+ if (secondaries)
+ return (0);
+#endif
+
+ /* Create the environment. */
+ DB_BENCH_ASSERT(db_env_create(&dbenv, 0) == 0);
+ dbenv->set_errfile(dbenv, stderr);
+ DB_BENCH_ASSERT(
+ dbenv->set_cachesize(dbenv, 0, 1048576 /* 1MB */, 0) == 0);
+#if DB_VERSION_MAJOR == 3 && DB_VERSION_MINOR < 1
+ DB_BENCH_ASSERT(dbenv->open(dbenv, "TESTDIR",
+ NULL, DB_CREATE | DB_INIT_MPOOL | DB_PRIVATE, 0666) == 0);
+#else
+ DB_BENCH_ASSERT(dbenv->open(dbenv, "TESTDIR",
+ DB_CREATE | DB_INIT_MPOOL | DB_PRIVATE, 0666) == 0);
+#endif
+
+ /*
+ * Create the database.
+ * Optionally set the record length for Queue.
+ */
+ DB_BENCH_ASSERT(db_create(&dbp, dbenv, 0) == 0);
+ if (type == DB_QUEUE)
+ DB_BENCH_ASSERT(dbp->set_re_len(dbp, dsize) == 0);
+#if DB_VERSION_MAJOR >= 4 && DB_VERSION_MINOR >= 1
+ DB_BENCH_ASSERT(
+ dbp->open(dbp, NULL, "a", NULL, type, DB_CREATE, 0666) == 0);
+#else
+ DB_BENCH_ASSERT(dbp->open(dbp, "a", NULL, type, DB_CREATE, 0666) == 0);
+#endif
+
+ /* Optionally create the secondaries. */
+ if (secondaries != 0) {
+ DB_BENCH_ASSERT(
+ (second = calloc(sizeof(DB *), secondaries)) != NULL);
+ for (i = 0; i < secondaries; ++i) {
+ DB_BENCH_ASSERT(db_create(&second[i], dbenv, 0) == 0);
+ snprintf(buf, sizeof(buf), "%d.db", i);
+#if DB_VERSION_MAJOR >= 4 && DB_VERSION_MINOR >= 1
+ DB_BENCH_ASSERT(second[i]->open(second[i], NULL,
+ buf, NULL, DB_BTREE, DB_CREATE, 0600) == 0);
+#else
+ DB_BENCH_ASSERT(second[i]->open(second[i],
+ buf, NULL, DB_BTREE, DB_CREATE, 0600) == 0);
+#endif
+#if DB_VERSION_MAJOR > 3 || DB_VERSION_MAJOR == 3 && DB_VERSION_MINOR >= 3
+#if DB_VERSION_MAJOR > 3 && DB_VERSION_MINOR > 0
+ /*
+ * The DB_TXN argument to Db.associate was added in
+ * 4.1.25.
+ */
+ DB_BENCH_ASSERT(
+ dbp->associate(dbp, NULL, second[i], s, 0) == 0);
+#else
+ DB_BENCH_ASSERT(
+ dbp->associate(dbp, second[i], s, 0) == 0);
+#endif
+#endif
+ }
+ }
+
+ /* Store a key/data pair. */
+ memset(&key, 0, sizeof(key));
+ memset(&data, 0, sizeof(data));
+ switch (type) {
+ case DB_BTREE:
+ case DB_HASH:
+ key.data = "01234567890123456789";
+ key.size = 10;
+ break;
+ case DB_QUEUE:
+ case DB_RECNO:
+ recno = 1;
+ key.data = &recno;
+ key.size = sizeof(recno);
+ break;
+ case DB_UNKNOWN:
+ abort();
+ break;
+ }
+
+ DB_BENCH_ASSERT((data.data = malloc(data.size = dsize)) != NULL);
+
+ /* Store the key/data pair count times. */
+ TIMER_START;
+ for (i = 0; i < count; ++i)
+ DB_BENCH_ASSERT(dbp->put(dbp, NULL, &key, &data, 0) == 0);
+ TIMER_STOP;
+
+ if (type == DB_BTREE || type == DB_HASH)
+ printf(
+ "# %d %s database put of 10 byte key, %lu byte data",
+ count, ts, (u_long)dsize);
+ else
+ printf("# %d %s database put of key, %lu byte data",
+ count, ts, (u_long)dsize);
+ if (secondaries)
+ printf(" with %d secondaries", secondaries);
+ printf("\n");
+ TIMER_DISPLAY(count);
+
+ return (0);
+}
+
+int
+s(dbp, pkey, pdata, skey)
+ DB *dbp;
+ const DBT *pkey, *pdata;
+ DBT *skey;
+{
+ skey->data = pkey->data;
+ skey->size = pkey->size;
+ return (0);
+}
+
+int
+usage()
+{
+ (void)fprintf(stderr,
+ "usage: b_put [-c count] [-d bytes] [-s secondaries] [-t type]\n");
+ return (EXIT_FAILURE);
+}
diff --git a/db/test_micro/SOURCE/b_recover.c b/db/test_micro/SOURCE/b_recover.c
new file mode 100644
index 000000000..c17d90e36
--- /dev/null
+++ b/db/test_micro/SOURCE/b_recover.c
@@ -0,0 +1,134 @@
+/*
+ * $Id: b_recover.c,v 1.8 2007/05/29 17:39:15 bostic Exp $
+ */
+#include "bench.h"
+
+int usage(void);
+
+int
+main(int argc, char *argv[])
+{
+ DB *dbp;
+ DBT key, data;
+ DB_ENV *dbenv;
+ DB_TXN *txn;
+ int ch, i, count;
+ char *config;
+
+ cleanup_test_dir();
+
+ /*
+ * Recover was too slow before release 4.0 that it's not worth
+ * running the test.
+ */
+#if DB_VERSION_MAJOR < 4
+ return (0);
+#endif
+
+ count = 1000;
+ config = "synchronous";
+ while ((ch = getopt(argc, argv, "c:")) != EOF)
+ switch (ch) {
+ case 'c':
+ count = atoi(optarg);
+ break;
+ case '?':
+ default:
+ return (usage());
+ }
+ argc -= optind;
+ argv += optind;
+ if (argc != 0)
+ return (usage());
+
+ /* Create the environment. */
+ DB_BENCH_ASSERT(db_env_create(&dbenv, 0) == 0);
+ dbenv->set_errfile(dbenv, stderr);
+ DB_BENCH_ASSERT(
+ dbenv->set_cachesize(dbenv, 0, 1048576 /* 1MB */, 0) == 0);
+
+#define OFLAGS \
+ DB_CREATE | DB_INIT_LOCK | \
+ DB_INIT_LOG | DB_INIT_MPOOL | DB_INIT_TXN | DB_PRIVATE
+#if DB_VERSION_MAJOR == 3 && DB_VERSION_MINOR == 0
+ DB_BENCH_ASSERT(dbenv->open(dbenv, "TESTDIR", NULL, OFLAGS, 0666) == 0);
+#endif
+#if DB_VERSION_MAJOR == 3 && DB_VERSION_MINOR == 1
+ DB_BENCH_ASSERT(dbenv->open(dbenv, "TESTDIR", OFLAGS, 0666) == 0);
+#endif
+#if DB_VERSION_MAJOR > 3 || DB_VERSION_MINOR > 1
+ DB_BENCH_ASSERT(dbenv->open(dbenv, "TESTDIR", OFLAGS, 0666) == 0);
+#endif
+
+ /* Create the database. */
+ DB_BENCH_ASSERT(db_create(&dbp, dbenv, 0) == 0);
+#if DB_VERSION_MAJOR >= 4 && DB_VERSION_MINOR >= 1
+ DB_BENCH_ASSERT(dbp->open(dbp, NULL,
+ "a", NULL, DB_BTREE, DB_CREATE | DB_AUTO_COMMIT, 0666) == 0);
+#else
+ DB_BENCH_ASSERT(
+ dbp->open(dbp, "a", NULL, DB_BTREE, DB_CREATE, 0666) == 0);
+#endif
+
+ /* Initialize the data. */
+ memset(&key, 0, sizeof(key));
+ memset(&data, 0, sizeof(data));
+ key.size = data.size = 20;
+ key.data = data.data = "01234567890123456789";
+
+ /* Start/commit a transaction count times. */
+ for (i = 0; i < count; ++i) {
+#if DB_VERSION_MAJOR < 4
+ DB_BENCH_ASSERT(
+ txn_begin(dbenv, NULL, &txn, DB_TXN_NOSYNC) == 0);
+ DB_BENCH_ASSERT(dbp->put(dbp, txn, &key, &data, 0) == 0);
+ DB_BENCH_ASSERT(txn_commit(txn, 0) == 0);
+#else
+ DB_BENCH_ASSERT(
+ dbenv->txn_begin(dbenv, NULL, &txn, DB_TXN_NOSYNC) == 0);
+ DB_BENCH_ASSERT(dbp->put(dbp, txn, &key, &data, 0) == 0);
+ DB_BENCH_ASSERT(txn->commit(txn, 0) == 0);
+#endif
+ }
+
+ /* Flush the log buffer. */
+#if DB_VERSION_MAJOR < 4
+ DB_BENCH_ASSERT(log_flush(dbenv, NULL) == 0);
+#else
+ DB_BENCH_ASSERT(dbenv->log_flush(dbenv, NULL) == 0);
+#endif
+
+ /* Create a new DB_ENV handle. */
+ DB_BENCH_ASSERT(db_env_create(&dbenv, 0) == 0);
+ dbenv->set_errfile(dbenv, stderr);
+ DB_BENCH_ASSERT(
+ dbenv->set_cachesize(dbenv, 0, 1048576 /* 1MB */, 0) == 0);
+
+ /* Now run recovery. */
+ TIMER_START;
+#if DB_VERSION_MAJOR == 3 && DB_VERSION_MINOR == 0
+ DB_BENCH_ASSERT(dbenv->open(
+ dbenv, "TESTDIR", NULL, OFLAGS | DB_RECOVER, 0666) == 0);
+#endif
+#if DB_VERSION_MAJOR == 3 && DB_VERSION_MINOR == 1
+ DB_BENCH_ASSERT(
+ dbenv->open(dbenv, "TESTDIR", OFLAGS | DB_RECOVER, 0666) == 0);
+#endif
+#if DB_VERSION_MAJOR > 3 || DB_VERSION_MINOR > 1
+ DB_BENCH_ASSERT(
+ dbenv->open(dbenv, "TESTDIR", OFLAGS | DB_RECOVER, 0666) == 0);
+#endif
+ TIMER_STOP;
+
+ printf("# recovery after %d transactions\n", count);
+ TIMER_DISPLAY(count);
+
+ return (0);
+}
+
+int
+usage()
+{
+ (void)fprintf(stderr, "usage: b_recover [-c count]\n");
+ return (EXIT_FAILURE);
+}
diff --git a/db/test_micro/SOURCE/b_txn.c b/db/test_micro/SOURCE/b_txn.c
new file mode 100644
index 000000000..b2dfe239e
--- /dev/null
+++ b/db/test_micro/SOURCE/b_txn.c
@@ -0,0 +1,89 @@
+/*
+ * $Id: b_txn.c,v 1.10 2007/06/21 17:42:10 bostic Exp $
+ */
+#include "bench.h"
+
+int usage(void);
+
+int
+main(int argc, char *argv[])
+{
+ DB_ENV *dbenv;
+ DB_TXN *txn;
+ int tabort, ch, i, count;
+
+ cleanup_test_dir();
+
+ count = 1000;
+ tabort = 0;
+ while ((ch = getopt(argc, argv, "ac:")) != EOF)
+ switch (ch) {
+ case 'a':
+ tabort = 1;
+ break;
+ case 'c':
+ count = atoi(optarg);
+ break;
+ case '?':
+ default:
+ return (usage());
+ }
+ argc -= optind;
+ argv += optind;
+ if (argc != 0)
+ return (usage());
+
+ /* Create the environment. */
+ DB_BENCH_ASSERT(db_env_create(&dbenv, 0) == 0);
+ dbenv->set_errfile(dbenv, stderr);
+ DB_BENCH_ASSERT(
+ dbenv->set_cachesize(dbenv, 0, 1048576 /* 1MB */, 0) == 0);
+#if DB_VERSION_MAJOR == 3 && DB_VERSION_MINOR < 1
+ DB_BENCH_ASSERT(dbenv->open(dbenv, "TESTDIR",
+ NULL, DB_CREATE | DB_INIT_LOCK | DB_INIT_LOG |
+ DB_INIT_MPOOL | DB_INIT_TXN | DB_PRIVATE, 0666) == 0);
+#else
+ DB_BENCH_ASSERT(dbenv->open(dbenv, "TESTDIR",
+ DB_CREATE | DB_INIT_LOCK | DB_INIT_LOG |
+ DB_INIT_MPOOL | DB_INIT_TXN | DB_PRIVATE, 0666) == 0);
+#endif
+
+ /* Start and commit/abort a transaction count times. */
+ TIMER_START;
+ if (tabort)
+ for (i = 0; i < count; ++i) {
+#if DB_VERSION_MAJOR < 4
+ DB_BENCH_ASSERT(txn_begin(dbenv, NULL, &txn, 0) == 0);
+ DB_BENCH_ASSERT(txn_abort(txn) == 0);
+#else
+ DB_BENCH_ASSERT(
+ dbenv->txn_begin(dbenv, NULL, &txn, 0) == 0);
+ DB_BENCH_ASSERT(txn->abort(txn) == 0);
+#endif
+ }
+ else
+ for (i = 0; i < count; ++i) {
+#if DB_VERSION_MAJOR < 4
+ DB_BENCH_ASSERT(txn_begin(dbenv, NULL, &txn, 0) == 0);
+ DB_BENCH_ASSERT(txn_commit(txn, 0) == 0);
+#else
+ DB_BENCH_ASSERT(
+ dbenv->txn_begin(dbenv, NULL, &txn, 0) == 0);
+ DB_BENCH_ASSERT(txn->commit(txn, 0) == 0);
+#endif
+ }
+ TIMER_STOP;
+
+ printf("# %d empty transaction start/%s pairs\n",
+ count, tabort ? "abort" : "commit");
+ TIMER_DISPLAY(count);
+
+ return (0);
+}
+
+int
+usage()
+{
+ (void)fprintf(stderr, "usage: b_txn [-c count]\n");
+ return (EXIT_FAILURE);
+}
diff --git a/db/test_micro/SOURCE/b_txn_write.c b/db/test_micro/SOURCE/b_txn_write.c
new file mode 100644
index 000000000..c85f1783a
--- /dev/null
+++ b/db/test_micro/SOURCE/b_txn_write.c
@@ -0,0 +1,154 @@
+/*
+ * $Id: b_txn_write.c,v 1.12 2007/06/07 14:06:36 moshen Exp $
+ */
+#include "bench.h"
+
+int usage(void);
+
+/*
+ * send --
+ * A stubbed-out replication message function.
+ */
+int
+send(dbenv, control, rec, lsn, eid, flags)
+ DB_ENV *dbenv;
+ const DBT *control, *rec;
+ const DB_LSN *lsn;
+ int eid;
+ u_int32_t flags;
+{
+ return (0);
+}
+
+int
+main(int argc, char *argv[])
+{
+ DB *dbp;
+ DBT key, data;
+ DB_ENV *dbenv;
+ DB_TXN *txn;
+ u_int32_t flags, oflags;
+ int ch, i, count, rep_stub;
+ char *config;
+
+ cleanup_test_dir();
+
+ count = 1000;
+ oflags = flags = 0;
+ rep_stub = 0;
+ config = "synchronous";
+ while ((ch = getopt(argc, argv, "ac:rw")) != EOF)
+ switch (ch) {
+ case 'a':
+ config = "nosync";
+ flags = DB_TXN_NOSYNC;
+ break;
+ case 'c':
+ count = atoi(optarg);
+ break;
+ case 'r':
+#ifdef DB_INIT_REP
+ rep_stub = 1;
+#else
+ exit(0);
+#endif
+ break;
+ case 'w':
+ config = "write-nosync";
+#ifdef DB_TXN_WRITE_NOSYNC
+ flags = DB_TXN_WRITE_NOSYNC;
+#else
+ exit(0);
+#endif
+ break;
+ case '?':
+ default:
+ return (usage());
+ }
+ argc -= optind;
+ argv += optind;
+ if (argc != 0)
+ return (usage());
+
+ /* Create the environment. */
+ DB_BENCH_ASSERT(db_env_create(&dbenv, 0) == 0);
+ dbenv->set_errfile(dbenv, stderr);
+ DB_BENCH_ASSERT(
+ dbenv->set_cachesize(dbenv, 0, 1048576 /* 1MB */, 0) == 0);
+
+#ifdef DB_INIT_REP
+ if (rep_stub) {
+#if DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 5 || DB_VERSION_MAJOR > 4
+ DB_BENCH_ASSERT(dbenv->rep_set_transport(dbenv, 1, send) == 0);
+#else
+ DB_BENCH_ASSERT(dbenv->set_rep_transport(dbenv, 1, send) == 0);
+#endif
+ oflags |= DB_INIT_REP;
+ }
+#endif
+ oflags |= DB_CREATE | DB_INIT_LOCK |
+ DB_INIT_LOG | DB_INIT_MPOOL | DB_INIT_TXN | DB_PRIVATE;
+#if DB_VERSION_MAJOR == 3 && DB_VERSION_MINOR == 0
+ DB_BENCH_ASSERT(
+ dbenv->open(dbenv, "TESTDIR", NULL, flags | oflags, 0666) == 0);
+#endif
+#if DB_VERSION_MAJOR == 3 && DB_VERSION_MINOR == 1
+ DB_BENCH_ASSERT(
+ dbenv->open(dbenv, "TESTDIR", flags | oflags, 0666) == 0);
+#endif
+#if DB_VERSION_MAJOR > 3 || DB_VERSION_MINOR > 1
+ if (flags != 0)
+ DB_BENCH_ASSERT(dbenv->set_flags(dbenv, flags, 1) == 0);
+ DB_BENCH_ASSERT(dbenv->open(dbenv, "TESTDIR", oflags, 0666) == 0);
+#endif
+
+#ifdef DB_INIT_REP
+ if (rep_stub)
+ DB_BENCH_ASSERT(
+ dbenv->rep_start(dbenv, NULL, DB_REP_MASTER) == 0);
+#endif
+
+ /* Create the database. */
+ DB_BENCH_ASSERT(db_create(&dbp, dbenv, 0) == 0);
+#if DB_VERSION_MAJOR >= 4 && DB_VERSION_MINOR >= 1
+ DB_BENCH_ASSERT(dbp->open(dbp, NULL,
+ "a", NULL, DB_BTREE, DB_CREATE | DB_AUTO_COMMIT, 0666) == 0);
+#else
+ DB_BENCH_ASSERT(
+ dbp->open(dbp, "a", NULL, DB_BTREE, DB_CREATE, 0666) == 0);
+#endif
+
+ /* Initialize the data. */
+ memset(&key, 0, sizeof(key));
+ memset(&data, 0, sizeof(data));
+ key.size = data.size = 20;
+ key.data = data.data = "01234567890123456789";
+
+ /* Start/commit a transaction count times. */
+ TIMER_START;
+ for (i = 0; i < count; ++i) {
+#if DB_VERSION_MAJOR < 4
+ DB_BENCH_ASSERT(txn_begin(dbenv, NULL, &txn, 0) == 0);
+ DB_BENCH_ASSERT(dbp->put(dbp, txn, &key, &data, 0) == 0);
+ DB_BENCH_ASSERT(txn_commit(txn, 0) == 0);
+#else
+ DB_BENCH_ASSERT(dbenv->txn_begin(dbenv, NULL, &txn, 0) == 0);
+ DB_BENCH_ASSERT(dbp->put(dbp, txn, &key, &data, 0) == 0);
+ DB_BENCH_ASSERT(txn->commit(txn, 0) == 0);
+#endif
+ }
+ TIMER_STOP;
+
+ printf("# %d %stransactions write %s commit pairs\n",
+ count, rep_stub ? "replicated ": "", config);
+ TIMER_DISPLAY(count);
+
+ return (0);
+}
+
+int
+usage()
+{
+ (void)fprintf(stderr, "usage: b_txn_write [-arw] [-c count]\n");
+ return (EXIT_FAILURE);
+}
diff --git a/db/test_micro/SOURCE/b_workload.c b/db/test_micro/SOURCE/b_workload.c
new file mode 100644
index 000000000..fcbfea107
--- /dev/null
+++ b/db/test_micro/SOURCE/b_workload.c
@@ -0,0 +1,622 @@
+/*
+ * $Id: b_workload.c,v 1.13 2007/06/21 17:43:17 bostic Exp $
+ */
+
+#include "bench.h"
+#include "b_workload.h"
+
+/*
+ * General TODO list:
+ * * The workload type. Might work better as a bitmask than the current enum.
+ * * Improve the verbose stats, so they can be easily parsed.
+ * * Think about doing automatic btree/hash comparison in here.
+ */
+int
+main(argc, argv)
+ int argc;
+ char *argv[];
+{
+ CONFIG conf;
+ DB *dbp;
+ DB_ENV *dbenv;
+ int ch, ffactor, ksz;
+
+ dbenv = NULL;
+ cleanup_test_dir();
+ memset(&conf, 0, sizeof(conf));
+ conf.seed = 124087;
+ srand(conf.seed);
+
+ conf.pcount = 100000;
+ conf.ts = "Btree";
+ conf.type = DB_BTREE;
+ conf.dsize = 20;
+ conf.presize = 0;
+ conf.workload = T_PUT_GET_DELETE;
+
+ while ((ch = getopt(argc, argv, "b:c:d:e:g:ik:m:op:r:t:vw:")) != EOF)
+ switch (ch) {
+ case 'b':
+ conf.cachesz = atoi(optarg);
+ break;
+ case 'c':
+ conf.pcount = atoi(optarg);
+ break;
+ case 'd':
+ conf.dsize = atoi(optarg);
+ break;
+ case 'e':
+ conf.cursor_del = atoi(optarg);
+ break;
+ case 'g':
+ conf.gcount = atoi(optarg);
+ break;
+ case 'i':
+ conf.presize = 1;
+ break;
+ case 'k':
+ conf.ksize = atoi(optarg);
+ break;
+ case 'm':
+ conf.message = optarg;
+ break;
+ case 'o':
+ conf.orderedkeys = 1;
+ break;
+ case 'p':
+ conf.pagesz = atoi(optarg);
+ break;
+ case 'r':
+ conf.num_dups = atoi(optarg);
+ break;
+ case 't':
+ switch (optarg[0]) {
+ case 'B': case 'b':
+ conf.ts = "Btree";
+ conf.type = DB_BTREE;
+ break;
+ case 'H': case 'h':
+ conf.ts = "Hash";
+ conf.type = DB_HASH;
+ break;
+ default:
+ return (usage());
+ }
+ break;
+ case 'v':
+ conf.verbose = 1;
+ break;
+ case 'w':
+ switch (optarg[0]) {
+ case 'A':
+ conf.workload = T_PUT_GET_DELETE;
+ break;
+ case 'B':
+ conf.workload = T_GET;
+ break;
+ case 'C':
+ conf.workload = T_PUT;
+ break;
+ case 'D':
+ conf.workload = T_DELETE;
+ break;
+ case 'E':
+ conf.workload = T_PUT_GET;
+ break;
+ case 'F':
+ conf.workload = T_PUT_DELETE;
+ break;
+ case 'G':
+ conf.workload = T_GET_DELETE;
+ break;
+ case 'H':
+ conf.workload = T_MIXED;
+ break;
+ default:
+ return (usage());
+ }
+ break;
+ case '?':
+ default:
+ fprintf(stderr, "Invalid option: %c\n", ch);
+ return (usage());
+ }
+ argc -= optind;
+ argv += optind;
+ if (argc != 0)
+ return (usage());
+
+ /*
+ * Validate the input parameters if specified.
+ */
+ if (conf.pagesz != 0)
+ DB_BENCH_ASSERT(conf.pagesz >= 512 && conf.pagesz <= 65536 &&
+ ((conf.pagesz & (conf.pagesz - 1)) == 0));
+
+ if (conf.cachesz != 0)
+ DB_BENCH_ASSERT(conf.cachesz > 20480);
+ DB_BENCH_ASSERT(conf.ksize == 0 || conf.orderedkeys == 0);
+
+ /* Create the environment. */
+ DB_BENCH_ASSERT(db_env_create(&dbenv, 0) == 0);
+ dbenv->set_errfile(dbenv, stderr);
+ if (conf.cachesz != 0)
+ DB_BENCH_ASSERT(
+ dbenv->set_cachesize(dbenv, 0, conf.cachesz, 0) == 0);
+
+#if DB_VERSION_MAJOR == 3 && DB_VERSION_MINOR < 1
+ DB_BENCH_ASSERT(dbenv->open(dbenv, "TESTDIR",
+ NULL, DB_CREATE | DB_INIT_MPOOL | DB_PRIVATE, 0666) == 0);
+#else
+ DB_BENCH_ASSERT(dbenv->open(dbenv, "TESTDIR",
+ DB_CREATE | DB_INIT_MPOOL | DB_PRIVATE, 0666) == 0);
+#endif
+
+ /*
+ * Create the database.
+ */
+ DB_BENCH_ASSERT(db_create(&dbp, dbenv, 0) == 0);
+ if (conf.pagesz != 0)
+ DB_BENCH_ASSERT(
+ dbp->set_pagesize(dbp, conf.pagesz) == 0);
+ if (conf.presize != 0 && conf.type == DB_HASH) {
+ ksz = (conf.orderedkeys != 0) ? sizeof(u_int32_t) : conf.ksize;
+ if (ksz == 0)
+ ksz = 10;
+ ffactor = (conf.pagesz - 32)/(ksz + conf.dsize + 8);
+ fprintf(stderr, "ffactor: %d\n", ffactor);
+ DB_BENCH_ASSERT(
+ dbp->set_h_ffactor(dbp, ffactor) == 0);
+ DB_BENCH_ASSERT(
+ dbp->set_h_nelem(dbp, conf.pcount*10) == 0);
+ }
+#if DB_VERSION_MAJOR >= 4 && DB_VERSION_MINOR >= 1
+ DB_BENCH_ASSERT(
+ dbp->open(dbp, NULL, "a", NULL, conf.type,
+ DB_CREATE | DB_TRUNCATE, 0666) == 0);
+#else
+ DB_BENCH_ASSERT(
+ dbp->open(dbp, "a", NULL, conf.type, DB_CREATE, 0666) == 0);
+#endif
+
+ if (conf.workload == T_MIXED)
+ run_mixed_workload(dbp, &conf);
+ else
+ run_std_workload(dbp, &conf);
+
+ if (is_put_workload(conf.workload) == 0)
+ timespecadd(&conf.tot_time, &conf.put_time);
+ if (is_get_workload(conf.workload) == 0)
+ timespecadd(&conf.tot_time, &conf.get_time);
+ if (is_del_workload(conf.workload) == 0)
+ timespecadd(&conf.tot_time, &conf.del_time);
+
+ /* Ensure data is flushed for following measurements. */
+ DB_BENCH_ASSERT(dbp->sync(dbp, 0) == 0);
+
+ if (conf.verbose != 0)
+ dump_verbose_stats(dbp, &conf);
+
+ DB_BENCH_ASSERT(dbp->close(dbp, 0) == 0);
+ DB_BENCH_ASSERT(dbenv->close(dbenv, 0) == 0);
+
+ /*
+ * Construct a string for benchmark output.
+ *
+ * Insert HTML in-line to make the output prettier -- ugly, but easy.
+ */
+ printf("# workload test: %s: %s<br>%lu ops",
+ conf.ts, workload_str(conf.workload), (u_long)conf.pcount);
+ if (conf.ksize != 0)
+ printf(", key size: %lu", (u_long)conf.ksize);
+ if (conf.dsize != 0)
+ printf(", data size: %lu", (u_long)conf.dsize);
+ if (conf.pagesz != 0)
+ printf(", page size: %lu", (u_long)conf.pagesz);
+ else
+ printf(", page size: default");
+ if (conf.cachesz != 0)
+ printf(", cache size: %lu", (u_long)conf.cachesz);
+ else
+ printf(", cache size: default");
+ printf(", %s keys", conf.orderedkeys == 1 ? "ordered" : "unordered");
+ printf(", num dups: %lu", (u_long)conf.num_dups);
+ printf("\n");
+
+ if (conf.workload != T_MIXED) {
+ if (conf.message != NULL)
+ printf("%s %s ", conf.message, conf.ts);
+ TIME_DISPLAY(conf.pcount, conf.tot_time);
+ } else
+ TIMER_DISPLAY(conf.pcount);
+
+ return (0);
+}
+
+int
+s(dbp, pkey, pdata, skey)
+ DB *dbp;
+ const DBT *pkey, *pdata;
+ DBT *skey;
+{
+ skey->data = pkey->data;
+ skey->size = pkey->size;
+ return (0);
+}
+
+/*
+ * The mixed workload is designed to simulate a somewhat real
+ * usage scenario.
+ * NOTES: * rand is used to decide on the current operation. This will
+ * be repeatable, since the same seed is always used.
+ * * All added keys are stored in a FIFO queue, this is not very
+ * space efficient, but is the best way I could come up with to
+ * insert random key values, and be able to retrieve/delete them.
+ * * TODO: the workload will currently only work with unordered
+ * fixed length keys.
+ */
+#define GET_PROPORTION 90
+#define PUT_PROPORTION 7
+#define DEL_PROPORTION 3
+
+int
+run_mixed_workload(dbp, config)
+ DB *dbp;
+ CONFIG *config;
+{
+ DBT key, data;
+ size_t next_op, i, ioff;
+ char kbuf[10];
+ struct bench_q operation_queue;
+
+ /* Having ordered insertion does not make sense here */
+ DB_BENCH_ASSERT(config->orderedkeys == 0);
+
+ srand(config->seed);
+ memset(&operation_queue, 0, sizeof(struct bench_q));
+
+ ioff = 0;
+ INIT_KEY(key, config);
+ memset(&data, 0, sizeof(data));
+ DB_BENCH_ASSERT(
+ (data.data = malloc(data.size = config->dsize)) != NULL);
+
+ /*
+ * Add an initial sample set of data to the DB.
+ * This should add some stability, and reduce the likelihood
+ * of deleting all of the entries in the DB.
+ */
+ for (i = 0; i < 100000; ++i) {
+ GET_KEY_NEXT(key, config, kbuf, i);
+ BENCH_Q_TAIL_INSERT(operation_queue, kbuf);
+ DB_BENCH_ASSERT(dbp->put(dbp, NULL, &key, &data, 0) == 0);
+ }
+
+ TIMER_START;
+ for (i = 0; i < config->pcount; ++i) {
+ next_op = rand()%100;
+
+ if (next_op < GET_PROPORTION ) {
+ BENCH_Q_POP_PUSH(operation_queue, kbuf);
+ key.data = kbuf;
+ key.size = sizeof(kbuf);
+ dbp->get(dbp, NULL, &key, &data, 0);
+ } else if (next_op < GET_PROPORTION+PUT_PROPORTION) {
+ GET_KEY_NEXT(key, config, kbuf, i);
+ BENCH_Q_TAIL_INSERT(operation_queue, kbuf);
+ dbp->put(dbp, NULL, &key, &data, 0);
+ } else {
+ BENCH_Q_POP(operation_queue, kbuf);
+ key.data = kbuf;
+ key.size = sizeof(kbuf);
+ dbp->del(dbp, NULL, &key, 0);
+ }
+ }
+ TIMER_STOP;
+ TIMER_GET(config->tot_time);
+
+ return (0);
+}
+
+int
+run_std_workload(dbp, config)
+ DB *dbp;
+ CONFIG *config;
+{
+ DBT key, data;
+ DBC *dbc;
+ u_int32_t i, ret;
+ char kbuf[10];
+
+ /* Setup a key/data pair. */
+ INIT_KEY(key, config);
+ memset(&data, 0, sizeof(data));
+ DB_BENCH_ASSERT(
+ (data.data = malloc(data.size = config->dsize)) != NULL);
+
+ /* Store the key/data pair count times. */
+ TIMER_START;
+ for (i = 0; i < config->pcount; ++i) {
+ GET_KEY_NEXT(key, config, kbuf, i);
+ DB_BENCH_ASSERT(dbp->put(dbp, NULL, &key, &data, 0) == 0);
+ }
+ TIMER_STOP;
+ TIMER_GET(config->put_time);
+
+ if (is_get_workload(config->workload) == 0) {
+ TIMER_START;
+ for (i = 0; i <= config->gcount; ++i) {
+ DB_BENCH_ASSERT(dbp->cursor(dbp, NULL, &dbc, 0) == 0);
+ while ((dbc->c_get(dbc, &key, &data, DB_NEXT)) == 0);
+ DB_BENCH_ASSERT(dbc->c_close(dbc) == 0);
+ }
+ TIMER_STOP;
+ TIMER_GET(config->get_time);
+ }
+
+ if (is_del_workload(config->workload) == 0) {
+ /* reset rand to reproduce key sequence. */
+ srand(config->seed);
+
+ TIMER_START;
+ if (config->cursor_del != 0) {
+ DB_BENCH_ASSERT(dbp->cursor(dbp, NULL, &dbc, 0) == 0);
+ while (
+ (ret = dbc->c_get(dbc, &key, &data, DB_NEXT)) == 0)
+ DB_BENCH_ASSERT(dbc->c_del(dbc, 0) == 0);
+ DB_BENCH_ASSERT (ret == DB_NOTFOUND);
+ } else {
+ INIT_KEY(key, config);
+ for (i = 0; i < config->pcount; ++i) {
+ GET_KEY_NEXT(key, config, kbuf, i);
+
+ ret = dbp->del(dbp, NULL, &key, 0);
+ /*
+ * Random key generation can cause dups,
+ * so NOTFOUND result is OK.
+ */
+ if (config->ksize == 0)
+ DB_BENCH_ASSERT
+ (ret == 0 || ret == DB_NOTFOUND);
+ else
+ DB_BENCH_ASSERT(ret == 0);
+ }
+ }
+ TIMER_STOP;
+ TIMER_GET(config->del_time);
+ }
+ return (0);
+}
+
+int
+dump_verbose_stats(dbp, config)
+ DB *dbp;
+ CONFIG *config;
+{
+/*
+ * It would be nice to be able to define stat as _stat on
+ * Windows, but that substitutes _stat for the db call as well.
+ */
+#ifdef DB_WIN32
+ struct _stat fstat;
+#else
+ struct stat fstat;
+#endif
+ DB_HASH_STAT *hstat;
+ DB_BTREE_STAT *bstat;
+ double free_prop;
+
+#ifdef DB_BENCH_INCLUDE_CONFIG_SUMMARY
+ printf("Completed workload benchmark.\n");
+ printf("Configuration summary:\n");
+ printf("\tworkload type: %d\n", (int)config->workload);
+ printf("\tdatabase type: %s\n", config->ts);
+ if (config->cachesz != 0)
+ printf("\tcache size: %lu\n", (u_long)config->cachesz);
+ if (config->pagesz != 0)
+ printf("\tdatabase page size: %lu\n", (u_long)config->pagesz);
+ printf("\tput element count: %lu\n", (u_long)config->pcount);
+ if ( is_get_workload(config->workload) == 0)
+ printf("\tget element count: %lu\n", (u_long)config->gcount);
+ if (config->orderedkeys)
+ printf("\tInserting items in order\n");
+ else if (config->ksize == 0)
+ printf("\tInserting keys with size 10\n");
+ else
+ printf(
+ "\tInserting keys with size: %lu\n", (u_long)config->ksize);
+
+ printf("\tInserting data elements size: %lu\n", (u_long)config->dsize);
+
+ if (is_del_workload(config->workload) == 0) {
+ if (config->cursor_del)
+ printf("\tDeleting items using a cursor\n");
+ else
+ printf("\tDeleting items without a cursor\n");
+ }
+#endif /* DB_BENCH_INCLUDE_CONFIG_SUMMARY */
+
+ if (is_put_workload(config->workload) == 0)
+ printf("%s Time spent inserting (%lu) (%s) items: %lu/%lu\n",
+ config->message[0] == '\0' ? "" : config->message,
+ (u_long)config->pcount, config->ts,
+ (u_long)config->put_time.tv_sec, config->put_time.tv_nsec);
+
+ if (is_get_workload(config->workload) == 0)
+ printf("%s Time spent getting (%lu) (%s) items: %lu/%lu\n",
+ config->message[0] == '\0' ? "" : config->message,
+ (u_long)config->pcount * ((config->gcount == 0) ?
+ 1 : config->gcount), config->ts,
+ (u_long)config->get_time.tv_sec, config->get_time.tv_nsec);
+
+ if (is_del_workload(config->workload) == 0)
+ printf("%s Time spent deleting (%lu) (%s) items: %lu/%lu\n",
+ config->message[0] == '\0' ? "" : config->message,
+ (u_long)config->pcount, config->ts,
+ (u_long)config->del_time.tv_sec, config->del_time.tv_nsec);
+
+#ifdef DB_WIN32
+ if (_stat("TESTDIR/a", &fstat) == 0) {
+#else
+ if (stat("TESTDIR/a", &fstat) == 0) {
+#endif
+ printf("%s Size of db file (%s): %lu K\n",
+ config->message[0] == '\0' ? "" : config->message,
+ config->ts, (u_long)fstat.st_size/1024);
+ }
+
+ if (config->type == DB_HASH) {
+#if DB_VERSION_MAJOR < 3 || DB_VERSION_MAJOR == 3 && DB_VERSION_MINOR <= 2
+ DB_BENCH_ASSERT(dbp->stat(dbp, &hstat, NULL, 0) == 0);
+#elif DB_VERSION_MAJOR < 4 || DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR <= 2
+ DB_BENCH_ASSERT(dbp->stat(dbp, &hstat, 0) == 0);
+#else
+ DB_BENCH_ASSERT(dbp->stat(dbp, NULL, &hstat, 0) == 0);
+#endif
+ /*
+ * Hash fill factor is a bit tricky. Want to include
+ * both bucket and overflow buckets (not offpage).
+ */
+ free_prop = hstat->hash_pagesize*hstat->hash_buckets;
+ free_prop += hstat->hash_pagesize*hstat->hash_overflows;
+ free_prop =
+ (free_prop - hstat->hash_bfree - hstat->hash_ovfl_free)/
+ free_prop;
+ printf("%s db fill factor (%s): %.2f%%\n",
+ config->message[0] == '\0' ? "" : config->message,
+ config->ts, free_prop*100);
+ free(hstat);
+ } else { /* Btree */
+#if DB_VERSION_MAJOR < 3 || DB_VERSION_MAJOR == 3 && DB_VERSION_MINOR <= 2
+ DB_BENCH_ASSERT(dbp->stat(dbp, &bstat, NULL, 0) == 0);
+#elif DB_VERSION_MAJOR < 4 || DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR <= 2
+ DB_BENCH_ASSERT(dbp->stat(dbp, &bstat, 0) == 0);
+#else
+ DB_BENCH_ASSERT(dbp->stat(dbp, NULL, &bstat, 0) == 0);
+#endif
+ free_prop = bstat->bt_pagesize*bstat->bt_leaf_pg;
+ free_prop = (free_prop-bstat->bt_leaf_pgfree)/free_prop;
+ printf("%s db fill factor (%s): %.2f%%\n",
+ config->message[0] == '\0' ? "" : config->message,
+ config->ts, free_prop*100);
+ free(bstat);
+ }
+ return (0);
+}
+
+char *
+workload_str(workload)
+ int workload;
+{
+ static char buf[128];
+
+ switch (workload) {
+ case T_PUT_GET_DELETE:
+ return ("PUT/GET/DELETE");
+ /* NOTREACHED */
+ case T_GET:
+ return ("GET");
+ /* NOTREACHED */
+ case T_PUT:
+ return ("PUT");
+ /* NOTREACHED */
+ case T_DELETE:
+ return ("DELETE");
+ /* NOTREACHED */
+ case T_PUT_GET:
+ return ("PUT/GET");
+ /* NOTREACHED */
+ case T_PUT_DELETE:
+ return ("PUT/DELETE");
+ /* NOTREACHED */
+ case T_GET_DELETE:
+ return ("GET/DELETE");
+ /* NOTREACHED */
+ case T_MIXED:
+ snprintf(buf, sizeof(buf), "MIXED (get: %d, put: %d, del: %d)",
+ (int)GET_PROPORTION,
+ (int)PUT_PROPORTION, (int)DEL_PROPORTION);
+ return (buf);
+ default:
+ break;
+ }
+
+ exit(usage());
+ /* NOTREACHED */
+}
+
+int
+is_get_workload(workload)
+ int workload;
+{
+ switch (workload) {
+ case T_GET:
+ case T_PUT_GET:
+ case T_PUT_GET_DELETE:
+ case T_GET_DELETE:
+ return 0;
+ }
+ return 1;
+}
+
+int
+is_put_workload(workload)
+ int workload;
+{
+ switch (workload) {
+ case T_PUT:
+ case T_PUT_GET:
+ case T_PUT_GET_DELETE:
+ case T_PUT_DELETE:
+ return 0;
+ }
+ return 1;
+}
+
+int
+is_del_workload(workload)
+ int workload;
+{
+ switch (workload) {
+ case T_DELETE:
+ case T_PUT_DELETE:
+ case T_PUT_GET_DELETE:
+ case T_GET_DELETE:
+ return 0;
+ }
+ return 1;
+}
+
+int
+usage()
+{
+ (void)fprintf(stderr,
+ "usage: b_workload [-b cachesz] [-c count] [-d bytes] [-e]\n");
+ (void)fprintf(stderr,
+ "\t[-g getitrs] [-i] [-k keysize] [-m message] [-o] [-p pagesz]\n");
+ (void)fprintf(stderr, "\t[-r dup_count] [-t type] [-w type]\n");
+
+ (void)fprintf(stderr, "Where:\n");
+ (void)fprintf(stderr, "\t-b the size of the DB cache.\n");
+ (void)fprintf(stderr, "\t-c the number of elements to be measured.\n");
+ (void)fprintf(stderr, "\t-d the size of each data element.\n");
+ (void)fprintf(stderr, "\t-e delete entries using a cursor.\n");
+ (void)fprintf(stderr, "\t-g number of get cursor traverses.\n");
+ (void)fprintf(stderr, "\t-i Pre-init hash DB bucket count.\n");
+ (void)fprintf(stderr, "\t-k the size of each key inserted.\n");
+ (void)fprintf(stderr, "\t-m message pre-pended to log output.\n");
+ (void)fprintf(stderr, "\t-o keys should be ordered for insert.\n");
+ (void)fprintf(stderr, "\t-p the page size for the database.\n");
+ (void)fprintf(stderr, "\t-r the number of duplicates to insert\n");
+ (void)fprintf(stderr, "\t-t type of the underlying database.\n");
+ (void)fprintf(stderr, "\t-w the workload to measure, available:\n");
+ (void)fprintf(stderr, "\t\tA - PUT_GET_DELETE\n");
+ (void)fprintf(stderr, "\t\tB - GET\n");
+ (void)fprintf(stderr, "\t\tC - PUT\n");
+ (void)fprintf(stderr, "\t\tD - DELETE\n");
+ (void)fprintf(stderr, "\t\tE - PUT_GET\n");
+ (void)fprintf(stderr, "\t\tF - PUT_DELETE\n");
+ (void)fprintf(stderr, "\t\tG - GET_DELETE\n");
+ (void)fprintf(stderr, "\t\tH - MIXED\n");
+ return (EXIT_FAILURE);
+}
diff --git a/db/test_micro/SOURCE/b_workload.h b/db/test_micro/SOURCE/b_workload.h
new file mode 100644
index 000000000..dd83bedeb
--- /dev/null
+++ b/db/test_micro/SOURCE/b_workload.h
@@ -0,0 +1,159 @@
+/*
+ * $Id: b_workload.h,v 1.7 2007/06/07 14:02:59 moshen Exp $
+ */
+
+/*
+ * Macros to help with initializing/assigning key dbts
+ */
+
+#define INIT_KEY(key, config) do { \
+ memset(&key, 0, sizeof(key)); \
+ if (config->orderedkeys) { \
+ key.size = sizeof (u_int32_t); \
+ } else if (config->ksize != 0) { \
+ DB_BENCH_ASSERT( \
+ (key.data = malloc(key.size = config->ksize)) != NULL); \
+ } else { \
+ key.data = kbuf; \
+ key.size = 10; \
+ } \
+ } while (0)
+
+#define GET_KEY_NEXT(key, config, kbuf, i) do { \
+ size_t tmp_int; \
+ if (config->orderedkeys) { \
+ /* Will be sorted on little-endian system. */ \
+ tmp_int = i; \
+ M_32_SWAP(tmp_int); \
+ key.data = &tmp_int; \
+ } else if (config->ksize == 0) { \
+ /* \
+ * This will produce duplicate keys. \
+ * That is not such a big deal, since we are \
+ * using the same seed to srand each time, \
+ * the scenario is reproducible. \
+ */ \
+ (void)snprintf(kbuf, sizeof(kbuf), "%10d", rand()); \
+ } else { \
+ /* TODO: Not sure of the best approach here. */ \
+ (void)snprintf(key.data, config->ksize, "%10lu", (u_long)i); \
+ } \
+ } while (0)
+
+/* Taken from dbinc/db_swap.h */
+#undef M_32_SWAP
+#define M_32_SWAP(a) { \
+ u_int32_t _tmp; \
+ _tmp = (u_int32_t)a; \
+ ((u_int8_t *)&a)[0] = ((u_int8_t *)&_tmp)[3]; \
+ ((u_int8_t *)&a)[1] = ((u_int8_t *)&_tmp)[2]; \
+ ((u_int8_t *)&a)[2] = ((u_int8_t *)&_tmp)[1]; \
+ ((u_int8_t *)&a)[3] = ((u_int8_t *)&_tmp)[0]; \
+}
+
+/*
+ * A singly linked list, that maintains a pointer
+ * to the start and the end of the queue.
+ * Should be possible to use a STAILQ, but this seemed easier
+ */
+typedef struct bench_qentry {
+ char data[10];
+ struct bench_qentry *next;
+}bench_qentry;
+typedef struct bench_q {
+ struct bench_qentry *head;
+ struct bench_qentry *tail;
+} bench_q;
+#define BENCH_Q_TAIL_INSERT(queue, buf) do { \
+ struct bench_qentry *entry; \
+ DB_BENCH_ASSERT( \
+ (entry = malloc(sizeof(struct bench_qentry))) != NULL); \
+ memcpy(entry->data, buf, sizeof(entry->data)); \
+ if (queue.head == NULL) \
+ queue.head = queue.tail = entry; \
+ else { \
+ queue.tail->next = entry; \
+ queue.tail = entry; \
+ } \
+} while (0)
+
+#define BENCH_Q_POP(queue, buf) do { \
+ struct bench_qentry *popped = queue.head; \
+ if (popped == NULL) \
+ break; \
+ if (queue.head->next == NULL) \
+ queue.head = queue.tail = NULL; \
+ else \
+ queue.head = queue.head->next; \
+ memcpy(buf, popped->data, sizeof(buf)); \
+ free(popped); \
+} while (0)
+
+/*
+ * Retrieve the head of the queue, save the data into user
+ * buffer, and push the item back onto the end of the list.
+ * Same functionality as pop/insert, but saves a malloc/free
+ */
+#define BENCH_Q_POP_PUSH(queue, buf) do { \
+ struct bench_qentry *popped = queue.head; \
+ if (popped == NULL) \
+ break; \
+ if (queue.head->next == NULL) \
+ queue.head = queue.tail = NULL; \
+ else \
+ queue.head = queue.head->next; \
+ memcpy(buf, popped->data, sizeof(buf)); \
+ if (queue.head == NULL) \
+ queue.head = queue.tail = popped; \
+ else { \
+ queue.tail->next = popped; \
+ queue.tail = popped; \
+ } \
+} while (0)
+
+typedef enum {
+ T_PUT,
+ T_GET,
+ T_DELETE,
+ T_PUT_GET,
+ T_PUT_DELETE,
+ T_PUT_GET_DELETE,
+ T_GET_DELETE,
+ T_MIXED
+} test_type;
+
+typedef struct
+{
+ size_t ksize;
+ size_t dsize;
+ size_t orderedkeys;
+ size_t num_dups;
+ size_t pagesz;
+ size_t cachesz;
+ size_t pcount;
+ size_t gcount;
+ size_t cursor_del;
+ size_t verbose;
+ test_type workload;
+ size_t seed;
+ size_t presize;
+ DBTYPE type;
+ char *ts;
+ char *message;
+ /* Fields used to store timing information */
+ db_timespec put_time;
+ db_timespec get_time;
+ db_timespec del_time;
+ db_timespec tot_time;
+} CONFIG;
+
+int usage __P((void));
+int s __P((DB *, const DBT *, const DBT *, DBT *));
+int dump_verbose_stats __P((DB *, CONFIG *));
+int run_mixed_workload __P((DB *, CONFIG *));
+int run_std_workload __P((DB *, CONFIG *));
+char *workload_str __P((int));
+int is_get_workload __P((int));
+int is_put_workload __P((int));
+int is_del_workload __P((int));
+
diff --git a/db/test_micro/SOURCE/bench.h b/db/test_micro/SOURCE/bench.h
new file mode 100644
index 000000000..d2e7a2bb3
--- /dev/null
+++ b/db/test_micro/SOURCE/bench.h
@@ -0,0 +1,148 @@
+/*
+ * $Id: bench.h,v 1.13 2007/06/15 18:44:23 bostic Exp $
+ */
+#include "db_config.h"
+
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#ifndef DB_WIN32
+#include <sys/time.h>
+
+#include <unistd.h>
+#include <stdint.h>
+#else
+#define WIN32_LEAN_AND_MEAN 1
+#include <windows.h>
+#include <direct.h>
+#include <sys/timeb.h>
+extern int getopt(int, char * const *, const char *);
+extern char *optarg;
+extern int optind;
+#define snprintf _snprintf
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "db.h"
+
+/*
+ * Implement a custom assert to allow consistent behavior across builds and
+ * platforms.
+ *
+ * The BDB library DB_ASSERT implementation is only enabled in diagnostic
+ * builds -- so is not suitable here.
+ */
+#define DB_BENCH_ASSERT(e) do { \
+ (e) ? 0 : (fprintf(stderr, "ASSERT FAILED: %s\n", #e), abort());\
+} while (0)
+
+#ifndef NS_PER_SEC
+#define NS_PER_SEC 1000000000 /* Nanoseconds in a second */
+#endif
+#ifndef NS_PER_US
+#define NS_PER_US 1000 /* Nanoseconds in a microsecond */
+#endif
+#ifndef MS_PER_NS
+#define MS_PER_NS 1000000 /* Milliseconds in a nanosecond */
+#endif
+
+/*
+ * Use the timer routines in the Berkeley DB library after their conversion
+ * to POSIX timespec interfaces.
+ */
+#ifdef DB_TIMEOUT_TO_TIMESPEC
+#define TIMER_START __os_gettime(NULL, &__start_time)
+#define TIMER_STOP __os_gettime(NULL, &__end_time)
+#else
+typedef struct {
+ time_t tv_sec; /* seconds */
+ long tv_nsec; /* nanoseconds */
+} db_timespec;
+
+#define timespecadd(vvp, uvp) \
+ do { \
+ (vvp)->tv_sec += (uvp)->tv_sec; \
+ (vvp)->tv_nsec += (uvp)->tv_nsec; \
+ if ((vvp)->tv_nsec >= NS_PER_SEC) { \
+ (vvp)->tv_sec++; \
+ (vvp)->tv_nsec -= NS_PER_SEC; \
+ } \
+ } while (0)
+#define timespecsub(vvp, uvp) \
+ do { \
+ (vvp)->tv_sec -= (uvp)->tv_sec; \
+ (vvp)->tv_nsec -= (uvp)->tv_nsec; \
+ if ((vvp)->tv_nsec < 0) { \
+ (vvp)->tv_sec--; \
+ (vvp)->tv_nsec += NS_PER_SEC; \
+ } \
+ } while (0)
+
+#define TIMER_START CLOCK(__start_time)
+#define TIMER_STOP CLOCK(__end_time)
+
+#if defined(HAVE_CLOCK_GETTIME)
+#define CLOCK(t) do { \
+ DB_BENCH_ASSERT( \
+ clock_gettime(CLOCK_REALTIME, (struct timespec *)&t) == 0); \
+} while (0)
+#elif defined(DB_WIN32)
+#define CLOCK(t) do { \
+ struct _timeb __now; \
+ _ftime(&__now); \
+ t.tv_sec = __now.time; \
+ t.tv_nsec = __now.millitm * MS_PER_NS; \
+} while (0)
+#else
+#define CLOCK(t) do { \
+ struct timeval __tp; \
+ DB_BENCH_ASSERT(gettimeofday(&__tp, NULL) == 0); \
+ t.tv_sec = __tp.tv_sec; \
+ t.tv_nsec = __tp.tv_usec * NS_PER_US; \
+} while (0)
+#endif
+#endif /* DB_TIMEOUT_TO_TIMESPEC */
+
+db_timespec __start_time, __end_time;
+
+#define TIMER_GET(t) do { \
+ t = __end_time; \
+ timespecsub(&t, &__start_time); \
+} while (0)
+#define TIMER_DISPLAY(ops) do { \
+ db_timespec __tmp_time; \
+ __tmp_time = __end_time; \
+ timespecsub(&__tmp_time, &__start_time); \
+ TIME_DISPLAY(ops, __tmp_time); \
+} while (0)
+#define TIME_DISPLAY(ops, t) do { \
+ double __secs; \
+ int __major, __minor, __patch; \
+ __secs = t.tv_sec + (double)t.tv_nsec / NS_PER_SEC; \
+ (void)db_version(&__major, &__minor, &__patch); \
+ printf("%d.%d.%d\t%.2f\n", __major, __minor, __patch, \
+ (__secs == 0) ? 0.0 : (ops) / __secs); \
+} while (0)
+
+/*
+ * Cleanup the test directory.
+ */
+void
+cleanup_test_dir()
+{
+#ifndef DB_WIN32
+ (void)system("rm -rf a TESTDIR; mkdir TESTDIR");
+#else
+ (void)system("RMDIR TESTDIR /s /q");
+ /*
+ * Windows outputs a message if I delete this via the system
+ * DEL function, so use unlink.
+ */
+ _unlink("a");
+ _mkdir("TESTDIR");
+ SetLastError(0);
+#endif
+}
diff --git a/db/test_micro/SOURCE/inmem.c b/db/test_micro/SOURCE/inmem.c
new file mode 100644
index 000000000..c379962e3
--- /dev/null
+++ b/db/test_micro/SOURCE/inmem.c
@@ -0,0 +1,390 @@
+/*
+ * $Id: inmem.c,v 1.12 2007/06/22 15:21:24 bostic Exp $
+ */
+
+#include "bench.h"
+
+/*
+ * The in-memory tests don't run on early releases of Berkeley DB.
+ */
+#if DB_VERSION_MAJOR > 4 || DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR > 1
+
+#undef MEGABYTE
+#define MEGABYTE (1024 * 1024)
+
+u_int32_t bulkbufsize = 4 * MEGABYTE;
+u_int32_t cachesize = 32 * MEGABYTE;
+u_int32_t datasize = 32;
+u_int32_t keysize = 8;
+u_int32_t logbufsize = 8 * MEGABYTE;
+u_int32_t numitems;
+u_int32_t pagesize = 32 * 1024;
+
+FILE *fp;
+char *progname;
+
+void op_ds(u_int, int);
+void op_ds_bulk(u_int, u_int *);
+void op_tds(u_int, int, u_int32_t);
+int usage __P((void));
+
+void
+op_ds(u_int ops, int update)
+{
+ char *letters = "abcdefghijklmnopqrstuvwxuz";
+ DB *dbp;
+ DBT key, data;
+ char *keybuf, *databuf;
+ DB_MPOOL_STAT *gsp;
+
+ DB_BENCH_ASSERT((keybuf = malloc(keysize)) != NULL);
+ DB_BENCH_ASSERT((databuf = malloc(datasize)) != NULL);
+
+ memset(&key, 0, sizeof(key));
+ memset(&data, 0, sizeof(data));
+ key.data = keybuf;
+ key.size = keysize;
+ memset(keybuf, 'a', keysize);
+
+ data.data = databuf;
+ data.size = datasize;
+ memset(databuf, 'b', datasize);
+
+ DB_BENCH_ASSERT(db_create(&dbp, NULL, 0) == 0);
+
+ dbp->set_errfile(dbp, stderr);
+
+ DB_BENCH_ASSERT(dbp->set_pagesize(dbp, pagesize) == 0);
+ DB_BENCH_ASSERT(dbp->open(
+ dbp, NULL, NULL, NULL, DB_BTREE, DB_CREATE, 0666) == 0);
+
+ dbp->dbenv->memp_stat(dbp->dbenv, &gsp, NULL, DB_STAT_CLEAR);
+
+ if (update) {
+ TIMER_START;
+ for (; ops > 0; --ops) {
+ keybuf[(ops % keysize)] = letters[(ops % 26)];
+ DB_BENCH_ASSERT(
+ dbp->put(dbp, NULL, &key, &data, 0) == 0);
+ }
+ TIMER_STOP;
+ } else {
+ DB_BENCH_ASSERT(dbp->put(dbp, NULL, &key, &data, 0) == 0);
+ TIMER_START;
+ for (; ops > 0; --ops)
+ DB_BENCH_ASSERT(
+ dbp->get(dbp, NULL, &key, &data, 0) == 0);
+ TIMER_STOP;
+ }
+
+ dbp->dbenv->memp_stat(dbp->dbenv, &gsp, NULL, 0);
+ DB_BENCH_ASSERT(gsp->st_cache_miss == 0);
+
+ DB_BENCH_ASSERT(dbp->close(dbp, 0) == 0);
+}
+
+void
+op_ds_bulk(u_int ops, u_int *totalp)
+{
+ DB *dbp;
+ DBC *dbc;
+ DBT key, data;
+ u_int32_t len, klen;
+ u_int i, total;
+ char *keybuf, *databuf;
+ void *pointer, *dp, *kp;
+ DB_MPOOL_STAT *gsp;
+
+ DB_BENCH_ASSERT((keybuf = malloc(keysize)) != NULL);
+ DB_BENCH_ASSERT((databuf = malloc(bulkbufsize)) != NULL);
+
+ memset(&key, 0, sizeof(key));
+ memset(&data, 0, sizeof(data));
+ key.data = keybuf;
+ key.size = keysize;
+
+ data.data = databuf;
+ data.size = datasize;
+ memset(databuf, 'b', datasize);
+
+ DB_BENCH_ASSERT(db_create(&dbp, NULL, 0) == 0);
+
+ dbp->set_errfile(dbp, stderr);
+
+ DB_BENCH_ASSERT(dbp->set_pagesize(dbp, pagesize) == 0);
+ DB_BENCH_ASSERT(dbp->set_cachesize(dbp, 0, cachesize, 1) == 0);
+ DB_BENCH_ASSERT(
+ dbp->open(dbp, NULL, NULL, NULL, DB_BTREE, DB_CREATE, 0666) == 0);
+
+ for (i = 1; i <= numitems; ++i) {
+ (void)sprintf(keybuf, "%10d", i);
+ DB_BENCH_ASSERT(dbp->put(dbp, NULL, &key, &data, 0) == 0);
+ }
+
+#if 0
+ fp = fopen("before", "w");
+ dbp->set_msgfile(dbp, fp);
+ DB_BENCH_ASSERT (dbp->stat_print(dbp, DB_STAT_ALL) == 0);
+#endif
+
+ DB_BENCH_ASSERT(dbp->cursor(dbp, NULL, &dbc, 0) == 0);
+
+ data.ulen = bulkbufsize;
+ data.flags = DB_DBT_USERMEM;
+
+ dbp->dbenv->memp_stat(dbp->dbenv, &gsp, NULL, DB_STAT_CLEAR);
+
+ TIMER_START;
+ for (total = 0; ops > 0; --ops) {
+ DB_BENCH_ASSERT(dbc->c_get(
+ dbc, &key, &data, DB_FIRST | DB_MULTIPLE_KEY) == 0);
+ DB_MULTIPLE_INIT(pointer, &data);
+ while (pointer != NULL) {
+ DB_MULTIPLE_KEY_NEXT(pointer, &data, kp, klen, dp, len);
+ if (kp != NULL)
+ ++total;
+ }
+ }
+ TIMER_STOP;
+ *totalp = total;
+
+ dbp->dbenv->memp_stat(dbp->dbenv, &gsp, NULL, 0);
+ DB_BENCH_ASSERT(gsp->st_cache_miss == 0);
+
+#if 0
+ fp = fopen("before", "w");
+ dbp->set_msgfile(dbp, fp);
+ DB_BENCH_ASSERT (dbp->stat_print(dbp, DB_STAT_ALL) == 0);
+#endif
+
+ DB_BENCH_ASSERT(dbp->close(dbp, 0) == 0);
+}
+
+void
+op_tds(u_int ops, int update, u_int32_t flags)
+{
+ DB *dbp;
+ DBT key, data;
+ DB_ENV *dbenv;
+ DB_TXN *txn;
+ char *keybuf, *databuf;
+ DB_MPOOL_STAT *gsp;
+
+ DB_BENCH_ASSERT((keybuf = malloc(keysize)) != NULL);
+ DB_BENCH_ASSERT((databuf = malloc(datasize)) != NULL);
+
+ memset(&key, 0, sizeof(key));
+ memset(&data, 0, sizeof(data));
+ key.data = keybuf;
+ key.size = keysize;
+ memset(keybuf, 'a', keysize);
+
+ data.data = databuf;
+ data.size = datasize;
+ memset(databuf, 'b', datasize);
+
+ DB_BENCH_ASSERT(db_env_create(&dbenv, 0) == 0);
+
+ dbenv->set_errfile(dbenv, stderr);
+
+#ifdef DB_AUTO_COMMIT
+ DB_BENCH_ASSERT(dbenv->set_flags(dbenv, DB_AUTO_COMMIT, 1) == 0);
+#endif
+ DB_BENCH_ASSERT(dbenv->set_flags(dbenv, flags, 1) == 0);
+#ifdef DB_LOG_INMEMORY
+ if (!(flags & DB_LOG_INMEMORY))
+#endif
+ DB_BENCH_ASSERT(dbenv->set_lg_max(dbenv, logbufsize * 10) == 0);
+ DB_BENCH_ASSERT(dbenv->set_lg_bsize(dbenv, logbufsize) == 0);
+ DB_BENCH_ASSERT(dbenv->open(dbenv, "TESTDIR",
+ DB_CREATE | DB_PRIVATE | DB_INIT_LOCK |
+ DB_INIT_LOG | DB_INIT_MPOOL | DB_INIT_TXN, 0666) == 0);
+
+ DB_BENCH_ASSERT(db_create(&dbp, dbenv, 0) == 0);
+ DB_BENCH_ASSERT(dbp->set_pagesize(dbp, pagesize) == 0);
+ DB_BENCH_ASSERT(
+ dbp->open(dbp, NULL, "a", NULL, DB_BTREE, DB_CREATE, 0666) == 0);
+
+ if (update) {
+ dbenv->memp_stat(dbenv, &gsp, NULL, DB_STAT_CLEAR);
+
+ TIMER_START;
+ for (; ops > 0; --ops)
+ DB_BENCH_ASSERT(
+ dbp->put(dbp, NULL, &key, &data, 0) == 0);
+ TIMER_STOP;
+
+ dbenv->memp_stat(dbenv, &gsp, NULL, 0);
+ DB_BENCH_ASSERT(gsp->st_page_out == 0);
+ } else {
+ DB_BENCH_ASSERT(dbp->put(dbp, NULL, &key, &data, 0) == 0);
+ dbenv->memp_stat(dbenv, &gsp, NULL, DB_STAT_CLEAR);
+
+ TIMER_START;
+ for (; ops > 0; --ops) {
+ DB_BENCH_ASSERT(
+ dbenv->txn_begin(dbenv, NULL, &txn, 0) == 0);
+ DB_BENCH_ASSERT(
+ dbp->get(dbp, NULL, &key, &data, 0) == 0);
+ DB_BENCH_ASSERT(txn->commit(txn, 0) == 0);
+ }
+ TIMER_STOP;
+
+ dbenv->memp_stat(dbenv, &gsp, NULL, 0);
+ DB_BENCH_ASSERT(gsp->st_cache_miss == 0);
+ }
+
+ DB_BENCH_ASSERT(dbp->close(dbp, 0) == 0);
+ DB_BENCH_ASSERT(dbenv->close(dbenv, 0) == 0);
+}
+
+#define DEFAULT_OPS 1000000
+
+int
+main(int argc, char *argv[])
+{
+ extern char *optarg;
+ extern int optind;
+ u_int ops, total;
+ int ch;
+
+ cleanup_test_dir();
+
+ if ((progname = strrchr(argv[0], '/')) == NULL)
+ progname = argv[0];
+ else
+ ++progname;
+
+ ops = 0;
+ while ((ch = getopt(argc, argv, "d:k:o:p:")) != EOF)
+ switch (ch) {
+ case 'd':
+ datasize = (u_int)atoi(optarg);
+ break;
+ case 'k':
+ keysize = (u_int)atoi(optarg);
+ break;
+ case 'o':
+ ops = (u_int)atoi(optarg);
+ break;
+ case 'p':
+ pagesize = (u_int32_t)atoi(optarg);
+ break;
+ case '?':
+ default:
+ return (usage());
+ }
+ argc -= optind;
+ argv += optind;
+
+ if (argc != 1)
+ return (usage());
+
+ numitems = (cachesize / (keysize + datasize - 1)) / 2;
+
+ if (strcasecmp(argv[0], "read") == 0) {
+ if (ops == 0)
+ ops = DEFAULT_OPS;
+ op_ds(ops, 0);
+ printf(
+ "# %u in-memory Btree database reads of %u/%u byte key/data pairs\n",
+ ops, keysize, datasize);
+ } else if (strcasecmp(argv[0], "bulk") == 0) {
+ if (keysize < 8) {
+ fprintf(stderr,
+ "%s: bulk read requires a key size >= 10\n", progname);
+ return (EXIT_FAILURE);
+ }
+ /*
+ * The ops value is the number of bulk operations, not key get
+ * operations. Reduce the value so the test doesn't take so
+ * long, and use the returned number of retrievals as the ops
+ * value for timing purposes.
+ */
+ if (ops == 0)
+ ops = 100000;
+ op_ds_bulk(ops, &total);
+ ops = total;
+ printf(
+ "# %u bulk in-memory Btree database reads of %u/%u byte key/data pairs\n",
+ ops, keysize, datasize);
+ } else if (strcasecmp(argv[0], "write") == 0) {
+ if (ops == 0)
+ ops = DEFAULT_OPS;
+ op_ds(ops, 1);
+ printf(
+ "# %u in-memory Btree database writes of %u/%u byte key/data pairs\n",
+ ops, keysize, datasize);
+ } else if (strcasecmp(argv[0], "txn-read") == 0) {
+ if (ops == 0)
+ ops = DEFAULT_OPS;
+ op_tds(ops, 0, 0);
+ printf(
+ "# %u transactional in-memory Btree database reads of %u/%u byte key/data pairs\n",
+ ops, keysize, datasize);
+ } else if (strcasecmp(argv[0], "txn-write") == 0) {
+ if (ops == 0)
+ ops = DEFAULT_OPS;
+#ifdef DB_LOG_INMEMORY
+ op_tds(ops, 1, DB_LOG_INMEMORY);
+ printf(
+ "# %u transactional in-memory logging Btree database writes of %u/%u byte key/data pairs\n",
+ ops, keysize, datasize);
+#else
+ return (EXIT_SUCCESS);
+#endif
+ } else if (strcasecmp(argv[0], "txn-nosync") == 0) {
+ if (ops == 0)
+ ops = DEFAULT_OPS;
+ op_tds(ops, 1, DB_TXN_NOSYNC);
+ printf(
+ "# %u transactional nosync logging Btree database writes of %u/%u byte key/data pairs\n",
+ ops, keysize, datasize);
+ } else if (strcasecmp(argv[0], "txn-write-nosync") == 0) {
+ if (ops == 0)
+ ops = DEFAULT_OPS;
+#ifdef DB_TXN_WRITE_NOSYNC
+ op_tds(ops, 1, DB_TXN_WRITE_NOSYNC);
+ printf(
+ "# %u transactional OS-write/nosync logging Btree database writes of %u/%u byte key/data pairs\n",
+ ops, keysize, datasize);
+#else
+ return (EXIT_SUCCESS);
+#endif
+ } else if (strcasecmp(argv[0], "txn-sync") == 0) {
+ /*
+ * Flushing to disk takes a long time, reduce the number of
+ * default ops.
+ */
+ if (ops == 0)
+ ops = 100000;
+ op_tds(ops, 1, 0);
+ printf(
+ "# %u transactional logging Btree database writes of %u/%u byte key/data pairs\n",
+ ops, keysize, datasize);
+ } else {
+ fprintf(stderr, "%s: unknown keyword %s\n", progname, argv[0]);
+ return (EXIT_FAILURE);
+ }
+
+ TIMER_DISPLAY(ops);
+ return (EXIT_SUCCESS);
+}
+
+int
+usage()
+{
+ fprintf(stderr, "usage: %s %s%s%s",
+ progname,
+ "[-d datasize] [-k keysize] [-o ops] [-p pagesize]\n\t",
+ "[read | bulk | write | txn-read |\n\t",
+ "txn-write | txn-nosync | txn-write-nosync | txn-sync]\n");
+ return (EXIT_FAILURE);
+}
+#else
+int
+main()
+{
+ return (0);
+}
+#endif
diff --git a/db/test_micro/SOURCE/uname.c b/db/test_micro/SOURCE/uname.c
new file mode 100644
index 000000000..b62d62b76
--- /dev/null
+++ b/db/test_micro/SOURCE/uname.c
@@ -0,0 +1,15 @@
+#include <sys/types.h>
+#include <sys/utsname.h>
+
+#include <stdio.h>
+
+int
+main()
+{
+ struct utsname name;
+
+ if (uname(&name) == 0)
+ printf("<p>%s, %s<br>\n%s, %s, %s</p>\n", name.nodename,
+ name.machine, name.sysname, name.release, name.version);
+ return (0);
+}
diff --git a/db/test_micro/test_micro b/db/test_micro/test_micro
new file mode 100644
index 000000000..fb0ceb7ce
--- /dev/null
+++ b/db/test_micro/test_micro
@@ -0,0 +1,479 @@
+#! /bin/sh
+#
+# $Id: test_micro,v 1.38 2007/06/07 14:01:11 moshen Exp $
+
+# We need a temporary file, and we need to clean it up after failure.
+tmp=__test_micro.$$
+trap 'rm -f $tmp t; exit 0' 0 1 2 3 13 15
+
+# Use our pathname to locate the absolute path for our SOURCES.
+t=`dirname $0`
+h=`(cd $t && echo $PWD)`
+
+# header --
+# Output HTML page header.
+# $1: directory name.
+header()
+{
+ echo "<html>"
+ echo "<head>"
+ machine=`echo $1 | sed 's/.*\.//'`
+ echo "<title>Berkeley DB test_micro run: $machine</title>"
+ echo "</head>"
+ echo "<body bgcolor=white>"
+ echo "<center><h1>Berkeley DB test_micro run: $machine</h1></center>"
+ echo "<p align=right>`date`</p>"
+ test -f UNAME && cat UNAME
+}
+
+# footer --
+# Output HTML page footer.
+footer()
+{
+ echo "</body>"
+ echo "</html>"
+}
+
+# table --
+# Create a table.
+# $1: output file
+table()
+{
+ title="Test $1: `egrep '^#' $1 | sed 's/^#[ ]*//'`"
+ echo "<hr size=1 noshade>"
+ echo "<table cellspacing=0 cellpadding=0 border=0>"
+ echo "<th align=left colspan=2>$title</th>"
+ echo "<tr>"
+ echo "<th align=right>Release</th>"
+ echo "<th align=center>Operations/second</th>"
+ echo "</tr>"
+
+ max=`egrep -v '^#' $1 | sort -n -k 2 | tail -1 | awk '{print $2}'`
+ egrep -v '^#' $1 | while true; do
+ read r v
+ if [ "X$r" = "X" ]; then
+ break;
+ fi
+ echo "<tr>"
+ echo "<td align=right width=80><pre>$r</pre></td>"
+ echo "<td>"
+ echo "<table>"
+ echo "<tr>"
+ t=`echo "400 * ($v/($max + $max/10))" | bc -l`
+ t=`printf %.0f $t`
+ echo "<td bgcolor='#003366' width=$t>&nbsp;</td>"
+ t=`echo "400 - $t" | bc`
+ echo "<td bgcolor='#CCCCCC' width=$t>&nbsp;</td>"
+ echo "<td>&nbsp;&nbsp;</td>"
+ echo "<td align=right width=100><pre>$v</pre></td>"
+ pct=`echo "(($max - $v) / $max) * 100" | bc -l`
+ if [ "$pct" = "0" ]; then
+ echo "<td></td>"
+ else
+ pct=`printf "(-%.0f%%)" $pct`
+ echo "<td align=right width=50><pre>$pct</pre></td>"
+ fi
+ echo "</tr>"
+ echo "</table>"
+ echo "</tr>"
+ done
+ echo "</table>"
+}
+
+# dir --
+# Create a directory for the run
+dir()
+{
+ rundir=RUN.`hostname | sed 's/\..*//'`
+ [ -d $rundir ] || mkdir $rundir
+}
+
+# identify --
+# Identify the machine.
+identify()
+{
+ CC=${CC:-gcc}
+ if [ "$CC" = "gcc" ]; then
+ CC="$CC -O3 -Wall -lpthread"
+ else
+ CC="$CC -O"
+ fi
+ $CC -I. $h/SOURCE/uname.c -o t $LIBS
+ ./t | sed 's/CYGWIN_NT/Windows/' > $tmp
+ if test "$?" -eq 0; then
+ cp $tmp $rundir/UNAME
+ fi
+ rm -f t
+}
+
+# build_posix
+# Build a test on a POSIX system.
+# $1: test program source
+build_posix()
+{
+ rm -f t
+ sync
+ sleep 1
+ sync
+
+ CC=${CC:-gcc}
+ if [ "$CC" = "gcc" ]; then
+ CC="$CC -O3 -Wall -lpthread"
+ else
+ CC="$CC -O"
+ fi
+ $CC -I. $h/SOURCE/$1 -o t libdb.a $LIBS || return 1
+
+ ./t $2
+ return $?
+}
+
+# build_windows
+# Build a test on a Windows system.
+# $1: test program source
+# $2: arguments to the test program
+build_windows()
+{
+ rm -f t.exe
+
+ cl /nologo /o t -I.. -I../.. /DDB_WIN32 /G6 \
+ /Ox /MD ../../../$h/SOURCE/$1 ../../clib/getopt.c \
+ libdb*.lib ws2_32.lib advapi32.lib > /dev/null || return 1
+
+ ./t $2
+ return $?
+}
+
+# runone --
+# Run a single test case.
+# $1: test number
+# $2: input source file
+# $3: command
+runone()
+{
+ >$tmp
+
+ # You can set the MAJOR and MINOR environment variables to limit
+ # the BDB releases on which the tests are run.
+ for i in db-${MAJOR:-*}.${MINOR-*}.*; do
+ echo "Test${1}: $i ($2: $3) ..."
+ if [ -f $i/build_unix/libdb.a ] ; then
+ (cd $i/build_unix/ &&
+ build_posix "$2" "$3") >> $tmp
+ elif [ -f $i/build_win*/Release/libdb??.lib ] ; then
+ (cd $i/build_win*/Release &&
+ build_windows "$2" "$3") >> $tmp
+ fi
+ done
+ cat $tmp | sort -r -n -k 2 | sort -u -k 1,2 > $rundir/$1
+}
+
+# Run the workload test case, and collate the data.
+run_workload()
+{
+ CONFIGS[0]='-w A -v -c 100000 -o -t hash'
+ CONFIGS[1]='-w A -v -c 100000 -o -t btree'
+ CONFIGS[2]='-w A -v -c 100000 -g 10 -d 20 -p 32768 -t hash'
+ CONFIGS[3]='-w A -v -c 100000 -g 10 -d 20 -p 32768 -t btree'
+ CONFIGS[4]='-w A -v -c 100000 -g 10 -d 20 -p 8192 -t hash'
+ CONFIGS[5]='-w A -v -c 100000 -g 10 -d 20 -p 8192 -t btree'
+ CONFIGS[6]='-w A -v -c 100000 -g 10 -d 20 -p 4096 -t hash'
+ CONFIGS[7]='-w A -v -c 100000 -g 10 -d 20 -p 4096 -t btree'
+ CONFIGS[8]='-w A -v -c 100000 -g 10 -d 20 -p 1024 -t hash'
+ CONFIGS[9]='-w A -v -c 100000 -g 10 -d 20 -p 1024 -t btree'
+ CONFIGS[10]='-w A -v -c 10000 -g 10 -d 256 -p 1024 -t hash'
+ CONFIGS[11]='-w A -v -c 10000 -g 10 -d 256 -p 1024 -t btree'
+ CONFIGS[12]='-w F -v -c 100000 -g 10 -d 20 -p 1024 -t hash'
+ CONFIGS[13]='-w F -v -c 100000 -g 10 -d 20 -p 1024 -t btree'
+ CONFIGS[14]='-w G -v -c 100000 -g 10 -d 20 -p 1024 -t hash'
+ CONFIGS[15]='-w G -v -c 100000 -g 10 -d 20 -p 1024 -t btree'
+ # Run put/get(G) with different page sizes, since fill factor
+ # is interesting when not deleting all of the elements.
+ CONFIGS[16]='-w E -v -c 100000 -g 10 -d 20 -p 32768 -t hash'
+ CONFIGS[17]='-w E -v -c 100000 -g 10 -d 20 -p 32768 -t btree'
+ CONFIGS[18]='-w E -v -c 100000 -g 10 -d 20 -p 8192 -t hash'
+ CONFIGS[19]='-w E -v -c 100000 -g 10 -d 20 -p 8192 -t btree'
+ CONFIGS[20]='-w E -v -c 100000 -g 10 -d 20 -p 4096 -t hash'
+ CONFIGS[21]='-w E -v -c 100000 -g 10 -d 20 -p 4096 -t btree'
+ CONFIGS[22]='-w E -v -c 100000 -g 10 -d 20 -p 1024 -t hash'
+ CONFIGS[23]='-w E -v -c 100000 -g 10 -d 20 -p 1024 -t btree'
+ CONFIGS[24]='-w E -v -c 10000 -g 10 -d 256 -p 1024 -t hash'
+ CONFIGS[25]='-w E -v -c 10000 -g 10 -d 256 -p 1024 -t btree'
+ CONFIGS[26]='-w E -v -c 100000 -g 10 -o -d 10 -p 1024 -t hash'
+ CONFIGS[27]='-w E -v -c 100000 -g 10 -o -d 10 -p 1024 -t btree'
+
+ CONFIGS[28]='-w A -v -c 10000 -g 10 -d 1024 -p 512 -t hash'
+ CONFIGS[29]='-w A -v -c 10000 -g 10 -d 1024 -p 512 -t btree'
+ CONFIGS[30]='-w H -v -c 1000000 -d 20 -p 8192 -t hash'
+ CONFIGS[31]='-w H -v -c 1000000 -d 20 -p 8192 -t btree'
+ CONFIGS[32]='-w H -v -c 1000000 -d 20 -p 512 -t hash'
+ CONFIGS[33]='-w H -v -c 1000000 -d 20 -p 512 -t btree'
+ CONFIGS[34]='-w H -v -c 10000000 -d 20 -p 512 -t hash'
+ CONFIGS[35]='-w H -v -c 10000000 -d 20 -p 512 -t btree'
+ MIN_CONFIGS=0
+ MAX_CONFIGS=35
+
+ # Create a directory to output info, ensure it is empty.
+ rm -rf RESULTS && mkdir RESULTS
+
+ for i in db-${MAJOR:-*}.${MINOR-*}.*; do
+ (
+ if [ -f $i/build_unix/libdb.a ] ; then
+ cd $i/build_unix/ &&
+ build_posix b_workload.c || continue
+ res_dir=../../RESULTS
+ elif [ -f $i/build_win*/Release/libdb??.lib ] ; then
+ cd $i/build_win*/Release &&
+ build_windows b_workload.c || continue
+ res_dir=../../../RESULTS
+ fi
+
+ # Run the actual tests.
+ index=$MIN_CONFIGS
+ while test $index -lt $MAX_CONFIGS; do
+ echo -n "."
+ echo "$i:${CONFIGS[$index]}" >> $res_dir/$index
+ ./t ${CONFIGS[$index]} -m $i >> $res_dir/$index
+ index=`expr $index + 1`
+ done
+ )
+ done
+}
+
+# run --
+# Run a test.
+# $1: test to run
+run()
+{
+ case $1 in
+
+ # Open in-memory database.
+ 1) runone $1 b_open.c "-c 10000 -t btree";;
+ 2) runone $1 b_open.c "-c 10000 -t hash";;
+ 3) runone $1 b_open.c "-c 10000 -t queue";;
+ 4) runone $1 b_open.c "-c 10000 -t recno";;
+
+ # Open named in-memory database.
+ 5) runone $1 b_open.c "-c 10000 -d -t btree";;
+ 6) runone $1 b_open.c "-c 10000 -d -t hash";;
+ 7) runone $1 b_open.c "-c 10000 -d -t queue";;
+ 8) runone $1 b_open.c "-c 10000 -d -t recno";;
+
+ # Open database.
+ 9) runone $1 b_open.c "-c 10000 -f -t btree";;
+ 10) runone $1 b_open.c "-c 10000 -f -t hash";;
+ 11) runone $1 b_open.c "-c 10000 -f -t queue";;
+ 12) runone $1 b_open.c "-c 10000 -f -t recno";;
+
+ # Open sub-database.
+ 13) runone $1 b_open.c "-c 10000 -fd -t btree";;
+ 14) runone $1 b_open.c "-c 10000 -fd -t hash";;
+ 15) runone $1 b_open.c "-c 10000 -fd -t recno";;
+
+ 16) runone $1 b_get.c "-c 1000000 -t btree";;
+ 17) runone $1 b_get.c "-c 1000000 -t hash";;
+ 18) runone $1 b_get.c "-c 1000000 -t queue";;
+ 19) runone $1 b_get.c "-c 1000000 -t recno";;
+
+ 20) runone $1 b_put.c "-c 1000000 -t btree";;
+ 21) runone $1 b_put.c "-c 1000000 -t hash";;
+ 22) runone $1 b_put.c "-c 1000000 -t queue";;
+ 23) runone $1 b_put.c "-c 1000000 -t recno";;
+ 24) runone $1 b_put.c "-c 100000 -d 204800 -t btree";;
+ 25) runone $1 b_put.c "-c 100000 -d 204800 -t hash";;
+ 26) runone $1 b_put.c "-c 100000 -d 204800 -t recno";;
+ 27) runone $1 b_put.c "-c 1000000 -s 10 -t btree";;
+ 28) runone $1 b_put.c "-c 1000000 -s 10 -t hash";;
+ 29) runone $1 b_put.c "-c 1000000 -s 10 -t queue";;
+ 30) runone $1 b_put.c "-c 1000000 -s 10 -t recno";;
+
+ 31) runone $1 b_curalloc.c "-c 1000000";;
+
+ 32) runone $1 b_load.c "-c 1000000 -t btree";;
+ 33) runone $1 b_load.c "-c 100000 -t hash";;
+ 34) runone $1 b_load.c "-c 1000000 -t queue";;
+ 35) runone $1 b_load.c "-c 1000000 -t recno";;
+ 36) runone $1 b_load.c "-d -c 1000000 -t btree";;
+ 37) runone $1 b_load.c "-d -c 1000000 -t hash";;
+
+ 38) runone $1 b_del.c "-c 100000 -t btree";;
+ 39) runone $1 b_del.c "-c 100000 -t hash";;
+ 40) runone $1 b_del.c "-c 100000 -t queue";;
+ 41) runone $1 b_del.c "-c 100000 -t recno";;
+ 42) runone $1 b_del.c "-C -c 100000 -t btree";;
+ 43) runone $1 b_del.c "-C -c 100000 -t hash";;
+ 44) runone $1 b_del.c "-C -c 100000 -t queue";;
+ 45) runone $1 b_del.c "-C -c 100000 -t recno";;
+
+ # Cursor next walk.
+ 46) runone $1 b_curwalk.c "-c 100000 -t btree -w 100";;
+ 47) runone $1 b_curwalk.c "-c 100000 -t hash -w 100";;
+ 48) runone $1 b_curwalk.c "-c 100000 -t queue -w 100";;
+ 49) runone $1 b_curwalk.c "-c 100000 -t recno -w 100";;
+
+ # Cursor prev walk.
+ 50) runone $1 b_curwalk.c "-c 100000 -p -t btree -w 100";;
+ 51) runone $1 b_curwalk.c "-c 100000 -p -t hash -w 100";;
+ 52) runone $1 b_curwalk.c "-c 100000 -p -t queue -w 100";;
+ 53) runone $1 b_curwalk.c "-c 100000 -p -t recno -w 100";;
+
+ # Cursor next walk with 10 unsorted duplicates.
+ 54) runone $1 b_curwalk.c "-c 10000 -d 10 -t btree -w 100";;
+ 55) runone $1 b_curwalk.c "-c 10000 -d 10 -t hash -w 100";;
+
+ # Cursor next walk with 1000 unsorted duplicates.
+ 56) runone $1 b_curwalk.c "-c 100 -d 1000 -t btree -w 100";;
+ 57) runone $1 b_curwalk.c "-c 100 -d 1000 -t hash -w 100";;
+
+ # Cursor prev walk with 1000 unsorted duplicates.
+ 58) runone $1 b_curwalk.c "-c 100 -d 1000 -p -t btree -w 100";;
+ 59) runone $1 b_curwalk.c "-c 100 -d 1000 -p -t hash -w 100";;
+
+ # Cursor next walk with 10 sorted duplicates.
+ 60) runone $1 b_curwalk.c "-c 10000 -d 10 -s -t btree -w 100";;
+ 61) runone $1 b_curwalk.c "-c 10000 -d 10 -s -t hash -w 100";;
+
+ # Cursor next walk with 1000 sorted duplicates.
+ 62) runone $1 b_curwalk.c "-c 100 -d 1000 -s -t btree -w 100";;
+ 63) runone $1 b_curwalk.c "-c 100 -d 1000 -s -t hash -w 100";;
+
+ # Cursor prev walk with 1000 sorted duplicates.
+ 64) runone $1 b_curwalk.c "-c 100 -d 1000 -ps -t btree -w 100";;
+ 65) runone $1 b_curwalk.c "-c 100 -d 1000 -ps -t hash -w 100";;
+
+ # Cursor next-nodup walk with 1000 sorted duplicates.
+ 66) runone $1 b_curwalk.c "-c 100 -d 1000 -Ss -t btree -w 100";;
+ 67) runone $1 b_curwalk.c "-c 100 -d 1000 -Ss -t hash -w 100";;
+
+ # Cursor prev-nodup walk with 1000 sorted duplicates.
+ 68) runone $1 b_curwalk.c "-c 100 -d 1000 -pSs -t btree -w 100";;
+ 69) runone $1 b_curwalk.c "-c 100 -d 1000 -pSs -t hash -w 100";;
+
+ 70) runone $1 b_txn.c "-c 1000000";;
+ 71) runone $1 b_txn.c "-a -c 1000000";;
+
+ 72) runone $1 b_txn_write.c "-c 10000";;
+ 73) runone $1 b_txn_write.c "-a -c 100000";;
+ 74) runone $1 b_txn_write.c "-w -c 100000";;
+ 75) runone $1 b_txn_write.c "-r -c 10000";;
+ 76) runone $1 b_txn_write.c "-ar -c 100000";;
+ 77) runone $1 b_txn_write.c "-rw -c 100000";;
+
+ 78) runone $1 b_recover.c "-c 1000000";;
+
+ 79) runone $1 b_workload.c "-w A -c 100000 -o -t hash";;
+ 80) runone $1 b_workload.c "-w A -c 100000 -o -t btree";;
+
+ # Try the workload test case, with put/get/del and different
+ # page/data sizes.
+ 81) runone $1 b_workload.c \
+ "-w A -c 100000 -g 10 -d 20 -p 32768 -t hash";;
+ 82) runone $1 b_workload.c \
+ "-w A -c 100000 -g 10 -d 20 -p 32768 -t btree";;
+ 83) runone $1 b_workload.c \
+ "-w A -c 100000 -g 10 -d 20 -p 8192 -t hash";;
+ 84) runone $1 b_workload.c \
+ "-w A -c 100000 -g 10 -d 20 -p 8192 -t btree";;
+ 85) runone $1 b_workload.c \
+ "-w A -c 100000 -g 10 -d 20 -p 4096 -t hash";;
+ 86) runone $1 b_workload.c \
+ "-w A -c 100000 -g 10 -d 20 -p 4096 -t btree";;
+ 87) runone $1 b_workload.c \
+ "-w A -c 100000 -g 10 -d 20 -p 1024 -t hash";;
+ 88) runone $1 b_workload.c \
+ "-w A -c 100000 -g 10 -d 20 -p 1024 -t btree";;
+ 89) runone $1 b_workload.c \
+ "-w A -c 100000 -g 10 -d 256 -p 1024 -t hash";;
+ 90) runone $1 b_workload.c \
+ "-w A -c 100000 -g 10 -d 256 -p 1024 -t btree";;
+
+ # Workload test case with put/get
+ 91) runone $1 b_workload.c \
+ "-w E -c 100000 -g 10 -d 20 -p 1024 -t hash";;
+ 92) runone $1 b_workload.c \
+ "-w E -c 100000 -g 10 -d 20 -p 1024 -t btree";;
+
+ # Workload test case with put/delete
+ 93) runone $1 b_workload.c \
+ "-w F -c 100000 -g 10 -d 20 -p 1024 -t hash";;
+ 94) runone $1 b_workload.c \
+ "-w F -c 100000 -g 10 -d 20 -p 1024 -t btree";;
+
+ # Workload test case with get/delete
+ 95) runone $1 b_workload.c \
+ "-w G -c 100000 -g 10 -d 20 -p 1024 -t hash";;
+ 96) runone $1 b_workload.c \
+ "-w G -c 100000 -g 10 -d 20 -p 1024 -t btree";;
+ 97) runone $1 b_workload.c "-w H -c 10000000 -d 20 -p 1024 -t hash";;
+
+ # Speed tests.
+ 98) runone $1 inmem.c "-d 32 -k 8 -o 1000000 -p 32768 read";;
+ 99) runone $1 inmem.c "-d 32 -k 8 -o 100000 -p 32768 bulk";;
+ 100) runone $1 inmem.c "-d 32 -k 8 -o 1000000 -p 32768 write";;
+ 101) runone $1 inmem.c "-d 32 -k 8 -o 1000000 -p 32768 txn-read";;
+ 102) runone $1 inmem.c "-d 32 -k 8 -o 1000000 -p 32768 txn-write";;
+ 103) runone $1 inmem.c "-d 32 -k 8 -o 1000000 -p 32768 txn-nosync";;
+ 104) runone $1 inmem.c \
+ "-d 32 -k 8 -o 1000000 -p 32768 txn-write-nosync";;
+ 105) runone $1 inmem.c "-d 32 -k 8 -o 100000 -p 32768 txn-sync";;
+
+ *)
+ echo "r: unknown test: $1"
+ exit 1;;
+ esac
+}
+
+maxtest=105
+
+if [ $# -eq 0 ]; then
+ dir
+ identify
+ next=1
+ while [ $next -le $maxtest ] ; do
+ run $next
+ next=`expr $next + 1`
+ done
+else
+ while [ $# -gt 0 ]; do
+ case $1 in
+ *-*) # Range: -3, 3-, 3-10
+ dir
+ identify
+ next=`echo $1|sed 's/-.*//'`
+ next=${next:=1}
+ last=`echo $1|sed 's/.*-//'`
+ last=${last:=$maxtest}
+ while [ $next -le $last ] ; do
+ run $next
+ next=`expr $next + 1`
+ done
+ shift;;
+ [1-9]*) # Specific test
+ dir
+ identify
+ run $1
+ shift;;
+ workload)
+ dir
+ identify
+ run_workload
+ shift;;
+ html)
+ for i in RUN.*; do
+ echo "Building $i..."
+ (cd $i
+ header $i
+ for j in `ls [0-9]* | sort -n`; do
+ table $j
+ done
+ footer) > $i/test_micro.html
+ done
+ shift;;
+ *)
+ echo 'usage: r [# | #- | -# | #-# | html]'
+ exit 1;;
+ esac
+ done
+fi
+
+exit 0
diff --git a/db/txn/txn.c b/db/txn/txn.c
index 527c483d1..2154f0962 100644
--- a/db/txn/txn.c
+++ b/db/txn/txn.c
@@ -1,8 +1,7 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*/
/*
* Copyright (c) 1995, 1996
@@ -35,7 +34,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: txn.c,v 12.55 2006/08/24 14:46:52 bostic Exp $
+ * $Id: txn.c,v 12.78 2007/06/29 00:25:02 margo Exp $
*/
#include "db_config.h"
@@ -50,21 +49,10 @@
#include "dbinc/mp.h"
#include "dbinc/txn.h"
-#define SET_LOG_FLAGS(dbenv, txn, lflags) \
- do { \
- lflags = DB_LOG_COMMIT; \
- if (F_ISSET(txn, TXN_SYNC)) \
- lflags |= DB_FLUSH; \
- else if (F_ISSET(txn, TXN_WRITE_NOSYNC)) \
- lflags |= DB_LOG_WRNOSYNC; \
- else if (!F_ISSET(txn, TXN_NOSYNC) && \
- !F_ISSET(dbenv, DB_ENV_TXN_NOSYNC)) { \
- if (F_ISSET(dbenv, DB_ENV_TXN_WRITE_NOSYNC)) \
- lflags |= DB_LOG_WRNOSYNC; \
- else \
- lflags |= DB_FLUSH; \
- } \
- } while (0)
+#define LOG_FLAGS(txn) \
+ (DB_LOG_COMMIT | (F_ISSET(txn, TXN_SYNC) ? \
+ DB_FLUSH : (F_ISSET(txn, TXN_WRITE_NOSYNC) ? \
+ DB_LOG_WRNOSYNC : 0)))
/*
* __txn_isvalid enumerated types. We cannot simply use the transaction
@@ -79,11 +67,11 @@ typedef enum {
} txnop_t;
static int __txn_abort_pp __P((DB_TXN *));
-static int __txn_begin_int __P((DB_TXN *, int));
+static int __txn_begin_int __P((DB_TXN *));
static int __txn_commit_pp __P((DB_TXN *, u_int32_t));
static int __txn_discard __P((DB_TXN *, u_int32_t));
static int __txn_dispatch_undo
- __P((DB_ENV *, DB_TXN *, DBT *, DB_LSN *, void *));
+ __P((DB_ENV *, DB_TXN *, DBT *, DB_LSN *, DB_TXNHEAD *));
static int __txn_end __P((DB_TXN *, int));
static int __txn_isvalid __P((const DB_TXN *, txnop_t));
static int __txn_undo __P((DB_TXN *));
@@ -109,9 +97,9 @@ __txn_begin_pp(dbenv, parent, txnpp, flags)
if ((ret = __db_fchk(dbenv,
"txn_begin", flags,
- DB_READ_COMMITTED | DB_READ_UNCOMMITTED | DB_TXN_NOWAIT |
+ DB_READ_COMMITTED | DB_READ_UNCOMMITTED |
DB_TXN_NOSYNC | DB_TXN_SNAPSHOT | DB_TXN_SYNC |
- DB_TXN_WRITE_NOSYNC)) != 0)
+ DB_TXN_WAIT | DB_TXN_WRITE_NOSYNC | DB_TXN_NOWAIT)) != 0)
return (ret);
if ((ret = __db_fcchk(dbenv, "txn_begin", flags,
DB_TXN_WRITE_NOSYNC | DB_TXN_NOSYNC, DB_TXN_SYNC)) != 0)
@@ -182,23 +170,36 @@ __txn_begin(dbenv, parent, txnpp, flags)
TAILQ_INIT(&txn->events);
STAILQ_INIT(&txn->logs);
txn->flags = TXN_MALLOC;
+
+ /*
+ * Set the sync mode for commit. Any local bits override those
+ * in the environment. SYNC is the default.
+ */
+ if (LF_ISSET(DB_TXN_SYNC))
+ F_SET(txn, TXN_SYNC);
+ else if (LF_ISSET(DB_TXN_NOSYNC))
+ F_SET(txn, TXN_NOSYNC);
+ else if (LF_ISSET(DB_TXN_WRITE_NOSYNC))
+ F_SET(txn, TXN_WRITE_NOSYNC);
+ else if (F_ISSET(dbenv, DB_ENV_TXN_NOSYNC))
+ F_SET(txn, TXN_NOSYNC);
+ else if (F_ISSET(dbenv, DB_ENV_TXN_WRITE_NOSYNC))
+ F_SET(txn, TXN_WRITE_NOSYNC);
+ else
+ F_SET(txn, TXN_SYNC);
+
+ if (LF_ISSET(DB_TXN_NOWAIT) ||
+ (F_ISSET(dbenv, DB_ENV_TXN_NOWAIT) && !LF_ISSET(DB_TXN_WAIT)))
+ F_SET(txn, TXN_NOWAIT);
if (LF_ISSET(DB_READ_COMMITTED))
F_SET(txn, TXN_READ_COMMITTED);
if (LF_ISSET(DB_READ_UNCOMMITTED))
F_SET(txn, TXN_READ_UNCOMMITTED);
- if (LF_ISSET(DB_TXN_NOSYNC))
- F_SET(txn, TXN_NOSYNC);
if (LF_ISSET(DB_TXN_SNAPSHOT) || F_ISSET(dbenv, DB_ENV_TXN_SNAPSHOT) ||
(parent != NULL && F_ISSET(parent, TXN_SNAPSHOT)))
F_SET(txn, TXN_SNAPSHOT);
- if (LF_ISSET(DB_TXN_SYNC))
- F_SET(txn, TXN_SYNC);
- if (LF_ISSET(DB_TXN_NOWAIT))
- F_SET(txn, TXN_NOWAIT);
- if (LF_ISSET(DB_TXN_WRITE_NOSYNC))
- F_SET(txn, TXN_WRITE_NOSYNC);
- if ((ret = __txn_begin_int(txn, 0)) != 0)
+ if ((ret = __txn_begin_int(txn)) != 0)
goto err;
td = txn->td;
@@ -212,7 +213,7 @@ __txn_begin(dbenv, parent, txnpp, flags)
region = dbenv->lk_handle->reginfo.primary;
if (parent != NULL) {
ret = __lock_inherit_timeout(dbenv,
- parent->txnid, txn->txnid);
+ parent->locker, txn->locker);
/* No parent locker set yet. */
if (ret == EINVAL) {
parent = NULL;
@@ -227,7 +228,7 @@ __txn_begin(dbenv, parent, txnpp, flags)
* or it has no timeouts set.
*/
if (parent == NULL && region->tx_timeout != 0)
- if ((ret = __lock_set_timeout(dbenv, txn->txnid,
+ if ((ret = __lock_set_timeout(dbenv, txn->locker,
region->tx_timeout, DB_SET_TXN_TIMEOUT)) != 0)
goto err;
}
@@ -267,7 +268,7 @@ __txn_xa_begin(dbenv, txn)
memset(&txn->lock_timeout, 0, sizeof(db_timeout_t));
memset(&txn->expire, 0, sizeof(db_timeout_t));
- return (__txn_begin_int(txn, 0));
+ return (__txn_begin_int(txn));
}
/*
@@ -342,7 +343,7 @@ __txn_compensate_begin(dbenv, txnpp)
txn->flags = TXN_COMPENSATE | TXN_MALLOC;
*txnpp = txn;
- return (__txn_begin_int(txn, 1));
+ return (__txn_begin_int(txn));
}
/*
@@ -350,9 +351,8 @@ __txn_compensate_begin(dbenv, txnpp)
* Normal DB version of txn_begin.
*/
static int
-__txn_begin_int(txn, internal)
+__txn_begin_int(txn)
DB_TXN *txn;
- int internal;
{
DB_ENV *dbenv;
DB_TXNMGR *mgr;
@@ -372,14 +372,6 @@ __txn_begin_int(txn, internal)
goto err;
}
- /* Make sure that we aren't still recovering prepared transactions. */
- if (!internal && region->stat.st_nrestores != 0) {
- __db_errx(dbenv,
- "recovery of prepared but not yet committed transactions is incomplete");
- ret = EINVAL;
- goto err;
- }
-
/*
* Allocate a new transaction id. Our current valid range can span
* the maximum valid value, so check for it and wrap manually.
@@ -394,7 +386,7 @@ __txn_begin_int(txn, internal)
/* Allocate a new transaction detail structure. */
if ((ret =
- __db_shalloc(&mgr->reginfo, sizeof(TXN_DETAIL), 0, &td)) != 0) {
+ __env_alloc(&mgr->reginfo, sizeof(TXN_DETAIL), &td)) != 0) {
__db_errx(dbenv,
"Unable to allocate memory for transaction detail");
goto err;
@@ -404,12 +396,21 @@ __txn_begin_int(txn, internal)
SH_TAILQ_INSERT_HEAD(&region->active_txn, td, links, __txn_detail);
id = ++region->last_txnid;
+
+#ifdef HAVE_STATISTICS
++region->stat.st_nbegins;
if (++region->stat.st_nactive > region->stat.st_maxnactive)
region->stat.st_maxnactive = region->stat.st_nactive;
+#endif
td->txnid = id;
dbenv->thread_id(dbenv, &td->pid, &td->tid);
+
+ /* allocate a locker for this txn */
+ if (LOCKING_ON(dbenv) && (ret =
+ __lock_getlocker(dbenv->lk_handle, id, 1, &txn->locker)) != 0)
+ goto err;
+
ZERO_LSN(td->last_lsn);
ZERO_LSN(td->begin_lsn);
SH_TAILQ_INIT(&td->kids);
@@ -425,6 +426,9 @@ __txn_begin_int(txn, internal)
td->status = TXN_RUNNING;
td->flags = 0;
td->xa_status = 0;
+ td->nlog_dbs = 0;
+ td->nlog_slots = TXN_NSLOTS;
+ td->log_dbs = R_OFFSET(&mgr->reginfo, td->slots);
TXN_SYSTEM_UNLOCK(dbenv);
@@ -467,14 +471,18 @@ err: TXN_SYSTEM_UNLOCK(dbenv);
* Fill in the fields of the local transaction structure given
* the detail transaction structure.
*
- * PUBLIC: void __txn_continue __P((DB_ENV *, DB_TXN *, TXN_DETAIL *));
+ * PUBLIC: int __txn_continue __P((DB_ENV *, DB_TXN *, TXN_DETAIL *));
*/
-void
+int
__txn_continue(env, txn, td)
DB_ENV *env;
DB_TXN *txn;
TXN_DETAIL *td;
{
+ int ret;
+
+ ret = 0;
+
txn->mgrp = env->tx_handle;
txn->parent = NULL;
txn->txnid = td->txnid;
@@ -489,8 +497,19 @@ __txn_continue(env, txn, td)
txn->set_name = __txn_set_name;
txn->flags = 0;
+ /*
+ * If this is a restored transaction, we need to propagate that fact
+ * to the process-local structure. However, if it's not a restored
+ * transaction, then we're running in XA and we need to make sure
+ * that we have a locker associated with this transaction.
+ */
if (F_ISSET(td, TXN_DTL_RESTORED))
F_SET(txn, TXN_RESTORED);
+ else
+ ret = __lock_getlocker(env->lk_handle,
+ txn->txnid, 0, &txn->locker);
+
+ return (ret);
}
/*
@@ -537,7 +556,7 @@ __txn_commit(txn, flags)
REGENV *renv;
REGINFO *infop;
TXN_DETAIL *td;
- u_int32_t id, lflags;
+ u_int32_t id;
int ret, t_ret;
dbenv = txn->mgrp->dbenv;
@@ -550,7 +569,7 @@ __txn_commit(txn, flags)
* return. If the transaction deadlocked, they want abort, not commit.
*/
if (F_ISSET(txn, TXN_DEADLOCK)) {
- ret = __db_txn_deadlock_err(dbenv);
+ ret = __db_txn_deadlock_err(dbenv, txn);
goto err;
}
@@ -633,13 +652,13 @@ __txn_commit(txn, flags)
request.obj = &list_dbt;
}
ret = __lock_vec(dbenv,
- txn->txnid, 0, &request, 1, NULL);
+ txn->locker, 0, &request, 1, NULL);
}
if (ret == 0 && !IS_ZERO_LSN(td->last_lsn)) {
- SET_LOG_FLAGS(dbenv, txn, lflags);
ret = __txn_regop_log(dbenv, txn,
- &td->visible_lsn, lflags, TXN_COMMIT,
+ &td->visible_lsn, LOG_FLAGS(txn),
+ TXN_COMMIT,
(int32_t)time(NULL), id, request.obj);
if (ret == 0)
td->last_lsn = td->visible_lsn;
@@ -762,7 +781,7 @@ __txn_abort(txn)
REGENV *renv;
REGINFO *infop;
TXN_DETAIL *td;
- u_int32_t id, lflags;
+ u_int32_t id;
int ret;
dbenv = txn->mgrp->dbenv;
@@ -806,6 +825,11 @@ __txn_abort(txn)
}
if (LOCKING_ON(dbenv)) {
+ /* Allocate a locker for this restored txn if necessary. */
+ if (txn->locker == NULL &&
+ (ret = __lock_getlocker(dbenv->lk_handle,
+ txn->txnid, 1, &txn->locker)) != 0)
+ return (__db_panic(dbenv, ret));
/*
* We are about to free all the read locks for this transaction
* below. Some of those locks might be handle locks which
@@ -818,17 +842,17 @@ __txn_abort(txn)
/* Turn off timeouts. */
if ((ret = __lock_set_timeout(dbenv,
- txn->txnid, 0, DB_SET_TXN_TIMEOUT)) != 0)
+ txn->locker, 0, DB_SET_TXN_TIMEOUT)) != 0)
return (__db_panic(dbenv, ret));
if ((ret = __lock_set_timeout(dbenv,
- txn->txnid, 0, DB_SET_LOCK_TIMEOUT)) != 0)
+ txn->locker, 0, DB_SET_LOCK_TIMEOUT)) != 0)
return (__db_panic(dbenv, ret));
request.op = DB_LOCK_UPGRADE_WRITE;
request.obj = NULL;
if ((ret = __lock_vec(
- dbenv, txn->txnid, DB_LOCK_ABORT, &request, 1, NULL)) != 0)
+ dbenv, txn->locker, DB_LOCK_ABORT, &request, 1, NULL)) != 0)
return (__db_panic(dbenv, ret));
}
undo: if ((ret = __txn_undo(txn)) != 0)
@@ -840,10 +864,9 @@ undo: if ((ret = __txn_undo(txn)) != 0)
* then we log the abort so we know that this transaction
* was actually completed.
*/
-done: SET_LOG_FLAGS(dbenv, txn, lflags);
- if (DBENV_LOGGING(dbenv) && td->status == TXN_PREPARED &&
+done: if (DBENV_LOGGING(dbenv) && td->status == TXN_PREPARED &&
(ret = __txn_regop_log(dbenv, txn, &td->last_lsn,
- lflags, TXN_ABORT, (int32_t)time(NULL), id, NULL)) != 0)
+ LOG_FLAGS(txn), TXN_ABORT, (int32_t)time(NULL), id, NULL)) != 0)
return (__db_panic(dbenv, ret));
/* __txn_end always panics if it errors, so pass the return along. */
@@ -861,12 +884,15 @@ __txn_discard(txn, flags)
{
DB_ENV *dbenv;
DB_THREAD_INFO *ip;
- int ret;
+ int ret, t_ret;
dbenv = txn->mgrp->dbenv;
ENV_ENTER(dbenv, ip);
ret = __txn_discard_int(txn, flags);
+ if (IS_ENV_REPLICATED(dbenv) &&
+ (t_ret = __op_rep_exit(dbenv)) != 0 && ret == 0)
+ ret = t_ret;
ENV_LEAVE(dbenv, ip);
return (ret);
}
@@ -943,7 +969,7 @@ __txn_prepare(txn, gid)
if ((ret = __txn_isvalid(txn, TXN_OP_PREPARE)) != 0)
return (ret);
if (F_ISSET(txn, TXN_DEADLOCK))
- return (__db_txn_deadlock_err(dbenv));
+ return (__db_txn_deadlock_err(dbenv, txn));
ENV_ENTER(dbenv, ip);
@@ -971,13 +997,12 @@ __txn_prepare(txn, gid)
memset(&request, 0, sizeof(request));
if (LOCKING_ON(dbenv)) {
request.op = DB_LOCK_PUT_READ;
- if (IS_REP_MASTER(dbenv) &&
- !IS_ZERO_LSN(td->last_lsn)) {
+ if (!IS_ZERO_LSN(td->last_lsn)) {
memset(&list_dbt, 0, sizeof(list_dbt));
request.obj = &list_dbt;
}
if ((ret = __lock_vec(dbenv,
- txn->txnid, 0, &request, 1, NULL)) != 0)
+ txn->locker, 0, &request, 1, NULL)) != 0)
goto err;
}
@@ -1072,11 +1097,11 @@ __txn_set_name(txn, name)
ENV_ENTER(dbenv, ip);
TXN_SYSTEM_LOCK(dbenv);
if (td->name != INVALID_ROFF) {
- __db_shalloc_free(
+ __env_alloc_free(
&mgr->reginfo, R_ADDR(&mgr->reginfo, td->name));
td->name = INVALID_ROFF;
}
- if ((ret = __db_shalloc(&mgr->reginfo, len, 0, &p)) != 0) {
+ if ((ret = __env_alloc(&mgr->reginfo, len, &p)) != 0) {
TXN_SYSTEM_UNLOCK(dbenv);
__db_errx(dbenv,
"Unable to allocate memory for transaction name");
@@ -1116,15 +1141,17 @@ __txn_set_timeout(txn, timeout, op)
db_timeout_t timeout;
u_int32_t op;
{
+ DB_ENV *dbenv;
DB_THREAD_INFO *ip;
int ret;
- if (op != DB_SET_TXN_TIMEOUT && op != DB_SET_LOCK_TIMEOUT)
- return (__db_ferr(txn->mgrp->dbenv, "DB_TXN->set_timeout", 0));
+ dbenv = txn->mgrp->dbenv;
- ENV_ENTER(txn->mgrp->dbenv, ip);
- ret = __lock_set_timeout(
- txn->mgrp->dbenv, txn->txnid, timeout, op);
+ if (op != DB_SET_TXN_TIMEOUT && op != DB_SET_LOCK_TIMEOUT)
+ return (__db_ferr(dbenv, "DB_TXN->set_timeout", 0));
+
+ ENV_ENTER(dbenv, ip);
+ ret = __lock_set_timeout( dbenv, txn->locker, timeout, op);
ENV_LEAVE(txn->mgrp->dbenv, ip);
return (ret);
}
@@ -1276,18 +1303,26 @@ __txn_end(txn, is_commit)
* so DB_LOCK_DEADLOCK is just as fatal as any other error.
*/
if (LOCKING_ON(dbenv)) {
+ /* Allocate a locker for this restored txn if necessary. */
+ if (txn->locker == NULL &&
+ (ret = __lock_getlocker(dbenv->lk_handle,
+ txn->txnid, 1, &txn->locker)) != 0)
+ return (__db_panic(dbenv, ret));
request.op = txn->parent == NULL ||
is_commit == 0 ? DB_LOCK_PUT_ALL : DB_LOCK_INHERIT;
request.obj = NULL;
if ((ret = __lock_vec(dbenv,
- txn->txnid, 0, &request, 1, NULL)) != 0)
+ txn->locker, 0, &request, 1, NULL)) != 0)
return (__db_panic(dbenv, ret));
}
/* End the transaction. */
+ td = txn->td;
+ if (td->nlog_dbs != 0 && (ret = __txn_dref_fname(dbenv, txn)) != 0)
+ return (__db_panic(dbenv, ret));
+
TXN_SYSTEM_LOCK(dbenv);
- td = txn->td;
td->status = is_commit ? TXN_COMMITTED : TXN_ABORTED;
SH_TAILQ_REMOVE(&region->active_txn, td, links, __txn_detail);
if (F_ISSET(td, TXN_DTL_RESTORED)) {
@@ -1296,7 +1331,7 @@ __txn_end(txn, is_commit)
}
if (td->name != INVALID_ROFF) {
- __db_shalloc_free(
+ __env_alloc_free(
&mgr->reginfo, R_ADDR(&mgr->reginfo, td->name));
td->name = INVALID_ROFF;
}
@@ -1311,10 +1346,12 @@ __txn_end(txn, is_commit)
if (td->mvcc_ref != 0) {
SH_TAILQ_INSERT_HEAD(&region->mvcc_txn,
td, links, __txn_detail);
+#ifdef HAVE_STATISTICS
if (++region->stat.st_nsnapshot >
region->stat.st_maxnsnapshot)
region->stat.st_maxnsnapshot =
region->stat.st_nsnapshot;
+#endif
td = NULL;
}
MUTEX_UNLOCK(dbenv, mvcc_mtx);
@@ -1323,14 +1360,20 @@ __txn_end(txn, is_commit)
return (__db_panic(dbenv, ret));
}
- if (td != NULL)
- __db_shalloc_free(&mgr->reginfo, td);
+ if (td != NULL) {
+ if (td->nlog_slots != TXN_NSLOTS)
+ __env_alloc_free(&mgr->reginfo,
+ R_ADDR(&mgr->reginfo, td->log_dbs));
+ __env_alloc_free(&mgr->reginfo, td);
+ }
+#ifdef HAVE_STATISTICS
if (is_commit)
region->stat.st_ncommits++;
else
region->stat.st_naborts++;
--region->stat.st_nactive;
+#endif
TXN_SYSTEM_UNLOCK(dbenv);
@@ -1339,7 +1382,7 @@ __txn_end(txn, is_commit)
* if any.
*/
if (LOCKING_ON(dbenv) && (ret =
- __lock_freefamilylocker(dbenv->lk_handle, txn->txnid)) != 0)
+ __lock_freefamilylocker(dbenv->lk_handle, txn->locker)) != 0)
return (__db_panic(dbenv, ret));
if (txn->parent != NULL)
TAILQ_REMOVE(&txn->parent->kids, txn, klinks);
@@ -1362,11 +1405,19 @@ __txn_end(txn, is_commit)
}
if (do_closefiles) {
- F_SET(dbenv->lg_handle, DBLOG_RECOVER);
- (void)__dbreg_close_files(dbenv);
- F_CLR(dbenv->lg_handle, DBLOG_RECOVER);
+ /*
+ * Otherwise, we have resolved the last outstanding prepared
+ * txn and need to invalidate the fileids that were left
+ * open for those txns and then close them.
+ */
+ (void)__dbreg_invalidate_files(dbenv, 1);
+ (void)__dbreg_close_files(dbenv, 1);
+ if (IS_REP_MASTER(dbenv))
+ F_CLR(dbenv->rep_handle, DBREP_OPENFILES);
+ F_CLR(dbenv->lg_handle, DBLOG_OPENFILES);
mgr->n_discards = 0;
- (void)__txn_checkpoint(dbenv, 0, 0, DB_FORCE);
+ (void)__txn_checkpoint(dbenv, 0, 0,
+ DB_CKP_INTERNAL | DB_FORCE);
}
return (0);
@@ -1378,10 +1429,11 @@ __txn_dispatch_undo(dbenv, txn, rdbt, key_lsn, txnlist)
DB_TXN *txn;
DBT *rdbt;
DB_LSN *key_lsn;
- void *txnlist;
+ DB_TXNHEAD *txnlist;
{
int ret;
+ txnlist->td = txn->td;
ret = __db_dispatch(dbenv, dbenv->recover_dtab,
dbenv->recover_dtab_size, rdbt, key_lsn, DB_TXN_ABORT, txnlist);
if (ret == DB_SURPRISE_KID) {
@@ -1418,7 +1470,7 @@ __txn_undo(txn)
txnlist = NULL;
ret = 0;
- if (!DBENV_LOGGING(dbenv))
+ if (!LOGGING_ON(dbenv))
return (0);
/*
@@ -1474,7 +1526,7 @@ __txn_undo(txn)
* The dispatch routine returns the lsn of the record
* before the current one in the key_lsn argument.
*/
- if ((ret = __log_c_get(logc, &key_lsn, &rdbt, DB_SET)) == 0) {
+ if ((ret = __logc_get(logc, &key_lsn, &rdbt, DB_SET)) == 0) {
ret = __txn_dispatch_undo(dbenv,
txn, &rdbt, &key_lsn, txnlist);
}
@@ -1491,7 +1543,7 @@ __txn_undo(txn)
ret = __db_do_the_limbo(dbenv, ptxn, txn, txnlist, LIMBO_NORMAL);
#endif
-err: if (logc != NULL && (t_ret = __log_c_close(logc)) != 0 && ret == 0)
+err: if (logc != NULL && (t_ret = __logc_close(logc)) != 0 && ret == 0)
ret = t_ret;
if (ptxn == NULL && txnlist != NULL)
@@ -1586,10 +1638,10 @@ __txn_force_abort(dbenv, buffer)
}
/*
- * __txn_preclose
- * Before we can close an environment, we need to check if we
- * were in the midst of taking care of restored transactions. If
- * so, then we need to close the files that we opened.
+ * __txn_preclose --
+ * Before we can close an environment, we need to check if we were in the
+ * middle of taking care of restored transactions. If so, close the files
+ * we opened.
*
* PUBLIC: int __txn_preclose __P((DB_ENV *));
*/
@@ -1614,12 +1666,12 @@ __txn_preclose(dbenv)
if (do_closefiles) {
/*
- * Set the DBLOG_RECOVER flag while closing these
- * files so they do not create additional log records
- * that will confuse future recoveries.
+ * Set the DBLOG_RECOVER flag while closing these files so they
+ * do not create additional log records that will confuse future
+ * recoveries.
*/
F_SET(dbenv->lg_handle, DBLOG_RECOVER);
- ret = __dbreg_close_files(dbenv);
+ ret = __dbreg_close_files(dbenv, 0);
F_CLR(dbenv->lg_handle, DBLOG_RECOVER);
} else
ret = 0;
diff --git a/db/txn/txn.src b/db/txn/txn.src
index 0cd2bbcaa..ada4862d5 100644
--- a/db/txn/txn.src
+++ b/db/txn/txn.src
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: txn.src,v 12.7 2006/08/24 14:46:53 bostic Exp $
+ * $Id: txn.src,v 12.11 2007/06/01 17:35:16 sue Exp $
*/
PREFIX __txn
@@ -29,15 +28,15 @@ INCLUDE
* Environment ID of this operation (4.4+).
*/
BEGIN_COMPAT regop 42 10
-ARG opcode u_int32_t ld
+ARG opcode u_int32_t lu
TIME timestamp int32_t ld
LOCKS locks DBT s
END
BEGIN regop 44 10
-ARG opcode u_int32_t ld
+ARG opcode u_int32_t lu
TIME timestamp int32_t ld
-ARG envid u_int32_t ld
+ARG envid u_int32_t lu
LOCKS locks DBT s
END
@@ -57,21 +56,22 @@ END
* envid:
* Environment ID of this checkpoint (4.3+).
* rep_gen:
- * Persistent replication generation number.
+ * Persistent replication generation number (4.2-4.5 only).
+ * Renamed to 'spare' in 4.6.
*/
BEGIN_COMPAT ckp 42 11
POINTER ckp_lsn DB_LSN * lu
POINTER last_ckp DB_LSN * lu
TIME timestamp int32_t ld
-ARG rep_gen u_int32_t ld
+ARG rep_gen u_int32_t lu
END
BEGIN ckp 43 11
POINTER ckp_lsn DB_LSN * lu
POINTER last_ckp DB_LSN * lu
TIME timestamp int32_t ld
-ARG envid u_int32_t ld
-ARG rep_gen u_int32_t ld
+ARG envid u_int32_t lu
+ARG spare u_int32_t lu
END
/*
@@ -93,8 +93,8 @@ BEGIN xa_regop 42 13
ARG opcode u_int32_t lu
DBT xid DBT s
ARG formatID int32_t ld
-ARG gtrid u_int32_t u
-ARG bqual u_int32_t u
+ARG gtrid u_int32_t lu
+ARG bqual u_int32_t lu
POINTER begin_lsn DB_LSN * lu
LOCKS locks DBT s
END
@@ -103,6 +103,6 @@ END
* Log the fact that we are recycling txnids.
*/
BEGIN recycle 42 14
-ARG min u_int32_t u
-ARG max u_int32_t u
+ARG min u_int32_t lu
+ARG max u_int32_t lu
END
diff --git a/db/txn/txn_auto.c b/db/txn/txn_auto.c
index 3a8cda986..d72869d5b 100644
--- a/db/txn/txn_auto.c
+++ b/db/txn/txn_auto.c
@@ -196,6 +196,7 @@ __txn_regop_log(dbenv, txnp, ret_lsnp, flags,
*ret_lsnp = *rlsnp;
}
} else {
+ ret = 0;
#ifdef DIAGNOSTIC
/*
* Set the debug bit if we are going to log non-durable
@@ -205,10 +206,9 @@ __txn_regop_log(dbenv, txnp, ret_lsnp, flags,
rectype |= DB_debug_FLAG;
memcpy(logrec.data, &rectype, sizeof(rectype));
- ret = __log_put(dbenv,
- rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
-#else
- ret = 0;
+ if (!IS_REP_CLIENT(dbenv))
+ ret = __log_put(dbenv,
+ rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
#endif
STAILQ_INSERT_HEAD(&txnp->logs, lr, links);
F_SET((TXN_DETAIL *)txnp->td, TXN_DTL_INMEMORY);
@@ -336,7 +336,7 @@ __txn_ckp_42_read(dbenv, recbuf, argpp)
*/
int
__txn_ckp_log(dbenv, txnp, ret_lsnp, flags,
- ckp_lsn, last_ckp, timestamp, envid, rep_gen)
+ ckp_lsn, last_ckp, timestamp, envid, spare)
DB_ENV *dbenv;
DB_TXN *txnp;
DB_LSN *ret_lsnp;
@@ -345,7 +345,7 @@ __txn_ckp_log(dbenv, txnp, ret_lsnp, flags,
DB_LSN * last_ckp;
int32_t timestamp;
u_int32_t envid;
- u_int32_t rep_gen;
+ u_int32_t spare;
{
DBT logrec;
DB_TXNLOGREC *lr;
@@ -454,7 +454,7 @@ __txn_ckp_log(dbenv, txnp, ret_lsnp, flags,
memcpy(bp, &uinttmp, sizeof(uinttmp));
bp += sizeof(uinttmp);
- uinttmp = (u_int32_t)rep_gen;
+ uinttmp = (u_int32_t)spare;
memcpy(bp, &uinttmp, sizeof(uinttmp));
bp += sizeof(uinttmp);
@@ -469,6 +469,7 @@ __txn_ckp_log(dbenv, txnp, ret_lsnp, flags,
*ret_lsnp = *rlsnp;
}
} else {
+ ret = 0;
#ifdef DIAGNOSTIC
/*
* Set the debug bit if we are going to log non-durable
@@ -478,10 +479,9 @@ __txn_ckp_log(dbenv, txnp, ret_lsnp, flags,
rectype |= DB_debug_FLAG;
memcpy(logrec.data, &rectype, sizeof(rectype));
- ret = __log_put(dbenv,
- rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
-#else
- ret = 0;
+ if (!IS_REP_CLIENT(dbenv))
+ ret = __log_put(dbenv,
+ rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
#endif
STAILQ_INSERT_HEAD(&txnp->logs, lr, links);
F_SET((TXN_DETAIL *)txnp->td, TXN_DTL_INMEMORY);
@@ -548,7 +548,7 @@ __txn_ckp_read(dbenv, recbuf, argpp)
bp += sizeof(uinttmp);
memcpy(&uinttmp, bp, sizeof(uinttmp));
- argp->rep_gen = (u_int32_t)uinttmp;
+ argp->spare = (u_int32_t)uinttmp;
bp += sizeof(uinttmp);
*argpp = argp;
@@ -674,6 +674,7 @@ __txn_child_log(dbenv, txnp, ret_lsnp, flags,
*ret_lsnp = *rlsnp;
}
} else {
+ ret = 0;
#ifdef DIAGNOSTIC
/*
* Set the debug bit if we are going to log non-durable
@@ -683,10 +684,9 @@ __txn_child_log(dbenv, txnp, ret_lsnp, flags,
rectype |= DB_debug_FLAG;
memcpy(logrec.data, &rectype, sizeof(rectype));
- ret = __log_put(dbenv,
- rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
-#else
- ret = 0;
+ if (!IS_REP_CLIENT(dbenv))
+ ret = __log_put(dbenv,
+ rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
#endif
STAILQ_INSERT_HEAD(&txnp->logs, lr, links);
F_SET((TXN_DETAIL *)txnp->td, TXN_DTL_INMEMORY);
@@ -914,6 +914,7 @@ __txn_xa_regop_log(dbenv, txnp, ret_lsnp, flags,
*ret_lsnp = *rlsnp;
}
} else {
+ ret = 0;
#ifdef DIAGNOSTIC
/*
* Set the debug bit if we are going to log non-durable
@@ -923,10 +924,9 @@ __txn_xa_regop_log(dbenv, txnp, ret_lsnp, flags,
rectype |= DB_debug_FLAG;
memcpy(logrec.data, &rectype, sizeof(rectype));
- ret = __log_put(dbenv,
- rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
-#else
- ret = 0;
+ if (!IS_REP_CLIENT(dbenv))
+ ret = __log_put(dbenv,
+ rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
#endif
STAILQ_INSERT_HEAD(&txnp->logs, lr, links);
F_SET((TXN_DETAIL *)txnp->td, TXN_DTL_INMEMORY);
@@ -1131,6 +1131,7 @@ __txn_recycle_log(dbenv, txnp, ret_lsnp, flags,
*ret_lsnp = *rlsnp;
}
} else {
+ ret = 0;
#ifdef DIAGNOSTIC
/*
* Set the debug bit if we are going to log non-durable
@@ -1140,10 +1141,9 @@ __txn_recycle_log(dbenv, txnp, ret_lsnp, flags,
rectype |= DB_debug_FLAG;
memcpy(logrec.data, &rectype, sizeof(rectype));
- ret = __log_put(dbenv,
- rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
-#else
- ret = 0;
+ if (!IS_REP_CLIENT(dbenv))
+ ret = __log_put(dbenv,
+ rlsnp, (DBT *)&logrec, flags | DB_LOG_NOCOPY);
#endif
STAILQ_INSERT_HEAD(&txnp->logs, lr, links);
F_SET((TXN_DETAIL *)txnp->td, TXN_DTL_INMEMORY);
diff --git a/db/txn/txn_autop.c b/db/txn/txn_autop.c
index c993e0fad..1cc878bd5 100644
--- a/db/txn/txn_autop.c
+++ b/db/txn/txn_autop.c
@@ -41,7 +41,7 @@ __txn_regop_42_print(dbenv, dbtp, lsnp, notused2, notused3)
(u_long)argp->type,
(u_long)argp->txnp->txnid,
(u_long)argp->prev_lsn.file, (u_long)argp->prev_lsn.offset);
- (void)printf("\topcode: %ld\n", (long)argp->opcode);
+ (void)printf("\topcode: %lu\n", (u_long)argp->opcode);
timeval = (time_t)argp->timestamp;
lt = localtime(&timeval);
(void)printf(
@@ -87,7 +87,7 @@ __txn_regop_print(dbenv, dbtp, lsnp, notused2, notused3)
(u_long)argp->type,
(u_long)argp->txnp->txnid,
(u_long)argp->prev_lsn.file, (u_long)argp->prev_lsn.offset);
- (void)printf("\topcode: %ld\n", (long)argp->opcode);
+ (void)printf("\topcode: %lu\n", (u_long)argp->opcode);
timeval = (time_t)argp->timestamp;
lt = localtime(&timeval);
(void)printf(
@@ -96,7 +96,7 @@ __txn_regop_print(dbenv, dbtp, lsnp, notused2, notused3)
(u_long)lt->tm_year - 100, (u_long)lt->tm_mon+1,
(u_long)lt->tm_mday, (u_long)lt->tm_hour,
(u_long)lt->tm_min, (u_long)lt->tm_sec);
- (void)printf("\tenvid: %ld\n", (long)argp->envid);
+ (void)printf("\tenvid: %lu\n", (u_long)argp->envid);
(void)printf("\tlocks: \n");
__lock_list_print(dbenv, &argp->locks);
(void)printf("\n");
@@ -146,7 +146,7 @@ __txn_ckp_42_print(dbenv, dbtp, lsnp, notused2, notused3)
(u_long)lt->tm_year - 100, (u_long)lt->tm_mon+1,
(u_long)lt->tm_mday, (u_long)lt->tm_hour,
(u_long)lt->tm_min, (u_long)lt->tm_sec);
- (void)printf("\trep_gen: %ld\n", (long)argp->rep_gen);
+ (void)printf("\trep_gen: %lu\n", (u_long)argp->rep_gen);
(void)printf("\n");
__os_free(dbenv, argp);
return (0);
@@ -194,8 +194,8 @@ __txn_ckp_print(dbenv, dbtp, lsnp, notused2, notused3)
(u_long)lt->tm_year - 100, (u_long)lt->tm_mon+1,
(u_long)lt->tm_mday, (u_long)lt->tm_hour,
(u_long)lt->tm_min, (u_long)lt->tm_sec);
- (void)printf("\tenvid: %ld\n", (long)argp->envid);
- (void)printf("\trep_gen: %ld\n", (long)argp->rep_gen);
+ (void)printf("\tenvid: %lu\n", (u_long)argp->envid);
+ (void)printf("\tspare: %lu\n", (u_long)argp->spare);
(void)printf("\n");
__os_free(dbenv, argp);
return (0);
@@ -273,8 +273,8 @@ __txn_xa_regop_print(dbenv, dbtp, lsnp, notused2, notused3)
}
(void)printf("\n");
(void)printf("\tformatID: %ld\n", (long)argp->formatID);
- (void)printf("\tgtrid: %u\n", argp->gtrid);
- (void)printf("\tbqual: %u\n", argp->bqual);
+ (void)printf("\tgtrid: %lu\n", (u_long)argp->gtrid);
+ (void)printf("\tbqual: %lu\n", (u_long)argp->bqual);
(void)printf("\tbegin_lsn: [%lu][%lu]\n",
(u_long)argp->begin_lsn.file, (u_long)argp->begin_lsn.offset);
(void)printf("\tlocks: \n");
@@ -311,8 +311,8 @@ __txn_recycle_print(dbenv, dbtp, lsnp, notused2, notused3)
(u_long)argp->type,
(u_long)argp->txnp->txnid,
(u_long)argp->prev_lsn.file, (u_long)argp->prev_lsn.offset);
- (void)printf("\tmin: %u\n", argp->min);
- (void)printf("\tmax: %u\n", argp->max);
+ (void)printf("\tmin: %lu\n", (u_long)argp->min);
+ (void)printf("\tmax: %lu\n", (u_long)argp->max);
(void)printf("\n");
__os_free(dbenv, argp);
return (0);
diff --git a/db/txn/txn_chkpt.c b/db/txn/txn_chkpt.c
index 59ddf5509..89cf670e6 100644
--- a/db/txn/txn_chkpt.c
+++ b/db/txn/txn_chkpt.c
@@ -1,8 +1,7 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*/
/*
* Copyright (c) 1995, 1996
@@ -35,7 +34,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: txn_chkpt.c,v 12.27 2006/08/24 14:46:53 bostic Exp $
+ * $Id: txn_chkpt.c,v 12.47 2007/06/08 17:34:57 bostic Exp $
*/
#include "db_config.h"
@@ -101,22 +100,11 @@ __txn_checkpoint(dbenv, kbytes, minutes, flags)
REGENV *renv;
REGINFO *infop;
time_t last_ckp_time, now;
- u_int32_t bytes, gen, id, logflags, mbytes;
+ u_int32_t bytes, id, logflags, mbytes, op;
int ret;
- ret = gen = 0;
- /*
- * A client will only call through here during recovery,
- * so just sync the Mpool and go home.
- */
- if (IS_REP_CLIENT(dbenv)) {
- if (MPOOL_ON(dbenv) && (ret = __memp_sync(dbenv, NULL)) != 0) {
- __db_err(dbenv, ret,
- "txn_checkpoint: failed to flush the buffer cache");
- return (ret);
- }
- return (0);
- }
+ DB_ASSERT(dbenv, !IS_REP_CLIENT(dbenv));
+ ret = 0;
mgr = dbenv->tx_handle;
region = mgr->reginfo.primary;
@@ -177,17 +165,68 @@ __txn_checkpoint(dbenv, kbytes, minutes, flags)
* sees a later chk_lsn but competes first. An archive process could
* then remove a log this checkpoint depends on.
*/
-do_ckp: MUTEX_LOCK(dbenv, region->mtx_ckp);
+do_ckp:
+ MUTEX_LOCK(dbenv, region->mtx_ckp);
if ((ret = __txn_getactive(dbenv, &ckp_lsn)) != 0)
goto err;
- if (MPOOL_ON(dbenv) && (ret = __memp_sync(dbenv, NULL)) != 0) {
+ /*
+ * Checkpoints in replication groups can cause performance problems.
+ *
+ * As on the master, checkpoint on the replica requires the cache be
+ * flushed. The problem occurs when a client has dirty cache pages
+ * to write when the checkpoint record arrives, and the client's PERM
+ * response is necessary in order to meet the system's durability
+ * guarantees. In this case, the master will have to wait until the
+ * client completes its cache flush and writes the checkpoint record
+ * before subsequent transactions can be committed. The delay may
+ * cause transactions to timeout waiting on client response, which
+ * can cause nasty ripple effects in the system's overall throughput.
+ * [#15338]
+ *
+ * First, we send a start-sync record when the checkpoint starts so
+ * clients can start flushing their cache in preparation for the
+ * arrival of the checkpoint record.
+ */
+ if (LOGGING_ON(dbenv) &&
+ IS_REP_MASTER(dbenv) && dbenv->rep_handle->send != NULL)
+ (void)__rep_send_message(dbenv,
+ DB_EID_BROADCAST, REP_START_SYNC, &ckp_lsn, NULL, 0, 0);
+
+ /* Flush the cache. */
+ if (MPOOL_ON(dbenv) &&
+ (ret = __memp_sync_int(
+ dbenv, NULL, 0, DB_SYNC_CHECKPOINT, NULL, NULL)) != 0) {
__db_err(dbenv, ret,
"txn_checkpoint: failed to flush the buffer cache");
goto err;
}
/*
+ * The client won't have more dirty pages to flush from its cache than
+ * the master did, but there may be differences between the hardware,
+ * I/O configuration and workload on the master and the client that
+ * can result in the client being unable to finish its cache flush as
+ * fast as the master. A way to avoid the problem is to pause after
+ * the master completes its checkpoint and before the actual checkpoint
+ * record is logged, giving the replicas additional time to finish.
+ *
+ * !!!
+ * We do not currently surface an API to modify this value,
+ *
+ * !!!
+ * Currently turned off when testing, because it makes the test suite
+ * take a long time to run.
+ */
+#ifndef CONFIG_TEST
+ if (LOGGING_ON(dbenv) &&
+ IS_REP_MASTER(dbenv) && dbenv->rep_handle->send != NULL &&
+ !LF_ISSET(DB_CKP_INTERNAL) &&
+ dbenv->rep_handle->region->chkpt_delay != 0)
+ __os_sleep(dbenv, dbenv->rep_handle->region->chkpt_delay, 0);
+#endif
+
+ /*
* Because we can't be a replication client here, and because
* recovery (somewhat unusually) calls txn_checkpoint and expects
* it to write a log message, LOGGING_ON is the correct macro here.
@@ -196,9 +235,6 @@ do_ckp: MUTEX_LOCK(dbenv, region->mtx_ckp);
TXN_SYSTEM_LOCK(dbenv);
last_ckp = region->last_ckp;
TXN_SYSTEM_UNLOCK(dbenv);
- if (REP_ON(dbenv) && (ret = __rep_get_gen(dbenv, &gen)) != 0)
- goto err;
-
/*
* Put out records for the open files before we log
* the checkpoint. The records are certain to be at
@@ -208,11 +244,20 @@ do_ckp: MUTEX_LOCK(dbenv, region->mtx_ckp);
* checkpoint.
*/
logflags = DB_LOG_CHKPNT;
+ /*
+ * If this is a normal checkpoint, log files as checkpoints.
+ * If we are recovering, only log as DBREG_RCLOSE if
+ * there are no prepared txns. Otherwise, it should
+ * stay as DBREG_CHKPNT.
+ */
+ op = DBREG_CHKPNT;
if (!IS_RECOVERING(dbenv))
logflags |= DB_FLUSH;
- if ((ret = __dbreg_log_files(dbenv)) != 0 ||
+ else if (region->stat.st_nrestores == 0)
+ op = DBREG_RCLOSE;
+ if ((ret = __dbreg_log_files(dbenv, op)) != 0 ||
(ret = __txn_ckp_log(dbenv, NULL, &ckp_lsn, logflags,
- &ckp_lsn, &last_ckp, (int32_t)time(NULL), id, gen)) != 0) {
+ &ckp_lsn, &last_ckp, (int32_t)time(NULL), id, 0)) != 0) {
__db_err(dbenv, ret,
"txn_checkpoint: log failed at LSN [%ld %ld]",
(long)ckp_lsn.file, (long)ckp_lsn.offset);
diff --git a/db/txn/txn_failchk.c b/db/txn/txn_failchk.c
index 4301fdab8..92bb24d3a 100644
--- a/db/txn/txn_failchk.c
+++ b/db/txn/txn_failchk.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2005-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2005,2007 Oracle. All rights reserved.
*
- * $Id: txn_failchk.c,v 12.6 2006/08/24 14:46:53 bostic Exp $
+ * $Id: txn_failchk.c,v 12.9 2007/06/29 00:25:02 margo Exp $
*/
#include "db_config.h"
@@ -63,7 +62,8 @@ retry: TXN_SYSTEM_LOCK(dbenv);
TXN_SYSTEM_UNLOCK(dbenv);
if ((ret = __os_calloc(dbenv, 1, sizeof(DB_TXN), &txn)) != 0)
return (ret);
- __txn_continue(dbenv, txn, td);
+ if ((ret = __txn_continue(dbenv, txn, td)) != 0)
+ return (ret);
F_SET(txn, TXN_MALLOC);
SH_TAILQ_FOREACH(ktd, &td->kids, klinks, __txn_detail) {
if (F_ISSET(ktd, TXN_DTL_INMEMORY))
@@ -73,7 +73,8 @@ retry: TXN_SYSTEM_LOCK(dbenv);
if ((ret =
__os_calloc(dbenv, 1, sizeof(DB_TXN), &ktxn)) != 0)
return (ret);
- __txn_continue(dbenv, ktxn, ktd);
+ if ((ret = __txn_continue(dbenv, ktxn, ktd)) != 0)
+ return (ret);
F_SET(ktxn, TXN_MALLOC);
ktxn->parent = txn;
TAILQ_INSERT_HEAD(&txn->kids, txn, klinks);
diff --git a/db/txn/txn_method.c b/db/txn/txn_method.c
index f56867473..d1c46da2b 100644
--- a/db/txn/txn_method.c
+++ b/db/txn/txn_method.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: txn_method.c,v 12.6 2006/08/24 14:46:53 bostic Exp $
+ * $Id: txn_method.c,v 12.9 2007/05/17 15:16:00 bostic Exp $
*/
#include "db_config.h"
@@ -13,13 +12,13 @@
#include "dbinc/txn.h"
/*
- * __txn_dbenv_create --
+ * __txn_env_create --
* Transaction specific initialization of the DB_ENV structure.
*
- * PUBLIC: int __txn_dbenv_create __P((DB_ENV *));
+ * PUBLIC: int __txn_env_create __P((DB_ENV *));
*/
int
-__txn_dbenv_create(dbenv)
+__txn_env_create(dbenv)
DB_ENV *dbenv;
{
/*
@@ -34,13 +33,13 @@ __txn_dbenv_create(dbenv)
}
/*
- * __txn_dbenv_destroy --
+ * __txn_env_destroy --
* Transaction specific destruction of the DB_ENV structure.
*
- * PUBLIC: void __txn_dbenv_destroy __P((DB_ENV *));
+ * PUBLIC: void __txn_env_destroy __P((DB_ENV *));
*/
void
-__txn_dbenv_destroy(dbenv)
+__txn_env_destroy(dbenv)
DB_ENV *dbenv;
{
COMPQUIET(dbenv, NULL);
diff --git a/db/txn/txn_rec.c b/db/txn/txn_rec.c
index c81a9dcae..263ae28f2 100644
--- a/db/txn/txn_rec.c
+++ b/db/txn/txn_rec.c
@@ -1,8 +1,7 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*/
/*
* Copyright (c) 1996
@@ -32,13 +31,14 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: txn_rec.c,v 12.14 2006/08/24 14:46:53 bostic Exp $
+ * $Id: txn_rec.c,v 12.25 2007/06/01 15:36:52 sue Exp $
*/
#include "db_config.h"
#include "db_int.h"
#include "dbinc/db_page.h"
+#include "dbinc/lock.h"
#include "dbinc/txn.h"
#include "dbinc/db_am.h"
@@ -142,6 +142,9 @@ __txn_xa_regop_recover(dbenv, dbtp, lsnp, op, info)
db_recops op;
void *info;
{
+ DBT *lock_dbt;
+ DB_TXNHEAD *headp;
+ DB_LOCKTAB *lt;
__txn_xa_regop_args *argp;
int ret;
u_int32_t status;
@@ -157,6 +160,7 @@ __txn_xa_regop_recover(dbenv, dbtp, lsnp, op, info)
ret = EINVAL;
goto err;
}
+ headp = info;
/*
* The return value here is either a DB_NOTFOUND or it is
@@ -169,9 +173,8 @@ __txn_xa_regop_recover(dbenv, dbtp, lsnp, op, info)
/*
* If we are rolling forward, then an aborted prepare
- * indicates that this may the last record we'll see for
- * this transaction ID, so we should remove it from the
- * list.
+ * indicates that this may be the last record we'll see for
+ * this transaction ID, so we should remove it from the list.
*/
if (op == DB_TXN_FORWARD_ROLL) {
@@ -211,9 +214,27 @@ txn_err: __db_errx(dbenv,
"transaction not in list %lx",
(u_long)argp->txnp->txnid);
ret = DB_NOTFOUND;
- } else if ((ret = __db_txnlist_add(dbenv,
- info, argp->txnp->txnid, TXN_COMMIT, lsnp)) == 0)
- ret = __txn_restore_txn(dbenv, lsnp, argp);
+ } else if (IS_ZERO_LSN(headp->trunc_lsn) ||
+ LOG_COMPARE(&headp->trunc_lsn, lsnp) >= 0) {
+ if ((ret = __db_txnlist_add(dbenv,
+ info, argp->txnp->txnid, TXN_COMMIT, lsnp)) == 0) {
+ /* Re-acquire the locks for this transaction. */
+ lock_dbt = &argp->locks;
+ if (LOCKING_ON(dbenv)) {
+ lt = dbenv->lk_handle;
+ if ((ret = __lock_getlocker(lt,
+ argp->txnp->txnid, 1,
+ &argp->txnp->locker)) != 0)
+ goto err;
+ if ((ret = __lock_get_list(dbenv,
+ argp->txnp->locker, 0,
+ DB_LOCK_WRITE, lock_dbt)) != 0)
+ goto err;
+ }
+
+ ret = __txn_restore_txn(dbenv, lsnp, argp);
+ }
+ }
} else
ret = 0;
@@ -237,8 +258,6 @@ __txn_ckp_recover(dbenv, dbtp, lsnp, op, info)
db_recops op;
void *info;
{
- DB_REP *db_rep;
- REP *rep;
__txn_ckp_args *argp;
int ret;
@@ -251,16 +270,6 @@ __txn_ckp_recover(dbenv, dbtp, lsnp, op, info)
if (op == DB_TXN_BACKWARD_ROLL)
__db_txnlist_ckp(dbenv, info, lsnp);
- if (op == DB_TXN_FORWARD_ROLL) {
- /* Record the max generation number that we've seen. */
- if (REP_ON(dbenv)) {
- db_rep = dbenv->rep_handle;
- rep = db_rep->region;
- if (argp->rep_gen > rep->recover_gen)
- rep->recover_gen = argp->rep_gen;
- }
- }
-
*lsnp = argp->last_ckp;
__os_free(dbenv, argp);
return (DB_TXN_CKP);
@@ -418,8 +427,7 @@ __txn_restore_txn(dbenv, lsnp, argp)
TXN_SYSTEM_LOCK(dbenv);
/* Allocate a new transaction detail structure. */
- if ((ret =
- __db_shalloc(&mgr->reginfo, sizeof(TXN_DETAIL), 0, &td)) != 0) {
+ if ((ret = __env_alloc(&mgr->reginfo, sizeof(TXN_DETAIL), &td)) != 0) {
TXN_SYSTEM_UNLOCK(dbenv);
return (ret);
}
@@ -445,11 +453,16 @@ __txn_restore_txn(dbenv, lsnp, argp)
td->bqual = argp->bqual;
td->gtrid = argp->gtrid;
td->format = argp->formatID;
+ td->nlog_dbs = 0;
+ td->nlog_slots = TXN_NSLOTS;
+ td->log_dbs = R_OFFSET(&mgr->reginfo, td->slots);
region->stat.st_nrestores++;
+#ifdef HAVE_STATISTICS
region->stat.st_nactive++;
if (region->stat.st_nactive > region->stat.st_maxnactive)
region->stat.st_maxnactive = region->stat.st_nactive;
+#endif
TXN_SYSTEM_UNLOCK(dbenv);
return (0);
}
@@ -587,8 +600,6 @@ __txn_ckp_42_recover(dbenv, dbtp, lsnp, op, info)
db_recops op;
void *info;
{
- DB_REP *db_rep;
- REP *rep;
__txn_ckp_42_args *argp;
int ret;
@@ -601,16 +612,6 @@ __txn_ckp_42_recover(dbenv, dbtp, lsnp, op, info)
if (op == DB_TXN_BACKWARD_ROLL)
__db_txnlist_ckp(dbenv, info, lsnp);
- if (op == DB_TXN_FORWARD_ROLL) {
- /* Record the max generation number that we've seen. */
- if (REP_ON(dbenv)) {
- db_rep = dbenv->rep_handle;
- rep = db_rep->region;
- if (argp->rep_gen > rep->recover_gen)
- rep->recover_gen = argp->rep_gen;
- }
- }
-
*lsnp = argp->last_ckp;
__os_free(dbenv, argp);
return (DB_TXN_CKP);
diff --git a/db/txn/txn_recover.c b/db/txn/txn_recover.c
index 961f0c39c..81c8d0c6e 100644
--- a/db/txn/txn_recover.c
+++ b/db/txn/txn_recover.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2001-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2001,2007 Oracle. All rights reserved.
*
- * $Id: txn_recover.c,v 12.19 2006/08/24 14:46:53 bostic Exp $
+ * $Id: txn_recover.c,v 12.29 2007/06/29 00:25:02 margo Exp $
*/
#include "db_config.h"
@@ -134,7 +133,7 @@ __txn_get_prepared(dbenv, xids, txns, count, retp, flags)
XID *xids;
DB_PREPLIST *txns;
long count; /* This is long for XA compatibility. */
- long *retp;
+ long *retp;
u_int32_t flags;
{
DB_LSN min;
@@ -144,15 +143,14 @@ __txn_get_prepared(dbenv, xids, txns, count, retp, flags)
TXN_DETAIL *td;
XID *xidp;
long i;
- int nrestores, open_files, ret;
+ int restored, ret;
*retp = 0;
MAX_LSN(min);
prepp = txns;
xidp = xids;
- nrestores = ret = 0;
- open_files = 1;
+ restored = ret = 0;
/*
* If we are starting a scan, then we traverse the active transaction
@@ -173,24 +171,18 @@ __txn_get_prepared(dbenv, xids, txns, count, retp, flags)
* restored, then we never crashed; just the main server did).
*/
TXN_SYSTEM_LOCK(dbenv);
- if (flags == DB_FIRST) {
- SH_TAILQ_FOREACH(td, &region->active_txn, links, __txn_detail) {
- if (F_ISSET(td, TXN_DTL_RESTORED))
- nrestores++;
- F_CLR(td, TXN_DTL_COLLECTED);
- }
- mgr->n_discards = 0;
- } else
- open_files = 0;
/* Now begin collecting active transactions. */
for (td = SH_TAILQ_FIRST(&region->active_txn, __txn_detail);
td != NULL && *retp < count;
td = SH_TAILQ_NEXT(td, links, __txn_detail)) {
if (td->status != TXN_PREPARED ||
- F_ISSET(td, TXN_DTL_COLLECTED))
+ (flags != DB_FIRST && F_ISSET(td, TXN_DTL_COLLECTED)))
continue;
+ if (F_ISSET(td, TXN_DTL_RESTORED))
+ restored = 1;
+
if (xids != NULL) {
xidp->formatID = td->format;
/*
@@ -210,7 +202,8 @@ __txn_get_prepared(dbenv, xids, txns, count, retp, flags)
TXN_SYSTEM_UNLOCK(dbenv);
goto err;
}
- __txn_continue(dbenv, prepp->txn, td);
+ if ((ret = __txn_continue(dbenv, prepp->txn, td)) != 0)
+ goto err;
F_SET(prepp->txn, TXN_MALLOC);
memcpy(prepp->gid, td->xid, sizeof(td->xid));
prepp++;
@@ -222,30 +215,43 @@ __txn_get_prepared(dbenv, xids, txns, count, retp, flags)
(*retp)++;
F_SET(td, TXN_DTL_COLLECTED);
- if (IS_ENV_REPLICATED(dbenv) &&
- (ret = __op_rep_enter(dbenv)) != 0)
- goto err;
}
+ if (flags == DB_FIRST)
+ for (; td != NULL; td = SH_TAILQ_NEXT(td, links, __txn_detail))
+ F_CLR(td, TXN_DTL_COLLECTED);
TXN_SYSTEM_UNLOCK(dbenv);
/*
* Now link all the transactions into the transaction manager's list.
*/
- if (txns != NULL) {
+ if (txns != NULL && *retp != 0) {
MUTEX_LOCK(dbenv, mgr->mutex);
for (i = 0; i < *retp; i++)
TAILQ_INSERT_TAIL(&mgr->txn_chain, txns[i].txn, links);
MUTEX_UNLOCK(dbenv, mgr->mutex);
- }
- if (open_files && nrestores && *retp != 0 && !IS_MAX_LSN(min)) {
- F_SET(dbenv->lg_handle, DBLOG_RECOVER);
- ret = __txn_openfiles(dbenv, &min, 0);
- F_CLR(dbenv->lg_handle, DBLOG_RECOVER);
+ /*
+ * If we are restoring, update our count of outstanding
+ * transactions.
+ */
+ if (REP_ON(dbenv)) {
+ REP_SYSTEM_LOCK(dbenv);
+ dbenv->rep_handle->region->op_cnt += (u_long)*retp;
+ REP_SYSTEM_UNLOCK(dbenv);
+ }
+
}
- return (0);
+ /*
+ * If recovery already opened the files for us, don't
+ * do it here.
+ */
+ if (restored != 0 && flags == DB_FIRST &&
+ !F_ISSET(dbenv->lg_handle, DBLOG_OPENFILES))
+ ret = __txn_openfiles(dbenv, &min, 0);
-err: TXN_SYSTEM_UNLOCK(dbenv);
+ if (0) {
+err: TXN_SYSTEM_UNLOCK(dbenv);
+ }
return (ret);
}
@@ -279,7 +285,7 @@ __txn_openfiles(dbenv, min, force)
memset(&data, 0, sizeof(data));
if ((ret = __txn_getckp(dbenv, &open_lsn)) == 0)
while (!IS_ZERO_LSN(open_lsn) && (ret =
- __log_c_get(logc, &open_lsn, &data, DB_SET)) == 0 &&
+ __logc_get(logc, &open_lsn, &data, DB_SET)) == 0 &&
(force ||
(min != NULL && LOG_COMPARE(min, &open_lsn) < 0))) {
/* Format the log record. */
@@ -300,7 +306,7 @@ __txn_openfiles(dbenv, min, force)
ckp_args->last_ckp;
__os_free(dbenv, ckp_args);
if (force) {
- if ((ret = __log_c_get(logc, &open_lsn,
+ if ((ret = __logc_get(logc, &open_lsn,
&data, DB_SET)) != 0)
goto err;
break;
@@ -317,7 +323,7 @@ __txn_openfiles(dbenv, min, force)
* - We are forcing an openfiles and we have our ckp_lsn.
*/
if ((ret == DB_NOTFOUND || IS_ZERO_LSN(open_lsn)) && (ret =
- __log_c_get(logc, &open_lsn, &data, DB_FIRST)) != 0) {
+ __logc_get(logc, &open_lsn, &data, DB_FIRST)) != 0) {
__db_errx(dbenv, "No log records");
goto err;
}
@@ -330,7 +336,7 @@ __txn_openfiles(dbenv, min, force)
__db_txnlist_end(dbenv, txninfo);
err:
- if (logc != NULL && (t_ret = __log_c_close(logc)) != 0 && ret == 0)
+ if (logc != NULL && (t_ret = __logc_close(logc)) != 0 && ret == 0)
ret = t_ret;
return (ret);
}
diff --git a/db/txn/txn_region.c b/db/txn/txn_region.c
index 0b5547bb5..bbe908048 100644
--- a/db/txn/txn_region.c
+++ b/db/txn/txn_region.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: txn_region.c,v 12.20 2006/08/24 14:46:53 bostic Exp $
+ * $Id: txn_region.c,v 12.31 2007/05/17 15:16:00 bostic Exp $
*/
#include "db_config.h"
@@ -20,11 +19,12 @@ static size_t __txn_region_size __P((DB_ENV *));
* __txn_open --
* Open a transaction region.
*
- * PUBLIC: int __txn_open __P((DB_ENV *));
+ * PUBLIC: int __txn_open __P((DB_ENV *, int));
*/
int
-__txn_open(dbenv)
+__txn_open(dbenv, create_ok)
DB_ENV *dbenv;
+ int create_ok;
{
DB_TXNMGR *mgr;
int ret;
@@ -40,9 +40,9 @@ __txn_open(dbenv)
mgr->reginfo.type = REGION_TYPE_TXN;
mgr->reginfo.id = INVALID_REGION_ID;
mgr->reginfo.flags = REGION_JOIN_OK;
- if (F_ISSET(dbenv, DB_ENV_CREATE))
+ if (create_ok)
F_SET(&mgr->reginfo, REGION_CREATE_OK);
- if ((ret = __db_r_attach(dbenv,
+ if ((ret = __env_region_attach(dbenv,
&mgr->reginfo, __txn_region_size(dbenv))) != 0)
goto err;
@@ -65,7 +65,7 @@ __txn_open(dbenv)
err: dbenv->tx_handle = NULL;
if (mgr->reginfo.addr != NULL)
- (void)__db_r_detach(dbenv, &mgr->reginfo, 0);
+ (void)__env_region_detach(dbenv, &mgr->reginfo, 0);
(void)__mutex_free(dbenv, &mgr->mutex);
__os_free(dbenv, mgr);
@@ -106,8 +106,8 @@ __txn_init(dbenv, mgr)
return (ret);
}
- if ((ret = __db_shalloc(&mgr->reginfo,
- sizeof(DB_TXNREGION), 0, &mgr->reginfo.primary)) != 0) {
+ if ((ret = __env_alloc(&mgr->reginfo,
+ sizeof(DB_TXNREGION), &mgr->reginfo.primary)) != 0) {
__db_errx(dbenv,
"Unable to allocate memory for the transaction region");
return (ret);
@@ -132,7 +132,9 @@ __txn_init(dbenv, mgr)
region->time_ckp = time(NULL);
memset(&region->stat, 0, sizeof(region->stat));
+#ifdef HAVE_STATISTICS
region->stat.st_maxtxns = region->maxtxns;
+#endif
SH_TAILQ_INIT(&region->active_txn);
SH_TAILQ_INIT(&region->mvcc_txn);
@@ -168,10 +170,10 @@ __txn_findlastckp(dbenv, lsnp, max_lsn)
memset(&dbt, 0, sizeof(dbt));
if (max_lsn != NULL) {
lsn = *max_lsn;
- if ((ret = __log_c_get(logc, &lsn, &dbt, DB_SET)) != 0)
+ if ((ret = __logc_get(logc, &lsn, &dbt, DB_SET)) != 0)
goto err;
} else {
- if ((ret = __log_c_get(logc, &lsn, &dbt, DB_LAST)) != 0)
+ if ((ret = __logc_get(logc, &lsn, &dbt, DB_LAST)) != 0)
goto err;
/*
* Twiddle the last LSN so it points to the beginning of the
@@ -182,7 +184,7 @@ __txn_findlastckp(dbenv, lsnp, max_lsn)
}
/* Read backwards, looking for checkpoints. */
- while ((ret = __log_c_get(logc, &lsn, &dbt, DB_PREV)) == 0) {
+ while ((ret = __logc_get(logc, &lsn, &dbt, DB_PREV)) == 0) {
if (dbt.size < sizeof(u_int32_t))
continue;
memcpy(&rectype, dbt.data, sizeof(u_int32_t));
@@ -192,7 +194,7 @@ __txn_findlastckp(dbenv, lsnp, max_lsn)
}
}
-err: if ((t_ret = __log_c_close(logc)) != 0 && ret == 0)
+err: if ((t_ret = __logc_close(logc)) != 0 && ret == 0)
ret = t_ret;
/*
@@ -203,13 +205,13 @@ err: if ((t_ret = __log_c_close(logc)) != 0 && ret == 0)
}
/*
- * __txn_dbenv_refresh --
+ * __txn_env_refresh --
* Clean up after the transaction system on a close or failed open.
*
- * PUBLIC: int __txn_dbenv_refresh __P((DB_ENV *));
+ * PUBLIC: int __txn_env_refresh __P((DB_ENV *));
*/
int
-__txn_dbenv_refresh(dbenv)
+__txn_env_refresh(dbenv)
DB_ENV *dbenv;
{
DB_TXN *txn;
@@ -269,7 +271,7 @@ __txn_dbenv_refresh(dbenv)
ret = t_ret;
/* Detach from the region. */
- if ((t_ret = __db_r_detach(dbenv, reginfo, 0)) != 0 && ret == 0)
+ if ((t_ret = __env_region_detach(dbenv, reginfo, 0)) != 0 && ret == 0)
ret = t_ret;
__os_free(dbenv, mgr);
@@ -279,12 +281,25 @@ __txn_dbenv_refresh(dbenv)
}
/*
+ * __txn_region_mutex_count --
+ * Return the number of mutexes the txn region will need.
+ *
+ * PUBLIC: u_int32_t __txn_region_mutex_count __P((DB_ENV *));
+ */
+u_int32_t
+__txn_region_mutex_count(dbenv)
+ DB_ENV *dbenv;
+{
+ /*
+ * We need a MVCC mutex for each TXN_DETAIL structure, a mutex for
+ * DB_TXNMGR structure, two mutexes for the DB_TXNREGION structure.
+ */
+ return (dbenv->tx_max + 1 + 2);
+}
+
+/*
* __txn_region_size --
- * Return the amount of space needed for the txn region. Make the
- * region large enough to hold txn_max transaction detail structures
- * plus some space to hold thread handles and the beginning of the
- * shalloc region and anything we need for mutex system resource
- * recording.
+ * Return the amount of space needed for the txn region.
*/
static size_t
__txn_region_size(dbenv)
@@ -292,8 +307,16 @@ __txn_region_size(dbenv)
{
size_t s;
+ /*
+ * Make the region large enough to hold the primary transaction region
+ * structure, txn_max transaction detail structures, txn_max chunks of
+ * overhead required by the underlying shared region allocator for each
+ * chunk of memory, txn_max transaction names, at an average of 20
+ * bytes each, and 10KB for safety.
+ */
s = sizeof(DB_TXNREGION) +
- dbenv->tx_max * sizeof(TXN_DETAIL) + 10 * 1024;
+ dbenv->tx_max * (sizeof(TXN_DETAIL) + __env_alloc_overhead() + 20) +
+ 10 * 1024;
return (s);
}
@@ -377,7 +400,8 @@ __txn_oldest_reader(dbenv, lsnp)
*
* PUBLIC: int __txn_add_buffer __P((DB_ENV *, TXN_DETAIL *));
*/
-int __txn_add_buffer(dbenv, td)
+int
+__txn_add_buffer(dbenv, td)
DB_ENV *dbenv;
TXN_DETAIL *td;
{
@@ -388,6 +412,7 @@ int __txn_add_buffer(dbenv, td)
++td->mvcc_ref;
MUTEX_UNLOCK(dbenv, td->mvcc_mtx);
+ COMPQUIET(dbenv, NULL);
return (0);
}
@@ -397,7 +422,8 @@ int __txn_add_buffer(dbenv, td)
*
* PUBLIC: int __txn_remove_buffer __P((DB_ENV *, TXN_DETAIL *, db_mutex_t));
*/
-int __txn_remove_buffer(dbenv, td, hash_mtx)
+int
+__txn_remove_buffer(dbenv, td, hash_mtx)
DB_ENV *dbenv;
TXN_DETAIL *td;
db_mutex_t hash_mtx;
@@ -425,8 +451,10 @@ int __txn_remove_buffer(dbenv, td, hash_mtx)
TXN_SYSTEM_LOCK(dbenv);
SH_TAILQ_REMOVE(&region->mvcc_txn, td, links, __txn_detail);
+#ifdef HAVE_STATISTICS
--region->stat.st_nsnapshot;
- __db_shalloc_free(&mgr->reginfo, td);
+#endif
+ __env_alloc_free(&mgr->reginfo, td);
TXN_SYSTEM_UNLOCK(dbenv);
MUTEX_LOCK(dbenv, hash_mtx);
diff --git a/db/txn/txn_stat.c b/db/txn/txn_stat.c
index 2f7cf95e5..a2c4f1fe2 100644
--- a/db/txn/txn_stat.c
+++ b/db/txn/txn_stat.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: txn_stat.c,v 12.18 2006/08/24 14:46:53 bostic Exp $
+ * $Id: txn_stat.c,v 12.23 2007/06/22 18:27:51 bostic Exp $
*/
#include "db_config.h"
@@ -134,7 +133,8 @@ __txn_stat(dbenv, statp, flags)
&stats->st_region_wait, &stats->st_region_nowait);
stats->st_regsize = mgr->reginfo.rp->size;
if (LF_ISSET(DB_STAT_CLEAR)) {
- __mutex_clear(dbenv, region->mtx_region);
+ if (!LF_ISSET(DB_STAT_SUBSYSTEM))
+ __mutex_clear(dbenv, region->mtx_region);
memset(&region->stat, 0, sizeof(region->stat));
region->stat.st_maxtxns = region->maxtxns;
region->stat.st_maxnactive =
@@ -167,7 +167,7 @@ __txn_stat_print_pp(dbenv, flags)
ENV_REQUIRES_CONFIG(dbenv,
dbenv->tx_handle, "DB_ENV->txn_stat_print", DB_INIT_TXN);
- if ((ret = __db_fchk(dbenv, "DB_ENV->txn_stat",
+ if ((ret = __db_fchk(dbenv, "DB_ENV->txn_stat_print",
flags, DB_STAT_ALL | DB_STAT_CLEAR)) != 0)
return (ret);
@@ -192,7 +192,7 @@ __txn_stat_print(dbenv, flags)
int ret;
orig_flags = flags;
- LF_CLR(DB_STAT_CLEAR);
+ LF_CLR(DB_STAT_CLEAR | DB_STAT_SUBSYSTEM);
if (flags == 0 || LF_ISSET(DB_STAT_ALL)) {
ret = __txn_print_stats(dbenv, orig_flags);
if (flags == 0 || ret != 0)
@@ -317,7 +317,7 @@ __txn_print_all(dbenv, flags)
TXN_SYSTEM_LOCK(dbenv);
- __db_print_reginfo(dbenv, &mgr->reginfo, "Transaction");
+ __db_print_reginfo(dbenv, &mgr->reginfo, "Transaction", flags);
__db_msg(dbenv, "%s", DB_GLOBAL(db_line));
__db_msg(dbenv, "DB_TXNMGR handle information:");
diff --git a/db/txn/txn_util.c b/db/txn/txn_util.c
index fea21c76f..a455a2ff2 100644
--- a/db/txn/txn_util.c
+++ b/db/txn/txn_util.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2001-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2001,2007 Oracle. All rights reserved.
*
- * $Id: txn_util.c,v 12.8 2006/08/24 14:46:53 bostic Exp $
+ * $Id: txn_util.c,v 12.18 2007/06/13 18:21:32 ubell Exp $
*/
#include "db_config.h"
@@ -14,6 +13,7 @@
#include "dbinc/lock.h"
#include "dbinc/mp.h"
#include "dbinc/txn.h"
+#include "dbinc/log.h"
#include "dbinc/db_am.h"
typedef struct __txn_event TXN_EVENT;
@@ -34,7 +34,7 @@ struct __txn_event {
struct {
/* Lock event. */
DB_LOCK lock;
- u_int32_t locker;
+ DB_LOCKER *locker;
DB *dbp;
} t;
} u;
@@ -149,7 +149,7 @@ __txn_remrem(dbenv, txn, name)
* trade.
*
* PUBLIC: int __txn_lockevent __P((DB_ENV *,
- * PUBLIC: DB_TXN *, DB *, DB_LOCK *, u_int32_t));
+ * PUBLIC: DB_TXN *, DB *, DB_LOCK *, DB_LOCKER *));
*/
int
__txn_lockevent(dbenv, txn, dbp, lock, locker)
@@ -157,7 +157,7 @@ __txn_lockevent(dbenv, txn, dbp, lock, locker)
DB_TXN *txn;
DB *dbp;
DB_LOCK *lock;
- u_int32_t locker;
+ DB_LOCKER *locker;
{
int ret;
TXN_EVENT *e;
@@ -174,6 +174,7 @@ __txn_lockevent(dbenv, txn, dbp, lock, locker)
e->u.t.dbp = dbp;
e->op = TXN_TRADE;
TAILQ_INSERT_TAIL(&txn->events, e, links);
+ dbp->cur_txn = txn;
return (0);
}
@@ -183,14 +184,14 @@ __txn_lockevent(dbenv, txn, dbp, lock, locker)
* Remove a lock event because the locker is going away. We can remove
* by lock (using offset) or by locker_id (or by both).
*
- * PUBLIC: void __txn_remlock __P((DB_ENV *, DB_TXN *, DB_LOCK *, u_int32_t));
+ * PUBLIC: void __txn_remlock __P((DB_ENV *, DB_TXN *, DB_LOCK *, DB_LOCKER *));
*/
void
__txn_remlock(dbenv, txn, lock, locker)
DB_ENV *dbenv;
DB_TXN *txn;
DB_LOCK *lock;
- u_int32_t locker;
+ DB_LOCKER *locker;
{
TXN_EVENT *e, *next_e;
@@ -218,9 +219,10 @@ __txn_remlock(dbenv, txn, lock, locker)
req.lock = e->u.t.lock; \
req.op = DB_LOCK_TRADE; \
t_ret = __lock_vec(dbenv, e->u.t.locker, 0, &req, 1, NULL); \
- if (t_ret == 0) \
- e->u.t.dbp->cur_lid = e->u.t.locker; \
- else if (t_ret == DB_NOTFOUND) \
+ if (t_ret == 0) { \
+ e->u.t.dbp->cur_locker = e->u.t.locker; \
+ e->u.t.dbp->cur_txn = NULL; \
+ } else if (t_ret == DB_NOTFOUND) \
t_ret = 0; \
if (t_ret != 0 && ret == 0) \
ret = t_ret; \
@@ -275,8 +277,6 @@ __txn_doevents(dbenv, txn, opcode, preprocess)
goto dofree;
switch (e->op) {
case TXN_CLOSE:
- /* If we didn't abort this txn, we screwed up badly. */
- DB_ASSERT(dbenv, opcode == TXN_ABORT);
if ((t_ret = __db_close(e->u.c.dbp,
NULL, DB_NOSYNC)) != 0 && ret == 0)
ret = t_ret;
@@ -323,3 +323,109 @@ dofree:
return (ret);
}
+
+/*
+ * PUBLIC: int __txn_record_fname __P((DB_ENV *, DB_TXN *, FNAME *));
+ */
+int
+__txn_record_fname(dbenv, txn, fname)
+ DB_ENV *dbenv;
+ DB_TXN *txn;
+ FNAME *fname;
+{
+ DB_TXNMGR *mgr;
+ DB_LOG *dblp;
+ TXN_DETAIL *td;
+ roff_t fname_off;
+ roff_t *np, *ldbs;
+ u_int32_t i;
+ int ret;
+
+ if ((td = txn->td) == NULL)
+ return (0);
+ mgr = dbenv->tx_handle;
+ dblp = dbenv->lg_handle;
+ fname_off = R_OFFSET(&dblp->reginfo, fname);
+
+ /* See if we already have a ref to this DB handle. */
+ ldbs = R_ADDR(&mgr->reginfo, td->log_dbs);
+ for (i = 0, np = ldbs; i < td->nlog_dbs; i++, np++)
+ if (*np == fname_off)
+ return (0);
+
+ if (td->nlog_slots <= td->nlog_dbs) {
+ TXN_SYSTEM_LOCK(dbenv);
+ if ((ret = __env_alloc(&mgr->reginfo,
+ sizeof(roff_t) * (td->nlog_slots << 1), &np)) != 0)
+ return (ret);
+ memcpy(np, ldbs, td->nlog_dbs * sizeof(roff_t));
+ if (td->nlog_slots > TXN_NSLOTS)
+ __env_alloc_free(&mgr->reginfo, ldbs);
+
+ TXN_SYSTEM_UNLOCK(dbenv);
+ td->log_dbs = R_OFFSET(&mgr->reginfo, np);
+ ldbs = np;
+ td->nlog_slots = td->nlog_slots << 1;
+ }
+
+ ldbs[td->nlog_dbs] = fname_off;
+ td->nlog_dbs++;
+ fname->txn_ref++;
+
+ return (0);
+}
+
+/*
+ * __txn_dref_fnam --
+ * Either pass the fname to our parent txn or decrement the refcount
+ * and close the fileid if it goes to zero.
+ *
+ * PUBLIC: int __txn_dref_fname __P((DB_ENV *, DB_TXN *));
+ */
+int
+__txn_dref_fname(dbenv, txn)
+ DB_ENV *dbenv;
+ DB_TXN *txn;
+{
+ DB_TXNMGR *mgr;
+ DB_LOG *dblp;
+ FNAME *fname;
+ roff_t *np;
+ TXN_DETAIL *ptd, *td;
+ u_int32_t i;
+ int ret;
+
+ td = txn->td;
+
+ if (td->nlog_dbs == 0)
+ return (0);
+
+ mgr = dbenv->tx_handle;
+ dblp = dbenv->lg_handle;
+ ret = 0;
+
+ ptd = txn->parent != NULL ? txn->parent->td : NULL;
+
+ np = R_ADDR(&mgr->reginfo, td->log_dbs);
+ for (i = 0; i < td->nlog_dbs; i++, np++) {
+ fname = R_ADDR(&dblp->reginfo, *np);
+ MUTEX_LOCK(dbenv, fname->mutex);
+ if (ptd != NULL) {
+ fname->txn_ref--;
+ ret = __txn_record_fname(dbenv, txn->parent, fname);
+ MUTEX_UNLOCK(dbenv, fname->mutex);
+ } else if (fname->txn_ref == 1) {
+ MUTEX_UNLOCK(dbenv, fname->mutex);
+ DB_ASSERT(dbenv, fname->txn_ref != 0);
+ ret = __dbreg_close_id_int(
+ dbenv, fname, DBREG_CLOSE, 0);
+ } else {
+ fname->txn_ref--;
+ MUTEX_UNLOCK(dbenv, fname->mutex);
+ }
+ if (ret != 0)
+ break;
+ }
+
+ return (ret);
+}
diff --git a/db/xa/xa.c b/db/xa/xa.c
index 56cc772ac..74224541e 100644
--- a/db/xa/xa.c
+++ b/db/xa/xa.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1998-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1998,2007 Oracle. All rights reserved.
*
- * $Id: xa.c,v 12.12 2006/08/24 14:46:54 bostic Exp $
+ * $Id: xa.c,v 12.15 2007/06/29 00:25:02 margo Exp $
*/
#include "db_config.h"
@@ -335,7 +334,8 @@ __db_xa_start(xid, rmid, arg_flags)
/* Now, fill in the global transaction structure. */
if (__xa_get_txn(dbenv, &txnp, 1) != 0)
return (XAER_RMERR);
- __txn_continue(dbenv, txnp, td);
+ if (__txn_continue(dbenv, txnp, td) != 0)
+ return (XAER_RMERR);
td->xa_status = TXN_XA_STARTED;
} else {
if (__xa_get_txn(dbenv, &txnp, 1) != 0)
@@ -450,7 +450,8 @@ __db_xa_prepare(xid, rmid, arg_flags)
/* Now, fill in the global transaction structure. */
if (__xa_get_txn(dbenv, &txnp, 0) != 0)
return (XAER_PROTO);
- __txn_continue(dbenv, txnp, td);
+ if (__txn_continue(dbenv, txnp, td) != 0)
+ return (XAER_RMERR);
if (txnp->prepare(txnp, (u_int8_t *)xid->data) != 0)
return (XAER_RMERR);
@@ -517,7 +518,8 @@ __db_xa_commit(xid, rmid, arg_flags)
/* Now, fill in the global transaction structure. */
if (__xa_get_txn(dbenv, &txnp, 0) != 0)
return (XAER_RMERR);
- __txn_continue(dbenv, txnp, td);
+ if (__txn_continue(dbenv, txnp, td) != 0)
+ return (XAER_RMERR);
if (txnp->commit(txnp, 0) != 0)
return (XAER_RMERR);
@@ -610,7 +612,8 @@ __db_xa_rollback(xid, rmid, arg_flags)
/* Now, fill in the global transaction structure. */
if (__xa_get_txn(dbenv, &txnp, 0) != 0)
return (XAER_RMERR);
- __txn_continue(dbenv, txnp, td);
+ if (__txn_continue(dbenv, txnp, td) != 0)
+ return (XAER_RMERR);
if (txnp->abort(txnp) != 0)
return (XAER_RMERR);
diff --git a/db/xa/xa_db.c b/db/xa/xa_db.c
index 2c7276345..74ec74808 100644
--- a/db/xa/xa_db.c
+++ b/db/xa/xa_db.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1998-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1998,2007 Oracle. All rights reserved.
*
- * $Id: xa_db.c,v 12.8 2006/08/24 14:46:54 bostic Exp $
+ * $Id: xa_db.c,v 12.10 2007/05/17 15:16:00 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/xa/xa_map.c b/db/xa/xa_map.c
index c0bd7cb2b..eab0be00c 100644
--- a/db/xa/xa_map.c
+++ b/db/xa/xa_map.c
@@ -1,10 +1,9 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1996-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
*
- * $Id: xa_map.c,v 12.8 2006/08/24 14:46:54 bostic Exp $
+ * $Id: xa_map.c,v 12.10 2007/05/17 15:16:00 bostic Exp $
*/
#include "db_config.h"
diff --git a/db/xa/xa_stub.c b/db/xa/xa_stub.c
new file mode 100644
index 000000000..e74c0d150
--- /dev/null
+++ b/db/xa/xa_stub.c
@@ -0,0 +1,38 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 1996,2007 Oracle. All rights reserved.
+ *
+ * $Id: xa_stub.c,v 1.3 2007/05/17 15:16:00 bostic Exp $
+ */
+
+#include "db_config.h"
+
+#include "db_int.h"
+#include "dbinc/txn.h"
+
+/*
+ * If the library wasn't compiled with XA support, various routines
+ * aren't available. Stub them here, returning an appropriate error.
+ */
+static int __db_noxa __P((DB_ENV *));
+
+/*
+ * __db_noxa --
+ * Error when a Berkeley DB build doesn't include XA support.
+ */
+static int
+__db_noxa(dbenv)
+ DB_ENV *dbenv;
+{
+ __db_errx(dbenv,
+ "library build did not include support for XA");
+ return (DB_OPNOTSUP);
+}
+
+int
+__db_xa_create(dbp)
+ DB *dbp;
+{
+ return (__db_noxa(dbp->dbenv));
+}
diff --git a/rpmdb/Makefile.am b/rpmdb/Makefile.am
index f34f60d7e..a056f3556 100644
--- a/rpmdb/Makefile.am
+++ b/rpmdb/Makefile.am
@@ -86,7 +86,7 @@ db.h:
# XXX grrr, force noinst libdb.la for db3.
$(libdb_la):
- sed -e"/^libdir=/s/^.*$$/libdir=''/" < $(top_builddir)/$(WITH_DB_SUBDIR)/libdb-4.5.la > $(libdb_la)
+ sed -e"/^libdir=/s/^.*$$/libdir=''/" < $(top_builddir)/$(WITH_DB_SUBDIR)/libdb-4.6.la > $(libdb_la)
rpmdb_archive_SOURCES =
rpmdb_archive_LDADD = \